<?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>177252</bug_id>
          
          <creation_ts>2017-09-20 10:52:50 -0700</creation_ts>
          <short_desc>Upstream googletest framework</short_desc>
          <delta_ts>2017-09-27 12:20:41 -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>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>177211</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jonlee</cc>
    
    <cc>lforschler</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1350842</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-20 10:52:50 -0700</bug_when>
    <thetext>This is used by libwebrtc tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350849</commentid>
    <comment_count>1</comment_count>
      <attachid>321334</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-20 11:01:08 -0700</bug_when>
    <thetext>Created attachment 321334
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350953</commentid>
    <comment_count>2</comment_count>
      <attachid>321334</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-20 13:57:55 -0700</bug_when>
    <thetext>Comment on attachment 321334
Patch

Clearing flags on attachment: 321334

Committed r222284: &lt;http://trac.webkit.org/changeset/222284&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350954</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-20 13:57:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353311</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:20:41 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693090&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321334</attachid>
            <date>2017-09-20 11:01:08 -0700</date>
            <delta_ts>2017-09-20 13:57:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177252-20170920110107.patch</filename>
            <type>text/plain</type>
            <size>6076116</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMjYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCA2YzA4NDBhZGUyZjEyNjFkMGNjOTU0MWYxNjJiNjg1ZTEzMzM5ZjkxLi45ZGFj
YTNhY2E5OGRhYjdmNmI5N2IxZDM5YzYxMDNkNTQ0NDNkMWNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNy0wOS0yMCAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgVXBzdHJlYW0gZ29vZ2xldGVzdCBm
cmFtZXdvcmsKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3NzI1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoaXMgaXMgdXNlZCBieSBsaWJ3ZWJydGMuCisKKyAgICAgICAgKiBTb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdDogQWRkZWQuCisgCiAyMDE3LTA5LTE1ICBBbGljaWEgQm95YSBHYXJjw61h
ICA8YWJveWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBOb3JtYWxpemUgbGluZSB0ZXJtaW5hdG9y
cyBpbiBqc29uY3BwIFZpc3VhbCBTdHVkaW8gZmlsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC8uZ2l0aWdub3Jl
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0Ly5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzRlNzQ2NmFkOTM1NzI5YzViOGFkOWEwZGQ5YThi
NTM1MzhmNmNmYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC8uZ2l0aWdub3JlCkBAIC0wLDAgKzEsMyBA
QAorIyBJZ25vcmUgQ0kgYnVpbGQgZGlyZWN0b3J5CitidWlsZC8KK3hjdXNlcmRhdGEKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC8udHJhdmlzLnltbCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC8udHJhdmlzLnltbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMjA0ZGZhYzE3
ZDdjZTZiMWY0NzVjMWFjYWVhNGVhOWRmMzgyYjcxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0Ly50cmF2
aXMueW1sCkBAIC0wLDAgKzEsNDYgQEAKKyMgQnVpbGQgbWF0cml4IC8gZW52aXJvbm1lbnQgdmFy
aWFibGUgYXJlIGV4cGxhaW5lZCBvbjoKKyMgaHR0cDovL2Fib3V0LnRyYXZpcy1jaS5vcmcvZG9j
cy91c2VyL2J1aWxkLWNvbmZpZ3VyYXRpb24vCisjIFRoaXMgZmlsZSBjYW4gYmUgdmFsaWRhdGVk
IG9uOgorIyBodHRwOi8vbGludC50cmF2aXMtY2kub3JnLworCitpbnN0YWxsOgorIyAvdXNyL2Jp
bi9nY2MgaXMgNC42IGFsd2F5cywgYnV0IGdjYy1YLlkgaXMgYXZhaWxhYmxlLgorLSBpZiBbICIk
Q1hYIiA9ICJnKysiIF07IHRoZW4gZXhwb3J0IENYWD0iZysrLTQuOSIgQ0M9ImdjYy00LjkiOyBm
aQorIyAvdXNyL2Jpbi9jbGFuZyBpcyAzLjQsIGxldHMgb3ZlcnJpZGUgd2l0aCBtb2Rlcm4gb25l
LgorLSBpZiBbICIkQ1hYIiA9ICJjbGFuZysrIiBdICYmIFsgIiRUUkFWSVNfT1NfTkFNRSIgPSAi
bGludXgiIF07IHRoZW4gZXhwb3J0IENYWD0iY2xhbmcrKy0zLjciIENDPSJjbGFuZy0zLjciOyBm
aQorLSBlY2hvICR7UEFUSH0KKy0gZWNobyAke0NYWH0KKy0gJHtDWFh9IC0tdmVyc2lvbgorLSAk
e0NYWH0gLXYKK2FkZG9uczoKKyAgYXB0OgorICAgICMgTGlzdCBvZiB3aGl0ZWxpc3RlZCBpbiB0
cmF2aXMgcGFja2FnZXMgZm9yIHVidW50dS1wcmVjaXNlIGNhbiBiZSBmb3VuZCBoZXJlOgorICAg
ICMgICBodHRwczovL2dpdGh1Yi5jb20vdHJhdmlzLWNpL2FwdC1wYWNrYWdlLXdoaXRlbGlzdC9i
bG9iL21hc3Rlci91YnVudHUtcHJlY2lzZQorICAgICMgTGlzdCBvZiB3aGl0ZWxpc3RlZCBpbiB0
cmF2aXMgYXB0LXNvdXJjZXM6CisgICAgIyAgIGh0dHBzOi8vZ2l0aHViLmNvbS90cmF2aXMtY2kv
YXB0LXNvdXJjZS13aGl0ZWxpc3QvYmxvYi9tYXN0ZXIvdWJ1bnR1Lmpzb24KKyAgICBzb3VyY2Vz
OgorICAgIC0gdWJ1bnR1LXRvb2xjaGFpbi1yLXRlc3QKKyAgICAtIGxsdm0tdG9vbGNoYWluLXBy
ZWNpc2UtMy43CisgICAgcGFja2FnZXM6CisgICAgLSBnY2MtNC45CisgICAgLSBnKystNC45Cisg
ICAgLSBjbGFuZy0zLjcKKyAgICAtIHZhbGdyaW5kCitvczoKKyAgLSBsaW51eAorICAtIG9zeAor
bGFuZ3VhZ2U6IGNwcAorY29tcGlsZXI6CisgIC0gZ2NjCisgIC0gY2xhbmcKK3NjcmlwdDogLi90
cmF2aXMuc2gKK2VudjoKKyAgbWF0cml4OgorICAgIC0gR1RFU1RfVEFSR0VUPWdvb2dsZXRlc3Qg
U0hBUkVEX0xJQj1PRkYgU1RBVElDX0xJQj1PTiBDTUFLRV9QS0c9T0ZGIEJVSUxEX1RZUEU9ZGVi
dWcgICBWRVJCT1NFX01BS0U9dHJ1ZSBWRVJCT1NFCisgICAgLSBHVEVTVF9UQVJHRVQ9Z29vZ2xl
bW9jayBTSEFSRURfTElCPU9GRiBTVEFUSUNfTElCPU9OIENNQUtFX1BLRz1PRkYgQlVJTERfVFlQ
RT1kZWJ1ZyAgIFZFUkJPU0VfTUFLRT10cnVlIFZFUkJPU0UKKyAgICAtIEdURVNUX1RBUkdFVD1n
b29nbGVtb2NrIFNIQVJFRF9MSUI9T0ZGIFNUQVRJQ19MSUI9T04gQ01BS0VfUEtHPU9GRiBCVUlM
RF9UWVBFPWRlYnVnIENYWF9GTEFHUz0tc3RkPWMrKzExICBWRVJCT1NFX01BS0U9dHJ1ZSBWRVJC
T1NFCisjICAgIC0gR1RFU1RfVEFSR0VUPWdvb2dsZXRlc3QgU0hBUkVEX0xJQj1PTiAgU1RBVElD
X0xJQj1PTiBDTUFLRV9QS0c9T04gIEJVSUxEX1RZUEU9cmVsZWFzZSBWRVJCT1NFX01BS0U9ZmFs
c2UKKyMgICAgLSBHVEVTVF9UQVJHRVQ9Z29vZ2xlbW9jayBTSEFSRURfTElCPU9OICBTVEFUSUNf
TElCPU9OIENNQUtFX1BLRz1PTiAgQlVJTERfVFlQRT1yZWxlYXNlIFZFUkJPU0VfTUFLRT1mYWxz
ZQorbm90aWZpY2F0aW9uczoKKyAgZW1haWw6IGZhbHNlCitzdWRvOiBmYWxzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L0NNYWtlTGlzdHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3NTQ5OTJl
OGNlZjcwY2ZiNjQ1ZjhkNjc2ZWNmN2Y2MDI1Zjg2OWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvQ01h
a2VMaXN0cy50eHQKQEAgLTAsMCArMSwxNiBAQAorY21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJT
SU9OIDIuNi40KQorCitwcm9qZWN0KCBnb29nbGV0ZXN0LWRpc3RyaWJ1dGlvbiApCisKK2VuYWJs
ZV90ZXN0aW5nKCkKKworb3B0aW9uKEJVSUxEX0dURVNUICJCdWlsZHMgdGhlIGdvb2dsZXRlc3Qg
c3VicHJvamVjdCIgT0ZGKQorCisjTm90ZSB0aGF0IGdvb2dsZW1vY2sgdGFyZ2V0IGFscmVhZHkg
YnVpbGRzIGdvb2dsZXRlc3QKK29wdGlvbihCVUlMRF9HTU9DSyAiQnVpbGRzIHRoZSBnb29nbGVt
b2NrIHN1YnByb2plY3QiIE9OKQorCitpZihCVUlMRF9HTU9DSykKKyAgYWRkX3N1YmRpcmVjdG9y
eSggZ29vZ2xlbW9jayApCitlbHNlaWYoQlVJTERfR1RFU1QpCisgIGFkZF9zdWJkaXJlY3Rvcnko
IGdvb2dsZXRlc3QgKQorZW5kaWYoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L1JFQURNRS5tZCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9SRUFETUUu
bWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDc2NDg0ZTRmYWQ5MjIyOWJkMTVmNjIwOTcyYWU2NmYzODRkMTE0NQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9SRUFETUUubWQKQEAgLTAsMCArMSwxNDIgQEAKKworIyBHb29n
bGUgVGVzdCAjCisKK1shW0J1aWxkIFN0YXR1c10oaHR0cHM6Ly90cmF2aXMtY2kub3JnL2dvb2ds
ZS9nb29nbGV0ZXN0LnN2Zz9icmFuY2g9bWFzdGVyKV0oaHR0cHM6Ly90cmF2aXMtY2kub3JnL2dv
b2dsZS9nb29nbGV0ZXN0KQorWyFbQnVpbGQgc3RhdHVzXShodHRwczovL2NpLmFwcHZleW9yLmNv
bS9hcGkvcHJvamVjdHMvc3RhdHVzLzRvMzhwbHQweGJvMXViYzgvYnJhbmNoL21hc3Rlcj9zdmc9
dHJ1ZSldKGh0dHBzOi8vY2kuYXBwdmV5b3IuY29tL3Byb2plY3QvQmlsbHlEb25haHVlL2dvb2ds
ZXRlc3QvYnJhbmNoL21hc3RlcikKKworV2VsY29tZSB0byAqKkdvb2dsZSBUZXN0KiosIEdvb2ds
ZSdzIEMrKyB0ZXN0IGZyYW1ld29yayEKKworVGhpcyByZXBvc2l0b3J5IGlzIGEgbWVyZ2VyIG9m
IHRoZSBmb3JtZXJseSBzZXBhcmF0ZSBHb29nbGVUZXN0IGFuZAorR29vZ2xlTW9jayBwcm9qZWN0
cy4gVGhlc2Ugd2VyZSBzbyBjbG9zZWx5IHJlbGF0ZWQgdGhhdCBpdCBtYWtlcyBzZW5zZSB0bwor
bWFpbnRhaW4gYW5kIHJlbGVhc2UgdGhlbSB0b2dldGhlci4KKworUGxlYXNlIHNlZSB0aGUgcHJv
amVjdCBwYWdlIGFib3ZlIGZvciBtb3JlIGluZm9ybWF0aW9uIGFzIHdlbGwgYXMgdGhlCittYWls
aW5nIGxpc3QgZm9yIHF1ZXN0aW9ucywgZGlzY3Vzc2lvbnMsIGFuZCBkZXZlbG9wbWVudC4gIFRo
ZXJlIGlzCithbHNvIGFuIElSQyBjaGFubmVsIG9uIE9GVEMgKGlyYy5vZnRjLm5ldCkgI2d0ZXN0
IGF2YWlsYWJsZS4gIFBsZWFzZQoram9pbiB1cyEKKworR2V0dGluZyBzdGFydGVkIGluZm9ybWF0
aW9uIGZvciAqKkdvb2dsZSBUZXN0KiogaXMgYXZhaWxhYmxlIGluIHRoZSAKK1tHb29nbGUgVGVz
dCBQcmltZXJdKGdvb2dsZXRlc3QvZG9jcy9QcmltZXIubWQpIGRvY3VtZW50YXRpb24uCisKKyoq
R29vZ2xlIE1vY2sqKiBpcyBhbiBleHRlbnNpb24gdG8gR29vZ2xlIFRlc3QgZm9yIHdyaXRpbmcg
YW5kIHVzaW5nIEMrKyBtb2NrCitjbGFzc2VzLiAgU2VlIHRoZSBzZXBhcmF0ZSBbR29vZ2xlIE1v
Y2sgZG9jdW1lbnRhdGlvbl0oZ29vZ2xlbW9jay9SRUFETUUubWQpLgorCitNb3JlIGRldGFpbGVk
IGRvY3VtZW50YXRpb24gZm9yIGdvb2dsZXRlc3QgKGluY2x1ZGluZyBidWlsZCBpbnN0cnVjdGlv
bnMpIGFyZQoraW4gaXRzIGludGVyaW9yIFtnb29nbGV0ZXN0L1JFQURNRS5tZF0oZ29vZ2xldGVz
dC9SRUFETUUubWQpIGZpbGUuCisKKyMjIEZlYXR1cmVzICMjCisKKyAgKiBBbiBbWFVuaXRdKGh0
dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1hVbml0KSB0ZXN0IGZyYW1ld29yay4KKyAgKiBU
ZXN0IGRpc2NvdmVyeS4KKyAgKiBBIHJpY2ggc2V0IG9mIGFzc2VydGlvbnMuCisgICogVXNlci1k
ZWZpbmVkIGFzc2VydGlvbnMuCisgICogRGVhdGggdGVzdHMuCisgICogRmF0YWwgYW5kIG5vbi1m
YXRhbCBmYWlsdXJlcy4KKyAgKiBWYWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgorICAqIFR5cGUt
cGFyYW1ldGVyaXplZCB0ZXN0cy4KKyAgKiBWYXJpb3VzIG9wdGlvbnMgZm9yIHJ1bm5pbmcgdGhl
IHRlc3RzLgorICAqIFhNTCB0ZXN0IHJlcG9ydCBnZW5lcmF0aW9uLgorCisjIyBQbGF0Zm9ybXMg
IyMKKworR29vZ2xlIHRlc3QgaGFzIGJlZW4gdXNlZCBvbiBhIHZhcmlldHkgb2YgcGxhdGZvcm1z
OgorCisgICogTGludXgKKyAgKiBNYWMgT1MgWAorICAqIFdpbmRvd3MKKyAgKiBDeWd3aW4KKyAg
KiBNaW5HVworICAqIFdpbmRvd3MgTW9iaWxlCisgICogU3ltYmlhbgorCisjIyBXaG8gSXMgVXNp
bmcgR29vZ2xlIFRlc3Q/ICMjCisKK0luIGFkZGl0aW9uIHRvIG1hbnkgaW50ZXJuYWwgcHJvamVj
dHMgYXQgR29vZ2xlLCBHb29nbGUgVGVzdCBpcyBhbHNvIHVzZWQgYnkKK3RoZSBmb2xsb3dpbmcg
bm90YWJsZSBwcm9qZWN0czoKKworICAqIFRoZSBbQ2hyb21pdW0gcHJvamVjdHNdKGh0dHA6Ly93
d3cuY2hyb21pdW0ub3JnLykgKGJlaGluZCB0aGUgQ2hyb21lCisgICAgYnJvd3NlciBhbmQgQ2hy
b21lIE9TKS4KKyAgKiBUaGUgW0xMVk1dKGh0dHA6Ly9sbHZtLm9yZy8pIGNvbXBpbGVyLgorICAq
IFtQcm90b2NvbCBCdWZmZXJzXShodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL3Byb3RvYnVmKSwg
R29vZ2xlJ3MgZGF0YQorICAgIGludGVyY2hhbmdlIGZvcm1hdC4KKyAgKiBUaGUgW09wZW5DVl0o
aHR0cDovL29wZW5jdi5vcmcvKSBjb21wdXRlciB2aXNpb24gbGlicmFyeS4KKworIyMgUmVsYXRl
ZCBPcGVuIFNvdXJjZSBQcm9qZWN0cyAjIworCitbR29vZ2xlIFRlc3QgVUldKGh0dHBzOi8vZ2l0
aHViLmNvbS9vc3BlY3Rvci9ndGVzdC1nYmFyKSBpcyB0ZXN0IHJ1bm5lciB0aGF0IHJ1bnMKK3lv
dXIgdGVzdCBiaW5hcnksIGFsbG93cyB5b3UgdG8gdHJhY2sgaXRzIHByb2dyZXNzIHZpYSBhIHBy
b2dyZXNzIGJhciwgYW5kCitkaXNwbGF5cyBhIGxpc3Qgb2YgdGVzdCBmYWlsdXJlcy4gQ2xpY2tp
bmcgb24gb25lIHNob3dzIGZhaWx1cmUgdGV4dC4gR29vZ2xlCitUZXN0IFVJIGlzIHdyaXR0ZW4g
aW4gQyMuCisKK1tHVGVzdCBUQVAgTGlzdGVuZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9raW5vdy9n
dGVzdC10YXAtbGlzdGVuZXIpIGlzIGFuIGV2ZW50CitsaXN0ZW5lciBmb3IgR29vZ2xlIFRlc3Qg
dGhhdCBpbXBsZW1lbnRzIHRoZQorW1RBUCBwcm90b2NvbF0oaHR0cHM6Ly9lbi53aWtpcGVkaWEu
b3JnL3dpa2kvVGVzdF9Bbnl0aGluZ19Qcm90b2NvbCkgZm9yIHRlc3QKK3Jlc3VsdCBvdXRwdXQu
IElmIHlvdXIgdGVzdCBydW5uZXIgdW5kZXJzdGFuZHMgVEFQLCB5b3UgbWF5IGZpbmQgaXQgdXNl
ZnVsLgorCisjIyBSZXF1aXJlbWVudHMgIyMKKworR29vZ2xlIFRlc3QgaXMgZGVzaWduZWQgdG8g
aGF2ZSBmYWlybHkgbWluaW1hbCByZXF1aXJlbWVudHMgdG8gYnVpbGQKK2FuZCB1c2Ugd2l0aCB5
b3VyIHByb2plY3RzLCBidXQgdGhlcmUgYXJlIHNvbWUuICBDdXJyZW50bHksIHdlIHN1cHBvcnQK
K0xpbnV4LCBXaW5kb3dzLCBNYWMgT1MgWCwgYW5kIEN5Z3dpbi4gIFdlIHdpbGwgYWxzbyBtYWtl
IG91ciBiZXN0CitlZmZvcnQgdG8gc3VwcG9ydCBvdGhlciBwbGF0Zm9ybXMgKGUuZy4gU29sYXJp
cywgQUlYLCBhbmQgei9PUykuCitIb3dldmVyLCBzaW5jZSBjb3JlIG1lbWJlcnMgb2YgdGhlIEdv
b2dsZSBUZXN0IHByb2plY3QgaGF2ZSBubyBhY2Nlc3MKK3RvIHRoZXNlIHBsYXRmb3JtcywgR29v
Z2xlIFRlc3QgbWF5IGhhdmUgb3V0c3RhbmRpbmcgaXNzdWVzIHRoZXJlLiAgSWYKK3lvdSBub3Rp
Y2UgYW55IHByb2JsZW1zIG9uIHlvdXIgcGxhdGZvcm0sIHBsZWFzZSBub3RpZnkKKzxnb29nbGV0
ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb20+LiBQYXRjaGVzIGZvciBmaXhpbmcgdGhlbSBh
cmUKK2V2ZW4gbW9yZSB3ZWxjb21lIQorCisjIyMgTGludXggUmVxdWlyZW1lbnRzICMjIworCitU
aGVzZSBhcmUgdGhlIGJhc2UgcmVxdWlyZW1lbnRzIHRvIGJ1aWxkIGFuZCB1c2UgR29vZ2xlIFRl
c3QgZnJvbSBhIHNvdXJjZQorcGFja2FnZSAoYXMgZGVzY3JpYmVkIGJlbG93KToKKworICAqIEdO
VS1jb21wYXRpYmxlIE1ha2Ugb3IgZ21ha2UKKyAgKiBQT1NJWC1zdGFuZGFyZCBzaGVsbAorICAq
IFBPU0lYKC0yKSBSZWd1bGFyIEV4cHJlc3Npb25zIChyZWdleC5oKQorICAqIEEgQysrOTgtc3Rh
bmRhcmQtY29tcGxpYW50IGNvbXBpbGVyCisKKyMjIyBXaW5kb3dzIFJlcXVpcmVtZW50cyAjIyMK
KworICAqIE1pY3Jvc29mdCBWaXN1YWwgQysrIHY3LjEgb3IgbmV3ZXIKKworIyMjIEN5Z3dpbiBS
ZXF1aXJlbWVudHMgIyMjCisKKyAgKiBDeWd3aW4gdjEuNS4yNS0xNCBvciBuZXdlcgorCisjIyMg
TWFjIE9TIFggUmVxdWlyZW1lbnRzICMjIworCisgICogTWFjIE9TIFggdjEwLjQgVGlnZXIgb3Ig
bmV3ZXIKKyAgKiBYY29kZSBEZXZlbG9wZXIgVG9vbHMKKworIyMjIFJlcXVpcmVtZW50cyBmb3Ig
Q29udHJpYnV0b3JzICMjIworCitXZSB3ZWxjb21lIHBhdGNoZXMuICBJZiB5b3UgcGxhbiB0byBj
b250cmlidXRlIGEgcGF0Y2gsIHlvdSBuZWVkIHRvCitidWlsZCBHb29nbGUgVGVzdCBhbmQgaXRz
IG93biB0ZXN0cyBmcm9tIGEgZ2l0IGNoZWNrb3V0IChkZXNjcmliZWQKK2JlbG93KSwgd2hpY2gg
aGFzIGZ1cnRoZXIgcmVxdWlyZW1lbnRzOgorCisgICogW1B5dGhvbl0oaHR0cHM6Ly93d3cucHl0
aG9uLm9yZy8pIHYyLjMgb3IgbmV3ZXIgKGZvciBydW5uaW5nIHNvbWUgb2YKKyAgICB0aGUgdGVz
dHMgYW5kIHJlLWdlbmVyYXRpbmcgY2VydGFpbiBzb3VyY2UgZmlsZXMgZnJvbSB0ZW1wbGF0ZXMp
CisgICogW0NNYWtlXShodHRwczovL2NtYWtlLm9yZy8pIHYyLjYuNCBvciBuZXdlcgorCisjIyBS
ZWdlbmVyYXRpbmcgU291cmNlIEZpbGVzICMjCisKK1NvbWUgb2YgR29vZ2xlIFRlc3QncyBzb3Vy
Y2UgZmlsZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRlbXBsYXRlcyAobm90CitpbiB0aGUgQysrIHNl
bnNlKSB1c2luZyBhIHNjcmlwdC4KK0ZvciBleGFtcGxlLCB0aGUKK2ZpbGUgaW5jbHVkZS9ndGVz
dC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaC5wdW1wIGlzIHVzZWQgdG8gZ2VuZXJhdGUKK2d0
ZXN0LXR5cGUtdXRpbC5oIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKworWW91IGRvbid0IG5lZWQg
dG8gd29ycnkgYWJvdXQgcmVnZW5lcmF0aW5nIHRoZSBzb3VyY2UgZmlsZXMKK3VubGVzcyB5b3Ug
bmVlZCB0byBtb2RpZnkgdGhlbS4gIFlvdSB3b3VsZCB0aGVuIG1vZGlmeSB0aGUKK2NvcnJlc3Bv
bmRpbmcgYC5wdW1wYCBmaWxlcyBhbmQgcnVuIHRoZSAnW3B1bXAucHldKGdvb2dsZXRlc3Qvc2Ny
aXB0cy9wdW1wLnB5KScKK2dlbmVyYXRvciBzY3JpcHQuICBTZWUgdGhlIFtQdW1wIE1hbnVhbF0o
Z29vZ2xldGVzdC9kb2NzL1B1bXBNYW51YWwubWQpLgorCisjIyMgQ29udHJpYnV0aW5nIENvZGUg
IyMjCisKK1dlIHdlbGNvbWUgcGF0Y2hlcy4gIFBsZWFzZSByZWFkIHRoZQorW0RldmVsb3Blcidz
IEd1aWRlXShnb29nbGV0ZXN0L2RvY3MvRGV2R3VpZGUubWQpCitmb3IgaG93IHlvdSBjYW4gY29u
dHJpYnV0ZS4gSW4gcGFydGljdWxhciwgbWFrZSBzdXJlIHlvdSBoYXZlIHNpZ25lZAordGhlIENv
bnRyaWJ1dG9yIExpY2Vuc2UgQWdyZWVtZW50LCBvciB3ZSB3b24ndCBiZSBhYmxlIHRvIGFjY2Vw
dCB0aGUKK3BhdGNoLgorCitIYXBweSB0ZXN0aW5nIQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2FwcHZleW9yLnlt
bCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9hcHB2ZXlvci55bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDYxM2ZkNjAyNzgxMWRmODQyNzQzYThmMDIy
NzFiNWFmNTgzMjViZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9hcHB2ZXlvci55bWwKQEAgLTAsMCAr
MSw3MSBAQAordmVyc2lvbjogJ3tidWlsZH0nCisKK29zOiBWaXN1YWwgU3R1ZGlvIDIwMTUKKwor
ZW52aXJvbm1lbnQ6CisgIG1hdHJpeDoKKyAgLSBUb29sc2V0OiB2MTQwCisgIC0gVG9vbHNldDog
djEyMAorICAtIFRvb2xzZXQ6IHYxMTAKKyAgLSBUb29sc2V0OiB2MTAwCisKK3BsYXRmb3JtOgor
ICAtIFdpbjMyCisgIC0geDY0CisKK2NvbmZpZ3VyYXRpb246CisjICAtIFJlbGVhc2UKKyAgLSBE
ZWJ1ZworCitidWlsZDoKKyAgdmVyYm9zaXR5OiBtaW5pbWFsCisKK2FydGlmYWN0czoKKyAgLSBw
YXRoOiAnX2J1aWxkL1Rlc3RpbmcvVGVtcG9yYXJ5LyonCisgICAgbmFtZTogdGVzdF9yZXN1bHRz
CisKK2JlZm9yZV9idWlsZDoKKy0gcHM6IHwKKyAgICBXcml0ZS1PdXRwdXQgIkNvbmZpZ3VyYXRp
b246ICRlbnY6Q09ORklHVVJBVElPTiIKKyAgICBXcml0ZS1PdXRwdXQgIlBsYXRmb3JtOiAkZW52
OlBMQVRGT1JNIgorICAgICRnZW5lcmF0b3IgPSBzd2l0Y2ggKCRlbnY6VE9PTFNFVCkKKyAgICB7
CisgICAgICAgICJ2MTQwIiB7IlZpc3VhbCBTdHVkaW8gMTQgMjAxNSJ9CisgICAgICAgICJ2MTIw
IiB7IlZpc3VhbCBTdHVkaW8gMTIgMjAxMyJ9CisgICAgICAgICJ2MTEwIiB7IlZpc3VhbCBTdHVk
aW8gMTEgMjAxMiJ9CisgICAgICAgICJ2MTAwIiB7IlZpc3VhbCBTdHVkaW8gMTAgMjAxMCJ9Cisg
ICAgfQorICAgIGlmICgkZW52OlBMQVRGT1JNIC1lcSAieDY0IikKKyAgICB7CisgICAgICAgICRn
ZW5lcmF0b3IgPSAiJGdlbmVyYXRvciBXaW42NCIKKyAgICB9CisKK2J1aWxkX3NjcmlwdDoKKy0g
cHM6IHwKKyAgICBpZiAoKCRlbnY6VE9PTFNFVCAtZXEgInYxMDAiKSAtYW5kICgkZW52OlBMQVRG
T1JNIC1lcSAieDY0IikpCisgICAgeworICAgICAgICByZXR1cm4KKyAgICB9CisgICAgbWQgX2J1
aWxkIC1Gb3JjZSB8IE91dC1OdWxsCisgICAgY2QgX2J1aWxkCisKKyAgICAmIGNtYWtlIC1HICIk
Z2VuZXJhdG9yIiAtRENNQUtFX0NPTkZJR1VSQVRJT05fVFlQRVM9IkRlYnVnO1JlbGVhc2UiIC1E
Z3Rlc3RfYnVpbGRfdGVzdHM9T04gLURndGVzdF9idWlsZF9zYW1wbGVzPU9OIC1EZ21vY2tfYnVp
bGRfdGVzdHM9T04gLi4KKyAgICBpZiAoJExhc3RFeGl0Q29kZSAtbmUgMCkgeworICAgICAgICB0
aHJvdyAiRXhlYzogJEVycm9yTWVzc2FnZSIKKyAgICB9CisgICAgJiBjbWFrZSAtLWJ1aWxkIC4g
LS1jb25maWcgJGVudjpDT05GSUdVUkFUSU9OCisgICAgaWYgKCRMYXN0RXhpdENvZGUgLW5lIDAp
IHsKKyAgICAgICAgdGhyb3cgIkV4ZWM6ICRFcnJvck1lc3NhZ2UiCisgICAgfQorCit0ZXN0X3Nj
cmlwdDoKKy0gcHM6IHwKKyAgICBpZiAoKCRlbnY6VG9vbHNldCAtZXEgInYxMDAiKSAtYW5kICgk
ZW52OlBMQVRGT1JNIC1lcSAieDY0IikpCisgICAgeworICAgICAgICByZXR1cm4KKyAgICB9CisK
KyAgICAmIGN0ZXN0IC1DICRlbnY6Q09ORklHVVJBVElPTiAtLW91dHB1dC1vbi1mYWlsdXJlCisg
ICAgaWYgKCRMYXN0RXhpdENvZGUgLW5lIDApIHsKKyAgICAgICAgdGhyb3cgIkV4ZWM6ICRFcnJv
ck1lc3NhZ2UiCisgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svQ0hBTkdFUyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGVtb2NrL0NIQU5HRVMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDZmMmY3NjBlMzQyNDcxNTI2MmVjMTRmMzE4ZTFk
ZjlkYWM5MDliZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL0NIQU5HRVMKQEAgLTAs
MCArMSwxMjYgQEAKK0NoYW5nZXMgZm9yIDEuNy4wOgorCisqIEFsbCBuZXcgaW1wcm92ZW1lbnRz
IGluIEdvb2dsZSBUZXN0IDEuNy4wLgorKiBOZXcgZmVhdHVyZTogbWF0Y2hlcnMgRG91YmxlTmVh
cigpLCBGbG9hdE5lYXIoKSwKKyAgTmFuU2Vuc2l0aXZlRG91YmxlTmVhcigpLCBOYW5TZW5zaXRp
dmVGbG9hdE5lYXIoKSwKKyAgVW5vcmRlcmVkRWxlbWVudHNBcmUoKSwgVW5vcmRlcmVkRWxlbWVu
dHNBcmVBcnJheSgpLCBXaGVuU29ydGVkKCksCisgIFdoZW5Tb3J0ZWRCeSgpLCBJc0VtcHR5KCks
IGFuZCBTaXplSXMoKS4KKyogSW1wcm92ZW1lbnQ6IEdvb2dsZSBNb2NrIGNhbiBub3cgYmUgYnVp
bHQgYXMgYSBETEwuCisqIEltcHJvdmVtZW50OiB3aGVuIGNvbXBpbGVkIGJ5IGEgQysrMTEgY29t
cGlsZXIsIG1hdGNoZXJzIEFsbE9mKCkKKyAgYW5kIEFueU9mKCkgY2FuIGFjY2VwdCBhbiBhcmJp
dHJhcnkgbnVtYmVyIG9mIG1hdGNoZXJzLgorKiBJbXByb3ZlbWVudDogd2hlbiBjb21waWxlZCBi
eSBhIEMrKzExIGNvbXBpbGVyLCBtYXRjaGVycworICBFbGVtZW50c0FyZUFycmF5KCkgY2FuIGFj
Y2VwdCBhbiBpbml0aWFsaXplciBsaXN0LgorKiBJbXByb3ZlbWVudDogd2hlbiBleGNlcHRpb25z
IGFyZSBlbmFibGVkLCBhIG1vY2sgbWV0aG9kIHdpdGggbm8KKyAgZGVmYXVsdCBhY3Rpb24gbm93
IHRocm93cyBpbnN0ZWFkIGNyYXNoaW5nIHRoZSB0ZXN0LgorKiBJbXByb3ZlbWVudDogYWRkZWQg
Y2xhc3MgdGVzdGluZzo6U3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lciB0byBhaWQKKyAgZGVmaW5p
dGlvbiBvZiBjb21wb3NpdGUgbWF0Y2hlcnMuCisqIEltcHJvdmVtZW50OiBmdW5jdGlvbiByZXR1
cm4gdHlwZXMgdXNlZCBpbiBNT0NLX01FVEhPRCooKSBtYWNyb3MgY2FuCisgIG5vdyBjb250YWlu
IHVucHJvdGVjdGVkIGNvbW1hcy4KKyogSW1wcm92ZW1lbnQgKHBvdGVudGlhbGx5IGJyZWFraW5n
KTogRVhQRUNUX1RIQVQoKSBhbmQgQVNTRVJUX1RIQVQoKQorICBhcmUgbm93IG1vcmUgc3RyaWN0
IGluIGVuc3VyaW5nIHRoYXQgdGhlIHZhbHVlIHR5cGUgYW5kIHRoZSBtYXRjaGVyCisgIHR5cGUg
YXJlIGNvbXBhdGlibGUsIGNhdGNoaW5nIHBvdGVudGlhbCBidWdzIGluIHRlc3RzLgorKiBJbXBy
b3ZlbWVudDogUG9pbnRlZSgpIG5vdyB3b3JrcyBvbiBhbiBvcHRpb25hbDxUPi4KKyogSW1wcm92
ZW1lbnQ6IHRoZSBFbGVtZW50c0FyZUFycmF5KCkgbWF0Y2hlciBjYW4gbm93IHRha2UgYSB2ZWN0
b3Igb3IKKyAgaXRlcmF0b3IgcmFuZ2UgYXMgaW5wdXQsIGFuZCBtYWtlcyBhIGNvcHkgb2YgaXRz
IGlucHV0IGVsZW1lbnRzCisgIGJlZm9yZSB0aGUgY29udmVyc2lvbiB0byBhIE1hdGNoZXIuCisq
IEltcHJvdmVtZW50OiB0aGUgR29vZ2xlIE1vY2sgR2VuZXJhdG9yIGNhbiBub3cgZ2VuZXJhdGUg
bW9ja3MgZm9yCisgIHNvbWUgY2xhc3MgdGVtcGxhdGVzLgorKiBCdWcgZml4OiBtb2NrIG9iamVj
dCBkZXN0cnVjdGlvbiB0cmlnZ2VycmVkIGJ5IGFub3RoZXIgbW9jayBvYmplY3QncworICBkZXN0
cnVjdGlvbiBubyBsb25nZXIgaGFuZ3MuCisqIEltcHJvdmVtZW50OiBHb29nbGUgTW9jayBEb2N0
b3Igd29ya3MgYmV0dGVyIHdpdGggbmV3ZXIgQ2xhbmcgYW5kCisgIEdDQyBub3cuCisqIENvbXBh
dGliaWxpdHkgZml4ZXMuCisqIEJ1Zy93YXJuaW5nIGZpeGVzLgorCitDaGFuZ2VzIGZvciAxLjYu
MDoKKworKiBDb21waWxhdGlvbiBpcyBtdWNoIGZhc3RlciBhbmQgdXNlcyBtdWNoIGxlc3MgbWVt
b3J5LCBlc3BlY2lhbGx5CisgIHdoZW4gdGhlIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yIG9m
IGEgbW9jayBjbGFzcyBhcmUgbW92ZWQgb3V0IG9mCisgIHRoZSBjbGFzcyBib2R5LgorKiBOZXcg
bWF0Y2hlcnM6IFBvaW50d2lzZSgpLCBFYWNoKCkuCisqIE5ldyBhY3Rpb25zOiBSZXR1cm5Qb2lu
dGVlKCkgYW5kIFJldHVyblJlZk9mQ29weSgpLgorKiBDTWFrZSBzdXBwb3J0LgorKiBQcm9qZWN0
IGZpbGVzIGZvciBWaXN1YWwgU3R1ZGlvIDIwMTAuCisqIEFsbE9mKCkgYW5kIEFueU9mKCkgY2Fu
IGhhbmRsZSB1cC10byAxMCBhcmd1bWVudHMgbm93LgorKiBHb29nbGUgTW9jayBkb2N0b3IgdW5k
ZXJzdGFuZHMgQ2xhbmcgZXJyb3IgbWVzc2FnZXMgbm93LgorKiBTZXRBcmdQb2ludGVlPD4gbm93
IGFjY2VwdHMgc3RyaW5nIGxpdGVyYWxzLgorKiBnbW9ja19nZW4ucHkgaGFuZGxlcyBzdG9yYWdl
IHNwZWNpZmllciBtYWNyb3MgYW5kIHRlbXBsYXRlIHJldHVybgorICB0eXBlcyBub3cuCisqIENv
bXBhdGliaWxpdHkgZml4ZXMuCisqIEJ1ZyBmaXhlcyBhbmQgaW1wbGVtZW50YXRpb24gY2xlYW4t
dXBzLgorKiBQb3RlbnRpYWxseSBpbmNvbXBhdGlibGUgY2hhbmdlczogZGlzYWJsZXMgdGhlIGhh
cm1mdWwgJ21ha2UgaW5zdGFsbCcKKyAgY29tbWFuZCBpbiBhdXRvdG9vbHMuCisKK1BvdGVudGlh
bGx5IGJyZWFraW5nIGNoYW5nZXM6CisKKyogVGhlIGRlc2NyaXB0aW9uIHN0cmluZyBmb3IgTUFU
Q0hFUiooKSBjaGFuZ2VzIGZyb20gUHl0aG9uLXN0eWxlCisgIGludGVycG9sYXRpb24gdG8gYW4g
b3JkaW5hcnkgQysrIHN0cmluZyBleHByZXNzaW9uLgorKiBTZXRBcmd1bWVudFBvaW50ZWUgaXMg
ZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBTZXRBcmdQb2ludGVlLgorKiBTb21lIG5vbi1lc3NlbnRp
YWwgcHJvamVjdCBmaWxlcyBmb3IgVmlzdWFsIFN0dWRpbyAyMDA1IGFyZSByZW1vdmVkLgorCitD
aGFuZ2VzIGZvciAxLjUuMDoKKworICogTmV3IGZlYXR1cmU6IEdvb2dsZSBNb2NrIGNhbiBiZSBz
YWZlbHkgdXNlZCBpbiBtdWx0aS10aHJlYWRlZCB0ZXN0cworICAgb24gcGxhdGZvcm1zIGhhdmlu
ZyBwdGhyZWFkcy4KKyAqIE5ldyBmZWF0dXJlOiBmdW5jdGlvbiBmb3IgcHJpbnRpbmcgYSB2YWx1
ZSBvZiBhcmJpdHJhcnkgdHlwZS4KKyAqIE5ldyBmZWF0dXJlOiBmdW5jdGlvbiBFeHBsYWluTWF0
Y2hSZXN1bHQoKSBmb3IgZWFzeSBkZWZpbml0aW9uIG9mCisgICBjb21wb3NpdGUgbWF0Y2hlcnMu
CisgKiBUaGUgbmV3IG1hdGNoZXIgQVBJIGxldHMgdXNlci1kZWZpbmVkIG1hdGNoZXJzIGdlbmVy
YXRlIGN1c3RvbQorICAgZXhwbGFuYXRpb25zIG1vcmUgZGlyZWN0bHkgYW5kIGVmZmljaWVudGx5
LgorICogQmV0dGVyIGZhaWx1cmUgbWVzc2FnZXMgYWxsIGFyb3VuZC4KKyAqIE5vdE51bGwoKSBh
bmQgSXNOdWxsKCkgbm93IHdvcmsgd2l0aCBzbWFydCBwb2ludGVycy4KKyAqIEZpZWxkKCkgYW5k
IFByb3BlcnR5KCkgbm93IHdvcmsgd2hlbiB0aGUgbWF0Y2hlciBhcmd1bWVudCBpcyBhIHBvaW50
ZXIKKyAgIHBhc3NlZCBieSByZWZlcmVuY2UuCisgKiBSZWd1bGFyIGV4cHJlc3Npb24gbWF0Y2hl
cnMgb24gYWxsIHBsYXRmb3Jtcy4KKyAqIEFkZGVkIEdDQyA0LjAgc3VwcG9ydCBmb3IgR29vZ2xl
IE1vY2sgRG9jdG9yLgorICogQWRkZWQgZ21vY2tfYWxsX3Rlc3QuY2MgZm9yIGNvbXBpbGluZyBt
b3N0IEdvb2dsZSBNb2NrIHRlc3RzCisgICBpbiBhIHNpbmdsZSBmaWxlLgorICogU2lnbmlmaWNh
bnRseSBjbGVhbmVkIHVwIGNvbXBpbGVyIHdhcm5pbmdzLgorICogQnVnIGZpeGVzLCBiZXR0ZXIg
dGVzdCBjb3ZlcmFnZSwgYW5kIGltcGxlbWVudGF0aW9uIGNsZWFuLXVwcy4KKworIFBvdGVudGlh
bGx5IGJyZWFraW5nIGNoYW5nZXM6CisKKyAqIEN1c3RvbSBtYXRjaGVycyBkZWZpbmVkIHVzaW5n
IE1hdGNoZXJJbnRlcmZhY2Ugb3IgTWFrZVBvbHltb3JwaGljTWF0Y2hlcigpCisgICBuZWVkIHRv
IGJlIHVwZGF0ZWQgYWZ0ZXIgdXBncmFkaW5nIHRvIEdvb2dsZSBNb2NrIDEuNS4wOyBtYXRjaGVy
cyBkZWZpbmVkCisgICB1c2luZyBNQVRDSEVSIG9yIE1BVENIRVJfUCogYXJlbid0IGFmZmVjdGVk
LgorICogRHJvcHBlZCBzdXBwb3J0IGZvciAnbWFrZSBpbnN0YWxsJy4KKworQ2hhbmdlcyBmb3Ig
MS40LjAgKHdlIHNraXBwZWQgMS4yLiogYW5kIDEuMy4qIHRvIG1hdGNoIHRoZSB2ZXJzaW9uIG9m
CitHb29nbGUgVGVzdCk6CisKKyAqIFdvcmtzIGluIG1vcmUgZW52aXJvbm1lbnRzOiBTeW1iaWFu
IGFuZCBtaW5HVywgVmlzdWFsIEMrKyA3LjEuCisgKiBMaWdodGVyIHdlaWdodDogY29tZXMgd2l0
aCBvdXIgb3duIGltcGxlbWVudGF0aW9uIG9mIFRSMSB0dXBsZSAobm8KKyAgIG1vcmUgZGVwZW5k
ZW5jeSBvbiBCb29zdCEpLgorICogTmV3IGZlYXR1cmU6IC0tZ21vY2tfY2F0Y2hfbGVha2VkX21v
Y2tzIGZvciBkZXRlY3RpbmcgbGVha2VkIG1vY2tzLgorICogTmV3IGZlYXR1cmU6IEFDVElPTl9U
RU1QTEFURSBmb3IgZGVmaW5pbmcgdGVtcGxhdGl6ZWQgYWN0aW9ucy4KKyAqIE5ldyBmZWF0dXJl
OiB0aGUgLkFmdGVyKCkgY2xhdXNlIGZvciBzcGVjaWZ5aW5nIGV4cGVjdGF0aW9uIG9yZGVyLgor
ICogTmV3IGZlYXR1cmU6IHRoZSAuV2l0aCgpIGNsYXVzZSBmb3IgZm9yIHNwZWNpZnlpbmcgaW50
ZXItYXJndW1lbnQKKyAgIGNvbnN0cmFpbnRzLgorICogTmV3IGZlYXR1cmU6IGFjdGlvbnMgUmV0
dXJuQXJnPGs+KCksIFJldHVybk5ldzxUPiguLi4pLCBhbmQKKyAgIERlbGV0ZUFyZzxrPigpLgor
ICogTmV3IGZlYXR1cmU6IG1hdGNoZXJzIEtleSgpLCBQYWlyKCksIEFyZ3M8Li4uPigpLCBBbGxB
cmdzKCksIElzTnVsbCgpLAorICAgYW5kIENvbnRhaW5zKCkuCisgKiBOZXcgZmVhdHVyZTogdXRp
bGl0eSBjbGFzcyBNb2NrRnVuY3Rpb248Rj4sIHVzZWZ1bCBmb3IgY2hlY2twb2ludHMsIGV0Yy4K
KyAqIE5ldyBmZWF0dXJlOiBmdW5jdGlvbnMgVmFsdWUoeCwgbSkgYW5kIFNhZmVNYXRjaGVyQ2Fz
dDxUPihtKS4KKyAqIE5ldyBmZWF0dXJlOiBjb3B5aW5nIGEgbW9jayBvYmplY3QgaXMgcmVqZWN0
ZWQgYXQgY29tcGlsZSB0aW1lLgorICogTmV3IGZlYXR1cmU6IGEgc2NyaXB0IGZvciBmdXNpbmcg
YWxsIEdvb2dsZSBNb2NrIGFuZCBHb29nbGUgVGVzdAorICAgc291cmNlIGZpbGVzIGZvciBlYXN5
IGRlcGxveW1lbnQuCisgKiBJbXByb3ZlZCB0aGUgR29vZ2xlIE1vY2sgZG9jdG9yIHRvIGRpYWdu
b3NlIG1vcmUgZGlzZWFzZXMuCisgKiBJbXByb3ZlZCB0aGUgR29vZ2xlIE1vY2sgZ2VuZXJhdG9y
IHNjcmlwdC4KKyAqIENvbXBhdGliaWxpdHkgZml4ZXMgZm9yIE1hYyBPUyBYIGFuZCBnY2MuCisg
KiBCdWcgZml4ZXMgYW5kIGltcGxlbWVudGF0aW9uIGNsZWFuLXVwcy4KKworQ2hhbmdlcyBmb3Ig
MS4xLjA6CisKKyAqIE5ldyBmZWF0dXJlOiBhYmlsaXR5IHRvIHVzZSBHb29nbGUgTW9jayB3aXRo
IGFueSB0ZXN0aW5nIGZyYW1ld29yay4KKyAqIE5ldyBmZWF0dXJlOiBtYWNyb3MgZm9yIGVhc2ls
eSBkZWZpbmluZyBuZXcgbWF0Y2hlcnMKKyAqIE5ldyBmZWF0dXJlOiBtYWNyb3MgZm9yIGVhc2ls
eSBkZWZpbmluZyBuZXcgYWN0aW9ucy4KKyAqIE5ldyBmZWF0dXJlOiBtb3JlIGNvbnRhaW5lciBt
YXRjaGVycy4KKyAqIE5ldyBmZWF0dXJlOiBhY3Rpb25zIGZvciBhY2Nlc3NpbmcgZnVuY3Rpb24g
YXJndW1lbnRzIGFuZCB0aHJvd2luZworICAgZXhjZXB0aW9ucy4KKyAqIEltcHJvdmVkIHRoZSBH
b29nbGUgTW9jayBkb2N0b3Igc2NyaXB0IGZvciBkaWFnbm9zaW5nIGNvbXBpbGVyIGVycm9ycy4K
KyAqIEJ1ZyBmaXhlcyBhbmQgaW1wbGVtZW50YXRpb24gY2xlYW4tdXBzLgorCitDaGFuZ2VzIGZv
ciAxLjAuMDoKKworICogSW5pdGlhbCBPcGVuIFNvdXJjZSByZWxlYXNlIG9mIEdvb2dsZSBNb2Nr
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL0NN
YWtlTGlzdHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlmYjk2YTRiZjY5ODRmYWJkZGIwMmVhYjc2N2RjMDgz
YzQxMGU5ODUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9DTWFrZUxpc3RzLnR4dApA
QCAtMCwwICsxLDIwMiBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIENNYWtlIGJ1aWxkIHNjcmlwdCBm
b3IgR29vZ2xlIE1vY2suCisjCisjIFRvIHJ1biB0aGUgdGVzdHMgZm9yIEdvb2dsZSBNb2NrIGl0
c2VsZiBvbiBMaW51eCwgdXNlICdtYWtlIHRlc3QnIG9yCisjIGN0ZXN0LiAgWW91IGNhbiBzZWxl
Y3Qgd2hpY2ggdGVzdHMgdG8gcnVuIHVzaW5nICdjdGVzdCAtUiByZWdleCcuCisjIEZvciBtb3Jl
IG9wdGlvbnMsIHJ1biAnY3Rlc3QgLS1oZWxwJy4KKworIyBCVUlMRF9TSEFSRURfTElCUyBpcyBh
IHN0YW5kYXJkIENNYWtlIHZhcmlhYmxlLCBidXQgd2UgZGVjbGFyZSBpdCBoZXJlIHRvCisjIG1h
a2UgaXQgcHJvbWluZW50IGluIHRoZSBHVUkuCitvcHRpb24oQlVJTERfU0hBUkVEX0xJQlMgIkJ1
aWxkIHNoYXJlZCBsaWJyYXJpZXMgKERMTHMpLiIgT0ZGKQorCitvcHRpb24oZ21vY2tfYnVpbGRf
dGVzdHMgIkJ1aWxkIGFsbCBvZiBHb29nbGUgTW9jaydzIG93biB0ZXN0cy4iIE9GRikKKworIyBB
IGRpcmVjdG9yeSB0byBmaW5kIEdvb2dsZSBUZXN0IHNvdXJjZXMuCitpZiAoRVhJU1RTICIke0NN
QUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZ3Rlc3QvQ01ha2VMaXN0cy50eHQiKQorICBzZXQoZ3Rl
c3RfZGlyIGd0ZXN0KQorZWxzZSgpCisgIHNldChndGVzdF9kaXIgLi4vZ29vZ2xldGVzdCkKK2Vu
ZGlmKCkKKworIyBEZWZpbmVzIHByZV9wcm9qZWN0X3NldF91cF9oZXJtZXRpY19idWlsZCgpIGFu
ZCBzZXRfdXBfaGVybWV0aWNfYnVpbGQoKS4KK2luY2x1ZGUoIiR7Z3Rlc3RfZGlyfS9jbWFrZS9o
ZXJtZXRpY19idWlsZC5jbWFrZSIgT1BUSU9OQUwpCisKK2lmIChDT01NQU5EIHByZV9wcm9qZWN0
X3NldF91cF9oZXJtZXRpY19idWlsZCkKKyAgIyBHb29nbGUgVGVzdCBhbHNvIGNhbGxzIGhlcm1l
dGljIHNldHVwIGZ1bmN0aW9ucyBmcm9tIGFkZF9zdWJkaXJlY3RvcnksCisgICMgYWx0aG91Z2gg
aXRzIGNoYW5nZXMgd2lsbCBub3QgYWZmZWN0IHRoaW5ncyBhdCB0aGUgY3VycmVudCBzY29wZS4K
KyAgcHJlX3Byb2plY3Rfc2V0X3VwX2hlcm1ldGljX2J1aWxkKCkKK2VuZGlmKCkKKworIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCisjCisjIFByb2plY3Qtd2lkZSBzZXR0aW5ncworCisjIE5hbWUgb2YgdGhlIHBy
b2plY3QuCisjCisjIENNYWtlIGZpbGVzIGluIHRoaXMgcHJvamVjdCBjYW4gcmVmZXIgdG8gdGhl
IHJvb3Qgc291cmNlIGRpcmVjdG9yeQorIyBhcyAke2dtb2NrX1NPVVJDRV9ESVJ9IGFuZCB0byB0
aGUgcm9vdCBiaW5hcnkgZGlyZWN0b3J5IGFzCisjICR7Z21vY2tfQklOQVJZX0RJUn0uCisjIExh
bmd1YWdlICJDIiBpcyByZXF1aXJlZCBmb3IgZmluZF9wYWNrYWdlKFRocmVhZHMpLgorcHJvamVj
dChnbW9jayBDWFggQykKK2NtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAyLjYuNCkKKwor
aWYgKENPTU1BTkQgc2V0X3VwX2hlcm1ldGljX2J1aWxkKQorICBzZXRfdXBfaGVybWV0aWNfYnVp
bGQoKQorZW5kaWYoKQorCisjIEluc3RydWN0cyBDTWFrZSB0byBwcm9jZXNzIEdvb2dsZSBUZXN0
J3MgQ01ha2VMaXN0cy50eHQgYW5kIGFkZCBpdHMKKyMgdGFyZ2V0cyB0byB0aGUgY3VycmVudCBz
Y29wZS4gIFdlIGFyZSBwbGFjaW5nIEdvb2dsZSBUZXN0J3MgYmluYXJ5CisjIGRpcmVjdG9yeSBp
biBhIHN1YmRpcmVjdG9yeSBvZiBvdXIgb3duIGFzIFZDIGNvbXBpbGF0aW9uIG1heSBicmVhawor
IyBpZiB0aGV5IGFyZSB0aGUgc2FtZSAodGhlIGRlZmF1bHQpLgorYWRkX3N1YmRpcmVjdG9yeSgi
JHtndGVzdF9kaXJ9IiAiJHtnbW9ja19CSU5BUllfRElSfS9ndGVzdCIpCisKKyMgQWx0aG91Z2gg
R29vZ2xlIFRlc3QncyBDTWFrZUxpc3RzLnR4dCBjYWxscyB0aGlzIGZ1bmN0aW9uLCB0aGUKKyMg
Y2hhbmdlcyB0aGVyZSBkb24ndCBhZmZlY3QgdGhlIGN1cnJlbnQgc2NvcGUuICBUaGVyZWZvcmUg
d2UgaGF2ZSB0bworIyBjYWxsIGl0IGFnYWluIGhlcmUuCitjb25maWdfY29tcGlsZXJfYW5kX2xp
bmtlcigpICAjIGZyb20gJHtndGVzdF9kaXJ9L2NtYWtlL2ludGVybmFsX3V0aWxzLmNtYWtlCisK
KyMgQWRkcyBHb29nbGUgTW9jaydzIGFuZCBHb29nbGUgVGVzdCdzIGhlYWRlciBkaXJlY3Rvcmll
cyB0byB0aGUgc2VhcmNoIHBhdGguCitpbmNsdWRlX2RpcmVjdG9yaWVzKCIke2dtb2NrX1NPVVJD
RV9ESVJ9L2luY2x1ZGUiCisgICAgICAgICAgICAgICAgICAgICIke2dtb2NrX1NPVVJDRV9ESVJ9
IgorICAgICAgICAgICAgICAgICAgICAiJHtndGVzdF9TT1VSQ0VfRElSfS9pbmNsdWRlIgorICAg
ICAgICAgICAgICAgICAgICAjIFRoaXMgZGlyZWN0b3J5IGlzIG5lZWRlZCB0byBidWlsZCBkaXJl
Y3RseSBmcm9tIEdvb2dsZQorICAgICAgICAgICAgICAgICAgICAjIFRlc3Qgc291cmNlcy4KKyAg
ICAgICAgICAgICAgICAgICAgIiR7Z3Rlc3RfU09VUkNFX0RJUn0iKQorCisjIFN1bW1hcnkgb2Yg
dHVwbGUgc3VwcG9ydCBmb3IgTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW86CisjIENvbXBpbGVyICAg
IHZlcnNpb24oTVMpICB2ZXJzaW9uKGNtYWtlKSAgU3VwcG9ydAorIyAtLS0tLS0tLS0tICAtLS0t
LS0tLS0tLSAgLS0tLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisj
IDw9IFZTIDIwMTAgIDw9IDEwICAgICAgICA8PSAxNjAwICAgICAgICAgVXNlIEdvb2dsZSBUZXN0
cydzIG93biB0dXBsZS4KKyMgVlMgMjAxMiAgICAgMTEgICAgICAgICAgIDE3MDAgICAgICAgICAg
ICBzdGQ6OnRyMTo6dHVwbGUgKyBfVkFSSUFESUNfTUFYPTEwCisjIFZTIDIwMTMgICAgIDEyICAg
ICAgICAgICAxODAwICAgICAgICAgICAgc3RkOjp0cjE6OnR1cGxlCitpZiAoTVNWQyBBTkQgTVNW
Q19WRVJTSU9OIEVRVUFMIDE3MDApCisgIGFkZF9kZWZpbml0aW9ucygvRCBfVkFSSUFESUNfTUFY
PTEwKQorZW5kaWYoKQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgRGVmaW5lcyB0aGUgZ21vY2sg
JiBnbW9ja19tYWluIGxpYnJhcmllcy4gIFVzZXIgdGVzdHMgc2hvdWxkIGxpbmsKKyMgd2l0aCBv
bmUgb2YgdGhlbS4KKworIyBHb29nbGUgTW9jayBsaWJyYXJpZXMuICBXZSBidWlsZCB0aGVtIHVz
aW5nIG1vcmUgc3RyaWN0IHdhcm5pbmdzIHRoYW4gd2hhdAorIyBhcmUgdXNlZCBmb3Igb3RoZXIg
dGFyZ2V0cywgdG8gZW5zdXJlIHRoYXQgR29vZ2xlIE1vY2sgY2FuIGJlIGNvbXBpbGVkIGJ5Cisj
IGEgdXNlciBhZ2dyZXNzaXZlIGFib3V0IHdhcm5pbmdzLgorY3h4X2xpYnJhcnkoZ21vY2sKKyAg
ICAgICAgICAgICIke2N4eF9zdHJpY3R9IgorICAgICAgICAgICAgIiR7Z3Rlc3RfZGlyfS9zcmMv
Z3Rlc3QtYWxsLmNjIgorICAgICAgICAgICAgc3JjL2dtb2NrLWFsbC5jYykKKworY3h4X2xpYnJh
cnkoZ21vY2tfbWFpbgorICAgICAgICAgICAgIiR7Y3h4X3N0cmljdH0iCisgICAgICAgICAgICAi
JHtndGVzdF9kaXJ9L3NyYy9ndGVzdC1hbGwuY2MiCisgICAgICAgICAgICBzcmMvZ21vY2stYWxs
LmNjCisgICAgICAgICAgICBzcmMvZ21vY2tfbWFpbi5jYykKKworIyBJZiB0aGUgQ01ha2UgdmVy
c2lvbiBzdXBwb3J0cyBpdCwgYXR0YWNoIGhlYWRlciBkaXJlY3RvcnkgaW5mb3JtYXRpb24KKyMg
dG8gdGhlIHRhcmdldHMgZm9yIHdoZW4gd2UgYXJlIHBhcnQgb2YgYSBwYXJlbnQgYnVpbGQgKGll
IGJlaW5nIHB1bGxlZAorIyBpbiB2aWEgYWRkX3N1YmRpcmVjdG9yeSgpIHJhdGhlciB0aGFuIGJl
aW5nIGEgc3RhbmRhbG9uZSBidWlsZCkuCitpZiAoREVGSU5FRCBDTUFLRV9WRVJTSU9OIEFORCBO
T1QgIiR7Q01BS0VfVkVSU0lPTn0iIFZFUlNJT05fTEVTUyAiMi44LjExIikKKyAgdGFyZ2V0X2lu
Y2x1ZGVfZGlyZWN0b3JpZXMoZ21vY2sgICAgICBJTlRFUkZBQ0UgIiR7Z21vY2tfU09VUkNFX0RJ
Un0vaW5jbHVkZSIpCisgIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKGdtb2NrX21haW4gSU5U
RVJGQUNFICIke2dtb2NrX1NPVVJDRV9ESVJ9L2luY2x1ZGUiKQorZW5kaWYoKQorCisjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKKyMKKyMgSW5zdGFsbCBydWxlcworaW5zdGFsbChUQVJHRVRTIGdtb2NrIGdtb2Nr
X21haW4KKyAgREVTVElOQVRJT04gbGliKQoraW5zdGFsbChESVJFQ1RPUlkgJHtnbW9ja19TT1VS
Q0VfRElSfS9pbmNsdWRlL2dtb2NrCisgIERFU1RJTkFUSU9OIGluY2x1ZGUpCisKKyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIworIworIyBHb29nbGUgTW9jaydzIG93biB0ZXN0cy4KKyMKKyMgWW91IGNhbiBza2lw
IHRoaXMgc2VjdGlvbiBpZiB5b3UgYXJlbid0IGludGVyZXN0ZWQgaW4gdGVzdGluZworIyBHb29n
bGUgTW9jayBpdHNlbGYuCisjCisjIFRoZSB0ZXN0cyBhcmUgbm90IGJ1aWx0IGJ5IGRlZmF1bHQu
ICBUbyBidWlsZCB0aGVtLCBzZXQgdGhlCisjIGdtb2NrX2J1aWxkX3Rlc3RzIG9wdGlvbiB0byBP
Ti4gIFlvdSBjYW4gZG8gaXQgYnkgcnVubmluZyBjY21ha2UKKyMgb3Igc3BlY2lmeWluZyB0aGUg
LURnbW9ja19idWlsZF90ZXN0cz1PTiBmbGFnIHdoZW4gcnVubmluZyBjbWFrZS4KKworaWYgKGdt
b2NrX2J1aWxkX3Rlc3RzKQorICAjIFRoaXMgbXVzdCBiZSBzZXQgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IGZvciB0aGUgdGVzdHMgdG8gYmUgcnVuIGJ5CisgICMgJ21ha2UgdGVzdCcgb3IgY3Rlc3Qu
CisgIGVuYWJsZV90ZXN0aW5nKCkKKworICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAgIyBDKysgdGVzdHMgYnVpbHQgd2l0aCBz
dGFuZGFyZCBjb21waWxlciBmbGFncy4KKworICBjeHhfdGVzdChnbW9jay1hY3Rpb25zX3Rlc3Qg
Z21vY2tfbWFpbikKKyAgY3h4X3Rlc3QoZ21vY2stY2FyZGluYWxpdGllc190ZXN0IGdtb2NrX21h
aW4pCisgIGN4eF90ZXN0KGdtb2NrX2V4X3Rlc3QgZ21vY2tfbWFpbikKKyAgY3h4X3Rlc3QoZ21v
Y2stZ2VuZXJhdGVkLWFjdGlvbnNfdGVzdCBnbW9ja19tYWluKQorICBjeHhfdGVzdChnbW9jay1n
ZW5lcmF0ZWQtZnVuY3Rpb24tbW9ja2Vyc190ZXN0IGdtb2NrX21haW4pCisgIGN4eF90ZXN0KGdt
b2NrLWdlbmVyYXRlZC1pbnRlcm5hbC11dGlsc190ZXN0IGdtb2NrX21haW4pCisgIGN4eF90ZXN0
KGdtb2NrLWdlbmVyYXRlZC1tYXRjaGVyc190ZXN0IGdtb2NrX21haW4pCisgIGN4eF90ZXN0KGdt
b2NrLWludGVybmFsLXV0aWxzX3Rlc3QgZ21vY2tfbWFpbikKKyAgY3h4X3Rlc3QoZ21vY2stbWF0
Y2hlcnNfdGVzdCBnbW9ja19tYWluKQorICBjeHhfdGVzdChnbW9jay1tb3JlLWFjdGlvbnNfdGVz
dCBnbW9ja19tYWluKQorICBjeHhfdGVzdChnbW9jay1uaWNlLXN0cmljdF90ZXN0IGdtb2NrX21h
aW4pCisgIGN4eF90ZXN0KGdtb2NrLXBvcnRfdGVzdCBnbW9ja19tYWluKQorICBjeHhfdGVzdChn
bW9jay1zcGVjLWJ1aWxkZXJzX3Rlc3QgZ21vY2tfbWFpbikKKyAgY3h4X3Rlc3QoZ21vY2tfbGlu
a190ZXN0IGdtb2NrX21haW4gdGVzdC9nbW9ja19saW5rMl90ZXN0LmNjKQorICBjeHhfdGVzdChn
bW9ja190ZXN0IGdtb2NrX21haW4pCisKKyAgaWYgKENNQUtFX1VTRV9QVEhSRUFEU19JTklUKQor
ICAgIGN4eF90ZXN0KGdtb2NrX3N0cmVzc190ZXN0IGdtb2NrKQorICBlbmRpZigpCisKKyAgIyBn
bW9ja19hbGxfdGVzdCBpcyBjb21tZW50ZWQgdG8gc2F2ZSB0aW1lIGJ1aWxkaW5nIGFuZCBydW5u
aW5nIHRlc3RzLgorICAjIFVuY29tbWVudCBpZiBuZWNlc3NhcnkuCisgICMgY3h4X3Rlc3QoZ21v
Y2tfYWxsX3Rlc3QgZ21vY2tfbWFpbikKKworICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAgIyBDKysgdGVzdHMgYnVpbHQgd2l0
aCBub24tc3RhbmRhcmQgY29tcGlsZXIgZmxhZ3MuCisKKyAgY3h4X2xpYnJhcnkoZ21vY2tfbWFp
bl9ub19leGNlcHRpb24gIiR7Y3h4X25vX2V4Y2VwdGlvbn0iCisgICAgIiR7Z3Rlc3RfZGlyfS9z
cmMvZ3Rlc3QtYWxsLmNjIiBzcmMvZ21vY2stYWxsLmNjIHNyYy9nbW9ja19tYWluLmNjKQorCisg
IGN4eF9saWJyYXJ5KGdtb2NrX21haW5fbm9fcnR0aSAiJHtjeHhfbm9fcnR0aX0iCisgICAgIiR7
Z3Rlc3RfZGlyfS9zcmMvZ3Rlc3QtYWxsLmNjIiBzcmMvZ21vY2stYWxsLmNjIHNyYy9nbW9ja19t
YWluLmNjKQorCisgIGlmIChOT1QgTVNWQyBPUiBNU1ZDX1ZFUlNJT04gTEVTUyAxNjAwKSAgIyAx
NjAwIGlzIFZpc3VhbCBTdHVkaW8gMjAxMC4KKyAgICAjIFZpc3VhbCBTdHVkaW8gMjAxMCwgMjAx
MiwgYW5kIDIwMTMgZGVmaW5lIHN5bWJvbHMgaW4gc3RkOjp0cjEgdGhhdAorICAgICMgY29uZmxp
Y3Qgd2l0aCBvdXIgb3duIGRlZmluaXRpb25zLiBUaGVyZWZvcmUgdXNpbmcgb3VyIG93biB0dXBs
ZSBkb2VzIG5vdAorICAgICMgd29yayBvbiB0aG9zZSBjb21waWxlcnMuCisgICAgY3h4X2xpYnJh
cnkoZ21vY2tfbWFpbl91c2Vfb3duX3R1cGxlICIke2N4eF91c2Vfb3duX3R1cGxlfSIKKyAgICAg
ICIke2d0ZXN0X2Rpcn0vc3JjL2d0ZXN0LWFsbC5jYyIgc3JjL2dtb2NrLWFsbC5jYyBzcmMvZ21v
Y2tfbWFpbi5jYykKKworICAgIGN4eF90ZXN0X3dpdGhfZmxhZ3MoZ21vY2tfdXNlX293bl90dXBs
ZV90ZXN0ICIke2N4eF91c2Vfb3duX3R1cGxlfSIKKyAgICAgIGdtb2NrX21haW5fdXNlX293bl90
dXBsZSB0ZXN0L2dtb2NrLXNwZWMtYnVpbGRlcnNfdGVzdC5jYykKKyAgZW5kaWYoKQorCisgIGN4
eF90ZXN0X3dpdGhfZmxhZ3MoZ21vY2stbW9yZS1hY3Rpb25zX25vX2V4Y2VwdGlvbl90ZXN0ICIk
e2N4eF9ub19leGNlcHRpb259IgorICAgIGdtb2NrX21haW5fbm9fZXhjZXB0aW9uIHRlc3QvZ21v
Y2stbW9yZS1hY3Rpb25zX3Rlc3QuY2MpCisKKyAgY3h4X3Rlc3Rfd2l0aF9mbGFncyhnbW9ja19u
b19ydHRpX3Rlc3QgIiR7Y3h4X25vX3J0dGl9IgorICAgIGdtb2NrX21haW5fbm9fcnR0aSB0ZXN0
L2dtb2NrLXNwZWMtYnVpbGRlcnNfdGVzdC5jYykKKworICBjeHhfc2hhcmVkX2xpYnJhcnkoc2hh
cmVkX2dtb2NrX21haW4gIiR7Y3h4X2RlZmF1bHR9IgorICAgICIke2d0ZXN0X2Rpcn0vc3JjL2d0
ZXN0LWFsbC5jYyIgc3JjL2dtb2NrLWFsbC5jYyBzcmMvZ21vY2tfbWFpbi5jYykKKworICAjIFRl
c3RzIHRoYXQgYSBiaW5hcnkgY2FuIGJlIGJ1aWx0IHdpdGggR29vZ2xlIE1vY2sgYXMgYSBzaGFy
ZWQgbGlicmFyeS4gIE9uCisgICMgc29tZSBzeXN0ZW0gY29uZmlndXJhdGlvbnMsIGl0IG1heSBu
b3QgcG9zc2libGUgdG8gcnVuIHRoZSBiaW5hcnkgd2l0aG91dAorICAjIGtub3dpbmcgbW9yZSBk
ZXRhaWxzIGFib3V0IHRoZSBzeXN0ZW0gY29uZmlndXJhdGlvbnMuIFdlIGRvIG5vdCB0cnkgdG8g
cnVuCisgICMgdGhpcyBiaW5hcnkuIFRvIGdldCBhIG1vcmUgcm9idXN0IHNoYXJlZCBsaWJyYXJ5
IGNvdmVyYWdlLCBjb25maWd1cmUgd2l0aAorICAjIC1EQlVJTERfU0hBUkVEX0xJQlM9T04uCisg
IGN4eF9leGVjdXRhYmxlX3dpdGhfZmxhZ3Moc2hhcmVkX2dtb2NrX3Rlc3RfICIke2N4eF9kZWZh
dWx0fSIKKyAgICBzaGFyZWRfZ21vY2tfbWFpbiB0ZXN0L2dtb2NrLXNwZWMtYnVpbGRlcnNfdGVz
dC5jYykKKyAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKHNoYXJlZF9nbW9ja190ZXN0XworICAgIFBS
T1BFUlRJRVMKKyAgICBDT01QSUxFX0RFRklOSVRJT05TICJHVEVTVF9MSU5LRURfQVNfU0hBUkVE
X0xJQlJBUlk9MSIpCisKKyAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICMgUHl0aG9uIHRlc3RzLgorCisgIGN4eF9leGVjdXRh
YmxlKGdtb2NrX2xlYWtfdGVzdF8gdGVzdCBnbW9ja19tYWluKQorICBweV90ZXN0KGdtb2NrX2xl
YWtfdGVzdCkKKworICBjeHhfZXhlY3V0YWJsZShnbW9ja19vdXRwdXRfdGVzdF8gdGVzdCBnbW9j
aykKKyAgcHlfdGVzdChnbW9ja19vdXRwdXRfdGVzdCkKK2VuZGlmKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGVtb2NrL0NPTlRSSUJVVE9SUyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL0NPTlRSSUJVVE9SUwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTlhZTM2MmI2MGMzODRjNzQzY2Q2NTQ5MDNlYzI4N2ZiNmEyNzBjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZW1vY2svQ09OVFJJQlVUT1JTCkBAIC0wLDAgKzEsNDAgQEAKKyMgVGhp
cyBmaWxlIGNvbnRhaW5zIGEgbGlzdCBvZiBwZW9wbGUgd2hvJ3ZlIG1hZGUgbm9uLXRyaXZpYWwK
KyMgY29udHJpYnV0aW9uIHRvIHRoZSBHb29nbGUgQysrIE1vY2tpbmcgRnJhbWV3b3JrIHByb2pl
Y3QuICBQZW9wbGUKKyMgd2hvIGNvbW1pdCBjb2RlIHRvIHRoZSBwcm9qZWN0IGFyZSBlbmNvdXJh
Z2VkIHRvIGFkZCB0aGVpciBuYW1lcworIyBoZXJlLiAgUGxlYXNlIGtlZXAgdGhlIGxpc3Qgc29y
dGVkIGJ5IGZpcnN0IG5hbWVzLgorCitCZW5vaXQgU2lnb3VyZSA8dHN1bmFAZ29vZ2xlLmNvbT4K
K0JvZ2RhbiBQaWxvY2EgPGJvb0Bnb29nbGUuY29tPgorQ2hhbmRsZXIgQ2FycnV0aCA8Y2hhbmRs
ZXJjQGdvb2dsZS5jb20+CitEYXZlIE1hY0xhY2hsYW4gPGRtYWNsYWNoQGdtYWlsLmNvbT4KK0Rh
dmlkIEFuZGVyc29uIDxkYW5kZXJzb25AZ29vZ2xlLmNvbT4KK0RlYW4gU3R1cnRldmFudAorR2Vu
ZSBWb2xvdmljaCA8Z3ZAY2l0ZS5jb20+CitIYWwgQnVyY2ggPGdtb2NrQGhidXJjaC5jb20+CitK
ZWZmcmV5IFlhc3NraW4gPGp5YXNza2luQGdvb2dsZS5jb20+CitKaW0gS2VsbGVyIDxqaW1rZWxs
ZXJAZ29vZ2xlLmNvbT4KK0pvZSBXYWxuZXMgPGpvZUB0cnVlbWVzaC5jb20+CitKb24gV3JheSA8
andyYXlAZ29vZ2xlLmNvbT4KK0tlaXIgTWllcmxlIDxtaWVybGVAZ21haWwuY29tPgorS2VpdGgg
UmF5IDxrZWl0aC5yYXlAZ21haWwuY29tPgorS29zdHlhIFNlcmVicnlhbnkgPGtjY0Bnb29nbGUu
Y29tPgorTGV2IE1ha2hsaXMKK01hbnVlbCBLbGltZWsgPGtsaW1la0Bnb29nbGUuY29tPgorTWFy
aW8gVGFuZXYgPHJhZGl4QGdvb2dsZS5jb20+CitNYXJrIFBhc2tpbgorTWFya3VzIEhldWxlIDxt
YXJrdXMuaGV1bGVAZ21haWwuY29tPgorTWF0dGhldyBTaW1tb25zIDxzaW1tb25tdEBhY20ub3Jn
PgorTWlrZSBCbGFuZCA8bWJsYW5kQGdvb2dsZS5jb20+CitOZWFsIE5vcndpdHogPG5ub3J3aXR6
QGdtYWlsLmNvbT4KK05lcm1pbiBPemtpcmFuYXJ0bGkgPG5lcm1pbkBnb29nbGUuY29tPgorT3dl
biBDYXJsc2VuIDxvY2FybHNlbkBnb29nbGUuY29tPgorUGFuZWVuZHJhIEJhIDxwYW5lZW5kcmFA
Z29vZ2xlLmNvbT4KK1BhdWwgTWVuYWdlIDxtZW5hZ2VAZ29vZ2xlLmNvbT4KK1Bpb3RyIEthbWlu
c2tpIDxwaW90cmtAZ29vZ2xlLmNvbT4KK1J1c3MgUnVmZXIgPHJ1c3NAcGVudGFkLmNvbT4KK1N2
ZXJyZSBTdW5kc2RhbCA8c3VuZHNkYWxAZ21haWwuY29tPgorVGFrZXNoaSBZb3NoaW5vIDx0eW9z
aGlub0Bnb29nbGUuY29tPgorVmFkaW0gQmVybWFuIDx2YWRpbWJAZ29vZ2xlLmNvbT4KK1ZsYWQg
TG9zZXYgPHZsYWRsQGdvb2dsZS5jb20+CitXb2xmZ2FuZyBLbGllciA8d2tsaWVyQGdvb2dsZS5j
b20+CitaaGFueW9uZyBXYW4gPHdhbkBnb29nbGUuY29tPgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1v
Y2svTElDRU5TRSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL0xJQ0VOU0UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTk0MWExMWY4Y2U5
NDM4OTE2MGI0NTg5MjdhMjliYTIxNzU0MjgxOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVt
b2NrL0xJQ0VOU0UKQEAgLTAsMCArMSwyOCBAQAorQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMu
CitBbGwgcmlnaHRzIHJlc2VydmVkLgorCitSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKK21vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKK21ldDoK
KworICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKK25vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKK2NvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKK2luIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKK2Rpc3RyaWJ1
dGlvbi4KKyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKK2NvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCit0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCitBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCitTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCitMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKK0RB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCitPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZW1vY2svTWFrZWZpbGUuYW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9NYWtlZmlsZS5hbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45YWRiYzUxNjNkZDcxOTFhMTRhODg3YTM4NGZiNWQ2ZDI5NTZiNDRkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svTWFrZWZpbGUuYW0KQEAgLTAsMCArMSwyMjQgQEAK
KyMgQXV0b21ha2UgZmlsZQorCisjIE5vbnN0YW5kYXJkIHBhY2thZ2UgZmlsZXMgZm9yIGRpc3Ry
aWJ1dGlvbi4KK0VYVFJBX0RJU1QgPSBMSUNFTlNFCisKKyMgV2UgbWF5IG5lZWQgdG8gYnVpbGQg
b3VyIGludGVybmFsbHkgcGFja2FnZWQgZ3Rlc3QuIElmIHNvLCBpdCB3aWxsIGJlCisjIGluY2x1
ZGVkIGluIHRoZSAnc3ViZGlycycgdmFyaWFibGUuCitTVUJESVJTID0gJChzdWJkaXJzKQorCisj
IFRoaXMgaXMgZ2VuZXJhdGVkIGJ5IHRoZSBjb25maWd1cmUgc2NyaXB0LCBzbyBjbGVhbiBpdCBm
b3IgZGlzdHJpYnV0aW9uLgorRElTVENMRUFORklMRVMgPSBzY3JpcHRzL2dtb2NrLWNvbmZpZwor
CisjIFdlIGRlZmluZSB0aGUgZ2xvYmFsIEFNX0NQUEZMQUdTIGFzIGV2ZXJ5dGhpbmcgd2UgY29t
cGlsZSBpbmNsdWRlcyBmcm9tIHRoZXNlCisjIGRpcmVjdG9yaWVzLgorQU1fQ1BQRkxBR1MgPSAk
KEdURVNUX0NQUEZMQUdTKSAtSSQoc3JjZGlyKS9pbmNsdWRlCisKKyMgTW9kaWZpZXMgY29tcGls
ZXIgYW5kIGxpbmtlciBmbGFncyBmb3IgcHRocmVhZHMgY29tcGF0aWJpbGl0eS4KK2lmIEhBVkVf
UFRIUkVBRFMKKyAgQU1fQ1hYRkxBR1MgPSBAUFRIUkVBRF9DRkxBR1NAIC1ER1RFU1RfSEFTX1BU
SFJFQUQ9MQorICBBTV9MSUJTID0gQFBUSFJFQURfTElCU0AKK2VuZGlmCisKKyMgQnVpbGQgcnVs
ZXMgZm9yIGxpYnJhcmllcy4KK2xpYl9MVExJQlJBUklFUyA9IGxpYi9saWJnbW9jay5sYSBsaWIv
bGliZ21vY2tfbWFpbi5sYQorCitsaWJfbGliZ21vY2tfbGFfU09VUkNFUyA9IHNyYy9nbW9jay1h
bGwuY2MKKworcGtnaW5jbHVkZV9IRUFERVJTID0gXAorICBpbmNsdWRlL2dtb2NrL2dtb2NrLWFj
dGlvbnMuaCBcCisgIGluY2x1ZGUvZ21vY2svZ21vY2stY2FyZGluYWxpdGllcy5oIFwKKyAgaW5j
bHVkZS9nbW9jay9nbW9jay1nZW5lcmF0ZWQtYWN0aW9ucy5oIFwKKyAgaW5jbHVkZS9nbW9jay9n
bW9jay1nZW5lcmF0ZWQtZnVuY3Rpb24tbW9ja2Vycy5oIFwKKyAgaW5jbHVkZS9nbW9jay9nbW9j
ay1nZW5lcmF0ZWQtbWF0Y2hlcnMuaCBcCisgIGluY2x1ZGUvZ21vY2svZ21vY2stZ2VuZXJhdGVk
LW5pY2Utc3RyaWN0LmggXAorICBpbmNsdWRlL2dtb2NrL2dtb2NrLW1hdGNoZXJzLmggXAorICBp
bmNsdWRlL2dtb2NrL2dtb2NrLW1vcmUtYWN0aW9ucy5oIFwKKyAgaW5jbHVkZS9nbW9jay9nbW9j
ay1tb3JlLW1hdGNoZXJzLmggXAorICBpbmNsdWRlL2dtb2NrL2dtb2NrLXNwZWMtYnVpbGRlcnMu
aCBcCisgIGluY2x1ZGUvZ21vY2svZ21vY2suaAorCitwa2dpbmNsdWRlX2ludGVybmFsZGlyID0g
JChwa2dpbmNsdWRlZGlyKS9pbnRlcm5hbAorcGtnaW5jbHVkZV9pbnRlcm5hbF9IRUFERVJTID0g
XAorICBpbmNsdWRlL2dtb2NrL2ludGVybmFsL2dtb2NrLWdlbmVyYXRlZC1pbnRlcm5hbC11dGls
cy5oIFwKKyAgaW5jbHVkZS9nbW9jay9pbnRlcm5hbC9nbW9jay1pbnRlcm5hbC11dGlscy5oIFwK
KyAgaW5jbHVkZS9nbW9jay9pbnRlcm5hbC9nbW9jay1wb3J0LmggXAorICBpbmNsdWRlL2dtb2Nr
L2ludGVybmFsL2N1c3RvbS9nbW9jay1nZW5lcmF0ZWQtYWN0aW9ucy5oIFwKKyAgaW5jbHVkZS9n
bW9jay9pbnRlcm5hbC9jdXN0b20vZ21vY2stbWF0Y2hlcnMuaCBcCisgIGluY2x1ZGUvZ21vY2sv
aW50ZXJuYWwvY3VzdG9tL2dtb2NrLXBvcnQuaAorCitsaWJfbGliZ21vY2tfbWFpbl9sYV9TT1VS
Q0VTID0gc3JjL2dtb2NrX21haW4uY2MKK2xpYl9saWJnbW9ja19tYWluX2xhX0xJQkFERCA9IGxp
Yi9saWJnbW9jay5sYQorCisjIEJ1aWxkIHJ1bGVzIGZvciB0ZXN0cy4gQXV0b21ha2UncyBuYW1p
bmcgZm9yIHNvbWUgb2YgdGhlc2UgdmFyaWFibGVzIGlzbid0CisjIHRlcnJpYmx5IG9idmlvdXMs
IHNvIHRoaXMgaXMgYSBicmllZiByZWZlcmVuY2U6CisjCisjIFRFU1RTIC0tIFByb2dyYW1zIHJ1
biBhdXRvbWF0aWNhbGx5IGJ5ICJtYWtlIGNoZWNrIgorIyBjaGVja19QUk9HUkFNUyAtLSBQcm9n
cmFtcyBidWlsdCBieSAibWFrZSBjaGVjayIgYnV0IG5vdCBuZWNlc3NhcmlseSBydW4KKworVEVT
VFM9CitjaGVja19QUk9HUkFNUz0KK0FNX0xERkxBR1MgPSAkKEdURVNUX0xERkxBR1MpCisKKyMg
VGhpcyBleGVyY2lzZXMgYWxsIG1ham9yIGNvbXBvbmVudHMgb2YgR29vZ2xlIE1vY2suICBJdCBh
bHNvCisjIHZlcmlmaWVzIHRoYXQgbGliZ21vY2sgd29ya3MuCitURVNUUyArPSB0ZXN0L2dtb2Nr
LXNwZWMtYnVpbGRlcnNfdGVzdAorY2hlY2tfUFJPR1JBTVMgKz0gdGVzdC9nbW9jay1zcGVjLWJ1
aWxkZXJzX3Rlc3QKK3Rlc3RfZ21vY2tfc3BlY19idWlsZGVyc190ZXN0X1NPVVJDRVMgPSB0ZXN0
L2dtb2NrLXNwZWMtYnVpbGRlcnNfdGVzdC5jYwordGVzdF9nbW9ja19zcGVjX2J1aWxkZXJzX3Rl
c3RfTERBREQgPSAkKEdURVNUX0xJQlMpIGxpYi9saWJnbW9jay5sYQorCisjIFRoaXMgdGVzdHMg
dXNpbmcgR29vZ2xlIE1vY2sgaW4gbXVsdGlwbGUgdHJhbnNsYXRpb24gdW5pdHMuICBJdCBhbHNv
CisjIHZlcmlmaWVzIHRoYXQgbGliZ21vY2tfbWFpbiBhbmQgbGliZ21vY2sgd29yay4KK1RFU1RT
ICs9IHRlc3QvZ21vY2tfbGlua190ZXN0CitjaGVja19QUk9HUkFNUyArPSB0ZXN0L2dtb2NrX2xp
bmtfdGVzdAordGVzdF9nbW9ja19saW5rX3Rlc3RfU09VUkNFUyA9IFwKKyAgdGVzdC9nbW9ja19s
aW5rMl90ZXN0LmNjIFwKKyAgdGVzdC9nbW9ja19saW5rX3Rlc3QuY2MgXAorICB0ZXN0L2dtb2Nr
X2xpbmtfdGVzdC5oCit0ZXN0X2dtb2NrX2xpbmtfdGVzdF9MREFERCA9ICQoR1RFU1RfTElCUykg
bGliL2xpYmdtb2NrX21haW4ubGEgIGxpYi9saWJnbW9jay5sYQorCitpZiBIQVZFX1BZVEhPTgor
ICAjIFRlc3RzIHRoYXQgZnVzZWQgZ21vY2sgZmlsZXMgY29tcGlsZSBhbmQgd29yay4KKyAgVEVT
VFMgKz0gdGVzdC9nbW9ja19mdXNlZF90ZXN0CisgIGNoZWNrX1BST0dSQU1TICs9IHRlc3QvZ21v
Y2tfZnVzZWRfdGVzdAorICB0ZXN0X2dtb2NrX2Z1c2VkX3Rlc3RfU09VUkNFUyA9IFwKKyAgICBm
dXNlZC1zcmMvZ21vY2stZ3Rlc3QtYWxsLmNjIFwKKyAgICBmdXNlZC1zcmMvZ21vY2svZ21vY2su
aCBcCisgICAgZnVzZWQtc3JjL2dtb2NrX21haW4uY2MgXAorICAgIGZ1c2VkLXNyYy9ndGVzdC9n
dGVzdC5oIFwKKyAgICB0ZXN0L2dtb2NrX3Rlc3QuY2MKKyAgdGVzdF9nbW9ja19mdXNlZF90ZXN0
X0NQUEZMQUdTID0gLUkiJChzcmNkaXIpL2Z1c2VkLXNyYyIKK2VuZGlmCisKKyMgR29vZ2xlIE1v
Y2sgc291cmNlIGZpbGVzIHRoYXQgd2UgZG9uJ3QgY29tcGlsZSBkaXJlY3RseS4KK0dNT0NLX1NP
VVJDRV9JTkdMVURFUyA9IFwKKyAgc3JjL2dtb2NrLWNhcmRpbmFsaXRpZXMuY2MgXAorICBzcmMv
Z21vY2staW50ZXJuYWwtdXRpbHMuY2MgXAorICBzcmMvZ21vY2stbWF0Y2hlcnMuY2MgXAorICBz
cmMvZ21vY2stc3BlYy1idWlsZGVycy5jYyBcCisgIHNyYy9nbW9jay5jYworCitFWFRSQV9ESVNU
ICs9ICQoR01PQ0tfU09VUkNFX0lOR0xVREVTKQorCisjIEMrKyB0ZXN0cyB0aGF0IHdlIGRvbid0
IGNvbXBpbGUgdXNpbmcgYXV0b3Rvb2xzLgorRVhUUkFfRElTVCArPSBcCisgIHRlc3QvZ21vY2st
YWN0aW9uc190ZXN0LmNjIFwKKyAgdGVzdC9nbW9ja19hbGxfdGVzdC5jYyBcCisgIHRlc3QvZ21v
Y2stY2FyZGluYWxpdGllc190ZXN0LmNjIFwKKyAgdGVzdC9nbW9ja19leF90ZXN0LmNjIFwKKyAg
dGVzdC9nbW9jay1nZW5lcmF0ZWQtYWN0aW9uc190ZXN0LmNjIFwKKyAgdGVzdC9nbW9jay1nZW5l
cmF0ZWQtZnVuY3Rpb24tbW9ja2Vyc190ZXN0LmNjIFwKKyAgdGVzdC9nbW9jay1nZW5lcmF0ZWQt
aW50ZXJuYWwtdXRpbHNfdGVzdC5jYyBcCisgIHRlc3QvZ21vY2stZ2VuZXJhdGVkLW1hdGNoZXJz
X3Rlc3QuY2MgXAorICB0ZXN0L2dtb2NrLWludGVybmFsLXV0aWxzX3Rlc3QuY2MgXAorICB0ZXN0
L2dtb2NrLW1hdGNoZXJzX3Rlc3QuY2MgXAorICB0ZXN0L2dtb2NrLW1vcmUtYWN0aW9uc190ZXN0
LmNjIFwKKyAgdGVzdC9nbW9jay1uaWNlLXN0cmljdF90ZXN0LmNjIFwKKyAgdGVzdC9nbW9jay1w
b3J0X3Rlc3QuY2MgXAorICB0ZXN0L2dtb2NrX3N0cmVzc190ZXN0LmNjCisKKyMgUHl0aG9uIHRl
c3RzLCB3aGljaCB3ZSBkb24ndCBydW4gdXNpbmcgYXV0b3Rvb2xzLgorRVhUUkFfRElTVCArPSBc
CisgIHRlc3QvZ21vY2tfbGVha190ZXN0LnB5IFwKKyAgdGVzdC9nbW9ja19sZWFrX3Rlc3RfLmNj
IFwKKyAgdGVzdC9nbW9ja19vdXRwdXRfdGVzdC5weSBcCisgIHRlc3QvZ21vY2tfb3V0cHV0X3Rl
c3RfLmNjIFwKKyAgdGVzdC9nbW9ja19vdXRwdXRfdGVzdF9nb2xkZW4udHh0IFwKKyAgdGVzdC9n
bW9ja190ZXN0X3V0aWxzLnB5CisKKyMgTm9uc3RhbmRhcmQgcGFja2FnZSBmaWxlcyBmb3IgZGlz
dHJpYnV0aW9uLgorRVhUUkFfRElTVCArPSBcCisgIENIQU5HRVMgXAorICBDT05UUklCVVRPUlMg
XAorICBtYWtlL01ha2VmaWxlCisKKyMgUHVtcCBzY3JpcHRzIGZvciBnZW5lcmF0aW5nIEdvb2ds
ZSBNb2NrIGhlYWRlcnMuCisjIFRPRE8oY2hhbmRsZXJjQGdvb2dsZS5jb20pOiBhdXRvbWF0ZSB0
aGUgZ2VuZXJhdGlvbiBvZiAqLmggZnJvbSAqLmgucHVtcC4KK0VYVFJBX0RJU1QgKz0gXAorICBp
bmNsdWRlL2dtb2NrL2dtb2NrLWdlbmVyYXRlZC1hY3Rpb25zLmgucHVtcCBcCisgIGluY2x1ZGUv
Z21vY2svZ21vY2stZ2VuZXJhdGVkLWZ1bmN0aW9uLW1vY2tlcnMuaC5wdW1wIFwKKyAgaW5jbHVk
ZS9nbW9jay9nbW9jay1nZW5lcmF0ZWQtbWF0Y2hlcnMuaC5wdW1wIFwKKyAgaW5jbHVkZS9nbW9j
ay9nbW9jay1nZW5lcmF0ZWQtbmljZS1zdHJpY3QuaC5wdW1wIFwKKyAgaW5jbHVkZS9nbW9jay9p
bnRlcm5hbC9nbW9jay1nZW5lcmF0ZWQtaW50ZXJuYWwtdXRpbHMuaC5wdW1wIFwKKyAgaW5jbHVk
ZS9nbW9jay9pbnRlcm5hbC9jdXN0b20vZ21vY2stZ2VuZXJhdGVkLWFjdGlvbnMuaC5wdW1wCisK
KyMgU2NyaXB0IGZvciBmdXNpbmcgR29vZ2xlIE1vY2sgYW5kIEdvb2dsZSBUZXN0IHNvdXJjZSBm
aWxlcy4KK0VYVFJBX0RJU1QgKz0gc2NyaXB0cy9mdXNlX2dtb2NrX2ZpbGVzLnB5CisKKyMgVGhl
IEdvb2dsZSBNb2NrIEdlbmVyYXRvciB0b29sIGZyb20gdGhlIGNwcGNsZWFuIHByb2plY3QuCitF
WFRSQV9ESVNUICs9IFwKKyAgc2NyaXB0cy9nZW5lcmF0b3IvTElDRU5TRSBcCisgIHNjcmlwdHMv
Z2VuZXJhdG9yL1JFQURNRSBcCisgIHNjcmlwdHMvZ2VuZXJhdG9yL1JFQURNRS5jcHBjbGVhbiBc
CisgIHNjcmlwdHMvZ2VuZXJhdG9yL2NwcC9fX2luaXRfXy5weSBcCisgIHNjcmlwdHMvZ2VuZXJh
dG9yL2NwcC9hc3QucHkgXAorICBzY3JpcHRzL2dlbmVyYXRvci9jcHAvZ21vY2tfY2xhc3MucHkg
XAorICBzY3JpcHRzL2dlbmVyYXRvci9jcHAva2V5d29yZHMucHkgXAorICBzY3JpcHRzL2dlbmVy
YXRvci9jcHAvdG9rZW5pemUucHkgXAorICBzY3JpcHRzL2dlbmVyYXRvci9jcHAvdXRpbHMucHkg
XAorICBzY3JpcHRzL2dlbmVyYXRvci9nbW9ja19nZW4ucHkKKworIyBTY3JpcHQgZm9yIGRpYWdu
b3NpbmcgY29tcGlsZXIgZXJyb3JzIGluIHByb2dyYW1zIHRoYXQgdXNlIEdvb2dsZQorIyBNb2Nr
LgorRVhUUkFfRElTVCArPSBzY3JpcHRzL2dtb2NrX2RvY3Rvci5weQorCisjIENNYWtlIHNjcmlw
dHMuCitFWFRSQV9ESVNUICs9IFwKKyAgQ01ha2VMaXN0cy50eHQKKworIyBNaWNyb3NvZnQgVmlz
dWFsIFN0dWRpbyAyMDA1IHByb2plY3RzLgorRVhUUkFfRElTVCArPSBcCisgIG1zdmMvMjAwNS9n
bW9jay5zbG4gXAorICBtc3ZjLzIwMDUvZ21vY2sudmNwcm9qIFwKKyAgbXN2Yy8yMDA1L2dtb2Nr
X2NvbmZpZy52c3Byb3BzIFwKKyAgbXN2Yy8yMDA1L2dtb2NrX21haW4udmNwcm9qIFwKKyAgbXN2
Yy8yMDA1L2dtb2NrX3Rlc3QudmNwcm9qCisKKyMgTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gMjAx
MCBwcm9qZWN0cy4KK0VYVFJBX0RJU1QgKz0gXAorICBtc3ZjLzIwMTAvZ21vY2suc2xuIFwKKyAg
bXN2Yy8yMDEwL2dtb2NrLnZjeHByb2ogXAorICBtc3ZjLzIwMTAvZ21vY2tfY29uZmlnLnByb3Bz
IFwKKyAgbXN2Yy8yMDEwL2dtb2NrX21haW4udmN4cHJvaiBcCisgIG1zdmMvMjAxMC9nbW9ja190
ZXN0LnZjeHByb2oKKworaWYgSEFWRV9QWVRIT04KKyMgZ21vY2tfdGVzdC5jYyBkb2VzIG5vdCBy
ZWFsbHkgZGVwZW5kIG9uIGZpbGVzIGdlbmVyYXRlZCBieSB0aGUKKyMgZnVzZWQtZ21vY2staW50
ZXJuYWwgcnVsZS4gIEhvd2V2ZXIsIGdtb2NrX3Rlc3QubyBkb2VzLCBhbmQgaXQgaXMKKyMgaW1w
b3J0YW50IHRvIGluY2x1ZGUgdGVzdC9nbW9ja190ZXN0LmNjIGFzIHBhcnQgb2YgdGhpcyBydWxl
IGluIG9yZGVyIHRvCisjIHByZXZlbnQgY29tcGlsaW5nIGdtb2NrX3Rlc3QubyB1bnRpbCBhbGwg
ZGVwZW5kZW50IGZpbGVzIGhhdmUgYmVlbgorIyBnZW5lcmF0ZWQuCiskKHRlc3RfZ21vY2tfZnVz
ZWRfdGVzdF9TT1VSQ0VTKTogZnVzZWQtZ21vY2staW50ZXJuYWwKKworIyBUT0RPKHZsYWRsQGdv
b2dsZS5jb20pOiBGaW5kIGEgd2F5IHRvIGFkZCBHb29nbGUgVGVzdHMncyBzb3VyY2VzIGhlcmUu
CitmdXNlZC1nbW9jay1pbnRlcm5hbDogJChwa2dpbmNsdWRlX0hFQURFUlMpICQocGtnaW5jbHVk
ZV9pbnRlcm5hbF9IRUFERVJTKSBcCisgICAgICAgICAgICAgICAgICAgICAgJChsaWJfbGliZ21v
Y2tfbGFfU09VUkNFUykgJChHTU9DS19TT1VSQ0VfSU5HTFVERVMpIFwKKyAgICAgICAgICAgICAg
ICAgICAgICAkKGxpYl9saWJnbW9ja19tYWluX2xhX1NPVVJDRVMpIFwKKyAgICAgICAgICAgICAg
ICAgICAgICBzY3JpcHRzL2Z1c2VfZ21vY2tfZmlsZXMucHkKKwlta2RpciAtcCAiJChzcmNkaXIp
L2Z1c2VkLXNyYyIKKwljaG1vZCAtUiB1K3cgIiQoc3JjZGlyKS9mdXNlZC1zcmMiCisJcm0gLWYg
IiQoc3JjZGlyKS9mdXNlZC1zcmMvZ3Rlc3QvZ3Rlc3QuaCIKKwlybSAtZiAiJChzcmNkaXIpL2Z1
c2VkLXNyYy9nbW9jay9nbW9jay5oIgorCXJtIC1mICIkKHNyY2RpcikvZnVzZWQtc3JjL2dtb2Nr
LWd0ZXN0LWFsbC5jYyIKKwkiJChzcmNkaXIpL3NjcmlwdHMvZnVzZV9nbW9ja19maWxlcy5weSIg
IiQoc3JjZGlyKS9mdXNlZC1zcmMiCisJY3AgLWYgIiQoc3JjZGlyKS9zcmMvZ21vY2tfbWFpbi5j
YyIgIiQoc3JjZGlyKS9mdXNlZC1zcmMiCisKK21haW50YWluZXItY2xlYW4tbG9jYWw6CisJcm0g
LXJmICIkKHNyY2RpcikvZnVzZWQtc3JjIgorZW5kaWYKKworIyBEZWF0aCB0ZXN0cyBtYXkgcHJv
ZHVjZSBjb3JlIGR1bXBzIGluIHRoZSBidWlsZCBkaXJlY3RvcnkuIEluIGNhc2UKKyMgdGhpcyBo
YXBwZW5zLCBjbGVhbiB0aGVtIHRvIGtlZXAgZGlzdGNsZWFuY2hlY2sgaGFwcHkuCitDTEVBTkZJ
TEVTID0gY29yZQorCisjIERpc2FibGVzICdtYWtlIGluc3RhbGwnIGFzIGluc3RhbGxpbmcgYSBj
b21waWxlZCB2ZXJzaW9uIG9mIEdvb2dsZQorIyBNb2NrIGNhbiBsZWFkIHRvIHVuZGVmaW5lZCBi
ZWhhdmlvciBkdWUgdG8gdmlvbGF0aW9uIG9mIHRoZQorIyBPbmUtRGVmaW5pdGlvbiBSdWxlLgor
CitpbnN0YWxsLWV4ZWMtbG9jYWw6CisJZWNobyAiJ21ha2UgaW5zdGFsbCcgaXMgZGFuZ2Vyb3Vz
IGFuZCBub3Qgc3VwcG9ydGVkLiBJbnN0ZWFkLCBzZWUgUkVBRE1FIGZvciBob3cgdG8gaW50ZWdy
YXRlIEdvb2dsZSBNb2NrIGludG8geW91ciBidWlsZCBzeXN0ZW0uIgorCWZhbHNlCisKK2luc3Rh
bGwtZGF0YS1sb2NhbDoKKwllY2hvICInbWFrZSBpbnN0YWxsJyBpcyBkYW5nZXJvdXMgYW5kIG5v
dCBzdXBwb3J0ZWQuIEluc3RlYWQsIHNlZSBSRUFETUUgZm9yIGhvdyB0byBpbnRlZ3JhdGUgR29v
Z2xlIE1vY2sgaW50byB5b3VyIGJ1aWxkIHN5c3RlbS4iCisJZmFsc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGVtb2NrL1JFQURNRS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL1JFQURNRS5tZApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
YjEzYTZkMzU3ZTMxMmRlZWI3ZTk1OTc4NjAwMDk1YTYxODEzOGJiCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZW1vY2svUkVBRE1FLm1kCkBAIC0wLDAgKzEsMzQzIEBACisjIyBHb29nbGUgTW9j
ayAjIworCitUaGUgR29vZ2xlIEMrKyBtb2NraW5nIGZyYW1ld29yay4KKworIyMjIE92ZXJ2aWV3
ICMjIworCitHb29nbGUncyBmcmFtZXdvcmsgZm9yIHdyaXRpbmcgYW5kIHVzaW5nIEMrKyBtb2Nr
IGNsYXNzZXMuCitJdCBjYW4gaGVscCB5b3UgZGVyaXZlIGJldHRlciBkZXNpZ25zIG9mIHlvdXIg
c3lzdGVtIGFuZCB3cml0ZSBiZXR0ZXIgdGVzdHMuCisKK0l0IGlzIGluc3BpcmVkIGJ5OgorCisg
ICogW2pNb2NrXShodHRwOi8vd3d3Lmptb2NrLm9yZy8pLAorICAqIFtFYXN5TW9ja10oaHR0cDov
L3d3dy5lYXN5bW9jay5vcmcvKSwgYW5kCisgICogW0hhbWNyZXN0XShodHRwOi8vY29kZS5nb29n
bGUuY29tL3AvaGFtY3Jlc3QvKSwKKworYW5kIGRlc2lnbmVkIHdpdGggQysrJ3Mgc3BlY2lmaWNz
IGluIG1pbmQuCisKK0dvb2dsZSBtb2NrOgorCisgICogbGV0cyB5b3UgY3JlYXRlIG1vY2sgY2xh
c3NlcyB0cml2aWFsbHkgdXNpbmcgc2ltcGxlIG1hY3Jvcy4KKyAgKiBzdXBwb3J0cyBhIHJpY2gg
c2V0IG9mIG1hdGNoZXJzIGFuZCBhY3Rpb25zLgorICAqIGhhbmRsZXMgdW5vcmRlcmVkLCBwYXJ0
aWFsbHkgb3JkZXJlZCwgb3IgY29tcGxldGVseSBvcmRlcmVkIGV4cGVjdGF0aW9ucy4KKyAgKiBp
cyBleHRlbnNpYmxlIGJ5IHVzZXJzLgorCitXZSBob3BlIHlvdSBmaW5kIGl0IHVzZWZ1bCEKKwor
IyMjIEZlYXR1cmVzICMjIworCisgICogUHJvdmlkZXMgYSBkZWNsYXJhdGl2ZSBzeW50YXggZm9y
IGRlZmluaW5nIG1vY2tzLgorICAqIENhbiBlYXNpbHkgZGVmaW5lIHBhcnRpYWwgKGh5YnJpZCkg
bW9ja3MsIHdoaWNoIGFyZSBhIGNyb3NzIG9mIHJlYWwKKyAgICBhbmQgbW9jayBvYmplY3RzLgor
ICAqIEhhbmRsZXMgZnVuY3Rpb25zIG9mIGFyYml0cmFyeSB0eXBlcyBhbmQgb3ZlcmxvYWRlZCBm
dW5jdGlvbnMuCisgICogQ29tZXMgd2l0aCBhIHJpY2ggc2V0IG9mIG1hdGNoZXJzIGZvciB2YWxp
ZGF0aW5nIGZ1bmN0aW9uIGFyZ3VtZW50cy4KKyAgKiBVc2VzIGFuIGludHVpdGl2ZSBzeW50YXgg
Zm9yIGNvbnRyb2xsaW5nIHRoZSBiZWhhdmlvciBvZiBhIG1vY2suCisgICogRG9lcyBhdXRvbWF0
aWMgdmVyaWZpY2F0aW9uIG9mIGV4cGVjdGF0aW9ucyAobm8gcmVjb3JkLWFuZC1yZXBsYXkgbmVl
ZGVkKS4KKyAgKiBBbGxvd3MgYXJiaXRyYXJ5IChwYXJ0aWFsKSBvcmRlcmluZyBjb25zdHJhaW50
cyBvbgorICAgIGZ1bmN0aW9uIGNhbGxzIHRvIGJlIGV4cHJlc3NlZCwuCisgICogTGV0cyBhIHVz
ZXIgZXh0ZW5kIGl0IGJ5IGRlZmluaW5nIG5ldyBtYXRjaGVycyBhbmQgYWN0aW9ucy4KKyAgKiBE
b2VzIG5vdCB1c2UgZXhjZXB0aW9ucy4KKyAgKiBJcyBlYXN5IHRvIGxlYXJuIGFuZCB1c2UuCisK
K1BsZWFzZSBzZWUgdGhlIHByb2plY3QgcGFnZSBhYm92ZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBh
cyB3ZWxsIGFzIHRoZQorbWFpbGluZyBsaXN0IGZvciBxdWVzdGlvbnMsIGRpc2N1c3Npb25zLCBh
bmQgZGV2ZWxvcG1lbnQuICBUaGVyZSBpcworYWxzbyBhbiBJUkMgY2hhbm5lbCBvbiBPRlRDIChp
cmMub2Z0Yy5uZXQpICNndGVzdCBhdmFpbGFibGUuICBQbGVhc2UKK2pvaW4gdXMhCisKK1BsZWFz
ZSBub3RlIHRoYXQgY29kZSB1bmRlciBbc2NyaXB0cy9nZW5lcmF0b3JdKHNjcmlwdHMvZ2VuZXJh
dG9yLykgaXMKK2Zyb20gW2NwcGNsZWFuXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvY3BwY2xl
YW4vKSBhbmQgcmVsZWFzZWQgdW5kZXIKK3RoZSBBcGFjaGUgTGljZW5zZSwgd2hpY2ggaXMgZGlm
ZmVyZW50IGZyb20gR29vZ2xlIE1vY2sncyBsaWNlbnNlLgorCisjIyBHZXR0aW5nIFN0YXJ0ZWQg
IyMKKworSWYgeW91IGFyZSBuZXcgdG8gdGhlIHByb2plY3QsIHdlIHN1Z2dlc3QgdGhhdCB5b3Ug
cmVhZCB0aGUgdXNlcgorZG9jdW1lbnRhdGlvbiBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOgorCisg
ICogTGVhcm4gdGhlIFtiYXNpY3NdKC4uLy4uL21hc3Rlci9nb29nbGV0ZXN0L2RvY3MvUHJpbWVy
Lm1kKSBvZgorICAgIEdvb2dsZSBUZXN0LCBpZiB5b3UgY2hvb3NlIHRvIHVzZSBHb29nbGUgTW9j
ayB3aXRoIGl0IChyZWNvbW1lbmRlZCkuCisgICogUmVhZCBbR29vZ2xlIE1vY2sgZm9yIER1bW1p
ZXNdKC4uLy4uL21hc3Rlci9nb29nbGVtb2NrL2RvY3MvRm9yRHVtbWllcy5tZCkuCisgICogUmVh
ZCB0aGUgaW5zdHJ1Y3Rpb25zIGJlbG93IG9uIGhvdyB0byBidWlsZCBHb29nbGUgTW9jay4KKwor
WW91IGNhbiBhbHNvIHdhdGNoIFpoYW55b25nJ3MgW3RhbGtdKGh0dHA6Ly93d3cueW91dHViZS5j
b20vd2F0Y2g/dj1zWXBDeUxJNDdyTSkgb24gR29vZ2xlIE1vY2sncyB1c2FnZSBhbmQgaW1wbGVt
ZW50YXRpb24uCisKK09uY2UgeW91IHVuZGVyc3RhbmQgdGhlIGJhc2ljcywgY2hlY2sgb3V0IHRo
ZSByZXN0IG9mIHRoZSBkb2NzOgorCisgICogW0NoZWF0U2hlZXRdKC4uLy4uL21hc3Rlci9nb29n
bGVtb2NrL2RvY3MvQ2hlYXRTaGVldC5tZCkgLSBhbGwgdGhlIGNvbW1vbmx5IHVzZWQgc3R1ZmYK
KyAgICBhdCBhIGdsYW5jZS4KKyAgKiBbQ29va0Jvb2tdKC4uLy4uL21hc3Rlci9nb29nbGVtb2Nr
L2RvY3MvQ29va0Jvb2subWQpIC0gcmVjaXBlcyBmb3IgZ2V0dGluZyB0aGluZ3MgZG9uZSwKKyAg
ICBpbmNsdWRpbmcgYWR2YW5jZWQgdGVjaG5pcXVlcy4KKworSWYgeW91IG5lZWQgaGVscCwgcGxl
YXNlIGNoZWNrIHRoZQorW0tub3duSXNzdWVzXShkb2NzL0tub3duSXNzdWVzLm1kKSBhbmQKK1tG
cmVxdWVudGx5QXNrZWRRdWVzdGlvbnNdKGRvY3MvRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zLm1k
KSBiZWZvcmUKK3Bvc3RpbmcgYSBxdWVzdGlvbiBvbiB0aGUKK1tkaXNjdXNzaW9uIGdyb3VwXSho
dHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXAvZ29vZ2xlbW9jaykuCisKKworIyMjIFVzaW5n
IEdvb2dsZSBNb2NrIFdpdGhvdXQgR29vZ2xlIFRlc3QgIyMjCisKK0dvb2dsZSBNb2NrIGlzIG5v
dCBhIHRlc3RpbmcgZnJhbWV3b3JrIGl0c2VsZi4gIEluc3RlYWQsIGl0IG5lZWRzIGEKK3Rlc3Rp
bmcgZnJhbWV3b3JrIGZvciB3cml0aW5nIHRlc3RzLiAgR29vZ2xlIE1vY2sgd29ya3Mgc2VhbWxl
c3NseQord2l0aCBbR29vZ2xlIFRlc3RdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0
ZXN0LyksIGJ1dAoreW91IGNhbiBhbHNvIHVzZSBpdCB3aXRoIFthbnkgQysrIHRlc3RpbmcgZnJh
bWV3b3JrXSguLi8uLi9tYXN0ZXIvZ29vZ2xlbW9jay9kb2NzL0ZvckR1bW1pZXMubWQjdXNpbmct
Z29vZ2xlLW1vY2std2l0aC1hbnktdGVzdGluZy1mcmFtZXdvcmspLgorCisjIyMgUmVxdWlyZW1l
bnRzIGZvciBFbmQgVXNlcnMgIyMjCisKK0dvb2dsZSBNb2NrIGlzIGltcGxlbWVudGVkIG9uIHRv
cCBvZiBbR29vZ2xlIFRlc3RdKAoraHR0cDovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3Qv
KSwgYW5kIGRlcGVuZHMgb24gaXQuCitZb3UgbXVzdCB1c2UgdGhlIGJ1bmRsZWQgdmVyc2lvbiBv
ZiBHb29nbGUgVGVzdCB3aGVuIHVzaW5nIEdvb2dsZSBNb2NrLgorCitZb3UgY2FuIGFsc28gZWFz
aWx5IGNvbmZpZ3VyZSBHb29nbGUgTW9jayB0byB3b3JrIHdpdGggYW5vdGhlciB0ZXN0aW5nCitm
cmFtZXdvcmssIGFsdGhvdWdoIGl0IHdpbGwgc3RpbGwgbmVlZCBHb29nbGUgVGVzdC4gIFBsZWFz
ZSByZWFkCitbIlVzaW5nX0dvb2dsZV9Nb2NrX3dpdGhfQW55X1Rlc3RpbmdfRnJhbWV3b3JrIl0o
CisgICAgLi4vLi4vbWFzdGVyL2dvb2dsZW1vY2svZG9jcy9Gb3JEdW1taWVzLm1kI3VzaW5nLWdv
b2dsZS1tb2NrLXdpdGgtYW55LXRlc3RpbmctZnJhbWV3b3JrKQorZm9yIGluc3RydWN0aW9ucy4K
KworR29vZ2xlIE1vY2sgZGVwZW5kcyBvbiBhZHZhbmNlZCBDKysgZmVhdHVyZXMgYW5kIHRodXMg
cmVxdWlyZXMgYSBtb3JlCittb2Rlcm4gY29tcGlsZXIuIFRoZSBmb2xsb3dpbmcgYXJlIG5lZWRl
ZCB0byB1c2UgR29vZ2xlIE1vY2s6CisKKyMjIyMgTGludXggUmVxdWlyZW1lbnRzICMjIyMKKwor
ICAqIEdOVS1jb21wYXRpYmxlIE1ha2Ugb3IgImdtYWtlIgorICAqIFBPU0lYLXN0YW5kYXJkIHNo
ZWxsCisgICogUE9TSVgoLTIpIFJlZ3VsYXIgRXhwcmVzc2lvbnMgKHJlZ2V4LmgpCisgICogQysr
OTgtc3RhbmRhcmQtY29tcGxpYW50IGNvbXBpbGVyIChlLmcuIEdDQyAzLjQgb3IgbmV3ZXIpCisK
KyMjIyMgV2luZG93cyBSZXF1aXJlbWVudHMgIyMjIworCisgICogTWljcm9zb2Z0IFZpc3VhbCBD
KysgOC4wIFNQMSBvciBuZXdlcgorCisjIyMjIE1hYyBPUyBYIFJlcXVpcmVtZW50cyAjIyMjCisK
KyAgKiBNYWMgT1MgWCAxMC40IFRpZ2VyIG9yIG5ld2VyCisgICogRGV2ZWxvcGVyIFRvb2xzIElu
c3RhbGxlZAorCisjIyMgUmVxdWlyZW1lbnRzIGZvciBDb250cmlidXRvcnMgIyMjCisKK1dlIHdl
bGNvbWUgcGF0Y2hlcy4gSWYgeW91IHBsYW4gdG8gY29udHJpYnV0ZSBhIHBhdGNoLCB5b3UgbmVl
ZCB0bworYnVpbGQgR29vZ2xlIE1vY2sgYW5kIGl0cyB0ZXN0cywgd2hpY2ggaGFzIGZ1cnRoZXIg
cmVxdWlyZW1lbnRzOgorCisgICogQXV0b21ha2UgdmVyc2lvbiAxLjkgb3IgbmV3ZXIKKyAgKiBB
dXRvY29uZiB2ZXJzaW9uIDIuNTkgb3IgbmV3ZXIKKyAgKiBMaWJ0b29sIC8gTGlidG9vbGl6ZQor
ICAqIFB5dGhvbiB2ZXJzaW9uIDIuMyBvciBuZXdlciAoZm9yIHJ1bm5pbmcgc29tZSBvZiB0aGUg
dGVzdHMgYW5kCisgICAgcmUtZ2VuZXJhdGluZyBjZXJ0YWluIHNvdXJjZSBmaWxlcyBmcm9tIHRl
bXBsYXRlcykKKworIyMjIEJ1aWxkaW5nIEdvb2dsZSBNb2NrICMjIworCitJZiB5b3UgaGF2ZSBD
TWFrZSBhdmFpbGFibGUsIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IGZvbGxvdyB0aGUKK1ti
dWlsZCBpbnN0cnVjdGlvbnNdW2d0ZXN0X2NtYWtlYnVpbGRdCithcyBkZXNjcmliZWQgZm9yIEdv
b2dsZSBUZXN0LiBJZiBhcmUgdXNpbmcgR29vZ2xlIE1vY2sgd2l0aCBhbgorZXhpc3RpbmcgQ01h
a2UgcHJvamVjdCwgdGhlIHNlY3Rpb24KK1tJbmNvcnBvcmF0aW5nIEludG8gQW4gRXhpc3Rpbmcg
Q01ha2UgUHJvamVjdF1bZ3Rlc3RfaW5jb3JwY21ha2VdCittYXkgYmUgb2YgcGFydGljdWxhciBp
bnRlcmVzdC4gT3RoZXJ3aXNlLCB0aGUgZm9sbG93aW5nIHNlY3Rpb25zCitkZXRhaWwgaG93IHRv
IGJ1aWxkIEdvb2dsZSBNb2NrIHdpdGhvdXQgQ01ha2UuCisKKyMjIyMgUHJlcGFyaW5nIHRvIEJ1
aWxkIChVbml4IG9ubHkpICMjIyMKKworSWYgeW91IGFyZSB1c2luZyBhIFVuaXggc3lzdGVtIGFu
ZCBwbGFuIHRvIHVzZSB0aGUgR05VIEF1dG90b29scyBidWlsZAorc3lzdGVtIHRvIGJ1aWxkIEdv
b2dsZSBNb2NrIChkZXNjcmliZWQgYmVsb3cpLCB5b3UnbGwgbmVlZCB0bworY29uZmlndXJlIGl0
IG5vdy4KKworVG8gcHJlcGFyZSB0aGUgQXV0b3Rvb2xzIGJ1aWxkIHN5c3RlbToKKworICAgIGNk
IGdvb2dsZW1vY2sKKyAgICBhdXRvcmVjb25mIC1mdmkKKworVG8gYnVpbGQgR29vZ2xlIE1vY2sg
YW5kIHlvdXIgdGVzdHMgdGhhdCB1c2UgaXQsIHlvdSBuZWVkIHRvIHRlbGwgeW91cgorYnVpbGQg
c3lzdGVtIHdoZXJlIHRvIGZpbmQgaXRzIGhlYWRlcnMgYW5kIHNvdXJjZSBmaWxlcy4gIFRoZSBl
eGFjdAord2F5IHRvIGRvIGl0IGRlcGVuZHMgb24gd2hpY2ggYnVpbGQgc3lzdGVtIHlvdSB1c2Us
IGFuZCBpcyB1c3VhbGx5CitzdHJhaWdodGZvcndhcmQuCisKK1RoaXMgc2VjdGlvbiBzaG93cyBo
b3cgeW91IGNhbiBpbnRlZ3JhdGUgR29vZ2xlIE1vY2sgaW50byB5b3VyCitleGlzdGluZyBidWls
ZCBzeXN0ZW0uCisKK1N1cHBvc2UgeW91IHB1dCBHb29nbGUgTW9jayBpbiBkaXJlY3RvcnkgYCR7
R01PQ0tfRElSfWAgYW5kIEdvb2dsZSBUZXN0CitpbiBgJHtHVEVTVF9ESVJ9YCAodGhlIGxhdHRl
ciBpcyBgJHtHTU9DS19ESVJ9L2d0ZXN0YCBieSBkZWZhdWx0KS4gIFRvCitidWlsZCBHb29nbGUg
TW9jaywgY3JlYXRlIGEgbGlicmFyeSBidWlsZCB0YXJnZXQgKG9yIGEgcHJvamVjdCBhcworY2Fs
bGVkIGJ5IFZpc3VhbCBTdHVkaW8gYW5kIFhjb2RlKSB0byBjb21waWxlCisKKyAgICAke0dURVNU
X0RJUn0vc3JjL2d0ZXN0LWFsbC5jYyBhbmQgJHtHTU9DS19ESVJ9L3NyYy9nbW9jay1hbGwuY2MK
Kword2l0aAorCisgICAgJHtHVEVTVF9ESVJ9L2luY2x1ZGUgYW5kICR7R01PQ0tfRElSfS9pbmNs
dWRlCisKK2luIHRoZSBzeXN0ZW0gaGVhZGVyIHNlYXJjaCBwYXRoLCBhbmQKKworICAgICR7R1RF
U1RfRElSfSBhbmQgJHtHTU9DS19ESVJ9CisKK2luIHRoZSBub3JtYWwgaGVhZGVyIHNlYXJjaCBw
YXRoLiAgQXNzdW1pbmcgYSBMaW51eC1saWtlIHN5c3RlbSBhbmQgZ2NjLAorc29tZXRoaW5nIGxp
a2UgdGhlIGZvbGxvd2luZyB3aWxsIGRvOgorCisgICAgZysrIC1pc3lzdGVtICR7R1RFU1RfRElS
fS9pbmNsdWRlIC1JJHtHVEVTVF9ESVJ9IFwKKyAgICAgICAgLWlzeXN0ZW0gJHtHTU9DS19ESVJ9
L2luY2x1ZGUgLUkke0dNT0NLX0RJUn0gXAorICAgICAgICAtcHRocmVhZCAtYyAke0dURVNUX0RJ
Un0vc3JjL2d0ZXN0LWFsbC5jYworICAgIGcrKyAtaXN5c3RlbSAke0dURVNUX0RJUn0vaW5jbHVk
ZSAtSSR7R1RFU1RfRElSfSBcCisgICAgICAgIC1pc3lzdGVtICR7R01PQ0tfRElSfS9pbmNsdWRl
IC1JJHtHTU9DS19ESVJ9IFwKKyAgICAgICAgLXB0aHJlYWQgLWMgJHtHTU9DS19ESVJ9L3NyYy9n
bW9jay1hbGwuY2MKKyAgICBhciAtcnYgbGliZ21vY2suYSBndGVzdC1hbGwubyBnbW9jay1hbGwu
bworCisoV2UgbmVlZCAtcHRocmVhZCBhcyBHb29nbGUgVGVzdCBhbmQgR29vZ2xlIE1vY2sgdXNl
IHRocmVhZHMuKQorCitOZXh0LCB5b3Ugc2hvdWxkIGNvbXBpbGUgeW91ciB0ZXN0IHNvdXJjZSBm
aWxlIHdpdGgKKyR7R1RFU1RcX0RJUn0vaW5jbHVkZSBhbmQgJHtHTU9DS1xfRElSfS9pbmNsdWRl
IGluIHRoZSBoZWFkZXIgc2VhcmNoCitwYXRoLCBhbmQgbGluayBpdCB3aXRoIGdtb2NrIGFuZCBh
bnkgb3RoZXIgbmVjZXNzYXJ5IGxpYnJhcmllczoKKworICAgIGcrKyAtaXN5c3RlbSAke0dURVNU
X0RJUn0vaW5jbHVkZSAtaXN5c3RlbSAke0dNT0NLX0RJUn0vaW5jbHVkZSBcCisgICAgICAgIC1w
dGhyZWFkIHBhdGgvdG8veW91cl90ZXN0LmNjIGxpYmdtb2NrLmEgLW8geW91cl90ZXN0CisKK0Fz
IGFuIGV4YW1wbGUsIHRoZSBtYWtlLyBkaXJlY3RvcnkgY29udGFpbnMgYSBNYWtlZmlsZSB0aGF0
IHlvdSBjYW4KK3VzZSB0byBidWlsZCBHb29nbGUgTW9jayBvbiBzeXN0ZW1zIHdoZXJlIEdOVSBt
YWtlIGlzIGF2YWlsYWJsZQorKGUuZy4gTGludXgsIE1hYyBPUyBYLCBhbmQgQ3lnd2luKS4gIEl0
IGRvZXNuJ3QgdHJ5IHRvIGJ1aWxkIEdvb2dsZQorTW9jaydzIG93biB0ZXN0cy4gIEluc3RlYWQs
IGl0IGp1c3QgYnVpbGRzIHRoZSBHb29nbGUgTW9jayBsaWJyYXJ5IGFuZAorYSBzYW1wbGUgdGVz
dC4gIFlvdSBjYW4gdXNlIGl0IGFzIGEgc3RhcnRpbmcgcG9pbnQgZm9yIHlvdXIgb3duIGJ1aWxk
CitzY3JpcHQuCisKK0lmIHRoZSBkZWZhdWx0IHNldHRpbmdzIGFyZSBjb3JyZWN0IGZvciB5b3Vy
IGVudmlyb25tZW50LCB0aGUKK2ZvbGxvd2luZyBjb21tYW5kcyBzaG91bGQgc3VjY2VlZDoKKwor
ICAgIGNkICR7R01PQ0tfRElSfS9tYWtlCisgICAgbWFrZQorICAgIC4vZ21vY2tfdGVzdAorCitJ
ZiB5b3Ugc2VlIGVycm9ycywgdHJ5IHRvIHR3ZWFrIHRoZSBjb250ZW50cyBvZgorW21ha2UvTWFr
ZWZpbGVdKG1ha2UvTWFrZWZpbGUpIHRvIG1ha2UgdGhlbSBnbyBhd2F5LgorCisjIyMgV2luZG93
cyAjIyMKKworVGhlIG1zdmMvMjAwNSBkaXJlY3RvcnkgY29udGFpbnMgVkMrKyAyMDA1IHByb2pl
Y3RzIGFuZCB0aGUgbXN2Yy8yMDEwCitkaXJlY3RvcnkgY29udGFpbnMgVkMrKyAyMDEwIHByb2pl
Y3RzIGZvciBidWlsZGluZyBHb29nbGUgTW9jayBhbmQKK3NlbGVjdGVkIHRlc3RzLgorCitDaGFu
Z2UgdG8gdGhlIGFwcHJvcHJpYXRlIGRpcmVjdG9yeSBhbmQgcnVuICJtc2J1aWxkIGdtb2NrLnNs
biIgdG8KK2J1aWxkIHRoZSBsaWJyYXJ5IGFuZCB0ZXN0cyAob3Igb3BlbiB0aGUgZ21vY2suc2xu
IGluIHRoZSBNU1ZDIElERSkuCitJZiB5b3Ugd2FudCB0byBjcmVhdGUgeW91ciBvd24gcHJvamVj
dCB0byB1c2Ugd2l0aCBHb29nbGUgTW9jaywgeW91J2xsCitoYXZlIHRvIGNvbmZpZ3VyZSBpdCB0
byB1c2UgdGhlIGBnbW9ja19jb25maWdgIHByb3BldHkgc2hlZXQuICBGb3IgdGhhdDoKKworICog
T3BlbiB0aGUgUHJvcGVydHkgTWFuYWdlciB3aW5kb3cgKFZpZXcgfCBPdGhlciBXaW5kb3dzIHwg
UHJvcGVydHkgTWFuYWdlcikKKyAqIFJpZ2h0LWNsaWNrIG9uIHlvdXIgcHJvamVjdCBhbmQgc2Vs
ZWN0ICJBZGQgRXhpc3RpbmcgUHJvcGVydHkgU2hlZXQuLi4iCisgKiBOYXZpZ2F0ZSB0byBgZ21v
Y2tfY29uZmlnLnZzcHJvcHNgIG9yIGBnbW9ja19jb25maWcucHJvcHNgIGFuZCBzZWxlY3QgaXQu
CisgKiBJbiBQcm9qZWN0IFByb3BlcnRpZXMgfCBDb25maWd1cmF0aW9uIFByb3BlcnRpZXMgfCBH
ZW5lcmFsIHwgQWRkaXRpb25hbAorICAgSW5jbHVkZSBEaXJlY3RvcmllcywgdHlwZSA8cGF0aCB0
byBHb29nbGUgTW9jaz4vaW5jbHVkZS4KKworIyMjIFR3ZWFraW5nIEdvb2dsZSBNb2NrICMjIwor
CitHb29nbGUgTW9jayBjYW4gYmUgdXNlZCBpbiBkaXZlcnNlIGVudmlyb25tZW50cy4gIFRoZSBk
ZWZhdWx0Citjb25maWd1cmF0aW9uIG1heSBub3Qgd29yayAob3IgbWF5IG5vdCB3b3JrIHdlbGwp
IG91dCBvZiB0aGUgYm94IGluCitzb21lIGVudmlyb25tZW50cy4gIEhvd2V2ZXIsIHlvdSBjYW4g
ZWFzaWx5IHR3ZWFrIEdvb2dsZSBNb2NrIGJ5CitkZWZpbmluZyBjb250cm9sIG1hY3JvcyBvbiB0
aGUgY29tcGlsZXIgY29tbWFuZCBsaW5lLiAgR2VuZXJhbGx5LAordGhlc2UgbWFjcm9zIGFyZSBu
YW1lZCBsaWtlIGBHVEVTVF9YWVpgIGFuZCB5b3UgZGVmaW5lIHRoZW0gdG8gZWl0aGVyIDEKK29y
IDAgdG8gZW5hYmxlIG9yIGRpc2FibGUgYSBjZXJ0YWluIGZlYXR1cmUuCisKK1dlIGxpc3QgdGhl
IG1vc3QgZnJlcXVlbnRseSB1c2VkIG1hY3JvcyBiZWxvdy4gIEZvciBhIGNvbXBsZXRlIGxpc3Qs
CitzZWUgZmlsZSBbJHtHVEVTVFxfRElSfS9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBv
cnQuaF0oCisuLi9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5o
KS4KKworIyMjIENob29zaW5nIGEgVFIxIFR1cGxlIExpYnJhcnkgIyMjCisKK0dvb2dsZSBNb2Nr
IHVzZXMgdGhlIEMrKyBUZWNobmljYWwgUmVwb3J0IDEgKFRSMSkgdHVwbGUgbGlicmFyeQoraGVh
dmlseS4gIFVuZm9ydHVuYXRlbHkgVFIxIHR1cGxlIGlzIG5vdCB5ZXQgd2lkZWx5IGF2YWlsYWJs
ZSB3aXRoIGFsbAorY29tcGlsZXJzLiAgVGhlIGdvb2QgbmV3cyBpcyB0aGF0IEdvb2dsZSBUZXN0
IDEuNC4wKyBpbXBsZW1lbnRzIGEKK3N1YnNldCBvZiBUUjEgdHVwbGUgdGhhdCdzIGVub3VnaCBm
b3IgR29vZ2xlIE1vY2sncyBuZWVkLiAgR29vZ2xlIE1vY2sKK3dpbGwgYXV0b21hdGljYWxseSB1
c2UgdGhhdCBpbXBsZW1lbnRhdGlvbiB3aGVuIHRoZSBjb21waWxlciBkb2Vzbid0Citwcm92aWRl
IFRSMSB0dXBsZS4KKworVXN1YWxseSB5b3UgZG9uJ3QgbmVlZCB0byBjYXJlIGFib3V0IHdoaWNo
IHR1cGxlIGxpYnJhcnkgR29vZ2xlIFRlc3QKK2FuZCBHb29nbGUgTW9jayB1c2UuICBIb3dldmVy
LCBpZiB5b3VyIHByb2plY3QgYWxyZWFkeSB1c2VzIFRSMSB0dXBsZSwKK3lvdSBuZWVkIHRvIHRl
bGwgR29vZ2xlIFRlc3QgYW5kIEdvb2dsZSBNb2NrIHRvIHVzZSB0aGUgc2FtZSBUUjEgdHVwbGUK
K2xpYnJhcnkgdGhlIHJlc3Qgb2YgeW91ciBwcm9qZWN0IHVzZXMsIG9yIHRoZSB0d28gdHVwbGUK
K2ltcGxlbWVudGF0aW9ucyB3aWxsIGNsYXNoLiAgVG8gZG8gdGhhdCwgYWRkCisKKyAgICAtREdU
RVNUX1VTRV9PV05fVFIxX1RVUExFPTAKKwordG8gdGhlIGNvbXBpbGVyIGZsYWdzIHdoaWxlIGNv
bXBpbGluZyBHb29nbGUgVGVzdCwgR29vZ2xlIE1vY2ssIGFuZAoreW91ciB0ZXN0cy4gIElmIHlv
dSB3YW50IHRvIGZvcmNlIEdvb2dsZSBUZXN0IGFuZCBHb29nbGUgTW9jayB0byB1c2UKK3RoZWly
IG93biB0dXBsZSBsaWJyYXJ5LCBqdXN0IGFkZAorCisgICAgLURHVEVTVF9VU0VfT1dOX1RSMV9U
VVBMRT0xCisKK3RvIHRoZSBjb21waWxlciBmbGFncyBpbnN0ZWFkLgorCitJZiB5b3Ugd2FudCB0
byB1c2UgQm9vc3QncyBUUjEgdHVwbGUgbGlicmFyeSB3aXRoIEdvb2dsZSBNb2NrLCBwbGVhc2UK
K3JlZmVyIHRvIHRoZSBCb29zdCB3ZWJzaXRlIChodHRwOi8vd3d3LmJvb3N0Lm9yZy8pIGZvciBo
b3cgdG8gb2J0YWluCitpdCBhbmQgc2V0IGl0IHVwLgorCisjIyMgQXMgYSBTaGFyZWQgTGlicmFy
eSAoRExMKSAjIyMKKworR29vZ2xlIE1vY2sgaXMgY29tcGFjdCwgc28gbW9zdCB1c2VycyBjYW4g
YnVpbGQgYW5kIGxpbmsgaXQgYXMgYSBzdGF0aWMKK2xpYnJhcnkgZm9yIHRoZSBzaW1wbGljaXR5
LiAgR29vZ2xlIE1vY2sgY2FuIGJlIHVzZWQgYXMgYSBETEwsIGJ1dCB0aGUKK3NhbWUgRExMIG11
c3QgY29udGFpbiBHb29nbGUgVGVzdCBhcyB3ZWxsLiAgU2VlCitbR29vZ2xlIFRlc3QncyBSRUFE
TUVdW2d0ZXN0X3JlYWRtZV0KK2ZvciBpbnN0cnVjdGlvbnMgb24gaG93IHRvIHNldCB1cCBuZWNl
c3NhcnkgY29tcGlsZXIgc2V0dGluZ3MuCisKKyMjIyBUd2Vha2luZyBHb29nbGUgTW9jayAjIyMK
KworTW9zdCBvZiBHb29nbGUgVGVzdCdzIGNvbnRyb2wgbWFjcm9zIGFwcGx5IHRvIEdvb2dsZSBN
b2NrIGFzIHdlbGwuCitQbGVhc2Ugc2VlIFtHb29nbGUgVGVzdCdzIFJFQURNRV1bZ3Rlc3RfcmVh
ZG1lXSBmb3IgaG93IHRvIHR3ZWFrIHRoZW0uCisKKyMjIyBVcGdyYWRpbmcgZnJvbSBhbiBFYXJs
aWVyIFZlcnNpb24gIyMjCisKK1dlIHN0cml2ZSB0byBrZWVwIEdvb2dsZSBNb2NrIHJlbGVhc2Vz
IGJhY2t3YXJkIGNvbXBhdGlibGUuCitTb21ldGltZXMsIHRob3VnaCwgd2UgaGF2ZSB0byBtYWtl
IHNvbWUgYnJlYWtpbmcgY2hhbmdlcyBmb3IgdGhlCit1c2VycycgbG9uZy10ZXJtIGJlbmVmaXRz
LiAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyB3aGF0IHlvdSdsbCBuZWVkIHRvCitkbyBpZiB5b3Ug
YXJlIHVwZ3JhZGluZyBmcm9tIGFuIGVhcmxpZXIgdmVyc2lvbiBvZiBHb29nbGUgTW9jay4KKwor
IyMjIyBVcGdyYWRpbmcgZnJvbSAxLjEuMCBvciBFYXJsaWVyICMjIyMKKworWW91IG1heSBuZWVk
IHRvIGV4cGxpY2l0bHkgZW5hYmxlIG9yIGRpc2FibGUgR29vZ2xlIFRlc3QncyBvd24gVFIxCit0
dXBsZSBsaWJyYXJ5LiAgU2VlIHRoZSBpbnN0cnVjdGlvbnMgaW4gc2VjdGlvbiAiW0Nob29zaW5n
IGEgVFIxIFR1cGxlCitMaWJyYXJ5XSguLi9nb29nbGV0ZXN0LyNjaG9vc2luZy1hLXRyMS10dXBs
ZS1saWJyYXJ5KSIuCisKKyMjIyMgVXBncmFkaW5nIGZyb20gMS40LjAgb3IgRWFybGllciAjIyMj
CisKK09uIHBsYXRmb3JtcyB3aGVyZSB0aGUgcHRocmVhZCBsaWJyYXJ5IGlzIGF2YWlsYWJsZSwg
R29vZ2xlIFRlc3QgYW5kCitHb29nbGUgTW9jayB1c2UgaXQgaW4gb3JkZXIgdG8gYmUgdGhyZWFk
LXNhZmUuICBGb3IgdGhpcyB0byB3b3JrLCB5b3UKK21heSBuZWVkIHRvIHR3ZWFrIHlvdXIgY29t
cGlsZXIgYW5kL29yIGxpbmtlciBmbGFncy4gIFBsZWFzZSBzZWUgdGhlCisiW011bHRpLXRocmVh
ZGVkIFRlc3RzXSguLi9nb29nbGV0ZXN0I211bHRpLXRocmVhZGVkLXRlc3RzCispIiBzZWN0aW9u
IGluIGZpbGUgR29vZ2xlIFRlc3QncyBSRUFETUUgZm9yIHdoYXQgeW91IG1heSBuZWVkIHRvIGRv
LgorCitJZiB5b3UgaGF2ZSBjdXN0b20gbWF0Y2hlcnMgZGVmaW5lZCB1c2luZyBgTWF0Y2hlcklu
dGVyZmFjZWAgb3IKK2BNYWtlUG9seW1vcnBoaWNNYXRjaGVyKClgLCB5b3UnbGwgbmVlZCB0byB1
cGRhdGUgdGhlaXIgZGVmaW5pdGlvbnMgdG8KK3VzZSB0aGUgbmV3IG1hdGNoZXIgQVBJICgKK1tt
b25vbW9ycGhpY10oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZW1vY2svd2lraS9Db29r
Qm9vayNXcml0aW5nX05ld19Nb25vbW9ycGhpY19NYXRjaGVycyksCitbcG9seW1vcnBoaWNdKGh0
dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGVtb2NrL3dpa2kvQ29va0Jvb2sjV3JpdGluZ19O
ZXdfUG9seW1vcnBoaWNfTWF0Y2hlcnMpKS4KK01hdGNoZXJzIGRlZmluZWQgdXNpbmcgYE1BVENI
RVIoKWAgb3IgYE1BVENIRVJfUCooKWAgYXJlbid0IGFmZmVjdGVkLgorCisjIyMgRGV2ZWxvcGlu
ZyBHb29nbGUgTW9jayAjIyMKKworVGhpcyBzZWN0aW9uIGRpc2N1c3NlcyBob3cgdG8gbWFrZSB5
b3VyIG93biBjaGFuZ2VzIHRvIEdvb2dsZSBNb2NrLgorCisjIyMjIFRlc3RpbmcgR29vZ2xlIE1v
Y2sgSXRzZWxmICMjIyMKKworVG8gbWFrZSBzdXJlIHlvdXIgY2hhbmdlcyB3b3JrIGFzIGludGVu
ZGVkIGFuZCBkb24ndCBicmVhayBleGlzdGluZworZnVuY3Rpb25hbGl0eSwgeW91J2xsIHdhbnQg
dG8gY29tcGlsZSBhbmQgcnVuIEdvb2dsZSBUZXN0J3Mgb3duIHRlc3RzLgorRm9yIHRoYXQgeW91
J2xsIG5lZWQgQXV0b3Rvb2xzLiAgRmlyc3QsIG1ha2Ugc3VyZSB5b3UgaGF2ZSBmb2xsb3dlZAor
dGhlIGluc3RydWN0aW9ucyBhYm92ZSB0byBjb25maWd1cmUgR29vZ2xlIE1vY2suCitUaGVuLCBj
cmVhdGUgYSBidWlsZCBvdXRwdXQgZGlyZWN0b3J5IGFuZCBlbnRlciBpdC4gIE5leHQsCisKKyAg
ICAke0dNT0NLX0RJUn0vY29uZmlndXJlICAjIHRyeSAtLWhlbHAgZm9yIG1vcmUgaW5mbworCitP
bmNlIHlvdSBoYXZlIHN1Y2Nlc3NmdWxseSBjb25maWd1cmVkIEdvb2dsZSBNb2NrLCB0aGUgYnVp
bGQgc3RlcHMgYXJlCitzdGFuZGFyZCBmb3IgR05VLXN0eWxlIE9TUyBwYWNrYWdlcy4KKworICAg
IG1ha2UgICAgICAgICMgU3RhbmRhcmQgbWFrZWZpbGUgZm9sbG93aW5nIEdOVSBjb252ZW50aW9u
cworICAgIG1ha2UgY2hlY2sgICMgQnVpbGRzIGFuZCBydW5zIGFsbCB0ZXN0cyAtIGFsbCBzaG91
bGQgcGFzcy4KKworTm90ZSB0aGF0IHdoZW4gYnVpbGRpbmcgeW91ciBwcm9qZWN0IGFnYWluc3Qg
R29vZ2xlIE1vY2ssIHlvdSBhcmUgYnVpbGRpbmcKK2FnYWluc3QgR29vZ2xlIFRlc3QgYXMgd2Vs
bC4gIFRoZXJlIGlzIG5vIG5lZWQgdG8gY29uZmlndXJlIEdvb2dsZSBUZXN0CitzZXBhcmF0ZWx5
LgorCisjIyMjIENvbnRyaWJ1dGluZyBhIFBhdGNoICMjIyMKKworV2Ugd2VsY29tZSBwYXRjaGVz
LgorUGxlYXNlIHJlYWQgdGhlIFtEZXZlbG9wZXIncyBHdWlkZV0oZG9jcy9EZXZHdWlkZS5tZCkK
K2ZvciBob3cgeW91IGNhbiBjb250cmlidXRlLiBJbiBwYXJ0aWN1bGFyLCBtYWtlIHN1cmUgeW91
IGhhdmUgc2lnbmVkCit0aGUgQ29udHJpYnV0b3IgTGljZW5zZSBBZ3JlZW1lbnQsIG9yIHdlIHdv
bid0IGJlIGFibGUgdG8gYWNjZXB0IHRoZQorcGF0Y2guCisKK0hhcHB5IHRlc3RpbmchCisKK1tn
dGVzdF9yZWFkbWVdOiAuLi9nb29nbGV0ZXN0L1JFQURNRS5tZCAiZ29vZ2xldGVzdCIKK1tndGVz
dF9jbWFrZWJ1aWxkXTogIC4uL2dvb2dsZXRlc3QvUkVBRE1FLm1kI3VzaW5nLWNtYWtlICJVc2lu
ZyBDTWFrZSIKK1tndGVzdF9pbmNvcnBjbWFrZV06IC4uL2dvb2dsZXRlc3QvUkVBRE1FLm1kI2lu
Y29ycG9yYXRpbmctaW50by1hbi1leGlzdGluZy1jbWFrZS1wcm9qZWN0ICJJbmNvcnBvcmF0aW5n
IEludG8gQW4gRXhpc3RpbmcgQ01ha2UgUHJvamVjdCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2Nr
L2NvbmZpZ3VyZS5hYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2NvbmZpZ3VyZS5hYwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYjc0
MGYyMDVlNTUyOGI5MWI0MmE1NmY3ZDdjMzEyN2RlNmU0MDI4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZW1vY2svY29uZmlndXJlLmFjCkBAIC0wLDAgKzEsMTQ2IEBACittNF9pbmNsdWRlKC4u
L2dvb2dsZXRlc3QvbTQvYWN4X3B0aHJlYWQubTQpCisKK0FDX0lOSVQoW0dvb2dsZSBDKysgTW9j
a2luZyBGcmFtZXdvcmtdLAorICAgICAgICBbMS43LjBdLAorICAgICAgICBbZ29vZ2xlbW9ja0Bn
b29nbGVncm91cHMuY29tXSwKKyAgICAgICAgW2dtb2NrXSkKKworIyBQcm92aWRlIHZhcmlvdXMg
b3B0aW9ucyB0byBpbml0aWFsaXplIHRoZSBBdXRvY29uZiBhbmQgY29uZmlndXJlIHByb2Nlc3Nl
cy4KK0FDX1BSRVJFUShbMi41OV0pCitBQ19DT05GSUdfU1JDRElSKFsuL0xJQ0VOU0VdKQorQUNf
Q09ORklHX0FVWF9ESVIoW2J1aWxkLWF1eF0pCitBQ19DT05GSUdfSEVBREVSUyhbYnVpbGQtYXV4
L2NvbmZpZy5oXSkKK0FDX0NPTkZJR19GSUxFUyhbTWFrZWZpbGVdKQorQUNfQ09ORklHX0ZJTEVT
KFtzY3JpcHRzL2dtb2NrLWNvbmZpZ10sIFtjaG1vZCAreCBzY3JpcHRzL2dtb2NrLWNvbmZpZ10p
CisKKyMgSW5pdGlhbGl6ZSBBdXRvbWFrZSB3aXRoIHZhcmlvdXMgb3B0aW9ucy4gV2UgcmVxdWly
ZSBhdCBsZWFzdCB2MS45LCBwcmV2ZW50CisjIHBlZGFudGljIGNvbXBsYWludHMgYWJvdXQgcGFj
a2FnZSBmaWxlcywgYW5kIGVuYWJsZSB2YXJpb3VzIGRpc3RyaWJ1dGlvbgorIyB0YXJnZXRzLgor
QU1fSU5JVF9BVVRPTUFLRShbMS45IGRpc3QtYnppcDIgZGlzdC16aXAgZm9yZWlnbiBzdWJkaXIt
b2JqZWN0c10pCisKKyMgQ2hlY2sgZm9yIHByb2dyYW1zIHVzZWQgaW4gYnVpbGRpbmcgR29vZ2xl
IFRlc3QuCitBQ19QUk9HX0NDCitBQ19QUk9HX0NYWAorQUNfTEFORyhbQysrXSkKK0FDX1BST0df
TElCVE9PTAorCisjIFRPRE8oY2hhbmRsZXJjQGdvb2dsZS5jb20pOiBDdXJyZW50bHkgd2UgYXJl
bid0IHJ1bm5pbmcgdGhlIFB5dGhvbiB0ZXN0cworIyBhZ2FpbnN0IHRoZSBpbnRlcnByZXRlciBk
ZXRlY3RlZCBieSBBTV9QQVRIX1BZVEhPTiwgYW5kIHNvIHdlIGNvbmRpdGlvbgorIyBIQVZFX1BZ
VEhPTiBieSByZXF1aXJpbmcgInB5dGhvbiIgdG8gYmUgaW4gdGhlIFBBVEgsIGFuZCB0aGF0IGlu
dGVycHJldGVyJ3MKKyMgdmVyc2lvbiB0byBiZSA+PSAyLjMuIFRoaXMgd2lsbCBhbGxvdyB0aGUg
c2NyaXB0cyB0byB1c2UgYSAiL3Vzci9iaW4vZW52IgorIyBoYXNoYmFuZy4KK1BZVEhPTj0gICMg
V2UgKmRvIG5vdCogYWxsb3cgdGhlIHVzZXIgdG8gc3BlY2lmeSBhIHB5dGhvbiBpbnRlcnByZXRl
cgorQUNfUEFUSF9QUk9HKFtQWVRIT05dLFtweXRob25dLFs6XSkKK0FTX0lGKFt0ZXN0ICIkUFlU
SE9OIiAhPSAiOiJdLAorICAgICAgW0FNX1BZVEhPTl9DSEVDS19WRVJTSU9OKFskUFlUSE9OXSxb
Mi4zXSxbOl0sW1BZVEhPTj0iOiJdKV0pCitBTV9DT05ESVRJT05BTChbSEFWRV9QWVRIT05dLFt0
ZXN0ICIkUFlUSE9OIiAhPSAiOiJdKQorCisjIFRPRE8oY2hhbmRsZXJjQGdvb2dsZS5jb20pIENo
ZWNrIGZvciB0aGUgbmVjZXNzYXJ5IHN5c3RlbSBoZWFkZXJzLgorCisjIENvbmZpZ3VyZSBwdGhy
ZWFkcy4KK0FDX0FSR19XSVRIKFtwdGhyZWFkc10sCisgICAgICAgICAgICBbQVNfSEVMUF9TVFJJ
TkcoWy0td2l0aC1wdGhyZWFkc10sCisgICAgICAgICAgICAgICBbdXNlIHB0aHJlYWRzIChkZWZh
dWx0IGlzIHllcyldKV0sCisgICAgICAgICAgICBbd2l0aF9wdGhyZWFkcz0kd2l0aHZhbF0sCisg
ICAgICAgICAgICBbd2l0aF9wdGhyZWFkcz1jaGVja10pCisKK2hhdmVfcHRocmVhZHM9bm8KK0FT
X0lGKFt0ZXN0ICJ4JHdpdGhfcHRocmVhZHMiICE9ICJ4bm8iXSwKKyAgICAgIFtBQ1hfUFRIUkVB
RCgKKyAgICAgICAgW10sCisgICAgICAgIFtBU19JRihbdGVzdCAieCR3aXRoX3B0aHJlYWRzIiAh
PSAieGNoZWNrIl0sCisgICAgICAgICAgICAgICBbQUNfTVNHX0ZBSUxVUkUoCisgICAgICAgICAg
ICAgICAgIFstLXdpdGgtcHRocmVhZHMgd2FzIHNwZWNpZmllZCwgYnV0IHVuYWJsZSB0byBiZSB1
c2VkXSldKV0pCisgICAgICAgaGF2ZV9wdGhyZWFkcz0iJGFjeF9wdGhyZWFkX29rIl0pCitBTV9D
T05ESVRJT05BTChbSEFWRV9QVEhSRUFEU10sW3Rlc3QgIngkaGF2ZV9wdGhyZWFkcyIgPT0gInh5
ZXMiXSkKK0FDX1NVQlNUKFBUSFJFQURfQ0ZMQUdTKQorQUNfU1VCU1QoUFRIUkVBRF9MSUJTKQor
CisjIEdvb2dsZU1vY2sgY3VycmVudGx5IGhhcyBoYXJkIGRlcGVuZGVuY2llcyB1cG9uIEdvb2ds
ZVRlc3QgYWJvdmUgYW5kIGJleW9uZAorIyBydW5uaW5nIGl0cyBvd24gdGVzdCBzdWl0ZSwgc28g
d2UgYm90aCBwcm92aWRlIG91ciBvd24gdmVyc2lvbiBpbgorIyBhIHN1YmRpcmVjdG9yeSBhbmQg
cHJvdmlkZSBzb21lIGxvZ2ljIHRvIHVzZSBhIGN1c3RvbSB2ZXJzaW9uIG9yIGEgc3lzdGVtCisj
IGluc3RhbGxlZCB2ZXJzaW9uLgorQUNfQVJHX1dJVEgoW2d0ZXN0XSwKKyAgICAgICAgICAgIFtB
U19IRUxQX1NUUklORyhbLS13aXRoLWd0ZXN0XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbU3BlY2lmaWVzIGhvdyB0byBmaW5kIHRoZSBndGVzdCBwYWNrYWdlLiBJZiBubworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cyBhcmUgZ2l2ZW4sIHRoZSBkZWZhdWx0IGJl
aGF2aW9yLCBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtIGluc3RhbGxlZCBn
dGVzdCB3aWxsIGJlIHVzZWQgaWYgcHJlc2VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhbmQgYW4gaW50ZXJuYWwgdmVyc2lvbiBidWlsdCBvdGhlcndpc2UuIElmIGEKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwYXRoIGlzIHByb3ZpZGVkLCB0aGUgZ3Rlc3QgYnVpbHQgb3Ig
aW5zdGFsbGVkIGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBwcmVmaXggd2ls
bCBiZSB1c2VkLl0pXSwKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgW3dpdGhfZ3Rlc3Q9
eWVzXSkKK0FDX0FSR19FTkFCTEUoW2V4dGVybmFsLWd0ZXN0XSwKKyAgICAgICAgICAgICAgW0FT
X0hFTFBfU1RSSU5HKFstLWRpc2FibGUtZXh0ZXJuYWwtZ3Rlc3RdLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgW0Rpc2FibGVzIGFueSBkZXRlY3Rpb24gb3IgdXNlIG9mIGEgc3lzdGVt
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZWQgb3IgdXNlciBwcm92aWRl
ZCBndGVzdC4gQW55IG9wdGlvbiB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0t
d2l0aC1ndGVzdCcgaXMgaWdub3JlZC4gKERlZmF1bHQgaXMgZW5hYmxlZC4pXSkKKyAgICAgICAg
ICAgICAgXSwgW10sIFtlbmFibGVfZXh0ZXJuYWxfZ3Rlc3Q9eWVzXSkKK0FTX0lGKFt0ZXN0ICJ4
JHdpdGhfZ3Rlc3QiID09ICJ4bm8iXSwKKyAgICAgIFtBQ19NU0dfRVJST1IoW2RubAorU3VwcG9y
dCBmb3IgR29vZ2xlVGVzdCB3YXMgZXhwbGljaXRseSBkaXNhYmxlZC4gQ3VycmVudGx5IEdvb2ds
ZU1vY2sgaGFzIGEgaGFyZAorZGVwZW5kZW5jeSB1cG9uIEdvb2dsZVRlc3QgdG8gYnVpbGQsIHBs
ZWFzZSBwcm92aWRlIGEgdmVyc2lvbiwgb3IgYWxsb3cKK0dvb2dsZU1vY2sgdG8gdXNlIGFueSBp
bnN0YWxsZWQgdmVyc2lvbiBhbmQgZmFsbCBiYWNrIHVwb24gaXRzIGludGVybmFsCit2ZXJzaW9u
Ll0pXSkKKworIyBTZXR1cCB2YXJpb3VzIEdURVNUIHZhcmlhYmxlcy4gVE9ETyhjaGFuZGxlcmNA
Z29vZ2xlLmNvbSk6IFdoZW4gdGhlc2UgYXJlCisjIHVzZWQgYmVsb3csIHRoZXkgc2hvdWxkIGJl
IHVzZWQgc3VjaCB0aGF0IGFueSBwcmUtZXhpc3RpbmcgdmFsdWVzIGFsd2F5cworIyB0cnVtcCB2
YWx1ZXMgd2Ugc2V0IHRoZW0gdG8sIHNvIHRoYXQgdGhleSBjYW4gYmUgdXNlZCB0byBzZWxlY3Rp
dmVseSBvdmVycmlkZQorIyBkZXRhaWxzIG9mIHRoZSBkZXRlY3Rpb24gcHJvY2Vzcy4KK0FDX0FS
R19WQVIoW0dURVNUX0NPTkZJR10sCisgICAgICAgICAgIFtUaGUgZXhhY3QgcGF0aCBvZiBHb29n
bGUgVGVzdCdzICdndGVzdC1jb25maWcnIHNjcmlwdC5dKQorQUNfQVJHX1ZBUihbR1RFU1RfQ1BQ
RkxBR1NdLAorICAgICAgICAgICBbQy1saWtlIHByZXByb2Nlc3NvciBmbGFncyBmb3IgR29vZ2xl
IFRlc3QuXSkKK0FDX0FSR19WQVIoW0dURVNUX0NYWEZMQUdTXSwKKyAgICAgICAgICAgW0MrKyBj
b21waWxlIGZsYWdzIGZvciBHb29nbGUgVGVzdC5dKQorQUNfQVJHX1ZBUihbR1RFU1RfTERGTEFH
U10sCisgICAgICAgICAgIFtMaW5rZXIgcGF0aCBhbmQgb3B0aW9uIGZsYWdzIGZvciBHb29nbGUg
VGVzdC5dKQorQUNfQVJHX1ZBUihbR1RFU1RfTElCU10sCisgICAgICAgICAgIFtMaWJyYXJ5IGxp
bmtpbmcgZmxhZ3MgZm9yIEdvb2dsZSBUZXN0Ll0pCitBQ19BUkdfVkFSKFtHVEVTVF9WRVJTSU9O
XSwKKyAgICAgICAgICAgW1RoZSB2ZXJzaW9uIG9mIEdvb2dsZSBUZXN0IGF2YWlsYWJsZS5dKQor
SEFWRV9CVUlMVF9HVEVTVD0ibm8iCisKK0dURVNUX01JTl9WRVJTSU9OPSIxLjcuMCIKKworQVNf
SUYoW3Rlc3QgIngke2VuYWJsZV9leHRlcm5hbF9ndGVzdH0iID0gInh5ZXMiXSwKKyAgICAgIFsj
IEJlZ2luIGZpbGxpbmcgaW4gdmFyaWFibGVzIGFzIHdlIGFyZSBhYmxlLgorICAgICAgQVNfSUYo
W3Rlc3QgIngke3dpdGhfZ3Rlc3R9IiAhPSAieHllcyJdLAorICAgICAgICAgICAgW0FTX0lGKFt0
ZXN0IC14ICIke3dpdGhfZ3Rlc3R9L3NjcmlwdHMvZ3Rlc3QtY29uZmlnIl0sCisgICAgICAgICAg
ICAgICAgICAgW0dURVNUX0NPTkZJRz0iJHt3aXRoX2d0ZXN0fS9zY3JpcHRzL2d0ZXN0LWNvbmZp
ZyJdLAorICAgICAgICAgICAgICAgICAgIFtHVEVTVF9DT05GSUc9IiR7d2l0aF9ndGVzdH0vYmlu
L2d0ZXN0LWNvbmZpZyJdKQorICAgICAgICAgICAgQVNfSUYoW3Rlc3QgLXggIiR7R1RFU1RfQ09O
RklHfSJdLCBbXSwKKyAgICAgICAgICAgICAgICAgIFtBQ19NU0dfRVJST1IoW2RubAorVW5hYmxl
IHRvIGxvY2F0ZSBlaXRoZXIgYSBidWlsdCBvciBpbnN0YWxsZWQgR29vZ2xlIFRlc3QgYXQgJyR7
d2l0aF9ndGVzdH0nLl0pCisgICAgICAgICAgICAgICAgICBdKV0pCisKKyAgICAgIEFTX0lGKFt0
ZXN0IC14ICIke0dURVNUX0NPTkZJR30iXSwgW10sCisgICAgICAgICAgICBbQUNfUEFUSF9QUk9H
KFtHVEVTVF9DT05GSUddLCBbZ3Rlc3QtY29uZmlnXSldKQorICAgICAgQVNfSUYoW3Rlc3QgLXgg
IiR7R1RFU1RfQ09ORklHfSJdLAorICAgICAgICAgICAgW0FDX01TR19DSEVDS0lORyhbZm9yIEdv
b2dsZSBUZXN0IHZlcnNpb24gPj0gJHtHVEVTVF9NSU5fVkVSU0lPTn1dKQorICAgICAgICAgICAg
QVNfSUYoWyR7R1RFU1RfQ09ORklHfSAtLW1pbi12ZXJzaW9uPSR7R1RFU1RfTUlOX1ZFUlNJT059
XSwKKyAgICAgICAgICAgICAgICAgIFtBQ19NU0dfUkVTVUxUKFt5ZXNdKQorICAgICAgICAgICAg
ICAgICAgSEFWRV9CVUlMVF9HVEVTVD0ieWVzIl0sCisgICAgICAgICAgICAgICAgICBbQUNfTVNH
X1JFU1VMVChbbm9dKV0pXSldKQorCitBU19JRihbdGVzdCAieCR7SEFWRV9CVUlMVF9HVEVTVH0i
ID0gInh5ZXMiXSwKKyAgICAgIFtHVEVTVF9DUFBGTEFHUz1gJHtHVEVTVF9DT05GSUd9IC0tY3Bw
ZmxhZ3NgCisgICAgICBHVEVTVF9DWFhGTEFHUz1gJHtHVEVTVF9DT05GSUd9IC0tY3h4ZmxhZ3Ng
CisgICAgICBHVEVTVF9MREZMQUdTPWAke0dURVNUX0NPTkZJR30gLS1sZGZsYWdzYAorICAgICAg
R1RFU1RfTElCUz1gJHtHVEVTVF9DT05GSUd9IC0tbGlic2AKKyAgICAgIEdURVNUX1ZFUlNJT049
YCR7R1RFU1RfQ09ORklHfSAtLXZlcnNpb25gXSwKKyAgICAgIFtBQ19DT05GSUdfU1VCRElSUyhb
Li4vZ29vZ2xldGVzdF0pCisgICAgICAjIEdURVNUX0NPTkZJRyBuZWVkcyB0byBiZSBleGVjdXRh
YmxlIGJvdGggaW4gYSBNYWtlZmlsZSBlbnZpcm9ubW9udCBhbmQKKyAgICAgICMgaW4gYSBzaGVs
bCBzY3JpcHQgZW52aXJvbm1lbnQsIHNvIHJlc29sdmUgYW4gYWJzb2x1dGUgcGF0aCBmb3IgaXQg
aGVyZS4KKyAgICAgIEdURVNUX0NPTkZJRz0iYHB3ZCAtUGAvLi4vZ29vZ2xldGVzdC9zY3JpcHRz
L2d0ZXN0LWNvbmZpZyIKKyAgICAgIEdURVNUX0NQUEZMQUdTPSctSSQodG9wX3NyY2RpcikvLi4v
Z29vZ2xldGVzdC9pbmNsdWRlJworICAgICAgR1RFU1RfQ1hYRkxBR1M9Jy1nJworICAgICAgR1RF
U1RfTERGTEFHUz0nJworICAgICAgR1RFU1RfTElCUz0nJCh0b3BfYnVpbGRkaXIpLy4uL2dvb2ds
ZXRlc3QvbGliL2xpYmd0ZXN0LmxhJworICAgICAgR1RFU1RfVkVSU0lPTj0iJHtHVEVTVF9NSU5f
VkVSU0lPTn0iXSkKKworIyBUT0RPKGNoYW5kbGVyY0Bnb29nbGUuY29tKSBDaGVjayB0aGUgdHlw
ZXMsIHN0cnVjdHVyZXMsIGFuZCBvdGhlciBjb21waWxlcgorIyBhbmQgYXJjaGl0ZWN0dXJlIGNo
YXJhY3RlcmlzdGljcy4KKworIyBPdXRwdXQgdGhlIGdlbmVyYXRlZCBmaWxlcy4gTm8gZnVydGhl
ciBhdXRvY29uZiBtYWNyb3MgbWF5IGJlIHVzZWQuCitBQ19PVVRQVVQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGVtb2NrL2RvY3MvQ2hlYXRTaGVldC5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvQ2hlYXRTaGVl
dC5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lZjQ0NTFiODc4NjU0ZjMxZGUxNDI4ZmNmMDBlNTViOGFhMjBjZGQ0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy9DaGVhdFNoZWV0Lm1kCkBAIC0w
LDAgKzEsNTYyIEBACisKKworIyBEZWZpbmluZyBhIE1vY2sgQ2xhc3MgIworCisjIyBNb2NraW5n
IGEgTm9ybWFsIENsYXNzICMjCisKK0dpdmVuCitgYGAKK2NsYXNzIEZvbyB7CisgIC4uLgorICB2
aXJ0dWFsIH5Gb28oKTsKKyAgdmlydHVhbCBpbnQgR2V0U2l6ZSgpIGNvbnN0ID0gMDsKKyAgdmly
dHVhbCBzdHJpbmcgRGVzY3JpYmUoY29uc3QgY2hhciogbmFtZSkgPSAwOworICB2aXJ0dWFsIHN0
cmluZyBEZXNjcmliZShpbnQgdHlwZSkgPSAwOworICB2aXJ0dWFsIGJvb2wgUHJvY2VzcyhCYXIg
ZWxlbSwgaW50IGNvdW50KSA9IDA7Cit9OworYGBgCisobm90ZSB0aGF0IGB+Rm9vKClgICoqbXVz
dCoqIGJlIHZpcnR1YWwpIHdlIGNhbiBkZWZpbmUgaXRzIG1vY2sgYXMKK2BgYAorI2luY2x1ZGUg
Imdtb2NrL2dtb2NrLmgiCisKK2NsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKKyAgTU9DS19D
T05TVF9NRVRIT0QwKEdldFNpemUsIGludCgpKTsKKyAgTU9DS19NRVRIT0QxKERlc2NyaWJlLCBz
dHJpbmcoY29uc3QgY2hhciogbmFtZSkpOworICBNT0NLX01FVEhPRDEoRGVzY3JpYmUsIHN0cmlu
ZyhpbnQgdHlwZSkpOworICBNT0NLX01FVEhPRDIoUHJvY2VzcywgYm9vbChCYXIgZWxlbSwgaW50
IGNvdW50KSk7Cit9OworYGBgCisKK1RvIGNyZWF0ZSBhICJuaWNlIiBtb2NrIG9iamVjdCB3aGlj
aCBpZ25vcmVzIGFsbCB1bmludGVyZXN0aW5nIGNhbGxzLAorb3IgYSAic3RyaWN0IiBtb2NrIG9i
amVjdCwgd2hpY2ggdHJlYXRzIHRoZW0gYXMgZmFpbHVyZXM6CitgYGAKK05pY2VNb2NrPE1vY2tG
b28+IG5pY2VfZm9vOyAgICAgLy8gVGhlIHR5cGUgaXMgYSBzdWJjbGFzcyBvZiBNb2NrRm9vLgor
U3RyaWN0TW9jazxNb2NrRm9vPiBzdHJpY3RfZm9vOyAvLyBUaGUgdHlwZSBpcyBhIHN1YmNsYXNz
IG9mIE1vY2tGb28uCitgYGAKKworIyMgTW9ja2luZyBhIENsYXNzIFRlbXBsYXRlICMjCisKK1Rv
IG1vY2sKK2BgYAordGVtcGxhdGUgPHR5cGVuYW1lIEVsZW0+CitjbGFzcyBTdGFja0ludGVyZmFj
ZSB7CisgcHVibGljOgorICAuLi4KKyAgdmlydHVhbCB+U3RhY2tJbnRlcmZhY2UoKTsKKyAgdmly
dHVhbCBpbnQgR2V0U2l6ZSgpIGNvbnN0ID0gMDsKKyAgdmlydHVhbCB2b2lkIFB1c2goY29uc3Qg
RWxlbSYgeCkgPSAwOworfTsKK2BgYAorKG5vdGUgdGhhdCBgflN0YWNrSW50ZXJmYWNlKClgICoq
bXVzdCoqIGJlIHZpcnR1YWwpIGp1c3QgYXBwZW5kIGBfVGAgdG8gdGhlIGBNT0NLXypgIG1hY3Jv
czoKK2BgYAordGVtcGxhdGUgPHR5cGVuYW1lIEVsZW0+CitjbGFzcyBNb2NrU3RhY2sgOiBwdWJs
aWMgU3RhY2tJbnRlcmZhY2U8RWxlbT4geworIHB1YmxpYzoKKyAgLi4uCisgIE1PQ0tfQ09OU1Rf
TUVUSE9EMF9UKEdldFNpemUsIGludCgpKTsKKyAgTU9DS19NRVRIT0QxX1QoUHVzaCwgdm9pZChj
b25zdCBFbGVtJiB4KSk7Cit9OworYGBgCisKKyMjIFNwZWNpZnlpbmcgQ2FsbGluZyBDb252ZW50
aW9ucyBmb3IgTW9jayBGdW5jdGlvbnMgIyMKKworSWYgeW91ciBtb2NrIGZ1bmN0aW9uIGRvZXNu
J3QgdXNlIHRoZSBkZWZhdWx0IGNhbGxpbmcgY29udmVudGlvbiwgeW91CitjYW4gc3BlY2lmeSBp
dCBieSBhcHBlbmRpbmcgYF9XSVRIX0NBTExUWVBFYCB0byBhbnkgb2YgdGhlIG1hY3JvcworZGVz
Y3JpYmVkIGluIHRoZSBwcmV2aW91cyB0d28gc2VjdGlvbnMgYW5kIHN1cHBseWluZyB0aGUgY2Fs
bGluZworY29udmVudGlvbiBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlIG1hY3JvLiBGb3Ig
ZXhhbXBsZSwKK2BgYAorICBNT0NLX01FVEhPRF8xX1dJVEhfQ0FMTFRZUEUoU1RETUVUSE9EQ0FM
TFRZUEUsIEZvbywgYm9vbChpbnQgbikpOworICBNT0NLX0NPTlNUX01FVEhPRDJfV0lUSF9DQUxM
VFlQRShTVERNRVRIT0RDQUxMVFlQRSwgQmFyLCBpbnQoZG91YmxlIHgsIGRvdWJsZSB5KSk7Citg
YGAKK3doZXJlIGBTVERNRVRIT0RDQUxMVFlQRWAgaXMgZGVmaW5lZCBieSBgPG9iamJhc2UuaD5g
IG9uIFdpbmRvd3MuCisKKyMgVXNpbmcgTW9ja3MgaW4gVGVzdHMgIworCitUaGUgdHlwaWNhbCBm
bG93IGlzOgorICAxLiBJbXBvcnQgdGhlIEdvb2dsZSBNb2NrIG5hbWVzIHlvdSBuZWVkIHRvIHVz
ZS4gQWxsIEdvb2dsZSBNb2NrIG5hbWVzIGFyZSBpbiB0aGUgYHRlc3RpbmdgIG5hbWVzcGFjZSB1
bmxlc3MgdGhleSBhcmUgbWFjcm9zIG9yIG90aGVyd2lzZSBub3RlZC4KKyAgMS4gQ3JlYXRlIHRo
ZSBtb2NrIG9iamVjdHMuCisgIDEuIE9wdGlvbmFsbHksIHNldCB0aGUgZGVmYXVsdCBhY3Rpb25z
IG9mIHRoZSBtb2NrIG9iamVjdHMuCisgIDEuIFNldCB5b3VyIGV4cGVjdGF0aW9ucyBvbiB0aGUg
bW9jayBvYmplY3RzIChIb3cgd2lsbCB0aGV5IGJlIGNhbGxlZD8gV2hhdCB3aWwgdGhleSBkbz8p
LgorICAxLiBFeGVyY2lzZSBjb2RlIHRoYXQgdXNlcyB0aGUgbW9jayBvYmplY3RzOyBpZiBuZWNl
c3NhcnksIGNoZWNrIHRoZSByZXN1bHQgdXNpbmcgW0dvb2dsZSBUZXN0XSguLi8uLi9nb29nbGV0
ZXN0LykgYXNzZXJ0aW9ucy4KKyAgMS4gV2hlbiBhIG1vY2sgb2JqZWN0cyBpcyBkZXN0cnVjdGVk
LCBHb29nbGUgTW9jayBhdXRvbWF0aWNhbGx5IHZlcmlmaWVzIHRoYXQgYWxsIGV4cGVjdGF0aW9u
cyBvbiBpdCBoYXZlIGJlZW4gc2F0aXNmaWVkLgorCitIZXJlIGlzIGFuIGV4YW1wbGU6CitgYGAK
K3VzaW5nIDo6dGVzdGluZzo6UmV0dXJuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAj
MQorCitURVNUKEJhclRlc3QsIERvZXNUaGlzKSB7CisgIE1vY2tGb28gZm9vOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vICMyCisKKyAgT05fQ0FMTChmb28sIEdldFNpemUo
KSkgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIzMKKyAgICAgIC5XaWxsQnlEZWZhdWx0KFJl
dHVybigxKSk7CisgIC8vIC4uLiBvdGhlciBkZWZhdWx0IGFjdGlvbnMgLi4uCisKKyAgRVhQRUNU
X0NBTEwoZm9vLCBEZXNjcmliZSg1KSkgICAgICAgICAgICAgICAgICAgLy8gIzQKKyAgICAgIC5U
aW1lcygzKQorICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybigiQ2F0ZWdvcnkgNSIpKTsKKyAg
Ly8gLi4uIG90aGVyIGV4cGVjdGF0aW9ucyAuLi4KKworICBFWFBFQ1RfRVEoImdvb2QiLCBNeVBy
b2R1Y3Rpb25GdW5jdGlvbigmZm9vKSk7ICAvLyAjNQorfSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAjNgorYGBgCisKKyMgU2V0dGluZyBEZWZhdWx0
IEFjdGlvbnMgIworCitHb29nbGUgTW9jayBoYXMgYSAqKmJ1aWx0LWluIGRlZmF1bHQgYWN0aW9u
KiogZm9yIGFueSBmdW5jdGlvbiB0aGF0CityZXR1cm5zIGB2b2lkYCwgYGJvb2xgLCBhIG51bWVy
aWMgdmFsdWUsIG9yIGEgcG9pbnRlci4KKworVG8gY3VzdG9taXplIHRoZSBkZWZhdWx0IGFjdGlv
biBmb3IgZnVuY3Rpb25zIHdpdGggcmV0dXJuIHR5cGUgYFRgIGdsb2JhbGx5OgorYGBgCit1c2lu
ZyA6OnRlc3Rpbmc6OkRlZmF1bHRWYWx1ZTsKKworLy8gU2V0cyB0aGUgZGVmYXVsdCB2YWx1ZSB0
byBiZSByZXR1cm5lZC4gVCBtdXN0IGJlIENvcHlDb25zdHJ1Y3RpYmxlLgorRGVmYXVsdFZhbHVl
PFQ+OjpTZXQodmFsdWUpOworLy8gU2V0cyBhIGZhY3RvcnkuIFdpbGwgYmUgaW52b2tlZCBvbiBk
ZW1hbmQuIFQgbXVzdCBiZSBNb3ZlQ29uc3RydWN0aWJsZS4KKy8vICAgVCBNYWtlVCgpOworRGVm
YXVsdFZhbHVlPFQ+OjpTZXRGYWN0b3J5KCZNYWtlVCk7CisvLyAuLi4gdXNlIHRoZSBtb2NrcyAu
Li4KKy8vIFJlc2V0cyB0aGUgZGVmYXVsdCB2YWx1ZS4KK0RlZmF1bHRWYWx1ZTxUPjo6Q2xlYXIo
KTsKK2BgYAorCitUbyBjdXN0b21pemUgdGhlIGRlZmF1bHQgYWN0aW9uIGZvciBhIHBhcnRpY3Vs
YXIgbWV0aG9kLCB1c2UgYE9OX0NBTEwoKWA6CitgYGAKK09OX0NBTEwobW9ja19vYmplY3QsIG1l
dGhvZChtYXRjaGVycykpCisgICAgLldpdGgobXVsdGlfYXJndW1lbnRfbWF0Y2hlcikgID8KKyAg
ICAuV2lsbEJ5RGVmYXVsdChhY3Rpb24pOworYGBgCisKKyMgU2V0dGluZyBFeHBlY3RhdGlvbnMg
IworCitgRVhQRUNUX0NBTEwoKWAgc2V0cyAqKmV4cGVjdGF0aW9ucyoqIG9uIGEgbW9jayBtZXRo
b2QgKEhvdyB3aWxsIGl0IGJlCitjYWxsZWQ/IFdoYXQgd2lsbCBpdCBkbz8pOgorYGBgCitFWFBF
Q1RfQ0FMTChtb2NrX29iamVjdCwgbWV0aG9kKG1hdGNoZXJzKSkKKyAgICAuV2l0aChtdWx0aV9h
cmd1bWVudF9tYXRjaGVyKSAgPworICAgIC5UaW1lcyhjYXJkaW5hbGl0eSkgICAgICAgICAgICA/
CisgICAgLkluU2VxdWVuY2Uoc2VxdWVuY2VzKSAgICAgICAgICoKKyAgICAuQWZ0ZXIoZXhwZWN0
YXRpb25zKSAgICAgICAgICAgKgorICAgIC5XaWxsT25jZShhY3Rpb24pICAgICAgICAgICAgICAq
CisgICAgLldpbGxSZXBlYXRlZGx5KGFjdGlvbikgICAgICAgID8KKyAgICAuUmV0aXJlc09uU2F0
dXJhdGlvbigpOyAgICAgICAgPworYGBgCisKK0lmIGBUaW1lcygpYCBpcyBvbWl0dGVkLCB0aGUg
Y2FyZGluYWxpdHkgaXMgYXNzdW1lZCB0byBiZToKKworICAqIGBUaW1lcygxKWAgd2hlbiB0aGVy
ZSBpcyBuZWl0aGVyIGBXaWxsT25jZSgpYCBub3IgYFdpbGxSZXBlYXRlZGx5KClgOworICAqIGBU
aW1lcyhuKWAgd2hlbiB0aGVyZSBhcmUgYG4gV2lsbE9uY2UoKWBzIGJ1dCBubyBgV2lsbFJlcGVh
dGVkbHkoKWAsIHdoZXJlIGBuYCA+PSAxOyBvcgorICAqIGBUaW1lcyhBdExlYXN0KG4pKWAgd2hl
biB0aGVyZSBhcmUgYG4gV2lsbE9uY2UoKWBzIGFuZCBhIGBXaWxsUmVwZWF0ZWRseSgpYCwgd2hl
cmUgYG5gID49IDAuCisKK0EgbWV0aG9kIHdpdGggbm8gYEVYUEVDVF9DQUxMKClgIGlzIGZyZWUg
dG8gYmUgaW52b2tlZCBfYW55IG51bWJlciBvZiB0aW1lc18sIGFuZCB0aGUgZGVmYXVsdCBhY3Rp
b24gd2lsbCBiZSB0YWtlbiBlYWNoIHRpbWUuCisKKyMgTWF0Y2hlcnMgIworCitBICoqbWF0Y2hl
cioqIG1hdGNoZXMgYSBfc2luZ2xlXyBhcmd1bWVudC4gIFlvdSBjYW4gdXNlIGl0IGluc2lkZQor
YE9OX0NBTEwoKWAgb3IgYEVYUEVDVF9DQUxMKClgLCBvciB1c2UgaXQgdG8gdmFsaWRhdGUgYSB2
YWx1ZQorZGlyZWN0bHk6CisKK3wgYEVYUEVDVF9USEFUKHZhbHVlLCBtYXRjaGVyKWAgfCBBc3Nl
cnRzIHRoYXQgYHZhbHVlYCBtYXRjaGVzIGBtYXRjaGVyYC4gfAorfDotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18
Cit8IGBBU1NFUlRfVEhBVCh2YWx1ZSwgbWF0Y2hlcilgIHwgVGhlIHNhbWUgYXMgYEVYUEVDVF9U
SEFUKHZhbHVlLCBtYXRjaGVyKWAsIGV4Y2VwdCB0aGF0IGl0IGdlbmVyYXRlcyBhICoqZmF0YWwq
KiBmYWlsdXJlLiB8CisKK0J1aWx0LWluIG1hdGNoZXJzICh3aGVyZSBgYXJndW1lbnRgIGlzIHRo
ZSBmdW5jdGlvbiBhcmd1bWVudCkgYXJlCitkaXZpZGVkIGludG8gc2V2ZXJhbCBjYXRlZ29yaWVz
OgorCisjIyBXaWxkY2FyZCAjIworfGBfYHxgYXJndW1lbnRgIGNhbiBiZSBhbnkgdmFsdWUgb2Yg
dGhlIGNvcnJlY3QgdHlwZS58Cit8Oi0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLXwKK3xgQTx0eXBlPigpYCBvciBgQW48dHlwZT4oKWB8YGFyZ3VtZW50
YCBjYW4gYmUgYW55IHZhbHVlIG9mIHR5cGUgYHR5cGVgLiAgICAgfAorCisjIyBHZW5lcmljIENv
bXBhcmlzb24gIyMKKworfGBFcSh2YWx1ZSlgIG9yIGB2YWx1ZWB8YGFyZ3VtZW50ID09IHZhbHVl
YHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS18Cit8YEdlKHZh
bHVlKWAgICAgICAgICAgIHxgYXJndW1lbnQgPj0gdmFsdWVgfAorfGBHdCh2YWx1ZSlgICAgICAg
ICAgICB8YGFyZ3VtZW50ID4gdmFsdWVgIHwKK3xgTGUodmFsdWUpYCAgICAgICAgICAgfGBhcmd1
bWVudCA8PSB2YWx1ZWB8Cit8YEx0KHZhbHVlKWAgICAgICAgICAgIHxgYXJndW1lbnQgPCB2YWx1
ZWAgfAorfGBOZSh2YWx1ZSlgICAgICAgICAgICB8YGFyZ3VtZW50ICE9IHZhbHVlYHwKK3xgSXNO
dWxsKClgICAgICAgICAgICAgfGBhcmd1bWVudGAgaXMgYSBgTlVMTGAgcG9pbnRlciAocmF3IG9y
IHNtYXJ0KS58Cit8YE5vdE51bGwoKWAgICAgICAgICAgIHxgYXJndW1lbnRgIGlzIGEgbm9uLW51
bGwgcG9pbnRlciAocmF3IG9yIHNtYXJ0KS58Cit8YFJlZih2YXJpYWJsZSlgICAgICAgIHxgYXJn
dW1lbnRgIGlzIGEgcmVmZXJlbmNlIHRvIGB2YXJpYWJsZWAufAorfGBUeXBlZEVxPHR5cGU+KHZh
bHVlKWB8YGFyZ3VtZW50YCBoYXMgdHlwZSBgdHlwZWAgYW5kIGlzIGVxdWFsIHRvIGB2YWx1ZWAu
IFlvdSBtYXkgbmVlZCB0byB1c2UgdGhpcyBpbnN0ZWFkIG9mIGBFcSh2YWx1ZSlgIHdoZW4gdGhl
IG1vY2sgZnVuY3Rpb24gaXMgb3ZlcmxvYWRlZC58CisKK0V4Y2VwdCBgUmVmKClgLCB0aGVzZSBt
YXRjaGVycyBtYWtlIGEgX2NvcHlfIG9mIGB2YWx1ZWAgaW4gY2FzZSBpdCdzCittb2RpZmllZCBv
ciBkZXN0cnVjdGVkIGxhdGVyLiBJZiB0aGUgY29tcGlsZXIgY29tcGxhaW5zIHRoYXQgYHZhbHVl
YAorZG9lc24ndCBoYXZlIGEgcHVibGljIGNvcHkgY29uc3RydWN0b3IsIHRyeSB3cmFwIGl0IGlu
IGBCeVJlZigpYCwKK2UuZy4gYEVxKEJ5UmVmKG5vbl9jb3B5YWJsZV92YWx1ZSkpYC4gSWYgeW91
IGRvIHRoYXQsIG1ha2Ugc3VyZQorYG5vbl9jb3B5YWJsZV92YWx1ZWAgaXMgbm90IGNoYW5nZWQg
YWZ0ZXJ3YXJkcywgb3IgdGhlIG1lYW5pbmcgb2YgeW91cgorbWF0Y2hlciB3aWxsIGJlIGNoYW5n
ZWQuCisKKyMjIEZsb2F0aW5nLVBvaW50IE1hdGNoZXJzICMjCisKK3xgRG91YmxlRXEoYV9kb3Vi
bGUpYHxgYXJndW1lbnRgIGlzIGEgYGRvdWJsZWAgdmFsdWUgYXBwcm94aW1hdGVseSBlcXVhbCB0
byBgYV9kb3VibGVgLCB0cmVhdGluZyB0d28gTmFOcyBhcyB1bmVxdWFsLnwKK3w6LS0tLS0tLS0t
LS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKK3xgRmxv
YXRFcShhX2Zsb2F0KWAgIHxgYXJndW1lbnRgIGlzIGEgYGZsb2F0YCB2YWx1ZSBhcHByb3hpbWF0
ZWx5IGVxdWFsIHRvIGBhX2Zsb2F0YCwgdHJlYXRpbmcgdHdvIE5hTnMgYXMgdW5lcXVhbC4gIHwK
K3xgTmFuU2Vuc2l0aXZlRG91YmxlRXEoYV9kb3VibGUpYHxgYXJndW1lbnRgIGlzIGEgYGRvdWJs
ZWAgdmFsdWUgYXBwcm94aW1hdGVseSBlcXVhbCB0byBgYV9kb3VibGVgLCB0cmVhdGluZyB0d28g
TmFOcyBhcyBlcXVhbC4gIHwKK3xgTmFuU2Vuc2l0aXZlRmxvYXRFcShhX2Zsb2F0KWB8YGFyZ3Vt
ZW50YCBpcyBhIGBmbG9hdGAgdmFsdWUgYXBwcm94aW1hdGVseSBlcXVhbCB0byBgYV9mbG9hdGAs
IHRyZWF0aW5nIHR3byBOYU5zIGFzIGVxdWFsLiAgICB8CisKK1RoZSBhYm92ZSBtYXRjaGVycyB1
c2UgVUxQLWJhc2VkIGNvbXBhcmlzb24gKHRoZSBzYW1lIGFzIHVzZWQgaW4KK1tHb29nbGUgVGVz
dF0oLi4vLi4vZ29vZ2xldGVzdC8pKS4gVGhleQorYXV0b21hdGljYWxseSBwaWNrIGEgcmVhc29u
YWJsZSBlcnJvciBib3VuZCBiYXNlZCBvbiB0aGUgYWJzb2x1dGUKK3ZhbHVlIG9mIHRoZSBleHBl
Y3RlZCB2YWx1ZS4gIGBEb3VibGVFcSgpYCBhbmQgYEZsb2F0RXEoKWAgY29uZm9ybSB0bwordGhl
IElFRUUgc3RhbmRhcmQsIHdoaWNoIHJlcXVpcmVzIGNvbXBhcmluZyB0d28gTmFOcyBmb3IgZXF1
YWxpdHkgdG8KK3JldHVybiBmYWxzZS4gVGhlIGBOYW5TZW5zaXRpdmUqYCB2ZXJzaW9uIGluc3Rl
YWQgdHJlYXRzIHR3byBOYU5zIGFzCitlcXVhbCwgd2hpY2ggaXMgb2Z0ZW4gd2hhdCBhIHVzZXIg
d2FudHMuCisKK3xgRG91YmxlTmVhcihhX2RvdWJsZSwgbWF4X2Fic19lcnJvcilgfGBhcmd1bWVu
dGAgaXMgYSBgZG91YmxlYCB2YWx1ZSBjbG9zZSB0byBgYV9kb3VibGVgIChhYnNvbHV0ZSBlcnJv
ciA8PSBgbWF4X2Fic19lcnJvcmApLCB0cmVhdGluZyB0d28gTmFOcyBhcyB1bmVxdWFsLnwKK3w6
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKK3xgRmxvYXROZWFyKGFf
ZmxvYXQsIG1heF9hYnNfZXJyb3IpYCAgfGBhcmd1bWVudGAgaXMgYSBgZmxvYXRgIHZhbHVlIGNs
b3NlIHRvIGBhX2Zsb2F0YCAoYWJzb2x1dGUgZXJyb3IgPD0gYG1heF9hYnNfZXJyb3JgKSwgdHJl
YXRpbmcgdHdvIE5hTnMgYXMgdW5lcXVhbC4gIHwKK3xgTmFuU2Vuc2l0aXZlRG91YmxlTmVhcihh
X2RvdWJsZSwgbWF4X2Fic19lcnJvcilgfGBhcmd1bWVudGAgaXMgYSBgZG91YmxlYCB2YWx1ZSBj
bG9zZSB0byBgYV9kb3VibGVgIChhYnNvbHV0ZSBlcnJvciA8PSBgbWF4X2Fic19lcnJvcmApLCB0
cmVhdGluZyB0d28gTmFOcyBhcyBlcXVhbC4gIHwKK3xgTmFuU2Vuc2l0aXZlRmxvYXROZWFyKGFf
ZmxvYXQsIG1heF9hYnNfZXJyb3IpYHxgYXJndW1lbnRgIGlzIGEgYGZsb2F0YCB2YWx1ZSBjbG9z
ZSB0byBgYV9mbG9hdGAgKGFic29sdXRlIGVycm9yIDw9IGBtYXhfYWJzX2Vycm9yYCksIHRyZWF0
aW5nIHR3byBOYU5zIGFzIGVxdWFsLiAgICB8CisKKyMjIFN0cmluZyBNYXRjaGVycyAjIworCitU
aGUgYGFyZ3VtZW50YCBjYW4gYmUgZWl0aGVyIGEgQyBzdHJpbmcgb3IgYSBDKysgc3RyaW5nIG9i
amVjdDoKKworfGBDb250YWluc1JlZ2V4KHN0cmluZylgfGBhcmd1bWVudGAgbWF0Y2hlcyB0aGUg
Z2l2ZW4gcmVndWxhciBleHByZXNzaW9uLnwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Cit8YEVuZHNXaXRo
KHN1ZmZpeClgICAgICB8YGFyZ3VtZW50YCBlbmRzIHdpdGggc3RyaW5nIGBzdWZmaXhgLiAgICAg
ICAgICAgfAorfGBIYXNTdWJzdHIoc3RyaW5nKWAgICAgfGBhcmd1bWVudGAgY29udGFpbnMgYHN0
cmluZ2AgYXMgYSBzdWItc3RyaW5nLiAgIHwKK3xgTWF0Y2hlc1JlZ2V4KHN0cmluZylgIHxgYXJn
dW1lbnRgIG1hdGNoZXMgdGhlIGdpdmVuIHJlZ3VsYXIgZXhwcmVzc2lvbiB3aXRoIHRoZSBtYXRj
aCBzdGFydGluZyBhdCB0aGUgZmlyc3QgY2hhcmFjdGVyIGFuZCBlbmRpbmcgYXQgdGhlIGxhc3Qg
Y2hhcmFjdGVyLnwKK3xgU3RhcnRzV2l0aChwcmVmaXgpYCAgIHxgYXJndW1lbnRgIHN0YXJ0cyB3
aXRoIHN0cmluZyBgcHJlZml4YC4gICAgICAgICB8Cit8YFN0ckNhc2VFcShzdHJpbmcpYCAgICB8
YGFyZ3VtZW50YCBpcyBlcXVhbCB0byBgc3RyaW5nYCwgaWdub3JpbmcgY2FzZS4gfAorfGBTdHJD
YXNlTmUoc3RyaW5nKWAgICAgfGBhcmd1bWVudGAgaXMgbm90IGVxdWFsIHRvIGBzdHJpbmdgLCBp
Z25vcmluZyBjYXNlLnwKK3xgU3RyRXEoc3RyaW5nKWAgICAgICAgIHxgYXJndW1lbnRgIGlzIGVx
dWFsIHRvIGBzdHJpbmdgLiAgICAgICAgICAgICAgICB8Cit8YFN0ck5lKHN0cmluZylgICAgICAg
ICB8YGFyZ3VtZW50YCBpcyBub3QgZXF1YWwgdG8gYHN0cmluZ2AuICAgICAgICAgICAgfAorCitg
Q29udGFpbnNSZWdleCgpYCBhbmQgYE1hdGNoZXNSZWdleCgpYCB1c2UgdGhlIHJlZ3VsYXIgZXhw
cmVzc2lvbgorc3ludGF4IGRlZmluZWQKK1toZXJlXSguLi8uLi9nb29nbGV0ZXN0L2RvY3MvQWR2
YW5jZWRHdWlkZS5tZCNyZWd1bGFyLWV4cHJlc3Npb24tc3ludGF4KS4KK2BTdHJDYXNlRXEoKWAs
IGBTdHJDYXNlTmUoKWAsIGBTdHJFcSgpYCwgYW5kIGBTdHJOZSgpYCB3b3JrIGZvciB3aWRlCitz
dHJpbmdzIGFzIHdlbGwuCisKKyMjIENvbnRhaW5lciBNYXRjaGVycyAjIworCitNb3N0IFNUTC1z
dHlsZSBjb250YWluZXJzIHN1cHBvcnQgYD09YCwgc28geW91IGNhbiB1c2UKK2BFcShleHBlY3Rl
ZF9jb250YWluZXIpYCBvciBzaW1wbHkgYGV4cGVjdGVkX2NvbnRhaW5lcmAgdG8gbWF0Y2ggYQor
Y29udGFpbmVyIGV4YWN0bHkuICAgSWYgeW91IHdhbnQgdG8gd3JpdGUgdGhlIGVsZW1lbnRzIGlu
LWxpbmUsCittYXRjaCB0aGVtIG1vcmUgZmxleGlibHksIG9yIGdldCBtb3JlIGluZm9ybWF0aXZl
IG1lc3NhZ2VzLCB5b3UgY2FuIHVzZToKKworfCBgQ29udGFpbmVyRXEoY29udGFpbmVyKWAgfCBU
aGUgc2FtZSBhcyBgRXEoY29udGFpbmVyKWAgZXhjZXB0IHRoYXQgdGhlIGZhaWx1cmUgbWVzc2Fn
ZSBhbHNvIGluY2x1ZGVzIHdoaWNoIGVsZW1lbnRzIGFyZSBpbiBvbmUgY29udGFpbmVyIGJ1dCBu
b3QgdGhlIG90aGVyLiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLXwKK3wgYENvbnRhaW5zKGUpYCAgICAgICAgICAgIHwgYGFyZ3VtZW50YCBjb250YWlucyBh
biBlbGVtZW50IHRoYXQgbWF0Y2hlcyBgZWAsIHdoaWNoIGNhbiBiZSBlaXRoZXIgYSB2YWx1ZSBv
ciBhIG1hdGNoZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCBg
RWFjaChlKWAgICAgICAgICAgICAgICAgfCBgYXJndW1lbnRgIGlzIGEgY29udGFpbmVyIHdoZXJl
IF9ldmVyeV8gZWxlbWVudCBtYXRjaGVzIGBlYCwgd2hpY2ggY2FuIGJlIGVpdGhlciBhIHZhbHVl
IG9yIGEgbWF0Y2hlci4gICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8IGBFbGVtZW50c0Fy
ZShlMCwgZTEsIC4uLiwgZW4pYCB8IGBhcmd1bWVudGAgaGFzIGBuICsgMWAgZWxlbWVudHMsIHdo
ZXJlIHRoZSBpLXRoIGVsZW1lbnQgbWF0Y2hlcyBgZWlgLCB3aGljaCBjYW4gYmUgYSB2YWx1ZSBv
ciBhIG1hdGNoZXIuIDAgdG8gMTAgYXJndW1lbnRzIGFyZSBhbGxvd2VkLiB8Cit8IGBFbGVtZW50
c0FyZUFycmF5KHsgZTAsIGUxLCAuLi4sIGVuIH0pYCwgYEVsZW1lbnRzQXJlQXJyYXkoYXJyYXkp
YCwgb3IgYEVsZW1lbnRzQXJlQXJyYXkoYXJyYXksIGNvdW50KWAgfCBUaGUgc2FtZSBhcyBgRWxl
bWVudHNBcmUoKWAgZXhjZXB0IHRoYXQgdGhlIGV4cGVjdGVkIGVsZW1lbnQgdmFsdWVzL21hdGNo
ZXJzIGNvbWUgZnJvbSBhbiBpbml0aWFsaXplciBsaXN0LCBTVEwtc3R5bGUgY29udGFpbmVyLCBv
ciBDLXN0eWxlIGFycmF5LiB8Cit8IGBJc0VtcHR5KClgICAgICAgICAgICAgICB8IGBhcmd1bWVu
dGAgaXMgYW4gZW1wdHkgY29udGFpbmVyIChgY29udGFpbmVyLmVtcHR5KClgKS4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwKK3wgYFBvaW50d2lzZShtLCBjb250YWluZXIpYCB8IGBhcmd1bWVudGAgY29udGFp
bnMgdGhlIHNhbWUgbnVtYmVyIG9mIGVsZW1lbnRzIGFzIGluIGBjb250YWluZXJgLCBhbmQgZm9y
IGFsbCBpLCAodGhlIGktdGggZWxlbWVudCBpbiBgYXJndW1lbnRgLCB0aGUgaS10aCBlbGVtZW50
IGluIGBjb250YWluZXJgKSBtYXRjaCBgbWAsIHdoaWNoIGlzIGEgbWF0Y2hlciBvbiAyLXR1cGxl
cy4gRS5nLiBgUG9pbnR3aXNlKExlKCksIHVwcGVyX2JvdW5kcylgIHZlcmlmaWVzIHRoYXQgZWFj
aCBlbGVtZW50IGluIGBhcmd1bWVudGAgZG9lc24ndCBleGNlZWQgdGhlIGNvcnJlc3BvbmRpbmcg
ZWxlbWVudCBpbiBgdXBwZXJfYm91bmRzYC4gU2VlIG1vcmUgZGV0YWlsIGJlbG93LiB8Cit8IGBT
aXplSXMobSlgICAgICAgICAgICAgICB8IGBhcmd1bWVudGAgaXMgYSBjb250YWluZXIgd2hvc2Ug
c2l6ZSBtYXRjaGVzIGBtYC4gRS5nLiBgU2l6ZUlzKDIpYCBvciBgU2l6ZUlzKEx0KDIpKWAuICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYFVub3JkZXJlZEVs
ZW1lbnRzQXJlKGUwLCBlMSwgLi4uLCBlbilgIHwgYGFyZ3VtZW50YCBoYXMgYG4gKyAxYCBlbGVt
ZW50cywgYW5kIHVuZGVyIHNvbWUgcGVybXV0YXRpb24gZWFjaCBlbGVtZW50IG1hdGNoZXMgYW4g
YGVpYCAoZm9yIGEgZGlmZmVyZW50IGBpYCksIHdoaWNoIGNhbiBiZSBhIHZhbHVlIG9yIGEgbWF0
Y2hlci4gMCB0byAxMCBhcmd1bWVudHMgYXJlIGFsbG93ZWQuIHwKK3wgYFVub3JkZXJlZEVsZW1l
bnRzQXJlQXJyYXkoeyBlMCwgZTEsIC4uLiwgZW4gfSlgLCBgVW5vcmRlcmVkRWxlbWVudHNBcmVB
cnJheShhcnJheSlgLCBvciBgVW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheShhcnJheSwgY291bnQp
YCB8IFRoZSBzYW1lIGFzIGBVbm9yZGVyZWRFbGVtZW50c0FyZSgpYCBleGNlcHQgdGhhdCB0aGUg
ZXhwZWN0ZWQgZWxlbWVudCB2YWx1ZXMvbWF0Y2hlcnMgY29tZSBmcm9tIGFuIGluaXRpYWxpemVy
IGxpc3QsIFNUTC1zdHlsZSBjb250YWluZXIsIG9yIEMtc3R5bGUgYXJyYXkuIHwKK3wgYFdoZW5T
b3J0ZWQobSlgICAgICAgICAgIHwgV2hlbiBgYXJndW1lbnRgIGlzIHNvcnRlZCB1c2luZyB0aGUg
YDxgIG9wZXJhdG9yLCBpdCBtYXRjaGVzIGNvbnRhaW5lciBtYXRjaGVyIGBtYC4gRS5nLiBgV2hl
blNvcnRlZChVbm9yZGVyZWRFbGVtZW50c0FyZSgxLCAyLCAzKSlgIHZlcmlmaWVzIHRoYXQgYGFy
Z3VtZW50YCBjb250YWlucyBlbGVtZW50cyBgMWAsIGAyYCwgYW5kIGAzYCwgaWdub3Jpbmcgb3Jk
ZXIuIHwKK3wgYFdoZW5Tb3J0ZWRCeShjb21wYXJhdG9yLCBtKWAgfCBUaGUgc2FtZSBhcyBgV2hl
blNvcnRlZChtKWAsIGV4Y2VwdCB0aGF0IHRoZSBnaXZlbiBjb21wYXJhdG9yIGluc3RlYWQgb2Yg
YDxgIGlzIHVzZWQgdG8gc29ydCBgYXJndW1lbnRgLiBFLmcuIGBXaGVuU29ydGVkQnkoc3RkOjpn
cmVhdGVyPGludD4oKSwgRWxlbWVudHNBcmUoMywgMiwgMSkpYC4gfAorCitOb3RlczoKKworICAq
IFRoZXNlIG1hdGNoZXJzIGNhbiBhbHNvIG1hdGNoOgorICAgIDEuIGEgbmF0aXZlIGFycmF5IHBh
c3NlZCBieSByZWZlcmVuY2UgKGUuZy4gaW4gYEZvbyhjb25zdCBpbnQgKCZhKVs1XSlgKSwgYW5k
CisgICAgMS4gYW4gYXJyYXkgcGFzc2VkIGFzIGEgcG9pbnRlciBhbmQgYSBjb3VudCAoZS5nLiBp
biBgQmFyKGNvbnN0IFQqIGJ1ZmZlciwgaW50IGxlbilgIC0tIHNlZSBbTXVsdGktYXJndW1lbnQg
TWF0Y2hlcnNdKCNNdWx0aWFyZ3VtZW50X01hdGNoZXJzLm1kKSkuCisgICogVGhlIGFycmF5IGJl
aW5nIG1hdGNoZWQgbWF5IGJlIG11bHRpLWRpbWVuc2lvbmFsIChpLmUuIGl0cyBlbGVtZW50cyBj
YW4gYmUgYXJyYXlzKS4KKyAgKiBgbWAgaW4gYFBvaW50d2lzZShtLCAuLi4pYCBzaG91bGQgYmUg
YSBtYXRjaGVyIGZvciBgOjp0ZXN0aW5nOjp0dXBsZTxULCBVPmAgd2hlcmUgYFRgIGFuZCBgVWAg
YXJlIHRoZSBlbGVtZW50IHR5cGUgb2YgdGhlIGFjdHVhbCBjb250YWluZXIgYW5kIHRoZSBleHBl
Y3RlZCBjb250YWluZXIsIHJlc3BlY3RpdmVseS4gRm9yIGV4YW1wbGUsIHRvIGNvbXBhcmUgdHdv
IGBGb29gIGNvbnRhaW5lcnMgd2hlcmUgYEZvb2AgZG9lc24ndCBzdXBwb3J0IGBvcGVyYXRvcj09
YCBidXQgaGFzIGFuIGBFcXVhbHMoKWAgbWV0aG9kLCBvbmUgbWlnaHQgd3JpdGU6CisKK2BgYAor
dXNpbmcgOjp0ZXN0aW5nOjpnZXQ7CitNQVRDSEVSKEZvb0VxLCAiIikgeworICByZXR1cm4gZ2V0
PDA+KGFyZykuRXF1YWxzKGdldDwxPihhcmcpKTsKK30KKy4uLgorRVhQRUNUX1RIQVQoYWN0dWFs
X2Zvb3MsIFBvaW50d2lzZShGb29FcSgpLCBleHBlY3RlZF9mb29zKSk7CitgYGAKKworIyMgTWVt
YmVyIE1hdGNoZXJzICMjCisKK3xgRmllbGQoJmNsYXNzOjpmaWVsZCwgbSlgfGBhcmd1bWVudC5m
aWVsZGAgKG9yIGBhcmd1bWVudC0+ZmllbGRgIHdoZW4gYGFyZ3VtZW50YCBpcyBhIHBsYWluIHBv
aW50ZXIpIG1hdGNoZXMgbWF0Y2hlciBgbWAsIHdoZXJlIGBhcmd1bWVudGAgaXMgYW4gb2JqZWN0
IG9mIHR5cGUgX2NsYXNzXy58Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tfAorfGBLZXkoZSlgICAgICAgICAgICAgICAgICB8YGFyZ3VtZW50
LmZpcnN0YCBtYXRjaGVzIGBlYCwgd2hpY2ggY2FuIGJlIGVpdGhlciBhIHZhbHVlIG9yIGEgbWF0
Y2hlci4gRS5nLiBgQ29udGFpbnMoS2V5KExlKDUpKSlgIGNhbiB2ZXJpZnkgdGhhdCBhIGBtYXBg
IGNvbnRhaW5zIGEga2V5IGA8PSA1YC58Cit8YFBhaXIobTEsIG0yKWAgICAgICAgICAgIHxgYXJn
dW1lbnRgIGlzIGFuIGBzdGQ6OnBhaXJgIHdob3NlIGBmaXJzdGAgZmllbGQgbWF0Y2hlcyBgbTFg
IGFuZCBgc2Vjb25kYCBmaWVsZCBtYXRjaGVzIGBtMmAuICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfAorfGBQcm9wZXJ0eSgmY2xhc3M6OnByb3BlcnR5LCBt
KWB8YGFyZ3VtZW50LnByb3BlcnR5KClgIChvciBgYXJndW1lbnQtPnByb3BlcnR5KClgIHdoZW4g
YGFyZ3VtZW50YCBpcyBhIHBsYWluIHBvaW50ZXIpIG1hdGNoZXMgbWF0Y2hlciBgbWAsIHdoZXJl
IGBhcmd1bWVudGAgaXMgYW4gb2JqZWN0IG9mIHR5cGUgX2NsYXNzXy58CisKKyMjIE1hdGNoaW5n
IHRoZSBSZXN1bHQgb2YgYSBGdW5jdGlvbiBvciBGdW5jdG9yICMjCisKK3xgUmVzdWx0T2YoZiwg
bSlgfGBmKGFyZ3VtZW50KWAgbWF0Y2hlcyBtYXRjaGVyIGBtYCwgd2hlcmUgYGZgIGlzIGEgZnVu
Y3Rpb24gb3IgZnVuY3Rvci58Cit8Oi0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorCisj
IyBQb2ludGVyIE1hdGNoZXJzICMjCisKK3xgUG9pbnRlZShtKWB8YGFyZ3VtZW50YCAoZWl0aGVy
IGEgc21hcnQgcG9pbnRlciBvciBhIHJhdyBwb2ludGVyKSBwb2ludHMgdG8gYSB2YWx1ZSB0aGF0
IG1hdGNoZXMgbWF0Y2hlciBgbWAufAorfDotLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS18Cit8YFdoZW5EeW5hbWljQ2FzdFRvPFQ+KG0pYHwgd2hlbiBg
YXJndW1lbnRgIGlzIHBhc3NlZCB0aHJvdWdoIGBkeW5hbWljX2Nhc3Q8VD4oKWAsIGl0IG1hdGNo
ZXMgbWF0Y2hlciBgbWAuICAgICAgICAgICAgICAgICB8CisKKyMjIE11bHRpYXJndW1lbnQgTWF0
Y2hlcnMgIyMKKworVGVjaG5pY2FsbHksIGFsbCBtYXRjaGVycyBtYXRjaCBhIF9zaW5nbGVfIHZh
bHVlLiBBICJtdWx0aS1hcmd1bWVudCIKK21hdGNoZXIgaXMganVzdCBvbmUgdGhhdCBtYXRjaGVz
IGEgX3R1cGxlXy4gVGhlIGZvbGxvd2luZyBtYXRjaGVycyBjYW4KK2JlIHVzZWQgdG8gbWF0Y2gg
YSB0dXBsZSBgKHgsIHkpYDoKKworfGBFcSgpYHxgeCA9PSB5YHwKK3w6LS0tLS18Oi0tLS0tLS18
Cit8YEdlKClgfGB4ID49IHlgfAorfGBHdCgpYHxgeCA+IHlgIHwKK3xgTGUoKWB8YHggPD0geWB8
Cit8YEx0KClgfGB4IDwgeWAgfAorfGBOZSgpYHxgeCAhPSB5YHwKKworWW91IGNhbiB1c2UgdGhl
IGZvbGxvd2luZyBzZWxlY3RvcnMgdG8gcGljayBhIHN1YnNldCBvZiB0aGUgYXJndW1lbnRzCiso
b3IgcmVvcmRlciB0aGVtKSB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgbWF0Y2hpbmc6CisKK3xgQWxs
QXJncyhtKWB8RXF1aXZhbGVudCB0byBgbWAuIFVzZWZ1bCBhcyBzeW50YWN0aWMgc3VnYXIgaW4g
YC5XaXRoKEFsbEFyZ3MobSkpYC58Cit8Oi0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorfGBBcmdz
PE4xLCBOMiwgLi4uLCBOaz4obSlgfFRoZSB0dXBsZSBvZiB0aGUgYGtgIHNlbGVjdGVkICh1c2lu
ZyAwLWJhc2VkIGluZGljZXMpIGFyZ3VtZW50cyBtYXRjaGVzIGBtYCwgZS5nLiBgQXJnczwxLCAy
PihFcSgpKWAufAorCisjIyBDb21wb3NpdGUgTWF0Y2hlcnMgIyMKKworWW91IGNhbiBtYWtlIGEg
bWF0Y2hlciBmcm9tIG9uZSBvciBtb3JlIG90aGVyIG1hdGNoZXJzOgorCit8YEFsbE9mKG0xLCBt
MiwgLi4uLCBtbilgfGBhcmd1bWVudGAgbWF0Y2hlcyBhbGwgb2YgdGhlIG1hdGNoZXJzIGBtMWAg
dG8gYG1uYC58Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Cit8YEFueU9mKG0xLCBtMiwgLi4uLCBt
bilgfGBhcmd1bWVudGAgbWF0Y2hlcyBhdCBsZWFzdCBvbmUgb2YgdGhlIG1hdGNoZXJzIGBtMWAg
dG8gYG1uYC58Cit8YE5vdChtKWAgICAgICAgICAgICAgICAgfGBhcmd1bWVudGAgZG9lc24ndCBt
YXRjaCBtYXRjaGVyIGBtYC4gICAgICAgICAgICAgICB8CisKKyMjIEFkYXB0ZXJzIGZvciBNYXRj
aGVycyAjIworCit8YE1hdGNoZXJDYXN0PFQ+KG0pYHxjYXN0cyBtYXRjaGVyIGBtYCB0byB0eXBl
IGBNYXRjaGVyPFQ+YC58Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS18Cit8YFNhZmVNYXRjaGVyQ2FzdDxUPihtKWB8IFtzYWZlbHkg
Y2FzdHNdKENvb2tCb29rLm1kI2Nhc3RpbmctbWF0Y2hlcnMpIG1hdGNoZXIgYG1gIHRvIHR5cGUg
YE1hdGNoZXI8VD5gLiB8Cit8YFRydWx5KHByZWRpY2F0ZSlgIHxgcHJlZGljYXRlKGFyZ3VtZW50
KWAgcmV0dXJucyBzb21ldGhpbmcgY29uc2lkZXJlZCBieSBDKysgdG8gYmUgdHJ1ZSwgd2hlcmUg
YHByZWRpY2F0ZWAgaXMgYSBmdW5jdGlvbiBvciBmdW5jdG9yLnwKKworIyMgTWF0Y2hlcnMgYXMg
UHJlZGljYXRlcyAjIworCit8YE1hdGNoZXMobSkodmFsdWUpYHxldmFsdWF0ZXMgdG8gYHRydWVg
IGlmIGB2YWx1ZWAgbWF0Y2hlcyBgbWAuIFlvdSBjYW4gdXNlIGBNYXRjaGVzKG0pYCBhbG9uZSBh
cyBhIHVuYXJ5IGZ1bmN0b3IufAorfDotLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKK3xgRXhwbGFpbk1hdGNoUmVzdWx0KG0sIHZhbHVlLCBy
ZXN1bHRfbGlzdGVuZXIpYHxldmFsdWF0ZXMgdG8gYHRydWVgIGlmIGB2YWx1ZWAgbWF0Y2hlcyBg
bWAsIGV4cGxhaW5pbmcgdGhlIHJlc3VsdCB0byBgcmVzdWx0X2xpc3RlbmVyYC4gICAgICAgfAor
fGBWYWx1ZSh2YWx1ZSwgbSlgICB8ZXZhbHVhdGVzIHRvIGB0cnVlYCBpZiBgdmFsdWVgIG1hdGNo
ZXMgYG1gLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwKKworIyMgRGVmaW5pbmcgTWF0Y2hlcnMgIyMKKworfCBgTUFUQ0hFUihJc0V2ZW4sICIiKSB7
IHJldHVybiAoYXJnICUgMikgPT0gMDsgfWAgfCBEZWZpbmVzIGEgbWF0Y2hlciBgSXNFdmVuKClg
IHRvIG1hdGNoIGFuIGV2ZW4gbnVtYmVyLiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKK3wgYE1BVENIRVJfUChJc0RpdmlzaWJsZUJ5LCBuLCAi
IikgeyAqcmVzdWx0X2xpc3RlbmVyIDw8ICJ3aGVyZSB0aGUgcmVtYWluZGVyIGlzICIgPDwgKGFy
ZyAlIG4pOyByZXR1cm4gKGFyZyAlIG4pID09IDA7IH1gIHwgRGVmaW5lcyBhIG1hY2hlciBgSXNE
aXZpc2libGVCeShuKWAgdG8gbWF0Y2ggYSBudW1iZXIgZGl2aXNpYmxlIGJ5IGBuYC4gfAorfCBg
TUFUQ0hFUl9QMihJc0JldHdlZW4sIGEsIGIsIHN0ZDo6c3RyaW5nKG5lZ2F0aW9uID8gImlzbid0
IiA6ICJpcyIpICsgIiBiZXR3ZWVuICIgKyBQcmludFRvU3RyaW5nKGEpICsgIiBhbmQgIiArIFBy
aW50VG9TdHJpbmcoYikpIHsgcmV0dXJuIGEgPD0gYXJnICYmIGFyZyA8PSBiOyB9YCB8IERlZmlu
ZXMgYSBtYXRjaGVyIGBJc0JldHdlZW4oYSwgYilgIHRvIG1hdGNoIGEgdmFsdWUgaW4gdGhlIHJh
bmdlIFtgYWAsIGBiYF0uIHwKKworKipOb3RlczoqKgorCisgIDEuIFRoZSBgTUFUQ0hFUipgIG1h
Y3JvcyBjYW5ub3QgYmUgdXNlZCBpbnNpZGUgYSBmdW5jdGlvbiBvciBjbGFzcy4KKyAgMS4gVGhl
IG1hdGNoZXIgYm9keSBtdXN0IGJlIF9wdXJlbHkgZnVuY3Rpb25hbF8gKGkuZS4gaXQgY2Fubm90
IGhhdmUgYW55IHNpZGUgZWZmZWN0LCBhbmQgdGhlIHJlc3VsdCBtdXN0IG5vdCBkZXBlbmQgb24g
YW55dGhpbmcgb3RoZXIgdGhhbiB0aGUgdmFsdWUgYmVpbmcgbWF0Y2hlZCBhbmQgdGhlIG1hdGNo
ZXIgcGFyYW1ldGVycykuCisgIDEuIFlvdSBjYW4gdXNlIGBQcmludFRvU3RyaW5nKHgpYCB0byBj
b252ZXJ0IGEgdmFsdWUgYHhgIG9mIGFueSB0eXBlIHRvIGEgc3RyaW5nLgorCisjIyBNYXRjaGVy
cyBhcyBUZXN0IEFzc2VydGlvbnMgIyMKKworfGBBU1NFUlRfVEhBVChleHByZXNzaW9uLCBtKWB8
R2VuZXJhdGVzIGEgW2ZhdGFsIGZhaWx1cmVdKC4uLy4uL2dvb2dsZXRlc3QvZG9jcy9QcmltZXIu
bWQjYXNzZXJ0aW9ucykgaWYgdGhlIHZhbHVlIG9mIGBleHByZXNzaW9uYCBkb2Vzbid0IG1hdGNo
IG1hdGNoZXIgYG1gLnwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tfAorfGBFWFBFQ1RfVEhBVChleHByZXNzaW9uLCBtKWB8R2VuZXJh
dGVzIGEgbm9uLWZhdGFsIGZhaWx1cmUgaWYgdGhlIHZhbHVlIG9mIGBleHByZXNzaW9uYCBkb2Vz
bid0IG1hdGNoIG1hdGNoZXIgYG1gLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8CisKKyMgQWN0aW9ucyAjCisKKyoqQWN0aW9ucyoqIHNw
ZWNpZnkgd2hhdCBhIG1vY2sgZnVuY3Rpb24gc2hvdWxkIGRvIHdoZW4gaW52b2tlZC4KKworIyMg
UmV0dXJuaW5nIGEgVmFsdWUgIyMKKworfGBSZXR1cm4oKWB8UmV0dXJuIGZyb20gYSBgdm9pZGAg
bW9jayBmdW5jdGlvbi58Cit8Oi0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLXwKK3xgUmV0dXJuKHZhbHVlKWB8UmV0dXJuIGB2YWx1ZWAuIElmIHRoZSB0eXBlIG9m
IGB2YWx1ZWAgaXMgZGlmZmVyZW50IHRvIHRoZSBtb2NrIGZ1bmN0aW9uJ3MgcmV0dXJuIHR5cGUs
IGB2YWx1ZWAgaXMgY29udmVydGVkIHRvIHRoZSBsYXR0ZXIgdHlwZSA8aT5hdCB0aGUgdGltZSB0
aGUgZXhwZWN0YXRpb24gaXMgc2V0PC9pPiwgbm90IHdoZW4gdGhlIGFjdGlvbiBpcyBleGVjdXRl
ZC58Cit8YFJldHVybkFyZzxOPigpYHxSZXR1cm4gdGhlIGBOYC10aCAoMC1iYXNlZCkgYXJndW1l
bnQufAorfGBSZXR1cm5OZXc8VD4oYTEsIC4uLiwgYWspYHxSZXR1cm4gYG5ldyBUKGExLCAuLi4s
IGFrKWA7IGEgZGlmZmVyZW50IG9iamVjdCBpcyBjcmVhdGVkIGVhY2ggdGltZS58Cit8YFJldHVy
bk51bGwoKWB8UmV0dXJuIGEgbnVsbCBwb2ludGVyLiAgICAgICAgICAgICB8Cit8YFJldHVyblBv
aW50ZWUocHRyKWB8UmV0dXJuIHRoZSB2YWx1ZSBwb2ludGVkIHRvIGJ5IGBwdHJgLnwKK3xgUmV0
dXJuUmVmKHZhcmlhYmxlKWB8UmV0dXJuIGEgcmVmZXJlbmNlIHRvIGB2YXJpYWJsZWAuICB8Cit8
YFJldHVyblJlZk9mQ29weSh2YWx1ZSlgfFJldHVybiBhIHJlZmVyZW5jZSB0byBhIGNvcHkgb2Yg
YHZhbHVlYDsgdGhlIGNvcHkgbGl2ZXMgYXMgbG9uZyBhcyB0aGUgYWN0aW9uLnwKKworIyMgU2lk
ZSBFZmZlY3RzICMjCisKK3xgQXNzaWduKCZ2YXJpYWJsZSwgdmFsdWUpYHxBc3NpZ24gYHZhbHVl
YCB0byB2YXJpYWJsZS58Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tfAorfCBgRGVsZXRlQXJnPE4+KClgICAgICAgICAgfCBEZWxldGUgdGhl
IGBOYC10aCAoMC1iYXNlZCkgYXJndW1lbnQsIHdoaWNoIG11c3QgYmUgYSBwb2ludGVyLiB8Cit8
IGBTYXZlQXJnPE4+KHBvaW50ZXIpYCAgICB8IFNhdmUgdGhlIGBOYC10aCAoMC1iYXNlZCkgYXJn
dW1lbnQgdG8gYCpwb2ludGVyYC4gfAorfCBgU2F2ZUFyZ1BvaW50ZWU8Tj4ocG9pbnRlcilgIHwg
U2F2ZSB0aGUgdmFsdWUgcG9pbnRlZCB0byBieSB0aGUgYE5gLXRoICgwLWJhc2VkKSBhcmd1bWVu
dCB0byBgKnBvaW50ZXJgLiB8Cit8IGBTZXRBcmdSZWZlcmVlPE4+KHZhbHVlKWAgfAlBc3NpZ24g
dmFsdWUgdG8gdGhlIHZhcmlhYmxlIHJlZmVyZW5jZWQgYnkgdGhlIGBOYC10aCAoMC1iYXNlZCkg
YXJndW1lbnQuIHwKK3xgU2V0QXJnUG9pbnRlZTxOPih2YWx1ZSlgIHxBc3NpZ24gYHZhbHVlYCB0
byB0aGUgdmFyaWFibGUgcG9pbnRlZCBieSB0aGUgYE5gLXRoICgwLWJhc2VkKSBhcmd1bWVudC58
Cit8YFNldEFyZ3VtZW50UG9pbnRlZTxOPih2YWx1ZSlgfFNhbWUgYXMgYFNldEFyZ1BvaW50ZWU8
Tj4odmFsdWUpYC4gRGVwcmVjYXRlZC4gV2lsbCBiZSByZW1vdmVkIGluIHYxLjcuMC58Cit8YFNl
dEFycmF5QXJndW1lbnQ8Tj4oZmlyc3QsIGxhc3QpYHxDb3BpZXMgdGhlIGVsZW1lbnRzIGluIHNv
dXJjZSByYW5nZSBbYGZpcnN0YCwgYGxhc3RgKSB0byB0aGUgYXJyYXkgcG9pbnRlZCB0byBieSB0
aGUgYE5gLXRoICgwLWJhc2VkKSBhcmd1bWVudCwgd2hpY2ggY2FuIGJlIGVpdGhlciBhIHBvaW50
ZXIgb3IgYW4gaXRlcmF0b3IuIFRoZSBhY3Rpb24gZG9lcyBub3QgdGFrZSBvd25lcnNoaXAgb2Yg
dGhlIGVsZW1lbnRzIGluIHRoZSBzb3VyY2UgcmFuZ2UufAorfGBTZXRFcnJub0FuZFJldHVybihl
cnJvciwgdmFsdWUpYHxTZXQgYGVycm5vYCB0byBgZXJyb3JgIGFuZCByZXR1cm4gYHZhbHVlYC58
Cit8YFRocm93KGV4Y2VwdGlvbilgICAgICAgICB8VGhyb3dzIHRoZSBnaXZlbiBleGNlcHRpb24s
IHdoaWNoIGNhbiBiZSBhbnkgY29weWFibGUgdmFsdWUuIEF2YWlsYWJsZSBzaW5jZSB2MS4xLjAu
fAorCisjIyBVc2luZyBhIEZ1bmN0aW9uIG9yIGEgRnVuY3RvciBhcyBhbiBBY3Rpb24gIyMKKwor
fGBJbnZva2UoZilgfEludm9rZSBgZmAgd2l0aCB0aGUgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUg
bW9jayBmdW5jdGlvbiwgd2hlcmUgYGZgIGNhbiBiZSBhIGdsb2JhbC9zdGF0aWMgZnVuY3Rpb24g
b3IgYSBmdW5jdG9yLnwKK3w6LS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Cit8YEludm9rZShvYmplY3RfcG9pbnRlciwg
JmNsYXNzOjptZXRob2QpYHxJbnZva2UgdGhlIHttZXRob2Qgb24gdGhlIG9iamVjdCB3aXRoIHRo
ZSBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBtb2NrIGZ1bmN0aW9uLiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8Cit8YEludm9rZVdpdGhvdXRBcmdzKGYpYHxJbnZva2UgYGZgLCB3
aGljaCBjYW4gYmUgYSBnbG9iYWwvc3RhdGljIGZ1bmN0aW9uIG9yIGEgZnVuY3Rvci4gYGZgIG11
c3QgdGFrZSBubyBhcmd1bWVudHMuICAgICAgICAgICAgICAgICAgICAgICB8Cit8YEludm9rZVdp
dGhvdXRBcmdzKG9iamVjdF9wb2ludGVyLCAmY2xhc3M6Om1ldGhvZClgfEludm9rZSB0aGUgbWV0
aG9kIG9uIHRoZSBvYmplY3QsIHdoaWNoIHRha2VzIG5vIGFyZ3VtZW50cy4gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3xgSW52b2tlQXJn
dW1lbnQ8Tj4oYXJnMSwgYXJnMiwgLi4uLCBhcmdrKWB8SW52b2tlIHRoZSBtb2NrIGZ1bmN0aW9u
J3MgYE5gLXRoICgwLWJhc2VkKSBhcmd1bWVudCwgd2hpY2ggbXVzdCBiZSBhIGZ1bmN0aW9uIG9y
IGEgZnVuY3Rvciwgd2l0aCB0aGUgYGtgIGFyZ3VtZW50cy58CisKK1RoZSByZXR1cm4gdmFsdWUg
b2YgdGhlIGludm9rZWQgZnVuY3Rpb24gaXMgdXNlZCBhcyB0aGUgcmV0dXJuIHZhbHVlCitvZiB0
aGUgYWN0aW9uLgorCitXaGVuIGRlZmluaW5nIGEgZnVuY3Rpb24gb3IgZnVuY3RvciB0byBiZSB1
c2VkIHdpdGggYEludm9rZSooKWAsIHlvdSBjYW4gZGVjbGFyZSBhbnkgdW51c2VkIHBhcmFtZXRl
cnMgYXMgYFVudXNlZGA6CitgYGAKKyAgZG91YmxlIERpc3RhbmNlKFVudXNlZCwgZG91YmxlIHgs
IGRvdWJsZSB5KSB7IHJldHVybiBzcXJ0KHgqeCArIHkqeSk7IH0KKyAgLi4uCisgIEVYUEVDVF9D
QUxMKG1vY2ssIEZvbygiSGkiLCBfLCBfKSkuV2lsbE9uY2UoSW52b2tlKERpc3RhbmNlKSk7Citg
YGAKKworSW4gYEludm9rZUFyZ3VtZW50PE4+KC4uLilgLCBpZiBhbiBhcmd1bWVudCBuZWVkcyB0
byBiZSBwYXNzZWQgYnkgcmVmZXJlbmNlLCB3cmFwIGl0IGluc2lkZSBgQnlSZWYoKWAuIEZvciBl
eGFtcGxlLAorYGBgCisgIEludm9rZUFyZ3VtZW50PDI+KDUsIHN0cmluZygiSGkiKSwgQnlSZWYo
Zm9vKSkKK2BgYAorY2FsbHMgdGhlIG1vY2sgZnVuY3Rpb24ncyAjMiBhcmd1bWVudCwgcGFzc2lu
ZyB0byBpdCBgNWAgYW5kIGBzdHJpbmcoIkhpIilgIGJ5IHZhbHVlLCBhbmQgYGZvb2AgYnkgcmVm
ZXJlbmNlLgorCisjIyBEZWZhdWx0IEFjdGlvbiAjIworCit8YERvRGVmYXVsdCgpYHxEbyB0aGUg
ZGVmYXVsdCBhY3Rpb24gKHNwZWNpZmllZCBieSBgT05fQ0FMTCgpYCBvciB0aGUgYnVpbHQtaW4g
b25lKS58Cit8Oi0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisKKyoqTm90ZToqKiBkdWUgdG8g
dGVjaG5pY2FsIHJlYXNvbnMsIGBEb0RlZmF1bHQoKWAgY2Fubm90IGJlIHVzZWQgaW5zaWRlICBh
IGNvbXBvc2l0ZSBhY3Rpb24gLSB0cnlpbmcgdG8gZG8gc28gd2lsbCByZXN1bHQgaW4gYSBydW4t
dGltZSBlcnJvci4KKworIyMgQ29tcG9zaXRlIEFjdGlvbnMgIyMKKworfGBEb0FsbChhMSwgYTIs
IC4uLiwgYW4pYHxEbyBhbGwgYWN0aW9ucyBgYTFgIHRvIGBhbmAgYW5kIHJldHVybiB0aGUgcmVz
dWx0IG9mIGBhbmAgaW4gZWFjaCBpbnZvY2F0aW9uLiBUaGUgZmlyc3QgYG4gLSAxYCBzdWItYWN0
aW9ucyBtdXN0IHJldHVybiB2b2lkLiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLXwKK3xgSWdub3JlUmVzdWx0KGEpYCAgICAgICB8UGVyZm9ybSBhY3Rpb24gYGFgIGFu
ZCBpZ25vcmUgaXRzIHJlc3VsdC4gYGFgIG11c3Qgbm90IHJldHVybiB2b2lkLiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfGBXaXRo
QXJnPE4+KGEpYCAgICAgICAgIHxQYXNzIHRoZSBgTmAtdGggKDAtYmFzZWQpIGFyZ3VtZW50IG9m
IHRoZSBtb2NrIGZ1bmN0aW9uIHRvIGFjdGlvbiBgYWAgYW5kIHBlcmZvcm0gaXQuICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8YFdpdGhBcmdzPE4xLCBOMiwgLi4u
LCBOaz4oYSlgfFBhc3MgdGhlIHNlbGVjdGVkICgwLWJhc2VkKSBhcmd1bWVudHMgb2YgdGhlIG1v
Y2sgZnVuY3Rpb24gdG8gYWN0aW9uIGBhYCBhbmQgcGVyZm9ybSBpdC4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwKK3xgV2l0aG91dEFyZ3MoYSlgICAgICAgICB8UGVyZm9y
bSBhY3Rpb24gYGFgIHdpdGhvdXQgYW55IGFyZ3VtZW50cy4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfAorCisjIyBEZWZpbmluZyBBY3Rpb25zICMjCisKK3wgYEFDVElPTihTdW0pIHsgcmV0
dXJuIGFyZzAgKyBhcmcxOyB9YCB8IERlZmluZXMgYW4gYWN0aW9uIGBTdW0oKWAgdG8gcmV0dXJu
IHRoZSBzdW0gb2YgdGhlIG1vY2sgZnVuY3Rpb24ncyBhcmd1bWVudCAjMCBhbmQgIzEuIHwKK3w6
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLXwKK3wgYEFDVElPTl9QKFBsdXMsIG4pIHsgcmV0dXJuIGFyZzAgKyBuOyB9
YCB8IERlZmluZXMgYW4gYWN0aW9uIGBQbHVzKG4pYCB0byByZXR1cm4gdGhlIHN1bSBvZiB0aGUg
bW9jayBmdW5jdGlvbidzIGFyZ3VtZW50ICMwIGFuZCBgbmAuIHwKK3wgYEFDVElPTl9QayhGb28s
IHAxLCAuLi4sIHBrKSB7IHN0YXRlbWVudHM7IH1gIHwgRGVmaW5lcyBhIHBhcmFtZXRlcml6ZWQg
YWN0aW9uIGBGb28ocDEsIC4uLiwgcGspYCB0byBleGVjdXRlIHRoZSBnaXZlbiBgc3RhdGVtZW50
c2AuICAgfAorCitUaGUgYEFDVElPTipgIG1hY3JvcyBjYW5ub3QgYmUgdXNlZCBpbnNpZGUgYSBm
dW5jdGlvbiBvciBjbGFzcy4KKworIyBDYXJkaW5hbGl0aWVzICMKKworVGhlc2UgYXJlIHVzZWQg
aW4gYFRpbWVzKClgIHRvIHNwZWNpZnkgaG93IG1hbnkgdGltZXMgYSBtb2NrIGZ1bmN0aW9uIHdp
bGwgYmUgY2FsbGVkOgorCit8YEFueU51bWJlcigpYHxUaGUgZnVuY3Rpb24gY2FuIGJlIGNhbGxl
ZCBhbnkgbnVtYmVyIG9mIHRpbWVzLnwKK3w6LS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorfGBBdExlYXN0KG4pYCB8VGhlIGNhbGwg
aXMgZXhwZWN0ZWQgYXQgbGVhc3QgYG5gIHRpbWVzLiAgICAgICB8Cit8YEF0TW9zdChuKWAgIHxU
aGUgY2FsbCBpcyBleHBlY3RlZCBhdCBtb3N0IGBuYCB0aW1lcy4gICAgICAgIHwKK3xgQmV0d2Vl
bihtLCBuKWB8VGhlIGNhbGwgaXMgZXhwZWN0ZWQgYmV0d2VlbiBgbWAgYW5kIGBuYCAoaW5jbHVz
aXZlKSB0aW1lcy58Cit8YEV4YWN0bHkobikgb3IgbmB8VGhlIGNhbGwgaXMgZXhwZWN0ZWQgZXhh
Y3RseSBgbmAgdGltZXMuIEluIHBhcnRpY3VsYXIsIHRoZSBjYWxsIHNob3VsZCBuZXZlciBoYXBw
ZW4gd2hlbiBgbmAgaXMgMC58CisKKyMgRXhwZWN0YXRpb24gT3JkZXIgIworCitCeSBkZWZhdWx0
LCB0aGUgZXhwZWN0YXRpb25zIGNhbiBiZSBtYXRjaGVkIGluIF9hbnlfIG9yZGVyLiAgSWYgc29t
ZQorb3IgYWxsIGV4cGVjdGF0aW9ucyBtdXN0IGJlIG1hdGNoZWQgaW4gYSBnaXZlbiBvcmRlciwg
dGhlcmUgYXJlIHR3bword2F5cyB0byBzcGVjaWZ5IGl0LiAgVGhleSBjYW4gYmUgdXNlZCBlaXRo
ZXIgaW5kZXBlbmRlbnRseSBvcgordG9nZXRoZXIuCisKKyMjIFRoZSBBZnRlciBDbGF1c2UgIyMK
KworYGBgCit1c2luZyA6OnRlc3Rpbmc6OkV4cGVjdGF0aW9uOworLi4uCitFeHBlY3RhdGlvbiBp
bml0X3ggPSBFWFBFQ1RfQ0FMTChmb28sIEluaXRYKCkpOworRXhwZWN0YXRpb24gaW5pdF95ID0g
RVhQRUNUX0NBTEwoZm9vLCBJbml0WSgpKTsKK0VYUEVDVF9DQUxMKGZvbywgQmFyKCkpCisgICAg
LkFmdGVyKGluaXRfeCwgaW5pdF95KTsKK2BgYAorc2F5cyB0aGF0IGBCYXIoKWAgY2FuIGJlIGNh
bGxlZCBvbmx5IGFmdGVyIGJvdGggYEluaXRYKClgIGFuZAorYEluaXRZKClgIGhhdmUgYmVlbiBj
YWxsZWQuCisKK0lmIHlvdSBkb24ndCBrbm93IGhvdyBtYW55IHByZS1yZXF1aXNpdGVzIGFuIGV4
cGVjdGF0aW9uIGhhcyB3aGVuIHlvdQord3JpdGUgaXQsIHlvdSBjYW4gdXNlIGFuIGBFeHBlY3Rh
dGlvblNldGAgdG8gY29sbGVjdCB0aGVtOgorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6RXhwZWN0
YXRpb25TZXQ7CisuLi4KK0V4cGVjdGF0aW9uU2V0IGFsbF9pbml0czsKK2ZvciAoaW50IGkgPSAw
OyBpIDwgZWxlbWVudF9jb3VudDsgaSsrKSB7CisgIGFsbF9pbml0cyArPSBFWFBFQ1RfQ0FMTChm
b28sIEluaXRFbGVtZW50KGkpKTsKK30KK0VYUEVDVF9DQUxMKGZvbywgQmFyKCkpCisgICAgLkFm
dGVyKGFsbF9pbml0cyk7CitgYGAKK3NheXMgdGhhdCBgQmFyKClgIGNhbiBiZSBjYWxsZWQgb25s
eSBhZnRlciBhbGwgZWxlbWVudHMgaGF2ZSBiZWVuCitpbml0aWFsaXplZCAoYnV0IHdlIGRvbid0
IGNhcmUgYWJvdXQgd2hpY2ggZWxlbWVudHMgZ2V0IGluaXRpYWxpemVkCitiZWZvcmUgdGhlIG90
aGVycykuCisKK01vZGlmeWluZyBhbiBgRXhwZWN0YXRpb25TZXRgIGFmdGVyIHVzaW5nIGl0IGlu
IGFuIGAuQWZ0ZXIoKWAgZG9lc24ndAorYWZmZWN0IHRoZSBtZWFuaW5nIG9mIHRoZSBgLkFmdGVy
KClgLgorCisjIyBTZXF1ZW5jZXMgIyMKKworV2hlbiB5b3UgaGF2ZSBhIGxvbmcgY2hhaW4gb2Yg
c2VxdWVudGlhbCBleHBlY3RhdGlvbnMsIGl0J3MgZWFzaWVyIHRvCitzcGVjaWZ5IHRoZSBvcmRl
ciB1c2luZyAqKnNlcXVlbmNlcyoqLCB3aGljaCBkb24ndCByZXF1aXJlIHlvdSB0byBnaXZlbgor
ZWFjaCBleHBlY3RhdGlvbiBpbiB0aGUgY2hhaW4gYSBkaWZmZXJlbnQgbmFtZS4gIDxpPkFsbCBl
eHBlY3RlZDxicj4KK2NhbGxzPC9pPiBpbiB0aGUgc2FtZSBzZXF1ZW5jZSBtdXN0IG9jY3VyIGlu
IHRoZSBvcmRlciB0aGV5IGFyZQorc3BlY2lmaWVkLgorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6
U2VxdWVuY2U7CitTZXF1ZW5jZSBzMSwgczI7CisuLi4KK0VYUEVDVF9DQUxMKGZvbywgUmVzZXQo
KSkKKyAgICAuSW5TZXF1ZW5jZShzMSwgczIpCisgICAgLldpbGxPbmNlKFJldHVybih0cnVlKSk7
CitFWFBFQ1RfQ0FMTChmb28sIEdldFNpemUoKSkKKyAgICAuSW5TZXF1ZW5jZShzMSkKKyAgICAu
V2lsbE9uY2UoUmV0dXJuKDEpKTsKK0VYUEVDVF9DQUxMKGZvbywgRGVzY3JpYmUoQTxjb25zdCBj
aGFyKj4oKSkpCisgICAgLkluU2VxdWVuY2UoczIpCisgICAgLldpbGxPbmNlKFJldHVybigiZHVt
bXkiKSk7CitgYGAKK3NheXMgdGhhdCBgUmVzZXQoKWAgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIF9i
b3RoXyBgR2V0U2l6ZSgpYCBfYW5kXworYERlc2NyaWJlKClgLCBhbmQgdGhlIGxhdHRlciB0d28g
Y2FuIG9jY3VyIGluIGFueSBvcmRlci4KKworVG8gcHV0IG1hbnkgZXhwZWN0YXRpb25zIGluIGEg
c2VxdWVuY2UgY29udmVuaWVudGx5OgorYGBgCit1c2luZyA6OnRlc3Rpbmc6OkluU2VxdWVuY2U7
Cit7CisgIEluU2VxdWVuY2UgZHVtbXk7CisKKyAgRVhQRUNUX0NBTEwoLi4uKS4uLjsKKyAgRVhQ
RUNUX0NBTEwoLi4uKS4uLjsKKyAgLi4uCisgIEVYUEVDVF9DQUxMKC4uLikuLi47Cit9CitgYGAK
K3NheXMgdGhhdCBhbGwgZXhwZWN0ZWQgY2FsbHMgaW4gdGhlIHNjb3BlIG9mIGBkdW1teWAgbXVz
dCBvY2N1ciBpbgorc3RyaWN0IG9yZGVyLiBUaGUgbmFtZSBgZHVtbXlgIGlzIGlycmVsZXZhbnQu
KQorCisjIFZlcmlmeWluZyBhbmQgUmVzZXR0aW5nIGEgTW9jayAjCisKK0dvb2dsZSBNb2NrIHdp
bGwgdmVyaWZ5IHRoZSBleHBlY3RhdGlvbnMgb24gYSBtb2NrIG9iamVjdCB3aGVuIGl0IGlzIGRl
c3RydWN0ZWQsIG9yIHlvdSBjYW4gZG8gaXQgZWFybGllcjoKK2BgYAordXNpbmcgOjp0ZXN0aW5n
OjpNb2NrOworLi4uCisvLyBWZXJpZmllcyBhbmQgcmVtb3ZlcyB0aGUgZXhwZWN0YXRpb25zIG9u
IG1vY2tfb2JqOworLy8gcmV0dXJucyB0cnVlIGlmZiBzdWNjZXNzZnVsLgorTW9jazo6VmVyaWZ5
QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1vY2tfb2JqKTsKKy4uLgorLy8gVmVyaWZpZXMgYW5kIHJl
bW92ZXMgdGhlIGV4cGVjdGF0aW9ucyBvbiBtb2NrX29iajsKKy8vIGFsc28gcmVtb3ZlcyB0aGUg
ZGVmYXVsdCBhY3Rpb25zIHNldCBieSBPTl9DQUxMKCk7CisvLyByZXR1cm5zIHRydWUgaWZmIHN1
Y2Nlc3NmdWwuCitNb2NrOjpWZXJpZnlBbmRDbGVhcigmbW9ja19vYmopOworYGBgCisKK1lvdSBj
YW4gYWxzbyB0ZWxsIEdvb2dsZSBNb2NrIHRoYXQgYSBtb2NrIG9iamVjdCBjYW4gYmUgbGVha2Vk
IGFuZCBkb2Vzbid0CituZWVkIHRvIGJlIHZlcmlmaWVkOgorYGBgCitNb2NrOjpBbGxvd0xlYWso
Jm1vY2tfb2JqKTsKK2BgYAorCisjIE1vY2sgQ2xhc3NlcyAjCisKK0dvb2dsZSBNb2NrIGRlZmlu
ZXMgYSBjb252ZW5pZW50IG1vY2sgY2xhc3MgdGVtcGxhdGUKK2BgYAorY2xhc3MgTW9ja0Z1bmN0
aW9uPFIoQTEsIC4uLiwgQW4pPiB7CisgcHVibGljOgorICBNT0NLX01FVEhPRG4oQ2FsbCwgUihB
MSwgLi4uLCBBbikpOworfTsKK2BgYAorU2VlIHRoaXMgW3JlY2lwZV0oQ29va0Jvb2subWQjdXNp
bmctY2hlY2stcG9pbnRzKSBmb3Igb25lIGFwcGxpY2F0aW9uIG9mIGl0LgorCisjIEZsYWdzICMK
KworfCBgLS1nbW9ja19jYXRjaF9sZWFrZWRfbW9ja3M9MGAgfCBEb24ndCByZXBvcnQgbGVha2Vk
IG1vY2sgb2JqZWN0cyBhcyBmYWlsdXJlcy4gfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAor
fCBgLS1nbW9ja192ZXJib3NlPUxFVkVMYCAgICAgICAgfCBTZXRzIHRoZSBkZWZhdWx0IHZlcmJv
c2l0eSBsZXZlbCAoYGluZm9gLCBgd2FybmluZ2AsIG9yIGBlcnJvcmApIG9mIEdvb2dsZSBNb2Nr
IG1lc3NhZ2VzLiB8CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL0Nvb2tCb29rLm1kIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZW1vY2svZG9jcy9Db29rQm9vay5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNDYwZDM1N2Y2ZGI0OTYz
OWU4ZWNlZTE1NDZlZGE4N2VjYWIxYzUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2sv
ZG9jcy9Db29rQm9vay5tZApAQCAtMCwwICsxLDM2NzUgQEAKKworCitZb3UgY2FuIGZpbmQgcmVj
aXBlcyBmb3IgdXNpbmcgR29vZ2xlIE1vY2sgaGVyZS4gSWYgeW91IGhhdmVuJ3QgeWV0LAorcGxl
YXNlIHJlYWQgdGhlIFtGb3JEdW1taWVzXShGb3JEdW1taWVzLm1kKSBkb2N1bWVudCBmaXJzdCB0
byBtYWtlIHN1cmUgeW91IHVuZGVyc3RhbmQKK3RoZSBiYXNpY3MuCisKKyoqTm90ZToqKiBHb29n
bGUgTW9jayBsaXZlcyBpbiB0aGUgYHRlc3RpbmdgIG5hbWUgc3BhY2UuIEZvcgorcmVhZGFiaWxp
dHksIGl0IGlzIHJlY29tbWVuZGVkIHRvIHdyaXRlIGB1c2luZyA6OnRlc3Rpbmc6OkZvbztgIG9u
Y2UgaW4KK3lvdXIgZmlsZSBiZWZvcmUgdXNpbmcgdGhlIG5hbWUgYEZvb2AgZGVmaW5lZCBieSBH
b29nbGUgTW9jay4gV2Ugb21pdAorc3VjaCBgdXNpbmdgIHN0YXRlbWVudHMgaW4gdGhpcyBwYWdl
IGZvciBicmV2aXR5LCBidXQgeW91IHNob3VsZCBkbyBpdAoraW4geW91ciBvd24gY29kZS4KKwor
IyBDcmVhdGluZyBNb2NrIENsYXNzZXMgIworCisjIyBNb2NraW5nIFByaXZhdGUgb3IgUHJvdGVj
dGVkIE1ldGhvZHMgIyMKKworWW91IG11c3QgYWx3YXlzIHB1dCBhIG1vY2sgbWV0aG9kIGRlZmlu
aXRpb24gKGBNT0NLX01FVEhPRCpgKSBpbiBhCitgcHVibGljOmAgc2VjdGlvbiBvZiB0aGUgbW9j
ayBjbGFzcywgcmVnYXJkbGVzcyBvZiB0aGUgbWV0aG9kIGJlaW5nCittb2NrZWQgYmVpbmcgYHB1
YmxpY2AsIGBwcm90ZWN0ZWRgLCBvciBgcHJpdmF0ZWAgaW4gdGhlIGJhc2UgY2xhc3MuCitUaGlz
IGFsbG93cyBgT05fQ0FMTGAgYW5kIGBFWFBFQ1RfQ0FMTGAgdG8gcmVmZXJlbmNlIHRoZSBtb2Nr
IGZ1bmN0aW9uCitmcm9tIG91dHNpZGUgb2YgdGhlIG1vY2sgY2xhc3MuICAoWWVzLCBDKysgYWxs
b3dzIGEgc3ViY2xhc3MgdG8gY2hhbmdlCit0aGUgYWNjZXNzIGxldmVsIG9mIGEgdmlydHVhbCBm
dW5jdGlvbiBpbiB0aGUgYmFzZSBjbGFzcy4pICBFeGFtcGxlOgorCitgYGAKK2NsYXNzIEZvbyB7
CisgcHVibGljOgorICAuLi4KKyAgdmlydHVhbCBib29sIFRyYW5zZm9ybShHYWRnZXQqIGcpID0g
MDsKKworIHByb3RlY3RlZDoKKyAgdmlydHVhbCB2b2lkIFJlc3VtZSgpOworCisgcHJpdmF0ZToK
KyAgdmlydHVhbCBpbnQgR2V0VGltZU91dCgpOworfTsKKworY2xhc3MgTW9ja0ZvbyA6IHB1Ymxp
YyBGb28geworIHB1YmxpYzoKKyAgLi4uCisgIE1PQ0tfTUVUSE9EMShUcmFuc2Zvcm0sIGJvb2wo
R2FkZ2V0KiBnKSk7CisKKyAgLy8gVGhlIGZvbGxvd2luZyBtdXN0IGJlIGluIHRoZSBwdWJsaWMg
c2VjdGlvbiwgZXZlbiB0aG91Z2ggdGhlCisgIC8vIG1ldGhvZHMgYXJlIHByb3RlY3RlZCBvciBw
cml2YXRlIGluIHRoZSBiYXNlIGNsYXNzLgorICBNT0NLX01FVEhPRDAoUmVzdW1lLCB2b2lkKCkp
OworICBNT0NLX01FVEhPRDAoR2V0VGltZU91dCwgaW50KCkpOworfTsKK2BgYAorCisjIyBNb2Nr
aW5nIE92ZXJsb2FkZWQgTWV0aG9kcyAjIworCitZb3UgY2FuIG1vY2sgb3ZlcmxvYWRlZCBmdW5j
dGlvbnMgYXMgdXN1YWwuIE5vIHNwZWNpYWwgYXR0ZW50aW9uIGlzIHJlcXVpcmVkOgorCitgYGAK
K2NsYXNzIEZvbyB7CisgIC4uLgorCisgIC8vIE11c3QgYmUgdmlydHVhbCBhcyB3ZSdsbCBpbmhl
cml0IGZyb20gRm9vLgorICB2aXJ0dWFsIH5Gb28oKTsKKworICAvLyBPdmVybG9hZGVkIG9uIHRo
ZSB0eXBlcyBhbmQvb3IgbnVtYmVycyBvZiBhcmd1bWVudHMuCisgIHZpcnR1YWwgaW50IEFkZChF
bGVtZW50IHgpOworICB2aXJ0dWFsIGludCBBZGQoaW50IHRpbWVzLCBFbGVtZW50IHgpOworCisg
IC8vIE92ZXJsb2FkZWQgb24gdGhlIGNvbnN0LW5lc3Mgb2YgdGhpcyBvYmplY3QuCisgIHZpcnR1
YWwgQmFyJiBHZXRCYXIoKTsKKyAgdmlydHVhbCBjb25zdCBCYXImIEdldEJhcigpIGNvbnN0Owor
fTsKKworY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28geworICAuLi4KKyAgTU9DS19NRVRIT0Qx
KEFkZCwgaW50KEVsZW1lbnQgeCkpOworICBNT0NLX01FVEhPRDIoQWRkLCBpbnQoaW50IHRpbWVz
LCBFbGVtZW50IHgpOworCisgIE1PQ0tfTUVUSE9EMChHZXRCYXIsIEJhciYoKSk7CisgIE1PQ0tf
Q09OU1RfTUVUSE9EMChHZXRCYXIsIGNvbnN0IEJhciYoKSk7Cit9OworYGBgCisKKyoqTm90ZToq
KiBpZiB5b3UgZG9uJ3QgbW9jayBhbGwgdmVyc2lvbnMgb2YgdGhlIG92ZXJsb2FkZWQgbWV0aG9k
LCB0aGUKK2NvbXBpbGVyIHdpbGwgZ2l2ZSB5b3UgYSB3YXJuaW5nIGFib3V0IHNvbWUgbWV0aG9k
cyBpbiB0aGUgYmFzZSBjbGFzcworYmVpbmcgaGlkZGVuLiBUbyBmaXggdGhhdCwgdXNlIGB1c2lu
Z2AgdG8gYnJpbmcgdGhlbSBpbiBzY29wZToKKworYGBgCitjbGFzcyBNb2NrRm9vIDogcHVibGlj
IEZvbyB7CisgIC4uLgorICB1c2luZyBGb286OkFkZDsKKyAgTU9DS19NRVRIT0QxKEFkZCwgaW50
KEVsZW1lbnQgeCkpOworICAvLyBXZSBkb24ndCB3YW50IHRvIG1vY2sgaW50IEFkZChpbnQgdGlt
ZXMsIEVsZW1lbnQgeCk7CisgIC4uLgorfTsKK2BgYAorCisjIyBNb2NraW5nIENsYXNzIFRlbXBs
YXRlcyAjIworCitUbyBtb2NrIGEgY2xhc3MgdGVtcGxhdGUsIGFwcGVuZCBgX1RgIHRvIHRoZSBg
TU9DS18qYCBtYWNyb3M6CisKK2BgYAordGVtcGxhdGUgPHR5cGVuYW1lIEVsZW0+CitjbGFzcyBT
dGFja0ludGVyZmFjZSB7CisgIC4uLgorICAvLyBNdXN0IGJlIHZpcnR1YWwgYXMgd2UnbGwgaW5o
ZXJpdCBmcm9tIFN0YWNrSW50ZXJmYWNlLgorICB2aXJ0dWFsIH5TdGFja0ludGVyZmFjZSgpOwor
CisgIHZpcnR1YWwgaW50IEdldFNpemUoKSBjb25zdCA9IDA7CisgIHZpcnR1YWwgdm9pZCBQdXNo
KGNvbnN0IEVsZW0mIHgpID0gMDsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVtPgorY2xh
c3MgTW9ja1N0YWNrIDogcHVibGljIFN0YWNrSW50ZXJmYWNlPEVsZW0+IHsKKyAgLi4uCisgIE1P
Q0tfQ09OU1RfTUVUSE9EMF9UKEdldFNpemUsIGludCgpKTsKKyAgTU9DS19NRVRIT0QxX1QoUHVz
aCwgdm9pZChjb25zdCBFbGVtJiB4KSk7Cit9OworYGBgCisKKyMjIE1vY2tpbmcgTm9udmlydHVh
bCBNZXRob2RzICMjCisKK0dvb2dsZSBNb2NrIGNhbiBtb2NrIG5vbi12aXJ0dWFsIGZ1bmN0aW9u
cyB0byBiZSB1c2VkIGluIHdoYXQgd2UgY2FsbCBfaGktcGVyZgorZGVwZW5kZW5jeSBpbmplY3Rp
b25fLgorCitJbiB0aGlzIGNhc2UsIGluc3RlYWQgb2Ygc2hhcmluZyBhIGNvbW1vbiBiYXNlIGNs
YXNzIHdpdGggdGhlIHJlYWwKK2NsYXNzLCB5b3VyIG1vY2sgY2xhc3Mgd2lsbCBiZSBfdW5yZWxh
dGVkXyB0byB0aGUgcmVhbCBjbGFzcywgYnV0Citjb250YWluIG1ldGhvZHMgd2l0aCB0aGUgc2Ft
ZSBzaWduYXR1cmVzLiAgVGhlIHN5bnRheCBmb3IgbW9ja2luZworbm9uLXZpcnR1YWwgbWV0aG9k
cyBpcyB0aGUgX3NhbWVfIGFzIG1vY2tpbmcgdmlydHVhbCBtZXRob2RzOgorCitgYGAKKy8vIEEg
c2ltcGxlIHBhY2tldCBzdHJlYW0gY2xhc3MuICBOb25lIG9mIGl0cyBtZW1iZXJzIGlzIHZpcnR1
YWwuCitjbGFzcyBDb25jcmV0ZVBhY2tldFN0cmVhbSB7CisgcHVibGljOgorICB2b2lkIEFwcGVu
ZFBhY2tldChQYWNrZXQqIG5ld19wYWNrZXQpOworICBjb25zdCBQYWNrZXQqIEdldFBhY2tldChz
aXplX3QgcGFja2V0X251bWJlcikgY29uc3Q7CisgIHNpemVfdCBOdW1iZXJPZlBhY2tldHMoKSBj
b25zdDsKKyAgLi4uCit9OworCisvLyBBIG1vY2sgcGFja2V0IHN0cmVhbSBjbGFzcy4gIEl0IGlu
aGVyaXRzIGZyb20gbm8gb3RoZXIsIGJ1dCBkZWZpbmVzCisvLyBHZXRQYWNrZXQoKSBhbmQgTnVt
YmVyT2ZQYWNrZXRzKCkuCitjbGFzcyBNb2NrUGFja2V0U3RyZWFtIHsKKyBwdWJsaWM6CisgIE1P
Q0tfQ09OU1RfTUVUSE9EMShHZXRQYWNrZXQsIGNvbnN0IFBhY2tldCooc2l6ZV90IHBhY2tldF9u
dW1iZXIpKTsKKyAgTU9DS19DT05TVF9NRVRIT0QwKE51bWJlck9mUGFja2V0cywgc2l6ZV90KCkp
OworICAuLi4KK307CitgYGAKKworTm90ZSB0aGF0IHRoZSBtb2NrIGNsYXNzIGRvZXNuJ3QgZGVm
aW5lIGBBcHBlbmRQYWNrZXQoKWAsIHVubGlrZSB0aGUKK3JlYWwgY2xhc3MuIFRoYXQncyBmaW5l
IGFzIGxvbmcgYXMgdGhlIHRlc3QgZG9lc24ndCBuZWVkIHRvIGNhbGwgaXQuCisKK05leHQsIHlv
dSBuZWVkIGEgd2F5IHRvIHNheSB0aGF0IHlvdSB3YW50IHRvIHVzZQorYENvbmNyZXRlUGFja2V0
U3RyZWFtYCBpbiBwcm9kdWN0aW9uIGNvZGUsIGFuZCB1c2UgYE1vY2tQYWNrZXRTdHJlYW1gCitp
biB0ZXN0cy4gIFNpbmNlIHRoZSBmdW5jdGlvbnMgYXJlIG5vdCB2aXJ0dWFsIGFuZCB0aGUgdHdv
IGNsYXNzZXMgYXJlCit1bnJlbGF0ZWQsIHlvdSBtdXN0IHNwZWNpZnkgeW91ciBjaG9pY2UgYXQg
X2NvbXBpbGUgdGltZV8gKGFzIG9wcG9zZWQKK3RvIHJ1biB0aW1lKS4KKworT25lIHdheSB0byBk
byBpdCBpcyB0byB0ZW1wbGF0aXplIHlvdXIgY29kZSB0aGF0IG5lZWRzIHRvIHVzZSBhIHBhY2tl
dAorc3RyZWFtLiAgTW9yZSBzcGVjaWZpY2FsbHksIHlvdSB3aWxsIGdpdmUgeW91ciBjb2RlIGEg
dGVtcGxhdGUgdHlwZQorYXJndW1lbnQgZm9yIHRoZSB0eXBlIG9mIHRoZSBwYWNrZXQgc3RyZWFt
LiAgSW4gcHJvZHVjdGlvbiwgeW91IHdpbGwKK2luc3RhbnRpYXRlIHlvdXIgdGVtcGxhdGUgd2l0
aCBgQ29uY3JldGVQYWNrZXRTdHJlYW1gIGFzIHRoZSB0eXBlCithcmd1bWVudC4gIEluIHRlc3Rz
LCB5b3Ugd2lsbCBpbnN0YW50aWF0ZSB0aGUgc2FtZSB0ZW1wbGF0ZSB3aXRoCitgTW9ja1BhY2tl
dFN0cmVhbWAuICBGb3IgZXhhbXBsZSwgeW91IG1heSB3cml0ZToKKworYGBgCit0ZW1wbGF0ZSA8
Y2xhc3MgUGFja2V0U3RyZWFtPgordm9pZCBDcmVhdGVDb25uZWN0aW9uKFBhY2tldFN0cmVhbSog
c3RyZWFtKSB7IC4uLiB9CisKK3RlbXBsYXRlIDxjbGFzcyBQYWNrZXRTdHJlYW0+CitjbGFzcyBQ
YWNrZXRSZWFkZXIgeworIHB1YmxpYzoKKyAgdm9pZCBSZWFkUGFja2V0cyhQYWNrZXRTdHJlYW0q
IHN0cmVhbSwgc2l6ZV90IHBhY2tldF9udW0pOworfTsKK2BgYAorCitUaGVuIHlvdSBjYW4gdXNl
IGBDcmVhdGVDb25uZWN0aW9uPENvbmNyZXRlUGFja2V0U3RyZWFtPigpYCBhbmQKK2BQYWNrZXRS
ZWFkZXI8Q29uY3JldGVQYWNrZXRTdHJlYW0+YCBpbiBwcm9kdWN0aW9uIGNvZGUsIGFuZCB1c2UK
K2BDcmVhdGVDb25uZWN0aW9uPE1vY2tQYWNrZXRTdHJlYW0+KClgIGFuZAorYFBhY2tldFJlYWRl
cjxNb2NrUGFja2V0U3RyZWFtPmAgaW4gdGVzdHMuCisKK2BgYAorICBNb2NrUGFja2V0U3RyZWFt
IG1vY2tfc3RyZWFtOworICBFWFBFQ1RfQ0FMTChtb2NrX3N0cmVhbSwgLi4uKS4uLjsKKyAgLi4g
c2V0IG1vcmUgZXhwZWN0YXRpb25zIG9uIG1vY2tfc3RyZWFtIC4uLgorICBQYWNrZXRSZWFkZXI8
TW9ja1BhY2tldFN0cmVhbT4gcmVhZGVyKCZtb2NrX3N0cmVhbSk7CisgIC4uLiBleGVyY2lzZSBy
ZWFkZXIgLi4uCitgYGAKKworIyMgTW9ja2luZyBGcmVlIEZ1bmN0aW9ucyAjIworCitJdCdzIHBv
c3NpYmxlIHRvIHVzZSBHb29nbGUgTW9jayB0byBtb2NrIGEgZnJlZSBmdW5jdGlvbiAoaS5lLiBh
CitDLXN0eWxlIGZ1bmN0aW9uIG9yIGEgc3RhdGljIG1ldGhvZCkuICBZb3UganVzdCBuZWVkIHRv
IHJld3JpdGUgeW91cgorY29kZSB0byB1c2UgYW4gaW50ZXJmYWNlIChhYnN0cmFjdCBjbGFzcyku
CisKK0luc3RlYWQgb2YgY2FsbGluZyBhIGZyZWUgZnVuY3Rpb24gKHNheSwgYE9wZW5GaWxlYCkg
ZGlyZWN0bHksCitpbnRyb2R1Y2UgYW4gaW50ZXJmYWNlIGZvciBpdCBhbmQgaGF2ZSBhIGNvbmNy
ZXRlIHN1YmNsYXNzIHRoYXQgY2FsbHMKK3RoZSBmcmVlIGZ1bmN0aW9uOgorCitgYGAKK2NsYXNz
IEZpbGVJbnRlcmZhY2UgeworIHB1YmxpYzoKKyAgLi4uCisgIHZpcnR1YWwgYm9vbCBPcGVuKGNv
bnN0IGNoYXIqIHBhdGgsIGNvbnN0IGNoYXIqIG1vZGUpID0gMDsKK307CisKK2NsYXNzIEZpbGUg
OiBwdWJsaWMgRmlsZUludGVyZmFjZSB7CisgcHVibGljOgorICAuLi4KKyAgdmlydHVhbCBib29s
IE9wZW4oY29uc3QgY2hhciogcGF0aCwgY29uc3QgY2hhciogbW9kZSkgeworICAgIHJldHVybiBP
cGVuRmlsZShwYXRoLCBtb2RlKTsKKyAgfQorfTsKK2BgYAorCitZb3VyIGNvZGUgc2hvdWxkIHRh
bGsgdG8gYEZpbGVJbnRlcmZhY2VgIHRvIG9wZW4gYSBmaWxlLiAgTm93IGl0J3MKK2Vhc3kgdG8g
bW9jayBvdXQgdGhlIGZ1bmN0aW9uLgorCitUaGlzIG1heSBzZWVtIG11Y2ggaGFzc2xlLCBidXQg
aW4gcHJhY3RpY2UgeW91IG9mdGVuIGhhdmUgbXVsdGlwbGUKK3JlbGF0ZWQgZnVuY3Rpb25zIHRo
YXQgeW91IGNhbiBwdXQgaW4gdGhlIHNhbWUgaW50ZXJmYWNlLCBzbyB0aGUKK3Blci1mdW5jdGlv
biBzeW50YWN0aWMgb3ZlcmhlYWQgd2lsbCBiZSBtdWNoIGxvd2VyLgorCitJZiB5b3UgYXJlIGNv
bmNlcm5lZCBhYm91dCB0aGUgcGVyZm9ybWFuY2Ugb3ZlcmhlYWQgaW5jdXJyZWQgYnkKK3ZpcnR1
YWwgZnVuY3Rpb25zLCBhbmQgcHJvZmlsaW5nIGNvbmZpcm1zIHlvdXIgY29uY2VybiwgeW91IGNh
bgorY29tYmluZSB0aGlzIHdpdGggdGhlIHJlY2lwZSBmb3IgW21vY2tpbmcgbm9uLXZpcnR1YWwg
bWV0aG9kc10oI21vY2tpbmctbm9udmlydHVhbC1tZXRob2RzKS4KKworIyMgVGhlIE5pY2UsIHRo
ZSBTdHJpY3QsIGFuZCB0aGUgTmFnZ3kgIyMKKworSWYgYSBtb2NrIG1ldGhvZCBoYXMgbm8gYEVY
UEVDVF9DQUxMYCBzcGVjIGJ1dCBpcyBjYWxsZWQsIEdvb2dsZSBNb2NrCit3aWxsIHByaW50IGEg
d2FybmluZyBhYm91dCB0aGUgInVuaW50ZXJlc3RpbmcgY2FsbCIuIFRoZSByYXRpb25hbGUgaXM6
CisKKyAgKiBOZXcgbWV0aG9kcyBtYXkgYmUgYWRkZWQgdG8gYW4gaW50ZXJmYWNlIGFmdGVyIGEg
dGVzdCBpcyB3cml0dGVuLiBXZSBzaG91bGRuJ3QgZmFpbCBhIHRlc3QganVzdCBiZWNhdXNlIGEg
bWV0aG9kIGl0IGRvZXNuJ3Qga25vdyBhYm91dCBpcyBjYWxsZWQuCisgICogSG93ZXZlciwgdGhp
cyBtYXkgYWxzbyBtZWFuIHRoZXJlJ3MgYSBidWcgaW4gdGhlIHRlc3QsIHNvIEdvb2dsZSBNb2Nr
IHNob3VsZG4ndCBiZSBzaWxlbnQgZWl0aGVyLiBJZiB0aGUgdXNlciBiZWxpZXZlcyB0aGVzZSBj
YWxscyBhcmUgaGFybWxlc3MsIGhlIGNhbiBhZGQgYW4gYEVYUEVDVF9DQUxMKClgIHRvIHN1cHBy
ZXNzIHRoZSB3YXJuaW5nLgorCitIb3dldmVyLCBzb21ldGltZXMgeW91IG1heSB3YW50IHRvIHN1
cHByZXNzIGFsbCAidW5pbnRlcmVzdGluZyBjYWxsIgord2FybmluZ3MsIHdoaWxlIHNvbWV0aW1l
cyB5b3UgbWF5IHdhbnQgdGhlIG9wcG9zaXRlLCBpLmUuIHRvIHRyZWF0IGFsbAorb2YgdGhlbSBh
cyBlcnJvcnMuIEdvb2dsZSBNb2NrIGxldHMgeW91IG1ha2UgdGhlIGRlY2lzaW9uIG9uIGEKK3Bl
ci1tb2NrLW9iamVjdCBiYXNpcy4KKworU3VwcG9zZSB5b3VyIHRlc3QgdXNlcyBhIG1vY2sgY2xh
c3MgYE1vY2tGb29gOgorCitgYGAKK1RFU1QoLi4uKSB7CisgIE1vY2tGb28gbW9ja19mb287Cisg
IEVYUEVDVF9DQUxMKG1vY2tfZm9vLCBEb1RoaXMoKSk7CisgIC4uLiBjb2RlIHRoYXQgdXNlcyBt
b2NrX2ZvbyAuLi4KK30KK2BgYAorCitJZiBhIG1ldGhvZCBvZiBgbW9ja19mb29gIG90aGVyIHRo
YW4gYERvVGhpcygpYCBpcyBjYWxsZWQsIGl0IHdpbGwgYmUKK3JlcG9ydGVkIGJ5IEdvb2dsZSBN
b2NrIGFzIGEgd2FybmluZy4gSG93ZXZlciwgaWYgeW91IHJld3JpdGUgeW91cgordGVzdCB0byB1
c2UgYE5pY2VNb2NrPE1vY2tGb28+YCBpbnN0ZWFkLCB0aGUgd2FybmluZyB3aWxsIGJlIGdvbmUs
CityZXN1bHRpbmcgaW4gYSBjbGVhbmVyIHRlc3Qgb3V0cHV0OgorCitgYGAKK3VzaW5nIDo6dGVz
dGluZzo6TmljZU1vY2s7CisKK1RFU1QoLi4uKSB7CisgIE5pY2VNb2NrPE1vY2tGb28+IG1vY2tf
Zm9vOworICBFWFBFQ1RfQ0FMTChtb2NrX2ZvbywgRG9UaGlzKCkpOworICAuLi4gY29kZSB0aGF0
IHVzZXMgbW9ja19mb28gLi4uCit9CitgYGAKKworYE5pY2VNb2NrPE1vY2tGb28+YCBpcyBhIHN1
YmNsYXNzIG9mIGBNb2NrRm9vYCwgc28gaXQgY2FuIGJlIHVzZWQKK3doZXJldmVyIGBNb2NrRm9v
YCBpcyBhY2NlcHRlZC4KKworSXQgYWxzbyB3b3JrcyBpZiBgTW9ja0Zvb2AncyBjb25zdHJ1Y3Rv
ciB0YWtlcyBzb21lIGFyZ3VtZW50cywgYXMKK2BOaWNlTW9jazxNb2NrRm9vPmAgImluaGVyaXRz
IiBgTW9ja0Zvb2AncyBjb25zdHJ1Y3RvcnM6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpOaWNl
TW9jazsKKworVEVTVCguLi4pIHsKKyAgTmljZU1vY2s8TW9ja0Zvbz4gbW9ja19mb28oNSwgImhp
Iik7ICAvLyBDYWxscyBNb2NrRm9vKDUsICJoaSIpLgorICBFWFBFQ1RfQ0FMTChtb2NrX2Zvbywg
RG9UaGlzKCkpOworICAuLi4gY29kZSB0aGF0IHVzZXMgbW9ja19mb28gLi4uCit9CitgYGAKKwor
VGhlIHVzYWdlIG9mIGBTdHJpY3RNb2NrYCBpcyBzaW1pbGFyLCBleGNlcHQgdGhhdCBpdCBtYWtl
cyBhbGwKK3VuaW50ZXJlc3RpbmcgY2FsbHMgZmFpbHVyZXM6CisKK2BgYAordXNpbmcgOjp0ZXN0
aW5nOjpTdHJpY3RNb2NrOworCitURVNUKC4uLikgeworICBTdHJpY3RNb2NrPE1vY2tGb28+IG1v
Y2tfZm9vOworICBFWFBFQ1RfQ0FMTChtb2NrX2ZvbywgRG9UaGlzKCkpOworICAuLi4gY29kZSB0
aGF0IHVzZXMgbW9ja19mb28gLi4uCisKKyAgLy8gVGhlIHRlc3Qgd2lsbCBmYWlsIGlmIGEgbWV0
aG9kIG9mIG1vY2tfZm9vIG90aGVyIHRoYW4gRG9UaGlzKCkKKyAgLy8gaXMgY2FsbGVkLgorfQor
YGBgCisKK1RoZXJlIGFyZSBzb21lIGNhdmVhdHMgdGhvdWdoIChJIGRvbid0IGxpa2UgdGhlbSBq
dXN0IGFzIG11Y2ggYXMgdGhlCituZXh0IGd1eSwgYnV0IHNhZGx5IHRoZXkgYXJlIHNpZGUgZWZm
ZWN0cyBvZiBDKysncyBsaW1pdGF0aW9ucyk6CisKKyAgMS4gYE5pY2VNb2NrPE1vY2tGb28+YCBh
bmQgYFN0cmljdE1vY2s8TW9ja0Zvbz5gIG9ubHkgd29yayBmb3IgbW9jayBtZXRob2RzIGRlZmlu
ZWQgdXNpbmcgdGhlIGBNT0NLX01FVEhPRCpgIGZhbWlseSBvZiBtYWNyb3MgKipkaXJlY3RseSoq
IGluIHRoZSBgTW9ja0Zvb2AgY2xhc3MuIElmIGEgbW9jayBtZXRob2QgaXMgZGVmaW5lZCBpbiBh
ICoqYmFzZSBjbGFzcyoqIG9mIGBNb2NrRm9vYCwgdGhlICJuaWNlIiBvciAic3RyaWN0IiBtb2Rp
ZmllciBtYXkgbm90IGFmZmVjdCBpdCwgZGVwZW5kaW5nIG9uIHRoZSBjb21waWxlci4gSW4gcGFy
dGljdWxhciwgbmVzdGluZyBgTmljZU1vY2tgIGFuZCBgU3RyaWN0TW9ja2AgKGUuZy4gYE5pY2VN
b2NrPFN0cmljdE1vY2s8TW9ja0Zvbz4gPmApIGlzICoqbm90Kiogc3VwcG9ydGVkLgorICAxLiBU
aGUgY29uc3RydWN0b3JzIG9mIHRoZSBiYXNlIG1vY2sgKGBNb2NrRm9vYCkgY2Fubm90IGhhdmUg
YXJndW1lbnRzIHBhc3NlZCBieSBub24tY29uc3QgcmVmZXJlbmNlLCB3aGljaCBoYXBwZW5zIHRv
IGJlIGJhbm5lZCBieSB0aGUgW0dvb2dsZSBDKysgc3R5bGUgZ3VpZGVdKGh0dHA6Ly9nb29nbGUt
c3R5bGVndWlkZS5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmsvY3BwZ3VpZGUueG1sKS4KKyAgMS4g
RHVyaW5nIHRoZSBjb25zdHJ1Y3RvciBvciBkZXN0cnVjdG9yIG9mIGBNb2NrRm9vYCwgdGhlIG1v
Y2sgb2JqZWN0IGlzIF9ub3RfIG5pY2Ugb3Igc3RyaWN0LiAgVGhpcyBtYXkgY2F1c2Ugc3VycHJp
c2VzIGlmIHRoZSBjb25zdHJ1Y3RvciBvciBkZXN0cnVjdG9yIGNhbGxzIGEgbW9jayBtZXRob2Qg
b24gYHRoaXNgIG9iamVjdC4gKFRoaXMgYmVoYXZpb3IsIGhvd2V2ZXIsIGlzIGNvbnNpc3RlbnQg
d2l0aCBDKysncyBnZW5lcmFsIHJ1bGU6IGlmIGEgY29uc3RydWN0b3Igb3IgZGVzdHJ1Y3RvciBj
YWxscyBhIHZpcnR1YWwgbWV0aG9kIG9mIGB0aGlzYCBvYmplY3QsIHRoYXQgbWV0aG9kIGlzIHRy
ZWF0ZWQgYXMgbm9uLXZpcnR1YWwuICBJbiBvdGhlciB3b3JkcywgdG8gdGhlIGJhc2UgY2xhc3Mn
cyBjb25zdHJ1Y3RvciBvciBkZXN0cnVjdG9yLCBgdGhpc2Agb2JqZWN0IGJlaGF2ZXMgbGlrZSBh
biBpbnN0YW5jZSBvZiB0aGUgYmFzZSBjbGFzcywgbm90IHRoZSBkZXJpdmVkIGNsYXNzLiAgVGhp
cyBydWxlIGlzIHJlcXVpcmVkIGZvciBzYWZldHkuICBPdGhlcndpc2UgYSBiYXNlIGNvbnN0cnVj
dG9yIG1heSB1c2UgbWVtYmVycyBvZiBhIGRlcml2ZWQgY2xhc3MgYmVmb3JlIHRoZXkgYXJlIGlu
aXRpYWxpemVkLCBvciBhIGJhc2UgZGVzdHJ1Y3RvciBtYXkgdXNlIG1lbWJlcnMgb2YgYSBkZXJp
dmVkIGNsYXNzIGFmdGVyIHRoZXkgaGF2ZSBiZWVuIGRlc3Ryb3llZC4pCisKK0ZpbmFsbHksIHlv
dSBzaG91bGQgYmUgKip2ZXJ5IGNhdXRpb3VzKiogYWJvdXQgd2hlbiB0byB1c2UgbmFnZ3kgb3Ig
c3RyaWN0IG1vY2tzLCBhcyB0aGV5IHRlbmQgdG8gbWFrZSB0ZXN0cyBtb3JlIGJyaXR0bGUgYW5k
IGhhcmRlciB0byBtYWludGFpbi4gV2hlbiB5b3UgcmVmYWN0b3IgeW91ciBjb2RlIHdpdGhvdXQg
Y2hhbmdpbmcgaXRzIGV4dGVybmFsbHkgdmlzaWJsZSBiZWhhdmlvciwgaWRlYWxseSB5b3Ugc2hv
dWxkJ3QgbmVlZCB0byB1cGRhdGUgYW55IHRlc3RzLiBJZiB5b3VyIGNvZGUgaW50ZXJhY3RzIHdp
dGggYSBuYWdneSBtb2NrLCBob3dldmVyLCB5b3UgbWF5IHN0YXJ0IHRvIGdldCBzcGFtbWVkIHdp
dGggd2FybmluZ3MgYXMgdGhlIHJlc3VsdCBvZiB5b3VyIGNoYW5nZS4gV29yc2UsIGlmIHlvdXIg
Y29kZSBpbnRlcmFjdHMgd2l0aCBhIHN0cmljdCBtb2NrLCB5b3VyIHRlc3RzIG1heSBzdGFydCB0
byBmYWlsIGFuZCB5b3UnbGwgYmUgZm9yY2VkIHRvIGZpeCB0aGVtLiBPdXIgZ2VuZXJhbCByZWNv
bW1lbmRhdGlvbiBpcyB0byB1c2UgbmljZSBtb2NrcyAobm90IHlldCB0aGUgZGVmYXVsdCkgbW9z
dCBvZiB0aGUgdGltZSwgdXNlIG5hZ2d5IG1vY2tzICh0aGUgY3VycmVudCBkZWZhdWx0KSB3aGVu
IGRldmVsb3Bpbmcgb3IgZGVidWdnaW5nIHRlc3RzLCBhbmQgdXNlIHN0cmljdCBtb2NrcyBvbmx5
IGFzIHRoZSBsYXN0IHJlc29ydC4KKworIyMgU2ltcGxpZnlpbmcgdGhlIEludGVyZmFjZSB3aXRo
b3V0IEJyZWFraW5nIEV4aXN0aW5nIENvZGUgIyMKKworU29tZXRpbWVzIGEgbWV0aG9kIGhhcyBh
IGxvbmcgbGlzdCBvZiBhcmd1bWVudHMgdGhhdCBpcyBtb3N0bHkKK3VuaW50ZXJlc3RpbmcuIEZv
ciBleGFtcGxlLAorCitgYGAKK2NsYXNzIExvZ1NpbmsgeworIHB1YmxpYzoKKyAgLi4uCisgIHZp
cnR1YWwgdm9pZCBzZW5kKExvZ1NldmVyaXR5IHNldmVyaXR5LCBjb25zdCBjaGFyKiBmdWxsX2Zp
bGVuYW1lLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBiYXNlX2ZpbGVuYW1lLCBp
bnQgbGluZSwKKyAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHRtKiB0bV90aW1lLAor
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBtZXNzYWdlLCBzaXplX3QgbWVzc2FnZV9s
ZW4pID0gMDsKK307CitgYGAKKworVGhpcyBtZXRob2QncyBhcmd1bWVudCBsaXN0IGlzIGxlbmd0
aHkgYW5kIGhhcmQgdG8gd29yayB3aXRoIChsZXQncworc2F5IHRoYXQgdGhlIGBtZXNzYWdlYCBh
cmd1bWVudCBpcyBub3QgZXZlbiAwLXRlcm1pbmF0ZWQpLiBJZiB3ZSBtb2NrCitpdCBhcyBpcywg
dXNpbmcgdGhlIG1vY2sgd2lsbCBiZSBhd2t3YXJkLiBJZiwgaG93ZXZlciwgd2UgdHJ5IHRvCitz
aW1wbGlmeSB0aGlzIGludGVyZmFjZSwgd2UnbGwgbmVlZCB0byBmaXggYWxsIGNsaWVudHMgZGVw
ZW5kaW5nIG9uCitpdCwgd2hpY2ggaXMgb2Z0ZW4gaW5mZWFzaWJsZS4KKworVGhlIHRyaWNrIGlz
IHRvIHJlLWRpc3BhdGNoIHRoZSBtZXRob2QgaW4gdGhlIG1vY2sgY2xhc3M6CisKK2BgYAorY2xh
c3MgU2NvcGVkTW9ja0xvZyA6IHB1YmxpYyBMb2dTaW5rIHsKKyBwdWJsaWM6CisgIC4uLgorICB2
aXJ0dWFsIHZvaWQgc2VuZChMb2dTZXZlcml0eSBzZXZlcml0eSwgY29uc3QgY2hhciogZnVsbF9m
aWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYmFzZV9maWxlbmFtZSwg
aW50IGxpbmUsIGNvbnN0IHRtKiB0bV90aW1lLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBtZXNzYWdlLCBzaXplX3QgbWVzc2FnZV9sZW4pIHsKKyAgICAvLyBXZSBhcmUgb25seSBp
bnRlcmVzdGVkIGluIHRoZSBsb2cgc2V2ZXJpdHksIGZ1bGwgZmlsZSBuYW1lLCBhbmQKKyAgICAv
LyBsb2cgbWVzc2FnZS4KKyAgICBMb2coc2V2ZXJpdHksIGZ1bGxfZmlsZW5hbWUsIHN0ZDo6c3Ry
aW5nKG1lc3NhZ2UsIG1lc3NhZ2VfbGVuKSk7CisgIH0KKworICAvLyBJbXBsZW1lbnRzIHRoZSBt
b2NrIG1ldGhvZDoKKyAgLy8KKyAgLy8gICB2b2lkIExvZyhMb2dTZXZlcml0eSBzZXZlcml0eSwK
KyAgLy8gICAgICAgICAgICBjb25zdCBzdHJpbmcmIGZpbGVfcGF0aCwKKyAgLy8gICAgICAgICAg
ICBjb25zdCBzdHJpbmcmIG1lc3NhZ2UpOworICBNT0NLX01FVEhPRDMoTG9nLCB2b2lkKExvZ1Nl
dmVyaXR5IHNldmVyaXR5LCBjb25zdCBzdHJpbmcmIGZpbGVfcGF0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzdHJpbmcmIG1lc3NhZ2UpKTsKK307CitgYGAKKworQnkgZGVmaW5p
bmcgYSBuZXcgbW9jayBtZXRob2Qgd2l0aCBhIHRyaW1tZWQgYXJndW1lbnQgbGlzdCwgd2UgbWFr
ZQordGhlIG1vY2sgY2xhc3MgbXVjaCBtb3JlIHVzZXItZnJpZW5kbHkuCisKKyMjIEFsdGVybmF0
aXZlIHRvIE1vY2tpbmcgQ29uY3JldGUgQ2xhc3NlcyAjIworCitPZnRlbiB5b3UgbWF5IGZpbmQg
eW91cnNlbGYgdXNpbmcgY2xhc3NlcyB0aGF0IGRvbid0IGltcGxlbWVudAoraW50ZXJmYWNlcy4g
SW4gb3JkZXIgdG8gdGVzdCB5b3VyIGNvZGUgdGhhdCB1c2VzIHN1Y2ggYSBjbGFzcyAobGV0J3MK
K2NhbGwgaXQgYENvbmNyZXRlYCksIHlvdSBtYXkgYmUgdGVtcHRlZCB0byBtYWtlIHRoZSBtZXRo
b2RzIG9mCitgQ29uY3JldGVgIHZpcnR1YWwgYW5kIHRoZW4gbW9jayBpdC4KKworVHJ5IG5vdCB0
byBkbyB0aGF0LgorCitNYWtpbmcgYSBub24tdmlydHVhbCBmdW5jdGlvbiB2aXJ0dWFsIGlzIGEg
YmlnIGRlY2lzaW9uLiBJdCBjcmVhdGVzIGFuCitleHRlbnNpb24gcG9pbnQgd2hlcmUgc3ViY2xh
c3NlcyBjYW4gdHdlYWsgeW91ciBjbGFzcycgYmVoYXZpb3IuIFRoaXMKK3dlYWtlbnMgeW91ciBj
b250cm9sIG9uIHRoZSBjbGFzcyBiZWNhdXNlIG5vdyBpdCdzIGhhcmRlciB0byBtYWludGFpbgor
dGhlIGNsYXNzJyBpbnZhcmlhbnRzLiBZb3Ugc2hvdWxkIG1ha2UgYSBmdW5jdGlvbiB2aXJ0dWFs
IG9ubHkgd2hlbgordGhlcmUgaXMgYSB2YWxpZCByZWFzb24gZm9yIGEgc3ViY2xhc3MgdG8gb3Zl
cnJpZGUgaXQuCisKK01vY2tpbmcgY29uY3JldGUgY2xhc3NlcyBkaXJlY3RseSBpcyBwcm9ibGVt
YXRpYyBhcyBpdCBjcmVhdGVzIGEgdGlnaHQKK2NvdXBsaW5nIGJldHdlZW4gdGhlIGNsYXNzIGFu
ZCB0aGUgdGVzdHMgLSBhbnkgc21hbGwgY2hhbmdlIGluIHRoZQorY2xhc3MgbWF5IGludmFsaWRh
dGUgeW91ciB0ZXN0cyBhbmQgbWFrZSB0ZXN0IG1haW50ZW5hbmNlIGEgcGFpbi4KKworVG8gYXZv
aWQgc3VjaCBwcm9ibGVtcywgbWFueSBwcm9ncmFtbWVycyBoYXZlIGJlZW4gcHJhY3RpY2luZyAi
Y29kaW5nCit0byBpbnRlcmZhY2VzIjogaW5zdGVhZCBvZiB0YWxraW5nIHRvIHRoZSBgQ29uY3Jl
dGVgIGNsYXNzLCB5b3VyIGNvZGUKK3dvdWxkIGRlZmluZSBhbiBpbnRlcmZhY2UgYW5kIHRhbGsg
dG8gaXQuIFRoZW4geW91IGltcGxlbWVudCB0aGF0CitpbnRlcmZhY2UgYXMgYW4gYWRhcHRvciBv
biB0b3Agb2YgYENvbmNyZXRlYC4gSW4gdGVzdHMsIHlvdSBjYW4gZWFzaWx5Cittb2NrIHRoYXQg
aW50ZXJmYWNlIHRvIG9ic2VydmUgaG93IHlvdXIgY29kZSBpcyBkb2luZy4KKworVGhpcyB0ZWNo
bmlxdWUgaW5jdXJzIHNvbWUgb3ZlcmhlYWQ6CisKKyAgKiBZb3UgcGF5IHRoZSBjb3N0IG9mIHZp
cnR1YWwgZnVuY3Rpb24gY2FsbHMgKHVzdWFsbHkgbm90IGEgcHJvYmxlbSkuCisgICogVGhlcmUg
aXMgbW9yZSBhYnN0cmFjdGlvbiBmb3IgdGhlIHByb2dyYW1tZXJzIHRvIGxlYXJuLgorCitIb3dl
dmVyLCBpdCBjYW4gYWxzbyBicmluZyBzaWduaWZpY2FudCBiZW5lZml0cyBpbiBhZGRpdGlvbiB0
byBiZXR0ZXIKK3Rlc3RhYmlsaXR5OgorCisgICogYENvbmNyZXRlYCdzIEFQSSBtYXkgbm90IGZp
dCB5b3VyIHByb2JsZW0gZG9tYWluIHZlcnkgd2VsbCwgYXMgeW91IG1heSBub3QgYmUgdGhlIG9u
bHkgY2xpZW50IGl0IHRyaWVzIHRvIHNlcnZlLiBCeSBkZXNpZ25pbmcgeW91ciBvd24gaW50ZXJm
YWNlLCB5b3UgaGF2ZSBhIGNoYW5jZSB0byB0YWlsb3IgaXQgdG8geW91ciBuZWVkIC0geW91IG1h
eSBhZGQgaGlnaGVyLWxldmVsIGZ1bmN0aW9uYWxpdGllcywgcmVuYW1lIHN0dWZmLCBldGMgaW5z
dGVhZCBvZiBqdXN0IHRyaW1taW5nIHRoZSBjbGFzcy4gVGhpcyBhbGxvd3MgeW91IHRvIHdyaXRl
IHlvdXIgY29kZSAodXNlciBvZiB0aGUgaW50ZXJmYWNlKSBpbiBhIG1vcmUgbmF0dXJhbCB3YXks
IHdoaWNoIG1lYW5zIGl0IHdpbGwgYmUgbW9yZSByZWFkYWJsZSwgbW9yZSBtYWludGFpbmFibGUs
IGFuZCB5b3UnbGwgYmUgbW9yZSBwcm9kdWN0aXZlLgorICAqIElmIGBDb25jcmV0ZWAncyBpbXBs
ZW1lbnRhdGlvbiBldmVyIGhhcyB0byBjaGFuZ2UsIHlvdSBkb24ndCBoYXZlIHRvIHJld3JpdGUg
ZXZlcnl3aGVyZSBpdCBpcyB1c2VkLiBJbnN0ZWFkLCB5b3UgY2FuIGFic29yYiB0aGUgY2hhbmdl
IGluIHlvdXIgaW1wbGVtZW50YXRpb24gb2YgdGhlIGludGVyZmFjZSwgYW5kIHlvdXIgb3RoZXIg
Y29kZSBhbmQgdGVzdHMgd2lsbCBiZSBpbnN1bGF0ZWQgZnJvbSB0aGlzIGNoYW5nZS4KKworU29t
ZSBwZW9wbGUgd29ycnkgdGhhdCBpZiBldmVyeW9uZSBpcyBwcmFjdGljaW5nIHRoaXMgdGVjaG5p
cXVlLCB0aGV5Cit3aWxsIGVuZCB1cCB3cml0aW5nIGxvdHMgb2YgcmVkdW5kYW50IGNvZGUuIFRo
aXMgY29uY2VybiBpcyB0b3RhbGx5Cit1bmRlcnN0YW5kYWJsZS4gSG93ZXZlciwgdGhlcmUgYXJl
IHR3byByZWFzb25zIHdoeSBpdCBtYXkgbm90IGJlIHRoZQorY2FzZToKKworICAqIERpZmZlcmVu
dCBwcm9qZWN0cyBtYXkgbmVlZCB0byB1c2UgYENvbmNyZXRlYCBpbiBkaWZmZXJlbnQgd2F5cywg
c28gdGhlIGJlc3QgaW50ZXJmYWNlcyBmb3IgdGhlbSB3aWxsIGJlIGRpZmZlcmVudC4gVGhlcmVm
b3JlLCBlYWNoIG9mIHRoZW0gd2lsbCBoYXZlIGl0cyBvd24gZG9tYWluLXNwZWNpZmljIGludGVy
ZmFjZSBvbiB0b3Agb2YgYENvbmNyZXRlYCwgYW5kIHRoZXkgd2lsbCBub3QgYmUgdGhlIHNhbWUg
Y29kZS4KKyAgKiBJZiBlbm91Z2ggcHJvamVjdHMgd2FudCB0byB1c2UgdGhlIHNhbWUgaW50ZXJm
YWNlLCB0aGV5IGNhbiBhbHdheXMgc2hhcmUgaXQsIGp1c3QgbGlrZSB0aGV5IGhhdmUgYmVlbiBz
aGFyaW5nIGBDb25jcmV0ZWAuIFlvdSBjYW4gY2hlY2sgaW4gdGhlIGludGVyZmFjZSBhbmQgdGhl
IGFkYXB0b3Igc29tZXdoZXJlIG5lYXIgYENvbmNyZXRlYCAocGVyaGFwcyBpbiBhIGBjb250cmli
YCBzdWItZGlyZWN0b3J5KSBhbmQgbGV0IG1hbnkgcHJvamVjdHMgdXNlIGl0LgorCitZb3UgbmVl
ZCB0byB3ZWlnaCB0aGUgcHJvcyBhbmQgY29ucyBjYXJlZnVsbHkgZm9yIHlvdXIgcGFydGljdWxh
cgorcHJvYmxlbSwgYnV0IEknZCBsaWtlIHRvIGFzc3VyZSB5b3UgdGhhdCB0aGUgSmF2YSBjb21t
dW5pdHkgaGFzIGJlZW4KK3ByYWN0aWNpbmcgdGhpcyBmb3IgYSBsb25nIHRpbWUgYW5kIGl0J3Mg
YSBwcm92ZW4gZWZmZWN0aXZlIHRlY2huaXF1ZQorYXBwbGljYWJsZSBpbiBhIHdpZGUgdmFyaWV0
eSBvZiBzaXR1YXRpb25zLiA6LSkKKworIyMgRGVsZWdhdGluZyBDYWxscyB0byBhIEZha2UgIyMK
KworU29tZSB0aW1lcyB5b3UgaGF2ZSBhIG5vbi10cml2aWFsIGZha2UgaW1wbGVtZW50YXRpb24g
b2YgYW4KK2ludGVyZmFjZS4gRm9yIGV4YW1wbGU6CisKK2BgYAorY2xhc3MgRm9vIHsKKyBwdWJs
aWM6CisgIHZpcnR1YWwgfkZvbygpIHt9CisgIHZpcnR1YWwgY2hhciBEb1RoaXMoaW50IG4pID0g
MDsKKyAgdmlydHVhbCB2b2lkIERvVGhhdChjb25zdCBjaGFyKiBzLCBpbnQqIHApID0gMDsKK307
CisKK2NsYXNzIEZha2VGb28gOiBwdWJsaWMgRm9vIHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgY2hh
ciBEb1RoaXMoaW50IG4pIHsKKyAgICByZXR1cm4gKG4gPiAwKSA/ICcrJyA6CisgICAgICAgIChu
IDwgMCkgPyAnLScgOiAnMCc7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgRG9UaGF0KGNvbnN0IGNo
YXIqIHMsIGludCogcCkgeworICAgICpwID0gc3RybGVuKHMpOworICB9Cit9OworYGBgCisKK05v
dyB5b3Ugd2FudCB0byBtb2NrIHRoaXMgaW50ZXJmYWNlIHN1Y2ggdGhhdCB5b3UgY2FuIHNldCBl
eHBlY3RhdGlvbnMKK29uIGl0LiBIb3dldmVyLCB5b3UgYWxzbyB3YW50IHRvIHVzZSBgRmFrZUZv
b2AgZm9yIHRoZSBkZWZhdWx0CitiZWhhdmlvciwgYXMgZHVwbGljYXRpbmcgaXQgaW4gdGhlIG1v
Y2sgb2JqZWN0IGlzLCB3ZWxsLCBhIGxvdCBvZgord29yay4KKworV2hlbiB5b3UgZGVmaW5lIHRo
ZSBtb2NrIGNsYXNzIHVzaW5nIEdvb2dsZSBNb2NrLCB5b3UgY2FuIGhhdmUgaXQKK2RlbGVnYXRl
IGl0cyBkZWZhdWx0IGFjdGlvbiB0byBhIGZha2UgY2xhc3MgeW91IGFscmVhZHkgaGF2ZSwgdXNp
bmcKK3RoaXMgcGF0dGVybjoKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6Ol87Cit1c2luZyA6OnRl
c3Rpbmc6Okludm9rZTsKKworY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28geworIHB1YmxpYzoK
KyAgLy8gTm9ybWFsIG1vY2sgbWV0aG9kIGRlZmluaXRpb25zIHVzaW5nIEdvb2dsZSBNb2NrLgor
ICBNT0NLX01FVEhPRDEoRG9UaGlzLCBjaGFyKGludCBuKSk7CisgIE1PQ0tfTUVUSE9EMihEb1Ro
YXQsIHZvaWQoY29uc3QgY2hhciogcywgaW50KiBwKSk7CisKKyAgLy8gRGVsZWdhdGVzIHRoZSBk
ZWZhdWx0IGFjdGlvbnMgb2YgdGhlIG1ldGhvZHMgdG8gYSBGYWtlRm9vIG9iamVjdC4KKyAgLy8g
VGhpcyBtdXN0IGJlIGNhbGxlZCAqYmVmb3JlKiB0aGUgY3VzdG9tIE9OX0NBTEwoKSBzdGF0ZW1l
bnRzLgorICB2b2lkIERlbGVnYXRlVG9GYWtlKCkgeworICAgIE9OX0NBTEwoKnRoaXMsIERvVGhp
cyhfKSkKKyAgICAgICAgLldpbGxCeURlZmF1bHQoSW52b2tlKCZmYWtlXywgJkZha2VGb286OkRv
VGhpcykpOworICAgIE9OX0NBTEwoKnRoaXMsIERvVGhhdChfLCBfKSkKKyAgICAgICAgLldpbGxC
eURlZmF1bHQoSW52b2tlKCZmYWtlXywgJkZha2VGb286OkRvVGhhdCkpOworICB9CisgcHJpdmF0
ZToKKyAgRmFrZUZvbyBmYWtlXzsgIC8vIEtlZXBzIGFuIGluc3RhbmNlIG9mIHRoZSBmYWtlIGlu
IHRoZSBtb2NrLgorfTsKK2BgYAorCitXaXRoIHRoYXQsIHlvdSBjYW4gdXNlIGBNb2NrRm9vYCBp
biB5b3VyIHRlc3RzIGFzIHVzdWFsLiBKdXN0IHJlbWVtYmVyCit0aGF0IGlmIHlvdSBkb24ndCBl
eHBsaWNpdGx5IHNldCBhbiBhY3Rpb24gaW4gYW4gYE9OX0NBTEwoKWAgb3IKK2BFWFBFQ1RfQ0FM
TCgpYCwgdGhlIGZha2Ugd2lsbCBiZSBjYWxsZWQgdXBvbiB0byBkbyBpdDoKKworYGBgCit1c2lu
ZyA6OnRlc3Rpbmc6Ol87CisKK1RFU1QoQWJjVGVzdCwgWHl6KSB7CisgIE1vY2tGb28gZm9vOwor
ICBmb28uRGVsZWdhdGVUb0Zha2UoKTsgLy8gRW5hYmxlcyB0aGUgZmFrZSBmb3IgZGVsZWdhdGlv
bi4KKworICAvLyBQdXQgeW91ciBPTl9DQUxMKGZvbywgLi4uKXMgaGVyZSwgaWYgYW55LgorCisg
IC8vIE5vIGFjdGlvbiBzcGVjaWZpZWQsIG1lYW5pbmcgdG8gdXNlIHRoZSBkZWZhdWx0IGFjdGlv
bi4KKyAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoaXMoNSkpOworICBFWFBFQ1RfQ0FMTChmb28sIERv
VGhhdChfLCBfKSk7CisKKyAgaW50IG4gPSAwOworICBFWFBFQ1RfRVEoJysnLCBmb28uRG9UaGlz
KDUpKTsgIC8vIEZha2VGb286OkRvVGhpcygpIGlzIGludm9rZWQuCisgIGZvby5Eb1RoYXQoIkhp
IiwgJm4pOyAgICAgICAgICAgLy8gRmFrZUZvbzo6RG9UaGF0KCkgaXMgaW52b2tlZC4KKyAgRVhQ
RUNUX0VRKDIsIG4pOworfQorYGBgCisKKyoqU29tZSB0aXBzOioqCisKKyAgKiBJZiB5b3Ugd2Fu
dCwgeW91IGNhbiBzdGlsbCBvdmVycmlkZSB0aGUgZGVmYXVsdCBhY3Rpb24gYnkgcHJvdmlkaW5n
IHlvdXIgb3duIGBPTl9DQUxMKClgIG9yIHVzaW5nIGAuV2lsbE9uY2UoKWAgLyBgLldpbGxSZXBl
YXRlZGx5KClgIGluIGBFWFBFQ1RfQ0FMTCgpYC4KKyAgKiBJbiBgRGVsZWdhdGVUb0Zha2UoKWAs
IHlvdSBvbmx5IG5lZWQgdG8gZGVsZWdhdGUgdGhlIG1ldGhvZHMgd2hvc2UgZmFrZSBpbXBsZW1l
bnRhdGlvbiB5b3UgaW50ZW5kIHRvIHVzZS4KKyAgKiBUaGUgZ2VuZXJhbCB0ZWNobmlxdWUgZGlz
Y3Vzc2VkIGhlcmUgd29ya3MgZm9yIG92ZXJsb2FkZWQgbWV0aG9kcywgYnV0IHlvdSdsbCBuZWVk
IHRvIHRlbGwgdGhlIGNvbXBpbGVyIHdoaWNoIHZlcnNpb24geW91IG1lYW4uIFRvIGRpc2FtYmln
dWF0ZSBhIG1vY2sgZnVuY3Rpb24gKHRoZSBvbmUgeW91IHNwZWNpZnkgaW5zaWRlIHRoZSBwYXJl
bnRoZXNlcyBvZiBgT05fQ0FMTCgpYCksIHNlZSB0aGUgIlNlbGVjdGluZyBCZXR3ZWVuIE92ZXJs
b2FkZWQgRnVuY3Rpb25zIiBzZWN0aW9uIG9uIHRoaXMgcGFnZTsgdG8gZGlzYW1iaWd1YXRlIGEg
ZmFrZSBmdW5jdGlvbiAodGhlIG9uZSB5b3UgcGxhY2UgaW5zaWRlIGBJbnZva2UoKWApLCB1c2Ug
YSBgc3RhdGljX2Nhc3RgIHRvIHNwZWNpZnkgdGhlIGZ1bmN0aW9uJ3MgdHlwZS4gRm9yIGluc3Rh
bmNlLCBpZiBjbGFzcyBgRm9vYCBoYXMgbWV0aG9kcyBgY2hhciBEb1RoaXMoaW50IG4pYCBhbmQg
YGJvb2wgRG9UaGlzKGRvdWJsZSB4KSBjb25zdGAsIGFuZCB5b3Ugd2FudCB0byBpbnZva2UgdGhl
IGxhdHRlciwgeW91IG5lZWQgdG8gd3JpdGUgYEludm9rZSgmZmFrZV8sIHN0YXRpY19jYXN0PGJv
b2wgKEZha2VGb286OiopKGRvdWJsZSkgY29uc3Q+KCZGYWtlRm9vOjpEb1RoaXMpKWAgaW5zdGVh
ZCBvZiBgSW52b2tlKCZmYWtlXywgJkZha2VGb286OkRvVGhpcylgIChUaGUgc3RyYW5nZS1sb29r
aW5nIHRoaW5nIGluc2lkZSB0aGUgYW5nbGVkIGJyYWNrZXRzIG9mIGBzdGF0aWNfY2FzdGAgaXMg
dGhlIHR5cGUgb2YgYSBmdW5jdGlvbiBwb2ludGVyIHRvIHRoZSBzZWNvbmQgYERvVGhpcygpYCBt
ZXRob2QuKS4KKyAgKiBIYXZpbmcgdG8gbWl4IGEgbW9jayBhbmQgYSBmYWtlIGlzIG9mdGVuIGEg
c2lnbiBvZiBzb21ldGhpbmcgZ29uZSB3cm9uZy4gUGVyaGFwcyB5b3UgaGF2ZW4ndCBnb3QgdXNl
ZCB0byB0aGUgaW50ZXJhY3Rpb24tYmFzZWQgd2F5IG9mIHRlc3RpbmcgeWV0LiBPciBwZXJoYXBz
IHlvdXIgaW50ZXJmYWNlIGlzIHRha2luZyBvbiB0b28gbWFueSByb2xlcyBhbmQgc2hvdWxkIGJl
IHNwbGl0IHVwLiBUaGVyZWZvcmUsICoqZG9uJ3QgYWJ1c2UgdGhpcyoqLiBXZSB3b3VsZCBvbmx5
IHJlY29tbWVuZCB0byBkbyBpdCBhcyBhbiBpbnRlcm1lZGlhdGUgc3RlcCB3aGVuIHlvdSBhcmUg
cmVmYWN0b3JpbmcgeW91ciBjb2RlLgorCitSZWdhcmRpbmcgdGhlIHRpcCBvbiBtaXhpbmcgYSBt
b2NrIGFuZCBhIGZha2UsIGhlcmUncyBhbiBleGFtcGxlIG9uCit3aHkgaXQgbWF5IGJlIGEgYmFk
IHNpZ246IFN1cHBvc2UgeW91IGhhdmUgYSBjbGFzcyBgU3lzdGVtYCBmb3IKK2xvdy1sZXZlbCBz
eXN0ZW0gb3BlcmF0aW9ucy4gSW4gcGFydGljdWxhciwgaXQgZG9lcyBmaWxlIGFuZCBJL08KK29w
ZXJhdGlvbnMuIEFuZCBzdXBwb3NlIHlvdSB3YW50IHRvIHRlc3QgaG93IHlvdXIgY29kZSB1c2Vz
IGBTeXN0ZW1gCit0byBkbyBJL08sIGFuZCB5b3UganVzdCB3YW50IHRoZSBmaWxlIG9wZXJhdGlv
bnMgdG8gd29yayBub3JtYWxseS4gSWYKK3lvdSBtb2NrIG91dCB0aGUgZW50aXJlIGBTeXN0ZW1g
IGNsYXNzLCB5b3UnbGwgaGF2ZSB0byBwcm92aWRlIGEgZmFrZQoraW1wbGVtZW50YXRpb24gZm9y
IHRoZSBmaWxlIG9wZXJhdGlvbiBwYXJ0LCB3aGljaCBzdWdnZXN0cyB0aGF0CitgU3lzdGVtYCBp
cyB0YWtpbmcgb24gdG9vIG1hbnkgcm9sZXMuCisKK0luc3RlYWQsIHlvdSBjYW4gZGVmaW5lIGEg
YEZpbGVPcHNgIGludGVyZmFjZSBhbmQgYW4gYElPT3BzYCBpbnRlcmZhY2UKK2FuZCBzcGxpdCBg
U3lzdGVtYCdzIGZ1bmN0aW9uYWxpdGllcyBpbnRvIHRoZSB0d28uIFRoZW4geW91IGNhbiBtb2Nr
CitgSU9PcHNgIHdpdGhvdXQgbW9ja2luZyBgRmlsZU9wc2AuCisKKyMjIERlbGVnYXRpbmcgQ2Fs
bHMgdG8gYSBSZWFsIE9iamVjdCAjIworCitXaGVuIHVzaW5nIHRlc3RpbmcgZG91YmxlcyAobW9j
a3MsIGZha2VzLCBzdHVicywgYW5kIGV0YyksIHNvbWV0aW1lcwordGhlaXIgYmVoYXZpb3JzIHdp
bGwgZGlmZmVyIGZyb20gdGhvc2Ugb2YgdGhlIHJlYWwgb2JqZWN0cy4gVGhpcworZGlmZmVyZW5j
ZSBjb3VsZCBiZSBlaXRoZXIgaW50ZW50aW9uYWwgKGFzIGluIHNpbXVsYXRpbmcgYW4gZXJyb3Ig
c3VjaAordGhhdCB5b3UgY2FuIHRlc3QgdGhlIGVycm9yIGhhbmRsaW5nIGNvZGUpIG9yIHVuaW50
ZW50aW9uYWwuIElmIHlvdXIKK21vY2tzIGhhdmUgZGlmZmVyZW50IGJlaGF2aW9ycyB0aGFuIHRo
ZSByZWFsIG9iamVjdHMgYnkgbWlzdGFrZSwgeW91Citjb3VsZCBlbmQgdXAgd2l0aCBjb2RlIHRo
YXQgcGFzc2VzIHRoZSB0ZXN0cyBidXQgZmFpbHMgaW4gcHJvZHVjdGlvbi4KKworWW91IGNhbiB1
c2UgdGhlIF9kZWxlZ2F0aW5nLXRvLXJlYWxfIHRlY2huaXF1ZSB0byBlbnN1cmUgdGhhdCB5b3Vy
Cittb2NrIGhhcyB0aGUgc2FtZSBiZWhhdmlvciBhcyB0aGUgcmVhbCBvYmplY3Qgd2hpbGUgcmV0
YWluaW5nIHRoZQorYWJpbGl0eSB0byB2YWxpZGF0ZSBjYWxscy4gVGhpcyB0ZWNobmlxdWUgaXMg
dmVyeSBzaW1pbGFyIHRvIHRoZQorZGVsZWdhdGluZy10by1mYWtlIHRlY2huaXF1ZSwgdGhlIGRp
ZmZlcmVuY2UgYmVpbmcgdGhhdCB3ZSB1c2UgYSByZWFsCitvYmplY3QgaW5zdGVhZCBvZiBhIGZh
a2UuIEhlcmUncyBhbiBleGFtcGxlOgorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6XzsKK3VzaW5n
IDo6dGVzdGluZzo6QXRMZWFzdDsKK3VzaW5nIDo6dGVzdGluZzo6SW52b2tlOworCitjbGFzcyBN
b2NrRm9vIDogcHVibGljIEZvbyB7CisgcHVibGljOgorICBNb2NrRm9vKCkgeworICAgIC8vIEJ5
IGRlZmF1bHQsIGFsbCBjYWxscyBhcmUgZGVsZWdhdGVkIHRvIHRoZSByZWFsIG9iamVjdC4KKyAg
ICBPTl9DQUxMKCp0aGlzLCBEb1RoaXMoKSkKKyAgICAgICAgLldpbGxCeURlZmF1bHQoSW52b2tl
KCZyZWFsXywgJkZvbzo6RG9UaGlzKSk7CisgICAgT05fQ0FMTCgqdGhpcywgRG9UaGF0KF8pKQor
ICAgICAgICAuV2lsbEJ5RGVmYXVsdChJbnZva2UoJnJlYWxfLCAmRm9vOjpEb1RoYXQpKTsKKyAg
ICAuLi4KKyAgfQorICBNT0NLX01FVEhPRDAoRG9UaGlzLCAuLi4pOworICBNT0NLX01FVEhPRDEo
RG9UaGF0LCAuLi4pOworICAuLi4KKyBwcml2YXRlOgorICBGb28gcmVhbF87Cit9OworLi4uCisK
KyAgTW9ja0ZvbyBtb2NrOworCisgIEVYUEVDVF9DQUxMKG1vY2ssIERvVGhpcygpKQorICAgICAg
LlRpbWVzKDMpOworICBFWFBFQ1RfQ0FMTChtb2NrLCBEb1RoYXQoIkhpIikpCisgICAgICAuVGlt
ZXMoQXRMZWFzdCgxKSk7CisgIC4uLiB1c2UgbW9jayBpbiB0ZXN0IC4uLgorYGBgCisKK1dpdGgg
dGhpcywgR29vZ2xlIE1vY2sgd2lsbCB2ZXJpZnkgdGhhdCB5b3VyIGNvZGUgbWFkZSB0aGUgcmln
aHQgY2FsbHMKKyh3aXRoIHRoZSByaWdodCBhcmd1bWVudHMsIGluIHRoZSByaWdodCBvcmRlciwg
Y2FsbGVkIHRoZSByaWdodCBudW1iZXIKK29mIHRpbWVzLCBldGMpLCBhbmQgYSByZWFsIG9iamVj
dCB3aWxsIGFuc3dlciB0aGUgY2FsbHMgKHNvIHRoZQorYmVoYXZpb3Igd2lsbCBiZSB0aGUgc2Ft
ZSBhcyBpbiBwcm9kdWN0aW9uKS4gVGhpcyBnaXZlcyB5b3UgdGhlIGJlc3QKK29mIGJvdGggd29y
bGRzLgorCisjIyBEZWxlZ2F0aW5nIENhbGxzIHRvIGEgUGFyZW50IENsYXNzICMjCisKK0lkZWFs
bHksIHlvdSBzaG91bGQgY29kZSB0byBpbnRlcmZhY2VzLCB3aG9zZSBtZXRob2RzIGFyZSBhbGwg
cHVyZQordmlydHVhbC4gSW4gcmVhbGl0eSwgc29tZXRpbWVzIHlvdSBkbyBuZWVkIHRvIG1vY2sg
YSB2aXJ0dWFsIG1ldGhvZAordGhhdCBpcyBub3QgcHVyZSAoaS5lLCBpdCBhbHJlYWR5IGhhcyBh
biBpbXBsZW1lbnRhdGlvbikuIEZvciBleGFtcGxlOgorCitgYGAKK2NsYXNzIEZvbyB7CisgcHVi
bGljOgorICB2aXJ0dWFsIH5Gb28oKTsKKworICB2aXJ0dWFsIHZvaWQgUHVyZShpbnQgbikgPSAw
OworICB2aXJ0dWFsIGludCBDb25jcmV0ZShjb25zdCBjaGFyKiBzdHIpIHsgLi4uIH0KK307CisK
K2NsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKKyBwdWJsaWM6CisgIC8vIE1vY2tpbmcgYSBw
dXJlIG1ldGhvZC4KKyAgTU9DS19NRVRIT0QxKFB1cmUsIHZvaWQoaW50IG4pKTsKKyAgLy8gTW9j
a2luZyBhIGNvbmNyZXRlIG1ldGhvZC4gIEZvbzo6Q29uY3JldGUoKSBpcyBzaGFkb3dlZC4KKyAg
TU9DS19NRVRIT0QxKENvbmNyZXRlLCBpbnQoY29uc3QgY2hhciogc3RyKSk7Cit9OworYGBgCisK
K1NvbWV0aW1lcyB5b3UgbWF5IHdhbnQgdG8gY2FsbCBgRm9vOjpDb25jcmV0ZSgpYCBpbnN0ZWFk
IG9mCitgTW9ja0Zvbzo6Q29uY3JldGUoKWAuIFBlcmhhcHMgeW91IHdhbnQgdG8gZG8gaXQgYXMg
cGFydCBvZiBhIHN0dWIKK2FjdGlvbiwgb3IgcGVyaGFwcyB5b3VyIHRlc3QgZG9lc24ndCBuZWVk
IHRvIG1vY2sgYENvbmNyZXRlKClgIGF0IGFsbAorKGJ1dCBpdCB3b3VsZCBiZSBvaC1zbyBwYWlu
ZnVsIHRvIGhhdmUgdG8gZGVmaW5lIGEgbmV3IG1vY2sgY2xhc3MKK3doZW5ldmVyIHlvdSBkb24n
dCBuZWVkIHRvIG1vY2sgb25lIG9mIGl0cyBtZXRob2RzKS4KKworVGhlIHRyaWNrIGlzIHRvIGxl
YXZlIGEgYmFjayBkb29yIGluIHlvdXIgbW9jayBjbGFzcyBmb3IgYWNjZXNzaW5nIHRoZQorcmVh
bCBtZXRob2RzIGluIHRoZSBiYXNlIGNsYXNzOgorCitgYGAKK2NsYXNzIE1vY2tGb28gOiBwdWJs
aWMgRm9vIHsKKyBwdWJsaWM6CisgIC8vIE1vY2tpbmcgYSBwdXJlIG1ldGhvZC4KKyAgTU9DS19N
RVRIT0QxKFB1cmUsIHZvaWQoaW50IG4pKTsKKyAgLy8gTW9ja2luZyBhIGNvbmNyZXRlIG1ldGhv
ZC4gIEZvbzo6Q29uY3JldGUoKSBpcyBzaGFkb3dlZC4KKyAgTU9DS19NRVRIT0QxKENvbmNyZXRl
LCBpbnQoY29uc3QgY2hhciogc3RyKSk7CisKKyAgLy8gVXNlIHRoaXMgdG8gY2FsbCBDb25jcmV0
ZSgpIGRlZmluZWQgaW4gRm9vLgorICBpbnQgRm9vQ29uY3JldGUoY29uc3QgY2hhciogc3RyKSB7
IHJldHVybiBGb286OkNvbmNyZXRlKHN0cik7IH0KK307CitgYGAKKworTm93LCB5b3UgY2FuIGNh
bGwgYEZvbzo6Q29uY3JldGUoKWAgaW5zaWRlIGFuIGFjdGlvbiBieToKKworYGBgCit1c2luZyA6
OnRlc3Rpbmc6Ol87Cit1c2luZyA6OnRlc3Rpbmc6Okludm9rZTsKKy4uLgorICBFWFBFQ1RfQ0FM
TChmb28sIENvbmNyZXRlKF8pKQorICAgICAgLldpbGxPbmNlKEludm9rZSgmZm9vLCAmTW9ja0Zv
bzo6Rm9vQ29uY3JldGUpKTsKK2BgYAorCitvciB0ZWxsIHRoZSBtb2NrIG9iamVjdCB0aGF0IHlv
dSBkb24ndCB3YW50IHRvIG1vY2sgYENvbmNyZXRlKClgOgorCitgYGAKK3VzaW5nIDo6dGVzdGlu
Zzo6SW52b2tlOworLi4uCisgIE9OX0NBTEwoZm9vLCBDb25jcmV0ZShfKSkKKyAgICAgIC5XaWxs
QnlEZWZhdWx0KEludm9rZSgmZm9vLCAmTW9ja0Zvbzo6Rm9vQ29uY3JldGUpKTsKK2BgYAorCiso
V2h5IGRvbid0IHdlIGp1c3Qgd3JpdGUgYEludm9rZSgmZm9vLCAmRm9vOjpDb25jcmV0ZSlgPyBJ
ZiB5b3UgZG8KK3RoYXQsIGBNb2NrRm9vOjpDb25jcmV0ZSgpYCB3aWxsIGJlIGNhbGxlZCAoYW5k
IGNhdXNlIGFuIGluZmluaXRlCityZWN1cnNpb24pIHNpbmNlIGBGb286OkNvbmNyZXRlKClgIGlz
IHZpcnR1YWwuIFRoYXQncyBqdXN0IGhvdyBDKysKK3dvcmtzLikKKworIyBVc2luZyBNYXRjaGVy
cyAjCisKKyMjIE1hdGNoaW5nIEFyZ3VtZW50IFZhbHVlcyBFeGFjdGx5ICMjCisKK1lvdSBjYW4g
c3BlY2lmeSBleGFjdGx5IHdoaWNoIGFyZ3VtZW50cyBhIG1vY2sgbWV0aG9kIGlzIGV4cGVjdGlu
ZzoKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6OlJldHVybjsKKy4uLgorICBFWFBFQ1RfQ0FMTChm
b28sIERvVGhpcyg1KSkKKyAgICAgIC5XaWxsT25jZShSZXR1cm4oJ2EnKSk7CisgIEVYUEVDVF9D
QUxMKGZvbywgRG9UaGF0KCJIZWxsbyIsIGJhcikpOworYGBgCisKKyMjIFVzaW5nIFNpbXBsZSBN
YXRjaGVycyAjIworCitZb3UgY2FuIHVzZSBtYXRjaGVycyB0byBtYXRjaCBhcmd1bWVudHMgdGhh
dCBoYXZlIGEgY2VydGFpbiBwcm9wZXJ0eToKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6OkdlOwor
dXNpbmcgOjp0ZXN0aW5nOjpOb3ROdWxsOwordXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm47CisuLi4K
KyAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoaXMoR2UoNSkpKSAgLy8gVGhlIGFyZ3VtZW50IG11c3Qg
YmUgPj0gNS4KKyAgICAgIC5XaWxsT25jZShSZXR1cm4oJ2EnKSk7CisgIEVYUEVDVF9DQUxMKGZv
bywgRG9UaGF0KCJIZWxsbyIsIE5vdE51bGwoKSkpOworICAvLyBUaGUgc2Vjb25kIGFyZ3VtZW50
IG11c3Qgbm90IGJlIE5VTEwuCitgYGAKKworQSBmcmVxdWVudGx5IHVzZWQgbWF0Y2hlciBpcyBg
X2AsIHdoaWNoIG1hdGNoZXMgYW55dGhpbmc6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpfOwor
dXNpbmcgOjp0ZXN0aW5nOjpOb3ROdWxsOworLi4uCisgIEVYUEVDVF9DQUxMKGZvbywgRG9UaGF0
KF8sIE5vdE51bGwoKSkpOworYGBgCisKKyMjIENvbWJpbmluZyBNYXRjaGVycyAjIworCitZb3Ug
Y2FuIGJ1aWxkIGNvbXBsZXggbWF0Y2hlcnMgZnJvbSBleGlzdGluZyBvbmVzIHVzaW5nIGBBbGxP
ZigpYCwKK2BBbnlPZigpYCwgYW5kIGBOb3QoKWA6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpB
bGxPZjsKK3VzaW5nIDo6dGVzdGluZzo6R3Q7Cit1c2luZyA6OnRlc3Rpbmc6Okhhc1N1YnN0cjsK
K3VzaW5nIDo6dGVzdGluZzo6TmU7Cit1c2luZyA6OnRlc3Rpbmc6Ok5vdDsKKy4uLgorICAvLyBU
aGUgYXJndW1lbnQgbXVzdCBiZSA+IDUgYW5kICE9IDEwLgorICBFWFBFQ1RfQ0FMTChmb28sIERv
VGhpcyhBbGxPZihHdCg1KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmUoMTAp
KSkpOworCisgIC8vIFRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IG5vdCBjb250YWluIHN1Yi1zdHJp
bmcgImJsYWgiLgorICBFWFBFQ1RfQ0FMTChmb28sIERvVGhhdChOb3QoSGFzU3Vic3RyKCJibGFo
IikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKSk7CitgYGAKKworIyMgQ2FzdGlu
ZyBNYXRjaGVycyAjIworCitHb29nbGUgTW9jayBtYXRjaGVycyBhcmUgc3RhdGljYWxseSB0eXBl
ZCwgbWVhbmluZyB0aGF0IHRoZSBjb21waWxlcgorY2FuIGNhdGNoIHlvdXIgbWlzdGFrZSBpZiB5
b3UgdXNlIGEgbWF0Y2hlciBvZiB0aGUgd3JvbmcgdHlwZSAoZm9yCitleGFtcGxlLCBpZiB5b3Ug
dXNlIGBFcSg1KWAgdG8gbWF0Y2ggYSBgc3RyaW5nYCBhcmd1bWVudCkuIEdvb2QgZm9yCit5b3Uh
CisKK1NvbWV0aW1lcywgaG93ZXZlciwgeW91IGtub3cgd2hhdCB5b3UncmUgZG9pbmcgYW5kIHdh
bnQgdGhlIGNvbXBpbGVyCit0byBnaXZlIHlvdSBzb21lIHNsYWNrLiBPbmUgZXhhbXBsZSBpcyB0
aGF0IHlvdSBoYXZlIGEgbWF0Y2hlciBmb3IKK2Bsb25nYCBhbmQgdGhlIGFyZ3VtZW50IHlvdSB3
YW50IHRvIG1hdGNoIGlzIGBpbnRgLiBXaGlsZSB0aGUgdHdvCit0eXBlcyBhcmVuJ3QgZXhhY3Rs
eSB0aGUgc2FtZSwgdGhlcmUgaXMgbm90aGluZyByZWFsbHkgd3Jvbmcgd2l0aAordXNpbmcgYSBg
TWF0Y2hlcjxsb25nPmAgdG8gbWF0Y2ggYW4gYGludGAgLSBhZnRlciBhbGwsIHdlIGNhbiBmaXJz
dAorY29udmVydCB0aGUgYGludGAgYXJndW1lbnQgdG8gYSBgbG9uZ2AgYmVmb3JlIGdpdmluZyBp
dCB0byB0aGUKK21hdGNoZXIuCisKK1RvIHN1cHBvcnQgdGhpcyBuZWVkLCBHb29nbGUgTW9jayBn
aXZlcyB5b3UgdGhlCitgU2FmZU1hdGNoZXJDYXN0PFQ+KG0pYCBmdW5jdGlvbi4gSXQgY2FzdHMg
YSBtYXRjaGVyIGBtYCB0byB0eXBlCitgTWF0Y2hlcjxUPmAuIFRvIGVuc3VyZSBzYWZldHksIEdv
b2dsZSBNb2NrIGNoZWNrcyB0aGF0IChsZXQgYFVgIGJlIHRoZQordHlwZSBgbWAgYWNjZXB0cyk6
CisKKyAgMS4gVHlwZSBgVGAgY2FuIGJlIGltcGxpY2l0bHkgY2FzdCB0byB0eXBlIGBVYDsKKyAg
MS4gV2hlbiBib3RoIGBUYCBhbmQgYFVgIGFyZSBidWlsdC1pbiBhcml0aG1ldGljIHR5cGVzIChg
Ym9vbGAsIGludGVnZXJzLCBhbmQgZmxvYXRpbmctcG9pbnQgbnVtYmVycyksIHRoZSBjb252ZXJz
aW9uIGZyb20gYFRgIHRvIGBVYCBpcyBub3QgbG9zc3kgKGluIG90aGVyIHdvcmRzLCBhbnkgdmFs
dWUgcmVwcmVzZW50YWJsZSBieSBgVGAgY2FuIGFsc28gYmUgcmVwcmVzZW50ZWQgYnkgYFVgKTsg
YW5kCisgIDEuIFdoZW4gYFVgIGlzIGEgcmVmZXJlbmNlLCBgVGAgbXVzdCBhbHNvIGJlIGEgcmVm
ZXJlbmNlIChhcyB0aGUgdW5kZXJseWluZyBtYXRjaGVyIG1heSBiZSBpbnRlcmVzdGVkIGluIHRo
ZSBhZGRyZXNzIG9mIHRoZSBgVWAgdmFsdWUpLgorCitUaGUgY29kZSB3b24ndCBjb21waWxlIGlm
IGFueSBvZiB0aGVzZSBjb25kaXRpb25zIGlzbid0IG1ldC4KKworSGVyZSdzIG9uZSBleGFtcGxl
OgorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6U2FmZU1hdGNoZXJDYXN0OworCisvLyBBIGJhc2Ug
Y2xhc3MgYW5kIGEgY2hpbGQgY2xhc3MuCitjbGFzcyBCYXNlIHsgLi4uIH07CitjbGFzcyBEZXJp
dmVkIDogcHVibGljIEJhc2UgeyAuLi4gfTsKKworY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28g
eworIHB1YmxpYzoKKyAgTU9DS19NRVRIT0QxKERvVGhpcywgdm9pZChEZXJpdmVkKiBkZXJpdmVk
KSk7Cit9OworLi4uCisKKyAgTW9ja0ZvbyBmb287CisgIC8vIG0gaXMgYSBNYXRjaGVyPEJhc2Uq
PiB3ZSBnb3QgZnJvbSBzb21ld2hlcmUuCisgIEVYUEVDVF9DQUxMKGZvbywgRG9UaGlzKFNhZmVN
YXRjaGVyQ2FzdDxEZXJpdmVkKj4obSkpKTsKK2BgYAorCitJZiB5b3UgZmluZCBgU2FmZU1hdGNo
ZXJDYXN0PFQ+KG0pYCB0b28gbGltaXRpbmcsIHlvdSBjYW4gdXNlIGEgc2ltaWxhcgorZnVuY3Rp
b24gYE1hdGNoZXJDYXN0PFQ+KG0pYC4gVGhlIGRpZmZlcmVuY2UgaXMgdGhhdCBgTWF0Y2hlckNh
c3RgIHdvcmtzCithcyBsb25nIGFzIHlvdSBjYW4gYHN0YXRpY19jYXN0YCB0eXBlIGBUYCB0byB0
eXBlIGBVYC4KKworYE1hdGNoZXJDYXN0YCBlc3NlbnRpYWxseSBsZXRzIHlvdSBieXBhc3MgQysr
J3MgdHlwZSBzeXN0ZW0KKyhgc3RhdGljX2Nhc3RgIGlzbid0IGFsd2F5cyBzYWZlIGFzIGl0IGNv
dWxkIHRocm93IGF3YXkgaW5mb3JtYXRpb24sCitmb3IgZXhhbXBsZSksIHNvIGJlIGNhcmVmdWwg
bm90IHRvIG1pc3VzZS9hYnVzZSBpdC4KKworIyMgU2VsZWN0aW5nIEJldHdlZW4gT3ZlcmxvYWRl
ZCBGdW5jdGlvbnMgIyMKKworSWYgeW91IGV4cGVjdCBhbiBvdmVybG9hZGVkIGZ1bmN0aW9uIHRv
IGJlIGNhbGxlZCwgdGhlIGNvbXBpbGVyIG1heQorbmVlZCBzb21lIGhlbHAgb24gd2hpY2ggb3Zl
cmxvYWRlZCB2ZXJzaW9uIGl0IGlzLgorCitUbyBkaXNhbWJpZ3VhdGUgZnVuY3Rpb25zIG92ZXJs
b2FkZWQgb24gdGhlIGNvbnN0LW5lc3Mgb2YgdGhpcyBvYmplY3QsCit1c2UgdGhlIGBDb25zdCgp
YCBhcmd1bWVudCB3cmFwcGVyLgorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6UmV0dXJuUmVmOwor
CitjbGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7CisgIC4uLgorICBNT0NLX01FVEhPRDAoR2V0
QmFyLCBCYXImKCkpOworICBNT0NLX0NPTlNUX01FVEhPRDAoR2V0QmFyLCBjb25zdCBCYXImKCkp
OworfTsKKy4uLgorCisgIE1vY2tGb28gZm9vOworICBCYXIgYmFyMSwgYmFyMjsKKyAgRVhQRUNU
X0NBTEwoZm9vLCBHZXRCYXIoKSkgICAgICAgICAvLyBUaGUgbm9uLWNvbnN0IEdldEJhcigpLgor
ICAgICAgLldpbGxPbmNlKFJldHVyblJlZihiYXIxKSk7CisgIEVYUEVDVF9DQUxMKENvbnN0KGZv
byksIEdldEJhcigpKSAgLy8gVGhlIGNvbnN0IEdldEJhcigpLgorICAgICAgLldpbGxPbmNlKFJl
dHVyblJlZihiYXIyKSk7CitgYGAKKworKGBDb25zdCgpYCBpcyBkZWZpbmVkIGJ5IEdvb2dsZSBN
b2NrIGFuZCByZXR1cm5zIGEgYGNvbnN0YCByZWZlcmVuY2UKK3RvIGl0cyBhcmd1bWVudC4pCisK
K1RvIGRpc2FtYmlndWF0ZSBvdmVybG9hZGVkIGZ1bmN0aW9ucyB3aXRoIHRoZSBzYW1lIG51bWJl
ciBvZiBhcmd1bWVudHMKK2J1dCBkaWZmZXJlbnQgYXJndW1lbnQgdHlwZXMsIHlvdSBtYXkgbmVl
ZCB0byBzcGVjaWZ5IHRoZSBleGFjdCB0eXBlCitvZiBhIG1hdGNoZXIsIGVpdGhlciBieSB3cmFw
cGluZyB5b3VyIG1hdGNoZXIgaW4gYE1hdGNoZXI8dHlwZT4oKWAsIG9yCit1c2luZyBhIG1hdGNo
ZXIgd2hvc2UgdHlwZSBpcyBmaXhlZCAoYFR5cGVkRXE8dHlwZT5gLCBgQW48dHlwZT4oKWAsCitl
dGMpOgorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6QW47Cit1c2luZyA6OnRlc3Rpbmc6Okx0Owor
dXNpbmcgOjp0ZXN0aW5nOjpNYXRjaGVyOwordXNpbmcgOjp0ZXN0aW5nOjpUeXBlZEVxOworCitj
bGFzcyBNb2NrUHJpbnRlciA6IHB1YmxpYyBQcmludGVyIHsKKyBwdWJsaWM6CisgIE1PQ0tfTUVU
SE9EMShQcmludCwgdm9pZChpbnQgbikpOworICBNT0NLX01FVEhPRDEoUHJpbnQsIHZvaWQoY2hh
ciBjKSk7Cit9OworCitURVNUKFByaW50ZXJUZXN0LCBQcmludCkgeworICBNb2NrUHJpbnRlciBw
cmludGVyOworCisgIEVYUEVDVF9DQUxMKHByaW50ZXIsIFByaW50KEFuPGludD4oKSkpOyAgICAg
ICAgICAgIC8vIHZvaWQgUHJpbnQoaW50KTsKKyAgRVhQRUNUX0NBTEwocHJpbnRlciwgUHJpbnQo
TWF0Y2hlcjxpbnQ+KEx0KDUpKSkpOyAgLy8gdm9pZCBQcmludChpbnQpOworICBFWFBFQ1RfQ0FM
TChwcmludGVyLCBQcmludChUeXBlZEVxPGNoYXI+KCdhJykpKTsgICAvLyB2b2lkIFByaW50KGNo
YXIpOworCisgIHByaW50ZXIuUHJpbnQoMyk7CisgIHByaW50ZXIuUHJpbnQoNik7CisgIHByaW50
ZXIuUHJpbnQoJ2EnKTsKK30KK2BgYAorCisjIyBQZXJmb3JtaW5nIERpZmZlcmVudCBBY3Rpb25z
IEJhc2VkIG9uIHRoZSBBcmd1bWVudHMgIyMKKworV2hlbiBhIG1vY2sgbWV0aG9kIGlzIGNhbGxl
ZCwgdGhlIF9sYXN0XyBtYXRjaGluZyBleHBlY3RhdGlvbiB0aGF0J3MKK3N0aWxsIGFjdGl2ZSB3
aWxsIGJlIHNlbGVjdGVkICh0aGluayAibmV3ZXIgb3ZlcnJpZGVzIG9sZGVyIikuIFNvLCB5b3UK
K2NhbiBtYWtlIGEgbWV0aG9kIGRvIGRpZmZlcmVudCB0aGluZ3MgZGVwZW5kaW5nIG9uIGl0cyBh
cmd1bWVudCB2YWx1ZXMKK2xpa2UgdGhpczoKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6Ol87Cit1
c2luZyA6OnRlc3Rpbmc6Okx0OwordXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm47CisuLi4KKyAgLy8g
VGhlIGRlZmF1bHQgY2FzZS4KKyAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoaXMoXykpCisgICAgICAu
V2lsbFJlcGVhdGVkbHkoUmV0dXJuKCdiJykpOworCisgIC8vIFRoZSBtb3JlIHNwZWNpZmljIGNh
c2UuCisgIEVYUEVDVF9DQUxMKGZvbywgRG9UaGlzKEx0KDUpKSkKKyAgICAgIC5XaWxsUmVwZWF0
ZWRseShSZXR1cm4oJ2EnKSk7CitgYGAKKworTm93LCBpZiBgZm9vLkRvVGhpcygpYCBpcyBjYWxs
ZWQgd2l0aCBhIHZhbHVlIGxlc3MgdGhhbiA1LCBgJ2EnYCB3aWxsCitiZSByZXR1cm5lZDsgb3Ro
ZXJ3aXNlIGAnYidgIHdpbGwgYmUgcmV0dXJuZWQuCisKKyMjIE1hdGNoaW5nIE11bHRpcGxlIEFy
Z3VtZW50cyBhcyBhIFdob2xlICMjCisKK1NvbWV0aW1lcyBpdCdzIG5vdCBlbm91Z2ggdG8gbWF0
Y2ggdGhlIGFyZ3VtZW50cyBpbmRpdmlkdWFsbHkuIEZvcgorZXhhbXBsZSwgd2UgbWF5IHdhbnQg
dG8gc2F5IHRoYXQgdGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgbGVzcyB0aGFuCit0aGUgc2Vj
b25kIGFyZ3VtZW50LiBUaGUgYFdpdGgoKWAgY2xhdXNlIGFsbG93cyB1cyB0byBtYXRjaAorYWxs
IGFyZ3VtZW50cyBvZiBhIG1vY2sgZnVuY3Rpb24gYXMgYSB3aG9sZS4gRm9yIGV4YW1wbGUsCisK
K2BgYAordXNpbmcgOjp0ZXN0aW5nOjpfOwordXNpbmcgOjp0ZXN0aW5nOjpMdDsKK3VzaW5nIDo6
dGVzdGluZzo6TmU7CisuLi4KKyAgRVhQRUNUX0NBTEwoZm9vLCBJblJhbmdlKE5lKDApLCBfKSkK
KyAgICAgIC5XaXRoKEx0KCkpOworYGBgCisKK3NheXMgdGhhdCB0aGUgZmlyc3QgYXJndW1lbnQg
b2YgYEluUmFuZ2UoKWAgbXVzdCBub3QgYmUgMCwgYW5kIG11c3QgYmUKK2xlc3MgdGhhbiB0aGUg
c2Vjb25kIGFyZ3VtZW50LgorCitUaGUgZXhwcmVzc2lvbiBpbnNpZGUgYFdpdGgoKWAgbXVzdCBi
ZSBhIG1hdGNoZXIgb2YgdHlwZQorYE1hdGNoZXI8IDo6dGVzdGluZzo6dHVwbGU8QTEsIC4uLiwg
QW4+ID5gLCB3aGVyZSBgQTFgLCAuLi4sIGBBbmAgYXJlIHRoZQordHlwZXMgb2YgdGhlIGZ1bmN0
aW9uIGFyZ3VtZW50cy4KKworWW91IGNhbiBhbHNvIHdyaXRlIGBBbGxBcmdzKG0pYCBpbnN0ZWFk
IG9mIGBtYCBpbnNpZGUgYC5XaXRoKClgLiBUaGUKK3R3byBmb3JtcyBhcmUgZXF1aXZhbGVudCwg
YnV0IGAuV2l0aChBbGxBcmdzKEx0KCkpKWAgaXMgbW9yZSByZWFkYWJsZQordGhhbiBgLldpdGgo
THQoKSlgLgorCitZb3UgY2FuIHVzZSBgQXJnczxrMSwgLi4uLCBrbj4obSlgIHRvIG1hdGNoIHRo
ZSBgbmAgc2VsZWN0ZWQgYXJndW1lbnRzCisoYXMgYSB0dXBsZSkgYWdhaW5zdCBgbWAuIEZvciBl
eGFtcGxlLAorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6XzsKK3VzaW5nIDo6dGVzdGluZzo6QWxs
T2Y7Cit1c2luZyA6OnRlc3Rpbmc6OkFyZ3M7Cit1c2luZyA6OnRlc3Rpbmc6Okx0OworLi4uCisg
IEVYUEVDVF9DQUxMKGZvbywgQmxhaChfLCBfLCBfKSkKKyAgICAgIC5XaXRoKEFsbE9mKEFyZ3M8
MCwgMT4oTHQoKSksIEFyZ3M8MSwgMj4oTHQoKSkpKTsKK2BgYAorCitzYXlzIHRoYXQgYEJsYWgo
KWAgd2lsbCBiZSBjYWxsZWQgd2l0aCBhcmd1bWVudHMgYHhgLCBgeWAsIGFuZCBgemAgd2hlcmUK
K2B4IDwgeSA8IHpgLgorCitBcyBhIGNvbnZlbmllbmNlIGFuZCBleGFtcGxlLCBHb29nbGUgTW9j
ayBwcm92aWRlcyBzb21lIG1hdGNoZXJzIGZvcgorMi10dXBsZXMsIGluY2x1ZGluZyB0aGUgYEx0
KClgIG1hdGNoZXIgYWJvdmUuIFNlZSB0aGUgW0NoZWF0U2hlZXRdKENoZWF0U2hlZXQubWQpIGZv
cgordGhlIGNvbXBsZXRlIGxpc3QuCisKK05vdGUgdGhhdCBpZiB5b3Ugd2FudCB0byBwYXNzIHRo
ZSBhcmd1bWVudHMgdG8gYSBwcmVkaWNhdGUgb2YgeW91ciBvd24KKyhlLmcuIGAuV2l0aChBcmdz
PDAsIDE+KFRydWx5KCZNeVByZWRpY2F0ZSkpKWApLCB0aGF0IHByZWRpY2F0ZSBNVVNUIGJlCit3
cml0dGVuIHRvIHRha2UgYSBgOjp0ZXN0aW5nOjp0dXBsZWAgYXMgaXRzIGFyZ3VtZW50OyBHb29n
bGUgTW9jayB3aWxsIHBhc3MgdGhlIGBuYCBzZWxlY3RlZCBhcmd1bWVudHMgYXMgX29uZV8gc2lu
Z2xlIHR1cGxlIHRvIHRoZSBwcmVkaWNhdGUuCisKKyMjIFVzaW5nIE1hdGNoZXJzIGFzIFByZWRp
Y2F0ZXMgIyMKKworSGF2ZSB5b3Ugbm90aWNlZCB0aGF0IGEgbWF0Y2hlciBpcyBqdXN0IGEgZmFu
Y3kgcHJlZGljYXRlIHRoYXQgYWxzbwora25vd3MgaG93IHRvIGRlc2NyaWJlIGl0c2VsZj8gTWFu
eSBleGlzdGluZyBhbGdvcml0aG1zIHRha2UgcHJlZGljYXRlcworYXMgYXJndW1lbnRzIChlLmcu
IHRob3NlIGRlZmluZWQgaW4gU1RMJ3MgYDxhbGdvcml0aG0+YCBoZWFkZXIpLCBhbmQKK2l0IHdv
dWxkIGJlIGEgc2hhbWUgaWYgR29vZ2xlIE1vY2sgbWF0Y2hlcnMgYXJlIG5vdCBhbGxvd2VkIHRv
CitwYXJ0aWNpcGF0ZS4KKworTHVja2lseSwgeW91IGNhbiB1c2UgYSBtYXRjaGVyIHdoZXJlIGEg
dW5hcnkgcHJlZGljYXRlIGZ1bmN0b3IgaXMKK2V4cGVjdGVkIGJ5IHdyYXBwaW5nIGl0IGluc2lk
ZSB0aGUgYE1hdGNoZXMoKWAgZnVuY3Rpb24uIEZvciBleGFtcGxlLAorCitgYGAKKyNpbmNsdWRl
IDxhbGdvcml0aG0+CisjaW5jbHVkZSA8dmVjdG9yPgorCitzdGQ6OnZlY3RvcjxpbnQ+IHY7Cisu
Li4KKy8vIEhvdyBtYW55IGVsZW1lbnRzIGluIHYgYXJlID49IDEwPworY29uc3QgaW50IGNvdW50
ID0gY291bnRfaWYodi5iZWdpbigpLCB2LmVuZCgpLCBNYXRjaGVzKEdlKDEwKSkpOworYGBgCisK
K1NpbmNlIHlvdSBjYW4gYnVpbGQgY29tcGxleCBtYXRjaGVycyBmcm9tIHNpbXBsZXIgb25lcyBl
YXNpbHkgdXNpbmcKK0dvb2dsZSBNb2NrLCB0aGlzIGdpdmVzIHlvdSBhIHdheSB0byBjb252ZW5p
ZW50bHkgY29uc3RydWN0IGNvbXBvc2l0ZQorcHJlZGljYXRlcyAoZG9pbmcgdGhlIHNhbWUgdXNp
bmcgU1RMJ3MgYDxmdW5jdGlvbmFsPmAgaGVhZGVyIGlzIGp1c3QKK3BhaW5mdWwpLiBGb3IgZXhh
bXBsZSwgaGVyZSdzIGEgcHJlZGljYXRlIHRoYXQncyBzYXRpc2ZpZWQgYnkgYW55CitudW1iZXIg
dGhhdCBpcyA+PSAwLCA8PSAxMDAsIGFuZCAhPSA1MDoKKworYGBgCitNYXRjaGVzKEFsbE9mKEdl
KDApLCBMZSgxMDApLCBOZSg1MCkpKQorYGBgCisKKyMjIFVzaW5nIE1hdGNoZXJzIGluIEdvb2ds
ZSBUZXN0IEFzc2VydGlvbnMgIyMKKworU2luY2UgbWF0Y2hlcnMgYXJlIGJhc2ljYWxseSBwcmVk
aWNhdGVzIHRoYXQgYWxzbyBrbm93IGhvdyB0byBkZXNjcmliZQordGhlbXNlbHZlcywgdGhlcmUg
aXMgYSB3YXkgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlbSBpbgorW0dvb2dsZSBUZXN0XSguLi8u
Li9nb29nbGV0ZXN0LykgYXNzZXJ0aW9ucy4gSXQncworY2FsbGVkIGBBU1NFUlRfVEhBVGAgYW5k
IGBFWFBFQ1RfVEhBVGA6CisKK2BgYAorICBBU1NFUlRfVEhBVCh2YWx1ZSwgbWF0Y2hlcik7ICAv
LyBBc3NlcnRzIHRoYXQgdmFsdWUgbWF0Y2hlcyBtYXRjaGVyLgorICBFWFBFQ1RfVEhBVCh2YWx1
ZSwgbWF0Y2hlcik7ICAvLyBUaGUgbm9uLWZhdGFsIHZlcnNpb24uCitgYGAKKworRm9yIGV4YW1w
bGUsIGluIGEgR29vZ2xlIFRlc3QgdGVzdCB5b3UgY2FuIHdyaXRlOgorCitgYGAKKyNpbmNsdWRl
ICJnbW9jay9nbW9jay5oIgorCit1c2luZyA6OnRlc3Rpbmc6OkFsbE9mOwordXNpbmcgOjp0ZXN0
aW5nOjpHZTsKK3VzaW5nIDo6dGVzdGluZzo6TGU7Cit1c2luZyA6OnRlc3Rpbmc6Ok1hdGNoZXNS
ZWdleDsKK3VzaW5nIDo6dGVzdGluZzo6U3RhcnRzV2l0aDsKKy4uLgorCisgIEVYUEVDVF9USEFU
KEZvbygpLCBTdGFydHNXaXRoKCJIZWxsbyIpKTsKKyAgRVhQRUNUX1RIQVQoQmFyKCksIE1hdGNo
ZXNSZWdleCgiTGluZSBcXGQrIikpOworICBBU1NFUlRfVEhBVChCYXooKSwgQWxsT2YoR2UoNSks
IExlKDEwKSkpOworYGBgCisKK3doaWNoIChhcyB5b3UgY2FuIHByb2JhYmx5IGd1ZXNzKSBleGVj
dXRlcyBgRm9vKClgLCBgQmFyKClgLCBhbmQKK2BCYXooKWAsIGFuZCB2ZXJpZmllcyB0aGF0Ogor
CisgICogYEZvbygpYCByZXR1cm5zIGEgc3RyaW5nIHRoYXQgc3RhcnRzIHdpdGggYCJIZWxsbyJg
LgorICAqIGBCYXIoKWAgcmV0dXJucyBhIHN0cmluZyB0aGF0IG1hdGNoZXMgcmVndWxhciBleHBy
ZXNzaW9uIGAiTGluZSBcXGQrImAuCisgICogYEJheigpYCByZXR1cm5zIGEgbnVtYmVyIGluIHRo
ZSByYW5nZSBbNSwgMTBdLgorCitUaGUgbmljZSB0aGluZyBhYm91dCB0aGVzZSBtYWNyb3MgaXMg
dGhhdCBfdGhleSByZWFkIGxpa2UKK0VuZ2xpc2hfLiBUaGV5IGdlbmVyYXRlIGluZm9ybWF0aXZl
IG1lc3NhZ2VzIHRvby4gRm9yIGV4YW1wbGUsIGlmIHRoZQorZmlyc3QgYEVYUEVDVF9USEFUKClg
IGFib3ZlIGZhaWxzLCB0aGUgbWVzc2FnZSB3aWxsIGJlIHNvbWV0aGluZyBsaWtlOgorCitgYGAK
K1ZhbHVlIG9mOiBGb28oKQorICBBY3R1YWw6ICJIaSwgd29ybGQhIgorRXhwZWN0ZWQ6IHN0YXJ0
cyB3aXRoICJIZWxsbyIKK2BgYAorCisqKkNyZWRpdDoqKiBUaGUgaWRlYSBvZiBgKEFTU0VSVHxF
WFBFQ1QpX1RIQVRgIHdhcyBzdG9sZW4gZnJvbSB0aGUKK1tIYW1jcmVzdF0oaHR0cHM6Ly9naXRo
dWIuY29tL2hhbWNyZXN0LykgcHJvamVjdCwgd2hpY2ggYWRkcworYGFzc2VydFRoYXQoKWAgdG8g
SlVuaXQuCisKKyMjIFVzaW5nIFByZWRpY2F0ZXMgYXMgTWF0Y2hlcnMgIyMKKworR29vZ2xlIE1v
Y2sgcHJvdmlkZXMgYSBidWlsdC1pbiBzZXQgb2YgbWF0Y2hlcnMuIEluIGNhc2UgeW91IGZpbmQg
dGhlbQorbGFja2luZywgeW91IGNhbiB1c2UgYW4gYXJiaXRyYXkgdW5hcnkgcHJlZGljYXRlIGZ1
bmN0aW9uIG9yIGZ1bmN0b3IKK2FzIGEgbWF0Y2hlciAtIGFzIGxvbmcgYXMgdGhlIHByZWRpY2F0
ZSBhY2NlcHRzIGEgdmFsdWUgb2YgdGhlIHR5cGUKK3lvdSB3YW50LiBZb3UgZG8gdGhpcyBieSB3
cmFwcGluZyB0aGUgcHJlZGljYXRlIGluc2lkZSB0aGUgYFRydWx5KClgCitmdW5jdGlvbiwgZm9y
IGV4YW1wbGU6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpUcnVseTsKKworaW50IElzRXZlbihp
bnQgbikgeyByZXR1cm4gKG4gJSAyKSA9PSAwID8gMSA6IDA7IH0KKy4uLgorCisgIC8vIEJhcigp
IG11c3QgYmUgY2FsbGVkIHdpdGggYW4gZXZlbiBudW1iZXIuCisgIEVYUEVDVF9DQUxMKGZvbywg
QmFyKFRydWx5KElzRXZlbikpKTsKK2BgYAorCitOb3RlIHRoYXQgdGhlIHByZWRpY2F0ZSBmdW5j
dGlvbiAvIGZ1bmN0b3IgZG9lc24ndCBoYXZlIHRvIHJldHVybgorYGJvb2xgLiBJdCB3b3JrcyBh
cyBsb25nIGFzIHRoZSByZXR1cm4gdmFsdWUgY2FuIGJlIHVzZWQgYXMgdGhlCitjb25kaXRpb24g
aW4gc3RhdGVtZW50IGBpZiAoY29uZGl0aW9uKSAuLi5gLgorCisjIyBNYXRjaGluZyBBcmd1bWVu
dHMgdGhhdCBBcmUgTm90IENvcHlhYmxlICMjCisKK1doZW4geW91IGRvIGFuIGBFWFBFQ1RfQ0FM
TChtb2NrX29iaiwgRm9vKGJhcikpYCwgR29vZ2xlIE1vY2sgc2F2ZXMKK2F3YXkgYSBjb3B5IG9m
IGBiYXJgLiBXaGVuIGBGb28oKWAgaXMgY2FsbGVkIGxhdGVyLCBHb29nbGUgTW9jaworY29tcGFy
ZXMgdGhlIGFyZ3VtZW50IHRvIGBGb28oKWAgd2l0aCB0aGUgc2F2ZWQgY29weSBvZiBgYmFyYC4g
VGhpcword2F5LCB5b3UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCBgYmFyYCBiZWluZyBtb2Rp
ZmllZCBvciBkZXN0cm95ZWQKK2FmdGVyIHRoZSBgRVhQRUNUX0NBTEwoKWAgaXMgZXhlY3V0ZWQu
IFRoZSBzYW1lIGlzIHRydWUgd2hlbiB5b3UgdXNlCittYXRjaGVycyBsaWtlIGBFcShiYXIpYCwg
YExlKGJhcilgLCBhbmQgc28gb24uCisKK0J1dCB3aGF0IGlmIGBiYXJgIGNhbm5vdCBiZSBjb3Bp
ZWQgKGkuZS4gaGFzIG5vIGNvcHkgY29uc3RydWN0b3IpPyBZb3UKK2NvdWxkIGRlZmluZSB5b3Vy
IG93biBtYXRjaGVyIGZ1bmN0aW9uIGFuZCB1c2UgaXQgd2l0aCBgVHJ1bHkoKWAsIGFzCit0aGUg
cHJldmlvdXMgY291cGxlIG9mIHJlY2lwZXMgaGF2ZSBzaG93bi4gT3IsIHlvdSBtYXkgYmUgYWJs
ZSB0byBnZXQKK2F3YXkgZnJvbSBpdCBpZiB5b3UgY2FuIGd1YXJhbnRlZSB0aGF0IGBiYXJgIHdv
bid0IGJlIGNoYW5nZWQgYWZ0ZXIKK3RoZSBgRVhQRUNUX0NBTEwoKWAgaXMgZXhlY3V0ZWQuIEp1
c3QgdGVsbCBHb29nbGUgTW9jayB0aGF0IGl0IHNob3VsZAorc2F2ZSBhIHJlZmVyZW5jZSB0byBg
YmFyYCwgaW5zdGVhZCBvZiBhIGNvcHkgb2YgaXQuIEhlcmUncyBob3c6CisKK2BgYAordXNpbmcg
Ojp0ZXN0aW5nOjpFcTsKK3VzaW5nIDo6dGVzdGluZzo6QnlSZWY7Cit1c2luZyA6OnRlc3Rpbmc6
Okx0OworLi4uCisgIC8vIEV4cGVjdHMgdGhhdCBGb28oKSdzIGFyZ3VtZW50ID09IGJhci4KKyAg
RVhQRUNUX0NBTEwobW9ja19vYmosIEZvbyhFcShCeVJlZihiYXIpKSkpOworCisgIC8vIEV4cGVj
dHMgdGhhdCBGb28oKSdzIGFyZ3VtZW50IDwgYmFyLgorICBFWFBFQ1RfQ0FMTChtb2NrX29iaiwg
Rm9vKEx0KEJ5UmVmKGJhcikpKSk7CitgYGAKKworUmVtZW1iZXI6IGlmIHlvdSBkbyB0aGlzLCBk
b24ndCBjaGFuZ2UgYGJhcmAgYWZ0ZXIgdGhlCitgRVhQRUNUX0NBTEwoKWAsIG9yIHRoZSByZXN1
bHQgaXMgdW5kZWZpbmVkLgorCisjIyBWYWxpZGF0aW5nIGEgTWVtYmVyIG9mIGFuIE9iamVjdCAj
IworCitPZnRlbiBhIG1vY2sgZnVuY3Rpb24gdGFrZXMgYSByZWZlcmVuY2UgdG8gb2JqZWN0IGFz
IGFuIGFyZ3VtZW50LiBXaGVuCittYXRjaGluZyB0aGUgYXJndW1lbnQsIHlvdSBtYXkgbm90IHdh
bnQgdG8gY29tcGFyZSB0aGUgZW50aXJlIG9iamVjdAorYWdhaW5zdCBhIGZpeGVkIG9iamVjdCwg
YXMgdGhhdCBtYXkgYmUgb3Zlci1zcGVjaWZpY2F0aW9uLiBJbnN0ZWFkLAoreW91IG1heSBuZWVk
IHRvIHZhbGlkYXRlIGEgY2VydGFpbiBtZW1iZXIgdmFyaWFibGUgb3IgdGhlIHJlc3VsdCBvZiBh
CitjZXJ0YWluIGdldHRlciBtZXRob2Qgb2YgdGhlIG9iamVjdC4gWW91IGNhbiBkbyB0aGlzIHdp
dGggYEZpZWxkKClgCithbmQgYFByb3BlcnR5KClgLiBNb3JlIHNwZWNpZmljYWxseSwKKworYGBg
CitGaWVsZCgmRm9vOjpiYXIsIG0pCitgYGAKKworaXMgYSBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBh
IGBGb29gIG9iamVjdCB3aG9zZSBgYmFyYCBtZW1iZXIgdmFyaWFibGUKK3NhdGlzZmllcyBtYXRj
aGVyIGBtYC4KKworYGBgCitQcm9wZXJ0eSgmRm9vOjpiYXosIG0pCitgYGAKKworaXMgYSBtYXRj
aGVyIHRoYXQgbWF0Y2hlcyBhIGBGb29gIG9iamVjdCB3aG9zZSBgYmF6KClgIG1ldGhvZCByZXR1
cm5zCithIHZhbHVlIHRoYXQgc2F0aXNmaWVzIG1hdGNoZXIgYG1gLgorCitGb3IgZXhhbXBsZToK
KworPiB8IGBGaWVsZCgmRm9vOjpudW1iZXIsIEdlKDMpKWAgfCBNYXRjaGVzIGB4YCB3aGVyZSBg
eC5udW1iZXIgPj0gM2AuIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorPiB8IGBQcm9wZXJ0eSgmRm9vOjpuYW1l
LCBTdGFydHNXaXRoKCJKb2huICIpKWAgfCBNYXRjaGVzIGB4YCB3aGVyZSBgeC5uYW1lKClgIHN0
YXJ0cyB3aXRoIGAiSm9obiAiYC4gfAorCitOb3RlIHRoYXQgaW4gYFByb3BlcnR5KCZGb286OmJh
eiwgLi4uKWAsIG1ldGhvZCBgYmF6KClgIG11c3QgdGFrZSBubworYXJndW1lbnQgYW5kIGJlIGRl
Y2xhcmVkIGFzIGBjb25zdGAuCisKK0JUVywgYEZpZWxkKClgIGFuZCBgUHJvcGVydHkoKWAgY2Fu
IGFsc28gbWF0Y2ggcGxhaW4gcG9pbnRlcnMgdG8KK29iamVjdHMuIEZvciBpbnN0YW5jZSwKKwor
YGBgCitGaWVsZCgmRm9vOjpudW1iZXIsIEdlKDMpKQorYGBgCisKK21hdGNoZXMgYSBwbGFpbiBw
b2ludGVyIGBwYCB3aGVyZSBgcC0+bnVtYmVyID49IDNgLiBJZiBgcGAgaXMgYE5VTExgLAordGhl
IG1hdGNoIHdpbGwgYWx3YXlzIGZhaWwgcmVnYXJkbGVzcyBvZiB0aGUgaW5uZXIgbWF0Y2hlci4K
KworV2hhdCBpZiB5b3Ugd2FudCB0byB2YWxpZGF0ZSBtb3JlIHRoYW4gb25lIG1lbWJlcnMgYXQg
dGhlIHNhbWUgdGltZT8KK1JlbWVtYmVyIHRoYXQgdGhlcmUgaXMgYEFsbE9mKClgLgorCisjIyBW
YWxpZGF0aW5nIHRoZSBWYWx1ZSBQb2ludGVkIHRvIGJ5IGEgUG9pbnRlciBBcmd1bWVudCAjIwor
CitDKysgZnVuY3Rpb25zIG9mdGVuIHRha2UgcG9pbnRlcnMgYXMgYXJndW1lbnRzLiBZb3UgY2Fu
IHVzZSBtYXRjaGVycworbGlrZSBgSXNOdWxsKClgLCBgTm90TnVsbCgpYCwgYW5kIG90aGVyIGNv
bXBhcmlzb24gbWF0Y2hlcnMgdG8gbWF0Y2ggYQorcG9pbnRlciwgYnV0IHdoYXQgaWYgeW91IHdh
bnQgdG8gbWFrZSBzdXJlIHRoZSB2YWx1ZSBfcG9pbnRlZCB0b18gYnkKK3RoZSBwb2ludGVyLCBp
bnN0ZWFkIG9mIHRoZSBwb2ludGVyIGl0c2VsZiwgaGFzIGEgY2VydGFpbiBwcm9wZXJ0eT8KK1dl
bGwsIHlvdSBjYW4gdXNlIHRoZSBgUG9pbnRlZShtKWAgbWF0Y2hlci4KKworYFBvaW50ZWUobSlg
IG1hdGNoZXMgYSBwb2ludGVyIGlmZiBgbWAgbWF0Y2hlcyB0aGUgdmFsdWUgdGhlIHBvaW50ZXIK
K3BvaW50cyB0by4gRm9yIGV4YW1wbGU6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpHZTsKK3Vz
aW5nIDo6dGVzdGluZzo6UG9pbnRlZTsKKy4uLgorICBFWFBFQ1RfQ0FMTChmb28sIEJhcihQb2lu
dGVlKEdlKDMpKSkpOworYGBgCisKK2V4cGVjdHMgYGZvby5CYXIoKWAgdG8gYmUgY2FsbGVkIHdp
dGggYSBwb2ludGVyIHRoYXQgcG9pbnRzIHRvIGEgdmFsdWUKK2dyZWF0ZXIgdGhhbiBvciBlcXVh
bCB0byAzLgorCitPbmUgbmljZSB0aGluZyBhYm91dCBgUG9pbnRlZSgpYCBpcyB0aGF0IGl0IHRy
ZWF0cyBhIGBOVUxMYCBwb2ludGVyIGFzCithIG1hdGNoIGZhaWx1cmUsIHNvIHlvdSBjYW4gd3Jp
dGUgYFBvaW50ZWUobSlgIGluc3RlYWQgb2YKKworYGBgCisgIEFsbE9mKE5vdE51bGwoKSwgUG9p
bnRlZShtKSkKK2BgYAorCit3aXRob3V0IHdvcnJ5aW5nIHRoYXQgYSBgTlVMTGAgcG9pbnRlciB3
aWxsIGNyYXNoIHlvdXIgdGVzdC4KKworQWxzbywgZGlkIHdlIHRlbGwgeW91IHRoYXQgYFBvaW50
ZWUoKWAgd29ya3Mgd2l0aCBib3RoIHJhdyBwb2ludGVycworKiphbmQqKiBzbWFydCBwb2ludGVy
cyAoYGxpbmtlZF9wdHJgLCBgc2hhcmVkX3B0cmAsIGBzY29wZWRfcHRyYCwgYW5kCitldGMpPwor
CitXaGF0IGlmIHlvdSBoYXZlIGEgcG9pbnRlciB0byBwb2ludGVyPyBZb3UgZ3Vlc3NlZCBpdCAt
IHlvdSBjYW4gdXNlCituZXN0ZWQgYFBvaW50ZWUoKWAgdG8gcHJvYmUgZGVlcGVyIGluc2lkZSB0
aGUgdmFsdWUuIEZvciBleGFtcGxlLAorYFBvaW50ZWUoUG9pbnRlZShMdCgzKSkpYCBtYXRjaGVz
IGEgcG9pbnRlciB0aGF0IHBvaW50cyB0byBhIHBvaW50ZXIKK3RoYXQgcG9pbnRzIHRvIGEgbnVt
YmVyIGxlc3MgdGhhbiAzICh3aGF0IGEgbW91dGhmdWwuLi4pLgorCisjIyBUZXN0aW5nIGEgQ2Vy
dGFpbiBQcm9wZXJ0eSBvZiBhbiBPYmplY3QgIyMKKworU29tZXRpbWVzIHlvdSB3YW50IHRvIHNw
ZWNpZnkgdGhhdCBhbiBvYmplY3QgYXJndW1lbnQgaGFzIGEgY2VydGFpbgorcHJvcGVydHksIGJ1
dCB0aGVyZSBpcyBubyBleGlzdGluZyBtYXRjaGVyIHRoYXQgZG9lcyB0aGlzLiBJZiB5b3Ugd2Fu
dAorZ29vZCBlcnJvciBtZXNzYWdlcywgeW91IHNob3VsZCBkZWZpbmUgYSBtYXRjaGVyLiBJZiB5
b3Ugd2FudCB0byBkbyBpdAorcXVpY2sgYW5kIGRpcnR5LCB5b3UgY291bGQgZ2V0IGF3YXkgd2l0
aCB3cml0aW5nIGFuIG9yZGluYXJ5IGZ1bmN0aW9uLgorCitMZXQncyBzYXkgeW91IGhhdmUgYSBt
b2NrIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYW4gb2JqZWN0IG9mIHR5cGUgYEZvb2AsCit3aGljaCBo
YXMgYW4gYGludCBiYXIoKWAgbWV0aG9kIGFuZCBhbiBgaW50IGJheigpYCBtZXRob2QsIGFuZCB5
b3UKK3dhbnQgdG8gY29uc3RyYWluIHRoYXQgdGhlIGFyZ3VtZW50J3MgYGJhcigpYCB2YWx1ZSBw
bHVzIGl0cyBgYmF6KClgCit2YWx1ZSBpcyBhIGdpdmVuIG51bWJlci4gSGVyZSdzIGhvdyB5b3Ug
Y2FuIGRlZmluZSBhIG1hdGNoZXIgdG8gZG8gaXQ6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpN
YXRjaGVySW50ZXJmYWNlOwordXNpbmcgOjp0ZXN0aW5nOjpNYXRjaFJlc3VsdExpc3RlbmVyOwor
CitjbGFzcyBCYXJQbHVzQmF6RXFNYXRjaGVyIDogcHVibGljIE1hdGNoZXJJbnRlcmZhY2U8Y29u
c3QgRm9vJj4geworIHB1YmxpYzoKKyAgZXhwbGljaXQgQmFyUGx1c0JhekVxTWF0Y2hlcihpbnQg
ZXhwZWN0ZWRfc3VtKQorICAgICAgOiBleHBlY3RlZF9zdW1fKGV4cGVjdGVkX3N1bSkge30KKwor
ICB2aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWluKGNvbnN0IEZvbyYgZm9vLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBjb25z
dCB7CisgICAgcmV0dXJuIChmb28uYmFyKCkgKyBmb28uYmF6KCkpID09IGV4cGVjdGVkX3N1bV87
CisgIH0KKworICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNv
bnN0IHsKKyAgICAqb3MgPDwgImJhcigpICsgYmF6KCkgZXF1YWxzICIgPDwgZXhwZWN0ZWRfc3Vt
XzsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJl
YW0qIG9zKSBjb25zdCB7CisgICAgKm9zIDw8ICJiYXIoKSArIGJheigpIGRvZXMgbm90IGVxdWFs
ICIgPDwgZXhwZWN0ZWRfc3VtXzsKKyAgfQorIHByaXZhdGU6CisgIGNvbnN0IGludCBleHBlY3Rl
ZF9zdW1fOworfTsKKworaW5saW5lIE1hdGNoZXI8Y29uc3QgRm9vJj4gQmFyUGx1c0JhekVxKGlu
dCBleHBlY3RlZF9zdW0pIHsKKyAgcmV0dXJuIE1ha2VNYXRjaGVyKG5ldyBCYXJQbHVzQmF6RXFN
YXRjaGVyKGV4cGVjdGVkX3N1bSkpOworfQorCisuLi4KKworICBFWFBFQ1RfQ0FMTCguLi4sIERv
VGhpcyhCYXJQbHVzQmF6RXEoNSkpKS4uLjsKK2BgYAorCisjIyBNYXRjaGluZyBDb250YWluZXJz
ICMjCisKK1NvbWV0aW1lcyBhbiBTVEwgY29udGFpbmVyIChlLmcuIGxpc3QsIHZlY3RvciwgbWFw
LCAuLi4pIGlzIHBhc3NlZCB0bworYSBtb2NrIGZ1bmN0aW9uIGFuZCB5b3UgbWF5IHdhbnQgdG8g
dmFsaWRhdGUgaXQuIFNpbmNlIG1vc3QgU1RMCitjb250YWluZXJzIHN1cHBvcnQgdGhlIGA9PWAg
b3BlcmF0b3IsIHlvdSBjYW4gd3JpdGUKK2BFcShleHBlY3RlZF9jb250YWluZXIpYCBvciBzaW1w
bHkgYGV4cGVjdGVkX2NvbnRhaW5lcmAgdG8gbWF0Y2ggYQorY29udGFpbmVyIGV4YWN0bHkuCisK
K1NvbWV0aW1lcywgdGhvdWdoLCB5b3UgbWF5IHdhbnQgdG8gYmUgbW9yZSBmbGV4aWJsZSAoZm9y
IGV4YW1wbGUsIHRoZQorZmlyc3QgZWxlbWVudCBtdXN0IGJlIGFuIGV4YWN0IG1hdGNoLCBidXQg
dGhlIHNlY29uZCBlbGVtZW50IGNhbiBiZQorYW55IHBvc2l0aXZlIG51bWJlciwgYW5kIHNvIG9u
KS4gQWxzbywgY29udGFpbmVycyB1c2VkIGluIHRlc3RzIG9mdGVuCitoYXZlIGEgc21hbGwgbnVt
YmVyIG9mIGVsZW1lbnRzLCBhbmQgaGF2aW5nIHRvIGRlZmluZSB0aGUgZXhwZWN0ZWQKK2NvbnRh
aW5lciBvdXQtb2YtbGluZSBpcyBhIGJpdCBvZiBhIGhhc3NsZS4KKworWW91IGNhbiB1c2UgdGhl
IGBFbGVtZW50c0FyZSgpYCBvciBgVW5vcmRlcmVkRWxlbWVudHNBcmUoKWAgbWF0Y2hlciBpbgor
c3VjaCBjYXNlczoKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6Ol87Cit1c2luZyA6OnRlc3Rpbmc6
OkVsZW1lbnRzQXJlOwordXNpbmcgOjp0ZXN0aW5nOjpHdDsKKy4uLgorCisgIE1PQ0tfTUVUSE9E
MShGb28sIHZvaWQoY29uc3QgdmVjdG9yPGludD4mIG51bWJlcnMpKTsKKy4uLgorCisgIEVYUEVD
VF9DQUxMKG1vY2ssIEZvbyhFbGVtZW50c0FyZSgxLCBHdCgwKSwgXywgNSkpKTsKK2BgYAorCitU
aGUgYWJvdmUgbWF0Y2hlciBzYXlzIHRoYXQgdGhlIGNvbnRhaW5lciBtdXN0IGhhdmUgNCBlbGVt
ZW50cywgd2hpY2gKK211c3QgYmUgMSwgZ3JlYXRlciB0aGFuIDAsIGFueXRoaW5nLCBhbmQgNSBy
ZXNwZWN0aXZlbHkuCisKK0lmIHlvdSBpbnN0ZWFkIHdyaXRlOgorCitgYGAKK3VzaW5nIDo6dGVz
dGluZzo6XzsKK3VzaW5nIDo6dGVzdGluZzo6R3Q7Cit1c2luZyA6OnRlc3Rpbmc6OlVub3JkZXJl
ZEVsZW1lbnRzQXJlOworLi4uCisKKyAgTU9DS19NRVRIT0QxKEZvbywgdm9pZChjb25zdCB2ZWN0
b3I8aW50PiYgbnVtYmVycykpOworLi4uCisKKyAgRVhQRUNUX0NBTEwobW9jaywgRm9vKFVub3Jk
ZXJlZEVsZW1lbnRzQXJlKDEsIEd0KDApLCBfLCA1KSkpOworYGBgCisKK0l0IG1lYW5zIHRoYXQg
dGhlIGNvbnRhaW5lciBtdXN0IGhhdmUgNCBlbGVtZW50cywgd2hpY2ggdW5kZXIgc29tZQorcGVy
bXV0YXRpb24gbXVzdCBiZSAxLCBncmVhdGVyIHRoYW4gMCwgYW55dGhpbmcsIGFuZCA1IHJlc3Bl
Y3RpdmVseS4KKworYEVsZW1lbnRzQXJlKClgIGFuZCBgVW5vcmRlcmVkRWxlbWVudHNBcmUoKWAg
YXJlIG92ZXJsb2FkZWQgdG8gdGFrZSAwCit0byAxMCBhcmd1bWVudHMuIElmIG1vcmUgYXJlIG5l
ZWRlZCwgeW91IGNhbiBwbGFjZSB0aGVtIGluIGEgQy1zdHlsZQorYXJyYXkgYW5kIHVzZSBgRWxl
bWVudHNBcmVBcnJheSgpYCBvciBgVW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSgpYAoraW5zdGVh
ZDoKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6OkVsZW1lbnRzQXJlQXJyYXk7CisuLi4KKworICAv
LyBFbGVtZW50c0FyZUFycmF5IGFjY2VwdHMgYW4gYXJyYXkgb2YgZWxlbWVudCB2YWx1ZXMuCisg
IGNvbnN0IGludCBleHBlY3RlZF92ZWN0b3IxW10gPSB7IDEsIDUsIDIsIDQsIC4uLiB9OworICBF
WFBFQ1RfQ0FMTChtb2NrLCBGb28oRWxlbWVudHNBcmVBcnJheShleHBlY3RlZF92ZWN0b3IxKSkp
OworCisgIC8vIE9yLCBhbiBhcnJheSBvZiBlbGVtZW50IG1hdGNoZXJzLgorICBNYXRjaGVyPGlu
dD4gZXhwZWN0ZWRfdmVjdG9yMiA9IHsgMSwgR3QoMiksIF8sIDMsIC4uLiB9OworICBFWFBFQ1Rf
Q0FMTChtb2NrLCBGb28oRWxlbWVudHNBcmVBcnJheShleHBlY3RlZF92ZWN0b3IyKSkpOworYGBg
CisKK0luIGNhc2UgdGhlIGFycmF5IG5lZWRzIHRvIGJlIGR5bmFtaWNhbGx5IGNyZWF0ZWQgKGFu
ZCB0aGVyZWZvcmUgdGhlCithcnJheSBzaXplIGNhbm5vdCBiZSBpbmZlcnJlZCBieSB0aGUgY29t
cGlsZXIpLCB5b3UgY2FuIGdpdmUKK2BFbGVtZW50c0FyZUFycmF5KClgIGFuIGFkZGl0aW9uYWwg
YXJndW1lbnQgdG8gc3BlY2lmeSB0aGUgYXJyYXkgc2l6ZToKKworYGBgCit1c2luZyA6OnRlc3Rp
bmc6OkVsZW1lbnRzQXJlQXJyYXk7CisuLi4KKyAgaW50KiBjb25zdCBleHBlY3RlZF92ZWN0b3Iz
ID0gbmV3IGludFtjb3VudF07CisgIC4uLiBmaWxsIGV4cGVjdGVkX3ZlY3RvcjMgd2l0aCB2YWx1
ZXMgLi4uCisgIEVYUEVDVF9DQUxMKG1vY2ssIEZvbyhFbGVtZW50c0FyZUFycmF5KGV4cGVjdGVk
X3ZlY3RvcjMsIGNvdW50KSkpOworYGBgCisKKyoqVGlwczoqKgorCisgICogYEVsZW1lbnRzQXJl
KigpYCBjYW4gYmUgdXNlZCB0byBtYXRjaCBfYW55XyBjb250YWluZXIgdGhhdCBpbXBsZW1lbnRz
IHRoZSBTVEwgaXRlcmF0b3IgcGF0dGVybiAoaS5lLiBpdCBoYXMgYSBgY29uc3RfaXRlcmF0b3Jg
IHR5cGUgYW5kIHN1cHBvcnRzIGBiZWdpbigpL2VuZCgpYCksIG5vdCBqdXN0IHRoZSBvbmVzIGRl
ZmluZWQgaW4gU1RMLiBJdCB3aWxsIGV2ZW4gd29yayB3aXRoIGNvbnRhaW5lciB0eXBlcyB5ZXQg
dG8gYmUgd3JpdHRlbiAtIGFzIGxvbmcgYXMgdGhleSBmb2xsb3dzIHRoZSBhYm92ZSBwYXR0ZXJu
LgorICAqIFlvdSBjYW4gdXNlIG5lc3RlZCBgRWxlbWVudHNBcmUqKClgIHRvIG1hdGNoIG5lc3Rl
ZCAobXVsdGktZGltZW5zaW9uYWwpIGNvbnRhaW5lcnMuCisgICogSWYgdGhlIGNvbnRhaW5lciBp
cyBwYXNzZWQgYnkgcG9pbnRlciBpbnN0ZWFkIG9mIGJ5IHJlZmVyZW5jZSwganVzdCB3cml0ZSBg
UG9pbnRlZShFbGVtZW50c0FyZSooLi4uKSlgLgorICAqIFRoZSBvcmRlciBvZiBlbGVtZW50cyBf
bWF0dGVyc18gZm9yIGBFbGVtZW50c0FyZSooKWAuIFRoZXJlZm9yZSBkb24ndCB1c2UgaXQgd2l0
aCBjb250YWluZXJzIHdob3NlIGVsZW1lbnQgb3JkZXIgaXMgdW5kZWZpbmVkIChlLmcuIGBoYXNo
X21hcGApLgorCisjIyBTaGFyaW5nIE1hdGNoZXJzICMjCisKK1VuZGVyIHRoZSBob29kLCBhIEdv
b2dsZSBNb2NrIG1hdGNoZXIgb2JqZWN0IGNvbnNpc3RzIG9mIGEgcG9pbnRlciB0bworYSByZWYt
Y291bnRlZCBpbXBsZW1lbnRhdGlvbiBvYmplY3QuIENvcHlpbmcgbWF0Y2hlcnMgaXMgYWxsb3dl
ZCBhbmQKK3ZlcnkgZWZmaWNpZW50LCBhcyBvbmx5IHRoZSBwb2ludGVyIGlzIGNvcGllZC4gV2hl
biB0aGUgbGFzdCBtYXRjaGVyCit0aGF0IHJlZmVyZW5jZXMgdGhlIGltcGxlbWVudGF0aW9uIG9i
amVjdCBkaWVzLCB0aGUgaW1wbGVtZW50YXRpb24KK29iamVjdCB3aWxsIGJlIGRlbGV0ZWQuCisK
K1RoZXJlZm9yZSwgaWYgeW91IGhhdmUgc29tZSBjb21wbGV4IG1hdGNoZXIgdGhhdCB5b3Ugd2Fu
dCB0byB1c2UgYWdhaW4KK2FuZCBhZ2FpbiwgdGhlcmUgaXMgbm8gbmVlZCB0byBidWlsZCBpdCBl
dmVyeXRpbWUuIEp1c3QgYXNzaWduIGl0IHRvIGEKK21hdGNoZXIgdmFyaWFibGUgYW5kIHVzZSB0
aGF0IHZhcmlhYmxlIHJlcGVhdGVkbHkhIEZvciBleGFtcGxlLAorCitgYGAKKyAgTWF0Y2hlcjxp
bnQ+IGluX3JhbmdlID0gQWxsT2YoR3QoNSksIExlKDEwKSk7CisgIC4uLiB1c2UgaW5fcmFuZ2Ug
YXMgYSBtYXRjaGVyIGluIG11bHRpcGxlIEVYUEVDVF9DQUxMcyAuLi4KK2BgYAorCisjIFNldHRp
bmcgRXhwZWN0YXRpb25zICMKKworIyMgS25vd2luZyBXaGVuIHRvIEV4cGVjdCAjIworCitgT05f
Q0FMTGAgaXMgbGlrZWx5IHRoZSBzaW5nbGUgbW9zdCB1bmRlci11dGlsaXplZCBjb25zdHJ1Y3Qg
aW4gR29vZ2xlIE1vY2suCisKK1RoZXJlIGFyZSBiYXNpY2FsbHkgdHdvIGNvbnN0cnVjdHMgZm9y
IGRlZmluaW5nIHRoZSBiZWhhdmlvciBvZiBhIG1vY2sgb2JqZWN0OiBgT05fQ0FMTGAgYW5kIGBF
WFBFQ1RfQ0FMTGAuIFRoZSBkaWZmZXJlbmNlPyBgT05fQ0FMTGAgZGVmaW5lcyB3aGF0IGhhcHBl
bnMgd2hlbiBhIG1vY2sgbWV0aG9kIGlzIGNhbGxlZCwgYnV0IF9kb2Vzbid0IGltcGx5IGFueSBl
eHBlY3RhdGlvbiBvbiB0aGUgbWV0aG9kIGJlaW5nIGNhbGxlZC5fIGBFWFBFQ1RfQ0FMTGAgbm90
IG9ubHkgZGVmaW5lcyB0aGUgYmVoYXZpb3IsIGJ1dCBhbHNvIHNldHMgYW4gZXhwZWN0YXRpb24g
dGhhdCBfdGhlIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMs
IGZvciB0aGUgZ2l2ZW4gbnVtYmVyIG9mIHRpbWVzXyAoYW5kIF9pbiB0aGUgZ2l2ZW4gb3JkZXJf
IHdoZW4geW91IHNwZWNpZnkgdGhlIG9yZGVyIHRvbykuCisKK1NpbmNlIGBFWFBFQ1RfQ0FMTGAg
ZG9lcyBtb3JlLCBpc24ndCBpdCBiZXR0ZXIgdGhhbiBgT05fQ0FMTGA/IE5vdCByZWFsbHkuIEV2
ZXJ5IGBFWFBFQ1RfQ0FMTGAgYWRkcyBhIGNvbnN0cmFpbnQgb24gdGhlIGJlaGF2aW9yIG9mIHRo
ZSBjb2RlIHVuZGVyIHRlc3QuIEhhdmluZyBtb3JlIGNvbnN0cmFpbnRzIHRoYW4gbmVjZXNzYXJ5
IGlzIF9iYWFhZF8gLSBldmVuIHdvcnNlIHRoYW4gbm90IGhhdmluZyBlbm91Z2ggY29uc3RyYWlu
dHMuCisKK1RoaXMgbWF5IGJlIGNvdW50ZXItaW50dWl0aXZlLiBIb3cgY291bGQgdGVzdHMgdGhh
dCB2ZXJpZnkgbW9yZSBiZSB3b3JzZSB0aGFuIHRlc3RzIHRoYXQgdmVyaWZ5IGxlc3M/IElzbid0
IHZlcmlmaWNhdGlvbiB0aGUgd2hvbGUgcG9pbnQgb2YgdGVzdHM/CisKK1RoZSBhbnN3ZXIsIGxp
ZXMgaW4gX3doYXRfIGEgdGVzdCBzaG91bGQgdmVyaWZ5LiAqKkEgZ29vZCB0ZXN0IHZlcmlmaWVz
IHRoZSBjb250cmFjdCBvZiB0aGUgY29kZS4qKiBJZiBhIHRlc3Qgb3Zlci1zcGVjaWZpZXMsIGl0
IGRvZXNuJ3QgbGVhdmUgZW5vdWdoIGZyZWVkb20gdG8gdGhlIGltcGxlbWVudGF0aW9uLiBBcyBh
IHJlc3VsdCwgY2hhbmdpbmcgdGhlIGltcGxlbWVudGF0aW9uIHdpdGhvdXQgYnJlYWtpbmcgdGhl
IGNvbnRyYWN0IChlLmcuIHJlZmFjdG9yaW5nIGFuZCBvcHRpbWl6YXRpb24pLCB3aGljaCBzaG91
bGQgYmUgcGVyZmVjdGx5IGZpbmUgdG8gZG8sIGNhbiBicmVhayBzdWNoIHRlc3RzLiBUaGVuIHlv
dSBoYXZlIHRvIHNwZW5kIHRpbWUgZml4aW5nIHRoZW0sIG9ubHkgdG8gc2VlIHRoZW0gYnJva2Vu
IGFnYWluIHRoZSBuZXh0IHRpbWUgdGhlIGltcGxlbWVudGF0aW9uIGlzIGNoYW5nZWQuCisKK0tl
ZXAgaW4gbWluZCB0aGF0IG9uZSBkb2Vzbid0IGhhdmUgdG8gdmVyaWZ5IG1vcmUgdGhhbiBvbmUg
cHJvcGVydHkgaW4gb25lIHRlc3QuIEluIGZhY3QsICoqaXQncyBhIGdvb2Qgc3R5bGUgdG8gdmVy
aWZ5IG9ubHkgb25lIHRoaW5nIGluIG9uZSB0ZXN0LioqIElmIHlvdSBkbyB0aGF0LCBhIGJ1ZyB3
aWxsIGxpa2VseSBicmVhayBvbmx5IG9uZSBvciB0d28gdGVzdHMgaW5zdGVhZCBvZiBkb3plbnMg
KHdoaWNoIGNhc2Ugd291bGQgeW91IHJhdGhlciBkZWJ1Zz8pLiBJZiB5b3UgYXJlIGFsc28gaW4g
dGhlIGhhYml0IG9mIGdpdmluZyB0ZXN0cyBkZXNjcmlwdGl2ZSBuYW1lcyB0aGF0IHRlbGwgd2hh
dCB0aGV5IHZlcmlmeSwgeW91IGNhbiBvZnRlbiBlYXNpbHkgZ3Vlc3Mgd2hhdCdzIHdyb25nIGp1
c3QgZnJvbSB0aGUgdGVzdCBsb2cgaXRzZWxmLgorCitTbyB1c2UgYE9OX0NBTExgIGJ5IGRlZmF1
bHQsIGFuZCBvbmx5IHVzZSBgRVhQRUNUX0NBTExgIHdoZW4geW91IGFjdHVhbGx5IGludGVuZCB0
byB2ZXJpZnkgdGhhdCB0aGUgY2FsbCBpcyBtYWRlLiBGb3IgZXhhbXBsZSwgeW91IG1heSBoYXZl
IGEgYnVuY2ggb2YgYE9OX0NBTExgcyBpbiB5b3VyIHRlc3QgZml4dHVyZSB0byBzZXQgdGhlIGNv
bW1vbiBtb2NrIGJlaGF2aW9yIHNoYXJlZCBieSBhbGwgdGVzdHMgaW4gdGhlIHNhbWUgZ3JvdXAs
IGFuZCB3cml0ZSAoc2NhcmNlbHkpIGRpZmZlcmVudCBgRVhQRUNUX0NBTExgcyBpbiBkaWZmZXJl
bnQgYFRFU1RfRmBzIHRvIHZlcmlmeSBkaWZmZXJlbnQgYXNwZWN0cyBvZiB0aGUgY29kZSdzIGJl
aGF2aW9yLiBDb21wYXJlZCB3aXRoIHRoZSBzdHlsZSB3aGVyZSBlYWNoIGBURVNUYCBoYXMgbWFu
eSBgRVhQRUNUX0NBTExgcywgdGhpcyBsZWFkcyB0byB0ZXN0cyB0aGF0IGFyZSBtb3JlIHJlc2ls
aWVudCB0byBpbXBsZW1lbnRhdGlvbmFsIGNoYW5nZXMgKGFuZCB0aHVzIGxlc3MgbGlrZWx5IHRv
IHJlcXVpcmUgbWFpbnRlbmFuY2UpIGFuZCBtYWtlcyB0aGUgaW50ZW50IG9mIHRoZSB0ZXN0cyBt
b3JlIG9idmlvdXMgKHNvIHRoZXkgYXJlIGVhc2llciB0byBtYWludGFpbiB3aGVuIHlvdSBkbyBu
ZWVkIHRvIG1haW50YWluIHRoZW0pLgorCitJZiB5b3UgYXJlIGJvdGhlcmVkIGJ5IHRoZSAiVW5p
bnRlcmVzdGluZyBtb2NrIGZ1bmN0aW9uIGNhbGwiIG1lc3NhZ2UgcHJpbnRlZCB3aGVuIGEgbW9j
ayBtZXRob2Qgd2l0aG91dCBhbiBgRVhQRUNUX0NBTExgIGlzIGNhbGxlZCwgeW91IG1heSB1c2Ug
YSBgTmljZU1vY2tgIGluc3RlYWQgdG8gc3VwcHJlc3MgYWxsIHN1Y2ggbWVzc2FnZXMgZm9yIHRo
ZSBtb2NrIG9iamVjdCwgb3Igc3VwcHJlc3MgdGhlIG1lc3NhZ2UgZm9yIHNwZWNpZmljIG1ldGhv
ZHMgYnkgYWRkaW5nIGBFWFBFQ1RfQ0FMTCguLi4pLlRpbWVzKEFueU51bWJlcigpKWAuIERPIE5P
VCBzdXBwcmVzcyBpdCBieSBibGluZGx5IGFkZGluZyBhbiBgRVhQRUNUX0NBTEwoLi4uKWAsIG9y
IHlvdSdsbCBoYXZlIGEgdGVzdCB0aGF0J3MgYSBwYWluIHRvIG1haW50YWluLgorCisjIyBJZ25v
cmluZyBVbmludGVyZXN0aW5nIENhbGxzICMjCisKK0lmIHlvdSBhcmUgbm90IGludGVyZXN0ZWQg
aW4gaG93IGEgbW9jayBtZXRob2QgaXMgY2FsbGVkLCBqdXN0IGRvbid0CitzYXkgYW55dGhpbmcg
YWJvdXQgaXQuIEluIHRoaXMgY2FzZSwgaWYgdGhlIG1ldGhvZCBpcyBldmVyIGNhbGxlZCwKK0dv
b2dsZSBNb2NrIHdpbGwgcGVyZm9ybSBpdHMgZGVmYXVsdCBhY3Rpb24gdG8gYWxsb3cgdGhlIHRl
c3QgcHJvZ3JhbQordG8gY29udGludWUuIElmIHlvdSBhcmUgbm90IGhhcHB5IHdpdGggdGhlIGRl
ZmF1bHQgYWN0aW9uIHRha2VuIGJ5CitHb29nbGUgTW9jaywgeW91IGNhbiBvdmVycmlkZSBpdCB1
c2luZyBgRGVmYXVsdFZhbHVlPFQ+OjpTZXQoKWAKKyhkZXNjcmliZWQgbGF0ZXIgaW4gdGhpcyBk
b2N1bWVudCkgb3IgYE9OX0NBTEwoKWAuCisKK1BsZWFzZSBub3RlIHRoYXQgb25jZSB5b3UgZXhw
cmVzc2VkIGludGVyZXN0IGluIGEgcGFydGljdWxhciBtb2NrCittZXRob2QgKHZpYSBgRVhQRUNU
X0NBTEwoKWApLCBhbGwgaW52b2NhdGlvbnMgdG8gaXQgbXVzdCBtYXRjaCBzb21lCitleHBlY3Rh
dGlvbi4gSWYgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnV0IHRoZSBhcmd1bWVudHMgZG9uJ3Qg
bWF0Y2gKK2FueSBgRVhQRUNUX0NBTEwoKWAgc3RhdGVtZW50LCBpdCB3aWxsIGJlIGFuIGVycm9y
LgorCisjIyBEaXNhbGxvd2luZyBVbmV4cGVjdGVkIENhbGxzICMjCisKK0lmIGEgbW9jayBtZXRo
b2Qgc2hvdWxkbid0IGJlIGNhbGxlZCBhdCBhbGwsIGV4cGxpY2l0bHkgc2F5IHNvOgorCitgYGAK
K3VzaW5nIDo6dGVzdGluZzo6XzsKKy4uLgorICBFWFBFQ1RfQ0FMTChmb28sIEJhcihfKSkKKyAg
ICAgIC5UaW1lcygwKTsKK2BgYAorCitJZiBzb21lIGNhbGxzIHRvIHRoZSBtZXRob2QgYXJlIGFs
bG93ZWQsIGJ1dCB0aGUgcmVzdCBhcmUgbm90LCBqdXN0CitsaXN0IGFsbCB0aGUgZXhwZWN0ZWQg
Y2FsbHM6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpBbnlOdW1iZXI7Cit1c2luZyA6OnRlc3Rp
bmc6Okd0OworLi4uCisgIEVYUEVDVF9DQUxMKGZvbywgQmFyKDUpKTsKKyAgRVhQRUNUX0NBTEwo
Zm9vLCBCYXIoR3QoMTApKSkKKyAgICAgIC5UaW1lcyhBbnlOdW1iZXIoKSk7CitgYGAKKworQSBj
YWxsIHRvIGBmb28uQmFyKClgIHRoYXQgZG9lc24ndCBtYXRjaCBhbnkgb2YgdGhlIGBFWFBFQ1Rf
Q0FMTCgpYAorc3RhdGVtZW50cyB3aWxsIGJlIGFuIGVycm9yLgorCisjIyBVbmRlcnN0YW5kaW5n
IFVuaW50ZXJlc3RpbmcgdnMgVW5leHBlY3RlZCBDYWxscyAjIworCitfVW5pbnRlcmVzdGluZ18g
Y2FsbHMgYW5kIF91bmV4cGVjdGVkXyBjYWxscyBhcmUgZGlmZmVyZW50IGNvbmNlcHRzIGluIEdv
b2dsZSBNb2NrLiBfVmVyeV8gZGlmZmVyZW50LgorCitBIGNhbGwgYHguWSguLi4pYCBpcyAqKnVu
aW50ZXJlc3RpbmcqKiBpZiB0aGVyZSdzIF9ub3QgZXZlbiBhIHNpbmdsZV8gYEVYUEVDVF9DQUxM
KHgsIFkoLi4uKSlgIHNldC4gSW4gb3RoZXIgd29yZHMsIHRoZSB0ZXN0IGlzbid0IGludGVyZXN0
ZWQgaW4gdGhlIGB4LlkoKWAgbWV0aG9kIGF0IGFsbCwgYXMgZXZpZGVudCBpbiB0aGF0IHRoZSB0
ZXN0IGRvZXNuJ3QgY2FyZSB0byBzYXkgYW55dGhpbmcgYWJvdXQgaXQuCisKK0EgY2FsbCBgeC5Z
KC4uLilgIGlzICoqdW5leHBlY3RlZCoqIGlmIHRoZXJlIGFyZSBzb21lIGBFWFBFQ1RfQ0FMTCh4
LCBZKC4uLikpc2Agc2V0LCBidXQgbm9uZSBvZiB0aGVtIG1hdGNoZXMgdGhlIGNhbGwuIFB1dCBh
bm90aGVyIHdheSwgdGhlIHRlc3QgaXMgaW50ZXJlc3RlZCBpbiB0aGUgYHguWSgpYCBtZXRob2Qg
KHRoZXJlZm9yZSBpdCBfZXhwbGljaXRseV8gc2V0cyBzb21lIGBFWFBFQ1RfQ0FMTGAgdG8gdmVy
aWZ5IGhvdyBpdCdzIGNhbGxlZCk7IGhvd2V2ZXIsIHRoZSB2ZXJpZmljYXRpb24gZmFpbHMgYXMg
dGhlIHRlc3QgZG9lc24ndCBleHBlY3QgdGhpcyBwYXJ0aWN1bGFyIGNhbGwgdG8gaGFwcGVuLgor
CisqKkFuIHVuZXhwZWN0ZWQgY2FsbCBpcyBhbHdheXMgYW4gZXJyb3IsKiogYXMgdGhlIGNvZGUg
dW5kZXIgdGVzdCBkb2Vzbid0IGJlaGF2ZSB0aGUgd2F5IHRoZSB0ZXN0IGV4cGVjdHMgaXQgdG8g
YmVoYXZlLgorCisqKkJ5IGRlZmF1bHQsIGFuIHVuaW50ZXJlc3RpbmcgY2FsbCBpcyBub3QgYW4g
ZXJyb3IsKiogYXMgaXQgdmlvbGF0ZXMgbm8gY29uc3RyYWludCBzcGVjaWZpZWQgYnkgdGhlIHRl
c3QuIChHb29nbGUgTW9jaydzIHBoaWxvc29waHkgaXMgdGhhdCBzYXlpbmcgbm90aGluZyBtZWFu
cyB0aGVyZSBpcyBubyBjb25zdHJhaW50LikgSG93ZXZlciwgaXQgbGVhZHMgdG8gYSB3YXJuaW5n
LCBhcyBpdCBfbWlnaHRfIGluZGljYXRlIGEgcHJvYmxlbSAoZS5nLiB0aGUgdGVzdCBhdXRob3Ig
bWlnaHQgaGF2ZSBmb3Jnb3R0ZW4gdG8gc3BlY2lmeSBhIGNvbnN0cmFpbnQpLgorCitJbiBHb29n
bGUgTW9jaywgYE5pY2VNb2NrYCBhbmQgYFN0cmljdE1vY2tgIGNhbiBiZSB1c2VkIHRvIG1ha2Ug
YSBtb2NrIGNsYXNzICJuaWNlIiBvciAic3RyaWN0Ii4gSG93IGRvZXMgdGhpcyBhZmZlY3QgdW5p
bnRlcmVzdGluZyBjYWxscyBhbmQgdW5leHBlY3RlZCBjYWxscz8KKworQSAqKm5pY2UgbW9jayoq
IHN1cHByZXNzZXMgdW5pbnRlcmVzdGluZyBjYWxsIHdhcm5pbmdzLiBJdCBpcyBsZXNzIGNoYXR0
eSB0aGFuIHRoZSBkZWZhdWx0IG1vY2ssIGJ1dCBvdGhlcndpc2UgaXMgdGhlIHNhbWUuIElmIGEg
dGVzdCBmYWlscyB3aXRoIGEgZGVmYXVsdCBtb2NrLCBpdCB3aWxsIGFsc28gZmFpbCB1c2luZyBh
IG5pY2UgbW9jayBpbnN0ZWFkLiBBbmQgdmljZSB2ZXJzYS4gRG9uJ3QgZXhwZWN0IG1ha2luZyBh
IG1vY2sgbmljZSB0byBjaGFuZ2UgdGhlIHRlc3QncyByZXN1bHQuCisKK0EgKipzdHJpY3QgbW9j
ayoqIHR1cm5zIHVuaW50ZXJlc3RpbmcgY2FsbCB3YXJuaW5ncyBpbnRvIGVycm9ycy4gU28gbWFr
aW5nIGEgbW9jayBzdHJpY3QgbWF5IGNoYW5nZSB0aGUgdGVzdCdzIHJlc3VsdC4KKworTGV0J3Mg
bG9vayBhdCBhbiBleGFtcGxlOgorCitgYGAKK1RFU1QoLi4uKSB7CisgIE5pY2VNb2NrPE1vY2tE
b21haW5SZWdpc3RyeT4gbW9ja19yZWdpc3RyeTsKKyAgRVhQRUNUX0NBTEwobW9ja19yZWdpc3Ry
eSwgR2V0RG9tYWluT3duZXIoImdvb2dsZS5jb20iKSkKKyAgICAgICAgICAuV2lsbFJlcGVhdGVk
bHkoUmV0dXJuKCJMYXJyeSBQYWdlIikpOworCisgIC8vIFVzZSBtb2NrX3JlZ2lzdHJ5IGluIGNv
ZGUgdW5kZXIgdGVzdC4KKyAgLi4uICZtb2NrX3JlZ2lzdHJ5IC4uLgorfQorYGBgCisKK1RoZSBz
b2xlIGBFWFBFQ1RfQ0FMTGAgaGVyZSBzYXlzIHRoYXQgYWxsIGNhbGxzIHRvIGBHZXREb21haW5P
d25lcigpYCBtdXN0IGhhdmUgYCJnb29nbGUuY29tImAgYXMgdGhlIGFyZ3VtZW50LiBJZiBgR2V0
RG9tYWluT3duZXIoInlhaG9vLmNvbSIpYCBpcyBjYWxsZWQsIGl0IHdpbGwgYmUgYW4gdW5leHBl
Y3RlZCBjYWxsLCBhbmQgdGh1cyBhbiBlcnJvci4gSGF2aW5nIGEgbmljZSBtb2NrIGRvZXNuJ3Qg
Y2hhbmdlIHRoZSBzZXZlcml0eSBvZiBhbiB1bmV4cGVjdGVkIGNhbGwuCisKK1NvIGhvdyBkbyB3
ZSB0ZWxsIEdvb2dsZSBNb2NrIHRoYXQgYEdldERvbWFpbk93bmVyKClgIGNhbiBiZSBjYWxsZWQg
d2l0aCBzb21lIG90aGVyIGFyZ3VtZW50cyBhcyB3ZWxsPyBUaGUgc3RhbmRhcmQgdGVjaG5pcXVl
IGlzIHRvIGFkZCBhICJjYXRjaCBhbGwiIGBFWFBFQ1RfQ0FMTGA6CisKK2BgYAorICBFWFBFQ1Rf
Q0FMTChtb2NrX3JlZ2lzdHJ5LCBHZXREb21haW5Pd25lcihfKSkKKyAgICAgICAgLlRpbWVzKEFu
eU51bWJlcigpKTsgIC8vIGNhdGNoZXMgYWxsIG90aGVyIGNhbGxzIHRvIHRoaXMgbWV0aG9kLgor
ICBFWFBFQ1RfQ0FMTChtb2NrX3JlZ2lzdHJ5LCBHZXREb21haW5Pd25lcigiZ29vZ2xlLmNvbSIp
KQorICAgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKCJMYXJyeSBQYWdlIikpOworYGBgCisK
K1JlbWVtYmVyIHRoYXQgYF9gIGlzIHRoZSB3aWxkY2FyZCBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBh
bnl0aGluZy4gV2l0aCB0aGlzLCBpZiBgR2V0RG9tYWluT3duZXIoImdvb2dsZS5jb20iKWAgaXMg
Y2FsbGVkLCBpdCB3aWxsIGRvIHdoYXQgdGhlIHNlY29uZCBgRVhQRUNUX0NBTExgIHNheXM7IGlm
IGl0IGlzIGNhbGxlZCB3aXRoIGEgZGlmZmVyZW50IGFyZ3VtZW50LCBpdCB3aWxsIGRvIHdoYXQg
dGhlIGZpcnN0IGBFWFBFQ1RfQ0FMTGAgc2F5cy4KKworTm90ZSB0aGF0IHRoZSBvcmRlciBvZiB0
aGUgdHdvIGBFWFBFQ1RfQ0FMTHNgIGlzIGltcG9ydGFudCwgYXMgYSBuZXdlciBgRVhQRUNUX0NB
TExgIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBhbiBvbGRlciBvbmUuCisKK0ZvciBtb3JlIG9uIHVu
aW50ZXJlc3RpbmcgY2FsbHMsIG5pY2UgbW9ja3MsIGFuZCBzdHJpY3QgbW9ja3MsIHJlYWQgWyJU
aGUgTmljZSwgdGhlIFN0cmljdCwgYW5kIHRoZSBOYWdneSJdKCN0aGUtbmljZS10aGUtc3RyaWN0
LWFuZC10aGUtbmFnZ3kpLgorCisjIyBFeHBlY3RpbmcgT3JkZXJlZCBDYWxscyAjIworCitBbHRo
b3VnaCBhbiBgRVhQRUNUX0NBTEwoKWAgc3RhdGVtZW50IGRlZmluZWQgZWFybGllciB0YWtlcyBw
cmVjZWRlbmNlCit3aGVuIEdvb2dsZSBNb2NrIHRyaWVzIHRvIG1hdGNoIGEgZnVuY3Rpb24gY2Fs
bCB3aXRoIGFuIGV4cGVjdGF0aW9uLAorYnkgZGVmYXVsdCBjYWxscyBkb24ndCBoYXZlIHRvIGhh
cHBlbiBpbiB0aGUgb3JkZXIgYEVYUEVDVF9DQUxMKClgCitzdGF0ZW1lbnRzIGFyZSB3cml0dGVu
LiBGb3IgZXhhbXBsZSwgaWYgdGhlIGFyZ3VtZW50cyBtYXRjaCB0aGUKK21hdGNoZXJzIGluIHRo
ZSB0aGlyZCBgRVhQRUNUX0NBTEwoKWAsIGJ1dCBub3QgdGhvc2UgaW4gdGhlIGZpcnN0IHR3bywK
K3RoZW4gdGhlIHRoaXJkIGV4cGVjdGF0aW9uIHdpbGwgYmUgdXNlZC4KKworSWYgeW91IHdvdWxk
IHJhdGhlciBoYXZlIGFsbCBjYWxscyBvY2N1ciBpbiB0aGUgb3JkZXIgb2YgdGhlCitleHBlY3Rh
dGlvbnMsIHB1dCB0aGUgYEVYUEVDVF9DQUxMKClgIHN0YXRlbWVudHMgaW4gYSBibG9jayB3aGVy
ZSB5b3UKK2RlZmluZSBhIHZhcmlhYmxlIG9mIHR5cGUgYEluU2VxdWVuY2VgOgorCitgYGAKKyAg
dXNpbmcgOjp0ZXN0aW5nOjpfOworICB1c2luZyA6OnRlc3Rpbmc6OkluU2VxdWVuY2U7CisKKyAg
eworICAgIEluU2VxdWVuY2UgczsKKworICAgIEVYUEVDVF9DQUxMKGZvbywgRG9UaGlzKDUpKTsK
KyAgICBFWFBFQ1RfQ0FMTChiYXIsIERvVGhhdChfKSkKKyAgICAgICAgLlRpbWVzKDIpOworICAg
IEVYUEVDVF9DQUxMKGZvbywgRG9UaGlzKDYpKTsKKyAgfQorYGBgCisKK0luIHRoaXMgZXhhbXBs
ZSwgd2UgZXhwZWN0IGEgY2FsbCB0byBgZm9vLkRvVGhpcyg1KWAsIGZvbGxvd2VkIGJ5IHR3bwor
Y2FsbHMgdG8gYGJhci5Eb1RoYXQoKWAgd2hlcmUgdGhlIGFyZ3VtZW50IGNhbiBiZSBhbnl0aGlu
Zywgd2hpY2ggYXJlCitpbiB0dXJuIGZvbGxvd2VkIGJ5IGEgY2FsbCB0byBgZm9vLkRvVGhpcyg2
KWAuIElmIGEgY2FsbCBvY2N1cnJlZAorb3V0LW9mLW9yZGVyLCBHb29nbGUgTW9jayB3aWxsIHJl
cG9ydCBhbiBlcnJvci4KKworIyMgRXhwZWN0aW5nIFBhcnRpYWxseSBPcmRlcmVkIENhbGxzICMj
CisKK1NvbWV0aW1lcyByZXF1aXJpbmcgZXZlcnl0aGluZyB0byBvY2N1ciBpbiBhIHByZWRldGVy
bWluZWQgb3JkZXIgY2FuCitsZWFkIHRvIGJyaXR0bGUgdGVzdHMuIEZvciBleGFtcGxlLCB3ZSBt
YXkgY2FyZSBhYm91dCBgQWAgb2NjdXJyaW5nCitiZWZvcmUgYm90aCBgQmAgYW5kIGBDYCwgYnV0
IGFyZW4ndCBpbnRlcmVzdGVkIGluIHRoZSByZWxhdGl2ZSBvcmRlcgorb2YgYEJgIGFuZCBgQ2Au
IEluIHRoaXMgY2FzZSwgdGhlIHRlc3Qgc2hvdWxkIHJlZmxlY3Qgb3VyIHJlYWwgaW50ZW50LAor
aW5zdGVhZCBvZiBiZWluZyBvdmVybHkgY29uc3RyYWluaW5nLgorCitHb29nbGUgTW9jayBhbGxv
d3MgeW91IHRvIGltcG9zZSBhbiBhcmJpdHJhcnkgREFHIChkaXJlY3RlZCBhY3ljbGljCitncmFw
aCkgb24gdGhlIGNhbGxzLiBPbmUgd2F5IHRvIGV4cHJlc3MgdGhlIERBRyBpcyB0byB1c2UgdGhl
CitbQWZ0ZXJdKENoZWF0U2hlZXQubWQjdGhlLWFmdGVyLWNsYXVzZSkgY2xhdXNlIG9mIGBFWFBF
Q1RfQ0FMTGAuCisKK0Fub3RoZXIgd2F5IGlzIHZpYSB0aGUgYEluU2VxdWVuY2UoKWAgY2xhdXNl
IChub3QgdGhlIHNhbWUgYXMgdGhlCitgSW5TZXF1ZW5jZWAgY2xhc3MpLCB3aGljaCB3ZSBib3Jy
b3dlZCBmcm9tIGpNb2NrIDIuIEl0J3MgbGVzcworZmxleGlibGUgdGhhbiBgQWZ0ZXIoKWAsIGJ1
dCBtb3JlIGNvbnZlbmllbnQgd2hlbiB5b3UgaGF2ZSBsb25nIGNoYWlucworb2Ygc2VxdWVudGlh
bCBjYWxscywgYXMgaXQgZG9lc24ndCByZXF1aXJlIHlvdSB0byBjb21lIHVwIHdpdGgKK2RpZmZl
cmVudCBuYW1lcyBmb3IgdGhlIGV4cGVjdGF0aW9ucyBpbiB0aGUgY2hhaW5zLiAgSGVyZSdzIGhv
dyBpdAord29ya3M6CisKK0lmIHdlIHZpZXcgYEVYUEVDVF9DQUxMKClgIHN0YXRlbWVudHMgYXMg
bm9kZXMgaW4gYSBncmFwaCwgYW5kIGFkZCBhbgorZWRnZSBmcm9tIG5vZGUgQSB0byBub2RlIEIg
d2hlcmV2ZXIgQSBtdXN0IG9jY3VyIGJlZm9yZSBCLCB3ZSBjYW4gZ2V0CithIERBRy4gV2UgdXNl
IHRoZSB0ZXJtICJzZXF1ZW5jZSIgdG8gbWVhbiBhIGRpcmVjdGVkIHBhdGggaW4gdGhpcworREFH
LiBOb3csIGlmIHdlIGRlY29tcG9zZSB0aGUgREFHIGludG8gc2VxdWVuY2VzLCB3ZSBqdXN0IG5l
ZWQgdG8ga25vdword2hpY2ggc2VxdWVuY2VzIGVhY2ggYEVYUEVDVF9DQUxMKClgIGJlbG9uZ3Mg
dG8gaW4gb3JkZXIgdG8gYmUgYWJsZSB0bworcmVjb25zdHJ1Y3QgdGhlIG9yZ2luYWwgREFHLgor
CitTbywgdG8gc3BlY2lmeSB0aGUgcGFydGlhbCBvcmRlciBvbiB0aGUgZXhwZWN0YXRpb25zIHdl
IG5lZWQgdG8gZG8gdHdvCit0aGluZ3M6IGZpcnN0IHRvIGRlZmluZSBzb21lIGBTZXF1ZW5jZWAg
b2JqZWN0cywgYW5kIHRoZW4gZm9yIGVhY2gKK2BFWFBFQ1RfQ0FMTCgpYCBzYXkgd2hpY2ggYFNl
cXVlbmNlYCBvYmplY3RzIGl0IGlzIHBhcnQKK29mLiBFeHBlY3RhdGlvbnMgaW4gdGhlIHNhbWUg
c2VxdWVuY2UgbXVzdCBvY2N1ciBpbiB0aGUgb3JkZXIgdGhleSBhcmUKK3dyaXR0ZW4uIEZvciBl
eGFtcGxlLAorCitgYGAKKyAgdXNpbmcgOjp0ZXN0aW5nOjpTZXF1ZW5jZTsKKworICBTZXF1ZW5j
ZSBzMSwgczI7CisKKyAgRVhQRUNUX0NBTEwoZm9vLCBBKCkpCisgICAgICAuSW5TZXF1ZW5jZShz
MSwgczIpOworICBFWFBFQ1RfQ0FMTChiYXIsIEIoKSkKKyAgICAgIC5JblNlcXVlbmNlKHMxKTsK
KyAgRVhQRUNUX0NBTEwoYmFyLCBDKCkpCisgICAgICAuSW5TZXF1ZW5jZShzMik7CisgIEVYUEVD
VF9DQUxMKGZvbywgRCgpKQorICAgICAgLkluU2VxdWVuY2UoczIpOworYGBgCisKK3NwZWNpZmll
cyB0aGUgZm9sbG93aW5nIERBRyAod2hlcmUgYHMxYCBpcyBgQSAtPiBCYCwgYW5kIGBzMmAgaXMg
YEEgLT4KK0MgLT4gRGApOgorCitgYGAKKyAgICAgICArLS0tPiBCCisgICAgICAgfAorICBBIC0t
LXwKKyAgICAgICB8CisgICAgICAgKy0tLT4gQyAtLS0+IEQKK2BgYAorCitUaGlzIG1lYW5zIHRo
YXQgQSBtdXN0IG9jY3VyIGJlZm9yZSBCIGFuZCBDLCBhbmQgQyBtdXN0IG9jY3VyIGJlZm9yZQor
RC4gVGhlcmUncyBubyByZXN0cmljdGlvbiBhYm91dCB0aGUgb3JkZXIgb3RoZXIgdGhhbiB0aGVz
ZS4KKworIyMgQ29udHJvbGxpbmcgV2hlbiBhbiBFeHBlY3RhdGlvbiBSZXRpcmVzICMjCisKK1do
ZW4gYSBtb2NrIG1ldGhvZCBpcyBjYWxsZWQsIEdvb2dsZSBNb2NrIG9ubHkgY29uc2lkZXIgZXhw
ZWN0YXRpb25zCit0aGF0IGFyZSBzdGlsbCBhY3RpdmUuIEFuIGV4cGVjdGF0aW9uIGlzIGFjdGl2
ZSB3aGVuIGNyZWF0ZWQsIGFuZAorYmVjb21lcyBpbmFjdGl2ZSAoYWthIF9yZXRpcmVzXykgd2hl
biBhIGNhbGwgdGhhdCBoYXMgdG8gb2NjdXIgbGF0ZXIKK2hhcyBvY2N1cnJlZC4gRm9yIGV4YW1w
bGUsIGluCisKK2BgYAorICB1c2luZyA6OnRlc3Rpbmc6Ol87CisgIHVzaW5nIDo6dGVzdGluZzo6
U2VxdWVuY2U7CisKKyAgU2VxdWVuY2UgczEsIHMyOworCisgIEVYUEVDVF9DQUxMKGxvZywgTG9n
KFdBUk5JTkcsIF8sICJGaWxlIHRvbyBsYXJnZS4iKSkgICAgIC8vICMxCisgICAgICAuVGltZXMo
QW55TnVtYmVyKCkpCisgICAgICAuSW5TZXF1ZW5jZShzMSwgczIpOworICBFWFBFQ1RfQ0FMTChs
b2csIExvZyhXQVJOSU5HLCBfLCAiRGF0YSBzZXQgaXMgZW1wdHkuIikpICAvLyAjMgorICAgICAg
LkluU2VxdWVuY2UoczEpOworICBFWFBFQ1RfQ0FMTChsb2csIExvZyhXQVJOSU5HLCBfLCAiVXNl
ciBub3QgZm91bmQuIikpICAgICAvLyAjMworICAgICAgLkluU2VxdWVuY2UoczIpOworYGBgCisK
K2FzIHNvb24gYXMgZWl0aGVyICMyIG9yICMzIGlzIG1hdGNoZWQsICMxIHdpbGwgcmV0aXJlLiBJ
ZiBhIHdhcm5pbmcKK2AiRmlsZSB0b28gbGFyZ2UuImAgaXMgbG9nZ2VkIGFmdGVyIHRoaXMsIGl0
IHdpbGwgYmUgYW4gZXJyb3IuCisKK05vdGUgdGhhdCBhbiBleHBlY3RhdGlvbiBkb2Vzbid0IHJl
dGlyZSBhdXRvbWF0aWNhbGx5IHdoZW4gaXQncworc2F0dXJhdGVkLiBGb3IgZXhhbXBsZSwKKwor
YGBgCit1c2luZyA6OnRlc3Rpbmc6Ol87CisuLi4KKyAgRVhQRUNUX0NBTEwobG9nLCBMb2coV0FS
TklORywgXywgXykpOyAgICAgICAgICAgICAgICAgIC8vICMxCisgIEVYUEVDVF9DQUxMKGxvZywg
TG9nKFdBUk5JTkcsIF8sICJGaWxlIHRvbyBsYXJnZS4iKSk7ICAvLyAjMgorYGBgCisKK3NheXMg
dGhhdCB0aGVyZSB3aWxsIGJlIGV4YWN0bHkgb25lIHdhcm5pbmcgd2l0aCB0aGUgbWVzc2FnZSBg
IkZpbGUKK3RvbyBsYXJnZS4iYC4gSWYgdGhlIHNlY29uZCB3YXJuaW5nIGNvbnRhaW5zIHRoaXMg
bWVzc2FnZSB0b28sICMyIHdpbGwKK21hdGNoIGFnYWluIGFuZCByZXN1bHQgaW4gYW4gdXBwZXIt
Ym91bmQtdmlvbGF0ZWQgZXJyb3IuCisKK0lmIHRoaXMgaXMgbm90IHdoYXQgeW91IHdhbnQsIHlv
dSBjYW4gYXNrIGFuIGV4cGVjdGF0aW9uIHRvIHJldGlyZSBhcworc29vbiBhcyBpdCBiZWNvbWVz
IHNhdHVyYXRlZDoKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6Ol87CisuLi4KKyAgRVhQRUNUX0NB
TEwobG9nLCBMb2coV0FSTklORywgXywgXykpOyAgICAgICAgICAgICAgICAgLy8gIzEKKyAgRVhQ
RUNUX0NBTEwobG9nLCBMb2coV0FSTklORywgXywgIkZpbGUgdG9vIGxhcmdlLiIpKSAgLy8gIzIK
KyAgICAgIC5SZXRpcmVzT25TYXR1cmF0aW9uKCk7CitgYGAKKworSGVyZSAjMiBjYW4gYmUgdXNl
ZCBvbmx5IG9uY2UsIHNvIGlmIHlvdSBoYXZlIHR3byB3YXJuaW5ncyB3aXRoIHRoZQorbWVzc2Fn
ZSBgIkZpbGUgdG9vIGxhcmdlLiJgLCB0aGUgZmlyc3Qgd2lsbCBtYXRjaCAjMiBhbmQgdGhlIHNl
Y29uZAord2lsbCBtYXRjaCAjMSAtIHRoZXJlIHdpbGwgYmUgbm8gZXJyb3IuCisKKyMgVXNpbmcg
QWN0aW9ucyAjCisKKyMjIFJldHVybmluZyBSZWZlcmVuY2VzIGZyb20gTW9jayBNZXRob2RzICMj
CisKK0lmIGEgbW9jayBmdW5jdGlvbidzIHJldHVybiB0eXBlIGlzIGEgcmVmZXJlbmNlLCB5b3Ug
bmVlZCB0byB1c2UKK2BSZXR1cm5SZWYoKWAgaW5zdGVhZCBvZiBgUmV0dXJuKClgIHRvIHJldHVy
biBhIHJlc3VsdDoKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6OlJldHVyblJlZjsKKworY2xhc3Mg
TW9ja0ZvbyA6IHB1YmxpYyBGb28geworIHB1YmxpYzoKKyAgTU9DS19NRVRIT0QwKEdldEJhciwg
QmFyJigpKTsKK307CisuLi4KKworICBNb2NrRm9vIGZvbzsKKyAgQmFyIGJhcjsKKyAgRVhQRUNU
X0NBTEwoZm9vLCBHZXRCYXIoKSkKKyAgICAgIC5XaWxsT25jZShSZXR1cm5SZWYoYmFyKSk7Citg
YGAKKworIyMgUmV0dXJuaW5nIExpdmUgVmFsdWVzIGZyb20gTW9jayBNZXRob2RzICMjCisKK1Ro
ZSBgUmV0dXJuKHgpYCBhY3Rpb24gc2F2ZXMgYSBjb3B5IG9mIGB4YCB3aGVuIHRoZSBhY3Rpb24g
aXMKK19jcmVhdGVkXywgYW5kIGFsd2F5cyByZXR1cm5zIHRoZSBzYW1lIHZhbHVlIHdoZW5ldmVy
IGl0J3MKK2V4ZWN1dGVkLiBTb21ldGltZXMgeW91IG1heSB3YW50IHRvIGluc3RlYWQgcmV0dXJu
IHRoZSBfbGl2ZV8gdmFsdWUgb2YKK2B4YCAoaS5lLiBpdHMgdmFsdWUgYXQgdGhlIHRpbWUgd2hl
biB0aGUgYWN0aW9uIGlzIF9leGVjdXRlZF8uKS4KKworSWYgdGhlIG1vY2sgZnVuY3Rpb24ncyBy
ZXR1cm4gdHlwZSBpcyBhIHJlZmVyZW5jZSwgeW91IGNhbiBkbyBpdCB1c2luZworYFJldHVyblJl
Zih4KWAsIGFzIHNob3duIGluIHRoZSBwcmV2aW91cyByZWNpcGUgKCJSZXR1cm5pbmcgUmVmZXJl
bmNlcworZnJvbSBNb2NrIE1ldGhvZHMiKS4gSG93ZXZlciwgR29vZ2xlIE1vY2sgZG9lc24ndCBs
ZXQgeW91IHVzZQorYFJldHVyblJlZigpYCBpbiBhIG1vY2sgZnVuY3Rpb24gd2hvc2UgcmV0dXJu
IHR5cGUgaXMgbm90IGEgcmVmZXJlbmNlLAorYXMgZG9pbmcgdGhhdCB1c3VhbGx5IGluZGljYXRl
cyBhIHVzZXIgZXJyb3IuIFNvLCB3aGF0IHNoYWxsIHlvdSBkbz8KKworWW91IG1heSBiZSB0ZW1w
dGVkIHRvIHRyeSBgQnlSZWYoKWA6CisKK2BgYAordXNpbmcgdGVzdGluZzo6QnlSZWY7Cit1c2lu
ZyB0ZXN0aW5nOjpSZXR1cm47CisKK2NsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKKyBwdWJs
aWM6CisgIE1PQ0tfTUVUSE9EMChHZXRWYWx1ZSwgaW50KCkpOworfTsKKy4uLgorICBpbnQgeCA9
IDA7CisgIE1vY2tGb28gZm9vOworICBFWFBFQ1RfQ0FMTChmb28sIEdldFZhbHVlKCkpCisgICAg
ICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKEJ5UmVmKHgpKSk7CisgIHggPSA0MjsKKyAgRVhQRUNU
X0VRKDQyLCBmb28uR2V0VmFsdWUoKSk7CitgYGAKKworVW5mb3J0dW5hdGVseSwgaXQgZG9lc24n
dCB3b3JrIGhlcmUuIFRoZSBhYm92ZSBjb2RlIHdpbGwgZmFpbCB3aXRoIGVycm9yOgorCitgYGAK
K1ZhbHVlIG9mOiBmb28uR2V0VmFsdWUoKQorICBBY3R1YWw6IDAKK0V4cGVjdGVkOiA0MgorYGBg
CisKK1RoZSByZWFzb24gaXMgdGhhdCBgUmV0dXJuKHZhbHVlKWAgY29udmVydHMgYHZhbHVlYCB0
byB0aGUgYWN0dWFsCityZXR1cm4gdHlwZSBvZiB0aGUgbW9jayBmdW5jdGlvbiBhdCB0aGUgdGlt
ZSB3aGVuIHRoZSBhY3Rpb24gaXMKK19jcmVhdGVkXywgbm90IHdoZW4gaXQgaXMgX2V4ZWN1dGVk
Xy4gKFRoaXMgYmVoYXZpb3Igd2FzIGNob3NlbiBmb3IKK3RoZSBhY3Rpb24gdG8gYmUgc2FmZSB3
aGVuIGB2YWx1ZWAgaXMgYSBwcm94eSBvYmplY3QgdGhhdCByZWZlcmVuY2VzCitzb21lIHRlbXBv
cmFyeSBvYmplY3RzLikgQXMgYSByZXN1bHQsIGBCeVJlZih4KWAgaXMgY29udmVydGVkIHRvIGFu
CitgaW50YCB2YWx1ZSAoaW5zdGVhZCBvZiBhIGBjb25zdCBpbnQmYCkgd2hlbiB0aGUgZXhwZWN0
YXRpb24gaXMgc2V0LAorYW5kIGBSZXR1cm4oQnlSZWYoeCkpYCB3aWxsIGFsd2F5cyByZXR1cm4g
MC4KKworYFJldHVyblBvaW50ZWUocG9pbnRlcilgIHdhcyBwcm92aWRlZCB0byBzb2x2ZSB0aGlz
IHByb2JsZW0KK3NwZWNpZmljYWxseS4gSXQgcmV0dXJucyB0aGUgdmFsdWUgcG9pbnRlZCB0byBi
eSBgcG9pbnRlcmAgYXQgdGhlIHRpbWUKK3RoZSBhY3Rpb24gaXMgX2V4ZWN1dGVkXzoKKworYGBg
Cit1c2luZyB0ZXN0aW5nOjpSZXR1cm5Qb2ludGVlOworLi4uCisgIGludCB4ID0gMDsKKyAgTW9j
a0ZvbyBmb287CisgIEVYUEVDVF9DQUxMKGZvbywgR2V0VmFsdWUoKSkKKyAgICAgIC5XaWxsUmVw
ZWF0ZWRseShSZXR1cm5Qb2ludGVlKCZ4KSk7ICAvLyBOb3RlIHRoZSAmIGhlcmUuCisgIHggPSA0
MjsKKyAgRVhQRUNUX0VRKDQyLCBmb28uR2V0VmFsdWUoKSk7ICAvLyBUaGlzIHdpbGwgc3VjY2Vl
ZCBub3cuCitgYGAKKworIyMgQ29tYmluaW5nIEFjdGlvbnMgIyMKKworV2FudCB0byBkbyBtb3Jl
IHRoYW4gb25lIHRoaW5nIHdoZW4gYSBmdW5jdGlvbiBpcyBjYWxsZWQ/IFRoYXQncworZmluZS4g
YERvQWxsKClgIGFsbG93IHlvdSB0byBkbyBzZXF1ZW5jZSBvZiBhY3Rpb25zIGV2ZXJ5IHRpbWUu
IE9ubHkKK3RoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGxhc3QgYWN0aW9uIGluIHRoZSBzZXF1ZW5j
ZSB3aWxsIGJlIHVzZWQuCisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpEb0FsbDsKKworY2xhc3Mg
TW9ja0ZvbyA6IHB1YmxpYyBGb28geworIHB1YmxpYzoKKyAgTU9DS19NRVRIT0QxKEJhciwgYm9v
bChpbnQgbikpOworfTsKKy4uLgorCisgIEVYUEVDVF9DQUxMKGZvbywgQmFyKF8pKQorICAgICAg
LldpbGxPbmNlKERvQWxsKGFjdGlvbl8xLAorICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbl8y
LAorICAgICAgICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgICAgICAgICAgIGFjdGlv
bl9uKSk7CitgYGAKKworIyMgTW9ja2luZyBTaWRlIEVmZmVjdHMgIyMKKworU29tZXRpbWVzIGEg
bWV0aG9kIGV4aGliaXRzIGl0cyBlZmZlY3Qgbm90IHZpYSByZXR1cm5pbmcgYSB2YWx1ZSBidXQK
K3ZpYSBzaWRlIGVmZmVjdHMuIEZvciBleGFtcGxlLCBpdCBtYXkgY2hhbmdlIHNvbWUgZ2xvYmFs
IHN0YXRlIG9yCittb2RpZnkgYW4gb3V0cHV0IGFyZ3VtZW50LiBUbyBtb2NrIHNpZGUgZWZmZWN0
cywgaW4gZ2VuZXJhbCB5b3UgY2FuCitkZWZpbmUgeW91ciBvd24gYWN0aW9uIGJ5IGltcGxlbWVu
dGluZyBgOjp0ZXN0aW5nOjpBY3Rpb25JbnRlcmZhY2VgLgorCitJZiBhbGwgeW91IG5lZWQgdG8g
ZG8gaXMgdG8gY2hhbmdlIGFuIG91dHB1dCBhcmd1bWVudCwgdGhlIGJ1aWx0LWluCitgU2V0QXJn
UG9pbnRlZSgpYCBhY3Rpb24gaXMgY29udmVuaWVudDoKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6
OlNldEFyZ1BvaW50ZWU7CisKK2NsYXNzIE1vY2tNdXRhdG9yIDogcHVibGljIE11dGF0b3Igewor
IHB1YmxpYzoKKyAgTU9DS19NRVRIT0QyKE11dGF0ZSwgdm9pZChib29sIG11dGF0ZSwgaW50KiB2
YWx1ZSkpOworICAuLi4KK307CisuLi4KKworICBNb2NrTXV0YXRvciBtdXRhdG9yOworICBFWFBF
Q1RfQ0FMTChtdXRhdG9yLCBNdXRhdGUodHJ1ZSwgXykpCisgICAgICAuV2lsbE9uY2UoU2V0QXJn
UG9pbnRlZTwxPig1KSk7CitgYGAKKworSW4gdGhpcyBleGFtcGxlLCB3aGVuIGBtdXRhdG9yLk11
dGF0ZSgpYCBpcyBjYWxsZWQsIHdlIHdpbGwgYXNzaWduIDUKK3RvIHRoZSBgaW50YCB2YXJpYWJs
ZSBwb2ludGVkIHRvIGJ5IGFyZ3VtZW50ICMxCisoMC1iYXNlZCkuCisKK2BTZXRBcmdQb2ludGVl
KClgIGNvbnZlbmllbnRseSBtYWtlcyBhbiBpbnRlcm5hbCBjb3B5IG9mIHRoZQordmFsdWUgeW91
IHBhc3MgdG8gaXQsIHJlbW92aW5nIHRoZSBuZWVkIHRvIGtlZXAgdGhlIHZhbHVlIGluIHNjb3Bl
IGFuZAorYWxpdmUuIFRoZSBpbXBsaWNhdGlvbiBob3dldmVyIGlzIHRoYXQgdGhlIHZhbHVlIG11
c3QgaGF2ZSBhIGNvcHkKK2NvbnN0cnVjdG9yIGFuZCBhc3NpZ25tZW50IG9wZXJhdG9yLgorCitJ
ZiB0aGUgbW9jayBtZXRob2QgYWxzbyBuZWVkcyB0byByZXR1cm4gYSB2YWx1ZSBhcyB3ZWxsLCB5
b3UgY2FuIGNoYWluCitgU2V0QXJnUG9pbnRlZSgpYCB3aXRoIGBSZXR1cm4oKWAgdXNpbmcgYERv
QWxsKClgOgorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6XzsKK3VzaW5nIDo6dGVzdGluZzo6UmV0
dXJuOwordXNpbmcgOjp0ZXN0aW5nOjpTZXRBcmdQb2ludGVlOworCitjbGFzcyBNb2NrTXV0YXRv
ciA6IHB1YmxpYyBNdXRhdG9yIHsKKyBwdWJsaWM6CisgIC4uLgorICBNT0NLX01FVEhPRDEoTXV0
YXRlSW50LCBib29sKGludCogdmFsdWUpKTsKK307CisuLi4KKworICBNb2NrTXV0YXRvciBtdXRh
dG9yOworICBFWFBFQ1RfQ0FMTChtdXRhdG9yLCBNdXRhdGVJbnQoXykpCisgICAgICAuV2lsbE9u
Y2UoRG9BbGwoU2V0QXJnUG9pbnRlZTwwPig1KSwKKyAgICAgICAgICAgICAgICAgICAgICBSZXR1
cm4odHJ1ZSkpKTsKK2BgYAorCitJZiB0aGUgb3V0cHV0IGFyZ3VtZW50IGlzIGFuIGFycmF5LCB1
c2UgdGhlCitgU2V0QXJyYXlBcmd1bWVudDxOPihmaXJzdCwgbGFzdClgIGFjdGlvbiBpbnN0ZWFk
LiBJdCBjb3BpZXMgdGhlCitlbGVtZW50cyBpbiBzb3VyY2UgcmFuZ2UgYFtmaXJzdCwgbGFzdClg
IHRvIHRoZSBhcnJheSBwb2ludGVkIHRvIGJ5Cit0aGUgYE5gLXRoICgwLWJhc2VkKSBhcmd1bWVu
dDoKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6Ok5vdE51bGw7Cit1c2luZyA6OnRlc3Rpbmc6OlNl
dEFycmF5QXJndW1lbnQ7CisKK2NsYXNzIE1vY2tBcnJheU11dGF0b3IgOiBwdWJsaWMgQXJyYXlN
dXRhdG9yIHsKKyBwdWJsaWM6CisgIE1PQ0tfTUVUSE9EMihNdXRhdGUsIHZvaWQoaW50KiB2YWx1
ZXMsIGludCBudW1fdmFsdWVzKSk7CisgIC4uLgorfTsKKy4uLgorCisgIE1vY2tBcnJheU11dGF0
b3IgbXV0YXRvcjsKKyAgaW50IHZhbHVlc1s1XSA9IHsgMSwgMiwgMywgNCwgNSB9OworICBFWFBF
Q1RfQ0FMTChtdXRhdG9yLCBNdXRhdGUoTm90TnVsbCgpLCA1KSkKKyAgICAgIC5XaWxsT25jZShT
ZXRBcnJheUFyZ3VtZW50PDA+KHZhbHVlcywgdmFsdWVzICsgNSkpOworYGBgCisKK1RoaXMgYWxz
byB3b3JrcyB3aGVuIHRoZSBhcmd1bWVudCBpcyBhbiBvdXRwdXQgaXRlcmF0b3I6CisKK2BgYAor
dXNpbmcgOjp0ZXN0aW5nOjpfOwordXNpbmcgOjp0ZXN0aW5nOjpTZUFycmF5QXJndW1lbnQ7CisK
K2NsYXNzIE1vY2tSb2xvZGV4IDogcHVibGljIFJvbG9kZXggeworIHB1YmxpYzoKKyAgTU9DS19N
RVRIT0QxKEdldE5hbWVzLCB2b2lkKHN0ZDo6YmFja19pbnNlcnRfaXRlcmF0b3I8dmVjdG9yPHN0
cmluZz4gPikpOworICAuLi4KK307CisuLi4KKworICBNb2NrUm9sb2RleCByb2xvZGV4OworICB2
ZWN0b3I8c3RyaW5nPiBuYW1lczsKKyAgbmFtZXMucHVzaF9iYWNrKCJHZW9yZ2UiKTsKKyAgbmFt
ZXMucHVzaF9iYWNrKCJKb2huIik7CisgIG5hbWVzLnB1c2hfYmFjaygiVGhvbWFzIik7CisgIEVY
UEVDVF9DQUxMKHJvbG9kZXgsIEdldE5hbWVzKF8pKQorICAgICAgLldpbGxPbmNlKFNldEFycmF5
QXJndW1lbnQ8MD4obmFtZXMuYmVnaW4oKSwgbmFtZXMuZW5kKCkpKTsKK2BgYAorCisjIyBDaGFu
Z2luZyBhIE1vY2sgT2JqZWN0J3MgQmVoYXZpb3IgQmFzZWQgb24gdGhlIFN0YXRlICMjCisKK0lm
IHlvdSBleHBlY3QgYSBjYWxsIHRvIGNoYW5nZSB0aGUgYmVoYXZpb3Igb2YgYSBtb2NrIG9iamVj
dCwgeW91IGNhbiB1c2UgYDo6dGVzdGluZzo6SW5TZXF1ZW5jZWAgdG8gc3BlY2lmeSBkaWZmZXJl
bnQgYmVoYXZpb3JzIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIGNhbGw6CisKK2BgYAordXNpbmcgOjp0
ZXN0aW5nOjpJblNlcXVlbmNlOwordXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm47CisKKy4uLgorICB7
CisgICAgSW5TZXF1ZW5jZSBzZXE7CisgICAgRVhQRUNUX0NBTEwobXlfbW9jaywgSXNEaXJ0eSgp
KQorICAgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKHRydWUpKTsKKyAgICBFWFBFQ1RfQ0FM
TChteV9tb2NrLCBGbHVzaCgpKTsKKyAgICBFWFBFQ1RfQ0FMTChteV9tb2NrLCBJc0RpcnR5KCkp
CisgICAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oZmFsc2UpKTsKKyAgfQorICBteV9tb2Nr
LkZsdXNoSWZEaXJ0eSgpOworYGBgCisKK1RoaXMgbWFrZXMgYG15X21vY2suSXNEaXJ0eSgpYCBy
ZXR1cm4gYHRydWVgIGJlZm9yZSBgbXlfbW9jay5GbHVzaCgpYCBpcyBjYWxsZWQgYW5kIHJldHVy
biBgZmFsc2VgIGFmdGVyd2FyZHMuCisKK0lmIHRoZSBiZWhhdmlvciBjaGFuZ2UgaXMgbW9yZSBj
b21wbGV4LCB5b3UgY2FuIHN0b3JlIHRoZSBlZmZlY3RzIGluIGEgdmFyaWFibGUgYW5kIG1ha2Ug
YSBtb2NrIG1ldGhvZCBnZXQgaXRzIHJldHVybiB2YWx1ZSBmcm9tIHRoYXQgdmFyaWFibGU6CisK
K2BgYAordXNpbmcgOjp0ZXN0aW5nOjpfOwordXNpbmcgOjp0ZXN0aW5nOjpTYXZlQXJnOwordXNp
bmcgOjp0ZXN0aW5nOjpSZXR1cm47CisKK0FDVElPTl9QKFJldHVyblBvaW50ZWUsIHApIHsgcmV0
dXJuICpwOyB9CisuLi4KKyAgaW50IHByZXZpb3VzX3ZhbHVlID0gMDsKKyAgRVhQRUNUX0NBTEwo
bXlfbW9jaywgR2V0UHJldlZhbHVlKCkpCisgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuUG9p
bnRlZSgmcHJldmlvdXNfdmFsdWUpKTsKKyAgRVhQRUNUX0NBTEwobXlfbW9jaywgVXBkYXRlVmFs
dWUoXykpCisgICAgICAuV2lsbFJlcGVhdGVkbHkoU2F2ZUFyZzwwPigmcHJldmlvdXNfdmFsdWUp
KTsKKyAgbXlfbW9jay5Eb1NvbWV0aGluZ1RvVXBkYXRlVmFsdWUoKTsKK2BgYAorCitIZXJlIGBt
eV9tb2NrLkdldFByZXZWYWx1ZSgpYCB3aWxsIGFsd2F5cyByZXR1cm4gdGhlIGFyZ3VtZW50IG9m
IHRoZSBsYXN0IGBVcGRhdGVWYWx1ZSgpYCBjYWxsLgorCisjIyBTZXR0aW5nIHRoZSBEZWZhdWx0
IFZhbHVlIGZvciBhIFJldHVybiBUeXBlICMjCisKK0lmIGEgbW9jayBtZXRob2QncyByZXR1cm4g
dHlwZSBpcyBhIGJ1aWx0LWluIEMrKyB0eXBlIG9yIHBvaW50ZXIsIGJ5CitkZWZhdWx0IGl0IHdp
bGwgcmV0dXJuIDAgd2hlbiBpbnZva2VkLiBBbHNvLCBpbiBDKysgMTEgYW5kIGFib3ZlLCBhIG1v
Y2sKK21ldGhvZCB3aG9zZSByZXR1cm4gdHlwZSBoYXMgYSBkZWZhdWx0IGNvbnN0cnVjdG9yIHdp
bGwgcmV0dXJuIGEgZGVmYXVsdC1jb25zdHJ1Y3RlZAordmFsdWUgYnkgZGVmYXVsdC4gIFlvdSBv
bmx5IG5lZWQgdG8gc3BlY2lmeSBhbgorYWN0aW9uIGlmIHRoaXMgZGVmYXVsdCB2YWx1ZSBkb2Vz
bid0IHdvcmsgZm9yIHlvdS4KKworU29tZXRpbWVzLCB5b3UgbWF5IHdhbnQgdG8gY2hhbmdlIHRo
aXMgZGVmYXVsdCB2YWx1ZSwgb3IgeW91IG1heSB3YW50Cit0byBzcGVjaWZ5IGEgZGVmYXVsdCB2
YWx1ZSBmb3IgdHlwZXMgR29vZ2xlIE1vY2sgZG9lc24ndCBrbm93CithYm91dC4gWW91IGNhbiBk
byB0aGlzIHVzaW5nIHRoZSBgOjp0ZXN0aW5nOjpEZWZhdWx0VmFsdWVgIGNsYXNzCit0ZW1wbGF0
ZToKKworYGBgCitjbGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7CisgcHVibGljOgorICBNT0NL
X01FVEhPRDAoQ2FsY3VsYXRlQmFyLCBCYXIoKSk7Cit9OworLi4uCisKKyAgQmFyIGRlZmF1bHRf
YmFyOworICAvLyBTZXRzIHRoZSBkZWZhdWx0IHJldHVybiB2YWx1ZSBmb3IgdHlwZSBCYXIuCisg
IERlZmF1bHRWYWx1ZTxCYXI+OjpTZXQoZGVmYXVsdF9iYXIpOworCisgIE1vY2tGb28gZm9vOwor
CisgIC8vIFdlIGRvbid0IG5lZWQgdG8gc3BlY2lmeSBhbiBhY3Rpb24gaGVyZSwgYXMgdGhlIGRl
ZmF1bHQKKyAgLy8gcmV0dXJuIHZhbHVlIHdvcmtzIGZvciB1cy4KKyAgRVhQRUNUX0NBTEwoZm9v
LCBDYWxjdWxhdGVCYXIoKSk7CisKKyAgZm9vLkNhbGN1bGF0ZUJhcigpOyAgLy8gVGhpcyBzaG91
bGQgcmV0dXJuIGRlZmF1bHRfYmFyLgorCisgIC8vIFVuc2V0cyB0aGUgZGVmYXVsdCByZXR1cm4g
dmFsdWUuCisgIERlZmF1bHRWYWx1ZTxCYXI+OjpDbGVhcigpOworYGBgCisKK1BsZWFzZSBub3Rl
IHRoYXQgY2hhbmdpbmcgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIGEgdHlwZSBjYW4gbWFrZSB5b3UK
K3Rlc3RzIGhhcmQgdG8gdW5kZXJzdGFuZC4gV2UgcmVjb21tZW5kIHlvdSB0byB1c2UgdGhpcyBm
ZWF0dXJlCitqdWRpY2lvdXNseS4gRm9yIGV4YW1wbGUsIHlvdSBtYXkgd2FudCB0byBtYWtlIHN1
cmUgdGhlIGBTZXQoKWAgYW5kCitgQ2xlYXIoKWAgY2FsbHMgYXJlIHJpZ2h0IG5leHQgdG8gdGhl
IGNvZGUgdGhhdCB1c2VzIHlvdXIgbW9jay4KKworIyMgU2V0dGluZyB0aGUgRGVmYXVsdCBBY3Rp
b25zIGZvciBhIE1vY2sgTWV0aG9kICMjCisKK1lvdSd2ZSBsZWFybmVkIGhvdyB0byBjaGFuZ2Ug
dGhlIGRlZmF1bHQgdmFsdWUgb2YgYSBnaXZlbgordHlwZS4gSG93ZXZlciwgdGhpcyBtYXkgYmUg
dG9vIGNvYXJzZSBmb3IgeW91ciBwdXJwb3NlOiBwZXJoYXBzIHlvdQoraGF2ZSB0d28gbW9jayBt
ZXRob2RzIHdpdGggdGhlIHNhbWUgcmV0dXJuIHR5cGUgYW5kIHlvdSB3YW50IHRoZW0gdG8KK2hh
dmUgZGlmZmVyZW50IGJlaGF2aW9ycy4gVGhlIGBPTl9DQUxMKClgIG1hY3JvIGFsbG93cyB5b3Ug
dG8KK2N1c3RvbWl6ZSB5b3VyIG1vY2sncyBiZWhhdmlvciBhdCB0aGUgbWV0aG9kIGxldmVsOgor
CitgYGAKK3VzaW5nIDo6dGVzdGluZzo6XzsKK3VzaW5nIDo6dGVzdGluZzo6QW55TnVtYmVyOwor
dXNpbmcgOjp0ZXN0aW5nOjpHdDsKK3VzaW5nIDo6dGVzdGluZzo6UmV0dXJuOworLi4uCisgIE9O
X0NBTEwoZm9vLCBTaWduKF8pKQorICAgICAgLldpbGxCeURlZmF1bHQoUmV0dXJuKC0xKSk7Cisg
IE9OX0NBTEwoZm9vLCBTaWduKDApKQorICAgICAgLldpbGxCeURlZmF1bHQoUmV0dXJuKDApKTsK
KyAgT05fQ0FMTChmb28sIFNpZ24oR3QoMCkpKQorICAgICAgLldpbGxCeURlZmF1bHQoUmV0dXJu
KDEpKTsKKworICBFWFBFQ1RfQ0FMTChmb28sIFNpZ24oXykpCisgICAgICAuVGltZXMoQW55TnVt
YmVyKCkpOworCisgIGZvby5TaWduKDUpOyAgIC8vIFRoaXMgc2hvdWxkIHJldHVybiAxLgorICBm
b28uU2lnbigtOSk7ICAvLyBUaGlzIHNob3VsZCByZXR1cm4gLTEuCisgIGZvby5TaWduKDApOyAg
IC8vIFRoaXMgc2hvdWxkIHJldHVybiAwLgorYGBgCisKK0FzIHlvdSBtYXkgaGF2ZSBndWVzc2Vk
LCB3aGVuIHRoZXJlIGFyZSBtb3JlIHRoYW4gb25lIGBPTl9DQUxMKClgCitzdGF0ZW1lbnRzLCB0
aGUgbmV3cyBvcmRlciB0YWtlIHByZWNlZGVuY2Ugb3ZlciB0aGUgb2xkZXIgb25lcy4gSW4KK290
aGVyIHdvcmRzLCB0aGUgKipsYXN0Kiogb25lIHRoYXQgbWF0Y2hlcyB0aGUgZnVuY3Rpb24gYXJn
dW1lbnRzIHdpbGwKK2JlIHVzZWQuIFRoaXMgbWF0Y2hpbmcgb3JkZXIgYWxsb3dzIHlvdSB0byBz
ZXQgdXAgdGhlIGNvbW1vbiBiZWhhdmlvcgoraW4gYSBtb2NrIG9iamVjdCdzIGNvbnN0cnVjdG9y
IG9yIHRoZSB0ZXN0IGZpeHR1cmUncyBzZXQtdXAgcGhhc2UgYW5kCitzcGVjaWFsaXplIHRoZSBt
b2NrJ3MgYmVoYXZpb3IgbGF0ZXIuCisKKyMjIFVzaW5nIEZ1bmN0aW9ucy9NZXRob2RzL0Z1bmN0
b3JzIGFzIEFjdGlvbnMgIyMKKworSWYgdGhlIGJ1aWx0LWluIGFjdGlvbnMgZG9uJ3Qgc3VpdCB5
b3UsIHlvdSBjYW4gZWFzaWx5IHVzZSBhbiBleGlzdGluZworZnVuY3Rpb24sIG1ldGhvZCwgb3Ig
ZnVuY3RvciBhcyBhbiBhY3Rpb246CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpfOwordXNpbmcg
Ojp0ZXN0aW5nOjpJbnZva2U7CisKK2NsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKKyBwdWJs
aWM6CisgIE1PQ0tfTUVUSE9EMihTdW0sIGludChpbnQgeCwgaW50IHkpKTsKKyAgTU9DS19NRVRI
T0QxKENvbXBsZXhKb2IsIGJvb2woaW50IHgpKTsKK307CisKK2ludCBDYWxjdWxhdGVTdW0oaW50
IHgsIGludCB5KSB7IHJldHVybiB4ICsgeTsgfQorCitjbGFzcyBIZWxwZXIgeworIHB1YmxpYzoK
KyAgYm9vbCBDb21wbGV4Sm9iKGludCB4KTsKK307CisuLi4KKworICBNb2NrRm9vIGZvbzsKKyAg
SGVscGVyIGhlbHBlcjsKKyAgRVhQRUNUX0NBTEwoZm9vLCBTdW0oXywgXykpCisgICAgICAuV2ls
bE9uY2UoSW52b2tlKENhbGN1bGF0ZVN1bSkpOworICBFWFBFQ1RfQ0FMTChmb28sIENvbXBsZXhK
b2IoXykpCisgICAgICAuV2lsbE9uY2UoSW52b2tlKCZoZWxwZXIsICZIZWxwZXI6OkNvbXBsZXhK
b2IpKTsKKworICBmb28uU3VtKDUsIDYpOyAgICAgICAvLyBJbnZva2VzIENhbGN1bGF0ZVN1bSg1
LCA2KS4KKyAgZm9vLkNvbXBsZXhKb2IoMTApOyAgLy8gSW52b2tlcyBoZWxwZXIuQ29tcGxleEpv
YigxMCk7CitgYGAKKworVGhlIG9ubHkgcmVxdWlyZW1lbnQgaXMgdGhhdCB0aGUgdHlwZSBvZiB0
aGUgZnVuY3Rpb24sIGV0YyBtdXN0IGJlCitfY29tcGF0aWJsZV8gd2l0aCB0aGUgc2lnbmF0dXJl
IG9mIHRoZSBtb2NrIGZ1bmN0aW9uLCBtZWFuaW5nIHRoYXQgdGhlCitsYXR0ZXIncyBhcmd1bWVu
dHMgY2FuIGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRvIHRoZSBjb3JyZXNwb25kaW5nCithcmd1
bWVudHMgb2YgdGhlIGZvcm1lciwgYW5kIHRoZSBmb3JtZXIncyByZXR1cm4gdHlwZSBjYW4gYmUK
K2ltcGxpY2l0bHkgY29udmVydGVkIHRvIHRoYXQgb2YgdGhlIGxhdHRlci4gU28sIHlvdSBjYW4g
aW52b2tlCitzb21ldGhpbmcgd2hvc2UgdHlwZSBpcyBfbm90XyBleGFjdGx5IHRoZSBzYW1lIGFz
IHRoZSBtb2NrIGZ1bmN0aW9uLAorYXMgbG9uZyBhcyBpdCdzIHNhZmUgdG8gZG8gc28gLSBuaWNl
LCBodWg/CisKKyMjIEludm9raW5nIGEgRnVuY3Rpb24vTWV0aG9kL0Z1bmN0b3IgV2l0aG91dCBB
cmd1bWVudHMgIyMKKworYEludm9rZSgpYCBpcyB2ZXJ5IHVzZWZ1bCBmb3IgZG9pbmcgYWN0aW9u
cyB0aGF0IGFyZSBtb3JlIGNvbXBsZXguIEl0CitwYXNzZXMgdGhlIG1vY2sgZnVuY3Rpb24ncyBh
cmd1bWVudHMgdG8gdGhlIGZ1bmN0aW9uIG9yIGZ1bmN0b3IgYmVpbmcKK2ludm9rZWQgc3VjaCB0
aGF0IHRoZSBjYWxsZWUgaGFzIHRoZSBmdWxsIGNvbnRleHQgb2YgdGhlIGNhbGwgdG8gd29yawor
d2l0aC4gSWYgdGhlIGludm9rZWQgZnVuY3Rpb24gaXMgbm90IGludGVyZXN0ZWQgaW4gc29tZSBv
ciBhbGwgb2YgdGhlCithcmd1bWVudHMsIGl0IGNhbiBzaW1wbHkgaWdub3JlIHRoZW0uCisKK1ll
dCwgYSBjb21tb24gcGF0dGVybiBpcyB0aGF0IGEgdGVzdCBhdXRob3Igd2FudHMgdG8gaW52b2tl
IGEgZnVuY3Rpb24KK3dpdGhvdXQgdGhlIGFyZ3VtZW50cyBvZiB0aGUgbW9jayBmdW5jdGlvbi4g
YEludm9rZSgpYCBhbGxvd3MgaGVyIHRvCitkbyB0aGF0IHVzaW5nIGEgd3JhcHBlciBmdW5jdGlv
biB0aGF0IHRocm93cyBhd2F5IHRoZSBhcmd1bWVudHMgYmVmb3JlCitpbnZva2luZyBhbiB1bmRl
cmxpbmluZyBudWxsYXJ5IGZ1bmN0aW9uLiBOZWVkbGVzcyB0byBzYXksIHRoaXMgY2FuIGJlCit0
ZWRpb3VzIGFuZCBvYnNjdXJlcyB0aGUgaW50ZW50IG9mIHRoZSB0ZXN0LgorCitgSW52b2tlV2l0
aG91dEFyZ3MoKWAgc29sdmVzIHRoaXMgcHJvYmxlbS4gSXQncyBsaWtlIGBJbnZva2UoKWAgZXhj
ZXB0Cit0aGF0IGl0IGRvZXNuJ3QgcGFzcyB0aGUgbW9jayBmdW5jdGlvbidzIGFyZ3VtZW50cyB0
byB0aGUKK2NhbGxlZS4gSGVyZSdzIGFuIGV4YW1wbGU6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5n
OjpfOwordXNpbmcgOjp0ZXN0aW5nOjpJbnZva2VXaXRob3V0QXJnczsKKworY2xhc3MgTW9ja0Zv
byA6IHB1YmxpYyBGb28geworIHB1YmxpYzoKKyAgTU9DS19NRVRIT0QxKENvbXBsZXhKb2IsIGJv
b2woaW50IG4pKTsKK307CisKK2Jvb2wgSm9iMSgpIHsgLi4uIH0KKy4uLgorCisgIE1vY2tGb28g
Zm9vOworICBFWFBFQ1RfQ0FMTChmb28sIENvbXBsZXhKb2IoXykpCisgICAgICAuV2lsbE9uY2Uo
SW52b2tlV2l0aG91dEFyZ3MoSm9iMSkpOworCisgIGZvby5Db21wbGV4Sm9iKDEwKTsgIC8vIElu
dm9rZXMgSm9iMSgpLgorYGBgCisKKyMjIEludm9raW5nIGFuIEFyZ3VtZW50IG9mIHRoZSBNb2Nr
IEZ1bmN0aW9uICMjCisKK1NvbWV0aW1lcyBhIG1vY2sgZnVuY3Rpb24gd2lsbCByZWNlaXZlIGEg
ZnVuY3Rpb24gcG9pbnRlciBvciBhIGZ1bmN0b3IKKyhpbiBvdGhlciB3b3JkcywgYSAiY2FsbGFi
bGUiKSBhcyBhbiBhcmd1bWVudCwgZS5nLgorCitgYGAKK2NsYXNzIE1vY2tGb28gOiBwdWJsaWMg
Rm9vIHsKKyBwdWJsaWM6CisgIE1PQ0tfTUVUSE9EMihEb1RoaXMsIGJvb2woaW50IG4sIGJvb2wg
KCpmcCkoaW50KSkpOworfTsKK2BgYAorCithbmQgeW91IG1heSB3YW50IHRvIGludm9rZSB0aGlz
IGNhbGxhYmxlIGFyZ3VtZW50OgorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6XzsKKy4uLgorICBN
b2NrRm9vIGZvbzsKKyAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoaXMoXywgXykpCisgICAgICAuV2ls
bE9uY2UoLi4uKTsKKyAgLy8gV2lsbCBleGVjdXRlICgqZnApKDUpLCB3aGVyZSBmcCBpcyB0aGUK
KyAgLy8gc2Vjb25kIGFyZ3VtZW50IERvVGhpcygpIHJlY2VpdmVzLgorYGBgCisKK0FyZ2hoLCB5
b3UgbmVlZCB0byByZWZlciB0byBhIG1vY2sgZnVuY3Rpb24gYXJndW1lbnQgYnV0IEMrKyBoYXMg
bm8KK2xhbWJkYSAoeWV0KSwgc28geW91IGhhdmUgdG8gZGVmaW5lIHlvdXIgb3duIGFjdGlvbi4g
Oi0oIE9yIGRvIHlvdQorcmVhbGx5PworCitXZWxsLCBHb29nbGUgTW9jayBoYXMgYW4gYWN0aW9u
IHRvIHNvbHZlIF9leGFjdGx5XyB0aGlzIHByb2JsZW06CisKK2BgYAorICBJbnZva2VBcmd1bWVu
dDxOPihhcmdfMSwgYXJnXzIsIC4uLiwgYXJnX20pCitgYGAKKword2lsbCBpbnZva2UgdGhlIGBO
YC10aCAoMC1iYXNlZCkgYXJndW1lbnQgdGhlIG1vY2sgZnVuY3Rpb24gcmVjZWl2ZXMsCit3aXRo
IGBhcmdfMWAsIGBhcmdfMmAsIC4uLiwgYW5kIGBhcmdfbWAuIE5vIG1hdHRlciBpZiB0aGUgYXJn
dW1lbnQgaXMKK2EgZnVuY3Rpb24gcG9pbnRlciBvciBhIGZ1bmN0b3IsIEdvb2dsZSBNb2NrIGhh
bmRsZXMgdGhlbSBib3RoLgorCitXaXRoIHRoYXQsIHlvdSBjb3VsZCB3cml0ZToKKworYGBgCit1
c2luZyA6OnRlc3Rpbmc6Ol87Cit1c2luZyA6OnRlc3Rpbmc6Okludm9rZUFyZ3VtZW50OworLi4u
CisgIEVYUEVDVF9DQUxMKGZvbywgRG9UaGlzKF8sIF8pKQorICAgICAgLldpbGxPbmNlKEludm9r
ZUFyZ3VtZW50PDE+KDUpKTsKKyAgLy8gV2lsbCBleGVjdXRlICgqZnApKDUpLCB3aGVyZSBmcCBp
cyB0aGUKKyAgLy8gc2Vjb25kIGFyZ3VtZW50IERvVGhpcygpIHJlY2VpdmVzLgorYGBgCisKK1do
YXQgaWYgdGhlIGNhbGxhYmxlIHRha2VzIGFuIGFyZ3VtZW50IGJ5IHJlZmVyZW5jZT8gTm8gcHJv
YmxlbSAtIGp1c3QKK3dyYXAgaXQgaW5zaWRlIGBCeVJlZigpYDoKKworYGBgCisuLi4KKyAgTU9D
S19NRVRIT0QxKEJhciwgYm9vbChib29sICgqZnApKGludCwgY29uc3QgSGVscGVyJikpKTsKKy4u
LgordXNpbmcgOjp0ZXN0aW5nOjpfOwordXNpbmcgOjp0ZXN0aW5nOjpCeVJlZjsKK3VzaW5nIDo6
dGVzdGluZzo6SW52b2tlQXJndW1lbnQ7CisuLi4KKworICBNb2NrRm9vIGZvbzsKKyAgSGVscGVy
IGhlbHBlcjsKKyAgLi4uCisgIEVYUEVDVF9DQUxMKGZvbywgQmFyKF8pKQorICAgICAgLldpbGxP
bmNlKEludm9rZUFyZ3VtZW50PDA+KDUsIEJ5UmVmKGhlbHBlcikpKTsKKyAgLy8gQnlSZWYoaGVs
cGVyKSBndWFyYW50ZWVzIHRoYXQgYSByZWZlcmVuY2UgdG8gaGVscGVyLCBub3QgYSBjb3B5IG9m
IGl0LAorICAvLyB3aWxsIGJlIHBhc3NlZCB0byB0aGUgY2FsbGFibGUuCitgYGAKKworV2hhdCBp
ZiB0aGUgY2FsbGFibGUgdGFrZXMgYW4gYXJndW1lbnQgYnkgcmVmZXJlbmNlIGFuZCB3ZSBkbyAq
Km5vdCoqCit3cmFwIHRoZSBhcmd1bWVudCBpbiBgQnlSZWYoKWA/IFRoZW4gYEludm9rZUFyZ3Vt
ZW50KClgIHdpbGwgX21ha2UgYQorY29weV8gb2YgdGhlIGFyZ3VtZW50LCBhbmQgcGFzcyBhIF9y
ZWZlcmVuY2UgdG8gdGhlIGNvcHlfLCBpbnN0ZWFkIG9mCithIHJlZmVyZW5jZSB0byB0aGUgb3Jp
Z2luYWwgdmFsdWUsIHRvIHRoZSBjYWxsYWJsZS4gVGhpcyBpcyBlc3BlY2lhbGx5CitoYW5keSB3
aGVuIHRoZSBhcmd1bWVudCBpcyBhIHRlbXBvcmFyeSB2YWx1ZToKKworYGBgCisuLi4KKyAgTU9D
S19NRVRIT0QxKERvVGhhdCwgYm9vbChib29sICgqZikoY29uc3QgZG91YmxlJiB4LCBjb25zdCBz
dHJpbmcmIHMpKSk7CisuLi4KK3VzaW5nIDo6dGVzdGluZzo6XzsKK3VzaW5nIDo6dGVzdGluZzo6
SW52b2tlQXJndW1lbnQ7CisuLi4KKworICBNb2NrRm9vIGZvbzsKKyAgLi4uCisgIEVYUEVDVF9D
QUxMKGZvbywgRG9UaGF0KF8pKQorICAgICAgLldpbGxPbmNlKEludm9rZUFyZ3VtZW50PDA+KDUu
MCwgc3RyaW5nKCJIaSIpKSk7CisgIC8vIFdpbGwgZXhlY3V0ZSAoKmYpKDUuMCwgc3RyaW5nKCJI
aSIpKSwgd2hlcmUgZiBpcyB0aGUgZnVuY3Rpb24gcG9pbnRlcgorICAvLyBEb1RoYXQoKSByZWNl
aXZlcy4gIE5vdGUgdGhhdCB0aGUgdmFsdWVzIDUuMCBhbmQgc3RyaW5nKCJIaSIpIGFyZQorICAv
LyB0ZW1wb3JhcnkgYW5kIGRlYWQgb25jZSB0aGUgRVhQRUNUX0NBTEwoKSBzdGF0ZW1lbnQgZmlu
aXNoZXMuICBZZXQKKyAgLy8gaXQncyBmaW5lIHRvIHBlcmZvcm0gdGhpcyBhY3Rpb24gbGF0ZXIs
IHNpbmNlIGEgY29weSBvZiB0aGUgdmFsdWVzCisgIC8vIGFyZSBrZXB0IGluc2lkZSB0aGUgSW52
b2tlQXJndW1lbnQgYWN0aW9uLgorYGBgCisKKyMjIElnbm9yaW5nIGFuIEFjdGlvbidzIFJlc3Vs
dCAjIworCitTb21ldGltZXMgeW91IGhhdmUgYW4gYWN0aW9uIHRoYXQgcmV0dXJucyBfc29tZXRo
aW5nXywgYnV0IHlvdSBuZWVkIGFuCithY3Rpb24gdGhhdCByZXR1cm5zIGB2b2lkYCAocGVyaGFw
cyB5b3Ugd2FudCB0byB1c2UgaXQgaW4gYSBtb2NrCitmdW5jdGlvbiB0aGF0IHJldHVybnMgYHZv
aWRgLCBvciBwZXJoYXBzIGl0IG5lZWRzIHRvIGJlIHVzZWQgaW4KK2BEb0FsbCgpYCBhbmQgaXQn
cyBub3QgdGhlIGxhc3QgaW4gdGhlIGxpc3QpLiBgSWdub3JlUmVzdWx0KClgIGxldHMKK3lvdSBk
byB0aGF0LiBGb3IgZXhhbXBsZToKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6Ol87Cit1c2luZyA6
OnRlc3Rpbmc6Okludm9rZTsKK3VzaW5nIDo6dGVzdGluZzo6UmV0dXJuOworCitpbnQgUHJvY2Vz
cyhjb25zdCBNeURhdGEmIGRhdGEpOworc3RyaW5nIERvU29tZXRoaW5nKCk7CisKK2NsYXNzIE1v
Y2tGb28gOiBwdWJsaWMgRm9vIHsKKyBwdWJsaWM6CisgIE1PQ0tfTUVUSE9EMShBYmMsIHZvaWQo
Y29uc3QgTXlEYXRhJiBkYXRhKSk7CisgIE1PQ0tfTUVUSE9EMChYeXosIGJvb2woKSk7Cit9Owor
Li4uCisKKyAgTW9ja0ZvbyBmb287CisgIEVYUEVDVF9DQUxMKGZvbywgQWJjKF8pKQorICAvLyAu
V2lsbE9uY2UoSW52b2tlKFByb2Nlc3MpKTsKKyAgLy8gVGhlIGFib3ZlIGxpbmUgd29uJ3QgY29t
cGlsZSBhcyBQcm9jZXNzKCkgcmV0dXJucyBpbnQgYnV0IEFiYygpIG5lZWRzCisgIC8vIHRvIHJl
dHVybiB2b2lkLgorICAgICAgLldpbGxPbmNlKElnbm9yZVJlc3VsdChJbnZva2UoUHJvY2Vzcykp
KTsKKworICBFWFBFQ1RfQ0FMTChmb28sIFh5eigpKQorICAgICAgLldpbGxPbmNlKERvQWxsKEln
bm9yZVJlc3VsdChJbnZva2UoRG9Tb21ldGhpbmcpKSwKKyAgICAgIC8vIElnbm9yZXMgdGhlIHN0
cmluZyBEb1NvbWV0aGluZygpIHJldHVybnMuCisgICAgICAgICAgICAgICAgICAgICAgUmV0dXJu
KHRydWUpKSk7CitgYGAKKworTm90ZSB0aGF0IHlvdSAqKmNhbm5vdCoqIHVzZSBgSWdub3JlUmVz
dWx0KClgIG9uIGFuIGFjdGlvbiB0aGF0IGFscmVhZHkKK3JldHVybnMgYHZvaWRgLiBEb2luZyBz
byB3aWxsIGxlYWQgdG8gdWdseSBjb21waWxlciBlcnJvcnMuCisKKyMjIFNlbGVjdGluZyBhbiBB
Y3Rpb24ncyBBcmd1bWVudHMgIyMKKworU2F5IHlvdSBoYXZlIGEgbW9jayBmdW5jdGlvbiBgRm9v
KClgIHRoYXQgdGFrZXMgc2V2ZW4gYXJndW1lbnRzLCBhbmQKK3lvdSBoYXZlIGEgY3VzdG9tIGFj
dGlvbiB0aGF0IHlvdSB3YW50IHRvIGludm9rZSB3aGVuIGBGb28oKWAgaXMKK2NhbGxlZC4gVHJv
dWJsZSBpcywgdGhlIGN1c3RvbSBhY3Rpb24gb25seSB3YW50cyB0aHJlZSBhcmd1bWVudHM6CisK
K2BgYAordXNpbmcgOjp0ZXN0aW5nOjpfOwordXNpbmcgOjp0ZXN0aW5nOjpJbnZva2U7CisuLi4K
KyAgTU9DS19NRVRIT0Q3KEZvbywgYm9vbChib29sIHZpc2libGUsIGNvbnN0IHN0cmluZyYgbmFt
ZSwgaW50IHgsIGludCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hcDxwYWly
PGludCwgaW50PiwgZG91YmxlPiYgd2VpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGRv
dWJsZSBtaW5fd2VpZ2h0LCBkb3VibGUgbWF4X3dpZ2h0KSk7CisuLi4KKworYm9vbCBJc1Zpc2li
bGVJblF1YWRyYW50MShib29sIHZpc2libGUsIGludCB4LCBpbnQgeSkgeworICByZXR1cm4gdmlz
aWJsZSAmJiB4ID49IDAgJiYgeSA+PSAwOworfQorLi4uCisKKyAgRVhQRUNUX0NBTEwobW9jaywg
Rm9vKF8sIF8sIF8sIF8sIF8sIF8sIF8pKQorICAgICAgLldpbGxPbmNlKEludm9rZShJc1Zpc2li
bGVJblF1YWRyYW50MSkpOyAgLy8gVWgsIHdvbid0IGNvbXBpbGUuIDotKAorYGBgCisKK1RvIHBs
ZWFzZSB0aGUgY29tcGlsZXIgR29kLCB5b3UgY2FuIHRvIGRlZmluZSBhbiAiYWRhcHRvciIgdGhh
dCBoYXMKK3RoZSBzYW1lIHNpZ25hdHVyZSBhcyBgRm9vKClgIGFuZCBjYWxscyB0aGUgY3VzdG9t
IGFjdGlvbiB3aXRoIHRoZQorcmlnaHQgYXJndW1lbnRzOgorCitgYGAKK3VzaW5nIDo6dGVzdGlu
Zzo6XzsKK3VzaW5nIDo6dGVzdGluZzo6SW52b2tlOworCitib29sIE15SXNWaXNpYmxlSW5RdWFk
cmFudDEoYm9vbCB2aXNpYmxlLCBjb25zdCBzdHJpbmcmIG5hbWUsIGludCB4LCBpbnQgeSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXA8cGFpcjxpbnQsIGludD4sIGRvdWJs
ZT4mIHdlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgbWluX3dlaWdo
dCwgZG91YmxlIG1heF93aWdodCkgeworICByZXR1cm4gSXNWaXNpYmxlSW5RdWFkcmFudDEodmlz
aWJsZSwgeCwgeSk7Cit9CisuLi4KKworICBFWFBFQ1RfQ0FMTChtb2NrLCBGb28oXywgXywgXywg
XywgXywgXywgXykpCisgICAgICAuV2lsbE9uY2UoSW52b2tlKE15SXNWaXNpYmxlSW5RdWFkcmFu
dDEpKTsgIC8vIE5vdyBpdCB3b3Jrcy4KK2BgYAorCitCdXQgaXNuJ3QgdGhpcyBhd2t3YXJkPwor
CitHb29nbGUgTW9jayBwcm92aWRlcyBhIGdlbmVyaWMgX2FjdGlvbiBhZGFwdG9yXywgc28geW91
IGNhbiBzcGVuZCB5b3VyCit0aW1lIG1pbmRpbmcgbW9yZSBpbXBvcnRhbnQgYnVzaW5lc3MgdGhh
biB3cml0aW5nIHlvdXIgb3duCithZGFwdG9ycy4gSGVyZSdzIHRoZSBzeW50YXg6CisKK2BgYAor
ICBXaXRoQXJnczxOMSwgTjIsIC4uLiwgTms+KGFjdGlvbikKK2BgYAorCitjcmVhdGVzIGFuIGFj
dGlvbiB0aGF0IHBhc3NlcyB0aGUgYXJndW1lbnRzIG9mIHRoZSBtb2NrIGZ1bmN0aW9uIGF0Cit0
aGUgZ2l2ZW4gaW5kaWNlcyAoMC1iYXNlZCkgdG8gdGhlIGlubmVyIGBhY3Rpb25gIGFuZCBwZXJm
b3JtcworaXQuIFVzaW5nIGBXaXRoQXJnc2AsIG91ciBvcmlnaW5hbCBleGFtcGxlIGNhbiBiZSB3
cml0dGVuIGFzOgorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6XzsKK3VzaW5nIDo6dGVzdGluZzo6
SW52b2tlOwordXNpbmcgOjp0ZXN0aW5nOjpXaXRoQXJnczsKKy4uLgorICBFWFBFQ1RfQ0FMTCht
b2NrLCBGb28oXywgXywgXywgXywgXywgXywgXykpCisgICAgICAuV2lsbE9uY2UoV2l0aEFyZ3M8
MCwgMiwgMz4oSW52b2tlKElzVmlzaWJsZUluUXVhZHJhbnQxKSkpOworICAgICAgLy8gTm8gbmVl
ZCB0byBkZWZpbmUgeW91ciBvd24gYWRhcHRvci4KK2BgYAorCitGb3IgYmV0dGVyIHJlYWRhYmls
aXR5LCBHb29nbGUgTW9jayBhbHNvIGdpdmVzIHlvdToKKworICAqIGBXaXRob3V0QXJncyhhY3Rp
b24pYCB3aGVuIHRoZSBpbm5lciBgYWN0aW9uYCB0YWtlcyBfbm9fIGFyZ3VtZW50LCBhbmQKKyAg
KiBgV2l0aEFyZzxOPihhY3Rpb24pYCAobm8gYHNgIGFmdGVyIGBBcmdgKSB3aGVuIHRoZSBpbm5l
ciBgYWN0aW9uYCB0YWtlcyBfb25lXyBhcmd1bWVudC4KKworQXMgeW91IG1heSBoYXZlIHJlYWxp
emVkLCBgSW52b2tlV2l0aG91dEFyZ3MoLi4uKWAgaXMganVzdCBzeW50YWN0aWMKK3N1Z2FyIGZv
ciBgV2l0aG91dEFyZ3MoSW52b2tlKC4uLikpYC4KKworSGVyZSBhcmUgbW9yZSB0aXBzOgorCisg
ICogVGhlIGlubmVyIGFjdGlvbiB1c2VkIGluIGBXaXRoQXJnc2AgYW5kIGZyaWVuZHMgZG9lcyBu
b3QgaGF2ZSB0byBiZSBgSW52b2tlKClgIC0tIGl0IGNhbiBiZSBhbnl0aGluZy4KKyAgKiBZb3Ug
Y2FuIHJlcGVhdCBhbiBhcmd1bWVudCBpbiB0aGUgYXJndW1lbnQgbGlzdCBpZiBuZWNlc3Nhcnks
IGUuZy4gYFdpdGhBcmdzPDIsIDMsIDMsIDU+KC4uLilgLgorICAqIFlvdSBjYW4gY2hhbmdlIHRo
ZSBvcmRlciBvZiB0aGUgYXJndW1lbnRzLCBlLmcuIGBXaXRoQXJnczwzLCAyLCAxPiguLi4pYC4K
KyAgKiBUaGUgdHlwZXMgb2YgdGhlIHNlbGVjdGVkIGFyZ3VtZW50cyBkbyBfbm90XyBoYXZlIHRv
IG1hdGNoIHRoZSBzaWduYXR1cmUgb2YgdGhlIGlubmVyIGFjdGlvbiBleGFjdGx5LiBJdCB3b3Jr
cyBhcyBsb25nIGFzIHRoZXkgY2FuIGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRvIHRoZSBjb3Jy
ZXNwb25kaW5nIGFyZ3VtZW50cyBvZiB0aGUgaW5uZXIgYWN0aW9uLiBGb3IgZXhhbXBsZSwgaWYg
dGhlIDQtdGggYXJndW1lbnQgb2YgdGhlIG1vY2sgZnVuY3Rpb24gaXMgYW4gYGludGAgYW5kIGBt
eV9hY3Rpb25gIHRha2VzIGEgYGRvdWJsZWAsIGBXaXRoQXJnPDQ+KG15X2FjdGlvbilgIHdpbGwg
d29yay4KKworIyMgSWdub3JpbmcgQXJndW1lbnRzIGluIEFjdGlvbiBGdW5jdGlvbnMgIyMKKwor
VGhlIHNlbGVjdGluZy1hbi1hY3Rpb24ncy1hcmd1bWVudHMgcmVjaXBlIHNob3dlZCB1cyBvbmUg
d2F5IHRvIG1ha2UgYQorbW9jayBmdW5jdGlvbiBhbmQgYW4gYWN0aW9uIHdpdGggaW5jb21wYXRp
YmxlIGFyZ3VtZW50IGxpc3RzIGZpdAordG9nZXRoZXIuIFRoZSBkb3duc2lkZSBpcyB0aGF0IHdy
YXBwaW5nIHRoZSBhY3Rpb24gaW4KK2BXaXRoQXJnczwuLi4+KClgIGNhbiBnZXQgdGVkaW91cyBm
b3IgcGVvcGxlIHdyaXRpbmcgdGhlIHRlc3RzLgorCitJZiB5b3UgYXJlIGRlZmluaW5nIGEgZnVu
Y3Rpb24sIG1ldGhvZCwgb3IgZnVuY3RvciB0byBiZSB1c2VkIHdpdGgKK2BJbnZva2UqKClgLCBh
bmQgeW91IGFyZSBub3QgaW50ZXJlc3RlZCBpbiBzb21lIG9mIGl0cyBhcmd1bWVudHMsIGFuCith
bHRlcm5hdGl2ZSB0byBgV2l0aEFyZ3NgIGlzIHRvIGRlY2xhcmUgdGhlIHVuaW50ZXJlc3Rpbmcg
YXJndW1lbnRzIGFzCitgVW51c2VkYC4gVGhpcyBtYWtlcyB0aGUgZGVmaW5pdGlvbiBsZXNzIGNs
dXR0ZXJlZCBhbmQgbGVzcyBmcmFnaWxlIGluCitjYXNlIHRoZSB0eXBlcyBvZiB0aGUgdW5pbnRl
cmVzdGluZyBhcmd1bWVudHMgY2hhbmdlLiBJdCBjb3VsZCBhbHNvCitpbmNyZWFzZSB0aGUgY2hh
bmNlIHRoZSBhY3Rpb24gZnVuY3Rpb24gY2FuIGJlIHJldXNlZC4gRm9yIGV4YW1wbGUsCitnaXZl
bgorCitgYGAKKyAgTU9DS19NRVRIT0QzKEZvbywgZG91YmxlKGNvbnN0IHN0cmluZyYgbGFiZWws
IGRvdWJsZSB4LCBkb3VibGUgeSkpOworICBNT0NLX01FVEhPRDMoQmFyLCBkb3VibGUoaW50IGlu
ZGV4LCBkb3VibGUgeCwgZG91YmxlIHkpKTsKK2BgYAorCitpbnN0ZWFkIG9mCisKK2BgYAordXNp
bmcgOjp0ZXN0aW5nOjpfOwordXNpbmcgOjp0ZXN0aW5nOjpJbnZva2U7CisKK2RvdWJsZSBEaXN0
YW5jZVRvT3JpZ2luV2l0aExhYmVsKGNvbnN0IHN0cmluZyYgbGFiZWwsIGRvdWJsZSB4LCBkb3Vi
bGUgeSkgeworICByZXR1cm4gc3FydCh4KnggKyB5KnkpOworfQorCitkb3VibGUgRGlzdGFuY2VU
b09yaWdpbldpdGhJbmRleChpbnQgaW5kZXgsIGRvdWJsZSB4LCBkb3VibGUgeSkgeworICByZXR1
cm4gc3FydCh4KnggKyB5KnkpOworfQorLi4uCisKKyAgRVhFUENUX0NBTEwobW9jaywgRm9vKCJh
YmMiLCBfLCBfKSkKKyAgICAgIC5XaWxsT25jZShJbnZva2UoRGlzdGFuY2VUb09yaWdpbldpdGhM
YWJlbCkpOworICBFWEVQQ1RfQ0FMTChtb2NrLCBCYXIoNSwgXywgXykpCisgICAgICAuV2lsbE9u
Y2UoSW52b2tlKERpc3RhbmNlVG9PcmlnaW5XaXRoSW5kZXgpKTsKK2BgYAorCit5b3UgY291bGQg
d3JpdGUKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6Ol87Cit1c2luZyA6OnRlc3Rpbmc6Okludm9r
ZTsKK3VzaW5nIDo6dGVzdGluZzo6VW51c2VkOworCitkb3VibGUgRGlzdGFuY2VUb09yaWdpbihV
bnVzZWQsIGRvdWJsZSB4LCBkb3VibGUgeSkgeworICByZXR1cm4gc3FydCh4KnggKyB5KnkpOwor
fQorLi4uCisKKyAgRVhFUENUX0NBTEwobW9jaywgRm9vKCJhYmMiLCBfLCBfKSkKKyAgICAgIC5X
aWxsT25jZShJbnZva2UoRGlzdGFuY2VUb09yaWdpbikpOworICBFWEVQQ1RfQ0FMTChtb2NrLCBC
YXIoNSwgXywgXykpCisgICAgICAuV2lsbE9uY2UoSW52b2tlKERpc3RhbmNlVG9PcmlnaW4pKTsK
K2BgYAorCisjIyBTaGFyaW5nIEFjdGlvbnMgIyMKKworSnVzdCBsaWtlIG1hdGNoZXJzLCBhIEdv
b2dsZSBNb2NrIGFjdGlvbiBvYmplY3QgY29uc2lzdHMgb2YgYSBwb2ludGVyCit0byBhIHJlZi1j
b3VudGVkIGltcGxlbWVudGF0aW9uIG9iamVjdC4gVGhlcmVmb3JlIGNvcHlpbmcgYWN0aW9ucyBp
cworYWxzbyBhbGxvd2VkIGFuZCB2ZXJ5IGVmZmljaWVudC4gV2hlbiB0aGUgbGFzdCBhY3Rpb24g
dGhhdCByZWZlcmVuY2VzCit0aGUgaW1wbGVtZW50YXRpb24gb2JqZWN0IGRpZXMsIHRoZSBpbXBs
ZW1lbnRhdGlvbiBvYmplY3Qgd2lsbCBiZQorZGVsZXRlZC4KKworSWYgeW91IGhhdmUgc29tZSBj
b21wbGV4IGFjdGlvbiB0aGF0IHlvdSB3YW50IHRvIHVzZSBhZ2FpbiBhbmQgYWdhaW4sCit5b3Ug
bWF5IG5vdCBoYXZlIHRvIGJ1aWxkIGl0IGZyb20gc2NyYXRjaCBldmVyeXRpbWUuIElmIHRoZSBh
Y3Rpb24KK2RvZXNuJ3QgaGF2ZSBhbiBpbnRlcm5hbCBzdGF0ZSAoaS5lLiBpZiBpdCBhbHdheXMg
ZG9lcyB0aGUgc2FtZSB0aGluZworbm8gbWF0dGVyIGhvdyBtYW55IHRpbWVzIGl0IGhhcyBiZWVu
IGNhbGxlZCksIHlvdSBjYW4gYXNzaWduIGl0IHRvIGFuCithY3Rpb24gdmFyaWFibGUgYW5kIHVz
ZSB0aGF0IHZhcmlhYmxlIHJlcGVhdGVkbHkuIEZvciBleGFtcGxlOgorCitgYGAKKyAgQWN0aW9u
PGJvb2woaW50Kik+IHNldF9mbGFnID0gRG9BbGwoU2V0QXJnUG9pbnRlZTwwPig1KSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuKHRydWUpKTsKKyAgLi4uIHVz
ZSBzZXRfZmxhZyBpbiAuV2lsbE9uY2UoKSBhbmQgLldpbGxSZXBlYXRlZGx5KCkgLi4uCitgYGAK
KworSG93ZXZlciwgaWYgdGhlIGFjdGlvbiBoYXMgaXRzIG93biBzdGF0ZSwgeW91IG1heSBiZSBz
dXJwcmlzZWQgaWYgeW91CitzaGFyZSB0aGUgYWN0aW9uIG9iamVjdC4gU3VwcG9zZSB5b3UgaGF2
ZSBhbiBhY3Rpb24gZmFjdG9yeQorYEluY3JlbWVudENvdW50ZXIoaW5pdClgIHdoaWNoIGNyZWF0
ZXMgYW4gYWN0aW9uIHRoYXQgaW5jcmVtZW50cyBhbmQKK3JldHVybnMgYSBjb3VudGVyIHdob3Nl
IGluaXRpYWwgdmFsdWUgaXMgYGluaXRgLCB1c2luZyB0d28gYWN0aW9ucworY3JlYXRlZCBmcm9t
IHRoZSBzYW1lIGV4cHJlc3Npb24gYW5kIHVzaW5nIGEgc2hhcmVkIGFjdGlvbiB3aWxsCitleGlo
aWJpdCBkaWZmZXJlbnQgYmVoYXZpb3JzLiBFeGFtcGxlOgorCitgYGAKKyAgRVhQRUNUX0NBTEwo
Zm9vLCBEb1RoaXMoKSkKKyAgICAgIC5XaWxsUmVwZWF0ZWRseShJbmNyZW1lbnRDb3VudGVyKDAp
KTsKKyAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoYXQoKSkKKyAgICAgIC5XaWxsUmVwZWF0ZWRseShJ
bmNyZW1lbnRDb3VudGVyKDApKTsKKyAgZm9vLkRvVGhpcygpOyAgLy8gUmV0dXJucyAxLgorICBm
b28uRG9UaGlzKCk7ICAvLyBSZXR1cm5zIDIuCisgIGZvby5Eb1RoYXQoKTsgIC8vIFJldHVybnMg
MSAtIEJsYWgoKSB1c2VzIGEgZGlmZmVyZW50CisgICAgICAgICAgICAgICAgIC8vIGNvdW50ZXIg
dGhhbiBCYXIoKSdzLgorYGBgCisKK3ZlcnN1cworCitgYGAKKyAgQWN0aW9uPGludCgpPiBpbmNy
ZW1lbnQgPSBJbmNyZW1lbnRDb3VudGVyKDApOworCisgIEVYUEVDVF9DQUxMKGZvbywgRG9UaGlz
KCkpCisgICAgICAuV2lsbFJlcGVhdGVkbHkoaW5jcmVtZW50KTsKKyAgRVhQRUNUX0NBTEwoZm9v
LCBEb1RoYXQoKSkKKyAgICAgIC5XaWxsUmVwZWF0ZWRseShpbmNyZW1lbnQpOworICBmb28uRG9U
aGlzKCk7ICAvLyBSZXR1cm5zIDEuCisgIGZvby5Eb1RoaXMoKTsgIC8vIFJldHVybnMgMi4KKyAg
Zm9vLkRvVGhhdCgpOyAgLy8gUmV0dXJucyAzIC0gdGhlIGNvdW50ZXIgaXMgc2hhcmVkLgorYGBg
CisKKyMgTWlzYyBSZWNpcGVzIG9uIFVzaW5nIEdvb2dsZSBNb2NrICMKKworIyMgTW9ja2luZyBN
ZXRob2RzIFRoYXQgVXNlIE1vdmUtT25seSBUeXBlcyAjIworCitDKysxMSBpbnRyb2R1Y2VkIDxl
bT5tb3ZlLW9ubHkgdHlwZXM8L2VtPi4gIEEgbW92ZS1vbmx5LXR5cGVkIHZhbHVlIGNhbiBiZSBt
b3ZlZCBmcm9tIG9uZSBvYmplY3QgdG8gYW5vdGhlciwgYnV0IGNhbm5vdCBiZSBjb3BpZWQuICBg
c3RkOjp1bmlxdWVfcHRyPFQ+YCBpcyBwcm9iYWJseSB0aGUgbW9zdCBjb21tb25seSB1c2VkIG1v
dmUtb25seSB0eXBlLgorCitNb2NraW5nIGEgbWV0aG9kIHRoYXQgdGFrZXMgYW5kL29yIHJldHVy
bnMgbW92ZS1vbmx5IHR5cGVzIHByZXNlbnRzIHNvbWUgY2hhbGxlbmdlcywgYnV0IG5vdGhpbmcg
aW5zdXJtb3VudGFibGUuICBUaGlzIHJlY2lwZSBzaG93cyB5b3UgaG93IHlvdSBjYW4gZG8gaXQu
CisKK0xldOKAmXMgc2F5IHdlIGFyZSB3b3JraW5nIG9uIGEgZmljdGlvbmFsIHByb2plY3QgdGhh
dCBsZXRzIG9uZSBwb3N0IGFuZCBzaGFyZSBzbmlwcGV0cyBjYWxsZWQg4oCcYnV6emVz4oCdLiAg
WW91ciBjb2RlIHVzZXMgdGhlc2UgdHlwZXM6CisKK2BgYAorZW51bSBjbGFzcyBBY2Nlc3NMZXZl
bCB7IGtJbnRlcm5hbCwga1B1YmxpYyB9OworCitjbGFzcyBCdXp6IHsKKyBwdWJsaWM6CisgIGV4
cGxpY2l0IEJ1enooQWNjZXNzTGV2ZWwgYWNjZXNzKSB7IOKApiB9CisgIC4uLgorfTsKKworY2xh
c3MgQnV6emVyIHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgfkJ1enplcigpIHt9CisgIHZpcnR1YWwg
c3RkOjp1bmlxdWVfcHRyPEJ1eno+IE1ha2VCdXp6KGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXh0KSA9
IDA7CisgIHZpcnR1YWwgYm9vbCBTaGFyZUJ1enooc3RkOjp1bmlxdWVfcHRyPEJ1eno+IGJ1enos
IFRpbWUgdGltZXN0YW1wKSA9IDA7CisgIC4uLgorfTsKK2BgYAorCitBIGBCdXp6YCBvYmplY3Qg
cmVwcmVzZW50cyBhIHNuaXBwZXQgYmVpbmcgcG9zdGVkLiAgQSBjbGFzcyB0aGF0IGltcGxlbWVu
dHMgdGhlIGBCdXp6ZXJgIGludGVyZmFjZSBpcyBjYXBhYmxlIG9mIGNyZWF0aW5nIGFuZCBzaGFy
aW5nIGBCdXp6YC4gIE1ldGhvZHMgaW4gYEJ1enplcmAgbWF5IHJldHVybiBhIGB1bmlxdWVfcHRy
PEJ1eno+YCBvciB0YWtlIGEgYHVuaXF1ZV9wdHI8QnV6ej5gLiAgTm93IHdlIG5lZWQgdG8gbW9j
ayBgQnV6emVyYCBpbiBvdXIgdGVzdHMuCisKK1RvIG1vY2sgYSBtZXRob2QgdGhhdCByZXR1cm5z
IGEgbW92ZS1vbmx5IHR5cGUsIHlvdSBqdXN0IHVzZSB0aGUgZmFtaWxpYXIgYE1PQ0tfTUVUSE9E
YCBzeW50YXggYXMgdXN1YWw6CisKK2BgYAorY2xhc3MgTW9ja0J1enplciA6IHB1YmxpYyBCdXp6
ZXIgeworIHB1YmxpYzoKKyAgTU9DS19NRVRIT0QxKE1ha2VCdXp6LCBzdGQ6OnVuaXF1ZV9wdHI8
QnV6ej4oY29uc3Qgc3RkOjpzdHJpbmcmIHRleHQpKTsKKyAg4oCmCit9OworYGBgCisKK0hvd2V2
ZXIsIGlmIHlvdSBhdHRlbXB0IHRvIHVzZSB0aGUgc2FtZSBgTU9DS19NRVRIT0RgIHBhdHRlcm4g
dG8gbW9jayBhIG1ldGhvZCB0aGF0IHRha2VzIGEgbW92ZS1vbmx5IHBhcmFtZXRlciwgeW914oCZ
bGwgZ2V0IGEgY29tcGlsZXIgZXJyb3IgY3VycmVudGx5OgorCitgYGAKKyAgLy8gRG9lcyBOT1Qg
Y29tcGlsZSEKKyAgTU9DS19NRVRIT0QyKFNoYXJlQnV6eiwgYm9vbChzdGQ6OnVuaXF1ZV9wdHI8
QnV6ej4gYnV6eiwgVGltZSB0aW1lc3RhbXApKTsKK2BgYAorCitXaGlsZSBpdOKAmXMgaGlnaGx5
IGRlc2lyYWJsZSB0byBtYWtlIHRoaXMgc3ludGF4IGp1c3Qgd29yaywgaXTigJlzIG5vdCB0cml2
aWFsIGFuZCB0aGUgd29yayBoYXNu4oCZdCBiZWVuIGRvbmUgeWV0LiAgRm9ydHVuYXRlbHksIHRo
ZXJlIGlzIGEgdHJpY2sgeW91IGNhbiBhcHBseSB0b2RheSB0byBnZXQgc29tZXRoaW5nIHRoYXQg
d29ya3MgbmVhcmx5IGFzIHdlbGwgYXMgdGhpcy4KKworVGhlIHRyaWNrLCBpcyB0byBkZWxlZ2F0
ZSB0aGUgYFNoYXJlQnV6eigpYCBtZXRob2QgdG8gYSBtb2NrIG1ldGhvZCAobGV04oCZcyBjYWxs
IGl0IGBEb1NoYXJlQnV6eigpYCkgdGhhdCBkb2VzIG5vdCB0YWtlIG1vdmUtb25seSBwYXJhbWV0
ZXJzOgorCitgYGAKK2NsYXNzIE1vY2tCdXp6ZXIgOiBwdWJsaWMgQnV6emVyIHsKKyBwdWJsaWM6
CisgIE1PQ0tfTUVUSE9EMShNYWtlQnV6eiwgc3RkOjp1bmlxdWVfcHRyPEJ1eno+KGNvbnN0IHN0
ZDo6c3RyaW5nJiB0ZXh0KSk7CisgIE1PQ0tfTUVUSE9EMihEb1NoYXJlQnV6eiwgYm9vbChCdXp6
KiBidXp6LCBUaW1lIHRpbWVzdGFtcCkpOworICBib29sIFNoYXJlQnV6eihzdGQ6OnVuaXF1ZV9w
dHI8QnV6ej4gYnV6eiwgVGltZSB0aW1lc3RhbXApIHsKKyAgICByZXR1cm4gRG9TaGFyZUJ1enoo
YnV6ei5nZXQoKSwgdGltZXN0YW1wKTsKKyAgfQorfTsKK2BgYAorCitOb3RlIHRoYXQgdGhlcmUn
cyBubyBuZWVkIHRvIGRlZmluZSBvciBkZWNsYXJlIGBEb1NoYXJlQnV6eigpYCBpbiBhIGJhc2Ug
Y2xhc3MuICBZb3Ugb25seSBuZWVkIHRvIGRlZmluZSBpdCBhcyBhIGBNT0NLX01FVEhPRGAgaW4g
dGhlIG1vY2sgY2xhc3MuCisKK05vdyB0aGF0IHdlIGhhdmUgdGhlIG1vY2sgY2xhc3MgZGVmaW5l
ZCwgd2UgY2FuIHVzZSBpdCBpbiB0ZXN0cy4gIEluIHRoZSBmb2xsb3dpbmcgY29kZSBleGFtcGxl
cywgd2UgYXNzdW1lIHRoYXQgd2UgaGF2ZSBkZWZpbmVkIGEgYE1vY2tCdXp6ZXJgIG9iamVjdCBu
YW1lZCBgbW9ja19idXp6ZXJfYDoKKworYGBgCisgIE1vY2tCdXp6ZXIgbW9ja19idXp6ZXJfOwor
YGBgCisKK0ZpcnN0IGxldOKAmXMgc2VlIGhvdyB3ZSBjYW4gc2V0IGV4cGVjdGF0aW9ucyBvbiB0
aGUgYE1ha2VCdXp6KClgIG1ldGhvZCwgd2hpY2ggcmV0dXJucyBhIGB1bmlxdWVfcHRyPEJ1eno+
YC4KKworQXMgdXN1YWwsIGlmIHlvdSBzZXQgYW4gZXhwZWN0YXRpb24gd2l0aG91dCBhbiBhY3Rp
b24gKGkuZS4gdGhlIGAuV2lsbE9uY2UoKWAgb3IgYC5XaWxsUmVwZWF0ZWQoKWAgY2xhdXNlKSwg
d2hlbiB0aGF0IGV4cGVjdGF0aW9uIGZpcmVzLCB0aGUgZGVmYXVsdCBhY3Rpb24gZm9yIHRoYXQg
bWV0aG9kIHdpbGwgYmUgdGFrZW4uICBTaW5jZSBgdW5pcXVlX3B0cjw+YCBoYXMgYSBkZWZhdWx0
IGNvbnN0cnVjdG9yIHRoYXQgcmV0dXJucyBhIG51bGwgYHVuaXF1ZV9wdHJgLCB0aGF04oCZcyB3
aGF0IHlvdeKAmWxsIGdldCBpZiB5b3UgZG9u4oCZdCBzcGVjaWZ5IGFuIGFjdGlvbjoKKworYGBg
CisgIC8vIFVzZSB0aGUgZGVmYXVsdCBhY3Rpb24uCisgIEVYUEVDVF9DQUxMKG1vY2tfYnV6emVy
XywgTWFrZUJ1enooImhlbGxvIikpOworCisgIC8vIFRyaWdnZXJzIHRoZSBwcmV2aW91cyBFWFBF
Q1RfQ0FMTC4KKyAgRVhQRUNUX0VRKG51bGxwdHIsIG1vY2tfYnV6emVyXy5NYWtlQnV6eigiaGVs
bG8iKSk7CitgYGAKKworSWYgeW91IGFyZSBub3QgaGFwcHkgd2l0aCB0aGUgZGVmYXVsdCBhY3Rp
b24sIHlvdSBjYW4gdHdlYWsgaXQuICBEZXBlbmRpbmcgb24gd2hhdCB5b3UgbmVlZCwgeW91IG1h
eSBlaXRoZXIgdHdlYWsgdGhlIGRlZmF1bHQgYWN0aW9uIGZvciBhIHNwZWNpZmljIChtb2NrIG9i
amVjdCwgbW9jayBtZXRob2QpIGNvbWJpbmF0aW9uIHVzaW5nIGBPTl9DQUxMKClgLCBvciB5b3Ug
bWF5IHR3ZWFrIHRoZSBkZWZhdWx0IGFjdGlvbiBmb3IgYWxsIG1vY2sgbWV0aG9kcyB0aGF0IHJl
dHVybiBhIHNwZWNpZmljIHR5cGUuICBUaGUgdXNhZ2Ugb2YgYE9OX0NBTEwoKWAgaXMgc2ltaWxh
ciB0byBgRVhQRUNUX0NBTEwoKWAsIHNvIHdl4oCZbGwgc2tpcCBpdCBhbmQganVzdCBleHBsYWlu
IGhvdyB0byBkbyB0aGUgbGF0dGVyICh0d2Vha2luZyB0aGUgZGVmYXVsdCBhY3Rpb24gZm9yIGEg
c3BlY2lmaWMgcmV0dXJuIHR5cGUpLiAgWW91IGRvIHRoaXMgdmlhIHRoZSBgRGVmYXVsdFZhbHVl
PD46OlNldEZhY3RvcnkoKWAgYW5kIGBEZWZhdWx0VmFsdWU8Pjo6Q2xlYXIoKWAgQVBJOgorCitg
YGAKKyAgLy8gU2V0cyB0aGUgZGVmYXVsdCBhY3Rpb24gZm9yIHJldHVybiB0eXBlIHN0ZDo6dW5p
cXVlX3B0cjxCdXp6PiB0bworICAvLyBjcmVhdGluZyBhIG5ldyBCdXp6IGV2ZXJ5IHRpbWUuCisg
IERlZmF1bHRWYWx1ZTxzdGQ6OnVuaXF1ZV9wdHI8QnV6ej4+OjpTZXRGYWN0b3J5KAorICAgICAg
W10geyByZXR1cm4gTWFrZVVuaXF1ZTxCdXp6PihBY2Nlc3NMZXZlbDo6a0ludGVybmFsKTsgfSk7
CisKKyAgLy8gV2hlbiB0aGlzIGZpcmVzLCB0aGUgZGVmYXVsdCBhY3Rpb24gb2YgTWFrZUJ1enoo
KSB3aWxsIHJ1biwgd2hpY2gKKyAgLy8gd2lsbCByZXR1cm4gYSBuZXcgQnV6eiBvYmplY3QuCisg
IEVYUEVDVF9DQUxMKG1vY2tfYnV6emVyXywgTWFrZUJ1enooImhlbGxvIikpLlRpbWVzKEFueU51
bWJlcigpKTsKKworICBhdXRvIGJ1enoxID0gbW9ja19idXp6ZXJfLk1ha2VCdXp6KCJoZWxsbyIp
OworICBhdXRvIGJ1enoyID0gbW9ja19idXp6ZXJfLk1ha2VCdXp6KCJoZWxsbyIpOworICBFWFBF
Q1RfTkUobnVsbHB0ciwgYnV6ejEpOworICBFWFBFQ1RfTkUobnVsbHB0ciwgYnV6ejIpOworICBF
WFBFQ1RfTkUoYnV6ejEsIGJ1enoyKTsKKworICAvLyBSZXNldHMgdGhlIGRlZmF1bHQgYWN0aW9u
IGZvciByZXR1cm4gdHlwZSBzdGQ6OnVuaXF1ZV9wdHI8QnV6ej4sCisgIC8vIHRvIGF2b2lkIGlu
dGVyZmVyZSB3aXRoIG90aGVyIHRlc3RzLgorICBEZWZhdWx0VmFsdWU8c3RkOjp1bmlxdWVfcHRy
PEJ1eno+Pjo6Q2xlYXIoKTsKK2BgYAorCitXaGF0IGlmIHlvdSB3YW50IHRoZSBtZXRob2QgdG8g
ZG8gc29tZXRoaW5nIG90aGVyIHRoYW4gdGhlIGRlZmF1bHQgYWN0aW9uPyAgSWYgeW91IGp1c3Qg
bmVlZCB0byByZXR1cm4gYSBwcmUtZGVmaW5lZCBtb3ZlLW9ubHkgdmFsdWUsIHlvdSBjYW4gdXNl
IHRoZSBgUmV0dXJuKEJ5TW92ZSguLi4pKWAgYWN0aW9uOgorCitgYGAKKyAgLy8gV2hlbiB0aGlz
IGZpcmVzLCB0aGUgdW5pcXVlX3B0cjw+IHNwZWNpZmllZCBieSBCeU1vdmUoLi4uKSB3aWxsCisg
IC8vIGJlIHJldHVybmVkLgorICBFWFBFQ1RfQ0FMTChtb2NrX2J1enplcl8sIE1ha2VCdXp6KCJ3
b3JsZCIpKQorICAgICAgLldpbGxPbmNlKFJldHVybihCeU1vdmUoTWFrZVVuaXF1ZTxCdXp6PihB
Y2Nlc3NMZXZlbDo6a0ludGVybmFsKSkpKTsKKworICBFWFBFQ1RfTkUobnVsbHB0ciwgbW9ja19i
dXp6ZXJfLk1ha2VCdXp6KCJ3b3JsZCIpKTsKK2BgYAorCitOb3RlIHRoYXQgYEJ5TW92ZSgpYCBp
cyBlc3NlbnRpYWwgaGVyZSAtIGlmIHlvdSBkcm9wIGl0LCB0aGUgY29kZSB3b27igJl0IGNvbXBp
bGUuCisKK1F1aXogdGltZSEgIFdoYXQgZG8geW91IHRoaW5rIHdpbGwgaGFwcGVuIGlmIGEgYFJl
dHVybihCeU1vdmUoLi4uKSlgIGFjdGlvbiBpcyBwZXJmb3JtZWQgbW9yZSB0aGFuIG9uY2UgKGUu
Zy4geW91IHdyaXRlIGDigKYuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKEJ5TW92ZSguLi4pKSk7YCk/
ICBDb21lIHRoaW5rIG9mIGl0LCBhZnRlciB0aGUgZmlyc3QgdGltZSB0aGUgYWN0aW9uIHJ1bnMs
IHRoZSBzb3VyY2UgdmFsdWUgd2lsbCBiZSBjb25zdW1lZCAoc2luY2UgaXTigJlzIGEgbW92ZS1v
bmx5IHZhbHVlKSwgc28gdGhlIG5leHQgdGltZSBhcm91bmQsIHRoZXJl4oCZcyBubyB2YWx1ZSB0
byBtb3ZlIGZyb20gLS0geW914oCZbGwgZ2V0IGEgcnVuLXRpbWUgZXJyb3IgdGhhdCBgUmV0dXJu
KEJ5TW92ZSguLi4pKWAgY2FuIG9ubHkgYmUgcnVuIG9uY2UuCisKK0lmIHlvdSBuZWVkIHlvdXIg
bW9jayBtZXRob2QgdG8gZG8gbW9yZSB0aGFuIGp1c3QgbW92aW5nIGEgcHJlLWRlZmluZWQgdmFs
dWUsIHJlbWVtYmVyIHRoYXQgeW91IGNhbiBhbHdheXMgdXNlIGBJbnZva2UoKWAgdG8gY2FsbCBh
IGxhbWJkYSBvciBhIGNhbGxhYmxlIG9iamVjdCwgd2hpY2ggY2FuIGRvIHByZXR0eSBtdWNoIGFu
eXRoaW5nIHlvdSB3YW50OgorCitgYGAKKyAgRVhQRUNUX0NBTEwobW9ja19idXp6ZXJfLCBNYWtl
QnV6eigieCIpKQorICAgICAgLldpbGxSZXBlYXRlZGx5KEludm9rZShbXShjb25zdCBzdGQ6OnN0
cmluZyYgdGV4dCkgeworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCdXp6PihBY2Nl
c3NMZXZlbDo6a0ludGVybmFsKTsKKyAgICAgIH0pKTsKKworICBFWFBFQ1RfTkUobnVsbHB0ciwg
bW9ja19idXp6ZXJfLk1ha2VCdXp6KCJ4IikpOworICBFWFBFQ1RfTkUobnVsbHB0ciwgbW9ja19i
dXp6ZXJfLk1ha2VCdXp6KCJ4IikpOworYGBgCisKK0V2ZXJ5IHRpbWUgdGhpcyBgRVhQRUNUX0NB
TExgIGZpcmVzLCBhIG5ldyBgdW5pcXVlX3B0cjxCdXp6PmAgd2lsbCBiZSBjcmVhdGVkIGFuZCBy
ZXR1cm5lZC4gIFlvdSBjYW5ub3QgZG8gdGhpcyB3aXRoIGBSZXR1cm4oQnlNb3ZlKC4uLikpYC4K
KworTm93IHRoZXJl4oCZcyBvbmUgdG9waWMgd2UgaGF2ZW7igJl0IGNvdmVyZWQ6IGhvdyBkbyB5
b3Ugc2V0IGV4cGVjdGF0aW9ucyBvbiBgU2hhcmVCdXp6KClgLCB3aGljaCB0YWtlcyBhIG1vdmUt
b25seS10eXBlZCBwYXJhbWV0ZXI/ICBUaGUgYW5zd2VyIGlzIHlvdSBkb27igJl0LiAgSW5zdGVh
ZCwgeW91IHNldCBleHBlY3RhdGlvbnMgb24gdGhlIGBEb1NoYXJlQnV6eigpYCBtb2NrIG1ldGhv
ZCAocmVtZW1iZXIgdGhhdCB3ZSBkZWZpbmVkIGEgYE1PQ0tfTUVUSE9EYCBmb3IgYERvU2hhcmVC
dXp6KClgLCBub3QgYFNoYXJlQnV6eigpYCk6CisKK2BgYAorICBFWFBFQ1RfQ0FMTChtb2NrX2J1
enplcl8sIERvU2hhcmVCdXp6KE5vdE51bGwoKSwgXykpOworCisgIC8vIFdoZW4gb25lIGNhbGxz
IFNoYXJlQnV6eigpIG9uIHRoZSBNb2NrQnV6emVyIGxpa2UgdGhpcywgdGhlIGNhbGwgaXMKKyAg
Ly8gZm9yd2FyZGVkIHRvIERvU2hhcmVCdXp6KCksIHdoaWNoIGlzIG1vY2tlZC4gIFRoZXJlZm9y
ZSB0aGlzIHN0YXRlbWVudAorICAvLyB3aWxsIHRyaWdnZXIgdGhlIGFib3ZlIEVYUEVDVF9DQUxM
LgorICBtb2NrX2J1enplcl8uU2hhcmVCdXp6KE1ha2VVbmlxdWUmbHQ7QnV6eiZndDsoQWNjZXNz
TGV2ZWw6OmtJbnRlcm5hbCksCisgICAgICAgICAgICAgICAgICAgICAgICAgOjpiYXNlOjpOb3co
KSk7CitgYGAKKworU29tZSBvZiB5b3UgbWF5IGhhdmUgc3BvdHRlZCBvbmUgcHJvYmxlbSB3aXRo
IHRoaXMgYXBwcm9hY2g6IHRoZSBgRG9TaGFyZUJ1enooKWAgbW9jayBtZXRob2QgZGlmZmVycyBm
cm9tIHRoZSByZWFsIGBTaGFyZUJ1enooKWAgbWV0aG9kIGluIHRoYXQgaXQgY2Fubm90IHRha2Ug
b3duZXJzaGlwIG9mIHRoZSBidXp6IHBhcmFtZXRlciAtIGBTaGFyZUJ1enooKWAgd2lsbCBhbHdh
eXMgZGVsZXRlIGJ1enogYWZ0ZXIgYERvU2hhcmVCdXp6KClgIHJldHVybnMuICBXaGF0IGlmIHlv
dSBuZWVkIHRvIHNhdmUgdGhlIGJ1enogb2JqZWN0IHNvbWV3aGVyZSBmb3IgbGF0ZXIgdXNlIHdo
ZW4gYFNoYXJlQnV6eigpYCBpcyBjYWxsZWQ/ICBJbmRlZWQsIHlvdSdkIGJlIHN0dWNrLgorCitB
bm90aGVyIHByb2JsZW0gd2l0aCB0aGUgYERvU2hhcmVCdXp6KClgIHdlIGhhZCBpcyB0aGF0IGl0
IGNhbiBzdXJwcmlzZSBwZW9wbGUgcmVhZGluZyBvciBtYWludGFpbmluZyB0aGUgdGVzdCwgYXMg
b25lIHdvdWxkIGV4cGVjdCB0aGF0IGBEb1NoYXJlQnV6eigpYCBoYXMgKGxvZ2ljYWxseSkgdGhl
IHNhbWUgY29udHJhY3QgYXMgYFNoYXJlQnV6eigpYC4KKworRm9ydHVuYXRlbHksIHRoZXNlIHBy
b2JsZW1zIGNhbiBiZSBmaXhlZCB3aXRoIGEgYml0IG1vcmUgY29kZS4gIExldCdzIHRyeSB0byBn
ZXQgaXQgcmlnaHQgdGhpcyB0aW1lOgorCitgYGAKK2NsYXNzIE1vY2tCdXp6ZXIgOiBwdWJsaWMg
QnV6emVyIHsKKyBwdWJsaWM6CisgIE1vY2tCdXp6ZXIoKSB7CisgICAgLy8gU2luY2UgRG9TaGFy
ZUJ1enooYnV6eiwgdGltZSkgaXMgc3VwcG9zZWQgdG8gdGFrZSBvd25lcnNoaXAgb2YKKyAgICAv
LyBidXp6LCBkZWZpbmUgYSBkZWZhdWx0IGJlaGF2aW9yIGZvciBEb1NoYXJlQnV6eihidXp6LCB0
aW1lKSB0bworICAgIC8vIGRlbGV0ZSBidXp6LgorICAgIE9OX0NBTEwoKnRoaXMsIERvU2hhcmVC
dXp6KF8sIF8pKQorICAgICAgICAuV2lsbEJ5RGVmYXVsdChJbnZva2UoW10oQnV6eiogYnV6eiwg
VGltZSB0aW1lc3RhbXApIHsKKyAgICAgICAgICBkZWxldGUgYnV6ejsKKyAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgfSkpOworICB9CisKKyAgTU9DS19NRVRIT0QxKE1ha2VCdXp6LCBz
dGQ6OnVuaXF1ZV9wdHI8QnV6ej4oY29uc3Qgc3RkOjpzdHJpbmcmIHRleHQpKTsKKworICAvLyBU
YWtlcyBvd25lcnNoaXAgb2YgYnV6ei4KKyAgTU9DS19NRVRIT0QyKERvU2hhcmVCdXp6LCBib29s
KEJ1enoqIGJ1enosIFRpbWUgdGltZXN0YW1wKSk7CisgIGJvb2wgU2hhcmVCdXp6KHN0ZDo6dW5p
cXVlX3B0cjxCdXp6PiBidXp6LCBUaW1lIHRpbWVzdGFtcCkgeworICAgIHJldHVybiBEb1NoYXJl
QnV6eihidXp6LnJlbGVhc2UoKSwgdGltZXN0YW1wKTsKKyAgfQorfTsKK2BgYAorCitOb3csIHRo
ZSBtb2NrIGBEb1NoYXJlQnV6eigpYCBtZXRob2QgaXMgZnJlZSB0byBzYXZlIHRoZSBidXp6IGFy
Z3VtZW50IGZvciBsYXRlciB1c2UgaWYgdGhpcyBpcyB3aGF0IHlvdSB3YW50OgorCitgYGAKKyAg
c3RkOjp1bmlxdWVfcHRyPEJ1eno+IGludGVyY2VwdGVkX2J1eno7CisgIEVYUEVDVF9DQUxMKG1v
Y2tfYnV6emVyXywgRG9TaGFyZUJ1enooTm90TnVsbCgpLCBfKSkKKyAgICAgIC5XaWxsT25jZShJ
bnZva2UoWyZhbXA7aW50ZXJjZXB0ZWRfYnV6el0oQnV6eiogYnV6eiwgVGltZSB0aW1lc3RhbXAp
IHsKKyAgICAgICAgLy8gU2F2ZSBidXp6IGluIGludGVyY2VwdGVkX2J1enogZm9yIGFuYWx5c2lz
IGxhdGVyLgorICAgICAgICBpbnRlcmNlcHRlZF9idXp6LnJlc2V0KGJ1enopOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICB9KSk7CisKKyAgbW9ja19idXp6ZXJfLlNoYXJlQnV6eihzdGQ6
Om1ha2VfdW5pcXVlPEJ1eno+KEFjY2Vzc0xldmVsOjprSW50ZXJuYWwpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIE5vdygpKTsKKyAgRVhQRUNUX05FKG51bGxwdHIsIGludGVyY2VwdGVkX2J1
enopOworYGBgCisKK1VzaW5nIHRoZSB0cmlja3MgY292ZXJlZCBpbiB0aGlzIHJlY2lwZSwgeW91
IGFyZSBub3cgYWJsZSB0byBtb2NrIG1ldGhvZHMgdGhhdCB0YWtlIGFuZC9vciByZXR1cm4gbW92
ZS1vbmx5IHR5cGVzLiAgUHV0IHlvdXIgbmV3bHktYWNxdWlyZWQgcG93ZXIgdG8gZ29vZCB1c2Ug
LSB3aGVuIHlvdSBkZXNpZ24gYSBuZXcgQVBJLCB5b3UgY2FuIG5vdyBmZWVsIGNvbWZvcnRhYmxl
IHVzaW5nIGB1bmlxdWVfcHRyc2AgYXMgYXBwcm9wcmlhdGUsIHdpdGhvdXQgZmVhcmluZyB0aGF0
IGRvaW5nIHNvIHdpbGwgY29tcHJvbWlzZSB5b3VyIHRlc3RzLgorCisjIyBNYWtpbmcgdGhlIENv
bXBpbGF0aW9uIEZhc3RlciAjIworCitCZWxpZXZlIGl0IG9yIG5vdCwgdGhlIF92YXN0IG1ham9y
aXR5XyBvZiB0aGUgdGltZSBzcGVudCBvbiBjb21waWxpbmcKK2EgbW9jayBjbGFzcyBpcyBpbiBn
ZW5lcmF0aW5nIGl0cyBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvciwgYXMgdGhleQorcGVyZm9y
bSBub24tdHJpdmlhbCB0YXNrcyAoZS5nLiB2ZXJpZmljYXRpb24gb2YgdGhlCitleHBlY3RhdGlv
bnMpLiBXaGF0J3MgbW9yZSwgbW9jayBtZXRob2RzIHdpdGggZGlmZmVyZW50IHNpZ25hdHVyZXMK
K2hhdmUgZGlmZmVyZW50IHR5cGVzIGFuZCB0aHVzIHRoZWlyIGNvbnN0cnVjdG9ycy9kZXN0cnVj
dG9ycyBuZWVkIHRvCitiZSBnZW5lcmF0ZWQgYnkgdGhlIGNvbXBpbGVyIHNlcGFyYXRlbHkuIEFz
IGEgcmVzdWx0LCBpZiB5b3UgbW9jayBtYW55CitkaWZmZXJlbnQgdHlwZXMgb2YgbWV0aG9kcywg
Y29tcGlsaW5nIHlvdXIgbW9jayBjbGFzcyBjYW4gZ2V0IHJlYWxseQorc2xvdy4KKworSWYgeW91
IGFyZSBleHBlcmllbmNpbmcgc2xvdyBjb21waWxhdGlvbiwgeW91IGNhbiBtb3ZlIHRoZSBkZWZp
bml0aW9uCitvZiB5b3VyIG1vY2sgY2xhc3MnIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yIG91
dCBvZiB0aGUgY2xhc3MgYm9keQorYW5kIGludG8gYSBgLmNwcGAgZmlsZS4gVGhpcyB3YXksIGV2
ZW4gaWYgeW91IGAjaW5jbHVkZWAgeW91ciBtb2NrCitjbGFzcyBpbiBOIGZpbGVzLCB0aGUgY29t
cGlsZXIgb25seSBuZWVkcyB0byBnZW5lcmF0ZSBpdHMgY29uc3RydWN0b3IKK2FuZCBkZXN0cnVj
dG9yIG9uY2UsIHJlc3VsdGluZyBpbiBhIG11Y2ggZmFzdGVyIGNvbXBpbGF0aW9uLgorCitMZXQn
cyBpbGx1c3RyYXRlIHRoZSBpZGVhIHVzaW5nIGFuIGV4YW1wbGUuIEhlcmUncyB0aGUgZGVmaW5p
dGlvbiBvZiBhCittb2NrIGNsYXNzIGJlZm9yZSBhcHBseWluZyB0aGlzIHJlY2lwZToKKworYGBg
CisvLyBGaWxlIG1vY2tfZm9vLmguCisuLi4KK2NsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsK
KyBwdWJsaWM6CisgIC8vIFNpbmNlIHdlIGRvbid0IGRlY2xhcmUgdGhlIGNvbnN0cnVjdG9yIG9y
IHRoZSBkZXN0cnVjdG9yLAorICAvLyB0aGUgY29tcGlsZXIgd2lsbCBnZW5lcmF0ZSB0aGVtIGlu
IGV2ZXJ5IHRyYW5zbGF0aW9uIHVuaXQKKyAgLy8gd2hlcmUgdGhpcyBtb2NrIGNsYXNzIGlzIHVz
ZWQuCisKKyAgTU9DS19NRVRIT0QwKERvVGhpcywgaW50KCkpOworICBNT0NLX01FVEhPRDEoRG9U
aGF0LCBib29sKGNvbnN0IGNoYXIqIHN0cikpOworICAuLi4gbW9yZSBtb2NrIG1ldGhvZHMgLi4u
Cit9OworYGBgCisKK0FmdGVyIHRoZSBjaGFuZ2UsIGl0IHdvdWxkIGxvb2sgbGlrZToKKworYGBg
CisvLyBGaWxlIG1vY2tfZm9vLmguCisuLi4KK2NsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsK
KyBwdWJsaWM6CisgIC8vIFRoZSBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvciBhcmUgZGVjbGFy
ZWQsIGJ1dCBub3QgZGVmaW5lZCwgaGVyZS4KKyAgTW9ja0ZvbygpOworICB2aXJ0dWFsIH5Nb2Nr
Rm9vKCk7CisKKyAgTU9DS19NRVRIT0QwKERvVGhpcywgaW50KCkpOworICBNT0NLX01FVEhPRDEo
RG9UaGF0LCBib29sKGNvbnN0IGNoYXIqIHN0cikpOworICAuLi4gbW9yZSBtb2NrIG1ldGhvZHMg
Li4uCit9OworYGBgCithbmQKK2BgYAorLy8gRmlsZSBtb2NrX2Zvby5jcHAuCisjaW5jbHVkZSAi
cGF0aC90by9tb2NrX2Zvby5oIgorCisvLyBUaGUgZGVmaW5pdGlvbnMgbWF5IGFwcGVhciB0cml2
aWFsLCBidXQgdGhlIGZ1bmN0aW9ucyBhY3R1YWxseSBkbyBhCisvLyBsb3Qgb2YgdGhpbmdzIHRo
cm91Z2ggdGhlIGNvbnN0cnVjdG9ycy9kZXN0cnVjdG9ycyBvZiB0aGUgbWVtYmVyCisvLyB2YXJp
YWJsZXMgdXNlZCB0byBpbXBsZW1lbnQgdGhlIG1vY2sgbWV0aG9kcy4KK01vY2tGb286Ok1vY2tG
b28oKSB7fQorTW9ja0Zvbzo6fk1vY2tGb28oKSB7fQorYGBgCisKKyMjIEZvcmNpbmcgYSBWZXJp
ZmljYXRpb24gIyMKKworV2hlbiBpdCdzIGJlaW5nIGRlc3RveWVkLCB5b3VyIGZyaWVuZGx5IG1v
Y2sgb2JqZWN0IHdpbGwgYXV0b21hdGljYWxseQordmVyaWZ5IHRoYXQgYWxsIGV4cGVjdGF0aW9u
cyBvbiBpdCBoYXZlIGJlZW4gc2F0aXNmaWVkLCBhbmQgd2lsbAorZ2VuZXJhdGUgW0dvb2dsZSBU
ZXN0XSguLi8uLi9nb29nbGV0ZXN0LykgZmFpbHVyZXMKK2lmIG5vdC4gVGhpcyBpcyBjb252ZW5p
ZW50IGFzIGl0IGxlYXZlcyB5b3Ugd2l0aCBvbmUgbGVzcyB0aGluZyB0bword29ycnkgYWJvdXQu
IFRoYXQgaXMsIHVubGVzcyB5b3UgYXJlIG5vdCBzdXJlIGlmIHlvdXIgbW9jayBvYmplY3Qgd2ls
bAorYmUgZGVzdG95ZWQuCisKK0hvdyBjb3VsZCBpdCBiZSB0aGF0IHlvdXIgbW9jayBvYmplY3Qg
d29uJ3QgZXZlbnR1YWxseSBiZSBkZXN0cm95ZWQ/CitXZWxsLCBpdCBtaWdodCBiZSBjcmVhdGVk
IG9uIHRoZSBoZWFwIGFuZCBvd25lZCBieSB0aGUgY29kZSB5b3UgYXJlCit0ZXN0aW5nLiBTdXBw
b3NlIHRoZXJlJ3MgYSBidWcgaW4gdGhhdCBjb2RlIGFuZCBpdCBkb2Vzbid0IGRlbGV0ZSB0aGUK
K21vY2sgb2JqZWN0IHByb3Blcmx5IC0geW91IGNvdWxkIGVuZCB1cCB3aXRoIGEgcGFzc2luZyB0
ZXN0IHdoZW4KK3RoZXJlJ3MgYWN0dWFsbHkgYSBidWcuCisKK1VzaW5nIGEgaGVhcCBjaGVja2Vy
IGlzIGEgZ29vZCBpZGVhIGFuZCBjYW4gYWxsZXZpYXRlIHRoZSBjb25jZXJuLCBidXQKK2l0cyBp
bXBsZW1lbnRhdGlvbiBtYXkgbm90IGJlIDEwMCUgcmVsaWFibGUuIFNvLCBzb21ldGltZXMgeW91
IGRvIHdhbnQKK3RvIF9mb3JjZV8gR29vZ2xlIE1vY2sgdG8gdmVyaWZ5IGEgbW9jayBvYmplY3Qg
YmVmb3JlIGl0IGlzCisoaG9wZWZ1bGx5KSBkZXN0cnVjdGVkLiBZb3UgY2FuIGRvIHRoaXMgd2l0
aAorYE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtb2NrX29iamVjdClgOgorCitg
YGAKK1RFU1QoTXlTZXJ2ZXJUZXN0LCBQcm9jZXNzZXNSZXF1ZXN0KSB7CisgIHVzaW5nIDo6dGVz
dGluZzo6TW9jazsKKworICBNb2NrRm9vKiBjb25zdCBmb28gPSBuZXcgTW9ja0ZvbzsKKyAgRVhQ
RUNUX0NBTEwoKmZvbywgLi4uKS4uLjsKKyAgLy8gLi4uIG90aGVyIGV4cGVjdGF0aW9ucyAuLi4K
KworICAvLyBzZXJ2ZXIgbm93IG93bnMgZm9vLgorICBNeVNlcnZlciBzZXJ2ZXIoZm9vKTsKKyAg
c2VydmVyLlByb2Nlc3NSZXF1ZXN0KC4uLik7CisKKyAgLy8gSW4gY2FzZSB0aGF0IHNlcnZlcidz
IGRlc3RydWN0b3Igd2lsbCBmb3JnZXQgdG8gZGVsZXRlIGZvbywKKyAgLy8gdGhpcyB3aWxsIHZl
cmlmeSB0aGUgZXhwZWN0YXRpb25zIGFueXdheS4KKyAgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBl
Y3RhdGlvbnMoZm9vKTsKK30gIC8vIHNlcnZlciBpcyBkZXN0cm95ZWQgd2hlbiBpdCBnb2VzIG91
dCBvZiBzY29wZSBoZXJlLgorYGBgCisKKyoqVGlwOioqIFRoZSBgTW9jazo6VmVyaWZ5QW5kQ2xl
YXJFeHBlY3RhdGlvbnMoKWAgZnVuY3Rpb24gcmV0dXJucyBhCitgYm9vbGAgdG8gaW5kaWNhdGUg
d2hldGhlciB0aGUgdmVyaWZpY2F0aW9uIHdhcyBzdWNjZXNzZnVsIChgdHJ1ZWAgZm9yCit5ZXMp
LCBzbyB5b3UgY2FuIHdyYXAgdGhhdCBmdW5jdGlvbiBjYWxsIGluc2lkZSBhIGBBU1NFUlRfVFJV
RSgpYCBpZgordGhlcmUgaXMgbm8gcG9pbnQgZ29pbmcgZnVydGhlciB3aGVuIHRoZSB2ZXJpZmlj
YXRpb24gaGFzIGZhaWxlZC4KKworIyMgVXNpbmcgQ2hlY2sgUG9pbnRzICMjCisKK1NvbWV0aW1l
cyB5b3UgbWF5IHdhbnQgdG8gInJlc2V0IiBhIG1vY2sgb2JqZWN0IGF0IHZhcmlvdXMgY2hlY2sK
K3BvaW50cyBpbiB5b3VyIHRlc3Q6IGF0IGVhY2ggY2hlY2sgcG9pbnQsIHlvdSB2ZXJpZnkgdGhh
dCBhbGwgZXhpc3RpbmcKK2V4cGVjdGF0aW9ucyBvbiB0aGUgbW9jayBvYmplY3QgaGF2ZSBiZWVu
IHNhdGlzZmllZCwgYW5kIHRoZW4geW91IHNldAorc29tZSBuZXcgZXhwZWN0YXRpb25zIG9uIGl0
IGFzIGlmIGl0J3MgbmV3bHkgY3JlYXRlZC4gVGhpcyBhbGxvd3MgeW91Cit0byB3b3JrIHdpdGgg
YSBtb2NrIG9iamVjdCBpbiAicGhhc2VzIiB3aG9zZSBzaXplcyBhcmUgZWFjaAorbWFuYWdlYWJs
ZS4KKworT25lIHN1Y2ggc2NlbmFyaW8gaXMgdGhhdCBpbiB5b3VyIHRlc3QncyBgU2V0VXAoKWAg
ZnVuY3Rpb24sIHlvdSBtYXkKK3dhbnQgdG8gcHV0IHRoZSBvYmplY3QgeW91IGFyZSB0ZXN0aW5n
IGludG8gYSBjZXJ0YWluIHN0YXRlLCB3aXRoIHRoZQoraGVscCBmcm9tIGEgbW9jayBvYmplY3Qu
IE9uY2UgaW4gdGhlIGRlc2lyZWQgc3RhdGUsIHlvdSB3YW50IHRvIGNsZWFyCithbGwgZXhwZWN0
YXRpb25zIG9uIHRoZSBtb2NrLCBzdWNoIHRoYXQgaW4gdGhlIGBURVNUX0ZgIGJvZHkgeW91IGNh
bgorc2V0IGZyZXNoIGV4cGVjdGF0aW9ucyBvbiBpdC4KKworQXMgeW91IG1heSBoYXZlIGZpZ3Vy
ZWQgb3V0LCB0aGUgYE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKClgCitmdW5jdGlv
biB3ZSBzYXcgaW4gdGhlIHByZXZpb3VzIHJlY2lwZSBjYW4gaGVscCB5b3UgaGVyZS4gT3IsIGlm
IHlvdQorYXJlIHVzaW5nIGBPTl9DQUxMKClgIHRvIHNldCBkZWZhdWx0IGFjdGlvbnMgb24gdGhl
IG1vY2sgb2JqZWN0IGFuZAord2FudCB0byBjbGVhciB0aGUgZGVmYXVsdCBhY3Rpb25zIGFzIHdl
bGwsIHVzZQorYE1vY2s6OlZlcmlmeUFuZENsZWFyKCZtb2NrX29iamVjdClgIGluc3RlYWQuIFRo
aXMgZnVuY3Rpb24gZG9lcyB3aGF0CitgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMo
Jm1vY2tfb2JqZWN0KWAgZG9lcyBhbmQgcmV0dXJucyB0aGUKK3NhbWUgYGJvb2xgLCAqKnBsdXMq
KiBpdCBjbGVhcnMgdGhlIGBPTl9DQUxMKClgIHN0YXRlbWVudHMgb24KK2Btb2NrX29iamVjdGAg
dG9vLgorCitBbm90aGVyIHRyaWNrIHlvdSBjYW4gdXNlIHRvIGFjaGlldmUgdGhlIHNhbWUgZWZm
ZWN0IGlzIHRvIHB1dCB0aGUKK2V4cGVjdGF0aW9ucyBpbiBzZXF1ZW5jZXMgYW5kIGluc2VydCBj
YWxscyB0byBhIGR1bW15ICJjaGVjay1wb2ludCIKK2Z1bmN0aW9uIGF0IHNwZWNpZmljIHBsYWNl
cy4gVGhlbiB5b3UgY2FuIHZlcmlmeSB0aGF0IHRoZSBtb2NrCitmdW5jdGlvbiBjYWxscyBkbyBo
YXBwZW4gYXQgdGhlIHJpZ2h0IHRpbWUuIEZvciBleGFtcGxlLCBpZiB5b3UgYXJlCitleGVyY2lz
aW5nIGNvZGU6CisKK2BgYAorRm9vKDEpOworRm9vKDIpOworRm9vKDMpOworYGBgCisKK2FuZCB3
YW50IHRvIHZlcmlmeSB0aGF0IGBGb28oMSlgIGFuZCBgRm9vKDMpYCBib3RoIGludm9rZQorYG1v
Y2suQmFyKCJhIilgLCBidXQgYEZvbygyKWAgZG9lc24ndCBpbnZva2UgYW55dGhpbmcuIFlvdSBj
YW4gd3JpdGU6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpNb2NrRnVuY3Rpb247CisKK1RFU1Qo
Rm9vVGVzdCwgSW52b2tlc0JhckNvcnJlY3RseSkgeworICBNeU1vY2sgbW9jazsKKyAgLy8gQ2xh
c3MgTW9ja0Z1bmN0aW9uPEY+IGhhcyBleGFjdGx5IG9uZSBtb2NrIG1ldGhvZC4gIEl0IGlzIG5h
bWVkCisgIC8vIENhbGwoKSBhbmQgaGFzIHR5cGUgRi4KKyAgTW9ja0Z1bmN0aW9uPHZvaWQoc3Ry
aW5nIGNoZWNrX3BvaW50X25hbWUpPiBjaGVjazsKKyAgeworICAgIEluU2VxdWVuY2UgczsKKwor
ICAgIEVYUEVDVF9DQUxMKG1vY2ssIEJhcigiYSIpKTsKKyAgICBFWFBFQ1RfQ0FMTChjaGVjaywg
Q2FsbCgiMSIpKTsKKyAgICBFWFBFQ1RfQ0FMTChjaGVjaywgQ2FsbCgiMiIpKTsKKyAgICBFWFBF
Q1RfQ0FMTChtb2NrLCBCYXIoImEiKSk7CisgIH0KKyAgRm9vKDEpOworICBjaGVjay5DYWxsKCIx
Iik7CisgIEZvbygyKTsKKyAgY2hlY2suQ2FsbCgiMiIpOworICBGb28oMyk7Cit9CitgYGAKKwor
VGhlIGV4cGVjdGF0aW9uIHNwZWMgc2F5cyB0aGF0IHRoZSBmaXJzdCBgQmFyKCJhIilgIG11c3Qg
aGFwcGVuIGJlZm9yZQorY2hlY2sgcG9pbnQgIjEiLCB0aGUgc2Vjb25kIGBCYXIoImEiKWAgbXVz
dCBoYXBwZW4gYWZ0ZXIgY2hlY2sgcG9pbnQgIjIiLAorYW5kIG5vdGhpbmcgc2hvdWxkIGhhcHBl
biBiZXR3ZWVuIHRoZSB0d28gY2hlY2sgcG9pbnRzLiBUaGUgZXhwbGljaXQKK2NoZWNrIHBvaW50
cyBtYWtlIGl0IGVhc3kgdG8gdGVsbCB3aGljaCBgQmFyKCJhIilgIGlzIGNhbGxlZCBieSB3aGlj
aAorY2FsbCB0byBgRm9vKClgLgorCisjIyBNb2NraW5nIERlc3RydWN0b3JzICMjCisKK1NvbWV0
aW1lcyB5b3Ugd2FudCB0byBtYWtlIHN1cmUgYSBtb2NrIG9iamVjdCBpcyBkZXN0cnVjdGVkIGF0
IHRoZQorcmlnaHQgdGltZSwgZS5nLiBhZnRlciBgYmFyLT5BKClgIGlzIGNhbGxlZCBidXQgYmVm
b3JlIGBiYXItPkIoKWAgaXMKK2NhbGxlZC4gV2UgYWxyZWFkeSBrbm93IHRoYXQgeW91IGNhbiBz
cGVjaWZ5IGNvbnN0cmFpbnRzIG9uIHRoZSBvcmRlcgorb2YgbW9jayBmdW5jdGlvbiBjYWxscywg
c28gYWxsIHdlIG5lZWQgdG8gZG8gaXMgdG8gbW9jayB0aGUgZGVzdHJ1Y3Rvcgorb2YgdGhlIG1v
Y2sgZnVuY3Rpb24uCisKK1RoaXMgc291bmRzIHNpbXBsZSwgZXhjZXB0IGZvciBvbmUgcHJvYmxl
bTogYSBkZXN0cnVjdG9yIGlzIGEgc3BlY2lhbAorZnVuY3Rpb24gd2l0aCBzcGVjaWFsIHN5bnRh
eCBhbmQgc3BlY2lhbCBzZW1hbnRpY3MsIGFuZCB0aGUKK2BNT0NLX01FVEhPRDBgIG1hY3JvIGRv
ZXNuJ3Qgd29yayBmb3IgaXQ6CisKK2BgYAorICBNT0NLX01FVEhPRDAofk1vY2tGb28sIHZvaWQo
KSk7ICAvLyBXb24ndCBjb21waWxlIQorYGBgCisKK1RoZSBnb29kIG5ld3MgaXMgdGhhdCB5b3Ug
Y2FuIHVzZSBhIHNpbXBsZSBwYXR0ZXJuIHRvIGFjaGlldmUgdGhlIHNhbWUKK2VmZmVjdC4gRmly
c3QsIGFkZCBhIG1vY2sgZnVuY3Rpb24gYERpZSgpYCB0byB5b3VyIG1vY2sgY2xhc3MgYW5kIGNh
bGwKK2l0IGluIHRoZSBkZXN0cnVjdG9yLCBsaWtlIHRoaXM6CisKK2BgYAorY2xhc3MgTW9ja0Zv
byA6IHB1YmxpYyBGb28geworICAuLi4KKyAgLy8gQWRkIHRoZSBmb2xsb3dpbmcgdHdvIGxpbmVz
IHRvIHRoZSBtb2NrIGNsYXNzLgorICBNT0NLX01FVEhPRDAoRGllLCB2b2lkKCkpOworICB2aXJ0
dWFsIH5Nb2NrRm9vKCkgeyBEaWUoKTsgfQorfTsKK2BgYAorCisoSWYgdGhlIG5hbWUgYERpZSgp
YCBjbGFzaGVzIHdpdGggYW4gZXhpc3Rpbmcgc3ltYm9sLCBjaG9vc2UgYW5vdGhlcgorbmFtZS4p
IE5vdywgd2UgaGF2ZSB0cmFuc2xhdGVkIHRoZSBwcm9ibGVtIG9mIHRlc3Rpbmcgd2hlbiBhIGBN
b2NrRm9vYAorb2JqZWN0IGRpZXMgdG8gdGVzdGluZyB3aGVuIGl0cyBgRGllKClgIG1ldGhvZCBp
cyBjYWxsZWQ6CisKK2BgYAorICBNb2NrRm9vKiBmb28gPSBuZXcgTW9ja0ZvbzsKKyAgTW9ja0Jh
ciogYmFyID0gbmV3IE1vY2tCYXI7CisgIC4uLgorICB7CisgICAgSW5TZXF1ZW5jZSBzOworCisg
ICAgLy8gRXhwZWN0cyAqZm9vIHRvIGRpZSBhZnRlciBiYXItPkEoKSBhbmQgYmVmb3JlIGJhci0+
QigpLgorICAgIEVYUEVDVF9DQUxMKCpiYXIsIEEoKSk7CisgICAgRVhQRUNUX0NBTEwoKmZvbywg
RGllKCkpOworICAgIEVYUEVDVF9DQUxMKCpiYXIsIEIoKSk7CisgIH0KK2BgYAorCitBbmQgdGhh
dCdzIHRoYXQuCisKKyMjIFVzaW5nIEdvb2dsZSBNb2NrIGFuZCBUaHJlYWRzICMjCisKKyoqSU1Q
T1JUQU5UIE5PVEU6KiogV2hhdCB3ZSBkZXNjcmliZSBpbiB0aGlzIHJlY2lwZSBpcyAqKk9OTFkq
KiB0cnVlIG9uCitwbGF0Zm9ybXMgd2hlcmUgR29vZ2xlIE1vY2sgaXMgdGhyZWFkLXNhZmUuIEN1
cnJlbnRseSB0aGVzZSBhcmUgb25seQorcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCB0aGUgcHRocmVh
ZHMgbGlicmFyeSAodGhpcyBpbmNsdWRlcyBMaW51eCBhbmQgTWFjKS4KK1RvIG1ha2UgaXQgdGhy
ZWFkLXNhZmUgb24gb3RoZXIgcGxhdGZvcm1zIHdlIG9ubHkgbmVlZCB0byBpbXBsZW1lbnQKK3Nv
bWUgc3luY2hyb25pemF0aW9uIG9wZXJhdGlvbnMgaW4gYCJndGVzdC9pbnRlcm5hbC9ndGVzdC1w
b3J0LmgiYC4KKworSW4gYSAqKnVuaXQqKiB0ZXN0LCBpdCdzIGJlc3QgaWYgeW91IGNvdWxkIGlz
b2xhdGUgYW5kIHRlc3QgYSBwaWVjZSBvZgorY29kZSBpbiBhIHNpbmdsZS10aHJlYWRlZCBjb250
ZXh0LiBUaGF0IGF2b2lkcyByYWNlIGNvbmRpdGlvbnMgYW5kCitkZWFkIGxvY2tzLCBhbmQgbWFr
ZXMgZGVidWdnaW5nIHlvdXIgdGVzdCBtdWNoIGVhc2llci4KKworWWV0IG1hbnkgcHJvZ3JhbXMg
YXJlIG11bHRpLXRocmVhZGVkLCBhbmQgc29tZXRpbWVzIHRvIHRlc3Qgc29tZXRoaW5nCit3ZSBu
ZWVkIHRvIHBvdW5kIG9uIGl0IGZyb20gbW9yZSB0aGFuIG9uZSB0aHJlYWQuIEdvb2dsZSBNb2Nr
IHdvcmtzCitmb3IgdGhpcyBwdXJwb3NlIHRvby4KKworUmVtZW1iZXIgdGhlIHN0ZXBzIGZvciB1
c2luZyBhIG1vY2s6CisKKyAgMS4gQ3JlYXRlIGEgbW9jayBvYmplY3QgYGZvb2AuCisgIDEuIFNl
dCBpdHMgZGVmYXVsdCBhY3Rpb25zIGFuZCBleHBlY3RhdGlvbnMgdXNpbmcgYE9OX0NBTEwoKWAg
YW5kIGBFWFBFQ1RfQ0FMTCgpYC4KKyAgMS4gVGhlIGNvZGUgdW5kZXIgdGVzdCBjYWxscyBtZXRo
b2RzIG9mIGBmb29gLgorICAxLiBPcHRpb25hbGx5LCB2ZXJpZnkgYW5kIHJlc2V0IHRoZSBtb2Nr
LgorICAxLiBEZXN0cm95IHRoZSBtb2NrIHlvdXJzZWxmLCBvciBsZXQgdGhlIGNvZGUgdW5kZXIg
dGVzdCBkZXN0cm95IGl0LiBUaGUgZGVzdHJ1Y3RvciB3aWxsIGF1dG9tYXRpY2FsbHkgdmVyaWZ5
IGl0LgorCitJZiB5b3UgZm9sbG93IHRoZSBmb2xsb3dpbmcgc2ltcGxlIHJ1bGVzLCB5b3VyIG1v
Y2tzIGFuZCB0aHJlYWRzIGNhbgorbGl2ZSBoYXBwaWx5IHRvZ2V0aGVyOgorCisgICogRXhlY3V0
ZSB5b3VyIF90ZXN0IGNvZGVfIChhcyBvcHBvc2VkIHRvIHRoZSBjb2RlIGJlaW5nIHRlc3RlZCkg
aW4gX29uZV8gdGhyZWFkLiBUaGlzIG1ha2VzIHlvdXIgdGVzdCBlYXN5IHRvIGZvbGxvdy4KKyAg
KiBPYnZpb3VzbHksIHlvdSBjYW4gZG8gc3RlcCAjMSB3aXRob3V0IGxvY2tpbmcuCisgICogV2hl
biBkb2luZyBzdGVwICMyIGFuZCAjNSwgbWFrZSBzdXJlIG5vIG90aGVyIHRocmVhZCBpcyBhY2Nl
c3NpbmcgYGZvb2AuIE9idmlvdXMgdG9vLCBodWg/CisgICogIzMgYW5kICM0IGNhbiBiZSBkb25l
IGVpdGhlciBpbiBvbmUgdGhyZWFkIG9yIGluIG11bHRpcGxlIHRocmVhZHMgLSBhbnl3YXkgeW91
IHdhbnQuIEdvb2dsZSBNb2NrIHRha2VzIGNhcmUgb2YgdGhlIGxvY2tpbmcsIHNvIHlvdSBkb24n
dCBoYXZlIHRvIGRvIGFueSAtIHVubGVzcyByZXF1aXJlZCBieSB5b3VyIHRlc3QgbG9naWMuCisK
K0lmIHlvdSB2aW9sYXRlIHRoZSBydWxlcyAoZm9yIGV4YW1wbGUsIGlmIHlvdSBzZXQgZXhwZWN0
YXRpb25zIG9uIGEKK21vY2sgd2hpbGUgYW5vdGhlciB0aHJlYWQgaXMgY2FsbGluZyBpdHMgbWV0
aG9kcyksIHlvdSBnZXQgdW5kZWZpbmVkCitiZWhhdmlvci4gVGhhdCdzIG5vdCBmdW4sIHNvIGRv
bid0IGRvIGl0LgorCitHb29nbGUgTW9jayBndWFyYW50ZWVzIHRoYXQgdGhlIGFjdGlvbiBmb3Ig
YSBtb2NrIGZ1bmN0aW9uIGlzIGRvbmUgaW4KK3RoZSBzYW1lIHRocmVhZCB0aGF0IGNhbGxlZCB0
aGUgbW9jayBmdW5jdGlvbi4gRm9yIGV4YW1wbGUsIGluCisKK2BgYAorICBFWFBFQ1RfQ0FMTCht
b2NrLCBGb28oMSkpCisgICAgICAuV2lsbE9uY2UoYWN0aW9uMSk7CisgIEVYUEVDVF9DQUxMKG1v
Y2ssIEZvbygyKSkKKyAgICAgIC5XaWxsT25jZShhY3Rpb24yKTsKK2BgYAorCitpZiBgRm9vKDEp
YCBpcyBjYWxsZWQgaW4gdGhyZWFkIDEgYW5kIGBGb28oMilgIGlzIGNhbGxlZCBpbiB0aHJlYWQg
MiwKK0dvb2dsZSBNb2NrIHdpbGwgZXhlY3V0ZSBgYWN0aW9uMWAgaW4gdGhyZWFkIDEgYW5kIGBh
Y3Rpb24yYCBpbiB0aHJlYWQKKzIuCisKK0dvb2dsZSBNb2NrIGRvZXMgX25vdF8gaW1wb3NlIGEg
c2VxdWVuY2Ugb24gYWN0aW9ucyBwZXJmb3JtZWQgaW4KK2RpZmZlcmVudCB0aHJlYWRzIChkb2lu
ZyBzbyBtYXkgY3JlYXRlIGRlYWRsb2NrcyBhcyB0aGUgYWN0aW9ucyBtYXkKK25lZWQgdG8gY29v
cGVyYXRlKS4gVGhpcyBtZWFucyB0aGF0IHRoZSBleGVjdXRpb24gb2YgYGFjdGlvbjFgIGFuZAor
YGFjdGlvbjJgIGluIHRoZSBhYm92ZSBleGFtcGxlIF9tYXlfIGludGVybGVhdmUuIElmIHRoaXMg
aXMgYSBwcm9ibGVtLAoreW91IHNob3VsZCBhZGQgcHJvcGVyIHN5bmNocm9uaXphdGlvbiBsb2dp
YyB0byBgYWN0aW9uMWAgYW5kIGBhY3Rpb24yYAordG8gbWFrZSB0aGUgdGVzdCB0aHJlYWQtc2Fm
ZS4KKworCitBbHNvLCByZW1lbWJlciB0aGF0IGBEZWZhdWx0VmFsdWU8VD5gIGlzIGEgZ2xvYmFs
IHJlc291cmNlIHRoYXQKK3BvdGVudGlhbGx5IGFmZmVjdHMgX2FsbF8gbGl2aW5nIG1vY2sgb2Jq
ZWN0cyBpbiB5b3VyCitwcm9ncmFtLiBOYXR1cmFsbHksIHlvdSB3b24ndCB3YW50IHRvIG1lc3Mg
d2l0aCBpdCBmcm9tIG11bHRpcGxlCit0aHJlYWRzIG9yIHdoZW4gdGhlcmUgc3RpbGwgYXJlIG1v
Y2tzIGluIGFjdGlvbi4KKworIyMgQ29udHJvbGxpbmcgSG93IE11Y2ggSW5mb3JtYXRpb24gR29v
Z2xlIE1vY2sgUHJpbnRzICMjCisKK1doZW4gR29vZ2xlIE1vY2sgc2VlcyBzb21ldGhpbmcgdGhh
dCBoYXMgdGhlIHBvdGVudGlhbCBvZiBiZWluZyBhbgorZXJyb3IgKGUuZy4gYSBtb2NrIGZ1bmN0
aW9uIHdpdGggbm8gZXhwZWN0YXRpb24gaXMgY2FsbGVkLCBhLmsuYS4gYW4KK3VuaW50ZXJlc3Rp
bmcgY2FsbCwgd2hpY2ggaXMgYWxsb3dlZCBidXQgcGVyaGFwcyB5b3UgZm9yZ290IHRvCitleHBs
aWNpdGx5IGJhbiB0aGUgY2FsbCksIGl0IHByaW50cyBzb21lIHdhcm5pbmcgbWVzc2FnZXMsIGlu
Y2x1ZGluZwordGhlIGFyZ3VtZW50cyBvZiB0aGUgZnVuY3Rpb24gYW5kIHRoZSByZXR1cm4gdmFs
dWUuIEhvcGVmdWxseSB0aGlzCit3aWxsIHJlbWluZCB5b3UgdG8gdGFrZSBhIGxvb2sgYW5kIHNl
ZSBpZiB0aGVyZSBpcyBpbmRlZWQgYSBwcm9ibGVtLgorCitTb21ldGltZXMgeW91IGFyZSBjb25m
aWRlbnQgdGhhdCB5b3VyIHRlc3RzIGFyZSBjb3JyZWN0IGFuZCBtYXkgbm90CithcHByZWNpYXRl
IHN1Y2ggZnJpZW5kbHkgbWVzc2FnZXMuIFNvbWUgb3RoZXIgdGltZXMsIHlvdSBhcmUgZGVidWdn
aW5nCit5b3VyIHRlc3RzIG9yIGxlYXJuaW5nIGFib3V0IHRoZSBiZWhhdmlvciBvZiB0aGUgY29k
ZSB5b3UgYXJlIHRlc3RpbmcsCithbmQgd2lzaCB5b3UgY291bGQgb2JzZXJ2ZSBldmVyeSBtb2Nr
IGNhbGwgdGhhdCBoYXBwZW5zIChpbmNsdWRpbmcKK2FyZ3VtZW50IHZhbHVlcyBhbmQgdGhlIHJl
dHVybiB2YWx1ZSkuIENsZWFybHksIG9uZSBzaXplIGRvZXNuJ3QgZml0CithbGwuCisKK1lvdSBj
YW4gY29udHJvbCBob3cgbXVjaCBHb29nbGUgTW9jayB0ZWxscyB5b3UgdXNpbmcgdGhlCitgLS1n
bW9ja192ZXJib3NlPUxFVkVMYCBjb21tYW5kLWxpbmUgZmxhZywgd2hlcmUgYExFVkVMYCBpcyBh
IHN0cmluZword2l0aCB0aHJlZSBwb3NzaWJsZSB2YWx1ZXM6CisKKyAgKiBgaW5mb2A6IEdvb2ds
ZSBNb2NrIHdpbGwgcHJpbnQgYWxsIGluZm9ybWF0aW9uYWwgbWVzc2FnZXMsIHdhcm5pbmdzLCBh
bmQgZXJyb3JzIChtb3N0IHZlcmJvc2UpLiBBdCB0aGlzIHNldHRpbmcsIEdvb2dsZSBNb2NrIHdp
bGwgYWxzbyBsb2cgYW55IGNhbGxzIHRvIHRoZSBgT05fQ0FMTC9FWFBFQ1RfQ0FMTGAgbWFjcm9z
LgorICAqIGB3YXJuaW5nYDogR29vZ2xlIE1vY2sgd2lsbCBwcmludCBib3RoIHdhcm5pbmdzIGFu
ZCBlcnJvcnMgKGxlc3MgdmVyYm9zZSkuIFRoaXMgaXMgdGhlIGRlZmF1bHQuCisgICogYGVycm9y
YDogR29vZ2xlIE1vY2sgd2lsbCBwcmludCBlcnJvcnMgb25seSAobGVhc3QgdmVyYm9zZSkuCisK
K0FsdGVybmF0aXZlbHksIHlvdSBjYW4gYWRqdXN0IHRoZSB2YWx1ZSBvZiB0aGF0IGZsYWcgZnJv
bSB3aXRoaW4geW91cgordGVzdHMgbGlrZSBzbzoKKworYGBgCisgIDo6dGVzdGluZzo6RkxBR1Nf
Z21vY2tfdmVyYm9zZSA9ICJlcnJvciI7CitgYGAKKworTm93LCBqdWRpY2lvdXNseSB1c2UgdGhl
IHJpZ2h0IGZsYWcgdG8gZW5hYmxlIEdvb2dsZSBNb2NrIHNlcnZlIHlvdSBiZXR0ZXIhCisKKyMj
IEdhaW5pbmcgU3VwZXIgVmlzaW9uIGludG8gTW9jayBDYWxscyAjIworCitZb3UgaGF2ZSBhIHRl
c3QgdXNpbmcgR29vZ2xlIE1vY2suIEl0IGZhaWxzOiBHb29nbGUgTW9jayB0ZWxscyB5b3UKK3Ro
YXQgc29tZSBleHBlY3RhdGlvbnMgYXJlbid0IHNhdGlzZmllZC4gSG93ZXZlciwgeW91IGFyZW4n
dCBzdXJlIHdoeToKK0lzIHRoZXJlIGEgdHlwbyBzb21ld2hlcmUgaW4gdGhlIG1hdGNoZXJzPyBE
aWQgeW91IG1lc3MgdXAgdGhlIG9yZGVyCitvZiB0aGUgYEVYUEVDVF9DQUxMYHM/IE9yIGlzIHRo
ZSBjb2RlIHVuZGVyIHRlc3QgZG9pbmcgc29tZXRoaW5nCit3cm9uZz8gIEhvdyBjYW4geW91IGZp
bmQgb3V0IHRoZSBjYXVzZT8KKworV29uJ3QgaXQgYmUgbmljZSBpZiB5b3UgaGF2ZSBYLXJheSB2
aXNpb24gYW5kIGNhbiBhY3R1YWxseSBzZWUgdGhlCit0cmFjZSBvZiBhbGwgYEVYUEVDVF9DQUxM
YHMgYW5kIG1vY2sgbWV0aG9kIGNhbGxzIGFzIHRoZXkgYXJlIG1hZGU/CitGb3IgZWFjaCBjYWxs
LCB3b3VsZCB5b3UgbGlrZSB0byBzZWUgaXRzIGFjdHVhbCBhcmd1bWVudCB2YWx1ZXMgYW5kCit3
aGljaCBgRVhQRUNUX0NBTExgIEdvb2dsZSBNb2NrIHRoaW5rcyBpdCBtYXRjaGVzPworCitZb3Ug
Y2FuIHVubG9jayB0aGlzIHBvd2VyIGJ5IHJ1bm5pbmcgeW91ciB0ZXN0IHdpdGggdGhlCitgLS1n
bW9ja192ZXJib3NlPWluZm9gIGZsYWcuIEZvciBleGFtcGxlLCBnaXZlbiB0aGUgdGVzdCBwcm9n
cmFtOgorCitgYGAKK3VzaW5nIHRlc3Rpbmc6Ol87Cit1c2luZyB0ZXN0aW5nOjpIYXNTdWJzdHI7
Cit1c2luZyB0ZXN0aW5nOjpSZXR1cm47CisKK2NsYXNzIE1vY2tGb28geworIHB1YmxpYzoKKyAg
TU9DS19NRVRIT0QyKEYsIHZvaWQoY29uc3Qgc3RyaW5nJiB4LCBjb25zdCBzdHJpbmcmIHkpKTsK
K307CisKK1RFU1QoRm9vLCBCYXIpIHsKKyAgTW9ja0ZvbyBtb2NrOworICBFWFBFQ1RfQ0FMTCht
b2NrLCBGKF8sIF8pKS5XaWxsUmVwZWF0ZWRseShSZXR1cm4oKSk7CisgIEVYUEVDVF9DQUxMKG1v
Y2ssIEYoImEiLCAiYiIpKTsKKyAgRVhQRUNUX0NBTEwobW9jaywgRigiYyIsIEhhc1N1YnN0cigi
ZCIpKSk7CisKKyAgbW9jay5GKCJhIiwgImdvb2QiKTsKKyAgbW9jay5GKCJhIiwgImIiKTsKK30K
K2BgYAorCitpZiB5b3UgcnVuIGl0IHdpdGggYC0tZ21vY2tfdmVyYm9zZT1pbmZvYCwgeW91IHdp
bGwgc2VlIHRoaXMgb3V0cHV0OgorCitgYGAKK1sgUlVOICAgICAgXSBGb28uQmFyCisKK2Zvb190
ZXN0LmNjOjE0OiBFWFBFQ1RfQ0FMTChtb2NrLCBGKF8sIF8pKSBpbnZva2VkCitmb29fdGVzdC5j
YzoxNTogRVhQRUNUX0NBTEwobW9jaywgRigiYSIsICJiIikpIGludm9rZWQKK2Zvb190ZXN0LmNj
OjE2OiBFWFBFQ1RfQ0FMTChtb2NrLCBGKCJjIiwgSGFzU3Vic3RyKCJkIikpKSBpbnZva2VkCitm
b29fdGVzdC5jYzoxNDogTW9jayBmdW5jdGlvbiBjYWxsIG1hdGNoZXMgRVhQRUNUX0NBTEwobW9j
aywgRihfLCBfKSkuLi4KKyAgICBGdW5jdGlvbiBjYWxsOiBGKEAweDdmZmY3YzhkYWQ0MCJhIiwg
QDB4N2ZmZjdjOGRhZDEwImdvb2QiKQorZm9vX3Rlc3QuY2M6MTU6IE1vY2sgZnVuY3Rpb24gY2Fs
bCBtYXRjaGVzIEVYUEVDVF9DQUxMKG1vY2ssIEYoImEiLCAiYiIpKS4uLgorICAgIEZ1bmN0aW9u
IGNhbGw6IEYoQDB4N2ZmZjdjOGRhZGEwImEiLCBAMHg3ZmZmN2M4ZGFkNzAiYiIpCitmb29fdGVz
dC5jYzoxNjogRmFpbHVyZQorQWN0dWFsIGZ1bmN0aW9uIGNhbGwgY291bnQgZG9lc24ndCBtYXRj
aCBFWFBFQ1RfQ0FMTChtb2NrLCBGKCJjIiwgSGFzU3Vic3RyKCJkIikpKS4uLgorICAgICAgICAg
RXhwZWN0ZWQ6IHRvIGJlIGNhbGxlZCBvbmNlCisgICAgICAgICAgIEFjdHVhbDogbmV2ZXIgY2Fs
bGVkIC0gdW5zYXRpc2ZpZWQgYW5kIGFjdGl2ZQorWyAgRkFJTEVEICBdIEZvby5CYXIKK2BgYAor
CitTdXBwb3NlIHRoZSBidWcgaXMgdGhhdCB0aGUgYCJjImAgaW4gdGhlIHRoaXJkIGBFWFBFQ1Rf
Q0FMTGAgaXMgYSB0eXBvCithbmQgc2hvdWxkIGFjdHVhbGx5IGJlIGAiYSJgLiBXaXRoIHRoZSBh
Ym92ZSBtZXNzYWdlLCB5b3Ugc2hvdWxkIHNlZQordGhhdCB0aGUgYWN0dWFsIGBGKCJhIiwgImdv
b2QiKWAgY2FsbCBpcyBtYXRjaGVkIGJ5IHRoZSBmaXJzdAorYEVYUEVDVF9DQUxMYCwgbm90IHRo
ZSB0aGlyZCBhcyB5b3UgdGhvdWdodC4gRnJvbSB0aGF0IGl0IHNob3VsZCBiZQorb2J2aW91cyB0
aGF0IHRoZSB0aGlyZCBgRVhQRUNUX0NBTExgIGlzIHdyaXR0ZW4gd3JvbmcuIENhc2Ugc29sdmVk
LgorCisjIyBSdW5uaW5nIFRlc3RzIGluIEVtYWNzICMjCisKK0lmIHlvdSBidWlsZCBhbmQgcnVu
IHlvdXIgdGVzdHMgaW4gRW1hY3MsIHRoZSBzb3VyY2UgZmlsZSBsb2NhdGlvbnMgb2YKK0dvb2ds
ZSBNb2NrIGFuZCBbR29vZ2xlIFRlc3RdKC4uLy4uL2dvb2dsZXRlc3QvKQorZXJyb3JzIHdpbGwg
YmUgaGlnaGxpZ2h0ZWQuIEp1c3QgcHJlc3MgYDxFbnRlcj5gIG9uIG9uZSBvZiB0aGVtIGFuZAor
eW91J2xsIGJlIHRha2VuIHRvIHRoZSBvZmZlbmRpbmcgbGluZS4gT3IsIHlvdSBjYW4ganVzdCB0
eXBlIGBDLXggYGAKK3RvIGp1bXAgdG8gdGhlIG5leHQgZXJyb3IuCisKK1RvIG1ha2UgaXQgZXZl
biBlYXNpZXIsIHlvdSBjYW4gYWRkIHRoZSBmb2xsb3dpbmcgbGluZXMgdG8geW91cgorYH4vLmVt
YWNzYCBmaWxlOgorCitgYGAKKyhnbG9iYWwtc2V0LWtleSAiXE0tbSIgICAnY29tcGlsZSkgIDsg
bSBpcyBmb3IgbWFrZQorKGdsb2JhbC1zZXQta2V5IFtNLWRvd25dICduZXh0LWVycm9yKQorKGds
b2JhbC1zZXQta2V5IFtNLXVwXSAgICcobGFtYmRhICgpIChpbnRlcmFjdGl2ZSkgKG5leHQtZXJy
b3IgLTEpKSkKK2BgYAorCitUaGVuIHlvdSBjYW4gdHlwZSBgTS1tYCB0byBzdGFydCBhIGJ1aWxk
LCBvciBgTS11cGAvYE0tZG93bmAgdG8gbW92ZQorYmFjayBhbmQgZm9ydGggYmV0d2VlbiBlcnJv
cnMuCisKKyMjIEZ1c2luZyBHb29nbGUgTW9jayBTb3VyY2UgRmlsZXMgIyMKKworR29vZ2xlIE1v
Y2sncyBpbXBsZW1lbnRhdGlvbiBjb25zaXN0cyBvZiBkb3plbnMgb2YgZmlsZXMgKGV4Y2x1ZGlu
ZworaXRzIG93biB0ZXN0cykuICBTb21ldGltZXMgeW91IG1heSB3YW50IHRoZW0gdG8gYmUgcGFj
a2FnZWQgdXAgaW4KK2Zld2VyIGZpbGVzIGluc3RlYWQsIHN1Y2ggdGhhdCB5b3UgY2FuIGVhc2ls
eSBjb3B5IHRoZW0gdG8gYSBuZXcKK21hY2hpbmUgYW5kIHN0YXJ0IGhhY2tpbmcgdGhlcmUuICBG
b3IgdGhpcyB3ZSBwcm92aWRlIGFuIGV4cGVyaW1lbnRhbAorUHl0aG9uIHNjcmlwdCBgZnVzZV9n
bW9ja19maWxlcy5weWAgaW4gdGhlIGBzY3JpcHRzL2AgZGlyZWN0b3J5Cisoc3RhcnRpbmcgd2l0
aCByZWxlYXNlIDEuMi4wKS4gIEFzc3VtaW5nIHlvdSBoYXZlIFB5dGhvbiAyLjQgb3IgYWJvdmUK
K2luc3RhbGxlZCBvbiB5b3VyIG1hY2hpbmUsIGp1c3QgZ28gdG8gdGhhdCBkaXJlY3RvcnkgYW5k
IHJ1bgorYGBgCitweXRob24gZnVzZV9nbW9ja19maWxlcy5weSBPVVRQVVRfRElSCitgYGAKKwor
YW5kIHlvdSBzaG91bGQgc2VlIGFuIGBPVVRQVVRfRElSYCBkaXJlY3RvcnkgYmVpbmcgY3JlYXRl
ZCB3aXRoIGZpbGVzCitgZ3Rlc3QvZ3Rlc3QuaGAsIGBnbW9jay9nbW9jay5oYCwgYW5kIGBnbW9j
ay1ndGVzdC1hbGwuY2NgIGluIGl0LgorVGhlc2UgdGhyZWUgZmlsZXMgY29udGFpbiBldmVyeXRo
aW5nIHlvdSBuZWVkIHRvIHVzZSBHb29nbGUgTW9jayAoYW5kCitHb29nbGUgVGVzdCkuICBKdXN0
IGNvcHkgdGhlbSB0byBhbnl3aGVyZSB5b3Ugd2FudCBhbmQgeW91IGFyZSByZWFkeQordG8gd3Jp
dGUgdGVzdHMgYW5kIHVzZSBtb2Nrcy4gIFlvdSBjYW4gdXNlIHRoZQorW3NjcnB0cy90ZXN0L01h
a2VmaWxlXSguLi9zY3JpcHRzL3Rlc3QvTWFrZWZpbGUpIGZpbGUgYXMgYW4gZXhhbXBsZSBvbiBo
b3cgdG8gY29tcGlsZSB5b3VyIHRlc3RzCithZ2FpbnN0IHRoZW0uCisKKyMgRXh0ZW5kaW5nIEdv
b2dsZSBNb2NrICMKKworIyMgV3JpdGluZyBOZXcgTWF0Y2hlcnMgUXVpY2tseSAjIworCitUaGUg
YE1BVENIRVIqYCBmYW1pbHkgb2YgbWFjcm9zIGNhbiBiZSB1c2VkIHRvIGRlZmluZSBjdXN0b20g
bWF0Y2hlcnMKK2Vhc2lseS4gIFRoZSBzeW50YXg6CisKK2BgYAorTUFUQ0hFUihuYW1lLCBkZXNj
cmlwdGlvbl9zdHJpbmdfZXhwcmVzc2lvbikgeyBzdGF0ZW1lbnRzOyB9CitgYGAKKword2lsbCBk
ZWZpbmUgYSBtYXRjaGVyIHdpdGggdGhlIGdpdmVuIG5hbWUgdGhhdCBleGVjdXRlcyB0aGUKK3N0
YXRlbWVudHMsIHdoaWNoIG11c3QgcmV0dXJuIGEgYGJvb2xgIHRvIGluZGljYXRlIGlmIHRoZSBt
YXRjaAorc3VjY2VlZHMuICBJbnNpZGUgdGhlIHN0YXRlbWVudHMsIHlvdSBjYW4gcmVmZXIgdG8g
dGhlIHZhbHVlIGJlaW5nCittYXRjaGVkIGJ5IGBhcmdgLCBhbmQgcmVmZXIgdG8gaXRzIHR5cGUg
YnkgYGFyZ190eXBlYC4KKworVGhlIGRlc2NyaXB0aW9uIHN0cmluZyBpcyBhIGBzdHJpbmdgLXR5
cGVkIGV4cHJlc3Npb24gdGhhdCBkb2N1bWVudHMKK3doYXQgdGhlIG1hdGNoZXIgZG9lcywgYW5k
IGlzIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGZhaWx1cmUgbWVzc2FnZQord2hlbiB0aGUgbWF0Y2gg
ZmFpbHMuICBJdCBjYW4gKGFuZCBzaG91bGQpIHJlZmVyZW5jZSB0aGUgc3BlY2lhbAorYGJvb2xg
IHZhcmlhYmxlIGBuZWdhdGlvbmAsIGFuZCBzaG91bGQgZXZhbHVhdGUgdG8gdGhlIGRlc2NyaXB0
aW9uIG9mCit0aGUgbWF0Y2hlciB3aGVuIGBuZWdhdGlvbmAgaXMgYGZhbHNlYCwgb3IgdGhhdCBv
ZiB0aGUgbWF0Y2hlcidzCituZWdhdGlvbiB3aGVuIGBuZWdhdGlvbmAgaXMgYHRydWVgLgorCitG
b3IgY29udmVuaWVuY2UsIHdlIGFsbG93IHRoZSBkZXNjcmlwdGlvbiBzdHJpbmcgdG8gYmUgZW1w
dHkgKGAiImApLAoraW4gd2hpY2ggY2FzZSBHb29nbGUgTW9jayB3aWxsIHVzZSB0aGUgc2VxdWVu
Y2Ugb2Ygd29yZHMgaW4gdGhlCittYXRjaGVyIG5hbWUgYXMgdGhlIGRlc2NyaXB0aW9uLgorCitG
b3IgZXhhbXBsZToKK2BgYAorTUFUQ0hFUihJc0RpdmlzaWJsZUJ5NywgIiIpIHsgcmV0dXJuIChh
cmcgJSA3KSA9PSAwOyB9CitgYGAKK2FsbG93cyB5b3UgdG8gd3JpdGUKK2BgYAorICAvLyBFeHBl
Y3RzIG1vY2tfZm9vLkJhcihuKSB0byBiZSBjYWxsZWQgd2hlcmUgbiBpcyBkaXZpc2libGUgYnkg
Ny4KKyAgRVhQRUNUX0NBTEwobW9ja19mb28sIEJhcihJc0RpdmlzaWJsZUJ5NygpKSk7CitgYGAK
K29yLAorYGBgCit1c2luZyA6OnRlc3Rpbmc6Ok5vdDsKKy4uLgorICBFWFBFQ1RfVEhBVChzb21l
X2V4cHJlc3Npb24sIElzRGl2aXNpYmxlQnk3KCkpOworICBFWFBFQ1RfVEhBVChzb21lX290aGVy
X2V4cHJlc3Npb24sIE5vdChJc0RpdmlzaWJsZUJ5NygpKSk7CitgYGAKK0lmIHRoZSBhYm92ZSBh
c3NlcnRpb25zIGZhaWwsIHRoZXkgd2lsbCBwcmludCBzb21ldGhpbmcgbGlrZToKK2BgYAorICBW
YWx1ZSBvZjogc29tZV9leHByZXNzaW9uCisgIEV4cGVjdGVkOiBpcyBkaXZpc2libGUgYnkgNwor
ICAgIEFjdHVhbDogMjcKKy4uLgorICBWYWx1ZSBvZjogc29tZV9vdGhlcl9leHByZXNzaW9uCisg
IEV4cGVjdGVkOiBub3QgKGlzIGRpdmlzaWJsZSBieSA3KQorICAgIEFjdHVhbDogMjEKK2BgYAor
d2hlcmUgdGhlIGRlc2NyaXB0aW9ucyBgImlzIGRpdmlzaWJsZSBieSA3ImAgYW5kIGAibm90IChp
cyBkaXZpc2libGUKK2J5IDcpImAgYXJlIGF1dG9tYXRpY2FsbHkgY2FsY3VsYXRlZCBmcm9tIHRo
ZSBtYXRjaGVyIG5hbWUKK2BJc0RpdmlzaWJsZUJ5N2AuCisKK0FzIHlvdSBtYXkgaGF2ZSBub3Rp
Y2VkLCB0aGUgYXV0by1nZW5lcmF0ZWQgZGVzY3JpcHRpb25zIChlc3BlY2lhbGx5Cit0aG9zZSBm
b3IgdGhlIG5lZ2F0aW9uKSBtYXkgbm90IGJlIHNvIGdyZWF0LiBZb3UgY2FuIGFsd2F5cyBvdmVy
cmlkZQordGhlbSB3aXRoIGEgc3RyaW5nIGV4cHJlc3Npb24gb2YgeW91ciBvd246CitgYGAKK01B
VENIRVIoSXNEaXZpc2libGVCeTcsIHN0ZDo6c3RyaW5nKG5lZ2F0aW9uID8gImlzbid0IiA6ICJp
cyIpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICIgZGl2aXNpYmxlIGJ5IDciKSB7CisgIHJl
dHVybiAoYXJnICUgNykgPT0gMDsKK30KK2BgYAorCitPcHRpb25hbGx5LCB5b3UgY2FuIHN0cmVh
bSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIGEgaGlkZGVuIGFyZ3VtZW50CituYW1lZCBgcmVz
dWx0X2xpc3RlbmVyYCB0byBleHBsYWluIHRoZSBtYXRjaCByZXN1bHQuIEZvciBleGFtcGxlLCBh
CitiZXR0ZXIgZGVmaW5pdGlvbiBvZiBgSXNEaXZpc2libGVCeTdgIGlzOgorYGBgCitNQVRDSEVS
KElzRGl2aXNpYmxlQnk3LCAiIikgeworICBpZiAoKGFyZyAlIDcpID09IDApCisgICAgcmV0dXJu
IHRydWU7CisKKyAgKnJlc3VsdF9saXN0ZW5lciA8PCAidGhlIHJlbWFpbmRlciBpcyAiIDw8IChh
cmcgJSA3KTsKKyAgcmV0dXJuIGZhbHNlOworfQorYGBgCisKK1dpdGggdGhpcyBkZWZpbml0aW9u
LCB0aGUgYWJvdmUgYXNzZXJ0aW9uIHdpbGwgZ2l2ZSBhIGJldHRlciBtZXNzYWdlOgorYGBgCisg
IFZhbHVlIG9mOiBzb21lX2V4cHJlc3Npb24KKyAgRXhwZWN0ZWQ6IGlzIGRpdmlzaWJsZSBieSA3
CisgICAgQWN0dWFsOiAyNyAodGhlIHJlbWFpbmRlciBpcyA2KQorYGBgCisKK1lvdSBzaG91bGQg
bGV0IGBNYXRjaEFuZEV4cGxhaW4oKWAgcHJpbnQgX2FueSBhZGRpdGlvbmFsIGluZm9ybWF0aW9u
XwordGhhdCBjYW4gaGVscCBhIHVzZXIgdW5kZXJzdGFuZCB0aGUgbWF0Y2ggcmVzdWx0LiBOb3Rl
IHRoYXQgaXQgc2hvdWxkCitleHBsYWluIHdoeSB0aGUgbWF0Y2ggc3VjY2VlZHMgaW4gY2FzZSBv
ZiBhIHN1Y2Nlc3MgKHVubGVzcyBpdCdzCitvYnZpb3VzKSAtIHRoaXMgaXMgdXNlZnVsIHdoZW4g
dGhlIG1hdGNoZXIgaXMgdXNlZCBpbnNpZGUKK2BOb3QoKWAuIFRoZXJlIGlzIG5vIG5lZWQgdG8g
cHJpbnQgdGhlIGFyZ3VtZW50IHZhbHVlIGl0c2VsZiwgYXMKK0dvb2dsZSBNb2NrIGFscmVhZHkg
cHJpbnRzIGl0IGZvciB5b3UuCisKKyoqTm90ZXM6KioKKworICAxLiBUaGUgdHlwZSBvZiB0aGUg
dmFsdWUgYmVpbmcgbWF0Y2hlZCAoYGFyZ190eXBlYCkgaXMgZGV0ZXJtaW5lZCBieSB0aGUgY29u
dGV4dCBpbiB3aGljaCB5b3UgdXNlIHRoZSBtYXRjaGVyIGFuZCBpcyBzdXBwbGllZCB0byB5b3Ug
YnkgdGhlIGNvbXBpbGVyLCBzbyB5b3UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCBkZWNsYXJp
bmcgaXQgKG5vciBjYW4geW91KS4gIFRoaXMgYWxsb3dzIHRoZSBtYXRjaGVyIHRvIGJlIHBvbHlt
b3JwaGljLiAgRm9yIGV4YW1wbGUsIGBJc0RpdmlzaWJsZUJ5NygpYCBjYW4gYmUgdXNlZCB0byBt
YXRjaCBhbnkgdHlwZSB3aGVyZSB0aGUgdmFsdWUgb2YgYChhcmcgJSA3KSA9PSAwYCBjYW4gYmUg
aW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gYSBgYm9vbGAuICBJbiB0aGUgYEJhcihJc0RpdmlzaWJs
ZUJ5NygpKWAgZXhhbXBsZSBhYm92ZSwgaWYgbWV0aG9kIGBCYXIoKWAgdGFrZXMgYW4gYGludGAs
IGBhcmdfdHlwZWAgd2lsbCBiZSBgaW50YDsgaWYgaXQgdGFrZXMgYW4gYHVuc2lnbmVkIGxvbmdg
LCBgYXJnX3R5cGVgIHdpbGwgYmUgYHVuc2lnbmVkIGxvbmdgOyBhbmQgc28gb24uCisgIDEuIEdv
b2dsZSBNb2NrIGRvZXNuJ3QgZ3VhcmFudGVlIHdoZW4gb3IgaG93IG1hbnkgdGltZXMgYSBtYXRj
aGVyIHdpbGwgYmUgaW52b2tlZC4gVGhlcmVmb3JlIHRoZSBtYXRjaGVyIGxvZ2ljIG11c3QgYmUg
X3B1cmVseSBmdW5jdGlvbmFsXyAoaS5lLiBpdCBjYW5ub3QgaGF2ZSBhbnkgc2lkZSBlZmZlY3Qs
IGFuZCB0aGUgcmVzdWx0IG11c3Qgbm90IGRlcGVuZCBvbiBhbnl0aGluZyBvdGhlciB0aGFuIHRo
ZSB2YWx1ZSBiZWluZyBtYXRjaGVkIGFuZCB0aGUgbWF0Y2hlciBwYXJhbWV0ZXJzKS4gVGhpcyBy
ZXF1aXJlbWVudCBtdXN0IGJlIHNhdGlzZmllZCBubyBtYXR0ZXIgaG93IHlvdSBkZWZpbmUgdGhl
IG1hdGNoZXIgKGUuZy4gdXNpbmcgb25lIG9mIHRoZSBtZXRob2RzIGRlc2NyaWJlZCBpbiB0aGUg
Zm9sbG93aW5nIHJlY2lwZXMpLiBJbiBwYXJ0aWN1bGFyLCBhIG1hdGNoZXIgY2FuIG5ldmVyIGNh
bGwgYSBtb2NrIGZ1bmN0aW9uLCBhcyB0aGF0IHdpbGwgYWZmZWN0IHRoZSBzdGF0ZSBvZiB0aGUg
bW9jayBvYmplY3QgYW5kIEdvb2dsZSBNb2NrLgorCisjIyBXcml0aW5nIE5ldyBQYXJhbWV0ZXJp
emVkIE1hdGNoZXJzIFF1aWNrbHkgIyMKKworU29tZXRpbWVzIHlvdSdsbCB3YW50IHRvIGRlZmlu
ZSBhIG1hdGNoZXIgdGhhdCBoYXMgcGFyYW1ldGVycy4gIEZvciB0aGF0IHlvdQorY2FuIHVzZSB0
aGUgbWFjcm86CitgYGAKK01BVENIRVJfUChuYW1lLCBwYXJhbV9uYW1lLCBkZXNjcmlwdGlvbl9z
dHJpbmcpIHsgc3RhdGVtZW50czsgfQorYGBgCit3aGVyZSB0aGUgZGVzY3JpcHRpb24gc3RyaW5n
IGNhbiBiZSBlaXRoZXIgYCIiYCBvciBhIHN0cmluZyBleHByZXNzaW9uCit0aGF0IHJlZmVyZW5j
ZXMgYG5lZ2F0aW9uYCBhbmQgYHBhcmFtX25hbWVgLgorCitGb3IgZXhhbXBsZToKK2BgYAorTUFU
Q0hFUl9QKEhhc0Fic29sdXRlVmFsdWUsIHZhbHVlLCAiIikgeyByZXR1cm4gYWJzKGFyZykgPT0g
dmFsdWU7IH0KK2BgYAord2lsbCBhbGxvdyB5b3UgdG8gd3JpdGU6CitgYGAKKyAgRVhQRUNUX1RI
QVQoQmxhaCgiYSIpLCBIYXNBYnNvbHV0ZVZhbHVlKG4pKTsKK2BgYAord2hpY2ggbWF5IGxlYWQg
dG8gdGhpcyBtZXNzYWdlIChhc3N1bWluZyBgbmAgaXMgMTApOgorYGBgCisgIFZhbHVlIG9mOiBC
bGFoKCJhIikKKyAgRXhwZWN0ZWQ6IGhhcyBhYnNvbHV0ZSB2YWx1ZSAxMAorICAgIEFjdHVhbDog
LTkKK2BgYAorCitOb3RlIHRoYXQgYm90aCB0aGUgbWF0Y2hlciBkZXNjcmlwdGlvbiBhbmQgaXRz
IHBhcmFtZXRlciBhcmUKK3ByaW50ZWQsIG1ha2luZyB0aGUgbWVzc2FnZSBodW1hbi1mcmllbmRs
eS4KKworSW4gdGhlIG1hdGNoZXIgZGVmaW5pdGlvbiBib2R5LCB5b3UgY2FuIHdyaXRlIGBmb29f
dHlwZWAgdG8KK3JlZmVyZW5jZSB0aGUgdHlwZSBvZiBhIHBhcmFtZXRlciBuYW1lZCBgZm9vYC4g
IEZvciBleGFtcGxlLCBpbiB0aGUKK2JvZHkgb2YgYE1BVENIRVJfUChIYXNBYnNvbHV0ZVZhbHVl
LCB2YWx1ZSlgIGFib3ZlLCB5b3UgY2FuIHdyaXRlCitgdmFsdWVfdHlwZWAgdG8gcmVmZXIgdG8g
dGhlIHR5cGUgb2YgYHZhbHVlYC4KKworR29vZ2xlIE1vY2sgYWxzbyBwcm92aWRlcyBgTUFUQ0hF
Ul9QMmAsIGBNQVRDSEVSX1AzYCwgLi4uLCB1cCB0bworYE1BVENIRVJfUDEwYCB0byBzdXBwb3J0
IG11bHRpLXBhcmFtZXRlciBtYXRjaGVyczoKK2BgYAorTUFUQ0hFUl9QayhuYW1lLCBwYXJhbV8x
LCAuLi4sIHBhcmFtX2ssIGRlc2NyaXB0aW9uX3N0cmluZykgeyBzdGF0ZW1lbnRzOyB9CitgYGAK
KworUGxlYXNlIG5vdGUgdGhhdCB0aGUgY3VzdG9tIGRlc2NyaXB0aW9uIHN0cmluZyBpcyBmb3Ig
YSBwYXJ0aWN1bGFyCisqKmluc3RhbmNlKiogb2YgdGhlIG1hdGNoZXIsIHdoZXJlIHRoZSBwYXJh
bWV0ZXJzIGhhdmUgYmVlbiBib3VuZCB0bworYWN0dWFsIHZhbHVlcy4gIFRoZXJlZm9yZSB1c3Vh
bGx5IHlvdSdsbCB3YW50IHRoZSBwYXJhbWV0ZXIgdmFsdWVzIHRvCitiZSBwYXJ0IG9mIHRoZSBk
ZXNjcmlwdGlvbi4gIEdvb2dsZSBNb2NrIGxldHMgeW91IGRvIHRoYXQgYnkKK3JlZmVyZW5jaW5n
IHRoZSBtYXRjaGVyIHBhcmFtZXRlcnMgaW4gdGhlIGRlc2NyaXB0aW9uIHN0cmluZworZXhwcmVz
c2lvbi4KKworRm9yIGV4YW1wbGUsCitgYGAKKyAgdXNpbmcgOjp0ZXN0aW5nOjpQcmludFRvU3Ry
aW5nOworICBNQVRDSEVSX1AyKEluQ2xvc2VkUmFuZ2UsIGxvdywgaGksCisgICAgICAgICAgICAg
c3RkOjpzdHJpbmcobmVnYXRpb24gPyAiaXNuJ3QiIDogImlzIikgKyAiIGluIHJhbmdlIFsiICsK
KyAgICAgICAgICAgICBQcmludFRvU3RyaW5nKGxvdykgKyAiLCAiICsgUHJpbnRUb1N0cmluZyho
aSkgKyAiXSIpIHsKKyAgICByZXR1cm4gbG93IDw9IGFyZyAmJiBhcmcgPD0gaGk7CisgIH0KKyAg
Li4uCisgIEVYUEVDVF9USEFUKDMsIEluQ2xvc2VkUmFuZ2UoNCwgNikpOworYGBgCit3b3VsZCBn
ZW5lcmF0ZSBhIGZhaWx1cmUgdGhhdCBjb250YWlucyB0aGUgbWVzc2FnZToKK2BgYAorICBFeHBl
Y3RlZDogaXMgaW4gcmFuZ2UgWzQsIDZdCitgYGAKKworSWYgeW91IHNwZWNpZnkgYCIiYCBhcyB0
aGUgZGVzY3JpcHRpb24sIHRoZSBmYWlsdXJlIG1lc3NhZ2Ugd2lsbAorY29udGFpbiB0aGUgc2Vx
dWVuY2Ugb2Ygd29yZHMgaW4gdGhlIG1hdGNoZXIgbmFtZSBmb2xsb3dlZCBieSB0aGUKK3BhcmFt
ZXRlciB2YWx1ZXMgcHJpbnRlZCBhcyBhIHR1cGxlLiAgRm9yIGV4YW1wbGUsCitgYGAKKyAgTUFU
Q0hFUl9QMihJbkNsb3NlZFJhbmdlLCBsb3csIGhpLCAiIikgeyAuLi4gfQorICAuLi4KKyAgRVhQ
RUNUX1RIQVQoMywgSW5DbG9zZWRSYW5nZSg0LCA2KSk7CitgYGAKK3dvdWxkIGdlbmVyYXRlIGEg
ZmFpbHVyZSB0aGF0IGNvbnRhaW5zIHRoZSB0ZXh0OgorYGBgCisgIEV4cGVjdGVkOiBpbiBjbG9z
ZWQgcmFuZ2UgKDQsIDYpCitgYGAKKworRm9yIHRoZSBwdXJwb3NlIG9mIHR5cGluZywgeW91IGNh
biB2aWV3CitgYGAKK01BVENIRVJfUGsoRm9vLCBwMSwgLi4uLCBwaywgZGVzY3JpcHRpb25fc3Ry
aW5nKSB7IC4uLiB9CitgYGAKK2FzIHNob3J0aGFuZCBmb3IKK2BgYAordGVtcGxhdGUgPHR5cGVu
YW1lIHAxX3R5cGUsIC4uLiwgdHlwZW5hbWUgcGtfdHlwZT4KK0Zvb01hdGNoZXJQazxwMV90eXBl
LCAuLi4sIHBrX3R5cGU+CitGb28ocDFfdHlwZSBwMSwgLi4uLCBwa190eXBlIHBrKSB7IC4uLiB9
CitgYGAKKworV2hlbiB5b3Ugd3JpdGUgYEZvbyh2MSwgLi4uLCB2aylgLCB0aGUgY29tcGlsZXIg
aW5mZXJzIHRoZSB0eXBlcyBvZgordGhlIHBhcmFtZXRlcnMgYHYxYCwgLi4uLCBhbmQgYHZrYCBm
b3IgeW91LiAgSWYgeW91IGFyZSBub3QgaGFwcHkgd2l0aAordGhlIHJlc3VsdCBvZiB0aGUgdHlw
ZSBpbmZlcmVuY2UsIHlvdSBjYW4gc3BlY2lmeSB0aGUgdHlwZXMgYnkKK2V4cGxpY2l0bHkgaW5z
dGFudGlhdGluZyB0aGUgdGVtcGxhdGUsIGFzIGluIGBGb288bG9uZywgYm9vbD4oNSwgZmFsc2Up
YC4KK0FzIHNhaWQgZWFybGllciwgeW91IGRvbid0IGdldCB0byAob3IgbmVlZCB0bykgc3BlY2lm
eQorYGFyZ190eXBlYCBhcyB0aGF0J3MgZGV0ZXJtaW5lZCBieSB0aGUgY29udGV4dCBpbiB3aGlj
aCB0aGUgbWF0Y2hlcgoraXMgdXNlZC4KKworWW91IGNhbiBhc3NpZ24gdGhlIHJlc3VsdCBvZiBl
eHByZXNzaW9uIGBGb28ocDEsIC4uLiwgcGspYCB0byBhCit2YXJpYWJsZSBvZiB0eXBlIGBGb29N
YXRjaGVyUGs8cDFfdHlwZSwgLi4uLCBwa190eXBlPmAuICBUaGlzIGNhbiBiZQordXNlZnVsIHdo
ZW4gY29tcG9zaW5nIG1hdGNoZXJzLiAgTWF0Y2hlcnMgdGhhdCBkb24ndCBoYXZlIGEgcGFyYW1l
dGVyCitvciBoYXZlIG9ubHkgb25lIHBhcmFtZXRlciBoYXZlIHNwZWNpYWwgdHlwZXM6IHlvdSBj
YW4gYXNzaWduIGBGb28oKWAKK3RvIGEgYEZvb01hdGNoZXJgLXR5cGVkIHZhcmlhYmxlLCBhbmQg
YXNzaWduIGBGb28ocClgIHRvIGEKK2BGb29NYXRjaGVyUDxwX3R5cGU+YC10eXBlZCB2YXJpYWJs
ZS4KKworV2hpbGUgeW91IGNhbiBpbnN0YW50aWF0ZSBhIG1hdGNoZXIgdGVtcGxhdGUgd2l0aCBy
ZWZlcmVuY2UgdHlwZXMsCitwYXNzaW5nIHRoZSBwYXJhbWV0ZXJzIGJ5IHBvaW50ZXIgdXN1YWxs
eSBtYWtlcyB5b3VyIGNvZGUgbW9yZQorcmVhZGFibGUuICBJZiwgaG93ZXZlciwgeW91IHN0aWxs
IHdhbnQgdG8gcGFzcyBhIHBhcmFtZXRlciBieQorcmVmZXJlbmNlLCBiZSBhd2FyZSB0aGF0IGlu
IHRoZSBmYWlsdXJlIG1lc3NhZ2UgZ2VuZXJhdGVkIGJ5IHRoZQorbWF0Y2hlciB5b3Ugd2lsbCBz
ZWUgdGhlIHZhbHVlIG9mIHRoZSByZWZlcmVuY2VkIG9iamVjdCBidXQgbm90IGl0cworYWRkcmVz
cy4KKworWW91IGNhbiBvdmVybG9hZCBtYXRjaGVycyB3aXRoIGRpZmZlcmVudCBudW1iZXJzIG9m
IHBhcmFtZXRlcnM6CitgYGAKK01BVENIRVJfUChCbGFoLCBhLCBkZXNjcmlwdGlvbl9zdHJpbmdf
MSkgeyAuLi4gfQorTUFUQ0hFUl9QMihCbGFoLCBhLCBiLCBkZXNjcmlwdGlvbl9zdHJpbmdfMikg
eyAuLi4gfQorYGBgCisKK1doaWxlIGl0J3MgdGVtcHRpbmcgdG8gYWx3YXlzIHVzZSB0aGUgYE1B
VENIRVIqYCBtYWNyb3Mgd2hlbiBkZWZpbmluZworYSBuZXcgbWF0Y2hlciwgeW91IHNob3VsZCBh
bHNvIGNvbnNpZGVyIGltcGxlbWVudGluZworYE1hdGNoZXJJbnRlcmZhY2VgIG9yIHVzaW5nIGBN
YWtlUG9seW1vcnBoaWNNYXRjaGVyKClgIGluc3RlYWQgKHNlZQordGhlIHJlY2lwZXMgdGhhdCBm
b2xsb3cpLCBlc3BlY2lhbGx5IGlmIHlvdSBuZWVkIHRvIHVzZSB0aGUgbWF0Y2hlciBhCitsb3Qu
ICBXaGlsZSB0aGVzZSBhcHByb2FjaGVzIHJlcXVpcmUgbW9yZSB3b3JrLCB0aGV5IGdpdmUgeW91
IG1vcmUKK2NvbnRyb2wgb24gdGhlIHR5cGVzIG9mIHRoZSB2YWx1ZSBiZWluZyBtYXRjaGVkIGFu
ZCB0aGUgbWF0Y2hlcgorcGFyYW1ldGVycywgd2hpY2ggaW4gZ2VuZXJhbCBsZWFkcyB0byBiZXR0
ZXIgY29tcGlsZXIgZXJyb3IgbWVzc2FnZXMKK3RoYXQgcGF5IG9mZiBpbiB0aGUgbG9uZyBydW4u
ICBUaGV5IGFsc28gYWxsb3cgb3ZlcmxvYWRpbmcgbWF0Y2hlcnMKK2Jhc2VkIG9uIHBhcmFtZXRl
ciB0eXBlcyAoYXMgb3Bwb3NlZCB0byBqdXN0IGJhc2VkIG9uIHRoZSBudW1iZXIgb2YKK3BhcmFt
ZXRlcnMpLgorCisjIyBXcml0aW5nIE5ldyBNb25vbW9ycGhpYyBNYXRjaGVycyAjIworCitBIG1h
dGNoZXIgb2YgYXJndW1lbnQgdHlwZSBgVGAgaW1wbGVtZW50cworYDo6dGVzdGluZzo6TWF0Y2hl
ckludGVyZmFjZTxUPmAgYW5kIGRvZXMgdHdvIHRoaW5nczogaXQgdGVzdHMgd2hldGhlciBhCit2
YWx1ZSBvZiB0eXBlIGBUYCBtYXRjaGVzIHRoZSBtYXRjaGVyLCBhbmQgY2FuIGRlc2NyaWJlIHdo
YXQga2luZCBvZgordmFsdWVzIGl0IG1hdGNoZXMuIFRoZSBsYXR0ZXIgYWJpbGl0eSBpcyB1c2Vk
IGZvciBnZW5lcmF0aW5nIHJlYWRhYmxlCitlcnJvciBtZXNzYWdlcyB3aGVuIGV4cGVjdGF0aW9u
cyBhcmUgdmlvbGF0ZWQuCisKK1RoZSBpbnRlcmZhY2UgbG9va3MgbGlrZSB0aGlzOgorCitgYGAK
K2NsYXNzIE1hdGNoUmVzdWx0TGlzdGVuZXIgeworIHB1YmxpYzoKKyAgLi4uCisgIC8vIFN0cmVh
bXMgeCB0byB0aGUgdW5kZXJseWluZyBvc3RyZWFtOyBkb2VzIG5vdGhpbmcgaWYgdGhlIG9zdHJl
YW0KKyAgLy8gaXMgTlVMTC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIE1hdGNoUmVzdWx0
TGlzdGVuZXImIG9wZXJhdG9yPDwoY29uc3QgVCYgeCk7CisKKyAgLy8gUmV0dXJucyB0aGUgdW5k
ZXJseWluZyBvc3RyZWFtLgorICA6OnN0ZDo6b3N0cmVhbSogc3RyZWFtKCk7Cit9OworCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIE1hdGNoZXJJbnRlcmZhY2UgeworIHB1YmxpYzoKKyAg
dmlydHVhbCB+TWF0Y2hlckludGVyZmFjZSgpOworCisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhl
IG1hdGNoZXIgbWF0Y2hlcyB4OyBhbHNvIGV4cGxhaW5zIHRoZSBtYXRjaAorICAvLyByZXN1bHQg
dG8gJ2xpc3RlbmVyJy4KKyAgdmlydHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbihUIHgsIE1hdGNo
UmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBjb25zdCA9IDA7CisKKyAgLy8gRGVzY3JpYmVzIHRo
aXMgbWF0Y2hlciB0byBhbiBvc3RyZWFtLgorICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVUbyg6OnN0
ZDo6b3N0cmVhbSogb3MpIGNvbnN0ID0gMDsKKworICAvLyBEZXNjcmliZXMgdGhlIG5lZ2F0aW9u
IG9mIHRoaXMgbWF0Y2hlciB0byBhbiBvc3RyZWFtLgorICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVO
ZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3Q7Cit9OworYGBgCisKK0lmIHlvdSBu
ZWVkIGEgY3VzdG9tIG1hdGNoZXIgYnV0IGBUcnVseSgpYCBpcyBub3QgYSBnb29kIG9wdGlvbiAo
Zm9yCitleGFtcGxlLCB5b3UgbWF5IG5vdCBiZSBoYXBweSB3aXRoIHRoZSB3YXkgYFRydWx5KHBy
ZWRpY2F0ZSlgCitkZXNjcmliZXMgaXRzZWxmLCBvciB5b3UgbWF5IHdhbnQgeW91ciBtYXRjaGVy
IHRvIGJlIHBvbHltb3JwaGljIGFzCitgRXEodmFsdWUpYCBpcyksIHlvdSBjYW4gZGVmaW5lIGEg
bWF0Y2hlciB0byBkbyB3aGF0ZXZlciB5b3Ugd2FudCBpbgordHdvIHN0ZXBzOiBmaXJzdCBpbXBs
ZW1lbnQgdGhlIG1hdGNoZXIgaW50ZXJmYWNlLCBhbmQgdGhlbiBkZWZpbmUgYQorZmFjdG9yeSBm
dW5jdGlvbiB0byBjcmVhdGUgYSBtYXRjaGVyIGluc3RhbmNlLiBUaGUgc2Vjb25kIHN0ZXAgaXMg
bm90CitzdHJpY3RseSBuZWVkZWQgYnV0IGl0IG1ha2VzIHRoZSBzeW50YXggb2YgdXNpbmcgdGhl
IG1hdGNoZXIgbmljZXIuCisKK0ZvciBleGFtcGxlLCB5b3UgY2FuIGRlZmluZSBhIG1hdGNoZXIg
dG8gdGVzdCB3aGV0aGVyIGFuIGBpbnRgIGlzCitkaXZpc2libGUgYnkgNyBhbmQgdGhlbiB1c2Ug
aXQgbGlrZSB0aGlzOgorYGBgCit1c2luZyA6OnRlc3Rpbmc6Ok1ha2VNYXRjaGVyOwordXNpbmcg
Ojp0ZXN0aW5nOjpNYXRjaGVyOwordXNpbmcgOjp0ZXN0aW5nOjpNYXRjaGVySW50ZXJmYWNlOwor
dXNpbmcgOjp0ZXN0aW5nOjpNYXRjaFJlc3VsdExpc3RlbmVyOworCitjbGFzcyBEaXZpc2libGVC
eTdNYXRjaGVyIDogcHVibGljIE1hdGNoZXJJbnRlcmZhY2U8aW50PiB7CisgcHVibGljOgorICB2
aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWluKGludCBuLCBNYXRjaFJlc3VsdExpc3RlbmVyKiBs
aXN0ZW5lcikgY29uc3QgeworICAgIHJldHVybiAobiAlIDcpID09IDA7CisgIH0KKworICB2aXJ0
dWFsIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKKyAgICAqb3Mg
PDwgImlzIGRpdmlzaWJsZSBieSA3IjsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBEZXNjcmliZU5l
Z2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7CisgICAgKm9zIDw8ICJpcyBub3Qg
ZGl2aXNpYmxlIGJ5IDciOworICB9Cit9OworCitpbmxpbmUgTWF0Y2hlcjxpbnQ+IERpdmlzaWJs
ZUJ5NygpIHsKKyAgcmV0dXJuIE1ha2VNYXRjaGVyKG5ldyBEaXZpc2libGVCeTdNYXRjaGVyKTsK
K30KKy4uLgorCisgIEVYUEVDVF9DQUxMKGZvbywgQmFyKERpdmlzaWJsZUJ5NygpKSk7CitgYGAK
KworWW91IG1heSBpbXByb3ZlIHRoZSBtYXRjaGVyIG1lc3NhZ2UgYnkgc3RyZWFtaW5nIGFkZGl0
aW9uYWwKK2luZm9ybWF0aW9uIHRvIHRoZSBgbGlzdGVuZXJgIGFyZ3VtZW50IGluIGBNYXRjaEFu
ZEV4cGxhaW4oKWA6CisKK2BgYAorY2xhc3MgRGl2aXNpYmxlQnk3TWF0Y2hlciA6IHB1YmxpYyBN
YXRjaGVySW50ZXJmYWNlPGludD4geworIHB1YmxpYzoKKyAgdmlydHVhbCBib29sIE1hdGNoQW5k
RXhwbGFpbihpbnQgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3Vs
dExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgeworICAgIGNvbnN0IGludCByZW1haW5kZXIgPSBu
ICUgNzsKKyAgICBpZiAocmVtYWluZGVyICE9IDApIHsKKyAgICAgICpsaXN0ZW5lciA8PCAidGhl
IHJlbWFpbmRlciBpcyAiIDw8IHJlbWFpbmRlcjsKKyAgICB9CisgICAgcmV0dXJuIHJlbWFpbmRl
ciA9PSAwOworICB9CisgIC4uLgorfTsKK2BgYAorCitUaGVuLCBgRVhQRUNUX1RIQVQoeCwgRGl2
aXNpYmxlQnk3KCkpO2AgbWF5IGdlbmVyYWwgYSBtZXNzYWdlIGxpa2UgdGhpczoKK2BgYAorVmFs
dWUgb2Y6IHgKK0V4cGVjdGVkOiBpcyBkaXZpc2libGUgYnkgNworICBBY3R1YWw6IDIzICh0aGUg
cmVtYWluZGVyIGlzIDIpCitgYGAKKworIyMgV3JpdGluZyBOZXcgUG9seW1vcnBoaWMgTWF0Y2hl
cnMgIyMKKworWW91J3ZlIGxlYXJuZWQgaG93IHRvIHdyaXRlIHlvdXIgb3duIG1hdGNoZXJzIGlu
IHRoZSBwcmV2aW91cworcmVjaXBlLiBKdXN0IG9uZSBwcm9ibGVtOiBhIG1hdGNoZXIgY3JlYXRl
ZCB1c2luZyBgTWFrZU1hdGNoZXIoKWAgb25seQord29ya3MgZm9yIG9uZSBwYXJ0aWN1bGFyIHR5
cGUgb2YgYXJndW1lbnRzLiBJZiB5b3Ugd2FudCBhCitfcG9seW1vcnBoaWNfIG1hdGNoZXIgdGhh
dCB3b3JrcyB3aXRoIGFyZ3VtZW50cyBvZiBzZXZlcmFsIHR5cGVzIChmb3IKK2luc3RhbmNlLCBg
RXEoeClgIGNhbiBiZSB1c2VkIHRvIG1hdGNoIGEgYHZhbHVlYCBhcyBsb25nIGFzIGB2YWx1ZWAg
PT0KK2B4YCBjb21waWxlcyAtLSBgdmFsdWVgIGFuZCBgeGAgZG9uJ3QgaGF2ZSB0byBzaGFyZSB0
aGUgc2FtZSB0eXBlKSwKK3lvdSBjYW4gbGVhcm4gdGhlIHRyaWNrIGZyb20gYCJnbW9jay9nbW9j
ay1tYXRjaGVycy5oImAgYnV0IGl0J3MgYSBiaXQKK2ludm9sdmVkLgorCitGb3J0dW5hdGVseSwg
bW9zdCBvZiB0aGUgdGltZSB5b3UgY2FuIGRlZmluZSBhIHBvbHltb3JwaGljIG1hdGNoZXIKK2Vh
c2lseSB3aXRoIHRoZSBoZWxwIG9mIGBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKClgLiBIZXJlJ3Mg
aG93IHlvdSBjYW4KK2RlZmluZSBgTm90TnVsbCgpYCBhcyBhbiBleGFtcGxlOgorCitgYGAKK3Vz
aW5nIDo6dGVzdGluZzo6TWFrZVBvbHltb3JwaGljTWF0Y2hlcjsKK3VzaW5nIDo6dGVzdGluZzo6
TWF0Y2hSZXN1bHRMaXN0ZW5lcjsKK3VzaW5nIDo6dGVzdGluZzo6Tm90TnVsbDsKK3VzaW5nIDo6
dGVzdGluZzo6UG9seW1vcnBoaWNNYXRjaGVyOworCitjbGFzcyBOb3ROdWxsTWF0Y2hlciB7Cisg
cHVibGljOgorICAvLyBUbyBpbXBsZW1lbnQgYSBwb2x5bW9ycGhpYyBtYXRjaGVyLCBmaXJzdCBk
ZWZpbmUgYSBDT1BZQUJMRSBjbGFzcworICAvLyB0aGF0IGhhcyB0aHJlZSBtZW1iZXJzIE1hdGNo
QW5kRXhwbGFpbigpLCBEZXNjcmliZVRvKCksIGFuZAorICAvLyBEZXNjcmliZU5lZ2F0aW9uVG8o
KSwgbGlrZSB0aGUgZm9sbG93aW5nLgorCisgIC8vIEluIHRoaXMgZXhhbXBsZSwgd2Ugd2FudCB0
byB1c2UgTm90TnVsbCgpIHdpdGggYW55IHBvaW50ZXIsIHNvCisgIC8vIE1hdGNoQW5kRXhwbGFp
bigpIGFjY2VwdHMgYSBwb2ludGVyIG9mIGFueSB0eXBlIGFzIGl0cyBmaXJzdCBhcmd1bWVudC4K
KyAgLy8gSW4gZ2VuZXJhbCwgeW91IGNhbiBkZWZpbmUgTWF0Y2hBbmRFeHBsYWluKCkgYXMgYW4g
b3JkaW5hcnkgbWV0aG9kIG9yCisgIC8vIGEgbWV0aG9kIHRlbXBsYXRlLCBvciBldmVuIG92ZXJs
b2FkIGl0LgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgYm9vbCBNYXRjaEFuZEV4cGxhaW4o
VCogcCwKKyAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHRMaXN0ZW5lciogLyogbGlz
dGVuZXIgKi8pIGNvbnN0IHsKKyAgICByZXR1cm4gcCAhPSBOVUxMOworICB9CisKKyAgLy8gRGVz
Y3JpYmVzIHRoZSBwcm9wZXJ0eSBvZiBhIHZhbHVlIG1hdGNoaW5nIHRoaXMgbWF0Y2hlci4KKyAg
dm9pZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgeyAqb3MgPDwgImlzIG5v
dCBOVUxMIjsgfQorCisgIC8vIERlc2NyaWJlcyB0aGUgcHJvcGVydHkgb2YgYSB2YWx1ZSBOT1Qg
bWF0Y2hpbmcgdGhpcyBtYXRjaGVyLgorICB2b2lkIERlc2NyaWJlTmVnYXRpb25Ubyg6OnN0ZDo6
b3N0cmVhbSogb3MpIGNvbnN0IHsgKm9zIDw8ICJpcyBOVUxMIjsgfQorfTsKKworLy8gVG8gY29u
c3RydWN0IGEgcG9seW1vcnBoaWMgbWF0Y2hlciwgcGFzcyBhbiBpbnN0YW5jZSBvZiB0aGUgY2xh
c3MKKy8vIHRvIE1ha2VQb2x5bW9ycGhpY01hdGNoZXIoKS4gIE5vdGUgdGhlIHJldHVybiB0eXBl
LgoraW5saW5lIFBvbHltb3JwaGljTWF0Y2hlcjxOb3ROdWxsTWF0Y2hlcj4gTm90TnVsbCgpIHsK
KyAgcmV0dXJuIE1ha2VQb2x5bW9ycGhpY01hdGNoZXIoTm90TnVsbE1hdGNoZXIoKSk7Cit9Cisu
Li4KKworICBFWFBFQ1RfQ0FMTChmb28sIEJhcihOb3ROdWxsKCkpKTsgIC8vIFRoZSBhcmd1bWVu
dCBtdXN0IGJlIGEgbm9uLU5VTEwgcG9pbnRlci4KK2BgYAorCisqKk5vdGU6KiogWW91ciBwb2x5
bW9ycGhpYyBtYXRjaGVyIGNsYXNzIGRvZXMgKipub3QqKiBuZWVkIHRvIGluaGVyaXQgZnJvbQor
YE1hdGNoZXJJbnRlcmZhY2VgIG9yIGFueSBvdGhlciBjbGFzcywgYW5kIGl0cyBtZXRob2RzIGRv
ICoqbm90KiogbmVlZAordG8gYmUgdmlydHVhbC4KKworTGlrZSBpbiBhIG1vbm9tb3JwaGljIG1h
dGNoZXIsIHlvdSBtYXkgZXhwbGFpbiB0aGUgbWF0Y2ggcmVzdWx0IGJ5CitzdHJlYW1pbmcgYWRk
aXRpb25hbCBpbmZvcm1hdGlvbiB0byB0aGUgYGxpc3RlbmVyYCBhcmd1bWVudCBpbgorYE1hdGNo
QW5kRXhwbGFpbigpYC4KKworIyMgV3JpdGluZyBOZXcgQ2FyZGluYWxpdGllcyAjIworCitBIGNh
cmRpbmFsaXR5IGlzIHVzZWQgaW4gYFRpbWVzKClgIHRvIHRlbGwgR29vZ2xlIE1vY2sgaG93IG1h
bnkgdGltZXMKK3lvdSBleHBlY3QgYSBjYWxsIHRvIG9jY3VyLiBJdCBkb2Vzbid0IGhhdmUgdG8g
YmUgZXhhY3QuIEZvciBleGFtcGxlLAoreW91IGNhbiBzYXkgYEF0TGVhc3QoNSlgIG9yIGBCZXR3
ZWVuKDIsIDQpYC4KKworSWYgdGhlIGJ1aWx0LWluIHNldCBvZiBjYXJkaW5hbGl0aWVzIGRvZXNu
J3Qgc3VpdCB5b3UsIHlvdSBhcmUgZnJlZSB0bworZGVmaW5lIHlvdXIgb3duIGJ5IGltcGxlbWVu
dGluZyB0aGUgZm9sbG93aW5nIGludGVyZmFjZSAoaW4gbmFtZXNwYWNlCitgdGVzdGluZ2ApOgor
CitgYGAKK2NsYXNzIENhcmRpbmFsaXR5SW50ZXJmYWNlIHsKKyBwdWJsaWM6CisgIHZpcnR1YWwg
fkNhcmRpbmFsaXR5SW50ZXJmYWNlKCk7CisKKyAgLy8gUmV0dXJucyB0cnVlIGlmZiBjYWxsX2Nv
dW50IGNhbGxzIHdpbGwgc2F0aXNmeSB0aGlzIGNhcmRpbmFsaXR5LgorICB2aXJ0dWFsIGJvb2wg
SXNTYXRpc2ZpZWRCeUNhbGxDb3VudChpbnQgY2FsbF9jb3VudCkgY29uc3QgPSAwOworCisgIC8v
IFJldHVybnMgdHJ1ZSBpZmYgY2FsbF9jb3VudCBjYWxscyB3aWxsIHNhdHVyYXRlIHRoaXMgY2Fy
ZGluYWxpdHkuCisgIHZpcnR1YWwgYm9vbCBJc1NhdHVyYXRlZEJ5Q2FsbENvdW50KGludCBjYWxs
X2NvdW50KSBjb25zdCA9IDA7CisKKyAgLy8gRGVzY3JpYmVzIHNlbGYgdG8gYW4gb3N0cmVhbS4K
KyAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCA9IDA7
Cit9OworYGBgCisKK0ZvciBleGFtcGxlLCB0byBzcGVjaWZ5IHRoYXQgYSBjYWxsIG11c3Qgb2Nj
dXIgZXZlbiBudW1iZXIgb2YgdGltZXMsCit5b3UgY2FuIHdyaXRlCisKK2BgYAordXNpbmcgOjp0
ZXN0aW5nOjpDYXJkaW5hbGl0eTsKK3VzaW5nIDo6dGVzdGluZzo6Q2FyZGluYWxpdHlJbnRlcmZh
Y2U7Cit1c2luZyA6OnRlc3Rpbmc6Ok1ha2VDYXJkaW5hbGl0eTsKKworY2xhc3MgRXZlbk51bWJl
ckNhcmRpbmFsaXR5IDogcHVibGljIENhcmRpbmFsaXR5SW50ZXJmYWNlIHsKKyBwdWJsaWM6Cisg
IHZpcnR1YWwgYm9vbCBJc1NhdGlzZmllZEJ5Q2FsbENvdW50KGludCBjYWxsX2NvdW50KSBjb25z
dCB7CisgICAgcmV0dXJuIChjYWxsX2NvdW50ICUgMikgPT0gMDsKKyAgfQorCisgIHZpcnR1YWwg
Ym9vbCBJc1NhdHVyYXRlZEJ5Q2FsbENvdW50KGludCBjYWxsX2NvdW50KSBjb25zdCB7CisgICAg
cmV0dXJuIGZhbHNlOworICB9CisKKyAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9z
dHJlYW0qIG9zKSBjb25zdCB7CisgICAgKm9zIDw8ICJjYWxsZWQgZXZlbiBudW1iZXIgb2YgdGlt
ZXMiOworICB9Cit9OworCitDYXJkaW5hbGl0eSBFdmVuTnVtYmVyKCkgeworICByZXR1cm4gTWFr
ZUNhcmRpbmFsaXR5KG5ldyBFdmVuTnVtYmVyQ2FyZGluYWxpdHkpOworfQorLi4uCisKKyAgRVhQ
RUNUX0NBTEwoZm9vLCBCYXIoMykpCisgICAgICAuVGltZXMoRXZlbk51bWJlcigpKTsKK2BgYAor
CisjIyBXcml0aW5nIE5ldyBBY3Rpb25zIFF1aWNrbHkgIyMKKworSWYgdGhlIGJ1aWx0LWluIGFj
dGlvbnMgZG9uJ3Qgd29yayBmb3IgeW91LCBhbmQgeW91IGZpbmQgaXQKK2luY29udmVuaWVudCB0
byB1c2UgYEludm9rZSgpYCwgeW91IGNhbiB1c2UgYSBtYWNybyBmcm9tIHRoZSBgQUNUSU9OKmAK
K2ZhbWlseSB0byBxdWlja2x5IGRlZmluZSBhIG5ldyBhY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCBp
biB5b3VyIGNvZGUgYXMKK2lmIGl0J3MgYSBidWlsdC1pbiBhY3Rpb24uCisKK0J5IHdyaXRpbmcK
K2BgYAorQUNUSU9OKG5hbWUpIHsgc3RhdGVtZW50czsgfQorYGBgCitpbiBhIG5hbWVzcGFjZSBz
Y29wZSAoaS5lLiBub3QgaW5zaWRlIGEgY2xhc3Mgb3IgZnVuY3Rpb24pLCB5b3Ugd2lsbAorZGVm
aW5lIGFuIGFjdGlvbiB3aXRoIHRoZSBnaXZlbiBuYW1lIHRoYXQgZXhlY3V0ZXMgdGhlIHN0YXRl
bWVudHMuCitUaGUgdmFsdWUgcmV0dXJuZWQgYnkgYHN0YXRlbWVudHNgIHdpbGwgYmUgdXNlZCBh
cyB0aGUgcmV0dXJuIHZhbHVlIG9mCit0aGUgYWN0aW9uLiAgSW5zaWRlIHRoZSBzdGF0ZW1lbnRz
LCB5b3UgY2FuIHJlZmVyIHRvIHRoZSBLLXRoCisoMC1iYXNlZCkgYXJndW1lbnQgb2YgdGhlIG1v
Y2sgZnVuY3Rpb24gYXMgYGFyZ0tgLiAgRm9yIGV4YW1wbGU6CitgYGAKK0FDVElPTihJbmNyZW1l
bnRBcmcxKSB7IHJldHVybiArKygqYXJnMSk7IH0KK2BgYAorYWxsb3dzIHlvdSB0byB3cml0ZQor
YGBgCisuLi4gV2lsbE9uY2UoSW5jcmVtZW50QXJnMSgpKTsKK2BgYAorCitOb3RlIHRoYXQgeW91
IGRvbid0IG5lZWQgdG8gc3BlY2lmeSB0aGUgdHlwZXMgb2YgdGhlIG1vY2sgZnVuY3Rpb24KK2Fy
Z3VtZW50cy4gIFJlc3QgYXNzdXJlZCB0aGF0IHlvdXIgY29kZSBpcyB0eXBlLXNhZmUgdGhvdWdo
OgoreW91J2xsIGdldCBhIGNvbXBpbGVyIGVycm9yIGlmIGAqYXJnMWAgZG9lc24ndCBzdXBwb3J0
IHRoZSBgKytgCitvcGVyYXRvciwgb3IgaWYgdGhlIHR5cGUgb2YgYCsrKCphcmcxKWAgaXNuJ3Qg
Y29tcGF0aWJsZSB3aXRoIHRoZSBtb2NrCitmdW5jdGlvbidzIHJldHVybiB0eXBlLgorCitBbm90
aGVyIGV4YW1wbGU6CitgYGAKK0FDVElPTihGb28pIHsKKyAgKCphcmcyKSg1KTsKKyAgQmxhaCgp
OworICAqYXJnMSA9IDA7CisgIHJldHVybiBhcmcwOworfQorYGBgCitkZWZpbmVzIGFuIGFjdGlv
biBgRm9vKClgIHRoYXQgaW52b2tlcyBhcmd1bWVudCAjMiAoYSBmdW5jdGlvbiBwb2ludGVyKQor
d2l0aCA1LCBjYWxscyBmdW5jdGlvbiBgQmxhaCgpYCwgc2V0cyB0aGUgdmFsdWUgcG9pbnRlZCB0
byBieSBhcmd1bWVudAorIzEgdG8gMCwgYW5kIHJldHVybnMgYXJndW1lbnQgIzAuCisKK0ZvciBt
b3JlIGNvbnZlbmllbmNlIGFuZCBmbGV4aWJpbGl0eSwgeW91IGNhbiBhbHNvIHVzZSB0aGUgZm9s
bG93aW5nCitwcmUtZGVmaW5lZCBzeW1ib2xzIGluIHRoZSBib2R5IG9mIGBBQ1RJT05gOgorCit8
IGBhcmdLX3R5cGVgIHwgVGhlIHR5cGUgb2YgdGhlIEstdGggKDAtYmFzZWQpIGFyZ3VtZW50IG9m
IHRoZSBtb2NrIGZ1bmN0aW9uIHwKK3w6LS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorfCBgYXJnc2AgICAg
ICB8IEFsbCBhcmd1bWVudHMgb2YgdGhlIG1vY2sgZnVuY3Rpb24gYXMgYSB0dXBsZSAgICAgICAg
ICAgICAgICB8Cit8IGBhcmdzX3R5cGVgIHwgVGhlIHR5cGUgb2YgYWxsIGFyZ3VtZW50cyBvZiB0
aGUgbW9jayBmdW5jdGlvbiBhcyBhIHR1cGxlICAgIHwKK3wgYHJldHVybl90eXBlYCB8IFRoZSBy
ZXR1cm4gdHlwZSBvZiB0aGUgbW9jayBmdW5jdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICB8
Cit8IGBmdW5jdGlvbl90eXBlYCB8IFRoZSB0eXBlIG9mIHRoZSBtb2NrIGZ1bmN0aW9uICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8CisKK0ZvciBleGFtcGxlLCB3aGVuIHVzaW5nIGFu
IGBBQ1RJT05gIGFzIGEgc3R1YiBhY3Rpb24gZm9yIG1vY2sgZnVuY3Rpb246CitgYGAKK2ludCBE
b1NvbWV0aGluZyhib29sIGZsYWcsIGludCogcHRyKTsKK2BgYAord2UgaGF2ZToKK3wgKipQcmUt
ZGVmaW5lZCBTeW1ib2wqKiB8ICoqSXMgQm91bmQgVG8qKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tfAorfCBgYXJnMGAgICAgICAgICAgICAgICAgIHwgdGhl
IHZhbHVlIG9mIGBmbGFnYCB8Cit8IGBhcmcwX3R5cGVgICAgICAgICAgICAgfCB0aGUgdHlwZSBg
Ym9vbGAgfAorfCBgYXJnMWAgICAgICAgICAgICAgICAgIHwgdGhlIHZhbHVlIG9mIGBwdHJgIHwK
K3wgYGFyZzFfdHlwZWAgICAgICAgICAgICB8IHRoZSB0eXBlIGBpbnQqYCB8Cit8IGBhcmdzYCAg
ICAgICAgICAgICAgICAgfCB0aGUgdHVwbGUgYChmbGFnLCBwdHIpYCB8Cit8IGBhcmdzX3R5cGVg
ICAgICAgICAgICAgfCB0aGUgdHlwZSBgOjp0ZXN0aW5nOjp0dXBsZTxib29sLCBpbnQqPmAgfAor
fCBgcmV0dXJuX3R5cGVgICAgICAgICAgIHwgdGhlIHR5cGUgYGludGAgIHwKK3wgYGZ1bmN0aW9u
X3R5cGVgICAgICAgICB8IHRoZSB0eXBlIGBpbnQoYm9vbCwgaW50KilgIHwKKworIyMgV3JpdGlu
ZyBOZXcgUGFyYW1ldGVyaXplZCBBY3Rpb25zIFF1aWNrbHkgIyMKKworU29tZXRpbWVzIHlvdSds
bCB3YW50IHRvIHBhcmFtZXRlcml6ZSBhbiBhY3Rpb24geW91IGRlZmluZS4gIEZvciB0aGF0Cit3
ZSBoYXZlIGFub3RoZXIgbWFjcm8KK2BgYAorQUNUSU9OX1AobmFtZSwgcGFyYW0pIHsgc3RhdGVt
ZW50czsgfQorYGBgCisKK0ZvciBleGFtcGxlLAorYGBgCitBQ1RJT05fUChBZGQsIG4pIHsgcmV0
dXJuIGFyZzAgKyBuOyB9CitgYGAKK3dpbGwgYWxsb3cgeW91IHRvIHdyaXRlCitgYGAKKy8vIFJl
dHVybnMgYXJndW1lbnQgIzAgKyA1LgorLi4uIFdpbGxPbmNlKEFkZCg1KSk7CitgYGAKKworRm9y
IGNvbnZlbmllbmNlLCB3ZSB1c2UgdGhlIHRlcm0gX2FyZ3VtZW50c18gZm9yIHRoZSB2YWx1ZXMg
dXNlZCB0bworaW52b2tlIHRoZSBtb2NrIGZ1bmN0aW9uLCBhbmQgdGhlIHRlcm0gX3BhcmFtZXRl
cnNfIGZvciB0aGUgdmFsdWVzCit1c2VkIHRvIGluc3RhbnRpYXRlIGFuIGFjdGlvbi4KKworTm90
ZSB0aGF0IHlvdSBkb24ndCBuZWVkIHRvIHByb3ZpZGUgdGhlIHR5cGUgb2YgdGhlIHBhcmFtZXRl
ciBlaXRoZXIuCitTdXBwb3NlIHRoZSBwYXJhbWV0ZXIgaXMgbmFtZWQgYHBhcmFtYCwgeW91IGNh
biBhbHNvIHVzZSB0aGUKK0dvb2dsZS1Nb2NrLWRlZmluZWQgc3ltYm9sIGBwYXJhbV90eXBlYCB0
byByZWZlciB0byB0aGUgdHlwZSBvZiB0aGUKK3BhcmFtZXRlciBhcyBpbmZlcnJlZCBieSB0aGUg
Y29tcGlsZXIuICBGb3IgZXhhbXBsZSwgaW4gdGhlIGJvZHkgb2YKK2BBQ1RJT05fUChBZGQsIG4p
YCBhYm92ZSwgeW91IGNhbiB3cml0ZSBgbl90eXBlYCBmb3IgdGhlIHR5cGUgb2YgYG5gLgorCitH
b29nbGUgTW9jayBhbHNvIHByb3ZpZGVzIGBBQ1RJT05fUDJgLCBgQUNUSU9OX1AzYCwgYW5kIGV0
YyB0byBzdXBwb3J0CittdWx0aS1wYXJhbWV0ZXIgYWN0aW9ucy4gIEZvciBleGFtcGxlLAorYGBg
CitBQ1RJT05fUDIoUmV0dXJuRGlzdGFuY2VUbywgeCwgeSkgeworICBkb3VibGUgZHggPSBhcmcw
IC0geDsKKyAgZG91YmxlIGR5ID0gYXJnMSAtIHk7CisgIHJldHVybiBzcXJ0KGR4KmR4ICsgZHkq
ZHkpOworfQorYGBgCitsZXRzIHlvdSB3cml0ZQorYGBgCisuLi4gV2lsbE9uY2UoUmV0dXJuRGlz
dGFuY2VUbyg1LjAsIDI2LjUpKTsKK2BgYAorCitZb3UgY2FuIHZpZXcgYEFDVElPTmAgYXMgYSBk
ZWdlbmVyYXRlZCBwYXJhbWV0ZXJpemVkIGFjdGlvbiB3aGVyZSB0aGUKK251bWJlciBvZiBwYXJh
bWV0ZXJzIGlzIDAuCisKK1lvdSBjYW4gYWxzbyBlYXNpbHkgZGVmaW5lIGFjdGlvbnMgb3Zlcmxv
YWRlZCBvbiB0aGUgbnVtYmVyIG9mIHBhcmFtZXRlcnM6CitgYGAKK0FDVElPTl9QKFBsdXMsIGEp
IHsgLi4uIH0KK0FDVElPTl9QMihQbHVzLCBhLCBiKSB7IC4uLiB9CitgYGAKKworIyMgUmVzdHJp
Y3RpbmcgdGhlIFR5cGUgb2YgYW4gQXJndW1lbnQgb3IgUGFyYW1ldGVyIGluIGFuIEFDVElPTiAj
IworCitGb3IgbWF4aW11bSBicmV2aXR5IGFuZCByZXVzYWJpbGl0eSwgdGhlIGBBQ1RJT04qYCBt
YWNyb3MgZG9uJ3QgYXNrCit5b3UgdG8gcHJvdmlkZSB0aGUgdHlwZXMgb2YgdGhlIG1vY2sgZnVu
Y3Rpb24gYXJndW1lbnRzIGFuZCB0aGUgYWN0aW9uCitwYXJhbWV0ZXJzLiAgSW5zdGVhZCwgd2Ug
bGV0IHRoZSBjb21waWxlciBpbmZlciB0aGUgdHlwZXMgZm9yIHVzLgorCitTb21ldGltZXMsIGhv
d2V2ZXIsIHdlIG1heSB3YW50IHRvIGJlIG1vcmUgZXhwbGljaXQgYWJvdXQgdGhlIHR5cGVzLgor
VGhlcmUgYXJlIHNldmVyYWwgdHJpY2tzIHRvIGRvIHRoYXQuICBGb3IgZXhhbXBsZToKK2BgYAor
QUNUSU9OKEZvbykgeworICAvLyBNYWtlcyBzdXJlIGFyZzAgY2FuIGJlIGNvbnZlcnRlZCB0byBp
bnQuCisgIGludCBuID0gYXJnMDsKKyAgLi4uIHVzZSBuIGluc3RlYWQgb2YgYXJnMCBoZXJlIC4u
LgorfQorCitBQ1RJT05fUChCYXIsIHBhcmFtKSB7CisgIC8vIE1ha2VzIHN1cmUgdGhlIHR5cGUg
b2YgYXJnMSBpcyBjb25zdCBjaGFyKi4KKyAgOjp0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE8
Y29uc3QgY2hhciosIGFyZzFfdHlwZT4oKTsKKworICAvLyBNYWtlcyBzdXJlIHBhcmFtIGNhbiBi
ZSBjb252ZXJ0ZWQgdG8gYm9vbC4KKyAgYm9vbCBmbGFnID0gcGFyYW07Cit9CitgYGAKK3doZXJl
IGBTdGF0aWNBc3NlcnRUeXBlRXFgIGlzIGEgY29tcGlsZS10aW1lIGFzc2VydGlvbiBpbiBHb29n
bGUgVGVzdAordGhhdCB2ZXJpZmllcyB0d28gdHlwZXMgYXJlIHRoZSBzYW1lLgorCisjIyBXcml0
aW5nIE5ldyBBY3Rpb24gVGVtcGxhdGVzIFF1aWNrbHkgIyMKKworU29tZXRpbWVzIHlvdSB3YW50
IHRvIGdpdmUgYW4gYWN0aW9uIGV4cGxpY2l0IHRlbXBsYXRlIHBhcmFtZXRlcnMgdGhhdAorY2Fu
bm90IGJlIGluZmVycmVkIGZyb20gaXRzIHZhbHVlIHBhcmFtZXRlcnMuICBgQUNUSU9OX1RFTVBM
QVRFKClgCitzdXBwb3J0cyB0aGF0IGFuZCBjYW4gYmUgdmlld2VkIGFzIGFuIGV4dGVuc2lvbiB0
byBgQUNUSU9OKClgIGFuZAorYEFDVElPTl9QKigpYC4KKworVGhlIHN5bnRheDoKK2BgYAorQUNU
SU9OX1RFTVBMQVRFKEFjdGlvbk5hbWUsCisgICAgICAgICAgICAgICAgSEFTX21fVEVNUExBVEVf
UEFSQU1TKGtpbmQxLCBuYW1lMSwgLi4uLCBraW5kX20sIG5hbWVfbSksCisgICAgICAgICAgICAg
ICAgQU5EX25fVkFMVUVfUEFSQU1TKHAxLCAuLi4sIHBfbikpIHsgc3RhdGVtZW50czsgfQorYGBg
CisKK2RlZmluZXMgYW4gYWN0aW9uIHRlbXBsYXRlIHRoYXQgdGFrZXMgX21fIGV4cGxpY2l0IHRl
bXBsYXRlIHBhcmFtZXRlcnMKK2FuZCBfbl8gdmFsdWUgcGFyYW1ldGVycywgd2hlcmUgX21fIGlz
IGJldHdlZW4gMSBhbmQgMTAsIGFuZCBfbl8gaXMKK2JldHdlZW4gMCBhbmQgMTAuICBgbmFtZV9p
YCBpcyB0aGUgbmFtZSBvZiB0aGUgaS10aCB0ZW1wbGF0ZQorcGFyYW1ldGVyLCBhbmQgYGtpbmRf
aWAgc3BlY2lmaWVzIHdoZXRoZXIgaXQncyBhIGB0eXBlbmFtZWAsIGFuCitpbnRlZ3JhbCBjb25z
dGFudCwgb3IgYSB0ZW1wbGF0ZS4gIGBwX2lgIGlzIHRoZSBuYW1lIG9mIHRoZSBpLXRoIHZhbHVl
CitwYXJhbWV0ZXIuCisKK0V4YW1wbGU6CitgYGAKKy8vIER1cGxpY2F0ZUFyZzxrLCBUPihvdXRw
dXQpIGNvbnZlcnRzIHRoZSBrLXRoIGFyZ3VtZW50IG9mIHRoZSBtb2NrCisvLyBmdW5jdGlvbiB0
byB0eXBlIFQgYW5kIGNvcGllcyBpdCB0byAqb3V0cHV0LgorQUNUSU9OX1RFTVBMQVRFKER1cGxp
Y2F0ZUFyZywKKyAgICAgICAgICAgICAgICAvLyBOb3RlIHRoZSBjb21tYSBiZXR3ZWVuIGludCBh
bmQgazoKKyAgICAgICAgICAgICAgICBIQVNfMl9URU1QTEFURV9QQVJBTVMoaW50LCBrLCB0eXBl
bmFtZSwgVCksCisgICAgICAgICAgICAgICAgQU5EXzFfVkFMVUVfUEFSQU1TKG91dHB1dCkpIHsK
KyAgKm91dHB1dCA9IFQoOjp0ZXN0aW5nOjpnZXQ8az4oYXJncykpOworfQorYGBgCisKK1RvIGNy
ZWF0ZSBhbiBpbnN0YW5jZSBvZiBhbiBhY3Rpb24gdGVtcGxhdGUsIHdyaXRlOgorYGBgCisgIEFj
dGlvbk5hbWU8dDEsIC4uLiwgdF9tPih2MSwgLi4uLCB2X24pCitgYGAKK3doZXJlIHRoZSBgdGBz
IGFyZSB0aGUgdGVtcGxhdGUgYXJndW1lbnRzIGFuZCB0aGUKK2B2YHMgYXJlIHRoZSB2YWx1ZSBh
cmd1bWVudHMuICBUaGUgdmFsdWUgYXJndW1lbnQKK3R5cGVzIGFyZSBpbmZlcnJlZCBieSB0aGUg
Y29tcGlsZXIuICBGb3IgZXhhbXBsZToKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpfOworLi4uCisg
IGludCBuOworICBFWFBFQ1RfQ0FMTChtb2NrLCBGb28oXywgXykpCisgICAgICAuV2lsbE9uY2Uo
RHVwbGljYXRlQXJnPDEsIHVuc2lnbmVkIGNoYXI+KCZuKSk7CitgYGAKKworSWYgeW91IHdhbnQg
dG8gZXhwbGljaXRseSBzcGVjaWZ5IHRoZSB2YWx1ZSBhcmd1bWVudCB0eXBlcywgeW91IGNhbgor
cHJvdmlkZSBhZGRpdGlvbmFsIHRlbXBsYXRlIGFyZ3VtZW50czoKK2BgYAorICBBY3Rpb25OYW1l
PHQxLCAuLi4sIHRfbSwgdTEsIC4uLiwgdV9rPih2MSwgLi4uLCB2X24pCitgYGAKK3doZXJlIGB1
X2lgIGlzIHRoZSBkZXNpcmVkIHR5cGUgb2YgYHZfaWAuCisKK2BBQ1RJT05fVEVNUExBVEVgIGFu
ZCBgQUNUSU9OYC9gQUNUSU9OX1AqYCBjYW4gYmUgb3ZlcmxvYWRlZCBvbiB0aGUKK251bWJlciBv
ZiB2YWx1ZSBwYXJhbWV0ZXJzLCBidXQgbm90IG9uIHRoZSBudW1iZXIgb2YgdGVtcGxhdGUKK3Bh
cmFtZXRlcnMuICBXaXRob3V0IHRoZSByZXN0cmljdGlvbiwgdGhlIG1lYW5pbmcgb2YgdGhlIGZv
bGxvd2luZyBpcwordW5jbGVhcjoKKworYGBgCisgIE92ZXJsb2FkZWRBY3Rpb248aW50LCBib29s
Pih4KTsKK2BgYAorCitBcmUgd2UgdXNpbmcgYSBzaW5nbGUtdGVtcGxhdGUtcGFyYW1ldGVyIGFj
dGlvbiB3aGVyZSBgYm9vbGAgcmVmZXJzIHRvCit0aGUgdHlwZSBvZiBgeGAsIG9yIGEgdHdvLXRl
bXBsYXRlLXBhcmFtZXRlciBhY3Rpb24gd2hlcmUgdGhlIGNvbXBpbGVyCitpcyBhc2tlZCB0byBp
bmZlciB0aGUgdHlwZSBvZiBgeGA/CisKKyMjIFVzaW5nIHRoZSBBQ1RJT04gT2JqZWN0J3MgVHlw
ZSAjIworCitJZiB5b3UgYXJlIHdyaXRpbmcgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gYEFD
VElPTmAgb2JqZWN0LCB5b3UnbGwKK25lZWQgdG8ga25vdyBpdHMgdHlwZS4gIFRoZSB0eXBlIGRl
cGVuZHMgb24gdGhlIG1hY3JvIHVzZWQgdG8gZGVmaW5lCit0aGUgYWN0aW9uIGFuZCB0aGUgcGFy
YW1ldGVyIHR5cGVzLiAgVGhlIHJ1bGUgaXMgcmVsYXRpdmVseSBzaW1wbGU6Cit8ICoqR2l2ZW4g
RGVmaW5pdGlvbioqIHwgKipFeHByZXNzaW9uKiogfCAqKkhhcyBUeXBlKiogfAorfDotLS0tLS0t
LS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKK3wgYEFDVElP
TihGb28pYCAgICAgICAgfCBgRm9vKClgICAgICAgICB8IGBGb29BY3Rpb25gICB8Cit8IGBBQ1RJ
T05fVEVNUExBVEUoRm9vLCBIQVNfbV9URU1QTEFURV9QQVJBTVMoLi4uKSwgQU5EXzBfVkFMVUVf
UEFSQU1TKCkpYCB8CWBGb288dDEsIC4uLiwgdF9tPigpYCB8IGBGb29BY3Rpb248dDEsIC4uLiwg
dF9tPmAgfAorfCBgQUNUSU9OX1AoQmFyLCBwYXJhbSlgIHwgYEJhcihpbnRfdmFsdWUpYCB8IGBC
YXJBY3Rpb25QPGludD5gIHwKK3wgYEFDVElPTl9URU1QTEFURShCYXIsIEhBU19tX1RFTVBMQVRF
X1BBUkFNUyguLi4pLCBBTkRfMV9WQUxVRV9QQVJBTVMocDEpKWAgfCBgQmFyPHQxLCAuLi4sIHRf
bT4oaW50X3ZhbHVlKWAgfCBgRm9vQWN0aW9uUDx0MSwgLi4uLCB0X20sIGludD5gIHwKK3wgYEFD
VElPTl9QMihCYXosIHAxLCBwMilgIHwgYEJheihib29sX3ZhbHVlLCBpbnRfdmFsdWUpYCB8IGBC
YXpBY3Rpb25QMjxib29sLCBpbnQ+YCB8Cit8IGBBQ1RJT05fVEVNUExBVEUoQmF6LCBIQVNfbV9U
RU1QTEFURV9QQVJBTVMoLi4uKSwgQU5EXzJfVkFMVUVfUEFSQU1TKHAxLCBwMikpYCB8IGBCYXo8
dDEsIC4uLiwgdF9tPihib29sX3ZhbHVlLCBpbnRfdmFsdWUpYCB8IGBGb29BY3Rpb25QMjx0MSwg
Li4uLCB0X20sIGJvb2wsIGludD5gIHwKK3wgLi4uICAgICAgICAgICAgICAgICAgfCAuLi4gICAg
ICAgICAgICB8IC4uLiAgICAgICAgICB8CisKK05vdGUgdGhhdCB3ZSBoYXZlIHRvIHBpY2sgZGlm
ZmVyZW50IHN1ZmZpeGVzIChgQWN0aW9uYCwgYEFjdGlvblBgLAorYEFjdGlvblAyYCwgYW5kIGV0
YykgZm9yIGFjdGlvbnMgd2l0aCBkaWZmZXJlbnQgbnVtYmVycyBvZiB2YWx1ZQorcGFyYW1ldGVy
cywgb3IgdGhlIGFjdGlvbiBkZWZpbml0aW9ucyBjYW5ub3QgYmUgb3ZlcmxvYWRlZCBvbiB0aGUK
K251bWJlciBvZiB0aGVtLgorCisjIyBXcml0aW5nIE5ldyBNb25vbW9ycGhpYyBBY3Rpb25zICMj
CisKK1doaWxlIHRoZSBgQUNUSU9OKmAgbWFjcm9zIGFyZSB2ZXJ5IGNvbnZlbmllbnQsIHNvbWV0
aW1lcyB0aGV5IGFyZQoraW5hcHByb3ByaWF0ZS4gIEZvciBleGFtcGxlLCBkZXNwaXRlIHRoZSB0
cmlja3Mgc2hvd24gaW4gdGhlIHByZXZpb3VzCityZWNpcGVzLCB0aGV5IGRvbid0IGxldCB5b3Ug
ZGlyZWN0bHkgc3BlY2lmeSB0aGUgdHlwZXMgb2YgdGhlIG1vY2sKK2Z1bmN0aW9uIGFyZ3VtZW50
cyBhbmQgdGhlIGFjdGlvbiBwYXJhbWV0ZXJzLCB3aGljaCBpbiBnZW5lcmFsIGxlYWRzCit0byB1
bm9wdGltaXplZCBjb21waWxlciBlcnJvciBtZXNzYWdlcyB0aGF0IGNhbiBiYWZmbGUgdW5mYW1p
bGlhcgordXNlcnMuICBUaGV5IGFsc28gZG9uJ3QgYWxsb3cgb3ZlcmxvYWRpbmcgYWN0aW9ucyBi
YXNlZCBvbiBwYXJhbWV0ZXIKK3R5cGVzIHdpdGhvdXQganVtcGluZyB0aHJvdWdoIHNvbWUgaG9v
cHMuCisKK0FuIGFsdGVybmF0aXZlIHRvIHRoZSBgQUNUSU9OKmAgbWFjcm9zIGlzIHRvIGltcGxl
bWVudAorYDo6dGVzdGluZzo6QWN0aW9uSW50ZXJmYWNlPEY+YCwgd2hlcmUgYEZgIGlzIHRoZSB0
eXBlIG9mIHRoZSBtb2NrCitmdW5jdGlvbiBpbiB3aGljaCB0aGUgYWN0aW9uIHdpbGwgYmUgdXNl
ZC4gRm9yIGV4YW1wbGU6CisKK2BgYAordGVtcGxhdGUgPHR5cGVuYW1lIEY+Y2xhc3MgQWN0aW9u
SW50ZXJmYWNlIHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgfkFjdGlvbkludGVyZmFjZSgpOworCisg
IC8vIFBlcmZvcm1zIHRoZSBhY3Rpb24uICBSZXN1bHQgaXMgdGhlIHJldHVybiB0eXBlIG9mIGZ1
bmN0aW9uIHR5cGUKKyAgLy8gRiwgYW5kIEFyZ3VtZW50VHVwbGUgaXMgdGhlIHR1cGxlIG9mIGFy
Z3VtZW50cyBvZiBGLgorICAvLworICAvLyBGb3IgZXhhbXBsZSwgaWYgRiBpcyBpbnQoYm9vbCwg
Y29uc3Qgc3RyaW5nJiksIHRoZW4gUmVzdWx0IHdvdWxkCisgIC8vIGJlIGludCwgYW5kIEFyZ3Vt
ZW50VHVwbGUgd291bGQgYmUgOjp0ZXN0aW5nOjp0dXBsZTxib29sLCBjb25zdCBzdHJpbmcmPi4K
KyAgdmlydHVhbCBSZXN1bHQgUGVyZm9ybShjb25zdCBBcmd1bWVudFR1cGxlJiBhcmdzKSA9IDA7
Cit9OworCit1c2luZyA6OnRlc3Rpbmc6Ol87Cit1c2luZyA6OnRlc3Rpbmc6OkFjdGlvbjsKK3Vz
aW5nIDo6dGVzdGluZzo6QWN0aW9uSW50ZXJmYWNlOwordXNpbmcgOjp0ZXN0aW5nOjpNYWtlQWN0
aW9uOworCit0eXBlZGVmIGludCBJbmNyZW1lbnRNZXRob2QoaW50Kik7CisKK2NsYXNzIEluY3Jl
bWVudEFyZ3VtZW50QWN0aW9uIDogcHVibGljIEFjdGlvbkludGVyZmFjZTxJbmNyZW1lbnRNZXRo
b2Q+IHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgaW50IFBlcmZvcm0oY29uc3QgOjp0ZXN0aW5nOjp0
dXBsZTxpbnQqPiYgYXJncykgeworICAgIGludCogcCA9IDo6dGVzdGluZzo6Z2V0PDA+KGFyZ3Mp
OyAgLy8gR3JhYnMgdGhlIGZpcnN0IGFyZ3VtZW50LgorICAgIHJldHVybiAqcCsrOworICB9Cit9
OworCitBY3Rpb248SW5jcmVtZW50TWV0aG9kPiBJbmNyZW1lbnRBcmd1bWVudCgpIHsKKyAgcmV0
dXJuIE1ha2VBY3Rpb24obmV3IEluY3JlbWVudEFyZ3VtZW50QWN0aW9uKTsKK30KKy4uLgorCisg
IEVYUEVDVF9DQUxMKGZvbywgQmF6KF8pKQorICAgICAgLldpbGxPbmNlKEluY3JlbWVudEFyZ3Vt
ZW50KCkpOworCisgIGludCBuID0gNTsKKyAgZm9vLkJheigmbik7ICAvLyBTaG91bGQgcmV0dXJu
IDUgYW5kIGNoYW5nZSBuIHRvIDYuCitgYGAKKworIyMgV3JpdGluZyBOZXcgUG9seW1vcnBoaWMg
QWN0aW9ucyAjIworCitUaGUgcHJldmlvdXMgcmVjaXBlIHNob3dlZCB5b3UgaG93IHRvIGRlZmlu
ZSB5b3VyIG93biBhY3Rpb24uIFRoaXMgaXMKK2FsbCBnb29kLCBleGNlcHQgdGhhdCB5b3UgbmVl
ZCB0byBrbm93IHRoZSB0eXBlIG9mIHRoZSBmdW5jdGlvbiBpbgord2hpY2ggdGhlIGFjdGlvbiB3
aWxsIGJlIHVzZWQuIFNvbWV0aW1lcyB0aGF0IGNhbiBiZSBhIHByb2JsZW0uIEZvcgorZXhhbXBs
ZSwgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBhY3Rpb24gaW4gZnVuY3Rpb25zIHdpdGggX2RpZmZl
cmVudF8KK3R5cGVzIChlLmcuIGxpa2UgYFJldHVybigpYCBhbmQgYFNldEFyZ1BvaW50ZWUoKWAp
LgorCitJZiBhbiBhY3Rpb24gY2FuIGJlIHVzZWQgaW4gc2V2ZXJhbCB0eXBlcyBvZiBtb2NrIGZ1
bmN0aW9ucywgd2Ugc2F5CitpdCdzIF9wb2x5bW9ycGhpY18uIFRoZSBgTWFrZVBvbHltb3JwaGlj
QWN0aW9uKClgIGZ1bmN0aW9uIHRlbXBsYXRlCittYWtlcyBpdCBlYXN5IHRvIGRlZmluZSBzdWNo
IGFuIGFjdGlvbjoKKworYGBgCituYW1lc3BhY2UgdGVzdGluZyB7CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBJbXBsPgorUG9seW1vcnBoaWNBY3Rpb248SW1wbD4gTWFrZVBvbHltb3JwaGljQWN0aW9u
KGNvbnN0IEltcGwmIGltcGwpOworCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZworYGBgCisKK0Fz
IGFuIGV4YW1wbGUsIGxldCdzIGRlZmluZSBhbiBhY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBzZWNv
bmQgYXJndW1lbnQKK2luIHRoZSBtb2NrIGZ1bmN0aW9uJ3MgYXJndW1lbnQgbGlzdC4gVGhlIGZp
cnN0IHN0ZXAgaXMgdG8gZGVmaW5lIGFuCitpbXBsZW1lbnRhdGlvbiBjbGFzczoKKworYGBgCitj
bGFzcyBSZXR1cm5TZWNvbmRBcmd1bWVudEFjdGlvbiB7CisgcHVibGljOgorICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgUmVzdWx0LCB0eXBlbmFtZSBBcmd1bWVudFR1cGxlPgorICBSZXN1bHQgUGVyZm9y
bShjb25zdCBBcmd1bWVudFR1cGxlJiBhcmdzKSBjb25zdCB7CisgICAgLy8gVG8gZ2V0IHRoZSBp
LXRoICgwLWJhc2VkKSBhcmd1bWVudCwgdXNlIDo6dGVzdGluZzo6Z2V0PGk+KGFyZ3MpLgorICAg
IHJldHVybiA6OnRlc3Rpbmc6OmdldDwxPihhcmdzKTsKKyAgfQorfTsKK2BgYAorCitUaGlzIGlt
cGxlbWVudGF0aW9uIGNsYXNzIGRvZXMgX25vdF8gbmVlZCB0byBpbmhlcml0IGZyb20gYW55Citw
YXJ0aWN1bGFyIGNsYXNzLiBXaGF0IG1hdHRlcnMgaXMgdGhhdCBpdCBtdXN0IGhhdmUgYSBgUGVy
Zm9ybSgpYAorbWV0aG9kIHRlbXBsYXRlLiBUaGlzIG1ldGhvZCB0ZW1wbGF0ZSB0YWtlcyB0aGUg
bW9jayBmdW5jdGlvbidzCithcmd1bWVudHMgYXMgYSB0dXBsZSBpbiBhICoqc2luZ2xlKiogYXJn
dW1lbnQsIGFuZCByZXR1cm5zIHRoZSByZXN1bHQgb2YKK3RoZSBhY3Rpb24uIEl0IGNhbiBiZSBl
aXRoZXIgYGNvbnN0YCBvciBub3QsIGJ1dCBtdXN0IGJlIGludm9rYWJsZQord2l0aCBleGFjdGx5
IG9uZSB0ZW1wbGF0ZSBhcmd1bWVudCwgd2hpY2ggaXMgdGhlIHJlc3VsdCB0eXBlLiBJbiBvdGhl
cgord29yZHMsIHlvdSBtdXN0IGJlIGFibGUgdG8gY2FsbCBgUGVyZm9ybTxSPihhcmdzKWAgd2hl
cmUgYFJgIGlzIHRoZQorbW9jayBmdW5jdGlvbidzIHJldHVybiB0eXBlIGFuZCBgYXJnc2AgaXMg
aXRzIGFyZ3VtZW50cyBpbiBhIHR1cGxlLgorCitOZXh0LCB3ZSB1c2UgYE1ha2VQb2x5bW9ycGhp
Y0FjdGlvbigpYCB0byB0dXJuIGFuIGluc3RhbmNlIG9mIHRoZQoraW1wbGVtZW50YXRpb24gY2xh
c3MgaW50byB0aGUgcG9seW1vcnBoaWMgYWN0aW9uIHdlIG5lZWQuIEl0IHdpbGwgYmUKK2NvbnZl
bmllbnQgdG8gaGF2ZSBhIHdyYXBwZXIgZm9yIHRoaXM6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5n
OjpNYWtlUG9seW1vcnBoaWNBY3Rpb247Cit1c2luZyA6OnRlc3Rpbmc6OlBvbHltb3JwaGljQWN0
aW9uOworCitQb2x5bW9ycGhpY0FjdGlvbjxSZXR1cm5TZWNvbmRBcmd1bWVudEFjdGlvbj4gUmV0
dXJuU2Vjb25kQXJndW1lbnQoKSB7CisgIHJldHVybiBNYWtlUG9seW1vcnBoaWNBY3Rpb24oUmV0
dXJuU2Vjb25kQXJndW1lbnRBY3Rpb24oKSk7Cit9CitgYGAKKworTm93LCB5b3UgY2FuIHVzZSB0
aGlzIHBvbHltb3JwaGljIGFjdGlvbiB0aGUgc2FtZSB3YXkgeW91IHVzZSB0aGUKK2J1aWx0LWlu
IG9uZXM6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpfOworCitjbGFzcyBNb2NrRm9vIDogcHVi
bGljIEZvbyB7CisgcHVibGljOgorICBNT0NLX01FVEhPRDIoRG9UaGlzLCBpbnQoYm9vbCBmbGFn
LCBpbnQgbikpOworICBNT0NLX01FVEhPRDMoRG9UaGF0LCBzdHJpbmcoaW50IHgsIGNvbnN0IGNo
YXIqIHN0cjEsIGNvbnN0IGNoYXIqIHN0cjIpKTsKK307CisuLi4KKworICBNb2NrRm9vIGZvbzsK
KyAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoaXMoXywgXykpCisgICAgICAuV2lsbE9uY2UoUmV0dXJu
U2Vjb25kQXJndW1lbnQoKSk7CisgIEVYUEVDVF9DQUxMKGZvbywgRG9UaGF0KF8sIF8sIF8pKQor
ICAgICAgLldpbGxPbmNlKFJldHVyblNlY29uZEFyZ3VtZW50KCkpOworICAuLi4KKyAgZm9vLkRv
VGhpcyh0cnVlLCA1KTsgICAgICAgICAvLyBXaWxsIHJldHVybiA1LgorICBmb28uRG9UaGF0KDEs
ICJIaSIsICJCeWUiKTsgIC8vIFdpbGwgcmV0dXJuICJIaSIuCitgYGAKKworIyMgVGVhY2hpbmcg
R29vZ2xlIE1vY2sgSG93IHRvIFByaW50IFlvdXIgVmFsdWVzICMjCisKK1doZW4gYW4gdW5pbnRl
cmVzdGluZyBvciB1bmV4cGVjdGVkIGNhbGwgb2NjdXJzLCBHb29nbGUgTW9jayBwcmludHMgdGhl
Cithcmd1bWVudCB2YWx1ZXMgYW5kIHRoZSBzdGFjayB0cmFjZSB0byBoZWxwIHlvdSBkZWJ1Zy4g
IEFzc2VydGlvbgorbWFjcm9zIGxpa2UgYEVYUEVDVF9USEFUYCBhbmQgYEVYUEVDVF9FUWAgYWxz
byBwcmludCB0aGUgdmFsdWVzIGluCitxdWVzdGlvbiB3aGVuIHRoZSBhc3NlcnRpb24gZmFpbHMu
ICBHb29nbGUgTW9jayBhbmQgR29vZ2xlIFRlc3QgZG8gdGhpcyB1c2luZworR29vZ2xlIFRlc3Qn
cyB1c2VyLWV4dGVuc2libGUgdmFsdWUgcHJpbnRlci4KKworVGhpcyBwcmludGVyIGtub3dzIGhv
dyB0byBwcmludCBidWlsdC1pbiBDKysgdHlwZXMsIG5hdGl2ZSBhcnJheXMsIFNUTAorY29udGFp
bmVycywgYW5kIGFueSB0eXBlIHRoYXQgc3VwcG9ydHMgdGhlIGA8PGAgb3BlcmF0b3IuICBGb3Ig
b3RoZXIKK3R5cGVzLCBpdCBwcmludHMgdGhlIHJhdyBieXRlcyBpbiB0aGUgdmFsdWUgYW5kIGhv
cGVzIHRoYXQgeW91IHRoZQordXNlciBjYW4gZmlndXJlIGl0IG91dC4KK1tHb29nbGUgVGVzdCdz
IGFkdmFuY2VkIGd1aWRlXSguLi8uLi9nb29nbGV0ZXN0L2RvY3MvQWR2YW5jZWRHdWlkZS5tZCN0
ZWFjaGluZy1nb29nbGUtdGVzdC1ob3ctdG8tcHJpbnQteW91ci12YWx1ZXMpCitleHBsYWlucyBo
b3cgdG8gZXh0ZW5kIHRoZSBwcmludGVyIHRvIGRvIGEgYmV0dGVyIGpvYiBhdAorcHJpbnRpbmcg
eW91ciBwYXJ0aWN1bGFyIHR5cGUgdGhhbiB0byBkdW1wIHRoZSBieXRlcy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGVtb2NrL2RvY3MvRGVzaWduRG9jLm1kIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy9EZXNpZ25E
b2MubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uM2Y1MTVjM2I2ZGQ2ZjY4OThmNzI0MTNmMzY4ZDQyMDc1Yzg1ZGJi
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvRGVzaWduRG9jLm1kCkBAIC0w
LDAgKzEsMjgwIEBACitUaGlzIHBhZ2UgZGlzY3Vzc2VzIHRoZSBkZXNpZ24gb2YgbmV3IEdvb2ds
ZSBNb2NrIGZlYXR1cmVzLgorCisKKworIyBNYWNyb3MgZm9yIERlZmluaW5nIEFjdGlvbnMgIwor
CisjIyBQcm9ibGVtICMjCisKK0R1ZSB0byB0aGUgbGFjayBvZiBjbG9zdXJlcyBpbiBDKyssIGl0
IGN1cnJlbnRseSByZXF1aXJlcyBzb21lCitub24tdHJpdmlhbCBlZmZvcnQgdG8gZGVmaW5lIGEg
Y3VzdG9tIGFjdGlvbiBpbiBHb29nbGUgTW9jay4gIEZvcgorZXhhbXBsZSwgc3VwcG9zZSB5b3Ug
d2FudCB0byAiaW5jcmVtZW50IHRoZSB2YWx1ZSBwb2ludGVkIHRvIGJ5IHRoZQorc2Vjb25kIGFy
Z3VtZW50IG9mIHRoZSBtb2NrIGZ1bmN0aW9uIGFuZCByZXR1cm4gaXQiLCB5b3UgY291bGQgd3Jp
dGU6CisKK2BgYAoraW50IEluY3JlbWVudEFyZzEoVW51c2VkLCBpbnQqIHAsIFVudXNlZCkgewor
ICByZXR1cm4gKysoKnApOworfQorCisuLi4gV2lsbE9uY2UoSW52b2tlKEluY3JlbWVudEFyZzEp
KTsKK2BgYAorCitUaGVyZSBhcmUgc2V2ZXJhbCB0aGluZ3MgdW5zYXRpc2ZhY3RvcnkgYWJvdXQg
dGhpcyBhcHByb2FjaDoKKworICAqIEV2ZW4gdGhvdWdoIHRoZSBhY3Rpb24gb25seSBjYXJlcyBh
Ym91dCB0aGUgc2Vjb25kIGFyZ3VtZW50IG9mIHRoZSBtb2NrIGZ1bmN0aW9uLCBpdHMgZGVmaW5p
dGlvbiBuZWVkcyB0byBsaXN0IG90aGVyIGFyZ3VtZW50cyBhcyBkdW1taWVzLiAgVGhpcyBpcyB0
ZWRpb3VzLgorICAqIFRoZSBkZWZpbmVkIGFjdGlvbiBpcyB1c2FibGUgb25seSBpbiBtb2NrIGZ1
bmN0aW9ucyB0aGF0IHRha2VzIGV4YWN0bHkgMyBhcmd1bWVudHMgLSBhbiB1bm5lY2Vzc2FyeSBy
ZXN0cmljdGlvbi4KKyAgKiBUbyB1c2UgdGhlIGFjdGlvbiwgb25lIGhhcyB0byBzYXkgYEludm9r
ZShJbmNyZW1lbnRBcmcxKWAsIHdoaWNoIGlzbid0IGFzIG5pY2UgYXMgYEluY3JlbWVudEFyZzEo
KWAuCisKK1RoZSBsYXR0ZXIgdHdvIHByb2JsZW1zIGNhbiBiZSBvdmVyY29tZSB1c2luZyBgTWFr
ZVBvbHltb3JwaGljQWN0aW9uKClgLAorYnV0IGl0IHJlcXVpcmVzIG11Y2ggbW9yZSBib2lsZXJw
bGF0ZSBjb2RlOgorCitgYGAKK2NsYXNzIEluY3JlbWVudEFyZzFBY3Rpb24geworIHB1YmxpYzoK
KyAgdGVtcGxhdGUgPHR5cGVuYW1lIFJlc3VsdCwgdHlwZW5hbWUgQXJndW1lbnRUdXBsZT4KKyAg
UmVzdWx0IFBlcmZvcm0oY29uc3QgQXJndW1lbnRUdXBsZSYgYXJncykgY29uc3QgeworICAgIHJl
dHVybiArKygqdHIxOjpnZXQ8MT4oYXJncykpOworICB9Cit9OworCitQb2x5bW9ycGhpY0FjdGlv
bjxJbmNyZW1lbnRBcmcxQWN0aW9uPiBJbmNyZW1lbnRBcmcxKCkgeworICByZXR1cm4gTWFrZVBv
bHltb3JwaGljQWN0aW9uKEluY3JlbWVudEFyZzFBY3Rpb24oKSk7Cit9CisKKy4uLiBXaWxsT25j
ZShJbmNyZW1lbnRBcmcxKCkpOworYGBgCisKK091ciBnb2FsIGlzIHRvIGFsbG93IGRlZmluaW5n
IGN1c3RvbSBhY3Rpb25zIHdpdGggdGhlIGxlYXN0IGFtb3VudCBvZgorYm9pbGVyLXBsYXRlIEMr
KyByZXF1aXJlcy4KKworIyMgU29sdXRpb24gIyMKKworV2UgcHJvcG9zZSB0byBpbnRyb2R1Y2Ug
YSBuZXcgbWFjcm86CitgYGAKK0FDVElPTihuYW1lKSB7IHN0YXRlbWVudHM7IH0KK2BgYAorCitV
c2luZyB0aGlzIGluIGEgbmFtZXNwYWNlIHNjb3BlIHdpbGwgZGVmaW5lIGFuIGFjdGlvbiB3aXRo
IHRoZSBnaXZlbgorbmFtZSB0aGF0IGV4ZWN1dGVzIHRoZSBzdGF0ZW1lbnRzLiAgSW5zaWRlIHRo
ZSBzdGF0ZW1lbnRzLCB5b3UgY2FuCityZWZlciB0byB0aGUgSy10aCAoMC1iYXNlZCkgYXJndW1l
bnQgb2YgdGhlIG1vY2sgZnVuY3Rpb24gYXMgYGFyZ0tgLgorRm9yIGV4YW1wbGU6CitgYGAKK0FD
VElPTihJbmNyZW1lbnRBcmcxKSB7IHJldHVybiArKygqYXJnMSk7IH0KK2BgYAorYWxsb3dzIHlv
dSB0byB3cml0ZQorYGBgCisuLi4gV2lsbE9uY2UoSW5jcmVtZW50QXJnMSgpKTsKK2BgYAorCitO
b3RlIHRoYXQgeW91IGRvbid0IG5lZWQgdG8gc3BlY2lmeSB0aGUgdHlwZXMgb2YgdGhlIG1vY2sg
ZnVuY3Rpb24KK2FyZ3VtZW50cywgYXMgYnJldml0eSBpcyBhIHRvcCBkZXNpZ24gZ29hbCBoZXJl
LiAgUmVzdCBhc3N1cmVkIHRoYXQKK3lvdXIgY29kZSBpcyBzdGlsbCB0eXBlLXNhZmUgdGhvdWdo
OiB5b3UnbGwgZ2V0IGEgY29tcGlsZXIgZXJyb3IgaWYKK2AqYXJnMWAgZG9lc24ndCBzdXBwb3J0
IHRoZSBgKytgIG9wZXJhdG9yLCBvciBpZiB0aGUgdHlwZSBvZgorYCsrKCphcmcxKWAgaXNuJ3Qg
Y29tcGF0aWJsZSB3aXRoIHRoZSBtb2NrIGZ1bmN0aW9uJ3MgcmV0dXJuIHR5cGUuCisKK0Fub3Ro
ZXIgZXhhbXBsZToKK2BgYAorQUNUSU9OKEZvbykgeworICAoKmFyZzIpKDUpOworICBCbGFoKCk7
CisgICphcmcxID0gMDsKKyAgcmV0dXJuIGFyZzA7Cit9CitgYGAKK2RlZmluZXMgYW4gYWN0aW9u
IGBGb28oKWAgdGhhdCBpbnZva2VzIGFyZ3VtZW50ICMyIChhIGZ1bmN0aW9uIHBvaW50ZXIpCit3
aXRoIDUsIGNhbGxzIGZ1bmN0aW9uIGBCbGFoKClgLCBzZXRzIHRoZSB2YWx1ZSBwb2ludGVkIHRv
IGJ5IGFyZ3VtZW50CisjMSB0byAwLCBhbmQgcmV0dXJucyBhcmd1bWVudCAjMC4KKworRm9yIG1v
cmUgY29udmVuaWVuY2UgYW5kIGZsZXhpYmlsaXR5LCB5b3UgY2FuIGFsc28gdXNlIHRoZSBmb2xs
b3dpbmcKK3ByZS1kZWZpbmVkIHN5bWJvbHMgaW4gdGhlIGJvZHkgb2YgYEFDVElPTmA6CisKK3wg
YGFyZ0tfdHlwZWAgfCBUaGUgdHlwZSBvZiB0aGUgSy10aCAoMC1iYXNlZCkgYXJndW1lbnQgb2Yg
dGhlIG1vY2sgZnVuY3Rpb24gfAorfDotLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Cit8IGBhcmdzYCAgICAg
IHwgQWxsIGFyZ3VtZW50cyBvZiB0aGUgbW9jayBmdW5jdGlvbiBhcyBhIHR1cGxlICAgICAgICAg
ICAgICAgIHwKK3wgYGFyZ3NfdHlwZWAgfCBUaGUgdHlwZSBvZiBhbGwgYXJndW1lbnRzIG9mIHRo
ZSBtb2NrIGZ1bmN0aW9uIGFzIGEgdHVwbGUgICAgfAorfCBgcmV0dXJuX3R5cGVgIHwgVGhlIHJl
dHVybiB0eXBlIG9mIHRoZSBtb2NrIGZ1bmN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgIHwK
K3wgYGZ1bmN0aW9uX3R5cGVgIHwgVGhlIHR5cGUgb2YgdGhlIG1vY2sgZnVuY3Rpb24gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwKKworRm9yIGV4YW1wbGUsIHdoZW4gdXNpbmcgYW4g
YEFDVElPTmAgYXMgYSBzdHViIGFjdGlvbiBmb3IgbW9jayBmdW5jdGlvbjoKK2BgYAoraW50IERv
U29tZXRoaW5nKGJvb2wgZmxhZywgaW50KiBwdHIpOworYGBgCit3ZSBoYXZlOgorfCAqKlByZS1k
ZWZpbmVkIFN5bWJvbCoqIHwgKipJcyBCb3VuZCBUbyoqIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS18Oi0tLS0tLS0tLS0tLS0tLS18Cit8IGBhcmcwYCAgICAgICAgICAgICAgICAgfCB0aGUg
dmFsdWUgb2YgYGZsYWdgIHwKK3wgYGFyZzBfdHlwZWAgICAgICAgICAgICB8IHRoZSB0eXBlIGBi
b29sYCB8Cit8IGBhcmcxYCAgICAgICAgICAgICAgICAgfCB0aGUgdmFsdWUgb2YgYHB0cmAgfAor
fCBgYXJnMV90eXBlYCAgICAgICAgICAgIHwgdGhlIHR5cGUgYGludCpgIHwKK3wgYGFyZ3NgICAg
ICAgICAgICAgICAgICB8IHRoZSB0dXBsZSBgKGZsYWcsIHB0cilgIHwKK3wgYGFyZ3NfdHlwZWAg
ICAgICAgICAgICB8IHRoZSB0eXBlIGBzdGQ6OnRyMTo6dHVwbGU8Ym9vbCwgaW50Kj5gIHwKK3wg
YHJldHVybl90eXBlYCAgICAgICAgICB8IHRoZSB0eXBlIGBpbnRgICB8Cit8IGBmdW5jdGlvbl90
eXBlYCAgICAgICAgfCB0aGUgdHlwZSBgaW50KGJvb2wsIGludCopYCB8CisKKyMjIFBhcmFtZXRl
cml6ZWQgYWN0aW9ucyAjIworCitTb21ldGltZXMgeW91J2xsIHdhbnQgdG8gcGFyYW1ldGVyaXpl
IHRoZSBhY3Rpb24uICAgRm9yIHRoYXQgd2UgcHJvcG9zZQorYW5vdGhlciBtYWNybworYGBgCitB
Q1RJT05fUChuYW1lLCBwYXJhbSkgeyBzdGF0ZW1lbnRzOyB9CitgYGAKKworRm9yIGV4YW1wbGUs
CitgYGAKK0FDVElPTl9QKEFkZCwgbikgeyByZXR1cm4gYXJnMCArIG47IH0KK2BgYAord2lsbCBh
bGxvdyB5b3UgdG8gd3JpdGUKK2BgYAorLy8gUmV0dXJucyBhcmd1bWVudCAjMCArIDUuCisuLi4g
V2lsbE9uY2UoQWRkKDUpKTsKK2BgYAorCitGb3IgY29udmVuaWVuY2UsIHdlIHVzZSB0aGUgdGVy
bSBfYXJndW1lbnRzXyBmb3IgdGhlIHZhbHVlcyB1c2VkIHRvCitpbnZva2UgdGhlIG1vY2sgZnVu
Y3Rpb24sIGFuZCB0aGUgdGVybSBfcGFyYW1ldGVyc18gZm9yIHRoZSB2YWx1ZXMKK3VzZWQgdG8g
aW5zdGFudGlhdGUgYW4gYWN0aW9uLgorCitOb3RlIHRoYXQgeW91IGRvbid0IG5lZWQgdG8gcHJv
dmlkZSB0aGUgdHlwZSBvZiB0aGUgcGFyYW1ldGVyIGVpdGhlci4KK1N1cHBvc2UgdGhlIHBhcmFt
ZXRlciBpcyBuYW1lZCBgcGFyYW1gLCB5b3UgY2FuIGFsc28gdXNlIHRoZQorR29vZ2xlLU1vY2st
ZGVmaW5lZCBzeW1ib2wgYHBhcmFtX3R5cGVgIHRvIHJlZmVyIHRvIHRoZSB0eXBlIG9mIHRoZQor
cGFyYW1ldGVyIGFzIGluZmVycmVkIGJ5IHRoZSBjb21waWxlci4KKworV2Ugd2lsbCBhbHNvIHBy
b3ZpZGUgYEFDVElPTl9QMmAsIGBBQ1RJT05fUDNgLCBhbmQgZXRjIHRvIHN1cHBvcnQKK211bHRp
LXBhcmFtZXRlciBhY3Rpb25zLiAgRm9yIGV4YW1wbGUsCitgYGAKK0FDVElPTl9QMihSZXR1cm5E
aXN0YW5jZVRvLCB4LCB5KSB7CisgIGRvdWJsZSBkeCA9IGFyZzAgLSB4OworICBkb3VibGUgZHkg
PSBhcmcxIC0geTsKKyAgcmV0dXJuIHNxcnQoZHgqZHggKyBkeSpkeSk7Cit9CitgYGAKK2xldHMg
eW91IHdyaXRlCitgYGAKKy4uLiBXaWxsT25jZShSZXR1cm5EaXN0YW5jZVRvKDUuMCwgMjYuNSkp
OworYGBgCisKK1lvdSBjYW4gdmlldyBgQUNUSU9OYCBhcyBhIGRlZ2VuZXJhdGVkIHBhcmFtZXRl
cml6ZWQgYWN0aW9uIHdoZXJlIHRoZQorbnVtYmVyIG9mIHBhcmFtZXRlcnMgaXMgMC4KKworIyMg
QWR2YW5jZWQgVXNhZ2VzICMjCisKKyMjIyBPdmVybG9hZGluZyBBY3Rpb25zICMjIworCitZb3Ug
Y2FuIGVhc2lseSBkZWZpbmUgYWN0aW9ucyBvdmVybG9hZGVkIG9uIHRoZSBudW1iZXIgb2YgcGFy
YW1ldGVyczoKK2BgYAorQUNUSU9OX1AoUGx1cywgYSkgeyAuLi4gfQorQUNUSU9OX1AyKFBsdXMs
IGEsIGIpIHsgLi4uIH0KK2BgYAorCisjIyMgUmVzdHJpY3RpbmcgdGhlIFR5cGUgb2YgYW4gQXJn
dW1lbnQgb3IgUGFyYW1ldGVyICMjIworCitGb3IgbWF4aW11bSBicmV2aXR5IGFuZCByZXVzYWJp
bGl0eSwgdGhlIGBBQ1RJT04qYCBtYWNyb3MgZG9uJ3QgbGV0Cit5b3Ugc3BlY2lmeSB0aGUgdHlw
ZXMgb2YgdGhlIG1vY2sgZnVuY3Rpb24gYXJndW1lbnRzIGFuZCB0aGUgYWN0aW9uCitwYXJhbWV0
ZXJzLiAgSW5zdGVhZCwgd2UgbGV0IHRoZSBjb21waWxlciBpbmZlciB0aGUgdHlwZXMgZm9yIHVz
LgorCitTb21ldGltZXMsIGhvd2V2ZXIsIHdlIG1heSB3YW50IHRvIGJlIG1vcmUgZXhwbGljaXQg
YWJvdXQgdGhlIHR5cGVzLgorVGhlcmUgYXJlIHNldmVyYWwgdHJpY2tzIHRvIGRvIHRoYXQuICBG
b3IgZXhhbXBsZToKK2BgYAorQUNUSU9OKEZvbykgeworICAvLyBNYWtlcyBzdXJlIGFyZzAgY2Fu
IGJlIGNvbnZlcnRlZCB0byBpbnQuCisgIGludCBuID0gYXJnMDsKKyAgLi4uIHVzZSBuIGluc3Rl
YWQgb2YgYXJnMCBoZXJlIC4uLgorfQorCitBQ1RJT05fUChCYXIsIHBhcmFtKSB7CisgIC8vIE1h
a2VzIHN1cmUgdGhlIHR5cGUgb2YgYXJnMSBpcyBjb25zdCBjaGFyKi4KKyAgOjp0ZXN0aW5nOjpT
dGF0aWNBc3NlcnRUeXBlRXE8Y29uc3QgY2hhciosIGFyZzFfdHlwZT4oKTsKKworICAvLyBNYWtl
cyBzdXJlIHBhcmFtIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYm9vbC4KKyAgYm9vbCBmbGFnID0gcGFy
YW07Cit9CitgYGAKK3doZXJlIGBTdGF0aWNBc3NlcnRUeXBlRXFgIGlzIGEgY29tcGlsZS10aW1l
IGFzc2VydGlvbiB3ZSBwbGFuIHRvIGFkZCB0bworR29vZ2xlIFRlc3QgKHRoZSBuYW1lIGlzIGNo
b3NlbiB0byBtYXRjaCBgc3RhdGljX2Fzc2VydGAgaW4gQysrMHgpLgorCisjIyMgVXNpbmcgdGhl
IEFDVElPTiBPYmplY3QncyBUeXBlICMjIworCitJZiB5b3UgYXJlIHdyaXRpbmcgYSBmdW5jdGlv
biB0aGF0IHJldHVybnMgYW4gYEFDVElPTmAgb2JqZWN0LCB5b3UnbGwKK25lZWQgdG8ga25vdyBp
dHMgdHlwZS4gIFRoZSB0eXBlIGRlcGVuZHMgb24gdGhlIG1hY3JvIHVzZWQgdG8gZGVmaW5lCit0
aGUgYWN0aW9uIGFuZCB0aGUgcGFyYW1ldGVyIHR5cGVzLiAgVGhlIHJ1bGUgaXMgcmVsYXRpdmVs
eSBzaW1wbGU6Cit8ICoqR2l2ZW4gRGVmaW5pdGlvbioqIHwgKipFeHByZXNzaW9uKiogfCAqKkhh
cyBUeXBlKiogfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLXw6LS0t
LS0tLS0tLS0tLXwKK3wgYEFDVElPTihGb28pYCAgICAgICAgfCBgRm9vKClgICAgICAgICB8IGBG
b29BY3Rpb25gICB8Cit8IGBBQ1RJT05fUChCYXIsIHBhcmFtKWAgfCBgQmFyKGludF92YWx1ZSlg
IHwgYEJhckFjdGlvblA8aW50PmAgfAorfCBgQUNUSU9OX1AyKEJheiwgcDEsIHAyKWAgfCBgQmF6
KGJvb2xfdmFsdWUsIGludF92YWx1ZSlgIHwgYEJhekFjdGlvblAyPGJvb2wsIGludD5gIHwKK3wg
Li4uICAgICAgICAgICAgICAgICAgfCAuLi4gICAgICAgICAgICB8IC4uLiAgICAgICAgICB8CisK
K05vdGUgdGhhdCB3ZSBoYXZlIHRvIHBpY2sgZGlmZmVyZW50IHN1ZmZpeGVzIChgQWN0aW9uYCwg
YEFjdGlvblBgLAorYEFjdGlvblAyYCwgYW5kIGV0YykgZm9yIGFjdGlvbnMgd2l0aCBkaWZmZXJl
bnQgbnVtYmVycyBvZiBwYXJhbWV0ZXJzLAorb3IgdGhlIGFjdGlvbiBkZWZpbml0aW9ucyBjYW5u
b3QgYmUgb3ZlcmxvYWRlZCBvbiB0aGUgbnVtYmVyIG9mCitwYXJhbWV0ZXJzLgorCisjIyBXaGVu
IHRvIFVzZSAjIworCitXaGlsZSB0aGUgbmV3IG1hY3JvcyBhcmUgdmVyeSBjb252ZW5pZW50LCBw
bGVhc2UgYWxzbyBjb25zaWRlciBvdGhlcgorbWVhbnMgb2YgaW1wbGVtZW50aW5nIGFjdGlvbnMg
KGUuZy4gdmlhIGBBY3Rpb25JbnRlcmZhY2VgIG9yCitgTWFrZVBvbHltb3JwaGljQWN0aW9uKClg
KSwgZXNwZWNpYWxseSBpZiB5b3UgbmVlZCB0byB1c2UgdGhlIGRlZmluZWQKK2FjdGlvbiBhIGxv
dC4gIFdoaWxlIHRoZSBvdGhlciBhcHByb2FjaGVzIHJlcXVpcmUgbW9yZSB3b3JrLCB0aGV5IGdp
dmUKK3lvdSBtb3JlIGNvbnRyb2wgb24gdGhlIHR5cGVzIG9mIHRoZSBtb2NrIGZ1bmN0aW9uIGFy
Z3VtZW50cyBhbmQgdGhlCithY3Rpb24gcGFyYW1ldGVycywgd2hpY2ggaW4gZ2VuZXJhbCBsZWFk
cyB0byBiZXR0ZXIgY29tcGlsZXIgZXJyb3IKK21lc3NhZ2VzIHRoYXQgcGF5IG9mZiBpbiB0aGUg
bG9uZyBydW4uICBUaGV5IGFsc28gYWxsb3cgb3ZlcmxvYWRpbmcKK2FjdGlvbnMgYmFzZWQgb24g
cGFyYW1ldGVyIHR5cGVzLCBhcyBvcHBvc2VkIHRvIGp1c3QgdGhlIG51bWJlciBvZgorcGFyYW1l
dGVycy4KKworIyMgUmVsYXRlZCBXb3JrICMjCisKK0FzIHlvdSBtYXkgaGF2ZSByZWFsaXplZCwg
dGhlIGBBQ1RJT04qYCBtYWNyb3MgcmVzZW1ibGUgY2xvc3VyZXMgKGFsc28KK2tub3duIGFzIGxh
bWJkYSBleHByZXNzaW9ucyBvciBhbm9ueW1vdXMgZnVuY3Rpb25zKS4gIEluZGVlZCwgYm90aCBv
ZgordGhlbSBzZWVrIHRvIGxvd2VyIHRoZSBzeW50YWN0aWMgb3ZlcmhlYWQgZm9yIGRlZmluaW5n
IGEgZnVuY3Rpb24uCisKK0MrKzB4IHdpbGwgc3VwcG9ydCBsYW1iZGFzLCBidXQgdGhleSBhcmUg
bm90IHBhcnQgb2YgQysrIHJpZ2h0IG5vdy4KK1NvbWUgbm9uLXN0YW5kYXJkIGxpYnJhcmllcyAo
bW9zdCBub3RhYmx5IEJMTCBvciBCb29zdCBMYW1iZGEgTGlicmFyeSkKK3RyeSB0byBhbGxldmlh
dGUgdGhpcyBwcm9ibGVtLiAgSG93ZXZlciwgdGhleSBhcmUgbm90IGEgZ29vZCBjaG9pY2UKK2Zv
ciBkZWZpbmluZyBhY3Rpb25zIGFzOgorCisgICogVGhleSBhcmUgbm9uLXN0YW5kYXJkIGFuZCBu
b3Qgd2lkZWx5IGluc3RhbGxlZC4gIEdvb2dsZSBNb2NrIG9ubHkgZGVwZW5kcyBvbiBzdGFuZGFy
ZCBsaWJyYXJpZXMgYW5kIGB0cjE6OnR1cGxlYCwgd2hpY2ggaXMgcGFydCBvZiB0aGUgbmV3IEMr
KyBzdGFuZGFyZCBhbmQgY29tZXMgd2l0aCBnY2MgNCsuICBXZSB3YW50IHRvIGtlZXAgaXQgdGhh
dCB3YXkuCisgICogVGhleSBhcmUgbm90IHRyaXZpYWwgdG8gbGVhcm4uCisgICogVGhleSB3aWxs
IGJlY29tZSBvYnNvbGV0ZSB3aGVuIEMrKzB4J3MgbGFtYmRhIGZlYXR1cmUgaXMgd2lkZWx5IHN1
cHBvcnRlZC4gIFdlIGRvbid0IHdhbnQgdG8gbWFrZSBvdXIgdXNlcnMgdXNlIGEgZHlpbmcgbGli
cmFyeS4KKyAgKiBTaW5jZSB0aGV5IGFyZSBiYXNlZCBvbiBvcGVyYXRvcnMsIHRoZXkgYXJlIHJh
dGhlciBhZCBob2M6IHlvdSBjYW5ub3QgdXNlIHN0YXRlbWVudHMsIGFuZCB5b3UgY2Fubm90IHBh
c3MgdGhlIGxhbWJkYSBhcmd1bWVudHMgdG8gYSBmdW5jdGlvbiwgZm9yIGV4YW1wbGUuCisgICog
VGhleSBoYXZlIHN1YnRsZSBzZW1hbnRpY3MgdGhhdCBlYXNpbHkgY29uZnVzZXMgbmV3IHVzZXJz
LiAgRm9yIGV4YW1wbGUsIGluIGV4cHJlc3Npb24gYF8xKysgKyBmb28rK2AsIGBmb29gIHdpbGwg
YmUgaW5jcmVtZW50ZWQgb25seSBvbmNlIHdoZXJlIHRoZSBleHByZXNzaW9uIGlzIGV2YWx1YXRl
ZCwgd2hpbGUgYF8xYCB3aWxsIGJlIGluY3JlbWVudGVkIGV2ZXJ5IHRpbWUgdGhlIHVubmFtZWQg
ZnVuY3Rpb24gaXMgaW52b2tlZC4gIFRoaXMgaXMgZmFyIGZyb20gaW50dWl0aXZlLgorCitgQUNU
SU9OKmAgYXZvaWQgYWxsIHRoZXNlIHByb2JsZW1zLgorCisjIyBGdXR1cmUgSW1wcm92ZW1lbnRz
ICMjCisKK1RoZXJlIG1heSBiZSBhIG5lZWQgZm9yIGNvbXBvc2luZyBgQUNUSU9OKmAgZGVmaW5p
dGlvbnMgKGkuZS4gaW52b2tpbmcKK2Fub3RoZXIgYEFDVElPTmAgaW5zaWRlIHRoZSBkZWZpbml0
aW9uIG9mIG9uZSBgQUNUSU9OKmApLiAgV2UgYXJlIG5vdAorc3VyZSB3ZSB3YW50IGl0IHlldCwg
YXMgb25lIGNhbiBnZXQgYSBzaW1pbGFyIGVmZmVjdCBieSBwdXR0aW5nCitgQUNUSU9OYCBkZWZp
bml0aW9ucyBpbiBmdW5jdGlvbiB0ZW1wbGF0ZXMgYW5kIGNvbXBvc2luZyB0aGUgZnVuY3Rpb24K
K3RlbXBsYXRlcy4gIFdlJ2xsIHJldmlzaXQgdGhpcyBiYXNlZCBvbiB1c2VyIGZlZWRiYWNrLgor
CitUaGUgcmVhc29uIHdlIGRvbid0IGFsbG93IGBBQ1RJT04qKClgIGluc2lkZSBhIGZ1bmN0aW9u
IGJvZHkgaXMgdGhhdAordGhlIGN1cnJlbnQgQysrIHN0YW5kYXJkIGRvZXNuJ3QgYWxsb3cgZnVu
Y3Rpb24tbG9jYWwgdHlwZXMgdG8gYmUgdXNlZAordG8gaW5zdGFudGlhdGUgdGVtcGxhdGVzLiAg
VGhlIHVwY29taW5nIEMrKzB4IHN0YW5kYXJkIHdpbGwgbGlmdCB0aGlzCityZXN0cmljdGlvbi4g
IE9uY2UgdGhpcyBmZWF0dXJlIGlzIHdpZGVseSBzdXBwb3J0ZWQgYnkgY29tcGlsZXJzLCB3ZQor
Y2FuIHJldmlzaXQgdGhlIGltcGxlbWVudGF0aW9uIGFuZCBhZGQgc3VwcG9ydCBmb3IgdXNpbmcg
YEFDVElPTiooKWAKK2luc2lkZSBhIGZ1bmN0aW9uLgorCitDKysweCB3aWxsIGFsc28gc3VwcG9y
dCBsYW1iZGEgZXhwcmVzc2lvbnMuICBXaGVuIHRoZXkgYmVjb21lCithdmFpbGFibGUsIHdlIG1h
eSB3YW50IHRvIHN1cHBvcnQgdXNpbmcgbGFtYmRhcyBhcyBhY3Rpb25zLgorCisjIE1hY3JvcyBm
b3IgRGVmaW5pbmcgTWF0Y2hlcnMgIworCitPbmNlIHRoZSBtYWNyb3MgZm9yIGRlZmluaW5nIGFj
dGlvbnMgYXJlIGltcGxlbWVudGVkLCB3ZSBwbGFuIHRvIGRvCit0aGUgc2FtZSBmb3IgbWF0Y2hl
cnM6CisKK2BgYAorTUFUQ0hFUihuYW1lKSB7IHN0YXRlbWVudHM7IH0KK2BgYAorCit3aGVyZSB5
b3UgY2FuIHJlZmVyIHRvIHRoZSB2YWx1ZSBiZWluZyBtYXRjaGVkIGFzIGBhcmdgLiAgRm9yIGV4
YW1wbGUsCitnaXZlbjoKKworYGBgCitNQVRDSEVSKElzUG9zaXRpdmUpIHsgcmV0dXJuIGFyZyA+
IDA7IH0KK2BgYAorCit5b3UgY2FuIHVzZSBgSXNQb3NpdGl2ZSgpYCBhcyBhIG1hdGNoZXIgdGhh
dCBtYXRjaGVzIGEgdmFsdWUgaWZmIGl0IGlzCitncmVhdGVyIHRoYW4gMC4KKworV2Ugd2lsbCBh
bHNvIGFkZCBgTUFUQ0hFUl9QYCwgYE1BVENIRVJfUDJgLCBhbmQgZXRjIGZvciBwYXJhbWV0ZXJp
emVkCittYXRjaGVycy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xlbW9jay9kb2NzL0Rldkd1aWRlLm1kIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy9EZXZHdWlkZS5t
ZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mNGJhYjc1Y2E3YjkyMDA4NzFiNzljMTU1ZWRmNGEzZTY2MDlkNDg4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy9EZXZHdWlkZS5tZApAQCAtMCwwICsx
LDEzMiBAQAorCisKK0lmIHlvdSBhcmUgaW50ZXJlc3RlZCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBp
bnRlcm5hbHMgb2YgR29vZ2xlIE1vY2ssCitidWlsZGluZyBmcm9tIHNvdXJjZSwgb3IgY29udHJp
YnV0aW5nIGlkZWFzIG9yIG1vZGlmaWNhdGlvbnMgdG8gdGhlCitwcm9qZWN0LCB0aGVuIHRoaXMg
ZG9jdW1lbnQgaXMgZm9yIHlvdS4KKworIyBJbnRyb2R1Y3Rpb24gIworCitGaXJzdCwgbGV0J3Mg
Z2l2ZSB5b3Ugc29tZSBiYWNrZ3JvdW5kIG9mIHRoZSBwcm9qZWN0LgorCisjIyBMaWNlbnNpbmcg
IyMKKworQWxsIEdvb2dsZSBNb2NrIHNvdXJjZSBhbmQgcHJlLWJ1aWx0IHBhY2thZ2VzIGFyZSBw
cm92aWRlZCB1bmRlciB0aGUgW05ldyBCU0QgTGljZW5zZV0oaHR0cDovL3d3dy5vcGVuc291cmNl
Lm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHApLgorCisjIyBUaGUgR29vZ2xlIE1vY2sgQ29t
bXVuaXR5ICMjCisKK1RoZSBHb29nbGUgTW9jayBjb21tdW5pdHkgZXhpc3RzIHByaW1hcmlseSB0
aHJvdWdoIHRoZSBbZGlzY3Vzc2lvbiBncm91cF0oaHR0cDovL2dyb3Vwcy5nb29nbGUuY29tL2dy
b3VwL2dvb2dsZW1vY2spLCB0aGUKK1tpc3N1ZSB0cmFja2VyXShodHRwczovL2dpdGh1Yi5jb20v
Z29vZ2xlL2dvb2dsZXRlc3QvaXNzdWVzKSBhbmQsIHRvIGEgbGVzc2VyIGV4dGVudCwgdGhlIFtz
b3VyY2UgY29udHJvbCByZXBvc2l0b3J5XSguLi8pLiBZb3UgYXJlIGRlZmluaXRlbHkgZW5jb3Vy
YWdlZCB0byBjb250cmlidXRlIHRvIHRoZQorZGlzY3Vzc2lvbiBhbmQgeW91IGNhbiBhbHNvIGhl
bHAgdXMgdG8ga2VlcCB0aGUgZWZmZWN0aXZlbmVzcyBvZiB0aGUKK2dyb3VwIGhpZ2ggYnkgZm9s
bG93aW5nIGFuZCBwcm9tb3RpbmcgdGhlIGd1aWRlbGluZXMgbGlzdGVkIGhlcmUuCisKKyMjIyBQ
bGVhc2UgQmUgRnJpZW5kbHkgIyMjCisKK1Nob3dpbmcgY291cnRlc3kgYW5kIHJlc3BlY3QgdG8g
b3RoZXJzIGlzIGEgdml0YWwgcGFydCBvZiB0aGUgR29vZ2xlCitjdWx0dXJlLCBhbmQgd2Ugc3Ry
b25nbHkgZW5jb3VyYWdlIGV2ZXJ5b25lIHBhcnRpY2lwYXRpbmcgaW4gR29vZ2xlCitNb2NrIGRl
dmVsb3BtZW50IHRvIGpvaW4gdXMgaW4gYWNjZXB0aW5nIG5vdGhpbmcgbGVzcy4gT2YgY291cnNl
LAorYmVpbmcgY291cnRlb3VzIGlzIG5vdCB0aGUgc2FtZSBhcyBmYWlsaW5nIHRvIGNvbnN0cnVj
dGl2ZWx5IGRpc2FncmVlCit3aXRoIGVhY2ggb3RoZXIsIGJ1dCBpdCBkb2VzIG1lYW4gdGhhdCB3
ZSBzaG91bGQgYmUgcmVzcGVjdGZ1bCBvZiBlYWNoCitvdGhlciB3aGVuIGVudW1lcmF0aW5nIHRo
ZSA0MiB0ZWNobmljYWwgcmVhc29ucyB0aGF0IGEgcGFydGljdWxhcgorcHJvcG9zYWwgbWF5IG5v
dCBiZSB0aGUgYmVzdCBjaG9pY2UuIFRoZXJlJ3MgbmV2ZXIgYSByZWFzb24gdG8gYmUKK2FudGFn
b25pc3RpYyBvciBkaXNtaXNzaXZlIHRvd2FyZCBhbnlvbmUgd2hvIGlzIHNpbmNlcmVseSB0cnlp
bmcgdG8KK2NvbnRyaWJ1dGUgdG8gYSBkaXNjdXNzaW9uLgorCitTdXJlLCBDKysgdGVzdGluZyBp
cyBzZXJpb3VzIGJ1c2luZXNzIGFuZCBhbGwgdGhhdCwgYnV0IGl0J3MgYWxzbworYSBsb3Qgb2Yg
ZnVuLiBMZXQncyBrZWVwIGl0IHRoYXQgd2F5LiBMZXQncyBzdHJpdmUgdG8gYmUgb25lIG9mIHRo
ZQorZnJpZW5kbGllc3QgY29tbXVuaXRpZXMgaW4gYWxsIG9mIG9wZW4gc291cmNlLgorCisjIyMg
V2hlcmUgdG8gRGlzY3VzcyBHb29nbGUgTW9jayAjIyMKKworQXMgYWx3YXlzLCBkaXNjdXNzIEdv
b2dsZSBNb2NrIGluIHRoZSBvZmZpY2lhbCBbR29vZ2xlIEMrKyBNb2NraW5nIEZyYW1ld29yayBk
aXNjdXNzaW9uIGdyb3VwXShodHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXAvZ29vZ2xlbW9j
aykuICBZb3UgZG9uJ3QgaGF2ZSB0byBhY3R1YWxseSBzdWJtaXQKK2NvZGUgaW4gb3JkZXIgdG8g
c2lnbiB1cC4gWW91ciBwYXJ0aWNpcGF0aW9uIGl0c2VsZiBpcyBhIHZhbHVhYmxlCitjb250cmli
dXRpb24uCisKKyMgV29ya2luZyB3aXRoIHRoZSBDb2RlICMKKworSWYgeW91IHdhbnQgdG8gZ2V0
IHlvdXIgaGFuZHMgZGlydHkgd2l0aCB0aGUgY29kZSBpbnNpZGUgR29vZ2xlIE1vY2ssCit0aGlz
IGlzIHRoZSBzZWN0aW9uIGZvciB5b3UuCisKKyMjIENoZWNraW5nIE91dCB0aGUgU291cmNlIGZy
b20gU3VidmVyc2lvbiAjIworCitDaGVja2luZyBvdXQgdGhlIEdvb2dsZSBNb2NrIHNvdXJjZSBp
cyBtb3N0IHVzZWZ1bCBpZiB5b3UgcGxhbiB0bwordHdlYWsgaXQgeW91cnNlbGYuICBZb3UgY2hl
Y2sgb3V0IHRoZSBzb3VyY2UgZm9yIEdvb2dsZSBNb2NrIHVzaW5nIGEKK1tTdWJ2ZXJzaW9uXSho
dHRwOi8vc3VidmVyc2lvbi50aWdyaXMub3JnLykgY2xpZW50IGFzIHlvdSB3b3VsZCBmb3IgYW55
CitvdGhlciBwcm9qZWN0IGhvc3RlZCBvbiBHb29nbGUgQ29kZS4gIFBsZWFzZSBzZWUgdGhlIGlu
c3RydWN0aW9uIG9uCit0aGUgW3NvdXJjZSBjb2RlIGFjY2VzcyBwYWdlXSguLi8pIGZvciBob3cg
dG8gZG8gaXQuCisKKyMjIENvbXBpbGluZyBmcm9tIFNvdXJjZSAjIworCitPbmNlIHlvdSBjaGVj
ayBvdXQgdGhlIGNvZGUsIHlvdSBjYW4gZmluZCBpbnN0cnVjdGlvbnMgb24gaG93IHRvCitjb21w
aWxlIGl0IGluIHRoZSBbUkVBRE1FXSguLi9SRUFETUUubWQpIGZpbGUuCisKKyMjIFRlc3Rpbmcg
IyMKKworQSBtb2NraW5nIGZyYW1ld29yayBpcyBvZiBubyBnb29kIGlmIGl0c2VsZiBpcyBub3Qg
dGhvcm91Z2hseSB0ZXN0ZWQuCitUZXN0cyBzaG91bGQgYmUgd3JpdHRlbiBmb3IgYW55IG5ldyBj
b2RlLCBhbmQgY2hhbmdlcyBzaG91bGQgYmUKK3ZlcmlmaWVkIHRvIG5vdCBicmVhayBleGlzdGlu
ZyB0ZXN0cyBiZWZvcmUgdGhleSBhcmUgc3VibWl0dGVkIGZvcgorcmV2aWV3LiBUbyBwZXJmb3Jt
IHRoZSB0ZXN0cywgZm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgaW4gW1JFQURNRV0oaHR0cDovL2Nv
ZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZW1vY2svc291cmNlL2Jyb3dzZS90cnVuay9SRUFETUUpIGFu
ZAordmVyaWZ5IHRoYXQgdGhlcmUgYXJlIG5vIGZhaWx1cmVzLgorCisjIENvbnRyaWJ1dGluZyBD
b2RlICMKKworV2UgYXJlIGV4Y2l0ZWQgdGhhdCBHb29nbGUgTW9jayBpcyBub3cgb3BlbiBzb3Vy
Y2UsIGFuZCBob3BlIHRvIGdldAorZ3JlYXQgcGF0Y2hlcyBmcm9tIHRoZSBjb21tdW5pdHkuIEJl
Zm9yZSB5b3UgZmlyZSB1cCB5b3VyIGZhdm9yaXRlIElERQorYW5kIGJlZ2luIGhhbW1lcmluZyBh
d2F5IGF0IHRoYXQgbmV3IGZlYXR1cmUsIHRob3VnaCwgcGxlYXNlIHRha2UgdGhlCit0aW1lIHRv
IHJlYWQgdGhpcyBzZWN0aW9uIGFuZCB1bmRlcnN0YW5kIHRoZSBwcm9jZXNzLiBXaGlsZSBpdCBz
ZWVtcworcmlnb3JvdXMsIHdlIHdhbnQgdG8ga2VlcCBhIGhpZ2ggc3RhbmRhcmQgb2YgcXVhbGl0
eSBpbiB0aGUgY29kZQorYmFzZS4KKworIyMgQ29udHJpYnV0b3IgTGljZW5zZSBBZ3JlZW1lbnRz
ICMjCisKK1lvdSBtdXN0IHNpZ24gYSBDb250cmlidXRvciBMaWNlbnNlIEFncmVlbWVudCAoQ0xB
KSBiZWZvcmUgd2UgY2FuCithY2NlcHQgYW55IGNvZGUuICBUaGUgQ0xBIHByb3RlY3RzIHlvdSBh
bmQgdXMuCisKKyAgKiBJZiB5b3UgYXJlIGFuIGluZGl2aWR1YWwgd3JpdGluZyBvcmlnaW5hbCBz
b3VyY2UgY29kZSBhbmQgeW91J3JlIHN1cmUgeW91IG93biB0aGUgaW50ZWxsZWN0dWFsIHByb3Bl
cnR5LCB0aGVuIHlvdSdsbCBuZWVkIHRvIHNpZ24gYW4gW2luZGl2aWR1YWwgQ0xBXShodHRwOi8v
Y29kZS5nb29nbGUuY29tL2xlZ2FsL2luZGl2aWR1YWwtY2xhLXYxLjAuaHRtbCkuCisgICogSWYg
eW91IHdvcmsgZm9yIGEgY29tcGFueSB0aGF0IHdhbnRzIHRvIGFsbG93IHlvdSB0byBjb250cmli
dXRlIHlvdXIgd29yayB0byBHb29nbGUgTW9jaywgdGhlbiB5b3UnbGwgbmVlZCB0byBzaWduIGEg
W2NvcnBvcmF0ZSBDTEFdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vbGVnYWwvY29ycG9yYXRlLWNs
YS12MS4wLmh0bWwpLgorCitGb2xsb3cgZWl0aGVyIG9mIHRoZSB0d28gbGlua3MgYWJvdmUgdG8g
YWNjZXNzIHRoZSBhcHByb3ByaWF0ZSBDTEEgYW5kCitpbnN0cnVjdGlvbnMgZm9yIGhvdyB0byBz
aWduIGFuZCByZXR1cm4gaXQuCisKKyMjIENvZGluZyBTdHlsZSAjIworCitUbyBrZWVwIHRoZSBz
b3VyY2UgY29uc2lzdGVudCwgcmVhZGFibGUsIGRpZmZhYmxlIGFuZCBlYXN5IHRvIG1lcmdlLAor
d2UgdXNlIGEgZmFpcmx5IHJpZ2lkIGNvZGluZyBzdHlsZSwgYXMgZGVmaW5lZCBieSB0aGUgW2dv
b2dsZS1zdHlsZWd1aWRlXShodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL3N0eWxlZ3VpZGUpIHBy
b2plY3QuICBBbGwgcGF0Y2hlcyB3aWxsIGJlIGV4cGVjdGVkCit0byBjb25mb3JtIHRvIHRoZSBz
dHlsZSBvdXRsaW5lZCBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9zdHlsZWd1aWRl
L2Jsb2IvZ2gtcGFnZXMvY3BwZ3VpZGUueG1sKS4KKworIyMgU3VibWl0dGluZyBQYXRjaGVzICMj
CisKK1BsZWFzZSBkbyBzdWJtaXQgY29kZS4gSGVyZSdzIHdoYXQgeW91IG5lZWQgdG8gZG86CisK
KyAgMS4gTm9ybWFsbHkgeW91IHNob3VsZCBtYWtlIHlvdXIgY2hhbmdlIGFnYWluc3QgdGhlIFNW
TiB0cnVuayBpbnN0ZWFkIG9mIGEgYnJhbmNoIG9yIGEgdGFnLCBhcyB0aGUgbGF0dGVyIHR3byBh
cmUgZm9yIHJlbGVhc2UgY29udHJvbCBhbmQgc2hvdWxkIGJlIHRyZWF0ZWQgbW9zdGx5IGFzIHJl
YWQtb25seS4KKyAgMS4gRGVjaWRlIHdoaWNoIGNvZGUgeW91IHdhbnQgdG8gc3VibWl0LiBBIHN1
Ym1pc3Npb24gc2hvdWxkIGJlIGEgc2V0IG9mIGNoYW5nZXMgdGhhdCBhZGRyZXNzZXMgb25lIGlz
c3VlIGluIHRoZSBbR29vZ2xlIE1vY2sgaXNzdWUgdHJhY2tlcl0oaHR0cDovL2NvZGUuZ29vZ2xl
LmNvbS9wL2dvb2dsZW1vY2svaXNzdWVzL2xpc3QpLiBQbGVhc2UgZG9uJ3QgbWl4IG1vcmUgdGhh
biBvbmUgbG9naWNhbCBjaGFuZ2UgcGVyIHN1Ym1pdHRhbCwgYmVjYXVzZSBpdCBtYWtlcyB0aGUg
aGlzdG9yeSBoYXJkIHRvIGZvbGxvdy4gSWYgeW91IHdhbnQgdG8gbWFrZSBhIGNoYW5nZSB0aGF0
IGRvZXNuJ3QgaGF2ZSBhIGNvcnJlc3BvbmRpbmcgaXNzdWUgaW4gdGhlIGlzc3VlIHRyYWNrZXIs
IHBsZWFzZSBjcmVhdGUgb25lLgorICAxLiBBbHNvLCBjb29yZGluYXRlIHdpdGggdGVhbSBtZW1i
ZXJzIHRoYXQgYXJlIGxpc3RlZCBvbiB0aGUgaXNzdWUgaW4gcXVlc3Rpb24uIFRoaXMgZW5zdXJl
cyB0aGF0IHdvcmsgaXNuJ3QgYmVpbmcgZHVwbGljYXRlZCBhbmQgY29tbXVuaWNhdGluZyB5b3Vy
IHBsYW4gZWFybHkgYWxzbyBnZW5lcmFsbHkgbGVhZHMgdG8gYmV0dGVyIHBhdGNoZXMuCisgIDEu
IEVuc3VyZSB0aGF0IHlvdXIgY29kZSBhZGhlcmVzIHRvIHRoZSBbR29vZ2xlIE1vY2sgc291cmNl
IGNvZGUgc3R5bGVdKCNDb2RpbmdfU3R5bGUubWQpLgorICAxLiBFbnN1cmUgdGhhdCB0aGVyZSBh
cmUgdW5pdCB0ZXN0cyBmb3IgeW91ciBjb2RlLgorICAxLiBTaWduIGEgQ29udHJpYnV0b3IgTGlj
ZW5zZSBBZ3JlZW1lbnQuCisgIDEuIENyZWF0ZSBhIHBhdGNoIGZpbGUgdXNpbmcgYHN2biBkaWZm
YC4KKyAgMS4gV2UgdXNlIFtSaWV0dmVsZF0oaHR0cDovL2NvZGVyZXZpZXcuYXBwc3BvdC5jb20v
KSB0byBkbyB3ZWItYmFzZWQgY29kZSByZXZpZXdzLiAgWW91IGNhbiByZWFkIGFib3V0IHRoZSB0
b29sIFtoZXJlXShodHRwczovL2dpdGh1Yi5jb20vcmlldHZlbGQtY29kZXJldmlldy9yaWV0dmVs
ZC93aWtpKS4gIFdoZW4geW91IGFyZSByZWFkeSwgdXBsb2FkIHlvdXIgcGF0Y2ggdmlhIFJpZXR2
ZWxkIGFuZCBub3RpZnkgYGdvb2dsZW1vY2tAZ29vZ2xlZ3JvdXBzLmNvbWAgdG8gcmV2aWV3IGl0
LiAgVGhlcmUgYXJlIHNldmVyYWwgd2F5cyB0byB1cGxvYWQgdGhlIHBhdGNoLiAgV2UgcmVjb21t
ZW5kIHVzaW5nIHRoZSBbdXBsb2FkXF9nbW9jay5weV0oLi4vc2NyaXB0cy91cGxvYWRfZ21vY2su
cHkpIHNjcmlwdCwgd2hpY2ggeW91IGNhbiBmaW5kIGluIHRoZSBgc2NyaXB0cy9gIGZvbGRlciBp
biB0aGUgU1ZOIHRydW5rLgorCisjIyBHb29nbGUgTW9jayBDb21taXR0ZXJzICMjCisKK1RoZSBj
dXJyZW50IG1lbWJlcnMgb2YgdGhlIEdvb2dsZSBNb2NrIGVuZ2luZWVyaW5nIHRlYW0gYXJlIHRo
ZSBvbmx5Citjb21taXR0ZXJzIGF0IHByZXNlbnQuIEluIHRoZSBncmVhdCB0cmFkaXRpb24gb2Yg
ZWF0aW5nIG9uZSdzIG93bgorZG9nZm9vZCwgd2Ugd2lsbCBiZSByZXF1aXJpbmcgZWFjaCBuZXcg
R29vZ2xlIE1vY2sgZW5naW5lZXJpbmcgdGVhbQorbWVtYmVyIHRvIGVhcm4gdGhlIHJpZ2h0IHRv
IGJlY29tZSBhIGNvbW1pdHRlciBieSBmb2xsb3dpbmcgdGhlCitwcm9jZWR1cmVzIGluIHRoaXMg
ZG9jdW1lbnQsIHdyaXRpbmcgY29uc2lzdGVudGx5IGdyZWF0IGNvZGUsIGFuZAorZGVtb25zdHJh
dGluZyByZXBlYXRlZGx5IHRoYXQgaGUgb3Igc2hlIHRydWx5IGdldHMgdGhlIHplbiBvZiBHb29n
bGUKK01vY2suCisKKyMgUmVsZWFzZSBQcm9jZXNzICMKKworV2UgZm9sbG93IHRoZSB0eXBpY2Fs
IHJlbGVhc2UgcHJvY2VzcyBmb3IgU3VidmVyc2lvbi1iYXNlZCBwcm9qZWN0czoKKworICAxLiBB
IHJlbGVhc2UgYnJhbmNoIG5hbWVkIGByZWxlYXNlLVguWWAgaXMgY3JlYXRlZC4KKyAgMS4gQnVn
cyBhcmUgZml4ZWQgYW5kIGZlYXR1cmVzIGFyZSBhZGRlZCBpbiB0cnVuazsgdGhvc2UgaW5kaXZp
ZHVhbCBwYXRjaGVzIGFyZSBtZXJnZWQgaW50byB0aGUgcmVsZWFzZSBicmFuY2ggdW50aWwgaXQn
cyBzdGFibGUuCisgIDEuIEFuIGluZGl2aWR1YWwgcG9pbnQgcmVsZWFzZSAodGhlIGBaYCBpbiBg
WC5ZLlpgKSBpcyBtYWRlIGJ5IGNyZWF0aW5nIGEgdGFnIGZyb20gdGhlIGJyYW5jaC4KKyAgMS4g
UmVwZWF0IHN0ZXBzIDIgYW5kIDMgdGhyb3VnaG91dCBvbmUgcmVsZWFzZSBjeWNsZSAoYXMgZGV0
ZXJtaW5lZCBieSBmZWF0dXJlcyBvciB0aW1lKS4KKyAgMS4gR28gYmFjayB0byBzdGVwIDEgdG8g
Y3JlYXRlIGFub3RoZXIgcmVsZWFzZSBicmFuY2ggYW5kIHNvIG9uLgorCisKKy0tLQorCitUaGlz
IHBhZ2UgaXMgYmFzZWQgb24gdGhlIFtNYWtpbmcgR1dUIEJldHRlcl0oaHR0cDovL2NvZGUuZ29v
Z2xlLmNvbS93ZWJ0b29sa2l0L21ha2luZ2d3dGJldHRlci5odG1sKSBndWlkZSBmcm9tIHRoZSBb
R29vZ2xlIFdlYiBUb29sa2l0XShodHRwOi8vY29kZS5nb29nbGUuY29tL3dlYnRvb2xraXQvKSBw
cm9qZWN0LiAgRXhjZXB0IGFzIG90aGVyd2lzZSBbbm90ZWRdKGh0dHA6Ly9jb2RlLmdvb2dsZS5j
b20vcG9saWNpZXMuaHRtbCNyZXN0cmljdGlvbnMpLCB0aGUgY29udGVudCBvZiB0aGlzIHBhZ2Ug
aXMgbGljZW5zZWQgdW5kZXIgdGhlIFtDcmVhdGl2ZSBDb21tb25zIEF0dHJpYnV0aW9uIDIuNSBM
aWNlbnNlXShodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS8yLjUvKS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvRG9jdW1lbnRhdGlvbi5tZCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2Nr
L2RvY3MvRG9jdW1lbnRhdGlvbi5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDQxNTFlZTllZDdlYzQzYmQxMTRi
ZDFjOWNkMGQzNDlkYmM0MzFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy9E
b2N1bWVudGF0aW9uLm1kCkBAIC0wLDAgKzEsMTIgQEAKK1RoaXMgcGFnZSBsaXN0cyBhbGwgZG9j
dW1lbnRhdGlvbiB3aWtpIHBhZ2VzIGZvciBHb29nbGUgTW9jayAqKih0aGUgU1ZOIHRydW5rIHZl
cnNpb24pKioKKy0gKippZiB5b3UgdXNlIGEgcmVsZWFzZWQgdmVyc2lvbiBvZiBHb29nbGUgTW9j
aywgcGxlYXNlIHJlYWQgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoYXQgc3BlY2lmaWMgdmVyc2lv
biBpbnN0ZWFkLioqCisKKyAgKiBbRm9yRHVtbWllc10oRm9yRHVtbWllcy5tZCkgLS0gc3RhcnQg
aGVyZSBpZiB5b3UgYXJlIG5ldyB0byBHb29nbGUgTW9jay4KKyAgKiBbQ2hlYXRTaGVldF0oQ2hl
YXRTaGVldC5tZCkgLS0gYSBxdWljayByZWZlcmVuY2UuCisgICogW0Nvb2tCb29rXShDb29rQm9v
ay5tZCkgLS0gcmVjaXBlcyBmb3IgZG9pbmcgdmFyaW91cyB0YXNrcyB1c2luZyBHb29nbGUgTW9j
ay4KKyAgKiBbRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zXShGcmVxdWVudGx5QXNrZWRRdWVzdGlv
bnMubWQpIC0tIGNoZWNrIGhlcmUgYmVmb3JlIGFza2luZyBhIHF1ZXN0aW9uIG9uIHRoZSBtYWls
aW5nIGxpc3QuCisKK1RvIGNvbnRyaWJ1dGUgY29kZSB0byBHb29nbGUgTW9jaywgcmVhZDoKKwor
ICAqIFtEZXZHdWlkZV0oRGV2R3VpZGUubWQpIC0tIHJlYWQgdGhpcyBfYmVmb3JlXyB3cml0aW5n
IHlvdXIgZmlyc3QgcGF0Y2guCisgICogW1B1bXAgTWFudWFsXSguLi9nb29nbGV0ZXN0L2RvY3Mv
UHVtcE1hbnVhbC5tZCkgLS0gaG93IHdlIGdlbmVyYXRlIHNvbWUgb2YgR29vZ2xlIE1vY2sncyBz
b3VyY2UgZmlsZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL0ZvckR1bW1pZXMubWQg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xlbW9jay9kb2NzL0ZvckR1bW1pZXMubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGRhNGNiZTI3Yjhk
MTQxYWEzMDgzMzRiYTY1MzJkNTMxODJlNzRiMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVt
b2NrL2RvY3MvRm9yRHVtbWllcy5tZApAQCAtMCwwICsxLDQzOSBAQAorCisKKygqKk5vdGU6Kiog
SWYgeW91IGdldCBjb21waWxlciBlcnJvcnMgdGhhdCB5b3UgZG9uJ3QgdW5kZXJzdGFuZCwgYmUg
c3VyZSB0byBjb25zdWx0IFtHb29nbGUgTW9jayBEb2N0b3JdKEZyZXF1ZW50bHlBc2tlZFF1ZXN0
aW9ucy5tZCNob3ctYW0taS1zdXBwb3NlZC10by1tYWtlLXNlbnNlLW9mLXRoZXNlLWhvcnJpYmxl
LXRlbXBsYXRlLWVycm9ycykuKQorCisjIFdoYXQgSXMgR29vZ2xlIEMrKyBNb2NraW5nIEZyYW1l
d29yaz8gIworV2hlbiB5b3Ugd3JpdGUgYSBwcm90b3R5cGUgb3IgdGVzdCwgb2Z0ZW4gaXQncyBu
b3QgZmVhc2libGUgb3Igd2lzZSB0byByZWx5IG9uIHJlYWwgb2JqZWN0cyBlbnRpcmVseS4gQSAq
Km1vY2sgb2JqZWN0KiogaW1wbGVtZW50cyB0aGUgc2FtZSBpbnRlcmZhY2UgYXMgYSByZWFsIG9i
amVjdCAoc28gaXQgY2FuIGJlIHVzZWQgYXMgb25lKSwgYnV0IGxldHMgeW91IHNwZWNpZnkgYXQg
cnVuIHRpbWUgaG93IGl0IHdpbGwgYmUgdXNlZCBhbmQgd2hhdCBpdCBzaG91bGQgZG8gKHdoaWNo
IG1ldGhvZHMgd2lsbCBiZSBjYWxsZWQ/IGluIHdoaWNoIG9yZGVyPyBob3cgbWFueSB0aW1lcz8g
d2l0aCB3aGF0IGFyZ3VtZW50cz8gd2hhdCB3aWxsIHRoZXkgcmV0dXJuPyBldGMpLgorCisqKk5v
dGU6KiogSXQgaXMgZWFzeSB0byBjb25mdXNlIHRoZSB0ZXJtIF9mYWtlIG9iamVjdHNfIHdpdGgg
bW9jayBvYmplY3RzLiBGYWtlcyBhbmQgbW9ja3MgYWN0dWFsbHkgbWVhbiB2ZXJ5IGRpZmZlcmVu
dCB0aGluZ3MgaW4gdGhlIFRlc3QtRHJpdmVuIERldmVsb3BtZW50IChUREQpIGNvbW11bml0eToK
KworICAqICoqRmFrZSoqIG9iamVjdHMgaGF2ZSB3b3JraW5nIGltcGxlbWVudGF0aW9ucywgYnV0
IHVzdWFsbHkgdGFrZSBzb21lIHNob3J0Y3V0IChwZXJoYXBzIHRvIG1ha2UgdGhlIG9wZXJhdGlv
bnMgbGVzcyBleHBlbnNpdmUpLCB3aGljaCBtYWtlcyB0aGVtIG5vdCBzdWl0YWJsZSBmb3IgcHJv
ZHVjdGlvbi4gQW4gaW4tbWVtb3J5IGZpbGUgc3lzdGVtIHdvdWxkIGJlIGFuIGV4YW1wbGUgb2Yg
YSBmYWtlLgorICAqICoqTW9ja3MqKiBhcmUgb2JqZWN0cyBwcmUtcHJvZ3JhbW1lZCB3aXRoIF9l
eHBlY3RhdGlvbnNfLCB3aGljaCBmb3JtIGEgc3BlY2lmaWNhdGlvbiBvZiB0aGUgY2FsbHMgdGhl
eSBhcmUgZXhwZWN0ZWQgdG8gcmVjZWl2ZS4KKworSWYgYWxsIHRoaXMgc2VlbXMgdG9vIGFic3Ry
YWN0IGZvciB5b3UsIGRvbid0IHdvcnJ5IC0gdGhlIG1vc3QgaW1wb3J0YW50IHRoaW5nIHRvIHJl
bWVtYmVyIGlzIHRoYXQgYSBtb2NrIGFsbG93cyB5b3UgdG8gY2hlY2sgdGhlIF9pbnRlcmFjdGlv
bl8gYmV0d2VlbiBpdHNlbGYgYW5kIGNvZGUgdGhhdCB1c2VzIGl0LiBUaGUgZGlmZmVyZW5jZSBi
ZXR3ZWVuIGZha2VzIGFuZCBtb2NrcyB3aWxsIGJlY29tZSBtdWNoIGNsZWFyZXIgb25jZSB5b3Ug
c3RhcnQgdG8gdXNlIG1vY2tzLgorCisqKkdvb2dsZSBDKysgTW9ja2luZyBGcmFtZXdvcmsqKiAo
b3IgKipHb29nbGUgTW9jayoqIGZvciBzaG9ydCkgaXMgYSBsaWJyYXJ5IChzb21ldGltZXMgd2Ug
YWxzbyBjYWxsIGl0IGEgImZyYW1ld29yayIgdG8gbWFrZSBpdCBzb3VuZCBjb29sKSBmb3IgY3Jl
YXRpbmcgbW9jayBjbGFzc2VzIGFuZCB1c2luZyB0aGVtLiBJdCBkb2VzIHRvIEMrKyB3aGF0IFtq
TW9ja10oaHR0cDovL3d3dy5qbW9jay5vcmcvKSBhbmQgW0Vhc3lNb2NrXShodHRwOi8vd3d3LmVh
c3ltb2NrLm9yZy8pIGRvIHRvIEphdmEuCisKK1VzaW5nIEdvb2dsZSBNb2NrIGludm9sdmVzIHRo
cmVlIGJhc2ljIHN0ZXBzOgorCisgIDEuIFVzZSBzb21lIHNpbXBsZSBtYWNyb3MgdG8gZGVzY3Jp
YmUgdGhlIGludGVyZmFjZSB5b3Ugd2FudCB0byBtb2NrLCBhbmQgdGhleSB3aWxsIGV4cGFuZCB0
byB0aGUgaW1wbGVtZW50YXRpb24gb2YgeW91ciBtb2NrIGNsYXNzOworICAxLiBDcmVhdGUgc29t
ZSBtb2NrIG9iamVjdHMgYW5kIHNwZWNpZnkgaXRzIGV4cGVjdGF0aW9ucyBhbmQgYmVoYXZpb3Ig
dXNpbmcgYW4gaW50dWl0aXZlIHN5bnRheDsKKyAgMS4gRXhlcmNpc2UgY29kZSB0aGF0IHVzZXMg
dGhlIG1vY2sgb2JqZWN0cy4gR29vZ2xlIE1vY2sgd2lsbCBjYXRjaCBhbnkgdmlvbGF0aW9uIG9m
IHRoZSBleHBlY3RhdGlvbnMgYXMgc29vbiBhcyBpdCBhcmlzZXMuCisKKyMgV2h5IEdvb2dsZSBN
b2NrPyAjCitXaGlsZSBtb2NrIG9iamVjdHMgaGVscCB5b3UgcmVtb3ZlIHVubmVjZXNzYXJ5IGRl
cGVuZGVuY2llcyBpbiB0ZXN0cyBhbmQgbWFrZSB0aGVtIGZhc3QgYW5kIHJlbGlhYmxlLCB1c2lu
ZyBtb2NrcyBtYW51YWxseSBpbiBDKysgaXMgX2hhcmRfOgorCisgICogU29tZW9uZSBoYXMgdG8g
aW1wbGVtZW50IHRoZSBtb2Nrcy4gVGhlIGpvYiBpcyB1c3VhbGx5IHRlZGlvdXMgYW5kIGVycm9y
LXByb25lLiBObyB3b25kZXIgcGVvcGxlIGdvIGdyZWF0IGRpc3RhbmNlIHRvIGF2b2lkIGl0Lgor
ICAqIFRoZSBxdWFsaXR5IG9mIHRob3NlIG1hbnVhbGx5IHdyaXR0ZW4gbW9ja3MgaXMgYSBiaXQs
IHVoLCB1bnByZWRpY3RhYmxlLiBZb3UgbWF5IHNlZSBzb21lIHJlYWxseSBwb2xpc2hlZCBvbmVz
LCBidXQgeW91IG1heSBhbHNvIHNlZSBzb21lIHRoYXQgd2VyZSBoYWNrZWQgdXAgaW4gYSBodXJy
eSBhbmQgaGF2ZSBhbGwgc29ydHMgb2YgYWQgaG9jIHJlc3RyaWN0aW9ucy4KKyAgKiBUaGUga25v
d2xlZGdlIHlvdSBnYWluZWQgZnJvbSB1c2luZyBvbmUgbW9jayBkb2Vzbid0IHRyYW5zZmVyIHRv
IHRoZSBuZXh0LgorCitJbiBjb250cmFzdCwgSmF2YSBhbmQgUHl0aG9uIHByb2dyYW1tZXJzIGhh
dmUgc29tZSBmaW5lIG1vY2sgZnJhbWV3b3Jrcywgd2hpY2ggYXV0b21hdGUgdGhlIGNyZWF0aW9u
IG9mIG1vY2tzLiBBcyBhIHJlc3VsdCwgbW9ja2luZyBpcyBhIHByb3ZlbiBlZmZlY3RpdmUgdGVj
aG5pcXVlIGFuZCB3aWRlbHkgYWRvcHRlZCBwcmFjdGljZSBpbiB0aG9zZSBjb21tdW5pdGllcy4g
SGF2aW5nIHRoZSByaWdodCB0b29sIGFic29sdXRlbHkgbWFrZXMgdGhlIGRpZmZlcmVuY2UuCisK
K0dvb2dsZSBNb2NrIHdhcyBidWlsdCB0byBoZWxwIEMrKyBwcm9ncmFtbWVycy4gSXQgd2FzIGlu
c3BpcmVkIGJ5IFtqTW9ja10oaHR0cDovL3d3dy5qbW9jay5vcmcvKSBhbmQgW0Vhc3lNb2NrXSho
dHRwOi8vd3d3LmVhc3ltb2NrLm9yZy8pLCBidXQgZGVzaWduZWQgd2l0aCBDKysncyBzcGVjaWZp
Y3MgaW4gbWluZC4gSXQgaXMgeW91ciBmcmllbmQgaWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgcHJv
YmxlbXMgaXMgYm90aGVyaW5nIHlvdToKKworICAqIFlvdSBhcmUgc3R1Y2sgd2l0aCBhIHN1Yi1v
cHRpbWFsIGRlc2lnbiBhbmQgd2lzaCB5b3UgaGFkIGRvbmUgbW9yZSBwcm90b3R5cGluZyBiZWZv
cmUgaXQgd2FzIHRvbyBsYXRlLCBidXQgcHJvdG90eXBpbmcgaW4gQysrIGlzIGJ5IG5vIG1lYW5z
ICJyYXBpZCIuCisgICogWW91ciB0ZXN0cyBhcmUgc2xvdyBhcyB0aGV5IGRlcGVuZCBvbiB0b28g
bWFueSBsaWJyYXJpZXMgb3IgdXNlIGV4cGVuc2l2ZSByZXNvdXJjZXMgKGUuZy4gYSBkYXRhYmFz
ZSkuCisgICogWW91ciB0ZXN0cyBhcmUgYnJpdHRsZSBhcyBzb21lIHJlc291cmNlcyB0aGV5IHVz
ZSBhcmUgdW5yZWxpYWJsZSAoZS5nLiB0aGUgbmV0d29yaykuCisgICogWW91IHdhbnQgdG8gdGVz
dCBob3cgeW91ciBjb2RlIGhhbmRsZXMgYSBmYWlsdXJlIChlLmcuIGEgZmlsZSBjaGVja3N1bSBl
cnJvciksIGJ1dCBpdCdzIG5vdCBlYXN5IHRvIGNhdXNlIG9uZS4KKyAgKiBZb3UgbmVlZCB0byBt
YWtlIHN1cmUgdGhhdCB5b3VyIG1vZHVsZSBpbnRlcmFjdHMgd2l0aCBvdGhlciBtb2R1bGVzIGlu
IHRoZSByaWdodCB3YXksIGJ1dCBpdCdzIGhhcmQgdG8gb2JzZXJ2ZSB0aGUgaW50ZXJhY3Rpb247
IHRoZXJlZm9yZSB5b3UgcmVzb3J0IHRvIG9ic2VydmluZyB0aGUgc2lkZSBlZmZlY3RzIGF0IHRo
ZSBlbmQgb2YgdGhlIGFjdGlvbiwgd2hpY2ggaXMgYXdrd2FyZCBhdCBiZXN0LgorICAqIFlvdSB3
YW50IHRvICJtb2NrIG91dCIgeW91ciBkZXBlbmRlbmNpZXMsIGV4Y2VwdCB0aGF0IHRoZXkgZG9u
J3QgaGF2ZSBtb2NrIGltcGxlbWVudGF0aW9ucyB5ZXQ7IGFuZCwgZnJhbmtseSwgeW91IGFyZW4n
dCB0aHJpbGxlZCBieSBzb21lIG9mIHRob3NlIGhhbmQtd3JpdHRlbiBtb2Nrcy4KKworV2UgZW5j
b3VyYWdlIHlvdSB0byB1c2UgR29vZ2xlIE1vY2sgYXM6CisKKyAgKiBhIF9kZXNpZ25fIHRvb2ws
IGZvciBpdCBsZXRzIHlvdSBleHBlcmltZW50IHdpdGggeW91ciBpbnRlcmZhY2UgZGVzaWduIGVh
cmx5IGFuZCBvZnRlbi4gTW9yZSBpdGVyYXRpb25zIGxlYWQgdG8gYmV0dGVyIGRlc2lnbnMhCisg
ICogYSBfdGVzdGluZ18gdG9vbCB0byBjdXQgeW91ciB0ZXN0cycgb3V0Ym91bmQgZGVwZW5kZW5j
aWVzIGFuZCBwcm9iZSB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB5b3VyIG1vZHVsZSBhbmQgaXRz
IGNvbGxhYm9yYXRvcnMuCisKKyMgR2V0dGluZyBTdGFydGVkICMKK1VzaW5nIEdvb2dsZSBNb2Nr
IGlzIGVhc3khIEluc2lkZSB5b3VyIEMrKyBzb3VyY2UgZmlsZSwganVzdCBgI2luY2x1ZGVgIGAi
Z3Rlc3QvZ3Rlc3QuaCJgIGFuZCBgImdtb2NrL2dtb2NrLmgiYCwgYW5kIHlvdSBhcmUgcmVhZHkg
dG8gZ28uCisKKyMgQSBDYXNlIGZvciBNb2NrIFR1cnRsZXMgIworTGV0J3MgbG9vayBhdCBhbiBl
eGFtcGxlLiBTdXBwb3NlIHlvdSBhcmUgZGV2ZWxvcGluZyBhIGdyYXBoaWNzIHByb2dyYW0gdGhh
dCByZWxpZXMgb24gYSBMT0dPLWxpa2UgQVBJIGZvciBkcmF3aW5nLiBIb3cgd291bGQgeW91IHRl
c3QgdGhhdCBpdCBkb2VzIHRoZSByaWdodCB0aGluZz8gV2VsbCwgeW91IGNhbiBydW4gaXQgYW5k
IGNvbXBhcmUgdGhlIHNjcmVlbiB3aXRoIGEgZ29sZGVuIHNjcmVlbiBzbmFwc2hvdCwgYnV0IGxl
dCdzIGFkbWl0IGl0OiB0ZXN0cyBsaWtlIHRoaXMgYXJlIGV4cGVuc2l2ZSB0byBydW4gYW5kIGZy
YWdpbGUgKFdoYXQgaWYgeW91IGp1c3QgdXBncmFkZWQgdG8gYSBzaGlueSBuZXcgZ3JhcGhpY3Mg
Y2FyZCB0aGF0IGhhcyBiZXR0ZXIgYW50aS1hbGlhc2luZz8gU3VkZGVubHkgeW91IGhhdmUgdG8g
dXBkYXRlIGFsbCB5b3VyIGdvbGRlbiBpbWFnZXMuKS4gSXQgd291bGQgYmUgdG9vIHBhaW5mdWwg
aWYgYWxsIHlvdXIgdGVzdHMgYXJlIGxpa2UgdGhpcy4gRm9ydHVuYXRlbHksIHlvdSBsZWFybmVk
IGFib3V0IERlcGVuZGVuY3kgSW5qZWN0aW9uIGFuZCBrbm93IHRoZSByaWdodCB0aGluZyB0byBk
bzogaW5zdGVhZCBvZiBoYXZpbmcgeW91ciBhcHBsaWNhdGlvbiB0YWxrIHRvIHRoZSBkcmF3aW5n
IEFQSSBkaXJlY3RseSwgd3JhcCB0aGUgQVBJIGluIGFuIGludGVyZmFjZSAoc2F5LCBgVHVydGxl
YCkgYW5kIGNvZGUgdG8gdGhhdCBpbnRlcmZhY2U6CisKK2BgYAorY2xhc3MgVHVydGxlIHsKKyAg
Li4uCisgIHZpcnR1YWwgflR1cnRsZSgpIHt9CisgIHZpcnR1YWwgdm9pZCBQZW5VcCgpID0gMDsK
KyAgdmlydHVhbCB2b2lkIFBlbkRvd24oKSA9IDA7CisgIHZpcnR1YWwgdm9pZCBGb3J3YXJkKGlu
dCBkaXN0YW5jZSkgPSAwOworICB2aXJ0dWFsIHZvaWQgVHVybihpbnQgZGVncmVlcykgPSAwOwor
ICB2aXJ0dWFsIHZvaWQgR29UbyhpbnQgeCwgaW50IHkpID0gMDsKKyAgdmlydHVhbCBpbnQgR2V0
WCgpIGNvbnN0ID0gMDsKKyAgdmlydHVhbCBpbnQgR2V0WSgpIGNvbnN0ID0gMDsKK307CitgYGAK
KworKE5vdGUgdGhhdCB0aGUgZGVzdHJ1Y3RvciBvZiBgVHVydGxlYCAqKm11c3QqKiBiZSB2aXJ0
dWFsLCBhcyBpcyB0aGUgY2FzZSBmb3IgKiphbGwqKiBjbGFzc2VzIHlvdSBpbnRlbmQgdG8gaW5o
ZXJpdCBmcm9tIC0gb3RoZXJ3aXNlIHRoZSBkZXN0cnVjdG9yIG9mIHRoZSBkZXJpdmVkIGNsYXNz
IHdpbGwgbm90IGJlIGNhbGxlZCB3aGVuIHlvdSBkZWxldGUgYW4gb2JqZWN0IHRocm91Z2ggYSBi
YXNlIHBvaW50ZXIsIGFuZCB5b3UnbGwgZ2V0IGNvcnJ1cHRlZCBwcm9ncmFtIHN0YXRlcyBsaWtl
IG1lbW9yeSBsZWFrcy4pCisKK1lvdSBjYW4gY29udHJvbCB3aGV0aGVyIHRoZSB0dXJ0bGUncyBt
b3ZlbWVudCB3aWxsIGxlYXZlIGEgdHJhY2UgdXNpbmcgYFBlblVwKClgIGFuZCBgUGVuRG93bigp
YCwgYW5kIGNvbnRyb2wgaXRzIG1vdmVtZW50IHVzaW5nIGBGb3J3YXJkKClgLCBgVHVybigpYCwg
YW5kIGBHb1RvKClgLiBGaW5hbGx5LCBgR2V0WCgpYCBhbmQgYEdldFkoKWAgdGVsbCB5b3UgdGhl
IGN1cnJlbnQgcG9zaXRpb24gb2YgdGhlIHR1cnRsZS4KKworWW91ciBwcm9ncmFtIHdpbGwgbm9y
bWFsbHkgdXNlIGEgcmVhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGludGVyZmFjZS4gSW4gdGVz
dHMsIHlvdSBjYW4gdXNlIGEgbW9jayBpbXBsZW1lbnRhdGlvbiBpbnN0ZWFkLiBUaGlzIGFsbG93
cyB5b3UgdG8gZWFzaWx5IGNoZWNrIHdoYXQgZHJhd2luZyBwcmltaXRpdmVzIHlvdXIgcHJvZ3Jh
bSBpcyBjYWxsaW5nLCB3aXRoIHdoYXQgYXJndW1lbnRzLCBhbmQgaW4gd2hpY2ggb3JkZXIuIFRl
c3RzIHdyaXR0ZW4gdGhpcyB3YXkgYXJlIG11Y2ggbW9yZSByb2J1c3QgKHRoZXkgd29uJ3QgYnJl
YWsgYmVjYXVzZSB5b3VyIG5ldyBtYWNoaW5lIGRvZXMgYW50aS1hbGlhc2luZyBkaWZmZXJlbnRs
eSksIGVhc2llciB0byByZWFkIGFuZCBtYWludGFpbiAodGhlIGludGVudCBvZiBhIHRlc3QgaXMg
ZXhwcmVzc2VkIGluIHRoZSBjb2RlLCBub3QgaW4gc29tZSBiaW5hcnkgaW1hZ2VzKSwgYW5kIHJ1
biBfbXVjaCwgbXVjaCBmYXN0ZXJfLgorCisjIFdyaXRpbmcgdGhlIE1vY2sgQ2xhc3MgIworSWYg
eW91IGFyZSBsdWNreSwgdGhlIG1vY2tzIHlvdSBuZWVkIHRvIHVzZSBoYXZlIGFscmVhZHkgYmVl
biBpbXBsZW1lbnRlZCBieSBzb21lIG5pY2UgcGVvcGxlLiBJZiwgaG93ZXZlciwgeW91IGZpbmQg
eW91cnNlbGYgaW4gdGhlIHBvc2l0aW9uIHRvIHdyaXRlIGEgbW9jayBjbGFzcywgcmVsYXggLSBH
b29nbGUgTW9jayB0dXJucyB0aGlzIHRhc2sgaW50byBhIGZ1biBnYW1lISAoV2VsbCwgYWxtb3N0
LikKKworIyMgSG93IHRvIERlZmluZSBJdCAjIworVXNpbmcgdGhlIGBUdXJ0bGVgIGludGVyZmFj
ZSBhcyBleGFtcGxlLCBoZXJlIGFyZSB0aGUgc2ltcGxlIHN0ZXBzIHlvdSBuZWVkIHRvIGZvbGxv
dzoKKworICAxLiBEZXJpdmUgYSBjbGFzcyBgTW9ja1R1cnRsZWAgZnJvbSBgVHVydGxlYC4KKyAg
MS4gVGFrZSBhIF92aXJ0dWFsXyBmdW5jdGlvbiBvZiBgVHVydGxlYCAod2hpbGUgaXQncyBwb3Nz
aWJsZSB0byBbbW9jayBub24tdmlydHVhbCBtZXRob2RzIHVzaW5nIHRlbXBsYXRlc10oQ29va0Jv
b2subWQjbW9ja2luZy1ub252aXJ0dWFsLW1ldGhvZHMpLCBpdCdzIG11Y2ggbW9yZSBpbnZvbHZl
ZCkuIENvdW50IGhvdyBtYW55IGFyZ3VtZW50cyBpdCBoYXMuCisgIDEuIEluIHRoZSBgcHVibGlj
OmAgc2VjdGlvbiBvZiB0aGUgY2hpbGQgY2xhc3MsIHdyaXRlIGBNT0NLX01FVEhPRG4oKTtgIChv
ciBgTU9DS19DT05TVF9NRVRIT0RuKCk7YCBpZiB5b3UgYXJlIG1vY2tpbmcgYSBgY29uc3RgIG1l
dGhvZCksIHdoZXJlIGBuYCBpcyB0aGUgbnVtYmVyIG9mIHRoZSBhcmd1bWVudHM7IGlmIHlvdSBj
b3VudGVkIHdyb25nLCBzaGFtZSBvbiB5b3UsIGFuZCBhIGNvbXBpbGVyIGVycm9yIHdpbGwgdGVs
bCB5b3Ugc28uCisgIDEuIE5vdyBjb21lcyB0aGUgZnVuIHBhcnQ6IHlvdSB0YWtlIHRoZSBmdW5j
dGlvbiBzaWduYXR1cmUsIGN1dC1hbmQtcGFzdGUgdGhlIF9mdW5jdGlvbiBuYW1lXyBhcyB0aGUg
X2ZpcnN0XyBhcmd1bWVudCB0byB0aGUgbWFjcm8sIGFuZCBsZWF2ZSB3aGF0J3MgbGVmdCBhcyB0
aGUgX3NlY29uZF8gYXJndW1lbnQgKGluIGNhc2UgeW91J3JlIGN1cmlvdXMsIHRoaXMgaXMgdGhl
IF90eXBlIG9mIHRoZSBmdW5jdGlvbl8pLgorICAxLiBSZXBlYXQgdW50aWwgYWxsIHZpcnR1YWwg
ZnVuY3Rpb25zIHlvdSB3YW50IHRvIG1vY2sgYXJlIGRvbmUuCisKK0FmdGVyIHRoZSBwcm9jZXNz
LCB5b3Ugc2hvdWxkIGhhdmUgc29tZXRoaW5nIGxpa2U6CisKK2BgYAorI2luY2x1ZGUgImdtb2Nr
L2dtb2NrLmgiICAvLyBCcmluZ3MgaW4gR29vZ2xlIE1vY2suCitjbGFzcyBNb2NrVHVydGxlIDog
cHVibGljIFR1cnRsZSB7CisgcHVibGljOgorICAuLi4KKyAgTU9DS19NRVRIT0QwKFBlblVwLCB2
b2lkKCkpOworICBNT0NLX01FVEhPRDAoUGVuRG93biwgdm9pZCgpKTsKKyAgTU9DS19NRVRIT0Qx
KEZvcndhcmQsIHZvaWQoaW50IGRpc3RhbmNlKSk7CisgIE1PQ0tfTUVUSE9EMShUdXJuLCB2b2lk
KGludCBkZWdyZWVzKSk7CisgIE1PQ0tfTUVUSE9EMihHb1RvLCB2b2lkKGludCB4LCBpbnQgeSkp
OworICBNT0NLX0NPTlNUX01FVEhPRDAoR2V0WCwgaW50KCkpOworICBNT0NLX0NPTlNUX01FVEhP
RDAoR2V0WSwgaW50KCkpOworfTsKK2BgYAorCitZb3UgZG9uJ3QgbmVlZCB0byBkZWZpbmUgdGhl
c2UgbW9jayBtZXRob2RzIHNvbWV3aGVyZSBlbHNlIC0gdGhlIGBNT0NLX01FVEhPRCpgIG1hY3Jv
cyB3aWxsIGdlbmVyYXRlIHRoZSBkZWZpbml0aW9ucyBmb3IgeW91LiBJdCdzIHRoYXQgc2ltcGxl
ISBPbmNlIHlvdSBnZXQgdGhlIGhhbmcgb2YgaXQsIHlvdSBjYW4gcHVtcCBvdXQgbW9jayBjbGFz
c2VzIGZhc3RlciB0aGFuIHlvdXIgc291cmNlLWNvbnRyb2wgc3lzdGVtIGNhbiBoYW5kbGUgeW91
ciBjaGVjay1pbnMuCisKKyoqVGlwOioqIElmIGV2ZW4gdGhpcyBpcyB0b28gbXVjaCB3b3JrIGZv
ciB5b3UsIHlvdSdsbCBmaW5kIHRoZQorYGdtb2NrX2dlbi5weWAgdG9vbCBpbiBHb29nbGUgTW9j
aydzIGBzY3JpcHRzL2dlbmVyYXRvci9gIGRpcmVjdG9yeSAoY291cnRlc3kgb2YgdGhlIFtjcHBj
bGVhbl0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2NwcGNsZWFuLykgcHJvamVjdCkgdXNlZnVs
LiAgVGhpcyBjb21tYW5kLWxpbmUKK3Rvb2wgcmVxdWlyZXMgdGhhdCB5b3UgaGF2ZSBQeXRob24g
Mi40IGluc3RhbGxlZC4gIFlvdSBnaXZlIGl0IGEgQysrIGZpbGUgYW5kIHRoZSBuYW1lIG9mIGFu
IGFic3RyYWN0IGNsYXNzIGRlZmluZWQgaW4gaXQsCithbmQgaXQgd2lsbCBwcmludCB0aGUgZGVm
aW5pdGlvbiBvZiB0aGUgbW9jayBjbGFzcyBmb3IgeW91LiAgRHVlIHRvIHRoZQorY29tcGxleGl0
eSBvZiB0aGUgQysrIGxhbmd1YWdlLCB0aGlzIHNjcmlwdCBtYXkgbm90IGFsd2F5cyB3b3JrLCBi
dXQKK2l0IGNhbiBiZSBxdWl0ZSBoYW5keSB3aGVuIGl0IGRvZXMuICBGb3IgbW9yZSBkZXRhaWxz
LCByZWFkIHRoZSBbdXNlciBkb2N1bWVudGF0aW9uXSguLi9zY3JpcHRzL2dlbmVyYXRvci9SRUFE
TUUpLgorCisjIyBXaGVyZSB0byBQdXQgSXQgIyMKK1doZW4geW91IGRlZmluZSBhIG1vY2sgY2xh
c3MsIHlvdSBuZWVkIHRvIGRlY2lkZSB3aGVyZSB0byBwdXQgaXRzIGRlZmluaXRpb24uIFNvbWUg
cGVvcGxlIHB1dCBpdCBpbiBhIGAqX3Rlc3QuY2NgLiBUaGlzIGlzIGZpbmUgd2hlbiB0aGUgaW50
ZXJmYWNlIGJlaW5nIG1vY2tlZCAoc2F5LCBgRm9vYCkgaXMgb3duZWQgYnkgdGhlIHNhbWUgcGVy
c29uIG9yIHRlYW0uIE90aGVyd2lzZSwgd2hlbiB0aGUgb3duZXIgb2YgYEZvb2AgY2hhbmdlcyBp
dCwgeW91ciB0ZXN0IGNvdWxkIGJyZWFrLiAoWW91IGNhbid0IHJlYWxseSBleHBlY3QgYEZvb2An
cyBtYWludGFpbmVyIHRvIGZpeCBldmVyeSB0ZXN0IHRoYXQgdXNlcyBgRm9vYCwgY2FuIHlvdT8p
CisKK1NvLCB0aGUgcnVsZSBvZiB0aHVtYiBpczogaWYgeW91IG5lZWQgdG8gbW9jayBgRm9vYCBh
bmQgaXQncyBvd25lZCBieSBvdGhlcnMsIGRlZmluZSB0aGUgbW9jayBjbGFzcyBpbiBgRm9vYCdz
IHBhY2thZ2UgKGJldHRlciwgaW4gYSBgdGVzdGluZ2Agc3ViLXBhY2thZ2Ugc3VjaCB0aGF0IHlv
dSBjYW4gY2xlYXJseSBzZXBhcmF0ZSBwcm9kdWN0aW9uIGNvZGUgYW5kIHRlc3RpbmcgdXRpbGl0
aWVzKSwgYW5kIHB1dCBpdCBpbiBhIGBtb2NrX2Zvby5oYC4gVGhlbiBldmVyeW9uZSBjYW4gcmVm
ZXJlbmNlIGBtb2NrX2Zvby5oYCBmcm9tIHRoZWlyIHRlc3RzLiBJZiBgRm9vYCBldmVyIGNoYW5n
ZXMsIHRoZXJlIGlzIG9ubHkgb25lIGNvcHkgb2YgYE1vY2tGb29gIHRvIGNoYW5nZSwgYW5kIG9u
bHkgdGVzdHMgdGhhdCBkZXBlbmQgb24gdGhlIGNoYW5nZWQgbWV0aG9kcyBuZWVkIHRvIGJlIGZp
eGVkLgorCitBbm90aGVyIHdheSB0byBkbyBpdDogeW91IGNhbiBpbnRyb2R1Y2UgYSB0aGluIGxh
eWVyIGBGb29BZGFwdG9yYCBvbiB0b3Agb2YgYEZvb2AgYW5kIGNvZGUgdG8gdGhpcyBuZXcgaW50
ZXJmYWNlLiBTaW5jZSB5b3Ugb3duIGBGb29BZGFwdG9yYCwgeW91IGNhbiBhYnNvcmIgY2hhbmdl
cyBpbiBgRm9vYCBtdWNoIG1vcmUgZWFzaWx5LiBXaGlsZSB0aGlzIGlzIG1vcmUgd29yayBpbml0
aWFsbHksIGNhcmVmdWxseSBjaG9vc2luZyB0aGUgYWRhcHRvciBpbnRlcmZhY2UgY2FuIG1ha2Ug
eW91ciBjb2RlIGVhc2llciB0byB3cml0ZSBhbmQgbW9yZSByZWFkYWJsZSAoYSBuZXQgd2luIGlu
IHRoZSBsb25nIHJ1biksIGFzIHlvdSBjYW4gY2hvb3NlIGBGb29BZGFwdG9yYCB0byBmaXQgeW91
ciBzcGVjaWZpYyBkb21haW4gbXVjaCBiZXR0ZXIgdGhhbiBgRm9vYCBkb2VzLgorCisjIFVzaW5n
IE1vY2tzIGluIFRlc3RzICMKK09uY2UgeW91IGhhdmUgYSBtb2NrIGNsYXNzLCB1c2luZyBpdCBp
cyBlYXN5LiBUaGUgdHlwaWNhbCB3b3JrIGZsb3cgaXM6CisKKyAgMS4gSW1wb3J0IHRoZSBHb29n
bGUgTW9jayBuYW1lcyBmcm9tIHRoZSBgdGVzdGluZ2AgbmFtZXNwYWNlIHN1Y2ggdGhhdCB5b3Ug
Y2FuIHVzZSB0aGVtIHVucXVhbGlmaWVkIChZb3Ugb25seSBoYXZlIHRvIGRvIGl0IG9uY2UgcGVy
IGZpbGUuIFJlbWVtYmVyIHRoYXQgbmFtZXNwYWNlcyBhcmUgYSBnb29kIGlkZWEgYW5kIGdvb2Qg
Zm9yIHlvdXIgaGVhbHRoLikuCisgIDEuIENyZWF0ZSBzb21lIG1vY2sgb2JqZWN0cy4KKyAgMS4g
U3BlY2lmeSB5b3VyIGV4cGVjdGF0aW9ucyBvbiB0aGVtIChIb3cgbWFueSB0aW1lcyB3aWxsIGEg
bWV0aG9kIGJlIGNhbGxlZD8gV2l0aCB3aGF0IGFyZ3VtZW50cz8gV2hhdCBzaG91bGQgaXQgZG8/
IGV0Yy4pLgorICAxLiBFeGVyY2lzZSBzb21lIGNvZGUgdGhhdCB1c2VzIHRoZSBtb2Nrczsgb3B0
aW9uYWxseSwgY2hlY2sgdGhlIHJlc3VsdCB1c2luZyBHb29nbGUgVGVzdCBhc3NlcnRpb25zLiBJ
ZiBhIG1vY2sgbWV0aG9kIGlzIGNhbGxlZCBtb3JlIHRoYW4gZXhwZWN0ZWQgb3Igd2l0aCB3cm9u
ZyBhcmd1bWVudHMsIHlvdSdsbCBnZXQgYW4gZXJyb3IgaW1tZWRpYXRlbHkuCisgIDEuIFdoZW4g
YSBtb2NrIGlzIGRlc3RydWN0ZWQsIEdvb2dsZSBNb2NrIHdpbGwgYXV0b21hdGljYWxseSBjaGVj
ayB3aGV0aGVyIGFsbCBleHBlY3RhdGlvbnMgb24gaXQgaGF2ZSBiZWVuIHNhdGlzZmllZC4KKwor
SGVyZSdzIGFuIGV4YW1wbGU6CisKK2BgYAorI2luY2x1ZGUgInBhdGgvdG8vbW9jay10dXJ0bGUu
aCIKKyNpbmNsdWRlICJnbW9jay9nbW9jay5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCit1
c2luZyA6OnRlc3Rpbmc6OkF0TGVhc3Q7ICAgICAgICAgICAgICAgICAgICAgLy8gIzEKKworVEVT
VChQYWludGVyVGVzdCwgQ2FuRHJhd1NvbWV0aGluZykgeworICBNb2NrVHVydGxlIHR1cnRsZTsg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vICMyCisgIEVYUEVDVF9DQUxMKHR1cnRsZSwgUGVu
RG93bigpKSAgICAgICAgICAgICAgLy8gIzMKKyAgICAgIC5UaW1lcyhBdExlYXN0KDEpKTsKKwor
ICBQYWludGVyIHBhaW50ZXIoJnR1cnRsZSk7ICAgICAgICAgICAgICAgICAgIC8vICM0CisKKyAg
RVhQRUNUX1RSVUUocGFpbnRlci5EcmF3Q2lyY2xlKDAsIDAsIDEwKSk7Cit9ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIzUKKworaW50IG1haW4oaW50IGFy
Z2MsIGNoYXIqKiBhcmd2KSB7CisgIC8vIFRoZSBmb2xsb3dpbmcgbGluZSBtdXN0IGJlIGV4ZWN1
dGVkIHRvIGluaXRpYWxpemUgR29vZ2xlIE1vY2sKKyAgLy8gKGFuZCBHb29nbGUgVGVzdCkgYmVm
b3JlIHJ1bm5pbmcgdGhlIHRlc3RzLgorICA6OnRlc3Rpbmc6OkluaXRHb29nbGVNb2NrKCZhcmdj
LCBhcmd2KTsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KK2BgYAorCitBcyB5b3UgbWln
aHQgaGF2ZSBndWVzc2VkLCB0aGlzIHRlc3QgY2hlY2tzIHRoYXQgYFBlbkRvd24oKWAgaXMgY2Fs
bGVkIGF0IGxlYXN0IG9uY2UuIElmIHRoZSBgcGFpbnRlcmAgb2JqZWN0IGRpZG4ndCBjYWxsIHRo
aXMgbWV0aG9kLCB5b3VyIHRlc3Qgd2lsbCBmYWlsIHdpdGggYSBtZXNzYWdlIGxpa2UgdGhpczoK
KworYGBgCitwYXRoL3RvL215X3Rlc3QuY2M6MTE5OiBGYWlsdXJlCitBY3R1YWwgZnVuY3Rpb24g
Y2FsbCBjb3VudCBkb2Vzbid0IG1hdGNoIHRoaXMgZXhwZWN0YXRpb246CitBY3R1YWxseTogbmV2
ZXIgY2FsbGVkOworRXhwZWN0ZWQ6IGNhbGxlZCBhdCBsZWFzdCBvbmNlLgorYGBgCisKKyoqVGlw
IDE6KiogSWYgeW91IHJ1biB0aGUgdGVzdCBmcm9tIGFuIEVtYWNzIGJ1ZmZlciwgeW91IGNhbiBo
aXQgYDxFbnRlcj5gIG9uIHRoZSBsaW5lIG51bWJlciBkaXNwbGF5ZWQgaW4gdGhlIGVycm9yIG1l
c3NhZ2UgdG8ganVtcCByaWdodCB0byB0aGUgZmFpbGVkIGV4cGVjdGF0aW9uLgorCisqKlRpcCAy
OioqIElmIHlvdXIgbW9jayBvYmplY3RzIGFyZSBuZXZlciBkZWxldGVkLCB0aGUgZmluYWwgdmVy
aWZpY2F0aW9uIHdvbid0IGhhcHBlbi4gVGhlcmVmb3JlIGl0J3MgYSBnb29kIGlkZWEgdG8gdXNl
IGEgaGVhcCBsZWFrIGNoZWNrZXIgaW4geW91ciB0ZXN0cyB3aGVuIHlvdSBhbGxvY2F0ZSBtb2Nr
cyBvbiB0aGUgaGVhcC4KKworKipJbXBvcnRhbnQgbm90ZToqKiBHb29nbGUgTW9jayByZXF1aXJl
cyBleHBlY3RhdGlvbnMgdG8gYmUgc2V0ICoqYmVmb3JlKiogdGhlIG1vY2sgZnVuY3Rpb25zIGFy
ZSBjYWxsZWQsIG90aGVyd2lzZSB0aGUgYmVoYXZpb3IgaXMgKip1bmRlZmluZWQqKi4gSW4gcGFy
dGljdWxhciwgeW91IG11c3RuJ3QgaW50ZXJsZWF2ZSBgRVhQRUNUX0NBTEwoKWBzIGFuZCBjYWxs
cyB0byB0aGUgbW9jayBmdW5jdGlvbnMuCisKK1RoaXMgbWVhbnMgYEVYUEVDVF9DQUxMKClgIHNo
b3VsZCBiZSByZWFkIGFzIGV4cGVjdGluZyB0aGF0IGEgY2FsbCB3aWxsIG9jY3VyIF9pbiB0aGUg
ZnV0dXJlXywgbm90IHRoYXQgYSBjYWxsIGhhcyBvY2N1cnJlZC4gV2h5IGRvZXMgR29vZ2xlIE1v
Y2sgd29yayBsaWtlIHRoYXQ/IFdlbGwsIHNwZWNpZnlpbmcgdGhlIGV4cGVjdGF0aW9uIGJlZm9y
ZWhhbmQgYWxsb3dzIEdvb2dsZSBNb2NrIHRvIHJlcG9ydCBhIHZpb2xhdGlvbiBhcyBzb29uIGFz
IGl0IGFyaXNlcywgd2hlbiB0aGUgY29udGV4dCAoc3RhY2sgdHJhY2UsIGV0YykgaXMgc3RpbGwg
YXZhaWxhYmxlLiBUaGlzIG1ha2VzIGRlYnVnZ2luZyBtdWNoIGVhc2llci4KKworQWRtaXR0ZWRs
eSwgdGhpcyB0ZXN0IGlzIGNvbnRyaXZlZCBhbmQgZG9lc24ndCBkbyBtdWNoLiBZb3UgY2FuIGVh
c2lseSBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCB3aXRob3V0IHVzaW5nIEdvb2dsZSBNb2NrLiBI
b3dldmVyLCBhcyB3ZSBzaGFsbCByZXZlYWwgc29vbiwgR29vZ2xlIE1vY2sgYWxsb3dzIHlvdSB0
byBkbyBfbXVjaCBtb3JlXyB3aXRoIHRoZSBtb2Nrcy4KKworIyMgVXNpbmcgR29vZ2xlIE1vY2sg
d2l0aCBBbnkgVGVzdGluZyBGcmFtZXdvcmsgIyMKK0lmIHlvdSB3YW50IHRvIHVzZSBzb21ldGhp
bmcgb3RoZXIgdGhhbiBHb29nbGUgVGVzdCAoZS5nLiBbQ3BwVW5pdF0oaHR0cDovL3NvdXJjZWZv
cmdlLm5ldC9wcm9qZWN0cy9jcHB1bml0Lykgb3IKK1tDeHhUZXN0XShodHRwOi8vY3h4dGVzdC50
aWdyaXMub3JnLykpIGFzIHlvdXIgdGVzdGluZyBmcmFtZXdvcmssIGp1c3QgY2hhbmdlIHRoZSBg
bWFpbigpYCBmdW5jdGlvbiBpbiB0aGUgcHJldmlvdXMgc2VjdGlvbiB0bzoKK2BgYAoraW50IG1h
aW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CisgIC8vIFRoZSBmb2xsb3dpbmcgbGluZSBjYXVz
ZXMgR29vZ2xlIE1vY2sgdG8gdGhyb3cgYW4gZXhjZXB0aW9uIG9uIGZhaWx1cmUsCisgIC8vIHdo
aWNoIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYnkgeW91ciB0ZXN0aW5nIGZyYW1ld29yayBhcyBhIHRl
c3QgZmFpbHVyZS4KKyAgOjp0ZXN0aW5nOjpHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpID0g
dHJ1ZTsKKyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlTW9jaygmYXJnYywgYXJndik7CisgIC4uLiB3
aGF0ZXZlciB5b3VyIHRlc3RpbmcgZnJhbWV3b3JrIHJlcXVpcmVzIC4uLgorfQorYGBgCisKK1Ro
aXMgYXBwcm9hY2ggaGFzIGEgY2F0Y2g6IGl0IG1ha2VzIEdvb2dsZSBNb2NrIHRocm93IGFuIGV4
Y2VwdGlvbgorZnJvbSBhIG1vY2sgb2JqZWN0J3MgZGVzdHJ1Y3RvciBzb21ldGltZXMuICBXaXRo
IHNvbWUgY29tcGlsZXJzLCB0aGlzCitzb21ldGltZXMgY2F1c2VzIHRoZSB0ZXN0IHByb2dyYW0g
dG8gY3Jhc2guICBZb3UnbGwgc3RpbGwgYmUgYWJsZSB0bworbm90aWNlIHRoYXQgdGhlIHRlc3Qg
aGFzIGZhaWxlZCwgYnV0IGl0J3Mgbm90IGEgZ3JhY2VmdWwgZmFpbHVyZS4KKworQSBiZXR0ZXIg
c29sdXRpb24gaXMgdG8gdXNlIEdvb2dsZSBUZXN0J3MKK1tldmVudCBsaXN0ZW5lciBBUEldKC4u
Ly4uL2dvb2dsZXRlc3QvZG9jcy9BZHZhbmNlZEd1aWRlLm1kI2V4dGVuZGluZy1nb29nbGUtdGVz
dC1ieS1oYW5kbGluZy10ZXN0LWV2ZW50cykKK3RvIHJlcG9ydCBhIHRlc3QgZmFpbHVyZSB0byB5
b3VyIHRlc3RpbmcgZnJhbWV3b3JrIHByb3Blcmx5LiAgWW91J2xsIG5lZWQgdG8KK2ltcGxlbWVu
dCB0aGUgYE9uVGVzdFBhcnRSZXN1bHQoKWAgbWV0aG9kIG9mIHRoZSBldmVudCBsaXN0ZW5lciBp
bnRlcmZhY2UsIGJ1dCBpdAorc2hvdWxkIGJlIHN0cmFpZ2h0Zm9yd2FyZC4KKworSWYgdGhpcyB0
dXJucyBvdXQgdG8gYmUgdG9vIG11Y2ggd29yaywgd2Ugc3VnZ2VzdCB0aGF0IHlvdSBzdGljayB3
aXRoCitHb29nbGUgVGVzdCwgd2hpY2ggd29ya3Mgd2l0aCBHb29nbGUgTW9jayBzZWFtbGVzc2x5
IChpbiBmYWN0LCBpdCBpcwordGVjaG5pY2FsbHkgcGFydCBvZiBHb29nbGUgTW9jay4pLiAgSWYg
dGhlcmUgaXMgYSByZWFzb24gdGhhdCB5b3UKK2Nhbm5vdCB1c2UgR29vZ2xlIFRlc3QsIHBsZWFz
ZSBsZXQgdXMga25vdy4KKworIyBTZXR0aW5nIEV4cGVjdGF0aW9ucyAjCitUaGUga2V5IHRvIHVz
aW5nIGEgbW9jayBvYmplY3Qgc3VjY2Vzc2Z1bGx5IGlzIHRvIHNldCB0aGUgX3JpZ2h0IGV4cGVj
dGF0aW9uc18gb24gaXQuIElmIHlvdSBzZXQgdGhlIGV4cGVjdGF0aW9ucyB0b28gc3RyaWN0LCB5
b3VyIHRlc3Qgd2lsbCBmYWlsIGFzIHRoZSByZXN1bHQgb2YgdW5yZWxhdGVkIGNoYW5nZXMuIElm
IHlvdSBzZXQgdGhlbSB0b28gbG9vc2UsIGJ1Z3MgY2FuIHNsaXAgdGhyb3VnaC4gWW91IHdhbnQg
dG8gZG8gaXQganVzdCByaWdodCBzdWNoIHRoYXQgeW91ciB0ZXN0IGNhbiBjYXRjaCBleGFjdGx5
IHRoZSBraW5kIG9mIGJ1Z3MgeW91IGludGVuZCBpdCB0byBjYXRjaC4gR29vZ2xlIE1vY2sgcHJv
dmlkZXMgdGhlIG5lY2Vzc2FyeSBtZWFucyBmb3IgeW91IHRvIGRvIGl0ICJqdXN0IHJpZ2h0LiIK
KworIyMgR2VuZXJhbCBTeW50YXggIyMKK0luIEdvb2dsZSBNb2NrIHdlIHVzZSB0aGUgYEVYUEVD
VF9DQUxMKClgIG1hY3JvIHRvIHNldCBhbiBleHBlY3RhdGlvbiBvbiBhIG1vY2sgbWV0aG9kLiBU
aGUgZ2VuZXJhbCBzeW50YXggaXM6CisKK2BgYAorRVhQRUNUX0NBTEwobW9ja19vYmplY3QsIG1l
dGhvZChtYXRjaGVycykpCisgICAgLlRpbWVzKGNhcmRpbmFsaXR5KQorICAgIC5XaWxsT25jZShh
Y3Rpb24pCisgICAgLldpbGxSZXBlYXRlZGx5KGFjdGlvbik7CitgYGAKKworVGhlIG1hY3JvIGhh
cyB0d28gYXJndW1lbnRzOiBmaXJzdCB0aGUgbW9jayBvYmplY3QsIGFuZCB0aGVuIHRoZSBtZXRo
b2QgYW5kIGl0cyBhcmd1bWVudHMuIE5vdGUgdGhhdCB0aGUgdHdvIGFyZSBzZXBhcmF0ZWQgYnkg
YSBjb21tYSAoYCxgKSwgbm90IGEgcGVyaW9kIChgLmApLiAoV2h5IHVzaW5nIGEgY29tbWE/IFRo
ZSBhbnN3ZXIgaXMgdGhhdCBpdCB3YXMgbmVjZXNzYXJ5IGZvciB0ZWNobmljYWwgcmVhc29ucy4p
CisKK1RoZSBtYWNybyBjYW4gYmUgZm9sbG93ZWQgYnkgc29tZSBvcHRpb25hbCBfY2xhdXNlc18g
dGhhdCBwcm92aWRlIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGV4cGVjdGF0aW9uLiBXZSds
bCBkaXNjdXNzIGhvdyBlYWNoIGNsYXVzZSB3b3JrcyBpbiB0aGUgY29taW5nIHNlY3Rpb25zLgor
CitUaGlzIHN5bnRheCBpcyBkZXNpZ25lZCB0byBtYWtlIGFuIGV4cGVjdGF0aW9uIHJlYWQgbGlr
ZSBFbmdsaXNoLiBGb3IgZXhhbXBsZSwgeW91IGNhbiBwcm9iYWJseSBndWVzcyB0aGF0CisKK2Bg
YAordXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm47Li4uCitFWFBFQ1RfQ0FMTCh0dXJ0bGUsIEdldFgo
KSkKKyAgICAuVGltZXMoNSkKKyAgICAuV2lsbE9uY2UoUmV0dXJuKDEwMCkpCisgICAgLldpbGxP
bmNlKFJldHVybigxNTApKQorICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oMjAwKSk7CitgYGAK
Kworc2F5cyB0aGF0IHRoZSBgdHVydGxlYCBvYmplY3QncyBgR2V0WCgpYCBtZXRob2Qgd2lsbCBi
ZSBjYWxsZWQgZml2ZSB0aW1lcywgaXQgd2lsbCByZXR1cm4gMTAwIHRoZSBmaXJzdCB0aW1lLCAx
NTAgdGhlIHNlY29uZCB0aW1lLCBhbmQgdGhlbiAyMDAgZXZlcnkgdGltZS4gU29tZSBwZW9wbGUg
bGlrZSB0byBjYWxsIHRoaXMgc3R5bGUgb2Ygc3ludGF4IGEgRG9tYWluLVNwZWNpZmljIExhbmd1
YWdlIChEU0wpLgorCisqKk5vdGU6KiogV2h5IGRvIHdlIHVzZSBhIG1hY3JvIHRvIGRvIHRoaXM/
IEl0IHNlcnZlcyB0d28gcHVycG9zZXM6IGZpcnN0IGl0IG1ha2VzIGV4cGVjdGF0aW9ucyBlYXNp
bHkgaWRlbnRpZmlhYmxlIChlaXRoZXIgYnkgYGdyZXBgIG9yIGJ5IGEgaHVtYW4gcmVhZGVyKSwg
YW5kIHNlY29uZCBpdCBhbGxvd3MgR29vZ2xlIE1vY2sgdG8gaW5jbHVkZSB0aGUgc291cmNlIGZp
bGUgbG9jYXRpb24gb2YgYSBmYWlsZWQgZXhwZWN0YXRpb24gaW4gbWVzc2FnZXMsIG1ha2luZyBk
ZWJ1Z2dpbmcgZWFzaWVyLgorCisjIyBNYXRjaGVyczogV2hhdCBBcmd1bWVudHMgRG8gV2UgRXhw
ZWN0PyAjIworV2hlbiBhIG1vY2sgZnVuY3Rpb24gdGFrZXMgYXJndW1lbnRzLCB3ZSBtdXN0IHNw
ZWNpZnkgd2hhdCBhcmd1bWVudHMgd2UgYXJlIGV4cGVjdGluZzsgZm9yIGV4YW1wbGU6CisKK2Bg
YAorLy8gRXhwZWN0cyB0aGUgdHVydGxlIHRvIG1vdmUgZm9yd2FyZCBieSAxMDAgdW5pdHMuCitF
WFBFQ1RfQ0FMTCh0dXJ0bGUsIEZvcndhcmQoMTAwKSk7CitgYGAKKworU29tZXRpbWVzIHlvdSBt
YXkgbm90IHdhbnQgdG8gYmUgdG9vIHNwZWNpZmljIChSZW1lbWJlciB0aGF0IHRhbGsgYWJvdXQg
dGVzdHMgYmVpbmcgdG9vIHJpZ2lkPyBPdmVyIHNwZWNpZmljYXRpb24gbGVhZHMgdG8gYnJpdHRs
ZSB0ZXN0cyBhbmQgb2JzY3VyZXMgdGhlIGludGVudCBvZiB0ZXN0cy4gVGhlcmVmb3JlIHdlIGVu
Y291cmFnZSB5b3UgdG8gc3BlY2lmeSBvbmx5IHdoYXQncyBuZWNlc3NhcnkgLSBubyBtb3JlLCBu
byBsZXNzLikuIElmIHlvdSBjYXJlIHRvIGNoZWNrIHRoYXQgYEZvcndhcmQoKWAgd2lsbCBiZSBj
YWxsZWQgYnV0IGFyZW4ndCBpbnRlcmVzdGVkIGluIGl0cyBhY3R1YWwgYXJndW1lbnQsIHdyaXRl
IGBfYCBhcyB0aGUgYXJndW1lbnQsIHdoaWNoIG1lYW5zICJhbnl0aGluZyBnb2VzIjoKKworYGBg
Cit1c2luZyA6OnRlc3Rpbmc6Ol87CisuLi4KKy8vIEV4cGVjdHMgdGhlIHR1cnRsZSB0byBtb3Zl
IGZvcndhcmQuCitFWFBFQ1RfQ0FMTCh0dXJ0bGUsIEZvcndhcmQoXykpOworYGBgCisKK2BfYCBp
cyBhbiBpbnN0YW5jZSBvZiB3aGF0IHdlIGNhbGwgKiptYXRjaGVycyoqLiBBIG1hdGNoZXIgaXMg
bGlrZSBhIHByZWRpY2F0ZSBhbmQgY2FuIHRlc3Qgd2hldGhlciBhbiBhcmd1bWVudCBpcyB3aGF0
IHdlJ2QgZXhwZWN0LiBZb3UgY2FuIHVzZSBhIG1hdGNoZXIgaW5zaWRlIGBFWFBFQ1RfQ0FMTCgp
YCB3aGVyZXZlciBhIGZ1bmN0aW9uIGFyZ3VtZW50IGlzIGV4cGVjdGVkLgorCitBIGxpc3Qgb2Yg
YnVpbHQtaW4gbWF0Y2hlcnMgY2FuIGJlIGZvdW5kIGluIHRoZSBbQ2hlYXRTaGVldF0oQ2hlYXRT
aGVldC5tZCkuIEZvciBleGFtcGxlLCBoZXJlJ3MgdGhlIGBHZWAgKGdyZWF0ZXIgdGhhbiBvciBl
cXVhbCkgbWF0Y2hlcjoKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6OkdlOy4uLgorRVhQRUNUX0NB
TEwodHVydGxlLCBGb3J3YXJkKEdlKDEwMCkpKTsKK2BgYAorCitUaGlzIGNoZWNrcyB0aGF0IHRo
ZSB0dXJ0bGUgd2lsbCBiZSB0b2xkIHRvIGdvIGZvcndhcmQgYnkgYXQgbGVhc3QgMTAwIHVuaXRz
LgorCisjIyBDYXJkaW5hbGl0aWVzOiBIb3cgTWFueSBUaW1lcyBXaWxsIEl0IEJlIENhbGxlZD8g
IyMKK1RoZSBmaXJzdCBjbGF1c2Ugd2UgY2FuIHNwZWNpZnkgZm9sbG93aW5nIGFuIGBFWFBFQ1Rf
Q0FMTCgpYCBpcyBgVGltZXMoKWAuIFdlIGNhbGwgaXRzIGFyZ3VtZW50IGEgKipjYXJkaW5hbGl0
eSoqIGFzIGl0IHRlbGxzIF9ob3cgbWFueSB0aW1lc18gdGhlIGNhbGwgc2hvdWxkIG9jY3VyLiBJ
dCBhbGxvd3MgdXMgdG8gcmVwZWF0IGFuIGV4cGVjdGF0aW9uIG1hbnkgdGltZXMgd2l0aG91dCBh
Y3R1YWxseSB3cml0aW5nIGl0IGFzIG1hbnkgdGltZXMuIE1vcmUgaW1wb3J0YW50bHksIGEgY2Fy
ZGluYWxpdHkgY2FuIGJlICJmdXp6eSIsIGp1c3QgbGlrZSBhIG1hdGNoZXIgY2FuIGJlLiBUaGlz
IGFsbG93cyBhIHVzZXIgdG8gZXhwcmVzcyB0aGUgaW50ZW50IG9mIGEgdGVzdCBleGFjdGx5Lgor
CitBbiBpbnRlcmVzdGluZyBzcGVjaWFsIGNhc2UgaXMgd2hlbiB3ZSBzYXkgYFRpbWVzKDApYC4g
WW91IG1heSBoYXZlIGd1ZXNzZWQgLSBpdCBtZWFucyB0aGF0IHRoZSBmdW5jdGlvbiBzaG91bGRu
J3QgYmUgY2FsbGVkIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cyBhdCBhbGwsIGFuZCBHb29nbGUg
TW9jayB3aWxsIHJlcG9ydCBhIEdvb2dsZSBUZXN0IGZhaWx1cmUgd2hlbmV2ZXIgdGhlIGZ1bmN0
aW9uIGlzICh3cm9uZ2Z1bGx5KSBjYWxsZWQuCisKK1dlJ3ZlIHNlZW4gYEF0TGVhc3QobilgIGFz
IGFuIGV4YW1wbGUgb2YgZnV6enkgY2FyZGluYWxpdGllcyBlYXJsaWVyLiBGb3IgdGhlIGxpc3Qg
b2YgYnVpbHQtaW4gY2FyZGluYWxpdGllcyB5b3UgY2FuIHVzZSwgc2VlIHRoZSBbQ2hlYXRTaGVl
dF0oQ2hlYXRTaGVldC5tZCkuCisKK1RoZSBgVGltZXMoKWAgY2xhdXNlIGNhbiBiZSBvbWl0dGVk
LiAqKklmIHlvdSBvbWl0IGBUaW1lcygpYCwgR29vZ2xlIE1vY2sgd2lsbCBpbmZlciB0aGUgY2Fy
ZGluYWxpdHkgZm9yIHlvdS4qKiBUaGUgcnVsZXMgYXJlIGVhc3kgdG8gcmVtZW1iZXI6CisKKyAg
KiBJZiAqKm5laXRoZXIqKiBgV2lsbE9uY2UoKWAgKipub3IqKiBgV2lsbFJlcGVhdGVkbHkoKWAg
aXMgaW4gdGhlIGBFWFBFQ1RfQ0FMTCgpYCwgdGhlIGluZmVycmVkIGNhcmRpbmFsaXR5IGlzIGBU
aW1lcygxKWAuCisgICogSWYgdGhlcmUgYXJlIGBuIFdpbGxPbmNlKClgJ3MgYnV0ICoqbm8qKiBg
V2lsbFJlcGVhdGVkbHkoKWAsIHdoZXJlIGBuYCA+PSAxLCB0aGUgY2FyZGluYWxpdHkgaXMgYFRp
bWVzKG4pYC4KKyAgKiBJZiB0aGVyZSBhcmUgYG4gV2lsbE9uY2UoKWAncyBhbmQgKipvbmUqKiBg
V2lsbFJlcGVhdGVkbHkoKWAsIHdoZXJlIGBuYCA+PSAwLCB0aGUgY2FyZGluYWxpdHkgaXMgYFRp
bWVzKEF0TGVhc3QobikpYC4KKworKipRdWljayBxdWl6OioqIHdoYXQgZG8geW91IHRoaW5rIHdp
bGwgaGFwcGVuIGlmIGEgZnVuY3Rpb24gaXMgZXhwZWN0ZWQgdG8gYmUgY2FsbGVkIHR3aWNlIGJ1
dCBhY3R1YWxseSBjYWxsZWQgZm91ciB0aW1lcz8KKworIyMgQWN0aW9uczogV2hhdCBTaG91bGQg
SXQgRG8/ICMjCitSZW1lbWJlciB0aGF0IGEgbW9jayBvYmplY3QgZG9lc24ndCByZWFsbHkgaGF2
ZSBhIHdvcmtpbmcgaW1wbGVtZW50YXRpb24/IFdlIGFzIHVzZXJzIGhhdmUgdG8gdGVsbCBpdCB3
aGF0IHRvIGRvIHdoZW4gYSBtZXRob2QgaXMgaW52b2tlZC4gVGhpcyBpcyBlYXN5IGluIEdvb2ds
ZSBNb2NrLgorCitGaXJzdCwgaWYgdGhlIHJldHVybiB0eXBlIG9mIGEgbW9jayBmdW5jdGlvbiBp
cyBhIGJ1aWx0LWluIHR5cGUgb3IgYSBwb2ludGVyLCB0aGUgZnVuY3Rpb24gaGFzIGEgKipkZWZh
dWx0IGFjdGlvbioqIChhIGB2b2lkYCBmdW5jdGlvbiB3aWxsIGp1c3QgcmV0dXJuLCBhIGBib29s
YCBmdW5jdGlvbiB3aWxsIHJldHVybiBgZmFsc2VgLCBhbmQgb3RoZXIgZnVuY3Rpb25zIHdpbGwg
cmV0dXJuIDApLiBJbiBhZGRpdGlvbiwgaW4gQysrIDExIGFuZCBhYm92ZSwgYSBtb2NrIGZ1bmN0
aW9uIHdob3NlIHJldHVybiB0eXBlIGlzIGRlZmF1bHQtY29uc3RydWN0aWJsZSAoaS5lLiBoYXMg
YSBkZWZhdWx0IGNvbnN0cnVjdG9yKSBoYXMgYSBkZWZhdWx0IGFjdGlvbiBvZiByZXR1cm5pbmcg
YSBkZWZhdWx0LWNvbnN0cnVjdGVkIHZhbHVlLiAgSWYgeW91IGRvbid0IHNheSBhbnl0aGluZywg
dGhpcyBiZWhhdmlvciB3aWxsIGJlIHVzZWQuCisKK1NlY29uZCwgaWYgYSBtb2NrIGZ1bmN0aW9u
IGRvZXNuJ3QgaGF2ZSBhIGRlZmF1bHQgYWN0aW9uLCBvciB0aGUgZGVmYXVsdCBhY3Rpb24gZG9l
c24ndCBzdWl0IHlvdSwgeW91IGNhbiBzcGVjaWZ5IHRoZSBhY3Rpb24gdG8gYmUgdGFrZW4gZWFj
aCB0aW1lIHRoZSBleHBlY3RhdGlvbiBtYXRjaGVzIHVzaW5nIGEgc2VyaWVzIG9mIGBXaWxsT25j
ZSgpYCBjbGF1c2VzIGZvbGxvd2VkIGJ5IGFuIG9wdGlvbmFsIGBXaWxsUmVwZWF0ZWRseSgpYC4g
Rm9yIGV4YW1wbGUsCisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm47Li4uCitFWFBFQ1Rf
Q0FMTCh0dXJ0bGUsIEdldFgoKSkKKyAgICAuV2lsbE9uY2UoUmV0dXJuKDEwMCkpCisgICAgLldp
bGxPbmNlKFJldHVybigyMDApKQorICAgIC5XaWxsT25jZShSZXR1cm4oMzAwKSk7CitgYGAKKwor
VGhpcyBzYXlzIHRoYXQgYHR1cnRsZS5HZXRYKClgIHdpbGwgYmUgY2FsbGVkIF9leGFjdGx5IHRo
cmVlIHRpbWVzXyAoR29vZ2xlIE1vY2sgaW5mZXJyZWQgdGhpcyBmcm9tIGhvdyBtYW55IGBXaWxs
T25jZSgpYCBjbGF1c2VzIHdlJ3ZlIHdyaXR0ZW4sIHNpbmNlIHdlIGRpZG4ndCBleHBsaWNpdGx5
IHdyaXRlIGBUaW1lcygpYCksIGFuZCB3aWxsIHJldHVybiAxMDAsIDIwMCwgYW5kIDMwMCByZXNw
ZWN0aXZlbHkuCisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm47Li4uCitFWFBFQ1RfQ0FM
TCh0dXJ0bGUsIEdldFkoKSkKKyAgICAuV2lsbE9uY2UoUmV0dXJuKDEwMCkpCisgICAgLldpbGxP
bmNlKFJldHVybigyMDApKQorICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oMzAwKSk7CitgYGAK
Kworc2F5cyB0aGF0IGB0dXJ0bGUuR2V0WSgpYCB3aWxsIGJlIGNhbGxlZCBfYXQgbGVhc3QgdHdp
Y2VfIChHb29nbGUgTW9jayBrbm93cyB0aGlzIGFzIHdlJ3ZlIHdyaXR0ZW4gdHdvIGBXaWxsT25j
ZSgpYCBjbGF1c2VzIGFuZCBhIGBXaWxsUmVwZWF0ZWRseSgpYCB3aGlsZSBoYXZpbmcgbm8gZXhw
bGljaXQgYFRpbWVzKClgKSwgd2lsbCByZXR1cm4gMTAwIHRoZSBmaXJzdCB0aW1lLCAyMDAgdGhl
IHNlY29uZCB0aW1lLCBhbmQgMzAwIGZyb20gdGhlIHRoaXJkIHRpbWUgb24uCisKK09mIGNvdXJz
ZSwgaWYgeW91IGV4cGxpY2l0bHkgd3JpdGUgYSBgVGltZXMoKWAsIEdvb2dsZSBNb2NrIHdpbGwg
bm90IHRyeSB0byBpbmZlciB0aGUgY2FyZGluYWxpdHkgaXRzZWxmLiBXaGF0IGlmIHRoZSBudW1i
ZXIgeW91IHNwZWNpZmllZCBpcyBsYXJnZXIgdGhhbiB0aGVyZSBhcmUgYFdpbGxPbmNlKClgIGNs
YXVzZXM/IFdlbGwsIGFmdGVyIGFsbCBgV2lsbE9uY2UoKWBzIGFyZSB1c2VkIHVwLCBHb29nbGUg
TW9jayB3aWxsIGRvIHRoZSBfZGVmYXVsdF8gYWN0aW9uIGZvciB0aGUgZnVuY3Rpb24gZXZlcnkg
dGltZSAodW5sZXNzLCBvZiBjb3Vyc2UsIHlvdSBoYXZlIGEgYFdpbGxSZXBlYXRlZGx5KClgLiku
CisKK1doYXQgY2FuIHdlIGRvIGluc2lkZSBgV2lsbE9uY2UoKWAgYmVzaWRlcyBgUmV0dXJuKClg
PyBZb3UgY2FuIHJldHVybiBhIHJlZmVyZW5jZSB1c2luZyBgUmV0dXJuUmVmKHZhcmlhYmxlKWAs
IG9yIGludm9rZSBhIHByZS1kZWZpbmVkIGZ1bmN0aW9uLCBhbW9uZyBbb3RoZXJzXShDaGVhdFNo
ZWV0Lm1kI2FjdGlvbnMpLgorCisqKkltcG9ydGFudCBub3RlOioqIFRoZSBgRVhQRUNUX0NBTEwo
KWAgc3RhdGVtZW50IGV2YWx1YXRlcyB0aGUgYWN0aW9uIGNsYXVzZSBvbmx5IG9uY2UsIGV2ZW4g
dGhvdWdoIHRoZSBhY3Rpb24gbWF5IGJlIHBlcmZvcm1lZCBtYW55IHRpbWVzLiBUaGVyZWZvcmUg
eW91IG11c3QgYmUgY2FyZWZ1bCBhYm91dCBzaWRlIGVmZmVjdHMuIFRoZSBmb2xsb3dpbmcgbWF5
IG5vdCBkbyB3aGF0IHlvdSB3YW50OgorCitgYGAKK2ludCBuID0gMTAwOworRVhQRUNUX0NBTEwo
dHVydGxlLCBHZXRYKCkpCisuVGltZXMoNCkKKy5XaWxsUmVwZWF0ZWRseShSZXR1cm4obisrKSk7
CitgYGAKKworSW5zdGVhZCBvZiByZXR1cm5pbmcgMTAwLCAxMDEsIDEwMiwgLi4uLCBjb25zZWN1
dGl2ZWx5LCB0aGlzIG1vY2sgZnVuY3Rpb24gd2lsbCBhbHdheXMgcmV0dXJuIDEwMCBhcyBgbisr
YCBpcyBvbmx5IGV2YWx1YXRlZCBvbmNlLiBTaW1pbGFybHksIGBSZXR1cm4obmV3IEZvbylgIHdp
bGwgY3JlYXRlIGEgbmV3IGBGb29gIG9iamVjdCB3aGVuIHRoZSBgRVhQRUNUX0NBTEwoKWAgaXMg
ZXhlY3V0ZWQsIGFuZCB3aWxsIHJldHVybiB0aGUgc2FtZSBwb2ludGVyIGV2ZXJ5IHRpbWUuIElm
IHlvdSB3YW50IHRoZSBzaWRlIGVmZmVjdCB0byBoYXBwZW4gZXZlcnkgdGltZSwgeW91IG5lZWQg
dG8gZGVmaW5lIGEgY3VzdG9tIGFjdGlvbiwgd2hpY2ggd2UnbGwgdGVhY2ggaW4gdGhlIFtDb29r
Qm9va10oQ29va0Jvb2subWQpLgorCitUaW1lIGZvciBhbm90aGVyIHF1aXohIFdoYXQgZG8geW91
IHRoaW5rIHRoZSBmb2xsb3dpbmcgbWVhbnM/CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpSZXR1
cm47Li4uCitFWFBFQ1RfQ0FMTCh0dXJ0bGUsIEdldFkoKSkKKy5UaW1lcyg0KQorLldpbGxPbmNl
KFJldHVybigxMDApKTsKK2BgYAorCitPYnZpb3VzbHkgYHR1cnRsZS5HZXRZKClgIGlzIGV4cGVj
dGVkIHRvIGJlIGNhbGxlZCBmb3VyIHRpbWVzLiBCdXQgaWYgeW91IHRoaW5rIGl0IHdpbGwgcmV0
dXJuIDEwMCBldmVyeSB0aW1lLCB0aGluayB0d2ljZSEgUmVtZW1iZXIgdGhhdCBvbmUgYFdpbGxP
bmNlKClgIGNsYXVzZSB3aWxsIGJlIGNvbnN1bWVkIGVhY2ggdGltZSB0aGUgZnVuY3Rpb24gaXMg
aW52b2tlZCBhbmQgdGhlIGRlZmF1bHQgYWN0aW9uIHdpbGwgYmUgdGFrZW4gYWZ0ZXJ3YXJkcy4g
U28gdGhlIHJpZ2h0IGFuc3dlciBpcyB0aGF0IGB0dXJ0bGUuR2V0WSgpYCB3aWxsIHJldHVybiAx
MDAgdGhlIGZpcnN0IHRpbWUsIGJ1dCAqKnJldHVybiAwIGZyb20gdGhlIHNlY29uZCB0aW1lIG9u
KiosIGFzIHJldHVybmluZyAwIGlzIHRoZSBkZWZhdWx0IGFjdGlvbiBmb3IgYGludGAgZnVuY3Rp
b25zLgorCisjIyBVc2luZyBNdWx0aXBsZSBFeHBlY3RhdGlvbnMgIyMKK1NvIGZhciB3ZSd2ZSBv
bmx5IHNob3duIGV4YW1wbGVzIHdoZXJlIHlvdSBoYXZlIGEgc2luZ2xlIGV4cGVjdGF0aW9uLiBN
b3JlIHJlYWxpc3RpY2FsbHksIHlvdSdyZSBnb2luZyB0byBzcGVjaWZ5IGV4cGVjdGF0aW9ucyBv
biBtdWx0aXBsZSBtb2NrIG1ldGhvZHMsIHdoaWNoIG1heSBiZSBmcm9tIG11bHRpcGxlIG1vY2sg
b2JqZWN0cy4KKworQnkgZGVmYXVsdCwgd2hlbiBhIG1vY2sgbWV0aG9kIGlzIGludm9rZWQsIEdv
b2dsZSBNb2NrIHdpbGwgc2VhcmNoIHRoZSBleHBlY3RhdGlvbnMgaW4gdGhlICoqcmV2ZXJzZSBv
cmRlcioqIHRoZXkgYXJlIGRlZmluZWQsIGFuZCBzdG9wIHdoZW4gYW4gYWN0aXZlIGV4cGVjdGF0
aW9uIHRoYXQgbWF0Y2hlcyB0aGUgYXJndW1lbnRzIGlzIGZvdW5kICh5b3UgY2FuIHRoaW5rIG9m
IGl0IGFzICJuZXdlciBydWxlcyBvdmVycmlkZSBvbGRlciBvbmVzLiIpLiBJZiB0aGUgbWF0Y2hp
bmcgZXhwZWN0YXRpb24gY2Fubm90IHRha2UgYW55IG1vcmUgY2FsbHMsIHlvdSB3aWxsIGdldCBh
biB1cHBlci1ib3VuZC12aW9sYXRlZCBmYWlsdXJlLiBIZXJlJ3MgYW4gZXhhbXBsZToKKworYGBg
Cit1c2luZyA6OnRlc3Rpbmc6Ol87Li4uCitFWFBFQ1RfQ0FMTCh0dXJ0bGUsIEZvcndhcmQoXykp
OyAgLy8gIzEKK0VYUEVDVF9DQUxMKHR1cnRsZSwgRm9yd2FyZCgxMCkpICAvLyAjMgorICAgIC5U
aW1lcygyKTsKK2BgYAorCitJZiBgRm9yd2FyZCgxMClgIGlzIGNhbGxlZCB0aHJlZSB0aW1lcyBp
biBhIHJvdywgdGhlIHRoaXJkIHRpbWUgaXQgd2lsbCBiZSBhbiBlcnJvciwgYXMgdGhlIGxhc3Qg
bWF0Y2hpbmcgZXhwZWN0YXRpb24gKCMyKSBoYXMgYmVlbiBzYXR1cmF0ZWQuIElmLCBob3dldmVy
LCB0aGUgdGhpcmQgYEZvcndhcmQoMTApYCBjYWxsIGlzIHJlcGxhY2VkIGJ5IGBGb3J3YXJkKDIw
KWAsIHRoZW4gaXQgd291bGQgYmUgT0ssIGFzIG5vdyAjMSB3aWxsIGJlIHRoZSBtYXRjaGluZyBl
eHBlY3RhdGlvbi4KKworKipTaWRlIG5vdGU6KiogV2h5IGRvZXMgR29vZ2xlIE1vY2sgc2VhcmNo
IGZvciBhIG1hdGNoIGluIHRoZSBfcmV2ZXJzZV8gb3JkZXIgb2YgdGhlIGV4cGVjdGF0aW9ucz8g
VGhlIHJlYXNvbiBpcyB0aGF0IHRoaXMgYWxsb3dzIGEgdXNlciB0byBzZXQgdXAgdGhlIGRlZmF1
bHQgZXhwZWN0YXRpb25zIGluIGEgbW9jayBvYmplY3QncyBjb25zdHJ1Y3RvciBvciB0aGUgdGVz
dCBmaXh0dXJlJ3Mgc2V0LXVwIHBoYXNlIGFuZCB0aGVuIGN1c3RvbWl6ZSB0aGUgbW9jayBieSB3
cml0aW5nIG1vcmUgc3BlY2lmaWMgZXhwZWN0YXRpb25zIGluIHRoZSB0ZXN0IGJvZHkuIFNvLCBp
ZiB5b3UgaGF2ZSB0d28gZXhwZWN0YXRpb25zIG9uIHRoZSBzYW1lIG1ldGhvZCwgeW91IHdhbnQg
dG8gcHV0IHRoZSBvbmUgd2l0aCBtb3JlIHNwZWNpZmljIG1hdGNoZXJzICoqYWZ0ZXIqKiB0aGUg
b3RoZXIsIG9yIHRoZSBtb3JlIHNwZWNpZmljIHJ1bGUgd291bGQgYmUgc2hhZG93ZWQgYnkgdGhl
IG1vcmUgZ2VuZXJhbCBvbmUgdGhhdCBjb21lcyBhZnRlciBpdC4KKworIyMgT3JkZXJlZCB2cyBV
bm9yZGVyZWQgQ2FsbHMgIyMKK0J5IGRlZmF1bHQsIGFuIGV4cGVjdGF0aW9uIGNhbiBtYXRjaCBh
IGNhbGwgZXZlbiB0aG91Z2ggYW4gZWFybGllciBleHBlY3RhdGlvbiBoYXNuJ3QgYmVlbiBzYXRp
c2ZpZWQuIEluIG90aGVyIHdvcmRzLCB0aGUgY2FsbHMgZG9uJ3QgaGF2ZSB0byBvY2N1ciBpbiB0
aGUgb3JkZXIgdGhlIGV4cGVjdGF0aW9ucyBhcmUgc3BlY2lmaWVkLgorCitTb21ldGltZXMsIHlv
dSBtYXkgd2FudCBhbGwgdGhlIGV4cGVjdGVkIGNhbGxzIHRvIG9jY3VyIGluIGEgc3RyaWN0IG9y
ZGVyLiBUbyBzYXkgdGhpcyBpbiBHb29nbGUgTW9jayBpcyBlYXN5OgorCitgYGAKK3VzaW5nIDo6
dGVzdGluZzo6SW5TZXF1ZW5jZTsuLi4KK1RFU1QoRm9vVGVzdCwgRHJhd3NMaW5lU2VnbWVudCkg
eworICAuLi4KKyAgeworICAgIEluU2VxdWVuY2UgZHVtbXk7CisKKyAgICBFWFBFQ1RfQ0FMTCh0
dXJ0bGUsIFBlbkRvd24oKSk7CisgICAgRVhQRUNUX0NBTEwodHVydGxlLCBGb3J3YXJkKDEwMCkp
OworICAgIEVYUEVDVF9DQUxMKHR1cnRsZSwgUGVuVXAoKSk7CisgIH0KKyAgRm9vKCk7Cit9Citg
YGAKKworQnkgY3JlYXRpbmcgYW4gb2JqZWN0IG9mIHR5cGUgYEluU2VxdWVuY2VgLCBhbGwgZXhw
ZWN0YXRpb25zIGluIGl0cyBzY29wZSBhcmUgcHV0IGludG8gYSBfc2VxdWVuY2VfIGFuZCBoYXZl
IHRvIG9jY3VyIF9zZXF1ZW50aWFsbHlfLiBTaW5jZSB3ZSBhcmUganVzdCByZWx5aW5nIG9uIHRo
ZSBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvciBvZiB0aGlzIG9iamVjdCB0byBkbyB0aGUgYWN0
dWFsIHdvcmssIGl0cyBuYW1lIGlzIHJlYWxseSBpcnJlbGV2YW50LgorCitJbiB0aGlzIGV4YW1w
bGUsIHdlIHRlc3QgdGhhdCBgRm9vKClgIGNhbGxzIHRoZSB0aHJlZSBleHBlY3RlZCBmdW5jdGlv
bnMgaW4gdGhlIG9yZGVyIGFzIHdyaXR0ZW4uIElmIGEgY2FsbCBpcyBtYWRlIG91dC1vZi1vcmRl
ciwgaXQgd2lsbCBiZSBhbiBlcnJvci4KKworKFdoYXQgaWYgeW91IGNhcmUgYWJvdXQgdGhlIHJl
bGF0aXZlIG9yZGVyIG9mIHNvbWUgb2YgdGhlIGNhbGxzLCBidXQgbm90IGFsbCBvZiB0aGVtPyBD
YW4geW91IHNwZWNpZnkgYW4gYXJiaXRyYXJ5IHBhcnRpYWwgb3JkZXI/IFRoZSBhbnN3ZXIgaXMg
Li4uIHllcyEgSWYgeW91IGFyZSBpbXBhdGllbnQsIHRoZSBkZXRhaWxzIGNhbiBiZSBmb3VuZCBp
biB0aGUgW0Nvb2tCb29rXShDb29rQm9vayNFeHBlY3RpbmdfUGFydGlhbGx5X09yZGVyZWRfQ2Fs
bHMubWQpLikKKworIyMgQWxsIEV4cGVjdGF0aW9ucyBBcmUgU3RpY2t5IChVbmxlc3MgU2FpZCBP
dGhlcndpc2UpICMjCitOb3cgbGV0J3MgZG8gYSBxdWljayBxdWl6IHRvIHNlZSBob3cgd2VsbCB5
b3UgY2FuIHVzZSB0aGlzIG1vY2sgc3R1ZmYgYWxyZWFkeS4gSG93IHdvdWxkIHlvdSB0ZXN0IHRo
YXQgdGhlIHR1cnRsZSBpcyBhc2tlZCB0byBnbyB0byB0aGUgb3JpZ2luIF9leGFjdGx5IHR3aWNl
XyAoeW91IHdhbnQgdG8gaWdub3JlIGFueSBvdGhlciBpbnN0cnVjdGlvbnMgaXQgcmVjZWl2ZXMp
PworCitBZnRlciB5b3UndmUgY29tZSB1cCB3aXRoIHlvdXIgYW5zd2VyLCB0YWtlIGEgbG9vayBh
dCBvdXJzIGFuZCBjb21wYXJlIG5vdGVzIChzb2x2ZSBpdCB5b3Vyc2VsZiBmaXJzdCAtIGRvbid0
IGNoZWF0ISk6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpfOy4uLgorRVhQRUNUX0NBTEwodHVy
dGxlLCBHb1RvKF8sIF8pKSAgLy8gIzEKKyAgICAuVGltZXMoQW55TnVtYmVyKCkpOworRVhQRUNU
X0NBTEwodHVydGxlLCBHb1RvKDAsIDApKSAgLy8gIzIKKyAgICAuVGltZXMoMik7CitgYGAKKwor
U3VwcG9zZSBgdHVydGxlLkdvVG8oMCwgMClgIGlzIGNhbGxlZCB0aHJlZSB0aW1lcy4gSW4gdGhl
IHRoaXJkIHRpbWUsIEdvb2dsZSBNb2NrIHdpbGwgc2VlIHRoYXQgdGhlIGFyZ3VtZW50cyBtYXRj
aCBleHBlY3RhdGlvbiAjMiAocmVtZW1iZXIgdGhhdCB3ZSBhbHdheXMgcGljayB0aGUgbGFzdCBt
YXRjaGluZyBleHBlY3RhdGlvbikuIE5vdywgc2luY2Ugd2Ugc2FpZCB0aGF0IHRoZXJlIHNob3Vs
ZCBiZSBvbmx5IHR3byBzdWNoIGNhbGxzLCBHb29nbGUgTW9jayB3aWxsIHJlcG9ydCBhbiBlcnJv
ciBpbW1lZGlhdGVseS4gVGhpcyBpcyBiYXNpY2FsbHkgd2hhdCB3ZSd2ZSB0b2xkIHlvdSBpbiB0
aGUgIlVzaW5nIE11bHRpcGxlIEV4cGVjdGF0aW9ucyIgc2VjdGlvbiBhYm92ZS4KKworVGhpcyBl
eGFtcGxlIHNob3dzIHRoYXQgKipleHBlY3RhdGlvbnMgaW4gR29vZ2xlIE1vY2sgYXJlICJzdGlj
a3kiIGJ5IGRlZmF1bHQqKiwgaW4gdGhlIHNlbnNlIHRoYXQgdGhleSByZW1haW4gYWN0aXZlIGV2
ZW4gYWZ0ZXIgd2UgaGF2ZSByZWFjaGVkIHRoZWlyIGludm9jYXRpb24gdXBwZXIgYm91bmRzLiBU
aGlzIGlzIGFuIGltcG9ydGFudCBydWxlIHRvIHJlbWVtYmVyLCBhcyBpdCBhZmZlY3RzIHRoZSBt
ZWFuaW5nIG9mIHRoZSBzcGVjLCBhbmQgaXMgKipkaWZmZXJlbnQqKiB0byBob3cgaXQncyBkb25l
IGluIG1hbnkgb3RoZXIgbW9ja2luZyBmcmFtZXdvcmtzIChXaHknZCB3ZSBkbyB0aGF0PyBCZWNh
dXNlIHdlIHRoaW5rIG91ciBydWxlIG1ha2VzIHRoZSBjb21tb24gY2FzZXMgZWFzaWVyIHRvIGV4
cHJlc3MgYW5kIHVuZGVyc3RhbmQuKS4KKworU2ltcGxlPyBMZXQncyBzZWUgaWYgeW91J3ZlIHJl
YWxseSB1bmRlcnN0b29kIGl0OiB3aGF0IGRvZXMgdGhlIGZvbGxvd2luZyBjb2RlIHNheT8KKwor
YGBgCit1c2luZyA6OnRlc3Rpbmc6OlJldHVybjsKKy4uLgorZm9yIChpbnQgaSA9IG47IGkgPiAw
OyBpLS0pIHsKKyAgRVhQRUNUX0NBTEwodHVydGxlLCBHZXRYKCkpCisgICAgICAuV2lsbE9uY2Uo
UmV0dXJuKDEwKmkpKTsKK30KK2BgYAorCitJZiB5b3UgdGhpbmsgaXQgc2F5cyB0aGF0IGB0dXJ0
bGUuR2V0WCgpYCB3aWxsIGJlIGNhbGxlZCBgbmAgdGltZXMgYW5kIHdpbGwgcmV0dXJuIDEwLCAy
MCwgMzAsIC4uLiwgY29uc2VjdXRpdmVseSwgdGhpbmsgdHdpY2UhIFRoZSBwcm9ibGVtIGlzIHRo
YXQsIGFzIHdlIHNhaWQsIGV4cGVjdGF0aW9ucyBhcmUgc3RpY2t5LiBTbywgdGhlIHNlY29uZCB0
aW1lIGB0dXJ0bGUuR2V0WCgpYCBpcyBjYWxsZWQsIHRoZSBsYXN0IChsYXRlc3QpIGBFWFBFQ1Rf
Q0FMTCgpYCBzdGF0ZW1lbnQgd2lsbCBtYXRjaCwgYW5kIHdpbGwgaW1tZWRpYXRlbHkgbGVhZCB0
byBhbiAidXBwZXIgYm91bmQgZXhjZWVkZWQiIGVycm9yIC0gdGhpcyBwaWVjZSBvZiBjb2RlIGlz
IG5vdCB2ZXJ5IHVzZWZ1bCEKKworT25lIGNvcnJlY3Qgd2F5IG9mIHNheWluZyB0aGF0IGB0dXJ0
bGUuR2V0WCgpYCB3aWxsIHJldHVybiAxMCwgMjAsIDMwLCAuLi4sIGlzIHRvIGV4cGxpY2l0bHkg
c2F5IHRoYXQgdGhlIGV4cGVjdGF0aW9ucyBhcmUgX25vdF8gc3RpY2t5LiBJbiBvdGhlciB3b3Jk
cywgdGhleSBzaG91bGQgX3JldGlyZV8gYXMgc29vbiBhcyB0aGV5IGFyZSBzYXR1cmF0ZWQ6CisK
K2BgYAordXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm47CisuLi4KK2ZvciAoaW50IGkgPSBuOyBpID4g
MDsgaS0tKSB7CisgIEVYUEVDVF9DQUxMKHR1cnRsZSwgR2V0WCgpKQorICAgIC5XaWxsT25jZShS
ZXR1cm4oMTAqaSkpCisgICAgLlJldGlyZXNPblNhdHVyYXRpb24oKTsKK30KK2BgYAorCitBbmQs
IHRoZXJlJ3MgYSBiZXR0ZXIgd2F5IHRvIGRvIGl0OiBpbiB0aGlzIGNhc2UsIHdlIGV4cGVjdCB0
aGUgY2FsbHMgdG8gb2NjdXIgaW4gYSBzcGVjaWZpYyBvcmRlciwgYW5kIHdlIGxpbmUgdXAgdGhl
IGFjdGlvbnMgdG8gbWF0Y2ggdGhlIG9yZGVyLiBTaW5jZSB0aGUgb3JkZXIgaXMgaW1wb3J0YW50
IGhlcmUsIHdlIHNob3VsZCBtYWtlIGl0IGV4cGxpY2l0IHVzaW5nIGEgc2VxdWVuY2U6CisKK2Bg
YAordXNpbmcgOjp0ZXN0aW5nOjpJblNlcXVlbmNlOwordXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm47
CisuLi4KK3sKKyAgSW5TZXF1ZW5jZSBzOworCisgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkr
KykgeworICAgIEVYUEVDVF9DQUxMKHR1cnRsZSwgR2V0WCgpKQorICAgICAgICAuV2lsbE9uY2Uo
UmV0dXJuKDEwKmkpKQorICAgICAgICAuUmV0aXJlc09uU2F0dXJhdGlvbigpOworICB9Cit9Citg
YGAKKworQnkgdGhlIHdheSwgdGhlIG90aGVyIHNpdHVhdGlvbiB3aGVyZSBhbiBleHBlY3RhdGlv
biBtYXkgX25vdF8gYmUgc3RpY2t5IGlzIHdoZW4gaXQncyBpbiBhIHNlcXVlbmNlIC0gYXMgc29v
biBhcyBhbm90aGVyIGV4cGVjdGF0aW9uIHRoYXQgY29tZXMgYWZ0ZXIgaXQgaW4gdGhlIHNlcXVl
bmNlIGhhcyBiZWVuIHVzZWQsIGl0IGF1dG9tYXRpY2FsbHkgcmV0aXJlcyAoYW5kIHdpbGwgbmV2
ZXIgYmUgdXNlZCB0byBtYXRjaCBhbnkgY2FsbCkuCisKKyMjIFVuaW50ZXJlc3RpbmcgQ2FsbHMg
IyMKK0EgbW9jayBvYmplY3QgbWF5IGhhdmUgbWFueSBtZXRob2RzLCBhbmQgbm90IGFsbCBvZiB0
aGVtIGFyZSB0aGF0IGludGVyZXN0aW5nLiBGb3IgZXhhbXBsZSwgaW4gc29tZSB0ZXN0cyB3ZSBt
YXkgbm90IGNhcmUgYWJvdXQgaG93IG1hbnkgdGltZXMgYEdldFgoKWAgYW5kIGBHZXRZKClgIGdl
dCBjYWxsZWQuCisKK0luIEdvb2dsZSBNb2NrLCBpZiB5b3UgYXJlIG5vdCBpbnRlcmVzdGVkIGlu
IGEgbWV0aG9kLCBqdXN0IGRvbid0IHNheSBhbnl0aGluZyBhYm91dCBpdC4gSWYgYSBjYWxsIHRv
IHRoaXMgbWV0aG9kIG9jY3VycywgeW91J2xsIHNlZSBhIHdhcm5pbmcgaW4gdGhlIHRlc3Qgb3V0
cHV0LCBidXQgaXQgd29uJ3QgYmUgYSBmYWlsdXJlLgorCisjIFdoYXQgTm93PyAjCitDb25ncmF0
dWxhdGlvbnMhIFlvdSd2ZSBsZWFybmVkIGVub3VnaCBhYm91dCBHb29nbGUgTW9jayB0byBzdGFy
dCB1c2luZyBpdC4gTm93LCB5b3UgbWlnaHQgd2FudCB0byBqb2luIHRoZSBbZ29vZ2xlbW9ja10o
aHR0cDovL2dyb3Vwcy5nb29nbGUuY29tL2dyb3VwL2dvb2dsZW1vY2spIGRpc2N1c3Npb24gZ3Jv
dXAgYW5kIGFjdHVhbGx5IHdyaXRlIHNvbWUgdGVzdHMgdXNpbmcgR29vZ2xlIE1vY2sgLSBpdCB3
aWxsIGJlIGZ1bi4gSGV5LCBpdCBtYXkgZXZlbiBiZSBhZGRpY3RpdmUgLSB5b3UndmUgYmVlbiB3
YXJuZWQuCisKK1RoZW4sIGlmIHlvdSBmZWVsIGxpa2UgaW5jcmVhc2luZyB5b3VyIG1vY2sgcXVv
dGllbnQsIHlvdSBzaG91bGQgbW92ZSBvbiB0byB0aGUgW0Nvb2tCb29rXShDb29rQm9vay5tZCku
IFlvdSBjYW4gbGVhcm4gbWFueSBhZHZhbmNlZCBmZWF0dXJlcyBvZiBHb29nbGUgTW9jayB0aGVy
ZSAtLSBhbmQgYWR2YW5jZSB5b3VyIGxldmVsIG9mIGVuam95bWVudCBhbmQgdGVzdGluZyBibGlz
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvRnJlcXVlbnRseUFza2VkUXVlc3Rpb25z
Lm1kIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZW1vY2svZG9jcy9GcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMubWQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNWVhYzgzZjRiOTgwMGJjMjc5MGYzNzQyYjYyNGE2NjFiMWNiNzBmYgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zLm1kCkBA
IC0wLDAgKzEsNjI4IEBACisKKworUGxlYXNlIHNlbmQgeW91ciBxdWVzdGlvbnMgdG8gdGhlCitb
Z29vZ2xlbW9ja10oaHR0cDovL2dyb3Vwcy5nb29nbGUuY29tL2dyb3VwL2dvb2dsZW1vY2spIGRp
c2N1c3Npb24KK2dyb3VwLiBJZiB5b3UgbmVlZCBoZWxwIHdpdGggY29tcGlsZXIgZXJyb3JzLCBt
YWtlIHN1cmUgeW91IGhhdmUKK3RyaWVkIFtHb29nbGUgTW9jayBEb2N0b3JdKCNIb3dfYW1fSV9z
dXBwb3NlZF90b19tYWtlX3NlbnNlX29mX3RoZXNlX2hvcnJpYmxlX3RlbXBsYXRlX2Vycm9yLm1k
KSBmaXJzdC4KKworIyMgV2hlbiBJIGNhbGwgYSBtZXRob2Qgb24gbXkgbW9jayBvYmplY3QsIHRo
ZSBtZXRob2QgZm9yIHRoZSByZWFsIG9iamVjdCBpcyBpbnZva2VkIGluc3RlYWQuICBXaGF0J3Mg
dGhlIHByb2JsZW0/ICMjCisKK0luIG9yZGVyIGZvciBhIG1ldGhvZCB0byBiZSBtb2NrZWQsIGl0
IG11c3QgYmUgX3ZpcnR1YWxfLCB1bmxlc3MgeW91IHVzZSB0aGUgW2hpZ2gtcGVyZiBkZXBlbmRl
bmN5IGluamVjdGlvbiB0ZWNobmlxdWVdKENvb2tCb29rLm1kI21vY2tpbmctbm9udmlydHVhbC1t
ZXRob2RzKS4KKworIyMgSSB3cm90ZSBzb21lIG1hdGNoZXJzLiAgQWZ0ZXIgSSB1cGdyYWRlZCB0
byBhIG5ldyB2ZXJzaW9uIG9mIEdvb2dsZSBNb2NrLCB0aGV5IG5vIGxvbmdlciBjb21waWxlLiAg
V2hhdCdzIGdvaW5nIG9uPyAjIworCitBZnRlciB2ZXJzaW9uIDEuNC4wIG9mIEdvb2dsZSBNb2Nr
IHdhcyByZWxlYXNlZCwgd2UgaGFkIGFuIGlkZWEgb24gaG93Cit0byBtYWtlIGl0IGVhc2llciB0
byB3cml0ZSBtYXRjaGVycyB0aGF0IGNhbiBnZW5lcmF0ZSBpbmZvcm1hdGl2ZQorbWVzc2FnZXMg
ZWZmaWNpZW50bHkuICBXZSBleHBlcmltZW50ZWQgd2l0aCB0aGlzIGlkZWEgYW5kIGxpa2VkIHdo
YXQKK3dlIHNhdy4gIFRoZXJlZm9yZSB3ZSBkZWNpZGVkIHRvIGltcGxlbWVudCBpdC4KKworVW5m
b3J0dW5hdGVseSwgdGhpcyBtZWFucyB0aGF0IGlmIHlvdSBoYXZlIGRlZmluZWQgeW91ciBvd24g
bWF0Y2hlcnMKK2J5IGltcGxlbWVudGluZyBgTWF0Y2hlckludGVyZmFjZWAgb3IgdXNpbmcgYE1h
a2VQb2x5bW9ycGhpY01hdGNoZXIoKWAsCit5b3VyIGRlZmluaXRpb25zIHdpbGwgbm8gbG9uZ2Vy
IGNvbXBpbGUuICBNYXRjaGVycyBkZWZpbmVkIHVzaW5nIHRoZQorYE1BVENIRVIqYCBmYW1pbHkg
b2YgbWFjcm9zIGFyZSBub3QgYWZmZWN0ZWQuCisKK1NvcnJ5IGZvciB0aGUgaGFzc2xlIGlmIHlv
dXIgbWF0Y2hlcnMgYXJlIGFmZmVjdGVkLiAgV2UgYmVsaWV2ZSBpdCdzCitpbiBldmVyeW9uZSdz
IGxvbmctdGVybSBpbnRlcmVzdCB0byBtYWtlIHRoaXMgY2hhbmdlIHNvb25lciB0aGFuCitsYXRl
ci4gIEZvcnR1bmF0ZWx5LCBpdCdzIHVzdWFsbHkgbm90IGhhcmQgdG8gbWlncmF0ZSBhbiBleGlz
dGluZworbWF0Y2hlciB0byB0aGUgbmV3IEFQSS4gIEhlcmUncyB3aGF0IHlvdSBuZWVkIHRvIGRv
OgorCitJZiB5b3Ugd3JvdGUgeW91ciBtYXRjaGVyIGxpa2UgdGhpczoKK2BgYAorLy8gT2xkIG1h
dGNoZXIgZGVmaW5pdGlvbiB0aGF0IGRvZXNuJ3Qgd29yayB3aXRoIHRoZSBsYXRlc3QKKy8vIEdv
b2dsZSBNb2NrLgordXNpbmcgOjp0ZXN0aW5nOjpNYXRjaGVySW50ZXJmYWNlOworLi4uCitjbGFz
cyBNeVdvbmRlcmZ1bE1hdGNoZXIgOiBwdWJsaWMgTWF0Y2hlckludGVyZmFjZTxNeVR5cGU+IHsK
KyBwdWJsaWM6CisgIC4uLgorICB2aXJ0dWFsIGJvb2wgTWF0Y2hlcyhNeVR5cGUgdmFsdWUpIGNv
bnN0IHsKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdmFsdWUgbWF0Y2hlcy4KKyAgICByZXR1cm4g
dmFsdWUuR2V0Rm9vKCkgPiA1OworICB9CisgIC4uLgorfTsKK2BgYAorCit5b3UnbGwgbmVlZCB0
byBjaGFuZ2UgaXQgdG86CitgYGAKKy8vIE5ldyBtYXRjaGVyIGRlZmluaXRpb24gdGhhdCB3b3Jr
cyB3aXRoIHRoZSBsYXRlc3QgR29vZ2xlIE1vY2suCit1c2luZyA6OnRlc3Rpbmc6Ok1hdGNoZXJJ
bnRlcmZhY2U7Cit1c2luZyA6OnRlc3Rpbmc6Ok1hdGNoUmVzdWx0TGlzdGVuZXI7CisuLi4KK2Ns
YXNzIE15V29uZGVyZnVsTWF0Y2hlciA6IHB1YmxpYyBNYXRjaGVySW50ZXJmYWNlPE15VHlwZT4g
eworIHB1YmxpYzoKKyAgLi4uCisgIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxhaW4oTXlUeXBl
IHZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoUmVzdWx0TGlzdGVu
ZXIqIGxpc3RlbmVyKSBjb25zdCB7CisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHZhbHVlIG1hdGNo
ZXMuCisgICAgcmV0dXJuIHZhbHVlLkdldEZvbygpID4gNTsKKyAgfQorICAuLi4KK307CitgYGAK
KyhpLmUuIHJlbmFtZSBgTWF0Y2hlcygpYCB0byBgTWF0Y2hBbmRFeHBsYWluKClgIGFuZCBnaXZl
IGl0IGEgc2Vjb25kCithcmd1bWVudCBvZiB0eXBlIGBNYXRjaFJlc3VsdExpc3RlbmVyKmAuKQor
CitJZiB5b3Ugd2VyZSBhbHNvIHVzaW5nIGBFeHBsYWluTWF0Y2hSZXN1bHRUbygpYCB0byBpbXBy
b3ZlIHRoZSBtYXRjaGVyCittZXNzYWdlOgorYGBgCisvLyBPbGQgbWF0Y2hlciBkZWZpbml0aW9u
IHRoYXQgZG9lc24ndCB3b3JrIHdpdGggdGhlIGxhc3Rlc3QKKy8vIEdvb2dsZSBNb2NrLgordXNp
bmcgOjp0ZXN0aW5nOjpNYXRjaGVySW50ZXJmYWNlOworLi4uCitjbGFzcyBNeVdvbmRlcmZ1bE1h
dGNoZXIgOiBwdWJsaWMgTWF0Y2hlckludGVyZmFjZTxNeVR5cGU+IHsKKyBwdWJsaWM6CisgIC4u
LgorICB2aXJ0dWFsIGJvb2wgTWF0Y2hlcyhNeVR5cGUgdmFsdWUpIGNvbnN0IHsKKyAgICAvLyBS
ZXR1cm5zIHRydWUgaWYgdmFsdWUgbWF0Y2hlcy4KKyAgICByZXR1cm4gdmFsdWUuR2V0Rm9vKCkg
PiA1OworICB9CisKKyAgdmlydHVhbCB2b2lkIEV4cGxhaW5NYXRjaFJlc3VsdFRvKE15VHlwZSB2
YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6c3RkOjpvc3RyZWFt
KiBvcykgY29uc3QgeworICAgIC8vIFByaW50cyBzb21lIGhlbHBmdWwgaW5mb3JtYXRpb24gdG8g
b3MgdG8gaGVscAorICAgIC8vIGEgdXNlciB1bmRlcnN0YW5kIHdoeSB2YWx1ZSBtYXRjaGVzIChv
ciBkb2Vzbid0IG1hdGNoKS4KKyAgICAqb3MgPDwgInRoZSBGb28gcHJvcGVydHkgaXMgIiA8PCB2
YWx1ZS5HZXRGb28oKTsKKyAgfQorICAuLi4KK307CitgYGAKKworeW91IHNob3VsZCBtb3ZlIHRo
ZSBsb2dpYyBvZiBgRXhwbGFpbk1hdGNoUmVzdWx0VG8oKWAgaW50bworYE1hdGNoQW5kRXhwbGFp
bigpYCwgdXNpbmcgdGhlIGBNYXRjaFJlc3VsdExpc3RlbmVyYCBhcmd1bWVudCB3aGVyZQordGhl
IGA6OnN0ZDo6b3N0cmVhbWAgd2FzIHVzZWQ6CitgYGAKKy8vIE5ldyBtYXRjaGVyIGRlZmluaXRp
b24gdGhhdCB3b3JrcyB3aXRoIHRoZSBsYXRlc3QgR29vZ2xlIE1vY2suCit1c2luZyA6OnRlc3Rp
bmc6Ok1hdGNoZXJJbnRlcmZhY2U7Cit1c2luZyA6OnRlc3Rpbmc6Ok1hdGNoUmVzdWx0TGlzdGVu
ZXI7CisuLi4KK2NsYXNzIE15V29uZGVyZnVsTWF0Y2hlciA6IHB1YmxpYyBNYXRjaGVySW50ZXJm
YWNlPE15VHlwZT4geworIHB1YmxpYzoKKyAgLi4uCisgIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4
cGxhaW4oTXlUeXBlIHZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGNo
UmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBjb25zdCB7CisgICAgLy8gUmV0dXJucyB0cnVlIGlm
IHZhbHVlIG1hdGNoZXMuCisgICAgKmxpc3RlbmVyIDw8ICJ0aGUgRm9vIHByb3BlcnR5IGlzICIg
PDwgdmFsdWUuR2V0Rm9vKCk7CisgICAgcmV0dXJuIHZhbHVlLkdldEZvbygpID4gNTsKKyAgfQor
ICAuLi4KK307CitgYGAKKworSWYgeW91ciBtYXRjaGVyIGlzIGRlZmluZWQgdXNpbmcgYE1ha2VQ
b2x5bW9ycGhpY01hdGNoZXIoKWA6CitgYGAKKy8vIE9sZCBtYXRjaGVyIGRlZmluaXRpb24gdGhh
dCBkb2Vzbid0IHdvcmsgd2l0aCB0aGUgbGF0ZXN0CisvLyBHb29nbGUgTW9jay4KK3VzaW5nIDo6
dGVzdGluZzo6TWFrZVBvbHltb3JwaGljTWF0Y2hlcjsKKy4uLgorY2xhc3MgTXlHcmVhdE1hdGNo
ZXIgeworIHB1YmxpYzoKKyAgLi4uCisgIGJvb2wgTWF0Y2hlcyhNeVR5cGUgdmFsdWUpIGNvbnN0
IHsKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdmFsdWUgbWF0Y2hlcy4KKyAgICByZXR1cm4gdmFs
dWUuR2V0QmFyKCkgPCA0MjsKKyAgfQorICAuLi4KK307CisuLi4gTWFrZVBvbHltb3JwaGljTWF0
Y2hlcihNeUdyZWF0TWF0Y2hlcigpKSAuLi4KK2BgYAorCit5b3Ugc2hvdWxkIHJlbmFtZSB0aGUg
YE1hdGNoZXMoKWAgbWV0aG9kIHRvIGBNYXRjaEFuZEV4cGxhaW4oKWAgYW5kCithZGQgYSBgTWF0
Y2hSZXN1bHRMaXN0ZW5lcipgIGFyZ3VtZW50ICh0aGUgc2FtZSBhcyB3aGF0IHlvdSBuZWVkIHRv
IGRvCitmb3IgbWF0Y2hlcnMgZGVmaW5lZCBieSBpbXBsZW1lbnRpbmcgYE1hdGNoZXJJbnRlcmZh
Y2VgKToKK2BgYAorLy8gTmV3IG1hdGNoZXIgZGVmaW5pdGlvbiB0aGF0IHdvcmtzIHdpdGggdGhl
IGxhdGVzdCBHb29nbGUgTW9jay4KK3VzaW5nIDo6dGVzdGluZzo6TWFrZVBvbHltb3JwaGljTWF0
Y2hlcjsKK3VzaW5nIDo6dGVzdGluZzo6TWF0Y2hSZXN1bHRMaXN0ZW5lcjsKKy4uLgorY2xhc3Mg
TXlHcmVhdE1hdGNoZXIgeworIHB1YmxpYzoKKyAgLi4uCisgIGJvb2wgTWF0Y2hBbmRFeHBsYWlu
KE15VHlwZSB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHRMaXN0ZW5l
ciogbGlzdGVuZXIpIGNvbnN0IHsKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdmFsdWUgbWF0Y2hl
cy4KKyAgICByZXR1cm4gdmFsdWUuR2V0QmFyKCkgPCA0MjsKKyAgfQorICAuLi4KK307CisuLi4g
TWFrZVBvbHltb3JwaGljTWF0Y2hlcihNeUdyZWF0TWF0Y2hlcigpKSAuLi4KK2BgYAorCitJZiB5
b3VyIHBvbHltb3JwaGljIG1hdGNoZXIgdXNlcyBgRXhwbGFpbk1hdGNoUmVzdWx0VG8oKWAgZm9y
IGJldHRlcgorZmFpbHVyZSBtZXNzYWdlczoKK2BgYAorLy8gT2xkIG1hdGNoZXIgZGVmaW5pdGlv
biB0aGF0IGRvZXNuJ3Qgd29yayB3aXRoIHRoZSBsYXRlc3QKKy8vIEdvb2dsZSBNb2NrLgordXNp
bmcgOjp0ZXN0aW5nOjpNYWtlUG9seW1vcnBoaWNNYXRjaGVyOworLi4uCitjbGFzcyBNeUdyZWF0
TWF0Y2hlciB7CisgcHVibGljOgorICAuLi4KKyAgYm9vbCBNYXRjaGVzKE15VHlwZSB2YWx1ZSkg
Y29uc3QgeworICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB2YWx1ZSBtYXRjaGVzLgorICAgIHJldHVy
biB2YWx1ZS5HZXRCYXIoKSA8IDQyOworICB9CisgIC4uLgorfTsKK3ZvaWQgRXhwbGFpbk1hdGNo
UmVzdWx0VG8oY29uc3QgTXlHcmVhdE1hdGNoZXImIG1hdGNoZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIE15VHlwZSB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgOjpzdGQ6
Om9zdHJlYW0qIG9zKSB7CisgIC8vIFByaW50cyBzb21lIGhlbHBmdWwgaW5mb3JtYXRpb24gdG8g
b3MgdG8gaGVscAorICAvLyBhIHVzZXIgdW5kZXJzdGFuZCB3aHkgdmFsdWUgbWF0Y2hlcyAob3Ig
ZG9lc24ndCBtYXRjaCkuCisgICpvcyA8PCAidGhlIEJhciBwcm9wZXJ0eSBpcyAiIDw8IHZhbHVl
LkdldEJhcigpOworfQorLi4uIE1ha2VQb2x5bW9ycGhpY01hdGNoZXIoTXlHcmVhdE1hdGNoZXIo
KSkgLi4uCitgYGAKKworeW91J2xsIG5lZWQgdG8gbW92ZSB0aGUgbG9naWMgaW5zaWRlIGBFeHBs
YWluTWF0Y2hSZXN1bHRUbygpYCB0bworYE1hdGNoQW5kRXhwbGFpbigpYDoKK2BgYAorLy8gTmV3
IG1hdGNoZXIgZGVmaW5pdGlvbiB0aGF0IHdvcmtzIHdpdGggdGhlIGxhdGVzdCBHb29nbGUgTW9j
ay4KK3VzaW5nIDo6dGVzdGluZzo6TWFrZVBvbHltb3JwaGljTWF0Y2hlcjsKK3VzaW5nIDo6dGVz
dGluZzo6TWF0Y2hSZXN1bHRMaXN0ZW5lcjsKKy4uLgorY2xhc3MgTXlHcmVhdE1hdGNoZXIgewor
IHB1YmxpYzoKKyAgLi4uCisgIGJvb2wgTWF0Y2hBbmRFeHBsYWluKE15VHlwZSB2YWx1ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNvbnN0
IHsKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdmFsdWUgbWF0Y2hlcy4KKyAgICAqbGlzdGVuZXIg
PDwgInRoZSBCYXIgcHJvcGVydHkgaXMgIiA8PCB2YWx1ZS5HZXRCYXIoKTsKKyAgICByZXR1cm4g
dmFsdWUuR2V0QmFyKCkgPCA0MjsKKyAgfQorICAuLi4KK307CisuLi4gTWFrZVBvbHltb3JwaGlj
TWF0Y2hlcihNeUdyZWF0TWF0Y2hlcigpKSAuLi4KK2BgYAorCitGb3IgbW9yZSBpbmZvcm1hdGlv
biwgeW91IGNhbiByZWFkIHRoZXNlCitbdHdvXShDb29rQm9vay5tZCN3cml0aW5nLW5ldy1tb25v
bW9ycGhpYy1tYXRjaGVycykKK1tyZWNpcGVzXShDb29rQm9vay5tZCN3cml0aW5nLW5ldy1wb2x5
bW9ycGhpYy1tYXRjaGVycykKK2Zyb20gdGhlIGNvb2tib29rLiAgQXMgYWx3YXlzLCB5b3UKK2Fy
ZSB3ZWxjb21lIHRvIHBvc3QgcXVlc3Rpb25zIG9uIGBnb29nbGVtb2NrQGdvb2dsZWdyb3Vwcy5j
b21gIGlmIHlvdQorbmVlZCBhbnkgaGVscC4KKworIyMgV2hlbiB1c2luZyBHb29nbGUgTW9jaywg
ZG8gSSBoYXZlIHRvIHVzZSBHb29nbGUgVGVzdCBhcyB0aGUgdGVzdGluZyBmcmFtZXdvcms/ICBJ
IGhhdmUgbXkgZmF2b3JpdGUgdGVzdGluZyBmcmFtZXdvcmsgYW5kIGRvbid0IHdhbnQgdG8gc3dp
dGNoLiAjIworCitHb29nbGUgTW9jayB3b3JrcyBvdXQgb2YgdGhlIGJveCB3aXRoIEdvb2dsZSBU
ZXN0LiAgSG93ZXZlciwgaXQncyBlYXN5Cit0byBjb25maWd1cmUgaXQgdG8gd29yayB3aXRoIGFu
eSB0ZXN0aW5nIGZyYW1ld29yayBvZiB5b3VyIGNob2ljZS4KK1tIZXJlXShGb3JEdW1taWVzLm1k
I3VzaW5nLWdvb2dsZS1tb2NrLXdpdGgtYW55LXRlc3RpbmctZnJhbWV3b3JrKSBpcyBob3cuCisK
KyMjIEhvdyBhbSBJIHN1cHBvc2VkIHRvIG1ha2Ugc2Vuc2Ugb2YgdGhlc2UgaG9ycmlibGUgdGVt
cGxhdGUgZXJyb3JzPyAjIworCitJZiB5b3UgYXJlIGNvbmZ1c2VkIGJ5IHRoZSBjb21waWxlciBl
cnJvcnMgZ2NjIHRocmV3IGF0IHlvdSwKK3RyeSBjb25zdWx0aW5nIHRoZSBfR29vZ2xlIE1vY2sg
RG9jdG9yXyB0b29sIGZpcnN0LiAgV2hhdCBpdCBkb2VzIGlzIHRvCitzY2FuIHN0ZGluIGZvciBn
Y2MgZXJyb3IgbWVzc2FnZXMsIGFuZCBzcGl0IG91dCBkaWFnbm9zZXMgb24gdGhlCitwcm9ibGVt
cyAod2UgY2FsbCB0aGVtIGRpc2Vhc2VzKSB5b3VyIGNvZGUgaGFzLgorCitUbyAiaW5zdGFsbCIs
IHJ1biBjb21tYW5kOgorYGBgCithbGlhcyBnbWQ9JzxwYXRoIHRvIGdvb2dsZW1vY2s+L3Njcmlw
dHMvZ21vY2tfZG9jdG9yLnB5JworYGBgCisKK1RvIHVzZSBpdCwgZG86CitgYGAKKzx5b3VyLWZh
dm9yaXRlLWJ1aWxkLWNvbW1hbmQ+IDx5b3VyLXRlc3Q+IDI+JjEgfCBnbWQKK2BgYAorCitGb3Ig
ZXhhbXBsZToKK2BgYAorbWFrZSBteV90ZXN0IDI+JjEgfCBnbWQKK2BgYAorCitPciB5b3UgY2Fu
IHJ1biBgZ21kYCBhbmQgY29weS1uLXBhc3RlIGdjYydzIGVycm9yIG1lc3NhZ2VzIHRvIGl0Lgor
CisjIyBDYW4gSSBtb2NrIGEgdmFyaWFkaWMgZnVuY3Rpb24/ICMjCisKK1lvdSBjYW5ub3QgbW9j
ayBhIHZhcmlhZGljIGZ1bmN0aW9uIChpLmUuIGEgZnVuY3Rpb24gdGFraW5nIGVsbGlwc2lzCiso
YC4uLmApIGFyZ3VtZW50cykgZGlyZWN0bHkgaW4gR29vZ2xlIE1vY2suCisKK1RoZSBwcm9ibGVt
IGlzIHRoYXQgaW4gZ2VuZXJhbCwgdGhlcmUgaXMgX25vIHdheV8gZm9yIGEgbW9jayBvYmplY3Qg
dG8KK2tub3cgaG93IG1hbnkgYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gdGhlIHZhcmlhZGljIG1l
dGhvZCwgYW5kIHdoYXQKK3RoZSBhcmd1bWVudHMnIHR5cGVzIGFyZS4gIE9ubHkgdGhlIF9hdXRo
b3Igb2YgdGhlIGJhc2UgY2xhc3NfIGtub3dzCit0aGUgcHJvdG9jb2wsIGFuZCB3ZSBjYW5ub3Qg
bG9vayBpbnRvIGhpcyBoZWFkLgorCitUaGVyZWZvcmUsIHRvIG1vY2sgc3VjaCBhIGZ1bmN0aW9u
LCB0aGUgX3VzZXJfIG11c3QgdGVhY2ggdGhlIG1vY2sKK29iamVjdCBob3cgdG8gZmlndXJlIG91
dCB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBhbmQgdGhlaXIgdHlwZXMuICBPbmUKK3dheSB0byBk
byBpdCBpcyB0byBwcm92aWRlIG92ZXJsb2FkZWQgdmVyc2lvbnMgb2YgdGhlIGZ1bmN0aW9uLgor
CitFbGxpcHNpcyBhcmd1bWVudHMgYXJlIGluaGVyaXRlZCBmcm9tIEMgYW5kIG5vdCByZWFsbHkg
YSBDKysgZmVhdHVyZS4KK1RoZXkgYXJlIHVuc2FmZSB0byB1c2UgYW5kIGRvbid0IHdvcmsgd2l0
aCBhcmd1bWVudHMgdGhhdCBoYXZlCitjb25zdHJ1Y3RvcnMgb3IgZGVzdHJ1Y3RvcnMuICBUaGVy
ZWZvcmUgd2UgcmVjb21tZW5kIHRvIGF2b2lkIHRoZW0gaW4KK0MrKyBhcyBtdWNoIGFzIHBvc3Np
YmxlLgorCisjIyBNU1ZDIGdpdmVzIG1lIHdhcm5pbmcgQzQzMDEgb3IgQzQzNzMgd2hlbiBJIGRl
ZmluZSBhIG1vY2sgbWV0aG9kIHdpdGggYSBjb25zdCBwYXJhbWV0ZXIuICBXaHk/ICMjCisKK0lm
IHlvdSBjb21waWxlIHRoaXMgdXNpbmcgTWljcm9zb2Z0IFZpc3VhbCBDKysgMjAwNSBTUDE6Citg
YGAKK2NsYXNzIEZvbyB7CisgIC4uLgorICB2aXJ0dWFsIHZvaWQgQmFyKGNvbnN0IGludCBpKSA9
IDA7Cit9OworCitjbGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7CisgIC4uLgorICBNT0NLX01F
VEhPRDEoQmFyLCB2b2lkKGNvbnN0IGludCBpKSk7Cit9OworYGBgCitZb3UgbWF5IGdldCB0aGUg
Zm9sbG93aW5nIHdhcm5pbmc6CitgYGAKK3dhcm5pbmcgQzQzMDE6ICdNb2NrRm9vOjpCYXInOiBv
dmVycmlkaW5nIHZpcnR1YWwgZnVuY3Rpb24gb25seSBkaWZmZXJzIGZyb20gJ0Zvbzo6QmFyJyBi
eSBjb25zdC92b2xhdGlsZSBxdWFsaWZpZXIKK2BgYAorCitUaGlzIGlzIGEgTVNWQyBidWcuICBU
aGUgc2FtZSBjb2RlIGNvbXBpbGVzIGZpbmUgd2l0aCBnY2MgLGZvcgorZXhhbXBsZS4gIElmIHlv
dSB1c2UgVmlzdWFsIEMrKyAyMDA4IFNQMSwgeW91IHdvdWxkIGdldCB0aGUgd2FybmluZzoKK2Bg
YAord2FybmluZyBDNDM3MzogJ01vY2tGb286OkJhcic6IHZpcnR1YWwgZnVuY3Rpb24gb3ZlcnJp
ZGVzICdGb286OkJhcicsIHByZXZpb3VzIHZlcnNpb25zIG9mIHRoZSBjb21waWxlciBkaWQgbm90
IG92ZXJyaWRlIHdoZW4gcGFyYW1ldGVycyBvbmx5IGRpZmZlcmVkIGJ5IGNvbnN0L3ZvbGF0aWxl
IHF1YWxpZmllcnMKK2BgYAorCitJbiBDKyssIGlmIHlvdSBfZGVjbGFyZV8gYSBmdW5jdGlvbiB3
aXRoIGEgYGNvbnN0YCBwYXJhbWV0ZXIsIHRoZQorYGNvbnN0YCBtb2RpZmllciBpcyBfaWdub3Jl
ZF8uICBUaGVyZWZvcmUsIHRoZSBgRm9vYCBiYXNlIGNsYXNzIGFib3ZlCitpcyBlcXVpdmFsZW50
IHRvOgorYGBgCitjbGFzcyBGb28geworICAuLi4KKyAgdmlydHVhbCB2b2lkIEJhcihpbnQgaSkg
PSAwOyAgLy8gaW50IG9yIGNvbnN0IGludD8gIE1ha2VzIG5vIGRpZmZlcmVuY2UuCit9OworYGBg
CisKK0luIGZhY3QsIHlvdSBjYW4gX2RlY2xhcmVfIEJhcigpIHdpdGggYW4gYGludGAgcGFyYW1l
dGVyLCBhbmQgX2RlZmluZV8KK2l0IHdpdGggYSBgY29uc3QgaW50YCBwYXJhbWV0ZXIuICBUaGUg
Y29tcGlsZXIgd2lsbCBzdGlsbCBtYXRjaCB0aGVtCit1cC4KKworU2luY2UgbWFraW5nIGEgcGFy
YW1ldGVyIGBjb25zdGAgaXMgbWVhbmluZ2xlc3MgaW4gdGhlIG1ldGhvZAorX2RlY2xhcmF0aW9u
Xywgd2UgcmVjb21tZW5kIHRvIHJlbW92ZSBpdCBpbiBib3RoIGBGb29gIGFuZCBgTW9ja0Zvb2Au
CitUaGF0IHNob3VsZCB3b3JrYXJvdW5kIHRoZSBWQyBidWcuCisKK05vdGUgdGhhdCB3ZSBhcmUg
dGFsa2luZyBhYm91dCB0aGUgX3RvcC1sZXZlbF8gYGNvbnN0YCBtb2RpZmllciBoZXJlLgorSWYg
dGhlIGZ1bmN0aW9uIHBhcmFtZXRlciBpcyBwYXNzZWQgYnkgcG9pbnRlciBvciByZWZlcmVuY2Us
IGRlY2xhcmluZwordGhlIF9wb2ludGVlXyBvciBfcmVmZXJlZV8gYXMgYGNvbnN0YCBpcyBzdGls
bCBtZWFuaW5nZnVsLiAgRm9yCitleGFtcGxlLCB0aGUgZm9sbG93aW5nIHR3byBkZWNsYXJhdGlv
bnMgYXJlIF9ub3RfIGVxdWl2YWxlbnQ6CitgYGAKK3ZvaWQgQmFyKGludCogcCk7ICAgICAgICAv
LyBOZWl0aGVyIHAgbm9yICpwIGlzIGNvbnN0Lgordm9pZCBCYXIoY29uc3QgaW50KiBwKTsgIC8v
IHAgaXMgbm90IGNvbnN0LCBidXQgKnAgaXMuCitgYGAKKworIyMgSSBoYXZlIGEgaHVnZSBtb2Nr
IGNsYXNzLCBhbmQgTWljcm9zb2Z0IFZpc3VhbCBDKysgcnVucyBvdXQgb2YgbWVtb3J5IHdoZW4g
Y29tcGlsaW5nIGl0LiAgV2hhdCBjYW4gSSBkbz8gIyMKKworV2UndmUgbm90aWNlZCB0aGF0IHdo
ZW4gdGhlIGAvY2xyYCBjb21waWxlciBmbGFnIGlzIHVzZWQsIFZpc3VhbCBDKysKK3VzZXMgNX42
IHRpbWVzIGFzIG11Y2ggbWVtb3J5IHdoZW4gY29tcGlsaW5nIGEgbW9jayBjbGFzcy4gIFdlIHN1
Z2dlc3QKK3RvIGF2b2lkIGAvY2xyYCB3aGVuIGNvbXBpbGluZyBuYXRpdmUgQysrIG1vY2tzLgor
CisjIyBJIGNhbid0IGZpZ3VyZSBvdXQgd2h5IEdvb2dsZSBNb2NrIHRoaW5rcyBteSBleHBlY3Rh
dGlvbnMgYXJlIG5vdCBzYXRpc2ZpZWQuICBXaGF0IHNob3VsZCBJIGRvPyAjIworCitZb3UgbWln
aHQgd2FudCB0byBydW4geW91ciB0ZXN0IHdpdGgKK2AtLWdtb2NrX3ZlcmJvc2U9aW5mb2AuICBU
aGlzIGZsYWcgbGV0cyBHb29nbGUgTW9jayBwcmludCBhIHRyYWNlCitvZiBldmVyeSBtb2NrIGZ1
bmN0aW9uIGNhbGwgaXQgcmVjZWl2ZXMuICBCeSBzdHVkeWluZyB0aGUgdHJhY2UsCit5b3UnbGwg
Z2FpbiBpbnNpZ2h0cyBvbiB3aHkgdGhlIGV4cGVjdGF0aW9ucyB5b3Ugc2V0IGFyZSBub3QgbWV0
LgorCisjIyBIb3cgY2FuIEkgYXNzZXJ0IHRoYXQgYSBmdW5jdGlvbiBpcyBORVZFUiBjYWxsZWQ/
ICMjCisKK2BgYAorRVhQRUNUX0NBTEwoZm9vLCBCYXIoXykpCisgICAgLlRpbWVzKDApOworYGBg
CisKKyMjIEkgaGF2ZSBhIGZhaWxlZCB0ZXN0IHdoZXJlIEdvb2dsZSBNb2NrIHRlbGxzIG1lIFRX
SUNFIHRoYXQgYSBwYXJ0aWN1bGFyIGV4cGVjdGF0aW9uIGlzIG5vdCBzYXRpc2ZpZWQuICBJc24n
dCB0aGlzIHJlZHVuZGFudD8gIyMKKworV2hlbiBHb29nbGUgTW9jayBkZXRlY3RzIGEgZmFpbHVy
ZSwgaXQgcHJpbnRzIHJlbGV2YW50IGluZm9ybWF0aW9uCisodGhlIG1vY2sgZnVuY3Rpb24gYXJn
dW1lbnRzLCB0aGUgc3RhdGUgb2YgcmVsZXZhbnQgZXhwZWN0YXRpb25zLCBhbmQKK2V0YykgdG8g
aGVscCB0aGUgdXNlciBkZWJ1Zy4gIElmIGFub3RoZXIgZmFpbHVyZSBpcyBkZXRlY3RlZCwgR29v
Z2xlCitNb2NrIHdpbGwgZG8gdGhlIHNhbWUsIGluY2x1ZGluZyBwcmludGluZyB0aGUgc3RhdGUg
b2YgcmVsZXZhbnQKK2V4cGVjdGF0aW9ucy4KKworU29tZXRpbWVzIGFuIGV4cGVjdGF0aW9uJ3Mg
c3RhdGUgZGlkbid0IGNoYW5nZSBiZXR3ZWVuIHR3byBmYWlsdXJlcywKK2FuZCB5b3UnbGwgc2Vl
IHRoZSBzYW1lIGRlc2NyaXB0aW9uIG9mIHRoZSBzdGF0ZSB0d2ljZS4gIFRoZXkgYXJlCitob3dl
dmVyIF9ub3RfIHJlZHVuZGFudCwgYXMgdGhleSByZWZlciB0byBfZGlmZmVyZW50IHBvaW50cyBp
biB0aW1lXy4KK1RoZSBmYWN0IHRoZXkgYXJlIHRoZSBzYW1lIF9pc18gaW50ZXJlc3RpbmcgaW5m
b3JtYXRpb24uCisKKyMjIEkgZ2V0IGEgaGVhcCBjaGVjayBmYWlsdXJlIHdoZW4gdXNpbmcgYSBt
b2NrIG9iamVjdCwgYnV0IHVzaW5nIGEgcmVhbCBvYmplY3QgaXMgZmluZS4gIFdoYXQgY2FuIGJl
IHdyb25nPyAjIworCitEb2VzIHRoZSBjbGFzcyAoaG9wZWZ1bGx5IGEgcHVyZSBpbnRlcmZhY2Up
IHlvdSBhcmUgbW9ja2luZyBoYXZlIGEKK3ZpcnR1YWwgZGVzdHJ1Y3Rvcj8KKworV2hlbmV2ZXIg
eW91IGRlcml2ZSBmcm9tIGEgYmFzZSBjbGFzcywgbWFrZSBzdXJlIGl0cyBkZXN0cnVjdG9yIGlz
Cit2aXJ0dWFsLiAgT3RoZXJ3aXNlIEJhZCBUaGluZ3Mgd2lsbCBoYXBwZW4uICBDb25zaWRlciB0
aGUgZm9sbG93aW5nCitjb2RlOgorCitgYGAKK2NsYXNzIEJhc2UgeworIHB1YmxpYzoKKyAgLy8g
Tm90IHZpcnR1YWwsIGJ1dCBzaG91bGQgYmUuCisgIH5CYXNlKCkgeyAuLi4gfQorICAuLi4KK307
CisKK2NsYXNzIERlcml2ZWQgOiBwdWJsaWMgQmFzZSB7CisgcHVibGljOgorICAuLi4KKyBwcml2
YXRlOgorICBzdGQ6OnN0cmluZyB2YWx1ZV87Cit9OworCisuLi4KKyAgQmFzZSogcCA9IG5ldyBE
ZXJpdmVkOworICAuLi4KKyAgZGVsZXRlIHA7ICAvLyBTdXJwcmlzZSEgfkJhc2UoKSB3aWxsIGJl
IGNhbGxlZCwgYnV0IH5EZXJpdmVkKCkgd2lsbCBub3QKKyAgICAgICAgICAgICAvLyAtIHZhbHVl
XyBpcyBsZWFrZWQuCitgYGAKKworQnkgY2hhbmdpbmcgYH5CYXNlKClgIHRvIHZpcnR1YWwsIGB+
RGVyaXZlZCgpYCB3aWxsIGJlIGNvcnJlY3RseQorY2FsbGVkIHdoZW4gYGRlbGV0ZSBwYCBpcyBl
eGVjdXRlZCwgYW5kIHRoZSBoZWFwIGNoZWNrZXIKK3dpbGwgYmUgaGFwcHkuCisKKyMjIFRoZSAi
bmV3ZXIgZXhwZWN0YXRpb25zIG92ZXJyaWRlIG9sZGVyIG9uZXMiIHJ1bGUgbWFrZXMgd3JpdGlu
ZyBleHBlY3RhdGlvbnMgYXdrd2FyZC4gIFdoeSBkb2VzIEdvb2dsZSBNb2NrIGRvIHRoYXQ/ICMj
CisKK1doZW4gcGVvcGxlIGNvbXBsYWluIGFib3V0IHRoaXMsIG9mdGVuIHRoZXkgYXJlIHJlZmVy
cmluZyB0byBjb2RlIGxpa2U6CisKK2BgYAorLy8gZm9vLkJhcigpIHNob3VsZCBiZSBjYWxsZWQg
dHdpY2UsIHJldHVybiAxIHRoZSBmaXJzdCB0aW1lLCBhbmQgcmV0dXJuCisvLyAyIHRoZSBzZWNv
bmQgdGltZS4gIEhvd2V2ZXIsIEkgaGF2ZSB0byB3cml0ZSB0aGUgZXhwZWN0YXRpb25zIGluIHRo
ZQorLy8gcmV2ZXJzZSBvcmRlci4gIFRoaXMgc3Vja3MgYmlnIHRpbWUhISEKK0VYUEVDVF9DQUxM
KGZvbywgQmFyKCkpCisgICAgLldpbGxPbmNlKFJldHVybigyKSkKKyAgICAuUmV0aXJlc09uU2F0
dXJhdGlvbigpOworRVhQRUNUX0NBTEwoZm9vLCBCYXIoKSkKKyAgICAuV2lsbE9uY2UoUmV0dXJu
KDEpKQorICAgIC5SZXRpcmVzT25TYXR1cmF0aW9uKCk7CitgYGAKKworVGhlIHByb2JsZW0gaXMg
dGhhdCB0aGV5IGRpZG4ndCBwaWNrIHRoZSAqKmJlc3QqKiB3YXkgdG8gZXhwcmVzcyB0aGUgdGVz
dCdzCitpbnRlbnQuCisKK0J5IGRlZmF1bHQsIGV4cGVjdGF0aW9ucyBkb24ndCBoYXZlIHRvIGJl
IG1hdGNoZWQgaW4gX2FueV8gcGFydGljdWxhcgorb3JkZXIuICBJZiB5b3Ugd2FudCB0aGVtIHRv
IG1hdGNoIGluIGEgY2VydGFpbiBvcmRlciwgeW91IG5lZWQgdG8gYmUKK2V4cGxpY2l0LiAgVGhp
cyBpcyBHb29nbGUgTW9jaydzIChhbmQgak1vY2sncykgZnVuZGFtZW50YWwgcGhpbG9zb3BoeTog
aXQncworZWFzeSB0byBhY2NpZGVudGFsbHkgb3Zlci1zcGVjaWZ5IHlvdXIgdGVzdHMsIGFuZCB3
ZSB3YW50IHRvIG1ha2UgaXQKK2hhcmRlciB0byBkbyBzby4KKworVGhlcmUgYXJlIHR3byBiZXR0
ZXIgd2F5cyB0byB3cml0ZSB0aGUgdGVzdCBzcGVjLiAgWW91IGNvdWxkIGVpdGhlcgorcHV0IHRo
ZSBleHBlY3RhdGlvbnMgaW4gc2VxdWVuY2U6CisKK2BgYAorLy8gZm9vLkJhcigpIHNob3VsZCBi
ZSBjYWxsZWQgdHdpY2UsIHJldHVybiAxIHRoZSBmaXJzdCB0aW1lLCBhbmQgcmV0dXJuCisvLyAy
IHRoZSBzZWNvbmQgdGltZS4gIFVzaW5nIGEgc2VxdWVuY2UsIHdlIGNhbiB3cml0ZSB0aGUgZXhw
ZWN0YXRpb25zCisvLyBpbiB0aGVpciBuYXR1cmFsIG9yZGVyLgoreworICBJblNlcXVlbmNlIHM7
CisgIEVYUEVDVF9DQUxMKGZvbywgQmFyKCkpCisgICAgICAuV2lsbE9uY2UoUmV0dXJuKDEpKQor
ICAgICAgLlJldGlyZXNPblNhdHVyYXRpb24oKTsKKyAgRVhQRUNUX0NBTEwoZm9vLCBCYXIoKSkK
KyAgICAgIC5XaWxsT25jZShSZXR1cm4oMikpCisgICAgICAuUmV0aXJlc09uU2F0dXJhdGlvbigp
OworfQorYGBgCisKK29yIHlvdSBjYW4gcHV0IHRoZSBzZXF1ZW5jZSBvZiBhY3Rpb25zIGluIHRo
ZSBzYW1lIGV4cGVjdGF0aW9uOgorCitgYGAKKy8vIGZvby5CYXIoKSBzaG91bGQgYmUgY2FsbGVk
IHR3aWNlLCByZXR1cm4gMSB0aGUgZmlyc3QgdGltZSwgYW5kIHJldHVybgorLy8gMiB0aGUgc2Vj
b25kIHRpbWUuCitFWFBFQ1RfQ0FMTChmb28sIEJhcigpKQorICAgIC5XaWxsT25jZShSZXR1cm4o
MSkpCisgICAgLldpbGxPbmNlKFJldHVybigyKSkKKyAgICAuUmV0aXJlc09uU2F0dXJhdGlvbigp
OworYGBgCisKK0JhY2sgdG8gdGhlIG9yaWdpbmFsIHF1ZXN0aW9uczogd2h5IGRvZXMgR29vZ2xl
IE1vY2sgc2VhcmNoIHRoZQorZXhwZWN0YXRpb25zIChhbmQgYE9OX0NBTExgcykgZnJvbSBiYWNr
IHRvIGZyb250PyAgQmVjYXVzZSB0aGlzCithbGxvd3MgYSB1c2VyIHRvIHNldCB1cCBhIG1vY2sn
cyBiZWhhdmlvciBmb3IgdGhlIGNvbW1vbiBjYXNlIGVhcmx5CisoZS5nLiBpbiB0aGUgbW9jaydz
IGNvbnN0cnVjdG9yIG9yIHRoZSB0ZXN0IGZpeHR1cmUncyBzZXQtdXAgcGhhc2UpCithbmQgY3Vz
dG9taXplIGl0IHdpdGggbW9yZSBzcGVjaWZpYyBydWxlcyBsYXRlci4gIElmIEdvb2dsZSBNb2Nr
CitzZWFyY2hlcyBmcm9tIGZyb250IHRvIGJhY2ssIHRoaXMgdmVyeSB1c2VmdWwgcGF0dGVybiB3
b24ndCBiZQorcG9zc2libGUuCisKKyMjIEdvb2dsZSBNb2NrIHByaW50cyBhIHdhcm5pbmcgd2hl
biBhIGZ1bmN0aW9uIHdpdGhvdXQgRVhQRUNUXF9DQUxMIGlzIGNhbGxlZCwgZXZlbiBpZiBJIGhh
dmUgc2V0IGl0cyBiZWhhdmlvciB1c2luZyBPTlxfQ0FMTC4gIFdvdWxkIGl0IGJlIHJlYXNvbmFi
bGUgbm90IHRvIHNob3cgdGhlIHdhcm5pbmcgaW4gdGhpcyBjYXNlPyAjIworCitXaGVuIGNob29z
aW5nIGJldHdlZW4gYmVpbmcgbmVhdCBhbmQgYmVpbmcgc2FmZSwgd2UgbGVhbiB0b3dhcmQgdGhl
CitsYXR0ZXIuICBTbyB0aGUgYW5zd2VyIGlzIHRoYXQgd2UgdGhpbmsgaXQncyBiZXR0ZXIgdG8g
c2hvdyB0aGUKK3dhcm5pbmcuCisKK09mdGVuIHBlb3BsZSB3cml0ZSBgT05fQ0FMTGBzIGluIHRo
ZSBtb2NrIG9iamVjdCdzCitjb25zdHJ1Y3RvciBvciBgU2V0VXAoKWAsIGFzIHRoZSBkZWZhdWx0
IGJlaGF2aW9yIHJhcmVseSBjaGFuZ2VzIGZyb20KK3Rlc3QgdG8gdGVzdC4gIFRoZW4gaW4gdGhl
IHRlc3QgYm9keSB0aGV5IHNldCB0aGUgZXhwZWN0YXRpb25zLCB3aGljaAorYXJlIG9mdGVuIGRp
ZmZlcmVudCBmb3IgZWFjaCB0ZXN0LiAgSGF2aW5nIGFuIGBPTl9DQUxMYCBpbiB0aGUgc2V0LXVw
CitwYXJ0IG9mIGEgdGVzdCBkb2Vzbid0IG1lYW4gdGhhdCB0aGUgY2FsbHMgYXJlIGV4cGVjdGVk
LiAgSWYgdGhlcmUncworbm8gYEVYUEVDVF9DQUxMYCBhbmQgdGhlIG1ldGhvZCBpcyBjYWxsZWQs
IGl0J3MgcG9zc2libHkgYW4gZXJyb3IuICBJZgord2UgcXVpZXRseSBsZXQgdGhlIGNhbGwgZ28g
dGhyb3VnaCB3aXRob3V0IG5vdGlmeWluZyB0aGUgdXNlciwgYnVncworbWF5IGNyZWVwIGluIHVu
bm90aWNlZC4KKworSWYsIGhvd2V2ZXIsIHlvdSBhcmUgc3VyZSB0aGF0IHRoZSBjYWxscyBhcmUg
T0ssIHlvdSBjYW4gd3JpdGUKKworYGBgCitFWFBFQ1RfQ0FMTChmb28sIEJhcihfKSkKKyAgICAu
V2lsbFJlcGVhdGVkbHkoLi4uKTsKK2BgYAorCitpbnN0ZWFkIG9mCisKK2BgYAorT05fQ0FMTChm
b28sIEJhcihfKSkKKyAgICAuV2lsbEJ5RGVmYXVsdCguLi4pOworYGBgCisKK1RoaXMgdGVsbHMg
R29vZ2xlIE1vY2sgdGhhdCB5b3UgZG8gZXhwZWN0IHRoZSBjYWxscyBhbmQgbm8gd2FybmluZyBz
aG91bGQgYmUKK3ByaW50ZWQuCisKK0Fsc28sIHlvdSBjYW4gY29udHJvbCB0aGUgdmVyYm9zaXR5
IHVzaW5nIHRoZSBgLS1nbW9ja192ZXJib3NlYCBmbGFnLgorSWYgeW91IGZpbmQgdGhlIG91dHB1
dCB0b28gbm9pc3kgd2hlbiBkZWJ1Z2dpbmcsIGp1c3QgY2hvb3NlIGEgbGVzcwordmVyYm9zZSBs
ZXZlbC4KKworIyMgSG93IGNhbiBJIGRlbGV0ZSB0aGUgbW9jayBmdW5jdGlvbidzIGFyZ3VtZW50
IGluIGFuIGFjdGlvbj8gIyMKKworSWYgeW91IGZpbmQgeW91cnNlbGYgbmVlZGluZyB0byBwZXJm
b3JtIHNvbWUgYWN0aW9uIHRoYXQncyBub3QKK3N1cHBvcnRlZCBieSBHb29nbGUgTW9jayBkaXJl
Y3RseSwgcmVtZW1iZXIgdGhhdCB5b3UgY2FuIGRlZmluZSB5b3VyIG93bgorYWN0aW9ucyB1c2lu
ZworW01ha2VBY3Rpb24oKV0oQ29va0Jvb2subWQjd3JpdGluZy1uZXctYWN0aW9ucykgb3IKK1tN
YWtlUG9seW1vcnBoaWNBY3Rpb24oKV0oQ29va0Jvb2subWQjd3JpdGluZ19uZXdfcG9seW1vcnBo
aWNfYWN0aW9ucyksCitvciB5b3UgY2FuIHdyaXRlIGEgc3R1YiBmdW5jdGlvbiBhbmQgaW52b2tl
IGl0IHVzaW5nCitbSW52b2tlKCldKENvb2tCb29rLm1kI3VzaW5nLWZ1bmN0aW9uc19tZXRob2Rz
X2Z1bmN0b3JzKS4KKworIyMgTU9DS1xfTUVUSE9EbigpJ3Mgc2Vjb25kIGFyZ3VtZW50IGxvb2tz
IGZ1bm55LiAgV2h5IGRvbid0IHlvdSB1c2UgdGhlIE1PQ0tcX01FVEhPRG4oTWV0aG9kLCByZXR1
cm5cX3R5cGUsIGFyZ1xfMSwgLi4uLCBhcmdcX24pIHN5bnRheD8gIyMKKworV2hhdD8hICBJIHRo
aW5rIGl0J3MgYmVhdXRpZnVsLiA6LSkKKworV2hpbGUgd2hpY2ggc3ludGF4IGxvb2tzIG1vcmUg
bmF0dXJhbCBpcyBhIHN1YmplY3RpdmUgbWF0dGVyIHRvIHNvbWUKK2V4dGVudCwgR29vZ2xlIE1v
Y2sncyBzeW50YXggd2FzIGNob3NlbiBmb3Igc2V2ZXJhbCBwcmFjdGljYWwgYWR2YW50YWdlcyBp
dAoraGFzLgorCitUcnkgdG8gbW9jayBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSBtYXAgYXMgYW4g
YXJndW1lbnQ6CitgYGAKK3ZpcnR1YWwgaW50IEdldFNpemUoY29uc3QgbWFwPGludCwgc3RkOjpz
dHJpbmc+JiBtKTsKK2BgYAorCitVc2luZyB0aGUgcHJvcG9zZWQgc3ludGF4LCBpdCB3b3VsZCBi
ZToKK2BgYAorTU9DS19NRVRIT0QxKEdldFNpemUsIGludCwgY29uc3QgbWFwPGludCwgc3RkOjpz
dHJpbmc+JiBtKTsKK2BgYAorCitHdWVzcyB3aGF0PyAgWW91J2xsIGdldCBhIGNvbXBpbGVyIGVy
cm9yIGFzIHRoZSBjb21waWxlciB0aGlua3MgdGhhdAorYGNvbnN0IG1hcDxpbnQsIHN0ZDo6c3Ry
aW5nPiYgbWAgYXJlICoqdHdvKiosIG5vdCBvbmUsIGFyZ3VtZW50cy4gVG8gd29yaworYXJvdW5k
IHRoaXMgeW91IGNhbiB1c2UgYHR5cGVkZWZgIHRvIGdpdmUgdGhlIG1hcCB0eXBlIGEgbmFtZSwg
YnV0Cit0aGF0IGdldHMgaW4gdGhlIHdheSBvZiB5b3VyIHdvcmsuICBHb29nbGUgTW9jaydzIHN5
bnRheCBhdm9pZHMgdGhpcworcHJvYmxlbSBhcyB0aGUgZnVuY3Rpb24ncyBhcmd1bWVudCB0eXBl
cyBhcmUgcHJvdGVjdGVkIGluc2lkZSBhIHBhaXIKK29mIHBhcmVudGhlc2VzOgorYGBgCisvLyBU
aGlzIGNvbXBpbGVzIGZpbmUuCitNT0NLX01FVEhPRDEoR2V0U2l6ZSwgaW50KGNvbnN0IG1hcDxp
bnQsIHN0ZDo6c3RyaW5nPiYgbSkpOworYGBgCisKK1lvdSBzdGlsbCBuZWVkIGEgYHR5cGVkZWZg
IGlmIHRoZSByZXR1cm4gdHlwZSBjb250YWlucyBhbiB1bnByb3RlY3RlZAorY29tbWEsIGJ1dCB0
aGF0J3MgbXVjaCByYXJlci4KKworT3RoZXIgYWR2YW50YWdlcyBpbmNsdWRlOgorICAxLiBgTU9D
S19NRVRIT0QxKEZvbywgaW50LCBib29sKWAgY2FuIGxlYXZlIGEgcmVhZGVyIHdvbmRlciB3aGV0
aGVyIHRoZSBtZXRob2QgcmV0dXJucyBgaW50YCBvciBgYm9vbGAsIHdoaWxlIHRoZXJlIHdvbid0
IGJlIHN1Y2ggY29uZnVzaW9uIHVzaW5nIEdvb2dsZSBNb2NrJ3Mgc3ludGF4LgorICAxLiBUaGUg
d2F5IEdvb2dsZSBNb2NrIGRlc2NyaWJlcyBhIGZ1bmN0aW9uIHR5cGUgaXMgbm90aGluZyBuZXcs
IGFsdGhvdWdoIG1hbnkgcGVvcGxlIG1heSBub3QgYmUgZmFtaWxpYXIgd2l0aCBpdC4gIFRoZSBz
YW1lIHN5bnRheCB3YXMgdXNlZCBpbiBDLCBhbmQgdGhlIGBmdW5jdGlvbmAgbGlicmFyeSBpbiBg
dHIxYCB1c2VzIHRoaXMgc3ludGF4IGV4dGVuc2l2ZWx5LiAgU2luY2UgYHRyMWAgd2lsbCBiZWNv
bWUgYSBwYXJ0IG9mIHRoZSBuZXcgdmVyc2lvbiBvZiBTVEwsIHdlIGZlZWwgdmVyeSBjb21mb3J0
YWJsZSB0byBiZSBjb25zaXN0ZW50IHdpdGggaXQuCisgIDEuIFRoZSBmdW5jdGlvbiB0eXBlIHN5
bnRheCBpcyBhbHNvIHVzZWQgaW4gb3RoZXIgcGFydHMgb2YgR29vZ2xlIE1vY2sncyBBUEkgKGUu
Zy4gdGhlIGFjdGlvbiBpbnRlcmZhY2UpIGluIG9yZGVyIHRvIG1ha2UgdGhlIGltcGxlbWVudGF0
aW9uIHRyYWN0YWJsZS4gQSB1c2VyIG5lZWRzIHRvIGxlYXJuIGl0IGFueXdheSBpbiBvcmRlciB0
byB1dGlsaXplIEdvb2dsZSBNb2NrJ3MgbW9yZSBhZHZhbmNlZCBmZWF0dXJlcy4gIFdlJ2QgYXMg
d2VsbCBzdGljayB0byB0aGUgc2FtZSBzeW50YXggaW4gYE1PQ0tfTUVUSE9EKmAhCisKKyMjIE15
IGNvZGUgY2FsbHMgYSBzdGF0aWMvZ2xvYmFsIGZ1bmN0aW9uLiAgQ2FuIEkgbW9jayBpdD8gIyMK
KworWW91IGNhbiwgYnV0IHlvdSBuZWVkIHRvIG1ha2Ugc29tZSBjaGFuZ2VzLgorCitJbiBnZW5l
cmFsLCBpZiB5b3UgZmluZCB5b3Vyc2VsZiBuZWVkaW5nIHRvIG1vY2sgYSBzdGF0aWMgZnVuY3Rp
b24sCitpdCdzIGEgc2lnbiB0aGF0IHlvdXIgbW9kdWxlcyBhcmUgdG9vIHRpZ2h0bHkgY291cGxl
ZCAoYW5kIGxlc3MKK2ZsZXhpYmxlLCBsZXNzIHJldXNhYmxlLCBsZXNzIHRlc3RhYmxlLCBldGMp
LiAgWW91IGFyZSBwcm9iYWJseSBiZXR0ZXIKK29mZiBkZWZpbmluZyBhIHNtYWxsIGludGVyZmFj
ZSBhbmQgY2FsbCB0aGUgZnVuY3Rpb24gdGhyb3VnaCB0aGF0CitpbnRlcmZhY2UsIHdoaWNoIHRo
ZW4gY2FuIGJlIGVhc2lseSBtb2NrZWQuICBJdCdzIGEgYml0IG9mIHdvcmsKK2luaXRpYWxseSwg
YnV0IHVzdWFsbHkgcGF5cyBmb3IgaXRzZWxmIHF1aWNrbHkuCisKK1RoaXMgR29vZ2xlIFRlc3Rp
bmcgQmxvZworW3Bvc3RdKGh0dHA6Ly9nb29nbGV0ZXN0aW5nLmJsb2dzcG90LmNvbS8yMDA4LzA2
L2RlZmVhdC1zdGF0aWMtY2xpbmcuaHRtbCkKK3NheXMgaXQgZXhjZWxsZW50bHkuICBDaGVjayBp
dCBvdXQuCisKKyMjIE15IG1vY2sgb2JqZWN0IG5lZWRzIHRvIGRvIGNvbXBsZXggc3R1ZmYuICBJ
dCdzIGEgbG90IG9mIHBhaW4gdG8gc3BlY2lmeSB0aGUgYWN0aW9ucy4gIEdvb2dsZSBNb2NrIHN1
Y2tzISAjIworCitJIGtub3cgaXQncyBub3QgYSBxdWVzdGlvbiwgYnV0IHlvdSBnZXQgYW4gYW5z
d2VyIGZvciBmcmVlIGFueSB3YXkuIDotKQorCitXaXRoIEdvb2dsZSBNb2NrLCB5b3UgY2FuIGNy
ZWF0ZSBtb2NrcyBpbiBDKysgZWFzaWx5LiAgQW5kIHBlb3BsZSBtaWdodCBiZQordGVtcHRlZCB0
byB1c2UgdGhlbSBldmVyeXdoZXJlLiBTb21ldGltZXMgdGhleSB3b3JrIGdyZWF0LCBhbmQKK3Nv
bWV0aW1lcyB5b3UgbWF5IGZpbmQgdGhlbSwgd2VsbCwgYSBwYWluIHRvIHVzZS4gU28sIHdoYXQn
cyB3cm9uZyBpbgordGhlIGxhdHRlciBjYXNlPworCitXaGVuIHlvdSB3cml0ZSBhIHRlc3Qgd2l0
aG91dCB1c2luZyBtb2NrcywgeW91IGV4ZXJjaXNlIHRoZSBjb2RlIGFuZAorYXNzZXJ0IHRoYXQg
aXQgcmV0dXJucyB0aGUgY29ycmVjdCB2YWx1ZSBvciB0aGF0IHRoZSBzeXN0ZW0gaXMgaW4gYW4K
K2V4cGVjdGVkIHN0YXRlLiAgVGhpcyBpcyBzb21ldGltZXMgY2FsbGVkICJzdGF0ZS1iYXNlZCB0
ZXN0aW5nIi4KKworTW9ja3MgYXJlIGdyZWF0IGZvciB3aGF0IHNvbWUgY2FsbCAiaW50ZXJhY3Rp
b24tYmFzZWQiIHRlc3Rpbmc6CitpbnN0ZWFkIG9mIGNoZWNraW5nIHRoZSBzeXN0ZW0gc3RhdGUg
YXQgdGhlIHZlcnkgZW5kLCBtb2NrIG9iamVjdHMKK3ZlcmlmeSB0aGF0IHRoZXkgYXJlIGludm9r
ZWQgdGhlIHJpZ2h0IHdheSBhbmQgcmVwb3J0IGFuIGVycm9yIGFzIHNvb24KK2FzIGl0IGFyaXNl
cywgZ2l2aW5nIHlvdSBhIGhhbmRsZSBvbiB0aGUgcHJlY2lzZSBjb250ZXh0IGluIHdoaWNoIHRo
ZQorZXJyb3Igd2FzIHRyaWdnZXJlZC4gIFRoaXMgaXMgb2Z0ZW4gbW9yZSBlZmZlY3RpdmUgYW5k
IGVjb25vbWljYWwgdG8KK2RvIHRoYW4gc3RhdGUtYmFzZWQgdGVzdGluZy4KKworSWYgeW91IGFy
ZSBkb2luZyBzdGF0ZS1iYXNlZCB0ZXN0aW5nIGFuZCB1c2luZyBhIHRlc3QgZG91YmxlIGp1c3Qg
dG8KK3NpbXVsYXRlIHRoZSByZWFsIG9iamVjdCwgeW91IGFyZSBwcm9iYWJseSBiZXR0ZXIgb2Zm
IHVzaW5nIGEgZmFrZS4KK1VzaW5nIGEgbW9jayBpbiB0aGlzIGNhc2UgY2F1c2VzIHBhaW4sIGFz
IGl0J3Mgbm90IGEgc3Ryb25nIHBvaW50IGZvcgorbW9ja3MgdG8gcGVyZm9ybSBjb21wbGV4IGFj
dGlvbnMuICBJZiB5b3UgZXhwZXJpZW5jZSB0aGlzIGFuZCB0aGluawordGhhdCBtb2NrcyBzdWNr
LCB5b3UgYXJlIGp1c3Qgbm90IHVzaW5nIHRoZSByaWdodCB0b29sIGZvciB5b3VyCitwcm9ibGVt
LiBPciwgeW91IG1pZ2h0IGJlIHRyeWluZyB0byBzb2x2ZSB0aGUgd3JvbmcgcHJvYmxlbS4gOi0p
CisKKyMjIEkgZ290IGEgd2FybmluZyAiVW5pbnRlcmVzdGluZyBmdW5jdGlvbiBjYWxsIGVuY291
bnRlcmVkIC0gZGVmYXVsdCBhY3Rpb24gdGFrZW4uLiIgIFNob3VsZCBJIHBhbmljPyAjIworCitC
eSBhbGwgbWVhbnMsIE5PISAgSXQncyBqdXN0IGFuIEZZSS4KKworV2hhdCBpdCBtZWFucyBpcyB0
aGF0IHlvdSBoYXZlIGEgbW9jayBmdW5jdGlvbiwgeW91IGhhdmVuJ3Qgc2V0IGFueQorZXhwZWN0
YXRpb25zIG9uIGl0IChieSBHb29nbGUgTW9jaydzIHJ1bGUgdGhpcyBtZWFucyB0aGF0IHlvdSBh
cmUgbm90CitpbnRlcmVzdGVkIGluIGNhbGxzIHRvIHRoaXMgZnVuY3Rpb24gYW5kIHRoZXJlZm9y
ZSBpdCBjYW4gYmUgY2FsbGVkCithbnkgbnVtYmVyIG9mIHRpbWVzKSwgYW5kIGl0IGlzIGNhbGxl
ZC4gIFRoYXQncyBPSyAtIHlvdSBkaWRuJ3Qgc2F5CitpdCdzIG5vdCBPSyB0byBjYWxsIHRoZSBm
dW5jdGlvbiEKKworV2hhdCBpZiB5b3UgYWN0dWFsbHkgbWVhbnQgdG8gZGlzYWxsb3cgdGhpcyBm
dW5jdGlvbiB0byBiZSBjYWxsZWQsIGJ1dAorZm9yZ290IHRvIHdyaXRlIGBFWFBFQ1RfQ0FMTChm
b28sIEJhcigpKS5UaW1lcygwKWA/ICBXaGlsZQorb25lIGNhbiBhcmd1ZSB0aGF0IGl0J3MgdGhl
IHVzZXIncyBmYXVsdCwgR29vZ2xlIE1vY2sgdHJpZXMgdG8gYmUgbmljZSBhbmQKK3ByaW50cyB5
b3UgYSBub3RlLgorCitTbywgd2hlbiB5b3Ugc2VlIHRoZSBtZXNzYWdlIGFuZCBiZWxpZXZlIHRo
YXQgdGhlcmUgc2hvdWxkbid0IGJlIGFueQordW5pbnRlcmVzdGluZyBjYWxscywgeW91IHNob3Vs
ZCBpbnZlc3RpZ2F0ZSB3aGF0J3MgZ29pbmcgb24uICBUbyBtYWtlCit5b3VyIGxpZmUgZWFzaWVy
LCBHb29nbGUgTW9jayBwcmludHMgdGhlIGZ1bmN0aW9uIG5hbWUgYW5kIGFyZ3VtZW50cword2hl
biBhbiB1bmludGVyZXN0aW5nIGNhbGwgaXMgZW5jb3VudGVyZWQuCisKKyMjIEkgd2FudCB0byBk
ZWZpbmUgYSBjdXN0b20gYWN0aW9uLiAgU2hvdWxkIEkgdXNlIEludm9rZSgpIG9yIGltcGxlbWVu
dCB0aGUgYWN0aW9uIGludGVyZmFjZT8gIyMKKworRWl0aGVyIHdheSBpcyBmaW5lIC0geW91IHdh
bnQgdG8gY2hvb3NlIHRoZSBvbmUgdGhhdCdzIG1vcmUgY29udmVuaWVudAorZm9yIHlvdXIgY2ly
Y3Vtc3RhbmNlLgorCitVc3VhbGx5LCBpZiB5b3VyIGFjdGlvbiBpcyBmb3IgYSBwYXJ0aWN1bGFy
IGZ1bmN0aW9uIHR5cGUsIGRlZmluaW5nIGl0Cit1c2luZyBgSW52b2tlKClgIHNob3VsZCBiZSBl
YXNpZXI7IGlmIHlvdXIgYWN0aW9uIGNhbiBiZSB1c2VkIGluCitmdW5jdGlvbnMgb2YgZGlmZmVy
ZW50IHR5cGVzIChlLmcuIGlmIHlvdSBhcmUgZGVmaW5pbmcKK2BSZXR1cm4odmFsdWUpYCksIGBN
YWtlUG9seW1vcnBoaWNBY3Rpb24oKWAgaXMKK2Vhc2llc3QuICBTb21ldGltZXMgeW91IHdhbnQg
cHJlY2lzZSBjb250cm9sIG9uIHdoYXQgdHlwZXMgb2YKK2Z1bmN0aW9ucyB0aGUgYWN0aW9uIGNh
biBiZSB1c2VkIGluLCBhbmQgaW1wbGVtZW50aW5nCitgQWN0aW9uSW50ZXJmYWNlYCBpcyB0aGUg
d2F5IHRvIGdvIGhlcmUuIFNlZSB0aGUgaW1wbGVtZW50YXRpb24gb2YKK2BSZXR1cm4oKWAgaW4g
YGluY2x1ZGUvZ21vY2svZ21vY2stYWN0aW9ucy5oYCBmb3IgYW4gZXhhbXBsZS4KKworIyMgSSdt
IHVzaW5nIHRoZSBzZXQtYXJndW1lbnQtcG9pbnRlZSBhY3Rpb24sIGFuZCB0aGUgY29tcGlsZXIg
Y29tcGxhaW5zIGFib3V0ICJjb25mbGljdGluZyByZXR1cm4gdHlwZSBzcGVjaWZpZWQiLiAgV2hh
dCBkb2VzIGl0IG1lYW4/ICMjCisKK1lvdSBnb3QgdGhpcyBlcnJvciBhcyBHb29nbGUgTW9jayBo
YXMgbm8gaWRlYSB3aGF0IHZhbHVlIGl0IHNob3VsZCByZXR1cm4KK3doZW4gdGhlIG1vY2sgbWV0
aG9kIGlzIGNhbGxlZC4gIGBTZXRBcmdQb2ludGVlKClgIHNheXMgd2hhdCB0aGUKK3NpZGUgZWZm
ZWN0IGlzLCBidXQgZG9lc24ndCBzYXkgd2hhdCB0aGUgcmV0dXJuIHZhbHVlIHNob3VsZCBiZS4g
IFlvdQorbmVlZCBgRG9BbGwoKWAgdG8gY2hhaW4gYSBgU2V0QXJnUG9pbnRlZSgpYCB3aXRoIGEg
YFJldHVybigpYC4KKworU2VlIHRoaXMgW3JlY2lwZV0oQ29va0Jvb2subWQjbW9ja2luZ19zaWRl
X2VmZmVjdHMpIGZvciBtb3JlIGRldGFpbHMgYW5kIGFuIGV4YW1wbGUuCisKKworIyMgTXkgcXVl
c3Rpb24gaXMgbm90IGluIHlvdXIgRkFRISAjIworCitJZiB5b3UgY2Fubm90IGZpbmQgdGhlIGFu
c3dlciB0byB5b3VyIHF1ZXN0aW9uIGluIHRoaXMgRkFRLCB0aGVyZSBhcmUKK3NvbWUgb3RoZXIg
cmVzb3VyY2VzIHlvdSBjYW4gdXNlOgorCisgIDEuIHJlYWQgb3RoZXIgW2RvY3VtZW50YXRpb25d
KERvY3VtZW50YXRpb24ubWQpLAorICAxLiBzZWFyY2ggdGhlIG1haWxpbmcgbGlzdCBbYXJjaGl2
ZV0oaHR0cDovL2dyb3Vwcy5nb29nbGUuY29tL2dyb3VwL2dvb2dsZW1vY2svdG9waWNzKSwKKyAg
MS4gYXNrIGl0IG9uIFtnb29nbGVtb2NrQGdvb2dsZWdyb3Vwcy5jb21dKG1haWx0bzpnb29nbGVt
b2NrQGdvb2dsZWdyb3Vwcy5jb20pIGFuZCBzb21lb25lIHdpbGwgYW5zd2VyIGl0ICh0byBwcmV2
ZW50IHNwYW0sIHdlIHJlcXVpcmUgeW91IHRvIGpvaW4gdGhlIFtkaXNjdXNzaW9uIGdyb3VwXSho
dHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXAvZ29vZ2xlbW9jaykgYmVmb3JlIHlvdSBjYW4g
cG9zdC4pLgorCitQbGVhc2Ugbm90ZSB0aGF0IGNyZWF0aW5nIGFuIGlzc3VlIGluIHRoZQorW2lz
c3VlIHRyYWNrZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xldGVzdC9pc3N1ZXMp
IGlzIF9ub3RfCithIGdvb2Qgd2F5IHRvIGdldCB5b3VyIGFuc3dlciwgYXMgaXQgaXMgbW9uaXRv
cmVkIGluZnJlcXVlbnRseSBieSBhCit2ZXJ5IHNtYWxsIG51bWJlciBvZiBwZW9wbGUuCisKK1do
ZW4gYXNraW5nIGEgcXVlc3Rpb24sIGl0J3MgaGVscGZ1bCB0byBwcm92aWRlIGFzIG11Y2ggb2Yg
dGhlCitmb2xsb3dpbmcgaW5mb3JtYXRpb24gYXMgcG9zc2libGUgKHBlb3BsZSBjYW5ub3QgaGVs
cCB5b3UgaWYgdGhlcmUncworbm90IGVub3VnaCBpbmZvcm1hdGlvbiBpbiB5b3VyIHF1ZXN0aW9u
KToKKworICAqIHRoZSB2ZXJzaW9uIChvciB0aGUgcmV2aXNpb24gbnVtYmVyIGlmIHlvdSBjaGVj
ayBvdXQgZnJvbSBTVk4gZGlyZWN0bHkpIG9mIEdvb2dsZSBNb2NrIHlvdSB1c2UgKEdvb2dsZSBN
b2NrIGlzIHVuZGVyIGFjdGl2ZSBkZXZlbG9wbWVudCwgc28gaXQncyBwb3NzaWJsZSB0aGF0IHlv
dXIgcHJvYmxlbSBoYXMgYmVlbiBzb2x2ZWQgaW4gYSBsYXRlciB2ZXJzaW9uKSwKKyAgKiB5b3Vy
IG9wZXJhdGluZyBzeXN0ZW0sCisgICogdGhlIG5hbWUgYW5kIHZlcnNpb24gb2YgeW91ciBjb21w
aWxlciwKKyAgKiB0aGUgY29tcGxldGUgY29tbWFuZCBsaW5lIGZsYWdzIHlvdSBnaXZlIHRvIHlv
dXIgY29tcGlsZXIsCisgICogdGhlIGNvbXBsZXRlIGNvbXBpbGVyIGVycm9yIG1lc3NhZ2VzIChp
ZiB0aGUgcXVlc3Rpb24gaXMgYWJvdXQgY29tcGlsYXRpb24pLAorICAqIHRoZSBfYWN0dWFsXyBj
b2RlIChpZGVhbGx5LCBhIG1pbmltYWwgYnV0IGNvbXBsZXRlIHByb2dyYW0pIHRoYXQgaGFzIHRo
ZSBwcm9ibGVtIHlvdSBlbmNvdW50ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL0tu
b3duSXNzdWVzLm1kIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy9Lbm93bklzc3Vlcy5tZApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hZGFkZjUxNDRiMWI1YmE2YjRiZGE3Y2E4NjA4N2UyODQ2MWE4MTk5Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZW1vY2svZG9jcy9Lbm93bklzc3Vlcy5tZApAQCAtMCwwICsxLDE5IEBACitB
cyBhbnkgbm9uLXRyaXZpYWwgc29mdHdhcmUgc3lzdGVtLCBHb29nbGUgTW9jayBoYXMgc29tZSBr
bm93biBsaW1pdGF0aW9ucyBhbmQgcHJvYmxlbXMuICBXZSBhcmUgd29ya2luZyBvbiBpbXByb3Zp
bmcgaXQsIGFuZCB3ZWxjb21lIHlvdXIgaGVscCEgIFRoZSBmb2xsb3cgaXMgYSBsaXN0IG9mIGlz
c3VlcyB3ZSBrbm93IGFib3V0LgorCisKKworIyMgUkVBRE1FIGNvbnRhaW5zIG91dGRhdGVkIGlu
Zm9ybWF0aW9uIG9uIEdvb2dsZSBNb2NrJ3MgY29tcGF0aWJpbGl0eSB3aXRoIG90aGVyIHRlc3Rp
bmcgZnJhbWV3b3JrcyAjIworCitUaGUgYFJFQURNRWAgZmlsZSBpbiByZWxlYXNlIDEuMS4wIHN0
aWxsIHNheXMgdGhhdCBHb29nbGUgTW9jayBvbmx5IHdvcmtzIHdpdGggR29vZ2xlIFRlc3QuICBB
Y3R1YWxseSwgeW91IGNhbiBjb25maWd1cmUgR29vZ2xlIE1vY2sgdG8gd29yayB3aXRoIGFueSB0
ZXN0aW5nIGZyYW1ld29yayB5b3UgY2hvb3NlLgorCisjIyBUZXN0cyBmYWlsaW5nIG9uIG1hY2hp
bmVzIHVzaW5nIFBvd2VyIFBDIENQVXMgKGUuZy4gc29tZSBNYWNzKSAjIworCitgZ21vY2tfb3V0
cHV0X3Rlc3RgIGFuZCBgZ21vY2stcHJpbnRlcnNfdGVzdGAgYXJlIGtub3duIHRvIGZhaWwgd2l0
aCBQb3dlciBQQyBDUFVzLiAgVGhpcyBpcyBkdWUgdG8gcG9ydGFiaWxpdHkgaXNzdWVzIHdpdGgg
dGhlc2UgdGVzdHMsIGFuZCBpcyBub3QgYW4gaW5kaWNhdGlvbiBvZiBwcm9ibGVtcyBpbiBHb29n
bGUgTW9jayBpdHNlbGYuICBZb3UgY2FuIHNhZmVseSBpZ25vcmUgdGhlbS4KKworIyMgRmFpbGVk
IHRvIHJlc29sdmUgbGliZ3Rlc3Quc28uMCBpbiB0ZXN0cyB3aGVuIGJ1aWx0IGFnYWluc3QgaW5z
dGFsbGVkIEdvb2dsZSBUZXN0ICMjCisKK1RoaXMgb25seSBhcHBsaWVzIGlmIHlvdSBtYW51YWxs
eSBidWlsdCBhbmQgaW5zdGFsbGVkIEdvb2dsZSBUZXN0LCBhbmQgdGhlbiBidWlsdCBhIEdvb2ds
ZSBNb2NrIGFnYWluc3QgaXQgKGVpdGhlciBleHBsaWNpdGx5LCBvciBiZWNhdXNlIGd0ZXN0LWNv
bmZpZyB3YXMgaW4geW91ciBwYXRoIHBvc3QtaW5zdGFsbCkuIEluIHRoaXMgc2l0dWF0aW9uLCBM
aWJ0b29sIGhhcyBhIGtub3duIGlzc3VlIHdpdGggY2VydGFpbiBzeXN0ZW1zJyBsZGNvbmZpZyBz
ZXR1cDoKKworaHR0cDovL2FydGljbGUuZ21hbmUub3JnL2dtYW5lLmNvbXAuc3lzdXRpbHMuYXV0
b21ha2UuZ2VuZXJhbC85MDI1CisKK1RoaXMgcmVxdWlyZXMgYSBtYW51YWwgcnVuIG9mICJzdWRv
IGxkY29uZmlnIiBhZnRlciB0aGUgInN1ZG8gbWFrZSBpbnN0YWxsIiBmb3IgR29vZ2xlIFRlc3Qg
YmVmb3JlIGFueSBiaW5hcmllcyB3aGljaCBsaW5rIGFnYWluc3QgaXQgY2FuIGJlIGV4ZWN1dGVk
LiBUaGlzIGlzbid0IGEgYnVnIGluIG91ciBpbnN0YWxsLCBidXQgd2Ugc2hvdWxkIGF0IGxlYXN0
IGhhdmUgZG9jdW1lbnRlZCBpdCBvciBoYWNrZWQgYSB3b3JrLWFyb3VuZCBpbnRvIG91ciBpbnN0
YWxsLiBXZSBzaG91bGQgaGF2ZSBvbmUgb2YgdGhlc2Ugc29sdXRpb25zIGluIG91ciBuZXh0IHJl
bGVhc2UuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1v
Y2svZG9jcy92MV81L0NoZWF0U2hlZXQubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL3YxXzUvQ2hlYXRT
aGVldC5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zYzdiZWQ0YzZmYmZkMTVjNjBmN2E0MDZjNzczYjliYmYyM2Y2
Y2E1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy92MV81L0NoZWF0U2hlZXQu
bWQKQEAgLTAsMCArMSw1MjUgQEAKKworCisjIERlZmluaW5nIGEgTW9jayBDbGFzcyAjCisKKyMj
IE1vY2tpbmcgYSBOb3JtYWwgQ2xhc3MgIyMKKworR2l2ZW4KK2BgYAorY2xhc3MgRm9vIHsKKyAg
Li4uCisgIHZpcnR1YWwgfkZvbygpOworICB2aXJ0dWFsIGludCBHZXRTaXplKCkgY29uc3QgPSAw
OworICB2aXJ0dWFsIHN0cmluZyBEZXNjcmliZShjb25zdCBjaGFyKiBuYW1lKSA9IDA7CisgIHZp
cnR1YWwgc3RyaW5nIERlc2NyaWJlKGludCB0eXBlKSA9IDA7CisgIHZpcnR1YWwgYm9vbCBQcm9j
ZXNzKEJhciBlbGVtLCBpbnQgY291bnQpID0gMDsKK307CitgYGAKKyhub3RlIHRoYXQgYH5Gb28o
KWAgKiptdXN0KiogYmUgdmlydHVhbCkgd2UgY2FuIGRlZmluZSBpdHMgbW9jayBhcworYGBgCisj
aW5jbHVkZSA8Z21vY2svZ21vY2suaD4KKworY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28gewor
ICBNT0NLX0NPTlNUX01FVEhPRDAoR2V0U2l6ZSwgaW50KCkpOworICBNT0NLX01FVEhPRDEoRGVz
Y3JpYmUsIHN0cmluZyhjb25zdCBjaGFyKiBuYW1lKSk7CisgIE1PQ0tfTUVUSE9EMShEZXNjcmli
ZSwgc3RyaW5nKGludCB0eXBlKSk7CisgIE1PQ0tfTUVUSE9EMihQcm9jZXNzLCBib29sKEJhciBl
bGVtLCBpbnQgY291bnQpKTsKK307CitgYGAKKworVG8gY3JlYXRlIGEgIm5pY2UiIG1vY2sgb2Jq
ZWN0IHdoaWNoIGlnbm9yZXMgYWxsIHVuaW50ZXJlc3RpbmcgY2FsbHMsCitvciBhICJzdHJpY3Qi
IG1vY2sgb2JqZWN0LCB3aGljaCB0cmVhdHMgdGhlbSBhcyBmYWlsdXJlczoKK2BgYAorTmljZU1v
Y2s8TW9ja0Zvbz4gbmljZV9mb287ICAgICAvLyBUaGUgdHlwZSBpcyBhIHN1YmNsYXNzIG9mIE1v
Y2tGb28uCitTdHJpY3RNb2NrPE1vY2tGb28+IHN0cmljdF9mb287IC8vIFRoZSB0eXBlIGlzIGEg
c3ViY2xhc3Mgb2YgTW9ja0Zvby4KK2BgYAorCisjIyBNb2NraW5nIGEgQ2xhc3MgVGVtcGxhdGUg
IyMKKworVG8gbW9jaworYGBgCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbT4KK2NsYXNzIFN0YWNr
SW50ZXJmYWNlIHsKKyBwdWJsaWM6CisgIC4uLgorICB2aXJ0dWFsIH5TdGFja0ludGVyZmFjZSgp
OworICB2aXJ0dWFsIGludCBHZXRTaXplKCkgY29uc3QgPSAwOworICB2aXJ0dWFsIHZvaWQgUHVz
aChjb25zdCBFbGVtJiB4KSA9IDA7Cit9OworYGBgCisobm90ZSB0aGF0IGB+U3RhY2tJbnRlcmZh
Y2UoKWAgKiptdXN0KiogYmUgdmlydHVhbCkganVzdCBhcHBlbmQgYF9UYCB0byB0aGUgYE1PQ0tf
KmAgbWFjcm9zOgorYGBgCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbT4KK2NsYXNzIE1vY2tTdGFj
ayA6IHB1YmxpYyBTdGFja0ludGVyZmFjZTxFbGVtPiB7CisgcHVibGljOgorICAuLi4KKyAgTU9D
S19DT05TVF9NRVRIT0QwX1QoR2V0U2l6ZSwgaW50KCkpOworICBNT0NLX01FVEhPRDFfVChQdXNo
LCB2b2lkKGNvbnN0IEVsZW0mIHgpKTsKK307CitgYGAKKworIyMgU3BlY2lmeWluZyBDYWxsaW5n
IENvbnZlbnRpb25zIGZvciBNb2NrIEZ1bmN0aW9ucyAjIworCitJZiB5b3VyIG1vY2sgZnVuY3Rp
b24gZG9lc24ndCB1c2UgdGhlIGRlZmF1bHQgY2FsbGluZyBjb252ZW50aW9uLCB5b3UKK2NhbiBz
cGVjaWZ5IGl0IGJ5IGFwcGVuZGluZyBgX1dJVEhfQ0FMTFRZUEVgIHRvIGFueSBvZiB0aGUgbWFj
cm9zCitkZXNjcmliZWQgaW4gdGhlIHByZXZpb3VzIHR3byBzZWN0aW9ucyBhbmQgc3VwcGx5aW5n
IHRoZSBjYWxsaW5nCitjb252ZW50aW9uIGFzIHRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGUgbWFj
cm8uIEZvciBleGFtcGxlLAorYGBgCisgIE1PQ0tfTUVUSE9EXzFfV0lUSF9DQUxMVFlQRShTVERN
RVRIT0RDQUxMVFlQRSwgRm9vLCBib29sKGludCBuKSk7CisgIE1PQ0tfQ09OU1RfTUVUSE9EMl9X
SVRIX0NBTExUWVBFKFNURE1FVEhPRENBTExUWVBFLCBCYXIsIGludChkb3VibGUgeCwgZG91Ymxl
IHkpKTsKK2BgYAord2hlcmUgYFNURE1FVEhPRENBTExUWVBFYCBpcyBkZWZpbmVkIGJ5IGA8b2Jq
YmFzZS5oPmAgb24gV2luZG93cy4KKworIyBVc2luZyBNb2NrcyBpbiBUZXN0cyAjCisKK1RoZSB0
eXBpY2FsIGZsb3cgaXM6CisgIDEuIEltcG9ydCB0aGUgR29vZ2xlIE1vY2sgbmFtZXMgeW91IG5l
ZWQgdG8gdXNlLiBBbGwgR29vZ2xlIE1vY2sgbmFtZXMgYXJlIGluIHRoZSBgdGVzdGluZ2AgbmFt
ZXNwYWNlIHVubGVzcyB0aGV5IGFyZSBtYWNyb3Mgb3Igb3RoZXJ3aXNlIG5vdGVkLgorICAxLiBD
cmVhdGUgdGhlIG1vY2sgb2JqZWN0cy4KKyAgMS4gT3B0aW9uYWxseSwgc2V0IHRoZSBkZWZhdWx0
IGFjdGlvbnMgb2YgdGhlIG1vY2sgb2JqZWN0cy4KKyAgMS4gU2V0IHlvdXIgZXhwZWN0YXRpb25z
IG9uIHRoZSBtb2NrIG9iamVjdHMgKEhvdyB3aWxsIHRoZXkgYmUgY2FsbGVkPyBXaGF0IHdpbCB0
aGV5IGRvPykuCisgIDEuIEV4ZXJjaXNlIGNvZGUgdGhhdCB1c2VzIHRoZSBtb2NrIG9iamVjdHM7
IGlmIG5lY2Vzc2FyeSwgY2hlY2sgdGhlIHJlc3VsdCB1c2luZyBbR29vZ2xlIFRlc3RdKGh0dHA6
Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0LykgYXNzZXJ0aW9ucy4KKyAgMS4gV2hlbiBh
IG1vY2sgb2JqZWN0cyBpcyBkZXN0cnVjdGVkLCBHb29nbGUgTW9jayBhdXRvbWF0aWNhbGx5IHZl
cmlmaWVzIHRoYXQgYWxsIGV4cGVjdGF0aW9ucyBvbiBpdCBoYXZlIGJlZW4gc2F0aXNmaWVkLgor
CitIZXJlIGlzIGFuIGV4YW1wbGU6CitgYGAKK3VzaW5nIDo6dGVzdGluZzo6UmV0dXJuOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyAjMQorCitURVNUKEJhclRlc3QsIERvZXNUaGlzKSB7
CisgIE1vY2tGb28gZm9vOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICMy
CisKKyAgT05fQ0FMTChmb28sIEdldFNpemUoKSkgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
IzMKKyAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybigxKSk7CisgIC8vIC4uLiBvdGhlciBkZWZh
dWx0IGFjdGlvbnMgLi4uCisKKyAgRVhQRUNUX0NBTEwoZm9vLCBEZXNjcmliZSg1KSkgICAgICAg
ICAgICAgICAgICAgLy8gIzQKKyAgICAgIC5UaW1lcygzKQorICAgICAgLldpbGxSZXBlYXRlZGx5
KFJldHVybigiQ2F0ZWdvcnkgNSIpKTsKKyAgLy8gLi4uIG90aGVyIGV4cGVjdGF0aW9ucyAuLi4K
KworICBFWFBFQ1RfRVEoImdvb2QiLCBNeVByb2R1Y3Rpb25GdW5jdGlvbigmZm9vKSk7ICAvLyAj
NQorfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAj
NgorYGBgCisKKyMgU2V0dGluZyBEZWZhdWx0IEFjdGlvbnMgIworCitHb29nbGUgTW9jayBoYXMg
YSAqKmJ1aWx0LWluIGRlZmF1bHQgYWN0aW9uKiogZm9yIGFueSBmdW5jdGlvbiB0aGF0CityZXR1
cm5zIGB2b2lkYCwgYGJvb2xgLCBhIG51bWVyaWMgdmFsdWUsIG9yIGEgcG9pbnRlci4KKworVG8g
Y3VzdG9taXplIHRoZSBkZWZhdWx0IGFjdGlvbiBmb3IgZnVuY3Rpb25zIHdpdGggcmV0dXJuIHR5
cGUgYFRgIGdsb2JhbGx5OgorYGBgCit1c2luZyA6OnRlc3Rpbmc6OkRlZmF1bHRWYWx1ZTsKKwor
RGVmYXVsdFZhbHVlPFQ+OjpTZXQodmFsdWUpOyAgLy8gU2V0cyB0aGUgZGVmYXVsdCB2YWx1ZSB0
byBiZSByZXR1cm5lZC4KKy8vIC4uLiB1c2UgdGhlIG1vY2tzIC4uLgorRGVmYXVsdFZhbHVlPFQ+
OjpDbGVhcigpOyAgICAgLy8gUmVzZXRzIHRoZSBkZWZhdWx0IHZhbHVlLgorYGBgCisKK1RvIGN1
c3RvbWl6ZSB0aGUgZGVmYXVsdCBhY3Rpb24gZm9yIGEgcGFydGljdWxhciBtZXRob2QsIHVzZSBg
T05fQ0FMTCgpYDoKK2BgYAorT05fQ0FMTChtb2NrX29iamVjdCwgbWV0aG9kKG1hdGNoZXJzKSkK
KyAgICAuV2l0aChtdWx0aV9hcmd1bWVudF9tYXRjaGVyKSAgPworICAgIC5XaWxsQnlEZWZhdWx0
KGFjdGlvbik7CitgYGAKKworIyBTZXR0aW5nIEV4cGVjdGF0aW9ucyAjCisKK2BFWFBFQ1RfQ0FM
TCgpYCBzZXRzICoqZXhwZWN0YXRpb25zKiogb24gYSBtb2NrIG1ldGhvZCAoSG93IHdpbGwgaXQg
YmUKK2NhbGxlZD8gV2hhdCB3aWxsIGl0IGRvPyk6CitgYGAKK0VYUEVDVF9DQUxMKG1vY2tfb2Jq
ZWN0LCBtZXRob2QobWF0Y2hlcnMpKQorICAgIC5XaXRoKG11bHRpX2FyZ3VtZW50X21hdGNoZXIp
ICA/CisgICAgLlRpbWVzKGNhcmRpbmFsaXR5KSAgICAgICAgICAgID8KKyAgICAuSW5TZXF1ZW5j
ZShzZXF1ZW5jZXMpICAgICAgICAgKgorICAgIC5BZnRlcihleHBlY3RhdGlvbnMpICAgICAgICAg
ICAqCisgICAgLldpbGxPbmNlKGFjdGlvbikgICAgICAgICAgICAgICoKKyAgICAuV2lsbFJlcGVh
dGVkbHkoYWN0aW9uKSAgICAgICAgPworICAgIC5SZXRpcmVzT25TYXR1cmF0aW9uKCk7ICAgICAg
ICA/CitgYGAKKworSWYgYFRpbWVzKClgIGlzIG9taXR0ZWQsIHRoZSBjYXJkaW5hbGl0eSBpcyBh
c3N1bWVkIHRvIGJlOgorCisgICogYFRpbWVzKDEpYCB3aGVuIHRoZXJlIGlzIG5laXRoZXIgYFdp
bGxPbmNlKClgIG5vciBgV2lsbFJlcGVhdGVkbHkoKWA7CisgICogYFRpbWVzKG4pYCB3aGVuIHRo
ZXJlIGFyZSBgbiBXaWxsT25jZSgpYHMgYnV0IG5vIGBXaWxsUmVwZWF0ZWRseSgpYCwgd2hlcmUg
YG5gID49IDE7IG9yCisgICogYFRpbWVzKEF0TGVhc3QobikpYCB3aGVuIHRoZXJlIGFyZSBgbiBX
aWxsT25jZSgpYHMgYW5kIGEgYFdpbGxSZXBlYXRlZGx5KClgLCB3aGVyZSBgbmAgPj0gMC4KKwor
QSBtZXRob2Qgd2l0aCBubyBgRVhQRUNUX0NBTEwoKWAgaXMgZnJlZSB0byBiZSBpbnZva2VkIF9h
bnkgbnVtYmVyIG9mIHRpbWVzXywgYW5kIHRoZSBkZWZhdWx0IGFjdGlvbiB3aWxsIGJlIHRha2Vu
IGVhY2ggdGltZS4KKworIyBNYXRjaGVycyAjCisKK0EgKiptYXRjaGVyKiogbWF0Y2hlcyBhIF9z
aW5nbGVfIGFyZ3VtZW50LiAgWW91IGNhbiB1c2UgaXQgaW5zaWRlCitgT05fQ0FMTCgpYCBvciBg
RVhQRUNUX0NBTEwoKWAsIG9yIHVzZSBpdCB0byB2YWxpZGF0ZSBhIHZhbHVlCitkaXJlY3RseToK
KworfCBgRVhQRUNUX1RIQVQodmFsdWUsIG1hdGNoZXIpYCB8IEFzc2VydHMgdGhhdCBgdmFsdWVg
IG1hdGNoZXMgYG1hdGNoZXJgLiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKK3wgYEFTU0VSVF9USEFU
KHZhbHVlLCBtYXRjaGVyKWAgfCBUaGUgc2FtZSBhcyBgRVhQRUNUX1RIQVQodmFsdWUsIG1hdGNo
ZXIpYCwgZXhjZXB0IHRoYXQgaXQgZ2VuZXJhdGVzIGEgKipmYXRhbCoqIGZhaWx1cmUuIHwKKwor
QnVpbHQtaW4gbWF0Y2hlcnMgKHdoZXJlIGBhcmd1bWVudGAgaXMgdGhlIGZ1bmN0aW9uIGFyZ3Vt
ZW50KSBhcmUKK2RpdmlkZWQgaW50byBzZXZlcmFsIGNhdGVnb3JpZXM6CisKKyMjIFdpbGRjYXJk
ICMjCit8YF9gfGBhcmd1bWVudGAgY2FuIGJlIGFueSB2YWx1ZSBvZiB0aGUgY29ycmVjdCB0eXBl
LnwKK3w6LS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
fAorfGBBPHR5cGU+KClgIG9yIGBBbjx0eXBlPigpYHxgYXJndW1lbnRgIGNhbiBiZSBhbnkgdmFs
dWUgb2YgdHlwZSBgdHlwZWAuICAgICB8CisKKyMjIEdlbmVyaWMgQ29tcGFyaXNvbiAjIworCit8
YEVxKHZhbHVlKWAgb3IgYHZhbHVlYHxgYXJndW1lbnQgPT0gdmFsdWVgfAorfDotLS0tLS0tLS0t
LS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLXwKK3xgR2UodmFsdWUpYCAgICAgICAgICAg
fGBhcmd1bWVudCA+PSB2YWx1ZWB8Cit8YEd0KHZhbHVlKWAgICAgICAgICAgIHxgYXJndW1lbnQg
PiB2YWx1ZWAgfAorfGBMZSh2YWx1ZSlgICAgICAgICAgICB8YGFyZ3VtZW50IDw9IHZhbHVlYHwK
K3xgTHQodmFsdWUpYCAgICAgICAgICAgfGBhcmd1bWVudCA8IHZhbHVlYCB8Cit8YE5lKHZhbHVl
KWAgICAgICAgICAgIHxgYXJndW1lbnQgIT0gdmFsdWVgfAorfGBJc051bGwoKWAgICAgICAgICAg
ICB8YGFyZ3VtZW50YCBpcyBhIGBOVUxMYCBwb2ludGVyIChyYXcgb3Igc21hcnQpLnwKK3xgTm90
TnVsbCgpYCAgICAgICAgICAgfGBhcmd1bWVudGAgaXMgYSBub24tbnVsbCBwb2ludGVyIChyYXcg
b3Igc21hcnQpLnwKK3xgUmVmKHZhcmlhYmxlKWAgICAgICAgfGBhcmd1bWVudGAgaXMgYSByZWZl
cmVuY2UgdG8gYHZhcmlhYmxlYC58Cit8YFR5cGVkRXE8dHlwZT4odmFsdWUpYHxgYXJndW1lbnRg
IGhhcyB0eXBlIGB0eXBlYCBhbmQgaXMgZXF1YWwgdG8gYHZhbHVlYC4gWW91IG1heSBuZWVkIHRv
IHVzZSB0aGlzIGluc3RlYWQgb2YgYEVxKHZhbHVlKWAgd2hlbiB0aGUgbW9jayBmdW5jdGlvbiBp
cyBvdmVybG9hZGVkLnwKKworRXhjZXB0IGBSZWYoKWAsIHRoZXNlIG1hdGNoZXJzIG1ha2UgYSBf
Y29weV8gb2YgYHZhbHVlYCBpbiBjYXNlIGl0J3MKK21vZGlmaWVkIG9yIGRlc3RydWN0ZWQgbGF0
ZXIuIElmIHRoZSBjb21waWxlciBjb21wbGFpbnMgdGhhdCBgdmFsdWVgCitkb2Vzbid0IGhhdmUg
YSBwdWJsaWMgY29weSBjb25zdHJ1Y3RvciwgdHJ5IHdyYXAgaXQgaW4gYEJ5UmVmKClgLAorZS5n
LiBgRXEoQnlSZWYobm9uX2NvcHlhYmxlX3ZhbHVlKSlgLiBJZiB5b3UgZG8gdGhhdCwgbWFrZSBz
dXJlCitgbm9uX2NvcHlhYmxlX3ZhbHVlYCBpcyBub3QgY2hhbmdlZCBhZnRlcndhcmRzLCBvciB0
aGUgbWVhbmluZyBvZiB5b3VyCittYXRjaGVyIHdpbGwgYmUgY2hhbmdlZC4KKworIyMgRmxvYXRp
bmctUG9pbnQgTWF0Y2hlcnMgIyMKKworfGBEb3VibGVFcShhX2RvdWJsZSlgfGBhcmd1bWVudGAg
aXMgYSBgZG91YmxlYCB2YWx1ZSBhcHByb3hpbWF0ZWx5IGVxdWFsIHRvIGBhX2RvdWJsZWAsIHRy
ZWF0aW5nIHR3byBOYU5zIGFzIHVuZXF1YWwufAorfDotLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorfGBGbG9hdEVxKGFfZmxvYXQpYCAg
fGBhcmd1bWVudGAgaXMgYSBgZmxvYXRgIHZhbHVlIGFwcHJveGltYXRlbHkgZXF1YWwgdG8gYGFf
ZmxvYXRgLCB0cmVhdGluZyB0d28gTmFOcyBhcyB1bmVxdWFsLiAgfAorfGBOYW5TZW5zaXRpdmVE
b3VibGVFcShhX2RvdWJsZSlgfGBhcmd1bWVudGAgaXMgYSBgZG91YmxlYCB2YWx1ZSBhcHByb3hp
bWF0ZWx5IGVxdWFsIHRvIGBhX2RvdWJsZWAsIHRyZWF0aW5nIHR3byBOYU5zIGFzIGVxdWFsLiAg
fAorfGBOYW5TZW5zaXRpdmVGbG9hdEVxKGFfZmxvYXQpYHxgYXJndW1lbnRgIGlzIGEgYGZsb2F0
YCB2YWx1ZSBhcHByb3hpbWF0ZWx5IGVxdWFsIHRvIGBhX2Zsb2F0YCwgdHJlYXRpbmcgdHdvIE5h
TnMgYXMgZXF1YWwuICAgIHwKKworVGhlIGFib3ZlIG1hdGNoZXJzIHVzZSBVTFAtYmFzZWQgY29t
cGFyaXNvbiAodGhlIHNhbWUgYXMgdXNlZCBpbgorW0dvb2dsZSBUZXN0XShodHRwOi8vY29kZS5n
b29nbGUuY29tL3AvZ29vZ2xldGVzdC8pKS4gVGhleQorYXV0b21hdGljYWxseSBwaWNrIGEgcmVh
c29uYWJsZSBlcnJvciBib3VuZCBiYXNlZCBvbiB0aGUgYWJzb2x1dGUKK3ZhbHVlIG9mIHRoZSBl
eHBlY3RlZCB2YWx1ZS4gIGBEb3VibGVFcSgpYCBhbmQgYEZsb2F0RXEoKWAgY29uZm9ybSB0bwor
dGhlIElFRUUgc3RhbmRhcmQsIHdoaWNoIHJlcXVpcmVzIGNvbXBhcmluZyB0d28gTmFOcyBmb3Ig
ZXF1YWxpdHkgdG8KK3JldHVybiBmYWxzZS4gVGhlIGBOYW5TZW5zaXRpdmUqYCB2ZXJzaW9uIGlu
c3RlYWQgdHJlYXRzIHR3byBOYU5zIGFzCitlcXVhbCwgd2hpY2ggaXMgb2Z0ZW4gd2hhdCBhIHVz
ZXIgd2FudHMuCisKKyMjIFN0cmluZyBNYXRjaGVycyAjIworCitUaGUgYGFyZ3VtZW50YCBjYW4g
YmUgZWl0aGVyIGEgQyBzdHJpbmcgb3IgYSBDKysgc3RyaW5nIG9iamVjdDoKKworfGBDb250YWlu
c1JlZ2V4KHN0cmluZylgfGBhcmd1bWVudGAgbWF0Y2hlcyB0aGUgZ2l2ZW4gcmVndWxhciBleHBy
ZXNzaW9uLnwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Cit8YEVuZHNXaXRoKHN1ZmZpeClgICAgICB8YGFy
Z3VtZW50YCBlbmRzIHdpdGggc3RyaW5nIGBzdWZmaXhgLiAgICAgICAgICAgfAorfGBIYXNTdWJz
dHIoc3RyaW5nKWAgICAgfGBhcmd1bWVudGAgY29udGFpbnMgYHN0cmluZ2AgYXMgYSBzdWItc3Ry
aW5nLiAgIHwKK3xgTWF0Y2hlc1JlZ2V4KHN0cmluZylgIHxgYXJndW1lbnRgIG1hdGNoZXMgdGhl
IGdpdmVuIHJlZ3VsYXIgZXhwcmVzc2lvbiB3aXRoIHRoZSBtYXRjaCBzdGFydGluZyBhdCB0aGUg
Zmlyc3QgY2hhcmFjdGVyIGFuZCBlbmRpbmcgYXQgdGhlIGxhc3QgY2hhcmFjdGVyLnwKK3xgU3Rh
cnRzV2l0aChwcmVmaXgpYCAgIHxgYXJndW1lbnRgIHN0YXJ0cyB3aXRoIHN0cmluZyBgcHJlZml4
YC4gICAgICAgICB8Cit8YFN0ckNhc2VFcShzdHJpbmcpYCAgICB8YGFyZ3VtZW50YCBpcyBlcXVh
bCB0byBgc3RyaW5nYCwgaWdub3JpbmcgY2FzZS4gfAorfGBTdHJDYXNlTmUoc3RyaW5nKWAgICAg
fGBhcmd1bWVudGAgaXMgbm90IGVxdWFsIHRvIGBzdHJpbmdgLCBpZ25vcmluZyBjYXNlLnwKK3xg
U3RyRXEoc3RyaW5nKWAgICAgICAgIHxgYXJndW1lbnRgIGlzIGVxdWFsIHRvIGBzdHJpbmdgLiAg
ICAgICAgICAgICAgICB8Cit8YFN0ck5lKHN0cmluZylgICAgICAgICB8YGFyZ3VtZW50YCBpcyBu
b3QgZXF1YWwgdG8gYHN0cmluZ2AuICAgICAgICAgICAgfAorCitgU3RyQ2FzZUVxKClgLCBgU3Ry
Q2FzZU5lKClgLCBgU3RyRXEoKWAsIGFuZCBgU3RyTmUoKWAgd29yayBmb3Igd2lkZQorc3RyaW5n
cyBhcyB3ZWxsLgorCisjIyBDb250YWluZXIgTWF0Y2hlcnMgIyMKKworTW9zdCBTVEwtc3R5bGUg
Y29udGFpbmVycyBzdXBwb3J0IGA9PWAsIHNvIHlvdSBjYW4gdXNlCitgRXEoZXhwZWN0ZWRfY29u
dGFpbmVyKWAgb3Igc2ltcGx5IGBleHBlY3RlZF9jb250YWluZXJgIHRvIG1hdGNoIGEKK2NvbnRh
aW5lciBleGFjdGx5LiAgIElmIHlvdSB3YW50IHRvIHdyaXRlIHRoZSBlbGVtZW50cyBpbi1saW5l
LAorbWF0Y2ggdGhlbSBtb3JlIGZsZXhpYmx5LCBvciBnZXQgbW9yZSBpbmZvcm1hdGl2ZSBtZXNz
YWdlcywgeW91IGNhbiB1c2U6CisKK3wgYENvbnRhaW5zKGUpYCB8IGBhcmd1bWVudGAgY29udGFp
bnMgYW4gZWxlbWVudCB0aGF0IG1hdGNoZXMgYGVgLCB3aGljaCBjYW4gYmUgZWl0aGVyIGEgdmFs
dWUgb3IgYSBtYXRjaGVyLiB8Cit8Oi0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tfAorfGBFbGVtZW50c0FyZShlMCwgZTEsIC4uLiwgZW4pYHxgYXJndW1l
bnRgIGhhcyBgbiArIDFgIGVsZW1lbnRzLCB3aGVyZSB0aGUgaS10aCBlbGVtZW50IG1hdGNoZXMg
YGVpYCwgd2hpY2ggY2FuIGJlIGEgdmFsdWUgb3IgYSBtYXRjaGVyLiAwIHRvIDEwIGFyZ3VtZW50
cyBhcmUgYWxsb3dlZC58Cit8YEVsZW1lbnRzQXJlQXJyYXkoYXJyYXkpYCBvciBgRWxlbWVudHNB
cmVBcnJheShhcnJheSwgY291bnQpYHxUaGUgc2FtZSBhcyBgRWxlbWVudHNBcmUoKWAgZXhjZXB0
IHRoYXQgdGhlIGV4cGVjdGVkIGVsZW1lbnQgdmFsdWVzL21hdGNoZXJzIGNvbWUgZnJvbSBhIEMt
c3R5bGUgYXJyYXkufAorfCBgQ29udGFpbmVyRXEoY29udGFpbmVyKWAgfCBUaGUgc2FtZSBhcyBg
RXEoY29udGFpbmVyKWAgZXhjZXB0IHRoYXQgdGhlIGZhaWx1cmUgbWVzc2FnZSBhbHNvIGluY2x1
ZGVzIHdoaWNoIGVsZW1lbnRzIGFyZSBpbiBvbmUgY29udGFpbmVyIGJ1dCBub3QgdGhlIG90aGVy
LiB8CisKK1RoZXNlIG1hdGNoZXJzIGNhbiBhbHNvIG1hdGNoOgorCisgIDEuIGEgbmF0aXZlIGFy
cmF5IHBhc3NlZCBieSByZWZlcmVuY2UgKGUuZy4gaW4gYEZvbyhjb25zdCBpbnQgKCZhKVs1XSlg
KSwgYW5kCisgIDEuIGFuIGFycmF5IHBhc3NlZCBhcyBhIHBvaW50ZXIgYW5kIGEgY291bnQgKGUu
Zy4gaW4gYEJhcihjb25zdCBUKiBidWZmZXIsIGludCBsZW4pYCAtLSBzZWUgW011bHRpLWFyZ3Vt
ZW50IE1hdGNoZXJzXSgjTXVsdGlhcmd1bWVudF9NYXRjaGVycy5tZCkpLgorCit3aGVyZSB0aGUg
YXJyYXkgbWF5IGJlIG11bHRpLWRpbWVuc2lvbmFsIChpLmUuIGl0cyBlbGVtZW50cyBjYW4gYmUg
YXJyYXlzKS4KKworIyMgTWVtYmVyIE1hdGNoZXJzICMjCisKK3xgRmllbGQoJmNsYXNzOjpmaWVs
ZCwgbSlgfGBhcmd1bWVudC5maWVsZGAgKG9yIGBhcmd1bWVudC0+ZmllbGRgIHdoZW4gYGFyZ3Vt
ZW50YCBpcyBhIHBsYWluIHBvaW50ZXIpIG1hdGNoZXMgbWF0Y2hlciBgbWAsIHdoZXJlIGBhcmd1
bWVudGAgaXMgYW4gb2JqZWN0IG9mIHR5cGUgX2NsYXNzXy58Cit8Oi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorfGBLZXkoZSlgICAgICAgICAg
ICAgICAgICB8YGFyZ3VtZW50LmZpcnN0YCBtYXRjaGVzIGBlYCwgd2hpY2ggY2FuIGJlIGVpdGhl
ciBhIHZhbHVlIG9yIGEgbWF0Y2hlci4gRS5nLiBgQ29udGFpbnMoS2V5KExlKDUpKSlgIGNhbiB2
ZXJpZnkgdGhhdCBhIGBtYXBgIGNvbnRhaW5zIGEga2V5IGA8PSA1YC58Cit8YFBhaXIobTEsIG0y
KWAgICAgICAgICAgIHxgYXJndW1lbnRgIGlzIGFuIGBzdGQ6OnBhaXJgIHdob3NlIGBmaXJzdGAg
ZmllbGQgbWF0Y2hlcyBgbTFgIGFuZCBgc2Vjb25kYCBmaWVsZCBtYXRjaGVzIGBtMmAuICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfGBQcm9wZXJ0eSgm
Y2xhc3M6OnByb3BlcnR5LCBtKWB8YGFyZ3VtZW50LnByb3BlcnR5KClgIChvciBgYXJndW1lbnQt
PnByb3BlcnR5KClgIHdoZW4gYGFyZ3VtZW50YCBpcyBhIHBsYWluIHBvaW50ZXIpIG1hdGNoZXMg
bWF0Y2hlciBgbWAsIHdoZXJlIGBhcmd1bWVudGAgaXMgYW4gb2JqZWN0IG9mIHR5cGUgX2NsYXNz
Xy58CisKKyMjIE1hdGNoaW5nIHRoZSBSZXN1bHQgb2YgYSBGdW5jdGlvbiBvciBGdW5jdG9yICMj
CisKK3xgUmVzdWx0T2YoZiwgbSlgfGBmKGFyZ3VtZW50KWAgbWF0Y2hlcyBtYXRjaGVyIGBtYCwg
d2hlcmUgYGZgIGlzIGEgZnVuY3Rpb24gb3IgZnVuY3Rvci58Cit8Oi0tLS0tLS0tLS0tLS0tLXw6
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tfAorCisjIyBQb2ludGVyIE1hdGNoZXJzICMjCisKK3xgUG9pbnRlZShtKWB8
YGFyZ3VtZW50YCAoZWl0aGVyIGEgc21hcnQgcG9pbnRlciBvciBhIHJhdyBwb2ludGVyKSBwb2lu
dHMgdG8gYSB2YWx1ZSB0aGF0IG1hdGNoZXMgbWF0Y2hlciBgbWAufAorfDotLS0tLS0tLS0tLXw6
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisKKyMjIE11bHRpYXJndW1l
bnQgTWF0Y2hlcnMgIyMKKworVGhlc2UgYXJlIG1hdGNoZXJzIG9uIHR1cGxlIHR5cGVzLiBUaGV5
IGNhbiBiZSB1c2VkIGluCitgLldpdGgoKWAuIFRoZSBmb2xsb3dpbmcgY2FuIGJlIHVzZWQgb24g
ZnVuY3Rpb25zIHdpdGggPGk+dHdvPGJyPgorYXJndW1lbnRzPC9pPiBgeGAgYW5kIGB5YDoKKwor
fGBFcSgpYHxgeCA9PSB5YHwKK3w6LS0tLS18Oi0tLS0tLS18Cit8YEdlKClgfGB4ID49IHlgfAor
fGBHdCgpYHxgeCA+IHlgIHwKK3xgTGUoKWB8YHggPD0geWB8Cit8YEx0KClgfGB4IDwgeWAgfAor
fGBOZSgpYHxgeCAhPSB5YHwKKworWW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyBzZWxlY3RvcnMg
dG8gcGljayBhIHN1YnNldCBvZiB0aGUgYXJndW1lbnRzCisob3IgcmVvcmRlciB0aGVtKSB0byBw
YXJ0aWNpcGF0ZSBpbiB0aGUgbWF0Y2hpbmc6CisKK3xgQWxsQXJncyhtKWB8RXF1aXZhbGVudCB0
byBgbWAuIFVzZWZ1bCBhcyBzeW50YWN0aWMgc3VnYXIgaW4gYC5XaXRoKEFsbEFyZ3MobSkpYC58
Cit8Oi0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorfGBBcmdzPE4xLCBOMiwgLi4uLCBOaz4obSlg
fFRoZSBga2Agc2VsZWN0ZWQgKHVzaW5nIDAtYmFzZWQgaW5kaWNlcykgYXJndW1lbnRzIG1hdGNo
IGBtYCwgZS5nLiBgQXJnczwxLCAyPihDb250YWlucyg1KSlgLnwKKworIyMgQ29tcG9zaXRlIE1h
dGNoZXJzICMjCisKK1lvdSBjYW4gbWFrZSBhIG1hdGNoZXIgZnJvbSBvbmUgb3IgbW9yZSBvdGhl
ciBtYXRjaGVyczoKKworfGBBbGxPZihtMSwgbTIsIC4uLiwgbW4pYHxgYXJndW1lbnRgIG1hdGNo
ZXMgYWxsIG9mIHRoZSBtYXRjaGVycyBgbTFgIHRvIGBtbmAufAorfDotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tfAorfGBBbnlPZihtMSwgbTIsIC4uLiwgbW4pYHxgYXJndW1lbnRgIG1hdGNoZXMgYXQgbGVh
c3Qgb25lIG9mIHRoZSBtYXRjaGVycyBgbTFgIHRvIGBtbmAufAorfGBOb3QobSlgICAgICAgICAg
ICAgICAgIHxgYXJndW1lbnRgIGRvZXNuJ3QgbWF0Y2ggbWF0Y2hlciBgbWAuICAgICAgICAgICAg
ICAgfAorCisjIyBBZGFwdGVycyBmb3IgTWF0Y2hlcnMgIyMKKworfGBNYXRjaGVyQ2FzdDxUPiht
KWB8Y2FzdHMgbWF0Y2hlciBgbWAgdG8gdHlwZSBgTWF0Y2hlcjxUPmAufAorfDotLS0tLS0tLS0t
LS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorfGBTYWZl
TWF0Y2hlckNhc3Q8VD4obSlgfCBbc2FmZWx5IGNhc3RzXShWMV81X0Nvb2tCb29rI0Nhc3Rpbmdf
TWF0Y2hlcnMubWQpIG1hdGNoZXIgYG1gIHRvIHR5cGUgYE1hdGNoZXI8VD5gLiB8Cit8YFRydWx5
KHByZWRpY2F0ZSlgIHxgcHJlZGljYXRlKGFyZ3VtZW50KWAgcmV0dXJucyBzb21ldGhpbmcgY29u
c2lkZXJlZCBieSBDKysgdG8gYmUgdHJ1ZSwgd2hlcmUgYHByZWRpY2F0ZWAgaXMgYSBmdW5jdGlv
biBvciBmdW5jdG9yLnwKKworIyMgTWF0Y2hlcnMgYXMgUHJlZGljYXRlcyAjIworCit8YE1hdGNo
ZXMobSlgfGEgdW5hcnkgZnVuY3RvciB0aGF0IHJldHVybnMgYHRydWVgIGlmIHRoZSBhcmd1bWVu
dCBtYXRjaGVzIGBtYC58Cit8Oi0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Cit8YEV4cGxhaW5NYXRjaFJl
c3VsdChtLCB2YWx1ZSwgcmVzdWx0X2xpc3RlbmVyKWB8cmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVl
YCBtYXRjaGVzIGBtYCwgZXhwbGFpbmluZyB0aGUgcmVzdWx0IHRvIGByZXN1bHRfbGlzdGVuZXJg
LnwKK3xgVmFsdWUoeCwgbSlgfHJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZSBvZiBgeGAgbWF0
Y2hlcyBgbWAuICAgICAgICAgICAgICAgICB8CisKKyMjIERlZmluaW5nIE1hdGNoZXJzICMjCisK
K3wgYE1BVENIRVIoSXNFdmVuLCAiIikgeyByZXR1cm4gKGFyZyAlIDIpID09IDA7IH1gIHwgRGVm
aW5lcyBhIG1hdGNoZXIgYElzRXZlbigpYCB0byBtYXRjaCBhbiBldmVuIG51bWJlci4gfAorfDot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Cit8IGBNQVRD
SEVSX1AoSXNEaXZpc2libGVCeSwgbiwgIiIpIHsgKnJlc3VsdF9saXN0ZW5lciA8PCAid2hlcmUg
dGhlIHJlbWFpbmRlciBpcyAiIDw8IChhcmcgJSBuKTsgcmV0dXJuIChhcmcgJSBuKSA9PSAwOyB9
YCB8IERlZmluZXMgYSBtYWNoZXIgYElzRGl2aXNpYmxlQnkobilgIHRvIG1hdGNoIGEgbnVtYmVy
IGRpdmlzaWJsZSBieSBgbmAuIHwKK3wgYE1BVENIRVJfUDIoSXNCZXR3ZWVuLCBhLCBiLCAiaXMg
YmV0d2VlbiAlKGEpcyBhbmQgJShiKXMiKSB7IHJldHVybiBhIDw9IGFyZyAmJiBhcmcgPD0gYjsg
fWAgfCBEZWZpbmVzIGEgbWF0Y2hlciBgSXNCZXR3ZWVuKGEsIGIpYCB0byBtYXRjaCBhIHZhbHVl
IGluIHRoZSByYW5nZSBbYGFgLCBgYmBdLiB8CisKKyoqTm90ZXM6KioKKworICAxLiBUaGUgYE1B
VENIRVIqYCBtYWNyb3MgY2Fubm90IGJlIHVzZWQgaW5zaWRlIGEgZnVuY3Rpb24gb3IgY2xhc3Mu
CisgIDEuIFRoZSBtYXRjaGVyIGJvZHkgbXVzdCBiZSBfcHVyZWx5IGZ1bmN0aW9uYWxfIChpLmUu
IGl0IGNhbm5vdCBoYXZlIGFueSBzaWRlIGVmZmVjdCwgYW5kIHRoZSByZXN1bHQgbXVzdCBub3Qg
ZGVwZW5kIG9uIGFueXRoaW5nIG90aGVyIHRoYW4gdGhlIHZhbHVlIGJlaW5nIG1hdGNoZWQgYW5k
IHRoZSBtYXRjaGVyIHBhcmFtZXRlcnMpLgorICAxLiBZb3UgY2FuIHVzZSBgUHJpbnRUb1N0cmlu
Zyh4KWAgdG8gY29udmVydCBhIHZhbHVlIGB4YCBvZiBhbnkgdHlwZSB0byBhIHN0cmluZy4KKwor
IyMgTWF0Y2hlcnMgYXMgVGVzdCBBc3NlcnRpb25zICMjCisKK3xgQVNTRVJUX1RIQVQoZXhwcmVz
c2lvbiwgbSlgfEdlbmVyYXRlcyBhIFtmYXRhbCBmYWlsdXJlXShodHRwOi8vY29kZS5nb29nbGUu
Y29tL3AvZ29vZ2xldGVzdC93aWtpL0dvb2dsZVRlc3RQcmltZXIjQXNzZXJ0aW9ucykgaWYgdGhl
IHZhbHVlIG9mIGBleHByZXNzaW9uYCBkb2Vzbid0IG1hdGNoIG1hdGNoZXIgYG1gLnwKK3w6LS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLXwKK3xgRVhQRUNUX1RIQVQoZXhwcmVzc2lvbiwgbSlgfEdlbmVyYXRlcyBhIG5vbi1m
YXRhbCBmYWlsdXJlIGlmIHRoZSB2YWx1ZSBvZiBgZXhwcmVzc2lvbmAgZG9lc24ndCBtYXRjaCBt
YXRjaGVyIGBtYC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwKKworIyBBY3Rpb25zICMKKworKipBY3Rpb25zKiogc3Bl
Y2lmeSB3aGF0IGEgbW9jayBmdW5jdGlvbiBzaG91bGQgZG8gd2hlbiBpbnZva2VkLgorCisjIyBS
ZXR1cm5pbmcgYSBWYWx1ZSAjIworCit8YFJldHVybigpYHxSZXR1cm4gZnJvbSBhIGB2b2lkYCBt
b2NrIGZ1bmN0aW9uLnwKK3w6LS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tfAorfGBSZXR1cm4odmFsdWUpYHxSZXR1cm4gYHZhbHVlYC4gICAgICAgICAgICAgICAg
ICAgIHwKK3xgUmV0dXJuQXJnPE4+KClgfFJldHVybiB0aGUgYE5gLXRoICgwLWJhc2VkKSBhcmd1
bWVudC58Cit8YFJldHVybk5ldzxUPihhMSwgLi4uLCBhaylgfFJldHVybiBgbmV3IFQoYTEsIC4u
LiwgYWspYDsgYSBkaWZmZXJlbnQgb2JqZWN0IGlzIGNyZWF0ZWQgZWFjaCB0aW1lLnwKK3xgUmV0
dXJuTnVsbCgpYHxSZXR1cm4gYSBudWxsIHBvaW50ZXIuICAgICAgICAgICAgIHwKK3xgUmV0dXJu
UmVmKHZhcmlhYmxlKWB8UmV0dXJuIGEgcmVmZXJlbmNlIHRvIGB2YXJpYWJsZWAuICB8CisKKyMj
IFNpZGUgRWZmZWN0cyAjIworCit8YEFzc2lnbigmdmFyaWFibGUsIHZhbHVlKWB8QXNzaWduIGB2
YWx1ZWAgdG8gdmFyaWFibGUufAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLXwKK3wgYERlbGV0ZUFyZzxOPigpYCAgICAgICAgIHwgRGVsZXRl
IHRoZSBgTmAtdGggKDAtYmFzZWQpIGFyZ3VtZW50LCB3aGljaCBtdXN0IGJlIGEgcG9pbnRlci4g
fAorfCBgU2F2ZUFyZzxOPihwb2ludGVyKWAgICAgfCBTYXZlIHRoZSBgTmAtdGggKDAtYmFzZWQp
IGFyZ3VtZW50IHRvIGAqcG9pbnRlcmAuIHwKK3wgYFNldEFyZ1JlZmVyZWU8Tj4odmFsdWUpYCB8
CUFzc2lnbiB2YWx1ZSB0byB0aGUgdmFyaWFibGUgcmVmZXJlbmNlZCBieSB0aGUgYE5gLXRoICgw
LWJhc2VkKSBhcmd1bWVudC4gfAorfGBTZXRBcmd1bWVudFBvaW50ZWU8Tj4odmFsdWUpYHxBc3Np
Z24gYHZhbHVlYCB0byB0aGUgdmFyaWFibGUgcG9pbnRlZCBieSB0aGUgYE5gLXRoICgwLWJhc2Vk
KSBhcmd1bWVudC58Cit8YFNldEFycmF5QXJndW1lbnQ8Tj4oZmlyc3QsIGxhc3QpYHxDb3BpZXMg
dGhlIGVsZW1lbnRzIGluIHNvdXJjZSByYW5nZSBbYGZpcnN0YCwgYGxhc3RgKSB0byB0aGUgYXJy
YXkgcG9pbnRlZCB0byBieSB0aGUgYE5gLXRoICgwLWJhc2VkKSBhcmd1bWVudCwgd2hpY2ggY2Fu
IGJlIGVpdGhlciBhIHBvaW50ZXIgb3IgYW4gaXRlcmF0b3IuIFRoZSBhY3Rpb24gZG9lcyBub3Qg
dGFrZSBvd25lcnNoaXAgb2YgdGhlIGVsZW1lbnRzIGluIHRoZSBzb3VyY2UgcmFuZ2UufAorfGBT
ZXRFcnJub0FuZFJldHVybihlcnJvciwgdmFsdWUpYHxTZXQgYGVycm5vYCB0byBgZXJyb3JgIGFu
ZCByZXR1cm4gYHZhbHVlYC58Cit8YFRocm93KGV4Y2VwdGlvbilgICAgICAgICB8VGhyb3dzIHRo
ZSBnaXZlbiBleGNlcHRpb24sIHdoaWNoIGNhbiBiZSBhbnkgY29weWFibGUgdmFsdWUuIEF2YWls
YWJsZSBzaW5jZSB2MS4xLjAufAorCisjIyBVc2luZyBhIEZ1bmN0aW9uIG9yIGEgRnVuY3RvciBh
cyBhbiBBY3Rpb24gIyMKKworfGBJbnZva2UoZilgfEludm9rZSBgZmAgd2l0aCB0aGUgYXJndW1l
bnRzIHBhc3NlZCB0byB0aGUgbW9jayBmdW5jdGlvbiwgd2hlcmUgYGZgIGNhbiBiZSBhIGdsb2Jh
bC9zdGF0aWMgZnVuY3Rpb24gb3IgYSBmdW5jdG9yLnwKK3w6LS0tLS0tLS0tLXw6LS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Cit8YEludm9r
ZShvYmplY3RfcG9pbnRlciwgJmNsYXNzOjptZXRob2QpYHxJbnZva2UgdGhlIHttZXRob2Qgb24g
dGhlIG9iamVjdCB3aXRoIHRoZSBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBtb2NrIGZ1bmN0aW9u
LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8YEludm9rZVdpdGhvdXRBcmdz
KGYpYHxJbnZva2UgYGZgLCB3aGljaCBjYW4gYmUgYSBnbG9iYWwvc3RhdGljIGZ1bmN0aW9uIG9y
IGEgZnVuY3Rvci4gYGZgIG11c3QgdGFrZSBubyBhcmd1bWVudHMuICAgICAgICAgICAgICAgICAg
ICAgICB8Cit8YEludm9rZVdpdGhvdXRBcmdzKG9iamVjdF9wb2ludGVyLCAmY2xhc3M6Om1ldGhv
ZClgfEludm9rZSB0aGUgbWV0aG9kIG9uIHRoZSBvYmplY3QsIHdoaWNoIHRha2VzIG5vIGFyZ3Vt
ZW50cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKK3xgSW52b2tlQXJndW1lbnQ8Tj4oYXJnMSwgYXJnMiwgLi4uLCBhcmdrKWB8SW52b2tl
IHRoZSBtb2NrIGZ1bmN0aW9uJ3MgYE5gLXRoICgwLWJhc2VkKSBhcmd1bWVudCwgd2hpY2ggbXVz
dCBiZSBhIGZ1bmN0aW9uIG9yIGEgZnVuY3Rvciwgd2l0aCB0aGUgYGtgIGFyZ3VtZW50cy58CisK
K1RoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGludm9rZWQgZnVuY3Rpb24gaXMgdXNlZCBhcyB0aGUg
cmV0dXJuIHZhbHVlCitvZiB0aGUgYWN0aW9uLgorCitXaGVuIGRlZmluaW5nIGEgZnVuY3Rpb24g
b3IgZnVuY3RvciB0byBiZSB1c2VkIHdpdGggYEludm9rZSooKWAsIHlvdSBjYW4gZGVjbGFyZSBh
bnkgdW51c2VkIHBhcmFtZXRlcnMgYXMgYFVudXNlZGA6CitgYGAKKyAgZG91YmxlIERpc3RhbmNl
KFVudXNlZCwgZG91YmxlIHgsIGRvdWJsZSB5KSB7IHJldHVybiBzcXJ0KHgqeCArIHkqeSk7IH0K
KyAgLi4uCisgIEVYUEVDVF9DQUxMKG1vY2ssIEZvbygiSGkiLCBfLCBfKSkuV2lsbE9uY2UoSW52
b2tlKERpc3RhbmNlKSk7CitgYGAKKworSW4gYEludm9rZUFyZ3VtZW50PE4+KC4uLilgLCBpZiBh
biBhcmd1bWVudCBuZWVkcyB0byBiZSBwYXNzZWQgYnkgcmVmZXJlbmNlLCB3cmFwIGl0IGluc2lk
ZSBgQnlSZWYoKWAuIEZvciBleGFtcGxlLAorYGBgCisgIEludm9rZUFyZ3VtZW50PDI+KDUsIHN0
cmluZygiSGkiKSwgQnlSZWYoZm9vKSkKK2BgYAorY2FsbHMgdGhlIG1vY2sgZnVuY3Rpb24ncyAj
MiBhcmd1bWVudCwgcGFzc2luZyB0byBpdCBgNWAgYW5kIGBzdHJpbmcoIkhpIilgIGJ5IHZhbHVl
LCBhbmQgYGZvb2AgYnkgcmVmZXJlbmNlLgorCisjIyBEZWZhdWx0IEFjdGlvbiAjIworCit8YERv
RGVmYXVsdCgpYHxEbyB0aGUgZGVmYXVsdCBhY3Rpb24gKHNwZWNpZmllZCBieSBgT05fQ0FMTCgp
YCBvciB0aGUgYnVpbHQtaW4gb25lKS58Cit8Oi0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisK
KyoqTm90ZToqKiBkdWUgdG8gdGVjaG5pY2FsIHJlYXNvbnMsIGBEb0RlZmF1bHQoKWAgY2Fubm90
IGJlIHVzZWQgaW5zaWRlICBhIGNvbXBvc2l0ZSBhY3Rpb24gLSB0cnlpbmcgdG8gZG8gc28gd2ls
bCByZXN1bHQgaW4gYSBydW4tdGltZSBlcnJvci4KKworIyMgQ29tcG9zaXRlIEFjdGlvbnMgIyMK
KworfGBEb0FsbChhMSwgYTIsIC4uLiwgYW4pYHxEbyBhbGwgYWN0aW9ucyBgYTFgIHRvIGBhbmAg
YW5kIHJldHVybiB0aGUgcmVzdWx0IG9mIGBhbmAgaW4gZWFjaCBpbnZvY2F0aW9uLiBUaGUgZmly
c3QgYG4gLSAxYCBzdWItYWN0aW9ucyBtdXN0IHJldHVybiB2b2lkLiB8Cit8Oi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKK3xgSWdub3JlUmVzdWx0KGEpYCAgICAgICB8UGVy
Zm9ybSBhY3Rpb24gYGFgIGFuZCBpZ25vcmUgaXRzIHJlc3VsdC4gYGFgIG11c3Qgbm90IHJldHVy
biB2b2lkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAorfGBXaXRoQXJnPE4+KGEpYCAgICAgICAgIHxQYXNzIHRoZSBgTmAtdGggKDAt
YmFzZWQpIGFyZ3VtZW50IG9mIHRoZSBtb2NrIGZ1bmN0aW9uIHRvIGFjdGlvbiBgYWAgYW5kIHBl
cmZvcm0gaXQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8YFdp
dGhBcmdzPE4xLCBOMiwgLi4uLCBOaz4oYSlgfFBhc3MgdGhlIHNlbGVjdGVkICgwLWJhc2VkKSBh
cmd1bWVudHMgb2YgdGhlIG1vY2sgZnVuY3Rpb24gdG8gYWN0aW9uIGBhYCBhbmQgcGVyZm9ybSBp
dC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3xgV2l0aG91dEFyZ3Mo
YSlgICAgICAgICB8UGVyZm9ybSBhY3Rpb24gYGFgIHdpdGhvdXQgYW55IGFyZ3VtZW50cy4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfAorCisjIyBEZWZpbmluZyBBY3Rpb25zICMjCisKK3wg
YEFDVElPTihTdW0pIHsgcmV0dXJuIGFyZzAgKyBhcmcxOyB9YCB8IERlZmluZXMgYW4gYWN0aW9u
IGBTdW0oKWAgdG8gcmV0dXJuIHRoZSBzdW0gb2YgdGhlIG1vY2sgZnVuY3Rpb24ncyBhcmd1bWVu
dCAjMCBhbmQgIzEuIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18
Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKK3wgYEFDVElPTl9QKFBsdXMsIG4pIHsg
cmV0dXJuIGFyZzAgKyBuOyB9YCB8IERlZmluZXMgYW4gYWN0aW9uIGBQbHVzKG4pYCB0byByZXR1
cm4gdGhlIHN1bSBvZiB0aGUgbW9jayBmdW5jdGlvbidzIGFyZ3VtZW50ICMwIGFuZCBgbmAuIHwK
K3wgYEFDVElPTl9QayhGb28sIHAxLCAuLi4sIHBrKSB7IHN0YXRlbWVudHM7IH1gIHwgRGVmaW5l
cyBhIHBhcmFtZXRlcml6ZWQgYWN0aW9uIGBGb28ocDEsIC4uLiwgcGspYCB0byBleGVjdXRlIHRo
ZSBnaXZlbiBgc3RhdGVtZW50c2AuICAgfAorCitUaGUgYEFDVElPTipgIG1hY3JvcyBjYW5ub3Qg
YmUgdXNlZCBpbnNpZGUgYSBmdW5jdGlvbiBvciBjbGFzcy4KKworIyBDYXJkaW5hbGl0aWVzICMK
KworVGhlc2UgYXJlIHVzZWQgaW4gYFRpbWVzKClgIHRvIHNwZWNpZnkgaG93IG1hbnkgdGltZXMg
YSBtb2NrIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkOgorCit8YEFueU51bWJlcigpYHxUaGUgZnVu
Y3Rpb24gY2FuIGJlIGNhbGxlZCBhbnkgbnVtYmVyIG9mIHRpbWVzLnwKK3w6LS0tLS0tLS0tLS0t
fDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorfGBBdExl
YXN0KG4pYCB8VGhlIGNhbGwgaXMgZXhwZWN0ZWQgYXQgbGVhc3QgYG5gIHRpbWVzLiAgICAgICB8
Cit8YEF0TW9zdChuKWAgIHxUaGUgY2FsbCBpcyBleHBlY3RlZCBhdCBtb3N0IGBuYCB0aW1lcy4g
ICAgICAgIHwKK3xgQmV0d2VlbihtLCBuKWB8VGhlIGNhbGwgaXMgZXhwZWN0ZWQgYmV0d2VlbiBg
bWAgYW5kIGBuYCAoaW5jbHVzaXZlKSB0aW1lcy58Cit8YEV4YWN0bHkobikgb3IgbmB8VGhlIGNh
bGwgaXMgZXhwZWN0ZWQgZXhhY3RseSBgbmAgdGltZXMuIEluIHBhcnRpY3VsYXIsIHRoZSBjYWxs
IHNob3VsZCBuZXZlciBoYXBwZW4gd2hlbiBgbmAgaXMgMC58CisKKyMgRXhwZWN0YXRpb24gT3Jk
ZXIgIworCitCeSBkZWZhdWx0LCB0aGUgZXhwZWN0YXRpb25zIGNhbiBiZSBtYXRjaGVkIGluIF9h
bnlfIG9yZGVyLiAgSWYgc29tZQorb3IgYWxsIGV4cGVjdGF0aW9ucyBtdXN0IGJlIG1hdGNoZWQg
aW4gYSBnaXZlbiBvcmRlciwgdGhlcmUgYXJlIHR3bword2F5cyB0byBzcGVjaWZ5IGl0LiAgVGhl
eSBjYW4gYmUgdXNlZCBlaXRoZXIgaW5kZXBlbmRlbnRseSBvcgordG9nZXRoZXIuCisKKyMjIFRo
ZSBBZnRlciBDbGF1c2UgIyMKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6OkV4cGVjdGF0aW9uOwor
Li4uCitFeHBlY3RhdGlvbiBpbml0X3ggPSBFWFBFQ1RfQ0FMTChmb28sIEluaXRYKCkpOworRXhw
ZWN0YXRpb24gaW5pdF95ID0gRVhQRUNUX0NBTEwoZm9vLCBJbml0WSgpKTsKK0VYUEVDVF9DQUxM
KGZvbywgQmFyKCkpCisgICAgLkFmdGVyKGluaXRfeCwgaW5pdF95KTsKK2BgYAorc2F5cyB0aGF0
IGBCYXIoKWAgY2FuIGJlIGNhbGxlZCBvbmx5IGFmdGVyIGJvdGggYEluaXRYKClgIGFuZAorYElu
aXRZKClgIGhhdmUgYmVlbiBjYWxsZWQuCisKK0lmIHlvdSBkb24ndCBrbm93IGhvdyBtYW55IHBy
ZS1yZXF1aXNpdGVzIGFuIGV4cGVjdGF0aW9uIGhhcyB3aGVuIHlvdQord3JpdGUgaXQsIHlvdSBj
YW4gdXNlIGFuIGBFeHBlY3RhdGlvblNldGAgdG8gY29sbGVjdCB0aGVtOgorCitgYGAKK3VzaW5n
IDo6dGVzdGluZzo6RXhwZWN0YXRpb25TZXQ7CisuLi4KK0V4cGVjdGF0aW9uU2V0IGFsbF9pbml0
czsKK2ZvciAoaW50IGkgPSAwOyBpIDwgZWxlbWVudF9jb3VudDsgaSsrKSB7CisgIGFsbF9pbml0
cyArPSBFWFBFQ1RfQ0FMTChmb28sIEluaXRFbGVtZW50KGkpKTsKK30KK0VYUEVDVF9DQUxMKGZv
bywgQmFyKCkpCisgICAgLkFmdGVyKGFsbF9pbml0cyk7CitgYGAKK3NheXMgdGhhdCBgQmFyKClg
IGNhbiBiZSBjYWxsZWQgb25seSBhZnRlciBhbGwgZWxlbWVudHMgaGF2ZSBiZWVuCitpbml0aWFs
aXplZCAoYnV0IHdlIGRvbid0IGNhcmUgYWJvdXQgd2hpY2ggZWxlbWVudHMgZ2V0IGluaXRpYWxp
emVkCitiZWZvcmUgdGhlIG90aGVycykuCisKK01vZGlmeWluZyBhbiBgRXhwZWN0YXRpb25TZXRg
IGFmdGVyIHVzaW5nIGl0IGluIGFuIGAuQWZ0ZXIoKWAgZG9lc24ndAorYWZmZWN0IHRoZSBtZWFu
aW5nIG9mIHRoZSBgLkFmdGVyKClgLgorCisjIyBTZXF1ZW5jZXMgIyMKKworV2hlbiB5b3UgaGF2
ZSBhIGxvbmcgY2hhaW4gb2Ygc2VxdWVudGlhbCBleHBlY3RhdGlvbnMsIGl0J3MgZWFzaWVyIHRv
CitzcGVjaWZ5IHRoZSBvcmRlciB1c2luZyAqKnNlcXVlbmNlcyoqLCB3aGljaCBkb24ndCByZXF1
aXJlIHlvdSB0byBnaXZlbgorZWFjaCBleHBlY3RhdGlvbiBpbiB0aGUgY2hhaW4gYSBkaWZmZXJl
bnQgbmFtZS4gIDxpPkFsbCBleHBlY3RlZDxicj4KK2NhbGxzPC9pPiBpbiB0aGUgc2FtZSBzZXF1
ZW5jZSBtdXN0IG9jY3VyIGluIHRoZSBvcmRlciB0aGV5IGFyZQorc3BlY2lmaWVkLgorCitgYGAK
K3VzaW5nIDo6dGVzdGluZzo6U2VxdWVuY2U7CitTZXF1ZW5jZSBzMSwgczI7CisuLi4KK0VYUEVD
VF9DQUxMKGZvbywgUmVzZXQoKSkKKyAgICAuSW5TZXF1ZW5jZShzMSwgczIpCisgICAgLldpbGxP
bmNlKFJldHVybih0cnVlKSk7CitFWFBFQ1RfQ0FMTChmb28sIEdldFNpemUoKSkKKyAgICAuSW5T
ZXF1ZW5jZShzMSkKKyAgICAuV2lsbE9uY2UoUmV0dXJuKDEpKTsKK0VYUEVDVF9DQUxMKGZvbywg
RGVzY3JpYmUoQTxjb25zdCBjaGFyKj4oKSkpCisgICAgLkluU2VxdWVuY2UoczIpCisgICAgLldp
bGxPbmNlKFJldHVybigiZHVtbXkiKSk7CitgYGAKK3NheXMgdGhhdCBgUmVzZXQoKWAgbXVzdCBi
ZSBjYWxsZWQgYmVmb3JlIF9ib3RoXyBgR2V0U2l6ZSgpYCBfYW5kXworYERlc2NyaWJlKClgLCBh
bmQgdGhlIGxhdHRlciB0d28gY2FuIG9jY3VyIGluIGFueSBvcmRlci4KKworVG8gcHV0IG1hbnkg
ZXhwZWN0YXRpb25zIGluIGEgc2VxdWVuY2UgY29udmVuaWVudGx5OgorYGBgCit1c2luZyA6OnRl
c3Rpbmc6OkluU2VxdWVuY2U7Cit7CisgIEluU2VxdWVuY2UgZHVtbXk7CisKKyAgRVhQRUNUX0NB
TEwoLi4uKS4uLjsKKyAgRVhQRUNUX0NBTEwoLi4uKS4uLjsKKyAgLi4uCisgIEVYUEVDVF9DQUxM
KC4uLikuLi47Cit9CitgYGAKK3NheXMgdGhhdCBhbGwgZXhwZWN0ZWQgY2FsbHMgaW4gdGhlIHNj
b3BlIG9mIGBkdW1teWAgbXVzdCBvY2N1ciBpbgorc3RyaWN0IG9yZGVyLiBUaGUgbmFtZSBgZHVt
bXlgIGlzIGlycmVsZXZhbnQuKQorCisjIFZlcmlmeWluZyBhbmQgUmVzZXR0aW5nIGEgTW9jayAj
CisKK0dvb2dsZSBNb2NrIHdpbGwgdmVyaWZ5IHRoZSBleHBlY3RhdGlvbnMgb24gYSBtb2NrIG9i
amVjdCB3aGVuIGl0IGlzIGRlc3RydWN0ZWQsIG9yIHlvdSBjYW4gZG8gaXQgZWFybGllcjoKK2Bg
YAordXNpbmcgOjp0ZXN0aW5nOjpNb2NrOworLi4uCisvLyBWZXJpZmllcyBhbmQgcmVtb3ZlcyB0
aGUgZXhwZWN0YXRpb25zIG9uIG1vY2tfb2JqOworLy8gcmV0dXJucyB0cnVlIGlmZiBzdWNjZXNz
ZnVsLgorTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1vY2tfb2JqKTsKKy4uLgor
Ly8gVmVyaWZpZXMgYW5kIHJlbW92ZXMgdGhlIGV4cGVjdGF0aW9ucyBvbiBtb2NrX29iajsKKy8v
IGFsc28gcmVtb3ZlcyB0aGUgZGVmYXVsdCBhY3Rpb25zIHNldCBieSBPTl9DQUxMKCk7CisvLyBy
ZXR1cm5zIHRydWUgaWZmIHN1Y2Nlc3NmdWwuCitNb2NrOjpWZXJpZnlBbmRDbGVhcigmbW9ja19v
YmopOworYGBgCisKK1lvdSBjYW4gYWxzbyB0ZWxsIEdvb2dsZSBNb2NrIHRoYXQgYSBtb2NrIG9i
amVjdCBjYW4gYmUgbGVha2VkIGFuZCBkb2Vzbid0CituZWVkIHRvIGJlIHZlcmlmaWVkOgorYGBg
CitNb2NrOjpBbGxvd0xlYWsoJm1vY2tfb2JqKTsKK2BgYAorCisjIE1vY2sgQ2xhc3NlcyAjCisK
K0dvb2dsZSBNb2NrIGRlZmluZXMgYSBjb252ZW5pZW50IG1vY2sgY2xhc3MgdGVtcGxhdGUKK2Bg
YAorY2xhc3MgTW9ja0Z1bmN0aW9uPFIoQTEsIC4uLiwgQW4pPiB7CisgcHVibGljOgorICBNT0NL
X01FVEhPRG4oQ2FsbCwgUihBMSwgLi4uLCBBbikpOworfTsKK2BgYAorU2VlIHRoaXMgW3JlY2lw
ZV0oVjFfNV9Db29rQm9vayNVc2luZ19DaGVja19Qb2ludHMubWQpIGZvciBvbmUgYXBwbGljYXRp
b24gb2YgaXQuCisKKyMgRmxhZ3MgIworCit8IGAtLWdtb2NrX2NhdGNoX2xlYWtlZF9tb2Nrcz0w
YCB8IERvbid0IHJlcG9ydCBsZWFrZWQgbW9jayBvYmplY3RzIGFzIGZhaWx1cmVzLiB8Cit8Oi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS18Cit8IGAtLWdtb2NrX3ZlcmJvc2U9TEVWRUxgICAgICAgICB8
IFNldHMgdGhlIGRlZmF1bHQgdmVyYm9zaXR5IGxldmVsIChgaW5mb2AsIGB3YXJuaW5nYCwgb3Ig
YGVycm9yYCkgb2YgR29vZ2xlIE1vY2sgbWVzc2FnZXMuIHwKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL3YxXzUvQ29va0Jvb2subWQgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xlbW9jay9kb2NzL3YxXzUvQ29va0Jvb2subWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjZlMTUzYzZiYTll
NTA5ZDhiYjVhOWNhOTQ3MGQzOGQzNjk0ZTNjZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVt
b2NrL2RvY3MvdjFfNS9Db29rQm9vay5tZApAQCAtMCwwICsxLDMyNTAgQEAKKworCitZb3UgY2Fu
IGZpbmQgcmVjaXBlcyBmb3IgdXNpbmcgR29vZ2xlIE1vY2sgaGVyZS4gSWYgeW91IGhhdmVuJ3Qg
eWV0LAorcGxlYXNlIHJlYWQgdGhlIFtGb3JEdW1taWVzXShWMV81X0ZvckR1bW1pZXMubWQpIGRv
Y3VtZW50IGZpcnN0IHRvIG1ha2Ugc3VyZSB5b3UgdW5kZXJzdGFuZAordGhlIGJhc2ljcy4KKwor
KipOb3RlOioqIEdvb2dsZSBNb2NrIGxpdmVzIGluIHRoZSBgdGVzdGluZ2AgbmFtZSBzcGFjZS4g
Rm9yCityZWFkYWJpbGl0eSwgaXQgaXMgcmVjb21tZW5kZWQgdG8gd3JpdGUgYHVzaW5nIDo6dGVz
dGluZzo6Rm9vO2Agb25jZSBpbgoreW91ciBmaWxlIGJlZm9yZSB1c2luZyB0aGUgbmFtZSBgRm9v
YCBkZWZpbmVkIGJ5IEdvb2dsZSBNb2NrLiBXZSBvbWl0CitzdWNoIGB1c2luZ2Agc3RhdGVtZW50
cyBpbiB0aGlzIHBhZ2UgZm9yIGJyZXZpdHksIGJ1dCB5b3Ugc2hvdWxkIGRvIGl0CitpbiB5b3Vy
IG93biBjb2RlLgorCisjIENyZWF0aW5nIE1vY2sgQ2xhc3NlcyAjCisKKyMjIE1vY2tpbmcgUHJp
dmF0ZSBvciBQcm90ZWN0ZWQgTWV0aG9kcyAjIworCitZb3UgbXVzdCBhbHdheXMgcHV0IGEgbW9j
ayBtZXRob2QgZGVmaW5pdGlvbiAoYE1PQ0tfTUVUSE9EKmApIGluIGEKK2BwdWJsaWM6YCBzZWN0
aW9uIG9mIHRoZSBtb2NrIGNsYXNzLCByZWdhcmRsZXNzIG9mIHRoZSBtZXRob2QgYmVpbmcKK21v
Y2tlZCBiZWluZyBgcHVibGljYCwgYHByb3RlY3RlZGAsIG9yIGBwcml2YXRlYCBpbiB0aGUgYmFz
ZSBjbGFzcy4KK1RoaXMgYWxsb3dzIGBPTl9DQUxMYCBhbmQgYEVYUEVDVF9DQUxMYCB0byByZWZl
cmVuY2UgdGhlIG1vY2sgZnVuY3Rpb24KK2Zyb20gb3V0c2lkZSBvZiB0aGUgbW9jayBjbGFzcy4g
IChZZXMsIEMrKyBhbGxvd3MgYSBzdWJjbGFzcyB0byBjaGFuZ2UKK3RoZSBhY2Nlc3MgbGV2ZWwg
b2YgYSB2aXJ0dWFsIGZ1bmN0aW9uIGluIHRoZSBiYXNlIGNsYXNzLikgIEV4YW1wbGU6CisKK2Bg
YAorY2xhc3MgRm9vIHsKKyBwdWJsaWM6CisgIC4uLgorICB2aXJ0dWFsIGJvb2wgVHJhbnNmb3Jt
KEdhZGdldCogZykgPSAwOworCisgcHJvdGVjdGVkOgorICB2aXJ0dWFsIHZvaWQgUmVzdW1lKCk7
CisKKyBwcml2YXRlOgorICB2aXJ0dWFsIGludCBHZXRUaW1lT3V0KCk7Cit9OworCitjbGFzcyBN
b2NrRm9vIDogcHVibGljIEZvbyB7CisgcHVibGljOgorICAuLi4KKyAgTU9DS19NRVRIT0QxKFRy
YW5zZm9ybSwgYm9vbChHYWRnZXQqIGcpKTsKKworICAvLyBUaGUgZm9sbG93aW5nIG11c3QgYmUg
aW4gdGhlIHB1YmxpYyBzZWN0aW9uLCBldmVuIHRob3VnaCB0aGUKKyAgLy8gbWV0aG9kcyBhcmUg
cHJvdGVjdGVkIG9yIHByaXZhdGUgaW4gdGhlIGJhc2UgY2xhc3MuCisgIE1PQ0tfTUVUSE9EMChS
ZXN1bWUsIHZvaWQoKSk7CisgIE1PQ0tfTUVUSE9EMChHZXRUaW1lT3V0LCBpbnQoKSk7Cit9Owor
YGBgCisKKyMjIE1vY2tpbmcgT3ZlcmxvYWRlZCBNZXRob2RzICMjCisKK1lvdSBjYW4gbW9jayBv
dmVybG9hZGVkIGZ1bmN0aW9ucyBhcyB1c3VhbC4gTm8gc3BlY2lhbCBhdHRlbnRpb24gaXMgcmVx
dWlyZWQ6CisKK2BgYAorY2xhc3MgRm9vIHsKKyAgLi4uCisKKyAgLy8gTXVzdCBiZSB2aXJ0dWFs
IGFzIHdlJ2xsIGluaGVyaXQgZnJvbSBGb28uCisgIHZpcnR1YWwgfkZvbygpOworCisgIC8vIE92
ZXJsb2FkZWQgb24gdGhlIHR5cGVzIGFuZC9vciBudW1iZXJzIG9mIGFyZ3VtZW50cy4KKyAgdmly
dHVhbCBpbnQgQWRkKEVsZW1lbnQgeCk7CisgIHZpcnR1YWwgaW50IEFkZChpbnQgdGltZXMsIEVs
ZW1lbnQgeCk7CisKKyAgLy8gT3ZlcmxvYWRlZCBvbiB0aGUgY29uc3QtbmVzcyBvZiB0aGlzIG9i
amVjdC4KKyAgdmlydHVhbCBCYXImIEdldEJhcigpOworICB2aXJ0dWFsIGNvbnN0IEJhciYgR2V0
QmFyKCkgY29uc3Q7Cit9OworCitjbGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7CisgIC4uLgor
ICBNT0NLX01FVEhPRDEoQWRkLCBpbnQoRWxlbWVudCB4KSk7CisgIE1PQ0tfTUVUSE9EMihBZGQs
IGludChpbnQgdGltZXMsIEVsZW1lbnQgeCk7CisKKyAgTU9DS19NRVRIT0QwKEdldEJhciwgQmFy
JigpKTsKKyAgTU9DS19DT05TVF9NRVRIT0QwKEdldEJhciwgY29uc3QgQmFyJigpKTsKK307Citg
YGAKKworKipOb3RlOioqIGlmIHlvdSBkb24ndCBtb2NrIGFsbCB2ZXJzaW9ucyBvZiB0aGUgb3Zl
cmxvYWRlZCBtZXRob2QsIHRoZQorY29tcGlsZXIgd2lsbCBnaXZlIHlvdSBhIHdhcm5pbmcgYWJv
dXQgc29tZSBtZXRob2RzIGluIHRoZSBiYXNlIGNsYXNzCitiZWluZyBoaWRkZW4uIFRvIGZpeCB0
aGF0LCB1c2UgYHVzaW5nYCB0byBicmluZyB0aGVtIGluIHNjb3BlOgorCitgYGAKK2NsYXNzIE1v
Y2tGb28gOiBwdWJsaWMgRm9vIHsKKyAgLi4uCisgIHVzaW5nIEZvbzo6QWRkOworICBNT0NLX01F
VEhPRDEoQWRkLCBpbnQoRWxlbWVudCB4KSk7CisgIC8vIFdlIGRvbid0IHdhbnQgdG8gbW9jayBp
bnQgQWRkKGludCB0aW1lcywgRWxlbWVudCB4KTsKKyAgLi4uCit9OworYGBgCisKKyMjIE1vY2tp
bmcgQ2xhc3MgVGVtcGxhdGVzICMjCisKK1RvIG1vY2sgYSBjbGFzcyB0ZW1wbGF0ZSwgYXBwZW5k
IGBfVGAgdG8gdGhlIGBNT0NLXypgIG1hY3JvczoKKworYGBgCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
RWxlbT4KK2NsYXNzIFN0YWNrSW50ZXJmYWNlIHsKKyAgLi4uCisgIC8vIE11c3QgYmUgdmlydHVh
bCBhcyB3ZSdsbCBpbmhlcml0IGZyb20gU3RhY2tJbnRlcmZhY2UuCisgIHZpcnR1YWwgflN0YWNr
SW50ZXJmYWNlKCk7CisKKyAgdmlydHVhbCBpbnQgR2V0U2l6ZSgpIGNvbnN0ID0gMDsKKyAgdmly
dHVhbCB2b2lkIFB1c2goY29uc3QgRWxlbSYgeCkgPSAwOworfTsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIEVsZW0+CitjbGFzcyBNb2NrU3RhY2sgOiBwdWJsaWMgU3RhY2tJbnRlcmZhY2U8RWxlbT4g
eworICAuLi4KKyAgTU9DS19DT05TVF9NRVRIT0QwX1QoR2V0U2l6ZSwgaW50KCkpOworICBNT0NL
X01FVEhPRDFfVChQdXNoLCB2b2lkKGNvbnN0IEVsZW0mIHgpKTsKK307CitgYGAKKworIyMgTW9j
a2luZyBOb252aXJ0dWFsIE1ldGhvZHMgIyMKKworR29vZ2xlIE1vY2sgY2FuIG1vY2sgbm9uLXZp
cnR1YWwgZnVuY3Rpb25zIHRvIGJlIHVzZWQgaW4gd2hhdCB3ZSBjYWxsIF9oaS1wZXJmCitkZXBl
bmRlbmN5IGluamVjdGlvbl8uCisKK0luIHRoaXMgY2FzZSwgaW5zdGVhZCBvZiBzaGFyaW5nIGEg
Y29tbW9uIGJhc2UgY2xhc3Mgd2l0aCB0aGUgcmVhbAorY2xhc3MsIHlvdXIgbW9jayBjbGFzcyB3
aWxsIGJlIF91bnJlbGF0ZWRfIHRvIHRoZSByZWFsIGNsYXNzLCBidXQKK2NvbnRhaW4gbWV0aG9k
cyB3aXRoIHRoZSBzYW1lIHNpZ25hdHVyZXMuICBUaGUgc3ludGF4IGZvciBtb2NraW5nCitub24t
dmlydHVhbCBtZXRob2RzIGlzIHRoZSBfc2FtZV8gYXMgbW9ja2luZyB2aXJ0dWFsIG1ldGhvZHM6
CisKK2BgYAorLy8gQSBzaW1wbGUgcGFja2V0IHN0cmVhbSBjbGFzcy4gIE5vbmUgb2YgaXRzIG1l
bWJlcnMgaXMgdmlydHVhbC4KK2NsYXNzIENvbmNyZXRlUGFja2V0U3RyZWFtIHsKKyBwdWJsaWM6
CisgIHZvaWQgQXBwZW5kUGFja2V0KFBhY2tldCogbmV3X3BhY2tldCk7CisgIGNvbnN0IFBhY2tl
dCogR2V0UGFja2V0KHNpemVfdCBwYWNrZXRfbnVtYmVyKSBjb25zdDsKKyAgc2l6ZV90IE51bWJl
ck9mUGFja2V0cygpIGNvbnN0OworICAuLi4KK307CisKKy8vIEEgbW9jayBwYWNrZXQgc3RyZWFt
IGNsYXNzLiAgSXQgaW5oZXJpdHMgZnJvbSBubyBvdGhlciwgYnV0IGRlZmluZXMKKy8vIEdldFBh
Y2tldCgpIGFuZCBOdW1iZXJPZlBhY2tldHMoKS4KK2NsYXNzIE1vY2tQYWNrZXRTdHJlYW0gewor
IHB1YmxpYzoKKyAgTU9DS19DT05TVF9NRVRIT0QxKEdldFBhY2tldCwgY29uc3QgUGFja2V0Kihz
aXplX3QgcGFja2V0X251bWJlcikpOworICBNT0NLX0NPTlNUX01FVEhPRDAoTnVtYmVyT2ZQYWNr
ZXRzLCBzaXplX3QoKSk7CisgIC4uLgorfTsKK2BgYAorCitOb3RlIHRoYXQgdGhlIG1vY2sgY2xh
c3MgZG9lc24ndCBkZWZpbmUgYEFwcGVuZFBhY2tldCgpYCwgdW5saWtlIHRoZQorcmVhbCBjbGFz
cy4gVGhhdCdzIGZpbmUgYXMgbG9uZyBhcyB0aGUgdGVzdCBkb2Vzbid0IG5lZWQgdG8gY2FsbCBp
dC4KKworTmV4dCwgeW91IG5lZWQgYSB3YXkgdG8gc2F5IHRoYXQgeW91IHdhbnQgdG8gdXNlCitg
Q29uY3JldGVQYWNrZXRTdHJlYW1gIGluIHByb2R1Y3Rpb24gY29kZSwgYW5kIHVzZSBgTW9ja1Bh
Y2tldFN0cmVhbWAKK2luIHRlc3RzLiAgU2luY2UgdGhlIGZ1bmN0aW9ucyBhcmUgbm90IHZpcnR1
YWwgYW5kIHRoZSB0d28gY2xhc3NlcyBhcmUKK3VucmVsYXRlZCwgeW91IG11c3Qgc3BlY2lmeSB5
b3VyIGNob2ljZSBhdCBfY29tcGlsZSB0aW1lXyAoYXMgb3Bwb3NlZAordG8gcnVuIHRpbWUpLgor
CitPbmUgd2F5IHRvIGRvIGl0IGlzIHRvIHRlbXBsYXRpemUgeW91ciBjb2RlIHRoYXQgbmVlZHMg
dG8gdXNlIGEgcGFja2V0CitzdHJlYW0uICBNb3JlIHNwZWNpZmljYWxseSwgeW91IHdpbGwgZ2l2
ZSB5b3VyIGNvZGUgYSB0ZW1wbGF0ZSB0eXBlCithcmd1bWVudCBmb3IgdGhlIHR5cGUgb2YgdGhl
IHBhY2tldCBzdHJlYW0uICBJbiBwcm9kdWN0aW9uLCB5b3Ugd2lsbAoraW5zdGFudGlhdGUgeW91
ciB0ZW1wbGF0ZSB3aXRoIGBDb25jcmV0ZVBhY2tldFN0cmVhbWAgYXMgdGhlIHR5cGUKK2FyZ3Vt
ZW50LiAgSW4gdGVzdHMsIHlvdSB3aWxsIGluc3RhbnRpYXRlIHRoZSBzYW1lIHRlbXBsYXRlIHdp
dGgKK2BNb2NrUGFja2V0U3RyZWFtYC4gIEZvciBleGFtcGxlLCB5b3UgbWF5IHdyaXRlOgorCitg
YGAKK3RlbXBsYXRlIDxjbGFzcyBQYWNrZXRTdHJlYW0+Cit2b2lkIENyZWF0ZUNvbm5lY3Rpb24o
UGFja2V0U3RyZWFtKiBzdHJlYW0pIHsgLi4uIH0KKwordGVtcGxhdGUgPGNsYXNzIFBhY2tldFN0
cmVhbT4KK2NsYXNzIFBhY2tldFJlYWRlciB7CisgcHVibGljOgorICB2b2lkIFJlYWRQYWNrZXRz
KFBhY2tldFN0cmVhbSogc3RyZWFtLCBzaXplX3QgcGFja2V0X251bSk7Cit9OworYGBgCisKK1Ro
ZW4geW91IGNhbiB1c2UgYENyZWF0ZUNvbm5lY3Rpb248Q29uY3JldGVQYWNrZXRTdHJlYW0+KClg
IGFuZAorYFBhY2tldFJlYWRlcjxDb25jcmV0ZVBhY2tldFN0cmVhbT5gIGluIHByb2R1Y3Rpb24g
Y29kZSwgYW5kIHVzZQorYENyZWF0ZUNvbm5lY3Rpb248TW9ja1BhY2tldFN0cmVhbT4oKWAgYW5k
CitgUGFja2V0UmVhZGVyPE1vY2tQYWNrZXRTdHJlYW0+YCBpbiB0ZXN0cy4KKworYGBgCisgIE1v
Y2tQYWNrZXRTdHJlYW0gbW9ja19zdHJlYW07CisgIEVYUEVDVF9DQUxMKG1vY2tfc3RyZWFtLCAu
Li4pLi4uOworICAuLiBzZXQgbW9yZSBleHBlY3RhdGlvbnMgb24gbW9ja19zdHJlYW0gLi4uCisg
IFBhY2tldFJlYWRlcjxNb2NrUGFja2V0U3RyZWFtPiByZWFkZXIoJm1vY2tfc3RyZWFtKTsKKyAg
Li4uIGV4ZXJjaXNlIHJlYWRlciAuLi4KK2BgYAorCisjIyBNb2NraW5nIEZyZWUgRnVuY3Rpb25z
ICMjCisKK0l0J3MgcG9zc2libGUgdG8gdXNlIEdvb2dsZSBNb2NrIHRvIG1vY2sgYSBmcmVlIGZ1
bmN0aW9uIChpLmUuIGEKK0Mtc3R5bGUgZnVuY3Rpb24gb3IgYSBzdGF0aWMgbWV0aG9kKS4gIFlv
dSBqdXN0IG5lZWQgdG8gcmV3cml0ZSB5b3VyCitjb2RlIHRvIHVzZSBhbiBpbnRlcmZhY2UgKGFi
c3RyYWN0IGNsYXNzKS4KKworSW5zdGVhZCBvZiBjYWxsaW5nIGEgZnJlZSBmdW5jdGlvbiAoc2F5
LCBgT3BlbkZpbGVgKSBkaXJlY3RseSwKK2ludHJvZHVjZSBhbiBpbnRlcmZhY2UgZm9yIGl0IGFu
ZCBoYXZlIGEgY29uY3JldGUgc3ViY2xhc3MgdGhhdCBjYWxscwordGhlIGZyZWUgZnVuY3Rpb246
CisKK2BgYAorY2xhc3MgRmlsZUludGVyZmFjZSB7CisgcHVibGljOgorICAuLi4KKyAgdmlydHVh
bCBib29sIE9wZW4oY29uc3QgY2hhciogcGF0aCwgY29uc3QgY2hhciogbW9kZSkgPSAwOworfTsK
KworY2xhc3MgRmlsZSA6IHB1YmxpYyBGaWxlSW50ZXJmYWNlIHsKKyBwdWJsaWM6CisgIC4uLgor
ICB2aXJ0dWFsIGJvb2wgT3Blbihjb25zdCBjaGFyKiBwYXRoLCBjb25zdCBjaGFyKiBtb2RlKSB7
CisgICAgcmV0dXJuIE9wZW5GaWxlKHBhdGgsIG1vZGUpOworICB9Cit9OworYGBgCisKK1lvdXIg
Y29kZSBzaG91bGQgdGFsayB0byBgRmlsZUludGVyZmFjZWAgdG8gb3BlbiBhIGZpbGUuICBOb3cg
aXQncworZWFzeSB0byBtb2NrIG91dCB0aGUgZnVuY3Rpb24uCisKK1RoaXMgbWF5IHNlZW0gbXVj
aCBoYXNzbGUsIGJ1dCBpbiBwcmFjdGljZSB5b3Ugb2Z0ZW4gaGF2ZSBtdWx0aXBsZQorcmVsYXRl
ZCBmdW5jdGlvbnMgdGhhdCB5b3UgY2FuIHB1dCBpbiB0aGUgc2FtZSBpbnRlcmZhY2UsIHNvIHRo
ZQorcGVyLWZ1bmN0aW9uIHN5bnRhY3RpYyBvdmVyaGVhZCB3aWxsIGJlIG11Y2ggbG93ZXIuCisK
K0lmIHlvdSBhcmUgY29uY2VybmVkIGFib3V0IHRoZSBwZXJmb3JtYW5jZSBvdmVyaGVhZCBpbmN1
cnJlZCBieQordmlydHVhbCBmdW5jdGlvbnMsIGFuZCBwcm9maWxpbmcgY29uZmlybXMgeW91ciBj
b25jZXJuLCB5b3UgY2FuCitjb21iaW5lIHRoaXMgd2l0aCB0aGUgcmVjaXBlIGZvciBbbW9ja2lu
ZyBub24tdmlydHVhbCBtZXRob2RzXSgjTW9ja2luZ19Ob252aXJ0dWFsX01ldGhvZHMubWQpLgor
CisjIyBOaWNlIE1vY2tzIGFuZCBTdHJpY3QgTW9ja3MgIyMKKworSWYgYSBtb2NrIG1ldGhvZCBo
YXMgbm8gYEVYUEVDVF9DQUxMYCBzcGVjIGJ1dCBpcyBjYWxsZWQsIEdvb2dsZSBNb2NrCit3aWxs
IHByaW50IGEgd2FybmluZyBhYm91dCB0aGUgInVuaW50ZXJlc3RpbmcgY2FsbCIuIFRoZSByYXRp
b25hbGUgaXM6CisKKyAgKiBOZXcgbWV0aG9kcyBtYXkgYmUgYWRkZWQgdG8gYW4gaW50ZXJmYWNl
IGFmdGVyIGEgdGVzdCBpcyB3cml0dGVuLiBXZSBzaG91bGRuJ3QgZmFpbCBhIHRlc3QganVzdCBi
ZWNhdXNlIGEgbWV0aG9kIGl0IGRvZXNuJ3Qga25vdyBhYm91dCBpcyBjYWxsZWQuCisgICogSG93
ZXZlciwgdGhpcyBtYXkgYWxzbyBtZWFuIHRoZXJlJ3MgYSBidWcgaW4gdGhlIHRlc3QsIHNvIEdv
b2dsZSBNb2NrIHNob3VsZG4ndCBiZSBzaWxlbnQgZWl0aGVyLiBJZiB0aGUgdXNlciBiZWxpZXZl
cyB0aGVzZSBjYWxscyBhcmUgaGFybWxlc3MsIGhlIGNhbiBhZGQgYW4gYEVYUEVDVF9DQUxMKClg
IHRvIHN1cHByZXNzIHRoZSB3YXJuaW5nLgorCitIb3dldmVyLCBzb21ldGltZXMgeW91IG1heSB3
YW50IHRvIHN1cHByZXNzIGFsbCAidW5pbnRlcmVzdGluZyBjYWxsIgord2FybmluZ3MsIHdoaWxl
IHNvbWV0aW1lcyB5b3UgbWF5IHdhbnQgdGhlIG9wcG9zaXRlLCBpLmUuIHRvIHRyZWF0IGFsbAor
b2YgdGhlbSBhcyBlcnJvcnMuIEdvb2dsZSBNb2NrIGxldHMgeW91IG1ha2UgdGhlIGRlY2lzaW9u
IG9uIGEKK3Blci1tb2NrLW9iamVjdCBiYXNpcy4KKworU3VwcG9zZSB5b3VyIHRlc3QgdXNlcyBh
IG1vY2sgY2xhc3MgYE1vY2tGb29gOgorCitgYGAKK1RFU1QoLi4uKSB7CisgIE1vY2tGb28gbW9j
a19mb287CisgIEVYUEVDVF9DQUxMKG1vY2tfZm9vLCBEb1RoaXMoKSk7CisgIC4uLiBjb2RlIHRo
YXQgdXNlcyBtb2NrX2ZvbyAuLi4KK30KK2BgYAorCitJZiBhIG1ldGhvZCBvZiBgbW9ja19mb29g
IG90aGVyIHRoYW4gYERvVGhpcygpYCBpcyBjYWxsZWQsIGl0IHdpbGwgYmUKK3JlcG9ydGVkIGJ5
IEdvb2dsZSBNb2NrIGFzIGEgd2FybmluZy4gSG93ZXZlciwgaWYgeW91IHJld3JpdGUgeW91cgor
dGVzdCB0byB1c2UgYE5pY2VNb2NrPE1vY2tGb28+YCBpbnN0ZWFkLCB0aGUgd2FybmluZyB3aWxs
IGJlIGdvbmUsCityZXN1bHRpbmcgaW4gYSBjbGVhbmVyIHRlc3Qgb3V0cHV0OgorCitgYGAKK3Vz
aW5nIDo6dGVzdGluZzo6TmljZU1vY2s7CisKK1RFU1QoLi4uKSB7CisgIE5pY2VNb2NrPE1vY2tG
b28+IG1vY2tfZm9vOworICBFWFBFQ1RfQ0FMTChtb2NrX2ZvbywgRG9UaGlzKCkpOworICAuLi4g
Y29kZSB0aGF0IHVzZXMgbW9ja19mb28gLi4uCit9CitgYGAKKworYE5pY2VNb2NrPE1vY2tGb28+
YCBpcyBhIHN1YmNsYXNzIG9mIGBNb2NrRm9vYCwgc28gaXQgY2FuIGJlIHVzZWQKK3doZXJldmVy
IGBNb2NrRm9vYCBpcyBhY2NlcHRlZC4KKworSXQgYWxzbyB3b3JrcyBpZiBgTW9ja0Zvb2AncyBj
b25zdHJ1Y3RvciB0YWtlcyBzb21lIGFyZ3VtZW50cywgYXMKK2BOaWNlTW9jazxNb2NrRm9vPmAg
ImluaGVyaXRzIiBgTW9ja0Zvb2AncyBjb25zdHJ1Y3RvcnM6CisKK2BgYAordXNpbmcgOjp0ZXN0
aW5nOjpOaWNlTW9jazsKKworVEVTVCguLi4pIHsKKyAgTmljZU1vY2s8TW9ja0Zvbz4gbW9ja19m
b28oNSwgImhpIik7ICAvLyBDYWxscyBNb2NrRm9vKDUsICJoaSIpLgorICBFWFBFQ1RfQ0FMTCht
b2NrX2ZvbywgRG9UaGlzKCkpOworICAuLi4gY29kZSB0aGF0IHVzZXMgbW9ja19mb28gLi4uCit9
CitgYGAKKworVGhlIHVzYWdlIG9mIGBTdHJpY3RNb2NrYCBpcyBzaW1pbGFyLCBleGNlcHQgdGhh
dCBpdCBtYWtlcyBhbGwKK3VuaW50ZXJlc3RpbmcgY2FsbHMgZmFpbHVyZXM6CisKK2BgYAordXNp
bmcgOjp0ZXN0aW5nOjpTdHJpY3RNb2NrOworCitURVNUKC4uLikgeworICBTdHJpY3RNb2NrPE1v
Y2tGb28+IG1vY2tfZm9vOworICBFWFBFQ1RfQ0FMTChtb2NrX2ZvbywgRG9UaGlzKCkpOworICAu
Li4gY29kZSB0aGF0IHVzZXMgbW9ja19mb28gLi4uCisKKyAgLy8gVGhlIHRlc3Qgd2lsbCBmYWls
IGlmIGEgbWV0aG9kIG9mIG1vY2tfZm9vIG90aGVyIHRoYW4gRG9UaGlzKCkKKyAgLy8gaXMgY2Fs
bGVkLgorfQorYGBgCisKK1RoZXJlIGFyZSBzb21lIGNhdmVhdHMgdGhvdWdoIChJIGRvbid0IGxp
a2UgdGhlbSBqdXN0IGFzIG11Y2ggYXMgdGhlCituZXh0IGd1eSwgYnV0IHNhZGx5IHRoZXkgYXJl
IHNpZGUgZWZmZWN0cyBvZiBDKysncyBsaW1pdGF0aW9ucyk6CisKKyAgMS4gYE5pY2VNb2NrPE1v
Y2tGb28+YCBhbmQgYFN0cmljdE1vY2s8TW9ja0Zvbz5gIG9ubHkgd29yayBmb3IgbW9jayBtZXRo
b2RzIGRlZmluZWQgdXNpbmcgdGhlIGBNT0NLX01FVEhPRCpgIGZhbWlseSBvZiBtYWNyb3MgKipk
aXJlY3RseSoqIGluIHRoZSBgTW9ja0Zvb2AgY2xhc3MuIElmIGEgbW9jayBtZXRob2QgaXMgZGVm
aW5lZCBpbiBhICoqYmFzZSBjbGFzcyoqIG9mIGBNb2NrRm9vYCwgdGhlICJuaWNlIiBvciAic3Ry
aWN0IiBtb2RpZmllciBtYXkgbm90IGFmZmVjdCBpdCwgZGVwZW5kaW5nIG9uIHRoZSBjb21waWxl
ci4gSW4gcGFydGljdWxhciwgbmVzdGluZyBgTmljZU1vY2tgIGFuZCBgU3RyaWN0TW9ja2AgKGUu
Zy4gYE5pY2VNb2NrPFN0cmljdE1vY2s8TW9ja0Zvbz4gPmApIGlzICoqbm90Kiogc3VwcG9ydGVk
LgorICAxLiBUaGUgY29uc3RydWN0b3JzIG9mIHRoZSBiYXNlIG1vY2sgKGBNb2NrRm9vYCkgY2Fu
bm90IGhhdmUgYXJndW1lbnRzIHBhc3NlZCBieSBub24tY29uc3QgcmVmZXJlbmNlLCB3aGljaCBo
YXBwZW5zIHRvIGJlIGJhbm5lZCBieSB0aGUgW0dvb2dsZSBDKysgc3R5bGUgZ3VpZGVdKGh0dHA6
Ly9nb29nbGUtc3R5bGVndWlkZS5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmsvY3BwZ3VpZGUueG1s
KS4KKyAgMS4gRHVyaW5nIHRoZSBjb25zdHJ1Y3RvciBvciBkZXN0cnVjdG9yIG9mIGBNb2NrRm9v
YCwgdGhlIG1vY2sgb2JqZWN0IGlzIF9ub3RfIG5pY2Ugb3Igc3RyaWN0LiAgVGhpcyBtYXkgY2F1
c2Ugc3VycHJpc2VzIGlmIHRoZSBjb25zdHJ1Y3RvciBvciBkZXN0cnVjdG9yIGNhbGxzIGEgbW9j
ayBtZXRob2Qgb24gYHRoaXNgIG9iamVjdC4gKFRoaXMgYmVoYXZpb3IsIGhvd2V2ZXIsIGlzIGNv
bnNpc3RlbnQgd2l0aCBDKysncyBnZW5lcmFsIHJ1bGU6IGlmIGEgY29uc3RydWN0b3Igb3IgZGVz
dHJ1Y3RvciBjYWxscyBhIHZpcnR1YWwgbWV0aG9kIG9mIGB0aGlzYCBvYmplY3QsIHRoYXQgbWV0
aG9kIGlzIHRyZWF0ZWQgYXMgbm9uLXZpcnR1YWwuICBJbiBvdGhlciB3b3JkcywgdG8gdGhlIGJh
c2UgY2xhc3MncyBjb25zdHJ1Y3RvciBvciBkZXN0cnVjdG9yLCBgdGhpc2Agb2JqZWN0IGJlaGF2
ZXMgbGlrZSBhbiBpbnN0YW5jZSBvZiB0aGUgYmFzZSBjbGFzcywgbm90IHRoZSBkZXJpdmVkIGNs
YXNzLiAgVGhpcyBydWxlIGlzIHJlcXVpcmVkIGZvciBzYWZldHkuICBPdGhlcndpc2UgYSBiYXNl
IGNvbnN0cnVjdG9yIG1heSB1c2UgbWVtYmVycyBvZiBhIGRlcml2ZWQgY2xhc3MgYmVmb3JlIHRo
ZXkgYXJlIGluaXRpYWxpemVkLCBvciBhIGJhc2UgZGVzdHJ1Y3RvciBtYXkgdXNlIG1lbWJlcnMg
b2YgYSBkZXJpdmVkIGNsYXNzIGFmdGVyIHRoZXkgaGF2ZSBiZWVuIGRlc3Ryb3llZC4pCisKK0Zp
bmFsbHksIHlvdSBzaG91bGQgYmUgKip2ZXJ5IGNhdXRpb3VzKiogd2hlbiB1c2luZyB0aGlzIGZl
YXR1cmUsIGFzIHRoZQorZGVjaXNpb24geW91IG1ha2UgYXBwbGllcyB0byAqKmFsbCoqIGZ1dHVy
ZSBjaGFuZ2VzIHRvIHRoZSBtb2NrCitjbGFzcy4gSWYgYW4gaW1wb3J0YW50IGNoYW5nZSBpcyBt
YWRlIGluIHRoZSBpbnRlcmZhY2UgeW91IGFyZSBtb2NraW5nCisoYW5kIHRodXMgaW4gdGhlIG1v
Y2sgY2xhc3MpLCBpdCBjb3VsZCBicmVhayB5b3VyIHRlc3RzIChpZiB5b3UgdXNlCitgU3RyaWN0
TW9ja2ApIG9yIGxldCBidWdzIHBhc3MgdGhyb3VnaCB3aXRob3V0IGEgd2FybmluZyAoaWYgeW91
IHVzZQorYE5pY2VNb2NrYCkuIFRoZXJlZm9yZSwgdHJ5IHRvIHNwZWNpZnkgdGhlIG1vY2sncyBi
ZWhhdmlvciB1c2luZworZXhwbGljaXQgYEVYUEVDVF9DQUxMYCBmaXJzdCwgYW5kIG9ubHkgdHVy
biB0byBgTmljZU1vY2tgIG9yCitgU3RyaWN0TW9ja2AgYXMgdGhlIGxhc3QgcmVzb3J0LgorCisj
IyBTaW1wbGlmeWluZyB0aGUgSW50ZXJmYWNlIHdpdGhvdXQgQnJlYWtpbmcgRXhpc3RpbmcgQ29k
ZSAjIworCitTb21ldGltZXMgYSBtZXRob2QgaGFzIGEgbG9uZyBsaXN0IG9mIGFyZ3VtZW50cyB0
aGF0IGlzIG1vc3RseQordW5pbnRlcmVzdGluZy4gRm9yIGV4YW1wbGUsCisKK2BgYAorY2xhc3Mg
TG9nU2luayB7CisgcHVibGljOgorICAuLi4KKyAgdmlydHVhbCB2b2lkIHNlbmQoTG9nU2V2ZXJp
dHkgc2V2ZXJpdHksIGNvbnN0IGNoYXIqIGZ1bGxfZmlsZW5hbWUsCisgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIGJhc2VfZmlsZW5hbWUsIGludCBsaW5lLAorICAgICAgICAgICAgICAg
ICAgICBjb25zdCBzdHJ1Y3QgdG0qIHRtX3RpbWUsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIG1lc3NhZ2UsIHNpemVfdCBtZXNzYWdlX2xlbikgPSAwOworfTsKK2BgYAorCitUaGlz
IG1ldGhvZCdzIGFyZ3VtZW50IGxpc3QgaXMgbGVuZ3RoeSBhbmQgaGFyZCB0byB3b3JrIHdpdGgg
KGxldCdzCitzYXkgdGhhdCB0aGUgYG1lc3NhZ2VgIGFyZ3VtZW50IGlzIG5vdCBldmVuIDAtdGVy
bWluYXRlZCkuIElmIHdlIG1vY2sKK2l0IGFzIGlzLCB1c2luZyB0aGUgbW9jayB3aWxsIGJlIGF3
a3dhcmQuIElmLCBob3dldmVyLCB3ZSB0cnkgdG8KK3NpbXBsaWZ5IHRoaXMgaW50ZXJmYWNlLCB3
ZSdsbCBuZWVkIHRvIGZpeCBhbGwgY2xpZW50cyBkZXBlbmRpbmcgb24KK2l0LCB3aGljaCBpcyBv
ZnRlbiBpbmZlYXNpYmxlLgorCitUaGUgdHJpY2sgaXMgdG8gcmUtZGlzcGF0Y2ggdGhlIG1ldGhv
ZCBpbiB0aGUgbW9jayBjbGFzczoKKworYGBgCitjbGFzcyBTY29wZWRNb2NrTG9nIDogcHVibGlj
IExvZ1NpbmsgeworIHB1YmxpYzoKKyAgLi4uCisgIHZpcnR1YWwgdm9pZCBzZW5kKExvZ1NldmVy
aXR5IHNldmVyaXR5LCBjb25zdCBjaGFyKiBmdWxsX2ZpbGVuYW1lLAorICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBiYXNlX2ZpbGVuYW1lLCBpbnQgbGluZSwgY29uc3QgdG0qIHRtX3Rp
bWUsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG1lc3NhZ2UsIHNpemVfdCBtZXNz
YWdlX2xlbikgeworICAgIC8vIFdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gdGhlIGxvZyBzZXZl
cml0eSwgZnVsbCBmaWxlIG5hbWUsIGFuZAorICAgIC8vIGxvZyBtZXNzYWdlLgorICAgIExvZyhz
ZXZlcml0eSwgZnVsbF9maWxlbmFtZSwgc3RkOjpzdHJpbmcobWVzc2FnZSwgbWVzc2FnZV9sZW4p
KTsKKyAgfQorCisgIC8vIEltcGxlbWVudHMgdGhlIG1vY2sgbWV0aG9kOgorICAvLworICAvLyAg
IHZvaWQgTG9nKExvZ1NldmVyaXR5IHNldmVyaXR5LAorICAvLyAgICAgICAgICAgIGNvbnN0IHN0
cmluZyYgZmlsZV9wYXRoLAorICAvLyAgICAgICAgICAgIGNvbnN0IHN0cmluZyYgbWVzc2FnZSk7
CisgIE1PQ0tfTUVUSE9EMyhMb2csIHZvaWQoTG9nU2V2ZXJpdHkgc2V2ZXJpdHksIGNvbnN0IHN0
cmluZyYgZmlsZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cmluZyYg
bWVzc2FnZSkpOworfTsKK2BgYAorCitCeSBkZWZpbmluZyBhIG5ldyBtb2NrIG1ldGhvZCB3aXRo
IGEgdHJpbW1lZCBhcmd1bWVudCBsaXN0LCB3ZSBtYWtlCit0aGUgbW9jayBjbGFzcyBtdWNoIG1v
cmUgdXNlci1mcmllbmRseS4KKworIyMgQWx0ZXJuYXRpdmUgdG8gTW9ja2luZyBDb25jcmV0ZSBD
bGFzc2VzICMjCisKK09mdGVuIHlvdSBtYXkgZmluZCB5b3Vyc2VsZiB1c2luZyBjbGFzc2VzIHRo
YXQgZG9uJ3QgaW1wbGVtZW50CitpbnRlcmZhY2VzLiBJbiBvcmRlciB0byB0ZXN0IHlvdXIgY29k
ZSB0aGF0IHVzZXMgc3VjaCBhIGNsYXNzIChsZXQncworY2FsbCBpdCBgQ29uY3JldGVgKSwgeW91
IG1heSBiZSB0ZW1wdGVkIHRvIG1ha2UgdGhlIG1ldGhvZHMgb2YKK2BDb25jcmV0ZWAgdmlydHVh
bCBhbmQgdGhlbiBtb2NrIGl0LgorCitUcnkgbm90IHRvIGRvIHRoYXQuCisKK01ha2luZyBhIG5v
bi12aXJ0dWFsIGZ1bmN0aW9uIHZpcnR1YWwgaXMgYSBiaWcgZGVjaXNpb24uIEl0IGNyZWF0ZXMg
YW4KK2V4dGVuc2lvbiBwb2ludCB3aGVyZSBzdWJjbGFzc2VzIGNhbiB0d2VhayB5b3VyIGNsYXNz
JyBiZWhhdmlvci4gVGhpcword2Vha2VucyB5b3VyIGNvbnRyb2wgb24gdGhlIGNsYXNzIGJlY2F1
c2Ugbm93IGl0J3MgaGFyZGVyIHRvIG1haW50YWluCit0aGUgY2xhc3MnIGludmFyaWFudHMuIFlv
dSBzaG91bGQgbWFrZSBhIGZ1bmN0aW9uIHZpcnR1YWwgb25seSB3aGVuCit0aGVyZSBpcyBhIHZh
bGlkIHJlYXNvbiBmb3IgYSBzdWJjbGFzcyB0byBvdmVycmlkZSBpdC4KKworTW9ja2luZyBjb25j
cmV0ZSBjbGFzc2VzIGRpcmVjdGx5IGlzIHByb2JsZW1hdGljIGFzIGl0IGNyZWF0ZXMgYSB0aWdo
dAorY291cGxpbmcgYmV0d2VlbiB0aGUgY2xhc3MgYW5kIHRoZSB0ZXN0cyAtIGFueSBzbWFsbCBj
aGFuZ2UgaW4gdGhlCitjbGFzcyBtYXkgaW52YWxpZGF0ZSB5b3VyIHRlc3RzIGFuZCBtYWtlIHRl
c3QgbWFpbnRlbmFuY2UgYSBwYWluLgorCitUbyBhdm9pZCBzdWNoIHByb2JsZW1zLCBtYW55IHBy
b2dyYW1tZXJzIGhhdmUgYmVlbiBwcmFjdGljaW5nICJjb2RpbmcKK3RvIGludGVyZmFjZXMiOiBp
bnN0ZWFkIG9mIHRhbGtpbmcgdG8gdGhlIGBDb25jcmV0ZWAgY2xhc3MsIHlvdXIgY29kZQord291
bGQgZGVmaW5lIGFuIGludGVyZmFjZSBhbmQgdGFsayB0byBpdC4gVGhlbiB5b3UgaW1wbGVtZW50
IHRoYXQKK2ludGVyZmFjZSBhcyBhbiBhZGFwdG9yIG9uIHRvcCBvZiBgQ29uY3JldGVgLiBJbiB0
ZXN0cywgeW91IGNhbiBlYXNpbHkKK21vY2sgdGhhdCBpbnRlcmZhY2UgdG8gb2JzZXJ2ZSBob3cg
eW91ciBjb2RlIGlzIGRvaW5nLgorCitUaGlzIHRlY2huaXF1ZSBpbmN1cnMgc29tZSBvdmVyaGVh
ZDoKKworICAqIFlvdSBwYXkgdGhlIGNvc3Qgb2YgdmlydHVhbCBmdW5jdGlvbiBjYWxscyAodXN1
YWxseSBub3QgYSBwcm9ibGVtKS4KKyAgKiBUaGVyZSBpcyBtb3JlIGFic3RyYWN0aW9uIGZvciB0
aGUgcHJvZ3JhbW1lcnMgdG8gbGVhcm4uCisKK0hvd2V2ZXIsIGl0IGNhbiBhbHNvIGJyaW5nIHNp
Z25pZmljYW50IGJlbmVmaXRzIGluIGFkZGl0aW9uIHRvIGJldHRlcgordGVzdGFiaWxpdHk6CisK
KyAgKiBgQ29uY3JldGVgJ3MgQVBJIG1heSBub3QgZml0IHlvdXIgcHJvYmxlbSBkb21haW4gdmVy
eSB3ZWxsLCBhcyB5b3UgbWF5IG5vdCBiZSB0aGUgb25seSBjbGllbnQgaXQgdHJpZXMgdG8gc2Vy
dmUuIEJ5IGRlc2lnbmluZyB5b3VyIG93biBpbnRlcmZhY2UsIHlvdSBoYXZlIGEgY2hhbmNlIHRv
IHRhaWxvciBpdCB0byB5b3VyIG5lZWQgLSB5b3UgbWF5IGFkZCBoaWdoZXItbGV2ZWwgZnVuY3Rp
b25hbGl0aWVzLCByZW5hbWUgc3R1ZmYsIGV0YyBpbnN0ZWFkIG9mIGp1c3QgdHJpbW1pbmcgdGhl
IGNsYXNzLiBUaGlzIGFsbG93cyB5b3UgdG8gd3JpdGUgeW91ciBjb2RlICh1c2VyIG9mIHRoZSBp
bnRlcmZhY2UpIGluIGEgbW9yZSBuYXR1cmFsIHdheSwgd2hpY2ggbWVhbnMgaXQgd2lsbCBiZSBt
b3JlIHJlYWRhYmxlLCBtb3JlIG1haW50YWluYWJsZSwgYW5kIHlvdSdsbCBiZSBtb3JlIHByb2R1
Y3RpdmUuCisgICogSWYgYENvbmNyZXRlYCdzIGltcGxlbWVudGF0aW9uIGV2ZXIgaGFzIHRvIGNo
YW5nZSwgeW91IGRvbid0IGhhdmUgdG8gcmV3cml0ZSBldmVyeXdoZXJlIGl0IGlzIHVzZWQuIElu
c3RlYWQsIHlvdSBjYW4gYWJzb3JiIHRoZSBjaGFuZ2UgaW4geW91ciBpbXBsZW1lbnRhdGlvbiBv
ZiB0aGUgaW50ZXJmYWNlLCBhbmQgeW91ciBvdGhlciBjb2RlIGFuZCB0ZXN0cyB3aWxsIGJlIGlu
c3VsYXRlZCBmcm9tIHRoaXMgY2hhbmdlLgorCitTb21lIHBlb3BsZSB3b3JyeSB0aGF0IGlmIGV2
ZXJ5b25lIGlzIHByYWN0aWNpbmcgdGhpcyB0ZWNobmlxdWUsIHRoZXkKK3dpbGwgZW5kIHVwIHdy
aXRpbmcgbG90cyBvZiByZWR1bmRhbnQgY29kZS4gVGhpcyBjb25jZXJuIGlzIHRvdGFsbHkKK3Vu
ZGVyc3RhbmRhYmxlLiBIb3dldmVyLCB0aGVyZSBhcmUgdHdvIHJlYXNvbnMgd2h5IGl0IG1heSBu
b3QgYmUgdGhlCitjYXNlOgorCisgICogRGlmZmVyZW50IHByb2plY3RzIG1heSBuZWVkIHRvIHVz
ZSBgQ29uY3JldGVgIGluIGRpZmZlcmVudCB3YXlzLCBzbyB0aGUgYmVzdCBpbnRlcmZhY2VzIGZv
ciB0aGVtIHdpbGwgYmUgZGlmZmVyZW50LiBUaGVyZWZvcmUsIGVhY2ggb2YgdGhlbSB3aWxsIGhh
dmUgaXRzIG93biBkb21haW4tc3BlY2lmaWMgaW50ZXJmYWNlIG9uIHRvcCBvZiBgQ29uY3JldGVg
LCBhbmQgdGhleSB3aWxsIG5vdCBiZSB0aGUgc2FtZSBjb2RlLgorICAqIElmIGVub3VnaCBwcm9q
ZWN0cyB3YW50IHRvIHVzZSB0aGUgc2FtZSBpbnRlcmZhY2UsIHRoZXkgY2FuIGFsd2F5cyBzaGFy
ZSBpdCwganVzdCBsaWtlIHRoZXkgaGF2ZSBiZWVuIHNoYXJpbmcgYENvbmNyZXRlYC4gWW91IGNh
biBjaGVjayBpbiB0aGUgaW50ZXJmYWNlIGFuZCB0aGUgYWRhcHRvciBzb21ld2hlcmUgbmVhciBg
Q29uY3JldGVgIChwZXJoYXBzIGluIGEgYGNvbnRyaWJgIHN1Yi1kaXJlY3RvcnkpIGFuZCBsZXQg
bWFueSBwcm9qZWN0cyB1c2UgaXQuCisKK1lvdSBuZWVkIHRvIHdlaWdoIHRoZSBwcm9zIGFuZCBj
b25zIGNhcmVmdWxseSBmb3IgeW91ciBwYXJ0aWN1bGFyCitwcm9ibGVtLCBidXQgSSdkIGxpa2Ug
dG8gYXNzdXJlIHlvdSB0aGF0IHRoZSBKYXZhIGNvbW11bml0eSBoYXMgYmVlbgorcHJhY3RpY2lu
ZyB0aGlzIGZvciBhIGxvbmcgdGltZSBhbmQgaXQncyBhIHByb3ZlbiBlZmZlY3RpdmUgdGVjaG5p
cXVlCithcHBsaWNhYmxlIGluIGEgd2lkZSB2YXJpZXR5IG9mIHNpdHVhdGlvbnMuIDotKQorCisj
IyBEZWxlZ2F0aW5nIENhbGxzIHRvIGEgRmFrZSAjIworCitTb21lIHRpbWVzIHlvdSBoYXZlIGEg
bm9uLXRyaXZpYWwgZmFrZSBpbXBsZW1lbnRhdGlvbiBvZiBhbgoraW50ZXJmYWNlLiBGb3IgZXhh
bXBsZToKKworYGBgCitjbGFzcyBGb28geworIHB1YmxpYzoKKyAgdmlydHVhbCB+Rm9vKCkge30K
KyAgdmlydHVhbCBjaGFyIERvVGhpcyhpbnQgbikgPSAwOworICB2aXJ0dWFsIHZvaWQgRG9UaGF0
KGNvbnN0IGNoYXIqIHMsIGludCogcCkgPSAwOworfTsKKworY2xhc3MgRmFrZUZvbyA6IHB1Ymxp
YyBGb28geworIHB1YmxpYzoKKyAgdmlydHVhbCBjaGFyIERvVGhpcyhpbnQgbikgeworICAgIHJl
dHVybiAobiA+IDApID8gJysnIDoKKyAgICAgICAgKG4gPCAwKSA/ICctJyA6ICcwJzsKKyAgfQor
CisgIHZpcnR1YWwgdm9pZCBEb1RoYXQoY29uc3QgY2hhciogcywgaW50KiBwKSB7CisgICAgKnAg
PSBzdHJsZW4ocyk7CisgIH0KK307CitgYGAKKworTm93IHlvdSB3YW50IHRvIG1vY2sgdGhpcyBp
bnRlcmZhY2Ugc3VjaCB0aGF0IHlvdSBjYW4gc2V0IGV4cGVjdGF0aW9ucworb24gaXQuIEhvd2V2
ZXIsIHlvdSBhbHNvIHdhbnQgdG8gdXNlIGBGYWtlRm9vYCBmb3IgdGhlIGRlZmF1bHQKK2JlaGF2
aW9yLCBhcyBkdXBsaWNhdGluZyBpdCBpbiB0aGUgbW9jayBvYmplY3QgaXMsIHdlbGwsIGEgbG90
IG9mCit3b3JrLgorCitXaGVuIHlvdSBkZWZpbmUgdGhlIG1vY2sgY2xhc3MgdXNpbmcgR29vZ2xl
IE1vY2ssIHlvdSBjYW4gaGF2ZSBpdAorZGVsZWdhdGUgaXRzIGRlZmF1bHQgYWN0aW9uIHRvIGEg
ZmFrZSBjbGFzcyB5b3UgYWxyZWFkeSBoYXZlLCB1c2luZwordGhpcyBwYXR0ZXJuOgorCitgYGAK
K3VzaW5nIDo6dGVzdGluZzo6XzsKK3VzaW5nIDo6dGVzdGluZzo6SW52b2tlOworCitjbGFzcyBN
b2NrRm9vIDogcHVibGljIEZvbyB7CisgcHVibGljOgorICAvLyBOb3JtYWwgbW9jayBtZXRob2Qg
ZGVmaW5pdGlvbnMgdXNpbmcgR29vZ2xlIE1vY2suCisgIE1PQ0tfTUVUSE9EMShEb1RoaXMsIGNo
YXIoaW50IG4pKTsKKyAgTU9DS19NRVRIT0QyKERvVGhhdCwgdm9pZChjb25zdCBjaGFyKiBzLCBp
bnQqIHApKTsKKworICAvLyBEZWxlZ2F0ZXMgdGhlIGRlZmF1bHQgYWN0aW9ucyBvZiB0aGUgbWV0
aG9kcyB0byBhIEZha2VGb28gb2JqZWN0LgorICAvLyBUaGlzIG11c3QgYmUgY2FsbGVkICpiZWZv
cmUqIHRoZSBjdXN0b20gT05fQ0FMTCgpIHN0YXRlbWVudHMuCisgIHZvaWQgRGVsZWdhdGVUb0Zh
a2UoKSB7CisgICAgT05fQ0FMTCgqdGhpcywgRG9UaGlzKF8pKQorICAgICAgICAuV2lsbEJ5RGVm
YXVsdChJbnZva2UoJmZha2VfLCAmRmFrZUZvbzo6RG9UaGlzKSk7CisgICAgT05fQ0FMTCgqdGhp
cywgRG9UaGF0KF8sIF8pKQorICAgICAgICAuV2lsbEJ5RGVmYXVsdChJbnZva2UoJmZha2VfLCAm
RmFrZUZvbzo6RG9UaGF0KSk7CisgIH0KKyBwcml2YXRlOgorICBGYWtlRm9vIGZha2VfOyAgLy8g
S2VlcHMgYW4gaW5zdGFuY2Ugb2YgdGhlIGZha2UgaW4gdGhlIG1vY2suCit9OworYGBgCisKK1dp
dGggdGhhdCwgeW91IGNhbiB1c2UgYE1vY2tGb29gIGluIHlvdXIgdGVzdHMgYXMgdXN1YWwuIEp1
c3QgcmVtZW1iZXIKK3RoYXQgaWYgeW91IGRvbid0IGV4cGxpY2l0bHkgc2V0IGFuIGFjdGlvbiBp
biBhbiBgT05fQ0FMTCgpYCBvcgorYEVYUEVDVF9DQUxMKClgLCB0aGUgZmFrZSB3aWxsIGJlIGNh
bGxlZCB1cG9uIHRvIGRvIGl0OgorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6XzsKKworVEVTVChB
YmNUZXN0LCBYeXopIHsKKyAgTW9ja0ZvbyBmb287CisgIGZvby5EZWxlZ2F0ZVRvRmFrZSgpOyAv
LyBFbmFibGVzIHRoZSBmYWtlIGZvciBkZWxlZ2F0aW9uLgorCisgIC8vIFB1dCB5b3VyIE9OX0NB
TEwoZm9vLCAuLi4pcyBoZXJlLCBpZiBhbnkuCisKKyAgLy8gTm8gYWN0aW9uIHNwZWNpZmllZCwg
bWVhbmluZyB0byB1c2UgdGhlIGRlZmF1bHQgYWN0aW9uLgorICBFWFBFQ1RfQ0FMTChmb28sIERv
VGhpcyg1KSk7CisgIEVYUEVDVF9DQUxMKGZvbywgRG9UaGF0KF8sIF8pKTsKKworICBpbnQgbiA9
IDA7CisgIEVYUEVDVF9FUSgnKycsIGZvby5Eb1RoaXMoNSkpOyAgLy8gRmFrZUZvbzo6RG9UaGlz
KCkgaXMgaW52b2tlZC4KKyAgZm9vLkRvVGhhdCgiSGkiLCAmbik7ICAgICAgICAgICAvLyBGYWtl
Rm9vOjpEb1RoYXQoKSBpcyBpbnZva2VkLgorICBFWFBFQ1RfRVEoMiwgbik7Cit9CitgYGAKKwor
KipTb21lIHRpcHM6KioKKworICAqIElmIHlvdSB3YW50LCB5b3UgY2FuIHN0aWxsIG92ZXJyaWRl
IHRoZSBkZWZhdWx0IGFjdGlvbiBieSBwcm92aWRpbmcgeW91ciBvd24gYE9OX0NBTEwoKWAgb3Ig
dXNpbmcgYC5XaWxsT25jZSgpYCAvIGAuV2lsbFJlcGVhdGVkbHkoKWAgaW4gYEVYUEVDVF9DQUxM
KClgLgorICAqIEluIGBEZWxlZ2F0ZVRvRmFrZSgpYCwgeW91IG9ubHkgbmVlZCB0byBkZWxlZ2F0
ZSB0aGUgbWV0aG9kcyB3aG9zZSBmYWtlIGltcGxlbWVudGF0aW9uIHlvdSBpbnRlbmQgdG8gdXNl
LgorICAqIFRoZSBnZW5lcmFsIHRlY2huaXF1ZSBkaXNjdXNzZWQgaGVyZSB3b3JrcyBmb3Igb3Zl
cmxvYWRlZCBtZXRob2RzLCBidXQgeW91J2xsIG5lZWQgdG8gdGVsbCB0aGUgY29tcGlsZXIgd2hp
Y2ggdmVyc2lvbiB5b3UgbWVhbi4gVG8gZGlzYW1iaWd1YXRlIGEgbW9jayBmdW5jdGlvbiAodGhl
IG9uZSB5b3Ugc3BlY2lmeSBpbnNpZGUgdGhlIHBhcmVudGhlc2VzIG9mIGBPTl9DQUxMKClgKSwg
c2VlIHRoZSAiU2VsZWN0aW5nIEJldHdlZW4gT3ZlcmxvYWRlZCBGdW5jdGlvbnMiIHNlY3Rpb24g
b24gdGhpcyBwYWdlOyB0byBkaXNhbWJpZ3VhdGUgYSBmYWtlIGZ1bmN0aW9uICh0aGUgb25lIHlv
dSBwbGFjZSBpbnNpZGUgYEludm9rZSgpYCksIHVzZSBhIGBzdGF0aWNfY2FzdGAgdG8gc3BlY2lm
eSB0aGUgZnVuY3Rpb24ncyB0eXBlLgorICAqIEhhdmluZyB0byBtaXggYSBtb2NrIGFuZCBhIGZh
a2UgaXMgb2Z0ZW4gYSBzaWduIG9mIHNvbWV0aGluZyBnb25lIHdyb25nLiBQZXJoYXBzIHlvdSBo
YXZlbid0IGdvdCB1c2VkIHRvIHRoZSBpbnRlcmFjdGlvbi1iYXNlZCB3YXkgb2YgdGVzdGluZyB5
ZXQuIE9yIHBlcmhhcHMgeW91ciBpbnRlcmZhY2UgaXMgdGFraW5nIG9uIHRvbyBtYW55IHJvbGVz
IGFuZCBzaG91bGQgYmUgc3BsaXQgdXAuIFRoZXJlZm9yZSwgKipkb24ndCBhYnVzZSB0aGlzKiou
IFdlIHdvdWxkIG9ubHkgcmVjb21tZW5kIHRvIGRvIGl0IGFzIGFuIGludGVybWVkaWF0ZSBzdGVw
IHdoZW4geW91IGFyZSByZWZhY3RvcmluZyB5b3VyIGNvZGUuCisKK1JlZ2FyZGluZyB0aGUgdGlw
IG9uIG1peGluZyBhIG1vY2sgYW5kIGEgZmFrZSwgaGVyZSdzIGFuIGV4YW1wbGUgb24KK3doeSBp
dCBtYXkgYmUgYSBiYWQgc2lnbjogU3VwcG9zZSB5b3UgaGF2ZSBhIGNsYXNzIGBTeXN0ZW1gIGZv
cgorbG93LWxldmVsIHN5c3RlbSBvcGVyYXRpb25zLiBJbiBwYXJ0aWN1bGFyLCBpdCBkb2VzIGZp
bGUgYW5kIEkvTworb3BlcmF0aW9ucy4gQW5kIHN1cHBvc2UgeW91IHdhbnQgdG8gdGVzdCBob3cg
eW91ciBjb2RlIHVzZXMgYFN5c3RlbWAKK3RvIGRvIEkvTywgYW5kIHlvdSBqdXN0IHdhbnQgdGhl
IGZpbGUgb3BlcmF0aW9ucyB0byB3b3JrIG5vcm1hbGx5LiBJZgoreW91IG1vY2sgb3V0IHRoZSBl
bnRpcmUgYFN5c3RlbWAgY2xhc3MsIHlvdSdsbCBoYXZlIHRvIHByb3ZpZGUgYSBmYWtlCitpbXBs
ZW1lbnRhdGlvbiBmb3IgdGhlIGZpbGUgb3BlcmF0aW9uIHBhcnQsIHdoaWNoIHN1Z2dlc3RzIHRo
YXQKK2BTeXN0ZW1gIGlzIHRha2luZyBvbiB0b28gbWFueSByb2xlcy4KKworSW5zdGVhZCwgeW91
IGNhbiBkZWZpbmUgYSBgRmlsZU9wc2AgaW50ZXJmYWNlIGFuZCBhbiBgSU9PcHNgIGludGVyZmFj
ZQorYW5kIHNwbGl0IGBTeXN0ZW1gJ3MgZnVuY3Rpb25hbGl0aWVzIGludG8gdGhlIHR3by4gVGhl
biB5b3UgY2FuIG1vY2sKK2BJT09wc2Agd2l0aG91dCBtb2NraW5nIGBGaWxlT3BzYC4KKworIyMg
RGVsZWdhdGluZyBDYWxscyB0byBhIFJlYWwgT2JqZWN0ICMjCisKK1doZW4gdXNpbmcgdGVzdGlu
ZyBkb3VibGVzIChtb2NrcywgZmFrZXMsIHN0dWJzLCBhbmQgZXRjKSwgc29tZXRpbWVzCit0aGVp
ciBiZWhhdmlvcnMgd2lsbCBkaWZmZXIgZnJvbSB0aG9zZSBvZiB0aGUgcmVhbCBvYmplY3RzLiBU
aGlzCitkaWZmZXJlbmNlIGNvdWxkIGJlIGVpdGhlciBpbnRlbnRpb25hbCAoYXMgaW4gc2ltdWxh
dGluZyBhbiBlcnJvciBzdWNoCit0aGF0IHlvdSBjYW4gdGVzdCB0aGUgZXJyb3IgaGFuZGxpbmcg
Y29kZSkgb3IgdW5pbnRlbnRpb25hbC4gSWYgeW91cgorbW9ja3MgaGF2ZSBkaWZmZXJlbnQgYmVo
YXZpb3JzIHRoYW4gdGhlIHJlYWwgb2JqZWN0cyBieSBtaXN0YWtlLCB5b3UKK2NvdWxkIGVuZCB1
cCB3aXRoIGNvZGUgdGhhdCBwYXNzZXMgdGhlIHRlc3RzIGJ1dCBmYWlscyBpbiBwcm9kdWN0aW9u
LgorCitZb3UgY2FuIHVzZSB0aGUgX2RlbGVnYXRpbmctdG8tcmVhbF8gdGVjaG5pcXVlIHRvIGVu
c3VyZSB0aGF0IHlvdXIKK21vY2sgaGFzIHRoZSBzYW1lIGJlaGF2aW9yIGFzIHRoZSByZWFsIG9i
amVjdCB3aGlsZSByZXRhaW5pbmcgdGhlCithYmlsaXR5IHRvIHZhbGlkYXRlIGNhbGxzLiBUaGlz
IHRlY2huaXF1ZSBpcyB2ZXJ5IHNpbWlsYXIgdG8gdGhlCitkZWxlZ2F0aW5nLXRvLWZha2UgdGVj
aG5pcXVlLCB0aGUgZGlmZmVyZW5jZSBiZWluZyB0aGF0IHdlIHVzZSBhIHJlYWwKK29iamVjdCBp
bnN0ZWFkIG9mIGEgZmFrZS4gSGVyZSdzIGFuIGV4YW1wbGU6CisKK2BgYAordXNpbmcgOjp0ZXN0
aW5nOjpfOwordXNpbmcgOjp0ZXN0aW5nOjpBdExlYXN0OwordXNpbmcgOjp0ZXN0aW5nOjpJbnZv
a2U7CisKK2NsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKKyBwdWJsaWM6CisgIE1vY2tGb28o
KSB7CisgICAgLy8gQnkgZGVmYXVsdCwgYWxsIGNhbGxzIGFyZSBkZWxlZ2F0ZWQgdG8gdGhlIHJl
YWwgb2JqZWN0LgorICAgIE9OX0NBTEwoKnRoaXMsIERvVGhpcygpKQorICAgICAgICAuV2lsbEJ5
RGVmYXVsdChJbnZva2UoJnJlYWxfLCAmRm9vOjpEb1RoaXMpKTsKKyAgICBPTl9DQUxMKCp0aGlz
LCBEb1RoYXQoXykpCisgICAgICAgIC5XaWxsQnlEZWZhdWx0KEludm9rZSgmcmVhbF8sICZGb286
OkRvVGhhdCkpOworICAgIC4uLgorICB9CisgIE1PQ0tfTUVUSE9EMChEb1RoaXMsIC4uLik7Cisg
IE1PQ0tfTUVUSE9EMShEb1RoYXQsIC4uLik7CisgIC4uLgorIHByaXZhdGU6CisgIEZvbyByZWFs
XzsKK307CisuLi4KKworICBNb2NrRm9vIG1vY2s7CisKKyAgRVhQRUNUX0NBTEwobW9jaywgRG9U
aGlzKCkpCisgICAgICAuVGltZXMoMyk7CisgIEVYUEVDVF9DQUxMKG1vY2ssIERvVGhhdCgiSGki
KSkKKyAgICAgIC5UaW1lcyhBdExlYXN0KDEpKTsKKyAgLi4uIHVzZSBtb2NrIGluIHRlc3QgLi4u
CitgYGAKKworV2l0aCB0aGlzLCBHb29nbGUgTW9jayB3aWxsIHZlcmlmeSB0aGF0IHlvdXIgY29k
ZSBtYWRlIHRoZSByaWdodCBjYWxscworKHdpdGggdGhlIHJpZ2h0IGFyZ3VtZW50cywgaW4gdGhl
IHJpZ2h0IG9yZGVyLCBjYWxsZWQgdGhlIHJpZ2h0IG51bWJlcgorb2YgdGltZXMsIGV0YyksIGFu
ZCBhIHJlYWwgb2JqZWN0IHdpbGwgYW5zd2VyIHRoZSBjYWxscyAoc28gdGhlCitiZWhhdmlvciB3
aWxsIGJlIHRoZSBzYW1lIGFzIGluIHByb2R1Y3Rpb24pLiBUaGlzIGdpdmVzIHlvdSB0aGUgYmVz
dAorb2YgYm90aCB3b3JsZHMuCisKKyMjIERlbGVnYXRpbmcgQ2FsbHMgdG8gYSBQYXJlbnQgQ2xh
c3MgIyMKKworSWRlYWxseSwgeW91IHNob3VsZCBjb2RlIHRvIGludGVyZmFjZXMsIHdob3NlIG1l
dGhvZHMgYXJlIGFsbCBwdXJlCit2aXJ0dWFsLiBJbiByZWFsaXR5LCBzb21ldGltZXMgeW91IGRv
IG5lZWQgdG8gbW9jayBhIHZpcnR1YWwgbWV0aG9kCit0aGF0IGlzIG5vdCBwdXJlIChpLmUsIGl0
IGFscmVhZHkgaGFzIGFuIGltcGxlbWVudGF0aW9uKS4gRm9yIGV4YW1wbGU6CisKK2BgYAorY2xh
c3MgRm9vIHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgfkZvbygpOworCisgIHZpcnR1YWwgdm9pZCBQ
dXJlKGludCBuKSA9IDA7CisgIHZpcnR1YWwgaW50IENvbmNyZXRlKGNvbnN0IGNoYXIqIHN0cikg
eyAuLi4gfQorfTsKKworY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28geworIHB1YmxpYzoKKyAg
Ly8gTW9ja2luZyBhIHB1cmUgbWV0aG9kLgorICBNT0NLX01FVEhPRDEoUHVyZSwgdm9pZChpbnQg
bikpOworICAvLyBNb2NraW5nIGEgY29uY3JldGUgbWV0aG9kLiAgRm9vOjpDb25jcmV0ZSgpIGlz
IHNoYWRvd2VkLgorICBNT0NLX01FVEhPRDEoQ29uY3JldGUsIGludChjb25zdCBjaGFyKiBzdHIp
KTsKK307CitgYGAKKworU29tZXRpbWVzIHlvdSBtYXkgd2FudCB0byBjYWxsIGBGb286OkNvbmNy
ZXRlKClgIGluc3RlYWQgb2YKK2BNb2NrRm9vOjpDb25jcmV0ZSgpYC4gUGVyaGFwcyB5b3Ugd2Fu
dCB0byBkbyBpdCBhcyBwYXJ0IG9mIGEgc3R1YgorYWN0aW9uLCBvciBwZXJoYXBzIHlvdXIgdGVz
dCBkb2Vzbid0IG5lZWQgdG8gbW9jayBgQ29uY3JldGUoKWAgYXQgYWxsCisoYnV0IGl0IHdvdWxk
IGJlIG9oLXNvIHBhaW5mdWwgdG8gaGF2ZSB0byBkZWZpbmUgYSBuZXcgbW9jayBjbGFzcword2hl
bmV2ZXIgeW91IGRvbid0IG5lZWQgdG8gbW9jayBvbmUgb2YgaXRzIG1ldGhvZHMpLgorCitUaGUg
dHJpY2sgaXMgdG8gbGVhdmUgYSBiYWNrIGRvb3IgaW4geW91ciBtb2NrIGNsYXNzIGZvciBhY2Nl
c3NpbmcgdGhlCityZWFsIG1ldGhvZHMgaW4gdGhlIGJhc2UgY2xhc3M6CisKK2BgYAorY2xhc3Mg
TW9ja0ZvbyA6IHB1YmxpYyBGb28geworIHB1YmxpYzoKKyAgLy8gTW9ja2luZyBhIHB1cmUgbWV0
aG9kLgorICBNT0NLX01FVEhPRDEoUHVyZSwgdm9pZChpbnQgbikpOworICAvLyBNb2NraW5nIGEg
Y29uY3JldGUgbWV0aG9kLiAgRm9vOjpDb25jcmV0ZSgpIGlzIHNoYWRvd2VkLgorICBNT0NLX01F
VEhPRDEoQ29uY3JldGUsIGludChjb25zdCBjaGFyKiBzdHIpKTsKKworICAvLyBVc2UgdGhpcyB0
byBjYWxsIENvbmNyZXRlKCkgZGVmaW5lZCBpbiBGb28uCisgIGludCBGb29Db25jcmV0ZShjb25z
dCBjaGFyKiBzdHIpIHsgcmV0dXJuIEZvbzo6Q29uY3JldGUoc3RyKTsgfQorfTsKK2BgYAorCitO
b3csIHlvdSBjYW4gY2FsbCBgRm9vOjpDb25jcmV0ZSgpYCBpbnNpZGUgYW4gYWN0aW9uIGJ5Ogor
CitgYGAKK3VzaW5nIDo6dGVzdGluZzo6XzsKK3VzaW5nIDo6dGVzdGluZzo6SW52b2tlOworLi4u
CisgIEVYUEVDVF9DQUxMKGZvbywgQ29uY3JldGUoXykpCisgICAgICAuV2lsbE9uY2UoSW52b2tl
KCZmb28sICZNb2NrRm9vOjpGb29Db25jcmV0ZSkpOworYGBgCisKK29yIHRlbGwgdGhlIG1vY2sg
b2JqZWN0IHRoYXQgeW91IGRvbid0IHdhbnQgdG8gbW9jayBgQ29uY3JldGUoKWA6CisKK2BgYAor
dXNpbmcgOjp0ZXN0aW5nOjpJbnZva2U7CisuLi4KKyAgT05fQ0FMTChmb28sIENvbmNyZXRlKF8p
KQorICAgICAgLldpbGxCeURlZmF1bHQoSW52b2tlKCZmb28sICZNb2NrRm9vOjpGb29Db25jcmV0
ZSkpOworYGBgCisKKyhXaHkgZG9uJ3Qgd2UganVzdCB3cml0ZSBgSW52b2tlKCZmb28sICZGb286
OkNvbmNyZXRlKWA/IElmIHlvdSBkbwordGhhdCwgYE1vY2tGb286OkNvbmNyZXRlKClgIHdpbGwg
YmUgY2FsbGVkIChhbmQgY2F1c2UgYW4gaW5maW5pdGUKK3JlY3Vyc2lvbikgc2luY2UgYEZvbzo6
Q29uY3JldGUoKWAgaXMgdmlydHVhbC4gVGhhdCdzIGp1c3QgaG93IEMrKword29ya3MuKQorCisj
IFVzaW5nIE1hdGNoZXJzICMKKworIyMgTWF0Y2hpbmcgQXJndW1lbnQgVmFsdWVzIEV4YWN0bHkg
IyMKKworWW91IGNhbiBzcGVjaWZ5IGV4YWN0bHkgd2hpY2ggYXJndW1lbnRzIGEgbW9jayBtZXRo
b2QgaXMgZXhwZWN0aW5nOgorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6UmV0dXJuOworLi4uCisg
IEVYUEVDVF9DQUxMKGZvbywgRG9UaGlzKDUpKQorICAgICAgLldpbGxPbmNlKFJldHVybignYScp
KTsKKyAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoYXQoIkhlbGxvIiwgYmFyKSk7CitgYGAKKworIyMg
VXNpbmcgU2ltcGxlIE1hdGNoZXJzICMjCisKK1lvdSBjYW4gdXNlIG1hdGNoZXJzIHRvIG1hdGNo
IGFyZ3VtZW50cyB0aGF0IGhhdmUgYSBjZXJ0YWluIHByb3BlcnR5OgorCitgYGAKK3VzaW5nIDo6
dGVzdGluZzo6R2U7Cit1c2luZyA6OnRlc3Rpbmc6Ok5vdE51bGw7Cit1c2luZyA6OnRlc3Rpbmc6
OlJldHVybjsKKy4uLgorICBFWFBFQ1RfQ0FMTChmb28sIERvVGhpcyhHZSg1KSkpICAvLyBUaGUg
YXJndW1lbnQgbXVzdCBiZSA+PSA1LgorICAgICAgLldpbGxPbmNlKFJldHVybignYScpKTsKKyAg
RVhQRUNUX0NBTEwoZm9vLCBEb1RoYXQoIkhlbGxvIiwgTm90TnVsbCgpKSk7CisgIC8vIFRoZSBz
ZWNvbmQgYXJndW1lbnQgbXVzdCBub3QgYmUgTlVMTC4KK2BgYAorCitBIGZyZXF1ZW50bHkgdXNl
ZCBtYXRjaGVyIGlzIGBfYCwgd2hpY2ggbWF0Y2hlcyBhbnl0aGluZzoKKworYGBgCit1c2luZyA6
OnRlc3Rpbmc6Ol87Cit1c2luZyA6OnRlc3Rpbmc6Ok5vdE51bGw7CisuLi4KKyAgRVhQRUNUX0NB
TEwoZm9vLCBEb1RoYXQoXywgTm90TnVsbCgpKSk7CitgYGAKKworIyMgQ29tYmluaW5nIE1hdGNo
ZXJzICMjCisKK1lvdSBjYW4gYnVpbGQgY29tcGxleCBtYXRjaGVycyBmcm9tIGV4aXN0aW5nIG9u
ZXMgdXNpbmcgYEFsbE9mKClgLAorYEFueU9mKClgLCBhbmQgYE5vdCgpYDoKKworYGBgCit1c2lu
ZyA6OnRlc3Rpbmc6OkFsbE9mOwordXNpbmcgOjp0ZXN0aW5nOjpHdDsKK3VzaW5nIDo6dGVzdGlu
Zzo6SGFzU3Vic3RyOwordXNpbmcgOjp0ZXN0aW5nOjpOZTsKK3VzaW5nIDo6dGVzdGluZzo6Tm90
OworLi4uCisgIC8vIFRoZSBhcmd1bWVudCBtdXN0IGJlID4gNSBhbmQgIT0gMTAuCisgIEVYUEVD
VF9DQUxMKGZvbywgRG9UaGlzKEFsbE9mKEd0KDUpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOZSgxMCkpKSk7CisKKyAgLy8gVGhlIGZpcnN0IGFyZ3VtZW50IG11c3Qgbm90IGNv
bnRhaW4gc3ViLXN0cmluZyAiYmxhaCIuCisgIEVYUEVDVF9DQUxMKGZvbywgRG9UaGF0KE5vdChI
YXNTdWJzdHIoImJsYWgiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpKTsKK2Bg
YAorCisjIyBDYXN0aW5nIE1hdGNoZXJzICMjCisKK0dvb2dsZSBNb2NrIG1hdGNoZXJzIGFyZSBz
dGF0aWNhbGx5IHR5cGVkLCBtZWFuaW5nIHRoYXQgdGhlIGNvbXBpbGVyCitjYW4gY2F0Y2ggeW91
ciBtaXN0YWtlIGlmIHlvdSB1c2UgYSBtYXRjaGVyIG9mIHRoZSB3cm9uZyB0eXBlIChmb3IKK2V4
YW1wbGUsIGlmIHlvdSB1c2UgYEVxKDUpYCB0byBtYXRjaCBhIGBzdHJpbmdgIGFyZ3VtZW50KS4g
R29vZCBmb3IKK3lvdSEKKworU29tZXRpbWVzLCBob3dldmVyLCB5b3Uga25vdyB3aGF0IHlvdSdy
ZSBkb2luZyBhbmQgd2FudCB0aGUgY29tcGlsZXIKK3RvIGdpdmUgeW91IHNvbWUgc2xhY2suIE9u
ZSBleGFtcGxlIGlzIHRoYXQgeW91IGhhdmUgYSBtYXRjaGVyIGZvcgorYGxvbmdgIGFuZCB0aGUg
YXJndW1lbnQgeW91IHdhbnQgdG8gbWF0Y2ggaXMgYGludGAuIFdoaWxlIHRoZSB0d28KK3R5cGVz
IGFyZW4ndCBleGFjdGx5IHRoZSBzYW1lLCB0aGVyZSBpcyBub3RoaW5nIHJlYWxseSB3cm9uZyB3
aXRoCit1c2luZyBhIGBNYXRjaGVyPGxvbmc+YCB0byBtYXRjaCBhbiBgaW50YCAtIGFmdGVyIGFs
bCwgd2UgY2FuIGZpcnN0Citjb252ZXJ0IHRoZSBgaW50YCBhcmd1bWVudCB0byBhIGBsb25nYCBi
ZWZvcmUgZ2l2aW5nIGl0IHRvIHRoZQorbWF0Y2hlci4KKworVG8gc3VwcG9ydCB0aGlzIG5lZWQs
IEdvb2dsZSBNb2NrIGdpdmVzIHlvdSB0aGUKK2BTYWZlTWF0Y2hlckNhc3Q8VD4obSlgIGZ1bmN0
aW9uLiBJdCBjYXN0cyBhIG1hdGNoZXIgYG1gIHRvIHR5cGUKK2BNYXRjaGVyPFQ+YC4gVG8gZW5z
dXJlIHNhZmV0eSwgR29vZ2xlIE1vY2sgY2hlY2tzIHRoYXQgKGxldCBgVWAgYmUgdGhlCit0eXBl
IGBtYCBhY2NlcHRzKToKKworICAxLiBUeXBlIGBUYCBjYW4gYmUgaW1wbGljaXRseSBjYXN0IHRv
IHR5cGUgYFVgOworICAxLiBXaGVuIGJvdGggYFRgIGFuZCBgVWAgYXJlIGJ1aWx0LWluIGFyaXRo
bWV0aWMgdHlwZXMgKGBib29sYCwgaW50ZWdlcnMsIGFuZCBmbG9hdGluZy1wb2ludCBudW1iZXJz
KSwgdGhlIGNvbnZlcnNpb24gZnJvbSBgVGAgdG8gYFVgIGlzIG5vdCBsb3NzeSAoaW4gb3RoZXIg
d29yZHMsIGFueSB2YWx1ZSByZXByZXNlbnRhYmxlIGJ5IGBUYCBjYW4gYWxzbyBiZSByZXByZXNl
bnRlZCBieSBgVWApOyBhbmQKKyAgMS4gV2hlbiBgVWAgaXMgYSByZWZlcmVuY2UsIGBUYCBtdXN0
IGFsc28gYmUgYSByZWZlcmVuY2UgKGFzIHRoZSB1bmRlcmx5aW5nIG1hdGNoZXIgbWF5IGJlIGlu
dGVyZXN0ZWQgaW4gdGhlIGFkZHJlc3Mgb2YgdGhlIGBVYCB2YWx1ZSkuCisKK1RoZSBjb2RlIHdv
bid0IGNvbXBpbGUgaWYgYW55IG9mIHRoZXNlIGNvbmRpdGlvbnMgaXNuJ3QgbWV0LgorCitIZXJl
J3Mgb25lIGV4YW1wbGU6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpTYWZlTWF0Y2hlckNhc3Q7
CisKKy8vIEEgYmFzZSBjbGFzcyBhbmQgYSBjaGlsZCBjbGFzcy4KK2NsYXNzIEJhc2UgeyAuLi4g
fTsKK2NsYXNzIERlcml2ZWQgOiBwdWJsaWMgQmFzZSB7IC4uLiB9OworCitjbGFzcyBNb2NrRm9v
IDogcHVibGljIEZvbyB7CisgcHVibGljOgorICBNT0NLX01FVEhPRDEoRG9UaGlzLCB2b2lkKERl
cml2ZWQqIGRlcml2ZWQpKTsKK307CisuLi4KKworICBNb2NrRm9vIGZvbzsKKyAgLy8gbSBpcyBh
IE1hdGNoZXI8QmFzZSo+IHdlIGdvdCBmcm9tIHNvbWV3aGVyZS4KKyAgRVhQRUNUX0NBTEwoZm9v
LCBEb1RoaXMoU2FmZU1hdGNoZXJDYXN0PERlcml2ZWQqPihtKSkpOworYGBgCisKK0lmIHlvdSBm
aW5kIGBTYWZlTWF0Y2hlckNhc3Q8VD4obSlgIHRvbyBsaW1pdGluZywgeW91IGNhbiB1c2UgYSBz
aW1pbGFyCitmdW5jdGlvbiBgTWF0Y2hlckNhc3Q8VD4obSlgLiBUaGUgZGlmZmVyZW5jZSBpcyB0
aGF0IGBNYXRjaGVyQ2FzdGAgd29ya3MKK2FzIGxvbmcgYXMgeW91IGNhbiBgc3RhdGljX2Nhc3Rg
IHR5cGUgYFRgIHRvIHR5cGUgYFVgLgorCitgTWF0Y2hlckNhc3RgIGVzc2VudGlhbGx5IGxldHMg
eW91IGJ5cGFzcyBDKysncyB0eXBlIHN5c3RlbQorKGBzdGF0aWNfY2FzdGAgaXNuJ3QgYWx3YXlz
IHNhZmUgYXMgaXQgY291bGQgdGhyb3cgYXdheSBpbmZvcm1hdGlvbiwKK2ZvciBleGFtcGxlKSwg
c28gYmUgY2FyZWZ1bCBub3QgdG8gbWlzdXNlL2FidXNlIGl0LgorCisjIyBTZWxlY3RpbmcgQmV0
d2VlbiBPdmVybG9hZGVkIEZ1bmN0aW9ucyAjIworCitJZiB5b3UgZXhwZWN0IGFuIG92ZXJsb2Fk
ZWQgZnVuY3Rpb24gdG8gYmUgY2FsbGVkLCB0aGUgY29tcGlsZXIgbWF5CituZWVkIHNvbWUgaGVs
cCBvbiB3aGljaCBvdmVybG9hZGVkIHZlcnNpb24gaXQgaXMuCisKK1RvIGRpc2FtYmlndWF0ZSBm
dW5jdGlvbnMgb3ZlcmxvYWRlZCBvbiB0aGUgY29uc3QtbmVzcyBvZiB0aGlzIG9iamVjdCwKK3Vz
ZSB0aGUgYENvbnN0KClgIGFyZ3VtZW50IHdyYXBwZXIuCisKK2BgYAordXNpbmcgOjp0ZXN0aW5n
OjpSZXR1cm5SZWY7CisKK2NsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKKyAgLi4uCisgIE1P
Q0tfTUVUSE9EMChHZXRCYXIsIEJhciYoKSk7CisgIE1PQ0tfQ09OU1RfTUVUSE9EMChHZXRCYXIs
IGNvbnN0IEJhciYoKSk7Cit9OworLi4uCisKKyAgTW9ja0ZvbyBmb287CisgIEJhciBiYXIxLCBi
YXIyOworICBFWFBFQ1RfQ0FMTChmb28sIEdldEJhcigpKSAgICAgICAgIC8vIFRoZSBub24tY29u
c3QgR2V0QmFyKCkuCisgICAgICAuV2lsbE9uY2UoUmV0dXJuUmVmKGJhcjEpKTsKKyAgRVhQRUNU
X0NBTEwoQ29uc3QoZm9vKSwgR2V0QmFyKCkpICAvLyBUaGUgY29uc3QgR2V0QmFyKCkuCisgICAg
ICAuV2lsbE9uY2UoUmV0dXJuUmVmKGJhcjIpKTsKK2BgYAorCisoYENvbnN0KClgIGlzIGRlZmlu
ZWQgYnkgR29vZ2xlIE1vY2sgYW5kIHJldHVybnMgYSBgY29uc3RgIHJlZmVyZW5jZQordG8gaXRz
IGFyZ3VtZW50LikKKworVG8gZGlzYW1iaWd1YXRlIG92ZXJsb2FkZWQgZnVuY3Rpb25zIHdpdGgg
dGhlIHNhbWUgbnVtYmVyIG9mIGFyZ3VtZW50cworYnV0IGRpZmZlcmVudCBhcmd1bWVudCB0eXBl
cywgeW91IG1heSBuZWVkIHRvIHNwZWNpZnkgdGhlIGV4YWN0IHR5cGUKK29mIGEgbWF0Y2hlciwg
ZWl0aGVyIGJ5IHdyYXBwaW5nIHlvdXIgbWF0Y2hlciBpbiBgTWF0Y2hlcjx0eXBlPigpYCwgb3IK
K3VzaW5nIGEgbWF0Y2hlciB3aG9zZSB0eXBlIGlzIGZpeGVkIChgVHlwZWRFcTx0eXBlPmAsIGBB
bjx0eXBlPigpYCwKK2V0Yyk6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpBbjsKK3VzaW5nIDo6
dGVzdGluZzo6THQ7Cit1c2luZyA6OnRlc3Rpbmc6Ok1hdGNoZXI7Cit1c2luZyA6OnRlc3Rpbmc6
OlR5cGVkRXE7CisKK2NsYXNzIE1vY2tQcmludGVyIDogcHVibGljIFByaW50ZXIgeworIHB1Ymxp
YzoKKyAgTU9DS19NRVRIT0QxKFByaW50LCB2b2lkKGludCBuKSk7CisgIE1PQ0tfTUVUSE9EMShQ
cmludCwgdm9pZChjaGFyIGMpKTsKK307CisKK1RFU1QoUHJpbnRlclRlc3QsIFByaW50KSB7Cisg
IE1vY2tQcmludGVyIHByaW50ZXI7CisKKyAgRVhQRUNUX0NBTEwocHJpbnRlciwgUHJpbnQoQW48
aW50PigpKSk7ICAgICAgICAgICAgLy8gdm9pZCBQcmludChpbnQpOworICBFWFBFQ1RfQ0FMTChw
cmludGVyLCBQcmludChNYXRjaGVyPGludD4oTHQoNSkpKSk7ICAvLyB2b2lkIFByaW50KGludCk7
CisgIEVYUEVDVF9DQUxMKHByaW50ZXIsIFByaW50KFR5cGVkRXE8Y2hhcj4oJ2EnKSkpOyAgIC8v
IHZvaWQgUHJpbnQoY2hhcik7CisKKyAgcHJpbnRlci5QcmludCgzKTsKKyAgcHJpbnRlci5Qcmlu
dCg2KTsKKyAgcHJpbnRlci5QcmludCgnYScpOworfQorYGBgCisKKyMjIFBlcmZvcm1pbmcgRGlm
ZmVyZW50IEFjdGlvbnMgQmFzZWQgb24gdGhlIEFyZ3VtZW50cyAjIworCitXaGVuIGEgbW9jayBt
ZXRob2QgaXMgY2FsbGVkLCB0aGUgX2xhc3RfIG1hdGNoaW5nIGV4cGVjdGF0aW9uIHRoYXQncwor
c3RpbGwgYWN0aXZlIHdpbGwgYmUgc2VsZWN0ZWQgKHRoaW5rICJuZXdlciBvdmVycmlkZXMgb2xk
ZXIiKS4gU28sIHlvdQorY2FuIG1ha2UgYSBtZXRob2QgZG8gZGlmZmVyZW50IHRoaW5ncyBkZXBl
bmRpbmcgb24gaXRzIGFyZ3VtZW50IHZhbHVlcworbGlrZSB0aGlzOgorCitgYGAKK3VzaW5nIDo6
dGVzdGluZzo6XzsKK3VzaW5nIDo6dGVzdGluZzo6THQ7Cit1c2luZyA6OnRlc3Rpbmc6OlJldHVy
bjsKKy4uLgorICAvLyBUaGUgZGVmYXVsdCBjYXNlLgorICBFWFBFQ1RfQ0FMTChmb28sIERvVGhp
cyhfKSkKKyAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oJ2InKSk7CisKKyAgLy8gVGhlIG1v
cmUgc3BlY2lmaWMgY2FzZS4KKyAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoaXMoTHQoNSkpKQorICAg
ICAgLldpbGxSZXBlYXRlZGx5KFJldHVybignYScpKTsKK2BgYAorCitOb3csIGlmIGBmb28uRG9U
aGlzKClgIGlzIGNhbGxlZCB3aXRoIGEgdmFsdWUgbGVzcyB0aGFuIDUsIGAnYSdgIHdpbGwKK2Jl
IHJldHVybmVkOyBvdGhlcndpc2UgYCdiJ2Agd2lsbCBiZSByZXR1cm5lZC4KKworIyMgTWF0Y2hp
bmcgTXVsdGlwbGUgQXJndW1lbnRzIGFzIGEgV2hvbGUgIyMKKworU29tZXRpbWVzIGl0J3Mgbm90
IGVub3VnaCB0byBtYXRjaCB0aGUgYXJndW1lbnRzIGluZGl2aWR1YWxseS4gRm9yCitleGFtcGxl
LCB3ZSBtYXkgd2FudCB0byBzYXkgdGhhdCB0aGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBsZXNz
IHRoYW4KK3RoZSBzZWNvbmQgYXJndW1lbnQuIFRoZSBgV2l0aCgpYCBjbGF1c2UgYWxsb3dzIHVz
IHRvIG1hdGNoCithbGwgYXJndW1lbnRzIG9mIGEgbW9jayBmdW5jdGlvbiBhcyBhIHdob2xlLiBG
b3IgZXhhbXBsZSwKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6Ol87Cit1c2luZyA6OnRlc3Rpbmc6
Okx0OwordXNpbmcgOjp0ZXN0aW5nOjpOZTsKKy4uLgorICBFWFBFQ1RfQ0FMTChmb28sIEluUmFu
Z2UoTmUoMCksIF8pKQorICAgICAgLldpdGgoTHQoKSk7CitgYGAKKworc2F5cyB0aGF0IHRoZSBm
aXJzdCBhcmd1bWVudCBvZiBgSW5SYW5nZSgpYCBtdXN0IG5vdCBiZSAwLCBhbmQgbXVzdCBiZQor
bGVzcyB0aGFuIHRoZSBzZWNvbmQgYXJndW1lbnQuCisKK1RoZSBleHByZXNzaW9uIGluc2lkZSBg
V2l0aCgpYCBtdXN0IGJlIGEgbWF0Y2hlciBvZiB0eXBlCitgTWF0Y2hlcjx0cjE6OnR1cGxlPEEx
LCAuLi4sIEFuPiA+YCwgd2hlcmUgYEExYCwgLi4uLCBgQW5gIGFyZSB0aGUKK3R5cGVzIG9mIHRo
ZSBmdW5jdGlvbiBhcmd1bWVudHMuCisKK1lvdSBjYW4gYWxzbyB3cml0ZSBgQWxsQXJncyhtKWAg
aW5zdGVhZCBvZiBgbWAgaW5zaWRlIGAuV2l0aCgpYC4gVGhlCit0d28gZm9ybXMgYXJlIGVxdWl2
YWxlbnQsIGJ1dCBgLldpdGgoQWxsQXJncyhMdCgpKSlgIGlzIG1vcmUgcmVhZGFibGUKK3RoYW4g
YC5XaXRoKEx0KCkpYC4KKworWW91IGNhbiB1c2UgYEFyZ3M8azEsIC4uLiwga24+KG0pYCB0byBt
YXRjaCB0aGUgYG5gIHNlbGVjdGVkIGFyZ3VtZW50cworYWdhaW5zdCBgbWAuIEZvciBleGFtcGxl
LAorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6XzsKK3VzaW5nIDo6dGVzdGluZzo6QWxsT2Y7Cit1
c2luZyA6OnRlc3Rpbmc6OkFyZ3M7Cit1c2luZyA6OnRlc3Rpbmc6Okx0OworLi4uCisgIEVYUEVD
VF9DQUxMKGZvbywgQmxhaChfLCBfLCBfKSkKKyAgICAgIC5XaXRoKEFsbE9mKEFyZ3M8MCwgMT4o
THQoKSksIEFyZ3M8MSwgMj4oTHQoKSkpKTsKK2BgYAorCitzYXlzIHRoYXQgYEJsYWgoKWAgd2ls
bCBiZSBjYWxsZWQgd2l0aCBhcmd1bWVudHMgYHhgLCBgeWAsIGFuZCBgemAgd2hlcmUKK2B4IDwg
eSA8IHpgLgorCitBcyBhIGNvbnZlbmllbmNlIGFuZCBleGFtcGxlLCBHb29nbGUgTW9jayBwcm92
aWRlcyBzb21lIG1hdGNoZXJzIGZvcgorMi10dXBsZXMsIGluY2x1ZGluZyB0aGUgYEx0KClgIG1h
dGNoZXIgYWJvdmUuIFNlZSB0aGUgW0NoZWF0U2hlZXRdKFYxXzVfQ2hlYXRTaGVldC5tZCkgZm9y
Cit0aGUgY29tcGxldGUgbGlzdC4KKworIyMgVXNpbmcgTWF0Y2hlcnMgYXMgUHJlZGljYXRlcyAj
IworCitIYXZlIHlvdSBub3RpY2VkIHRoYXQgYSBtYXRjaGVyIGlzIGp1c3QgYSBmYW5jeSBwcmVk
aWNhdGUgdGhhdCBhbHNvCitrbm93cyBob3cgdG8gZGVzY3JpYmUgaXRzZWxmPyBNYW55IGV4aXN0
aW5nIGFsZ29yaXRobXMgdGFrZSBwcmVkaWNhdGVzCithcyBhcmd1bWVudHMgKGUuZy4gdGhvc2Ug
ZGVmaW5lZCBpbiBTVEwncyBgPGFsZ29yaXRobT5gIGhlYWRlciksIGFuZAoraXQgd291bGQgYmUg
YSBzaGFtZSBpZiBHb29nbGUgTW9jayBtYXRjaGVycyBhcmUgbm90IGFsbG93ZWQgdG8KK3BhcnRp
Y2lwYXRlLgorCitMdWNraWx5LCB5b3UgY2FuIHVzZSBhIG1hdGNoZXIgd2hlcmUgYSB1bmFyeSBw
cmVkaWNhdGUgZnVuY3RvciBpcworZXhwZWN0ZWQgYnkgd3JhcHBpbmcgaXQgaW5zaWRlIHRoZSBg
TWF0Y2hlcygpYCBmdW5jdGlvbi4gRm9yIGV4YW1wbGUsCisKK2BgYAorI2luY2x1ZGUgPGFsZ29y
aXRobT4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKK3N0ZDo6dmVjdG9yPGludD4gdjsKKy4uLgorLy8g
SG93IG1hbnkgZWxlbWVudHMgaW4gdiBhcmUgPj0gMTA/Citjb25zdCBpbnQgY291bnQgPSBjb3Vu
dF9pZih2LmJlZ2luKCksIHYuZW5kKCksIE1hdGNoZXMoR2UoMTApKSk7CitgYGAKKworU2luY2Ug
eW91IGNhbiBidWlsZCBjb21wbGV4IG1hdGNoZXJzIGZyb20gc2ltcGxlciBvbmVzIGVhc2lseSB1
c2luZworR29vZ2xlIE1vY2ssIHRoaXMgZ2l2ZXMgeW91IGEgd2F5IHRvIGNvbnZlbmllbnRseSBj
b25zdHJ1Y3QgY29tcG9zaXRlCitwcmVkaWNhdGVzIChkb2luZyB0aGUgc2FtZSB1c2luZyBTVEwn
cyBgPGZ1bmN0aW9uYWw+YCBoZWFkZXIgaXMganVzdAorcGFpbmZ1bCkuIEZvciBleGFtcGxlLCBo
ZXJlJ3MgYSBwcmVkaWNhdGUgdGhhdCdzIHNhdGlzZmllZCBieSBhbnkKK251bWJlciB0aGF0IGlz
ID49IDAsIDw9IDEwMCwgYW5kICE9IDUwOgorCitgYGAKK01hdGNoZXMoQWxsT2YoR2UoMCksIExl
KDEwMCksIE5lKDUwKSkpCitgYGAKKworIyMgVXNpbmcgTWF0Y2hlcnMgaW4gR29vZ2xlIFRlc3Qg
QXNzZXJ0aW9ucyAjIworCitTaW5jZSBtYXRjaGVycyBhcmUgYmFzaWNhbGx5IHByZWRpY2F0ZXMg
dGhhdCBhbHNvIGtub3cgaG93IHRvIGRlc2NyaWJlCit0aGVtc2VsdmVzLCB0aGVyZSBpcyBhIHdh
eSB0byB0YWtlIGFkdmFudGFnZSBvZiB0aGVtIGluCitbR29vZ2xlIFRlc3RdKGh0dHA6Ly9jb2Rl
Lmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0LykgYXNzZXJ0aW9ucy4gSXQncworY2FsbGVkIGBBU1NF
UlRfVEhBVGAgYW5kIGBFWFBFQ1RfVEhBVGA6CisKK2BgYAorICBBU1NFUlRfVEhBVCh2YWx1ZSwg
bWF0Y2hlcik7ICAvLyBBc3NlcnRzIHRoYXQgdmFsdWUgbWF0Y2hlcyBtYXRjaGVyLgorICBFWFBF
Q1RfVEhBVCh2YWx1ZSwgbWF0Y2hlcik7ICAvLyBUaGUgbm9uLWZhdGFsIHZlcnNpb24uCitgYGAK
KworRm9yIGV4YW1wbGUsIGluIGEgR29vZ2xlIFRlc3QgdGVzdCB5b3UgY2FuIHdyaXRlOgorCitg
YGAKKyNpbmNsdWRlIDxnbW9jay9nbW9jay5oPgorCit1c2luZyA6OnRlc3Rpbmc6OkFsbE9mOwor
dXNpbmcgOjp0ZXN0aW5nOjpHZTsKK3VzaW5nIDo6dGVzdGluZzo6TGU7Cit1c2luZyA6OnRlc3Rp
bmc6Ok1hdGNoZXNSZWdleDsKK3VzaW5nIDo6dGVzdGluZzo6U3RhcnRzV2l0aDsKKy4uLgorCisg
IEVYUEVDVF9USEFUKEZvbygpLCBTdGFydHNXaXRoKCJIZWxsbyIpKTsKKyAgRVhQRUNUX1RIQVQo
QmFyKCksIE1hdGNoZXNSZWdleCgiTGluZSBcXGQrIikpOworICBBU1NFUlRfVEhBVChCYXooKSwg
QWxsT2YoR2UoNSksIExlKDEwKSkpOworYGBgCisKK3doaWNoIChhcyB5b3UgY2FuIHByb2JhYmx5
IGd1ZXNzKSBleGVjdXRlcyBgRm9vKClgLCBgQmFyKClgLCBhbmQKK2BCYXooKWAsIGFuZCB2ZXJp
ZmllcyB0aGF0OgorCisgICogYEZvbygpYCByZXR1cm5zIGEgc3RyaW5nIHRoYXQgc3RhcnRzIHdp
dGggYCJIZWxsbyJgLgorICAqIGBCYXIoKWAgcmV0dXJucyBhIHN0cmluZyB0aGF0IG1hdGNoZXMg
cmVndWxhciBleHByZXNzaW9uIGAiTGluZSBcXGQrImAuCisgICogYEJheigpYCByZXR1cm5zIGEg
bnVtYmVyIGluIHRoZSByYW5nZSBbNSwgMTBdLgorCitUaGUgbmljZSB0aGluZyBhYm91dCB0aGVz
ZSBtYWNyb3MgaXMgdGhhdCBfdGhleSByZWFkIGxpa2UKK0VuZ2xpc2hfLiBUaGV5IGdlbmVyYXRl
IGluZm9ybWF0aXZlIG1lc3NhZ2VzIHRvby4gRm9yIGV4YW1wbGUsIGlmIHRoZQorZmlyc3QgYEVY
UEVDVF9USEFUKClgIGFib3ZlIGZhaWxzLCB0aGUgbWVzc2FnZSB3aWxsIGJlIHNvbWV0aGluZyBs
aWtlOgorCitgYGAKK1ZhbHVlIG9mOiBGb28oKQorICBBY3R1YWw6ICJIaSwgd29ybGQhIgorRXhw
ZWN0ZWQ6IHN0YXJ0cyB3aXRoICJIZWxsbyIKK2BgYAorCisqKkNyZWRpdDoqKiBUaGUgaWRlYSBv
ZiBgKEFTU0VSVHxFWFBFQ1QpX1RIQVRgIHdhcyBzdG9sZW4gZnJvbSB0aGUKK1tIYW1jcmVzdF0o
aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2hhbWNyZXN0LykgcHJvamVjdCwgd2hpY2ggYWRkcwor
YGFzc2VydFRoYXQoKWAgdG8gSlVuaXQuCisKKyMjIFVzaW5nIFByZWRpY2F0ZXMgYXMgTWF0Y2hl
cnMgIyMKKworR29vZ2xlIE1vY2sgcHJvdmlkZXMgYSBidWlsdC1pbiBzZXQgb2YgbWF0Y2hlcnMu
IEluIGNhc2UgeW91IGZpbmQgdGhlbQorbGFja2luZywgeW91IGNhbiB1c2UgYW4gYXJiaXRyYXkg
dW5hcnkgcHJlZGljYXRlIGZ1bmN0aW9uIG9yIGZ1bmN0b3IKK2FzIGEgbWF0Y2hlciAtIGFzIGxv
bmcgYXMgdGhlIHByZWRpY2F0ZSBhY2NlcHRzIGEgdmFsdWUgb2YgdGhlIHR5cGUKK3lvdSB3YW50
LiBZb3UgZG8gdGhpcyBieSB3cmFwcGluZyB0aGUgcHJlZGljYXRlIGluc2lkZSB0aGUgYFRydWx5
KClgCitmdW5jdGlvbiwgZm9yIGV4YW1wbGU6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpUcnVs
eTsKKworaW50IElzRXZlbihpbnQgbikgeyByZXR1cm4gKG4gJSAyKSA9PSAwID8gMSA6IDA7IH0K
Ky4uLgorCisgIC8vIEJhcigpIG11c3QgYmUgY2FsbGVkIHdpdGggYW4gZXZlbiBudW1iZXIuCisg
IEVYUEVDVF9DQUxMKGZvbywgQmFyKFRydWx5KElzRXZlbikpKTsKK2BgYAorCitOb3RlIHRoYXQg
dGhlIHByZWRpY2F0ZSBmdW5jdGlvbiAvIGZ1bmN0b3IgZG9lc24ndCBoYXZlIHRvIHJldHVybgor
YGJvb2xgLiBJdCB3b3JrcyBhcyBsb25nIGFzIHRoZSByZXR1cm4gdmFsdWUgY2FuIGJlIHVzZWQg
YXMgdGhlCitjb25kaXRpb24gaW4gc3RhdGVtZW50IGBpZiAoY29uZGl0aW9uKSAuLi5gLgorCisj
IyBNYXRjaGluZyBBcmd1bWVudHMgdGhhdCBBcmUgTm90IENvcHlhYmxlICMjCisKK1doZW4geW91
IGRvIGFuIGBFWFBFQ1RfQ0FMTChtb2NrX29iaiwgRm9vKGJhcikpYCwgR29vZ2xlIE1vY2sgc2F2
ZXMKK2F3YXkgYSBjb3B5IG9mIGBiYXJgLiBXaGVuIGBGb28oKWAgaXMgY2FsbGVkIGxhdGVyLCBH
b29nbGUgTW9jaworY29tcGFyZXMgdGhlIGFyZ3VtZW50IHRvIGBGb28oKWAgd2l0aCB0aGUgc2F2
ZWQgY29weSBvZiBgYmFyYC4gVGhpcword2F5LCB5b3UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91
dCBgYmFyYCBiZWluZyBtb2RpZmllZCBvciBkZXN0cm95ZWQKK2FmdGVyIHRoZSBgRVhQRUNUX0NB
TEwoKWAgaXMgZXhlY3V0ZWQuIFRoZSBzYW1lIGlzIHRydWUgd2hlbiB5b3UgdXNlCittYXRjaGVy
cyBsaWtlIGBFcShiYXIpYCwgYExlKGJhcilgLCBhbmQgc28gb24uCisKK0J1dCB3aGF0IGlmIGBi
YXJgIGNhbm5vdCBiZSBjb3BpZWQgKGkuZS4gaGFzIG5vIGNvcHkgY29uc3RydWN0b3IpPyBZb3UK
K2NvdWxkIGRlZmluZSB5b3VyIG93biBtYXRjaGVyIGZ1bmN0aW9uIGFuZCB1c2UgaXQgd2l0aCBg
VHJ1bHkoKWAsIGFzCit0aGUgcHJldmlvdXMgY291cGxlIG9mIHJlY2lwZXMgaGF2ZSBzaG93bi4g
T3IsIHlvdSBtYXkgYmUgYWJsZSB0byBnZXQKK2F3YXkgZnJvbSBpdCBpZiB5b3UgY2FuIGd1YXJh
bnRlZSB0aGF0IGBiYXJgIHdvbid0IGJlIGNoYW5nZWQgYWZ0ZXIKK3RoZSBgRVhQRUNUX0NBTEwo
KWAgaXMgZXhlY3V0ZWQuIEp1c3QgdGVsbCBHb29nbGUgTW9jayB0aGF0IGl0IHNob3VsZAorc2F2
ZSBhIHJlZmVyZW5jZSB0byBgYmFyYCwgaW5zdGVhZCBvZiBhIGNvcHkgb2YgaXQuIEhlcmUncyBo
b3c6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpFcTsKK3VzaW5nIDo6dGVzdGluZzo6QnlSZWY7
Cit1c2luZyA6OnRlc3Rpbmc6Okx0OworLi4uCisgIC8vIEV4cGVjdHMgdGhhdCBGb28oKSdzIGFy
Z3VtZW50ID09IGJhci4KKyAgRVhQRUNUX0NBTEwobW9ja19vYmosIEZvbyhFcShCeVJlZihiYXIp
KSkpOworCisgIC8vIEV4cGVjdHMgdGhhdCBGb28oKSdzIGFyZ3VtZW50IDwgYmFyLgorICBFWFBF
Q1RfQ0FMTChtb2NrX29iaiwgRm9vKEx0KEJ5UmVmKGJhcikpKSk7CitgYGAKKworUmVtZW1iZXI6
IGlmIHlvdSBkbyB0aGlzLCBkb24ndCBjaGFuZ2UgYGJhcmAgYWZ0ZXIgdGhlCitgRVhQRUNUX0NB
TEwoKWAsIG9yIHRoZSByZXN1bHQgaXMgdW5kZWZpbmVkLgorCisjIyBWYWxpZGF0aW5nIGEgTWVt
YmVyIG9mIGFuIE9iamVjdCAjIworCitPZnRlbiBhIG1vY2sgZnVuY3Rpb24gdGFrZXMgYSByZWZl
cmVuY2UgdG8gb2JqZWN0IGFzIGFuIGFyZ3VtZW50LiBXaGVuCittYXRjaGluZyB0aGUgYXJndW1l
bnQsIHlvdSBtYXkgbm90IHdhbnQgdG8gY29tcGFyZSB0aGUgZW50aXJlIG9iamVjdAorYWdhaW5z
dCBhIGZpeGVkIG9iamVjdCwgYXMgdGhhdCBtYXkgYmUgb3Zlci1zcGVjaWZpY2F0aW9uLiBJbnN0
ZWFkLAoreW91IG1heSBuZWVkIHRvIHZhbGlkYXRlIGEgY2VydGFpbiBtZW1iZXIgdmFyaWFibGUg
b3IgdGhlIHJlc3VsdCBvZiBhCitjZXJ0YWluIGdldHRlciBtZXRob2Qgb2YgdGhlIG9iamVjdC4g
WW91IGNhbiBkbyB0aGlzIHdpdGggYEZpZWxkKClgCithbmQgYFByb3BlcnR5KClgLiBNb3JlIHNw
ZWNpZmljYWxseSwKKworYGBgCitGaWVsZCgmRm9vOjpiYXIsIG0pCitgYGAKKworaXMgYSBtYXRj
aGVyIHRoYXQgbWF0Y2hlcyBhIGBGb29gIG9iamVjdCB3aG9zZSBgYmFyYCBtZW1iZXIgdmFyaWFi
bGUKK3NhdGlzZmllcyBtYXRjaGVyIGBtYC4KKworYGBgCitQcm9wZXJ0eSgmRm9vOjpiYXosIG0p
CitgYGAKKworaXMgYSBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhIGBGb29gIG9iamVjdCB3aG9zZSBg
YmF6KClgIG1ldGhvZCByZXR1cm5zCithIHZhbHVlIHRoYXQgc2F0aXNmaWVzIG1hdGNoZXIgYG1g
LgorCitGb3IgZXhhbXBsZToKKworPiB8IGBGaWVsZCgmRm9vOjpudW1iZXIsIEdlKDMpKWAgfCBN
YXRjaGVzIGB4YCB3aGVyZSBgeC5udW1iZXIgPj0gM2AuIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorPiB8IGBQ
cm9wZXJ0eSgmRm9vOjpuYW1lLCBTdGFydHNXaXRoKCJKb2huICIpKWAgfCBNYXRjaGVzIGB4YCB3
aGVyZSBgeC5uYW1lKClgIHN0YXJ0cyB3aXRoIGAiSm9obiAiYC4gfAorCitOb3RlIHRoYXQgaW4g
YFByb3BlcnR5KCZGb286OmJheiwgLi4uKWAsIG1ldGhvZCBgYmF6KClgIG11c3QgdGFrZSBubwor
YXJndW1lbnQgYW5kIGJlIGRlY2xhcmVkIGFzIGBjb25zdGAuCisKK0JUVywgYEZpZWxkKClgIGFu
ZCBgUHJvcGVydHkoKWAgY2FuIGFsc28gbWF0Y2ggcGxhaW4gcG9pbnRlcnMgdG8KK29iamVjdHMu
IEZvciBpbnN0YW5jZSwKKworYGBgCitGaWVsZCgmRm9vOjpudW1iZXIsIEdlKDMpKQorYGBgCisK
K21hdGNoZXMgYSBwbGFpbiBwb2ludGVyIGBwYCB3aGVyZSBgcC0+bnVtYmVyID49IDNgLiBJZiBg
cGAgaXMgYE5VTExgLAordGhlIG1hdGNoIHdpbGwgYWx3YXlzIGZhaWwgcmVnYXJkbGVzcyBvZiB0
aGUgaW5uZXIgbWF0Y2hlci4KKworV2hhdCBpZiB5b3Ugd2FudCB0byB2YWxpZGF0ZSBtb3JlIHRo
YW4gb25lIG1lbWJlcnMgYXQgdGhlIHNhbWUgdGltZT8KK1JlbWVtYmVyIHRoYXQgdGhlcmUgaXMg
YEFsbE9mKClgLgorCisjIyBWYWxpZGF0aW5nIHRoZSBWYWx1ZSBQb2ludGVkIHRvIGJ5IGEgUG9p
bnRlciBBcmd1bWVudCAjIworCitDKysgZnVuY3Rpb25zIG9mdGVuIHRha2UgcG9pbnRlcnMgYXMg
YXJndW1lbnRzLiBZb3UgY2FuIHVzZSBtYXRjaGVycworbGlrZSBgTlVMTGAsIGBOb3ROdWxsKClg
LCBhbmQgb3RoZXIgY29tcGFyaXNvbiBtYXRjaGVycyB0byBtYXRjaCBhCitwb2ludGVyLCBidXQg
d2hhdCBpZiB5b3Ugd2FudCB0byBtYWtlIHN1cmUgdGhlIHZhbHVlIF9wb2ludGVkIHRvXyBieQor
dGhlIHBvaW50ZXIsIGluc3RlYWQgb2YgdGhlIHBvaW50ZXIgaXRzZWxmLCBoYXMgYSBjZXJ0YWlu
IHByb3BlcnR5PworV2VsbCwgeW91IGNhbiB1c2UgdGhlIGBQb2ludGVlKG0pYCBtYXRjaGVyLgor
CitgUG9pbnRlZShtKWAgbWF0Y2hlcyBhIHBvaW50ZXIgaWZmIGBtYCBtYXRjaGVzIHRoZSB2YWx1
ZSB0aGUgcG9pbnRlcgorcG9pbnRzIHRvLiBGb3IgZXhhbXBsZToKKworYGBgCit1c2luZyA6OnRl
c3Rpbmc6OkdlOwordXNpbmcgOjp0ZXN0aW5nOjpQb2ludGVlOworLi4uCisgIEVYUEVDVF9DQUxM
KGZvbywgQmFyKFBvaW50ZWUoR2UoMykpKSk7CitgYGAKKworZXhwZWN0cyBgZm9vLkJhcigpYCB0
byBiZSBjYWxsZWQgd2l0aCBhIHBvaW50ZXIgdGhhdCBwb2ludHMgdG8gYSB2YWx1ZQorZ3JlYXRl
ciB0aGFuIG9yIGVxdWFsIHRvIDMuCisKK09uZSBuaWNlIHRoaW5nIGFib3V0IGBQb2ludGVlKClg
IGlzIHRoYXQgaXQgdHJlYXRzIGEgYE5VTExgIHBvaW50ZXIgYXMKK2EgbWF0Y2ggZmFpbHVyZSwg
c28geW91IGNhbiB3cml0ZSBgUG9pbnRlZShtKWAgaW5zdGVhZCBvZgorCitgYGAKKyAgQWxsT2Yo
Tm90TnVsbCgpLCBQb2ludGVlKG0pKQorYGBgCisKK3dpdGhvdXQgd29ycnlpbmcgdGhhdCBhIGBO
VUxMYCBwb2ludGVyIHdpbGwgY3Jhc2ggeW91ciB0ZXN0LgorCitBbHNvLCBkaWQgd2UgdGVsbCB5
b3UgdGhhdCBgUG9pbnRlZSgpYCB3b3JrcyB3aXRoIGJvdGggcmF3IHBvaW50ZXJzCisqKmFuZCoq
IHNtYXJ0IHBvaW50ZXJzIChgbGlua2VkX3B0cmAsIGBzaGFyZWRfcHRyYCwgYHNjb3BlZF9wdHJg
LCBhbmQKK2V0Yyk/CisKK1doYXQgaWYgeW91IGhhdmUgYSBwb2ludGVyIHRvIHBvaW50ZXI/IFlv
dSBndWVzc2VkIGl0IC0geW91IGNhbiB1c2UKK25lc3RlZCBgUG9pbnRlZSgpYCB0byBwcm9iZSBk
ZWVwZXIgaW5zaWRlIHRoZSB2YWx1ZS4gRm9yIGV4YW1wbGUsCitgUG9pbnRlZShQb2ludGVlKEx0
KDMpKSlgIG1hdGNoZXMgYSBwb2ludGVyIHRoYXQgcG9pbnRzIHRvIGEgcG9pbnRlcgordGhhdCBw
b2ludHMgdG8gYSBudW1iZXIgbGVzcyB0aGFuIDMgKHdoYXQgYSBtb3V0aGZ1bC4uLikuCisKKyMj
IFRlc3RpbmcgYSBDZXJ0YWluIFByb3BlcnR5IG9mIGFuIE9iamVjdCAjIworCitTb21ldGltZXMg
eW91IHdhbnQgdG8gc3BlY2lmeSB0aGF0IGFuIG9iamVjdCBhcmd1bWVudCBoYXMgYSBjZXJ0YWlu
Citwcm9wZXJ0eSwgYnV0IHRoZXJlIGlzIG5vIGV4aXN0aW5nIG1hdGNoZXIgdGhhdCBkb2VzIHRo
aXMuIElmIHlvdSB3YW50Citnb29kIGVycm9yIG1lc3NhZ2VzLCB5b3Ugc2hvdWxkIGRlZmluZSBh
IG1hdGNoZXIuIElmIHlvdSB3YW50IHRvIGRvIGl0CitxdWljayBhbmQgZGlydHksIHlvdSBjb3Vs
ZCBnZXQgYXdheSB3aXRoIHdyaXRpbmcgYW4gb3JkaW5hcnkgZnVuY3Rpb24uCisKK0xldCdzIHNh
eSB5b3UgaGF2ZSBhIG1vY2sgZnVuY3Rpb24gdGhhdCB0YWtlcyBhbiBvYmplY3Qgb2YgdHlwZSBg
Rm9vYCwKK3doaWNoIGhhcyBhbiBgaW50IGJhcigpYCBtZXRob2QgYW5kIGFuIGBpbnQgYmF6KClg
IG1ldGhvZCwgYW5kIHlvdQord2FudCB0byBjb25zdHJhaW4gdGhhdCB0aGUgYXJndW1lbnQncyBg
YmFyKClgIHZhbHVlIHBsdXMgaXRzIGBiYXooKWAKK3ZhbHVlIGlzIGEgZ2l2ZW4gbnVtYmVyLiBI
ZXJlJ3MgaG93IHlvdSBjYW4gZGVmaW5lIGEgbWF0Y2hlciB0byBkbyBpdDoKKworYGBgCit1c2lu
ZyA6OnRlc3Rpbmc6Ok1hdGNoZXJJbnRlcmZhY2U7Cit1c2luZyA6OnRlc3Rpbmc6Ok1hdGNoUmVz
dWx0TGlzdGVuZXI7CisKK2NsYXNzIEJhclBsdXNCYXpFcU1hdGNoZXIgOiBwdWJsaWMgTWF0Y2hl
ckludGVyZmFjZTxjb25zdCBGb28mPiB7CisgcHVibGljOgorICBleHBsaWNpdCBCYXJQbHVzQmF6
RXFNYXRjaGVyKGludCBleHBlY3RlZF9zdW0pCisgICAgICA6IGV4cGVjdGVkX3N1bV8oZXhwZWN0
ZWRfc3VtKSB7fQorCisgIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxhaW4oY29uc3QgRm9vJiBm
b28sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHRMaXN0ZW5lciog
bGlzdGVuZXIpIGNvbnN0IHsKKyAgICByZXR1cm4gKGZvby5iYXIoKSArIGZvby5iYXooKSkgPT0g
ZXhwZWN0ZWRfc3VtXzsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBEZXNjcmliZVRvKDo6c3RkOjpv
c3RyZWFtKiBvcykgY29uc3QgeworICAgICpvcyA8PCAiYmFyKCkgKyBiYXooKSBlcXVhbHMgIiA8
PCBleHBlY3RlZF9zdW1fOworICB9CisKKyAgdmlydHVhbCB2b2lkIERlc2NyaWJlTmVnYXRpb25U
byg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKKyAgICAqb3MgPDwgImJhcigpICsgYmF6KCkg
ZG9lcyBub3QgZXF1YWwgIiA8PCBleHBlY3RlZF9zdW1fOworICB9CisgcHJpdmF0ZToKKyAgY29u
c3QgaW50IGV4cGVjdGVkX3N1bV87Cit9OworCitpbmxpbmUgTWF0Y2hlcjxjb25zdCBGb28mPiBC
YXJQbHVzQmF6RXEoaW50IGV4cGVjdGVkX3N1bSkgeworICByZXR1cm4gTWFrZU1hdGNoZXIobmV3
IEJhclBsdXNCYXpFcU1hdGNoZXIoZXhwZWN0ZWRfc3VtKSk7Cit9CisKKy4uLgorCisgIEVYUEVD
VF9DQUxMKC4uLiwgRG9UaGlzKEJhclBsdXNCYXpFcSg1KSkpLi4uOworYGBgCisKKyMjIE1hdGNo
aW5nIENvbnRhaW5lcnMgIyMKKworU29tZXRpbWVzIGFuIFNUTCBjb250YWluZXIgKGUuZy4gbGlz
dCwgdmVjdG9yLCBtYXAsIC4uLikgaXMgcGFzc2VkIHRvCithIG1vY2sgZnVuY3Rpb24gYW5kIHlv
dSBtYXkgd2FudCB0byB2YWxpZGF0ZSBpdC4gU2luY2UgbW9zdCBTVEwKK2NvbnRhaW5lcnMgc3Vw
cG9ydCB0aGUgYD09YCBvcGVyYXRvciwgeW91IGNhbiB3cml0ZQorYEVxKGV4cGVjdGVkX2NvbnRh
aW5lcilgIG9yIHNpbXBseSBgZXhwZWN0ZWRfY29udGFpbmVyYCB0byBtYXRjaCBhCitjb250YWlu
ZXIgZXhhY3RseS4KKworU29tZXRpbWVzLCB0aG91Z2gsIHlvdSBtYXkgd2FudCB0byBiZSBtb3Jl
IGZsZXhpYmxlIChmb3IgZXhhbXBsZSwgdGhlCitmaXJzdCBlbGVtZW50IG11c3QgYmUgYW4gZXhh
Y3QgbWF0Y2gsIGJ1dCB0aGUgc2Vjb25kIGVsZW1lbnQgY2FuIGJlCithbnkgcG9zaXRpdmUgbnVt
YmVyLCBhbmQgc28gb24pLiBBbHNvLCBjb250YWluZXJzIHVzZWQgaW4gdGVzdHMgb2Z0ZW4KK2hh
dmUgYSBzbWFsbCBudW1iZXIgb2YgZWxlbWVudHMsIGFuZCBoYXZpbmcgdG8gZGVmaW5lIHRoZSBl
eHBlY3RlZAorY29udGFpbmVyIG91dC1vZi1saW5lIGlzIGEgYml0IG9mIGEgaGFzc2xlLgorCitZ
b3UgY2FuIHVzZSB0aGUgYEVsZW1lbnRzQXJlKClgIG1hdGNoZXIgaW4gc3VjaCBjYXNlczoKKwor
YGBgCit1c2luZyA6OnRlc3Rpbmc6Ol87Cit1c2luZyA6OnRlc3Rpbmc6OkVsZW1lbnRzQXJlOwor
dXNpbmcgOjp0ZXN0aW5nOjpHdDsKKy4uLgorCisgIE1PQ0tfTUVUSE9EMShGb28sIHZvaWQoY29u
c3QgdmVjdG9yPGludD4mIG51bWJlcnMpKTsKKy4uLgorCisgIEVYUEVDVF9DQUxMKG1vY2ssIEZv
byhFbGVtZW50c0FyZSgxLCBHdCgwKSwgXywgNSkpKTsKK2BgYAorCitUaGUgYWJvdmUgbWF0Y2hl
ciBzYXlzIHRoYXQgdGhlIGNvbnRhaW5lciBtdXN0IGhhdmUgNCBlbGVtZW50cywgd2hpY2gKK211
c3QgYmUgMSwgZ3JlYXRlciB0aGFuIDAsIGFueXRoaW5nLCBhbmQgNSByZXNwZWN0aXZlbHkuCisK
K2BFbGVtZW50c0FyZSgpYCBpcyBvdmVybG9hZGVkIHRvIHRha2UgMCB0byAxMCBhcmd1bWVudHMu
IElmIG1vcmUgYXJlCituZWVkZWQsIHlvdSBjYW4gcGxhY2UgdGhlbSBpbiBhIEMtc3R5bGUgYXJy
YXkgYW5kIHVzZQorYEVsZW1lbnRzQXJlQXJyYXkoKWAgaW5zdGVhZDoKKworYGBgCit1c2luZyA6
OnRlc3Rpbmc6OkVsZW1lbnRzQXJlQXJyYXk7CisuLi4KKworICAvLyBFbGVtZW50c0FyZUFycmF5
IGFjY2VwdHMgYW4gYXJyYXkgb2YgZWxlbWVudCB2YWx1ZXMuCisgIGNvbnN0IGludCBleHBlY3Rl
ZF92ZWN0b3IxW10gPSB7IDEsIDUsIDIsIDQsIC4uLiB9OworICBFWFBFQ1RfQ0FMTChtb2NrLCBG
b28oRWxlbWVudHNBcmVBcnJheShleHBlY3RlZF92ZWN0b3IxKSkpOworCisgIC8vIE9yLCBhbiBh
cnJheSBvZiBlbGVtZW50IG1hdGNoZXJzLgorICBNYXRjaGVyPGludD4gZXhwZWN0ZWRfdmVjdG9y
MiA9IHsgMSwgR3QoMiksIF8sIDMsIC4uLiB9OworICBFWFBFQ1RfQ0FMTChtb2NrLCBGb28oRWxl
bWVudHNBcmVBcnJheShleHBlY3RlZF92ZWN0b3IyKSkpOworYGBgCisKK0luIGNhc2UgdGhlIGFy
cmF5IG5lZWRzIHRvIGJlIGR5bmFtaWNhbGx5IGNyZWF0ZWQgKGFuZCB0aGVyZWZvcmUgdGhlCith
cnJheSBzaXplIGNhbm5vdCBiZSBpbmZlcnJlZCBieSB0aGUgY29tcGlsZXIpLCB5b3UgY2FuIGdp
dmUKK2BFbGVtZW50c0FyZUFycmF5KClgIGFuIGFkZGl0aW9uYWwgYXJndW1lbnQgdG8gc3BlY2lm
eSB0aGUgYXJyYXkgc2l6ZToKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6OkVsZW1lbnRzQXJlQXJy
YXk7CisuLi4KKyAgaW50KiBjb25zdCBleHBlY3RlZF92ZWN0b3IzID0gbmV3IGludFtjb3VudF07
CisgIC4uLiBmaWxsIGV4cGVjdGVkX3ZlY3RvcjMgd2l0aCB2YWx1ZXMgLi4uCisgIEVYUEVDVF9D
QUxMKG1vY2ssIEZvbyhFbGVtZW50c0FyZUFycmF5KGV4cGVjdGVkX3ZlY3RvcjMsIGNvdW50KSkp
OworYGBgCisKKyoqVGlwczoqKgorCisgICogYEVsZW1lbnRBcmUqKClgIHdvcmtzIHdpdGggX2Fu
eV8gY29udGFpbmVyIHRoYXQgaW1wbGVtZW50cyB0aGUgU1RMIGl0ZXJhdG9yIGNvbmNlcHQgKGku
ZS4gaXQgaGFzIGEgYGNvbnN0X2l0ZXJhdG9yYCB0eXBlIGFuZCBzdXBwb3J0cyBgYmVnaW4oKS9l
bmQoKWApIGFuZCBzdXBwb3J0cyBgc2l6ZSgpYCwgbm90IGp1c3QgdGhlIG9uZXMgZGVmaW5lZCBp
biBTVEwuIEl0IHdpbGwgZXZlbiB3b3JrIHdpdGggY29udGFpbmVyIHR5cGVzIHlldCB0byBiZSB3
cml0dGVuIC0gYXMgbG9uZyBhcyB0aGV5IGZvbGxvd3MgdGhlIGFib3ZlIHBhdHRlcm4uCisgICog
WW91IGNhbiB1c2UgbmVzdGVkIGBFbGVtZW50QXJlKigpYCB0byBtYXRjaCBuZXN0ZWQgKG11bHRp
LWRpbWVuc2lvbmFsKSBjb250YWluZXJzLgorICAqIElmIHRoZSBjb250YWluZXIgaXMgcGFzc2Vk
IGJ5IHBvaW50ZXIgaW5zdGVhZCBvZiBieSByZWZlcmVuY2UsIGp1c3Qgd3JpdGUgYFBvaW50ZWUo
RWxlbWVudHNBcmUqKC4uLikpYC4KKyAgKiBUaGUgb3JkZXIgb2YgZWxlbWVudHMgX21hdHRlcnNf
IGZvciBgRWxlbWVudHNBcmUqKClgLiBUaGVyZWZvcmUgZG9uJ3QgdXNlIGl0IHdpdGggY29udGFp
bmVycyB3aG9zZSBlbGVtZW50IG9yZGVyIGlzIHVuZGVmaW5lZCAoZS5nLiBgaGFzaF9tYXBgKS4K
KworIyMgU2hhcmluZyBNYXRjaGVycyAjIworCitVbmRlciB0aGUgaG9vZCwgYSBHb29nbGUgTW9j
ayBtYXRjaGVyIG9iamVjdCBjb25zaXN0cyBvZiBhIHBvaW50ZXIgdG8KK2EgcmVmLWNvdW50ZWQg
aW1wbGVtZW50YXRpb24gb2JqZWN0LiBDb3B5aW5nIG1hdGNoZXJzIGlzIGFsbG93ZWQgYW5kCit2
ZXJ5IGVmZmljaWVudCwgYXMgb25seSB0aGUgcG9pbnRlciBpcyBjb3BpZWQuIFdoZW4gdGhlIGxh
c3QgbWF0Y2hlcgordGhhdCByZWZlcmVuY2VzIHRoZSBpbXBsZW1lbnRhdGlvbiBvYmplY3QgZGll
cywgdGhlIGltcGxlbWVudGF0aW9uCitvYmplY3Qgd2lsbCBiZSBkZWxldGVkLgorCitUaGVyZWZv
cmUsIGlmIHlvdSBoYXZlIHNvbWUgY29tcGxleCBtYXRjaGVyIHRoYXQgeW91IHdhbnQgdG8gdXNl
IGFnYWluCithbmQgYWdhaW4sIHRoZXJlIGlzIG5vIG5lZWQgdG8gYnVpbGQgaXQgZXZlcnl0aW1l
LiBKdXN0IGFzc2lnbiBpdCB0byBhCittYXRjaGVyIHZhcmlhYmxlIGFuZCB1c2UgdGhhdCB2YXJp
YWJsZSByZXBlYXRlZGx5ISBGb3IgZXhhbXBsZSwKKworYGBgCisgIE1hdGNoZXI8aW50PiBpbl9y
YW5nZSA9IEFsbE9mKEd0KDUpLCBMZSgxMCkpOworICAuLi4gdXNlIGluX3JhbmdlIGFzIGEgbWF0
Y2hlciBpbiBtdWx0aXBsZSBFWFBFQ1RfQ0FMTHMgLi4uCitgYGAKKworIyBTZXR0aW5nIEV4cGVj
dGF0aW9ucyAjCisKKyMjIElnbm9yaW5nIFVuaW50ZXJlc3RpbmcgQ2FsbHMgIyMKKworSWYgeW91
IGFyZSBub3QgaW50ZXJlc3RlZCBpbiBob3cgYSBtb2NrIG1ldGhvZCBpcyBjYWxsZWQsIGp1c3Qg
ZG9uJ3QKK3NheSBhbnl0aGluZyBhYm91dCBpdC4gSW4gdGhpcyBjYXNlLCBpZiB0aGUgbWV0aG9k
IGlzIGV2ZXIgY2FsbGVkLAorR29vZ2xlIE1vY2sgd2lsbCBwZXJmb3JtIGl0cyBkZWZhdWx0IGFj
dGlvbiB0byBhbGxvdyB0aGUgdGVzdCBwcm9ncmFtCit0byBjb250aW51ZS4gSWYgeW91IGFyZSBu
b3QgaGFwcHkgd2l0aCB0aGUgZGVmYXVsdCBhY3Rpb24gdGFrZW4gYnkKK0dvb2dsZSBNb2NrLCB5
b3UgY2FuIG92ZXJyaWRlIGl0IHVzaW5nIGBEZWZhdWx0VmFsdWU8VD46OlNldCgpYAorKGRlc2Ny
aWJlZCBsYXRlciBpbiB0aGlzIGRvY3VtZW50KSBvciBgT05fQ0FMTCgpYC4KKworUGxlYXNlIG5v
dGUgdGhhdCBvbmNlIHlvdSBleHByZXNzZWQgaW50ZXJlc3QgaW4gYSBwYXJ0aWN1bGFyIG1vY2sK
K21ldGhvZCAodmlhIGBFWFBFQ1RfQ0FMTCgpYCksIGFsbCBpbnZvY2F0aW9ucyB0byBpdCBtdXN0
IG1hdGNoIHNvbWUKK2V4cGVjdGF0aW9uLiBJZiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBidXQg
dGhlIGFyZ3VtZW50cyBkb24ndCBtYXRjaAorYW55IGBFWFBFQ1RfQ0FMTCgpYCBzdGF0ZW1lbnQs
IGl0IHdpbGwgYmUgYW4gZXJyb3IuCisKKyMjIERpc2FsbG93aW5nIFVuZXhwZWN0ZWQgQ2FsbHMg
IyMKKworSWYgYSBtb2NrIG1ldGhvZCBzaG91bGRuJ3QgYmUgY2FsbGVkIGF0IGFsbCwgZXhwbGlj
aXRseSBzYXkgc286CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpfOworLi4uCisgIEVYUEVDVF9D
QUxMKGZvbywgQmFyKF8pKQorICAgICAgLlRpbWVzKDApOworYGBgCisKK0lmIHNvbWUgY2FsbHMg
dG8gdGhlIG1ldGhvZCBhcmUgYWxsb3dlZCwgYnV0IHRoZSByZXN0IGFyZSBub3QsIGp1c3QKK2xp
c3QgYWxsIHRoZSBleHBlY3RlZCBjYWxsczoKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6OkFueU51
bWJlcjsKK3VzaW5nIDo6dGVzdGluZzo6R3Q7CisuLi4KKyAgRVhQRUNUX0NBTEwoZm9vLCBCYXIo
NSkpOworICBFWFBFQ1RfQ0FMTChmb28sIEJhcihHdCgxMCkpKQorICAgICAgLlRpbWVzKEFueU51
bWJlcigpKTsKK2BgYAorCitBIGNhbGwgdG8gYGZvby5CYXIoKWAgdGhhdCBkb2Vzbid0IG1hdGNo
IGFueSBvZiB0aGUgYEVYUEVDVF9DQUxMKClgCitzdGF0ZW1lbnRzIHdpbGwgYmUgYW4gZXJyb3Iu
CisKKyMjIEV4cGVjdGluZyBPcmRlcmVkIENhbGxzICMjCisKK0FsdGhvdWdoIGFuIGBFWFBFQ1Rf
Q0FMTCgpYCBzdGF0ZW1lbnQgZGVmaW5lZCBlYXJsaWVyIHRha2VzIHByZWNlZGVuY2UKK3doZW4g
R29vZ2xlIE1vY2sgdHJpZXMgdG8gbWF0Y2ggYSBmdW5jdGlvbiBjYWxsIHdpdGggYW4gZXhwZWN0
YXRpb24sCitieSBkZWZhdWx0IGNhbGxzIGRvbid0IGhhdmUgdG8gaGFwcGVuIGluIHRoZSBvcmRl
ciBgRVhQRUNUX0NBTEwoKWAKK3N0YXRlbWVudHMgYXJlIHdyaXR0ZW4uIEZvciBleGFtcGxlLCBp
ZiB0aGUgYXJndW1lbnRzIG1hdGNoIHRoZQorbWF0Y2hlcnMgaW4gdGhlIHRoaXJkIGBFWFBFQ1Rf
Q0FMTCgpYCwgYnV0IG5vdCB0aG9zZSBpbiB0aGUgZmlyc3QgdHdvLAordGhlbiB0aGUgdGhpcmQg
ZXhwZWN0YXRpb24gd2lsbCBiZSB1c2VkLgorCitJZiB5b3Ugd291bGQgcmF0aGVyIGhhdmUgYWxs
IGNhbGxzIG9jY3VyIGluIHRoZSBvcmRlciBvZiB0aGUKK2V4cGVjdGF0aW9ucywgcHV0IHRoZSBg
RVhQRUNUX0NBTEwoKWAgc3RhdGVtZW50cyBpbiBhIGJsb2NrIHdoZXJlIHlvdQorZGVmaW5lIGEg
dmFyaWFibGUgb2YgdHlwZSBgSW5TZXF1ZW5jZWA6CisKK2BgYAorICB1c2luZyA6OnRlc3Rpbmc6
Ol87CisgIHVzaW5nIDo6dGVzdGluZzo6SW5TZXF1ZW5jZTsKKworICB7CisgICAgSW5TZXF1ZW5j
ZSBzOworCisgICAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoaXMoNSkpOworICAgIEVYUEVDVF9DQUxM
KGJhciwgRG9UaGF0KF8pKQorICAgICAgICAuVGltZXMoMik7CisgICAgRVhQRUNUX0NBTEwoZm9v
LCBEb1RoaXMoNikpOworICB9CitgYGAKKworSW4gdGhpcyBleGFtcGxlLCB3ZSBleHBlY3QgYSBj
YWxsIHRvIGBmb28uRG9UaGlzKDUpYCwgZm9sbG93ZWQgYnkgdHdvCitjYWxscyB0byBgYmFyLkRv
VGhhdCgpYCB3aGVyZSB0aGUgYXJndW1lbnQgY2FuIGJlIGFueXRoaW5nLCB3aGljaCBhcmUKK2lu
IHR1cm4gZm9sbG93ZWQgYnkgYSBjYWxsIHRvIGBmb28uRG9UaGlzKDYpYC4gSWYgYSBjYWxsIG9j
Y3VycmVkCitvdXQtb2Ytb3JkZXIsIEdvb2dsZSBNb2NrIHdpbGwgcmVwb3J0IGFuIGVycm9yLgor
CisjIyBFeHBlY3RpbmcgUGFydGlhbGx5IE9yZGVyZWQgQ2FsbHMgIyMKKworU29tZXRpbWVzIHJl
cXVpcmluZyBldmVyeXRoaW5nIHRvIG9jY3VyIGluIGEgcHJlZGV0ZXJtaW5lZCBvcmRlciBjYW4K
K2xlYWQgdG8gYnJpdHRsZSB0ZXN0cy4gRm9yIGV4YW1wbGUsIHdlIG1heSBjYXJlIGFib3V0IGBB
YCBvY2N1cnJpbmcKK2JlZm9yZSBib3RoIGBCYCBhbmQgYENgLCBidXQgYXJlbid0IGludGVyZXN0
ZWQgaW4gdGhlIHJlbGF0aXZlIG9yZGVyCitvZiBgQmAgYW5kIGBDYC4gSW4gdGhpcyBjYXNlLCB0
aGUgdGVzdCBzaG91bGQgcmVmbGVjdCBvdXIgcmVhbCBpbnRlbnQsCitpbnN0ZWFkIG9mIGJlaW5n
IG92ZXJseSBjb25zdHJhaW5pbmcuCisKK0dvb2dsZSBNb2NrIGFsbG93cyB5b3UgdG8gaW1wb3Nl
IGFuIGFyYml0cmFyeSBEQUcgKGRpcmVjdGVkIGFjeWNsaWMKK2dyYXBoKSBvbiB0aGUgY2FsbHMu
IE9uZSB3YXkgdG8gZXhwcmVzcyB0aGUgREFHIGlzIHRvIHVzZSB0aGUKK1tBZnRlcl0oVjFfNV9D
aGVhdFNoZWV0I1RoZV9BZnRlcl9DbGF1c2UubWQpIGNsYXVzZSBvZiBgRVhQRUNUX0NBTExgLgor
CitBbm90aGVyIHdheSBpcyB2aWEgdGhlIGBJblNlcXVlbmNlKClgIGNsYXVzZSAobm90IHRoZSBz
YW1lIGFzIHRoZQorYEluU2VxdWVuY2VgIGNsYXNzKSwgd2hpY2ggd2UgYm9ycm93ZWQgZnJvbSBq
TW9jayAyLiBJdCdzIGxlc3MKK2ZsZXhpYmxlIHRoYW4gYEFmdGVyKClgLCBidXQgbW9yZSBjb252
ZW5pZW50IHdoZW4geW91IGhhdmUgbG9uZyBjaGFpbnMKK29mIHNlcXVlbnRpYWwgY2FsbHMsIGFz
IGl0IGRvZXNuJ3QgcmVxdWlyZSB5b3UgdG8gY29tZSB1cCB3aXRoCitkaWZmZXJlbnQgbmFtZXMg
Zm9yIHRoZSBleHBlY3RhdGlvbnMgaW4gdGhlIGNoYWlucy4gIEhlcmUncyBob3cgaXQKK3dvcmtz
OgorCitJZiB3ZSB2aWV3IGBFWFBFQ1RfQ0FMTCgpYCBzdGF0ZW1lbnRzIGFzIG5vZGVzIGluIGEg
Z3JhcGgsIGFuZCBhZGQgYW4KK2VkZ2UgZnJvbSBub2RlIEEgdG8gbm9kZSBCIHdoZXJldmVyIEEg
bXVzdCBvY2N1ciBiZWZvcmUgQiwgd2UgY2FuIGdldAorYSBEQUcuIFdlIHVzZSB0aGUgdGVybSAi
c2VxdWVuY2UiIHRvIG1lYW4gYSBkaXJlY3RlZCBwYXRoIGluIHRoaXMKK0RBRy4gTm93LCBpZiB3
ZSBkZWNvbXBvc2UgdGhlIERBRyBpbnRvIHNlcXVlbmNlcywgd2UganVzdCBuZWVkIHRvIGtub3cK
K3doaWNoIHNlcXVlbmNlcyBlYWNoIGBFWFBFQ1RfQ0FMTCgpYCBiZWxvbmdzIHRvIGluIG9yZGVy
IHRvIGJlIGFibGUgdG8KK3JlY29uc3RydWN0IHRoZSBvcmdpbmFsIERBRy4KKworU28sIHRvIHNw
ZWNpZnkgdGhlIHBhcnRpYWwgb3JkZXIgb24gdGhlIGV4cGVjdGF0aW9ucyB3ZSBuZWVkIHRvIGRv
IHR3bwordGhpbmdzOiBmaXJzdCB0byBkZWZpbmUgc29tZSBgU2VxdWVuY2VgIG9iamVjdHMsIGFu
ZCB0aGVuIGZvciBlYWNoCitgRVhQRUNUX0NBTEwoKWAgc2F5IHdoaWNoIGBTZXF1ZW5jZWAgb2Jq
ZWN0cyBpdCBpcyBwYXJ0CitvZi4gRXhwZWN0YXRpb25zIGluIHRoZSBzYW1lIHNlcXVlbmNlIG11
c3Qgb2NjdXIgaW4gdGhlIG9yZGVyIHRoZXkgYXJlCit3cml0dGVuLiBGb3IgZXhhbXBsZSwKKwor
YGBgCisgIHVzaW5nIDo6dGVzdGluZzo6U2VxdWVuY2U7CisKKyAgU2VxdWVuY2UgczEsIHMyOwor
CisgIEVYUEVDVF9DQUxMKGZvbywgQSgpKQorICAgICAgLkluU2VxdWVuY2UoczEsIHMyKTsKKyAg
RVhQRUNUX0NBTEwoYmFyLCBCKCkpCisgICAgICAuSW5TZXF1ZW5jZShzMSk7CisgIEVYUEVDVF9D
QUxMKGJhciwgQygpKQorICAgICAgLkluU2VxdWVuY2UoczIpOworICBFWFBFQ1RfQ0FMTChmb28s
IEQoKSkKKyAgICAgIC5JblNlcXVlbmNlKHMyKTsKK2BgYAorCitzcGVjaWZpZXMgdGhlIGZvbGxv
d2luZyBEQUcgKHdoZXJlIGBzMWAgaXMgYEEgLT4gQmAsIGFuZCBgczJgIGlzIGBBIC0+CitDIC0+
IERgKToKKworYGBgCisgICAgICAgKy0tLT4gQgorICAgICAgIHwKKyAgQSAtLS18CisgICAgICAg
fAorICAgICAgICstLS0+IEMgLS0tPiBECitgYGAKKworVGhpcyBtZWFucyB0aGF0IEEgbXVzdCBv
Y2N1ciBiZWZvcmUgQiBhbmQgQywgYW5kIEMgbXVzdCBvY2N1ciBiZWZvcmUKK0QuIFRoZXJlJ3Mg
bm8gcmVzdHJpY3Rpb24gYWJvdXQgdGhlIG9yZGVyIG90aGVyIHRoYW4gdGhlc2UuCisKKyMjIENv
bnRyb2xsaW5nIFdoZW4gYW4gRXhwZWN0YXRpb24gUmV0aXJlcyAjIworCitXaGVuIGEgbW9jayBt
ZXRob2QgaXMgY2FsbGVkLCBHb29nbGUgTW9jayBvbmx5IGNvbnNpZGVyIGV4cGVjdGF0aW9ucwor
dGhhdCBhcmUgc3RpbGwgYWN0aXZlLiBBbiBleHBlY3RhdGlvbiBpcyBhY3RpdmUgd2hlbiBjcmVh
dGVkLCBhbmQKK2JlY29tZXMgaW5hY3RpdmUgKGFrYSBfcmV0aXJlc18pIHdoZW4gYSBjYWxsIHRo
YXQgaGFzIHRvIG9jY3VyIGxhdGVyCitoYXMgb2NjdXJyZWQuIEZvciBleGFtcGxlLCBpbgorCitg
YGAKKyAgdXNpbmcgOjp0ZXN0aW5nOjpfOworICB1c2luZyA6OnRlc3Rpbmc6OlNlcXVlbmNlOwor
CisgIFNlcXVlbmNlIHMxLCBzMjsKKworICBFWFBFQ1RfQ0FMTChsb2csIExvZyhXQVJOSU5HLCBf
LCAiRmlsZSB0b28gbGFyZ2UuIikpICAgICAvLyAjMQorICAgICAgLlRpbWVzKEFueU51bWJlcigp
KQorICAgICAgLkluU2VxdWVuY2UoczEsIHMyKTsKKyAgRVhQRUNUX0NBTEwobG9nLCBMb2coV0FS
TklORywgXywgIkRhdGEgc2V0IGlzIGVtcHR5LiIpKSAgLy8gIzIKKyAgICAgIC5JblNlcXVlbmNl
KHMxKTsKKyAgRVhQRUNUX0NBTEwobG9nLCBMb2coV0FSTklORywgXywgIlVzZXIgbm90IGZvdW5k
LiIpKSAgICAgLy8gIzMKKyAgICAgIC5JblNlcXVlbmNlKHMyKTsKK2BgYAorCithcyBzb29uIGFz
IGVpdGhlciAjMiBvciAjMyBpcyBtYXRjaGVkLCAjMSB3aWxsIHJldGlyZS4gSWYgYSB3YXJuaW5n
CitgIkZpbGUgdG9vIGxhcmdlLiJgIGlzIGxvZ2dlZCBhZnRlciB0aGlzLCBpdCB3aWxsIGJlIGFu
IGVycm9yLgorCitOb3RlIHRoYXQgYW4gZXhwZWN0YXRpb24gZG9lc24ndCByZXRpcmUgYXV0b21h
dGljYWxseSB3aGVuIGl0J3MKK3NhdHVyYXRlZC4gRm9yIGV4YW1wbGUsCisKK2BgYAordXNpbmcg
Ojp0ZXN0aW5nOjpfOworLi4uCisgIEVYUEVDVF9DQUxMKGxvZywgTG9nKFdBUk5JTkcsIF8sIF8p
KTsgICAgICAgICAgICAgICAgICAvLyAjMQorICBFWFBFQ1RfQ0FMTChsb2csIExvZyhXQVJOSU5H
LCBfLCAiRmlsZSB0b28gbGFyZ2UuIikpOyAgLy8gIzIKK2BgYAorCitzYXlzIHRoYXQgdGhlcmUg
d2lsbCBiZSBleGFjdGx5IG9uZSB3YXJuaW5nIHdpdGggdGhlIG1lc3NhZ2UgYCJGaWxlCit0b28g
bGFyZ2UuImAuIElmIHRoZSBzZWNvbmQgd2FybmluZyBjb250YWlucyB0aGlzIG1lc3NhZ2UgdG9v
LCAjMiB3aWxsCittYXRjaCBhZ2FpbiBhbmQgcmVzdWx0IGluIGFuIHVwcGVyLWJvdW5kLXZpb2xh
dGVkIGVycm9yLgorCitJZiB0aGlzIGlzIG5vdCB3aGF0IHlvdSB3YW50LCB5b3UgY2FuIGFzayBh
biBleHBlY3RhdGlvbiB0byByZXRpcmUgYXMKK3Nvb24gYXMgaXQgYmVjb21lcyBzYXR1cmF0ZWQ6
CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpfOworLi4uCisgIEVYUEVDVF9DQUxMKGxvZywgTG9n
KFdBUk5JTkcsIF8sIF8pKTsgICAgICAgICAgICAgICAgIC8vICMxCisgIEVYUEVDVF9DQUxMKGxv
ZywgTG9nKFdBUk5JTkcsIF8sICJGaWxlIHRvbyBsYXJnZS4iKSkgIC8vICMyCisgICAgICAuUmV0
aXJlc09uU2F0dXJhdGlvbigpOworYGBgCisKK0hlcmUgIzIgY2FuIGJlIHVzZWQgb25seSBvbmNl
LCBzbyBpZiB5b3UgaGF2ZSB0d28gd2FybmluZ3Mgd2l0aCB0aGUKK21lc3NhZ2UgYCJGaWxlIHRv
byBsYXJnZS4iYCwgdGhlIGZpcnN0IHdpbGwgbWF0Y2ggIzIgYW5kIHRoZSBzZWNvbmQKK3dpbGwg
bWF0Y2ggIzEgLSB0aGVyZSB3aWxsIGJlIG5vIGVycm9yLgorCisjIFVzaW5nIEFjdGlvbnMgIwor
CisjIyBSZXR1cm5pbmcgUmVmZXJlbmNlcyBmcm9tIE1vY2sgTWV0aG9kcyAjIworCitJZiBhIG1v
Y2sgZnVuY3Rpb24ncyByZXR1cm4gdHlwZSBpcyBhIHJlZmVyZW5jZSwgeW91IG5lZWQgdG8gdXNl
CitgUmV0dXJuUmVmKClgIGluc3RlYWQgb2YgYFJldHVybigpYCB0byByZXR1cm4gYSByZXN1bHQ6
CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm5SZWY7CisKK2NsYXNzIE1vY2tGb28gOiBw
dWJsaWMgRm9vIHsKKyBwdWJsaWM6CisgIE1PQ0tfTUVUSE9EMChHZXRCYXIsIEJhciYoKSk7Cit9
OworLi4uCisKKyAgTW9ja0ZvbyBmb287CisgIEJhciBiYXI7CisgIEVYUEVDVF9DQUxMKGZvbywg
R2V0QmFyKCkpCisgICAgICAuV2lsbE9uY2UoUmV0dXJuUmVmKGJhcikpOworYGBgCisKKyMjIENv
bWJpbmluZyBBY3Rpb25zICMjCisKK1dhbnQgdG8gZG8gbW9yZSB0aGFuIG9uZSB0aGluZyB3aGVu
IGEgZnVuY3Rpb24gaXMgY2FsbGVkPyBUaGF0J3MKK2ZpbmUuIGBEb0FsbCgpYCBhbGxvdyB5b3Ug
dG8gZG8gc2VxdWVuY2Ugb2YgYWN0aW9ucyBldmVyeSB0aW1lLiBPbmx5Cit0aGUgcmV0dXJuIHZh
bHVlIG9mIHRoZSBsYXN0IGFjdGlvbiBpbiB0aGUgc2VxdWVuY2Ugd2lsbCBiZSB1c2VkLgorCitg
YGAKK3VzaW5nIDo6dGVzdGluZzo6RG9BbGw7CisKK2NsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9v
IHsKKyBwdWJsaWM6CisgIE1PQ0tfTUVUSE9EMShCYXIsIGJvb2woaW50IG4pKTsKK307CisuLi4K
KworICBFWFBFQ1RfQ0FMTChmb28sIEJhcihfKSkKKyAgICAgIC5XaWxsT25jZShEb0FsbChhY3Rp
b25fMSwKKyAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25fMiwKKyAgICAgICAgICAgICAgICAg
ICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25fbikpOworYGBgCisKKyMjIE1v
Y2tpbmcgU2lkZSBFZmZlY3RzICMjCisKK1NvbWV0aW1lcyBhIG1ldGhvZCBleGhpYml0cyBpdHMg
ZWZmZWN0IG5vdCB2aWEgcmV0dXJuaW5nIGEgdmFsdWUgYnV0Cit2aWEgc2lkZSBlZmZlY3RzLiBG
b3IgZXhhbXBsZSwgaXQgbWF5IGNoYW5nZSBzb21lIGdsb2JhbCBzdGF0ZSBvcgorbW9kaWZ5IGFu
IG91dHB1dCBhcmd1bWVudC4gVG8gbW9jayBzaWRlIGVmZmVjdHMsIGluIGdlbmVyYWwgeW91IGNh
bgorZGVmaW5lIHlvdXIgb3duIGFjdGlvbiBieSBpbXBsZW1lbnRpbmcgYDo6dGVzdGluZzo6QWN0
aW9uSW50ZXJmYWNlYC4KKworSWYgYWxsIHlvdSBuZWVkIHRvIGRvIGlzIHRvIGNoYW5nZSBhbiBv
dXRwdXQgYXJndW1lbnQsIHRoZSBidWlsdC1pbgorYFNldEFyZ3VtZW50UG9pbnRlZSgpYCBhY3Rp
b24gaXMgY29udmVuaWVudDoKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6OlNldEFyZ3VtZW50UG9p
bnRlZTsKKworY2xhc3MgTW9ja011dGF0b3IgOiBwdWJsaWMgTXV0YXRvciB7CisgcHVibGljOgor
ICBNT0NLX01FVEhPRDIoTXV0YXRlLCB2b2lkKGJvb2wgbXV0YXRlLCBpbnQqIHZhbHVlKSk7Cisg
IC4uLgorfTsKKy4uLgorCisgIE1vY2tNdXRhdG9yIG11dGF0b3I7CisgIEVYUEVDVF9DQUxMKG11
dGF0b3IsIE11dGF0ZSh0cnVlLCBfKSkKKyAgICAgIC5XaWxsT25jZShTZXRBcmd1bWVudFBvaW50
ZWU8MT4oNSkpOworYGBgCisKK0luIHRoaXMgZXhhbXBsZSwgd2hlbiBgbXV0YXRvci5NdXRhdGUo
KWAgaXMgY2FsbGVkLCB3ZSB3aWxsIGFzc2lnbiA1Cit0byB0aGUgYGludGAgdmFyaWFibGUgcG9p
bnRlZCB0byBieSBhcmd1bWVudCAjMQorKDAtYmFzZWQpLgorCitgU2V0QXJndW1lbnRQb2ludGVl
KClgIGNvbnZlbmllbnRseSBtYWtlcyBhbiBpbnRlcm5hbCBjb3B5IG9mIHRoZQordmFsdWUgeW91
IHBhc3MgdG8gaXQsIHJlbW92aW5nIHRoZSBuZWVkIHRvIGtlZXAgdGhlIHZhbHVlIGluIHNjb3Bl
IGFuZAorYWxpdmUuIFRoZSBpbXBsaWNhdGlvbiBob3dldmVyIGlzIHRoYXQgdGhlIHZhbHVlIG11
c3QgaGF2ZSBhIGNvcHkKK2NvbnN0cnVjdG9yIGFuZCBhc3NpZ25tZW50IG9wZXJhdG9yLgorCitJ
ZiB0aGUgbW9jayBtZXRob2QgYWxzbyBuZWVkcyB0byByZXR1cm4gYSB2YWx1ZSBhcyB3ZWxsLCB5
b3UgY2FuIGNoYWluCitgU2V0QXJndW1lbnRQb2ludGVlKClgIHdpdGggYFJldHVybigpYCB1c2lu
ZyBgRG9BbGwoKWA6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpfOwordXNpbmcgOjp0ZXN0aW5n
OjpSZXR1cm47Cit1c2luZyA6OnRlc3Rpbmc6OlNldEFyZ3VtZW50UG9pbnRlZTsKKworY2xhc3Mg
TW9ja011dGF0b3IgOiBwdWJsaWMgTXV0YXRvciB7CisgcHVibGljOgorICAuLi4KKyAgTU9DS19N
RVRIT0QxKE11dGF0ZUludCwgYm9vbChpbnQqIHZhbHVlKSk7Cit9OworLi4uCisKKyAgTW9ja011
dGF0b3IgbXV0YXRvcjsKKyAgRVhQRUNUX0NBTEwobXV0YXRvciwgTXV0YXRlSW50KF8pKQorICAg
ICAgLldpbGxPbmNlKERvQWxsKFNldEFyZ3VtZW50UG9pbnRlZTwwPig1KSwKKyAgICAgICAgICAg
ICAgICAgICAgICBSZXR1cm4odHJ1ZSkpKTsKK2BgYAorCitJZiB0aGUgb3V0cHV0IGFyZ3VtZW50
IGlzIGFuIGFycmF5LCB1c2UgdGhlCitgU2V0QXJyYXlBcmd1bWVudDxOPihmaXJzdCwgbGFzdClg
IGFjdGlvbiBpbnN0ZWFkLiBJdCBjb3BpZXMgdGhlCitlbGVtZW50cyBpbiBzb3VyY2UgcmFuZ2Ug
YFtmaXJzdCwgbGFzdClgIHRvIHRoZSBhcnJheSBwb2ludGVkIHRvIGJ5Cit0aGUgYE5gLXRoICgw
LWJhc2VkKSBhcmd1bWVudDoKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6Ok5vdE51bGw7Cit1c2lu
ZyA6OnRlc3Rpbmc6OlNldEFycmF5QXJndW1lbnQ7CisKK2NsYXNzIE1vY2tBcnJheU11dGF0b3Ig
OiBwdWJsaWMgQXJyYXlNdXRhdG9yIHsKKyBwdWJsaWM6CisgIE1PQ0tfTUVUSE9EMihNdXRhdGUs
IHZvaWQoaW50KiB2YWx1ZXMsIGludCBudW1fdmFsdWVzKSk7CisgIC4uLgorfTsKKy4uLgorCisg
IE1vY2tBcnJheU11dGF0b3IgbXV0YXRvcjsKKyAgaW50IHZhbHVlc1s1XSA9IHsgMSwgMiwgMywg
NCwgNSB9OworICBFWFBFQ1RfQ0FMTChtdXRhdG9yLCBNdXRhdGUoTm90TnVsbCgpLCA1KSkKKyAg
ICAgIC5XaWxsT25jZShTZXRBcnJheUFyZ3VtZW50PDA+KHZhbHVlcywgdmFsdWVzICsgNSkpOwor
YGBgCisKK1RoaXMgYWxzbyB3b3JrcyB3aGVuIHRoZSBhcmd1bWVudCBpcyBhbiBvdXRwdXQgaXRl
cmF0b3I6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpfOwordXNpbmcgOjp0ZXN0aW5nOjpTZUFy
cmF5QXJndW1lbnQ7CisKK2NsYXNzIE1vY2tSb2xvZGV4IDogcHVibGljIFJvbG9kZXggeworIHB1
YmxpYzoKKyAgTU9DS19NRVRIT0QxKEdldE5hbWVzLCB2b2lkKHN0ZDo6YmFja19pbnNlcnRfaXRl
cmF0b3I8dmVjdG9yPHN0cmluZz4gPikpOworICAuLi4KK307CisuLi4KKworICBNb2NrUm9sb2Rl
eCByb2xvZGV4OworICB2ZWN0b3I8c3RyaW5nPiBuYW1lczsKKyAgbmFtZXMucHVzaF9iYWNrKCJH
ZW9yZ2UiKTsKKyAgbmFtZXMucHVzaF9iYWNrKCJKb2huIik7CisgIG5hbWVzLnB1c2hfYmFjaygi
VGhvbWFzIik7CisgIEVYUEVDVF9DQUxMKHJvbG9kZXgsIEdldE5hbWVzKF8pKQorICAgICAgLldp
bGxPbmNlKFNldEFycmF5QXJndW1lbnQ8MD4obmFtZXMuYmVnaW4oKSwgbmFtZXMuZW5kKCkpKTsK
K2BgYAorCisjIyBDaGFuZ2luZyBhIE1vY2sgT2JqZWN0J3MgQmVoYXZpb3IgQmFzZWQgb24gdGhl
IFN0YXRlICMjCisKK0lmIHlvdSBleHBlY3QgYSBjYWxsIHRvIGNoYW5nZSB0aGUgYmVoYXZpb3Ig
b2YgYSBtb2NrIG9iamVjdCwgeW91IGNhbiB1c2UgYDo6dGVzdGluZzo6SW5TZXF1ZW5jZWAgdG8g
c3BlY2lmeSBkaWZmZXJlbnQgYmVoYXZpb3JzIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIGNhbGw6CisK
K2BgYAordXNpbmcgOjp0ZXN0aW5nOjpJblNlcXVlbmNlOwordXNpbmcgOjp0ZXN0aW5nOjpSZXR1
cm47CisKKy4uLgorICB7CisgICAgSW5TZXF1ZW5jZSBzZXE7CisgICAgRVhQRUNUX0NBTEwobXlf
bW9jaywgSXNEaXJ0eSgpKQorICAgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKHRydWUpKTsK
KyAgICBFWFBFQ1RfQ0FMTChteV9tb2NrLCBGbHVzaCgpKTsKKyAgICBFWFBFQ1RfQ0FMTChteV9t
b2NrLCBJc0RpcnR5KCkpCisgICAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oZmFsc2UpKTsK
KyAgfQorICBteV9tb2NrLkZsdXNoSWZEaXJ0eSgpOworYGBgCisKK1RoaXMgbWFrZXMgYG15X21v
Y2suSXNEaXJ0eSgpYCByZXR1cm4gYHRydWVgIGJlZm9yZSBgbXlfbW9jay5GbHVzaCgpYCBpcyBj
YWxsZWQgYW5kIHJldHVybiBgZmFsc2VgIGFmdGVyd2FyZHMuCisKK0lmIHRoZSBiZWhhdmlvciBj
aGFuZ2UgaXMgbW9yZSBjb21wbGV4LCB5b3UgY2FuIHN0b3JlIHRoZSBlZmZlY3RzIGluIGEgdmFy
aWFibGUgYW5kIG1ha2UgYSBtb2NrIG1ldGhvZCBnZXQgaXRzIHJldHVybiB2YWx1ZSBmcm9tIHRo
YXQgdmFyaWFibGU6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpfOwordXNpbmcgOjp0ZXN0aW5n
OjpTYXZlQXJnOwordXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm47CisKK0FDVElPTl9QKFJldHVyblBv
aW50ZWUsIHApIHsgcmV0dXJuICpwOyB9CisuLi4KKyAgaW50IHByZXZpb3VzX3ZhbHVlID0gMDsK
KyAgRVhQRUNUX0NBTEwobXlfbW9jaywgR2V0UHJldlZhbHVlKCkpCisgICAgICAuV2lsbFJlcGVh
dGVkbHkoUmV0dXJuUG9pbnRlZSgmcHJldmlvdXNfdmFsdWUpKTsKKyAgRVhQRUNUX0NBTEwobXlf
bW9jaywgVXBkYXRlVmFsdWUoXykpCisgICAgICAuV2lsbFJlcGVhdGVkbHkoU2F2ZUFyZzwwPigm
cHJldmlvdXNfdmFsdWUpKTsKKyAgbXlfbW9jay5Eb1NvbWV0aGluZ1RvVXBkYXRlVmFsdWUoKTsK
K2BgYAorCitIZXJlIGBteV9tb2NrLkdldFByZXZWYWx1ZSgpYCB3aWxsIGFsd2F5cyByZXR1cm4g
dGhlIGFyZ3VtZW50IG9mIHRoZSBsYXN0IGBVcGRhdGVWYWx1ZSgpYCBjYWxsLgorCisjIyBTZXR0
aW5nIHRoZSBEZWZhdWx0IFZhbHVlIGZvciBhIFJldHVybiBUeXBlICMjCisKK0lmIGEgbW9jayBt
ZXRob2QncyByZXR1cm4gdHlwZSBpcyBhIGJ1aWx0LWluIEMrKyB0eXBlIG9yIHBvaW50ZXIsIGJ5
CitkZWZhdWx0IGl0IHdpbGwgcmV0dXJuIDAgd2hlbiBpbnZva2VkLiBZb3Ugb25seSBuZWVkIHRv
IHNwZWNpZnkgYW4KK2FjdGlvbiBpZiB0aGlzIGRlZmF1bHQgdmFsdWUgZG9lc24ndCB3b3JrIGZv
ciB5b3UuCisKK1NvbWV0aW1lcywgeW91IG1heSB3YW50IHRvIGNoYW5nZSB0aGlzIGRlZmF1bHQg
dmFsdWUsIG9yIHlvdSBtYXkgd2FudAordG8gc3BlY2lmeSBhIGRlZmF1bHQgdmFsdWUgZm9yIHR5
cGVzIEdvb2dsZSBNb2NrIGRvZXNuJ3Qga25vdworYWJvdXQuIFlvdSBjYW4gZG8gdGhpcyB1c2lu
ZyB0aGUgYDo6dGVzdGluZzo6RGVmYXVsdFZhbHVlYCBjbGFzcwordGVtcGxhdGU6CisKK2BgYAor
Y2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28geworIHB1YmxpYzoKKyAgTU9DS19NRVRIT0QwKENh
bGN1bGF0ZUJhciwgQmFyKCkpOworfTsKKy4uLgorCisgIEJhciBkZWZhdWx0X2JhcjsKKyAgLy8g
U2V0cyB0aGUgZGVmYXVsdCByZXR1cm4gdmFsdWUgZm9yIHR5cGUgQmFyLgorICBEZWZhdWx0VmFs
dWU8QmFyPjo6U2V0KGRlZmF1bHRfYmFyKTsKKworICBNb2NrRm9vIGZvbzsKKworICAvLyBXZSBk
b24ndCBuZWVkIHRvIHNwZWNpZnkgYW4gYWN0aW9uIGhlcmUsIGFzIHRoZSBkZWZhdWx0CisgIC8v
IHJldHVybiB2YWx1ZSB3b3JrcyBmb3IgdXMuCisgIEVYUEVDVF9DQUxMKGZvbywgQ2FsY3VsYXRl
QmFyKCkpOworCisgIGZvby5DYWxjdWxhdGVCYXIoKTsgIC8vIFRoaXMgc2hvdWxkIHJldHVybiBk
ZWZhdWx0X2Jhci4KKworICAvLyBVbnNldHMgdGhlIGRlZmF1bHQgcmV0dXJuIHZhbHVlLgorICBE
ZWZhdWx0VmFsdWU8QmFyPjo6Q2xlYXIoKTsKK2BgYAorCitQbGVhc2Ugbm90ZSB0aGF0IGNoYW5n
aW5nIHRoZSBkZWZhdWx0IHZhbHVlIGZvciBhIHR5cGUgY2FuIG1ha2UgeW91Cit0ZXN0cyBoYXJk
IHRvIHVuZGVyc3RhbmQuIFdlIHJlY29tbWVuZCB5b3UgdG8gdXNlIHRoaXMgZmVhdHVyZQoranVk
aWNpb3VzbHkuIEZvciBleGFtcGxlLCB5b3UgbWF5IHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBgU2V0
KClgIGFuZAorYENsZWFyKClgIGNhbGxzIGFyZSByaWdodCBuZXh0IHRvIHRoZSBjb2RlIHRoYXQg
dXNlcyB5b3VyIG1vY2suCisKKyMjIFNldHRpbmcgdGhlIERlZmF1bHQgQWN0aW9ucyBmb3IgYSBN
b2NrIE1ldGhvZCAjIworCitZb3UndmUgbGVhcm5lZCBob3cgdG8gY2hhbmdlIHRoZSBkZWZhdWx0
IHZhbHVlIG9mIGEgZ2l2ZW4KK3R5cGUuIEhvd2V2ZXIsIHRoaXMgbWF5IGJlIHRvbyBjb2Fyc2Ug
Zm9yIHlvdXIgcHVycG9zZTogcGVyaGFwcyB5b3UKK2hhdmUgdHdvIG1vY2sgbWV0aG9kcyB3aXRo
IHRoZSBzYW1lIHJldHVybiB0eXBlIGFuZCB5b3Ugd2FudCB0aGVtIHRvCitoYXZlIGRpZmZlcmVu
dCBiZWhhdmlvcnMuIFRoZSBgT05fQ0FMTCgpYCBtYWNybyBhbGxvd3MgeW91IHRvCitjdXN0b21p
emUgeW91ciBtb2NrJ3MgYmVoYXZpb3IgYXQgdGhlIG1ldGhvZCBsZXZlbDoKKworYGBgCit1c2lu
ZyA6OnRlc3Rpbmc6Ol87Cit1c2luZyA6OnRlc3Rpbmc6OkFueU51bWJlcjsKK3VzaW5nIDo6dGVz
dGluZzo6R3Q7Cit1c2luZyA6OnRlc3Rpbmc6OlJldHVybjsKKy4uLgorICBPTl9DQUxMKGZvbywg
U2lnbihfKSkKKyAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybigtMSkpOworICBPTl9DQUxMKGZv
bywgU2lnbigwKSkKKyAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybigwKSk7CisgIE9OX0NBTEwo
Zm9vLCBTaWduKEd0KDApKSkKKyAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybigxKSk7CisKKyAg
RVhQRUNUX0NBTEwoZm9vLCBTaWduKF8pKQorICAgICAgLlRpbWVzKEFueU51bWJlcigpKTsKKwor
ICBmb28uU2lnbig1KTsgICAvLyBUaGlzIHNob3VsZCByZXR1cm4gMS4KKyAgZm9vLlNpZ24oLTkp
OyAgLy8gVGhpcyBzaG91bGQgcmV0dXJuIC0xLgorICBmb28uU2lnbigwKTsgICAvLyBUaGlzIHNo
b3VsZCByZXR1cm4gMC4KK2BgYAorCitBcyB5b3UgbWF5IGhhdmUgZ3Vlc3NlZCwgd2hlbiB0aGVy
ZSBhcmUgbW9yZSB0aGFuIG9uZSBgT05fQ0FMTCgpYAorc3RhdGVtZW50cywgdGhlIG5ld3Mgb3Jk
ZXIgdGFrZSBwcmVjZWRlbmNlIG92ZXIgdGhlIG9sZGVyIG9uZXMuIEluCitvdGhlciB3b3Jkcywg
dGhlICoqbGFzdCoqIG9uZSB0aGF0IG1hdGNoZXMgdGhlIGZ1bmN0aW9uIGFyZ3VtZW50cyB3aWxs
CitiZSB1c2VkLiBUaGlzIG1hdGNoaW5nIG9yZGVyIGFsbG93cyB5b3UgdG8gc2V0IHVwIHRoZSBj
b21tb24gYmVoYXZpb3IKK2luIGEgbW9jayBvYmplY3QncyBjb25zdHJ1Y3RvciBvciB0aGUgdGVz
dCBmaXh0dXJlJ3Mgc2V0LXVwIHBoYXNlIGFuZAorc3BlY2lhbGl6ZSB0aGUgbW9jaydzIGJlaGF2
aW9yIGxhdGVyLgorCisjIyBVc2luZyBGdW5jdGlvbnMvTWV0aG9kcy9GdW5jdG9ycyBhcyBBY3Rp
b25zICMjCisKK0lmIHRoZSBidWlsdC1pbiBhY3Rpb25zIGRvbid0IHN1aXQgeW91LCB5b3UgY2Fu
IGVhc2lseSB1c2UgYW4gZXhpc3RpbmcKK2Z1bmN0aW9uLCBtZXRob2QsIG9yIGZ1bmN0b3IgYXMg
YW4gYWN0aW9uOgorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6XzsKK3VzaW5nIDo6dGVzdGluZzo6
SW52b2tlOworCitjbGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7CisgcHVibGljOgorICBNT0NL
X01FVEhPRDIoU3VtLCBpbnQoaW50IHgsIGludCB5KSk7CisgIE1PQ0tfTUVUSE9EMShDb21wbGV4
Sm9iLCBib29sKGludCB4KSk7Cit9OworCitpbnQgQ2FsY3VsYXRlU3VtKGludCB4LCBpbnQgeSkg
eyByZXR1cm4geCArIHk7IH0KKworY2xhc3MgSGVscGVyIHsKKyBwdWJsaWM6CisgIGJvb2wgQ29t
cGxleEpvYihpbnQgeCk7Cit9OworLi4uCisKKyAgTW9ja0ZvbyBmb287CisgIEhlbHBlciBoZWxw
ZXI7CisgIEVYUEVDVF9DQUxMKGZvbywgU3VtKF8sIF8pKQorICAgICAgLldpbGxPbmNlKEludm9r
ZShDYWxjdWxhdGVTdW0pKTsKKyAgRVhQRUNUX0NBTEwoZm9vLCBDb21wbGV4Sm9iKF8pKQorICAg
ICAgLldpbGxPbmNlKEludm9rZSgmaGVscGVyLCAmSGVscGVyOjpDb21wbGV4Sm9iKSk7CisKKyAg
Zm9vLlN1bSg1LCA2KTsgICAgICAgLy8gSW52b2tlcyBDYWxjdWxhdGVTdW0oNSwgNikuCisgIGZv
by5Db21wbGV4Sm9iKDEwKTsgIC8vIEludm9rZXMgaGVscGVyLkNvbXBsZXhKb2IoMTApOworYGBg
CisKK1RoZSBvbmx5IHJlcXVpcmVtZW50IGlzIHRoYXQgdGhlIHR5cGUgb2YgdGhlIGZ1bmN0aW9u
LCBldGMgbXVzdCBiZQorX2NvbXBhdGlibGVfIHdpdGggdGhlIHNpZ25hdHVyZSBvZiB0aGUgbW9j
ayBmdW5jdGlvbiwgbWVhbmluZyB0aGF0IHRoZQorbGF0dGVyJ3MgYXJndW1lbnRzIGNhbiBiZSBp
bXBsaWNpdGx5IGNvbnZlcnRlZCB0byB0aGUgY29ycmVzcG9uZGluZworYXJndW1lbnRzIG9mIHRo
ZSBmb3JtZXIsIGFuZCB0aGUgZm9ybWVyJ3MgcmV0dXJuIHR5cGUgY2FuIGJlCitpbXBsaWNpdGx5
IGNvbnZlcnRlZCB0byB0aGF0IG9mIHRoZSBsYXR0ZXIuIFNvLCB5b3UgY2FuIGludm9rZQorc29t
ZXRoaW5nIHdob3NlIHR5cGUgaXMgX25vdF8gZXhhY3RseSB0aGUgc2FtZSBhcyB0aGUgbW9jayBm
dW5jdGlvbiwKK2FzIGxvbmcgYXMgaXQncyBzYWZlIHRvIGRvIHNvIC0gbmljZSwgaHVoPworCisj
IyBJbnZva2luZyBhIEZ1bmN0aW9uL01ldGhvZC9GdW5jdG9yIFdpdGhvdXQgQXJndW1lbnRzICMj
CisKK2BJbnZva2UoKWAgaXMgdmVyeSB1c2VmdWwgZm9yIGRvaW5nIGFjdGlvbnMgdGhhdCBhcmUg
bW9yZSBjb21wbGV4LiBJdAorcGFzc2VzIHRoZSBtb2NrIGZ1bmN0aW9uJ3MgYXJndW1lbnRzIHRv
IHRoZSBmdW5jdGlvbiBvciBmdW5jdG9yIGJlaW5nCitpbnZva2VkIHN1Y2ggdGhhdCB0aGUgY2Fs
bGVlIGhhcyB0aGUgZnVsbCBjb250ZXh0IG9mIHRoZSBjYWxsIHRvIHdvcmsKK3dpdGguIElmIHRo
ZSBpbnZva2VkIGZ1bmN0aW9uIGlzIG5vdCBpbnRlcmVzdGVkIGluIHNvbWUgb3IgYWxsIG9mIHRo
ZQorYXJndW1lbnRzLCBpdCBjYW4gc2ltcGx5IGlnbm9yZSB0aGVtLgorCitZZXQsIGEgY29tbW9u
IHBhdHRlcm4gaXMgdGhhdCBhIHRlc3QgYXV0aG9yIHdhbnRzIHRvIGludm9rZSBhIGZ1bmN0aW9u
Cit3aXRob3V0IHRoZSBhcmd1bWVudHMgb2YgdGhlIG1vY2sgZnVuY3Rpb24uIGBJbnZva2UoKWAg
YWxsb3dzIGhlciB0bworZG8gdGhhdCB1c2luZyBhIHdyYXBwZXIgZnVuY3Rpb24gdGhhdCB0aHJv
d3MgYXdheSB0aGUgYXJndW1lbnRzIGJlZm9yZQoraW52b2tpbmcgYW4gdW5kZXJsaW5pbmcgbnVs
bGFyeSBmdW5jdGlvbi4gTmVlZGxlc3MgdG8gc2F5LCB0aGlzIGNhbiBiZQordGVkaW91cyBhbmQg
b2JzY3VyZXMgdGhlIGludGVudCBvZiB0aGUgdGVzdC4KKworYEludm9rZVdpdGhvdXRBcmdzKClg
IHNvbHZlcyB0aGlzIHByb2JsZW0uIEl0J3MgbGlrZSBgSW52b2tlKClgIGV4Y2VwdAordGhhdCBp
dCBkb2Vzbid0IHBhc3MgdGhlIG1vY2sgZnVuY3Rpb24ncyBhcmd1bWVudHMgdG8gdGhlCitjYWxs
ZWUuIEhlcmUncyBhbiBleGFtcGxlOgorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6XzsKK3VzaW5n
IDo6dGVzdGluZzo6SW52b2tlV2l0aG91dEFyZ3M7CisKK2NsYXNzIE1vY2tGb28gOiBwdWJsaWMg
Rm9vIHsKKyBwdWJsaWM6CisgIE1PQ0tfTUVUSE9EMShDb21wbGV4Sm9iLCBib29sKGludCBuKSk7
Cit9OworCitib29sIEpvYjEoKSB7IC4uLiB9CisuLi4KKworICBNb2NrRm9vIGZvbzsKKyAgRVhQ
RUNUX0NBTEwoZm9vLCBDb21wbGV4Sm9iKF8pKQorICAgICAgLldpbGxPbmNlKEludm9rZVdpdGhv
dXRBcmdzKEpvYjEpKTsKKworICBmb28uQ29tcGxleEpvYigxMCk7ICAvLyBJbnZva2VzIEpvYjEo
KS4KK2BgYAorCisjIyBJbnZva2luZyBhbiBBcmd1bWVudCBvZiB0aGUgTW9jayBGdW5jdGlvbiAj
IworCitTb21ldGltZXMgYSBtb2NrIGZ1bmN0aW9uIHdpbGwgcmVjZWl2ZSBhIGZ1bmN0aW9uIHBv
aW50ZXIgb3IgYSBmdW5jdG9yCisoaW4gb3RoZXIgd29yZHMsIGEgImNhbGxhYmxlIikgYXMgYW4g
YXJndW1lbnQsIGUuZy4KKworYGBgCitjbGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7CisgcHVi
bGljOgorICBNT0NLX01FVEhPRDIoRG9UaGlzLCBib29sKGludCBuLCBib29sICgqZnApKGludCkp
KTsKK307CitgYGAKKworYW5kIHlvdSBtYXkgd2FudCB0byBpbnZva2UgdGhpcyBjYWxsYWJsZSBh
cmd1bWVudDoKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6Ol87CisuLi4KKyAgTW9ja0ZvbyBmb287
CisgIEVYUEVDVF9DQUxMKGZvbywgRG9UaGlzKF8sIF8pKQorICAgICAgLldpbGxPbmNlKC4uLik7
CisgIC8vIFdpbGwgZXhlY3V0ZSAoKmZwKSg1KSwgd2hlcmUgZnAgaXMgdGhlCisgIC8vIHNlY29u
ZCBhcmd1bWVudCBEb1RoaXMoKSByZWNlaXZlcy4KK2BgYAorCitBcmdoaCwgeW91IG5lZWQgdG8g
cmVmZXIgdG8gYSBtb2NrIGZ1bmN0aW9uIGFyZ3VtZW50IGJ1dCBDKysgaGFzIG5vCitsYW1iZGEg
KHlldCksIHNvIHlvdSBoYXZlIHRvIGRlZmluZSB5b3VyIG93biBhY3Rpb24uIDotKCBPciBkbyB5
b3UKK3JlYWxseT8KKworV2VsbCwgR29vZ2xlIE1vY2sgaGFzIGFuIGFjdGlvbiB0byBzb2x2ZSBf
ZXhhY3RseV8gdGhpcyBwcm9ibGVtOgorCitgYGAKKyAgSW52b2tlQXJndW1lbnQ8Tj4oYXJnXzEs
IGFyZ18yLCAuLi4sIGFyZ19tKQorYGBgCisKK3dpbGwgaW52b2tlIHRoZSBgTmAtdGggKDAtYmFz
ZWQpIGFyZ3VtZW50IHRoZSBtb2NrIGZ1bmN0aW9uIHJlY2VpdmVzLAord2l0aCBgYXJnXzFgLCBg
YXJnXzJgLCAuLi4sIGFuZCBgYXJnX21gLiBObyBtYXR0ZXIgaWYgdGhlIGFyZ3VtZW50IGlzCith
IGZ1bmN0aW9uIHBvaW50ZXIgb3IgYSBmdW5jdG9yLCBHb29nbGUgTW9jayBoYW5kbGVzIHRoZW0g
Ym90aC4KKworV2l0aCB0aGF0LCB5b3UgY291bGQgd3JpdGU6CisKK2BgYAordXNpbmcgOjp0ZXN0
aW5nOjpfOwordXNpbmcgOjp0ZXN0aW5nOjpJbnZva2VBcmd1bWVudDsKKy4uLgorICBFWFBFQ1Rf
Q0FMTChmb28sIERvVGhpcyhfLCBfKSkKKyAgICAgIC5XaWxsT25jZShJbnZva2VBcmd1bWVudDwx
Pig1KSk7CisgIC8vIFdpbGwgZXhlY3V0ZSAoKmZwKSg1KSwgd2hlcmUgZnAgaXMgdGhlCisgIC8v
IHNlY29uZCBhcmd1bWVudCBEb1RoaXMoKSByZWNlaXZlcy4KK2BgYAorCitXaGF0IGlmIHRoZSBj
YWxsYWJsZSB0YWtlcyBhbiBhcmd1bWVudCBieSByZWZlcmVuY2U/IE5vIHByb2JsZW0gLSBqdXN0
Cit3cmFwIGl0IGluc2lkZSBgQnlSZWYoKWA6CisKK2BgYAorLi4uCisgIE1PQ0tfTUVUSE9EMShC
YXIsIGJvb2woYm9vbCAoKmZwKShpbnQsIGNvbnN0IEhlbHBlciYpKSk7CisuLi4KK3VzaW5nIDo6
dGVzdGluZzo6XzsKK3VzaW5nIDo6dGVzdGluZzo6QnlSZWY7Cit1c2luZyA6OnRlc3Rpbmc6Oklu
dm9rZUFyZ3VtZW50OworLi4uCisKKyAgTW9ja0ZvbyBmb287CisgIEhlbHBlciBoZWxwZXI7Cisg
IC4uLgorICBFWFBFQ1RfQ0FMTChmb28sIEJhcihfKSkKKyAgICAgIC5XaWxsT25jZShJbnZva2VB
cmd1bWVudDwwPig1LCBCeVJlZihoZWxwZXIpKSk7CisgIC8vIEJ5UmVmKGhlbHBlcikgZ3VhcmFu
dGVlcyB0aGF0IGEgcmVmZXJlbmNlIHRvIGhlbHBlciwgbm90IGEgY29weSBvZiBpdCwKKyAgLy8g
d2lsbCBiZSBwYXNzZWQgdG8gdGhlIGNhbGxhYmxlLgorYGBgCisKK1doYXQgaWYgdGhlIGNhbGxh
YmxlIHRha2VzIGFuIGFyZ3VtZW50IGJ5IHJlZmVyZW5jZSBhbmQgd2UgZG8gKipub3QqKgord3Jh
cCB0aGUgYXJndW1lbnQgaW4gYEJ5UmVmKClgPyBUaGVuIGBJbnZva2VBcmd1bWVudCgpYCB3aWxs
IF9tYWtlIGEKK2NvcHlfIG9mIHRoZSBhcmd1bWVudCwgYW5kIHBhc3MgYSBfcmVmZXJlbmNlIHRv
IHRoZSBjb3B5XywgaW5zdGVhZCBvZgorYSByZWZlcmVuY2UgdG8gdGhlIG9yaWdpbmFsIHZhbHVl
LCB0byB0aGUgY2FsbGFibGUuIFRoaXMgaXMgZXNwZWNpYWxseQoraGFuZHkgd2hlbiB0aGUgYXJn
dW1lbnQgaXMgYSB0ZW1wb3JhcnkgdmFsdWU6CisKK2BgYAorLi4uCisgIE1PQ0tfTUVUSE9EMShE
b1RoYXQsIGJvb2woYm9vbCAoKmYpKGNvbnN0IGRvdWJsZSYgeCwgY29uc3Qgc3RyaW5nJiBzKSkp
OworLi4uCit1c2luZyA6OnRlc3Rpbmc6Ol87Cit1c2luZyA6OnRlc3Rpbmc6Okludm9rZUFyZ3Vt
ZW50OworLi4uCisKKyAgTW9ja0ZvbyBmb287CisgIC4uLgorICBFWFBFQ1RfQ0FMTChmb28sIERv
VGhhdChfKSkKKyAgICAgIC5XaWxsT25jZShJbnZva2VBcmd1bWVudDwwPig1LjAsIHN0cmluZygi
SGkiKSkpOworICAvLyBXaWxsIGV4ZWN1dGUgKCpmKSg1LjAsIHN0cmluZygiSGkiKSksIHdoZXJl
IGYgaXMgdGhlIGZ1bmN0aW9uIHBvaW50ZXIKKyAgLy8gRG9UaGF0KCkgcmVjZWl2ZXMuICBOb3Rl
IHRoYXQgdGhlIHZhbHVlcyA1LjAgYW5kIHN0cmluZygiSGkiKSBhcmUKKyAgLy8gdGVtcG9yYXJ5
IGFuZCBkZWFkIG9uY2UgdGhlIEVYUEVDVF9DQUxMKCkgc3RhdGVtZW50IGZpbmlzaGVzLiAgWWV0
CisgIC8vIGl0J3MgZmluZSB0byBwZXJmb3JtIHRoaXMgYWN0aW9uIGxhdGVyLCBzaW5jZSBhIGNv
cHkgb2YgdGhlIHZhbHVlcworICAvLyBhcmUga2VwdCBpbnNpZGUgdGhlIEludm9rZUFyZ3VtZW50
IGFjdGlvbi4KK2BgYAorCisjIyBJZ25vcmluZyBhbiBBY3Rpb24ncyBSZXN1bHQgIyMKKworU29t
ZXRpbWVzIHlvdSBoYXZlIGFuIGFjdGlvbiB0aGF0IHJldHVybnMgX3NvbWV0aGluZ18sIGJ1dCB5
b3UgbmVlZCBhbgorYWN0aW9uIHRoYXQgcmV0dXJucyBgdm9pZGAgKHBlcmhhcHMgeW91IHdhbnQg
dG8gdXNlIGl0IGluIGEgbW9jaworZnVuY3Rpb24gdGhhdCByZXR1cm5zIGB2b2lkYCwgb3IgcGVy
aGFwcyBpdCBuZWVkcyB0byBiZSB1c2VkIGluCitgRG9BbGwoKWAgYW5kIGl0J3Mgbm90IHRoZSBs
YXN0IGluIHRoZSBsaXN0KS4gYElnbm9yZVJlc3VsdCgpYCBsZXRzCit5b3UgZG8gdGhhdC4gRm9y
IGV4YW1wbGU6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpfOwordXNpbmcgOjp0ZXN0aW5nOjpJ
bnZva2U7Cit1c2luZyA6OnRlc3Rpbmc6OlJldHVybjsKKworaW50IFByb2Nlc3MoY29uc3QgTXlE
YXRhJiBkYXRhKTsKK3N0cmluZyBEb1NvbWV0aGluZygpOworCitjbGFzcyBNb2NrRm9vIDogcHVi
bGljIEZvbyB7CisgcHVibGljOgorICBNT0NLX01FVEhPRDEoQWJjLCB2b2lkKGNvbnN0IE15RGF0
YSYgZGF0YSkpOworICBNT0NLX01FVEhPRDAoWHl6LCBib29sKCkpOworfTsKKy4uLgorCisgIE1v
Y2tGb28gZm9vOworICBFWFBFQ1RfQ0FMTChmb28sIEFiYyhfKSkKKyAgLy8gLldpbGxPbmNlKElu
dm9rZShQcm9jZXNzKSk7CisgIC8vIFRoZSBhYm92ZSBsaW5lIHdvbid0IGNvbXBpbGUgYXMgUHJv
Y2VzcygpIHJldHVybnMgaW50IGJ1dCBBYmMoKSBuZWVkcworICAvLyB0byByZXR1cm4gdm9pZC4K
KyAgICAgIC5XaWxsT25jZShJZ25vcmVSZXN1bHQoSW52b2tlKFByb2Nlc3MpKSk7CisKKyAgRVhQ
RUNUX0NBTEwoZm9vLCBYeXooKSkKKyAgICAgIC5XaWxsT25jZShEb0FsbChJZ25vcmVSZXN1bHQo
SW52b2tlKERvU29tZXRoaW5nKSksCisgICAgICAvLyBJZ25vcmVzIHRoZSBzdHJpbmcgRG9Tb21l
dGhpbmcoKSByZXR1cm5zLgorICAgICAgICAgICAgICAgICAgICAgIFJldHVybih0cnVlKSkpOwor
YGBgCisKK05vdGUgdGhhdCB5b3UgKipjYW5ub3QqKiB1c2UgYElnbm9yZVJlc3VsdCgpYCBvbiBh
biBhY3Rpb24gdGhhdCBhbHJlYWR5CityZXR1cm5zIGB2b2lkYC4gRG9pbmcgc28gd2lsbCBsZWFk
IHRvIHVnbHkgY29tcGlsZXIgZXJyb3JzLgorCisjIyBTZWxlY3RpbmcgYW4gQWN0aW9uJ3MgQXJn
dW1lbnRzICMjCisKK1NheSB5b3UgaGF2ZSBhIG1vY2sgZnVuY3Rpb24gYEZvbygpYCB0aGF0IHRh
a2VzIHNldmVuIGFyZ3VtZW50cywgYW5kCit5b3UgaGF2ZSBhIGN1c3RvbSBhY3Rpb24gdGhhdCB5
b3Ugd2FudCB0byBpbnZva2Ugd2hlbiBgRm9vKClgIGlzCitjYWxsZWQuIFRyb3VibGUgaXMsIHRo
ZSBjdXN0b20gYWN0aW9uIG9ubHkgd2FudHMgdGhyZWUgYXJndW1lbnRzOgorCitgYGAKK3VzaW5n
IDo6dGVzdGluZzo6XzsKK3VzaW5nIDo6dGVzdGluZzo6SW52b2tlOworLi4uCisgIE1PQ0tfTUVU
SE9ENyhGb28sIGJvb2woYm9vbCB2aXNpYmxlLCBjb25zdCBzdHJpbmcmIG5hbWUsIGludCB4LCBp
bnQgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXA8cGFpcjxpbnQsIGludD4s
IGRvdWJsZT4mIHdlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgbWluX3dl
aWdodCwgZG91YmxlIG1heF93aWdodCkpOworLi4uCisKK2Jvb2wgSXNWaXNpYmxlSW5RdWFkcmFu
dDEoYm9vbCB2aXNpYmxlLCBpbnQgeCwgaW50IHkpIHsKKyAgcmV0dXJuIHZpc2libGUgJiYgeCA+
PSAwICYmIHkgPj0gMDsKK30KKy4uLgorCisgIEVYUEVDVF9DQUxMKG1vY2ssIEZvbyhfLCBfLCBf
LCBfLCBfLCBfLCBfKSkKKyAgICAgIC5XaWxsT25jZShJbnZva2UoSXNWaXNpYmxlSW5RdWFkcmFu
dDEpKTsgIC8vIFVoLCB3b24ndCBjb21waWxlLiA6LSgKK2BgYAorCitUbyBwbGVhc2UgdGhlIGNv
bXBpbGVyIEdvZCwgeW91IGNhbiB0byBkZWZpbmUgYW4gImFkYXB0b3IiIHRoYXQgaGFzCit0aGUg
c2FtZSBzaWduYXR1cmUgYXMgYEZvbygpYCBhbmQgY2FsbHMgdGhlIGN1c3RvbSBhY3Rpb24gd2l0
aCB0aGUKK3JpZ2h0IGFyZ3VtZW50czoKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6Ol87Cit1c2lu
ZyA6OnRlc3Rpbmc6Okludm9rZTsKKworYm9vbCBNeUlzVmlzaWJsZUluUXVhZHJhbnQxKGJvb2wg
dmlzaWJsZSwgY29uc3Qgc3RyaW5nJiBuYW1lLCBpbnQgeCwgaW50IHksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgbWFwPHBhaXI8aW50LCBpbnQ+LCBkb3VibGU+JiB3ZWlnaHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIG1pbl93ZWlnaHQsIGRvdWJsZSBt
YXhfd2lnaHQpIHsKKyAgcmV0dXJuIElzVmlzaWJsZUluUXVhZHJhbnQxKHZpc2libGUsIHgsIHkp
OworfQorLi4uCisKKyAgRVhQRUNUX0NBTEwobW9jaywgRm9vKF8sIF8sIF8sIF8sIF8sIF8sIF8p
KQorICAgICAgLldpbGxPbmNlKEludm9rZShNeUlzVmlzaWJsZUluUXVhZHJhbnQxKSk7ICAvLyBO
b3cgaXQgd29ya3MuCitgYGAKKworQnV0IGlzbid0IHRoaXMgYXdrd2FyZD8KKworR29vZ2xlIE1v
Y2sgcHJvdmlkZXMgYSBnZW5lcmljIF9hY3Rpb24gYWRhcHRvcl8sIHNvIHlvdSBjYW4gc3BlbmQg
eW91cgordGltZSBtaW5kaW5nIG1vcmUgaW1wb3J0YW50IGJ1c2luZXNzIHRoYW4gd3JpdGluZyB5
b3VyIG93bgorYWRhcHRvcnMuIEhlcmUncyB0aGUgc3ludGF4OgorCitgYGAKKyAgV2l0aEFyZ3M8
TjEsIE4yLCAuLi4sIE5rPihhY3Rpb24pCitgYGAKKworY3JlYXRlcyBhbiBhY3Rpb24gdGhhdCBw
YXNzZXMgdGhlIGFyZ3VtZW50cyBvZiB0aGUgbW9jayBmdW5jdGlvbiBhdAordGhlIGdpdmVuIGlu
ZGljZXMgKDAtYmFzZWQpIHRvIHRoZSBpbm5lciBgYWN0aW9uYCBhbmQgcGVyZm9ybXMKK2l0LiBV
c2luZyBgV2l0aEFyZ3NgLCBvdXIgb3JpZ2luYWwgZXhhbXBsZSBjYW4gYmUgd3JpdHRlbiBhczoK
KworYGBgCit1c2luZyA6OnRlc3Rpbmc6Ol87Cit1c2luZyA6OnRlc3Rpbmc6Okludm9rZTsKK3Vz
aW5nIDo6dGVzdGluZzo6V2l0aEFyZ3M7CisuLi4KKyAgRVhQRUNUX0NBTEwobW9jaywgRm9vKF8s
IF8sIF8sIF8sIF8sIF8sIF8pKQorICAgICAgLldpbGxPbmNlKFdpdGhBcmdzPDAsIDIsIDM+KElu
dm9rZShJc1Zpc2libGVJblF1YWRyYW50MSkpKTsKKyAgICAgIC8vIE5vIG5lZWQgdG8gZGVmaW5l
IHlvdXIgb3duIGFkYXB0b3IuCitgYGAKKworRm9yIGJldHRlciByZWFkYWJpbGl0eSwgR29vZ2xl
IE1vY2sgYWxzbyBnaXZlcyB5b3U6CisKKyAgKiBgV2l0aG91dEFyZ3MoYWN0aW9uKWAgd2hlbiB0
aGUgaW5uZXIgYGFjdGlvbmAgdGFrZXMgX25vXyBhcmd1bWVudCwgYW5kCisgICogYFdpdGhBcmc8
Tj4oYWN0aW9uKWAgKG5vIGBzYCBhZnRlciBgQXJnYCkgd2hlbiB0aGUgaW5uZXIgYGFjdGlvbmAg
dGFrZXMgX29uZV8gYXJndW1lbnQuCisKK0FzIHlvdSBtYXkgaGF2ZSByZWFsaXplZCwgYEludm9r
ZVdpdGhvdXRBcmdzKC4uLilgIGlzIGp1c3Qgc3ludGFjdGljCitzdWdhciBmb3IgYFdpdGhvdXRB
cmdzKElub3ZrZSguLi4pKWAuCisKK0hlcmUgYXJlIG1vcmUgdGlwczoKKworICAqIFRoZSBpbm5l
ciBhY3Rpb24gdXNlZCBpbiBgV2l0aEFyZ3NgIGFuZCBmcmllbmRzIGRvZXMgbm90IGhhdmUgdG8g
YmUgYEludm9rZSgpYCAtLSBpdCBjYW4gYmUgYW55dGhpbmcuCisgICogWW91IGNhbiByZXBlYXQg
YW4gYXJndW1lbnQgaW4gdGhlIGFyZ3VtZW50IGxpc3QgaWYgbmVjZXNzYXJ5LCBlLmcuIGBXaXRo
QXJnczwyLCAzLCAzLCA1PiguLi4pYC4KKyAgKiBZb3UgY2FuIGNoYW5nZSB0aGUgb3JkZXIgb2Yg
dGhlIGFyZ3VtZW50cywgZS5nLiBgV2l0aEFyZ3M8MywgMiwgMT4oLi4uKWAuCisgICogVGhlIHR5
cGVzIG9mIHRoZSBzZWxlY3RlZCBhcmd1bWVudHMgZG8gX25vdF8gaGF2ZSB0byBtYXRjaCB0aGUg
c2lnbmF0dXJlIG9mIHRoZSBpbm5lciBhY3Rpb24gZXhhY3RseS4gSXQgd29ya3MgYXMgbG9uZyBh
cyB0aGV5IGNhbiBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byB0aGUgY29ycmVzcG9uZGluZyBh
cmd1bWVudHMgb2YgdGhlIGlubmVyIGFjdGlvbi4gRm9yIGV4YW1wbGUsIGlmIHRoZSA0LXRoIGFy
Z3VtZW50IG9mIHRoZSBtb2NrIGZ1bmN0aW9uIGlzIGFuIGBpbnRgIGFuZCBgbXlfYWN0aW9uYCB0
YWtlcyBhIGBkb3VibGVgLCBgV2l0aEFyZzw0PihteV9hY3Rpb24pYCB3aWxsIHdvcmsuCisKKyMj
IElnbm9yaW5nIEFyZ3VtZW50cyBpbiBBY3Rpb24gRnVuY3Rpb25zICMjCisKK1RoZSBzZWxlY3Rp
bmctYW4tYWN0aW9uJ3MtYXJndW1lbnRzIHJlY2lwZSBzaG93ZWQgdXMgb25lIHdheSB0byBtYWtl
IGEKK21vY2sgZnVuY3Rpb24gYW5kIGFuIGFjdGlvbiB3aXRoIGluY29tcGF0aWJsZSBhcmd1bWVu
dCBsaXN0cyBmaXQKK3RvZ2V0aGVyLiBUaGUgZG93bnNpZGUgaXMgdGhhdCB3cmFwcGluZyB0aGUg
YWN0aW9uIGluCitgV2l0aEFyZ3M8Li4uPigpYCBjYW4gZ2V0IHRlZGlvdXMgZm9yIHBlb3BsZSB3
cml0aW5nIHRoZSB0ZXN0cy4KKworSWYgeW91IGFyZSBkZWZpbmluZyBhIGZ1bmN0aW9uLCBtZXRo
b2QsIG9yIGZ1bmN0b3IgdG8gYmUgdXNlZCB3aXRoCitgSW52b2tlKigpYCwgYW5kIHlvdSBhcmUg
bm90IGludGVyZXN0ZWQgaW4gc29tZSBvZiBpdHMgYXJndW1lbnRzLCBhbgorYWx0ZXJuYXRpdmUg
dG8gYFdpdGhBcmdzYCBpcyB0byBkZWNsYXJlIHRoZSB1bmludGVyZXN0aW5nIGFyZ3VtZW50cyBh
cworYFVudXNlZGAuIFRoaXMgbWFrZXMgdGhlIGRlZmluaXRpb24gbGVzcyBjbHV0dGVyZWQgYW5k
IGxlc3MgZnJhZ2lsZSBpbgorY2FzZSB0aGUgdHlwZXMgb2YgdGhlIHVuaW50ZXJlc3RpbmcgYXJn
dW1lbnRzIGNoYW5nZS4gSXQgY291bGQgYWxzbworaW5jcmVhc2UgdGhlIGNoYW5jZSB0aGUgYWN0
aW9uIGZ1bmN0aW9uIGNhbiBiZSByZXVzZWQuIEZvciBleGFtcGxlLAorZ2l2ZW4KKworYGBgCisg
IE1PQ0tfTUVUSE9EMyhGb28sIGRvdWJsZShjb25zdCBzdHJpbmcmIGxhYmVsLCBkb3VibGUgeCwg
ZG91YmxlIHkpKTsKKyAgTU9DS19NRVRIT0QzKEJhciwgZG91YmxlKGludCBpbmRleCwgZG91Ymxl
IHgsIGRvdWJsZSB5KSk7CitgYGAKKworaW5zdGVhZCBvZgorCitgYGAKK3VzaW5nIDo6dGVzdGlu
Zzo6XzsKK3VzaW5nIDo6dGVzdGluZzo6SW52b2tlOworCitkb3VibGUgRGlzdGFuY2VUb09yaWdp
bldpdGhMYWJlbChjb25zdCBzdHJpbmcmIGxhYmVsLCBkb3VibGUgeCwgZG91YmxlIHkpIHsKKyAg
cmV0dXJuIHNxcnQoeCp4ICsgeSp5KTsKK30KKworZG91YmxlIERpc3RhbmNlVG9PcmlnaW5XaXRo
SW5kZXgoaW50IGluZGV4LCBkb3VibGUgeCwgZG91YmxlIHkpIHsKKyAgcmV0dXJuIHNxcnQoeCp4
ICsgeSp5KTsKK30KKy4uLgorCisgIEVYRVBDVF9DQUxMKG1vY2ssIEZvbygiYWJjIiwgXywgXykp
CisgICAgICAuV2lsbE9uY2UoSW52b2tlKERpc3RhbmNlVG9PcmlnaW5XaXRoTGFiZWwpKTsKKyAg
RVhFUENUX0NBTEwobW9jaywgQmFyKDUsIF8sIF8pKQorICAgICAgLldpbGxPbmNlKEludm9rZShE
aXN0YW5jZVRvT3JpZ2luV2l0aEluZGV4KSk7CitgYGAKKworeW91IGNvdWxkIHdyaXRlCisKK2Bg
YAordXNpbmcgOjp0ZXN0aW5nOjpfOwordXNpbmcgOjp0ZXN0aW5nOjpJbnZva2U7Cit1c2luZyA6
OnRlc3Rpbmc6OlVudXNlZDsKKworZG91YmxlIERpc3RhbmNlVG9PcmlnaW4oVW51c2VkLCBkb3Vi
bGUgeCwgZG91YmxlIHkpIHsKKyAgcmV0dXJuIHNxcnQoeCp4ICsgeSp5KTsKK30KKy4uLgorCisg
IEVYRVBDVF9DQUxMKG1vY2ssIEZvbygiYWJjIiwgXywgXykpCisgICAgICAuV2lsbE9uY2UoSW52
b2tlKERpc3RhbmNlVG9PcmlnaW4pKTsKKyAgRVhFUENUX0NBTEwobW9jaywgQmFyKDUsIF8sIF8p
KQorICAgICAgLldpbGxPbmNlKEludm9rZShEaXN0YW5jZVRvT3JpZ2luKSk7CitgYGAKKworIyMg
U2hhcmluZyBBY3Rpb25zICMjCisKK0p1c3QgbGlrZSBtYXRjaGVycywgYSBHb29nbGUgTW9jayBh
Y3Rpb24gb2JqZWN0IGNvbnNpc3RzIG9mIGEgcG9pbnRlcgordG8gYSByZWYtY291bnRlZCBpbXBs
ZW1lbnRhdGlvbiBvYmplY3QuIFRoZXJlZm9yZSBjb3B5aW5nIGFjdGlvbnMgaXMKK2Fsc28gYWxs
b3dlZCBhbmQgdmVyeSBlZmZpY2llbnQuIFdoZW4gdGhlIGxhc3QgYWN0aW9uIHRoYXQgcmVmZXJl
bmNlcwordGhlIGltcGxlbWVudGF0aW9uIG9iamVjdCBkaWVzLCB0aGUgaW1wbGVtZW50YXRpb24g
b2JqZWN0IHdpbGwgYmUKK2RlbGV0ZWQuCisKK0lmIHlvdSBoYXZlIHNvbWUgY29tcGxleCBhY3Rp
b24gdGhhdCB5b3Ugd2FudCB0byB1c2UgYWdhaW4gYW5kIGFnYWluLAoreW91IG1heSBub3QgaGF2
ZSB0byBidWlsZCBpdCBmcm9tIHNjcmF0Y2ggZXZlcnl0aW1lLiBJZiB0aGUgYWN0aW9uCitkb2Vz
bid0IGhhdmUgYW4gaW50ZXJuYWwgc3RhdGUgKGkuZS4gaWYgaXQgYWx3YXlzIGRvZXMgdGhlIHNh
bWUgdGhpbmcKK25vIG1hdHRlciBob3cgbWFueSB0aW1lcyBpdCBoYXMgYmVlbiBjYWxsZWQpLCB5
b3UgY2FuIGFzc2lnbiBpdCB0byBhbgorYWN0aW9uIHZhcmlhYmxlIGFuZCB1c2UgdGhhdCB2YXJp
YWJsZSByZXBlYXRlZGx5LiBGb3IgZXhhbXBsZToKKworYGBgCisgIEFjdGlvbjxib29sKGludCop
PiBzZXRfZmxhZyA9IERvQWxsKFNldEFyZ3VtZW50UG9pbnRlZTwwPig1KSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuKHRydWUpKTsKKyAgLi4uIHVzZSBzZXRf
ZmxhZyBpbiAuV2lsbE9uY2UoKSBhbmQgLldpbGxSZXBlYXRlZGx5KCkgLi4uCitgYGAKKworSG93
ZXZlciwgaWYgdGhlIGFjdGlvbiBoYXMgaXRzIG93biBzdGF0ZSwgeW91IG1heSBiZSBzdXJwcmlz
ZWQgaWYgeW91CitzaGFyZSB0aGUgYWN0aW9uIG9iamVjdC4gU3VwcG9zZSB5b3UgaGF2ZSBhbiBh
Y3Rpb24gZmFjdG9yeQorYEluY3JlbWVudENvdW50ZXIoaW5pdClgIHdoaWNoIGNyZWF0ZXMgYW4g
YWN0aW9uIHRoYXQgaW5jcmVtZW50cyBhbmQKK3JldHVybnMgYSBjb3VudGVyIHdob3NlIGluaXRp
YWwgdmFsdWUgaXMgYGluaXRgLCB1c2luZyB0d28gYWN0aW9ucworY3JlYXRlZCBmcm9tIHRoZSBz
YW1lIGV4cHJlc3Npb24gYW5kIHVzaW5nIGEgc2hhcmVkIGFjdGlvbiB3aWxsCitleGloaWJpdCBk
aWZmZXJlbnQgYmVoYXZpb3JzLiBFeGFtcGxlOgorCitgYGAKKyAgRVhQRUNUX0NBTEwoZm9vLCBE
b1RoaXMoKSkKKyAgICAgIC5XaWxsUmVwZWF0ZWRseShJbmNyZW1lbnRDb3VudGVyKDApKTsKKyAg
RVhQRUNUX0NBTEwoZm9vLCBEb1RoYXQoKSkKKyAgICAgIC5XaWxsUmVwZWF0ZWRseShJbmNyZW1l
bnRDb3VudGVyKDApKTsKKyAgZm9vLkRvVGhpcygpOyAgLy8gUmV0dXJucyAxLgorICBmb28uRG9U
aGlzKCk7ICAvLyBSZXR1cm5zIDIuCisgIGZvby5Eb1RoYXQoKTsgIC8vIFJldHVybnMgMSAtIEJs
YWgoKSB1c2VzIGEgZGlmZmVyZW50CisgICAgICAgICAgICAgICAgIC8vIGNvdW50ZXIgdGhhbiBC
YXIoKSdzLgorYGBgCisKK3ZlcnN1cworCitgYGAKKyAgQWN0aW9uPGludCgpPiBpbmNyZW1lbnQg
PSBJbmNyZW1lbnRDb3VudGVyKDApOworCisgIEVYUEVDVF9DQUxMKGZvbywgRG9UaGlzKCkpCisg
ICAgICAuV2lsbFJlcGVhdGVkbHkoaW5jcmVtZW50KTsKKyAgRVhQRUNUX0NBTEwoZm9vLCBEb1Ro
YXQoKSkKKyAgICAgIC5XaWxsUmVwZWF0ZWRseShpbmNyZW1lbnQpOworICBmb28uRG9UaGlzKCk7
ICAvLyBSZXR1cm5zIDEuCisgIGZvby5Eb1RoaXMoKTsgIC8vIFJldHVybnMgMi4KKyAgZm9vLkRv
VGhhdCgpOyAgLy8gUmV0dXJucyAzIC0gdGhlIGNvdW50ZXIgaXMgc2hhcmVkLgorYGBgCisKKyMg
TWlzYyBSZWNpcGVzIG9uIFVzaW5nIEdvb2dsZSBNb2NrICMKKworIyMgRm9yY2luZyBhIFZlcmlm
aWNhdGlvbiAjIworCitXaGVuIGl0J3MgYmVpbmcgZGVzdG95ZWQsIHlvdXIgZnJpZW5kbHkgbW9j
ayBvYmplY3Qgd2lsbCBhdXRvbWF0aWNhbGx5Cit2ZXJpZnkgdGhhdCBhbGwgZXhwZWN0YXRpb25z
IG9uIGl0IGhhdmUgYmVlbiBzYXRpc2ZpZWQsIGFuZCB3aWxsCitnZW5lcmF0ZSBbR29vZ2xlIFRl
c3RdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0LykgZmFpbHVyZXMKK2lmIG5v
dC4gVGhpcyBpcyBjb252ZW5pZW50IGFzIGl0IGxlYXZlcyB5b3Ugd2l0aCBvbmUgbGVzcyB0aGlu
ZyB0bword29ycnkgYWJvdXQuIFRoYXQgaXMsIHVubGVzcyB5b3UgYXJlIG5vdCBzdXJlIGlmIHlv
dXIgbW9jayBvYmplY3Qgd2lsbAorYmUgZGVzdG95ZWQuCisKK0hvdyBjb3VsZCBpdCBiZSB0aGF0
IHlvdXIgbW9jayBvYmplY3Qgd29uJ3QgZXZlbnR1YWxseSBiZSBkZXN0cm95ZWQ/CitXZWxsLCBp
dCBtaWdodCBiZSBjcmVhdGVkIG9uIHRoZSBoZWFwIGFuZCBvd25lZCBieSB0aGUgY29kZSB5b3Ug
YXJlCit0ZXN0aW5nLiBTdXBwb3NlIHRoZXJlJ3MgYSBidWcgaW4gdGhhdCBjb2RlIGFuZCBpdCBk
b2Vzbid0IGRlbGV0ZSB0aGUKK21vY2sgb2JqZWN0IHByb3Blcmx5IC0geW91IGNvdWxkIGVuZCB1
cCB3aXRoIGEgcGFzc2luZyB0ZXN0IHdoZW4KK3RoZXJlJ3MgYWN0dWFsbHkgYSBidWcuCisKK1Vz
aW5nIGEgaGVhcCBjaGVja2VyIGlzIGEgZ29vZCBpZGVhIGFuZCBjYW4gYWxsZXZpYXRlIHRoZSBj
b25jZXJuLCBidXQKK2l0cyBpbXBsZW1lbnRhdGlvbiBtYXkgbm90IGJlIDEwMCUgcmVsaWFibGUu
IFNvLCBzb21ldGltZXMgeW91IGRvIHdhbnQKK3RvIF9mb3JjZV8gR29vZ2xlIE1vY2sgdG8gdmVy
aWZ5IGEgbW9jayBvYmplY3QgYmVmb3JlIGl0IGlzCisoaG9wZWZ1bGx5KSBkZXN0cnVjdGVkLiBZ
b3UgY2FuIGRvIHRoaXMgd2l0aAorYE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZt
b2NrX29iamVjdClgOgorCitgYGAKK1RFU1QoTXlTZXJ2ZXJUZXN0LCBQcm9jZXNzZXNSZXF1ZXN0
KSB7CisgIHVzaW5nIDo6dGVzdGluZzo6TW9jazsKKworICBNb2NrRm9vKiBjb25zdCBmb28gPSBu
ZXcgTW9ja0ZvbzsKKyAgRVhQRUNUX0NBTEwoKmZvbywgLi4uKS4uLjsKKyAgLy8gLi4uIG90aGVy
IGV4cGVjdGF0aW9ucyAuLi4KKworICAvLyBzZXJ2ZXIgbm93IG93bnMgZm9vLgorICBNeVNlcnZl
ciBzZXJ2ZXIoZm9vKTsKKyAgc2VydmVyLlByb2Nlc3NSZXF1ZXN0KC4uLik7CisKKyAgLy8gSW4g
Y2FzZSB0aGF0IHNlcnZlcidzIGRlc3RydWN0b3Igd2lsbCBmb3JnZXQgdG8gZGVsZXRlIGZvbywK
KyAgLy8gdGhpcyB3aWxsIHZlcmlmeSB0aGUgZXhwZWN0YXRpb25zIGFueXdheS4KKyAgTW9jazo6
VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoZm9vKTsKK30gIC8vIHNlcnZlciBpcyBkZXN0cm95
ZWQgd2hlbiBpdCBnb2VzIG91dCBvZiBzY29wZSBoZXJlLgorYGBgCisKKyoqVGlwOioqIFRoZSBg
TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoKWAgZnVuY3Rpb24gcmV0dXJucyBhCitg
Ym9vbGAgdG8gaW5kaWNhdGUgd2hldGhlciB0aGUgdmVyaWZpY2F0aW9uIHdhcyBzdWNjZXNzZnVs
IChgdHJ1ZWAgZm9yCit5ZXMpLCBzbyB5b3UgY2FuIHdyYXAgdGhhdCBmdW5jdGlvbiBjYWxsIGlu
c2lkZSBhIGBBU1NFUlRfVFJVRSgpYCBpZgordGhlcmUgaXMgbm8gcG9pbnQgZ29pbmcgZnVydGhl
ciB3aGVuIHRoZSB2ZXJpZmljYXRpb24gaGFzIGZhaWxlZC4KKworIyMgVXNpbmcgQ2hlY2sgUG9p
bnRzICMjCisKK1NvbWV0aW1lcyB5b3UgbWF5IHdhbnQgdG8gInJlc2V0IiBhIG1vY2sgb2JqZWN0
IGF0IHZhcmlvdXMgY2hlY2sKK3BvaW50cyBpbiB5b3VyIHRlc3Q6IGF0IGVhY2ggY2hlY2sgcG9p
bnQsIHlvdSB2ZXJpZnkgdGhhdCBhbGwgZXhpc3RpbmcKK2V4cGVjdGF0aW9ucyBvbiB0aGUgbW9j
ayBvYmplY3QgaGF2ZSBiZWVuIHNhdGlzZmllZCwgYW5kIHRoZW4geW91IHNldAorc29tZSBuZXcg
ZXhwZWN0YXRpb25zIG9uIGl0IGFzIGlmIGl0J3MgbmV3bHkgY3JlYXRlZC4gVGhpcyBhbGxvd3Mg
eW91Cit0byB3b3JrIHdpdGggYSBtb2NrIG9iamVjdCBpbiAicGhhc2VzIiB3aG9zZSBzaXplcyBh
cmUgZWFjaAorbWFuYWdlYWJsZS4KKworT25lIHN1Y2ggc2NlbmFyaW8gaXMgdGhhdCBpbiB5b3Vy
IHRlc3QncyBgU2V0VXAoKWAgZnVuY3Rpb24sIHlvdSBtYXkKK3dhbnQgdG8gcHV0IHRoZSBvYmpl
Y3QgeW91IGFyZSB0ZXN0aW5nIGludG8gYSBjZXJ0YWluIHN0YXRlLCB3aXRoIHRoZQoraGVscCBm
cm9tIGEgbW9jayBvYmplY3QuIE9uY2UgaW4gdGhlIGRlc2lyZWQgc3RhdGUsIHlvdSB3YW50IHRv
IGNsZWFyCithbGwgZXhwZWN0YXRpb25zIG9uIHRoZSBtb2NrLCBzdWNoIHRoYXQgaW4gdGhlIGBU
RVNUX0ZgIGJvZHkgeW91IGNhbgorc2V0IGZyZXNoIGV4cGVjdGF0aW9ucyBvbiBpdC4KKworQXMg
eW91IG1heSBoYXZlIGZpZ3VyZWQgb3V0LCB0aGUgYE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0
YXRpb25zKClgCitmdW5jdGlvbiB3ZSBzYXcgaW4gdGhlIHByZXZpb3VzIHJlY2lwZSBjYW4gaGVs
cCB5b3UgaGVyZS4gT3IsIGlmIHlvdQorYXJlIHVzaW5nIGBPTl9DQUxMKClgIHRvIHNldCBkZWZh
dWx0IGFjdGlvbnMgb24gdGhlIG1vY2sgb2JqZWN0IGFuZAord2FudCB0byBjbGVhciB0aGUgZGVm
YXVsdCBhY3Rpb25zIGFzIHdlbGwsIHVzZQorYE1vY2s6OlZlcmlmeUFuZENsZWFyKCZtb2NrX29i
amVjdClgIGluc3RlYWQuIFRoaXMgZnVuY3Rpb24gZG9lcyB3aGF0CitgTW9jazo6VmVyaWZ5QW5k
Q2xlYXJFeHBlY3RhdGlvbnMoJm1vY2tfb2JqZWN0KWAgZG9lcyBhbmQgcmV0dXJucyB0aGUKK3Nh
bWUgYGJvb2xgLCAqKnBsdXMqKiBpdCBjbGVhcnMgdGhlIGBPTl9DQUxMKClgIHN0YXRlbWVudHMg
b24KK2Btb2NrX29iamVjdGAgdG9vLgorCitBbm90aGVyIHRyaWNrIHlvdSBjYW4gdXNlIHRvIGFj
aGlldmUgdGhlIHNhbWUgZWZmZWN0IGlzIHRvIHB1dCB0aGUKK2V4cGVjdGF0aW9ucyBpbiBzZXF1
ZW5jZXMgYW5kIGluc2VydCBjYWxscyB0byBhIGR1bW15ICJjaGVjay1wb2ludCIKK2Z1bmN0aW9u
IGF0IHNwZWNpZmljIHBsYWNlcy4gVGhlbiB5b3UgY2FuIHZlcmlmeSB0aGF0IHRoZSBtb2NrCitm
dW5jdGlvbiBjYWxscyBkbyBoYXBwZW4gYXQgdGhlIHJpZ2h0IHRpbWUuIEZvciBleGFtcGxlLCBp
ZiB5b3UgYXJlCitleGVyY2lzaW5nIGNvZGU6CisKK2BgYAorRm9vKDEpOworRm9vKDIpOworRm9v
KDMpOworYGBgCisKK2FuZCB3YW50IHRvIHZlcmlmeSB0aGF0IGBGb28oMSlgIGFuZCBgRm9vKDMp
YCBib3RoIGludm9rZQorYG1vY2suQmFyKCJhIilgLCBidXQgYEZvbygyKWAgZG9lc24ndCBpbnZv
a2UgYW55dGhpbmcuIFlvdSBjYW4gd3JpdGU6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpNb2Nr
RnVuY3Rpb247CisKK1RFU1QoRm9vVGVzdCwgSW52b2tlc0JhckNvcnJlY3RseSkgeworICBNeU1v
Y2sgbW9jazsKKyAgLy8gQ2xhc3MgTW9ja0Z1bmN0aW9uPEY+IGhhcyBleGFjdGx5IG9uZSBtb2Nr
IG1ldGhvZC4gIEl0IGlzIG5hbWVkCisgIC8vIENhbGwoKSBhbmQgaGFzIHR5cGUgRi4KKyAgTW9j
a0Z1bmN0aW9uPHZvaWQoc3RyaW5nIGNoZWNrX3BvaW50X25hbWUpPiBjaGVjazsKKyAgeworICAg
IEluU2VxdWVuY2UgczsKKworICAgIEVYUEVDVF9DQUxMKG1vY2ssIEJhcigiYSIpKTsKKyAgICBF
WFBFQ1RfQ0FMTChjaGVjaywgQ2FsbCgiMSIpKTsKKyAgICBFWFBFQ1RfQ0FMTChjaGVjaywgQ2Fs
bCgiMiIpKTsKKyAgICBFWFBFQ1RfQ0FMTChtb2NrLCBCYXIoImEiKSk7CisgIH0KKyAgRm9vKDEp
OworICBjaGVjay5DYWxsKCIxIik7CisgIEZvbygyKTsKKyAgY2hlY2suQ2FsbCgiMiIpOworICBG
b28oMyk7Cit9CitgYGAKKworVGhlIGV4cGVjdGF0aW9uIHNwZWMgc2F5cyB0aGF0IHRoZSBmaXJz
dCBgQmFyKCJhIilgIG11c3QgaGFwcGVuIGJlZm9yZQorY2hlY2sgcG9pbnQgIjEiLCB0aGUgc2Vj
b25kIGBCYXIoImEiKWAgbXVzdCBoYXBwZW4gYWZ0ZXIgY2hlY2sgcG9pbnQgIjIiLAorYW5kIG5v
dGhpbmcgc2hvdWxkIGhhcHBlbiBiZXR3ZWVuIHRoZSB0d28gY2hlY2sgcG9pbnRzLiBUaGUgZXhw
bGljaXQKK2NoZWNrIHBvaW50cyBtYWtlIGl0IGVhc3kgdG8gdGVsbCB3aGljaCBgQmFyKCJhIilg
IGlzIGNhbGxlZCBieSB3aGljaAorY2FsbCB0byBgRm9vKClgLgorCisjIyBNb2NraW5nIERlc3Ry
dWN0b3JzICMjCisKK1NvbWV0aW1lcyB5b3Ugd2FudCB0byBtYWtlIHN1cmUgYSBtb2NrIG9iamVj
dCBpcyBkZXN0cnVjdGVkIGF0IHRoZQorcmlnaHQgdGltZSwgZS5nLiBhZnRlciBgYmFyLT5BKClg
IGlzIGNhbGxlZCBidXQgYmVmb3JlIGBiYXItPkIoKWAgaXMKK2NhbGxlZC4gV2UgYWxyZWFkeSBr
bm93IHRoYXQgeW91IGNhbiBzcGVjaWZ5IGNvbnN0cmFpbnRzIG9uIHRoZSBvcmRlcgorb2YgbW9j
ayBmdW5jdGlvbiBjYWxscywgc28gYWxsIHdlIG5lZWQgdG8gZG8gaXMgdG8gbW9jayB0aGUgZGVz
dHJ1Y3Rvcgorb2YgdGhlIG1vY2sgZnVuY3Rpb24uCisKK1RoaXMgc291bmRzIHNpbXBsZSwgZXhj
ZXB0IGZvciBvbmUgcHJvYmxlbTogYSBkZXN0cnVjdG9yIGlzIGEgc3BlY2lhbAorZnVuY3Rpb24g
d2l0aCBzcGVjaWFsIHN5bnRheCBhbmQgc3BlY2lhbCBzZW1hbnRpY3MsIGFuZCB0aGUKK2BNT0NL
X01FVEhPRDBgIG1hY3JvIGRvZXNuJ3Qgd29yayBmb3IgaXQ6CisKK2BgYAorICBNT0NLX01FVEhP
RDAofk1vY2tGb28sIHZvaWQoKSk7ICAvLyBXb24ndCBjb21waWxlIQorYGBgCisKK1RoZSBnb29k
IG5ld3MgaXMgdGhhdCB5b3UgY2FuIHVzZSBhIHNpbXBsZSBwYXR0ZXJuIHRvIGFjaGlldmUgdGhl
IHNhbWUKK2VmZmVjdC4gRmlyc3QsIGFkZCBhIG1vY2sgZnVuY3Rpb24gYERpZSgpYCB0byB5b3Vy
IG1vY2sgY2xhc3MgYW5kIGNhbGwKK2l0IGluIHRoZSBkZXN0cnVjdG9yLCBsaWtlIHRoaXM6CisK
K2BgYAorY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28geworICAuLi4KKyAgLy8gQWRkIHRoZSBm
b2xsb3dpbmcgdHdvIGxpbmVzIHRvIHRoZSBtb2NrIGNsYXNzLgorICBNT0NLX01FVEhPRDAoRGll
LCB2b2lkKCkpOworICB2aXJ0dWFsIH5Nb2NrRm9vKCkgeyBEaWUoKTsgfQorfTsKK2BgYAorCiso
SWYgdGhlIG5hbWUgYERpZSgpYCBjbGFzaGVzIHdpdGggYW4gZXhpc3Rpbmcgc3ltYm9sLCBjaG9v
c2UgYW5vdGhlcgorbmFtZS4pIE5vdywgd2UgaGF2ZSB0cmFuc2xhdGVkIHRoZSBwcm9ibGVtIG9m
IHRlc3Rpbmcgd2hlbiBhIGBNb2NrRm9vYAorb2JqZWN0IGRpZXMgdG8gdGVzdGluZyB3aGVuIGl0
cyBgRGllKClgIG1ldGhvZCBpcyBjYWxsZWQ6CisKK2BgYAorICBNb2NrRm9vKiBmb28gPSBuZXcg
TW9ja0ZvbzsKKyAgTW9ja0JhciogYmFyID0gbmV3IE1vY2tCYXI7CisgIC4uLgorICB7CisgICAg
SW5TZXF1ZW5jZSBzOworCisgICAgLy8gRXhwZWN0cyAqZm9vIHRvIGRpZSBhZnRlciBiYXItPkEo
KSBhbmQgYmVmb3JlIGJhci0+QigpLgorICAgIEVYUEVDVF9DQUxMKCpiYXIsIEEoKSk7CisgICAg
RVhQRUNUX0NBTEwoKmZvbywgRGllKCkpOworICAgIEVYUEVDVF9DQUxMKCpiYXIsIEIoKSk7Cisg
IH0KK2BgYAorCitBbmQgdGhhdCdzIHRoYXQuCisKKyMjIFVzaW5nIEdvb2dsZSBNb2NrIGFuZCBU
aHJlYWRzICMjCisKKyoqSU1QT1JUQU5UIE5PVEU6KiogV2hhdCB3ZSBkZXNjcmliZSBpbiB0aGlz
IHJlY2lwZSBpcyAqKk5PVCoqIHRydWUgeWV0LAorYXMgR29vZ2xlIE1vY2sgaXMgbm90IGN1cnJl
bnRseSB0aHJlYWQtc2FmZS4gIEhvd2V2ZXIsIGFsbCB3ZSBuZWVkIHRvCittYWtlIGl0IHRocmVh
ZC1zYWZlIGlzIHRvIGltcGxlbWVudCBzb21lIHN5bmNocm9uaXphdGlvbiBvcGVyYXRpb25zIGlu
CitgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaD5gIC0gYW5kIHRoZW4gdGhlIGluZm9ybWF0
aW9uIGJlbG93IHdpbGwKK2JlY29tZSB0cnVlLgorCitJbiBhICoqdW5pdCoqIHRlc3QsIGl0J3Mg
YmVzdCBpZiB5b3UgY291bGQgaXNvbGF0ZSBhbmQgdGVzdCBhIHBpZWNlIG9mCitjb2RlIGluIGEg
c2luZ2xlLXRocmVhZGVkIGNvbnRleHQuIFRoYXQgYXZvaWRzIHJhY2UgY29uZGl0aW9ucyBhbmQK
K2RlYWQgbG9ja3MsIGFuZCBtYWtlcyBkZWJ1Z2dpbmcgeW91ciB0ZXN0IG11Y2ggZWFzaWVyLgor
CitZZXQgbWFueSBwcm9ncmFtcyBhcmUgbXVsdGktdGhyZWFkZWQsIGFuZCBzb21ldGltZXMgdG8g
dGVzdCBzb21ldGhpbmcKK3dlIG5lZWQgdG8gcG91bmQgb24gaXQgZnJvbSBtb3JlIHRoYW4gb25l
IHRocmVhZC4gR29vZ2xlIE1vY2sgd29ya3MKK2ZvciB0aGlzIHB1cnBvc2UgdG9vLgorCitSZW1l
bWJlciB0aGUgc3RlcHMgZm9yIHVzaW5nIGEgbW9jazoKKworICAxLiBDcmVhdGUgYSBtb2NrIG9i
amVjdCBgZm9vYC4KKyAgMS4gU2V0IGl0cyBkZWZhdWx0IGFjdGlvbnMgYW5kIGV4cGVjdGF0aW9u
cyB1c2luZyBgT05fQ0FMTCgpYCBhbmQgYEVYUEVDVF9DQUxMKClgLgorICAxLiBUaGUgY29kZSB1
bmRlciB0ZXN0IGNhbGxzIG1ldGhvZHMgb2YgYGZvb2AuCisgIDEuIE9wdGlvbmFsbHksIHZlcmlm
eSBhbmQgcmVzZXQgdGhlIG1vY2suCisgIDEuIERlc3Ryb3kgdGhlIG1vY2sgeW91cnNlbGYsIG9y
IGxldCB0aGUgY29kZSB1bmRlciB0ZXN0IGRlc3Ryb3kgaXQuIFRoZSBkZXN0cnVjdG9yIHdpbGwg
YXV0b21hdGljYWxseSB2ZXJpZnkgaXQuCisKK0lmIHlvdSBmb2xsb3cgdGhlIGZvbGxvd2luZyBz
aW1wbGUgcnVsZXMsIHlvdXIgbW9ja3MgYW5kIHRocmVhZHMgY2FuCitsaXZlIGhhcHBpbHkgdG9n
ZXRlcjoKKworICAqIEV4ZWN1dGUgeW91ciBfdGVzdCBjb2RlXyAoYXMgb3Bwb3NlZCB0byB0aGUg
Y29kZSBiZWluZyB0ZXN0ZWQpIGluIF9vbmVfIHRocmVhZC4gVGhpcyBtYWtlcyB5b3VyIHRlc3Qg
ZWFzeSB0byBmb2xsb3cuCisgICogT2J2aW91c2x5LCB5b3UgY2FuIGRvIHN0ZXAgIzEgd2l0aG91
dCBsb2NraW5nLgorICAqIFdoZW4gZG9pbmcgc3RlcCAjMiBhbmQgIzUsIG1ha2Ugc3VyZSBubyBv
dGhlciB0aHJlYWQgaXMgYWNjZXNzaW5nIGBmb29gLiBPYnZpb3VzIHRvbywgaHVoPworICAqICMz
IGFuZCAjNCBjYW4gYmUgZG9uZSBlaXRoZXIgaW4gb25lIHRocmVhZCBvciBpbiBtdWx0aXBsZSB0
aHJlYWRzIC0gYW55d2F5IHlvdSB3YW50LiBHb29nbGUgTW9jayB0YWtlcyBjYXJlIG9mIHRoZSBs
b2NraW5nLCBzbyB5b3UgZG9uJ3QgaGF2ZSB0byBkbyBhbnkgLSB1bmxlc3MgcmVxdWlyZWQgYnkg
eW91ciB0ZXN0IGxvZ2ljLgorCitJZiB5b3UgdmlvbGF0ZSB0aGUgcnVsZXMgKGZvciBleGFtcGxl
LCBpZiB5b3Ugc2V0IGV4cGVjdGF0aW9ucyBvbiBhCittb2NrIHdoaWxlIGFub3RoZXIgdGhyZWFk
IGlzIGNhbGxpbmcgaXRzIG1ldGhvZHMpLCB5b3UgZ2V0IHVuZGVmaW5lZAorYmVoYXZpb3IuIFRo
YXQncyBub3QgZnVuLCBzbyBkb24ndCBkbyBpdC4KKworR29vZ2xlIE1vY2sgZ3VhcmFudGVlcyB0
aGF0IHRoZSBhY3Rpb24gZm9yIGEgbW9jayBmdW5jdGlvbiBpcyBkb25lIGluCit0aGUgc2FtZSB0
aHJlYWQgdGhhdCBjYWxsZWQgdGhlIG1vY2sgZnVuY3Rpb24uIEZvciBleGFtcGxlLCBpbgorCitg
YGAKKyAgRVhQRUNUX0NBTEwobW9jaywgRm9vKDEpKQorICAgICAgLldpbGxPbmNlKGFjdGlvbjEp
OworICBFWFBFQ1RfQ0FMTChtb2NrLCBGb28oMikpCisgICAgICAuV2lsbE9uY2UoYWN0aW9uMik7
CitgYGAKKworaWYgYEZvbygxKWAgaXMgY2FsbGVkIGluIHRocmVhZCAxIGFuZCBgRm9vKDIpYCBp
cyBjYWxsZWQgaW4gdGhyZWFkIDIsCitHb29nbGUgTW9jayB3aWxsIGV4ZWN1dGUgYGFjdGlvbjFg
IGluIHRocmVhZCAxIGFuZCBgYWN0aW9uMmAgaW4gdGhyZWFkCisyLgorCitHb29nbGUgTW9jayBk
b2VzIF9ub3RfIGltcG9zZSBhIHNlcXVlbmNlIG9uIGFjdGlvbnMgcGVyZm9ybWVkIGluCitkaWZm
ZXJlbnQgdGhyZWFkcyAoZG9pbmcgc28gbWF5IGNyZWF0ZSBkZWFkbG9ja3MgYXMgdGhlIGFjdGlv
bnMgbWF5CituZWVkIHRvIGNvb3BlcmF0ZSkuIFRoaXMgbWVhbnMgdGhhdCB0aGUgZXhlY3V0aW9u
IG9mIGBhY3Rpb24xYCBhbmQKK2BhY3Rpb24yYCBpbiB0aGUgYWJvdmUgZXhhbXBsZSBfbWF5XyBp
bnRlcmxlYXZlLiBJZiB0aGlzIGlzIGEgcHJvYmxlbSwKK3lvdSBzaG91bGQgYWRkIHByb3BlciBz
eW5jaHJvbml6YXRpb24gbG9naWMgdG8gYGFjdGlvbjFgIGFuZCBgYWN0aW9uMmAKK3RvIG1ha2Ug
dGhlIHRlc3QgdGhyZWFkLXNhZmUuCisKKworQWxzbywgcmVtZW1iZXIgdGhhdCBgRGVmYXVsdFZh
bHVlPFQ+YCBpcyBhIGdsb2JhbCByZXNvdXJjZSB0aGF0Citwb3RlbnRpYWxseSBhZmZlY3RzIF9h
bGxfIGxpdmluZyBtb2NrIG9iamVjdHMgaW4geW91cgorcHJvZ3JhbS4gTmF0dXJhbGx5LCB5b3Ug
d29uJ3Qgd2FudCB0byBtZXNzIHdpdGggaXQgZnJvbSBtdWx0aXBsZQordGhyZWFkcyBvciB3aGVu
IHRoZXJlIHN0aWxsIGFyZSBtb2NrcyBpbiBhY3Rpb24uCisKKyMjIENvbnRyb2xsaW5nIEhvdyBN
dWNoIEluZm9ybWF0aW9uIEdvb2dsZSBNb2NrIFByaW50cyAjIworCitXaGVuIEdvb2dsZSBNb2Nr
IHNlZXMgc29tZXRoaW5nIHRoYXQgaGFzIHRoZSBwb3RlbnRpYWwgb2YgYmVpbmcgYW4KK2Vycm9y
IChlLmcuIGEgbW9jayBmdW5jdGlvbiB3aXRoIG5vIGV4cGVjdGF0aW9uIGlzIGNhbGxlZCwgYS5r
LmEuIGFuCit1bmludGVyZXN0aW5nIGNhbGwsIHdoaWNoIGlzIGFsbG93ZWQgYnV0IHBlcmhhcHMg
eW91IGZvcmdvdCB0bworZXhwbGljaXRseSBiYW4gdGhlIGNhbGwpLCBpdCBwcmludHMgc29tZSB3
YXJuaW5nIG1lc3NhZ2VzLCBpbmNsdWRpbmcKK3RoZSBhcmd1bWVudHMgb2YgdGhlIGZ1bmN0aW9u
IGFuZCB0aGUgcmV0dXJuIHZhbHVlLiBIb3BlZnVsbHkgdGhpcword2lsbCByZW1pbmQgeW91IHRv
IHRha2UgYSBsb29rIGFuZCBzZWUgaWYgdGhlcmUgaXMgaW5kZWVkIGEgcHJvYmxlbS4KKworU29t
ZXRpbWVzIHlvdSBhcmUgY29uZmlkZW50IHRoYXQgeW91ciB0ZXN0cyBhcmUgY29ycmVjdCBhbmQg
bWF5IG5vdAorYXBwcmVjaWF0ZSBzdWNoIGZyaWVuZGx5IG1lc3NhZ2VzLiBTb21lIG90aGVyIHRp
bWVzLCB5b3UgYXJlIGRlYnVnZ2luZworeW91ciB0ZXN0cyBvciBsZWFybmluZyBhYm91dCB0aGUg
YmVoYXZpb3Igb2YgdGhlIGNvZGUgeW91IGFyZSB0ZXN0aW5nLAorYW5kIHdpc2ggeW91IGNvdWxk
IG9ic2VydmUgZXZlcnkgbW9jayBjYWxsIHRoYXQgaGFwcGVucyAoaW5jbHVkaW5nCithcmd1bWVu
dCB2YWx1ZXMgYW5kIHRoZSByZXR1cm4gdmFsdWUpLiBDbGVhcmx5LCBvbmUgc2l6ZSBkb2Vzbid0
IGZpdAorYWxsLgorCitZb3UgY2FuIGNvbnRyb2wgaG93IG11Y2ggR29vZ2xlIE1vY2sgdGVsbHMg
eW91IHVzaW5nIHRoZQorYC0tZ21vY2tfdmVyYm9zZT1MRVZFTGAgY29tbWFuZC1saW5lIGZsYWcs
IHdoZXJlIGBMRVZFTGAgaXMgYSBzdHJpbmcKK3dpdGggdGhyZWUgcG9zc2libGUgdmFsdWVzOgor
CisgICogYGluZm9gOiBHb29nbGUgTW9jayB3aWxsIHByaW50IGFsbCBpbmZvcm1hdGlvbmFsIG1l
c3NhZ2VzLCB3YXJuaW5ncywgYW5kIGVycm9ycyAobW9zdCB2ZXJib3NlKS4gQXQgdGhpcyBzZXR0
aW5nLCBHb29nbGUgTW9jayB3aWxsIGFsc28gbG9nIGFueSBjYWxscyB0byB0aGUgYE9OX0NBTEwv
RVhQRUNUX0NBTExgIG1hY3Jvcy4KKyAgKiBgd2FybmluZ2A6IEdvb2dsZSBNb2NrIHdpbGwgcHJp
bnQgYm90aCB3YXJuaW5ncyBhbmQgZXJyb3JzIChsZXNzIHZlcmJvc2UpLiBUaGlzIGlzIHRoZSBk
ZWZhdWx0LgorICAqIGBlcnJvcmA6IEdvb2dsZSBNb2NrIHdpbGwgcHJpbnQgZXJyb3JzIG9ubHkg
KGxlYXN0IHZlcmJvc2UpLgorCitBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGFkanVzdCB0aGUgdmFs
dWUgb2YgdGhhdCBmbGFnIGZyb20gd2l0aGluIHlvdXIKK3Rlc3RzIGxpa2Ugc286CisKK2BgYAor
ICA6OnRlc3Rpbmc6OkZMQUdTX2dtb2NrX3ZlcmJvc2UgPSAiZXJyb3IiOworYGBgCisKK05vdywg
anVkaWNpb3VzbHkgdXNlIHRoZSByaWdodCBmbGFnIHRvIGVuYWJsZSBHb29nbGUgTW9jayBzZXJ2
ZSB5b3UgYmV0dGVyIQorCisjIyBSdW5uaW5nIFRlc3RzIGluIEVtYWNzICMjCisKK0lmIHlvdSBi
dWlsZCBhbmQgcnVuIHlvdXIgdGVzdHMgaW4gRW1hY3MsIHRoZSBzb3VyY2UgZmlsZSBsb2NhdGlv
bnMgb2YKK0dvb2dsZSBNb2NrIGFuZCBbR29vZ2xlIFRlc3RdKGh0dHA6Ly9jb2RlLmdvb2dsZS5j
b20vcC9nb29nbGV0ZXN0LykKK2Vycm9ycyB3aWxsIGJlIGhpZ2hsaWdodGVkLiBKdXN0IHByZXNz
IGA8RW50ZXI+YCBvbiBvbmUgb2YgdGhlbSBhbmQKK3lvdSdsbCBiZSB0YWtlbiB0byB0aGUgb2Zm
ZW5kaW5nIGxpbmUuIE9yLCB5b3UgY2FuIGp1c3QgdHlwZSBgQy14IGBgCit0byBqdW1wIHRvIHRo
ZSBuZXh0IGVycm9yLgorCitUbyBtYWtlIGl0IGV2ZW4gZWFzaWVyLCB5b3UgY2FuIGFkZCB0aGUg
Zm9sbG93aW5nIGxpbmVzIHRvIHlvdXIKK2B+Ly5lbWFjc2AgZmlsZToKKworYGBgCisoZ2xvYmFs
LXNldC1rZXkgIlxNLW0iICAgJ2NvbXBpbGUpICA7IG0gaXMgZm9yIG1ha2UKKyhnbG9iYWwtc2V0
LWtleSBbTS1kb3duXSAnbmV4dC1lcnJvcikKKyhnbG9iYWwtc2V0LWtleSBbTS11cF0gICAnKGxh
bWJkYSAoKSAoaW50ZXJhY3RpdmUpIChuZXh0LWVycm9yIC0xKSkpCitgYGAKKworVGhlbiB5b3Ug
Y2FuIHR5cGUgYE0tbWAgdG8gc3RhcnQgYSBidWlsZCwgb3IgYE0tdXBgL2BNLWRvd25gIHRvIG1v
dmUKK2JhY2sgYW5kIGZvcnRoIGJldHdlZW4gZXJyb3JzLgorCisjIyBGdXNpbmcgR29vZ2xlIE1v
Y2sgU291cmNlIEZpbGVzICMjCisKK0dvb2dsZSBNb2NrJ3MgaW1wbGVtZW50YXRpb24gY29uc2lz
dHMgb2YgZG96ZW5zIG9mIGZpbGVzIChleGNsdWRpbmcKK2l0cyBvd24gdGVzdHMpLiAgU29tZXRp
bWVzIHlvdSBtYXkgd2FudCB0aGVtIHRvIGJlIHBhY2thZ2VkIHVwIGluCitmZXdlciBmaWxlcyBp
bnN0ZWFkLCBzdWNoIHRoYXQgeW91IGNhbiBlYXNpbHkgY29weSB0aGVtIHRvIGEgbmV3CittYWNo
aW5lIGFuZCBzdGFydCBoYWNraW5nIHRoZXJlLiAgRm9yIHRoaXMgd2UgcHJvdmlkZSBhbiBleHBl
cmltZW50YWwKK1B5dGhvbiBzY3JpcHQgYGZ1c2VfZ21vY2tfZmlsZXMucHlgIGluIHRoZSBgc2Ny
aXB0cy9gIGRpcmVjdG9yeQorKHN0YXJ0aW5nIHdpdGggcmVsZWFzZSAxLjIuMCkuICBBc3N1bWlu
ZyB5b3UgaGF2ZSBQeXRob24gMi40IG9yIGFib3ZlCitpbnN0YWxsZWQgb24geW91ciBtYWNoaW5l
LCBqdXN0IGdvIHRvIHRoYXQgZGlyZWN0b3J5IGFuZCBydW4KK2BgYAorcHl0aG9uIGZ1c2VfZ21v
Y2tfZmlsZXMucHkgT1VUUFVUX0RJUgorYGBgCisKK2FuZCB5b3Ugc2hvdWxkIHNlZSBhbiBgT1VU
UFVUX0RJUmAgZGlyZWN0b3J5IGJlaW5nIGNyZWF0ZWQgd2l0aCBmaWxlcworYGd0ZXN0L2d0ZXN0
LmhgLCBgZ21vY2svZ21vY2suaGAsIGFuZCBgZ21vY2stZ3Rlc3QtYWxsLmNjYCBpbiBpdC4KK1Ro
ZXNlIHRocmVlIGZpbGVzIGNvbnRhaW4gZXZlcnl0aGluZyB5b3UgbmVlZCB0byB1c2UgR29vZ2xl
IE1vY2sgKGFuZAorR29vZ2xlIFRlc3QpLiAgSnVzdCBjb3B5IHRoZW0gdG8gYW55d2hlcmUgeW91
IHdhbnQgYW5kIHlvdSBhcmUgcmVhZHkKK3RvIHdyaXRlIHRlc3RzIGFuZCB1c2UgbW9ja3MuICBZ
b3UgY2FuIHVzZSB0aGUKK1tzY3JwdHMvdGVzdC9NYWtlZmlsZV0oaHR0cDovL2NvZGUuZ29vZ2xl
LmNvbS9wL2dvb2dsZW1vY2svc291cmNlL2Jyb3dzZS90cnVuay9zY3JpcHRzL3Rlc3QvTWFrZWZp
bGUpIGZpbGUgYXMgYW4gZXhhbXBsZSBvbiBob3cgdG8gY29tcGlsZSB5b3VyIHRlc3RzCithZ2Fp
bnN0IHRoZW0uCisKKyMgRXh0ZW5kaW5nIEdvb2dsZSBNb2NrICMKKworIyMgV3JpdGluZyBOZXcg
TWF0Y2hlcnMgUXVpY2tseSAjIworCitUaGUgYE1BVENIRVIqYCBmYW1pbHkgb2YgbWFjcm9zIGNh
biBiZSB1c2VkIHRvIGRlZmluZSBjdXN0b20gbWF0Y2hlcnMKK2Vhc2lseS4gIFRoZSBzeW50YXg6
CisKK2BgYAorTUFUQ0hFUihuYW1lLCAiZGVzY3JpcHRpb24gc3RyaW5nIikgeyBzdGF0ZW1lbnRz
OyB9CitgYGAKKword2lsbCBkZWZpbmUgYSBtYXRjaGVyIHdpdGggdGhlIGdpdmVuIG5hbWUgdGhh
dCBleGVjdXRlcyB0aGUKK3N0YXRlbWVudHMsIHdoaWNoIG11c3QgcmV0dXJuIGEgYGJvb2xgIHRv
IGluZGljYXRlIGlmIHRoZSBtYXRjaAorc3VjY2VlZHMuICBJbnNpZGUgdGhlIHN0YXRlbWVudHMs
IHlvdSBjYW4gcmVmZXIgdG8gdGhlIHZhbHVlIGJlaW5nCittYXRjaGVkIGJ5IGBhcmdgLCBhbmQg
cmVmZXIgdG8gaXRzIHR5cGUgYnkgYGFyZ190eXBlYC4KKworVGhlIGRlc2NyaXB0aW9uIHN0cmlu
ZyBkb2N1bWVudHMgd2hhdCB0aGUgbWF0Y2hlciBkb2VzLCBhbmQgaXMgdXNlZCB0bworZ2VuZXJh
dGUgdGhlIGZhaWx1cmUgbWVzc2FnZSB3aGVuIHRoZSBtYXRjaCBmYWlscy4gIFNpbmNlIGEKK2BN
QVRDSEVSKClgIGlzIHVzdWFsbHkgZGVmaW5lZCBpbiBhIGhlYWRlciBmaWxlIHNoYXJlZCBieSBt
dWx0aXBsZSBDKysKK3NvdXJjZSBmaWxlcywgd2UgcmVxdWlyZSB0aGUgZGVzY3JpcHRpb24gdG8g
YmUgYSBDLXN0cmluZyBfbGl0ZXJhbF8gdG8KK2F2b2lkIHBvc3NpYmxlIHNpZGUgZWZmZWN0cy4g
IEl0IGNhbiBiZSBlbXB0eSAoYCIiYCksIGluIHdoaWNoIGNhc2UKK0dvb2dsZSBNb2NrIHdpbGwg
dXNlIHRoZSBzZXF1ZW5jZSBvZiB3b3JkcyBpbiB0aGUgbWF0Y2hlciBuYW1lIGFzIHRoZQorZGVz
Y3JpcHRpb24uCisKK0ZvciBleGFtcGxlOgorYGBgCitNQVRDSEVSKElzRGl2aXNpYmxlQnk3LCAi
IikgeyByZXR1cm4gKGFyZyAlIDcpID09IDA7IH0KK2BgYAorYWxsb3dzIHlvdSB0byB3cml0ZQor
YGBgCisgIC8vIEV4cGVjdHMgbW9ja19mb28uQmFyKG4pIHRvIGJlIGNhbGxlZCB3aGVyZSBuIGlz
IGRpdmlzaWJsZSBieSA3LgorICBFWFBFQ1RfQ0FMTChtb2NrX2ZvbywgQmFyKElzRGl2aXNpYmxl
Qnk3KCkpKTsKK2BgYAorb3IsCitgYGAKKyAgLy8gVmVyaWZpZXMgdGhhdCB0aGUgdmFsdWUgb2Yg
c29tZV9leHByZXNzaW9uIGlzIGRpdmlzaWJsZSBieSA3LgorICBFWFBFQ1RfVEhBVChzb21lX2V4
cHJlc3Npb24sIElzRGl2aXNpYmxlQnk3KCkpOworYGBgCitJZiB0aGUgYWJvdmUgYXNzZXJ0aW9u
IGZhaWxzLCBpdCB3aWxsIHByaW50IHNvbWV0aGluZyBsaWtlOgorYGBgCisgIFZhbHVlIG9mOiBz
b21lX2V4cHJlc3Npb24KKyAgRXhwZWN0ZWQ6IGlzIGRpdmlzaWJsZSBieSA3CisgICAgQWN0dWFs
OiAyNworYGBgCit3aGVyZSB0aGUgZGVzY3JpcHRpb24gYCJpcyBkaXZpc2libGUgYnkgNyJgIGlz
IGF1dG9tYXRpY2FsbHkgY2FsY3VsYXRlZCBmcm9tIHRoZQorbWF0Y2hlciBuYW1lIGBJc0Rpdmlz
aWJsZUJ5N2AuCisKK09wdGlvbmFsbHksIHlvdSBjYW4gc3RyZWFtIGFkZGl0aW9uYWwgaW5mb3Jt
YXRpb24gdG8gYSBoaWRkZW4gYXJndW1lbnQKK25hbWVkIGByZXN1bHRfbGlzdGVuZXJgIHRvIGV4
cGxhaW4gdGhlIG1hdGNoIHJlc3VsdC4gRm9yIGV4YW1wbGUsIGEKK2JldHRlciBkZWZpbml0aW9u
IG9mIGBJc0RpdmlzaWJsZUJ5N2AgaXM6CitgYGAKK01BVENIRVIoSXNEaXZpc2libGVCeTcsICIi
KSB7CisgIGlmICgoYXJnICUgNykgPT0gMCkKKyAgICByZXR1cm4gdHJ1ZTsKKworICAqcmVzdWx0
X2xpc3RlbmVyIDw8ICJ0aGUgcmVtYWluZGVyIGlzICIgPDwgKGFyZyAlIDcpOworICByZXR1cm4g
ZmFsc2U7Cit9CitgYGAKKworV2l0aCB0aGlzIGRlZmluaXRpb24sIHRoZSBhYm92ZSBhc3NlcnRp
b24gd2lsbCBnaXZlIGEgYmV0dGVyIG1lc3NhZ2U6CitgYGAKKyAgVmFsdWUgb2Y6IHNvbWVfZXhw
cmVzc2lvbgorICBFeHBlY3RlZDogaXMgZGl2aXNpYmxlIGJ5IDcKKyAgICBBY3R1YWw6IDI3ICh0
aGUgcmVtYWluZGVyIGlzIDYpCitgYGAKKworWW91IHNob3VsZCBsZXQgYE1hdGNoQW5kRXhwbGFp
bigpYCBwcmludCBfYW55IGFkZGl0aW9uYWwgaW5mb3JtYXRpb25fCit0aGF0IGNhbiBoZWxwIGEg
dXNlciB1bmRlcnN0YW5kIHRoZSBtYXRjaCByZXN1bHQuIE5vdGUgdGhhdCBpdCBzaG91bGQKK2V4
cGxhaW4gd2h5IHRoZSBtYXRjaCBzdWNjZWVkcyBpbiBjYXNlIG9mIGEgc3VjY2VzcyAodW5sZXNz
IGl0J3MKK29idmlvdXMpIC0gdGhpcyBpcyB1c2VmdWwgd2hlbiB0aGUgbWF0Y2hlciBpcyB1c2Vk
IGluc2lkZQorYE5vdCgpYC4gVGhlcmUgaXMgbm8gbmVlZCB0byBwcmludCB0aGUgYXJndW1lbnQg
dmFsdWUgaXRzZWxmLCBhcworR29vZ2xlIE1vY2sgYWxyZWFkeSBwcmludHMgaXQgZm9yIHlvdS4K
KworKipOb3RlczoqKgorCisgIDEuIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBiZWluZyBtYXRjaGVk
IChgYXJnX3R5cGVgKSBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBjb250ZXh0IGluIHdoaWNoIHlvdSB1
c2UgdGhlIG1hdGNoZXIgYW5kIGlzIHN1cHBsaWVkIHRvIHlvdSBieSB0aGUgY29tcGlsZXIsIHNv
IHlvdSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IGRlY2xhcmluZyBpdCAobm9yIGNhbiB5b3Up
LiAgVGhpcyBhbGxvd3MgdGhlIG1hdGNoZXIgdG8gYmUgcG9seW1vcnBoaWMuICBGb3IgZXhhbXBs
ZSwgYElzRGl2aXNpYmxlQnk3KClgIGNhbiBiZSB1c2VkIHRvIG1hdGNoIGFueSB0eXBlIHdoZXJl
IHRoZSB2YWx1ZSBvZiBgKGFyZyAlIDcpID09IDBgIGNhbiBiZSBpbXBsaWNpdGx5IGNvbnZlcnRl
ZCB0byBhIGBib29sYC4gIEluIHRoZSBgQmFyKElzRGl2aXNpYmxlQnk3KCkpYCBleGFtcGxlIGFi
b3ZlLCBpZiBtZXRob2QgYEJhcigpYCB0YWtlcyBhbiBgaW50YCwgYGFyZ190eXBlYCB3aWxsIGJl
IGBpbnRgOyBpZiBpdCB0YWtlcyBhbiBgdW5zaWduZWQgbG9uZ2AsIGBhcmdfdHlwZWAgd2lsbCBi
ZSBgdW5zaWduZWQgbG9uZ2A7IGFuZCBzbyBvbi4KKyAgMS4gR29vZ2xlIE1vY2sgZG9lc24ndCBn
dWFyYW50ZWUgd2hlbiBvciBob3cgbWFueSB0aW1lcyBhIG1hdGNoZXIgd2lsbCBiZSBpbnZva2Vk
LiBUaGVyZWZvcmUgdGhlIG1hdGNoZXIgbG9naWMgbXVzdCBiZSBfcHVyZWx5IGZ1bmN0aW9uYWxf
IChpLmUuIGl0IGNhbm5vdCBoYXZlIGFueSBzaWRlIGVmZmVjdCwgYW5kIHRoZSByZXN1bHQgbXVz
dCBub3QgZGVwZW5kIG9uIGFueXRoaW5nIG90aGVyIHRoYW4gdGhlIHZhbHVlIGJlaW5nIG1hdGNo
ZWQgYW5kIHRoZSBtYXRjaGVyIHBhcmFtZXRlcnMpLiBUaGlzIHJlcXVpcmVtZW50IG11c3QgYmUg
c2F0aXNmaWVkIG5vIG1hdHRlciBob3cgeW91IGRlZmluZSB0aGUgbWF0Y2hlciAoZS5nLiB1c2lu
ZyBvbmUgb2YgdGhlIG1ldGhvZHMgZGVzY3JpYmVkIGluIHRoZSBmb2xsb3dpbmcgcmVjaXBlcyku
IEluIHBhcnRpY3VsYXIsIGEgbWF0Y2hlciBjYW4gbmV2ZXIgY2FsbCBhIG1vY2sgZnVuY3Rpb24s
IGFzIHRoYXQgd2lsbCBhZmZlY3QgdGhlIHN0YXRlIG9mIHRoZSBtb2NrIG9iamVjdCBhbmQgR29v
Z2xlIE1vY2suCisKKyMjIFdyaXRpbmcgTmV3IFBhcmFtZXRlcml6ZWQgTWF0Y2hlcnMgUXVpY2ts
eSAjIworCitTb21ldGltZXMgeW91J2xsIHdhbnQgdG8gZGVmaW5lIGEgbWF0Y2hlciB0aGF0IGhh
cyBwYXJhbWV0ZXJzLiAgRm9yIHRoYXQgeW91CitjYW4gdXNlIHRoZSBtYWNybzoKK2BgYAorTUFU
Q0hFUl9QKG5hbWUsIHBhcmFtX25hbWUsICJkZXNjcmlwdGlvbiBzdHJpbmciKSB7IHN0YXRlbWVu
dHM7IH0KK2BgYAorCitGb3IgZXhhbXBsZToKK2BgYAorTUFUQ0hFUl9QKEhhc0Fic29sdXRlVmFs
dWUsIHZhbHVlLCAiIikgeyByZXR1cm4gYWJzKGFyZykgPT0gdmFsdWU7IH0KK2BgYAord2lsbCBh
bGxvdyB5b3UgdG8gd3JpdGU6CitgYGAKKyAgRVhQRUNUX1RIQVQoQmxhaCgiYSIpLCBIYXNBYnNv
bHV0ZVZhbHVlKG4pKTsKK2BgYAord2hpY2ggbWF5IGxlYWQgdG8gdGhpcyBtZXNzYWdlIChhc3N1
bWluZyBgbmAgaXMgMTApOgorYGBgCisgIFZhbHVlIG9mOiBCbGFoKCJhIikKKyAgRXhwZWN0ZWQ6
IGhhcyBhYnNvbHV0ZSB2YWx1ZSAxMAorICAgIEFjdHVhbDogLTkKK2BgYAorCitOb3RlIHRoYXQg
Ym90aCB0aGUgbWF0Y2hlciBkZXNjcmlwdGlvbiBhbmQgaXRzIHBhcmFtZXRlciBhcmUKK3ByaW50
ZWQsIG1ha2luZyB0aGUgbWVzc2FnZSBodW1hbi1mcmllbmRseS4KKworSW4gdGhlIG1hdGNoZXIg
ZGVmaW5pdGlvbiBib2R5LCB5b3UgY2FuIHdyaXRlIGBmb29fdHlwZWAgdG8KK3JlZmVyZW5jZSB0
aGUgdHlwZSBvZiBhIHBhcmFtZXRlciBuYW1lZCBgZm9vYC4gIEZvciBleGFtcGxlLCBpbiB0aGUK
K2JvZHkgb2YgYE1BVENIRVJfUChIYXNBYnNvbHV0ZVZhbHVlLCB2YWx1ZSlgIGFib3ZlLCB5b3Ug
Y2FuIHdyaXRlCitgdmFsdWVfdHlwZWAgdG8gcmVmZXIgdG8gdGhlIHR5cGUgb2YgYHZhbHVlYC4K
KworR29vZ2xlIE1vY2sgYWxzbyBwcm92aWRlcyBgTUFUQ0hFUl9QMmAsIGBNQVRDSEVSX1AzYCwg
Li4uLCB1cCB0bworYE1BVENIRVJfUDEwYCB0byBzdXBwb3J0IG11bHRpLXBhcmFtZXRlciBtYXRj
aGVyczoKK2BgYAorTUFUQ0hFUl9QayhuYW1lLCBwYXJhbV8xLCAuLi4sIHBhcmFtX2ssICJkZXNj
cmlwdGlvbiBzdHJpbmciKSB7IHN0YXRlbWVudHM7IH0KK2BgYAorCitQbGVhc2Ugbm90ZSB0aGF0
IHRoZSBjdXN0b20gZGVzY3JpcHRpb24gc3RyaW5nIGlzIGZvciBhIHBhcnRpY3VsYXIKKyoqaW5z
dGFuY2UqKiBvZiB0aGUgbWF0Y2hlciwgd2hlcmUgdGhlIHBhcmFtZXRlcnMgaGF2ZSBiZWVuIGJv
dW5kIHRvCithY3R1YWwgdmFsdWVzLiAgVGhlcmVmb3JlIHVzdWFsbHkgeW91J2xsIHdhbnQgdGhl
IHBhcmFtZXRlciB2YWx1ZXMgdG8KK2JlIHBhcnQgb2YgdGhlIGRlc2NyaXB0aW9uLiAgR29vZ2xl
IE1vY2sgbGV0cyB5b3UgZG8gdGhhdCB1c2luZworUHl0aG9uLXN0eWxlIGludGVycG9sYXRpb25z
LiAgVGhlIGZvbGxvd2luZyBzeW50YXhlcyBhcmUgc3VwcG9ydGVkCitjdXJyZW50bHk6CisKK3wg
YCUlYCB8IGEgc2luZ2xlIGAlYCBjaGFyYWN0ZXIgfAorfDotLS0tLXw6LS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS18Cit8IGAlKCopc2AgfCBhbGwgcGFyYW1ldGVycyBvZiB0aGUgbWF0Y2hlciBwcmlu
dGVkIGFzIGEgdHVwbGUgfAorfCBgJShmb28pc2AgfCB2YWx1ZSBvZiB0aGUgbWF0Y2hlciBwYXJh
bWV0ZXIgbmFtZWQgYGZvb2AgfAorCitGb3IgZXhhbXBsZSwKK2BgYAorICBNQVRDSEVSX1AyKElu
Q2xvc2VkUmFuZ2UsIGxvdywgaGksICJpcyBpbiByYW5nZSBbJShsb3cpcywgJShoaSlzXSIpIHsK
KyAgICByZXR1cm4gbG93IDw9IGFyZyAmJiBhcmcgPD0gaGk7CisgIH0KKyAgLi4uCisgIEVYUEVD
VF9USEFUKDMsIEluQ2xvc2VkUmFuZ2UoNCwgNikpOworYGBgCit3b3VsZCBnZW5lcmF0ZSBhIGZh
aWx1cmUgdGhhdCBjb250YWlucyB0aGUgbWVzc2FnZToKK2BgYAorICBFeHBlY3RlZDogaXMgaW4g
cmFuZ2UgWzQsIDZdCitgYGAKKworSWYgeW91IHNwZWNpZnkgYCIiYCBhcyB0aGUgZGVzY3JpcHRp
b24sIHRoZSBmYWlsdXJlIG1lc3NhZ2Ugd2lsbAorY29udGFpbiB0aGUgc2VxdWVuY2Ugb2Ygd29y
ZHMgaW4gdGhlIG1hdGNoZXIgbmFtZSBmb2xsb3dlZCBieSB0aGUKK3BhcmFtZXRlciB2YWx1ZXMg
cHJpbnRlZCBhcyBhIHR1cGxlLiAgRm9yIGV4YW1wbGUsCitgYGAKKyAgTUFUQ0hFUl9QMihJbkNs
b3NlZFJhbmdlLCBsb3csIGhpLCAiIikgeyAuLi4gfQorICAuLi4KKyAgRVhQRUNUX1RIQVQoMywg
SW5DbG9zZWRSYW5nZSg0LCA2KSk7CitgYGAKK3dvdWxkIGdlbmVyYXRlIGEgZmFpbHVyZSB0aGF0
IGNvbnRhaW5zIHRoZSB0ZXh0OgorYGBgCisgIEV4cGVjdGVkOiBpbiBjbG9zZWQgcmFuZ2UgKDQs
IDYpCitgYGAKKworRm9yIHRoZSBwdXJwb3NlIG9mIHR5cGluZywgeW91IGNhbiB2aWV3CitgYGAK
K01BVENIRVJfUGsoRm9vLCBwMSwgLi4uLCBwaywgImRlc2NyaXB0aW9uIHN0cmluZyIpIHsgLi4u
IH0KK2BgYAorYXMgc2hvcnRoYW5kIGZvcgorYGBgCit0ZW1wbGF0ZSA8dHlwZW5hbWUgcDFfdHlw
ZSwgLi4uLCB0eXBlbmFtZSBwa190eXBlPgorRm9vTWF0Y2hlclBrPHAxX3R5cGUsIC4uLiwgcGtf
dHlwZT4KK0ZvbyhwMV90eXBlIHAxLCAuLi4sIHBrX3R5cGUgcGspIHsgLi4uIH0KK2BgYAorCitX
aGVuIHlvdSB3cml0ZSBgRm9vKHYxLCAuLi4sIHZrKWAsIHRoZSBjb21waWxlciBpbmZlcnMgdGhl
IHR5cGVzIG9mCit0aGUgcGFyYW1ldGVycyBgdjFgLCAuLi4sIGFuZCBgdmtgIGZvciB5b3UuICBJ
ZiB5b3UgYXJlIG5vdCBoYXBweSB3aXRoCit0aGUgcmVzdWx0IG9mIHRoZSB0eXBlIGluZmVyZW5j
ZSwgeW91IGNhbiBzcGVjaWZ5IHRoZSB0eXBlcyBieQorZXhwbGljaXRseSBpbnN0YW50aWF0aW5n
IHRoZSB0ZW1wbGF0ZSwgYXMgaW4gYEZvbzxsb25nLCBib29sPig1LCBmYWxzZSlgLgorQXMgc2Fp
ZCBlYXJsaWVyLCB5b3UgZG9uJ3QgZ2V0IHRvIChvciBuZWVkIHRvKSBzcGVjaWZ5CitgYXJnX3R5
cGVgIGFzIHRoYXQncyBkZXRlcm1pbmVkIGJ5IHRoZSBjb250ZXh0IGluIHdoaWNoIHRoZSBtYXRj
aGVyCitpcyB1c2VkLgorCitZb3UgY2FuIGFzc2lnbiB0aGUgcmVzdWx0IG9mIGV4cHJlc3Npb24g
YEZvbyhwMSwgLi4uLCBwaylgIHRvIGEKK3ZhcmlhYmxlIG9mIHR5cGUgYEZvb01hdGNoZXJQazxw
MV90eXBlLCAuLi4sIHBrX3R5cGU+YC4gIFRoaXMgY2FuIGJlCit1c2VmdWwgd2hlbiBjb21wb3Np
bmcgbWF0Y2hlcnMuICBNYXRjaGVycyB0aGF0IGRvbid0IGhhdmUgYSBwYXJhbWV0ZXIKK29yIGhh
dmUgb25seSBvbmUgcGFyYW1ldGVyIGhhdmUgc3BlY2lhbCB0eXBlczogeW91IGNhbiBhc3NpZ24g
YEZvbygpYAordG8gYSBgRm9vTWF0Y2hlcmAtdHlwZWQgdmFyaWFibGUsIGFuZCBhc3NpZ24gYEZv
byhwKWAgdG8gYQorYEZvb01hdGNoZXJQPHBfdHlwZT5gLXR5cGVkIHZhcmlhYmxlLgorCitXaGls
ZSB5b3UgY2FuIGluc3RhbnRpYXRlIGEgbWF0Y2hlciB0ZW1wbGF0ZSB3aXRoIHJlZmVyZW5jZSB0
eXBlcywKK3Bhc3NpbmcgdGhlIHBhcmFtZXRlcnMgYnkgcG9pbnRlciB1c3VhbGx5IG1ha2VzIHlv
dXIgY29kZSBtb3JlCityZWFkYWJsZS4gIElmLCBob3dldmVyLCB5b3Ugc3RpbGwgd2FudCB0byBw
YXNzIGEgcGFyYW1ldGVyIGJ5CityZWZlcmVuY2UsIGJlIGF3YXJlIHRoYXQgaW4gdGhlIGZhaWx1
cmUgbWVzc2FnZSBnZW5lcmF0ZWQgYnkgdGhlCittYXRjaGVyIHlvdSB3aWxsIHNlZSB0aGUgdmFs
dWUgb2YgdGhlIHJlZmVyZW5jZWQgb2JqZWN0IGJ1dCBub3QgaXRzCithZGRyZXNzLgorCitZb3Ug
Y2FuIG92ZXJsb2FkIG1hdGNoZXJzIHdpdGggZGlmZmVyZW50IG51bWJlcnMgb2YgcGFyYW1ldGVy
czoKK2BgYAorTUFUQ0hFUl9QKEJsYWgsIGEsICJkZXNjcmlwdGlvbiBzdHJpbmcgMSIpIHsgLi4u
IH0KK01BVENIRVJfUDIoQmxhaCwgYSwgYiwgImRlc2NyaXB0aW9uIHN0cmluZyAyIikgeyAuLi4g
fQorYGBgCisKK1doaWxlIGl0J3MgdGVtcHRpbmcgdG8gYWx3YXlzIHVzZSB0aGUgYE1BVENIRVIq
YCBtYWNyb3Mgd2hlbiBkZWZpbmluZworYSBuZXcgbWF0Y2hlciwgeW91IHNob3VsZCBhbHNvIGNv
bnNpZGVyIGltcGxlbWVudGluZworYE1hdGNoZXJJbnRlcmZhY2VgIG9yIHVzaW5nIGBNYWtlUG9s
eW1vcnBoaWNNYXRjaGVyKClgIGluc3RlYWQgKHNlZQordGhlIHJlY2lwZXMgdGhhdCBmb2xsb3cp
LCBlc3BlY2lhbGx5IGlmIHlvdSBuZWVkIHRvIHVzZSB0aGUgbWF0Y2hlciBhCitsb3QuICBXaGls
ZSB0aGVzZSBhcHByb2FjaGVzIHJlcXVpcmUgbW9yZSB3b3JrLCB0aGV5IGdpdmUgeW91IG1vcmUK
K2NvbnRyb2wgb24gdGhlIHR5cGVzIG9mIHRoZSB2YWx1ZSBiZWluZyBtYXRjaGVkIGFuZCB0aGUg
bWF0Y2hlcgorcGFyYW1ldGVycywgd2hpY2ggaW4gZ2VuZXJhbCBsZWFkcyB0byBiZXR0ZXIgY29t
cGlsZXIgZXJyb3IgbWVzc2FnZXMKK3RoYXQgcGF5IG9mZiBpbiB0aGUgbG9uZyBydW4uICBUaGV5
IGFsc28gYWxsb3cgb3ZlcmxvYWRpbmcgbWF0Y2hlcnMKK2Jhc2VkIG9uIHBhcmFtZXRlciB0eXBl
cyAoYXMgb3Bwb3NlZCB0byBqdXN0IGJhc2VkIG9uIHRoZSBudW1iZXIgb2YKK3BhcmFtZXRlcnMp
LgorCisjIyBXcml0aW5nIE5ldyBNb25vbW9ycGhpYyBNYXRjaGVycyAjIworCitBIG1hdGNoZXIg
b2YgYXJndW1lbnQgdHlwZSBgVGAgaW1wbGVtZW50cworYDo6dGVzdGluZzo6TWF0Y2hlckludGVy
ZmFjZTxUPmAgYW5kIGRvZXMgdHdvIHRoaW5nczogaXQgdGVzdHMgd2hldGhlciBhCit2YWx1ZSBv
ZiB0eXBlIGBUYCBtYXRjaGVzIHRoZSBtYXRjaGVyLCBhbmQgY2FuIGRlc2NyaWJlIHdoYXQga2lu
ZCBvZgordmFsdWVzIGl0IG1hdGNoZXMuIFRoZSBsYXR0ZXIgYWJpbGl0eSBpcyB1c2VkIGZvciBn
ZW5lcmF0aW5nIHJlYWRhYmxlCitlcnJvciBtZXNzYWdlcyB3aGVuIGV4cGVjdGF0aW9ucyBhcmUg
dmlvbGF0ZWQuCisKK1RoZSBpbnRlcmZhY2UgbG9va3MgbGlrZSB0aGlzOgorCitgYGAKK2NsYXNz
IE1hdGNoUmVzdWx0TGlzdGVuZXIgeworIHB1YmxpYzoKKyAgLi4uCisgIC8vIFN0cmVhbXMgeCB0
byB0aGUgdW5kZXJseWluZyBvc3RyZWFtOyBkb2VzIG5vdGhpbmcgaWYgdGhlIG9zdHJlYW0KKyAg
Ly8gaXMgTlVMTC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIE1hdGNoUmVzdWx0TGlzdGVu
ZXImIG9wZXJhdG9yPDwoY29uc3QgVCYgeCk7CisKKyAgLy8gUmV0dXJucyB0aGUgdW5kZXJseWlu
ZyBvc3RyZWFtLgorICA6OnN0ZDo6b3N0cmVhbSogc3RyZWFtKCk7Cit9OworCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KK2NsYXNzIE1hdGNoZXJJbnRlcmZhY2UgeworIHB1YmxpYzoKKyAgdmlydHVh
bCB+TWF0Y2hlckludGVyZmFjZSgpOworCisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIG1hdGNo
ZXIgbWF0Y2hlcyB4OyBhbHNvIGV4cGxhaW5zIHRoZSBtYXRjaAorICAvLyByZXN1bHQgdG8gJ2xp
c3RlbmVyJy4KKyAgdmlydHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbihUIHgsIE1hdGNoUmVzdWx0
TGlzdGVuZXIqIGxpc3RlbmVyKSBjb25zdCA9IDA7CisKKyAgLy8gRGVzY3JpYmVzIHRoaXMgbWF0
Y2hlciB0byBhbiBvc3RyZWFtLgorICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0
cmVhbSogb3MpIGNvbnN0ID0gMDsKKworICAvLyBEZXNjcmliZXMgdGhlIG5lZ2F0aW9uIG9mIHRo
aXMgbWF0Y2hlciB0byBhbiBvc3RyZWFtLgorICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVOZWdhdGlv
blRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3Q7Cit9OworYGBgCisKK0lmIHlvdSBuZWVkIGEg
Y3VzdG9tIG1hdGNoZXIgYnV0IGBUcnVseSgpYCBpcyBub3QgYSBnb29kIG9wdGlvbiAoZm9yCitl
eGFtcGxlLCB5b3UgbWF5IG5vdCBiZSBoYXBweSB3aXRoIHRoZSB3YXkgYFRydWx5KHByZWRpY2F0
ZSlgCitkZXNjcmliZXMgaXRzZWxmLCBvciB5b3UgbWF5IHdhbnQgeW91ciBtYXRjaGVyIHRvIGJl
IHBvbHltb3JwaGljIGFzCitgRXEodmFsdWUpYCBpcyksIHlvdSBjYW4gZGVmaW5lIGEgbWF0Y2hl
ciB0byBkbyB3aGF0ZXZlciB5b3Ugd2FudCBpbgordHdvIHN0ZXBzOiBmaXJzdCBpbXBsZW1lbnQg
dGhlIG1hdGNoZXIgaW50ZXJmYWNlLCBhbmQgdGhlbiBkZWZpbmUgYQorZmFjdG9yeSBmdW5jdGlv
biB0byBjcmVhdGUgYSBtYXRjaGVyIGluc3RhbmNlLiBUaGUgc2Vjb25kIHN0ZXAgaXMgbm90Citz
dHJpY3RseSBuZWVkZWQgYnV0IGl0IG1ha2VzIHRoZSBzeW50YXggb2YgdXNpbmcgdGhlIG1hdGNo
ZXIgbmljZXIuCisKK0ZvciBleGFtcGxlLCB5b3UgY2FuIGRlZmluZSBhIG1hdGNoZXIgdG8gdGVz
dCB3aGV0aGVyIGFuIGBpbnRgIGlzCitkaXZpc2libGUgYnkgNyBhbmQgdGhlbiB1c2UgaXQgbGlr
ZSB0aGlzOgorYGBgCit1c2luZyA6OnRlc3Rpbmc6Ok1ha2VNYXRjaGVyOwordXNpbmcgOjp0ZXN0
aW5nOjpNYXRjaGVyOwordXNpbmcgOjp0ZXN0aW5nOjpNYXRjaGVySW50ZXJmYWNlOwordXNpbmcg
Ojp0ZXN0aW5nOjpNYXRjaFJlc3VsdExpc3RlbmVyOworCitjbGFzcyBEaXZpc2libGVCeTdNYXRj
aGVyIDogcHVibGljIE1hdGNoZXJJbnRlcmZhY2U8aW50PiB7CisgcHVibGljOgorICB2aXJ0dWFs
IGJvb2wgTWF0Y2hBbmRFeHBsYWluKGludCBuLCBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5l
cikgY29uc3QgeworICAgIHJldHVybiAobiAlIDcpID09IDA7CisgIH0KKworICB2aXJ0dWFsIHZv
aWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKKyAgICAqb3MgPDwgImlz
IGRpdmlzaWJsZSBieSA3IjsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBEZXNjcmliZU5lZ2F0aW9u
VG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7CisgICAgKm9zIDw8ICJpcyBub3QgZGl2aXNp
YmxlIGJ5IDciOworICB9Cit9OworCitpbmxpbmUgTWF0Y2hlcjxpbnQ+IERpdmlzaWJsZUJ5Nygp
IHsKKyAgcmV0dXJuIE1ha2VNYXRjaGVyKG5ldyBEaXZpc2libGVCeTdNYXRjaGVyKTsKK30KKy4u
LgorCisgIEVYUEVDVF9DQUxMKGZvbywgQmFyKERpdmlzaWJsZUJ5NygpKSk7CitgYGAKKworWW91
IG1heSBpbXByb3ZlIHRoZSBtYXRjaGVyIG1lc3NhZ2UgYnkgc3RyZWFtaW5nIGFkZGl0aW9uYWwK
K2luZm9ybWF0aW9uIHRvIHRoZSBgbGlzdGVuZXJgIGFyZ3VtZW50IGluIGBNYXRjaEFuZEV4cGxh
aW4oKWA6CisKK2BgYAorY2xhc3MgRGl2aXNpYmxlQnk3TWF0Y2hlciA6IHB1YmxpYyBNYXRjaGVy
SW50ZXJmYWNlPGludD4geworIHB1YmxpYzoKKyAgdmlydHVhbCBib29sIE1hdGNoQW5kRXhwbGFp
bihpbnQgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3Rl
bmVyKiBsaXN0ZW5lcikgY29uc3QgeworICAgIGNvbnN0IGludCByZW1haW5kZXIgPSBuICUgNzsK
KyAgICBpZiAocmVtYWluZGVyICE9IDApIHsKKyAgICAgICpsaXN0ZW5lciA8PCAidGhlIHJlbWFp
bmRlciBpcyAiIDw8IHJlbWFpbmRlcjsKKyAgICB9CisgICAgcmV0dXJuIHJlbWFpbmRlciA9PSAw
OworICB9CisgIC4uLgorfTsKK2BgYAorCitUaGVuLCBgRVhQRUNUX1RIQVQoeCwgRGl2aXNpYmxl
Qnk3KCkpO2AgbWF5IGdlbmVyYWwgYSBtZXNzYWdlIGxpa2UgdGhpczoKK2BgYAorVmFsdWUgb2Y6
IHgKK0V4cGVjdGVkOiBpcyBkaXZpc2libGUgYnkgNworICBBY3R1YWw6IDIzICh0aGUgcmVtYWlu
ZGVyIGlzIDIpCitgYGAKKworIyMgV3JpdGluZyBOZXcgUG9seW1vcnBoaWMgTWF0Y2hlcnMgIyMK
KworWW91J3ZlIGxlYXJuZWQgaG93IHRvIHdyaXRlIHlvdXIgb3duIG1hdGNoZXJzIGluIHRoZSBw
cmV2aW91cworcmVjaXBlLiBKdXN0IG9uZSBwcm9ibGVtOiBhIG1hdGNoZXIgY3JlYXRlZCB1c2lu
ZyBgTWFrZU1hdGNoZXIoKWAgb25seQord29ya3MgZm9yIG9uZSBwYXJ0aWN1bGFyIHR5cGUgb2Yg
YXJndW1lbnRzLiBJZiB5b3Ugd2FudCBhCitfcG9seW1vcnBoaWNfIG1hdGNoZXIgdGhhdCB3b3Jr
cyB3aXRoIGFyZ3VtZW50cyBvZiBzZXZlcmFsIHR5cGVzIChmb3IKK2luc3RhbmNlLCBgRXEoeClg
IGNhbiBiZSB1c2VkIHRvIG1hdGNoIGEgYHZhbHVlYCBhcyBsb25nIGFzIGB2YWx1ZWAgPT0KK2B4
YCBjb21waWxlcyAtLSBgdmFsdWVgIGFuZCBgeGAgZG9uJ3QgaGF2ZSB0byBzaGFyZSB0aGUgc2Ft
ZSB0eXBlKSwKK3lvdSBjYW4gbGVhcm4gdGhlIHRyaWNrIGZyb20gYDxnbW9jay9nbW9jay1tYXRj
aGVycy5oPmAgYnV0IGl0J3MgYSBiaXQKK2ludm9sdmVkLgorCitGb3J0dW5hdGVseSwgbW9zdCBv
ZiB0aGUgdGltZSB5b3UgY2FuIGRlZmluZSBhIHBvbHltb3JwaGljIG1hdGNoZXIKK2Vhc2lseSB3
aXRoIHRoZSBoZWxwIG9mIGBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKClgLiBIZXJlJ3MgaG93IHlv
dSBjYW4KK2RlZmluZSBgTm90TnVsbCgpYCBhcyBhbiBleGFtcGxlOgorCitgYGAKK3VzaW5nIDo6
dGVzdGluZzo6TWFrZVBvbHltb3JwaGljTWF0Y2hlcjsKK3VzaW5nIDo6dGVzdGluZzo6TWF0Y2hS
ZXN1bHRMaXN0ZW5lcjsKK3VzaW5nIDo6dGVzdGluZzo6Tm90TnVsbDsKK3VzaW5nIDo6dGVzdGlu
Zzo6UG9seW1vcnBoaWNNYXRjaGVyOworCitjbGFzcyBOb3ROdWxsTWF0Y2hlciB7CisgcHVibGlj
OgorICAvLyBUbyBpbXBsZW1lbnQgYSBwb2x5bW9ycGhpYyBtYXRjaGVyLCBmaXJzdCBkZWZpbmUg
YSBDT1BZQUJMRSBjbGFzcworICAvLyB0aGF0IGhhcyB0aHJlZSBtZW1iZXJzIE1hdGNoQW5kRXhw
bGFpbigpLCBEZXNjcmliZVRvKCksIGFuZAorICAvLyBEZXNjcmliZU5lZ2F0aW9uVG8oKSwgbGlr
ZSB0aGUgZm9sbG93aW5nLgorCisgIC8vIEluIHRoaXMgZXhhbXBsZSwgd2Ugd2FudCB0byB1c2Ug
Tm90TnVsbCgpIHdpdGggYW55IHBvaW50ZXIsIHNvCisgIC8vIE1hdGNoQW5kRXhwbGFpbigpIGFj
Y2VwdHMgYSBwb2ludGVyIG9mIGFueSB0eXBlIGFzIGl0cyBmaXJzdCBhcmd1bWVudC4KKyAgLy8g
SW4gZ2VuZXJhbCwgeW91IGNhbiBkZWZpbmUgTWF0Y2hBbmRFeHBsYWluKCkgYXMgYW4gb3JkaW5h
cnkgbWV0aG9kIG9yCisgIC8vIGEgbWV0aG9kIHRlbXBsYXRlLCBvciBldmVuIG92ZXJsb2FkIGl0
LgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgYm9vbCBNYXRjaEFuZEV4cGxhaW4oVCogcCwK
KyAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHRMaXN0ZW5lciogLyogbGlzdGVuZXIg
Ki8pIGNvbnN0IHsKKyAgICByZXR1cm4gcCAhPSBOVUxMOworICB9CisKKyAgLy8gRGVzY3JpYmVz
IHRoZSBwcm9wZXJ0eSBvZiBhIHZhbHVlIG1hdGNoaW5nIHRoaXMgbWF0Y2hlci4KKyAgdm9pZCBE
ZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgeyAqb3MgPDwgImlzIG5vdCBOVUxM
IjsgfQorCisgIC8vIERlc2NyaWJlcyB0aGUgcHJvcGVydHkgb2YgYSB2YWx1ZSBOT1QgbWF0Y2hp
bmcgdGhpcyBtYXRjaGVyLgorICB2b2lkIERlc2NyaWJlTmVnYXRpb25Ubyg6OnN0ZDo6b3N0cmVh
bSogb3MpIGNvbnN0IHsgKm9zIDw8ICJpcyBOVUxMIjsgfQorfTsKKworLy8gVG8gY29uc3RydWN0
IGEgcG9seW1vcnBoaWMgbWF0Y2hlciwgcGFzcyBhbiBpbnN0YW5jZSBvZiB0aGUgY2xhc3MKKy8v
IHRvIE1ha2VQb2x5bW9ycGhpY01hdGNoZXIoKS4gIE5vdGUgdGhlIHJldHVybiB0eXBlLgoraW5s
aW5lIFBvbHltb3JwaGljTWF0Y2hlcjxOb3ROdWxsTWF0Y2hlcj4gTm90TnVsbCgpIHsKKyAgcmV0
dXJuIE1ha2VQb2x5bW9ycGhpY01hdGNoZXIoTm90TnVsbE1hdGNoZXIoKSk7Cit9CisuLi4KKwor
ICBFWFBFQ1RfQ0FMTChmb28sIEJhcihOb3ROdWxsKCkpKTsgIC8vIFRoZSBhcmd1bWVudCBtdXN0
IGJlIGEgbm9uLU5VTEwgcG9pbnRlci4KK2BgYAorCisqKk5vdGU6KiogWW91ciBwb2x5bW9ycGhp
YyBtYXRjaGVyIGNsYXNzIGRvZXMgKipub3QqKiBuZWVkIHRvIGluaGVyaXQgZnJvbQorYE1hdGNo
ZXJJbnRlcmZhY2VgIG9yIGFueSBvdGhlciBjbGFzcywgYW5kIGl0cyBtZXRob2RzIGRvICoqbm90
KiogbmVlZAordG8gYmUgdmlydHVhbC4KKworTGlrZSBpbiBhIG1vbm9tb3JwaGljIG1hdGNoZXIs
IHlvdSBtYXkgZXhwbGFpbiB0aGUgbWF0Y2ggcmVzdWx0IGJ5CitzdHJlYW1pbmcgYWRkaXRpb25h
bCBpbmZvcm1hdGlvbiB0byB0aGUgYGxpc3RlbmVyYCBhcmd1bWVudCBpbgorYE1hdGNoQW5kRXhw
bGFpbigpYC4KKworIyMgV3JpdGluZyBOZXcgQ2FyZGluYWxpdGllcyAjIworCitBIGNhcmRpbmFs
aXR5IGlzIHVzZWQgaW4gYFRpbWVzKClgIHRvIHRlbGwgR29vZ2xlIE1vY2sgaG93IG1hbnkgdGlt
ZXMKK3lvdSBleHBlY3QgYSBjYWxsIHRvIG9jY3VyLiBJdCBkb2Vzbid0IGhhdmUgdG8gYmUgZXhh
Y3QuIEZvciBleGFtcGxlLAoreW91IGNhbiBzYXkgYEF0TGVhc3QoNSlgIG9yIGBCZXR3ZWVuKDIs
IDQpYC4KKworSWYgdGhlIGJ1aWx0LWluIHNldCBvZiBjYXJkaW5hbGl0aWVzIGRvZXNuJ3Qgc3Vp
dCB5b3UsIHlvdSBhcmUgZnJlZSB0bworZGVmaW5lIHlvdXIgb3duIGJ5IGltcGxlbWVudGluZyB0
aGUgZm9sbG93aW5nIGludGVyZmFjZSAoaW4gbmFtZXNwYWNlCitgdGVzdGluZ2ApOgorCitgYGAK
K2NsYXNzIENhcmRpbmFsaXR5SW50ZXJmYWNlIHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgfkNhcmRp
bmFsaXR5SW50ZXJmYWNlKCk7CisKKyAgLy8gUmV0dXJucyB0cnVlIGlmZiBjYWxsX2NvdW50IGNh
bGxzIHdpbGwgc2F0aXNmeSB0aGlzIGNhcmRpbmFsaXR5LgorICB2aXJ0dWFsIGJvb2wgSXNTYXRp
c2ZpZWRCeUNhbGxDb3VudChpbnQgY2FsbF9jb3VudCkgY29uc3QgPSAwOworCisgIC8vIFJldHVy
bnMgdHJ1ZSBpZmYgY2FsbF9jb3VudCBjYWxscyB3aWxsIHNhdHVyYXRlIHRoaXMgY2FyZGluYWxp
dHkuCisgIHZpcnR1YWwgYm9vbCBJc1NhdHVyYXRlZEJ5Q2FsbENvdW50KGludCBjYWxsX2NvdW50
KSBjb25zdCA9IDA7CisKKyAgLy8gRGVzY3JpYmVzIHNlbGYgdG8gYW4gb3N0cmVhbS4KKyAgdmly
dHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCA9IDA7Cit9Owor
YGBgCisKK0ZvciBleGFtcGxlLCB0byBzcGVjaWZ5IHRoYXQgYSBjYWxsIG11c3Qgb2NjdXIgZXZl
biBudW1iZXIgb2YgdGltZXMsCit5b3UgY2FuIHdyaXRlCisKK2BgYAordXNpbmcgOjp0ZXN0aW5n
OjpDYXJkaW5hbGl0eTsKK3VzaW5nIDo6dGVzdGluZzo6Q2FyZGluYWxpdHlJbnRlcmZhY2U7Cit1
c2luZyA6OnRlc3Rpbmc6Ok1ha2VDYXJkaW5hbGl0eTsKKworY2xhc3MgRXZlbk51bWJlckNhcmRp
bmFsaXR5IDogcHVibGljIENhcmRpbmFsaXR5SW50ZXJmYWNlIHsKKyBwdWJsaWM6CisgIHZpcnR1
YWwgYm9vbCBJc1NhdGlzZmllZEJ5Q2FsbENvdW50KGludCBjYWxsX2NvdW50KSBjb25zdCB7Cisg
ICAgcmV0dXJuIChjYWxsX2NvdW50ICUgMikgPT0gMDsKKyAgfQorCisgIHZpcnR1YWwgYm9vbCBJ
c1NhdHVyYXRlZEJ5Q2FsbENvdW50KGludCBjYWxsX2NvdW50KSBjb25zdCB7CisgICAgcmV0dXJu
IGZhbHNlOworICB9CisKKyAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0q
IG9zKSBjb25zdCB7CisgICAgKm9zIDw8ICJjYWxsZWQgZXZlbiBudW1iZXIgb2YgdGltZXMiOwor
ICB9Cit9OworCitDYXJkaW5hbGl0eSBFdmVuTnVtYmVyKCkgeworICByZXR1cm4gTWFrZUNhcmRp
bmFsaXR5KG5ldyBFdmVuTnVtYmVyQ2FyZGluYWxpdHkpOworfQorLi4uCisKKyAgRVhQRUNUX0NB
TEwoZm9vLCBCYXIoMykpCisgICAgICAuVGltZXMoRXZlbk51bWJlcigpKTsKK2BgYAorCisjIyBX
cml0aW5nIE5ldyBBY3Rpb25zIFF1aWNrbHkgIyMKKworSWYgdGhlIGJ1aWx0LWluIGFjdGlvbnMg
ZG9uJ3Qgd29yayBmb3IgeW91LCBhbmQgeW91IGZpbmQgaXQKK2luY29udmVuaWVudCB0byB1c2Ug
YEludm9rZSgpYCwgeW91IGNhbiB1c2UgYSBtYWNybyBmcm9tIHRoZSBgQUNUSU9OKmAKK2ZhbWls
eSB0byBxdWlja2x5IGRlZmluZSBhIG5ldyBhY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCBpbiB5b3Vy
IGNvZGUgYXMKK2lmIGl0J3MgYSBidWlsdC1pbiBhY3Rpb24uCisKK0J5IHdyaXRpbmcKK2BgYAor
QUNUSU9OKG5hbWUpIHsgc3RhdGVtZW50czsgfQorYGBgCitpbiBhIG5hbWVzcGFjZSBzY29wZSAo
aS5lLiBub3QgaW5zaWRlIGEgY2xhc3Mgb3IgZnVuY3Rpb24pLCB5b3Ugd2lsbAorZGVmaW5lIGFu
IGFjdGlvbiB3aXRoIHRoZSBnaXZlbiBuYW1lIHRoYXQgZXhlY3V0ZXMgdGhlIHN0YXRlbWVudHMu
CitUaGUgdmFsdWUgcmV0dXJuZWQgYnkgYHN0YXRlbWVudHNgIHdpbGwgYmUgdXNlZCBhcyB0aGUg
cmV0dXJuIHZhbHVlIG9mCit0aGUgYWN0aW9uLiAgSW5zaWRlIHRoZSBzdGF0ZW1lbnRzLCB5b3Ug
Y2FuIHJlZmVyIHRvIHRoZSBLLXRoCisoMC1iYXNlZCkgYXJndW1lbnQgb2YgdGhlIG1vY2sgZnVu
Y3Rpb24gYXMgYGFyZ0tgLiAgRm9yIGV4YW1wbGU6CitgYGAKK0FDVElPTihJbmNyZW1lbnRBcmcx
KSB7IHJldHVybiArKygqYXJnMSk7IH0KK2BgYAorYWxsb3dzIHlvdSB0byB3cml0ZQorYGBgCisu
Li4gV2lsbE9uY2UoSW5jcmVtZW50QXJnMSgpKTsKK2BgYAorCitOb3RlIHRoYXQgeW91IGRvbid0
IG5lZWQgdG8gc3BlY2lmeSB0aGUgdHlwZXMgb2YgdGhlIG1vY2sgZnVuY3Rpb24KK2FyZ3VtZW50
cy4gIFJlc3QgYXNzdXJlZCB0aGF0IHlvdXIgY29kZSBpcyB0eXBlLXNhZmUgdGhvdWdoOgoreW91
J2xsIGdldCBhIGNvbXBpbGVyIGVycm9yIGlmIGAqYXJnMWAgZG9lc24ndCBzdXBwb3J0IHRoZSBg
KytgCitvcGVyYXRvciwgb3IgaWYgdGhlIHR5cGUgb2YgYCsrKCphcmcxKWAgaXNuJ3QgY29tcGF0
aWJsZSB3aXRoIHRoZSBtb2NrCitmdW5jdGlvbidzIHJldHVybiB0eXBlLgorCitBbm90aGVyIGV4
YW1wbGU6CitgYGAKK0FDVElPTihGb28pIHsKKyAgKCphcmcyKSg1KTsKKyAgQmxhaCgpOworICAq
YXJnMSA9IDA7CisgIHJldHVybiBhcmcwOworfQorYGBgCitkZWZpbmVzIGFuIGFjdGlvbiBgRm9v
KClgIHRoYXQgaW52b2tlcyBhcmd1bWVudCAjMiAoYSBmdW5jdGlvbiBwb2ludGVyKQord2l0aCA1
LCBjYWxscyBmdW5jdGlvbiBgQmxhaCgpYCwgc2V0cyB0aGUgdmFsdWUgcG9pbnRlZCB0byBieSBh
cmd1bWVudAorIzEgdG8gMCwgYW5kIHJldHVybnMgYXJndW1lbnQgIzAuCisKK0ZvciBtb3JlIGNv
bnZlbmllbmNlIGFuZCBmbGV4aWJpbGl0eSwgeW91IGNhbiBhbHNvIHVzZSB0aGUgZm9sbG93aW5n
CitwcmUtZGVmaW5lZCBzeW1ib2xzIGluIHRoZSBib2R5IG9mIGBBQ1RJT05gOgorCit8IGBhcmdL
X3R5cGVgIHwgVGhlIHR5cGUgb2YgdGhlIEstdGggKDAtYmFzZWQpIGFyZ3VtZW50IG9mIHRoZSBt
b2NrIGZ1bmN0aW9uIHwKK3w6LS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorfCBgYXJnc2AgICAgICB8IEFs
bCBhcmd1bWVudHMgb2YgdGhlIG1vY2sgZnVuY3Rpb24gYXMgYSB0dXBsZSAgICAgICAgICAgICAg
ICB8Cit8IGBhcmdzX3R5cGVgIHwgVGhlIHR5cGUgb2YgYWxsIGFyZ3VtZW50cyBvZiB0aGUgbW9j
ayBmdW5jdGlvbiBhcyBhIHR1cGxlICAgIHwKK3wgYHJldHVybl90eXBlYCB8IFRoZSByZXR1cm4g
dHlwZSBvZiB0aGUgbW9jayBmdW5jdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8IGBm
dW5jdGlvbl90eXBlYCB8IFRoZSB0eXBlIG9mIHRoZSBtb2NrIGZ1bmN0aW9uICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8CisKK0ZvciBleGFtcGxlLCB3aGVuIHVzaW5nIGFuIGBBQ1RJ
T05gIGFzIGEgc3R1YiBhY3Rpb24gZm9yIG1vY2sgZnVuY3Rpb246CitgYGAKK2ludCBEb1NvbWV0
aGluZyhib29sIGZsYWcsIGludCogcHRyKTsKK2BgYAord2UgaGF2ZToKK3wgKipQcmUtZGVmaW5l
ZCBTeW1ib2wqKiB8ICoqSXMgQm91bmQgVG8qKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
fDotLS0tLS0tLS0tLS0tLS0tfAorfCBgYXJnMGAgICAgICAgICAgICAgICAgIHwgdGhlIHZhbHVl
IG9mIGBmbGFnYCB8Cit8IGBhcmcwX3R5cGVgICAgICAgICAgICAgfCB0aGUgdHlwZSBgYm9vbGAg
fAorfCBgYXJnMWAgICAgICAgICAgICAgICAgIHwgdGhlIHZhbHVlIG9mIGBwdHJgIHwKK3wgYGFy
ZzFfdHlwZWAgICAgICAgICAgICB8IHRoZSB0eXBlIGBpbnQqYCB8Cit8IGBhcmdzYCAgICAgICAg
ICAgICAgICAgfCB0aGUgdHVwbGUgYChmbGFnLCBwdHIpYCB8Cit8IGBhcmdzX3R5cGVgICAgICAg
ICAgICAgfCB0aGUgdHlwZSBgc3RkOjp0cjE6OnR1cGxlPGJvb2wsIGludCo+YCB8Cit8IGByZXR1
cm5fdHlwZWAgICAgICAgICAgfCB0aGUgdHlwZSBgaW50YCAgfAorfCBgZnVuY3Rpb25fdHlwZWAg
ICAgICAgIHwgdGhlIHR5cGUgYGludChib29sLCBpbnQqKWAgfAorCisjIyBXcml0aW5nIE5ldyBQ
YXJhbWV0ZXJpemVkIEFjdGlvbnMgUXVpY2tseSAjIworCitTb21ldGltZXMgeW91J2xsIHdhbnQg
dG8gcGFyYW1ldGVyaXplIGFuIGFjdGlvbiB5b3UgZGVmaW5lLiAgRm9yIHRoYXQKK3dlIGhhdmUg
YW5vdGhlciBtYWNybworYGBgCitBQ1RJT05fUChuYW1lLCBwYXJhbSkgeyBzdGF0ZW1lbnRzOyB9
CitgYGAKKworRm9yIGV4YW1wbGUsCitgYGAKK0FDVElPTl9QKEFkZCwgbikgeyByZXR1cm4gYXJn
MCArIG47IH0KK2BgYAord2lsbCBhbGxvdyB5b3UgdG8gd3JpdGUKK2BgYAorLy8gUmV0dXJucyBh
cmd1bWVudCAjMCArIDUuCisuLi4gV2lsbE9uY2UoQWRkKDUpKTsKK2BgYAorCitGb3IgY29udmVu
aWVuY2UsIHdlIHVzZSB0aGUgdGVybSBfYXJndW1lbnRzXyBmb3IgdGhlIHZhbHVlcyB1c2VkIHRv
CitpbnZva2UgdGhlIG1vY2sgZnVuY3Rpb24sIGFuZCB0aGUgdGVybSBfcGFyYW1ldGVyc18gZm9y
IHRoZSB2YWx1ZXMKK3VzZWQgdG8gaW5zdGFudGlhdGUgYW4gYWN0aW9uLgorCitOb3RlIHRoYXQg
eW91IGRvbid0IG5lZWQgdG8gcHJvdmlkZSB0aGUgdHlwZSBvZiB0aGUgcGFyYW1ldGVyIGVpdGhl
ci4KK1N1cHBvc2UgdGhlIHBhcmFtZXRlciBpcyBuYW1lZCBgcGFyYW1gLCB5b3UgY2FuIGFsc28g
dXNlIHRoZQorR29vZ2xlLU1vY2stZGVmaW5lZCBzeW1ib2wgYHBhcmFtX3R5cGVgIHRvIHJlZmVy
IHRvIHRoZSB0eXBlIG9mIHRoZQorcGFyYW1ldGVyIGFzIGluZmVycmVkIGJ5IHRoZSBjb21waWxl
ci4gIEZvciBleGFtcGxlLCBpbiB0aGUgYm9keSBvZgorYEFDVElPTl9QKEFkZCwgbilgIGFib3Zl
LCB5b3UgY2FuIHdyaXRlIGBuX3R5cGVgIGZvciB0aGUgdHlwZSBvZiBgbmAuCisKK0dvb2dsZSBN
b2NrIGFsc28gcHJvdmlkZXMgYEFDVElPTl9QMmAsIGBBQ1RJT05fUDNgLCBhbmQgZXRjIHRvIHN1
cHBvcnQKK211bHRpLXBhcmFtZXRlciBhY3Rpb25zLiAgRm9yIGV4YW1wbGUsCitgYGAKK0FDVElP
Tl9QMihSZXR1cm5EaXN0YW5jZVRvLCB4LCB5KSB7CisgIGRvdWJsZSBkeCA9IGFyZzAgLSB4Owor
ICBkb3VibGUgZHkgPSBhcmcxIC0geTsKKyAgcmV0dXJuIHNxcnQoZHgqZHggKyBkeSpkeSk7Cit9
CitgYGAKK2xldHMgeW91IHdyaXRlCitgYGAKKy4uLiBXaWxsT25jZShSZXR1cm5EaXN0YW5jZVRv
KDUuMCwgMjYuNSkpOworYGBgCisKK1lvdSBjYW4gdmlldyBgQUNUSU9OYCBhcyBhIGRlZ2VuZXJh
dGVkIHBhcmFtZXRlcml6ZWQgYWN0aW9uIHdoZXJlIHRoZQorbnVtYmVyIG9mIHBhcmFtZXRlcnMg
aXMgMC4KKworWW91IGNhbiBhbHNvIGVhc2lseSBkZWZpbmUgYWN0aW9ucyBvdmVybG9hZGVkIG9u
IHRoZSBudW1iZXIgb2YgcGFyYW1ldGVyczoKK2BgYAorQUNUSU9OX1AoUGx1cywgYSkgeyAuLi4g
fQorQUNUSU9OX1AyKFBsdXMsIGEsIGIpIHsgLi4uIH0KK2BgYAorCisjIyBSZXN0cmljdGluZyB0
aGUgVHlwZSBvZiBhbiBBcmd1bWVudCBvciBQYXJhbWV0ZXIgaW4gYW4gQUNUSU9OICMjCisKK0Zv
ciBtYXhpbXVtIGJyZXZpdHkgYW5kIHJldXNhYmlsaXR5LCB0aGUgYEFDVElPTipgIG1hY3JvcyBk
b24ndCBhc2sKK3lvdSB0byBwcm92aWRlIHRoZSB0eXBlcyBvZiB0aGUgbW9jayBmdW5jdGlvbiBh
cmd1bWVudHMgYW5kIHRoZSBhY3Rpb24KK3BhcmFtZXRlcnMuICBJbnN0ZWFkLCB3ZSBsZXQgdGhl
IGNvbXBpbGVyIGluZmVyIHRoZSB0eXBlcyBmb3IgdXMuCisKK1NvbWV0aW1lcywgaG93ZXZlciwg
d2UgbWF5IHdhbnQgdG8gYmUgbW9yZSBleHBsaWNpdCBhYm91dCB0aGUgdHlwZXMuCitUaGVyZSBh
cmUgc2V2ZXJhbCB0cmlja3MgdG8gZG8gdGhhdC4gIEZvciBleGFtcGxlOgorYGBgCitBQ1RJT04o
Rm9vKSB7CisgIC8vIE1ha2VzIHN1cmUgYXJnMCBjYW4gYmUgY29udmVydGVkIHRvIGludC4KKyAg
aW50IG4gPSBhcmcwOworICAuLi4gdXNlIG4gaW5zdGVhZCBvZiBhcmcwIGhlcmUgLi4uCit9CisK
K0FDVElPTl9QKEJhciwgcGFyYW0pIHsKKyAgLy8gTWFrZXMgc3VyZSB0aGUgdHlwZSBvZiBhcmcx
IGlzIGNvbnN0IGNoYXIqLgorICA6OnRlc3Rpbmc6OlN0YXRpY0Fzc2VydFR5cGVFcTxjb25zdCBj
aGFyKiwgYXJnMV90eXBlPigpOworCisgIC8vIE1ha2VzIHN1cmUgcGFyYW0gY2FuIGJlIGNvbnZl
cnRlZCB0byBib29sLgorICBib29sIGZsYWcgPSBwYXJhbTsKK30KK2BgYAord2hlcmUgYFN0YXRp
Y0Fzc2VydFR5cGVFcWAgaXMgYSBjb21waWxlLXRpbWUgYXNzZXJ0aW9uIGluIEdvb2dsZSBUZXN0
Cit0aGF0IHZlcmlmaWVzIHR3byB0eXBlcyBhcmUgdGhlIHNhbWUuCisKKyMjIFdyaXRpbmcgTmV3
IEFjdGlvbiBUZW1wbGF0ZXMgUXVpY2tseSAjIworCitTb21ldGltZXMgeW91IHdhbnQgdG8gZ2l2
ZSBhbiBhY3Rpb24gZXhwbGljaXQgdGVtcGxhdGUgcGFyYW1ldGVycyB0aGF0CitjYW5ub3QgYmUg
aW5mZXJyZWQgZnJvbSBpdHMgdmFsdWUgcGFyYW1ldGVycy4gIGBBQ1RJT05fVEVNUExBVEUoKWAK
K3N1cHBvcnRzIHRoYXQgYW5kIGNhbiBiZSB2aWV3ZWQgYXMgYW4gZXh0ZW5zaW9uIHRvIGBBQ1RJ
T04oKWAgYW5kCitgQUNUSU9OX1AqKClgLgorCitUaGUgc3ludGF4OgorYGBgCitBQ1RJT05fVEVN
UExBVEUoQWN0aW9uTmFtZSwKKyAgICAgICAgICAgICAgICBIQVNfbV9URU1QTEFURV9QQVJBTVMo
a2luZDEsIG5hbWUxLCAuLi4sIGtpbmRfbSwgbmFtZV9tKSwKKyAgICAgICAgICAgICAgICBBTkRf
bl9WQUxVRV9QQVJBTVMocDEsIC4uLiwgcF9uKSkgeyBzdGF0ZW1lbnRzOyB9CitgYGAKKworZGVm
aW5lcyBhbiBhY3Rpb24gdGVtcGxhdGUgdGhhdCB0YWtlcyBfbV8gZXhwbGljaXQgdGVtcGxhdGUg
cGFyYW1ldGVycworYW5kIF9uXyB2YWx1ZSBwYXJhbWV0ZXJzLCB3aGVyZSBfbV8gaXMgYmV0d2Vl
biAxIGFuZCAxMCwgYW5kIF9uXyBpcworYmV0d2VlbiAwIGFuZCAxMC4gIGBuYW1lX2lgIGlzIHRo
ZSBuYW1lIG9mIHRoZSBpLXRoIHRlbXBsYXRlCitwYXJhbWV0ZXIsIGFuZCBga2luZF9pYCBzcGVj
aWZpZXMgd2hldGhlciBpdCdzIGEgYHR5cGVuYW1lYCwgYW4KK2ludGVncmFsIGNvbnN0YW50LCBv
ciBhIHRlbXBsYXRlLiAgYHBfaWAgaXMgdGhlIG5hbWUgb2YgdGhlIGktdGggdmFsdWUKK3BhcmFt
ZXRlci4KKworRXhhbXBsZToKK2BgYAorLy8gRHVwbGljYXRlQXJnPGssIFQ+KG91dHB1dCkgY29u
dmVydHMgdGhlIGstdGggYXJndW1lbnQgb2YgdGhlIG1vY2sKKy8vIGZ1bmN0aW9uIHRvIHR5cGUg
VCBhbmQgY29waWVzIGl0IHRvICpvdXRwdXQuCitBQ1RJT05fVEVNUExBVEUoRHVwbGljYXRlQXJn
LAorICAgICAgICAgICAgICAgIC8vIE5vdGUgdGhlIGNvbW1hIGJldHdlZW4gaW50IGFuZCBrOgor
ICAgICAgICAgICAgICAgIEhBU18yX1RFTVBMQVRFX1BBUkFNUyhpbnQsIGssIHR5cGVuYW1lLCBU
KSwKKyAgICAgICAgICAgICAgICBBTkRfMV9WQUxVRV9QQVJBTVMob3V0cHV0KSkgeworICAqb3V0
cHV0ID0gVChzdGQ6OnRyMTo6Z2V0PGs+KGFyZ3MpKTsKK30KK2BgYAorCitUbyBjcmVhdGUgYW4g
aW5zdGFuY2Ugb2YgYW4gYWN0aW9uIHRlbXBsYXRlLCB3cml0ZToKK2BgYAorICBBY3Rpb25OYW1l
PHQxLCAuLi4sIHRfbT4odjEsIC4uLiwgdl9uKQorYGBgCit3aGVyZSB0aGUgYHRgcyBhcmUgdGhl
IHRlbXBsYXRlIGFyZ3VtZW50cyBhbmQgdGhlCitgdmBzIGFyZSB0aGUgdmFsdWUgYXJndW1lbnRz
LiAgVGhlIHZhbHVlIGFyZ3VtZW50Cit0eXBlcyBhcmUgaW5mZXJyZWQgYnkgdGhlIGNvbXBpbGVy
LiAgRm9yIGV4YW1wbGU6CitgYGAKK3VzaW5nIDo6dGVzdGluZzo6XzsKKy4uLgorICBpbnQgbjsK
KyAgRVhQRUNUX0NBTEwobW9jaywgRm9vKF8sIF8pKQorICAgICAgLldpbGxPbmNlKER1cGxpY2F0
ZUFyZzwxLCB1bnNpZ25lZCBjaGFyPigmbikpOworYGBgCisKK0lmIHlvdSB3YW50IHRvIGV4cGxp
Y2l0bHkgc3BlY2lmeSB0aGUgdmFsdWUgYXJndW1lbnQgdHlwZXMsIHlvdSBjYW4KK3Byb3ZpZGUg
YWRkaXRpb25hbCB0ZW1wbGF0ZSBhcmd1bWVudHM6CitgYGAKKyAgQWN0aW9uTmFtZTx0MSwgLi4u
LCB0X20sIHUxLCAuLi4sIHVfaz4odjEsIC4uLiwgdl9uKQorYGBgCit3aGVyZSBgdV9pYCBpcyB0
aGUgZGVzaXJlZCB0eXBlIG9mIGB2X2lgLgorCitgQUNUSU9OX1RFTVBMQVRFYCBhbmQgYEFDVElP
TmAvYEFDVElPTl9QKmAgY2FuIGJlIG92ZXJsb2FkZWQgb24gdGhlCitudW1iZXIgb2YgdmFsdWUg
cGFyYW1ldGVycywgYnV0IG5vdCBvbiB0aGUgbnVtYmVyIG9mIHRlbXBsYXRlCitwYXJhbWV0ZXJz
LiAgV2l0aG91dCB0aGUgcmVzdHJpY3Rpb24sIHRoZSBtZWFuaW5nIG9mIHRoZSBmb2xsb3dpbmcg
aXMKK3VuY2xlYXI6CisKK2BgYAorICBPdmVybG9hZGVkQWN0aW9uPGludCwgYm9vbD4oeCk7Citg
YGAKKworQXJlIHdlIHVzaW5nIGEgc2luZ2xlLXRlbXBsYXRlLXBhcmFtZXRlciBhY3Rpb24gd2hl
cmUgYGJvb2xgIHJlZmVycyB0bwordGhlIHR5cGUgb2YgYHhgLCBvciBhIHR3by10ZW1wbGF0ZS1w
YXJhbWV0ZXIgYWN0aW9uIHdoZXJlIHRoZSBjb21waWxlcgoraXMgYXNrZWQgdG8gaW5mZXIgdGhl
IHR5cGUgb2YgYHhgPworCisjIyBVc2luZyB0aGUgQUNUSU9OIE9iamVjdCdzIFR5cGUgIyMKKwor
SWYgeW91IGFyZSB3cml0aW5nIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGFuIGBBQ1RJT05gIG9i
amVjdCwgeW91J2xsCituZWVkIHRvIGtub3cgaXRzIHR5cGUuICBUaGUgdHlwZSBkZXBlbmRzIG9u
IHRoZSBtYWNybyB1c2VkIHRvIGRlZmluZQordGhlIGFjdGlvbiBhbmQgdGhlIHBhcmFtZXRlciB0
eXBlcy4gIFRoZSBydWxlIGlzIHJlbGF0aXZlbHkgc2ltcGxlOgorfCAqKkdpdmVuIERlZmluaXRp
b24qKiB8ICoqRXhwcmVzc2lvbioqIHwgKipIYXMgVHlwZSoqIHwKK3w6LS0tLS0tLS0tLS0tLS0t
LS0tLS0tfDotLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8IGBBQ1RJT04oRm9vKWAg
ICAgICAgIHwgYEZvbygpYCAgICAgICAgfCBgRm9vQWN0aW9uYCAgfAorfCBgQUNUSU9OX1RFTVBM
QVRFKEZvbywgSEFTX21fVEVNUExBVEVfUEFSQU1TKC4uLiksIEFORF8wX1ZBTFVFX1BBUkFNUygp
KWAgfAlgRm9vPHQxLCAuLi4sIHRfbT4oKWAgfCBgRm9vQWN0aW9uPHQxLCAuLi4sIHRfbT5gIHwK
K3wgYEFDVElPTl9QKEJhciwgcGFyYW0pYCB8IGBCYXIoaW50X3ZhbHVlKWAgfCBgQmFyQWN0aW9u
UDxpbnQ+YCB8Cit8IGBBQ1RJT05fVEVNUExBVEUoQmFyLCBIQVNfbV9URU1QTEFURV9QQVJBTVMo
Li4uKSwgQU5EXzFfVkFMVUVfUEFSQU1TKHAxKSlgIHwgYEJhcjx0MSwgLi4uLCB0X20+KGludF92
YWx1ZSlgIHwgYEZvb0FjdGlvblA8dDEsIC4uLiwgdF9tLCBpbnQ+YCB8Cit8IGBBQ1RJT05fUDIo
QmF6LCBwMSwgcDIpYCB8IGBCYXooYm9vbF92YWx1ZSwgaW50X3ZhbHVlKWAgfCBgQmF6QWN0aW9u
UDI8Ym9vbCwgaW50PmAgfAorfCBgQUNUSU9OX1RFTVBMQVRFKEJheiwgSEFTX21fVEVNUExBVEVf
UEFSQU1TKC4uLiksIEFORF8yX1ZBTFVFX1BBUkFNUyhwMSwgcDIpKWAgfCBgQmF6PHQxLCAuLi4s
IHRfbT4oYm9vbF92YWx1ZSwgaW50X3ZhbHVlKWAgfCBgRm9vQWN0aW9uUDI8dDEsIC4uLiwgdF9t
LCBib29sLCBpbnQ+YCB8Cit8IC4uLiAgICAgICAgICAgICAgICAgIHwgLi4uICAgICAgICAgICAg
fCAuLi4gICAgICAgICAgfAorCitOb3RlIHRoYXQgd2UgaGF2ZSB0byBwaWNrIGRpZmZlcmVudCBz
dWZmaXhlcyAoYEFjdGlvbmAsIGBBY3Rpb25QYCwKK2BBY3Rpb25QMmAsIGFuZCBldGMpIGZvciBh
Y3Rpb25zIHdpdGggZGlmZmVyZW50IG51bWJlcnMgb2YgdmFsdWUKK3BhcmFtZXRlcnMsIG9yIHRo
ZSBhY3Rpb24gZGVmaW5pdGlvbnMgY2Fubm90IGJlIG92ZXJsb2FkZWQgb24gdGhlCitudW1iZXIg
b2YgdGhlbS4KKworIyMgV3JpdGluZyBOZXcgTW9ub21vcnBoaWMgQWN0aW9ucyAjIworCitXaGls
ZSB0aGUgYEFDVElPTipgIG1hY3JvcyBhcmUgdmVyeSBjb252ZW5pZW50LCBzb21ldGltZXMgdGhl
eSBhcmUKK2luYXBwcm9wcmlhdGUuICBGb3IgZXhhbXBsZSwgZGVzcGl0ZSB0aGUgdHJpY2tzIHNo
b3duIGluIHRoZSBwcmV2aW91cworcmVjaXBlcywgdGhleSBkb24ndCBsZXQgeW91IGRpcmVjdGx5
IHNwZWNpZnkgdGhlIHR5cGVzIG9mIHRoZSBtb2NrCitmdW5jdGlvbiBhcmd1bWVudHMgYW5kIHRo
ZSBhY3Rpb24gcGFyYW1ldGVycywgd2hpY2ggaW4gZ2VuZXJhbCBsZWFkcwordG8gdW5vcHRpbWl6
ZWQgY29tcGlsZXIgZXJyb3IgbWVzc2FnZXMgdGhhdCBjYW4gYmFmZmxlIHVuZmFtaWxpYXIKK3Vz
ZXJzLiAgVGhleSBhbHNvIGRvbid0IGFsbG93IG92ZXJsb2FkaW5nIGFjdGlvbnMgYmFzZWQgb24g
cGFyYW1ldGVyCit0eXBlcyB3aXRob3V0IGp1bXBpbmcgdGhyb3VnaCBzb21lIGhvb3BzLgorCitB
biBhbHRlcm5hdGl2ZSB0byB0aGUgYEFDVElPTipgIG1hY3JvcyBpcyB0byBpbXBsZW1lbnQKK2A6
OnRlc3Rpbmc6OkFjdGlvbkludGVyZmFjZTxGPmAsIHdoZXJlIGBGYCBpcyB0aGUgdHlwZSBvZiB0
aGUgbW9jaworZnVuY3Rpb24gaW4gd2hpY2ggdGhlIGFjdGlvbiB3aWxsIGJlIHVzZWQuIEZvciBl
eGFtcGxlOgorCitgYGAKK3RlbXBsYXRlIDx0eXBlbmFtZSBGPmNsYXNzIEFjdGlvbkludGVyZmFj
ZSB7CisgcHVibGljOgorICB2aXJ0dWFsIH5BY3Rpb25JbnRlcmZhY2UoKTsKKworICAvLyBQZXJm
b3JtcyB0aGUgYWN0aW9uLiAgUmVzdWx0IGlzIHRoZSByZXR1cm4gdHlwZSBvZiBmdW5jdGlvbiB0
eXBlCisgIC8vIEYsIGFuZCBBcmd1bWVudFR1cGxlIGlzIHRoZSB0dXBsZSBvZiBhcmd1bWVudHMg
b2YgRi4KKyAgLy8KKyAgLy8gRm9yIGV4YW1wbGUsIGlmIEYgaXMgaW50KGJvb2wsIGNvbnN0IHN0
cmluZyYpLCB0aGVuIFJlc3VsdCB3b3VsZAorICAvLyBiZSBpbnQsIGFuZCBBcmd1bWVudFR1cGxl
IHdvdWxkIGJlIHRyMTo6dHVwbGU8Ym9vbCwgY29uc3Qgc3RyaW5nJj4uCisgIHZpcnR1YWwgUmVz
dWx0IFBlcmZvcm0oY29uc3QgQXJndW1lbnRUdXBsZSYgYXJncykgPSAwOworfTsKKwordXNpbmcg
Ojp0ZXN0aW5nOjpfOwordXNpbmcgOjp0ZXN0aW5nOjpBY3Rpb247Cit1c2luZyA6OnRlc3Rpbmc6
OkFjdGlvbkludGVyZmFjZTsKK3VzaW5nIDo6dGVzdGluZzo6TWFrZUFjdGlvbjsKKwordHlwZWRl
ZiBpbnQgSW5jcmVtZW50TWV0aG9kKGludCopOworCitjbGFzcyBJbmNyZW1lbnRBcmd1bWVudEFj
dGlvbiA6IHB1YmxpYyBBY3Rpb25JbnRlcmZhY2U8SW5jcmVtZW50TWV0aG9kPiB7CisgcHVibGlj
OgorICB2aXJ0dWFsIGludCBQZXJmb3JtKGNvbnN0IHRyMTo6dHVwbGU8aW50Kj4mIGFyZ3MpIHsK
KyAgICBpbnQqIHAgPSB0cjE6OmdldDwwPihhcmdzKTsgIC8vIEdyYWJzIHRoZSBmaXJzdCBhcmd1
bWVudC4KKyAgICByZXR1cm4gKnArKzsKKyAgfQorfTsKKworQWN0aW9uPEluY3JlbWVudE1ldGhv
ZD4gSW5jcmVtZW50QXJndW1lbnQoKSB7CisgIHJldHVybiBNYWtlQWN0aW9uKG5ldyBJbmNyZW1l
bnRBcmd1bWVudEFjdGlvbik7Cit9CisuLi4KKworICBFWFBFQ1RfQ0FMTChmb28sIEJheihfKSkK
KyAgICAgIC5XaWxsT25jZShJbmNyZW1lbnRBcmd1bWVudCgpKTsKKworICBpbnQgbiA9IDU7Cisg
IGZvby5CYXooJm4pOyAgLy8gU2hvdWxkIHJldHVybiA1IGFuZCBjaGFuZ2UgbiB0byA2LgorYGBg
CisKKyMjIFdyaXRpbmcgTmV3IFBvbHltb3JwaGljIEFjdGlvbnMgIyMKKworVGhlIHByZXZpb3Vz
IHJlY2lwZSBzaG93ZWQgeW91IGhvdyB0byBkZWZpbmUgeW91ciBvd24gYWN0aW9uLiBUaGlzIGlz
CithbGwgZ29vZCwgZXhjZXB0IHRoYXQgeW91IG5lZWQgdG8ga25vdyB0aGUgdHlwZSBvZiB0aGUg
ZnVuY3Rpb24gaW4KK3doaWNoIHRoZSBhY3Rpb24gd2lsbCBiZSB1c2VkLiBTb21ldGltZXMgdGhh
dCBjYW4gYmUgYSBwcm9ibGVtLiBGb3IKK2V4YW1wbGUsIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUg
YWN0aW9uIGluIGZ1bmN0aW9ucyB3aXRoIF9kaWZmZXJlbnRfCit0eXBlcyAoZS5nLiBsaWtlIGBS
ZXR1cm4oKWAgYW5kIGBTZXRBcmd1bWVudFBvaW50ZWUoKWApLgorCitJZiBhbiBhY3Rpb24gY2Fu
IGJlIHVzZWQgaW4gc2V2ZXJhbCB0eXBlcyBvZiBtb2NrIGZ1bmN0aW9ucywgd2Ugc2F5CitpdCdz
IF9wb2x5bW9ycGhpY18uIFRoZSBgTWFrZVBvbHltb3JwaGljQWN0aW9uKClgIGZ1bmN0aW9uIHRl
bXBsYXRlCittYWtlcyBpdCBlYXN5IHRvIGRlZmluZSBzdWNoIGFuIGFjdGlvbjoKKworYGBgCitu
YW1lc3BhY2UgdGVzdGluZyB7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBJbXBsPgorUG9seW1vcnBo
aWNBY3Rpb248SW1wbD4gTWFrZVBvbHltb3JwaGljQWN0aW9uKGNvbnN0IEltcGwmIGltcGwpOwor
Cit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZworYGBgCisKK0FzIGFuIGV4YW1wbGUsIGxldCdzIGRl
ZmluZSBhbiBhY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBzZWNvbmQgYXJndW1lbnQKK2luIHRoZSBt
b2NrIGZ1bmN0aW9uJ3MgYXJndW1lbnQgbGlzdC4gVGhlIGZpcnN0IHN0ZXAgaXMgdG8gZGVmaW5l
IGFuCitpbXBsZW1lbnRhdGlvbiBjbGFzczoKKworYGBgCitjbGFzcyBSZXR1cm5TZWNvbmRBcmd1
bWVudEFjdGlvbiB7CisgcHVibGljOgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0LCB0eXBl
bmFtZSBBcmd1bWVudFR1cGxlPgorICBSZXN1bHQgUGVyZm9ybShjb25zdCBBcmd1bWVudFR1cGxl
JiBhcmdzKSBjb25zdCB7CisgICAgLy8gVG8gZ2V0IHRoZSBpLXRoICgwLWJhc2VkKSBhcmd1bWVu
dCwgdXNlIHRyMTo6Z2V0PGk+KGFyZ3MpLgorICAgIHJldHVybiB0cjE6OmdldDwxPihhcmdzKTsK
KyAgfQorfTsKK2BgYAorCitUaGlzIGltcGxlbWVudGF0aW9uIGNsYXNzIGRvZXMgX25vdF8gbmVl
ZCB0byBpbmhlcml0IGZyb20gYW55CitwYXJ0aWN1bGFyIGNsYXNzLiBXaGF0IG1hdHRlcnMgaXMg
dGhhdCBpdCBtdXN0IGhhdmUgYSBgUGVyZm9ybSgpYAorbWV0aG9kIHRlbXBsYXRlLiBUaGlzIG1l
dGhvZCB0ZW1wbGF0ZSB0YWtlcyB0aGUgbW9jayBmdW5jdGlvbidzCithcmd1bWVudHMgYXMgYSB0
dXBsZSBpbiBhICoqc2luZ2xlKiogYXJndW1lbnQsIGFuZCByZXR1cm5zIHRoZSByZXN1bHQgb2YK
K3RoZSBhY3Rpb24uIEl0IGNhbiBiZSBlaXRoZXIgYGNvbnN0YCBvciBub3QsIGJ1dCBtdXN0IGJl
IGludm9rYWJsZQord2l0aCBleGFjdGx5IG9uZSB0ZW1wbGF0ZSBhcmd1bWVudCwgd2hpY2ggaXMg
dGhlIHJlc3VsdCB0eXBlLiBJbiBvdGhlcgord29yZHMsIHlvdSBtdXN0IGJlIGFibGUgdG8gY2Fs
bCBgUGVyZm9ybTxSPihhcmdzKWAgd2hlcmUgYFJgIGlzIHRoZQorbW9jayBmdW5jdGlvbidzIHJl
dHVybiB0eXBlIGFuZCBgYXJnc2AgaXMgaXRzIGFyZ3VtZW50cyBpbiBhIHR1cGxlLgorCitOZXh0
LCB3ZSB1c2UgYE1ha2VQb2x5bW9ycGhpY0FjdGlvbigpYCB0byB0dXJuIGFuIGluc3RhbmNlIG9m
IHRoZQoraW1wbGVtZW50YXRpb24gY2xhc3MgaW50byB0aGUgcG9seW1vcnBoaWMgYWN0aW9uIHdl
IG5lZWQuIEl0IHdpbGwgYmUKK2NvbnZlbmllbnQgdG8gaGF2ZSBhIHdyYXBwZXIgZm9yIHRoaXM6
CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpNYWtlUG9seW1vcnBoaWNBY3Rpb247Cit1c2luZyA6
OnRlc3Rpbmc6OlBvbHltb3JwaGljQWN0aW9uOworCitQb2x5bW9ycGhpY0FjdGlvbjxSZXR1cm5T
ZWNvbmRBcmd1bWVudEFjdGlvbj4gUmV0dXJuU2Vjb25kQXJndW1lbnQoKSB7CisgIHJldHVybiBN
YWtlUG9seW1vcnBoaWNBY3Rpb24oUmV0dXJuU2Vjb25kQXJndW1lbnRBY3Rpb24oKSk7Cit9Citg
YGAKKworTm93LCB5b3UgY2FuIHVzZSB0aGlzIHBvbHltb3JwaGljIGFjdGlvbiB0aGUgc2FtZSB3
YXkgeW91IHVzZSB0aGUKK2J1aWx0LWluIG9uZXM6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpf
OworCitjbGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7CisgcHVibGljOgorICBNT0NLX01FVEhP
RDIoRG9UaGlzLCBpbnQoYm9vbCBmbGFnLCBpbnQgbikpOworICBNT0NLX01FVEhPRDMoRG9UaGF0
LCBzdHJpbmcoaW50IHgsIGNvbnN0IGNoYXIqIHN0cjEsIGNvbnN0IGNoYXIqIHN0cjIpKTsKK307
CisuLi4KKworICBNb2NrRm9vIGZvbzsKKyAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoaXMoXywgXykp
CisgICAgICAuV2lsbE9uY2UoUmV0dXJuU2Vjb25kQXJndW1lbnQoKSk7CisgIEVYUEVDVF9DQUxM
KGZvbywgRG9UaGF0KF8sIF8sIF8pKQorICAgICAgLldpbGxPbmNlKFJldHVyblNlY29uZEFyZ3Vt
ZW50KCkpOworICAuLi4KKyAgZm9vLkRvVGhpcyh0cnVlLCA1KTsgICAgICAgICAvLyBXaWxsIHJl
dHVybiA1LgorICBmb28uRG9UaGF0KDEsICJIaSIsICJCeWUiKTsgIC8vIFdpbGwgcmV0dXJuICJI
aSIuCitgYGAKKworIyMgVGVhY2hpbmcgR29vZ2xlIE1vY2sgSG93IHRvIFByaW50IFlvdXIgVmFs
dWVzICMjCisKK1doZW4gYW4gdW5pbnRlcmVzdGluZyBvciB1bmV4cGVjdGVkIGNhbGwgb2NjdXJz
LCBHb29nbGUgTW9jayBwcmludHMKK3RoZSBhcmd1bWVudCB2YWx1ZXMgdG8gaGVscCB5b3UgZGVi
dWcuICBUaGUgYEVYUEVDVF9USEFUYCBhbmQKK2BBU1NFUlRfVEhBVGAgYXNzZXJ0aW9ucyBhbHNv
IHByaW50IHRoZSB2YWx1ZSBiZWluZyB2YWxpZGF0ZWQgd2hlbiB0aGUKK3Rlc3QgZmFpbHMuICBH
b29nbGUgTW9jayBkb2VzIHRoaXMgdXNpbmcgdGhlIHVzZXItZXh0ZW5zaWJsZSB2YWx1ZQorcHJp
bnRlciBkZWZpbmVkIGluIGA8Z21vY2svZ21vY2stcHJpbnRlcnMuaD5gLgorCitUaGlzIHByaW50
ZXIga25vd3MgaG93IHRvIHByaW50IHRoZSBidWlsdC1pbiBDKysgdHlwZXMsIG5hdGl2ZSBhcnJh
eXMsCitTVEwgY29udGFpbmVycywgYW5kIGFueSB0eXBlIHRoYXQgc3VwcG9ydHMgdGhlIGA8PGAg
b3BlcmF0b3IuIEZvcgorb3RoZXIgdHlwZXMsIGl0IHByaW50cyB0aGUgcmF3IGJ5dGVzIGluIHRo
ZSB2YWx1ZSBhbmQgaG9wZSB5b3UgdGhlCit1c2VyIGNhbiBmaWd1cmUgaXQgb3V0LgorCitEaWQg
SSBzYXkgdGhhdCB0aGUgcHJpbnRlciBpcyBgZXh0ZW5zaWJsZWA/IFRoYXQgbWVhbnMgeW91IGNh
biB0ZWFjaAoraXQgdG8gZG8gYSBiZXR0ZXIgam9iIGF0IHByaW50aW5nIHlvdXIgcGFydGljdWxh
ciB0eXBlIHRoYW4gdG8gZHVtcAordGhlIGJ5dGVzLiBUbyBkbyB0aGF0LCB5b3UganVzdCBuZWVk
IHRvIGRlZmluZSBgPDxgIGZvciB5b3VyIHR5cGU6CisKK2BgYAorI2luY2x1ZGUgPGlvc3RyZWFt
PgorCituYW1lc3BhY2UgZm9vIHsKKworY2xhc3MgRm9vIHsgLi4uIH07CisKKy8vIEl0J3MgaW1w
b3J0YW50IHRoYXQgdGhlIDw8IG9wZXJhdG9yIGlzIGRlZmluZWQgaW4gdGhlIFNBTUUKKy8vIG5h
bWVzcGFjZSB0aGF0IGRlZmluZXMgRm9vLiAgQysrJ3MgbG9vay11cCBydWxlcyByZWx5IG9uIHRo
YXQuCis6OnN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PCg6OnN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0
IEZvbyYgZm9vKSB7CisgIHJldHVybiBvcyA8PCBmb28uRGVidWdTdHJpbmcoKTsgIC8vIFdoYXRl
dmVyIG5lZWRlZCB0byBwcmludCBmb28gdG8gb3MuCit9CisKK30gIC8vIG5hbWVzcGFjZSBmb28K
K2BgYAorCitTb21ldGltZXMsIHRoaXMgbWlnaHQgbm90IGJlIGFuIG9wdGlvbi4gRm9yIGV4YW1w
bGUsIHlvdXIgdGVhbSBtYXkKK2NvbnNpZGVyIGl0IGRhbmdlcm91cyBvciBiYWQgc3R5bGUgdG8g
aGF2ZSBhIGA8PGAgb3BlcmF0b3IgZm9yIGBGb29gLAorb3IgYEZvb2AgbWF5IGFscmVhZHkgaGF2
ZSBhIGA8PGAgb3BlcmF0b3IgdGhhdCBkb2Vzbid0IGRvIHdoYXQgeW91Cit3YW50IChhbmQgeW91
IGNhbm5vdCBjaGFuZ2UgaXQpLiBEb24ndCBkZXNwYWlyIHRob3VnaCAtIEdvb2dsZSBNb2NrCitn
aXZlcyB5b3UgYSBzZWNvbmQgY2hhbmNlIHRvIGdldCBpdCByaWdodC4gTmFtZWx5LCB5b3UgY2Fu
IGRlZmluZSBhCitgUHJpbnRUbygpYCBmdW5jdGlvbiBsaWtlIHRoaXM6CisKK2BgYAorI2luY2x1
ZGUgPGlvc3RyZWFtPgorCituYW1lc3BhY2UgZm9vIHsKKworY2xhc3MgRm9vIHsgLi4uIH07CisK
Ky8vIEl0J3MgaW1wb3J0YW50IHRoYXQgUHJpbnRUbygpIGlzIGRlZmluZWQgaW4gdGhlIFNBTUUK
Ky8vIG5hbWVzcGFjZSB0aGF0IGRlZmluZXMgRm9vLiAgQysrJ3MgbG9vay11cCBydWxlcyByZWx5
IG9uIHRoYXQuCit2b2lkIFByaW50VG8oY29uc3QgRm9vJiBmb28sIDo6c3RkOjpvc3RyZWFtKiBv
cykgeworICAqb3MgPDwgZm9vLkRlYnVnU3RyaW5nKCk7ICAvLyBXaGF0ZXZlciBuZWVkZWQgdG8g
cHJpbnQgZm9vIHRvIG9zLgorfQorCit9ICAvLyBuYW1lc3BhY2UgZm9vCitgYGAKKworV2hhdCBp
ZiB5b3UgaGF2ZSBib3RoIGA8PGAgYW5kIGBQcmludFRvKClgPyBJbiB0aGlzIGNhc2UsIHRoZSBs
YXR0ZXIKK3dpbGwgb3ZlcnJpZGUgdGhlIGZvcm1lciB3aGVuIEdvb2dsZSBNb2NrIGlzIGNvbmNl
cm5lZC4gVGhpcyBhbGxvd3MKK3lvdSB0byBjdXN0b21pemUgaG93IHRoZSB2YWx1ZSBzaG91bGQg
YXBwZWFyIGluIEdvb2dsZSBNb2NrJ3Mgb3V0cHV0Cit3aXRob3V0IGFmZmVjdGluZyBjb2RlIHRo
YXQgcmVsaWVzIG9uIHRoZSBiZWhhdmlvciBvZiBpdHMgYDw8YAorb3BlcmF0b3IuCisKKyoqTm90
ZToqKiBXaGVuIHByaW50aW5nIGEgcG9pbnRlciBvZiB0eXBlIGBUKmAsIEdvb2dsZSBNb2NrIGNh
bGxzCitgUHJpbnRUbyhUKiwgc3RkOjpvc3RyZWFtKiBvcylgIGluc3RlYWQgb2YgYG9wZXJhdG9y
PDwoc3RkOjpvc3RyZWFtJiwgVCopYC4KK1RoZXJlZm9yZSB0aGUgb25seSB3YXkgdG8gYWZmZWN0
IGhvdyBhIHBvaW50ZXIgaXMgcHJpbnRlZCBieSBHb29nbGUKK01vY2sgaXMgdG8gZGVmaW5lIGBQ
cmludFRvKClgIGZvciBpdC4gQWxzbyBub3RlIHRoYXQgYFQqYCBhbmQgYGNvbnN0IFQqYAorYXJl
IGRpZmZlcmVudCB0eXBlcywgc28geW91IG1heSBuZWVkIHRvIGRlZmluZSBgUHJpbnRUbygpYCBm
b3IgYm90aC4KKworV2h5IGRvZXMgR29vZ2xlIE1vY2sgdHJlYXQgcG9pbnRlcnMgc3BlY2lhbGx5
PyBUaGVyZSBhcmUgc2V2ZXJhbCByZWFzb25zOgorCisgICogV2UgY2Fubm90IHVzZSBgb3BlcmF0
b3I8PGAgdG8gcHJpbnQgYSBgc2lnbmVkIGNoYXIqYCBvciBgdW5zaWduZWQgY2hhcipgLCBzaW5j
ZSBpdCB3aWxsIHByaW50IHRoZSBwb2ludGVyIGFzIGEgTlVMLXRlcm1pbmF0ZWQgQyBzdHJpbmcs
IHdoaWNoIGxpa2VseSB3aWxsIGNhdXNlIGFuIGFjY2VzcyB2aW9sYXRpb24uCisgICogV2Ugd2Fu
dCBgTlVMTGAgcG9pbnRlcnMgdG8gYmUgcHJpbnRlZCBhcyBgIk5VTEwiYCwgYnV0IGBvcGVyYXRv
cjw8YCBwcmludHMgaXQgYXMgYCIwImAsIGAibnVsbHB0ciJgLCBvciBzb21ldGhpbmcgZWxzZSwg
ZGVwZW5kaW5nIG9uIHRoZSBjb21waWxlci4KKyAgKiBXaXRoIHNvbWUgY29tcGlsZXJzLCBwcmlu
dGluZyBhIGBOVUxMYCBgY2hhcipgIHVzaW5nIGBvcGVyYXRvcjw8YCB3aWxsIHNlZ2ZhdWx0Lgor
ICAqIGBvcGVyYXRvcjw8YCBwcmludHMgYSBmdW5jdGlvbiBwb2ludGVyIGFzIGEgYGJvb2xgICho
ZW5jZSBpdCBhbHdheXMgcHJpbnRzIGAiMSJgKSwgd2hpY2ggaXMgbm90IHZlcnkgdXNlZnVsLgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3Mv
djFfNS9Eb2N1bWVudGF0aW9uLm1kIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy92MV81L0RvY3VtZW50YXRp
b24ubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzE1YjBhMjk4OWFkNDY2N2NjYWUyYjA5ZmExYzcyZmE4OGNmNmVk
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvdjFfNS9Eb2N1bWVudGF0aW9u
Lm1kCkBAIC0wLDAgKzEsMTEgQEAKK1RoaXMgcGFnZSBsaXN0cyBhbGwgZG9jdW1lbnRhdGlvbiB3
aWtpIHBhZ2VzIGZvciBHb29nbGUgTW9jayAqKnZlcnNpb24gMS41LjAqKiAtLSAqKmlmIHlvdSB1
c2UgYSBkaWZmZXJlbnQgdmVyc2lvbiBvZiBHb29nbGUgTW9jaywgcGxlYXNlIHJlYWQgdGhlIGRv
Y3VtZW50YXRpb24gZm9yIHRoYXQgc3BlY2lmaWMgdmVyc2lvbiBpbnN0ZWFkLioqCisKKyAgKiBb
Rm9yRHVtbWllc10oVjFfNV9Gb3JEdW1taWVzLm1kKSAtLSBzdGFydCBoZXJlIGlmIHlvdSBhcmUg
bmV3IHRvIEdvb2dsZSBNb2NrLgorICAqIFtDaGVhdFNoZWV0XShWMV81X0NoZWF0U2hlZXQubWQp
IC0tIGEgcXVpY2sgcmVmZXJlbmNlLgorICAqIFtDb29rQm9va10oVjFfNV9Db29rQm9vay5tZCkg
LS0gcmVjaXBlcyBmb3IgZG9pbmcgdmFyaW91cyB0YXNrcyB1c2luZyBHb29nbGUgTW9jay4KKyAg
KiBbRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zXShWMV81X0ZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9u
cy5tZCkgLS0gY2hlY2sgaGVyZSBiZWZvcmUgYXNraW5nIGEgcXVlc3Rpb24gb24gdGhlIG1haWxp
bmcgbGlzdC4KKworVG8gY29udHJpYnV0ZSBjb2RlIHRvIEdvb2dsZSBNb2NrLCByZWFkOgorCisg
ICogRGV2R3VpZGUgLS0gcmVhZCB0aGlzIF9iZWZvcmVfIHdyaXRpbmcgeW91ciBmaXJzdCBwYXRj
aC4KKyAgKiBbUHVtcCBNYW51YWxdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0
L3dpa2kvUHVtcE1hbnVhbCkgLS0gaG93IHdlIGdlbmVyYXRlIHNvbWUgb2YgR29vZ2xlIE1vY2sn
cyBzb3VyY2UgZmlsZXMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZW1vY2svZG9jcy92MV81L0ZvckR1bW1pZXMubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL3Yx
XzUvRm9yRHVtbWllcy5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mY2MzYjU2MTc0NzAzMTU0YjlkZDFkMDUxNDlh
NWYxMGNhNzM5NzJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy92MV81L0Zv
ckR1bW1pZXMubWQKQEAgLTAsMCArMSw0MzkgQEAKKworCisoKipOb3RlOioqIElmIHlvdSBnZXQg
Y29tcGlsZXIgZXJyb3JzIHRoYXQgeW91IGRvbid0IHVuZGVyc3RhbmQsIGJlIHN1cmUgdG8gY29u
c3VsdCBbR29vZ2xlIE1vY2sgRG9jdG9yXShWMV81X0ZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyNI
b3dfYW1fSV9zdXBwb3NlZF90b19tYWtlX3NlbnNlX29mX3RoZXNlX2hvcnJpYmxlX3RlbXBsYXRl
X2Vycm9yLm1kKS4pCisKKyMgV2hhdCBJcyBHb29nbGUgQysrIE1vY2tpbmcgRnJhbWV3b3JrPyAj
CitXaGVuIHlvdSB3cml0ZSBhIHByb3RvdHlwZSBvciB0ZXN0LCBvZnRlbiBpdCdzIG5vdCBmZWFz
aWJsZSBvciB3aXNlIHRvIHJlbHkgb24gcmVhbCBvYmplY3RzIGVudGlyZWx5LiBBICoqbW9jayBv
YmplY3QqKiBpbXBsZW1lbnRzIHRoZSBzYW1lIGludGVyZmFjZSBhcyBhIHJlYWwgb2JqZWN0IChz
byBpdCBjYW4gYmUgdXNlZCBhcyBvbmUpLCBidXQgbGV0cyB5b3Ugc3BlY2lmeSBhdCBydW4gdGlt
ZSBob3cgaXQgd2lsbCBiZSB1c2VkIGFuZCB3aGF0IGl0IHNob3VsZCBkbyAod2hpY2ggbWV0aG9k
cyB3aWxsIGJlIGNhbGxlZD8gaW4gd2hpY2ggb3JkZXI/IGhvdyBtYW55IHRpbWVzPyB3aXRoIHdo
YXQgYXJndW1lbnRzPyB3aGF0IHdpbGwgdGhleSByZXR1cm4/IGV0YykuCisKKyoqTm90ZToqKiBJ
dCBpcyBlYXN5IHRvIGNvbmZ1c2UgdGhlIHRlcm0gX2Zha2Ugb2JqZWN0c18gd2l0aCBtb2NrIG9i
amVjdHMuIEZha2VzIGFuZCBtb2NrcyBhY3R1YWxseSBtZWFuIHZlcnkgZGlmZmVyZW50IHRoaW5n
cyBpbiB0aGUgVGVzdC1Ecml2ZW4gRGV2ZWxvcG1lbnQgKFRERCkgY29tbXVuaXR5OgorCisgICog
KipGYWtlKiogb2JqZWN0cyBoYXZlIHdvcmtpbmcgaW1wbGVtZW50YXRpb25zLCBidXQgdXN1YWxs
eSB0YWtlIHNvbWUgc2hvcnRjdXQgKHBlcmhhcHMgdG8gbWFrZSB0aGUgb3BlcmF0aW9ucyBsZXNz
IGV4cGVuc2l2ZSksIHdoaWNoIG1ha2VzIHRoZW0gbm90IHN1aXRhYmxlIGZvciBwcm9kdWN0aW9u
LiBBbiBpbi1tZW1vcnkgZmlsZSBzeXN0ZW0gd291bGQgYmUgYW4gZXhhbXBsZSBvZiBhIGZha2Uu
CisgICogKipNb2NrcyoqIGFyZSBvYmplY3RzIHByZS1wcm9ncmFtbWVkIHdpdGggX2V4cGVjdGF0
aW9uc18sIHdoaWNoIGZvcm0gYSBzcGVjaWZpY2F0aW9uIG9mIHRoZSBjYWxscyB0aGV5IGFyZSBl
eHBlY3RlZCB0byByZWNlaXZlLgorCitJZiBhbGwgdGhpcyBzZWVtcyB0b28gYWJzdHJhY3QgZm9y
IHlvdSwgZG9uJ3Qgd29ycnkgLSB0aGUgbW9zdCBpbXBvcnRhbnQgdGhpbmcgdG8gcmVtZW1iZXIg
aXMgdGhhdCBhIG1vY2sgYWxsb3dzIHlvdSB0byBjaGVjayB0aGUgX2ludGVyYWN0aW9uXyBiZXR3
ZWVuIGl0c2VsZiBhbmQgY29kZSB0aGF0IHVzZXMgaXQuIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4g
ZmFrZXMgYW5kIG1vY2tzIHdpbGwgYmVjb21lIG11Y2ggY2xlYXJlciBvbmNlIHlvdSBzdGFydCB0
byB1c2UgbW9ja3MuCisKKyoqR29vZ2xlIEMrKyBNb2NraW5nIEZyYW1ld29yayoqIChvciAqKkdv
b2dsZSBNb2NrKiogZm9yIHNob3J0KSBpcyBhIGxpYnJhcnkgKHNvbWV0aW1lcyB3ZSBhbHNvIGNh
bGwgaXQgYSAiZnJhbWV3b3JrIiB0byBtYWtlIGl0IHNvdW5kIGNvb2wpIGZvciBjcmVhdGluZyBt
b2NrIGNsYXNzZXMgYW5kIHVzaW5nIHRoZW0uIEl0IGRvZXMgdG8gQysrIHdoYXQgW2pNb2NrXSho
dHRwOi8vd3d3Lmptb2NrLm9yZy8pIGFuZCBbRWFzeU1vY2tdKGh0dHA6Ly93d3cuZWFzeW1vY2su
b3JnLykgZG8gdG8gSmF2YS4KKworVXNpbmcgR29vZ2xlIE1vY2sgaW52b2x2ZXMgdGhyZWUgYmFz
aWMgc3RlcHM6CisKKyAgMS4gVXNlIHNvbWUgc2ltcGxlIG1hY3JvcyB0byBkZXNjcmliZSB0aGUg
aW50ZXJmYWNlIHlvdSB3YW50IHRvIG1vY2ssIGFuZCB0aGV5IHdpbGwgZXhwYW5kIHRvIHRoZSBp
bXBsZW1lbnRhdGlvbiBvZiB5b3VyIG1vY2sgY2xhc3M7CisgIDEuIENyZWF0ZSBzb21lIG1vY2sg
b2JqZWN0cyBhbmQgc3BlY2lmeSBpdHMgZXhwZWN0YXRpb25zIGFuZCBiZWhhdmlvciB1c2luZyBh
biBpbnR1aXRpdmUgc3ludGF4OworICAxLiBFeGVyY2lzZSBjb2RlIHRoYXQgdXNlcyB0aGUgbW9j
ayBvYmplY3RzLiBHb29nbGUgTW9jayB3aWxsIGNhdGNoIGFueSB2aW9sYXRpb24gb2YgdGhlIGV4
cGVjdGF0aW9ucyBhcyBzb29uIGFzIGl0IGFyaXNlcy4KKworIyBXaHkgR29vZ2xlIE1vY2s/ICMK
K1doaWxlIG1vY2sgb2JqZWN0cyBoZWxwIHlvdSByZW1vdmUgdW5uZWNlc3NhcnkgZGVwZW5kZW5j
aWVzIGluIHRlc3RzIGFuZCBtYWtlIHRoZW0gZmFzdCBhbmQgcmVsaWFibGUsIHVzaW5nIG1vY2tz
IG1hbnVhbGx5IGluIEMrKyBpcyBfaGFyZF86CisKKyAgKiBTb21lb25lIGhhcyB0byBpbXBsZW1l
bnQgdGhlIG1vY2tzLiBUaGUgam9iIGlzIHVzdWFsbHkgdGVkaW91cyBhbmQgZXJyb3ItcHJvbmUu
IE5vIHdvbmRlciBwZW9wbGUgZ28gZ3JlYXQgZGlzdGFuY2UgdG8gYXZvaWQgaXQuCisgICogVGhl
IHF1YWxpdHkgb2YgdGhvc2UgbWFudWFsbHkgd3JpdHRlbiBtb2NrcyBpcyBhIGJpdCwgdWgsIHVu
cHJlZGljdGFibGUuIFlvdSBtYXkgc2VlIHNvbWUgcmVhbGx5IHBvbGlzaGVkIG9uZXMsIGJ1dCB5
b3UgbWF5IGFsc28gc2VlIHNvbWUgdGhhdCB3ZXJlIGhhY2tlZCB1cCBpbiBhIGh1cnJ5IGFuZCBo
YXZlIGFsbCBzb3J0cyBvZiBhZCBob2MgcmVzdHJpY3Rpb25zLgorICAqIFRoZSBrbm93bGVkZ2Ug
eW91IGdhaW5lZCBmcm9tIHVzaW5nIG9uZSBtb2NrIGRvZXNuJ3QgdHJhbnNmZXIgdG8gdGhlIG5l
eHQuCisKK0luIGNvbnRyYXN0LCBKYXZhIGFuZCBQeXRob24gcHJvZ3JhbW1lcnMgaGF2ZSBzb21l
IGZpbmUgbW9jayBmcmFtZXdvcmtzLCB3aGljaCBhdXRvbWF0ZSB0aGUgY3JlYXRpb24gb2YgbW9j
a3MuIEFzIGEgcmVzdWx0LCBtb2NraW5nIGlzIGEgcHJvdmVuIGVmZmVjdGl2ZSB0ZWNobmlxdWUg
YW5kIHdpZGVseSBhZG9wdGVkIHByYWN0aWNlIGluIHRob3NlIGNvbW11bml0aWVzLiBIYXZpbmcg
dGhlIHJpZ2h0IHRvb2wgYWJzb2x1dGVseSBtYWtlcyB0aGUgZGlmZmVyZW5jZS4KKworR29vZ2xl
IE1vY2sgd2FzIGJ1aWx0IHRvIGhlbHAgQysrIHByb2dyYW1tZXJzLiBJdCB3YXMgaW5zcGlyZWQg
YnkgW2pNb2NrXShodHRwOi8vd3d3Lmptb2NrLm9yZy8pIGFuZCBbRWFzeU1vY2tdKGh0dHA6Ly93
d3cuZWFzeW1vY2sub3JnLyksIGJ1dCBkZXNpZ25lZCB3aXRoIEMrKydzIHNwZWNpZmljcyBpbiBt
aW5kLiBJdCBpcyB5b3VyIGZyaWVuZCBpZiBhbnkgb2YgdGhlIGZvbGxvd2luZyBwcm9ibGVtcyBp
cyBib3RoZXJpbmcgeW91OgorCisgICogWW91IGFyZSBzdHVjayB3aXRoIGEgc3ViLW9wdGltYWwg
ZGVzaWduIGFuZCB3aXNoIHlvdSBoYWQgZG9uZSBtb3JlIHByb3RvdHlwaW5nIGJlZm9yZSBpdCB3
YXMgdG9vIGxhdGUsIGJ1dCBwcm90b3R5cGluZyBpbiBDKysgaXMgYnkgbm8gbWVhbnMgInJhcGlk
Ii4KKyAgKiBZb3VyIHRlc3RzIGFyZSBzbG93IGFzIHRoZXkgZGVwZW5kIG9uIHRvbyBtYW55IGxp
YnJhcmllcyBvciB1c2UgZXhwZW5zaXZlIHJlc291cmNlcyAoZS5nLiBhIGRhdGFiYXNlKS4KKyAg
KiBZb3VyIHRlc3RzIGFyZSBicml0dGxlIGFzIHNvbWUgcmVzb3VyY2VzIHRoZXkgdXNlIGFyZSB1
bnJlbGlhYmxlIChlLmcuIHRoZSBuZXR3b3JrKS4KKyAgKiBZb3Ugd2FudCB0byB0ZXN0IGhvdyB5
b3VyIGNvZGUgaGFuZGxlcyBhIGZhaWx1cmUgKGUuZy4gYSBmaWxlIGNoZWNrc3VtIGVycm9yKSwg
YnV0IGl0J3Mgbm90IGVhc3kgdG8gY2F1c2Ugb25lLgorICAqIFlvdSBuZWVkIHRvIG1ha2Ugc3Vy
ZSB0aGF0IHlvdXIgbW9kdWxlIGludGVyYWN0cyB3aXRoIG90aGVyIG1vZHVsZXMgaW4gdGhlIHJp
Z2h0IHdheSwgYnV0IGl0J3MgaGFyZCB0byBvYnNlcnZlIHRoZSBpbnRlcmFjdGlvbjsgdGhlcmVm
b3JlIHlvdSByZXNvcnQgdG8gb2JzZXJ2aW5nIHRoZSBzaWRlIGVmZmVjdHMgYXQgdGhlIGVuZCBv
ZiB0aGUgYWN0aW9uLCB3aGljaCBpcyBhd2t3YXJkIGF0IGJlc3QuCisgICogWW91IHdhbnQgdG8g
Im1vY2sgb3V0IiB5b3VyIGRlcGVuZGVuY2llcywgZXhjZXB0IHRoYXQgdGhleSBkb24ndCBoYXZl
IG1vY2sgaW1wbGVtZW50YXRpb25zIHlldDsgYW5kLCBmcmFua2x5LCB5b3UgYXJlbid0IHRocmls
bGVkIGJ5IHNvbWUgb2YgdGhvc2UgaGFuZC13cml0dGVuIG1vY2tzLgorCitXZSBlbmNvdXJhZ2Ug
eW91IHRvIHVzZSBHb29nbGUgTW9jayBhczoKKworICAqIGEgX2Rlc2lnbl8gdG9vbCwgZm9yIGl0
IGxldHMgeW91IGV4cGVyaW1lbnQgd2l0aCB5b3VyIGludGVyZmFjZSBkZXNpZ24gZWFybHkgYW5k
IG9mdGVuLiBNb3JlIGl0ZXJhdGlvbnMgbGVhZCB0byBiZXR0ZXIgZGVzaWducyEKKyAgKiBhIF90
ZXN0aW5nXyB0b29sIHRvIGN1dCB5b3VyIHRlc3RzJyBvdXRib3VuZCBkZXBlbmRlbmNpZXMgYW5k
IHByb2JlIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHlvdXIgbW9kdWxlIGFuZCBpdHMgY29sbGFi
b3JhdG9ycy4KKworIyBHZXR0aW5nIFN0YXJ0ZWQgIworVXNpbmcgR29vZ2xlIE1vY2sgaXMgZWFz
eSEgSW5zaWRlIHlvdXIgQysrIHNvdXJjZSBmaWxlLCBqdXN0IGAjaW5jbHVkZWAgYDxndGVzdC9n
dGVzdC5oPmAgYW5kIGA8Z21vY2svZ21vY2suaD5gLCBhbmQgeW91IGFyZSByZWFkeSB0byBnby4K
KworIyBBIENhc2UgZm9yIE1vY2sgVHVydGxlcyAjCitMZXQncyBsb29rIGF0IGFuIGV4YW1wbGUu
IFN1cHBvc2UgeW91IGFyZSBkZXZlbG9waW5nIGEgZ3JhcGhpY3MgcHJvZ3JhbSB0aGF0IHJlbGll
cyBvbiBhIExPR08tbGlrZSBBUEkgZm9yIGRyYXdpbmcuIEhvdyB3b3VsZCB5b3UgdGVzdCB0aGF0
IGl0IGRvZXMgdGhlIHJpZ2h0IHRoaW5nPyBXZWxsLCB5b3UgY2FuIHJ1biBpdCBhbmQgY29tcGFy
ZSB0aGUgc2NyZWVuIHdpdGggYSBnb2xkZW4gc2NyZWVuIHNuYXBzaG90LCBidXQgbGV0J3MgYWRt
aXQgaXQ6IHRlc3RzIGxpa2UgdGhpcyBhcmUgZXhwZW5zaXZlIHRvIHJ1biBhbmQgZnJhZ2lsZSAo
V2hhdCBpZiB5b3UganVzdCB1cGdyYWRlZCB0byBhIHNoaW55IG5ldyBncmFwaGljcyBjYXJkIHRo
YXQgaGFzIGJldHRlciBhbnRpLWFsaWFzaW5nPyBTdWRkZW5seSB5b3UgaGF2ZSB0byB1cGRhdGUg
YWxsIHlvdXIgZ29sZGVuIGltYWdlcy4pLiBJdCB3b3VsZCBiZSB0b28gcGFpbmZ1bCBpZiBhbGwg
eW91ciB0ZXN0cyBhcmUgbGlrZSB0aGlzLiBGb3J0dW5hdGVseSwgeW91IGxlYXJuZWQgYWJvdXQg
RGVwZW5kZW5jeSBJbmplY3Rpb24gYW5kIGtub3cgdGhlIHJpZ2h0IHRoaW5nIHRvIGRvOiBpbnN0
ZWFkIG9mIGhhdmluZyB5b3VyIGFwcGxpY2F0aW9uIHRhbGsgdG8gdGhlIGRyYXdpbmcgQVBJIGRp
cmVjdGx5LCB3cmFwIHRoZSBBUEkgaW4gYW4gaW50ZXJmYWNlIChzYXksIGBUdXJ0bGVgKSBhbmQg
Y29kZSB0byB0aGF0IGludGVyZmFjZToKKworYGBgCitjbGFzcyBUdXJ0bGUgeworICAuLi4KKyAg
dmlydHVhbCB+VHVydGxlKCkge30KKyAgdmlydHVhbCB2b2lkIFBlblVwKCkgPSAwOworICB2aXJ0
dWFsIHZvaWQgUGVuRG93bigpID0gMDsKKyAgdmlydHVhbCB2b2lkIEZvcndhcmQoaW50IGRpc3Rh
bmNlKSA9IDA7CisgIHZpcnR1YWwgdm9pZCBUdXJuKGludCBkZWdyZWVzKSA9IDA7CisgIHZpcnR1
YWwgdm9pZCBHb1RvKGludCB4LCBpbnQgeSkgPSAwOworICB2aXJ0dWFsIGludCBHZXRYKCkgY29u
c3QgPSAwOworICB2aXJ0dWFsIGludCBHZXRZKCkgY29uc3QgPSAwOworfTsKK2BgYAorCisoTm90
ZSB0aGF0IHRoZSBkZXN0cnVjdG9yIG9mIGBUdXJ0bGVgICoqbXVzdCoqIGJlIHZpcnR1YWwsIGFz
IGlzIHRoZSBjYXNlIGZvciAqKmFsbCoqIGNsYXNzZXMgeW91IGludGVuZCB0byBpbmhlcml0IGZy
b20gLSBvdGhlcndpc2UgdGhlIGRlc3RydWN0b3Igb2YgdGhlIGRlcml2ZWQgY2xhc3Mgd2lsbCBu
b3QgYmUgY2FsbGVkIHdoZW4geW91IGRlbGV0ZSBhbiBvYmplY3QgdGhyb3VnaCBhIGJhc2UgcG9p
bnRlciwgYW5kIHlvdSdsbCBnZXQgY29ycnVwdGVkIHByb2dyYW0gc3RhdGVzIGxpa2UgbWVtb3J5
IGxlYWtzLikKKworWW91IGNhbiBjb250cm9sIHdoZXRoZXIgdGhlIHR1cnRsZSdzIG1vdmVtZW50
IHdpbGwgbGVhdmUgYSB0cmFjZSB1c2luZyBgUGVuVXAoKWAgYW5kIGBQZW5Eb3duKClgLCBhbmQg
Y29udHJvbCBpdHMgbW92ZW1lbnQgdXNpbmcgYEZvcndhcmQoKWAsIGBUdXJuKClgLCBhbmQgYEdv
VG8oKWAuIEZpbmFsbHksIGBHZXRYKClgIGFuZCBgR2V0WSgpYCB0ZWxsIHlvdSB0aGUgY3VycmVu
dCBwb3NpdGlvbiBvZiB0aGUgdHVydGxlLgorCitZb3VyIHByb2dyYW0gd2lsbCBub3JtYWxseSB1
c2UgYSByZWFsIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgaW50ZXJmYWNlLiBJbiB0ZXN0cywgeW91
IGNhbiB1c2UgYSBtb2NrIGltcGxlbWVudGF0aW9uIGluc3RlYWQuIFRoaXMgYWxsb3dzIHlvdSB0
byBlYXNpbHkgY2hlY2sgd2hhdCBkcmF3aW5nIHByaW1pdGl2ZXMgeW91ciBwcm9ncmFtIGlzIGNh
bGxpbmcsIHdpdGggd2hhdCBhcmd1bWVudHMsIGFuZCBpbiB3aGljaCBvcmRlci4gVGVzdHMgd3Jp
dHRlbiB0aGlzIHdheSBhcmUgbXVjaCBtb3JlIHJvYnVzdCAodGhleSB3b24ndCBicmVhayBiZWNh
dXNlIHlvdXIgbmV3IG1hY2hpbmUgZG9lcyBhbnRpLWFsaWFzaW5nIGRpZmZlcmVudGx5KSwgZWFz
aWVyIHRvIHJlYWQgYW5kIG1haW50YWluICh0aGUgaW50ZW50IG9mIGEgdGVzdCBpcyBleHByZXNz
ZWQgaW4gdGhlIGNvZGUsIG5vdCBpbiBzb21lIGJpbmFyeSBpbWFnZXMpLCBhbmQgcnVuIF9tdWNo
LCBtdWNoIGZhc3Rlcl8uCisKKyMgV3JpdGluZyB0aGUgTW9jayBDbGFzcyAjCitJZiB5b3UgYXJl
IGx1Y2t5LCB0aGUgbW9ja3MgeW91IG5lZWQgdG8gdXNlIGhhdmUgYWxyZWFkeSBiZWVuIGltcGxl
bWVudGVkIGJ5IHNvbWUgbmljZSBwZW9wbGUuIElmLCBob3dldmVyLCB5b3UgZmluZCB5b3Vyc2Vs
ZiBpbiB0aGUgcG9zaXRpb24gdG8gd3JpdGUgYSBtb2NrIGNsYXNzLCByZWxheCAtIEdvb2dsZSBN
b2NrIHR1cm5zIHRoaXMgdGFzayBpbnRvIGEgZnVuIGdhbWUhIChXZWxsLCBhbG1vc3QuKQorCisj
IyBIb3cgdG8gRGVmaW5lIEl0ICMjCitVc2luZyB0aGUgYFR1cnRsZWAgaW50ZXJmYWNlIGFzIGV4
YW1wbGUsIGhlcmUgYXJlIHRoZSBzaW1wbGUgc3RlcHMgeW91IG5lZWQgdG8gZm9sbG93OgorCisg
IDEuIERlcml2ZSBhIGNsYXNzIGBNb2NrVHVydGxlYCBmcm9tIGBUdXJ0bGVgLgorICAxLiBUYWtl
IGEgdmlydHVhbCBmdW5jdGlvbiBvZiBgVHVydGxlYC4gQ291bnQgaG93IG1hbnkgYXJndW1lbnRz
IGl0IGhhcy4KKyAgMS4gSW4gdGhlIGBwdWJsaWM6YCBzZWN0aW9uIG9mIHRoZSBjaGlsZCBjbGFz
cywgd3JpdGUgYE1PQ0tfTUVUSE9EbigpO2AgKG9yIGBNT0NLX0NPTlNUX01FVEhPRG4oKTtgIGlm
IHlvdSBhcmUgbW9ja2luZyBhIGBjb25zdGAgbWV0aG9kKSwgd2hlcmUgYG5gIGlzIHRoZSBudW1i
ZXIgb2YgdGhlIGFyZ3VtZW50czsgaWYgeW91IGNvdW50ZWQgd3JvbmcsIHNoYW1lIG9uIHlvdSwg
YW5kIGEgY29tcGlsZXIgZXJyb3Igd2lsbCB0ZWxsIHlvdSBzby4KKyAgMS4gTm93IGNvbWVzIHRo
ZSBmdW4gcGFydDogeW91IHRha2UgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZSwgY3V0LWFuZC1wYXN0
ZSB0aGUgX2Z1bmN0aW9uIG5hbWVfIGFzIHRoZSBfZmlyc3RfIGFyZ3VtZW50IHRvIHRoZSBtYWNy
bywgYW5kIGxlYXZlIHdoYXQncyBsZWZ0IGFzIHRoZSBfc2Vjb25kXyBhcmd1bWVudCAoaW4gY2Fz
ZSB5b3UncmUgY3VyaW91cywgdGhpcyBpcyB0aGUgX3R5cGUgb2YgdGhlIGZ1bmN0aW9uXykuCisg
IDEuIFJlcGVhdCB1bnRpbCBhbGwgdmlydHVhbCBmdW5jdGlvbnMgeW91IHdhbnQgdG8gbW9jayBh
cmUgZG9uZS4KKworQWZ0ZXIgdGhlIHByb2Nlc3MsIHlvdSBzaG91bGQgaGF2ZSBzb21ldGhpbmcg
bGlrZToKKworYGBgCisjaW5jbHVkZSA8Z21vY2svZ21vY2suaD4gIC8vIEJyaW5ncyBpbiBHb29n
bGUgTW9jay4KK2NsYXNzIE1vY2tUdXJ0bGUgOiBwdWJsaWMgVHVydGxlIHsKKyBwdWJsaWM6Cisg
IC4uLgorICBNT0NLX01FVEhPRDAoUGVuVXAsIHZvaWQoKSk7CisgIE1PQ0tfTUVUSE9EMChQZW5E
b3duLCB2b2lkKCkpOworICBNT0NLX01FVEhPRDEoRm9yd2FyZCwgdm9pZChpbnQgZGlzdGFuY2Up
KTsKKyAgTU9DS19NRVRIT0QxKFR1cm4sIHZvaWQoaW50IGRlZ3JlZXMpKTsKKyAgTU9DS19NRVRI
T0QyKEdvVG8sIHZvaWQoaW50IHgsIGludCB5KSk7CisgIE1PQ0tfQ09OU1RfTUVUSE9EMChHZXRY
LCBpbnQoKSk7CisgIE1PQ0tfQ09OU1RfTUVUSE9EMChHZXRZLCBpbnQoKSk7Cit9OworYGBgCisK
K1lvdSBkb24ndCBuZWVkIHRvIGRlZmluZSB0aGVzZSBtb2NrIG1ldGhvZHMgc29tZXdoZXJlIGVs
c2UgLSB0aGUgYE1PQ0tfTUVUSE9EKmAgbWFjcm9zIHdpbGwgZ2VuZXJhdGUgdGhlIGRlZmluaXRp
b25zIGZvciB5b3UuIEl0J3MgdGhhdCBzaW1wbGUhIE9uY2UgeW91IGdldCB0aGUgaGFuZyBvZiBp
dCwgeW91IGNhbiBwdW1wIG91dCBtb2NrIGNsYXNzZXMgZmFzdGVyIHRoYW4geW91ciBzb3VyY2Ut
Y29udHJvbCBzeXN0ZW0gY2FuIGhhbmRsZSB5b3VyIGNoZWNrLWlucy4KKworKipUaXA6KiogSWYg
ZXZlbiB0aGlzIGlzIHRvbyBtdWNoIHdvcmsgZm9yIHlvdSwgeW91J2xsIGZpbmQgdGhlCitgZ21v
Y2tfZ2VuLnB5YCB0b29sIGluIEdvb2dsZSBNb2NrJ3MgYHNjcmlwdHMvZ2VuZXJhdG9yL2AgZGly
ZWN0b3J5IChjb3VydGVzeSBvZiB0aGUgW2NwcGNsZWFuXShodHRwOi8vY29kZS5nb29nbGUuY29t
L3AvY3BwY2xlYW4vKSBwcm9qZWN0KSB1c2VmdWwuICBUaGlzIGNvbW1hbmQtbGluZQordG9vbCBy
ZXF1aXJlcyB0aGF0IHlvdSBoYXZlIFB5dGhvbiAyLjQgaW5zdGFsbGVkLiAgWW91IGdpdmUgaXQg
YSBDKysgZmlsZSBhbmQgdGhlIG5hbWUgb2YgYW4gYWJzdHJhY3QgY2xhc3MgZGVmaW5lZCBpbiBp
dCwKK2FuZCBpdCB3aWxsIHByaW50IHRoZSBkZWZpbml0aW9uIG9mIHRoZSBtb2NrIGNsYXNzIGZv
ciB5b3UuICBEdWUgdG8gdGhlCitjb21wbGV4aXR5IG9mIHRoZSBDKysgbGFuZ3VhZ2UsIHRoaXMg
c2NyaXB0IG1heSBub3QgYWx3YXlzIHdvcmssIGJ1dAoraXQgY2FuIGJlIHF1aXRlIGhhbmR5IHdo
ZW4gaXQgZG9lcy4gIEZvciBtb3JlIGRldGFpbHMsIHJlYWQgdGhlIFt1c2VyIGRvY3VtZW50YXRp
b25dKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGVtb2NrL3NvdXJjZS9icm93c2UvdHJ1
bmsvc2NyaXB0cy9nZW5lcmF0b3IvUkVBRE1FKS4KKworIyMgV2hlcmUgdG8gUHV0IEl0ICMjCitX
aGVuIHlvdSBkZWZpbmUgYSBtb2NrIGNsYXNzLCB5b3UgbmVlZCB0byBkZWNpZGUgd2hlcmUgdG8g
cHV0IGl0cyBkZWZpbml0aW9uLiBTb21lIHBlb3BsZSBwdXQgaXQgaW4gYSBgKl90ZXN0LmNjYC4g
VGhpcyBpcyBmaW5lIHdoZW4gdGhlIGludGVyZmFjZSBiZWluZyBtb2NrZWQgKHNheSwgYEZvb2Ap
IGlzIG93bmVkIGJ5IHRoZSBzYW1lIHBlcnNvbiBvciB0ZWFtLiBPdGhlcndpc2UsIHdoZW4gdGhl
IG93bmVyIG9mIGBGb29gIGNoYW5nZXMgaXQsIHlvdXIgdGVzdCBjb3VsZCBicmVhay4gKFlvdSBj
YW4ndCByZWFsbHkgZXhwZWN0IGBGb29gJ3MgbWFpbnRhaW5lciB0byBmaXggZXZlcnkgdGVzdCB0
aGF0IHVzZXMgYEZvb2AsIGNhbiB5b3U/KQorCitTbywgdGhlIHJ1bGUgb2YgdGh1bWIgaXM6IGlm
IHlvdSBuZWVkIHRvIG1vY2sgYEZvb2AgYW5kIGl0J3Mgb3duZWQgYnkgb3RoZXJzLCBkZWZpbmUg
dGhlIG1vY2sgY2xhc3MgaW4gYEZvb2AncyBwYWNrYWdlIChiZXR0ZXIsIGluIGEgYHRlc3Rpbmdg
IHN1Yi1wYWNrYWdlIHN1Y2ggdGhhdCB5b3UgY2FuIGNsZWFybHkgc2VwYXJhdGUgcHJvZHVjdGlv
biBjb2RlIGFuZCB0ZXN0aW5nIHV0aWxpdGllcyksIGFuZCBwdXQgaXQgaW4gYSBgbW9ja19mb28u
aGAuIFRoZW4gZXZlcnlvbmUgY2FuIHJlZmVyZW5jZSBgbW9ja19mb28uaGAgZnJvbSB0aGVpciB0
ZXN0cy4gSWYgYEZvb2AgZXZlciBjaGFuZ2VzLCB0aGVyZSBpcyBvbmx5IG9uZSBjb3B5IG9mIGBN
b2NrRm9vYCB0byBjaGFuZ2UsIGFuZCBvbmx5IHRlc3RzIHRoYXQgZGVwZW5kIG9uIHRoZSBjaGFu
Z2VkIG1ldGhvZHMgbmVlZCB0byBiZSBmaXhlZC4KKworQW5vdGhlciB3YXkgdG8gZG8gaXQ6IHlv
dSBjYW4gaW50cm9kdWNlIGEgdGhpbiBsYXllciBgRm9vQWRhcHRvcmAgb24gdG9wIG9mIGBGb29g
IGFuZCBjb2RlIHRvIHRoaXMgbmV3IGludGVyZmFjZS4gU2luY2UgeW91IG93biBgRm9vQWRhcHRv
cmAsIHlvdSBjYW4gYWJzb3JiIGNoYW5nZXMgaW4gYEZvb2AgbXVjaCBtb3JlIGVhc2lseS4gV2hp
bGUgdGhpcyBpcyBtb3JlIHdvcmsgaW5pdGlhbGx5LCBjYXJlZnVsbHkgY2hvb3NpbmcgdGhlIGFk
YXB0b3IgaW50ZXJmYWNlIGNhbiBtYWtlIHlvdXIgY29kZSBlYXNpZXIgdG8gd3JpdGUgYW5kIG1v
cmUgcmVhZGFibGUgKGEgbmV0IHdpbiBpbiB0aGUgbG9uZyBydW4pLCBhcyB5b3UgY2FuIGNob29z
ZSBgRm9vQWRhcHRvcmAgdG8gZml0IHlvdXIgc3BlY2lmaWMgZG9tYWluIG11Y2ggYmV0dGVyIHRo
YW4gYEZvb2AgZG9lcy4KKworIyBVc2luZyBNb2NrcyBpbiBUZXN0cyAjCitPbmNlIHlvdSBoYXZl
IGEgbW9jayBjbGFzcywgdXNpbmcgaXQgaXMgZWFzeS4gVGhlIHR5cGljYWwgd29yayBmbG93IGlz
OgorCisgIDEuIEltcG9ydCB0aGUgR29vZ2xlIE1vY2sgbmFtZXMgZnJvbSB0aGUgYHRlc3Rpbmdg
IG5hbWVzcGFjZSBzdWNoIHRoYXQgeW91IGNhbiB1c2UgdGhlbSB1bnF1YWxpZmllZCAoWW91IG9u
bHkgaGF2ZSB0byBkbyBpdCBvbmNlIHBlciBmaWxlLiBSZW1lbWJlciB0aGF0IG5hbWVzcGFjZXMg
YXJlIGEgZ29vZCBpZGVhIGFuZCBnb29kIGZvciB5b3VyIGhlYWx0aC4pLgorICAxLiBDcmVhdGUg
c29tZSBtb2NrIG9iamVjdHMuCisgIDEuIFNwZWNpZnkgeW91ciBleHBlY3RhdGlvbnMgb24gdGhl
bSAoSG93IG1hbnkgdGltZXMgd2lsbCBhIG1ldGhvZCBiZSBjYWxsZWQ/IFdpdGggd2hhdCBhcmd1
bWVudHM/IFdoYXQgc2hvdWxkIGl0IGRvPyBldGMuKS4KKyAgMS4gRXhlcmNpc2Ugc29tZSBjb2Rl
IHRoYXQgdXNlcyB0aGUgbW9ja3M7IG9wdGlvbmFsbHksIGNoZWNrIHRoZSByZXN1bHQgdXNpbmcg
R29vZ2xlIFRlc3QgYXNzZXJ0aW9ucy4gSWYgYSBtb2NrIG1ldGhvZCBpcyBjYWxsZWQgbW9yZSB0
aGFuIGV4cGVjdGVkIG9yIHdpdGggd3JvbmcgYXJndW1lbnRzLCB5b3UnbGwgZ2V0IGFuIGVycm9y
IGltbWVkaWF0ZWx5LgorICAxLiBXaGVuIGEgbW9jayBpcyBkZXN0cnVjdGVkLCBHb29nbGUgTW9j
ayB3aWxsIGF1dG9tYXRpY2FsbHkgY2hlY2sgd2hldGhlciBhbGwgZXhwZWN0YXRpb25zIG9uIGl0
IGhhdmUgYmVlbiBzYXRpc2ZpZWQuCisKK0hlcmUncyBhbiBleGFtcGxlOgorCitgYGAKKyNpbmNs
dWRlICJwYXRoL3RvL21vY2stdHVydGxlLmgiCisjaW5jbHVkZSA8Z21vY2svZ21vY2suaD4KKyNp
bmNsdWRlIDxndGVzdC9ndGVzdC5oPgordXNpbmcgOjp0ZXN0aW5nOjpBdExlYXN0OyAgICAgICAg
ICAgICAgICAgICAgIC8vICMxCisKK1RFU1QoUGFpbnRlclRlc3QsIENhbkRyYXdTb21ldGhpbmcp
IHsKKyAgTW9ja1R1cnRsZSB0dXJ0bGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAjMgor
ICBFWFBFQ1RfQ0FMTCh0dXJ0bGUsIFBlbkRvd24oKSkgICAgICAgICAgICAgIC8vICMzCisgICAg
ICAuVGltZXMoQXRMZWFzdCgxKSk7CisKKyAgUGFpbnRlciBwYWludGVyKCZ0dXJ0bGUpOyAgICAg
ICAgICAgICAgICAgICAvLyAjNAorCisgIEVYUEVDVF9UUlVFKHBhaW50ZXIuRHJhd0NpcmNsZSgw
LCAwLCAxMCkpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vICM1CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgeworICAvLyBUaGUgZm9s
bG93aW5nIGxpbmUgbXVzdCBiZSBleGVjdXRlZCB0byBpbml0aWFsaXplIEdvb2dsZSBNb2NrCisg
IC8vIChhbmQgR29vZ2xlIFRlc3QpIGJlZm9yZSBydW5uaW5nIHRoZSB0ZXN0cy4KKyAgOjp0ZXN0
aW5nOjpJbml0R29vZ2xlTW9jaygmYXJnYywgYXJndik7CisgIHJldHVybiBSVU5fQUxMX1RFU1RT
KCk7Cit9CitgYGAKKworQXMgeW91IG1pZ2h0IGhhdmUgZ3Vlc3NlZCwgdGhpcyB0ZXN0IGNoZWNr
cyB0aGF0IGBQZW5Eb3duKClgIGlzIGNhbGxlZCBhdCBsZWFzdCBvbmNlLiBJZiB0aGUgYHBhaW50
ZXJgIG9iamVjdCBkaWRuJ3QgY2FsbCB0aGlzIG1ldGhvZCwgeW91ciB0ZXN0IHdpbGwgZmFpbCB3
aXRoIGEgbWVzc2FnZSBsaWtlIHRoaXM6CisKK2BgYAorcGF0aC90by9teV90ZXN0LmNjOjExOTog
RmFpbHVyZQorQWN0dWFsIGZ1bmN0aW9uIGNhbGwgY291bnQgZG9lc24ndCBtYXRjaCB0aGlzIGV4
cGVjdGF0aW9uOgorQWN0dWFsbHk6IG5ldmVyIGNhbGxlZDsKK0V4cGVjdGVkOiBjYWxsZWQgYXQg
bGVhc3Qgb25jZS4KK2BgYAorCisqKlRpcCAxOioqIElmIHlvdSBydW4gdGhlIHRlc3QgZnJvbSBh
biBFbWFjcyBidWZmZXIsIHlvdSBjYW4gaGl0IGA8RW50ZXI+YCBvbiB0aGUgbGluZSBudW1iZXIg
ZGlzcGxheWVkIGluIHRoZSBlcnJvciBtZXNzYWdlIHRvIGp1bXAgcmlnaHQgdG8gdGhlIGZhaWxl
ZCBleHBlY3RhdGlvbi4KKworKipUaXAgMjoqKiBJZiB5b3VyIG1vY2sgb2JqZWN0cyBhcmUgbmV2
ZXIgZGVsZXRlZCwgdGhlIGZpbmFsIHZlcmlmaWNhdGlvbiB3b24ndCBoYXBwZW4uIFRoZXJlZm9y
ZSBpdCdzIGEgZ29vZCBpZGVhIHRvIHVzZSBhIGhlYXAgbGVhayBjaGVja2VyIGluIHlvdXIgdGVz
dHMgd2hlbiB5b3UgYWxsb2NhdGUgbW9ja3Mgb24gdGhlIGhlYXAuCisKKyoqSW1wb3J0YW50IG5v
dGU6KiogR29vZ2xlIE1vY2sgcmVxdWlyZXMgZXhwZWN0YXRpb25zIHRvIGJlIHNldCAqKmJlZm9y
ZSoqIHRoZSBtb2NrIGZ1bmN0aW9ucyBhcmUgY2FsbGVkLCBvdGhlcndpc2UgdGhlIGJlaGF2aW9y
IGlzICoqdW5kZWZpbmVkKiouIEluIHBhcnRpY3VsYXIsIHlvdSBtdXN0bid0IGludGVybGVhdmUg
YEVYUEVDVF9DQUxMKClgcyBhbmQgY2FsbHMgdG8gdGhlIG1vY2sgZnVuY3Rpb25zLgorCitUaGlz
IG1lYW5zIGBFWFBFQ1RfQ0FMTCgpYCBzaG91bGQgYmUgcmVhZCBhcyBleHBlY3RpbmcgdGhhdCBh
IGNhbGwgd2lsbCBvY2N1ciBfaW4gdGhlIGZ1dHVyZV8sIG5vdCB0aGF0IGEgY2FsbCBoYXMgb2Nj
dXJyZWQuIFdoeSBkb2VzIEdvb2dsZSBNb2NrIHdvcmsgbGlrZSB0aGF0PyBXZWxsLCBzcGVjaWZ5
aW5nIHRoZSBleHBlY3RhdGlvbiBiZWZvcmVoYW5kIGFsbG93cyBHb29nbGUgTW9jayB0byByZXBv
cnQgYSB2aW9sYXRpb24gYXMgc29vbiBhcyBpdCBhcmlzZXMsIHdoZW4gdGhlIGNvbnRleHQgKHN0
YWNrIHRyYWNlLCBldGMpIGlzIHN0aWxsIGF2YWlsYWJsZS4gVGhpcyBtYWtlcyBkZWJ1Z2dpbmcg
bXVjaCBlYXNpZXIuCisKK0FkbWl0dGVkbHksIHRoaXMgdGVzdCBpcyBjb250cml2ZWQgYW5kIGRv
ZXNuJ3QgZG8gbXVjaC4gWW91IGNhbiBlYXNpbHkgYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3Qgd2l0
aG91dCB1c2luZyBHb29nbGUgTW9jay4gSG93ZXZlciwgYXMgd2Ugc2hhbGwgcmV2ZWFsIHNvb24s
IEdvb2dsZSBNb2NrIGFsbG93cyB5b3UgdG8gZG8gX211Y2ggbW9yZV8gd2l0aCB0aGUgbW9ja3Mu
CisKKyMjIFVzaW5nIEdvb2dsZSBNb2NrIHdpdGggQW55IFRlc3RpbmcgRnJhbWV3b3JrICMjCitJ
ZiB5b3Ugd2FudCB0byB1c2Ugc29tZXRoaW5nIG90aGVyIHRoYW4gR29vZ2xlIFRlc3QgKGUuZy4g
W0NwcFVuaXRdKGh0dHA6Ly9hcHBzLnNvdXJjZWZvcmdlLm5ldC9tZWRpYXdpa2kvY3BwdW5pdC9p
bmRleC5waHA/dGl0bGU9TWFpbl9QYWdlKSBvcgorW0N4eFRlc3RdKGh0dHA6Ly9jeHh0ZXN0LnRp
Z3Jpcy5vcmcvKSkgYXMgeW91ciB0ZXN0aW5nIGZyYW1ld29yaywganVzdCBjaGFuZ2UgdGhlIGBt
YWluKClgIGZ1bmN0aW9uIGluIHRoZSBwcmV2aW91cyBzZWN0aW9uIHRvOgorYGBgCitpbnQgbWFp
bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKKyAgLy8gVGhlIGZvbGxvd2luZyBsaW5lIGNhdXNl
cyBHb29nbGUgTW9jayB0byB0aHJvdyBhbiBleGNlcHRpb24gb24gZmFpbHVyZSwKKyAgLy8gd2hp
Y2ggd2lsbCBiZSBpbnRlcnByZXRlZCBieSB5b3VyIHRlc3RpbmcgZnJhbWV3b3JrIGFzIGEgdGVz
dCBmYWlsdXJlLgorICA6OnRlc3Rpbmc6OkdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSkgPSB0
cnVlOworICA6OnRlc3Rpbmc6OkluaXRHb29nbGVNb2NrKCZhcmdjLCBhcmd2KTsKKyAgLi4uIHdo
YXRldmVyIHlvdXIgdGVzdGluZyBmcmFtZXdvcmsgcmVxdWlyZXMgLi4uCit9CitgYGAKKworVGhp
cyBhcHByb2FjaCBoYXMgYSBjYXRjaDogaXQgbWFrZXMgR29vZ2xlIE1vY2sgdGhyb3cgYW4gZXhj
ZXB0aW9uCitmcm9tIGEgbW9jayBvYmplY3QncyBkZXN0cnVjdG9yIHNvbWV0aW1lcy4gIFdpdGgg
c29tZSBjb21waWxlcnMsIHRoaXMKK3NvbWV0aW1lcyBjYXVzZXMgdGhlIHRlc3QgcHJvZ3JhbSB0
byBjcmFzaC4gIFlvdSdsbCBzdGlsbCBiZSBhYmxlIHRvCitub3RpY2UgdGhhdCB0aGUgdGVzdCBo
YXMgZmFpbGVkLCBidXQgaXQncyBub3QgYSBncmFjZWZ1bCBmYWlsdXJlLgorCitBIGJldHRlciBz
b2x1dGlvbiBpcyB0byB1c2UgR29vZ2xlIFRlc3QncworW2V2ZW50IGxpc3RlbmVyIEFQSV0oaHR0
cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRlc3Qvd2lraS9Hb29nbGVUZXN0QWR2YW5jZWRH
dWlkZSNFeHRlbmRpbmdfR29vZ2xlX1Rlc3RfYnlfSGFuZGxpbmdfVGVzdF9FdmVudHMpCit0byBy
ZXBvcnQgYSB0ZXN0IGZhaWx1cmUgdG8geW91ciB0ZXN0aW5nIGZyYW1ld29yayBwcm9wZXJseS4g
IFlvdSdsbCBuZWVkIHRvCitpbXBsZW1lbnQgdGhlIGBPblRlc3RQYXJ0UmVzdWx0KClgIG1ldGhv
ZCBvZiB0aGUgZXZlbnQgbGlzdGVuZXIgaW50ZXJmYWNlLCBidXQgaXQKK3Nob3VsZCBiZSBzdHJh
aWdodGZvcndhcmQuCisKK0lmIHRoaXMgdHVybnMgb3V0IHRvIGJlIHRvbyBtdWNoIHdvcmssIHdl
IHN1Z2dlc3QgdGhhdCB5b3Ugc3RpY2sgd2l0aAorR29vZ2xlIFRlc3QsIHdoaWNoIHdvcmtzIHdp
dGggR29vZ2xlIE1vY2sgc2VhbWxlc3NseSAoaW4gZmFjdCwgaXQgaXMKK3RlY2huaWNhbGx5IHBh
cnQgb2YgR29vZ2xlIE1vY2suKS4gIElmIHRoZXJlIGlzIGEgcmVhc29uIHRoYXQgeW91CitjYW5u
b3QgdXNlIEdvb2dsZSBUZXN0LCBwbGVhc2UgbGV0IHVzIGtub3cuCisKKyMgU2V0dGluZyBFeHBl
Y3RhdGlvbnMgIworVGhlIGtleSB0byB1c2luZyBhIG1vY2sgb2JqZWN0IHN1Y2Nlc3NmdWxseSBp
cyB0byBzZXQgdGhlIF9yaWdodCBleHBlY3RhdGlvbnNfIG9uIGl0LiBJZiB5b3Ugc2V0IHRoZSBl
eHBlY3RhdGlvbnMgdG9vIHN0cmljdCwgeW91ciB0ZXN0IHdpbGwgZmFpbCBhcyB0aGUgcmVzdWx0
IG9mIHVucmVsYXRlZCBjaGFuZ2VzLiBJZiB5b3Ugc2V0IHRoZW0gdG9vIGxvb3NlLCBidWdzIGNh
biBzbGlwIHRocm91Z2guIFlvdSB3YW50IHRvIGRvIGl0IGp1c3QgcmlnaHQgc3VjaCB0aGF0IHlv
dXIgdGVzdCBjYW4gY2F0Y2ggZXhhY3RseSB0aGUga2luZCBvZiBidWdzIHlvdSBpbnRlbmQgaXQg
dG8gY2F0Y2guIEdvb2dsZSBNb2NrIHByb3ZpZGVzIHRoZSBuZWNlc3NhcnkgbWVhbnMgZm9yIHlv
dSB0byBkbyBpdCAianVzdCByaWdodC4iCisKKyMjIEdlbmVyYWwgU3ludGF4ICMjCitJbiBHb29n
bGUgTW9jayB3ZSB1c2UgdGhlIGBFWFBFQ1RfQ0FMTCgpYCBtYWNybyB0byBzZXQgYW4gZXhwZWN0
YXRpb24gb24gYSBtb2NrIG1ldGhvZC4gVGhlIGdlbmVyYWwgc3ludGF4IGlzOgorCitgYGAKK0VY
UEVDVF9DQUxMKG1vY2tfb2JqZWN0LCBtZXRob2QobWF0Y2hlcnMpKQorICAgIC5UaW1lcyhjYXJk
aW5hbGl0eSkKKyAgICAuV2lsbE9uY2UoYWN0aW9uKQorICAgIC5XaWxsUmVwZWF0ZWRseShhY3Rp
b24pOworYGBgCisKK1RoZSBtYWNybyBoYXMgdHdvIGFyZ3VtZW50czogZmlyc3QgdGhlIG1vY2sg
b2JqZWN0LCBhbmQgdGhlbiB0aGUgbWV0aG9kIGFuZCBpdHMgYXJndW1lbnRzLiBOb3RlIHRoYXQg
dGhlIHR3byBhcmUgc2VwYXJhdGVkIGJ5IGEgY29tbWEgKGAsYCksIG5vdCBhIHBlcmlvZCAoYC5g
KS4gKFdoeSB1c2luZyBhIGNvbW1hPyBUaGUgYW5zd2VyIGlzIHRoYXQgaXQgd2FzIG5lY2Vzc2Fy
eSBmb3IgdGVjaG5pY2FsIHJlYXNvbnMuKQorCitUaGUgbWFjcm8gY2FuIGJlIGZvbGxvd2VkIGJ5
IHNvbWUgb3B0aW9uYWwgX2NsYXVzZXNfIHRoYXQgcHJvdmlkZSBtb3JlIGluZm9ybWF0aW9uIGFi
b3V0IHRoZSBleHBlY3RhdGlvbi4gV2UnbGwgZGlzY3VzcyBob3cgZWFjaCBjbGF1c2Ugd29ya3Mg
aW4gdGhlIGNvbWluZyBzZWN0aW9ucy4KKworVGhpcyBzeW50YXggaXMgZGVzaWduZWQgdG8gbWFr
ZSBhbiBleHBlY3RhdGlvbiByZWFkIGxpa2UgRW5nbGlzaC4gRm9yIGV4YW1wbGUsIHlvdSBjYW4g
cHJvYmFibHkgZ3Vlc3MgdGhhdAorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6UmV0dXJuOy4uLgor
RVhQRUNUX0NBTEwodHVydGxlLCBHZXRYKCkpCisgICAgLlRpbWVzKDUpCisgICAgLldpbGxPbmNl
KFJldHVybigxMDApKQorICAgIC5XaWxsT25jZShSZXR1cm4oMTUwKSkKKyAgICAuV2lsbFJlcGVh
dGVkbHkoUmV0dXJuKDIwMCkpOworYGBgCisKK3NheXMgdGhhdCB0aGUgYHR1cnRsZWAgb2JqZWN0
J3MgYEdldFgoKWAgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGZpdmUgdGltZXMsIGl0IHdpbGwgcmV0
dXJuIDEwMCB0aGUgZmlyc3QgdGltZSwgMTUwIHRoZSBzZWNvbmQgdGltZSwgYW5kIHRoZW4gMjAw
IGV2ZXJ5IHRpbWUuIFNvbWUgcGVvcGxlIGxpa2UgdG8gY2FsbCB0aGlzIHN0eWxlIG9mIHN5bnRh
eCBhIERvbWFpbi1TcGVjaWZpYyBMYW5ndWFnZSAoRFNMKS4KKworKipOb3RlOioqIFdoeSBkbyB3
ZSB1c2UgYSBtYWNybyB0byBkbyB0aGlzPyBJdCBzZXJ2ZXMgdHdvIHB1cnBvc2VzOiBmaXJzdCBp
dCBtYWtlcyBleHBlY3RhdGlvbnMgZWFzaWx5IGlkZW50aWZpYWJsZSAoZWl0aGVyIGJ5IGBncmVw
YCBvciBieSBhIGh1bWFuIHJlYWRlciksIGFuZCBzZWNvbmQgaXQgYWxsb3dzIEdvb2dsZSBNb2Nr
IHRvIGluY2x1ZGUgdGhlIHNvdXJjZSBmaWxlIGxvY2F0aW9uIG9mIGEgZmFpbGVkIGV4cGVjdGF0
aW9uIGluIG1lc3NhZ2VzLCBtYWtpbmcgZGVidWdnaW5nIGVhc2llci4KKworIyMgTWF0Y2hlcnM6
IFdoYXQgQXJndW1lbnRzIERvIFdlIEV4cGVjdD8gIyMKK1doZW4gYSBtb2NrIGZ1bmN0aW9uIHRh
a2VzIGFyZ3VtZW50cywgd2UgbXVzdCBzcGVjaWZ5IHdoYXQgYXJndW1lbnRzIHdlIGFyZSBleHBl
Y3Rpbmc7IGZvciBleGFtcGxlOgorCitgYGAKKy8vIEV4cGVjdHMgdGhlIHR1cnRsZSB0byBtb3Zl
IGZvcndhcmQgYnkgMTAwIHVuaXRzLgorRVhQRUNUX0NBTEwodHVydGxlLCBGb3J3YXJkKDEwMCkp
OworYGBgCisKK1NvbWV0aW1lcyB5b3UgbWF5IG5vdCB3YW50IHRvIGJlIHRvbyBzcGVjaWZpYyAo
UmVtZW1iZXIgdGhhdCB0YWxrIGFib3V0IHRlc3RzIGJlaW5nIHRvbyByaWdpZD8gT3ZlciBzcGVj
aWZpY2F0aW9uIGxlYWRzIHRvIGJyaXR0bGUgdGVzdHMgYW5kIG9ic2N1cmVzIHRoZSBpbnRlbnQg
b2YgdGVzdHMuIFRoZXJlZm9yZSB3ZSBlbmNvdXJhZ2UgeW91IHRvIHNwZWNpZnkgb25seSB3aGF0
J3MgbmVjZXNzYXJ5IC0gbm8gbW9yZSwgbm8gbGVzcy4pLiBJZiB5b3UgY2FyZSB0byBjaGVjayB0
aGF0IGBGb3J3YXJkKClgIHdpbGwgYmUgY2FsbGVkIGJ1dCBhcmVuJ3QgaW50ZXJlc3RlZCBpbiBp
dHMgYWN0dWFsIGFyZ3VtZW50LCB3cml0ZSBgX2AgYXMgdGhlIGFyZ3VtZW50LCB3aGljaCBtZWFu
cyAiYW55dGhpbmcgZ29lcyI6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpfOworLi4uCisvLyBF
eHBlY3RzIHRoZSB0dXJ0bGUgdG8gbW92ZSBmb3J3YXJkLgorRVhQRUNUX0NBTEwodHVydGxlLCBG
b3J3YXJkKF8pKTsKK2BgYAorCitgX2AgaXMgYW4gaW5zdGFuY2Ugb2Ygd2hhdCB3ZSBjYWxsICoq
bWF0Y2hlcnMqKi4gQSBtYXRjaGVyIGlzIGxpa2UgYSBwcmVkaWNhdGUgYW5kIGNhbiB0ZXN0IHdo
ZXRoZXIgYW4gYXJndW1lbnQgaXMgd2hhdCB3ZSdkIGV4cGVjdC4gWW91IGNhbiB1c2UgYSBtYXRj
aGVyIGluc2lkZSBgRVhQRUNUX0NBTEwoKWAgd2hlcmV2ZXIgYSBmdW5jdGlvbiBhcmd1bWVudCBp
cyBleHBlY3RlZC4KKworQSBsaXN0IG9mIGJ1aWx0LWluIG1hdGNoZXJzIGNhbiBiZSBmb3VuZCBp
biB0aGUgW0NoZWF0U2hlZXRdKFYxXzVfQ2hlYXRTaGVldC5tZCkuIEZvciBleGFtcGxlLCBoZXJl
J3MgdGhlIGBHZWAgKGdyZWF0ZXIgdGhhbiBvciBlcXVhbCkgbWF0Y2hlcjoKKworYGBgCit1c2lu
ZyA6OnRlc3Rpbmc6OkdlOy4uLgorRVhQRUNUX0NBTEwodHVydGxlLCBGb3J3YXJkKEdlKDEwMCkp
KTsKK2BgYAorCitUaGlzIGNoZWNrcyB0aGF0IHRoZSB0dXJ0bGUgd2lsbCBiZSB0b2xkIHRvIGdv
IGZvcndhcmQgYnkgYXQgbGVhc3QgMTAwIHVuaXRzLgorCisjIyBDYXJkaW5hbGl0aWVzOiBIb3cg
TWFueSBUaW1lcyBXaWxsIEl0IEJlIENhbGxlZD8gIyMKK1RoZSBmaXJzdCBjbGF1c2Ugd2UgY2Fu
IHNwZWNpZnkgZm9sbG93aW5nIGFuIGBFWFBFQ1RfQ0FMTCgpYCBpcyBgVGltZXMoKWAuIFdlIGNh
bGwgaXRzIGFyZ3VtZW50IGEgKipjYXJkaW5hbGl0eSoqIGFzIGl0IHRlbGxzIF9ob3cgbWFueSB0
aW1lc18gdGhlIGNhbGwgc2hvdWxkIG9jY3VyLiBJdCBhbGxvd3MgdXMgdG8gcmVwZWF0IGFuIGV4
cGVjdGF0aW9uIG1hbnkgdGltZXMgd2l0aG91dCBhY3R1YWxseSB3cml0aW5nIGl0IGFzIG1hbnkg
dGltZXMuIE1vcmUgaW1wb3J0YW50bHksIGEgY2FyZGluYWxpdHkgY2FuIGJlICJmdXp6eSIsIGp1
c3QgbGlrZSBhIG1hdGNoZXIgY2FuIGJlLiBUaGlzIGFsbG93cyBhIHVzZXIgdG8gZXhwcmVzcyB0
aGUgaW50ZW50IG9mIGEgdGVzdCBleGFjdGx5LgorCitBbiBpbnRlcmVzdGluZyBzcGVjaWFsIGNh
c2UgaXMgd2hlbiB3ZSBzYXkgYFRpbWVzKDApYC4gWW91IG1heSBoYXZlIGd1ZXNzZWQgLSBpdCBt
ZWFucyB0aGF0IHRoZSBmdW5jdGlvbiBzaG91bGRuJ3QgYmUgY2FsbGVkIHdpdGggdGhlIGdpdmVu
IGFyZ3VtZW50cyBhdCBhbGwsIGFuZCBHb29nbGUgTW9jayB3aWxsIHJlcG9ydCBhIEdvb2dsZSBU
ZXN0IGZhaWx1cmUgd2hlbmV2ZXIgdGhlIGZ1bmN0aW9uIGlzICh3cm9uZ2Z1bGx5KSBjYWxsZWQu
CisKK1dlJ3ZlIHNlZW4gYEF0TGVhc3QobilgIGFzIGFuIGV4YW1wbGUgb2YgZnV6enkgY2FyZGlu
YWxpdGllcyBlYXJsaWVyLiBGb3IgdGhlIGxpc3Qgb2YgYnVpbHQtaW4gY2FyZGluYWxpdGllcyB5
b3UgY2FuIHVzZSwgc2VlIHRoZSBbQ2hlYXRTaGVldF0oVjFfNV9DaGVhdFNoZWV0Lm1kKS4KKwor
VGhlIGBUaW1lcygpYCBjbGF1c2UgY2FuIGJlIG9taXR0ZWQuICoqSWYgeW91IG9taXQgYFRpbWVz
KClgLCBHb29nbGUgTW9jayB3aWxsIGluZmVyIHRoZSBjYXJkaW5hbGl0eSBmb3IgeW91LioqIFRo
ZSBydWxlcyBhcmUgZWFzeSB0byByZW1lbWJlcjoKKworICAqIElmICoqbmVpdGhlcioqIGBXaWxs
T25jZSgpYCAqKm5vcioqIGBXaWxsUmVwZWF0ZWRseSgpYCBpcyBpbiB0aGUgYEVYUEVDVF9DQUxM
KClgLCB0aGUgaW5mZXJyZWQgY2FyZGluYWxpdHkgaXMgYFRpbWVzKDEpYC4KKyAgKiBJZiB0aGVy
ZSBhcmUgYG4gV2lsbE9uY2UoKWAncyBidXQgKipubyoqIGBXaWxsUmVwZWF0ZWRseSgpYCwgd2hl
cmUgYG5gID49IDEsIHRoZSBjYXJkaW5hbGl0eSBpcyBgVGltZXMobilgLgorICAqIElmIHRoZXJl
IGFyZSBgbiBXaWxsT25jZSgpYCdzIGFuZCAqKm9uZSoqIGBXaWxsUmVwZWF0ZWRseSgpYCwgd2hl
cmUgYG5gID49IDAsIHRoZSBjYXJkaW5hbGl0eSBpcyBgVGltZXMoQXRMZWFzdChuKSlgLgorCisq
KlF1aWNrIHF1aXo6Kiogd2hhdCBkbyB5b3UgdGhpbmsgd2lsbCBoYXBwZW4gaWYgYSBmdW5jdGlv
biBpcyBleHBlY3RlZCB0byBiZSBjYWxsZWQgdHdpY2UgYnV0IGFjdHVhbGx5IGNhbGxlZCBmb3Vy
IHRpbWVzPworCisjIyBBY3Rpb25zOiBXaGF0IFNob3VsZCBJdCBEbz8gIyMKK1JlbWVtYmVyIHRo
YXQgYSBtb2NrIG9iamVjdCBkb2Vzbid0IHJlYWxseSBoYXZlIGEgd29ya2luZyBpbXBsZW1lbnRh
dGlvbj8gV2UgYXMgdXNlcnMgaGF2ZSB0byB0ZWxsIGl0IHdoYXQgdG8gZG8gd2hlbiBhIG1ldGhv
ZCBpcyBpbnZva2VkLiBUaGlzIGlzIGVhc3kgaW4gR29vZ2xlIE1vY2suCisKK0ZpcnN0LCBpZiB0
aGUgcmV0dXJuIHR5cGUgb2YgYSBtb2NrIGZ1bmN0aW9uIGlzIGEgYnVpbHQtaW4gdHlwZSBvciBh
IHBvaW50ZXIsIHRoZSBmdW5jdGlvbiBoYXMgYSAqKmRlZmF1bHQgYWN0aW9uKiogKGEgYHZvaWRg
IGZ1bmN0aW9uIHdpbGwganVzdCByZXR1cm4sIGEgYGJvb2xgIGZ1bmN0aW9uIHdpbGwgcmV0dXJu
IGBmYWxzZWAsIGFuZCBvdGhlciBmdW5jdGlvbnMgd2lsbCByZXR1cm4gMCkuIElmIHlvdSBkb24n
dCBzYXkgYW55dGhpbmcsIHRoaXMgYmVoYXZpb3Igd2lsbCBiZSB1c2VkLgorCitTZWNvbmQsIGlm
IGEgbW9jayBmdW5jdGlvbiBkb2Vzbid0IGhhdmUgYSBkZWZhdWx0IGFjdGlvbiwgb3IgdGhlIGRl
ZmF1bHQgYWN0aW9uIGRvZXNuJ3Qgc3VpdCB5b3UsIHlvdSBjYW4gc3BlY2lmeSB0aGUgYWN0aW9u
IHRvIGJlIHRha2VuIGVhY2ggdGltZSB0aGUgZXhwZWN0YXRpb24gbWF0Y2hlcyB1c2luZyBhIHNl
cmllcyBvZiBgV2lsbE9uY2UoKWAgY2xhdXNlcyBmb2xsb3dlZCBieSBhbiBvcHRpb25hbCBgV2ls
bFJlcGVhdGVkbHkoKWAuIEZvciBleGFtcGxlLAorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6UmV0
dXJuOy4uLgorRVhQRUNUX0NBTEwodHVydGxlLCBHZXRYKCkpCisgICAgLldpbGxPbmNlKFJldHVy
bigxMDApKQorICAgIC5XaWxsT25jZShSZXR1cm4oMjAwKSkKKyAgICAuV2lsbE9uY2UoUmV0dXJu
KDMwMCkpOworYGBgCisKK1RoaXMgc2F5cyB0aGF0IGB0dXJ0bGUuR2V0WCgpYCB3aWxsIGJlIGNh
bGxlZCBfZXhhY3RseSB0aHJlZSB0aW1lc18gKEdvb2dsZSBNb2NrIGluZmVycmVkIHRoaXMgZnJv
bSBob3cgbWFueSBgV2lsbE9uY2UoKWAgY2xhdXNlcyB3ZSd2ZSB3cml0dGVuLCBzaW5jZSB3ZSBk
aWRuJ3QgZXhwbGljaXRseSB3cml0ZSBgVGltZXMoKWApLCBhbmQgd2lsbCByZXR1cm4gMTAwLCAy
MDAsIGFuZCAzMDAgcmVzcGVjdGl2ZWx5LgorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6UmV0dXJu
Oy4uLgorRVhQRUNUX0NBTEwodHVydGxlLCBHZXRZKCkpCisgICAgLldpbGxPbmNlKFJldHVybigx
MDApKQorICAgIC5XaWxsT25jZShSZXR1cm4oMjAwKSkKKyAgICAuV2lsbFJlcGVhdGVkbHkoUmV0
dXJuKDMwMCkpOworYGBgCisKK3NheXMgdGhhdCBgdHVydGxlLkdldFkoKWAgd2lsbCBiZSBjYWxs
ZWQgX2F0IGxlYXN0IHR3aWNlXyAoR29vZ2xlIE1vY2sga25vd3MgdGhpcyBhcyB3ZSd2ZSB3cml0
dGVuIHR3byBgV2lsbE9uY2UoKWAgY2xhdXNlcyBhbmQgYSBgV2lsbFJlcGVhdGVkbHkoKWAgd2hp
bGUgaGF2aW5nIG5vIGV4cGxpY2l0IGBUaW1lcygpYCksIHdpbGwgcmV0dXJuIDEwMCB0aGUgZmly
c3QgdGltZSwgMjAwIHRoZSBzZWNvbmQgdGltZSwgYW5kIDMwMCBmcm9tIHRoZSB0aGlyZCB0aW1l
IG9uLgorCitPZiBjb3Vyc2UsIGlmIHlvdSBleHBsaWNpdGx5IHdyaXRlIGEgYFRpbWVzKClgLCBH
b29nbGUgTW9jayB3aWxsIG5vdCB0cnkgdG8gaW5mZXIgdGhlIGNhcmRpbmFsaXR5IGl0c2VsZi4g
V2hhdCBpZiB0aGUgbnVtYmVyIHlvdSBzcGVjaWZpZWQgaXMgbGFyZ2VyIHRoYW4gdGhlcmUgYXJl
IGBXaWxsT25jZSgpYCBjbGF1c2VzPyBXZWxsLCBhZnRlciBhbGwgYFdpbGxPbmNlKClgcyBhcmUg
dXNlZCB1cCwgR29vZ2xlIE1vY2sgd2lsbCBkbyB0aGUgX2RlZmF1bHRfIGFjdGlvbiBmb3IgdGhl
IGZ1bmN0aW9uIGV2ZXJ5IHRpbWUgKHVubGVzcywgb2YgY291cnNlLCB5b3UgaGF2ZSBhIGBXaWxs
UmVwZWF0ZWRseSgpYC4pLgorCitXaGF0IGNhbiB3ZSBkbyBpbnNpZGUgYFdpbGxPbmNlKClgIGJl
c2lkZXMgYFJldHVybigpYD8gWW91IGNhbiByZXR1cm4gYSByZWZlcmVuY2UgdXNpbmcgYFJldHVy
blJlZih2YXJpYWJsZSlgLCBvciBpbnZva2UgYSBwcmUtZGVmaW5lZCBmdW5jdGlvbiwgYW1vbmcg
W290aGVyc10oVjFfNV9DaGVhdFNoZWV0I0FjdGlvbnMubWQpLgorCisqKkltcG9ydGFudCBub3Rl
OioqIFRoZSBgRVhQRUNUX0NBTEwoKWAgc3RhdGVtZW50IGV2YWx1YXRlcyB0aGUgYWN0aW9uIGNs
YXVzZSBvbmx5IG9uY2UsIGV2ZW4gdGhvdWdoIHRoZSBhY3Rpb24gbWF5IGJlIHBlcmZvcm1lZCBt
YW55IHRpbWVzLiBUaGVyZWZvcmUgeW91IG11c3QgYmUgY2FyZWZ1bCBhYm91dCBzaWRlIGVmZmVj
dHMuIFRoZSBmb2xsb3dpbmcgbWF5IG5vdCBkbyB3aGF0IHlvdSB3YW50OgorCitgYGAKK2ludCBu
ID0gMTAwOworRVhQRUNUX0NBTEwodHVydGxlLCBHZXRYKCkpCisuVGltZXMoNCkKKy5XaWxsT25j
ZShSZXR1cm4obisrKSk7CitgYGAKKworSW5zdGVhZCBvZiByZXR1cm5pbmcgMTAwLCAxMDEsIDEw
MiwgLi4uLCBjb25zZWN1dGl2ZWx5LCB0aGlzIG1vY2sgZnVuY3Rpb24gd2lsbCBhbHdheXMgcmV0
dXJuIDEwMCBhcyBgbisrYCBpcyBvbmx5IGV2YWx1YXRlZCBvbmNlLiBTaW1pbGFybHksIGBSZXR1
cm4obmV3IEZvbylgIHdpbGwgY3JlYXRlIGEgbmV3IGBGb29gIG9iamVjdCB3aGVuIHRoZSBgRVhQ
RUNUX0NBTEwoKWAgaXMgZXhlY3V0ZWQsIGFuZCB3aWxsIHJldHVybiB0aGUgc2FtZSBwb2ludGVy
IGV2ZXJ5IHRpbWUuIElmIHlvdSB3YW50IHRoZSBzaWRlIGVmZmVjdCB0byBoYXBwZW4gZXZlcnkg
dGltZSwgeW91IG5lZWQgdG8gZGVmaW5lIGEgY3VzdG9tIGFjdGlvbiwgd2hpY2ggd2UnbGwgdGVh
Y2ggaW4gdGhlIFtDb29rQm9va10oVjFfNV9Db29rQm9vay5tZCkuCisKK1RpbWUgZm9yIGFub3Ro
ZXIgcXVpeiEgV2hhdCBkbyB5b3UgdGhpbmsgdGhlIGZvbGxvd2luZyBtZWFucz8KKworYGBgCit1
c2luZyA6OnRlc3Rpbmc6OlJldHVybjsuLi4KK0VYUEVDVF9DQUxMKHR1cnRsZSwgR2V0WSgpKQor
LlRpbWVzKDQpCisuV2lsbE9uY2UoUmV0dXJuKDEwMCkpOworYGBgCisKK09idmlvdXNseSBgdHVy
dGxlLkdldFkoKWAgaXMgZXhwZWN0ZWQgdG8gYmUgY2FsbGVkIGZvdXIgdGltZXMuIEJ1dCBpZiB5
b3UgdGhpbmsgaXQgd2lsbCByZXR1cm4gMTAwIGV2ZXJ5IHRpbWUsIHRoaW5rIHR3aWNlISBSZW1l
bWJlciB0aGF0IG9uZSBgV2lsbE9uY2UoKWAgY2xhdXNlIHdpbGwgYmUgY29uc3VtZWQgZWFjaCB0
aW1lIHRoZSBmdW5jdGlvbiBpcyBpbnZva2VkIGFuZCB0aGUgZGVmYXVsdCBhY3Rpb24gd2lsbCBi
ZSB0YWtlbiBhZnRlcndhcmRzLiBTbyB0aGUgcmlnaHQgYW5zd2VyIGlzIHRoYXQgYHR1cnRsZS5H
ZXRZKClgIHdpbGwgcmV0dXJuIDEwMCB0aGUgZmlyc3QgdGltZSwgYnV0ICoqcmV0dXJuIDAgZnJv
bSB0aGUgc2Vjb25kIHRpbWUgb24qKiwgYXMgcmV0dXJuaW5nIDAgaXMgdGhlIGRlZmF1bHQgYWN0
aW9uIGZvciBgaW50YCBmdW5jdGlvbnMuCisKKyMjIFVzaW5nIE11bHRpcGxlIEV4cGVjdGF0aW9u
cyAjIworU28gZmFyIHdlJ3ZlIG9ubHkgc2hvd24gZXhhbXBsZXMgd2hlcmUgeW91IGhhdmUgYSBz
aW5nbGUgZXhwZWN0YXRpb24uIE1vcmUgcmVhbGlzdGljYWxseSwgeW91J3JlIGdvaW5nIHRvIHNw
ZWNpZnkgZXhwZWN0YXRpb25zIG9uIG11bHRpcGxlIG1vY2sgbWV0aG9kcywgd2hpY2ggbWF5IGJl
IGZyb20gbXVsdGlwbGUgbW9jayBvYmplY3RzLgorCitCeSBkZWZhdWx0LCB3aGVuIGEgbW9jayBt
ZXRob2QgaXMgaW52b2tlZCwgR29vZ2xlIE1vY2sgd2lsbCBzZWFyY2ggdGhlIGV4cGVjdGF0aW9u
cyBpbiB0aGUgKipyZXZlcnNlIG9yZGVyKiogdGhleSBhcmUgZGVmaW5lZCwgYW5kIHN0b3Agd2hl
biBhbiBhY3RpdmUgZXhwZWN0YXRpb24gdGhhdCBtYXRjaGVzIHRoZSBhcmd1bWVudHMgaXMgZm91
bmQgKHlvdSBjYW4gdGhpbmsgb2YgaXQgYXMgIm5ld2VyIHJ1bGVzIG92ZXJyaWRlIG9sZGVyIG9u
ZXMuIikuIElmIHRoZSBtYXRjaGluZyBleHBlY3RhdGlvbiBjYW5ub3QgdGFrZSBhbnkgbW9yZSBj
YWxscywgeW91IHdpbGwgZ2V0IGFuIHVwcGVyLWJvdW5kLXZpb2xhdGVkIGZhaWx1cmUuIEhlcmUn
cyBhbiBleGFtcGxlOgorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6XzsuLi4KK0VYUEVDVF9DQUxM
KHR1cnRsZSwgRm9yd2FyZChfKSk7ICAvLyAjMQorRVhQRUNUX0NBTEwodHVydGxlLCBGb3J3YXJk
KDEwKSkgIC8vICMyCisgICAgLlRpbWVzKDIpOworYGBgCisKK0lmIGBGb3J3YXJkKDEwKWAgaXMg
Y2FsbGVkIHRocmVlIHRpbWVzIGluIGEgcm93LCB0aGUgdGhpcmQgdGltZSBpdCB3aWxsIGJlIGFu
IGVycm9yLCBhcyB0aGUgbGFzdCBtYXRjaGluZyBleHBlY3RhdGlvbiAoIzIpIGhhcyBiZWVuIHNh
dHVyYXRlZC4gSWYsIGhvd2V2ZXIsIHRoZSB0aGlyZCBgRm9yd2FyZCgxMClgIGNhbGwgaXMgcmVw
bGFjZWQgYnkgYEZvcndhcmQoMjApYCwgdGhlbiBpdCB3b3VsZCBiZSBPSywgYXMgbm93ICMxIHdp
bGwgYmUgdGhlIG1hdGNoaW5nIGV4cGVjdGF0aW9uLgorCisqKlNpZGUgbm90ZToqKiBXaHkgZG9l
cyBHb29nbGUgTW9jayBzZWFyY2ggZm9yIGEgbWF0Y2ggaW4gdGhlIF9yZXZlcnNlXyBvcmRlciBv
ZiB0aGUgZXhwZWN0YXRpb25zPyBUaGUgcmVhc29uIGlzIHRoYXQgdGhpcyBhbGxvd3MgYSB1c2Vy
IHRvIHNldCB1cCB0aGUgZGVmYXVsdCBleHBlY3RhdGlvbnMgaW4gYSBtb2NrIG9iamVjdCdzIGNv
bnN0cnVjdG9yIG9yIHRoZSB0ZXN0IGZpeHR1cmUncyBzZXQtdXAgcGhhc2UgYW5kIHRoZW4gY3Vz
dG9taXplIHRoZSBtb2NrIGJ5IHdyaXRpbmcgbW9yZSBzcGVjaWZpYyBleHBlY3RhdGlvbnMgaW4g
dGhlIHRlc3QgYm9keS4gU28sIGlmIHlvdSBoYXZlIHR3byBleHBlY3RhdGlvbnMgb24gdGhlIHNh
bWUgbWV0aG9kLCB5b3Ugd2FudCB0byBwdXQgdGhlIG9uZSB3aXRoIG1vcmUgc3BlY2lmaWMgbWF0
Y2hlcnMgKiphZnRlcioqIHRoZSBvdGhlciwgb3IgdGhlIG1vcmUgc3BlY2lmaWMgcnVsZSB3b3Vs
ZCBiZSBzaGFkb3dlZCBieSB0aGUgbW9yZSBnZW5lcmFsIG9uZSB0aGF0IGNvbWVzIGFmdGVyIGl0
LgorCisjIyBPcmRlcmVkIHZzIFVub3JkZXJlZCBDYWxscyAjIworQnkgZGVmYXVsdCwgYW4gZXhw
ZWN0YXRpb24gY2FuIG1hdGNoIGEgY2FsbCBldmVuIHRob3VnaCBhbiBlYXJsaWVyIGV4cGVjdGF0
aW9uIGhhc24ndCBiZWVuIHNhdGlzZmllZC4gSW4gb3RoZXIgd29yZHMsIHRoZSBjYWxscyBkb24n
dCBoYXZlIHRvIG9jY3VyIGluIHRoZSBvcmRlciB0aGUgZXhwZWN0YXRpb25zIGFyZSBzcGVjaWZp
ZWQuCisKK1NvbWV0aW1lcywgeW91IG1heSB3YW50IGFsbCB0aGUgZXhwZWN0ZWQgY2FsbHMgdG8g
b2NjdXIgaW4gYSBzdHJpY3Qgb3JkZXIuIFRvIHNheSB0aGlzIGluIEdvb2dsZSBNb2NrIGlzIGVh
c3k6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpJblNlcXVlbmNlOy4uLgorVEVTVChGb29UZXN0
LCBEcmF3c0xpbmVTZWdtZW50KSB7CisgIC4uLgorICB7CisgICAgSW5TZXF1ZW5jZSBkdW1teTsK
KworICAgIEVYUEVDVF9DQUxMKHR1cnRsZSwgUGVuRG93bigpKTsKKyAgICBFWFBFQ1RfQ0FMTCh0
dXJ0bGUsIEZvcndhcmQoMTAwKSk7CisgICAgRVhQRUNUX0NBTEwodHVydGxlLCBQZW5VcCgpKTsK
KyAgfQorICBGb28oKTsKK30KK2BgYAorCitCeSBjcmVhdGluZyBhbiBvYmplY3Qgb2YgdHlwZSBg
SW5TZXF1ZW5jZWAsIGFsbCBleHBlY3RhdGlvbnMgaW4gaXRzIHNjb3BlIGFyZSBwdXQgaW50byBh
IF9zZXF1ZW5jZV8gYW5kIGhhdmUgdG8gb2NjdXIgX3NlcXVlbnRpYWxseV8uIFNpbmNlIHdlIGFy
ZSBqdXN0IHJlbHlpbmcgb24gdGhlIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yIG9mIHRoaXMg
b2JqZWN0IHRvIGRvIHRoZSBhY3R1YWwgd29yaywgaXRzIG5hbWUgaXMgcmVhbGx5IGlycmVsZXZh
bnQuCisKK0luIHRoaXMgZXhhbXBsZSwgd2UgdGVzdCB0aGF0IGBGb28oKWAgY2FsbHMgdGhlIHRo
cmVlIGV4cGVjdGVkIGZ1bmN0aW9ucyBpbiB0aGUgb3JkZXIgYXMgd3JpdHRlbi4gSWYgYSBjYWxs
IGlzIG1hZGUgb3V0LW9mLW9yZGVyLCBpdCB3aWxsIGJlIGFuIGVycm9yLgorCisoV2hhdCBpZiB5
b3UgY2FyZSBhYm91dCB0aGUgcmVsYXRpdmUgb3JkZXIgb2Ygc29tZSBvZiB0aGUgY2FsbHMsIGJ1
dCBub3QgYWxsIG9mIHRoZW0/IENhbiB5b3Ugc3BlY2lmeSBhbiBhcmJpdHJhcnkgcGFydGlhbCBv
cmRlcj8gVGhlIGFuc3dlciBpcyAuLi4geWVzISBJZiB5b3UgYXJlIGltcGF0aWVudCwgdGhlIGRl
dGFpbHMgY2FuIGJlIGZvdW5kIGluIHRoZSBbQ29va0Jvb2tdKFYxXzVfQ29va0Jvb2subWQpLikK
KworIyMgQWxsIEV4cGVjdGF0aW9ucyBBcmUgU3RpY2t5IChVbmxlc3MgU2FpZCBPdGhlcndpc2Up
ICMjCitOb3cgbGV0J3MgZG8gYSBxdWljayBxdWl6IHRvIHNlZSBob3cgd2VsbCB5b3UgY2FuIHVz
ZSB0aGlzIG1vY2sgc3R1ZmYgYWxyZWFkeS4gSG93IHdvdWxkIHlvdSB0ZXN0IHRoYXQgdGhlIHR1
cnRsZSBpcyBhc2tlZCB0byBnbyB0byB0aGUgb3JpZ2luIF9leGFjdGx5IHR3aWNlXyAoeW91IHdh
bnQgdG8gaWdub3JlIGFueSBvdGhlciBpbnN0cnVjdGlvbnMgaXQgcmVjZWl2ZXMpPworCitBZnRl
ciB5b3UndmUgY29tZSB1cCB3aXRoIHlvdXIgYW5zd2VyLCB0YWtlIGEgbG9vayBhdCBvdXJzIGFu
ZCBjb21wYXJlIG5vdGVzIChzb2x2ZSBpdCB5b3Vyc2VsZiBmaXJzdCAtIGRvbid0IGNoZWF0ISk6
CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpfOy4uLgorRVhQRUNUX0NBTEwodHVydGxlLCBHb1Rv
KF8sIF8pKSAgLy8gIzEKKyAgICAuVGltZXMoQW55TnVtYmVyKCkpOworRVhQRUNUX0NBTEwodHVy
dGxlLCBHb1RvKDAsIDApKSAgLy8gIzIKKyAgICAuVGltZXMoMik7CitgYGAKKworU3VwcG9zZSBg
dHVydGxlLkdvVG8oMCwgMClgIGlzIGNhbGxlZCB0aHJlZSB0aW1lcy4gSW4gdGhlIHRoaXJkIHRp
bWUsIEdvb2dsZSBNb2NrIHdpbGwgc2VlIHRoYXQgdGhlIGFyZ3VtZW50cyBtYXRjaCBleHBlY3Rh
dGlvbiAjMiAocmVtZW1iZXIgdGhhdCB3ZSBhbHdheXMgcGljayB0aGUgbGFzdCBtYXRjaGluZyBl
eHBlY3RhdGlvbikuIE5vdywgc2luY2Ugd2Ugc2FpZCB0aGF0IHRoZXJlIHNob3VsZCBiZSBvbmx5
IHR3byBzdWNoIGNhbGxzLCBHb29nbGUgTW9jayB3aWxsIHJlcG9ydCBhbiBlcnJvciBpbW1lZGlh
dGVseS4gVGhpcyBpcyBiYXNpY2FsbHkgd2hhdCB3ZSd2ZSB0b2xkIHlvdSBpbiB0aGUgIlVzaW5n
IE11bHRpcGxlIEV4cGVjdGF0aW9ucyIgc2VjdGlvbiBhYm92ZS4KKworVGhpcyBleGFtcGxlIHNo
b3dzIHRoYXQgKipleHBlY3RhdGlvbnMgaW4gR29vZ2xlIE1vY2sgYXJlICJzdGlja3kiIGJ5IGRl
ZmF1bHQqKiwgaW4gdGhlIHNlbnNlIHRoYXQgdGhleSByZW1haW4gYWN0aXZlIGV2ZW4gYWZ0ZXIg
d2UgaGF2ZSByZWFjaGVkIHRoZWlyIGludm9jYXRpb24gdXBwZXIgYm91bmRzLiBUaGlzIGlzIGFu
IGltcG9ydGFudCBydWxlIHRvIHJlbWVtYmVyLCBhcyBpdCBhZmZlY3RzIHRoZSBtZWFuaW5nIG9m
IHRoZSBzcGVjLCBhbmQgaXMgKipkaWZmZXJlbnQqKiB0byBob3cgaXQncyBkb25lIGluIG1hbnkg
b3RoZXIgbW9ja2luZyBmcmFtZXdvcmtzIChXaHknZCB3ZSBkbyB0aGF0PyBCZWNhdXNlIHdlIHRo
aW5rIG91ciBydWxlIG1ha2VzIHRoZSBjb21tb24gY2FzZXMgZWFzaWVyIHRvIGV4cHJlc3MgYW5k
IHVuZGVyc3RhbmQuKS4KKworU2ltcGxlPyBMZXQncyBzZWUgaWYgeW91J3ZlIHJlYWxseSB1bmRl
cnN0b29kIGl0OiB3aGF0IGRvZXMgdGhlIGZvbGxvd2luZyBjb2RlIHNheT8KKworYGBgCit1c2lu
ZyA6OnRlc3Rpbmc6OlJldHVybjsKKy4uLgorZm9yIChpbnQgaSA9IG47IGkgPiAwOyBpLS0pIHsK
KyAgRVhQRUNUX0NBTEwodHVydGxlLCBHZXRYKCkpCisgICAgICAuV2lsbE9uY2UoUmV0dXJuKDEw
KmkpKTsKK30KK2BgYAorCitJZiB5b3UgdGhpbmsgaXQgc2F5cyB0aGF0IGB0dXJ0bGUuR2V0WCgp
YCB3aWxsIGJlIGNhbGxlZCBgbmAgdGltZXMgYW5kIHdpbGwgcmV0dXJuIDEwLCAyMCwgMzAsIC4u
LiwgY29uc2VjdXRpdmVseSwgdGhpbmsgdHdpY2UhIFRoZSBwcm9ibGVtIGlzIHRoYXQsIGFzIHdl
IHNhaWQsIGV4cGVjdGF0aW9ucyBhcmUgc3RpY2t5LiBTbywgdGhlIHNlY29uZCB0aW1lIGB0dXJ0
bGUuR2V0WCgpYCBpcyBjYWxsZWQsIHRoZSBsYXN0IChsYXRlc3QpIGBFWFBFQ1RfQ0FMTCgpYCBz
dGF0ZW1lbnQgd2lsbCBtYXRjaCwgYW5kIHdpbGwgaW1tZWRpYXRlbHkgbGVhZCB0byBhbiAidXBw
ZXIgYm91bmQgZXhjZWVkZWQiIGVycm9yIC0gdGhpcyBwaWVjZSBvZiBjb2RlIGlzIG5vdCB2ZXJ5
IHVzZWZ1bCEKKworT25lIGNvcnJlY3Qgd2F5IG9mIHNheWluZyB0aGF0IGB0dXJ0bGUuR2V0WCgp
YCB3aWxsIHJldHVybiAxMCwgMjAsIDMwLCAuLi4sIGlzIHRvIGV4cGxpY2l0bHkgc2F5IHRoYXQg
dGhlIGV4cGVjdGF0aW9ucyBhcmUgX25vdF8gc3RpY2t5LiBJbiBvdGhlciB3b3JkcywgdGhleSBz
aG91bGQgX3JldGlyZV8gYXMgc29vbiBhcyB0aGV5IGFyZSBzYXR1cmF0ZWQ6CisKK2BgYAordXNp
bmcgOjp0ZXN0aW5nOjpSZXR1cm47CisuLi4KK2ZvciAoaW50IGkgPSBuOyBpID4gMDsgaS0tKSB7
CisgIEVYUEVDVF9DQUxMKHR1cnRsZSwgR2V0WCgpKQorICAgIC5XaWxsT25jZShSZXR1cm4oMTAq
aSkpCisgICAgLlJldGlyZXNPblNhdHVyYXRpb24oKTsKK30KK2BgYAorCitBbmQsIHRoZXJlJ3Mg
YSBiZXR0ZXIgd2F5IHRvIGRvIGl0OiBpbiB0aGlzIGNhc2UsIHdlIGV4cGVjdCB0aGUgY2FsbHMg
dG8gb2NjdXIgaW4gYSBzcGVjaWZpYyBvcmRlciwgYW5kIHdlIGxpbmUgdXAgdGhlIGFjdGlvbnMg
dG8gbWF0Y2ggdGhlIG9yZGVyLiBTaW5jZSB0aGUgb3JkZXIgaXMgaW1wb3J0YW50IGhlcmUsIHdl
IHNob3VsZCBtYWtlIGl0IGV4cGxpY2l0IHVzaW5nIGEgc2VxdWVuY2U6CisKK2BgYAordXNpbmcg
Ojp0ZXN0aW5nOjpJblNlcXVlbmNlOwordXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm47CisuLi4KK3sK
KyAgSW5TZXF1ZW5jZSBzOworCisgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgeworICAg
IEVYUEVDVF9DQUxMKHR1cnRsZSwgR2V0WCgpKQorICAgICAgICAuV2lsbE9uY2UoUmV0dXJuKDEw
KmkpKQorICAgICAgICAuUmV0aXJlc09uU2F0dXJhdGlvbigpOworICB9Cit9CitgYGAKKworQnkg
dGhlIHdheSwgdGhlIG90aGVyIHNpdHVhdGlvbiB3aGVyZSBhbiBleHBlY3RhdGlvbiBtYXkgX25v
dF8gYmUgc3RpY2t5IGlzIHdoZW4gaXQncyBpbiBhIHNlcXVlbmNlIC0gYXMgc29vbiBhcyBhbm90
aGVyIGV4cGVjdGF0aW9uIHRoYXQgY29tZXMgYWZ0ZXIgaXQgaW4gdGhlIHNlcXVlbmNlIGhhcyBi
ZWVuIHVzZWQsIGl0IGF1dG9tYXRpY2FsbHkgcmV0aXJlcyAoYW5kIHdpbGwgbmV2ZXIgYmUgdXNl
ZCB0byBtYXRjaCBhbnkgY2FsbCkuCisKKyMjIFVuaW50ZXJlc3RpbmcgQ2FsbHMgIyMKK0EgbW9j
ayBvYmplY3QgbWF5IGhhdmUgbWFueSBtZXRob2RzLCBhbmQgbm90IGFsbCBvZiB0aGVtIGFyZSB0
aGF0IGludGVyZXN0aW5nLiBGb3IgZXhhbXBsZSwgaW4gc29tZSB0ZXN0cyB3ZSBtYXkgbm90IGNh
cmUgYWJvdXQgaG93IG1hbnkgdGltZXMgYEdldFgoKWAgYW5kIGBHZXRZKClgIGdldCBjYWxsZWQu
CisKK0luIEdvb2dsZSBNb2NrLCBpZiB5b3UgYXJlIG5vdCBpbnRlcmVzdGVkIGluIGEgbWV0aG9k
LCBqdXN0IGRvbid0IHNheSBhbnl0aGluZyBhYm91dCBpdC4gSWYgYSBjYWxsIHRvIHRoaXMgbWV0
aG9kIG9jY3VycywgeW91J2xsIHNlZSBhIHdhcm5pbmcgaW4gdGhlIHRlc3Qgb3V0cHV0LCBidXQg
aXQgd29uJ3QgYmUgYSBmYWlsdXJlLgorCisjIFdoYXQgTm93PyAjCitDb25ncmF0dWxhdGlvbnMh
IFlvdSd2ZSBsZWFybmVkIGVub3VnaCBhYm91dCBHb29nbGUgTW9jayB0byBzdGFydCB1c2luZyBp
dC4gTm93LCB5b3UgbWlnaHQgd2FudCB0byBqb2luIHRoZSBbZ29vZ2xlbW9ja10oaHR0cDovL2dy
b3Vwcy5nb29nbGUuY29tL2dyb3VwL2dvb2dsZW1vY2spIGRpc2N1c3Npb24gZ3JvdXAgYW5kIGFj
dHVhbGx5IHdyaXRlIHNvbWUgdGVzdHMgdXNpbmcgR29vZ2xlIE1vY2sgLSBpdCB3aWxsIGJlIGZ1
bi4gSGV5LCBpdCBtYXkgZXZlbiBiZSBhZGRpY3RpdmUgLSB5b3UndmUgYmVlbiB3YXJuZWQuCisK
K1RoZW4sIGlmIHlvdSBmZWVsIGxpa2UgaW5jcmVhc2luZyB5b3VyIG1vY2sgcXVvdGllbnQsIHlv
dSBzaG91bGQgbW92ZSBvbiB0byB0aGUgW0Nvb2tCb29rXShWMV81X0Nvb2tCb29rLm1kKS4gWW91
IGNhbiBsZWFybiBtYW55IGFkdmFuY2VkIGZlYXR1cmVzIG9mIEdvb2dsZSBNb2NrIHRoZXJlIC0t
IGFuZCBhZHZhbmNlIHlvdXIgbGV2ZWwgb2YgZW5qb3ltZW50IGFuZCB0ZXN0aW5nIGJsaXNzLgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3Mv
djFfNS9GcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL3YxXzUv
RnJlcXVlbnRseUFza2VkUXVlc3Rpb25zLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1OTMyNDNjM2FmODU5Y2Ey
MWQ5ZDg0M2U2YzRlMTkxYjBlNGVmZmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9k
b2NzL3YxXzUvRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zLm1kCkBAIC0wLDAgKzEsNjI0IEBACisK
KworUGxlYXNlIHNlbmQgeW91ciBxdWVzdGlvbnMgdG8gdGhlCitbZ29vZ2xlbW9ja10oaHR0cDov
L2dyb3Vwcy5nb29nbGUuY29tL2dyb3VwL2dvb2dsZW1vY2spIGRpc2N1c3Npb24KK2dyb3VwLiBJ
ZiB5b3UgbmVlZCBoZWxwIHdpdGggY29tcGlsZXIgZXJyb3JzLCBtYWtlIHN1cmUgeW91IGhhdmUK
K3RyaWVkIFtHb29nbGUgTW9jayBEb2N0b3JdKCNIb3dfYW1fSV9zdXBwb3NlZF90b19tYWtlX3Nl
bnNlX29mX3RoZXNlX2hvcnJpYmxlX3RlbXBsYXRlX2Vycm9yLm1kKSBmaXJzdC4KKworIyMgSSB3
cm90ZSBzb21lIG1hdGNoZXJzLiAgQWZ0ZXIgSSB1cGdyYWRlZCB0byBhIG5ldyB2ZXJzaW9uIG9m
IEdvb2dsZSBNb2NrLCB0aGV5IG5vIGxvbmdlciBjb21waWxlLiAgV2hhdCdzIGdvaW5nIG9uPyAj
IworCitBZnRlciB2ZXJzaW9uIDEuNC4wIG9mIEdvb2dsZSBNb2NrIHdhcyByZWxlYXNlZCwgd2Ug
aGFkIGFuIGlkZWEgb24gaG93Cit0byBtYWtlIGl0IGVhc2llciB0byB3cml0ZSBtYXRjaGVycyB0
aGF0IGNhbiBnZW5lcmF0ZSBpbmZvcm1hdGl2ZQorbWVzc2FnZXMgZWZmaWNpZW50bHkuICBXZSBl
eHBlcmltZW50ZWQgd2l0aCB0aGlzIGlkZWEgYW5kIGxpa2VkIHdoYXQKK3dlIHNhdy4gIFRoZXJl
Zm9yZSB3ZSBkZWNpZGVkIHRvIGltcGxlbWVudCBpdC4KKworVW5mb3J0dW5hdGVseSwgdGhpcyBt
ZWFucyB0aGF0IGlmIHlvdSBoYXZlIGRlZmluZWQgeW91ciBvd24gbWF0Y2hlcnMKK2J5IGltcGxl
bWVudGluZyBgTWF0Y2hlckludGVyZmFjZWAgb3IgdXNpbmcgYE1ha2VQb2x5bW9ycGhpY01hdGNo
ZXIoKWAsCit5b3VyIGRlZmluaXRpb25zIHdpbGwgbm8gbG9uZ2VyIGNvbXBpbGUuICBNYXRjaGVy
cyBkZWZpbmVkIHVzaW5nIHRoZQorYE1BVENIRVIqYCBmYW1pbHkgb2YgbWFjcm9zIGFyZSBub3Qg
YWZmZWN0ZWQuCisKK1NvcnJ5IGZvciB0aGUgaGFzc2xlIGlmIHlvdXIgbWF0Y2hlcnMgYXJlIGFm
ZmVjdGVkLiAgV2UgYmVsaWV2ZSBpdCdzCitpbiBldmVyeW9uZSdzIGxvbmctdGVybSBpbnRlcmVz
dCB0byBtYWtlIHRoaXMgY2hhbmdlIHNvb25lciB0aGFuCitsYXRlci4gIEZvcnR1bmF0ZWx5LCBp
dCdzIHVzdWFsbHkgbm90IGhhcmQgdG8gbWlncmF0ZSBhbiBleGlzdGluZworbWF0Y2hlciB0byB0
aGUgbmV3IEFQSS4gIEhlcmUncyB3aGF0IHlvdSBuZWVkIHRvIGRvOgorCitJZiB5b3Ugd3JvdGUg
eW91ciBtYXRjaGVyIGxpa2UgdGhpczoKK2BgYAorLy8gT2xkIG1hdGNoZXIgZGVmaW5pdGlvbiB0
aGF0IGRvZXNuJ3Qgd29yayB3aXRoIHRoZSBsYXRlc3QKKy8vIEdvb2dsZSBNb2NrLgordXNpbmcg
Ojp0ZXN0aW5nOjpNYXRjaGVySW50ZXJmYWNlOworLi4uCitjbGFzcyBNeVdvbmRlcmZ1bE1hdGNo
ZXIgOiBwdWJsaWMgTWF0Y2hlckludGVyZmFjZTxNeVR5cGU+IHsKKyBwdWJsaWM6CisgIC4uLgor
ICB2aXJ0dWFsIGJvb2wgTWF0Y2hlcyhNeVR5cGUgdmFsdWUpIGNvbnN0IHsKKyAgICAvLyBSZXR1
cm5zIHRydWUgaWYgdmFsdWUgbWF0Y2hlcy4KKyAgICByZXR1cm4gdmFsdWUuR2V0Rm9vKCkgPiA1
OworICB9CisgIC4uLgorfTsKK2BgYAorCit5b3UnbGwgbmVlZCB0byBjaGFuZ2UgaXQgdG86Citg
YGAKKy8vIE5ldyBtYXRjaGVyIGRlZmluaXRpb24gdGhhdCB3b3JrcyB3aXRoIHRoZSBsYXRlc3Qg
R29vZ2xlIE1vY2suCit1c2luZyA6OnRlc3Rpbmc6Ok1hdGNoZXJJbnRlcmZhY2U7Cit1c2luZyA6
OnRlc3Rpbmc6Ok1hdGNoUmVzdWx0TGlzdGVuZXI7CisuLi4KK2NsYXNzIE15V29uZGVyZnVsTWF0
Y2hlciA6IHB1YmxpYyBNYXRjaGVySW50ZXJmYWNlPE15VHlwZT4geworIHB1YmxpYzoKKyAgLi4u
CisgIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxhaW4oTXlUeXBlIHZhbHVlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBjb25z
dCB7CisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHZhbHVlIG1hdGNoZXMuCisgICAgcmV0dXJuIHZh
bHVlLkdldEZvbygpID4gNTsKKyAgfQorICAuLi4KK307CitgYGAKKyhpLmUuIHJlbmFtZSBgTWF0
Y2hlcygpYCB0byBgTWF0Y2hBbmRFeHBsYWluKClgIGFuZCBnaXZlIGl0IGEgc2Vjb25kCithcmd1
bWVudCBvZiB0eXBlIGBNYXRjaFJlc3VsdExpc3RlbmVyKmAuKQorCitJZiB5b3Ugd2VyZSBhbHNv
IHVzaW5nIGBFeHBsYWluTWF0Y2hSZXN1bHRUbygpYCB0byBpbXByb3ZlIHRoZSBtYXRjaGVyCitt
ZXNzYWdlOgorYGBgCisvLyBPbGQgbWF0Y2hlciBkZWZpbml0aW9uIHRoYXQgZG9lc24ndCB3b3Jr
IHdpdGggdGhlIGxhc3Rlc3QKKy8vIEdvb2dsZSBNb2NrLgordXNpbmcgOjp0ZXN0aW5nOjpNYXRj
aGVySW50ZXJmYWNlOworLi4uCitjbGFzcyBNeVdvbmRlcmZ1bE1hdGNoZXIgOiBwdWJsaWMgTWF0
Y2hlckludGVyZmFjZTxNeVR5cGU+IHsKKyBwdWJsaWM6CisgIC4uLgorICB2aXJ0dWFsIGJvb2wg
TWF0Y2hlcyhNeVR5cGUgdmFsdWUpIGNvbnN0IHsKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdmFs
dWUgbWF0Y2hlcy4KKyAgICByZXR1cm4gdmFsdWUuR2V0Rm9vKCkgPiA1OworICB9CisKKyAgdmly
dHVhbCB2b2lkIEV4cGxhaW5NYXRjaFJlc3VsdFRvKE15VHlwZSB2YWx1ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgeworICAg
IC8vIFByaW50cyBzb21lIGhlbHBmdWwgaW5mb3JtYXRpb24gdG8gb3MgdG8gaGVscAorICAgIC8v
IGEgdXNlciB1bmRlcnN0YW5kIHdoeSB2YWx1ZSBtYXRjaGVzIChvciBkb2Vzbid0IG1hdGNoKS4K
KyAgICAqb3MgPDwgInRoZSBGb28gcHJvcGVydHkgaXMgIiA8PCB2YWx1ZS5HZXRGb28oKTsKKyAg
fQorICAuLi4KK307CitgYGAKKworeW91IHNob3VsZCBtb3ZlIHRoZSBsb2dpYyBvZiBgRXhwbGFp
bk1hdGNoUmVzdWx0VG8oKWAgaW50bworYE1hdGNoQW5kRXhwbGFpbigpYCwgdXNpbmcgdGhlIGBN
YXRjaFJlc3VsdExpc3RlbmVyYCBhcmd1bWVudCB3aGVyZQordGhlIGA6OnN0ZDo6b3N0cmVhbWAg
d2FzIHVzZWQ6CitgYGAKKy8vIE5ldyBtYXRjaGVyIGRlZmluaXRpb24gdGhhdCB3b3JrcyB3aXRo
IHRoZSBsYXRlc3QgR29vZ2xlIE1vY2suCit1c2luZyA6OnRlc3Rpbmc6Ok1hdGNoZXJJbnRlcmZh
Y2U7Cit1c2luZyA6OnRlc3Rpbmc6Ok1hdGNoUmVzdWx0TGlzdGVuZXI7CisuLi4KK2NsYXNzIE15
V29uZGVyZnVsTWF0Y2hlciA6IHB1YmxpYyBNYXRjaGVySW50ZXJmYWNlPE15VHlwZT4geworIHB1
YmxpYzoKKyAgLi4uCisgIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxhaW4oTXlUeXBlIHZhbHVl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxp
c3RlbmVyKSBjb25zdCB7CisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHZhbHVlIG1hdGNoZXMuCisg
ICAgKmxpc3RlbmVyIDw8ICJ0aGUgRm9vIHByb3BlcnR5IGlzICIgPDwgdmFsdWUuR2V0Rm9vKCk7
CisgICAgcmV0dXJuIHZhbHVlLkdldEZvbygpID4gNTsKKyAgfQorICAuLi4KK307CitgYGAKKwor
SWYgeW91ciBtYXRjaGVyIGlzIGRlZmluZWQgdXNpbmcgYE1ha2VQb2x5bW9ycGhpY01hdGNoZXIo
KWA6CitgYGAKKy8vIE9sZCBtYXRjaGVyIGRlZmluaXRpb24gdGhhdCBkb2Vzbid0IHdvcmsgd2l0
aCB0aGUgbGF0ZXN0CisvLyBHb29nbGUgTW9jay4KK3VzaW5nIDo6dGVzdGluZzo6TWFrZVBvbHlt
b3JwaGljTWF0Y2hlcjsKKy4uLgorY2xhc3MgTXlHcmVhdE1hdGNoZXIgeworIHB1YmxpYzoKKyAg
Li4uCisgIGJvb2wgTWF0Y2hlcyhNeVR5cGUgdmFsdWUpIGNvbnN0IHsKKyAgICAvLyBSZXR1cm5z
IHRydWUgaWYgdmFsdWUgbWF0Y2hlcy4KKyAgICByZXR1cm4gdmFsdWUuR2V0QmFyKCkgPCA0MjsK
KyAgfQorICAuLi4KK307CisuLi4gTWFrZVBvbHltb3JwaGljTWF0Y2hlcihNeUdyZWF0TWF0Y2hl
cigpKSAuLi4KK2BgYAorCit5b3Ugc2hvdWxkIHJlbmFtZSB0aGUgYE1hdGNoZXMoKWAgbWV0aG9k
IHRvIGBNYXRjaEFuZEV4cGxhaW4oKWAgYW5kCithZGQgYSBgTWF0Y2hSZXN1bHRMaXN0ZW5lcipg
IGFyZ3VtZW50ICh0aGUgc2FtZSBhcyB3aGF0IHlvdSBuZWVkIHRvIGRvCitmb3IgbWF0Y2hlcnMg
ZGVmaW5lZCBieSBpbXBsZW1lbnRpbmcgYE1hdGNoZXJJbnRlcmZhY2VgKToKK2BgYAorLy8gTmV3
IG1hdGNoZXIgZGVmaW5pdGlvbiB0aGF0IHdvcmtzIHdpdGggdGhlIGxhdGVzdCBHb29nbGUgTW9j
ay4KK3VzaW5nIDo6dGVzdGluZzo6TWFrZVBvbHltb3JwaGljTWF0Y2hlcjsKK3VzaW5nIDo6dGVz
dGluZzo6TWF0Y2hSZXN1bHRMaXN0ZW5lcjsKKy4uLgorY2xhc3MgTXlHcmVhdE1hdGNoZXIgewor
IHB1YmxpYzoKKyAgLi4uCisgIGJvb2wgTWF0Y2hBbmRFeHBsYWluKE15VHlwZSB2YWx1ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNvbnN0
IHsKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdmFsdWUgbWF0Y2hlcy4KKyAgICByZXR1cm4gdmFs
dWUuR2V0QmFyKCkgPCA0MjsKKyAgfQorICAuLi4KK307CisuLi4gTWFrZVBvbHltb3JwaGljTWF0
Y2hlcihNeUdyZWF0TWF0Y2hlcigpKSAuLi4KK2BgYAorCitJZiB5b3VyIHBvbHltb3JwaGljIG1h
dGNoZXIgdXNlcyBgRXhwbGFpbk1hdGNoUmVzdWx0VG8oKWAgZm9yIGJldHRlcgorZmFpbHVyZSBt
ZXNzYWdlczoKK2BgYAorLy8gT2xkIG1hdGNoZXIgZGVmaW5pdGlvbiB0aGF0IGRvZXNuJ3Qgd29y
ayB3aXRoIHRoZSBsYXRlc3QKKy8vIEdvb2dsZSBNb2NrLgordXNpbmcgOjp0ZXN0aW5nOjpNYWtl
UG9seW1vcnBoaWNNYXRjaGVyOworLi4uCitjbGFzcyBNeUdyZWF0TWF0Y2hlciB7CisgcHVibGlj
OgorICAuLi4KKyAgYm9vbCBNYXRjaGVzKE15VHlwZSB2YWx1ZSkgY29uc3QgeworICAgIC8vIFJl
dHVybnMgdHJ1ZSBpZiB2YWx1ZSBtYXRjaGVzLgorICAgIHJldHVybiB2YWx1ZS5HZXRCYXIoKSA8
IDQyOworICB9CisgIC4uLgorfTsKK3ZvaWQgRXhwbGFpbk1hdGNoUmVzdWx0VG8oY29uc3QgTXlH
cmVhdE1hdGNoZXImIG1hdGNoZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIE15VHlwZSB2
YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7Cisg
IC8vIFByaW50cyBzb21lIGhlbHBmdWwgaW5mb3JtYXRpb24gdG8gb3MgdG8gaGVscAorICAvLyBh
IHVzZXIgdW5kZXJzdGFuZCB3aHkgdmFsdWUgbWF0Y2hlcyAob3IgZG9lc24ndCBtYXRjaCkuCisg
ICpvcyA8PCAidGhlIEJhciBwcm9wZXJ0eSBpcyAiIDw8IHZhbHVlLkdldEJhcigpOworfQorLi4u
IE1ha2VQb2x5bW9ycGhpY01hdGNoZXIoTXlHcmVhdE1hdGNoZXIoKSkgLi4uCitgYGAKKworeW91
J2xsIG5lZWQgdG8gbW92ZSB0aGUgbG9naWMgaW5zaWRlIGBFeHBsYWluTWF0Y2hSZXN1bHRUbygp
YCB0bworYE1hdGNoQW5kRXhwbGFpbigpYDoKK2BgYAorLy8gTmV3IG1hdGNoZXIgZGVmaW5pdGlv
biB0aGF0IHdvcmtzIHdpdGggdGhlIGxhdGVzdCBHb29nbGUgTW9jay4KK3VzaW5nIDo6dGVzdGlu
Zzo6TWFrZVBvbHltb3JwaGljTWF0Y2hlcjsKK3VzaW5nIDo6dGVzdGluZzo6TWF0Y2hSZXN1bHRM
aXN0ZW5lcjsKKy4uLgorY2xhc3MgTXlHcmVhdE1hdGNoZXIgeworIHB1YmxpYzoKKyAgLi4uCisg
IGJvb2wgTWF0Y2hBbmRFeHBsYWluKE15VHlwZSB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNvbnN0IHsKKyAgICAvLyBSZXR1cm5z
IHRydWUgaWYgdmFsdWUgbWF0Y2hlcy4KKyAgICAqbGlzdGVuZXIgPDwgInRoZSBCYXIgcHJvcGVy
dHkgaXMgIiA8PCB2YWx1ZS5HZXRCYXIoKTsKKyAgICByZXR1cm4gdmFsdWUuR2V0QmFyKCkgPCA0
MjsKKyAgfQorICAuLi4KK307CisuLi4gTWFrZVBvbHltb3JwaGljTWF0Y2hlcihNeUdyZWF0TWF0
Y2hlcigpKSAuLi4KK2BgYAorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgeW91IGNhbiByZWFkIHRo
ZXNlCitbdHdvXShWMV81X0Nvb2tCb29rI1dyaXRpbmdfTmV3X01vbm9tb3JwaGljX01hdGNoZXJz
Lm1kKQorW3JlY2lwZXNdKFYxXzVfQ29va0Jvb2sjV3JpdGluZ19OZXdfUG9seW1vcnBoaWNfTWF0
Y2hlcnMubWQpCitmcm9tIHRoZSBjb29rYm9vay4gIEFzIGFsd2F5cywgeW91CithcmUgd2VsY29t
ZSB0byBwb3N0IHF1ZXN0aW9ucyBvbiBgZ29vZ2xlbW9ja0Bnb29nbGVncm91cHMuY29tYCBpZiB5
b3UKK25lZWQgYW55IGhlbHAuCisKKyMjIFdoZW4gdXNpbmcgR29vZ2xlIE1vY2ssIGRvIEkgaGF2
ZSB0byB1c2UgR29vZ2xlIFRlc3QgYXMgdGhlIHRlc3RpbmcgZnJhbWV3b3JrPyAgSSBoYXZlIG15
IGZhdm9yaXRlIHRlc3RpbmcgZnJhbWV3b3JrIGFuZCBkb24ndCB3YW50IHRvIHN3aXRjaC4gIyMK
KworR29vZ2xlIE1vY2sgd29ya3Mgb3V0IG9mIHRoZSBib3ggd2l0aCBHb29nbGUgVGVzdC4gIEhv
d2V2ZXIsIGl0J3MgZWFzeQordG8gY29uZmlndXJlIGl0IHRvIHdvcmsgd2l0aCBhbnkgdGVzdGlu
ZyBmcmFtZXdvcmsgb2YgeW91ciBjaG9pY2UuCitbSGVyZV0oVjFfNV9Gb3JEdW1taWVzI1VzaW5n
X0dvb2dsZV9Nb2NrX3dpdGhfQW55X1Rlc3RpbmdfRnJhbWV3b3JrLm1kKSBpcyBob3cuCisKKyMj
IEhvdyBhbSBJIHN1cHBvc2VkIHRvIG1ha2Ugc2Vuc2Ugb2YgdGhlc2UgaG9ycmlibGUgdGVtcGxh
dGUgZXJyb3JzPyAjIworCitJZiB5b3UgYXJlIGNvbmZ1c2VkIGJ5IHRoZSBjb21waWxlciBlcnJv
cnMgZ2NjIHRocmV3IGF0IHlvdSwKK3RyeSBjb25zdWx0aW5nIHRoZSBfR29vZ2xlIE1vY2sgRG9j
dG9yXyB0b29sIGZpcnN0LiAgV2hhdCBpdCBkb2VzIGlzIHRvCitzY2FuIHN0ZGluIGZvciBnY2Mg
ZXJyb3IgbWVzc2FnZXMsIGFuZCBzcGl0IG91dCBkaWFnbm9zZXMgb24gdGhlCitwcm9ibGVtcyAo
d2UgY2FsbCB0aGVtIGRpc2Vhc2VzKSB5b3VyIGNvZGUgaGFzLgorCitUbyAiaW5zdGFsbCIsIHJ1
biBjb21tYW5kOgorYGBgCithbGlhcyBnbWQ9JzxwYXRoIHRvIGdvb2dsZW1vY2s+L3NjcmlwdHMv
Z21vY2tfZG9jdG9yLnB5JworYGBgCisKK1RvIHVzZSBpdCwgZG86CitgYGAKKzx5b3VyLWZhdm9y
aXRlLWJ1aWxkLWNvbW1hbmQ+IDx5b3VyLXRlc3Q+IDI+JjEgfCBnbWQKK2BgYAorCitGb3IgZXhh
bXBsZToKK2BgYAorbWFrZSBteV90ZXN0IDI+JjEgfCBnbWQKK2BgYAorCitPciB5b3UgY2FuIHJ1
biBgZ21kYCBhbmQgY29weS1uLXBhc3RlIGdjYydzIGVycm9yIG1lc3NhZ2VzIHRvIGl0LgorCisj
IyBDYW4gSSBtb2NrIGEgdmFyaWFkaWMgZnVuY3Rpb24/ICMjCisKK1lvdSBjYW5ub3QgbW9jayBh
IHZhcmlhZGljIGZ1bmN0aW9uIChpLmUuIGEgZnVuY3Rpb24gdGFraW5nIGVsbGlwc2lzCisoYC4u
LmApIGFyZ3VtZW50cykgZGlyZWN0bHkgaW4gR29vZ2xlIE1vY2suCisKK1RoZSBwcm9ibGVtIGlz
IHRoYXQgaW4gZ2VuZXJhbCwgdGhlcmUgaXMgX25vIHdheV8gZm9yIGEgbW9jayBvYmplY3QgdG8K
K2tub3cgaG93IG1hbnkgYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gdGhlIHZhcmlhZGljIG1ldGhv
ZCwgYW5kIHdoYXQKK3RoZSBhcmd1bWVudHMnIHR5cGVzIGFyZS4gIE9ubHkgdGhlIF9hdXRob3Ig
b2YgdGhlIGJhc2UgY2xhc3NfIGtub3dzCit0aGUgcHJvdG9jb2wsIGFuZCB3ZSBjYW5ub3QgbG9v
ayBpbnRvIGhpcyBoZWFkLgorCitUaGVyZWZvcmUsIHRvIG1vY2sgc3VjaCBhIGZ1bmN0aW9uLCB0
aGUgX3VzZXJfIG11c3QgdGVhY2ggdGhlIG1vY2sKK29iamVjdCBob3cgdG8gZmlndXJlIG91dCB0
aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBhbmQgdGhlaXIgdHlwZXMuICBPbmUKK3dheSB0byBkbyBp
dCBpcyB0byBwcm92aWRlIG92ZXJsb2FkZWQgdmVyc2lvbnMgb2YgdGhlIGZ1bmN0aW9uLgorCitF
bGxpcHNpcyBhcmd1bWVudHMgYXJlIGluaGVyaXRlZCBmcm9tIEMgYW5kIG5vdCByZWFsbHkgYSBD
KysgZmVhdHVyZS4KK1RoZXkgYXJlIHVuc2FmZSB0byB1c2UgYW5kIGRvbid0IHdvcmsgd2l0aCBh
cmd1bWVudHMgdGhhdCBoYXZlCitjb25zdHJ1Y3RvcnMgb3IgZGVzdHJ1Y3RvcnMuICBUaGVyZWZv
cmUgd2UgcmVjb21tZW5kIHRvIGF2b2lkIHRoZW0gaW4KK0MrKyBhcyBtdWNoIGFzIHBvc3NpYmxl
LgorCisjIyBNU1ZDIGdpdmVzIG1lIHdhcm5pbmcgQzQzMDEgb3IgQzQzNzMgd2hlbiBJIGRlZmlu
ZSBhIG1vY2sgbWV0aG9kIHdpdGggYSBjb25zdCBwYXJhbWV0ZXIuICBXaHk/ICMjCisKK0lmIHlv
dSBjb21waWxlIHRoaXMgdXNpbmcgTWljcm9zb2Z0IFZpc3VhbCBDKysgMjAwNSBTUDE6CitgYGAK
K2NsYXNzIEZvbyB7CisgIC4uLgorICB2aXJ0dWFsIHZvaWQgQmFyKGNvbnN0IGludCBpKSA9IDA7
Cit9OworCitjbGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7CisgIC4uLgorICBNT0NLX01FVEhP
RDEoQmFyLCB2b2lkKGNvbnN0IGludCBpKSk7Cit9OworYGBgCitZb3UgbWF5IGdldCB0aGUgZm9s
bG93aW5nIHdhcm5pbmc6CitgYGAKK3dhcm5pbmcgQzQzMDE6ICdNb2NrRm9vOjpCYXInOiBvdmVy
cmlkaW5nIHZpcnR1YWwgZnVuY3Rpb24gb25seSBkaWZmZXJzIGZyb20gJ0Zvbzo6QmFyJyBieSBj
b25zdC92b2xhdGlsZSBxdWFsaWZpZXIKK2BgYAorCitUaGlzIGlzIGEgTVNWQyBidWcuICBUaGUg
c2FtZSBjb2RlIGNvbXBpbGVzIGZpbmUgd2l0aCBnY2MgLGZvcgorZXhhbXBsZS4gIElmIHlvdSB1
c2UgVmlzdWFsIEMrKyAyMDA4IFNQMSwgeW91IHdvdWxkIGdldCB0aGUgd2FybmluZzoKK2BgYAor
d2FybmluZyBDNDM3MzogJ01vY2tGb286OkJhcic6IHZpcnR1YWwgZnVuY3Rpb24gb3ZlcnJpZGVz
ICdGb286OkJhcicsIHByZXZpb3VzIHZlcnNpb25zIG9mIHRoZSBjb21waWxlciBkaWQgbm90IG92
ZXJyaWRlIHdoZW4gcGFyYW1ldGVycyBvbmx5IGRpZmZlcmVkIGJ5IGNvbnN0L3ZvbGF0aWxlIHF1
YWxpZmllcnMKK2BgYAorCitJbiBDKyssIGlmIHlvdSBfZGVjbGFyZV8gYSBmdW5jdGlvbiB3aXRo
IGEgYGNvbnN0YCBwYXJhbWV0ZXIsIHRoZQorYGNvbnN0YCBtb2RpZmllciBpcyBfaWdub3JlZF8u
ICBUaGVyZWZvcmUsIHRoZSBgRm9vYCBiYXNlIGNsYXNzIGFib3ZlCitpcyBlcXVpdmFsZW50IHRv
OgorYGBgCitjbGFzcyBGb28geworICAuLi4KKyAgdmlydHVhbCB2b2lkIEJhcihpbnQgaSkgPSAw
OyAgLy8gaW50IG9yIGNvbnN0IGludD8gIE1ha2VzIG5vIGRpZmZlcmVuY2UuCit9OworYGBgCisK
K0luIGZhY3QsIHlvdSBjYW4gX2RlY2xhcmVfIEJhcigpIHdpdGggYW4gYGludGAgcGFyYW1ldGVy
LCBhbmQgX2RlZmluZV8KK2l0IHdpdGggYSBgY29uc3QgaW50YCBwYXJhbWV0ZXIuICBUaGUgY29t
cGlsZXIgd2lsbCBzdGlsbCBtYXRjaCB0aGVtCit1cC4KKworU2luY2UgbWFraW5nIGEgcGFyYW1l
dGVyIGBjb25zdGAgaXMgbWVhbmluZ2xlc3MgaW4gdGhlIG1ldGhvZAorX2RlY2xhcmF0aW9uXywg
d2UgcmVjb21tZW5kIHRvIHJlbW92ZSBpdCBpbiBib3RoIGBGb29gIGFuZCBgTW9ja0Zvb2AuCitU
aGF0IHNob3VsZCB3b3JrYXJvdW5kIHRoZSBWQyBidWcuCisKK05vdGUgdGhhdCB3ZSBhcmUgdGFs
a2luZyBhYm91dCB0aGUgX3RvcC1sZXZlbF8gYGNvbnN0YCBtb2RpZmllciBoZXJlLgorSWYgdGhl
IGZ1bmN0aW9uIHBhcmFtZXRlciBpcyBwYXNzZWQgYnkgcG9pbnRlciBvciByZWZlcmVuY2UsIGRl
Y2xhcmluZwordGhlIF9wb2ludGVlXyBvciBfcmVmZXJlZV8gYXMgYGNvbnN0YCBpcyBzdGlsbCBt
ZWFuaW5nZnVsLiAgRm9yCitleGFtcGxlLCB0aGUgZm9sbG93aW5nIHR3byBkZWNsYXJhdGlvbnMg
YXJlIF9ub3RfIGVxdWl2YWxlbnQ6CitgYGAKK3ZvaWQgQmFyKGludCogcCk7ICAgICAgICAvLyBO
ZWl0aGVyIHAgbm9yICpwIGlzIGNvbnN0Lgordm9pZCBCYXIoY29uc3QgaW50KiBwKTsgIC8vIHAg
aXMgbm90IGNvbnN0LCBidXQgKnAgaXMuCitgYGAKKworIyMgSSBoYXZlIGEgaHVnZSBtb2NrIGNs
YXNzLCBhbmQgTWljcm9zb2Z0IFZpc3VhbCBDKysgcnVucyBvdXQgb2YgbWVtb3J5IHdoZW4gY29t
cGlsaW5nIGl0LiAgV2hhdCBjYW4gSSBkbz8gIyMKKworV2UndmUgbm90aWNlZCB0aGF0IHdoZW4g
dGhlIGAvY2xyYCBjb21waWxlciBmbGFnIGlzIHVzZWQsIFZpc3VhbCBDKysKK3VzZXMgNX42IHRp
bWVzIGFzIG11Y2ggbWVtb3J5IHdoZW4gY29tcGlsaW5nIGEgbW9jayBjbGFzcy4gIFdlIHN1Z2dl
c3QKK3RvIGF2b2lkIGAvY2xyYCB3aGVuIGNvbXBpbGluZyBuYXRpdmUgQysrIG1vY2tzLgorCisj
IyBJIGNhbid0IGZpZ3VyZSBvdXQgd2h5IEdvb2dsZSBNb2NrIHRoaW5rcyBteSBleHBlY3RhdGlv
bnMgYXJlIG5vdCBzYXRpc2ZpZWQuICBXaGF0IHNob3VsZCBJIGRvPyAjIworCitZb3UgbWlnaHQg
d2FudCB0byBydW4geW91ciB0ZXN0IHdpdGgKK2AtLWdtb2NrX3ZlcmJvc2U9aW5mb2AuICBUaGlz
IGZsYWcgbGV0cyBHb29nbGUgTW9jayBwcmludCBhIHRyYWNlCitvZiBldmVyeSBtb2NrIGZ1bmN0
aW9uIGNhbGwgaXQgcmVjZWl2ZXMuICBCeSBzdHVkeWluZyB0aGUgdHJhY2UsCit5b3UnbGwgZ2Fp
biBpbnNpZ2h0cyBvbiB3aHkgdGhlIGV4cGVjdGF0aW9ucyB5b3Ugc2V0IGFyZSBub3QgbWV0Lgor
CisjIyBIb3cgY2FuIEkgYXNzZXJ0IHRoYXQgYSBmdW5jdGlvbiBpcyBORVZFUiBjYWxsZWQ/ICMj
CisKK2BgYAorRVhQRUNUX0NBTEwoZm9vLCBCYXIoXykpCisgICAgLlRpbWVzKDApOworYGBgCisK
KyMjIEkgaGF2ZSBhIGZhaWxlZCB0ZXN0IHdoZXJlIEdvb2dsZSBNb2NrIHRlbGxzIG1lIFRXSUNF
IHRoYXQgYSBwYXJ0aWN1bGFyIGV4cGVjdGF0aW9uIGlzIG5vdCBzYXRpc2ZpZWQuICBJc24ndCB0
aGlzIHJlZHVuZGFudD8gIyMKKworV2hlbiBHb29nbGUgTW9jayBkZXRlY3RzIGEgZmFpbHVyZSwg
aXQgcHJpbnRzIHJlbGV2YW50IGluZm9ybWF0aW9uCisodGhlIG1vY2sgZnVuY3Rpb24gYXJndW1l
bnRzLCB0aGUgc3RhdGUgb2YgcmVsZXZhbnQgZXhwZWN0YXRpb25zLCBhbmQKK2V0YykgdG8gaGVs
cCB0aGUgdXNlciBkZWJ1Zy4gIElmIGFub3RoZXIgZmFpbHVyZSBpcyBkZXRlY3RlZCwgR29vZ2xl
CitNb2NrIHdpbGwgZG8gdGhlIHNhbWUsIGluY2x1ZGluZyBwcmludGluZyB0aGUgc3RhdGUgb2Yg
cmVsZXZhbnQKK2V4cGVjdGF0aW9ucy4KKworU29tZXRpbWVzIGFuIGV4cGVjdGF0aW9uJ3Mgc3Rh
dGUgZGlkbid0IGNoYW5nZSBiZXR3ZWVuIHR3byBmYWlsdXJlcywKK2FuZCB5b3UnbGwgc2VlIHRo
ZSBzYW1lIGRlc2NyaXB0aW9uIG9mIHRoZSBzdGF0ZSB0d2ljZS4gIFRoZXkgYXJlCitob3dldmVy
IF9ub3RfIHJlZHVuZGFudCwgYXMgdGhleSByZWZlciB0byBfZGlmZmVyZW50IHBvaW50cyBpbiB0
aW1lXy4KK1RoZSBmYWN0IHRoZXkgYXJlIHRoZSBzYW1lIF9pc18gaW50ZXJlc3RpbmcgaW5mb3Jt
YXRpb24uCisKKyMjIEkgZ2V0IGEgaGVhcCBjaGVjayBmYWlsdXJlIHdoZW4gdXNpbmcgYSBtb2Nr
IG9iamVjdCwgYnV0IHVzaW5nIGEgcmVhbCBvYmplY3QgaXMgZmluZS4gIFdoYXQgY2FuIGJlIHdy
b25nPyAjIworCitEb2VzIHRoZSBjbGFzcyAoaG9wZWZ1bGx5IGEgcHVyZSBpbnRlcmZhY2UpIHlv
dSBhcmUgbW9ja2luZyBoYXZlIGEKK3ZpcnR1YWwgZGVzdHJ1Y3Rvcj8KKworV2hlbmV2ZXIgeW91
IGRlcml2ZSBmcm9tIGEgYmFzZSBjbGFzcywgbWFrZSBzdXJlIGl0cyBkZXN0cnVjdG9yIGlzCit2
aXJ0dWFsLiAgT3RoZXJ3aXNlIEJhZCBUaGluZ3Mgd2lsbCBoYXBwZW4uICBDb25zaWRlciB0aGUg
Zm9sbG93aW5nCitjb2RlOgorCitgYGAKK2NsYXNzIEJhc2UgeworIHB1YmxpYzoKKyAgLy8gTm90
IHZpcnR1YWwsIGJ1dCBzaG91bGQgYmUuCisgIH5CYXNlKCkgeyAuLi4gfQorICAuLi4KK307CisK
K2NsYXNzIERlcml2ZWQgOiBwdWJsaWMgQmFzZSB7CisgcHVibGljOgorICAuLi4KKyBwcml2YXRl
OgorICBzdGQ6OnN0cmluZyB2YWx1ZV87Cit9OworCisuLi4KKyAgQmFzZSogcCA9IG5ldyBEZXJp
dmVkOworICAuLi4KKyAgZGVsZXRlIHA7ICAvLyBTdXJwcmlzZSEgfkJhc2UoKSB3aWxsIGJlIGNh
bGxlZCwgYnV0IH5EZXJpdmVkKCkgd2lsbCBub3QKKyAgICAgICAgICAgICAvLyAtIHZhbHVlXyBp
cyBsZWFrZWQuCitgYGAKKworQnkgY2hhbmdpbmcgYH5CYXNlKClgIHRvIHZpcnR1YWwsIGB+RGVy
aXZlZCgpYCB3aWxsIGJlIGNvcnJlY3RseQorY2FsbGVkIHdoZW4gYGRlbGV0ZSBwYCBpcyBleGVj
dXRlZCwgYW5kIHRoZSBoZWFwIGNoZWNrZXIKK3dpbGwgYmUgaGFwcHkuCisKKyMjIFRoZSAibmV3
ZXIgZXhwZWN0YXRpb25zIG92ZXJyaWRlIG9sZGVyIG9uZXMiIHJ1bGUgbWFrZXMgd3JpdGluZyBl
eHBlY3RhdGlvbnMgYXdrd2FyZC4gIFdoeSBkb2VzIEdvb2dsZSBNb2NrIGRvIHRoYXQ/ICMjCisK
K1doZW4gcGVvcGxlIGNvbXBsYWluIGFib3V0IHRoaXMsIG9mdGVuIHRoZXkgYXJlIHJlZmVycmlu
ZyB0byBjb2RlIGxpa2U6CisKK2BgYAorLy8gZm9vLkJhcigpIHNob3VsZCBiZSBjYWxsZWQgdHdp
Y2UsIHJldHVybiAxIHRoZSBmaXJzdCB0aW1lLCBhbmQgcmV0dXJuCisvLyAyIHRoZSBzZWNvbmQg
dGltZS4gIEhvd2V2ZXIsIEkgaGF2ZSB0byB3cml0ZSB0aGUgZXhwZWN0YXRpb25zIGluIHRoZQor
Ly8gcmV2ZXJzZSBvcmRlci4gIFRoaXMgc3Vja3MgYmlnIHRpbWUhISEKK0VYUEVDVF9DQUxMKGZv
bywgQmFyKCkpCisgICAgLldpbGxPbmNlKFJldHVybigyKSkKKyAgICAuUmV0aXJlc09uU2F0dXJh
dGlvbigpOworRVhQRUNUX0NBTEwoZm9vLCBCYXIoKSkKKyAgICAuV2lsbE9uY2UoUmV0dXJuKDEp
KQorICAgIC5SZXRpcmVzT25TYXR1cmF0aW9uKCk7CitgYGAKKworVGhlIHByb2JsZW0gaXMgdGhh
dCB0aGV5IGRpZG4ndCBwaWNrIHRoZSAqKmJlc3QqKiB3YXkgdG8gZXhwcmVzcyB0aGUgdGVzdCdz
CitpbnRlbnQuCisKK0J5IGRlZmF1bHQsIGV4cGVjdGF0aW9ucyBkb24ndCBoYXZlIHRvIGJlIG1h
dGNoZWQgaW4gX2FueV8gcGFydGljdWxhcgorb3JkZXIuICBJZiB5b3Ugd2FudCB0aGVtIHRvIG1h
dGNoIGluIGEgY2VydGFpbiBvcmRlciwgeW91IG5lZWQgdG8gYmUKK2V4cGxpY2l0LiAgVGhpcyBp
cyBHb29nbGUgTW9jaydzIChhbmQgak1vY2sncykgZnVuZGFtZW50YWwgcGhpbG9zb3BoeTogaXQn
cworZWFzeSB0byBhY2NpZGVudGFsbHkgb3Zlci1zcGVjaWZ5IHlvdXIgdGVzdHMsIGFuZCB3ZSB3
YW50IHRvIG1ha2UgaXQKK2hhcmRlciB0byBkbyBzby4KKworVGhlcmUgYXJlIHR3byBiZXR0ZXIg
d2F5cyB0byB3cml0ZSB0aGUgdGVzdCBzcGVjLiAgWW91IGNvdWxkIGVpdGhlcgorcHV0IHRoZSBl
eHBlY3RhdGlvbnMgaW4gc2VxdWVuY2U6CisKK2BgYAorLy8gZm9vLkJhcigpIHNob3VsZCBiZSBj
YWxsZWQgdHdpY2UsIHJldHVybiAxIHRoZSBmaXJzdCB0aW1lLCBhbmQgcmV0dXJuCisvLyAyIHRo
ZSBzZWNvbmQgdGltZS4gIFVzaW5nIGEgc2VxdWVuY2UsIHdlIGNhbiB3cml0ZSB0aGUgZXhwZWN0
YXRpb25zCisvLyBpbiB0aGVpciBuYXR1cmFsIG9yZGVyLgoreworICBJblNlcXVlbmNlIHM7Cisg
IEVYUEVDVF9DQUxMKGZvbywgQmFyKCkpCisgICAgICAuV2lsbE9uY2UoUmV0dXJuKDEpKQorICAg
ICAgLlJldGlyZXNPblNhdHVyYXRpb24oKTsKKyAgRVhQRUNUX0NBTEwoZm9vLCBCYXIoKSkKKyAg
ICAgIC5XaWxsT25jZShSZXR1cm4oMikpCisgICAgICAuUmV0aXJlc09uU2F0dXJhdGlvbigpOwor
fQorYGBgCisKK29yIHlvdSBjYW4gcHV0IHRoZSBzZXF1ZW5jZSBvZiBhY3Rpb25zIGluIHRoZSBz
YW1lIGV4cGVjdGF0aW9uOgorCitgYGAKKy8vIGZvby5CYXIoKSBzaG91bGQgYmUgY2FsbGVkIHR3
aWNlLCByZXR1cm4gMSB0aGUgZmlyc3QgdGltZSwgYW5kIHJldHVybgorLy8gMiB0aGUgc2Vjb25k
IHRpbWUuCitFWFBFQ1RfQ0FMTChmb28sIEJhcigpKQorICAgIC5XaWxsT25jZShSZXR1cm4oMSkp
CisgICAgLldpbGxPbmNlKFJldHVybigyKSkKKyAgICAuUmV0aXJlc09uU2F0dXJhdGlvbigpOwor
YGBgCisKK0JhY2sgdG8gdGhlIG9yaWdpbmFsIHF1ZXN0aW9uczogd2h5IGRvZXMgR29vZ2xlIE1v
Y2sgc2VhcmNoIHRoZQorZXhwZWN0YXRpb25zIChhbmQgYE9OX0NBTExgcykgZnJvbSBiYWNrIHRv
IGZyb250PyAgQmVjYXVzZSB0aGlzCithbGxvd3MgYSB1c2VyIHRvIHNldCB1cCBhIG1vY2sncyBi
ZWhhdmlvciBmb3IgdGhlIGNvbW1vbiBjYXNlIGVhcmx5CisoZS5nLiBpbiB0aGUgbW9jaydzIGNv
bnN0cnVjdG9yIG9yIHRoZSB0ZXN0IGZpeHR1cmUncyBzZXQtdXAgcGhhc2UpCithbmQgY3VzdG9t
aXplIGl0IHdpdGggbW9yZSBzcGVjaWZpYyBydWxlcyBsYXRlci4gIElmIEdvb2dsZSBNb2NrCitz
ZWFyY2hlcyBmcm9tIGZyb250IHRvIGJhY2ssIHRoaXMgdmVyeSB1c2VmdWwgcGF0dGVybiB3b24n
dCBiZQorcG9zc2libGUuCisKKyMjIEdvb2dsZSBNb2NrIHByaW50cyBhIHdhcm5pbmcgd2hlbiBh
IGZ1bmN0aW9uIHdpdGhvdXQgRVhQRUNUXF9DQUxMIGlzIGNhbGxlZCwgZXZlbiBpZiBJIGhhdmUg
c2V0IGl0cyBiZWhhdmlvciB1c2luZyBPTlxfQ0FMTC4gIFdvdWxkIGl0IGJlIHJlYXNvbmFibGUg
bm90IHRvIHNob3cgdGhlIHdhcm5pbmcgaW4gdGhpcyBjYXNlPyAjIworCitXaGVuIGNob29zaW5n
IGJldHdlZW4gYmVpbmcgbmVhdCBhbmQgYmVpbmcgc2FmZSwgd2UgbGVhbiB0b3dhcmQgdGhlCits
YXR0ZXIuICBTbyB0aGUgYW5zd2VyIGlzIHRoYXQgd2UgdGhpbmsgaXQncyBiZXR0ZXIgdG8gc2hv
dyB0aGUKK3dhcm5pbmcuCisKK09mdGVuIHBlb3BsZSB3cml0ZSBgT05fQ0FMTGBzIGluIHRoZSBt
b2NrIG9iamVjdCdzCitjb25zdHJ1Y3RvciBvciBgU2V0VXAoKWAsIGFzIHRoZSBkZWZhdWx0IGJl
aGF2aW9yIHJhcmVseSBjaGFuZ2VzIGZyb20KK3Rlc3QgdG8gdGVzdC4gIFRoZW4gaW4gdGhlIHRl
c3QgYm9keSB0aGV5IHNldCB0aGUgZXhwZWN0YXRpb25zLCB3aGljaAorYXJlIG9mdGVuIGRpZmZl
cmVudCBmb3IgZWFjaCB0ZXN0LiAgSGF2aW5nIGFuIGBPTl9DQUxMYCBpbiB0aGUgc2V0LXVwCitw
YXJ0IG9mIGEgdGVzdCBkb2Vzbid0IG1lYW4gdGhhdCB0aGUgY2FsbHMgYXJlIGV4cGVjdGVkLiAg
SWYgdGhlcmUncworbm8gYEVYUEVDVF9DQUxMYCBhbmQgdGhlIG1ldGhvZCBpcyBjYWxsZWQsIGl0
J3MgcG9zc2libHkgYW4gZXJyb3IuICBJZgord2UgcXVpZXRseSBsZXQgdGhlIGNhbGwgZ28gdGhy
b3VnaCB3aXRob3V0IG5vdGlmeWluZyB0aGUgdXNlciwgYnVncworbWF5IGNyZWVwIGluIHVubm90
aWNlZC4KKworSWYsIGhvd2V2ZXIsIHlvdSBhcmUgc3VyZSB0aGF0IHRoZSBjYWxscyBhcmUgT0ss
IHlvdSBjYW4gd3JpdGUKKworYGBgCitFWFBFQ1RfQ0FMTChmb28sIEJhcihfKSkKKyAgICAuV2ls
bFJlcGVhdGVkbHkoLi4uKTsKK2BgYAorCitpbnN0ZWFkIG9mCisKK2BgYAorT05fQ0FMTChmb28s
IEJhcihfKSkKKyAgICAuV2lsbEJ5RGVmYXVsdCguLi4pOworYGBgCisKK1RoaXMgdGVsbHMgR29v
Z2xlIE1vY2sgdGhhdCB5b3UgZG8gZXhwZWN0IHRoZSBjYWxscyBhbmQgbm8gd2FybmluZyBzaG91
bGQgYmUKK3ByaW50ZWQuCisKK0Fsc28sIHlvdSBjYW4gY29udHJvbCB0aGUgdmVyYm9zaXR5IHVz
aW5nIHRoZSBgLS1nbW9ja192ZXJib3NlYCBmbGFnLgorSWYgeW91IGZpbmQgdGhlIG91dHB1dCB0
b28gbm9pc3kgd2hlbiBkZWJ1Z2dpbmcsIGp1c3QgY2hvb3NlIGEgbGVzcwordmVyYm9zZSBsZXZl
bC4KKworIyMgSG93IGNhbiBJIGRlbGV0ZSB0aGUgbW9jayBmdW5jdGlvbidzIGFyZ3VtZW50IGlu
IGFuIGFjdGlvbj8gIyMKKworSWYgeW91IGZpbmQgeW91cnNlbGYgbmVlZGluZyB0byBwZXJmb3Jt
IHNvbWUgYWN0aW9uIHRoYXQncyBub3QKK3N1cHBvcnRlZCBieSBHb29nbGUgTW9jayBkaXJlY3Rs
eSwgcmVtZW1iZXIgdGhhdCB5b3UgY2FuIGRlZmluZSB5b3VyIG93bgorYWN0aW9ucyB1c2luZwor
W01ha2VBY3Rpb24oKV0oVjFfNV9Db29rQm9vayNXcml0aW5nX05ld19BY3Rpb25zLm1kKSBvcgor
W01ha2VQb2x5bW9ycGhpY0FjdGlvbigpXShWMV81X0Nvb2tCb29rI1dyaXRpbmdfTmV3X1BvbHlt
b3JwaGljX0FjdGlvbnMubWQpLAorb3IgeW91IGNhbiB3cml0ZSBhIHN0dWIgZnVuY3Rpb24gYW5k
IGludm9rZSBpdCB1c2luZworW0ludm9rZSgpXShWMV81X0Nvb2tCb29rI1VzaW5nX0Z1bmN0aW9u
c19NZXRob2RzX0Z1bmN0b3JzLm1kKS4KKworIyMgTU9DS1xfTUVUSE9EbigpJ3Mgc2Vjb25kIGFy
Z3VtZW50IGxvb2tzIGZ1bm55LiAgV2h5IGRvbid0IHlvdSB1c2UgdGhlIE1PQ0tcX01FVEhPRG4o
TWV0aG9kLCByZXR1cm5cX3R5cGUsIGFyZ1xfMSwgLi4uLCBhcmdcX24pIHN5bnRheD8gIyMKKwor
V2hhdD8hICBJIHRoaW5rIGl0J3MgYmVhdXRpZnVsLiA6LSkKKworV2hpbGUgd2hpY2ggc3ludGF4
IGxvb2tzIG1vcmUgbmF0dXJhbCBpcyBhIHN1YmplY3RpdmUgbWF0dGVyIHRvIHNvbWUKK2V4dGVu
dCwgR29vZ2xlIE1vY2sncyBzeW50YXggd2FzIGNob3NlbiBmb3Igc2V2ZXJhbCBwcmFjdGljYWwg
YWR2YW50YWdlcyBpdAoraGFzLgorCitUcnkgdG8gbW9jayBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMg
YSBtYXAgYXMgYW4gYXJndW1lbnQ6CitgYGAKK3ZpcnR1YWwgaW50IEdldFNpemUoY29uc3QgbWFw
PGludCwgc3RkOjpzdHJpbmc+JiBtKTsKK2BgYAorCitVc2luZyB0aGUgcHJvcG9zZWQgc3ludGF4
LCBpdCB3b3VsZCBiZToKK2BgYAorTU9DS19NRVRIT0QxKEdldFNpemUsIGludCwgY29uc3QgbWFw
PGludCwgc3RkOjpzdHJpbmc+JiBtKTsKK2BgYAorCitHdWVzcyB3aGF0PyAgWW91J2xsIGdldCBh
IGNvbXBpbGVyIGVycm9yIGFzIHRoZSBjb21waWxlciB0aGlua3MgdGhhdAorYGNvbnN0IG1hcDxp
bnQsIHN0ZDo6c3RyaW5nPiYgbWAgYXJlICoqdHdvKiosIG5vdCBvbmUsIGFyZ3VtZW50cy4gVG8g
d29yaworYXJvdW5kIHRoaXMgeW91IGNhbiB1c2UgYHR5cGVkZWZgIHRvIGdpdmUgdGhlIG1hcCB0
eXBlIGEgbmFtZSwgYnV0Cit0aGF0IGdldHMgaW4gdGhlIHdheSBvZiB5b3VyIHdvcmsuICBHb29n
bGUgTW9jaydzIHN5bnRheCBhdm9pZHMgdGhpcworcHJvYmxlbSBhcyB0aGUgZnVuY3Rpb24ncyBh
cmd1bWVudCB0eXBlcyBhcmUgcHJvdGVjdGVkIGluc2lkZSBhIHBhaXIKK29mIHBhcmVudGhlc2Vz
OgorYGBgCisvLyBUaGlzIGNvbXBpbGVzIGZpbmUuCitNT0NLX01FVEhPRDEoR2V0U2l6ZSwgaW50
KGNvbnN0IG1hcDxpbnQsIHN0ZDo6c3RyaW5nPiYgbSkpOworYGBgCisKK1lvdSBzdGlsbCBuZWVk
IGEgYHR5cGVkZWZgIGlmIHRoZSByZXR1cm4gdHlwZSBjb250YWlucyBhbiB1bnByb3RlY3RlZAor
Y29tbWEsIGJ1dCB0aGF0J3MgbXVjaCByYXJlci4KKworT3RoZXIgYWR2YW50YWdlcyBpbmNsdWRl
OgorICAxLiBgTU9DS19NRVRIT0QxKEZvbywgaW50LCBib29sKWAgY2FuIGxlYXZlIGEgcmVhZGVy
IHdvbmRlciB3aGV0aGVyIHRoZSBtZXRob2QgcmV0dXJucyBgaW50YCBvciBgYm9vbGAsIHdoaWxl
IHRoZXJlIHdvbid0IGJlIHN1Y2ggY29uZnVzaW9uIHVzaW5nIEdvb2dsZSBNb2NrJ3Mgc3ludGF4
LgorICAxLiBUaGUgd2F5IEdvb2dsZSBNb2NrIGRlc2NyaWJlcyBhIGZ1bmN0aW9uIHR5cGUgaXMg
bm90aGluZyBuZXcsIGFsdGhvdWdoIG1hbnkgcGVvcGxlIG1heSBub3QgYmUgZmFtaWxpYXIgd2l0
aCBpdC4gIFRoZSBzYW1lIHN5bnRheCB3YXMgdXNlZCBpbiBDLCBhbmQgdGhlIGBmdW5jdGlvbmAg
bGlicmFyeSBpbiBgdHIxYCB1c2VzIHRoaXMgc3ludGF4IGV4dGVuc2l2ZWx5LiAgU2luY2UgYHRy
MWAgd2lsbCBiZWNvbWUgYSBwYXJ0IG9mIHRoZSBuZXcgdmVyc2lvbiBvZiBTVEwsIHdlIGZlZWwg
dmVyeSBjb21mb3J0YWJsZSB0byBiZSBjb25zaXN0ZW50IHdpdGggaXQuCisgIDEuIFRoZSBmdW5j
dGlvbiB0eXBlIHN5bnRheCBpcyBhbHNvIHVzZWQgaW4gb3RoZXIgcGFydHMgb2YgR29vZ2xlIE1v
Y2sncyBBUEkgKGUuZy4gdGhlIGFjdGlvbiBpbnRlcmZhY2UpIGluIG9yZGVyIHRvIG1ha2UgdGhl
IGltcGxlbWVudGF0aW9uIHRyYWN0YWJsZS4gQSB1c2VyIG5lZWRzIHRvIGxlYXJuIGl0IGFueXdh
eSBpbiBvcmRlciB0byB1dGlsaXplIEdvb2dsZSBNb2NrJ3MgbW9yZSBhZHZhbmNlZCBmZWF0dXJl
cy4gIFdlJ2QgYXMgd2VsbCBzdGljayB0byB0aGUgc2FtZSBzeW50YXggaW4gYE1PQ0tfTUVUSE9E
KmAhCisKKyMjIE15IGNvZGUgY2FsbHMgYSBzdGF0aWMvZ2xvYmFsIGZ1bmN0aW9uLiAgQ2FuIEkg
bW9jayBpdD8gIyMKKworWW91IGNhbiwgYnV0IHlvdSBuZWVkIHRvIG1ha2Ugc29tZSBjaGFuZ2Vz
LgorCitJbiBnZW5lcmFsLCBpZiB5b3UgZmluZCB5b3Vyc2VsZiBuZWVkaW5nIHRvIG1vY2sgYSBz
dGF0aWMgZnVuY3Rpb24sCitpdCdzIGEgc2lnbiB0aGF0IHlvdXIgbW9kdWxlcyBhcmUgdG9vIHRp
Z2h0bHkgY291cGxlZCAoYW5kIGxlc3MKK2ZsZXhpYmxlLCBsZXNzIHJldXNhYmxlLCBsZXNzIHRl
c3RhYmxlLCBldGMpLiAgWW91IGFyZSBwcm9iYWJseSBiZXR0ZXIKK29mZiBkZWZpbmluZyBhIHNt
YWxsIGludGVyZmFjZSBhbmQgY2FsbCB0aGUgZnVuY3Rpb24gdGhyb3VnaCB0aGF0CitpbnRlcmZh
Y2UsIHdoaWNoIHRoZW4gY2FuIGJlIGVhc2lseSBtb2NrZWQuICBJdCdzIGEgYml0IG9mIHdvcmsK
K2luaXRpYWxseSwgYnV0IHVzdWFsbHkgcGF5cyBmb3IgaXRzZWxmIHF1aWNrbHkuCisKK1RoaXMg
R29vZ2xlIFRlc3RpbmcgQmxvZworW3Bvc3RdKGh0dHA6Ly9nb29nbGV0ZXN0aW5nLmJsb2dzcG90
LmNvbS8yMDA4LzA2L2RlZmVhdC1zdGF0aWMtY2xpbmcuaHRtbCkKK3NheXMgaXQgZXhjZWxsZW50
bHkuICBDaGVjayBpdCBvdXQuCisKKyMjIE15IG1vY2sgb2JqZWN0IG5lZWRzIHRvIGRvIGNvbXBs
ZXggc3R1ZmYuICBJdCdzIGEgbG90IG9mIHBhaW4gdG8gc3BlY2lmeSB0aGUgYWN0aW9ucy4gIEdv
b2dsZSBNb2NrIHN1Y2tzISAjIworCitJIGtub3cgaXQncyBub3QgYSBxdWVzdGlvbiwgYnV0IHlv
dSBnZXQgYW4gYW5zd2VyIGZvciBmcmVlIGFueSB3YXkuIDotKQorCitXaXRoIEdvb2dsZSBNb2Nr
LCB5b3UgY2FuIGNyZWF0ZSBtb2NrcyBpbiBDKysgZWFzaWx5LiAgQW5kIHBlb3BsZSBtaWdodCBi
ZQordGVtcHRlZCB0byB1c2UgdGhlbSBldmVyeXdoZXJlLiBTb21ldGltZXMgdGhleSB3b3JrIGdy
ZWF0LCBhbmQKK3NvbWV0aW1lcyB5b3UgbWF5IGZpbmQgdGhlbSwgd2VsbCwgYSBwYWluIHRvIHVz
ZS4gU28sIHdoYXQncyB3cm9uZyBpbgordGhlIGxhdHRlciBjYXNlPworCitXaGVuIHlvdSB3cml0
ZSBhIHRlc3Qgd2l0aG91dCB1c2luZyBtb2NrcywgeW91IGV4ZXJjaXNlIHRoZSBjb2RlIGFuZAor
YXNzZXJ0IHRoYXQgaXQgcmV0dXJucyB0aGUgY29ycmVjdCB2YWx1ZSBvciB0aGF0IHRoZSBzeXN0
ZW0gaXMgaW4gYW4KK2V4cGVjdGVkIHN0YXRlLiAgVGhpcyBpcyBzb21ldGltZXMgY2FsbGVkICJz
dGF0ZS1iYXNlZCB0ZXN0aW5nIi4KKworTW9ja3MgYXJlIGdyZWF0IGZvciB3aGF0IHNvbWUgY2Fs
bCAiaW50ZXJhY3Rpb24tYmFzZWQiIHRlc3Rpbmc6CitpbnN0ZWFkIG9mIGNoZWNraW5nIHRoZSBz
eXN0ZW0gc3RhdGUgYXQgdGhlIHZlcnkgZW5kLCBtb2NrIG9iamVjdHMKK3ZlcmlmeSB0aGF0IHRo
ZXkgYXJlIGludm9rZWQgdGhlIHJpZ2h0IHdheSBhbmQgcmVwb3J0IGFuIGVycm9yIGFzIHNvb24K
K2FzIGl0IGFyaXNlcywgZ2l2aW5nIHlvdSBhIGhhbmRsZSBvbiB0aGUgcHJlY2lzZSBjb250ZXh0
IGluIHdoaWNoIHRoZQorZXJyb3Igd2FzIHRyaWdnZXJlZC4gIFRoaXMgaXMgb2Z0ZW4gbW9yZSBl
ZmZlY3RpdmUgYW5kIGVjb25vbWljYWwgdG8KK2RvIHRoYW4gc3RhdGUtYmFzZWQgdGVzdGluZy4K
KworSWYgeW91IGFyZSBkb2luZyBzdGF0ZS1iYXNlZCB0ZXN0aW5nIGFuZCB1c2luZyBhIHRlc3Qg
ZG91YmxlIGp1c3QgdG8KK3NpbXVsYXRlIHRoZSByZWFsIG9iamVjdCwgeW91IGFyZSBwcm9iYWJs
eSBiZXR0ZXIgb2ZmIHVzaW5nIGEgZmFrZS4KK1VzaW5nIGEgbW9jayBpbiB0aGlzIGNhc2UgY2F1
c2VzIHBhaW4sIGFzIGl0J3Mgbm90IGEgc3Ryb25nIHBvaW50IGZvcgorbW9ja3MgdG8gcGVyZm9y
bSBjb21wbGV4IGFjdGlvbnMuICBJZiB5b3UgZXhwZXJpZW5jZSB0aGlzIGFuZCB0aGluawordGhh
dCBtb2NrcyBzdWNrLCB5b3UgYXJlIGp1c3Qgbm90IHVzaW5nIHRoZSByaWdodCB0b29sIGZvciB5
b3VyCitwcm9ibGVtLiBPciwgeW91IG1pZ2h0IGJlIHRyeWluZyB0byBzb2x2ZSB0aGUgd3Jvbmcg
cHJvYmxlbS4gOi0pCisKKyMjIEkgZ290IGEgd2FybmluZyAiVW5pbnRlcmVzdGluZyBmdW5jdGlv
biBjYWxsIGVuY291bnRlcmVkIC0gZGVmYXVsdCBhY3Rpb24gdGFrZW4uLiIgIFNob3VsZCBJIHBh
bmljPyAjIworCitCeSBhbGwgbWVhbnMsIE5PISAgSXQncyBqdXN0IGFuIEZZSS4KKworV2hhdCBp
dCBtZWFucyBpcyB0aGF0IHlvdSBoYXZlIGEgbW9jayBmdW5jdGlvbiwgeW91IGhhdmVuJ3Qgc2V0
IGFueQorZXhwZWN0YXRpb25zIG9uIGl0IChieSBHb29nbGUgTW9jaydzIHJ1bGUgdGhpcyBtZWFu
cyB0aGF0IHlvdSBhcmUgbm90CitpbnRlcmVzdGVkIGluIGNhbGxzIHRvIHRoaXMgZnVuY3Rpb24g
YW5kIHRoZXJlZm9yZSBpdCBjYW4gYmUgY2FsbGVkCithbnkgbnVtYmVyIG9mIHRpbWVzKSwgYW5k
IGl0IGlzIGNhbGxlZC4gIFRoYXQncyBPSyAtIHlvdSBkaWRuJ3Qgc2F5CitpdCdzIG5vdCBPSyB0
byBjYWxsIHRoZSBmdW5jdGlvbiEKKworV2hhdCBpZiB5b3UgYWN0dWFsbHkgbWVhbnQgdG8gZGlz
YWxsb3cgdGhpcyBmdW5jdGlvbiB0byBiZSBjYWxsZWQsIGJ1dAorZm9yZ290IHRvIHdyaXRlIGBF
WFBFQ1RfQ0FMTChmb28sIEJhcigpKS5UaW1lcygwKWA/ICBXaGlsZQorb25lIGNhbiBhcmd1ZSB0
aGF0IGl0J3MgdGhlIHVzZXIncyBmYXVsdCwgR29vZ2xlIE1vY2sgdHJpZXMgdG8gYmUgbmljZSBh
bmQKK3ByaW50cyB5b3UgYSBub3RlLgorCitTbywgd2hlbiB5b3Ugc2VlIHRoZSBtZXNzYWdlIGFu
ZCBiZWxpZXZlIHRoYXQgdGhlcmUgc2hvdWxkbid0IGJlIGFueQordW5pbnRlcmVzdGluZyBjYWxs
cywgeW91IHNob3VsZCBpbnZlc3RpZ2F0ZSB3aGF0J3MgZ29pbmcgb24uICBUbyBtYWtlCit5b3Vy
IGxpZmUgZWFzaWVyLCBHb29nbGUgTW9jayBwcmludHMgdGhlIGZ1bmN0aW9uIG5hbWUgYW5kIGFy
Z3VtZW50cword2hlbiBhbiB1bmludGVyZXN0aW5nIGNhbGwgaXMgZW5jb3VudGVyZWQuCisKKyMj
IEkgd2FudCB0byBkZWZpbmUgYSBjdXN0b20gYWN0aW9uLiAgU2hvdWxkIEkgdXNlIEludm9rZSgp
IG9yIGltcGxlbWVudCB0aGUgYWN0aW9uIGludGVyZmFjZT8gIyMKKworRWl0aGVyIHdheSBpcyBm
aW5lIC0geW91IHdhbnQgdG8gY2hvb3NlIHRoZSBvbmUgdGhhdCdzIG1vcmUgY29udmVuaWVudAor
Zm9yIHlvdXIgY2lyY3Vtc3RhbmNlLgorCitVc3VhbGx5LCBpZiB5b3VyIGFjdGlvbiBpcyBmb3Ig
YSBwYXJ0aWN1bGFyIGZ1bmN0aW9uIHR5cGUsIGRlZmluaW5nIGl0Cit1c2luZyBgSW52b2tlKClg
IHNob3VsZCBiZSBlYXNpZXI7IGlmIHlvdXIgYWN0aW9uIGNhbiBiZSB1c2VkIGluCitmdW5jdGlv
bnMgb2YgZGlmZmVyZW50IHR5cGVzIChlLmcuIGlmIHlvdSBhcmUgZGVmaW5pbmcKK2BSZXR1cm4o
dmFsdWUpYCksIGBNYWtlUG9seW1vcnBoaWNBY3Rpb24oKWAgaXMKK2Vhc2llc3QuICBTb21ldGlt
ZXMgeW91IHdhbnQgcHJlY2lzZSBjb250cm9sIG9uIHdoYXQgdHlwZXMgb2YKK2Z1bmN0aW9ucyB0
aGUgYWN0aW9uIGNhbiBiZSB1c2VkIGluLCBhbmQgaW1wbGVtZW50aW5nCitgQWN0aW9uSW50ZXJm
YWNlYCBpcyB0aGUgd2F5IHRvIGdvIGhlcmUuIFNlZSB0aGUgaW1wbGVtZW50YXRpb24gb2YKK2BS
ZXR1cm4oKWAgaW4gYGluY2x1ZGUvZ21vY2svZ21vY2stYWN0aW9ucy5oYCBmb3IgYW4gZXhhbXBs
ZS4KKworIyMgSSdtIHVzaW5nIHRoZSBzZXQtYXJndW1lbnQtcG9pbnRlZSBhY3Rpb24sIGFuZCB0
aGUgY29tcGlsZXIgY29tcGxhaW5zIGFib3V0ICJjb25mbGljdGluZyByZXR1cm4gdHlwZSBzcGVj
aWZpZWQiLiAgV2hhdCBkb2VzIGl0IG1lYW4/ICMjCisKK1lvdSBnb3QgdGhpcyBlcnJvciBhcyBH
b29nbGUgTW9jayBoYXMgbm8gaWRlYSB3aGF0IHZhbHVlIGl0IHNob3VsZCByZXR1cm4KK3doZW4g
dGhlIG1vY2sgbWV0aG9kIGlzIGNhbGxlZC4gIGBTZXRBcmd1bWVudFBvaW50ZWUoKWAgc2F5cyB3
aGF0IHRoZQorc2lkZSBlZmZlY3QgaXMsIGJ1dCBkb2Vzbid0IHNheSB3aGF0IHRoZSByZXR1cm4g
dmFsdWUgc2hvdWxkIGJlLiAgWW91CituZWVkIGBEb0FsbCgpYCB0byBjaGFpbiBhIGBTZXRBcmd1
bWVudFBvaW50ZWUoKWAgd2l0aCBhIGBSZXR1cm4oKWAuCisKK1NlZSB0aGlzIFtyZWNpcGVdKFYx
XzVfQ29va0Jvb2sjTW9ja2luZ19TaWRlX0VmZmVjdHMubWQpIGZvciBtb3JlIGRldGFpbHMgYW5k
IGFuIGV4YW1wbGUuCisKKworIyMgTXkgcXVlc3Rpb24gaXMgbm90IGluIHlvdXIgRkFRISAjIwor
CitJZiB5b3UgY2Fubm90IGZpbmQgdGhlIGFuc3dlciB0byB5b3VyIHF1ZXN0aW9uIGluIHRoaXMg
RkFRLCB0aGVyZSBhcmUKK3NvbWUgb3RoZXIgcmVzb3VyY2VzIHlvdSBjYW4gdXNlOgorCisgIDEu
IHJlYWQgb3RoZXIgW3dpa2kgcGFnZXNdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGVt
b2NrL3cvbGlzdCksCisgIDEuIHNlYXJjaCB0aGUgbWFpbGluZyBsaXN0IFthcmNoaXZlXShodHRw
Oi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXAvZ29vZ2xlbW9jay90b3BpY3MpLAorICAxLiBhc2sg
aXQgb24gW2dvb2dsZW1vY2tAZ29vZ2xlZ3JvdXBzLmNvbV0obWFpbHRvOmdvb2dsZW1vY2tAZ29v
Z2xlZ3JvdXBzLmNvbSkgYW5kIHNvbWVvbmUgd2lsbCBhbnN3ZXIgaXQgKHRvIHByZXZlbnQgc3Bh
bSwgd2UgcmVxdWlyZSB5b3UgdG8gam9pbiB0aGUgW2Rpc2N1c3Npb24gZ3JvdXBdKGh0dHA6Ly9n
cm91cHMuZ29vZ2xlLmNvbS9ncm91cC9nb29nbGVtb2NrKSBiZWZvcmUgeW91IGNhbiBwb3N0Liku
CisKK1BsZWFzZSBub3RlIHRoYXQgY3JlYXRpbmcgYW4gaXNzdWUgaW4gdGhlCitbaXNzdWUgdHJh
Y2tlcl0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZW1vY2svaXNzdWVzL2xpc3QpIGlz
IF9ub3RfCithIGdvb2Qgd2F5IHRvIGdldCB5b3VyIGFuc3dlciwgYXMgaXQgaXMgbW9uaXRvcmVk
IGluZnJlcXVlbnRseSBieSBhCit2ZXJ5IHNtYWxsIG51bWJlciBvZiBwZW9wbGUuCisKK1doZW4g
YXNraW5nIGEgcXVlc3Rpb24sIGl0J3MgaGVscGZ1bCB0byBwcm92aWRlIGFzIG11Y2ggb2YgdGhl
Citmb2xsb3dpbmcgaW5mb3JtYXRpb24gYXMgcG9zc2libGUgKHBlb3BsZSBjYW5ub3QgaGVscCB5
b3UgaWYgdGhlcmUncworbm90IGVub3VnaCBpbmZvcm1hdGlvbiBpbiB5b3VyIHF1ZXN0aW9uKToK
KworICAqIHRoZSB2ZXJzaW9uIChvciB0aGUgcmV2aXNpb24gbnVtYmVyIGlmIHlvdSBjaGVjayBv
dXQgZnJvbSBTVk4gZGlyZWN0bHkpIG9mIEdvb2dsZSBNb2NrIHlvdSB1c2UgKEdvb2dsZSBNb2Nr
IGlzIHVuZGVyIGFjdGl2ZSBkZXZlbG9wbWVudCwgc28gaXQncyBwb3NzaWJsZSB0aGF0IHlvdXIg
cHJvYmxlbSBoYXMgYmVlbiBzb2x2ZWQgaW4gYSBsYXRlciB2ZXJzaW9uKSwKKyAgKiB5b3VyIG9w
ZXJhdGluZyBzeXN0ZW0sCisgICogdGhlIG5hbWUgYW5kIHZlcnNpb24gb2YgeW91ciBjb21waWxl
ciwKKyAgKiB0aGUgY29tcGxldGUgY29tbWFuZCBsaW5lIGZsYWdzIHlvdSBnaXZlIHRvIHlvdXIg
Y29tcGlsZXIsCisgICogdGhlIGNvbXBsZXRlIGNvbXBpbGVyIGVycm9yIG1lc3NhZ2VzIChpZiB0
aGUgcXVlc3Rpb24gaXMgYWJvdXQgY29tcGlsYXRpb24pLAorICAqIHRoZSBfYWN0dWFsXyBjb2Rl
IChpZGVhbGx5LCBhIG1pbmltYWwgYnV0IGNvbXBsZXRlIHByb2dyYW0pIHRoYXQgaGFzIHRoZSBw
cm9ibGVtIHlvdSBlbmNvdW50ZXIuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZW1vY2svZG9jcy92MV82L0NoZWF0U2hlZXQubWQgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9k
b2NzL3YxXzYvQ2hlYXRTaGVldC5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MWRlMWQyMTBlNGQ1NTJhYzI4NzIz
NTk0MTM0MDdiNzc2NmVhZTViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy92
MV82L0NoZWF0U2hlZXQubWQKQEAgLTAsMCArMSw1MzQgQEAKKworCisjIERlZmluaW5nIGEgTW9j
ayBDbGFzcyAjCisKKyMjIE1vY2tpbmcgYSBOb3JtYWwgQ2xhc3MgIyMKKworR2l2ZW4KK2BgYAor
Y2xhc3MgRm9vIHsKKyAgLi4uCisgIHZpcnR1YWwgfkZvbygpOworICB2aXJ0dWFsIGludCBHZXRT
aXplKCkgY29uc3QgPSAwOworICB2aXJ0dWFsIHN0cmluZyBEZXNjcmliZShjb25zdCBjaGFyKiBu
YW1lKSA9IDA7CisgIHZpcnR1YWwgc3RyaW5nIERlc2NyaWJlKGludCB0eXBlKSA9IDA7CisgIHZp
cnR1YWwgYm9vbCBQcm9jZXNzKEJhciBlbGVtLCBpbnQgY291bnQpID0gMDsKK307CitgYGAKKyhu
b3RlIHRoYXQgYH5Gb28oKWAgKiptdXN0KiogYmUgdmlydHVhbCkgd2UgY2FuIGRlZmluZSBpdHMg
bW9jayBhcworYGBgCisjaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKKworY2xhc3MgTW9ja0ZvbyA6
IHB1YmxpYyBGb28geworICBNT0NLX0NPTlNUX01FVEhPRDAoR2V0U2l6ZSwgaW50KCkpOworICBN
T0NLX01FVEhPRDEoRGVzY3JpYmUsIHN0cmluZyhjb25zdCBjaGFyKiBuYW1lKSk7CisgIE1PQ0tf
TUVUSE9EMShEZXNjcmliZSwgc3RyaW5nKGludCB0eXBlKSk7CisgIE1PQ0tfTUVUSE9EMihQcm9j
ZXNzLCBib29sKEJhciBlbGVtLCBpbnQgY291bnQpKTsKK307CitgYGAKKworVG8gY3JlYXRlIGEg
Im5pY2UiIG1vY2sgb2JqZWN0IHdoaWNoIGlnbm9yZXMgYWxsIHVuaW50ZXJlc3RpbmcgY2FsbHMs
CitvciBhICJzdHJpY3QiIG1vY2sgb2JqZWN0LCB3aGljaCB0cmVhdHMgdGhlbSBhcyBmYWlsdXJl
czoKK2BgYAorTmljZU1vY2s8TW9ja0Zvbz4gbmljZV9mb287ICAgICAvLyBUaGUgdHlwZSBpcyBh
IHN1YmNsYXNzIG9mIE1vY2tGb28uCitTdHJpY3RNb2NrPE1vY2tGb28+IHN0cmljdF9mb287IC8v
IFRoZSB0eXBlIGlzIGEgc3ViY2xhc3Mgb2YgTW9ja0Zvby4KK2BgYAorCisjIyBNb2NraW5nIGEg
Q2xhc3MgVGVtcGxhdGUgIyMKKworVG8gbW9jaworYGBgCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxl
bT4KK2NsYXNzIFN0YWNrSW50ZXJmYWNlIHsKKyBwdWJsaWM6CisgIC4uLgorICB2aXJ0dWFsIH5T
dGFja0ludGVyZmFjZSgpOworICB2aXJ0dWFsIGludCBHZXRTaXplKCkgY29uc3QgPSAwOworICB2
aXJ0dWFsIHZvaWQgUHVzaChjb25zdCBFbGVtJiB4KSA9IDA7Cit9OworYGBgCisobm90ZSB0aGF0
IGB+U3RhY2tJbnRlcmZhY2UoKWAgKiptdXN0KiogYmUgdmlydHVhbCkganVzdCBhcHBlbmQgYF9U
YCB0byB0aGUgYE1PQ0tfKmAgbWFjcm9zOgorYGBgCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbT4K
K2NsYXNzIE1vY2tTdGFjayA6IHB1YmxpYyBTdGFja0ludGVyZmFjZTxFbGVtPiB7CisgcHVibGlj
OgorICAuLi4KKyAgTU9DS19DT05TVF9NRVRIT0QwX1QoR2V0U2l6ZSwgaW50KCkpOworICBNT0NL
X01FVEhPRDFfVChQdXNoLCB2b2lkKGNvbnN0IEVsZW0mIHgpKTsKK307CitgYGAKKworIyMgU3Bl
Y2lmeWluZyBDYWxsaW5nIENvbnZlbnRpb25zIGZvciBNb2NrIEZ1bmN0aW9ucyAjIworCitJZiB5
b3VyIG1vY2sgZnVuY3Rpb24gZG9lc24ndCB1c2UgdGhlIGRlZmF1bHQgY2FsbGluZyBjb252ZW50
aW9uLCB5b3UKK2NhbiBzcGVjaWZ5IGl0IGJ5IGFwcGVuZGluZyBgX1dJVEhfQ0FMTFRZUEVgIHRv
IGFueSBvZiB0aGUgbWFjcm9zCitkZXNjcmliZWQgaW4gdGhlIHByZXZpb3VzIHR3byBzZWN0aW9u
cyBhbmQgc3VwcGx5aW5nIHRoZSBjYWxsaW5nCitjb252ZW50aW9uIGFzIHRoZSBmaXJzdCBhcmd1
bWVudCB0byB0aGUgbWFjcm8uIEZvciBleGFtcGxlLAorYGBgCisgIE1PQ0tfTUVUSE9EXzFfV0lU
SF9DQUxMVFlQRShTVERNRVRIT0RDQUxMVFlQRSwgRm9vLCBib29sKGludCBuKSk7CisgIE1PQ0tf
Q09OU1RfTUVUSE9EMl9XSVRIX0NBTExUWVBFKFNURE1FVEhPRENBTExUWVBFLCBCYXIsIGludChk
b3VibGUgeCwgZG91YmxlIHkpKTsKK2BgYAord2hlcmUgYFNURE1FVEhPRENBTExUWVBFYCBpcyBk
ZWZpbmVkIGJ5IGA8b2JqYmFzZS5oPmAgb24gV2luZG93cy4KKworIyBVc2luZyBNb2NrcyBpbiBU
ZXN0cyAjCisKK1RoZSB0eXBpY2FsIGZsb3cgaXM6CisgIDEuIEltcG9ydCB0aGUgR29vZ2xlIE1v
Y2sgbmFtZXMgeW91IG5lZWQgdG8gdXNlLiBBbGwgR29vZ2xlIE1vY2sgbmFtZXMgYXJlIGluIHRo
ZSBgdGVzdGluZ2AgbmFtZXNwYWNlIHVubGVzcyB0aGV5IGFyZSBtYWNyb3Mgb3Igb3RoZXJ3aXNl
IG5vdGVkLgorICAxLiBDcmVhdGUgdGhlIG1vY2sgb2JqZWN0cy4KKyAgMS4gT3B0aW9uYWxseSwg
c2V0IHRoZSBkZWZhdWx0IGFjdGlvbnMgb2YgdGhlIG1vY2sgb2JqZWN0cy4KKyAgMS4gU2V0IHlv
dXIgZXhwZWN0YXRpb25zIG9uIHRoZSBtb2NrIG9iamVjdHMgKEhvdyB3aWxsIHRoZXkgYmUgY2Fs
bGVkPyBXaGF0IHdpbCB0aGV5IGRvPykuCisgIDEuIEV4ZXJjaXNlIGNvZGUgdGhhdCB1c2VzIHRo
ZSBtb2NrIG9iamVjdHM7IGlmIG5lY2Vzc2FyeSwgY2hlY2sgdGhlIHJlc3VsdCB1c2luZyBbR29v
Z2xlIFRlc3RdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0LykgYXNzZXJ0aW9u
cy4KKyAgMS4gV2hlbiBhIG1vY2sgb2JqZWN0cyBpcyBkZXN0cnVjdGVkLCBHb29nbGUgTW9jayBh
dXRvbWF0aWNhbGx5IHZlcmlmaWVzIHRoYXQgYWxsIGV4cGVjdGF0aW9ucyBvbiBpdCBoYXZlIGJl
ZW4gc2F0aXNmaWVkLgorCitIZXJlIGlzIGFuIGV4YW1wbGU6CitgYGAKK3VzaW5nIDo6dGVzdGlu
Zzo6UmV0dXJuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAjMQorCitURVNUKEJhclRl
c3QsIERvZXNUaGlzKSB7CisgIE1vY2tGb28gZm9vOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vICMyCisKKyAgT05fQ0FMTChmb28sIEdldFNpemUoKSkgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gIzMKKyAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybigxKSk7CisgIC8v
IC4uLiBvdGhlciBkZWZhdWx0IGFjdGlvbnMgLi4uCisKKyAgRVhQRUNUX0NBTEwoZm9vLCBEZXNj
cmliZSg1KSkgICAgICAgICAgICAgICAgICAgLy8gIzQKKyAgICAgIC5UaW1lcygzKQorICAgICAg
LldpbGxSZXBlYXRlZGx5KFJldHVybigiQ2F0ZWdvcnkgNSIpKTsKKyAgLy8gLi4uIG90aGVyIGV4
cGVjdGF0aW9ucyAuLi4KKworICBFWFBFQ1RfRVEoImdvb2QiLCBNeVByb2R1Y3Rpb25GdW5jdGlv
bigmZm9vKSk7ICAvLyAjNQorfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyAjNgorYGBgCisKKyMgU2V0dGluZyBEZWZhdWx0IEFjdGlvbnMgIworCitH
b29nbGUgTW9jayBoYXMgYSAqKmJ1aWx0LWluIGRlZmF1bHQgYWN0aW9uKiogZm9yIGFueSBmdW5j
dGlvbiB0aGF0CityZXR1cm5zIGB2b2lkYCwgYGJvb2xgLCBhIG51bWVyaWMgdmFsdWUsIG9yIGEg
cG9pbnRlci4KKworVG8gY3VzdG9taXplIHRoZSBkZWZhdWx0IGFjdGlvbiBmb3IgZnVuY3Rpb25z
IHdpdGggcmV0dXJuIHR5cGUgYFRgIGdsb2JhbGx5OgorYGBgCit1c2luZyA6OnRlc3Rpbmc6OkRl
ZmF1bHRWYWx1ZTsKKworRGVmYXVsdFZhbHVlPFQ+OjpTZXQodmFsdWUpOyAgLy8gU2V0cyB0aGUg
ZGVmYXVsdCB2YWx1ZSB0byBiZSByZXR1cm5lZC4KKy8vIC4uLiB1c2UgdGhlIG1vY2tzIC4uLgor
RGVmYXVsdFZhbHVlPFQ+OjpDbGVhcigpOyAgICAgLy8gUmVzZXRzIHRoZSBkZWZhdWx0IHZhbHVl
LgorYGBgCisKK1RvIGN1c3RvbWl6ZSB0aGUgZGVmYXVsdCBhY3Rpb24gZm9yIGEgcGFydGljdWxh
ciBtZXRob2QsIHVzZSBgT05fQ0FMTCgpYDoKK2BgYAorT05fQ0FMTChtb2NrX29iamVjdCwgbWV0
aG9kKG1hdGNoZXJzKSkKKyAgICAuV2l0aChtdWx0aV9hcmd1bWVudF9tYXRjaGVyKSAgPworICAg
IC5XaWxsQnlEZWZhdWx0KGFjdGlvbik7CitgYGAKKworIyBTZXR0aW5nIEV4cGVjdGF0aW9ucyAj
CisKK2BFWFBFQ1RfQ0FMTCgpYCBzZXRzICoqZXhwZWN0YXRpb25zKiogb24gYSBtb2NrIG1ldGhv
ZCAoSG93IHdpbGwgaXQgYmUKK2NhbGxlZD8gV2hhdCB3aWxsIGl0IGRvPyk6CitgYGAKK0VYUEVD
VF9DQUxMKG1vY2tfb2JqZWN0LCBtZXRob2QobWF0Y2hlcnMpKQorICAgIC5XaXRoKG11bHRpX2Fy
Z3VtZW50X21hdGNoZXIpICA/CisgICAgLlRpbWVzKGNhcmRpbmFsaXR5KSAgICAgICAgICAgID8K
KyAgICAuSW5TZXF1ZW5jZShzZXF1ZW5jZXMpICAgICAgICAgKgorICAgIC5BZnRlcihleHBlY3Rh
dGlvbnMpICAgICAgICAgICAqCisgICAgLldpbGxPbmNlKGFjdGlvbikgICAgICAgICAgICAgICoK
KyAgICAuV2lsbFJlcGVhdGVkbHkoYWN0aW9uKSAgICAgICAgPworICAgIC5SZXRpcmVzT25TYXR1
cmF0aW9uKCk7ICAgICAgICA/CitgYGAKKworSWYgYFRpbWVzKClgIGlzIG9taXR0ZWQsIHRoZSBj
YXJkaW5hbGl0eSBpcyBhc3N1bWVkIHRvIGJlOgorCisgICogYFRpbWVzKDEpYCB3aGVuIHRoZXJl
IGlzIG5laXRoZXIgYFdpbGxPbmNlKClgIG5vciBgV2lsbFJlcGVhdGVkbHkoKWA7CisgICogYFRp
bWVzKG4pYCB3aGVuIHRoZXJlIGFyZSBgbiBXaWxsT25jZSgpYHMgYnV0IG5vIGBXaWxsUmVwZWF0
ZWRseSgpYCwgd2hlcmUgYG5gID49IDE7IG9yCisgICogYFRpbWVzKEF0TGVhc3QobikpYCB3aGVu
IHRoZXJlIGFyZSBgbiBXaWxsT25jZSgpYHMgYW5kIGEgYFdpbGxSZXBlYXRlZGx5KClgLCB3aGVy
ZSBgbmAgPj0gMC4KKworQSBtZXRob2Qgd2l0aCBubyBgRVhQRUNUX0NBTEwoKWAgaXMgZnJlZSB0
byBiZSBpbnZva2VkIF9hbnkgbnVtYmVyIG9mIHRpbWVzXywgYW5kIHRoZSBkZWZhdWx0IGFjdGlv
biB3aWxsIGJlIHRha2VuIGVhY2ggdGltZS4KKworIyBNYXRjaGVycyAjCisKK0EgKiptYXRjaGVy
KiogbWF0Y2hlcyBhIF9zaW5nbGVfIGFyZ3VtZW50LiAgWW91IGNhbiB1c2UgaXQgaW5zaWRlCitg
T05fQ0FMTCgpYCBvciBgRVhQRUNUX0NBTEwoKWAsIG9yIHVzZSBpdCB0byB2YWxpZGF0ZSBhIHZh
bHVlCitkaXJlY3RseToKKworfCBgRVhQRUNUX1RIQVQodmFsdWUsIG1hdGNoZXIpYCB8IEFzc2Vy
dHMgdGhhdCBgdmFsdWVgIG1hdGNoZXMgYG1hdGNoZXJgLiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwK
K3wgYEFTU0VSVF9USEFUKHZhbHVlLCBtYXRjaGVyKWAgfCBUaGUgc2FtZSBhcyBgRVhQRUNUX1RI
QVQodmFsdWUsIG1hdGNoZXIpYCwgZXhjZXB0IHRoYXQgaXQgZ2VuZXJhdGVzIGEgKipmYXRhbCoq
IGZhaWx1cmUuIHwKKworQnVpbHQtaW4gbWF0Y2hlcnMgKHdoZXJlIGBhcmd1bWVudGAgaXMgdGhl
IGZ1bmN0aW9uIGFyZ3VtZW50KSBhcmUKK2RpdmlkZWQgaW50byBzZXZlcmFsIGNhdGVnb3JpZXM6
CisKKyMjIFdpbGRjYXJkICMjCit8YF9gfGBhcmd1bWVudGAgY2FuIGJlIGFueSB2YWx1ZSBvZiB0
aGUgY29ycmVjdCB0eXBlLnwKK3w6LS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tfAorfGBBPHR5cGU+KClgIG9yIGBBbjx0eXBlPigpYHxgYXJndW1lbnRg
IGNhbiBiZSBhbnkgdmFsdWUgb2YgdHlwZSBgdHlwZWAuICAgICB8CisKKyMjIEdlbmVyaWMgQ29t
cGFyaXNvbiAjIworCit8YEVxKHZhbHVlKWAgb3IgYHZhbHVlYHxgYXJndW1lbnQgPT0gdmFsdWVg
fAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLXwKK3xgR2UodmFs
dWUpYCAgICAgICAgICAgfGBhcmd1bWVudCA+PSB2YWx1ZWB8Cit8YEd0KHZhbHVlKWAgICAgICAg
ICAgIHxgYXJndW1lbnQgPiB2YWx1ZWAgfAorfGBMZSh2YWx1ZSlgICAgICAgICAgICB8YGFyZ3Vt
ZW50IDw9IHZhbHVlYHwKK3xgTHQodmFsdWUpYCAgICAgICAgICAgfGBhcmd1bWVudCA8IHZhbHVl
YCB8Cit8YE5lKHZhbHVlKWAgICAgICAgICAgIHxgYXJndW1lbnQgIT0gdmFsdWVgfAorfGBJc051
bGwoKWAgICAgICAgICAgICB8YGFyZ3VtZW50YCBpcyBhIGBOVUxMYCBwb2ludGVyIChyYXcgb3Ig
c21hcnQpLnwKK3xgTm90TnVsbCgpYCAgICAgICAgICAgfGBhcmd1bWVudGAgaXMgYSBub24tbnVs
bCBwb2ludGVyIChyYXcgb3Igc21hcnQpLnwKK3xgUmVmKHZhcmlhYmxlKWAgICAgICAgfGBhcmd1
bWVudGAgaXMgYSByZWZlcmVuY2UgdG8gYHZhcmlhYmxlYC58Cit8YFR5cGVkRXE8dHlwZT4odmFs
dWUpYHxgYXJndW1lbnRgIGhhcyB0eXBlIGB0eXBlYCBhbmQgaXMgZXF1YWwgdG8gYHZhbHVlYC4g
WW91IG1heSBuZWVkIHRvIHVzZSB0aGlzIGluc3RlYWQgb2YgYEVxKHZhbHVlKWAgd2hlbiB0aGUg
bW9jayBmdW5jdGlvbiBpcyBvdmVybG9hZGVkLnwKKworRXhjZXB0IGBSZWYoKWAsIHRoZXNlIG1h
dGNoZXJzIG1ha2UgYSBfY29weV8gb2YgYHZhbHVlYCBpbiBjYXNlIGl0J3MKK21vZGlmaWVkIG9y
IGRlc3RydWN0ZWQgbGF0ZXIuIElmIHRoZSBjb21waWxlciBjb21wbGFpbnMgdGhhdCBgdmFsdWVg
Citkb2Vzbid0IGhhdmUgYSBwdWJsaWMgY29weSBjb25zdHJ1Y3RvciwgdHJ5IHdyYXAgaXQgaW4g
YEJ5UmVmKClgLAorZS5nLiBgRXEoQnlSZWYobm9uX2NvcHlhYmxlX3ZhbHVlKSlgLiBJZiB5b3Ug
ZG8gdGhhdCwgbWFrZSBzdXJlCitgbm9uX2NvcHlhYmxlX3ZhbHVlYCBpcyBub3QgY2hhbmdlZCBh
ZnRlcndhcmRzLCBvciB0aGUgbWVhbmluZyBvZiB5b3VyCittYXRjaGVyIHdpbGwgYmUgY2hhbmdl
ZC4KKworIyMgRmxvYXRpbmctUG9pbnQgTWF0Y2hlcnMgIyMKKworfGBEb3VibGVFcShhX2RvdWJs
ZSlgfGBhcmd1bWVudGAgaXMgYSBgZG91YmxlYCB2YWx1ZSBhcHByb3hpbWF0ZWx5IGVxdWFsIHRv
IGBhX2RvdWJsZWAsIHRyZWF0aW5nIHR3byBOYU5zIGFzIHVuZXF1YWwufAorfDotLS0tLS0tLS0t
LS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorfGBGbG9h
dEVxKGFfZmxvYXQpYCAgfGBhcmd1bWVudGAgaXMgYSBgZmxvYXRgIHZhbHVlIGFwcHJveGltYXRl
bHkgZXF1YWwgdG8gYGFfZmxvYXRgLCB0cmVhdGluZyB0d28gTmFOcyBhcyB1bmVxdWFsLiAgfAor
fGBOYW5TZW5zaXRpdmVEb3VibGVFcShhX2RvdWJsZSlgfGBhcmd1bWVudGAgaXMgYSBgZG91Ymxl
YCB2YWx1ZSBhcHByb3hpbWF0ZWx5IGVxdWFsIHRvIGBhX2RvdWJsZWAsIHRyZWF0aW5nIHR3byBO
YU5zIGFzIGVxdWFsLiAgfAorfGBOYW5TZW5zaXRpdmVGbG9hdEVxKGFfZmxvYXQpYHxgYXJndW1l
bnRgIGlzIGEgYGZsb2F0YCB2YWx1ZSBhcHByb3hpbWF0ZWx5IGVxdWFsIHRvIGBhX2Zsb2F0YCwg
dHJlYXRpbmcgdHdvIE5hTnMgYXMgZXF1YWwuICAgIHwKKworVGhlc2UgbWF0Y2hlcnMgdXNlIFVM
UC1iYXNlZCBjb21wYXJpc29uICh0aGUgc2FtZSBhcyB1c2VkIGluCitbR29vZ2xlIFRlc3RdKGh0
dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0LykpLiBUaGV5CithdXRvbWF0aWNhbGx5
IHBpY2sgYSByZWFzb25hYmxlIGVycm9yIGJvdW5kIGJhc2VkIG9uIHRoZSBhYnNvbHV0ZQordmFs
dWUgb2YgdGhlIGV4cGVjdGVkIHZhbHVlLiAgYERvdWJsZUVxKClgIGFuZCBgRmxvYXRFcSgpYCBj
b25mb3JtIHRvCit0aGUgSUVFRSBzdGFuZGFyZCwgd2hpY2ggcmVxdWlyZXMgY29tcGFyaW5nIHR3
byBOYU5zIGZvciBlcXVhbGl0eSB0bworcmV0dXJuIGZhbHNlLiBUaGUgYE5hblNlbnNpdGl2ZSpg
IHZlcnNpb24gaW5zdGVhZCB0cmVhdHMgdHdvIE5hTnMgYXMKK2VxdWFsLCB3aGljaCBpcyBvZnRl
biB3aGF0IGEgdXNlciB3YW50cy4KKworIyMgU3RyaW5nIE1hdGNoZXJzICMjCisKK1RoZSBgYXJn
dW1lbnRgIGNhbiBiZSBlaXRoZXIgYSBDIHN0cmluZyBvciBhIEMrKyBzdHJpbmcgb2JqZWN0Ogor
Cit8YENvbnRhaW5zUmVnZXgoc3RyaW5nKWB8YGFyZ3VtZW50YCBtYXRjaGVzIHRoZSBnaXZlbiBy
ZWd1bGFyIGV4cHJlc3Npb24ufAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKK3xgRW5kc1dpdGgoc3VmZml4
KWAgICAgIHxgYXJndW1lbnRgIGVuZHMgd2l0aCBzdHJpbmcgYHN1ZmZpeGAuICAgICAgICAgICB8
Cit8YEhhc1N1YnN0cihzdHJpbmcpYCAgICB8YGFyZ3VtZW50YCBjb250YWlucyBgc3RyaW5nYCBh
cyBhIHN1Yi1zdHJpbmcuICAgfAorfGBNYXRjaGVzUmVnZXgoc3RyaW5nKWAgfGBhcmd1bWVudGAg
bWF0Y2hlcyB0aGUgZ2l2ZW4gcmVndWxhciBleHByZXNzaW9uIHdpdGggdGhlIG1hdGNoIHN0YXJ0
aW5nIGF0IHRoZSBmaXJzdCBjaGFyYWN0ZXIgYW5kIGVuZGluZyBhdCB0aGUgbGFzdCBjaGFyYWN0
ZXIufAorfGBTdGFydHNXaXRoKHByZWZpeClgICAgfGBhcmd1bWVudGAgc3RhcnRzIHdpdGggc3Ry
aW5nIGBwcmVmaXhgLiAgICAgICAgIHwKK3xgU3RyQ2FzZUVxKHN0cmluZylgICAgIHxgYXJndW1l
bnRgIGlzIGVxdWFsIHRvIGBzdHJpbmdgLCBpZ25vcmluZyBjYXNlLiB8Cit8YFN0ckNhc2VOZShz
dHJpbmcpYCAgICB8YGFyZ3VtZW50YCBpcyBub3QgZXF1YWwgdG8gYHN0cmluZ2AsIGlnbm9yaW5n
IGNhc2UufAorfGBTdHJFcShzdHJpbmcpYCAgICAgICAgfGBhcmd1bWVudGAgaXMgZXF1YWwgdG8g
YHN0cmluZ2AuICAgICAgICAgICAgICAgIHwKK3xgU3RyTmUoc3RyaW5nKWAgICAgICAgIHxgYXJn
dW1lbnRgIGlzIG5vdCBlcXVhbCB0byBgc3RyaW5nYC4gICAgICAgICAgICB8CisKK2BDb250YWlu
c1JlZ2V4KClgIGFuZCBgTWF0Y2hlc1JlZ2V4KClgIHVzZSB0aGUgcmVndWxhciBleHByZXNzaW9u
CitzeW50YXggZGVmaW5lZAorW2hlcmVdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0
ZXN0L3dpa2kvVjFfNl9BZHZhbmNlZEd1aWRlI1JlZ3VsYXJfRXhwcmVzc2lvbl9TeW50YXgpLgor
YFN0ckNhc2VFcSgpYCwgYFN0ckNhc2VOZSgpYCwgYFN0ckVxKClgLCBhbmQgYFN0ck5lKClgIHdv
cmsgZm9yIHdpZGUKK3N0cmluZ3MgYXMgd2VsbC4KKworIyMgQ29udGFpbmVyIE1hdGNoZXJzICMj
CisKK01vc3QgU1RMLXN0eWxlIGNvbnRhaW5lcnMgc3VwcG9ydCBgPT1gLCBzbyB5b3UgY2FuIHVz
ZQorYEVxKGV4cGVjdGVkX2NvbnRhaW5lcilgIG9yIHNpbXBseSBgZXhwZWN0ZWRfY29udGFpbmVy
YCB0byBtYXRjaCBhCitjb250YWluZXIgZXhhY3RseS4gICBJZiB5b3Ugd2FudCB0byB3cml0ZSB0
aGUgZWxlbWVudHMgaW4tbGluZSwKK21hdGNoIHRoZW0gbW9yZSBmbGV4aWJseSwgb3IgZ2V0IG1v
cmUgaW5mb3JtYXRpdmUgbWVzc2FnZXMsIHlvdSBjYW4gdXNlOgorCit8IGBDb250YWlucyhlKWAg
fCBgYXJndW1lbnRgIGNvbnRhaW5zIGFuIGVsZW1lbnQgdGhhdCBtYXRjaGVzIGBlYCwgd2hpY2gg
Y2FuIGJlIGVpdGhlciBhIHZhbHVlIG9yIGEgbWF0Y2hlci4gfAorfDotLS0tLS0tLS0tLS0tLXw6
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKK3wgYEVhY2goZSlgICAgICB8IGBh
cmd1bWVudGAgaXMgYSBjb250YWluZXIgd2hlcmUgX2V2ZXJ5XyBlbGVtZW50IG1hdGNoZXMgYGVg
LCB3aGljaCBjYW4gYmUgZWl0aGVyIGEgdmFsdWUgb3IgYSBtYXRjaGVyLiB8Cit8IGBFbGVtZW50
c0FyZShlMCwgZTEsIC4uLiwgZW4pYCB8IGBhcmd1bWVudGAgaGFzIGBuICsgMWAgZWxlbWVudHMs
IHdoZXJlIHRoZSBpLXRoIGVsZW1lbnQgbWF0Y2hlcyBgZWlgLCB3aGljaCBjYW4gYmUgYSB2YWx1
ZSBvciBhIG1hdGNoZXIuIDAgdG8gMTAgYXJndW1lbnRzIGFyZSBhbGxvd2VkLiB8Cit8IGBFbGVt
ZW50c0FyZUFycmF5KGFycmF5KWAgb3IgYEVsZW1lbnRzQXJlQXJyYXkoYXJyYXksIGNvdW50KWAg
fCBUaGUgc2FtZSBhcyBgRWxlbWVudHNBcmUoKWAgZXhjZXB0IHRoYXQgdGhlIGV4cGVjdGVkIGVs
ZW1lbnQgdmFsdWVzL21hdGNoZXJzIGNvbWUgZnJvbSBhIEMtc3R5bGUgYXJyYXkuIHwKK3wgYENv
bnRhaW5lckVxKGNvbnRhaW5lcilgIHwgVGhlIHNhbWUgYXMgYEVxKGNvbnRhaW5lcilgIGV4Y2Vw
dCB0aGF0IHRoZSBmYWlsdXJlIG1lc3NhZ2UgYWxzbyBpbmNsdWRlcyB3aGljaCBlbGVtZW50cyBh
cmUgaW4gb25lIGNvbnRhaW5lciBidXQgbm90IHRoZSBvdGhlci4gfAorfCBgUG9pbnR3aXNlKG0s
IGNvbnRhaW5lcilgIHwgYGFyZ3VtZW50YCBjb250YWlucyB0aGUgc2FtZSBudW1iZXIgb2YgZWxl
bWVudHMgYXMgaW4gYGNvbnRhaW5lcmAsIGFuZCBmb3IgYWxsIGksICh0aGUgaS10aCBlbGVtZW50
IGluIGBhcmd1bWVudGAsIHRoZSBpLXRoIGVsZW1lbnQgaW4gYGNvbnRhaW5lcmApIG1hdGNoIGBt
YCwgd2hpY2ggaXMgYSBtYXRjaGVyIG9uIDItdHVwbGVzLiBFLmcuIGBQb2ludHdpc2UoTGUoKSwg
dXBwZXJfYm91bmRzKWAgdmVyaWZpZXMgdGhhdCBlYWNoIGVsZW1lbnQgaW4gYGFyZ3VtZW50YCBk
b2Vzbid0IGV4Y2VlZCB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IGluIGB1cHBlcl9ib3VuZHNg
LiB8CisKK1RoZXNlIG1hdGNoZXJzIGNhbiBhbHNvIG1hdGNoOgorCisgIDEuIGEgbmF0aXZlIGFy
cmF5IHBhc3NlZCBieSByZWZlcmVuY2UgKGUuZy4gaW4gYEZvbyhjb25zdCBpbnQgKCZhKVs1XSlg
KSwgYW5kCisgIDEuIGFuIGFycmF5IHBhc3NlZCBhcyBhIHBvaW50ZXIgYW5kIGEgY291bnQgKGUu
Zy4gaW4gYEJhcihjb25zdCBUKiBidWZmZXIsIGludCBsZW4pYCAtLSBzZWUgW011bHRpLWFyZ3Vt
ZW50IE1hdGNoZXJzXSgjTXVsdGlhcmd1bWVudF9NYXRjaGVycy5tZCkpLgorCit3aGVyZSB0aGUg
YXJyYXkgbWF5IGJlIG11bHRpLWRpbWVuc2lvbmFsIChpLmUuIGl0cyBlbGVtZW50cyBjYW4gYmUg
YXJyYXlzKS4KKworIyMgTWVtYmVyIE1hdGNoZXJzICMjCisKK3xgRmllbGQoJmNsYXNzOjpmaWVs
ZCwgbSlgfGBhcmd1bWVudC5maWVsZGAgKG9yIGBhcmd1bWVudC0+ZmllbGRgIHdoZW4gYGFyZ3Vt
ZW50YCBpcyBhIHBsYWluIHBvaW50ZXIpIG1hdGNoZXMgbWF0Y2hlciBgbWAsIHdoZXJlIGBhcmd1
bWVudGAgaXMgYW4gb2JqZWN0IG9mIHR5cGUgX2NsYXNzXy58Cit8Oi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorfGBLZXkoZSlgICAgICAgICAg
ICAgICAgICB8YGFyZ3VtZW50LmZpcnN0YCBtYXRjaGVzIGBlYCwgd2hpY2ggY2FuIGJlIGVpdGhl
ciBhIHZhbHVlIG9yIGEgbWF0Y2hlci4gRS5nLiBgQ29udGFpbnMoS2V5KExlKDUpKSlgIGNhbiB2
ZXJpZnkgdGhhdCBhIGBtYXBgIGNvbnRhaW5zIGEga2V5IGA8PSA1YC58Cit8YFBhaXIobTEsIG0y
KWAgICAgICAgICAgIHxgYXJndW1lbnRgIGlzIGFuIGBzdGQ6OnBhaXJgIHdob3NlIGBmaXJzdGAg
ZmllbGQgbWF0Y2hlcyBgbTFgIGFuZCBgc2Vjb25kYCBmaWVsZCBtYXRjaGVzIGBtMmAuICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfGBQcm9wZXJ0eSgm
Y2xhc3M6OnByb3BlcnR5LCBtKWB8YGFyZ3VtZW50LnByb3BlcnR5KClgIChvciBgYXJndW1lbnQt
PnByb3BlcnR5KClgIHdoZW4gYGFyZ3VtZW50YCBpcyBhIHBsYWluIHBvaW50ZXIpIG1hdGNoZXMg
bWF0Y2hlciBgbWAsIHdoZXJlIGBhcmd1bWVudGAgaXMgYW4gb2JqZWN0IG9mIHR5cGUgX2NsYXNz
Xy58CisKKyMjIE1hdGNoaW5nIHRoZSBSZXN1bHQgb2YgYSBGdW5jdGlvbiBvciBGdW5jdG9yICMj
CisKK3xgUmVzdWx0T2YoZiwgbSlgfGBmKGFyZ3VtZW50KWAgbWF0Y2hlcyBtYXRjaGVyIGBtYCwg
d2hlcmUgYGZgIGlzIGEgZnVuY3Rpb24gb3IgZnVuY3Rvci58Cit8Oi0tLS0tLS0tLS0tLS0tLXw6
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tfAorCisjIyBQb2ludGVyIE1hdGNoZXJzICMjCisKK3xgUG9pbnRlZShtKWB8
YGFyZ3VtZW50YCAoZWl0aGVyIGEgc21hcnQgcG9pbnRlciBvciBhIHJhdyBwb2ludGVyKSBwb2lu
dHMgdG8gYSB2YWx1ZSB0aGF0IG1hdGNoZXMgbWF0Y2hlciBgbWAufAorfDotLS0tLS0tLS0tLXw6
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisKKyMjIE11bHRpYXJndW1l
bnQgTWF0Y2hlcnMgIyMKKworVGVjaG5pY2FsbHksIGFsbCBtYXRjaGVycyBtYXRjaCBhIF9zaW5n
bGVfIHZhbHVlLiBBICJtdWx0aS1hcmd1bWVudCIKK21hdGNoZXIgaXMganVzdCBvbmUgdGhhdCBt
YXRjaGVzIGEgX3R1cGxlXy4gVGhlIGZvbGxvd2luZyBtYXRjaGVycyBjYW4KK2JlIHVzZWQgdG8g
bWF0Y2ggYSB0dXBsZSBgKHgsIHkpYDoKKworfGBFcSgpYHxgeCA9PSB5YHwKK3w6LS0tLS18Oi0t
LS0tLS18Cit8YEdlKClgfGB4ID49IHlgfAorfGBHdCgpYHxgeCA+IHlgIHwKK3xgTGUoKWB8YHgg
PD0geWB8Cit8YEx0KClgfGB4IDwgeWAgfAorfGBOZSgpYHxgeCAhPSB5YHwKKworWW91IGNhbiB1
c2UgdGhlIGZvbGxvd2luZyBzZWxlY3RvcnMgdG8gcGljayBhIHN1YnNldCBvZiB0aGUgYXJndW1l
bnRzCisob3IgcmVvcmRlciB0aGVtKSB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgbWF0Y2hpbmc6CisK
K3xgQWxsQXJncyhtKWB8RXF1aXZhbGVudCB0byBgbWAuIFVzZWZ1bCBhcyBzeW50YWN0aWMgc3Vn
YXIgaW4gYC5XaXRoKEFsbEFyZ3MobSkpYC58Cit8Oi0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAor
fGBBcmdzPE4xLCBOMiwgLi4uLCBOaz4obSlgfFRoZSB0dXBsZSBvZiB0aGUgYGtgIHNlbGVjdGVk
ICh1c2luZyAwLWJhc2VkIGluZGljZXMpIGFyZ3VtZW50cyBtYXRjaGVzIGBtYCwgZS5nLiBgQXJn
czwxLCAyPihFcSgpKWAufAorCisjIyBDb21wb3NpdGUgTWF0Y2hlcnMgIyMKKworWW91IGNhbiBt
YWtlIGEgbWF0Y2hlciBmcm9tIG9uZSBvciBtb3JlIG90aGVyIG1hdGNoZXJzOgorCit8YEFsbE9m
KG0xLCBtMiwgLi4uLCBtbilgfGBhcmd1bWVudGAgbWF0Y2hlcyBhbGwgb2YgdGhlIG1hdGNoZXJz
IGBtMWAgdG8gYG1uYC58Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Cit8YEFueU9mKG0xLCBtMiwg
Li4uLCBtbilgfGBhcmd1bWVudGAgbWF0Y2hlcyBhdCBsZWFzdCBvbmUgb2YgdGhlIG1hdGNoZXJz
IGBtMWAgdG8gYG1uYC58Cit8YE5vdChtKWAgICAgICAgICAgICAgICAgfGBhcmd1bWVudGAgZG9l
c24ndCBtYXRjaCBtYXRjaGVyIGBtYC4gICAgICAgICAgICAgICB8CisKKyMjIEFkYXB0ZXJzIGZv
ciBNYXRjaGVycyAjIworCit8YE1hdGNoZXJDYXN0PFQ+KG0pYHxjYXN0cyBtYXRjaGVyIGBtYCB0
byB0eXBlIGBNYXRjaGVyPFQ+YC58Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Cit8YFNhZmVNYXRjaGVyQ2FzdDxUPihtKWB8IFtz
YWZlbHkgY2FzdHNdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGVtb2NrL3dpa2kvVjFf
Nl9Db29rQm9vayNDYXN0aW5nX01hdGNoZXJzKSBtYXRjaGVyIGBtYCB0byB0eXBlIGBNYXRjaGVy
PFQ+YC4gfAorfGBUcnVseShwcmVkaWNhdGUpYCB8YHByZWRpY2F0ZShhcmd1bWVudClgIHJldHVy
bnMgc29tZXRoaW5nIGNvbnNpZGVyZWQgYnkgQysrIHRvIGJlIHRydWUsIHdoZXJlIGBwcmVkaWNh
dGVgIGlzIGEgZnVuY3Rpb24gb3IgZnVuY3Rvci58CisKKyMjIE1hdGNoZXJzIGFzIFByZWRpY2F0
ZXMgIyMKKworfGBNYXRjaGVzKG0pKHZhbHVlKWB8ZXZhbHVhdGVzIHRvIGB0cnVlYCBpZiBgdmFs
dWVgIG1hdGNoZXMgYG1gLiBZb3UgY2FuIHVzZSBgTWF0Y2hlcyhtKWAgYWxvbmUgYXMgYSB1bmFy
eSBmdW5jdG9yLnwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS18Cit8YEV4cGxhaW5NYXRjaFJlc3VsdChtLCB2YWx1ZSwgcmVzdWx0X2xp
c3RlbmVyKWB8ZXZhbHVhdGVzIHRvIGB0cnVlYCBpZiBgdmFsdWVgIG1hdGNoZXMgYG1gLCBleHBs
YWluaW5nIHRoZSByZXN1bHQgdG8gYHJlc3VsdF9saXN0ZW5lcmAuICAgICAgIHwKK3xgVmFsdWUo
dmFsdWUsIG0pYCAgfGV2YWx1YXRlcyB0byBgdHJ1ZWAgaWYgYHZhbHVlYCBtYXRjaGVzIGBtYC4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisKKyMj
IERlZmluaW5nIE1hdGNoZXJzICMjCisKK3wgYE1BVENIRVIoSXNFdmVuLCAiIikgeyByZXR1cm4g
KGFyZyAlIDIpID09IDA7IH1gIHwgRGVmaW5lcyBhIG1hdGNoZXIgYElzRXZlbigpYCB0byBtYXRj
aCBhbiBldmVuIG51bWJlci4gfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS18Cit8IGBNQVRDSEVSX1AoSXNEaXZpc2libGVCeSwgbiwgIiIpIHsgKnJl
c3VsdF9saXN0ZW5lciA8PCAid2hlcmUgdGhlIHJlbWFpbmRlciBpcyAiIDw8IChhcmcgJSBuKTsg
cmV0dXJuIChhcmcgJSBuKSA9PSAwOyB9YCB8IERlZmluZXMgYSBtYWNoZXIgYElzRGl2aXNpYmxl
QnkobilgIHRvIG1hdGNoIGEgbnVtYmVyIGRpdmlzaWJsZSBieSBgbmAuIHwKK3wgYE1BVENIRVJf
UDIoSXNCZXR3ZWVuLCBhLCBiLCBzdGQ6OnN0cmluZyhuZWdhdGlvbiA/ICJpc24ndCIgOiAiaXMi
KSArICIgYmV0d2VlbiAiICsgUHJpbnRUb1N0cmluZyhhKSArICIgYW5kICIgKyBQcmludFRvU3Ry
aW5nKGIpKSB7IHJldHVybiBhIDw9IGFyZyAmJiBhcmcgPD0gYjsgfWAgfCBEZWZpbmVzIGEgbWF0
Y2hlciBgSXNCZXR3ZWVuKGEsIGIpYCB0byBtYXRjaCBhIHZhbHVlIGluIHRoZSByYW5nZSBbYGFg
LCBgYmBdLiB8CisKKyoqTm90ZXM6KioKKworICAxLiBUaGUgYE1BVENIRVIqYCBtYWNyb3MgY2Fu
bm90IGJlIHVzZWQgaW5zaWRlIGEgZnVuY3Rpb24gb3IgY2xhc3MuCisgIDEuIFRoZSBtYXRjaGVy
IGJvZHkgbXVzdCBiZSBfcHVyZWx5IGZ1bmN0aW9uYWxfIChpLmUuIGl0IGNhbm5vdCBoYXZlIGFu
eSBzaWRlIGVmZmVjdCwgYW5kIHRoZSByZXN1bHQgbXVzdCBub3QgZGVwZW5kIG9uIGFueXRoaW5n
IG90aGVyIHRoYW4gdGhlIHZhbHVlIGJlaW5nIG1hdGNoZWQgYW5kIHRoZSBtYXRjaGVyIHBhcmFt
ZXRlcnMpLgorICAxLiBZb3UgY2FuIHVzZSBgUHJpbnRUb1N0cmluZyh4KWAgdG8gY29udmVydCBh
IHZhbHVlIGB4YCBvZiBhbnkgdHlwZSB0byBhIHN0cmluZy4KKworIyMgTWF0Y2hlcnMgYXMgVGVz
dCBBc3NlcnRpb25zICMjCisKK3xgQVNTRVJUX1RIQVQoZXhwcmVzc2lvbiwgbSlgfEdlbmVyYXRl
cyBhIFtmYXRhbCBmYWlsdXJlXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC93
aWtpL1YxXzZfUHJpbWVyI0Fzc2VydGlvbnMpIGlmIHRoZSB2YWx1ZSBvZiBgZXhwcmVzc2lvbmAg
ZG9lc24ndCBtYXRjaCBtYXRjaGVyIGBtYC58Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorfGBFWFBFQ1RfVEhBVChleHBy
ZXNzaW9uLCBtKWB8R2VuZXJhdGVzIGEgbm9uLWZhdGFsIGZhaWx1cmUgaWYgdGhlIHZhbHVlIG9m
IGBleHByZXNzaW9uYCBkb2Vzbid0IG1hdGNoIG1hdGNoZXIgYG1gLiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKworIyBBY3Rp
b25zICMKKworKipBY3Rpb25zKiogc3BlY2lmeSB3aGF0IGEgbW9jayBmdW5jdGlvbiBzaG91bGQg
ZG8gd2hlbiBpbnZva2VkLgorCisjIyBSZXR1cm5pbmcgYSBWYWx1ZSAjIworCit8YFJldHVybigp
YHxSZXR1cm4gZnJvbSBhIGB2b2lkYCBtb2NrIGZ1bmN0aW9uLnwKK3w6LS0tLS0tLS0tfDotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorfGBSZXR1cm4odmFsdWUpYHxSZXR1cm4g
YHZhbHVlYC4gSWYgdGhlIHR5cGUgb2YgYHZhbHVlYCBpcyBkaWZmZXJlbnQgdG8gdGhlIG1vY2sg
ZnVuY3Rpb24ncyByZXR1cm4gdHlwZSwgYHZhbHVlYCBpcyBjb252ZXJ0ZWQgdG8gdGhlIGxhdHRl
ciB0eXBlIDxpPmF0IHRoZSB0aW1lIHRoZSBleHBlY3RhdGlvbiBpcyBzZXQ8L2k+LCBub3Qgd2hl
biB0aGUgYWN0aW9uIGlzIGV4ZWN1dGVkLnwKK3xgUmV0dXJuQXJnPE4+KClgfFJldHVybiB0aGUg
YE5gLXRoICgwLWJhc2VkKSBhcmd1bWVudC58Cit8YFJldHVybk5ldzxUPihhMSwgLi4uLCBhaylg
fFJldHVybiBgbmV3IFQoYTEsIC4uLiwgYWspYDsgYSBkaWZmZXJlbnQgb2JqZWN0IGlzIGNyZWF0
ZWQgZWFjaCB0aW1lLnwKK3xgUmV0dXJuTnVsbCgpYHxSZXR1cm4gYSBudWxsIHBvaW50ZXIuICAg
ICAgICAgICAgIHwKK3xgUmV0dXJuUG9pbnRlZShwdHIpYHxSZXR1cm4gdGhlIHZhbHVlIHBvaW50
ZWQgdG8gYnkgYHB0cmAufAorfGBSZXR1cm5SZWYodmFyaWFibGUpYHxSZXR1cm4gYSByZWZlcmVu
Y2UgdG8gYHZhcmlhYmxlYC4gIHwKK3xgUmV0dXJuUmVmT2ZDb3B5KHZhbHVlKWB8UmV0dXJuIGEg
cmVmZXJlbmNlIHRvIGEgY29weSBvZiBgdmFsdWVgOyB0aGUgY29weSBsaXZlcyBhcyBsb25nIGFz
IHRoZSBhY3Rpb24ufAorCisjIyBTaWRlIEVmZmVjdHMgIyMKKworfGBBc3NpZ24oJnZhcmlhYmxl
LCB2YWx1ZSlgfEFzc2lnbiBgdmFsdWVgIHRvIHZhcmlhYmxlLnwKK3w6LS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Cit8IGBEZWxldGVBcmc8Tj4o
KWAgICAgICAgICB8IERlbGV0ZSB0aGUgYE5gLXRoICgwLWJhc2VkKSBhcmd1bWVudCwgd2hpY2gg
bXVzdCBiZSBhIHBvaW50ZXIuIHwKK3wgYFNhdmVBcmc8Tj4ocG9pbnRlcilgICAgIHwgU2F2ZSB0
aGUgYE5gLXRoICgwLWJhc2VkKSBhcmd1bWVudCB0byBgKnBvaW50ZXJgLiB8Cit8IGBTYXZlQXJn
UG9pbnRlZTxOPihwb2ludGVyKWAgfCBTYXZlIHRoZSB2YWx1ZSBwb2ludGVkIHRvIGJ5IHRoZSBg
TmAtdGggKDAtYmFzZWQpIGFyZ3VtZW50IHRvIGAqcG9pbnRlcmAuIHwKK3wgYFNldEFyZ1JlZmVy
ZWU8Tj4odmFsdWUpYCB8CUFzc2lnbiB2YWx1ZSB0byB0aGUgdmFyaWFibGUgcmVmZXJlbmNlZCBi
eSB0aGUgYE5gLXRoICgwLWJhc2VkKSBhcmd1bWVudC4gfAorfGBTZXRBcmdQb2ludGVlPE4+KHZh
bHVlKWAgfEFzc2lnbiBgdmFsdWVgIHRvIHRoZSB2YXJpYWJsZSBwb2ludGVkIGJ5IHRoZSBgTmAt
dGggKDAtYmFzZWQpIGFyZ3VtZW50LnwKK3xgU2V0QXJndW1lbnRQb2ludGVlPE4+KHZhbHVlKWB8
U2FtZSBhcyBgU2V0QXJnUG9pbnRlZTxOPih2YWx1ZSlgLiBEZXByZWNhdGVkLiBXaWxsIGJlIHJl
bW92ZWQgaW4gdjEuNy4wLnwKK3xgU2V0QXJyYXlBcmd1bWVudDxOPihmaXJzdCwgbGFzdClgfENv
cGllcyB0aGUgZWxlbWVudHMgaW4gc291cmNlIHJhbmdlIFtgZmlyc3RgLCBgbGFzdGApIHRvIHRo
ZSBhcnJheSBwb2ludGVkIHRvIGJ5IHRoZSBgTmAtdGggKDAtYmFzZWQpIGFyZ3VtZW50LCB3aGlj
aCBjYW4gYmUgZWl0aGVyIGEgcG9pbnRlciBvciBhbiBpdGVyYXRvci4gVGhlIGFjdGlvbiBkb2Vz
IG5vdCB0YWtlIG93bmVyc2hpcCBvZiB0aGUgZWxlbWVudHMgaW4gdGhlIHNvdXJjZSByYW5nZS58
Cit8YFNldEVycm5vQW5kUmV0dXJuKGVycm9yLCB2YWx1ZSlgfFNldCBgZXJybm9gIHRvIGBlcnJv
cmAgYW5kIHJldHVybiBgdmFsdWVgLnwKK3xgVGhyb3coZXhjZXB0aW9uKWAgICAgICAgIHxUaHJv
d3MgdGhlIGdpdmVuIGV4Y2VwdGlvbiwgd2hpY2ggY2FuIGJlIGFueSBjb3B5YWJsZSB2YWx1ZS4g
QXZhaWxhYmxlIHNpbmNlIHYxLjEuMC58CisKKyMjIFVzaW5nIGEgRnVuY3Rpb24gb3IgYSBGdW5j
dG9yIGFzIGFuIEFjdGlvbiAjIworCit8YEludm9rZShmKWB8SW52b2tlIGBmYCB3aXRoIHRoZSBh
cmd1bWVudHMgcGFzc2VkIHRvIHRoZSBtb2NrIGZ1bmN0aW9uLCB3aGVyZSBgZmAgY2FuIGJlIGEg
Z2xvYmFsL3N0YXRpYyBmdW5jdGlvbiBvciBhIGZ1bmN0b3IufAorfDotLS0tLS0tLS0tfDotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKK3xg
SW52b2tlKG9iamVjdF9wb2ludGVyLCAmY2xhc3M6Om1ldGhvZClgfEludm9rZSB0aGUge21ldGhv
ZCBvbiB0aGUgb2JqZWN0IHdpdGggdGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIG1vY2sgZnVu
Y3Rpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3xgSW52b2tlV2l0aG91
dEFyZ3MoZilgfEludm9rZSBgZmAsIHdoaWNoIGNhbiBiZSBhIGdsb2JhbC9zdGF0aWMgZnVuY3Rp
b24gb3IgYSBmdW5jdG9yLiBgZmAgbXVzdCB0YWtlIG5vIGFyZ3VtZW50cy4gICAgICAgICAgICAg
ICAgICAgICAgIHwKK3xgSW52b2tlV2l0aG91dEFyZ3Mob2JqZWN0X3BvaW50ZXIsICZjbGFzczo6
bWV0aG9kKWB8SW52b2tlIHRoZSBtZXRob2Qgb24gdGhlIG9iamVjdCwgd2hpY2ggdGFrZXMgbm8g
YXJndW1lbnRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAorfGBJbnZva2VBcmd1bWVudDxOPihhcmcxLCBhcmcyLCAuLi4sIGFyZ2spYHxJ
bnZva2UgdGhlIG1vY2sgZnVuY3Rpb24ncyBgTmAtdGggKDAtYmFzZWQpIGFyZ3VtZW50LCB3aGlj
aCBtdXN0IGJlIGEgZnVuY3Rpb24gb3IgYSBmdW5jdG9yLCB3aXRoIHRoZSBga2AgYXJndW1lbnRz
LnwKKworVGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgaW52b2tlZCBmdW5jdGlvbiBpcyB1c2VkIGFz
IHRoZSByZXR1cm4gdmFsdWUKK29mIHRoZSBhY3Rpb24uCisKK1doZW4gZGVmaW5pbmcgYSBmdW5j
dGlvbiBvciBmdW5jdG9yIHRvIGJlIHVzZWQgd2l0aCBgSW52b2tlKigpYCwgeW91IGNhbiBkZWNs
YXJlIGFueSB1bnVzZWQgcGFyYW1ldGVycyBhcyBgVW51c2VkYDoKK2BgYAorICBkb3VibGUgRGlz
dGFuY2UoVW51c2VkLCBkb3VibGUgeCwgZG91YmxlIHkpIHsgcmV0dXJuIHNxcnQoeCp4ICsgeSp5
KTsgfQorICAuLi4KKyAgRVhQRUNUX0NBTEwobW9jaywgRm9vKCJIaSIsIF8sIF8pKS5XaWxsT25j
ZShJbnZva2UoRGlzdGFuY2UpKTsKK2BgYAorCitJbiBgSW52b2tlQXJndW1lbnQ8Tj4oLi4uKWAs
IGlmIGFuIGFyZ3VtZW50IG5lZWRzIHRvIGJlIHBhc3NlZCBieSByZWZlcmVuY2UsIHdyYXAgaXQg
aW5zaWRlIGBCeVJlZigpYC4gRm9yIGV4YW1wbGUsCitgYGAKKyAgSW52b2tlQXJndW1lbnQ8Mj4o
NSwgc3RyaW5nKCJIaSIpLCBCeVJlZihmb28pKQorYGBgCitjYWxscyB0aGUgbW9jayBmdW5jdGlv
bidzICMyIGFyZ3VtZW50LCBwYXNzaW5nIHRvIGl0IGA1YCBhbmQgYHN0cmluZygiSGkiKWAgYnkg
dmFsdWUsIGFuZCBgZm9vYCBieSByZWZlcmVuY2UuCisKKyMjIERlZmF1bHQgQWN0aW9uICMjCisK
K3xgRG9EZWZhdWx0KClgfERvIHRoZSBkZWZhdWx0IGFjdGlvbiAoc3BlY2lmaWVkIGJ5IGBPTl9D
QUxMKClgIG9yIHRoZSBidWlsdC1pbiBvbmUpLnwKK3w6LS0tLS0tLS0tLS0tfDotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LXwKKworKipOb3RlOioqIGR1ZSB0byB0ZWNobmljYWwgcmVhc29ucywgYERvRGVmYXVsdCgpYCBj
YW5ub3QgYmUgdXNlZCBpbnNpZGUgIGEgY29tcG9zaXRlIGFjdGlvbiAtIHRyeWluZyB0byBkbyBz
byB3aWxsIHJlc3VsdCBpbiBhIHJ1bi10aW1lIGVycm9yLgorCisjIyBDb21wb3NpdGUgQWN0aW9u
cyAjIworCit8YERvQWxsKGExLCBhMiwgLi4uLCBhbilgfERvIGFsbCBhY3Rpb25zIGBhMWAgdG8g
YGFuYCBhbmQgcmV0dXJuIHRoZSByZXN1bHQgb2YgYGFuYCBpbiBlYWNoIGludm9jYXRpb24uIFRo
ZSBmaXJzdCBgbiAtIDFgIHN1Yi1hY3Rpb25zIG11c3QgcmV0dXJuIHZvaWQuIHwKK3w6LS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorfGBJZ25vcmVSZXN1bHQoYSlgICAgICAg
IHxQZXJmb3JtIGFjdGlvbiBgYWAgYW5kIGlnbm9yZSBpdHMgcmVzdWx0LiBgYWAgbXVzdCBub3Qg
cmV0dXJuIHZvaWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8Cit8YFdpdGhBcmc8Tj4oYSlgICAgICAgICAgfFBhc3MgdGhlIGBOYC10
aCAoMC1iYXNlZCkgYXJndW1lbnQgb2YgdGhlIG1vY2sgZnVuY3Rpb24gdG8gYWN0aW9uIGBhYCBh
bmQgcGVyZm9ybSBpdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK
K3xgV2l0aEFyZ3M8TjEsIE4yLCAuLi4sIE5rPihhKWB8UGFzcyB0aGUgc2VsZWN0ZWQgKDAtYmFz
ZWQpIGFyZ3VtZW50cyBvZiB0aGUgbW9jayBmdW5jdGlvbiB0byBhY3Rpb24gYGFgIGFuZCBwZXJm
b3JtIGl0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfGBXaXRob3V0
QXJncyhhKWAgICAgICAgIHxQZXJmb3JtIGFjdGlvbiBgYWAgd2l0aG91dCBhbnkgYXJndW1lbnRz
LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisKKyMjIERlZmluaW5nIEFjdGlvbnMgIyMK
KworfCBgQUNUSU9OKFN1bSkgeyByZXR1cm4gYXJnMCArIGFyZzE7IH1gIHwgRGVmaW5lcyBhbiBh
Y3Rpb24gYFN1bSgpYCB0byByZXR1cm4gdGhlIHN1bSBvZiB0aGUgbW9jayBmdW5jdGlvbidzIGFy
Z3VtZW50ICMwIGFuZCAjMS4gfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorfCBgQUNUSU9OX1AoUGx1cywg
bikgeyByZXR1cm4gYXJnMCArIG47IH1gIHwgRGVmaW5lcyBhbiBhY3Rpb24gYFBsdXMobilgIHRv
IHJldHVybiB0aGUgc3VtIG9mIHRoZSBtb2NrIGZ1bmN0aW9uJ3MgYXJndW1lbnQgIzAgYW5kIGBu
YC4gfAorfCBgQUNUSU9OX1BrKEZvbywgcDEsIC4uLiwgcGspIHsgc3RhdGVtZW50czsgfWAgfCBE
ZWZpbmVzIGEgcGFyYW1ldGVyaXplZCBhY3Rpb24gYEZvbyhwMSwgLi4uLCBwaylgIHRvIGV4ZWN1
dGUgdGhlIGdpdmVuIGBzdGF0ZW1lbnRzYC4gICB8CisKK1RoZSBgQUNUSU9OKmAgbWFjcm9zIGNh
bm5vdCBiZSB1c2VkIGluc2lkZSBhIGZ1bmN0aW9uIG9yIGNsYXNzLgorCisjIENhcmRpbmFsaXRp
ZXMgIworCitUaGVzZSBhcmUgdXNlZCBpbiBgVGltZXMoKWAgdG8gc3BlY2lmeSBob3cgbWFueSB0
aW1lcyBhIG1vY2sgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQ6CisKK3xgQW55TnVtYmVyKClgfFRo
ZSBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIGFueSBudW1iZXIgb2YgdGltZXMufAorfDotLS0tLS0t
LS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Cit8
YEF0TGVhc3QobilgIHxUaGUgY2FsbCBpcyBleHBlY3RlZCBhdCBsZWFzdCBgbmAgdGltZXMuICAg
ICAgIHwKK3xgQXRNb3N0KG4pYCAgfFRoZSBjYWxsIGlzIGV4cGVjdGVkIGF0IG1vc3QgYG5gIHRp
bWVzLiAgICAgICAgfAorfGBCZXR3ZWVuKG0sIG4pYHxUaGUgY2FsbCBpcyBleHBlY3RlZCBiZXR3
ZWVuIGBtYCBhbmQgYG5gIChpbmNsdXNpdmUpIHRpbWVzLnwKK3xgRXhhY3RseShuKSBvciBuYHxU
aGUgY2FsbCBpcyBleHBlY3RlZCBleGFjdGx5IGBuYCB0aW1lcy4gSW4gcGFydGljdWxhciwgdGhl
IGNhbGwgc2hvdWxkIG5ldmVyIGhhcHBlbiB3aGVuIGBuYCBpcyAwLnwKKworIyBFeHBlY3RhdGlv
biBPcmRlciAjCisKK0J5IGRlZmF1bHQsIHRoZSBleHBlY3RhdGlvbnMgY2FuIGJlIG1hdGNoZWQg
aW4gX2FueV8gb3JkZXIuICBJZiBzb21lCitvciBhbGwgZXhwZWN0YXRpb25zIG11c3QgYmUgbWF0
Y2hlZCBpbiBhIGdpdmVuIG9yZGVyLCB0aGVyZSBhcmUgdHdvCit3YXlzIHRvIHNwZWNpZnkgaXQu
ICBUaGV5IGNhbiBiZSB1c2VkIGVpdGhlciBpbmRlcGVuZGVudGx5IG9yCit0b2dldGhlci4KKwor
IyMgVGhlIEFmdGVyIENsYXVzZSAjIworCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6RXhwZWN0YXRp
b247CisuLi4KK0V4cGVjdGF0aW9uIGluaXRfeCA9IEVYUEVDVF9DQUxMKGZvbywgSW5pdFgoKSk7
CitFeHBlY3RhdGlvbiBpbml0X3kgPSBFWFBFQ1RfQ0FMTChmb28sIEluaXRZKCkpOworRVhQRUNU
X0NBTEwoZm9vLCBCYXIoKSkKKyAgICAuQWZ0ZXIoaW5pdF94LCBpbml0X3kpOworYGBgCitzYXlz
IHRoYXQgYEJhcigpYCBjYW4gYmUgY2FsbGVkIG9ubHkgYWZ0ZXIgYm90aCBgSW5pdFgoKWAgYW5k
CitgSW5pdFkoKWAgaGF2ZSBiZWVuIGNhbGxlZC4KKworSWYgeW91IGRvbid0IGtub3cgaG93IG1h
bnkgcHJlLXJlcXVpc2l0ZXMgYW4gZXhwZWN0YXRpb24gaGFzIHdoZW4geW91Cit3cml0ZSBpdCwg
eW91IGNhbiB1c2UgYW4gYEV4cGVjdGF0aW9uU2V0YCB0byBjb2xsZWN0IHRoZW06CisKK2BgYAor
dXNpbmcgOjp0ZXN0aW5nOjpFeHBlY3RhdGlvblNldDsKKy4uLgorRXhwZWN0YXRpb25TZXQgYWxs
X2luaXRzOworZm9yIChpbnQgaSA9IDA7IGkgPCBlbGVtZW50X2NvdW50OyBpKyspIHsKKyAgYWxs
X2luaXRzICs9IEVYUEVDVF9DQUxMKGZvbywgSW5pdEVsZW1lbnQoaSkpOworfQorRVhQRUNUX0NB
TEwoZm9vLCBCYXIoKSkKKyAgICAuQWZ0ZXIoYWxsX2luaXRzKTsKK2BgYAorc2F5cyB0aGF0IGBC
YXIoKWAgY2FuIGJlIGNhbGxlZCBvbmx5IGFmdGVyIGFsbCBlbGVtZW50cyBoYXZlIGJlZW4KK2lu
aXRpYWxpemVkIChidXQgd2UgZG9uJ3QgY2FyZSBhYm91dCB3aGljaCBlbGVtZW50cyBnZXQgaW5p
dGlhbGl6ZWQKK2JlZm9yZSB0aGUgb3RoZXJzKS4KKworTW9kaWZ5aW5nIGFuIGBFeHBlY3RhdGlv
blNldGAgYWZ0ZXIgdXNpbmcgaXQgaW4gYW4gYC5BZnRlcigpYCBkb2Vzbid0CithZmZlY3QgdGhl
IG1lYW5pbmcgb2YgdGhlIGAuQWZ0ZXIoKWAuCisKKyMjIFNlcXVlbmNlcyAjIworCitXaGVuIHlv
dSBoYXZlIGEgbG9uZyBjaGFpbiBvZiBzZXF1ZW50aWFsIGV4cGVjdGF0aW9ucywgaXQncyBlYXNp
ZXIgdG8KK3NwZWNpZnkgdGhlIG9yZGVyIHVzaW5nICoqc2VxdWVuY2VzKiosIHdoaWNoIGRvbid0
IHJlcXVpcmUgeW91IHRvIGdpdmVuCitlYWNoIGV4cGVjdGF0aW9uIGluIHRoZSBjaGFpbiBhIGRp
ZmZlcmVudCBuYW1lLiAgPGk+QWxsIGV4cGVjdGVkPGJyPgorY2FsbHM8L2k+IGluIHRoZSBzYW1l
IHNlcXVlbmNlIG11c3Qgb2NjdXIgaW4gdGhlIG9yZGVyIHRoZXkgYXJlCitzcGVjaWZpZWQuCisK
K2BgYAordXNpbmcgOjp0ZXN0aW5nOjpTZXF1ZW5jZTsKK1NlcXVlbmNlIHMxLCBzMjsKKy4uLgor
RVhQRUNUX0NBTEwoZm9vLCBSZXNldCgpKQorICAgIC5JblNlcXVlbmNlKHMxLCBzMikKKyAgICAu
V2lsbE9uY2UoUmV0dXJuKHRydWUpKTsKK0VYUEVDVF9DQUxMKGZvbywgR2V0U2l6ZSgpKQorICAg
IC5JblNlcXVlbmNlKHMxKQorICAgIC5XaWxsT25jZShSZXR1cm4oMSkpOworRVhQRUNUX0NBTEwo
Zm9vLCBEZXNjcmliZShBPGNvbnN0IGNoYXIqPigpKSkKKyAgICAuSW5TZXF1ZW5jZShzMikKKyAg
ICAuV2lsbE9uY2UoUmV0dXJuKCJkdW1teSIpKTsKK2BgYAorc2F5cyB0aGF0IGBSZXNldCgpYCBt
dXN0IGJlIGNhbGxlZCBiZWZvcmUgX2JvdGhfIGBHZXRTaXplKClgIF9hbmRfCitgRGVzY3JpYmUo
KWAsIGFuZCB0aGUgbGF0dGVyIHR3byBjYW4gb2NjdXIgaW4gYW55IG9yZGVyLgorCitUbyBwdXQg
bWFueSBleHBlY3RhdGlvbnMgaW4gYSBzZXF1ZW5jZSBjb252ZW5pZW50bHk6CitgYGAKK3VzaW5n
IDo6dGVzdGluZzo6SW5TZXF1ZW5jZTsKK3sKKyAgSW5TZXF1ZW5jZSBkdW1teTsKKworICBFWFBF
Q1RfQ0FMTCguLi4pLi4uOworICBFWFBFQ1RfQ0FMTCguLi4pLi4uOworICAuLi4KKyAgRVhQRUNU
X0NBTEwoLi4uKS4uLjsKK30KK2BgYAorc2F5cyB0aGF0IGFsbCBleHBlY3RlZCBjYWxscyBpbiB0
aGUgc2NvcGUgb2YgYGR1bW15YCBtdXN0IG9jY3VyIGluCitzdHJpY3Qgb3JkZXIuIFRoZSBuYW1l
IGBkdW1teWAgaXMgaXJyZWxldmFudC4pCisKKyMgVmVyaWZ5aW5nIGFuZCBSZXNldHRpbmcgYSBN
b2NrICMKKworR29vZ2xlIE1vY2sgd2lsbCB2ZXJpZnkgdGhlIGV4cGVjdGF0aW9ucyBvbiBhIG1v
Y2sgb2JqZWN0IHdoZW4gaXQgaXMgZGVzdHJ1Y3RlZCwgb3IgeW91IGNhbiBkbyBpdCBlYXJsaWVy
OgorYGBgCit1c2luZyA6OnRlc3Rpbmc6Ok1vY2s7CisuLi4KKy8vIFZlcmlmaWVzIGFuZCByZW1v
dmVzIHRoZSBleHBlY3RhdGlvbnMgb24gbW9ja19vYmo7CisvLyByZXR1cm5zIHRydWUgaWZmIHN1
Y2Nlc3NmdWwuCitNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbW9ja19vYmopOwor
Li4uCisvLyBWZXJpZmllcyBhbmQgcmVtb3ZlcyB0aGUgZXhwZWN0YXRpb25zIG9uIG1vY2tfb2Jq
OworLy8gYWxzbyByZW1vdmVzIHRoZSBkZWZhdWx0IGFjdGlvbnMgc2V0IGJ5IE9OX0NBTEwoKTsK
Ky8vIHJldHVybnMgdHJ1ZSBpZmYgc3VjY2Vzc2Z1bC4KK01vY2s6OlZlcmlmeUFuZENsZWFyKCZt
b2NrX29iaik7CitgYGAKKworWW91IGNhbiBhbHNvIHRlbGwgR29vZ2xlIE1vY2sgdGhhdCBhIG1v
Y2sgb2JqZWN0IGNhbiBiZSBsZWFrZWQgYW5kIGRvZXNuJ3QKK25lZWQgdG8gYmUgdmVyaWZpZWQ6
CitgYGAKK01vY2s6OkFsbG93TGVhaygmbW9ja19vYmopOworYGBgCisKKyMgTW9jayBDbGFzc2Vz
ICMKKworR29vZ2xlIE1vY2sgZGVmaW5lcyBhIGNvbnZlbmllbnQgbW9jayBjbGFzcyB0ZW1wbGF0
ZQorYGBgCitjbGFzcyBNb2NrRnVuY3Rpb248UihBMSwgLi4uLCBBbik+IHsKKyBwdWJsaWM6Cisg
IE1PQ0tfTUVUSE9EbihDYWxsLCBSKEExLCAuLi4sIEFuKSk7Cit9OworYGBgCitTZWUgdGhpcyBb
cmVjaXBlXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9jay93aWtpL1YxXzZfQ29v
a0Jvb2sjVXNpbmdfQ2hlY2tfUG9pbnRzKSBmb3Igb25lIGFwcGxpY2F0aW9uIG9mIGl0LgorCisj
IEZsYWdzICMKKworfCBgLS1nbW9ja19jYXRjaF9sZWFrZWRfbW9ja3M9MGAgfCBEb24ndCByZXBv
cnQgbGVha2VkIG1vY2sgb2JqZWN0cyBhcyBmYWlsdXJlcy4gfAorfDotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tfAorfCBgLS1nbW9ja192ZXJib3NlPUxFVkVMYCAgICAgICAgfCBTZXRzIHRoZSBkZWZh
dWx0IHZlcmJvc2l0eSBsZXZlbCAoYGluZm9gLCBgd2FybmluZ2AsIG9yIGBlcnJvcmApIG9mIEdv
b2dsZSBNb2NrIG1lc3NhZ2VzLiB8ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZW1vY2svZG9jcy92MV82L0Nvb2tCb29rLm1kIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9j
cy92MV82L0Nvb2tCb29rLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1OTc1YTAwMzVjMzJlMmI1YTYxMmUzZjZi
N2UxYWJjOTk5M2YyZjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL3YxXzYv
Q29va0Jvb2subWQKQEAgLTAsMCArMSwzMzQyIEBACisKKworWW91IGNhbiBmaW5kIHJlY2lwZXMg
Zm9yIHVzaW5nIEdvb2dsZSBNb2NrIGhlcmUuIElmIHlvdSBoYXZlbid0IHlldCwKK3BsZWFzZSBy
ZWFkIHRoZSBbRm9yRHVtbWllc10oVjFfNl9Gb3JEdW1taWVzLm1kKSBkb2N1bWVudCBmaXJzdCB0
byBtYWtlIHN1cmUgeW91IHVuZGVyc3RhbmQKK3RoZSBiYXNpY3MuCisKKyoqTm90ZToqKiBHb29n
bGUgTW9jayBsaXZlcyBpbiB0aGUgYHRlc3RpbmdgIG5hbWUgc3BhY2UuIEZvcgorcmVhZGFiaWxp
dHksIGl0IGlzIHJlY29tbWVuZGVkIHRvIHdyaXRlIGB1c2luZyA6OnRlc3Rpbmc6OkZvbztgIG9u
Y2UgaW4KK3lvdXIgZmlsZSBiZWZvcmUgdXNpbmcgdGhlIG5hbWUgYEZvb2AgZGVmaW5lZCBieSBH
b29nbGUgTW9jay4gV2Ugb21pdAorc3VjaCBgdXNpbmdgIHN0YXRlbWVudHMgaW4gdGhpcyBwYWdl
IGZvciBicmV2aXR5LCBidXQgeW91IHNob3VsZCBkbyBpdAoraW4geW91ciBvd24gY29kZS4KKwor
IyBDcmVhdGluZyBNb2NrIENsYXNzZXMgIworCisjIyBNb2NraW5nIFByaXZhdGUgb3IgUHJvdGVj
dGVkIE1ldGhvZHMgIyMKKworWW91IG11c3QgYWx3YXlzIHB1dCBhIG1vY2sgbWV0aG9kIGRlZmlu
aXRpb24gKGBNT0NLX01FVEhPRCpgKSBpbiBhCitgcHVibGljOmAgc2VjdGlvbiBvZiB0aGUgbW9j
ayBjbGFzcywgcmVnYXJkbGVzcyBvZiB0aGUgbWV0aG9kIGJlaW5nCittb2NrZWQgYmVpbmcgYHB1
YmxpY2AsIGBwcm90ZWN0ZWRgLCBvciBgcHJpdmF0ZWAgaW4gdGhlIGJhc2UgY2xhc3MuCitUaGlz
IGFsbG93cyBgT05fQ0FMTGAgYW5kIGBFWFBFQ1RfQ0FMTGAgdG8gcmVmZXJlbmNlIHRoZSBtb2Nr
IGZ1bmN0aW9uCitmcm9tIG91dHNpZGUgb2YgdGhlIG1vY2sgY2xhc3MuICAoWWVzLCBDKysgYWxs
b3dzIGEgc3ViY2xhc3MgdG8gY2hhbmdlCit0aGUgYWNjZXNzIGxldmVsIG9mIGEgdmlydHVhbCBm
dW5jdGlvbiBpbiB0aGUgYmFzZSBjbGFzcy4pICBFeGFtcGxlOgorCitgYGAKK2NsYXNzIEZvbyB7
CisgcHVibGljOgorICAuLi4KKyAgdmlydHVhbCBib29sIFRyYW5zZm9ybShHYWRnZXQqIGcpID0g
MDsKKworIHByb3RlY3RlZDoKKyAgdmlydHVhbCB2b2lkIFJlc3VtZSgpOworCisgcHJpdmF0ZToK
KyAgdmlydHVhbCBpbnQgR2V0VGltZU91dCgpOworfTsKKworY2xhc3MgTW9ja0ZvbyA6IHB1Ymxp
YyBGb28geworIHB1YmxpYzoKKyAgLi4uCisgIE1PQ0tfTUVUSE9EMShUcmFuc2Zvcm0sIGJvb2wo
R2FkZ2V0KiBnKSk7CisKKyAgLy8gVGhlIGZvbGxvd2luZyBtdXN0IGJlIGluIHRoZSBwdWJsaWMg
c2VjdGlvbiwgZXZlbiB0aG91Z2ggdGhlCisgIC8vIG1ldGhvZHMgYXJlIHByb3RlY3RlZCBvciBw
cml2YXRlIGluIHRoZSBiYXNlIGNsYXNzLgorICBNT0NLX01FVEhPRDAoUmVzdW1lLCB2b2lkKCkp
OworICBNT0NLX01FVEhPRDAoR2V0VGltZU91dCwgaW50KCkpOworfTsKK2BgYAorCisjIyBNb2Nr
aW5nIE92ZXJsb2FkZWQgTWV0aG9kcyAjIworCitZb3UgY2FuIG1vY2sgb3ZlcmxvYWRlZCBmdW5j
dGlvbnMgYXMgdXN1YWwuIE5vIHNwZWNpYWwgYXR0ZW50aW9uIGlzIHJlcXVpcmVkOgorCitgYGAK
K2NsYXNzIEZvbyB7CisgIC4uLgorCisgIC8vIE11c3QgYmUgdmlydHVhbCBhcyB3ZSdsbCBpbmhl
cml0IGZyb20gRm9vLgorICB2aXJ0dWFsIH5Gb28oKTsKKworICAvLyBPdmVybG9hZGVkIG9uIHRo
ZSB0eXBlcyBhbmQvb3IgbnVtYmVycyBvZiBhcmd1bWVudHMuCisgIHZpcnR1YWwgaW50IEFkZChF
bGVtZW50IHgpOworICB2aXJ0dWFsIGludCBBZGQoaW50IHRpbWVzLCBFbGVtZW50IHgpOworCisg
IC8vIE92ZXJsb2FkZWQgb24gdGhlIGNvbnN0LW5lc3Mgb2YgdGhpcyBvYmplY3QuCisgIHZpcnR1
YWwgQmFyJiBHZXRCYXIoKTsKKyAgdmlydHVhbCBjb25zdCBCYXImIEdldEJhcigpIGNvbnN0Owor
fTsKKworY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28geworICAuLi4KKyAgTU9DS19NRVRIT0Qx
KEFkZCwgaW50KEVsZW1lbnQgeCkpOworICBNT0NLX01FVEhPRDIoQWRkLCBpbnQoaW50IHRpbWVz
LCBFbGVtZW50IHgpOworCisgIE1PQ0tfTUVUSE9EMChHZXRCYXIsIEJhciYoKSk7CisgIE1PQ0tf
Q09OU1RfTUVUSE9EMChHZXRCYXIsIGNvbnN0IEJhciYoKSk7Cit9OworYGBgCisKKyoqTm90ZToq
KiBpZiB5b3UgZG9uJ3QgbW9jayBhbGwgdmVyc2lvbnMgb2YgdGhlIG92ZXJsb2FkZWQgbWV0aG9k
LCB0aGUKK2NvbXBpbGVyIHdpbGwgZ2l2ZSB5b3UgYSB3YXJuaW5nIGFib3V0IHNvbWUgbWV0aG9k
cyBpbiB0aGUgYmFzZSBjbGFzcworYmVpbmcgaGlkZGVuLiBUbyBmaXggdGhhdCwgdXNlIGB1c2lu
Z2AgdG8gYnJpbmcgdGhlbSBpbiBzY29wZToKKworYGBgCitjbGFzcyBNb2NrRm9vIDogcHVibGlj
IEZvbyB7CisgIC4uLgorICB1c2luZyBGb286OkFkZDsKKyAgTU9DS19NRVRIT0QxKEFkZCwgaW50
KEVsZW1lbnQgeCkpOworICAvLyBXZSBkb24ndCB3YW50IHRvIG1vY2sgaW50IEFkZChpbnQgdGlt
ZXMsIEVsZW1lbnQgeCk7CisgIC4uLgorfTsKK2BgYAorCisjIyBNb2NraW5nIENsYXNzIFRlbXBs
YXRlcyAjIworCitUbyBtb2NrIGEgY2xhc3MgdGVtcGxhdGUsIGFwcGVuZCBgX1RgIHRvIHRoZSBg
TU9DS18qYCBtYWNyb3M6CisKK2BgYAordGVtcGxhdGUgPHR5cGVuYW1lIEVsZW0+CitjbGFzcyBT
dGFja0ludGVyZmFjZSB7CisgIC4uLgorICAvLyBNdXN0IGJlIHZpcnR1YWwgYXMgd2UnbGwgaW5o
ZXJpdCBmcm9tIFN0YWNrSW50ZXJmYWNlLgorICB2aXJ0dWFsIH5TdGFja0ludGVyZmFjZSgpOwor
CisgIHZpcnR1YWwgaW50IEdldFNpemUoKSBjb25zdCA9IDA7CisgIHZpcnR1YWwgdm9pZCBQdXNo
KGNvbnN0IEVsZW0mIHgpID0gMDsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVtPgorY2xh
c3MgTW9ja1N0YWNrIDogcHVibGljIFN0YWNrSW50ZXJmYWNlPEVsZW0+IHsKKyAgLi4uCisgIE1P
Q0tfQ09OU1RfTUVUSE9EMF9UKEdldFNpemUsIGludCgpKTsKKyAgTU9DS19NRVRIT0QxX1QoUHVz
aCwgdm9pZChjb25zdCBFbGVtJiB4KSk7Cit9OworYGBgCisKKyMjIE1vY2tpbmcgTm9udmlydHVh
bCBNZXRob2RzICMjCisKK0dvb2dsZSBNb2NrIGNhbiBtb2NrIG5vbi12aXJ0dWFsIGZ1bmN0aW9u
cyB0byBiZSB1c2VkIGluIHdoYXQgd2UgY2FsbCBfaGktcGVyZgorZGVwZW5kZW5jeSBpbmplY3Rp
b25fLgorCitJbiB0aGlzIGNhc2UsIGluc3RlYWQgb2Ygc2hhcmluZyBhIGNvbW1vbiBiYXNlIGNs
YXNzIHdpdGggdGhlIHJlYWwKK2NsYXNzLCB5b3VyIG1vY2sgY2xhc3Mgd2lsbCBiZSBfdW5yZWxh
dGVkXyB0byB0aGUgcmVhbCBjbGFzcywgYnV0Citjb250YWluIG1ldGhvZHMgd2l0aCB0aGUgc2Ft
ZSBzaWduYXR1cmVzLiAgVGhlIHN5bnRheCBmb3IgbW9ja2luZworbm9uLXZpcnR1YWwgbWV0aG9k
cyBpcyB0aGUgX3NhbWVfIGFzIG1vY2tpbmcgdmlydHVhbCBtZXRob2RzOgorCitgYGAKKy8vIEEg
c2ltcGxlIHBhY2tldCBzdHJlYW0gY2xhc3MuICBOb25lIG9mIGl0cyBtZW1iZXJzIGlzIHZpcnR1
YWwuCitjbGFzcyBDb25jcmV0ZVBhY2tldFN0cmVhbSB7CisgcHVibGljOgorICB2b2lkIEFwcGVu
ZFBhY2tldChQYWNrZXQqIG5ld19wYWNrZXQpOworICBjb25zdCBQYWNrZXQqIEdldFBhY2tldChz
aXplX3QgcGFja2V0X251bWJlcikgY29uc3Q7CisgIHNpemVfdCBOdW1iZXJPZlBhY2tldHMoKSBj
b25zdDsKKyAgLi4uCit9OworCisvLyBBIG1vY2sgcGFja2V0IHN0cmVhbSBjbGFzcy4gIEl0IGlu
aGVyaXRzIGZyb20gbm8gb3RoZXIsIGJ1dCBkZWZpbmVzCisvLyBHZXRQYWNrZXQoKSBhbmQgTnVt
YmVyT2ZQYWNrZXRzKCkuCitjbGFzcyBNb2NrUGFja2V0U3RyZWFtIHsKKyBwdWJsaWM6CisgIE1P
Q0tfQ09OU1RfTUVUSE9EMShHZXRQYWNrZXQsIGNvbnN0IFBhY2tldCooc2l6ZV90IHBhY2tldF9u
dW1iZXIpKTsKKyAgTU9DS19DT05TVF9NRVRIT0QwKE51bWJlck9mUGFja2V0cywgc2l6ZV90KCkp
OworICAuLi4KK307CitgYGAKKworTm90ZSB0aGF0IHRoZSBtb2NrIGNsYXNzIGRvZXNuJ3QgZGVm
aW5lIGBBcHBlbmRQYWNrZXQoKWAsIHVubGlrZSB0aGUKK3JlYWwgY2xhc3MuIFRoYXQncyBmaW5l
IGFzIGxvbmcgYXMgdGhlIHRlc3QgZG9lc24ndCBuZWVkIHRvIGNhbGwgaXQuCisKK05leHQsIHlv
dSBuZWVkIGEgd2F5IHRvIHNheSB0aGF0IHlvdSB3YW50IHRvIHVzZQorYENvbmNyZXRlUGFja2V0
U3RyZWFtYCBpbiBwcm9kdWN0aW9uIGNvZGUsIGFuZCB1c2UgYE1vY2tQYWNrZXRTdHJlYW1gCitp
biB0ZXN0cy4gIFNpbmNlIHRoZSBmdW5jdGlvbnMgYXJlIG5vdCB2aXJ0dWFsIGFuZCB0aGUgdHdv
IGNsYXNzZXMgYXJlCit1bnJlbGF0ZWQsIHlvdSBtdXN0IHNwZWNpZnkgeW91ciBjaG9pY2UgYXQg
X2NvbXBpbGUgdGltZV8gKGFzIG9wcG9zZWQKK3RvIHJ1biB0aW1lKS4KKworT25lIHdheSB0byBk
byBpdCBpcyB0byB0ZW1wbGF0aXplIHlvdXIgY29kZSB0aGF0IG5lZWRzIHRvIHVzZSBhIHBhY2tl
dAorc3RyZWFtLiAgTW9yZSBzcGVjaWZpY2FsbHksIHlvdSB3aWxsIGdpdmUgeW91ciBjb2RlIGEg
dGVtcGxhdGUgdHlwZQorYXJndW1lbnQgZm9yIHRoZSB0eXBlIG9mIHRoZSBwYWNrZXQgc3RyZWFt
LiAgSW4gcHJvZHVjdGlvbiwgeW91IHdpbGwKK2luc3RhbnRpYXRlIHlvdXIgdGVtcGxhdGUgd2l0
aCBgQ29uY3JldGVQYWNrZXRTdHJlYW1gIGFzIHRoZSB0eXBlCithcmd1bWVudC4gIEluIHRlc3Rz
LCB5b3Ugd2lsbCBpbnN0YW50aWF0ZSB0aGUgc2FtZSB0ZW1wbGF0ZSB3aXRoCitgTW9ja1BhY2tl
dFN0cmVhbWAuICBGb3IgZXhhbXBsZSwgeW91IG1heSB3cml0ZToKKworYGBgCit0ZW1wbGF0ZSA8
Y2xhc3MgUGFja2V0U3RyZWFtPgordm9pZCBDcmVhdGVDb25uZWN0aW9uKFBhY2tldFN0cmVhbSog
c3RyZWFtKSB7IC4uLiB9CisKK3RlbXBsYXRlIDxjbGFzcyBQYWNrZXRTdHJlYW0+CitjbGFzcyBQ
YWNrZXRSZWFkZXIgeworIHB1YmxpYzoKKyAgdm9pZCBSZWFkUGFja2V0cyhQYWNrZXRTdHJlYW0q
IHN0cmVhbSwgc2l6ZV90IHBhY2tldF9udW0pOworfTsKK2BgYAorCitUaGVuIHlvdSBjYW4gdXNl
IGBDcmVhdGVDb25uZWN0aW9uPENvbmNyZXRlUGFja2V0U3RyZWFtPigpYCBhbmQKK2BQYWNrZXRS
ZWFkZXI8Q29uY3JldGVQYWNrZXRTdHJlYW0+YCBpbiBwcm9kdWN0aW9uIGNvZGUsIGFuZCB1c2UK
K2BDcmVhdGVDb25uZWN0aW9uPE1vY2tQYWNrZXRTdHJlYW0+KClgIGFuZAorYFBhY2tldFJlYWRl
cjxNb2NrUGFja2V0U3RyZWFtPmAgaW4gdGVzdHMuCisKK2BgYAorICBNb2NrUGFja2V0U3RyZWFt
IG1vY2tfc3RyZWFtOworICBFWFBFQ1RfQ0FMTChtb2NrX3N0cmVhbSwgLi4uKS4uLjsKKyAgLi4g
c2V0IG1vcmUgZXhwZWN0YXRpb25zIG9uIG1vY2tfc3RyZWFtIC4uLgorICBQYWNrZXRSZWFkZXI8
TW9ja1BhY2tldFN0cmVhbT4gcmVhZGVyKCZtb2NrX3N0cmVhbSk7CisgIC4uLiBleGVyY2lzZSBy
ZWFkZXIgLi4uCitgYGAKKworIyMgTW9ja2luZyBGcmVlIEZ1bmN0aW9ucyAjIworCitJdCdzIHBv
c3NpYmxlIHRvIHVzZSBHb29nbGUgTW9jayB0byBtb2NrIGEgZnJlZSBmdW5jdGlvbiAoaS5lLiBh
CitDLXN0eWxlIGZ1bmN0aW9uIG9yIGEgc3RhdGljIG1ldGhvZCkuICBZb3UganVzdCBuZWVkIHRv
IHJld3JpdGUgeW91cgorY29kZSB0byB1c2UgYW4gaW50ZXJmYWNlIChhYnN0cmFjdCBjbGFzcyku
CisKK0luc3RlYWQgb2YgY2FsbGluZyBhIGZyZWUgZnVuY3Rpb24gKHNheSwgYE9wZW5GaWxlYCkg
ZGlyZWN0bHksCitpbnRyb2R1Y2UgYW4gaW50ZXJmYWNlIGZvciBpdCBhbmQgaGF2ZSBhIGNvbmNy
ZXRlIHN1YmNsYXNzIHRoYXQgY2FsbHMKK3RoZSBmcmVlIGZ1bmN0aW9uOgorCitgYGAKK2NsYXNz
IEZpbGVJbnRlcmZhY2UgeworIHB1YmxpYzoKKyAgLi4uCisgIHZpcnR1YWwgYm9vbCBPcGVuKGNv
bnN0IGNoYXIqIHBhdGgsIGNvbnN0IGNoYXIqIG1vZGUpID0gMDsKK307CisKK2NsYXNzIEZpbGUg
OiBwdWJsaWMgRmlsZUludGVyZmFjZSB7CisgcHVibGljOgorICAuLi4KKyAgdmlydHVhbCBib29s
IE9wZW4oY29uc3QgY2hhciogcGF0aCwgY29uc3QgY2hhciogbW9kZSkgeworICAgIHJldHVybiBP
cGVuRmlsZShwYXRoLCBtb2RlKTsKKyAgfQorfTsKK2BgYAorCitZb3VyIGNvZGUgc2hvdWxkIHRh
bGsgdG8gYEZpbGVJbnRlcmZhY2VgIHRvIG9wZW4gYSBmaWxlLiAgTm93IGl0J3MKK2Vhc3kgdG8g
bW9jayBvdXQgdGhlIGZ1bmN0aW9uLgorCitUaGlzIG1heSBzZWVtIG11Y2ggaGFzc2xlLCBidXQg
aW4gcHJhY3RpY2UgeW91IG9mdGVuIGhhdmUgbXVsdGlwbGUKK3JlbGF0ZWQgZnVuY3Rpb25zIHRo
YXQgeW91IGNhbiBwdXQgaW4gdGhlIHNhbWUgaW50ZXJmYWNlLCBzbyB0aGUKK3Blci1mdW5jdGlv
biBzeW50YWN0aWMgb3ZlcmhlYWQgd2lsbCBiZSBtdWNoIGxvd2VyLgorCitJZiB5b3UgYXJlIGNv
bmNlcm5lZCBhYm91dCB0aGUgcGVyZm9ybWFuY2Ugb3ZlcmhlYWQgaW5jdXJyZWQgYnkKK3ZpcnR1
YWwgZnVuY3Rpb25zLCBhbmQgcHJvZmlsaW5nIGNvbmZpcm1zIHlvdXIgY29uY2VybiwgeW91IGNh
bgorY29tYmluZSB0aGlzIHdpdGggdGhlIHJlY2lwZSBmb3IgW21vY2tpbmcgbm9uLXZpcnR1YWwg
bWV0aG9kc10oI01vY2tpbmdfTm9udmlydHVhbF9NZXRob2RzLm1kKS4KKworIyMgTmljZSBNb2Nr
cyBhbmQgU3RyaWN0IE1vY2tzICMjCisKK0lmIGEgbW9jayBtZXRob2QgaGFzIG5vIGBFWFBFQ1Rf
Q0FMTGAgc3BlYyBidXQgaXMgY2FsbGVkLCBHb29nbGUgTW9jaword2lsbCBwcmludCBhIHdhcm5p
bmcgYWJvdXQgdGhlICJ1bmludGVyZXN0aW5nIGNhbGwiLiBUaGUgcmF0aW9uYWxlIGlzOgorCisg
ICogTmV3IG1ldGhvZHMgbWF5IGJlIGFkZGVkIHRvIGFuIGludGVyZmFjZSBhZnRlciBhIHRlc3Qg
aXMgd3JpdHRlbi4gV2Ugc2hvdWxkbid0IGZhaWwgYSB0ZXN0IGp1c3QgYmVjYXVzZSBhIG1ldGhv
ZCBpdCBkb2Vzbid0IGtub3cgYWJvdXQgaXMgY2FsbGVkLgorICAqIEhvd2V2ZXIsIHRoaXMgbWF5
IGFsc28gbWVhbiB0aGVyZSdzIGEgYnVnIGluIHRoZSB0ZXN0LCBzbyBHb29nbGUgTW9jayBzaG91
bGRuJ3QgYmUgc2lsZW50IGVpdGhlci4gSWYgdGhlIHVzZXIgYmVsaWV2ZXMgdGhlc2UgY2FsbHMg
YXJlIGhhcm1sZXNzLCBoZSBjYW4gYWRkIGFuIGBFWFBFQ1RfQ0FMTCgpYCB0byBzdXBwcmVzcyB0
aGUgd2FybmluZy4KKworSG93ZXZlciwgc29tZXRpbWVzIHlvdSBtYXkgd2FudCB0byBzdXBwcmVz
cyBhbGwgInVuaW50ZXJlc3RpbmcgY2FsbCIKK3dhcm5pbmdzLCB3aGlsZSBzb21ldGltZXMgeW91
IG1heSB3YW50IHRoZSBvcHBvc2l0ZSwgaS5lLiB0byB0cmVhdCBhbGwKK29mIHRoZW0gYXMgZXJy
b3JzLiBHb29nbGUgTW9jayBsZXRzIHlvdSBtYWtlIHRoZSBkZWNpc2lvbiBvbiBhCitwZXItbW9j
ay1vYmplY3QgYmFzaXMuCisKK1N1cHBvc2UgeW91ciB0ZXN0IHVzZXMgYSBtb2NrIGNsYXNzIGBN
b2NrRm9vYDoKKworYGBgCitURVNUKC4uLikgeworICBNb2NrRm9vIG1vY2tfZm9vOworICBFWFBF
Q1RfQ0FMTChtb2NrX2ZvbywgRG9UaGlzKCkpOworICAuLi4gY29kZSB0aGF0IHVzZXMgbW9ja19m
b28gLi4uCit9CitgYGAKKworSWYgYSBtZXRob2Qgb2YgYG1vY2tfZm9vYCBvdGhlciB0aGFuIGBE
b1RoaXMoKWAgaXMgY2FsbGVkLCBpdCB3aWxsIGJlCityZXBvcnRlZCBieSBHb29nbGUgTW9jayBh
cyBhIHdhcm5pbmcuIEhvd2V2ZXIsIGlmIHlvdSByZXdyaXRlIHlvdXIKK3Rlc3QgdG8gdXNlIGBO
aWNlTW9jazxNb2NrRm9vPmAgaW5zdGVhZCwgdGhlIHdhcm5pbmcgd2lsbCBiZSBnb25lLAorcmVz
dWx0aW5nIGluIGEgY2xlYW5lciB0ZXN0IG91dHB1dDoKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6
Ok5pY2VNb2NrOworCitURVNUKC4uLikgeworICBOaWNlTW9jazxNb2NrRm9vPiBtb2NrX2ZvbzsK
KyAgRVhQRUNUX0NBTEwobW9ja19mb28sIERvVGhpcygpKTsKKyAgLi4uIGNvZGUgdGhhdCB1c2Vz
IG1vY2tfZm9vIC4uLgorfQorYGBgCisKK2BOaWNlTW9jazxNb2NrRm9vPmAgaXMgYSBzdWJjbGFz
cyBvZiBgTW9ja0Zvb2AsIHNvIGl0IGNhbiBiZSB1c2VkCit3aGVyZXZlciBgTW9ja0Zvb2AgaXMg
YWNjZXB0ZWQuCisKK0l0IGFsc28gd29ya3MgaWYgYE1vY2tGb29gJ3MgY29uc3RydWN0b3IgdGFr
ZXMgc29tZSBhcmd1bWVudHMsIGFzCitgTmljZU1vY2s8TW9ja0Zvbz5gICJpbmhlcml0cyIgYE1v
Y2tGb29gJ3MgY29uc3RydWN0b3JzOgorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6TmljZU1vY2s7
CisKK1RFU1QoLi4uKSB7CisgIE5pY2VNb2NrPE1vY2tGb28+IG1vY2tfZm9vKDUsICJoaSIpOyAg
Ly8gQ2FsbHMgTW9ja0Zvbyg1LCAiaGkiKS4KKyAgRVhQRUNUX0NBTEwobW9ja19mb28sIERvVGhp
cygpKTsKKyAgLi4uIGNvZGUgdGhhdCB1c2VzIG1vY2tfZm9vIC4uLgorfQorYGBgCisKK1RoZSB1
c2FnZSBvZiBgU3RyaWN0TW9ja2AgaXMgc2ltaWxhciwgZXhjZXB0IHRoYXQgaXQgbWFrZXMgYWxs
Cit1bmludGVyZXN0aW5nIGNhbGxzIGZhaWx1cmVzOgorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6
U3RyaWN0TW9jazsKKworVEVTVCguLi4pIHsKKyAgU3RyaWN0TW9jazxNb2NrRm9vPiBtb2NrX2Zv
bzsKKyAgRVhQRUNUX0NBTEwobW9ja19mb28sIERvVGhpcygpKTsKKyAgLi4uIGNvZGUgdGhhdCB1
c2VzIG1vY2tfZm9vIC4uLgorCisgIC8vIFRoZSB0ZXN0IHdpbGwgZmFpbCBpZiBhIG1ldGhvZCBv
ZiBtb2NrX2ZvbyBvdGhlciB0aGFuIERvVGhpcygpCisgIC8vIGlzIGNhbGxlZC4KK30KK2BgYAor
CitUaGVyZSBhcmUgc29tZSBjYXZlYXRzIHRob3VnaCAoSSBkb24ndCBsaWtlIHRoZW0ganVzdCBh
cyBtdWNoIGFzIHRoZQorbmV4dCBndXksIGJ1dCBzYWRseSB0aGV5IGFyZSBzaWRlIGVmZmVjdHMg
b2YgQysrJ3MgbGltaXRhdGlvbnMpOgorCisgIDEuIGBOaWNlTW9jazxNb2NrRm9vPmAgYW5kIGBT
dHJpY3RNb2NrPE1vY2tGb28+YCBvbmx5IHdvcmsgZm9yIG1vY2sgbWV0aG9kcyBkZWZpbmVkIHVz
aW5nIHRoZSBgTU9DS19NRVRIT0QqYCBmYW1pbHkgb2YgbWFjcm9zICoqZGlyZWN0bHkqKiBpbiB0
aGUgYE1vY2tGb29gIGNsYXNzLiBJZiBhIG1vY2sgbWV0aG9kIGlzIGRlZmluZWQgaW4gYSAqKmJh
c2UgY2xhc3MqKiBvZiBgTW9ja0Zvb2AsIHRoZSAibmljZSIgb3IgInN0cmljdCIgbW9kaWZpZXIg
bWF5IG5vdCBhZmZlY3QgaXQsIGRlcGVuZGluZyBvbiB0aGUgY29tcGlsZXIuIEluIHBhcnRpY3Vs
YXIsIG5lc3RpbmcgYE5pY2VNb2NrYCBhbmQgYFN0cmljdE1vY2tgIChlLmcuIGBOaWNlTW9jazxT
dHJpY3RNb2NrPE1vY2tGb28+ID5gKSBpcyAqKm5vdCoqIHN1cHBvcnRlZC4KKyAgMS4gVGhlIGNv
bnN0cnVjdG9ycyBvZiB0aGUgYmFzZSBtb2NrIChgTW9ja0Zvb2ApIGNhbm5vdCBoYXZlIGFyZ3Vt
ZW50cyBwYXNzZWQgYnkgbm9uLWNvbnN0IHJlZmVyZW5jZSwgd2hpY2ggaGFwcGVucyB0byBiZSBi
YW5uZWQgYnkgdGhlIFtHb29nbGUgQysrIHN0eWxlIGd1aWRlXShodHRwOi8vZ29vZ2xlLXN0eWxl
Z3VpZGUuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rL2NwcGd1aWRlLnhtbCkuCisgIDEuIER1cmlu
ZyB0aGUgY29uc3RydWN0b3Igb3IgZGVzdHJ1Y3RvciBvZiBgTW9ja0Zvb2AsIHRoZSBtb2NrIG9i
amVjdCBpcyBfbm90XyBuaWNlIG9yIHN0cmljdC4gIFRoaXMgbWF5IGNhdXNlIHN1cnByaXNlcyBp
ZiB0aGUgY29uc3RydWN0b3Igb3IgZGVzdHJ1Y3RvciBjYWxscyBhIG1vY2sgbWV0aG9kIG9uIGB0
aGlzYCBvYmplY3QuIChUaGlzIGJlaGF2aW9yLCBob3dldmVyLCBpcyBjb25zaXN0ZW50IHdpdGgg
QysrJ3MgZ2VuZXJhbCBydWxlOiBpZiBhIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3IgY2FsbHMg
YSB2aXJ0dWFsIG1ldGhvZCBvZiBgdGhpc2Agb2JqZWN0LCB0aGF0IG1ldGhvZCBpcyB0cmVhdGVk
IGFzIG5vbi12aXJ0dWFsLiAgSW4gb3RoZXIgd29yZHMsIHRvIHRoZSBiYXNlIGNsYXNzJ3MgY29u
c3RydWN0b3Igb3IgZGVzdHJ1Y3RvciwgYHRoaXNgIG9iamVjdCBiZWhhdmVzIGxpa2UgYW4gaW5z
dGFuY2Ugb2YgdGhlIGJhc2UgY2xhc3MsIG5vdCB0aGUgZGVyaXZlZCBjbGFzcy4gIFRoaXMgcnVs
ZSBpcyByZXF1aXJlZCBmb3Igc2FmZXR5LiAgT3RoZXJ3aXNlIGEgYmFzZSBjb25zdHJ1Y3RvciBt
YXkgdXNlIG1lbWJlcnMgb2YgYSBkZXJpdmVkIGNsYXNzIGJlZm9yZSB0aGV5IGFyZSBpbml0aWFs
aXplZCwgb3IgYSBiYXNlIGRlc3RydWN0b3IgbWF5IHVzZSBtZW1iZXJzIG9mIGEgZGVyaXZlZCBj
bGFzcyBhZnRlciB0aGV5IGhhdmUgYmVlbiBkZXN0cm95ZWQuKQorCitGaW5hbGx5LCB5b3Ugc2hv
dWxkIGJlICoqdmVyeSBjYXV0aW91cyoqIHdoZW4gdXNpbmcgdGhpcyBmZWF0dXJlLCBhcyB0aGUK
K2RlY2lzaW9uIHlvdSBtYWtlIGFwcGxpZXMgdG8gKiphbGwqKiBmdXR1cmUgY2hhbmdlcyB0byB0
aGUgbW9jaworY2xhc3MuIElmIGFuIGltcG9ydGFudCBjaGFuZ2UgaXMgbWFkZSBpbiB0aGUgaW50
ZXJmYWNlIHlvdSBhcmUgbW9ja2luZworKGFuZCB0aHVzIGluIHRoZSBtb2NrIGNsYXNzKSwgaXQg
Y291bGQgYnJlYWsgeW91ciB0ZXN0cyAoaWYgeW91IHVzZQorYFN0cmljdE1vY2tgKSBvciBsZXQg
YnVncyBwYXNzIHRocm91Z2ggd2l0aG91dCBhIHdhcm5pbmcgKGlmIHlvdSB1c2UKK2BOaWNlTW9j
a2ApLiBUaGVyZWZvcmUsIHRyeSB0byBzcGVjaWZ5IHRoZSBtb2NrJ3MgYmVoYXZpb3IgdXNpbmcK
K2V4cGxpY2l0IGBFWFBFQ1RfQ0FMTGAgZmlyc3QsIGFuZCBvbmx5IHR1cm4gdG8gYE5pY2VNb2Nr
YCBvcgorYFN0cmljdE1vY2tgIGFzIHRoZSBsYXN0IHJlc29ydC4KKworIyMgU2ltcGxpZnlpbmcg
dGhlIEludGVyZmFjZSB3aXRob3V0IEJyZWFraW5nIEV4aXN0aW5nIENvZGUgIyMKKworU29tZXRp
bWVzIGEgbWV0aG9kIGhhcyBhIGxvbmcgbGlzdCBvZiBhcmd1bWVudHMgdGhhdCBpcyBtb3N0bHkK
K3VuaW50ZXJlc3RpbmcuIEZvciBleGFtcGxlLAorCitgYGAKK2NsYXNzIExvZ1NpbmsgeworIHB1
YmxpYzoKKyAgLi4uCisgIHZpcnR1YWwgdm9pZCBzZW5kKExvZ1NldmVyaXR5IHNldmVyaXR5LCBj
b25zdCBjaGFyKiBmdWxsX2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBiYXNlX2ZpbGVuYW1lLCBpbnQgbGluZSwKKyAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Ry
dWN0IHRtKiB0bV90aW1lLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBtZXNzYWdl
LCBzaXplX3QgbWVzc2FnZV9sZW4pID0gMDsKK307CitgYGAKKworVGhpcyBtZXRob2QncyBhcmd1
bWVudCBsaXN0IGlzIGxlbmd0aHkgYW5kIGhhcmQgdG8gd29yayB3aXRoIChsZXQncworc2F5IHRo
YXQgdGhlIGBtZXNzYWdlYCBhcmd1bWVudCBpcyBub3QgZXZlbiAwLXRlcm1pbmF0ZWQpLiBJZiB3
ZSBtb2NrCitpdCBhcyBpcywgdXNpbmcgdGhlIG1vY2sgd2lsbCBiZSBhd2t3YXJkLiBJZiwgaG93
ZXZlciwgd2UgdHJ5IHRvCitzaW1wbGlmeSB0aGlzIGludGVyZmFjZSwgd2UnbGwgbmVlZCB0byBm
aXggYWxsIGNsaWVudHMgZGVwZW5kaW5nIG9uCitpdCwgd2hpY2ggaXMgb2Z0ZW4gaW5mZWFzaWJs
ZS4KKworVGhlIHRyaWNrIGlzIHRvIHJlLWRpc3BhdGNoIHRoZSBtZXRob2QgaW4gdGhlIG1vY2sg
Y2xhc3M6CisKK2BgYAorY2xhc3MgU2NvcGVkTW9ja0xvZyA6IHB1YmxpYyBMb2dTaW5rIHsKKyBw
dWJsaWM6CisgIC4uLgorICB2aXJ0dWFsIHZvaWQgc2VuZChMb2dTZXZlcml0eSBzZXZlcml0eSwg
Y29uc3QgY2hhciogZnVsbF9maWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogYmFzZV9maWxlbmFtZSwgaW50IGxpbmUsIGNvbnN0IHRtKiB0bV90aW1lLAorICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiBtZXNzYWdlLCBzaXplX3QgbWVzc2FnZV9sZW4pIHsKKyAg
ICAvLyBXZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIHRoZSBsb2cgc2V2ZXJpdHksIGZ1bGwgZmls
ZSBuYW1lLCBhbmQKKyAgICAvLyBsb2cgbWVzc2FnZS4KKyAgICBMb2coc2V2ZXJpdHksIGZ1bGxf
ZmlsZW5hbWUsIHN0ZDo6c3RyaW5nKG1lc3NhZ2UsIG1lc3NhZ2VfbGVuKSk7CisgIH0KKworICAv
LyBJbXBsZW1lbnRzIHRoZSBtb2NrIG1ldGhvZDoKKyAgLy8KKyAgLy8gICB2b2lkIExvZyhMb2dT
ZXZlcml0eSBzZXZlcml0eSwKKyAgLy8gICAgICAgICAgICBjb25zdCBzdHJpbmcmIGZpbGVfcGF0
aCwKKyAgLy8gICAgICAgICAgICBjb25zdCBzdHJpbmcmIG1lc3NhZ2UpOworICBNT0NLX01FVEhP
RDMoTG9nLCB2b2lkKExvZ1NldmVyaXR5IHNldmVyaXR5LCBjb25zdCBzdHJpbmcmIGZpbGVfcGF0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJpbmcmIG1lc3NhZ2UpKTsKK307
CitgYGAKKworQnkgZGVmaW5pbmcgYSBuZXcgbW9jayBtZXRob2Qgd2l0aCBhIHRyaW1tZWQgYXJn
dW1lbnQgbGlzdCwgd2UgbWFrZQordGhlIG1vY2sgY2xhc3MgbXVjaCBtb3JlIHVzZXItZnJpZW5k
bHkuCisKKyMjIEFsdGVybmF0aXZlIHRvIE1vY2tpbmcgQ29uY3JldGUgQ2xhc3NlcyAjIworCitP
ZnRlbiB5b3UgbWF5IGZpbmQgeW91cnNlbGYgdXNpbmcgY2xhc3NlcyB0aGF0IGRvbid0IGltcGxl
bWVudAoraW50ZXJmYWNlcy4gSW4gb3JkZXIgdG8gdGVzdCB5b3VyIGNvZGUgdGhhdCB1c2VzIHN1
Y2ggYSBjbGFzcyAobGV0J3MKK2NhbGwgaXQgYENvbmNyZXRlYCksIHlvdSBtYXkgYmUgdGVtcHRl
ZCB0byBtYWtlIHRoZSBtZXRob2RzIG9mCitgQ29uY3JldGVgIHZpcnR1YWwgYW5kIHRoZW4gbW9j
ayBpdC4KKworVHJ5IG5vdCB0byBkbyB0aGF0LgorCitNYWtpbmcgYSBub24tdmlydHVhbCBmdW5j
dGlvbiB2aXJ0dWFsIGlzIGEgYmlnIGRlY2lzaW9uLiBJdCBjcmVhdGVzIGFuCitleHRlbnNpb24g
cG9pbnQgd2hlcmUgc3ViY2xhc3NlcyBjYW4gdHdlYWsgeW91ciBjbGFzcycgYmVoYXZpb3IuIFRo
aXMKK3dlYWtlbnMgeW91ciBjb250cm9sIG9uIHRoZSBjbGFzcyBiZWNhdXNlIG5vdyBpdCdzIGhh
cmRlciB0byBtYWludGFpbgordGhlIGNsYXNzJyBpbnZhcmlhbnRzLiBZb3Ugc2hvdWxkIG1ha2Ug
YSBmdW5jdGlvbiB2aXJ0dWFsIG9ubHkgd2hlbgordGhlcmUgaXMgYSB2YWxpZCByZWFzb24gZm9y
IGEgc3ViY2xhc3MgdG8gb3ZlcnJpZGUgaXQuCisKK01vY2tpbmcgY29uY3JldGUgY2xhc3NlcyBk
aXJlY3RseSBpcyBwcm9ibGVtYXRpYyBhcyBpdCBjcmVhdGVzIGEgdGlnaHQKK2NvdXBsaW5nIGJl
dHdlZW4gdGhlIGNsYXNzIGFuZCB0aGUgdGVzdHMgLSBhbnkgc21hbGwgY2hhbmdlIGluIHRoZQor
Y2xhc3MgbWF5IGludmFsaWRhdGUgeW91ciB0ZXN0cyBhbmQgbWFrZSB0ZXN0IG1haW50ZW5hbmNl
IGEgcGFpbi4KKworVG8gYXZvaWQgc3VjaCBwcm9ibGVtcywgbWFueSBwcm9ncmFtbWVycyBoYXZl
IGJlZW4gcHJhY3RpY2luZyAiY29kaW5nCit0byBpbnRlcmZhY2VzIjogaW5zdGVhZCBvZiB0YWxr
aW5nIHRvIHRoZSBgQ29uY3JldGVgIGNsYXNzLCB5b3VyIGNvZGUKK3dvdWxkIGRlZmluZSBhbiBp
bnRlcmZhY2UgYW5kIHRhbGsgdG8gaXQuIFRoZW4geW91IGltcGxlbWVudCB0aGF0CitpbnRlcmZh
Y2UgYXMgYW4gYWRhcHRvciBvbiB0b3Agb2YgYENvbmNyZXRlYC4gSW4gdGVzdHMsIHlvdSBjYW4g
ZWFzaWx5Cittb2NrIHRoYXQgaW50ZXJmYWNlIHRvIG9ic2VydmUgaG93IHlvdXIgY29kZSBpcyBk
b2luZy4KKworVGhpcyB0ZWNobmlxdWUgaW5jdXJzIHNvbWUgb3ZlcmhlYWQ6CisKKyAgKiBZb3Ug
cGF5IHRoZSBjb3N0IG9mIHZpcnR1YWwgZnVuY3Rpb24gY2FsbHMgKHVzdWFsbHkgbm90IGEgcHJv
YmxlbSkuCisgICogVGhlcmUgaXMgbW9yZSBhYnN0cmFjdGlvbiBmb3IgdGhlIHByb2dyYW1tZXJz
IHRvIGxlYXJuLgorCitIb3dldmVyLCBpdCBjYW4gYWxzbyBicmluZyBzaWduaWZpY2FudCBiZW5l
Zml0cyBpbiBhZGRpdGlvbiB0byBiZXR0ZXIKK3Rlc3RhYmlsaXR5OgorCisgICogYENvbmNyZXRl
YCdzIEFQSSBtYXkgbm90IGZpdCB5b3VyIHByb2JsZW0gZG9tYWluIHZlcnkgd2VsbCwgYXMgeW91
IG1heSBub3QgYmUgdGhlIG9ubHkgY2xpZW50IGl0IHRyaWVzIHRvIHNlcnZlLiBCeSBkZXNpZ25p
bmcgeW91ciBvd24gaW50ZXJmYWNlLCB5b3UgaGF2ZSBhIGNoYW5jZSB0byB0YWlsb3IgaXQgdG8g
eW91ciBuZWVkIC0geW91IG1heSBhZGQgaGlnaGVyLWxldmVsIGZ1bmN0aW9uYWxpdGllcywgcmVu
YW1lIHN0dWZmLCBldGMgaW5zdGVhZCBvZiBqdXN0IHRyaW1taW5nIHRoZSBjbGFzcy4gVGhpcyBh
bGxvd3MgeW91IHRvIHdyaXRlIHlvdXIgY29kZSAodXNlciBvZiB0aGUgaW50ZXJmYWNlKSBpbiBh
IG1vcmUgbmF0dXJhbCB3YXksIHdoaWNoIG1lYW5zIGl0IHdpbGwgYmUgbW9yZSByZWFkYWJsZSwg
bW9yZSBtYWludGFpbmFibGUsIGFuZCB5b3UnbGwgYmUgbW9yZSBwcm9kdWN0aXZlLgorICAqIElm
IGBDb25jcmV0ZWAncyBpbXBsZW1lbnRhdGlvbiBldmVyIGhhcyB0byBjaGFuZ2UsIHlvdSBkb24n
dCBoYXZlIHRvIHJld3JpdGUgZXZlcnl3aGVyZSBpdCBpcyB1c2VkLiBJbnN0ZWFkLCB5b3UgY2Fu
IGFic29yYiB0aGUgY2hhbmdlIGluIHlvdXIgaW1wbGVtZW50YXRpb24gb2YgdGhlIGludGVyZmFj
ZSwgYW5kIHlvdXIgb3RoZXIgY29kZSBhbmQgdGVzdHMgd2lsbCBiZSBpbnN1bGF0ZWQgZnJvbSB0
aGlzIGNoYW5nZS4KKworU29tZSBwZW9wbGUgd29ycnkgdGhhdCBpZiBldmVyeW9uZSBpcyBwcmFj
dGljaW5nIHRoaXMgdGVjaG5pcXVlLCB0aGV5Cit3aWxsIGVuZCB1cCB3cml0aW5nIGxvdHMgb2Yg
cmVkdW5kYW50IGNvZGUuIFRoaXMgY29uY2VybiBpcyB0b3RhbGx5Cit1bmRlcnN0YW5kYWJsZS4g
SG93ZXZlciwgdGhlcmUgYXJlIHR3byByZWFzb25zIHdoeSBpdCBtYXkgbm90IGJlIHRoZQorY2Fz
ZToKKworICAqIERpZmZlcmVudCBwcm9qZWN0cyBtYXkgbmVlZCB0byB1c2UgYENvbmNyZXRlYCBp
biBkaWZmZXJlbnQgd2F5cywgc28gdGhlIGJlc3QgaW50ZXJmYWNlcyBmb3IgdGhlbSB3aWxsIGJl
IGRpZmZlcmVudC4gVGhlcmVmb3JlLCBlYWNoIG9mIHRoZW0gd2lsbCBoYXZlIGl0cyBvd24gZG9t
YWluLXNwZWNpZmljIGludGVyZmFjZSBvbiB0b3Agb2YgYENvbmNyZXRlYCwgYW5kIHRoZXkgd2ls
bCBub3QgYmUgdGhlIHNhbWUgY29kZS4KKyAgKiBJZiBlbm91Z2ggcHJvamVjdHMgd2FudCB0byB1
c2UgdGhlIHNhbWUgaW50ZXJmYWNlLCB0aGV5IGNhbiBhbHdheXMgc2hhcmUgaXQsIGp1c3QgbGlr
ZSB0aGV5IGhhdmUgYmVlbiBzaGFyaW5nIGBDb25jcmV0ZWAuIFlvdSBjYW4gY2hlY2sgaW4gdGhl
IGludGVyZmFjZSBhbmQgdGhlIGFkYXB0b3Igc29tZXdoZXJlIG5lYXIgYENvbmNyZXRlYCAocGVy
aGFwcyBpbiBhIGBjb250cmliYCBzdWItZGlyZWN0b3J5KSBhbmQgbGV0IG1hbnkgcHJvamVjdHMg
dXNlIGl0LgorCitZb3UgbmVlZCB0byB3ZWlnaCB0aGUgcHJvcyBhbmQgY29ucyBjYXJlZnVsbHkg
Zm9yIHlvdXIgcGFydGljdWxhcgorcHJvYmxlbSwgYnV0IEknZCBsaWtlIHRvIGFzc3VyZSB5b3Ug
dGhhdCB0aGUgSmF2YSBjb21tdW5pdHkgaGFzIGJlZW4KK3ByYWN0aWNpbmcgdGhpcyBmb3IgYSBs
b25nIHRpbWUgYW5kIGl0J3MgYSBwcm92ZW4gZWZmZWN0aXZlIHRlY2huaXF1ZQorYXBwbGljYWJs
ZSBpbiBhIHdpZGUgdmFyaWV0eSBvZiBzaXR1YXRpb25zLiA6LSkKKworIyMgRGVsZWdhdGluZyBD
YWxscyB0byBhIEZha2UgIyMKKworU29tZSB0aW1lcyB5b3UgaGF2ZSBhIG5vbi10cml2aWFsIGZh
a2UgaW1wbGVtZW50YXRpb24gb2YgYW4KK2ludGVyZmFjZS4gRm9yIGV4YW1wbGU6CisKK2BgYAor
Y2xhc3MgRm9vIHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgfkZvbygpIHt9CisgIHZpcnR1YWwgY2hh
ciBEb1RoaXMoaW50IG4pID0gMDsKKyAgdmlydHVhbCB2b2lkIERvVGhhdChjb25zdCBjaGFyKiBz
LCBpbnQqIHApID0gMDsKK307CisKK2NsYXNzIEZha2VGb28gOiBwdWJsaWMgRm9vIHsKKyBwdWJs
aWM6CisgIHZpcnR1YWwgY2hhciBEb1RoaXMoaW50IG4pIHsKKyAgICByZXR1cm4gKG4gPiAwKSA/
ICcrJyA6CisgICAgICAgIChuIDwgMCkgPyAnLScgOiAnMCc7CisgIH0KKworICB2aXJ0dWFsIHZv
aWQgRG9UaGF0KGNvbnN0IGNoYXIqIHMsIGludCogcCkgeworICAgICpwID0gc3RybGVuKHMpOwor
ICB9Cit9OworYGBgCisKK05vdyB5b3Ugd2FudCB0byBtb2NrIHRoaXMgaW50ZXJmYWNlIHN1Y2gg
dGhhdCB5b3UgY2FuIHNldCBleHBlY3RhdGlvbnMKK29uIGl0LiBIb3dldmVyLCB5b3UgYWxzbyB3
YW50IHRvIHVzZSBgRmFrZUZvb2AgZm9yIHRoZSBkZWZhdWx0CitiZWhhdmlvciwgYXMgZHVwbGlj
YXRpbmcgaXQgaW4gdGhlIG1vY2sgb2JqZWN0IGlzLCB3ZWxsLCBhIGxvdCBvZgord29yay4KKwor
V2hlbiB5b3UgZGVmaW5lIHRoZSBtb2NrIGNsYXNzIHVzaW5nIEdvb2dsZSBNb2NrLCB5b3UgY2Fu
IGhhdmUgaXQKK2RlbGVnYXRlIGl0cyBkZWZhdWx0IGFjdGlvbiB0byBhIGZha2UgY2xhc3MgeW91
IGFscmVhZHkgaGF2ZSwgdXNpbmcKK3RoaXMgcGF0dGVybjoKKworYGBgCit1c2luZyA6OnRlc3Rp
bmc6Ol87Cit1c2luZyA6OnRlc3Rpbmc6Okludm9rZTsKKworY2xhc3MgTW9ja0ZvbyA6IHB1Ymxp
YyBGb28geworIHB1YmxpYzoKKyAgLy8gTm9ybWFsIG1vY2sgbWV0aG9kIGRlZmluaXRpb25zIHVz
aW5nIEdvb2dsZSBNb2NrLgorICBNT0NLX01FVEhPRDEoRG9UaGlzLCBjaGFyKGludCBuKSk7Cisg
IE1PQ0tfTUVUSE9EMihEb1RoYXQsIHZvaWQoY29uc3QgY2hhciogcywgaW50KiBwKSk7CisKKyAg
Ly8gRGVsZWdhdGVzIHRoZSBkZWZhdWx0IGFjdGlvbnMgb2YgdGhlIG1ldGhvZHMgdG8gYSBGYWtl
Rm9vIG9iamVjdC4KKyAgLy8gVGhpcyBtdXN0IGJlIGNhbGxlZCAqYmVmb3JlKiB0aGUgY3VzdG9t
IE9OX0NBTEwoKSBzdGF0ZW1lbnRzLgorICB2b2lkIERlbGVnYXRlVG9GYWtlKCkgeworICAgIE9O
X0NBTEwoKnRoaXMsIERvVGhpcyhfKSkKKyAgICAgICAgLldpbGxCeURlZmF1bHQoSW52b2tlKCZm
YWtlXywgJkZha2VGb286OkRvVGhpcykpOworICAgIE9OX0NBTEwoKnRoaXMsIERvVGhhdChfLCBf
KSkKKyAgICAgICAgLldpbGxCeURlZmF1bHQoSW52b2tlKCZmYWtlXywgJkZha2VGb286OkRvVGhh
dCkpOworICB9CisgcHJpdmF0ZToKKyAgRmFrZUZvbyBmYWtlXzsgIC8vIEtlZXBzIGFuIGluc3Rh
bmNlIG9mIHRoZSBmYWtlIGluIHRoZSBtb2NrLgorfTsKK2BgYAorCitXaXRoIHRoYXQsIHlvdSBj
YW4gdXNlIGBNb2NrRm9vYCBpbiB5b3VyIHRlc3RzIGFzIHVzdWFsLiBKdXN0IHJlbWVtYmVyCit0
aGF0IGlmIHlvdSBkb24ndCBleHBsaWNpdGx5IHNldCBhbiBhY3Rpb24gaW4gYW4gYE9OX0NBTEwo
KWAgb3IKK2BFWFBFQ1RfQ0FMTCgpYCwgdGhlIGZha2Ugd2lsbCBiZSBjYWxsZWQgdXBvbiB0byBk
byBpdDoKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6Ol87CisKK1RFU1QoQWJjVGVzdCwgWHl6KSB7
CisgIE1vY2tGb28gZm9vOworICBmb28uRGVsZWdhdGVUb0Zha2UoKTsgLy8gRW5hYmxlcyB0aGUg
ZmFrZSBmb3IgZGVsZWdhdGlvbi4KKworICAvLyBQdXQgeW91ciBPTl9DQUxMKGZvbywgLi4uKXMg
aGVyZSwgaWYgYW55LgorCisgIC8vIE5vIGFjdGlvbiBzcGVjaWZpZWQsIG1lYW5pbmcgdG8gdXNl
IHRoZSBkZWZhdWx0IGFjdGlvbi4KKyAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoaXMoNSkpOworICBF
WFBFQ1RfQ0FMTChmb28sIERvVGhhdChfLCBfKSk7CisKKyAgaW50IG4gPSAwOworICBFWFBFQ1Rf
RVEoJysnLCBmb28uRG9UaGlzKDUpKTsgIC8vIEZha2VGb286OkRvVGhpcygpIGlzIGludm9rZWQu
CisgIGZvby5Eb1RoYXQoIkhpIiwgJm4pOyAgICAgICAgICAgLy8gRmFrZUZvbzo6RG9UaGF0KCkg
aXMgaW52b2tlZC4KKyAgRVhQRUNUX0VRKDIsIG4pOworfQorYGBgCisKKyoqU29tZSB0aXBzOioq
CisKKyAgKiBJZiB5b3Ugd2FudCwgeW91IGNhbiBzdGlsbCBvdmVycmlkZSB0aGUgZGVmYXVsdCBh
Y3Rpb24gYnkgcHJvdmlkaW5nIHlvdXIgb3duIGBPTl9DQUxMKClgIG9yIHVzaW5nIGAuV2lsbE9u
Y2UoKWAgLyBgLldpbGxSZXBlYXRlZGx5KClgIGluIGBFWFBFQ1RfQ0FMTCgpYC4KKyAgKiBJbiBg
RGVsZWdhdGVUb0Zha2UoKWAsIHlvdSBvbmx5IG5lZWQgdG8gZGVsZWdhdGUgdGhlIG1ldGhvZHMg
d2hvc2UgZmFrZSBpbXBsZW1lbnRhdGlvbiB5b3UgaW50ZW5kIHRvIHVzZS4KKyAgKiBUaGUgZ2Vu
ZXJhbCB0ZWNobmlxdWUgZGlzY3Vzc2VkIGhlcmUgd29ya3MgZm9yIG92ZXJsb2FkZWQgbWV0aG9k
cywgYnV0IHlvdSdsbCBuZWVkIHRvIHRlbGwgdGhlIGNvbXBpbGVyIHdoaWNoIHZlcnNpb24geW91
IG1lYW4uIFRvIGRpc2FtYmlndWF0ZSBhIG1vY2sgZnVuY3Rpb24gKHRoZSBvbmUgeW91IHNwZWNp
ZnkgaW5zaWRlIHRoZSBwYXJlbnRoZXNlcyBvZiBgT05fQ0FMTCgpYCksIHNlZSB0aGUgIlNlbGVj
dGluZyBCZXR3ZWVuIE92ZXJsb2FkZWQgRnVuY3Rpb25zIiBzZWN0aW9uIG9uIHRoaXMgcGFnZTsg
dG8gZGlzYW1iaWd1YXRlIGEgZmFrZSBmdW5jdGlvbiAodGhlIG9uZSB5b3UgcGxhY2UgaW5zaWRl
IGBJbnZva2UoKWApLCB1c2UgYSBgc3RhdGljX2Nhc3RgIHRvIHNwZWNpZnkgdGhlIGZ1bmN0aW9u
J3MgdHlwZS4KKyAgKiBIYXZpbmcgdG8gbWl4IGEgbW9jayBhbmQgYSBmYWtlIGlzIG9mdGVuIGEg
c2lnbiBvZiBzb21ldGhpbmcgZ29uZSB3cm9uZy4gUGVyaGFwcyB5b3UgaGF2ZW4ndCBnb3QgdXNl
ZCB0byB0aGUgaW50ZXJhY3Rpb24tYmFzZWQgd2F5IG9mIHRlc3RpbmcgeWV0LiBPciBwZXJoYXBz
IHlvdXIgaW50ZXJmYWNlIGlzIHRha2luZyBvbiB0b28gbWFueSByb2xlcyBhbmQgc2hvdWxkIGJl
IHNwbGl0IHVwLiBUaGVyZWZvcmUsICoqZG9uJ3QgYWJ1c2UgdGhpcyoqLiBXZSB3b3VsZCBvbmx5
IHJlY29tbWVuZCB0byBkbyBpdCBhcyBhbiBpbnRlcm1lZGlhdGUgc3RlcCB3aGVuIHlvdSBhcmUg
cmVmYWN0b3JpbmcgeW91ciBjb2RlLgorCitSZWdhcmRpbmcgdGhlIHRpcCBvbiBtaXhpbmcgYSBt
b2NrIGFuZCBhIGZha2UsIGhlcmUncyBhbiBleGFtcGxlIG9uCit3aHkgaXQgbWF5IGJlIGEgYmFk
IHNpZ246IFN1cHBvc2UgeW91IGhhdmUgYSBjbGFzcyBgU3lzdGVtYCBmb3IKK2xvdy1sZXZlbCBz
eXN0ZW0gb3BlcmF0aW9ucy4gSW4gcGFydGljdWxhciwgaXQgZG9lcyBmaWxlIGFuZCBJL08KK29w
ZXJhdGlvbnMuIEFuZCBzdXBwb3NlIHlvdSB3YW50IHRvIHRlc3QgaG93IHlvdXIgY29kZSB1c2Vz
IGBTeXN0ZW1gCit0byBkbyBJL08sIGFuZCB5b3UganVzdCB3YW50IHRoZSBmaWxlIG9wZXJhdGlv
bnMgdG8gd29yayBub3JtYWxseS4gSWYKK3lvdSBtb2NrIG91dCB0aGUgZW50aXJlIGBTeXN0ZW1g
IGNsYXNzLCB5b3UnbGwgaGF2ZSB0byBwcm92aWRlIGEgZmFrZQoraW1wbGVtZW50YXRpb24gZm9y
IHRoZSBmaWxlIG9wZXJhdGlvbiBwYXJ0LCB3aGljaCBzdWdnZXN0cyB0aGF0CitgU3lzdGVtYCBp
cyB0YWtpbmcgb24gdG9vIG1hbnkgcm9sZXMuCisKK0luc3RlYWQsIHlvdSBjYW4gZGVmaW5lIGEg
YEZpbGVPcHNgIGludGVyZmFjZSBhbmQgYW4gYElPT3BzYCBpbnRlcmZhY2UKK2FuZCBzcGxpdCBg
U3lzdGVtYCdzIGZ1bmN0aW9uYWxpdGllcyBpbnRvIHRoZSB0d28uIFRoZW4geW91IGNhbiBtb2Nr
CitgSU9PcHNgIHdpdGhvdXQgbW9ja2luZyBgRmlsZU9wc2AuCisKKyMjIERlbGVnYXRpbmcgQ2Fs
bHMgdG8gYSBSZWFsIE9iamVjdCAjIworCitXaGVuIHVzaW5nIHRlc3RpbmcgZG91YmxlcyAobW9j
a3MsIGZha2VzLCBzdHVicywgYW5kIGV0YyksIHNvbWV0aW1lcwordGhlaXIgYmVoYXZpb3JzIHdp
bGwgZGlmZmVyIGZyb20gdGhvc2Ugb2YgdGhlIHJlYWwgb2JqZWN0cy4gVGhpcworZGlmZmVyZW5j
ZSBjb3VsZCBiZSBlaXRoZXIgaW50ZW50aW9uYWwgKGFzIGluIHNpbXVsYXRpbmcgYW4gZXJyb3Ig
c3VjaAordGhhdCB5b3UgY2FuIHRlc3QgdGhlIGVycm9yIGhhbmRsaW5nIGNvZGUpIG9yIHVuaW50
ZW50aW9uYWwuIElmIHlvdXIKK21vY2tzIGhhdmUgZGlmZmVyZW50IGJlaGF2aW9ycyB0aGFuIHRo
ZSByZWFsIG9iamVjdHMgYnkgbWlzdGFrZSwgeW91Citjb3VsZCBlbmQgdXAgd2l0aCBjb2RlIHRo
YXQgcGFzc2VzIHRoZSB0ZXN0cyBidXQgZmFpbHMgaW4gcHJvZHVjdGlvbi4KKworWW91IGNhbiB1
c2UgdGhlIF9kZWxlZ2F0aW5nLXRvLXJlYWxfIHRlY2huaXF1ZSB0byBlbnN1cmUgdGhhdCB5b3Vy
Cittb2NrIGhhcyB0aGUgc2FtZSBiZWhhdmlvciBhcyB0aGUgcmVhbCBvYmplY3Qgd2hpbGUgcmV0
YWluaW5nIHRoZQorYWJpbGl0eSB0byB2YWxpZGF0ZSBjYWxscy4gVGhpcyB0ZWNobmlxdWUgaXMg
dmVyeSBzaW1pbGFyIHRvIHRoZQorZGVsZWdhdGluZy10by1mYWtlIHRlY2huaXF1ZSwgdGhlIGRp
ZmZlcmVuY2UgYmVpbmcgdGhhdCB3ZSB1c2UgYSByZWFsCitvYmplY3QgaW5zdGVhZCBvZiBhIGZh
a2UuIEhlcmUncyBhbiBleGFtcGxlOgorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6XzsKK3VzaW5n
IDo6dGVzdGluZzo6QXRMZWFzdDsKK3VzaW5nIDo6dGVzdGluZzo6SW52b2tlOworCitjbGFzcyBN
b2NrRm9vIDogcHVibGljIEZvbyB7CisgcHVibGljOgorICBNb2NrRm9vKCkgeworICAgIC8vIEJ5
IGRlZmF1bHQsIGFsbCBjYWxscyBhcmUgZGVsZWdhdGVkIHRvIHRoZSByZWFsIG9iamVjdC4KKyAg
ICBPTl9DQUxMKCp0aGlzLCBEb1RoaXMoKSkKKyAgICAgICAgLldpbGxCeURlZmF1bHQoSW52b2tl
KCZyZWFsXywgJkZvbzo6RG9UaGlzKSk7CisgICAgT05fQ0FMTCgqdGhpcywgRG9UaGF0KF8pKQor
ICAgICAgICAuV2lsbEJ5RGVmYXVsdChJbnZva2UoJnJlYWxfLCAmRm9vOjpEb1RoYXQpKTsKKyAg
ICAuLi4KKyAgfQorICBNT0NLX01FVEhPRDAoRG9UaGlzLCAuLi4pOworICBNT0NLX01FVEhPRDEo
RG9UaGF0LCAuLi4pOworICAuLi4KKyBwcml2YXRlOgorICBGb28gcmVhbF87Cit9OworLi4uCisK
KyAgTW9ja0ZvbyBtb2NrOworCisgIEVYUEVDVF9DQUxMKG1vY2ssIERvVGhpcygpKQorICAgICAg
LlRpbWVzKDMpOworICBFWFBFQ1RfQ0FMTChtb2NrLCBEb1RoYXQoIkhpIikpCisgICAgICAuVGlt
ZXMoQXRMZWFzdCgxKSk7CisgIC4uLiB1c2UgbW9jayBpbiB0ZXN0IC4uLgorYGBgCisKK1dpdGgg
dGhpcywgR29vZ2xlIE1vY2sgd2lsbCB2ZXJpZnkgdGhhdCB5b3VyIGNvZGUgbWFkZSB0aGUgcmln
aHQgY2FsbHMKKyh3aXRoIHRoZSByaWdodCBhcmd1bWVudHMsIGluIHRoZSByaWdodCBvcmRlciwg
Y2FsbGVkIHRoZSByaWdodCBudW1iZXIKK29mIHRpbWVzLCBldGMpLCBhbmQgYSByZWFsIG9iamVj
dCB3aWxsIGFuc3dlciB0aGUgY2FsbHMgKHNvIHRoZQorYmVoYXZpb3Igd2lsbCBiZSB0aGUgc2Ft
ZSBhcyBpbiBwcm9kdWN0aW9uKS4gVGhpcyBnaXZlcyB5b3UgdGhlIGJlc3QKK29mIGJvdGggd29y
bGRzLgorCisjIyBEZWxlZ2F0aW5nIENhbGxzIHRvIGEgUGFyZW50IENsYXNzICMjCisKK0lkZWFs
bHksIHlvdSBzaG91bGQgY29kZSB0byBpbnRlcmZhY2VzLCB3aG9zZSBtZXRob2RzIGFyZSBhbGwg
cHVyZQordmlydHVhbC4gSW4gcmVhbGl0eSwgc29tZXRpbWVzIHlvdSBkbyBuZWVkIHRvIG1vY2sg
YSB2aXJ0dWFsIG1ldGhvZAordGhhdCBpcyBub3QgcHVyZSAoaS5lLCBpdCBhbHJlYWR5IGhhcyBh
biBpbXBsZW1lbnRhdGlvbikuIEZvciBleGFtcGxlOgorCitgYGAKK2NsYXNzIEZvbyB7CisgcHVi
bGljOgorICB2aXJ0dWFsIH5Gb28oKTsKKworICB2aXJ0dWFsIHZvaWQgUHVyZShpbnQgbikgPSAw
OworICB2aXJ0dWFsIGludCBDb25jcmV0ZShjb25zdCBjaGFyKiBzdHIpIHsgLi4uIH0KK307CisK
K2NsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKKyBwdWJsaWM6CisgIC8vIE1vY2tpbmcgYSBw
dXJlIG1ldGhvZC4KKyAgTU9DS19NRVRIT0QxKFB1cmUsIHZvaWQoaW50IG4pKTsKKyAgLy8gTW9j
a2luZyBhIGNvbmNyZXRlIG1ldGhvZC4gIEZvbzo6Q29uY3JldGUoKSBpcyBzaGFkb3dlZC4KKyAg
TU9DS19NRVRIT0QxKENvbmNyZXRlLCBpbnQoY29uc3QgY2hhciogc3RyKSk7Cit9OworYGBgCisK
K1NvbWV0aW1lcyB5b3UgbWF5IHdhbnQgdG8gY2FsbCBgRm9vOjpDb25jcmV0ZSgpYCBpbnN0ZWFk
IG9mCitgTW9ja0Zvbzo6Q29uY3JldGUoKWAuIFBlcmhhcHMgeW91IHdhbnQgdG8gZG8gaXQgYXMg
cGFydCBvZiBhIHN0dWIKK2FjdGlvbiwgb3IgcGVyaGFwcyB5b3VyIHRlc3QgZG9lc24ndCBuZWVk
IHRvIG1vY2sgYENvbmNyZXRlKClgIGF0IGFsbAorKGJ1dCBpdCB3b3VsZCBiZSBvaC1zbyBwYWlu
ZnVsIHRvIGhhdmUgdG8gZGVmaW5lIGEgbmV3IG1vY2sgY2xhc3MKK3doZW5ldmVyIHlvdSBkb24n
dCBuZWVkIHRvIG1vY2sgb25lIG9mIGl0cyBtZXRob2RzKS4KKworVGhlIHRyaWNrIGlzIHRvIGxl
YXZlIGEgYmFjayBkb29yIGluIHlvdXIgbW9jayBjbGFzcyBmb3IgYWNjZXNzaW5nIHRoZQorcmVh
bCBtZXRob2RzIGluIHRoZSBiYXNlIGNsYXNzOgorCitgYGAKK2NsYXNzIE1vY2tGb28gOiBwdWJs
aWMgRm9vIHsKKyBwdWJsaWM6CisgIC8vIE1vY2tpbmcgYSBwdXJlIG1ldGhvZC4KKyAgTU9DS19N
RVRIT0QxKFB1cmUsIHZvaWQoaW50IG4pKTsKKyAgLy8gTW9ja2luZyBhIGNvbmNyZXRlIG1ldGhv
ZC4gIEZvbzo6Q29uY3JldGUoKSBpcyBzaGFkb3dlZC4KKyAgTU9DS19NRVRIT0QxKENvbmNyZXRl
LCBpbnQoY29uc3QgY2hhciogc3RyKSk7CisKKyAgLy8gVXNlIHRoaXMgdG8gY2FsbCBDb25jcmV0
ZSgpIGRlZmluZWQgaW4gRm9vLgorICBpbnQgRm9vQ29uY3JldGUoY29uc3QgY2hhciogc3RyKSB7
IHJldHVybiBGb286OkNvbmNyZXRlKHN0cik7IH0KK307CitgYGAKKworTm93LCB5b3UgY2FuIGNh
bGwgYEZvbzo6Q29uY3JldGUoKWAgaW5zaWRlIGFuIGFjdGlvbiBieToKKworYGBgCit1c2luZyA6
OnRlc3Rpbmc6Ol87Cit1c2luZyA6OnRlc3Rpbmc6Okludm9rZTsKKy4uLgorICBFWFBFQ1RfQ0FM
TChmb28sIENvbmNyZXRlKF8pKQorICAgICAgLldpbGxPbmNlKEludm9rZSgmZm9vLCAmTW9ja0Zv
bzo6Rm9vQ29uY3JldGUpKTsKK2BgYAorCitvciB0ZWxsIHRoZSBtb2NrIG9iamVjdCB0aGF0IHlv
dSBkb24ndCB3YW50IHRvIG1vY2sgYENvbmNyZXRlKClgOgorCitgYGAKK3VzaW5nIDo6dGVzdGlu
Zzo6SW52b2tlOworLi4uCisgIE9OX0NBTEwoZm9vLCBDb25jcmV0ZShfKSkKKyAgICAgIC5XaWxs
QnlEZWZhdWx0KEludm9rZSgmZm9vLCAmTW9ja0Zvbzo6Rm9vQ29uY3JldGUpKTsKK2BgYAorCiso
V2h5IGRvbid0IHdlIGp1c3Qgd3JpdGUgYEludm9rZSgmZm9vLCAmRm9vOjpDb25jcmV0ZSlgPyBJ
ZiB5b3UgZG8KK3RoYXQsIGBNb2NrRm9vOjpDb25jcmV0ZSgpYCB3aWxsIGJlIGNhbGxlZCAoYW5k
IGNhdXNlIGFuIGluZmluaXRlCityZWN1cnNpb24pIHNpbmNlIGBGb286OkNvbmNyZXRlKClgIGlz
IHZpcnR1YWwuIFRoYXQncyBqdXN0IGhvdyBDKysKK3dvcmtzLikKKworIyBVc2luZyBNYXRjaGVy
cyAjCisKKyMjIE1hdGNoaW5nIEFyZ3VtZW50IFZhbHVlcyBFeGFjdGx5ICMjCisKK1lvdSBjYW4g
c3BlY2lmeSBleGFjdGx5IHdoaWNoIGFyZ3VtZW50cyBhIG1vY2sgbWV0aG9kIGlzIGV4cGVjdGlu
ZzoKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6OlJldHVybjsKKy4uLgorICBFWFBFQ1RfQ0FMTChm
b28sIERvVGhpcyg1KSkKKyAgICAgIC5XaWxsT25jZShSZXR1cm4oJ2EnKSk7CisgIEVYUEVDVF9D
QUxMKGZvbywgRG9UaGF0KCJIZWxsbyIsIGJhcikpOworYGBgCisKKyMjIFVzaW5nIFNpbXBsZSBN
YXRjaGVycyAjIworCitZb3UgY2FuIHVzZSBtYXRjaGVycyB0byBtYXRjaCBhcmd1bWVudHMgdGhh
dCBoYXZlIGEgY2VydGFpbiBwcm9wZXJ0eToKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6OkdlOwor
dXNpbmcgOjp0ZXN0aW5nOjpOb3ROdWxsOwordXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm47CisuLi4K
KyAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoaXMoR2UoNSkpKSAgLy8gVGhlIGFyZ3VtZW50IG11c3Qg
YmUgPj0gNS4KKyAgICAgIC5XaWxsT25jZShSZXR1cm4oJ2EnKSk7CisgIEVYUEVDVF9DQUxMKGZv
bywgRG9UaGF0KCJIZWxsbyIsIE5vdE51bGwoKSkpOworICAvLyBUaGUgc2Vjb25kIGFyZ3VtZW50
IG11c3Qgbm90IGJlIE5VTEwuCitgYGAKKworQSBmcmVxdWVudGx5IHVzZWQgbWF0Y2hlciBpcyBg
X2AsIHdoaWNoIG1hdGNoZXMgYW55dGhpbmc6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpfOwor
dXNpbmcgOjp0ZXN0aW5nOjpOb3ROdWxsOworLi4uCisgIEVYUEVDVF9DQUxMKGZvbywgRG9UaGF0
KF8sIE5vdE51bGwoKSkpOworYGBgCisKKyMjIENvbWJpbmluZyBNYXRjaGVycyAjIworCitZb3Ug
Y2FuIGJ1aWxkIGNvbXBsZXggbWF0Y2hlcnMgZnJvbSBleGlzdGluZyBvbmVzIHVzaW5nIGBBbGxP
ZigpYCwKK2BBbnlPZigpYCwgYW5kIGBOb3QoKWA6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpB
bGxPZjsKK3VzaW5nIDo6dGVzdGluZzo6R3Q7Cit1c2luZyA6OnRlc3Rpbmc6Okhhc1N1YnN0cjsK
K3VzaW5nIDo6dGVzdGluZzo6TmU7Cit1c2luZyA6OnRlc3Rpbmc6Ok5vdDsKKy4uLgorICAvLyBU
aGUgYXJndW1lbnQgbXVzdCBiZSA+IDUgYW5kICE9IDEwLgorICBFWFBFQ1RfQ0FMTChmb28sIERv
VGhpcyhBbGxPZihHdCg1KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmUoMTAp
KSkpOworCisgIC8vIFRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IG5vdCBjb250YWluIHN1Yi1zdHJp
bmcgImJsYWgiLgorICBFWFBFQ1RfQ0FMTChmb28sIERvVGhhdChOb3QoSGFzU3Vic3RyKCJibGFo
IikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKSk7CitgYGAKKworIyMgQ2FzdGlu
ZyBNYXRjaGVycyAjIworCitHb29nbGUgTW9jayBtYXRjaGVycyBhcmUgc3RhdGljYWxseSB0eXBl
ZCwgbWVhbmluZyB0aGF0IHRoZSBjb21waWxlcgorY2FuIGNhdGNoIHlvdXIgbWlzdGFrZSBpZiB5
b3UgdXNlIGEgbWF0Y2hlciBvZiB0aGUgd3JvbmcgdHlwZSAoZm9yCitleGFtcGxlLCBpZiB5b3Ug
dXNlIGBFcSg1KWAgdG8gbWF0Y2ggYSBgc3RyaW5nYCBhcmd1bWVudCkuIEdvb2QgZm9yCit5b3Uh
CisKK1NvbWV0aW1lcywgaG93ZXZlciwgeW91IGtub3cgd2hhdCB5b3UncmUgZG9pbmcgYW5kIHdh
bnQgdGhlIGNvbXBpbGVyCit0byBnaXZlIHlvdSBzb21lIHNsYWNrLiBPbmUgZXhhbXBsZSBpcyB0
aGF0IHlvdSBoYXZlIGEgbWF0Y2hlciBmb3IKK2Bsb25nYCBhbmQgdGhlIGFyZ3VtZW50IHlvdSB3
YW50IHRvIG1hdGNoIGlzIGBpbnRgLiBXaGlsZSB0aGUgdHdvCit0eXBlcyBhcmVuJ3QgZXhhY3Rs
eSB0aGUgc2FtZSwgdGhlcmUgaXMgbm90aGluZyByZWFsbHkgd3Jvbmcgd2l0aAordXNpbmcgYSBg
TWF0Y2hlcjxsb25nPmAgdG8gbWF0Y2ggYW4gYGludGAgLSBhZnRlciBhbGwsIHdlIGNhbiBmaXJz
dAorY29udmVydCB0aGUgYGludGAgYXJndW1lbnQgdG8gYSBgbG9uZ2AgYmVmb3JlIGdpdmluZyBp
dCB0byB0aGUKK21hdGNoZXIuCisKK1RvIHN1cHBvcnQgdGhpcyBuZWVkLCBHb29nbGUgTW9jayBn
aXZlcyB5b3UgdGhlCitgU2FmZU1hdGNoZXJDYXN0PFQ+KG0pYCBmdW5jdGlvbi4gSXQgY2FzdHMg
YSBtYXRjaGVyIGBtYCB0byB0eXBlCitgTWF0Y2hlcjxUPmAuIFRvIGVuc3VyZSBzYWZldHksIEdv
b2dsZSBNb2NrIGNoZWNrcyB0aGF0IChsZXQgYFVgIGJlIHRoZQordHlwZSBgbWAgYWNjZXB0cyk6
CisKKyAgMS4gVHlwZSBgVGAgY2FuIGJlIGltcGxpY2l0bHkgY2FzdCB0byB0eXBlIGBVYDsKKyAg
MS4gV2hlbiBib3RoIGBUYCBhbmQgYFVgIGFyZSBidWlsdC1pbiBhcml0aG1ldGljIHR5cGVzIChg
Ym9vbGAsIGludGVnZXJzLCBhbmQgZmxvYXRpbmctcG9pbnQgbnVtYmVycyksIHRoZSBjb252ZXJz
aW9uIGZyb20gYFRgIHRvIGBVYCBpcyBub3QgbG9zc3kgKGluIG90aGVyIHdvcmRzLCBhbnkgdmFs
dWUgcmVwcmVzZW50YWJsZSBieSBgVGAgY2FuIGFsc28gYmUgcmVwcmVzZW50ZWQgYnkgYFVgKTsg
YW5kCisgIDEuIFdoZW4gYFVgIGlzIGEgcmVmZXJlbmNlLCBgVGAgbXVzdCBhbHNvIGJlIGEgcmVm
ZXJlbmNlIChhcyB0aGUgdW5kZXJseWluZyBtYXRjaGVyIG1heSBiZSBpbnRlcmVzdGVkIGluIHRo
ZSBhZGRyZXNzIG9mIHRoZSBgVWAgdmFsdWUpLgorCitUaGUgY29kZSB3b24ndCBjb21waWxlIGlm
IGFueSBvZiB0aGVzZSBjb25kaXRpb25zIGlzbid0IG1ldC4KKworSGVyZSdzIG9uZSBleGFtcGxl
OgorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6U2FmZU1hdGNoZXJDYXN0OworCisvLyBBIGJhc2Ug
Y2xhc3MgYW5kIGEgY2hpbGQgY2xhc3MuCitjbGFzcyBCYXNlIHsgLi4uIH07CitjbGFzcyBEZXJp
dmVkIDogcHVibGljIEJhc2UgeyAuLi4gfTsKKworY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28g
eworIHB1YmxpYzoKKyAgTU9DS19NRVRIT0QxKERvVGhpcywgdm9pZChEZXJpdmVkKiBkZXJpdmVk
KSk7Cit9OworLi4uCisKKyAgTW9ja0ZvbyBmb287CisgIC8vIG0gaXMgYSBNYXRjaGVyPEJhc2Uq
PiB3ZSBnb3QgZnJvbSBzb21ld2hlcmUuCisgIEVYUEVDVF9DQUxMKGZvbywgRG9UaGlzKFNhZmVN
YXRjaGVyQ2FzdDxEZXJpdmVkKj4obSkpKTsKK2BgYAorCitJZiB5b3UgZmluZCBgU2FmZU1hdGNo
ZXJDYXN0PFQ+KG0pYCB0b28gbGltaXRpbmcsIHlvdSBjYW4gdXNlIGEgc2ltaWxhcgorZnVuY3Rp
b24gYE1hdGNoZXJDYXN0PFQ+KG0pYC4gVGhlIGRpZmZlcmVuY2UgaXMgdGhhdCBgTWF0Y2hlckNh
c3RgIHdvcmtzCithcyBsb25nIGFzIHlvdSBjYW4gYHN0YXRpY19jYXN0YCB0eXBlIGBUYCB0byB0
eXBlIGBVYC4KKworYE1hdGNoZXJDYXN0YCBlc3NlbnRpYWxseSBsZXRzIHlvdSBieXBhc3MgQysr
J3MgdHlwZSBzeXN0ZW0KKyhgc3RhdGljX2Nhc3RgIGlzbid0IGFsd2F5cyBzYWZlIGFzIGl0IGNv
dWxkIHRocm93IGF3YXkgaW5mb3JtYXRpb24sCitmb3IgZXhhbXBsZSksIHNvIGJlIGNhcmVmdWwg
bm90IHRvIG1pc3VzZS9hYnVzZSBpdC4KKworIyMgU2VsZWN0aW5nIEJldHdlZW4gT3ZlcmxvYWRl
ZCBGdW5jdGlvbnMgIyMKKworSWYgeW91IGV4cGVjdCBhbiBvdmVybG9hZGVkIGZ1bmN0aW9uIHRv
IGJlIGNhbGxlZCwgdGhlIGNvbXBpbGVyIG1heQorbmVlZCBzb21lIGhlbHAgb24gd2hpY2ggb3Zl
cmxvYWRlZCB2ZXJzaW9uIGl0IGlzLgorCitUbyBkaXNhbWJpZ3VhdGUgZnVuY3Rpb25zIG92ZXJs
b2FkZWQgb24gdGhlIGNvbnN0LW5lc3Mgb2YgdGhpcyBvYmplY3QsCit1c2UgdGhlIGBDb25zdCgp
YCBhcmd1bWVudCB3cmFwcGVyLgorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6UmV0dXJuUmVmOwor
CitjbGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7CisgIC4uLgorICBNT0NLX01FVEhPRDAoR2V0
QmFyLCBCYXImKCkpOworICBNT0NLX0NPTlNUX01FVEhPRDAoR2V0QmFyLCBjb25zdCBCYXImKCkp
OworfTsKKy4uLgorCisgIE1vY2tGb28gZm9vOworICBCYXIgYmFyMSwgYmFyMjsKKyAgRVhQRUNU
X0NBTEwoZm9vLCBHZXRCYXIoKSkgICAgICAgICAvLyBUaGUgbm9uLWNvbnN0IEdldEJhcigpLgor
ICAgICAgLldpbGxPbmNlKFJldHVyblJlZihiYXIxKSk7CisgIEVYUEVDVF9DQUxMKENvbnN0KGZv
byksIEdldEJhcigpKSAgLy8gVGhlIGNvbnN0IEdldEJhcigpLgorICAgICAgLldpbGxPbmNlKFJl
dHVyblJlZihiYXIyKSk7CitgYGAKKworKGBDb25zdCgpYCBpcyBkZWZpbmVkIGJ5IEdvb2dsZSBN
b2NrIGFuZCByZXR1cm5zIGEgYGNvbnN0YCByZWZlcmVuY2UKK3RvIGl0cyBhcmd1bWVudC4pCisK
K1RvIGRpc2FtYmlndWF0ZSBvdmVybG9hZGVkIGZ1bmN0aW9ucyB3aXRoIHRoZSBzYW1lIG51bWJl
ciBvZiBhcmd1bWVudHMKK2J1dCBkaWZmZXJlbnQgYXJndW1lbnQgdHlwZXMsIHlvdSBtYXkgbmVl
ZCB0byBzcGVjaWZ5IHRoZSBleGFjdCB0eXBlCitvZiBhIG1hdGNoZXIsIGVpdGhlciBieSB3cmFw
cGluZyB5b3VyIG1hdGNoZXIgaW4gYE1hdGNoZXI8dHlwZT4oKWAsIG9yCit1c2luZyBhIG1hdGNo
ZXIgd2hvc2UgdHlwZSBpcyBmaXhlZCAoYFR5cGVkRXE8dHlwZT5gLCBgQW48dHlwZT4oKWAsCitl
dGMpOgorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6QW47Cit1c2luZyA6OnRlc3Rpbmc6Okx0Owor
dXNpbmcgOjp0ZXN0aW5nOjpNYXRjaGVyOwordXNpbmcgOjp0ZXN0aW5nOjpUeXBlZEVxOworCitj
bGFzcyBNb2NrUHJpbnRlciA6IHB1YmxpYyBQcmludGVyIHsKKyBwdWJsaWM6CisgIE1PQ0tfTUVU
SE9EMShQcmludCwgdm9pZChpbnQgbikpOworICBNT0NLX01FVEhPRDEoUHJpbnQsIHZvaWQoY2hh
ciBjKSk7Cit9OworCitURVNUKFByaW50ZXJUZXN0LCBQcmludCkgeworICBNb2NrUHJpbnRlciBw
cmludGVyOworCisgIEVYUEVDVF9DQUxMKHByaW50ZXIsIFByaW50KEFuPGludD4oKSkpOyAgICAg
ICAgICAgIC8vIHZvaWQgUHJpbnQoaW50KTsKKyAgRVhQRUNUX0NBTEwocHJpbnRlciwgUHJpbnQo
TWF0Y2hlcjxpbnQ+KEx0KDUpKSkpOyAgLy8gdm9pZCBQcmludChpbnQpOworICBFWFBFQ1RfQ0FM
TChwcmludGVyLCBQcmludChUeXBlZEVxPGNoYXI+KCdhJykpKTsgICAvLyB2b2lkIFByaW50KGNo
YXIpOworCisgIHByaW50ZXIuUHJpbnQoMyk7CisgIHByaW50ZXIuUHJpbnQoNik7CisgIHByaW50
ZXIuUHJpbnQoJ2EnKTsKK30KK2BgYAorCisjIyBQZXJmb3JtaW5nIERpZmZlcmVudCBBY3Rpb25z
IEJhc2VkIG9uIHRoZSBBcmd1bWVudHMgIyMKKworV2hlbiBhIG1vY2sgbWV0aG9kIGlzIGNhbGxl
ZCwgdGhlIF9sYXN0XyBtYXRjaGluZyBleHBlY3RhdGlvbiB0aGF0J3MKK3N0aWxsIGFjdGl2ZSB3
aWxsIGJlIHNlbGVjdGVkICh0aGluayAibmV3ZXIgb3ZlcnJpZGVzIG9sZGVyIikuIFNvLCB5b3UK
K2NhbiBtYWtlIGEgbWV0aG9kIGRvIGRpZmZlcmVudCB0aGluZ3MgZGVwZW5kaW5nIG9uIGl0cyBh
cmd1bWVudCB2YWx1ZXMKK2xpa2UgdGhpczoKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6Ol87Cit1
c2luZyA6OnRlc3Rpbmc6Okx0OwordXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm47CisuLi4KKyAgLy8g
VGhlIGRlZmF1bHQgY2FzZS4KKyAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoaXMoXykpCisgICAgICAu
V2lsbFJlcGVhdGVkbHkoUmV0dXJuKCdiJykpOworCisgIC8vIFRoZSBtb3JlIHNwZWNpZmljIGNh
c2UuCisgIEVYUEVDVF9DQUxMKGZvbywgRG9UaGlzKEx0KDUpKSkKKyAgICAgIC5XaWxsUmVwZWF0
ZWRseShSZXR1cm4oJ2EnKSk7CitgYGAKKworTm93LCBpZiBgZm9vLkRvVGhpcygpYCBpcyBjYWxs
ZWQgd2l0aCBhIHZhbHVlIGxlc3MgdGhhbiA1LCBgJ2EnYCB3aWxsCitiZSByZXR1cm5lZDsgb3Ro
ZXJ3aXNlIGAnYidgIHdpbGwgYmUgcmV0dXJuZWQuCisKKyMjIE1hdGNoaW5nIE11bHRpcGxlIEFy
Z3VtZW50cyBhcyBhIFdob2xlICMjCisKK1NvbWV0aW1lcyBpdCdzIG5vdCBlbm91Z2ggdG8gbWF0
Y2ggdGhlIGFyZ3VtZW50cyBpbmRpdmlkdWFsbHkuIEZvcgorZXhhbXBsZSwgd2UgbWF5IHdhbnQg
dG8gc2F5IHRoYXQgdGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgbGVzcyB0aGFuCit0aGUgc2Vj
b25kIGFyZ3VtZW50LiBUaGUgYFdpdGgoKWAgY2xhdXNlIGFsbG93cyB1cyB0byBtYXRjaAorYWxs
IGFyZ3VtZW50cyBvZiBhIG1vY2sgZnVuY3Rpb24gYXMgYSB3aG9sZS4gRm9yIGV4YW1wbGUsCisK
K2BgYAordXNpbmcgOjp0ZXN0aW5nOjpfOwordXNpbmcgOjp0ZXN0aW5nOjpMdDsKK3VzaW5nIDo6
dGVzdGluZzo6TmU7CisuLi4KKyAgRVhQRUNUX0NBTEwoZm9vLCBJblJhbmdlKE5lKDApLCBfKSkK
KyAgICAgIC5XaXRoKEx0KCkpOworYGBgCisKK3NheXMgdGhhdCB0aGUgZmlyc3QgYXJndW1lbnQg
b2YgYEluUmFuZ2UoKWAgbXVzdCBub3QgYmUgMCwgYW5kIG11c3QgYmUKK2xlc3MgdGhhbiB0aGUg
c2Vjb25kIGFyZ3VtZW50LgorCitUaGUgZXhwcmVzc2lvbiBpbnNpZGUgYFdpdGgoKWAgbXVzdCBi
ZSBhIG1hdGNoZXIgb2YgdHlwZQorYE1hdGNoZXI8dHIxOjp0dXBsZTxBMSwgLi4uLCBBbj4gPmAs
IHdoZXJlIGBBMWAsIC4uLiwgYEFuYCBhcmUgdGhlCit0eXBlcyBvZiB0aGUgZnVuY3Rpb24gYXJn
dW1lbnRzLgorCitZb3UgY2FuIGFsc28gd3JpdGUgYEFsbEFyZ3MobSlgIGluc3RlYWQgb2YgYG1g
IGluc2lkZSBgLldpdGgoKWAuIFRoZQordHdvIGZvcm1zIGFyZSBlcXVpdmFsZW50LCBidXQgYC5X
aXRoKEFsbEFyZ3MoTHQoKSkpYCBpcyBtb3JlIHJlYWRhYmxlCit0aGFuIGAuV2l0aChMdCgpKWAu
CisKK1lvdSBjYW4gdXNlIGBBcmdzPGsxLCAuLi4sIGtuPihtKWAgdG8gbWF0Y2ggdGhlIGBuYCBz
ZWxlY3RlZCBhcmd1bWVudHMKKyhhcyBhIHR1cGxlKSBhZ2FpbnN0IGBtYC4gRm9yIGV4YW1wbGUs
CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpfOwordXNpbmcgOjp0ZXN0aW5nOjpBbGxPZjsKK3Vz
aW5nIDo6dGVzdGluZzo6QXJnczsKK3VzaW5nIDo6dGVzdGluZzo6THQ7CisuLi4KKyAgRVhQRUNU
X0NBTEwoZm9vLCBCbGFoKF8sIF8sIF8pKQorICAgICAgLldpdGgoQWxsT2YoQXJnczwwLCAxPihM
dCgpKSwgQXJnczwxLCAyPihMdCgpKSkpOworYGBgCisKK3NheXMgdGhhdCBgQmxhaCgpYCB3aWxs
IGJlIGNhbGxlZCB3aXRoIGFyZ3VtZW50cyBgeGAsIGB5YCwgYW5kIGB6YCB3aGVyZQorYHggPCB5
IDwgemAuCisKK0FzIGEgY29udmVuaWVuY2UgYW5kIGV4YW1wbGUsIEdvb2dsZSBNb2NrIHByb3Zp
ZGVzIHNvbWUgbWF0Y2hlcnMgZm9yCisyLXR1cGxlcywgaW5jbHVkaW5nIHRoZSBgTHQoKWAgbWF0
Y2hlciBhYm92ZS4gU2VlIHRoZSBbQ2hlYXRTaGVldF0oVjFfNl9DaGVhdFNoZWV0Lm1kKSBmb3IK
K3RoZSBjb21wbGV0ZSBsaXN0LgorCitOb3RlIHRoYXQgaWYgeW91IHdhbnQgdG8gcGFzcyB0aGUg
YXJndW1lbnRzIHRvIGEgcHJlZGljYXRlIG9mIHlvdXIgb3duCisoZS5nLiBgLldpdGgoQXJnczww
LCAxPihUcnVseSgmTXlQcmVkaWNhdGUpKSlgKSwgdGhhdCBwcmVkaWNhdGUgTVVTVCBiZQord3Jp
dHRlbiB0byB0YWtlIGEgYHRyMTo6dHVwbGVgIGFzIGl0cyBhcmd1bWVudDsgR29vZ2xlIE1vY2sg
d2lsbCBwYXNzIHRoZSBgbmAKK3NlbGVjdGVkIGFyZ3VtZW50cyBhcyBfb25lXyBzaW5nbGUgdHVw
bGUgdG8gdGhlIHByZWRpY2F0ZS4KKworIyMgVXNpbmcgTWF0Y2hlcnMgYXMgUHJlZGljYXRlcyAj
IworCitIYXZlIHlvdSBub3RpY2VkIHRoYXQgYSBtYXRjaGVyIGlzIGp1c3QgYSBmYW5jeSBwcmVk
aWNhdGUgdGhhdCBhbHNvCitrbm93cyBob3cgdG8gZGVzY3JpYmUgaXRzZWxmPyBNYW55IGV4aXN0
aW5nIGFsZ29yaXRobXMgdGFrZSBwcmVkaWNhdGVzCithcyBhcmd1bWVudHMgKGUuZy4gdGhvc2Ug
ZGVmaW5lZCBpbiBTVEwncyBgPGFsZ29yaXRobT5gIGhlYWRlciksIGFuZAoraXQgd291bGQgYmUg
YSBzaGFtZSBpZiBHb29nbGUgTW9jayBtYXRjaGVycyBhcmUgbm90IGFsbG93ZWQgdG8KK3BhcnRp
Y2lwYXRlLgorCitMdWNraWx5LCB5b3UgY2FuIHVzZSBhIG1hdGNoZXIgd2hlcmUgYSB1bmFyeSBw
cmVkaWNhdGUgZnVuY3RvciBpcworZXhwZWN0ZWQgYnkgd3JhcHBpbmcgaXQgaW5zaWRlIHRoZSBg
TWF0Y2hlcygpYCBmdW5jdGlvbi4gRm9yIGV4YW1wbGUsCisKK2BgYAorI2luY2x1ZGUgPGFsZ29y
aXRobT4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKK3N0ZDo6dmVjdG9yPGludD4gdjsKKy4uLgorLy8g
SG93IG1hbnkgZWxlbWVudHMgaW4gdiBhcmUgPj0gMTA/Citjb25zdCBpbnQgY291bnQgPSBjb3Vu
dF9pZih2LmJlZ2luKCksIHYuZW5kKCksIE1hdGNoZXMoR2UoMTApKSk7CitgYGAKKworU2luY2Ug
eW91IGNhbiBidWlsZCBjb21wbGV4IG1hdGNoZXJzIGZyb20gc2ltcGxlciBvbmVzIGVhc2lseSB1
c2luZworR29vZ2xlIE1vY2ssIHRoaXMgZ2l2ZXMgeW91IGEgd2F5IHRvIGNvbnZlbmllbnRseSBj
b25zdHJ1Y3QgY29tcG9zaXRlCitwcmVkaWNhdGVzIChkb2luZyB0aGUgc2FtZSB1c2luZyBTVEwn
cyBgPGZ1bmN0aW9uYWw+YCBoZWFkZXIgaXMganVzdAorcGFpbmZ1bCkuIEZvciBleGFtcGxlLCBo
ZXJlJ3MgYSBwcmVkaWNhdGUgdGhhdCdzIHNhdGlzZmllZCBieSBhbnkKK251bWJlciB0aGF0IGlz
ID49IDAsIDw9IDEwMCwgYW5kICE9IDUwOgorCitgYGAKK01hdGNoZXMoQWxsT2YoR2UoMCksIExl
KDEwMCksIE5lKDUwKSkpCitgYGAKKworIyMgVXNpbmcgTWF0Y2hlcnMgaW4gR29vZ2xlIFRlc3Qg
QXNzZXJ0aW9ucyAjIworCitTaW5jZSBtYXRjaGVycyBhcmUgYmFzaWNhbGx5IHByZWRpY2F0ZXMg
dGhhdCBhbHNvIGtub3cgaG93IHRvIGRlc2NyaWJlCit0aGVtc2VsdmVzLCB0aGVyZSBpcyBhIHdh
eSB0byB0YWtlIGFkdmFudGFnZSBvZiB0aGVtIGluCitbR29vZ2xlIFRlc3RdKGh0dHA6Ly9jb2Rl
Lmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0LykgYXNzZXJ0aW9ucy4gSXQncworY2FsbGVkIGBBU1NF
UlRfVEhBVGAgYW5kIGBFWFBFQ1RfVEhBVGA6CisKK2BgYAorICBBU1NFUlRfVEhBVCh2YWx1ZSwg
bWF0Y2hlcik7ICAvLyBBc3NlcnRzIHRoYXQgdmFsdWUgbWF0Y2hlcyBtYXRjaGVyLgorICBFWFBF
Q1RfVEhBVCh2YWx1ZSwgbWF0Y2hlcik7ICAvLyBUaGUgbm9uLWZhdGFsIHZlcnNpb24uCitgYGAK
KworRm9yIGV4YW1wbGUsIGluIGEgR29vZ2xlIFRlc3QgdGVzdCB5b3UgY2FuIHdyaXRlOgorCitg
YGAKKyNpbmNsdWRlICJnbW9jay9nbW9jay5oIgorCit1c2luZyA6OnRlc3Rpbmc6OkFsbE9mOwor
dXNpbmcgOjp0ZXN0aW5nOjpHZTsKK3VzaW5nIDo6dGVzdGluZzo6TGU7Cit1c2luZyA6OnRlc3Rp
bmc6Ok1hdGNoZXNSZWdleDsKK3VzaW5nIDo6dGVzdGluZzo6U3RhcnRzV2l0aDsKKy4uLgorCisg
IEVYUEVDVF9USEFUKEZvbygpLCBTdGFydHNXaXRoKCJIZWxsbyIpKTsKKyAgRVhQRUNUX1RIQVQo
QmFyKCksIE1hdGNoZXNSZWdleCgiTGluZSBcXGQrIikpOworICBBU1NFUlRfVEhBVChCYXooKSwg
QWxsT2YoR2UoNSksIExlKDEwKSkpOworYGBgCisKK3doaWNoIChhcyB5b3UgY2FuIHByb2JhYmx5
IGd1ZXNzKSBleGVjdXRlcyBgRm9vKClgLCBgQmFyKClgLCBhbmQKK2BCYXooKWAsIGFuZCB2ZXJp
ZmllcyB0aGF0OgorCisgICogYEZvbygpYCByZXR1cm5zIGEgc3RyaW5nIHRoYXQgc3RhcnRzIHdp
dGggYCJIZWxsbyJgLgorICAqIGBCYXIoKWAgcmV0dXJucyBhIHN0cmluZyB0aGF0IG1hdGNoZXMg
cmVndWxhciBleHByZXNzaW9uIGAiTGluZSBcXGQrImAuCisgICogYEJheigpYCByZXR1cm5zIGEg
bnVtYmVyIGluIHRoZSByYW5nZSBbNSwgMTBdLgorCitUaGUgbmljZSB0aGluZyBhYm91dCB0aGVz
ZSBtYWNyb3MgaXMgdGhhdCBfdGhleSByZWFkIGxpa2UKK0VuZ2xpc2hfLiBUaGV5IGdlbmVyYXRl
IGluZm9ybWF0aXZlIG1lc3NhZ2VzIHRvby4gRm9yIGV4YW1wbGUsIGlmIHRoZQorZmlyc3QgYEVY
UEVDVF9USEFUKClgIGFib3ZlIGZhaWxzLCB0aGUgbWVzc2FnZSB3aWxsIGJlIHNvbWV0aGluZyBs
aWtlOgorCitgYGAKK1ZhbHVlIG9mOiBGb28oKQorICBBY3R1YWw6ICJIaSwgd29ybGQhIgorRXhw
ZWN0ZWQ6IHN0YXJ0cyB3aXRoICJIZWxsbyIKK2BgYAorCisqKkNyZWRpdDoqKiBUaGUgaWRlYSBv
ZiBgKEFTU0VSVHxFWFBFQ1QpX1RIQVRgIHdhcyBzdG9sZW4gZnJvbSB0aGUKK1tIYW1jcmVzdF0o
aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2hhbWNyZXN0LykgcHJvamVjdCwgd2hpY2ggYWRkcwor
YGFzc2VydFRoYXQoKWAgdG8gSlVuaXQuCisKKyMjIFVzaW5nIFByZWRpY2F0ZXMgYXMgTWF0Y2hl
cnMgIyMKKworR29vZ2xlIE1vY2sgcHJvdmlkZXMgYSBidWlsdC1pbiBzZXQgb2YgbWF0Y2hlcnMu
IEluIGNhc2UgeW91IGZpbmQgdGhlbQorbGFja2luZywgeW91IGNhbiB1c2UgYW4gYXJiaXRyYXkg
dW5hcnkgcHJlZGljYXRlIGZ1bmN0aW9uIG9yIGZ1bmN0b3IKK2FzIGEgbWF0Y2hlciAtIGFzIGxv
bmcgYXMgdGhlIHByZWRpY2F0ZSBhY2NlcHRzIGEgdmFsdWUgb2YgdGhlIHR5cGUKK3lvdSB3YW50
LiBZb3UgZG8gdGhpcyBieSB3cmFwcGluZyB0aGUgcHJlZGljYXRlIGluc2lkZSB0aGUgYFRydWx5
KClgCitmdW5jdGlvbiwgZm9yIGV4YW1wbGU6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpUcnVs
eTsKKworaW50IElzRXZlbihpbnQgbikgeyByZXR1cm4gKG4gJSAyKSA9PSAwID8gMSA6IDA7IH0K
Ky4uLgorCisgIC8vIEJhcigpIG11c3QgYmUgY2FsbGVkIHdpdGggYW4gZXZlbiBudW1iZXIuCisg
IEVYUEVDVF9DQUxMKGZvbywgQmFyKFRydWx5KElzRXZlbikpKTsKK2BgYAorCitOb3RlIHRoYXQg
dGhlIHByZWRpY2F0ZSBmdW5jdGlvbiAvIGZ1bmN0b3IgZG9lc24ndCBoYXZlIHRvIHJldHVybgor
YGJvb2xgLiBJdCB3b3JrcyBhcyBsb25nIGFzIHRoZSByZXR1cm4gdmFsdWUgY2FuIGJlIHVzZWQg
YXMgdGhlCitjb25kaXRpb24gaW4gc3RhdGVtZW50IGBpZiAoY29uZGl0aW9uKSAuLi5gLgorCisj
IyBNYXRjaGluZyBBcmd1bWVudHMgdGhhdCBBcmUgTm90IENvcHlhYmxlICMjCisKK1doZW4geW91
IGRvIGFuIGBFWFBFQ1RfQ0FMTChtb2NrX29iaiwgRm9vKGJhcikpYCwgR29vZ2xlIE1vY2sgc2F2
ZXMKK2F3YXkgYSBjb3B5IG9mIGBiYXJgLiBXaGVuIGBGb28oKWAgaXMgY2FsbGVkIGxhdGVyLCBH
b29nbGUgTW9jaworY29tcGFyZXMgdGhlIGFyZ3VtZW50IHRvIGBGb28oKWAgd2l0aCB0aGUgc2F2
ZWQgY29weSBvZiBgYmFyYC4gVGhpcword2F5LCB5b3UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91
dCBgYmFyYCBiZWluZyBtb2RpZmllZCBvciBkZXN0cm95ZWQKK2FmdGVyIHRoZSBgRVhQRUNUX0NB
TEwoKWAgaXMgZXhlY3V0ZWQuIFRoZSBzYW1lIGlzIHRydWUgd2hlbiB5b3UgdXNlCittYXRjaGVy
cyBsaWtlIGBFcShiYXIpYCwgYExlKGJhcilgLCBhbmQgc28gb24uCisKK0J1dCB3aGF0IGlmIGBi
YXJgIGNhbm5vdCBiZSBjb3BpZWQgKGkuZS4gaGFzIG5vIGNvcHkgY29uc3RydWN0b3IpPyBZb3UK
K2NvdWxkIGRlZmluZSB5b3VyIG93biBtYXRjaGVyIGZ1bmN0aW9uIGFuZCB1c2UgaXQgd2l0aCBg
VHJ1bHkoKWAsIGFzCit0aGUgcHJldmlvdXMgY291cGxlIG9mIHJlY2lwZXMgaGF2ZSBzaG93bi4g
T3IsIHlvdSBtYXkgYmUgYWJsZSB0byBnZXQKK2F3YXkgZnJvbSBpdCBpZiB5b3UgY2FuIGd1YXJh
bnRlZSB0aGF0IGBiYXJgIHdvbid0IGJlIGNoYW5nZWQgYWZ0ZXIKK3RoZSBgRVhQRUNUX0NBTEwo
KWAgaXMgZXhlY3V0ZWQuIEp1c3QgdGVsbCBHb29nbGUgTW9jayB0aGF0IGl0IHNob3VsZAorc2F2
ZSBhIHJlZmVyZW5jZSB0byBgYmFyYCwgaW5zdGVhZCBvZiBhIGNvcHkgb2YgaXQuIEhlcmUncyBo
b3c6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpFcTsKK3VzaW5nIDo6dGVzdGluZzo6QnlSZWY7
Cit1c2luZyA6OnRlc3Rpbmc6Okx0OworLi4uCisgIC8vIEV4cGVjdHMgdGhhdCBGb28oKSdzIGFy
Z3VtZW50ID09IGJhci4KKyAgRVhQRUNUX0NBTEwobW9ja19vYmosIEZvbyhFcShCeVJlZihiYXIp
KSkpOworCisgIC8vIEV4cGVjdHMgdGhhdCBGb28oKSdzIGFyZ3VtZW50IDwgYmFyLgorICBFWFBF
Q1RfQ0FMTChtb2NrX29iaiwgRm9vKEx0KEJ5UmVmKGJhcikpKSk7CitgYGAKKworUmVtZW1iZXI6
IGlmIHlvdSBkbyB0aGlzLCBkb24ndCBjaGFuZ2UgYGJhcmAgYWZ0ZXIgdGhlCitgRVhQRUNUX0NB
TEwoKWAsIG9yIHRoZSByZXN1bHQgaXMgdW5kZWZpbmVkLgorCisjIyBWYWxpZGF0aW5nIGEgTWVt
YmVyIG9mIGFuIE9iamVjdCAjIworCitPZnRlbiBhIG1vY2sgZnVuY3Rpb24gdGFrZXMgYSByZWZl
cmVuY2UgdG8gb2JqZWN0IGFzIGFuIGFyZ3VtZW50LiBXaGVuCittYXRjaGluZyB0aGUgYXJndW1l
bnQsIHlvdSBtYXkgbm90IHdhbnQgdG8gY29tcGFyZSB0aGUgZW50aXJlIG9iamVjdAorYWdhaW5z
dCBhIGZpeGVkIG9iamVjdCwgYXMgdGhhdCBtYXkgYmUgb3Zlci1zcGVjaWZpY2F0aW9uLiBJbnN0
ZWFkLAoreW91IG1heSBuZWVkIHRvIHZhbGlkYXRlIGEgY2VydGFpbiBtZW1iZXIgdmFyaWFibGUg
b3IgdGhlIHJlc3VsdCBvZiBhCitjZXJ0YWluIGdldHRlciBtZXRob2Qgb2YgdGhlIG9iamVjdC4g
WW91IGNhbiBkbyB0aGlzIHdpdGggYEZpZWxkKClgCithbmQgYFByb3BlcnR5KClgLiBNb3JlIHNw
ZWNpZmljYWxseSwKKworYGBgCitGaWVsZCgmRm9vOjpiYXIsIG0pCitgYGAKKworaXMgYSBtYXRj
aGVyIHRoYXQgbWF0Y2hlcyBhIGBGb29gIG9iamVjdCB3aG9zZSBgYmFyYCBtZW1iZXIgdmFyaWFi
bGUKK3NhdGlzZmllcyBtYXRjaGVyIGBtYC4KKworYGBgCitQcm9wZXJ0eSgmRm9vOjpiYXosIG0p
CitgYGAKKworaXMgYSBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhIGBGb29gIG9iamVjdCB3aG9zZSBg
YmF6KClgIG1ldGhvZCByZXR1cm5zCithIHZhbHVlIHRoYXQgc2F0aXNmaWVzIG1hdGNoZXIgYG1g
LgorCitGb3IgZXhhbXBsZToKKworPiB8IGBGaWVsZCgmRm9vOjpudW1iZXIsIEdlKDMpKWAgfCBN
YXRjaGVzIGB4YCB3aGVyZSBgeC5udW1iZXIgPj0gM2AuIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorPiB8IGBQ
cm9wZXJ0eSgmRm9vOjpuYW1lLCBTdGFydHNXaXRoKCJKb2huICIpKWAgfCBNYXRjaGVzIGB4YCB3
aGVyZSBgeC5uYW1lKClgIHN0YXJ0cyB3aXRoIGAiSm9obiAiYC4gfAorCitOb3RlIHRoYXQgaW4g
YFByb3BlcnR5KCZGb286OmJheiwgLi4uKWAsIG1ldGhvZCBgYmF6KClgIG11c3QgdGFrZSBubwor
YXJndW1lbnQgYW5kIGJlIGRlY2xhcmVkIGFzIGBjb25zdGAuCisKK0JUVywgYEZpZWxkKClgIGFu
ZCBgUHJvcGVydHkoKWAgY2FuIGFsc28gbWF0Y2ggcGxhaW4gcG9pbnRlcnMgdG8KK29iamVjdHMu
IEZvciBpbnN0YW5jZSwKKworYGBgCitGaWVsZCgmRm9vOjpudW1iZXIsIEdlKDMpKQorYGBgCisK
K21hdGNoZXMgYSBwbGFpbiBwb2ludGVyIGBwYCB3aGVyZSBgcC0+bnVtYmVyID49IDNgLiBJZiBg
cGAgaXMgYE5VTExgLAordGhlIG1hdGNoIHdpbGwgYWx3YXlzIGZhaWwgcmVnYXJkbGVzcyBvZiB0
aGUgaW5uZXIgbWF0Y2hlci4KKworV2hhdCBpZiB5b3Ugd2FudCB0byB2YWxpZGF0ZSBtb3JlIHRo
YW4gb25lIG1lbWJlcnMgYXQgdGhlIHNhbWUgdGltZT8KK1JlbWVtYmVyIHRoYXQgdGhlcmUgaXMg
YEFsbE9mKClgLgorCisjIyBWYWxpZGF0aW5nIHRoZSBWYWx1ZSBQb2ludGVkIHRvIGJ5IGEgUG9p
bnRlciBBcmd1bWVudCAjIworCitDKysgZnVuY3Rpb25zIG9mdGVuIHRha2UgcG9pbnRlcnMgYXMg
YXJndW1lbnRzLiBZb3UgY2FuIHVzZSBtYXRjaGVycworbGlrZSBgTlVMTGAsIGBOb3ROdWxsKClg
LCBhbmQgb3RoZXIgY29tcGFyaXNvbiBtYXRjaGVycyB0byBtYXRjaCBhCitwb2ludGVyLCBidXQg
d2hhdCBpZiB5b3Ugd2FudCB0byBtYWtlIHN1cmUgdGhlIHZhbHVlIF9wb2ludGVkIHRvXyBieQor
dGhlIHBvaW50ZXIsIGluc3RlYWQgb2YgdGhlIHBvaW50ZXIgaXRzZWxmLCBoYXMgYSBjZXJ0YWlu
IHByb3BlcnR5PworV2VsbCwgeW91IGNhbiB1c2UgdGhlIGBQb2ludGVlKG0pYCBtYXRjaGVyLgor
CitgUG9pbnRlZShtKWAgbWF0Y2hlcyBhIHBvaW50ZXIgaWZmIGBtYCBtYXRjaGVzIHRoZSB2YWx1
ZSB0aGUgcG9pbnRlcgorcG9pbnRzIHRvLiBGb3IgZXhhbXBsZToKKworYGBgCit1c2luZyA6OnRl
c3Rpbmc6OkdlOwordXNpbmcgOjp0ZXN0aW5nOjpQb2ludGVlOworLi4uCisgIEVYUEVDVF9DQUxM
KGZvbywgQmFyKFBvaW50ZWUoR2UoMykpKSk7CitgYGAKKworZXhwZWN0cyBgZm9vLkJhcigpYCB0
byBiZSBjYWxsZWQgd2l0aCBhIHBvaW50ZXIgdGhhdCBwb2ludHMgdG8gYSB2YWx1ZQorZ3JlYXRl
ciB0aGFuIG9yIGVxdWFsIHRvIDMuCisKK09uZSBuaWNlIHRoaW5nIGFib3V0IGBQb2ludGVlKClg
IGlzIHRoYXQgaXQgdHJlYXRzIGEgYE5VTExgIHBvaW50ZXIgYXMKK2EgbWF0Y2ggZmFpbHVyZSwg
c28geW91IGNhbiB3cml0ZSBgUG9pbnRlZShtKWAgaW5zdGVhZCBvZgorCitgYGAKKyAgQWxsT2Yo
Tm90TnVsbCgpLCBQb2ludGVlKG0pKQorYGBgCisKK3dpdGhvdXQgd29ycnlpbmcgdGhhdCBhIGBO
VUxMYCBwb2ludGVyIHdpbGwgY3Jhc2ggeW91ciB0ZXN0LgorCitBbHNvLCBkaWQgd2UgdGVsbCB5
b3UgdGhhdCBgUG9pbnRlZSgpYCB3b3JrcyB3aXRoIGJvdGggcmF3IHBvaW50ZXJzCisqKmFuZCoq
IHNtYXJ0IHBvaW50ZXJzIChgbGlua2VkX3B0cmAsIGBzaGFyZWRfcHRyYCwgYHNjb3BlZF9wdHJg
LCBhbmQKK2V0Yyk/CisKK1doYXQgaWYgeW91IGhhdmUgYSBwb2ludGVyIHRvIHBvaW50ZXI/IFlv
dSBndWVzc2VkIGl0IC0geW91IGNhbiB1c2UKK25lc3RlZCBgUG9pbnRlZSgpYCB0byBwcm9iZSBk
ZWVwZXIgaW5zaWRlIHRoZSB2YWx1ZS4gRm9yIGV4YW1wbGUsCitgUG9pbnRlZShQb2ludGVlKEx0
KDMpKSlgIG1hdGNoZXMgYSBwb2ludGVyIHRoYXQgcG9pbnRzIHRvIGEgcG9pbnRlcgordGhhdCBw
b2ludHMgdG8gYSBudW1iZXIgbGVzcyB0aGFuIDMgKHdoYXQgYSBtb3V0aGZ1bC4uLikuCisKKyMj
IFRlc3RpbmcgYSBDZXJ0YWluIFByb3BlcnR5IG9mIGFuIE9iamVjdCAjIworCitTb21ldGltZXMg
eW91IHdhbnQgdG8gc3BlY2lmeSB0aGF0IGFuIG9iamVjdCBhcmd1bWVudCBoYXMgYSBjZXJ0YWlu
Citwcm9wZXJ0eSwgYnV0IHRoZXJlIGlzIG5vIGV4aXN0aW5nIG1hdGNoZXIgdGhhdCBkb2VzIHRo
aXMuIElmIHlvdSB3YW50Citnb29kIGVycm9yIG1lc3NhZ2VzLCB5b3Ugc2hvdWxkIGRlZmluZSBh
IG1hdGNoZXIuIElmIHlvdSB3YW50IHRvIGRvIGl0CitxdWljayBhbmQgZGlydHksIHlvdSBjb3Vs
ZCBnZXQgYXdheSB3aXRoIHdyaXRpbmcgYW4gb3JkaW5hcnkgZnVuY3Rpb24uCisKK0xldCdzIHNh
eSB5b3UgaGF2ZSBhIG1vY2sgZnVuY3Rpb24gdGhhdCB0YWtlcyBhbiBvYmplY3Qgb2YgdHlwZSBg
Rm9vYCwKK3doaWNoIGhhcyBhbiBgaW50IGJhcigpYCBtZXRob2QgYW5kIGFuIGBpbnQgYmF6KClg
IG1ldGhvZCwgYW5kIHlvdQord2FudCB0byBjb25zdHJhaW4gdGhhdCB0aGUgYXJndW1lbnQncyBg
YmFyKClgIHZhbHVlIHBsdXMgaXRzIGBiYXooKWAKK3ZhbHVlIGlzIGEgZ2l2ZW4gbnVtYmVyLiBI
ZXJlJ3MgaG93IHlvdSBjYW4gZGVmaW5lIGEgbWF0Y2hlciB0byBkbyBpdDoKKworYGBgCit1c2lu
ZyA6OnRlc3Rpbmc6Ok1hdGNoZXJJbnRlcmZhY2U7Cit1c2luZyA6OnRlc3Rpbmc6Ok1hdGNoUmVz
dWx0TGlzdGVuZXI7CisKK2NsYXNzIEJhclBsdXNCYXpFcU1hdGNoZXIgOiBwdWJsaWMgTWF0Y2hl
ckludGVyZmFjZTxjb25zdCBGb28mPiB7CisgcHVibGljOgorICBleHBsaWNpdCBCYXJQbHVzQmF6
RXFNYXRjaGVyKGludCBleHBlY3RlZF9zdW0pCisgICAgICA6IGV4cGVjdGVkX3N1bV8oZXhwZWN0
ZWRfc3VtKSB7fQorCisgIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxhaW4oY29uc3QgRm9vJiBm
b28sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHRMaXN0ZW5lciog
bGlzdGVuZXIpIGNvbnN0IHsKKyAgICByZXR1cm4gKGZvby5iYXIoKSArIGZvby5iYXooKSkgPT0g
ZXhwZWN0ZWRfc3VtXzsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBEZXNjcmliZVRvKDo6c3RkOjpv
c3RyZWFtKiBvcykgY29uc3QgeworICAgICpvcyA8PCAiYmFyKCkgKyBiYXooKSBlcXVhbHMgIiA8
PCBleHBlY3RlZF9zdW1fOworICB9CisKKyAgdmlydHVhbCB2b2lkIERlc2NyaWJlTmVnYXRpb25U
byg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKKyAgICAqb3MgPDwgImJhcigpICsgYmF6KCkg
ZG9lcyBub3QgZXF1YWwgIiA8PCBleHBlY3RlZF9zdW1fOworICB9CisgcHJpdmF0ZToKKyAgY29u
c3QgaW50IGV4cGVjdGVkX3N1bV87Cit9OworCitpbmxpbmUgTWF0Y2hlcjxjb25zdCBGb28mPiBC
YXJQbHVzQmF6RXEoaW50IGV4cGVjdGVkX3N1bSkgeworICByZXR1cm4gTWFrZU1hdGNoZXIobmV3
IEJhclBsdXNCYXpFcU1hdGNoZXIoZXhwZWN0ZWRfc3VtKSk7Cit9CisKKy4uLgorCisgIEVYUEVD
VF9DQUxMKC4uLiwgRG9UaGlzKEJhclBsdXNCYXpFcSg1KSkpLi4uOworYGBgCisKKyMjIE1hdGNo
aW5nIENvbnRhaW5lcnMgIyMKKworU29tZXRpbWVzIGFuIFNUTCBjb250YWluZXIgKGUuZy4gbGlz
dCwgdmVjdG9yLCBtYXAsIC4uLikgaXMgcGFzc2VkIHRvCithIG1vY2sgZnVuY3Rpb24gYW5kIHlv
dSBtYXkgd2FudCB0byB2YWxpZGF0ZSBpdC4gU2luY2UgbW9zdCBTVEwKK2NvbnRhaW5lcnMgc3Vw
cG9ydCB0aGUgYD09YCBvcGVyYXRvciwgeW91IGNhbiB3cml0ZQorYEVxKGV4cGVjdGVkX2NvbnRh
aW5lcilgIG9yIHNpbXBseSBgZXhwZWN0ZWRfY29udGFpbmVyYCB0byBtYXRjaCBhCitjb250YWlu
ZXIgZXhhY3RseS4KKworU29tZXRpbWVzLCB0aG91Z2gsIHlvdSBtYXkgd2FudCB0byBiZSBtb3Jl
IGZsZXhpYmxlIChmb3IgZXhhbXBsZSwgdGhlCitmaXJzdCBlbGVtZW50IG11c3QgYmUgYW4gZXhh
Y3QgbWF0Y2gsIGJ1dCB0aGUgc2Vjb25kIGVsZW1lbnQgY2FuIGJlCithbnkgcG9zaXRpdmUgbnVt
YmVyLCBhbmQgc28gb24pLiBBbHNvLCBjb250YWluZXJzIHVzZWQgaW4gdGVzdHMgb2Z0ZW4KK2hh
dmUgYSBzbWFsbCBudW1iZXIgb2YgZWxlbWVudHMsIGFuZCBoYXZpbmcgdG8gZGVmaW5lIHRoZSBl
eHBlY3RlZAorY29udGFpbmVyIG91dC1vZi1saW5lIGlzIGEgYml0IG9mIGEgaGFzc2xlLgorCitZ
b3UgY2FuIHVzZSB0aGUgYEVsZW1lbnRzQXJlKClgIG1hdGNoZXIgaW4gc3VjaCBjYXNlczoKKwor
YGBgCit1c2luZyA6OnRlc3Rpbmc6Ol87Cit1c2luZyA6OnRlc3Rpbmc6OkVsZW1lbnRzQXJlOwor
dXNpbmcgOjp0ZXN0aW5nOjpHdDsKKy4uLgorCisgIE1PQ0tfTUVUSE9EMShGb28sIHZvaWQoY29u
c3QgdmVjdG9yPGludD4mIG51bWJlcnMpKTsKKy4uLgorCisgIEVYUEVDVF9DQUxMKG1vY2ssIEZv
byhFbGVtZW50c0FyZSgxLCBHdCgwKSwgXywgNSkpKTsKK2BgYAorCitUaGUgYWJvdmUgbWF0Y2hl
ciBzYXlzIHRoYXQgdGhlIGNvbnRhaW5lciBtdXN0IGhhdmUgNCBlbGVtZW50cywgd2hpY2gKK211
c3QgYmUgMSwgZ3JlYXRlciB0aGFuIDAsIGFueXRoaW5nLCBhbmQgNSByZXNwZWN0aXZlbHkuCisK
K2BFbGVtZW50c0FyZSgpYCBpcyBvdmVybG9hZGVkIHRvIHRha2UgMCB0byAxMCBhcmd1bWVudHMu
IElmIG1vcmUgYXJlCituZWVkZWQsIHlvdSBjYW4gcGxhY2UgdGhlbSBpbiBhIEMtc3R5bGUgYXJy
YXkgYW5kIHVzZQorYEVsZW1lbnRzQXJlQXJyYXkoKWAgaW5zdGVhZDoKKworYGBgCit1c2luZyA6
OnRlc3Rpbmc6OkVsZW1lbnRzQXJlQXJyYXk7CisuLi4KKworICAvLyBFbGVtZW50c0FyZUFycmF5
IGFjY2VwdHMgYW4gYXJyYXkgb2YgZWxlbWVudCB2YWx1ZXMuCisgIGNvbnN0IGludCBleHBlY3Rl
ZF92ZWN0b3IxW10gPSB7IDEsIDUsIDIsIDQsIC4uLiB9OworICBFWFBFQ1RfQ0FMTChtb2NrLCBG
b28oRWxlbWVudHNBcmVBcnJheShleHBlY3RlZF92ZWN0b3IxKSkpOworCisgIC8vIE9yLCBhbiBh
cnJheSBvZiBlbGVtZW50IG1hdGNoZXJzLgorICBNYXRjaGVyPGludD4gZXhwZWN0ZWRfdmVjdG9y
MiA9IHsgMSwgR3QoMiksIF8sIDMsIC4uLiB9OworICBFWFBFQ1RfQ0FMTChtb2NrLCBGb28oRWxl
bWVudHNBcmVBcnJheShleHBlY3RlZF92ZWN0b3IyKSkpOworYGBgCisKK0luIGNhc2UgdGhlIGFy
cmF5IG5lZWRzIHRvIGJlIGR5bmFtaWNhbGx5IGNyZWF0ZWQgKGFuZCB0aGVyZWZvcmUgdGhlCith
cnJheSBzaXplIGNhbm5vdCBiZSBpbmZlcnJlZCBieSB0aGUgY29tcGlsZXIpLCB5b3UgY2FuIGdp
dmUKK2BFbGVtZW50c0FyZUFycmF5KClgIGFuIGFkZGl0aW9uYWwgYXJndW1lbnQgdG8gc3BlY2lm
eSB0aGUgYXJyYXkgc2l6ZToKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6OkVsZW1lbnRzQXJlQXJy
YXk7CisuLi4KKyAgaW50KiBjb25zdCBleHBlY3RlZF92ZWN0b3IzID0gbmV3IGludFtjb3VudF07
CisgIC4uLiBmaWxsIGV4cGVjdGVkX3ZlY3RvcjMgd2l0aCB2YWx1ZXMgLi4uCisgIEVYUEVDVF9D
QUxMKG1vY2ssIEZvbyhFbGVtZW50c0FyZUFycmF5KGV4cGVjdGVkX3ZlY3RvcjMsIGNvdW50KSkp
OworYGBgCisKKyoqVGlwczoqKgorCisgICogYEVsZW1lbnRBcmUqKClgIHdvcmtzIHdpdGggX2Fu
eV8gY29udGFpbmVyIHRoYXQgaW1wbGVtZW50cyB0aGUgU1RMIGl0ZXJhdG9yIGNvbmNlcHQgKGku
ZS4gaXQgaGFzIGEgYGNvbnN0X2l0ZXJhdG9yYCB0eXBlIGFuZCBzdXBwb3J0cyBgYmVnaW4oKS9l
bmQoKWApIGFuZCBzdXBwb3J0cyBgc2l6ZSgpYCwgbm90IGp1c3QgdGhlIG9uZXMgZGVmaW5lZCBp
biBTVEwuIEl0IHdpbGwgZXZlbiB3b3JrIHdpdGggY29udGFpbmVyIHR5cGVzIHlldCB0byBiZSB3
cml0dGVuIC0gYXMgbG9uZyBhcyB0aGV5IGZvbGxvd3MgdGhlIGFib3ZlIHBhdHRlcm4uCisgICog
WW91IGNhbiB1c2UgbmVzdGVkIGBFbGVtZW50QXJlKigpYCB0byBtYXRjaCBuZXN0ZWQgKG11bHRp
LWRpbWVuc2lvbmFsKSBjb250YWluZXJzLgorICAqIElmIHRoZSBjb250YWluZXIgaXMgcGFzc2Vk
IGJ5IHBvaW50ZXIgaW5zdGVhZCBvZiBieSByZWZlcmVuY2UsIGp1c3Qgd3JpdGUgYFBvaW50ZWUo
RWxlbWVudHNBcmUqKC4uLikpYC4KKyAgKiBUaGUgb3JkZXIgb2YgZWxlbWVudHMgX21hdHRlcnNf
IGZvciBgRWxlbWVudHNBcmUqKClgLiBUaGVyZWZvcmUgZG9uJ3QgdXNlIGl0IHdpdGggY29udGFp
bmVycyB3aG9zZSBlbGVtZW50IG9yZGVyIGlzIHVuZGVmaW5lZCAoZS5nLiBgaGFzaF9tYXBgKS4K
KworIyMgU2hhcmluZyBNYXRjaGVycyAjIworCitVbmRlciB0aGUgaG9vZCwgYSBHb29nbGUgTW9j
ayBtYXRjaGVyIG9iamVjdCBjb25zaXN0cyBvZiBhIHBvaW50ZXIgdG8KK2EgcmVmLWNvdW50ZWQg
aW1wbGVtZW50YXRpb24gb2JqZWN0LiBDb3B5aW5nIG1hdGNoZXJzIGlzIGFsbG93ZWQgYW5kCit2
ZXJ5IGVmZmljaWVudCwgYXMgb25seSB0aGUgcG9pbnRlciBpcyBjb3BpZWQuIFdoZW4gdGhlIGxh
c3QgbWF0Y2hlcgordGhhdCByZWZlcmVuY2VzIHRoZSBpbXBsZW1lbnRhdGlvbiBvYmplY3QgZGll
cywgdGhlIGltcGxlbWVudGF0aW9uCitvYmplY3Qgd2lsbCBiZSBkZWxldGVkLgorCitUaGVyZWZv
cmUsIGlmIHlvdSBoYXZlIHNvbWUgY29tcGxleCBtYXRjaGVyIHRoYXQgeW91IHdhbnQgdG8gdXNl
IGFnYWluCithbmQgYWdhaW4sIHRoZXJlIGlzIG5vIG5lZWQgdG8gYnVpbGQgaXQgZXZlcnl0aW1l
LiBKdXN0IGFzc2lnbiBpdCB0byBhCittYXRjaGVyIHZhcmlhYmxlIGFuZCB1c2UgdGhhdCB2YXJp
YWJsZSByZXBlYXRlZGx5ISBGb3IgZXhhbXBsZSwKKworYGBgCisgIE1hdGNoZXI8aW50PiBpbl9y
YW5nZSA9IEFsbE9mKEd0KDUpLCBMZSgxMCkpOworICAuLi4gdXNlIGluX3JhbmdlIGFzIGEgbWF0
Y2hlciBpbiBtdWx0aXBsZSBFWFBFQ1RfQ0FMTHMgLi4uCitgYGAKKworIyBTZXR0aW5nIEV4cGVj
dGF0aW9ucyAjCisKKyMjIElnbm9yaW5nIFVuaW50ZXJlc3RpbmcgQ2FsbHMgIyMKKworSWYgeW91
IGFyZSBub3QgaW50ZXJlc3RlZCBpbiBob3cgYSBtb2NrIG1ldGhvZCBpcyBjYWxsZWQsIGp1c3Qg
ZG9uJ3QKK3NheSBhbnl0aGluZyBhYm91dCBpdC4gSW4gdGhpcyBjYXNlLCBpZiB0aGUgbWV0aG9k
IGlzIGV2ZXIgY2FsbGVkLAorR29vZ2xlIE1vY2sgd2lsbCBwZXJmb3JtIGl0cyBkZWZhdWx0IGFj
dGlvbiB0byBhbGxvdyB0aGUgdGVzdCBwcm9ncmFtCit0byBjb250aW51ZS4gSWYgeW91IGFyZSBu
b3QgaGFwcHkgd2l0aCB0aGUgZGVmYXVsdCBhY3Rpb24gdGFrZW4gYnkKK0dvb2dsZSBNb2NrLCB5
b3UgY2FuIG92ZXJyaWRlIGl0IHVzaW5nIGBEZWZhdWx0VmFsdWU8VD46OlNldCgpYAorKGRlc2Ny
aWJlZCBsYXRlciBpbiB0aGlzIGRvY3VtZW50KSBvciBgT05fQ0FMTCgpYC4KKworUGxlYXNlIG5v
dGUgdGhhdCBvbmNlIHlvdSBleHByZXNzZWQgaW50ZXJlc3QgaW4gYSBwYXJ0aWN1bGFyIG1vY2sK
K21ldGhvZCAodmlhIGBFWFBFQ1RfQ0FMTCgpYCksIGFsbCBpbnZvY2F0aW9ucyB0byBpdCBtdXN0
IG1hdGNoIHNvbWUKK2V4cGVjdGF0aW9uLiBJZiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBidXQg
dGhlIGFyZ3VtZW50cyBkb24ndCBtYXRjaAorYW55IGBFWFBFQ1RfQ0FMTCgpYCBzdGF0ZW1lbnQs
IGl0IHdpbGwgYmUgYW4gZXJyb3IuCisKKyMjIERpc2FsbG93aW5nIFVuZXhwZWN0ZWQgQ2FsbHMg
IyMKKworSWYgYSBtb2NrIG1ldGhvZCBzaG91bGRuJ3QgYmUgY2FsbGVkIGF0IGFsbCwgZXhwbGlj
aXRseSBzYXkgc286CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpfOworLi4uCisgIEVYUEVDVF9D
QUxMKGZvbywgQmFyKF8pKQorICAgICAgLlRpbWVzKDApOworYGBgCisKK0lmIHNvbWUgY2FsbHMg
dG8gdGhlIG1ldGhvZCBhcmUgYWxsb3dlZCwgYnV0IHRoZSByZXN0IGFyZSBub3QsIGp1c3QKK2xp
c3QgYWxsIHRoZSBleHBlY3RlZCBjYWxsczoKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6OkFueU51
bWJlcjsKK3VzaW5nIDo6dGVzdGluZzo6R3Q7CisuLi4KKyAgRVhQRUNUX0NBTEwoZm9vLCBCYXIo
NSkpOworICBFWFBFQ1RfQ0FMTChmb28sIEJhcihHdCgxMCkpKQorICAgICAgLlRpbWVzKEFueU51
bWJlcigpKTsKK2BgYAorCitBIGNhbGwgdG8gYGZvby5CYXIoKWAgdGhhdCBkb2Vzbid0IG1hdGNo
IGFueSBvZiB0aGUgYEVYUEVDVF9DQUxMKClgCitzdGF0ZW1lbnRzIHdpbGwgYmUgYW4gZXJyb3Iu
CisKKyMjIEV4cGVjdGluZyBPcmRlcmVkIENhbGxzICMjCisKK0FsdGhvdWdoIGFuIGBFWFBFQ1Rf
Q0FMTCgpYCBzdGF0ZW1lbnQgZGVmaW5lZCBlYXJsaWVyIHRha2VzIHByZWNlZGVuY2UKK3doZW4g
R29vZ2xlIE1vY2sgdHJpZXMgdG8gbWF0Y2ggYSBmdW5jdGlvbiBjYWxsIHdpdGggYW4gZXhwZWN0
YXRpb24sCitieSBkZWZhdWx0IGNhbGxzIGRvbid0IGhhdmUgdG8gaGFwcGVuIGluIHRoZSBvcmRl
ciBgRVhQRUNUX0NBTEwoKWAKK3N0YXRlbWVudHMgYXJlIHdyaXR0ZW4uIEZvciBleGFtcGxlLCBp
ZiB0aGUgYXJndW1lbnRzIG1hdGNoIHRoZQorbWF0Y2hlcnMgaW4gdGhlIHRoaXJkIGBFWFBFQ1Rf
Q0FMTCgpYCwgYnV0IG5vdCB0aG9zZSBpbiB0aGUgZmlyc3QgdHdvLAordGhlbiB0aGUgdGhpcmQg
ZXhwZWN0YXRpb24gd2lsbCBiZSB1c2VkLgorCitJZiB5b3Ugd291bGQgcmF0aGVyIGhhdmUgYWxs
IGNhbGxzIG9jY3VyIGluIHRoZSBvcmRlciBvZiB0aGUKK2V4cGVjdGF0aW9ucywgcHV0IHRoZSBg
RVhQRUNUX0NBTEwoKWAgc3RhdGVtZW50cyBpbiBhIGJsb2NrIHdoZXJlIHlvdQorZGVmaW5lIGEg
dmFyaWFibGUgb2YgdHlwZSBgSW5TZXF1ZW5jZWA6CisKK2BgYAorICB1c2luZyA6OnRlc3Rpbmc6
Ol87CisgIHVzaW5nIDo6dGVzdGluZzo6SW5TZXF1ZW5jZTsKKworICB7CisgICAgSW5TZXF1ZW5j
ZSBzOworCisgICAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoaXMoNSkpOworICAgIEVYUEVDVF9DQUxM
KGJhciwgRG9UaGF0KF8pKQorICAgICAgICAuVGltZXMoMik7CisgICAgRVhQRUNUX0NBTEwoZm9v
LCBEb1RoaXMoNikpOworICB9CitgYGAKKworSW4gdGhpcyBleGFtcGxlLCB3ZSBleHBlY3QgYSBj
YWxsIHRvIGBmb28uRG9UaGlzKDUpYCwgZm9sbG93ZWQgYnkgdHdvCitjYWxscyB0byBgYmFyLkRv
VGhhdCgpYCB3aGVyZSB0aGUgYXJndW1lbnQgY2FuIGJlIGFueXRoaW5nLCB3aGljaCBhcmUKK2lu
IHR1cm4gZm9sbG93ZWQgYnkgYSBjYWxsIHRvIGBmb28uRG9UaGlzKDYpYC4gSWYgYSBjYWxsIG9j
Y3VycmVkCitvdXQtb2Ytb3JkZXIsIEdvb2dsZSBNb2NrIHdpbGwgcmVwb3J0IGFuIGVycm9yLgor
CisjIyBFeHBlY3RpbmcgUGFydGlhbGx5IE9yZGVyZWQgQ2FsbHMgIyMKKworU29tZXRpbWVzIHJl
cXVpcmluZyBldmVyeXRoaW5nIHRvIG9jY3VyIGluIGEgcHJlZGV0ZXJtaW5lZCBvcmRlciBjYW4K
K2xlYWQgdG8gYnJpdHRsZSB0ZXN0cy4gRm9yIGV4YW1wbGUsIHdlIG1heSBjYXJlIGFib3V0IGBB
YCBvY2N1cnJpbmcKK2JlZm9yZSBib3RoIGBCYCBhbmQgYENgLCBidXQgYXJlbid0IGludGVyZXN0
ZWQgaW4gdGhlIHJlbGF0aXZlIG9yZGVyCitvZiBgQmAgYW5kIGBDYC4gSW4gdGhpcyBjYXNlLCB0
aGUgdGVzdCBzaG91bGQgcmVmbGVjdCBvdXIgcmVhbCBpbnRlbnQsCitpbnN0ZWFkIG9mIGJlaW5n
IG92ZXJseSBjb25zdHJhaW5pbmcuCisKK0dvb2dsZSBNb2NrIGFsbG93cyB5b3UgdG8gaW1wb3Nl
IGFuIGFyYml0cmFyeSBEQUcgKGRpcmVjdGVkIGFjeWNsaWMKK2dyYXBoKSBvbiB0aGUgY2FsbHMu
IE9uZSB3YXkgdG8gZXhwcmVzcyB0aGUgREFHIGlzIHRvIHVzZSB0aGUKK1tBZnRlcl0oaHR0cDov
L2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZW1vY2svd2lraS9WMV82X0NoZWF0U2hlZXQjVGhlX0Fm
dGVyX0NsYXVzZSkgY2xhdXNlIG9mIGBFWFBFQ1RfQ0FMTGAuCisKK0Fub3RoZXIgd2F5IGlzIHZp
YSB0aGUgYEluU2VxdWVuY2UoKWAgY2xhdXNlIChub3QgdGhlIHNhbWUgYXMgdGhlCitgSW5TZXF1
ZW5jZWAgY2xhc3MpLCB3aGljaCB3ZSBib3Jyb3dlZCBmcm9tIGpNb2NrIDIuIEl0J3MgbGVzcwor
ZmxleGlibGUgdGhhbiBgQWZ0ZXIoKWAsIGJ1dCBtb3JlIGNvbnZlbmllbnQgd2hlbiB5b3UgaGF2
ZSBsb25nIGNoYWlucworb2Ygc2VxdWVudGlhbCBjYWxscywgYXMgaXQgZG9lc24ndCByZXF1aXJl
IHlvdSB0byBjb21lIHVwIHdpdGgKK2RpZmZlcmVudCBuYW1lcyBmb3IgdGhlIGV4cGVjdGF0aW9u
cyBpbiB0aGUgY2hhaW5zLiAgSGVyZSdzIGhvdyBpdAord29ya3M6CisKK0lmIHdlIHZpZXcgYEVY
UEVDVF9DQUxMKClgIHN0YXRlbWVudHMgYXMgbm9kZXMgaW4gYSBncmFwaCwgYW5kIGFkZCBhbgor
ZWRnZSBmcm9tIG5vZGUgQSB0byBub2RlIEIgd2hlcmV2ZXIgQSBtdXN0IG9jY3VyIGJlZm9yZSBC
LCB3ZSBjYW4gZ2V0CithIERBRy4gV2UgdXNlIHRoZSB0ZXJtICJzZXF1ZW5jZSIgdG8gbWVhbiBh
IGRpcmVjdGVkIHBhdGggaW4gdGhpcworREFHLiBOb3csIGlmIHdlIGRlY29tcG9zZSB0aGUgREFH
IGludG8gc2VxdWVuY2VzLCB3ZSBqdXN0IG5lZWQgdG8ga25vdword2hpY2ggc2VxdWVuY2VzIGVh
Y2ggYEVYUEVDVF9DQUxMKClgIGJlbG9uZ3MgdG8gaW4gb3JkZXIgdG8gYmUgYWJsZSB0bworcmVj
b25zdHJ1Y3QgdGhlIG9yZ2luYWwgREFHLgorCitTbywgdG8gc3BlY2lmeSB0aGUgcGFydGlhbCBv
cmRlciBvbiB0aGUgZXhwZWN0YXRpb25zIHdlIG5lZWQgdG8gZG8gdHdvCit0aGluZ3M6IGZpcnN0
IHRvIGRlZmluZSBzb21lIGBTZXF1ZW5jZWAgb2JqZWN0cywgYW5kIHRoZW4gZm9yIGVhY2gKK2BF
WFBFQ1RfQ0FMTCgpYCBzYXkgd2hpY2ggYFNlcXVlbmNlYCBvYmplY3RzIGl0IGlzIHBhcnQKK29m
LiBFeHBlY3RhdGlvbnMgaW4gdGhlIHNhbWUgc2VxdWVuY2UgbXVzdCBvY2N1ciBpbiB0aGUgb3Jk
ZXIgdGhleSBhcmUKK3dyaXR0ZW4uIEZvciBleGFtcGxlLAorCitgYGAKKyAgdXNpbmcgOjp0ZXN0
aW5nOjpTZXF1ZW5jZTsKKworICBTZXF1ZW5jZSBzMSwgczI7CisKKyAgRVhQRUNUX0NBTEwoZm9v
LCBBKCkpCisgICAgICAuSW5TZXF1ZW5jZShzMSwgczIpOworICBFWFBFQ1RfQ0FMTChiYXIsIEIo
KSkKKyAgICAgIC5JblNlcXVlbmNlKHMxKTsKKyAgRVhQRUNUX0NBTEwoYmFyLCBDKCkpCisgICAg
ICAuSW5TZXF1ZW5jZShzMik7CisgIEVYUEVDVF9DQUxMKGZvbywgRCgpKQorICAgICAgLkluU2Vx
dWVuY2UoczIpOworYGBgCisKK3NwZWNpZmllcyB0aGUgZm9sbG93aW5nIERBRyAod2hlcmUgYHMx
YCBpcyBgQSAtPiBCYCwgYW5kIGBzMmAgaXMgYEEgLT4KK0MgLT4gRGApOgorCitgYGAKKyAgICAg
ICArLS0tPiBCCisgICAgICAgfAorICBBIC0tLXwKKyAgICAgICB8CisgICAgICAgKy0tLT4gQyAt
LS0+IEQKK2BgYAorCitUaGlzIG1lYW5zIHRoYXQgQSBtdXN0IG9jY3VyIGJlZm9yZSBCIGFuZCBD
LCBhbmQgQyBtdXN0IG9jY3VyIGJlZm9yZQorRC4gVGhlcmUncyBubyByZXN0cmljdGlvbiBhYm91
dCB0aGUgb3JkZXIgb3RoZXIgdGhhbiB0aGVzZS4KKworIyMgQ29udHJvbGxpbmcgV2hlbiBhbiBF
eHBlY3RhdGlvbiBSZXRpcmVzICMjCisKK1doZW4gYSBtb2NrIG1ldGhvZCBpcyBjYWxsZWQsIEdv
b2dsZSBNb2NrIG9ubHkgY29uc2lkZXIgZXhwZWN0YXRpb25zCit0aGF0IGFyZSBzdGlsbCBhY3Rp
dmUuIEFuIGV4cGVjdGF0aW9uIGlzIGFjdGl2ZSB3aGVuIGNyZWF0ZWQsIGFuZAorYmVjb21lcyBp
bmFjdGl2ZSAoYWthIF9yZXRpcmVzXykgd2hlbiBhIGNhbGwgdGhhdCBoYXMgdG8gb2NjdXIgbGF0
ZXIKK2hhcyBvY2N1cnJlZC4gRm9yIGV4YW1wbGUsIGluCisKK2BgYAorICB1c2luZyA6OnRlc3Rp
bmc6Ol87CisgIHVzaW5nIDo6dGVzdGluZzo6U2VxdWVuY2U7CisKKyAgU2VxdWVuY2UgczEsIHMy
OworCisgIEVYUEVDVF9DQUxMKGxvZywgTG9nKFdBUk5JTkcsIF8sICJGaWxlIHRvbyBsYXJnZS4i
KSkgICAgIC8vICMxCisgICAgICAuVGltZXMoQW55TnVtYmVyKCkpCisgICAgICAuSW5TZXF1ZW5j
ZShzMSwgczIpOworICBFWFBFQ1RfQ0FMTChsb2csIExvZyhXQVJOSU5HLCBfLCAiRGF0YSBzZXQg
aXMgZW1wdHkuIikpICAvLyAjMgorICAgICAgLkluU2VxdWVuY2UoczEpOworICBFWFBFQ1RfQ0FM
TChsb2csIExvZyhXQVJOSU5HLCBfLCAiVXNlciBub3QgZm91bmQuIikpICAgICAvLyAjMworICAg
ICAgLkluU2VxdWVuY2UoczIpOworYGBgCisKK2FzIHNvb24gYXMgZWl0aGVyICMyIG9yICMzIGlz
IG1hdGNoZWQsICMxIHdpbGwgcmV0aXJlLiBJZiBhIHdhcm5pbmcKK2AiRmlsZSB0b28gbGFyZ2Uu
ImAgaXMgbG9nZ2VkIGFmdGVyIHRoaXMsIGl0IHdpbGwgYmUgYW4gZXJyb3IuCisKK05vdGUgdGhh
dCBhbiBleHBlY3RhdGlvbiBkb2Vzbid0IHJldGlyZSBhdXRvbWF0aWNhbGx5IHdoZW4gaXQncwor
c2F0dXJhdGVkLiBGb3IgZXhhbXBsZSwKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6Ol87CisuLi4K
KyAgRVhQRUNUX0NBTEwobG9nLCBMb2coV0FSTklORywgXywgXykpOyAgICAgICAgICAgICAgICAg
IC8vICMxCisgIEVYUEVDVF9DQUxMKGxvZywgTG9nKFdBUk5JTkcsIF8sICJGaWxlIHRvbyBsYXJn
ZS4iKSk7ICAvLyAjMgorYGBgCisKK3NheXMgdGhhdCB0aGVyZSB3aWxsIGJlIGV4YWN0bHkgb25l
IHdhcm5pbmcgd2l0aCB0aGUgbWVzc2FnZSBgIkZpbGUKK3RvbyBsYXJnZS4iYC4gSWYgdGhlIHNl
Y29uZCB3YXJuaW5nIGNvbnRhaW5zIHRoaXMgbWVzc2FnZSB0b28sICMyIHdpbGwKK21hdGNoIGFn
YWluIGFuZCByZXN1bHQgaW4gYW4gdXBwZXItYm91bmQtdmlvbGF0ZWQgZXJyb3IuCisKK0lmIHRo
aXMgaXMgbm90IHdoYXQgeW91IHdhbnQsIHlvdSBjYW4gYXNrIGFuIGV4cGVjdGF0aW9uIHRvIHJl
dGlyZSBhcworc29vbiBhcyBpdCBiZWNvbWVzIHNhdHVyYXRlZDoKKworYGBgCit1c2luZyA6OnRl
c3Rpbmc6Ol87CisuLi4KKyAgRVhQRUNUX0NBTEwobG9nLCBMb2coV0FSTklORywgXywgXykpOyAg
ICAgICAgICAgICAgICAgLy8gIzEKKyAgRVhQRUNUX0NBTEwobG9nLCBMb2coV0FSTklORywgXywg
IkZpbGUgdG9vIGxhcmdlLiIpKSAgLy8gIzIKKyAgICAgIC5SZXRpcmVzT25TYXR1cmF0aW9uKCk7
CitgYGAKKworSGVyZSAjMiBjYW4gYmUgdXNlZCBvbmx5IG9uY2UsIHNvIGlmIHlvdSBoYXZlIHR3
byB3YXJuaW5ncyB3aXRoIHRoZQorbWVzc2FnZSBgIkZpbGUgdG9vIGxhcmdlLiJgLCB0aGUgZmly
c3Qgd2lsbCBtYXRjaCAjMiBhbmQgdGhlIHNlY29uZAord2lsbCBtYXRjaCAjMSAtIHRoZXJlIHdp
bGwgYmUgbm8gZXJyb3IuCisKKyMgVXNpbmcgQWN0aW9ucyAjCisKKyMjIFJldHVybmluZyBSZWZl
cmVuY2VzIGZyb20gTW9jayBNZXRob2RzICMjCisKK0lmIGEgbW9jayBmdW5jdGlvbidzIHJldHVy
biB0eXBlIGlzIGEgcmVmZXJlbmNlLCB5b3UgbmVlZCB0byB1c2UKK2BSZXR1cm5SZWYoKWAgaW5z
dGVhZCBvZiBgUmV0dXJuKClgIHRvIHJldHVybiBhIHJlc3VsdDoKKworYGBgCit1c2luZyA6OnRl
c3Rpbmc6OlJldHVyblJlZjsKKworY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28geworIHB1Ymxp
YzoKKyAgTU9DS19NRVRIT0QwKEdldEJhciwgQmFyJigpKTsKK307CisuLi4KKworICBNb2NrRm9v
IGZvbzsKKyAgQmFyIGJhcjsKKyAgRVhQRUNUX0NBTEwoZm9vLCBHZXRCYXIoKSkKKyAgICAgIC5X
aWxsT25jZShSZXR1cm5SZWYoYmFyKSk7CitgYGAKKworIyMgUmV0dXJuaW5nIExpdmUgVmFsdWVz
IGZyb20gTW9jayBNZXRob2RzICMjCisKK1RoZSBgUmV0dXJuKHgpYCBhY3Rpb24gc2F2ZXMgYSBj
b3B5IG9mIGB4YCB3aGVuIHRoZSBhY3Rpb24gaXMKK19jcmVhdGVkXywgYW5kIGFsd2F5cyByZXR1
cm5zIHRoZSBzYW1lIHZhbHVlIHdoZW5ldmVyIGl0J3MKK2V4ZWN1dGVkLiBTb21ldGltZXMgeW91
IG1heSB3YW50IHRvIGluc3RlYWQgcmV0dXJuIHRoZSBfbGl2ZV8gdmFsdWUgb2YKK2B4YCAoaS5l
LiBpdHMgdmFsdWUgYXQgdGhlIHRpbWUgd2hlbiB0aGUgYWN0aW9uIGlzIF9leGVjdXRlZF8uKS4K
KworSWYgdGhlIG1vY2sgZnVuY3Rpb24ncyByZXR1cm4gdHlwZSBpcyBhIHJlZmVyZW5jZSwgeW91
IGNhbiBkbyBpdCB1c2luZworYFJldHVyblJlZih4KWAsIGFzIHNob3duIGluIHRoZSBwcmV2aW91
cyByZWNpcGUgKCJSZXR1cm5pbmcgUmVmZXJlbmNlcworZnJvbSBNb2NrIE1ldGhvZHMiKS4gSG93
ZXZlciwgR29vZ2xlIE1vY2sgZG9lc24ndCBsZXQgeW91IHVzZQorYFJldHVyblJlZigpYCBpbiBh
IG1vY2sgZnVuY3Rpb24gd2hvc2UgcmV0dXJuIHR5cGUgaXMgbm90IGEgcmVmZXJlbmNlLAorYXMg
ZG9pbmcgdGhhdCB1c3VhbGx5IGluZGljYXRlcyBhIHVzZXIgZXJyb3IuIFNvLCB3aGF0IHNoYWxs
IHlvdSBkbz8KKworWW91IG1heSBiZSB0ZW1wdGVkIHRvIHRyeSBgQnlSZWYoKWA6CisKK2BgYAor
dXNpbmcgdGVzdGluZzo6QnlSZWY7Cit1c2luZyB0ZXN0aW5nOjpSZXR1cm47CisKK2NsYXNzIE1v
Y2tGb28gOiBwdWJsaWMgRm9vIHsKKyBwdWJsaWM6CisgIE1PQ0tfTUVUSE9EMChHZXRWYWx1ZSwg
aW50KCkpOworfTsKKy4uLgorICBpbnQgeCA9IDA7CisgIE1vY2tGb28gZm9vOworICBFWFBFQ1Rf
Q0FMTChmb28sIEdldFZhbHVlKCkpCisgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKEJ5UmVm
KHgpKSk7CisgIHggPSA0MjsKKyAgRVhQRUNUX0VRKDQyLCBmb28uR2V0VmFsdWUoKSk7CitgYGAK
KworVW5mb3J0dW5hdGVseSwgaXQgZG9lc24ndCB3b3JrIGhlcmUuIFRoZSBhYm92ZSBjb2RlIHdp
bGwgZmFpbCB3aXRoIGVycm9yOgorCitgYGAKK1ZhbHVlIG9mOiBmb28uR2V0VmFsdWUoKQorICBB
Y3R1YWw6IDAKK0V4cGVjdGVkOiA0MgorYGBgCisKK1RoZSByZWFzb24gaXMgdGhhdCBgUmV0dXJu
KHZhbHVlKWAgY29udmVydHMgYHZhbHVlYCB0byB0aGUgYWN0dWFsCityZXR1cm4gdHlwZSBvZiB0
aGUgbW9jayBmdW5jdGlvbiBhdCB0aGUgdGltZSB3aGVuIHRoZSBhY3Rpb24gaXMKK19jcmVhdGVk
Xywgbm90IHdoZW4gaXQgaXMgX2V4ZWN1dGVkXy4gKFRoaXMgYmVoYXZpb3Igd2FzIGNob3NlbiBm
b3IKK3RoZSBhY3Rpb24gdG8gYmUgc2FmZSB3aGVuIGB2YWx1ZWAgaXMgYSBwcm94eSBvYmplY3Qg
dGhhdCByZWZlcmVuY2VzCitzb21lIHRlbXBvcmFyeSBvYmplY3RzLikgQXMgYSByZXN1bHQsIGBC
eVJlZih4KWAgaXMgY29udmVydGVkIHRvIGFuCitgaW50YCB2YWx1ZSAoaW5zdGVhZCBvZiBhIGBj
b25zdCBpbnQmYCkgd2hlbiB0aGUgZXhwZWN0YXRpb24gaXMgc2V0LAorYW5kIGBSZXR1cm4oQnlS
ZWYoeCkpYCB3aWxsIGFsd2F5cyByZXR1cm4gMC4KKworYFJldHVyblBvaW50ZWUocG9pbnRlcilg
IHdhcyBwcm92aWRlZCB0byBzb2x2ZSB0aGlzIHByb2JsZW0KK3NwZWNpZmljYWxseS4gSXQgcmV0
dXJucyB0aGUgdmFsdWUgcG9pbnRlZCB0byBieSBgcG9pbnRlcmAgYXQgdGhlIHRpbWUKK3RoZSBh
Y3Rpb24gaXMgX2V4ZWN1dGVkXzoKKworYGBgCit1c2luZyB0ZXN0aW5nOjpSZXR1cm5Qb2ludGVl
OworLi4uCisgIGludCB4ID0gMDsKKyAgTW9ja0ZvbyBmb287CisgIEVYUEVDVF9DQUxMKGZvbywg
R2V0VmFsdWUoKSkKKyAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm5Qb2ludGVlKCZ4KSk7ICAv
LyBOb3RlIHRoZSAmIGhlcmUuCisgIHggPSA0MjsKKyAgRVhQRUNUX0VRKDQyLCBmb28uR2V0VmFs
dWUoKSk7ICAvLyBUaGlzIHdpbGwgc3VjY2VlZCBub3cuCitgYGAKKworIyMgQ29tYmluaW5nIEFj
dGlvbnMgIyMKKworV2FudCB0byBkbyBtb3JlIHRoYW4gb25lIHRoaW5nIHdoZW4gYSBmdW5jdGlv
biBpcyBjYWxsZWQ/IFRoYXQncworZmluZS4gYERvQWxsKClgIGFsbG93IHlvdSB0byBkbyBzZXF1
ZW5jZSBvZiBhY3Rpb25zIGV2ZXJ5IHRpbWUuIE9ubHkKK3RoZSByZXR1cm4gdmFsdWUgb2YgdGhl
IGxhc3QgYWN0aW9uIGluIHRoZSBzZXF1ZW5jZSB3aWxsIGJlIHVzZWQuCisKK2BgYAordXNpbmcg
Ojp0ZXN0aW5nOjpEb0FsbDsKKworY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28geworIHB1Ymxp
YzoKKyAgTU9DS19NRVRIT0QxKEJhciwgYm9vbChpbnQgbikpOworfTsKKy4uLgorCisgIEVYUEVD
VF9DQUxMKGZvbywgQmFyKF8pKQorICAgICAgLldpbGxPbmNlKERvQWxsKGFjdGlvbl8xLAorICAg
ICAgICAgICAgICAgICAgICAgIGFjdGlvbl8yLAorICAgICAgICAgICAgICAgICAgICAgIC4uLgor
ICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbl9uKSk7CitgYGAKKworIyMgTW9ja2luZyBTaWRl
IEVmZmVjdHMgIyMKKworU29tZXRpbWVzIGEgbWV0aG9kIGV4aGliaXRzIGl0cyBlZmZlY3Qgbm90
IHZpYSByZXR1cm5pbmcgYSB2YWx1ZSBidXQKK3ZpYSBzaWRlIGVmZmVjdHMuIEZvciBleGFtcGxl
LCBpdCBtYXkgY2hhbmdlIHNvbWUgZ2xvYmFsIHN0YXRlIG9yCittb2RpZnkgYW4gb3V0cHV0IGFy
Z3VtZW50LiBUbyBtb2NrIHNpZGUgZWZmZWN0cywgaW4gZ2VuZXJhbCB5b3UgY2FuCitkZWZpbmUg
eW91ciBvd24gYWN0aW9uIGJ5IGltcGxlbWVudGluZyBgOjp0ZXN0aW5nOjpBY3Rpb25JbnRlcmZh
Y2VgLgorCitJZiBhbGwgeW91IG5lZWQgdG8gZG8gaXMgdG8gY2hhbmdlIGFuIG91dHB1dCBhcmd1
bWVudCwgdGhlIGJ1aWx0LWluCitgU2V0QXJnUG9pbnRlZSgpYCBhY3Rpb24gaXMgY29udmVuaWVu
dDoKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6OlNldEFyZ1BvaW50ZWU7CisKK2NsYXNzIE1vY2tN
dXRhdG9yIDogcHVibGljIE11dGF0b3IgeworIHB1YmxpYzoKKyAgTU9DS19NRVRIT0QyKE11dGF0
ZSwgdm9pZChib29sIG11dGF0ZSwgaW50KiB2YWx1ZSkpOworICAuLi4KK307CisuLi4KKworICBN
b2NrTXV0YXRvciBtdXRhdG9yOworICBFWFBFQ1RfQ0FMTChtdXRhdG9yLCBNdXRhdGUodHJ1ZSwg
XykpCisgICAgICAuV2lsbE9uY2UoU2V0QXJnUG9pbnRlZTwxPig1KSk7CitgYGAKKworSW4gdGhp
cyBleGFtcGxlLCB3aGVuIGBtdXRhdG9yLk11dGF0ZSgpYCBpcyBjYWxsZWQsIHdlIHdpbGwgYXNz
aWduIDUKK3RvIHRoZSBgaW50YCB2YXJpYWJsZSBwb2ludGVkIHRvIGJ5IGFyZ3VtZW50ICMxCiso
MC1iYXNlZCkuCisKK2BTZXRBcmdQb2ludGVlKClgIGNvbnZlbmllbnRseSBtYWtlcyBhbiBpbnRl
cm5hbCBjb3B5IG9mIHRoZQordmFsdWUgeW91IHBhc3MgdG8gaXQsIHJlbW92aW5nIHRoZSBuZWVk
IHRvIGtlZXAgdGhlIHZhbHVlIGluIHNjb3BlIGFuZAorYWxpdmUuIFRoZSBpbXBsaWNhdGlvbiBo
b3dldmVyIGlzIHRoYXQgdGhlIHZhbHVlIG11c3QgaGF2ZSBhIGNvcHkKK2NvbnN0cnVjdG9yIGFu
ZCBhc3NpZ25tZW50IG9wZXJhdG9yLgorCitJZiB0aGUgbW9jayBtZXRob2QgYWxzbyBuZWVkcyB0
byByZXR1cm4gYSB2YWx1ZSBhcyB3ZWxsLCB5b3UgY2FuIGNoYWluCitgU2V0QXJnUG9pbnRlZSgp
YCB3aXRoIGBSZXR1cm4oKWAgdXNpbmcgYERvQWxsKClgOgorCitgYGAKK3VzaW5nIDo6dGVzdGlu
Zzo6XzsKK3VzaW5nIDo6dGVzdGluZzo6UmV0dXJuOwordXNpbmcgOjp0ZXN0aW5nOjpTZXRBcmdQ
b2ludGVlOworCitjbGFzcyBNb2NrTXV0YXRvciA6IHB1YmxpYyBNdXRhdG9yIHsKKyBwdWJsaWM6
CisgIC4uLgorICBNT0NLX01FVEhPRDEoTXV0YXRlSW50LCBib29sKGludCogdmFsdWUpKTsKK307
CisuLi4KKworICBNb2NrTXV0YXRvciBtdXRhdG9yOworICBFWFBFQ1RfQ0FMTChtdXRhdG9yLCBN
dXRhdGVJbnQoXykpCisgICAgICAuV2lsbE9uY2UoRG9BbGwoU2V0QXJnUG9pbnRlZTwwPig1KSwK
KyAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4odHJ1ZSkpKTsKK2BgYAorCitJZiB0aGUgb3V0
cHV0IGFyZ3VtZW50IGlzIGFuIGFycmF5LCB1c2UgdGhlCitgU2V0QXJyYXlBcmd1bWVudDxOPihm
aXJzdCwgbGFzdClgIGFjdGlvbiBpbnN0ZWFkLiBJdCBjb3BpZXMgdGhlCitlbGVtZW50cyBpbiBz
b3VyY2UgcmFuZ2UgYFtmaXJzdCwgbGFzdClgIHRvIHRoZSBhcnJheSBwb2ludGVkIHRvIGJ5Cit0
aGUgYE5gLXRoICgwLWJhc2VkKSBhcmd1bWVudDoKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6Ok5v
dE51bGw7Cit1c2luZyA6OnRlc3Rpbmc6OlNldEFycmF5QXJndW1lbnQ7CisKK2NsYXNzIE1vY2tB
cnJheU11dGF0b3IgOiBwdWJsaWMgQXJyYXlNdXRhdG9yIHsKKyBwdWJsaWM6CisgIE1PQ0tfTUVU
SE9EMihNdXRhdGUsIHZvaWQoaW50KiB2YWx1ZXMsIGludCBudW1fdmFsdWVzKSk7CisgIC4uLgor
fTsKKy4uLgorCisgIE1vY2tBcnJheU11dGF0b3IgbXV0YXRvcjsKKyAgaW50IHZhbHVlc1s1XSA9
IHsgMSwgMiwgMywgNCwgNSB9OworICBFWFBFQ1RfQ0FMTChtdXRhdG9yLCBNdXRhdGUoTm90TnVs
bCgpLCA1KSkKKyAgICAgIC5XaWxsT25jZShTZXRBcnJheUFyZ3VtZW50PDA+KHZhbHVlcywgdmFs
dWVzICsgNSkpOworYGBgCisKK1RoaXMgYWxzbyB3b3JrcyB3aGVuIHRoZSBhcmd1bWVudCBpcyBh
biBvdXRwdXQgaXRlcmF0b3I6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpfOwordXNpbmcgOjp0
ZXN0aW5nOjpTZUFycmF5QXJndW1lbnQ7CisKK2NsYXNzIE1vY2tSb2xvZGV4IDogcHVibGljIFJv
bG9kZXggeworIHB1YmxpYzoKKyAgTU9DS19NRVRIT0QxKEdldE5hbWVzLCB2b2lkKHN0ZDo6YmFj
a19pbnNlcnRfaXRlcmF0b3I8dmVjdG9yPHN0cmluZz4gPikpOworICAuLi4KK307CisuLi4KKwor
ICBNb2NrUm9sb2RleCByb2xvZGV4OworICB2ZWN0b3I8c3RyaW5nPiBuYW1lczsKKyAgbmFtZXMu
cHVzaF9iYWNrKCJHZW9yZ2UiKTsKKyAgbmFtZXMucHVzaF9iYWNrKCJKb2huIik7CisgIG5hbWVz
LnB1c2hfYmFjaygiVGhvbWFzIik7CisgIEVYUEVDVF9DQUxMKHJvbG9kZXgsIEdldE5hbWVzKF8p
KQorICAgICAgLldpbGxPbmNlKFNldEFycmF5QXJndW1lbnQ8MD4obmFtZXMuYmVnaW4oKSwgbmFt
ZXMuZW5kKCkpKTsKK2BgYAorCisjIyBDaGFuZ2luZyBhIE1vY2sgT2JqZWN0J3MgQmVoYXZpb3Ig
QmFzZWQgb24gdGhlIFN0YXRlICMjCisKK0lmIHlvdSBleHBlY3QgYSBjYWxsIHRvIGNoYW5nZSB0
aGUgYmVoYXZpb3Igb2YgYSBtb2NrIG9iamVjdCwgeW91IGNhbiB1c2UgYDo6dGVzdGluZzo6SW5T
ZXF1ZW5jZWAgdG8gc3BlY2lmeSBkaWZmZXJlbnQgYmVoYXZpb3JzIGJlZm9yZSBhbmQgYWZ0ZXIg
dGhlIGNhbGw6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpJblNlcXVlbmNlOwordXNpbmcgOjp0
ZXN0aW5nOjpSZXR1cm47CisKKy4uLgorICB7CisgICAgSW5TZXF1ZW5jZSBzZXE7CisgICAgRVhQ
RUNUX0NBTEwobXlfbW9jaywgSXNEaXJ0eSgpKQorICAgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0
dXJuKHRydWUpKTsKKyAgICBFWFBFQ1RfQ0FMTChteV9tb2NrLCBGbHVzaCgpKTsKKyAgICBFWFBF
Q1RfQ0FMTChteV9tb2NrLCBJc0RpcnR5KCkpCisgICAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1
cm4oZmFsc2UpKTsKKyAgfQorICBteV9tb2NrLkZsdXNoSWZEaXJ0eSgpOworYGBgCisKK1RoaXMg
bWFrZXMgYG15X21vY2suSXNEaXJ0eSgpYCByZXR1cm4gYHRydWVgIGJlZm9yZSBgbXlfbW9jay5G
bHVzaCgpYCBpcyBjYWxsZWQgYW5kIHJldHVybiBgZmFsc2VgIGFmdGVyd2FyZHMuCisKK0lmIHRo
ZSBiZWhhdmlvciBjaGFuZ2UgaXMgbW9yZSBjb21wbGV4LCB5b3UgY2FuIHN0b3JlIHRoZSBlZmZl
Y3RzIGluIGEgdmFyaWFibGUgYW5kIG1ha2UgYSBtb2NrIG1ldGhvZCBnZXQgaXRzIHJldHVybiB2
YWx1ZSBmcm9tIHRoYXQgdmFyaWFibGU6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpfOwordXNp
bmcgOjp0ZXN0aW5nOjpTYXZlQXJnOwordXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm47CisKK0FDVElP
Tl9QKFJldHVyblBvaW50ZWUsIHApIHsgcmV0dXJuICpwOyB9CisuLi4KKyAgaW50IHByZXZpb3Vz
X3ZhbHVlID0gMDsKKyAgRVhQRUNUX0NBTEwobXlfbW9jaywgR2V0UHJldlZhbHVlKCkpCisgICAg
ICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuUG9pbnRlZSgmcHJldmlvdXNfdmFsdWUpKTsKKyAgRVhQ
RUNUX0NBTEwobXlfbW9jaywgVXBkYXRlVmFsdWUoXykpCisgICAgICAuV2lsbFJlcGVhdGVkbHko
U2F2ZUFyZzwwPigmcHJldmlvdXNfdmFsdWUpKTsKKyAgbXlfbW9jay5Eb1NvbWV0aGluZ1RvVXBk
YXRlVmFsdWUoKTsKK2BgYAorCitIZXJlIGBteV9tb2NrLkdldFByZXZWYWx1ZSgpYCB3aWxsIGFs
d2F5cyByZXR1cm4gdGhlIGFyZ3VtZW50IG9mIHRoZSBsYXN0IGBVcGRhdGVWYWx1ZSgpYCBjYWxs
LgorCisjIyBTZXR0aW5nIHRoZSBEZWZhdWx0IFZhbHVlIGZvciBhIFJldHVybiBUeXBlICMjCisK
K0lmIGEgbW9jayBtZXRob2QncyByZXR1cm4gdHlwZSBpcyBhIGJ1aWx0LWluIEMrKyB0eXBlIG9y
IHBvaW50ZXIsIGJ5CitkZWZhdWx0IGl0IHdpbGwgcmV0dXJuIDAgd2hlbiBpbnZva2VkLiBZb3Ug
b25seSBuZWVkIHRvIHNwZWNpZnkgYW4KK2FjdGlvbiBpZiB0aGlzIGRlZmF1bHQgdmFsdWUgZG9l
c24ndCB3b3JrIGZvciB5b3UuCisKK1NvbWV0aW1lcywgeW91IG1heSB3YW50IHRvIGNoYW5nZSB0
aGlzIGRlZmF1bHQgdmFsdWUsIG9yIHlvdSBtYXkgd2FudAordG8gc3BlY2lmeSBhIGRlZmF1bHQg
dmFsdWUgZm9yIHR5cGVzIEdvb2dsZSBNb2NrIGRvZXNuJ3Qga25vdworYWJvdXQuIFlvdSBjYW4g
ZG8gdGhpcyB1c2luZyB0aGUgYDo6dGVzdGluZzo6RGVmYXVsdFZhbHVlYCBjbGFzcwordGVtcGxh
dGU6CisKK2BgYAorY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28geworIHB1YmxpYzoKKyAgTU9D
S19NRVRIT0QwKENhbGN1bGF0ZUJhciwgQmFyKCkpOworfTsKKy4uLgorCisgIEJhciBkZWZhdWx0
X2JhcjsKKyAgLy8gU2V0cyB0aGUgZGVmYXVsdCByZXR1cm4gdmFsdWUgZm9yIHR5cGUgQmFyLgor
ICBEZWZhdWx0VmFsdWU8QmFyPjo6U2V0KGRlZmF1bHRfYmFyKTsKKworICBNb2NrRm9vIGZvbzsK
KworICAvLyBXZSBkb24ndCBuZWVkIHRvIHNwZWNpZnkgYW4gYWN0aW9uIGhlcmUsIGFzIHRoZSBk
ZWZhdWx0CisgIC8vIHJldHVybiB2YWx1ZSB3b3JrcyBmb3IgdXMuCisgIEVYUEVDVF9DQUxMKGZv
bywgQ2FsY3VsYXRlQmFyKCkpOworCisgIGZvby5DYWxjdWxhdGVCYXIoKTsgIC8vIFRoaXMgc2hv
dWxkIHJldHVybiBkZWZhdWx0X2Jhci4KKworICAvLyBVbnNldHMgdGhlIGRlZmF1bHQgcmV0dXJu
IHZhbHVlLgorICBEZWZhdWx0VmFsdWU8QmFyPjo6Q2xlYXIoKTsKK2BgYAorCitQbGVhc2Ugbm90
ZSB0aGF0IGNoYW5naW5nIHRoZSBkZWZhdWx0IHZhbHVlIGZvciBhIHR5cGUgY2FuIG1ha2UgeW91
Cit0ZXN0cyBoYXJkIHRvIHVuZGVyc3RhbmQuIFdlIHJlY29tbWVuZCB5b3UgdG8gdXNlIHRoaXMg
ZmVhdHVyZQoranVkaWNpb3VzbHkuIEZvciBleGFtcGxlLCB5b3UgbWF5IHdhbnQgdG8gbWFrZSBz
dXJlIHRoZSBgU2V0KClgIGFuZAorYENsZWFyKClgIGNhbGxzIGFyZSByaWdodCBuZXh0IHRvIHRo
ZSBjb2RlIHRoYXQgdXNlcyB5b3VyIG1vY2suCisKKyMjIFNldHRpbmcgdGhlIERlZmF1bHQgQWN0
aW9ucyBmb3IgYSBNb2NrIE1ldGhvZCAjIworCitZb3UndmUgbGVhcm5lZCBob3cgdG8gY2hhbmdl
IHRoZSBkZWZhdWx0IHZhbHVlIG9mIGEgZ2l2ZW4KK3R5cGUuIEhvd2V2ZXIsIHRoaXMgbWF5IGJl
IHRvbyBjb2Fyc2UgZm9yIHlvdXIgcHVycG9zZTogcGVyaGFwcyB5b3UKK2hhdmUgdHdvIG1vY2sg
bWV0aG9kcyB3aXRoIHRoZSBzYW1lIHJldHVybiB0eXBlIGFuZCB5b3Ugd2FudCB0aGVtIHRvCito
YXZlIGRpZmZlcmVudCBiZWhhdmlvcnMuIFRoZSBgT05fQ0FMTCgpYCBtYWNybyBhbGxvd3MgeW91
IHRvCitjdXN0b21pemUgeW91ciBtb2NrJ3MgYmVoYXZpb3IgYXQgdGhlIG1ldGhvZCBsZXZlbDoK
KworYGBgCit1c2luZyA6OnRlc3Rpbmc6Ol87Cit1c2luZyA6OnRlc3Rpbmc6OkFueU51bWJlcjsK
K3VzaW5nIDo6dGVzdGluZzo6R3Q7Cit1c2luZyA6OnRlc3Rpbmc6OlJldHVybjsKKy4uLgorICBP
Tl9DQUxMKGZvbywgU2lnbihfKSkKKyAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybigtMSkpOwor
ICBPTl9DQUxMKGZvbywgU2lnbigwKSkKKyAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybigwKSk7
CisgIE9OX0NBTEwoZm9vLCBTaWduKEd0KDApKSkKKyAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVy
bigxKSk7CisKKyAgRVhQRUNUX0NBTEwoZm9vLCBTaWduKF8pKQorICAgICAgLlRpbWVzKEFueU51
bWJlcigpKTsKKworICBmb28uU2lnbig1KTsgICAvLyBUaGlzIHNob3VsZCByZXR1cm4gMS4KKyAg
Zm9vLlNpZ24oLTkpOyAgLy8gVGhpcyBzaG91bGQgcmV0dXJuIC0xLgorICBmb28uU2lnbigwKTsg
ICAvLyBUaGlzIHNob3VsZCByZXR1cm4gMC4KK2BgYAorCitBcyB5b3UgbWF5IGhhdmUgZ3Vlc3Nl
ZCwgd2hlbiB0aGVyZSBhcmUgbW9yZSB0aGFuIG9uZSBgT05fQ0FMTCgpYAorc3RhdGVtZW50cywg
dGhlIG5ld3Mgb3JkZXIgdGFrZSBwcmVjZWRlbmNlIG92ZXIgdGhlIG9sZGVyIG9uZXMuIEluCitv
dGhlciB3b3JkcywgdGhlICoqbGFzdCoqIG9uZSB0aGF0IG1hdGNoZXMgdGhlIGZ1bmN0aW9uIGFy
Z3VtZW50cyB3aWxsCitiZSB1c2VkLiBUaGlzIG1hdGNoaW5nIG9yZGVyIGFsbG93cyB5b3UgdG8g
c2V0IHVwIHRoZSBjb21tb24gYmVoYXZpb3IKK2luIGEgbW9jayBvYmplY3QncyBjb25zdHJ1Y3Rv
ciBvciB0aGUgdGVzdCBmaXh0dXJlJ3Mgc2V0LXVwIHBoYXNlIGFuZAorc3BlY2lhbGl6ZSB0aGUg
bW9jaydzIGJlaGF2aW9yIGxhdGVyLgorCisjIyBVc2luZyBGdW5jdGlvbnMvTWV0aG9kcy9GdW5j
dG9ycyBhcyBBY3Rpb25zICMjCisKK0lmIHRoZSBidWlsdC1pbiBhY3Rpb25zIGRvbid0IHN1aXQg
eW91LCB5b3UgY2FuIGVhc2lseSB1c2UgYW4gZXhpc3RpbmcKK2Z1bmN0aW9uLCBtZXRob2QsIG9y
IGZ1bmN0b3IgYXMgYW4gYWN0aW9uOgorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6XzsKK3VzaW5n
IDo6dGVzdGluZzo6SW52b2tlOworCitjbGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7CisgcHVi
bGljOgorICBNT0NLX01FVEhPRDIoU3VtLCBpbnQoaW50IHgsIGludCB5KSk7CisgIE1PQ0tfTUVU
SE9EMShDb21wbGV4Sm9iLCBib29sKGludCB4KSk7Cit9OworCitpbnQgQ2FsY3VsYXRlU3VtKGlu
dCB4LCBpbnQgeSkgeyByZXR1cm4geCArIHk7IH0KKworY2xhc3MgSGVscGVyIHsKKyBwdWJsaWM6
CisgIGJvb2wgQ29tcGxleEpvYihpbnQgeCk7Cit9OworLi4uCisKKyAgTW9ja0ZvbyBmb287Cisg
IEhlbHBlciBoZWxwZXI7CisgIEVYUEVDVF9DQUxMKGZvbywgU3VtKF8sIF8pKQorICAgICAgLldp
bGxPbmNlKEludm9rZShDYWxjdWxhdGVTdW0pKTsKKyAgRVhQRUNUX0NBTEwoZm9vLCBDb21wbGV4
Sm9iKF8pKQorICAgICAgLldpbGxPbmNlKEludm9rZSgmaGVscGVyLCAmSGVscGVyOjpDb21wbGV4
Sm9iKSk7CisKKyAgZm9vLlN1bSg1LCA2KTsgICAgICAgLy8gSW52b2tlcyBDYWxjdWxhdGVTdW0o
NSwgNikuCisgIGZvby5Db21wbGV4Sm9iKDEwKTsgIC8vIEludm9rZXMgaGVscGVyLkNvbXBsZXhK
b2IoMTApOworYGBgCisKK1RoZSBvbmx5IHJlcXVpcmVtZW50IGlzIHRoYXQgdGhlIHR5cGUgb2Yg
dGhlIGZ1bmN0aW9uLCBldGMgbXVzdCBiZQorX2NvbXBhdGlibGVfIHdpdGggdGhlIHNpZ25hdHVy
ZSBvZiB0aGUgbW9jayBmdW5jdGlvbiwgbWVhbmluZyB0aGF0IHRoZQorbGF0dGVyJ3MgYXJndW1l
bnRzIGNhbiBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byB0aGUgY29ycmVzcG9uZGluZworYXJn
dW1lbnRzIG9mIHRoZSBmb3JtZXIsIGFuZCB0aGUgZm9ybWVyJ3MgcmV0dXJuIHR5cGUgY2FuIGJl
CitpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byB0aGF0IG9mIHRoZSBsYXR0ZXIuIFNvLCB5b3UgY2Fu
IGludm9rZQorc29tZXRoaW5nIHdob3NlIHR5cGUgaXMgX25vdF8gZXhhY3RseSB0aGUgc2FtZSBh
cyB0aGUgbW9jayBmdW5jdGlvbiwKK2FzIGxvbmcgYXMgaXQncyBzYWZlIHRvIGRvIHNvIC0gbmlj
ZSwgaHVoPworCisjIyBJbnZva2luZyBhIEZ1bmN0aW9uL01ldGhvZC9GdW5jdG9yIFdpdGhvdXQg
QXJndW1lbnRzICMjCisKK2BJbnZva2UoKWAgaXMgdmVyeSB1c2VmdWwgZm9yIGRvaW5nIGFjdGlv
bnMgdGhhdCBhcmUgbW9yZSBjb21wbGV4LiBJdAorcGFzc2VzIHRoZSBtb2NrIGZ1bmN0aW9uJ3Mg
YXJndW1lbnRzIHRvIHRoZSBmdW5jdGlvbiBvciBmdW5jdG9yIGJlaW5nCitpbnZva2VkIHN1Y2gg
dGhhdCB0aGUgY2FsbGVlIGhhcyB0aGUgZnVsbCBjb250ZXh0IG9mIHRoZSBjYWxsIHRvIHdvcmsK
K3dpdGguIElmIHRoZSBpbnZva2VkIGZ1bmN0aW9uIGlzIG5vdCBpbnRlcmVzdGVkIGluIHNvbWUg
b3IgYWxsIG9mIHRoZQorYXJndW1lbnRzLCBpdCBjYW4gc2ltcGx5IGlnbm9yZSB0aGVtLgorCitZ
ZXQsIGEgY29tbW9uIHBhdHRlcm4gaXMgdGhhdCBhIHRlc3QgYXV0aG9yIHdhbnRzIHRvIGludm9r
ZSBhIGZ1bmN0aW9uCit3aXRob3V0IHRoZSBhcmd1bWVudHMgb2YgdGhlIG1vY2sgZnVuY3Rpb24u
IGBJbnZva2UoKWAgYWxsb3dzIGhlciB0bworZG8gdGhhdCB1c2luZyBhIHdyYXBwZXIgZnVuY3Rp
b24gdGhhdCB0aHJvd3MgYXdheSB0aGUgYXJndW1lbnRzIGJlZm9yZQoraW52b2tpbmcgYW4gdW5k
ZXJsaW5pbmcgbnVsbGFyeSBmdW5jdGlvbi4gTmVlZGxlc3MgdG8gc2F5LCB0aGlzIGNhbiBiZQor
dGVkaW91cyBhbmQgb2JzY3VyZXMgdGhlIGludGVudCBvZiB0aGUgdGVzdC4KKworYEludm9rZVdp
dGhvdXRBcmdzKClgIHNvbHZlcyB0aGlzIHByb2JsZW0uIEl0J3MgbGlrZSBgSW52b2tlKClgIGV4
Y2VwdAordGhhdCBpdCBkb2Vzbid0IHBhc3MgdGhlIG1vY2sgZnVuY3Rpb24ncyBhcmd1bWVudHMg
dG8gdGhlCitjYWxsZWUuIEhlcmUncyBhbiBleGFtcGxlOgorCitgYGAKK3VzaW5nIDo6dGVzdGlu
Zzo6XzsKK3VzaW5nIDo6dGVzdGluZzo6SW52b2tlV2l0aG91dEFyZ3M7CisKK2NsYXNzIE1vY2tG
b28gOiBwdWJsaWMgRm9vIHsKKyBwdWJsaWM6CisgIE1PQ0tfTUVUSE9EMShDb21wbGV4Sm9iLCBi
b29sKGludCBuKSk7Cit9OworCitib29sIEpvYjEoKSB7IC4uLiB9CisuLi4KKworICBNb2NrRm9v
IGZvbzsKKyAgRVhQRUNUX0NBTEwoZm9vLCBDb21wbGV4Sm9iKF8pKQorICAgICAgLldpbGxPbmNl
KEludm9rZVdpdGhvdXRBcmdzKEpvYjEpKTsKKworICBmb28uQ29tcGxleEpvYigxMCk7ICAvLyBJ
bnZva2VzIEpvYjEoKS4KK2BgYAorCisjIyBJbnZva2luZyBhbiBBcmd1bWVudCBvZiB0aGUgTW9j
ayBGdW5jdGlvbiAjIworCitTb21ldGltZXMgYSBtb2NrIGZ1bmN0aW9uIHdpbGwgcmVjZWl2ZSBh
IGZ1bmN0aW9uIHBvaW50ZXIgb3IgYSBmdW5jdG9yCisoaW4gb3RoZXIgd29yZHMsIGEgImNhbGxh
YmxlIikgYXMgYW4gYXJndW1lbnQsIGUuZy4KKworYGBgCitjbGFzcyBNb2NrRm9vIDogcHVibGlj
IEZvbyB7CisgcHVibGljOgorICBNT0NLX01FVEhPRDIoRG9UaGlzLCBib29sKGludCBuLCBib29s
ICgqZnApKGludCkpKTsKK307CitgYGAKKworYW5kIHlvdSBtYXkgd2FudCB0byBpbnZva2UgdGhp
cyBjYWxsYWJsZSBhcmd1bWVudDoKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6Ol87CisuLi4KKyAg
TW9ja0ZvbyBmb287CisgIEVYUEVDVF9DQUxMKGZvbywgRG9UaGlzKF8sIF8pKQorICAgICAgLldp
bGxPbmNlKC4uLik7CisgIC8vIFdpbGwgZXhlY3V0ZSAoKmZwKSg1KSwgd2hlcmUgZnAgaXMgdGhl
CisgIC8vIHNlY29uZCBhcmd1bWVudCBEb1RoaXMoKSByZWNlaXZlcy4KK2BgYAorCitBcmdoaCwg
eW91IG5lZWQgdG8gcmVmZXIgdG8gYSBtb2NrIGZ1bmN0aW9uIGFyZ3VtZW50IGJ1dCBDKysgaGFz
IG5vCitsYW1iZGEgKHlldCksIHNvIHlvdSBoYXZlIHRvIGRlZmluZSB5b3VyIG93biBhY3Rpb24u
IDotKCBPciBkbyB5b3UKK3JlYWxseT8KKworV2VsbCwgR29vZ2xlIE1vY2sgaGFzIGFuIGFjdGlv
biB0byBzb2x2ZSBfZXhhY3RseV8gdGhpcyBwcm9ibGVtOgorCitgYGAKKyAgSW52b2tlQXJndW1l
bnQ8Tj4oYXJnXzEsIGFyZ18yLCAuLi4sIGFyZ19tKQorYGBgCisKK3dpbGwgaW52b2tlIHRoZSBg
TmAtdGggKDAtYmFzZWQpIGFyZ3VtZW50IHRoZSBtb2NrIGZ1bmN0aW9uIHJlY2VpdmVzLAord2l0
aCBgYXJnXzFgLCBgYXJnXzJgLCAuLi4sIGFuZCBgYXJnX21gLiBObyBtYXR0ZXIgaWYgdGhlIGFy
Z3VtZW50IGlzCithIGZ1bmN0aW9uIHBvaW50ZXIgb3IgYSBmdW5jdG9yLCBHb29nbGUgTW9jayBo
YW5kbGVzIHRoZW0gYm90aC4KKworV2l0aCB0aGF0LCB5b3UgY291bGQgd3JpdGU6CisKK2BgYAor
dXNpbmcgOjp0ZXN0aW5nOjpfOwordXNpbmcgOjp0ZXN0aW5nOjpJbnZva2VBcmd1bWVudDsKKy4u
LgorICBFWFBFQ1RfQ0FMTChmb28sIERvVGhpcyhfLCBfKSkKKyAgICAgIC5XaWxsT25jZShJbnZv
a2VBcmd1bWVudDwxPig1KSk7CisgIC8vIFdpbGwgZXhlY3V0ZSAoKmZwKSg1KSwgd2hlcmUgZnAg
aXMgdGhlCisgIC8vIHNlY29uZCBhcmd1bWVudCBEb1RoaXMoKSByZWNlaXZlcy4KK2BgYAorCitX
aGF0IGlmIHRoZSBjYWxsYWJsZSB0YWtlcyBhbiBhcmd1bWVudCBieSByZWZlcmVuY2U/IE5vIHBy
b2JsZW0gLSBqdXN0Cit3cmFwIGl0IGluc2lkZSBgQnlSZWYoKWA6CisKK2BgYAorLi4uCisgIE1P
Q0tfTUVUSE9EMShCYXIsIGJvb2woYm9vbCAoKmZwKShpbnQsIGNvbnN0IEhlbHBlciYpKSk7Cisu
Li4KK3VzaW5nIDo6dGVzdGluZzo6XzsKK3VzaW5nIDo6dGVzdGluZzo6QnlSZWY7Cit1c2luZyA6
OnRlc3Rpbmc6Okludm9rZUFyZ3VtZW50OworLi4uCisKKyAgTW9ja0ZvbyBmb287CisgIEhlbHBl
ciBoZWxwZXI7CisgIC4uLgorICBFWFBFQ1RfQ0FMTChmb28sIEJhcihfKSkKKyAgICAgIC5XaWxs
T25jZShJbnZva2VBcmd1bWVudDwwPig1LCBCeVJlZihoZWxwZXIpKSk7CisgIC8vIEJ5UmVmKGhl
bHBlcikgZ3VhcmFudGVlcyB0aGF0IGEgcmVmZXJlbmNlIHRvIGhlbHBlciwgbm90IGEgY29weSBv
ZiBpdCwKKyAgLy8gd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGNhbGxhYmxlLgorYGBgCisKK1doYXQg
aWYgdGhlIGNhbGxhYmxlIHRha2VzIGFuIGFyZ3VtZW50IGJ5IHJlZmVyZW5jZSBhbmQgd2UgZG8g
Kipub3QqKgord3JhcCB0aGUgYXJndW1lbnQgaW4gYEJ5UmVmKClgPyBUaGVuIGBJbnZva2VBcmd1
bWVudCgpYCB3aWxsIF9tYWtlIGEKK2NvcHlfIG9mIHRoZSBhcmd1bWVudCwgYW5kIHBhc3MgYSBf
cmVmZXJlbmNlIHRvIHRoZSBjb3B5XywgaW5zdGVhZCBvZgorYSByZWZlcmVuY2UgdG8gdGhlIG9y
aWdpbmFsIHZhbHVlLCB0byB0aGUgY2FsbGFibGUuIFRoaXMgaXMgZXNwZWNpYWxseQoraGFuZHkg
d2hlbiB0aGUgYXJndW1lbnQgaXMgYSB0ZW1wb3JhcnkgdmFsdWU6CisKK2BgYAorLi4uCisgIE1P
Q0tfTUVUSE9EMShEb1RoYXQsIGJvb2woYm9vbCAoKmYpKGNvbnN0IGRvdWJsZSYgeCwgY29uc3Qg
c3RyaW5nJiBzKSkpOworLi4uCit1c2luZyA6OnRlc3Rpbmc6Ol87Cit1c2luZyA6OnRlc3Rpbmc6
Okludm9rZUFyZ3VtZW50OworLi4uCisKKyAgTW9ja0ZvbyBmb287CisgIC4uLgorICBFWFBFQ1Rf
Q0FMTChmb28sIERvVGhhdChfKSkKKyAgICAgIC5XaWxsT25jZShJbnZva2VBcmd1bWVudDwwPig1
LjAsIHN0cmluZygiSGkiKSkpOworICAvLyBXaWxsIGV4ZWN1dGUgKCpmKSg1LjAsIHN0cmluZygi
SGkiKSksIHdoZXJlIGYgaXMgdGhlIGZ1bmN0aW9uIHBvaW50ZXIKKyAgLy8gRG9UaGF0KCkgcmVj
ZWl2ZXMuICBOb3RlIHRoYXQgdGhlIHZhbHVlcyA1LjAgYW5kIHN0cmluZygiSGkiKSBhcmUKKyAg
Ly8gdGVtcG9yYXJ5IGFuZCBkZWFkIG9uY2UgdGhlIEVYUEVDVF9DQUxMKCkgc3RhdGVtZW50IGZp
bmlzaGVzLiAgWWV0CisgIC8vIGl0J3MgZmluZSB0byBwZXJmb3JtIHRoaXMgYWN0aW9uIGxhdGVy
LCBzaW5jZSBhIGNvcHkgb2YgdGhlIHZhbHVlcworICAvLyBhcmUga2VwdCBpbnNpZGUgdGhlIElu
dm9rZUFyZ3VtZW50IGFjdGlvbi4KK2BgYAorCisjIyBJZ25vcmluZyBhbiBBY3Rpb24ncyBSZXN1
bHQgIyMKKworU29tZXRpbWVzIHlvdSBoYXZlIGFuIGFjdGlvbiB0aGF0IHJldHVybnMgX3NvbWV0
aGluZ18sIGJ1dCB5b3UgbmVlZCBhbgorYWN0aW9uIHRoYXQgcmV0dXJucyBgdm9pZGAgKHBlcmhh
cHMgeW91IHdhbnQgdG8gdXNlIGl0IGluIGEgbW9jaworZnVuY3Rpb24gdGhhdCByZXR1cm5zIGB2
b2lkYCwgb3IgcGVyaGFwcyBpdCBuZWVkcyB0byBiZSB1c2VkIGluCitgRG9BbGwoKWAgYW5kIGl0
J3Mgbm90IHRoZSBsYXN0IGluIHRoZSBsaXN0KS4gYElnbm9yZVJlc3VsdCgpYCBsZXRzCit5b3Ug
ZG8gdGhhdC4gRm9yIGV4YW1wbGU6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpfOwordXNpbmcg
Ojp0ZXN0aW5nOjpJbnZva2U7Cit1c2luZyA6OnRlc3Rpbmc6OlJldHVybjsKKworaW50IFByb2Nl
c3MoY29uc3QgTXlEYXRhJiBkYXRhKTsKK3N0cmluZyBEb1NvbWV0aGluZygpOworCitjbGFzcyBN
b2NrRm9vIDogcHVibGljIEZvbyB7CisgcHVibGljOgorICBNT0NLX01FVEhPRDEoQWJjLCB2b2lk
KGNvbnN0IE15RGF0YSYgZGF0YSkpOworICBNT0NLX01FVEhPRDAoWHl6LCBib29sKCkpOworfTsK
Ky4uLgorCisgIE1vY2tGb28gZm9vOworICBFWFBFQ1RfQ0FMTChmb28sIEFiYyhfKSkKKyAgLy8g
LldpbGxPbmNlKEludm9rZShQcm9jZXNzKSk7CisgIC8vIFRoZSBhYm92ZSBsaW5lIHdvbid0IGNv
bXBpbGUgYXMgUHJvY2VzcygpIHJldHVybnMgaW50IGJ1dCBBYmMoKSBuZWVkcworICAvLyB0byBy
ZXR1cm4gdm9pZC4KKyAgICAgIC5XaWxsT25jZShJZ25vcmVSZXN1bHQoSW52b2tlKFByb2Nlc3Mp
KSk7CisKKyAgRVhQRUNUX0NBTEwoZm9vLCBYeXooKSkKKyAgICAgIC5XaWxsT25jZShEb0FsbChJ
Z25vcmVSZXN1bHQoSW52b2tlKERvU29tZXRoaW5nKSksCisgICAgICAvLyBJZ25vcmVzIHRoZSBz
dHJpbmcgRG9Tb21ldGhpbmcoKSByZXR1cm5zLgorICAgICAgICAgICAgICAgICAgICAgIFJldHVy
bih0cnVlKSkpOworYGBgCisKK05vdGUgdGhhdCB5b3UgKipjYW5ub3QqKiB1c2UgYElnbm9yZVJl
c3VsdCgpYCBvbiBhbiBhY3Rpb24gdGhhdCBhbHJlYWR5CityZXR1cm5zIGB2b2lkYC4gRG9pbmcg
c28gd2lsbCBsZWFkIHRvIHVnbHkgY29tcGlsZXIgZXJyb3JzLgorCisjIyBTZWxlY3RpbmcgYW4g
QWN0aW9uJ3MgQXJndW1lbnRzICMjCisKK1NheSB5b3UgaGF2ZSBhIG1vY2sgZnVuY3Rpb24gYEZv
bygpYCB0aGF0IHRha2VzIHNldmVuIGFyZ3VtZW50cywgYW5kCit5b3UgaGF2ZSBhIGN1c3RvbSBh
Y3Rpb24gdGhhdCB5b3Ugd2FudCB0byBpbnZva2Ugd2hlbiBgRm9vKClgIGlzCitjYWxsZWQuIFRy
b3VibGUgaXMsIHRoZSBjdXN0b20gYWN0aW9uIG9ubHkgd2FudHMgdGhyZWUgYXJndW1lbnRzOgor
CitgYGAKK3VzaW5nIDo6dGVzdGluZzo6XzsKK3VzaW5nIDo6dGVzdGluZzo6SW52b2tlOworLi4u
CisgIE1PQ0tfTUVUSE9ENyhGb28sIGJvb2woYm9vbCB2aXNpYmxlLCBjb25zdCBzdHJpbmcmIG5h
bWUsIGludCB4LCBpbnQgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXA8cGFp
cjxpbnQsIGludD4sIGRvdWJsZT4mIHdlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBk
b3VibGUgbWluX3dlaWdodCwgZG91YmxlIG1heF93aWdodCkpOworLi4uCisKK2Jvb2wgSXNWaXNp
YmxlSW5RdWFkcmFudDEoYm9vbCB2aXNpYmxlLCBpbnQgeCwgaW50IHkpIHsKKyAgcmV0dXJuIHZp
c2libGUgJiYgeCA+PSAwICYmIHkgPj0gMDsKK30KKy4uLgorCisgIEVYUEVDVF9DQUxMKG1vY2ss
IEZvbyhfLCBfLCBfLCBfLCBfLCBfLCBfKSkKKyAgICAgIC5XaWxsT25jZShJbnZva2UoSXNWaXNp
YmxlSW5RdWFkcmFudDEpKTsgIC8vIFVoLCB3b24ndCBjb21waWxlLiA6LSgKK2BgYAorCitUbyBw
bGVhc2UgdGhlIGNvbXBpbGVyIEdvZCwgeW91IGNhbiB0byBkZWZpbmUgYW4gImFkYXB0b3IiIHRo
YXQgaGFzCit0aGUgc2FtZSBzaWduYXR1cmUgYXMgYEZvbygpYCBhbmQgY2FsbHMgdGhlIGN1c3Rv
bSBhY3Rpb24gd2l0aCB0aGUKK3JpZ2h0IGFyZ3VtZW50czoKKworYGBgCit1c2luZyA6OnRlc3Rp
bmc6Ol87Cit1c2luZyA6OnRlc3Rpbmc6Okludm9rZTsKKworYm9vbCBNeUlzVmlzaWJsZUluUXVh
ZHJhbnQxKGJvb2wgdmlzaWJsZSwgY29uc3Qgc3RyaW5nJiBuYW1lLCBpbnQgeCwgaW50IHksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFwPHBhaXI8aW50LCBpbnQ+LCBkb3Vi
bGU+JiB3ZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIG1pbl93ZWln
aHQsIGRvdWJsZSBtYXhfd2lnaHQpIHsKKyAgcmV0dXJuIElzVmlzaWJsZUluUXVhZHJhbnQxKHZp
c2libGUsIHgsIHkpOworfQorLi4uCisKKyAgRVhQRUNUX0NBTEwobW9jaywgRm9vKF8sIF8sIF8s
IF8sIF8sIF8sIF8pKQorICAgICAgLldpbGxPbmNlKEludm9rZShNeUlzVmlzaWJsZUluUXVhZHJh
bnQxKSk7ICAvLyBOb3cgaXQgd29ya3MuCitgYGAKKworQnV0IGlzbid0IHRoaXMgYXdrd2FyZD8K
KworR29vZ2xlIE1vY2sgcHJvdmlkZXMgYSBnZW5lcmljIF9hY3Rpb24gYWRhcHRvcl8sIHNvIHlv
dSBjYW4gc3BlbmQgeW91cgordGltZSBtaW5kaW5nIG1vcmUgaW1wb3J0YW50IGJ1c2luZXNzIHRo
YW4gd3JpdGluZyB5b3VyIG93bgorYWRhcHRvcnMuIEhlcmUncyB0aGUgc3ludGF4OgorCitgYGAK
KyAgV2l0aEFyZ3M8TjEsIE4yLCAuLi4sIE5rPihhY3Rpb24pCitgYGAKKworY3JlYXRlcyBhbiBh
Y3Rpb24gdGhhdCBwYXNzZXMgdGhlIGFyZ3VtZW50cyBvZiB0aGUgbW9jayBmdW5jdGlvbiBhdAor
dGhlIGdpdmVuIGluZGljZXMgKDAtYmFzZWQpIHRvIHRoZSBpbm5lciBgYWN0aW9uYCBhbmQgcGVy
Zm9ybXMKK2l0LiBVc2luZyBgV2l0aEFyZ3NgLCBvdXIgb3JpZ2luYWwgZXhhbXBsZSBjYW4gYmUg
d3JpdHRlbiBhczoKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6Ol87Cit1c2luZyA6OnRlc3Rpbmc6
Okludm9rZTsKK3VzaW5nIDo6dGVzdGluZzo6V2l0aEFyZ3M7CisuLi4KKyAgRVhQRUNUX0NBTEwo
bW9jaywgRm9vKF8sIF8sIF8sIF8sIF8sIF8sIF8pKQorICAgICAgLldpbGxPbmNlKFdpdGhBcmdz
PDAsIDIsIDM+KEludm9rZShJc1Zpc2libGVJblF1YWRyYW50MSkpKTsKKyAgICAgIC8vIE5vIG5l
ZWQgdG8gZGVmaW5lIHlvdXIgb3duIGFkYXB0b3IuCitgYGAKKworRm9yIGJldHRlciByZWFkYWJp
bGl0eSwgR29vZ2xlIE1vY2sgYWxzbyBnaXZlcyB5b3U6CisKKyAgKiBgV2l0aG91dEFyZ3MoYWN0
aW9uKWAgd2hlbiB0aGUgaW5uZXIgYGFjdGlvbmAgdGFrZXMgX25vXyBhcmd1bWVudCwgYW5kCisg
ICogYFdpdGhBcmc8Tj4oYWN0aW9uKWAgKG5vIGBzYCBhZnRlciBgQXJnYCkgd2hlbiB0aGUgaW5u
ZXIgYGFjdGlvbmAgdGFrZXMgX29uZV8gYXJndW1lbnQuCisKK0FzIHlvdSBtYXkgaGF2ZSByZWFs
aXplZCwgYEludm9rZVdpdGhvdXRBcmdzKC4uLilgIGlzIGp1c3Qgc3ludGFjdGljCitzdWdhciBm
b3IgYFdpdGhvdXRBcmdzKElub3ZrZSguLi4pKWAuCisKK0hlcmUgYXJlIG1vcmUgdGlwczoKKwor
ICAqIFRoZSBpbm5lciBhY3Rpb24gdXNlZCBpbiBgV2l0aEFyZ3NgIGFuZCBmcmllbmRzIGRvZXMg
bm90IGhhdmUgdG8gYmUgYEludm9rZSgpYCAtLSBpdCBjYW4gYmUgYW55dGhpbmcuCisgICogWW91
IGNhbiByZXBlYXQgYW4gYXJndW1lbnQgaW4gdGhlIGFyZ3VtZW50IGxpc3QgaWYgbmVjZXNzYXJ5
LCBlLmcuIGBXaXRoQXJnczwyLCAzLCAzLCA1PiguLi4pYC4KKyAgKiBZb3UgY2FuIGNoYW5nZSB0
aGUgb3JkZXIgb2YgdGhlIGFyZ3VtZW50cywgZS5nLiBgV2l0aEFyZ3M8MywgMiwgMT4oLi4uKWAu
CisgICogVGhlIHR5cGVzIG9mIHRoZSBzZWxlY3RlZCBhcmd1bWVudHMgZG8gX25vdF8gaGF2ZSB0
byBtYXRjaCB0aGUgc2lnbmF0dXJlIG9mIHRoZSBpbm5lciBhY3Rpb24gZXhhY3RseS4gSXQgd29y
a3MgYXMgbG9uZyBhcyB0aGV5IGNhbiBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byB0aGUgY29y
cmVzcG9uZGluZyBhcmd1bWVudHMgb2YgdGhlIGlubmVyIGFjdGlvbi4gRm9yIGV4YW1wbGUsIGlm
IHRoZSA0LXRoIGFyZ3VtZW50IG9mIHRoZSBtb2NrIGZ1bmN0aW9uIGlzIGFuIGBpbnRgIGFuZCBg
bXlfYWN0aW9uYCB0YWtlcyBhIGBkb3VibGVgLCBgV2l0aEFyZzw0PihteV9hY3Rpb24pYCB3aWxs
IHdvcmsuCisKKyMjIElnbm9yaW5nIEFyZ3VtZW50cyBpbiBBY3Rpb24gRnVuY3Rpb25zICMjCisK
K1RoZSBzZWxlY3RpbmctYW4tYWN0aW9uJ3MtYXJndW1lbnRzIHJlY2lwZSBzaG93ZWQgdXMgb25l
IHdheSB0byBtYWtlIGEKK21vY2sgZnVuY3Rpb24gYW5kIGFuIGFjdGlvbiB3aXRoIGluY29tcGF0
aWJsZSBhcmd1bWVudCBsaXN0cyBmaXQKK3RvZ2V0aGVyLiBUaGUgZG93bnNpZGUgaXMgdGhhdCB3
cmFwcGluZyB0aGUgYWN0aW9uIGluCitgV2l0aEFyZ3M8Li4uPigpYCBjYW4gZ2V0IHRlZGlvdXMg
Zm9yIHBlb3BsZSB3cml0aW5nIHRoZSB0ZXN0cy4KKworSWYgeW91IGFyZSBkZWZpbmluZyBhIGZ1
bmN0aW9uLCBtZXRob2QsIG9yIGZ1bmN0b3IgdG8gYmUgdXNlZCB3aXRoCitgSW52b2tlKigpYCwg
YW5kIHlvdSBhcmUgbm90IGludGVyZXN0ZWQgaW4gc29tZSBvZiBpdHMgYXJndW1lbnRzLCBhbgor
YWx0ZXJuYXRpdmUgdG8gYFdpdGhBcmdzYCBpcyB0byBkZWNsYXJlIHRoZSB1bmludGVyZXN0aW5n
IGFyZ3VtZW50cyBhcworYFVudXNlZGAuIFRoaXMgbWFrZXMgdGhlIGRlZmluaXRpb24gbGVzcyBj
bHV0dGVyZWQgYW5kIGxlc3MgZnJhZ2lsZSBpbgorY2FzZSB0aGUgdHlwZXMgb2YgdGhlIHVuaW50
ZXJlc3RpbmcgYXJndW1lbnRzIGNoYW5nZS4gSXQgY291bGQgYWxzbworaW5jcmVhc2UgdGhlIGNo
YW5jZSB0aGUgYWN0aW9uIGZ1bmN0aW9uIGNhbiBiZSByZXVzZWQuIEZvciBleGFtcGxlLAorZ2l2
ZW4KKworYGBgCisgIE1PQ0tfTUVUSE9EMyhGb28sIGRvdWJsZShjb25zdCBzdHJpbmcmIGxhYmVs
LCBkb3VibGUgeCwgZG91YmxlIHkpKTsKKyAgTU9DS19NRVRIT0QzKEJhciwgZG91YmxlKGludCBp
bmRleCwgZG91YmxlIHgsIGRvdWJsZSB5KSk7CitgYGAKKworaW5zdGVhZCBvZgorCitgYGAKK3Vz
aW5nIDo6dGVzdGluZzo6XzsKK3VzaW5nIDo6dGVzdGluZzo6SW52b2tlOworCitkb3VibGUgRGlz
dGFuY2VUb09yaWdpbldpdGhMYWJlbChjb25zdCBzdHJpbmcmIGxhYmVsLCBkb3VibGUgeCwgZG91
YmxlIHkpIHsKKyAgcmV0dXJuIHNxcnQoeCp4ICsgeSp5KTsKK30KKworZG91YmxlIERpc3RhbmNl
VG9PcmlnaW5XaXRoSW5kZXgoaW50IGluZGV4LCBkb3VibGUgeCwgZG91YmxlIHkpIHsKKyAgcmV0
dXJuIHNxcnQoeCp4ICsgeSp5KTsKK30KKy4uLgorCisgIEVYRVBDVF9DQUxMKG1vY2ssIEZvbygi
YWJjIiwgXywgXykpCisgICAgICAuV2lsbE9uY2UoSW52b2tlKERpc3RhbmNlVG9PcmlnaW5XaXRo
TGFiZWwpKTsKKyAgRVhFUENUX0NBTEwobW9jaywgQmFyKDUsIF8sIF8pKQorICAgICAgLldpbGxP
bmNlKEludm9rZShEaXN0YW5jZVRvT3JpZ2luV2l0aEluZGV4KSk7CitgYGAKKworeW91IGNvdWxk
IHdyaXRlCisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpfOwordXNpbmcgOjp0ZXN0aW5nOjpJbnZv
a2U7Cit1c2luZyA6OnRlc3Rpbmc6OlVudXNlZDsKKworZG91YmxlIERpc3RhbmNlVG9PcmlnaW4o
VW51c2VkLCBkb3VibGUgeCwgZG91YmxlIHkpIHsKKyAgcmV0dXJuIHNxcnQoeCp4ICsgeSp5KTsK
K30KKy4uLgorCisgIEVYRVBDVF9DQUxMKG1vY2ssIEZvbygiYWJjIiwgXywgXykpCisgICAgICAu
V2lsbE9uY2UoSW52b2tlKERpc3RhbmNlVG9PcmlnaW4pKTsKKyAgRVhFUENUX0NBTEwobW9jaywg
QmFyKDUsIF8sIF8pKQorICAgICAgLldpbGxPbmNlKEludm9rZShEaXN0YW5jZVRvT3JpZ2luKSk7
CitgYGAKKworIyMgU2hhcmluZyBBY3Rpb25zICMjCisKK0p1c3QgbGlrZSBtYXRjaGVycywgYSBH
b29nbGUgTW9jayBhY3Rpb24gb2JqZWN0IGNvbnNpc3RzIG9mIGEgcG9pbnRlcgordG8gYSByZWYt
Y291bnRlZCBpbXBsZW1lbnRhdGlvbiBvYmplY3QuIFRoZXJlZm9yZSBjb3B5aW5nIGFjdGlvbnMg
aXMKK2Fsc28gYWxsb3dlZCBhbmQgdmVyeSBlZmZpY2llbnQuIFdoZW4gdGhlIGxhc3QgYWN0aW9u
IHRoYXQgcmVmZXJlbmNlcwordGhlIGltcGxlbWVudGF0aW9uIG9iamVjdCBkaWVzLCB0aGUgaW1w
bGVtZW50YXRpb24gb2JqZWN0IHdpbGwgYmUKK2RlbGV0ZWQuCisKK0lmIHlvdSBoYXZlIHNvbWUg
Y29tcGxleCBhY3Rpb24gdGhhdCB5b3Ugd2FudCB0byB1c2UgYWdhaW4gYW5kIGFnYWluLAoreW91
IG1heSBub3QgaGF2ZSB0byBidWlsZCBpdCBmcm9tIHNjcmF0Y2ggZXZlcnl0aW1lLiBJZiB0aGUg
YWN0aW9uCitkb2Vzbid0IGhhdmUgYW4gaW50ZXJuYWwgc3RhdGUgKGkuZS4gaWYgaXQgYWx3YXlz
IGRvZXMgdGhlIHNhbWUgdGhpbmcKK25vIG1hdHRlciBob3cgbWFueSB0aW1lcyBpdCBoYXMgYmVl
biBjYWxsZWQpLCB5b3UgY2FuIGFzc2lnbiBpdCB0byBhbgorYWN0aW9uIHZhcmlhYmxlIGFuZCB1
c2UgdGhhdCB2YXJpYWJsZSByZXBlYXRlZGx5LiBGb3IgZXhhbXBsZToKKworYGBgCisgIEFjdGlv
bjxib29sKGludCopPiBzZXRfZmxhZyA9IERvQWxsKFNldEFyZ1BvaW50ZWU8MD4oNSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybih0cnVlKSk7CisgIC4uLiB1
c2Ugc2V0X2ZsYWcgaW4gLldpbGxPbmNlKCkgYW5kIC5XaWxsUmVwZWF0ZWRseSgpIC4uLgorYGBg
CisKK0hvd2V2ZXIsIGlmIHRoZSBhY3Rpb24gaGFzIGl0cyBvd24gc3RhdGUsIHlvdSBtYXkgYmUg
c3VycHJpc2VkIGlmIHlvdQorc2hhcmUgdGhlIGFjdGlvbiBvYmplY3QuIFN1cHBvc2UgeW91IGhh
dmUgYW4gYWN0aW9uIGZhY3RvcnkKK2BJbmNyZW1lbnRDb3VudGVyKGluaXQpYCB3aGljaCBjcmVh
dGVzIGFuIGFjdGlvbiB0aGF0IGluY3JlbWVudHMgYW5kCityZXR1cm5zIGEgY291bnRlciB3aG9z
ZSBpbml0aWFsIHZhbHVlIGlzIGBpbml0YCwgdXNpbmcgdHdvIGFjdGlvbnMKK2NyZWF0ZWQgZnJv
bSB0aGUgc2FtZSBleHByZXNzaW9uIGFuZCB1c2luZyBhIHNoYXJlZCBhY3Rpb24gd2lsbAorZXhp
aGliaXQgZGlmZmVyZW50IGJlaGF2aW9ycy4gRXhhbXBsZToKKworYGBgCisgIEVYUEVDVF9DQUxM
KGZvbywgRG9UaGlzKCkpCisgICAgICAuV2lsbFJlcGVhdGVkbHkoSW5jcmVtZW50Q291bnRlcigw
KSk7CisgIEVYUEVDVF9DQUxMKGZvbywgRG9UaGF0KCkpCisgICAgICAuV2lsbFJlcGVhdGVkbHko
SW5jcmVtZW50Q291bnRlcigwKSk7CisgIGZvby5Eb1RoaXMoKTsgIC8vIFJldHVybnMgMS4KKyAg
Zm9vLkRvVGhpcygpOyAgLy8gUmV0dXJucyAyLgorICBmb28uRG9UaGF0KCk7ICAvLyBSZXR1cm5z
IDEgLSBCbGFoKCkgdXNlcyBhIGRpZmZlcmVudAorICAgICAgICAgICAgICAgICAvLyBjb3VudGVy
IHRoYW4gQmFyKCkncy4KK2BgYAorCit2ZXJzdXMKKworYGBgCisgIEFjdGlvbjxpbnQoKT4gaW5j
cmVtZW50ID0gSW5jcmVtZW50Q291bnRlcigwKTsKKworICBFWFBFQ1RfQ0FMTChmb28sIERvVGhp
cygpKQorICAgICAgLldpbGxSZXBlYXRlZGx5KGluY3JlbWVudCk7CisgIEVYUEVDVF9DQUxMKGZv
bywgRG9UaGF0KCkpCisgICAgICAuV2lsbFJlcGVhdGVkbHkoaW5jcmVtZW50KTsKKyAgZm9vLkRv
VGhpcygpOyAgLy8gUmV0dXJucyAxLgorICBmb28uRG9UaGlzKCk7ICAvLyBSZXR1cm5zIDIuCisg
IGZvby5Eb1RoYXQoKTsgIC8vIFJldHVybnMgMyAtIHRoZSBjb3VudGVyIGlzIHNoYXJlZC4KK2Bg
YAorCisjIE1pc2MgUmVjaXBlcyBvbiBVc2luZyBHb29nbGUgTW9jayAjCisKKyMjIE1ha2luZyB0
aGUgQ29tcGlsYXRpb24gRmFzdGVyICMjCisKK0JlbGlldmUgaXQgb3Igbm90LCB0aGUgX3Zhc3Qg
bWFqb3JpdHlfIG9mIHRoZSB0aW1lIHNwZW50IG9uIGNvbXBpbGluZworYSBtb2NrIGNsYXNzIGlz
IGluIGdlbmVyYXRpbmcgaXRzIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yLCBhcyB0aGV5Citw
ZXJmb3JtIG5vbi10cml2aWFsIHRhc2tzIChlLmcuIHZlcmlmaWNhdGlvbiBvZiB0aGUKK2V4cGVj
dGF0aW9ucykuIFdoYXQncyBtb3JlLCBtb2NrIG1ldGhvZHMgd2l0aCBkaWZmZXJlbnQgc2lnbmF0
dXJlcworaGF2ZSBkaWZmZXJlbnQgdHlwZXMgYW5kIHRodXMgdGhlaXIgY29uc3RydWN0b3JzL2Rl
c3RydWN0b3JzIG5lZWQgdG8KK2JlIGdlbmVyYXRlZCBieSB0aGUgY29tcGlsZXIgc2VwYXJhdGVs
eS4gQXMgYSByZXN1bHQsIGlmIHlvdSBtb2NrIG1hbnkKK2RpZmZlcmVudCB0eXBlcyBvZiBtZXRo
b2RzLCBjb21waWxpbmcgeW91ciBtb2NrIGNsYXNzIGNhbiBnZXQgcmVhbGx5CitzbG93LgorCitJ
ZiB5b3UgYXJlIGV4cGVyaWVuY2luZyBzbG93IGNvbXBpbGF0aW9uLCB5b3UgY2FuIG1vdmUgdGhl
IGRlZmluaXRpb24KK29mIHlvdXIgbW9jayBjbGFzcycgY29uc3RydWN0b3IgYW5kIGRlc3RydWN0
b3Igb3V0IG9mIHRoZSBjbGFzcyBib2R5CithbmQgaW50byBhIGAuY3BwYCBmaWxlLiBUaGlzIHdh
eSwgZXZlbiBpZiB5b3UgYCNpbmNsdWRlYCB5b3VyIG1vY2sKK2NsYXNzIGluIE4gZmlsZXMsIHRo
ZSBjb21waWxlciBvbmx5IG5lZWRzIHRvIGdlbmVyYXRlIGl0cyBjb25zdHJ1Y3RvcgorYW5kIGRl
c3RydWN0b3Igb25jZSwgcmVzdWx0aW5nIGluIGEgbXVjaCBmYXN0ZXIgY29tcGlsYXRpb24uCisK
K0xldCdzIGlsbHVzdHJhdGUgdGhlIGlkZWEgdXNpbmcgYW4gZXhhbXBsZS4gSGVyZSdzIHRoZSBk
ZWZpbml0aW9uIG9mIGEKK21vY2sgY2xhc3MgYmVmb3JlIGFwcGx5aW5nIHRoaXMgcmVjaXBlOgor
CitgYGAKKy8vIEZpbGUgbW9ja19mb28uaC4KKy4uLgorY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBG
b28geworIHB1YmxpYzoKKyAgLy8gU2luY2Ugd2UgZG9uJ3QgZGVjbGFyZSB0aGUgY29uc3RydWN0
b3Igb3IgdGhlIGRlc3RydWN0b3IsCisgIC8vIHRoZSBjb21waWxlciB3aWxsIGdlbmVyYXRlIHRo
ZW0gaW4gZXZlcnkgdHJhbnNsYXRpb24gdW5pdAorICAvLyB3aGVyZSB0aGlzIG1vY2sgY2xhc3Mg
aXMgdXNlZC4KKworICBNT0NLX01FVEhPRDAoRG9UaGlzLCBpbnQoKSk7CisgIE1PQ0tfTUVUSE9E
MShEb1RoYXQsIGJvb2woY29uc3QgY2hhciogc3RyKSk7CisgIC4uLiBtb3JlIG1vY2sgbWV0aG9k
cyAuLi4KK307CitgYGAKKworQWZ0ZXIgdGhlIGNoYW5nZSwgaXQgd291bGQgbG9vayBsaWtlOgor
CitgYGAKKy8vIEZpbGUgbW9ja19mb28uaC4KKy4uLgorY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBG
b28geworIHB1YmxpYzoKKyAgLy8gVGhlIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yIGFyZSBk
ZWNsYXJlZCwgYnV0IG5vdCBkZWZpbmVkLCBoZXJlLgorICBNb2NrRm9vKCk7CisgIHZpcnR1YWwg
fk1vY2tGb28oKTsKKworICBNT0NLX01FVEhPRDAoRG9UaGlzLCBpbnQoKSk7CisgIE1PQ0tfTUVU
SE9EMShEb1RoYXQsIGJvb2woY29uc3QgY2hhciogc3RyKSk7CisgIC4uLiBtb3JlIG1vY2sgbWV0
aG9kcyAuLi4KK307CitgYGAKK2FuZAorYGBgCisvLyBGaWxlIG1vY2tfZm9vLmNwcC4KKyNpbmNs
dWRlICJwYXRoL3RvL21vY2tfZm9vLmgiCisKKy8vIFRoZSBkZWZpbml0aW9ucyBtYXkgYXBwZWFy
IHRyaXZpYWwsIGJ1dCB0aGUgZnVuY3Rpb25zIGFjdHVhbGx5IGRvIGEKKy8vIGxvdCBvZiB0aGlu
Z3MgdGhyb3VnaCB0aGUgY29uc3RydWN0b3JzL2Rlc3RydWN0b3JzIG9mIHRoZSBtZW1iZXIKKy8v
IHZhcmlhYmxlcyB1c2VkIHRvIGltcGxlbWVudCB0aGUgbW9jayBtZXRob2RzLgorTW9ja0Zvbzo6
TW9ja0ZvbygpIHt9CitNb2NrRm9vOjp+TW9ja0ZvbygpIHt9CitgYGAKKworIyMgRm9yY2luZyBh
IFZlcmlmaWNhdGlvbiAjIworCitXaGVuIGl0J3MgYmVpbmcgZGVzdG95ZWQsIHlvdXIgZnJpZW5k
bHkgbW9jayBvYmplY3Qgd2lsbCBhdXRvbWF0aWNhbGx5Cit2ZXJpZnkgdGhhdCBhbGwgZXhwZWN0
YXRpb25zIG9uIGl0IGhhdmUgYmVlbiBzYXRpc2ZpZWQsIGFuZCB3aWxsCitnZW5lcmF0ZSBbR29v
Z2xlIFRlc3RdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0LykgZmFpbHVyZXMK
K2lmIG5vdC4gVGhpcyBpcyBjb252ZW5pZW50IGFzIGl0IGxlYXZlcyB5b3Ugd2l0aCBvbmUgbGVz
cyB0aGluZyB0bword29ycnkgYWJvdXQuIFRoYXQgaXMsIHVubGVzcyB5b3UgYXJlIG5vdCBzdXJl
IGlmIHlvdXIgbW9jayBvYmplY3Qgd2lsbAorYmUgZGVzdG95ZWQuCisKK0hvdyBjb3VsZCBpdCBi
ZSB0aGF0IHlvdXIgbW9jayBvYmplY3Qgd29uJ3QgZXZlbnR1YWxseSBiZSBkZXN0cm95ZWQ/CitX
ZWxsLCBpdCBtaWdodCBiZSBjcmVhdGVkIG9uIHRoZSBoZWFwIGFuZCBvd25lZCBieSB0aGUgY29k
ZSB5b3UgYXJlCit0ZXN0aW5nLiBTdXBwb3NlIHRoZXJlJ3MgYSBidWcgaW4gdGhhdCBjb2RlIGFu
ZCBpdCBkb2Vzbid0IGRlbGV0ZSB0aGUKK21vY2sgb2JqZWN0IHByb3Blcmx5IC0geW91IGNvdWxk
IGVuZCB1cCB3aXRoIGEgcGFzc2luZyB0ZXN0IHdoZW4KK3RoZXJlJ3MgYWN0dWFsbHkgYSBidWcu
CisKK1VzaW5nIGEgaGVhcCBjaGVja2VyIGlzIGEgZ29vZCBpZGVhIGFuZCBjYW4gYWxsZXZpYXRl
IHRoZSBjb25jZXJuLCBidXQKK2l0cyBpbXBsZW1lbnRhdGlvbiBtYXkgbm90IGJlIDEwMCUgcmVs
aWFibGUuIFNvLCBzb21ldGltZXMgeW91IGRvIHdhbnQKK3RvIF9mb3JjZV8gR29vZ2xlIE1vY2sg
dG8gdmVyaWZ5IGEgbW9jayBvYmplY3QgYmVmb3JlIGl0IGlzCisoaG9wZWZ1bGx5KSBkZXN0cnVj
dGVkLiBZb3UgY2FuIGRvIHRoaXMgd2l0aAorYE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRp
b25zKCZtb2NrX29iamVjdClgOgorCitgYGAKK1RFU1QoTXlTZXJ2ZXJUZXN0LCBQcm9jZXNzZXNS
ZXF1ZXN0KSB7CisgIHVzaW5nIDo6dGVzdGluZzo6TW9jazsKKworICBNb2NrRm9vKiBjb25zdCBm
b28gPSBuZXcgTW9ja0ZvbzsKKyAgRVhQRUNUX0NBTEwoKmZvbywgLi4uKS4uLjsKKyAgLy8gLi4u
IG90aGVyIGV4cGVjdGF0aW9ucyAuLi4KKworICAvLyBzZXJ2ZXIgbm93IG93bnMgZm9vLgorICBN
eVNlcnZlciBzZXJ2ZXIoZm9vKTsKKyAgc2VydmVyLlByb2Nlc3NSZXF1ZXN0KC4uLik7CisKKyAg
Ly8gSW4gY2FzZSB0aGF0IHNlcnZlcidzIGRlc3RydWN0b3Igd2lsbCBmb3JnZXQgdG8gZGVsZXRl
IGZvbywKKyAgLy8gdGhpcyB3aWxsIHZlcmlmeSB0aGUgZXhwZWN0YXRpb25zIGFueXdheS4KKyAg
TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoZm9vKTsKK30gIC8vIHNlcnZlciBpcyBk
ZXN0cm95ZWQgd2hlbiBpdCBnb2VzIG91dCBvZiBzY29wZSBoZXJlLgorYGBgCisKKyoqVGlwOioq
IFRoZSBgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoKWAgZnVuY3Rpb24gcmV0dXJu
cyBhCitgYm9vbGAgdG8gaW5kaWNhdGUgd2hldGhlciB0aGUgdmVyaWZpY2F0aW9uIHdhcyBzdWNj
ZXNzZnVsIChgdHJ1ZWAgZm9yCit5ZXMpLCBzbyB5b3UgY2FuIHdyYXAgdGhhdCBmdW5jdGlvbiBj
YWxsIGluc2lkZSBhIGBBU1NFUlRfVFJVRSgpYCBpZgordGhlcmUgaXMgbm8gcG9pbnQgZ29pbmcg
ZnVydGhlciB3aGVuIHRoZSB2ZXJpZmljYXRpb24gaGFzIGZhaWxlZC4KKworIyMgVXNpbmcgQ2hl
Y2sgUG9pbnRzICMjCisKK1NvbWV0aW1lcyB5b3UgbWF5IHdhbnQgdG8gInJlc2V0IiBhIG1vY2sg
b2JqZWN0IGF0IHZhcmlvdXMgY2hlY2sKK3BvaW50cyBpbiB5b3VyIHRlc3Q6IGF0IGVhY2ggY2hl
Y2sgcG9pbnQsIHlvdSB2ZXJpZnkgdGhhdCBhbGwgZXhpc3RpbmcKK2V4cGVjdGF0aW9ucyBvbiB0
aGUgbW9jayBvYmplY3QgaGF2ZSBiZWVuIHNhdGlzZmllZCwgYW5kIHRoZW4geW91IHNldAorc29t
ZSBuZXcgZXhwZWN0YXRpb25zIG9uIGl0IGFzIGlmIGl0J3MgbmV3bHkgY3JlYXRlZC4gVGhpcyBh
bGxvd3MgeW91Cit0byB3b3JrIHdpdGggYSBtb2NrIG9iamVjdCBpbiAicGhhc2VzIiB3aG9zZSBz
aXplcyBhcmUgZWFjaAorbWFuYWdlYWJsZS4KKworT25lIHN1Y2ggc2NlbmFyaW8gaXMgdGhhdCBp
biB5b3VyIHRlc3QncyBgU2V0VXAoKWAgZnVuY3Rpb24sIHlvdSBtYXkKK3dhbnQgdG8gcHV0IHRo
ZSBvYmplY3QgeW91IGFyZSB0ZXN0aW5nIGludG8gYSBjZXJ0YWluIHN0YXRlLCB3aXRoIHRoZQor
aGVscCBmcm9tIGEgbW9jayBvYmplY3QuIE9uY2UgaW4gdGhlIGRlc2lyZWQgc3RhdGUsIHlvdSB3
YW50IHRvIGNsZWFyCithbGwgZXhwZWN0YXRpb25zIG9uIHRoZSBtb2NrLCBzdWNoIHRoYXQgaW4g
dGhlIGBURVNUX0ZgIGJvZHkgeW91IGNhbgorc2V0IGZyZXNoIGV4cGVjdGF0aW9ucyBvbiBpdC4K
KworQXMgeW91IG1heSBoYXZlIGZpZ3VyZWQgb3V0LCB0aGUgYE1vY2s6OlZlcmlmeUFuZENsZWFy
RXhwZWN0YXRpb25zKClgCitmdW5jdGlvbiB3ZSBzYXcgaW4gdGhlIHByZXZpb3VzIHJlY2lwZSBj
YW4gaGVscCB5b3UgaGVyZS4gT3IsIGlmIHlvdQorYXJlIHVzaW5nIGBPTl9DQUxMKClgIHRvIHNl
dCBkZWZhdWx0IGFjdGlvbnMgb24gdGhlIG1vY2sgb2JqZWN0IGFuZAord2FudCB0byBjbGVhciB0
aGUgZGVmYXVsdCBhY3Rpb25zIGFzIHdlbGwsIHVzZQorYE1vY2s6OlZlcmlmeUFuZENsZWFyKCZt
b2NrX29iamVjdClgIGluc3RlYWQuIFRoaXMgZnVuY3Rpb24gZG9lcyB3aGF0CitgTW9jazo6VmVy
aWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1vY2tfb2JqZWN0KWAgZG9lcyBhbmQgcmV0dXJucyB0
aGUKK3NhbWUgYGJvb2xgLCAqKnBsdXMqKiBpdCBjbGVhcnMgdGhlIGBPTl9DQUxMKClgIHN0YXRl
bWVudHMgb24KK2Btb2NrX29iamVjdGAgdG9vLgorCitBbm90aGVyIHRyaWNrIHlvdSBjYW4gdXNl
IHRvIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IGlzIHRvIHB1dCB0aGUKK2V4cGVjdGF0aW9ucyBp
biBzZXF1ZW5jZXMgYW5kIGluc2VydCBjYWxscyB0byBhIGR1bW15ICJjaGVjay1wb2ludCIKK2Z1
bmN0aW9uIGF0IHNwZWNpZmljIHBsYWNlcy4gVGhlbiB5b3UgY2FuIHZlcmlmeSB0aGF0IHRoZSBt
b2NrCitmdW5jdGlvbiBjYWxscyBkbyBoYXBwZW4gYXQgdGhlIHJpZ2h0IHRpbWUuIEZvciBleGFt
cGxlLCBpZiB5b3UgYXJlCitleGVyY2lzaW5nIGNvZGU6CisKK2BgYAorRm9vKDEpOworRm9vKDIp
OworRm9vKDMpOworYGBgCisKK2FuZCB3YW50IHRvIHZlcmlmeSB0aGF0IGBGb28oMSlgIGFuZCBg
Rm9vKDMpYCBib3RoIGludm9rZQorYG1vY2suQmFyKCJhIilgLCBidXQgYEZvbygyKWAgZG9lc24n
dCBpbnZva2UgYW55dGhpbmcuIFlvdSBjYW4gd3JpdGU6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5n
OjpNb2NrRnVuY3Rpb247CisKK1RFU1QoRm9vVGVzdCwgSW52b2tlc0JhckNvcnJlY3RseSkgewor
ICBNeU1vY2sgbW9jazsKKyAgLy8gQ2xhc3MgTW9ja0Z1bmN0aW9uPEY+IGhhcyBleGFjdGx5IG9u
ZSBtb2NrIG1ldGhvZC4gIEl0IGlzIG5hbWVkCisgIC8vIENhbGwoKSBhbmQgaGFzIHR5cGUgRi4K
KyAgTW9ja0Z1bmN0aW9uPHZvaWQoc3RyaW5nIGNoZWNrX3BvaW50X25hbWUpPiBjaGVjazsKKyAg
eworICAgIEluU2VxdWVuY2UgczsKKworICAgIEVYUEVDVF9DQUxMKG1vY2ssIEJhcigiYSIpKTsK
KyAgICBFWFBFQ1RfQ0FMTChjaGVjaywgQ2FsbCgiMSIpKTsKKyAgICBFWFBFQ1RfQ0FMTChjaGVj
aywgQ2FsbCgiMiIpKTsKKyAgICBFWFBFQ1RfQ0FMTChtb2NrLCBCYXIoImEiKSk7CisgIH0KKyAg
Rm9vKDEpOworICBjaGVjay5DYWxsKCIxIik7CisgIEZvbygyKTsKKyAgY2hlY2suQ2FsbCgiMiIp
OworICBGb28oMyk7Cit9CitgYGAKKworVGhlIGV4cGVjdGF0aW9uIHNwZWMgc2F5cyB0aGF0IHRo
ZSBmaXJzdCBgQmFyKCJhIilgIG11c3QgaGFwcGVuIGJlZm9yZQorY2hlY2sgcG9pbnQgIjEiLCB0
aGUgc2Vjb25kIGBCYXIoImEiKWAgbXVzdCBoYXBwZW4gYWZ0ZXIgY2hlY2sgcG9pbnQgIjIiLAor
YW5kIG5vdGhpbmcgc2hvdWxkIGhhcHBlbiBiZXR3ZWVuIHRoZSB0d28gY2hlY2sgcG9pbnRzLiBU
aGUgZXhwbGljaXQKK2NoZWNrIHBvaW50cyBtYWtlIGl0IGVhc3kgdG8gdGVsbCB3aGljaCBgQmFy
KCJhIilgIGlzIGNhbGxlZCBieSB3aGljaAorY2FsbCB0byBgRm9vKClgLgorCisjIyBNb2NraW5n
IERlc3RydWN0b3JzICMjCisKK1NvbWV0aW1lcyB5b3Ugd2FudCB0byBtYWtlIHN1cmUgYSBtb2Nr
IG9iamVjdCBpcyBkZXN0cnVjdGVkIGF0IHRoZQorcmlnaHQgdGltZSwgZS5nLiBhZnRlciBgYmFy
LT5BKClgIGlzIGNhbGxlZCBidXQgYmVmb3JlIGBiYXItPkIoKWAgaXMKK2NhbGxlZC4gV2UgYWxy
ZWFkeSBrbm93IHRoYXQgeW91IGNhbiBzcGVjaWZ5IGNvbnN0cmFpbnRzIG9uIHRoZSBvcmRlcgor
b2YgbW9jayBmdW5jdGlvbiBjYWxscywgc28gYWxsIHdlIG5lZWQgdG8gZG8gaXMgdG8gbW9jayB0
aGUgZGVzdHJ1Y3Rvcgorb2YgdGhlIG1vY2sgZnVuY3Rpb24uCisKK1RoaXMgc291bmRzIHNpbXBs
ZSwgZXhjZXB0IGZvciBvbmUgcHJvYmxlbTogYSBkZXN0cnVjdG9yIGlzIGEgc3BlY2lhbAorZnVu
Y3Rpb24gd2l0aCBzcGVjaWFsIHN5bnRheCBhbmQgc3BlY2lhbCBzZW1hbnRpY3MsIGFuZCB0aGUK
K2BNT0NLX01FVEhPRDBgIG1hY3JvIGRvZXNuJ3Qgd29yayBmb3IgaXQ6CisKK2BgYAorICBNT0NL
X01FVEhPRDAofk1vY2tGb28sIHZvaWQoKSk7ICAvLyBXb24ndCBjb21waWxlIQorYGBgCisKK1Ro
ZSBnb29kIG5ld3MgaXMgdGhhdCB5b3UgY2FuIHVzZSBhIHNpbXBsZSBwYXR0ZXJuIHRvIGFjaGll
dmUgdGhlIHNhbWUKK2VmZmVjdC4gRmlyc3QsIGFkZCBhIG1vY2sgZnVuY3Rpb24gYERpZSgpYCB0
byB5b3VyIG1vY2sgY2xhc3MgYW5kIGNhbGwKK2l0IGluIHRoZSBkZXN0cnVjdG9yLCBsaWtlIHRo
aXM6CisKK2BgYAorY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28geworICAuLi4KKyAgLy8gQWRk
IHRoZSBmb2xsb3dpbmcgdHdvIGxpbmVzIHRvIHRoZSBtb2NrIGNsYXNzLgorICBNT0NLX01FVEhP
RDAoRGllLCB2b2lkKCkpOworICB2aXJ0dWFsIH5Nb2NrRm9vKCkgeyBEaWUoKTsgfQorfTsKK2Bg
YAorCisoSWYgdGhlIG5hbWUgYERpZSgpYCBjbGFzaGVzIHdpdGggYW4gZXhpc3Rpbmcgc3ltYm9s
LCBjaG9vc2UgYW5vdGhlcgorbmFtZS4pIE5vdywgd2UgaGF2ZSB0cmFuc2xhdGVkIHRoZSBwcm9i
bGVtIG9mIHRlc3Rpbmcgd2hlbiBhIGBNb2NrRm9vYAorb2JqZWN0IGRpZXMgdG8gdGVzdGluZyB3
aGVuIGl0cyBgRGllKClgIG1ldGhvZCBpcyBjYWxsZWQ6CisKK2BgYAorICBNb2NrRm9vKiBmb28g
PSBuZXcgTW9ja0ZvbzsKKyAgTW9ja0JhciogYmFyID0gbmV3IE1vY2tCYXI7CisgIC4uLgorICB7
CisgICAgSW5TZXF1ZW5jZSBzOworCisgICAgLy8gRXhwZWN0cyAqZm9vIHRvIGRpZSBhZnRlciBi
YXItPkEoKSBhbmQgYmVmb3JlIGJhci0+QigpLgorICAgIEVYUEVDVF9DQUxMKCpiYXIsIEEoKSk7
CisgICAgRVhQRUNUX0NBTEwoKmZvbywgRGllKCkpOworICAgIEVYUEVDVF9DQUxMKCpiYXIsIEIo
KSk7CisgIH0KK2BgYAorCitBbmQgdGhhdCdzIHRoYXQuCisKKyMjIFVzaW5nIEdvb2dsZSBNb2Nr
IGFuZCBUaHJlYWRzICMjCisKKyoqSU1QT1JUQU5UIE5PVEU6KiogV2hhdCB3ZSBkZXNjcmliZSBp
biB0aGlzIHJlY2lwZSBpcyAqKk9OTFkqKiB0cnVlIG9uCitwbGF0Zm9ybXMgd2hlcmUgR29vZ2xl
IE1vY2sgaXMgdGhyZWFkLXNhZmUuIEN1cnJlbnRseSB0aGVzZSBhcmUgb25seQorcGxhdGZvcm1z
IHRoYXQgc3VwcG9ydCB0aGUgcHRocmVhZHMgbGlicmFyeSAodGhpcyBpbmNsdWRlcyBMaW51eCBh
bmQgTWFjKS4KK1RvIG1ha2UgaXQgdGhyZWFkLXNhZmUgb24gb3RoZXIgcGxhdGZvcm1zIHdlIG9u
bHkgbmVlZCB0byBpbXBsZW1lbnQKK3NvbWUgc3luY2hyb25pemF0aW9uIG9wZXJhdGlvbnMgaW4g
YCJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiYC4KKworSW4gYSAqKnVuaXQqKiB0ZXN0LCBp
dCdzIGJlc3QgaWYgeW91IGNvdWxkIGlzb2xhdGUgYW5kIHRlc3QgYSBwaWVjZSBvZgorY29kZSBp
biBhIHNpbmdsZS10aHJlYWRlZCBjb250ZXh0LiBUaGF0IGF2b2lkcyByYWNlIGNvbmRpdGlvbnMg
YW5kCitkZWFkIGxvY2tzLCBhbmQgbWFrZXMgZGVidWdnaW5nIHlvdXIgdGVzdCBtdWNoIGVhc2ll
ci4KKworWWV0IG1hbnkgcHJvZ3JhbXMgYXJlIG11bHRpLXRocmVhZGVkLCBhbmQgc29tZXRpbWVz
IHRvIHRlc3Qgc29tZXRoaW5nCit3ZSBuZWVkIHRvIHBvdW5kIG9uIGl0IGZyb20gbW9yZSB0aGFu
IG9uZSB0aHJlYWQuIEdvb2dsZSBNb2NrIHdvcmtzCitmb3IgdGhpcyBwdXJwb3NlIHRvby4KKwor
UmVtZW1iZXIgdGhlIHN0ZXBzIGZvciB1c2luZyBhIG1vY2s6CisKKyAgMS4gQ3JlYXRlIGEgbW9j
ayBvYmplY3QgYGZvb2AuCisgIDEuIFNldCBpdHMgZGVmYXVsdCBhY3Rpb25zIGFuZCBleHBlY3Rh
dGlvbnMgdXNpbmcgYE9OX0NBTEwoKWAgYW5kIGBFWFBFQ1RfQ0FMTCgpYC4KKyAgMS4gVGhlIGNv
ZGUgdW5kZXIgdGVzdCBjYWxscyBtZXRob2RzIG9mIGBmb29gLgorICAxLiBPcHRpb25hbGx5LCB2
ZXJpZnkgYW5kIHJlc2V0IHRoZSBtb2NrLgorICAxLiBEZXN0cm95IHRoZSBtb2NrIHlvdXJzZWxm
LCBvciBsZXQgdGhlIGNvZGUgdW5kZXIgdGVzdCBkZXN0cm95IGl0LiBUaGUgZGVzdHJ1Y3RvciB3
aWxsIGF1dG9tYXRpY2FsbHkgdmVyaWZ5IGl0LgorCitJZiB5b3UgZm9sbG93IHRoZSBmb2xsb3dp
bmcgc2ltcGxlIHJ1bGVzLCB5b3VyIG1vY2tzIGFuZCB0aHJlYWRzIGNhbgorbGl2ZSBoYXBwaWx5
IHRvZ2V0ZXI6CisKKyAgKiBFeGVjdXRlIHlvdXIgX3Rlc3QgY29kZV8gKGFzIG9wcG9zZWQgdG8g
dGhlIGNvZGUgYmVpbmcgdGVzdGVkKSBpbiBfb25lXyB0aHJlYWQuIFRoaXMgbWFrZXMgeW91ciB0
ZXN0IGVhc3kgdG8gZm9sbG93LgorICAqIE9idmlvdXNseSwgeW91IGNhbiBkbyBzdGVwICMxIHdp
dGhvdXQgbG9ja2luZy4KKyAgKiBXaGVuIGRvaW5nIHN0ZXAgIzIgYW5kICM1LCBtYWtlIHN1cmUg
bm8gb3RoZXIgdGhyZWFkIGlzIGFjY2Vzc2luZyBgZm9vYC4gT2J2aW91cyB0b28sIGh1aD8KKyAg
KiAjMyBhbmQgIzQgY2FuIGJlIGRvbmUgZWl0aGVyIGluIG9uZSB0aHJlYWQgb3IgaW4gbXVsdGlw
bGUgdGhyZWFkcyAtIGFueXdheSB5b3Ugd2FudC4gR29vZ2xlIE1vY2sgdGFrZXMgY2FyZSBvZiB0
aGUgbG9ja2luZywgc28geW91IGRvbid0IGhhdmUgdG8gZG8gYW55IC0gdW5sZXNzIHJlcXVpcmVk
IGJ5IHlvdXIgdGVzdCBsb2dpYy4KKworSWYgeW91IHZpb2xhdGUgdGhlIHJ1bGVzIChmb3IgZXhh
bXBsZSwgaWYgeW91IHNldCBleHBlY3RhdGlvbnMgb24gYQorbW9jayB3aGlsZSBhbm90aGVyIHRo
cmVhZCBpcyBjYWxsaW5nIGl0cyBtZXRob2RzKSwgeW91IGdldCB1bmRlZmluZWQKK2JlaGF2aW9y
LiBUaGF0J3Mgbm90IGZ1biwgc28gZG9uJ3QgZG8gaXQuCisKK0dvb2dsZSBNb2NrIGd1YXJhbnRl
ZXMgdGhhdCB0aGUgYWN0aW9uIGZvciBhIG1vY2sgZnVuY3Rpb24gaXMgZG9uZSBpbgordGhlIHNh
bWUgdGhyZWFkIHRoYXQgY2FsbGVkIHRoZSBtb2NrIGZ1bmN0aW9uLiBGb3IgZXhhbXBsZSwgaW4K
KworYGBgCisgIEVYUEVDVF9DQUxMKG1vY2ssIEZvbygxKSkKKyAgICAgIC5XaWxsT25jZShhY3Rp
b24xKTsKKyAgRVhQRUNUX0NBTEwobW9jaywgRm9vKDIpKQorICAgICAgLldpbGxPbmNlKGFjdGlv
bjIpOworYGBgCisKK2lmIGBGb28oMSlgIGlzIGNhbGxlZCBpbiB0aHJlYWQgMSBhbmQgYEZvbygy
KWAgaXMgY2FsbGVkIGluIHRocmVhZCAyLAorR29vZ2xlIE1vY2sgd2lsbCBleGVjdXRlIGBhY3Rp
b24xYCBpbiB0aHJlYWQgMSBhbmQgYGFjdGlvbjJgIGluIHRocmVhZAorMi4KKworR29vZ2xlIE1v
Y2sgZG9lcyBfbm90XyBpbXBvc2UgYSBzZXF1ZW5jZSBvbiBhY3Rpb25zIHBlcmZvcm1lZCBpbgor
ZGlmZmVyZW50IHRocmVhZHMgKGRvaW5nIHNvIG1heSBjcmVhdGUgZGVhZGxvY2tzIGFzIHRoZSBh
Y3Rpb25zIG1heQorbmVlZCB0byBjb29wZXJhdGUpLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGV4ZWN1
dGlvbiBvZiBgYWN0aW9uMWAgYW5kCitgYWN0aW9uMmAgaW4gdGhlIGFib3ZlIGV4YW1wbGUgX21h
eV8gaW50ZXJsZWF2ZS4gSWYgdGhpcyBpcyBhIHByb2JsZW0sCit5b3Ugc2hvdWxkIGFkZCBwcm9w
ZXIgc3luY2hyb25pemF0aW9uIGxvZ2ljIHRvIGBhY3Rpb24xYCBhbmQgYGFjdGlvbjJgCit0byBt
YWtlIHRoZSB0ZXN0IHRocmVhZC1zYWZlLgorCisKK0Fsc28sIHJlbWVtYmVyIHRoYXQgYERlZmF1
bHRWYWx1ZTxUPmAgaXMgYSBnbG9iYWwgcmVzb3VyY2UgdGhhdAorcG90ZW50aWFsbHkgYWZmZWN0
cyBfYWxsXyBsaXZpbmcgbW9jayBvYmplY3RzIGluIHlvdXIKK3Byb2dyYW0uIE5hdHVyYWxseSwg
eW91IHdvbid0IHdhbnQgdG8gbWVzcyB3aXRoIGl0IGZyb20gbXVsdGlwbGUKK3RocmVhZHMgb3Ig
d2hlbiB0aGVyZSBzdGlsbCBhcmUgbW9ja3MgaW4gYWN0aW9uLgorCisjIyBDb250cm9sbGluZyBI
b3cgTXVjaCBJbmZvcm1hdGlvbiBHb29nbGUgTW9jayBQcmludHMgIyMKKworV2hlbiBHb29nbGUg
TW9jayBzZWVzIHNvbWV0aGluZyB0aGF0IGhhcyB0aGUgcG90ZW50aWFsIG9mIGJlaW5nIGFuCitl
cnJvciAoZS5nLiBhIG1vY2sgZnVuY3Rpb24gd2l0aCBubyBleHBlY3RhdGlvbiBpcyBjYWxsZWQs
IGEuay5hLiBhbgordW5pbnRlcmVzdGluZyBjYWxsLCB3aGljaCBpcyBhbGxvd2VkIGJ1dCBwZXJo
YXBzIHlvdSBmb3Jnb3QgdG8KK2V4cGxpY2l0bHkgYmFuIHRoZSBjYWxsKSwgaXQgcHJpbnRzIHNv
bWUgd2FybmluZyBtZXNzYWdlcywgaW5jbHVkaW5nCit0aGUgYXJndW1lbnRzIG9mIHRoZSBmdW5j
dGlvbiBhbmQgdGhlIHJldHVybiB2YWx1ZS4gSG9wZWZ1bGx5IHRoaXMKK3dpbGwgcmVtaW5kIHlv
dSB0byB0YWtlIGEgbG9vayBhbmQgc2VlIGlmIHRoZXJlIGlzIGluZGVlZCBhIHByb2JsZW0uCisK
K1NvbWV0aW1lcyB5b3UgYXJlIGNvbmZpZGVudCB0aGF0IHlvdXIgdGVzdHMgYXJlIGNvcnJlY3Qg
YW5kIG1heSBub3QKK2FwcHJlY2lhdGUgc3VjaCBmcmllbmRseSBtZXNzYWdlcy4gU29tZSBvdGhl
ciB0aW1lcywgeW91IGFyZSBkZWJ1Z2dpbmcKK3lvdXIgdGVzdHMgb3IgbGVhcm5pbmcgYWJvdXQg
dGhlIGJlaGF2aW9yIG9mIHRoZSBjb2RlIHlvdSBhcmUgdGVzdGluZywKK2FuZCB3aXNoIHlvdSBj
b3VsZCBvYnNlcnZlIGV2ZXJ5IG1vY2sgY2FsbCB0aGF0IGhhcHBlbnMgKGluY2x1ZGluZworYXJn
dW1lbnQgdmFsdWVzIGFuZCB0aGUgcmV0dXJuIHZhbHVlKS4gQ2xlYXJseSwgb25lIHNpemUgZG9l
c24ndCBmaXQKK2FsbC4KKworWW91IGNhbiBjb250cm9sIGhvdyBtdWNoIEdvb2dsZSBNb2NrIHRl
bGxzIHlvdSB1c2luZyB0aGUKK2AtLWdtb2NrX3ZlcmJvc2U9TEVWRUxgIGNvbW1hbmQtbGluZSBm
bGFnLCB3aGVyZSBgTEVWRUxgIGlzIGEgc3RyaW5nCit3aXRoIHRocmVlIHBvc3NpYmxlIHZhbHVl
czoKKworICAqIGBpbmZvYDogR29vZ2xlIE1vY2sgd2lsbCBwcmludCBhbGwgaW5mb3JtYXRpb25h
bCBtZXNzYWdlcywgd2FybmluZ3MsIGFuZCBlcnJvcnMgKG1vc3QgdmVyYm9zZSkuIEF0IHRoaXMg
c2V0dGluZywgR29vZ2xlIE1vY2sgd2lsbCBhbHNvIGxvZyBhbnkgY2FsbHMgdG8gdGhlIGBPTl9D
QUxML0VYUEVDVF9DQUxMYCBtYWNyb3MuCisgICogYHdhcm5pbmdgOiBHb29nbGUgTW9jayB3aWxs
IHByaW50IGJvdGggd2FybmluZ3MgYW5kIGVycm9ycyAobGVzcyB2ZXJib3NlKS4gVGhpcyBpcyB0
aGUgZGVmYXVsdC4KKyAgKiBgZXJyb3JgOiBHb29nbGUgTW9jayB3aWxsIHByaW50IGVycm9ycyBv
bmx5IChsZWFzdCB2ZXJib3NlKS4KKworQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBhZGp1c3QgdGhl
IHZhbHVlIG9mIHRoYXQgZmxhZyBmcm9tIHdpdGhpbiB5b3VyCit0ZXN0cyBsaWtlIHNvOgorCitg
YGAKKyAgOjp0ZXN0aW5nOjpGTEFHU19nbW9ja192ZXJib3NlID0gImVycm9yIjsKK2BgYAorCitO
b3csIGp1ZGljaW91c2x5IHVzZSB0aGUgcmlnaHQgZmxhZyB0byBlbmFibGUgR29vZ2xlIE1vY2sg
c2VydmUgeW91IGJldHRlciEKKworIyMgUnVubmluZyBUZXN0cyBpbiBFbWFjcyAjIworCitJZiB5
b3UgYnVpbGQgYW5kIHJ1biB5b3VyIHRlc3RzIGluIEVtYWNzLCB0aGUgc291cmNlIGZpbGUgbG9j
YXRpb25zIG9mCitHb29nbGUgTW9jayBhbmQgW0dvb2dsZSBUZXN0XShodHRwOi8vY29kZS5nb29n
bGUuY29tL3AvZ29vZ2xldGVzdC8pCitlcnJvcnMgd2lsbCBiZSBoaWdobGlnaHRlZC4gSnVzdCBw
cmVzcyBgPEVudGVyPmAgb24gb25lIG9mIHRoZW0gYW5kCit5b3UnbGwgYmUgdGFrZW4gdG8gdGhl
IG9mZmVuZGluZyBsaW5lLiBPciwgeW91IGNhbiBqdXN0IHR5cGUgYEMteCBgYAordG8ganVtcCB0
byB0aGUgbmV4dCBlcnJvci4KKworVG8gbWFrZSBpdCBldmVuIGVhc2llciwgeW91IGNhbiBhZGQg
dGhlIGZvbGxvd2luZyBsaW5lcyB0byB5b3VyCitgfi8uZW1hY3NgIGZpbGU6CisKK2BgYAorKGds
b2JhbC1zZXQta2V5ICJcTS1tIiAgICdjb21waWxlKSAgOyBtIGlzIGZvciBtYWtlCisoZ2xvYmFs
LXNldC1rZXkgW00tZG93bl0gJ25leHQtZXJyb3IpCisoZ2xvYmFsLXNldC1rZXkgW00tdXBdICAg
JyhsYW1iZGEgKCkgKGludGVyYWN0aXZlKSAobmV4dC1lcnJvciAtMSkpKQorYGBgCisKK1RoZW4g
eW91IGNhbiB0eXBlIGBNLW1gIHRvIHN0YXJ0IGEgYnVpbGQsIG9yIGBNLXVwYC9gTS1kb3duYCB0
byBtb3ZlCitiYWNrIGFuZCBmb3J0aCBiZXR3ZWVuIGVycm9ycy4KKworIyMgRnVzaW5nIEdvb2ds
ZSBNb2NrIFNvdXJjZSBGaWxlcyAjIworCitHb29nbGUgTW9jaydzIGltcGxlbWVudGF0aW9uIGNv
bnNpc3RzIG9mIGRvemVucyBvZiBmaWxlcyAoZXhjbHVkaW5nCitpdHMgb3duIHRlc3RzKS4gIFNv
bWV0aW1lcyB5b3UgbWF5IHdhbnQgdGhlbSB0byBiZSBwYWNrYWdlZCB1cCBpbgorZmV3ZXIgZmls
ZXMgaW5zdGVhZCwgc3VjaCB0aGF0IHlvdSBjYW4gZWFzaWx5IGNvcHkgdGhlbSB0byBhIG5ldwor
bWFjaGluZSBhbmQgc3RhcnQgaGFja2luZyB0aGVyZS4gIEZvciB0aGlzIHdlIHByb3ZpZGUgYW4g
ZXhwZXJpbWVudGFsCitQeXRob24gc2NyaXB0IGBmdXNlX2dtb2NrX2ZpbGVzLnB5YCBpbiB0aGUg
YHNjcmlwdHMvYCBkaXJlY3RvcnkKKyhzdGFydGluZyB3aXRoIHJlbGVhc2UgMS4yLjApLiAgQXNz
dW1pbmcgeW91IGhhdmUgUHl0aG9uIDIuNCBvciBhYm92ZQoraW5zdGFsbGVkIG9uIHlvdXIgbWFj
aGluZSwganVzdCBnbyB0byB0aGF0IGRpcmVjdG9yeSBhbmQgcnVuCitgYGAKK3B5dGhvbiBmdXNl
X2dtb2NrX2ZpbGVzLnB5IE9VVFBVVF9ESVIKK2BgYAorCithbmQgeW91IHNob3VsZCBzZWUgYW4g
YE9VVFBVVF9ESVJgIGRpcmVjdG9yeSBiZWluZyBjcmVhdGVkIHdpdGggZmlsZXMKK2BndGVzdC9n
dGVzdC5oYCwgYGdtb2NrL2dtb2NrLmhgLCBhbmQgYGdtb2NrLWd0ZXN0LWFsbC5jY2AgaW4gaXQu
CitUaGVzZSB0aHJlZSBmaWxlcyBjb250YWluIGV2ZXJ5dGhpbmcgeW91IG5lZWQgdG8gdXNlIEdv
b2dsZSBNb2NrIChhbmQKK0dvb2dsZSBUZXN0KS4gIEp1c3QgY29weSB0aGVtIHRvIGFueXdoZXJl
IHlvdSB3YW50IGFuZCB5b3UgYXJlIHJlYWR5Cit0byB3cml0ZSB0ZXN0cyBhbmQgdXNlIG1vY2tz
LiAgWW91IGNhbiB1c2UgdGhlCitbc2NycHRzL3Rlc3QvTWFrZWZpbGVdKGh0dHA6Ly9jb2RlLmdv
b2dsZS5jb20vcC9nb29nbGVtb2NrL3NvdXJjZS9icm93c2UvdHJ1bmsvc2NyaXB0cy90ZXN0L01h
a2VmaWxlKSBmaWxlIGFzIGFuIGV4YW1wbGUgb24gaG93IHRvIGNvbXBpbGUgeW91ciB0ZXN0cwor
YWdhaW5zdCB0aGVtLgorCisjIEV4dGVuZGluZyBHb29nbGUgTW9jayAjCisKKyMjIFdyaXRpbmcg
TmV3IE1hdGNoZXJzIFF1aWNrbHkgIyMKKworVGhlIGBNQVRDSEVSKmAgZmFtaWx5IG9mIG1hY3Jv
cyBjYW4gYmUgdXNlZCB0byBkZWZpbmUgY3VzdG9tIG1hdGNoZXJzCitlYXNpbHkuICBUaGUgc3lu
dGF4OgorCitgYGAKK01BVENIRVIobmFtZSwgZGVzY3JpcHRpb25fc3RyaW5nX2V4cHJlc3Npb24p
IHsgc3RhdGVtZW50czsgfQorYGBgCisKK3dpbGwgZGVmaW5lIGEgbWF0Y2hlciB3aXRoIHRoZSBn
aXZlbiBuYW1lIHRoYXQgZXhlY3V0ZXMgdGhlCitzdGF0ZW1lbnRzLCB3aGljaCBtdXN0IHJldHVy
biBhIGBib29sYCB0byBpbmRpY2F0ZSBpZiB0aGUgbWF0Y2gKK3N1Y2NlZWRzLiAgSW5zaWRlIHRo
ZSBzdGF0ZW1lbnRzLCB5b3UgY2FuIHJlZmVyIHRvIHRoZSB2YWx1ZSBiZWluZworbWF0Y2hlZCBi
eSBgYXJnYCwgYW5kIHJlZmVyIHRvIGl0cyB0eXBlIGJ5IGBhcmdfdHlwZWAuCisKK1RoZSBkZXNj
cmlwdGlvbiBzdHJpbmcgaXMgYSBgc3RyaW5nYC10eXBlZCBleHByZXNzaW9uIHRoYXQgZG9jdW1l
bnRzCit3aGF0IHRoZSBtYXRjaGVyIGRvZXMsIGFuZCBpcyB1c2VkIHRvIGdlbmVyYXRlIHRoZSBm
YWlsdXJlIG1lc3NhZ2UKK3doZW4gdGhlIG1hdGNoIGZhaWxzLiAgSXQgY2FuIChhbmQgc2hvdWxk
KSByZWZlcmVuY2UgdGhlIHNwZWNpYWwKK2Bib29sYCB2YXJpYWJsZSBgbmVnYXRpb25gLCBhbmQg
c2hvdWxkIGV2YWx1YXRlIHRvIHRoZSBkZXNjcmlwdGlvbiBvZgordGhlIG1hdGNoZXIgd2hlbiBg
bmVnYXRpb25gIGlzIGBmYWxzZWAsIG9yIHRoYXQgb2YgdGhlIG1hdGNoZXIncworbmVnYXRpb24g
d2hlbiBgbmVnYXRpb25gIGlzIGB0cnVlYC4KKworRm9yIGNvbnZlbmllbmNlLCB3ZSBhbGxvdyB0
aGUgZGVzY3JpcHRpb24gc3RyaW5nIHRvIGJlIGVtcHR5IChgIiJgKSwKK2luIHdoaWNoIGNhc2Ug
R29vZ2xlIE1vY2sgd2lsbCB1c2UgdGhlIHNlcXVlbmNlIG9mIHdvcmRzIGluIHRoZQorbWF0Y2hl
ciBuYW1lIGFzIHRoZSBkZXNjcmlwdGlvbi4KKworRm9yIGV4YW1wbGU6CitgYGAKK01BVENIRVIo
SXNEaXZpc2libGVCeTcsICIiKSB7IHJldHVybiAoYXJnICUgNykgPT0gMDsgfQorYGBgCithbGxv
d3MgeW91IHRvIHdyaXRlCitgYGAKKyAgLy8gRXhwZWN0cyBtb2NrX2Zvby5CYXIobikgdG8gYmUg
Y2FsbGVkIHdoZXJlIG4gaXMgZGl2aXNpYmxlIGJ5IDcuCisgIEVYUEVDVF9DQUxMKG1vY2tfZm9v
LCBCYXIoSXNEaXZpc2libGVCeTcoKSkpOworYGBgCitvciwKK2BgYAordXNpbmcgOjp0ZXN0aW5n
OjpOb3Q7CisuLi4KKyAgRVhQRUNUX1RIQVQoc29tZV9leHByZXNzaW9uLCBJc0RpdmlzaWJsZUJ5
NygpKTsKKyAgRVhQRUNUX1RIQVQoc29tZV9vdGhlcl9leHByZXNzaW9uLCBOb3QoSXNEaXZpc2li
bGVCeTcoKSkpOworYGBgCitJZiB0aGUgYWJvdmUgYXNzZXJ0aW9ucyBmYWlsLCB0aGV5IHdpbGwg
cHJpbnQgc29tZXRoaW5nIGxpa2U6CitgYGAKKyAgVmFsdWUgb2Y6IHNvbWVfZXhwcmVzc2lvbgor
ICBFeHBlY3RlZDogaXMgZGl2aXNpYmxlIGJ5IDcKKyAgICBBY3R1YWw6IDI3CisuLi4KKyAgVmFs
dWUgb2Y6IHNvbWVfb3RoZXJfZXhwcmVzc2lvbgorICBFeHBlY3RlZDogbm90IChpcyBkaXZpc2li
bGUgYnkgNykKKyAgICBBY3R1YWw6IDIxCitgYGAKK3doZXJlIHRoZSBkZXNjcmlwdGlvbnMgYCJp
cyBkaXZpc2libGUgYnkgNyJgIGFuZCBgIm5vdCAoaXMgZGl2aXNpYmxlCitieSA3KSJgIGFyZSBh
dXRvbWF0aWNhbGx5IGNhbGN1bGF0ZWQgZnJvbSB0aGUgbWF0Y2hlciBuYW1lCitgSXNEaXZpc2li
bGVCeTdgLgorCitBcyB5b3UgbWF5IGhhdmUgbm90aWNlZCwgdGhlIGF1dG8tZ2VuZXJhdGVkIGRl
c2NyaXB0aW9ucyAoZXNwZWNpYWxseQordGhvc2UgZm9yIHRoZSBuZWdhdGlvbikgbWF5IG5vdCBi
ZSBzbyBncmVhdC4gWW91IGNhbiBhbHdheXMgb3ZlcnJpZGUKK3RoZW0gd2l0aCBhIHN0cmluZyBl
eHByZXNzaW9uIG9mIHlvdXIgb3duOgorYGBgCitNQVRDSEVSKElzRGl2aXNpYmxlQnk3LCBzdGQ6
OnN0cmluZyhuZWdhdGlvbiA/ICJpc24ndCIgOiAiaXMiKSArCisgICAgICAgICAgICAgICAgICAg
ICAgICAiIGRpdmlzaWJsZSBieSA3IikgeworICByZXR1cm4gKGFyZyAlIDcpID09IDA7Cit9Citg
YGAKKworT3B0aW9uYWxseSwgeW91IGNhbiBzdHJlYW0gYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB0
byBhIGhpZGRlbiBhcmd1bWVudAorbmFtZWQgYHJlc3VsdF9saXN0ZW5lcmAgdG8gZXhwbGFpbiB0
aGUgbWF0Y2ggcmVzdWx0LiBGb3IgZXhhbXBsZSwgYQorYmV0dGVyIGRlZmluaXRpb24gb2YgYElz
RGl2aXNpYmxlQnk3YCBpczoKK2BgYAorTUFUQ0hFUihJc0RpdmlzaWJsZUJ5NywgIiIpIHsKKyAg
aWYgKChhcmcgJSA3KSA9PSAwKQorICAgIHJldHVybiB0cnVlOworCisgICpyZXN1bHRfbGlzdGVu
ZXIgPDwgInRoZSByZW1haW5kZXIgaXMgIiA8PCAoYXJnICUgNyk7CisgIHJldHVybiBmYWxzZTsK
K30KK2BgYAorCitXaXRoIHRoaXMgZGVmaW5pdGlvbiwgdGhlIGFib3ZlIGFzc2VydGlvbiB3aWxs
IGdpdmUgYSBiZXR0ZXIgbWVzc2FnZToKK2BgYAorICBWYWx1ZSBvZjogc29tZV9leHByZXNzaW9u
CisgIEV4cGVjdGVkOiBpcyBkaXZpc2libGUgYnkgNworICAgIEFjdHVhbDogMjcgKHRoZSByZW1h
aW5kZXIgaXMgNikKK2BgYAorCitZb3Ugc2hvdWxkIGxldCBgTWF0Y2hBbmRFeHBsYWluKClgIHBy
aW50IF9hbnkgYWRkaXRpb25hbCBpbmZvcm1hdGlvbl8KK3RoYXQgY2FuIGhlbHAgYSB1c2VyIHVu
ZGVyc3RhbmQgdGhlIG1hdGNoIHJlc3VsdC4gTm90ZSB0aGF0IGl0IHNob3VsZAorZXhwbGFpbiB3
aHkgdGhlIG1hdGNoIHN1Y2NlZWRzIGluIGNhc2Ugb2YgYSBzdWNjZXNzICh1bmxlc3MgaXQncwor
b2J2aW91cykgLSB0aGlzIGlzIHVzZWZ1bCB3aGVuIHRoZSBtYXRjaGVyIGlzIHVzZWQgaW5zaWRl
CitgTm90KClgLiBUaGVyZSBpcyBubyBuZWVkIHRvIHByaW50IHRoZSBhcmd1bWVudCB2YWx1ZSBp
dHNlbGYsIGFzCitHb29nbGUgTW9jayBhbHJlYWR5IHByaW50cyBpdCBmb3IgeW91LgorCisqKk5v
dGVzOioqCisKKyAgMS4gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIGJlaW5nIG1hdGNoZWQgKGBhcmdf
dHlwZWApIGlzIGRldGVybWluZWQgYnkgdGhlIGNvbnRleHQgaW4gd2hpY2ggeW91IHVzZSB0aGUg
bWF0Y2hlciBhbmQgaXMgc3VwcGxpZWQgdG8geW91IGJ5IHRoZSBjb21waWxlciwgc28geW91IGRv
bid0IG5lZWQgdG8gd29ycnkgYWJvdXQgZGVjbGFyaW5nIGl0IChub3IgY2FuIHlvdSkuICBUaGlz
IGFsbG93cyB0aGUgbWF0Y2hlciB0byBiZSBwb2x5bW9ycGhpYy4gIEZvciBleGFtcGxlLCBgSXNE
aXZpc2libGVCeTcoKWAgY2FuIGJlIHVzZWQgdG8gbWF0Y2ggYW55IHR5cGUgd2hlcmUgdGhlIHZh
bHVlIG9mIGAoYXJnICUgNykgPT0gMGAgY2FuIGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRvIGEg
YGJvb2xgLiAgSW4gdGhlIGBCYXIoSXNEaXZpc2libGVCeTcoKSlgIGV4YW1wbGUgYWJvdmUsIGlm
IG1ldGhvZCBgQmFyKClgIHRha2VzIGFuIGBpbnRgLCBgYXJnX3R5cGVgIHdpbGwgYmUgYGludGA7
IGlmIGl0IHRha2VzIGFuIGB1bnNpZ25lZCBsb25nYCwgYGFyZ190eXBlYCB3aWxsIGJlIGB1bnNp
Z25lZCBsb25nYDsgYW5kIHNvIG9uLgorICAxLiBHb29nbGUgTW9jayBkb2Vzbid0IGd1YXJhbnRl
ZSB3aGVuIG9yIGhvdyBtYW55IHRpbWVzIGEgbWF0Y2hlciB3aWxsIGJlIGludm9rZWQuIFRoZXJl
Zm9yZSB0aGUgbWF0Y2hlciBsb2dpYyBtdXN0IGJlIF9wdXJlbHkgZnVuY3Rpb25hbF8gKGkuZS4g
aXQgY2Fubm90IGhhdmUgYW55IHNpZGUgZWZmZWN0LCBhbmQgdGhlIHJlc3VsdCBtdXN0IG5vdCBk
ZXBlbmQgb24gYW55dGhpbmcgb3RoZXIgdGhhbiB0aGUgdmFsdWUgYmVpbmcgbWF0Y2hlZCBhbmQg
dGhlIG1hdGNoZXIgcGFyYW1ldGVycykuIFRoaXMgcmVxdWlyZW1lbnQgbXVzdCBiZSBzYXRpc2Zp
ZWQgbm8gbWF0dGVyIGhvdyB5b3UgZGVmaW5lIHRoZSBtYXRjaGVyIChlLmcuIHVzaW5nIG9uZSBv
ZiB0aGUgbWV0aG9kcyBkZXNjcmliZWQgaW4gdGhlIGZvbGxvd2luZyByZWNpcGVzKS4gSW4gcGFy
dGljdWxhciwgYSBtYXRjaGVyIGNhbiBuZXZlciBjYWxsIGEgbW9jayBmdW5jdGlvbiwgYXMgdGhh
dCB3aWxsIGFmZmVjdCB0aGUgc3RhdGUgb2YgdGhlIG1vY2sgb2JqZWN0IGFuZCBHb29nbGUgTW9j
ay4KKworIyMgV3JpdGluZyBOZXcgUGFyYW1ldGVyaXplZCBNYXRjaGVycyBRdWlja2x5ICMjCisK
K1NvbWV0aW1lcyB5b3UnbGwgd2FudCB0byBkZWZpbmUgYSBtYXRjaGVyIHRoYXQgaGFzIHBhcmFt
ZXRlcnMuICBGb3IgdGhhdCB5b3UKK2NhbiB1c2UgdGhlIG1hY3JvOgorYGBgCitNQVRDSEVSX1Ao
bmFtZSwgcGFyYW1fbmFtZSwgZGVzY3JpcHRpb25fc3RyaW5nKSB7IHN0YXRlbWVudHM7IH0KK2Bg
YAord2hlcmUgdGhlIGRlc2NyaXB0aW9uIHN0cmluZyBjYW4gYmUgZWl0aGVyIGAiImAgb3IgYSBz
dHJpbmcgZXhwcmVzc2lvbgordGhhdCByZWZlcmVuY2VzIGBuZWdhdGlvbmAgYW5kIGBwYXJhbV9u
YW1lYC4KKworRm9yIGV4YW1wbGU6CitgYGAKK01BVENIRVJfUChIYXNBYnNvbHV0ZVZhbHVlLCB2
YWx1ZSwgIiIpIHsgcmV0dXJuIGFicyhhcmcpID09IHZhbHVlOyB9CitgYGAKK3dpbGwgYWxsb3cg
eW91IHRvIHdyaXRlOgorYGBgCisgIEVYUEVDVF9USEFUKEJsYWgoImEiKSwgSGFzQWJzb2x1dGVW
YWx1ZShuKSk7CitgYGAKK3doaWNoIG1heSBsZWFkIHRvIHRoaXMgbWVzc2FnZSAoYXNzdW1pbmcg
YG5gIGlzIDEwKToKK2BgYAorICBWYWx1ZSBvZjogQmxhaCgiYSIpCisgIEV4cGVjdGVkOiBoYXMg
YWJzb2x1dGUgdmFsdWUgMTAKKyAgICBBY3R1YWw6IC05CitgYGAKKworTm90ZSB0aGF0IGJvdGgg
dGhlIG1hdGNoZXIgZGVzY3JpcHRpb24gYW5kIGl0cyBwYXJhbWV0ZXIgYXJlCitwcmludGVkLCBt
YWtpbmcgdGhlIG1lc3NhZ2UgaHVtYW4tZnJpZW5kbHkuCisKK0luIHRoZSBtYXRjaGVyIGRlZmlu
aXRpb24gYm9keSwgeW91IGNhbiB3cml0ZSBgZm9vX3R5cGVgIHRvCityZWZlcmVuY2UgdGhlIHR5
cGUgb2YgYSBwYXJhbWV0ZXIgbmFtZWQgYGZvb2AuICBGb3IgZXhhbXBsZSwgaW4gdGhlCitib2R5
IG9mIGBNQVRDSEVSX1AoSGFzQWJzb2x1dGVWYWx1ZSwgdmFsdWUpYCBhYm92ZSwgeW91IGNhbiB3
cml0ZQorYHZhbHVlX3R5cGVgIHRvIHJlZmVyIHRvIHRoZSB0eXBlIG9mIGB2YWx1ZWAuCisKK0dv
b2dsZSBNb2NrIGFsc28gcHJvdmlkZXMgYE1BVENIRVJfUDJgLCBgTUFUQ0hFUl9QM2AsIC4uLiwg
dXAgdG8KK2BNQVRDSEVSX1AxMGAgdG8gc3VwcG9ydCBtdWx0aS1wYXJhbWV0ZXIgbWF0Y2hlcnM6
CitgYGAKK01BVENIRVJfUGsobmFtZSwgcGFyYW1fMSwgLi4uLCBwYXJhbV9rLCBkZXNjcmlwdGlv
bl9zdHJpbmcpIHsgc3RhdGVtZW50czsgfQorYGBgCisKK1BsZWFzZSBub3RlIHRoYXQgdGhlIGN1
c3RvbSBkZXNjcmlwdGlvbiBzdHJpbmcgaXMgZm9yIGEgcGFydGljdWxhcgorKippbnN0YW5jZSoq
IG9mIHRoZSBtYXRjaGVyLCB3aGVyZSB0aGUgcGFyYW1ldGVycyBoYXZlIGJlZW4gYm91bmQgdG8K
K2FjdHVhbCB2YWx1ZXMuICBUaGVyZWZvcmUgdXN1YWxseSB5b3UnbGwgd2FudCB0aGUgcGFyYW1l
dGVyIHZhbHVlcyB0bworYmUgcGFydCBvZiB0aGUgZGVzY3JpcHRpb24uICBHb29nbGUgTW9jayBs
ZXRzIHlvdSBkbyB0aGF0IGJ5CityZWZlcmVuY2luZyB0aGUgbWF0Y2hlciBwYXJhbWV0ZXJzIGlu
IHRoZSBkZXNjcmlwdGlvbiBzdHJpbmcKK2V4cHJlc3Npb24uCisKK0ZvciBleGFtcGxlLAorYGBg
CisgIHVzaW5nIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZzsKKyAgTUFUQ0hFUl9QMihJbkNsb3Nl
ZFJhbmdlLCBsb3csIGhpLAorICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKG5lZ2F0aW9uID8gImlz
bid0IiA6ICJpcyIpICsgIiBpbiByYW5nZSBbIiArCisgICAgICAgICAgICAgUHJpbnRUb1N0cmlu
Zyhsb3cpICsgIiwgIiArIFByaW50VG9TdHJpbmcoaGkpICsgIl0iKSB7CisgICAgcmV0dXJuIGxv
dyA8PSBhcmcgJiYgYXJnIDw9IGhpOworICB9CisgIC4uLgorICBFWFBFQ1RfVEhBVCgzLCBJbkNs
b3NlZFJhbmdlKDQsIDYpKTsKK2BgYAord291bGQgZ2VuZXJhdGUgYSBmYWlsdXJlIHRoYXQgY29u
dGFpbnMgdGhlIG1lc3NhZ2U6CitgYGAKKyAgRXhwZWN0ZWQ6IGlzIGluIHJhbmdlIFs0LCA2XQor
YGBgCisKK0lmIHlvdSBzcGVjaWZ5IGAiImAgYXMgdGhlIGRlc2NyaXB0aW9uLCB0aGUgZmFpbHVy
ZSBtZXNzYWdlIHdpbGwKK2NvbnRhaW4gdGhlIHNlcXVlbmNlIG9mIHdvcmRzIGluIHRoZSBtYXRj
aGVyIG5hbWUgZm9sbG93ZWQgYnkgdGhlCitwYXJhbWV0ZXIgdmFsdWVzIHByaW50ZWQgYXMgYSB0
dXBsZS4gIEZvciBleGFtcGxlLAorYGBgCisgIE1BVENIRVJfUDIoSW5DbG9zZWRSYW5nZSwgbG93
LCBoaSwgIiIpIHsgLi4uIH0KKyAgLi4uCisgIEVYUEVDVF9USEFUKDMsIEluQ2xvc2VkUmFuZ2Uo
NCwgNikpOworYGBgCit3b3VsZCBnZW5lcmF0ZSBhIGZhaWx1cmUgdGhhdCBjb250YWlucyB0aGUg
dGV4dDoKK2BgYAorICBFeHBlY3RlZDogaW4gY2xvc2VkIHJhbmdlICg0LCA2KQorYGBgCisKK0Zv
ciB0aGUgcHVycG9zZSBvZiB0eXBpbmcsIHlvdSBjYW4gdmlldworYGBgCitNQVRDSEVSX1BrKEZv
bywgcDEsIC4uLiwgcGssIGRlc2NyaXB0aW9uX3N0cmluZykgeyAuLi4gfQorYGBgCithcyBzaG9y
dGhhbmQgZm9yCitgYGAKK3RlbXBsYXRlIDx0eXBlbmFtZSBwMV90eXBlLCAuLi4sIHR5cGVuYW1l
IHBrX3R5cGU+CitGb29NYXRjaGVyUGs8cDFfdHlwZSwgLi4uLCBwa190eXBlPgorRm9vKHAxX3R5
cGUgcDEsIC4uLiwgcGtfdHlwZSBwaykgeyAuLi4gfQorYGBgCisKK1doZW4geW91IHdyaXRlIGBG
b28odjEsIC4uLiwgdmspYCwgdGhlIGNvbXBpbGVyIGluZmVycyB0aGUgdHlwZXMgb2YKK3RoZSBw
YXJhbWV0ZXJzIGB2MWAsIC4uLiwgYW5kIGB2a2AgZm9yIHlvdS4gIElmIHlvdSBhcmUgbm90IGhh
cHB5IHdpdGgKK3RoZSByZXN1bHQgb2YgdGhlIHR5cGUgaW5mZXJlbmNlLCB5b3UgY2FuIHNwZWNp
ZnkgdGhlIHR5cGVzIGJ5CitleHBsaWNpdGx5IGluc3RhbnRpYXRpbmcgdGhlIHRlbXBsYXRlLCBh
cyBpbiBgRm9vPGxvbmcsIGJvb2w+KDUsIGZhbHNlKWAuCitBcyBzYWlkIGVhcmxpZXIsIHlvdSBk
b24ndCBnZXQgdG8gKG9yIG5lZWQgdG8pIHNwZWNpZnkKK2BhcmdfdHlwZWAgYXMgdGhhdCdzIGRl
dGVybWluZWQgYnkgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhlIG1hdGNoZXIKK2lzIHVzZWQuCisK
K1lvdSBjYW4gYXNzaWduIHRoZSByZXN1bHQgb2YgZXhwcmVzc2lvbiBgRm9vKHAxLCAuLi4sIHBr
KWAgdG8gYQordmFyaWFibGUgb2YgdHlwZSBgRm9vTWF0Y2hlclBrPHAxX3R5cGUsIC4uLiwgcGtf
dHlwZT5gLiAgVGhpcyBjYW4gYmUKK3VzZWZ1bCB3aGVuIGNvbXBvc2luZyBtYXRjaGVycy4gIE1h
dGNoZXJzIHRoYXQgZG9uJ3QgaGF2ZSBhIHBhcmFtZXRlcgorb3IgaGF2ZSBvbmx5IG9uZSBwYXJh
bWV0ZXIgaGF2ZSBzcGVjaWFsIHR5cGVzOiB5b3UgY2FuIGFzc2lnbiBgRm9vKClgCit0byBhIGBG
b29NYXRjaGVyYC10eXBlZCB2YXJpYWJsZSwgYW5kIGFzc2lnbiBgRm9vKHApYCB0byBhCitgRm9v
TWF0Y2hlclA8cF90eXBlPmAtdHlwZWQgdmFyaWFibGUuCisKK1doaWxlIHlvdSBjYW4gaW5zdGFu
dGlhdGUgYSBtYXRjaGVyIHRlbXBsYXRlIHdpdGggcmVmZXJlbmNlIHR5cGVzLAorcGFzc2luZyB0
aGUgcGFyYW1ldGVycyBieSBwb2ludGVyIHVzdWFsbHkgbWFrZXMgeW91ciBjb2RlIG1vcmUKK3Jl
YWRhYmxlLiAgSWYsIGhvd2V2ZXIsIHlvdSBzdGlsbCB3YW50IHRvIHBhc3MgYSBwYXJhbWV0ZXIg
YnkKK3JlZmVyZW5jZSwgYmUgYXdhcmUgdGhhdCBpbiB0aGUgZmFpbHVyZSBtZXNzYWdlIGdlbmVy
YXRlZCBieSB0aGUKK21hdGNoZXIgeW91IHdpbGwgc2VlIHRoZSB2YWx1ZSBvZiB0aGUgcmVmZXJl
bmNlZCBvYmplY3QgYnV0IG5vdCBpdHMKK2FkZHJlc3MuCisKK1lvdSBjYW4gb3ZlcmxvYWQgbWF0
Y2hlcnMgd2l0aCBkaWZmZXJlbnQgbnVtYmVycyBvZiBwYXJhbWV0ZXJzOgorYGBgCitNQVRDSEVS
X1AoQmxhaCwgYSwgZGVzY3JpcHRpb25fc3RyaW5nXzEpIHsgLi4uIH0KK01BVENIRVJfUDIoQmxh
aCwgYSwgYiwgZGVzY3JpcHRpb25fc3RyaW5nXzIpIHsgLi4uIH0KK2BgYAorCitXaGlsZSBpdCdz
IHRlbXB0aW5nIHRvIGFsd2F5cyB1c2UgdGhlIGBNQVRDSEVSKmAgbWFjcm9zIHdoZW4gZGVmaW5p
bmcKK2EgbmV3IG1hdGNoZXIsIHlvdSBzaG91bGQgYWxzbyBjb25zaWRlciBpbXBsZW1lbnRpbmcK
K2BNYXRjaGVySW50ZXJmYWNlYCBvciB1c2luZyBgTWFrZVBvbHltb3JwaGljTWF0Y2hlcigpYCBp
bnN0ZWFkIChzZWUKK3RoZSByZWNpcGVzIHRoYXQgZm9sbG93KSwgZXNwZWNpYWxseSBpZiB5b3Ug
bmVlZCB0byB1c2UgdGhlIG1hdGNoZXIgYQorbG90LiAgV2hpbGUgdGhlc2UgYXBwcm9hY2hlcyBy
ZXF1aXJlIG1vcmUgd29yaywgdGhleSBnaXZlIHlvdSBtb3JlCitjb250cm9sIG9uIHRoZSB0eXBl
cyBvZiB0aGUgdmFsdWUgYmVpbmcgbWF0Y2hlZCBhbmQgdGhlIG1hdGNoZXIKK3BhcmFtZXRlcnMs
IHdoaWNoIGluIGdlbmVyYWwgbGVhZHMgdG8gYmV0dGVyIGNvbXBpbGVyIGVycm9yIG1lc3NhZ2Vz
Cit0aGF0IHBheSBvZmYgaW4gdGhlIGxvbmcgcnVuLiAgVGhleSBhbHNvIGFsbG93IG92ZXJsb2Fk
aW5nIG1hdGNoZXJzCitiYXNlZCBvbiBwYXJhbWV0ZXIgdHlwZXMgKGFzIG9wcG9zZWQgdG8ganVz
dCBiYXNlZCBvbiB0aGUgbnVtYmVyIG9mCitwYXJhbWV0ZXJzKS4KKworIyMgV3JpdGluZyBOZXcg
TW9ub21vcnBoaWMgTWF0Y2hlcnMgIyMKKworQSBtYXRjaGVyIG9mIGFyZ3VtZW50IHR5cGUgYFRg
IGltcGxlbWVudHMKK2A6OnRlc3Rpbmc6Ok1hdGNoZXJJbnRlcmZhY2U8VD5gIGFuZCBkb2VzIHR3
byB0aGluZ3M6IGl0IHRlc3RzIHdoZXRoZXIgYQordmFsdWUgb2YgdHlwZSBgVGAgbWF0Y2hlcyB0
aGUgbWF0Y2hlciwgYW5kIGNhbiBkZXNjcmliZSB3aGF0IGtpbmQgb2YKK3ZhbHVlcyBpdCBtYXRj
aGVzLiBUaGUgbGF0dGVyIGFiaWxpdHkgaXMgdXNlZCBmb3IgZ2VuZXJhdGluZyByZWFkYWJsZQor
ZXJyb3IgbWVzc2FnZXMgd2hlbiBleHBlY3RhdGlvbnMgYXJlIHZpb2xhdGVkLgorCitUaGUgaW50
ZXJmYWNlIGxvb2tzIGxpa2UgdGhpczoKKworYGBgCitjbGFzcyBNYXRjaFJlc3VsdExpc3RlbmVy
IHsKKyBwdWJsaWM6CisgIC4uLgorICAvLyBTdHJlYW1zIHggdG8gdGhlIHVuZGVybHlpbmcgb3N0
cmVhbTsgZG9lcyBub3RoaW5nIGlmIHRoZSBvc3RyZWFtCisgIC8vIGlzIE5VTEwuCisgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgorICBNYXRjaFJlc3VsdExpc3RlbmVyJiBvcGVyYXRvcjw8KGNvbnN0
IFQmIHgpOworCisgIC8vIFJldHVybnMgdGhlIHVuZGVybHlpbmcgb3N0cmVhbS4KKyAgOjpzdGQ6
Om9zdHJlYW0qIHN0cmVhbSgpOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBN
YXRjaGVySW50ZXJmYWNlIHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgfk1hdGNoZXJJbnRlcmZhY2Uo
KTsKKworICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSBtYXRjaGVyIG1hdGNoZXMgeDsgYWxzbyBl
eHBsYWlucyB0aGUgbWF0Y2gKKyAgLy8gcmVzdWx0IHRvICdsaXN0ZW5lcicuCisgIHZpcnR1YWwg
Ym9vbCBNYXRjaEFuZEV4cGxhaW4oVCB4LCBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikg
Y29uc3QgPSAwOworCisgIC8vIERlc2NyaWJlcyB0aGlzIG1hdGNoZXIgdG8gYW4gb3N0cmVhbS4K
KyAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCA9IDA7
CisKKyAgLy8gRGVzY3JpYmVzIHRoZSBuZWdhdGlvbiBvZiB0aGlzIG1hdGNoZXIgdG8gYW4gb3N0
cmVhbS4KKyAgdmlydHVhbCB2b2lkIERlc2NyaWJlTmVnYXRpb25Ubyg6OnN0ZDo6b3N0cmVhbSog
b3MpIGNvbnN0OworfTsKK2BgYAorCitJZiB5b3UgbmVlZCBhIGN1c3RvbSBtYXRjaGVyIGJ1dCBg
VHJ1bHkoKWAgaXMgbm90IGEgZ29vZCBvcHRpb24gKGZvcgorZXhhbXBsZSwgeW91IG1heSBub3Qg
YmUgaGFwcHkgd2l0aCB0aGUgd2F5IGBUcnVseShwcmVkaWNhdGUpYAorZGVzY3JpYmVzIGl0c2Vs
Ziwgb3IgeW91IG1heSB3YW50IHlvdXIgbWF0Y2hlciB0byBiZSBwb2x5bW9ycGhpYyBhcworYEVx
KHZhbHVlKWAgaXMpLCB5b3UgY2FuIGRlZmluZSBhIG1hdGNoZXIgdG8gZG8gd2hhdGV2ZXIgeW91
IHdhbnQgaW4KK3R3byBzdGVwczogZmlyc3QgaW1wbGVtZW50IHRoZSBtYXRjaGVyIGludGVyZmFj
ZSwgYW5kIHRoZW4gZGVmaW5lIGEKK2ZhY3RvcnkgZnVuY3Rpb24gdG8gY3JlYXRlIGEgbWF0Y2hl
ciBpbnN0YW5jZS4gVGhlIHNlY29uZCBzdGVwIGlzIG5vdAorc3RyaWN0bHkgbmVlZGVkIGJ1dCBp
dCBtYWtlcyB0aGUgc3ludGF4IG9mIHVzaW5nIHRoZSBtYXRjaGVyIG5pY2VyLgorCitGb3IgZXhh
bXBsZSwgeW91IGNhbiBkZWZpbmUgYSBtYXRjaGVyIHRvIHRlc3Qgd2hldGhlciBhbiBgaW50YCBp
cworZGl2aXNpYmxlIGJ5IDcgYW5kIHRoZW4gdXNlIGl0IGxpa2UgdGhpczoKK2BgYAordXNpbmcg
Ojp0ZXN0aW5nOjpNYWtlTWF0Y2hlcjsKK3VzaW5nIDo6dGVzdGluZzo6TWF0Y2hlcjsKK3VzaW5n
IDo6dGVzdGluZzo6TWF0Y2hlckludGVyZmFjZTsKK3VzaW5nIDo6dGVzdGluZzo6TWF0Y2hSZXN1
bHRMaXN0ZW5lcjsKKworY2xhc3MgRGl2aXNpYmxlQnk3TWF0Y2hlciA6IHB1YmxpYyBNYXRjaGVy
SW50ZXJmYWNlPGludD4geworIHB1YmxpYzoKKyAgdmlydHVhbCBib29sIE1hdGNoQW5kRXhwbGFp
bihpbnQgbiwgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNvbnN0IHsKKyAgICByZXR1
cm4gKG4gJSA3KSA9PSAwOworICB9CisKKyAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6
Om9zdHJlYW0qIG9zKSBjb25zdCB7CisgICAgKm9zIDw8ICJpcyBkaXZpc2libGUgYnkgNyI7Cisg
IH0KKworICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBv
cykgY29uc3QgeworICAgICpvcyA8PCAiaXMgbm90IGRpdmlzaWJsZSBieSA3IjsKKyAgfQorfTsK
KworaW5saW5lIE1hdGNoZXI8aW50PiBEaXZpc2libGVCeTcoKSB7CisgIHJldHVybiBNYWtlTWF0
Y2hlcihuZXcgRGl2aXNpYmxlQnk3TWF0Y2hlcik7Cit9CisuLi4KKworICBFWFBFQ1RfQ0FMTChm
b28sIEJhcihEaXZpc2libGVCeTcoKSkpOworYGBgCisKK1lvdSBtYXkgaW1wcm92ZSB0aGUgbWF0
Y2hlciBtZXNzYWdlIGJ5IHN0cmVhbWluZyBhZGRpdGlvbmFsCitpbmZvcm1hdGlvbiB0byB0aGUg
YGxpc3RlbmVyYCBhcmd1bWVudCBpbiBgTWF0Y2hBbmRFeHBsYWluKClgOgorCitgYGAKK2NsYXNz
IERpdmlzaWJsZUJ5N01hdGNoZXIgOiBwdWJsaWMgTWF0Y2hlckludGVyZmFjZTxpbnQ+IHsKKyBw
dWJsaWM6CisgIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxhaW4oaW50IG4sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNvbnN0
IHsKKyAgICBjb25zdCBpbnQgcmVtYWluZGVyID0gbiAlIDc7CisgICAgaWYgKHJlbWFpbmRlciAh
PSAwKSB7CisgICAgICAqbGlzdGVuZXIgPDwgInRoZSByZW1haW5kZXIgaXMgIiA8PCByZW1haW5k
ZXI7CisgICAgfQorICAgIHJldHVybiByZW1haW5kZXIgPT0gMDsKKyAgfQorICAuLi4KK307Citg
YGAKKworVGhlbiwgYEVYUEVDVF9USEFUKHgsIERpdmlzaWJsZUJ5NygpKTtgIG1heSBnZW5lcmFs
IGEgbWVzc2FnZSBsaWtlIHRoaXM6CitgYGAKK1ZhbHVlIG9mOiB4CitFeHBlY3RlZDogaXMgZGl2
aXNpYmxlIGJ5IDcKKyAgQWN0dWFsOiAyMyAodGhlIHJlbWFpbmRlciBpcyAyKQorYGBgCisKKyMj
IFdyaXRpbmcgTmV3IFBvbHltb3JwaGljIE1hdGNoZXJzICMjCisKK1lvdSd2ZSBsZWFybmVkIGhv
dyB0byB3cml0ZSB5b3VyIG93biBtYXRjaGVycyBpbiB0aGUgcHJldmlvdXMKK3JlY2lwZS4gSnVz
dCBvbmUgcHJvYmxlbTogYSBtYXRjaGVyIGNyZWF0ZWQgdXNpbmcgYE1ha2VNYXRjaGVyKClgIG9u
bHkKK3dvcmtzIGZvciBvbmUgcGFydGljdWxhciB0eXBlIG9mIGFyZ3VtZW50cy4gSWYgeW91IHdh
bnQgYQorX3BvbHltb3JwaGljXyBtYXRjaGVyIHRoYXQgd29ya3Mgd2l0aCBhcmd1bWVudHMgb2Yg
c2V2ZXJhbCB0eXBlcyAoZm9yCitpbnN0YW5jZSwgYEVxKHgpYCBjYW4gYmUgdXNlZCB0byBtYXRj
aCBhIGB2YWx1ZWAgYXMgbG9uZyBhcyBgdmFsdWVgID09CitgeGAgY29tcGlsZXMgLS0gYHZhbHVl
YCBhbmQgYHhgIGRvbid0IGhhdmUgdG8gc2hhcmUgdGhlIHNhbWUgdHlwZSksCit5b3UgY2FuIGxl
YXJuIHRoZSB0cmljayBmcm9tIGAiZ21vY2svZ21vY2stbWF0Y2hlcnMuaCJgIGJ1dCBpdCdzIGEg
Yml0CitpbnZvbHZlZC4KKworRm9ydHVuYXRlbHksIG1vc3Qgb2YgdGhlIHRpbWUgeW91IGNhbiBk
ZWZpbmUgYSBwb2x5bW9ycGhpYyBtYXRjaGVyCitlYXNpbHkgd2l0aCB0aGUgaGVscCBvZiBgTWFr
ZVBvbHltb3JwaGljTWF0Y2hlcigpYC4gSGVyZSdzIGhvdyB5b3UgY2FuCitkZWZpbmUgYE5vdE51
bGwoKWAgYXMgYW4gZXhhbXBsZToKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6Ok1ha2VQb2x5bW9y
cGhpY01hdGNoZXI7Cit1c2luZyA6OnRlc3Rpbmc6Ok1hdGNoUmVzdWx0TGlzdGVuZXI7Cit1c2lu
ZyA6OnRlc3Rpbmc6Ok5vdE51bGw7Cit1c2luZyA6OnRlc3Rpbmc6OlBvbHltb3JwaGljTWF0Y2hl
cjsKKworY2xhc3MgTm90TnVsbE1hdGNoZXIgeworIHB1YmxpYzoKKyAgLy8gVG8gaW1wbGVtZW50
IGEgcG9seW1vcnBoaWMgbWF0Y2hlciwgZmlyc3QgZGVmaW5lIGEgQ09QWUFCTEUgY2xhc3MKKyAg
Ly8gdGhhdCBoYXMgdGhyZWUgbWVtYmVycyBNYXRjaEFuZEV4cGxhaW4oKSwgRGVzY3JpYmVUbygp
LCBhbmQKKyAgLy8gRGVzY3JpYmVOZWdhdGlvblRvKCksIGxpa2UgdGhlIGZvbGxvd2luZy4KKwor
ICAvLyBJbiB0aGlzIGV4YW1wbGUsIHdlIHdhbnQgdG8gdXNlIE5vdE51bGwoKSB3aXRoIGFueSBw
b2ludGVyLCBzbworICAvLyBNYXRjaEFuZEV4cGxhaW4oKSBhY2NlcHRzIGEgcG9pbnRlciBvZiBh
bnkgdHlwZSBhcyBpdHMgZmlyc3QgYXJndW1lbnQuCisgIC8vIEluIGdlbmVyYWwsIHlvdSBjYW4g
ZGVmaW5lIE1hdGNoQW5kRXhwbGFpbigpIGFzIGFuIG9yZGluYXJ5IG1ldGhvZCBvcgorICAvLyBh
IG1ldGhvZCB0ZW1wbGF0ZSwgb3IgZXZlbiBvdmVybG9hZCBpdC4KKyAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CisgIGJvb2wgTWF0Y2hBbmRFeHBsYWluKFQqIHAsCisgICAgICAgICAgICAgICAgICAg
ICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIC8qIGxpc3RlbmVyICovKSBjb25zdCB7CisgICAgcmV0
dXJuIHAgIT0gTlVMTDsKKyAgfQorCisgIC8vIERlc2NyaWJlcyB0aGUgcHJvcGVydHkgb2YgYSB2
YWx1ZSBtYXRjaGluZyB0aGlzIG1hdGNoZXIuCisgIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0
cmVhbSogb3MpIGNvbnN0IHsgKm9zIDw8ICJpcyBub3QgTlVMTCI7IH0KKworICAvLyBEZXNjcmli
ZXMgdGhlIHByb3BlcnR5IG9mIGEgdmFsdWUgTk9UIG1hdGNoaW5nIHRoaXMgbWF0Y2hlci4KKyAg
dm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7ICpvcyA8
PCAiaXMgTlVMTCI7IH0KK307CisKKy8vIFRvIGNvbnN0cnVjdCBhIHBvbHltb3JwaGljIG1hdGNo
ZXIsIHBhc3MgYW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzCisvLyB0byBNYWtlUG9seW1vcnBoaWNN
YXRjaGVyKCkuICBOb3RlIHRoZSByZXR1cm4gdHlwZS4KK2lubGluZSBQb2x5bW9ycGhpY01hdGNo
ZXI8Tm90TnVsbE1hdGNoZXI+IE5vdE51bGwoKSB7CisgIHJldHVybiBNYWtlUG9seW1vcnBoaWNN
YXRjaGVyKE5vdE51bGxNYXRjaGVyKCkpOworfQorLi4uCisKKyAgRVhQRUNUX0NBTEwoZm9vLCBC
YXIoTm90TnVsbCgpKSk7ICAvLyBUaGUgYXJndW1lbnQgbXVzdCBiZSBhIG5vbi1OVUxMIHBvaW50
ZXIuCitgYGAKKworKipOb3RlOioqIFlvdXIgcG9seW1vcnBoaWMgbWF0Y2hlciBjbGFzcyBkb2Vz
ICoqbm90KiogbmVlZCB0byBpbmhlcml0IGZyb20KK2BNYXRjaGVySW50ZXJmYWNlYCBvciBhbnkg
b3RoZXIgY2xhc3MsIGFuZCBpdHMgbWV0aG9kcyBkbyAqKm5vdCoqIG5lZWQKK3RvIGJlIHZpcnR1
YWwuCisKK0xpa2UgaW4gYSBtb25vbW9ycGhpYyBtYXRjaGVyLCB5b3UgbWF5IGV4cGxhaW4gdGhl
IG1hdGNoIHJlc3VsdCBieQorc3RyZWFtaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gdGhl
IGBsaXN0ZW5lcmAgYXJndW1lbnQgaW4KK2BNYXRjaEFuZEV4cGxhaW4oKWAuCisKKyMjIFdyaXRp
bmcgTmV3IENhcmRpbmFsaXRpZXMgIyMKKworQSBjYXJkaW5hbGl0eSBpcyB1c2VkIGluIGBUaW1l
cygpYCB0byB0ZWxsIEdvb2dsZSBNb2NrIGhvdyBtYW55IHRpbWVzCit5b3UgZXhwZWN0IGEgY2Fs
bCB0byBvY2N1ci4gSXQgZG9lc24ndCBoYXZlIHRvIGJlIGV4YWN0LiBGb3IgZXhhbXBsZSwKK3lv
dSBjYW4gc2F5IGBBdExlYXN0KDUpYCBvciBgQmV0d2VlbigyLCA0KWAuCisKK0lmIHRoZSBidWls
dC1pbiBzZXQgb2YgY2FyZGluYWxpdGllcyBkb2Vzbid0IHN1aXQgeW91LCB5b3UgYXJlIGZyZWUg
dG8KK2RlZmluZSB5b3VyIG93biBieSBpbXBsZW1lbnRpbmcgdGhlIGZvbGxvd2luZyBpbnRlcmZh
Y2UgKGluIG5hbWVzcGFjZQorYHRlc3RpbmdgKToKKworYGBgCitjbGFzcyBDYXJkaW5hbGl0eUlu
dGVyZmFjZSB7CisgcHVibGljOgorICB2aXJ0dWFsIH5DYXJkaW5hbGl0eUludGVyZmFjZSgpOwor
CisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgY2FsbF9jb3VudCBjYWxscyB3aWxsIHNhdGlzZnkgdGhp
cyBjYXJkaW5hbGl0eS4KKyAgdmlydHVhbCBib29sIElzU2F0aXNmaWVkQnlDYWxsQ291bnQoaW50
IGNhbGxfY291bnQpIGNvbnN0ID0gMDsKKworICAvLyBSZXR1cm5zIHRydWUgaWZmIGNhbGxfY291
bnQgY2FsbHMgd2lsbCBzYXR1cmF0ZSB0aGlzIGNhcmRpbmFsaXR5LgorICB2aXJ0dWFsIGJvb2wg
SXNTYXR1cmF0ZWRCeUNhbGxDb3VudChpbnQgY2FsbF9jb3VudCkgY29uc3QgPSAwOworCisgIC8v
IERlc2NyaWJlcyBzZWxmIHRvIGFuIG9zdHJlYW0uCisgIHZpcnR1YWwgdm9pZCBEZXNjcmliZVRv
KDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgPSAwOworfTsKK2BgYAorCitGb3IgZXhhbXBsZSwg
dG8gc3BlY2lmeSB0aGF0IGEgY2FsbCBtdXN0IG9jY3VyIGV2ZW4gbnVtYmVyIG9mIHRpbWVzLAor
eW91IGNhbiB3cml0ZQorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6Q2FyZGluYWxpdHk7Cit1c2lu
ZyA6OnRlc3Rpbmc6OkNhcmRpbmFsaXR5SW50ZXJmYWNlOwordXNpbmcgOjp0ZXN0aW5nOjpNYWtl
Q2FyZGluYWxpdHk7CisKK2NsYXNzIEV2ZW5OdW1iZXJDYXJkaW5hbGl0eSA6IHB1YmxpYyBDYXJk
aW5hbGl0eUludGVyZmFjZSB7CisgcHVibGljOgorICB2aXJ0dWFsIGJvb2wgSXNTYXRpc2ZpZWRC
eUNhbGxDb3VudChpbnQgY2FsbF9jb3VudCkgY29uc3QgeworICAgIHJldHVybiAoY2FsbF9jb3Vu
dCAlIDIpID09IDA7CisgIH0KKworICB2aXJ0dWFsIGJvb2wgSXNTYXR1cmF0ZWRCeUNhbGxDb3Vu
dChpbnQgY2FsbF9jb3VudCkgY29uc3QgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIHZp
cnR1YWwgdm9pZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgeworICAgICpv
cyA8PCAiY2FsbGVkIGV2ZW4gbnVtYmVyIG9mIHRpbWVzIjsKKyAgfQorfTsKKworQ2FyZGluYWxp
dHkgRXZlbk51bWJlcigpIHsKKyAgcmV0dXJuIE1ha2VDYXJkaW5hbGl0eShuZXcgRXZlbk51bWJl
ckNhcmRpbmFsaXR5KTsKK30KKy4uLgorCisgIEVYUEVDVF9DQUxMKGZvbywgQmFyKDMpKQorICAg
ICAgLlRpbWVzKEV2ZW5OdW1iZXIoKSk7CitgYGAKKworIyMgV3JpdGluZyBOZXcgQWN0aW9ucyBR
dWlja2x5ICMjCisKK0lmIHRoZSBidWlsdC1pbiBhY3Rpb25zIGRvbid0IHdvcmsgZm9yIHlvdSwg
YW5kIHlvdSBmaW5kIGl0CitpbmNvbnZlbmllbnQgdG8gdXNlIGBJbnZva2UoKWAsIHlvdSBjYW4g
dXNlIGEgbWFjcm8gZnJvbSB0aGUgYEFDVElPTipgCitmYW1pbHkgdG8gcXVpY2tseSBkZWZpbmUg
YSBuZXcgYWN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgaW4geW91ciBjb2RlIGFzCitpZiBpdCdzIGEg
YnVpbHQtaW4gYWN0aW9uLgorCitCeSB3cml0aW5nCitgYGAKK0FDVElPTihuYW1lKSB7IHN0YXRl
bWVudHM7IH0KK2BgYAoraW4gYSBuYW1lc3BhY2Ugc2NvcGUgKGkuZS4gbm90IGluc2lkZSBhIGNs
YXNzIG9yIGZ1bmN0aW9uKSwgeW91IHdpbGwKK2RlZmluZSBhbiBhY3Rpb24gd2l0aCB0aGUgZ2l2
ZW4gbmFtZSB0aGF0IGV4ZWN1dGVzIHRoZSBzdGF0ZW1lbnRzLgorVGhlIHZhbHVlIHJldHVybmVk
IGJ5IGBzdGF0ZW1lbnRzYCB3aWxsIGJlIHVzZWQgYXMgdGhlIHJldHVybiB2YWx1ZSBvZgordGhl
IGFjdGlvbi4gIEluc2lkZSB0aGUgc3RhdGVtZW50cywgeW91IGNhbiByZWZlciB0byB0aGUgSy10
aAorKDAtYmFzZWQpIGFyZ3VtZW50IG9mIHRoZSBtb2NrIGZ1bmN0aW9uIGFzIGBhcmdLYC4gIEZv
ciBleGFtcGxlOgorYGBgCitBQ1RJT04oSW5jcmVtZW50QXJnMSkgeyByZXR1cm4gKysoKmFyZzEp
OyB9CitgYGAKK2FsbG93cyB5b3UgdG8gd3JpdGUKK2BgYAorLi4uIFdpbGxPbmNlKEluY3JlbWVu
dEFyZzEoKSk7CitgYGAKKworTm90ZSB0aGF0IHlvdSBkb24ndCBuZWVkIHRvIHNwZWNpZnkgdGhl
IHR5cGVzIG9mIHRoZSBtb2NrIGZ1bmN0aW9uCithcmd1bWVudHMuICBSZXN0IGFzc3VyZWQgdGhh
dCB5b3VyIGNvZGUgaXMgdHlwZS1zYWZlIHRob3VnaDoKK3lvdSdsbCBnZXQgYSBjb21waWxlciBl
cnJvciBpZiBgKmFyZzFgIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgYCsrYAorb3BlcmF0b3IsIG9yIGlm
IHRoZSB0eXBlIG9mIGArKygqYXJnMSlgIGlzbid0IGNvbXBhdGlibGUgd2l0aCB0aGUgbW9jawor
ZnVuY3Rpb24ncyByZXR1cm4gdHlwZS4KKworQW5vdGhlciBleGFtcGxlOgorYGBgCitBQ1RJT04o
Rm9vKSB7CisgICgqYXJnMikoNSk7CisgIEJsYWgoKTsKKyAgKmFyZzEgPSAwOworICByZXR1cm4g
YXJnMDsKK30KK2BgYAorZGVmaW5lcyBhbiBhY3Rpb24gYEZvbygpYCB0aGF0IGludm9rZXMgYXJn
dW1lbnQgIzIgKGEgZnVuY3Rpb24gcG9pbnRlcikKK3dpdGggNSwgY2FsbHMgZnVuY3Rpb24gYEJs
YWgoKWAsIHNldHMgdGhlIHZhbHVlIHBvaW50ZWQgdG8gYnkgYXJndW1lbnQKKyMxIHRvIDAsIGFu
ZCByZXR1cm5zIGFyZ3VtZW50ICMwLgorCitGb3IgbW9yZSBjb252ZW5pZW5jZSBhbmQgZmxleGli
aWxpdHksIHlvdSBjYW4gYWxzbyB1c2UgdGhlIGZvbGxvd2luZworcHJlLWRlZmluZWQgc3ltYm9s
cyBpbiB0aGUgYm9keSBvZiBgQUNUSU9OYDoKKworfCBgYXJnS190eXBlYCB8IFRoZSB0eXBlIG9m
IHRoZSBLLXRoICgwLWJhc2VkKSBhcmd1bWVudCBvZiB0aGUgbW9jayBmdW5jdGlvbiB8Cit8Oi0t
LS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLXwKK3wgYGFyZ3NgICAgICAgfCBBbGwgYXJndW1lbnRzIG9mIHRoZSBt
b2NrIGZ1bmN0aW9uIGFzIGEgdHVwbGUgICAgICAgICAgICAgICAgfAorfCBgYXJnc190eXBlYCB8
IFRoZSB0eXBlIG9mIGFsbCBhcmd1bWVudHMgb2YgdGhlIG1vY2sgZnVuY3Rpb24gYXMgYSB0dXBs
ZSAgICB8Cit8IGByZXR1cm5fdHlwZWAgfCBUaGUgcmV0dXJuIHR5cGUgb2YgdGhlIG1vY2sgZnVu
Y3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgZnVuY3Rpb25fdHlwZWAgfCBUaGUg
dHlwZSBvZiB0aGUgbW9jayBmdW5jdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fAorCitGb3IgZXhhbXBsZSwgd2hlbiB1c2luZyBhbiBgQUNUSU9OYCBhcyBhIHN0dWIgYWN0aW9u
IGZvciBtb2NrIGZ1bmN0aW9uOgorYGBgCitpbnQgRG9Tb21ldGhpbmcoYm9vbCBmbGFnLCBpbnQq
IHB0cik7CitgYGAKK3dlIGhhdmU6Cit8ICoqUHJlLWRlZmluZWQgU3ltYm9sKiogfCAqKklzIEJv
dW5kIFRvKiogfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLXwK
K3wgYGFyZzBgICAgICAgICAgICAgICAgICB8IHRoZSB2YWx1ZSBvZiBgZmxhZ2AgfAorfCBgYXJn
MF90eXBlYCAgICAgICAgICAgIHwgdGhlIHR5cGUgYGJvb2xgIHwKK3wgYGFyZzFgICAgICAgICAg
ICAgICAgICB8IHRoZSB2YWx1ZSBvZiBgcHRyYCB8Cit8IGBhcmcxX3R5cGVgICAgICAgICAgICAg
fCB0aGUgdHlwZSBgaW50KmAgfAorfCBgYXJnc2AgICAgICAgICAgICAgICAgIHwgdGhlIHR1cGxl
IGAoZmxhZywgcHRyKWAgfAorfCBgYXJnc190eXBlYCAgICAgICAgICAgIHwgdGhlIHR5cGUgYHN0
ZDo6dHIxOjp0dXBsZTxib29sLCBpbnQqPmAgfAorfCBgcmV0dXJuX3R5cGVgICAgICAgICAgIHwg
dGhlIHR5cGUgYGludGAgIHwKK3wgYGZ1bmN0aW9uX3R5cGVgICAgICAgICB8IHRoZSB0eXBlIGBp
bnQoYm9vbCwgaW50KilgIHwKKworIyMgV3JpdGluZyBOZXcgUGFyYW1ldGVyaXplZCBBY3Rpb25z
IFF1aWNrbHkgIyMKKworU29tZXRpbWVzIHlvdSdsbCB3YW50IHRvIHBhcmFtZXRlcml6ZSBhbiBh
Y3Rpb24geW91IGRlZmluZS4gIEZvciB0aGF0Cit3ZSBoYXZlIGFub3RoZXIgbWFjcm8KK2BgYAor
QUNUSU9OX1AobmFtZSwgcGFyYW0pIHsgc3RhdGVtZW50czsgfQorYGBgCisKK0ZvciBleGFtcGxl
LAorYGBgCitBQ1RJT05fUChBZGQsIG4pIHsgcmV0dXJuIGFyZzAgKyBuOyB9CitgYGAKK3dpbGwg
YWxsb3cgeW91IHRvIHdyaXRlCitgYGAKKy8vIFJldHVybnMgYXJndW1lbnQgIzAgKyA1LgorLi4u
IFdpbGxPbmNlKEFkZCg1KSk7CitgYGAKKworRm9yIGNvbnZlbmllbmNlLCB3ZSB1c2UgdGhlIHRl
cm0gX2FyZ3VtZW50c18gZm9yIHRoZSB2YWx1ZXMgdXNlZCB0bworaW52b2tlIHRoZSBtb2NrIGZ1
bmN0aW9uLCBhbmQgdGhlIHRlcm0gX3BhcmFtZXRlcnNfIGZvciB0aGUgdmFsdWVzCit1c2VkIHRv
IGluc3RhbnRpYXRlIGFuIGFjdGlvbi4KKworTm90ZSB0aGF0IHlvdSBkb24ndCBuZWVkIHRvIHBy
b3ZpZGUgdGhlIHR5cGUgb2YgdGhlIHBhcmFtZXRlciBlaXRoZXIuCitTdXBwb3NlIHRoZSBwYXJh
bWV0ZXIgaXMgbmFtZWQgYHBhcmFtYCwgeW91IGNhbiBhbHNvIHVzZSB0aGUKK0dvb2dsZS1Nb2Nr
LWRlZmluZWQgc3ltYm9sIGBwYXJhbV90eXBlYCB0byByZWZlciB0byB0aGUgdHlwZSBvZiB0aGUK
K3BhcmFtZXRlciBhcyBpbmZlcnJlZCBieSB0aGUgY29tcGlsZXIuICBGb3IgZXhhbXBsZSwgaW4g
dGhlIGJvZHkgb2YKK2BBQ1RJT05fUChBZGQsIG4pYCBhYm92ZSwgeW91IGNhbiB3cml0ZSBgbl90
eXBlYCBmb3IgdGhlIHR5cGUgb2YgYG5gLgorCitHb29nbGUgTW9jayBhbHNvIHByb3ZpZGVzIGBB
Q1RJT05fUDJgLCBgQUNUSU9OX1AzYCwgYW5kIGV0YyB0byBzdXBwb3J0CittdWx0aS1wYXJhbWV0
ZXIgYWN0aW9ucy4gIEZvciBleGFtcGxlLAorYGBgCitBQ1RJT05fUDIoUmV0dXJuRGlzdGFuY2VU
bywgeCwgeSkgeworICBkb3VibGUgZHggPSBhcmcwIC0geDsKKyAgZG91YmxlIGR5ID0gYXJnMSAt
IHk7CisgIHJldHVybiBzcXJ0KGR4KmR4ICsgZHkqZHkpOworfQorYGBgCitsZXRzIHlvdSB3cml0
ZQorYGBgCisuLi4gV2lsbE9uY2UoUmV0dXJuRGlzdGFuY2VUbyg1LjAsIDI2LjUpKTsKK2BgYAor
CitZb3UgY2FuIHZpZXcgYEFDVElPTmAgYXMgYSBkZWdlbmVyYXRlZCBwYXJhbWV0ZXJpemVkIGFj
dGlvbiB3aGVyZSB0aGUKK251bWJlciBvZiBwYXJhbWV0ZXJzIGlzIDAuCisKK1lvdSBjYW4gYWxz
byBlYXNpbHkgZGVmaW5lIGFjdGlvbnMgb3ZlcmxvYWRlZCBvbiB0aGUgbnVtYmVyIG9mIHBhcmFt
ZXRlcnM6CitgYGAKK0FDVElPTl9QKFBsdXMsIGEpIHsgLi4uIH0KK0FDVElPTl9QMihQbHVzLCBh
LCBiKSB7IC4uLiB9CitgYGAKKworIyMgUmVzdHJpY3RpbmcgdGhlIFR5cGUgb2YgYW4gQXJndW1l
bnQgb3IgUGFyYW1ldGVyIGluIGFuIEFDVElPTiAjIworCitGb3IgbWF4aW11bSBicmV2aXR5IGFu
ZCByZXVzYWJpbGl0eSwgdGhlIGBBQ1RJT04qYCBtYWNyb3MgZG9uJ3QgYXNrCit5b3UgdG8gcHJv
dmlkZSB0aGUgdHlwZXMgb2YgdGhlIG1vY2sgZnVuY3Rpb24gYXJndW1lbnRzIGFuZCB0aGUgYWN0
aW9uCitwYXJhbWV0ZXJzLiAgSW5zdGVhZCwgd2UgbGV0IHRoZSBjb21waWxlciBpbmZlciB0aGUg
dHlwZXMgZm9yIHVzLgorCitTb21ldGltZXMsIGhvd2V2ZXIsIHdlIG1heSB3YW50IHRvIGJlIG1v
cmUgZXhwbGljaXQgYWJvdXQgdGhlIHR5cGVzLgorVGhlcmUgYXJlIHNldmVyYWwgdHJpY2tzIHRv
IGRvIHRoYXQuICBGb3IgZXhhbXBsZToKK2BgYAorQUNUSU9OKEZvbykgeworICAvLyBNYWtlcyBz
dXJlIGFyZzAgY2FuIGJlIGNvbnZlcnRlZCB0byBpbnQuCisgIGludCBuID0gYXJnMDsKKyAgLi4u
IHVzZSBuIGluc3RlYWQgb2YgYXJnMCBoZXJlIC4uLgorfQorCitBQ1RJT05fUChCYXIsIHBhcmFt
KSB7CisgIC8vIE1ha2VzIHN1cmUgdGhlIHR5cGUgb2YgYXJnMSBpcyBjb25zdCBjaGFyKi4KKyAg
Ojp0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE8Y29uc3QgY2hhciosIGFyZzFfdHlwZT4oKTsK
KworICAvLyBNYWtlcyBzdXJlIHBhcmFtIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYm9vbC4KKyAgYm9v
bCBmbGFnID0gcGFyYW07Cit9CitgYGAKK3doZXJlIGBTdGF0aWNBc3NlcnRUeXBlRXFgIGlzIGEg
Y29tcGlsZS10aW1lIGFzc2VydGlvbiBpbiBHb29nbGUgVGVzdAordGhhdCB2ZXJpZmllcyB0d28g
dHlwZXMgYXJlIHRoZSBzYW1lLgorCisjIyBXcml0aW5nIE5ldyBBY3Rpb24gVGVtcGxhdGVzIFF1
aWNrbHkgIyMKKworU29tZXRpbWVzIHlvdSB3YW50IHRvIGdpdmUgYW4gYWN0aW9uIGV4cGxpY2l0
IHRlbXBsYXRlIHBhcmFtZXRlcnMgdGhhdAorY2Fubm90IGJlIGluZmVycmVkIGZyb20gaXRzIHZh
bHVlIHBhcmFtZXRlcnMuICBgQUNUSU9OX1RFTVBMQVRFKClgCitzdXBwb3J0cyB0aGF0IGFuZCBj
YW4gYmUgdmlld2VkIGFzIGFuIGV4dGVuc2lvbiB0byBgQUNUSU9OKClgIGFuZAorYEFDVElPTl9Q
KigpYC4KKworVGhlIHN5bnRheDoKK2BgYAorQUNUSU9OX1RFTVBMQVRFKEFjdGlvbk5hbWUsCisg
ICAgICAgICAgICAgICAgSEFTX21fVEVNUExBVEVfUEFSQU1TKGtpbmQxLCBuYW1lMSwgLi4uLCBr
aW5kX20sIG5hbWVfbSksCisgICAgICAgICAgICAgICAgQU5EX25fVkFMVUVfUEFSQU1TKHAxLCAu
Li4sIHBfbikpIHsgc3RhdGVtZW50czsgfQorYGBgCisKK2RlZmluZXMgYW4gYWN0aW9uIHRlbXBs
YXRlIHRoYXQgdGFrZXMgX21fIGV4cGxpY2l0IHRlbXBsYXRlIHBhcmFtZXRlcnMKK2FuZCBfbl8g
dmFsdWUgcGFyYW1ldGVycywgd2hlcmUgX21fIGlzIGJldHdlZW4gMSBhbmQgMTAsIGFuZCBfbl8g
aXMKK2JldHdlZW4gMCBhbmQgMTAuICBgbmFtZV9pYCBpcyB0aGUgbmFtZSBvZiB0aGUgaS10aCB0
ZW1wbGF0ZQorcGFyYW1ldGVyLCBhbmQgYGtpbmRfaWAgc3BlY2lmaWVzIHdoZXRoZXIgaXQncyBh
IGB0eXBlbmFtZWAsIGFuCitpbnRlZ3JhbCBjb25zdGFudCwgb3IgYSB0ZW1wbGF0ZS4gIGBwX2lg
IGlzIHRoZSBuYW1lIG9mIHRoZSBpLXRoIHZhbHVlCitwYXJhbWV0ZXIuCisKK0V4YW1wbGU6Citg
YGAKKy8vIER1cGxpY2F0ZUFyZzxrLCBUPihvdXRwdXQpIGNvbnZlcnRzIHRoZSBrLXRoIGFyZ3Vt
ZW50IG9mIHRoZSBtb2NrCisvLyBmdW5jdGlvbiB0byB0eXBlIFQgYW5kIGNvcGllcyBpdCB0byAq
b3V0cHV0LgorQUNUSU9OX1RFTVBMQVRFKER1cGxpY2F0ZUFyZywKKyAgICAgICAgICAgICAgICAv
LyBOb3RlIHRoZSBjb21tYSBiZXR3ZWVuIGludCBhbmQgazoKKyAgICAgICAgICAgICAgICBIQVNf
Ml9URU1QTEFURV9QQVJBTVMoaW50LCBrLCB0eXBlbmFtZSwgVCksCisgICAgICAgICAgICAgICAg
QU5EXzFfVkFMVUVfUEFSQU1TKG91dHB1dCkpIHsKKyAgKm91dHB1dCA9IFQoc3RkOjp0cjE6Omdl
dDxrPihhcmdzKSk7Cit9CitgYGAKKworVG8gY3JlYXRlIGFuIGluc3RhbmNlIG9mIGFuIGFjdGlv
biB0ZW1wbGF0ZSwgd3JpdGU6CitgYGAKKyAgQWN0aW9uTmFtZTx0MSwgLi4uLCB0X20+KHYxLCAu
Li4sIHZfbikKK2BgYAord2hlcmUgdGhlIGB0YHMgYXJlIHRoZSB0ZW1wbGF0ZSBhcmd1bWVudHMg
YW5kIHRoZQorYHZgcyBhcmUgdGhlIHZhbHVlIGFyZ3VtZW50cy4gIFRoZSB2YWx1ZSBhcmd1bWVu
dAordHlwZXMgYXJlIGluZmVycmVkIGJ5IHRoZSBjb21waWxlci4gIEZvciBleGFtcGxlOgorYGBg
Cit1c2luZyA6OnRlc3Rpbmc6Ol87CisuLi4KKyAgaW50IG47CisgIEVYUEVDVF9DQUxMKG1vY2ss
IEZvbyhfLCBfKSkKKyAgICAgIC5XaWxsT25jZShEdXBsaWNhdGVBcmc8MSwgdW5zaWduZWQgY2hh
cj4oJm4pKTsKK2BgYAorCitJZiB5b3Ugd2FudCB0byBleHBsaWNpdGx5IHNwZWNpZnkgdGhlIHZh
bHVlIGFyZ3VtZW50IHR5cGVzLCB5b3UgY2FuCitwcm92aWRlIGFkZGl0aW9uYWwgdGVtcGxhdGUg
YXJndW1lbnRzOgorYGBgCisgIEFjdGlvbk5hbWU8dDEsIC4uLiwgdF9tLCB1MSwgLi4uLCB1X2s+
KHYxLCAuLi4sIHZfbikKK2BgYAord2hlcmUgYHVfaWAgaXMgdGhlIGRlc2lyZWQgdHlwZSBvZiBg
dl9pYC4KKworYEFDVElPTl9URU1QTEFURWAgYW5kIGBBQ1RJT05gL2BBQ1RJT05fUCpgIGNhbiBi
ZSBvdmVybG9hZGVkIG9uIHRoZQorbnVtYmVyIG9mIHZhbHVlIHBhcmFtZXRlcnMsIGJ1dCBub3Qg
b24gdGhlIG51bWJlciBvZiB0ZW1wbGF0ZQorcGFyYW1ldGVycy4gIFdpdGhvdXQgdGhlIHJlc3Ry
aWN0aW9uLCB0aGUgbWVhbmluZyBvZiB0aGUgZm9sbG93aW5nIGlzCit1bmNsZWFyOgorCitgYGAK
KyAgT3ZlcmxvYWRlZEFjdGlvbjxpbnQsIGJvb2w+KHgpOworYGBgCisKK0FyZSB3ZSB1c2luZyBh
IHNpbmdsZS10ZW1wbGF0ZS1wYXJhbWV0ZXIgYWN0aW9uIHdoZXJlIGBib29sYCByZWZlcnMgdG8K
K3RoZSB0eXBlIG9mIGB4YCwgb3IgYSB0d28tdGVtcGxhdGUtcGFyYW1ldGVyIGFjdGlvbiB3aGVy
ZSB0aGUgY29tcGlsZXIKK2lzIGFza2VkIHRvIGluZmVyIHRoZSB0eXBlIG9mIGB4YD8KKworIyMg
VXNpbmcgdGhlIEFDVElPTiBPYmplY3QncyBUeXBlICMjCisKK0lmIHlvdSBhcmUgd3JpdGluZyBh
IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBgQUNUSU9OYCBvYmplY3QsIHlvdSdsbAorbmVlZCB0
byBrbm93IGl0cyB0eXBlLiAgVGhlIHR5cGUgZGVwZW5kcyBvbiB0aGUgbWFjcm8gdXNlZCB0byBk
ZWZpbmUKK3RoZSBhY3Rpb24gYW5kIHRoZSBwYXJhbWV0ZXIgdHlwZXMuICBUaGUgcnVsZSBpcyBy
ZWxhdGl2ZWx5IHNpbXBsZToKK3wgKipHaXZlbiBEZWZpbml0aW9uKiogfCAqKkV4cHJlc3Npb24q
KiB8ICoqSGFzIFR5cGUqKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0t
LS0tfDotLS0tLS0tLS0tLS0tfAorfCBgQUNUSU9OKEZvbylgICAgICAgICB8IGBGb28oKWAgICAg
ICAgIHwgYEZvb0FjdGlvbmAgIHwKK3wgYEFDVElPTl9URU1QTEFURShGb28sIEhBU19tX1RFTVBM
QVRFX1BBUkFNUyguLi4pLCBBTkRfMF9WQUxVRV9QQVJBTVMoKSlgIHwJYEZvbzx0MSwgLi4uLCB0
X20+KClgIHwgYEZvb0FjdGlvbjx0MSwgLi4uLCB0X20+YCB8Cit8IGBBQ1RJT05fUChCYXIsIHBh
cmFtKWAgfCBgQmFyKGludF92YWx1ZSlgIHwgYEJhckFjdGlvblA8aW50PmAgfAorfCBgQUNUSU9O
X1RFTVBMQVRFKEJhciwgSEFTX21fVEVNUExBVEVfUEFSQU1TKC4uLiksIEFORF8xX1ZBTFVFX1BB
UkFNUyhwMSkpYCB8IGBCYXI8dDEsIC4uLiwgdF9tPihpbnRfdmFsdWUpYCB8IGBGb29BY3Rpb25Q
PHQxLCAuLi4sIHRfbSwgaW50PmAgfAorfCBgQUNUSU9OX1AyKEJheiwgcDEsIHAyKWAgfCBgQmF6
KGJvb2xfdmFsdWUsIGludF92YWx1ZSlgIHwgYEJhekFjdGlvblAyPGJvb2wsIGludD5gIHwKK3wg
YEFDVElPTl9URU1QTEFURShCYXosIEhBU19tX1RFTVBMQVRFX1BBUkFNUyguLi4pLCBBTkRfMl9W
QUxVRV9QQVJBTVMocDEsIHAyKSlgIHwgYEJhejx0MSwgLi4uLCB0X20+KGJvb2xfdmFsdWUsIGlu
dF92YWx1ZSlgIHwgYEZvb0FjdGlvblAyPHQxLCAuLi4sIHRfbSwgYm9vbCwgaW50PmAgfAorfCAu
Li4gICAgICAgICAgICAgICAgICB8IC4uLiAgICAgICAgICAgIHwgLi4uICAgICAgICAgIHwKKwor
Tm90ZSB0aGF0IHdlIGhhdmUgdG8gcGljayBkaWZmZXJlbnQgc3VmZml4ZXMgKGBBY3Rpb25gLCBg
QWN0aW9uUGAsCitgQWN0aW9uUDJgLCBhbmQgZXRjKSBmb3IgYWN0aW9ucyB3aXRoIGRpZmZlcmVu
dCBudW1iZXJzIG9mIHZhbHVlCitwYXJhbWV0ZXJzLCBvciB0aGUgYWN0aW9uIGRlZmluaXRpb25z
IGNhbm5vdCBiZSBvdmVybG9hZGVkIG9uIHRoZQorbnVtYmVyIG9mIHRoZW0uCisKKyMjIFdyaXRp
bmcgTmV3IE1vbm9tb3JwaGljIEFjdGlvbnMgIyMKKworV2hpbGUgdGhlIGBBQ1RJT04qYCBtYWNy
b3MgYXJlIHZlcnkgY29udmVuaWVudCwgc29tZXRpbWVzIHRoZXkgYXJlCitpbmFwcHJvcHJpYXRl
LiAgRm9yIGV4YW1wbGUsIGRlc3BpdGUgdGhlIHRyaWNrcyBzaG93biBpbiB0aGUgcHJldmlvdXMK
K3JlY2lwZXMsIHRoZXkgZG9uJ3QgbGV0IHlvdSBkaXJlY3RseSBzcGVjaWZ5IHRoZSB0eXBlcyBv
ZiB0aGUgbW9jaworZnVuY3Rpb24gYXJndW1lbnRzIGFuZCB0aGUgYWN0aW9uIHBhcmFtZXRlcnMs
IHdoaWNoIGluIGdlbmVyYWwgbGVhZHMKK3RvIHVub3B0aW1pemVkIGNvbXBpbGVyIGVycm9yIG1l
c3NhZ2VzIHRoYXQgY2FuIGJhZmZsZSB1bmZhbWlsaWFyCit1c2Vycy4gIFRoZXkgYWxzbyBkb24n
dCBhbGxvdyBvdmVybG9hZGluZyBhY3Rpb25zIGJhc2VkIG9uIHBhcmFtZXRlcgordHlwZXMgd2l0
aG91dCBqdW1waW5nIHRocm91Z2ggc29tZSBob29wcy4KKworQW4gYWx0ZXJuYXRpdmUgdG8gdGhl
IGBBQ1RJT04qYCBtYWNyb3MgaXMgdG8gaW1wbGVtZW50CitgOjp0ZXN0aW5nOjpBY3Rpb25JbnRl
cmZhY2U8Rj5gLCB3aGVyZSBgRmAgaXMgdGhlIHR5cGUgb2YgdGhlIG1vY2sKK2Z1bmN0aW9uIGlu
IHdoaWNoIHRoZSBhY3Rpb24gd2lsbCBiZSB1c2VkLiBGb3IgZXhhbXBsZToKKworYGBgCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgRj5jbGFzcyBBY3Rpb25JbnRlcmZhY2UgeworIHB1YmxpYzoKKyAgdmly
dHVhbCB+QWN0aW9uSW50ZXJmYWNlKCk7CisKKyAgLy8gUGVyZm9ybXMgdGhlIGFjdGlvbi4gIFJl
c3VsdCBpcyB0aGUgcmV0dXJuIHR5cGUgb2YgZnVuY3Rpb24gdHlwZQorICAvLyBGLCBhbmQgQXJn
dW1lbnRUdXBsZSBpcyB0aGUgdHVwbGUgb2YgYXJndW1lbnRzIG9mIEYuCisgIC8vCisgIC8vIEZv
ciBleGFtcGxlLCBpZiBGIGlzIGludChib29sLCBjb25zdCBzdHJpbmcmKSwgdGhlbiBSZXN1bHQg
d291bGQKKyAgLy8gYmUgaW50LCBhbmQgQXJndW1lbnRUdXBsZSB3b3VsZCBiZSB0cjE6OnR1cGxl
PGJvb2wsIGNvbnN0IHN0cmluZyY+LgorICB2aXJ0dWFsIFJlc3VsdCBQZXJmb3JtKGNvbnN0IEFy
Z3VtZW50VHVwbGUmIGFyZ3MpID0gMDsKK307CisKK3VzaW5nIDo6dGVzdGluZzo6XzsKK3VzaW5n
IDo6dGVzdGluZzo6QWN0aW9uOwordXNpbmcgOjp0ZXN0aW5nOjpBY3Rpb25JbnRlcmZhY2U7Cit1
c2luZyA6OnRlc3Rpbmc6Ok1ha2VBY3Rpb247CisKK3R5cGVkZWYgaW50IEluY3JlbWVudE1ldGhv
ZChpbnQqKTsKKworY2xhc3MgSW5jcmVtZW50QXJndW1lbnRBY3Rpb24gOiBwdWJsaWMgQWN0aW9u
SW50ZXJmYWNlPEluY3JlbWVudE1ldGhvZD4geworIHB1YmxpYzoKKyAgdmlydHVhbCBpbnQgUGVy
Zm9ybShjb25zdCB0cjE6OnR1cGxlPGludCo+JiBhcmdzKSB7CisgICAgaW50KiBwID0gdHIxOjpn
ZXQ8MD4oYXJncyk7ICAvLyBHcmFicyB0aGUgZmlyc3QgYXJndW1lbnQuCisgICAgcmV0dXJuICpw
Kys7CisgIH0KK307CisKK0FjdGlvbjxJbmNyZW1lbnRNZXRob2Q+IEluY3JlbWVudEFyZ3VtZW50
KCkgeworICByZXR1cm4gTWFrZUFjdGlvbihuZXcgSW5jcmVtZW50QXJndW1lbnRBY3Rpb24pOwor
fQorLi4uCisKKyAgRVhQRUNUX0NBTEwoZm9vLCBCYXooXykpCisgICAgICAuV2lsbE9uY2UoSW5j
cmVtZW50QXJndW1lbnQoKSk7CisKKyAgaW50IG4gPSA1OworICBmb28uQmF6KCZuKTsgIC8vIFNo
b3VsZCByZXR1cm4gNSBhbmQgY2hhbmdlIG4gdG8gNi4KK2BgYAorCisjIyBXcml0aW5nIE5ldyBQ
b2x5bW9ycGhpYyBBY3Rpb25zICMjCisKK1RoZSBwcmV2aW91cyByZWNpcGUgc2hvd2VkIHlvdSBo
b3cgdG8gZGVmaW5lIHlvdXIgb3duIGFjdGlvbi4gVGhpcyBpcworYWxsIGdvb2QsIGV4Y2VwdCB0
aGF0IHlvdSBuZWVkIHRvIGtub3cgdGhlIHR5cGUgb2YgdGhlIGZ1bmN0aW9uIGluCit3aGljaCB0
aGUgYWN0aW9uIHdpbGwgYmUgdXNlZC4gU29tZXRpbWVzIHRoYXQgY2FuIGJlIGEgcHJvYmxlbS4g
Rm9yCitleGFtcGxlLCBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIGFjdGlvbiBpbiBmdW5jdGlvbnMg
d2l0aCBfZGlmZmVyZW50XwordHlwZXMgKGUuZy4gbGlrZSBgUmV0dXJuKClgIGFuZCBgU2V0QXJn
UG9pbnRlZSgpYCkuCisKK0lmIGFuIGFjdGlvbiBjYW4gYmUgdXNlZCBpbiBzZXZlcmFsIHR5cGVz
IG9mIG1vY2sgZnVuY3Rpb25zLCB3ZSBzYXkKK2l0J3MgX3BvbHltb3JwaGljXy4gVGhlIGBNYWtl
UG9seW1vcnBoaWNBY3Rpb24oKWAgZnVuY3Rpb24gdGVtcGxhdGUKK21ha2VzIGl0IGVhc3kgdG8g
ZGVmaW5lIHN1Y2ggYW4gYWN0aW9uOgorCitgYGAKK25hbWVzcGFjZSB0ZXN0aW5nIHsKKwordGVt
cGxhdGUgPHR5cGVuYW1lIEltcGw+CitQb2x5bW9ycGhpY0FjdGlvbjxJbXBsPiBNYWtlUG9seW1v
cnBoaWNBY3Rpb24oY29uc3QgSW1wbCYgaW1wbCk7CisKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5n
CitgYGAKKworQXMgYW4gZXhhbXBsZSwgbGV0J3MgZGVmaW5lIGFuIGFjdGlvbiB0aGF0IHJldHVy
bnMgdGhlIHNlY29uZCBhcmd1bWVudAoraW4gdGhlIG1vY2sgZnVuY3Rpb24ncyBhcmd1bWVudCBs
aXN0LiBUaGUgZmlyc3Qgc3RlcCBpcyB0byBkZWZpbmUgYW4KK2ltcGxlbWVudGF0aW9uIGNsYXNz
OgorCitgYGAKK2NsYXNzIFJldHVyblNlY29uZEFyZ3VtZW50QWN0aW9uIHsKKyBwdWJsaWM6Cisg
IHRlbXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQsIHR5cGVuYW1lIEFyZ3VtZW50VHVwbGU+CisgIFJl
c3VsdCBQZXJmb3JtKGNvbnN0IEFyZ3VtZW50VHVwbGUmIGFyZ3MpIGNvbnN0IHsKKyAgICAvLyBU
byBnZXQgdGhlIGktdGggKDAtYmFzZWQpIGFyZ3VtZW50LCB1c2UgdHIxOjpnZXQ8aT4oYXJncyku
CisgICAgcmV0dXJuIHRyMTo6Z2V0PDE+KGFyZ3MpOworICB9Cit9OworYGBgCisKK1RoaXMgaW1w
bGVtZW50YXRpb24gY2xhc3MgZG9lcyBfbm90XyBuZWVkIHRvIGluaGVyaXQgZnJvbSBhbnkKK3Bh
cnRpY3VsYXIgY2xhc3MuIFdoYXQgbWF0dGVycyBpcyB0aGF0IGl0IG11c3QgaGF2ZSBhIGBQZXJm
b3JtKClgCittZXRob2QgdGVtcGxhdGUuIFRoaXMgbWV0aG9kIHRlbXBsYXRlIHRha2VzIHRoZSBt
b2NrIGZ1bmN0aW9uJ3MKK2FyZ3VtZW50cyBhcyBhIHR1cGxlIGluIGEgKipzaW5nbGUqKiBhcmd1
bWVudCwgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBvZgordGhlIGFjdGlvbi4gSXQgY2FuIGJlIGVp
dGhlciBgY29uc3RgIG9yIG5vdCwgYnV0IG11c3QgYmUgaW52b2thYmxlCit3aXRoIGV4YWN0bHkg
b25lIHRlbXBsYXRlIGFyZ3VtZW50LCB3aGljaCBpcyB0aGUgcmVzdWx0IHR5cGUuIEluIG90aGVy
Cit3b3JkcywgeW91IG11c3QgYmUgYWJsZSB0byBjYWxsIGBQZXJmb3JtPFI+KGFyZ3MpYCB3aGVy
ZSBgUmAgaXMgdGhlCittb2NrIGZ1bmN0aW9uJ3MgcmV0dXJuIHR5cGUgYW5kIGBhcmdzYCBpcyBp
dHMgYXJndW1lbnRzIGluIGEgdHVwbGUuCisKK05leHQsIHdlIHVzZSBgTWFrZVBvbHltb3JwaGlj
QWN0aW9uKClgIHRvIHR1cm4gYW4gaW5zdGFuY2Ugb2YgdGhlCitpbXBsZW1lbnRhdGlvbiBjbGFz
cyBpbnRvIHRoZSBwb2x5bW9ycGhpYyBhY3Rpb24gd2UgbmVlZC4gSXQgd2lsbCBiZQorY29udmVu
aWVudCB0byBoYXZlIGEgd3JhcHBlciBmb3IgdGhpczoKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6
Ok1ha2VQb2x5bW9ycGhpY0FjdGlvbjsKK3VzaW5nIDo6dGVzdGluZzo6UG9seW1vcnBoaWNBY3Rp
b247CisKK1BvbHltb3JwaGljQWN0aW9uPFJldHVyblNlY29uZEFyZ3VtZW50QWN0aW9uPiBSZXR1
cm5TZWNvbmRBcmd1bWVudCgpIHsKKyAgcmV0dXJuIE1ha2VQb2x5bW9ycGhpY0FjdGlvbihSZXR1
cm5TZWNvbmRBcmd1bWVudEFjdGlvbigpKTsKK30KK2BgYAorCitOb3csIHlvdSBjYW4gdXNlIHRo
aXMgcG9seW1vcnBoaWMgYWN0aW9uIHRoZSBzYW1lIHdheSB5b3UgdXNlIHRoZQorYnVpbHQtaW4g
b25lczoKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6Ol87CisKK2NsYXNzIE1vY2tGb28gOiBwdWJs
aWMgRm9vIHsKKyBwdWJsaWM6CisgIE1PQ0tfTUVUSE9EMihEb1RoaXMsIGludChib29sIGZsYWcs
IGludCBuKSk7CisgIE1PQ0tfTUVUSE9EMyhEb1RoYXQsIHN0cmluZyhpbnQgeCwgY29uc3QgY2hh
ciogc3RyMSwgY29uc3QgY2hhciogc3RyMikpOworfTsKKy4uLgorCisgIE1vY2tGb28gZm9vOwor
ICBFWFBFQ1RfQ0FMTChmb28sIERvVGhpcyhfLCBfKSkKKyAgICAgIC5XaWxsT25jZShSZXR1cm5T
ZWNvbmRBcmd1bWVudCgpKTsKKyAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoYXQoXywgXywgXykpCisg
ICAgICAuV2lsbE9uY2UoUmV0dXJuU2Vjb25kQXJndW1lbnQoKSk7CisgIC4uLgorICBmb28uRG9U
aGlzKHRydWUsIDUpOyAgICAgICAgIC8vIFdpbGwgcmV0dXJuIDUuCisgIGZvby5Eb1RoYXQoMSwg
IkhpIiwgIkJ5ZSIpOyAgLy8gV2lsbCByZXR1cm4gIkhpIi4KK2BgYAorCisjIyBUZWFjaGluZyBH
b29nbGUgTW9jayBIb3cgdG8gUHJpbnQgWW91ciBWYWx1ZXMgIyMKKworV2hlbiBhbiB1bmludGVy
ZXN0aW5nIG9yIHVuZXhwZWN0ZWQgY2FsbCBvY2N1cnMsIEdvb2dsZSBNb2NrIHByaW50cyB0aGUK
K2FyZ3VtZW50IHZhbHVlcyBhbmQgdGhlIHN0YWNrIHRyYWNlIHRvIGhlbHAgeW91IGRlYnVnLiAg
QXNzZXJ0aW9uCittYWNyb3MgbGlrZSBgRVhQRUNUX1RIQVRgIGFuZCBgRVhQRUNUX0VRYCBhbHNv
IHByaW50IHRoZSB2YWx1ZXMgaW4KK3F1ZXN0aW9uIHdoZW4gdGhlIGFzc2VydGlvbiBmYWlscy4g
IEdvb2dsZSBNb2NrIGFuZCBHb29nbGUgVGVzdCBkbyB0aGlzIHVzaW5nCitHb29nbGUgVGVzdCdz
IHVzZXItZXh0ZW5zaWJsZSB2YWx1ZSBwcmludGVyLgorCitUaGlzIHByaW50ZXIga25vd3MgaG93
IHRvIHByaW50IGJ1aWx0LWluIEMrKyB0eXBlcywgbmF0aXZlIGFycmF5cywgU1RMCitjb250YWlu
ZXJzLCBhbmQgYW55IHR5cGUgdGhhdCBzdXBwb3J0cyB0aGUgYDw8YCBvcGVyYXRvci4gIEZvciBv
dGhlcgordHlwZXMsIGl0IHByaW50cyB0aGUgcmF3IGJ5dGVzIGluIHRoZSB2YWx1ZSBhbmQgaG9w
ZXMgdGhhdCB5b3UgdGhlCit1c2VyIGNhbiBmaWd1cmUgaXQgb3V0LgorW0dvb2dsZSBUZXN0J3Mg
YWR2YW5jZWQgZ3VpZGVdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0L3dpa2kv
VjFfNl9BZHZhbmNlZEd1aWRlI1RlYWNoaW5nX0dvb2dsZV9UZXN0X0hvd190b19QcmludF9Zb3Vy
X1ZhbHVlcykKK2V4cGxhaW5zIGhvdyB0byBleHRlbmQgdGhlIHByaW50ZXIgdG8gZG8gYSBiZXR0
ZXIgam9iIGF0CitwcmludGluZyB5b3VyIHBhcnRpY3VsYXIgdHlwZSB0aGFuIHRvIGR1bXAgdGhl
IGJ5dGVzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVt
b2NrL2RvY3MvdjFfNi9Eb2N1bWVudGF0aW9uLm1kIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy92MV82L0Rv
Y3VtZW50YXRpb24ubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGNjOTE1NmMyYTEyMDI3YmUwY2UwYjc2OGRhYmRm
ZmY3ZTIxNjU1MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvdjFfNi9Eb2N1
bWVudGF0aW9uLm1kCkBAIC0wLDAgKzEsMTIgQEAKK1RoaXMgcGFnZSBsaXN0cyBhbGwgZG9jdW1l
bnRhdGlvbiB3aWtpIHBhZ2VzIGZvciBHb29nbGUgTW9jayAqKjEuNioqCistICoqaWYgeW91IHVz
ZSBhIHJlbGVhc2VkIHZlcnNpb24gb2YgR29vZ2xlIE1vY2ssIHBsZWFzZSByZWFkIHRoZSBkb2N1
bWVudGF0aW9uIGZvciB0aGF0IHNwZWNpZmljIHZlcnNpb24gaW5zdGVhZC4qKgorCisgICogW0Zv
ckR1bW1pZXNdKFYxXzZfRm9yRHVtbWllcy5tZCkgLS0gc3RhcnQgaGVyZSBpZiB5b3UgYXJlIG5l
dyB0byBHb29nbGUgTW9jay4KKyAgKiBbQ2hlYXRTaGVldF0oVjFfNl9DaGVhdFNoZWV0Lm1kKSAt
LSBhIHF1aWNrIHJlZmVyZW5jZS4KKyAgKiBbQ29va0Jvb2tdKFYxXzZfQ29va0Jvb2subWQpIC0t
IHJlY2lwZXMgZm9yIGRvaW5nIHZhcmlvdXMgdGFza3MgdXNpbmcgR29vZ2xlIE1vY2suCisgICog
W0ZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uc10oVjFfNl9GcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMu
bWQpIC0tIGNoZWNrIGhlcmUgYmVmb3JlIGFza2luZyBhIHF1ZXN0aW9uIG9uIHRoZSBtYWlsaW5n
IGxpc3QuCisKK1RvIGNvbnRyaWJ1dGUgY29kZSB0byBHb29nbGUgTW9jaywgcmVhZDoKKworICAq
IFtEZXZHdWlkZV0oRGV2R3VpZGUubWQpIC0tIHJlYWQgdGhpcyBfYmVmb3JlXyB3cml0aW5nIHlv
dXIgZmlyc3QgcGF0Y2guCisgICogW1B1bXAgTWFudWFsXShodHRwOi8vY29kZS5nb29nbGUuY29t
L3AvZ29vZ2xldGVzdC93aWtpL1YxXzZfUHVtcE1hbnVhbCkgLS0gaG93IHdlIGdlbmVyYXRlIHNv
bWUgb2YgR29vZ2xlIE1vY2sncyBzb3VyY2UgZmlsZXMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy92MV82L0ZvckR1bW1pZXMubWQgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xlbW9jay9kb2NzL3YxXzYvRm9yRHVtbWllcy5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOWVlNjNhYjBj
Mjg3OTEwZTE2NDMxNDBmNzdkNWFjMjk5YzZhYmY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZW1vY2svZG9jcy92MV82L0ZvckR1bW1pZXMubWQKQEAgLTAsMCArMSw0MzkgQEAKKworCisoKipO
b3RlOioqIElmIHlvdSBnZXQgY29tcGlsZXIgZXJyb3JzIHRoYXQgeW91IGRvbid0IHVuZGVyc3Rh
bmQsIGJlIHN1cmUgdG8gY29uc3VsdCBbR29vZ2xlIE1vY2sgRG9jdG9yXShodHRwOi8vY29kZS5n
b29nbGUuY29tL3AvZ29vZ2xlbW9jay93aWtpL1YxXzZfRnJlcXVlbnRseUFza2VkUXVlc3Rpb25z
I0hvd19hbV9JX3N1cHBvc2VkX3RvX21ha2Vfc2Vuc2Vfb2ZfdGhlc2VfaG9ycmlibGVfdGVtcGxh
dGVfZXJyb3IpLikKKworIyBXaGF0IElzIEdvb2dsZSBDKysgTW9ja2luZyBGcmFtZXdvcms/ICMK
K1doZW4geW91IHdyaXRlIGEgcHJvdG90eXBlIG9yIHRlc3QsIG9mdGVuIGl0J3Mgbm90IGZlYXNp
YmxlIG9yIHdpc2UgdG8gcmVseSBvbiByZWFsIG9iamVjdHMgZW50aXJlbHkuIEEgKiptb2NrIG9i
amVjdCoqIGltcGxlbWVudHMgdGhlIHNhbWUgaW50ZXJmYWNlIGFzIGEgcmVhbCBvYmplY3QgKHNv
IGl0IGNhbiBiZSB1c2VkIGFzIG9uZSksIGJ1dCBsZXRzIHlvdSBzcGVjaWZ5IGF0IHJ1biB0aW1l
IGhvdyBpdCB3aWxsIGJlIHVzZWQgYW5kIHdoYXQgaXQgc2hvdWxkIGRvICh3aGljaCBtZXRob2Rz
IHdpbGwgYmUgY2FsbGVkPyBpbiB3aGljaCBvcmRlcj8gaG93IG1hbnkgdGltZXM/IHdpdGggd2hh
dCBhcmd1bWVudHM/IHdoYXQgd2lsbCB0aGV5IHJldHVybj8gZXRjKS4KKworKipOb3RlOioqIEl0
IGlzIGVhc3kgdG8gY29uZnVzZSB0aGUgdGVybSBfZmFrZSBvYmplY3RzXyB3aXRoIG1vY2sgb2Jq
ZWN0cy4gRmFrZXMgYW5kIG1vY2tzIGFjdHVhbGx5IG1lYW4gdmVyeSBkaWZmZXJlbnQgdGhpbmdz
IGluIHRoZSBUZXN0LURyaXZlbiBEZXZlbG9wbWVudCAoVEREKSBjb21tdW5pdHk6CisKKyAgKiAq
KkZha2UqKiBvYmplY3RzIGhhdmUgd29ya2luZyBpbXBsZW1lbnRhdGlvbnMsIGJ1dCB1c3VhbGx5
IHRha2Ugc29tZSBzaG9ydGN1dCAocGVyaGFwcyB0byBtYWtlIHRoZSBvcGVyYXRpb25zIGxlc3Mg
ZXhwZW5zaXZlKSwgd2hpY2ggbWFrZXMgdGhlbSBub3Qgc3VpdGFibGUgZm9yIHByb2R1Y3Rpb24u
IEFuIGluLW1lbW9yeSBmaWxlIHN5c3RlbSB3b3VsZCBiZSBhbiBleGFtcGxlIG9mIGEgZmFrZS4K
KyAgKiAqKk1vY2tzKiogYXJlIG9iamVjdHMgcHJlLXByb2dyYW1tZWQgd2l0aCBfZXhwZWN0YXRp
b25zXywgd2hpY2ggZm9ybSBhIHNwZWNpZmljYXRpb24gb2YgdGhlIGNhbGxzIHRoZXkgYXJlIGV4
cGVjdGVkIHRvIHJlY2VpdmUuCisKK0lmIGFsbCB0aGlzIHNlZW1zIHRvbyBhYnN0cmFjdCBmb3Ig
eW91LCBkb24ndCB3b3JyeSAtIHRoZSBtb3N0IGltcG9ydGFudCB0aGluZyB0byByZW1lbWJlciBp
cyB0aGF0IGEgbW9jayBhbGxvd3MgeW91IHRvIGNoZWNrIHRoZSBfaW50ZXJhY3Rpb25fIGJldHdl
ZW4gaXRzZWxmIGFuZCBjb2RlIHRoYXQgdXNlcyBpdC4gVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBm
YWtlcyBhbmQgbW9ja3Mgd2lsbCBiZWNvbWUgbXVjaCBjbGVhcmVyIG9uY2UgeW91IHN0YXJ0IHRv
IHVzZSBtb2Nrcy4KKworKipHb29nbGUgQysrIE1vY2tpbmcgRnJhbWV3b3JrKiogKG9yICoqR29v
Z2xlIE1vY2sqKiBmb3Igc2hvcnQpIGlzIGEgbGlicmFyeSAoc29tZXRpbWVzIHdlIGFsc28gY2Fs
bCBpdCBhICJmcmFtZXdvcmsiIHRvIG1ha2UgaXQgc291bmQgY29vbCkgZm9yIGNyZWF0aW5nIG1v
Y2sgY2xhc3NlcyBhbmQgdXNpbmcgdGhlbS4gSXQgZG9lcyB0byBDKysgd2hhdCBbak1vY2tdKGh0
dHA6Ly93d3cuam1vY2sub3JnLykgYW5kIFtFYXN5TW9ja10oaHR0cDovL3d3dy5lYXN5bW9jay5v
cmcvKSBkbyB0byBKYXZhLgorCitVc2luZyBHb29nbGUgTW9jayBpbnZvbHZlcyB0aHJlZSBiYXNp
YyBzdGVwczoKKworICAxLiBVc2Ugc29tZSBzaW1wbGUgbWFjcm9zIHRvIGRlc2NyaWJlIHRoZSBp
bnRlcmZhY2UgeW91IHdhbnQgdG8gbW9jaywgYW5kIHRoZXkgd2lsbCBleHBhbmQgdG8gdGhlIGlt
cGxlbWVudGF0aW9uIG9mIHlvdXIgbW9jayBjbGFzczsKKyAgMS4gQ3JlYXRlIHNvbWUgbW9jayBv
YmplY3RzIGFuZCBzcGVjaWZ5IGl0cyBleHBlY3RhdGlvbnMgYW5kIGJlaGF2aW9yIHVzaW5nIGFu
IGludHVpdGl2ZSBzeW50YXg7CisgIDEuIEV4ZXJjaXNlIGNvZGUgdGhhdCB1c2VzIHRoZSBtb2Nr
IG9iamVjdHMuIEdvb2dsZSBNb2NrIHdpbGwgY2F0Y2ggYW55IHZpb2xhdGlvbiBvZiB0aGUgZXhw
ZWN0YXRpb25zIGFzIHNvb24gYXMgaXQgYXJpc2VzLgorCisjIFdoeSBHb29nbGUgTW9jaz8gIwor
V2hpbGUgbW9jayBvYmplY3RzIGhlbHAgeW91IHJlbW92ZSB1bm5lY2Vzc2FyeSBkZXBlbmRlbmNp
ZXMgaW4gdGVzdHMgYW5kIG1ha2UgdGhlbSBmYXN0IGFuZCByZWxpYWJsZSwgdXNpbmcgbW9ja3Mg
bWFudWFsbHkgaW4gQysrIGlzIF9oYXJkXzoKKworICAqIFNvbWVvbmUgaGFzIHRvIGltcGxlbWVu
dCB0aGUgbW9ja3MuIFRoZSBqb2IgaXMgdXN1YWxseSB0ZWRpb3VzIGFuZCBlcnJvci1wcm9uZS4g
Tm8gd29uZGVyIHBlb3BsZSBnbyBncmVhdCBkaXN0YW5jZSB0byBhdm9pZCBpdC4KKyAgKiBUaGUg
cXVhbGl0eSBvZiB0aG9zZSBtYW51YWxseSB3cml0dGVuIG1vY2tzIGlzIGEgYml0LCB1aCwgdW5w
cmVkaWN0YWJsZS4gWW91IG1heSBzZWUgc29tZSByZWFsbHkgcG9saXNoZWQgb25lcywgYnV0IHlv
dSBtYXkgYWxzbyBzZWUgc29tZSB0aGF0IHdlcmUgaGFja2VkIHVwIGluIGEgaHVycnkgYW5kIGhh
dmUgYWxsIHNvcnRzIG9mIGFkIGhvYyByZXN0cmljdGlvbnMuCisgICogVGhlIGtub3dsZWRnZSB5
b3UgZ2FpbmVkIGZyb20gdXNpbmcgb25lIG1vY2sgZG9lc24ndCB0cmFuc2ZlciB0byB0aGUgbmV4
dC4KKworSW4gY29udHJhc3QsIEphdmEgYW5kIFB5dGhvbiBwcm9ncmFtbWVycyBoYXZlIHNvbWUg
ZmluZSBtb2NrIGZyYW1ld29ya3MsIHdoaWNoIGF1dG9tYXRlIHRoZSBjcmVhdGlvbiBvZiBtb2Nr
cy4gQXMgYSByZXN1bHQsIG1vY2tpbmcgaXMgYSBwcm92ZW4gZWZmZWN0aXZlIHRlY2huaXF1ZSBh
bmQgd2lkZWx5IGFkb3B0ZWQgcHJhY3RpY2UgaW4gdGhvc2UgY29tbXVuaXRpZXMuIEhhdmluZyB0
aGUgcmlnaHQgdG9vbCBhYnNvbHV0ZWx5IG1ha2VzIHRoZSBkaWZmZXJlbmNlLgorCitHb29nbGUg
TW9jayB3YXMgYnVpbHQgdG8gaGVscCBDKysgcHJvZ3JhbW1lcnMuIEl0IHdhcyBpbnNwaXJlZCBi
eSBbak1vY2tdKGh0dHA6Ly93d3cuam1vY2sub3JnLykgYW5kIFtFYXN5TW9ja10oaHR0cDovL3d3
dy5lYXN5bW9jay5vcmcvKSwgYnV0IGRlc2lnbmVkIHdpdGggQysrJ3Mgc3BlY2lmaWNzIGluIG1p
bmQuIEl0IGlzIHlvdXIgZnJpZW5kIGlmIGFueSBvZiB0aGUgZm9sbG93aW5nIHByb2JsZW1zIGlz
IGJvdGhlcmluZyB5b3U6CisKKyAgKiBZb3UgYXJlIHN0dWNrIHdpdGggYSBzdWItb3B0aW1hbCBk
ZXNpZ24gYW5kIHdpc2ggeW91IGhhZCBkb25lIG1vcmUgcHJvdG90eXBpbmcgYmVmb3JlIGl0IHdh
cyB0b28gbGF0ZSwgYnV0IHByb3RvdHlwaW5nIGluIEMrKyBpcyBieSBubyBtZWFucyAicmFwaWQi
LgorICAqIFlvdXIgdGVzdHMgYXJlIHNsb3cgYXMgdGhleSBkZXBlbmQgb24gdG9vIG1hbnkgbGli
cmFyaWVzIG9yIHVzZSBleHBlbnNpdmUgcmVzb3VyY2VzIChlLmcuIGEgZGF0YWJhc2UpLgorICAq
IFlvdXIgdGVzdHMgYXJlIGJyaXR0bGUgYXMgc29tZSByZXNvdXJjZXMgdGhleSB1c2UgYXJlIHVu
cmVsaWFibGUgKGUuZy4gdGhlIG5ldHdvcmspLgorICAqIFlvdSB3YW50IHRvIHRlc3QgaG93IHlv
dXIgY29kZSBoYW5kbGVzIGEgZmFpbHVyZSAoZS5nLiBhIGZpbGUgY2hlY2tzdW0gZXJyb3IpLCBi
dXQgaXQncyBub3QgZWFzeSB0byBjYXVzZSBvbmUuCisgICogWW91IG5lZWQgdG8gbWFrZSBzdXJl
IHRoYXQgeW91ciBtb2R1bGUgaW50ZXJhY3RzIHdpdGggb3RoZXIgbW9kdWxlcyBpbiB0aGUgcmln
aHQgd2F5LCBidXQgaXQncyBoYXJkIHRvIG9ic2VydmUgdGhlIGludGVyYWN0aW9uOyB0aGVyZWZv
cmUgeW91IHJlc29ydCB0byBvYnNlcnZpbmcgdGhlIHNpZGUgZWZmZWN0cyBhdCB0aGUgZW5kIG9m
IHRoZSBhY3Rpb24sIHdoaWNoIGlzIGF3a3dhcmQgYXQgYmVzdC4KKyAgKiBZb3Ugd2FudCB0byAi
bW9jayBvdXQiIHlvdXIgZGVwZW5kZW5jaWVzLCBleGNlcHQgdGhhdCB0aGV5IGRvbid0IGhhdmUg
bW9jayBpbXBsZW1lbnRhdGlvbnMgeWV0OyBhbmQsIGZyYW5rbHksIHlvdSBhcmVuJ3QgdGhyaWxs
ZWQgYnkgc29tZSBvZiB0aG9zZSBoYW5kLXdyaXR0ZW4gbW9ja3MuCisKK1dlIGVuY291cmFnZSB5
b3UgdG8gdXNlIEdvb2dsZSBNb2NrIGFzOgorCisgICogYSBfZGVzaWduXyB0b29sLCBmb3IgaXQg
bGV0cyB5b3UgZXhwZXJpbWVudCB3aXRoIHlvdXIgaW50ZXJmYWNlIGRlc2lnbiBlYXJseSBhbmQg
b2Z0ZW4uIE1vcmUgaXRlcmF0aW9ucyBsZWFkIHRvIGJldHRlciBkZXNpZ25zIQorICAqIGEgX3Rl
c3RpbmdfIHRvb2wgdG8gY3V0IHlvdXIgdGVzdHMnIG91dGJvdW5kIGRlcGVuZGVuY2llcyBhbmQg
cHJvYmUgdGhlIGludGVyYWN0aW9uIGJldHdlZW4geW91ciBtb2R1bGUgYW5kIGl0cyBjb2xsYWJv
cmF0b3JzLgorCisjIEdldHRpbmcgU3RhcnRlZCAjCitVc2luZyBHb29nbGUgTW9jayBpcyBlYXN5
ISBJbnNpZGUgeW91ciBDKysgc291cmNlIGZpbGUsIGp1c3QgYCNpbmNsdWRlYCBgImd0ZXN0L2d0
ZXN0LmgiYCBhbmQgYCJnbW9jay9nbW9jay5oImAsIGFuZCB5b3UgYXJlIHJlYWR5IHRvIGdvLgor
CisjIEEgQ2FzZSBmb3IgTW9jayBUdXJ0bGVzICMKK0xldCdzIGxvb2sgYXQgYW4gZXhhbXBsZS4g
U3VwcG9zZSB5b3UgYXJlIGRldmVsb3BpbmcgYSBncmFwaGljcyBwcm9ncmFtIHRoYXQgcmVsaWVz
IG9uIGEgTE9HTy1saWtlIEFQSSBmb3IgZHJhd2luZy4gSG93IHdvdWxkIHlvdSB0ZXN0IHRoYXQg
aXQgZG9lcyB0aGUgcmlnaHQgdGhpbmc/IFdlbGwsIHlvdSBjYW4gcnVuIGl0IGFuZCBjb21wYXJl
IHRoZSBzY3JlZW4gd2l0aCBhIGdvbGRlbiBzY3JlZW4gc25hcHNob3QsIGJ1dCBsZXQncyBhZG1p
dCBpdDogdGVzdHMgbGlrZSB0aGlzIGFyZSBleHBlbnNpdmUgdG8gcnVuIGFuZCBmcmFnaWxlIChX
aGF0IGlmIHlvdSBqdXN0IHVwZ3JhZGVkIHRvIGEgc2hpbnkgbmV3IGdyYXBoaWNzIGNhcmQgdGhh
dCBoYXMgYmV0dGVyIGFudGktYWxpYXNpbmc/IFN1ZGRlbmx5IHlvdSBoYXZlIHRvIHVwZGF0ZSBh
bGwgeW91ciBnb2xkZW4gaW1hZ2VzLikuIEl0IHdvdWxkIGJlIHRvbyBwYWluZnVsIGlmIGFsbCB5
b3VyIHRlc3RzIGFyZSBsaWtlIHRoaXMuIEZvcnR1bmF0ZWx5LCB5b3UgbGVhcm5lZCBhYm91dCBE
ZXBlbmRlbmN5IEluamVjdGlvbiBhbmQga25vdyB0aGUgcmlnaHQgdGhpbmcgdG8gZG86IGluc3Rl
YWQgb2YgaGF2aW5nIHlvdXIgYXBwbGljYXRpb24gdGFsayB0byB0aGUgZHJhd2luZyBBUEkgZGly
ZWN0bHksIHdyYXAgdGhlIEFQSSBpbiBhbiBpbnRlcmZhY2UgKHNheSwgYFR1cnRsZWApIGFuZCBj
b2RlIHRvIHRoYXQgaW50ZXJmYWNlOgorCitgYGAKK2NsYXNzIFR1cnRsZSB7CisgIC4uLgorICB2
aXJ0dWFsIH5UdXJ0bGUoKSB7fQorICB2aXJ0dWFsIHZvaWQgUGVuVXAoKSA9IDA7CisgIHZpcnR1
YWwgdm9pZCBQZW5Eb3duKCkgPSAwOworICB2aXJ0dWFsIHZvaWQgRm9yd2FyZChpbnQgZGlzdGFu
Y2UpID0gMDsKKyAgdmlydHVhbCB2b2lkIFR1cm4oaW50IGRlZ3JlZXMpID0gMDsKKyAgdmlydHVh
bCB2b2lkIEdvVG8oaW50IHgsIGludCB5KSA9IDA7CisgIHZpcnR1YWwgaW50IEdldFgoKSBjb25z
dCA9IDA7CisgIHZpcnR1YWwgaW50IEdldFkoKSBjb25zdCA9IDA7Cit9OworYGBgCisKKyhOb3Rl
IHRoYXQgdGhlIGRlc3RydWN0b3Igb2YgYFR1cnRsZWAgKiptdXN0KiogYmUgdmlydHVhbCwgYXMg
aXMgdGhlIGNhc2UgZm9yICoqYWxsKiogY2xhc3NlcyB5b3UgaW50ZW5kIHRvIGluaGVyaXQgZnJv
bSAtIG90aGVyd2lzZSB0aGUgZGVzdHJ1Y3RvciBvZiB0aGUgZGVyaXZlZCBjbGFzcyB3aWxsIG5v
dCBiZSBjYWxsZWQgd2hlbiB5b3UgZGVsZXRlIGFuIG9iamVjdCB0aHJvdWdoIGEgYmFzZSBwb2lu
dGVyLCBhbmQgeW91J2xsIGdldCBjb3JydXB0ZWQgcHJvZ3JhbSBzdGF0ZXMgbGlrZSBtZW1vcnkg
bGVha3MuKQorCitZb3UgY2FuIGNvbnRyb2wgd2hldGhlciB0aGUgdHVydGxlJ3MgbW92ZW1lbnQg
d2lsbCBsZWF2ZSBhIHRyYWNlIHVzaW5nIGBQZW5VcCgpYCBhbmQgYFBlbkRvd24oKWAsIGFuZCBj
b250cm9sIGl0cyBtb3ZlbWVudCB1c2luZyBgRm9yd2FyZCgpYCwgYFR1cm4oKWAsIGFuZCBgR29U
bygpYC4gRmluYWxseSwgYEdldFgoKWAgYW5kIGBHZXRZKClgIHRlbGwgeW91IHRoZSBjdXJyZW50
IHBvc2l0aW9uIG9mIHRoZSB0dXJ0bGUuCisKK1lvdXIgcHJvZ3JhbSB3aWxsIG5vcm1hbGx5IHVz
ZSBhIHJlYWwgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBpbnRlcmZhY2UuIEluIHRlc3RzLCB5b3Ug
Y2FuIHVzZSBhIG1vY2sgaW1wbGVtZW50YXRpb24gaW5zdGVhZC4gVGhpcyBhbGxvd3MgeW91IHRv
IGVhc2lseSBjaGVjayB3aGF0IGRyYXdpbmcgcHJpbWl0aXZlcyB5b3VyIHByb2dyYW0gaXMgY2Fs
bGluZywgd2l0aCB3aGF0IGFyZ3VtZW50cywgYW5kIGluIHdoaWNoIG9yZGVyLiBUZXN0cyB3cml0
dGVuIHRoaXMgd2F5IGFyZSBtdWNoIG1vcmUgcm9idXN0ICh0aGV5IHdvbid0IGJyZWFrIGJlY2F1
c2UgeW91ciBuZXcgbWFjaGluZSBkb2VzIGFudGktYWxpYXNpbmcgZGlmZmVyZW50bHkpLCBlYXNp
ZXIgdG8gcmVhZCBhbmQgbWFpbnRhaW4gKHRoZSBpbnRlbnQgb2YgYSB0ZXN0IGlzIGV4cHJlc3Nl
ZCBpbiB0aGUgY29kZSwgbm90IGluIHNvbWUgYmluYXJ5IGltYWdlcyksIGFuZCBydW4gX211Y2gs
IG11Y2ggZmFzdGVyXy4KKworIyBXcml0aW5nIHRoZSBNb2NrIENsYXNzICMKK0lmIHlvdSBhcmUg
bHVja3ksIHRoZSBtb2NrcyB5b3UgbmVlZCB0byB1c2UgaGF2ZSBhbHJlYWR5IGJlZW4gaW1wbGVt
ZW50ZWQgYnkgc29tZSBuaWNlIHBlb3BsZS4gSWYsIGhvd2V2ZXIsIHlvdSBmaW5kIHlvdXJzZWxm
IGluIHRoZSBwb3NpdGlvbiB0byB3cml0ZSBhIG1vY2sgY2xhc3MsIHJlbGF4IC0gR29vZ2xlIE1v
Y2sgdHVybnMgdGhpcyB0YXNrIGludG8gYSBmdW4gZ2FtZSEgKFdlbGwsIGFsbW9zdC4pCisKKyMj
IEhvdyB0byBEZWZpbmUgSXQgIyMKK1VzaW5nIHRoZSBgVHVydGxlYCBpbnRlcmZhY2UgYXMgZXhh
bXBsZSwgaGVyZSBhcmUgdGhlIHNpbXBsZSBzdGVwcyB5b3UgbmVlZCB0byBmb2xsb3c6CisKKyAg
MS4gRGVyaXZlIGEgY2xhc3MgYE1vY2tUdXJ0bGVgIGZyb20gYFR1cnRsZWAuCisgIDEuIFRha2Ug
YSBfdmlydHVhbF8gZnVuY3Rpb24gb2YgYFR1cnRsZWAgKHdoaWxlIGl0J3MgcG9zc2libGUgdG8g
W21vY2sgbm9uLXZpcnR1YWwgbWV0aG9kcyB1c2luZyB0ZW1wbGF0ZXNdKGh0dHA6Ly9jb2RlLmdv
b2dsZS5jb20vcC9nb29nbGVtb2NrL3dpa2kvVjFfNl9Db29rQm9vayNNb2NraW5nX05vbnZpcnR1
YWxfTWV0aG9kcyksIGl0J3MgbXVjaCBtb3JlIGludm9sdmVkKS4gQ291bnQgaG93IG1hbnkgYXJn
dW1lbnRzIGl0IGhhcy4KKyAgMS4gSW4gdGhlIGBwdWJsaWM6YCBzZWN0aW9uIG9mIHRoZSBjaGls
ZCBjbGFzcywgd3JpdGUgYE1PQ0tfTUVUSE9EbigpO2AgKG9yIGBNT0NLX0NPTlNUX01FVEhPRG4o
KTtgIGlmIHlvdSBhcmUgbW9ja2luZyBhIGBjb25zdGAgbWV0aG9kKSwgd2hlcmUgYG5gIGlzIHRo
ZSBudW1iZXIgb2YgdGhlIGFyZ3VtZW50czsgaWYgeW91IGNvdW50ZWQgd3JvbmcsIHNoYW1lIG9u
IHlvdSwgYW5kIGEgY29tcGlsZXIgZXJyb3Igd2lsbCB0ZWxsIHlvdSBzby4KKyAgMS4gTm93IGNv
bWVzIHRoZSBmdW4gcGFydDogeW91IHRha2UgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZSwgY3V0LWFu
ZC1wYXN0ZSB0aGUgX2Z1bmN0aW9uIG5hbWVfIGFzIHRoZSBfZmlyc3RfIGFyZ3VtZW50IHRvIHRo
ZSBtYWNybywgYW5kIGxlYXZlIHdoYXQncyBsZWZ0IGFzIHRoZSBfc2Vjb25kXyBhcmd1bWVudCAo
aW4gY2FzZSB5b3UncmUgY3VyaW91cywgdGhpcyBpcyB0aGUgX3R5cGUgb2YgdGhlIGZ1bmN0aW9u
XykuCisgIDEuIFJlcGVhdCB1bnRpbCBhbGwgdmlydHVhbCBmdW5jdGlvbnMgeW91IHdhbnQgdG8g
bW9jayBhcmUgZG9uZS4KKworQWZ0ZXIgdGhlIHByb2Nlc3MsIHlvdSBzaG91bGQgaGF2ZSBzb21l
dGhpbmcgbGlrZToKKworYGBgCisjaW5jbHVkZSAiZ21vY2svZ21vY2suaCIgIC8vIEJyaW5ncyBp
biBHb29nbGUgTW9jay4KK2NsYXNzIE1vY2tUdXJ0bGUgOiBwdWJsaWMgVHVydGxlIHsKKyBwdWJs
aWM6CisgIC4uLgorICBNT0NLX01FVEhPRDAoUGVuVXAsIHZvaWQoKSk7CisgIE1PQ0tfTUVUSE9E
MChQZW5Eb3duLCB2b2lkKCkpOworICBNT0NLX01FVEhPRDEoRm9yd2FyZCwgdm9pZChpbnQgZGlz
dGFuY2UpKTsKKyAgTU9DS19NRVRIT0QxKFR1cm4sIHZvaWQoaW50IGRlZ3JlZXMpKTsKKyAgTU9D
S19NRVRIT0QyKEdvVG8sIHZvaWQoaW50IHgsIGludCB5KSk7CisgIE1PQ0tfQ09OU1RfTUVUSE9E
MChHZXRYLCBpbnQoKSk7CisgIE1PQ0tfQ09OU1RfTUVUSE9EMChHZXRZLCBpbnQoKSk7Cit9Owor
YGBgCisKK1lvdSBkb24ndCBuZWVkIHRvIGRlZmluZSB0aGVzZSBtb2NrIG1ldGhvZHMgc29tZXdo
ZXJlIGVsc2UgLSB0aGUgYE1PQ0tfTUVUSE9EKmAgbWFjcm9zIHdpbGwgZ2VuZXJhdGUgdGhlIGRl
ZmluaXRpb25zIGZvciB5b3UuIEl0J3MgdGhhdCBzaW1wbGUhIE9uY2UgeW91IGdldCB0aGUgaGFu
ZyBvZiBpdCwgeW91IGNhbiBwdW1wIG91dCBtb2NrIGNsYXNzZXMgZmFzdGVyIHRoYW4geW91ciBz
b3VyY2UtY29udHJvbCBzeXN0ZW0gY2FuIGhhbmRsZSB5b3VyIGNoZWNrLWlucy4KKworKipUaXA6
KiogSWYgZXZlbiB0aGlzIGlzIHRvbyBtdWNoIHdvcmsgZm9yIHlvdSwgeW91J2xsIGZpbmQgdGhl
CitgZ21vY2tfZ2VuLnB5YCB0b29sIGluIEdvb2dsZSBNb2NrJ3MgYHNjcmlwdHMvZ2VuZXJhdG9y
L2AgZGlyZWN0b3J5IChjb3VydGVzeSBvZiB0aGUgW2NwcGNsZWFuXShodHRwOi8vY29kZS5nb29n
bGUuY29tL3AvY3BwY2xlYW4vKSBwcm9qZWN0KSB1c2VmdWwuICBUaGlzIGNvbW1hbmQtbGluZQor
dG9vbCByZXF1aXJlcyB0aGF0IHlvdSBoYXZlIFB5dGhvbiAyLjQgaW5zdGFsbGVkLiAgWW91IGdp
dmUgaXQgYSBDKysgZmlsZSBhbmQgdGhlIG5hbWUgb2YgYW4gYWJzdHJhY3QgY2xhc3MgZGVmaW5l
ZCBpbiBpdCwKK2FuZCBpdCB3aWxsIHByaW50IHRoZSBkZWZpbml0aW9uIG9mIHRoZSBtb2NrIGNs
YXNzIGZvciB5b3UuICBEdWUgdG8gdGhlCitjb21wbGV4aXR5IG9mIHRoZSBDKysgbGFuZ3VhZ2Us
IHRoaXMgc2NyaXB0IG1heSBub3QgYWx3YXlzIHdvcmssIGJ1dAoraXQgY2FuIGJlIHF1aXRlIGhh
bmR5IHdoZW4gaXQgZG9lcy4gIEZvciBtb3JlIGRldGFpbHMsIHJlYWQgdGhlIFt1c2VyIGRvY3Vt
ZW50YXRpb25dKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGVtb2NrL3NvdXJjZS9icm93
c2UvdHJ1bmsvc2NyaXB0cy9nZW5lcmF0b3IvUkVBRE1FKS4KKworIyMgV2hlcmUgdG8gUHV0IEl0
ICMjCitXaGVuIHlvdSBkZWZpbmUgYSBtb2NrIGNsYXNzLCB5b3UgbmVlZCB0byBkZWNpZGUgd2hl
cmUgdG8gcHV0IGl0cyBkZWZpbml0aW9uLiBTb21lIHBlb3BsZSBwdXQgaXQgaW4gYSBgKl90ZXN0
LmNjYC4gVGhpcyBpcyBmaW5lIHdoZW4gdGhlIGludGVyZmFjZSBiZWluZyBtb2NrZWQgKHNheSwg
YEZvb2ApIGlzIG93bmVkIGJ5IHRoZSBzYW1lIHBlcnNvbiBvciB0ZWFtLiBPdGhlcndpc2UsIHdo
ZW4gdGhlIG93bmVyIG9mIGBGb29gIGNoYW5nZXMgaXQsIHlvdXIgdGVzdCBjb3VsZCBicmVhay4g
KFlvdSBjYW4ndCByZWFsbHkgZXhwZWN0IGBGb29gJ3MgbWFpbnRhaW5lciB0byBmaXggZXZlcnkg
dGVzdCB0aGF0IHVzZXMgYEZvb2AsIGNhbiB5b3U/KQorCitTbywgdGhlIHJ1bGUgb2YgdGh1bWIg
aXM6IGlmIHlvdSBuZWVkIHRvIG1vY2sgYEZvb2AgYW5kIGl0J3Mgb3duZWQgYnkgb3RoZXJzLCBk
ZWZpbmUgdGhlIG1vY2sgY2xhc3MgaW4gYEZvb2AncyBwYWNrYWdlIChiZXR0ZXIsIGluIGEgYHRl
c3RpbmdgIHN1Yi1wYWNrYWdlIHN1Y2ggdGhhdCB5b3UgY2FuIGNsZWFybHkgc2VwYXJhdGUgcHJv
ZHVjdGlvbiBjb2RlIGFuZCB0ZXN0aW5nIHV0aWxpdGllcyksIGFuZCBwdXQgaXQgaW4gYSBgbW9j
a19mb28uaGAuIFRoZW4gZXZlcnlvbmUgY2FuIHJlZmVyZW5jZSBgbW9ja19mb28uaGAgZnJvbSB0
aGVpciB0ZXN0cy4gSWYgYEZvb2AgZXZlciBjaGFuZ2VzLCB0aGVyZSBpcyBvbmx5IG9uZSBjb3B5
IG9mIGBNb2NrRm9vYCB0byBjaGFuZ2UsIGFuZCBvbmx5IHRlc3RzIHRoYXQgZGVwZW5kIG9uIHRo
ZSBjaGFuZ2VkIG1ldGhvZHMgbmVlZCB0byBiZSBmaXhlZC4KKworQW5vdGhlciB3YXkgdG8gZG8g
aXQ6IHlvdSBjYW4gaW50cm9kdWNlIGEgdGhpbiBsYXllciBgRm9vQWRhcHRvcmAgb24gdG9wIG9m
IGBGb29gIGFuZCBjb2RlIHRvIHRoaXMgbmV3IGludGVyZmFjZS4gU2luY2UgeW91IG93biBgRm9v
QWRhcHRvcmAsIHlvdSBjYW4gYWJzb3JiIGNoYW5nZXMgaW4gYEZvb2AgbXVjaCBtb3JlIGVhc2ls
eS4gV2hpbGUgdGhpcyBpcyBtb3JlIHdvcmsgaW5pdGlhbGx5LCBjYXJlZnVsbHkgY2hvb3Npbmcg
dGhlIGFkYXB0b3IgaW50ZXJmYWNlIGNhbiBtYWtlIHlvdXIgY29kZSBlYXNpZXIgdG8gd3JpdGUg
YW5kIG1vcmUgcmVhZGFibGUgKGEgbmV0IHdpbiBpbiB0aGUgbG9uZyBydW4pLCBhcyB5b3UgY2Fu
IGNob29zZSBgRm9vQWRhcHRvcmAgdG8gZml0IHlvdXIgc3BlY2lmaWMgZG9tYWluIG11Y2ggYmV0
dGVyIHRoYW4gYEZvb2AgZG9lcy4KKworIyBVc2luZyBNb2NrcyBpbiBUZXN0cyAjCitPbmNlIHlv
dSBoYXZlIGEgbW9jayBjbGFzcywgdXNpbmcgaXQgaXMgZWFzeS4gVGhlIHR5cGljYWwgd29yayBm
bG93IGlzOgorCisgIDEuIEltcG9ydCB0aGUgR29vZ2xlIE1vY2sgbmFtZXMgZnJvbSB0aGUgYHRl
c3RpbmdgIG5hbWVzcGFjZSBzdWNoIHRoYXQgeW91IGNhbiB1c2UgdGhlbSB1bnF1YWxpZmllZCAo
WW91IG9ubHkgaGF2ZSB0byBkbyBpdCBvbmNlIHBlciBmaWxlLiBSZW1lbWJlciB0aGF0IG5hbWVz
cGFjZXMgYXJlIGEgZ29vZCBpZGVhIGFuZCBnb29kIGZvciB5b3VyIGhlYWx0aC4pLgorICAxLiBD
cmVhdGUgc29tZSBtb2NrIG9iamVjdHMuCisgIDEuIFNwZWNpZnkgeW91ciBleHBlY3RhdGlvbnMg
b24gdGhlbSAoSG93IG1hbnkgdGltZXMgd2lsbCBhIG1ldGhvZCBiZSBjYWxsZWQ/IFdpdGggd2hh
dCBhcmd1bWVudHM/IFdoYXQgc2hvdWxkIGl0IGRvPyBldGMuKS4KKyAgMS4gRXhlcmNpc2Ugc29t
ZSBjb2RlIHRoYXQgdXNlcyB0aGUgbW9ja3M7IG9wdGlvbmFsbHksIGNoZWNrIHRoZSByZXN1bHQg
dXNpbmcgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucy4gSWYgYSBtb2NrIG1ldGhvZCBpcyBjYWxsZWQg
bW9yZSB0aGFuIGV4cGVjdGVkIG9yIHdpdGggd3JvbmcgYXJndW1lbnRzLCB5b3UnbGwgZ2V0IGFu
IGVycm9yIGltbWVkaWF0ZWx5LgorICAxLiBXaGVuIGEgbW9jayBpcyBkZXN0cnVjdGVkLCBHb29n
bGUgTW9jayB3aWxsIGF1dG9tYXRpY2FsbHkgY2hlY2sgd2hldGhlciBhbGwgZXhwZWN0YXRpb25z
IG9uIGl0IGhhdmUgYmVlbiBzYXRpc2ZpZWQuCisKK0hlcmUncyBhbiBleGFtcGxlOgorCitgYGAK
KyNpbmNsdWRlICJwYXRoL3RvL21vY2stdHVydGxlLmgiCisjaW5jbHVkZSAiZ21vY2svZ21vY2su
aCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgordXNpbmcgOjp0ZXN0aW5nOjpBdExlYXN0OyAg
ICAgICAgICAgICAgICAgICAgIC8vICMxCisKK1RFU1QoUGFpbnRlclRlc3QsIENhbkRyYXdTb21l
dGhpbmcpIHsKKyAgTW9ja1R1cnRsZSB0dXJ0bGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyAjMgorICBFWFBFQ1RfQ0FMTCh0dXJ0bGUsIFBlbkRvd24oKSkgICAgICAgICAgICAgIC8vICMz
CisgICAgICAuVGltZXMoQXRMZWFzdCgxKSk7CisKKyAgUGFpbnRlciBwYWludGVyKCZ0dXJ0bGUp
OyAgICAgICAgICAgICAgICAgICAvLyAjNAorCisgIEVYUEVDVF9UUlVFKHBhaW50ZXIuRHJhd0Np
cmNsZSgwLCAwLCAxMCkpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vICM1CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgeworICAvLyBU
aGUgZm9sbG93aW5nIGxpbmUgbXVzdCBiZSBleGVjdXRlZCB0byBpbml0aWFsaXplIEdvb2dsZSBN
b2NrCisgIC8vIChhbmQgR29vZ2xlIFRlc3QpIGJlZm9yZSBydW5uaW5nIHRoZSB0ZXN0cy4KKyAg
Ojp0ZXN0aW5nOjpJbml0R29vZ2xlTW9jaygmYXJnYywgYXJndik7CisgIHJldHVybiBSVU5fQUxM
X1RFU1RTKCk7Cit9CitgYGAKKworQXMgeW91IG1pZ2h0IGhhdmUgZ3Vlc3NlZCwgdGhpcyB0ZXN0
IGNoZWNrcyB0aGF0IGBQZW5Eb3duKClgIGlzIGNhbGxlZCBhdCBsZWFzdCBvbmNlLiBJZiB0aGUg
YHBhaW50ZXJgIG9iamVjdCBkaWRuJ3QgY2FsbCB0aGlzIG1ldGhvZCwgeW91ciB0ZXN0IHdpbGwg
ZmFpbCB3aXRoIGEgbWVzc2FnZSBsaWtlIHRoaXM6CisKK2BgYAorcGF0aC90by9teV90ZXN0LmNj
OjExOTogRmFpbHVyZQorQWN0dWFsIGZ1bmN0aW9uIGNhbGwgY291bnQgZG9lc24ndCBtYXRjaCB0
aGlzIGV4cGVjdGF0aW9uOgorQWN0dWFsbHk6IG5ldmVyIGNhbGxlZDsKK0V4cGVjdGVkOiBjYWxs
ZWQgYXQgbGVhc3Qgb25jZS4KK2BgYAorCisqKlRpcCAxOioqIElmIHlvdSBydW4gdGhlIHRlc3Qg
ZnJvbSBhbiBFbWFjcyBidWZmZXIsIHlvdSBjYW4gaGl0IGA8RW50ZXI+YCBvbiB0aGUgbGluZSBu
dW1iZXIgZGlzcGxheWVkIGluIHRoZSBlcnJvciBtZXNzYWdlIHRvIGp1bXAgcmlnaHQgdG8gdGhl
IGZhaWxlZCBleHBlY3RhdGlvbi4KKworKipUaXAgMjoqKiBJZiB5b3VyIG1vY2sgb2JqZWN0cyBh
cmUgbmV2ZXIgZGVsZXRlZCwgdGhlIGZpbmFsIHZlcmlmaWNhdGlvbiB3b24ndCBoYXBwZW4uIFRo
ZXJlZm9yZSBpdCdzIGEgZ29vZCBpZGVhIHRvIHVzZSBhIGhlYXAgbGVhayBjaGVja2VyIGluIHlv
dXIgdGVzdHMgd2hlbiB5b3UgYWxsb2NhdGUgbW9ja3Mgb24gdGhlIGhlYXAuCisKKyoqSW1wb3J0
YW50IG5vdGU6KiogR29vZ2xlIE1vY2sgcmVxdWlyZXMgZXhwZWN0YXRpb25zIHRvIGJlIHNldCAq
KmJlZm9yZSoqIHRoZSBtb2NrIGZ1bmN0aW9ucyBhcmUgY2FsbGVkLCBvdGhlcndpc2UgdGhlIGJl
aGF2aW9yIGlzICoqdW5kZWZpbmVkKiouIEluIHBhcnRpY3VsYXIsIHlvdSBtdXN0bid0IGludGVy
bGVhdmUgYEVYUEVDVF9DQUxMKClgcyBhbmQgY2FsbHMgdG8gdGhlIG1vY2sgZnVuY3Rpb25zLgor
CitUaGlzIG1lYW5zIGBFWFBFQ1RfQ0FMTCgpYCBzaG91bGQgYmUgcmVhZCBhcyBleHBlY3Rpbmcg
dGhhdCBhIGNhbGwgd2lsbCBvY2N1ciBfaW4gdGhlIGZ1dHVyZV8sIG5vdCB0aGF0IGEgY2FsbCBo
YXMgb2NjdXJyZWQuIFdoeSBkb2VzIEdvb2dsZSBNb2NrIHdvcmsgbGlrZSB0aGF0PyBXZWxsLCBz
cGVjaWZ5aW5nIHRoZSBleHBlY3RhdGlvbiBiZWZvcmVoYW5kIGFsbG93cyBHb29nbGUgTW9jayB0
byByZXBvcnQgYSB2aW9sYXRpb24gYXMgc29vbiBhcyBpdCBhcmlzZXMsIHdoZW4gdGhlIGNvbnRl
eHQgKHN0YWNrIHRyYWNlLCBldGMpIGlzIHN0aWxsIGF2YWlsYWJsZS4gVGhpcyBtYWtlcyBkZWJ1
Z2dpbmcgbXVjaCBlYXNpZXIuCisKK0FkbWl0dGVkbHksIHRoaXMgdGVzdCBpcyBjb250cml2ZWQg
YW5kIGRvZXNuJ3QgZG8gbXVjaC4gWW91IGNhbiBlYXNpbHkgYWNoaWV2ZSB0aGUgc2FtZSBlZmZl
Y3Qgd2l0aG91dCB1c2luZyBHb29nbGUgTW9jay4gSG93ZXZlciwgYXMgd2Ugc2hhbGwgcmV2ZWFs
IHNvb24sIEdvb2dsZSBNb2NrIGFsbG93cyB5b3UgdG8gZG8gX211Y2ggbW9yZV8gd2l0aCB0aGUg
bW9ja3MuCisKKyMjIFVzaW5nIEdvb2dsZSBNb2NrIHdpdGggQW55IFRlc3RpbmcgRnJhbWV3b3Jr
ICMjCitJZiB5b3Ugd2FudCB0byB1c2Ugc29tZXRoaW5nIG90aGVyIHRoYW4gR29vZ2xlIFRlc3Qg
KGUuZy4gW0NwcFVuaXRdKGh0dHA6Ly9hcHBzLnNvdXJjZWZvcmdlLm5ldC9tZWRpYXdpa2kvY3Bw
dW5pdC9pbmRleC5waHA/dGl0bGU9TWFpbl9QYWdlKSBvcgorW0N4eFRlc3RdKGh0dHA6Ly9jeHh0
ZXN0LnRpZ3Jpcy5vcmcvKSkgYXMgeW91ciB0ZXN0aW5nIGZyYW1ld29yaywganVzdCBjaGFuZ2Ug
dGhlIGBtYWluKClgIGZ1bmN0aW9uIGluIHRoZSBwcmV2aW91cyBzZWN0aW9uIHRvOgorYGBgCitp
bnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKKyAgLy8gVGhlIGZvbGxvd2luZyBsaW5l
IGNhdXNlcyBHb29nbGUgTW9jayB0byB0aHJvdyBhbiBleGNlcHRpb24gb24gZmFpbHVyZSwKKyAg
Ly8gd2hpY2ggd2lsbCBiZSBpbnRlcnByZXRlZCBieSB5b3VyIHRlc3RpbmcgZnJhbWV3b3JrIGFz
IGEgdGVzdCBmYWlsdXJlLgorICA6OnRlc3Rpbmc6OkdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVy
ZSkgPSB0cnVlOworICA6OnRlc3Rpbmc6OkluaXRHb29nbGVNb2NrKCZhcmdjLCBhcmd2KTsKKyAg
Li4uIHdoYXRldmVyIHlvdXIgdGVzdGluZyBmcmFtZXdvcmsgcmVxdWlyZXMgLi4uCit9CitgYGAK
KworVGhpcyBhcHByb2FjaCBoYXMgYSBjYXRjaDogaXQgbWFrZXMgR29vZ2xlIE1vY2sgdGhyb3cg
YW4gZXhjZXB0aW9uCitmcm9tIGEgbW9jayBvYmplY3QncyBkZXN0cnVjdG9yIHNvbWV0aW1lcy4g
IFdpdGggc29tZSBjb21waWxlcnMsIHRoaXMKK3NvbWV0aW1lcyBjYXVzZXMgdGhlIHRlc3QgcHJv
Z3JhbSB0byBjcmFzaC4gIFlvdSdsbCBzdGlsbCBiZSBhYmxlIHRvCitub3RpY2UgdGhhdCB0aGUg
dGVzdCBoYXMgZmFpbGVkLCBidXQgaXQncyBub3QgYSBncmFjZWZ1bCBmYWlsdXJlLgorCitBIGJl
dHRlciBzb2x1dGlvbiBpcyB0byB1c2UgR29vZ2xlIFRlc3QncworW2V2ZW50IGxpc3RlbmVyIEFQ
SV0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRlc3Qvd2lraS9WMV82X0FkdmFuY2Vk
R3VpZGUjRXh0ZW5kaW5nX0dvb2dsZV9UZXN0X2J5X0hhbmRsaW5nX1Rlc3RfRXZlbnRzKQordG8g
cmVwb3J0IGEgdGVzdCBmYWlsdXJlIHRvIHlvdXIgdGVzdGluZyBmcmFtZXdvcmsgcHJvcGVybHku
ICBZb3UnbGwgbmVlZCB0bworaW1wbGVtZW50IHRoZSBgT25UZXN0UGFydFJlc3VsdCgpYCBtZXRo
b2Qgb2YgdGhlIGV2ZW50IGxpc3RlbmVyIGludGVyZmFjZSwgYnV0IGl0CitzaG91bGQgYmUgc3Ry
YWlnaHRmb3J3YXJkLgorCitJZiB0aGlzIHR1cm5zIG91dCB0byBiZSB0b28gbXVjaCB3b3JrLCB3
ZSBzdWdnZXN0IHRoYXQgeW91IHN0aWNrIHdpdGgKK0dvb2dsZSBUZXN0LCB3aGljaCB3b3JrcyB3
aXRoIEdvb2dsZSBNb2NrIHNlYW1sZXNzbHkgKGluIGZhY3QsIGl0IGlzCit0ZWNobmljYWxseSBw
YXJ0IG9mIEdvb2dsZSBNb2NrLikuICBJZiB0aGVyZSBpcyBhIHJlYXNvbiB0aGF0IHlvdQorY2Fu
bm90IHVzZSBHb29nbGUgVGVzdCwgcGxlYXNlIGxldCB1cyBrbm93LgorCisjIFNldHRpbmcgRXhw
ZWN0YXRpb25zICMKK1RoZSBrZXkgdG8gdXNpbmcgYSBtb2NrIG9iamVjdCBzdWNjZXNzZnVsbHkg
aXMgdG8gc2V0IHRoZSBfcmlnaHQgZXhwZWN0YXRpb25zXyBvbiBpdC4gSWYgeW91IHNldCB0aGUg
ZXhwZWN0YXRpb25zIHRvbyBzdHJpY3QsIHlvdXIgdGVzdCB3aWxsIGZhaWwgYXMgdGhlIHJlc3Vs
dCBvZiB1bnJlbGF0ZWQgY2hhbmdlcy4gSWYgeW91IHNldCB0aGVtIHRvbyBsb29zZSwgYnVncyBj
YW4gc2xpcCB0aHJvdWdoLiBZb3Ugd2FudCB0byBkbyBpdCBqdXN0IHJpZ2h0IHN1Y2ggdGhhdCB5
b3VyIHRlc3QgY2FuIGNhdGNoIGV4YWN0bHkgdGhlIGtpbmQgb2YgYnVncyB5b3UgaW50ZW5kIGl0
IHRvIGNhdGNoLiBHb29nbGUgTW9jayBwcm92aWRlcyB0aGUgbmVjZXNzYXJ5IG1lYW5zIGZvciB5
b3UgdG8gZG8gaXQgImp1c3QgcmlnaHQuIgorCisjIyBHZW5lcmFsIFN5bnRheCAjIworSW4gR29v
Z2xlIE1vY2sgd2UgdXNlIHRoZSBgRVhQRUNUX0NBTEwoKWAgbWFjcm8gdG8gc2V0IGFuIGV4cGVj
dGF0aW9uIG9uIGEgbW9jayBtZXRob2QuIFRoZSBnZW5lcmFsIHN5bnRheCBpczoKKworYGBgCitF
WFBFQ1RfQ0FMTChtb2NrX29iamVjdCwgbWV0aG9kKG1hdGNoZXJzKSkKKyAgICAuVGltZXMoY2Fy
ZGluYWxpdHkpCisgICAgLldpbGxPbmNlKGFjdGlvbikKKyAgICAuV2lsbFJlcGVhdGVkbHkoYWN0
aW9uKTsKK2BgYAorCitUaGUgbWFjcm8gaGFzIHR3byBhcmd1bWVudHM6IGZpcnN0IHRoZSBtb2Nr
IG9iamVjdCwgYW5kIHRoZW4gdGhlIG1ldGhvZCBhbmQgaXRzIGFyZ3VtZW50cy4gTm90ZSB0aGF0
IHRoZSB0d28gYXJlIHNlcGFyYXRlZCBieSBhIGNvbW1hIChgLGApLCBub3QgYSBwZXJpb2QgKGAu
YCkuIChXaHkgdXNpbmcgYSBjb21tYT8gVGhlIGFuc3dlciBpcyB0aGF0IGl0IHdhcyBuZWNlc3Nh
cnkgZm9yIHRlY2huaWNhbCByZWFzb25zLikKKworVGhlIG1hY3JvIGNhbiBiZSBmb2xsb3dlZCBi
eSBzb21lIG9wdGlvbmFsIF9jbGF1c2VzXyB0aGF0IHByb3ZpZGUgbW9yZSBpbmZvcm1hdGlvbiBh
Ym91dCB0aGUgZXhwZWN0YXRpb24uIFdlJ2xsIGRpc2N1c3MgaG93IGVhY2ggY2xhdXNlIHdvcmtz
IGluIHRoZSBjb21pbmcgc2VjdGlvbnMuCisKK1RoaXMgc3ludGF4IGlzIGRlc2lnbmVkIHRvIG1h
a2UgYW4gZXhwZWN0YXRpb24gcmVhZCBsaWtlIEVuZ2xpc2guIEZvciBleGFtcGxlLCB5b3UgY2Fu
IHByb2JhYmx5IGd1ZXNzIHRoYXQKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6OlJldHVybjsuLi4K
K0VYUEVDVF9DQUxMKHR1cnRsZSwgR2V0WCgpKQorICAgIC5UaW1lcyg1KQorICAgIC5XaWxsT25j
ZShSZXR1cm4oMTAwKSkKKyAgICAuV2lsbE9uY2UoUmV0dXJuKDE1MCkpCisgICAgLldpbGxSZXBl
YXRlZGx5KFJldHVybigyMDApKTsKK2BgYAorCitzYXlzIHRoYXQgdGhlIGB0dXJ0bGVgIG9iamVj
dCdzIGBHZXRYKClgIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBmaXZlIHRpbWVzLCBpdCB3aWxsIHJl
dHVybiAxMDAgdGhlIGZpcnN0IHRpbWUsIDE1MCB0aGUgc2Vjb25kIHRpbWUsIGFuZCB0aGVuIDIw
MCBldmVyeSB0aW1lLiBTb21lIHBlb3BsZSBsaWtlIHRvIGNhbGwgdGhpcyBzdHlsZSBvZiBzeW50
YXggYSBEb21haW4tU3BlY2lmaWMgTGFuZ3VhZ2UgKERTTCkuCisKKyoqTm90ZToqKiBXaHkgZG8g
d2UgdXNlIGEgbWFjcm8gdG8gZG8gdGhpcz8gSXQgc2VydmVzIHR3byBwdXJwb3NlczogZmlyc3Qg
aXQgbWFrZXMgZXhwZWN0YXRpb25zIGVhc2lseSBpZGVudGlmaWFibGUgKGVpdGhlciBieSBgZ3Jl
cGAgb3IgYnkgYSBodW1hbiByZWFkZXIpLCBhbmQgc2Vjb25kIGl0IGFsbG93cyBHb29nbGUgTW9j
ayB0byBpbmNsdWRlIHRoZSBzb3VyY2UgZmlsZSBsb2NhdGlvbiBvZiBhIGZhaWxlZCBleHBlY3Rh
dGlvbiBpbiBtZXNzYWdlcywgbWFraW5nIGRlYnVnZ2luZyBlYXNpZXIuCisKKyMjIE1hdGNoZXJz
OiBXaGF0IEFyZ3VtZW50cyBEbyBXZSBFeHBlY3Q/ICMjCitXaGVuIGEgbW9jayBmdW5jdGlvbiB0
YWtlcyBhcmd1bWVudHMsIHdlIG11c3Qgc3BlY2lmeSB3aGF0IGFyZ3VtZW50cyB3ZSBhcmUgZXhw
ZWN0aW5nOyBmb3IgZXhhbXBsZToKKworYGBgCisvLyBFeHBlY3RzIHRoZSB0dXJ0bGUgdG8gbW92
ZSBmb3J3YXJkIGJ5IDEwMCB1bml0cy4KK0VYUEVDVF9DQUxMKHR1cnRsZSwgRm9yd2FyZCgxMDAp
KTsKK2BgYAorCitTb21ldGltZXMgeW91IG1heSBub3Qgd2FudCB0byBiZSB0b28gc3BlY2lmaWMg
KFJlbWVtYmVyIHRoYXQgdGFsayBhYm91dCB0ZXN0cyBiZWluZyB0b28gcmlnaWQ/IE92ZXIgc3Bl
Y2lmaWNhdGlvbiBsZWFkcyB0byBicml0dGxlIHRlc3RzIGFuZCBvYnNjdXJlcyB0aGUgaW50ZW50
IG9mIHRlc3RzLiBUaGVyZWZvcmUgd2UgZW5jb3VyYWdlIHlvdSB0byBzcGVjaWZ5IG9ubHkgd2hh
dCdzIG5lY2Vzc2FyeSAtIG5vIG1vcmUsIG5vIGxlc3MuKS4gSWYgeW91IGNhcmUgdG8gY2hlY2sg
dGhhdCBgRm9yd2FyZCgpYCB3aWxsIGJlIGNhbGxlZCBidXQgYXJlbid0IGludGVyZXN0ZWQgaW4g
aXRzIGFjdHVhbCBhcmd1bWVudCwgd3JpdGUgYF9gIGFzIHRoZSBhcmd1bWVudCwgd2hpY2ggbWVh
bnMgImFueXRoaW5nIGdvZXMiOgorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6XzsKKy4uLgorLy8g
RXhwZWN0cyB0aGUgdHVydGxlIHRvIG1vdmUgZm9yd2FyZC4KK0VYUEVDVF9DQUxMKHR1cnRsZSwg
Rm9yd2FyZChfKSk7CitgYGAKKworYF9gIGlzIGFuIGluc3RhbmNlIG9mIHdoYXQgd2UgY2FsbCAq
Km1hdGNoZXJzKiouIEEgbWF0Y2hlciBpcyBsaWtlIGEgcHJlZGljYXRlIGFuZCBjYW4gdGVzdCB3
aGV0aGVyIGFuIGFyZ3VtZW50IGlzIHdoYXQgd2UnZCBleHBlY3QuIFlvdSBjYW4gdXNlIGEgbWF0
Y2hlciBpbnNpZGUgYEVYUEVDVF9DQUxMKClgIHdoZXJldmVyIGEgZnVuY3Rpb24gYXJndW1lbnQg
aXMgZXhwZWN0ZWQuCisKK0EgbGlzdCBvZiBidWlsdC1pbiBtYXRjaGVycyBjYW4gYmUgZm91bmQg
aW4gdGhlIFtDaGVhdFNoZWV0XShWMV82X0NoZWF0U2hlZXQubWQpLiBGb3IgZXhhbXBsZSwgaGVy
ZSdzIHRoZSBgR2VgIChncmVhdGVyIHRoYW4gb3IgZXF1YWwpIG1hdGNoZXI6CisKK2BgYAordXNp
bmcgOjp0ZXN0aW5nOjpHZTsuLi4KK0VYUEVDVF9DQUxMKHR1cnRsZSwgRm9yd2FyZChHZSgxMDAp
KSk7CitgYGAKKworVGhpcyBjaGVja3MgdGhhdCB0aGUgdHVydGxlIHdpbGwgYmUgdG9sZCB0byBn
byBmb3J3YXJkIGJ5IGF0IGxlYXN0IDEwMCB1bml0cy4KKworIyMgQ2FyZGluYWxpdGllczogSG93
IE1hbnkgVGltZXMgV2lsbCBJdCBCZSBDYWxsZWQ/ICMjCitUaGUgZmlyc3QgY2xhdXNlIHdlIGNh
biBzcGVjaWZ5IGZvbGxvd2luZyBhbiBgRVhQRUNUX0NBTEwoKWAgaXMgYFRpbWVzKClgLiBXZSBj
YWxsIGl0cyBhcmd1bWVudCBhICoqY2FyZGluYWxpdHkqKiBhcyBpdCB0ZWxscyBfaG93IG1hbnkg
dGltZXNfIHRoZSBjYWxsIHNob3VsZCBvY2N1ci4gSXQgYWxsb3dzIHVzIHRvIHJlcGVhdCBhbiBl
eHBlY3RhdGlvbiBtYW55IHRpbWVzIHdpdGhvdXQgYWN0dWFsbHkgd3JpdGluZyBpdCBhcyBtYW55
IHRpbWVzLiBNb3JlIGltcG9ydGFudGx5LCBhIGNhcmRpbmFsaXR5IGNhbiBiZSAiZnV6enkiLCBq
dXN0IGxpa2UgYSBtYXRjaGVyIGNhbiBiZS4gVGhpcyBhbGxvd3MgYSB1c2VyIHRvIGV4cHJlc3Mg
dGhlIGludGVudCBvZiBhIHRlc3QgZXhhY3RseS4KKworQW4gaW50ZXJlc3Rpbmcgc3BlY2lhbCBj
YXNlIGlzIHdoZW4gd2Ugc2F5IGBUaW1lcygwKWAuIFlvdSBtYXkgaGF2ZSBndWVzc2VkIC0gaXQg
bWVhbnMgdGhhdCB0aGUgZnVuY3Rpb24gc2hvdWxkbid0IGJlIGNhbGxlZCB3aXRoIHRoZSBnaXZl
biBhcmd1bWVudHMgYXQgYWxsLCBhbmQgR29vZ2xlIE1vY2sgd2lsbCByZXBvcnQgYSBHb29nbGUg
VGVzdCBmYWlsdXJlIHdoZW5ldmVyIHRoZSBmdW5jdGlvbiBpcyAod3JvbmdmdWxseSkgY2FsbGVk
LgorCitXZSd2ZSBzZWVuIGBBdExlYXN0KG4pYCBhcyBhbiBleGFtcGxlIG9mIGZ1enp5IGNhcmRp
bmFsaXRpZXMgZWFybGllci4gRm9yIHRoZSBsaXN0IG9mIGJ1aWx0LWluIGNhcmRpbmFsaXRpZXMg
eW91IGNhbiB1c2UsIHNlZSB0aGUgW0NoZWF0U2hlZXRdKFYxXzZfQ2hlYXRTaGVldC5tZCkuCisK
K1RoZSBgVGltZXMoKWAgY2xhdXNlIGNhbiBiZSBvbWl0dGVkLiAqKklmIHlvdSBvbWl0IGBUaW1l
cygpYCwgR29vZ2xlIE1vY2sgd2lsbCBpbmZlciB0aGUgY2FyZGluYWxpdHkgZm9yIHlvdS4qKiBU
aGUgcnVsZXMgYXJlIGVhc3kgdG8gcmVtZW1iZXI6CisKKyAgKiBJZiAqKm5laXRoZXIqKiBgV2ls
bE9uY2UoKWAgKipub3IqKiBgV2lsbFJlcGVhdGVkbHkoKWAgaXMgaW4gdGhlIGBFWFBFQ1RfQ0FM
TCgpYCwgdGhlIGluZmVycmVkIGNhcmRpbmFsaXR5IGlzIGBUaW1lcygxKWAuCisgICogSWYgdGhl
cmUgYXJlIGBuIFdpbGxPbmNlKClgJ3MgYnV0ICoqbm8qKiBgV2lsbFJlcGVhdGVkbHkoKWAsIHdo
ZXJlIGBuYCA+PSAxLCB0aGUgY2FyZGluYWxpdHkgaXMgYFRpbWVzKG4pYC4KKyAgKiBJZiB0aGVy
ZSBhcmUgYG4gV2lsbE9uY2UoKWAncyBhbmQgKipvbmUqKiBgV2lsbFJlcGVhdGVkbHkoKWAsIHdo
ZXJlIGBuYCA+PSAwLCB0aGUgY2FyZGluYWxpdHkgaXMgYFRpbWVzKEF0TGVhc3QobikpYC4KKwor
KipRdWljayBxdWl6OioqIHdoYXQgZG8geW91IHRoaW5rIHdpbGwgaGFwcGVuIGlmIGEgZnVuY3Rp
b24gaXMgZXhwZWN0ZWQgdG8gYmUgY2FsbGVkIHR3aWNlIGJ1dCBhY3R1YWxseSBjYWxsZWQgZm91
ciB0aW1lcz8KKworIyMgQWN0aW9uczogV2hhdCBTaG91bGQgSXQgRG8/ICMjCitSZW1lbWJlciB0
aGF0IGEgbW9jayBvYmplY3QgZG9lc24ndCByZWFsbHkgaGF2ZSBhIHdvcmtpbmcgaW1wbGVtZW50
YXRpb24/IFdlIGFzIHVzZXJzIGhhdmUgdG8gdGVsbCBpdCB3aGF0IHRvIGRvIHdoZW4gYSBtZXRo
b2QgaXMgaW52b2tlZC4gVGhpcyBpcyBlYXN5IGluIEdvb2dsZSBNb2NrLgorCitGaXJzdCwgaWYg
dGhlIHJldHVybiB0eXBlIG9mIGEgbW9jayBmdW5jdGlvbiBpcyBhIGJ1aWx0LWluIHR5cGUgb3Ig
YSBwb2ludGVyLCB0aGUgZnVuY3Rpb24gaGFzIGEgKipkZWZhdWx0IGFjdGlvbioqIChhIGB2b2lk
YCBmdW5jdGlvbiB3aWxsIGp1c3QgcmV0dXJuLCBhIGBib29sYCBmdW5jdGlvbiB3aWxsIHJldHVy
biBgZmFsc2VgLCBhbmQgb3RoZXIgZnVuY3Rpb25zIHdpbGwgcmV0dXJuIDApLiBJZiB5b3UgZG9u
J3Qgc2F5IGFueXRoaW5nLCB0aGlzIGJlaGF2aW9yIHdpbGwgYmUgdXNlZC4KKworU2Vjb25kLCBp
ZiBhIG1vY2sgZnVuY3Rpb24gZG9lc24ndCBoYXZlIGEgZGVmYXVsdCBhY3Rpb24sIG9yIHRoZSBk
ZWZhdWx0IGFjdGlvbiBkb2Vzbid0IHN1aXQgeW91LCB5b3UgY2FuIHNwZWNpZnkgdGhlIGFjdGlv
biB0byBiZSB0YWtlbiBlYWNoIHRpbWUgdGhlIGV4cGVjdGF0aW9uIG1hdGNoZXMgdXNpbmcgYSBz
ZXJpZXMgb2YgYFdpbGxPbmNlKClgIGNsYXVzZXMgZm9sbG93ZWQgYnkgYW4gb3B0aW9uYWwgYFdp
bGxSZXBlYXRlZGx5KClgLiBGb3IgZXhhbXBsZSwKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6OlJl
dHVybjsuLi4KK0VYUEVDVF9DQUxMKHR1cnRsZSwgR2V0WCgpKQorICAgIC5XaWxsT25jZShSZXR1
cm4oMTAwKSkKKyAgICAuV2lsbE9uY2UoUmV0dXJuKDIwMCkpCisgICAgLldpbGxPbmNlKFJldHVy
bigzMDApKTsKK2BgYAorCitUaGlzIHNheXMgdGhhdCBgdHVydGxlLkdldFgoKWAgd2lsbCBiZSBj
YWxsZWQgX2V4YWN0bHkgdGhyZWUgdGltZXNfIChHb29nbGUgTW9jayBpbmZlcnJlZCB0aGlzIGZy
b20gaG93IG1hbnkgYFdpbGxPbmNlKClgIGNsYXVzZXMgd2UndmUgd3JpdHRlbiwgc2luY2Ugd2Ug
ZGlkbid0IGV4cGxpY2l0bHkgd3JpdGUgYFRpbWVzKClgKSwgYW5kIHdpbGwgcmV0dXJuIDEwMCwg
MjAwLCBhbmQgMzAwIHJlc3BlY3RpdmVseS4KKworYGBgCit1c2luZyA6OnRlc3Rpbmc6OlJldHVy
bjsuLi4KK0VYUEVDVF9DQUxMKHR1cnRsZSwgR2V0WSgpKQorICAgIC5XaWxsT25jZShSZXR1cm4o
MTAwKSkKKyAgICAuV2lsbE9uY2UoUmV0dXJuKDIwMCkpCisgICAgLldpbGxSZXBlYXRlZGx5KFJl
dHVybigzMDApKTsKK2BgYAorCitzYXlzIHRoYXQgYHR1cnRsZS5HZXRZKClgIHdpbGwgYmUgY2Fs
bGVkIF9hdCBsZWFzdCB0d2ljZV8gKEdvb2dsZSBNb2NrIGtub3dzIHRoaXMgYXMgd2UndmUgd3Jp
dHRlbiB0d28gYFdpbGxPbmNlKClgIGNsYXVzZXMgYW5kIGEgYFdpbGxSZXBlYXRlZGx5KClgIHdo
aWxlIGhhdmluZyBubyBleHBsaWNpdCBgVGltZXMoKWApLCB3aWxsIHJldHVybiAxMDAgdGhlIGZp
cnN0IHRpbWUsIDIwMCB0aGUgc2Vjb25kIHRpbWUsIGFuZCAzMDAgZnJvbSB0aGUgdGhpcmQgdGlt
ZSBvbi4KKworT2YgY291cnNlLCBpZiB5b3UgZXhwbGljaXRseSB3cml0ZSBhIGBUaW1lcygpYCwg
R29vZ2xlIE1vY2sgd2lsbCBub3QgdHJ5IHRvIGluZmVyIHRoZSBjYXJkaW5hbGl0eSBpdHNlbGYu
IFdoYXQgaWYgdGhlIG51bWJlciB5b3Ugc3BlY2lmaWVkIGlzIGxhcmdlciB0aGFuIHRoZXJlIGFy
ZSBgV2lsbE9uY2UoKWAgY2xhdXNlcz8gV2VsbCwgYWZ0ZXIgYWxsIGBXaWxsT25jZSgpYHMgYXJl
IHVzZWQgdXAsIEdvb2dsZSBNb2NrIHdpbGwgZG8gdGhlIF9kZWZhdWx0XyBhY3Rpb24gZm9yIHRo
ZSBmdW5jdGlvbiBldmVyeSB0aW1lICh1bmxlc3MsIG9mIGNvdXJzZSwgeW91IGhhdmUgYSBgV2ls
bFJlcGVhdGVkbHkoKWAuKS4KKworV2hhdCBjYW4gd2UgZG8gaW5zaWRlIGBXaWxsT25jZSgpYCBi
ZXNpZGVzIGBSZXR1cm4oKWA/IFlvdSBjYW4gcmV0dXJuIGEgcmVmZXJlbmNlIHVzaW5nIGBSZXR1
cm5SZWYodmFyaWFibGUpYCwgb3IgaW52b2tlIGEgcHJlLWRlZmluZWQgZnVuY3Rpb24sIGFtb25n
IFtvdGhlcnNdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGVtb2NrL3dpa2kvVjFfNl9D
aGVhdFNoZWV0I0FjdGlvbnMpLgorCisqKkltcG9ydGFudCBub3RlOioqIFRoZSBgRVhQRUNUX0NB
TEwoKWAgc3RhdGVtZW50IGV2YWx1YXRlcyB0aGUgYWN0aW9uIGNsYXVzZSBvbmx5IG9uY2UsIGV2
ZW4gdGhvdWdoIHRoZSBhY3Rpb24gbWF5IGJlIHBlcmZvcm1lZCBtYW55IHRpbWVzLiBUaGVyZWZv
cmUgeW91IG11c3QgYmUgY2FyZWZ1bCBhYm91dCBzaWRlIGVmZmVjdHMuIFRoZSBmb2xsb3dpbmcg
bWF5IG5vdCBkbyB3aGF0IHlvdSB3YW50OgorCitgYGAKK2ludCBuID0gMTAwOworRVhQRUNUX0NB
TEwodHVydGxlLCBHZXRYKCkpCisuVGltZXMoNCkKKy5XaWxsUmVwZWF0ZWRseShSZXR1cm4obisr
KSk7CitgYGAKKworSW5zdGVhZCBvZiByZXR1cm5pbmcgMTAwLCAxMDEsIDEwMiwgLi4uLCBjb25z
ZWN1dGl2ZWx5LCB0aGlzIG1vY2sgZnVuY3Rpb24gd2lsbCBhbHdheXMgcmV0dXJuIDEwMCBhcyBg
bisrYCBpcyBvbmx5IGV2YWx1YXRlZCBvbmNlLiBTaW1pbGFybHksIGBSZXR1cm4obmV3IEZvbylg
IHdpbGwgY3JlYXRlIGEgbmV3IGBGb29gIG9iamVjdCB3aGVuIHRoZSBgRVhQRUNUX0NBTEwoKWAg
aXMgZXhlY3V0ZWQsIGFuZCB3aWxsIHJldHVybiB0aGUgc2FtZSBwb2ludGVyIGV2ZXJ5IHRpbWUu
IElmIHlvdSB3YW50IHRoZSBzaWRlIGVmZmVjdCB0byBoYXBwZW4gZXZlcnkgdGltZSwgeW91IG5l
ZWQgdG8gZGVmaW5lIGEgY3VzdG9tIGFjdGlvbiwgd2hpY2ggd2UnbGwgdGVhY2ggaW4gdGhlIFtD
b29rQm9va10oVjFfNl9Db29rQm9vay5tZCkuCisKK1RpbWUgZm9yIGFub3RoZXIgcXVpeiEgV2hh
dCBkbyB5b3UgdGhpbmsgdGhlIGZvbGxvd2luZyBtZWFucz8KKworYGBgCit1c2luZyA6OnRlc3Rp
bmc6OlJldHVybjsuLi4KK0VYUEVDVF9DQUxMKHR1cnRsZSwgR2V0WSgpKQorLlRpbWVzKDQpCisu
V2lsbE9uY2UoUmV0dXJuKDEwMCkpOworYGBgCisKK09idmlvdXNseSBgdHVydGxlLkdldFkoKWAg
aXMgZXhwZWN0ZWQgdG8gYmUgY2FsbGVkIGZvdXIgdGltZXMuIEJ1dCBpZiB5b3UgdGhpbmsgaXQg
d2lsbCByZXR1cm4gMTAwIGV2ZXJ5IHRpbWUsIHRoaW5rIHR3aWNlISBSZW1lbWJlciB0aGF0IG9u
ZSBgV2lsbE9uY2UoKWAgY2xhdXNlIHdpbGwgYmUgY29uc3VtZWQgZWFjaCB0aW1lIHRoZSBmdW5j
dGlvbiBpcyBpbnZva2VkIGFuZCB0aGUgZGVmYXVsdCBhY3Rpb24gd2lsbCBiZSB0YWtlbiBhZnRl
cndhcmRzLiBTbyB0aGUgcmlnaHQgYW5zd2VyIGlzIHRoYXQgYHR1cnRsZS5HZXRZKClgIHdpbGwg
cmV0dXJuIDEwMCB0aGUgZmlyc3QgdGltZSwgYnV0ICoqcmV0dXJuIDAgZnJvbSB0aGUgc2Vjb25k
IHRpbWUgb24qKiwgYXMgcmV0dXJuaW5nIDAgaXMgdGhlIGRlZmF1bHQgYWN0aW9uIGZvciBgaW50
YCBmdW5jdGlvbnMuCisKKyMjIFVzaW5nIE11bHRpcGxlIEV4cGVjdGF0aW9ucyAjIworU28gZmFy
IHdlJ3ZlIG9ubHkgc2hvd24gZXhhbXBsZXMgd2hlcmUgeW91IGhhdmUgYSBzaW5nbGUgZXhwZWN0
YXRpb24uIE1vcmUgcmVhbGlzdGljYWxseSwgeW91J3JlIGdvaW5nIHRvIHNwZWNpZnkgZXhwZWN0
YXRpb25zIG9uIG11bHRpcGxlIG1vY2sgbWV0aG9kcywgd2hpY2ggbWF5IGJlIGZyb20gbXVsdGlw
bGUgbW9jayBvYmplY3RzLgorCitCeSBkZWZhdWx0LCB3aGVuIGEgbW9jayBtZXRob2QgaXMgaW52
b2tlZCwgR29vZ2xlIE1vY2sgd2lsbCBzZWFyY2ggdGhlIGV4cGVjdGF0aW9ucyBpbiB0aGUgKipy
ZXZlcnNlIG9yZGVyKiogdGhleSBhcmUgZGVmaW5lZCwgYW5kIHN0b3Agd2hlbiBhbiBhY3RpdmUg
ZXhwZWN0YXRpb24gdGhhdCBtYXRjaGVzIHRoZSBhcmd1bWVudHMgaXMgZm91bmQgKHlvdSBjYW4g
dGhpbmsgb2YgaXQgYXMgIm5ld2VyIHJ1bGVzIG92ZXJyaWRlIG9sZGVyIG9uZXMuIikuIElmIHRo
ZSBtYXRjaGluZyBleHBlY3RhdGlvbiBjYW5ub3QgdGFrZSBhbnkgbW9yZSBjYWxscywgeW91IHdp
bGwgZ2V0IGFuIHVwcGVyLWJvdW5kLXZpb2xhdGVkIGZhaWx1cmUuIEhlcmUncyBhbiBleGFtcGxl
OgorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6XzsuLi4KK0VYUEVDVF9DQUxMKHR1cnRsZSwgRm9y
d2FyZChfKSk7ICAvLyAjMQorRVhQRUNUX0NBTEwodHVydGxlLCBGb3J3YXJkKDEwKSkgIC8vICMy
CisgICAgLlRpbWVzKDIpOworYGBgCisKK0lmIGBGb3J3YXJkKDEwKWAgaXMgY2FsbGVkIHRocmVl
IHRpbWVzIGluIGEgcm93LCB0aGUgdGhpcmQgdGltZSBpdCB3aWxsIGJlIGFuIGVycm9yLCBhcyB0
aGUgbGFzdCBtYXRjaGluZyBleHBlY3RhdGlvbiAoIzIpIGhhcyBiZWVuIHNhdHVyYXRlZC4gSWYs
IGhvd2V2ZXIsIHRoZSB0aGlyZCBgRm9yd2FyZCgxMClgIGNhbGwgaXMgcmVwbGFjZWQgYnkgYEZv
cndhcmQoMjApYCwgdGhlbiBpdCB3b3VsZCBiZSBPSywgYXMgbm93ICMxIHdpbGwgYmUgdGhlIG1h
dGNoaW5nIGV4cGVjdGF0aW9uLgorCisqKlNpZGUgbm90ZToqKiBXaHkgZG9lcyBHb29nbGUgTW9j
ayBzZWFyY2ggZm9yIGEgbWF0Y2ggaW4gdGhlIF9yZXZlcnNlXyBvcmRlciBvZiB0aGUgZXhwZWN0
YXRpb25zPyBUaGUgcmVhc29uIGlzIHRoYXQgdGhpcyBhbGxvd3MgYSB1c2VyIHRvIHNldCB1cCB0
aGUgZGVmYXVsdCBleHBlY3RhdGlvbnMgaW4gYSBtb2NrIG9iamVjdCdzIGNvbnN0cnVjdG9yIG9y
IHRoZSB0ZXN0IGZpeHR1cmUncyBzZXQtdXAgcGhhc2UgYW5kIHRoZW4gY3VzdG9taXplIHRoZSBt
b2NrIGJ5IHdyaXRpbmcgbW9yZSBzcGVjaWZpYyBleHBlY3RhdGlvbnMgaW4gdGhlIHRlc3QgYm9k
eS4gU28sIGlmIHlvdSBoYXZlIHR3byBleHBlY3RhdGlvbnMgb24gdGhlIHNhbWUgbWV0aG9kLCB5
b3Ugd2FudCB0byBwdXQgdGhlIG9uZSB3aXRoIG1vcmUgc3BlY2lmaWMgbWF0Y2hlcnMgKiphZnRl
cioqIHRoZSBvdGhlciwgb3IgdGhlIG1vcmUgc3BlY2lmaWMgcnVsZSB3b3VsZCBiZSBzaGFkb3dl
ZCBieSB0aGUgbW9yZSBnZW5lcmFsIG9uZSB0aGF0IGNvbWVzIGFmdGVyIGl0LgorCisjIyBPcmRl
cmVkIHZzIFVub3JkZXJlZCBDYWxscyAjIworQnkgZGVmYXVsdCwgYW4gZXhwZWN0YXRpb24gY2Fu
IG1hdGNoIGEgY2FsbCBldmVuIHRob3VnaCBhbiBlYXJsaWVyIGV4cGVjdGF0aW9uIGhhc24ndCBi
ZWVuIHNhdGlzZmllZC4gSW4gb3RoZXIgd29yZHMsIHRoZSBjYWxscyBkb24ndCBoYXZlIHRvIG9j
Y3VyIGluIHRoZSBvcmRlciB0aGUgZXhwZWN0YXRpb25zIGFyZSBzcGVjaWZpZWQuCisKK1NvbWV0
aW1lcywgeW91IG1heSB3YW50IGFsbCB0aGUgZXhwZWN0ZWQgY2FsbHMgdG8gb2NjdXIgaW4gYSBz
dHJpY3Qgb3JkZXIuIFRvIHNheSB0aGlzIGluIEdvb2dsZSBNb2NrIGlzIGVhc3k6CisKK2BgYAor
dXNpbmcgOjp0ZXN0aW5nOjpJblNlcXVlbmNlOy4uLgorVEVTVChGb29UZXN0LCBEcmF3c0xpbmVT
ZWdtZW50KSB7CisgIC4uLgorICB7CisgICAgSW5TZXF1ZW5jZSBkdW1teTsKKworICAgIEVYUEVD
VF9DQUxMKHR1cnRsZSwgUGVuRG93bigpKTsKKyAgICBFWFBFQ1RfQ0FMTCh0dXJ0bGUsIEZvcndh
cmQoMTAwKSk7CisgICAgRVhQRUNUX0NBTEwodHVydGxlLCBQZW5VcCgpKTsKKyAgfQorICBGb28o
KTsKK30KK2BgYAorCitCeSBjcmVhdGluZyBhbiBvYmplY3Qgb2YgdHlwZSBgSW5TZXF1ZW5jZWAs
IGFsbCBleHBlY3RhdGlvbnMgaW4gaXRzIHNjb3BlIGFyZSBwdXQgaW50byBhIF9zZXF1ZW5jZV8g
YW5kIGhhdmUgdG8gb2NjdXIgX3NlcXVlbnRpYWxseV8uIFNpbmNlIHdlIGFyZSBqdXN0IHJlbHlp
bmcgb24gdGhlIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yIG9mIHRoaXMgb2JqZWN0IHRvIGRv
IHRoZSBhY3R1YWwgd29yaywgaXRzIG5hbWUgaXMgcmVhbGx5IGlycmVsZXZhbnQuCisKK0luIHRo
aXMgZXhhbXBsZSwgd2UgdGVzdCB0aGF0IGBGb28oKWAgY2FsbHMgdGhlIHRocmVlIGV4cGVjdGVk
IGZ1bmN0aW9ucyBpbiB0aGUgb3JkZXIgYXMgd3JpdHRlbi4gSWYgYSBjYWxsIGlzIG1hZGUgb3V0
LW9mLW9yZGVyLCBpdCB3aWxsIGJlIGFuIGVycm9yLgorCisoV2hhdCBpZiB5b3UgY2FyZSBhYm91
dCB0aGUgcmVsYXRpdmUgb3JkZXIgb2Ygc29tZSBvZiB0aGUgY2FsbHMsIGJ1dCBub3QgYWxsIG9m
IHRoZW0/IENhbiB5b3Ugc3BlY2lmeSBhbiBhcmJpdHJhcnkgcGFydGlhbCBvcmRlcj8gVGhlIGFu
c3dlciBpcyAuLi4geWVzISBJZiB5b3UgYXJlIGltcGF0aWVudCwgdGhlIGRldGFpbHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBbQ29va0Jvb2tdKFYxXzZfQ29va0Jvb2subWQpLikKKworIyMgQWxsIEV4
cGVjdGF0aW9ucyBBcmUgU3RpY2t5IChVbmxlc3MgU2FpZCBPdGhlcndpc2UpICMjCitOb3cgbGV0
J3MgZG8gYSBxdWljayBxdWl6IHRvIHNlZSBob3cgd2VsbCB5b3UgY2FuIHVzZSB0aGlzIG1vY2sg
c3R1ZmYgYWxyZWFkeS4gSG93IHdvdWxkIHlvdSB0ZXN0IHRoYXQgdGhlIHR1cnRsZSBpcyBhc2tl
ZCB0byBnbyB0byB0aGUgb3JpZ2luIF9leGFjdGx5IHR3aWNlXyAoeW91IHdhbnQgdG8gaWdub3Jl
IGFueSBvdGhlciBpbnN0cnVjdGlvbnMgaXQgcmVjZWl2ZXMpPworCitBZnRlciB5b3UndmUgY29t
ZSB1cCB3aXRoIHlvdXIgYW5zd2VyLCB0YWtlIGEgbG9vayBhdCBvdXJzIGFuZCBjb21wYXJlIG5v
dGVzIChzb2x2ZSBpdCB5b3Vyc2VsZiBmaXJzdCAtIGRvbid0IGNoZWF0ISk6CisKK2BgYAordXNp
bmcgOjp0ZXN0aW5nOjpfOy4uLgorRVhQRUNUX0NBTEwodHVydGxlLCBHb1RvKF8sIF8pKSAgLy8g
IzEKKyAgICAuVGltZXMoQW55TnVtYmVyKCkpOworRVhQRUNUX0NBTEwodHVydGxlLCBHb1RvKDAs
IDApKSAgLy8gIzIKKyAgICAuVGltZXMoMik7CitgYGAKKworU3VwcG9zZSBgdHVydGxlLkdvVG8o
MCwgMClgIGlzIGNhbGxlZCB0aHJlZSB0aW1lcy4gSW4gdGhlIHRoaXJkIHRpbWUsIEdvb2dsZSBN
b2NrIHdpbGwgc2VlIHRoYXQgdGhlIGFyZ3VtZW50cyBtYXRjaCBleHBlY3RhdGlvbiAjMiAocmVt
ZW1iZXIgdGhhdCB3ZSBhbHdheXMgcGljayB0aGUgbGFzdCBtYXRjaGluZyBleHBlY3RhdGlvbiku
IE5vdywgc2luY2Ugd2Ugc2FpZCB0aGF0IHRoZXJlIHNob3VsZCBiZSBvbmx5IHR3byBzdWNoIGNh
bGxzLCBHb29nbGUgTW9jayB3aWxsIHJlcG9ydCBhbiBlcnJvciBpbW1lZGlhdGVseS4gVGhpcyBp
cyBiYXNpY2FsbHkgd2hhdCB3ZSd2ZSB0b2xkIHlvdSBpbiB0aGUgIlVzaW5nIE11bHRpcGxlIEV4
cGVjdGF0aW9ucyIgc2VjdGlvbiBhYm92ZS4KKworVGhpcyBleGFtcGxlIHNob3dzIHRoYXQgKipl
eHBlY3RhdGlvbnMgaW4gR29vZ2xlIE1vY2sgYXJlICJzdGlja3kiIGJ5IGRlZmF1bHQqKiwgaW4g
dGhlIHNlbnNlIHRoYXQgdGhleSByZW1haW4gYWN0aXZlIGV2ZW4gYWZ0ZXIgd2UgaGF2ZSByZWFj
aGVkIHRoZWlyIGludm9jYXRpb24gdXBwZXIgYm91bmRzLiBUaGlzIGlzIGFuIGltcG9ydGFudCBy
dWxlIHRvIHJlbWVtYmVyLCBhcyBpdCBhZmZlY3RzIHRoZSBtZWFuaW5nIG9mIHRoZSBzcGVjLCBh
bmQgaXMgKipkaWZmZXJlbnQqKiB0byBob3cgaXQncyBkb25lIGluIG1hbnkgb3RoZXIgbW9ja2lu
ZyBmcmFtZXdvcmtzIChXaHknZCB3ZSBkbyB0aGF0PyBCZWNhdXNlIHdlIHRoaW5rIG91ciBydWxl
IG1ha2VzIHRoZSBjb21tb24gY2FzZXMgZWFzaWVyIHRvIGV4cHJlc3MgYW5kIHVuZGVyc3RhbmQu
KS4KKworU2ltcGxlPyBMZXQncyBzZWUgaWYgeW91J3ZlIHJlYWxseSB1bmRlcnN0b29kIGl0OiB3
aGF0IGRvZXMgdGhlIGZvbGxvd2luZyBjb2RlIHNheT8KKworYGBgCit1c2luZyA6OnRlc3Rpbmc6
OlJldHVybjsKKy4uLgorZm9yIChpbnQgaSA9IG47IGkgPiAwOyBpLS0pIHsKKyAgRVhQRUNUX0NB
TEwodHVydGxlLCBHZXRYKCkpCisgICAgICAuV2lsbE9uY2UoUmV0dXJuKDEwKmkpKTsKK30KK2Bg
YAorCitJZiB5b3UgdGhpbmsgaXQgc2F5cyB0aGF0IGB0dXJ0bGUuR2V0WCgpYCB3aWxsIGJlIGNh
bGxlZCBgbmAgdGltZXMgYW5kIHdpbGwgcmV0dXJuIDEwLCAyMCwgMzAsIC4uLiwgY29uc2VjdXRp
dmVseSwgdGhpbmsgdHdpY2UhIFRoZSBwcm9ibGVtIGlzIHRoYXQsIGFzIHdlIHNhaWQsIGV4cGVj
dGF0aW9ucyBhcmUgc3RpY2t5LiBTbywgdGhlIHNlY29uZCB0aW1lIGB0dXJ0bGUuR2V0WCgpYCBp
cyBjYWxsZWQsIHRoZSBsYXN0IChsYXRlc3QpIGBFWFBFQ1RfQ0FMTCgpYCBzdGF0ZW1lbnQgd2ls
bCBtYXRjaCwgYW5kIHdpbGwgaW1tZWRpYXRlbHkgbGVhZCB0byBhbiAidXBwZXIgYm91bmQgZXhj
ZWVkZWQiIGVycm9yIC0gdGhpcyBwaWVjZSBvZiBjb2RlIGlzIG5vdCB2ZXJ5IHVzZWZ1bCEKKwor
T25lIGNvcnJlY3Qgd2F5IG9mIHNheWluZyB0aGF0IGB0dXJ0bGUuR2V0WCgpYCB3aWxsIHJldHVy
biAxMCwgMjAsIDMwLCAuLi4sIGlzIHRvIGV4cGxpY2l0bHkgc2F5IHRoYXQgdGhlIGV4cGVjdGF0
aW9ucyBhcmUgX25vdF8gc3RpY2t5LiBJbiBvdGhlciB3b3JkcywgdGhleSBzaG91bGQgX3JldGly
ZV8gYXMgc29vbiBhcyB0aGV5IGFyZSBzYXR1cmF0ZWQ6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5n
OjpSZXR1cm47CisuLi4KK2ZvciAoaW50IGkgPSBuOyBpID4gMDsgaS0tKSB7CisgIEVYUEVDVF9D
QUxMKHR1cnRsZSwgR2V0WCgpKQorICAgIC5XaWxsT25jZShSZXR1cm4oMTAqaSkpCisgICAgLlJl
dGlyZXNPblNhdHVyYXRpb24oKTsKK30KK2BgYAorCitBbmQsIHRoZXJlJ3MgYSBiZXR0ZXIgd2F5
IHRvIGRvIGl0OiBpbiB0aGlzIGNhc2UsIHdlIGV4cGVjdCB0aGUgY2FsbHMgdG8gb2NjdXIgaW4g
YSBzcGVjaWZpYyBvcmRlciwgYW5kIHdlIGxpbmUgdXAgdGhlIGFjdGlvbnMgdG8gbWF0Y2ggdGhl
IG9yZGVyLiBTaW5jZSB0aGUgb3JkZXIgaXMgaW1wb3J0YW50IGhlcmUsIHdlIHNob3VsZCBtYWtl
IGl0IGV4cGxpY2l0IHVzaW5nIGEgc2VxdWVuY2U6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpJ
blNlcXVlbmNlOwordXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm47CisuLi4KK3sKKyAgSW5TZXF1ZW5j
ZSBzOworCisgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgeworICAgIEVYUEVDVF9DQUxM
KHR1cnRsZSwgR2V0WCgpKQorICAgICAgICAuV2lsbE9uY2UoUmV0dXJuKDEwKmkpKQorICAgICAg
ICAuUmV0aXJlc09uU2F0dXJhdGlvbigpOworICB9Cit9CitgYGAKKworQnkgdGhlIHdheSwgdGhl
IG90aGVyIHNpdHVhdGlvbiB3aGVyZSBhbiBleHBlY3RhdGlvbiBtYXkgX25vdF8gYmUgc3RpY2t5
IGlzIHdoZW4gaXQncyBpbiBhIHNlcXVlbmNlIC0gYXMgc29vbiBhcyBhbm90aGVyIGV4cGVjdGF0
aW9uIHRoYXQgY29tZXMgYWZ0ZXIgaXQgaW4gdGhlIHNlcXVlbmNlIGhhcyBiZWVuIHVzZWQsIGl0
IGF1dG9tYXRpY2FsbHkgcmV0aXJlcyAoYW5kIHdpbGwgbmV2ZXIgYmUgdXNlZCB0byBtYXRjaCBh
bnkgY2FsbCkuCisKKyMjIFVuaW50ZXJlc3RpbmcgQ2FsbHMgIyMKK0EgbW9jayBvYmplY3QgbWF5
IGhhdmUgbWFueSBtZXRob2RzLCBhbmQgbm90IGFsbCBvZiB0aGVtIGFyZSB0aGF0IGludGVyZXN0
aW5nLiBGb3IgZXhhbXBsZSwgaW4gc29tZSB0ZXN0cyB3ZSBtYXkgbm90IGNhcmUgYWJvdXQgaG93
IG1hbnkgdGltZXMgYEdldFgoKWAgYW5kIGBHZXRZKClgIGdldCBjYWxsZWQuCisKK0luIEdvb2ds
ZSBNb2NrLCBpZiB5b3UgYXJlIG5vdCBpbnRlcmVzdGVkIGluIGEgbWV0aG9kLCBqdXN0IGRvbid0
IHNheSBhbnl0aGluZyBhYm91dCBpdC4gSWYgYSBjYWxsIHRvIHRoaXMgbWV0aG9kIG9jY3Vycywg
eW91J2xsIHNlZSBhIHdhcm5pbmcgaW4gdGhlIHRlc3Qgb3V0cHV0LCBidXQgaXQgd29uJ3QgYmUg
YSBmYWlsdXJlLgorCisjIFdoYXQgTm93PyAjCitDb25ncmF0dWxhdGlvbnMhIFlvdSd2ZSBsZWFy
bmVkIGVub3VnaCBhYm91dCBHb29nbGUgTW9jayB0byBzdGFydCB1c2luZyBpdC4gTm93LCB5b3Ug
bWlnaHQgd2FudCB0byBqb2luIHRoZSBbZ29vZ2xlbW9ja10oaHR0cDovL2dyb3Vwcy5nb29nbGUu
Y29tL2dyb3VwL2dvb2dsZW1vY2spIGRpc2N1c3Npb24gZ3JvdXAgYW5kIGFjdHVhbGx5IHdyaXRl
IHNvbWUgdGVzdHMgdXNpbmcgR29vZ2xlIE1vY2sgLSBpdCB3aWxsIGJlIGZ1bi4gSGV5LCBpdCBt
YXkgZXZlbiBiZSBhZGRpY3RpdmUgLSB5b3UndmUgYmVlbiB3YXJuZWQuCisKK1RoZW4sIGlmIHlv
dSBmZWVsIGxpa2UgaW5jcmVhc2luZyB5b3VyIG1vY2sgcXVvdGllbnQsIHlvdSBzaG91bGQgbW92
ZSBvbiB0byB0aGUgW0Nvb2tCb29rXShWMV82X0Nvb2tCb29rLm1kKS4gWW91IGNhbiBsZWFybiBt
YW55IGFkdmFuY2VkIGZlYXR1cmVzIG9mIEdvb2dsZSBNb2NrIHRoZXJlIC0tIGFuZCBhZHZhbmNl
IHlvdXIgbGV2ZWwgb2YgZW5qb3ltZW50IGFuZCB0ZXN0aW5nIGJsaXNzLgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvdjFfNi9GcmVxdWVu
dGx5QXNrZWRRdWVzdGlvbnMubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL3YxXzYvRnJlcXVlbnRseUFz
a2VkUXVlc3Rpb25zLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3NDcxNWQyZTM3ZjY0MjU5M2E5OTdmYzRlMWFl
OTUxNjcyOGEzNmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL3YxXzYvRnJl
cXVlbnRseUFza2VkUXVlc3Rpb25zLm1kCkBAIC0wLDAgKzEsNjI4IEBACisKKworUGxlYXNlIHNl
bmQgeW91ciBxdWVzdGlvbnMgdG8gdGhlCitbZ29vZ2xlbW9ja10oaHR0cDovL2dyb3Vwcy5nb29n
bGUuY29tL2dyb3VwL2dvb2dsZW1vY2spIGRpc2N1c3Npb24KK2dyb3VwLiBJZiB5b3UgbmVlZCBo
ZWxwIHdpdGggY29tcGlsZXIgZXJyb3JzLCBtYWtlIHN1cmUgeW91IGhhdmUKK3RyaWVkIFtHb29n
bGUgTW9jayBEb2N0b3JdKCNIb3dfYW1fSV9zdXBwb3NlZF90b19tYWtlX3NlbnNlX29mX3RoZXNl
X2hvcnJpYmxlX3RlbXBsYXRlX2Vycm9yLm1kKSBmaXJzdC4KKworIyMgV2hlbiBJIGNhbGwgYSBt
ZXRob2Qgb24gbXkgbW9jayBvYmplY3QsIHRoZSBtZXRob2QgZm9yIHRoZSByZWFsIG9iamVjdCBp
cyBpbnZva2VkIGluc3RlYWQuICBXaGF0J3MgdGhlIHByb2JsZW0/ICMjCisKK0luIG9yZGVyIGZv
ciBhIG1ldGhvZCB0byBiZSBtb2NrZWQsIGl0IG11c3QgYmUgX3ZpcnR1YWxfLCB1bmxlc3MgeW91
IHVzZSB0aGUgW2hpZ2gtcGVyZiBkZXBlbmRlbmN5IGluamVjdGlvbiB0ZWNobmlxdWVdKGh0dHA6
Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGVtb2NrL3dpa2kvVjFfNl9Db29rQm9vayNNb2NraW5n
X05vbnZpcnR1YWxfTWV0aG9kcykuCisKKyMjIEkgd3JvdGUgc29tZSBtYXRjaGVycy4gIEFmdGVy
IEkgdXBncmFkZWQgdG8gYSBuZXcgdmVyc2lvbiBvZiBHb29nbGUgTW9jaywgdGhleSBubyBsb25n
ZXIgY29tcGlsZS4gIFdoYXQncyBnb2luZyBvbj8gIyMKKworQWZ0ZXIgdmVyc2lvbiAxLjQuMCBv
ZiBHb29nbGUgTW9jayB3YXMgcmVsZWFzZWQsIHdlIGhhZCBhbiBpZGVhIG9uIGhvdwordG8gbWFr
ZSBpdCBlYXNpZXIgdG8gd3JpdGUgbWF0Y2hlcnMgdGhhdCBjYW4gZ2VuZXJhdGUgaW5mb3JtYXRp
dmUKK21lc3NhZ2VzIGVmZmljaWVudGx5LiAgV2UgZXhwZXJpbWVudGVkIHdpdGggdGhpcyBpZGVh
IGFuZCBsaWtlZCB3aGF0Cit3ZSBzYXcuICBUaGVyZWZvcmUgd2UgZGVjaWRlZCB0byBpbXBsZW1l
bnQgaXQuCisKK1VuZm9ydHVuYXRlbHksIHRoaXMgbWVhbnMgdGhhdCBpZiB5b3UgaGF2ZSBkZWZp
bmVkIHlvdXIgb3duIG1hdGNoZXJzCitieSBpbXBsZW1lbnRpbmcgYE1hdGNoZXJJbnRlcmZhY2Vg
IG9yIHVzaW5nIGBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKClgLAoreW91ciBkZWZpbml0aW9ucyB3
aWxsIG5vIGxvbmdlciBjb21waWxlLiAgTWF0Y2hlcnMgZGVmaW5lZCB1c2luZyB0aGUKK2BNQVRD
SEVSKmAgZmFtaWx5IG9mIG1hY3JvcyBhcmUgbm90IGFmZmVjdGVkLgorCitTb3JyeSBmb3IgdGhl
IGhhc3NsZSBpZiB5b3VyIG1hdGNoZXJzIGFyZSBhZmZlY3RlZC4gIFdlIGJlbGlldmUgaXQncwor
aW4gZXZlcnlvbmUncyBsb25nLXRlcm0gaW50ZXJlc3QgdG8gbWFrZSB0aGlzIGNoYW5nZSBzb29u
ZXIgdGhhbgorbGF0ZXIuICBGb3J0dW5hdGVseSwgaXQncyB1c3VhbGx5IG5vdCBoYXJkIHRvIG1p
Z3JhdGUgYW4gZXhpc3RpbmcKK21hdGNoZXIgdG8gdGhlIG5ldyBBUEkuICBIZXJlJ3Mgd2hhdCB5
b3UgbmVlZCB0byBkbzoKKworSWYgeW91IHdyb3RlIHlvdXIgbWF0Y2hlciBsaWtlIHRoaXM6Citg
YGAKKy8vIE9sZCBtYXRjaGVyIGRlZmluaXRpb24gdGhhdCBkb2Vzbid0IHdvcmsgd2l0aCB0aGUg
bGF0ZXN0CisvLyBHb29nbGUgTW9jay4KK3VzaW5nIDo6dGVzdGluZzo6TWF0Y2hlckludGVyZmFj
ZTsKKy4uLgorY2xhc3MgTXlXb25kZXJmdWxNYXRjaGVyIDogcHVibGljIE1hdGNoZXJJbnRlcmZh
Y2U8TXlUeXBlPiB7CisgcHVibGljOgorICAuLi4KKyAgdmlydHVhbCBib29sIE1hdGNoZXMoTXlU
eXBlIHZhbHVlKSBjb25zdCB7CisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHZhbHVlIG1hdGNoZXMu
CisgICAgcmV0dXJuIHZhbHVlLkdldEZvbygpID4gNTsKKyAgfQorICAuLi4KK307CitgYGAKKwor
eW91J2xsIG5lZWQgdG8gY2hhbmdlIGl0IHRvOgorYGBgCisvLyBOZXcgbWF0Y2hlciBkZWZpbml0
aW9uIHRoYXQgd29ya3Mgd2l0aCB0aGUgbGF0ZXN0IEdvb2dsZSBNb2NrLgordXNpbmcgOjp0ZXN0
aW5nOjpNYXRjaGVySW50ZXJmYWNlOwordXNpbmcgOjp0ZXN0aW5nOjpNYXRjaFJlc3VsdExpc3Rl
bmVyOworLi4uCitjbGFzcyBNeVdvbmRlcmZ1bE1hdGNoZXIgOiBwdWJsaWMgTWF0Y2hlckludGVy
ZmFjZTxNeVR5cGU+IHsKKyBwdWJsaWM6CisgIC4uLgorICB2aXJ0dWFsIGJvb2wgTWF0Y2hBbmRF
eHBsYWluKE15VHlwZSB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRj
aFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgeworICAgIC8vIFJldHVybnMgdHJ1ZSBp
ZiB2YWx1ZSBtYXRjaGVzLgorICAgIHJldHVybiB2YWx1ZS5HZXRGb28oKSA+IDU7CisgIH0KKyAg
Li4uCit9OworYGBgCisoaS5lLiByZW5hbWUgYE1hdGNoZXMoKWAgdG8gYE1hdGNoQW5kRXhwbGFp
bigpYCBhbmQgZ2l2ZSBpdCBhIHNlY29uZAorYXJndW1lbnQgb2YgdHlwZSBgTWF0Y2hSZXN1bHRM
aXN0ZW5lcipgLikKKworSWYgeW91IHdlcmUgYWxzbyB1c2luZyBgRXhwbGFpbk1hdGNoUmVzdWx0
VG8oKWAgdG8gaW1wcm92ZSB0aGUgbWF0Y2hlcgorbWVzc2FnZToKK2BgYAorLy8gT2xkIG1hdGNo
ZXIgZGVmaW5pdGlvbiB0aGF0IGRvZXNuJ3Qgd29yayB3aXRoIHRoZSBsYXN0ZXN0CisvLyBHb29n
bGUgTW9jay4KK3VzaW5nIDo6dGVzdGluZzo6TWF0Y2hlckludGVyZmFjZTsKKy4uLgorY2xhc3Mg
TXlXb25kZXJmdWxNYXRjaGVyIDogcHVibGljIE1hdGNoZXJJbnRlcmZhY2U8TXlUeXBlPiB7Cisg
cHVibGljOgorICAuLi4KKyAgdmlydHVhbCBib29sIE1hdGNoZXMoTXlUeXBlIHZhbHVlKSBjb25z
dCB7CisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHZhbHVlIG1hdGNoZXMuCisgICAgcmV0dXJuIHZh
bHVlLkdldEZvbygpID4gNTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBFeHBsYWluTWF0Y2hSZXN1
bHRUbyhNeVR5cGUgdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6
OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKKyAgICAvLyBQcmludHMgc29tZSBoZWxwZnVsIGlu
Zm9ybWF0aW9uIHRvIG9zIHRvIGhlbHAKKyAgICAvLyBhIHVzZXIgdW5kZXJzdGFuZCB3aHkgdmFs
dWUgbWF0Y2hlcyAob3IgZG9lc24ndCBtYXRjaCkuCisgICAgKm9zIDw8ICJ0aGUgRm9vIHByb3Bl
cnR5IGlzICIgPDwgdmFsdWUuR2V0Rm9vKCk7CisgIH0KKyAgLi4uCit9OworYGBgCisKK3lvdSBz
aG91bGQgbW92ZSB0aGUgbG9naWMgb2YgYEV4cGxhaW5NYXRjaFJlc3VsdFRvKClgIGludG8KK2BN
YXRjaEFuZEV4cGxhaW4oKWAsIHVzaW5nIHRoZSBgTWF0Y2hSZXN1bHRMaXN0ZW5lcmAgYXJndW1l
bnQgd2hlcmUKK3RoZSBgOjpzdGQ6Om9zdHJlYW1gIHdhcyB1c2VkOgorYGBgCisvLyBOZXcgbWF0
Y2hlciBkZWZpbml0aW9uIHRoYXQgd29ya3Mgd2l0aCB0aGUgbGF0ZXN0IEdvb2dsZSBNb2NrLgor
dXNpbmcgOjp0ZXN0aW5nOjpNYXRjaGVySW50ZXJmYWNlOwordXNpbmcgOjp0ZXN0aW5nOjpNYXRj
aFJlc3VsdExpc3RlbmVyOworLi4uCitjbGFzcyBNeVdvbmRlcmZ1bE1hdGNoZXIgOiBwdWJsaWMg
TWF0Y2hlckludGVyZmFjZTxNeVR5cGU+IHsKKyBwdWJsaWM6CisgIC4uLgorICB2aXJ0dWFsIGJv
b2wgTWF0Y2hBbmRFeHBsYWluKE15VHlwZSB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgeworICAgIC8vIFJl
dHVybnMgdHJ1ZSBpZiB2YWx1ZSBtYXRjaGVzLgorICAgICpsaXN0ZW5lciA8PCAidGhlIEZvbyBw
cm9wZXJ0eSBpcyAiIDw8IHZhbHVlLkdldEZvbygpOworICAgIHJldHVybiB2YWx1ZS5HZXRGb28o
KSA+IDU7CisgIH0KKyAgLi4uCit9OworYGBgCisKK0lmIHlvdXIgbWF0Y2hlciBpcyBkZWZpbmVk
IHVzaW5nIGBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKClgOgorYGBgCisvLyBPbGQgbWF0Y2hlciBk
ZWZpbml0aW9uIHRoYXQgZG9lc24ndCB3b3JrIHdpdGggdGhlIGxhdGVzdAorLy8gR29vZ2xlIE1v
Y2suCit1c2luZyA6OnRlc3Rpbmc6Ok1ha2VQb2x5bW9ycGhpY01hdGNoZXI7CisuLi4KK2NsYXNz
IE15R3JlYXRNYXRjaGVyIHsKKyBwdWJsaWM6CisgIC4uLgorICBib29sIE1hdGNoZXMoTXlUeXBl
IHZhbHVlKSBjb25zdCB7CisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHZhbHVlIG1hdGNoZXMuCisg
ICAgcmV0dXJuIHZhbHVlLkdldEJhcigpIDwgNDI7CisgIH0KKyAgLi4uCit9OworLi4uIE1ha2VQ
b2x5bW9ycGhpY01hdGNoZXIoTXlHcmVhdE1hdGNoZXIoKSkgLi4uCitgYGAKKworeW91IHNob3Vs
ZCByZW5hbWUgdGhlIGBNYXRjaGVzKClgIG1ldGhvZCB0byBgTWF0Y2hBbmRFeHBsYWluKClgIGFu
ZAorYWRkIGEgYE1hdGNoUmVzdWx0TGlzdGVuZXIqYCBhcmd1bWVudCAodGhlIHNhbWUgYXMgd2hh
dCB5b3UgbmVlZCB0byBkbworZm9yIG1hdGNoZXJzIGRlZmluZWQgYnkgaW1wbGVtZW50aW5nIGBN
YXRjaGVySW50ZXJmYWNlYCk6CitgYGAKKy8vIE5ldyBtYXRjaGVyIGRlZmluaXRpb24gdGhhdCB3
b3JrcyB3aXRoIHRoZSBsYXRlc3QgR29vZ2xlIE1vY2suCit1c2luZyA6OnRlc3Rpbmc6Ok1ha2VQ
b2x5bW9ycGhpY01hdGNoZXI7Cit1c2luZyA6OnRlc3Rpbmc6Ok1hdGNoUmVzdWx0TGlzdGVuZXI7
CisuLi4KK2NsYXNzIE15R3JlYXRNYXRjaGVyIHsKKyBwdWJsaWM6CisgIC4uLgorICBib29sIE1h
dGNoQW5kRXhwbGFpbihNeVR5cGUgdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgIE1hdGNo
UmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBjb25zdCB7CisgICAgLy8gUmV0dXJucyB0cnVlIGlm
IHZhbHVlIG1hdGNoZXMuCisgICAgcmV0dXJuIHZhbHVlLkdldEJhcigpIDwgNDI7CisgIH0KKyAg
Li4uCit9OworLi4uIE1ha2VQb2x5bW9ycGhpY01hdGNoZXIoTXlHcmVhdE1hdGNoZXIoKSkgLi4u
CitgYGAKKworSWYgeW91ciBwb2x5bW9ycGhpYyBtYXRjaGVyIHVzZXMgYEV4cGxhaW5NYXRjaFJl
c3VsdFRvKClgIGZvciBiZXR0ZXIKK2ZhaWx1cmUgbWVzc2FnZXM6CitgYGAKKy8vIE9sZCBtYXRj
aGVyIGRlZmluaXRpb24gdGhhdCBkb2Vzbid0IHdvcmsgd2l0aCB0aGUgbGF0ZXN0CisvLyBHb29n
bGUgTW9jay4KK3VzaW5nIDo6dGVzdGluZzo6TWFrZVBvbHltb3JwaGljTWF0Y2hlcjsKKy4uLgor
Y2xhc3MgTXlHcmVhdE1hdGNoZXIgeworIHB1YmxpYzoKKyAgLi4uCisgIGJvb2wgTWF0Y2hlcyhN
eVR5cGUgdmFsdWUpIGNvbnN0IHsKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdmFsdWUgbWF0Y2hl
cy4KKyAgICByZXR1cm4gdmFsdWUuR2V0QmFyKCkgPCA0MjsKKyAgfQorICAuLi4KK307Cit2b2lk
IEV4cGxhaW5NYXRjaFJlc3VsdFRvKGNvbnN0IE15R3JlYXRNYXRjaGVyJiBtYXRjaGVyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBNeVR5cGUgdmFsdWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAvLyBQcmludHMgc29tZSBoZWxwZnVsIGlu
Zm9ybWF0aW9uIHRvIG9zIHRvIGhlbHAKKyAgLy8gYSB1c2VyIHVuZGVyc3RhbmQgd2h5IHZhbHVl
IG1hdGNoZXMgKG9yIGRvZXNuJ3QgbWF0Y2gpLgorICAqb3MgPDwgInRoZSBCYXIgcHJvcGVydHkg
aXMgIiA8PCB2YWx1ZS5HZXRCYXIoKTsKK30KKy4uLiBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKE15
R3JlYXRNYXRjaGVyKCkpIC4uLgorYGBgCisKK3lvdSdsbCBuZWVkIHRvIG1vdmUgdGhlIGxvZ2lj
IGluc2lkZSBgRXhwbGFpbk1hdGNoUmVzdWx0VG8oKWAgdG8KK2BNYXRjaEFuZEV4cGxhaW4oKWA6
CitgYGAKKy8vIE5ldyBtYXRjaGVyIGRlZmluaXRpb24gdGhhdCB3b3JrcyB3aXRoIHRoZSBsYXRl
c3QgR29vZ2xlIE1vY2suCit1c2luZyA6OnRlc3Rpbmc6Ok1ha2VQb2x5bW9ycGhpY01hdGNoZXI7
Cit1c2luZyA6OnRlc3Rpbmc6Ok1hdGNoUmVzdWx0TGlzdGVuZXI7CisuLi4KK2NsYXNzIE15R3Jl
YXRNYXRjaGVyIHsKKyBwdWJsaWM6CisgIC4uLgorICBib29sIE1hdGNoQW5kRXhwbGFpbihNeVR5
cGUgdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxp
c3RlbmVyKSBjb25zdCB7CisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHZhbHVlIG1hdGNoZXMuCisg
ICAgKmxpc3RlbmVyIDw8ICJ0aGUgQmFyIHByb3BlcnR5IGlzICIgPDwgdmFsdWUuR2V0QmFyKCk7
CisgICAgcmV0dXJuIHZhbHVlLkdldEJhcigpIDwgNDI7CisgIH0KKyAgLi4uCit9OworLi4uIE1h
a2VQb2x5bW9ycGhpY01hdGNoZXIoTXlHcmVhdE1hdGNoZXIoKSkgLi4uCitgYGAKKworRm9yIG1v
cmUgaW5mb3JtYXRpb24sIHlvdSBjYW4gcmVhZCB0aGVzZQorW3R3b10oaHR0cDovL2NvZGUuZ29v
Z2xlLmNvbS9wL2dvb2dsZW1vY2svd2lraS9WMV82X0Nvb2tCb29rI1dyaXRpbmdfTmV3X01vbm9t
b3JwaGljX01hdGNoZXJzKQorW3JlY2lwZXNdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29n
bGVtb2NrL3dpa2kvVjFfNl9Db29rQm9vayNXcml0aW5nX05ld19Qb2x5bW9ycGhpY19NYXRjaGVy
cykKK2Zyb20gdGhlIGNvb2tib29rLiAgQXMgYWx3YXlzLCB5b3UKK2FyZSB3ZWxjb21lIHRvIHBv
c3QgcXVlc3Rpb25zIG9uIGBnb29nbGVtb2NrQGdvb2dsZWdyb3Vwcy5jb21gIGlmIHlvdQorbmVl
ZCBhbnkgaGVscC4KKworIyMgV2hlbiB1c2luZyBHb29nbGUgTW9jaywgZG8gSSBoYXZlIHRvIHVz
ZSBHb29nbGUgVGVzdCBhcyB0aGUgdGVzdGluZyBmcmFtZXdvcms/ICBJIGhhdmUgbXkgZmF2b3Jp
dGUgdGVzdGluZyBmcmFtZXdvcmsgYW5kIGRvbid0IHdhbnQgdG8gc3dpdGNoLiAjIworCitHb29n
bGUgTW9jayB3b3JrcyBvdXQgb2YgdGhlIGJveCB3aXRoIEdvb2dsZSBUZXN0LiAgSG93ZXZlciwg
aXQncyBlYXN5Cit0byBjb25maWd1cmUgaXQgdG8gd29yayB3aXRoIGFueSB0ZXN0aW5nIGZyYW1l
d29yayBvZiB5b3VyIGNob2ljZS4KK1tIZXJlXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29v
Z2xlbW9jay93aWtpL1YxXzZfRm9yRHVtbWllcyNVc2luZ19Hb29nbGVfTW9ja193aXRoX0FueV9U
ZXN0aW5nX0ZyYW1ld29yaykgaXMgaG93LgorCisjIyBIb3cgYW0gSSBzdXBwb3NlZCB0byBtYWtl
IHNlbnNlIG9mIHRoZXNlIGhvcnJpYmxlIHRlbXBsYXRlIGVycm9ycz8gIyMKKworSWYgeW91IGFy
ZSBjb25mdXNlZCBieSB0aGUgY29tcGlsZXIgZXJyb3JzIGdjYyB0aHJldyBhdCB5b3UsCit0cnkg
Y29uc3VsdGluZyB0aGUgX0dvb2dsZSBNb2NrIERvY3Rvcl8gdG9vbCBmaXJzdC4gIFdoYXQgaXQg
ZG9lcyBpcyB0bworc2NhbiBzdGRpbiBmb3IgZ2NjIGVycm9yIG1lc3NhZ2VzLCBhbmQgc3BpdCBv
dXQgZGlhZ25vc2VzIG9uIHRoZQorcHJvYmxlbXMgKHdlIGNhbGwgdGhlbSBkaXNlYXNlcykgeW91
ciBjb2RlIGhhcy4KKworVG8gImluc3RhbGwiLCBydW4gY29tbWFuZDoKK2BgYAorYWxpYXMgZ21k
PSc8cGF0aCB0byBnb29nbGVtb2NrPi9zY3JpcHRzL2dtb2NrX2RvY3Rvci5weScKK2BgYAorCitU
byB1c2UgaXQsIGRvOgorYGBgCis8eW91ci1mYXZvcml0ZS1idWlsZC1jb21tYW5kPiA8eW91ci10
ZXN0PiAyPiYxIHwgZ21kCitgYGAKKworRm9yIGV4YW1wbGU6CitgYGAKK21ha2UgbXlfdGVzdCAy
PiYxIHwgZ21kCitgYGAKKworT3IgeW91IGNhbiBydW4gYGdtZGAgYW5kIGNvcHktbi1wYXN0ZSBn
Y2MncyBlcnJvciBtZXNzYWdlcyB0byBpdC4KKworIyMgQ2FuIEkgbW9jayBhIHZhcmlhZGljIGZ1
bmN0aW9uPyAjIworCitZb3UgY2Fubm90IG1vY2sgYSB2YXJpYWRpYyBmdW5jdGlvbiAoaS5lLiBh
IGZ1bmN0aW9uIHRha2luZyBlbGxpcHNpcworKGAuLi5gKSBhcmd1bWVudHMpIGRpcmVjdGx5IGlu
IEdvb2dsZSBNb2NrLgorCitUaGUgcHJvYmxlbSBpcyB0aGF0IGluIGdlbmVyYWwsIHRoZXJlIGlz
IF9ubyB3YXlfIGZvciBhIG1vY2sgb2JqZWN0IHRvCitrbm93IGhvdyBtYW55IGFyZ3VtZW50cyBh
cmUgcGFzc2VkIHRvIHRoZSB2YXJpYWRpYyBtZXRob2QsIGFuZCB3aGF0Cit0aGUgYXJndW1lbnRz
JyB0eXBlcyBhcmUuICBPbmx5IHRoZSBfYXV0aG9yIG9mIHRoZSBiYXNlIGNsYXNzXyBrbm93cwor
dGhlIHByb3RvY29sLCBhbmQgd2UgY2Fubm90IGxvb2sgaW50byBoaXMgaGVhZC4KKworVGhlcmVm
b3JlLCB0byBtb2NrIHN1Y2ggYSBmdW5jdGlvbiwgdGhlIF91c2VyXyBtdXN0IHRlYWNoIHRoZSBt
b2NrCitvYmplY3QgaG93IHRvIGZpZ3VyZSBvdXQgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgYW5k
IHRoZWlyIHR5cGVzLiAgT25lCit3YXkgdG8gZG8gaXQgaXMgdG8gcHJvdmlkZSBvdmVybG9hZGVk
IHZlcnNpb25zIG9mIHRoZSBmdW5jdGlvbi4KKworRWxsaXBzaXMgYXJndW1lbnRzIGFyZSBpbmhl
cml0ZWQgZnJvbSBDIGFuZCBub3QgcmVhbGx5IGEgQysrIGZlYXR1cmUuCitUaGV5IGFyZSB1bnNh
ZmUgdG8gdXNlIGFuZCBkb24ndCB3b3JrIHdpdGggYXJndW1lbnRzIHRoYXQgaGF2ZQorY29uc3Ry
dWN0b3JzIG9yIGRlc3RydWN0b3JzLiAgVGhlcmVmb3JlIHdlIHJlY29tbWVuZCB0byBhdm9pZCB0
aGVtIGluCitDKysgYXMgbXVjaCBhcyBwb3NzaWJsZS4KKworIyMgTVNWQyBnaXZlcyBtZSB3YXJu
aW5nIEM0MzAxIG9yIEM0MzczIHdoZW4gSSBkZWZpbmUgYSBtb2NrIG1ldGhvZCB3aXRoIGEgY29u
c3QgcGFyYW1ldGVyLiAgV2h5PyAjIworCitJZiB5b3UgY29tcGlsZSB0aGlzIHVzaW5nIE1pY3Jv
c29mdCBWaXN1YWwgQysrIDIwMDUgU1AxOgorYGBgCitjbGFzcyBGb28geworICAuLi4KKyAgdmly
dHVhbCB2b2lkIEJhcihjb25zdCBpbnQgaSkgPSAwOworfTsKKworY2xhc3MgTW9ja0ZvbyA6IHB1
YmxpYyBGb28geworICAuLi4KKyAgTU9DS19NRVRIT0QxKEJhciwgdm9pZChjb25zdCBpbnQgaSkp
OworfTsKK2BgYAorWW91IG1heSBnZXQgdGhlIGZvbGxvd2luZyB3YXJuaW5nOgorYGBgCit3YXJu
aW5nIEM0MzAxOiAnTW9ja0Zvbzo6QmFyJzogb3ZlcnJpZGluZyB2aXJ0dWFsIGZ1bmN0aW9uIG9u
bHkgZGlmZmVycyBmcm9tICdGb286OkJhcicgYnkgY29uc3Qvdm9sYXRpbGUgcXVhbGlmaWVyCitg
YGAKKworVGhpcyBpcyBhIE1TVkMgYnVnLiAgVGhlIHNhbWUgY29kZSBjb21waWxlcyBmaW5lIHdp
dGggZ2NjICxmb3IKK2V4YW1wbGUuICBJZiB5b3UgdXNlIFZpc3VhbCBDKysgMjAwOCBTUDEsIHlv
dSB3b3VsZCBnZXQgdGhlIHdhcm5pbmc6CitgYGAKK3dhcm5pbmcgQzQzNzM6ICdNb2NrRm9vOjpC
YXInOiB2aXJ0dWFsIGZ1bmN0aW9uIG92ZXJyaWRlcyAnRm9vOjpCYXInLCBwcmV2aW91cyB2ZXJz
aW9ucyBvZiB0aGUgY29tcGlsZXIgZGlkIG5vdCBvdmVycmlkZSB3aGVuIHBhcmFtZXRlcnMgb25s
eSBkaWZmZXJlZCBieSBjb25zdC92b2xhdGlsZSBxdWFsaWZpZXJzCitgYGAKKworSW4gQysrLCBp
ZiB5b3UgX2RlY2xhcmVfIGEgZnVuY3Rpb24gd2l0aCBhIGBjb25zdGAgcGFyYW1ldGVyLCB0aGUK
K2Bjb25zdGAgbW9kaWZpZXIgaXMgX2lnbm9yZWRfLiAgVGhlcmVmb3JlLCB0aGUgYEZvb2AgYmFz
ZSBjbGFzcyBhYm92ZQoraXMgZXF1aXZhbGVudCB0bzoKK2BgYAorY2xhc3MgRm9vIHsKKyAgLi4u
CisgIHZpcnR1YWwgdm9pZCBCYXIoaW50IGkpID0gMDsgIC8vIGludCBvciBjb25zdCBpbnQ/ICBN
YWtlcyBubyBkaWZmZXJlbmNlLgorfTsKK2BgYAorCitJbiBmYWN0LCB5b3UgY2FuIF9kZWNsYXJl
XyBCYXIoKSB3aXRoIGFuIGBpbnRgIHBhcmFtZXRlciwgYW5kIF9kZWZpbmVfCitpdCB3aXRoIGEg
YGNvbnN0IGludGAgcGFyYW1ldGVyLiAgVGhlIGNvbXBpbGVyIHdpbGwgc3RpbGwgbWF0Y2ggdGhl
bQordXAuCisKK1NpbmNlIG1ha2luZyBhIHBhcmFtZXRlciBgY29uc3RgIGlzIG1lYW5pbmdsZXNz
IGluIHRoZSBtZXRob2QKK19kZWNsYXJhdGlvbl8sIHdlIHJlY29tbWVuZCB0byByZW1vdmUgaXQg
aW4gYm90aCBgRm9vYCBhbmQgYE1vY2tGb29gLgorVGhhdCBzaG91bGQgd29ya2Fyb3VuZCB0aGUg
VkMgYnVnLgorCitOb3RlIHRoYXQgd2UgYXJlIHRhbGtpbmcgYWJvdXQgdGhlIF90b3AtbGV2ZWxf
IGBjb25zdGAgbW9kaWZpZXIgaGVyZS4KK0lmIHRoZSBmdW5jdGlvbiBwYXJhbWV0ZXIgaXMgcGFz
c2VkIGJ5IHBvaW50ZXIgb3IgcmVmZXJlbmNlLCBkZWNsYXJpbmcKK3RoZSBfcG9pbnRlZV8gb3Ig
X3JlZmVyZWVfIGFzIGBjb25zdGAgaXMgc3RpbGwgbWVhbmluZ2Z1bC4gIEZvcgorZXhhbXBsZSwg
dGhlIGZvbGxvd2luZyB0d28gZGVjbGFyYXRpb25zIGFyZSBfbm90XyBlcXVpdmFsZW50OgorYGBg
Cit2b2lkIEJhcihpbnQqIHApOyAgICAgICAgLy8gTmVpdGhlciBwIG5vciAqcCBpcyBjb25zdC4K
K3ZvaWQgQmFyKGNvbnN0IGludCogcCk7ICAvLyBwIGlzIG5vdCBjb25zdCwgYnV0ICpwIGlzLgor
YGBgCisKKyMjIEkgaGF2ZSBhIGh1Z2UgbW9jayBjbGFzcywgYW5kIE1pY3Jvc29mdCBWaXN1YWwg
QysrIHJ1bnMgb3V0IG9mIG1lbW9yeSB3aGVuIGNvbXBpbGluZyBpdC4gIFdoYXQgY2FuIEkgZG8/
ICMjCisKK1dlJ3ZlIG5vdGljZWQgdGhhdCB3aGVuIHRoZSBgL2NscmAgY29tcGlsZXIgZmxhZyBp
cyB1c2VkLCBWaXN1YWwgQysrCit1c2VzIDV+NiB0aW1lcyBhcyBtdWNoIG1lbW9yeSB3aGVuIGNv
bXBpbGluZyBhIG1vY2sgY2xhc3MuICBXZSBzdWdnZXN0Cit0byBhdm9pZCBgL2NscmAgd2hlbiBj
b21waWxpbmcgbmF0aXZlIEMrKyBtb2Nrcy4KKworIyMgSSBjYW4ndCBmaWd1cmUgb3V0IHdoeSBH
b29nbGUgTW9jayB0aGlua3MgbXkgZXhwZWN0YXRpb25zIGFyZSBub3Qgc2F0aXNmaWVkLiAgV2hh
dCBzaG91bGQgSSBkbz8gIyMKKworWW91IG1pZ2h0IHdhbnQgdG8gcnVuIHlvdXIgdGVzdCB3aXRo
CitgLS1nbW9ja192ZXJib3NlPWluZm9gLiAgVGhpcyBmbGFnIGxldHMgR29vZ2xlIE1vY2sgcHJp
bnQgYSB0cmFjZQorb2YgZXZlcnkgbW9jayBmdW5jdGlvbiBjYWxsIGl0IHJlY2VpdmVzLiAgQnkg
c3R1ZHlpbmcgdGhlIHRyYWNlLAoreW91J2xsIGdhaW4gaW5zaWdodHMgb24gd2h5IHRoZSBleHBl
Y3RhdGlvbnMgeW91IHNldCBhcmUgbm90IG1ldC4KKworIyMgSG93IGNhbiBJIGFzc2VydCB0aGF0
IGEgZnVuY3Rpb24gaXMgTkVWRVIgY2FsbGVkPyAjIworCitgYGAKK0VYUEVDVF9DQUxMKGZvbywg
QmFyKF8pKQorICAgIC5UaW1lcygwKTsKK2BgYAorCisjIyBJIGhhdmUgYSBmYWlsZWQgdGVzdCB3
aGVyZSBHb29nbGUgTW9jayB0ZWxscyBtZSBUV0lDRSB0aGF0IGEgcGFydGljdWxhciBleHBlY3Rh
dGlvbiBpcyBub3Qgc2F0aXNmaWVkLiAgSXNuJ3QgdGhpcyByZWR1bmRhbnQ/ICMjCisKK1doZW4g
R29vZ2xlIE1vY2sgZGV0ZWN0cyBhIGZhaWx1cmUsIGl0IHByaW50cyByZWxldmFudCBpbmZvcm1h
dGlvbgorKHRoZSBtb2NrIGZ1bmN0aW9uIGFyZ3VtZW50cywgdGhlIHN0YXRlIG9mIHJlbGV2YW50
IGV4cGVjdGF0aW9ucywgYW5kCitldGMpIHRvIGhlbHAgdGhlIHVzZXIgZGVidWcuICBJZiBhbm90
aGVyIGZhaWx1cmUgaXMgZGV0ZWN0ZWQsIEdvb2dsZQorTW9jayB3aWxsIGRvIHRoZSBzYW1lLCBp
bmNsdWRpbmcgcHJpbnRpbmcgdGhlIHN0YXRlIG9mIHJlbGV2YW50CitleHBlY3RhdGlvbnMuCisK
K1NvbWV0aW1lcyBhbiBleHBlY3RhdGlvbidzIHN0YXRlIGRpZG4ndCBjaGFuZ2UgYmV0d2VlbiB0
d28gZmFpbHVyZXMsCithbmQgeW91J2xsIHNlZSB0aGUgc2FtZSBkZXNjcmlwdGlvbiBvZiB0aGUg
c3RhdGUgdHdpY2UuICBUaGV5IGFyZQoraG93ZXZlciBfbm90XyByZWR1bmRhbnQsIGFzIHRoZXkg
cmVmZXIgdG8gX2RpZmZlcmVudCBwb2ludHMgaW4gdGltZV8uCitUaGUgZmFjdCB0aGV5IGFyZSB0
aGUgc2FtZSBfaXNfIGludGVyZXN0aW5nIGluZm9ybWF0aW9uLgorCisjIyBJIGdldCBhIGhlYXAg
Y2hlY2sgZmFpbHVyZSB3aGVuIHVzaW5nIGEgbW9jayBvYmplY3QsIGJ1dCB1c2luZyBhIHJlYWwg
b2JqZWN0IGlzIGZpbmUuICBXaGF0IGNhbiBiZSB3cm9uZz8gIyMKKworRG9lcyB0aGUgY2xhc3Mg
KGhvcGVmdWxseSBhIHB1cmUgaW50ZXJmYWNlKSB5b3UgYXJlIG1vY2tpbmcgaGF2ZSBhCit2aXJ0
dWFsIGRlc3RydWN0b3I/CisKK1doZW5ldmVyIHlvdSBkZXJpdmUgZnJvbSBhIGJhc2UgY2xhc3Ms
IG1ha2Ugc3VyZSBpdHMgZGVzdHJ1Y3RvciBpcwordmlydHVhbC4gIE90aGVyd2lzZSBCYWQgVGhp
bmdzIHdpbGwgaGFwcGVuLiAgQ29uc2lkZXIgdGhlIGZvbGxvd2luZworY29kZToKKworYGBgCitj
bGFzcyBCYXNlIHsKKyBwdWJsaWM6CisgIC8vIE5vdCB2aXJ0dWFsLCBidXQgc2hvdWxkIGJlLgor
ICB+QmFzZSgpIHsgLi4uIH0KKyAgLi4uCit9OworCitjbGFzcyBEZXJpdmVkIDogcHVibGljIEJh
c2UgeworIHB1YmxpYzoKKyAgLi4uCisgcHJpdmF0ZToKKyAgc3RkOjpzdHJpbmcgdmFsdWVfOwor
fTsKKworLi4uCisgIEJhc2UqIHAgPSBuZXcgRGVyaXZlZDsKKyAgLi4uCisgIGRlbGV0ZSBwOyAg
Ly8gU3VycHJpc2UhIH5CYXNlKCkgd2lsbCBiZSBjYWxsZWQsIGJ1dCB+RGVyaXZlZCgpIHdpbGwg
bm90CisgICAgICAgICAgICAgLy8gLSB2YWx1ZV8gaXMgbGVha2VkLgorYGBgCisKK0J5IGNoYW5n
aW5nIGB+QmFzZSgpYCB0byB2aXJ0dWFsLCBgfkRlcml2ZWQoKWAgd2lsbCBiZSBjb3JyZWN0bHkK
K2NhbGxlZCB3aGVuIGBkZWxldGUgcGAgaXMgZXhlY3V0ZWQsIGFuZCB0aGUgaGVhcCBjaGVja2Vy
Cit3aWxsIGJlIGhhcHB5LgorCisjIyBUaGUgIm5ld2VyIGV4cGVjdGF0aW9ucyBvdmVycmlkZSBv
bGRlciBvbmVzIiBydWxlIG1ha2VzIHdyaXRpbmcgZXhwZWN0YXRpb25zIGF3a3dhcmQuICBXaHkg
ZG9lcyBHb29nbGUgTW9jayBkbyB0aGF0PyAjIworCitXaGVuIHBlb3BsZSBjb21wbGFpbiBhYm91
dCB0aGlzLCBvZnRlbiB0aGV5IGFyZSByZWZlcnJpbmcgdG8gY29kZSBsaWtlOgorCitgYGAKKy8v
IGZvby5CYXIoKSBzaG91bGQgYmUgY2FsbGVkIHR3aWNlLCByZXR1cm4gMSB0aGUgZmlyc3QgdGlt
ZSwgYW5kIHJldHVybgorLy8gMiB0aGUgc2Vjb25kIHRpbWUuICBIb3dldmVyLCBJIGhhdmUgdG8g
d3JpdGUgdGhlIGV4cGVjdGF0aW9ucyBpbiB0aGUKKy8vIHJldmVyc2Ugb3JkZXIuICBUaGlzIHN1
Y2tzIGJpZyB0aW1lISEhCitFWFBFQ1RfQ0FMTChmb28sIEJhcigpKQorICAgIC5XaWxsT25jZShS
ZXR1cm4oMikpCisgICAgLlJldGlyZXNPblNhdHVyYXRpb24oKTsKK0VYUEVDVF9DQUxMKGZvbywg
QmFyKCkpCisgICAgLldpbGxPbmNlKFJldHVybigxKSkKKyAgICAuUmV0aXJlc09uU2F0dXJhdGlv
bigpOworYGBgCisKK1RoZSBwcm9ibGVtIGlzIHRoYXQgdGhleSBkaWRuJ3QgcGljayB0aGUgKipi
ZXN0Kiogd2F5IHRvIGV4cHJlc3MgdGhlIHRlc3QncworaW50ZW50LgorCitCeSBkZWZhdWx0LCBl
eHBlY3RhdGlvbnMgZG9uJ3QgaGF2ZSB0byBiZSBtYXRjaGVkIGluIF9hbnlfIHBhcnRpY3VsYXIK
K29yZGVyLiAgSWYgeW91IHdhbnQgdGhlbSB0byBtYXRjaCBpbiBhIGNlcnRhaW4gb3JkZXIsIHlv
dSBuZWVkIHRvIGJlCitleHBsaWNpdC4gIFRoaXMgaXMgR29vZ2xlIE1vY2sncyAoYW5kIGpNb2Nr
J3MpIGZ1bmRhbWVudGFsIHBoaWxvc29waHk6IGl0J3MKK2Vhc3kgdG8gYWNjaWRlbnRhbGx5IG92
ZXItc3BlY2lmeSB5b3VyIHRlc3RzLCBhbmQgd2Ugd2FudCB0byBtYWtlIGl0CitoYXJkZXIgdG8g
ZG8gc28uCisKK1RoZXJlIGFyZSB0d28gYmV0dGVyIHdheXMgdG8gd3JpdGUgdGhlIHRlc3Qgc3Bl
Yy4gIFlvdSBjb3VsZCBlaXRoZXIKK3B1dCB0aGUgZXhwZWN0YXRpb25zIGluIHNlcXVlbmNlOgor
CitgYGAKKy8vIGZvby5CYXIoKSBzaG91bGQgYmUgY2FsbGVkIHR3aWNlLCByZXR1cm4gMSB0aGUg
Zmlyc3QgdGltZSwgYW5kIHJldHVybgorLy8gMiB0aGUgc2Vjb25kIHRpbWUuICBVc2luZyBhIHNl
cXVlbmNlLCB3ZSBjYW4gd3JpdGUgdGhlIGV4cGVjdGF0aW9ucworLy8gaW4gdGhlaXIgbmF0dXJh
bCBvcmRlci4KK3sKKyAgSW5TZXF1ZW5jZSBzOworICBFWFBFQ1RfQ0FMTChmb28sIEJhcigpKQor
ICAgICAgLldpbGxPbmNlKFJldHVybigxKSkKKyAgICAgIC5SZXRpcmVzT25TYXR1cmF0aW9uKCk7
CisgIEVYUEVDVF9DQUxMKGZvbywgQmFyKCkpCisgICAgICAuV2lsbE9uY2UoUmV0dXJuKDIpKQor
ICAgICAgLlJldGlyZXNPblNhdHVyYXRpb24oKTsKK30KK2BgYAorCitvciB5b3UgY2FuIHB1dCB0
aGUgc2VxdWVuY2Ugb2YgYWN0aW9ucyBpbiB0aGUgc2FtZSBleHBlY3RhdGlvbjoKKworYGBgCisv
LyBmb28uQmFyKCkgc2hvdWxkIGJlIGNhbGxlZCB0d2ljZSwgcmV0dXJuIDEgdGhlIGZpcnN0IHRp
bWUsIGFuZCByZXR1cm4KKy8vIDIgdGhlIHNlY29uZCB0aW1lLgorRVhQRUNUX0NBTEwoZm9vLCBC
YXIoKSkKKyAgICAuV2lsbE9uY2UoUmV0dXJuKDEpKQorICAgIC5XaWxsT25jZShSZXR1cm4oMikp
CisgICAgLlJldGlyZXNPblNhdHVyYXRpb24oKTsKK2BgYAorCitCYWNrIHRvIHRoZSBvcmlnaW5h
bCBxdWVzdGlvbnM6IHdoeSBkb2VzIEdvb2dsZSBNb2NrIHNlYXJjaCB0aGUKK2V4cGVjdGF0aW9u
cyAoYW5kIGBPTl9DQUxMYHMpIGZyb20gYmFjayB0byBmcm9udD8gIEJlY2F1c2UgdGhpcworYWxs
b3dzIGEgdXNlciB0byBzZXQgdXAgYSBtb2NrJ3MgYmVoYXZpb3IgZm9yIHRoZSBjb21tb24gY2Fz
ZSBlYXJseQorKGUuZy4gaW4gdGhlIG1vY2sncyBjb25zdHJ1Y3RvciBvciB0aGUgdGVzdCBmaXh0
dXJlJ3Mgc2V0LXVwIHBoYXNlKQorYW5kIGN1c3RvbWl6ZSBpdCB3aXRoIG1vcmUgc3BlY2lmaWMg
cnVsZXMgbGF0ZXIuICBJZiBHb29nbGUgTW9jaworc2VhcmNoZXMgZnJvbSBmcm9udCB0byBiYWNr
LCB0aGlzIHZlcnkgdXNlZnVsIHBhdHRlcm4gd29uJ3QgYmUKK3Bvc3NpYmxlLgorCisjIyBHb29n
bGUgTW9jayBwcmludHMgYSB3YXJuaW5nIHdoZW4gYSBmdW5jdGlvbiB3aXRob3V0IEVYUEVDVFxf
Q0FMTCBpcyBjYWxsZWQsIGV2ZW4gaWYgSSBoYXZlIHNldCBpdHMgYmVoYXZpb3IgdXNpbmcgT05c
X0NBTEwuICBXb3VsZCBpdCBiZSByZWFzb25hYmxlIG5vdCB0byBzaG93IHRoZSB3YXJuaW5nIGlu
IHRoaXMgY2FzZT8gIyMKKworV2hlbiBjaG9vc2luZyBiZXR3ZWVuIGJlaW5nIG5lYXQgYW5kIGJl
aW5nIHNhZmUsIHdlIGxlYW4gdG93YXJkIHRoZQorbGF0dGVyLiAgU28gdGhlIGFuc3dlciBpcyB0
aGF0IHdlIHRoaW5rIGl0J3MgYmV0dGVyIHRvIHNob3cgdGhlCit3YXJuaW5nLgorCitPZnRlbiBw
ZW9wbGUgd3JpdGUgYE9OX0NBTExgcyBpbiB0aGUgbW9jayBvYmplY3QncworY29uc3RydWN0b3Ig
b3IgYFNldFVwKClgLCBhcyB0aGUgZGVmYXVsdCBiZWhhdmlvciByYXJlbHkgY2hhbmdlcyBmcm9t
Cit0ZXN0IHRvIHRlc3QuICBUaGVuIGluIHRoZSB0ZXN0IGJvZHkgdGhleSBzZXQgdGhlIGV4cGVj
dGF0aW9ucywgd2hpY2gKK2FyZSBvZnRlbiBkaWZmZXJlbnQgZm9yIGVhY2ggdGVzdC4gIEhhdmlu
ZyBhbiBgT05fQ0FMTGAgaW4gdGhlIHNldC11cAorcGFydCBvZiBhIHRlc3QgZG9lc24ndCBtZWFu
IHRoYXQgdGhlIGNhbGxzIGFyZSBleHBlY3RlZC4gIElmIHRoZXJlJ3MKK25vIGBFWFBFQ1RfQ0FM
TGAgYW5kIHRoZSBtZXRob2QgaXMgY2FsbGVkLCBpdCdzIHBvc3NpYmx5IGFuIGVycm9yLiAgSWYK
K3dlIHF1aWV0bHkgbGV0IHRoZSBjYWxsIGdvIHRocm91Z2ggd2l0aG91dCBub3RpZnlpbmcgdGhl
IHVzZXIsIGJ1Z3MKK21heSBjcmVlcCBpbiB1bm5vdGljZWQuCisKK0lmLCBob3dldmVyLCB5b3Ug
YXJlIHN1cmUgdGhhdCB0aGUgY2FsbHMgYXJlIE9LLCB5b3UgY2FuIHdyaXRlCisKK2BgYAorRVhQ
RUNUX0NBTEwoZm9vLCBCYXIoXykpCisgICAgLldpbGxSZXBlYXRlZGx5KC4uLik7CitgYGAKKwor
aW5zdGVhZCBvZgorCitgYGAKK09OX0NBTEwoZm9vLCBCYXIoXykpCisgICAgLldpbGxCeURlZmF1
bHQoLi4uKTsKK2BgYAorCitUaGlzIHRlbGxzIEdvb2dsZSBNb2NrIHRoYXQgeW91IGRvIGV4cGVj
dCB0aGUgY2FsbHMgYW5kIG5vIHdhcm5pbmcgc2hvdWxkIGJlCitwcmludGVkLgorCitBbHNvLCB5
b3UgY2FuIGNvbnRyb2wgdGhlIHZlcmJvc2l0eSB1c2luZyB0aGUgYC0tZ21vY2tfdmVyYm9zZWAg
ZmxhZy4KK0lmIHlvdSBmaW5kIHRoZSBvdXRwdXQgdG9vIG5vaXN5IHdoZW4gZGVidWdnaW5nLCBq
dXN0IGNob29zZSBhIGxlc3MKK3ZlcmJvc2UgbGV2ZWwuCisKKyMjIEhvdyBjYW4gSSBkZWxldGUg
dGhlIG1vY2sgZnVuY3Rpb24ncyBhcmd1bWVudCBpbiBhbiBhY3Rpb24/ICMjCisKK0lmIHlvdSBm
aW5kIHlvdXJzZWxmIG5lZWRpbmcgdG8gcGVyZm9ybSBzb21lIGFjdGlvbiB0aGF0J3Mgbm90Citz
dXBwb3J0ZWQgYnkgR29vZ2xlIE1vY2sgZGlyZWN0bHksIHJlbWVtYmVyIHRoYXQgeW91IGNhbiBk
ZWZpbmUgeW91ciBvd24KK2FjdGlvbnMgdXNpbmcKK1tNYWtlQWN0aW9uKCldKGh0dHA6Ly9jb2Rl
Lmdvb2dsZS5jb20vcC9nb29nbGVtb2NrL3dpa2kvVjFfNl9Db29rQm9vayNXcml0aW5nX05ld19B
Y3Rpb25zKSBvcgorW01ha2VQb2x5bW9ycGhpY0FjdGlvbigpXShodHRwOi8vY29kZS5nb29nbGUu
Y29tL3AvZ29vZ2xlbW9jay93aWtpL1YxXzZfQ29va0Jvb2sjV3JpdGluZ19OZXdfUG9seW1vcnBo
aWNfQWN0aW9ucyksCitvciB5b3UgY2FuIHdyaXRlIGEgc3R1YiBmdW5jdGlvbiBhbmQgaW52b2tl
IGl0IHVzaW5nCitbSW52b2tlKCldKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGVtb2Nr
L3dpa2kvVjFfNl9Db29rQm9vayNVc2luZ19GdW5jdGlvbnNfTWV0aG9kc19GdW5jdG9ycykuCisK
KyMjIE1PQ0tcX01FVEhPRG4oKSdzIHNlY29uZCBhcmd1bWVudCBsb29rcyBmdW5ueS4gIFdoeSBk
b24ndCB5b3UgdXNlIHRoZSBNT0NLXF9NRVRIT0RuKE1ldGhvZCwgcmV0dXJuXF90eXBlLCBhcmdc
XzEsIC4uLiwgYXJnXF9uKSBzeW50YXg/ICMjCisKK1doYXQ/ISAgSSB0aGluayBpdCdzIGJlYXV0
aWZ1bC4gOi0pCisKK1doaWxlIHdoaWNoIHN5bnRheCBsb29rcyBtb3JlIG5hdHVyYWwgaXMgYSBz
dWJqZWN0aXZlIG1hdHRlciB0byBzb21lCitleHRlbnQsIEdvb2dsZSBNb2NrJ3Mgc3ludGF4IHdh
cyBjaG9zZW4gZm9yIHNldmVyYWwgcHJhY3RpY2FsIGFkdmFudGFnZXMgaXQKK2hhcy4KKworVHJ5
IHRvIG1vY2sgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgbWFwIGFzIGFuIGFyZ3VtZW50OgorYGBg
Cit2aXJ0dWFsIGludCBHZXRTaXplKGNvbnN0IG1hcDxpbnQsIHN0ZDo6c3RyaW5nPiYgbSk7Citg
YGAKKworVXNpbmcgdGhlIHByb3Bvc2VkIHN5bnRheCwgaXQgd291bGQgYmU6CitgYGAKK01PQ0tf
TUVUSE9EMShHZXRTaXplLCBpbnQsIGNvbnN0IG1hcDxpbnQsIHN0ZDo6c3RyaW5nPiYgbSk7Citg
YGAKKworR3Vlc3Mgd2hhdD8gIFlvdSdsbCBnZXQgYSBjb21waWxlciBlcnJvciBhcyB0aGUgY29t
cGlsZXIgdGhpbmtzIHRoYXQKK2Bjb25zdCBtYXA8aW50LCBzdGQ6OnN0cmluZz4mIG1gIGFyZSAq
KnR3byoqLCBub3Qgb25lLCBhcmd1bWVudHMuIFRvIHdvcmsKK2Fyb3VuZCB0aGlzIHlvdSBjYW4g
dXNlIGB0eXBlZGVmYCB0byBnaXZlIHRoZSBtYXAgdHlwZSBhIG5hbWUsIGJ1dAordGhhdCBnZXRz
IGluIHRoZSB3YXkgb2YgeW91ciB3b3JrLiAgR29vZ2xlIE1vY2sncyBzeW50YXggYXZvaWRzIHRo
aXMKK3Byb2JsZW0gYXMgdGhlIGZ1bmN0aW9uJ3MgYXJndW1lbnQgdHlwZXMgYXJlIHByb3RlY3Rl
ZCBpbnNpZGUgYSBwYWlyCitvZiBwYXJlbnRoZXNlczoKK2BgYAorLy8gVGhpcyBjb21waWxlcyBm
aW5lLgorTU9DS19NRVRIT0QxKEdldFNpemUsIGludChjb25zdCBtYXA8aW50LCBzdGQ6OnN0cmlu
Zz4mIG0pKTsKK2BgYAorCitZb3Ugc3RpbGwgbmVlZCBhIGB0eXBlZGVmYCBpZiB0aGUgcmV0dXJu
IHR5cGUgY29udGFpbnMgYW4gdW5wcm90ZWN0ZWQKK2NvbW1hLCBidXQgdGhhdCdzIG11Y2ggcmFy
ZXIuCisKK090aGVyIGFkdmFudGFnZXMgaW5jbHVkZToKKyAgMS4gYE1PQ0tfTUVUSE9EMShGb28s
IGludCwgYm9vbClgIGNhbiBsZWF2ZSBhIHJlYWRlciB3b25kZXIgd2hldGhlciB0aGUgbWV0aG9k
IHJldHVybnMgYGludGAgb3IgYGJvb2xgLCB3aGlsZSB0aGVyZSB3b24ndCBiZSBzdWNoIGNvbmZ1
c2lvbiB1c2luZyBHb29nbGUgTW9jaydzIHN5bnRheC4KKyAgMS4gVGhlIHdheSBHb29nbGUgTW9j
ayBkZXNjcmliZXMgYSBmdW5jdGlvbiB0eXBlIGlzIG5vdGhpbmcgbmV3LCBhbHRob3VnaCBtYW55
IHBlb3BsZSBtYXkgbm90IGJlIGZhbWlsaWFyIHdpdGggaXQuICBUaGUgc2FtZSBzeW50YXggd2Fz
IHVzZWQgaW4gQywgYW5kIHRoZSBgZnVuY3Rpb25gIGxpYnJhcnkgaW4gYHRyMWAgdXNlcyB0aGlz
IHN5bnRheCBleHRlbnNpdmVseS4gIFNpbmNlIGB0cjFgIHdpbGwgYmVjb21lIGEgcGFydCBvZiB0
aGUgbmV3IHZlcnNpb24gb2YgU1RMLCB3ZSBmZWVsIHZlcnkgY29tZm9ydGFibGUgdG8gYmUgY29u
c2lzdGVudCB3aXRoIGl0LgorICAxLiBUaGUgZnVuY3Rpb24gdHlwZSBzeW50YXggaXMgYWxzbyB1
c2VkIGluIG90aGVyIHBhcnRzIG9mIEdvb2dsZSBNb2NrJ3MgQVBJIChlLmcuIHRoZSBhY3Rpb24g
aW50ZXJmYWNlKSBpbiBvcmRlciB0byBtYWtlIHRoZSBpbXBsZW1lbnRhdGlvbiB0cmFjdGFibGUu
IEEgdXNlciBuZWVkcyB0byBsZWFybiBpdCBhbnl3YXkgaW4gb3JkZXIgdG8gdXRpbGl6ZSBHb29n
bGUgTW9jaydzIG1vcmUgYWR2YW5jZWQgZmVhdHVyZXMuICBXZSdkIGFzIHdlbGwgc3RpY2sgdG8g
dGhlIHNhbWUgc3ludGF4IGluIGBNT0NLX01FVEhPRCpgIQorCisjIyBNeSBjb2RlIGNhbGxzIGEg
c3RhdGljL2dsb2JhbCBmdW5jdGlvbi4gIENhbiBJIG1vY2sgaXQ/ICMjCisKK1lvdSBjYW4sIGJ1
dCB5b3UgbmVlZCB0byBtYWtlIHNvbWUgY2hhbmdlcy4KKworSW4gZ2VuZXJhbCwgaWYgeW91IGZp
bmQgeW91cnNlbGYgbmVlZGluZyB0byBtb2NrIGEgc3RhdGljIGZ1bmN0aW9uLAoraXQncyBhIHNp
Z24gdGhhdCB5b3VyIG1vZHVsZXMgYXJlIHRvbyB0aWdodGx5IGNvdXBsZWQgKGFuZCBsZXNzCitm
bGV4aWJsZSwgbGVzcyByZXVzYWJsZSwgbGVzcyB0ZXN0YWJsZSwgZXRjKS4gIFlvdSBhcmUgcHJv
YmFibHkgYmV0dGVyCitvZmYgZGVmaW5pbmcgYSBzbWFsbCBpbnRlcmZhY2UgYW5kIGNhbGwgdGhl
IGZ1bmN0aW9uIHRocm91Z2ggdGhhdAoraW50ZXJmYWNlLCB3aGljaCB0aGVuIGNhbiBiZSBlYXNp
bHkgbW9ja2VkLiAgSXQncyBhIGJpdCBvZiB3b3JrCitpbml0aWFsbHksIGJ1dCB1c3VhbGx5IHBh
eXMgZm9yIGl0c2VsZiBxdWlja2x5LgorCitUaGlzIEdvb2dsZSBUZXN0aW5nIEJsb2cKK1twb3N0
XShodHRwOi8vZ29vZ2xldGVzdGluZy5ibG9nc3BvdC5jb20vMjAwOC8wNi9kZWZlYXQtc3RhdGlj
LWNsaW5nLmh0bWwpCitzYXlzIGl0IGV4Y2VsbGVudGx5LiAgQ2hlY2sgaXQgb3V0LgorCisjIyBN
eSBtb2NrIG9iamVjdCBuZWVkcyB0byBkbyBjb21wbGV4IHN0dWZmLiAgSXQncyBhIGxvdCBvZiBw
YWluIHRvIHNwZWNpZnkgdGhlIGFjdGlvbnMuICBHb29nbGUgTW9jayBzdWNrcyEgIyMKKworSSBr
bm93IGl0J3Mgbm90IGEgcXVlc3Rpb24sIGJ1dCB5b3UgZ2V0IGFuIGFuc3dlciBmb3IgZnJlZSBh
bnkgd2F5LiA6LSkKKworV2l0aCBHb29nbGUgTW9jaywgeW91IGNhbiBjcmVhdGUgbW9ja3MgaW4g
QysrIGVhc2lseS4gIEFuZCBwZW9wbGUgbWlnaHQgYmUKK3RlbXB0ZWQgdG8gdXNlIHRoZW0gZXZl
cnl3aGVyZS4gU29tZXRpbWVzIHRoZXkgd29yayBncmVhdCwgYW5kCitzb21ldGltZXMgeW91IG1h
eSBmaW5kIHRoZW0sIHdlbGwsIGEgcGFpbiB0byB1c2UuIFNvLCB3aGF0J3Mgd3JvbmcgaW4KK3Ro
ZSBsYXR0ZXIgY2FzZT8KKworV2hlbiB5b3Ugd3JpdGUgYSB0ZXN0IHdpdGhvdXQgdXNpbmcgbW9j
a3MsIHlvdSBleGVyY2lzZSB0aGUgY29kZSBhbmQKK2Fzc2VydCB0aGF0IGl0IHJldHVybnMgdGhl
IGNvcnJlY3QgdmFsdWUgb3IgdGhhdCB0aGUgc3lzdGVtIGlzIGluIGFuCitleHBlY3RlZCBzdGF0
ZS4gIFRoaXMgaXMgc29tZXRpbWVzIGNhbGxlZCAic3RhdGUtYmFzZWQgdGVzdGluZyIuCisKK01v
Y2tzIGFyZSBncmVhdCBmb3Igd2hhdCBzb21lIGNhbGwgImludGVyYWN0aW9uLWJhc2VkIiB0ZXN0
aW5nOgoraW5zdGVhZCBvZiBjaGVja2luZyB0aGUgc3lzdGVtIHN0YXRlIGF0IHRoZSB2ZXJ5IGVu
ZCwgbW9jayBvYmplY3RzCit2ZXJpZnkgdGhhdCB0aGV5IGFyZSBpbnZva2VkIHRoZSByaWdodCB3
YXkgYW5kIHJlcG9ydCBhbiBlcnJvciBhcyBzb29uCithcyBpdCBhcmlzZXMsIGdpdmluZyB5b3Ug
YSBoYW5kbGUgb24gdGhlIHByZWNpc2UgY29udGV4dCBpbiB3aGljaCB0aGUKK2Vycm9yIHdhcyB0
cmlnZ2VyZWQuICBUaGlzIGlzIG9mdGVuIG1vcmUgZWZmZWN0aXZlIGFuZCBlY29ub21pY2FsIHRv
CitkbyB0aGFuIHN0YXRlLWJhc2VkIHRlc3RpbmcuCisKK0lmIHlvdSBhcmUgZG9pbmcgc3RhdGUt
YmFzZWQgdGVzdGluZyBhbmQgdXNpbmcgYSB0ZXN0IGRvdWJsZSBqdXN0IHRvCitzaW11bGF0ZSB0
aGUgcmVhbCBvYmplY3QsIHlvdSBhcmUgcHJvYmFibHkgYmV0dGVyIG9mZiB1c2luZyBhIGZha2Uu
CitVc2luZyBhIG1vY2sgaW4gdGhpcyBjYXNlIGNhdXNlcyBwYWluLCBhcyBpdCdzIG5vdCBhIHN0
cm9uZyBwb2ludCBmb3IKK21vY2tzIHRvIHBlcmZvcm0gY29tcGxleCBhY3Rpb25zLiAgSWYgeW91
IGV4cGVyaWVuY2UgdGhpcyBhbmQgdGhpbmsKK3RoYXQgbW9ja3Mgc3VjaywgeW91IGFyZSBqdXN0
IG5vdCB1c2luZyB0aGUgcmlnaHQgdG9vbCBmb3IgeW91cgorcHJvYmxlbS4gT3IsIHlvdSBtaWdo
dCBiZSB0cnlpbmcgdG8gc29sdmUgdGhlIHdyb25nIHByb2JsZW0uIDotKQorCisjIyBJIGdvdCBh
IHdhcm5pbmcgIlVuaW50ZXJlc3RpbmcgZnVuY3Rpb24gY2FsbCBlbmNvdW50ZXJlZCAtIGRlZmF1
bHQgYWN0aW9uIHRha2VuLi4iICBTaG91bGQgSSBwYW5pYz8gIyMKKworQnkgYWxsIG1lYW5zLCBO
TyEgIEl0J3MganVzdCBhbiBGWUkuCisKK1doYXQgaXQgbWVhbnMgaXMgdGhhdCB5b3UgaGF2ZSBh
IG1vY2sgZnVuY3Rpb24sIHlvdSBoYXZlbid0IHNldCBhbnkKK2V4cGVjdGF0aW9ucyBvbiBpdCAo
YnkgR29vZ2xlIE1vY2sncyBydWxlIHRoaXMgbWVhbnMgdGhhdCB5b3UgYXJlIG5vdAoraW50ZXJl
c3RlZCBpbiBjYWxscyB0byB0aGlzIGZ1bmN0aW9uIGFuZCB0aGVyZWZvcmUgaXQgY2FuIGJlIGNh
bGxlZAorYW55IG51bWJlciBvZiB0aW1lcyksIGFuZCBpdCBpcyBjYWxsZWQuICBUaGF0J3MgT0sg
LSB5b3UgZGlkbid0IHNheQoraXQncyBub3QgT0sgdG8gY2FsbCB0aGUgZnVuY3Rpb24hCisKK1do
YXQgaWYgeW91IGFjdHVhbGx5IG1lYW50IHRvIGRpc2FsbG93IHRoaXMgZnVuY3Rpb24gdG8gYmUg
Y2FsbGVkLCBidXQKK2ZvcmdvdCB0byB3cml0ZSBgRVhQRUNUX0NBTEwoZm9vLCBCYXIoKSkuVGlt
ZXMoMClgPyAgV2hpbGUKK29uZSBjYW4gYXJndWUgdGhhdCBpdCdzIHRoZSB1c2VyJ3MgZmF1bHQs
IEdvb2dsZSBNb2NrIHRyaWVzIHRvIGJlIG5pY2UgYW5kCitwcmludHMgeW91IGEgbm90ZS4KKwor
U28sIHdoZW4geW91IHNlZSB0aGUgbWVzc2FnZSBhbmQgYmVsaWV2ZSB0aGF0IHRoZXJlIHNob3Vs
ZG4ndCBiZSBhbnkKK3VuaW50ZXJlc3RpbmcgY2FsbHMsIHlvdSBzaG91bGQgaW52ZXN0aWdhdGUg
d2hhdCdzIGdvaW5nIG9uLiAgVG8gbWFrZQoreW91ciBsaWZlIGVhc2llciwgR29vZ2xlIE1vY2sg
cHJpbnRzIHRoZSBmdW5jdGlvbiBuYW1lIGFuZCBhcmd1bWVudHMKK3doZW4gYW4gdW5pbnRlcmVz
dGluZyBjYWxsIGlzIGVuY291bnRlcmVkLgorCisjIyBJIHdhbnQgdG8gZGVmaW5lIGEgY3VzdG9t
IGFjdGlvbi4gIFNob3VsZCBJIHVzZSBJbnZva2UoKSBvciBpbXBsZW1lbnQgdGhlIGFjdGlvbiBp
bnRlcmZhY2U/ICMjCisKK0VpdGhlciB3YXkgaXMgZmluZSAtIHlvdSB3YW50IHRvIGNob29zZSB0
aGUgb25lIHRoYXQncyBtb3JlIGNvbnZlbmllbnQKK2ZvciB5b3VyIGNpcmN1bXN0YW5jZS4KKwor
VXN1YWxseSwgaWYgeW91ciBhY3Rpb24gaXMgZm9yIGEgcGFydGljdWxhciBmdW5jdGlvbiB0eXBl
LCBkZWZpbmluZyBpdAordXNpbmcgYEludm9rZSgpYCBzaG91bGQgYmUgZWFzaWVyOyBpZiB5b3Vy
IGFjdGlvbiBjYW4gYmUgdXNlZCBpbgorZnVuY3Rpb25zIG9mIGRpZmZlcmVudCB0eXBlcyAoZS5n
LiBpZiB5b3UgYXJlIGRlZmluaW5nCitgUmV0dXJuKHZhbHVlKWApLCBgTWFrZVBvbHltb3JwaGlj
QWN0aW9uKClgIGlzCitlYXNpZXN0LiAgU29tZXRpbWVzIHlvdSB3YW50IHByZWNpc2UgY29udHJv
bCBvbiB3aGF0IHR5cGVzIG9mCitmdW5jdGlvbnMgdGhlIGFjdGlvbiBjYW4gYmUgdXNlZCBpbiwg
YW5kIGltcGxlbWVudGluZworYEFjdGlvbkludGVyZmFjZWAgaXMgdGhlIHdheSB0byBnbyBoZXJl
LiBTZWUgdGhlIGltcGxlbWVudGF0aW9uIG9mCitgUmV0dXJuKClgIGluIGBpbmNsdWRlL2dtb2Nr
L2dtb2NrLWFjdGlvbnMuaGAgZm9yIGFuIGV4YW1wbGUuCisKKyMjIEknbSB1c2luZyB0aGUgc2V0
LWFyZ3VtZW50LXBvaW50ZWUgYWN0aW9uLCBhbmQgdGhlIGNvbXBpbGVyIGNvbXBsYWlucyBhYm91
dCAiY29uZmxpY3RpbmcgcmV0dXJuIHR5cGUgc3BlY2lmaWVkIi4gIFdoYXQgZG9lcyBpdCBtZWFu
PyAjIworCitZb3UgZ290IHRoaXMgZXJyb3IgYXMgR29vZ2xlIE1vY2sgaGFzIG5vIGlkZWEgd2hh
dCB2YWx1ZSBpdCBzaG91bGQgcmV0dXJuCit3aGVuIHRoZSBtb2NrIG1ldGhvZCBpcyBjYWxsZWQu
ICBgU2V0QXJnUG9pbnRlZSgpYCBzYXlzIHdoYXQgdGhlCitzaWRlIGVmZmVjdCBpcywgYnV0IGRv
ZXNuJ3Qgc2F5IHdoYXQgdGhlIHJldHVybiB2YWx1ZSBzaG91bGQgYmUuICBZb3UKK25lZWQgYERv
QWxsKClgIHRvIGNoYWluIGEgYFNldEFyZ1BvaW50ZWUoKWAgd2l0aCBhIGBSZXR1cm4oKWAuCisK
K1NlZSB0aGlzIFtyZWNpcGVdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGVtb2NrL3dp
a2kvVjFfNl9Db29rQm9vayNNb2NraW5nX1NpZGVfRWZmZWN0cykgZm9yIG1vcmUgZGV0YWlscyBh
bmQgYW4gZXhhbXBsZS4KKworCisjIyBNeSBxdWVzdGlvbiBpcyBub3QgaW4geW91ciBGQVEhICMj
CisKK0lmIHlvdSBjYW5ub3QgZmluZCB0aGUgYW5zd2VyIHRvIHlvdXIgcXVlc3Rpb24gaW4gdGhp
cyBGQVEsIHRoZXJlIGFyZQorc29tZSBvdGhlciByZXNvdXJjZXMgeW91IGNhbiB1c2U6CisKKyAg
MS4gcmVhZCBvdGhlciBbd2lraSBwYWdlc10oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2ds
ZW1vY2svdy9saXN0KSwKKyAgMS4gc2VhcmNoIHRoZSBtYWlsaW5nIGxpc3QgW2FyY2hpdmVdKGh0
dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9ncm91cC9nb29nbGVtb2NrL3RvcGljcyksCisgIDEuIGFz
ayBpdCBvbiBbZ29vZ2xlbW9ja0Bnb29nbGVncm91cHMuY29tXShtYWlsdG86Z29vZ2xlbW9ja0Bn
b29nbGVncm91cHMuY29tKSBhbmQgc29tZW9uZSB3aWxsIGFuc3dlciBpdCAodG8gcHJldmVudCBz
cGFtLCB3ZSByZXF1aXJlIHlvdSB0byBqb2luIHRoZSBbZGlzY3Vzc2lvbiBncm91cF0oaHR0cDov
L2dyb3Vwcy5nb29nbGUuY29tL2dyb3VwL2dvb2dsZW1vY2spIGJlZm9yZSB5b3UgY2FuIHBvc3Qu
KS4KKworUGxlYXNlIG5vdGUgdGhhdCBjcmVhdGluZyBhbiBpc3N1ZSBpbiB0aGUKK1tpc3N1ZSB0
cmFja2VyXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9jay9pc3N1ZXMvbGlzdCkg
aXMgX25vdF8KK2EgZ29vZCB3YXkgdG8gZ2V0IHlvdXIgYW5zd2VyLCBhcyBpdCBpcyBtb25pdG9y
ZWQgaW5mcmVxdWVudGx5IGJ5IGEKK3Zlcnkgc21hbGwgbnVtYmVyIG9mIHBlb3BsZS4KKworV2hl
biBhc2tpbmcgYSBxdWVzdGlvbiwgaXQncyBoZWxwZnVsIHRvIHByb3ZpZGUgYXMgbXVjaCBvZiB0
aGUKK2ZvbGxvd2luZyBpbmZvcm1hdGlvbiBhcyBwb3NzaWJsZSAocGVvcGxlIGNhbm5vdCBoZWxw
IHlvdSBpZiB0aGVyZSdzCitub3QgZW5vdWdoIGluZm9ybWF0aW9uIGluIHlvdXIgcXVlc3Rpb24p
OgorCisgICogdGhlIHZlcnNpb24gKG9yIHRoZSByZXZpc2lvbiBudW1iZXIgaWYgeW91IGNoZWNr
IG91dCBmcm9tIFNWTiBkaXJlY3RseSkgb2YgR29vZ2xlIE1vY2sgeW91IHVzZSAoR29vZ2xlIE1v
Y2sgaXMgdW5kZXIgYWN0aXZlIGRldmVsb3BtZW50LCBzbyBpdCdzIHBvc3NpYmxlIHRoYXQgeW91
ciBwcm9ibGVtIGhhcyBiZWVuIHNvbHZlZCBpbiBhIGxhdGVyIHZlcnNpb24pLAorICAqIHlvdXIg
b3BlcmF0aW5nIHN5c3RlbSwKKyAgKiB0aGUgbmFtZSBhbmQgdmVyc2lvbiBvZiB5b3VyIGNvbXBp
bGVyLAorICAqIHRoZSBjb21wbGV0ZSBjb21tYW5kIGxpbmUgZmxhZ3MgeW91IGdpdmUgdG8geW91
ciBjb21waWxlciwKKyAgKiB0aGUgY29tcGxldGUgY29tcGlsZXIgZXJyb3IgbWVzc2FnZXMgKGlm
IHRoZSBxdWVzdGlvbiBpcyBhYm91dCBjb21waWxhdGlvbiksCisgICogdGhlIF9hY3R1YWxfIGNv
ZGUgKGlkZWFsbHksIGEgbWluaW1hbCBidXQgY29tcGxldGUgcHJvZ3JhbSkgdGhhdCBoYXMgdGhl
IHByb2JsZW0geW91IGVuY291bnRlci4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL3YxXzcvQ2hlYXRTaGVldC5tZCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2Nr
L2RvY3MvdjFfNy9DaGVhdFNoZWV0Lm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRiNDIxZTUxYmU2NTY2OTkxMTI1
NGU5M2UzOTNiNmFkZWQyNTYwODcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2Nz
L3YxXzcvQ2hlYXRTaGVldC5tZApAQCAtMCwwICsxLDU1NiBAQAorCisKKyMgRGVmaW5pbmcgYSBN
b2NrIENsYXNzICMKKworIyMgTW9ja2luZyBhIE5vcm1hbCBDbGFzcyAjIworCitHaXZlbgorYGBg
CitjbGFzcyBGb28geworICAuLi4KKyAgdmlydHVhbCB+Rm9vKCk7CisgIHZpcnR1YWwgaW50IEdl
dFNpemUoKSBjb25zdCA9IDA7CisgIHZpcnR1YWwgc3RyaW5nIERlc2NyaWJlKGNvbnN0IGNoYXIq
IG5hbWUpID0gMDsKKyAgdmlydHVhbCBzdHJpbmcgRGVzY3JpYmUoaW50IHR5cGUpID0gMDsKKyAg
dmlydHVhbCBib29sIFByb2Nlc3MoQmFyIGVsZW0sIGludCBjb3VudCkgPSAwOworfTsKK2BgYAor
KG5vdGUgdGhhdCBgfkZvbygpYCAqKm11c3QqKiBiZSB2aXJ0dWFsKSB3ZSBjYW4gZGVmaW5lIGl0
cyBtb2NrIGFzCitgYGAKKyNpbmNsdWRlICJnbW9jay9nbW9jay5oIgorCitjbGFzcyBNb2NrRm9v
IDogcHVibGljIEZvbyB7CisgIE1PQ0tfQ09OU1RfTUVUSE9EMChHZXRTaXplLCBpbnQoKSk7Cisg
IE1PQ0tfTUVUSE9EMShEZXNjcmliZSwgc3RyaW5nKGNvbnN0IGNoYXIqIG5hbWUpKTsKKyAgTU9D
S19NRVRIT0QxKERlc2NyaWJlLCBzdHJpbmcoaW50IHR5cGUpKTsKKyAgTU9DS19NRVRIT0QyKFBy
b2Nlc3MsIGJvb2woQmFyIGVsZW0sIGludCBjb3VudCkpOworfTsKK2BgYAorCitUbyBjcmVhdGUg
YSAibmljZSIgbW9jayBvYmplY3Qgd2hpY2ggaWdub3JlcyBhbGwgdW5pbnRlcmVzdGluZyBjYWxs
cywKK29yIGEgInN0cmljdCIgbW9jayBvYmplY3QsIHdoaWNoIHRyZWF0cyB0aGVtIGFzIGZhaWx1
cmVzOgorYGBgCitOaWNlTW9jazxNb2NrRm9vPiBuaWNlX2ZvbzsgICAgIC8vIFRoZSB0eXBlIGlz
IGEgc3ViY2xhc3Mgb2YgTW9ja0Zvby4KK1N0cmljdE1vY2s8TW9ja0Zvbz4gc3RyaWN0X2Zvbzsg
Ly8gVGhlIHR5cGUgaXMgYSBzdWJjbGFzcyBvZiBNb2NrRm9vLgorYGBgCisKKyMjIE1vY2tpbmcg
YSBDbGFzcyBUZW1wbGF0ZSAjIworCitUbyBtb2NrCitgYGAKK3RlbXBsYXRlIDx0eXBlbmFtZSBF
bGVtPgorY2xhc3MgU3RhY2tJbnRlcmZhY2UgeworIHB1YmxpYzoKKyAgLi4uCisgIHZpcnR1YWwg
flN0YWNrSW50ZXJmYWNlKCk7CisgIHZpcnR1YWwgaW50IEdldFNpemUoKSBjb25zdCA9IDA7Cisg
IHZpcnR1YWwgdm9pZCBQdXNoKGNvbnN0IEVsZW0mIHgpID0gMDsKK307CitgYGAKKyhub3RlIHRo
YXQgYH5TdGFja0ludGVyZmFjZSgpYCAqKm11c3QqKiBiZSB2aXJ0dWFsKSBqdXN0IGFwcGVuZCBg
X1RgIHRvIHRoZSBgTU9DS18qYCBtYWNyb3M6CitgYGAKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVt
PgorY2xhc3MgTW9ja1N0YWNrIDogcHVibGljIFN0YWNrSW50ZXJmYWNlPEVsZW0+IHsKKyBwdWJs
aWM6CisgIC4uLgorICBNT0NLX0NPTlNUX01FVEhPRDBfVChHZXRTaXplLCBpbnQoKSk7CisgIE1P
Q0tfTUVUSE9EMV9UKFB1c2gsIHZvaWQoY29uc3QgRWxlbSYgeCkpOworfTsKK2BgYAorCisjIyBT
cGVjaWZ5aW5nIENhbGxpbmcgQ29udmVudGlvbnMgZm9yIE1vY2sgRnVuY3Rpb25zICMjCisKK0lm
IHlvdXIgbW9jayBmdW5jdGlvbiBkb2Vzbid0IHVzZSB0aGUgZGVmYXVsdCBjYWxsaW5nIGNvbnZl
bnRpb24sIHlvdQorY2FuIHNwZWNpZnkgaXQgYnkgYXBwZW5kaW5nIGBfV0lUSF9DQUxMVFlQRWAg
dG8gYW55IG9mIHRoZSBtYWNyb3MKK2Rlc2NyaWJlZCBpbiB0aGUgcHJldmlvdXMgdHdvIHNlY3Rp
b25zIGFuZCBzdXBwbHlpbmcgdGhlIGNhbGxpbmcKK2NvbnZlbnRpb24gYXMgdGhlIGZpcnN0IGFy
Z3VtZW50IHRvIHRoZSBtYWNyby4gRm9yIGV4YW1wbGUsCitgYGAKKyAgTU9DS19NRVRIT0RfMV9X
SVRIX0NBTExUWVBFKFNURE1FVEhPRENBTExUWVBFLCBGb28sIGJvb2woaW50IG4pKTsKKyAgTU9D
S19DT05TVF9NRVRIT0QyX1dJVEhfQ0FMTFRZUEUoU1RETUVUSE9EQ0FMTFRZUEUsIEJhciwgaW50
KGRvdWJsZSB4LCBkb3VibGUgeSkpOworYGBgCit3aGVyZSBgU1RETUVUSE9EQ0FMTFRZUEVgIGlz
IGRlZmluZWQgYnkgYDxvYmpiYXNlLmg+YCBvbiBXaW5kb3dzLgorCisjIFVzaW5nIE1vY2tzIGlu
IFRlc3RzICMKKworVGhlIHR5cGljYWwgZmxvdyBpczoKKyAgMS4gSW1wb3J0IHRoZSBHb29nbGUg
TW9jayBuYW1lcyB5b3UgbmVlZCB0byB1c2UuIEFsbCBHb29nbGUgTW9jayBuYW1lcyBhcmUgaW4g
dGhlIGB0ZXN0aW5nYCBuYW1lc3BhY2UgdW5sZXNzIHRoZXkgYXJlIG1hY3JvcyBvciBvdGhlcndp
c2Ugbm90ZWQuCisgIDEuIENyZWF0ZSB0aGUgbW9jayBvYmplY3RzLgorICAxLiBPcHRpb25hbGx5
LCBzZXQgdGhlIGRlZmF1bHQgYWN0aW9ucyBvZiB0aGUgbW9jayBvYmplY3RzLgorICAxLiBTZXQg
eW91ciBleHBlY3RhdGlvbnMgb24gdGhlIG1vY2sgb2JqZWN0cyAoSG93IHdpbGwgdGhleSBiZSBj
YWxsZWQ/IFdoYXQgd2lsIHRoZXkgZG8/KS4KKyAgMS4gRXhlcmNpc2UgY29kZSB0aGF0IHVzZXMg
dGhlIG1vY2sgb2JqZWN0czsgaWYgbmVjZXNzYXJ5LCBjaGVjayB0aGUgcmVzdWx0IHVzaW5nIFtH
b29nbGUgVGVzdF0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRlc3QvKSBhc3NlcnRp
b25zLgorICAxLiBXaGVuIGEgbW9jayBvYmplY3RzIGlzIGRlc3RydWN0ZWQsIEdvb2dsZSBNb2Nr
IGF1dG9tYXRpY2FsbHkgdmVyaWZpZXMgdGhhdCBhbGwgZXhwZWN0YXRpb25zIG9uIGl0IGhhdmUg
YmVlbiBzYXRpc2ZpZWQuCisKK0hlcmUgaXMgYW4gZXhhbXBsZToKK2BgYAordXNpbmcgOjp0ZXN0
aW5nOjpSZXR1cm47ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICMxCisKK1RFU1QoQmFy
VGVzdCwgRG9lc1RoaXMpIHsKKyAgTW9ja0ZvbyBmb287ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gIzIKKworICBPTl9DQUxMKGZvbywgR2V0U2l6ZSgpKSAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyAjMworICAgICAgLldpbGxCeURlZmF1bHQoUmV0dXJuKDEpKTsKKyAg
Ly8gLi4uIG90aGVyIGRlZmF1bHQgYWN0aW9ucyAuLi4KKworICBFWFBFQ1RfQ0FMTChmb28sIERl
c2NyaWJlKDUpKSAgICAgICAgICAgICAgICAgICAvLyAjNAorICAgICAgLlRpbWVzKDMpCisgICAg
ICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKCJDYXRlZ29yeSA1IikpOworICAvLyAuLi4gb3RoZXIg
ZXhwZWN0YXRpb25zIC4uLgorCisgIEVYUEVDVF9FUSgiZ29vZCIsIE15UHJvZHVjdGlvbkZ1bmN0
aW9uKCZmb28pKTsgIC8vICM1Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vICM2CitgYGAKKworIyBTZXR0aW5nIERlZmF1bHQgQWN0aW9ucyAjCisK
K0dvb2dsZSBNb2NrIGhhcyBhICoqYnVpbHQtaW4gZGVmYXVsdCBhY3Rpb24qKiBmb3IgYW55IGZ1
bmN0aW9uIHRoYXQKK3JldHVybnMgYHZvaWRgLCBgYm9vbGAsIGEgbnVtZXJpYyB2YWx1ZSwgb3Ig
YSBwb2ludGVyLgorCitUbyBjdXN0b21pemUgdGhlIGRlZmF1bHQgYWN0aW9uIGZvciBmdW5jdGlv
bnMgd2l0aCByZXR1cm4gdHlwZSBgVGAgZ2xvYmFsbHk6CitgYGAKK3VzaW5nIDo6dGVzdGluZzo6
RGVmYXVsdFZhbHVlOworCitEZWZhdWx0VmFsdWU8VD46OlNldCh2YWx1ZSk7ICAvLyBTZXRzIHRo
ZSBkZWZhdWx0IHZhbHVlIHRvIGJlIHJldHVybmVkLgorLy8gLi4uIHVzZSB0aGUgbW9ja3MgLi4u
CitEZWZhdWx0VmFsdWU8VD46OkNsZWFyKCk7ICAgICAvLyBSZXNldHMgdGhlIGRlZmF1bHQgdmFs
dWUuCitgYGAKKworVG8gY3VzdG9taXplIHRoZSBkZWZhdWx0IGFjdGlvbiBmb3IgYSBwYXJ0aWN1
bGFyIG1ldGhvZCwgdXNlIGBPTl9DQUxMKClgOgorYGBgCitPTl9DQUxMKG1vY2tfb2JqZWN0LCBt
ZXRob2QobWF0Y2hlcnMpKQorICAgIC5XaXRoKG11bHRpX2FyZ3VtZW50X21hdGNoZXIpICA/Cisg
ICAgLldpbGxCeURlZmF1bHQoYWN0aW9uKTsKK2BgYAorCisjIFNldHRpbmcgRXhwZWN0YXRpb25z
ICMKKworYEVYUEVDVF9DQUxMKClgIHNldHMgKipleHBlY3RhdGlvbnMqKiBvbiBhIG1vY2sgbWV0
aG9kIChIb3cgd2lsbCBpdCBiZQorY2FsbGVkPyBXaGF0IHdpbGwgaXQgZG8/KToKK2BgYAorRVhQ
RUNUX0NBTEwobW9ja19vYmplY3QsIG1ldGhvZChtYXRjaGVycykpCisgICAgLldpdGgobXVsdGlf
YXJndW1lbnRfbWF0Y2hlcikgID8KKyAgICAuVGltZXMoY2FyZGluYWxpdHkpICAgICAgICAgICAg
PworICAgIC5JblNlcXVlbmNlKHNlcXVlbmNlcykgICAgICAgICAqCisgICAgLkFmdGVyKGV4cGVj
dGF0aW9ucykgICAgICAgICAgICoKKyAgICAuV2lsbE9uY2UoYWN0aW9uKSAgICAgICAgICAgICAg
KgorICAgIC5XaWxsUmVwZWF0ZWRseShhY3Rpb24pICAgICAgICA/CisgICAgLlJldGlyZXNPblNh
dHVyYXRpb24oKTsgICAgICAgID8KK2BgYAorCitJZiBgVGltZXMoKWAgaXMgb21pdHRlZCwgdGhl
IGNhcmRpbmFsaXR5IGlzIGFzc3VtZWQgdG8gYmU6CisKKyAgKiBgVGltZXMoMSlgIHdoZW4gdGhl
cmUgaXMgbmVpdGhlciBgV2lsbE9uY2UoKWAgbm9yIGBXaWxsUmVwZWF0ZWRseSgpYDsKKyAgKiBg
VGltZXMobilgIHdoZW4gdGhlcmUgYXJlIGBuIFdpbGxPbmNlKClgcyBidXQgbm8gYFdpbGxSZXBl
YXRlZGx5KClgLCB3aGVyZSBgbmAgPj0gMTsgb3IKKyAgKiBgVGltZXMoQXRMZWFzdChuKSlgIHdo
ZW4gdGhlcmUgYXJlIGBuIFdpbGxPbmNlKClgcyBhbmQgYSBgV2lsbFJlcGVhdGVkbHkoKWAsIHdo
ZXJlIGBuYCA+PSAwLgorCitBIG1ldGhvZCB3aXRoIG5vIGBFWFBFQ1RfQ0FMTCgpYCBpcyBmcmVl
IHRvIGJlIGludm9rZWQgX2FueSBudW1iZXIgb2YgdGltZXNfLCBhbmQgdGhlIGRlZmF1bHQgYWN0
aW9uIHdpbGwgYmUgdGFrZW4gZWFjaCB0aW1lLgorCisjIE1hdGNoZXJzICMKKworQSAqKm1hdGNo
ZXIqKiBtYXRjaGVzIGEgX3NpbmdsZV8gYXJndW1lbnQuICBZb3UgY2FuIHVzZSBpdCBpbnNpZGUK
K2BPTl9DQUxMKClgIG9yIGBFWFBFQ1RfQ0FMTCgpYCwgb3IgdXNlIGl0IHRvIHZhbGlkYXRlIGEg
dmFsdWUKK2RpcmVjdGx5OgorCit8IGBFWFBFQ1RfVEhBVCh2YWx1ZSwgbWF0Y2hlcilgIHwgQXNz
ZXJ0cyB0aGF0IGB2YWx1ZWAgbWF0Y2hlcyBgbWF0Y2hlcmAuIHwKK3w6LS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
fAorfCBgQVNTRVJUX1RIQVQodmFsdWUsIG1hdGNoZXIpYCB8IFRoZSBzYW1lIGFzIGBFWFBFQ1Rf
VEhBVCh2YWx1ZSwgbWF0Y2hlcilgLCBleGNlcHQgdGhhdCBpdCBnZW5lcmF0ZXMgYSAqKmZhdGFs
KiogZmFpbHVyZS4gfAorCitCdWlsdC1pbiBtYXRjaGVycyAod2hlcmUgYGFyZ3VtZW50YCBpcyB0
aGUgZnVuY3Rpb24gYXJndW1lbnQpIGFyZQorZGl2aWRlZCBpbnRvIHNldmVyYWwgY2F0ZWdvcmll
czoKKworIyMgV2lsZGNhcmQgIyMKK3xgX2B8YGFyZ3VtZW50YCBjYW4gYmUgYW55IHZhbHVlIG9m
IHRoZSBjb3JyZWN0IHR5cGUufAorfDotLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS18Cit8YEE8dHlwZT4oKWAgb3IgYEFuPHR5cGU+KClgfGBhcmd1bWVu
dGAgY2FuIGJlIGFueSB2YWx1ZSBvZiB0eXBlIGB0eXBlYC4gICAgIHwKKworIyMgR2VuZXJpYyBD
b21wYXJpc29uICMjCisKK3xgRXEodmFsdWUpYCBvciBgdmFsdWVgfGBhcmd1bWVudCA9PSB2YWx1
ZWB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tfAorfGBHZSh2
YWx1ZSlgICAgICAgICAgICB8YGFyZ3VtZW50ID49IHZhbHVlYHwKK3xgR3QodmFsdWUpYCAgICAg
ICAgICAgfGBhcmd1bWVudCA+IHZhbHVlYCB8Cit8YExlKHZhbHVlKWAgICAgICAgICAgIHxgYXJn
dW1lbnQgPD0gdmFsdWVgfAorfGBMdCh2YWx1ZSlgICAgICAgICAgICB8YGFyZ3VtZW50IDwgdmFs
dWVgIHwKK3xgTmUodmFsdWUpYCAgICAgICAgICAgfGBhcmd1bWVudCAhPSB2YWx1ZWB8Cit8YElz
TnVsbCgpYCAgICAgICAgICAgIHxgYXJndW1lbnRgIGlzIGEgYE5VTExgIHBvaW50ZXIgKHJhdyBv
ciBzbWFydCkufAorfGBOb3ROdWxsKClgICAgICAgICAgICB8YGFyZ3VtZW50YCBpcyBhIG5vbi1u
dWxsIHBvaW50ZXIgKHJhdyBvciBzbWFydCkufAorfGBSZWYodmFyaWFibGUpYCAgICAgICB8YGFy
Z3VtZW50YCBpcyBhIHJlZmVyZW5jZSB0byBgdmFyaWFibGVgLnwKK3xgVHlwZWRFcTx0eXBlPih2
YWx1ZSlgfGBhcmd1bWVudGAgaGFzIHR5cGUgYHR5cGVgIGFuZCBpcyBlcXVhbCB0byBgdmFsdWVg
LiBZb3UgbWF5IG5lZWQgdG8gdXNlIHRoaXMgaW5zdGVhZCBvZiBgRXEodmFsdWUpYCB3aGVuIHRo
ZSBtb2NrIGZ1bmN0aW9uIGlzIG92ZXJsb2FkZWQufAorCitFeGNlcHQgYFJlZigpYCwgdGhlc2Ug
bWF0Y2hlcnMgbWFrZSBhIF9jb3B5XyBvZiBgdmFsdWVgIGluIGNhc2UgaXQncworbW9kaWZpZWQg
b3IgZGVzdHJ1Y3RlZCBsYXRlci4gSWYgdGhlIGNvbXBpbGVyIGNvbXBsYWlucyB0aGF0IGB2YWx1
ZWAKK2RvZXNuJ3QgaGF2ZSBhIHB1YmxpYyBjb3B5IGNvbnN0cnVjdG9yLCB0cnkgd3JhcCBpdCBp
biBgQnlSZWYoKWAsCitlLmcuIGBFcShCeVJlZihub25fY29weWFibGVfdmFsdWUpKWAuIElmIHlv
dSBkbyB0aGF0LCBtYWtlIHN1cmUKK2Bub25fY29weWFibGVfdmFsdWVgIGlzIG5vdCBjaGFuZ2Vk
IGFmdGVyd2FyZHMsIG9yIHRoZSBtZWFuaW5nIG9mIHlvdXIKK21hdGNoZXIgd2lsbCBiZSBjaGFu
Z2VkLgorCisjIyBGbG9hdGluZy1Qb2ludCBNYXRjaGVycyAjIworCit8YERvdWJsZUVxKGFfZG91
YmxlKWB8YGFyZ3VtZW50YCBpcyBhIGBkb3VibGVgIHZhbHVlIGFwcHJveGltYXRlbHkgZXF1YWwg
dG8gYGFfZG91YmxlYCwgdHJlYXRpbmcgdHdvIE5hTnMgYXMgdW5lcXVhbC58Cit8Oi0tLS0tLS0t
LS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Cit8YEZs
b2F0RXEoYV9mbG9hdClgICB8YGFyZ3VtZW50YCBpcyBhIGBmbG9hdGAgdmFsdWUgYXBwcm94aW1h
dGVseSBlcXVhbCB0byBgYV9mbG9hdGAsIHRyZWF0aW5nIHR3byBOYU5zIGFzIHVuZXF1YWwuICB8
Cit8YE5hblNlbnNpdGl2ZURvdWJsZUVxKGFfZG91YmxlKWB8YGFyZ3VtZW50YCBpcyBhIGBkb3Vi
bGVgIHZhbHVlIGFwcHJveGltYXRlbHkgZXF1YWwgdG8gYGFfZG91YmxlYCwgdHJlYXRpbmcgdHdv
IE5hTnMgYXMgZXF1YWwuICB8Cit8YE5hblNlbnNpdGl2ZUZsb2F0RXEoYV9mbG9hdClgfGBhcmd1
bWVudGAgaXMgYSBgZmxvYXRgIHZhbHVlIGFwcHJveGltYXRlbHkgZXF1YWwgdG8gYGFfZmxvYXRg
LCB0cmVhdGluZyB0d28gTmFOcyBhcyBlcXVhbC4gICAgfAorCitUaGUgYWJvdmUgbWF0Y2hlcnMg
dXNlIFVMUC1iYXNlZCBjb21wYXJpc29uICh0aGUgc2FtZSBhcyB1c2VkIGluCitbR29vZ2xlIFRl
c3RdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0LykpLiBUaGV5CithdXRvbWF0
aWNhbGx5IHBpY2sgYSByZWFzb25hYmxlIGVycm9yIGJvdW5kIGJhc2VkIG9uIHRoZSBhYnNvbHV0
ZQordmFsdWUgb2YgdGhlIGV4cGVjdGVkIHZhbHVlLiAgYERvdWJsZUVxKClgIGFuZCBgRmxvYXRF
cSgpYCBjb25mb3JtIHRvCit0aGUgSUVFRSBzdGFuZGFyZCwgd2hpY2ggcmVxdWlyZXMgY29tcGFy
aW5nIHR3byBOYU5zIGZvciBlcXVhbGl0eSB0bworcmV0dXJuIGZhbHNlLiBUaGUgYE5hblNlbnNp
dGl2ZSpgIHZlcnNpb24gaW5zdGVhZCB0cmVhdHMgdHdvIE5hTnMgYXMKK2VxdWFsLCB3aGljaCBp
cyBvZnRlbiB3aGF0IGEgdXNlciB3YW50cy4KKworfGBEb3VibGVOZWFyKGFfZG91YmxlLCBtYXhf
YWJzX2Vycm9yKWB8YGFyZ3VtZW50YCBpcyBhIGBkb3VibGVgIHZhbHVlIGNsb3NlIHRvIGBhX2Rv
dWJsZWAgKGFic29sdXRlIGVycm9yIDw9IGBtYXhfYWJzX2Vycm9yYCksIHRyZWF0aW5nIHR3byBO
YU5zIGFzIHVuZXF1YWwufAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18
Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tfAorfGBGbG9hdE5lYXIoYV9mbG9hdCwgbWF4X2Fic19lcnJvcilgICB8YGFyZ3VtZW50YCBp
cyBhIGBmbG9hdGAgdmFsdWUgY2xvc2UgdG8gYGFfZmxvYXRgIChhYnNvbHV0ZSBlcnJvciA8PSBg
bWF4X2Fic19lcnJvcmApLCB0cmVhdGluZyB0d28gTmFOcyBhcyB1bmVxdWFsLiAgfAorfGBOYW5T
ZW5zaXRpdmVEb3VibGVOZWFyKGFfZG91YmxlLCBtYXhfYWJzX2Vycm9yKWB8YGFyZ3VtZW50YCBp
cyBhIGBkb3VibGVgIHZhbHVlIGNsb3NlIHRvIGBhX2RvdWJsZWAgKGFic29sdXRlIGVycm9yIDw9
IGBtYXhfYWJzX2Vycm9yYCksIHRyZWF0aW5nIHR3byBOYU5zIGFzIGVxdWFsLiAgfAorfGBOYW5T
ZW5zaXRpdmVGbG9hdE5lYXIoYV9mbG9hdCwgbWF4X2Fic19lcnJvcilgfGBhcmd1bWVudGAgaXMg
YSBgZmxvYXRgIHZhbHVlIGNsb3NlIHRvIGBhX2Zsb2F0YCAoYWJzb2x1dGUgZXJyb3IgPD0gYG1h
eF9hYnNfZXJyb3JgKSwgdHJlYXRpbmcgdHdvIE5hTnMgYXMgZXF1YWwuICAgIHwKKworIyMgU3Ry
aW5nIE1hdGNoZXJzICMjCisKK1RoZSBgYXJndW1lbnRgIGNhbiBiZSBlaXRoZXIgYSBDIHN0cmlu
ZyBvciBhIEMrKyBzdHJpbmcgb2JqZWN0OgorCit8YENvbnRhaW5zUmVnZXgoc3RyaW5nKWB8YGFy
Z3VtZW50YCBtYXRjaGVzIHRoZSBnaXZlbiByZWd1bGFyIGV4cHJlc3Npb24ufAorfDotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLXwKK3xgRW5kc1dpdGgoc3VmZml4KWAgICAgIHxgYXJndW1lbnRgIGVuZHMgd2l0aCBz
dHJpbmcgYHN1ZmZpeGAuICAgICAgICAgICB8Cit8YEhhc1N1YnN0cihzdHJpbmcpYCAgICB8YGFy
Z3VtZW50YCBjb250YWlucyBgc3RyaW5nYCBhcyBhIHN1Yi1zdHJpbmcuICAgfAorfGBNYXRjaGVz
UmVnZXgoc3RyaW5nKWAgfGBhcmd1bWVudGAgbWF0Y2hlcyB0aGUgZ2l2ZW4gcmVndWxhciBleHBy
ZXNzaW9uIHdpdGggdGhlIG1hdGNoIHN0YXJ0aW5nIGF0IHRoZSBmaXJzdCBjaGFyYWN0ZXIgYW5k
IGVuZGluZyBhdCB0aGUgbGFzdCBjaGFyYWN0ZXIufAorfGBTdGFydHNXaXRoKHByZWZpeClgICAg
fGBhcmd1bWVudGAgc3RhcnRzIHdpdGggc3RyaW5nIGBwcmVmaXhgLiAgICAgICAgIHwKK3xgU3Ry
Q2FzZUVxKHN0cmluZylgICAgIHxgYXJndW1lbnRgIGlzIGVxdWFsIHRvIGBzdHJpbmdgLCBpZ25v
cmluZyBjYXNlLiB8Cit8YFN0ckNhc2VOZShzdHJpbmcpYCAgICB8YGFyZ3VtZW50YCBpcyBub3Qg
ZXF1YWwgdG8gYHN0cmluZ2AsIGlnbm9yaW5nIGNhc2UufAorfGBTdHJFcShzdHJpbmcpYCAgICAg
ICAgfGBhcmd1bWVudGAgaXMgZXF1YWwgdG8gYHN0cmluZ2AuICAgICAgICAgICAgICAgIHwKK3xg
U3RyTmUoc3RyaW5nKWAgICAgICAgIHxgYXJndW1lbnRgIGlzIG5vdCBlcXVhbCB0byBgc3RyaW5n
YC4gICAgICAgICAgICB8CisKK2BDb250YWluc1JlZ2V4KClgIGFuZCBgTWF0Y2hlc1JlZ2V4KClg
IHVzZSB0aGUgcmVndWxhciBleHByZXNzaW9uCitzeW50YXggZGVmaW5lZAorW2hlcmVdKGh0dHA6
Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0L3dpa2kvQWR2YW5jZWRHdWlkZSNSZWd1bGFy
X0V4cHJlc3Npb25fU3ludGF4KS4KK2BTdHJDYXNlRXEoKWAsIGBTdHJDYXNlTmUoKWAsIGBTdHJF
cSgpYCwgYW5kIGBTdHJOZSgpYCB3b3JrIGZvciB3aWRlCitzdHJpbmdzIGFzIHdlbGwuCisKKyMj
IENvbnRhaW5lciBNYXRjaGVycyAjIworCitNb3N0IFNUTC1zdHlsZSBjb250YWluZXJzIHN1cHBv
cnQgYD09YCwgc28geW91IGNhbiB1c2UKK2BFcShleHBlY3RlZF9jb250YWluZXIpYCBvciBzaW1w
bHkgYGV4cGVjdGVkX2NvbnRhaW5lcmAgdG8gbWF0Y2ggYQorY29udGFpbmVyIGV4YWN0bHkuICAg
SWYgeW91IHdhbnQgdG8gd3JpdGUgdGhlIGVsZW1lbnRzIGluLWxpbmUsCittYXRjaCB0aGVtIG1v
cmUgZmxleGlibHksIG9yIGdldCBtb3JlIGluZm9ybWF0aXZlIG1lc3NhZ2VzLCB5b3UgY2FuIHVz
ZToKKworfCBgQ29udGFpbmVyRXEoY29udGFpbmVyKWAgfCBUaGUgc2FtZSBhcyBgRXEoY29udGFp
bmVyKWAgZXhjZXB0IHRoYXQgdGhlIGZhaWx1cmUgbWVzc2FnZSBhbHNvIGluY2x1ZGVzIHdoaWNo
IGVsZW1lbnRzIGFyZSBpbiBvbmUgY29udGFpbmVyIGJ1dCBub3QgdGhlIG90aGVyLiB8Cit8Oi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKK3wgYENvbnRhaW5zKGUp
YCAgICAgICAgICAgIHwgYGFyZ3VtZW50YCBjb250YWlucyBhbiBlbGVtZW50IHRoYXQgbWF0Y2hl
cyBgZWAsIHdoaWNoIGNhbiBiZSBlaXRoZXIgYSB2YWx1ZSBvciBhIG1hdGNoZXIuICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgRWFjaChlKWAgICAgICAgICAgICAg
ICAgfCBgYXJndW1lbnRgIGlzIGEgY29udGFpbmVyIHdoZXJlIF9ldmVyeV8gZWxlbWVudCBtYXRj
aGVzIGBlYCwgd2hpY2ggY2FuIGJlIGVpdGhlciBhIHZhbHVlIG9yIGEgbWF0Y2hlci4gICAgICAg
ICAgICAgICAgICAgICAgICAgICB8Cit8IGBFbGVtZW50c0FyZShlMCwgZTEsIC4uLiwgZW4pYCB8
IGBhcmd1bWVudGAgaGFzIGBuICsgMWAgZWxlbWVudHMsIHdoZXJlIHRoZSBpLXRoIGVsZW1lbnQg
bWF0Y2hlcyBgZWlgLCB3aGljaCBjYW4gYmUgYSB2YWx1ZSBvciBhIG1hdGNoZXIuIDAgdG8gMTAg
YXJndW1lbnRzIGFyZSBhbGxvd2VkLiB8Cit8IGBFbGVtZW50c0FyZUFycmF5KHsgZTAsIGUxLCAu
Li4sIGVuIH0pYCwgYEVsZW1lbnRzQXJlQXJyYXkoYXJyYXkpYCwgb3IgYEVsZW1lbnRzQXJlQXJy
YXkoYXJyYXksIGNvdW50KWAgfCBUaGUgc2FtZSBhcyBgRWxlbWVudHNBcmUoKWAgZXhjZXB0IHRo
YXQgdGhlIGV4cGVjdGVkIGVsZW1lbnQgdmFsdWVzL21hdGNoZXJzIGNvbWUgZnJvbSBhbiBpbml0
aWFsaXplciBsaXN0LCB2ZWN0b3IsIG9yIEMtc3R5bGUgYXJyYXkuIHwKK3wgYElzRW1wdHkoKWAg
ICAgICAgICAgICAgIHwgYGFyZ3VtZW50YCBpcyBhbiBlbXB0eSBjb250YWluZXIgKGBjb250YWlu
ZXIuZW1wdHkoKWApLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgUG9pbnR3aXNlKG0sIGNvbnRhaW5l
cilgIHwgYGFyZ3VtZW50YCBjb250YWlucyB0aGUgc2FtZSBudW1iZXIgb2YgZWxlbWVudHMgYXMg
aW4gYGNvbnRhaW5lcmAsIGFuZCBmb3IgYWxsIGksICh0aGUgaS10aCBlbGVtZW50IGluIGBhcmd1
bWVudGAsIHRoZSBpLXRoIGVsZW1lbnQgaW4gYGNvbnRhaW5lcmApIG1hdGNoIGBtYCwgd2hpY2gg
aXMgYSBtYXRjaGVyIG9uIDItdHVwbGVzLiBFLmcuIGBQb2ludHdpc2UoTGUoKSwgdXBwZXJfYm91
bmRzKWAgdmVyaWZpZXMgdGhhdCBlYWNoIGVsZW1lbnQgaW4gYGFyZ3VtZW50YCBkb2Vzbid0IGV4
Y2VlZCB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IGluIGB1cHBlcl9ib3VuZHNgLiBTZWUgbW9y
ZSBkZXRhaWwgYmVsb3cuIHwKK3wgYFNpemVJcyhtKWAgICAgICAgICAgICAgIHwgYGFyZ3VtZW50
YCBpcyBhIGNvbnRhaW5lciB3aG9zZSBzaXplIG1hdGNoZXMgYG1gLiBFLmcuIGBTaXplSXMoMilg
IG9yIGBTaXplSXMoTHQoMikpYC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfAorfCBgVW5vcmRlcmVkRWxlbWVudHNBcmUoZTAsIGUxLCAuLi4sIGVuKWAgfCBgYXJn
dW1lbnRgIGhhcyBgbiArIDFgIGVsZW1lbnRzLCBhbmQgdW5kZXIgc29tZSBwZXJtdXRhdGlvbiBl
YWNoIGVsZW1lbnQgbWF0Y2hlcyBhbiBgZWlgIChmb3IgYSBkaWZmZXJlbnQgYGlgKSwgd2hpY2gg
Y2FuIGJlIGEgdmFsdWUgb3IgYSBtYXRjaGVyLiAwIHRvIDEwIGFyZ3VtZW50cyBhcmUgYWxsb3dl
ZC4gfAorfCBgVW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSh7IGUwLCBlMSwgLi4uLCBlbiB9KWAs
IGBVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KGFycmF5KWAsIG9yIGBVbm9yZGVyZWRFbGVtZW50
c0FyZUFycmF5KGFycmF5LCBjb3VudClgIHwgVGhlIHNhbWUgYXMgYFVub3JkZXJlZEVsZW1lbnRz
QXJlKClgIGV4Y2VwdCB0aGF0IHRoZSBleHBlY3RlZCBlbGVtZW50IHZhbHVlcy9tYXRjaGVycyBj
b21lIGZyb20gYW4gaW5pdGlhbGl6ZXIgbGlzdCwgdmVjdG9yLCBvciBDLXN0eWxlIGFycmF5LiB8
Cit8IGBXaGVuU29ydGVkKG0pYCAgICAgICAgICB8IFdoZW4gYGFyZ3VtZW50YCBpcyBzb3J0ZWQg
dXNpbmcgdGhlIGA8YCBvcGVyYXRvciwgaXQgbWF0Y2hlcyBjb250YWluZXIgbWF0Y2hlciBgbWAu
IEUuZy4gYFdoZW5Tb3J0ZWQoVW5vcmRlcmVkRWxlbWVudHNBcmUoMSwgMiwgMykpYCB2ZXJpZmll
cyB0aGF0IGBhcmd1bWVudGAgY29udGFpbnMgZWxlbWVudHMgYDFgLCBgMmAsIGFuZCBgM2AsIGln
bm9yaW5nIG9yZGVyLiB8Cit8IGBXaGVuU29ydGVkQnkoY29tcGFyYXRvciwgbSlgIHwgVGhlIHNh
bWUgYXMgYFdoZW5Tb3J0ZWQobSlgLCBleGNlcHQgdGhhdCB0aGUgZ2l2ZW4gY29tcGFyYXRvciBp
bnN0ZWFkIG9mIGA8YCBpcyB1c2VkIHRvIHNvcnQgYGFyZ3VtZW50YC4gRS5nLiBgV2hlblNvcnRl
ZEJ5KHN0ZDo6Z3JlYXRlcjxpbnQ+KCksIEVsZW1lbnRzQXJlKDMsIDIsIDEpKWAuIHwKKworTm90
ZXM6CisKKyAgKiBUaGVzZSBtYXRjaGVycyBjYW4gYWxzbyBtYXRjaDoKKyAgICAxLiBhIG5hdGl2
ZSBhcnJheSBwYXNzZWQgYnkgcmVmZXJlbmNlIChlLmcuIGluIGBGb28oY29uc3QgaW50ICgmYSlb
NV0pYCksIGFuZAorICAgIDEuIGFuIGFycmF5IHBhc3NlZCBhcyBhIHBvaW50ZXIgYW5kIGEgY291
bnQgKGUuZy4gaW4gYEJhcihjb25zdCBUKiBidWZmZXIsIGludCBsZW4pYCAtLSBzZWUgW011bHRp
LWFyZ3VtZW50IE1hdGNoZXJzXSgjTXVsdGlhcmd1bWVudF9NYXRjaGVycy5tZCkpLgorICAqIFRo
ZSBhcnJheSBiZWluZyBtYXRjaGVkIG1heSBiZSBtdWx0aS1kaW1lbnNpb25hbCAoaS5lLiBpdHMg
ZWxlbWVudHMgY2FuIGJlIGFycmF5cykuCisgICogYG1gIGluIGBQb2ludHdpc2UobSwgLi4uKWAg
c2hvdWxkIGJlIGEgbWF0Y2hlciBmb3IgYHN0ZDo6dHIxOjp0dXBsZTxULCBVPmAgd2hlcmUgYFRg
IGFuZCBgVWAgYXJlIHRoZSBlbGVtZW50IHR5cGUgb2YgdGhlIGFjdHVhbCBjb250YWluZXIgYW5k
IHRoZSBleHBlY3RlZCBjb250YWluZXIsIHJlc3BlY3RpdmVseS4gRm9yIGV4YW1wbGUsIHRvIGNv
bXBhcmUgdHdvIGBGb29gIGNvbnRhaW5lcnMgd2hlcmUgYEZvb2AgZG9lc24ndCBzdXBwb3J0IGBv
cGVyYXRvcj09YCBidXQgaGFzIGFuIGBFcXVhbHMoKWAgbWV0aG9kLCBvbmUgbWlnaHQgd3JpdGU6
CisKK2BgYAordXNpbmcgOjpzdGQ6OnRyMTo6Z2V0OworTUFUQ0hFUihGb29FcSwgIiIpIHsKKyAg
cmV0dXJuIGdldDwwPihhcmcpLkVxdWFscyhnZXQ8MT4oYXJnKSk7Cit9CisuLi4KK0VYUEVDVF9U
SEFUKGFjdHVhbF9mb29zLCBQb2ludHdpc2UoRm9vRXEoKSwgZXhwZWN0ZWRfZm9vcykpOworYGBg
CisKKyMjIE1lbWJlciBNYXRjaGVycyAjIworCit8YEZpZWxkKCZjbGFzczo6ZmllbGQsIG0pYHxg
YXJndW1lbnQuZmllbGRgIChvciBgYXJndW1lbnQtPmZpZWxkYCB3aGVuIGBhcmd1bWVudGAgaXMg
YSBwbGFpbiBwb2ludGVyKSBtYXRjaGVzIG1hdGNoZXIgYG1gLCB3aGVyZSBgYXJndW1lbnRgIGlz
IGFuIG9iamVjdCBvZiB0eXBlIF9jbGFzc18ufAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18
Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKK3xgS2V5KGUpYCAgICAgICAgICAgICAgICAg
fGBhcmd1bWVudC5maXJzdGAgbWF0Y2hlcyBgZWAsIHdoaWNoIGNhbiBiZSBlaXRoZXIgYSB2YWx1
ZSBvciBhIG1hdGNoZXIuIEUuZy4gYENvbnRhaW5zKEtleShMZSg1KSkpYCBjYW4gdmVyaWZ5IHRo
YXQgYSBgbWFwYCBjb250YWlucyBhIGtleSBgPD0gNWAufAorfGBQYWlyKG0xLCBtMilgICAgICAg
ICAgICB8YGFyZ3VtZW50YCBpcyBhbiBgc3RkOjpwYWlyYCB3aG9zZSBgZmlyc3RgIGZpZWxkIG1h
dGNoZXMgYG0xYCBhbmQgYHNlY29uZGAgZmllbGQgbWF0Y2hlcyBgbTJgLiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3xgUHJvcGVydHkoJmNsYXNzOjpw
cm9wZXJ0eSwgbSlgfGBhcmd1bWVudC5wcm9wZXJ0eSgpYCAob3IgYGFyZ3VtZW50LT5wcm9wZXJ0
eSgpYCB3aGVuIGBhcmd1bWVudGAgaXMgYSBwbGFpbiBwb2ludGVyKSBtYXRjaGVzIG1hdGNoZXIg
YG1gLCB3aGVyZSBgYXJndW1lbnRgIGlzIGFuIG9iamVjdCBvZiB0eXBlIF9jbGFzc18ufAorCisj
IyBNYXRjaGluZyB0aGUgUmVzdWx0IG9mIGEgRnVuY3Rpb24gb3IgRnVuY3RvciAjIworCit8YFJl
c3VsdE9mKGYsIG0pYHxgZihhcmd1bWVudClgIG1hdGNoZXMgbWF0Y2hlciBgbWAsIHdoZXJlIGBm
YCBpcyBhIGZ1bmN0aW9uIG9yIGZ1bmN0b3IufAorfDotLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLXwKKworIyMgUG9pbnRlciBNYXRjaGVycyAjIworCit8YFBvaW50ZWUobSlgfGBhcmd1bWVu
dGAgKGVpdGhlciBhIHNtYXJ0IHBvaW50ZXIgb3IgYSByYXcgcG9pbnRlcikgcG9pbnRzIHRvIGEg
dmFsdWUgdGhhdCBtYXRjaGVzIG1hdGNoZXIgYG1gLnwKK3w6LS0tLS0tLS0tLS18Oi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorCisjIyBNdWx0aWFyZ3VtZW50IE1hdGNo
ZXJzICMjCisKK1RlY2huaWNhbGx5LCBhbGwgbWF0Y2hlcnMgbWF0Y2ggYSBfc2luZ2xlXyB2YWx1
ZS4gQSAibXVsdGktYXJndW1lbnQiCittYXRjaGVyIGlzIGp1c3Qgb25lIHRoYXQgbWF0Y2hlcyBh
IF90dXBsZV8uIFRoZSBmb2xsb3dpbmcgbWF0Y2hlcnMgY2FuCitiZSB1c2VkIHRvIG1hdGNoIGEg
dHVwbGUgYCh4LCB5KWA6CisKK3xgRXEoKWB8YHggPT0geWB8Cit8Oi0tLS0tfDotLS0tLS0tfAor
fGBHZSgpYHxgeCA+PSB5YHwKK3xgR3QoKWB8YHggPiB5YCB8Cit8YExlKClgfGB4IDw9IHlgfAor
fGBMdCgpYHxgeCA8IHlgIHwKK3xgTmUoKWB8YHggIT0geWB8CisKK1lvdSBjYW4gdXNlIHRoZSBm
b2xsb3dpbmcgc2VsZWN0b3JzIHRvIHBpY2sgYSBzdWJzZXQgb2YgdGhlIGFyZ3VtZW50cworKG9y
IHJlb3JkZXIgdGhlbSkgdG8gcGFydGljaXBhdGUgaW4gdGhlIG1hdGNoaW5nOgorCit8YEFsbEFy
Z3MobSlgfEVxdWl2YWxlbnQgdG8gYG1gLiBVc2VmdWwgYXMgc3ludGFjdGljIHN1Z2FyIGluIGAu
V2l0aChBbGxBcmdzKG0pKWAufAorfDotLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKK3xgQXJnczxO
MSwgTjIsIC4uLiwgTms+KG0pYHxUaGUgdHVwbGUgb2YgdGhlIGBrYCBzZWxlY3RlZCAodXNpbmcg
MC1iYXNlZCBpbmRpY2VzKSBhcmd1bWVudHMgbWF0Y2hlcyBgbWAsIGUuZy4gYEFyZ3M8MSwgMj4o
RXEoKSlgLnwKKworIyMgQ29tcG9zaXRlIE1hdGNoZXJzICMjCisKK1lvdSBjYW4gbWFrZSBhIG1h
dGNoZXIgZnJvbSBvbmUgb3IgbW9yZSBvdGhlciBtYXRjaGVyczoKKworfGBBbGxPZihtMSwgbTIs
IC4uLiwgbW4pYHxgYXJndW1lbnRgIG1hdGNoZXMgYWxsIG9mIHRoZSBtYXRjaGVycyBgbTFgIHRv
IGBtbmAufAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorfGBBbnlPZihtMSwgbTIsIC4uLiwgbW4p
YHxgYXJndW1lbnRgIG1hdGNoZXMgYXQgbGVhc3Qgb25lIG9mIHRoZSBtYXRjaGVycyBgbTFgIHRv
IGBtbmAufAorfGBOb3QobSlgICAgICAgICAgICAgICAgIHxgYXJndW1lbnRgIGRvZXNuJ3QgbWF0
Y2ggbWF0Y2hlciBgbWAuICAgICAgICAgICAgICAgfAorCisjIyBBZGFwdGVycyBmb3IgTWF0Y2hl
cnMgIyMKKworfGBNYXRjaGVyQ2FzdDxUPihtKWB8Y2FzdHMgbWF0Y2hlciBgbWAgdG8gdHlwZSBg
TWF0Y2hlcjxUPmAufAorfDotLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tfAorfGBTYWZlTWF0Y2hlckNhc3Q8VD4obSlgfCBbc2FmZWx5IGNh
c3RzXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9jay93aWtpL1YxXzdfQ29va0Jv
b2sjQ2FzdGluZ19NYXRjaGVycykgbWF0Y2hlciBgbWAgdG8gdHlwZSBgTWF0Y2hlcjxUPmAuIHwK
K3xgVHJ1bHkocHJlZGljYXRlKWAgfGBwcmVkaWNhdGUoYXJndW1lbnQpYCByZXR1cm5zIHNvbWV0
aGluZyBjb25zaWRlcmVkIGJ5IEMrKyB0byBiZSB0cnVlLCB3aGVyZSBgcHJlZGljYXRlYCBpcyBh
IGZ1bmN0aW9uIG9yIGZ1bmN0b3IufAorCisjIyBNYXRjaGVycyBhcyBQcmVkaWNhdGVzICMjCisK
K3xgTWF0Y2hlcyhtKSh2YWx1ZSlgfGV2YWx1YXRlcyB0byBgdHJ1ZWAgaWYgYHZhbHVlYCBtYXRj
aGVzIGBtYC4gWW91IGNhbiB1c2UgYE1hdGNoZXMobSlgIGFsb25lIGFzIGEgdW5hcnkgZnVuY3Rv
ci58Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tfAorfGBFeHBsYWluTWF0Y2hSZXN1bHQobSwgdmFsdWUsIHJlc3VsdF9saXN0ZW5lcilg
fGV2YWx1YXRlcyB0byBgdHJ1ZWAgaWYgYHZhbHVlYCBtYXRjaGVzIGBtYCwgZXhwbGFpbmluZyB0
aGUgcmVzdWx0IHRvIGByZXN1bHRfbGlzdGVuZXJgLiAgICAgICB8Cit8YFZhbHVlKHZhbHVlLCBt
KWAgIHxldmFsdWF0ZXMgdG8gYHRydWVgIGlmIGB2YWx1ZWAgbWF0Y2hlcyBgbWAuICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorCisjIyBEZWZpbmlu
ZyBNYXRjaGVycyAjIworCit8IGBNQVRDSEVSKElzRXZlbiwgIiIpIHsgcmV0dXJuIChhcmcgJSAy
KSA9PSAwOyB9YCB8IERlZmluZXMgYSBtYXRjaGVyIGBJc0V2ZW4oKWAgdG8gbWF0Y2ggYW4gZXZl
biBudW1iZXIuIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tfAorfCBgTUFUQ0hFUl9QKElzRGl2aXNpYmxlQnksIG4sICIiKSB7ICpyZXN1bHRfbGlz
dGVuZXIgPDwgIndoZXJlIHRoZSByZW1haW5kZXIgaXMgIiA8PCAoYXJnICUgbik7IHJldHVybiAo
YXJnICUgbikgPT0gMDsgfWAgfCBEZWZpbmVzIGEgbWFjaGVyIGBJc0RpdmlzaWJsZUJ5KG4pYCB0
byBtYXRjaCBhIG51bWJlciBkaXZpc2libGUgYnkgYG5gLiB8Cit8IGBNQVRDSEVSX1AyKElzQmV0
d2VlbiwgYSwgYiwgc3RkOjpzdHJpbmcobmVnYXRpb24gPyAiaXNuJ3QiIDogImlzIikgKyAiIGJl
dHdlZW4gIiArIFByaW50VG9TdHJpbmcoYSkgKyAiIGFuZCAiICsgUHJpbnRUb1N0cmluZyhiKSkg
eyByZXR1cm4gYSA8PSBhcmcgJiYgYXJnIDw9IGI7IH1gIHwgRGVmaW5lcyBhIG1hdGNoZXIgYElz
QmV0d2VlbihhLCBiKWAgdG8gbWF0Y2ggYSB2YWx1ZSBpbiB0aGUgcmFuZ2UgW2BhYCwgYGJgXS4g
fAorCisqKk5vdGVzOioqCisKKyAgMS4gVGhlIGBNQVRDSEVSKmAgbWFjcm9zIGNhbm5vdCBiZSB1
c2VkIGluc2lkZSBhIGZ1bmN0aW9uIG9yIGNsYXNzLgorICAxLiBUaGUgbWF0Y2hlciBib2R5IG11
c3QgYmUgX3B1cmVseSBmdW5jdGlvbmFsXyAoaS5lLiBpdCBjYW5ub3QgaGF2ZSBhbnkgc2lkZSBl
ZmZlY3QsIGFuZCB0aGUgcmVzdWx0IG11c3Qgbm90IGRlcGVuZCBvbiBhbnl0aGluZyBvdGhlciB0
aGFuIHRoZSB2YWx1ZSBiZWluZyBtYXRjaGVkIGFuZCB0aGUgbWF0Y2hlciBwYXJhbWV0ZXJzKS4K
KyAgMS4gWW91IGNhbiB1c2UgYFByaW50VG9TdHJpbmcoeClgIHRvIGNvbnZlcnQgYSB2YWx1ZSBg
eGAgb2YgYW55IHR5cGUgdG8gYSBzdHJpbmcuCisKKyMjIE1hdGNoZXJzIGFzIFRlc3QgQXNzZXJ0
aW9ucyAjIworCit8YEFTU0VSVF9USEFUKGV4cHJlc3Npb24sIG0pYHxHZW5lcmF0ZXMgYSBbZmF0
YWwgZmFpbHVyZV0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRlc3Qvd2lraS9Qcmlt
ZXIjQXNzZXJ0aW9ucykgaWYgdGhlIHZhbHVlIG9mIGBleHByZXNzaW9uYCBkb2Vzbid0IG1hdGNo
IG1hdGNoZXIgYG1gLnwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tfAorfGBFWFBFQ1RfVEhBVChleHByZXNzaW9uLCBtKWB8R2VuZXJh
dGVzIGEgbm9uLWZhdGFsIGZhaWx1cmUgaWYgdGhlIHZhbHVlIG9mIGBleHByZXNzaW9uYCBkb2Vz
bid0IG1hdGNoIG1hdGNoZXIgYG1gLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8CisKKyMgQWN0aW9ucyAjCisKKyoqQWN0aW9ucyoqIHNw
ZWNpZnkgd2hhdCBhIG1vY2sgZnVuY3Rpb24gc2hvdWxkIGRvIHdoZW4gaW52b2tlZC4KKworIyMg
UmV0dXJuaW5nIGEgVmFsdWUgIyMKKworfGBSZXR1cm4oKWB8UmV0dXJuIGZyb20gYSBgdm9pZGAg
bW9jayBmdW5jdGlvbi58Cit8Oi0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLXwKK3xgUmV0dXJuKHZhbHVlKWB8UmV0dXJuIGB2YWx1ZWAuIElmIHRoZSB0eXBlIG9m
IGB2YWx1ZWAgaXMgZGlmZmVyZW50IHRvIHRoZSBtb2NrIGZ1bmN0aW9uJ3MgcmV0dXJuIHR5cGUs
IGB2YWx1ZWAgaXMgY29udmVydGVkIHRvIHRoZSBsYXR0ZXIgdHlwZSA8aT5hdCB0aGUgdGltZSB0
aGUgZXhwZWN0YXRpb24gaXMgc2V0PC9pPiwgbm90IHdoZW4gdGhlIGFjdGlvbiBpcyBleGVjdXRl
ZC58Cit8YFJldHVybkFyZzxOPigpYHxSZXR1cm4gdGhlIGBOYC10aCAoMC1iYXNlZCkgYXJndW1l
bnQufAorfGBSZXR1cm5OZXc8VD4oYTEsIC4uLiwgYWspYHxSZXR1cm4gYG5ldyBUKGExLCAuLi4s
IGFrKWA7IGEgZGlmZmVyZW50IG9iamVjdCBpcyBjcmVhdGVkIGVhY2ggdGltZS58Cit8YFJldHVy
bk51bGwoKWB8UmV0dXJuIGEgbnVsbCBwb2ludGVyLiAgICAgICAgICAgICB8Cit8YFJldHVyblBv
aW50ZWUocHRyKWB8UmV0dXJuIHRoZSB2YWx1ZSBwb2ludGVkIHRvIGJ5IGBwdHJgLnwKK3xgUmV0
dXJuUmVmKHZhcmlhYmxlKWB8UmV0dXJuIGEgcmVmZXJlbmNlIHRvIGB2YXJpYWJsZWAuICB8Cit8
YFJldHVyblJlZk9mQ29weSh2YWx1ZSlgfFJldHVybiBhIHJlZmVyZW5jZSB0byBhIGNvcHkgb2Yg
YHZhbHVlYDsgdGhlIGNvcHkgbGl2ZXMgYXMgbG9uZyBhcyB0aGUgYWN0aW9uLnwKKworIyMgU2lk
ZSBFZmZlY3RzICMjCisKK3xgQXNzaWduKCZ2YXJpYWJsZSwgdmFsdWUpYHxBc3NpZ24gYHZhbHVl
YCB0byB2YXJpYWJsZS58Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tfAorfCBgRGVsZXRlQXJnPE4+KClgICAgICAgICAgfCBEZWxldGUgdGhl
IGBOYC10aCAoMC1iYXNlZCkgYXJndW1lbnQsIHdoaWNoIG11c3QgYmUgYSBwb2ludGVyLiB8Cit8
IGBTYXZlQXJnPE4+KHBvaW50ZXIpYCAgICB8IFNhdmUgdGhlIGBOYC10aCAoMC1iYXNlZCkgYXJn
dW1lbnQgdG8gYCpwb2ludGVyYC4gfAorfCBgU2F2ZUFyZ1BvaW50ZWU8Tj4ocG9pbnRlcilgIHwg
U2F2ZSB0aGUgdmFsdWUgcG9pbnRlZCB0byBieSB0aGUgYE5gLXRoICgwLWJhc2VkKSBhcmd1bWVu
dCB0byBgKnBvaW50ZXJgLiB8Cit8IGBTZXRBcmdSZWZlcmVlPE4+KHZhbHVlKWAgfAlBc3NpZ24g
dmFsdWUgdG8gdGhlIHZhcmlhYmxlIHJlZmVyZW5jZWQgYnkgdGhlIGBOYC10aCAoMC1iYXNlZCkg
YXJndW1lbnQuIHwKK3xgU2V0QXJnUG9pbnRlZTxOPih2YWx1ZSlgIHxBc3NpZ24gYHZhbHVlYCB0
byB0aGUgdmFyaWFibGUgcG9pbnRlZCBieSB0aGUgYE5gLXRoICgwLWJhc2VkKSBhcmd1bWVudC58
Cit8YFNldEFyZ3VtZW50UG9pbnRlZTxOPih2YWx1ZSlgfFNhbWUgYXMgYFNldEFyZ1BvaW50ZWU8
Tj4odmFsdWUpYC4gRGVwcmVjYXRlZC4gV2lsbCBiZSByZW1vdmVkIGluIHYxLjcuMC58Cit8YFNl
dEFycmF5QXJndW1lbnQ8Tj4oZmlyc3QsIGxhc3QpYHxDb3BpZXMgdGhlIGVsZW1lbnRzIGluIHNv
dXJjZSByYW5nZSBbYGZpcnN0YCwgYGxhc3RgKSB0byB0aGUgYXJyYXkgcG9pbnRlZCB0byBieSB0
aGUgYE5gLXRoICgwLWJhc2VkKSBhcmd1bWVudCwgd2hpY2ggY2FuIGJlIGVpdGhlciBhIHBvaW50
ZXIgb3IgYW4gaXRlcmF0b3IuIFRoZSBhY3Rpb24gZG9lcyBub3QgdGFrZSBvd25lcnNoaXAgb2Yg
dGhlIGVsZW1lbnRzIGluIHRoZSBzb3VyY2UgcmFuZ2UufAorfGBTZXRFcnJub0FuZFJldHVybihl
cnJvciwgdmFsdWUpYHxTZXQgYGVycm5vYCB0byBgZXJyb3JgIGFuZCByZXR1cm4gYHZhbHVlYC58
Cit8YFRocm93KGV4Y2VwdGlvbilgICAgICAgICB8VGhyb3dzIHRoZSBnaXZlbiBleGNlcHRpb24s
IHdoaWNoIGNhbiBiZSBhbnkgY29weWFibGUgdmFsdWUuIEF2YWlsYWJsZSBzaW5jZSB2MS4xLjAu
fAorCisjIyBVc2luZyBhIEZ1bmN0aW9uIG9yIGEgRnVuY3RvciBhcyBhbiBBY3Rpb24gIyMKKwor
fGBJbnZva2UoZilgfEludm9rZSBgZmAgd2l0aCB0aGUgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUg
bW9jayBmdW5jdGlvbiwgd2hlcmUgYGZgIGNhbiBiZSBhIGdsb2JhbC9zdGF0aWMgZnVuY3Rpb24g
b3IgYSBmdW5jdG9yLnwKK3w6LS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Cit8YEludm9rZShvYmplY3RfcG9pbnRlciwg
JmNsYXNzOjptZXRob2QpYHxJbnZva2UgdGhlIHttZXRob2Qgb24gdGhlIG9iamVjdCB3aXRoIHRo
ZSBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBtb2NrIGZ1bmN0aW9uLiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8Cit8YEludm9rZVdpdGhvdXRBcmdzKGYpYHxJbnZva2UgYGZgLCB3
aGljaCBjYW4gYmUgYSBnbG9iYWwvc3RhdGljIGZ1bmN0aW9uIG9yIGEgZnVuY3Rvci4gYGZgIG11
c3QgdGFrZSBubyBhcmd1bWVudHMuICAgICAgICAgICAgICAgICAgICAgICB8Cit8YEludm9rZVdp
dGhvdXRBcmdzKG9iamVjdF9wb2ludGVyLCAmY2xhc3M6Om1ldGhvZClgfEludm9rZSB0aGUgbWV0
aG9kIG9uIHRoZSBvYmplY3QsIHdoaWNoIHRha2VzIG5vIGFyZ3VtZW50cy4gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3xgSW52b2tlQXJn
dW1lbnQ8Tj4oYXJnMSwgYXJnMiwgLi4uLCBhcmdrKWB8SW52b2tlIHRoZSBtb2NrIGZ1bmN0aW9u
J3MgYE5gLXRoICgwLWJhc2VkKSBhcmd1bWVudCwgd2hpY2ggbXVzdCBiZSBhIGZ1bmN0aW9uIG9y
IGEgZnVuY3Rvciwgd2l0aCB0aGUgYGtgIGFyZ3VtZW50cy58CisKK1RoZSByZXR1cm4gdmFsdWUg
b2YgdGhlIGludm9rZWQgZnVuY3Rpb24gaXMgdXNlZCBhcyB0aGUgcmV0dXJuIHZhbHVlCitvZiB0
aGUgYWN0aW9uLgorCitXaGVuIGRlZmluaW5nIGEgZnVuY3Rpb24gb3IgZnVuY3RvciB0byBiZSB1
c2VkIHdpdGggYEludm9rZSooKWAsIHlvdSBjYW4gZGVjbGFyZSBhbnkgdW51c2VkIHBhcmFtZXRl
cnMgYXMgYFVudXNlZGA6CitgYGAKKyAgZG91YmxlIERpc3RhbmNlKFVudXNlZCwgZG91YmxlIHgs
IGRvdWJsZSB5KSB7IHJldHVybiBzcXJ0KHgqeCArIHkqeSk7IH0KKyAgLi4uCisgIEVYUEVDVF9D
QUxMKG1vY2ssIEZvbygiSGkiLCBfLCBfKSkuV2lsbE9uY2UoSW52b2tlKERpc3RhbmNlKSk7Citg
YGAKKworSW4gYEludm9rZUFyZ3VtZW50PE4+KC4uLilgLCBpZiBhbiBhcmd1bWVudCBuZWVkcyB0
byBiZSBwYXNzZWQgYnkgcmVmZXJlbmNlLCB3cmFwIGl0IGluc2lkZSBgQnlSZWYoKWAuIEZvciBl
eGFtcGxlLAorYGBgCisgIEludm9rZUFyZ3VtZW50PDI+KDUsIHN0cmluZygiSGkiKSwgQnlSZWYo
Zm9vKSkKK2BgYAorY2FsbHMgdGhlIG1vY2sgZnVuY3Rpb24ncyAjMiBhcmd1bWVudCwgcGFzc2lu
ZyB0byBpdCBgNWAgYW5kIGBzdHJpbmcoIkhpIilgIGJ5IHZhbHVlLCBhbmQgYGZvb2AgYnkgcmVm
ZXJlbmNlLgorCisjIyBEZWZhdWx0IEFjdGlvbiAjIworCit8YERvRGVmYXVsdCgpYHxEbyB0aGUg
ZGVmYXVsdCBhY3Rpb24gKHNwZWNpZmllZCBieSBgT05fQ0FMTCgpYCBvciB0aGUgYnVpbHQtaW4g
b25lKS58Cit8Oi0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisKKyoqTm90ZToqKiBkdWUgdG8g
dGVjaG5pY2FsIHJlYXNvbnMsIGBEb0RlZmF1bHQoKWAgY2Fubm90IGJlIHVzZWQgaW5zaWRlICBh
IGNvbXBvc2l0ZSBhY3Rpb24gLSB0cnlpbmcgdG8gZG8gc28gd2lsbCByZXN1bHQgaW4gYSBydW4t
dGltZSBlcnJvci4KKworIyMgQ29tcG9zaXRlIEFjdGlvbnMgIyMKKworfGBEb0FsbChhMSwgYTIs
IC4uLiwgYW4pYHxEbyBhbGwgYWN0aW9ucyBgYTFgIHRvIGBhbmAgYW5kIHJldHVybiB0aGUgcmVz
dWx0IG9mIGBhbmAgaW4gZWFjaCBpbnZvY2F0aW9uLiBUaGUgZmlyc3QgYG4gLSAxYCBzdWItYWN0
aW9ucyBtdXN0IHJldHVybiB2b2lkLiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLXwKK3xgSWdub3JlUmVzdWx0KGEpYCAgICAgICB8UGVyZm9ybSBhY3Rpb24gYGFgIGFu
ZCBpZ25vcmUgaXRzIHJlc3VsdC4gYGFgIG11c3Qgbm90IHJldHVybiB2b2lkLiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfGBXaXRo
QXJnPE4+KGEpYCAgICAgICAgIHxQYXNzIHRoZSBgTmAtdGggKDAtYmFzZWQpIGFyZ3VtZW50IG9m
IHRoZSBtb2NrIGZ1bmN0aW9uIHRvIGFjdGlvbiBgYWAgYW5kIHBlcmZvcm0gaXQuICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8YFdpdGhBcmdzPE4xLCBOMiwgLi4u
LCBOaz4oYSlgfFBhc3MgdGhlIHNlbGVjdGVkICgwLWJhc2VkKSBhcmd1bWVudHMgb2YgdGhlIG1v
Y2sgZnVuY3Rpb24gdG8gYWN0aW9uIGBhYCBhbmQgcGVyZm9ybSBpdC4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwKK3xgV2l0aG91dEFyZ3MoYSlgICAgICAgICB8UGVyZm9y
bSBhY3Rpb24gYGFgIHdpdGhvdXQgYW55IGFyZ3VtZW50cy4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfAorCisjIyBEZWZpbmluZyBBY3Rpb25zICMjCisKK3wgYEFDVElPTihTdW0pIHsgcmV0
dXJuIGFyZzAgKyBhcmcxOyB9YCB8IERlZmluZXMgYW4gYWN0aW9uIGBTdW0oKWAgdG8gcmV0dXJu
IHRoZSBzdW0gb2YgdGhlIG1vY2sgZnVuY3Rpb24ncyBhcmd1bWVudCAjMCBhbmQgIzEuIHwKK3w6
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLXwKK3wgYEFDVElPTl9QKFBsdXMsIG4pIHsgcmV0dXJuIGFyZzAgKyBuOyB9
YCB8IERlZmluZXMgYW4gYWN0aW9uIGBQbHVzKG4pYCB0byByZXR1cm4gdGhlIHN1bSBvZiB0aGUg
bW9jayBmdW5jdGlvbidzIGFyZ3VtZW50ICMwIGFuZCBgbmAuIHwKK3wgYEFDVElPTl9QayhGb28s
IHAxLCAuLi4sIHBrKSB7IHN0YXRlbWVudHM7IH1gIHwgRGVmaW5lcyBhIHBhcmFtZXRlcml6ZWQg
YWN0aW9uIGBGb28ocDEsIC4uLiwgcGspYCB0byBleGVjdXRlIHRoZSBnaXZlbiBgc3RhdGVtZW50
c2AuICAgfAorCitUaGUgYEFDVElPTipgIG1hY3JvcyBjYW5ub3QgYmUgdXNlZCBpbnNpZGUgYSBm
dW5jdGlvbiBvciBjbGFzcy4KKworIyBDYXJkaW5hbGl0aWVzICMKKworVGhlc2UgYXJlIHVzZWQg
aW4gYFRpbWVzKClgIHRvIHNwZWNpZnkgaG93IG1hbnkgdGltZXMgYSBtb2NrIGZ1bmN0aW9uIHdp
bGwgYmUgY2FsbGVkOgorCit8YEFueU51bWJlcigpYHxUaGUgZnVuY3Rpb24gY2FuIGJlIGNhbGxl
ZCBhbnkgbnVtYmVyIG9mIHRpbWVzLnwKK3w6LS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorfGBBdExlYXN0KG4pYCB8VGhlIGNhbGwg
aXMgZXhwZWN0ZWQgYXQgbGVhc3QgYG5gIHRpbWVzLiAgICAgICB8Cit8YEF0TW9zdChuKWAgIHxU
aGUgY2FsbCBpcyBleHBlY3RlZCBhdCBtb3N0IGBuYCB0aW1lcy4gICAgICAgIHwKK3xgQmV0d2Vl
bihtLCBuKWB8VGhlIGNhbGwgaXMgZXhwZWN0ZWQgYmV0d2VlbiBgbWAgYW5kIGBuYCAoaW5jbHVz
aXZlKSB0aW1lcy58Cit8YEV4YWN0bHkobikgb3IgbmB8VGhlIGNhbGwgaXMgZXhwZWN0ZWQgZXhh
Y3RseSBgbmAgdGltZXMuIEluIHBhcnRpY3VsYXIsIHRoZSBjYWxsIHNob3VsZCBuZXZlciBoYXBw
ZW4gd2hlbiBgbmAgaXMgMC58CisKKyMgRXhwZWN0YXRpb24gT3JkZXIgIworCitCeSBkZWZhdWx0
LCB0aGUgZXhwZWN0YXRpb25zIGNhbiBiZSBtYXRjaGVkIGluIF9hbnlfIG9yZGVyLiAgSWYgc29t
ZQorb3IgYWxsIGV4cGVjdGF0aW9ucyBtdXN0IGJlIG1hdGNoZWQgaW4gYSBnaXZlbiBvcmRlciwg
dGhlcmUgYXJlIHR3bword2F5cyB0byBzcGVjaWZ5IGl0LiAgVGhleSBjYW4gYmUgdXNlZCBlaXRo
ZXIgaW5kZXBlbmRlbnRseSBvcgordG9nZXRoZXIuCisKKyMjIFRoZSBBZnRlciBDbGF1c2UgIyMK
KworYGBgCit1c2luZyA6OnRlc3Rpbmc6OkV4cGVjdGF0aW9uOworLi4uCitFeHBlY3RhdGlvbiBp
bml0X3ggPSBFWFBFQ1RfQ0FMTChmb28sIEluaXRYKCkpOworRXhwZWN0YXRpb24gaW5pdF95ID0g
RVhQRUNUX0NBTEwoZm9vLCBJbml0WSgpKTsKK0VYUEVDVF9DQUxMKGZvbywgQmFyKCkpCisgICAg
LkFmdGVyKGluaXRfeCwgaW5pdF95KTsKK2BgYAorc2F5cyB0aGF0IGBCYXIoKWAgY2FuIGJlIGNh
bGxlZCBvbmx5IGFmdGVyIGJvdGggYEluaXRYKClgIGFuZAorYEluaXRZKClgIGhhdmUgYmVlbiBj
YWxsZWQuCisKK0lmIHlvdSBkb24ndCBrbm93IGhvdyBtYW55IHByZS1yZXF1aXNpdGVzIGFuIGV4
cGVjdGF0aW9uIGhhcyB3aGVuIHlvdQord3JpdGUgaXQsIHlvdSBjYW4gdXNlIGFuIGBFeHBlY3Rh
dGlvblNldGAgdG8gY29sbGVjdCB0aGVtOgorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6RXhwZWN0
YXRpb25TZXQ7CisuLi4KK0V4cGVjdGF0aW9uU2V0IGFsbF9pbml0czsKK2ZvciAoaW50IGkgPSAw
OyBpIDwgZWxlbWVudF9jb3VudDsgaSsrKSB7CisgIGFsbF9pbml0cyArPSBFWFBFQ1RfQ0FMTChm
b28sIEluaXRFbGVtZW50KGkpKTsKK30KK0VYUEVDVF9DQUxMKGZvbywgQmFyKCkpCisgICAgLkFm
dGVyKGFsbF9pbml0cyk7CitgYGAKK3NheXMgdGhhdCBgQmFyKClgIGNhbiBiZSBjYWxsZWQgb25s
eSBhZnRlciBhbGwgZWxlbWVudHMgaGF2ZSBiZWVuCitpbml0aWFsaXplZCAoYnV0IHdlIGRvbid0
IGNhcmUgYWJvdXQgd2hpY2ggZWxlbWVudHMgZ2V0IGluaXRpYWxpemVkCitiZWZvcmUgdGhlIG90
aGVycykuCisKK01vZGlmeWluZyBhbiBgRXhwZWN0YXRpb25TZXRgIGFmdGVyIHVzaW5nIGl0IGlu
IGFuIGAuQWZ0ZXIoKWAgZG9lc24ndAorYWZmZWN0IHRoZSBtZWFuaW5nIG9mIHRoZSBgLkFmdGVy
KClgLgorCisjIyBTZXF1ZW5jZXMgIyMKKworV2hlbiB5b3UgaGF2ZSBhIGxvbmcgY2hhaW4gb2Yg
c2VxdWVudGlhbCBleHBlY3RhdGlvbnMsIGl0J3MgZWFzaWVyIHRvCitzcGVjaWZ5IHRoZSBvcmRl
ciB1c2luZyAqKnNlcXVlbmNlcyoqLCB3aGljaCBkb24ndCByZXF1aXJlIHlvdSB0byBnaXZlbgor
ZWFjaCBleHBlY3RhdGlvbiBpbiB0aGUgY2hhaW4gYSBkaWZmZXJlbnQgbmFtZS4gIDxpPkFsbCBl
eHBlY3RlZDxicj4KK2NhbGxzPC9pPiBpbiB0aGUgc2FtZSBzZXF1ZW5jZSBtdXN0IG9jY3VyIGlu
IHRoZSBvcmRlciB0aGV5IGFyZQorc3BlY2lmaWVkLgorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6
U2VxdWVuY2U7CitTZXF1ZW5jZSBzMSwgczI7CisuLi4KK0VYUEVDVF9DQUxMKGZvbywgUmVzZXQo
KSkKKyAgICAuSW5TZXF1ZW5jZShzMSwgczIpCisgICAgLldpbGxPbmNlKFJldHVybih0cnVlKSk7
CitFWFBFQ1RfQ0FMTChmb28sIEdldFNpemUoKSkKKyAgICAuSW5TZXF1ZW5jZShzMSkKKyAgICAu
V2lsbE9uY2UoUmV0dXJuKDEpKTsKK0VYUEVDVF9DQUxMKGZvbywgRGVzY3JpYmUoQTxjb25zdCBj
aGFyKj4oKSkpCisgICAgLkluU2VxdWVuY2UoczIpCisgICAgLldpbGxPbmNlKFJldHVybigiZHVt
bXkiKSk7CitgYGAKK3NheXMgdGhhdCBgUmVzZXQoKWAgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIF9i
b3RoXyBgR2V0U2l6ZSgpYCBfYW5kXworYERlc2NyaWJlKClgLCBhbmQgdGhlIGxhdHRlciB0d28g
Y2FuIG9jY3VyIGluIGFueSBvcmRlci4KKworVG8gcHV0IG1hbnkgZXhwZWN0YXRpb25zIGluIGEg
c2VxdWVuY2UgY29udmVuaWVudGx5OgorYGBgCit1c2luZyA6OnRlc3Rpbmc6OkluU2VxdWVuY2U7
Cit7CisgIEluU2VxdWVuY2UgZHVtbXk7CisKKyAgRVhQRUNUX0NBTEwoLi4uKS4uLjsKKyAgRVhQ
RUNUX0NBTEwoLi4uKS4uLjsKKyAgLi4uCisgIEVYUEVDVF9DQUxMKC4uLikuLi47Cit9CitgYGAK
K3NheXMgdGhhdCBhbGwgZXhwZWN0ZWQgY2FsbHMgaW4gdGhlIHNjb3BlIG9mIGBkdW1teWAgbXVz
dCBvY2N1ciBpbgorc3RyaWN0IG9yZGVyLiBUaGUgbmFtZSBgZHVtbXlgIGlzIGlycmVsZXZhbnQu
KQorCisjIFZlcmlmeWluZyBhbmQgUmVzZXR0aW5nIGEgTW9jayAjCisKK0dvb2dsZSBNb2NrIHdp
bGwgdmVyaWZ5IHRoZSBleHBlY3RhdGlvbnMgb24gYSBtb2NrIG9iamVjdCB3aGVuIGl0IGlzIGRl
c3RydWN0ZWQsIG9yIHlvdSBjYW4gZG8gaXQgZWFybGllcjoKK2BgYAordXNpbmcgOjp0ZXN0aW5n
OjpNb2NrOworLi4uCisvLyBWZXJpZmllcyBhbmQgcmVtb3ZlcyB0aGUgZXhwZWN0YXRpb25zIG9u
IG1vY2tfb2JqOworLy8gcmV0dXJucyB0cnVlIGlmZiBzdWNjZXNzZnVsLgorTW9jazo6VmVyaWZ5
QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1vY2tfb2JqKTsKKy4uLgorLy8gVmVyaWZpZXMgYW5kIHJl
bW92ZXMgdGhlIGV4cGVjdGF0aW9ucyBvbiBtb2NrX29iajsKKy8vIGFsc28gcmVtb3ZlcyB0aGUg
ZGVmYXVsdCBhY3Rpb25zIHNldCBieSBPTl9DQUxMKCk7CisvLyByZXR1cm5zIHRydWUgaWZmIHN1
Y2Nlc3NmdWwuCitNb2NrOjpWZXJpZnlBbmRDbGVhcigmbW9ja19vYmopOworYGBgCisKK1lvdSBj
YW4gYWxzbyB0ZWxsIEdvb2dsZSBNb2NrIHRoYXQgYSBtb2NrIG9iamVjdCBjYW4gYmUgbGVha2Vk
IGFuZCBkb2Vzbid0CituZWVkIHRvIGJlIHZlcmlmaWVkOgorYGBgCitNb2NrOjpBbGxvd0xlYWso
Jm1vY2tfb2JqKTsKK2BgYAorCisjIE1vY2sgQ2xhc3NlcyAjCisKK0dvb2dsZSBNb2NrIGRlZmlu
ZXMgYSBjb252ZW5pZW50IG1vY2sgY2xhc3MgdGVtcGxhdGUKK2BgYAorY2xhc3MgTW9ja0Z1bmN0
aW9uPFIoQTEsIC4uLiwgQW4pPiB7CisgcHVibGljOgorICBNT0NLX01FVEhPRG4oQ2FsbCwgUihB
MSwgLi4uLCBBbikpOworfTsKK2BgYAorU2VlIHRoaXMgW3JlY2lwZV0oaHR0cDovL2NvZGUuZ29v
Z2xlLmNvbS9wL2dvb2dsZW1vY2svd2lraS9WMV83X0Nvb2tCb29rI1VzaW5nX0NoZWNrX1BvaW50
cykgZm9yIG9uZSBhcHBsaWNhdGlvbiBvZiBpdC4KKworIyBGbGFncyAjCisKK3wgYC0tZ21vY2tf
Y2F0Y2hfbGVha2VkX21vY2tzPTBgIHwgRG9uJ3QgcmVwb3J0IGxlYWtlZCBtb2NrIG9iamVjdHMg
YXMgZmFpbHVyZXMuIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKK3wgYC0tZ21vY2tfdmVy
Ym9zZT1MRVZFTGAgICAgICAgIHwgU2V0cyB0aGUgZGVmYXVsdCB2ZXJib3NpdHkgbGV2ZWwgKGBp
bmZvYCwgYHdhcm5pbmdgLCBvciBgZXJyb3JgKSBvZiBHb29nbGUgTW9jayBtZXNzYWdlcy4gfApc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3Mv
djFfNy9Db29rQm9vay5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvdjFfNy9Db29rQm9vay5tZApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40MTlhMDAxMDcxMjVlZmQ5MGZmZDg2ODQwMThjZGMwZjdjNmZmMDNlCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy92MV83L0Nvb2tCb29rLm1kCkBAIC0wLDAgKzEs
MzQzMiBAQAorCisKK1lvdSBjYW4gZmluZCByZWNpcGVzIGZvciB1c2luZyBHb29nbGUgTW9jayBo
ZXJlLiBJZiB5b3UgaGF2ZW4ndCB5ZXQsCitwbGVhc2UgcmVhZCB0aGUgW0ZvckR1bW1pZXNdKFYx
XzdfRm9yRHVtbWllcy5tZCkgZG9jdW1lbnQgZmlyc3QgdG8gbWFrZSBzdXJlIHlvdSB1bmRlcnN0
YW5kCit0aGUgYmFzaWNzLgorCisqKk5vdGU6KiogR29vZ2xlIE1vY2sgbGl2ZXMgaW4gdGhlIGB0
ZXN0aW5nYCBuYW1lIHNwYWNlLiBGb3IKK3JlYWRhYmlsaXR5LCBpdCBpcyByZWNvbW1lbmRlZCB0
byB3cml0ZSBgdXNpbmcgOjp0ZXN0aW5nOjpGb287YCBvbmNlIGluCit5b3VyIGZpbGUgYmVmb3Jl
IHVzaW5nIHRoZSBuYW1lIGBGb29gIGRlZmluZWQgYnkgR29vZ2xlIE1vY2suIFdlIG9taXQKK3N1
Y2ggYHVzaW5nYCBzdGF0ZW1lbnRzIGluIHRoaXMgcGFnZSBmb3IgYnJldml0eSwgYnV0IHlvdSBz
aG91bGQgZG8gaXQKK2luIHlvdXIgb3duIGNvZGUuCisKKyMgQ3JlYXRpbmcgTW9jayBDbGFzc2Vz
ICMKKworIyMgTW9ja2luZyBQcml2YXRlIG9yIFByb3RlY3RlZCBNZXRob2RzICMjCisKK1lvdSBt
dXN0IGFsd2F5cyBwdXQgYSBtb2NrIG1ldGhvZCBkZWZpbml0aW9uIChgTU9DS19NRVRIT0QqYCkg
aW4gYQorYHB1YmxpYzpgIHNlY3Rpb24gb2YgdGhlIG1vY2sgY2xhc3MsIHJlZ2FyZGxlc3Mgb2Yg
dGhlIG1ldGhvZCBiZWluZworbW9ja2VkIGJlaW5nIGBwdWJsaWNgLCBgcHJvdGVjdGVkYCwgb3Ig
YHByaXZhdGVgIGluIHRoZSBiYXNlIGNsYXNzLgorVGhpcyBhbGxvd3MgYE9OX0NBTExgIGFuZCBg
RVhQRUNUX0NBTExgIHRvIHJlZmVyZW5jZSB0aGUgbW9jayBmdW5jdGlvbgorZnJvbSBvdXRzaWRl
IG9mIHRoZSBtb2NrIGNsYXNzLiAgKFllcywgQysrIGFsbG93cyBhIHN1YmNsYXNzIHRvIGNoYW5n
ZQordGhlIGFjY2VzcyBsZXZlbCBvZiBhIHZpcnR1YWwgZnVuY3Rpb24gaW4gdGhlIGJhc2UgY2xh
c3MuKSAgRXhhbXBsZToKKworYGBgCitjbGFzcyBGb28geworIHB1YmxpYzoKKyAgLi4uCisgIHZp
cnR1YWwgYm9vbCBUcmFuc2Zvcm0oR2FkZ2V0KiBnKSA9IDA7CisKKyBwcm90ZWN0ZWQ6CisgIHZp
cnR1YWwgdm9pZCBSZXN1bWUoKTsKKworIHByaXZhdGU6CisgIHZpcnR1YWwgaW50IEdldFRpbWVP
dXQoKTsKK307CisKK2NsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKKyBwdWJsaWM6CisgIC4u
LgorICBNT0NLX01FVEhPRDEoVHJhbnNmb3JtLCBib29sKEdhZGdldCogZykpOworCisgIC8vIFRo
ZSBmb2xsb3dpbmcgbXVzdCBiZSBpbiB0aGUgcHVibGljIHNlY3Rpb24sIGV2ZW4gdGhvdWdoIHRo
ZQorICAvLyBtZXRob2RzIGFyZSBwcm90ZWN0ZWQgb3IgcHJpdmF0ZSBpbiB0aGUgYmFzZSBjbGFz
cy4KKyAgTU9DS19NRVRIT0QwKFJlc3VtZSwgdm9pZCgpKTsKKyAgTU9DS19NRVRIT0QwKEdldFRp
bWVPdXQsIGludCgpKTsKK307CitgYGAKKworIyMgTW9ja2luZyBPdmVybG9hZGVkIE1ldGhvZHMg
IyMKKworWW91IGNhbiBtb2NrIG92ZXJsb2FkZWQgZnVuY3Rpb25zIGFzIHVzdWFsLiBObyBzcGVj
aWFsIGF0dGVudGlvbiBpcyByZXF1aXJlZDoKKworYGBgCitjbGFzcyBGb28geworICAuLi4KKwor
ICAvLyBNdXN0IGJlIHZpcnR1YWwgYXMgd2UnbGwgaW5oZXJpdCBmcm9tIEZvby4KKyAgdmlydHVh
bCB+Rm9vKCk7CisKKyAgLy8gT3ZlcmxvYWRlZCBvbiB0aGUgdHlwZXMgYW5kL29yIG51bWJlcnMg
b2YgYXJndW1lbnRzLgorICB2aXJ0dWFsIGludCBBZGQoRWxlbWVudCB4KTsKKyAgdmlydHVhbCBp
bnQgQWRkKGludCB0aW1lcywgRWxlbWVudCB4KTsKKworICAvLyBPdmVybG9hZGVkIG9uIHRoZSBj
b25zdC1uZXNzIG9mIHRoaXMgb2JqZWN0LgorICB2aXJ0dWFsIEJhciYgR2V0QmFyKCk7CisgIHZp
cnR1YWwgY29uc3QgQmFyJiBHZXRCYXIoKSBjb25zdDsKK307CisKK2NsYXNzIE1vY2tGb28gOiBw
dWJsaWMgRm9vIHsKKyAgLi4uCisgIE1PQ0tfTUVUSE9EMShBZGQsIGludChFbGVtZW50IHgpKTsK
KyAgTU9DS19NRVRIT0QyKEFkZCwgaW50KGludCB0aW1lcywgRWxlbWVudCB4KTsKKworICBNT0NL
X01FVEhPRDAoR2V0QmFyLCBCYXImKCkpOworICBNT0NLX0NPTlNUX01FVEhPRDAoR2V0QmFyLCBj
b25zdCBCYXImKCkpOworfTsKK2BgYAorCisqKk5vdGU6KiogaWYgeW91IGRvbid0IG1vY2sgYWxs
IHZlcnNpb25zIG9mIHRoZSBvdmVybG9hZGVkIG1ldGhvZCwgdGhlCitjb21waWxlciB3aWxsIGdp
dmUgeW91IGEgd2FybmluZyBhYm91dCBzb21lIG1ldGhvZHMgaW4gdGhlIGJhc2UgY2xhc3MKK2Jl
aW5nIGhpZGRlbi4gVG8gZml4IHRoYXQsIHVzZSBgdXNpbmdgIHRvIGJyaW5nIHRoZW0gaW4gc2Nv
cGU6CisKK2BgYAorY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28geworICAuLi4KKyAgdXNpbmcg
Rm9vOjpBZGQ7CisgIE1PQ0tfTUVUSE9EMShBZGQsIGludChFbGVtZW50IHgpKTsKKyAgLy8gV2Ug
ZG9uJ3Qgd2FudCB0byBtb2NrIGludCBBZGQoaW50IHRpbWVzLCBFbGVtZW50IHgpOworICAuLi4K
K307CitgYGAKKworIyMgTW9ja2luZyBDbGFzcyBUZW1wbGF0ZXMgIyMKKworVG8gbW9jayBhIGNs
YXNzIHRlbXBsYXRlLCBhcHBlbmQgYF9UYCB0byB0aGUgYE1PQ0tfKmAgbWFjcm9zOgorCitgYGAK
K3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVtPgorY2xhc3MgU3RhY2tJbnRlcmZhY2UgeworICAuLi4K
KyAgLy8gTXVzdCBiZSB2aXJ0dWFsIGFzIHdlJ2xsIGluaGVyaXQgZnJvbSBTdGFja0ludGVyZmFj
ZS4KKyAgdmlydHVhbCB+U3RhY2tJbnRlcmZhY2UoKTsKKworICB2aXJ0dWFsIGludCBHZXRTaXpl
KCkgY29uc3QgPSAwOworICB2aXJ0dWFsIHZvaWQgUHVzaChjb25zdCBFbGVtJiB4KSA9IDA7Cit9
OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbT4KK2NsYXNzIE1vY2tTdGFjayA6IHB1YmxpYyBT
dGFja0ludGVyZmFjZTxFbGVtPiB7CisgIC4uLgorICBNT0NLX0NPTlNUX01FVEhPRDBfVChHZXRT
aXplLCBpbnQoKSk7CisgIE1PQ0tfTUVUSE9EMV9UKFB1c2gsIHZvaWQoY29uc3QgRWxlbSYgeCkp
OworfTsKK2BgYAorCisjIyBNb2NraW5nIE5vbnZpcnR1YWwgTWV0aG9kcyAjIworCitHb29nbGUg
TW9jayBjYW4gbW9jayBub24tdmlydHVhbCBmdW5jdGlvbnMgdG8gYmUgdXNlZCBpbiB3aGF0IHdl
IGNhbGwgX2hpLXBlcmYKK2RlcGVuZGVuY3kgaW5qZWN0aW9uXy4KKworSW4gdGhpcyBjYXNlLCBp
bnN0ZWFkIG9mIHNoYXJpbmcgYSBjb21tb24gYmFzZSBjbGFzcyB3aXRoIHRoZSByZWFsCitjbGFz
cywgeW91ciBtb2NrIGNsYXNzIHdpbGwgYmUgX3VucmVsYXRlZF8gdG8gdGhlIHJlYWwgY2xhc3Ms
IGJ1dAorY29udGFpbiBtZXRob2RzIHdpdGggdGhlIHNhbWUgc2lnbmF0dXJlcy4gIFRoZSBzeW50
YXggZm9yIG1vY2tpbmcKK25vbi12aXJ0dWFsIG1ldGhvZHMgaXMgdGhlIF9zYW1lXyBhcyBtb2Nr
aW5nIHZpcnR1YWwgbWV0aG9kczoKKworYGBgCisvLyBBIHNpbXBsZSBwYWNrZXQgc3RyZWFtIGNs
YXNzLiAgTm9uZSBvZiBpdHMgbWVtYmVycyBpcyB2aXJ0dWFsLgorY2xhc3MgQ29uY3JldGVQYWNr
ZXRTdHJlYW0geworIHB1YmxpYzoKKyAgdm9pZCBBcHBlbmRQYWNrZXQoUGFja2V0KiBuZXdfcGFj
a2V0KTsKKyAgY29uc3QgUGFja2V0KiBHZXRQYWNrZXQoc2l6ZV90IHBhY2tldF9udW1iZXIpIGNv
bnN0OworICBzaXplX3QgTnVtYmVyT2ZQYWNrZXRzKCkgY29uc3Q7CisgIC4uLgorfTsKKworLy8g
QSBtb2NrIHBhY2tldCBzdHJlYW0gY2xhc3MuICBJdCBpbmhlcml0cyBmcm9tIG5vIG90aGVyLCBi
dXQgZGVmaW5lcworLy8gR2V0UGFja2V0KCkgYW5kIE51bWJlck9mUGFja2V0cygpLgorY2xhc3Mg
TW9ja1BhY2tldFN0cmVhbSB7CisgcHVibGljOgorICBNT0NLX0NPTlNUX01FVEhPRDEoR2V0UGFj
a2V0LCBjb25zdCBQYWNrZXQqKHNpemVfdCBwYWNrZXRfbnVtYmVyKSk7CisgIE1PQ0tfQ09OU1Rf
TUVUSE9EMChOdW1iZXJPZlBhY2tldHMsIHNpemVfdCgpKTsKKyAgLi4uCit9OworYGBgCisKK05v
dGUgdGhhdCB0aGUgbW9jayBjbGFzcyBkb2Vzbid0IGRlZmluZSBgQXBwZW5kUGFja2V0KClgLCB1
bmxpa2UgdGhlCityZWFsIGNsYXNzLiBUaGF0J3MgZmluZSBhcyBsb25nIGFzIHRoZSB0ZXN0IGRv
ZXNuJ3QgbmVlZCB0byBjYWxsIGl0LgorCitOZXh0LCB5b3UgbmVlZCBhIHdheSB0byBzYXkgdGhh
dCB5b3Ugd2FudCB0byB1c2UKK2BDb25jcmV0ZVBhY2tldFN0cmVhbWAgaW4gcHJvZHVjdGlvbiBj
b2RlLCBhbmQgdXNlIGBNb2NrUGFja2V0U3RyZWFtYAoraW4gdGVzdHMuICBTaW5jZSB0aGUgZnVu
Y3Rpb25zIGFyZSBub3QgdmlydHVhbCBhbmQgdGhlIHR3byBjbGFzc2VzIGFyZQordW5yZWxhdGVk
LCB5b3UgbXVzdCBzcGVjaWZ5IHlvdXIgY2hvaWNlIGF0IF9jb21waWxlIHRpbWVfIChhcyBvcHBv
c2VkCit0byBydW4gdGltZSkuCisKK09uZSB3YXkgdG8gZG8gaXQgaXMgdG8gdGVtcGxhdGl6ZSB5
b3VyIGNvZGUgdGhhdCBuZWVkcyB0byB1c2UgYSBwYWNrZXQKK3N0cmVhbS4gIE1vcmUgc3BlY2lm
aWNhbGx5LCB5b3Ugd2lsbCBnaXZlIHlvdXIgY29kZSBhIHRlbXBsYXRlIHR5cGUKK2FyZ3VtZW50
IGZvciB0aGUgdHlwZSBvZiB0aGUgcGFja2V0IHN0cmVhbS4gIEluIHByb2R1Y3Rpb24sIHlvdSB3
aWxsCitpbnN0YW50aWF0ZSB5b3VyIHRlbXBsYXRlIHdpdGggYENvbmNyZXRlUGFja2V0U3RyZWFt
YCBhcyB0aGUgdHlwZQorYXJndW1lbnQuICBJbiB0ZXN0cywgeW91IHdpbGwgaW5zdGFudGlhdGUg
dGhlIHNhbWUgdGVtcGxhdGUgd2l0aAorYE1vY2tQYWNrZXRTdHJlYW1gLiAgRm9yIGV4YW1wbGUs
IHlvdSBtYXkgd3JpdGU6CisKK2BgYAordGVtcGxhdGUgPGNsYXNzIFBhY2tldFN0cmVhbT4KK3Zv
aWQgQ3JlYXRlQ29ubmVjdGlvbihQYWNrZXRTdHJlYW0qIHN0cmVhbSkgeyAuLi4gfQorCit0ZW1w
bGF0ZSA8Y2xhc3MgUGFja2V0U3RyZWFtPgorY2xhc3MgUGFja2V0UmVhZGVyIHsKKyBwdWJsaWM6
CisgIHZvaWQgUmVhZFBhY2tldHMoUGFja2V0U3RyZWFtKiBzdHJlYW0sIHNpemVfdCBwYWNrZXRf
bnVtKTsKK307CitgYGAKKworVGhlbiB5b3UgY2FuIHVzZSBgQ3JlYXRlQ29ubmVjdGlvbjxDb25j
cmV0ZVBhY2tldFN0cmVhbT4oKWAgYW5kCitgUGFja2V0UmVhZGVyPENvbmNyZXRlUGFja2V0U3Ry
ZWFtPmAgaW4gcHJvZHVjdGlvbiBjb2RlLCBhbmQgdXNlCitgQ3JlYXRlQ29ubmVjdGlvbjxNb2Nr
UGFja2V0U3RyZWFtPigpYCBhbmQKK2BQYWNrZXRSZWFkZXI8TW9ja1BhY2tldFN0cmVhbT5gIGlu
IHRlc3RzLgorCitgYGAKKyAgTW9ja1BhY2tldFN0cmVhbSBtb2NrX3N0cmVhbTsKKyAgRVhQRUNU
X0NBTEwobW9ja19zdHJlYW0sIC4uLikuLi47CisgIC4uIHNldCBtb3JlIGV4cGVjdGF0aW9ucyBv
biBtb2NrX3N0cmVhbSAuLi4KKyAgUGFja2V0UmVhZGVyPE1vY2tQYWNrZXRTdHJlYW0+IHJlYWRl
cigmbW9ja19zdHJlYW0pOworICAuLi4gZXhlcmNpc2UgcmVhZGVyIC4uLgorYGBgCisKKyMjIE1v
Y2tpbmcgRnJlZSBGdW5jdGlvbnMgIyMKKworSXQncyBwb3NzaWJsZSB0byB1c2UgR29vZ2xlIE1v
Y2sgdG8gbW9jayBhIGZyZWUgZnVuY3Rpb24gKGkuZS4gYQorQy1zdHlsZSBmdW5jdGlvbiBvciBh
IHN0YXRpYyBtZXRob2QpLiAgWW91IGp1c3QgbmVlZCB0byByZXdyaXRlIHlvdXIKK2NvZGUgdG8g
dXNlIGFuIGludGVyZmFjZSAoYWJzdHJhY3QgY2xhc3MpLgorCitJbnN0ZWFkIG9mIGNhbGxpbmcg
YSBmcmVlIGZ1bmN0aW9uIChzYXksIGBPcGVuRmlsZWApIGRpcmVjdGx5LAoraW50cm9kdWNlIGFu
IGludGVyZmFjZSBmb3IgaXQgYW5kIGhhdmUgYSBjb25jcmV0ZSBzdWJjbGFzcyB0aGF0IGNhbGxz
Cit0aGUgZnJlZSBmdW5jdGlvbjoKKworYGBgCitjbGFzcyBGaWxlSW50ZXJmYWNlIHsKKyBwdWJs
aWM6CisgIC4uLgorICB2aXJ0dWFsIGJvb2wgT3Blbihjb25zdCBjaGFyKiBwYXRoLCBjb25zdCBj
aGFyKiBtb2RlKSA9IDA7Cit9OworCitjbGFzcyBGaWxlIDogcHVibGljIEZpbGVJbnRlcmZhY2Ug
eworIHB1YmxpYzoKKyAgLi4uCisgIHZpcnR1YWwgYm9vbCBPcGVuKGNvbnN0IGNoYXIqIHBhdGgs
IGNvbnN0IGNoYXIqIG1vZGUpIHsKKyAgICByZXR1cm4gT3BlbkZpbGUocGF0aCwgbW9kZSk7Cisg
IH0KK307CitgYGAKKworWW91ciBjb2RlIHNob3VsZCB0YWxrIHRvIGBGaWxlSW50ZXJmYWNlYCB0
byBvcGVuIGEgZmlsZS4gIE5vdyBpdCdzCitlYXN5IHRvIG1vY2sgb3V0IHRoZSBmdW5jdGlvbi4K
KworVGhpcyBtYXkgc2VlbSBtdWNoIGhhc3NsZSwgYnV0IGluIHByYWN0aWNlIHlvdSBvZnRlbiBo
YXZlIG11bHRpcGxlCityZWxhdGVkIGZ1bmN0aW9ucyB0aGF0IHlvdSBjYW4gcHV0IGluIHRoZSBz
YW1lIGludGVyZmFjZSwgc28gdGhlCitwZXItZnVuY3Rpb24gc3ludGFjdGljIG92ZXJoZWFkIHdp
bGwgYmUgbXVjaCBsb3dlci4KKworSWYgeW91IGFyZSBjb25jZXJuZWQgYWJvdXQgdGhlIHBlcmZv
cm1hbmNlIG92ZXJoZWFkIGluY3VycmVkIGJ5Cit2aXJ0dWFsIGZ1bmN0aW9ucywgYW5kIHByb2Zp
bGluZyBjb25maXJtcyB5b3VyIGNvbmNlcm4sIHlvdSBjYW4KK2NvbWJpbmUgdGhpcyB3aXRoIHRo
ZSByZWNpcGUgZm9yIFttb2NraW5nIG5vbi12aXJ0dWFsIG1ldGhvZHNdKCNNb2NraW5nX05vbnZp
cnR1YWxfTWV0aG9kcy5tZCkuCisKKyMjIFRoZSBOaWNlLCB0aGUgU3RyaWN0LCBhbmQgdGhlIE5h
Z2d5ICMjCisKK0lmIGEgbW9jayBtZXRob2QgaGFzIG5vIGBFWFBFQ1RfQ0FMTGAgc3BlYyBidXQg
aXMgY2FsbGVkLCBHb29nbGUgTW9jaword2lsbCBwcmludCBhIHdhcm5pbmcgYWJvdXQgdGhlICJ1
bmludGVyZXN0aW5nIGNhbGwiLiBUaGUgcmF0aW9uYWxlIGlzOgorCisgICogTmV3IG1ldGhvZHMg
bWF5IGJlIGFkZGVkIHRvIGFuIGludGVyZmFjZSBhZnRlciBhIHRlc3QgaXMgd3JpdHRlbi4gV2Ug
c2hvdWxkbid0IGZhaWwgYSB0ZXN0IGp1c3QgYmVjYXVzZSBhIG1ldGhvZCBpdCBkb2Vzbid0IGtu
b3cgYWJvdXQgaXMgY2FsbGVkLgorICAqIEhvd2V2ZXIsIHRoaXMgbWF5IGFsc28gbWVhbiB0aGVy
ZSdzIGEgYnVnIGluIHRoZSB0ZXN0LCBzbyBHb29nbGUgTW9jayBzaG91bGRuJ3QgYmUgc2lsZW50
IGVpdGhlci4gSWYgdGhlIHVzZXIgYmVsaWV2ZXMgdGhlc2UgY2FsbHMgYXJlIGhhcm1sZXNzLCBo
ZSBjYW4gYWRkIGFuIGBFWFBFQ1RfQ0FMTCgpYCB0byBzdXBwcmVzcyB0aGUgd2FybmluZy4KKwor
SG93ZXZlciwgc29tZXRpbWVzIHlvdSBtYXkgd2FudCB0byBzdXBwcmVzcyBhbGwgInVuaW50ZXJl
c3RpbmcgY2FsbCIKK3dhcm5pbmdzLCB3aGlsZSBzb21ldGltZXMgeW91IG1heSB3YW50IHRoZSBv
cHBvc2l0ZSwgaS5lLiB0byB0cmVhdCBhbGwKK29mIHRoZW0gYXMgZXJyb3JzLiBHb29nbGUgTW9j
ayBsZXRzIHlvdSBtYWtlIHRoZSBkZWNpc2lvbiBvbiBhCitwZXItbW9jay1vYmplY3QgYmFzaXMu
CisKK1N1cHBvc2UgeW91ciB0ZXN0IHVzZXMgYSBtb2NrIGNsYXNzIGBNb2NrRm9vYDoKKworYGBg
CitURVNUKC4uLikgeworICBNb2NrRm9vIG1vY2tfZm9vOworICBFWFBFQ1RfQ0FMTChtb2NrX2Zv
bywgRG9UaGlzKCkpOworICAuLi4gY29kZSB0aGF0IHVzZXMgbW9ja19mb28gLi4uCit9CitgYGAK
KworSWYgYSBtZXRob2Qgb2YgYG1vY2tfZm9vYCBvdGhlciB0aGFuIGBEb1RoaXMoKWAgaXMgY2Fs
bGVkLCBpdCB3aWxsIGJlCityZXBvcnRlZCBieSBHb29nbGUgTW9jayBhcyBhIHdhcm5pbmcuIEhv
d2V2ZXIsIGlmIHlvdSByZXdyaXRlIHlvdXIKK3Rlc3QgdG8gdXNlIGBOaWNlTW9jazxNb2NrRm9v
PmAgaW5zdGVhZCwgdGhlIHdhcm5pbmcgd2lsbCBiZSBnb25lLAorcmVzdWx0aW5nIGluIGEgY2xl
YW5lciB0ZXN0IG91dHB1dDoKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6Ok5pY2VNb2NrOworCitU
RVNUKC4uLikgeworICBOaWNlTW9jazxNb2NrRm9vPiBtb2NrX2ZvbzsKKyAgRVhQRUNUX0NBTEwo
bW9ja19mb28sIERvVGhpcygpKTsKKyAgLi4uIGNvZGUgdGhhdCB1c2VzIG1vY2tfZm9vIC4uLgor
fQorYGBgCisKK2BOaWNlTW9jazxNb2NrRm9vPmAgaXMgYSBzdWJjbGFzcyBvZiBgTW9ja0Zvb2As
IHNvIGl0IGNhbiBiZSB1c2VkCit3aGVyZXZlciBgTW9ja0Zvb2AgaXMgYWNjZXB0ZWQuCisKK0l0
IGFsc28gd29ya3MgaWYgYE1vY2tGb29gJ3MgY29uc3RydWN0b3IgdGFrZXMgc29tZSBhcmd1bWVu
dHMsIGFzCitgTmljZU1vY2s8TW9ja0Zvbz5gICJpbmhlcml0cyIgYE1vY2tGb29gJ3MgY29uc3Ry
dWN0b3JzOgorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6TmljZU1vY2s7CisKK1RFU1QoLi4uKSB7
CisgIE5pY2VNb2NrPE1vY2tGb28+IG1vY2tfZm9vKDUsICJoaSIpOyAgLy8gQ2FsbHMgTW9ja0Zv
byg1LCAiaGkiKS4KKyAgRVhQRUNUX0NBTEwobW9ja19mb28sIERvVGhpcygpKTsKKyAgLi4uIGNv
ZGUgdGhhdCB1c2VzIG1vY2tfZm9vIC4uLgorfQorYGBgCisKK1RoZSB1c2FnZSBvZiBgU3RyaWN0
TW9ja2AgaXMgc2ltaWxhciwgZXhjZXB0IHRoYXQgaXQgbWFrZXMgYWxsCit1bmludGVyZXN0aW5n
IGNhbGxzIGZhaWx1cmVzOgorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6U3RyaWN0TW9jazsKKwor
VEVTVCguLi4pIHsKKyAgU3RyaWN0TW9jazxNb2NrRm9vPiBtb2NrX2ZvbzsKKyAgRVhQRUNUX0NB
TEwobW9ja19mb28sIERvVGhpcygpKTsKKyAgLi4uIGNvZGUgdGhhdCB1c2VzIG1vY2tfZm9vIC4u
LgorCisgIC8vIFRoZSB0ZXN0IHdpbGwgZmFpbCBpZiBhIG1ldGhvZCBvZiBtb2NrX2ZvbyBvdGhl
ciB0aGFuIERvVGhpcygpCisgIC8vIGlzIGNhbGxlZC4KK30KK2BgYAorCitUaGVyZSBhcmUgc29t
ZSBjYXZlYXRzIHRob3VnaCAoSSBkb24ndCBsaWtlIHRoZW0ganVzdCBhcyBtdWNoIGFzIHRoZQor
bmV4dCBndXksIGJ1dCBzYWRseSB0aGV5IGFyZSBzaWRlIGVmZmVjdHMgb2YgQysrJ3MgbGltaXRh
dGlvbnMpOgorCisgIDEuIGBOaWNlTW9jazxNb2NrRm9vPmAgYW5kIGBTdHJpY3RNb2NrPE1vY2tG
b28+YCBvbmx5IHdvcmsgZm9yIG1vY2sgbWV0aG9kcyBkZWZpbmVkIHVzaW5nIHRoZSBgTU9DS19N
RVRIT0QqYCBmYW1pbHkgb2YgbWFjcm9zICoqZGlyZWN0bHkqKiBpbiB0aGUgYE1vY2tGb29gIGNs
YXNzLiBJZiBhIG1vY2sgbWV0aG9kIGlzIGRlZmluZWQgaW4gYSAqKmJhc2UgY2xhc3MqKiBvZiBg
TW9ja0Zvb2AsIHRoZSAibmljZSIgb3IgInN0cmljdCIgbW9kaWZpZXIgbWF5IG5vdCBhZmZlY3Qg
aXQsIGRlcGVuZGluZyBvbiB0aGUgY29tcGlsZXIuIEluIHBhcnRpY3VsYXIsIG5lc3RpbmcgYE5p
Y2VNb2NrYCBhbmQgYFN0cmljdE1vY2tgIChlLmcuIGBOaWNlTW9jazxTdHJpY3RNb2NrPE1vY2tG
b28+ID5gKSBpcyAqKm5vdCoqIHN1cHBvcnRlZC4KKyAgMS4gVGhlIGNvbnN0cnVjdG9ycyBvZiB0
aGUgYmFzZSBtb2NrIChgTW9ja0Zvb2ApIGNhbm5vdCBoYXZlIGFyZ3VtZW50cyBwYXNzZWQgYnkg
bm9uLWNvbnN0IHJlZmVyZW5jZSwgd2hpY2ggaGFwcGVucyB0byBiZSBiYW5uZWQgYnkgdGhlIFtH
b29nbGUgQysrIHN0eWxlIGd1aWRlXShodHRwOi8vZ29vZ2xlLXN0eWxlZ3VpZGUuZ29vZ2xlY29k
ZS5jb20vc3ZuL3RydW5rL2NwcGd1aWRlLnhtbCkuCisgIDEuIER1cmluZyB0aGUgY29uc3RydWN0
b3Igb3IgZGVzdHJ1Y3RvciBvZiBgTW9ja0Zvb2AsIHRoZSBtb2NrIG9iamVjdCBpcyBfbm90XyBu
aWNlIG9yIHN0cmljdC4gIFRoaXMgbWF5IGNhdXNlIHN1cnByaXNlcyBpZiB0aGUgY29uc3RydWN0
b3Igb3IgZGVzdHJ1Y3RvciBjYWxscyBhIG1vY2sgbWV0aG9kIG9uIGB0aGlzYCBvYmplY3QuIChU
aGlzIGJlaGF2aW9yLCBob3dldmVyLCBpcyBjb25zaXN0ZW50IHdpdGggQysrJ3MgZ2VuZXJhbCBy
dWxlOiBpZiBhIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3IgY2FsbHMgYSB2aXJ0dWFsIG1ldGhv
ZCBvZiBgdGhpc2Agb2JqZWN0LCB0aGF0IG1ldGhvZCBpcyB0cmVhdGVkIGFzIG5vbi12aXJ0dWFs
LiAgSW4gb3RoZXIgd29yZHMsIHRvIHRoZSBiYXNlIGNsYXNzJ3MgY29uc3RydWN0b3Igb3IgZGVz
dHJ1Y3RvciwgYHRoaXNgIG9iamVjdCBiZWhhdmVzIGxpa2UgYW4gaW5zdGFuY2Ugb2YgdGhlIGJh
c2UgY2xhc3MsIG5vdCB0aGUgZGVyaXZlZCBjbGFzcy4gIFRoaXMgcnVsZSBpcyByZXF1aXJlZCBm
b3Igc2FmZXR5LiAgT3RoZXJ3aXNlIGEgYmFzZSBjb25zdHJ1Y3RvciBtYXkgdXNlIG1lbWJlcnMg
b2YgYSBkZXJpdmVkIGNsYXNzIGJlZm9yZSB0aGV5IGFyZSBpbml0aWFsaXplZCwgb3IgYSBiYXNl
IGRlc3RydWN0b3IgbWF5IHVzZSBtZW1iZXJzIG9mIGEgZGVyaXZlZCBjbGFzcyBhZnRlciB0aGV5
IGhhdmUgYmVlbiBkZXN0cm95ZWQuKQorCitGaW5hbGx5LCB5b3Ugc2hvdWxkIGJlICoqdmVyeSBj
YXV0aW91cyoqIGFib3V0IHdoZW4gdG8gdXNlIG5hZ2d5IG9yIHN0cmljdCBtb2NrcywgYXMgdGhl
eSB0ZW5kIHRvIG1ha2UgdGVzdHMgbW9yZSBicml0dGxlIGFuZCBoYXJkZXIgdG8gbWFpbnRhaW4u
IFdoZW4geW91IHJlZmFjdG9yIHlvdXIgY29kZSB3aXRob3V0IGNoYW5naW5nIGl0cyBleHRlcm5h
bGx5IHZpc2libGUgYmVoYXZpb3IsIGlkZWFsbHkgeW91IHNob3VsZCd0IG5lZWQgdG8gdXBkYXRl
IGFueSB0ZXN0cy4gSWYgeW91ciBjb2RlIGludGVyYWN0cyB3aXRoIGEgbmFnZ3kgbW9jaywgaG93
ZXZlciwgeW91IG1heSBzdGFydCB0byBnZXQgc3BhbW1lZCB3aXRoIHdhcm5pbmdzIGFzIHRoZSBy
ZXN1bHQgb2YgeW91ciBjaGFuZ2UuIFdvcnNlLCBpZiB5b3VyIGNvZGUgaW50ZXJhY3RzIHdpdGgg
YSBzdHJpY3QgbW9jaywgeW91ciB0ZXN0cyBtYXkgc3RhcnQgdG8gZmFpbCBhbmQgeW91J2xsIGJl
IGZvcmNlZCB0byBmaXggdGhlbS4gT3VyIGdlbmVyYWwgcmVjb21tZW5kYXRpb24gaXMgdG8gdXNl
IG5pY2UgbW9ja3MgKG5vdCB5ZXQgdGhlIGRlZmF1bHQpIG1vc3Qgb2YgdGhlIHRpbWUsIHVzZSBu
YWdneSBtb2NrcyAodGhlIGN1cnJlbnQgZGVmYXVsdCkgd2hlbiBkZXZlbG9waW5nIG9yIGRlYnVn
Z2luZyB0ZXN0cywgYW5kIHVzZSBzdHJpY3QgbW9ja3Mgb25seSBhcyB0aGUgbGFzdCByZXNvcnQu
CisKKyMjIFNpbXBsaWZ5aW5nIHRoZSBJbnRlcmZhY2Ugd2l0aG91dCBCcmVha2luZyBFeGlzdGlu
ZyBDb2RlICMjCisKK1NvbWV0aW1lcyBhIG1ldGhvZCBoYXMgYSBsb25nIGxpc3Qgb2YgYXJndW1l
bnRzIHRoYXQgaXMgbW9zdGx5Cit1bmludGVyZXN0aW5nLiBGb3IgZXhhbXBsZSwKKworYGBgCitj
bGFzcyBMb2dTaW5rIHsKKyBwdWJsaWM6CisgIC4uLgorICB2aXJ0dWFsIHZvaWQgc2VuZChMb2dT
ZXZlcml0eSBzZXZlcml0eSwgY29uc3QgY2hhciogZnVsbF9maWxlbmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogYmFzZV9maWxlbmFtZSwgaW50IGxpbmUsCisgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0cnVjdCB0bSogdG1fdGltZSwKKyAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogbWVzc2FnZSwgc2l6ZV90IG1lc3NhZ2VfbGVuKSA9IDA7Cit9OworYGBgCisK
K1RoaXMgbWV0aG9kJ3MgYXJndW1lbnQgbGlzdCBpcyBsZW5ndGh5IGFuZCBoYXJkIHRvIHdvcmsg
d2l0aCAobGV0J3MKK3NheSB0aGF0IHRoZSBgbWVzc2FnZWAgYXJndW1lbnQgaXMgbm90IGV2ZW4g
MC10ZXJtaW5hdGVkKS4gSWYgd2UgbW9jaworaXQgYXMgaXMsIHVzaW5nIHRoZSBtb2NrIHdpbGwg
YmUgYXdrd2FyZC4gSWYsIGhvd2V2ZXIsIHdlIHRyeSB0bworc2ltcGxpZnkgdGhpcyBpbnRlcmZh
Y2UsIHdlJ2xsIG5lZWQgdG8gZml4IGFsbCBjbGllbnRzIGRlcGVuZGluZyBvbgoraXQsIHdoaWNo
IGlzIG9mdGVuIGluZmVhc2libGUuCisKK1RoZSB0cmljayBpcyB0byByZS1kaXNwYXRjaCB0aGUg
bWV0aG9kIGluIHRoZSBtb2NrIGNsYXNzOgorCitgYGAKK2NsYXNzIFNjb3BlZE1vY2tMb2cgOiBw
dWJsaWMgTG9nU2luayB7CisgcHVibGljOgorICAuLi4KKyAgdmlydHVhbCB2b2lkIHNlbmQoTG9n
U2V2ZXJpdHkgc2V2ZXJpdHksIGNvbnN0IGNoYXIqIGZ1bGxfZmlsZW5hbWUsCisgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIGJhc2VfZmlsZW5hbWUsIGludCBsaW5lLCBjb25zdCB0bSog
dG1fdGltZSwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbWVzc2FnZSwgc2l6ZV90
IG1lc3NhZ2VfbGVuKSB7CisgICAgLy8gV2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUgbG9n
IHNldmVyaXR5LCBmdWxsIGZpbGUgbmFtZSwgYW5kCisgICAgLy8gbG9nIG1lc3NhZ2UuCisgICAg
TG9nKHNldmVyaXR5LCBmdWxsX2ZpbGVuYW1lLCBzdGQ6OnN0cmluZyhtZXNzYWdlLCBtZXNzYWdl
X2xlbikpOworICB9CisKKyAgLy8gSW1wbGVtZW50cyB0aGUgbW9jayBtZXRob2Q6CisgIC8vCisg
IC8vICAgdm9pZCBMb2coTG9nU2V2ZXJpdHkgc2V2ZXJpdHksCisgIC8vICAgICAgICAgICAgY29u
c3Qgc3RyaW5nJiBmaWxlX3BhdGgsCisgIC8vICAgICAgICAgICAgY29uc3Qgc3RyaW5nJiBtZXNz
YWdlKTsKKyAgTU9DS19NRVRIT0QzKExvZywgdm9pZChMb2dTZXZlcml0eSBzZXZlcml0eSwgY29u
c3Qgc3RyaW5nJiBmaWxlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Ry
aW5nJiBtZXNzYWdlKSk7Cit9OworYGBgCisKK0J5IGRlZmluaW5nIGEgbmV3IG1vY2sgbWV0aG9k
IHdpdGggYSB0cmltbWVkIGFyZ3VtZW50IGxpc3QsIHdlIG1ha2UKK3RoZSBtb2NrIGNsYXNzIG11
Y2ggbW9yZSB1c2VyLWZyaWVuZGx5LgorCisjIyBBbHRlcm5hdGl2ZSB0byBNb2NraW5nIENvbmNy
ZXRlIENsYXNzZXMgIyMKKworT2Z0ZW4geW91IG1heSBmaW5kIHlvdXJzZWxmIHVzaW5nIGNsYXNz
ZXMgdGhhdCBkb24ndCBpbXBsZW1lbnQKK2ludGVyZmFjZXMuIEluIG9yZGVyIHRvIHRlc3QgeW91
ciBjb2RlIHRoYXQgdXNlcyBzdWNoIGEgY2xhc3MgKGxldCdzCitjYWxsIGl0IGBDb25jcmV0ZWAp
LCB5b3UgbWF5IGJlIHRlbXB0ZWQgdG8gbWFrZSB0aGUgbWV0aG9kcyBvZgorYENvbmNyZXRlYCB2
aXJ0dWFsIGFuZCB0aGVuIG1vY2sgaXQuCisKK1RyeSBub3QgdG8gZG8gdGhhdC4KKworTWFraW5n
IGEgbm9uLXZpcnR1YWwgZnVuY3Rpb24gdmlydHVhbCBpcyBhIGJpZyBkZWNpc2lvbi4gSXQgY3Jl
YXRlcyBhbgorZXh0ZW5zaW9uIHBvaW50IHdoZXJlIHN1YmNsYXNzZXMgY2FuIHR3ZWFrIHlvdXIg
Y2xhc3MnIGJlaGF2aW9yLiBUaGlzCit3ZWFrZW5zIHlvdXIgY29udHJvbCBvbiB0aGUgY2xhc3Mg
YmVjYXVzZSBub3cgaXQncyBoYXJkZXIgdG8gbWFpbnRhaW4KK3RoZSBjbGFzcycgaW52YXJpYW50
cy4gWW91IHNob3VsZCBtYWtlIGEgZnVuY3Rpb24gdmlydHVhbCBvbmx5IHdoZW4KK3RoZXJlIGlz
IGEgdmFsaWQgcmVhc29uIGZvciBhIHN1YmNsYXNzIHRvIG92ZXJyaWRlIGl0LgorCitNb2NraW5n
IGNvbmNyZXRlIGNsYXNzZXMgZGlyZWN0bHkgaXMgcHJvYmxlbWF0aWMgYXMgaXQgY3JlYXRlcyBh
IHRpZ2h0Citjb3VwbGluZyBiZXR3ZWVuIHRoZSBjbGFzcyBhbmQgdGhlIHRlc3RzIC0gYW55IHNt
YWxsIGNoYW5nZSBpbiB0aGUKK2NsYXNzIG1heSBpbnZhbGlkYXRlIHlvdXIgdGVzdHMgYW5kIG1h
a2UgdGVzdCBtYWludGVuYW5jZSBhIHBhaW4uCisKK1RvIGF2b2lkIHN1Y2ggcHJvYmxlbXMsIG1h
bnkgcHJvZ3JhbW1lcnMgaGF2ZSBiZWVuIHByYWN0aWNpbmcgImNvZGluZwordG8gaW50ZXJmYWNl
cyI6IGluc3RlYWQgb2YgdGFsa2luZyB0byB0aGUgYENvbmNyZXRlYCBjbGFzcywgeW91ciBjb2Rl
Cit3b3VsZCBkZWZpbmUgYW4gaW50ZXJmYWNlIGFuZCB0YWxrIHRvIGl0LiBUaGVuIHlvdSBpbXBs
ZW1lbnQgdGhhdAoraW50ZXJmYWNlIGFzIGFuIGFkYXB0b3Igb24gdG9wIG9mIGBDb25jcmV0ZWAu
IEluIHRlc3RzLCB5b3UgY2FuIGVhc2lseQorbW9jayB0aGF0IGludGVyZmFjZSB0byBvYnNlcnZl
IGhvdyB5b3VyIGNvZGUgaXMgZG9pbmcuCisKK1RoaXMgdGVjaG5pcXVlIGluY3VycyBzb21lIG92
ZXJoZWFkOgorCisgICogWW91IHBheSB0aGUgY29zdCBvZiB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGxz
ICh1c3VhbGx5IG5vdCBhIHByb2JsZW0pLgorICAqIFRoZXJlIGlzIG1vcmUgYWJzdHJhY3Rpb24g
Zm9yIHRoZSBwcm9ncmFtbWVycyB0byBsZWFybi4KKworSG93ZXZlciwgaXQgY2FuIGFsc28gYnJp
bmcgc2lnbmlmaWNhbnQgYmVuZWZpdHMgaW4gYWRkaXRpb24gdG8gYmV0dGVyCit0ZXN0YWJpbGl0
eToKKworICAqIGBDb25jcmV0ZWAncyBBUEkgbWF5IG5vdCBmaXQgeW91ciBwcm9ibGVtIGRvbWFp
biB2ZXJ5IHdlbGwsIGFzIHlvdSBtYXkgbm90IGJlIHRoZSBvbmx5IGNsaWVudCBpdCB0cmllcyB0
byBzZXJ2ZS4gQnkgZGVzaWduaW5nIHlvdXIgb3duIGludGVyZmFjZSwgeW91IGhhdmUgYSBjaGFu
Y2UgdG8gdGFpbG9yIGl0IHRvIHlvdXIgbmVlZCAtIHlvdSBtYXkgYWRkIGhpZ2hlci1sZXZlbCBm
dW5jdGlvbmFsaXRpZXMsIHJlbmFtZSBzdHVmZiwgZXRjIGluc3RlYWQgb2YganVzdCB0cmltbWlu
ZyB0aGUgY2xhc3MuIFRoaXMgYWxsb3dzIHlvdSB0byB3cml0ZSB5b3VyIGNvZGUgKHVzZXIgb2Yg
dGhlIGludGVyZmFjZSkgaW4gYSBtb3JlIG5hdHVyYWwgd2F5LCB3aGljaCBtZWFucyBpdCB3aWxs
IGJlIG1vcmUgcmVhZGFibGUsIG1vcmUgbWFpbnRhaW5hYmxlLCBhbmQgeW91J2xsIGJlIG1vcmUg
cHJvZHVjdGl2ZS4KKyAgKiBJZiBgQ29uY3JldGVgJ3MgaW1wbGVtZW50YXRpb24gZXZlciBoYXMg
dG8gY2hhbmdlLCB5b3UgZG9uJ3QgaGF2ZSB0byByZXdyaXRlIGV2ZXJ5d2hlcmUgaXQgaXMgdXNl
ZC4gSW5zdGVhZCwgeW91IGNhbiBhYnNvcmIgdGhlIGNoYW5nZSBpbiB5b3VyIGltcGxlbWVudGF0
aW9uIG9mIHRoZSBpbnRlcmZhY2UsIGFuZCB5b3VyIG90aGVyIGNvZGUgYW5kIHRlc3RzIHdpbGwg
YmUgaW5zdWxhdGVkIGZyb20gdGhpcyBjaGFuZ2UuCisKK1NvbWUgcGVvcGxlIHdvcnJ5IHRoYXQg
aWYgZXZlcnlvbmUgaXMgcHJhY3RpY2luZyB0aGlzIHRlY2huaXF1ZSwgdGhleQord2lsbCBlbmQg
dXAgd3JpdGluZyBsb3RzIG9mIHJlZHVuZGFudCBjb2RlLiBUaGlzIGNvbmNlcm4gaXMgdG90YWxs
eQordW5kZXJzdGFuZGFibGUuIEhvd2V2ZXIsIHRoZXJlIGFyZSB0d28gcmVhc29ucyB3aHkgaXQg
bWF5IG5vdCBiZSB0aGUKK2Nhc2U6CisKKyAgKiBEaWZmZXJlbnQgcHJvamVjdHMgbWF5IG5lZWQg
dG8gdXNlIGBDb25jcmV0ZWAgaW4gZGlmZmVyZW50IHdheXMsIHNvIHRoZSBiZXN0IGludGVyZmFj
ZXMgZm9yIHRoZW0gd2lsbCBiZSBkaWZmZXJlbnQuIFRoZXJlZm9yZSwgZWFjaCBvZiB0aGVtIHdp
bGwgaGF2ZSBpdHMgb3duIGRvbWFpbi1zcGVjaWZpYyBpbnRlcmZhY2Ugb24gdG9wIG9mIGBDb25j
cmV0ZWAsIGFuZCB0aGV5IHdpbGwgbm90IGJlIHRoZSBzYW1lIGNvZGUuCisgICogSWYgZW5vdWdo
IHByb2plY3RzIHdhbnQgdG8gdXNlIHRoZSBzYW1lIGludGVyZmFjZSwgdGhleSBjYW4gYWx3YXlz
IHNoYXJlIGl0LCBqdXN0IGxpa2UgdGhleSBoYXZlIGJlZW4gc2hhcmluZyBgQ29uY3JldGVgLiBZ
b3UgY2FuIGNoZWNrIGluIHRoZSBpbnRlcmZhY2UgYW5kIHRoZSBhZGFwdG9yIHNvbWV3aGVyZSBu
ZWFyIGBDb25jcmV0ZWAgKHBlcmhhcHMgaW4gYSBgY29udHJpYmAgc3ViLWRpcmVjdG9yeSkgYW5k
IGxldCBtYW55IHByb2plY3RzIHVzZSBpdC4KKworWW91IG5lZWQgdG8gd2VpZ2ggdGhlIHByb3Mg
YW5kIGNvbnMgY2FyZWZ1bGx5IGZvciB5b3VyIHBhcnRpY3VsYXIKK3Byb2JsZW0sIGJ1dCBJJ2Qg
bGlrZSB0byBhc3N1cmUgeW91IHRoYXQgdGhlIEphdmEgY29tbXVuaXR5IGhhcyBiZWVuCitwcmFj
dGljaW5nIHRoaXMgZm9yIGEgbG9uZyB0aW1lIGFuZCBpdCdzIGEgcHJvdmVuIGVmZmVjdGl2ZSB0
ZWNobmlxdWUKK2FwcGxpY2FibGUgaW4gYSB3aWRlIHZhcmlldHkgb2Ygc2l0dWF0aW9ucy4gOi0p
CisKKyMjIERlbGVnYXRpbmcgQ2FsbHMgdG8gYSBGYWtlICMjCisKK1NvbWUgdGltZXMgeW91IGhh
dmUgYSBub24tdHJpdmlhbCBmYWtlIGltcGxlbWVudGF0aW9uIG9mIGFuCitpbnRlcmZhY2UuIEZv
ciBleGFtcGxlOgorCitgYGAKK2NsYXNzIEZvbyB7CisgcHVibGljOgorICB2aXJ0dWFsIH5Gb28o
KSB7fQorICB2aXJ0dWFsIGNoYXIgRG9UaGlzKGludCBuKSA9IDA7CisgIHZpcnR1YWwgdm9pZCBE
b1RoYXQoY29uc3QgY2hhciogcywgaW50KiBwKSA9IDA7Cit9OworCitjbGFzcyBGYWtlRm9vIDog
cHVibGljIEZvbyB7CisgcHVibGljOgorICB2aXJ0dWFsIGNoYXIgRG9UaGlzKGludCBuKSB7Cisg
ICAgcmV0dXJuIChuID4gMCkgPyAnKycgOgorICAgICAgICAobiA8IDApID8gJy0nIDogJzAnOwor
ICB9CisKKyAgdmlydHVhbCB2b2lkIERvVGhhdChjb25zdCBjaGFyKiBzLCBpbnQqIHApIHsKKyAg
ICAqcCA9IHN0cmxlbihzKTsKKyAgfQorfTsKK2BgYAorCitOb3cgeW91IHdhbnQgdG8gbW9jayB0
aGlzIGludGVyZmFjZSBzdWNoIHRoYXQgeW91IGNhbiBzZXQgZXhwZWN0YXRpb25zCitvbiBpdC4g
SG93ZXZlciwgeW91IGFsc28gd2FudCB0byB1c2UgYEZha2VGb29gIGZvciB0aGUgZGVmYXVsdAor
YmVoYXZpb3IsIGFzIGR1cGxpY2F0aW5nIGl0IGluIHRoZSBtb2NrIG9iamVjdCBpcywgd2VsbCwg
YSBsb3Qgb2YKK3dvcmsuCisKK1doZW4geW91IGRlZmluZSB0aGUgbW9jayBjbGFzcyB1c2luZyBH
b29nbGUgTW9jaywgeW91IGNhbiBoYXZlIGl0CitkZWxlZ2F0ZSBpdHMgZGVmYXVsdCBhY3Rpb24g
dG8gYSBmYWtlIGNsYXNzIHlvdSBhbHJlYWR5IGhhdmUsIHVzaW5nCit0aGlzIHBhdHRlcm46CisK
K2BgYAordXNpbmcgOjp0ZXN0aW5nOjpfOwordXNpbmcgOjp0ZXN0aW5nOjpJbnZva2U7CisKK2Ns
YXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKKyBwdWJsaWM6CisgIC8vIE5vcm1hbCBtb2NrIG1l
dGhvZCBkZWZpbml0aW9ucyB1c2luZyBHb29nbGUgTW9jay4KKyAgTU9DS19NRVRIT0QxKERvVGhp
cywgY2hhcihpbnQgbikpOworICBNT0NLX01FVEhPRDIoRG9UaGF0LCB2b2lkKGNvbnN0IGNoYXIq
IHMsIGludCogcCkpOworCisgIC8vIERlbGVnYXRlcyB0aGUgZGVmYXVsdCBhY3Rpb25zIG9mIHRo
ZSBtZXRob2RzIHRvIGEgRmFrZUZvbyBvYmplY3QuCisgIC8vIFRoaXMgbXVzdCBiZSBjYWxsZWQg
KmJlZm9yZSogdGhlIGN1c3RvbSBPTl9DQUxMKCkgc3RhdGVtZW50cy4KKyAgdm9pZCBEZWxlZ2F0
ZVRvRmFrZSgpIHsKKyAgICBPTl9DQUxMKCp0aGlzLCBEb1RoaXMoXykpCisgICAgICAgIC5XaWxs
QnlEZWZhdWx0KEludm9rZSgmZmFrZV8sICZGYWtlRm9vOjpEb1RoaXMpKTsKKyAgICBPTl9DQUxM
KCp0aGlzLCBEb1RoYXQoXywgXykpCisgICAgICAgIC5XaWxsQnlEZWZhdWx0KEludm9rZSgmZmFr
ZV8sICZGYWtlRm9vOjpEb1RoYXQpKTsKKyAgfQorIHByaXZhdGU6CisgIEZha2VGb28gZmFrZV87
ICAvLyBLZWVwcyBhbiBpbnN0YW5jZSBvZiB0aGUgZmFrZSBpbiB0aGUgbW9jay4KK307CitgYGAK
KworV2l0aCB0aGF0LCB5b3UgY2FuIHVzZSBgTW9ja0Zvb2AgaW4geW91ciB0ZXN0cyBhcyB1c3Vh
bC4gSnVzdCByZW1lbWJlcgordGhhdCBpZiB5b3UgZG9uJ3QgZXhwbGljaXRseSBzZXQgYW4gYWN0
aW9uIGluIGFuIGBPTl9DQUxMKClgIG9yCitgRVhQRUNUX0NBTEwoKWAsIHRoZSBmYWtlIHdpbGwg
YmUgY2FsbGVkIHVwb24gdG8gZG8gaXQ6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpfOworCitU
RVNUKEFiY1Rlc3QsIFh5eikgeworICBNb2NrRm9vIGZvbzsKKyAgZm9vLkRlbGVnYXRlVG9GYWtl
KCk7IC8vIEVuYWJsZXMgdGhlIGZha2UgZm9yIGRlbGVnYXRpb24uCisKKyAgLy8gUHV0IHlvdXIg
T05fQ0FMTChmb28sIC4uLilzIGhlcmUsIGlmIGFueS4KKworICAvLyBObyBhY3Rpb24gc3BlY2lm
aWVkLCBtZWFuaW5nIHRvIHVzZSB0aGUgZGVmYXVsdCBhY3Rpb24uCisgIEVYUEVDVF9DQUxMKGZv
bywgRG9UaGlzKDUpKTsKKyAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoYXQoXywgXykpOworCisgIGlu
dCBuID0gMDsKKyAgRVhQRUNUX0VRKCcrJywgZm9vLkRvVGhpcyg1KSk7ICAvLyBGYWtlRm9vOjpE
b1RoaXMoKSBpcyBpbnZva2VkLgorICBmb28uRG9UaGF0KCJIaSIsICZuKTsgICAgICAgICAgIC8v
IEZha2VGb286OkRvVGhhdCgpIGlzIGludm9rZWQuCisgIEVYUEVDVF9FUSgyLCBuKTsKK30KK2Bg
YAorCisqKlNvbWUgdGlwczoqKgorCisgICogSWYgeW91IHdhbnQsIHlvdSBjYW4gc3RpbGwgb3Zl
cnJpZGUgdGhlIGRlZmF1bHQgYWN0aW9uIGJ5IHByb3ZpZGluZyB5b3VyIG93biBgT05fQ0FMTCgp
YCBvciB1c2luZyBgLldpbGxPbmNlKClgIC8gYC5XaWxsUmVwZWF0ZWRseSgpYCBpbiBgRVhQRUNU
X0NBTEwoKWAuCisgICogSW4gYERlbGVnYXRlVG9GYWtlKClgLCB5b3Ugb25seSBuZWVkIHRvIGRl
bGVnYXRlIHRoZSBtZXRob2RzIHdob3NlIGZha2UgaW1wbGVtZW50YXRpb24geW91IGludGVuZCB0
byB1c2UuCisgICogVGhlIGdlbmVyYWwgdGVjaG5pcXVlIGRpc2N1c3NlZCBoZXJlIHdvcmtzIGZv
ciBvdmVybG9hZGVkIG1ldGhvZHMsIGJ1dCB5b3UnbGwgbmVlZCB0byB0ZWxsIHRoZSBjb21waWxl
ciB3aGljaCB2ZXJzaW9uIHlvdSBtZWFuLiBUbyBkaXNhbWJpZ3VhdGUgYSBtb2NrIGZ1bmN0aW9u
ICh0aGUgb25lIHlvdSBzcGVjaWZ5IGluc2lkZSB0aGUgcGFyZW50aGVzZXMgb2YgYE9OX0NBTEwo
KWApLCBzZWUgdGhlICJTZWxlY3RpbmcgQmV0d2VlbiBPdmVybG9hZGVkIEZ1bmN0aW9ucyIgc2Vj
dGlvbiBvbiB0aGlzIHBhZ2U7IHRvIGRpc2FtYmlndWF0ZSBhIGZha2UgZnVuY3Rpb24gKHRoZSBv
bmUgeW91IHBsYWNlIGluc2lkZSBgSW52b2tlKClgKSwgdXNlIGEgYHN0YXRpY19jYXN0YCB0byBz
cGVjaWZ5IHRoZSBmdW5jdGlvbidzIHR5cGUuIEZvciBpbnN0YW5jZSwgaWYgY2xhc3MgYEZvb2Ag
aGFzIG1ldGhvZHMgYGNoYXIgRG9UaGlzKGludCBuKWAgYW5kIGBib29sIERvVGhpcyhkb3VibGUg
eCkgY29uc3RgLCBhbmQgeW91IHdhbnQgdG8gaW52b2tlIHRoZSBsYXR0ZXIsIHlvdSBuZWVkIHRv
IHdyaXRlIGBJbnZva2UoJmZha2VfLCBzdGF0aWNfY2FzdDxib29sIChGYWtlRm9vOjoqKShkb3Vi
bGUpIGNvbnN0PigmRmFrZUZvbzo6RG9UaGlzKSlgIGluc3RlYWQgb2YgYEludm9rZSgmZmFrZV8s
ICZGYWtlRm9vOjpEb1RoaXMpYCAoVGhlIHN0cmFuZ2UtbG9va2luZyB0aGluZyBpbnNpZGUgdGhl
IGFuZ2xlZCBicmFja2V0cyBvZiBgc3RhdGljX2Nhc3RgIGlzIHRoZSB0eXBlIG9mIGEgZnVuY3Rp
b24gcG9pbnRlciB0byB0aGUgc2Vjb25kIGBEb1RoaXMoKWAgbWV0aG9kLikuCisgICogSGF2aW5n
IHRvIG1peCBhIG1vY2sgYW5kIGEgZmFrZSBpcyBvZnRlbiBhIHNpZ24gb2Ygc29tZXRoaW5nIGdv
bmUgd3JvbmcuIFBlcmhhcHMgeW91IGhhdmVuJ3QgZ290IHVzZWQgdG8gdGhlIGludGVyYWN0aW9u
LWJhc2VkIHdheSBvZiB0ZXN0aW5nIHlldC4gT3IgcGVyaGFwcyB5b3VyIGludGVyZmFjZSBpcyB0
YWtpbmcgb24gdG9vIG1hbnkgcm9sZXMgYW5kIHNob3VsZCBiZSBzcGxpdCB1cC4gVGhlcmVmb3Jl
LCAqKmRvbid0IGFidXNlIHRoaXMqKi4gV2Ugd291bGQgb25seSByZWNvbW1lbmQgdG8gZG8gaXQg
YXMgYW4gaW50ZXJtZWRpYXRlIHN0ZXAgd2hlbiB5b3UgYXJlIHJlZmFjdG9yaW5nIHlvdXIgY29k
ZS4KKworUmVnYXJkaW5nIHRoZSB0aXAgb24gbWl4aW5nIGEgbW9jayBhbmQgYSBmYWtlLCBoZXJl
J3MgYW4gZXhhbXBsZSBvbgord2h5IGl0IG1heSBiZSBhIGJhZCBzaWduOiBTdXBwb3NlIHlvdSBo
YXZlIGEgY2xhc3MgYFN5c3RlbWAgZm9yCitsb3ctbGV2ZWwgc3lzdGVtIG9wZXJhdGlvbnMuIElu
IHBhcnRpY3VsYXIsIGl0IGRvZXMgZmlsZSBhbmQgSS9PCitvcGVyYXRpb25zLiBBbmQgc3VwcG9z
ZSB5b3Ugd2FudCB0byB0ZXN0IGhvdyB5b3VyIGNvZGUgdXNlcyBgU3lzdGVtYAordG8gZG8gSS9P
LCBhbmQgeW91IGp1c3Qgd2FudCB0aGUgZmlsZSBvcGVyYXRpb25zIHRvIHdvcmsgbm9ybWFsbHku
IElmCit5b3UgbW9jayBvdXQgdGhlIGVudGlyZSBgU3lzdGVtYCBjbGFzcywgeW91J2xsIGhhdmUg
dG8gcHJvdmlkZSBhIGZha2UKK2ltcGxlbWVudGF0aW9uIGZvciB0aGUgZmlsZSBvcGVyYXRpb24g
cGFydCwgd2hpY2ggc3VnZ2VzdHMgdGhhdAorYFN5c3RlbWAgaXMgdGFraW5nIG9uIHRvbyBtYW55
IHJvbGVzLgorCitJbnN0ZWFkLCB5b3UgY2FuIGRlZmluZSBhIGBGaWxlT3BzYCBpbnRlcmZhY2Ug
YW5kIGFuIGBJT09wc2AgaW50ZXJmYWNlCithbmQgc3BsaXQgYFN5c3RlbWAncyBmdW5jdGlvbmFs
aXRpZXMgaW50byB0aGUgdHdvLiBUaGVuIHlvdSBjYW4gbW9jaworYElPT3BzYCB3aXRob3V0IG1v
Y2tpbmcgYEZpbGVPcHNgLgorCisjIyBEZWxlZ2F0aW5nIENhbGxzIHRvIGEgUmVhbCBPYmplY3Qg
IyMKKworV2hlbiB1c2luZyB0ZXN0aW5nIGRvdWJsZXMgKG1vY2tzLCBmYWtlcywgc3R1YnMsIGFu
ZCBldGMpLCBzb21ldGltZXMKK3RoZWlyIGJlaGF2aW9ycyB3aWxsIGRpZmZlciBmcm9tIHRob3Nl
IG9mIHRoZSByZWFsIG9iamVjdHMuIFRoaXMKK2RpZmZlcmVuY2UgY291bGQgYmUgZWl0aGVyIGlu
dGVudGlvbmFsIChhcyBpbiBzaW11bGF0aW5nIGFuIGVycm9yIHN1Y2gKK3RoYXQgeW91IGNhbiB0
ZXN0IHRoZSBlcnJvciBoYW5kbGluZyBjb2RlKSBvciB1bmludGVudGlvbmFsLiBJZiB5b3VyCitt
b2NrcyBoYXZlIGRpZmZlcmVudCBiZWhhdmlvcnMgdGhhbiB0aGUgcmVhbCBvYmplY3RzIGJ5IG1p
c3Rha2UsIHlvdQorY291bGQgZW5kIHVwIHdpdGggY29kZSB0aGF0IHBhc3NlcyB0aGUgdGVzdHMg
YnV0IGZhaWxzIGluIHByb2R1Y3Rpb24uCisKK1lvdSBjYW4gdXNlIHRoZSBfZGVsZWdhdGluZy10
by1yZWFsXyB0ZWNobmlxdWUgdG8gZW5zdXJlIHRoYXQgeW91cgorbW9jayBoYXMgdGhlIHNhbWUg
YmVoYXZpb3IgYXMgdGhlIHJlYWwgb2JqZWN0IHdoaWxlIHJldGFpbmluZyB0aGUKK2FiaWxpdHkg
dG8gdmFsaWRhdGUgY2FsbHMuIFRoaXMgdGVjaG5pcXVlIGlzIHZlcnkgc2ltaWxhciB0byB0aGUK
K2RlbGVnYXRpbmctdG8tZmFrZSB0ZWNobmlxdWUsIHRoZSBkaWZmZXJlbmNlIGJlaW5nIHRoYXQg
d2UgdXNlIGEgcmVhbAorb2JqZWN0IGluc3RlYWQgb2YgYSBmYWtlLiBIZXJlJ3MgYW4gZXhhbXBs
ZToKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6Ol87Cit1c2luZyA6OnRlc3Rpbmc6OkF0TGVhc3Q7
Cit1c2luZyA6OnRlc3Rpbmc6Okludm9rZTsKKworY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28g
eworIHB1YmxpYzoKKyAgTW9ja0ZvbygpIHsKKyAgICAvLyBCeSBkZWZhdWx0LCBhbGwgY2FsbHMg
YXJlIGRlbGVnYXRlZCB0byB0aGUgcmVhbCBvYmplY3QuCisgICAgT05fQ0FMTCgqdGhpcywgRG9U
aGlzKCkpCisgICAgICAgIC5XaWxsQnlEZWZhdWx0KEludm9rZSgmcmVhbF8sICZGb286OkRvVGhp
cykpOworICAgIE9OX0NBTEwoKnRoaXMsIERvVGhhdChfKSkKKyAgICAgICAgLldpbGxCeURlZmF1
bHQoSW52b2tlKCZyZWFsXywgJkZvbzo6RG9UaGF0KSk7CisgICAgLi4uCisgIH0KKyAgTU9DS19N
RVRIT0QwKERvVGhpcywgLi4uKTsKKyAgTU9DS19NRVRIT0QxKERvVGhhdCwgLi4uKTsKKyAgLi4u
CisgcHJpdmF0ZToKKyAgRm9vIHJlYWxfOworfTsKKy4uLgorCisgIE1vY2tGb28gbW9jazsKKwor
ICBFWFBFQ1RfQ0FMTChtb2NrLCBEb1RoaXMoKSkKKyAgICAgIC5UaW1lcygzKTsKKyAgRVhQRUNU
X0NBTEwobW9jaywgRG9UaGF0KCJIaSIpKQorICAgICAgLlRpbWVzKEF0TGVhc3QoMSkpOworICAu
Li4gdXNlIG1vY2sgaW4gdGVzdCAuLi4KK2BgYAorCitXaXRoIHRoaXMsIEdvb2dsZSBNb2NrIHdp
bGwgdmVyaWZ5IHRoYXQgeW91ciBjb2RlIG1hZGUgdGhlIHJpZ2h0IGNhbGxzCisod2l0aCB0aGUg
cmlnaHQgYXJndW1lbnRzLCBpbiB0aGUgcmlnaHQgb3JkZXIsIGNhbGxlZCB0aGUgcmlnaHQgbnVt
YmVyCitvZiB0aW1lcywgZXRjKSwgYW5kIGEgcmVhbCBvYmplY3Qgd2lsbCBhbnN3ZXIgdGhlIGNh
bGxzIChzbyB0aGUKK2JlaGF2aW9yIHdpbGwgYmUgdGhlIHNhbWUgYXMgaW4gcHJvZHVjdGlvbiku
IFRoaXMgZ2l2ZXMgeW91IHRoZSBiZXN0CitvZiBib3RoIHdvcmxkcy4KKworIyMgRGVsZWdhdGlu
ZyBDYWxscyB0byBhIFBhcmVudCBDbGFzcyAjIworCitJZGVhbGx5LCB5b3Ugc2hvdWxkIGNvZGUg
dG8gaW50ZXJmYWNlcywgd2hvc2UgbWV0aG9kcyBhcmUgYWxsIHB1cmUKK3ZpcnR1YWwuIEluIHJl
YWxpdHksIHNvbWV0aW1lcyB5b3UgZG8gbmVlZCB0byBtb2NrIGEgdmlydHVhbCBtZXRob2QKK3Ro
YXQgaXMgbm90IHB1cmUgKGkuZSwgaXQgYWxyZWFkeSBoYXMgYW4gaW1wbGVtZW50YXRpb24pLiBG
b3IgZXhhbXBsZToKKworYGBgCitjbGFzcyBGb28geworIHB1YmxpYzoKKyAgdmlydHVhbCB+Rm9v
KCk7CisKKyAgdmlydHVhbCB2b2lkIFB1cmUoaW50IG4pID0gMDsKKyAgdmlydHVhbCBpbnQgQ29u
Y3JldGUoY29uc3QgY2hhciogc3RyKSB7IC4uLiB9Cit9OworCitjbGFzcyBNb2NrRm9vIDogcHVi
bGljIEZvbyB7CisgcHVibGljOgorICAvLyBNb2NraW5nIGEgcHVyZSBtZXRob2QuCisgIE1PQ0tf
TUVUSE9EMShQdXJlLCB2b2lkKGludCBuKSk7CisgIC8vIE1vY2tpbmcgYSBjb25jcmV0ZSBtZXRo
b2QuICBGb286OkNvbmNyZXRlKCkgaXMgc2hhZG93ZWQuCisgIE1PQ0tfTUVUSE9EMShDb25jcmV0
ZSwgaW50KGNvbnN0IGNoYXIqIHN0cikpOworfTsKK2BgYAorCitTb21ldGltZXMgeW91IG1heSB3
YW50IHRvIGNhbGwgYEZvbzo6Q29uY3JldGUoKWAgaW5zdGVhZCBvZgorYE1vY2tGb286OkNvbmNy
ZXRlKClgLiBQZXJoYXBzIHlvdSB3YW50IHRvIGRvIGl0IGFzIHBhcnQgb2YgYSBzdHViCithY3Rp
b24sIG9yIHBlcmhhcHMgeW91ciB0ZXN0IGRvZXNuJ3QgbmVlZCB0byBtb2NrIGBDb25jcmV0ZSgp
YCBhdCBhbGwKKyhidXQgaXQgd291bGQgYmUgb2gtc28gcGFpbmZ1bCB0byBoYXZlIHRvIGRlZmlu
ZSBhIG5ldyBtb2NrIGNsYXNzCit3aGVuZXZlciB5b3UgZG9uJ3QgbmVlZCB0byBtb2NrIG9uZSBv
ZiBpdHMgbWV0aG9kcykuCisKK1RoZSB0cmljayBpcyB0byBsZWF2ZSBhIGJhY2sgZG9vciBpbiB5
b3VyIG1vY2sgY2xhc3MgZm9yIGFjY2Vzc2luZyB0aGUKK3JlYWwgbWV0aG9kcyBpbiB0aGUgYmFz
ZSBjbGFzczoKKworYGBgCitjbGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7CisgcHVibGljOgor
ICAvLyBNb2NraW5nIGEgcHVyZSBtZXRob2QuCisgIE1PQ0tfTUVUSE9EMShQdXJlLCB2b2lkKGlu
dCBuKSk7CisgIC8vIE1vY2tpbmcgYSBjb25jcmV0ZSBtZXRob2QuICBGb286OkNvbmNyZXRlKCkg
aXMgc2hhZG93ZWQuCisgIE1PQ0tfTUVUSE9EMShDb25jcmV0ZSwgaW50KGNvbnN0IGNoYXIqIHN0
cikpOworCisgIC8vIFVzZSB0aGlzIHRvIGNhbGwgQ29uY3JldGUoKSBkZWZpbmVkIGluIEZvby4K
KyAgaW50IEZvb0NvbmNyZXRlKGNvbnN0IGNoYXIqIHN0cikgeyByZXR1cm4gRm9vOjpDb25jcmV0
ZShzdHIpOyB9Cit9OworYGBgCisKK05vdywgeW91IGNhbiBjYWxsIGBGb286OkNvbmNyZXRlKClg
IGluc2lkZSBhbiBhY3Rpb24gYnk6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpfOwordXNpbmcg
Ojp0ZXN0aW5nOjpJbnZva2U7CisuLi4KKyAgRVhQRUNUX0NBTEwoZm9vLCBDb25jcmV0ZShfKSkK
KyAgICAgIC5XaWxsT25jZShJbnZva2UoJmZvbywgJk1vY2tGb286OkZvb0NvbmNyZXRlKSk7Citg
YGAKKworb3IgdGVsbCB0aGUgbW9jayBvYmplY3QgdGhhdCB5b3UgZG9uJ3Qgd2FudCB0byBtb2Nr
IGBDb25jcmV0ZSgpYDoKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6Okludm9rZTsKKy4uLgorICBP
Tl9DQUxMKGZvbywgQ29uY3JldGUoXykpCisgICAgICAuV2lsbEJ5RGVmYXVsdChJbnZva2UoJmZv
bywgJk1vY2tGb286OkZvb0NvbmNyZXRlKSk7CitgYGAKKworKFdoeSBkb24ndCB3ZSBqdXN0IHdy
aXRlIGBJbnZva2UoJmZvbywgJkZvbzo6Q29uY3JldGUpYD8gSWYgeW91IGRvCit0aGF0LCBgTW9j
a0Zvbzo6Q29uY3JldGUoKWAgd2lsbCBiZSBjYWxsZWQgKGFuZCBjYXVzZSBhbiBpbmZpbml0ZQor
cmVjdXJzaW9uKSBzaW5jZSBgRm9vOjpDb25jcmV0ZSgpYCBpcyB2aXJ0dWFsLiBUaGF0J3MganVz
dCBob3cgQysrCit3b3Jrcy4pCisKKyMgVXNpbmcgTWF0Y2hlcnMgIworCisjIyBNYXRjaGluZyBB
cmd1bWVudCBWYWx1ZXMgRXhhY3RseSAjIworCitZb3UgY2FuIHNwZWNpZnkgZXhhY3RseSB3aGlj
aCBhcmd1bWVudHMgYSBtb2NrIG1ldGhvZCBpcyBleHBlY3Rpbmc6CisKK2BgYAordXNpbmcgOjp0
ZXN0aW5nOjpSZXR1cm47CisuLi4KKyAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoaXMoNSkpCisgICAg
ICAuV2lsbE9uY2UoUmV0dXJuKCdhJykpOworICBFWFBFQ1RfQ0FMTChmb28sIERvVGhhdCgiSGVs
bG8iLCBiYXIpKTsKK2BgYAorCisjIyBVc2luZyBTaW1wbGUgTWF0Y2hlcnMgIyMKKworWW91IGNh
biB1c2UgbWF0Y2hlcnMgdG8gbWF0Y2ggYXJndW1lbnRzIHRoYXQgaGF2ZSBhIGNlcnRhaW4gcHJv
cGVydHk6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpHZTsKK3VzaW5nIDo6dGVzdGluZzo6Tm90
TnVsbDsKK3VzaW5nIDo6dGVzdGluZzo6UmV0dXJuOworLi4uCisgIEVYUEVDVF9DQUxMKGZvbywg
RG9UaGlzKEdlKDUpKSkgIC8vIFRoZSBhcmd1bWVudCBtdXN0IGJlID49IDUuCisgICAgICAuV2ls
bE9uY2UoUmV0dXJuKCdhJykpOworICBFWFBFQ1RfQ0FMTChmb28sIERvVGhhdCgiSGVsbG8iLCBO
b3ROdWxsKCkpKTsKKyAgLy8gVGhlIHNlY29uZCBhcmd1bWVudCBtdXN0IG5vdCBiZSBOVUxMLgor
YGBgCisKK0EgZnJlcXVlbnRseSB1c2VkIG1hdGNoZXIgaXMgYF9gLCB3aGljaCBtYXRjaGVzIGFu
eXRoaW5nOgorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6XzsKK3VzaW5nIDo6dGVzdGluZzo6Tm90
TnVsbDsKKy4uLgorICBFWFBFQ1RfQ0FMTChmb28sIERvVGhhdChfLCBOb3ROdWxsKCkpKTsKK2Bg
YAorCisjIyBDb21iaW5pbmcgTWF0Y2hlcnMgIyMKKworWW91IGNhbiBidWlsZCBjb21wbGV4IG1h
dGNoZXJzIGZyb20gZXhpc3Rpbmcgb25lcyB1c2luZyBgQWxsT2YoKWAsCitgQW55T2YoKWAsIGFu
ZCBgTm90KClgOgorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6QWxsT2Y7Cit1c2luZyA6OnRlc3Rp
bmc6Okd0OwordXNpbmcgOjp0ZXN0aW5nOjpIYXNTdWJzdHI7Cit1c2luZyA6OnRlc3Rpbmc6Ok5l
OwordXNpbmcgOjp0ZXN0aW5nOjpOb3Q7CisuLi4KKyAgLy8gVGhlIGFyZ3VtZW50IG11c3QgYmUg
PiA1IGFuZCAhPSAxMC4KKyAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoaXMoQWxsT2YoR3QoNSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5lKDEwKSkpKTsKKworICAvLyBUaGUgZmly
c3QgYXJndW1lbnQgbXVzdCBub3QgY29udGFpbiBzdWItc3RyaW5nICJibGFoIi4KKyAgRVhQRUNU
X0NBTEwoZm9vLCBEb1RoYXQoTm90KEhhc1N1YnN0cigiYmxhaCIpKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgTlVMTCkpOworYGBgCisKKyMjIENhc3RpbmcgTWF0Y2hlcnMgIyMKKworR29v
Z2xlIE1vY2sgbWF0Y2hlcnMgYXJlIHN0YXRpY2FsbHkgdHlwZWQsIG1lYW5pbmcgdGhhdCB0aGUg
Y29tcGlsZXIKK2NhbiBjYXRjaCB5b3VyIG1pc3Rha2UgaWYgeW91IHVzZSBhIG1hdGNoZXIgb2Yg
dGhlIHdyb25nIHR5cGUgKGZvcgorZXhhbXBsZSwgaWYgeW91IHVzZSBgRXEoNSlgIHRvIG1hdGNo
IGEgYHN0cmluZ2AgYXJndW1lbnQpLiBHb29kIGZvcgoreW91IQorCitTb21ldGltZXMsIGhvd2V2
ZXIsIHlvdSBrbm93IHdoYXQgeW91J3JlIGRvaW5nIGFuZCB3YW50IHRoZSBjb21waWxlcgordG8g
Z2l2ZSB5b3Ugc29tZSBzbGFjay4gT25lIGV4YW1wbGUgaXMgdGhhdCB5b3UgaGF2ZSBhIG1hdGNo
ZXIgZm9yCitgbG9uZ2AgYW5kIHRoZSBhcmd1bWVudCB5b3Ugd2FudCB0byBtYXRjaCBpcyBgaW50
YC4gV2hpbGUgdGhlIHR3bwordHlwZXMgYXJlbid0IGV4YWN0bHkgdGhlIHNhbWUsIHRoZXJlIGlz
IG5vdGhpbmcgcmVhbGx5IHdyb25nIHdpdGgKK3VzaW5nIGEgYE1hdGNoZXI8bG9uZz5gIHRvIG1h
dGNoIGFuIGBpbnRgIC0gYWZ0ZXIgYWxsLCB3ZSBjYW4gZmlyc3QKK2NvbnZlcnQgdGhlIGBpbnRg
IGFyZ3VtZW50IHRvIGEgYGxvbmdgIGJlZm9yZSBnaXZpbmcgaXQgdG8gdGhlCittYXRjaGVyLgor
CitUbyBzdXBwb3J0IHRoaXMgbmVlZCwgR29vZ2xlIE1vY2sgZ2l2ZXMgeW91IHRoZQorYFNhZmVN
YXRjaGVyQ2FzdDxUPihtKWAgZnVuY3Rpb24uIEl0IGNhc3RzIGEgbWF0Y2hlciBgbWAgdG8gdHlw
ZQorYE1hdGNoZXI8VD5gLiBUbyBlbnN1cmUgc2FmZXR5LCBHb29nbGUgTW9jayBjaGVja3MgdGhh
dCAobGV0IGBVYCBiZSB0aGUKK3R5cGUgYG1gIGFjY2VwdHMpOgorCisgIDEuIFR5cGUgYFRgIGNh
biBiZSBpbXBsaWNpdGx5IGNhc3QgdG8gdHlwZSBgVWA7CisgIDEuIFdoZW4gYm90aCBgVGAgYW5k
IGBVYCBhcmUgYnVpbHQtaW4gYXJpdGhtZXRpYyB0eXBlcyAoYGJvb2xgLCBpbnRlZ2VycywgYW5k
IGZsb2F0aW5nLXBvaW50IG51bWJlcnMpLCB0aGUgY29udmVyc2lvbiBmcm9tIGBUYCB0byBgVWAg
aXMgbm90IGxvc3N5IChpbiBvdGhlciB3b3JkcywgYW55IHZhbHVlIHJlcHJlc2VudGFibGUgYnkg
YFRgIGNhbiBhbHNvIGJlIHJlcHJlc2VudGVkIGJ5IGBVYCk7IGFuZAorICAxLiBXaGVuIGBVYCBp
cyBhIHJlZmVyZW5jZSwgYFRgIG11c3QgYWxzbyBiZSBhIHJlZmVyZW5jZSAoYXMgdGhlIHVuZGVy
bHlpbmcgbWF0Y2hlciBtYXkgYmUgaW50ZXJlc3RlZCBpbiB0aGUgYWRkcmVzcyBvZiB0aGUgYFVg
IHZhbHVlKS4KKworVGhlIGNvZGUgd29uJ3QgY29tcGlsZSBpZiBhbnkgb2YgdGhlc2UgY29uZGl0
aW9ucyBpc24ndCBtZXQuCisKK0hlcmUncyBvbmUgZXhhbXBsZToKKworYGBgCit1c2luZyA6OnRl
c3Rpbmc6OlNhZmVNYXRjaGVyQ2FzdDsKKworLy8gQSBiYXNlIGNsYXNzIGFuZCBhIGNoaWxkIGNs
YXNzLgorY2xhc3MgQmFzZSB7IC4uLiB9OworY2xhc3MgRGVyaXZlZCA6IHB1YmxpYyBCYXNlIHsg
Li4uIH07CisKK2NsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKKyBwdWJsaWM6CisgIE1PQ0tf
TUVUSE9EMShEb1RoaXMsIHZvaWQoRGVyaXZlZCogZGVyaXZlZCkpOworfTsKKy4uLgorCisgIE1v
Y2tGb28gZm9vOworICAvLyBtIGlzIGEgTWF0Y2hlcjxCYXNlKj4gd2UgZ290IGZyb20gc29tZXdo
ZXJlLgorICBFWFBFQ1RfQ0FMTChmb28sIERvVGhpcyhTYWZlTWF0Y2hlckNhc3Q8RGVyaXZlZCo+
KG0pKSk7CitgYGAKKworSWYgeW91IGZpbmQgYFNhZmVNYXRjaGVyQ2FzdDxUPihtKWAgdG9vIGxp
bWl0aW5nLCB5b3UgY2FuIHVzZSBhIHNpbWlsYXIKK2Z1bmN0aW9uIGBNYXRjaGVyQ2FzdDxUPiht
KWAuIFRoZSBkaWZmZXJlbmNlIGlzIHRoYXQgYE1hdGNoZXJDYXN0YCB3b3JrcworYXMgbG9uZyBh
cyB5b3UgY2FuIGBzdGF0aWNfY2FzdGAgdHlwZSBgVGAgdG8gdHlwZSBgVWAuCisKK2BNYXRjaGVy
Q2FzdGAgZXNzZW50aWFsbHkgbGV0cyB5b3UgYnlwYXNzIEMrKydzIHR5cGUgc3lzdGVtCisoYHN0
YXRpY19jYXN0YCBpc24ndCBhbHdheXMgc2FmZSBhcyBpdCBjb3VsZCB0aHJvdyBhd2F5IGluZm9y
bWF0aW9uLAorZm9yIGV4YW1wbGUpLCBzbyBiZSBjYXJlZnVsIG5vdCB0byBtaXN1c2UvYWJ1c2Ug
aXQuCisKKyMjIFNlbGVjdGluZyBCZXR3ZWVuIE92ZXJsb2FkZWQgRnVuY3Rpb25zICMjCisKK0lm
IHlvdSBleHBlY3QgYW4gb3ZlcmxvYWRlZCBmdW5jdGlvbiB0byBiZSBjYWxsZWQsIHRoZSBjb21w
aWxlciBtYXkKK25lZWQgc29tZSBoZWxwIG9uIHdoaWNoIG92ZXJsb2FkZWQgdmVyc2lvbiBpdCBp
cy4KKworVG8gZGlzYW1iaWd1YXRlIGZ1bmN0aW9ucyBvdmVybG9hZGVkIG9uIHRoZSBjb25zdC1u
ZXNzIG9mIHRoaXMgb2JqZWN0LAordXNlIHRoZSBgQ29uc3QoKWAgYXJndW1lbnQgd3JhcHBlci4K
KworYGBgCit1c2luZyA6OnRlc3Rpbmc6OlJldHVyblJlZjsKKworY2xhc3MgTW9ja0ZvbyA6IHB1
YmxpYyBGb28geworICAuLi4KKyAgTU9DS19NRVRIT0QwKEdldEJhciwgQmFyJigpKTsKKyAgTU9D
S19DT05TVF9NRVRIT0QwKEdldEJhciwgY29uc3QgQmFyJigpKTsKK307CisuLi4KKworICBNb2Nr
Rm9vIGZvbzsKKyAgQmFyIGJhcjEsIGJhcjI7CisgIEVYUEVDVF9DQUxMKGZvbywgR2V0QmFyKCkp
ICAgICAgICAgLy8gVGhlIG5vbi1jb25zdCBHZXRCYXIoKS4KKyAgICAgIC5XaWxsT25jZShSZXR1
cm5SZWYoYmFyMSkpOworICBFWFBFQ1RfQ0FMTChDb25zdChmb28pLCBHZXRCYXIoKSkgIC8vIFRo
ZSBjb25zdCBHZXRCYXIoKS4KKyAgICAgIC5XaWxsT25jZShSZXR1cm5SZWYoYmFyMikpOworYGBg
CisKKyhgQ29uc3QoKWAgaXMgZGVmaW5lZCBieSBHb29nbGUgTW9jayBhbmQgcmV0dXJucyBhIGBj
b25zdGAgcmVmZXJlbmNlCit0byBpdHMgYXJndW1lbnQuKQorCitUbyBkaXNhbWJpZ3VhdGUgb3Zl
cmxvYWRlZCBmdW5jdGlvbnMgd2l0aCB0aGUgc2FtZSBudW1iZXIgb2YgYXJndW1lbnRzCitidXQg
ZGlmZmVyZW50IGFyZ3VtZW50IHR5cGVzLCB5b3UgbWF5IG5lZWQgdG8gc3BlY2lmeSB0aGUgZXhh
Y3QgdHlwZQorb2YgYSBtYXRjaGVyLCBlaXRoZXIgYnkgd3JhcHBpbmcgeW91ciBtYXRjaGVyIGlu
IGBNYXRjaGVyPHR5cGU+KClgLCBvcgordXNpbmcgYSBtYXRjaGVyIHdob3NlIHR5cGUgaXMgZml4
ZWQgKGBUeXBlZEVxPHR5cGU+YCwgYEFuPHR5cGU+KClgLAorZXRjKToKKworYGBgCit1c2luZyA6
OnRlc3Rpbmc6OkFuOwordXNpbmcgOjp0ZXN0aW5nOjpMdDsKK3VzaW5nIDo6dGVzdGluZzo6TWF0
Y2hlcjsKK3VzaW5nIDo6dGVzdGluZzo6VHlwZWRFcTsKKworY2xhc3MgTW9ja1ByaW50ZXIgOiBw
dWJsaWMgUHJpbnRlciB7CisgcHVibGljOgorICBNT0NLX01FVEhPRDEoUHJpbnQsIHZvaWQoaW50
IG4pKTsKKyAgTU9DS19NRVRIT0QxKFByaW50LCB2b2lkKGNoYXIgYykpOworfTsKKworVEVTVChQ
cmludGVyVGVzdCwgUHJpbnQpIHsKKyAgTW9ja1ByaW50ZXIgcHJpbnRlcjsKKworICBFWFBFQ1Rf
Q0FMTChwcmludGVyLCBQcmludChBbjxpbnQ+KCkpKTsgICAgICAgICAgICAvLyB2b2lkIFByaW50
KGludCk7CisgIEVYUEVDVF9DQUxMKHByaW50ZXIsIFByaW50KE1hdGNoZXI8aW50PihMdCg1KSkp
KTsgIC8vIHZvaWQgUHJpbnQoaW50KTsKKyAgRVhQRUNUX0NBTEwocHJpbnRlciwgUHJpbnQoVHlw
ZWRFcTxjaGFyPignYScpKSk7ICAgLy8gdm9pZCBQcmludChjaGFyKTsKKworICBwcmludGVyLlBy
aW50KDMpOworICBwcmludGVyLlByaW50KDYpOworICBwcmludGVyLlByaW50KCdhJyk7Cit9Citg
YGAKKworIyMgUGVyZm9ybWluZyBEaWZmZXJlbnQgQWN0aW9ucyBCYXNlZCBvbiB0aGUgQXJndW1l
bnRzICMjCisKK1doZW4gYSBtb2NrIG1ldGhvZCBpcyBjYWxsZWQsIHRoZSBfbGFzdF8gbWF0Y2hp
bmcgZXhwZWN0YXRpb24gdGhhdCdzCitzdGlsbCBhY3RpdmUgd2lsbCBiZSBzZWxlY3RlZCAodGhp
bmsgIm5ld2VyIG92ZXJyaWRlcyBvbGRlciIpLiBTbywgeW91CitjYW4gbWFrZSBhIG1ldGhvZCBk
byBkaWZmZXJlbnQgdGhpbmdzIGRlcGVuZGluZyBvbiBpdHMgYXJndW1lbnQgdmFsdWVzCitsaWtl
IHRoaXM6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpfOwordXNpbmcgOjp0ZXN0aW5nOjpMdDsK
K3VzaW5nIDo6dGVzdGluZzo6UmV0dXJuOworLi4uCisgIC8vIFRoZSBkZWZhdWx0IGNhc2UuCisg
IEVYUEVDVF9DQUxMKGZvbywgRG9UaGlzKF8pKQorICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVy
bignYicpKTsKKworICAvLyBUaGUgbW9yZSBzcGVjaWZpYyBjYXNlLgorICBFWFBFQ1RfQ0FMTChm
b28sIERvVGhpcyhMdCg1KSkpCisgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKCdhJykpOwor
YGBgCisKK05vdywgaWYgYGZvby5Eb1RoaXMoKWAgaXMgY2FsbGVkIHdpdGggYSB2YWx1ZSBsZXNz
IHRoYW4gNSwgYCdhJ2Agd2lsbAorYmUgcmV0dXJuZWQ7IG90aGVyd2lzZSBgJ2InYCB3aWxsIGJl
IHJldHVybmVkLgorCisjIyBNYXRjaGluZyBNdWx0aXBsZSBBcmd1bWVudHMgYXMgYSBXaG9sZSAj
IworCitTb21ldGltZXMgaXQncyBub3QgZW5vdWdoIHRvIG1hdGNoIHRoZSBhcmd1bWVudHMgaW5k
aXZpZHVhbGx5LiBGb3IKK2V4YW1wbGUsIHdlIG1heSB3YW50IHRvIHNheSB0aGF0IHRoZSBmaXJz
dCBhcmd1bWVudCBtdXN0IGJlIGxlc3MgdGhhbgordGhlIHNlY29uZCBhcmd1bWVudC4gVGhlIGBX
aXRoKClgIGNsYXVzZSBhbGxvd3MgdXMgdG8gbWF0Y2gKK2FsbCBhcmd1bWVudHMgb2YgYSBtb2Nr
IGZ1bmN0aW9uIGFzIGEgd2hvbGUuIEZvciBleGFtcGxlLAorCitgYGAKK3VzaW5nIDo6dGVzdGlu
Zzo6XzsKK3VzaW5nIDo6dGVzdGluZzo6THQ7Cit1c2luZyA6OnRlc3Rpbmc6Ok5lOworLi4uCisg
IEVYUEVDVF9DQUxMKGZvbywgSW5SYW5nZShOZSgwKSwgXykpCisgICAgICAuV2l0aChMdCgpKTsK
K2BgYAorCitzYXlzIHRoYXQgdGhlIGZpcnN0IGFyZ3VtZW50IG9mIGBJblJhbmdlKClgIG11c3Qg
bm90IGJlIDAsIGFuZCBtdXN0IGJlCitsZXNzIHRoYW4gdGhlIHNlY29uZCBhcmd1bWVudC4KKwor
VGhlIGV4cHJlc3Npb24gaW5zaWRlIGBXaXRoKClgIG11c3QgYmUgYSBtYXRjaGVyIG9mIHR5cGUK
K2BNYXRjaGVyPHRyMTo6dHVwbGU8QTEsIC4uLiwgQW4+ID5gLCB3aGVyZSBgQTFgLCAuLi4sIGBB
bmAgYXJlIHRoZQordHlwZXMgb2YgdGhlIGZ1bmN0aW9uIGFyZ3VtZW50cy4KKworWW91IGNhbiBh
bHNvIHdyaXRlIGBBbGxBcmdzKG0pYCBpbnN0ZWFkIG9mIGBtYCBpbnNpZGUgYC5XaXRoKClgLiBU
aGUKK3R3byBmb3JtcyBhcmUgZXF1aXZhbGVudCwgYnV0IGAuV2l0aChBbGxBcmdzKEx0KCkpKWAg
aXMgbW9yZSByZWFkYWJsZQordGhhbiBgLldpdGgoTHQoKSlgLgorCitZb3UgY2FuIHVzZSBgQXJn
czxrMSwgLi4uLCBrbj4obSlgIHRvIG1hdGNoIHRoZSBgbmAgc2VsZWN0ZWQgYXJndW1lbnRzCiso
YXMgYSB0dXBsZSkgYWdhaW5zdCBgbWAuIEZvciBleGFtcGxlLAorCitgYGAKK3VzaW5nIDo6dGVz
dGluZzo6XzsKK3VzaW5nIDo6dGVzdGluZzo6QWxsT2Y7Cit1c2luZyA6OnRlc3Rpbmc6OkFyZ3M7
Cit1c2luZyA6OnRlc3Rpbmc6Okx0OworLi4uCisgIEVYUEVDVF9DQUxMKGZvbywgQmxhaChfLCBf
LCBfKSkKKyAgICAgIC5XaXRoKEFsbE9mKEFyZ3M8MCwgMT4oTHQoKSksIEFyZ3M8MSwgMj4oTHQo
KSkpKTsKK2BgYAorCitzYXlzIHRoYXQgYEJsYWgoKWAgd2lsbCBiZSBjYWxsZWQgd2l0aCBhcmd1
bWVudHMgYHhgLCBgeWAsIGFuZCBgemAgd2hlcmUKK2B4IDwgeSA8IHpgLgorCitBcyBhIGNvbnZl
bmllbmNlIGFuZCBleGFtcGxlLCBHb29nbGUgTW9jayBwcm92aWRlcyBzb21lIG1hdGNoZXJzIGZv
cgorMi10dXBsZXMsIGluY2x1ZGluZyB0aGUgYEx0KClgIG1hdGNoZXIgYWJvdmUuIFNlZSB0aGUg
W0NoZWF0U2hlZXRdKFYxXzdfQ2hlYXRTaGVldC5tZCkgZm9yCit0aGUgY29tcGxldGUgbGlzdC4K
KworTm90ZSB0aGF0IGlmIHlvdSB3YW50IHRvIHBhc3MgdGhlIGFyZ3VtZW50cyB0byBhIHByZWRp
Y2F0ZSBvZiB5b3VyIG93bgorKGUuZy4gYC5XaXRoKEFyZ3M8MCwgMT4oVHJ1bHkoJk15UHJlZGlj
YXRlKSkpYCksIHRoYXQgcHJlZGljYXRlIE1VU1QgYmUKK3dyaXR0ZW4gdG8gdGFrZSBhIGB0cjE6
OnR1cGxlYCBhcyBpdHMgYXJndW1lbnQ7IEdvb2dsZSBNb2NrIHdpbGwgcGFzcyB0aGUgYG5gCitz
ZWxlY3RlZCBhcmd1bWVudHMgYXMgX29uZV8gc2luZ2xlIHR1cGxlIHRvIHRoZSBwcmVkaWNhdGUu
CisKKyMjIFVzaW5nIE1hdGNoZXJzIGFzIFByZWRpY2F0ZXMgIyMKKworSGF2ZSB5b3Ugbm90aWNl
ZCB0aGF0IGEgbWF0Y2hlciBpcyBqdXN0IGEgZmFuY3kgcHJlZGljYXRlIHRoYXQgYWxzbwora25v
d3MgaG93IHRvIGRlc2NyaWJlIGl0c2VsZj8gTWFueSBleGlzdGluZyBhbGdvcml0aG1zIHRha2Ug
cHJlZGljYXRlcworYXMgYXJndW1lbnRzIChlLmcuIHRob3NlIGRlZmluZWQgaW4gU1RMJ3MgYDxh
bGdvcml0aG0+YCBoZWFkZXIpLCBhbmQKK2l0IHdvdWxkIGJlIGEgc2hhbWUgaWYgR29vZ2xlIE1v
Y2sgbWF0Y2hlcnMgYXJlIG5vdCBhbGxvd2VkIHRvCitwYXJ0aWNpcGF0ZS4KKworTHVja2lseSwg
eW91IGNhbiB1c2UgYSBtYXRjaGVyIHdoZXJlIGEgdW5hcnkgcHJlZGljYXRlIGZ1bmN0b3IgaXMK
K2V4cGVjdGVkIGJ5IHdyYXBwaW5nIGl0IGluc2lkZSB0aGUgYE1hdGNoZXMoKWAgZnVuY3Rpb24u
IEZvciBleGFtcGxlLAorCitgYGAKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8dmVj
dG9yPgorCitzdGQ6OnZlY3RvcjxpbnQ+IHY7CisuLi4KKy8vIEhvdyBtYW55IGVsZW1lbnRzIGlu
IHYgYXJlID49IDEwPworY29uc3QgaW50IGNvdW50ID0gY291bnRfaWYodi5iZWdpbigpLCB2LmVu
ZCgpLCBNYXRjaGVzKEdlKDEwKSkpOworYGBgCisKK1NpbmNlIHlvdSBjYW4gYnVpbGQgY29tcGxl
eCBtYXRjaGVycyBmcm9tIHNpbXBsZXIgb25lcyBlYXNpbHkgdXNpbmcKK0dvb2dsZSBNb2NrLCB0
aGlzIGdpdmVzIHlvdSBhIHdheSB0byBjb252ZW5pZW50bHkgY29uc3RydWN0IGNvbXBvc2l0ZQor
cHJlZGljYXRlcyAoZG9pbmcgdGhlIHNhbWUgdXNpbmcgU1RMJ3MgYDxmdW5jdGlvbmFsPmAgaGVh
ZGVyIGlzIGp1c3QKK3BhaW5mdWwpLiBGb3IgZXhhbXBsZSwgaGVyZSdzIGEgcHJlZGljYXRlIHRo
YXQncyBzYXRpc2ZpZWQgYnkgYW55CitudW1iZXIgdGhhdCBpcyA+PSAwLCA8PSAxMDAsIGFuZCAh
PSA1MDoKKworYGBgCitNYXRjaGVzKEFsbE9mKEdlKDApLCBMZSgxMDApLCBOZSg1MCkpKQorYGBg
CisKKyMjIFVzaW5nIE1hdGNoZXJzIGluIEdvb2dsZSBUZXN0IEFzc2VydGlvbnMgIyMKKworU2lu
Y2UgbWF0Y2hlcnMgYXJlIGJhc2ljYWxseSBwcmVkaWNhdGVzIHRoYXQgYWxzbyBrbm93IGhvdyB0
byBkZXNjcmliZQordGhlbXNlbHZlcywgdGhlcmUgaXMgYSB3YXkgdG8gdGFrZSBhZHZhbnRhZ2Ug
b2YgdGhlbSBpbgorW0dvb2dsZSBUZXN0XShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xl
dGVzdC8pIGFzc2VydGlvbnMuIEl0J3MKK2NhbGxlZCBgQVNTRVJUX1RIQVRgIGFuZCBgRVhQRUNU
X1RIQVRgOgorCitgYGAKKyAgQVNTRVJUX1RIQVQodmFsdWUsIG1hdGNoZXIpOyAgLy8gQXNzZXJ0
cyB0aGF0IHZhbHVlIG1hdGNoZXMgbWF0Y2hlci4KKyAgRVhQRUNUX1RIQVQodmFsdWUsIG1hdGNo
ZXIpOyAgLy8gVGhlIG5vbi1mYXRhbCB2ZXJzaW9uLgorYGBgCisKK0ZvciBleGFtcGxlLCBpbiBh
IEdvb2dsZSBUZXN0IHRlc3QgeW91IGNhbiB3cml0ZToKKworYGBgCisjaW5jbHVkZSAiZ21vY2sv
Z21vY2suaCIKKwordXNpbmcgOjp0ZXN0aW5nOjpBbGxPZjsKK3VzaW5nIDo6dGVzdGluZzo6R2U7
Cit1c2luZyA6OnRlc3Rpbmc6OkxlOwordXNpbmcgOjp0ZXN0aW5nOjpNYXRjaGVzUmVnZXg7Cit1
c2luZyA6OnRlc3Rpbmc6OlN0YXJ0c1dpdGg7CisuLi4KKworICBFWFBFQ1RfVEhBVChGb28oKSwg
U3RhcnRzV2l0aCgiSGVsbG8iKSk7CisgIEVYUEVDVF9USEFUKEJhcigpLCBNYXRjaGVzUmVnZXgo
IkxpbmUgXFxkKyIpKTsKKyAgQVNTRVJUX1RIQVQoQmF6KCksIEFsbE9mKEdlKDUpLCBMZSgxMCkp
KTsKK2BgYAorCit3aGljaCAoYXMgeW91IGNhbiBwcm9iYWJseSBndWVzcykgZXhlY3V0ZXMgYEZv
bygpYCwgYEJhcigpYCwgYW5kCitgQmF6KClgLCBhbmQgdmVyaWZpZXMgdGhhdDoKKworICAqIGBG
b28oKWAgcmV0dXJucyBhIHN0cmluZyB0aGF0IHN0YXJ0cyB3aXRoIGAiSGVsbG8iYC4KKyAgKiBg
QmFyKClgIHJldHVybnMgYSBzdHJpbmcgdGhhdCBtYXRjaGVzIHJlZ3VsYXIgZXhwcmVzc2lvbiBg
IkxpbmUgXFxkKyJgLgorICAqIGBCYXooKWAgcmV0dXJucyBhIG51bWJlciBpbiB0aGUgcmFuZ2Ug
WzUsIDEwXS4KKworVGhlIG5pY2UgdGhpbmcgYWJvdXQgdGhlc2UgbWFjcm9zIGlzIHRoYXQgX3Ro
ZXkgcmVhZCBsaWtlCitFbmdsaXNoXy4gVGhleSBnZW5lcmF0ZSBpbmZvcm1hdGl2ZSBtZXNzYWdl
cyB0b28uIEZvciBleGFtcGxlLCBpZiB0aGUKK2ZpcnN0IGBFWFBFQ1RfVEhBVCgpYCBhYm92ZSBm
YWlscywgdGhlIG1lc3NhZ2Ugd2lsbCBiZSBzb21ldGhpbmcgbGlrZToKKworYGBgCitWYWx1ZSBv
ZjogRm9vKCkKKyAgQWN0dWFsOiAiSGksIHdvcmxkISIKK0V4cGVjdGVkOiBzdGFydHMgd2l0aCAi
SGVsbG8iCitgYGAKKworKipDcmVkaXQ6KiogVGhlIGlkZWEgb2YgYChBU1NFUlR8RVhQRUNUKV9U
SEFUYCB3YXMgc3RvbGVuIGZyb20gdGhlCitbSGFtY3Jlc3RdKGh0dHA6Ly9jb2RlLmdvb2dsZS5j
b20vcC9oYW1jcmVzdC8pIHByb2plY3QsIHdoaWNoIGFkZHMKK2Bhc3NlcnRUaGF0KClgIHRvIEpV
bml0LgorCisjIyBVc2luZyBQcmVkaWNhdGVzIGFzIE1hdGNoZXJzICMjCisKK0dvb2dsZSBNb2Nr
IHByb3ZpZGVzIGEgYnVpbHQtaW4gc2V0IG9mIG1hdGNoZXJzLiBJbiBjYXNlIHlvdSBmaW5kIHRo
ZW0KK2xhY2tpbmcsIHlvdSBjYW4gdXNlIGFuIGFyYml0cmF5IHVuYXJ5IHByZWRpY2F0ZSBmdW5j
dGlvbiBvciBmdW5jdG9yCithcyBhIG1hdGNoZXIgLSBhcyBsb25nIGFzIHRoZSBwcmVkaWNhdGUg
YWNjZXB0cyBhIHZhbHVlIG9mIHRoZSB0eXBlCit5b3Ugd2FudC4gWW91IGRvIHRoaXMgYnkgd3Jh
cHBpbmcgdGhlIHByZWRpY2F0ZSBpbnNpZGUgdGhlIGBUcnVseSgpYAorZnVuY3Rpb24sIGZvciBl
eGFtcGxlOgorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6VHJ1bHk7CisKK2ludCBJc0V2ZW4oaW50
IG4pIHsgcmV0dXJuIChuICUgMikgPT0gMCA/IDEgOiAwOyB9CisuLi4KKworICAvLyBCYXIoKSBt
dXN0IGJlIGNhbGxlZCB3aXRoIGFuIGV2ZW4gbnVtYmVyLgorICBFWFBFQ1RfQ0FMTChmb28sIEJh
cihUcnVseShJc0V2ZW4pKSk7CitgYGAKKworTm90ZSB0aGF0IHRoZSBwcmVkaWNhdGUgZnVuY3Rp
b24gLyBmdW5jdG9yIGRvZXNuJ3QgaGF2ZSB0byByZXR1cm4KK2Bib29sYC4gSXQgd29ya3MgYXMg
bG9uZyBhcyB0aGUgcmV0dXJuIHZhbHVlIGNhbiBiZSB1c2VkIGFzIHRoZQorY29uZGl0aW9uIGlu
IHN0YXRlbWVudCBgaWYgKGNvbmRpdGlvbikgLi4uYC4KKworIyMgTWF0Y2hpbmcgQXJndW1lbnRz
IHRoYXQgQXJlIE5vdCBDb3B5YWJsZSAjIworCitXaGVuIHlvdSBkbyBhbiBgRVhQRUNUX0NBTEwo
bW9ja19vYmosIEZvbyhiYXIpKWAsIEdvb2dsZSBNb2NrIHNhdmVzCithd2F5IGEgY29weSBvZiBg
YmFyYC4gV2hlbiBgRm9vKClgIGlzIGNhbGxlZCBsYXRlciwgR29vZ2xlIE1vY2sKK2NvbXBhcmVz
IHRoZSBhcmd1bWVudCB0byBgRm9vKClgIHdpdGggdGhlIHNhdmVkIGNvcHkgb2YgYGJhcmAuIFRo
aXMKK3dheSwgeW91IGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgYGJhcmAgYmVpbmcgbW9kaWZp
ZWQgb3IgZGVzdHJveWVkCithZnRlciB0aGUgYEVYUEVDVF9DQUxMKClgIGlzIGV4ZWN1dGVkLiBU
aGUgc2FtZSBpcyB0cnVlIHdoZW4geW91IHVzZQorbWF0Y2hlcnMgbGlrZSBgRXEoYmFyKWAsIGBM
ZShiYXIpYCwgYW5kIHNvIG9uLgorCitCdXQgd2hhdCBpZiBgYmFyYCBjYW5ub3QgYmUgY29waWVk
IChpLmUuIGhhcyBubyBjb3B5IGNvbnN0cnVjdG9yKT8gWW91Citjb3VsZCBkZWZpbmUgeW91ciBv
d24gbWF0Y2hlciBmdW5jdGlvbiBhbmQgdXNlIGl0IHdpdGggYFRydWx5KClgLCBhcwordGhlIHBy
ZXZpb3VzIGNvdXBsZSBvZiByZWNpcGVzIGhhdmUgc2hvd24uIE9yLCB5b3UgbWF5IGJlIGFibGUg
dG8gZ2V0Cithd2F5IGZyb20gaXQgaWYgeW91IGNhbiBndWFyYW50ZWUgdGhhdCBgYmFyYCB3b24n
dCBiZSBjaGFuZ2VkIGFmdGVyCit0aGUgYEVYUEVDVF9DQUxMKClgIGlzIGV4ZWN1dGVkLiBKdXN0
IHRlbGwgR29vZ2xlIE1vY2sgdGhhdCBpdCBzaG91bGQKK3NhdmUgYSByZWZlcmVuY2UgdG8gYGJh
cmAsIGluc3RlYWQgb2YgYSBjb3B5IG9mIGl0LiBIZXJlJ3MgaG93OgorCitgYGAKK3VzaW5nIDo6
dGVzdGluZzo6RXE7Cit1c2luZyA6OnRlc3Rpbmc6OkJ5UmVmOwordXNpbmcgOjp0ZXN0aW5nOjpM
dDsKKy4uLgorICAvLyBFeHBlY3RzIHRoYXQgRm9vKCkncyBhcmd1bWVudCA9PSBiYXIuCisgIEVY
UEVDVF9DQUxMKG1vY2tfb2JqLCBGb28oRXEoQnlSZWYoYmFyKSkpKTsKKworICAvLyBFeHBlY3Rz
IHRoYXQgRm9vKCkncyBhcmd1bWVudCA8IGJhci4KKyAgRVhQRUNUX0NBTEwobW9ja19vYmosIEZv
byhMdChCeVJlZihiYXIpKSkpOworYGBgCisKK1JlbWVtYmVyOiBpZiB5b3UgZG8gdGhpcywgZG9u
J3QgY2hhbmdlIGBiYXJgIGFmdGVyIHRoZQorYEVYUEVDVF9DQUxMKClgLCBvciB0aGUgcmVzdWx0
IGlzIHVuZGVmaW5lZC4KKworIyMgVmFsaWRhdGluZyBhIE1lbWJlciBvZiBhbiBPYmplY3QgIyMK
KworT2Z0ZW4gYSBtb2NrIGZ1bmN0aW9uIHRha2VzIGEgcmVmZXJlbmNlIHRvIG9iamVjdCBhcyBh
biBhcmd1bWVudC4gV2hlbgorbWF0Y2hpbmcgdGhlIGFyZ3VtZW50LCB5b3UgbWF5IG5vdCB3YW50
IHRvIGNvbXBhcmUgdGhlIGVudGlyZSBvYmplY3QKK2FnYWluc3QgYSBmaXhlZCBvYmplY3QsIGFz
IHRoYXQgbWF5IGJlIG92ZXItc3BlY2lmaWNhdGlvbi4gSW5zdGVhZCwKK3lvdSBtYXkgbmVlZCB0
byB2YWxpZGF0ZSBhIGNlcnRhaW4gbWVtYmVyIHZhcmlhYmxlIG9yIHRoZSByZXN1bHQgb2YgYQor
Y2VydGFpbiBnZXR0ZXIgbWV0aG9kIG9mIHRoZSBvYmplY3QuIFlvdSBjYW4gZG8gdGhpcyB3aXRo
IGBGaWVsZCgpYAorYW5kIGBQcm9wZXJ0eSgpYC4gTW9yZSBzcGVjaWZpY2FsbHksCisKK2BgYAor
RmllbGQoJkZvbzo6YmFyLCBtKQorYGBgCisKK2lzIGEgbWF0Y2hlciB0aGF0IG1hdGNoZXMgYSBg
Rm9vYCBvYmplY3Qgd2hvc2UgYGJhcmAgbWVtYmVyIHZhcmlhYmxlCitzYXRpc2ZpZXMgbWF0Y2hl
ciBgbWAuCisKK2BgYAorUHJvcGVydHkoJkZvbzo6YmF6LCBtKQorYGBgCisKK2lzIGEgbWF0Y2hl
ciB0aGF0IG1hdGNoZXMgYSBgRm9vYCBvYmplY3Qgd2hvc2UgYGJheigpYCBtZXRob2QgcmV0dXJu
cworYSB2YWx1ZSB0aGF0IHNhdGlzZmllcyBtYXRjaGVyIGBtYC4KKworRm9yIGV4YW1wbGU6CisK
Kz4gfCBgRmllbGQoJkZvbzo6bnVtYmVyLCBHZSgzKSlgIHwgTWF0Y2hlcyBgeGAgd2hlcmUgYHgu
bnVtYmVyID49IDNgLiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKKz4gfCBgUHJvcGVydHkoJkZvbzo6bmFtZSwg
U3RhcnRzV2l0aCgiSm9obiAiKSlgIHwgTWF0Y2hlcyBgeGAgd2hlcmUgYHgubmFtZSgpYCBzdGFy
dHMgd2l0aCBgIkpvaG4gImAuIHwKKworTm90ZSB0aGF0IGluIGBQcm9wZXJ0eSgmRm9vOjpiYXos
IC4uLilgLCBtZXRob2QgYGJheigpYCBtdXN0IHRha2Ugbm8KK2FyZ3VtZW50IGFuZCBiZSBkZWNs
YXJlZCBhcyBgY29uc3RgLgorCitCVFcsIGBGaWVsZCgpYCBhbmQgYFByb3BlcnR5KClgIGNhbiBh
bHNvIG1hdGNoIHBsYWluIHBvaW50ZXJzIHRvCitvYmplY3RzLiBGb3IgaW5zdGFuY2UsCisKK2Bg
YAorRmllbGQoJkZvbzo6bnVtYmVyLCBHZSgzKSkKK2BgYAorCittYXRjaGVzIGEgcGxhaW4gcG9p
bnRlciBgcGAgd2hlcmUgYHAtPm51bWJlciA+PSAzYC4gSWYgYHBgIGlzIGBOVUxMYCwKK3RoZSBt
YXRjaCB3aWxsIGFsd2F5cyBmYWlsIHJlZ2FyZGxlc3Mgb2YgdGhlIGlubmVyIG1hdGNoZXIuCisK
K1doYXQgaWYgeW91IHdhbnQgdG8gdmFsaWRhdGUgbW9yZSB0aGFuIG9uZSBtZW1iZXJzIGF0IHRo
ZSBzYW1lIHRpbWU/CitSZW1lbWJlciB0aGF0IHRoZXJlIGlzIGBBbGxPZigpYC4KKworIyMgVmFs
aWRhdGluZyB0aGUgVmFsdWUgUG9pbnRlZCB0byBieSBhIFBvaW50ZXIgQXJndW1lbnQgIyMKKwor
QysrIGZ1bmN0aW9ucyBvZnRlbiB0YWtlIHBvaW50ZXJzIGFzIGFyZ3VtZW50cy4gWW91IGNhbiB1
c2UgbWF0Y2hlcnMKK2xpa2UgYElzTnVsbCgpYCwgYE5vdE51bGwoKWAsIGFuZCBvdGhlciBjb21w
YXJpc29uIG1hdGNoZXJzIHRvIG1hdGNoIGEKK3BvaW50ZXIsIGJ1dCB3aGF0IGlmIHlvdSB3YW50
IHRvIG1ha2Ugc3VyZSB0aGUgdmFsdWUgX3BvaW50ZWQgdG9fIGJ5Cit0aGUgcG9pbnRlciwgaW5z
dGVhZCBvZiB0aGUgcG9pbnRlciBpdHNlbGYsIGhhcyBhIGNlcnRhaW4gcHJvcGVydHk/CitXZWxs
LCB5b3UgY2FuIHVzZSB0aGUgYFBvaW50ZWUobSlgIG1hdGNoZXIuCisKK2BQb2ludGVlKG0pYCBt
YXRjaGVzIGEgcG9pbnRlciBpZmYgYG1gIG1hdGNoZXMgdGhlIHZhbHVlIHRoZSBwb2ludGVyCitw
b2ludHMgdG8uIEZvciBleGFtcGxlOgorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6R2U7Cit1c2lu
ZyA6OnRlc3Rpbmc6OlBvaW50ZWU7CisuLi4KKyAgRVhQRUNUX0NBTEwoZm9vLCBCYXIoUG9pbnRl
ZShHZSgzKSkpKTsKK2BgYAorCitleHBlY3RzIGBmb28uQmFyKClgIHRvIGJlIGNhbGxlZCB3aXRo
IGEgcG9pbnRlciB0aGF0IHBvaW50cyB0byBhIHZhbHVlCitncmVhdGVyIHRoYW4gb3IgZXF1YWwg
dG8gMy4KKworT25lIG5pY2UgdGhpbmcgYWJvdXQgYFBvaW50ZWUoKWAgaXMgdGhhdCBpdCB0cmVh
dHMgYSBgTlVMTGAgcG9pbnRlciBhcworYSBtYXRjaCBmYWlsdXJlLCBzbyB5b3UgY2FuIHdyaXRl
IGBQb2ludGVlKG0pYCBpbnN0ZWFkIG9mCisKK2BgYAorICBBbGxPZihOb3ROdWxsKCksIFBvaW50
ZWUobSkpCitgYGAKKword2l0aG91dCB3b3JyeWluZyB0aGF0IGEgYE5VTExgIHBvaW50ZXIgd2ls
bCBjcmFzaCB5b3VyIHRlc3QuCisKK0Fsc28sIGRpZCB3ZSB0ZWxsIHlvdSB0aGF0IGBQb2ludGVl
KClgIHdvcmtzIHdpdGggYm90aCByYXcgcG9pbnRlcnMKKyoqYW5kKiogc21hcnQgcG9pbnRlcnMg
KGBsaW5rZWRfcHRyYCwgYHNoYXJlZF9wdHJgLCBgc2NvcGVkX3B0cmAsIGFuZAorZXRjKT8KKwor
V2hhdCBpZiB5b3UgaGF2ZSBhIHBvaW50ZXIgdG8gcG9pbnRlcj8gWW91IGd1ZXNzZWQgaXQgLSB5
b3UgY2FuIHVzZQorbmVzdGVkIGBQb2ludGVlKClgIHRvIHByb2JlIGRlZXBlciBpbnNpZGUgdGhl
IHZhbHVlLiBGb3IgZXhhbXBsZSwKK2BQb2ludGVlKFBvaW50ZWUoTHQoMykpKWAgbWF0Y2hlcyBh
IHBvaW50ZXIgdGhhdCBwb2ludHMgdG8gYSBwb2ludGVyCit0aGF0IHBvaW50cyB0byBhIG51bWJl
ciBsZXNzIHRoYW4gMyAod2hhdCBhIG1vdXRoZnVsLi4uKS4KKworIyMgVGVzdGluZyBhIENlcnRh
aW4gUHJvcGVydHkgb2YgYW4gT2JqZWN0ICMjCisKK1NvbWV0aW1lcyB5b3Ugd2FudCB0byBzcGVj
aWZ5IHRoYXQgYW4gb2JqZWN0IGFyZ3VtZW50IGhhcyBhIGNlcnRhaW4KK3Byb3BlcnR5LCBidXQg
dGhlcmUgaXMgbm8gZXhpc3RpbmcgbWF0Y2hlciB0aGF0IGRvZXMgdGhpcy4gSWYgeW91IHdhbnQK
K2dvb2QgZXJyb3IgbWVzc2FnZXMsIHlvdSBzaG91bGQgZGVmaW5lIGEgbWF0Y2hlci4gSWYgeW91
IHdhbnQgdG8gZG8gaXQKK3F1aWNrIGFuZCBkaXJ0eSwgeW91IGNvdWxkIGdldCBhd2F5IHdpdGgg
d3JpdGluZyBhbiBvcmRpbmFyeSBmdW5jdGlvbi4KKworTGV0J3Mgc2F5IHlvdSBoYXZlIGEgbW9j
ayBmdW5jdGlvbiB0aGF0IHRha2VzIGFuIG9iamVjdCBvZiB0eXBlIGBGb29gLAord2hpY2ggaGFz
IGFuIGBpbnQgYmFyKClgIG1ldGhvZCBhbmQgYW4gYGludCBiYXooKWAgbWV0aG9kLCBhbmQgeW91
Cit3YW50IHRvIGNvbnN0cmFpbiB0aGF0IHRoZSBhcmd1bWVudCdzIGBiYXIoKWAgdmFsdWUgcGx1
cyBpdHMgYGJheigpYAordmFsdWUgaXMgYSBnaXZlbiBudW1iZXIuIEhlcmUncyBob3cgeW91IGNh
biBkZWZpbmUgYSBtYXRjaGVyIHRvIGRvIGl0OgorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6TWF0
Y2hlckludGVyZmFjZTsKK3VzaW5nIDo6dGVzdGluZzo6TWF0Y2hSZXN1bHRMaXN0ZW5lcjsKKwor
Y2xhc3MgQmFyUGx1c0JhekVxTWF0Y2hlciA6IHB1YmxpYyBNYXRjaGVySW50ZXJmYWNlPGNvbnN0
IEZvbyY+IHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IEJhclBsdXNCYXpFcU1hdGNoZXIoaW50IGV4
cGVjdGVkX3N1bSkKKyAgICAgIDogZXhwZWN0ZWRfc3VtXyhleHBlY3RlZF9zdW0pIHt9CisKKyAg
dmlydHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbihjb25zdCBGb28mIGZvbywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3Qg
eworICAgIHJldHVybiAoZm9vLmJhcigpICsgZm9vLmJheigpKSA9PSBleHBlY3RlZF9zdW1fOwor
ICB9CisKKyAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25z
dCB7CisgICAgKm9zIDw8ICJiYXIoKSArIGJheigpIGVxdWFscyAiIDw8IGV4cGVjdGVkX3N1bV87
CisgIH0KKworICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFt
KiBvcykgY29uc3QgeworICAgICpvcyA8PCAiYmFyKCkgKyBiYXooKSBkb2VzIG5vdCBlcXVhbCAi
IDw8IGV4cGVjdGVkX3N1bV87CisgIH0KKyBwcml2YXRlOgorICBjb25zdCBpbnQgZXhwZWN0ZWRf
c3VtXzsKK307CisKK2lubGluZSBNYXRjaGVyPGNvbnN0IEZvbyY+IEJhclBsdXNCYXpFcShpbnQg
ZXhwZWN0ZWRfc3VtKSB7CisgIHJldHVybiBNYWtlTWF0Y2hlcihuZXcgQmFyUGx1c0JhekVxTWF0
Y2hlcihleHBlY3RlZF9zdW0pKTsKK30KKworLi4uCisKKyAgRVhQRUNUX0NBTEwoLi4uLCBEb1Ro
aXMoQmFyUGx1c0JhekVxKDUpKSkuLi47CitgYGAKKworIyMgTWF0Y2hpbmcgQ29udGFpbmVycyAj
IworCitTb21ldGltZXMgYW4gU1RMIGNvbnRhaW5lciAoZS5nLiBsaXN0LCB2ZWN0b3IsIG1hcCwg
Li4uKSBpcyBwYXNzZWQgdG8KK2EgbW9jayBmdW5jdGlvbiBhbmQgeW91IG1heSB3YW50IHRvIHZh
bGlkYXRlIGl0LiBTaW5jZSBtb3N0IFNUTAorY29udGFpbmVycyBzdXBwb3J0IHRoZSBgPT1gIG9w
ZXJhdG9yLCB5b3UgY2FuIHdyaXRlCitgRXEoZXhwZWN0ZWRfY29udGFpbmVyKWAgb3Igc2ltcGx5
IGBleHBlY3RlZF9jb250YWluZXJgIHRvIG1hdGNoIGEKK2NvbnRhaW5lciBleGFjdGx5LgorCitT
b21ldGltZXMsIHRob3VnaCwgeW91IG1heSB3YW50IHRvIGJlIG1vcmUgZmxleGlibGUgKGZvciBl
eGFtcGxlLCB0aGUKK2ZpcnN0IGVsZW1lbnQgbXVzdCBiZSBhbiBleGFjdCBtYXRjaCwgYnV0IHRo
ZSBzZWNvbmQgZWxlbWVudCBjYW4gYmUKK2FueSBwb3NpdGl2ZSBudW1iZXIsIGFuZCBzbyBvbiku
IEFsc28sIGNvbnRhaW5lcnMgdXNlZCBpbiB0ZXN0cyBvZnRlbgoraGF2ZSBhIHNtYWxsIG51bWJl
ciBvZiBlbGVtZW50cywgYW5kIGhhdmluZyB0byBkZWZpbmUgdGhlIGV4cGVjdGVkCitjb250YWlu
ZXIgb3V0LW9mLWxpbmUgaXMgYSBiaXQgb2YgYSBoYXNzbGUuCisKK1lvdSBjYW4gdXNlIHRoZSBg
RWxlbWVudHNBcmUoKWAgb3IgYFVub3JkZXJlZEVsZW1lbnRzQXJlKClgIG1hdGNoZXIgaW4KK3N1
Y2ggY2FzZXM6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpfOwordXNpbmcgOjp0ZXN0aW5nOjpF
bGVtZW50c0FyZTsKK3VzaW5nIDo6dGVzdGluZzo6R3Q7CisuLi4KKworICBNT0NLX01FVEhPRDEo
Rm9vLCB2b2lkKGNvbnN0IHZlY3RvcjxpbnQ+JiBudW1iZXJzKSk7CisuLi4KKworICBFWFBFQ1Rf
Q0FMTChtb2NrLCBGb28oRWxlbWVudHNBcmUoMSwgR3QoMCksIF8sIDUpKSk7CitgYGAKKworVGhl
IGFib3ZlIG1hdGNoZXIgc2F5cyB0aGF0IHRoZSBjb250YWluZXIgbXVzdCBoYXZlIDQgZWxlbWVu
dHMsIHdoaWNoCittdXN0IGJlIDEsIGdyZWF0ZXIgdGhhbiAwLCBhbnl0aGluZywgYW5kIDUgcmVz
cGVjdGl2ZWx5LgorCitJZiB5b3UgaW5zdGVhZCB3cml0ZToKKworYGBgCit1c2luZyA6OnRlc3Rp
bmc6Ol87Cit1c2luZyA6OnRlc3Rpbmc6Okd0OwordXNpbmcgOjp0ZXN0aW5nOjpVbm9yZGVyZWRF
bGVtZW50c0FyZTsKKy4uLgorCisgIE1PQ0tfTUVUSE9EMShGb28sIHZvaWQoY29uc3QgdmVjdG9y
PGludD4mIG51bWJlcnMpKTsKKy4uLgorCisgIEVYUEVDVF9DQUxMKG1vY2ssIEZvbyhVbm9yZGVy
ZWRFbGVtZW50c0FyZSgxLCBHdCgwKSwgXywgNSkpKTsKK2BgYAorCitJdCBtZWFucyB0aGF0IHRo
ZSBjb250YWluZXIgbXVzdCBoYXZlIDQgZWxlbWVudHMsIHdoaWNoIHVuZGVyIHNvbWUKK3Blcm11
dGF0aW9uIG11c3QgYmUgMSwgZ3JlYXRlciB0aGFuIDAsIGFueXRoaW5nLCBhbmQgNSByZXNwZWN0
aXZlbHkuCisKK2BFbGVtZW50c0FyZSgpYCBhbmQgYFVub3JkZXJlZEVsZW1lbnRzQXJlKClgIGFy
ZSBvdmVybG9hZGVkIHRvIHRha2UgMAordG8gMTAgYXJndW1lbnRzLiBJZiBtb3JlIGFyZSBuZWVk
ZWQsIHlvdSBjYW4gcGxhY2UgdGhlbSBpbiBhIEMtc3R5bGUKK2FycmF5IGFuZCB1c2UgYEVsZW1l
bnRzQXJlQXJyYXkoKWAgb3IgYFVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkoKWAKK2luc3RlYWQ6
CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpFbGVtZW50c0FyZUFycmF5OworLi4uCisKKyAgLy8g
RWxlbWVudHNBcmVBcnJheSBhY2NlcHRzIGFuIGFycmF5IG9mIGVsZW1lbnQgdmFsdWVzLgorICBj
b25zdCBpbnQgZXhwZWN0ZWRfdmVjdG9yMVtdID0geyAxLCA1LCAyLCA0LCAuLi4gfTsKKyAgRVhQ
RUNUX0NBTEwobW9jaywgRm9vKEVsZW1lbnRzQXJlQXJyYXkoZXhwZWN0ZWRfdmVjdG9yMSkpKTsK
KworICAvLyBPciwgYW4gYXJyYXkgb2YgZWxlbWVudCBtYXRjaGVycy4KKyAgTWF0Y2hlcjxpbnQ+
IGV4cGVjdGVkX3ZlY3RvcjIgPSB7IDEsIEd0KDIpLCBfLCAzLCAuLi4gfTsKKyAgRVhQRUNUX0NB
TEwobW9jaywgRm9vKEVsZW1lbnRzQXJlQXJyYXkoZXhwZWN0ZWRfdmVjdG9yMikpKTsKK2BgYAor
CitJbiBjYXNlIHRoZSBhcnJheSBuZWVkcyB0byBiZSBkeW5hbWljYWxseSBjcmVhdGVkIChhbmQg
dGhlcmVmb3JlIHRoZQorYXJyYXkgc2l6ZSBjYW5ub3QgYmUgaW5mZXJyZWQgYnkgdGhlIGNvbXBp
bGVyKSwgeW91IGNhbiBnaXZlCitgRWxlbWVudHNBcmVBcnJheSgpYCBhbiBhZGRpdGlvbmFsIGFy
Z3VtZW50IHRvIHNwZWNpZnkgdGhlIGFycmF5IHNpemU6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5n
OjpFbGVtZW50c0FyZUFycmF5OworLi4uCisgIGludCogY29uc3QgZXhwZWN0ZWRfdmVjdG9yMyA9
IG5ldyBpbnRbY291bnRdOworICAuLi4gZmlsbCBleHBlY3RlZF92ZWN0b3IzIHdpdGggdmFsdWVz
IC4uLgorICBFWFBFQ1RfQ0FMTChtb2NrLCBGb28oRWxlbWVudHNBcmVBcnJheShleHBlY3RlZF92
ZWN0b3IzLCBjb3VudCkpKTsKK2BgYAorCisqKlRpcHM6KioKKworICAqIGBFbGVtZW50c0FyZSoo
KWAgY2FuIGJlIHVzZWQgdG8gbWF0Y2ggX2FueV8gY29udGFpbmVyIHRoYXQgaW1wbGVtZW50cyB0
aGUgU1RMIGl0ZXJhdG9yIHBhdHRlcm4gKGkuZS4gaXQgaGFzIGEgYGNvbnN0X2l0ZXJhdG9yYCB0
eXBlIGFuZCBzdXBwb3J0cyBgYmVnaW4oKS9lbmQoKWApLCBub3QganVzdCB0aGUgb25lcyBkZWZp
bmVkIGluIFNUTC4gSXQgd2lsbCBldmVuIHdvcmsgd2l0aCBjb250YWluZXIgdHlwZXMgeWV0IHRv
IGJlIHdyaXR0ZW4gLSBhcyBsb25nIGFzIHRoZXkgZm9sbG93cyB0aGUgYWJvdmUgcGF0dGVybi4K
KyAgKiBZb3UgY2FuIHVzZSBuZXN0ZWQgYEVsZW1lbnRzQXJlKigpYCB0byBtYXRjaCBuZXN0ZWQg
KG11bHRpLWRpbWVuc2lvbmFsKSBjb250YWluZXJzLgorICAqIElmIHRoZSBjb250YWluZXIgaXMg
cGFzc2VkIGJ5IHBvaW50ZXIgaW5zdGVhZCBvZiBieSByZWZlcmVuY2UsIGp1c3Qgd3JpdGUgYFBv
aW50ZWUoRWxlbWVudHNBcmUqKC4uLikpYC4KKyAgKiBUaGUgb3JkZXIgb2YgZWxlbWVudHMgX21h
dHRlcnNfIGZvciBgRWxlbWVudHNBcmUqKClgLiBUaGVyZWZvcmUgZG9uJ3QgdXNlIGl0IHdpdGgg
Y29udGFpbmVycyB3aG9zZSBlbGVtZW50IG9yZGVyIGlzIHVuZGVmaW5lZCAoZS5nLiBgaGFzaF9t
YXBgKS4KKworIyMgU2hhcmluZyBNYXRjaGVycyAjIworCitVbmRlciB0aGUgaG9vZCwgYSBHb29n
bGUgTW9jayBtYXRjaGVyIG9iamVjdCBjb25zaXN0cyBvZiBhIHBvaW50ZXIgdG8KK2EgcmVmLWNv
dW50ZWQgaW1wbGVtZW50YXRpb24gb2JqZWN0LiBDb3B5aW5nIG1hdGNoZXJzIGlzIGFsbG93ZWQg
YW5kCit2ZXJ5IGVmZmljaWVudCwgYXMgb25seSB0aGUgcG9pbnRlciBpcyBjb3BpZWQuIFdoZW4g
dGhlIGxhc3QgbWF0Y2hlcgordGhhdCByZWZlcmVuY2VzIHRoZSBpbXBsZW1lbnRhdGlvbiBvYmpl
Y3QgZGllcywgdGhlIGltcGxlbWVudGF0aW9uCitvYmplY3Qgd2lsbCBiZSBkZWxldGVkLgorCitU
aGVyZWZvcmUsIGlmIHlvdSBoYXZlIHNvbWUgY29tcGxleCBtYXRjaGVyIHRoYXQgeW91IHdhbnQg
dG8gdXNlIGFnYWluCithbmQgYWdhaW4sIHRoZXJlIGlzIG5vIG5lZWQgdG8gYnVpbGQgaXQgZXZl
cnl0aW1lLiBKdXN0IGFzc2lnbiBpdCB0byBhCittYXRjaGVyIHZhcmlhYmxlIGFuZCB1c2UgdGhh
dCB2YXJpYWJsZSByZXBlYXRlZGx5ISBGb3IgZXhhbXBsZSwKKworYGBgCisgIE1hdGNoZXI8aW50
PiBpbl9yYW5nZSA9IEFsbE9mKEd0KDUpLCBMZSgxMCkpOworICAuLi4gdXNlIGluX3JhbmdlIGFz
IGEgbWF0Y2hlciBpbiBtdWx0aXBsZSBFWFBFQ1RfQ0FMTHMgLi4uCitgYGAKKworIyBTZXR0aW5n
IEV4cGVjdGF0aW9ucyAjCisKKyMjIEtub3dpbmcgV2hlbiB0byBFeHBlY3QgIyMKKworYE9OX0NB
TExgIGlzIGxpa2VseSB0aGUgc2luZ2xlIG1vc3QgdW5kZXItdXRpbGl6ZWQgY29uc3RydWN0IGlu
IEdvb2dsZSBNb2NrLgorCitUaGVyZSBhcmUgYmFzaWNhbGx5IHR3byBjb25zdHJ1Y3RzIGZvciBk
ZWZpbmluZyB0aGUgYmVoYXZpb3Igb2YgYSBtb2NrIG9iamVjdDogYE9OX0NBTExgIGFuZCBgRVhQ
RUNUX0NBTExgLiBUaGUgZGlmZmVyZW5jZT8gYE9OX0NBTExgIGRlZmluZXMgd2hhdCBoYXBwZW5z
IHdoZW4gYSBtb2NrIG1ldGhvZCBpcyBjYWxsZWQsIGJ1dCBfZG9lc24ndCBpbXBseSBhbnkgZXhw
ZWN0YXRpb24gb24gdGhlIG1ldGhvZCBiZWluZyBjYWxsZWQuXyBgRVhQRUNUX0NBTExgIG5vdCBv
bmx5IGRlZmluZXMgdGhlIGJlaGF2aW9yLCBidXQgYWxzbyBzZXRzIGFuIGV4cGVjdGF0aW9uIHRo
YXQgX3RoZSBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzLCBm
b3IgdGhlIGdpdmVuIG51bWJlciBvZiB0aW1lc18gKGFuZCBfaW4gdGhlIGdpdmVuIG9yZGVyXyB3
aGVuIHlvdSBzcGVjaWZ5IHRoZSBvcmRlciB0b28pLgorCitTaW5jZSBgRVhQRUNUX0NBTExgIGRv
ZXMgbW9yZSwgaXNuJ3QgaXQgYmV0dGVyIHRoYW4gYE9OX0NBTExgPyBOb3QgcmVhbGx5LiBFdmVy
eSBgRVhQRUNUX0NBTExgIGFkZHMgYSBjb25zdHJhaW50IG9uIHRoZSBiZWhhdmlvciBvZiB0aGUg
Y29kZSB1bmRlciB0ZXN0LiBIYXZpbmcgbW9yZSBjb25zdHJhaW50cyB0aGFuIG5lY2Vzc2FyeSBp
cyBfYmFhYWRfIC0gZXZlbiB3b3JzZSB0aGFuIG5vdCBoYXZpbmcgZW5vdWdoIGNvbnN0cmFpbnRz
LgorCitUaGlzIG1heSBiZSBjb3VudGVyLWludHVpdGl2ZS4gSG93IGNvdWxkIHRlc3RzIHRoYXQg
dmVyaWZ5IG1vcmUgYmUgd29yc2UgdGhhbiB0ZXN0cyB0aGF0IHZlcmlmeSBsZXNzPyBJc24ndCB2
ZXJpZmljYXRpb24gdGhlIHdob2xlIHBvaW50IG9mIHRlc3RzPworCitUaGUgYW5zd2VyLCBsaWVz
IGluIF93aGF0XyBhIHRlc3Qgc2hvdWxkIHZlcmlmeS4gKipBIGdvb2QgdGVzdCB2ZXJpZmllcyB0
aGUgY29udHJhY3Qgb2YgdGhlIGNvZGUuKiogSWYgYSB0ZXN0IG92ZXItc3BlY2lmaWVzLCBpdCBk
b2Vzbid0IGxlYXZlIGVub3VnaCBmcmVlZG9tIHRvIHRoZSBpbXBsZW1lbnRhdGlvbi4gQXMgYSBy
ZXN1bHQsIGNoYW5naW5nIHRoZSBpbXBsZW1lbnRhdGlvbiB3aXRob3V0IGJyZWFraW5nIHRoZSBj
b250cmFjdCAoZS5nLiByZWZhY3RvcmluZyBhbmQgb3B0aW1pemF0aW9uKSwgd2hpY2ggc2hvdWxk
IGJlIHBlcmZlY3RseSBmaW5lIHRvIGRvLCBjYW4gYnJlYWsgc3VjaCB0ZXN0cy4gVGhlbiB5b3Ug
aGF2ZSB0byBzcGVuZCB0aW1lIGZpeGluZyB0aGVtLCBvbmx5IHRvIHNlZSB0aGVtIGJyb2tlbiBh
Z2FpbiB0aGUgbmV4dCB0aW1lIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBjaGFuZ2VkLgorCitLZWVw
IGluIG1pbmQgdGhhdCBvbmUgZG9lc24ndCBoYXZlIHRvIHZlcmlmeSBtb3JlIHRoYW4gb25lIHBy
b3BlcnR5IGluIG9uZSB0ZXN0LiBJbiBmYWN0LCAqKml0J3MgYSBnb29kIHN0eWxlIHRvIHZlcmlm
eSBvbmx5IG9uZSB0aGluZyBpbiBvbmUgdGVzdC4qKiBJZiB5b3UgZG8gdGhhdCwgYSBidWcgd2ls
bCBsaWtlbHkgYnJlYWsgb25seSBvbmUgb3IgdHdvIHRlc3RzIGluc3RlYWQgb2YgZG96ZW5zICh3
aGljaCBjYXNlIHdvdWxkIHlvdSByYXRoZXIgZGVidWc/KS4gSWYgeW91IGFyZSBhbHNvIGluIHRo
ZSBoYWJpdCBvZiBnaXZpbmcgdGVzdHMgZGVzY3JpcHRpdmUgbmFtZXMgdGhhdCB0ZWxsIHdoYXQg
dGhleSB2ZXJpZnksIHlvdSBjYW4gb2Z0ZW4gZWFzaWx5IGd1ZXNzIHdoYXQncyB3cm9uZyBqdXN0
IGZyb20gdGhlIHRlc3QgbG9nIGl0c2VsZi4KKworU28gdXNlIGBPTl9DQUxMYCBieSBkZWZhdWx0
LCBhbmQgb25seSB1c2UgYEVYUEVDVF9DQUxMYCB3aGVuIHlvdSBhY3R1YWxseSBpbnRlbmQgdG8g
dmVyaWZ5IHRoYXQgdGhlIGNhbGwgaXMgbWFkZS4gRm9yIGV4YW1wbGUsIHlvdSBtYXkgaGF2ZSBh
IGJ1bmNoIG9mIGBPTl9DQUxMYHMgaW4geW91ciB0ZXN0IGZpeHR1cmUgdG8gc2V0IHRoZSBjb21t
b24gbW9jayBiZWhhdmlvciBzaGFyZWQgYnkgYWxsIHRlc3RzIGluIHRoZSBzYW1lIGdyb3VwLCBh
bmQgd3JpdGUgKHNjYXJjZWx5KSBkaWZmZXJlbnQgYEVYUEVDVF9DQUxMYHMgaW4gZGlmZmVyZW50
IGBURVNUX0ZgcyB0byB2ZXJpZnkgZGlmZmVyZW50IGFzcGVjdHMgb2YgdGhlIGNvZGUncyBiZWhh
dmlvci4gQ29tcGFyZWQgd2l0aCB0aGUgc3R5bGUgd2hlcmUgZWFjaCBgVEVTVGAgaGFzIG1hbnkg
YEVYUEVDVF9DQUxMYHMsIHRoaXMgbGVhZHMgdG8gdGVzdHMgdGhhdCBhcmUgbW9yZSByZXNpbGll
bnQgdG8gaW1wbGVtZW50YXRpb25hbCBjaGFuZ2VzIChhbmQgdGh1cyBsZXNzIGxpa2VseSB0byBy
ZXF1aXJlIG1haW50ZW5hbmNlKSBhbmQgbWFrZXMgdGhlIGludGVudCBvZiB0aGUgdGVzdHMgbW9y
ZSBvYnZpb3VzIChzbyB0aGV5IGFyZSBlYXNpZXIgdG8gbWFpbnRhaW4gd2hlbiB5b3UgZG8gbmVl
ZCB0byBtYWludGFpbiB0aGVtKS4KKworIyMgSWdub3JpbmcgVW5pbnRlcmVzdGluZyBDYWxscyAj
IworCitJZiB5b3UgYXJlIG5vdCBpbnRlcmVzdGVkIGluIGhvdyBhIG1vY2sgbWV0aG9kIGlzIGNh
bGxlZCwganVzdCBkb24ndAorc2F5IGFueXRoaW5nIGFib3V0IGl0LiBJbiB0aGlzIGNhc2UsIGlm
IHRoZSBtZXRob2QgaXMgZXZlciBjYWxsZWQsCitHb29nbGUgTW9jayB3aWxsIHBlcmZvcm0gaXRz
IGRlZmF1bHQgYWN0aW9uIHRvIGFsbG93IHRoZSB0ZXN0IHByb2dyYW0KK3RvIGNvbnRpbnVlLiBJ
ZiB5b3UgYXJlIG5vdCBoYXBweSB3aXRoIHRoZSBkZWZhdWx0IGFjdGlvbiB0YWtlbiBieQorR29v
Z2xlIE1vY2ssIHlvdSBjYW4gb3ZlcnJpZGUgaXQgdXNpbmcgYERlZmF1bHRWYWx1ZTxUPjo6U2V0
KClgCisoZGVzY3JpYmVkIGxhdGVyIGluIHRoaXMgZG9jdW1lbnQpIG9yIGBPTl9DQUxMKClgLgor
CitQbGVhc2Ugbm90ZSB0aGF0IG9uY2UgeW91IGV4cHJlc3NlZCBpbnRlcmVzdCBpbiBhIHBhcnRp
Y3VsYXIgbW9jaworbWV0aG9kICh2aWEgYEVYUEVDVF9DQUxMKClgKSwgYWxsIGludm9jYXRpb25z
IHRvIGl0IG11c3QgbWF0Y2ggc29tZQorZXhwZWN0YXRpb24uIElmIHRoaXMgZnVuY3Rpb24gaXMg
Y2FsbGVkIGJ1dCB0aGUgYXJndW1lbnRzIGRvbid0IG1hdGNoCithbnkgYEVYUEVDVF9DQUxMKClg
IHN0YXRlbWVudCwgaXQgd2lsbCBiZSBhbiBlcnJvci4KKworIyMgRGlzYWxsb3dpbmcgVW5leHBl
Y3RlZCBDYWxscyAjIworCitJZiBhIG1vY2sgbWV0aG9kIHNob3VsZG4ndCBiZSBjYWxsZWQgYXQg
YWxsLCBleHBsaWNpdGx5IHNheSBzbzoKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6Ol87CisuLi4K
KyAgRVhQRUNUX0NBTEwoZm9vLCBCYXIoXykpCisgICAgICAuVGltZXMoMCk7CitgYGAKKworSWYg
c29tZSBjYWxscyB0byB0aGUgbWV0aG9kIGFyZSBhbGxvd2VkLCBidXQgdGhlIHJlc3QgYXJlIG5v
dCwganVzdAorbGlzdCBhbGwgdGhlIGV4cGVjdGVkIGNhbGxzOgorCitgYGAKK3VzaW5nIDo6dGVz
dGluZzo6QW55TnVtYmVyOwordXNpbmcgOjp0ZXN0aW5nOjpHdDsKKy4uLgorICBFWFBFQ1RfQ0FM
TChmb28sIEJhcig1KSk7CisgIEVYUEVDVF9DQUxMKGZvbywgQmFyKEd0KDEwKSkpCisgICAgICAu
VGltZXMoQW55TnVtYmVyKCkpOworYGBgCisKK0EgY2FsbCB0byBgZm9vLkJhcigpYCB0aGF0IGRv
ZXNuJ3QgbWF0Y2ggYW55IG9mIHRoZSBgRVhQRUNUX0NBTEwoKWAKK3N0YXRlbWVudHMgd2lsbCBi
ZSBhbiBlcnJvci4KKworIyMgRXhwZWN0aW5nIE9yZGVyZWQgQ2FsbHMgIyMKKworQWx0aG91Z2gg
YW4gYEVYUEVDVF9DQUxMKClgIHN0YXRlbWVudCBkZWZpbmVkIGVhcmxpZXIgdGFrZXMgcHJlY2Vk
ZW5jZQord2hlbiBHb29nbGUgTW9jayB0cmllcyB0byBtYXRjaCBhIGZ1bmN0aW9uIGNhbGwgd2l0
aCBhbiBleHBlY3RhdGlvbiwKK2J5IGRlZmF1bHQgY2FsbHMgZG9uJ3QgaGF2ZSB0byBoYXBwZW4g
aW4gdGhlIG9yZGVyIGBFWFBFQ1RfQ0FMTCgpYAorc3RhdGVtZW50cyBhcmUgd3JpdHRlbi4gRm9y
IGV4YW1wbGUsIGlmIHRoZSBhcmd1bWVudHMgbWF0Y2ggdGhlCittYXRjaGVycyBpbiB0aGUgdGhp
cmQgYEVYUEVDVF9DQUxMKClgLCBidXQgbm90IHRob3NlIGluIHRoZSBmaXJzdCB0d28sCit0aGVu
IHRoZSB0aGlyZCBleHBlY3RhdGlvbiB3aWxsIGJlIHVzZWQuCisKK0lmIHlvdSB3b3VsZCByYXRo
ZXIgaGF2ZSBhbGwgY2FsbHMgb2NjdXIgaW4gdGhlIG9yZGVyIG9mIHRoZQorZXhwZWN0YXRpb25z
LCBwdXQgdGhlIGBFWFBFQ1RfQ0FMTCgpYCBzdGF0ZW1lbnRzIGluIGEgYmxvY2sgd2hlcmUgeW91
CitkZWZpbmUgYSB2YXJpYWJsZSBvZiB0eXBlIGBJblNlcXVlbmNlYDoKKworYGBgCisgIHVzaW5n
IDo6dGVzdGluZzo6XzsKKyAgdXNpbmcgOjp0ZXN0aW5nOjpJblNlcXVlbmNlOworCisgIHsKKyAg
ICBJblNlcXVlbmNlIHM7CisKKyAgICBFWFBFQ1RfQ0FMTChmb28sIERvVGhpcyg1KSk7CisgICAg
RVhQRUNUX0NBTEwoYmFyLCBEb1RoYXQoXykpCisgICAgICAgIC5UaW1lcygyKTsKKyAgICBFWFBF
Q1RfQ0FMTChmb28sIERvVGhpcyg2KSk7CisgIH0KK2BgYAorCitJbiB0aGlzIGV4YW1wbGUsIHdl
IGV4cGVjdCBhIGNhbGwgdG8gYGZvby5Eb1RoaXMoNSlgLCBmb2xsb3dlZCBieSB0d28KK2NhbGxz
IHRvIGBiYXIuRG9UaGF0KClgIHdoZXJlIHRoZSBhcmd1bWVudCBjYW4gYmUgYW55dGhpbmcsIHdo
aWNoIGFyZQoraW4gdHVybiBmb2xsb3dlZCBieSBhIGNhbGwgdG8gYGZvby5Eb1RoaXMoNilgLiBJ
ZiBhIGNhbGwgb2NjdXJyZWQKK291dC1vZi1vcmRlciwgR29vZ2xlIE1vY2sgd2lsbCByZXBvcnQg
YW4gZXJyb3IuCisKKyMjIEV4cGVjdGluZyBQYXJ0aWFsbHkgT3JkZXJlZCBDYWxscyAjIworCitT
b21ldGltZXMgcmVxdWlyaW5nIGV2ZXJ5dGhpbmcgdG8gb2NjdXIgaW4gYSBwcmVkZXRlcm1pbmVk
IG9yZGVyIGNhbgorbGVhZCB0byBicml0dGxlIHRlc3RzLiBGb3IgZXhhbXBsZSwgd2UgbWF5IGNh
cmUgYWJvdXQgYEFgIG9jY3VycmluZworYmVmb3JlIGJvdGggYEJgIGFuZCBgQ2AsIGJ1dCBhcmVu
J3QgaW50ZXJlc3RlZCBpbiB0aGUgcmVsYXRpdmUgb3JkZXIKK29mIGBCYCBhbmQgYENgLiBJbiB0
aGlzIGNhc2UsIHRoZSB0ZXN0IHNob3VsZCByZWZsZWN0IG91ciByZWFsIGludGVudCwKK2luc3Rl
YWQgb2YgYmVpbmcgb3Zlcmx5IGNvbnN0cmFpbmluZy4KKworR29vZ2xlIE1vY2sgYWxsb3dzIHlv
dSB0byBpbXBvc2UgYW4gYXJiaXRyYXJ5IERBRyAoZGlyZWN0ZWQgYWN5Y2xpYworZ3JhcGgpIG9u
IHRoZSBjYWxscy4gT25lIHdheSB0byBleHByZXNzIHRoZSBEQUcgaXMgdG8gdXNlIHRoZQorW0Fm
dGVyXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9jay93aWtpL1YxXzdfQ2hlYXRT
aGVldCNUaGVfQWZ0ZXJfQ2xhdXNlKSBjbGF1c2Ugb2YgYEVYUEVDVF9DQUxMYC4KKworQW5vdGhl
ciB3YXkgaXMgdmlhIHRoZSBgSW5TZXF1ZW5jZSgpYCBjbGF1c2UgKG5vdCB0aGUgc2FtZSBhcyB0
aGUKK2BJblNlcXVlbmNlYCBjbGFzcyksIHdoaWNoIHdlIGJvcnJvd2VkIGZyb20gak1vY2sgMi4g
SXQncyBsZXNzCitmbGV4aWJsZSB0aGFuIGBBZnRlcigpYCwgYnV0IG1vcmUgY29udmVuaWVudCB3
aGVuIHlvdSBoYXZlIGxvbmcgY2hhaW5zCitvZiBzZXF1ZW50aWFsIGNhbGxzLCBhcyBpdCBkb2Vz
bid0IHJlcXVpcmUgeW91IHRvIGNvbWUgdXAgd2l0aAorZGlmZmVyZW50IG5hbWVzIGZvciB0aGUg
ZXhwZWN0YXRpb25zIGluIHRoZSBjaGFpbnMuICBIZXJlJ3MgaG93IGl0Cit3b3JrczoKKworSWYg
d2UgdmlldyBgRVhQRUNUX0NBTEwoKWAgc3RhdGVtZW50cyBhcyBub2RlcyBpbiBhIGdyYXBoLCBh
bmQgYWRkIGFuCitlZGdlIGZyb20gbm9kZSBBIHRvIG5vZGUgQiB3aGVyZXZlciBBIG11c3Qgb2Nj
dXIgYmVmb3JlIEIsIHdlIGNhbiBnZXQKK2EgREFHLiBXZSB1c2UgdGhlIHRlcm0gInNlcXVlbmNl
IiB0byBtZWFuIGEgZGlyZWN0ZWQgcGF0aCBpbiB0aGlzCitEQUcuIE5vdywgaWYgd2UgZGVjb21w
b3NlIHRoZSBEQUcgaW50byBzZXF1ZW5jZXMsIHdlIGp1c3QgbmVlZCB0byBrbm93Cit3aGljaCBz
ZXF1ZW5jZXMgZWFjaCBgRVhQRUNUX0NBTEwoKWAgYmVsb25ncyB0byBpbiBvcmRlciB0byBiZSBh
YmxlIHRvCityZWNvbnN0cnVjdCB0aGUgb3JnaW5hbCBEQUcuCisKK1NvLCB0byBzcGVjaWZ5IHRo
ZSBwYXJ0aWFsIG9yZGVyIG9uIHRoZSBleHBlY3RhdGlvbnMgd2UgbmVlZCB0byBkbyB0d28KK3Ro
aW5nczogZmlyc3QgdG8gZGVmaW5lIHNvbWUgYFNlcXVlbmNlYCBvYmplY3RzLCBhbmQgdGhlbiBm
b3IgZWFjaAorYEVYUEVDVF9DQUxMKClgIHNheSB3aGljaCBgU2VxdWVuY2VgIG9iamVjdHMgaXQg
aXMgcGFydAorb2YuIEV4cGVjdGF0aW9ucyBpbiB0aGUgc2FtZSBzZXF1ZW5jZSBtdXN0IG9jY3Vy
IGluIHRoZSBvcmRlciB0aGV5IGFyZQord3JpdHRlbi4gRm9yIGV4YW1wbGUsCisKK2BgYAorICB1
c2luZyA6OnRlc3Rpbmc6OlNlcXVlbmNlOworCisgIFNlcXVlbmNlIHMxLCBzMjsKKworICBFWFBF
Q1RfQ0FMTChmb28sIEEoKSkKKyAgICAgIC5JblNlcXVlbmNlKHMxLCBzMik7CisgIEVYUEVDVF9D
QUxMKGJhciwgQigpKQorICAgICAgLkluU2VxdWVuY2UoczEpOworICBFWFBFQ1RfQ0FMTChiYXIs
IEMoKSkKKyAgICAgIC5JblNlcXVlbmNlKHMyKTsKKyAgRVhQRUNUX0NBTEwoZm9vLCBEKCkpCisg
ICAgICAuSW5TZXF1ZW5jZShzMik7CitgYGAKKworc3BlY2lmaWVzIHRoZSBmb2xsb3dpbmcgREFH
ICh3aGVyZSBgczFgIGlzIGBBIC0+IEJgLCBhbmQgYHMyYCBpcyBgQSAtPgorQyAtPiBEYCk6CisK
K2BgYAorICAgICAgICstLS0+IEIKKyAgICAgICB8CisgIEEgLS0tfAorICAgICAgIHwKKyAgICAg
ICArLS0tPiBDIC0tLT4gRAorYGBgCisKK1RoaXMgbWVhbnMgdGhhdCBBIG11c3Qgb2NjdXIgYmVm
b3JlIEIgYW5kIEMsIGFuZCBDIG11c3Qgb2NjdXIgYmVmb3JlCitELiBUaGVyZSdzIG5vIHJlc3Ry
aWN0aW9uIGFib3V0IHRoZSBvcmRlciBvdGhlciB0aGFuIHRoZXNlLgorCisjIyBDb250cm9sbGlu
ZyBXaGVuIGFuIEV4cGVjdGF0aW9uIFJldGlyZXMgIyMKKworV2hlbiBhIG1vY2sgbWV0aG9kIGlz
IGNhbGxlZCwgR29vZ2xlIE1vY2sgb25seSBjb25zaWRlciBleHBlY3RhdGlvbnMKK3RoYXQgYXJl
IHN0aWxsIGFjdGl2ZS4gQW4gZXhwZWN0YXRpb24gaXMgYWN0aXZlIHdoZW4gY3JlYXRlZCwgYW5k
CitiZWNvbWVzIGluYWN0aXZlIChha2EgX3JldGlyZXNfKSB3aGVuIGEgY2FsbCB0aGF0IGhhcyB0
byBvY2N1ciBsYXRlcgoraGFzIG9jY3VycmVkLiBGb3IgZXhhbXBsZSwgaW4KKworYGBgCisgIHVz
aW5nIDo6dGVzdGluZzo6XzsKKyAgdXNpbmcgOjp0ZXN0aW5nOjpTZXF1ZW5jZTsKKworICBTZXF1
ZW5jZSBzMSwgczI7CisKKyAgRVhQRUNUX0NBTEwobG9nLCBMb2coV0FSTklORywgXywgIkZpbGUg
dG9vIGxhcmdlLiIpKSAgICAgLy8gIzEKKyAgICAgIC5UaW1lcyhBbnlOdW1iZXIoKSkKKyAgICAg
IC5JblNlcXVlbmNlKHMxLCBzMik7CisgIEVYUEVDVF9DQUxMKGxvZywgTG9nKFdBUk5JTkcsIF8s
ICJEYXRhIHNldCBpcyBlbXB0eS4iKSkgIC8vICMyCisgICAgICAuSW5TZXF1ZW5jZShzMSk7Cisg
IEVYUEVDVF9DQUxMKGxvZywgTG9nKFdBUk5JTkcsIF8sICJVc2VyIG5vdCBmb3VuZC4iKSkgICAg
IC8vICMzCisgICAgICAuSW5TZXF1ZW5jZShzMik7CitgYGAKKworYXMgc29vbiBhcyBlaXRoZXIg
IzIgb3IgIzMgaXMgbWF0Y2hlZCwgIzEgd2lsbCByZXRpcmUuIElmIGEgd2FybmluZworYCJGaWxl
IHRvbyBsYXJnZS4iYCBpcyBsb2dnZWQgYWZ0ZXIgdGhpcywgaXQgd2lsbCBiZSBhbiBlcnJvci4K
KworTm90ZSB0aGF0IGFuIGV4cGVjdGF0aW9uIGRvZXNuJ3QgcmV0aXJlIGF1dG9tYXRpY2FsbHkg
d2hlbiBpdCdzCitzYXR1cmF0ZWQuIEZvciBleGFtcGxlLAorCitgYGAKK3VzaW5nIDo6dGVzdGlu
Zzo6XzsKKy4uLgorICBFWFBFQ1RfQ0FMTChsb2csIExvZyhXQVJOSU5HLCBfLCBfKSk7ICAgICAg
ICAgICAgICAgICAgLy8gIzEKKyAgRVhQRUNUX0NBTEwobG9nLCBMb2coV0FSTklORywgXywgIkZp
bGUgdG9vIGxhcmdlLiIpKTsgIC8vICMyCitgYGAKKworc2F5cyB0aGF0IHRoZXJlIHdpbGwgYmUg
ZXhhY3RseSBvbmUgd2FybmluZyB3aXRoIHRoZSBtZXNzYWdlIGAiRmlsZQordG9vIGxhcmdlLiJg
LiBJZiB0aGUgc2Vjb25kIHdhcm5pbmcgY29udGFpbnMgdGhpcyBtZXNzYWdlIHRvbywgIzIgd2ls
bAorbWF0Y2ggYWdhaW4gYW5kIHJlc3VsdCBpbiBhbiB1cHBlci1ib3VuZC12aW9sYXRlZCBlcnJv
ci4KKworSWYgdGhpcyBpcyBub3Qgd2hhdCB5b3Ugd2FudCwgeW91IGNhbiBhc2sgYW4gZXhwZWN0
YXRpb24gdG8gcmV0aXJlIGFzCitzb29uIGFzIGl0IGJlY29tZXMgc2F0dXJhdGVkOgorCitgYGAK
K3VzaW5nIDo6dGVzdGluZzo6XzsKKy4uLgorICBFWFBFQ1RfQ0FMTChsb2csIExvZyhXQVJOSU5H
LCBfLCBfKSk7ICAgICAgICAgICAgICAgICAvLyAjMQorICBFWFBFQ1RfQ0FMTChsb2csIExvZyhX
QVJOSU5HLCBfLCAiRmlsZSB0b28gbGFyZ2UuIikpICAvLyAjMgorICAgICAgLlJldGlyZXNPblNh
dHVyYXRpb24oKTsKK2BgYAorCitIZXJlICMyIGNhbiBiZSB1c2VkIG9ubHkgb25jZSwgc28gaWYg
eW91IGhhdmUgdHdvIHdhcm5pbmdzIHdpdGggdGhlCittZXNzYWdlIGAiRmlsZSB0b28gbGFyZ2Uu
ImAsIHRoZSBmaXJzdCB3aWxsIG1hdGNoICMyIGFuZCB0aGUgc2Vjb25kCit3aWxsIG1hdGNoICMx
IC0gdGhlcmUgd2lsbCBiZSBubyBlcnJvci4KKworIyBVc2luZyBBY3Rpb25zICMKKworIyMgUmV0
dXJuaW5nIFJlZmVyZW5jZXMgZnJvbSBNb2NrIE1ldGhvZHMgIyMKKworSWYgYSBtb2NrIGZ1bmN0
aW9uJ3MgcmV0dXJuIHR5cGUgaXMgYSByZWZlcmVuY2UsIHlvdSBuZWVkIHRvIHVzZQorYFJldHVy
blJlZigpYCBpbnN0ZWFkIG9mIGBSZXR1cm4oKWAgdG8gcmV0dXJuIGEgcmVzdWx0OgorCitgYGAK
K3VzaW5nIDo6dGVzdGluZzo6UmV0dXJuUmVmOworCitjbGFzcyBNb2NrRm9vIDogcHVibGljIEZv
byB7CisgcHVibGljOgorICBNT0NLX01FVEhPRDAoR2V0QmFyLCBCYXImKCkpOworfTsKKy4uLgor
CisgIE1vY2tGb28gZm9vOworICBCYXIgYmFyOworICBFWFBFQ1RfQ0FMTChmb28sIEdldEJhcigp
KQorICAgICAgLldpbGxPbmNlKFJldHVyblJlZihiYXIpKTsKK2BgYAorCisjIyBSZXR1cm5pbmcg
TGl2ZSBWYWx1ZXMgZnJvbSBNb2NrIE1ldGhvZHMgIyMKKworVGhlIGBSZXR1cm4oeClgIGFjdGlv
biBzYXZlcyBhIGNvcHkgb2YgYHhgIHdoZW4gdGhlIGFjdGlvbiBpcworX2NyZWF0ZWRfLCBhbmQg
YWx3YXlzIHJldHVybnMgdGhlIHNhbWUgdmFsdWUgd2hlbmV2ZXIgaXQncworZXhlY3V0ZWQuIFNv
bWV0aW1lcyB5b3UgbWF5IHdhbnQgdG8gaW5zdGVhZCByZXR1cm4gdGhlIF9saXZlXyB2YWx1ZSBv
ZgorYHhgIChpLmUuIGl0cyB2YWx1ZSBhdCB0aGUgdGltZSB3aGVuIHRoZSBhY3Rpb24gaXMgX2V4
ZWN1dGVkXy4pLgorCitJZiB0aGUgbW9jayBmdW5jdGlvbidzIHJldHVybiB0eXBlIGlzIGEgcmVm
ZXJlbmNlLCB5b3UgY2FuIGRvIGl0IHVzaW5nCitgUmV0dXJuUmVmKHgpYCwgYXMgc2hvd24gaW4g
dGhlIHByZXZpb3VzIHJlY2lwZSAoIlJldHVybmluZyBSZWZlcmVuY2VzCitmcm9tIE1vY2sgTWV0
aG9kcyIpLiBIb3dldmVyLCBHb29nbGUgTW9jayBkb2Vzbid0IGxldCB5b3UgdXNlCitgUmV0dXJu
UmVmKClgIGluIGEgbW9jayBmdW5jdGlvbiB3aG9zZSByZXR1cm4gdHlwZSBpcyBub3QgYSByZWZl
cmVuY2UsCithcyBkb2luZyB0aGF0IHVzdWFsbHkgaW5kaWNhdGVzIGEgdXNlciBlcnJvci4gU28s
IHdoYXQgc2hhbGwgeW91IGRvPworCitZb3UgbWF5IGJlIHRlbXB0ZWQgdG8gdHJ5IGBCeVJlZigp
YDoKKworYGBgCit1c2luZyB0ZXN0aW5nOjpCeVJlZjsKK3VzaW5nIHRlc3Rpbmc6OlJldHVybjsK
KworY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28geworIHB1YmxpYzoKKyAgTU9DS19NRVRIT0Qw
KEdldFZhbHVlLCBpbnQoKSk7Cit9OworLi4uCisgIGludCB4ID0gMDsKKyAgTW9ja0ZvbyBmb287
CisgIEVYUEVDVF9DQUxMKGZvbywgR2V0VmFsdWUoKSkKKyAgICAgIC5XaWxsUmVwZWF0ZWRseShS
ZXR1cm4oQnlSZWYoeCkpKTsKKyAgeCA9IDQyOworICBFWFBFQ1RfRVEoNDIsIGZvby5HZXRWYWx1
ZSgpKTsKK2BgYAorCitVbmZvcnR1bmF0ZWx5LCBpdCBkb2Vzbid0IHdvcmsgaGVyZS4gVGhlIGFi
b3ZlIGNvZGUgd2lsbCBmYWlsIHdpdGggZXJyb3I6CisKK2BgYAorVmFsdWUgb2Y6IGZvby5HZXRW
YWx1ZSgpCisgIEFjdHVhbDogMAorRXhwZWN0ZWQ6IDQyCitgYGAKKworVGhlIHJlYXNvbiBpcyB0
aGF0IGBSZXR1cm4odmFsdWUpYCBjb252ZXJ0cyBgdmFsdWVgIHRvIHRoZSBhY3R1YWwKK3JldHVy
biB0eXBlIG9mIHRoZSBtb2NrIGZ1bmN0aW9uIGF0IHRoZSB0aW1lIHdoZW4gdGhlIGFjdGlvbiBp
cworX2NyZWF0ZWRfLCBub3Qgd2hlbiBpdCBpcyBfZXhlY3V0ZWRfLiAoVGhpcyBiZWhhdmlvciB3
YXMgY2hvc2VuIGZvcgordGhlIGFjdGlvbiB0byBiZSBzYWZlIHdoZW4gYHZhbHVlYCBpcyBhIHBy
b3h5IG9iamVjdCB0aGF0IHJlZmVyZW5jZXMKK3NvbWUgdGVtcG9yYXJ5IG9iamVjdHMuKSBBcyBh
IHJlc3VsdCwgYEJ5UmVmKHgpYCBpcyBjb252ZXJ0ZWQgdG8gYW4KK2BpbnRgIHZhbHVlIChpbnN0
ZWFkIG9mIGEgYGNvbnN0IGludCZgKSB3aGVuIHRoZSBleHBlY3RhdGlvbiBpcyBzZXQsCithbmQg
YFJldHVybihCeVJlZih4KSlgIHdpbGwgYWx3YXlzIHJldHVybiAwLgorCitgUmV0dXJuUG9pbnRl
ZShwb2ludGVyKWAgd2FzIHByb3ZpZGVkIHRvIHNvbHZlIHRoaXMgcHJvYmxlbQorc3BlY2lmaWNh
bGx5LiBJdCByZXR1cm5zIHRoZSB2YWx1ZSBwb2ludGVkIHRvIGJ5IGBwb2ludGVyYCBhdCB0aGUg
dGltZQordGhlIGFjdGlvbiBpcyBfZXhlY3V0ZWRfOgorCitgYGAKK3VzaW5nIHRlc3Rpbmc6OlJl
dHVyblBvaW50ZWU7CisuLi4KKyAgaW50IHggPSAwOworICBNb2NrRm9vIGZvbzsKKyAgRVhQRUNU
X0NBTEwoZm9vLCBHZXRWYWx1ZSgpKQorICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVyblBvaW50
ZWUoJngpKTsgIC8vIE5vdGUgdGhlICYgaGVyZS4KKyAgeCA9IDQyOworICBFWFBFQ1RfRVEoNDIs
IGZvby5HZXRWYWx1ZSgpKTsgIC8vIFRoaXMgd2lsbCBzdWNjZWVkIG5vdy4KK2BgYAorCisjIyBD
b21iaW5pbmcgQWN0aW9ucyAjIworCitXYW50IHRvIGRvIG1vcmUgdGhhbiBvbmUgdGhpbmcgd2hl
biBhIGZ1bmN0aW9uIGlzIGNhbGxlZD8gVGhhdCdzCitmaW5lLiBgRG9BbGwoKWAgYWxsb3cgeW91
IHRvIGRvIHNlcXVlbmNlIG9mIGFjdGlvbnMgZXZlcnkgdGltZS4gT25seQordGhlIHJldHVybiB2
YWx1ZSBvZiB0aGUgbGFzdCBhY3Rpb24gaW4gdGhlIHNlcXVlbmNlIHdpbGwgYmUgdXNlZC4KKwor
YGBgCit1c2luZyA6OnRlc3Rpbmc6OkRvQWxsOworCitjbGFzcyBNb2NrRm9vIDogcHVibGljIEZv
byB7CisgcHVibGljOgorICBNT0NLX01FVEhPRDEoQmFyLCBib29sKGludCBuKSk7Cit9OworLi4u
CisKKyAgRVhQRUNUX0NBTEwoZm9vLCBCYXIoXykpCisgICAgICAuV2lsbE9uY2UoRG9BbGwoYWN0
aW9uXzEsCisgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uXzIsCisgICAgICAgICAgICAgICAg
ICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uX24pKTsKK2BgYAorCisjIyBN
b2NraW5nIFNpZGUgRWZmZWN0cyAjIworCitTb21ldGltZXMgYSBtZXRob2QgZXhoaWJpdHMgaXRz
IGVmZmVjdCBub3QgdmlhIHJldHVybmluZyBhIHZhbHVlIGJ1dAordmlhIHNpZGUgZWZmZWN0cy4g
Rm9yIGV4YW1wbGUsIGl0IG1heSBjaGFuZ2Ugc29tZSBnbG9iYWwgc3RhdGUgb3IKK21vZGlmeSBh
biBvdXRwdXQgYXJndW1lbnQuIFRvIG1vY2sgc2lkZSBlZmZlY3RzLCBpbiBnZW5lcmFsIHlvdSBj
YW4KK2RlZmluZSB5b3VyIG93biBhY3Rpb24gYnkgaW1wbGVtZW50aW5nIGA6OnRlc3Rpbmc6OkFj
dGlvbkludGVyZmFjZWAuCisKK0lmIGFsbCB5b3UgbmVlZCB0byBkbyBpcyB0byBjaGFuZ2UgYW4g
b3V0cHV0IGFyZ3VtZW50LCB0aGUgYnVpbHQtaW4KK2BTZXRBcmdQb2ludGVlKClgIGFjdGlvbiBp
cyBjb252ZW5pZW50OgorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6U2V0QXJnUG9pbnRlZTsKKwor
Y2xhc3MgTW9ja011dGF0b3IgOiBwdWJsaWMgTXV0YXRvciB7CisgcHVibGljOgorICBNT0NLX01F
VEhPRDIoTXV0YXRlLCB2b2lkKGJvb2wgbXV0YXRlLCBpbnQqIHZhbHVlKSk7CisgIC4uLgorfTsK
Ky4uLgorCisgIE1vY2tNdXRhdG9yIG11dGF0b3I7CisgIEVYUEVDVF9DQUxMKG11dGF0b3IsIE11
dGF0ZSh0cnVlLCBfKSkKKyAgICAgIC5XaWxsT25jZShTZXRBcmdQb2ludGVlPDE+KDUpKTsKK2Bg
YAorCitJbiB0aGlzIGV4YW1wbGUsIHdoZW4gYG11dGF0b3IuTXV0YXRlKClgIGlzIGNhbGxlZCwg
d2Ugd2lsbCBhc3NpZ24gNQordG8gdGhlIGBpbnRgIHZhcmlhYmxlIHBvaW50ZWQgdG8gYnkgYXJn
dW1lbnQgIzEKKygwLWJhc2VkKS4KKworYFNldEFyZ1BvaW50ZWUoKWAgY29udmVuaWVudGx5IG1h
a2VzIGFuIGludGVybmFsIGNvcHkgb2YgdGhlCit2YWx1ZSB5b3UgcGFzcyB0byBpdCwgcmVtb3Zp
bmcgdGhlIG5lZWQgdG8ga2VlcCB0aGUgdmFsdWUgaW4gc2NvcGUgYW5kCithbGl2ZS4gVGhlIGlt
cGxpY2F0aW9uIGhvd2V2ZXIgaXMgdGhhdCB0aGUgdmFsdWUgbXVzdCBoYXZlIGEgY29weQorY29u
c3RydWN0b3IgYW5kIGFzc2lnbm1lbnQgb3BlcmF0b3IuCisKK0lmIHRoZSBtb2NrIG1ldGhvZCBh
bHNvIG5lZWRzIHRvIHJldHVybiBhIHZhbHVlIGFzIHdlbGwsIHlvdSBjYW4gY2hhaW4KK2BTZXRB
cmdQb2ludGVlKClgIHdpdGggYFJldHVybigpYCB1c2luZyBgRG9BbGwoKWA6CisKK2BgYAordXNp
bmcgOjp0ZXN0aW5nOjpfOwordXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm47Cit1c2luZyA6OnRlc3Rp
bmc6OlNldEFyZ1BvaW50ZWU7CisKK2NsYXNzIE1vY2tNdXRhdG9yIDogcHVibGljIE11dGF0b3Ig
eworIHB1YmxpYzoKKyAgLi4uCisgIE1PQ0tfTUVUSE9EMShNdXRhdGVJbnQsIGJvb2woaW50KiB2
YWx1ZSkpOworfTsKKy4uLgorCisgIE1vY2tNdXRhdG9yIG11dGF0b3I7CisgIEVYUEVDVF9DQUxM
KG11dGF0b3IsIE11dGF0ZUludChfKSkKKyAgICAgIC5XaWxsT25jZShEb0FsbChTZXRBcmdQb2lu
dGVlPDA+KDUpLAorICAgICAgICAgICAgICAgICAgICAgIFJldHVybih0cnVlKSkpOworYGBgCisK
K0lmIHRoZSBvdXRwdXQgYXJndW1lbnQgaXMgYW4gYXJyYXksIHVzZSB0aGUKK2BTZXRBcnJheUFy
Z3VtZW50PE4+KGZpcnN0LCBsYXN0KWAgYWN0aW9uIGluc3RlYWQuIEl0IGNvcGllcyB0aGUKK2Vs
ZW1lbnRzIGluIHNvdXJjZSByYW5nZSBgW2ZpcnN0LCBsYXN0KWAgdG8gdGhlIGFycmF5IHBvaW50
ZWQgdG8gYnkKK3RoZSBgTmAtdGggKDAtYmFzZWQpIGFyZ3VtZW50OgorCitgYGAKK3VzaW5nIDo6
dGVzdGluZzo6Tm90TnVsbDsKK3VzaW5nIDo6dGVzdGluZzo6U2V0QXJyYXlBcmd1bWVudDsKKwor
Y2xhc3MgTW9ja0FycmF5TXV0YXRvciA6IHB1YmxpYyBBcnJheU11dGF0b3IgeworIHB1YmxpYzoK
KyAgTU9DS19NRVRIT0QyKE11dGF0ZSwgdm9pZChpbnQqIHZhbHVlcywgaW50IG51bV92YWx1ZXMp
KTsKKyAgLi4uCit9OworLi4uCisKKyAgTW9ja0FycmF5TXV0YXRvciBtdXRhdG9yOworICBpbnQg
dmFsdWVzWzVdID0geyAxLCAyLCAzLCA0LCA1IH07CisgIEVYUEVDVF9DQUxMKG11dGF0b3IsIE11
dGF0ZShOb3ROdWxsKCksIDUpKQorICAgICAgLldpbGxPbmNlKFNldEFycmF5QXJndW1lbnQ8MD4o
dmFsdWVzLCB2YWx1ZXMgKyA1KSk7CitgYGAKKworVGhpcyBhbHNvIHdvcmtzIHdoZW4gdGhlIGFy
Z3VtZW50IGlzIGFuIG91dHB1dCBpdGVyYXRvcjoKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6Ol87
Cit1c2luZyA6OnRlc3Rpbmc6OlNlQXJyYXlBcmd1bWVudDsKKworY2xhc3MgTW9ja1JvbG9kZXgg
OiBwdWJsaWMgUm9sb2RleCB7CisgcHVibGljOgorICBNT0NLX01FVEhPRDEoR2V0TmFtZXMsIHZv
aWQoc3RkOjpiYWNrX2luc2VydF9pdGVyYXRvcjx2ZWN0b3I8c3RyaW5nPiA+KSk7CisgIC4uLgor
fTsKKy4uLgorCisgIE1vY2tSb2xvZGV4IHJvbG9kZXg7CisgIHZlY3RvcjxzdHJpbmc+IG5hbWVz
OworICBuYW1lcy5wdXNoX2JhY2soIkdlb3JnZSIpOworICBuYW1lcy5wdXNoX2JhY2soIkpvaG4i
KTsKKyAgbmFtZXMucHVzaF9iYWNrKCJUaG9tYXMiKTsKKyAgRVhQRUNUX0NBTEwocm9sb2RleCwg
R2V0TmFtZXMoXykpCisgICAgICAuV2lsbE9uY2UoU2V0QXJyYXlBcmd1bWVudDwwPihuYW1lcy5i
ZWdpbigpLCBuYW1lcy5lbmQoKSkpOworYGBgCisKKyMjIENoYW5naW5nIGEgTW9jayBPYmplY3Qn
cyBCZWhhdmlvciBCYXNlZCBvbiB0aGUgU3RhdGUgIyMKKworSWYgeW91IGV4cGVjdCBhIGNhbGwg
dG8gY2hhbmdlIHRoZSBiZWhhdmlvciBvZiBhIG1vY2sgb2JqZWN0LCB5b3UgY2FuIHVzZSBgOjp0
ZXN0aW5nOjpJblNlcXVlbmNlYCB0byBzcGVjaWZ5IGRpZmZlcmVudCBiZWhhdmlvcnMgYmVmb3Jl
IGFuZCBhZnRlciB0aGUgY2FsbDoKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6OkluU2VxdWVuY2U7
Cit1c2luZyA6OnRlc3Rpbmc6OlJldHVybjsKKworLi4uCisgIHsKKyAgICBJblNlcXVlbmNlIHNl
cTsKKyAgICBFWFBFQ1RfQ0FMTChteV9tb2NrLCBJc0RpcnR5KCkpCisgICAgICAgIC5XaWxsUmVw
ZWF0ZWRseShSZXR1cm4odHJ1ZSkpOworICAgIEVYUEVDVF9DQUxMKG15X21vY2ssIEZsdXNoKCkp
OworICAgIEVYUEVDVF9DQUxMKG15X21vY2ssIElzRGlydHkoKSkKKyAgICAgICAgLldpbGxSZXBl
YXRlZGx5KFJldHVybihmYWxzZSkpOworICB9CisgIG15X21vY2suRmx1c2hJZkRpcnR5KCk7Citg
YGAKKworVGhpcyBtYWtlcyBgbXlfbW9jay5Jc0RpcnR5KClgIHJldHVybiBgdHJ1ZWAgYmVmb3Jl
IGBteV9tb2NrLkZsdXNoKClgIGlzIGNhbGxlZCBhbmQgcmV0dXJuIGBmYWxzZWAgYWZ0ZXJ3YXJk
cy4KKworSWYgdGhlIGJlaGF2aW9yIGNoYW5nZSBpcyBtb3JlIGNvbXBsZXgsIHlvdSBjYW4gc3Rv
cmUgdGhlIGVmZmVjdHMgaW4gYSB2YXJpYWJsZSBhbmQgbWFrZSBhIG1vY2sgbWV0aG9kIGdldCBp
dHMgcmV0dXJuIHZhbHVlIGZyb20gdGhhdCB2YXJpYWJsZToKKworYGBgCit1c2luZyA6OnRlc3Rp
bmc6Ol87Cit1c2luZyA6OnRlc3Rpbmc6OlNhdmVBcmc7Cit1c2luZyA6OnRlc3Rpbmc6OlJldHVy
bjsKKworQUNUSU9OX1AoUmV0dXJuUG9pbnRlZSwgcCkgeyByZXR1cm4gKnA7IH0KKy4uLgorICBp
bnQgcHJldmlvdXNfdmFsdWUgPSAwOworICBFWFBFQ1RfQ0FMTChteV9tb2NrLCBHZXRQcmV2VmFs
dWUoKSkKKyAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm5Qb2ludGVlKCZwcmV2aW91c192YWx1
ZSkpOworICBFWFBFQ1RfQ0FMTChteV9tb2NrLCBVcGRhdGVWYWx1ZShfKSkKKyAgICAgIC5XaWxs
UmVwZWF0ZWRseShTYXZlQXJnPDA+KCZwcmV2aW91c192YWx1ZSkpOworICBteV9tb2NrLkRvU29t
ZXRoaW5nVG9VcGRhdGVWYWx1ZSgpOworYGBgCisKK0hlcmUgYG15X21vY2suR2V0UHJldlZhbHVl
KClgIHdpbGwgYWx3YXlzIHJldHVybiB0aGUgYXJndW1lbnQgb2YgdGhlIGxhc3QgYFVwZGF0ZVZh
bHVlKClgIGNhbGwuCisKKyMjIFNldHRpbmcgdGhlIERlZmF1bHQgVmFsdWUgZm9yIGEgUmV0dXJu
IFR5cGUgIyMKKworSWYgYSBtb2NrIG1ldGhvZCdzIHJldHVybiB0eXBlIGlzIGEgYnVpbHQtaW4g
QysrIHR5cGUgb3IgcG9pbnRlciwgYnkKK2RlZmF1bHQgaXQgd2lsbCByZXR1cm4gMCB3aGVuIGlu
dm9rZWQuIFlvdSBvbmx5IG5lZWQgdG8gc3BlY2lmeSBhbgorYWN0aW9uIGlmIHRoaXMgZGVmYXVs
dCB2YWx1ZSBkb2Vzbid0IHdvcmsgZm9yIHlvdS4KKworU29tZXRpbWVzLCB5b3UgbWF5IHdhbnQg
dG8gY2hhbmdlIHRoaXMgZGVmYXVsdCB2YWx1ZSwgb3IgeW91IG1heSB3YW50Cit0byBzcGVjaWZ5
IGEgZGVmYXVsdCB2YWx1ZSBmb3IgdHlwZXMgR29vZ2xlIE1vY2sgZG9lc24ndCBrbm93CithYm91
dC4gWW91IGNhbiBkbyB0aGlzIHVzaW5nIHRoZSBgOjp0ZXN0aW5nOjpEZWZhdWx0VmFsdWVgIGNs
YXNzCit0ZW1wbGF0ZToKKworYGBgCitjbGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7CisgcHVi
bGljOgorICBNT0NLX01FVEhPRDAoQ2FsY3VsYXRlQmFyLCBCYXIoKSk7Cit9OworLi4uCisKKyAg
QmFyIGRlZmF1bHRfYmFyOworICAvLyBTZXRzIHRoZSBkZWZhdWx0IHJldHVybiB2YWx1ZSBmb3Ig
dHlwZSBCYXIuCisgIERlZmF1bHRWYWx1ZTxCYXI+OjpTZXQoZGVmYXVsdF9iYXIpOworCisgIE1v
Y2tGb28gZm9vOworCisgIC8vIFdlIGRvbid0IG5lZWQgdG8gc3BlY2lmeSBhbiBhY3Rpb24gaGVy
ZSwgYXMgdGhlIGRlZmF1bHQKKyAgLy8gcmV0dXJuIHZhbHVlIHdvcmtzIGZvciB1cy4KKyAgRVhQ
RUNUX0NBTEwoZm9vLCBDYWxjdWxhdGVCYXIoKSk7CisKKyAgZm9vLkNhbGN1bGF0ZUJhcigpOyAg
Ly8gVGhpcyBzaG91bGQgcmV0dXJuIGRlZmF1bHRfYmFyLgorCisgIC8vIFVuc2V0cyB0aGUgZGVm
YXVsdCByZXR1cm4gdmFsdWUuCisgIERlZmF1bHRWYWx1ZTxCYXI+OjpDbGVhcigpOworYGBgCisK
K1BsZWFzZSBub3RlIHRoYXQgY2hhbmdpbmcgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIGEgdHlwZSBj
YW4gbWFrZSB5b3UKK3Rlc3RzIGhhcmQgdG8gdW5kZXJzdGFuZC4gV2UgcmVjb21tZW5kIHlvdSB0
byB1c2UgdGhpcyBmZWF0dXJlCitqdWRpY2lvdXNseS4gRm9yIGV4YW1wbGUsIHlvdSBtYXkgd2Fu
dCB0byBtYWtlIHN1cmUgdGhlIGBTZXQoKWAgYW5kCitgQ2xlYXIoKWAgY2FsbHMgYXJlIHJpZ2h0
IG5leHQgdG8gdGhlIGNvZGUgdGhhdCB1c2VzIHlvdXIgbW9jay4KKworIyMgU2V0dGluZyB0aGUg
RGVmYXVsdCBBY3Rpb25zIGZvciBhIE1vY2sgTWV0aG9kICMjCisKK1lvdSd2ZSBsZWFybmVkIGhv
dyB0byBjaGFuZ2UgdGhlIGRlZmF1bHQgdmFsdWUgb2YgYSBnaXZlbgordHlwZS4gSG93ZXZlciwg
dGhpcyBtYXkgYmUgdG9vIGNvYXJzZSBmb3IgeW91ciBwdXJwb3NlOiBwZXJoYXBzIHlvdQoraGF2
ZSB0d28gbW9jayBtZXRob2RzIHdpdGggdGhlIHNhbWUgcmV0dXJuIHR5cGUgYW5kIHlvdSB3YW50
IHRoZW0gdG8KK2hhdmUgZGlmZmVyZW50IGJlaGF2aW9ycy4gVGhlIGBPTl9DQUxMKClgIG1hY3Jv
IGFsbG93cyB5b3UgdG8KK2N1c3RvbWl6ZSB5b3VyIG1vY2sncyBiZWhhdmlvciBhdCB0aGUgbWV0
aG9kIGxldmVsOgorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6XzsKK3VzaW5nIDo6dGVzdGluZzo6
QW55TnVtYmVyOwordXNpbmcgOjp0ZXN0aW5nOjpHdDsKK3VzaW5nIDo6dGVzdGluZzo6UmV0dXJu
OworLi4uCisgIE9OX0NBTEwoZm9vLCBTaWduKF8pKQorICAgICAgLldpbGxCeURlZmF1bHQoUmV0
dXJuKC0xKSk7CisgIE9OX0NBTEwoZm9vLCBTaWduKDApKQorICAgICAgLldpbGxCeURlZmF1bHQo
UmV0dXJuKDApKTsKKyAgT05fQ0FMTChmb28sIFNpZ24oR3QoMCkpKQorICAgICAgLldpbGxCeURl
ZmF1bHQoUmV0dXJuKDEpKTsKKworICBFWFBFQ1RfQ0FMTChmb28sIFNpZ24oXykpCisgICAgICAu
VGltZXMoQW55TnVtYmVyKCkpOworCisgIGZvby5TaWduKDUpOyAgIC8vIFRoaXMgc2hvdWxkIHJl
dHVybiAxLgorICBmb28uU2lnbigtOSk7ICAvLyBUaGlzIHNob3VsZCByZXR1cm4gLTEuCisgIGZv
by5TaWduKDApOyAgIC8vIFRoaXMgc2hvdWxkIHJldHVybiAwLgorYGBgCisKK0FzIHlvdSBtYXkg
aGF2ZSBndWVzc2VkLCB3aGVuIHRoZXJlIGFyZSBtb3JlIHRoYW4gb25lIGBPTl9DQUxMKClgCitz
dGF0ZW1lbnRzLCB0aGUgbmV3cyBvcmRlciB0YWtlIHByZWNlZGVuY2Ugb3ZlciB0aGUgb2xkZXIg
b25lcy4gSW4KK290aGVyIHdvcmRzLCB0aGUgKipsYXN0Kiogb25lIHRoYXQgbWF0Y2hlcyB0aGUg
ZnVuY3Rpb24gYXJndW1lbnRzIHdpbGwKK2JlIHVzZWQuIFRoaXMgbWF0Y2hpbmcgb3JkZXIgYWxs
b3dzIHlvdSB0byBzZXQgdXAgdGhlIGNvbW1vbiBiZWhhdmlvcgoraW4gYSBtb2NrIG9iamVjdCdz
IGNvbnN0cnVjdG9yIG9yIHRoZSB0ZXN0IGZpeHR1cmUncyBzZXQtdXAgcGhhc2UgYW5kCitzcGVj
aWFsaXplIHRoZSBtb2NrJ3MgYmVoYXZpb3IgbGF0ZXIuCisKKyMjIFVzaW5nIEZ1bmN0aW9ucy9N
ZXRob2RzL0Z1bmN0b3JzIGFzIEFjdGlvbnMgIyMKKworSWYgdGhlIGJ1aWx0LWluIGFjdGlvbnMg
ZG9uJ3Qgc3VpdCB5b3UsIHlvdSBjYW4gZWFzaWx5IHVzZSBhbiBleGlzdGluZworZnVuY3Rpb24s
IG1ldGhvZCwgb3IgZnVuY3RvciBhcyBhbiBhY3Rpb246CisKK2BgYAordXNpbmcgOjp0ZXN0aW5n
OjpfOwordXNpbmcgOjp0ZXN0aW5nOjpJbnZva2U7CisKK2NsYXNzIE1vY2tGb28gOiBwdWJsaWMg
Rm9vIHsKKyBwdWJsaWM6CisgIE1PQ0tfTUVUSE9EMihTdW0sIGludChpbnQgeCwgaW50IHkpKTsK
KyAgTU9DS19NRVRIT0QxKENvbXBsZXhKb2IsIGJvb2woaW50IHgpKTsKK307CisKK2ludCBDYWxj
dWxhdGVTdW0oaW50IHgsIGludCB5KSB7IHJldHVybiB4ICsgeTsgfQorCitjbGFzcyBIZWxwZXIg
eworIHB1YmxpYzoKKyAgYm9vbCBDb21wbGV4Sm9iKGludCB4KTsKK307CisuLi4KKworICBNb2Nr
Rm9vIGZvbzsKKyAgSGVscGVyIGhlbHBlcjsKKyAgRVhQRUNUX0NBTEwoZm9vLCBTdW0oXywgXykp
CisgICAgICAuV2lsbE9uY2UoSW52b2tlKENhbGN1bGF0ZVN1bSkpOworICBFWFBFQ1RfQ0FMTChm
b28sIENvbXBsZXhKb2IoXykpCisgICAgICAuV2lsbE9uY2UoSW52b2tlKCZoZWxwZXIsICZIZWxw
ZXI6OkNvbXBsZXhKb2IpKTsKKworICBmb28uU3VtKDUsIDYpOyAgICAgICAvLyBJbnZva2VzIENh
bGN1bGF0ZVN1bSg1LCA2KS4KKyAgZm9vLkNvbXBsZXhKb2IoMTApOyAgLy8gSW52b2tlcyBoZWxw
ZXIuQ29tcGxleEpvYigxMCk7CitgYGAKKworVGhlIG9ubHkgcmVxdWlyZW1lbnQgaXMgdGhhdCB0
aGUgdHlwZSBvZiB0aGUgZnVuY3Rpb24sIGV0YyBtdXN0IGJlCitfY29tcGF0aWJsZV8gd2l0aCB0
aGUgc2lnbmF0dXJlIG9mIHRoZSBtb2NrIGZ1bmN0aW9uLCBtZWFuaW5nIHRoYXQgdGhlCitsYXR0
ZXIncyBhcmd1bWVudHMgY2FuIGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRvIHRoZSBjb3JyZXNw
b25kaW5nCithcmd1bWVudHMgb2YgdGhlIGZvcm1lciwgYW5kIHRoZSBmb3JtZXIncyByZXR1cm4g
dHlwZSBjYW4gYmUKK2ltcGxpY2l0bHkgY29udmVydGVkIHRvIHRoYXQgb2YgdGhlIGxhdHRlci4g
U28sIHlvdSBjYW4gaW52b2tlCitzb21ldGhpbmcgd2hvc2UgdHlwZSBpcyBfbm90XyBleGFjdGx5
IHRoZSBzYW1lIGFzIHRoZSBtb2NrIGZ1bmN0aW9uLAorYXMgbG9uZyBhcyBpdCdzIHNhZmUgdG8g
ZG8gc28gLSBuaWNlLCBodWg/CisKKyMjIEludm9raW5nIGEgRnVuY3Rpb24vTWV0aG9kL0Z1bmN0
b3IgV2l0aG91dCBBcmd1bWVudHMgIyMKKworYEludm9rZSgpYCBpcyB2ZXJ5IHVzZWZ1bCBmb3Ig
ZG9pbmcgYWN0aW9ucyB0aGF0IGFyZSBtb3JlIGNvbXBsZXguIEl0CitwYXNzZXMgdGhlIG1vY2sg
ZnVuY3Rpb24ncyBhcmd1bWVudHMgdG8gdGhlIGZ1bmN0aW9uIG9yIGZ1bmN0b3IgYmVpbmcKK2lu
dm9rZWQgc3VjaCB0aGF0IHRoZSBjYWxsZWUgaGFzIHRoZSBmdWxsIGNvbnRleHQgb2YgdGhlIGNh
bGwgdG8gd29yaword2l0aC4gSWYgdGhlIGludm9rZWQgZnVuY3Rpb24gaXMgbm90IGludGVyZXN0
ZWQgaW4gc29tZSBvciBhbGwgb2YgdGhlCithcmd1bWVudHMsIGl0IGNhbiBzaW1wbHkgaWdub3Jl
IHRoZW0uCisKK1lldCwgYSBjb21tb24gcGF0dGVybiBpcyB0aGF0IGEgdGVzdCBhdXRob3Igd2Fu
dHMgdG8gaW52b2tlIGEgZnVuY3Rpb24KK3dpdGhvdXQgdGhlIGFyZ3VtZW50cyBvZiB0aGUgbW9j
ayBmdW5jdGlvbi4gYEludm9rZSgpYCBhbGxvd3MgaGVyIHRvCitkbyB0aGF0IHVzaW5nIGEgd3Jh
cHBlciBmdW5jdGlvbiB0aGF0IHRocm93cyBhd2F5IHRoZSBhcmd1bWVudHMgYmVmb3JlCitpbnZv
a2luZyBhbiB1bmRlcmxpbmluZyBudWxsYXJ5IGZ1bmN0aW9uLiBOZWVkbGVzcyB0byBzYXksIHRo
aXMgY2FuIGJlCit0ZWRpb3VzIGFuZCBvYnNjdXJlcyB0aGUgaW50ZW50IG9mIHRoZSB0ZXN0Lgor
CitgSW52b2tlV2l0aG91dEFyZ3MoKWAgc29sdmVzIHRoaXMgcHJvYmxlbS4gSXQncyBsaWtlIGBJ
bnZva2UoKWAgZXhjZXB0Cit0aGF0IGl0IGRvZXNuJ3QgcGFzcyB0aGUgbW9jayBmdW5jdGlvbidz
IGFyZ3VtZW50cyB0byB0aGUKK2NhbGxlZS4gSGVyZSdzIGFuIGV4YW1wbGU6CisKK2BgYAordXNp
bmcgOjp0ZXN0aW5nOjpfOwordXNpbmcgOjp0ZXN0aW5nOjpJbnZva2VXaXRob3V0QXJnczsKKwor
Y2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28geworIHB1YmxpYzoKKyAgTU9DS19NRVRIT0QxKENv
bXBsZXhKb2IsIGJvb2woaW50IG4pKTsKK307CisKK2Jvb2wgSm9iMSgpIHsgLi4uIH0KKy4uLgor
CisgIE1vY2tGb28gZm9vOworICBFWFBFQ1RfQ0FMTChmb28sIENvbXBsZXhKb2IoXykpCisgICAg
ICAuV2lsbE9uY2UoSW52b2tlV2l0aG91dEFyZ3MoSm9iMSkpOworCisgIGZvby5Db21wbGV4Sm9i
KDEwKTsgIC8vIEludm9rZXMgSm9iMSgpLgorYGBgCisKKyMjIEludm9raW5nIGFuIEFyZ3VtZW50
IG9mIHRoZSBNb2NrIEZ1bmN0aW9uICMjCisKK1NvbWV0aW1lcyBhIG1vY2sgZnVuY3Rpb24gd2ls
bCByZWNlaXZlIGEgZnVuY3Rpb24gcG9pbnRlciBvciBhIGZ1bmN0b3IKKyhpbiBvdGhlciB3b3Jk
cywgYSAiY2FsbGFibGUiKSBhcyBhbiBhcmd1bWVudCwgZS5nLgorCitgYGAKK2NsYXNzIE1vY2tG
b28gOiBwdWJsaWMgRm9vIHsKKyBwdWJsaWM6CisgIE1PQ0tfTUVUSE9EMihEb1RoaXMsIGJvb2wo
aW50IG4sIGJvb2wgKCpmcCkoaW50KSkpOworfTsKK2BgYAorCithbmQgeW91IG1heSB3YW50IHRv
IGludm9rZSB0aGlzIGNhbGxhYmxlIGFyZ3VtZW50OgorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6
XzsKKy4uLgorICBNb2NrRm9vIGZvbzsKKyAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoaXMoXywgXykp
CisgICAgICAuV2lsbE9uY2UoLi4uKTsKKyAgLy8gV2lsbCBleGVjdXRlICgqZnApKDUpLCB3aGVy
ZSBmcCBpcyB0aGUKKyAgLy8gc2Vjb25kIGFyZ3VtZW50IERvVGhpcygpIHJlY2VpdmVzLgorYGBg
CisKK0FyZ2hoLCB5b3UgbmVlZCB0byByZWZlciB0byBhIG1vY2sgZnVuY3Rpb24gYXJndW1lbnQg
YnV0IEMrKyBoYXMgbm8KK2xhbWJkYSAoeWV0KSwgc28geW91IGhhdmUgdG8gZGVmaW5lIHlvdXIg
b3duIGFjdGlvbi4gOi0oIE9yIGRvIHlvdQorcmVhbGx5PworCitXZWxsLCBHb29nbGUgTW9jayBo
YXMgYW4gYWN0aW9uIHRvIHNvbHZlIF9leGFjdGx5XyB0aGlzIHByb2JsZW06CisKK2BgYAorICBJ
bnZva2VBcmd1bWVudDxOPihhcmdfMSwgYXJnXzIsIC4uLiwgYXJnX20pCitgYGAKKword2lsbCBp
bnZva2UgdGhlIGBOYC10aCAoMC1iYXNlZCkgYXJndW1lbnQgdGhlIG1vY2sgZnVuY3Rpb24gcmVj
ZWl2ZXMsCit3aXRoIGBhcmdfMWAsIGBhcmdfMmAsIC4uLiwgYW5kIGBhcmdfbWAuIE5vIG1hdHRl
ciBpZiB0aGUgYXJndW1lbnQgaXMKK2EgZnVuY3Rpb24gcG9pbnRlciBvciBhIGZ1bmN0b3IsIEdv
b2dsZSBNb2NrIGhhbmRsZXMgdGhlbSBib3RoLgorCitXaXRoIHRoYXQsIHlvdSBjb3VsZCB3cml0
ZToKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6Ol87Cit1c2luZyA6OnRlc3Rpbmc6Okludm9rZUFy
Z3VtZW50OworLi4uCisgIEVYUEVDVF9DQUxMKGZvbywgRG9UaGlzKF8sIF8pKQorICAgICAgLldp
bGxPbmNlKEludm9rZUFyZ3VtZW50PDE+KDUpKTsKKyAgLy8gV2lsbCBleGVjdXRlICgqZnApKDUp
LCB3aGVyZSBmcCBpcyB0aGUKKyAgLy8gc2Vjb25kIGFyZ3VtZW50IERvVGhpcygpIHJlY2VpdmVz
LgorYGBgCisKK1doYXQgaWYgdGhlIGNhbGxhYmxlIHRha2VzIGFuIGFyZ3VtZW50IGJ5IHJlZmVy
ZW5jZT8gTm8gcHJvYmxlbSAtIGp1c3QKK3dyYXAgaXQgaW5zaWRlIGBCeVJlZigpYDoKKworYGBg
CisuLi4KKyAgTU9DS19NRVRIT0QxKEJhciwgYm9vbChib29sICgqZnApKGludCwgY29uc3QgSGVs
cGVyJikpKTsKKy4uLgordXNpbmcgOjp0ZXN0aW5nOjpfOwordXNpbmcgOjp0ZXN0aW5nOjpCeVJl
ZjsKK3VzaW5nIDo6dGVzdGluZzo6SW52b2tlQXJndW1lbnQ7CisuLi4KKworICBNb2NrRm9vIGZv
bzsKKyAgSGVscGVyIGhlbHBlcjsKKyAgLi4uCisgIEVYUEVDVF9DQUxMKGZvbywgQmFyKF8pKQor
ICAgICAgLldpbGxPbmNlKEludm9rZUFyZ3VtZW50PDA+KDUsIEJ5UmVmKGhlbHBlcikpKTsKKyAg
Ly8gQnlSZWYoaGVscGVyKSBndWFyYW50ZWVzIHRoYXQgYSByZWZlcmVuY2UgdG8gaGVscGVyLCBu
b3QgYSBjb3B5IG9mIGl0LAorICAvLyB3aWxsIGJlIHBhc3NlZCB0byB0aGUgY2FsbGFibGUuCitg
YGAKKworV2hhdCBpZiB0aGUgY2FsbGFibGUgdGFrZXMgYW4gYXJndW1lbnQgYnkgcmVmZXJlbmNl
IGFuZCB3ZSBkbyAqKm5vdCoqCit3cmFwIHRoZSBhcmd1bWVudCBpbiBgQnlSZWYoKWA/IFRoZW4g
YEludm9rZUFyZ3VtZW50KClgIHdpbGwgX21ha2UgYQorY29weV8gb2YgdGhlIGFyZ3VtZW50LCBh
bmQgcGFzcyBhIF9yZWZlcmVuY2UgdG8gdGhlIGNvcHlfLCBpbnN0ZWFkIG9mCithIHJlZmVyZW5j
ZSB0byB0aGUgb3JpZ2luYWwgdmFsdWUsIHRvIHRoZSBjYWxsYWJsZS4gVGhpcyBpcyBlc3BlY2lh
bGx5CitoYW5keSB3aGVuIHRoZSBhcmd1bWVudCBpcyBhIHRlbXBvcmFyeSB2YWx1ZToKKworYGBg
CisuLi4KKyAgTU9DS19NRVRIT0QxKERvVGhhdCwgYm9vbChib29sICgqZikoY29uc3QgZG91Ymxl
JiB4LCBjb25zdCBzdHJpbmcmIHMpKSk7CisuLi4KK3VzaW5nIDo6dGVzdGluZzo6XzsKK3VzaW5n
IDo6dGVzdGluZzo6SW52b2tlQXJndW1lbnQ7CisuLi4KKworICBNb2NrRm9vIGZvbzsKKyAgLi4u
CisgIEVYUEVDVF9DQUxMKGZvbywgRG9UaGF0KF8pKQorICAgICAgLldpbGxPbmNlKEludm9rZUFy
Z3VtZW50PDA+KDUuMCwgc3RyaW5nKCJIaSIpKSk7CisgIC8vIFdpbGwgZXhlY3V0ZSAoKmYpKDUu
MCwgc3RyaW5nKCJIaSIpKSwgd2hlcmUgZiBpcyB0aGUgZnVuY3Rpb24gcG9pbnRlcgorICAvLyBE
b1RoYXQoKSByZWNlaXZlcy4gIE5vdGUgdGhhdCB0aGUgdmFsdWVzIDUuMCBhbmQgc3RyaW5nKCJI
aSIpIGFyZQorICAvLyB0ZW1wb3JhcnkgYW5kIGRlYWQgb25jZSB0aGUgRVhQRUNUX0NBTEwoKSBz
dGF0ZW1lbnQgZmluaXNoZXMuICBZZXQKKyAgLy8gaXQncyBmaW5lIHRvIHBlcmZvcm0gdGhpcyBh
Y3Rpb24gbGF0ZXIsIHNpbmNlIGEgY29weSBvZiB0aGUgdmFsdWVzCisgIC8vIGFyZSBrZXB0IGlu
c2lkZSB0aGUgSW52b2tlQXJndW1lbnQgYWN0aW9uLgorYGBgCisKKyMjIElnbm9yaW5nIGFuIEFj
dGlvbidzIFJlc3VsdCAjIworCitTb21ldGltZXMgeW91IGhhdmUgYW4gYWN0aW9uIHRoYXQgcmV0
dXJucyBfc29tZXRoaW5nXywgYnV0IHlvdSBuZWVkIGFuCithY3Rpb24gdGhhdCByZXR1cm5zIGB2
b2lkYCAocGVyaGFwcyB5b3Ugd2FudCB0byB1c2UgaXQgaW4gYSBtb2NrCitmdW5jdGlvbiB0aGF0
IHJldHVybnMgYHZvaWRgLCBvciBwZXJoYXBzIGl0IG5lZWRzIHRvIGJlIHVzZWQgaW4KK2BEb0Fs
bCgpYCBhbmQgaXQncyBub3QgdGhlIGxhc3QgaW4gdGhlIGxpc3QpLiBgSWdub3JlUmVzdWx0KClg
IGxldHMKK3lvdSBkbyB0aGF0LiBGb3IgZXhhbXBsZToKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6
Ol87Cit1c2luZyA6OnRlc3Rpbmc6Okludm9rZTsKK3VzaW5nIDo6dGVzdGluZzo6UmV0dXJuOwor
CitpbnQgUHJvY2Vzcyhjb25zdCBNeURhdGEmIGRhdGEpOworc3RyaW5nIERvU29tZXRoaW5nKCk7
CisKK2NsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKKyBwdWJsaWM6CisgIE1PQ0tfTUVUSE9E
MShBYmMsIHZvaWQoY29uc3QgTXlEYXRhJiBkYXRhKSk7CisgIE1PQ0tfTUVUSE9EMChYeXosIGJv
b2woKSk7Cit9OworLi4uCisKKyAgTW9ja0ZvbyBmb287CisgIEVYUEVDVF9DQUxMKGZvbywgQWJj
KF8pKQorICAvLyAuV2lsbE9uY2UoSW52b2tlKFByb2Nlc3MpKTsKKyAgLy8gVGhlIGFib3ZlIGxp
bmUgd29uJ3QgY29tcGlsZSBhcyBQcm9jZXNzKCkgcmV0dXJucyBpbnQgYnV0IEFiYygpIG5lZWRz
CisgIC8vIHRvIHJldHVybiB2b2lkLgorICAgICAgLldpbGxPbmNlKElnbm9yZVJlc3VsdChJbnZv
a2UoUHJvY2VzcykpKTsKKworICBFWFBFQ1RfQ0FMTChmb28sIFh5eigpKQorICAgICAgLldpbGxP
bmNlKERvQWxsKElnbm9yZVJlc3VsdChJbnZva2UoRG9Tb21ldGhpbmcpKSwKKyAgICAgIC8vIEln
bm9yZXMgdGhlIHN0cmluZyBEb1NvbWV0aGluZygpIHJldHVybnMuCisgICAgICAgICAgICAgICAg
ICAgICAgUmV0dXJuKHRydWUpKSk7CitgYGAKKworTm90ZSB0aGF0IHlvdSAqKmNhbm5vdCoqIHVz
ZSBgSWdub3JlUmVzdWx0KClgIG9uIGFuIGFjdGlvbiB0aGF0IGFscmVhZHkKK3JldHVybnMgYHZv
aWRgLiBEb2luZyBzbyB3aWxsIGxlYWQgdG8gdWdseSBjb21waWxlciBlcnJvcnMuCisKKyMjIFNl
bGVjdGluZyBhbiBBY3Rpb24ncyBBcmd1bWVudHMgIyMKKworU2F5IHlvdSBoYXZlIGEgbW9jayBm
dW5jdGlvbiBgRm9vKClgIHRoYXQgdGFrZXMgc2V2ZW4gYXJndW1lbnRzLCBhbmQKK3lvdSBoYXZl
IGEgY3VzdG9tIGFjdGlvbiB0aGF0IHlvdSB3YW50IHRvIGludm9rZSB3aGVuIGBGb28oKWAgaXMK
K2NhbGxlZC4gVHJvdWJsZSBpcywgdGhlIGN1c3RvbSBhY3Rpb24gb25seSB3YW50cyB0aHJlZSBh
cmd1bWVudHM6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpfOwordXNpbmcgOjp0ZXN0aW5nOjpJ
bnZva2U7CisuLi4KKyAgTU9DS19NRVRIT0Q3KEZvbywgYm9vbChib29sIHZpc2libGUsIGNvbnN0
IHN0cmluZyYgbmFtZSwgaW50IHgsIGludCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IG1hcDxwYWlyPGludCwgaW50PiwgZG91YmxlPiYgd2VpZ2h0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgIGRvdWJsZSBtaW5fd2VpZ2h0LCBkb3VibGUgbWF4X3dpZ2h0KSk7CisuLi4KKwor
Ym9vbCBJc1Zpc2libGVJblF1YWRyYW50MShib29sIHZpc2libGUsIGludCB4LCBpbnQgeSkgewor
ICByZXR1cm4gdmlzaWJsZSAmJiB4ID49IDAgJiYgeSA+PSAwOworfQorLi4uCisKKyAgRVhQRUNU
X0NBTEwobW9jaywgRm9vKF8sIF8sIF8sIF8sIF8sIF8sIF8pKQorICAgICAgLldpbGxPbmNlKElu
dm9rZShJc1Zpc2libGVJblF1YWRyYW50MSkpOyAgLy8gVWgsIHdvbid0IGNvbXBpbGUuIDotKAor
YGBgCisKK1RvIHBsZWFzZSB0aGUgY29tcGlsZXIgR29kLCB5b3UgY2FuIHRvIGRlZmluZSBhbiAi
YWRhcHRvciIgdGhhdCBoYXMKK3RoZSBzYW1lIHNpZ25hdHVyZSBhcyBgRm9vKClgIGFuZCBjYWxs
cyB0aGUgY3VzdG9tIGFjdGlvbiB3aXRoIHRoZQorcmlnaHQgYXJndW1lbnRzOgorCitgYGAKK3Vz
aW5nIDo6dGVzdGluZzo6XzsKK3VzaW5nIDo6dGVzdGluZzo6SW52b2tlOworCitib29sIE15SXNW
aXNpYmxlSW5RdWFkcmFudDEoYm9vbCB2aXNpYmxlLCBjb25zdCBzdHJpbmcmIG5hbWUsIGludCB4
LCBpbnQgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXA8cGFpcjxpbnQs
IGludD4sIGRvdWJsZT4mIHdlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3Vi
bGUgbWluX3dlaWdodCwgZG91YmxlIG1heF93aWdodCkgeworICByZXR1cm4gSXNWaXNpYmxlSW5R
dWFkcmFudDEodmlzaWJsZSwgeCwgeSk7Cit9CisuLi4KKworICBFWFBFQ1RfQ0FMTChtb2NrLCBG
b28oXywgXywgXywgXywgXywgXywgXykpCisgICAgICAuV2lsbE9uY2UoSW52b2tlKE15SXNWaXNp
YmxlSW5RdWFkcmFudDEpKTsgIC8vIE5vdyBpdCB3b3Jrcy4KK2BgYAorCitCdXQgaXNuJ3QgdGhp
cyBhd2t3YXJkPworCitHb29nbGUgTW9jayBwcm92aWRlcyBhIGdlbmVyaWMgX2FjdGlvbiBhZGFw
dG9yXywgc28geW91IGNhbiBzcGVuZCB5b3VyCit0aW1lIG1pbmRpbmcgbW9yZSBpbXBvcnRhbnQg
YnVzaW5lc3MgdGhhbiB3cml0aW5nIHlvdXIgb3duCithZGFwdG9ycy4gSGVyZSdzIHRoZSBzeW50
YXg6CisKK2BgYAorICBXaXRoQXJnczxOMSwgTjIsIC4uLiwgTms+KGFjdGlvbikKK2BgYAorCitj
cmVhdGVzIGFuIGFjdGlvbiB0aGF0IHBhc3NlcyB0aGUgYXJndW1lbnRzIG9mIHRoZSBtb2NrIGZ1
bmN0aW9uIGF0Cit0aGUgZ2l2ZW4gaW5kaWNlcyAoMC1iYXNlZCkgdG8gdGhlIGlubmVyIGBhY3Rp
b25gIGFuZCBwZXJmb3JtcworaXQuIFVzaW5nIGBXaXRoQXJnc2AsIG91ciBvcmlnaW5hbCBleGFt
cGxlIGNhbiBiZSB3cml0dGVuIGFzOgorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6XzsKK3VzaW5n
IDo6dGVzdGluZzo6SW52b2tlOwordXNpbmcgOjp0ZXN0aW5nOjpXaXRoQXJnczsKKy4uLgorICBF
WFBFQ1RfQ0FMTChtb2NrLCBGb28oXywgXywgXywgXywgXywgXywgXykpCisgICAgICAuV2lsbE9u
Y2UoV2l0aEFyZ3M8MCwgMiwgMz4oSW52b2tlKElzVmlzaWJsZUluUXVhZHJhbnQxKSkpOworICAg
ICAgLy8gTm8gbmVlZCB0byBkZWZpbmUgeW91ciBvd24gYWRhcHRvci4KK2BgYAorCitGb3IgYmV0
dGVyIHJlYWRhYmlsaXR5LCBHb29nbGUgTW9jayBhbHNvIGdpdmVzIHlvdToKKworICAqIGBXaXRo
b3V0QXJncyhhY3Rpb24pYCB3aGVuIHRoZSBpbm5lciBgYWN0aW9uYCB0YWtlcyBfbm9fIGFyZ3Vt
ZW50LCBhbmQKKyAgKiBgV2l0aEFyZzxOPihhY3Rpb24pYCAobm8gYHNgIGFmdGVyIGBBcmdgKSB3
aGVuIHRoZSBpbm5lciBgYWN0aW9uYCB0YWtlcyBfb25lXyBhcmd1bWVudC4KKworQXMgeW91IG1h
eSBoYXZlIHJlYWxpemVkLCBgSW52b2tlV2l0aG91dEFyZ3MoLi4uKWAgaXMganVzdCBzeW50YWN0
aWMKK3N1Z2FyIGZvciBgV2l0aG91dEFyZ3MoSW5vdmtlKC4uLikpYC4KKworSGVyZSBhcmUgbW9y
ZSB0aXBzOgorCisgICogVGhlIGlubmVyIGFjdGlvbiB1c2VkIGluIGBXaXRoQXJnc2AgYW5kIGZy
aWVuZHMgZG9lcyBub3QgaGF2ZSB0byBiZSBgSW52b2tlKClgIC0tIGl0IGNhbiBiZSBhbnl0aGlu
Zy4KKyAgKiBZb3UgY2FuIHJlcGVhdCBhbiBhcmd1bWVudCBpbiB0aGUgYXJndW1lbnQgbGlzdCBp
ZiBuZWNlc3NhcnksIGUuZy4gYFdpdGhBcmdzPDIsIDMsIDMsIDU+KC4uLilgLgorICAqIFlvdSBj
YW4gY2hhbmdlIHRoZSBvcmRlciBvZiB0aGUgYXJndW1lbnRzLCBlLmcuIGBXaXRoQXJnczwzLCAy
LCAxPiguLi4pYC4KKyAgKiBUaGUgdHlwZXMgb2YgdGhlIHNlbGVjdGVkIGFyZ3VtZW50cyBkbyBf
bm90XyBoYXZlIHRvIG1hdGNoIHRoZSBzaWduYXR1cmUgb2YgdGhlIGlubmVyIGFjdGlvbiBleGFj
dGx5LiBJdCB3b3JrcyBhcyBsb25nIGFzIHRoZXkgY2FuIGJlIGltcGxpY2l0bHkgY29udmVydGVk
IHRvIHRoZSBjb3JyZXNwb25kaW5nIGFyZ3VtZW50cyBvZiB0aGUgaW5uZXIgYWN0aW9uLiBGb3Ig
ZXhhbXBsZSwgaWYgdGhlIDQtdGggYXJndW1lbnQgb2YgdGhlIG1vY2sgZnVuY3Rpb24gaXMgYW4g
YGludGAgYW5kIGBteV9hY3Rpb25gIHRha2VzIGEgYGRvdWJsZWAsIGBXaXRoQXJnPDQ+KG15X2Fj
dGlvbilgIHdpbGwgd29yay4KKworIyMgSWdub3JpbmcgQXJndW1lbnRzIGluIEFjdGlvbiBGdW5j
dGlvbnMgIyMKKworVGhlIHNlbGVjdGluZy1hbi1hY3Rpb24ncy1hcmd1bWVudHMgcmVjaXBlIHNo
b3dlZCB1cyBvbmUgd2F5IHRvIG1ha2UgYQorbW9jayBmdW5jdGlvbiBhbmQgYW4gYWN0aW9uIHdp
dGggaW5jb21wYXRpYmxlIGFyZ3VtZW50IGxpc3RzIGZpdAordG9nZXRoZXIuIFRoZSBkb3duc2lk
ZSBpcyB0aGF0IHdyYXBwaW5nIHRoZSBhY3Rpb24gaW4KK2BXaXRoQXJnczwuLi4+KClgIGNhbiBn
ZXQgdGVkaW91cyBmb3IgcGVvcGxlIHdyaXRpbmcgdGhlIHRlc3RzLgorCitJZiB5b3UgYXJlIGRl
ZmluaW5nIGEgZnVuY3Rpb24sIG1ldGhvZCwgb3IgZnVuY3RvciB0byBiZSB1c2VkIHdpdGgKK2BJ
bnZva2UqKClgLCBhbmQgeW91IGFyZSBub3QgaW50ZXJlc3RlZCBpbiBzb21lIG9mIGl0cyBhcmd1
bWVudHMsIGFuCithbHRlcm5hdGl2ZSB0byBgV2l0aEFyZ3NgIGlzIHRvIGRlY2xhcmUgdGhlIHVu
aW50ZXJlc3RpbmcgYXJndW1lbnRzIGFzCitgVW51c2VkYC4gVGhpcyBtYWtlcyB0aGUgZGVmaW5p
dGlvbiBsZXNzIGNsdXR0ZXJlZCBhbmQgbGVzcyBmcmFnaWxlIGluCitjYXNlIHRoZSB0eXBlcyBv
ZiB0aGUgdW5pbnRlcmVzdGluZyBhcmd1bWVudHMgY2hhbmdlLiBJdCBjb3VsZCBhbHNvCitpbmNy
ZWFzZSB0aGUgY2hhbmNlIHRoZSBhY3Rpb24gZnVuY3Rpb24gY2FuIGJlIHJldXNlZC4gRm9yIGV4
YW1wbGUsCitnaXZlbgorCitgYGAKKyAgTU9DS19NRVRIT0QzKEZvbywgZG91YmxlKGNvbnN0IHN0
cmluZyYgbGFiZWwsIGRvdWJsZSB4LCBkb3VibGUgeSkpOworICBNT0NLX01FVEhPRDMoQmFyLCBk
b3VibGUoaW50IGluZGV4LCBkb3VibGUgeCwgZG91YmxlIHkpKTsKK2BgYAorCitpbnN0ZWFkIG9m
CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpfOwordXNpbmcgOjp0ZXN0aW5nOjpJbnZva2U7CisK
K2RvdWJsZSBEaXN0YW5jZVRvT3JpZ2luV2l0aExhYmVsKGNvbnN0IHN0cmluZyYgbGFiZWwsIGRv
dWJsZSB4LCBkb3VibGUgeSkgeworICByZXR1cm4gc3FydCh4KnggKyB5KnkpOworfQorCitkb3Vi
bGUgRGlzdGFuY2VUb09yaWdpbldpdGhJbmRleChpbnQgaW5kZXgsIGRvdWJsZSB4LCBkb3VibGUg
eSkgeworICByZXR1cm4gc3FydCh4KnggKyB5KnkpOworfQorLi4uCisKKyAgRVhFUENUX0NBTEwo
bW9jaywgRm9vKCJhYmMiLCBfLCBfKSkKKyAgICAgIC5XaWxsT25jZShJbnZva2UoRGlzdGFuY2VU
b09yaWdpbldpdGhMYWJlbCkpOworICBFWEVQQ1RfQ0FMTChtb2NrLCBCYXIoNSwgXywgXykpCisg
ICAgICAuV2lsbE9uY2UoSW52b2tlKERpc3RhbmNlVG9PcmlnaW5XaXRoSW5kZXgpKTsKK2BgYAor
Cit5b3UgY291bGQgd3JpdGUKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6Ol87Cit1c2luZyA6OnRl
c3Rpbmc6Okludm9rZTsKK3VzaW5nIDo6dGVzdGluZzo6VW51c2VkOworCitkb3VibGUgRGlzdGFu
Y2VUb09yaWdpbihVbnVzZWQsIGRvdWJsZSB4LCBkb3VibGUgeSkgeworICByZXR1cm4gc3FydCh4
KnggKyB5KnkpOworfQorLi4uCisKKyAgRVhFUENUX0NBTEwobW9jaywgRm9vKCJhYmMiLCBfLCBf
KSkKKyAgICAgIC5XaWxsT25jZShJbnZva2UoRGlzdGFuY2VUb09yaWdpbikpOworICBFWEVQQ1Rf
Q0FMTChtb2NrLCBCYXIoNSwgXywgXykpCisgICAgICAuV2lsbE9uY2UoSW52b2tlKERpc3RhbmNl
VG9PcmlnaW4pKTsKK2BgYAorCisjIyBTaGFyaW5nIEFjdGlvbnMgIyMKKworSnVzdCBsaWtlIG1h
dGNoZXJzLCBhIEdvb2dsZSBNb2NrIGFjdGlvbiBvYmplY3QgY29uc2lzdHMgb2YgYSBwb2ludGVy
Cit0byBhIHJlZi1jb3VudGVkIGltcGxlbWVudGF0aW9uIG9iamVjdC4gVGhlcmVmb3JlIGNvcHlp
bmcgYWN0aW9ucyBpcworYWxzbyBhbGxvd2VkIGFuZCB2ZXJ5IGVmZmljaWVudC4gV2hlbiB0aGUg
bGFzdCBhY3Rpb24gdGhhdCByZWZlcmVuY2VzCit0aGUgaW1wbGVtZW50YXRpb24gb2JqZWN0IGRp
ZXMsIHRoZSBpbXBsZW1lbnRhdGlvbiBvYmplY3Qgd2lsbCBiZQorZGVsZXRlZC4KKworSWYgeW91
IGhhdmUgc29tZSBjb21wbGV4IGFjdGlvbiB0aGF0IHlvdSB3YW50IHRvIHVzZSBhZ2FpbiBhbmQg
YWdhaW4sCit5b3UgbWF5IG5vdCBoYXZlIHRvIGJ1aWxkIGl0IGZyb20gc2NyYXRjaCBldmVyeXRp
bWUuIElmIHRoZSBhY3Rpb24KK2RvZXNuJ3QgaGF2ZSBhbiBpbnRlcm5hbCBzdGF0ZSAoaS5lLiBp
ZiBpdCBhbHdheXMgZG9lcyB0aGUgc2FtZSB0aGluZworbm8gbWF0dGVyIGhvdyBtYW55IHRpbWVz
IGl0IGhhcyBiZWVuIGNhbGxlZCksIHlvdSBjYW4gYXNzaWduIGl0IHRvIGFuCithY3Rpb24gdmFy
aWFibGUgYW5kIHVzZSB0aGF0IHZhcmlhYmxlIHJlcGVhdGVkbHkuIEZvciBleGFtcGxlOgorCitg
YGAKKyAgQWN0aW9uPGJvb2woaW50Kik+IHNldF9mbGFnID0gRG9BbGwoU2V0QXJnUG9pbnRlZTww
Pig1KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuKHRydWUp
KTsKKyAgLi4uIHVzZSBzZXRfZmxhZyBpbiAuV2lsbE9uY2UoKSBhbmQgLldpbGxSZXBlYXRlZGx5
KCkgLi4uCitgYGAKKworSG93ZXZlciwgaWYgdGhlIGFjdGlvbiBoYXMgaXRzIG93biBzdGF0ZSwg
eW91IG1heSBiZSBzdXJwcmlzZWQgaWYgeW91CitzaGFyZSB0aGUgYWN0aW9uIG9iamVjdC4gU3Vw
cG9zZSB5b3UgaGF2ZSBhbiBhY3Rpb24gZmFjdG9yeQorYEluY3JlbWVudENvdW50ZXIoaW5pdClg
IHdoaWNoIGNyZWF0ZXMgYW4gYWN0aW9uIHRoYXQgaW5jcmVtZW50cyBhbmQKK3JldHVybnMgYSBj
b3VudGVyIHdob3NlIGluaXRpYWwgdmFsdWUgaXMgYGluaXRgLCB1c2luZyB0d28gYWN0aW9ucwor
Y3JlYXRlZCBmcm9tIHRoZSBzYW1lIGV4cHJlc3Npb24gYW5kIHVzaW5nIGEgc2hhcmVkIGFjdGlv
biB3aWxsCitleGloaWJpdCBkaWZmZXJlbnQgYmVoYXZpb3JzLiBFeGFtcGxlOgorCitgYGAKKyAg
RVhQRUNUX0NBTEwoZm9vLCBEb1RoaXMoKSkKKyAgICAgIC5XaWxsUmVwZWF0ZWRseShJbmNyZW1l
bnRDb3VudGVyKDApKTsKKyAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoYXQoKSkKKyAgICAgIC5XaWxs
UmVwZWF0ZWRseShJbmNyZW1lbnRDb3VudGVyKDApKTsKKyAgZm9vLkRvVGhpcygpOyAgLy8gUmV0
dXJucyAxLgorICBmb28uRG9UaGlzKCk7ICAvLyBSZXR1cm5zIDIuCisgIGZvby5Eb1RoYXQoKTsg
IC8vIFJldHVybnMgMSAtIEJsYWgoKSB1c2VzIGEgZGlmZmVyZW50CisgICAgICAgICAgICAgICAg
IC8vIGNvdW50ZXIgdGhhbiBCYXIoKSdzLgorYGBgCisKK3ZlcnN1cworCitgYGAKKyAgQWN0aW9u
PGludCgpPiBpbmNyZW1lbnQgPSBJbmNyZW1lbnRDb3VudGVyKDApOworCisgIEVYUEVDVF9DQUxM
KGZvbywgRG9UaGlzKCkpCisgICAgICAuV2lsbFJlcGVhdGVkbHkoaW5jcmVtZW50KTsKKyAgRVhQ
RUNUX0NBTEwoZm9vLCBEb1RoYXQoKSkKKyAgICAgIC5XaWxsUmVwZWF0ZWRseShpbmNyZW1lbnQp
OworICBmb28uRG9UaGlzKCk7ICAvLyBSZXR1cm5zIDEuCisgIGZvby5Eb1RoaXMoKTsgIC8vIFJl
dHVybnMgMi4KKyAgZm9vLkRvVGhhdCgpOyAgLy8gUmV0dXJucyAzIC0gdGhlIGNvdW50ZXIgaXMg
c2hhcmVkLgorYGBgCisKKyMgTWlzYyBSZWNpcGVzIG9uIFVzaW5nIEdvb2dsZSBNb2NrICMKKwor
IyMgTWFraW5nIHRoZSBDb21waWxhdGlvbiBGYXN0ZXIgIyMKKworQmVsaWV2ZSBpdCBvciBub3Qs
IHRoZSBfdmFzdCBtYWpvcml0eV8gb2YgdGhlIHRpbWUgc3BlbnQgb24gY29tcGlsaW5nCithIG1v
Y2sgY2xhc3MgaXMgaW4gZ2VuZXJhdGluZyBpdHMgY29uc3RydWN0b3IgYW5kIGRlc3RydWN0b3Is
IGFzIHRoZXkKK3BlcmZvcm0gbm9uLXRyaXZpYWwgdGFza3MgKGUuZy4gdmVyaWZpY2F0aW9uIG9m
IHRoZQorZXhwZWN0YXRpb25zKS4gV2hhdCdzIG1vcmUsIG1vY2sgbWV0aG9kcyB3aXRoIGRpZmZl
cmVudCBzaWduYXR1cmVzCitoYXZlIGRpZmZlcmVudCB0eXBlcyBhbmQgdGh1cyB0aGVpciBjb25z
dHJ1Y3RvcnMvZGVzdHJ1Y3RvcnMgbmVlZCB0bworYmUgZ2VuZXJhdGVkIGJ5IHRoZSBjb21waWxl
ciBzZXBhcmF0ZWx5LiBBcyBhIHJlc3VsdCwgaWYgeW91IG1vY2sgbWFueQorZGlmZmVyZW50IHR5
cGVzIG9mIG1ldGhvZHMsIGNvbXBpbGluZyB5b3VyIG1vY2sgY2xhc3MgY2FuIGdldCByZWFsbHkK
K3Nsb3cuCisKK0lmIHlvdSBhcmUgZXhwZXJpZW5jaW5nIHNsb3cgY29tcGlsYXRpb24sIHlvdSBj
YW4gbW92ZSB0aGUgZGVmaW5pdGlvbgorb2YgeW91ciBtb2NrIGNsYXNzJyBjb25zdHJ1Y3RvciBh
bmQgZGVzdHJ1Y3RvciBvdXQgb2YgdGhlIGNsYXNzIGJvZHkKK2FuZCBpbnRvIGEgYC5jcHBgIGZp
bGUuIFRoaXMgd2F5LCBldmVuIGlmIHlvdSBgI2luY2x1ZGVgIHlvdXIgbW9jaworY2xhc3MgaW4g
TiBmaWxlcywgdGhlIGNvbXBpbGVyIG9ubHkgbmVlZHMgdG8gZ2VuZXJhdGUgaXRzIGNvbnN0cnVj
dG9yCithbmQgZGVzdHJ1Y3RvciBvbmNlLCByZXN1bHRpbmcgaW4gYSBtdWNoIGZhc3RlciBjb21w
aWxhdGlvbi4KKworTGV0J3MgaWxsdXN0cmF0ZSB0aGUgaWRlYSB1c2luZyBhbiBleGFtcGxlLiBI
ZXJlJ3MgdGhlIGRlZmluaXRpb24gb2YgYQorbW9jayBjbGFzcyBiZWZvcmUgYXBwbHlpbmcgdGhp
cyByZWNpcGU6CisKK2BgYAorLy8gRmlsZSBtb2NrX2Zvby5oLgorLi4uCitjbGFzcyBNb2NrRm9v
IDogcHVibGljIEZvbyB7CisgcHVibGljOgorICAvLyBTaW5jZSB3ZSBkb24ndCBkZWNsYXJlIHRo
ZSBjb25zdHJ1Y3RvciBvciB0aGUgZGVzdHJ1Y3RvciwKKyAgLy8gdGhlIGNvbXBpbGVyIHdpbGwg
Z2VuZXJhdGUgdGhlbSBpbiBldmVyeSB0cmFuc2xhdGlvbiB1bml0CisgIC8vIHdoZXJlIHRoaXMg
bW9jayBjbGFzcyBpcyB1c2VkLgorCisgIE1PQ0tfTUVUSE9EMChEb1RoaXMsIGludCgpKTsKKyAg
TU9DS19NRVRIT0QxKERvVGhhdCwgYm9vbChjb25zdCBjaGFyKiBzdHIpKTsKKyAgLi4uIG1vcmUg
bW9jayBtZXRob2RzIC4uLgorfTsKK2BgYAorCitBZnRlciB0aGUgY2hhbmdlLCBpdCB3b3VsZCBs
b29rIGxpa2U6CisKK2BgYAorLy8gRmlsZSBtb2NrX2Zvby5oLgorLi4uCitjbGFzcyBNb2NrRm9v
IDogcHVibGljIEZvbyB7CisgcHVibGljOgorICAvLyBUaGUgY29uc3RydWN0b3IgYW5kIGRlc3Ry
dWN0b3IgYXJlIGRlY2xhcmVkLCBidXQgbm90IGRlZmluZWQsIGhlcmUuCisgIE1vY2tGb28oKTsK
KyAgdmlydHVhbCB+TW9ja0ZvbygpOworCisgIE1PQ0tfTUVUSE9EMChEb1RoaXMsIGludCgpKTsK
KyAgTU9DS19NRVRIT0QxKERvVGhhdCwgYm9vbChjb25zdCBjaGFyKiBzdHIpKTsKKyAgLi4uIG1v
cmUgbW9jayBtZXRob2RzIC4uLgorfTsKK2BgYAorYW5kCitgYGAKKy8vIEZpbGUgbW9ja19mb28u
Y3BwLgorI2luY2x1ZGUgInBhdGgvdG8vbW9ja19mb28uaCIKKworLy8gVGhlIGRlZmluaXRpb25z
IG1heSBhcHBlYXIgdHJpdmlhbCwgYnV0IHRoZSBmdW5jdGlvbnMgYWN0dWFsbHkgZG8gYQorLy8g
bG90IG9mIHRoaW5ncyB0aHJvdWdoIHRoZSBjb25zdHJ1Y3RvcnMvZGVzdHJ1Y3RvcnMgb2YgdGhl
IG1lbWJlcgorLy8gdmFyaWFibGVzIHVzZWQgdG8gaW1wbGVtZW50IHRoZSBtb2NrIG1ldGhvZHMu
CitNb2NrRm9vOjpNb2NrRm9vKCkge30KK01vY2tGb286On5Nb2NrRm9vKCkge30KK2BgYAorCisj
IyBGb3JjaW5nIGEgVmVyaWZpY2F0aW9uICMjCisKK1doZW4gaXQncyBiZWluZyBkZXN0b3llZCwg
eW91ciBmcmllbmRseSBtb2NrIG9iamVjdCB3aWxsIGF1dG9tYXRpY2FsbHkKK3ZlcmlmeSB0aGF0
IGFsbCBleHBlY3RhdGlvbnMgb24gaXQgaGF2ZSBiZWVuIHNhdGlzZmllZCwgYW5kIHdpbGwKK2dl
bmVyYXRlIFtHb29nbGUgVGVzdF0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRlc3Qv
KSBmYWlsdXJlcworaWYgbm90LiBUaGlzIGlzIGNvbnZlbmllbnQgYXMgaXQgbGVhdmVzIHlvdSB3
aXRoIG9uZSBsZXNzIHRoaW5nIHRvCit3b3JyeSBhYm91dC4gVGhhdCBpcywgdW5sZXNzIHlvdSBh
cmUgbm90IHN1cmUgaWYgeW91ciBtb2NrIG9iamVjdCB3aWxsCitiZSBkZXN0b3llZC4KKworSG93
IGNvdWxkIGl0IGJlIHRoYXQgeW91ciBtb2NrIG9iamVjdCB3b24ndCBldmVudHVhbGx5IGJlIGRl
c3Ryb3llZD8KK1dlbGwsIGl0IG1pZ2h0IGJlIGNyZWF0ZWQgb24gdGhlIGhlYXAgYW5kIG93bmVk
IGJ5IHRoZSBjb2RlIHlvdSBhcmUKK3Rlc3RpbmcuIFN1cHBvc2UgdGhlcmUncyBhIGJ1ZyBpbiB0
aGF0IGNvZGUgYW5kIGl0IGRvZXNuJ3QgZGVsZXRlIHRoZQorbW9jayBvYmplY3QgcHJvcGVybHkg
LSB5b3UgY291bGQgZW5kIHVwIHdpdGggYSBwYXNzaW5nIHRlc3Qgd2hlbgordGhlcmUncyBhY3R1
YWxseSBhIGJ1Zy4KKworVXNpbmcgYSBoZWFwIGNoZWNrZXIgaXMgYSBnb29kIGlkZWEgYW5kIGNh
biBhbGxldmlhdGUgdGhlIGNvbmNlcm4sIGJ1dAoraXRzIGltcGxlbWVudGF0aW9uIG1heSBub3Qg
YmUgMTAwJSByZWxpYWJsZS4gU28sIHNvbWV0aW1lcyB5b3UgZG8gd2FudAordG8gX2ZvcmNlXyBH
b29nbGUgTW9jayB0byB2ZXJpZnkgYSBtb2NrIG9iamVjdCBiZWZvcmUgaXQgaXMKKyhob3BlZnVs
bHkpIGRlc3RydWN0ZWQuIFlvdSBjYW4gZG8gdGhpcyB3aXRoCitgTW9jazo6VmVyaWZ5QW5kQ2xl
YXJFeHBlY3RhdGlvbnMoJm1vY2tfb2JqZWN0KWA6CisKK2BgYAorVEVTVChNeVNlcnZlclRlc3Qs
IFByb2Nlc3Nlc1JlcXVlc3QpIHsKKyAgdXNpbmcgOjp0ZXN0aW5nOjpNb2NrOworCisgIE1vY2tG
b28qIGNvbnN0IGZvbyA9IG5ldyBNb2NrRm9vOworICBFWFBFQ1RfQ0FMTCgqZm9vLCAuLi4pLi4u
OworICAvLyAuLi4gb3RoZXIgZXhwZWN0YXRpb25zIC4uLgorCisgIC8vIHNlcnZlciBub3cgb3du
cyBmb28uCisgIE15U2VydmVyIHNlcnZlcihmb28pOworICBzZXJ2ZXIuUHJvY2Vzc1JlcXVlc3Qo
Li4uKTsKKworICAvLyBJbiBjYXNlIHRoYXQgc2VydmVyJ3MgZGVzdHJ1Y3RvciB3aWxsIGZvcmdl
dCB0byBkZWxldGUgZm9vLAorICAvLyB0aGlzIHdpbGwgdmVyaWZ5IHRoZSBleHBlY3RhdGlvbnMg
YW55d2F5LgorICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucyhmb28pOworfSAgLy8g
c2VydmVyIGlzIGRlc3Ryb3llZCB3aGVuIGl0IGdvZXMgb3V0IG9mIHNjb3BlIGhlcmUuCitgYGAK
KworKipUaXA6KiogVGhlIGBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygpYCBmdW5j
dGlvbiByZXR1cm5zIGEKK2Bib29sYCB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSB2ZXJpZmljYXRp
b24gd2FzIHN1Y2Nlc3NmdWwgKGB0cnVlYCBmb3IKK3llcyksIHNvIHlvdSBjYW4gd3JhcCB0aGF0
IGZ1bmN0aW9uIGNhbGwgaW5zaWRlIGEgYEFTU0VSVF9UUlVFKClgIGlmCit0aGVyZSBpcyBubyBw
b2ludCBnb2luZyBmdXJ0aGVyIHdoZW4gdGhlIHZlcmlmaWNhdGlvbiBoYXMgZmFpbGVkLgorCisj
IyBVc2luZyBDaGVjayBQb2ludHMgIyMKKworU29tZXRpbWVzIHlvdSBtYXkgd2FudCB0byAicmVz
ZXQiIGEgbW9jayBvYmplY3QgYXQgdmFyaW91cyBjaGVjaworcG9pbnRzIGluIHlvdXIgdGVzdDog
YXQgZWFjaCBjaGVjayBwb2ludCwgeW91IHZlcmlmeSB0aGF0IGFsbCBleGlzdGluZworZXhwZWN0
YXRpb25zIG9uIHRoZSBtb2NrIG9iamVjdCBoYXZlIGJlZW4gc2F0aXNmaWVkLCBhbmQgdGhlbiB5
b3Ugc2V0Citzb21lIG5ldyBleHBlY3RhdGlvbnMgb24gaXQgYXMgaWYgaXQncyBuZXdseSBjcmVh
dGVkLiBUaGlzIGFsbG93cyB5b3UKK3RvIHdvcmsgd2l0aCBhIG1vY2sgb2JqZWN0IGluICJwaGFz
ZXMiIHdob3NlIHNpemVzIGFyZSBlYWNoCittYW5hZ2VhYmxlLgorCitPbmUgc3VjaCBzY2VuYXJp
byBpcyB0aGF0IGluIHlvdXIgdGVzdCdzIGBTZXRVcCgpYCBmdW5jdGlvbiwgeW91IG1heQord2Fu
dCB0byBwdXQgdGhlIG9iamVjdCB5b3UgYXJlIHRlc3RpbmcgaW50byBhIGNlcnRhaW4gc3RhdGUs
IHdpdGggdGhlCitoZWxwIGZyb20gYSBtb2NrIG9iamVjdC4gT25jZSBpbiB0aGUgZGVzaXJlZCBz
dGF0ZSwgeW91IHdhbnQgdG8gY2xlYXIKK2FsbCBleHBlY3RhdGlvbnMgb24gdGhlIG1vY2ssIHN1
Y2ggdGhhdCBpbiB0aGUgYFRFU1RfRmAgYm9keSB5b3UgY2FuCitzZXQgZnJlc2ggZXhwZWN0YXRp
b25zIG9uIGl0LgorCitBcyB5b3UgbWF5IGhhdmUgZmlndXJlZCBvdXQsIHRoZSBgTW9jazo6VmVy
aWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoKWAKK2Z1bmN0aW9uIHdlIHNhdyBpbiB0aGUgcHJldmlv
dXMgcmVjaXBlIGNhbiBoZWxwIHlvdSBoZXJlLiBPciwgaWYgeW91CithcmUgdXNpbmcgYE9OX0NB
TEwoKWAgdG8gc2V0IGRlZmF1bHQgYWN0aW9ucyBvbiB0aGUgbW9jayBvYmplY3QgYW5kCit3YW50
IHRvIGNsZWFyIHRoZSBkZWZhdWx0IGFjdGlvbnMgYXMgd2VsbCwgdXNlCitgTW9jazo6VmVyaWZ5
QW5kQ2xlYXIoJm1vY2tfb2JqZWN0KWAgaW5zdGVhZC4gVGhpcyBmdW5jdGlvbiBkb2VzIHdoYXQK
K2BNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbW9ja19vYmplY3QpYCBkb2VzIGFu
ZCByZXR1cm5zIHRoZQorc2FtZSBgYm9vbGAsICoqcGx1cyoqIGl0IGNsZWFycyB0aGUgYE9OX0NB
TEwoKWAgc3RhdGVtZW50cyBvbgorYG1vY2tfb2JqZWN0YCB0b28uCisKK0Fub3RoZXIgdHJpY2sg
eW91IGNhbiB1c2UgdG8gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QgaXMgdG8gcHV0IHRoZQorZXhw
ZWN0YXRpb25zIGluIHNlcXVlbmNlcyBhbmQgaW5zZXJ0IGNhbGxzIHRvIGEgZHVtbXkgImNoZWNr
LXBvaW50IgorZnVuY3Rpb24gYXQgc3BlY2lmaWMgcGxhY2VzLiBUaGVuIHlvdSBjYW4gdmVyaWZ5
IHRoYXQgdGhlIG1vY2sKK2Z1bmN0aW9uIGNhbGxzIGRvIGhhcHBlbiBhdCB0aGUgcmlnaHQgdGlt
ZS4gRm9yIGV4YW1wbGUsIGlmIHlvdSBhcmUKK2V4ZXJjaXNpbmcgY29kZToKKworYGBgCitGb28o
MSk7CitGb28oMik7CitGb28oMyk7CitgYGAKKworYW5kIHdhbnQgdG8gdmVyaWZ5IHRoYXQgYEZv
bygxKWAgYW5kIGBGb28oMylgIGJvdGggaW52b2tlCitgbW9jay5CYXIoImEiKWAsIGJ1dCBgRm9v
KDIpYCBkb2Vzbid0IGludm9rZSBhbnl0aGluZy4gWW91IGNhbiB3cml0ZToKKworYGBgCit1c2lu
ZyA6OnRlc3Rpbmc6Ok1vY2tGdW5jdGlvbjsKKworVEVTVChGb29UZXN0LCBJbnZva2VzQmFyQ29y
cmVjdGx5KSB7CisgIE15TW9jayBtb2NrOworICAvLyBDbGFzcyBNb2NrRnVuY3Rpb248Rj4gaGFz
IGV4YWN0bHkgb25lIG1vY2sgbWV0aG9kLiAgSXQgaXMgbmFtZWQKKyAgLy8gQ2FsbCgpIGFuZCBo
YXMgdHlwZSBGLgorICBNb2NrRnVuY3Rpb248dm9pZChzdHJpbmcgY2hlY2tfcG9pbnRfbmFtZSk+
IGNoZWNrOworICB7CisgICAgSW5TZXF1ZW5jZSBzOworCisgICAgRVhQRUNUX0NBTEwobW9jaywg
QmFyKCJhIikpOworICAgIEVYUEVDVF9DQUxMKGNoZWNrLCBDYWxsKCIxIikpOworICAgIEVYUEVD
VF9DQUxMKGNoZWNrLCBDYWxsKCIyIikpOworICAgIEVYUEVDVF9DQUxMKG1vY2ssIEJhcigiYSIp
KTsKKyAgfQorICBGb28oMSk7CisgIGNoZWNrLkNhbGwoIjEiKTsKKyAgRm9vKDIpOworICBjaGVj
ay5DYWxsKCIyIik7CisgIEZvbygzKTsKK30KK2BgYAorCitUaGUgZXhwZWN0YXRpb24gc3BlYyBz
YXlzIHRoYXQgdGhlIGZpcnN0IGBCYXIoImEiKWAgbXVzdCBoYXBwZW4gYmVmb3JlCitjaGVjayBw
b2ludCAiMSIsIHRoZSBzZWNvbmQgYEJhcigiYSIpYCBtdXN0IGhhcHBlbiBhZnRlciBjaGVjayBw
b2ludCAiMiIsCithbmQgbm90aGluZyBzaG91bGQgaGFwcGVuIGJldHdlZW4gdGhlIHR3byBjaGVj
ayBwb2ludHMuIFRoZSBleHBsaWNpdAorY2hlY2sgcG9pbnRzIG1ha2UgaXQgZWFzeSB0byB0ZWxs
IHdoaWNoIGBCYXIoImEiKWAgaXMgY2FsbGVkIGJ5IHdoaWNoCitjYWxsIHRvIGBGb28oKWAuCisK
KyMjIE1vY2tpbmcgRGVzdHJ1Y3RvcnMgIyMKKworU29tZXRpbWVzIHlvdSB3YW50IHRvIG1ha2Ug
c3VyZSBhIG1vY2sgb2JqZWN0IGlzIGRlc3RydWN0ZWQgYXQgdGhlCityaWdodCB0aW1lLCBlLmcu
IGFmdGVyIGBiYXItPkEoKWAgaXMgY2FsbGVkIGJ1dCBiZWZvcmUgYGJhci0+QigpYCBpcworY2Fs
bGVkLiBXZSBhbHJlYWR5IGtub3cgdGhhdCB5b3UgY2FuIHNwZWNpZnkgY29uc3RyYWludHMgb24g
dGhlIG9yZGVyCitvZiBtb2NrIGZ1bmN0aW9uIGNhbGxzLCBzbyBhbGwgd2UgbmVlZCB0byBkbyBp
cyB0byBtb2NrIHRoZSBkZXN0cnVjdG9yCitvZiB0aGUgbW9jayBmdW5jdGlvbi4KKworVGhpcyBz
b3VuZHMgc2ltcGxlLCBleGNlcHQgZm9yIG9uZSBwcm9ibGVtOiBhIGRlc3RydWN0b3IgaXMgYSBz
cGVjaWFsCitmdW5jdGlvbiB3aXRoIHNwZWNpYWwgc3ludGF4IGFuZCBzcGVjaWFsIHNlbWFudGlj
cywgYW5kIHRoZQorYE1PQ0tfTUVUSE9EMGAgbWFjcm8gZG9lc24ndCB3b3JrIGZvciBpdDoKKwor
YGBgCisgIE1PQ0tfTUVUSE9EMCh+TW9ja0Zvbywgdm9pZCgpKTsgIC8vIFdvbid0IGNvbXBpbGUh
CitgYGAKKworVGhlIGdvb2QgbmV3cyBpcyB0aGF0IHlvdSBjYW4gdXNlIGEgc2ltcGxlIHBhdHRl
cm4gdG8gYWNoaWV2ZSB0aGUgc2FtZQorZWZmZWN0LiBGaXJzdCwgYWRkIGEgbW9jayBmdW5jdGlv
biBgRGllKClgIHRvIHlvdXIgbW9jayBjbGFzcyBhbmQgY2FsbAoraXQgaW4gdGhlIGRlc3RydWN0
b3IsIGxpa2UgdGhpczoKKworYGBgCitjbGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7CisgIC4u
LgorICAvLyBBZGQgdGhlIGZvbGxvd2luZyB0d28gbGluZXMgdG8gdGhlIG1vY2sgY2xhc3MuCisg
IE1PQ0tfTUVUSE9EMChEaWUsIHZvaWQoKSk7CisgIHZpcnR1YWwgfk1vY2tGb28oKSB7IERpZSgp
OyB9Cit9OworYGBgCisKKyhJZiB0aGUgbmFtZSBgRGllKClgIGNsYXNoZXMgd2l0aCBhbiBleGlz
dGluZyBzeW1ib2wsIGNob29zZSBhbm90aGVyCituYW1lLikgTm93LCB3ZSBoYXZlIHRyYW5zbGF0
ZWQgdGhlIHByb2JsZW0gb2YgdGVzdGluZyB3aGVuIGEgYE1vY2tGb29gCitvYmplY3QgZGllcyB0
byB0ZXN0aW5nIHdoZW4gaXRzIGBEaWUoKWAgbWV0aG9kIGlzIGNhbGxlZDoKKworYGBgCisgIE1v
Y2tGb28qIGZvbyA9IG5ldyBNb2NrRm9vOworICBNb2NrQmFyKiBiYXIgPSBuZXcgTW9ja0JhcjsK
KyAgLi4uCisgIHsKKyAgICBJblNlcXVlbmNlIHM7CisKKyAgICAvLyBFeHBlY3RzICpmb28gdG8g
ZGllIGFmdGVyIGJhci0+QSgpIGFuZCBiZWZvcmUgYmFyLT5CKCkuCisgICAgRVhQRUNUX0NBTEwo
KmJhciwgQSgpKTsKKyAgICBFWFBFQ1RfQ0FMTCgqZm9vLCBEaWUoKSk7CisgICAgRVhQRUNUX0NB
TEwoKmJhciwgQigpKTsKKyAgfQorYGBgCisKK0FuZCB0aGF0J3MgdGhhdC4KKworIyMgVXNpbmcg
R29vZ2xlIE1vY2sgYW5kIFRocmVhZHMgIyMKKworKipJTVBPUlRBTlQgTk9URToqKiBXaGF0IHdl
IGRlc2NyaWJlIGluIHRoaXMgcmVjaXBlIGlzICoqT05MWSoqIHRydWUgb24KK3BsYXRmb3JtcyB3
aGVyZSBHb29nbGUgTW9jayBpcyB0aHJlYWQtc2FmZS4gQ3VycmVudGx5IHRoZXNlIGFyZSBvbmx5
CitwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IHRoZSBwdGhyZWFkcyBsaWJyYXJ5ICh0aGlzIGluY2x1
ZGVzIExpbnV4IGFuZCBNYWMpLgorVG8gbWFrZSBpdCB0aHJlYWQtc2FmZSBvbiBvdGhlciBwbGF0
Zm9ybXMgd2Ugb25seSBuZWVkIHRvIGltcGxlbWVudAorc29tZSBzeW5jaHJvbml6YXRpb24gb3Bl
cmF0aW9ucyBpbiBgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCJgLgorCitJbiBhICoqdW5p
dCoqIHRlc3QsIGl0J3MgYmVzdCBpZiB5b3UgY291bGQgaXNvbGF0ZSBhbmQgdGVzdCBhIHBpZWNl
IG9mCitjb2RlIGluIGEgc2luZ2xlLXRocmVhZGVkIGNvbnRleHQuIFRoYXQgYXZvaWRzIHJhY2Ug
Y29uZGl0aW9ucyBhbmQKK2RlYWQgbG9ja3MsIGFuZCBtYWtlcyBkZWJ1Z2dpbmcgeW91ciB0ZXN0
IG11Y2ggZWFzaWVyLgorCitZZXQgbWFueSBwcm9ncmFtcyBhcmUgbXVsdGktdGhyZWFkZWQsIGFu
ZCBzb21ldGltZXMgdG8gdGVzdCBzb21ldGhpbmcKK3dlIG5lZWQgdG8gcG91bmQgb24gaXQgZnJv
bSBtb3JlIHRoYW4gb25lIHRocmVhZC4gR29vZ2xlIE1vY2sgd29ya3MKK2ZvciB0aGlzIHB1cnBv
c2UgdG9vLgorCitSZW1lbWJlciB0aGUgc3RlcHMgZm9yIHVzaW5nIGEgbW9jazoKKworICAxLiBD
cmVhdGUgYSBtb2NrIG9iamVjdCBgZm9vYC4KKyAgMS4gU2V0IGl0cyBkZWZhdWx0IGFjdGlvbnMg
YW5kIGV4cGVjdGF0aW9ucyB1c2luZyBgT05fQ0FMTCgpYCBhbmQgYEVYUEVDVF9DQUxMKClgLgor
ICAxLiBUaGUgY29kZSB1bmRlciB0ZXN0IGNhbGxzIG1ldGhvZHMgb2YgYGZvb2AuCisgIDEuIE9w
dGlvbmFsbHksIHZlcmlmeSBhbmQgcmVzZXQgdGhlIG1vY2suCisgIDEuIERlc3Ryb3kgdGhlIG1v
Y2sgeW91cnNlbGYsIG9yIGxldCB0aGUgY29kZSB1bmRlciB0ZXN0IGRlc3Ryb3kgaXQuIFRoZSBk
ZXN0cnVjdG9yIHdpbGwgYXV0b21hdGljYWxseSB2ZXJpZnkgaXQuCisKK0lmIHlvdSBmb2xsb3cg
dGhlIGZvbGxvd2luZyBzaW1wbGUgcnVsZXMsIHlvdXIgbW9ja3MgYW5kIHRocmVhZHMgY2FuCits
aXZlIGhhcHBpbHkgdG9nZXRlcjoKKworICAqIEV4ZWN1dGUgeW91ciBfdGVzdCBjb2RlXyAoYXMg
b3Bwb3NlZCB0byB0aGUgY29kZSBiZWluZyB0ZXN0ZWQpIGluIF9vbmVfIHRocmVhZC4gVGhpcyBt
YWtlcyB5b3VyIHRlc3QgZWFzeSB0byBmb2xsb3cuCisgICogT2J2aW91c2x5LCB5b3UgY2FuIGRv
IHN0ZXAgIzEgd2l0aG91dCBsb2NraW5nLgorICAqIFdoZW4gZG9pbmcgc3RlcCAjMiBhbmQgIzUs
IG1ha2Ugc3VyZSBubyBvdGhlciB0aHJlYWQgaXMgYWNjZXNzaW5nIGBmb29gLiBPYnZpb3VzIHRv
bywgaHVoPworICAqICMzIGFuZCAjNCBjYW4gYmUgZG9uZSBlaXRoZXIgaW4gb25lIHRocmVhZCBv
ciBpbiBtdWx0aXBsZSB0aHJlYWRzIC0gYW55d2F5IHlvdSB3YW50LiBHb29nbGUgTW9jayB0YWtl
cyBjYXJlIG9mIHRoZSBsb2NraW5nLCBzbyB5b3UgZG9uJ3QgaGF2ZSB0byBkbyBhbnkgLSB1bmxl
c3MgcmVxdWlyZWQgYnkgeW91ciB0ZXN0IGxvZ2ljLgorCitJZiB5b3UgdmlvbGF0ZSB0aGUgcnVs
ZXMgKGZvciBleGFtcGxlLCBpZiB5b3Ugc2V0IGV4cGVjdGF0aW9ucyBvbiBhCittb2NrIHdoaWxl
IGFub3RoZXIgdGhyZWFkIGlzIGNhbGxpbmcgaXRzIG1ldGhvZHMpLCB5b3UgZ2V0IHVuZGVmaW5l
ZAorYmVoYXZpb3IuIFRoYXQncyBub3QgZnVuLCBzbyBkb24ndCBkbyBpdC4KKworR29vZ2xlIE1v
Y2sgZ3VhcmFudGVlcyB0aGF0IHRoZSBhY3Rpb24gZm9yIGEgbW9jayBmdW5jdGlvbiBpcyBkb25l
IGluCit0aGUgc2FtZSB0aHJlYWQgdGhhdCBjYWxsZWQgdGhlIG1vY2sgZnVuY3Rpb24uIEZvciBl
eGFtcGxlLCBpbgorCitgYGAKKyAgRVhQRUNUX0NBTEwobW9jaywgRm9vKDEpKQorICAgICAgLldp
bGxPbmNlKGFjdGlvbjEpOworICBFWFBFQ1RfQ0FMTChtb2NrLCBGb28oMikpCisgICAgICAuV2ls
bE9uY2UoYWN0aW9uMik7CitgYGAKKworaWYgYEZvbygxKWAgaXMgY2FsbGVkIGluIHRocmVhZCAx
IGFuZCBgRm9vKDIpYCBpcyBjYWxsZWQgaW4gdGhyZWFkIDIsCitHb29nbGUgTW9jayB3aWxsIGV4
ZWN1dGUgYGFjdGlvbjFgIGluIHRocmVhZCAxIGFuZCBgYWN0aW9uMmAgaW4gdGhyZWFkCisyLgor
CitHb29nbGUgTW9jayBkb2VzIF9ub3RfIGltcG9zZSBhIHNlcXVlbmNlIG9uIGFjdGlvbnMgcGVy
Zm9ybWVkIGluCitkaWZmZXJlbnQgdGhyZWFkcyAoZG9pbmcgc28gbWF5IGNyZWF0ZSBkZWFkbG9j
a3MgYXMgdGhlIGFjdGlvbnMgbWF5CituZWVkIHRvIGNvb3BlcmF0ZSkuIFRoaXMgbWVhbnMgdGhh
dCB0aGUgZXhlY3V0aW9uIG9mIGBhY3Rpb24xYCBhbmQKK2BhY3Rpb24yYCBpbiB0aGUgYWJvdmUg
ZXhhbXBsZSBfbWF5XyBpbnRlcmxlYXZlLiBJZiB0aGlzIGlzIGEgcHJvYmxlbSwKK3lvdSBzaG91
bGQgYWRkIHByb3BlciBzeW5jaHJvbml6YXRpb24gbG9naWMgdG8gYGFjdGlvbjFgIGFuZCBgYWN0
aW9uMmAKK3RvIG1ha2UgdGhlIHRlc3QgdGhyZWFkLXNhZmUuCisKKworQWxzbywgcmVtZW1iZXIg
dGhhdCBgRGVmYXVsdFZhbHVlPFQ+YCBpcyBhIGdsb2JhbCByZXNvdXJjZSB0aGF0Citwb3RlbnRp
YWxseSBhZmZlY3RzIF9hbGxfIGxpdmluZyBtb2NrIG9iamVjdHMgaW4geW91cgorcHJvZ3JhbS4g
TmF0dXJhbGx5LCB5b3Ugd29uJ3Qgd2FudCB0byBtZXNzIHdpdGggaXQgZnJvbSBtdWx0aXBsZQor
dGhyZWFkcyBvciB3aGVuIHRoZXJlIHN0aWxsIGFyZSBtb2NrcyBpbiBhY3Rpb24uCisKKyMjIENv
bnRyb2xsaW5nIEhvdyBNdWNoIEluZm9ybWF0aW9uIEdvb2dsZSBNb2NrIFByaW50cyAjIworCitX
aGVuIEdvb2dsZSBNb2NrIHNlZXMgc29tZXRoaW5nIHRoYXQgaGFzIHRoZSBwb3RlbnRpYWwgb2Yg
YmVpbmcgYW4KK2Vycm9yIChlLmcuIGEgbW9jayBmdW5jdGlvbiB3aXRoIG5vIGV4cGVjdGF0aW9u
IGlzIGNhbGxlZCwgYS5rLmEuIGFuCit1bmludGVyZXN0aW5nIGNhbGwsIHdoaWNoIGlzIGFsbG93
ZWQgYnV0IHBlcmhhcHMgeW91IGZvcmdvdCB0bworZXhwbGljaXRseSBiYW4gdGhlIGNhbGwpLCBp
dCBwcmludHMgc29tZSB3YXJuaW5nIG1lc3NhZ2VzLCBpbmNsdWRpbmcKK3RoZSBhcmd1bWVudHMg
b2YgdGhlIGZ1bmN0aW9uIGFuZCB0aGUgcmV0dXJuIHZhbHVlLiBIb3BlZnVsbHkgdGhpcword2ls
bCByZW1pbmQgeW91IHRvIHRha2UgYSBsb29rIGFuZCBzZWUgaWYgdGhlcmUgaXMgaW5kZWVkIGEg
cHJvYmxlbS4KKworU29tZXRpbWVzIHlvdSBhcmUgY29uZmlkZW50IHRoYXQgeW91ciB0ZXN0cyBh
cmUgY29ycmVjdCBhbmQgbWF5IG5vdAorYXBwcmVjaWF0ZSBzdWNoIGZyaWVuZGx5IG1lc3NhZ2Vz
LiBTb21lIG90aGVyIHRpbWVzLCB5b3UgYXJlIGRlYnVnZ2luZworeW91ciB0ZXN0cyBvciBsZWFy
bmluZyBhYm91dCB0aGUgYmVoYXZpb3Igb2YgdGhlIGNvZGUgeW91IGFyZSB0ZXN0aW5nLAorYW5k
IHdpc2ggeW91IGNvdWxkIG9ic2VydmUgZXZlcnkgbW9jayBjYWxsIHRoYXQgaGFwcGVucyAoaW5j
bHVkaW5nCithcmd1bWVudCB2YWx1ZXMgYW5kIHRoZSByZXR1cm4gdmFsdWUpLiBDbGVhcmx5LCBv
bmUgc2l6ZSBkb2Vzbid0IGZpdAorYWxsLgorCitZb3UgY2FuIGNvbnRyb2wgaG93IG11Y2ggR29v
Z2xlIE1vY2sgdGVsbHMgeW91IHVzaW5nIHRoZQorYC0tZ21vY2tfdmVyYm9zZT1MRVZFTGAgY29t
bWFuZC1saW5lIGZsYWcsIHdoZXJlIGBMRVZFTGAgaXMgYSBzdHJpbmcKK3dpdGggdGhyZWUgcG9z
c2libGUgdmFsdWVzOgorCisgICogYGluZm9gOiBHb29nbGUgTW9jayB3aWxsIHByaW50IGFsbCBp
bmZvcm1hdGlvbmFsIG1lc3NhZ2VzLCB3YXJuaW5ncywgYW5kIGVycm9ycyAobW9zdCB2ZXJib3Nl
KS4gQXQgdGhpcyBzZXR0aW5nLCBHb29nbGUgTW9jayB3aWxsIGFsc28gbG9nIGFueSBjYWxscyB0
byB0aGUgYE9OX0NBTEwvRVhQRUNUX0NBTExgIG1hY3Jvcy4KKyAgKiBgd2FybmluZ2A6IEdvb2ds
ZSBNb2NrIHdpbGwgcHJpbnQgYm90aCB3YXJuaW5ncyBhbmQgZXJyb3JzIChsZXNzIHZlcmJvc2Up
LiBUaGlzIGlzIHRoZSBkZWZhdWx0LgorICAqIGBlcnJvcmA6IEdvb2dsZSBNb2NrIHdpbGwgcHJp
bnQgZXJyb3JzIG9ubHkgKGxlYXN0IHZlcmJvc2UpLgorCitBbHRlcm5hdGl2ZWx5LCB5b3UgY2Fu
IGFkanVzdCB0aGUgdmFsdWUgb2YgdGhhdCBmbGFnIGZyb20gd2l0aGluIHlvdXIKK3Rlc3RzIGxp
a2Ugc286CisKK2BgYAorICA6OnRlc3Rpbmc6OkZMQUdTX2dtb2NrX3ZlcmJvc2UgPSAiZXJyb3Ii
OworYGBgCisKK05vdywganVkaWNpb3VzbHkgdXNlIHRoZSByaWdodCBmbGFnIHRvIGVuYWJsZSBH
b29nbGUgTW9jayBzZXJ2ZSB5b3UgYmV0dGVyIQorCisjIyBHYWluaW5nIFN1cGVyIFZpc2lvbiBp
bnRvIE1vY2sgQ2FsbHMgIyMKKworWW91IGhhdmUgYSB0ZXN0IHVzaW5nIEdvb2dsZSBNb2NrLiBJ
dCBmYWlsczogR29vZ2xlIE1vY2sgdGVsbHMgeW91Cit0aGF0IHNvbWUgZXhwZWN0YXRpb25zIGFy
ZW4ndCBzYXRpc2ZpZWQuIEhvd2V2ZXIsIHlvdSBhcmVuJ3Qgc3VyZSB3aHk6CitJcyB0aGVyZSBh
IHR5cG8gc29tZXdoZXJlIGluIHRoZSBtYXRjaGVycz8gRGlkIHlvdSBtZXNzIHVwIHRoZSBvcmRl
cgorb2YgdGhlIGBFWFBFQ1RfQ0FMTGBzPyBPciBpcyB0aGUgY29kZSB1bmRlciB0ZXN0IGRvaW5n
IHNvbWV0aGluZword3Jvbmc/ICBIb3cgY2FuIHlvdSBmaW5kIG91dCB0aGUgY2F1c2U/CisKK1dv
bid0IGl0IGJlIG5pY2UgaWYgeW91IGhhdmUgWC1yYXkgdmlzaW9uIGFuZCBjYW4gYWN0dWFsbHkg
c2VlIHRoZQordHJhY2Ugb2YgYWxsIGBFWFBFQ1RfQ0FMTGBzIGFuZCBtb2NrIG1ldGhvZCBjYWxs
cyBhcyB0aGV5IGFyZSBtYWRlPworRm9yIGVhY2ggY2FsbCwgd291bGQgeW91IGxpa2UgdG8gc2Vl
IGl0cyBhY3R1YWwgYXJndW1lbnQgdmFsdWVzIGFuZAord2hpY2ggYEVYUEVDVF9DQUxMYCBHb29n
bGUgTW9jayB0aGlua3MgaXQgbWF0Y2hlcz8KKworWW91IGNhbiB1bmxvY2sgdGhpcyBwb3dlciBi
eSBydW5uaW5nIHlvdXIgdGVzdCB3aXRoIHRoZQorYC0tZ21vY2tfdmVyYm9zZT1pbmZvYCBmbGFn
LiBGb3IgZXhhbXBsZSwgZ2l2ZW4gdGhlIHRlc3QgcHJvZ3JhbToKKworYGBgCit1c2luZyB0ZXN0
aW5nOjpfOwordXNpbmcgdGVzdGluZzo6SGFzU3Vic3RyOwordXNpbmcgdGVzdGluZzo6UmV0dXJu
OworCitjbGFzcyBNb2NrRm9vIHsKKyBwdWJsaWM6CisgIE1PQ0tfTUVUSE9EMihGLCB2b2lkKGNv
bnN0IHN0cmluZyYgeCwgY29uc3Qgc3RyaW5nJiB5KSk7Cit9OworCitURVNUKEZvbywgQmFyKSB7
CisgIE1vY2tGb28gbW9jazsKKyAgRVhQRUNUX0NBTEwobW9jaywgRihfLCBfKSkuV2lsbFJlcGVh
dGVkbHkoUmV0dXJuKCkpOworICBFWFBFQ1RfQ0FMTChtb2NrLCBGKCJhIiwgImIiKSk7CisgIEVY
UEVDVF9DQUxMKG1vY2ssIEYoImMiLCBIYXNTdWJzdHIoImQiKSkpOworCisgIG1vY2suRigiYSIs
ICJnb29kIik7CisgIG1vY2suRigiYSIsICJiIik7Cit9CitgYGAKKworaWYgeW91IHJ1biBpdCB3
aXRoIGAtLWdtb2NrX3ZlcmJvc2U9aW5mb2AsIHlvdSB3aWxsIHNlZSB0aGlzIG91dHB1dDoKKwor
YGBgCitbIFJVTiAgICAgIF0gRm9vLkJhcgorCitmb29fdGVzdC5jYzoxNDogRVhQRUNUX0NBTEwo
bW9jaywgRihfLCBfKSkgaW52b2tlZAorZm9vX3Rlc3QuY2M6MTU6IEVYUEVDVF9DQUxMKG1vY2ss
IEYoImEiLCAiYiIpKSBpbnZva2VkCitmb29fdGVzdC5jYzoxNjogRVhQRUNUX0NBTEwobW9jaywg
RigiYyIsIEhhc1N1YnN0cigiZCIpKSkgaW52b2tlZAorZm9vX3Rlc3QuY2M6MTQ6IE1vY2sgZnVu
Y3Rpb24gY2FsbCBtYXRjaGVzIEVYUEVDVF9DQUxMKG1vY2ssIEYoXywgXykpLi4uCisgICAgRnVu
Y3Rpb24gY2FsbDogRihAMHg3ZmZmN2M4ZGFkNDAiYSIsIEAweDdmZmY3YzhkYWQxMCJnb29kIikK
K2Zvb190ZXN0LmNjOjE1OiBNb2NrIGZ1bmN0aW9uIGNhbGwgbWF0Y2hlcyBFWFBFQ1RfQ0FMTCht
b2NrLCBGKCJhIiwgImIiKSkuLi4KKyAgICBGdW5jdGlvbiBjYWxsOiBGKEAweDdmZmY3YzhkYWRh
MCJhIiwgQDB4N2ZmZjdjOGRhZDcwImIiKQorZm9vX3Rlc3QuY2M6MTY6IEZhaWx1cmUKK0FjdHVh
bCBmdW5jdGlvbiBjYWxsIGNvdW50IGRvZXNuJ3QgbWF0Y2ggRVhQRUNUX0NBTEwobW9jaywgRigi
YyIsIEhhc1N1YnN0cigiZCIpKSkuLi4KKyAgICAgICAgIEV4cGVjdGVkOiB0byBiZSBjYWxsZWQg
b25jZQorICAgICAgICAgICBBY3R1YWw6IG5ldmVyIGNhbGxlZCAtIHVuc2F0aXNmaWVkIGFuZCBh
Y3RpdmUKK1sgIEZBSUxFRCAgXSBGb28uQmFyCitgYGAKKworU3VwcG9zZSB0aGUgYnVnIGlzIHRo
YXQgdGhlIGAiYyJgIGluIHRoZSB0aGlyZCBgRVhQRUNUX0NBTExgIGlzIGEgdHlwbworYW5kIHNo
b3VsZCBhY3R1YWxseSBiZSBgImEiYC4gV2l0aCB0aGUgYWJvdmUgbWVzc2FnZSwgeW91IHNob3Vs
ZCBzZWUKK3RoYXQgdGhlIGFjdHVhbCBgRigiYSIsICJnb29kIilgIGNhbGwgaXMgbWF0Y2hlZCBi
eSB0aGUgZmlyc3QKK2BFWFBFQ1RfQ0FMTGAsIG5vdCB0aGUgdGhpcmQgYXMgeW91IHRob3VnaHQu
IEZyb20gdGhhdCBpdCBzaG91bGQgYmUKK29idmlvdXMgdGhhdCB0aGUgdGhpcmQgYEVYUEVDVF9D
QUxMYCBpcyB3cml0dGVuIHdyb25nLiBDYXNlIHNvbHZlZC4KKworIyMgUnVubmluZyBUZXN0cyBp
biBFbWFjcyAjIworCitJZiB5b3UgYnVpbGQgYW5kIHJ1biB5b3VyIHRlc3RzIGluIEVtYWNzLCB0
aGUgc291cmNlIGZpbGUgbG9jYXRpb25zIG9mCitHb29nbGUgTW9jayBhbmQgW0dvb2dsZSBUZXN0
XShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC8pCitlcnJvcnMgd2lsbCBiZSBo
aWdobGlnaHRlZC4gSnVzdCBwcmVzcyBgPEVudGVyPmAgb24gb25lIG9mIHRoZW0gYW5kCit5b3Un
bGwgYmUgdGFrZW4gdG8gdGhlIG9mZmVuZGluZyBsaW5lLiBPciwgeW91IGNhbiBqdXN0IHR5cGUg
YEMteCBgYAordG8ganVtcCB0byB0aGUgbmV4dCBlcnJvci4KKworVG8gbWFrZSBpdCBldmVuIGVh
c2llciwgeW91IGNhbiBhZGQgdGhlIGZvbGxvd2luZyBsaW5lcyB0byB5b3VyCitgfi8uZW1hY3Ng
IGZpbGU6CisKK2BgYAorKGdsb2JhbC1zZXQta2V5ICJcTS1tIiAgICdjb21waWxlKSAgOyBtIGlz
IGZvciBtYWtlCisoZ2xvYmFsLXNldC1rZXkgW00tZG93bl0gJ25leHQtZXJyb3IpCisoZ2xvYmFs
LXNldC1rZXkgW00tdXBdICAgJyhsYW1iZGEgKCkgKGludGVyYWN0aXZlKSAobmV4dC1lcnJvciAt
MSkpKQorYGBgCisKK1RoZW4geW91IGNhbiB0eXBlIGBNLW1gIHRvIHN0YXJ0IGEgYnVpbGQsIG9y
IGBNLXVwYC9gTS1kb3duYCB0byBtb3ZlCitiYWNrIGFuZCBmb3J0aCBiZXR3ZWVuIGVycm9ycy4K
KworIyMgRnVzaW5nIEdvb2dsZSBNb2NrIFNvdXJjZSBGaWxlcyAjIworCitHb29nbGUgTW9jaydz
IGltcGxlbWVudGF0aW9uIGNvbnNpc3RzIG9mIGRvemVucyBvZiBmaWxlcyAoZXhjbHVkaW5nCitp
dHMgb3duIHRlc3RzKS4gIFNvbWV0aW1lcyB5b3UgbWF5IHdhbnQgdGhlbSB0byBiZSBwYWNrYWdl
ZCB1cCBpbgorZmV3ZXIgZmlsZXMgaW5zdGVhZCwgc3VjaCB0aGF0IHlvdSBjYW4gZWFzaWx5IGNv
cHkgdGhlbSB0byBhIG5ldworbWFjaGluZSBhbmQgc3RhcnQgaGFja2luZyB0aGVyZS4gIEZvciB0
aGlzIHdlIHByb3ZpZGUgYW4gZXhwZXJpbWVudGFsCitQeXRob24gc2NyaXB0IGBmdXNlX2dtb2Nr
X2ZpbGVzLnB5YCBpbiB0aGUgYHNjcmlwdHMvYCBkaXJlY3RvcnkKKyhzdGFydGluZyB3aXRoIHJl
bGVhc2UgMS4yLjApLiAgQXNzdW1pbmcgeW91IGhhdmUgUHl0aG9uIDIuNCBvciBhYm92ZQoraW5z
dGFsbGVkIG9uIHlvdXIgbWFjaGluZSwganVzdCBnbyB0byB0aGF0IGRpcmVjdG9yeSBhbmQgcnVu
CitgYGAKK3B5dGhvbiBmdXNlX2dtb2NrX2ZpbGVzLnB5IE9VVFBVVF9ESVIKK2BgYAorCithbmQg
eW91IHNob3VsZCBzZWUgYW4gYE9VVFBVVF9ESVJgIGRpcmVjdG9yeSBiZWluZyBjcmVhdGVkIHdp
dGggZmlsZXMKK2BndGVzdC9ndGVzdC5oYCwgYGdtb2NrL2dtb2NrLmhgLCBhbmQgYGdtb2NrLWd0
ZXN0LWFsbC5jY2AgaW4gaXQuCitUaGVzZSB0aHJlZSBmaWxlcyBjb250YWluIGV2ZXJ5dGhpbmcg
eW91IG5lZWQgdG8gdXNlIEdvb2dsZSBNb2NrIChhbmQKK0dvb2dsZSBUZXN0KS4gIEp1c3QgY29w
eSB0aGVtIHRvIGFueXdoZXJlIHlvdSB3YW50IGFuZCB5b3UgYXJlIHJlYWR5Cit0byB3cml0ZSB0
ZXN0cyBhbmQgdXNlIG1vY2tzLiAgWW91IGNhbiB1c2UgdGhlCitbc2NycHRzL3Rlc3QvTWFrZWZp
bGVdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGVtb2NrL3NvdXJjZS9icm93c2UvdHJ1
bmsvc2NyaXB0cy90ZXN0L01ha2VmaWxlKSBmaWxlIGFzIGFuIGV4YW1wbGUgb24gaG93IHRvIGNv
bXBpbGUgeW91ciB0ZXN0cworYWdhaW5zdCB0aGVtLgorCisjIEV4dGVuZGluZyBHb29nbGUgTW9j
ayAjCisKKyMjIFdyaXRpbmcgTmV3IE1hdGNoZXJzIFF1aWNrbHkgIyMKKworVGhlIGBNQVRDSEVS
KmAgZmFtaWx5IG9mIG1hY3JvcyBjYW4gYmUgdXNlZCB0byBkZWZpbmUgY3VzdG9tIG1hdGNoZXJz
CitlYXNpbHkuICBUaGUgc3ludGF4OgorCitgYGAKK01BVENIRVIobmFtZSwgZGVzY3JpcHRpb25f
c3RyaW5nX2V4cHJlc3Npb24pIHsgc3RhdGVtZW50czsgfQorYGBgCisKK3dpbGwgZGVmaW5lIGEg
bWF0Y2hlciB3aXRoIHRoZSBnaXZlbiBuYW1lIHRoYXQgZXhlY3V0ZXMgdGhlCitzdGF0ZW1lbnRz
LCB3aGljaCBtdXN0IHJldHVybiBhIGBib29sYCB0byBpbmRpY2F0ZSBpZiB0aGUgbWF0Y2gKK3N1
Y2NlZWRzLiAgSW5zaWRlIHRoZSBzdGF0ZW1lbnRzLCB5b3UgY2FuIHJlZmVyIHRvIHRoZSB2YWx1
ZSBiZWluZworbWF0Y2hlZCBieSBgYXJnYCwgYW5kIHJlZmVyIHRvIGl0cyB0eXBlIGJ5IGBhcmdf
dHlwZWAuCisKK1RoZSBkZXNjcmlwdGlvbiBzdHJpbmcgaXMgYSBgc3RyaW5nYC10eXBlZCBleHBy
ZXNzaW9uIHRoYXQgZG9jdW1lbnRzCit3aGF0IHRoZSBtYXRjaGVyIGRvZXMsIGFuZCBpcyB1c2Vk
IHRvIGdlbmVyYXRlIHRoZSBmYWlsdXJlIG1lc3NhZ2UKK3doZW4gdGhlIG1hdGNoIGZhaWxzLiAg
SXQgY2FuIChhbmQgc2hvdWxkKSByZWZlcmVuY2UgdGhlIHNwZWNpYWwKK2Bib29sYCB2YXJpYWJs
ZSBgbmVnYXRpb25gLCBhbmQgc2hvdWxkIGV2YWx1YXRlIHRvIHRoZSBkZXNjcmlwdGlvbiBvZgor
dGhlIG1hdGNoZXIgd2hlbiBgbmVnYXRpb25gIGlzIGBmYWxzZWAsIG9yIHRoYXQgb2YgdGhlIG1h
dGNoZXIncworbmVnYXRpb24gd2hlbiBgbmVnYXRpb25gIGlzIGB0cnVlYC4KKworRm9yIGNvbnZl
bmllbmNlLCB3ZSBhbGxvdyB0aGUgZGVzY3JpcHRpb24gc3RyaW5nIHRvIGJlIGVtcHR5IChgIiJg
KSwKK2luIHdoaWNoIGNhc2UgR29vZ2xlIE1vY2sgd2lsbCB1c2UgdGhlIHNlcXVlbmNlIG9mIHdv
cmRzIGluIHRoZQorbWF0Y2hlciBuYW1lIGFzIHRoZSBkZXNjcmlwdGlvbi4KKworRm9yIGV4YW1w
bGU6CitgYGAKK01BVENIRVIoSXNEaXZpc2libGVCeTcsICIiKSB7IHJldHVybiAoYXJnICUgNykg
PT0gMDsgfQorYGBgCithbGxvd3MgeW91IHRvIHdyaXRlCitgYGAKKyAgLy8gRXhwZWN0cyBtb2Nr
X2Zvby5CYXIobikgdG8gYmUgY2FsbGVkIHdoZXJlIG4gaXMgZGl2aXNpYmxlIGJ5IDcuCisgIEVY
UEVDVF9DQUxMKG1vY2tfZm9vLCBCYXIoSXNEaXZpc2libGVCeTcoKSkpOworYGBgCitvciwKK2Bg
YAordXNpbmcgOjp0ZXN0aW5nOjpOb3Q7CisuLi4KKyAgRVhQRUNUX1RIQVQoc29tZV9leHByZXNz
aW9uLCBJc0RpdmlzaWJsZUJ5NygpKTsKKyAgRVhQRUNUX1RIQVQoc29tZV9vdGhlcl9leHByZXNz
aW9uLCBOb3QoSXNEaXZpc2libGVCeTcoKSkpOworYGBgCitJZiB0aGUgYWJvdmUgYXNzZXJ0aW9u
cyBmYWlsLCB0aGV5IHdpbGwgcHJpbnQgc29tZXRoaW5nIGxpa2U6CitgYGAKKyAgVmFsdWUgb2Y6
IHNvbWVfZXhwcmVzc2lvbgorICBFeHBlY3RlZDogaXMgZGl2aXNpYmxlIGJ5IDcKKyAgICBBY3R1
YWw6IDI3CisuLi4KKyAgVmFsdWUgb2Y6IHNvbWVfb3RoZXJfZXhwcmVzc2lvbgorICBFeHBlY3Rl
ZDogbm90IChpcyBkaXZpc2libGUgYnkgNykKKyAgICBBY3R1YWw6IDIxCitgYGAKK3doZXJlIHRo
ZSBkZXNjcmlwdGlvbnMgYCJpcyBkaXZpc2libGUgYnkgNyJgIGFuZCBgIm5vdCAoaXMgZGl2aXNp
YmxlCitieSA3KSJgIGFyZSBhdXRvbWF0aWNhbGx5IGNhbGN1bGF0ZWQgZnJvbSB0aGUgbWF0Y2hl
ciBuYW1lCitgSXNEaXZpc2libGVCeTdgLgorCitBcyB5b3UgbWF5IGhhdmUgbm90aWNlZCwgdGhl
IGF1dG8tZ2VuZXJhdGVkIGRlc2NyaXB0aW9ucyAoZXNwZWNpYWxseQordGhvc2UgZm9yIHRoZSBu
ZWdhdGlvbikgbWF5IG5vdCBiZSBzbyBncmVhdC4gWW91IGNhbiBhbHdheXMgb3ZlcnJpZGUKK3Ro
ZW0gd2l0aCBhIHN0cmluZyBleHByZXNzaW9uIG9mIHlvdXIgb3duOgorYGBgCitNQVRDSEVSKElz
RGl2aXNpYmxlQnk3LCBzdGQ6OnN0cmluZyhuZWdhdGlvbiA/ICJpc24ndCIgOiAiaXMiKSArCisg
ICAgICAgICAgICAgICAgICAgICAgICAiIGRpdmlzaWJsZSBieSA3IikgeworICByZXR1cm4gKGFy
ZyAlIDcpID09IDA7Cit9CitgYGAKKworT3B0aW9uYWxseSwgeW91IGNhbiBzdHJlYW0gYWRkaXRp
b25hbCBpbmZvcm1hdGlvbiB0byBhIGhpZGRlbiBhcmd1bWVudAorbmFtZWQgYHJlc3VsdF9saXN0
ZW5lcmAgdG8gZXhwbGFpbiB0aGUgbWF0Y2ggcmVzdWx0LiBGb3IgZXhhbXBsZSwgYQorYmV0dGVy
IGRlZmluaXRpb24gb2YgYElzRGl2aXNpYmxlQnk3YCBpczoKK2BgYAorTUFUQ0hFUihJc0Rpdmlz
aWJsZUJ5NywgIiIpIHsKKyAgaWYgKChhcmcgJSA3KSA9PSAwKQorICAgIHJldHVybiB0cnVlOwor
CisgICpyZXN1bHRfbGlzdGVuZXIgPDwgInRoZSByZW1haW5kZXIgaXMgIiA8PCAoYXJnICUgNyk7
CisgIHJldHVybiBmYWxzZTsKK30KK2BgYAorCitXaXRoIHRoaXMgZGVmaW5pdGlvbiwgdGhlIGFi
b3ZlIGFzc2VydGlvbiB3aWxsIGdpdmUgYSBiZXR0ZXIgbWVzc2FnZToKK2BgYAorICBWYWx1ZSBv
Zjogc29tZV9leHByZXNzaW9uCisgIEV4cGVjdGVkOiBpcyBkaXZpc2libGUgYnkgNworICAgIEFj
dHVhbDogMjcgKHRoZSByZW1haW5kZXIgaXMgNikKK2BgYAorCitZb3Ugc2hvdWxkIGxldCBgTWF0
Y2hBbmRFeHBsYWluKClgIHByaW50IF9hbnkgYWRkaXRpb25hbCBpbmZvcm1hdGlvbl8KK3RoYXQg
Y2FuIGhlbHAgYSB1c2VyIHVuZGVyc3RhbmQgdGhlIG1hdGNoIHJlc3VsdC4gTm90ZSB0aGF0IGl0
IHNob3VsZAorZXhwbGFpbiB3aHkgdGhlIG1hdGNoIHN1Y2NlZWRzIGluIGNhc2Ugb2YgYSBzdWNj
ZXNzICh1bmxlc3MgaXQncworb2J2aW91cykgLSB0aGlzIGlzIHVzZWZ1bCB3aGVuIHRoZSBtYXRj
aGVyIGlzIHVzZWQgaW5zaWRlCitgTm90KClgLiBUaGVyZSBpcyBubyBuZWVkIHRvIHByaW50IHRo
ZSBhcmd1bWVudCB2YWx1ZSBpdHNlbGYsIGFzCitHb29nbGUgTW9jayBhbHJlYWR5IHByaW50cyBp
dCBmb3IgeW91LgorCisqKk5vdGVzOioqCisKKyAgMS4gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIGJl
aW5nIG1hdGNoZWQgKGBhcmdfdHlwZWApIGlzIGRldGVybWluZWQgYnkgdGhlIGNvbnRleHQgaW4g
d2hpY2ggeW91IHVzZSB0aGUgbWF0Y2hlciBhbmQgaXMgc3VwcGxpZWQgdG8geW91IGJ5IHRoZSBj
b21waWxlciwgc28geW91IGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgZGVjbGFyaW5nIGl0IChu
b3IgY2FuIHlvdSkuICBUaGlzIGFsbG93cyB0aGUgbWF0Y2hlciB0byBiZSBwb2x5bW9ycGhpYy4g
IEZvciBleGFtcGxlLCBgSXNEaXZpc2libGVCeTcoKWAgY2FuIGJlIHVzZWQgdG8gbWF0Y2ggYW55
IHR5cGUgd2hlcmUgdGhlIHZhbHVlIG9mIGAoYXJnICUgNykgPT0gMGAgY2FuIGJlIGltcGxpY2l0
bHkgY29udmVydGVkIHRvIGEgYGJvb2xgLiAgSW4gdGhlIGBCYXIoSXNEaXZpc2libGVCeTcoKSlg
IGV4YW1wbGUgYWJvdmUsIGlmIG1ldGhvZCBgQmFyKClgIHRha2VzIGFuIGBpbnRgLCBgYXJnX3R5
cGVgIHdpbGwgYmUgYGludGA7IGlmIGl0IHRha2VzIGFuIGB1bnNpZ25lZCBsb25nYCwgYGFyZ190
eXBlYCB3aWxsIGJlIGB1bnNpZ25lZCBsb25nYDsgYW5kIHNvIG9uLgorICAxLiBHb29nbGUgTW9j
ayBkb2Vzbid0IGd1YXJhbnRlZSB3aGVuIG9yIGhvdyBtYW55IHRpbWVzIGEgbWF0Y2hlciB3aWxs
IGJlIGludm9rZWQuIFRoZXJlZm9yZSB0aGUgbWF0Y2hlciBsb2dpYyBtdXN0IGJlIF9wdXJlbHkg
ZnVuY3Rpb25hbF8gKGkuZS4gaXQgY2Fubm90IGhhdmUgYW55IHNpZGUgZWZmZWN0LCBhbmQgdGhl
IHJlc3VsdCBtdXN0IG5vdCBkZXBlbmQgb24gYW55dGhpbmcgb3RoZXIgdGhhbiB0aGUgdmFsdWUg
YmVpbmcgbWF0Y2hlZCBhbmQgdGhlIG1hdGNoZXIgcGFyYW1ldGVycykuIFRoaXMgcmVxdWlyZW1l
bnQgbXVzdCBiZSBzYXRpc2ZpZWQgbm8gbWF0dGVyIGhvdyB5b3UgZGVmaW5lIHRoZSBtYXRjaGVy
IChlLmcuIHVzaW5nIG9uZSBvZiB0aGUgbWV0aG9kcyBkZXNjcmliZWQgaW4gdGhlIGZvbGxvd2lu
ZyByZWNpcGVzKS4gSW4gcGFydGljdWxhciwgYSBtYXRjaGVyIGNhbiBuZXZlciBjYWxsIGEgbW9j
ayBmdW5jdGlvbiwgYXMgdGhhdCB3aWxsIGFmZmVjdCB0aGUgc3RhdGUgb2YgdGhlIG1vY2sgb2Jq
ZWN0IGFuZCBHb29nbGUgTW9jay4KKworIyMgV3JpdGluZyBOZXcgUGFyYW1ldGVyaXplZCBNYXRj
aGVycyBRdWlja2x5ICMjCisKK1NvbWV0aW1lcyB5b3UnbGwgd2FudCB0byBkZWZpbmUgYSBtYXRj
aGVyIHRoYXQgaGFzIHBhcmFtZXRlcnMuICBGb3IgdGhhdCB5b3UKK2NhbiB1c2UgdGhlIG1hY3Jv
OgorYGBgCitNQVRDSEVSX1AobmFtZSwgcGFyYW1fbmFtZSwgZGVzY3JpcHRpb25fc3RyaW5nKSB7
IHN0YXRlbWVudHM7IH0KK2BgYAord2hlcmUgdGhlIGRlc2NyaXB0aW9uIHN0cmluZyBjYW4gYmUg
ZWl0aGVyIGAiImAgb3IgYSBzdHJpbmcgZXhwcmVzc2lvbgordGhhdCByZWZlcmVuY2VzIGBuZWdh
dGlvbmAgYW5kIGBwYXJhbV9uYW1lYC4KKworRm9yIGV4YW1wbGU6CitgYGAKK01BVENIRVJfUChI
YXNBYnNvbHV0ZVZhbHVlLCB2YWx1ZSwgIiIpIHsgcmV0dXJuIGFicyhhcmcpID09IHZhbHVlOyB9
CitgYGAKK3dpbGwgYWxsb3cgeW91IHRvIHdyaXRlOgorYGBgCisgIEVYUEVDVF9USEFUKEJsYWgo
ImEiKSwgSGFzQWJzb2x1dGVWYWx1ZShuKSk7CitgYGAKK3doaWNoIG1heSBsZWFkIHRvIHRoaXMg
bWVzc2FnZSAoYXNzdW1pbmcgYG5gIGlzIDEwKToKK2BgYAorICBWYWx1ZSBvZjogQmxhaCgiYSIp
CisgIEV4cGVjdGVkOiBoYXMgYWJzb2x1dGUgdmFsdWUgMTAKKyAgICBBY3R1YWw6IC05CitgYGAK
KworTm90ZSB0aGF0IGJvdGggdGhlIG1hdGNoZXIgZGVzY3JpcHRpb24gYW5kIGl0cyBwYXJhbWV0
ZXIgYXJlCitwcmludGVkLCBtYWtpbmcgdGhlIG1lc3NhZ2UgaHVtYW4tZnJpZW5kbHkuCisKK0lu
IHRoZSBtYXRjaGVyIGRlZmluaXRpb24gYm9keSwgeW91IGNhbiB3cml0ZSBgZm9vX3R5cGVgIHRv
CityZWZlcmVuY2UgdGhlIHR5cGUgb2YgYSBwYXJhbWV0ZXIgbmFtZWQgYGZvb2AuICBGb3IgZXhh
bXBsZSwgaW4gdGhlCitib2R5IG9mIGBNQVRDSEVSX1AoSGFzQWJzb2x1dGVWYWx1ZSwgdmFsdWUp
YCBhYm92ZSwgeW91IGNhbiB3cml0ZQorYHZhbHVlX3R5cGVgIHRvIHJlZmVyIHRvIHRoZSB0eXBl
IG9mIGB2YWx1ZWAuCisKK0dvb2dsZSBNb2NrIGFsc28gcHJvdmlkZXMgYE1BVENIRVJfUDJgLCBg
TUFUQ0hFUl9QM2AsIC4uLiwgdXAgdG8KK2BNQVRDSEVSX1AxMGAgdG8gc3VwcG9ydCBtdWx0aS1w
YXJhbWV0ZXIgbWF0Y2hlcnM6CitgYGAKK01BVENIRVJfUGsobmFtZSwgcGFyYW1fMSwgLi4uLCBw
YXJhbV9rLCBkZXNjcmlwdGlvbl9zdHJpbmcpIHsgc3RhdGVtZW50czsgfQorYGBgCisKK1BsZWFz
ZSBub3RlIHRoYXQgdGhlIGN1c3RvbSBkZXNjcmlwdGlvbiBzdHJpbmcgaXMgZm9yIGEgcGFydGlj
dWxhcgorKippbnN0YW5jZSoqIG9mIHRoZSBtYXRjaGVyLCB3aGVyZSB0aGUgcGFyYW1ldGVycyBo
YXZlIGJlZW4gYm91bmQgdG8KK2FjdHVhbCB2YWx1ZXMuICBUaGVyZWZvcmUgdXN1YWxseSB5b3Un
bGwgd2FudCB0aGUgcGFyYW1ldGVyIHZhbHVlcyB0bworYmUgcGFydCBvZiB0aGUgZGVzY3JpcHRp
b24uICBHb29nbGUgTW9jayBsZXRzIHlvdSBkbyB0aGF0IGJ5CityZWZlcmVuY2luZyB0aGUgbWF0
Y2hlciBwYXJhbWV0ZXJzIGluIHRoZSBkZXNjcmlwdGlvbiBzdHJpbmcKK2V4cHJlc3Npb24uCisK
K0ZvciBleGFtcGxlLAorYGBgCisgIHVzaW5nIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZzsKKyAg
TUFUQ0hFUl9QMihJbkNsb3NlZFJhbmdlLCBsb3csIGhpLAorICAgICAgICAgICAgIHN0ZDo6c3Ry
aW5nKG5lZ2F0aW9uID8gImlzbid0IiA6ICJpcyIpICsgIiBpbiByYW5nZSBbIiArCisgICAgICAg
ICAgICAgUHJpbnRUb1N0cmluZyhsb3cpICsgIiwgIiArIFByaW50VG9TdHJpbmcoaGkpICsgIl0i
KSB7CisgICAgcmV0dXJuIGxvdyA8PSBhcmcgJiYgYXJnIDw9IGhpOworICB9CisgIC4uLgorICBF
WFBFQ1RfVEhBVCgzLCBJbkNsb3NlZFJhbmdlKDQsIDYpKTsKK2BgYAord291bGQgZ2VuZXJhdGUg
YSBmYWlsdXJlIHRoYXQgY29udGFpbnMgdGhlIG1lc3NhZ2U6CitgYGAKKyAgRXhwZWN0ZWQ6IGlz
IGluIHJhbmdlIFs0LCA2XQorYGBgCisKK0lmIHlvdSBzcGVjaWZ5IGAiImAgYXMgdGhlIGRlc2Ny
aXB0aW9uLCB0aGUgZmFpbHVyZSBtZXNzYWdlIHdpbGwKK2NvbnRhaW4gdGhlIHNlcXVlbmNlIG9m
IHdvcmRzIGluIHRoZSBtYXRjaGVyIG5hbWUgZm9sbG93ZWQgYnkgdGhlCitwYXJhbWV0ZXIgdmFs
dWVzIHByaW50ZWQgYXMgYSB0dXBsZS4gIEZvciBleGFtcGxlLAorYGBgCisgIE1BVENIRVJfUDIo
SW5DbG9zZWRSYW5nZSwgbG93LCBoaSwgIiIpIHsgLi4uIH0KKyAgLi4uCisgIEVYUEVDVF9USEFU
KDMsIEluQ2xvc2VkUmFuZ2UoNCwgNikpOworYGBgCit3b3VsZCBnZW5lcmF0ZSBhIGZhaWx1cmUg
dGhhdCBjb250YWlucyB0aGUgdGV4dDoKK2BgYAorICBFeHBlY3RlZDogaW4gY2xvc2VkIHJhbmdl
ICg0LCA2KQorYGBgCisKK0ZvciB0aGUgcHVycG9zZSBvZiB0eXBpbmcsIHlvdSBjYW4gdmlldwor
YGBgCitNQVRDSEVSX1BrKEZvbywgcDEsIC4uLiwgcGssIGRlc2NyaXB0aW9uX3N0cmluZykgeyAu
Li4gfQorYGBgCithcyBzaG9ydGhhbmQgZm9yCitgYGAKK3RlbXBsYXRlIDx0eXBlbmFtZSBwMV90
eXBlLCAuLi4sIHR5cGVuYW1lIHBrX3R5cGU+CitGb29NYXRjaGVyUGs8cDFfdHlwZSwgLi4uLCBw
a190eXBlPgorRm9vKHAxX3R5cGUgcDEsIC4uLiwgcGtfdHlwZSBwaykgeyAuLi4gfQorYGBgCisK
K1doZW4geW91IHdyaXRlIGBGb28odjEsIC4uLiwgdmspYCwgdGhlIGNvbXBpbGVyIGluZmVycyB0
aGUgdHlwZXMgb2YKK3RoZSBwYXJhbWV0ZXJzIGB2MWAsIC4uLiwgYW5kIGB2a2AgZm9yIHlvdS4g
IElmIHlvdSBhcmUgbm90IGhhcHB5IHdpdGgKK3RoZSByZXN1bHQgb2YgdGhlIHR5cGUgaW5mZXJl
bmNlLCB5b3UgY2FuIHNwZWNpZnkgdGhlIHR5cGVzIGJ5CitleHBsaWNpdGx5IGluc3RhbnRpYXRp
bmcgdGhlIHRlbXBsYXRlLCBhcyBpbiBgRm9vPGxvbmcsIGJvb2w+KDUsIGZhbHNlKWAuCitBcyBz
YWlkIGVhcmxpZXIsIHlvdSBkb24ndCBnZXQgdG8gKG9yIG5lZWQgdG8pIHNwZWNpZnkKK2Bhcmdf
dHlwZWAgYXMgdGhhdCdzIGRldGVybWluZWQgYnkgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhlIG1h
dGNoZXIKK2lzIHVzZWQuCisKK1lvdSBjYW4gYXNzaWduIHRoZSByZXN1bHQgb2YgZXhwcmVzc2lv
biBgRm9vKHAxLCAuLi4sIHBrKWAgdG8gYQordmFyaWFibGUgb2YgdHlwZSBgRm9vTWF0Y2hlclBr
PHAxX3R5cGUsIC4uLiwgcGtfdHlwZT5gLiAgVGhpcyBjYW4gYmUKK3VzZWZ1bCB3aGVuIGNvbXBv
c2luZyBtYXRjaGVycy4gIE1hdGNoZXJzIHRoYXQgZG9uJ3QgaGF2ZSBhIHBhcmFtZXRlcgorb3Ig
aGF2ZSBvbmx5IG9uZSBwYXJhbWV0ZXIgaGF2ZSBzcGVjaWFsIHR5cGVzOiB5b3UgY2FuIGFzc2ln
biBgRm9vKClgCit0byBhIGBGb29NYXRjaGVyYC10eXBlZCB2YXJpYWJsZSwgYW5kIGFzc2lnbiBg
Rm9vKHApYCB0byBhCitgRm9vTWF0Y2hlclA8cF90eXBlPmAtdHlwZWQgdmFyaWFibGUuCisKK1do
aWxlIHlvdSBjYW4gaW5zdGFudGlhdGUgYSBtYXRjaGVyIHRlbXBsYXRlIHdpdGggcmVmZXJlbmNl
IHR5cGVzLAorcGFzc2luZyB0aGUgcGFyYW1ldGVycyBieSBwb2ludGVyIHVzdWFsbHkgbWFrZXMg
eW91ciBjb2RlIG1vcmUKK3JlYWRhYmxlLiAgSWYsIGhvd2V2ZXIsIHlvdSBzdGlsbCB3YW50IHRv
IHBhc3MgYSBwYXJhbWV0ZXIgYnkKK3JlZmVyZW5jZSwgYmUgYXdhcmUgdGhhdCBpbiB0aGUgZmFp
bHVyZSBtZXNzYWdlIGdlbmVyYXRlZCBieSB0aGUKK21hdGNoZXIgeW91IHdpbGwgc2VlIHRoZSB2
YWx1ZSBvZiB0aGUgcmVmZXJlbmNlZCBvYmplY3QgYnV0IG5vdCBpdHMKK2FkZHJlc3MuCisKK1lv
dSBjYW4gb3ZlcmxvYWQgbWF0Y2hlcnMgd2l0aCBkaWZmZXJlbnQgbnVtYmVycyBvZiBwYXJhbWV0
ZXJzOgorYGBgCitNQVRDSEVSX1AoQmxhaCwgYSwgZGVzY3JpcHRpb25fc3RyaW5nXzEpIHsgLi4u
IH0KK01BVENIRVJfUDIoQmxhaCwgYSwgYiwgZGVzY3JpcHRpb25fc3RyaW5nXzIpIHsgLi4uIH0K
K2BgYAorCitXaGlsZSBpdCdzIHRlbXB0aW5nIHRvIGFsd2F5cyB1c2UgdGhlIGBNQVRDSEVSKmAg
bWFjcm9zIHdoZW4gZGVmaW5pbmcKK2EgbmV3IG1hdGNoZXIsIHlvdSBzaG91bGQgYWxzbyBjb25z
aWRlciBpbXBsZW1lbnRpbmcKK2BNYXRjaGVySW50ZXJmYWNlYCBvciB1c2luZyBgTWFrZVBvbHlt
b3JwaGljTWF0Y2hlcigpYCBpbnN0ZWFkIChzZWUKK3RoZSByZWNpcGVzIHRoYXQgZm9sbG93KSwg
ZXNwZWNpYWxseSBpZiB5b3UgbmVlZCB0byB1c2UgdGhlIG1hdGNoZXIgYQorbG90LiAgV2hpbGUg
dGhlc2UgYXBwcm9hY2hlcyByZXF1aXJlIG1vcmUgd29yaywgdGhleSBnaXZlIHlvdSBtb3JlCitj
b250cm9sIG9uIHRoZSB0eXBlcyBvZiB0aGUgdmFsdWUgYmVpbmcgbWF0Y2hlZCBhbmQgdGhlIG1h
dGNoZXIKK3BhcmFtZXRlcnMsIHdoaWNoIGluIGdlbmVyYWwgbGVhZHMgdG8gYmV0dGVyIGNvbXBp
bGVyIGVycm9yIG1lc3NhZ2VzCit0aGF0IHBheSBvZmYgaW4gdGhlIGxvbmcgcnVuLiAgVGhleSBh
bHNvIGFsbG93IG92ZXJsb2FkaW5nIG1hdGNoZXJzCitiYXNlZCBvbiBwYXJhbWV0ZXIgdHlwZXMg
KGFzIG9wcG9zZWQgdG8ganVzdCBiYXNlZCBvbiB0aGUgbnVtYmVyIG9mCitwYXJhbWV0ZXJzKS4K
KworIyMgV3JpdGluZyBOZXcgTW9ub21vcnBoaWMgTWF0Y2hlcnMgIyMKKworQSBtYXRjaGVyIG9m
IGFyZ3VtZW50IHR5cGUgYFRgIGltcGxlbWVudHMKK2A6OnRlc3Rpbmc6Ok1hdGNoZXJJbnRlcmZh
Y2U8VD5gIGFuZCBkb2VzIHR3byB0aGluZ3M6IGl0IHRlc3RzIHdoZXRoZXIgYQordmFsdWUgb2Yg
dHlwZSBgVGAgbWF0Y2hlcyB0aGUgbWF0Y2hlciwgYW5kIGNhbiBkZXNjcmliZSB3aGF0IGtpbmQg
b2YKK3ZhbHVlcyBpdCBtYXRjaGVzLiBUaGUgbGF0dGVyIGFiaWxpdHkgaXMgdXNlZCBmb3IgZ2Vu
ZXJhdGluZyByZWFkYWJsZQorZXJyb3IgbWVzc2FnZXMgd2hlbiBleHBlY3RhdGlvbnMgYXJlIHZp
b2xhdGVkLgorCitUaGUgaW50ZXJmYWNlIGxvb2tzIGxpa2UgdGhpczoKKworYGBgCitjbGFzcyBN
YXRjaFJlc3VsdExpc3RlbmVyIHsKKyBwdWJsaWM6CisgIC4uLgorICAvLyBTdHJlYW1zIHggdG8g
dGhlIHVuZGVybHlpbmcgb3N0cmVhbTsgZG9lcyBub3RoaW5nIGlmIHRoZSBvc3RyZWFtCisgIC8v
IGlzIE5VTEwuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBNYXRjaFJlc3VsdExpc3RlbmVy
JiBvcGVyYXRvcjw8KGNvbnN0IFQmIHgpOworCisgIC8vIFJldHVybnMgdGhlIHVuZGVybHlpbmcg
b3N0cmVhbS4KKyAgOjpzdGQ6Om9zdHJlYW0qIHN0cmVhbSgpOworfTsKKwordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CitjbGFzcyBNYXRjaGVySW50ZXJmYWNlIHsKKyBwdWJsaWM6CisgIHZpcnR1YWwg
fk1hdGNoZXJJbnRlcmZhY2UoKTsKKworICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSBtYXRjaGVy
IG1hdGNoZXMgeDsgYWxzbyBleHBsYWlucyB0aGUgbWF0Y2gKKyAgLy8gcmVzdWx0IHRvICdsaXN0
ZW5lcicuCisgIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxhaW4oVCB4LCBNYXRjaFJlc3VsdExp
c3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgPSAwOworCisgIC8vIERlc2NyaWJlcyB0aGlzIG1hdGNo
ZXIgdG8gYW4gb3N0cmVhbS4KKyAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJl
YW0qIG9zKSBjb25zdCA9IDA7CisKKyAgLy8gRGVzY3JpYmVzIHRoZSBuZWdhdGlvbiBvZiB0aGlz
IG1hdGNoZXIgdG8gYW4gb3N0cmVhbS4KKyAgdmlydHVhbCB2b2lkIERlc2NyaWJlTmVnYXRpb25U
byg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0OworfTsKK2BgYAorCitJZiB5b3UgbmVlZCBhIGN1
c3RvbSBtYXRjaGVyIGJ1dCBgVHJ1bHkoKWAgaXMgbm90IGEgZ29vZCBvcHRpb24gKGZvcgorZXhh
bXBsZSwgeW91IG1heSBub3QgYmUgaGFwcHkgd2l0aCB0aGUgd2F5IGBUcnVseShwcmVkaWNhdGUp
YAorZGVzY3JpYmVzIGl0c2VsZiwgb3IgeW91IG1heSB3YW50IHlvdXIgbWF0Y2hlciB0byBiZSBw
b2x5bW9ycGhpYyBhcworYEVxKHZhbHVlKWAgaXMpLCB5b3UgY2FuIGRlZmluZSBhIG1hdGNoZXIg
dG8gZG8gd2hhdGV2ZXIgeW91IHdhbnQgaW4KK3R3byBzdGVwczogZmlyc3QgaW1wbGVtZW50IHRo
ZSBtYXRjaGVyIGludGVyZmFjZSwgYW5kIHRoZW4gZGVmaW5lIGEKK2ZhY3RvcnkgZnVuY3Rpb24g
dG8gY3JlYXRlIGEgbWF0Y2hlciBpbnN0YW5jZS4gVGhlIHNlY29uZCBzdGVwIGlzIG5vdAorc3Ry
aWN0bHkgbmVlZGVkIGJ1dCBpdCBtYWtlcyB0aGUgc3ludGF4IG9mIHVzaW5nIHRoZSBtYXRjaGVy
IG5pY2VyLgorCitGb3IgZXhhbXBsZSwgeW91IGNhbiBkZWZpbmUgYSBtYXRjaGVyIHRvIHRlc3Qg
d2hldGhlciBhbiBgaW50YCBpcworZGl2aXNpYmxlIGJ5IDcgYW5kIHRoZW4gdXNlIGl0IGxpa2Ug
dGhpczoKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpNYWtlTWF0Y2hlcjsKK3VzaW5nIDo6dGVzdGlu
Zzo6TWF0Y2hlcjsKK3VzaW5nIDo6dGVzdGluZzo6TWF0Y2hlckludGVyZmFjZTsKK3VzaW5nIDo6
dGVzdGluZzo6TWF0Y2hSZXN1bHRMaXN0ZW5lcjsKKworY2xhc3MgRGl2aXNpYmxlQnk3TWF0Y2hl
ciA6IHB1YmxpYyBNYXRjaGVySW50ZXJmYWNlPGludD4geworIHB1YmxpYzoKKyAgdmlydHVhbCBi
b29sIE1hdGNoQW5kRXhwbGFpbihpbnQgbiwgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIp
IGNvbnN0IHsKKyAgICByZXR1cm4gKG4gJSA3KSA9PSAwOworICB9CisKKyAgdmlydHVhbCB2b2lk
IERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7CisgICAgKm9zIDw8ICJpcyBk
aXZpc2libGUgYnkgNyI7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRv
KDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgeworICAgICpvcyA8PCAiaXMgbm90IGRpdmlzaWJs
ZSBieSA3IjsKKyAgfQorfTsKKworaW5saW5lIE1hdGNoZXI8aW50PiBEaXZpc2libGVCeTcoKSB7
CisgIHJldHVybiBNYWtlTWF0Y2hlcihuZXcgRGl2aXNpYmxlQnk3TWF0Y2hlcik7Cit9CisuLi4K
KworICBFWFBFQ1RfQ0FMTChmb28sIEJhcihEaXZpc2libGVCeTcoKSkpOworYGBgCisKK1lvdSBt
YXkgaW1wcm92ZSB0aGUgbWF0Y2hlciBtZXNzYWdlIGJ5IHN0cmVhbWluZyBhZGRpdGlvbmFsCitp
bmZvcm1hdGlvbiB0byB0aGUgYGxpc3RlbmVyYCBhcmd1bWVudCBpbiBgTWF0Y2hBbmRFeHBsYWlu
KClgOgorCitgYGAKK2NsYXNzIERpdmlzaWJsZUJ5N01hdGNoZXIgOiBwdWJsaWMgTWF0Y2hlcklu
dGVyZmFjZTxpbnQ+IHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxhaW4o
aW50IG4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHRMaXN0ZW5l
ciogbGlzdGVuZXIpIGNvbnN0IHsKKyAgICBjb25zdCBpbnQgcmVtYWluZGVyID0gbiAlIDc7Cisg
ICAgaWYgKHJlbWFpbmRlciAhPSAwKSB7CisgICAgICAqbGlzdGVuZXIgPDwgInRoZSByZW1haW5k
ZXIgaXMgIiA8PCByZW1haW5kZXI7CisgICAgfQorICAgIHJldHVybiByZW1haW5kZXIgPT0gMDsK
KyAgfQorICAuLi4KK307CitgYGAKKworVGhlbiwgYEVYUEVDVF9USEFUKHgsIERpdmlzaWJsZUJ5
NygpKTtgIG1heSBnZW5lcmFsIGEgbWVzc2FnZSBsaWtlIHRoaXM6CitgYGAKK1ZhbHVlIG9mOiB4
CitFeHBlY3RlZDogaXMgZGl2aXNpYmxlIGJ5IDcKKyAgQWN0dWFsOiAyMyAodGhlIHJlbWFpbmRl
ciBpcyAyKQorYGBgCisKKyMjIFdyaXRpbmcgTmV3IFBvbHltb3JwaGljIE1hdGNoZXJzICMjCisK
K1lvdSd2ZSBsZWFybmVkIGhvdyB0byB3cml0ZSB5b3VyIG93biBtYXRjaGVycyBpbiB0aGUgcHJl
dmlvdXMKK3JlY2lwZS4gSnVzdCBvbmUgcHJvYmxlbTogYSBtYXRjaGVyIGNyZWF0ZWQgdXNpbmcg
YE1ha2VNYXRjaGVyKClgIG9ubHkKK3dvcmtzIGZvciBvbmUgcGFydGljdWxhciB0eXBlIG9mIGFy
Z3VtZW50cy4gSWYgeW91IHdhbnQgYQorX3BvbHltb3JwaGljXyBtYXRjaGVyIHRoYXQgd29ya3Mg
d2l0aCBhcmd1bWVudHMgb2Ygc2V2ZXJhbCB0eXBlcyAoZm9yCitpbnN0YW5jZSwgYEVxKHgpYCBj
YW4gYmUgdXNlZCB0byBtYXRjaCBhIGB2YWx1ZWAgYXMgbG9uZyBhcyBgdmFsdWVgID09CitgeGAg
Y29tcGlsZXMgLS0gYHZhbHVlYCBhbmQgYHhgIGRvbid0IGhhdmUgdG8gc2hhcmUgdGhlIHNhbWUg
dHlwZSksCit5b3UgY2FuIGxlYXJuIHRoZSB0cmljayBmcm9tIGAiZ21vY2svZ21vY2stbWF0Y2hl
cnMuaCJgIGJ1dCBpdCdzIGEgYml0CitpbnZvbHZlZC4KKworRm9ydHVuYXRlbHksIG1vc3Qgb2Yg
dGhlIHRpbWUgeW91IGNhbiBkZWZpbmUgYSBwb2x5bW9ycGhpYyBtYXRjaGVyCitlYXNpbHkgd2l0
aCB0aGUgaGVscCBvZiBgTWFrZVBvbHltb3JwaGljTWF0Y2hlcigpYC4gSGVyZSdzIGhvdyB5b3Ug
Y2FuCitkZWZpbmUgYE5vdE51bGwoKWAgYXMgYW4gZXhhbXBsZToKKworYGBgCit1c2luZyA6OnRl
c3Rpbmc6Ok1ha2VQb2x5bW9ycGhpY01hdGNoZXI7Cit1c2luZyA6OnRlc3Rpbmc6Ok1hdGNoUmVz
dWx0TGlzdGVuZXI7Cit1c2luZyA6OnRlc3Rpbmc6Ok5vdE51bGw7Cit1c2luZyA6OnRlc3Rpbmc6
OlBvbHltb3JwaGljTWF0Y2hlcjsKKworY2xhc3MgTm90TnVsbE1hdGNoZXIgeworIHB1YmxpYzoK
KyAgLy8gVG8gaW1wbGVtZW50IGEgcG9seW1vcnBoaWMgbWF0Y2hlciwgZmlyc3QgZGVmaW5lIGEg
Q09QWUFCTEUgY2xhc3MKKyAgLy8gdGhhdCBoYXMgdGhyZWUgbWVtYmVycyBNYXRjaEFuZEV4cGxh
aW4oKSwgRGVzY3JpYmVUbygpLCBhbmQKKyAgLy8gRGVzY3JpYmVOZWdhdGlvblRvKCksIGxpa2Ug
dGhlIGZvbGxvd2luZy4KKworICAvLyBJbiB0aGlzIGV4YW1wbGUsIHdlIHdhbnQgdG8gdXNlIE5v
dE51bGwoKSB3aXRoIGFueSBwb2ludGVyLCBzbworICAvLyBNYXRjaEFuZEV4cGxhaW4oKSBhY2Nl
cHRzIGEgcG9pbnRlciBvZiBhbnkgdHlwZSBhcyBpdHMgZmlyc3QgYXJndW1lbnQuCisgIC8vIElu
IGdlbmVyYWwsIHlvdSBjYW4gZGVmaW5lIE1hdGNoQW5kRXhwbGFpbigpIGFzIGFuIG9yZGluYXJ5
IG1ldGhvZCBvcgorICAvLyBhIG1ldGhvZCB0ZW1wbGF0ZSwgb3IgZXZlbiBvdmVybG9hZCBpdC4K
KyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIGJvb2wgTWF0Y2hBbmRFeHBsYWluKFQqIHAsCisg
ICAgICAgICAgICAgICAgICAgICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIC8qIGxpc3RlbmVyICov
KSBjb25zdCB7CisgICAgcmV0dXJuIHAgIT0gTlVMTDsKKyAgfQorCisgIC8vIERlc2NyaWJlcyB0
aGUgcHJvcGVydHkgb2YgYSB2YWx1ZSBtYXRjaGluZyB0aGlzIG1hdGNoZXIuCisgIHZvaWQgRGVz
Y3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsgKm9zIDw8ICJpcyBub3QgTlVMTCI7
IH0KKworICAvLyBEZXNjcmliZXMgdGhlIHByb3BlcnR5IG9mIGEgdmFsdWUgTk9UIG1hdGNoaW5n
IHRoaXMgbWF0Y2hlci4KKyAgdm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0q
IG9zKSBjb25zdCB7ICpvcyA8PCAiaXMgTlVMTCI7IH0KK307CisKKy8vIFRvIGNvbnN0cnVjdCBh
IHBvbHltb3JwaGljIG1hdGNoZXIsIHBhc3MgYW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzCisvLyB0
byBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKCkuICBOb3RlIHRoZSByZXR1cm4gdHlwZS4KK2lubGlu
ZSBQb2x5bW9ycGhpY01hdGNoZXI8Tm90TnVsbE1hdGNoZXI+IE5vdE51bGwoKSB7CisgIHJldHVy
biBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKE5vdE51bGxNYXRjaGVyKCkpOworfQorLi4uCisKKyAg
RVhQRUNUX0NBTEwoZm9vLCBCYXIoTm90TnVsbCgpKSk7ICAvLyBUaGUgYXJndW1lbnQgbXVzdCBi
ZSBhIG5vbi1OVUxMIHBvaW50ZXIuCitgYGAKKworKipOb3RlOioqIFlvdXIgcG9seW1vcnBoaWMg
bWF0Y2hlciBjbGFzcyBkb2VzICoqbm90KiogbmVlZCB0byBpbmhlcml0IGZyb20KK2BNYXRjaGVy
SW50ZXJmYWNlYCBvciBhbnkgb3RoZXIgY2xhc3MsIGFuZCBpdHMgbWV0aG9kcyBkbyAqKm5vdCoq
IG5lZWQKK3RvIGJlIHZpcnR1YWwuCisKK0xpa2UgaW4gYSBtb25vbW9ycGhpYyBtYXRjaGVyLCB5
b3UgbWF5IGV4cGxhaW4gdGhlIG1hdGNoIHJlc3VsdCBieQorc3RyZWFtaW5nIGFkZGl0aW9uYWwg
aW5mb3JtYXRpb24gdG8gdGhlIGBsaXN0ZW5lcmAgYXJndW1lbnQgaW4KK2BNYXRjaEFuZEV4cGxh
aW4oKWAuCisKKyMjIFdyaXRpbmcgTmV3IENhcmRpbmFsaXRpZXMgIyMKKworQSBjYXJkaW5hbGl0
eSBpcyB1c2VkIGluIGBUaW1lcygpYCB0byB0ZWxsIEdvb2dsZSBNb2NrIGhvdyBtYW55IHRpbWVz
Cit5b3UgZXhwZWN0IGEgY2FsbCB0byBvY2N1ci4gSXQgZG9lc24ndCBoYXZlIHRvIGJlIGV4YWN0
LiBGb3IgZXhhbXBsZSwKK3lvdSBjYW4gc2F5IGBBdExlYXN0KDUpYCBvciBgQmV0d2VlbigyLCA0
KWAuCisKK0lmIHRoZSBidWlsdC1pbiBzZXQgb2YgY2FyZGluYWxpdGllcyBkb2Vzbid0IHN1aXQg
eW91LCB5b3UgYXJlIGZyZWUgdG8KK2RlZmluZSB5b3VyIG93biBieSBpbXBsZW1lbnRpbmcgdGhl
IGZvbGxvd2luZyBpbnRlcmZhY2UgKGluIG5hbWVzcGFjZQorYHRlc3RpbmdgKToKKworYGBgCitj
bGFzcyBDYXJkaW5hbGl0eUludGVyZmFjZSB7CisgcHVibGljOgorICB2aXJ0dWFsIH5DYXJkaW5h
bGl0eUludGVyZmFjZSgpOworCisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgY2FsbF9jb3VudCBjYWxs
cyB3aWxsIHNhdGlzZnkgdGhpcyBjYXJkaW5hbGl0eS4KKyAgdmlydHVhbCBib29sIElzU2F0aXNm
aWVkQnlDYWxsQ291bnQoaW50IGNhbGxfY291bnQpIGNvbnN0ID0gMDsKKworICAvLyBSZXR1cm5z
IHRydWUgaWZmIGNhbGxfY291bnQgY2FsbHMgd2lsbCBzYXR1cmF0ZSB0aGlzIGNhcmRpbmFsaXR5
LgorICB2aXJ0dWFsIGJvb2wgSXNTYXR1cmF0ZWRCeUNhbGxDb3VudChpbnQgY2FsbF9jb3VudCkg
Y29uc3QgPSAwOworCisgIC8vIERlc2NyaWJlcyBzZWxmIHRvIGFuIG9zdHJlYW0uCisgIHZpcnR1
YWwgdm9pZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgPSAwOworfTsKK2Bg
YAorCitGb3IgZXhhbXBsZSwgdG8gc3BlY2lmeSB0aGF0IGEgY2FsbCBtdXN0IG9jY3VyIGV2ZW4g
bnVtYmVyIG9mIHRpbWVzLAoreW91IGNhbiB3cml0ZQorCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6
Q2FyZGluYWxpdHk7Cit1c2luZyA6OnRlc3Rpbmc6OkNhcmRpbmFsaXR5SW50ZXJmYWNlOwordXNp
bmcgOjp0ZXN0aW5nOjpNYWtlQ2FyZGluYWxpdHk7CisKK2NsYXNzIEV2ZW5OdW1iZXJDYXJkaW5h
bGl0eSA6IHB1YmxpYyBDYXJkaW5hbGl0eUludGVyZmFjZSB7CisgcHVibGljOgorICB2aXJ0dWFs
IGJvb2wgSXNTYXRpc2ZpZWRCeUNhbGxDb3VudChpbnQgY2FsbF9jb3VudCkgY29uc3QgeworICAg
IHJldHVybiAoY2FsbF9jb3VudCAlIDIpID09IDA7CisgIH0KKworICB2aXJ0dWFsIGJvb2wgSXNT
YXR1cmF0ZWRCeUNhbGxDb3VudChpbnQgY2FsbF9jb3VudCkgY29uc3QgeworICAgIHJldHVybiBm
YWxzZTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFtKiBv
cykgY29uc3QgeworICAgICpvcyA8PCAiY2FsbGVkIGV2ZW4gbnVtYmVyIG9mIHRpbWVzIjsKKyAg
fQorfTsKKworQ2FyZGluYWxpdHkgRXZlbk51bWJlcigpIHsKKyAgcmV0dXJuIE1ha2VDYXJkaW5h
bGl0eShuZXcgRXZlbk51bWJlckNhcmRpbmFsaXR5KTsKK30KKy4uLgorCisgIEVYUEVDVF9DQUxM
KGZvbywgQmFyKDMpKQorICAgICAgLlRpbWVzKEV2ZW5OdW1iZXIoKSk7CitgYGAKKworIyMgV3Jp
dGluZyBOZXcgQWN0aW9ucyBRdWlja2x5ICMjCisKK0lmIHRoZSBidWlsdC1pbiBhY3Rpb25zIGRv
bid0IHdvcmsgZm9yIHlvdSwgYW5kIHlvdSBmaW5kIGl0CitpbmNvbnZlbmllbnQgdG8gdXNlIGBJ
bnZva2UoKWAsIHlvdSBjYW4gdXNlIGEgbWFjcm8gZnJvbSB0aGUgYEFDVElPTipgCitmYW1pbHkg
dG8gcXVpY2tseSBkZWZpbmUgYSBuZXcgYWN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgaW4geW91ciBj
b2RlIGFzCitpZiBpdCdzIGEgYnVpbHQtaW4gYWN0aW9uLgorCitCeSB3cml0aW5nCitgYGAKK0FD
VElPTihuYW1lKSB7IHN0YXRlbWVudHM7IH0KK2BgYAoraW4gYSBuYW1lc3BhY2Ugc2NvcGUgKGku
ZS4gbm90IGluc2lkZSBhIGNsYXNzIG9yIGZ1bmN0aW9uKSwgeW91IHdpbGwKK2RlZmluZSBhbiBh
Y3Rpb24gd2l0aCB0aGUgZ2l2ZW4gbmFtZSB0aGF0IGV4ZWN1dGVzIHRoZSBzdGF0ZW1lbnRzLgor
VGhlIHZhbHVlIHJldHVybmVkIGJ5IGBzdGF0ZW1lbnRzYCB3aWxsIGJlIHVzZWQgYXMgdGhlIHJl
dHVybiB2YWx1ZSBvZgordGhlIGFjdGlvbi4gIEluc2lkZSB0aGUgc3RhdGVtZW50cywgeW91IGNh
biByZWZlciB0byB0aGUgSy10aAorKDAtYmFzZWQpIGFyZ3VtZW50IG9mIHRoZSBtb2NrIGZ1bmN0
aW9uIGFzIGBhcmdLYC4gIEZvciBleGFtcGxlOgorYGBgCitBQ1RJT04oSW5jcmVtZW50QXJnMSkg
eyByZXR1cm4gKysoKmFyZzEpOyB9CitgYGAKK2FsbG93cyB5b3UgdG8gd3JpdGUKK2BgYAorLi4u
IFdpbGxPbmNlKEluY3JlbWVudEFyZzEoKSk7CitgYGAKKworTm90ZSB0aGF0IHlvdSBkb24ndCBu
ZWVkIHRvIHNwZWNpZnkgdGhlIHR5cGVzIG9mIHRoZSBtb2NrIGZ1bmN0aW9uCithcmd1bWVudHMu
ICBSZXN0IGFzc3VyZWQgdGhhdCB5b3VyIGNvZGUgaXMgdHlwZS1zYWZlIHRob3VnaDoKK3lvdSds
bCBnZXQgYSBjb21waWxlciBlcnJvciBpZiBgKmFyZzFgIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgYCsr
YAorb3BlcmF0b3IsIG9yIGlmIHRoZSB0eXBlIG9mIGArKygqYXJnMSlgIGlzbid0IGNvbXBhdGli
bGUgd2l0aCB0aGUgbW9jaworZnVuY3Rpb24ncyByZXR1cm4gdHlwZS4KKworQW5vdGhlciBleGFt
cGxlOgorYGBgCitBQ1RJT04oRm9vKSB7CisgICgqYXJnMikoNSk7CisgIEJsYWgoKTsKKyAgKmFy
ZzEgPSAwOworICByZXR1cm4gYXJnMDsKK30KK2BgYAorZGVmaW5lcyBhbiBhY3Rpb24gYEZvbygp
YCB0aGF0IGludm9rZXMgYXJndW1lbnQgIzIgKGEgZnVuY3Rpb24gcG9pbnRlcikKK3dpdGggNSwg
Y2FsbHMgZnVuY3Rpb24gYEJsYWgoKWAsIHNldHMgdGhlIHZhbHVlIHBvaW50ZWQgdG8gYnkgYXJn
dW1lbnQKKyMxIHRvIDAsIGFuZCByZXR1cm5zIGFyZ3VtZW50ICMwLgorCitGb3IgbW9yZSBjb252
ZW5pZW5jZSBhbmQgZmxleGliaWxpdHksIHlvdSBjYW4gYWxzbyB1c2UgdGhlIGZvbGxvd2luZwor
cHJlLWRlZmluZWQgc3ltYm9scyBpbiB0aGUgYm9keSBvZiBgQUNUSU9OYDoKKworfCBgYXJnS190
eXBlYCB8IFRoZSB0eXBlIG9mIHRoZSBLLXRoICgwLWJhc2VkKSBhcmd1bWVudCBvZiB0aGUgbW9j
ayBmdW5jdGlvbiB8Cit8Oi0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKK3wgYGFyZ3NgICAgICAgfCBBbGwg
YXJndW1lbnRzIG9mIHRoZSBtb2NrIGZ1bmN0aW9uIGFzIGEgdHVwbGUgICAgICAgICAgICAgICAg
fAorfCBgYXJnc190eXBlYCB8IFRoZSB0eXBlIG9mIGFsbCBhcmd1bWVudHMgb2YgdGhlIG1vY2sg
ZnVuY3Rpb24gYXMgYSB0dXBsZSAgICB8Cit8IGByZXR1cm5fdHlwZWAgfCBUaGUgcmV0dXJuIHR5
cGUgb2YgdGhlIG1vY2sgZnVuY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgZnVu
Y3Rpb25fdHlwZWAgfCBUaGUgdHlwZSBvZiB0aGUgbW9jayBmdW5jdGlvbiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfAorCitGb3IgZXhhbXBsZSwgd2hlbiB1c2luZyBhbiBgQUNUSU9O
YCBhcyBhIHN0dWIgYWN0aW9uIGZvciBtb2NrIGZ1bmN0aW9uOgorYGBgCitpbnQgRG9Tb21ldGhp
bmcoYm9vbCBmbGFnLCBpbnQqIHB0cik7CitgYGAKK3dlIGhhdmU6Cit8ICoqUHJlLWRlZmluZWQg
U3ltYm9sKiogfCAqKklzIEJvdW5kIFRvKiogfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6
LS0tLS0tLS0tLS0tLS0tLXwKK3wgYGFyZzBgICAgICAgICAgICAgICAgICB8IHRoZSB2YWx1ZSBv
ZiBgZmxhZ2AgfAorfCBgYXJnMF90eXBlYCAgICAgICAgICAgIHwgdGhlIHR5cGUgYGJvb2xgIHwK
K3wgYGFyZzFgICAgICAgICAgICAgICAgICB8IHRoZSB2YWx1ZSBvZiBgcHRyYCB8Cit8IGBhcmcx
X3R5cGVgICAgICAgICAgICAgfCB0aGUgdHlwZSBgaW50KmAgfAorfCBgYXJnc2AgICAgICAgICAg
ICAgICAgIHwgdGhlIHR1cGxlIGAoZmxhZywgcHRyKWAgfAorfCBgYXJnc190eXBlYCAgICAgICAg
ICAgIHwgdGhlIHR5cGUgYHN0ZDo6dHIxOjp0dXBsZTxib29sLCBpbnQqPmAgfAorfCBgcmV0dXJu
X3R5cGVgICAgICAgICAgIHwgdGhlIHR5cGUgYGludGAgIHwKK3wgYGZ1bmN0aW9uX3R5cGVgICAg
ICAgICB8IHRoZSB0eXBlIGBpbnQoYm9vbCwgaW50KilgIHwKKworIyMgV3JpdGluZyBOZXcgUGFy
YW1ldGVyaXplZCBBY3Rpb25zIFF1aWNrbHkgIyMKKworU29tZXRpbWVzIHlvdSdsbCB3YW50IHRv
IHBhcmFtZXRlcml6ZSBhbiBhY3Rpb24geW91IGRlZmluZS4gIEZvciB0aGF0Cit3ZSBoYXZlIGFu
b3RoZXIgbWFjcm8KK2BgYAorQUNUSU9OX1AobmFtZSwgcGFyYW0pIHsgc3RhdGVtZW50czsgfQor
YGBgCisKK0ZvciBleGFtcGxlLAorYGBgCitBQ1RJT05fUChBZGQsIG4pIHsgcmV0dXJuIGFyZzAg
KyBuOyB9CitgYGAKK3dpbGwgYWxsb3cgeW91IHRvIHdyaXRlCitgYGAKKy8vIFJldHVybnMgYXJn
dW1lbnQgIzAgKyA1LgorLi4uIFdpbGxPbmNlKEFkZCg1KSk7CitgYGAKKworRm9yIGNvbnZlbmll
bmNlLCB3ZSB1c2UgdGhlIHRlcm0gX2FyZ3VtZW50c18gZm9yIHRoZSB2YWx1ZXMgdXNlZCB0bwor
aW52b2tlIHRoZSBtb2NrIGZ1bmN0aW9uLCBhbmQgdGhlIHRlcm0gX3BhcmFtZXRlcnNfIGZvciB0
aGUgdmFsdWVzCit1c2VkIHRvIGluc3RhbnRpYXRlIGFuIGFjdGlvbi4KKworTm90ZSB0aGF0IHlv
dSBkb24ndCBuZWVkIHRvIHByb3ZpZGUgdGhlIHR5cGUgb2YgdGhlIHBhcmFtZXRlciBlaXRoZXIu
CitTdXBwb3NlIHRoZSBwYXJhbWV0ZXIgaXMgbmFtZWQgYHBhcmFtYCwgeW91IGNhbiBhbHNvIHVz
ZSB0aGUKK0dvb2dsZS1Nb2NrLWRlZmluZWQgc3ltYm9sIGBwYXJhbV90eXBlYCB0byByZWZlciB0
byB0aGUgdHlwZSBvZiB0aGUKK3BhcmFtZXRlciBhcyBpbmZlcnJlZCBieSB0aGUgY29tcGlsZXIu
ICBGb3IgZXhhbXBsZSwgaW4gdGhlIGJvZHkgb2YKK2BBQ1RJT05fUChBZGQsIG4pYCBhYm92ZSwg
eW91IGNhbiB3cml0ZSBgbl90eXBlYCBmb3IgdGhlIHR5cGUgb2YgYG5gLgorCitHb29nbGUgTW9j
ayBhbHNvIHByb3ZpZGVzIGBBQ1RJT05fUDJgLCBgQUNUSU9OX1AzYCwgYW5kIGV0YyB0byBzdXBw
b3J0CittdWx0aS1wYXJhbWV0ZXIgYWN0aW9ucy4gIEZvciBleGFtcGxlLAorYGBgCitBQ1RJT05f
UDIoUmV0dXJuRGlzdGFuY2VUbywgeCwgeSkgeworICBkb3VibGUgZHggPSBhcmcwIC0geDsKKyAg
ZG91YmxlIGR5ID0gYXJnMSAtIHk7CisgIHJldHVybiBzcXJ0KGR4KmR4ICsgZHkqZHkpOworfQor
YGBgCitsZXRzIHlvdSB3cml0ZQorYGBgCisuLi4gV2lsbE9uY2UoUmV0dXJuRGlzdGFuY2VUbyg1
LjAsIDI2LjUpKTsKK2BgYAorCitZb3UgY2FuIHZpZXcgYEFDVElPTmAgYXMgYSBkZWdlbmVyYXRl
ZCBwYXJhbWV0ZXJpemVkIGFjdGlvbiB3aGVyZSB0aGUKK251bWJlciBvZiBwYXJhbWV0ZXJzIGlz
IDAuCisKK1lvdSBjYW4gYWxzbyBlYXNpbHkgZGVmaW5lIGFjdGlvbnMgb3ZlcmxvYWRlZCBvbiB0
aGUgbnVtYmVyIG9mIHBhcmFtZXRlcnM6CitgYGAKK0FDVElPTl9QKFBsdXMsIGEpIHsgLi4uIH0K
K0FDVElPTl9QMihQbHVzLCBhLCBiKSB7IC4uLiB9CitgYGAKKworIyMgUmVzdHJpY3RpbmcgdGhl
IFR5cGUgb2YgYW4gQXJndW1lbnQgb3IgUGFyYW1ldGVyIGluIGFuIEFDVElPTiAjIworCitGb3Ig
bWF4aW11bSBicmV2aXR5IGFuZCByZXVzYWJpbGl0eSwgdGhlIGBBQ1RJT04qYCBtYWNyb3MgZG9u
J3QgYXNrCit5b3UgdG8gcHJvdmlkZSB0aGUgdHlwZXMgb2YgdGhlIG1vY2sgZnVuY3Rpb24gYXJn
dW1lbnRzIGFuZCB0aGUgYWN0aW9uCitwYXJhbWV0ZXJzLiAgSW5zdGVhZCwgd2UgbGV0IHRoZSBj
b21waWxlciBpbmZlciB0aGUgdHlwZXMgZm9yIHVzLgorCitTb21ldGltZXMsIGhvd2V2ZXIsIHdl
IG1heSB3YW50IHRvIGJlIG1vcmUgZXhwbGljaXQgYWJvdXQgdGhlIHR5cGVzLgorVGhlcmUgYXJl
IHNldmVyYWwgdHJpY2tzIHRvIGRvIHRoYXQuICBGb3IgZXhhbXBsZToKK2BgYAorQUNUSU9OKEZv
bykgeworICAvLyBNYWtlcyBzdXJlIGFyZzAgY2FuIGJlIGNvbnZlcnRlZCB0byBpbnQuCisgIGlu
dCBuID0gYXJnMDsKKyAgLi4uIHVzZSBuIGluc3RlYWQgb2YgYXJnMCBoZXJlIC4uLgorfQorCitB
Q1RJT05fUChCYXIsIHBhcmFtKSB7CisgIC8vIE1ha2VzIHN1cmUgdGhlIHR5cGUgb2YgYXJnMSBp
cyBjb25zdCBjaGFyKi4KKyAgOjp0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE8Y29uc3QgY2hh
ciosIGFyZzFfdHlwZT4oKTsKKworICAvLyBNYWtlcyBzdXJlIHBhcmFtIGNhbiBiZSBjb252ZXJ0
ZWQgdG8gYm9vbC4KKyAgYm9vbCBmbGFnID0gcGFyYW07Cit9CitgYGAKK3doZXJlIGBTdGF0aWNB
c3NlcnRUeXBlRXFgIGlzIGEgY29tcGlsZS10aW1lIGFzc2VydGlvbiBpbiBHb29nbGUgVGVzdAor
dGhhdCB2ZXJpZmllcyB0d28gdHlwZXMgYXJlIHRoZSBzYW1lLgorCisjIyBXcml0aW5nIE5ldyBB
Y3Rpb24gVGVtcGxhdGVzIFF1aWNrbHkgIyMKKworU29tZXRpbWVzIHlvdSB3YW50IHRvIGdpdmUg
YW4gYWN0aW9uIGV4cGxpY2l0IHRlbXBsYXRlIHBhcmFtZXRlcnMgdGhhdAorY2Fubm90IGJlIGlu
ZmVycmVkIGZyb20gaXRzIHZhbHVlIHBhcmFtZXRlcnMuICBgQUNUSU9OX1RFTVBMQVRFKClgCitz
dXBwb3J0cyB0aGF0IGFuZCBjYW4gYmUgdmlld2VkIGFzIGFuIGV4dGVuc2lvbiB0byBgQUNUSU9O
KClgIGFuZAorYEFDVElPTl9QKigpYC4KKworVGhlIHN5bnRheDoKK2BgYAorQUNUSU9OX1RFTVBM
QVRFKEFjdGlvbk5hbWUsCisgICAgICAgICAgICAgICAgSEFTX21fVEVNUExBVEVfUEFSQU1TKGtp
bmQxLCBuYW1lMSwgLi4uLCBraW5kX20sIG5hbWVfbSksCisgICAgICAgICAgICAgICAgQU5EX25f
VkFMVUVfUEFSQU1TKHAxLCAuLi4sIHBfbikpIHsgc3RhdGVtZW50czsgfQorYGBgCisKK2RlZmlu
ZXMgYW4gYWN0aW9uIHRlbXBsYXRlIHRoYXQgdGFrZXMgX21fIGV4cGxpY2l0IHRlbXBsYXRlIHBh
cmFtZXRlcnMKK2FuZCBfbl8gdmFsdWUgcGFyYW1ldGVycywgd2hlcmUgX21fIGlzIGJldHdlZW4g
MSBhbmQgMTAsIGFuZCBfbl8gaXMKK2JldHdlZW4gMCBhbmQgMTAuICBgbmFtZV9pYCBpcyB0aGUg
bmFtZSBvZiB0aGUgaS10aCB0ZW1wbGF0ZQorcGFyYW1ldGVyLCBhbmQgYGtpbmRfaWAgc3BlY2lm
aWVzIHdoZXRoZXIgaXQncyBhIGB0eXBlbmFtZWAsIGFuCitpbnRlZ3JhbCBjb25zdGFudCwgb3Ig
YSB0ZW1wbGF0ZS4gIGBwX2lgIGlzIHRoZSBuYW1lIG9mIHRoZSBpLXRoIHZhbHVlCitwYXJhbWV0
ZXIuCisKK0V4YW1wbGU6CitgYGAKKy8vIER1cGxpY2F0ZUFyZzxrLCBUPihvdXRwdXQpIGNvbnZl
cnRzIHRoZSBrLXRoIGFyZ3VtZW50IG9mIHRoZSBtb2NrCisvLyBmdW5jdGlvbiB0byB0eXBlIFQg
YW5kIGNvcGllcyBpdCB0byAqb3V0cHV0LgorQUNUSU9OX1RFTVBMQVRFKER1cGxpY2F0ZUFyZywK
KyAgICAgICAgICAgICAgICAvLyBOb3RlIHRoZSBjb21tYSBiZXR3ZWVuIGludCBhbmQgazoKKyAg
ICAgICAgICAgICAgICBIQVNfMl9URU1QTEFURV9QQVJBTVMoaW50LCBrLCB0eXBlbmFtZSwgVCks
CisgICAgICAgICAgICAgICAgQU5EXzFfVkFMVUVfUEFSQU1TKG91dHB1dCkpIHsKKyAgKm91dHB1
dCA9IFQoc3RkOjp0cjE6OmdldDxrPihhcmdzKSk7Cit9CitgYGAKKworVG8gY3JlYXRlIGFuIGlu
c3RhbmNlIG9mIGFuIGFjdGlvbiB0ZW1wbGF0ZSwgd3JpdGU6CitgYGAKKyAgQWN0aW9uTmFtZTx0
MSwgLi4uLCB0X20+KHYxLCAuLi4sIHZfbikKK2BgYAord2hlcmUgdGhlIGB0YHMgYXJlIHRoZSB0
ZW1wbGF0ZSBhcmd1bWVudHMgYW5kIHRoZQorYHZgcyBhcmUgdGhlIHZhbHVlIGFyZ3VtZW50cy4g
IFRoZSB2YWx1ZSBhcmd1bWVudAordHlwZXMgYXJlIGluZmVycmVkIGJ5IHRoZSBjb21waWxlci4g
IEZvciBleGFtcGxlOgorYGBgCit1c2luZyA6OnRlc3Rpbmc6Ol87CisuLi4KKyAgaW50IG47Cisg
IEVYUEVDVF9DQUxMKG1vY2ssIEZvbyhfLCBfKSkKKyAgICAgIC5XaWxsT25jZShEdXBsaWNhdGVB
cmc8MSwgdW5zaWduZWQgY2hhcj4oJm4pKTsKK2BgYAorCitJZiB5b3Ugd2FudCB0byBleHBsaWNp
dGx5IHNwZWNpZnkgdGhlIHZhbHVlIGFyZ3VtZW50IHR5cGVzLCB5b3UgY2FuCitwcm92aWRlIGFk
ZGl0aW9uYWwgdGVtcGxhdGUgYXJndW1lbnRzOgorYGBgCisgIEFjdGlvbk5hbWU8dDEsIC4uLiwg
dF9tLCB1MSwgLi4uLCB1X2s+KHYxLCAuLi4sIHZfbikKK2BgYAord2hlcmUgYHVfaWAgaXMgdGhl
IGRlc2lyZWQgdHlwZSBvZiBgdl9pYC4KKworYEFDVElPTl9URU1QTEFURWAgYW5kIGBBQ1RJT05g
L2BBQ1RJT05fUCpgIGNhbiBiZSBvdmVybG9hZGVkIG9uIHRoZQorbnVtYmVyIG9mIHZhbHVlIHBh
cmFtZXRlcnMsIGJ1dCBub3Qgb24gdGhlIG51bWJlciBvZiB0ZW1wbGF0ZQorcGFyYW1ldGVycy4g
IFdpdGhvdXQgdGhlIHJlc3RyaWN0aW9uLCB0aGUgbWVhbmluZyBvZiB0aGUgZm9sbG93aW5nIGlz
Cit1bmNsZWFyOgorCitgYGAKKyAgT3ZlcmxvYWRlZEFjdGlvbjxpbnQsIGJvb2w+KHgpOworYGBg
CisKK0FyZSB3ZSB1c2luZyBhIHNpbmdsZS10ZW1wbGF0ZS1wYXJhbWV0ZXIgYWN0aW9uIHdoZXJl
IGBib29sYCByZWZlcnMgdG8KK3RoZSB0eXBlIG9mIGB4YCwgb3IgYSB0d28tdGVtcGxhdGUtcGFy
YW1ldGVyIGFjdGlvbiB3aGVyZSB0aGUgY29tcGlsZXIKK2lzIGFza2VkIHRvIGluZmVyIHRoZSB0
eXBlIG9mIGB4YD8KKworIyMgVXNpbmcgdGhlIEFDVElPTiBPYmplY3QncyBUeXBlICMjCisKK0lm
IHlvdSBhcmUgd3JpdGluZyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBgQUNUSU9OYCBvYmpl
Y3QsIHlvdSdsbAorbmVlZCB0byBrbm93IGl0cyB0eXBlLiAgVGhlIHR5cGUgZGVwZW5kcyBvbiB0
aGUgbWFjcm8gdXNlZCB0byBkZWZpbmUKK3RoZSBhY3Rpb24gYW5kIHRoZSBwYXJhbWV0ZXIgdHlw
ZXMuICBUaGUgcnVsZSBpcyByZWxhdGl2ZWx5IHNpbXBsZToKK3wgKipHaXZlbiBEZWZpbml0aW9u
KiogfCAqKkV4cHJlc3Npb24qKiB8ICoqSGFzIFR5cGUqKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0t
LS0tLXw6LS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAorfCBgQUNUSU9OKEZvbylgICAg
ICAgICB8IGBGb28oKWAgICAgICAgIHwgYEZvb0FjdGlvbmAgIHwKK3wgYEFDVElPTl9URU1QTEFU
RShGb28sIEhBU19tX1RFTVBMQVRFX1BBUkFNUyguLi4pLCBBTkRfMF9WQUxVRV9QQVJBTVMoKSlg
IHwJYEZvbzx0MSwgLi4uLCB0X20+KClgIHwgYEZvb0FjdGlvbjx0MSwgLi4uLCB0X20+YCB8Cit8
IGBBQ1RJT05fUChCYXIsIHBhcmFtKWAgfCBgQmFyKGludF92YWx1ZSlgIHwgYEJhckFjdGlvblA8
aW50PmAgfAorfCBgQUNUSU9OX1RFTVBMQVRFKEJhciwgSEFTX21fVEVNUExBVEVfUEFSQU1TKC4u
LiksIEFORF8xX1ZBTFVFX1BBUkFNUyhwMSkpYCB8IGBCYXI8dDEsIC4uLiwgdF9tPihpbnRfdmFs
dWUpYCB8IGBGb29BY3Rpb25QPHQxLCAuLi4sIHRfbSwgaW50PmAgfAorfCBgQUNUSU9OX1AyKEJh
eiwgcDEsIHAyKWAgfCBgQmF6KGJvb2xfdmFsdWUsIGludF92YWx1ZSlgIHwgYEJhekFjdGlvblAy
PGJvb2wsIGludD5gIHwKK3wgYEFDVElPTl9URU1QTEFURShCYXosIEhBU19tX1RFTVBMQVRFX1BB
UkFNUyguLi4pLCBBTkRfMl9WQUxVRV9QQVJBTVMocDEsIHAyKSlgIHwgYEJhejx0MSwgLi4uLCB0
X20+KGJvb2xfdmFsdWUsIGludF92YWx1ZSlgIHwgYEZvb0FjdGlvblAyPHQxLCAuLi4sIHRfbSwg
Ym9vbCwgaW50PmAgfAorfCAuLi4gICAgICAgICAgICAgICAgICB8IC4uLiAgICAgICAgICAgIHwg
Li4uICAgICAgICAgIHwKKworTm90ZSB0aGF0IHdlIGhhdmUgdG8gcGljayBkaWZmZXJlbnQgc3Vm
Zml4ZXMgKGBBY3Rpb25gLCBgQWN0aW9uUGAsCitgQWN0aW9uUDJgLCBhbmQgZXRjKSBmb3IgYWN0
aW9ucyB3aXRoIGRpZmZlcmVudCBudW1iZXJzIG9mIHZhbHVlCitwYXJhbWV0ZXJzLCBvciB0aGUg
YWN0aW9uIGRlZmluaXRpb25zIGNhbm5vdCBiZSBvdmVybG9hZGVkIG9uIHRoZQorbnVtYmVyIG9m
IHRoZW0uCisKKyMjIFdyaXRpbmcgTmV3IE1vbm9tb3JwaGljIEFjdGlvbnMgIyMKKworV2hpbGUg
dGhlIGBBQ1RJT04qYCBtYWNyb3MgYXJlIHZlcnkgY29udmVuaWVudCwgc29tZXRpbWVzIHRoZXkg
YXJlCitpbmFwcHJvcHJpYXRlLiAgRm9yIGV4YW1wbGUsIGRlc3BpdGUgdGhlIHRyaWNrcyBzaG93
biBpbiB0aGUgcHJldmlvdXMKK3JlY2lwZXMsIHRoZXkgZG9uJ3QgbGV0IHlvdSBkaXJlY3RseSBz
cGVjaWZ5IHRoZSB0eXBlcyBvZiB0aGUgbW9jaworZnVuY3Rpb24gYXJndW1lbnRzIGFuZCB0aGUg
YWN0aW9uIHBhcmFtZXRlcnMsIHdoaWNoIGluIGdlbmVyYWwgbGVhZHMKK3RvIHVub3B0aW1pemVk
IGNvbXBpbGVyIGVycm9yIG1lc3NhZ2VzIHRoYXQgY2FuIGJhZmZsZSB1bmZhbWlsaWFyCit1c2Vy
cy4gIFRoZXkgYWxzbyBkb24ndCBhbGxvdyBvdmVybG9hZGluZyBhY3Rpb25zIGJhc2VkIG9uIHBh
cmFtZXRlcgordHlwZXMgd2l0aG91dCBqdW1waW5nIHRocm91Z2ggc29tZSBob29wcy4KKworQW4g
YWx0ZXJuYXRpdmUgdG8gdGhlIGBBQ1RJT04qYCBtYWNyb3MgaXMgdG8gaW1wbGVtZW50CitgOjp0
ZXN0aW5nOjpBY3Rpb25JbnRlcmZhY2U8Rj5gLCB3aGVyZSBgRmAgaXMgdGhlIHR5cGUgb2YgdGhl
IG1vY2sKK2Z1bmN0aW9uIGluIHdoaWNoIHRoZSBhY3Rpb24gd2lsbCBiZSB1c2VkLiBGb3IgZXhh
bXBsZToKKworYGBgCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRj5jbGFzcyBBY3Rpb25JbnRlcmZhY2Ug
eworIHB1YmxpYzoKKyAgdmlydHVhbCB+QWN0aW9uSW50ZXJmYWNlKCk7CisKKyAgLy8gUGVyZm9y
bXMgdGhlIGFjdGlvbi4gIFJlc3VsdCBpcyB0aGUgcmV0dXJuIHR5cGUgb2YgZnVuY3Rpb24gdHlw
ZQorICAvLyBGLCBhbmQgQXJndW1lbnRUdXBsZSBpcyB0aGUgdHVwbGUgb2YgYXJndW1lbnRzIG9m
IEYuCisgIC8vCisgIC8vIEZvciBleGFtcGxlLCBpZiBGIGlzIGludChib29sLCBjb25zdCBzdHJp
bmcmKSwgdGhlbiBSZXN1bHQgd291bGQKKyAgLy8gYmUgaW50LCBhbmQgQXJndW1lbnRUdXBsZSB3
b3VsZCBiZSB0cjE6OnR1cGxlPGJvb2wsIGNvbnN0IHN0cmluZyY+LgorICB2aXJ0dWFsIFJlc3Vs
dCBQZXJmb3JtKGNvbnN0IEFyZ3VtZW50VHVwbGUmIGFyZ3MpID0gMDsKK307CisKK3VzaW5nIDo6
dGVzdGluZzo6XzsKK3VzaW5nIDo6dGVzdGluZzo6QWN0aW9uOwordXNpbmcgOjp0ZXN0aW5nOjpB
Y3Rpb25JbnRlcmZhY2U7Cit1c2luZyA6OnRlc3Rpbmc6Ok1ha2VBY3Rpb247CisKK3R5cGVkZWYg
aW50IEluY3JlbWVudE1ldGhvZChpbnQqKTsKKworY2xhc3MgSW5jcmVtZW50QXJndW1lbnRBY3Rp
b24gOiBwdWJsaWMgQWN0aW9uSW50ZXJmYWNlPEluY3JlbWVudE1ldGhvZD4geworIHB1YmxpYzoK
KyAgdmlydHVhbCBpbnQgUGVyZm9ybShjb25zdCB0cjE6OnR1cGxlPGludCo+JiBhcmdzKSB7Cisg
ICAgaW50KiBwID0gdHIxOjpnZXQ8MD4oYXJncyk7ICAvLyBHcmFicyB0aGUgZmlyc3QgYXJndW1l
bnQuCisgICAgcmV0dXJuICpwKys7CisgIH0KK307CisKK0FjdGlvbjxJbmNyZW1lbnRNZXRob2Q+
IEluY3JlbWVudEFyZ3VtZW50KCkgeworICByZXR1cm4gTWFrZUFjdGlvbihuZXcgSW5jcmVtZW50
QXJndW1lbnRBY3Rpb24pOworfQorLi4uCisKKyAgRVhQRUNUX0NBTEwoZm9vLCBCYXooXykpCisg
ICAgICAuV2lsbE9uY2UoSW5jcmVtZW50QXJndW1lbnQoKSk7CisKKyAgaW50IG4gPSA1OworICBm
b28uQmF6KCZuKTsgIC8vIFNob3VsZCByZXR1cm4gNSBhbmQgY2hhbmdlIG4gdG8gNi4KK2BgYAor
CisjIyBXcml0aW5nIE5ldyBQb2x5bW9ycGhpYyBBY3Rpb25zICMjCisKK1RoZSBwcmV2aW91cyBy
ZWNpcGUgc2hvd2VkIHlvdSBob3cgdG8gZGVmaW5lIHlvdXIgb3duIGFjdGlvbi4gVGhpcyBpcwor
YWxsIGdvb2QsIGV4Y2VwdCB0aGF0IHlvdSBuZWVkIHRvIGtub3cgdGhlIHR5cGUgb2YgdGhlIGZ1
bmN0aW9uIGluCit3aGljaCB0aGUgYWN0aW9uIHdpbGwgYmUgdXNlZC4gU29tZXRpbWVzIHRoYXQg
Y2FuIGJlIGEgcHJvYmxlbS4gRm9yCitleGFtcGxlLCBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIGFj
dGlvbiBpbiBmdW5jdGlvbnMgd2l0aCBfZGlmZmVyZW50XwordHlwZXMgKGUuZy4gbGlrZSBgUmV0
dXJuKClgIGFuZCBgU2V0QXJnUG9pbnRlZSgpYCkuCisKK0lmIGFuIGFjdGlvbiBjYW4gYmUgdXNl
ZCBpbiBzZXZlcmFsIHR5cGVzIG9mIG1vY2sgZnVuY3Rpb25zLCB3ZSBzYXkKK2l0J3MgX3BvbHlt
b3JwaGljXy4gVGhlIGBNYWtlUG9seW1vcnBoaWNBY3Rpb24oKWAgZnVuY3Rpb24gdGVtcGxhdGUK
K21ha2VzIGl0IGVhc3kgdG8gZGVmaW5lIHN1Y2ggYW4gYWN0aW9uOgorCitgYGAKK25hbWVzcGFj
ZSB0ZXN0aW5nIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEltcGw+CitQb2x5bW9ycGhpY0FjdGlv
bjxJbXBsPiBNYWtlUG9seW1vcnBoaWNBY3Rpb24oY29uc3QgSW1wbCYgaW1wbCk7CisKK30gIC8v
IG5hbWVzcGFjZSB0ZXN0aW5nCitgYGAKKworQXMgYW4gZXhhbXBsZSwgbGV0J3MgZGVmaW5lIGFu
IGFjdGlvbiB0aGF0IHJldHVybnMgdGhlIHNlY29uZCBhcmd1bWVudAoraW4gdGhlIG1vY2sgZnVu
Y3Rpb24ncyBhcmd1bWVudCBsaXN0LiBUaGUgZmlyc3Qgc3RlcCBpcyB0byBkZWZpbmUgYW4KK2lt
cGxlbWVudGF0aW9uIGNsYXNzOgorCitgYGAKK2NsYXNzIFJldHVyblNlY29uZEFyZ3VtZW50QWN0
aW9uIHsKKyBwdWJsaWM6CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQsIHR5cGVuYW1lIEFy
Z3VtZW50VHVwbGU+CisgIFJlc3VsdCBQZXJmb3JtKGNvbnN0IEFyZ3VtZW50VHVwbGUmIGFyZ3Mp
IGNvbnN0IHsKKyAgICAvLyBUbyBnZXQgdGhlIGktdGggKDAtYmFzZWQpIGFyZ3VtZW50LCB1c2Ug
dHIxOjpnZXQ8aT4oYXJncykuCisgICAgcmV0dXJuIHRyMTo6Z2V0PDE+KGFyZ3MpOworICB9Cit9
OworYGBgCisKK1RoaXMgaW1wbGVtZW50YXRpb24gY2xhc3MgZG9lcyBfbm90XyBuZWVkIHRvIGlu
aGVyaXQgZnJvbSBhbnkKK3BhcnRpY3VsYXIgY2xhc3MuIFdoYXQgbWF0dGVycyBpcyB0aGF0IGl0
IG11c3QgaGF2ZSBhIGBQZXJmb3JtKClgCittZXRob2QgdGVtcGxhdGUuIFRoaXMgbWV0aG9kIHRl
bXBsYXRlIHRha2VzIHRoZSBtb2NrIGZ1bmN0aW9uJ3MKK2FyZ3VtZW50cyBhcyBhIHR1cGxlIGlu
IGEgKipzaW5nbGUqKiBhcmd1bWVudCwgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBvZgordGhlIGFj
dGlvbi4gSXQgY2FuIGJlIGVpdGhlciBgY29uc3RgIG9yIG5vdCwgYnV0IG11c3QgYmUgaW52b2th
YmxlCit3aXRoIGV4YWN0bHkgb25lIHRlbXBsYXRlIGFyZ3VtZW50LCB3aGljaCBpcyB0aGUgcmVz
dWx0IHR5cGUuIEluIG90aGVyCit3b3JkcywgeW91IG11c3QgYmUgYWJsZSB0byBjYWxsIGBQZXJm
b3JtPFI+KGFyZ3MpYCB3aGVyZSBgUmAgaXMgdGhlCittb2NrIGZ1bmN0aW9uJ3MgcmV0dXJuIHR5
cGUgYW5kIGBhcmdzYCBpcyBpdHMgYXJndW1lbnRzIGluIGEgdHVwbGUuCisKK05leHQsIHdlIHVz
ZSBgTWFrZVBvbHltb3JwaGljQWN0aW9uKClgIHRvIHR1cm4gYW4gaW5zdGFuY2Ugb2YgdGhlCitp
bXBsZW1lbnRhdGlvbiBjbGFzcyBpbnRvIHRoZSBwb2x5bW9ycGhpYyBhY3Rpb24gd2UgbmVlZC4g
SXQgd2lsbCBiZQorY29udmVuaWVudCB0byBoYXZlIGEgd3JhcHBlciBmb3IgdGhpczoKKworYGBg
Cit1c2luZyA6OnRlc3Rpbmc6Ok1ha2VQb2x5bW9ycGhpY0FjdGlvbjsKK3VzaW5nIDo6dGVzdGlu
Zzo6UG9seW1vcnBoaWNBY3Rpb247CisKK1BvbHltb3JwaGljQWN0aW9uPFJldHVyblNlY29uZEFy
Z3VtZW50QWN0aW9uPiBSZXR1cm5TZWNvbmRBcmd1bWVudCgpIHsKKyAgcmV0dXJuIE1ha2VQb2x5
bW9ycGhpY0FjdGlvbihSZXR1cm5TZWNvbmRBcmd1bWVudEFjdGlvbigpKTsKK30KK2BgYAorCitO
b3csIHlvdSBjYW4gdXNlIHRoaXMgcG9seW1vcnBoaWMgYWN0aW9uIHRoZSBzYW1lIHdheSB5b3Ug
dXNlIHRoZQorYnVpbHQtaW4gb25lczoKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6Ol87CisKK2Ns
YXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKKyBwdWJsaWM6CisgIE1PQ0tfTUVUSE9EMihEb1Ro
aXMsIGludChib29sIGZsYWcsIGludCBuKSk7CisgIE1PQ0tfTUVUSE9EMyhEb1RoYXQsIHN0cmlu
ZyhpbnQgeCwgY29uc3QgY2hhciogc3RyMSwgY29uc3QgY2hhciogc3RyMikpOworfTsKKy4uLgor
CisgIE1vY2tGb28gZm9vOworICBFWFBFQ1RfQ0FMTChmb28sIERvVGhpcyhfLCBfKSkKKyAgICAg
IC5XaWxsT25jZShSZXR1cm5TZWNvbmRBcmd1bWVudCgpKTsKKyAgRVhQRUNUX0NBTEwoZm9vLCBE
b1RoYXQoXywgXywgXykpCisgICAgICAuV2lsbE9uY2UoUmV0dXJuU2Vjb25kQXJndW1lbnQoKSk7
CisgIC4uLgorICBmb28uRG9UaGlzKHRydWUsIDUpOyAgICAgICAgIC8vIFdpbGwgcmV0dXJuIDUu
CisgIGZvby5Eb1RoYXQoMSwgIkhpIiwgIkJ5ZSIpOyAgLy8gV2lsbCByZXR1cm4gIkhpIi4KK2Bg
YAorCisjIyBUZWFjaGluZyBHb29nbGUgTW9jayBIb3cgdG8gUHJpbnQgWW91ciBWYWx1ZXMgIyMK
KworV2hlbiBhbiB1bmludGVyZXN0aW5nIG9yIHVuZXhwZWN0ZWQgY2FsbCBvY2N1cnMsIEdvb2ds
ZSBNb2NrIHByaW50cyB0aGUKK2FyZ3VtZW50IHZhbHVlcyBhbmQgdGhlIHN0YWNrIHRyYWNlIHRv
IGhlbHAgeW91IGRlYnVnLiAgQXNzZXJ0aW9uCittYWNyb3MgbGlrZSBgRVhQRUNUX1RIQVRgIGFu
ZCBgRVhQRUNUX0VRYCBhbHNvIHByaW50IHRoZSB2YWx1ZXMgaW4KK3F1ZXN0aW9uIHdoZW4gdGhl
IGFzc2VydGlvbiBmYWlscy4gIEdvb2dsZSBNb2NrIGFuZCBHb29nbGUgVGVzdCBkbyB0aGlzIHVz
aW5nCitHb29nbGUgVGVzdCdzIHVzZXItZXh0ZW5zaWJsZSB2YWx1ZSBwcmludGVyLgorCitUaGlz
IHByaW50ZXIga25vd3MgaG93IHRvIHByaW50IGJ1aWx0LWluIEMrKyB0eXBlcywgbmF0aXZlIGFy
cmF5cywgU1RMCitjb250YWluZXJzLCBhbmQgYW55IHR5cGUgdGhhdCBzdXBwb3J0cyB0aGUgYDw8
YCBvcGVyYXRvci4gIEZvciBvdGhlcgordHlwZXMsIGl0IHByaW50cyB0aGUgcmF3IGJ5dGVzIGlu
IHRoZSB2YWx1ZSBhbmQgaG9wZXMgdGhhdCB5b3UgdGhlCit1c2VyIGNhbiBmaWd1cmUgaXQgb3V0
LgorW0dvb2dsZSBUZXN0J3MgYWR2YW5jZWQgZ3VpZGVdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20v
cC9nb29nbGV0ZXN0L3dpa2kvQWR2YW5jZWRHdWlkZSNUZWFjaGluZ19Hb29nbGVfVGVzdF9Ib3df
dG9fUHJpbnRfWW91cl9WYWx1ZXMpCitleHBsYWlucyBob3cgdG8gZXh0ZW5kIHRoZSBwcmludGVy
IHRvIGRvIGEgYmV0dGVyIGpvYiBhdAorcHJpbnRpbmcgeW91ciBwYXJ0aWN1bGFyIHR5cGUgdGhh
biB0byBkdW1wIHRoZSBieXRlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2ds
ZXRlc3QvZ29vZ2xlbW9jay9kb2NzL3YxXzcvRG9jdW1lbnRhdGlvbi5tZCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2Nr
L2RvY3MvdjFfNy9Eb2N1bWVudGF0aW9uLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5MTgxZjI4ZTEwYzlhYTIx
ZWY3MTQwODYzMzZhYzUzMjg1NGJlZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9k
b2NzL3YxXzcvRG9jdW1lbnRhdGlvbi5tZApAQCAtMCwwICsxLDEyIEBACitUaGlzIHBhZ2UgbGlz
dHMgYWxsIGRvY3VtZW50YXRpb24gd2lraSBwYWdlcyBmb3IgR29vZ2xlIE1vY2sgKioodGhlIFNW
TiB0cnVuayB2ZXJzaW9uKSoqCistICoqaWYgeW91IHVzZSBhIHJlbGVhc2VkIHZlcnNpb24gb2Yg
R29vZ2xlIE1vY2ssIHBsZWFzZSByZWFkIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGF0IHNwZWNp
ZmljIHZlcnNpb24gaW5zdGVhZC4qKgorCisgICogW0ZvckR1bW1pZXNdKFYxXzdfRm9yRHVtbWll
cy5tZCkgLS0gc3RhcnQgaGVyZSBpZiB5b3UgYXJlIG5ldyB0byBHb29nbGUgTW9jay4KKyAgKiBb
Q2hlYXRTaGVldF0oVjFfN19DaGVhdFNoZWV0Lm1kKSAtLSBhIHF1aWNrIHJlZmVyZW5jZS4KKyAg
KiBbQ29va0Jvb2tdKFYxXzdfQ29va0Jvb2subWQpIC0tIHJlY2lwZXMgZm9yIGRvaW5nIHZhcmlv
dXMgdGFza3MgdXNpbmcgR29vZ2xlIE1vY2suCisgICogW0ZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9u
c10oVjFfN19GcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMubWQpIC0tIGNoZWNrIGhlcmUgYmVmb3Jl
IGFza2luZyBhIHF1ZXN0aW9uIG9uIHRoZSBtYWlsaW5nIGxpc3QuCisKK1RvIGNvbnRyaWJ1dGUg
Y29kZSB0byBHb29nbGUgTW9jaywgcmVhZDoKKworICAqIFtEZXZHdWlkZV0oRGV2R3VpZGUubWQp
IC0tIHJlYWQgdGhpcyBfYmVmb3JlXyB3cml0aW5nIHlvdXIgZmlyc3QgcGF0Y2guCisgICogW1B1
bXAgTWFudWFsXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC93aWtpL1B1bXBN
YW51YWwpIC0tIGhvdyB3ZSBnZW5lcmF0ZSBzb21lIG9mIEdvb2dsZSBNb2NrJ3Mgc291cmNlIGZp
bGVzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2Nr
L2RvY3MvdjFfNy9Gb3JEdW1taWVzLm1kIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy92MV83L0ZvckR1bW1p
ZXMubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZWUwM2M1Yjk4OTA4ZjBhYWIwOTNmNTNmNmZiZTA5YWM0YjY3NGM4
ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvdjFfNy9Gb3JEdW1taWVzLm1k
CkBAIC0wLDAgKzEsNDM5IEBACisKKworKCoqTm90ZToqKiBJZiB5b3UgZ2V0IGNvbXBpbGVyIGVy
cm9ycyB0aGF0IHlvdSBkb24ndCB1bmRlcnN0YW5kLCBiZSBzdXJlIHRvIGNvbnN1bHQgW0dvb2ds
ZSBNb2NrIERvY3Rvcl0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZW1vY2svd2lraS9W
MV83X0ZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyNIb3dfYW1fSV9zdXBwb3NlZF90b19tYWtlX3Nl
bnNlX29mX3RoZXNlX2hvcnJpYmxlX3RlbXBsYXRlX2Vycm9yKS4pCisKKyMgV2hhdCBJcyBHb29n
bGUgQysrIE1vY2tpbmcgRnJhbWV3b3JrPyAjCitXaGVuIHlvdSB3cml0ZSBhIHByb3RvdHlwZSBv
ciB0ZXN0LCBvZnRlbiBpdCdzIG5vdCBmZWFzaWJsZSBvciB3aXNlIHRvIHJlbHkgb24gcmVhbCBv
YmplY3RzIGVudGlyZWx5LiBBICoqbW9jayBvYmplY3QqKiBpbXBsZW1lbnRzIHRoZSBzYW1lIGlu
dGVyZmFjZSBhcyBhIHJlYWwgb2JqZWN0IChzbyBpdCBjYW4gYmUgdXNlZCBhcyBvbmUpLCBidXQg
bGV0cyB5b3Ugc3BlY2lmeSBhdCBydW4gdGltZSBob3cgaXQgd2lsbCBiZSB1c2VkIGFuZCB3aGF0
IGl0IHNob3VsZCBkbyAod2hpY2ggbWV0aG9kcyB3aWxsIGJlIGNhbGxlZD8gaW4gd2hpY2ggb3Jk
ZXI/IGhvdyBtYW55IHRpbWVzPyB3aXRoIHdoYXQgYXJndW1lbnRzPyB3aGF0IHdpbGwgdGhleSBy
ZXR1cm4/IGV0YykuCisKKyoqTm90ZToqKiBJdCBpcyBlYXN5IHRvIGNvbmZ1c2UgdGhlIHRlcm0g
X2Zha2Ugb2JqZWN0c18gd2l0aCBtb2NrIG9iamVjdHMuIEZha2VzIGFuZCBtb2NrcyBhY3R1YWxs
eSBtZWFuIHZlcnkgZGlmZmVyZW50IHRoaW5ncyBpbiB0aGUgVGVzdC1Ecml2ZW4gRGV2ZWxvcG1l
bnQgKFRERCkgY29tbXVuaXR5OgorCisgICogKipGYWtlKiogb2JqZWN0cyBoYXZlIHdvcmtpbmcg
aW1wbGVtZW50YXRpb25zLCBidXQgdXN1YWxseSB0YWtlIHNvbWUgc2hvcnRjdXQgKHBlcmhhcHMg
dG8gbWFrZSB0aGUgb3BlcmF0aW9ucyBsZXNzIGV4cGVuc2l2ZSksIHdoaWNoIG1ha2VzIHRoZW0g
bm90IHN1aXRhYmxlIGZvciBwcm9kdWN0aW9uLiBBbiBpbi1tZW1vcnkgZmlsZSBzeXN0ZW0gd291
bGQgYmUgYW4gZXhhbXBsZSBvZiBhIGZha2UuCisgICogKipNb2NrcyoqIGFyZSBvYmplY3RzIHBy
ZS1wcm9ncmFtbWVkIHdpdGggX2V4cGVjdGF0aW9uc18sIHdoaWNoIGZvcm0gYSBzcGVjaWZpY2F0
aW9uIG9mIHRoZSBjYWxscyB0aGV5IGFyZSBleHBlY3RlZCB0byByZWNlaXZlLgorCitJZiBhbGwg
dGhpcyBzZWVtcyB0b28gYWJzdHJhY3QgZm9yIHlvdSwgZG9uJ3Qgd29ycnkgLSB0aGUgbW9zdCBp
bXBvcnRhbnQgdGhpbmcgdG8gcmVtZW1iZXIgaXMgdGhhdCBhIG1vY2sgYWxsb3dzIHlvdSB0byBj
aGVjayB0aGUgX2ludGVyYWN0aW9uXyBiZXR3ZWVuIGl0c2VsZiBhbmQgY29kZSB0aGF0IHVzZXMg
aXQuIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gZmFrZXMgYW5kIG1vY2tzIHdpbGwgYmVjb21lIG11
Y2ggY2xlYXJlciBvbmNlIHlvdSBzdGFydCB0byB1c2UgbW9ja3MuCisKKyoqR29vZ2xlIEMrKyBN
b2NraW5nIEZyYW1ld29yayoqIChvciAqKkdvb2dsZSBNb2NrKiogZm9yIHNob3J0KSBpcyBhIGxp
YnJhcnkgKHNvbWV0aW1lcyB3ZSBhbHNvIGNhbGwgaXQgYSAiZnJhbWV3b3JrIiB0byBtYWtlIGl0
IHNvdW5kIGNvb2wpIGZvciBjcmVhdGluZyBtb2NrIGNsYXNzZXMgYW5kIHVzaW5nIHRoZW0uIEl0
IGRvZXMgdG8gQysrIHdoYXQgW2pNb2NrXShodHRwOi8vd3d3Lmptb2NrLm9yZy8pIGFuZCBbRWFz
eU1vY2tdKGh0dHA6Ly93d3cuZWFzeW1vY2sub3JnLykgZG8gdG8gSmF2YS4KKworVXNpbmcgR29v
Z2xlIE1vY2sgaW52b2x2ZXMgdGhyZWUgYmFzaWMgc3RlcHM6CisKKyAgMS4gVXNlIHNvbWUgc2lt
cGxlIG1hY3JvcyB0byBkZXNjcmliZSB0aGUgaW50ZXJmYWNlIHlvdSB3YW50IHRvIG1vY2ssIGFu
ZCB0aGV5IHdpbGwgZXhwYW5kIHRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB5b3VyIG1vY2sgY2xh
c3M7CisgIDEuIENyZWF0ZSBzb21lIG1vY2sgb2JqZWN0cyBhbmQgc3BlY2lmeSBpdHMgZXhwZWN0
YXRpb25zIGFuZCBiZWhhdmlvciB1c2luZyBhbiBpbnR1aXRpdmUgc3ludGF4OworICAxLiBFeGVy
Y2lzZSBjb2RlIHRoYXQgdXNlcyB0aGUgbW9jayBvYmplY3RzLiBHb29nbGUgTW9jayB3aWxsIGNh
dGNoIGFueSB2aW9sYXRpb24gb2YgdGhlIGV4cGVjdGF0aW9ucyBhcyBzb29uIGFzIGl0IGFyaXNl
cy4KKworIyBXaHkgR29vZ2xlIE1vY2s/ICMKK1doaWxlIG1vY2sgb2JqZWN0cyBoZWxwIHlvdSBy
ZW1vdmUgdW5uZWNlc3NhcnkgZGVwZW5kZW5jaWVzIGluIHRlc3RzIGFuZCBtYWtlIHRoZW0gZmFz
dCBhbmQgcmVsaWFibGUsIHVzaW5nIG1vY2tzIG1hbnVhbGx5IGluIEMrKyBpcyBfaGFyZF86CisK
KyAgKiBTb21lb25lIGhhcyB0byBpbXBsZW1lbnQgdGhlIG1vY2tzLiBUaGUgam9iIGlzIHVzdWFs
bHkgdGVkaW91cyBhbmQgZXJyb3ItcHJvbmUuIE5vIHdvbmRlciBwZW9wbGUgZ28gZ3JlYXQgZGlz
dGFuY2UgdG8gYXZvaWQgaXQuCisgICogVGhlIHF1YWxpdHkgb2YgdGhvc2UgbWFudWFsbHkgd3Jp
dHRlbiBtb2NrcyBpcyBhIGJpdCwgdWgsIHVucHJlZGljdGFibGUuIFlvdSBtYXkgc2VlIHNvbWUg
cmVhbGx5IHBvbGlzaGVkIG9uZXMsIGJ1dCB5b3UgbWF5IGFsc28gc2VlIHNvbWUgdGhhdCB3ZXJl
IGhhY2tlZCB1cCBpbiBhIGh1cnJ5IGFuZCBoYXZlIGFsbCBzb3J0cyBvZiBhZCBob2MgcmVzdHJp
Y3Rpb25zLgorICAqIFRoZSBrbm93bGVkZ2UgeW91IGdhaW5lZCBmcm9tIHVzaW5nIG9uZSBtb2Nr
IGRvZXNuJ3QgdHJhbnNmZXIgdG8gdGhlIG5leHQuCisKK0luIGNvbnRyYXN0LCBKYXZhIGFuZCBQ
eXRob24gcHJvZ3JhbW1lcnMgaGF2ZSBzb21lIGZpbmUgbW9jayBmcmFtZXdvcmtzLCB3aGljaCBh
dXRvbWF0ZSB0aGUgY3JlYXRpb24gb2YgbW9ja3MuIEFzIGEgcmVzdWx0LCBtb2NraW5nIGlzIGEg
cHJvdmVuIGVmZmVjdGl2ZSB0ZWNobmlxdWUgYW5kIHdpZGVseSBhZG9wdGVkIHByYWN0aWNlIGlu
IHRob3NlIGNvbW11bml0aWVzLiBIYXZpbmcgdGhlIHJpZ2h0IHRvb2wgYWJzb2x1dGVseSBtYWtl
cyB0aGUgZGlmZmVyZW5jZS4KKworR29vZ2xlIE1vY2sgd2FzIGJ1aWx0IHRvIGhlbHAgQysrIHBy
b2dyYW1tZXJzLiBJdCB3YXMgaW5zcGlyZWQgYnkgW2pNb2NrXShodHRwOi8vd3d3Lmptb2NrLm9y
Zy8pIGFuZCBbRWFzeU1vY2tdKGh0dHA6Ly93d3cuZWFzeW1vY2sub3JnLyksIGJ1dCBkZXNpZ25l
ZCB3aXRoIEMrKydzIHNwZWNpZmljcyBpbiBtaW5kLiBJdCBpcyB5b3VyIGZyaWVuZCBpZiBhbnkg
b2YgdGhlIGZvbGxvd2luZyBwcm9ibGVtcyBpcyBib3RoZXJpbmcgeW91OgorCisgICogWW91IGFy
ZSBzdHVjayB3aXRoIGEgc3ViLW9wdGltYWwgZGVzaWduIGFuZCB3aXNoIHlvdSBoYWQgZG9uZSBt
b3JlIHByb3RvdHlwaW5nIGJlZm9yZSBpdCB3YXMgdG9vIGxhdGUsIGJ1dCBwcm90b3R5cGluZyBp
biBDKysgaXMgYnkgbm8gbWVhbnMgInJhcGlkIi4KKyAgKiBZb3VyIHRlc3RzIGFyZSBzbG93IGFz
IHRoZXkgZGVwZW5kIG9uIHRvbyBtYW55IGxpYnJhcmllcyBvciB1c2UgZXhwZW5zaXZlIHJlc291
cmNlcyAoZS5nLiBhIGRhdGFiYXNlKS4KKyAgKiBZb3VyIHRlc3RzIGFyZSBicml0dGxlIGFzIHNv
bWUgcmVzb3VyY2VzIHRoZXkgdXNlIGFyZSB1bnJlbGlhYmxlIChlLmcuIHRoZSBuZXR3b3JrKS4K
KyAgKiBZb3Ugd2FudCB0byB0ZXN0IGhvdyB5b3VyIGNvZGUgaGFuZGxlcyBhIGZhaWx1cmUgKGUu
Zy4gYSBmaWxlIGNoZWNrc3VtIGVycm9yKSwgYnV0IGl0J3Mgbm90IGVhc3kgdG8gY2F1c2Ugb25l
LgorICAqIFlvdSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHlvdXIgbW9kdWxlIGludGVyYWN0cyB3
aXRoIG90aGVyIG1vZHVsZXMgaW4gdGhlIHJpZ2h0IHdheSwgYnV0IGl0J3MgaGFyZCB0byBvYnNl
cnZlIHRoZSBpbnRlcmFjdGlvbjsgdGhlcmVmb3JlIHlvdSByZXNvcnQgdG8gb2JzZXJ2aW5nIHRo
ZSBzaWRlIGVmZmVjdHMgYXQgdGhlIGVuZCBvZiB0aGUgYWN0aW9uLCB3aGljaCBpcyBhd2t3YXJk
IGF0IGJlc3QuCisgICogWW91IHdhbnQgdG8gIm1vY2sgb3V0IiB5b3VyIGRlcGVuZGVuY2llcywg
ZXhjZXB0IHRoYXQgdGhleSBkb24ndCBoYXZlIG1vY2sgaW1wbGVtZW50YXRpb25zIHlldDsgYW5k
LCBmcmFua2x5LCB5b3UgYXJlbid0IHRocmlsbGVkIGJ5IHNvbWUgb2YgdGhvc2UgaGFuZC13cml0
dGVuIG1vY2tzLgorCitXZSBlbmNvdXJhZ2UgeW91IHRvIHVzZSBHb29nbGUgTW9jayBhczoKKwor
ICAqIGEgX2Rlc2lnbl8gdG9vbCwgZm9yIGl0IGxldHMgeW91IGV4cGVyaW1lbnQgd2l0aCB5b3Vy
IGludGVyZmFjZSBkZXNpZ24gZWFybHkgYW5kIG9mdGVuLiBNb3JlIGl0ZXJhdGlvbnMgbGVhZCB0
byBiZXR0ZXIgZGVzaWducyEKKyAgKiBhIF90ZXN0aW5nXyB0b29sIHRvIGN1dCB5b3VyIHRlc3Rz
JyBvdXRib3VuZCBkZXBlbmRlbmNpZXMgYW5kIHByb2JlIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVu
IHlvdXIgbW9kdWxlIGFuZCBpdHMgY29sbGFib3JhdG9ycy4KKworIyBHZXR0aW5nIFN0YXJ0ZWQg
IworVXNpbmcgR29vZ2xlIE1vY2sgaXMgZWFzeSEgSW5zaWRlIHlvdXIgQysrIHNvdXJjZSBmaWxl
LCBqdXN0IGAjaW5jbHVkZWAgYCJndGVzdC9ndGVzdC5oImAgYW5kIGAiZ21vY2svZ21vY2suaCJg
LCBhbmQgeW91IGFyZSByZWFkeSB0byBnby4KKworIyBBIENhc2UgZm9yIE1vY2sgVHVydGxlcyAj
CitMZXQncyBsb29rIGF0IGFuIGV4YW1wbGUuIFN1cHBvc2UgeW91IGFyZSBkZXZlbG9waW5nIGEg
Z3JhcGhpY3MgcHJvZ3JhbSB0aGF0IHJlbGllcyBvbiBhIExPR08tbGlrZSBBUEkgZm9yIGRyYXdp
bmcuIEhvdyB3b3VsZCB5b3UgdGVzdCB0aGF0IGl0IGRvZXMgdGhlIHJpZ2h0IHRoaW5nPyBXZWxs
LCB5b3UgY2FuIHJ1biBpdCBhbmQgY29tcGFyZSB0aGUgc2NyZWVuIHdpdGggYSBnb2xkZW4gc2Ny
ZWVuIHNuYXBzaG90LCBidXQgbGV0J3MgYWRtaXQgaXQ6IHRlc3RzIGxpa2UgdGhpcyBhcmUgZXhw
ZW5zaXZlIHRvIHJ1biBhbmQgZnJhZ2lsZSAoV2hhdCBpZiB5b3UganVzdCB1cGdyYWRlZCB0byBh
IHNoaW55IG5ldyBncmFwaGljcyBjYXJkIHRoYXQgaGFzIGJldHRlciBhbnRpLWFsaWFzaW5nPyBT
dWRkZW5seSB5b3UgaGF2ZSB0byB1cGRhdGUgYWxsIHlvdXIgZ29sZGVuIGltYWdlcy4pLiBJdCB3
b3VsZCBiZSB0b28gcGFpbmZ1bCBpZiBhbGwgeW91ciB0ZXN0cyBhcmUgbGlrZSB0aGlzLiBGb3J0
dW5hdGVseSwgeW91IGxlYXJuZWQgYWJvdXQgRGVwZW5kZW5jeSBJbmplY3Rpb24gYW5kIGtub3cg
dGhlIHJpZ2h0IHRoaW5nIHRvIGRvOiBpbnN0ZWFkIG9mIGhhdmluZyB5b3VyIGFwcGxpY2F0aW9u
IHRhbGsgdG8gdGhlIGRyYXdpbmcgQVBJIGRpcmVjdGx5LCB3cmFwIHRoZSBBUEkgaW4gYW4gaW50
ZXJmYWNlIChzYXksIGBUdXJ0bGVgKSBhbmQgY29kZSB0byB0aGF0IGludGVyZmFjZToKKworYGBg
CitjbGFzcyBUdXJ0bGUgeworICAuLi4KKyAgdmlydHVhbCB+VHVydGxlKCkge30KKyAgdmlydHVh
bCB2b2lkIFBlblVwKCkgPSAwOworICB2aXJ0dWFsIHZvaWQgUGVuRG93bigpID0gMDsKKyAgdmly
dHVhbCB2b2lkIEZvcndhcmQoaW50IGRpc3RhbmNlKSA9IDA7CisgIHZpcnR1YWwgdm9pZCBUdXJu
KGludCBkZWdyZWVzKSA9IDA7CisgIHZpcnR1YWwgdm9pZCBHb1RvKGludCB4LCBpbnQgeSkgPSAw
OworICB2aXJ0dWFsIGludCBHZXRYKCkgY29uc3QgPSAwOworICB2aXJ0dWFsIGludCBHZXRZKCkg
Y29uc3QgPSAwOworfTsKK2BgYAorCisoTm90ZSB0aGF0IHRoZSBkZXN0cnVjdG9yIG9mIGBUdXJ0
bGVgICoqbXVzdCoqIGJlIHZpcnR1YWwsIGFzIGlzIHRoZSBjYXNlIGZvciAqKmFsbCoqIGNsYXNz
ZXMgeW91IGludGVuZCB0byBpbmhlcml0IGZyb20gLSBvdGhlcndpc2UgdGhlIGRlc3RydWN0b3Ig
b2YgdGhlIGRlcml2ZWQgY2xhc3Mgd2lsbCBub3QgYmUgY2FsbGVkIHdoZW4geW91IGRlbGV0ZSBh
biBvYmplY3QgdGhyb3VnaCBhIGJhc2UgcG9pbnRlciwgYW5kIHlvdSdsbCBnZXQgY29ycnVwdGVk
IHByb2dyYW0gc3RhdGVzIGxpa2UgbWVtb3J5IGxlYWtzLikKKworWW91IGNhbiBjb250cm9sIHdo
ZXRoZXIgdGhlIHR1cnRsZSdzIG1vdmVtZW50IHdpbGwgbGVhdmUgYSB0cmFjZSB1c2luZyBgUGVu
VXAoKWAgYW5kIGBQZW5Eb3duKClgLCBhbmQgY29udHJvbCBpdHMgbW92ZW1lbnQgdXNpbmcgYEZv
cndhcmQoKWAsIGBUdXJuKClgLCBhbmQgYEdvVG8oKWAuIEZpbmFsbHksIGBHZXRYKClgIGFuZCBg
R2V0WSgpYCB0ZWxsIHlvdSB0aGUgY3VycmVudCBwb3NpdGlvbiBvZiB0aGUgdHVydGxlLgorCitZ
b3VyIHByb2dyYW0gd2lsbCBub3JtYWxseSB1c2UgYSByZWFsIGltcGxlbWVudGF0aW9uIG9mIHRo
aXMgaW50ZXJmYWNlLiBJbiB0ZXN0cywgeW91IGNhbiB1c2UgYSBtb2NrIGltcGxlbWVudGF0aW9u
IGluc3RlYWQuIFRoaXMgYWxsb3dzIHlvdSB0byBlYXNpbHkgY2hlY2sgd2hhdCBkcmF3aW5nIHBy
aW1pdGl2ZXMgeW91ciBwcm9ncmFtIGlzIGNhbGxpbmcsIHdpdGggd2hhdCBhcmd1bWVudHMsIGFu
ZCBpbiB3aGljaCBvcmRlci4gVGVzdHMgd3JpdHRlbiB0aGlzIHdheSBhcmUgbXVjaCBtb3JlIHJv
YnVzdCAodGhleSB3b24ndCBicmVhayBiZWNhdXNlIHlvdXIgbmV3IG1hY2hpbmUgZG9lcyBhbnRp
LWFsaWFzaW5nIGRpZmZlcmVudGx5KSwgZWFzaWVyIHRvIHJlYWQgYW5kIG1haW50YWluICh0aGUg
aW50ZW50IG9mIGEgdGVzdCBpcyBleHByZXNzZWQgaW4gdGhlIGNvZGUsIG5vdCBpbiBzb21lIGJp
bmFyeSBpbWFnZXMpLCBhbmQgcnVuIF9tdWNoLCBtdWNoIGZhc3Rlcl8uCisKKyMgV3JpdGluZyB0
aGUgTW9jayBDbGFzcyAjCitJZiB5b3UgYXJlIGx1Y2t5LCB0aGUgbW9ja3MgeW91IG5lZWQgdG8g
dXNlIGhhdmUgYWxyZWFkeSBiZWVuIGltcGxlbWVudGVkIGJ5IHNvbWUgbmljZSBwZW9wbGUuIElm
LCBob3dldmVyLCB5b3UgZmluZCB5b3Vyc2VsZiBpbiB0aGUgcG9zaXRpb24gdG8gd3JpdGUgYSBt
b2NrIGNsYXNzLCByZWxheCAtIEdvb2dsZSBNb2NrIHR1cm5zIHRoaXMgdGFzayBpbnRvIGEgZnVu
IGdhbWUhIChXZWxsLCBhbG1vc3QuKQorCisjIyBIb3cgdG8gRGVmaW5lIEl0ICMjCitVc2luZyB0
aGUgYFR1cnRsZWAgaW50ZXJmYWNlIGFzIGV4YW1wbGUsIGhlcmUgYXJlIHRoZSBzaW1wbGUgc3Rl
cHMgeW91IG5lZWQgdG8gZm9sbG93OgorCisgIDEuIERlcml2ZSBhIGNsYXNzIGBNb2NrVHVydGxl
YCBmcm9tIGBUdXJ0bGVgLgorICAxLiBUYWtlIGEgX3ZpcnR1YWxfIGZ1bmN0aW9uIG9mIGBUdXJ0
bGVgICh3aGlsZSBpdCdzIHBvc3NpYmxlIHRvIFttb2NrIG5vbi12aXJ0dWFsIG1ldGhvZHMgdXNp
bmcgdGVtcGxhdGVzXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9jay93aWtpL1Yx
XzdfQ29va0Jvb2sjTW9ja2luZ19Ob252aXJ0dWFsX01ldGhvZHMpLCBpdCdzIG11Y2ggbW9yZSBp
bnZvbHZlZCkuIENvdW50IGhvdyBtYW55IGFyZ3VtZW50cyBpdCBoYXMuCisgIDEuIEluIHRoZSBg
cHVibGljOmAgc2VjdGlvbiBvZiB0aGUgY2hpbGQgY2xhc3MsIHdyaXRlIGBNT0NLX01FVEhPRG4o
KTtgIChvciBgTU9DS19DT05TVF9NRVRIT0RuKCk7YCBpZiB5b3UgYXJlIG1vY2tpbmcgYSBgY29u
c3RgIG1ldGhvZCksIHdoZXJlIGBuYCBpcyB0aGUgbnVtYmVyIG9mIHRoZSBhcmd1bWVudHM7IGlm
IHlvdSBjb3VudGVkIHdyb25nLCBzaGFtZSBvbiB5b3UsIGFuZCBhIGNvbXBpbGVyIGVycm9yIHdp
bGwgdGVsbCB5b3Ugc28uCisgIDEuIE5vdyBjb21lcyB0aGUgZnVuIHBhcnQ6IHlvdSB0YWtlIHRo
ZSBmdW5jdGlvbiBzaWduYXR1cmUsIGN1dC1hbmQtcGFzdGUgdGhlIF9mdW5jdGlvbiBuYW1lXyBh
cyB0aGUgX2ZpcnN0XyBhcmd1bWVudCB0byB0aGUgbWFjcm8sIGFuZCBsZWF2ZSB3aGF0J3MgbGVm
dCBhcyB0aGUgX3NlY29uZF8gYXJndW1lbnQgKGluIGNhc2UgeW91J3JlIGN1cmlvdXMsIHRoaXMg
aXMgdGhlIF90eXBlIG9mIHRoZSBmdW5jdGlvbl8pLgorICAxLiBSZXBlYXQgdW50aWwgYWxsIHZp
cnR1YWwgZnVuY3Rpb25zIHlvdSB3YW50IHRvIG1vY2sgYXJlIGRvbmUuCisKK0FmdGVyIHRoZSBw
cm9jZXNzLCB5b3Ugc2hvdWxkIGhhdmUgc29tZXRoaW5nIGxpa2U6CisKK2BgYAorI2luY2x1ZGUg
Imdtb2NrL2dtb2NrLmgiICAvLyBCcmluZ3MgaW4gR29vZ2xlIE1vY2suCitjbGFzcyBNb2NrVHVy
dGxlIDogcHVibGljIFR1cnRsZSB7CisgcHVibGljOgorICAuLi4KKyAgTU9DS19NRVRIT0QwKFBl
blVwLCB2b2lkKCkpOworICBNT0NLX01FVEhPRDAoUGVuRG93biwgdm9pZCgpKTsKKyAgTU9DS19N
RVRIT0QxKEZvcndhcmQsIHZvaWQoaW50IGRpc3RhbmNlKSk7CisgIE1PQ0tfTUVUSE9EMShUdXJu
LCB2b2lkKGludCBkZWdyZWVzKSk7CisgIE1PQ0tfTUVUSE9EMihHb1RvLCB2b2lkKGludCB4LCBp
bnQgeSkpOworICBNT0NLX0NPTlNUX01FVEhPRDAoR2V0WCwgaW50KCkpOworICBNT0NLX0NPTlNU
X01FVEhPRDAoR2V0WSwgaW50KCkpOworfTsKK2BgYAorCitZb3UgZG9uJ3QgbmVlZCB0byBkZWZp
bmUgdGhlc2UgbW9jayBtZXRob2RzIHNvbWV3aGVyZSBlbHNlIC0gdGhlIGBNT0NLX01FVEhPRCpg
IG1hY3JvcyB3aWxsIGdlbmVyYXRlIHRoZSBkZWZpbml0aW9ucyBmb3IgeW91LiBJdCdzIHRoYXQg
c2ltcGxlISBPbmNlIHlvdSBnZXQgdGhlIGhhbmcgb2YgaXQsIHlvdSBjYW4gcHVtcCBvdXQgbW9j
ayBjbGFzc2VzIGZhc3RlciB0aGFuIHlvdXIgc291cmNlLWNvbnRyb2wgc3lzdGVtIGNhbiBoYW5k
bGUgeW91ciBjaGVjay1pbnMuCisKKyoqVGlwOioqIElmIGV2ZW4gdGhpcyBpcyB0b28gbXVjaCB3
b3JrIGZvciB5b3UsIHlvdSdsbCBmaW5kIHRoZQorYGdtb2NrX2dlbi5weWAgdG9vbCBpbiBHb29n
bGUgTW9jaydzIGBzY3JpcHRzL2dlbmVyYXRvci9gIGRpcmVjdG9yeSAoY291cnRlc3kgb2YgdGhl
IFtjcHBjbGVhbl0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2NwcGNsZWFuLykgcHJvamVjdCkg
dXNlZnVsLiAgVGhpcyBjb21tYW5kLWxpbmUKK3Rvb2wgcmVxdWlyZXMgdGhhdCB5b3UgaGF2ZSBQ
eXRob24gMi40IGluc3RhbGxlZC4gIFlvdSBnaXZlIGl0IGEgQysrIGZpbGUgYW5kIHRoZSBuYW1l
IG9mIGFuIGFic3RyYWN0IGNsYXNzIGRlZmluZWQgaW4gaXQsCithbmQgaXQgd2lsbCBwcmludCB0
aGUgZGVmaW5pdGlvbiBvZiB0aGUgbW9jayBjbGFzcyBmb3IgeW91LiAgRHVlIHRvIHRoZQorY29t
cGxleGl0eSBvZiB0aGUgQysrIGxhbmd1YWdlLCB0aGlzIHNjcmlwdCBtYXkgbm90IGFsd2F5cyB3
b3JrLCBidXQKK2l0IGNhbiBiZSBxdWl0ZSBoYW5keSB3aGVuIGl0IGRvZXMuICBGb3IgbW9yZSBk
ZXRhaWxzLCByZWFkIHRoZSBbdXNlciBkb2N1bWVudGF0aW9uXShodHRwOi8vY29kZS5nb29nbGUu
Y29tL3AvZ29vZ2xlbW9jay9zb3VyY2UvYnJvd3NlL3RydW5rL3NjcmlwdHMvZ2VuZXJhdG9yL1JF
QURNRSkuCisKKyMjIFdoZXJlIHRvIFB1dCBJdCAjIworV2hlbiB5b3UgZGVmaW5lIGEgbW9jayBj
bGFzcywgeW91IG5lZWQgdG8gZGVjaWRlIHdoZXJlIHRvIHB1dCBpdHMgZGVmaW5pdGlvbi4gU29t
ZSBwZW9wbGUgcHV0IGl0IGluIGEgYCpfdGVzdC5jY2AuIFRoaXMgaXMgZmluZSB3aGVuIHRoZSBp
bnRlcmZhY2UgYmVpbmcgbW9ja2VkIChzYXksIGBGb29gKSBpcyBvd25lZCBieSB0aGUgc2FtZSBw
ZXJzb24gb3IgdGVhbS4gT3RoZXJ3aXNlLCB3aGVuIHRoZSBvd25lciBvZiBgRm9vYCBjaGFuZ2Vz
IGl0LCB5b3VyIHRlc3QgY291bGQgYnJlYWsuIChZb3UgY2FuJ3QgcmVhbGx5IGV4cGVjdCBgRm9v
YCdzIG1haW50YWluZXIgdG8gZml4IGV2ZXJ5IHRlc3QgdGhhdCB1c2VzIGBGb29gLCBjYW4geW91
PykKKworU28sIHRoZSBydWxlIG9mIHRodW1iIGlzOiBpZiB5b3UgbmVlZCB0byBtb2NrIGBGb29g
IGFuZCBpdCdzIG93bmVkIGJ5IG90aGVycywgZGVmaW5lIHRoZSBtb2NrIGNsYXNzIGluIGBGb29g
J3MgcGFja2FnZSAoYmV0dGVyLCBpbiBhIGB0ZXN0aW5nYCBzdWItcGFja2FnZSBzdWNoIHRoYXQg
eW91IGNhbiBjbGVhcmx5IHNlcGFyYXRlIHByb2R1Y3Rpb24gY29kZSBhbmQgdGVzdGluZyB1dGls
aXRpZXMpLCBhbmQgcHV0IGl0IGluIGEgYG1vY2tfZm9vLmhgLiBUaGVuIGV2ZXJ5b25lIGNhbiBy
ZWZlcmVuY2UgYG1vY2tfZm9vLmhgIGZyb20gdGhlaXIgdGVzdHMuIElmIGBGb29gIGV2ZXIgY2hh
bmdlcywgdGhlcmUgaXMgb25seSBvbmUgY29weSBvZiBgTW9ja0Zvb2AgdG8gY2hhbmdlLCBhbmQg
b25seSB0ZXN0cyB0aGF0IGRlcGVuZCBvbiB0aGUgY2hhbmdlZCBtZXRob2RzIG5lZWQgdG8gYmUg
Zml4ZWQuCisKK0Fub3RoZXIgd2F5IHRvIGRvIGl0OiB5b3UgY2FuIGludHJvZHVjZSBhIHRoaW4g
bGF5ZXIgYEZvb0FkYXB0b3JgIG9uIHRvcCBvZiBgRm9vYCBhbmQgY29kZSB0byB0aGlzIG5ldyBp
bnRlcmZhY2UuIFNpbmNlIHlvdSBvd24gYEZvb0FkYXB0b3JgLCB5b3UgY2FuIGFic29yYiBjaGFu
Z2VzIGluIGBGb29gIG11Y2ggbW9yZSBlYXNpbHkuIFdoaWxlIHRoaXMgaXMgbW9yZSB3b3JrIGlu
aXRpYWxseSwgY2FyZWZ1bGx5IGNob29zaW5nIHRoZSBhZGFwdG9yIGludGVyZmFjZSBjYW4gbWFr
ZSB5b3VyIGNvZGUgZWFzaWVyIHRvIHdyaXRlIGFuZCBtb3JlIHJlYWRhYmxlIChhIG5ldCB3aW4g
aW4gdGhlIGxvbmcgcnVuKSwgYXMgeW91IGNhbiBjaG9vc2UgYEZvb0FkYXB0b3JgIHRvIGZpdCB5
b3VyIHNwZWNpZmljIGRvbWFpbiBtdWNoIGJldHRlciB0aGFuIGBGb29gIGRvZXMuCisKKyMgVXNp
bmcgTW9ja3MgaW4gVGVzdHMgIworT25jZSB5b3UgaGF2ZSBhIG1vY2sgY2xhc3MsIHVzaW5nIGl0
IGlzIGVhc3kuIFRoZSB0eXBpY2FsIHdvcmsgZmxvdyBpczoKKworICAxLiBJbXBvcnQgdGhlIEdv
b2dsZSBNb2NrIG5hbWVzIGZyb20gdGhlIGB0ZXN0aW5nYCBuYW1lc3BhY2Ugc3VjaCB0aGF0IHlv
dSBjYW4gdXNlIHRoZW0gdW5xdWFsaWZpZWQgKFlvdSBvbmx5IGhhdmUgdG8gZG8gaXQgb25jZSBw
ZXIgZmlsZS4gUmVtZW1iZXIgdGhhdCBuYW1lc3BhY2VzIGFyZSBhIGdvb2QgaWRlYSBhbmQgZ29v
ZCBmb3IgeW91ciBoZWFsdGguKS4KKyAgMS4gQ3JlYXRlIHNvbWUgbW9jayBvYmplY3RzLgorICAx
LiBTcGVjaWZ5IHlvdXIgZXhwZWN0YXRpb25zIG9uIHRoZW0gKEhvdyBtYW55IHRpbWVzIHdpbGwg
YSBtZXRob2QgYmUgY2FsbGVkPyBXaXRoIHdoYXQgYXJndW1lbnRzPyBXaGF0IHNob3VsZCBpdCBk
bz8gZXRjLikuCisgIDEuIEV4ZXJjaXNlIHNvbWUgY29kZSB0aGF0IHVzZXMgdGhlIG1vY2tzOyBv
cHRpb25hbGx5LCBjaGVjayB0aGUgcmVzdWx0IHVzaW5nIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMu
IElmIGEgbW9jayBtZXRob2QgaXMgY2FsbGVkIG1vcmUgdGhhbiBleHBlY3RlZCBvciB3aXRoIHdy
b25nIGFyZ3VtZW50cywgeW91J2xsIGdldCBhbiBlcnJvciBpbW1lZGlhdGVseS4KKyAgMS4gV2hl
biBhIG1vY2sgaXMgZGVzdHJ1Y3RlZCwgR29vZ2xlIE1vY2sgd2lsbCBhdXRvbWF0aWNhbGx5IGNo
ZWNrIHdoZXRoZXIgYWxsIGV4cGVjdGF0aW9ucyBvbiBpdCBoYXZlIGJlZW4gc2F0aXNmaWVkLgor
CitIZXJlJ3MgYW4gZXhhbXBsZToKKworYGBgCisjaW5jbHVkZSAicGF0aC90by9tb2NrLXR1cnRs
ZS5oIgorI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIK
K3VzaW5nIDo6dGVzdGluZzo6QXRMZWFzdDsgICAgICAgICAgICAgICAgICAgICAvLyAjMQorCitU
RVNUKFBhaW50ZXJUZXN0LCBDYW5EcmF3U29tZXRoaW5nKSB7CisgIE1vY2tUdXJ0bGUgdHVydGxl
OyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIzIKKyAgRVhQRUNUX0NBTEwodHVydGxlLCBQ
ZW5Eb3duKCkpICAgICAgICAgICAgICAvLyAjMworICAgICAgLlRpbWVzKEF0TGVhc3QoMSkpOwor
CisgIFBhaW50ZXIgcGFpbnRlcigmdHVydGxlKTsgICAgICAgICAgICAgICAgICAgLy8gIzQKKwor
ICBFWFBFQ1RfVFJVRShwYWludGVyLkRyYXdDaXJjbGUoMCwgMCwgMTApKTsKK30gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAjNQorCitpbnQgbWFpbihpbnQg
YXJnYywgY2hhcioqIGFyZ3YpIHsKKyAgLy8gVGhlIGZvbGxvd2luZyBsaW5lIG11c3QgYmUgZXhl
Y3V0ZWQgdG8gaW5pdGlhbGl6ZSBHb29nbGUgTW9jaworICAvLyAoYW5kIEdvb2dsZSBUZXN0KSBi
ZWZvcmUgcnVubmluZyB0aGUgdGVzdHMuCisgIDo6dGVzdGluZzo6SW5pdEdvb2dsZU1vY2soJmFy
Z2MsIGFyZ3YpOworICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworfQorYGBgCisKK0FzIHlvdSBt
aWdodCBoYXZlIGd1ZXNzZWQsIHRoaXMgdGVzdCBjaGVja3MgdGhhdCBgUGVuRG93bigpYCBpcyBj
YWxsZWQgYXQgbGVhc3Qgb25jZS4gSWYgdGhlIGBwYWludGVyYCBvYmplY3QgZGlkbid0IGNhbGwg
dGhpcyBtZXRob2QsIHlvdXIgdGVzdCB3aWxsIGZhaWwgd2l0aCBhIG1lc3NhZ2UgbGlrZSB0aGlz
OgorCitgYGAKK3BhdGgvdG8vbXlfdGVzdC5jYzoxMTk6IEZhaWx1cmUKK0FjdHVhbCBmdW5jdGlv
biBjYWxsIGNvdW50IGRvZXNuJ3QgbWF0Y2ggdGhpcyBleHBlY3RhdGlvbjoKK0FjdHVhbGx5OiBu
ZXZlciBjYWxsZWQ7CitFeHBlY3RlZDogY2FsbGVkIGF0IGxlYXN0IG9uY2UuCitgYGAKKworKipU
aXAgMToqKiBJZiB5b3UgcnVuIHRoZSB0ZXN0IGZyb20gYW4gRW1hY3MgYnVmZmVyLCB5b3UgY2Fu
IGhpdCBgPEVudGVyPmAgb24gdGhlIGxpbmUgbnVtYmVyIGRpc3BsYXllZCBpbiB0aGUgZXJyb3Ig
bWVzc2FnZSB0byBqdW1wIHJpZ2h0IHRvIHRoZSBmYWlsZWQgZXhwZWN0YXRpb24uCisKKyoqVGlw
IDI6KiogSWYgeW91ciBtb2NrIG9iamVjdHMgYXJlIG5ldmVyIGRlbGV0ZWQsIHRoZSBmaW5hbCB2
ZXJpZmljYXRpb24gd29uJ3QgaGFwcGVuLiBUaGVyZWZvcmUgaXQncyBhIGdvb2QgaWRlYSB0byB1
c2UgYSBoZWFwIGxlYWsgY2hlY2tlciBpbiB5b3VyIHRlc3RzIHdoZW4geW91IGFsbG9jYXRlIG1v
Y2tzIG9uIHRoZSBoZWFwLgorCisqKkltcG9ydGFudCBub3RlOioqIEdvb2dsZSBNb2NrIHJlcXVp
cmVzIGV4cGVjdGF0aW9ucyB0byBiZSBzZXQgKipiZWZvcmUqKiB0aGUgbW9jayBmdW5jdGlvbnMg
YXJlIGNhbGxlZCwgb3RoZXJ3aXNlIHRoZSBiZWhhdmlvciBpcyAqKnVuZGVmaW5lZCoqLiBJbiBw
YXJ0aWN1bGFyLCB5b3UgbXVzdG4ndCBpbnRlcmxlYXZlIGBFWFBFQ1RfQ0FMTCgpYHMgYW5kIGNh
bGxzIHRvIHRoZSBtb2NrIGZ1bmN0aW9ucy4KKworVGhpcyBtZWFucyBgRVhQRUNUX0NBTEwoKWAg
c2hvdWxkIGJlIHJlYWQgYXMgZXhwZWN0aW5nIHRoYXQgYSBjYWxsIHdpbGwgb2NjdXIgX2luIHRo
ZSBmdXR1cmVfLCBub3QgdGhhdCBhIGNhbGwgaGFzIG9jY3VycmVkLiBXaHkgZG9lcyBHb29nbGUg
TW9jayB3b3JrIGxpa2UgdGhhdD8gV2VsbCwgc3BlY2lmeWluZyB0aGUgZXhwZWN0YXRpb24gYmVm
b3JlaGFuZCBhbGxvd3MgR29vZ2xlIE1vY2sgdG8gcmVwb3J0IGEgdmlvbGF0aW9uIGFzIHNvb24g
YXMgaXQgYXJpc2VzLCB3aGVuIHRoZSBjb250ZXh0IChzdGFjayB0cmFjZSwgZXRjKSBpcyBzdGls
bCBhdmFpbGFibGUuIFRoaXMgbWFrZXMgZGVidWdnaW5nIG11Y2ggZWFzaWVyLgorCitBZG1pdHRl
ZGx5LCB0aGlzIHRlc3QgaXMgY29udHJpdmVkIGFuZCBkb2Vzbid0IGRvIG11Y2guIFlvdSBjYW4g
ZWFzaWx5IGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IHdpdGhvdXQgdXNpbmcgR29vZ2xlIE1vY2su
IEhvd2V2ZXIsIGFzIHdlIHNoYWxsIHJldmVhbCBzb29uLCBHb29nbGUgTW9jayBhbGxvd3MgeW91
IHRvIGRvIF9tdWNoIG1vcmVfIHdpdGggdGhlIG1vY2tzLgorCisjIyBVc2luZyBHb29nbGUgTW9j
ayB3aXRoIEFueSBUZXN0aW5nIEZyYW1ld29yayAjIworSWYgeW91IHdhbnQgdG8gdXNlIHNvbWV0
aGluZyBvdGhlciB0aGFuIEdvb2dsZSBUZXN0IChlLmcuIFtDcHBVbml0XShodHRwOi8vYXBwcy5z
b3VyY2Vmb3JnZS5uZXQvbWVkaWF3aWtpL2NwcHVuaXQvaW5kZXgucGhwP3RpdGxlPU1haW5fUGFn
ZSkgb3IKK1tDeHhUZXN0XShodHRwOi8vY3h4dGVzdC50aWdyaXMub3JnLykpIGFzIHlvdXIgdGVz
dGluZyBmcmFtZXdvcmssIGp1c3QgY2hhbmdlIHRoZSBgbWFpbigpYCBmdW5jdGlvbiBpbiB0aGUg
cHJldmlvdXMgc2VjdGlvbiB0bzoKK2BgYAoraW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2
KSB7CisgIC8vIFRoZSBmb2xsb3dpbmcgbGluZSBjYXVzZXMgR29vZ2xlIE1vY2sgdG8gdGhyb3cg
YW4gZXhjZXB0aW9uIG9uIGZhaWx1cmUsCisgIC8vIHdoaWNoIHdpbGwgYmUgaW50ZXJwcmV0ZWQg
YnkgeW91ciB0ZXN0aW5nIGZyYW1ld29yayBhcyBhIHRlc3QgZmFpbHVyZS4KKyAgOjp0ZXN0aW5n
OjpHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpID0gdHJ1ZTsKKyAgOjp0ZXN0aW5nOjpJbml0
R29vZ2xlTW9jaygmYXJnYywgYXJndik7CisgIC4uLiB3aGF0ZXZlciB5b3VyIHRlc3RpbmcgZnJh
bWV3b3JrIHJlcXVpcmVzIC4uLgorfQorYGBgCisKK1RoaXMgYXBwcm9hY2ggaGFzIGEgY2F0Y2g6
IGl0IG1ha2VzIEdvb2dsZSBNb2NrIHRocm93IGFuIGV4Y2VwdGlvbgorZnJvbSBhIG1vY2sgb2Jq
ZWN0J3MgZGVzdHJ1Y3RvciBzb21ldGltZXMuICBXaXRoIHNvbWUgY29tcGlsZXJzLCB0aGlzCitz
b21ldGltZXMgY2F1c2VzIHRoZSB0ZXN0IHByb2dyYW0gdG8gY3Jhc2guICBZb3UnbGwgc3RpbGwg
YmUgYWJsZSB0bworbm90aWNlIHRoYXQgdGhlIHRlc3QgaGFzIGZhaWxlZCwgYnV0IGl0J3Mgbm90
IGEgZ3JhY2VmdWwgZmFpbHVyZS4KKworQSBiZXR0ZXIgc29sdXRpb24gaXMgdG8gdXNlIEdvb2ds
ZSBUZXN0J3MKK1tldmVudCBsaXN0ZW5lciBBUEldKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9n
b29nbGV0ZXN0L3dpa2kvQWR2YW5jZWRHdWlkZSNFeHRlbmRpbmdfR29vZ2xlX1Rlc3RfYnlfSGFu
ZGxpbmdfVGVzdF9FdmVudHMpCit0byByZXBvcnQgYSB0ZXN0IGZhaWx1cmUgdG8geW91ciB0ZXN0
aW5nIGZyYW1ld29yayBwcm9wZXJseS4gIFlvdSdsbCBuZWVkIHRvCitpbXBsZW1lbnQgdGhlIGBP
blRlc3RQYXJ0UmVzdWx0KClgIG1ldGhvZCBvZiB0aGUgZXZlbnQgbGlzdGVuZXIgaW50ZXJmYWNl
LCBidXQgaXQKK3Nob3VsZCBiZSBzdHJhaWdodGZvcndhcmQuCisKK0lmIHRoaXMgdHVybnMgb3V0
IHRvIGJlIHRvbyBtdWNoIHdvcmssIHdlIHN1Z2dlc3QgdGhhdCB5b3Ugc3RpY2sgd2l0aAorR29v
Z2xlIFRlc3QsIHdoaWNoIHdvcmtzIHdpdGggR29vZ2xlIE1vY2sgc2VhbWxlc3NseSAoaW4gZmFj
dCwgaXQgaXMKK3RlY2huaWNhbGx5IHBhcnQgb2YgR29vZ2xlIE1vY2suKS4gIElmIHRoZXJlIGlz
IGEgcmVhc29uIHRoYXQgeW91CitjYW5ub3QgdXNlIEdvb2dsZSBUZXN0LCBwbGVhc2UgbGV0IHVz
IGtub3cuCisKKyMgU2V0dGluZyBFeHBlY3RhdGlvbnMgIworVGhlIGtleSB0byB1c2luZyBhIG1v
Y2sgb2JqZWN0IHN1Y2Nlc3NmdWxseSBpcyB0byBzZXQgdGhlIF9yaWdodCBleHBlY3RhdGlvbnNf
IG9uIGl0LiBJZiB5b3Ugc2V0IHRoZSBleHBlY3RhdGlvbnMgdG9vIHN0cmljdCwgeW91ciB0ZXN0
IHdpbGwgZmFpbCBhcyB0aGUgcmVzdWx0IG9mIHVucmVsYXRlZCBjaGFuZ2VzLiBJZiB5b3Ugc2V0
IHRoZW0gdG9vIGxvb3NlLCBidWdzIGNhbiBzbGlwIHRocm91Z2guIFlvdSB3YW50IHRvIGRvIGl0
IGp1c3QgcmlnaHQgc3VjaCB0aGF0IHlvdXIgdGVzdCBjYW4gY2F0Y2ggZXhhY3RseSB0aGUga2lu
ZCBvZiBidWdzIHlvdSBpbnRlbmQgaXQgdG8gY2F0Y2guIEdvb2dsZSBNb2NrIHByb3ZpZGVzIHRo
ZSBuZWNlc3NhcnkgbWVhbnMgZm9yIHlvdSB0byBkbyBpdCAianVzdCByaWdodC4iCisKKyMjIEdl
bmVyYWwgU3ludGF4ICMjCitJbiBHb29nbGUgTW9jayB3ZSB1c2UgdGhlIGBFWFBFQ1RfQ0FMTCgp
YCBtYWNybyB0byBzZXQgYW4gZXhwZWN0YXRpb24gb24gYSBtb2NrIG1ldGhvZC4gVGhlIGdlbmVy
YWwgc3ludGF4IGlzOgorCitgYGAKK0VYUEVDVF9DQUxMKG1vY2tfb2JqZWN0LCBtZXRob2QobWF0
Y2hlcnMpKQorICAgIC5UaW1lcyhjYXJkaW5hbGl0eSkKKyAgICAuV2lsbE9uY2UoYWN0aW9uKQor
ICAgIC5XaWxsUmVwZWF0ZWRseShhY3Rpb24pOworYGBgCisKK1RoZSBtYWNybyBoYXMgdHdvIGFy
Z3VtZW50czogZmlyc3QgdGhlIG1vY2sgb2JqZWN0LCBhbmQgdGhlbiB0aGUgbWV0aG9kIGFuZCBp
dHMgYXJndW1lbnRzLiBOb3RlIHRoYXQgdGhlIHR3byBhcmUgc2VwYXJhdGVkIGJ5IGEgY29tbWEg
KGAsYCksIG5vdCBhIHBlcmlvZCAoYC5gKS4gKFdoeSB1c2luZyBhIGNvbW1hPyBUaGUgYW5zd2Vy
IGlzIHRoYXQgaXQgd2FzIG5lY2Vzc2FyeSBmb3IgdGVjaG5pY2FsIHJlYXNvbnMuKQorCitUaGUg
bWFjcm8gY2FuIGJlIGZvbGxvd2VkIGJ5IHNvbWUgb3B0aW9uYWwgX2NsYXVzZXNfIHRoYXQgcHJv
dmlkZSBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBleHBlY3RhdGlvbi4gV2UnbGwgZGlzY3Vz
cyBob3cgZWFjaCBjbGF1c2Ugd29ya3MgaW4gdGhlIGNvbWluZyBzZWN0aW9ucy4KKworVGhpcyBz
eW50YXggaXMgZGVzaWduZWQgdG8gbWFrZSBhbiBleHBlY3RhdGlvbiByZWFkIGxpa2UgRW5nbGlz
aC4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gcHJvYmFibHkgZ3Vlc3MgdGhhdAorCitgYGAKK3VzaW5n
IDo6dGVzdGluZzo6UmV0dXJuOy4uLgorRVhQRUNUX0NBTEwodHVydGxlLCBHZXRYKCkpCisgICAg
LlRpbWVzKDUpCisgICAgLldpbGxPbmNlKFJldHVybigxMDApKQorICAgIC5XaWxsT25jZShSZXR1
cm4oMTUwKSkKKyAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKDIwMCkpOworYGBgCisKK3NheXMg
dGhhdCB0aGUgYHR1cnRsZWAgb2JqZWN0J3MgYEdldFgoKWAgbWV0aG9kIHdpbGwgYmUgY2FsbGVk
IGZpdmUgdGltZXMsIGl0IHdpbGwgcmV0dXJuIDEwMCB0aGUgZmlyc3QgdGltZSwgMTUwIHRoZSBz
ZWNvbmQgdGltZSwgYW5kIHRoZW4gMjAwIGV2ZXJ5IHRpbWUuIFNvbWUgcGVvcGxlIGxpa2UgdG8g
Y2FsbCB0aGlzIHN0eWxlIG9mIHN5bnRheCBhIERvbWFpbi1TcGVjaWZpYyBMYW5ndWFnZSAoRFNM
KS4KKworKipOb3RlOioqIFdoeSBkbyB3ZSB1c2UgYSBtYWNybyB0byBkbyB0aGlzPyBJdCBzZXJ2
ZXMgdHdvIHB1cnBvc2VzOiBmaXJzdCBpdCBtYWtlcyBleHBlY3RhdGlvbnMgZWFzaWx5IGlkZW50
aWZpYWJsZSAoZWl0aGVyIGJ5IGBncmVwYCBvciBieSBhIGh1bWFuIHJlYWRlciksIGFuZCBzZWNv
bmQgaXQgYWxsb3dzIEdvb2dsZSBNb2NrIHRvIGluY2x1ZGUgdGhlIHNvdXJjZSBmaWxlIGxvY2F0
aW9uIG9mIGEgZmFpbGVkIGV4cGVjdGF0aW9uIGluIG1lc3NhZ2VzLCBtYWtpbmcgZGVidWdnaW5n
IGVhc2llci4KKworIyMgTWF0Y2hlcnM6IFdoYXQgQXJndW1lbnRzIERvIFdlIEV4cGVjdD8gIyMK
K1doZW4gYSBtb2NrIGZ1bmN0aW9uIHRha2VzIGFyZ3VtZW50cywgd2UgbXVzdCBzcGVjaWZ5IHdo
YXQgYXJndW1lbnRzIHdlIGFyZSBleHBlY3Rpbmc7IGZvciBleGFtcGxlOgorCitgYGAKKy8vIEV4
cGVjdHMgdGhlIHR1cnRsZSB0byBtb3ZlIGZvcndhcmQgYnkgMTAwIHVuaXRzLgorRVhQRUNUX0NB
TEwodHVydGxlLCBGb3J3YXJkKDEwMCkpOworYGBgCisKK1NvbWV0aW1lcyB5b3UgbWF5IG5vdCB3
YW50IHRvIGJlIHRvbyBzcGVjaWZpYyAoUmVtZW1iZXIgdGhhdCB0YWxrIGFib3V0IHRlc3RzIGJl
aW5nIHRvbyByaWdpZD8gT3ZlciBzcGVjaWZpY2F0aW9uIGxlYWRzIHRvIGJyaXR0bGUgdGVzdHMg
YW5kIG9ic2N1cmVzIHRoZSBpbnRlbnQgb2YgdGVzdHMuIFRoZXJlZm9yZSB3ZSBlbmNvdXJhZ2Ug
eW91IHRvIHNwZWNpZnkgb25seSB3aGF0J3MgbmVjZXNzYXJ5IC0gbm8gbW9yZSwgbm8gbGVzcy4p
LiBJZiB5b3UgY2FyZSB0byBjaGVjayB0aGF0IGBGb3J3YXJkKClgIHdpbGwgYmUgY2FsbGVkIGJ1
dCBhcmVuJ3QgaW50ZXJlc3RlZCBpbiBpdHMgYWN0dWFsIGFyZ3VtZW50LCB3cml0ZSBgX2AgYXMg
dGhlIGFyZ3VtZW50LCB3aGljaCBtZWFucyAiYW55dGhpbmcgZ29lcyI6CisKK2BgYAordXNpbmcg
Ojp0ZXN0aW5nOjpfOworLi4uCisvLyBFeHBlY3RzIHRoZSB0dXJ0bGUgdG8gbW92ZSBmb3J3YXJk
LgorRVhQRUNUX0NBTEwodHVydGxlLCBGb3J3YXJkKF8pKTsKK2BgYAorCitgX2AgaXMgYW4gaW5z
dGFuY2Ugb2Ygd2hhdCB3ZSBjYWxsICoqbWF0Y2hlcnMqKi4gQSBtYXRjaGVyIGlzIGxpa2UgYSBw
cmVkaWNhdGUgYW5kIGNhbiB0ZXN0IHdoZXRoZXIgYW4gYXJndW1lbnQgaXMgd2hhdCB3ZSdkIGV4
cGVjdC4gWW91IGNhbiB1c2UgYSBtYXRjaGVyIGluc2lkZSBgRVhQRUNUX0NBTEwoKWAgd2hlcmV2
ZXIgYSBmdW5jdGlvbiBhcmd1bWVudCBpcyBleHBlY3RlZC4KKworQSBsaXN0IG9mIGJ1aWx0LWlu
IG1hdGNoZXJzIGNhbiBiZSBmb3VuZCBpbiB0aGUgW0NoZWF0U2hlZXRdKFYxXzdfQ2hlYXRTaGVl
dC5tZCkuIEZvciBleGFtcGxlLCBoZXJlJ3MgdGhlIGBHZWAgKGdyZWF0ZXIgdGhhbiBvciBlcXVh
bCkgbWF0Y2hlcjoKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6OkdlOy4uLgorRVhQRUNUX0NBTEwo
dHVydGxlLCBGb3J3YXJkKEdlKDEwMCkpKTsKK2BgYAorCitUaGlzIGNoZWNrcyB0aGF0IHRoZSB0
dXJ0bGUgd2lsbCBiZSB0b2xkIHRvIGdvIGZvcndhcmQgYnkgYXQgbGVhc3QgMTAwIHVuaXRzLgor
CisjIyBDYXJkaW5hbGl0aWVzOiBIb3cgTWFueSBUaW1lcyBXaWxsIEl0IEJlIENhbGxlZD8gIyMK
K1RoZSBmaXJzdCBjbGF1c2Ugd2UgY2FuIHNwZWNpZnkgZm9sbG93aW5nIGFuIGBFWFBFQ1RfQ0FM
TCgpYCBpcyBgVGltZXMoKWAuIFdlIGNhbGwgaXRzIGFyZ3VtZW50IGEgKipjYXJkaW5hbGl0eSoq
IGFzIGl0IHRlbGxzIF9ob3cgbWFueSB0aW1lc18gdGhlIGNhbGwgc2hvdWxkIG9jY3VyLiBJdCBh
bGxvd3MgdXMgdG8gcmVwZWF0IGFuIGV4cGVjdGF0aW9uIG1hbnkgdGltZXMgd2l0aG91dCBhY3R1
YWxseSB3cml0aW5nIGl0IGFzIG1hbnkgdGltZXMuIE1vcmUgaW1wb3J0YW50bHksIGEgY2FyZGlu
YWxpdHkgY2FuIGJlICJmdXp6eSIsIGp1c3QgbGlrZSBhIG1hdGNoZXIgY2FuIGJlLiBUaGlzIGFs
bG93cyBhIHVzZXIgdG8gZXhwcmVzcyB0aGUgaW50ZW50IG9mIGEgdGVzdCBleGFjdGx5LgorCitB
biBpbnRlcmVzdGluZyBzcGVjaWFsIGNhc2UgaXMgd2hlbiB3ZSBzYXkgYFRpbWVzKDApYC4gWW91
IG1heSBoYXZlIGd1ZXNzZWQgLSBpdCBtZWFucyB0aGF0IHRoZSBmdW5jdGlvbiBzaG91bGRuJ3Qg
YmUgY2FsbGVkIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cyBhdCBhbGwsIGFuZCBHb29nbGUgTW9j
ayB3aWxsIHJlcG9ydCBhIEdvb2dsZSBUZXN0IGZhaWx1cmUgd2hlbmV2ZXIgdGhlIGZ1bmN0aW9u
IGlzICh3cm9uZ2Z1bGx5KSBjYWxsZWQuCisKK1dlJ3ZlIHNlZW4gYEF0TGVhc3QobilgIGFzIGFu
IGV4YW1wbGUgb2YgZnV6enkgY2FyZGluYWxpdGllcyBlYXJsaWVyLiBGb3IgdGhlIGxpc3Qgb2Yg
YnVpbHQtaW4gY2FyZGluYWxpdGllcyB5b3UgY2FuIHVzZSwgc2VlIHRoZSBbQ2hlYXRTaGVldF0o
VjFfN19DaGVhdFNoZWV0Lm1kKS4KKworVGhlIGBUaW1lcygpYCBjbGF1c2UgY2FuIGJlIG9taXR0
ZWQuICoqSWYgeW91IG9taXQgYFRpbWVzKClgLCBHb29nbGUgTW9jayB3aWxsIGluZmVyIHRoZSBj
YXJkaW5hbGl0eSBmb3IgeW91LioqIFRoZSBydWxlcyBhcmUgZWFzeSB0byByZW1lbWJlcjoKKwor
ICAqIElmICoqbmVpdGhlcioqIGBXaWxsT25jZSgpYCAqKm5vcioqIGBXaWxsUmVwZWF0ZWRseSgp
YCBpcyBpbiB0aGUgYEVYUEVDVF9DQUxMKClgLCB0aGUgaW5mZXJyZWQgY2FyZGluYWxpdHkgaXMg
YFRpbWVzKDEpYC4KKyAgKiBJZiB0aGVyZSBhcmUgYG4gV2lsbE9uY2UoKWAncyBidXQgKipubyoq
IGBXaWxsUmVwZWF0ZWRseSgpYCwgd2hlcmUgYG5gID49IDEsIHRoZSBjYXJkaW5hbGl0eSBpcyBg
VGltZXMobilgLgorICAqIElmIHRoZXJlIGFyZSBgbiBXaWxsT25jZSgpYCdzIGFuZCAqKm9uZSoq
IGBXaWxsUmVwZWF0ZWRseSgpYCwgd2hlcmUgYG5gID49IDAsIHRoZSBjYXJkaW5hbGl0eSBpcyBg
VGltZXMoQXRMZWFzdChuKSlgLgorCisqKlF1aWNrIHF1aXo6Kiogd2hhdCBkbyB5b3UgdGhpbmsg
d2lsbCBoYXBwZW4gaWYgYSBmdW5jdGlvbiBpcyBleHBlY3RlZCB0byBiZSBjYWxsZWQgdHdpY2Ug
YnV0IGFjdHVhbGx5IGNhbGxlZCBmb3VyIHRpbWVzPworCisjIyBBY3Rpb25zOiBXaGF0IFNob3Vs
ZCBJdCBEbz8gIyMKK1JlbWVtYmVyIHRoYXQgYSBtb2NrIG9iamVjdCBkb2Vzbid0IHJlYWxseSBo
YXZlIGEgd29ya2luZyBpbXBsZW1lbnRhdGlvbj8gV2UgYXMgdXNlcnMgaGF2ZSB0byB0ZWxsIGl0
IHdoYXQgdG8gZG8gd2hlbiBhIG1ldGhvZCBpcyBpbnZva2VkLiBUaGlzIGlzIGVhc3kgaW4gR29v
Z2xlIE1vY2suCisKK0ZpcnN0LCBpZiB0aGUgcmV0dXJuIHR5cGUgb2YgYSBtb2NrIGZ1bmN0aW9u
IGlzIGEgYnVpbHQtaW4gdHlwZSBvciBhIHBvaW50ZXIsIHRoZSBmdW5jdGlvbiBoYXMgYSAqKmRl
ZmF1bHQgYWN0aW9uKiogKGEgYHZvaWRgIGZ1bmN0aW9uIHdpbGwganVzdCByZXR1cm4sIGEgYGJv
b2xgIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGBmYWxzZWAsIGFuZCBvdGhlciBmdW5jdGlvbnMgd2ls
bCByZXR1cm4gMCkuIElmIHlvdSBkb24ndCBzYXkgYW55dGhpbmcsIHRoaXMgYmVoYXZpb3Igd2ls
bCBiZSB1c2VkLgorCitTZWNvbmQsIGlmIGEgbW9jayBmdW5jdGlvbiBkb2Vzbid0IGhhdmUgYSBk
ZWZhdWx0IGFjdGlvbiwgb3IgdGhlIGRlZmF1bHQgYWN0aW9uIGRvZXNuJ3Qgc3VpdCB5b3UsIHlv
dSBjYW4gc3BlY2lmeSB0aGUgYWN0aW9uIHRvIGJlIHRha2VuIGVhY2ggdGltZSB0aGUgZXhwZWN0
YXRpb24gbWF0Y2hlcyB1c2luZyBhIHNlcmllcyBvZiBgV2lsbE9uY2UoKWAgY2xhdXNlcyBmb2xs
b3dlZCBieSBhbiBvcHRpb25hbCBgV2lsbFJlcGVhdGVkbHkoKWAuIEZvciBleGFtcGxlLAorCitg
YGAKK3VzaW5nIDo6dGVzdGluZzo6UmV0dXJuOy4uLgorRVhQRUNUX0NBTEwodHVydGxlLCBHZXRY
KCkpCisgICAgLldpbGxPbmNlKFJldHVybigxMDApKQorICAgIC5XaWxsT25jZShSZXR1cm4oMjAw
KSkKKyAgICAuV2lsbE9uY2UoUmV0dXJuKDMwMCkpOworYGBgCisKK1RoaXMgc2F5cyB0aGF0IGB0
dXJ0bGUuR2V0WCgpYCB3aWxsIGJlIGNhbGxlZCBfZXhhY3RseSB0aHJlZSB0aW1lc18gKEdvb2ds
ZSBNb2NrIGluZmVycmVkIHRoaXMgZnJvbSBob3cgbWFueSBgV2lsbE9uY2UoKWAgY2xhdXNlcyB3
ZSd2ZSB3cml0dGVuLCBzaW5jZSB3ZSBkaWRuJ3QgZXhwbGljaXRseSB3cml0ZSBgVGltZXMoKWAp
LCBhbmQgd2lsbCByZXR1cm4gMTAwLCAyMDAsIGFuZCAzMDAgcmVzcGVjdGl2ZWx5LgorCitgYGAK
K3VzaW5nIDo6dGVzdGluZzo6UmV0dXJuOy4uLgorRVhQRUNUX0NBTEwodHVydGxlLCBHZXRZKCkp
CisgICAgLldpbGxPbmNlKFJldHVybigxMDApKQorICAgIC5XaWxsT25jZShSZXR1cm4oMjAwKSkK
KyAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKDMwMCkpOworYGBgCisKK3NheXMgdGhhdCBgdHVy
dGxlLkdldFkoKWAgd2lsbCBiZSBjYWxsZWQgX2F0IGxlYXN0IHR3aWNlXyAoR29vZ2xlIE1vY2sg
a25vd3MgdGhpcyBhcyB3ZSd2ZSB3cml0dGVuIHR3byBgV2lsbE9uY2UoKWAgY2xhdXNlcyBhbmQg
YSBgV2lsbFJlcGVhdGVkbHkoKWAgd2hpbGUgaGF2aW5nIG5vIGV4cGxpY2l0IGBUaW1lcygpYCks
IHdpbGwgcmV0dXJuIDEwMCB0aGUgZmlyc3QgdGltZSwgMjAwIHRoZSBzZWNvbmQgdGltZSwgYW5k
IDMwMCBmcm9tIHRoZSB0aGlyZCB0aW1lIG9uLgorCitPZiBjb3Vyc2UsIGlmIHlvdSBleHBsaWNp
dGx5IHdyaXRlIGEgYFRpbWVzKClgLCBHb29nbGUgTW9jayB3aWxsIG5vdCB0cnkgdG8gaW5mZXIg
dGhlIGNhcmRpbmFsaXR5IGl0c2VsZi4gV2hhdCBpZiB0aGUgbnVtYmVyIHlvdSBzcGVjaWZpZWQg
aXMgbGFyZ2VyIHRoYW4gdGhlcmUgYXJlIGBXaWxsT25jZSgpYCBjbGF1c2VzPyBXZWxsLCBhZnRl
ciBhbGwgYFdpbGxPbmNlKClgcyBhcmUgdXNlZCB1cCwgR29vZ2xlIE1vY2sgd2lsbCBkbyB0aGUg
X2RlZmF1bHRfIGFjdGlvbiBmb3IgdGhlIGZ1bmN0aW9uIGV2ZXJ5IHRpbWUgKHVubGVzcywgb2Yg
Y291cnNlLCB5b3UgaGF2ZSBhIGBXaWxsUmVwZWF0ZWRseSgpYC4pLgorCitXaGF0IGNhbiB3ZSBk
byBpbnNpZGUgYFdpbGxPbmNlKClgIGJlc2lkZXMgYFJldHVybigpYD8gWW91IGNhbiByZXR1cm4g
YSByZWZlcmVuY2UgdXNpbmcgYFJldHVyblJlZih2YXJpYWJsZSlgLCBvciBpbnZva2UgYSBwcmUt
ZGVmaW5lZCBmdW5jdGlvbiwgYW1vbmcgW290aGVyc10oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9w
L2dvb2dsZW1vY2svd2lraS9WMV83X0NoZWF0U2hlZXQjQWN0aW9ucykuCisKKyoqSW1wb3J0YW50
IG5vdGU6KiogVGhlIGBFWFBFQ1RfQ0FMTCgpYCBzdGF0ZW1lbnQgZXZhbHVhdGVzIHRoZSBhY3Rp
b24gY2xhdXNlIG9ubHkgb25jZSwgZXZlbiB0aG91Z2ggdGhlIGFjdGlvbiBtYXkgYmUgcGVyZm9y
bWVkIG1hbnkgdGltZXMuIFRoZXJlZm9yZSB5b3UgbXVzdCBiZSBjYXJlZnVsIGFib3V0IHNpZGUg
ZWZmZWN0cy4gVGhlIGZvbGxvd2luZyBtYXkgbm90IGRvIHdoYXQgeW91IHdhbnQ6CisKK2BgYAor
aW50IG4gPSAxMDA7CitFWFBFQ1RfQ0FMTCh0dXJ0bGUsIEdldFgoKSkKKy5UaW1lcyg0KQorLldp
bGxSZXBlYXRlZGx5KFJldHVybihuKyspKTsKK2BgYAorCitJbnN0ZWFkIG9mIHJldHVybmluZyAx
MDAsIDEwMSwgMTAyLCAuLi4sIGNvbnNlY3V0aXZlbHksIHRoaXMgbW9jayBmdW5jdGlvbiB3aWxs
IGFsd2F5cyByZXR1cm4gMTAwIGFzIGBuKytgIGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuIFNpbWls
YXJseSwgYFJldHVybihuZXcgRm9vKWAgd2lsbCBjcmVhdGUgYSBuZXcgYEZvb2Agb2JqZWN0IHdo
ZW4gdGhlIGBFWFBFQ1RfQ0FMTCgpYCBpcyBleGVjdXRlZCwgYW5kIHdpbGwgcmV0dXJuIHRoZSBz
YW1lIHBvaW50ZXIgZXZlcnkgdGltZS4gSWYgeW91IHdhbnQgdGhlIHNpZGUgZWZmZWN0IHRvIGhh
cHBlbiBldmVyeSB0aW1lLCB5b3UgbmVlZCB0byBkZWZpbmUgYSBjdXN0b20gYWN0aW9uLCB3aGlj
aCB3ZSdsbCB0ZWFjaCBpbiB0aGUgW0Nvb2tCb29rXShWMV83X0Nvb2tCb29rLm1kKS4KKworVGlt
ZSBmb3IgYW5vdGhlciBxdWl6ISBXaGF0IGRvIHlvdSB0aGluayB0aGUgZm9sbG93aW5nIG1lYW5z
PworCitgYGAKK3VzaW5nIDo6dGVzdGluZzo6UmV0dXJuOy4uLgorRVhQRUNUX0NBTEwodHVydGxl
LCBHZXRZKCkpCisuVGltZXMoNCkKKy5XaWxsT25jZShSZXR1cm4oMTAwKSk7CitgYGAKKworT2J2
aW91c2x5IGB0dXJ0bGUuR2V0WSgpYCBpcyBleHBlY3RlZCB0byBiZSBjYWxsZWQgZm91ciB0aW1l
cy4gQnV0IGlmIHlvdSB0aGluayBpdCB3aWxsIHJldHVybiAxMDAgZXZlcnkgdGltZSwgdGhpbmsg
dHdpY2UhIFJlbWVtYmVyIHRoYXQgb25lIGBXaWxsT25jZSgpYCBjbGF1c2Ugd2lsbCBiZSBjb25z
dW1lZCBlYWNoIHRpbWUgdGhlIGZ1bmN0aW9uIGlzIGludm9rZWQgYW5kIHRoZSBkZWZhdWx0IGFj
dGlvbiB3aWxsIGJlIHRha2VuIGFmdGVyd2FyZHMuIFNvIHRoZSByaWdodCBhbnN3ZXIgaXMgdGhh
dCBgdHVydGxlLkdldFkoKWAgd2lsbCByZXR1cm4gMTAwIHRoZSBmaXJzdCB0aW1lLCBidXQgKipy
ZXR1cm4gMCBmcm9tIHRoZSBzZWNvbmQgdGltZSBvbioqLCBhcyByZXR1cm5pbmcgMCBpcyB0aGUg
ZGVmYXVsdCBhY3Rpb24gZm9yIGBpbnRgIGZ1bmN0aW9ucy4KKworIyMgVXNpbmcgTXVsdGlwbGUg
RXhwZWN0YXRpb25zICMjCitTbyBmYXIgd2UndmUgb25seSBzaG93biBleGFtcGxlcyB3aGVyZSB5
b3UgaGF2ZSBhIHNpbmdsZSBleHBlY3RhdGlvbi4gTW9yZSByZWFsaXN0aWNhbGx5LCB5b3UncmUg
Z29pbmcgdG8gc3BlY2lmeSBleHBlY3RhdGlvbnMgb24gbXVsdGlwbGUgbW9jayBtZXRob2RzLCB3
aGljaCBtYXkgYmUgZnJvbSBtdWx0aXBsZSBtb2NrIG9iamVjdHMuCisKK0J5IGRlZmF1bHQsIHdo
ZW4gYSBtb2NrIG1ldGhvZCBpcyBpbnZva2VkLCBHb29nbGUgTW9jayB3aWxsIHNlYXJjaCB0aGUg
ZXhwZWN0YXRpb25zIGluIHRoZSAqKnJldmVyc2Ugb3JkZXIqKiB0aGV5IGFyZSBkZWZpbmVkLCBh
bmQgc3RvcCB3aGVuIGFuIGFjdGl2ZSBleHBlY3RhdGlvbiB0aGF0IG1hdGNoZXMgdGhlIGFyZ3Vt
ZW50cyBpcyBmb3VuZCAoeW91IGNhbiB0aGluayBvZiBpdCBhcyAibmV3ZXIgcnVsZXMgb3ZlcnJp
ZGUgb2xkZXIgb25lcy4iKS4gSWYgdGhlIG1hdGNoaW5nIGV4cGVjdGF0aW9uIGNhbm5vdCB0YWtl
IGFueSBtb3JlIGNhbGxzLCB5b3Ugd2lsbCBnZXQgYW4gdXBwZXItYm91bmQtdmlvbGF0ZWQgZmFp
bHVyZS4gSGVyZSdzIGFuIGV4YW1wbGU6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpfOy4uLgor
RVhQRUNUX0NBTEwodHVydGxlLCBGb3J3YXJkKF8pKTsgIC8vICMxCitFWFBFQ1RfQ0FMTCh0dXJ0
bGUsIEZvcndhcmQoMTApKSAgLy8gIzIKKyAgICAuVGltZXMoMik7CitgYGAKKworSWYgYEZvcndh
cmQoMTApYCBpcyBjYWxsZWQgdGhyZWUgdGltZXMgaW4gYSByb3csIHRoZSB0aGlyZCB0aW1lIGl0
IHdpbGwgYmUgYW4gZXJyb3IsIGFzIHRoZSBsYXN0IG1hdGNoaW5nIGV4cGVjdGF0aW9uICgjMikg
aGFzIGJlZW4gc2F0dXJhdGVkLiBJZiwgaG93ZXZlciwgdGhlIHRoaXJkIGBGb3J3YXJkKDEwKWAg
Y2FsbCBpcyByZXBsYWNlZCBieSBgRm9yd2FyZCgyMClgLCB0aGVuIGl0IHdvdWxkIGJlIE9LLCBh
cyBub3cgIzEgd2lsbCBiZSB0aGUgbWF0Y2hpbmcgZXhwZWN0YXRpb24uCisKKyoqU2lkZSBub3Rl
OioqIFdoeSBkb2VzIEdvb2dsZSBNb2NrIHNlYXJjaCBmb3IgYSBtYXRjaCBpbiB0aGUgX3JldmVy
c2VfIG9yZGVyIG9mIHRoZSBleHBlY3RhdGlvbnM/IFRoZSByZWFzb24gaXMgdGhhdCB0aGlzIGFs
bG93cyBhIHVzZXIgdG8gc2V0IHVwIHRoZSBkZWZhdWx0IGV4cGVjdGF0aW9ucyBpbiBhIG1vY2sg
b2JqZWN0J3MgY29uc3RydWN0b3Igb3IgdGhlIHRlc3QgZml4dHVyZSdzIHNldC11cCBwaGFzZSBh
bmQgdGhlbiBjdXN0b21pemUgdGhlIG1vY2sgYnkgd3JpdGluZyBtb3JlIHNwZWNpZmljIGV4cGVj
dGF0aW9ucyBpbiB0aGUgdGVzdCBib2R5LiBTbywgaWYgeW91IGhhdmUgdHdvIGV4cGVjdGF0aW9u
cyBvbiB0aGUgc2FtZSBtZXRob2QsIHlvdSB3YW50IHRvIHB1dCB0aGUgb25lIHdpdGggbW9yZSBz
cGVjaWZpYyBtYXRjaGVycyAqKmFmdGVyKiogdGhlIG90aGVyLCBvciB0aGUgbW9yZSBzcGVjaWZp
YyBydWxlIHdvdWxkIGJlIHNoYWRvd2VkIGJ5IHRoZSBtb3JlIGdlbmVyYWwgb25lIHRoYXQgY29t
ZXMgYWZ0ZXIgaXQuCisKKyMjIE9yZGVyZWQgdnMgVW5vcmRlcmVkIENhbGxzICMjCitCeSBkZWZh
dWx0LCBhbiBleHBlY3RhdGlvbiBjYW4gbWF0Y2ggYSBjYWxsIGV2ZW4gdGhvdWdoIGFuIGVhcmxp
ZXIgZXhwZWN0YXRpb24gaGFzbid0IGJlZW4gc2F0aXNmaWVkLiBJbiBvdGhlciB3b3JkcywgdGhl
IGNhbGxzIGRvbid0IGhhdmUgdG8gb2NjdXIgaW4gdGhlIG9yZGVyIHRoZSBleHBlY3RhdGlvbnMg
YXJlIHNwZWNpZmllZC4KKworU29tZXRpbWVzLCB5b3UgbWF5IHdhbnQgYWxsIHRoZSBleHBlY3Rl
ZCBjYWxscyB0byBvY2N1ciBpbiBhIHN0cmljdCBvcmRlci4gVG8gc2F5IHRoaXMgaW4gR29vZ2xl
IE1vY2sgaXMgZWFzeToKKworYGBgCit1c2luZyA6OnRlc3Rpbmc6OkluU2VxdWVuY2U7Li4uCitU
RVNUKEZvb1Rlc3QsIERyYXdzTGluZVNlZ21lbnQpIHsKKyAgLi4uCisgIHsKKyAgICBJblNlcXVl
bmNlIGR1bW15OworCisgICAgRVhQRUNUX0NBTEwodHVydGxlLCBQZW5Eb3duKCkpOworICAgIEVY
UEVDVF9DQUxMKHR1cnRsZSwgRm9yd2FyZCgxMDApKTsKKyAgICBFWFBFQ1RfQ0FMTCh0dXJ0bGUs
IFBlblVwKCkpOworICB9CisgIEZvbygpOworfQorYGBgCisKK0J5IGNyZWF0aW5nIGFuIG9iamVj
dCBvZiB0eXBlIGBJblNlcXVlbmNlYCwgYWxsIGV4cGVjdGF0aW9ucyBpbiBpdHMgc2NvcGUgYXJl
IHB1dCBpbnRvIGEgX3NlcXVlbmNlXyBhbmQgaGF2ZSB0byBvY2N1ciBfc2VxdWVudGlhbGx5Xy4g
U2luY2Ugd2UgYXJlIGp1c3QgcmVseWluZyBvbiB0aGUgY29uc3RydWN0b3IgYW5kIGRlc3RydWN0
b3Igb2YgdGhpcyBvYmplY3QgdG8gZG8gdGhlIGFjdHVhbCB3b3JrLCBpdHMgbmFtZSBpcyByZWFs
bHkgaXJyZWxldmFudC4KKworSW4gdGhpcyBleGFtcGxlLCB3ZSB0ZXN0IHRoYXQgYEZvbygpYCBj
YWxscyB0aGUgdGhyZWUgZXhwZWN0ZWQgZnVuY3Rpb25zIGluIHRoZSBvcmRlciBhcyB3cml0dGVu
LiBJZiBhIGNhbGwgaXMgbWFkZSBvdXQtb2Ytb3JkZXIsIGl0IHdpbGwgYmUgYW4gZXJyb3IuCisK
KyhXaGF0IGlmIHlvdSBjYXJlIGFib3V0IHRoZSByZWxhdGl2ZSBvcmRlciBvZiBzb21lIG9mIHRo
ZSBjYWxscywgYnV0IG5vdCBhbGwgb2YgdGhlbT8gQ2FuIHlvdSBzcGVjaWZ5IGFuIGFyYml0cmFy
eSBwYXJ0aWFsIG9yZGVyPyBUaGUgYW5zd2VyIGlzIC4uLiB5ZXMhIElmIHlvdSBhcmUgaW1wYXRp
ZW50LCB0aGUgZGV0YWlscyBjYW4gYmUgZm91bmQgaW4gdGhlIFtDb29rQm9va10oVjFfN19Db29r
Qm9vayNFeHBlY3RpbmdfUGFydGlhbGx5X09yZGVyZWRfQ2FsbHMubWQpLikKKworIyMgQWxsIEV4
cGVjdGF0aW9ucyBBcmUgU3RpY2t5IChVbmxlc3MgU2FpZCBPdGhlcndpc2UpICMjCitOb3cgbGV0
J3MgZG8gYSBxdWljayBxdWl6IHRvIHNlZSBob3cgd2VsbCB5b3UgY2FuIHVzZSB0aGlzIG1vY2sg
c3R1ZmYgYWxyZWFkeS4gSG93IHdvdWxkIHlvdSB0ZXN0IHRoYXQgdGhlIHR1cnRsZSBpcyBhc2tl
ZCB0byBnbyB0byB0aGUgb3JpZ2luIF9leGFjdGx5IHR3aWNlXyAoeW91IHdhbnQgdG8gaWdub3Jl
IGFueSBvdGhlciBpbnN0cnVjdGlvbnMgaXQgcmVjZWl2ZXMpPworCitBZnRlciB5b3UndmUgY29t
ZSB1cCB3aXRoIHlvdXIgYW5zd2VyLCB0YWtlIGEgbG9vayBhdCBvdXJzIGFuZCBjb21wYXJlIG5v
dGVzIChzb2x2ZSBpdCB5b3Vyc2VsZiBmaXJzdCAtIGRvbid0IGNoZWF0ISk6CisKK2BgYAordXNp
bmcgOjp0ZXN0aW5nOjpfOy4uLgorRVhQRUNUX0NBTEwodHVydGxlLCBHb1RvKF8sIF8pKSAgLy8g
IzEKKyAgICAuVGltZXMoQW55TnVtYmVyKCkpOworRVhQRUNUX0NBTEwodHVydGxlLCBHb1RvKDAs
IDApKSAgLy8gIzIKKyAgICAuVGltZXMoMik7CitgYGAKKworU3VwcG9zZSBgdHVydGxlLkdvVG8o
MCwgMClgIGlzIGNhbGxlZCB0aHJlZSB0aW1lcy4gSW4gdGhlIHRoaXJkIHRpbWUsIEdvb2dsZSBN
b2NrIHdpbGwgc2VlIHRoYXQgdGhlIGFyZ3VtZW50cyBtYXRjaCBleHBlY3RhdGlvbiAjMiAocmVt
ZW1iZXIgdGhhdCB3ZSBhbHdheXMgcGljayB0aGUgbGFzdCBtYXRjaGluZyBleHBlY3RhdGlvbiku
IE5vdywgc2luY2Ugd2Ugc2FpZCB0aGF0IHRoZXJlIHNob3VsZCBiZSBvbmx5IHR3byBzdWNoIGNh
bGxzLCBHb29nbGUgTW9jayB3aWxsIHJlcG9ydCBhbiBlcnJvciBpbW1lZGlhdGVseS4gVGhpcyBp
cyBiYXNpY2FsbHkgd2hhdCB3ZSd2ZSB0b2xkIHlvdSBpbiB0aGUgIlVzaW5nIE11bHRpcGxlIEV4
cGVjdGF0aW9ucyIgc2VjdGlvbiBhYm92ZS4KKworVGhpcyBleGFtcGxlIHNob3dzIHRoYXQgKipl
eHBlY3RhdGlvbnMgaW4gR29vZ2xlIE1vY2sgYXJlICJzdGlja3kiIGJ5IGRlZmF1bHQqKiwgaW4g
dGhlIHNlbnNlIHRoYXQgdGhleSByZW1haW4gYWN0aXZlIGV2ZW4gYWZ0ZXIgd2UgaGF2ZSByZWFj
aGVkIHRoZWlyIGludm9jYXRpb24gdXBwZXIgYm91bmRzLiBUaGlzIGlzIGFuIGltcG9ydGFudCBy
dWxlIHRvIHJlbWVtYmVyLCBhcyBpdCBhZmZlY3RzIHRoZSBtZWFuaW5nIG9mIHRoZSBzcGVjLCBh
bmQgaXMgKipkaWZmZXJlbnQqKiB0byBob3cgaXQncyBkb25lIGluIG1hbnkgb3RoZXIgbW9ja2lu
ZyBmcmFtZXdvcmtzIChXaHknZCB3ZSBkbyB0aGF0PyBCZWNhdXNlIHdlIHRoaW5rIG91ciBydWxl
IG1ha2VzIHRoZSBjb21tb24gY2FzZXMgZWFzaWVyIHRvIGV4cHJlc3MgYW5kIHVuZGVyc3RhbmQu
KS4KKworU2ltcGxlPyBMZXQncyBzZWUgaWYgeW91J3ZlIHJlYWxseSB1bmRlcnN0b29kIGl0OiB3
aGF0IGRvZXMgdGhlIGZvbGxvd2luZyBjb2RlIHNheT8KKworYGBgCit1c2luZyA6OnRlc3Rpbmc6
OlJldHVybjsKKy4uLgorZm9yIChpbnQgaSA9IG47IGkgPiAwOyBpLS0pIHsKKyAgRVhQRUNUX0NB
TEwodHVydGxlLCBHZXRYKCkpCisgICAgICAuV2lsbE9uY2UoUmV0dXJuKDEwKmkpKTsKK30KK2Bg
YAorCitJZiB5b3UgdGhpbmsgaXQgc2F5cyB0aGF0IGB0dXJ0bGUuR2V0WCgpYCB3aWxsIGJlIGNh
bGxlZCBgbmAgdGltZXMgYW5kIHdpbGwgcmV0dXJuIDEwLCAyMCwgMzAsIC4uLiwgY29uc2VjdXRp
dmVseSwgdGhpbmsgdHdpY2UhIFRoZSBwcm9ibGVtIGlzIHRoYXQsIGFzIHdlIHNhaWQsIGV4cGVj
dGF0aW9ucyBhcmUgc3RpY2t5LiBTbywgdGhlIHNlY29uZCB0aW1lIGB0dXJ0bGUuR2V0WCgpYCBp
cyBjYWxsZWQsIHRoZSBsYXN0IChsYXRlc3QpIGBFWFBFQ1RfQ0FMTCgpYCBzdGF0ZW1lbnQgd2ls
bCBtYXRjaCwgYW5kIHdpbGwgaW1tZWRpYXRlbHkgbGVhZCB0byBhbiAidXBwZXIgYm91bmQgZXhj
ZWVkZWQiIGVycm9yIC0gdGhpcyBwaWVjZSBvZiBjb2RlIGlzIG5vdCB2ZXJ5IHVzZWZ1bCEKKwor
T25lIGNvcnJlY3Qgd2F5IG9mIHNheWluZyB0aGF0IGB0dXJ0bGUuR2V0WCgpYCB3aWxsIHJldHVy
biAxMCwgMjAsIDMwLCAuLi4sIGlzIHRvIGV4cGxpY2l0bHkgc2F5IHRoYXQgdGhlIGV4cGVjdGF0
aW9ucyBhcmUgX25vdF8gc3RpY2t5LiBJbiBvdGhlciB3b3JkcywgdGhleSBzaG91bGQgX3JldGly
ZV8gYXMgc29vbiBhcyB0aGV5IGFyZSBzYXR1cmF0ZWQ6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5n
OjpSZXR1cm47CisuLi4KK2ZvciAoaW50IGkgPSBuOyBpID4gMDsgaS0tKSB7CisgIEVYUEVDVF9D
QUxMKHR1cnRsZSwgR2V0WCgpKQorICAgIC5XaWxsT25jZShSZXR1cm4oMTAqaSkpCisgICAgLlJl
dGlyZXNPblNhdHVyYXRpb24oKTsKK30KK2BgYAorCitBbmQsIHRoZXJlJ3MgYSBiZXR0ZXIgd2F5
IHRvIGRvIGl0OiBpbiB0aGlzIGNhc2UsIHdlIGV4cGVjdCB0aGUgY2FsbHMgdG8gb2NjdXIgaW4g
YSBzcGVjaWZpYyBvcmRlciwgYW5kIHdlIGxpbmUgdXAgdGhlIGFjdGlvbnMgdG8gbWF0Y2ggdGhl
IG9yZGVyLiBTaW5jZSB0aGUgb3JkZXIgaXMgaW1wb3J0YW50IGhlcmUsIHdlIHNob3VsZCBtYWtl
IGl0IGV4cGxpY2l0IHVzaW5nIGEgc2VxdWVuY2U6CisKK2BgYAordXNpbmcgOjp0ZXN0aW5nOjpJ
blNlcXVlbmNlOwordXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm47CisuLi4KK3sKKyAgSW5TZXF1ZW5j
ZSBzOworCisgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgeworICAgIEVYUEVDVF9DQUxM
KHR1cnRsZSwgR2V0WCgpKQorICAgICAgICAuV2lsbE9uY2UoUmV0dXJuKDEwKmkpKQorICAgICAg
ICAuUmV0aXJlc09uU2F0dXJhdGlvbigpOworICB9Cit9CitgYGAKKworQnkgdGhlIHdheSwgdGhl
IG90aGVyIHNpdHVhdGlvbiB3aGVyZSBhbiBleHBlY3RhdGlvbiBtYXkgX25vdF8gYmUgc3RpY2t5
IGlzIHdoZW4gaXQncyBpbiBhIHNlcXVlbmNlIC0gYXMgc29vbiBhcyBhbm90aGVyIGV4cGVjdGF0
aW9uIHRoYXQgY29tZXMgYWZ0ZXIgaXQgaW4gdGhlIHNlcXVlbmNlIGhhcyBiZWVuIHVzZWQsIGl0
IGF1dG9tYXRpY2FsbHkgcmV0aXJlcyAoYW5kIHdpbGwgbmV2ZXIgYmUgdXNlZCB0byBtYXRjaCBh
bnkgY2FsbCkuCisKKyMjIFVuaW50ZXJlc3RpbmcgQ2FsbHMgIyMKK0EgbW9jayBvYmplY3QgbWF5
IGhhdmUgbWFueSBtZXRob2RzLCBhbmQgbm90IGFsbCBvZiB0aGVtIGFyZSB0aGF0IGludGVyZXN0
aW5nLiBGb3IgZXhhbXBsZSwgaW4gc29tZSB0ZXN0cyB3ZSBtYXkgbm90IGNhcmUgYWJvdXQgaG93
IG1hbnkgdGltZXMgYEdldFgoKWAgYW5kIGBHZXRZKClgIGdldCBjYWxsZWQuCisKK0luIEdvb2ds
ZSBNb2NrLCBpZiB5b3UgYXJlIG5vdCBpbnRlcmVzdGVkIGluIGEgbWV0aG9kLCBqdXN0IGRvbid0
IHNheSBhbnl0aGluZyBhYm91dCBpdC4gSWYgYSBjYWxsIHRvIHRoaXMgbWV0aG9kIG9jY3Vycywg
eW91J2xsIHNlZSBhIHdhcm5pbmcgaW4gdGhlIHRlc3Qgb3V0cHV0LCBidXQgaXQgd29uJ3QgYmUg
YSBmYWlsdXJlLgorCisjIFdoYXQgTm93PyAjCitDb25ncmF0dWxhdGlvbnMhIFlvdSd2ZSBsZWFy
bmVkIGVub3VnaCBhYm91dCBHb29nbGUgTW9jayB0byBzdGFydCB1c2luZyBpdC4gTm93LCB5b3Ug
bWlnaHQgd2FudCB0byBqb2luIHRoZSBbZ29vZ2xlbW9ja10oaHR0cDovL2dyb3Vwcy5nb29nbGUu
Y29tL2dyb3VwL2dvb2dsZW1vY2spIGRpc2N1c3Npb24gZ3JvdXAgYW5kIGFjdHVhbGx5IHdyaXRl
IHNvbWUgdGVzdHMgdXNpbmcgR29vZ2xlIE1vY2sgLSBpdCB3aWxsIGJlIGZ1bi4gSGV5LCBpdCBt
YXkgZXZlbiBiZSBhZGRpY3RpdmUgLSB5b3UndmUgYmVlbiB3YXJuZWQuCisKK1RoZW4sIGlmIHlv
dSBmZWVsIGxpa2UgaW5jcmVhc2luZyB5b3VyIG1vY2sgcXVvdGllbnQsIHlvdSBzaG91bGQgbW92
ZSBvbiB0byB0aGUgW0Nvb2tCb29rXShWMV83X0Nvb2tCb29rLm1kKS4gWW91IGNhbiBsZWFybiBt
YW55IGFkdmFuY2VkIGZlYXR1cmVzIG9mIEdvb2dsZSBNb2NrIHRoZXJlIC0tIGFuZCBhZHZhbmNl
IHlvdXIgbGV2ZWwgb2YgZW5qb3ltZW50IGFuZCB0ZXN0aW5nIGJsaXNzLgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvdjFfNy9GcmVxdWVu
dGx5QXNrZWRRdWVzdGlvbnMubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL3YxXzcvRnJlcXVlbnRseUFz
a2VkUXVlc3Rpb25zLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhMjEyMzNhYTI1NTA0ZmNhNjNkYjEzYmYxYmU1
OGUyZjVjMzk0ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL3YxXzcvRnJl
cXVlbnRseUFza2VkUXVlc3Rpb25zLm1kCkBAIC0wLDAgKzEsNjI4IEBACisKKworUGxlYXNlIHNl
bmQgeW91ciBxdWVzdGlvbnMgdG8gdGhlCitbZ29vZ2xlbW9ja10oaHR0cDovL2dyb3Vwcy5nb29n
bGUuY29tL2dyb3VwL2dvb2dsZW1vY2spIGRpc2N1c3Npb24KK2dyb3VwLiBJZiB5b3UgbmVlZCBo
ZWxwIHdpdGggY29tcGlsZXIgZXJyb3JzLCBtYWtlIHN1cmUgeW91IGhhdmUKK3RyaWVkIFtHb29n
bGUgTW9jayBEb2N0b3JdKCNIb3dfYW1fSV9zdXBwb3NlZF90b19tYWtlX3NlbnNlX29mX3RoZXNl
X2hvcnJpYmxlX3RlbXBsYXRlX2Vycm9yLm1kKSBmaXJzdC4KKworIyMgV2hlbiBJIGNhbGwgYSBt
ZXRob2Qgb24gbXkgbW9jayBvYmplY3QsIHRoZSBtZXRob2QgZm9yIHRoZSByZWFsIG9iamVjdCBp
cyBpbnZva2VkIGluc3RlYWQuICBXaGF0J3MgdGhlIHByb2JsZW0/ICMjCisKK0luIG9yZGVyIGZv
ciBhIG1ldGhvZCB0byBiZSBtb2NrZWQsIGl0IG11c3QgYmUgX3ZpcnR1YWxfLCB1bmxlc3MgeW91
IHVzZSB0aGUgW2hpZ2gtcGVyZiBkZXBlbmRlbmN5IGluamVjdGlvbiB0ZWNobmlxdWVdKGh0dHA6
Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGVtb2NrL3dpa2kvVjFfN19Db29rQm9vayNNb2NraW5n
X05vbnZpcnR1YWxfTWV0aG9kcykuCisKKyMjIEkgd3JvdGUgc29tZSBtYXRjaGVycy4gIEFmdGVy
IEkgdXBncmFkZWQgdG8gYSBuZXcgdmVyc2lvbiBvZiBHb29nbGUgTW9jaywgdGhleSBubyBsb25n
ZXIgY29tcGlsZS4gIFdoYXQncyBnb2luZyBvbj8gIyMKKworQWZ0ZXIgdmVyc2lvbiAxLjQuMCBv
ZiBHb29nbGUgTW9jayB3YXMgcmVsZWFzZWQsIHdlIGhhZCBhbiBpZGVhIG9uIGhvdwordG8gbWFr
ZSBpdCBlYXNpZXIgdG8gd3JpdGUgbWF0Y2hlcnMgdGhhdCBjYW4gZ2VuZXJhdGUgaW5mb3JtYXRp
dmUKK21lc3NhZ2VzIGVmZmljaWVudGx5LiAgV2UgZXhwZXJpbWVudGVkIHdpdGggdGhpcyBpZGVh
IGFuZCBsaWtlZCB3aGF0Cit3ZSBzYXcuICBUaGVyZWZvcmUgd2UgZGVjaWRlZCB0byBpbXBsZW1l
bnQgaXQuCisKK1VuZm9ydHVuYXRlbHksIHRoaXMgbWVhbnMgdGhhdCBpZiB5b3UgaGF2ZSBkZWZp
bmVkIHlvdXIgb3duIG1hdGNoZXJzCitieSBpbXBsZW1lbnRpbmcgYE1hdGNoZXJJbnRlcmZhY2Vg
IG9yIHVzaW5nIGBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKClgLAoreW91ciBkZWZpbml0aW9ucyB3
aWxsIG5vIGxvbmdlciBjb21waWxlLiAgTWF0Y2hlcnMgZGVmaW5lZCB1c2luZyB0aGUKK2BNQVRD
SEVSKmAgZmFtaWx5IG9mIG1hY3JvcyBhcmUgbm90IGFmZmVjdGVkLgorCitTb3JyeSBmb3IgdGhl
IGhhc3NsZSBpZiB5b3VyIG1hdGNoZXJzIGFyZSBhZmZlY3RlZC4gIFdlIGJlbGlldmUgaXQncwor
aW4gZXZlcnlvbmUncyBsb25nLXRlcm0gaW50ZXJlc3QgdG8gbWFrZSB0aGlzIGNoYW5nZSBzb29u
ZXIgdGhhbgorbGF0ZXIuICBGb3J0dW5hdGVseSwgaXQncyB1c3VhbGx5IG5vdCBoYXJkIHRvIG1p
Z3JhdGUgYW4gZXhpc3RpbmcKK21hdGNoZXIgdG8gdGhlIG5ldyBBUEkuICBIZXJlJ3Mgd2hhdCB5
b3UgbmVlZCB0byBkbzoKKworSWYgeW91IHdyb3RlIHlvdXIgbWF0Y2hlciBsaWtlIHRoaXM6Citg
YGAKKy8vIE9sZCBtYXRjaGVyIGRlZmluaXRpb24gdGhhdCBkb2Vzbid0IHdvcmsgd2l0aCB0aGUg
bGF0ZXN0CisvLyBHb29nbGUgTW9jay4KK3VzaW5nIDo6dGVzdGluZzo6TWF0Y2hlckludGVyZmFj
ZTsKKy4uLgorY2xhc3MgTXlXb25kZXJmdWxNYXRjaGVyIDogcHVibGljIE1hdGNoZXJJbnRlcmZh
Y2U8TXlUeXBlPiB7CisgcHVibGljOgorICAuLi4KKyAgdmlydHVhbCBib29sIE1hdGNoZXMoTXlU
eXBlIHZhbHVlKSBjb25zdCB7CisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHZhbHVlIG1hdGNoZXMu
CisgICAgcmV0dXJuIHZhbHVlLkdldEZvbygpID4gNTsKKyAgfQorICAuLi4KK307CitgYGAKKwor
eW91J2xsIG5lZWQgdG8gY2hhbmdlIGl0IHRvOgorYGBgCisvLyBOZXcgbWF0Y2hlciBkZWZpbml0
aW9uIHRoYXQgd29ya3Mgd2l0aCB0aGUgbGF0ZXN0IEdvb2dsZSBNb2NrLgordXNpbmcgOjp0ZXN0
aW5nOjpNYXRjaGVySW50ZXJmYWNlOwordXNpbmcgOjp0ZXN0aW5nOjpNYXRjaFJlc3VsdExpc3Rl
bmVyOworLi4uCitjbGFzcyBNeVdvbmRlcmZ1bE1hdGNoZXIgOiBwdWJsaWMgTWF0Y2hlckludGVy
ZmFjZTxNeVR5cGU+IHsKKyBwdWJsaWM6CisgIC4uLgorICB2aXJ0dWFsIGJvb2wgTWF0Y2hBbmRF
eHBsYWluKE15VHlwZSB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRj
aFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgeworICAgIC8vIFJldHVybnMgdHJ1ZSBp
ZiB2YWx1ZSBtYXRjaGVzLgorICAgIHJldHVybiB2YWx1ZS5HZXRGb28oKSA+IDU7CisgIH0KKyAg
Li4uCit9OworYGBgCisoaS5lLiByZW5hbWUgYE1hdGNoZXMoKWAgdG8gYE1hdGNoQW5kRXhwbGFp
bigpYCBhbmQgZ2l2ZSBpdCBhIHNlY29uZAorYXJndW1lbnQgb2YgdHlwZSBgTWF0Y2hSZXN1bHRM
aXN0ZW5lcipgLikKKworSWYgeW91IHdlcmUgYWxzbyB1c2luZyBgRXhwbGFpbk1hdGNoUmVzdWx0
VG8oKWAgdG8gaW1wcm92ZSB0aGUgbWF0Y2hlcgorbWVzc2FnZToKK2BgYAorLy8gT2xkIG1hdGNo
ZXIgZGVmaW5pdGlvbiB0aGF0IGRvZXNuJ3Qgd29yayB3aXRoIHRoZSBsYXN0ZXN0CisvLyBHb29n
bGUgTW9jay4KK3VzaW5nIDo6dGVzdGluZzo6TWF0Y2hlckludGVyZmFjZTsKKy4uLgorY2xhc3Mg
TXlXb25kZXJmdWxNYXRjaGVyIDogcHVibGljIE1hdGNoZXJJbnRlcmZhY2U8TXlUeXBlPiB7Cisg
cHVibGljOgorICAuLi4KKyAgdmlydHVhbCBib29sIE1hdGNoZXMoTXlUeXBlIHZhbHVlKSBjb25z
dCB7CisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHZhbHVlIG1hdGNoZXMuCisgICAgcmV0dXJuIHZh
bHVlLkdldEZvbygpID4gNTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBFeHBsYWluTWF0Y2hSZXN1
bHRUbyhNeVR5cGUgdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6
OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKKyAgICAvLyBQcmludHMgc29tZSBoZWxwZnVsIGlu
Zm9ybWF0aW9uIHRvIG9zIHRvIGhlbHAKKyAgICAvLyBhIHVzZXIgdW5kZXJzdGFuZCB3aHkgdmFs
dWUgbWF0Y2hlcyAob3IgZG9lc24ndCBtYXRjaCkuCisgICAgKm9zIDw8ICJ0aGUgRm9vIHByb3Bl
cnR5IGlzICIgPDwgdmFsdWUuR2V0Rm9vKCk7CisgIH0KKyAgLi4uCit9OworYGBgCisKK3lvdSBz
aG91bGQgbW92ZSB0aGUgbG9naWMgb2YgYEV4cGxhaW5NYXRjaFJlc3VsdFRvKClgIGludG8KK2BN
YXRjaEFuZEV4cGxhaW4oKWAsIHVzaW5nIHRoZSBgTWF0Y2hSZXN1bHRMaXN0ZW5lcmAgYXJndW1l
bnQgd2hlcmUKK3RoZSBgOjpzdGQ6Om9zdHJlYW1gIHdhcyB1c2VkOgorYGBgCisvLyBOZXcgbWF0
Y2hlciBkZWZpbml0aW9uIHRoYXQgd29ya3Mgd2l0aCB0aGUgbGF0ZXN0IEdvb2dsZSBNb2NrLgor
dXNpbmcgOjp0ZXN0aW5nOjpNYXRjaGVySW50ZXJmYWNlOwordXNpbmcgOjp0ZXN0aW5nOjpNYXRj
aFJlc3VsdExpc3RlbmVyOworLi4uCitjbGFzcyBNeVdvbmRlcmZ1bE1hdGNoZXIgOiBwdWJsaWMg
TWF0Y2hlckludGVyZmFjZTxNeVR5cGU+IHsKKyBwdWJsaWM6CisgIC4uLgorICB2aXJ0dWFsIGJv
b2wgTWF0Y2hBbmRFeHBsYWluKE15VHlwZSB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgeworICAgIC8vIFJl
dHVybnMgdHJ1ZSBpZiB2YWx1ZSBtYXRjaGVzLgorICAgICpsaXN0ZW5lciA8PCAidGhlIEZvbyBw
cm9wZXJ0eSBpcyAiIDw8IHZhbHVlLkdldEZvbygpOworICAgIHJldHVybiB2YWx1ZS5HZXRGb28o
KSA+IDU7CisgIH0KKyAgLi4uCit9OworYGBgCisKK0lmIHlvdXIgbWF0Y2hlciBpcyBkZWZpbmVk
IHVzaW5nIGBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKClgOgorYGBgCisvLyBPbGQgbWF0Y2hlciBk
ZWZpbml0aW9uIHRoYXQgZG9lc24ndCB3b3JrIHdpdGggdGhlIGxhdGVzdAorLy8gR29vZ2xlIE1v
Y2suCit1c2luZyA6OnRlc3Rpbmc6Ok1ha2VQb2x5bW9ycGhpY01hdGNoZXI7CisuLi4KK2NsYXNz
IE15R3JlYXRNYXRjaGVyIHsKKyBwdWJsaWM6CisgIC4uLgorICBib29sIE1hdGNoZXMoTXlUeXBl
IHZhbHVlKSBjb25zdCB7CisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHZhbHVlIG1hdGNoZXMuCisg
ICAgcmV0dXJuIHZhbHVlLkdldEJhcigpIDwgNDI7CisgIH0KKyAgLi4uCit9OworLi4uIE1ha2VQ
b2x5bW9ycGhpY01hdGNoZXIoTXlHcmVhdE1hdGNoZXIoKSkgLi4uCitgYGAKKworeW91IHNob3Vs
ZCByZW5hbWUgdGhlIGBNYXRjaGVzKClgIG1ldGhvZCB0byBgTWF0Y2hBbmRFeHBsYWluKClgIGFu
ZAorYWRkIGEgYE1hdGNoUmVzdWx0TGlzdGVuZXIqYCBhcmd1bWVudCAodGhlIHNhbWUgYXMgd2hh
dCB5b3UgbmVlZCB0byBkbworZm9yIG1hdGNoZXJzIGRlZmluZWQgYnkgaW1wbGVtZW50aW5nIGBN
YXRjaGVySW50ZXJmYWNlYCk6CitgYGAKKy8vIE5ldyBtYXRjaGVyIGRlZmluaXRpb24gdGhhdCB3
b3JrcyB3aXRoIHRoZSBsYXRlc3QgR29vZ2xlIE1vY2suCit1c2luZyA6OnRlc3Rpbmc6Ok1ha2VQ
b2x5bW9ycGhpY01hdGNoZXI7Cit1c2luZyA6OnRlc3Rpbmc6Ok1hdGNoUmVzdWx0TGlzdGVuZXI7
CisuLi4KK2NsYXNzIE15R3JlYXRNYXRjaGVyIHsKKyBwdWJsaWM6CisgIC4uLgorICBib29sIE1h
dGNoQW5kRXhwbGFpbihNeVR5cGUgdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgIE1hdGNo
UmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBjb25zdCB7CisgICAgLy8gUmV0dXJucyB0cnVlIGlm
IHZhbHVlIG1hdGNoZXMuCisgICAgcmV0dXJuIHZhbHVlLkdldEJhcigpIDwgNDI7CisgIH0KKyAg
Li4uCit9OworLi4uIE1ha2VQb2x5bW9ycGhpY01hdGNoZXIoTXlHcmVhdE1hdGNoZXIoKSkgLi4u
CitgYGAKKworSWYgeW91ciBwb2x5bW9ycGhpYyBtYXRjaGVyIHVzZXMgYEV4cGxhaW5NYXRjaFJl
c3VsdFRvKClgIGZvciBiZXR0ZXIKK2ZhaWx1cmUgbWVzc2FnZXM6CitgYGAKKy8vIE9sZCBtYXRj
aGVyIGRlZmluaXRpb24gdGhhdCBkb2Vzbid0IHdvcmsgd2l0aCB0aGUgbGF0ZXN0CisvLyBHb29n
bGUgTW9jay4KK3VzaW5nIDo6dGVzdGluZzo6TWFrZVBvbHltb3JwaGljTWF0Y2hlcjsKKy4uLgor
Y2xhc3MgTXlHcmVhdE1hdGNoZXIgeworIHB1YmxpYzoKKyAgLi4uCisgIGJvb2wgTWF0Y2hlcyhN
eVR5cGUgdmFsdWUpIGNvbnN0IHsKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdmFsdWUgbWF0Y2hl
cy4KKyAgICByZXR1cm4gdmFsdWUuR2V0QmFyKCkgPCA0MjsKKyAgfQorICAuLi4KK307Cit2b2lk
IEV4cGxhaW5NYXRjaFJlc3VsdFRvKGNvbnN0IE15R3JlYXRNYXRjaGVyJiBtYXRjaGVyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBNeVR5cGUgdmFsdWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAvLyBQcmludHMgc29tZSBoZWxwZnVsIGlu
Zm9ybWF0aW9uIHRvIG9zIHRvIGhlbHAKKyAgLy8gYSB1c2VyIHVuZGVyc3RhbmQgd2h5IHZhbHVl
IG1hdGNoZXMgKG9yIGRvZXNuJ3QgbWF0Y2gpLgorICAqb3MgPDwgInRoZSBCYXIgcHJvcGVydHkg
aXMgIiA8PCB2YWx1ZS5HZXRCYXIoKTsKK30KKy4uLiBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKE15
R3JlYXRNYXRjaGVyKCkpIC4uLgorYGBgCisKK3lvdSdsbCBuZWVkIHRvIG1vdmUgdGhlIGxvZ2lj
IGluc2lkZSBgRXhwbGFpbk1hdGNoUmVzdWx0VG8oKWAgdG8KK2BNYXRjaEFuZEV4cGxhaW4oKWA6
CitgYGAKKy8vIE5ldyBtYXRjaGVyIGRlZmluaXRpb24gdGhhdCB3b3JrcyB3aXRoIHRoZSBsYXRl
c3QgR29vZ2xlIE1vY2suCit1c2luZyA6OnRlc3Rpbmc6Ok1ha2VQb2x5bW9ycGhpY01hdGNoZXI7
Cit1c2luZyA6OnRlc3Rpbmc6Ok1hdGNoUmVzdWx0TGlzdGVuZXI7CisuLi4KK2NsYXNzIE15R3Jl
YXRNYXRjaGVyIHsKKyBwdWJsaWM6CisgIC4uLgorICBib29sIE1hdGNoQW5kRXhwbGFpbihNeVR5
cGUgdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxp
c3RlbmVyKSBjb25zdCB7CisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHZhbHVlIG1hdGNoZXMuCisg
ICAgKmxpc3RlbmVyIDw8ICJ0aGUgQmFyIHByb3BlcnR5IGlzICIgPDwgdmFsdWUuR2V0QmFyKCk7
CisgICAgcmV0dXJuIHZhbHVlLkdldEJhcigpIDwgNDI7CisgIH0KKyAgLi4uCit9OworLi4uIE1h
a2VQb2x5bW9ycGhpY01hdGNoZXIoTXlHcmVhdE1hdGNoZXIoKSkgLi4uCitgYGAKKworRm9yIG1v
cmUgaW5mb3JtYXRpb24sIHlvdSBjYW4gcmVhZCB0aGVzZQorW3R3b10oaHR0cDovL2NvZGUuZ29v
Z2xlLmNvbS9wL2dvb2dsZW1vY2svd2lraS9WMV83X0Nvb2tCb29rI1dyaXRpbmdfTmV3X01vbm9t
b3JwaGljX01hdGNoZXJzKQorW3JlY2lwZXNdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29n
bGVtb2NrL3dpa2kvVjFfN19Db29rQm9vayNXcml0aW5nX05ld19Qb2x5bW9ycGhpY19NYXRjaGVy
cykKK2Zyb20gdGhlIGNvb2tib29rLiAgQXMgYWx3YXlzLCB5b3UKK2FyZSB3ZWxjb21lIHRvIHBv
c3QgcXVlc3Rpb25zIG9uIGBnb29nbGVtb2NrQGdvb2dsZWdyb3Vwcy5jb21gIGlmIHlvdQorbmVl
ZCBhbnkgaGVscC4KKworIyMgV2hlbiB1c2luZyBHb29nbGUgTW9jaywgZG8gSSBoYXZlIHRvIHVz
ZSBHb29nbGUgVGVzdCBhcyB0aGUgdGVzdGluZyBmcmFtZXdvcms/ICBJIGhhdmUgbXkgZmF2b3Jp
dGUgdGVzdGluZyBmcmFtZXdvcmsgYW5kIGRvbid0IHdhbnQgdG8gc3dpdGNoLiAjIworCitHb29n
bGUgTW9jayB3b3JrcyBvdXQgb2YgdGhlIGJveCB3aXRoIEdvb2dsZSBUZXN0LiAgSG93ZXZlciwg
aXQncyBlYXN5Cit0byBjb25maWd1cmUgaXQgdG8gd29yayB3aXRoIGFueSB0ZXN0aW5nIGZyYW1l
d29yayBvZiB5b3VyIGNob2ljZS4KK1tIZXJlXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29v
Z2xlbW9jay93aWtpL1YxXzdfRm9yRHVtbWllcyNVc2luZ19Hb29nbGVfTW9ja193aXRoX0FueV9U
ZXN0aW5nX0ZyYW1ld29yaykgaXMgaG93LgorCisjIyBIb3cgYW0gSSBzdXBwb3NlZCB0byBtYWtl
IHNlbnNlIG9mIHRoZXNlIGhvcnJpYmxlIHRlbXBsYXRlIGVycm9ycz8gIyMKKworSWYgeW91IGFy
ZSBjb25mdXNlZCBieSB0aGUgY29tcGlsZXIgZXJyb3JzIGdjYyB0aHJldyBhdCB5b3UsCit0cnkg
Y29uc3VsdGluZyB0aGUgX0dvb2dsZSBNb2NrIERvY3Rvcl8gdG9vbCBmaXJzdC4gIFdoYXQgaXQg
ZG9lcyBpcyB0bworc2NhbiBzdGRpbiBmb3IgZ2NjIGVycm9yIG1lc3NhZ2VzLCBhbmQgc3BpdCBv
dXQgZGlhZ25vc2VzIG9uIHRoZQorcHJvYmxlbXMgKHdlIGNhbGwgdGhlbSBkaXNlYXNlcykgeW91
ciBjb2RlIGhhcy4KKworVG8gImluc3RhbGwiLCBydW4gY29tbWFuZDoKK2BgYAorYWxpYXMgZ21k
PSc8cGF0aCB0byBnb29nbGVtb2NrPi9zY3JpcHRzL2dtb2NrX2RvY3Rvci5weScKK2BgYAorCitU
byB1c2UgaXQsIGRvOgorYGBgCis8eW91ci1mYXZvcml0ZS1idWlsZC1jb21tYW5kPiA8eW91ci10
ZXN0PiAyPiYxIHwgZ21kCitgYGAKKworRm9yIGV4YW1wbGU6CitgYGAKK21ha2UgbXlfdGVzdCAy
PiYxIHwgZ21kCitgYGAKKworT3IgeW91IGNhbiBydW4gYGdtZGAgYW5kIGNvcHktbi1wYXN0ZSBn
Y2MncyBlcnJvciBtZXNzYWdlcyB0byBpdC4KKworIyMgQ2FuIEkgbW9jayBhIHZhcmlhZGljIGZ1
bmN0aW9uPyAjIworCitZb3UgY2Fubm90IG1vY2sgYSB2YXJpYWRpYyBmdW5jdGlvbiAoaS5lLiBh
IGZ1bmN0aW9uIHRha2luZyBlbGxpcHNpcworKGAuLi5gKSBhcmd1bWVudHMpIGRpcmVjdGx5IGlu
IEdvb2dsZSBNb2NrLgorCitUaGUgcHJvYmxlbSBpcyB0aGF0IGluIGdlbmVyYWwsIHRoZXJlIGlz
IF9ubyB3YXlfIGZvciBhIG1vY2sgb2JqZWN0IHRvCitrbm93IGhvdyBtYW55IGFyZ3VtZW50cyBh
cmUgcGFzc2VkIHRvIHRoZSB2YXJpYWRpYyBtZXRob2QsIGFuZCB3aGF0Cit0aGUgYXJndW1lbnRz
JyB0eXBlcyBhcmUuICBPbmx5IHRoZSBfYXV0aG9yIG9mIHRoZSBiYXNlIGNsYXNzXyBrbm93cwor
dGhlIHByb3RvY29sLCBhbmQgd2UgY2Fubm90IGxvb2sgaW50byBoaXMgaGVhZC4KKworVGhlcmVm
b3JlLCB0byBtb2NrIHN1Y2ggYSBmdW5jdGlvbiwgdGhlIF91c2VyXyBtdXN0IHRlYWNoIHRoZSBt
b2NrCitvYmplY3QgaG93IHRvIGZpZ3VyZSBvdXQgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgYW5k
IHRoZWlyIHR5cGVzLiAgT25lCit3YXkgdG8gZG8gaXQgaXMgdG8gcHJvdmlkZSBvdmVybG9hZGVk
IHZlcnNpb25zIG9mIHRoZSBmdW5jdGlvbi4KKworRWxsaXBzaXMgYXJndW1lbnRzIGFyZSBpbmhl
cml0ZWQgZnJvbSBDIGFuZCBub3QgcmVhbGx5IGEgQysrIGZlYXR1cmUuCitUaGV5IGFyZSB1bnNh
ZmUgdG8gdXNlIGFuZCBkb24ndCB3b3JrIHdpdGggYXJndW1lbnRzIHRoYXQgaGF2ZQorY29uc3Ry
dWN0b3JzIG9yIGRlc3RydWN0b3JzLiAgVGhlcmVmb3JlIHdlIHJlY29tbWVuZCB0byBhdm9pZCB0
aGVtIGluCitDKysgYXMgbXVjaCBhcyBwb3NzaWJsZS4KKworIyMgTVNWQyBnaXZlcyBtZSB3YXJu
aW5nIEM0MzAxIG9yIEM0MzczIHdoZW4gSSBkZWZpbmUgYSBtb2NrIG1ldGhvZCB3aXRoIGEgY29u
c3QgcGFyYW1ldGVyLiAgV2h5PyAjIworCitJZiB5b3UgY29tcGlsZSB0aGlzIHVzaW5nIE1pY3Jv
c29mdCBWaXN1YWwgQysrIDIwMDUgU1AxOgorYGBgCitjbGFzcyBGb28geworICAuLi4KKyAgdmly
dHVhbCB2b2lkIEJhcihjb25zdCBpbnQgaSkgPSAwOworfTsKKworY2xhc3MgTW9ja0ZvbyA6IHB1
YmxpYyBGb28geworICAuLi4KKyAgTU9DS19NRVRIT0QxKEJhciwgdm9pZChjb25zdCBpbnQgaSkp
OworfTsKK2BgYAorWW91IG1heSBnZXQgdGhlIGZvbGxvd2luZyB3YXJuaW5nOgorYGBgCit3YXJu
aW5nIEM0MzAxOiAnTW9ja0Zvbzo6QmFyJzogb3ZlcnJpZGluZyB2aXJ0dWFsIGZ1bmN0aW9uIG9u
bHkgZGlmZmVycyBmcm9tICdGb286OkJhcicgYnkgY29uc3Qvdm9sYXRpbGUgcXVhbGlmaWVyCitg
YGAKKworVGhpcyBpcyBhIE1TVkMgYnVnLiAgVGhlIHNhbWUgY29kZSBjb21waWxlcyBmaW5lIHdp
dGggZ2NjICxmb3IKK2V4YW1wbGUuICBJZiB5b3UgdXNlIFZpc3VhbCBDKysgMjAwOCBTUDEsIHlv
dSB3b3VsZCBnZXQgdGhlIHdhcm5pbmc6CitgYGAKK3dhcm5pbmcgQzQzNzM6ICdNb2NrRm9vOjpC
YXInOiB2aXJ0dWFsIGZ1bmN0aW9uIG92ZXJyaWRlcyAnRm9vOjpCYXInLCBwcmV2aW91cyB2ZXJz
aW9ucyBvZiB0aGUgY29tcGlsZXIgZGlkIG5vdCBvdmVycmlkZSB3aGVuIHBhcmFtZXRlcnMgb25s
eSBkaWZmZXJlZCBieSBjb25zdC92b2xhdGlsZSBxdWFsaWZpZXJzCitgYGAKKworSW4gQysrLCBp
ZiB5b3UgX2RlY2xhcmVfIGEgZnVuY3Rpb24gd2l0aCBhIGBjb25zdGAgcGFyYW1ldGVyLCB0aGUK
K2Bjb25zdGAgbW9kaWZpZXIgaXMgX2lnbm9yZWRfLiAgVGhlcmVmb3JlLCB0aGUgYEZvb2AgYmFz
ZSBjbGFzcyBhYm92ZQoraXMgZXF1aXZhbGVudCB0bzoKK2BgYAorY2xhc3MgRm9vIHsKKyAgLi4u
CisgIHZpcnR1YWwgdm9pZCBCYXIoaW50IGkpID0gMDsgIC8vIGludCBvciBjb25zdCBpbnQ/ICBN
YWtlcyBubyBkaWZmZXJlbmNlLgorfTsKK2BgYAorCitJbiBmYWN0LCB5b3UgY2FuIF9kZWNsYXJl
XyBCYXIoKSB3aXRoIGFuIGBpbnRgIHBhcmFtZXRlciwgYW5kIF9kZWZpbmVfCitpdCB3aXRoIGEg
YGNvbnN0IGludGAgcGFyYW1ldGVyLiAgVGhlIGNvbXBpbGVyIHdpbGwgc3RpbGwgbWF0Y2ggdGhl
bQordXAuCisKK1NpbmNlIG1ha2luZyBhIHBhcmFtZXRlciBgY29uc3RgIGlzIG1lYW5pbmdsZXNz
IGluIHRoZSBtZXRob2QKK19kZWNsYXJhdGlvbl8sIHdlIHJlY29tbWVuZCB0byByZW1vdmUgaXQg
aW4gYm90aCBgRm9vYCBhbmQgYE1vY2tGb29gLgorVGhhdCBzaG91bGQgd29ya2Fyb3VuZCB0aGUg
VkMgYnVnLgorCitOb3RlIHRoYXQgd2UgYXJlIHRhbGtpbmcgYWJvdXQgdGhlIF90b3AtbGV2ZWxf
IGBjb25zdGAgbW9kaWZpZXIgaGVyZS4KK0lmIHRoZSBmdW5jdGlvbiBwYXJhbWV0ZXIgaXMgcGFz
c2VkIGJ5IHBvaW50ZXIgb3IgcmVmZXJlbmNlLCBkZWNsYXJpbmcKK3RoZSBfcG9pbnRlZV8gb3Ig
X3JlZmVyZWVfIGFzIGBjb25zdGAgaXMgc3RpbGwgbWVhbmluZ2Z1bC4gIEZvcgorZXhhbXBsZSwg
dGhlIGZvbGxvd2luZyB0d28gZGVjbGFyYXRpb25zIGFyZSBfbm90XyBlcXVpdmFsZW50OgorYGBg
Cit2b2lkIEJhcihpbnQqIHApOyAgICAgICAgLy8gTmVpdGhlciBwIG5vciAqcCBpcyBjb25zdC4K
K3ZvaWQgQmFyKGNvbnN0IGludCogcCk7ICAvLyBwIGlzIG5vdCBjb25zdCwgYnV0ICpwIGlzLgor
YGBgCisKKyMjIEkgaGF2ZSBhIGh1Z2UgbW9jayBjbGFzcywgYW5kIE1pY3Jvc29mdCBWaXN1YWwg
QysrIHJ1bnMgb3V0IG9mIG1lbW9yeSB3aGVuIGNvbXBpbGluZyBpdC4gIFdoYXQgY2FuIEkgZG8/
ICMjCisKK1dlJ3ZlIG5vdGljZWQgdGhhdCB3aGVuIHRoZSBgL2NscmAgY29tcGlsZXIgZmxhZyBp
cyB1c2VkLCBWaXN1YWwgQysrCit1c2VzIDV+NiB0aW1lcyBhcyBtdWNoIG1lbW9yeSB3aGVuIGNv
bXBpbGluZyBhIG1vY2sgY2xhc3MuICBXZSBzdWdnZXN0Cit0byBhdm9pZCBgL2NscmAgd2hlbiBj
b21waWxpbmcgbmF0aXZlIEMrKyBtb2Nrcy4KKworIyMgSSBjYW4ndCBmaWd1cmUgb3V0IHdoeSBH
b29nbGUgTW9jayB0aGlua3MgbXkgZXhwZWN0YXRpb25zIGFyZSBub3Qgc2F0aXNmaWVkLiAgV2hh
dCBzaG91bGQgSSBkbz8gIyMKKworWW91IG1pZ2h0IHdhbnQgdG8gcnVuIHlvdXIgdGVzdCB3aXRo
CitgLS1nbW9ja192ZXJib3NlPWluZm9gLiAgVGhpcyBmbGFnIGxldHMgR29vZ2xlIE1vY2sgcHJp
bnQgYSB0cmFjZQorb2YgZXZlcnkgbW9jayBmdW5jdGlvbiBjYWxsIGl0IHJlY2VpdmVzLiAgQnkg
c3R1ZHlpbmcgdGhlIHRyYWNlLAoreW91J2xsIGdhaW4gaW5zaWdodHMgb24gd2h5IHRoZSBleHBl
Y3RhdGlvbnMgeW91IHNldCBhcmUgbm90IG1ldC4KKworIyMgSG93IGNhbiBJIGFzc2VydCB0aGF0
IGEgZnVuY3Rpb24gaXMgTkVWRVIgY2FsbGVkPyAjIworCitgYGAKK0VYUEVDVF9DQUxMKGZvbywg
QmFyKF8pKQorICAgIC5UaW1lcygwKTsKK2BgYAorCisjIyBJIGhhdmUgYSBmYWlsZWQgdGVzdCB3
aGVyZSBHb29nbGUgTW9jayB0ZWxscyBtZSBUV0lDRSB0aGF0IGEgcGFydGljdWxhciBleHBlY3Rh
dGlvbiBpcyBub3Qgc2F0aXNmaWVkLiAgSXNuJ3QgdGhpcyByZWR1bmRhbnQ/ICMjCisKK1doZW4g
R29vZ2xlIE1vY2sgZGV0ZWN0cyBhIGZhaWx1cmUsIGl0IHByaW50cyByZWxldmFudCBpbmZvcm1h
dGlvbgorKHRoZSBtb2NrIGZ1bmN0aW9uIGFyZ3VtZW50cywgdGhlIHN0YXRlIG9mIHJlbGV2YW50
IGV4cGVjdGF0aW9ucywgYW5kCitldGMpIHRvIGhlbHAgdGhlIHVzZXIgZGVidWcuICBJZiBhbm90
aGVyIGZhaWx1cmUgaXMgZGV0ZWN0ZWQsIEdvb2dsZQorTW9jayB3aWxsIGRvIHRoZSBzYW1lLCBp
bmNsdWRpbmcgcHJpbnRpbmcgdGhlIHN0YXRlIG9mIHJlbGV2YW50CitleHBlY3RhdGlvbnMuCisK
K1NvbWV0aW1lcyBhbiBleHBlY3RhdGlvbidzIHN0YXRlIGRpZG4ndCBjaGFuZ2UgYmV0d2VlbiB0
d28gZmFpbHVyZXMsCithbmQgeW91J2xsIHNlZSB0aGUgc2FtZSBkZXNjcmlwdGlvbiBvZiB0aGUg
c3RhdGUgdHdpY2UuICBUaGV5IGFyZQoraG93ZXZlciBfbm90XyByZWR1bmRhbnQsIGFzIHRoZXkg
cmVmZXIgdG8gX2RpZmZlcmVudCBwb2ludHMgaW4gdGltZV8uCitUaGUgZmFjdCB0aGV5IGFyZSB0
aGUgc2FtZSBfaXNfIGludGVyZXN0aW5nIGluZm9ybWF0aW9uLgorCisjIyBJIGdldCBhIGhlYXAg
Y2hlY2sgZmFpbHVyZSB3aGVuIHVzaW5nIGEgbW9jayBvYmplY3QsIGJ1dCB1c2luZyBhIHJlYWwg
b2JqZWN0IGlzIGZpbmUuICBXaGF0IGNhbiBiZSB3cm9uZz8gIyMKKworRG9lcyB0aGUgY2xhc3Mg
KGhvcGVmdWxseSBhIHB1cmUgaW50ZXJmYWNlKSB5b3UgYXJlIG1vY2tpbmcgaGF2ZSBhCit2aXJ0
dWFsIGRlc3RydWN0b3I/CisKK1doZW5ldmVyIHlvdSBkZXJpdmUgZnJvbSBhIGJhc2UgY2xhc3Ms
IG1ha2Ugc3VyZSBpdHMgZGVzdHJ1Y3RvciBpcwordmlydHVhbC4gIE90aGVyd2lzZSBCYWQgVGhp
bmdzIHdpbGwgaGFwcGVuLiAgQ29uc2lkZXIgdGhlIGZvbGxvd2luZworY29kZToKKworYGBgCitj
bGFzcyBCYXNlIHsKKyBwdWJsaWM6CisgIC8vIE5vdCB2aXJ0dWFsLCBidXQgc2hvdWxkIGJlLgor
ICB+QmFzZSgpIHsgLi4uIH0KKyAgLi4uCit9OworCitjbGFzcyBEZXJpdmVkIDogcHVibGljIEJh
c2UgeworIHB1YmxpYzoKKyAgLi4uCisgcHJpdmF0ZToKKyAgc3RkOjpzdHJpbmcgdmFsdWVfOwor
fTsKKworLi4uCisgIEJhc2UqIHAgPSBuZXcgRGVyaXZlZDsKKyAgLi4uCisgIGRlbGV0ZSBwOyAg
Ly8gU3VycHJpc2UhIH5CYXNlKCkgd2lsbCBiZSBjYWxsZWQsIGJ1dCB+RGVyaXZlZCgpIHdpbGwg
bm90CisgICAgICAgICAgICAgLy8gLSB2YWx1ZV8gaXMgbGVha2VkLgorYGBgCisKK0J5IGNoYW5n
aW5nIGB+QmFzZSgpYCB0byB2aXJ0dWFsLCBgfkRlcml2ZWQoKWAgd2lsbCBiZSBjb3JyZWN0bHkK
K2NhbGxlZCB3aGVuIGBkZWxldGUgcGAgaXMgZXhlY3V0ZWQsIGFuZCB0aGUgaGVhcCBjaGVja2Vy
Cit3aWxsIGJlIGhhcHB5LgorCisjIyBUaGUgIm5ld2VyIGV4cGVjdGF0aW9ucyBvdmVycmlkZSBv
bGRlciBvbmVzIiBydWxlIG1ha2VzIHdyaXRpbmcgZXhwZWN0YXRpb25zIGF3a3dhcmQuICBXaHkg
ZG9lcyBHb29nbGUgTW9jayBkbyB0aGF0PyAjIworCitXaGVuIHBlb3BsZSBjb21wbGFpbiBhYm91
dCB0aGlzLCBvZnRlbiB0aGV5IGFyZSByZWZlcnJpbmcgdG8gY29kZSBsaWtlOgorCitgYGAKKy8v
IGZvby5CYXIoKSBzaG91bGQgYmUgY2FsbGVkIHR3aWNlLCByZXR1cm4gMSB0aGUgZmlyc3QgdGlt
ZSwgYW5kIHJldHVybgorLy8gMiB0aGUgc2Vjb25kIHRpbWUuICBIb3dldmVyLCBJIGhhdmUgdG8g
d3JpdGUgdGhlIGV4cGVjdGF0aW9ucyBpbiB0aGUKKy8vIHJldmVyc2Ugb3JkZXIuICBUaGlzIHN1
Y2tzIGJpZyB0aW1lISEhCitFWFBFQ1RfQ0FMTChmb28sIEJhcigpKQorICAgIC5XaWxsT25jZShS
ZXR1cm4oMikpCisgICAgLlJldGlyZXNPblNhdHVyYXRpb24oKTsKK0VYUEVDVF9DQUxMKGZvbywg
QmFyKCkpCisgICAgLldpbGxPbmNlKFJldHVybigxKSkKKyAgICAuUmV0aXJlc09uU2F0dXJhdGlv
bigpOworYGBgCisKK1RoZSBwcm9ibGVtIGlzIHRoYXQgdGhleSBkaWRuJ3QgcGljayB0aGUgKipi
ZXN0Kiogd2F5IHRvIGV4cHJlc3MgdGhlIHRlc3QncworaW50ZW50LgorCitCeSBkZWZhdWx0LCBl
eHBlY3RhdGlvbnMgZG9uJ3QgaGF2ZSB0byBiZSBtYXRjaGVkIGluIF9hbnlfIHBhcnRpY3VsYXIK
K29yZGVyLiAgSWYgeW91IHdhbnQgdGhlbSB0byBtYXRjaCBpbiBhIGNlcnRhaW4gb3JkZXIsIHlv
dSBuZWVkIHRvIGJlCitleHBsaWNpdC4gIFRoaXMgaXMgR29vZ2xlIE1vY2sncyAoYW5kIGpNb2Nr
J3MpIGZ1bmRhbWVudGFsIHBoaWxvc29waHk6IGl0J3MKK2Vhc3kgdG8gYWNjaWRlbnRhbGx5IG92
ZXItc3BlY2lmeSB5b3VyIHRlc3RzLCBhbmQgd2Ugd2FudCB0byBtYWtlIGl0CitoYXJkZXIgdG8g
ZG8gc28uCisKK1RoZXJlIGFyZSB0d28gYmV0dGVyIHdheXMgdG8gd3JpdGUgdGhlIHRlc3Qgc3Bl
Yy4gIFlvdSBjb3VsZCBlaXRoZXIKK3B1dCB0aGUgZXhwZWN0YXRpb25zIGluIHNlcXVlbmNlOgor
CitgYGAKKy8vIGZvby5CYXIoKSBzaG91bGQgYmUgY2FsbGVkIHR3aWNlLCByZXR1cm4gMSB0aGUg
Zmlyc3QgdGltZSwgYW5kIHJldHVybgorLy8gMiB0aGUgc2Vjb25kIHRpbWUuICBVc2luZyBhIHNl
cXVlbmNlLCB3ZSBjYW4gd3JpdGUgdGhlIGV4cGVjdGF0aW9ucworLy8gaW4gdGhlaXIgbmF0dXJh
bCBvcmRlci4KK3sKKyAgSW5TZXF1ZW5jZSBzOworICBFWFBFQ1RfQ0FMTChmb28sIEJhcigpKQor
ICAgICAgLldpbGxPbmNlKFJldHVybigxKSkKKyAgICAgIC5SZXRpcmVzT25TYXR1cmF0aW9uKCk7
CisgIEVYUEVDVF9DQUxMKGZvbywgQmFyKCkpCisgICAgICAuV2lsbE9uY2UoUmV0dXJuKDIpKQor
ICAgICAgLlJldGlyZXNPblNhdHVyYXRpb24oKTsKK30KK2BgYAorCitvciB5b3UgY2FuIHB1dCB0
aGUgc2VxdWVuY2Ugb2YgYWN0aW9ucyBpbiB0aGUgc2FtZSBleHBlY3RhdGlvbjoKKworYGBgCisv
LyBmb28uQmFyKCkgc2hvdWxkIGJlIGNhbGxlZCB0d2ljZSwgcmV0dXJuIDEgdGhlIGZpcnN0IHRp
bWUsIGFuZCByZXR1cm4KKy8vIDIgdGhlIHNlY29uZCB0aW1lLgorRVhQRUNUX0NBTEwoZm9vLCBC
YXIoKSkKKyAgICAuV2lsbE9uY2UoUmV0dXJuKDEpKQorICAgIC5XaWxsT25jZShSZXR1cm4oMikp
CisgICAgLlJldGlyZXNPblNhdHVyYXRpb24oKTsKK2BgYAorCitCYWNrIHRvIHRoZSBvcmlnaW5h
bCBxdWVzdGlvbnM6IHdoeSBkb2VzIEdvb2dsZSBNb2NrIHNlYXJjaCB0aGUKK2V4cGVjdGF0aW9u
cyAoYW5kIGBPTl9DQUxMYHMpIGZyb20gYmFjayB0byBmcm9udD8gIEJlY2F1c2UgdGhpcworYWxs
b3dzIGEgdXNlciB0byBzZXQgdXAgYSBtb2NrJ3MgYmVoYXZpb3IgZm9yIHRoZSBjb21tb24gY2Fz
ZSBlYXJseQorKGUuZy4gaW4gdGhlIG1vY2sncyBjb25zdHJ1Y3RvciBvciB0aGUgdGVzdCBmaXh0
dXJlJ3Mgc2V0LXVwIHBoYXNlKQorYW5kIGN1c3RvbWl6ZSBpdCB3aXRoIG1vcmUgc3BlY2lmaWMg
cnVsZXMgbGF0ZXIuICBJZiBHb29nbGUgTW9jaworc2VhcmNoZXMgZnJvbSBmcm9udCB0byBiYWNr
LCB0aGlzIHZlcnkgdXNlZnVsIHBhdHRlcm4gd29uJ3QgYmUKK3Bvc3NpYmxlLgorCisjIyBHb29n
bGUgTW9jayBwcmludHMgYSB3YXJuaW5nIHdoZW4gYSBmdW5jdGlvbiB3aXRob3V0IEVYUEVDVFxf
Q0FMTCBpcyBjYWxsZWQsIGV2ZW4gaWYgSSBoYXZlIHNldCBpdHMgYmVoYXZpb3IgdXNpbmcgT05c
X0NBTEwuICBXb3VsZCBpdCBiZSByZWFzb25hYmxlIG5vdCB0byBzaG93IHRoZSB3YXJuaW5nIGlu
IHRoaXMgY2FzZT8gIyMKKworV2hlbiBjaG9vc2luZyBiZXR3ZWVuIGJlaW5nIG5lYXQgYW5kIGJl
aW5nIHNhZmUsIHdlIGxlYW4gdG93YXJkIHRoZQorbGF0dGVyLiAgU28gdGhlIGFuc3dlciBpcyB0
aGF0IHdlIHRoaW5rIGl0J3MgYmV0dGVyIHRvIHNob3cgdGhlCit3YXJuaW5nLgorCitPZnRlbiBw
ZW9wbGUgd3JpdGUgYE9OX0NBTExgcyBpbiB0aGUgbW9jayBvYmplY3QncworY29uc3RydWN0b3Ig
b3IgYFNldFVwKClgLCBhcyB0aGUgZGVmYXVsdCBiZWhhdmlvciByYXJlbHkgY2hhbmdlcyBmcm9t
Cit0ZXN0IHRvIHRlc3QuICBUaGVuIGluIHRoZSB0ZXN0IGJvZHkgdGhleSBzZXQgdGhlIGV4cGVj
dGF0aW9ucywgd2hpY2gKK2FyZSBvZnRlbiBkaWZmZXJlbnQgZm9yIGVhY2ggdGVzdC4gIEhhdmlu
ZyBhbiBgT05fQ0FMTGAgaW4gdGhlIHNldC11cAorcGFydCBvZiBhIHRlc3QgZG9lc24ndCBtZWFu
IHRoYXQgdGhlIGNhbGxzIGFyZSBleHBlY3RlZC4gIElmIHRoZXJlJ3MKK25vIGBFWFBFQ1RfQ0FM
TGAgYW5kIHRoZSBtZXRob2QgaXMgY2FsbGVkLCBpdCdzIHBvc3NpYmx5IGFuIGVycm9yLiAgSWYK
K3dlIHF1aWV0bHkgbGV0IHRoZSBjYWxsIGdvIHRocm91Z2ggd2l0aG91dCBub3RpZnlpbmcgdGhl
IHVzZXIsIGJ1Z3MKK21heSBjcmVlcCBpbiB1bm5vdGljZWQuCisKK0lmLCBob3dldmVyLCB5b3Ug
YXJlIHN1cmUgdGhhdCB0aGUgY2FsbHMgYXJlIE9LLCB5b3UgY2FuIHdyaXRlCisKK2BgYAorRVhQ
RUNUX0NBTEwoZm9vLCBCYXIoXykpCisgICAgLldpbGxSZXBlYXRlZGx5KC4uLik7CitgYGAKKwor
aW5zdGVhZCBvZgorCitgYGAKK09OX0NBTEwoZm9vLCBCYXIoXykpCisgICAgLldpbGxCeURlZmF1
bHQoLi4uKTsKK2BgYAorCitUaGlzIHRlbGxzIEdvb2dsZSBNb2NrIHRoYXQgeW91IGRvIGV4cGVj
dCB0aGUgY2FsbHMgYW5kIG5vIHdhcm5pbmcgc2hvdWxkIGJlCitwcmludGVkLgorCitBbHNvLCB5
b3UgY2FuIGNvbnRyb2wgdGhlIHZlcmJvc2l0eSB1c2luZyB0aGUgYC0tZ21vY2tfdmVyYm9zZWAg
ZmxhZy4KK0lmIHlvdSBmaW5kIHRoZSBvdXRwdXQgdG9vIG5vaXN5IHdoZW4gZGVidWdnaW5nLCBq
dXN0IGNob29zZSBhIGxlc3MKK3ZlcmJvc2UgbGV2ZWwuCisKKyMjIEhvdyBjYW4gSSBkZWxldGUg
dGhlIG1vY2sgZnVuY3Rpb24ncyBhcmd1bWVudCBpbiBhbiBhY3Rpb24/ICMjCisKK0lmIHlvdSBm
aW5kIHlvdXJzZWxmIG5lZWRpbmcgdG8gcGVyZm9ybSBzb21lIGFjdGlvbiB0aGF0J3Mgbm90Citz
dXBwb3J0ZWQgYnkgR29vZ2xlIE1vY2sgZGlyZWN0bHksIHJlbWVtYmVyIHRoYXQgeW91IGNhbiBk
ZWZpbmUgeW91ciBvd24KK2FjdGlvbnMgdXNpbmcKK1tNYWtlQWN0aW9uKCldKGh0dHA6Ly9jb2Rl
Lmdvb2dsZS5jb20vcC9nb29nbGVtb2NrL3dpa2kvVjFfN19Db29rQm9vayNXcml0aW5nX05ld19B
Y3Rpb25zKSBvcgorW01ha2VQb2x5bW9ycGhpY0FjdGlvbigpXShodHRwOi8vY29kZS5nb29nbGUu
Y29tL3AvZ29vZ2xlbW9jay93aWtpL1YxXzdfQ29va0Jvb2sjV3JpdGluZ19OZXdfUG9seW1vcnBo
aWNfQWN0aW9ucyksCitvciB5b3UgY2FuIHdyaXRlIGEgc3R1YiBmdW5jdGlvbiBhbmQgaW52b2tl
IGl0IHVzaW5nCitbSW52b2tlKCldKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGVtb2Nr
L3dpa2kvVjFfN19Db29rQm9vayNVc2luZ19GdW5jdGlvbnNfTWV0aG9kc19GdW5jdG9ycykuCisK
KyMjIE1PQ0tcX01FVEhPRG4oKSdzIHNlY29uZCBhcmd1bWVudCBsb29rcyBmdW5ueS4gIFdoeSBk
b24ndCB5b3UgdXNlIHRoZSBNT0NLXF9NRVRIT0RuKE1ldGhvZCwgcmV0dXJuXF90eXBlLCBhcmdc
XzEsIC4uLiwgYXJnXF9uKSBzeW50YXg/ICMjCisKK1doYXQ/ISAgSSB0aGluayBpdCdzIGJlYXV0
aWZ1bC4gOi0pCisKK1doaWxlIHdoaWNoIHN5bnRheCBsb29rcyBtb3JlIG5hdHVyYWwgaXMgYSBz
dWJqZWN0aXZlIG1hdHRlciB0byBzb21lCitleHRlbnQsIEdvb2dsZSBNb2NrJ3Mgc3ludGF4IHdh
cyBjaG9zZW4gZm9yIHNldmVyYWwgcHJhY3RpY2FsIGFkdmFudGFnZXMgaXQKK2hhcy4KKworVHJ5
IHRvIG1vY2sgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgbWFwIGFzIGFuIGFyZ3VtZW50OgorYGBg
Cit2aXJ0dWFsIGludCBHZXRTaXplKGNvbnN0IG1hcDxpbnQsIHN0ZDo6c3RyaW5nPiYgbSk7Citg
YGAKKworVXNpbmcgdGhlIHByb3Bvc2VkIHN5bnRheCwgaXQgd291bGQgYmU6CitgYGAKK01PQ0tf
TUVUSE9EMShHZXRTaXplLCBpbnQsIGNvbnN0IG1hcDxpbnQsIHN0ZDo6c3RyaW5nPiYgbSk7Citg
YGAKKworR3Vlc3Mgd2hhdD8gIFlvdSdsbCBnZXQgYSBjb21waWxlciBlcnJvciBhcyB0aGUgY29t
cGlsZXIgdGhpbmtzIHRoYXQKK2Bjb25zdCBtYXA8aW50LCBzdGQ6OnN0cmluZz4mIG1gIGFyZSAq
KnR3byoqLCBub3Qgb25lLCBhcmd1bWVudHMuIFRvIHdvcmsKK2Fyb3VuZCB0aGlzIHlvdSBjYW4g
dXNlIGB0eXBlZGVmYCB0byBnaXZlIHRoZSBtYXAgdHlwZSBhIG5hbWUsIGJ1dAordGhhdCBnZXRz
IGluIHRoZSB3YXkgb2YgeW91ciB3b3JrLiAgR29vZ2xlIE1vY2sncyBzeW50YXggYXZvaWRzIHRo
aXMKK3Byb2JsZW0gYXMgdGhlIGZ1bmN0aW9uJ3MgYXJndW1lbnQgdHlwZXMgYXJlIHByb3RlY3Rl
ZCBpbnNpZGUgYSBwYWlyCitvZiBwYXJlbnRoZXNlczoKK2BgYAorLy8gVGhpcyBjb21waWxlcyBm
aW5lLgorTU9DS19NRVRIT0QxKEdldFNpemUsIGludChjb25zdCBtYXA8aW50LCBzdGQ6OnN0cmlu
Zz4mIG0pKTsKK2BgYAorCitZb3Ugc3RpbGwgbmVlZCBhIGB0eXBlZGVmYCBpZiB0aGUgcmV0dXJu
IHR5cGUgY29udGFpbnMgYW4gdW5wcm90ZWN0ZWQKK2NvbW1hLCBidXQgdGhhdCdzIG11Y2ggcmFy
ZXIuCisKK090aGVyIGFkdmFudGFnZXMgaW5jbHVkZToKKyAgMS4gYE1PQ0tfTUVUSE9EMShGb28s
IGludCwgYm9vbClgIGNhbiBsZWF2ZSBhIHJlYWRlciB3b25kZXIgd2hldGhlciB0aGUgbWV0aG9k
IHJldHVybnMgYGludGAgb3IgYGJvb2xgLCB3aGlsZSB0aGVyZSB3b24ndCBiZSBzdWNoIGNvbmZ1
c2lvbiB1c2luZyBHb29nbGUgTW9jaydzIHN5bnRheC4KKyAgMS4gVGhlIHdheSBHb29nbGUgTW9j
ayBkZXNjcmliZXMgYSBmdW5jdGlvbiB0eXBlIGlzIG5vdGhpbmcgbmV3LCBhbHRob3VnaCBtYW55
IHBlb3BsZSBtYXkgbm90IGJlIGZhbWlsaWFyIHdpdGggaXQuICBUaGUgc2FtZSBzeW50YXggd2Fz
IHVzZWQgaW4gQywgYW5kIHRoZSBgZnVuY3Rpb25gIGxpYnJhcnkgaW4gYHRyMWAgdXNlcyB0aGlz
IHN5bnRheCBleHRlbnNpdmVseS4gIFNpbmNlIGB0cjFgIHdpbGwgYmVjb21lIGEgcGFydCBvZiB0
aGUgbmV3IHZlcnNpb24gb2YgU1RMLCB3ZSBmZWVsIHZlcnkgY29tZm9ydGFibGUgdG8gYmUgY29u
c2lzdGVudCB3aXRoIGl0LgorICAxLiBUaGUgZnVuY3Rpb24gdHlwZSBzeW50YXggaXMgYWxzbyB1
c2VkIGluIG90aGVyIHBhcnRzIG9mIEdvb2dsZSBNb2NrJ3MgQVBJIChlLmcuIHRoZSBhY3Rpb24g
aW50ZXJmYWNlKSBpbiBvcmRlciB0byBtYWtlIHRoZSBpbXBsZW1lbnRhdGlvbiB0cmFjdGFibGUu
IEEgdXNlciBuZWVkcyB0byBsZWFybiBpdCBhbnl3YXkgaW4gb3JkZXIgdG8gdXRpbGl6ZSBHb29n
bGUgTW9jaydzIG1vcmUgYWR2YW5jZWQgZmVhdHVyZXMuICBXZSdkIGFzIHdlbGwgc3RpY2sgdG8g
dGhlIHNhbWUgc3ludGF4IGluIGBNT0NLX01FVEhPRCpgIQorCisjIyBNeSBjb2RlIGNhbGxzIGEg
c3RhdGljL2dsb2JhbCBmdW5jdGlvbi4gIENhbiBJIG1vY2sgaXQ/ICMjCisKK1lvdSBjYW4sIGJ1
dCB5b3UgbmVlZCB0byBtYWtlIHNvbWUgY2hhbmdlcy4KKworSW4gZ2VuZXJhbCwgaWYgeW91IGZp
bmQgeW91cnNlbGYgbmVlZGluZyB0byBtb2NrIGEgc3RhdGljIGZ1bmN0aW9uLAoraXQncyBhIHNp
Z24gdGhhdCB5b3VyIG1vZHVsZXMgYXJlIHRvbyB0aWdodGx5IGNvdXBsZWQgKGFuZCBsZXNzCitm
bGV4aWJsZSwgbGVzcyByZXVzYWJsZSwgbGVzcyB0ZXN0YWJsZSwgZXRjKS4gIFlvdSBhcmUgcHJv
YmFibHkgYmV0dGVyCitvZmYgZGVmaW5pbmcgYSBzbWFsbCBpbnRlcmZhY2UgYW5kIGNhbGwgdGhl
IGZ1bmN0aW9uIHRocm91Z2ggdGhhdAoraW50ZXJmYWNlLCB3aGljaCB0aGVuIGNhbiBiZSBlYXNp
bHkgbW9ja2VkLiAgSXQncyBhIGJpdCBvZiB3b3JrCitpbml0aWFsbHksIGJ1dCB1c3VhbGx5IHBh
eXMgZm9yIGl0c2VsZiBxdWlja2x5LgorCitUaGlzIEdvb2dsZSBUZXN0aW5nIEJsb2cKK1twb3N0
XShodHRwOi8vZ29vZ2xldGVzdGluZy5ibG9nc3BvdC5jb20vMjAwOC8wNi9kZWZlYXQtc3RhdGlj
LWNsaW5nLmh0bWwpCitzYXlzIGl0IGV4Y2VsbGVudGx5LiAgQ2hlY2sgaXQgb3V0LgorCisjIyBN
eSBtb2NrIG9iamVjdCBuZWVkcyB0byBkbyBjb21wbGV4IHN0dWZmLiAgSXQncyBhIGxvdCBvZiBw
YWluIHRvIHNwZWNpZnkgdGhlIGFjdGlvbnMuICBHb29nbGUgTW9jayBzdWNrcyEgIyMKKworSSBr
bm93IGl0J3Mgbm90IGEgcXVlc3Rpb24sIGJ1dCB5b3UgZ2V0IGFuIGFuc3dlciBmb3IgZnJlZSBh
bnkgd2F5LiA6LSkKKworV2l0aCBHb29nbGUgTW9jaywgeW91IGNhbiBjcmVhdGUgbW9ja3MgaW4g
QysrIGVhc2lseS4gIEFuZCBwZW9wbGUgbWlnaHQgYmUKK3RlbXB0ZWQgdG8gdXNlIHRoZW0gZXZl
cnl3aGVyZS4gU29tZXRpbWVzIHRoZXkgd29yayBncmVhdCwgYW5kCitzb21ldGltZXMgeW91IG1h
eSBmaW5kIHRoZW0sIHdlbGwsIGEgcGFpbiB0byB1c2UuIFNvLCB3aGF0J3Mgd3JvbmcgaW4KK3Ro
ZSBsYXR0ZXIgY2FzZT8KKworV2hlbiB5b3Ugd3JpdGUgYSB0ZXN0IHdpdGhvdXQgdXNpbmcgbW9j
a3MsIHlvdSBleGVyY2lzZSB0aGUgY29kZSBhbmQKK2Fzc2VydCB0aGF0IGl0IHJldHVybnMgdGhl
IGNvcnJlY3QgdmFsdWUgb3IgdGhhdCB0aGUgc3lzdGVtIGlzIGluIGFuCitleHBlY3RlZCBzdGF0
ZS4gIFRoaXMgaXMgc29tZXRpbWVzIGNhbGxlZCAic3RhdGUtYmFzZWQgdGVzdGluZyIuCisKK01v
Y2tzIGFyZSBncmVhdCBmb3Igd2hhdCBzb21lIGNhbGwgImludGVyYWN0aW9uLWJhc2VkIiB0ZXN0
aW5nOgoraW5zdGVhZCBvZiBjaGVja2luZyB0aGUgc3lzdGVtIHN0YXRlIGF0IHRoZSB2ZXJ5IGVu
ZCwgbW9jayBvYmplY3RzCit2ZXJpZnkgdGhhdCB0aGV5IGFyZSBpbnZva2VkIHRoZSByaWdodCB3
YXkgYW5kIHJlcG9ydCBhbiBlcnJvciBhcyBzb29uCithcyBpdCBhcmlzZXMsIGdpdmluZyB5b3Ug
YSBoYW5kbGUgb24gdGhlIHByZWNpc2UgY29udGV4dCBpbiB3aGljaCB0aGUKK2Vycm9yIHdhcyB0
cmlnZ2VyZWQuICBUaGlzIGlzIG9mdGVuIG1vcmUgZWZmZWN0aXZlIGFuZCBlY29ub21pY2FsIHRv
CitkbyB0aGFuIHN0YXRlLWJhc2VkIHRlc3RpbmcuCisKK0lmIHlvdSBhcmUgZG9pbmcgc3RhdGUt
YmFzZWQgdGVzdGluZyBhbmQgdXNpbmcgYSB0ZXN0IGRvdWJsZSBqdXN0IHRvCitzaW11bGF0ZSB0
aGUgcmVhbCBvYmplY3QsIHlvdSBhcmUgcHJvYmFibHkgYmV0dGVyIG9mZiB1c2luZyBhIGZha2Uu
CitVc2luZyBhIG1vY2sgaW4gdGhpcyBjYXNlIGNhdXNlcyBwYWluLCBhcyBpdCdzIG5vdCBhIHN0
cm9uZyBwb2ludCBmb3IKK21vY2tzIHRvIHBlcmZvcm0gY29tcGxleCBhY3Rpb25zLiAgSWYgeW91
IGV4cGVyaWVuY2UgdGhpcyBhbmQgdGhpbmsKK3RoYXQgbW9ja3Mgc3VjaywgeW91IGFyZSBqdXN0
IG5vdCB1c2luZyB0aGUgcmlnaHQgdG9vbCBmb3IgeW91cgorcHJvYmxlbS4gT3IsIHlvdSBtaWdo
dCBiZSB0cnlpbmcgdG8gc29sdmUgdGhlIHdyb25nIHByb2JsZW0uIDotKQorCisjIyBJIGdvdCBh
IHdhcm5pbmcgIlVuaW50ZXJlc3RpbmcgZnVuY3Rpb24gY2FsbCBlbmNvdW50ZXJlZCAtIGRlZmF1
bHQgYWN0aW9uIHRha2VuLi4iICBTaG91bGQgSSBwYW5pYz8gIyMKKworQnkgYWxsIG1lYW5zLCBO
TyEgIEl0J3MganVzdCBhbiBGWUkuCisKK1doYXQgaXQgbWVhbnMgaXMgdGhhdCB5b3UgaGF2ZSBh
IG1vY2sgZnVuY3Rpb24sIHlvdSBoYXZlbid0IHNldCBhbnkKK2V4cGVjdGF0aW9ucyBvbiBpdCAo
YnkgR29vZ2xlIE1vY2sncyBydWxlIHRoaXMgbWVhbnMgdGhhdCB5b3UgYXJlIG5vdAoraW50ZXJl
c3RlZCBpbiBjYWxscyB0byB0aGlzIGZ1bmN0aW9uIGFuZCB0aGVyZWZvcmUgaXQgY2FuIGJlIGNh
bGxlZAorYW55IG51bWJlciBvZiB0aW1lcyksIGFuZCBpdCBpcyBjYWxsZWQuICBUaGF0J3MgT0sg
LSB5b3UgZGlkbid0IHNheQoraXQncyBub3QgT0sgdG8gY2FsbCB0aGUgZnVuY3Rpb24hCisKK1do
YXQgaWYgeW91IGFjdHVhbGx5IG1lYW50IHRvIGRpc2FsbG93IHRoaXMgZnVuY3Rpb24gdG8gYmUg
Y2FsbGVkLCBidXQKK2ZvcmdvdCB0byB3cml0ZSBgRVhQRUNUX0NBTEwoZm9vLCBCYXIoKSkuVGlt
ZXMoMClgPyAgV2hpbGUKK29uZSBjYW4gYXJndWUgdGhhdCBpdCdzIHRoZSB1c2VyJ3MgZmF1bHQs
IEdvb2dsZSBNb2NrIHRyaWVzIHRvIGJlIG5pY2UgYW5kCitwcmludHMgeW91IGEgbm90ZS4KKwor
U28sIHdoZW4geW91IHNlZSB0aGUgbWVzc2FnZSBhbmQgYmVsaWV2ZSB0aGF0IHRoZXJlIHNob3Vs
ZG4ndCBiZSBhbnkKK3VuaW50ZXJlc3RpbmcgY2FsbHMsIHlvdSBzaG91bGQgaW52ZXN0aWdhdGUg
d2hhdCdzIGdvaW5nIG9uLiAgVG8gbWFrZQoreW91ciBsaWZlIGVhc2llciwgR29vZ2xlIE1vY2sg
cHJpbnRzIHRoZSBmdW5jdGlvbiBuYW1lIGFuZCBhcmd1bWVudHMKK3doZW4gYW4gdW5pbnRlcmVz
dGluZyBjYWxsIGlzIGVuY291bnRlcmVkLgorCisjIyBJIHdhbnQgdG8gZGVmaW5lIGEgY3VzdG9t
IGFjdGlvbi4gIFNob3VsZCBJIHVzZSBJbnZva2UoKSBvciBpbXBsZW1lbnQgdGhlIGFjdGlvbiBp
bnRlcmZhY2U/ICMjCisKK0VpdGhlciB3YXkgaXMgZmluZSAtIHlvdSB3YW50IHRvIGNob29zZSB0
aGUgb25lIHRoYXQncyBtb3JlIGNvbnZlbmllbnQKK2ZvciB5b3VyIGNpcmN1bXN0YW5jZS4KKwor
VXN1YWxseSwgaWYgeW91ciBhY3Rpb24gaXMgZm9yIGEgcGFydGljdWxhciBmdW5jdGlvbiB0eXBl
LCBkZWZpbmluZyBpdAordXNpbmcgYEludm9rZSgpYCBzaG91bGQgYmUgZWFzaWVyOyBpZiB5b3Vy
IGFjdGlvbiBjYW4gYmUgdXNlZCBpbgorZnVuY3Rpb25zIG9mIGRpZmZlcmVudCB0eXBlcyAoZS5n
LiBpZiB5b3UgYXJlIGRlZmluaW5nCitgUmV0dXJuKHZhbHVlKWApLCBgTWFrZVBvbHltb3JwaGlj
QWN0aW9uKClgIGlzCitlYXNpZXN0LiAgU29tZXRpbWVzIHlvdSB3YW50IHByZWNpc2UgY29udHJv
bCBvbiB3aGF0IHR5cGVzIG9mCitmdW5jdGlvbnMgdGhlIGFjdGlvbiBjYW4gYmUgdXNlZCBpbiwg
YW5kIGltcGxlbWVudGluZworYEFjdGlvbkludGVyZmFjZWAgaXMgdGhlIHdheSB0byBnbyBoZXJl
LiBTZWUgdGhlIGltcGxlbWVudGF0aW9uIG9mCitgUmV0dXJuKClgIGluIGBpbmNsdWRlL2dtb2Nr
L2dtb2NrLWFjdGlvbnMuaGAgZm9yIGFuIGV4YW1wbGUuCisKKyMjIEknbSB1c2luZyB0aGUgc2V0
LWFyZ3VtZW50LXBvaW50ZWUgYWN0aW9uLCBhbmQgdGhlIGNvbXBpbGVyIGNvbXBsYWlucyBhYm91
dCAiY29uZmxpY3RpbmcgcmV0dXJuIHR5cGUgc3BlY2lmaWVkIi4gIFdoYXQgZG9lcyBpdCBtZWFu
PyAjIworCitZb3UgZ290IHRoaXMgZXJyb3IgYXMgR29vZ2xlIE1vY2sgaGFzIG5vIGlkZWEgd2hh
dCB2YWx1ZSBpdCBzaG91bGQgcmV0dXJuCit3aGVuIHRoZSBtb2NrIG1ldGhvZCBpcyBjYWxsZWQu
ICBgU2V0QXJnUG9pbnRlZSgpYCBzYXlzIHdoYXQgdGhlCitzaWRlIGVmZmVjdCBpcywgYnV0IGRv
ZXNuJ3Qgc2F5IHdoYXQgdGhlIHJldHVybiB2YWx1ZSBzaG91bGQgYmUuICBZb3UKK25lZWQgYERv
QWxsKClgIHRvIGNoYWluIGEgYFNldEFyZ1BvaW50ZWUoKWAgd2l0aCBhIGBSZXR1cm4oKWAuCisK
K1NlZSB0aGlzIFtyZWNpcGVdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGVtb2NrL3dp
a2kvVjFfN19Db29rQm9vayNNb2NraW5nX1NpZGVfRWZmZWN0cykgZm9yIG1vcmUgZGV0YWlscyBh
bmQgYW4gZXhhbXBsZS4KKworCisjIyBNeSBxdWVzdGlvbiBpcyBub3QgaW4geW91ciBGQVEhICMj
CisKK0lmIHlvdSBjYW5ub3QgZmluZCB0aGUgYW5zd2VyIHRvIHlvdXIgcXVlc3Rpb24gaW4gdGhp
cyBGQVEsIHRoZXJlIGFyZQorc29tZSBvdGhlciByZXNvdXJjZXMgeW91IGNhbiB1c2U6CisKKyAg
MS4gcmVhZCBvdGhlciBbd2lraSBwYWdlc10oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2ds
ZW1vY2svdy9saXN0KSwKKyAgMS4gc2VhcmNoIHRoZSBtYWlsaW5nIGxpc3QgW2FyY2hpdmVdKGh0
dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9ncm91cC9nb29nbGVtb2NrL3RvcGljcyksCisgIDEuIGFz
ayBpdCBvbiBbZ29vZ2xlbW9ja0Bnb29nbGVncm91cHMuY29tXShtYWlsdG86Z29vZ2xlbW9ja0Bn
b29nbGVncm91cHMuY29tKSBhbmQgc29tZW9uZSB3aWxsIGFuc3dlciBpdCAodG8gcHJldmVudCBz
cGFtLCB3ZSByZXF1aXJlIHlvdSB0byBqb2luIHRoZSBbZGlzY3Vzc2lvbiBncm91cF0oaHR0cDov
L2dyb3Vwcy5nb29nbGUuY29tL2dyb3VwL2dvb2dsZW1vY2spIGJlZm9yZSB5b3UgY2FuIHBvc3Qu
KS4KKworUGxlYXNlIG5vdGUgdGhhdCBjcmVhdGluZyBhbiBpc3N1ZSBpbiB0aGUKK1tpc3N1ZSB0
cmFja2VyXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9jay9pc3N1ZXMvbGlzdCkg
aXMgX25vdF8KK2EgZ29vZCB3YXkgdG8gZ2V0IHlvdXIgYW5zd2VyLCBhcyBpdCBpcyBtb25pdG9y
ZWQgaW5mcmVxdWVudGx5IGJ5IGEKK3Zlcnkgc21hbGwgbnVtYmVyIG9mIHBlb3BsZS4KKworV2hl
biBhc2tpbmcgYSBxdWVzdGlvbiwgaXQncyBoZWxwZnVsIHRvIHByb3ZpZGUgYXMgbXVjaCBvZiB0
aGUKK2ZvbGxvd2luZyBpbmZvcm1hdGlvbiBhcyBwb3NzaWJsZSAocGVvcGxlIGNhbm5vdCBoZWxw
IHlvdSBpZiB0aGVyZSdzCitub3QgZW5vdWdoIGluZm9ybWF0aW9uIGluIHlvdXIgcXVlc3Rpb24p
OgorCisgICogdGhlIHZlcnNpb24gKG9yIHRoZSByZXZpc2lvbiBudW1iZXIgaWYgeW91IGNoZWNr
IG91dCBmcm9tIFNWTiBkaXJlY3RseSkgb2YgR29vZ2xlIE1vY2sgeW91IHVzZSAoR29vZ2xlIE1v
Y2sgaXMgdW5kZXIgYWN0aXZlIGRldmVsb3BtZW50LCBzbyBpdCdzIHBvc3NpYmxlIHRoYXQgeW91
ciBwcm9ibGVtIGhhcyBiZWVuIHNvbHZlZCBpbiBhIGxhdGVyIHZlcnNpb24pLAorICAqIHlvdXIg
b3BlcmF0aW5nIHN5c3RlbSwKKyAgKiB0aGUgbmFtZSBhbmQgdmVyc2lvbiBvZiB5b3VyIGNvbXBp
bGVyLAorICAqIHRoZSBjb21wbGV0ZSBjb21tYW5kIGxpbmUgZmxhZ3MgeW91IGdpdmUgdG8geW91
ciBjb21waWxlciwKKyAgKiB0aGUgY29tcGxldGUgY29tcGlsZXIgZXJyb3IgbWVzc2FnZXMgKGlm
IHRoZSBxdWVzdGlvbiBpcyBhYm91dCBjb21waWxhdGlvbiksCisgICogdGhlIF9hY3R1YWxfIGNv
ZGUgKGlkZWFsbHksIGEgbWluaW1hbCBidXQgY29tcGxldGUgcHJvZ3JhbSkgdGhhdCBoYXMgdGhl
IHByb2JsZW0geW91IGVuY291bnRlci4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2dtb2NrLWFjdGlvbnMuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGVtb2NrL2luY2x1ZGUvZ21vY2svZ21vY2stYWN0aW9ucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIzZjY1NGFm
MzQ4ZDFhNmMzZDMwN2QzNTM5NzA1ODM3ZjM5MjEzMzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xlbW9jay9pbmNsdWRlL2dtb2NrL2dtb2NrLWFjdGlvbnMuaApAQCAtMCwwICsxLDEyMDUgQEAK
Ky8vIENvcHlyaWdodCAyMDA3LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8g
ZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8v
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBBdXRo
b3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisKKy8vIEdvb2dsZSBNb2NrIC0gYSBm
cmFtZXdvcmsgZm9yIHdyaXRpbmcgQysrIG1vY2sgY2xhc3Nlcy4KKy8vCisvLyBUaGlzIGZpbGUg
aW1wbGVtZW50cyBzb21lIGNvbW1vbmx5IHVzZWQgYWN0aW9ucy4KKworI2lmbmRlZiBHTU9DS19J
TkNMVURFX0dNT0NLX0dNT0NLX0FDVElPTlNfSF8KKyNkZWZpbmUgR01PQ0tfSU5DTFVERV9HTU9D
S19HTU9DS19BQ1RJT05TX0hfCisKKyNpZm5kZWYgX1dJTjMyX1dDRQorIyBpbmNsdWRlIDxlcnJu
by5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8c3RyaW5nPgor
CisjaW5jbHVkZSAiZ21vY2svaW50ZXJuYWwvZ21vY2staW50ZXJuYWwtdXRpbHMuaCIKKyNpbmNs
dWRlICJnbW9jay9pbnRlcm5hbC9nbW9jay1wb3J0LmgiCisKKyNpZiBHVEVTVF9IQVNfU1REX1RZ
UEVfVFJBSVRTXyAgLy8gRGVmaW5lZCBieSBndGVzdC1wb3J0LmggdmlhIGdtb2NrLXBvcnQuaC4K
KyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKyNlbmRpZgorCituYW1lc3BhY2UgdGVzdGluZyB7CisK
Ky8vIFRvIGltcGxlbWVudCBhbiBhY3Rpb24gRm9vLCBkZWZpbmU6CisvLyAgIDEuIGEgY2xhc3Mg
Rm9vQWN0aW9uIHRoYXQgaW1wbGVtZW50cyB0aGUgQWN0aW9uSW50ZXJmYWNlIGludGVyZmFjZSwg
YW5kCisvLyAgIDIuIGEgZmFjdG9yeSBmdW5jdGlvbiB0aGF0IGNyZWF0ZXMgYW4gQWN0aW9uIG9i
amVjdCBmcm9tIGEKKy8vICAgICAgY29uc3QgRm9vQWN0aW9uKi4KKy8vCisvLyBUaGUgdHdvLWxl
dmVsIGRlbGVnYXRpb24gZGVzaWduIGZvbGxvd3MgdGhhdCBvZiBNYXRjaGVyLCBwcm92aWRpbmcK
Ky8vIGNvbnNpc3RlbmN5IGZvciBleHRlbnNpb24gZGV2ZWxvcGVycy4gIEl0IGFsc28gZWFzZXMg
b3duZXJzaGlwCisvLyBtYW5hZ2VtZW50IGFzIEFjdGlvbiBvYmplY3RzIGNhbiBub3cgYmUgY29w
aWVkIGxpa2UgcGxhaW4gdmFsdWVzLgorCituYW1lc3BhY2UgaW50ZXJuYWwgeworCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgRjEsIHR5cGVuYW1lIEYyPgorY2xhc3MgQWN0aW9uQWRhcHRvcjsKKworLy8g
QnVpbHRJbkRlZmF1bHRWYWx1ZUdldHRlcjxULCB0cnVlPjo6R2V0KCkgcmV0dXJucyBhCisvLyBk
ZWZhdWx0LWNvbnN0cnVjdGVkIFQgdmFsdWUuICBCdWlsdEluRGVmYXVsdFZhbHVlR2V0dGVyPFQs
CisvLyBmYWxzZT46OkdldCgpIGNyYXNoZXMgd2l0aCBhbiBlcnJvci4KKy8vCisvLyBUaGlzIHBy
aW1hcnkgdGVtcGxhdGUgaXMgdXNlZCB3aGVuIGtEZWZhdWx0Q29uc3RydWN0aWJsZSBpcyB0cnVl
LgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIGJvb2wga0RlZmF1bHRDb25zdHJ1Y3RpYmxlPgorc3Ry
dWN0IEJ1aWx0SW5EZWZhdWx0VmFsdWVHZXR0ZXIgeworICBzdGF0aWMgVCBHZXQoKSB7IHJldHVy
biBUKCk7IH0KK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBCdWlsdEluRGVmYXVs
dFZhbHVlR2V0dGVyPFQsIGZhbHNlPiB7CisgIHN0YXRpYyBUIEdldCgpIHsKKyAgICBBc3NlcnQo
ZmFsc2UsIF9fRklMRV9fLCBfX0xJTkVfXywKKyAgICAgICAgICAgIkRlZmF1bHQgYWN0aW9uIHVu
ZGVmaW5lZCBmb3IgdGhlIGZ1bmN0aW9uIHJldHVybiB0eXBlLiIpOworICAgIHJldHVybiBpbnRl
cm5hbDo6SW52YWxpZDxUPigpOworICAgIC8vIFRoZSBhYm92ZSBzdGF0ZW1lbnQgd2lsbCBuZXZl
ciBiZSByZWFjaGVkLCBidXQgaXMgcmVxdWlyZWQgaW4KKyAgICAvLyBvcmRlciBmb3IgdGhpcyBm
dW5jdGlvbiB0byBjb21waWxlLgorICB9Cit9OworCisvLyBCdWlsdEluRGVmYXVsdFZhbHVlPFQ+
OjpHZXQoKSByZXR1cm5zIHRoZSAiYnVpbHQtaW4iIGRlZmF1bHQgdmFsdWUKKy8vIGZvciB0eXBl
IFQsIHdoaWNoIGlzIE5VTEwgd2hlbiBUIGlzIGEgcmF3IHBvaW50ZXIgdHlwZSwgMCB3aGVuIFQg
aXMKKy8vIGEgbnVtZXJpYyB0eXBlLCBmYWxzZSB3aGVuIFQgaXMgYm9vbCwgb3IgIiIgd2hlbiBU
IGlzIHN0cmluZyBvcgorLy8gc3RkOjpzdHJpbmcuICBJbiBhZGRpdGlvbiwgaW4gQysrMTEgYW5k
IGFib3ZlLCBpdCB0dXJucyBhCisvLyBkZWZhdWx0LWNvbnN0cnVjdGVkIFQgdmFsdWUgaWYgVCBp
cyBkZWZhdWx0IGNvbnN0cnVjdGlibGUuICBGb3IgYW55CisvLyBvdGhlciB0eXBlIFQsIHRoZSBi
dWlsdC1pbiBkZWZhdWx0IFQgdmFsdWUgaXMgdW5kZWZpbmVkLCBhbmQgdGhlCisvLyBmdW5jdGlv
biB3aWxsIGFib3J0IHRoZSBwcm9jZXNzLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBC
dWlsdEluRGVmYXVsdFZhbHVlIHsKKyBwdWJsaWM6CisjaWYgR1RFU1RfSEFTX1NURF9UWVBFX1RS
QUlUU18KKyAgLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRydWUgaWZmIHR5cGUgVCBoYXMgYSBi
dWlsdC1pbiBkZWZhdWx0IHZhbHVlLgorICBzdGF0aWMgYm9vbCBFeGlzdHMoKSB7CisgICAgcmV0
dXJuIDo6c3RkOjppc19kZWZhdWx0X2NvbnN0cnVjdGlibGU8VD46OnZhbHVlOworICB9CisKKyAg
c3RhdGljIFQgR2V0KCkgeworICAgIHJldHVybiBCdWlsdEluRGVmYXVsdFZhbHVlR2V0dGVyPAor
ICAgICAgICBULCA6OnN0ZDo6aXNfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZT46Okdl
dCgpOworICB9CisKKyNlbHNlICAvLyBHVEVTVF9IQVNfU1REX1RZUEVfVFJBSVRTXworICAvLyBU
aGlzIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSBpZmYgdHlwZSBUIGhhcyBhIGJ1aWx0LWluIGRlZmF1
bHQgdmFsdWUuCisgIHN0YXRpYyBib29sIEV4aXN0cygpIHsKKyAgICByZXR1cm4gZmFsc2U7Cisg
IH0KKworICBzdGF0aWMgVCBHZXQoKSB7CisgICAgcmV0dXJuIEJ1aWx0SW5EZWZhdWx0VmFsdWVH
ZXR0ZXI8VCwgZmFsc2U+OjpHZXQoKTsKKyAgfQorCisjZW5kaWYgIC8vIEdURVNUX0hBU19TVERf
VFlQRV9UUkFJVFNfCit9OworCisvLyBUaGlzIHBhcnRpYWwgc3BlY2lhbGl6YXRpb24gc2F5cyB0
aGF0IHdlIHVzZSB0aGUgc2FtZSBidWlsdC1pbgorLy8gZGVmYXVsdCB2YWx1ZSBmb3IgVCBhbmQg
Y29uc3QgVC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgQnVpbHRJbkRlZmF1bHRWYWx1
ZTxjb25zdCBUPiB7CisgcHVibGljOgorICBzdGF0aWMgYm9vbCBFeGlzdHMoKSB7IHJldHVybiBC
dWlsdEluRGVmYXVsdFZhbHVlPFQ+OjpFeGlzdHMoKTsgfQorICBzdGF0aWMgVCBHZXQoKSB7IHJl
dHVybiBCdWlsdEluRGVmYXVsdFZhbHVlPFQ+OjpHZXQoKTsgfQorfTsKKworLy8gVGhpcyBwYXJ0
aWFsIHNwZWNpYWxpemF0aW9uIGRlZmluZXMgdGhlIGRlZmF1bHQgdmFsdWVzIGZvciBwb2ludGVy
CisvLyB0eXBlcy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgQnVpbHRJbkRlZmF1bHRW
YWx1ZTxUKj4geworIHB1YmxpYzoKKyAgc3RhdGljIGJvb2wgRXhpc3RzKCkgeyByZXR1cm4gdHJ1
ZTsgfQorICBzdGF0aWMgVCogR2V0KCkgeyByZXR1cm4gTlVMTDsgfQorfTsKKworLy8gVGhlIGZv
bGxvd2luZyBzcGVjaWFsaXphdGlvbnMgZGVmaW5lIHRoZSBkZWZhdWx0IHZhbHVlcyBmb3IKKy8v
IHNwZWNpZmljIHR5cGVzIHdlIGNhcmUgYWJvdXQuCisjZGVmaW5lIEdNT0NLX0RFRklORV9ERUZB
VUxUX0FDVElPTl9GT1JfUkVUVVJOX1RZUEVfKHR5cGUsIHZhbHVlKSBcCisgIHRlbXBsYXRlIDw+
IFwKKyAgY2xhc3MgQnVpbHRJbkRlZmF1bHRWYWx1ZTx0eXBlPiB7IFwKKyAgIHB1YmxpYzogXAor
ICAgIHN0YXRpYyBib29sIEV4aXN0cygpIHsgcmV0dXJuIHRydWU7IH0gXAorICAgIHN0YXRpYyB0
eXBlIEdldCgpIHsgcmV0dXJuIHZhbHVlOyB9IFwKKyAgfQorCitHTU9DS19ERUZJTkVfREVGQVVM
VF9BQ1RJT05fRk9SX1JFVFVSTl9UWVBFXyh2b2lkLCApOyAgLy8gTk9MSU5UCisjaWYgR1RFU1Rf
SEFTX0dMT0JBTF9TVFJJTkcKK0dNT0NLX0RFRklORV9ERUZBVUxUX0FDVElPTl9GT1JfUkVUVVJO
X1RZUEVfKDo6c3RyaW5nLCAiIik7CisjZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5H
CitHTU9DS19ERUZJTkVfREVGQVVMVF9BQ1RJT05fRk9SX1JFVFVSTl9UWVBFXyg6OnN0ZDo6c3Ry
aW5nLCAiIik7CitHTU9DS19ERUZJTkVfREVGQVVMVF9BQ1RJT05fRk9SX1JFVFVSTl9UWVBFXyhi
b29sLCBmYWxzZSk7CitHTU9DS19ERUZJTkVfREVGQVVMVF9BQ1RJT05fRk9SX1JFVFVSTl9UWVBF
Xyh1bnNpZ25lZCBjaGFyLCAnXDAnKTsKK0dNT0NLX0RFRklORV9ERUZBVUxUX0FDVElPTl9GT1Jf
UkVUVVJOX1RZUEVfKHNpZ25lZCBjaGFyLCAnXDAnKTsKK0dNT0NLX0RFRklORV9ERUZBVUxUX0FD
VElPTl9GT1JfUkVUVVJOX1RZUEVfKGNoYXIsICdcMCcpOworCisvLyBUaGVyZSdzIG5vIG5lZWQg
Zm9yIGEgZGVmYXVsdCBhY3Rpb24gZm9yIHNpZ25lZCB3Y2hhcl90LCBhcyB0aGF0CisvLyB0eXBl
IGlzIHRoZSBzYW1lIGFzIHdjaGFyX3QgZm9yIGdjYywgYW5kIGludmFsaWQgZm9yIE1TVkMuCisv
LworLy8gVGhlcmUncyBhbHNvIG5vIG5lZWQgZm9yIGEgZGVmYXVsdCBhY3Rpb24gZm9yIHVuc2ln
bmVkIHdjaGFyX3QsIGFzCisvLyB0aGF0IHR5cGUgaXMgdGhlIHNhbWUgYXMgdW5zaWduZWQgaW50
IGZvciBnY2MsIGFuZCBpbnZhbGlkIGZvcgorLy8gTVNWQy4KKyNpZiBHTU9DS19XQ0hBUl9UX0lT
X05BVElWRV8KK0dNT0NLX0RFRklORV9ERUZBVUxUX0FDVElPTl9GT1JfUkVUVVJOX1RZUEVfKHdj
aGFyX3QsIDBVKTsgIC8vIE5PTElOVAorI2VuZGlmCisKK0dNT0NLX0RFRklORV9ERUZBVUxUX0FD
VElPTl9GT1JfUkVUVVJOX1RZUEVfKHVuc2lnbmVkIHNob3J0LCAwVSk7ICAvLyBOT0xJTlQKK0dN
T0NLX0RFRklORV9ERUZBVUxUX0FDVElPTl9GT1JfUkVUVVJOX1RZUEVfKHNpZ25lZCBzaG9ydCwg
MCk7ICAgICAvLyBOT0xJTlQKK0dNT0NLX0RFRklORV9ERUZBVUxUX0FDVElPTl9GT1JfUkVUVVJO
X1RZUEVfKHVuc2lnbmVkIGludCwgMFUpOworR01PQ0tfREVGSU5FX0RFRkFVTFRfQUNUSU9OX0ZP
Ul9SRVRVUk5fVFlQRV8oc2lnbmVkIGludCwgMCk7CitHTU9DS19ERUZJTkVfREVGQVVMVF9BQ1RJ
T05fRk9SX1JFVFVSTl9UWVBFXyh1bnNpZ25lZCBsb25nLCAwVUwpOyAgLy8gTk9MSU5UCitHTU9D
S19ERUZJTkVfREVGQVVMVF9BQ1RJT05fRk9SX1JFVFVSTl9UWVBFXyhzaWduZWQgbG9uZywgMEwp
OyAgICAgLy8gTk9MSU5UCitHTU9DS19ERUZJTkVfREVGQVVMVF9BQ1RJT05fRk9SX1JFVFVSTl9U
WVBFXyhVSW50NjQsIDApOworR01PQ0tfREVGSU5FX0RFRkFVTFRfQUNUSU9OX0ZPUl9SRVRVUk5f
VFlQRV8oSW50NjQsIDApOworR01PQ0tfREVGSU5FX0RFRkFVTFRfQUNUSU9OX0ZPUl9SRVRVUk5f
VFlQRV8oZmxvYXQsIDApOworR01PQ0tfREVGSU5FX0RFRkFVTFRfQUNUSU9OX0ZPUl9SRVRVUk5f
VFlQRV8oZG91YmxlLCAwKTsKKworI3VuZGVmIEdNT0NLX0RFRklORV9ERUZBVUxUX0FDVElPTl9G
T1JfUkVUVVJOX1RZUEVfCisKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAorCisvLyBXaGVuIGFu
IHVuZXhwZWN0ZWQgZnVuY3Rpb24gY2FsbCBpcyBlbmNvdW50ZXJlZCwgR29vZ2xlIE1vY2sgd2ls
bAorLy8gbGV0IGl0IHJldHVybiBhIGRlZmF1bHQgdmFsdWUgaWYgdGhlIHVzZXIgaGFzIHNwZWNp
ZmllZCBvbmUgZm9yIGl0cworLy8gcmV0dXJuIHR5cGUsIG9yIGlmIHRoZSByZXR1cm4gdHlwZSBo
YXMgYSBidWlsdC1pbiBkZWZhdWx0IHZhbHVlOworLy8gb3RoZXJ3aXNlIEdvb2dsZSBNb2NrIHdv
bid0IGtub3cgd2hhdCB2YWx1ZSB0byByZXR1cm4gYW5kIHdpbGwgaGF2ZQorLy8gdG8gYWJvcnQg
dGhlIHByb2Nlc3MuCisvLworLy8gVGhlIERlZmF1bHRWYWx1ZTxUPiBjbGFzcyBhbGxvd3MgYSB1
c2VyIHRvIHNwZWNpZnkgdGhlCisvLyBkZWZhdWx0IHZhbHVlIGZvciBhIHR5cGUgVCB0aGF0IGlz
IGJvdGggY29weWFibGUgYW5kIHB1YmxpY2x5CisvLyBkZXN0cnVjdGlibGUgKGkuZS4gYW55dGhp
bmcgdGhhdCBjYW4gYmUgdXNlZCBhcyBhIGZ1bmN0aW9uIHJldHVybgorLy8gdHlwZSkuICBUaGUg
dXNhZ2UgaXM6CisvLworLy8gICAvLyBTZXRzIHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0eXBlIFQg
dG8gYmUgZm9vLgorLy8gICBEZWZhdWx0VmFsdWU8VD46OlNldChmb28pOwordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CitjbGFzcyBEZWZhdWx0VmFsdWUgeworIHB1YmxpYzoKKyAgLy8gU2V0cyB0aGUg
ZGVmYXVsdCB2YWx1ZSBmb3IgdHlwZSBUOyByZXF1aXJlcyBUIHRvIGJlCisgIC8vIGNvcHktY29u
c3RydWN0YWJsZSBhbmQgaGF2ZSBhIHB1YmxpYyBkZXN0cnVjdG9yLgorICBzdGF0aWMgdm9pZCBT
ZXQoVCB4KSB7CisgICAgZGVsZXRlIHByb2R1Y2VyXzsKKyAgICBwcm9kdWNlcl8gPSBuZXcgRml4
ZWRWYWx1ZVByb2R1Y2VyKHgpOworICB9CisKKyAgLy8gUHJvdmlkZXMgYSBmYWN0b3J5IGZ1bmN0
aW9uIHRvIGJlIGNhbGxlZCB0byBnZW5lcmF0ZSB0aGUgZGVmYXVsdCB2YWx1ZS4KKyAgLy8gVGhp
cyBtZXRob2QgY2FuIGJlIHVzZWQgZXZlbiBpZiBUIGlzIG9ubHkgbW92ZS1jb25zdHJ1Y3RpYmxl
LCBidXQgaXQgaXMgbm90CisgIC8vIGxpbWl0ZWQgdG8gdGhhdCBjYXNlLgorICB0eXBlZGVmIFQg
KCpGYWN0b3J5RnVuY3Rpb24pKCk7CisgIHN0YXRpYyB2b2lkIFNldEZhY3RvcnkoRmFjdG9yeUZ1
bmN0aW9uIGZhY3RvcnkpIHsKKyAgICBkZWxldGUgcHJvZHVjZXJfOworICAgIHByb2R1Y2VyXyA9
IG5ldyBGYWN0b3J5VmFsdWVQcm9kdWNlcihmYWN0b3J5KTsKKyAgfQorCisgIC8vIFVuc2V0cyB0
aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdHlwZSBULgorICBzdGF0aWMgdm9pZCBDbGVhcigpIHsKKyAg
ICBkZWxldGUgcHJvZHVjZXJfOworICAgIHByb2R1Y2VyXyA9IE5VTEw7CisgIH0KKworICAvLyBS
ZXR1cm5zIHRydWUgaWZmIHRoZSB1c2VyIGhhcyBzZXQgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHR5
cGUgVC4KKyAgc3RhdGljIGJvb2wgSXNTZXQoKSB7IHJldHVybiBwcm9kdWNlcl8gIT0gTlVMTDsg
fQorCisgIC8vIFJldHVybnMgdHJ1ZSBpZiBUIGhhcyBhIGRlZmF1bHQgcmV0dXJuIHZhbHVlIHNl
dCBieSB0aGUgdXNlciBvciB0aGVyZQorICAvLyBleGlzdHMgYSBidWlsdC1pbiBkZWZhdWx0IHZh
bHVlLgorICBzdGF0aWMgYm9vbCBFeGlzdHMoKSB7CisgICAgcmV0dXJuIElzU2V0KCkgfHwgaW50
ZXJuYWw6OkJ1aWx0SW5EZWZhdWx0VmFsdWU8VD46OkV4aXN0cygpOworICB9CisKKyAgLy8gUmV0
dXJucyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdHlwZSBUIGlmIHRoZSB1c2VyIGhhcyBzZXQgb25l
OworICAvLyBvdGhlcndpc2UgcmV0dXJucyB0aGUgYnVpbHQtaW4gZGVmYXVsdCB2YWx1ZS4gUmVx
dWlyZXMgdGhhdCBFeGlzdHMoKQorICAvLyBpcyB0cnVlLCB3aGljaCBlbnN1cmVzIHRoYXQgdGhl
IHJldHVybiB2YWx1ZSBpcyB3ZWxsLWRlZmluZWQuCisgIHN0YXRpYyBUIEdldCgpIHsKKyAgICBy
ZXR1cm4gcHJvZHVjZXJfID09IE5VTEwgPworICAgICAgICBpbnRlcm5hbDo6QnVpbHRJbkRlZmF1
bHRWYWx1ZTxUPjo6R2V0KCkgOiBwcm9kdWNlcl8tPlByb2R1Y2UoKTsKKyAgfQorCisgcHJpdmF0
ZToKKyAgY2xhc3MgVmFsdWVQcm9kdWNlciB7CisgICBwdWJsaWM6CisgICAgdmlydHVhbCB+VmFs
dWVQcm9kdWNlcigpIHt9CisgICAgdmlydHVhbCBUIFByb2R1Y2UoKSA9IDA7CisgIH07CisKKyAg
Y2xhc3MgRml4ZWRWYWx1ZVByb2R1Y2VyIDogcHVibGljIFZhbHVlUHJvZHVjZXIgeworICAgcHVi
bGljOgorICAgIGV4cGxpY2l0IEZpeGVkVmFsdWVQcm9kdWNlcihUIHZhbHVlKSA6IHZhbHVlXyh2
YWx1ZSkge30KKyAgICB2aXJ0dWFsIFQgUHJvZHVjZSgpIHsgcmV0dXJuIHZhbHVlXzsgfQorCisg
ICBwcml2YXRlOgorICAgIGNvbnN0IFQgdmFsdWVfOworICAgIEdURVNUX0RJU0FMTE9XX0NPUFlf
QU5EX0FTU0lHTl8oRml4ZWRWYWx1ZVByb2R1Y2VyKTsKKyAgfTsKKworICBjbGFzcyBGYWN0b3J5
VmFsdWVQcm9kdWNlciA6IHB1YmxpYyBWYWx1ZVByb2R1Y2VyIHsKKyAgIHB1YmxpYzoKKyAgICBl
eHBsaWNpdCBGYWN0b3J5VmFsdWVQcm9kdWNlcihGYWN0b3J5RnVuY3Rpb24gZmFjdG9yeSkKKyAg
ICAgICAgOiBmYWN0b3J5XyhmYWN0b3J5KSB7fQorICAgIHZpcnR1YWwgVCBQcm9kdWNlKCkgeyBy
ZXR1cm4gZmFjdG9yeV8oKTsgfQorCisgICBwcml2YXRlOgorICAgIGNvbnN0IEZhY3RvcnlGdW5j
dGlvbiBmYWN0b3J5XzsKKyAgICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKEZhY3Rv
cnlWYWx1ZVByb2R1Y2VyKTsKKyAgfTsKKworICBzdGF0aWMgVmFsdWVQcm9kdWNlciogcHJvZHVj
ZXJfOworfTsKKworLy8gVGhpcyBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uIGFsbG93cyBhIHVzZXIg
dG8gc2V0IGRlZmF1bHQgdmFsdWVzIGZvcgorLy8gcmVmZXJlbmNlIHR5cGVzLgordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CitjbGFzcyBEZWZhdWx0VmFsdWU8VCY+IHsKKyBwdWJsaWM6CisgIC8vIFNl
dHMgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHR5cGUgVCYuCisgIHN0YXRpYyB2b2lkIFNldChUJiB4
KSB7ICAvLyBOT0xJTlQKKyAgICBhZGRyZXNzXyA9ICZ4OworICB9CisKKyAgLy8gVW5zZXRzIHRo
ZSBkZWZhdWx0IHZhbHVlIGZvciB0eXBlIFQmLgorICBzdGF0aWMgdm9pZCBDbGVhcigpIHsKKyAg
ICBhZGRyZXNzXyA9IE5VTEw7CisgIH0KKworICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSB1c2Vy
IGhhcyBzZXQgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHR5cGUgVCYuCisgIHN0YXRpYyBib29sIElz
U2V0KCkgeyByZXR1cm4gYWRkcmVzc18gIT0gTlVMTDsgfQorCisgIC8vIFJldHVybnMgdHJ1ZSBp
ZiBUIGhhcyBhIGRlZmF1bHQgcmV0dXJuIHZhbHVlIHNldCBieSB0aGUgdXNlciBvciB0aGVyZQor
ICAvLyBleGlzdHMgYSBidWlsdC1pbiBkZWZhdWx0IHZhbHVlLgorICBzdGF0aWMgYm9vbCBFeGlz
dHMoKSB7CisgICAgcmV0dXJuIElzU2V0KCkgfHwgaW50ZXJuYWw6OkJ1aWx0SW5EZWZhdWx0VmFs
dWU8VCY+OjpFeGlzdHMoKTsKKyAgfQorCisgIC8vIFJldHVybnMgdGhlIGRlZmF1bHQgdmFsdWUg
Zm9yIHR5cGUgVCYgaWYgdGhlIHVzZXIgaGFzIHNldCBvbmU7CisgIC8vIG90aGVyd2lzZSByZXR1
cm5zIHRoZSBidWlsdC1pbiBkZWZhdWx0IHZhbHVlIGlmIHRoZXJlIGlzIG9uZTsKKyAgLy8gb3Ro
ZXJ3aXNlIGFib3J0cyB0aGUgcHJvY2Vzcy4KKyAgc3RhdGljIFQmIEdldCgpIHsKKyAgICByZXR1
cm4gYWRkcmVzc18gPT0gTlVMTCA/CisgICAgICAgIGludGVybmFsOjpCdWlsdEluRGVmYXVsdFZh
bHVlPFQmPjo6R2V0KCkgOiAqYWRkcmVzc187CisgIH0KKworIHByaXZhdGU6CisgIHN0YXRpYyBU
KiBhZGRyZXNzXzsKK307CisKKy8vIFRoaXMgc3BlY2lhbGl6YXRpb24gYWxsb3dzIERlZmF1bHRW
YWx1ZTx2b2lkPjo6R2V0KCkgdG8KKy8vIGNvbXBpbGUuCit0ZW1wbGF0ZSA8PgorY2xhc3MgRGVm
YXVsdFZhbHVlPHZvaWQ+IHsKKyBwdWJsaWM6CisgIHN0YXRpYyBib29sIEV4aXN0cygpIHsgcmV0
dXJuIHRydWU7IH0KKyAgc3RhdGljIHZvaWQgR2V0KCkge30KK307CisKKy8vIFBvaW50cyB0byB0
aGUgdXNlci1zZXQgZGVmYXVsdCB2YWx1ZSBmb3IgdHlwZSBULgordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Cit0eXBlbmFtZSBEZWZhdWx0VmFsdWU8VD46OlZhbHVlUHJvZHVjZXIqIERlZmF1bHRWYWx1
ZTxUPjo6cHJvZHVjZXJfID0gTlVMTDsKKworLy8gUG9pbnRzIHRvIHRoZSB1c2VyLXNldCBkZWZh
dWx0IHZhbHVlIGZvciB0eXBlIFQmLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitUKiBEZWZhdWx0
VmFsdWU8VCY+OjphZGRyZXNzXyA9IE5VTEw7CisKKy8vIEltcGxlbWVudCB0aGlzIGludGVyZmFj
ZSB0byBkZWZpbmUgYW4gYWN0aW9uIGZvciBmdW5jdGlvbiB0eXBlIEYuCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgRj4KK2NsYXNzIEFjdGlvbkludGVyZmFjZSB7CisgcHVibGljOgorICB0eXBlZGVmIHR5
cGVuYW1lIGludGVybmFsOjpGdW5jdGlvbjxGPjo6UmVzdWx0IFJlc3VsdDsKKyAgdHlwZWRlZiB0
eXBlbmFtZSBpbnRlcm5hbDo6RnVuY3Rpb248Rj46OkFyZ3VtZW50VHVwbGUgQXJndW1lbnRUdXBs
ZTsKKworICBBY3Rpb25JbnRlcmZhY2UoKSB7fQorICB2aXJ0dWFsIH5BY3Rpb25JbnRlcmZhY2Uo
KSB7fQorCisgIC8vIFBlcmZvcm1zIHRoZSBhY3Rpb24uICBUaGlzIG1ldGhvZCBpcyBub3QgY29u
c3QsIGFzIGluIGdlbmVyYWwgYW4KKyAgLy8gYWN0aW9uIGNhbiBoYXZlIHNpZGUgZWZmZWN0cyBh
bmQgYmUgc3RhdGVmdWwuICBGb3IgZXhhbXBsZSwgYQorICAvLyBnZXQtdGhlLW5leHQtZWxlbWVu
dC1mcm9tLXRoZS1jb2xsZWN0aW9uIGFjdGlvbiB3aWxsIG5lZWQgdG8KKyAgLy8gcmVtZW1iZXIg
dGhlIGN1cnJlbnQgZWxlbWVudC4KKyAgdmlydHVhbCBSZXN1bHQgUGVyZm9ybShjb25zdCBBcmd1
bWVudFR1cGxlJiBhcmdzKSA9IDA7CisKKyBwcml2YXRlOgorICBHVEVTVF9ESVNBTExPV19DT1BZ
X0FORF9BU1NJR05fKEFjdGlvbkludGVyZmFjZSk7Cit9OworCisvLyBBbiBBY3Rpb248Rj4gaXMg
YSBjb3B5YWJsZSBhbmQgSU1NVVRBQkxFIChleGNlcHQgYnkgYXNzaWdubWVudCkKKy8vIG9iamVj
dCB0aGF0IHJlcHJlc2VudHMgYW4gYWN0aW9uIHRvIGJlIHRha2VuIHdoZW4gYSBtb2NrIGZ1bmN0
aW9uCisvLyBvZiB0eXBlIEYgaXMgY2FsbGVkLiAgVGhlIGltcGxlbWVudGF0aW9uIG9mIEFjdGlv
bjxUPiBpcyBqdXN0IGEKKy8vIGxpbmtlZF9wdHIgdG8gY29uc3QgQWN0aW9uSW50ZXJmYWNlPFQ+
LCBzbyBjb3B5aW5nIGlzIGZhaXJseSBjaGVhcC4KKy8vIERvbid0IGluaGVyaXQgZnJvbSBBY3Rp
b24hCisvLworLy8gWW91IGNhbiB2aWV3IGFuIG9iamVjdCBpbXBsZW1lbnRpbmcgQWN0aW9uSW50
ZXJmYWNlPEY+IGFzIGEKKy8vIGNvbmNyZXRlIGFjdGlvbiAoaW5jbHVkaW5nIGl0cyBjdXJyZW50
IHN0YXRlKSwgYW5kIGFuIEFjdGlvbjxGPgorLy8gb2JqZWN0IGFzIGEgaGFuZGxlIHRvIGl0Lgor
dGVtcGxhdGUgPHR5cGVuYW1lIEY+CitjbGFzcyBBY3Rpb24geworIHB1YmxpYzoKKyAgdHlwZWRl
ZiB0eXBlbmFtZSBpbnRlcm5hbDo6RnVuY3Rpb248Rj46OlJlc3VsdCBSZXN1bHQ7CisgIHR5cGVk
ZWYgdHlwZW5hbWUgaW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpBcmd1bWVudFR1cGxlIEFyZ3VtZW50
VHVwbGU7CisKKyAgLy8gQ29uc3RydWN0cyBhIG51bGwgQWN0aW9uLiAgTmVlZGVkIGZvciBzdG9y
aW5nIEFjdGlvbiBvYmplY3RzIGluCisgIC8vIFNUTCBjb250YWluZXJzLgorICBBY3Rpb24oKSA6
IGltcGxfKE5VTEwpIHt9CisKKyAgLy8gQ29uc3RydWN0cyBhbiBBY3Rpb24gZnJvbSBpdHMgaW1w
bGVtZW50YXRpb24uICBBIE5VTEwgaW1wbCBpcworICAvLyB1c2VkIHRvIHJlcHJlc2VudCB0aGUg
ImRvLWRlZmF1bHQiIGFjdGlvbi4KKyAgZXhwbGljaXQgQWN0aW9uKEFjdGlvbkludGVyZmFjZTxG
PiogaW1wbCkgOiBpbXBsXyhpbXBsKSB7fQorCisgIC8vIENvcHkgY29uc3RydWN0b3IuCisgIEFj
dGlvbihjb25zdCBBY3Rpb24mIGFjdGlvbikgOiBpbXBsXyhhY3Rpb24uaW1wbF8pIHt9CisKKyAg
Ly8gVGhpcyBjb25zdHJ1Y3RvciBhbGxvd3MgdXMgdG8gdHVybiBhbiBBY3Rpb248RnVuYz4gb2Jq
ZWN0IGludG8gYW4KKyAgLy8gQWN0aW9uPEY+LCBhcyBsb25nIGFzIEYncyBhcmd1bWVudHMgY2Fu
IGJlIGltcGxpY2l0bHkgY29udmVydGVkCisgIC8vIHRvIEZ1bmMncyBhbmQgRnVuYydzIHJldHVy
biB0eXBlIGNhbiBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0bworICAvLyBGJ3MuCisgIHRlbXBs
YXRlIDx0eXBlbmFtZSBGdW5jPgorICBleHBsaWNpdCBBY3Rpb24oY29uc3QgQWN0aW9uPEZ1bmM+
JiBhY3Rpb24pOworCisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhpcyBpcyB0aGUgRG9EZWZhdWx0
KCkgYWN0aW9uLgorICBib29sIElzRG9EZWZhdWx0KCkgY29uc3QgeyByZXR1cm4gaW1wbF8uZ2V0
KCkgPT0gTlVMTDsgfQorCisgIC8vIFBlcmZvcm1zIHRoZSBhY3Rpb24uICBOb3RlIHRoYXQgdGhp
cyBtZXRob2QgaXMgY29uc3QgZXZlbiB0aG91Z2gKKyAgLy8gdGhlIGNvcnJlc3BvbmRpbmcgbWV0
aG9kIGluIEFjdGlvbkludGVyZmFjZSBpcyBub3QuICBUaGUgcmVhc29uCisgIC8vIGlzIHRoYXQg
YSBjb25zdCBBY3Rpb248Rj4gbWVhbnMgdGhhdCBpdCBjYW5ub3QgYmUgcmUtYm91bmQgdG8KKyAg
Ly8gYW5vdGhlciBjb25jcmV0ZSBhY3Rpb24sIG5vdCB0aGF0IHRoZSBjb25jcmV0ZSBhY3Rpb24g
aXQgYmluZHMgdG8KKyAgLy8gY2Fubm90IGNoYW5nZSBzdGF0ZS4gIChUaGluayBvZiB0aGUgZGlm
ZmVyZW5jZSBiZXR3ZWVuIGEgY29uc3QKKyAgLy8gcG9pbnRlciBhbmQgYSBwb2ludGVyIHRvIGNv
bnN0LikKKyAgUmVzdWx0IFBlcmZvcm0oY29uc3QgQXJndW1lbnRUdXBsZSYgYXJncykgY29uc3Qg
eworICAgIGludGVybmFsOjpBc3NlcnQoCisgICAgICAgICFJc0RvRGVmYXVsdCgpLCBfX0ZJTEVf
XywgX19MSU5FX18sCisgICAgICAgICJZb3UgYXJlIHVzaW5nIERvRGVmYXVsdCgpIGluc2lkZSBh
IGNvbXBvc2l0ZSBhY3Rpb24gbGlrZSAiCisgICAgICAgICJEb0FsbCgpIG9yIFdpdGhBcmdzKCku
ICBUaGlzIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRlY2huaWNhbCAiCisgICAgICAgICJyZWFzb25z
LiAgUGxlYXNlIGluc3RlYWQgc3BlbGwgb3V0IHRoZSBkZWZhdWx0IGFjdGlvbiwgb3IgIgorICAg
ICAgICAiYXNzaWduIHRoZSBkZWZhdWx0IGFjdGlvbiB0byBhbiBBY3Rpb24gdmFyaWFibGUgYW5k
IHVzZSAiCisgICAgICAgICJ0aGUgdmFyaWFibGUgaW4gdmFyaW91cyBwbGFjZXMuIik7CisgICAg
cmV0dXJuIGltcGxfLT5QZXJmb3JtKGFyZ3MpOworICB9CisKKyBwcml2YXRlOgorICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgRjEsIHR5cGVuYW1lIEYyPgorICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OkFj
dGlvbkFkYXB0b3I7CisKKyAgaW50ZXJuYWw6OmxpbmtlZF9wdHI8QWN0aW9uSW50ZXJmYWNlPEY+
ID4gaW1wbF87Cit9OworCisvLyBUaGUgUG9seW1vcnBoaWNBY3Rpb24gY2xhc3MgdGVtcGxhdGUg
bWFrZXMgaXQgZWFzeSB0byBpbXBsZW1lbnQgYQorLy8gcG9seW1vcnBoaWMgYWN0aW9uIChpLmUu
IGFuIGFjdGlvbiB0aGF0IGNhbiBiZSB1c2VkIGluIG1vY2sKKy8vIGZ1bmN0aW9ucyBvZiB0aGFu
IG9uZSB0eXBlLCBlLmcuIFJldHVybigpKS4KKy8vCisvLyBUbyBkZWZpbmUgYSBwb2x5bW9ycGhp
YyBhY3Rpb24sIGEgdXNlciBmaXJzdCBwcm92aWRlcyBhIENPUFlBQkxFCisvLyBpbXBsZW1lbnRh
dGlvbiBjbGFzcyB0aGF0IGhhcyBhIFBlcmZvcm0oKSBtZXRob2QgdGVtcGxhdGU6CisvLworLy8g
ICBjbGFzcyBGb29BY3Rpb24geworLy8gICAgcHVibGljOgorLy8gICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBSZXN1bHQsIHR5cGVuYW1lIEFyZ3VtZW50VHVwbGU+CisvLyAgICAgUmVzdWx0IFBlcmZv
cm0oY29uc3QgQXJndW1lbnRUdXBsZSYgYXJncykgY29uc3QgeworLy8gICAgICAgLy8gUHJvY2Vz
c2VzIHRoZSBhcmd1bWVudHMgYW5kIHJldHVybnMgYSByZXN1bHQsIHVzaW5nCisvLyAgICAgICAv
LyB0cjE6OmdldDxOPihhcmdzKSB0byBnZXQgdGhlIE4tdGggKDAtYmFzZWQpIGFyZ3VtZW50IGlu
IHRoZSB0dXBsZS4KKy8vICAgICB9CisvLyAgICAgLi4uCisvLyAgIH07CisvLworLy8gVGhlbiB0
aGUgdXNlciBjcmVhdGVzIHRoZSBwb2x5bW9ycGhpYyBhY3Rpb24gdXNpbmcKKy8vIE1ha2VQb2x5
bW9ycGhpY0FjdGlvbihvYmplY3QpIHdoZXJlIG9iamVjdCBoYXMgdHlwZSBGb29BY3Rpb24uICBT
ZWUKKy8vIHRoZSBkZWZpbml0aW9uIG9mIFJldHVybih2b2lkKSBhbmQgU2V0QXJndW1lbnRQb2lu
dGVlPE4+KHZhbHVlKSBmb3IKKy8vIGNvbXBsZXRlIGV4YW1wbGVzLgordGVtcGxhdGUgPHR5cGVu
YW1lIEltcGw+CitjbGFzcyBQb2x5bW9ycGhpY0FjdGlvbiB7CisgcHVibGljOgorICBleHBsaWNp
dCBQb2x5bW9ycGhpY0FjdGlvbihjb25zdCBJbXBsJiBpbXBsKSA6IGltcGxfKGltcGwpIHt9CisK
KyAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+CisgIG9wZXJhdG9yIEFjdGlvbjxGPigpIGNvbnN0IHsK
KyAgICByZXR1cm4gQWN0aW9uPEY+KG5ldyBNb25vbW9ycGhpY0ltcGw8Rj4oaW1wbF8pKTsKKyAg
fQorCisgcHJpdmF0ZToKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+CisgIGNsYXNzIE1vbm9tb3Jw
aGljSW1wbCA6IHB1YmxpYyBBY3Rpb25JbnRlcmZhY2U8Rj4geworICAgcHVibGljOgorICAgIHR5
cGVkZWYgdHlwZW5hbWUgaW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpSZXN1bHQgUmVzdWx0OworICAg
IHR5cGVkZWYgdHlwZW5hbWUgaW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpBcmd1bWVudFR1cGxlIEFy
Z3VtZW50VHVwbGU7CisKKyAgICBleHBsaWNpdCBNb25vbW9ycGhpY0ltcGwoY29uc3QgSW1wbCYg
aW1wbCkgOiBpbXBsXyhpbXBsKSB7fQorCisgICAgdmlydHVhbCBSZXN1bHQgUGVyZm9ybShjb25z
dCBBcmd1bWVudFR1cGxlJiBhcmdzKSB7CisgICAgICByZXR1cm4gaW1wbF8udGVtcGxhdGUgUGVy
Zm9ybTxSZXN1bHQ+KGFyZ3MpOworICAgIH0KKworICAgcHJpdmF0ZToKKyAgICBJbXBsIGltcGxf
OworCisgICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhNb25vbW9ycGhpY0ltcGwpOworICB9Owor
CisgIEltcGwgaW1wbF87CisKKyAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhQb2x5bW9ycGhpY0Fj
dGlvbik7Cit9OworCisvLyBDcmVhdGVzIGFuIEFjdGlvbiBmcm9tIGl0cyBpbXBsZW1lbnRhdGlv
biBhbmQgcmV0dXJucyBpdC4gIFRoZQorLy8gY3JlYXRlZCBBY3Rpb24gb2JqZWN0IG93bnMgdGhl
IGltcGxlbWVudGF0aW9uLgordGVtcGxhdGUgPHR5cGVuYW1lIEY+CitBY3Rpb248Rj4gTWFrZUFj
dGlvbihBY3Rpb25JbnRlcmZhY2U8Rj4qIGltcGwpIHsKKyAgcmV0dXJuIEFjdGlvbjxGPihpbXBs
KTsKK30KKworLy8gQ3JlYXRlcyBhIHBvbHltb3JwaGljIGFjdGlvbiBmcm9tIGl0cyBpbXBsZW1l
bnRhdGlvbi4gIFRoaXMgaXMKKy8vIGVhc2llciB0byB1c2UgdGhhbiB0aGUgUG9seW1vcnBoaWNB
Y3Rpb248SW1wbD4gY29uc3RydWN0b3IgYXMgaXQKKy8vIGRvZXNuJ3QgcmVxdWlyZSB5b3UgdG8g
ZXhwbGljaXRseSB3cml0ZSB0aGUgdGVtcGxhdGUgYXJndW1lbnQsIGUuZy4KKy8vCisvLyAgIE1h
a2VQb2x5bW9ycGhpY0FjdGlvbihmb28pOworLy8gdnMKKy8vICAgUG9seW1vcnBoaWNBY3Rpb248
VHlwZU9mRm9vPihmb28pOwordGVtcGxhdGUgPHR5cGVuYW1lIEltcGw+CitpbmxpbmUgUG9seW1v
cnBoaWNBY3Rpb248SW1wbD4gTWFrZVBvbHltb3JwaGljQWN0aW9uKGNvbnN0IEltcGwmIGltcGwp
IHsKKyAgcmV0dXJuIFBvbHltb3JwaGljQWN0aW9uPEltcGw+KGltcGwpOworfQorCituYW1lc3Bh
Y2UgaW50ZXJuYWwgeworCisvLyBBbGxvd3MgYW4gQWN0aW9uPEYyPiBvYmplY3QgdG8gcG9zZSBh
cyBhbiBBY3Rpb248RjE+LCBhcyBsb25nIGFzIEYyCisvLyBhbmQgRjEgYXJlIGNvbXBhdGlibGUu
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRjEsIHR5cGVuYW1lIEYyPgorY2xhc3MgQWN0aW9uQWRhcHRv
ciA6IHB1YmxpYyBBY3Rpb25JbnRlcmZhY2U8RjE+IHsKKyBwdWJsaWM6CisgIHR5cGVkZWYgdHlw
ZW5hbWUgaW50ZXJuYWw6OkZ1bmN0aW9uPEYxPjo6UmVzdWx0IFJlc3VsdDsKKyAgdHlwZWRlZiB0
eXBlbmFtZSBpbnRlcm5hbDo6RnVuY3Rpb248RjE+OjpBcmd1bWVudFR1cGxlIEFyZ3VtZW50VHVw
bGU7CisKKyAgZXhwbGljaXQgQWN0aW9uQWRhcHRvcihjb25zdCBBY3Rpb248RjI+JiBmcm9tKSA6
IGltcGxfKGZyb20uaW1wbF8pIHt9CisKKyAgdmlydHVhbCBSZXN1bHQgUGVyZm9ybShjb25zdCBB
cmd1bWVudFR1cGxlJiBhcmdzKSB7CisgICAgcmV0dXJuIGltcGxfLT5QZXJmb3JtKGFyZ3MpOwor
ICB9CisKKyBwcml2YXRlOgorICBjb25zdCBpbnRlcm5hbDo6bGlua2VkX3B0cjxBY3Rpb25JbnRl
cmZhY2U8RjI+ID4gaW1wbF87CisKKyAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhBY3Rpb25BZGFw
dG9yKTsKK307CisKKy8vIEhlbHBlciBzdHJ1Y3QgdG8gc3BlY2lhbGl6ZSBSZXR1cm5BY3Rpb24g
dG8gZXhlY3V0ZSBhIG1vdmUgaW5zdGVhZCBvZiBhIGNvcHkKKy8vIG9uIHJldHVybi4gVXNlZnVs
IGZvciBtb3ZlLW9ubHkgdHlwZXMsIGJ1dCBjb3VsZCBiZSB1c2VkIG9uIGFueSB0eXBlLgordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgQnlNb3ZlV3JhcHBlciB7CisgIGV4cGxpY2l0IEJ5
TW92ZVdyYXBwZXIoVCB2YWx1ZSkgOiBwYXlsb2FkKGludGVybmFsOjptb3ZlKHZhbHVlKSkge30K
KyAgVCBwYXlsb2FkOworfTsKKworLy8gSW1wbGVtZW50cyB0aGUgcG9seW1vcnBoaWMgUmV0dXJu
KHgpIGFjdGlvbiwgd2hpY2ggY2FuIGJlIHVzZWQgaW4KKy8vIGFueSBmdW5jdGlvbiB0aGF0IHJl
dHVybnMgdGhlIHR5cGUgb2YgeCwgcmVnYXJkbGVzcyBvZiB0aGUgYXJndW1lbnQKKy8vIHR5cGVz
LgorLy8KKy8vIE5vdGU6IFRoZSB2YWx1ZSBwYXNzZWQgaW50byBSZXR1cm4gbXVzdCBiZSBjb252
ZXJ0ZWQgaW50bworLy8gRnVuY3Rpb248Rj46OlJlc3VsdCB3aGVuIHRoaXMgYWN0aW9uIGlzIGNh
c3QgdG8gQWN0aW9uPEY+IHJhdGhlciB0aGFuCisvLyB3aGVuIHRoYXQgYWN0aW9uIGlzIHBlcmZv
cm1lZC4gVGhpcyBpcyBpbXBvcnRhbnQgaW4gc2NlbmFyaW9zIGxpa2UKKy8vCisvLyBNT0NLX01F
VEhPRDEoTWV0aG9kLCBUKFUpKTsKKy8vIC4uLgorLy8geworLy8gICBGb28gZm9vOworLy8gICBY
IHgoJmZvbyk7CisvLyAgIEVYUEVDVF9DQUxMKG1vY2ssIE1ldGhvZChfKSkuV2lsbE9uY2UoUmV0
dXJuKHgpKTsKKy8vIH0KKy8vCisvLyBJbiB0aGUgZXhhbXBsZSBhYm92ZSB0aGUgdmFyaWFibGUg
eCBob2xkcyByZWZlcmVuY2UgdG8gZm9vIHdoaWNoIGxlYXZlcworLy8gc2NvcGUgYW5kIGdldHMg
ZGVzdHJveWVkLiAgSWYgY29weWluZyBYIGp1c3QgY29waWVzIGEgcmVmZXJlbmNlIHRvIGZvbywK
Ky8vIHRoYXQgY29weSB3aWxsIGJlIGxlZnQgd2l0aCBhIGhhbmdpbmcgcmVmZXJlbmNlLiAgSWYg
Y29udmVyc2lvbiB0byBUCisvLyBtYWtlcyBhIGNvcHkgb2YgZm9vLCB0aGUgYWJvdmUgY29kZSBp
cyBzYWZlLiBUbyBzdXBwb3J0IHRoYXQgc2NlbmFyaW8sIHdlCisvLyBuZWVkIHRvIG1ha2Ugc3Vy
ZSB0aGF0IHRoZSB0eXBlIGNvbnZlcnNpb24gaGFwcGVucyBpbnNpZGUgdGhlIEVYUEVDVF9DQUxM
CisvLyBzdGF0ZW1lbnQsIGFuZCBjb252ZXJzaW9uIG9mIHRoZSByZXN1bHQgb2YgUmV0dXJuIHRv
IEFjdGlvbjxUKFUpPiBpcyBhCisvLyBnb29kIHBsYWNlIGZvciB0aGF0LgorLy8KK3RlbXBsYXRl
IDx0eXBlbmFtZSBSPgorY2xhc3MgUmV0dXJuQWN0aW9uIHsKKyBwdWJsaWM6CisgIC8vIENvbnN0
cnVjdHMgYSBSZXR1cm5BY3Rpb24gb2JqZWN0IGZyb20gdGhlIHZhbHVlIHRvIGJlIHJldHVybmVk
LgorICAvLyAndmFsdWUnIGlzIHBhc3NlZCBieSB2YWx1ZSBpbnN0ZWFkIG9mIGJ5IGNvbnN0IHJl
ZmVyZW5jZSBpbiBvcmRlcgorICAvLyB0byBhbGxvdyBSZXR1cm4oInN0cmluZyBsaXRlcmFsIikg
dG8gY29tcGlsZS4KKyAgZXhwbGljaXQgUmV0dXJuQWN0aW9uKFIgdmFsdWUpIDogdmFsdWVfKG5l
dyBSKGludGVybmFsOjptb3ZlKHZhbHVlKSkpIHt9CisKKyAgLy8gVGhpcyB0ZW1wbGF0ZSB0eXBl
IGNvbnZlcnNpb24gb3BlcmF0b3IgYWxsb3dzIFJldHVybih4KSB0byBiZQorICAvLyB1c2VkIGlu
IEFOWSBmdW5jdGlvbiB0aGF0IHJldHVybnMgeCdzIHR5cGUuCisgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBGPgorICBvcGVyYXRvciBBY3Rpb248Rj4oKSBjb25zdCB7CisgICAgLy8gQXNzZXJ0IHN0YXRl
bWVudCBiZWxvbmdzIGhlcmUgYmVjYXVzZSB0aGlzIGlzIHRoZSBiZXN0IHBsYWNlIHRvIHZlcmlm
eQorICAgIC8vIGNvbmRpdGlvbnMgb24gRi4gSXQgcHJvZHVjZXMgdGhlIGNsZWFyZXN0IGVycm9y
IG1lc3NhZ2VzCisgICAgLy8gaW4gbW9zdCBjb21waWxlcnMuCisgICAgLy8gSW1wbCByZWFsbHkg
YmVsb25ncyBpbiB0aGlzIHNjb3BlIGFzIGEgbG9jYWwgY2xhc3MgYnV0IGNhbid0CisgICAgLy8g
YmVjYXVzZSBNU1ZDIHByb2R1Y2VzIGR1cGxpY2F0ZSBzeW1ib2xzIGluIGRpZmZlcmVudCB0cmFu
c2xhdGlvbiB1bml0cworICAgIC8vIGluIHRoaXMgY2FzZS4gVW50aWwgTVMgZml4ZXMgdGhhdCBi
dWcgd2UgcHV0IEltcGwgaW50byB0aGUgY2xhc3Mgc2NvcGUKKyAgICAvLyBhbmQgcHV0IHRoZSB0
eXBlZGVmIGJvdGggaGVyZSAoZm9yIHVzZSBpbiBhc3NlcnQgc3RhdGVtZW50KSBhbmQKKyAgICAv
LyBpbiB0aGUgSW1wbCBjbGFzcy4gQnV0IGJvdGggZGVmaW5pdGlvbnMgbXVzdCBiZSB0aGUgc2Ft
ZS4KKyAgICB0eXBlZGVmIHR5cGVuYW1lIEZ1bmN0aW9uPEY+OjpSZXN1bHQgUmVzdWx0OworICAg
IEdURVNUX0NPTVBJTEVfQVNTRVJUXygKKyAgICAgICAgIWlzX3JlZmVyZW5jZTxSZXN1bHQ+Ojp2
YWx1ZSwKKyAgICAgICAgdXNlX1JldHVyblJlZl9pbnN0ZWFkX29mX1JldHVybl90b19yZXR1cm5f
YV9yZWZlcmVuY2UpOworICAgIHJldHVybiBBY3Rpb248Rj4obmV3IEltcGw8UiwgRj4odmFsdWVf
KSk7CisgIH0KKworIHByaXZhdGU6CisgIC8vIEltcGxlbWVudHMgdGhlIFJldHVybih4KSBhY3Rp
b24gZm9yIGEgcGFydGljdWxhciBmdW5jdGlvbiB0eXBlIEYuCisgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBSXywgdHlwZW5hbWUgRj4KKyAgY2xhc3MgSW1wbCA6IHB1YmxpYyBBY3Rpb25JbnRlcmZhY2U8
Rj4geworICAgcHVibGljOgorICAgIHR5cGVkZWYgdHlwZW5hbWUgRnVuY3Rpb248Rj46OlJlc3Vs
dCBSZXN1bHQ7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBGdW5jdGlvbjxGPjo6QXJndW1lbnRUdXBs
ZSBBcmd1bWVudFR1cGxlOworCisgICAgLy8gVGhlIGltcGxpY2l0IGNhc3QgaXMgbmVjZXNzYXJ5
IHdoZW4gUmVzdWx0IGhhcyBtb3JlIHRoYW4gb25lCisgICAgLy8gc2luZ2xlLWFyZ3VtZW50IGNv
bnN0cnVjdG9yIChlLmcuIFJlc3VsdCBpcyBzdGQ6OnZlY3RvcjxpbnQ+KSBhbmQgUgorICAgIC8v
IGhhcyBhIHR5cGUgY29udmVyc2lvbiBvcGVyYXRvciB0ZW1wbGF0ZS4gIEluIHRoYXQgY2FzZSwg
dmFsdWVfKHZhbHVlKQorICAgIC8vIHdvbid0IGNvbXBpbGUgYXMgdGhlIGNvbXBpbGVyIGRvZXNu
J3Qga25vd24gd2hpY2ggY29uc3RydWN0b3Igb2YKKyAgICAvLyBSZXN1bHQgdG8gY2FsbC4gIElt
cGxpY2l0Q2FzdF8gZm9yY2VzIHRoZSBjb21waWxlciB0byBjb252ZXJ0IFIgdG8KKyAgICAvLyBS
ZXN1bHQgd2l0aG91dCBjb25zaWRlcmluZyBleHBsaWNpdCBjb25zdHJ1Y3RvcnMsIHRodXMgcmVz
b2x2aW5nIHRoZQorICAgIC8vIGFtYmlndWl0eS4gdmFsdWVfIGlzIHRoZW4gaW5pdGlhbGl6ZWQg
dXNpbmcgaXRzIGNvcHkgY29uc3RydWN0b3IuCisgICAgZXhwbGljaXQgSW1wbChjb25zdCBsaW5r
ZWRfcHRyPFI+JiB2YWx1ZSkKKyAgICAgICAgOiB2YWx1ZV9iZWZvcmVfY2FzdF8oKnZhbHVlKSwK
KyAgICAgICAgICB2YWx1ZV8oSW1wbGljaXRDYXN0XzxSZXN1bHQ+KHZhbHVlX2JlZm9yZV9jYXN0
XykpIHt9CisKKyAgICB2aXJ0dWFsIFJlc3VsdCBQZXJmb3JtKGNvbnN0IEFyZ3VtZW50VHVwbGUm
KSB7IHJldHVybiB2YWx1ZV87IH0KKworICAgcHJpdmF0ZToKKyAgICBHVEVTVF9DT01QSUxFX0FT
U0VSVF8oIWlzX3JlZmVyZW5jZTxSZXN1bHQ+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgUmVzdWx0X2Nhbm5vdF9iZV9hX3JlZmVyZW5jZV90eXBlKTsKKyAgICAvLyBXZSBzYXZl
IHRoZSB2YWx1ZSBiZWZvcmUgY2FzdGluZyBqdXN0IGluIGNhc2UgaXQgaXMgYmVpbmcgY2FzdCB0
byBhCisgICAgLy8gd3JhcHBlciB0eXBlLgorICAgIFIgdmFsdWVfYmVmb3JlX2Nhc3RfOworICAg
IFJlc3VsdCB2YWx1ZV87CisKKyAgICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKElt
cGwpOworICB9OworCisgIC8vIFBhcnRpYWxseSBzcGVjaWFsaXplIGZvciBCeU1vdmVXcmFwcGVy
LiBUaGlzIHZlcnNpb24gb2YgUmV0dXJuQWN0aW9uIHdpbGwKKyAgLy8gbW92ZSBpdHMgY29udGVu
dHMgaW5zdGVhZC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFJfLCB0eXBlbmFtZSBGPgorICBjbGFz
cyBJbXBsPEJ5TW92ZVdyYXBwZXI8Ul8+LCBGPiA6IHB1YmxpYyBBY3Rpb25JbnRlcmZhY2U8Rj4g
eworICAgcHVibGljOgorICAgIHR5cGVkZWYgdHlwZW5hbWUgRnVuY3Rpb248Rj46OlJlc3VsdCBS
ZXN1bHQ7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBGdW5jdGlvbjxGPjo6QXJndW1lbnRUdXBsZSBB
cmd1bWVudFR1cGxlOworCisgICAgZXhwbGljaXQgSW1wbChjb25zdCBsaW5rZWRfcHRyPFI+JiB3
cmFwcGVyKQorICAgICAgICA6IHBlcmZvcm1lZF8oZmFsc2UpLCB3cmFwcGVyXyh3cmFwcGVyKSB7
fQorCisgICAgdmlydHVhbCBSZXN1bHQgUGVyZm9ybShjb25zdCBBcmd1bWVudFR1cGxlJikgewor
ICAgICAgR1RFU1RfQ0hFQ0tfKCFwZXJmb3JtZWRfKQorICAgICAgICAgIDw8ICJBIEJ5TW92ZSgp
IGFjdGlvbiBzaG91bGQgb25seSBiZSBwZXJmb3JtZWQgb25jZS4iOworICAgICAgcGVyZm9ybWVk
XyA9IHRydWU7CisgICAgICByZXR1cm4gaW50ZXJuYWw6Om1vdmUod3JhcHBlcl8tPnBheWxvYWQp
OworICAgIH0KKworICAgcHJpdmF0ZToKKyAgICBib29sIHBlcmZvcm1lZF87CisgICAgY29uc3Qg
bGlua2VkX3B0cjxSPiB3cmFwcGVyXzsKKworICAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oSW1w
bCk7CisgIH07CisKKyAgY29uc3QgbGlua2VkX3B0cjxSPiB2YWx1ZV87CisKKyAgR1RFU1RfRElT
QUxMT1dfQVNTSUdOXyhSZXR1cm5BY3Rpb24pOworfTsKKworLy8gSW1wbGVtZW50cyB0aGUgUmV0
dXJuTnVsbCgpIGFjdGlvbi4KK2NsYXNzIFJldHVybk51bGxBY3Rpb24geworIHB1YmxpYzoKKyAg
Ly8gQWxsb3dzIFJldHVybk51bGwoKSB0byBiZSB1c2VkIGluIGFueSBwb2ludGVyLXJldHVybmlu
ZyBmdW5jdGlvbi4gSW4gQysrMTEKKyAgLy8gdGhpcyBpcyBlbmZvcmNlZCBieSByZXR1cm5pbmcg
bnVsbHB0ciwgYW5kIGluIG5vbi1DKysxMSBieSBhc3NlcnRpbmcgYQorICAvLyBwb2ludGVyIHR5
cGUgb24gY29tcGlsZSB0aW1lLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0LCB0eXBlbmFt
ZSBBcmd1bWVudFR1cGxlPgorICBzdGF0aWMgUmVzdWx0IFBlcmZvcm0oY29uc3QgQXJndW1lbnRU
dXBsZSYpIHsKKyNpZiBHVEVTVF9MQU5HX0NYWDExCisgICAgcmV0dXJuIG51bGxwdHI7CisjZWxz
ZQorICAgIEdURVNUX0NPTVBJTEVfQVNTRVJUXyhpbnRlcm5hbDo6aXNfcG9pbnRlcjxSZXN1bHQ+
Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuTnVsbF9jYW5fYmVfdXNl
ZF90b19yZXR1cm5fYV9wb2ludGVyX29ubHkpOworICAgIHJldHVybiBOVUxMOworI2VuZGlmICAv
LyBHVEVTVF9MQU5HX0NYWDExCisgIH0KK307CisKKy8vIEltcGxlbWVudHMgdGhlIFJldHVybigp
IGFjdGlvbi4KK2NsYXNzIFJldHVyblZvaWRBY3Rpb24geworIHB1YmxpYzoKKyAgLy8gQWxsb3dz
IFJldHVybigpIHRvIGJlIHVzZWQgaW4gYW55IHZvaWQtcmV0dXJuaW5nIGZ1bmN0aW9uLgorICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0LCB0eXBlbmFtZSBBcmd1bWVudFR1cGxlPgorICBzdGF0
aWMgdm9pZCBQZXJmb3JtKGNvbnN0IEFyZ3VtZW50VHVwbGUmKSB7CisgICAgQ29tcGlsZUFzc2Vy
dFR5cGVzRXF1YWw8dm9pZCwgUmVzdWx0PigpOworICB9Cit9OworCisvLyBJbXBsZW1lbnRzIHRo
ZSBwb2x5bW9ycGhpYyBSZXR1cm5SZWYoeCkgYWN0aW9uLCB3aGljaCBjYW4gYmUgdXNlZAorLy8g
aW4gYW55IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgdHlwZSBvZiB4
LAorLy8gcmVnYXJkbGVzcyBvZiB0aGUgYXJndW1lbnQgdHlwZXMuCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KK2NsYXNzIFJldHVyblJlZkFjdGlvbiB7CisgcHVibGljOgorICAvLyBDb25zdHJ1Y3Rz
IGEgUmV0dXJuUmVmQWN0aW9uIG9iamVjdCBmcm9tIHRoZSByZWZlcmVuY2UgdG8gYmUgcmV0dXJu
ZWQuCisgIGV4cGxpY2l0IFJldHVyblJlZkFjdGlvbihUJiByZWYpIDogcmVmXyhyZWYpIHt9ICAv
LyBOT0xJTlQKKworICAvLyBUaGlzIHRlbXBsYXRlIHR5cGUgY29udmVyc2lvbiBvcGVyYXRvciBh
bGxvd3MgUmV0dXJuUmVmKHgpIHRvIGJlCisgIC8vIHVzZWQgaW4gQU5ZIGZ1bmN0aW9uIHRoYXQg
cmV0dXJucyBhIHJlZmVyZW5jZSB0byB4J3MgdHlwZS4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+
CisgIG9wZXJhdG9yIEFjdGlvbjxGPigpIGNvbnN0IHsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIEZ1
bmN0aW9uPEY+OjpSZXN1bHQgUmVzdWx0OworICAgIC8vIEFzc2VydHMgdGhhdCB0aGUgZnVuY3Rp
b24gcmV0dXJuIHR5cGUgaXMgYSByZWZlcmVuY2UuICBUaGlzCisgICAgLy8gY2F0Y2hlcyB0aGUg
dXNlciBlcnJvciBvZiB1c2luZyBSZXR1cm5SZWYoeCkgd2hlbiBSZXR1cm4oeCkKKyAgICAvLyBz
aG91bGQgYmUgdXNlZCwgYW5kIGdlbmVyYXRlcyBzb21lIGhlbHBmdWwgZXJyb3IgbWVzc2FnZS4K
KyAgICBHVEVTVF9DT01QSUxFX0FTU0VSVF8oaW50ZXJuYWw6OmlzX3JlZmVyZW5jZTxSZXN1bHQ+
Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlX1JldHVybl9pbnN0ZWFkX29m
X1JldHVyblJlZl90b19yZXR1cm5fYV92YWx1ZSk7CisgICAgcmV0dXJuIEFjdGlvbjxGPihuZXcg
SW1wbDxGPihyZWZfKSk7CisgIH0KKworIHByaXZhdGU6CisgIC8vIEltcGxlbWVudHMgdGhlIFJl
dHVyblJlZih4KSBhY3Rpb24gZm9yIGEgcGFydGljdWxhciBmdW5jdGlvbiB0eXBlIEYuCisgIHRl
bXBsYXRlIDx0eXBlbmFtZSBGPgorICBjbGFzcyBJbXBsIDogcHVibGljIEFjdGlvbkludGVyZmFj
ZTxGPiB7CisgICBwdWJsaWM6CisgICAgdHlwZWRlZiB0eXBlbmFtZSBGdW5jdGlvbjxGPjo6UmVz
dWx0IFJlc3VsdDsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIEZ1bmN0aW9uPEY+OjpBcmd1bWVudFR1
cGxlIEFyZ3VtZW50VHVwbGU7CisKKyAgICBleHBsaWNpdCBJbXBsKFQmIHJlZikgOiByZWZfKHJl
Zikge30gIC8vIE5PTElOVAorCisgICAgdmlydHVhbCBSZXN1bHQgUGVyZm9ybShjb25zdCBBcmd1
bWVudFR1cGxlJikgeworICAgICAgcmV0dXJuIHJlZl87CisgICAgfQorCisgICBwcml2YXRlOgor
ICAgIFQmIHJlZl87CisKKyAgICBHVEVTVF9ESVNBTExPV19BU1NJR05fKEltcGwpOworICB9Owor
CisgIFQmIHJlZl87CisKKyAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhSZXR1cm5SZWZBY3Rpb24p
OworfTsKKworLy8gSW1wbGVtZW50cyB0aGUgcG9seW1vcnBoaWMgUmV0dXJuUmVmT2ZDb3B5KHgp
IGFjdGlvbiwgd2hpY2ggY2FuIGJlCisvLyB1c2VkIGluIGFueSBmdW5jdGlvbiB0aGF0IHJldHVy
bnMgYSByZWZlcmVuY2UgdG8gdGhlIHR5cGUgb2YgeCwKKy8vIHJlZ2FyZGxlc3Mgb2YgdGhlIGFy
Z3VtZW50IHR5cGVzLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBSZXR1cm5SZWZPZkNv
cHlBY3Rpb24geworIHB1YmxpYzoKKyAgLy8gQ29uc3RydWN0cyBhIFJldHVyblJlZk9mQ29weUFj
dGlvbiBvYmplY3QgZnJvbSB0aGUgcmVmZXJlbmNlIHRvCisgIC8vIGJlIHJldHVybmVkLgorICBl
eHBsaWNpdCBSZXR1cm5SZWZPZkNvcHlBY3Rpb24oY29uc3QgVCYgdmFsdWUpIDogdmFsdWVfKHZh
bHVlKSB7fSAgLy8gTk9MSU5UCisKKyAgLy8gVGhpcyB0ZW1wbGF0ZSB0eXBlIGNvbnZlcnNpb24g
b3BlcmF0b3IgYWxsb3dzIFJldHVyblJlZk9mQ29weSh4KSB0byBiZQorICAvLyB1c2VkIGluIEFO
WSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSByZWZlcmVuY2UgdG8geCdzIHR5cGUuCisgIHRlbXBs
YXRlIDx0eXBlbmFtZSBGPgorICBvcGVyYXRvciBBY3Rpb248Rj4oKSBjb25zdCB7CisgICAgdHlw
ZWRlZiB0eXBlbmFtZSBGdW5jdGlvbjxGPjo6UmVzdWx0IFJlc3VsdDsKKyAgICAvLyBBc3NlcnRz
IHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybiB0eXBlIGlzIGEgcmVmZXJlbmNlLiAgVGhpcworICAg
IC8vIGNhdGNoZXMgdGhlIHVzZXIgZXJyb3Igb2YgdXNpbmcgUmV0dXJuUmVmT2ZDb3B5KHgpIHdo
ZW4gUmV0dXJuKHgpCisgICAgLy8gc2hvdWxkIGJlIHVzZWQsIGFuZCBnZW5lcmF0ZXMgc29tZSBo
ZWxwZnVsIGVycm9yIG1lc3NhZ2UuCisgICAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKAorICAgICAg
ICBpbnRlcm5hbDo6aXNfcmVmZXJlbmNlPFJlc3VsdD46OnZhbHVlLAorICAgICAgICB1c2VfUmV0
dXJuX2luc3RlYWRfb2ZfUmV0dXJuUmVmT2ZDb3B5X3RvX3JldHVybl9hX3ZhbHVlKTsKKyAgICBy
ZXR1cm4gQWN0aW9uPEY+KG5ldyBJbXBsPEY+KHZhbHVlXykpOworICB9CisKKyBwcml2YXRlOgor
ICAvLyBJbXBsZW1lbnRzIHRoZSBSZXR1cm5SZWZPZkNvcHkoeCkgYWN0aW9uIGZvciBhIHBhcnRp
Y3VsYXIgZnVuY3Rpb24gdHlwZSBGLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRj4KKyAgY2xhc3Mg
SW1wbCA6IHB1YmxpYyBBY3Rpb25JbnRlcmZhY2U8Rj4geworICAgcHVibGljOgorICAgIHR5cGVk
ZWYgdHlwZW5hbWUgRnVuY3Rpb248Rj46OlJlc3VsdCBSZXN1bHQ7CisgICAgdHlwZWRlZiB0eXBl
bmFtZSBGdW5jdGlvbjxGPjo6QXJndW1lbnRUdXBsZSBBcmd1bWVudFR1cGxlOworCisgICAgZXhw
bGljaXQgSW1wbChjb25zdCBUJiB2YWx1ZSkgOiB2YWx1ZV8odmFsdWUpIHt9ICAvLyBOT0xJTlQK
KworICAgIHZpcnR1YWwgUmVzdWx0IFBlcmZvcm0oY29uc3QgQXJndW1lbnRUdXBsZSYpIHsKKyAg
ICAgIHJldHVybiB2YWx1ZV87CisgICAgfQorCisgICBwcml2YXRlOgorICAgIFQgdmFsdWVfOwor
CisgICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhJbXBsKTsKKyAgfTsKKworICBjb25zdCBUIHZh
bHVlXzsKKworICBHVEVTVF9ESVNBTExPV19BU1NJR05fKFJldHVyblJlZk9mQ29weUFjdGlvbik7
Cit9OworCisvLyBJbXBsZW1lbnRzIHRoZSBwb2x5bW9ycGhpYyBEb0RlZmF1bHQoKSBhY3Rpb24u
CitjbGFzcyBEb0RlZmF1bHRBY3Rpb24geworIHB1YmxpYzoKKyAgLy8gVGhpcyB0ZW1wbGF0ZSB0
eXBlIGNvbnZlcnNpb24gb3BlcmF0b3IgYWxsb3dzIERvRGVmYXVsdCgpIHRvIGJlCisgIC8vIHVz
ZWQgaW4gYW55IGZ1bmN0aW9uLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRj4KKyAgb3BlcmF0b3Ig
QWN0aW9uPEY+KCkgY29uc3QgeyByZXR1cm4gQWN0aW9uPEY+KE5VTEwpOyB9Cit9OworCisvLyBJ
bXBsZW1lbnRzIHRoZSBBc3NpZ24gYWN0aW9uIHRvIHNldCBhIGdpdmVuIHBvaW50ZXIgcmVmZXJl
bnQgdG8gYQorLy8gcGFydGljdWxhciB2YWx1ZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlw
ZW5hbWUgVDI+CitjbGFzcyBBc3NpZ25BY3Rpb24geworIHB1YmxpYzoKKyAgQXNzaWduQWN0aW9u
KFQxKiBwdHIsIFQyIHZhbHVlKSA6IHB0cl8ocHRyKSwgdmFsdWVfKHZhbHVlKSB7fQorCisgIHRl
bXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQsIHR5cGVuYW1lIEFyZ3VtZW50VHVwbGU+CisgIHZvaWQg
UGVyZm9ybShjb25zdCBBcmd1bWVudFR1cGxlJiAvKiBhcmdzICovKSBjb25zdCB7CisgICAgKnB0
cl8gPSB2YWx1ZV87CisgIH0KKworIHByaXZhdGU6CisgIFQxKiBjb25zdCBwdHJfOworICBjb25z
dCBUMiB2YWx1ZV87CisKKyAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhBc3NpZ25BY3Rpb24pOwor
fTsKKworI2lmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorCisvLyBJbXBsZW1lbnRzIHRoZSBT
ZXRFcnJub0FuZFJldHVybiBhY3Rpb24gdG8gc2ltdWxhdGUgcmV0dXJuIGZyb20KKy8vIHZhcmlv
dXMgc3lzdGVtIGNhbGxzIGFuZCBsaWJjIGZ1bmN0aW9ucy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBU
PgorY2xhc3MgU2V0RXJybm9BbmRSZXR1cm5BY3Rpb24geworIHB1YmxpYzoKKyAgU2V0RXJybm9B
bmRSZXR1cm5BY3Rpb24oaW50IGVycm5vX3ZhbHVlLCBUIHJlc3VsdCkKKyAgICAgIDogZXJybm9f
KGVycm5vX3ZhbHVlKSwKKyAgICAgICAgcmVzdWx0XyhyZXN1bHQpIHt9CisgIHRlbXBsYXRlIDx0
eXBlbmFtZSBSZXN1bHQsIHR5cGVuYW1lIEFyZ3VtZW50VHVwbGU+CisgIFJlc3VsdCBQZXJmb3Jt
KGNvbnN0IEFyZ3VtZW50VHVwbGUmIC8qIGFyZ3MgKi8pIGNvbnN0IHsKKyAgICBlcnJubyA9IGVy
cm5vXzsKKyAgICByZXR1cm4gcmVzdWx0XzsKKyAgfQorCisgcHJpdmF0ZToKKyAgY29uc3QgaW50
IGVycm5vXzsKKyAgY29uc3QgVCByZXN1bHRfOworCisgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8o
U2V0RXJybm9BbmRSZXR1cm5BY3Rpb24pOworfTsKKworI2VuZGlmICAvLyAhR1RFU1RfT1NfV0lO
RE9XU19NT0JJTEUKKworLy8gSW1wbGVtZW50cyB0aGUgU2V0QXJndW1lbnRQb2ludGVlPE4+KHgp
IGFjdGlvbiBmb3IgYW55IGZ1bmN0aW9uCisvLyB3aG9zZSBOLXRoIGFyZ3VtZW50ICgwLWJhc2Vk
KSBpcyBhIHBvaW50ZXIgdG8geCdzIHR5cGUuICBUaGUKKy8vIHRlbXBsYXRlIHBhcmFtZXRlciBr
SXNQcm90byBpcyB0cnVlIGlmZiB0eXBlIEEgaXMgUHJvdG9jb2xNZXNzYWdlLAorLy8gcHJvdG8y
OjpNZXNzYWdlLCBvciBhIHN1Yi1jbGFzcyBvZiB0aG9zZS4KK3RlbXBsYXRlIDxzaXplX3QgTiwg
dHlwZW5hbWUgQSwgYm9vbCBrSXNQcm90bz4KK2NsYXNzIFNldEFyZ3VtZW50UG9pbnRlZUFjdGlv
biB7CisgcHVibGljOgorICAvLyBDb25zdHJ1Y3RzIGFuIGFjdGlvbiB0aGF0IHNldHMgdGhlIHZh
cmlhYmxlIHBvaW50ZWQgdG8gYnkgdGhlCisgIC8vIE4tdGggZnVuY3Rpb24gYXJndW1lbnQgdG8g
J3ZhbHVlJy4KKyAgZXhwbGljaXQgU2V0QXJndW1lbnRQb2ludGVlQWN0aW9uKGNvbnN0IEEmIHZh
bHVlKSA6IHZhbHVlXyh2YWx1ZSkge30KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0LCB0
eXBlbmFtZSBBcmd1bWVudFR1cGxlPgorICB2b2lkIFBlcmZvcm0oY29uc3QgQXJndW1lbnRUdXBs
ZSYgYXJncykgY29uc3QgeworICAgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPHZvaWQsIFJlc3Vs
dD4oKTsKKyAgICAqOjp0ZXN0aW5nOjpnZXQ8Tj4oYXJncykgPSB2YWx1ZV87CisgIH0KKworIHBy
aXZhdGU6CisgIGNvbnN0IEEgdmFsdWVfOworCisgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oU2V0
QXJndW1lbnRQb2ludGVlQWN0aW9uKTsKK307CisKK3RlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5h
bWUgUHJvdG8+CitjbGFzcyBTZXRBcmd1bWVudFBvaW50ZWVBY3Rpb248TiwgUHJvdG8sIHRydWU+
IHsKKyBwdWJsaWM6CisgIC8vIENvbnN0cnVjdHMgYW4gYWN0aW9uIHRoYXQgc2V0cyB0aGUgdmFy
aWFibGUgcG9pbnRlZCB0byBieSB0aGUKKyAgLy8gTi10aCBmdW5jdGlvbiBhcmd1bWVudCB0byAn
cHJvdG8nLiAgQm90aCBQcm90b2NvbE1lc3NhZ2UgYW5kCisgIC8vIHByb3RvMjo6TWVzc2FnZSBo
YXZlIHRoZSBDb3B5RnJvbSgpIG1ldGhvZCwgc28gdGhlIHNhbWUKKyAgLy8gaW1wbGVtZW50YXRp
b24gd29ya3MgZm9yIGJvdGguCisgIGV4cGxpY2l0IFNldEFyZ3VtZW50UG9pbnRlZUFjdGlvbihj
b25zdCBQcm90byYgcHJvdG8pIDogcHJvdG9fKG5ldyBQcm90bykgeworICAgIHByb3RvXy0+Q29w
eUZyb20ocHJvdG8pOworICB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFJlc3VsdCwgdHlwZW5h
bWUgQXJndW1lbnRUdXBsZT4KKyAgdm9pZCBQZXJmb3JtKGNvbnN0IEFyZ3VtZW50VHVwbGUmIGFy
Z3MpIGNvbnN0IHsKKyAgICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDx2b2lkLCBSZXN1bHQ+KCk7
CisgICAgOjp0ZXN0aW5nOjpnZXQ8Tj4oYXJncyktPkNvcHlGcm9tKCpwcm90b18pOworICB9CisK
KyBwcml2YXRlOgorICBjb25zdCBpbnRlcm5hbDo6bGlua2VkX3B0cjxQcm90bz4gcHJvdG9fOwor
CisgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oU2V0QXJndW1lbnRQb2ludGVlQWN0aW9uKTsKK307
CisKKy8vIEltcGxlbWVudHMgdGhlIEludm9rZVdpdGhvdXRBcmdzKGYpIGFjdGlvbi4gIFRoZSB0
ZW1wbGF0ZSBhcmd1bWVudAorLy8gRnVuY3Rpb25JbXBsIGlzIHRoZSBpbXBsZW1lbnRhdGlvbiB0
eXBlIG9mIGYsIHdoaWNoIGNhbiBiZSBlaXRoZXIgYQorLy8gZnVuY3Rpb24gcG9pbnRlciBvciBh
IGZ1bmN0b3IuICBJbnZva2VXaXRob3V0QXJncyhmKSBjYW4gYmUgdXNlZCBhcyBhbgorLy8gQWN0
aW9uPEY+IGFzIGxvbmcgYXMgZidzIHR5cGUgaXMgY29tcGF0aWJsZSB3aXRoIEYgKGkuZS4gZiBj
YW4gYmUKKy8vIGFzc2lnbmVkIHRvIGEgdHIxOjpmdW5jdGlvbjxGPikuCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgRnVuY3Rpb25JbXBsPgorY2xhc3MgSW52b2tlV2l0aG91dEFyZ3NBY3Rpb24geworIHB1
YmxpYzoKKyAgLy8gVGhlIGMndG9yIG1ha2VzIGEgY29weSBvZiBmdW5jdGlvbl9pbXBsIChlaXRo
ZXIgYSBmdW5jdGlvbgorICAvLyBwb2ludGVyIG9yIGEgZnVuY3RvcikuCisgIGV4cGxpY2l0IElu
dm9rZVdpdGhvdXRBcmdzQWN0aW9uKEZ1bmN0aW9uSW1wbCBmdW5jdGlvbl9pbXBsKQorICAgICAg
OiBmdW5jdGlvbl9pbXBsXyhmdW5jdGlvbl9pbXBsKSB7fQorCisgIC8vIEFsbG93cyBJbnZva2VX
aXRob3V0QXJncyhmKSB0byBiZSB1c2VkIGFzIGFueSBhY3Rpb24gd2hvc2UgdHlwZSBpcworICAv
LyBjb21wYXRpYmxlIHdpdGggZi4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFJlc3VsdCwgdHlwZW5h
bWUgQXJndW1lbnRUdXBsZT4KKyAgUmVzdWx0IFBlcmZvcm0oY29uc3QgQXJndW1lbnRUdXBsZSYp
IHsgcmV0dXJuIGZ1bmN0aW9uX2ltcGxfKCk7IH0KKworIHByaXZhdGU6CisgIEZ1bmN0aW9uSW1w
bCBmdW5jdGlvbl9pbXBsXzsKKworICBHVEVTVF9ESVNBTExPV19BU1NJR05fKEludm9rZVdpdGhv
dXRBcmdzQWN0aW9uKTsKK307CisKKy8vIEltcGxlbWVudHMgdGhlIEludm9rZVdpdGhvdXRBcmdz
KG9iamVjdF9wdHIsICZDbGFzczo6TWV0aG9kKSBhY3Rpb24uCit0ZW1wbGF0ZSA8Y2xhc3MgQ2xh
c3MsIHR5cGVuYW1lIE1ldGhvZFB0cj4KK2NsYXNzIEludm9rZU1ldGhvZFdpdGhvdXRBcmdzQWN0
aW9uIHsKKyBwdWJsaWM6CisgIEludm9rZU1ldGhvZFdpdGhvdXRBcmdzQWN0aW9uKENsYXNzKiBv
YmpfcHRyLCBNZXRob2RQdHIgbWV0aG9kX3B0cikKKyAgICAgIDogb2JqX3B0cl8ob2JqX3B0ciks
IG1ldGhvZF9wdHJfKG1ldGhvZF9wdHIpIHt9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFJlc3Vs
dCwgdHlwZW5hbWUgQXJndW1lbnRUdXBsZT4KKyAgUmVzdWx0IFBlcmZvcm0oY29uc3QgQXJndW1l
bnRUdXBsZSYpIGNvbnN0IHsKKyAgICByZXR1cm4gKG9ial9wdHJfLT4qbWV0aG9kX3B0cl8pKCk7
CisgIH0KKworIHByaXZhdGU6CisgIENsYXNzKiBjb25zdCBvYmpfcHRyXzsKKyAgY29uc3QgTWV0
aG9kUHRyIG1ldGhvZF9wdHJfOworCisgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oSW52b2tlTWV0
aG9kV2l0aG91dEFyZ3NBY3Rpb24pOworfTsKKworLy8gSW1wbGVtZW50cyB0aGUgSWdub3JlUmVz
dWx0KGFjdGlvbikgYWN0aW9uLgordGVtcGxhdGUgPHR5cGVuYW1lIEE+CitjbGFzcyBJZ25vcmVS
ZXN1bHRBY3Rpb24geworIHB1YmxpYzoKKyAgZXhwbGljaXQgSWdub3JlUmVzdWx0QWN0aW9uKGNv
bnN0IEEmIGFjdGlvbikgOiBhY3Rpb25fKGFjdGlvbikge30KKworICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgRj4KKyAgb3BlcmF0b3IgQWN0aW9uPEY+KCkgY29uc3QgeworICAgIC8vIEFzc2VydCBzdGF0
ZW1lbnQgYmVsb25ncyBoZXJlIGJlY2F1c2UgdGhpcyBpcyB0aGUgYmVzdCBwbGFjZSB0byB2ZXJp
ZnkKKyAgICAvLyBjb25kaXRpb25zIG9uIEYuIEl0IHByb2R1Y2VzIHRoZSBjbGVhcmVzdCBlcnJv
ciBtZXNzYWdlcworICAgIC8vIGluIG1vc3QgY29tcGlsZXJzLgorICAgIC8vIEltcGwgcmVhbGx5
IGJlbG9uZ3MgaW4gdGhpcyBzY29wZSBhcyBhIGxvY2FsIGNsYXNzIGJ1dCBjYW4ndAorICAgIC8v
IGJlY2F1c2UgTVNWQyBwcm9kdWNlcyBkdXBsaWNhdGUgc3ltYm9scyBpbiBkaWZmZXJlbnQgdHJh
bnNsYXRpb24gdW5pdHMKKyAgICAvLyBpbiB0aGlzIGNhc2UuIFVudGlsIE1TIGZpeGVzIHRoYXQg
YnVnIHdlIHB1dCBJbXBsIGludG8gdGhlIGNsYXNzIHNjb3BlCisgICAgLy8gYW5kIHB1dCB0aGUg
dHlwZWRlZiBib3RoIGhlcmUgKGZvciB1c2UgaW4gYXNzZXJ0IHN0YXRlbWVudCkgYW5kCisgICAg
Ly8gaW4gdGhlIEltcGwgY2xhc3MuIEJ1dCBib3RoIGRlZmluaXRpb25zIG11c3QgYmUgdGhlIHNh
bWUuCisgICAgdHlwZWRlZiB0eXBlbmFtZSBpbnRlcm5hbDo6RnVuY3Rpb248Rj46OlJlc3VsdCBS
ZXN1bHQ7CisKKyAgICAvLyBBc3NlcnRzIGF0IGNvbXBpbGUgdGltZSB0aGF0IEYgcmV0dXJucyB2
b2lkLgorICAgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPHZvaWQsIFJlc3VsdD4oKTsKKworICAg
IHJldHVybiBBY3Rpb248Rj4obmV3IEltcGw8Rj4oYWN0aW9uXykpOworICB9CisKKyBwcml2YXRl
OgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRj4KKyAgY2xhc3MgSW1wbCA6IHB1YmxpYyBBY3Rpb25J
bnRlcmZhY2U8Rj4geworICAgcHVibGljOgorICAgIHR5cGVkZWYgdHlwZW5hbWUgaW50ZXJuYWw6
OkZ1bmN0aW9uPEY+OjpSZXN1bHQgUmVzdWx0OworICAgIHR5cGVkZWYgdHlwZW5hbWUgaW50ZXJu
YWw6OkZ1bmN0aW9uPEY+OjpBcmd1bWVudFR1cGxlIEFyZ3VtZW50VHVwbGU7CisKKyAgICBleHBs
aWNpdCBJbXBsKGNvbnN0IEEmIGFjdGlvbikgOiBhY3Rpb25fKGFjdGlvbikge30KKworICAgIHZp
cnR1YWwgdm9pZCBQZXJmb3JtKGNvbnN0IEFyZ3VtZW50VHVwbGUmIGFyZ3MpIHsKKyAgICAgIC8v
IFBlcmZvcm1zIHRoZSBhY3Rpb24gYW5kIGlnbm9yZXMgaXRzIHJlc3VsdC4KKyAgICAgIGFjdGlv
bl8uUGVyZm9ybShhcmdzKTsKKyAgICB9CisKKyAgIHByaXZhdGU6CisgICAgLy8gVHlwZSBPcmln
aW5hbEZ1bmN0aW9uIGlzIHRoZSBzYW1lIGFzIEYgZXhjZXB0IHRoYXQgaXRzIHJldHVybgorICAg
IC8vIHR5cGUgaXMgSWdub3JlZFZhbHVlLgorICAgIHR5cGVkZWYgdHlwZW5hbWUgaW50ZXJuYWw6
OkZ1bmN0aW9uPEY+OjpNYWtlUmVzdWx0SWdub3JlZFZhbHVlCisgICAgICAgIE9yaWdpbmFsRnVu
Y3Rpb247CisKKyAgICBjb25zdCBBY3Rpb248T3JpZ2luYWxGdW5jdGlvbj4gYWN0aW9uXzsKKwor
ICAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oSW1wbCk7CisgIH07CisKKyAgY29uc3QgQSBhY3Rp
b25fOworCisgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oSWdub3JlUmVzdWx0QWN0aW9uKTsKK307
CisKKy8vIEEgUmVmZXJlbmNlV3JhcHBlcjxUPiBvYmplY3QgcmVwcmVzZW50cyBhIHJlZmVyZW5j
ZSB0byB0eXBlIFQsCisvLyB3aGljaCBjYW4gYmUgZWl0aGVyIGNvbnN0IG9yIG5vdC4gIEl0IGNh
biBiZSBleHBsaWNpdGx5IGNvbnZlcnRlZAorLy8gZnJvbSwgYW5kIGltcGxpY2l0bHkgY29udmVy
dGVkIHRvLCBhIFQmLiAgVW5saWtlIGEgcmVmZXJlbmNlLAorLy8gUmVmZXJlbmNlV3JhcHBlcjxU
PiBjYW4gYmUgY29waWVkIGFuZCBjYW4gc3Vydml2ZSB0ZW1wbGF0ZSB0eXBlCisvLyBpbmZlcmVu
Y2UuICBUaGlzIGlzIHVzZWQgdG8gc3VwcG9ydCBieS1yZWZlcmVuY2UgYXJndW1lbnRzIGluIHRo
ZQorLy8gSW52b2tlQXJndW1lbnQ8Tj4oLi4uKSBhY3Rpb24uICBUaGUgaWRlYSB3YXMgZnJvbSAi
cmVmZXJlbmNlCisvLyB3cmFwcGVycyIgaW4gdHIxLCB3aGljaCB3ZSBkb24ndCBoYXZlIGluIG91
ciBzb3VyY2UgdHJlZSB5ZXQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFJlZmVyZW5j
ZVdyYXBwZXIgeworIHB1YmxpYzoKKyAgLy8gQ29uc3RydWN0cyBhIFJlZmVyZW5jZVdyYXBwZXI8
VD4gb2JqZWN0IGZyb20gYSBUJi4KKyAgZXhwbGljaXQgUmVmZXJlbmNlV3JhcHBlcihUJiBsX3Zh
bHVlKSA6IHBvaW50ZXJfKCZsX3ZhbHVlKSB7fSAgLy8gTk9MSU5UCisKKyAgLy8gQWxsb3dzIGEg
UmVmZXJlbmNlV3JhcHBlcjxUPiBvYmplY3QgdG8gYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8K
KyAgLy8gYSBUJi4KKyAgb3BlcmF0b3IgVCYoKSBjb25zdCB7IHJldHVybiAqcG9pbnRlcl87IH0K
KyBwcml2YXRlOgorICBUKiBwb2ludGVyXzsKK307CisKKy8vIEFsbG93cyB0aGUgZXhwcmVzc2lv
biBCeVJlZih4KSB0byBiZSBwcmludGVkIGFzIGEgcmVmZXJlbmNlIHRvIHguCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KK3ZvaWQgUHJpbnRUbyhjb25zdCBSZWZlcmVuY2VXcmFwcGVyPFQ+JiByZWYs
IDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBUJiB2YWx1ZSA9IHJlZjsKKyAgVW5pdmVyc2FsUHJp
bnRlcjxUJj46OlByaW50KHZhbHVlLCBvcyk7Cit9CisKKy8vIERvZXMgdHdvIGFjdGlvbnMgc2Vx
dWVudGlhbGx5LiAgVXNlZCBmb3IgaW1wbGVtZW50aW5nIHRoZSBEb0FsbChhMSwKKy8vIGEyLCAu
Li4pIGFjdGlvbi4KK3RlbXBsYXRlIDx0eXBlbmFtZSBBY3Rpb24xLCB0eXBlbmFtZSBBY3Rpb24y
PgorY2xhc3MgRG9Cb3RoQWN0aW9uIHsKKyBwdWJsaWM6CisgIERvQm90aEFjdGlvbihBY3Rpb24x
IGFjdGlvbjEsIEFjdGlvbjIgYWN0aW9uMikKKyAgICAgIDogYWN0aW9uMV8oYWN0aW9uMSksIGFj
dGlvbjJfKGFjdGlvbjIpIHt9CisKKyAgLy8gVGhpcyB0ZW1wbGF0ZSB0eXBlIGNvbnZlcnNpb24g
b3BlcmF0b3IgYWxsb3dzIERvQWxsKGExLCAuLi4sIGFfbikKKyAgLy8gdG8gYmUgdXNlZCBpbiBB
TlkgZnVuY3Rpb24gb2YgY29tcGF0aWJsZSB0eXBlLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRj4K
KyAgb3BlcmF0b3IgQWN0aW9uPEY+KCkgY29uc3QgeworICAgIHJldHVybiBBY3Rpb248Rj4obmV3
IEltcGw8Rj4oYWN0aW9uMV8sIGFjdGlvbjJfKSk7CisgIH0KKworIHByaXZhdGU6CisgIC8vIElt
cGxlbWVudHMgdGhlIERvQWxsKC4uLikgYWN0aW9uIGZvciBhIHBhcnRpY3VsYXIgZnVuY3Rpb24g
dHlwZSBGLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRj4KKyAgY2xhc3MgSW1wbCA6IHB1YmxpYyBB
Y3Rpb25JbnRlcmZhY2U8Rj4geworICAgcHVibGljOgorICAgIHR5cGVkZWYgdHlwZW5hbWUgRnVu
Y3Rpb248Rj46OlJlc3VsdCBSZXN1bHQ7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBGdW5jdGlvbjxG
Pjo6QXJndW1lbnRUdXBsZSBBcmd1bWVudFR1cGxlOworICAgIHR5cGVkZWYgdHlwZW5hbWUgRnVu
Y3Rpb248Rj46Ok1ha2VSZXN1bHRWb2lkIFZvaWRSZXN1bHQ7CisKKyAgICBJbXBsKGNvbnN0IEFj
dGlvbjxWb2lkUmVzdWx0PiYgYWN0aW9uMSwgY29uc3QgQWN0aW9uPEY+JiBhY3Rpb24yKQorICAg
ICAgICA6IGFjdGlvbjFfKGFjdGlvbjEpLCBhY3Rpb24yXyhhY3Rpb24yKSB7fQorCisgICAgdmly
dHVhbCBSZXN1bHQgUGVyZm9ybShjb25zdCBBcmd1bWVudFR1cGxlJiBhcmdzKSB7CisgICAgICBh
Y3Rpb24xXy5QZXJmb3JtKGFyZ3MpOworICAgICAgcmV0dXJuIGFjdGlvbjJfLlBlcmZvcm0oYXJn
cyk7CisgICAgfQorCisgICBwcml2YXRlOgorICAgIGNvbnN0IEFjdGlvbjxWb2lkUmVzdWx0PiBh
Y3Rpb24xXzsKKyAgICBjb25zdCBBY3Rpb248Rj4gYWN0aW9uMl87CisKKyAgICBHVEVTVF9ESVNB
TExPV19BU1NJR05fKEltcGwpOworICB9OworCisgIEFjdGlvbjEgYWN0aW9uMV87CisgIEFjdGlv
bjIgYWN0aW9uMl87CisKKyAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhEb0JvdGhBY3Rpb24pOwor
fTsKKworfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCisKKy8vIEFuIFVudXNlZCBvYmplY3QgY2Fu
IGJlIGltcGxpY2l0bHkgY29uc3RydWN0ZWQgZnJvbSBBTlkgdmFsdWUuCisvLyBUaGlzIGlzIGhh
bmR5IHdoZW4gZGVmaW5pbmcgYWN0aW9ucyB0aGF0IGlnbm9yZSBzb21lIG9yIGFsbCBvZiB0aGUK
Ky8vIG1vY2sgZnVuY3Rpb24gYXJndW1lbnRzLiAgRm9yIGV4YW1wbGUsIGdpdmVuCisvLworLy8g
ICBNT0NLX01FVEhPRDMoRm9vLCBkb3VibGUoY29uc3Qgc3RyaW5nJiBsYWJlbCwgZG91YmxlIHgs
IGRvdWJsZSB5KSk7CisvLyAgIE1PQ0tfTUVUSE9EMyhCYXIsIGRvdWJsZShpbnQgaW5kZXgsIGRv
dWJsZSB4LCBkb3VibGUgeSkpOworLy8KKy8vIGluc3RlYWQgb2YKKy8vCisvLyAgIGRvdWJsZSBE
aXN0YW5jZVRvT3JpZ2luV2l0aExhYmVsKGNvbnN0IHN0cmluZyYgbGFiZWwsIGRvdWJsZSB4LCBk
b3VibGUgeSkgeworLy8gICAgIHJldHVybiBzcXJ0KHgqeCArIHkqeSk7CisvLyAgIH0KKy8vICAg
ZG91YmxlIERpc3RhbmNlVG9PcmlnaW5XaXRoSW5kZXgoaW50IGluZGV4LCBkb3VibGUgeCwgZG91
YmxlIHkpIHsKKy8vICAgICByZXR1cm4gc3FydCh4KnggKyB5KnkpOworLy8gICB9CisvLyAgIC4u
LgorLy8gICBFWEVQQ1RfQ0FMTChtb2NrLCBGb28oImFiYyIsIF8sIF8pKQorLy8gICAgICAgLldp
bGxPbmNlKEludm9rZShEaXN0YW5jZVRvT3JpZ2luV2l0aExhYmVsKSk7CisvLyAgIEVYRVBDVF9D
QUxMKG1vY2ssIEJhcig1LCBfLCBfKSkKKy8vICAgICAgIC5XaWxsT25jZShJbnZva2UoRGlzdGFu
Y2VUb09yaWdpbldpdGhJbmRleCkpOworLy8KKy8vIHlvdSBjb3VsZCB3cml0ZQorLy8KKy8vICAg
Ly8gV2UgY2FuIGRlY2xhcmUgYW55IHVuaW50ZXJlc3RpbmcgYXJndW1lbnQgYXMgVW51c2VkLgor
Ly8gICBkb3VibGUgRGlzdGFuY2VUb09yaWdpbihVbnVzZWQsIGRvdWJsZSB4LCBkb3VibGUgeSkg
eworLy8gICAgIHJldHVybiBzcXJ0KHgqeCArIHkqeSk7CisvLyAgIH0KKy8vICAgLi4uCisvLyAg
IEVYRVBDVF9DQUxMKG1vY2ssIEZvbygiYWJjIiwgXywgXykpLldpbGxPbmNlKEludm9rZShEaXN0
YW5jZVRvT3JpZ2luKSk7CisvLyAgIEVYRVBDVF9DQUxMKG1vY2ssIEJhcig1LCBfLCBfKSkuV2ls
bE9uY2UoSW52b2tlKERpc3RhbmNlVG9PcmlnaW4pKTsKK3R5cGVkZWYgaW50ZXJuYWw6Oklnbm9y
ZWRWYWx1ZSBVbnVzZWQ7CisKKy8vIFRoaXMgY29uc3RydWN0b3IgYWxsb3dzIHVzIHRvIHR1cm4g
YW4gQWN0aW9uPEZyb20+IG9iamVjdCBpbnRvIGFuCisvLyBBY3Rpb248VG8+LCBhcyBsb25nIGFz
IFRvJ3MgYXJndW1lbnRzIGNhbiBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZAorLy8gdG8gRnJvbSdz
IGFuZCBGcm9tJ3MgcmV0dXJuIHR5cGUgY2FubiBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0bwor
Ly8gVG8ncy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUbz4KK3RlbXBsYXRlIDx0eXBlbmFtZSBGcm9t
PgorQWN0aW9uPFRvPjo6QWN0aW9uKGNvbnN0IEFjdGlvbjxGcm9tPiYgZnJvbSkKKyAgICA6IGlt
cGxfKG5ldyBpbnRlcm5hbDo6QWN0aW9uQWRhcHRvcjxUbywgRnJvbT4oZnJvbSkpIHt9CisKKy8v
IENyZWF0ZXMgYW4gYWN0aW9uIHRoYXQgcmV0dXJucyAndmFsdWUnLiAgJ3ZhbHVlJyBpcyBwYXNz
ZWQgYnkgdmFsdWUKKy8vIGluc3RlYWQgb2YgY29uc3QgcmVmZXJlbmNlIC0gb3RoZXJ3aXNlIFJl
dHVybigic3RyaW5nIGxpdGVyYWwiKQorLy8gd2lsbCB0cmlnZ2VyIGEgY29tcGlsZXIgZXJyb3Ig
YWJvdXQgdXNpbmcgYXJyYXkgYXMgaW5pdGlhbGl6ZXIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUj4K
K2ludGVybmFsOjpSZXR1cm5BY3Rpb248Uj4gUmV0dXJuKFIgdmFsdWUpIHsKKyAgcmV0dXJuIGlu
dGVybmFsOjpSZXR1cm5BY3Rpb248Uj4oaW50ZXJuYWw6Om1vdmUodmFsdWUpKTsKK30KKworLy8g
Q3JlYXRlcyBhbiBhY3Rpb24gdGhhdCByZXR1cm5zIE5VTEwuCitpbmxpbmUgUG9seW1vcnBoaWNB
Y3Rpb248aW50ZXJuYWw6OlJldHVybk51bGxBY3Rpb24+IFJldHVybk51bGwoKSB7CisgIHJldHVy
biBNYWtlUG9seW1vcnBoaWNBY3Rpb24oaW50ZXJuYWw6OlJldHVybk51bGxBY3Rpb24oKSk7Cit9
CisKKy8vIENyZWF0ZXMgYW4gYWN0aW9uIHRoYXQgcmV0dXJucyBmcm9tIGEgdm9pZCBmdW5jdGlv
bi4KK2lubGluZSBQb2x5bW9ycGhpY0FjdGlvbjxpbnRlcm5hbDo6UmV0dXJuVm9pZEFjdGlvbj4g
UmV0dXJuKCkgeworICByZXR1cm4gTWFrZVBvbHltb3JwaGljQWN0aW9uKGludGVybmFsOjpSZXR1
cm5Wb2lkQWN0aW9uKCkpOworfQorCisvLyBDcmVhdGVzIGFuIGFjdGlvbiB0aGF0IHJldHVybnMg
dGhlIHJlZmVyZW5jZSB0byBhIHZhcmlhYmxlLgordGVtcGxhdGUgPHR5cGVuYW1lIFI+Citpbmxp
bmUgaW50ZXJuYWw6OlJldHVyblJlZkFjdGlvbjxSPiBSZXR1cm5SZWYoUiYgeCkgeyAgLy8gTk9M
SU5UCisgIHJldHVybiBpbnRlcm5hbDo6UmV0dXJuUmVmQWN0aW9uPFI+KHgpOworfQorCisvLyBD
cmVhdGVzIGFuIGFjdGlvbiB0aGF0IHJldHVybnMgdGhlIHJlZmVyZW5jZSB0byBhIGNvcHkgb2Yg
dGhlCisvLyBhcmd1bWVudC4gIFRoZSBjb3B5IGlzIGNyZWF0ZWQgd2hlbiB0aGUgYWN0aW9uIGlz
IGNvbnN0cnVjdGVkIGFuZAorLy8gbGl2ZXMgYXMgbG9uZyBhcyB0aGUgYWN0aW9uLgordGVtcGxh
dGUgPHR5cGVuYW1lIFI+CitpbmxpbmUgaW50ZXJuYWw6OlJldHVyblJlZk9mQ29weUFjdGlvbjxS
PiBSZXR1cm5SZWZPZkNvcHkoY29uc3QgUiYgeCkgeworICByZXR1cm4gaW50ZXJuYWw6OlJldHVy
blJlZk9mQ29weUFjdGlvbjxSPih4KTsKK30KKworLy8gTW9kaWZpZXMgdGhlIHBhcmVudCBhY3Rp
b24gKGEgUmV0dXJuKCkgYWN0aW9uKSB0byBwZXJmb3JtIGEgbW92ZSBvZiB0aGUKKy8vIGFyZ3Vt
ZW50IGluc3RlYWQgb2YgYSBjb3B5LgorLy8gUmV0dXJuKEJ5TW92ZSgpKSBhY3Rpb25zIGNhbiBv
bmx5IGJlIGV4ZWN1dGVkIG9uY2UgYW5kIHdpbGwgYXNzZXJ0IHRoaXMKKy8vIGludmFyaWFudC4K
K3RlbXBsYXRlIDx0eXBlbmFtZSBSPgoraW50ZXJuYWw6OkJ5TW92ZVdyYXBwZXI8Uj4gQnlNb3Zl
KFIgeCkgeworICByZXR1cm4gaW50ZXJuYWw6OkJ5TW92ZVdyYXBwZXI8Uj4oaW50ZXJuYWw6Om1v
dmUoeCkpOworfQorCisvLyBDcmVhdGVzIGFuIGFjdGlvbiB0aGF0IGRvZXMgdGhlIGRlZmF1bHQg
YWN0aW9uIGZvciB0aGUgZ2l2ZSBtb2NrIGZ1bmN0aW9uLgoraW5saW5lIGludGVybmFsOjpEb0Rl
ZmF1bHRBY3Rpb24gRG9EZWZhdWx0KCkgeworICByZXR1cm4gaW50ZXJuYWw6OkRvRGVmYXVsdEFj
dGlvbigpOworfQorCisvLyBDcmVhdGVzIGFuIGFjdGlvbiB0aGF0IHNldHMgdGhlIHZhcmlhYmxl
IHBvaW50ZWQgYnkgdGhlIE4tdGgKKy8vICgwLWJhc2VkKSBmdW5jdGlvbiBhcmd1bWVudCB0byAn
dmFsdWUnLgordGVtcGxhdGUgPHNpemVfdCBOLCB0eXBlbmFtZSBUPgorUG9seW1vcnBoaWNBY3Rp
b248CisgIGludGVybmFsOjpTZXRBcmd1bWVudFBvaW50ZWVBY3Rpb248CisgICAgTiwgVCwgaW50
ZXJuYWw6OklzQVByb3RvY29sTWVzc2FnZTxUPjo6dmFsdWU+ID4KK1NldEFyZ1BvaW50ZWUoY29u
c3QgVCYgeCkgeworICByZXR1cm4gTWFrZVBvbHltb3JwaGljQWN0aW9uKGludGVybmFsOjpTZXRB
cmd1bWVudFBvaW50ZWVBY3Rpb248CisgICAgICBOLCBULCBpbnRlcm5hbDo6SXNBUHJvdG9jb2xN
ZXNzYWdlPFQ+Ojp2YWx1ZT4oeCkpOworfQorCisjaWYgISgoR1RFU1RfR0NDX1ZFUl8gJiYgR1RF
U1RfR0NDX1ZFUl8gPCA0MDAwMCkgfHwgR1RFU1RfT1NfU1lNQklBTikKKy8vIFRoaXMgb3Zlcmxv
YWQgYWxsb3dzIFNldEFyZ1BvaW50ZWUoKSB0byBhY2NlcHQgYSBzdHJpbmcgbGl0ZXJhbC4KKy8v
IEdDQyBwcmlvciB0byB0aGUgdmVyc2lvbiA0LjAgYW5kIFN5bWJpYW4gQysrIGNvbXBpbGVyIGNh
bm5vdCBkaXN0aW5ndWlzaAorLy8gdGhpcyBvdmVybG9hZCBmcm9tIHRoZSB0ZW1wbGF0ZWQgdmVy
c2lvbiBhbmQgZW1pdCBhIGNvbXBpbGUgZXJyb3IuCit0ZW1wbGF0ZSA8c2l6ZV90IE4+CitQb2x5
bW9ycGhpY0FjdGlvbjwKKyAgaW50ZXJuYWw6OlNldEFyZ3VtZW50UG9pbnRlZUFjdGlvbjxOLCBj
b25zdCBjaGFyKiwgZmFsc2U+ID4KK1NldEFyZ1BvaW50ZWUoY29uc3QgY2hhciogcCkgeworICBy
ZXR1cm4gTWFrZVBvbHltb3JwaGljQWN0aW9uKGludGVybmFsOjpTZXRBcmd1bWVudFBvaW50ZWVB
Y3Rpb248CisgICAgICBOLCBjb25zdCBjaGFyKiwgZmFsc2U+KHApKTsKK30KKwordGVtcGxhdGUg
PHNpemVfdCBOPgorUG9seW1vcnBoaWNBY3Rpb248CisgIGludGVybmFsOjpTZXRBcmd1bWVudFBv
aW50ZWVBY3Rpb248TiwgY29uc3Qgd2NoYXJfdCosIGZhbHNlPiA+CitTZXRBcmdQb2ludGVlKGNv
bnN0IHdjaGFyX3QqIHApIHsKKyAgcmV0dXJuIE1ha2VQb2x5bW9ycGhpY0FjdGlvbihpbnRlcm5h
bDo6U2V0QXJndW1lbnRQb2ludGVlQWN0aW9uPAorICAgICAgTiwgY29uc3Qgd2NoYXJfdCosIGZh
bHNlPihwKSk7Cit9CisjZW5kaWYKKworLy8gVGhlIGZvbGxvd2luZyB2ZXJzaW9uIGlzIERFUFJF
Q0FURUQuCit0ZW1wbGF0ZSA8c2l6ZV90IE4sIHR5cGVuYW1lIFQ+CitQb2x5bW9ycGhpY0FjdGlv
bjwKKyAgaW50ZXJuYWw6OlNldEFyZ3VtZW50UG9pbnRlZUFjdGlvbjwKKyAgICBOLCBULCBpbnRl
cm5hbDo6SXNBUHJvdG9jb2xNZXNzYWdlPFQ+Ojp2YWx1ZT4gPgorU2V0QXJndW1lbnRQb2ludGVl
KGNvbnN0IFQmIHgpIHsKKyAgcmV0dXJuIE1ha2VQb2x5bW9ycGhpY0FjdGlvbihpbnRlcm5hbDo6
U2V0QXJndW1lbnRQb2ludGVlQWN0aW9uPAorICAgICAgTiwgVCwgaW50ZXJuYWw6OklzQVByb3Rv
Y29sTWVzc2FnZTxUPjo6dmFsdWU+KHgpKTsKK30KKworLy8gQ3JlYXRlcyBhbiBhY3Rpb24gdGhh
dCBzZXRzIGEgcG9pbnRlciByZWZlcmVudCB0byBhIGdpdmVuIHZhbHVlLgordGVtcGxhdGUgPHR5
cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK1BvbHltb3JwaGljQWN0aW9uPGludGVybmFsOjpBc3Np
Z25BY3Rpb248VDEsIFQyPiA+IEFzc2lnbihUMSogcHRyLCBUMiB2YWwpIHsKKyAgcmV0dXJuIE1h
a2VQb2x5bW9ycGhpY0FjdGlvbihpbnRlcm5hbDo6QXNzaWduQWN0aW9uPFQxLCBUMj4ocHRyLCB2
YWwpKTsKK30KKworI2lmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorCisvLyBDcmVhdGVzIGFu
IGFjdGlvbiB0aGF0IHNldHMgZXJybm8gYW5kIHJldHVybnMgdGhlIGFwcHJvcHJpYXRlIGVycm9y
LgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitQb2x5bW9ycGhpY0FjdGlvbjxpbnRlcm5hbDo6U2V0
RXJybm9BbmRSZXR1cm5BY3Rpb248VD4gPgorU2V0RXJybm9BbmRSZXR1cm4oaW50IGVycnZhbCwg
VCByZXN1bHQpIHsKKyAgcmV0dXJuIE1ha2VQb2x5bW9ycGhpY0FjdGlvbigKKyAgICAgIGludGVy
bmFsOjpTZXRFcnJub0FuZFJldHVybkFjdGlvbjxUPihlcnJ2YWwsIHJlc3VsdCkpOworfQorCisj
ZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorCisvLyBWYXJpb3VzIG92ZXJsb2Fk
cyBmb3IgSW52b2tlV2l0aG91dEFyZ3MoKS4KKworLy8gQ3JlYXRlcyBhbiBhY3Rpb24gdGhhdCBp
bnZva2VzICdmdW5jdGlvbl9pbXBsJyB3aXRoIG5vIGFyZ3VtZW50LgordGVtcGxhdGUgPHR5cGVu
YW1lIEZ1bmN0aW9uSW1wbD4KK1BvbHltb3JwaGljQWN0aW9uPGludGVybmFsOjpJbnZva2VXaXRo
b3V0QXJnc0FjdGlvbjxGdW5jdGlvbkltcGw+ID4KK0ludm9rZVdpdGhvdXRBcmdzKEZ1bmN0aW9u
SW1wbCBmdW5jdGlvbl9pbXBsKSB7CisgIHJldHVybiBNYWtlUG9seW1vcnBoaWNBY3Rpb24oCisg
ICAgICBpbnRlcm5hbDo6SW52b2tlV2l0aG91dEFyZ3NBY3Rpb248RnVuY3Rpb25JbXBsPihmdW5j
dGlvbl9pbXBsKSk7Cit9CisKKy8vIENyZWF0ZXMgYW4gYWN0aW9uIHRoYXQgaW52b2tlcyB0aGUg
Z2l2ZW4gbWV0aG9kIG9uIHRoZSBnaXZlbiBvYmplY3QKKy8vIHdpdGggbm8gYXJndW1lbnQuCit0
ZW1wbGF0ZSA8Y2xhc3MgQ2xhc3MsIHR5cGVuYW1lIE1ldGhvZFB0cj4KK1BvbHltb3JwaGljQWN0
aW9uPGludGVybmFsOjpJbnZva2VNZXRob2RXaXRob3V0QXJnc0FjdGlvbjxDbGFzcywgTWV0aG9k
UHRyPiA+CitJbnZva2VXaXRob3V0QXJncyhDbGFzcyogb2JqX3B0ciwgTWV0aG9kUHRyIG1ldGhv
ZF9wdHIpIHsKKyAgcmV0dXJuIE1ha2VQb2x5bW9ycGhpY0FjdGlvbigKKyAgICAgIGludGVybmFs
OjpJbnZva2VNZXRob2RXaXRob3V0QXJnc0FjdGlvbjxDbGFzcywgTWV0aG9kUHRyPigKKyAgICAg
ICAgICBvYmpfcHRyLCBtZXRob2RfcHRyKSk7Cit9CisKKy8vIENyZWF0ZXMgYW4gYWN0aW9uIHRo
YXQgcGVyZm9ybXMgYW5fYWN0aW9uIGFuZCB0aHJvd3MgYXdheSBpdHMKKy8vIHJlc3VsdC4gIElu
IG90aGVyIHdvcmRzLCBpdCBjaGFuZ2VzIHRoZSByZXR1cm4gdHlwZSBvZiBhbl9hY3Rpb24gdG8K
Ky8vIHZvaWQuICBhbl9hY3Rpb24gTVVTVCBOT1QgcmV0dXJuIHZvaWQsIG9yIHRoZSBjb2RlIHdv
bid0IGNvbXBpbGUuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQT4KK2lubGluZSBpbnRlcm5hbDo6SWdu
b3JlUmVzdWx0QWN0aW9uPEE+IElnbm9yZVJlc3VsdChjb25zdCBBJiBhbl9hY3Rpb24pIHsKKyAg
cmV0dXJuIGludGVybmFsOjpJZ25vcmVSZXN1bHRBY3Rpb248QT4oYW5fYWN0aW9uKTsKK30KKwor
Ly8gQ3JlYXRlcyBhIHJlZmVyZW5jZSB3cmFwcGVyIGZvciB0aGUgZ2l2ZW4gTC12YWx1ZS4gIElm
IG5lY2Vzc2FyeSwKKy8vIHlvdSBjYW4gZXhwbGljaXRseSBzcGVjaWZ5IHRoZSB0eXBlIG9mIHRo
ZSByZWZlcmVuY2UuICBGb3IgZXhhbXBsZSwKKy8vIHN1cHBvc2UgJ2Rlcml2ZWQnIGlzIGFuIG9i
amVjdCBvZiB0eXBlIERlcml2ZWQsIEJ5UmVmKGRlcml2ZWQpCisvLyB3b3VsZCB3cmFwIGEgRGVy
aXZlZCYuICBJZiB5b3Ugd2FudCB0byB3cmFwIGEgY29uc3QgQmFzZSYgaW5zdGVhZCwKKy8vIHdo
ZXJlIEJhc2UgaXMgYSBiYXNlIGNsYXNzIG9mIERlcml2ZWQsIGp1c3Qgd3JpdGU6CisvLworLy8g
ICBCeVJlZjxjb25zdCBCYXNlPihkZXJpdmVkKQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citpbmxp
bmUgaW50ZXJuYWw6OlJlZmVyZW5jZVdyYXBwZXI8VD4gQnlSZWYoVCYgbF92YWx1ZSkgeyAgLy8g
Tk9MSU5UCisgIHJldHVybiBpbnRlcm5hbDo6UmVmZXJlbmNlV3JhcHBlcjxUPihsX3ZhbHVlKTsK
K30KKworfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKKworI2VuZGlmICAvLyBHTU9DS19JTkNMVURF
X0dNT0NLX0dNT0NLX0FDVElPTlNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUv
Z21vY2svZ21vY2stY2FyZGluYWxpdGllcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9n
bW9jay1jYXJkaW5hbGl0aWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmMzMTVmOTJhYjViNzEzNzhhYzY3ZDAz
ODQxMjQwZmEzYTY0M2NhMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUv
Z21vY2svZ21vY2stY2FyZGluYWxpdGllcy5oCkBAIC0wLDAgKzEsMTQ3IEBACisvLyBDb3B5cmln
aHQgMjAwNywgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8v
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlv
bi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8v
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gQXV0aG9yOiB3YW5AZ29v
Z2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorCisvLyBHb29nbGUgTW9jayAtIGEgZnJhbWV3b3JrIGZv
ciB3cml0aW5nIEMrKyBtb2NrIGNsYXNzZXMuCisvLworLy8gVGhpcyBmaWxlIGltcGxlbWVudHMg
c29tZSBjb21tb25seSB1c2VkIGNhcmRpbmFsaXRpZXMuICBNb3JlCisvLyBjYXJkaW5hbGl0aWVz
IGNhbiBiZSBkZWZpbmVkIGJ5IHRoZSB1c2VyIGltcGxlbWVudGluZyB0aGUKKy8vIENhcmRpbmFs
aXR5SW50ZXJmYWNlIGludGVyZmFjZSBpZiBuZWNlc3NhcnkuCisKKyNpZm5kZWYgR01PQ0tfSU5D
TFVERV9HTU9DS19HTU9DS19DQVJESU5BTElUSUVTX0hfCisjZGVmaW5lIEdNT0NLX0lOQ0xVREVf
R01PQ0tfR01PQ0tfQ0FSRElOQUxJVElFU19IXworCisjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5j
bHVkZSA8b3N0cmVhbT4gIC8vIE5PTElOVAorI2luY2x1ZGUgImdtb2NrL2ludGVybmFsL2dtb2Nr
LXBvcnQuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCituYW1lc3BhY2UgdGVzdGluZyB7
CisKKy8vIFRvIGltcGxlbWVudCBhIGNhcmRpbmFsaXR5IEZvbywgZGVmaW5lOgorLy8gICAxLiBh
IGNsYXNzIEZvb0NhcmRpbmFsaXR5IHRoYXQgaW1wbGVtZW50cyB0aGUKKy8vICAgICAgQ2FyZGlu
YWxpdHlJbnRlcmZhY2UgaW50ZXJmYWNlLCBhbmQKKy8vICAgMi4gYSBmYWN0b3J5IGZ1bmN0aW9u
IHRoYXQgY3JlYXRlcyBhIENhcmRpbmFsaXR5IG9iamVjdCBmcm9tIGEKKy8vICAgICAgY29uc3Qg
Rm9vQ2FyZGluYWxpdHkqLgorLy8KKy8vIFRoZSB0d28tbGV2ZWwgZGVsZWdhdGlvbiBkZXNpZ24g
Zm9sbG93cyB0aGF0IG9mIE1hdGNoZXIsIHByb3ZpZGluZworLy8gY29uc2lzdGVuY3kgZm9yIGV4
dGVuc2lvbiBkZXZlbG9wZXJzLiAgSXQgYWxzbyBlYXNlcyBvd25lcnNoaXAKKy8vIG1hbmFnZW1l
bnQgYXMgQ2FyZGluYWxpdHkgb2JqZWN0cyBjYW4gbm93IGJlIGNvcGllZCBsaWtlIHBsYWluIHZh
bHVlcy4KKworLy8gVGhlIGltcGxlbWVudGF0aW9uIG9mIGEgY2FyZGluYWxpdHkuCitjbGFzcyBD
YXJkaW5hbGl0eUludGVyZmFjZSB7CisgcHVibGljOgorICB2aXJ0dWFsIH5DYXJkaW5hbGl0eUlu
dGVyZmFjZSgpIHt9CisKKyAgLy8gQ29uc2VydmF0aXZlIGVzdGltYXRlIG9uIHRoZSBsb3dlci91
cHBlciBib3VuZCBvZiB0aGUgbnVtYmVyIG9mCisgIC8vIGNhbGxzIGFsbG93ZWQuCisgIHZpcnR1
YWwgaW50IENvbnNlcnZhdGl2ZUxvd2VyQm91bmQoKSBjb25zdCB7IHJldHVybiAwOyB9CisgIHZp
cnR1YWwgaW50IENvbnNlcnZhdGl2ZVVwcGVyQm91bmQoKSBjb25zdCB7IHJldHVybiBJTlRfTUFY
OyB9CisKKyAgLy8gUmV0dXJucyB0cnVlIGlmZiBjYWxsX2NvdW50IGNhbGxzIHdpbGwgc2F0aXNm
eSB0aGlzIGNhcmRpbmFsaXR5LgorICB2aXJ0dWFsIGJvb2wgSXNTYXRpc2ZpZWRCeUNhbGxDb3Vu
dChpbnQgY2FsbF9jb3VudCkgY29uc3QgPSAwOworCisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgY2Fs
bF9jb3VudCBjYWxscyB3aWxsIHNhdHVyYXRlIHRoaXMgY2FyZGluYWxpdHkuCisgIHZpcnR1YWwg
Ym9vbCBJc1NhdHVyYXRlZEJ5Q2FsbENvdW50KGludCBjYWxsX2NvdW50KSBjb25zdCA9IDA7CisK
KyAgLy8gRGVzY3JpYmVzIHNlbGYgdG8gYW4gb3N0cmVhbS4KKyAgdmlydHVhbCB2b2lkIERlc2Ny
aWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCA9IDA7Cit9OworCisvLyBBIENhcmRpbmFs
aXR5IGlzIGEgY29weWFibGUgYW5kIElNTVVUQUJMRSAoZXhjZXB0IGJ5IGFzc2lnbm1lbnQpCisv
LyBvYmplY3QgdGhhdCBzcGVjaWZpZXMgaG93IG1hbnkgdGltZXMgYSBtb2NrIGZ1bmN0aW9uIGlz
IGV4cGVjdGVkIHRvCisvLyBiZSBjYWxsZWQuICBUaGUgaW1wbGVtZW50YXRpb24gb2YgQ2FyZGlu
YWxpdHkgaXMganVzdCBhIGxpbmtlZF9wdHIKKy8vIHRvIGNvbnN0IENhcmRpbmFsaXR5SW50ZXJm
YWNlLCBzbyBjb3B5aW5nIGlzIGZhaXJseSBjaGVhcC4KKy8vIERvbid0IGluaGVyaXQgZnJvbSBD
YXJkaW5hbGl0eSEKK2NsYXNzIEdURVNUX0FQSV8gQ2FyZGluYWxpdHkgeworIHB1YmxpYzoKKyAg
Ly8gQ29uc3RydWN0cyBhIG51bGwgY2FyZGluYWxpdHkuICBOZWVkZWQgZm9yIHN0b3JpbmcgQ2Fy
ZGluYWxpdHkKKyAgLy8gb2JqZWN0cyBpbiBTVEwgY29udGFpbmVycy4KKyAgQ2FyZGluYWxpdHko
KSB7fQorCisgIC8vIENvbnN0cnVjdHMgYSBDYXJkaW5hbGl0eSBmcm9tIGl0cyBpbXBsZW1lbnRh
dGlvbi4KKyAgZXhwbGljaXQgQ2FyZGluYWxpdHkoY29uc3QgQ2FyZGluYWxpdHlJbnRlcmZhY2Uq
IGltcGwpIDogaW1wbF8oaW1wbCkge30KKworICAvLyBDb25zZXJ2YXRpdmUgZXN0aW1hdGUgb24g
dGhlIGxvd2VyL3VwcGVyIGJvdW5kIG9mIHRoZSBudW1iZXIgb2YKKyAgLy8gY2FsbHMgYWxsb3dl
ZC4KKyAgaW50IENvbnNlcnZhdGl2ZUxvd2VyQm91bmQoKSBjb25zdCB7IHJldHVybiBpbXBsXy0+
Q29uc2VydmF0aXZlTG93ZXJCb3VuZCgpOyB9CisgIGludCBDb25zZXJ2YXRpdmVVcHBlckJvdW5k
KCkgY29uc3QgeyByZXR1cm4gaW1wbF8tPkNvbnNlcnZhdGl2ZVVwcGVyQm91bmQoKTsgfQorCisg
IC8vIFJldHVybnMgdHJ1ZSBpZmYgY2FsbF9jb3VudCBjYWxscyB3aWxsIHNhdGlzZnkgdGhpcyBj
YXJkaW5hbGl0eS4KKyAgYm9vbCBJc1NhdGlzZmllZEJ5Q2FsbENvdW50KGludCBjYWxsX2NvdW50
KSBjb25zdCB7CisgICAgcmV0dXJuIGltcGxfLT5Jc1NhdGlzZmllZEJ5Q2FsbENvdW50KGNhbGxf
Y291bnQpOworICB9CisKKyAgLy8gUmV0dXJucyB0cnVlIGlmZiBjYWxsX2NvdW50IGNhbGxzIHdp
bGwgc2F0dXJhdGUgdGhpcyBjYXJkaW5hbGl0eS4KKyAgYm9vbCBJc1NhdHVyYXRlZEJ5Q2FsbENv
dW50KGludCBjYWxsX2NvdW50KSBjb25zdCB7CisgICAgcmV0dXJuIGltcGxfLT5Jc1NhdHVyYXRl
ZEJ5Q2FsbENvdW50KGNhbGxfY291bnQpOworICB9CisKKyAgLy8gUmV0dXJucyB0cnVlIGlmZiBj
YWxsX2NvdW50IGNhbGxzIHdpbGwgb3Zlci1zYXR1cmF0ZSB0aGlzCisgIC8vIGNhcmRpbmFsaXR5
LCBpLmUuIGV4Y2VlZCB0aGUgbWF4aW11bSBudW1iZXIgb2YgYWxsb3dlZCBjYWxscy4KKyAgYm9v
bCBJc092ZXJTYXR1cmF0ZWRCeUNhbGxDb3VudChpbnQgY2FsbF9jb3VudCkgY29uc3QgeworICAg
IHJldHVybiBpbXBsXy0+SXNTYXR1cmF0ZWRCeUNhbGxDb3VudChjYWxsX2NvdW50KSAmJgorICAg
ICAgICAhaW1wbF8tPklzU2F0aXNmaWVkQnlDYWxsQ291bnQoY2FsbF9jb3VudCk7CisgIH0KKwor
ICAvLyBEZXNjcmliZXMgc2VsZiB0byBhbiBvc3RyZWFtCisgIHZvaWQgRGVzY3JpYmVUbyg6OnN0
ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsgaW1wbF8tPkRlc2NyaWJlVG8ob3MpOyB9CisKKyAgLy8g
RGVzY3JpYmVzIHRoZSBnaXZlbiBhY3R1YWwgY2FsbCBjb3VudCB0byBhbiBvc3RyZWFtLgorICBz
dGF0aWMgdm9pZCBEZXNjcmliZUFjdHVhbENhbGxDb3VudFRvKGludCBhY3R1YWxfY2FsbF9jb3Vu
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OnN0ZDo6b3N0cmVh
bSogb3MpOworCisgcHJpdmF0ZToKKyAgaW50ZXJuYWw6OmxpbmtlZF9wdHI8Y29uc3QgQ2FyZGlu
YWxpdHlJbnRlcmZhY2U+IGltcGxfOworfTsKKworLy8gQ3JlYXRlcyBhIGNhcmRpbmFsaXR5IHRo
YXQgYWxsb3dzIGF0IGxlYXN0IG4gY2FsbHMuCitHVEVTVF9BUElfIENhcmRpbmFsaXR5IEF0TGVh
c3QoaW50IG4pOworCisvLyBDcmVhdGVzIGEgY2FyZGluYWxpdHkgdGhhdCBhbGxvd3MgYXQgbW9z
dCBuIGNhbGxzLgorR1RFU1RfQVBJXyBDYXJkaW5hbGl0eSBBdE1vc3QoaW50IG4pOworCisvLyBD
cmVhdGVzIGEgY2FyZGluYWxpdHkgdGhhdCBhbGxvd3MgYW55IG51bWJlciBvZiBjYWxscy4KK0dU
RVNUX0FQSV8gQ2FyZGluYWxpdHkgQW55TnVtYmVyKCk7CisKKy8vIENyZWF0ZXMgYSBjYXJkaW5h
bGl0eSB0aGF0IGFsbG93cyBiZXR3ZWVuIG1pbiBhbmQgbWF4IGNhbGxzLgorR1RFU1RfQVBJXyBD
YXJkaW5hbGl0eSBCZXR3ZWVuKGludCBtaW4sIGludCBtYXgpOworCisvLyBDcmVhdGVzIGEgY2Fy
ZGluYWxpdHkgdGhhdCBhbGxvd3MgZXhhY3RseSBuIGNhbGxzLgorR1RFU1RfQVBJXyBDYXJkaW5h
bGl0eSBFeGFjdGx5KGludCBuKTsKKworLy8gQ3JlYXRlcyBhIGNhcmRpbmFsaXR5IGZyb20gaXRz
IGltcGxlbWVudGF0aW9uLgoraW5saW5lIENhcmRpbmFsaXR5IE1ha2VDYXJkaW5hbGl0eShjb25z
dCBDYXJkaW5hbGl0eUludGVyZmFjZSogYykgeworICByZXR1cm4gQ2FyZGluYWxpdHkoYyk7Cit9
CisKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCisKKyNlbmRpZiAgLy8gR01PQ0tfSU5DTFVERV9H
TU9DS19HTU9DS19DQVJESU5BTElUSUVTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNs
dWRlL2dtb2NrL2dtb2NrLWdlbmVyYXRlZC1hY3Rpb25zLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRl
L2dtb2NrL2dtb2NrLWdlbmVyYXRlZC1hY3Rpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjVhODg5YzBjM2E0
MGQ2YTRjZjI2OTMyNTZmNjc4NjFkYTI1NmFjMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVt
b2NrL2luY2x1ZGUvZ21vY2svZ21vY2stZ2VuZXJhdGVkLWFjdGlvbnMuaApAQCAtMCwwICsxLDIz
NzcgQEAKKy8vIFRoaXMgZmlsZSB3YXMgR0VORVJBVEVEIGJ5IGEgc2NyaXB0LiAgRE8gTk9UIEVE
SVQgQlkgSEFORCEhIQorCisvLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KKy8vIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBt
ZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
Ly8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8g
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisvLworLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorCisvLyBH
b29nbGUgTW9jayAtIGEgZnJhbWV3b3JrIGZvciB3cml0aW5nIEMrKyBtb2NrIGNsYXNzZXMuCisv
LworLy8gVGhpcyBmaWxlIGltcGxlbWVudHMgc29tZSBjb21tb25seSB1c2VkIHZhcmlhZGljIGFj
dGlvbnMuCisKKyNpZm5kZWYgR01PQ0tfSU5DTFVERV9HTU9DS19HTU9DS19HRU5FUkFURURfQUNU
SU9OU19IXworI2RlZmluZSBHTU9DS19JTkNMVURFX0dNT0NLX0dNT0NLX0dFTkVSQVRFRF9BQ1RJ
T05TX0hfCisKKyNpbmNsdWRlICJnbW9jay9nbW9jay1hY3Rpb25zLmgiCisjaW5jbHVkZSAiZ21v
Y2svaW50ZXJuYWwvZ21vY2stcG9ydC5oIgorCituYW1lc3BhY2UgdGVzdGluZyB7CituYW1lc3Bh
Y2UgaW50ZXJuYWwgeworCisvLyBJbnZva2VIZWxwZXI8Rj4ga25vd3MgaG93IHRvIHVucGFjayBh
biBOLXR1cGxlIGFuZCBpbnZva2UgYW4gTi1hcnkKKy8vIGZ1bmN0aW9uIG9yIG1ldGhvZCB3aXRo
IHRoZSB1bnBhY2tlZCB2YWx1ZXMsIHdoZXJlIEYgaXMgYSBmdW5jdGlvbgorLy8gdHlwZSB0aGF0
IHRha2VzIE4gYXJndW1lbnRzLgordGVtcGxhdGUgPHR5cGVuYW1lIFJlc3VsdCwgdHlwZW5hbWUg
QXJndW1lbnRUdXBsZT4KK2NsYXNzIEludm9rZUhlbHBlcjsKKwordGVtcGxhdGUgPHR5cGVuYW1l
IFI+CitjbGFzcyBJbnZva2VIZWxwZXI8UiwgOjp0ZXN0aW5nOjp0dXBsZTw+ID4geworIHB1Ymxp
YzoKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uPgorICBzdGF0aWMgUiBJbnZva2UoRnVu
Y3Rpb24gZnVuY3Rpb24sIGNvbnN0IDo6dGVzdGluZzo6dHVwbGU8PiYpIHsKKyAgICAgICAgICAg
cmV0dXJuIGZ1bmN0aW9uKCk7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgQ2xhc3MsIHR5cGVu
YW1lIE1ldGhvZFB0cj4KKyAgc3RhdGljIFIgSW52b2tlTWV0aG9kKENsYXNzKiBvYmpfcHRyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgTWV0aG9kUHRyIG1ldGhvZF9wdHIsCisgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCA6OnRlc3Rpbmc6OnR1cGxlPD4mKSB7CisgICAgICAgICAgIHJl
dHVybiAob2JqX3B0ci0+Km1ldGhvZF9wdHIpKCk7CisgIH0KK307CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBSLCB0eXBlbmFtZSBBMT4KK2NsYXNzIEludm9rZUhlbHBlcjxSLCA6OnRlc3Rpbmc6OnR1
cGxlPEExPiA+IHsKKyBwdWJsaWM6CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdGlvbj4KKyAg
c3RhdGljIFIgSW52b2tlKEZ1bmN0aW9uIGZ1bmN0aW9uLCBjb25zdCA6OnRlc3Rpbmc6OnR1cGxl
PEExPiYgYXJncykgeworICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZ2V0PDA+KGFyZ3MpKTsK
KyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBDbGFzcywgdHlwZW5hbWUgTWV0aG9kUHRyPgorICBz
dGF0aWMgUiBJbnZva2VNZXRob2QoQ2xhc3MqIG9ial9wdHIsCisgICAgICAgICAgICAgICAgICAg
ICAgICBNZXRob2RQdHIgbWV0aG9kX3B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IDo6dGVzdGluZzo6dHVwbGU8QTE+JiBhcmdzKSB7CisgICAgICAgICAgIHJldHVybiAob2JqX3B0
ci0+Km1ldGhvZF9wdHIpKGdldDwwPihhcmdzKSk7CisgIH0KK307CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBSLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTI+CitjbGFzcyBJbnZva2VIZWxwZXI8Uiwg
Ojp0ZXN0aW5nOjp0dXBsZTxBMSwgQTI+ID4geworIHB1YmxpYzoKKyAgdGVtcGxhdGUgPHR5cGVu
YW1lIEZ1bmN0aW9uPgorICBzdGF0aWMgUiBJbnZva2UoRnVuY3Rpb24gZnVuY3Rpb24sIGNvbnN0
IDo6dGVzdGluZzo6dHVwbGU8QTEsIEEyPiYgYXJncykgeworICAgICAgICAgICByZXR1cm4gZnVu
Y3Rpb24oZ2V0PDA+KGFyZ3MpLCBnZXQ8MT4oYXJncykpOworICB9CisKKyAgdGVtcGxhdGUgPGNs
YXNzIENsYXNzLCB0eXBlbmFtZSBNZXRob2RQdHI+CisgIHN0YXRpYyBSIEludm9rZU1ldGhvZChD
bGFzcyogb2JqX3B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1ldGhvZFB0ciBtZXRob2Rf
cHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgOjp0ZXN0aW5nOjp0dXBsZTxBMSwg
QTI+JiBhcmdzKSB7CisgICAgICAgICAgIHJldHVybiAob2JqX3B0ci0+Km1ldGhvZF9wdHIpKGdl
dDwwPihhcmdzKSwgZ2V0PDE+KGFyZ3MpKTsKKyAgfQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1l
IFIsIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTM+CitjbGFzcyBJbnZva2VI
ZWxwZXI8UiwgOjp0ZXN0aW5nOjp0dXBsZTxBMSwgQTIsIEEzPiA+IHsKKyBwdWJsaWM6CisgIHRl
bXBsYXRlIDx0eXBlbmFtZSBGdW5jdGlvbj4KKyAgc3RhdGljIFIgSW52b2tlKEZ1bmN0aW9uIGZ1
bmN0aW9uLCBjb25zdCA6OnRlc3Rpbmc6OnR1cGxlPEExLCBBMiwgQTM+JiBhcmdzKSB7CisgICAg
ICAgICAgIHJldHVybiBmdW5jdGlvbihnZXQ8MD4oYXJncyksIGdldDwxPihhcmdzKSwgZ2V0PDI+
KGFyZ3MpKTsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBDbGFzcywgdHlwZW5hbWUgTWV0aG9k
UHRyPgorICBzdGF0aWMgUiBJbnZva2VNZXRob2QoQ2xhc3MqIG9ial9wdHIsCisgICAgICAgICAg
ICAgICAgICAgICAgICBNZXRob2RQdHIgbWV0aG9kX3B0ciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IDo6dGVzdGluZzo6dHVwbGU8QTEsIEEyLCBBMz4mIGFyZ3MpIHsKKyAgICAgICAg
ICAgcmV0dXJuIChvYmpfcHRyLT4qbWV0aG9kX3B0cikoZ2V0PDA+KGFyZ3MpLCBnZXQ8MT4oYXJn
cyksCisgICAgICAgICAgICAgICBnZXQ8Mj4oYXJncykpOworICB9Cit9OworCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgUiwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywgdHlwZW5h
bWUgQTQ+CitjbGFzcyBJbnZva2VIZWxwZXI8UiwgOjp0ZXN0aW5nOjp0dXBsZTxBMSwgQTIsIEEz
LCBBND4gPiB7CisgcHVibGljOgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rpb24+CisgIHN0
YXRpYyBSIEludm9rZShGdW5jdGlvbiBmdW5jdGlvbiwgY29uc3QgOjp0ZXN0aW5nOjp0dXBsZTxB
MSwgQTIsIEEzLAorICAgICAgQTQ+JiBhcmdzKSB7CisgICAgICAgICAgIHJldHVybiBmdW5jdGlv
bihnZXQ8MD4oYXJncyksIGdldDwxPihhcmdzKSwgZ2V0PDI+KGFyZ3MpLAorICAgICAgICAgICAg
ICAgZ2V0PDM+KGFyZ3MpKTsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBDbGFzcywgdHlwZW5h
bWUgTWV0aG9kUHRyPgorICBzdGF0aWMgUiBJbnZva2VNZXRob2QoQ2xhc3MqIG9ial9wdHIsCisg
ICAgICAgICAgICAgICAgICAgICAgICBNZXRob2RQdHIgbWV0aG9kX3B0ciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IDo6dGVzdGluZzo6dHVwbGU8QTEsIEEyLCBBMywgQTQ+JiBhcmdz
KSB7CisgICAgICAgICAgIHJldHVybiAob2JqX3B0ci0+Km1ldGhvZF9wdHIpKGdldDwwPihhcmdz
KSwgZ2V0PDE+KGFyZ3MpLAorICAgICAgICAgICAgICAgZ2V0PDI+KGFyZ3MpLCBnZXQ8Mz4oYXJn
cykpOworICB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgQTEsIHR5cGVu
YW1lIEEyLCB0eXBlbmFtZSBBMywgdHlwZW5hbWUgQTQsCisgICAgdHlwZW5hbWUgQTU+CitjbGFz
cyBJbnZva2VIZWxwZXI8UiwgOjp0ZXN0aW5nOjp0dXBsZTxBMSwgQTIsIEEzLCBBNCwgQTU+ID4g
eworIHB1YmxpYzoKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uPgorICBzdGF0aWMgUiBJ
bnZva2UoRnVuY3Rpb24gZnVuY3Rpb24sIGNvbnN0IDo6dGVzdGluZzo6dHVwbGU8QTEsIEEyLCBB
MywgQTQsCisgICAgICBBNT4mIGFyZ3MpIHsKKyAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGdl
dDwwPihhcmdzKSwgZ2V0PDE+KGFyZ3MpLCBnZXQ8Mj4oYXJncyksCisgICAgICAgICAgICAgICBn
ZXQ8Mz4oYXJncyksIGdldDw0PihhcmdzKSk7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgQ2xh
c3MsIHR5cGVuYW1lIE1ldGhvZFB0cj4KKyAgc3RhdGljIFIgSW52b2tlTWV0aG9kKENsYXNzKiBv
YmpfcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgTWV0aG9kUHRyIG1ldGhvZF9wdHIsCisg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCA6OnRlc3Rpbmc6OnR1cGxlPEExLCBBMiwgQTMs
IEE0LCBBNT4mIGFyZ3MpIHsKKyAgICAgICAgICAgcmV0dXJuIChvYmpfcHRyLT4qbWV0aG9kX3B0
cikoZ2V0PDA+KGFyZ3MpLCBnZXQ8MT4oYXJncyksCisgICAgICAgICAgICAgICBnZXQ8Mj4oYXJn
cyksIGdldDwzPihhcmdzKSwgZ2V0PDQ+KGFyZ3MpKTsKKyAgfQorfTsKKwordGVtcGxhdGUgPHR5
cGVuYW1lIFIsIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1l
IEE0LAorICAgIHR5cGVuYW1lIEE1LCB0eXBlbmFtZSBBNj4KK2NsYXNzIEludm9rZUhlbHBlcjxS
LCA6OnRlc3Rpbmc6OnR1cGxlPEExLCBBMiwgQTMsIEE0LCBBNSwgQTY+ID4geworIHB1YmxpYzoK
KyAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uPgorICBzdGF0aWMgUiBJbnZva2UoRnVuY3Rp
b24gZnVuY3Rpb24sIGNvbnN0IDo6dGVzdGluZzo6dHVwbGU8QTEsIEEyLCBBMywgQTQsIEE1LAor
ICAgICAgQTY+JiBhcmdzKSB7CisgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihnZXQ8MD4oYXJn
cyksIGdldDwxPihhcmdzKSwgZ2V0PDI+KGFyZ3MpLAorICAgICAgICAgICAgICAgZ2V0PDM+KGFy
Z3MpLCBnZXQ8ND4oYXJncyksIGdldDw1PihhcmdzKSk7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xh
c3MgQ2xhc3MsIHR5cGVuYW1lIE1ldGhvZFB0cj4KKyAgc3RhdGljIFIgSW52b2tlTWV0aG9kKENs
YXNzKiBvYmpfcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgTWV0aG9kUHRyIG1ldGhvZF9w
dHIsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCA6OnRlc3Rpbmc6OnR1cGxlPEExLCBB
MiwgQTMsIEE0LCBBNSwgQTY+JiBhcmdzKSB7CisgICAgICAgICAgIHJldHVybiAob2JqX3B0ci0+
Km1ldGhvZF9wdHIpKGdldDwwPihhcmdzKSwgZ2V0PDE+KGFyZ3MpLAorICAgICAgICAgICAgICAg
Z2V0PDI+KGFyZ3MpLCBnZXQ8Mz4oYXJncyksIGdldDw0PihhcmdzKSwgZ2V0PDU+KGFyZ3MpKTsK
KyAgfQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBB
MiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0LAorICAgIHR5cGVuYW1lIEE1LCB0eXBlbmFtZSBB
NiwgdHlwZW5hbWUgQTc+CitjbGFzcyBJbnZva2VIZWxwZXI8UiwgOjp0ZXN0aW5nOjp0dXBsZTxB
MSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNz4gPiB7CisgcHVibGljOgorICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgRnVuY3Rpb24+CisgIHN0YXRpYyBSIEludm9rZShGdW5jdGlvbiBmdW5jdGlvbiwgY29u
c3QgOjp0ZXN0aW5nOjp0dXBsZTxBMSwgQTIsIEEzLCBBNCwgQTUsCisgICAgICBBNiwgQTc+JiBh
cmdzKSB7CisgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihnZXQ8MD4oYXJncyksIGdldDwxPihh
cmdzKSwgZ2V0PDI+KGFyZ3MpLAorICAgICAgICAgICAgICAgZ2V0PDM+KGFyZ3MpLCBnZXQ8ND4o
YXJncyksIGdldDw1PihhcmdzKSwgZ2V0PDY+KGFyZ3MpKTsKKyAgfQorCisgIHRlbXBsYXRlIDxj
bGFzcyBDbGFzcywgdHlwZW5hbWUgTWV0aG9kUHRyPgorICBzdGF0aWMgUiBJbnZva2VNZXRob2Qo
Q2xhc3MqIG9ial9wdHIsCisgICAgICAgICAgICAgICAgICAgICAgICBNZXRob2RQdHIgbWV0aG9k
X3B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IDo6dGVzdGluZzo6dHVwbGU8QTEs
IEEyLCBBMywgQTQsIEE1LCBBNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBNz4mIGFy
Z3MpIHsKKyAgICAgICAgICAgcmV0dXJuIChvYmpfcHRyLT4qbWV0aG9kX3B0cikoZ2V0PDA+KGFy
Z3MpLCBnZXQ8MT4oYXJncyksCisgICAgICAgICAgICAgICBnZXQ8Mj4oYXJncyksIGdldDwzPihh
cmdzKSwgZ2V0PDQ+KGFyZ3MpLCBnZXQ8NT4oYXJncyksCisgICAgICAgICAgICAgICBnZXQ8Nj4o
YXJncykpOworICB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgQTEsIHR5
cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywgdHlwZW5hbWUgQTQsCisgICAgdHlwZW5hbWUgQTUsIHR5
cGVuYW1lIEE2LCB0eXBlbmFtZSBBNywgdHlwZW5hbWUgQTg+CitjbGFzcyBJbnZva2VIZWxwZXI8
UiwgOjp0ZXN0aW5nOjp0dXBsZTxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTg+ID4gewor
IHB1YmxpYzoKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uPgorICBzdGF0aWMgUiBJbnZv
a2UoRnVuY3Rpb24gZnVuY3Rpb24sIGNvbnN0IDo6dGVzdGluZzo6dHVwbGU8QTEsIEEyLCBBMywg
QTQsIEE1LAorICAgICAgQTYsIEE3LCBBOD4mIGFyZ3MpIHsKKyAgICAgICAgICAgcmV0dXJuIGZ1
bmN0aW9uKGdldDwwPihhcmdzKSwgZ2V0PDE+KGFyZ3MpLCBnZXQ8Mj4oYXJncyksCisgICAgICAg
ICAgICAgICBnZXQ8Mz4oYXJncyksIGdldDw0PihhcmdzKSwgZ2V0PDU+KGFyZ3MpLCBnZXQ8Nj4o
YXJncyksCisgICAgICAgICAgICAgICBnZXQ8Nz4oYXJncykpOworICB9CisKKyAgdGVtcGxhdGUg
PGNsYXNzIENsYXNzLCB0eXBlbmFtZSBNZXRob2RQdHI+CisgIHN0YXRpYyBSIEludm9rZU1ldGhv
ZChDbGFzcyogb2JqX3B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1ldGhvZFB0ciBtZXRo
b2RfcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgOjp0ZXN0aW5nOjp0dXBsZTxB
MSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
OD4mIGFyZ3MpIHsKKyAgICAgICAgICAgcmV0dXJuIChvYmpfcHRyLT4qbWV0aG9kX3B0cikoZ2V0
PDA+KGFyZ3MpLCBnZXQ8MT4oYXJncyksCisgICAgICAgICAgICAgICBnZXQ8Mj4oYXJncyksIGdl
dDwzPihhcmdzKSwgZ2V0PDQ+KGFyZ3MpLCBnZXQ8NT4oYXJncyksCisgICAgICAgICAgICAgICBn
ZXQ8Nj4oYXJncyksIGdldDw3PihhcmdzKSk7CisgIH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBSLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBBNCwK
KyAgICB0eXBlbmFtZSBBNSwgdHlwZW5hbWUgQTYsIHR5cGVuYW1lIEE3LCB0eXBlbmFtZSBBOCwg
dHlwZW5hbWUgQTk+CitjbGFzcyBJbnZva2VIZWxwZXI8UiwgOjp0ZXN0aW5nOjp0dXBsZTxBMSwg
QTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsIEE5PiA+IHsKKyBwdWJsaWM6CisgIHRlbXBsYXRl
IDx0eXBlbmFtZSBGdW5jdGlvbj4KKyAgc3RhdGljIFIgSW52b2tlKEZ1bmN0aW9uIGZ1bmN0aW9u
LCBjb25zdCA6OnRlc3Rpbmc6OnR1cGxlPEExLCBBMiwgQTMsIEE0LCBBNSwKKyAgICAgIEE2LCBB
NywgQTgsIEE5PiYgYXJncykgeworICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZ2V0PDA+KGFy
Z3MpLCBnZXQ8MT4oYXJncyksIGdldDwyPihhcmdzKSwKKyAgICAgICAgICAgICAgIGdldDwzPihh
cmdzKSwgZ2V0PDQ+KGFyZ3MpLCBnZXQ8NT4oYXJncyksIGdldDw2PihhcmdzKSwKKyAgICAgICAg
ICAgICAgIGdldDw3PihhcmdzKSwgZ2V0PDg+KGFyZ3MpKTsKKyAgfQorCisgIHRlbXBsYXRlIDxj
bGFzcyBDbGFzcywgdHlwZW5hbWUgTWV0aG9kUHRyPgorICBzdGF0aWMgUiBJbnZva2VNZXRob2Qo
Q2xhc3MqIG9ial9wdHIsCisgICAgICAgICAgICAgICAgICAgICAgICBNZXRob2RQdHIgbWV0aG9k
X3B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IDo6dGVzdGluZzo6dHVwbGU8QTEs
IEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEE5PiYgYXJncykgeworICAgICAgICAgICByZXR1cm4gKG9ial9wdHItPiptZXRob2RfcHRyKShn
ZXQ8MD4oYXJncyksIGdldDwxPihhcmdzKSwKKyAgICAgICAgICAgICAgIGdldDwyPihhcmdzKSwg
Z2V0PDM+KGFyZ3MpLCBnZXQ8ND4oYXJncyksIGdldDw1PihhcmdzKSwKKyAgICAgICAgICAgICAg
IGdldDw2PihhcmdzKSwgZ2V0PDc+KGFyZ3MpLCBnZXQ8OD4oYXJncykpOworICB9Cit9OworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBB
MywgdHlwZW5hbWUgQTQsCisgICAgdHlwZW5hbWUgQTUsIHR5cGVuYW1lIEE2LCB0eXBlbmFtZSBB
NywgdHlwZW5hbWUgQTgsIHR5cGVuYW1lIEE5LAorICAgIHR5cGVuYW1lIEExMD4KK2NsYXNzIElu
dm9rZUhlbHBlcjxSLCA6OnRlc3Rpbmc6OnR1cGxlPEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3
LCBBOCwgQTksCisgICAgQTEwPiA+IHsKKyBwdWJsaWM6CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBG
dW5jdGlvbj4KKyAgc3RhdGljIFIgSW52b2tlKEZ1bmN0aW9uIGZ1bmN0aW9uLCBjb25zdCA6OnRl
c3Rpbmc6OnR1cGxlPEExLCBBMiwgQTMsIEE0LCBBNSwKKyAgICAgIEE2LCBBNywgQTgsIEE5LCBB
MTA+JiBhcmdzKSB7CisgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihnZXQ8MD4oYXJncyksIGdl
dDwxPihhcmdzKSwgZ2V0PDI+KGFyZ3MpLAorICAgICAgICAgICAgICAgZ2V0PDM+KGFyZ3MpLCBn
ZXQ8ND4oYXJncyksIGdldDw1PihhcmdzKSwgZ2V0PDY+KGFyZ3MpLAorICAgICAgICAgICAgICAg
Z2V0PDc+KGFyZ3MpLCBnZXQ8OD4oYXJncyksIGdldDw5PihhcmdzKSk7CisgIH0KKworICB0ZW1w
bGF0ZSA8Y2xhc3MgQ2xhc3MsIHR5cGVuYW1lIE1ldGhvZFB0cj4KKyAgc3RhdGljIFIgSW52b2tl
TWV0aG9kKENsYXNzKiBvYmpfcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgTWV0aG9kUHRy
IG1ldGhvZF9wdHIsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCA6OnRlc3Rpbmc6OnR1
cGxlPEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBOSwgQTEwPiYgYXJncykgeworICAgICAgICAgICByZXR1cm4gKG9ial9wdHItPipt
ZXRob2RfcHRyKShnZXQ8MD4oYXJncyksIGdldDwxPihhcmdzKSwKKyAgICAgICAgICAgICAgIGdl
dDwyPihhcmdzKSwgZ2V0PDM+KGFyZ3MpLCBnZXQ8ND4oYXJncyksIGdldDw1PihhcmdzKSwKKyAg
ICAgICAgICAgICAgIGdldDw2PihhcmdzKSwgZ2V0PDc+KGFyZ3MpLCBnZXQ8OD4oYXJncyksIGdl
dDw5PihhcmdzKSk7CisgIH0KK307CisKKy8vIEFuIElOVEVSTkFMIG1hY3JvIGZvciBleHRyYWN0
aW5nIHRoZSB0eXBlIG9mIGEgdHVwbGUgZmllbGQuICBJdCdzCisvLyBzdWJqZWN0IHRvIGNoYW5n
ZSB3aXRob3V0IG5vdGljZSAtIERPIE5PVCBVU0UgSU4gVVNFUiBDT0RFIQorI2RlZmluZSBHTU9D
S19GSUVMRF8oVHVwbGUsIE4pIFwKKyAgICB0eXBlbmFtZSA6OnRlc3Rpbmc6OnR1cGxlX2VsZW1l
bnQ8TiwgVHVwbGU+Ojp0eXBlCisKKy8vIFNlbGVjdEFyZ3M8UmVzdWx0LCBBcmd1bWVudFR1cGxl
LCBrMSwgazIsIC4uLiwga19uPjo6dHlwZSBpcyB0aGUKKy8vIHR5cGUgb2YgYW4gbi1hcnkgZnVu
Y3Rpb24gd2hvc2UgaS10aCAoMS1iYXNlZCkgYXJndW1lbnQgdHlwZSBpcyB0aGUKKy8vIGt7aX0t
dGggKDAtYmFzZWQpIGZpZWxkIG9mIEFyZ3VtZW50VHVwbGUsIHdoaWNoIG11c3QgYmUgYSB0dXBs
ZQorLy8gdHlwZSwgYW5kIHdob3NlIHJldHVybiB0eXBlIGlzIFJlc3VsdC4gIEZvciBleGFtcGxl
LAorLy8gICBTZWxlY3RBcmdzPGludCwgOjp0ZXN0aW5nOjp0dXBsZTxib29sLCBjaGFyLCBkb3Vi
bGUsIGxvbmc+LCAwLCAzPjo6dHlwZQorLy8gaXMgaW50KGJvb2wsIGxvbmcpLgorLy8KKy8vIFNl
bGVjdEFyZ3M8UmVzdWx0LCBBcmd1bWVudFR1cGxlLCBrMSwgazIsIC4uLiwga19uPjo6U2VsZWN0
KGFyZ3MpCisvLyByZXR1cm5zIHRoZSBzZWxlY3RlZCBmaWVsZHMgKGsxLCBrMiwgLi4uLCBrX24p
IG9mIGFyZ3MgYXMgYSB0dXBsZS4KKy8vIEZvciBleGFtcGxlLAorLy8gICBTZWxlY3RBcmdzPGlu
dCwgdHVwbGU8Ym9vbCwgY2hhciwgZG91YmxlPiwgMiwgMD46OlNlbGVjdCgKKy8vICAgICAgIDo6
dGVzdGluZzo6bWFrZV90dXBsZSh0cnVlLCAnYScsIDIuNSkpCisvLyByZXR1cm5zIHR1cGxlICgy
LjUsIHRydWUpLgorLy8KKy8vIFRoZSBudW1iZXJzIGluIGxpc3QgazEsIGsyLCAuLi4sIGtfbiBt
dXN0IGJlID49IDAsIHdoZXJlIG4gY2FuIGJlCisvLyBpbiB0aGUgcmFuZ2UgWzAsIDEwXS4gIER1
cGxpY2F0ZXMgYXJlIGFsbG93ZWQgYW5kIHRoZXkgZG9uJ3QgaGF2ZQorLy8gdG8gYmUgaW4gYW4g
YXNjZW5kaW5nIG9yIGRlc2NlbmRpbmcgb3JkZXIuCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBSZXN1
bHQsIHR5cGVuYW1lIEFyZ3VtZW50VHVwbGUsIGludCBrMSwgaW50IGsyLCBpbnQgazMsCisgICAg
aW50IGs0LCBpbnQgazUsIGludCBrNiwgaW50IGs3LCBpbnQgazgsIGludCBrOSwgaW50IGsxMD4K
K2NsYXNzIFNlbGVjdEFyZ3MgeworIHB1YmxpYzoKKyAgdHlwZWRlZiBSZXN1bHQgdHlwZShHTU9D
S19GSUVMRF8oQXJndW1lbnRUdXBsZSwgazEpLAorICAgICAgR01PQ0tfRklFTERfKEFyZ3VtZW50
VHVwbGUsIGsyKSwgR01PQ0tfRklFTERfKEFyZ3VtZW50VHVwbGUsIGszKSwKKyAgICAgIEdNT0NL
X0ZJRUxEXyhBcmd1bWVudFR1cGxlLCBrNCksIEdNT0NLX0ZJRUxEXyhBcmd1bWVudFR1cGxlLCBr
NSksCisgICAgICBHTU9DS19GSUVMRF8oQXJndW1lbnRUdXBsZSwgazYpLCBHTU9DS19GSUVMRF8o
QXJndW1lbnRUdXBsZSwgazcpLAorICAgICAgR01PQ0tfRklFTERfKEFyZ3VtZW50VHVwbGUsIGs4
KSwgR01PQ0tfRklFTERfKEFyZ3VtZW50VHVwbGUsIGs5KSwKKyAgICAgIEdNT0NLX0ZJRUxEXyhB
cmd1bWVudFR1cGxlLCBrMTApKTsKKyAgdHlwZWRlZiB0eXBlbmFtZSBGdW5jdGlvbjx0eXBlPjo6
QXJndW1lbnRUdXBsZSBTZWxlY3RlZEFyZ3M7CisgIHN0YXRpYyBTZWxlY3RlZEFyZ3MgU2VsZWN0
KGNvbnN0IEFyZ3VtZW50VHVwbGUmIGFyZ3MpIHsKKyAgICByZXR1cm4gU2VsZWN0ZWRBcmdzKGdl
dDxrMT4oYXJncyksIGdldDxrMj4oYXJncyksIGdldDxrMz4oYXJncyksCisgICAgICAgIGdldDxr
ND4oYXJncyksIGdldDxrNT4oYXJncyksIGdldDxrNj4oYXJncyksIGdldDxrNz4oYXJncyksCisg
ICAgICAgIGdldDxrOD4oYXJncyksIGdldDxrOT4oYXJncyksIGdldDxrMTA+KGFyZ3MpKTsKKyAg
fQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFJlc3VsdCwgdHlwZW5hbWUgQXJndW1lbnRUdXBs
ZT4KK2NsYXNzIFNlbGVjdEFyZ3M8UmVzdWx0LCBBcmd1bWVudFR1cGxlLAorICAgICAgICAgICAg
ICAgICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMT4geworIHB1YmxpYzoK
KyAgdHlwZWRlZiBSZXN1bHQgdHlwZSgpOworICB0eXBlZGVmIHR5cGVuYW1lIEZ1bmN0aW9uPHR5
cGU+OjpBcmd1bWVudFR1cGxlIFNlbGVjdGVkQXJnczsKKyAgc3RhdGljIFNlbGVjdGVkQXJncyBT
ZWxlY3QoY29uc3QgQXJndW1lbnRUdXBsZSYgLyogYXJncyAqLykgeworICAgIHJldHVybiBTZWxl
Y3RlZEFyZ3MoKTsKKyAgfQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFJlc3VsdCwgdHlwZW5h
bWUgQXJndW1lbnRUdXBsZSwgaW50IGsxPgorY2xhc3MgU2VsZWN0QXJnczxSZXN1bHQsIEFyZ3Vt
ZW50VHVwbGUsCisgICAgICAgICAgICAgICAgIGsxLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAt
MSwgLTEsIC0xPiB7CisgcHVibGljOgorICB0eXBlZGVmIFJlc3VsdCB0eXBlKEdNT0NLX0ZJRUxE
XyhBcmd1bWVudFR1cGxlLCBrMSkpOworICB0eXBlZGVmIHR5cGVuYW1lIEZ1bmN0aW9uPHR5cGU+
OjpBcmd1bWVudFR1cGxlIFNlbGVjdGVkQXJnczsKKyAgc3RhdGljIFNlbGVjdGVkQXJncyBTZWxl
Y3QoY29uc3QgQXJndW1lbnRUdXBsZSYgYXJncykgeworICAgIHJldHVybiBTZWxlY3RlZEFyZ3Mo
Z2V0PGsxPihhcmdzKSk7CisgIH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQsIHR5
cGVuYW1lIEFyZ3VtZW50VHVwbGUsIGludCBrMSwgaW50IGsyPgorY2xhc3MgU2VsZWN0QXJnczxS
ZXN1bHQsIEFyZ3VtZW50VHVwbGUsCisgICAgICAgICAgICAgICAgIGsxLCBrMiwgLTEsIC0xLCAt
MSwgLTEsIC0xLCAtMSwgLTEsIC0xPiB7CisgcHVibGljOgorICB0eXBlZGVmIFJlc3VsdCB0eXBl
KEdNT0NLX0ZJRUxEXyhBcmd1bWVudFR1cGxlLCBrMSksCisgICAgICBHTU9DS19GSUVMRF8oQXJn
dW1lbnRUdXBsZSwgazIpKTsKKyAgdHlwZWRlZiB0eXBlbmFtZSBGdW5jdGlvbjx0eXBlPjo6QXJn
dW1lbnRUdXBsZSBTZWxlY3RlZEFyZ3M7CisgIHN0YXRpYyBTZWxlY3RlZEFyZ3MgU2VsZWN0KGNv
bnN0IEFyZ3VtZW50VHVwbGUmIGFyZ3MpIHsKKyAgICByZXR1cm4gU2VsZWN0ZWRBcmdzKGdldDxr
MT4oYXJncyksIGdldDxrMj4oYXJncykpOworICB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
UmVzdWx0LCB0eXBlbmFtZSBBcmd1bWVudFR1cGxlLCBpbnQgazEsIGludCBrMiwgaW50IGszPgor
Y2xhc3MgU2VsZWN0QXJnczxSZXN1bHQsIEFyZ3VtZW50VHVwbGUsCisgICAgICAgICAgICAgICAg
IGsxLCBrMiwgazMsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xPiB7CisgcHVibGljOgorICB0
eXBlZGVmIFJlc3VsdCB0eXBlKEdNT0NLX0ZJRUxEXyhBcmd1bWVudFR1cGxlLCBrMSksCisgICAg
ICBHTU9DS19GSUVMRF8oQXJndW1lbnRUdXBsZSwgazIpLCBHTU9DS19GSUVMRF8oQXJndW1lbnRU
dXBsZSwgazMpKTsKKyAgdHlwZWRlZiB0eXBlbmFtZSBGdW5jdGlvbjx0eXBlPjo6QXJndW1lbnRU
dXBsZSBTZWxlY3RlZEFyZ3M7CisgIHN0YXRpYyBTZWxlY3RlZEFyZ3MgU2VsZWN0KGNvbnN0IEFy
Z3VtZW50VHVwbGUmIGFyZ3MpIHsKKyAgICByZXR1cm4gU2VsZWN0ZWRBcmdzKGdldDxrMT4oYXJn
cyksIGdldDxrMj4oYXJncyksIGdldDxrMz4oYXJncykpOworICB9Cit9OworCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgUmVzdWx0LCB0eXBlbmFtZSBBcmd1bWVudFR1cGxlLCBpbnQgazEsIGludCBrMiwg
aW50IGszLAorICAgIGludCBrND4KK2NsYXNzIFNlbGVjdEFyZ3M8UmVzdWx0LCBBcmd1bWVudFR1
cGxlLAorICAgICAgICAgICAgICAgICBrMSwgazIsIGszLCBrNCwgLTEsIC0xLCAtMSwgLTEsIC0x
LCAtMT4geworIHB1YmxpYzoKKyAgdHlwZWRlZiBSZXN1bHQgdHlwZShHTU9DS19GSUVMRF8oQXJn
dW1lbnRUdXBsZSwgazEpLAorICAgICAgR01PQ0tfRklFTERfKEFyZ3VtZW50VHVwbGUsIGsyKSwg
R01PQ0tfRklFTERfKEFyZ3VtZW50VHVwbGUsIGszKSwKKyAgICAgIEdNT0NLX0ZJRUxEXyhBcmd1
bWVudFR1cGxlLCBrNCkpOworICB0eXBlZGVmIHR5cGVuYW1lIEZ1bmN0aW9uPHR5cGU+OjpBcmd1
bWVudFR1cGxlIFNlbGVjdGVkQXJnczsKKyAgc3RhdGljIFNlbGVjdGVkQXJncyBTZWxlY3QoY29u
c3QgQXJndW1lbnRUdXBsZSYgYXJncykgeworICAgIHJldHVybiBTZWxlY3RlZEFyZ3MoZ2V0PGsx
PihhcmdzKSwgZ2V0PGsyPihhcmdzKSwgZ2V0PGszPihhcmdzKSwKKyAgICAgICAgZ2V0PGs0Pihh
cmdzKSk7CisgIH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQsIHR5cGVuYW1lIEFy
Z3VtZW50VHVwbGUsIGludCBrMSwgaW50IGsyLCBpbnQgazMsCisgICAgaW50IGs0LCBpbnQgazU+
CitjbGFzcyBTZWxlY3RBcmdzPFJlc3VsdCwgQXJndW1lbnRUdXBsZSwKKyAgICAgICAgICAgICAg
ICAgazEsIGsyLCBrMywgazQsIGs1LCAtMSwgLTEsIC0xLCAtMSwgLTE+IHsKKyBwdWJsaWM6Cisg
IHR5cGVkZWYgUmVzdWx0IHR5cGUoR01PQ0tfRklFTERfKEFyZ3VtZW50VHVwbGUsIGsxKSwKKyAg
ICAgIEdNT0NLX0ZJRUxEXyhBcmd1bWVudFR1cGxlLCBrMiksIEdNT0NLX0ZJRUxEXyhBcmd1bWVu
dFR1cGxlLCBrMyksCisgICAgICBHTU9DS19GSUVMRF8oQXJndW1lbnRUdXBsZSwgazQpLCBHTU9D
S19GSUVMRF8oQXJndW1lbnRUdXBsZSwgazUpKTsKKyAgdHlwZWRlZiB0eXBlbmFtZSBGdW5jdGlv
bjx0eXBlPjo6QXJndW1lbnRUdXBsZSBTZWxlY3RlZEFyZ3M7CisgIHN0YXRpYyBTZWxlY3RlZEFy
Z3MgU2VsZWN0KGNvbnN0IEFyZ3VtZW50VHVwbGUmIGFyZ3MpIHsKKyAgICByZXR1cm4gU2VsZWN0
ZWRBcmdzKGdldDxrMT4oYXJncyksIGdldDxrMj4oYXJncyksIGdldDxrMz4oYXJncyksCisgICAg
ICAgIGdldDxrND4oYXJncyksIGdldDxrNT4oYXJncykpOworICB9Cit9OworCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgUmVzdWx0LCB0eXBlbmFtZSBBcmd1bWVudFR1cGxlLCBpbnQgazEsIGludCBrMiwg
aW50IGszLAorICAgIGludCBrNCwgaW50IGs1LCBpbnQgazY+CitjbGFzcyBTZWxlY3RBcmdzPFJl
c3VsdCwgQXJndW1lbnRUdXBsZSwKKyAgICAgICAgICAgICAgICAgazEsIGsyLCBrMywgazQsIGs1
LCBrNiwgLTEsIC0xLCAtMSwgLTE+IHsKKyBwdWJsaWM6CisgIHR5cGVkZWYgUmVzdWx0IHR5cGUo
R01PQ0tfRklFTERfKEFyZ3VtZW50VHVwbGUsIGsxKSwKKyAgICAgIEdNT0NLX0ZJRUxEXyhBcmd1
bWVudFR1cGxlLCBrMiksIEdNT0NLX0ZJRUxEXyhBcmd1bWVudFR1cGxlLCBrMyksCisgICAgICBH
TU9DS19GSUVMRF8oQXJndW1lbnRUdXBsZSwgazQpLCBHTU9DS19GSUVMRF8oQXJndW1lbnRUdXBs
ZSwgazUpLAorICAgICAgR01PQ0tfRklFTERfKEFyZ3VtZW50VHVwbGUsIGs2KSk7CisgIHR5cGVk
ZWYgdHlwZW5hbWUgRnVuY3Rpb248dHlwZT46OkFyZ3VtZW50VHVwbGUgU2VsZWN0ZWRBcmdzOwor
ICBzdGF0aWMgU2VsZWN0ZWRBcmdzIFNlbGVjdChjb25zdCBBcmd1bWVudFR1cGxlJiBhcmdzKSB7
CisgICAgcmV0dXJuIFNlbGVjdGVkQXJncyhnZXQ8azE+KGFyZ3MpLCBnZXQ8azI+KGFyZ3MpLCBn
ZXQ8azM+KGFyZ3MpLAorICAgICAgICBnZXQ8azQ+KGFyZ3MpLCBnZXQ8azU+KGFyZ3MpLCBnZXQ8
azY+KGFyZ3MpKTsKKyAgfQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFJlc3VsdCwgdHlwZW5h
bWUgQXJndW1lbnRUdXBsZSwgaW50IGsxLCBpbnQgazIsIGludCBrMywKKyAgICBpbnQgazQsIGlu
dCBrNSwgaW50IGs2LCBpbnQgazc+CitjbGFzcyBTZWxlY3RBcmdzPFJlc3VsdCwgQXJndW1lbnRU
dXBsZSwKKyAgICAgICAgICAgICAgICAgazEsIGsyLCBrMywgazQsIGs1LCBrNiwgazcsIC0xLCAt
MSwgLTE+IHsKKyBwdWJsaWM6CisgIHR5cGVkZWYgUmVzdWx0IHR5cGUoR01PQ0tfRklFTERfKEFy
Z3VtZW50VHVwbGUsIGsxKSwKKyAgICAgIEdNT0NLX0ZJRUxEXyhBcmd1bWVudFR1cGxlLCBrMiks
IEdNT0NLX0ZJRUxEXyhBcmd1bWVudFR1cGxlLCBrMyksCisgICAgICBHTU9DS19GSUVMRF8oQXJn
dW1lbnRUdXBsZSwgazQpLCBHTU9DS19GSUVMRF8oQXJndW1lbnRUdXBsZSwgazUpLAorICAgICAg
R01PQ0tfRklFTERfKEFyZ3VtZW50VHVwbGUsIGs2KSwgR01PQ0tfRklFTERfKEFyZ3VtZW50VHVw
bGUsIGs3KSk7CisgIHR5cGVkZWYgdHlwZW5hbWUgRnVuY3Rpb248dHlwZT46OkFyZ3VtZW50VHVw
bGUgU2VsZWN0ZWRBcmdzOworICBzdGF0aWMgU2VsZWN0ZWRBcmdzIFNlbGVjdChjb25zdCBBcmd1
bWVudFR1cGxlJiBhcmdzKSB7CisgICAgcmV0dXJuIFNlbGVjdGVkQXJncyhnZXQ8azE+KGFyZ3Mp
LCBnZXQ8azI+KGFyZ3MpLCBnZXQ8azM+KGFyZ3MpLAorICAgICAgICBnZXQ8azQ+KGFyZ3MpLCBn
ZXQ8azU+KGFyZ3MpLCBnZXQ8azY+KGFyZ3MpLCBnZXQ8azc+KGFyZ3MpKTsKKyAgfQorfTsKKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFJlc3VsdCwgdHlwZW5hbWUgQXJndW1lbnRUdXBsZSwgaW50IGsx
LCBpbnQgazIsIGludCBrMywKKyAgICBpbnQgazQsIGludCBrNSwgaW50IGs2LCBpbnQgazcsIGlu
dCBrOD4KK2NsYXNzIFNlbGVjdEFyZ3M8UmVzdWx0LCBBcmd1bWVudFR1cGxlLAorICAgICAgICAg
ICAgICAgICBrMSwgazIsIGszLCBrNCwgazUsIGs2LCBrNywgazgsIC0xLCAtMT4geworIHB1Ymxp
YzoKKyAgdHlwZWRlZiBSZXN1bHQgdHlwZShHTU9DS19GSUVMRF8oQXJndW1lbnRUdXBsZSwgazEp
LAorICAgICAgR01PQ0tfRklFTERfKEFyZ3VtZW50VHVwbGUsIGsyKSwgR01PQ0tfRklFTERfKEFy
Z3VtZW50VHVwbGUsIGszKSwKKyAgICAgIEdNT0NLX0ZJRUxEXyhBcmd1bWVudFR1cGxlLCBrNCks
IEdNT0NLX0ZJRUxEXyhBcmd1bWVudFR1cGxlLCBrNSksCisgICAgICBHTU9DS19GSUVMRF8oQXJn
dW1lbnRUdXBsZSwgazYpLCBHTU9DS19GSUVMRF8oQXJndW1lbnRUdXBsZSwgazcpLAorICAgICAg
R01PQ0tfRklFTERfKEFyZ3VtZW50VHVwbGUsIGs4KSk7CisgIHR5cGVkZWYgdHlwZW5hbWUgRnVu
Y3Rpb248dHlwZT46OkFyZ3VtZW50VHVwbGUgU2VsZWN0ZWRBcmdzOworICBzdGF0aWMgU2VsZWN0
ZWRBcmdzIFNlbGVjdChjb25zdCBBcmd1bWVudFR1cGxlJiBhcmdzKSB7CisgICAgcmV0dXJuIFNl
bGVjdGVkQXJncyhnZXQ8azE+KGFyZ3MpLCBnZXQ8azI+KGFyZ3MpLCBnZXQ8azM+KGFyZ3MpLAor
ICAgICAgICBnZXQ8azQ+KGFyZ3MpLCBnZXQ8azU+KGFyZ3MpLCBnZXQ8azY+KGFyZ3MpLCBnZXQ8
azc+KGFyZ3MpLAorICAgICAgICBnZXQ8azg+KGFyZ3MpKTsKKyAgfQorfTsKKwordGVtcGxhdGUg
PHR5cGVuYW1lIFJlc3VsdCwgdHlwZW5hbWUgQXJndW1lbnRUdXBsZSwgaW50IGsxLCBpbnQgazIs
IGludCBrMywKKyAgICBpbnQgazQsIGludCBrNSwgaW50IGs2LCBpbnQgazcsIGludCBrOCwgaW50
IGs5PgorY2xhc3MgU2VsZWN0QXJnczxSZXN1bHQsIEFyZ3VtZW50VHVwbGUsCisgICAgICAgICAg
ICAgICAgIGsxLCBrMiwgazMsIGs0LCBrNSwgazYsIGs3LCBrOCwgazksIC0xPiB7CisgcHVibGlj
OgorICB0eXBlZGVmIFJlc3VsdCB0eXBlKEdNT0NLX0ZJRUxEXyhBcmd1bWVudFR1cGxlLCBrMSks
CisgICAgICBHTU9DS19GSUVMRF8oQXJndW1lbnRUdXBsZSwgazIpLCBHTU9DS19GSUVMRF8oQXJn
dW1lbnRUdXBsZSwgazMpLAorICAgICAgR01PQ0tfRklFTERfKEFyZ3VtZW50VHVwbGUsIGs0KSwg
R01PQ0tfRklFTERfKEFyZ3VtZW50VHVwbGUsIGs1KSwKKyAgICAgIEdNT0NLX0ZJRUxEXyhBcmd1
bWVudFR1cGxlLCBrNiksIEdNT0NLX0ZJRUxEXyhBcmd1bWVudFR1cGxlLCBrNyksCisgICAgICBH
TU9DS19GSUVMRF8oQXJndW1lbnRUdXBsZSwgazgpLCBHTU9DS19GSUVMRF8oQXJndW1lbnRUdXBs
ZSwgazkpKTsKKyAgdHlwZWRlZiB0eXBlbmFtZSBGdW5jdGlvbjx0eXBlPjo6QXJndW1lbnRUdXBs
ZSBTZWxlY3RlZEFyZ3M7CisgIHN0YXRpYyBTZWxlY3RlZEFyZ3MgU2VsZWN0KGNvbnN0IEFyZ3Vt
ZW50VHVwbGUmIGFyZ3MpIHsKKyAgICByZXR1cm4gU2VsZWN0ZWRBcmdzKGdldDxrMT4oYXJncyks
IGdldDxrMj4oYXJncyksIGdldDxrMz4oYXJncyksCisgICAgICAgIGdldDxrND4oYXJncyksIGdl
dDxrNT4oYXJncyksIGdldDxrNj4oYXJncyksIGdldDxrNz4oYXJncyksCisgICAgICAgIGdldDxr
OD4oYXJncyksIGdldDxrOT4oYXJncykpOworICB9Cit9OworCisjdW5kZWYgR01PQ0tfRklFTERf
CisKKy8vIEltcGxlbWVudHMgdGhlIFdpdGhBcmdzIGFjdGlvbi4KK3RlbXBsYXRlIDx0eXBlbmFt
ZSBJbm5lckFjdGlvbiwgaW50IGsxID0gLTEsIGludCBrMiA9IC0xLCBpbnQgazMgPSAtMSwKKyAg
ICBpbnQgazQgPSAtMSwgaW50IGs1ID0gLTEsIGludCBrNiA9IC0xLCBpbnQgazcgPSAtMSwgaW50
IGs4ID0gLTEsCisgICAgaW50IGs5ID0gLTEsIGludCBrMTAgPSAtMT4KK2NsYXNzIFdpdGhBcmdz
QWN0aW9uIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IFdpdGhBcmdzQWN0aW9uKGNvbnN0IElubmVy
QWN0aW9uJiBhY3Rpb24pIDogYWN0aW9uXyhhY3Rpb24pIHt9CisKKyAgdGVtcGxhdGUgPHR5cGVu
YW1lIEY+CisgIG9wZXJhdG9yIEFjdGlvbjxGPigpIGNvbnN0IHsgcmV0dXJuIE1ha2VBY3Rpb24o
bmV3IEltcGw8Rj4oYWN0aW9uXykpOyB9CisKKyBwcml2YXRlOgorICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgRj4KKyAgY2xhc3MgSW1wbCA6IHB1YmxpYyBBY3Rpb25JbnRlcmZhY2U8Rj4geworICAgcHVi
bGljOgorICAgIHR5cGVkZWYgdHlwZW5hbWUgRnVuY3Rpb248Rj46OlJlc3VsdCBSZXN1bHQ7Cisg
ICAgdHlwZWRlZiB0eXBlbmFtZSBGdW5jdGlvbjxGPjo6QXJndW1lbnRUdXBsZSBBcmd1bWVudFR1
cGxlOworCisgICAgZXhwbGljaXQgSW1wbChjb25zdCBJbm5lckFjdGlvbiYgYWN0aW9uKSA6IGFj
dGlvbl8oYWN0aW9uKSB7fQorCisgICAgdmlydHVhbCBSZXN1bHQgUGVyZm9ybShjb25zdCBBcmd1
bWVudFR1cGxlJiBhcmdzKSB7CisgICAgICByZXR1cm4gYWN0aW9uXy5QZXJmb3JtKFNlbGVjdEFy
Z3M8UmVzdWx0LCBBcmd1bWVudFR1cGxlLCBrMSwgazIsIGszLCBrNCwKKyAgICAgICAgICBrNSwg
azYsIGs3LCBrOCwgazksIGsxMD46OlNlbGVjdChhcmdzKSk7CisgICAgfQorCisgICBwcml2YXRl
OgorICAgIHR5cGVkZWYgdHlwZW5hbWUgU2VsZWN0QXJnczxSZXN1bHQsIEFyZ3VtZW50VHVwbGUs
CisgICAgICAgIGsxLCBrMiwgazMsIGs0LCBrNSwgazYsIGs3LCBrOCwgazksIGsxMD46OnR5cGUg
SW5uZXJGdW5jdGlvblR5cGU7CisKKyAgICBBY3Rpb248SW5uZXJGdW5jdGlvblR5cGU+IGFjdGlv
bl87CisgIH07CisKKyAgY29uc3QgSW5uZXJBY3Rpb24gYWN0aW9uXzsKKworICBHVEVTVF9ESVNB
TExPV19BU1NJR05fKFdpdGhBcmdzQWN0aW9uKTsKK307CisKKy8vIEEgbWFjcm8gZnJvbSB0aGUg
QUNUSU9OKiBmYW1pbHkgKGRlZmluZWQgbGF0ZXIgaW4gdGhpcyBmaWxlKQorLy8gZGVmaW5lcyBh
biBhY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCBpbiBhIG1vY2sgZnVuY3Rpb24uICBUeXBpY2FsbHks
CisvLyB0aGVzZSBhY3Rpb25zIG9ubHkgY2FyZSBhYm91dCBhIHN1YnNldCBvZiB0aGUgYXJndW1l
bnRzIG9mIHRoZSBtb2NrCisvLyBmdW5jdGlvbi4gIEZvciBleGFtcGxlLCBpZiBzdWNoIGFuIGFj
dGlvbiBvbmx5IHVzZXMgdGhlIHNlY29uZAorLy8gYXJndW1lbnQsIGl0IGNhbiBiZSB1c2VkIGlu
IGFueSBtb2NrIGZ1bmN0aW9uIHRoYXQgdGFrZXMgPj0gMgorLy8gYXJndW1lbnRzIHdoZXJlIHRo
ZSB0eXBlIG9mIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMgY29tcGF0aWJsZS4KKy8vCisvLyBUaGVy
ZWZvcmUsIHRoZSBhY3Rpb24gaW1wbGVtZW50YXRpb24gbXVzdCBiZSBwcmVwYXJlZCB0byB0YWtl
IG1vcmUKKy8vIGFyZ3VtZW50cyB0aGFuIGl0IG5lZWRzLiAgVGhlIEV4Y2Vzc2l2ZUFyZyB0eXBl
IGlzIHVzZWQgdG8KKy8vIHJlcHJlc2VudCB0aG9zZSBleGNlc3NpdmUgYXJndW1lbnRzLiAgSW4g
b3JkZXIgdG8ga2VlcCB0aGUgY29tcGlsZXIKKy8vIGVycm9yIG1lc3NhZ2VzIHRyYWN0YWJsZSwg
d2UgZGVmaW5lIGl0IGluIHRoZSB0ZXN0aW5nIG5hbWVzcGFjZQorLy8gaW5zdGVhZCBvZiB0ZXN0
aW5nOjppbnRlcm5hbC4gIEhvd2V2ZXIsIHRoaXMgaXMgYW4gSU5URVJOQUwgVFlQRQorLy8gYW5k
IHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLCBzbyBhIHVzZXIgTVVTVCBOT1QgVVNF
IFRISVMKKy8vIFRZUEUgRElSRUNUTFkuCitzdHJ1Y3QgRXhjZXNzaXZlQXJnIHt9OworCisvLyBB
IGhlbHBlciBjbGFzcyBuZWVkZWQgZm9yIGltcGxlbWVudGluZyB0aGUgQUNUSU9OKiBtYWNyb3Mu
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0LCBjbGFzcyBJbXBsPgorY2xhc3MgQWN0aW9uSGVs
cGVyIHsKKyBwdWJsaWM6CisgIHN0YXRpYyBSZXN1bHQgUGVyZm9ybShJbXBsKiBpbXBsLCBjb25z
dCA6OnRlc3Rpbmc6OnR1cGxlPD4mIGFyZ3MpIHsKKyAgICByZXR1cm4gaW1wbC0+dGVtcGxhdGUg
Z21vY2tfUGVyZm9ybUltcGw8PihhcmdzLCBFeGNlc3NpdmVBcmcoKSwKKyAgICAgICAgRXhjZXNz
aXZlQXJnKCksIEV4Y2Vzc2l2ZUFyZygpLCBFeGNlc3NpdmVBcmcoKSwgRXhjZXNzaXZlQXJnKCks
CisgICAgICAgIEV4Y2Vzc2l2ZUFyZygpLCBFeGNlc3NpdmVBcmcoKSwgRXhjZXNzaXZlQXJnKCks
IEV4Y2Vzc2l2ZUFyZygpLAorICAgICAgICBFeGNlc3NpdmVBcmcoKSk7CisgIH0KKworICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgQTA+CisgIHN0YXRpYyBSZXN1bHQgUGVyZm9ybShJbXBsKiBpbXBsLCBj
b25zdCA6OnRlc3Rpbmc6OnR1cGxlPEEwPiYgYXJncykgeworICAgIHJldHVybiBpbXBsLT50ZW1w
bGF0ZSBnbW9ja19QZXJmb3JtSW1wbDxBMD4oYXJncywgZ2V0PDA+KGFyZ3MpLAorICAgICAgICBF
eGNlc3NpdmVBcmcoKSwgRXhjZXNzaXZlQXJnKCksIEV4Y2Vzc2l2ZUFyZygpLCBFeGNlc3NpdmVB
cmcoKSwKKyAgICAgICAgRXhjZXNzaXZlQXJnKCksIEV4Y2Vzc2l2ZUFyZygpLCBFeGNlc3NpdmVB
cmcoKSwgRXhjZXNzaXZlQXJnKCksCisgICAgICAgIEV4Y2Vzc2l2ZUFyZygpKTsKKyAgfQorCisg
IHRlbXBsYXRlIDx0eXBlbmFtZSBBMCwgdHlwZW5hbWUgQTE+CisgIHN0YXRpYyBSZXN1bHQgUGVy
Zm9ybShJbXBsKiBpbXBsLCBjb25zdCA6OnRlc3Rpbmc6OnR1cGxlPEEwLCBBMT4mIGFyZ3MpIHsK
KyAgICByZXR1cm4gaW1wbC0+dGVtcGxhdGUgZ21vY2tfUGVyZm9ybUltcGw8QTAsIEExPihhcmdz
LCBnZXQ8MD4oYXJncyksCisgICAgICAgIGdldDwxPihhcmdzKSwgRXhjZXNzaXZlQXJnKCksIEV4
Y2Vzc2l2ZUFyZygpLCBFeGNlc3NpdmVBcmcoKSwKKyAgICAgICAgRXhjZXNzaXZlQXJnKCksIEV4
Y2Vzc2l2ZUFyZygpLCBFeGNlc3NpdmVBcmcoKSwgRXhjZXNzaXZlQXJnKCksCisgICAgICAgIEV4
Y2Vzc2l2ZUFyZygpKTsKKyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBBMCwgdHlwZW5hbWUg
QTEsIHR5cGVuYW1lIEEyPgorICBzdGF0aWMgUmVzdWx0IFBlcmZvcm0oSW1wbCogaW1wbCwgY29u
c3QgOjp0ZXN0aW5nOjp0dXBsZTxBMCwgQTEsIEEyPiYgYXJncykgeworICAgIHJldHVybiBpbXBs
LT50ZW1wbGF0ZSBnbW9ja19QZXJmb3JtSW1wbDxBMCwgQTEsIEEyPihhcmdzLCBnZXQ8MD4oYXJn
cyksCisgICAgICAgIGdldDwxPihhcmdzKSwgZ2V0PDI+KGFyZ3MpLCBFeGNlc3NpdmVBcmcoKSwg
RXhjZXNzaXZlQXJnKCksCisgICAgICAgIEV4Y2Vzc2l2ZUFyZygpLCBFeGNlc3NpdmVBcmcoKSwg
RXhjZXNzaXZlQXJnKCksIEV4Y2Vzc2l2ZUFyZygpLAorICAgICAgICBFeGNlc3NpdmVBcmcoKSk7
CisgIH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTAsIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBB
MiwgdHlwZW5hbWUgQTM+CisgIHN0YXRpYyBSZXN1bHQgUGVyZm9ybShJbXBsKiBpbXBsLCBjb25z
dCA6OnRlc3Rpbmc6OnR1cGxlPEEwLCBBMSwgQTIsCisgICAgICBBMz4mIGFyZ3MpIHsKKyAgICBy
ZXR1cm4gaW1wbC0+dGVtcGxhdGUgZ21vY2tfUGVyZm9ybUltcGw8QTAsIEExLCBBMiwgQTM+KGFy
Z3MsIGdldDwwPihhcmdzKSwKKyAgICAgICAgZ2V0PDE+KGFyZ3MpLCBnZXQ8Mj4oYXJncyksIGdl
dDwzPihhcmdzKSwgRXhjZXNzaXZlQXJnKCksCisgICAgICAgIEV4Y2Vzc2l2ZUFyZygpLCBFeGNl
c3NpdmVBcmcoKSwgRXhjZXNzaXZlQXJnKCksIEV4Y2Vzc2l2ZUFyZygpLAorICAgICAgICBFeGNl
c3NpdmVBcmcoKSk7CisgIH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTAsIHR5cGVuYW1lIEEx
LCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0PgorICBzdGF0aWMgUmVzdWx0
IFBlcmZvcm0oSW1wbCogaW1wbCwgY29uc3QgOjp0ZXN0aW5nOjp0dXBsZTxBMCwgQTEsIEEyLCBB
MywKKyAgICAgIEE0PiYgYXJncykgeworICAgIHJldHVybiBpbXBsLT50ZW1wbGF0ZSBnbW9ja19Q
ZXJmb3JtSW1wbDxBMCwgQTEsIEEyLCBBMywgQTQ+KGFyZ3MsCisgICAgICAgIGdldDwwPihhcmdz
KSwgZ2V0PDE+KGFyZ3MpLCBnZXQ8Mj4oYXJncyksIGdldDwzPihhcmdzKSwgZ2V0PDQ+KGFyZ3Mp
LAorICAgICAgICBFeGNlc3NpdmVBcmcoKSwgRXhjZXNzaXZlQXJnKCksIEV4Y2Vzc2l2ZUFyZygp
LCBFeGNlc3NpdmVBcmcoKSwKKyAgICAgICAgRXhjZXNzaXZlQXJnKCkpOworICB9CisKKyAgdGVt
cGxhdGUgPHR5cGVuYW1lIEEwLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEz
LCB0eXBlbmFtZSBBNCwKKyAgICAgIHR5cGVuYW1lIEE1PgorICBzdGF0aWMgUmVzdWx0IFBlcmZv
cm0oSW1wbCogaW1wbCwgY29uc3QgOjp0ZXN0aW5nOjp0dXBsZTxBMCwgQTEsIEEyLCBBMywgQTQs
CisgICAgICBBNT4mIGFyZ3MpIHsKKyAgICByZXR1cm4gaW1wbC0+dGVtcGxhdGUgZ21vY2tfUGVy
Zm9ybUltcGw8QTAsIEExLCBBMiwgQTMsIEE0LCBBNT4oYXJncywKKyAgICAgICAgZ2V0PDA+KGFy
Z3MpLCBnZXQ8MT4oYXJncyksIGdldDwyPihhcmdzKSwgZ2V0PDM+KGFyZ3MpLCBnZXQ8ND4oYXJn
cyksCisgICAgICAgIGdldDw1PihhcmdzKSwgRXhjZXNzaXZlQXJnKCksIEV4Y2Vzc2l2ZUFyZygp
LCBFeGNlc3NpdmVBcmcoKSwKKyAgICAgICAgRXhjZXNzaXZlQXJnKCkpOworICB9CisKKyAgdGVt
cGxhdGUgPHR5cGVuYW1lIEEwLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEz
LCB0eXBlbmFtZSBBNCwKKyAgICAgIHR5cGVuYW1lIEE1LCB0eXBlbmFtZSBBNj4KKyAgc3RhdGlj
IFJlc3VsdCBQZXJmb3JtKEltcGwqIGltcGwsIGNvbnN0IDo6dGVzdGluZzo6dHVwbGU8QTAsIEEx
LCBBMiwgQTMsIEE0LAorICAgICAgQTUsIEE2PiYgYXJncykgeworICAgIHJldHVybiBpbXBsLT50
ZW1wbGF0ZSBnbW9ja19QZXJmb3JtSW1wbDxBMCwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNj4oYXJn
cywKKyAgICAgICAgZ2V0PDA+KGFyZ3MpLCBnZXQ8MT4oYXJncyksIGdldDwyPihhcmdzKSwgZ2V0
PDM+KGFyZ3MpLCBnZXQ8ND4oYXJncyksCisgICAgICAgIGdldDw1PihhcmdzKSwgZ2V0PDY+KGFy
Z3MpLCBFeGNlc3NpdmVBcmcoKSwgRXhjZXNzaXZlQXJnKCksCisgICAgICAgIEV4Y2Vzc2l2ZUFy
ZygpKTsKKyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBBMCwgdHlwZW5hbWUgQTEsIHR5cGVu
YW1lIEEyLCB0eXBlbmFtZSBBMywgdHlwZW5hbWUgQTQsCisgICAgICB0eXBlbmFtZSBBNSwgdHlw
ZW5hbWUgQTYsIHR5cGVuYW1lIEE3PgorICBzdGF0aWMgUmVzdWx0IFBlcmZvcm0oSW1wbCogaW1w
bCwgY29uc3QgOjp0ZXN0aW5nOjp0dXBsZTxBMCwgQTEsIEEyLCBBMywgQTQsCisgICAgICBBNSwg
QTYsIEE3PiYgYXJncykgeworICAgIHJldHVybiBpbXBsLT50ZW1wbGF0ZSBnbW9ja19QZXJmb3Jt
SW1wbDxBMCwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwKKyAgICAgICAgQTc+KGFyZ3MsIGdldDww
PihhcmdzKSwgZ2V0PDE+KGFyZ3MpLCBnZXQ8Mj4oYXJncyksIGdldDwzPihhcmdzKSwKKyAgICAg
ICAgZ2V0PDQ+KGFyZ3MpLCBnZXQ8NT4oYXJncyksIGdldDw2PihhcmdzKSwgZ2V0PDc+KGFyZ3Mp
LCBFeGNlc3NpdmVBcmcoKSwKKyAgICAgICAgRXhjZXNzaXZlQXJnKCkpOworICB9CisKKyAgdGVt
cGxhdGUgPHR5cGVuYW1lIEEwLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEz
LCB0eXBlbmFtZSBBNCwKKyAgICAgIHR5cGVuYW1lIEE1LCB0eXBlbmFtZSBBNiwgdHlwZW5hbWUg
QTcsIHR5cGVuYW1lIEE4PgorICBzdGF0aWMgUmVzdWx0IFBlcmZvcm0oSW1wbCogaW1wbCwgY29u
c3QgOjp0ZXN0aW5nOjp0dXBsZTxBMCwgQTEsIEEyLCBBMywgQTQsCisgICAgICBBNSwgQTYsIEE3
LCBBOD4mIGFyZ3MpIHsKKyAgICByZXR1cm4gaW1wbC0+dGVtcGxhdGUgZ21vY2tfUGVyZm9ybUlt
cGw8QTAsIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LAorICAgICAgICBBOD4oYXJncywgZ2V0
PDA+KGFyZ3MpLCBnZXQ8MT4oYXJncyksIGdldDwyPihhcmdzKSwgZ2V0PDM+KGFyZ3MpLAorICAg
ICAgICBnZXQ8ND4oYXJncyksIGdldDw1PihhcmdzKSwgZ2V0PDY+KGFyZ3MpLCBnZXQ8Nz4oYXJn
cyksIGdldDw4PihhcmdzKSwKKyAgICAgICAgRXhjZXNzaXZlQXJnKCkpOworICB9CisKKyAgdGVt
cGxhdGUgPHR5cGVuYW1lIEEwLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEz
LCB0eXBlbmFtZSBBNCwKKyAgICAgIHR5cGVuYW1lIEE1LCB0eXBlbmFtZSBBNiwgdHlwZW5hbWUg
QTcsIHR5cGVuYW1lIEE4LCB0eXBlbmFtZSBBOT4KKyAgc3RhdGljIFJlc3VsdCBQZXJmb3JtKElt
cGwqIGltcGwsIGNvbnN0IDo6dGVzdGluZzo6dHVwbGU8QTAsIEExLCBBMiwgQTMsIEE0LAorICAg
ICAgQTUsIEE2LCBBNywgQTgsIEE5PiYgYXJncykgeworICAgIHJldHVybiBpbXBsLT50ZW1wbGF0
ZSBnbW9ja19QZXJmb3JtSW1wbDxBMCwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LAor
ICAgICAgICBBOT4oYXJncywgZ2V0PDA+KGFyZ3MpLCBnZXQ8MT4oYXJncyksIGdldDwyPihhcmdz
KSwgZ2V0PDM+KGFyZ3MpLAorICAgICAgICBnZXQ8ND4oYXJncyksIGdldDw1PihhcmdzKSwgZ2V0
PDY+KGFyZ3MpLCBnZXQ8Nz4oYXJncyksIGdldDw4PihhcmdzKSwKKyAgICAgICAgZ2V0PDk+KGFy
Z3MpKTsKKyAgfQorfTsKKworfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCisKKy8vIFZhcmlvdXMg
b3ZlcmxvYWRzIGZvciBJbnZva2UoKS4KKworLy8gV2l0aEFyZ3M8TjEsIE4yLCAuLi4sIE5rPihh
bl9hY3Rpb24pIGNyZWF0ZXMgYW4gYWN0aW9uIHRoYXQgcGFzc2VzCisvLyB0aGUgc2VsZWN0ZWQg
YXJndW1lbnRzIG9mIHRoZSBtb2NrIGZ1bmN0aW9uIHRvIGFuX2FjdGlvbiBhbmQKKy8vIHBlcmZv
cm1zIGl0LiAgSXQgc2VydmVzIGFzIGFuIGFkYXB0b3IgYmV0d2VlbiBhY3Rpb25zIHdpdGgKKy8v
IGRpZmZlcmVudCBhcmd1bWVudCBsaXN0cy4gIEMrKyBkb2Vzbid0IHN1cHBvcnQgZGVmYXVsdCBh
cmd1bWVudHMgZm9yCisvLyBmdW5jdGlvbiB0ZW1wbGF0ZXMsIHNvIHdlIGhhdmUgdG8gb3Zlcmxv
YWQgaXQuCit0ZW1wbGF0ZSA8aW50IGsxLCB0eXBlbmFtZSBJbm5lckFjdGlvbj4KK2lubGluZSBp
bnRlcm5hbDo6V2l0aEFyZ3NBY3Rpb248SW5uZXJBY3Rpb24sIGsxPgorV2l0aEFyZ3MoY29uc3Qg
SW5uZXJBY3Rpb24mIGFjdGlvbikgeworICByZXR1cm4gaW50ZXJuYWw6OldpdGhBcmdzQWN0aW9u
PElubmVyQWN0aW9uLCBrMT4oYWN0aW9uKTsKK30KKwordGVtcGxhdGUgPGludCBrMSwgaW50IGsy
LCB0eXBlbmFtZSBJbm5lckFjdGlvbj4KK2lubGluZSBpbnRlcm5hbDo6V2l0aEFyZ3NBY3Rpb248
SW5uZXJBY3Rpb24sIGsxLCBrMj4KK1dpdGhBcmdzKGNvbnN0IElubmVyQWN0aW9uJiBhY3Rpb24p
IHsKKyAgcmV0dXJuIGludGVybmFsOjpXaXRoQXJnc0FjdGlvbjxJbm5lckFjdGlvbiwgazEsIGsy
PihhY3Rpb24pOworfQorCit0ZW1wbGF0ZSA8aW50IGsxLCBpbnQgazIsIGludCBrMywgdHlwZW5h
bWUgSW5uZXJBY3Rpb24+CitpbmxpbmUgaW50ZXJuYWw6OldpdGhBcmdzQWN0aW9uPElubmVyQWN0
aW9uLCBrMSwgazIsIGszPgorV2l0aEFyZ3MoY29uc3QgSW5uZXJBY3Rpb24mIGFjdGlvbikgewor
ICByZXR1cm4gaW50ZXJuYWw6OldpdGhBcmdzQWN0aW9uPElubmVyQWN0aW9uLCBrMSwgazIsIGsz
PihhY3Rpb24pOworfQorCit0ZW1wbGF0ZSA8aW50IGsxLCBpbnQgazIsIGludCBrMywgaW50IGs0
LCB0eXBlbmFtZSBJbm5lckFjdGlvbj4KK2lubGluZSBpbnRlcm5hbDo6V2l0aEFyZ3NBY3Rpb248
SW5uZXJBY3Rpb24sIGsxLCBrMiwgazMsIGs0PgorV2l0aEFyZ3MoY29uc3QgSW5uZXJBY3Rpb24m
IGFjdGlvbikgeworICByZXR1cm4gaW50ZXJuYWw6OldpdGhBcmdzQWN0aW9uPElubmVyQWN0aW9u
LCBrMSwgazIsIGszLCBrND4oYWN0aW9uKTsKK30KKwordGVtcGxhdGUgPGludCBrMSwgaW50IGsy
LCBpbnQgazMsIGludCBrNCwgaW50IGs1LCB0eXBlbmFtZSBJbm5lckFjdGlvbj4KK2lubGluZSBp
bnRlcm5hbDo6V2l0aEFyZ3NBY3Rpb248SW5uZXJBY3Rpb24sIGsxLCBrMiwgazMsIGs0LCBrNT4K
K1dpdGhBcmdzKGNvbnN0IElubmVyQWN0aW9uJiBhY3Rpb24pIHsKKyAgcmV0dXJuIGludGVybmFs
OjpXaXRoQXJnc0FjdGlvbjxJbm5lckFjdGlvbiwgazEsIGsyLCBrMywgazQsIGs1PihhY3Rpb24p
OworfQorCit0ZW1wbGF0ZSA8aW50IGsxLCBpbnQgazIsIGludCBrMywgaW50IGs0LCBpbnQgazUs
IGludCBrNiwgdHlwZW5hbWUgSW5uZXJBY3Rpb24+CitpbmxpbmUgaW50ZXJuYWw6OldpdGhBcmdz
QWN0aW9uPElubmVyQWN0aW9uLCBrMSwgazIsIGszLCBrNCwgazUsIGs2PgorV2l0aEFyZ3MoY29u
c3QgSW5uZXJBY3Rpb24mIGFjdGlvbikgeworICByZXR1cm4gaW50ZXJuYWw6OldpdGhBcmdzQWN0
aW9uPElubmVyQWN0aW9uLCBrMSwgazIsIGszLCBrNCwgazUsIGs2PihhY3Rpb24pOworfQorCit0
ZW1wbGF0ZSA8aW50IGsxLCBpbnQgazIsIGludCBrMywgaW50IGs0LCBpbnQgazUsIGludCBrNiwg
aW50IGs3LAorICAgIHR5cGVuYW1lIElubmVyQWN0aW9uPgoraW5saW5lIGludGVybmFsOjpXaXRo
QXJnc0FjdGlvbjxJbm5lckFjdGlvbiwgazEsIGsyLCBrMywgazQsIGs1LCBrNiwgazc+CitXaXRo
QXJncyhjb25zdCBJbm5lckFjdGlvbiYgYWN0aW9uKSB7CisgIHJldHVybiBpbnRlcm5hbDo6V2l0
aEFyZ3NBY3Rpb248SW5uZXJBY3Rpb24sIGsxLCBrMiwgazMsIGs0LCBrNSwgazYsCisgICAgICBr
Nz4oYWN0aW9uKTsKK30KKwordGVtcGxhdGUgPGludCBrMSwgaW50IGsyLCBpbnQgazMsIGludCBr
NCwgaW50IGs1LCBpbnQgazYsIGludCBrNywgaW50IGs4LAorICAgIHR5cGVuYW1lIElubmVyQWN0
aW9uPgoraW5saW5lIGludGVybmFsOjpXaXRoQXJnc0FjdGlvbjxJbm5lckFjdGlvbiwgazEsIGsy
LCBrMywgazQsIGs1LCBrNiwgazcsIGs4PgorV2l0aEFyZ3MoY29uc3QgSW5uZXJBY3Rpb24mIGFj
dGlvbikgeworICByZXR1cm4gaW50ZXJuYWw6OldpdGhBcmdzQWN0aW9uPElubmVyQWN0aW9uLCBr
MSwgazIsIGszLCBrNCwgazUsIGs2LCBrNywKKyAgICAgIGs4PihhY3Rpb24pOworfQorCit0ZW1w
bGF0ZSA8aW50IGsxLCBpbnQgazIsIGludCBrMywgaW50IGs0LCBpbnQgazUsIGludCBrNiwgaW50
IGs3LCBpbnQgazgsCisgICAgaW50IGs5LCB0eXBlbmFtZSBJbm5lckFjdGlvbj4KK2lubGluZSBp
bnRlcm5hbDo6V2l0aEFyZ3NBY3Rpb248SW5uZXJBY3Rpb24sIGsxLCBrMiwgazMsIGs0LCBrNSwg
azYsIGs3LCBrOCwgazk+CitXaXRoQXJncyhjb25zdCBJbm5lckFjdGlvbiYgYWN0aW9uKSB7Cisg
IHJldHVybiBpbnRlcm5hbDo6V2l0aEFyZ3NBY3Rpb248SW5uZXJBY3Rpb24sIGsxLCBrMiwgazMs
IGs0LCBrNSwgazYsIGs3LCBrOCwKKyAgICAgIGs5PihhY3Rpb24pOworfQorCit0ZW1wbGF0ZSA8
aW50IGsxLCBpbnQgazIsIGludCBrMywgaW50IGs0LCBpbnQgazUsIGludCBrNiwgaW50IGs3LCBp
bnQgazgsCisgICAgaW50IGs5LCBpbnQgazEwLCB0eXBlbmFtZSBJbm5lckFjdGlvbj4KK2lubGlu
ZSBpbnRlcm5hbDo6V2l0aEFyZ3NBY3Rpb248SW5uZXJBY3Rpb24sIGsxLCBrMiwgazMsIGs0LCBr
NSwgazYsIGs3LCBrOCwKKyAgICBrOSwgazEwPgorV2l0aEFyZ3MoY29uc3QgSW5uZXJBY3Rpb24m
IGFjdGlvbikgeworICByZXR1cm4gaW50ZXJuYWw6OldpdGhBcmdzQWN0aW9uPElubmVyQWN0aW9u
LCBrMSwgazIsIGszLCBrNCwgazUsIGs2LCBrNywgazgsCisgICAgICBrOSwgazEwPihhY3Rpb24p
OworfQorCisvLyBDcmVhdGVzIGFuIGFjdGlvbiB0aGF0IGRvZXMgYWN0aW9ucyBhMSwgYTIsIC4u
Liwgc2VxdWVudGlhbGx5IGluCisvLyBlYWNoIGludm9jYXRpb24uCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgQWN0aW9uMSwgdHlwZW5hbWUgQWN0aW9uMj4KK2lubGluZSBpbnRlcm5hbDo6RG9Cb3RoQWN0
aW9uPEFjdGlvbjEsIEFjdGlvbjI+CitEb0FsbChBY3Rpb24xIGExLCBBY3Rpb24yIGEyKSB7Cisg
IHJldHVybiBpbnRlcm5hbDo6RG9Cb3RoQWN0aW9uPEFjdGlvbjEsIEFjdGlvbjI+KGExLCBhMik7
Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBBY3Rpb24xLCB0eXBlbmFtZSBBY3Rpb24yLCB0eXBl
bmFtZSBBY3Rpb24zPgoraW5saW5lIGludGVybmFsOjpEb0JvdGhBY3Rpb248QWN0aW9uMSwgaW50
ZXJuYWw6OkRvQm90aEFjdGlvbjxBY3Rpb24yLAorICAgIEFjdGlvbjM+ID4KK0RvQWxsKEFjdGlv
bjEgYTEsIEFjdGlvbjIgYTIsIEFjdGlvbjMgYTMpIHsKKyAgcmV0dXJuIERvQWxsKGExLCBEb0Fs
bChhMiwgYTMpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEFjdGlvbjEsIHR5cGVuYW1lIEFj
dGlvbjIsIHR5cGVuYW1lIEFjdGlvbjMsCisgICAgdHlwZW5hbWUgQWN0aW9uND4KK2lubGluZSBp
bnRlcm5hbDo6RG9Cb3RoQWN0aW9uPEFjdGlvbjEsIGludGVybmFsOjpEb0JvdGhBY3Rpb248QWN0
aW9uMiwKKyAgICBpbnRlcm5hbDo6RG9Cb3RoQWN0aW9uPEFjdGlvbjMsIEFjdGlvbjQ+ID4gPgor
RG9BbGwoQWN0aW9uMSBhMSwgQWN0aW9uMiBhMiwgQWN0aW9uMyBhMywgQWN0aW9uNCBhNCkgewor
ICByZXR1cm4gRG9BbGwoYTEsIERvQWxsKGEyLCBhMywgYTQpKTsKK30KKwordGVtcGxhdGUgPHR5
cGVuYW1lIEFjdGlvbjEsIHR5cGVuYW1lIEFjdGlvbjIsIHR5cGVuYW1lIEFjdGlvbjMsCisgICAg
dHlwZW5hbWUgQWN0aW9uNCwgdHlwZW5hbWUgQWN0aW9uNT4KK2lubGluZSBpbnRlcm5hbDo6RG9C
b3RoQWN0aW9uPEFjdGlvbjEsIGludGVybmFsOjpEb0JvdGhBY3Rpb248QWN0aW9uMiwKKyAgICBp
bnRlcm5hbDo6RG9Cb3RoQWN0aW9uPEFjdGlvbjMsIGludGVybmFsOjpEb0JvdGhBY3Rpb248QWN0
aW9uNCwKKyAgICBBY3Rpb241PiA+ID4gPgorRG9BbGwoQWN0aW9uMSBhMSwgQWN0aW9uMiBhMiwg
QWN0aW9uMyBhMywgQWN0aW9uNCBhNCwgQWN0aW9uNSBhNSkgeworICByZXR1cm4gRG9BbGwoYTEs
IERvQWxsKGEyLCBhMywgYTQsIGE1KSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBBY3Rpb24x
LCB0eXBlbmFtZSBBY3Rpb24yLCB0eXBlbmFtZSBBY3Rpb24zLAorICAgIHR5cGVuYW1lIEFjdGlv
bjQsIHR5cGVuYW1lIEFjdGlvbjUsIHR5cGVuYW1lIEFjdGlvbjY+CitpbmxpbmUgaW50ZXJuYWw6
OkRvQm90aEFjdGlvbjxBY3Rpb24xLCBpbnRlcm5hbDo6RG9Cb3RoQWN0aW9uPEFjdGlvbjIsCisg
ICAgaW50ZXJuYWw6OkRvQm90aEFjdGlvbjxBY3Rpb24zLCBpbnRlcm5hbDo6RG9Cb3RoQWN0aW9u
PEFjdGlvbjQsCisgICAgaW50ZXJuYWw6OkRvQm90aEFjdGlvbjxBY3Rpb241LCBBY3Rpb242PiA+
ID4gPiA+CitEb0FsbChBY3Rpb24xIGExLCBBY3Rpb24yIGEyLCBBY3Rpb24zIGEzLCBBY3Rpb240
IGE0LCBBY3Rpb241IGE1LCBBY3Rpb242IGE2KSB7CisgIHJldHVybiBEb0FsbChhMSwgRG9BbGwo
YTIsIGEzLCBhNCwgYTUsIGE2KSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBBY3Rpb24xLCB0
eXBlbmFtZSBBY3Rpb24yLCB0eXBlbmFtZSBBY3Rpb24zLAorICAgIHR5cGVuYW1lIEFjdGlvbjQs
IHR5cGVuYW1lIEFjdGlvbjUsIHR5cGVuYW1lIEFjdGlvbjYsIHR5cGVuYW1lIEFjdGlvbjc+Citp
bmxpbmUgaW50ZXJuYWw6OkRvQm90aEFjdGlvbjxBY3Rpb24xLCBpbnRlcm5hbDo6RG9Cb3RoQWN0
aW9uPEFjdGlvbjIsCisgICAgaW50ZXJuYWw6OkRvQm90aEFjdGlvbjxBY3Rpb24zLCBpbnRlcm5h
bDo6RG9Cb3RoQWN0aW9uPEFjdGlvbjQsCisgICAgaW50ZXJuYWw6OkRvQm90aEFjdGlvbjxBY3Rp
b241LCBpbnRlcm5hbDo6RG9Cb3RoQWN0aW9uPEFjdGlvbjYsCisgICAgQWN0aW9uNz4gPiA+ID4g
PiA+CitEb0FsbChBY3Rpb24xIGExLCBBY3Rpb24yIGEyLCBBY3Rpb24zIGEzLCBBY3Rpb240IGE0
LCBBY3Rpb241IGE1LCBBY3Rpb242IGE2LAorICAgIEFjdGlvbjcgYTcpIHsKKyAgcmV0dXJuIERv
QWxsKGExLCBEb0FsbChhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KSk7Cit9CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBBY3Rpb24xLCB0eXBlbmFtZSBBY3Rpb24yLCB0eXBlbmFtZSBBY3Rpb24zLAorICAg
IHR5cGVuYW1lIEFjdGlvbjQsIHR5cGVuYW1lIEFjdGlvbjUsIHR5cGVuYW1lIEFjdGlvbjYsIHR5
cGVuYW1lIEFjdGlvbjcsCisgICAgdHlwZW5hbWUgQWN0aW9uOD4KK2lubGluZSBpbnRlcm5hbDo6
RG9Cb3RoQWN0aW9uPEFjdGlvbjEsIGludGVybmFsOjpEb0JvdGhBY3Rpb248QWN0aW9uMiwKKyAg
ICBpbnRlcm5hbDo6RG9Cb3RoQWN0aW9uPEFjdGlvbjMsIGludGVybmFsOjpEb0JvdGhBY3Rpb248
QWN0aW9uNCwKKyAgICBpbnRlcm5hbDo6RG9Cb3RoQWN0aW9uPEFjdGlvbjUsIGludGVybmFsOjpE
b0JvdGhBY3Rpb248QWN0aW9uNiwKKyAgICBpbnRlcm5hbDo6RG9Cb3RoQWN0aW9uPEFjdGlvbjcs
IEFjdGlvbjg+ID4gPiA+ID4gPiA+CitEb0FsbChBY3Rpb24xIGExLCBBY3Rpb24yIGEyLCBBY3Rp
b24zIGEzLCBBY3Rpb240IGE0LCBBY3Rpb241IGE1LCBBY3Rpb242IGE2LAorICAgIEFjdGlvbjcg
YTcsIEFjdGlvbjggYTgpIHsKKyAgcmV0dXJuIERvQWxsKGExLCBEb0FsbChhMiwgYTMsIGE0LCBh
NSwgYTYsIGE3LCBhOCkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQWN0aW9uMSwgdHlwZW5h
bWUgQWN0aW9uMiwgdHlwZW5hbWUgQWN0aW9uMywKKyAgICB0eXBlbmFtZSBBY3Rpb240LCB0eXBl
bmFtZSBBY3Rpb241LCB0eXBlbmFtZSBBY3Rpb242LCB0eXBlbmFtZSBBY3Rpb243LAorICAgIHR5
cGVuYW1lIEFjdGlvbjgsIHR5cGVuYW1lIEFjdGlvbjk+CitpbmxpbmUgaW50ZXJuYWw6OkRvQm90
aEFjdGlvbjxBY3Rpb24xLCBpbnRlcm5hbDo6RG9Cb3RoQWN0aW9uPEFjdGlvbjIsCisgICAgaW50
ZXJuYWw6OkRvQm90aEFjdGlvbjxBY3Rpb24zLCBpbnRlcm5hbDo6RG9Cb3RoQWN0aW9uPEFjdGlv
bjQsCisgICAgaW50ZXJuYWw6OkRvQm90aEFjdGlvbjxBY3Rpb241LCBpbnRlcm5hbDo6RG9Cb3Ro
QWN0aW9uPEFjdGlvbjYsCisgICAgaW50ZXJuYWw6OkRvQm90aEFjdGlvbjxBY3Rpb243LCBpbnRl
cm5hbDo6RG9Cb3RoQWN0aW9uPEFjdGlvbjgsCisgICAgQWN0aW9uOT4gPiA+ID4gPiA+ID4gPgor
RG9BbGwoQWN0aW9uMSBhMSwgQWN0aW9uMiBhMiwgQWN0aW9uMyBhMywgQWN0aW9uNCBhNCwgQWN0
aW9uNSBhNSwgQWN0aW9uNiBhNiwKKyAgICBBY3Rpb243IGE3LCBBY3Rpb244IGE4LCBBY3Rpb245
IGE5KSB7CisgIHJldHVybiBEb0FsbChhMSwgRG9BbGwoYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywg
YTgsIGE5KSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBBY3Rpb24xLCB0eXBlbmFtZSBBY3Rp
b24yLCB0eXBlbmFtZSBBY3Rpb24zLAorICAgIHR5cGVuYW1lIEFjdGlvbjQsIHR5cGVuYW1lIEFj
dGlvbjUsIHR5cGVuYW1lIEFjdGlvbjYsIHR5cGVuYW1lIEFjdGlvbjcsCisgICAgdHlwZW5hbWUg
QWN0aW9uOCwgdHlwZW5hbWUgQWN0aW9uOSwgdHlwZW5hbWUgQWN0aW9uMTA+CitpbmxpbmUgaW50
ZXJuYWw6OkRvQm90aEFjdGlvbjxBY3Rpb24xLCBpbnRlcm5hbDo6RG9Cb3RoQWN0aW9uPEFjdGlv
bjIsCisgICAgaW50ZXJuYWw6OkRvQm90aEFjdGlvbjxBY3Rpb24zLCBpbnRlcm5hbDo6RG9Cb3Ro
QWN0aW9uPEFjdGlvbjQsCisgICAgaW50ZXJuYWw6OkRvQm90aEFjdGlvbjxBY3Rpb241LCBpbnRl
cm5hbDo6RG9Cb3RoQWN0aW9uPEFjdGlvbjYsCisgICAgaW50ZXJuYWw6OkRvQm90aEFjdGlvbjxB
Y3Rpb243LCBpbnRlcm5hbDo6RG9Cb3RoQWN0aW9uPEFjdGlvbjgsCisgICAgaW50ZXJuYWw6OkRv
Qm90aEFjdGlvbjxBY3Rpb245LCBBY3Rpb24xMD4gPiA+ID4gPiA+ID4gPiA+CitEb0FsbChBY3Rp
b24xIGExLCBBY3Rpb24yIGEyLCBBY3Rpb24zIGEzLCBBY3Rpb240IGE0LCBBY3Rpb241IGE1LCBB
Y3Rpb242IGE2LAorICAgIEFjdGlvbjcgYTcsIEFjdGlvbjggYTgsIEFjdGlvbjkgYTksIEFjdGlv
bjEwIGExMCkgeworICByZXR1cm4gRG9BbGwoYTEsIERvQWxsKGEyLCBhMywgYTQsIGE1LCBhNiwg
YTcsIGE4LCBhOSwgYTEwKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCisKKy8vIFRo
ZSBBQ1RJT04qIGZhbWlseSBvZiBtYWNyb3MgY2FuIGJlIHVzZWQgaW4gYSBuYW1lc3BhY2Ugc2Nv
cGUgdG8KKy8vIGRlZmluZSBjdXN0b20gYWN0aW9ucyBlYXNpbHkuICBUaGUgc3ludGF4OgorLy8K
Ky8vICAgQUNUSU9OKG5hbWUpIHsgc3RhdGVtZW50czsgfQorLy8KKy8vIHdpbGwgZGVmaW5lIGFu
IGFjdGlvbiB3aXRoIHRoZSBnaXZlbiBuYW1lIHRoYXQgZXhlY3V0ZXMgdGhlCisvLyBzdGF0ZW1l
bnRzLiAgVGhlIHZhbHVlIHJldHVybmVkIGJ5IHRoZSBzdGF0ZW1lbnRzIHdpbGwgYmUgdXNlZCBh
cworLy8gdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgYWN0aW9uLiAgSW5zaWRlIHRoZSBzdGF0ZW1l
bnRzLCB5b3UgY2FuCisvLyByZWZlciB0byB0aGUgSy10aCAoMC1iYXNlZCkgYXJndW1lbnQgb2Yg
dGhlIG1vY2sgZnVuY3Rpb24gYnkKKy8vICdhcmdLJywgYW5kIHJlZmVyIHRvIGl0cyB0eXBlIGJ5
ICdhcmdLX3R5cGUnLiAgRm9yIGV4YW1wbGU6CisvLworLy8gICBBQ1RJT04oSW5jcmVtZW50QXJn
MSkgeworLy8gICAgIGFyZzFfdHlwZSB0ZW1wID0gYXJnMTsKKy8vICAgICByZXR1cm4gKysoKnRl
bXApOworLy8gICB9CisvLworLy8gYWxsb3dzIHlvdSB0byB3cml0ZQorLy8KKy8vICAgLi4uV2ls
bE9uY2UoSW5jcmVtZW50QXJnMSgpKTsKKy8vCisvLyBZb3UgY2FuIGFsc28gcmVmZXIgdG8gdGhl
IGVudGlyZSBhcmd1bWVudCB0dXBsZSBhbmQgaXRzIHR5cGUgYnkKKy8vICdhcmdzJyBhbmQgJ2Fy
Z3NfdHlwZScsIGFuZCByZWZlciB0byB0aGUgbW9jayBmdW5jdGlvbiB0eXBlIGFuZCBpdHMKKy8v
IHJldHVybiB0eXBlIGJ5ICdmdW5jdGlvbl90eXBlJyBhbmQgJ3JldHVybl90eXBlJy4KKy8vCisv
LyBOb3RlIHRoYXQgeW91IGRvbid0IG5lZWQgdG8gc3BlY2lmeSB0aGUgdHlwZXMgb2YgdGhlIG1v
Y2sgZnVuY3Rpb24KKy8vIGFyZ3VtZW50cy4gIEhvd2V2ZXIgcmVzdCBhc3N1cmVkIHRoYXQgeW91
ciBjb2RlIGlzIHN0aWxsIHR5cGUtc2FmZToKKy8vIHlvdSdsbCBnZXQgYSBjb21waWxlciBlcnJv
ciBpZiAqYXJnMSBkb2Vzbid0IHN1cHBvcnQgdGhlICsrCisvLyBvcGVyYXRvciwgb3IgaWYgdGhl
IHR5cGUgb2YgKysoKmFyZzEpIGlzbid0IGNvbXBhdGlibGUgd2l0aCB0aGUKKy8vIG1vY2sgZnVu
Y3Rpb24ncyByZXR1cm4gdHlwZSwgZm9yIGV4YW1wbGUuCisvLworLy8gU29tZXRpbWVzIHlvdSds
bCB3YW50IHRvIHBhcmFtZXRlcml6ZSB0aGUgYWN0aW9uLiAgIEZvciB0aGF0IHlvdSBjYW4gdXNl
CisvLyBhbm90aGVyIG1hY3JvOgorLy8KKy8vICAgQUNUSU9OX1AobmFtZSwgcGFyYW1fbmFtZSkg
eyBzdGF0ZW1lbnRzOyB9CisvLworLy8gRm9yIGV4YW1wbGU6CisvLworLy8gICBBQ1RJT05fUChB
ZGQsIG4pIHsgcmV0dXJuIGFyZzAgKyBuOyB9CisvLworLy8gd2lsbCBhbGxvdyB5b3UgdG8gd3Jp
dGU6CisvLworLy8gICAuLi5XaWxsT25jZShBZGQoNSkpOworLy8KKy8vIE5vdGUgdGhhdCB5b3Ug
ZG9uJ3QgbmVlZCB0byBwcm92aWRlIHRoZSB0eXBlIG9mIHRoZSBwYXJhbWV0ZXIKKy8vIGVpdGhl
ci4gIElmIHlvdSBuZWVkIHRvIHJlZmVyZW5jZSB0aGUgdHlwZSBvZiBhIHBhcmFtZXRlciBuYW1l
ZAorLy8gJ2ZvbycsIHlvdSBjYW4gd3JpdGUgJ2Zvb190eXBlJy4gIEZvciBleGFtcGxlLCBpbiB0
aGUgYm9keSBvZgorLy8gQUNUSU9OX1AoQWRkLCBuKSBhYm92ZSwgeW91IGNhbiB3cml0ZSAnbl90
eXBlJyB0byByZWZlciB0byB0aGUgdHlwZQorLy8gb2YgJ24nLgorLy8KKy8vIFdlIGFsc28gcHJv
dmlkZSBBQ1RJT05fUDIsIEFDVElPTl9QMywgLi4uLCB1cCB0byBBQ1RJT05fUDEwIHRvIHN1cHBv
cnQKKy8vIG11bHRpLXBhcmFtZXRlciBhY3Rpb25zLgorLy8KKy8vIEZvciB0aGUgcHVycG9zZSBv
ZiB0eXBpbmcsIHlvdSBjYW4gdmlldworLy8KKy8vICAgQUNUSU9OX1BrKEZvbywgcDEsIC4uLiwg
cGspIHsgLi4uIH0KKy8vCisvLyBhcyBzaG9ydGhhbmQgZm9yCisvLworLy8gICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgcDFfdHlwZSwgLi4uLCB0eXBlbmFtZSBwa190eXBlPgorLy8gICBGb29BY3Rpb25Q
azxwMV90eXBlLCAuLi4sIHBrX3R5cGU+IEZvbyhwMV90eXBlIHAxLCAuLi4sIHBrX3R5cGUgcGsp
IHsgLi4uIH0KKy8vCisvLyBJbiBwYXJ0aWN1bGFyLCB5b3UgY2FuIHByb3ZpZGUgdGhlIHRlbXBs
YXRlIHR5cGUgYXJndW1lbnRzCisvLyBleHBsaWNpdGx5IHdoZW4gaW52b2tpbmcgRm9vKCksIGFz
IGluIEZvbzxsb25nLCBib29sPig1LCBmYWxzZSk7CisvLyBhbHRob3VnaCB1c3VhbGx5IHlvdSBj
YW4gcmVseSBvbiB0aGUgY29tcGlsZXIgdG8gaW5mZXIgdGhlIHR5cGVzCisvLyBmb3IgeW91IGF1
dG9tYXRpY2FsbHkuICBZb3UgY2FuIGFzc2lnbiB0aGUgcmVzdWx0IG9mIGV4cHJlc3Npb24KKy8v
IEZvbyhwMSwgLi4uLCBwaykgdG8gYSB2YXJpYWJsZSBvZiB0eXBlIEZvb0FjdGlvblBrPHAxX3R5
cGUsIC4uLiwKKy8vIHBrX3R5cGU+LiAgVGhpcyBjYW4gYmUgdXNlZnVsIHdoZW4gY29tcG9zaW5n
IGFjdGlvbnMuCisvLworLy8gWW91IGNhbiBhbHNvIG92ZXJsb2FkIGFjdGlvbnMgd2l0aCBkaWZm
ZXJlbnQgbnVtYmVycyBvZiBwYXJhbWV0ZXJzOgorLy8KKy8vICAgQUNUSU9OX1AoUGx1cywgYSkg
eyAuLi4gfQorLy8gICBBQ1RJT05fUDIoUGx1cywgYSwgYikgeyAuLi4gfQorLy8KKy8vIFdoaWxl
IGl0J3MgdGVtcHRpbmcgdG8gYWx3YXlzIHVzZSB0aGUgQUNUSU9OKiBtYWNyb3Mgd2hlbiBkZWZp
bmluZworLy8gYSBuZXcgYWN0aW9uLCB5b3Ugc2hvdWxkIGFsc28gY29uc2lkZXIgaW1wbGVtZW50
aW5nIEFjdGlvbkludGVyZmFjZQorLy8gb3IgdXNpbmcgTWFrZVBvbHltb3JwaGljQWN0aW9uKCkg
aW5zdGVhZCwgZXNwZWNpYWxseSBpZiB5b3UgbmVlZCB0bworLy8gdXNlIHRoZSBhY3Rpb24gYSBs
b3QuICBXaGlsZSB0aGVzZSBhcHByb2FjaGVzIHJlcXVpcmUgbW9yZSB3b3JrLAorLy8gdGhleSBn
aXZlIHlvdSBtb3JlIGNvbnRyb2wgb24gdGhlIHR5cGVzIG9mIHRoZSBtb2NrIGZ1bmN0aW9uCisv
LyBhcmd1bWVudHMgYW5kIHRoZSBhY3Rpb24gcGFyYW1ldGVycywgd2hpY2ggaW4gZ2VuZXJhbCBs
ZWFkcyB0bworLy8gYmV0dGVyIGNvbXBpbGVyIGVycm9yIG1lc3NhZ2VzIHRoYXQgcGF5IG9mZiBp
biB0aGUgbG9uZyBydW4uICBUaGV5CisvLyBhbHNvIGFsbG93IG92ZXJsb2FkaW5nIGFjdGlvbnMg
YmFzZWQgb24gcGFyYW1ldGVyIHR5cGVzIChhcyBvcHBvc2VkCisvLyB0byBqdXN0IGJhc2VkIG9u
IHRoZSBudW1iZXIgb2YgcGFyYW1ldGVycykuCisvLworLy8gQ0FWRUFUOgorLy8KKy8vIEFDVElP
TiooKSBjYW4gb25seSBiZSB1c2VkIGluIGEgbmFtZXNwYWNlIHNjb3BlLiAgVGhlIHJlYXNvbiBp
cworLy8gdGhhdCBDKysgZG9lc24ndCB5ZXQgYWxsb3cgZnVuY3Rpb24tbG9jYWwgdHlwZXMgdG8g
YmUgdXNlZCB0bworLy8gaW5zdGFudGlhdGUgdGVtcGxhdGVzLiAgVGhlIHVwLWNvbWluZyBDKysw
eCBzdGFuZGFyZCB3aWxsIGZpeCB0aGlzLgorLy8gT25jZSB0aGF0J3MgZG9uZSwgd2UnbGwgY29u
c2lkZXIgc3VwcG9ydGluZyB1c2luZyBBQ1RJT04qKCkgaW5zaWRlCisvLyBhIGZ1bmN0aW9uLgor
Ly8KKy8vIE1PUkUgSU5GT1JNQVRJT046CisvLworLy8gVG8gbGVhcm4gbW9yZSBhYm91dCB1c2lu
ZyB0aGVzZSBtYWNyb3MsIHBsZWFzZSBzZWFyY2ggZm9yICdBQ1RJT04nCisvLyBvbiBodHRwOi8v
Y29kZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9jay93aWtpL0Nvb2tCb29rLgorCisvLyBBbiBpbnRl
cm5hbCBtYWNybyBuZWVkZWQgZm9yIGltcGxlbWVudGluZyBBQ1RJT04qKCkuCisjZGVmaW5lIEdN
T0NLX0FDVElPTl9BUkdfVFlQRVNfQU5EX05BTUVTX1VOVVNFRF9cCisgICAgY29uc3QgYXJnc190
eXBlJiBhcmdzIEdURVNUX0FUVFJJQlVURV9VTlVTRURfLCBcCisgICAgYXJnMF90eXBlIGFyZzAg
R1RFU1RfQVRUUklCVVRFX1VOVVNFRF8sIFwKKyAgICBhcmcxX3R5cGUgYXJnMSBHVEVTVF9BVFRS
SUJVVEVfVU5VU0VEXywgXAorICAgIGFyZzJfdHlwZSBhcmcyIEdURVNUX0FUVFJJQlVURV9VTlVT
RURfLCBcCisgICAgYXJnM190eXBlIGFyZzMgR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8sIFwKKyAg
ICBhcmc0X3R5cGUgYXJnNCBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXywgXAorICAgIGFyZzVfdHlw
ZSBhcmc1IEdURVNUX0FUVFJJQlVURV9VTlVTRURfLCBcCisgICAgYXJnNl90eXBlIGFyZzYgR1RF
U1RfQVRUUklCVVRFX1VOVVNFRF8sIFwKKyAgICBhcmc3X3R5cGUgYXJnNyBHVEVTVF9BVFRSSUJV
VEVfVU5VU0VEXywgXAorICAgIGFyZzhfdHlwZSBhcmc4IEdURVNUX0FUVFJJQlVURV9VTlVTRURf
LCBcCisgICAgYXJnOV90eXBlIGFyZzkgR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8KKworLy8gU29t
ZXRpbWVzIHlvdSB3YW50IHRvIGdpdmUgYW4gYWN0aW9uIGV4cGxpY2l0IHRlbXBsYXRlIHBhcmFt
ZXRlcnMKKy8vIHRoYXQgY2Fubm90IGJlIGluZmVycmVkIGZyb20gaXRzIHZhbHVlIHBhcmFtZXRl
cnMuICBBQ1RJT04oKSBhbmQKKy8vIEFDVElPTl9QKigpIGRvbid0IHN1cHBvcnQgdGhhdC4gIEFD
VElPTl9URU1QTEFURSgpIHJlbWVkaWVzIHRoYXQKKy8vIGFuZCBjYW4gYmUgdmlld2VkIGFzIGFu
IGV4dGVuc2lvbiB0byBBQ1RJT04oKSBhbmQgQUNUSU9OX1AqKCkuCisvLworLy8gVGhlIHN5bnRh
eDoKKy8vCisvLyAgIEFDVElPTl9URU1QTEFURShBY3Rpb25OYW1lLAorLy8gICAgICAgICAgICAg
ICAgICAgSEFTX21fVEVNUExBVEVfUEFSQU1TKGtpbmQxLCBuYW1lMSwgLi4uLCBraW5kX20sIG5h
bWVfbSksCisvLyAgICAgICAgICAgICAgICAgICBBTkRfbl9WQUxVRV9QQVJBTVMocDEsIC4uLiwg
cF9uKSkgeyBzdGF0ZW1lbnRzOyB9CisvLworLy8gZGVmaW5lcyBhbiBhY3Rpb24gdGVtcGxhdGUg
dGhhdCB0YWtlcyBtIGV4cGxpY2l0IHRlbXBsYXRlCisvLyBwYXJhbWV0ZXJzIGFuZCBuIHZhbHVl
IHBhcmFtZXRlcnMuICBuYW1lX2kgaXMgdGhlIG5hbWUgb2YgdGhlIGktdGgKKy8vIHRlbXBsYXRl
IHBhcmFtZXRlciwgYW5kIGtpbmRfaSBzcGVjaWZpZXMgd2hldGhlciBpdCdzIGEgdHlwZW5hbWUs
CisvLyBhbiBpbnRlZ3JhbCBjb25zdGFudCwgb3IgYSB0ZW1wbGF0ZS4gIHBfaSBpcyB0aGUgbmFt
ZSBvZiB0aGUgaS10aAorLy8gdmFsdWUgcGFyYW1ldGVyLgorLy8KKy8vIEV4YW1wbGU6CisvLwor
Ly8gICAvLyBEdXBsaWNhdGVBcmc8aywgVD4ob3V0cHV0KSBjb252ZXJ0cyB0aGUgay10aCBhcmd1
bWVudCBvZiB0aGUgbW9jaworLy8gICAvLyBmdW5jdGlvbiB0byB0eXBlIFQgYW5kIGNvcGllcyBp
dCB0byAqb3V0cHV0LgorLy8gICBBQ1RJT05fVEVNUExBVEUoRHVwbGljYXRlQXJnLAorLy8gICAg
ICAgICAgICAgICAgICAgSEFTXzJfVEVNUExBVEVfUEFSQU1TKGludCwgaywgdHlwZW5hbWUsIFQp
LAorLy8gICAgICAgICAgICAgICAgICAgQU5EXzFfVkFMVUVfUEFSQU1TKG91dHB1dCkpIHsKKy8v
ICAgICAqb3V0cHV0ID0gVCg6OnRlc3Rpbmc6OmdldDxrPihhcmdzKSk7CisvLyAgIH0KKy8vICAg
Li4uCisvLyAgICAgaW50IG47CisvLyAgICAgRVhQRUNUX0NBTEwobW9jaywgRm9vKF8sIF8pKQor
Ly8gICAgICAgICAuV2lsbE9uY2UoRHVwbGljYXRlQXJnPDEsIHVuc2lnbmVkIGNoYXI+KCZuKSk7
CisvLworLy8gVG8gY3JlYXRlIGFuIGluc3RhbmNlIG9mIGFuIGFjdGlvbiB0ZW1wbGF0ZSwgd3Jp
dGU6CisvLworLy8gICBBY3Rpb25OYW1lPHQxLCAuLi4sIHRfbT4odjEsIC4uLiwgdl9uKQorLy8K
Ky8vIHdoZXJlIHRoZSB0cyBhcmUgdGhlIHRlbXBsYXRlIGFyZ3VtZW50cyBhbmQgdGhlIHZzIGFy
ZSB0aGUgdmFsdWUKKy8vIGFyZ3VtZW50cy4gIFRoZSB2YWx1ZSBhcmd1bWVudCB0eXBlcyBhcmUg
aW5mZXJyZWQgYnkgdGhlIGNvbXBpbGVyLgorLy8gSWYgeW91IHdhbnQgdG8gZXhwbGljaXRseSBz
cGVjaWZ5IHRoZSB2YWx1ZSBhcmd1bWVudCB0eXBlcywgeW91IGNhbgorLy8gcHJvdmlkZSBhZGRp
dGlvbmFsIHRlbXBsYXRlIGFyZ3VtZW50czoKKy8vCisvLyAgIEFjdGlvbk5hbWU8dDEsIC4uLiwg
dF9tLCB1MSwgLi4uLCB1X2s+KHYxLCAuLi4sIHZfbikKKy8vCisvLyB3aGVyZSB1X2kgaXMgdGhl
IGRlc2lyZWQgdHlwZSBvZiB2X2kuCisvLworLy8gQUNUSU9OX1RFTVBMQVRFIGFuZCBBQ1RJT04v
QUNUSU9OX1AqIGNhbiBiZSBvdmVybG9hZGVkIG9uIHRoZQorLy8gbnVtYmVyIG9mIHZhbHVlIHBh
cmFtZXRlcnMsIGJ1dCBub3Qgb24gdGhlIG51bWJlciBvZiB0ZW1wbGF0ZQorLy8gcGFyYW1ldGVy
cy4gIFdpdGhvdXQgdGhlIHJlc3RyaWN0aW9uLCB0aGUgbWVhbmluZyBvZiB0aGUgZm9sbG93aW5n
CisvLyBpcyB1bmNsZWFyOgorLy8KKy8vICAgT3ZlcmxvYWRlZEFjdGlvbjxpbnQsIGJvb2w+KHgp
OworLy8KKy8vIEFyZSB3ZSB1c2luZyBhIHNpbmdsZS10ZW1wbGF0ZS1wYXJhbWV0ZXIgYWN0aW9u
IHdoZXJlICdib29sJyByZWZlcnMKKy8vIHRvIHRoZSB0eXBlIG9mIHgsIG9yIGFyZSB3ZSB1c2lu
ZyBhIHR3by10ZW1wbGF0ZS1wYXJhbWV0ZXIgYWN0aW9uCisvLyB3aGVyZSB0aGUgY29tcGlsZXIg
aXMgYXNrZWQgdG8gaW5mZXIgdGhlIHR5cGUgb2YgeD8KKy8vCisvLyBJbXBsZW1lbnRhdGlvbiBu
b3RlczoKKy8vCisvLyBHTU9DS19JTlRFUk5BTF8qX0hBU19tX1RFTVBMQVRFX1BBUkFNUyBhbmQK
Ky8vIEdNT0NLX0lOVEVSTkFMXypfQU5EX25fVkFMVUVfUEFSQU1TIGFyZSBpbnRlcm5hbCBtYWNy
b3MgZm9yCisvLyBpbXBsZW1lbnRpbmcgQUNUSU9OX1RFTVBMQVRFLiAgVGhlIG1haW4gdHJpY2sg
d2UgdXNlIGlzIHRvIGNyZWF0ZQorLy8gbmV3IG1hY3JvIGludm9jYXRpb25zIHdoZW4gZXhwYW5k
aW5nIGEgbWFjcm8uICBGb3IgZXhhbXBsZSwgd2UgaGF2ZQorLy8KKy8vICAgI2RlZmluZSBBQ1RJ
T05fVEVNUExBVEUobmFtZSwgdGVtcGxhdGVfcGFyYW1zLCB2YWx1ZV9wYXJhbXMpCisvLyAgICAg
ICAuLi4gR01PQ0tfSU5URVJOQUxfREVDTF8jI3RlbXBsYXRlX3BhcmFtcyAuLi4KKy8vCisvLyB3
aGljaCBjYXVzZXMgQUNUSU9OX1RFTVBMQVRFKC4uLiwgSEFTXzFfVEVNUExBVEVfUEFSQU1TKHR5
cGVuYW1lLCBUKSwgLi4uKQorLy8gdG8gZXhwYW5kIHRvCisvLworLy8gICAgICAgLi4uIEdNT0NL
X0lOVEVSTkFMX0RFQ0xfSEFTXzFfVEVNUExBVEVfUEFSQU1TKHR5cGVuYW1lLCBUKSAuLi4KKy8v
CisvLyBTaW5jZSBHTU9DS19JTlRFUk5BTF9ERUNMX0hBU18xX1RFTVBMQVRFX1BBUkFNUyBpcyBh
IG1hY3JvLCB0aGUKKy8vIHByZXByb2Nlc3NvciB3aWxsIGNvbnRpbnVlIHRvIGV4cGFuZCBpdCB0
bworLy8KKy8vICAgICAgIC4uLiB0eXBlbmFtZSBUIC4uLgorLy8KKy8vIFRoaXMgdGVjaG5pcXVl
IGNvbmZvcm1zIHRvIHRoZSBDKysgc3RhbmRhcmQgYW5kIGlzIHBvcnRhYmxlLiAgSXQKKy8vIGFs
bG93cyB1cyB0byBpbXBsZW1lbnQgYWN0aW9uIHRlbXBsYXRlcyB1c2luZyBPKE4pIGNvZGUsIHdo
ZXJlIE4gaXMKKy8vIHRoZSBtYXhpbXVtIG51bWJlciBvZiB0ZW1wbGF0ZS92YWx1ZSBwYXJhbWV0
ZXJzIHN1cHBvcnRlZC4gIFdpdGhvdXQKKy8vIHVzaW5nIGl0LCB3ZSdkIGhhdmUgdG8gZGV2b3Rl
IE8oTl4yKSBhbW91bnQgb2YgY29kZSB0byBpbXBsZW1lbnQgYWxsCisvLyBjb21iaW5hdGlvbnMg
b2YgbSBhbmQgbi4KKworLy8gRGVjbGFyZXMgdGhlIHRlbXBsYXRlIHBhcmFtZXRlcnMuCisjZGVm
aW5lIEdNT0NLX0lOVEVSTkFMX0RFQ0xfSEFTXzFfVEVNUExBVEVfUEFSQU1TKGtpbmQwLCBuYW1l
MCkga2luZDAgbmFtZTAKKyNkZWZpbmUgR01PQ0tfSU5URVJOQUxfREVDTF9IQVNfMl9URU1QTEFU
RV9QQVJBTVMoa2luZDAsIG5hbWUwLCBraW5kMSwgXAorICAgIG5hbWUxKSBraW5kMCBuYW1lMCwg
a2luZDEgbmFtZTEKKyNkZWZpbmUgR01PQ0tfSU5URVJOQUxfREVDTF9IQVNfM19URU1QTEFURV9Q
QVJBTVMoa2luZDAsIG5hbWUwLCBraW5kMSwgbmFtZTEsIFwKKyAgICBraW5kMiwgbmFtZTIpIGtp
bmQwIG5hbWUwLCBraW5kMSBuYW1lMSwga2luZDIgbmFtZTIKKyNkZWZpbmUgR01PQ0tfSU5URVJO
QUxfREVDTF9IQVNfNF9URU1QTEFURV9QQVJBTVMoa2luZDAsIG5hbWUwLCBraW5kMSwgbmFtZTEs
IFwKKyAgICBraW5kMiwgbmFtZTIsIGtpbmQzLCBuYW1lMykga2luZDAgbmFtZTAsIGtpbmQxIG5h
bWUxLCBraW5kMiBuYW1lMiwgXAorICAgIGtpbmQzIG5hbWUzCisjZGVmaW5lIEdNT0NLX0lOVEVS
TkFMX0RFQ0xfSEFTXzVfVEVNUExBVEVfUEFSQU1TKGtpbmQwLCBuYW1lMCwga2luZDEsIG5hbWUx
LCBcCisgICAga2luZDIsIG5hbWUyLCBraW5kMywgbmFtZTMsIGtpbmQ0LCBuYW1lNCkga2luZDAg
bmFtZTAsIGtpbmQxIG5hbWUxLCBcCisgICAga2luZDIgbmFtZTIsIGtpbmQzIG5hbWUzLCBraW5k
NCBuYW1lNAorI2RlZmluZSBHTU9DS19JTlRFUk5BTF9ERUNMX0hBU182X1RFTVBMQVRFX1BBUkFN
UyhraW5kMCwgbmFtZTAsIGtpbmQxLCBuYW1lMSwgXAorICAgIGtpbmQyLCBuYW1lMiwga2luZDMs
IG5hbWUzLCBraW5kNCwgbmFtZTQsIGtpbmQ1LCBuYW1lNSkga2luZDAgbmFtZTAsIFwKKyAgICBr
aW5kMSBuYW1lMSwga2luZDIgbmFtZTIsIGtpbmQzIG5hbWUzLCBraW5kNCBuYW1lNCwga2luZDUg
bmFtZTUKKyNkZWZpbmUgR01PQ0tfSU5URVJOQUxfREVDTF9IQVNfN19URU1QTEFURV9QQVJBTVMo
a2luZDAsIG5hbWUwLCBraW5kMSwgbmFtZTEsIFwKKyAgICBraW5kMiwgbmFtZTIsIGtpbmQzLCBu
YW1lMywga2luZDQsIG5hbWU0LCBraW5kNSwgbmFtZTUsIGtpbmQ2LCBcCisgICAgbmFtZTYpIGtp
bmQwIG5hbWUwLCBraW5kMSBuYW1lMSwga2luZDIgbmFtZTIsIGtpbmQzIG5hbWUzLCBraW5kNCBu
YW1lNCwgXAorICAgIGtpbmQ1IG5hbWU1LCBraW5kNiBuYW1lNgorI2RlZmluZSBHTU9DS19JTlRF
Uk5BTF9ERUNMX0hBU184X1RFTVBMQVRFX1BBUkFNUyhraW5kMCwgbmFtZTAsIGtpbmQxLCBuYW1l
MSwgXAorICAgIGtpbmQyLCBuYW1lMiwga2luZDMsIG5hbWUzLCBraW5kNCwgbmFtZTQsIGtpbmQ1
LCBuYW1lNSwga2luZDYsIG5hbWU2LCBcCisgICAga2luZDcsIG5hbWU3KSBraW5kMCBuYW1lMCwg
a2luZDEgbmFtZTEsIGtpbmQyIG5hbWUyLCBraW5kMyBuYW1lMywgXAorICAgIGtpbmQ0IG5hbWU0
LCBraW5kNSBuYW1lNSwga2luZDYgbmFtZTYsIGtpbmQ3IG5hbWU3CisjZGVmaW5lIEdNT0NLX0lO
VEVSTkFMX0RFQ0xfSEFTXzlfVEVNUExBVEVfUEFSQU1TKGtpbmQwLCBuYW1lMCwga2luZDEsIG5h
bWUxLCBcCisgICAga2luZDIsIG5hbWUyLCBraW5kMywgbmFtZTMsIGtpbmQ0LCBuYW1lNCwga2lu
ZDUsIG5hbWU1LCBraW5kNiwgbmFtZTYsIFwKKyAgICBraW5kNywgbmFtZTcsIGtpbmQ4LCBuYW1l
OCkga2luZDAgbmFtZTAsIGtpbmQxIG5hbWUxLCBraW5kMiBuYW1lMiwgXAorICAgIGtpbmQzIG5h
bWUzLCBraW5kNCBuYW1lNCwga2luZDUgbmFtZTUsIGtpbmQ2IG5hbWU2LCBraW5kNyBuYW1lNywg
XAorICAgIGtpbmQ4IG5hbWU4CisjZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0RFQ0xfSEFTXzEwX1RF
TVBMQVRFX1BBUkFNUyhraW5kMCwgbmFtZTAsIGtpbmQxLCBcCisgICAgbmFtZTEsIGtpbmQyLCBu
YW1lMiwga2luZDMsIG5hbWUzLCBraW5kNCwgbmFtZTQsIGtpbmQ1LCBuYW1lNSwga2luZDYsIFwK
KyAgICBuYW1lNiwga2luZDcsIG5hbWU3LCBraW5kOCwgbmFtZTgsIGtpbmQ5LCBuYW1lOSkga2lu
ZDAgbmFtZTAsIFwKKyAgICBraW5kMSBuYW1lMSwga2luZDIgbmFtZTIsIGtpbmQzIG5hbWUzLCBr
aW5kNCBuYW1lNCwga2luZDUgbmFtZTUsIFwKKyAgICBraW5kNiBuYW1lNiwga2luZDcgbmFtZTcs
IGtpbmQ4IG5hbWU4LCBraW5kOSBuYW1lOQorCisvLyBMaXN0cyB0aGUgdGVtcGxhdGUgcGFyYW1l
dGVycy4KKyNkZWZpbmUgR01PQ0tfSU5URVJOQUxfTElTVF9IQVNfMV9URU1QTEFURV9QQVJBTVMo
a2luZDAsIG5hbWUwKSBuYW1lMAorI2RlZmluZSBHTU9DS19JTlRFUk5BTF9MSVNUX0hBU18yX1RF
TVBMQVRFX1BBUkFNUyhraW5kMCwgbmFtZTAsIGtpbmQxLCBcCisgICAgbmFtZTEpIG5hbWUwLCBu
YW1lMQorI2RlZmluZSBHTU9DS19JTlRFUk5BTF9MSVNUX0hBU18zX1RFTVBMQVRFX1BBUkFNUyhr
aW5kMCwgbmFtZTAsIGtpbmQxLCBuYW1lMSwgXAorICAgIGtpbmQyLCBuYW1lMikgbmFtZTAsIG5h
bWUxLCBuYW1lMgorI2RlZmluZSBHTU9DS19JTlRFUk5BTF9MSVNUX0hBU180X1RFTVBMQVRFX1BB
UkFNUyhraW5kMCwgbmFtZTAsIGtpbmQxLCBuYW1lMSwgXAorICAgIGtpbmQyLCBuYW1lMiwga2lu
ZDMsIG5hbWUzKSBuYW1lMCwgbmFtZTEsIG5hbWUyLCBuYW1lMworI2RlZmluZSBHTU9DS19JTlRF
Uk5BTF9MSVNUX0hBU181X1RFTVBMQVRFX1BBUkFNUyhraW5kMCwgbmFtZTAsIGtpbmQxLCBuYW1l
MSwgXAorICAgIGtpbmQyLCBuYW1lMiwga2luZDMsIG5hbWUzLCBraW5kNCwgbmFtZTQpIG5hbWUw
LCBuYW1lMSwgbmFtZTIsIG5hbWUzLCBcCisgICAgbmFtZTQKKyNkZWZpbmUgR01PQ0tfSU5URVJO
QUxfTElTVF9IQVNfNl9URU1QTEFURV9QQVJBTVMoa2luZDAsIG5hbWUwLCBraW5kMSwgbmFtZTEs
IFwKKyAgICBraW5kMiwgbmFtZTIsIGtpbmQzLCBuYW1lMywga2luZDQsIG5hbWU0LCBraW5kNSwg
bmFtZTUpIG5hbWUwLCBuYW1lMSwgXAorICAgIG5hbWUyLCBuYW1lMywgbmFtZTQsIG5hbWU1Cisj
ZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0xJU1RfSEFTXzdfVEVNUExBVEVfUEFSQU1TKGtpbmQwLCBu
YW1lMCwga2luZDEsIG5hbWUxLCBcCisgICAga2luZDIsIG5hbWUyLCBraW5kMywgbmFtZTMsIGtp
bmQ0LCBuYW1lNCwga2luZDUsIG5hbWU1LCBraW5kNiwgXAorICAgIG5hbWU2KSBuYW1lMCwgbmFt
ZTEsIG5hbWUyLCBuYW1lMywgbmFtZTQsIG5hbWU1LCBuYW1lNgorI2RlZmluZSBHTU9DS19JTlRF
Uk5BTF9MSVNUX0hBU184X1RFTVBMQVRFX1BBUkFNUyhraW5kMCwgbmFtZTAsIGtpbmQxLCBuYW1l
MSwgXAorICAgIGtpbmQyLCBuYW1lMiwga2luZDMsIG5hbWUzLCBraW5kNCwgbmFtZTQsIGtpbmQ1
LCBuYW1lNSwga2luZDYsIG5hbWU2LCBcCisgICAga2luZDcsIG5hbWU3KSBuYW1lMCwgbmFtZTEs
IG5hbWUyLCBuYW1lMywgbmFtZTQsIG5hbWU1LCBuYW1lNiwgbmFtZTcKKyNkZWZpbmUgR01PQ0tf
SU5URVJOQUxfTElTVF9IQVNfOV9URU1QTEFURV9QQVJBTVMoa2luZDAsIG5hbWUwLCBraW5kMSwg
bmFtZTEsIFwKKyAgICBraW5kMiwgbmFtZTIsIGtpbmQzLCBuYW1lMywga2luZDQsIG5hbWU0LCBr
aW5kNSwgbmFtZTUsIGtpbmQ2LCBuYW1lNiwgXAorICAgIGtpbmQ3LCBuYW1lNywga2luZDgsIG5h
bWU4KSBuYW1lMCwgbmFtZTEsIG5hbWUyLCBuYW1lMywgbmFtZTQsIG5hbWU1LCBcCisgICAgbmFt
ZTYsIG5hbWU3LCBuYW1lOAorI2RlZmluZSBHTU9DS19JTlRFUk5BTF9MSVNUX0hBU18xMF9URU1Q
TEFURV9QQVJBTVMoa2luZDAsIG5hbWUwLCBraW5kMSwgXAorICAgIG5hbWUxLCBraW5kMiwgbmFt
ZTIsIGtpbmQzLCBuYW1lMywga2luZDQsIG5hbWU0LCBraW5kNSwgbmFtZTUsIGtpbmQ2LCBcCisg
ICAgbmFtZTYsIGtpbmQ3LCBuYW1lNywga2luZDgsIG5hbWU4LCBraW5kOSwgbmFtZTkpIG5hbWUw
LCBuYW1lMSwgbmFtZTIsIFwKKyAgICBuYW1lMywgbmFtZTQsIG5hbWU1LCBuYW1lNiwgbmFtZTcs
IG5hbWU4LCBuYW1lOQorCisvLyBEZWNsYXJlcyB0aGUgdHlwZXMgb2YgdmFsdWUgcGFyYW1ldGVy
cy4KKyNkZWZpbmUgR01PQ0tfSU5URVJOQUxfREVDTF9UWVBFX0FORF8wX1ZBTFVFX1BBUkFNUygp
CisjZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0RFQ0xfVFlQRV9BTkRfMV9WQUxVRV9QQVJBTVMocDAp
ICwgdHlwZW5hbWUgcDAjI190eXBlCisjZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0RFQ0xfVFlQRV9B
TkRfMl9WQUxVRV9QQVJBTVMocDAsIHAxKSAsIFwKKyAgICB0eXBlbmFtZSBwMCMjX3R5cGUsIHR5
cGVuYW1lIHAxIyNfdHlwZQorI2RlZmluZSBHTU9DS19JTlRFUk5BTF9ERUNMX1RZUEVfQU5EXzNf
VkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIpICwgXAorICAgIHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlw
ZW5hbWUgcDEjI190eXBlLCB0eXBlbmFtZSBwMiMjX3R5cGUKKyNkZWZpbmUgR01PQ0tfSU5URVJO
QUxfREVDTF9UWVBFX0FORF80X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBwMykgLCBcCisgICAg
dHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMjX3R5cGUsIHR5cGVuYW1lIHAyIyNfdHlw
ZSwgXAorICAgIHR5cGVuYW1lIHAzIyNfdHlwZQorI2RlZmluZSBHTU9DS19JTlRFUk5BTF9ERUNM
X1RZUEVfQU5EXzVfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAzLCBwNCkgLCBcCisgICAgdHlw
ZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMjX3R5cGUsIHR5cGVuYW1lIHAyIyNfdHlwZSwg
XAorICAgIHR5cGVuYW1lIHAzIyNfdHlwZSwgdHlwZW5hbWUgcDQjI190eXBlCisjZGVmaW5lIEdN
T0NLX0lOVEVSTkFMX0RFQ0xfVFlQRV9BTkRfNl9WQUxVRV9QQVJBTVMocDAsIHAxLCBwMiwgcDMs
IHA0LCBwNSkgLCBcCisgICAgdHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMjX3R5cGUs
IHR5cGVuYW1lIHAyIyNfdHlwZSwgXAorICAgIHR5cGVuYW1lIHAzIyNfdHlwZSwgdHlwZW5hbWUg
cDQjI190eXBlLCB0eXBlbmFtZSBwNSMjX3R5cGUKKyNkZWZpbmUgR01PQ0tfSU5URVJOQUxfREVD
TF9UWVBFX0FORF83X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBcCisgICAg
cDYpICwgdHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMjX3R5cGUsIHR5cGVuYW1lIHAy
IyNfdHlwZSwgXAorICAgIHR5cGVuYW1lIHAzIyNfdHlwZSwgdHlwZW5hbWUgcDQjI190eXBlLCB0
eXBlbmFtZSBwNSMjX3R5cGUsIFwKKyAgICB0eXBlbmFtZSBwNiMjX3R5cGUKKyNkZWZpbmUgR01P
Q0tfSU5URVJOQUxfREVDTF9UWVBFX0FORF84X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBwMywg
cDQsIHA1LCBcCisgICAgcDYsIHA3KSAsIHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlwZW5hbWUgcDEj
I190eXBlLCB0eXBlbmFtZSBwMiMjX3R5cGUsIFwKKyAgICB0eXBlbmFtZSBwMyMjX3R5cGUsIHR5
cGVuYW1lIHA0IyNfdHlwZSwgdHlwZW5hbWUgcDUjI190eXBlLCBcCisgICAgdHlwZW5hbWUgcDYj
I190eXBlLCB0eXBlbmFtZSBwNyMjX3R5cGUKKyNkZWZpbmUgR01PQ0tfSU5URVJOQUxfREVDTF9U
WVBFX0FORF85X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBcCisgICAgcDYs
IHA3LCBwOCkgLCB0eXBlbmFtZSBwMCMjX3R5cGUsIHR5cGVuYW1lIHAxIyNfdHlwZSwgdHlwZW5h
bWUgcDIjI190eXBlLCBcCisgICAgdHlwZW5hbWUgcDMjI190eXBlLCB0eXBlbmFtZSBwNCMjX3R5
cGUsIHR5cGVuYW1lIHA1IyNfdHlwZSwgXAorICAgIHR5cGVuYW1lIHA2IyNfdHlwZSwgdHlwZW5h
bWUgcDcjI190eXBlLCB0eXBlbmFtZSBwOCMjX3R5cGUKKyNkZWZpbmUgR01PQ0tfSU5URVJOQUxf
REVDTF9UWVBFX0FORF8xMF9WQUxVRV9QQVJBTVMocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgXAor
ICAgIHA2LCBwNywgcDgsIHA5KSAsIHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlwZW5hbWUgcDEjI190
eXBlLCBcCisgICAgdHlwZW5hbWUgcDIjI190eXBlLCB0eXBlbmFtZSBwMyMjX3R5cGUsIHR5cGVu
YW1lIHA0IyNfdHlwZSwgXAorICAgIHR5cGVuYW1lIHA1IyNfdHlwZSwgdHlwZW5hbWUgcDYjI190
eXBlLCB0eXBlbmFtZSBwNyMjX3R5cGUsIFwKKyAgICB0eXBlbmFtZSBwOCMjX3R5cGUsIHR5cGVu
YW1lIHA5IyNfdHlwZQorCisvLyBJbml0aWFsaXplcyB0aGUgdmFsdWUgcGFyYW1ldGVycy4KKyNk
ZWZpbmUgR01PQ0tfSU5URVJOQUxfSU5JVF9BTkRfMF9WQUxVRV9QQVJBTVMoKVwKKyAgICAoKQor
I2RlZmluZSBHTU9DS19JTlRFUk5BTF9JTklUX0FORF8xX1ZBTFVFX1BBUkFNUyhwMClcCisgICAg
KHAwIyNfdHlwZSBnbW9ja19wMCkgOiBwMChnbW9ja19wMCkKKyNkZWZpbmUgR01PQ0tfSU5URVJO
QUxfSU5JVF9BTkRfMl9WQUxVRV9QQVJBTVMocDAsIHAxKVwKKyAgICAocDAjI190eXBlIGdtb2Nr
X3AwLCBwMSMjX3R5cGUgZ21vY2tfcDEpIDogcDAoZ21vY2tfcDApLCBwMShnbW9ja19wMSkKKyNk
ZWZpbmUgR01PQ0tfSU5URVJOQUxfSU5JVF9BTkRfM19WQUxVRV9QQVJBTVMocDAsIHAxLCBwMilc
CisgICAgKHAwIyNfdHlwZSBnbW9ja19wMCwgcDEjI190eXBlIGdtb2NrX3AxLCBcCisgICAgICAg
IHAyIyNfdHlwZSBnbW9ja19wMikgOiBwMChnbW9ja19wMCksIHAxKGdtb2NrX3AxKSwgcDIoZ21v
Y2tfcDIpCisjZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0lOSVRfQU5EXzRfVkFMVUVfUEFSQU1TKHAw
LCBwMSwgcDIsIHAzKVwKKyAgICAocDAjI190eXBlIGdtb2NrX3AwLCBwMSMjX3R5cGUgZ21vY2tf
cDEsIHAyIyNfdHlwZSBnbW9ja19wMiwgXAorICAgICAgICBwMyMjX3R5cGUgZ21vY2tfcDMpIDog
cDAoZ21vY2tfcDApLCBwMShnbW9ja19wMSksIHAyKGdtb2NrX3AyKSwgXAorICAgICAgICBwMyhn
bW9ja19wMykKKyNkZWZpbmUgR01PQ0tfSU5URVJOQUxfSU5JVF9BTkRfNV9WQUxVRV9QQVJBTVMo
cDAsIHAxLCBwMiwgcDMsIHA0KVwKKyAgICAocDAjI190eXBlIGdtb2NrX3AwLCBwMSMjX3R5cGUg
Z21vY2tfcDEsIHAyIyNfdHlwZSBnbW9ja19wMiwgXAorICAgICAgICBwMyMjX3R5cGUgZ21vY2tf
cDMsIHA0IyNfdHlwZSBnbW9ja19wNCkgOiBwMChnbW9ja19wMCksIHAxKGdtb2NrX3AxKSwgXAor
ICAgICAgICBwMihnbW9ja19wMiksIHAzKGdtb2NrX3AzKSwgcDQoZ21vY2tfcDQpCisjZGVmaW5l
IEdNT0NLX0lOVEVSTkFMX0lOSVRfQU5EXzZfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAzLCBw
NCwgcDUpXAorICAgIChwMCMjX3R5cGUgZ21vY2tfcDAsIHAxIyNfdHlwZSBnbW9ja19wMSwgcDIj
I190eXBlIGdtb2NrX3AyLCBcCisgICAgICAgIHAzIyNfdHlwZSBnbW9ja19wMywgcDQjI190eXBl
IGdtb2NrX3A0LCBcCisgICAgICAgIHA1IyNfdHlwZSBnbW9ja19wNSkgOiBwMChnbW9ja19wMCks
IHAxKGdtb2NrX3AxKSwgcDIoZ21vY2tfcDIpLCBcCisgICAgICAgIHAzKGdtb2NrX3AzKSwgcDQo
Z21vY2tfcDQpLCBwNShnbW9ja19wNSkKKyNkZWZpbmUgR01PQ0tfSU5URVJOQUxfSU5JVF9BTkRf
N19WQUxVRV9QQVJBTVMocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYpXAorICAgIChwMCMjX3R5
cGUgZ21vY2tfcDAsIHAxIyNfdHlwZSBnbW9ja19wMSwgcDIjI190eXBlIGdtb2NrX3AyLCBcCisg
ICAgICAgIHAzIyNfdHlwZSBnbW9ja19wMywgcDQjI190eXBlIGdtb2NrX3A0LCBwNSMjX3R5cGUg
Z21vY2tfcDUsIFwKKyAgICAgICAgcDYjI190eXBlIGdtb2NrX3A2KSA6IHAwKGdtb2NrX3AwKSwg
cDEoZ21vY2tfcDEpLCBwMihnbW9ja19wMiksIFwKKyAgICAgICAgcDMoZ21vY2tfcDMpLCBwNChn
bW9ja19wNCksIHA1KGdtb2NrX3A1KSwgcDYoZ21vY2tfcDYpCisjZGVmaW5lIEdNT0NLX0lOVEVS
TkFMX0lOSVRfQU5EXzhfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2LCBw
NylcCisgICAgKHAwIyNfdHlwZSBnbW9ja19wMCwgcDEjI190eXBlIGdtb2NrX3AxLCBwMiMjX3R5
cGUgZ21vY2tfcDIsIFwKKyAgICAgICAgcDMjI190eXBlIGdtb2NrX3AzLCBwNCMjX3R5cGUgZ21v
Y2tfcDQsIHA1IyNfdHlwZSBnbW9ja19wNSwgXAorICAgICAgICBwNiMjX3R5cGUgZ21vY2tfcDYs
IHA3IyNfdHlwZSBnbW9ja19wNykgOiBwMChnbW9ja19wMCksIHAxKGdtb2NrX3AxKSwgXAorICAg
ICAgICBwMihnbW9ja19wMiksIHAzKGdtb2NrX3AzKSwgcDQoZ21vY2tfcDQpLCBwNShnbW9ja19w
NSksIHA2KGdtb2NrX3A2KSwgXAorICAgICAgICBwNyhnbW9ja19wNykKKyNkZWZpbmUgR01PQ0tf
SU5URVJOQUxfSU5JVF9BTkRfOV9WQUxVRV9QQVJBTVMocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwg
cDYsIFwKKyAgICBwNywgcDgpXAorICAgIChwMCMjX3R5cGUgZ21vY2tfcDAsIHAxIyNfdHlwZSBn
bW9ja19wMSwgcDIjI190eXBlIGdtb2NrX3AyLCBcCisgICAgICAgIHAzIyNfdHlwZSBnbW9ja19w
MywgcDQjI190eXBlIGdtb2NrX3A0LCBwNSMjX3R5cGUgZ21vY2tfcDUsIFwKKyAgICAgICAgcDYj
I190eXBlIGdtb2NrX3A2LCBwNyMjX3R5cGUgZ21vY2tfcDcsIFwKKyAgICAgICAgcDgjI190eXBl
IGdtb2NrX3A4KSA6IHAwKGdtb2NrX3AwKSwgcDEoZ21vY2tfcDEpLCBwMihnbW9ja19wMiksIFwK
KyAgICAgICAgcDMoZ21vY2tfcDMpLCBwNChnbW9ja19wNCksIHA1KGdtb2NrX3A1KSwgcDYoZ21v
Y2tfcDYpLCBwNyhnbW9ja19wNyksIFwKKyAgICAgICAgcDgoZ21vY2tfcDgpCisjZGVmaW5lIEdN
T0NLX0lOVEVSTkFMX0lOSVRfQU5EXzEwX1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBwMywgcDQs
IHA1LCBwNiwgXAorICAgIHA3LCBwOCwgcDkpXAorICAgIChwMCMjX3R5cGUgZ21vY2tfcDAsIHAx
IyNfdHlwZSBnbW9ja19wMSwgcDIjI190eXBlIGdtb2NrX3AyLCBcCisgICAgICAgIHAzIyNfdHlw
ZSBnbW9ja19wMywgcDQjI190eXBlIGdtb2NrX3A0LCBwNSMjX3R5cGUgZ21vY2tfcDUsIFwKKyAg
ICAgICAgcDYjI190eXBlIGdtb2NrX3A2LCBwNyMjX3R5cGUgZ21vY2tfcDcsIHA4IyNfdHlwZSBn
bW9ja19wOCwgXAorICAgICAgICBwOSMjX3R5cGUgZ21vY2tfcDkpIDogcDAoZ21vY2tfcDApLCBw
MShnbW9ja19wMSksIHAyKGdtb2NrX3AyKSwgXAorICAgICAgICBwMyhnbW9ja19wMyksIHA0KGdt
b2NrX3A0KSwgcDUoZ21vY2tfcDUpLCBwNihnbW9ja19wNiksIHA3KGdtb2NrX3A3KSwgXAorICAg
ICAgICBwOChnbW9ja19wOCksIHA5KGdtb2NrX3A5KQorCisvLyBEZWNsYXJlcyB0aGUgZmllbGRz
IGZvciBzdG9yaW5nIHRoZSB2YWx1ZSBwYXJhbWV0ZXJzLgorI2RlZmluZSBHTU9DS19JTlRFUk5B
TF9ERUZOX0FORF8wX1ZBTFVFX1BBUkFNUygpCisjZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0RFRk5f
QU5EXzFfVkFMVUVfUEFSQU1TKHAwKSBwMCMjX3R5cGUgcDA7CisjZGVmaW5lIEdNT0NLX0lOVEVS
TkFMX0RFRk5fQU5EXzJfVkFMVUVfUEFSQU1TKHAwLCBwMSkgcDAjI190eXBlIHAwOyBcCisgICAg
cDEjI190eXBlIHAxOworI2RlZmluZSBHTU9DS19JTlRFUk5BTF9ERUZOX0FORF8zX1ZBTFVFX1BB
UkFNUyhwMCwgcDEsIHAyKSBwMCMjX3R5cGUgcDA7IFwKKyAgICBwMSMjX3R5cGUgcDE7IHAyIyNf
dHlwZSBwMjsKKyNkZWZpbmUgR01PQ0tfSU5URVJOQUxfREVGTl9BTkRfNF9WQUxVRV9QQVJBTVMo
cDAsIHAxLCBwMiwgcDMpIHAwIyNfdHlwZSBwMDsgXAorICAgIHAxIyNfdHlwZSBwMTsgcDIjI190
eXBlIHAyOyBwMyMjX3R5cGUgcDM7CisjZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0RFRk5fQU5EXzVf
VkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAzLCBcCisgICAgcDQpIHAwIyNfdHlwZSBwMDsgcDEj
I190eXBlIHAxOyBwMiMjX3R5cGUgcDI7IHAzIyNfdHlwZSBwMzsgcDQjI190eXBlIHA0OworI2Rl
ZmluZSBHTU9DS19JTlRFUk5BTF9ERUZOX0FORF82X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBw
MywgcDQsIFwKKyAgICBwNSkgcDAjI190eXBlIHAwOyBwMSMjX3R5cGUgcDE7IHAyIyNfdHlwZSBw
MjsgcDMjI190eXBlIHAzOyBwNCMjX3R5cGUgcDQ7IFwKKyAgICBwNSMjX3R5cGUgcDU7CisjZGVm
aW5lIEdNT0NLX0lOVEVSTkFMX0RFRk5fQU5EXzdfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAz
LCBwNCwgcDUsIFwKKyAgICBwNikgcDAjI190eXBlIHAwOyBwMSMjX3R5cGUgcDE7IHAyIyNfdHlw
ZSBwMjsgcDMjI190eXBlIHAzOyBwNCMjX3R5cGUgcDQ7IFwKKyAgICBwNSMjX3R5cGUgcDU7IHA2
IyNfdHlwZSBwNjsKKyNkZWZpbmUgR01PQ0tfSU5URVJOQUxfREVGTl9BTkRfOF9WQUxVRV9QQVJB
TVMocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYsIFwKKyAgICBwNykgcDAjI190eXBlIHAwOyBw
MSMjX3R5cGUgcDE7IHAyIyNfdHlwZSBwMjsgcDMjI190eXBlIHAzOyBwNCMjX3R5cGUgcDQ7IFwK
KyAgICBwNSMjX3R5cGUgcDU7IHA2IyNfdHlwZSBwNjsgcDcjI190eXBlIHA3OworI2RlZmluZSBH
TU9DS19JTlRFUk5BTF9ERUZOX0FORF85X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBwMywgcDQs
IHA1LCBwNiwgXAorICAgIHA3LCBwOCkgcDAjI190eXBlIHAwOyBwMSMjX3R5cGUgcDE7IHAyIyNf
dHlwZSBwMjsgcDMjI190eXBlIHAzOyBcCisgICAgcDQjI190eXBlIHA0OyBwNSMjX3R5cGUgcDU7
IHA2IyNfdHlwZSBwNjsgcDcjI190eXBlIHA3OyBwOCMjX3R5cGUgcDg7CisjZGVmaW5lIEdNT0NL
X0lOVEVSTkFMX0RFRk5fQU5EXzEwX1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBwMywgcDQsIHA1
LCBwNiwgXAorICAgIHA3LCBwOCwgcDkpIHAwIyNfdHlwZSBwMDsgcDEjI190eXBlIHAxOyBwMiMj
X3R5cGUgcDI7IHAzIyNfdHlwZSBwMzsgXAorICAgIHA0IyNfdHlwZSBwNDsgcDUjI190eXBlIHA1
OyBwNiMjX3R5cGUgcDY7IHA3IyNfdHlwZSBwNzsgcDgjI190eXBlIHA4OyBcCisgICAgcDkjI190
eXBlIHA5OworCisvLyBMaXN0cyB0aGUgdmFsdWUgcGFyYW1ldGVycy4KKyNkZWZpbmUgR01PQ0tf
SU5URVJOQUxfTElTVF9BTkRfMF9WQUxVRV9QQVJBTVMoKQorI2RlZmluZSBHTU9DS19JTlRFUk5B
TF9MSVNUX0FORF8xX1ZBTFVFX1BBUkFNUyhwMCkgcDAKKyNkZWZpbmUgR01PQ0tfSU5URVJOQUxf
TElTVF9BTkRfMl9WQUxVRV9QQVJBTVMocDAsIHAxKSBwMCwgcDEKKyNkZWZpbmUgR01PQ0tfSU5U
RVJOQUxfTElTVF9BTkRfM19WQUxVRV9QQVJBTVMocDAsIHAxLCBwMikgcDAsIHAxLCBwMgorI2Rl
ZmluZSBHTU9DS19JTlRFUk5BTF9MSVNUX0FORF80X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBw
MykgcDAsIHAxLCBwMiwgcDMKKyNkZWZpbmUgR01PQ0tfSU5URVJOQUxfTElTVF9BTkRfNV9WQUxV
RV9QQVJBTVMocDAsIHAxLCBwMiwgcDMsIHA0KSBwMCwgcDEsIFwKKyAgICBwMiwgcDMsIHA0Cisj
ZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0xJU1RfQU5EXzZfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIs
IHAzLCBwNCwgcDUpIHAwLCBcCisgICAgcDEsIHAyLCBwMywgcDQsIHA1CisjZGVmaW5lIEdNT0NL
X0lOVEVSTkFMX0xJU1RfQU5EXzdfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUs
IFwKKyAgICBwNikgcDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYKKyNkZWZpbmUgR01PQ0tfSU5U
RVJOQUxfTElTVF9BTkRfOF9WQUxVRV9QQVJBTVMocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYs
IFwKKyAgICBwNykgcDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYsIHA3CisjZGVmaW5lIEdNT0NL
X0lOVEVSTkFMX0xJU1RfQU5EXzlfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUs
IHA2LCBcCisgICAgcDcsIHA4KSBwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBwNiwgcDcsIHA4Cisj
ZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0xJU1RfQU5EXzEwX1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAy
LCBwMywgcDQsIHA1LCBwNiwgXAorICAgIHA3LCBwOCwgcDkpIHAwLCBwMSwgcDIsIHAzLCBwNCwg
cDUsIHA2LCBwNywgcDgsIHA5CisKKy8vIExpc3RzIHRoZSB2YWx1ZSBwYXJhbWV0ZXIgdHlwZXMu
CisjZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0xJU1RfVFlQRV9BTkRfMF9WQUxVRV9QQVJBTVMoKQor
I2RlZmluZSBHTU9DS19JTlRFUk5BTF9MSVNUX1RZUEVfQU5EXzFfVkFMVUVfUEFSQU1TKHAwKSAs
IHAwIyNfdHlwZQorI2RlZmluZSBHTU9DS19JTlRFUk5BTF9MSVNUX1RZUEVfQU5EXzJfVkFMVUVf
UEFSQU1TKHAwLCBwMSkgLCBwMCMjX3R5cGUsIFwKKyAgICBwMSMjX3R5cGUKKyNkZWZpbmUgR01P
Q0tfSU5URVJOQUxfTElTVF9UWVBFX0FORF8zX1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyKSAsIHAw
IyNfdHlwZSwgXAorICAgIHAxIyNfdHlwZSwgcDIjI190eXBlCisjZGVmaW5lIEdNT0NLX0lOVEVS
TkFMX0xJU1RfVFlQRV9BTkRfNF9WQUxVRV9QQVJBTVMocDAsIHAxLCBwMiwgcDMpICwgXAorICAg
IHAwIyNfdHlwZSwgcDEjI190eXBlLCBwMiMjX3R5cGUsIHAzIyNfdHlwZQorI2RlZmluZSBHTU9D
S19JTlRFUk5BTF9MSVNUX1RZUEVfQU5EXzVfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAzLCBw
NCkgLCBcCisgICAgcDAjI190eXBlLCBwMSMjX3R5cGUsIHAyIyNfdHlwZSwgcDMjI190eXBlLCBw
NCMjX3R5cGUKKyNkZWZpbmUgR01PQ0tfSU5URVJOQUxfTElTVF9UWVBFX0FORF82X1ZBTFVFX1BB
UkFNUyhwMCwgcDEsIHAyLCBwMywgcDQsIHA1KSAsIFwKKyAgICBwMCMjX3R5cGUsIHAxIyNfdHlw
ZSwgcDIjI190eXBlLCBwMyMjX3R5cGUsIHA0IyNfdHlwZSwgcDUjI190eXBlCisjZGVmaW5lIEdN
T0NLX0lOVEVSTkFMX0xJU1RfVFlQRV9BTkRfN19WQUxVRV9QQVJBTVMocDAsIHAxLCBwMiwgcDMs
IHA0LCBwNSwgXAorICAgIHA2KSAsIHAwIyNfdHlwZSwgcDEjI190eXBlLCBwMiMjX3R5cGUsIHAz
IyNfdHlwZSwgcDQjI190eXBlLCBwNSMjX3R5cGUsIFwKKyAgICBwNiMjX3R5cGUKKyNkZWZpbmUg
R01PQ0tfSU5URVJOQUxfTElTVF9UWVBFX0FORF84X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBw
MywgcDQsIHA1LCBcCisgICAgcDYsIHA3KSAsIHAwIyNfdHlwZSwgcDEjI190eXBlLCBwMiMjX3R5
cGUsIHAzIyNfdHlwZSwgcDQjI190eXBlLCBcCisgICAgcDUjI190eXBlLCBwNiMjX3R5cGUsIHA3
IyNfdHlwZQorI2RlZmluZSBHTU9DS19JTlRFUk5BTF9MSVNUX1RZUEVfQU5EXzlfVkFMVUVfUEFS
QU1TKHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIFwKKyAgICBwNiwgcDcsIHA4KSAsIHAwIyNfdHlw
ZSwgcDEjI190eXBlLCBwMiMjX3R5cGUsIHAzIyNfdHlwZSwgcDQjI190eXBlLCBcCisgICAgcDUj
I190eXBlLCBwNiMjX3R5cGUsIHA3IyNfdHlwZSwgcDgjI190eXBlCisjZGVmaW5lIEdNT0NLX0lO
VEVSTkFMX0xJU1RfVFlQRV9BTkRfMTBfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAzLCBwNCwg
cDUsIFwKKyAgICBwNiwgcDcsIHA4LCBwOSkgLCBwMCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIjI190
eXBlLCBwMyMjX3R5cGUsIHA0IyNfdHlwZSwgXAorICAgIHA1IyNfdHlwZSwgcDYjI190eXBlLCBw
NyMjX3R5cGUsIHA4IyNfdHlwZSwgcDkjI190eXBlCisKKy8vIERlY2xhcmVzIHRoZSB2YWx1ZSBw
YXJhbWV0ZXJzLgorI2RlZmluZSBHTU9DS19JTlRFUk5BTF9ERUNMX0FORF8wX1ZBTFVFX1BBUkFN
UygpCisjZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0RFQ0xfQU5EXzFfVkFMVUVfUEFSQU1TKHAwKSBw
MCMjX3R5cGUgcDAKKyNkZWZpbmUgR01PQ0tfSU5URVJOQUxfREVDTF9BTkRfMl9WQUxVRV9QQVJB
TVMocDAsIHAxKSBwMCMjX3R5cGUgcDAsIFwKKyAgICBwMSMjX3R5cGUgcDEKKyNkZWZpbmUgR01P
Q0tfSU5URVJOQUxfREVDTF9BTkRfM19WQUxVRV9QQVJBTVMocDAsIHAxLCBwMikgcDAjI190eXBl
IHAwLCBcCisgICAgcDEjI190eXBlIHAxLCBwMiMjX3R5cGUgcDIKKyNkZWZpbmUgR01PQ0tfSU5U
RVJOQUxfREVDTF9BTkRfNF9WQUxVRV9QQVJBTVMocDAsIHAxLCBwMiwgcDMpIHAwIyNfdHlwZSBw
MCwgXAorICAgIHAxIyNfdHlwZSBwMSwgcDIjI190eXBlIHAyLCBwMyMjX3R5cGUgcDMKKyNkZWZp
bmUgR01PQ0tfSU5URVJOQUxfREVDTF9BTkRfNV9WQUxVRV9QQVJBTVMocDAsIHAxLCBwMiwgcDMs
IFwKKyAgICBwNCkgcDAjI190eXBlIHAwLCBwMSMjX3R5cGUgcDEsIHAyIyNfdHlwZSBwMiwgcDMj
I190eXBlIHAzLCBwNCMjX3R5cGUgcDQKKyNkZWZpbmUgR01PQ0tfSU5URVJOQUxfREVDTF9BTkRf
Nl9WQUxVRV9QQVJBTVMocDAsIHAxLCBwMiwgcDMsIHA0LCBcCisgICAgcDUpIHAwIyNfdHlwZSBw
MCwgcDEjI190eXBlIHAxLCBwMiMjX3R5cGUgcDIsIHAzIyNfdHlwZSBwMywgcDQjI190eXBlIHA0
LCBcCisgICAgcDUjI190eXBlIHA1CisjZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0RFQ0xfQU5EXzdf
VkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIFwKKyAgICBwNikgcDAjI190eXBl
IHAwLCBwMSMjX3R5cGUgcDEsIHAyIyNfdHlwZSBwMiwgcDMjI190eXBlIHAzLCBwNCMjX3R5cGUg
cDQsIFwKKyAgICBwNSMjX3R5cGUgcDUsIHA2IyNfdHlwZSBwNgorI2RlZmluZSBHTU9DS19JTlRF
Uk5BTF9ERUNMX0FORF84X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBwNiwg
XAorICAgIHA3KSBwMCMjX3R5cGUgcDAsIHAxIyNfdHlwZSBwMSwgcDIjI190eXBlIHAyLCBwMyMj
X3R5cGUgcDMsIHA0IyNfdHlwZSBwNCwgXAorICAgIHA1IyNfdHlwZSBwNSwgcDYjI190eXBlIHA2
LCBwNyMjX3R5cGUgcDcKKyNkZWZpbmUgR01PQ0tfSU5URVJOQUxfREVDTF9BTkRfOV9WQUxVRV9Q
QVJBTVMocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYsIFwKKyAgICBwNywgcDgpIHAwIyNfdHlw
ZSBwMCwgcDEjI190eXBlIHAxLCBwMiMjX3R5cGUgcDIsIHAzIyNfdHlwZSBwMywgXAorICAgIHA0
IyNfdHlwZSBwNCwgcDUjI190eXBlIHA1LCBwNiMjX3R5cGUgcDYsIHA3IyNfdHlwZSBwNywgcDgj
I190eXBlIHA4CisjZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0RFQ0xfQU5EXzEwX1ZBTFVFX1BBUkFN
UyhwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBwNiwgXAorICAgIHA3LCBwOCwgcDkpIHAwIyNfdHlw
ZSBwMCwgcDEjI190eXBlIHAxLCBwMiMjX3R5cGUgcDIsIHAzIyNfdHlwZSBwMywgXAorICAgIHA0
IyNfdHlwZSBwNCwgcDUjI190eXBlIHA1LCBwNiMjX3R5cGUgcDYsIHA3IyNfdHlwZSBwNywgcDgj
I190eXBlIHA4LCBcCisgICAgcDkjI190eXBlIHA5CisKKy8vIFRoZSBzdWZmaXggb2YgdGhlIGNs
YXNzIHRlbXBsYXRlIGltcGxlbWVudGluZyB0aGUgYWN0aW9uIHRlbXBsYXRlLgorI2RlZmluZSBH
TU9DS19JTlRFUk5BTF9DT1VOVF9BTkRfMF9WQUxVRV9QQVJBTVMoKQorI2RlZmluZSBHTU9DS19J
TlRFUk5BTF9DT1VOVF9BTkRfMV9WQUxVRV9QQVJBTVMocDApIFAKKyNkZWZpbmUgR01PQ0tfSU5U
RVJOQUxfQ09VTlRfQU5EXzJfVkFMVUVfUEFSQU1TKHAwLCBwMSkgUDIKKyNkZWZpbmUgR01PQ0tf
SU5URVJOQUxfQ09VTlRfQU5EXzNfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIpIFAzCisjZGVmaW5l
IEdNT0NLX0lOVEVSTkFMX0NPVU5UX0FORF80X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBwMykg
UDQKKyNkZWZpbmUgR01PQ0tfSU5URVJOQUxfQ09VTlRfQU5EXzVfVkFMVUVfUEFSQU1TKHAwLCBw
MSwgcDIsIHAzLCBwNCkgUDUKKyNkZWZpbmUgR01PQ0tfSU5URVJOQUxfQ09VTlRfQU5EXzZfVkFM
VUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUpIFA2CisjZGVmaW5lIEdNT0NLX0lOVEVS
TkFMX0NPVU5UX0FORF83X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBwNikg
UDcKKyNkZWZpbmUgR01PQ0tfSU5URVJOQUxfQ09VTlRfQU5EXzhfVkFMVUVfUEFSQU1TKHAwLCBw
MSwgcDIsIHAzLCBwNCwgcDUsIHA2LCBcCisgICAgcDcpIFA4CisjZGVmaW5lIEdNT0NLX0lOVEVS
TkFMX0NPVU5UX0FORF85X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBwNiwg
XAorICAgIHA3LCBwOCkgUDkKKyNkZWZpbmUgR01PQ0tfSU5URVJOQUxfQ09VTlRfQU5EXzEwX1ZB
TFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBwNiwgXAorICAgIHA3LCBwOCwgcDkp
IFAxMAorCisvLyBUaGUgbmFtZSBvZiB0aGUgY2xhc3MgdGVtcGxhdGUgaW1wbGVtZW50aW5nIHRo
ZSBhY3Rpb24gdGVtcGxhdGUuCisjZGVmaW5lIEdNT0NLX0FDVElPTl9DTEFTU18obmFtZSwgdmFs
dWVfcGFyYW1zKVwKKyAgICBHVEVTVF9DT05DQVRfVE9LRU5fKG5hbWUjI0FjdGlvbiwgR01PQ0tf
SU5URVJOQUxfQ09VTlRfIyN2YWx1ZV9wYXJhbXMpCisKKyNkZWZpbmUgQUNUSU9OX1RFTVBMQVRF
KG5hbWUsIHRlbXBsYXRlX3BhcmFtcywgdmFsdWVfcGFyYW1zKVwKKyAgdGVtcGxhdGUgPEdNT0NL
X0lOVEVSTkFMX0RFQ0xfIyN0ZW1wbGF0ZV9wYXJhbXNcCisgICAgICAgICAgICBHTU9DS19JTlRF
Uk5BTF9ERUNMX1RZUEVfIyN2YWx1ZV9wYXJhbXM+XAorICBjbGFzcyBHTU9DS19BQ1RJT05fQ0xB
U1NfKG5hbWUsIHZhbHVlX3BhcmFtcykge1wKKyAgIHB1YmxpYzpcCisgICAgZXhwbGljaXQgR01P
Q0tfQUNUSU9OX0NMQVNTXyhuYW1lLCB2YWx1ZV9wYXJhbXMpXAorICAgICAgICBHTU9DS19JTlRF
Uk5BTF9JTklUXyMjdmFsdWVfcGFyYW1zIHt9XAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGPlwK
KyAgICBjbGFzcyBnbW9ja19JbXBsIDogcHVibGljIDo6dGVzdGluZzo6QWN0aW9uSW50ZXJmYWNl
PEY+IHtcCisgICAgIHB1YmxpYzpcCisgICAgICB0eXBlZGVmIEYgZnVuY3Rpb25fdHlwZTtcCisg
ICAgICB0eXBlZGVmIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpS
ZXN1bHQgcmV0dXJuX3R5cGU7XAorICAgICAgdHlwZWRlZiB0eXBlbmFtZSA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpGdW5jdGlvbjxGPjo6QXJndW1lbnRUdXBsZVwKKyAgICAgICAgICBhcmdzX3R5cGU7
XAorICAgICAgZXhwbGljaXQgZ21vY2tfSW1wbCBHTU9DS19JTlRFUk5BTF9JTklUXyMjdmFsdWVf
cGFyYW1zIHt9XAorICAgICAgdmlydHVhbCByZXR1cm5fdHlwZSBQZXJmb3JtKGNvbnN0IGFyZ3Nf
dHlwZSYgYXJncykge1wKKyAgICAgICAgcmV0dXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6OkFjdGlv
bkhlbHBlcjxyZXR1cm5fdHlwZSwgZ21vY2tfSW1wbD46OlwKKyAgICAgICAgICAgIFBlcmZvcm0o
dGhpcywgYXJncyk7XAorICAgICAgfVwKKyAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBhcmcwX3R5
cGUsIHR5cGVuYW1lIGFyZzFfdHlwZSwgdHlwZW5hbWUgYXJnMl90eXBlLCBcCisgICAgICAgICAg
dHlwZW5hbWUgYXJnM190eXBlLCB0eXBlbmFtZSBhcmc0X3R5cGUsIHR5cGVuYW1lIGFyZzVfdHlw
ZSwgXAorICAgICAgICAgIHR5cGVuYW1lIGFyZzZfdHlwZSwgdHlwZW5hbWUgYXJnN190eXBlLCB0
eXBlbmFtZSBhcmc4X3R5cGUsIFwKKyAgICAgICAgICB0eXBlbmFtZSBhcmc5X3R5cGU+XAorICAg
ICAgcmV0dXJuX3R5cGUgZ21vY2tfUGVyZm9ybUltcGwoY29uc3QgYXJnc190eXBlJiBhcmdzLCBh
cmcwX3R5cGUgYXJnMCwgXAorICAgICAgICAgIGFyZzFfdHlwZSBhcmcxLCBhcmcyX3R5cGUgYXJn
MiwgYXJnM190eXBlIGFyZzMsIGFyZzRfdHlwZSBhcmc0LCBcCisgICAgICAgICAgYXJnNV90eXBl
IGFyZzUsIGFyZzZfdHlwZSBhcmc2LCBhcmc3X3R5cGUgYXJnNywgYXJnOF90eXBlIGFyZzgsIFwK
KyAgICAgICAgICBhcmc5X3R5cGUgYXJnOSkgY29uc3Q7XAorICAgICAgR01PQ0tfSU5URVJOQUxf
REVGTl8jI3ZhbHVlX3BhcmFtc1wKKyAgICAgcHJpdmF0ZTpcCisgICAgICBHVEVTVF9ESVNBTExP
V19BU1NJR05fKGdtb2NrX0ltcGwpO1wKKyAgICB9O1wKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Rj4gb3BlcmF0b3IgOjp0ZXN0aW5nOjpBY3Rpb248Rj4oKSBjb25zdCB7XAorICAgICAgcmV0dXJu
IDo6dGVzdGluZzo6QWN0aW9uPEY+KFwKKyAgICAgICAgICBuZXcgZ21vY2tfSW1wbDxGPihHTU9D
S19JTlRFUk5BTF9MSVNUXyMjdmFsdWVfcGFyYW1zKSk7XAorICAgIH1cCisgICAgR01PQ0tfSU5U
RVJOQUxfREVGTl8jI3ZhbHVlX3BhcmFtc1wKKyAgIHByaXZhdGU6XAorICAgIEdURVNUX0RJU0FM
TE9XX0FTU0lHTl8oR01PQ0tfQUNUSU9OX0NMQVNTXyhuYW1lLCB2YWx1ZV9wYXJhbXMpKTtcCisg
IH07XAorICB0ZW1wbGF0ZSA8R01PQ0tfSU5URVJOQUxfREVDTF8jI3RlbXBsYXRlX3BhcmFtc1wK
KyAgICAgICAgICAgIEdNT0NLX0lOVEVSTkFMX0RFQ0xfVFlQRV8jI3ZhbHVlX3BhcmFtcz5cCisg
IGlubGluZSBHTU9DS19BQ1RJT05fQ0xBU1NfKG5hbWUsIHZhbHVlX3BhcmFtcyk8XAorICAgICAg
R01PQ0tfSU5URVJOQUxfTElTVF8jI3RlbXBsYXRlX3BhcmFtc1wKKyAgICAgIEdNT0NLX0lOVEVS
TkFMX0xJU1RfVFlQRV8jI3ZhbHVlX3BhcmFtcz4gbmFtZShcCisgICAgICAgICAgR01PQ0tfSU5U
RVJOQUxfREVDTF8jI3ZhbHVlX3BhcmFtcykge1wKKyAgICByZXR1cm4gR01PQ0tfQUNUSU9OX0NM
QVNTXyhuYW1lLCB2YWx1ZV9wYXJhbXMpPFwKKyAgICAgICAgR01PQ0tfSU5URVJOQUxfTElTVF8j
I3RlbXBsYXRlX3BhcmFtc1wKKyAgICAgICAgR01PQ0tfSU5URVJOQUxfTElTVF9UWVBFXyMjdmFs
dWVfcGFyYW1zPihcCisgICAgICAgICAgICBHTU9DS19JTlRFUk5BTF9MSVNUXyMjdmFsdWVfcGFy
YW1zKTtcCisgIH1cCisgIHRlbXBsYXRlIDxHTU9DS19JTlRFUk5BTF9ERUNMXyMjdGVtcGxhdGVf
cGFyYW1zXAorICAgICAgICAgICAgR01PQ0tfSU5URVJOQUxfREVDTF9UWVBFXyMjdmFsdWVfcGFy
YW1zPlwKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+XAorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgYXJn
MF90eXBlLCB0eXBlbmFtZSBhcmcxX3R5cGUsIHR5cGVuYW1lIGFyZzJfdHlwZSwgXAorICAgICAg
dHlwZW5hbWUgYXJnM190eXBlLCB0eXBlbmFtZSBhcmc0X3R5cGUsIHR5cGVuYW1lIGFyZzVfdHlw
ZSwgXAorICAgICAgdHlwZW5hbWUgYXJnNl90eXBlLCB0eXBlbmFtZSBhcmc3X3R5cGUsIHR5cGVu
YW1lIGFyZzhfdHlwZSwgXAorICAgICAgdHlwZW5hbWUgYXJnOV90eXBlPlwKKyAgdHlwZW5hbWUg
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6RnVuY3Rpb248Rj46OlJlc3VsdFwKKyAgICAgIEdNT0NLX0FD
VElPTl9DTEFTU18obmFtZSwgdmFsdWVfcGFyYW1zKTxcCisgICAgICAgICAgR01PQ0tfSU5URVJO
QUxfTElTVF8jI3RlbXBsYXRlX3BhcmFtc1wKKyAgICAgICAgICBHTU9DS19JTlRFUk5BTF9MSVNU
X1RZUEVfIyN2YWx1ZV9wYXJhbXM+OjpnbW9ja19JbXBsPEY+OjpcCisgICAgICAgICAgICAgIGdt
b2NrX1BlcmZvcm1JbXBsKFwKKyAgICAgICAgICBHTU9DS19BQ1RJT05fQVJHX1RZUEVTX0FORF9O
QU1FU19VTlVTRURfKSBjb25zdAorCisjZGVmaW5lIEFDVElPTihuYW1lKVwKKyAgY2xhc3MgbmFt
ZSMjQWN0aW9uIHtcCisgICBwdWJsaWM6XAorICAgIG5hbWUjI0FjdGlvbigpIHt9XAorICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBGPlwKKyAgICBjbGFzcyBnbW9ja19JbXBsIDogcHVibGljIDo6dGVz
dGluZzo6QWN0aW9uSW50ZXJmYWNlPEY+IHtcCisgICAgIHB1YmxpYzpcCisgICAgICB0eXBlZGVm
IEYgZnVuY3Rpb25fdHlwZTtcCisgICAgICB0eXBlZGVmIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50
ZXJuYWw6OkZ1bmN0aW9uPEY+OjpSZXN1bHQgcmV0dXJuX3R5cGU7XAorICAgICAgdHlwZWRlZiB0
eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpGdW5jdGlvbjxGPjo6QXJndW1lbnRUdXBsZVwK
KyAgICAgICAgICBhcmdzX3R5cGU7XAorICAgICAgZ21vY2tfSW1wbCgpIHt9XAorICAgICAgdmly
dHVhbCByZXR1cm5fdHlwZSBQZXJmb3JtKGNvbnN0IGFyZ3NfdHlwZSYgYXJncykge1wKKyAgICAg
ICAgcmV0dXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6OkFjdGlvbkhlbHBlcjxyZXR1cm5fdHlwZSwg
Z21vY2tfSW1wbD46OlwKKyAgICAgICAgICAgIFBlcmZvcm0odGhpcywgYXJncyk7XAorICAgICAg
fVwKKyAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBhcmcwX3R5cGUsIHR5cGVuYW1lIGFyZzFfdHlw
ZSwgdHlwZW5hbWUgYXJnMl90eXBlLCBcCisgICAgICAgICAgdHlwZW5hbWUgYXJnM190eXBlLCB0
eXBlbmFtZSBhcmc0X3R5cGUsIHR5cGVuYW1lIGFyZzVfdHlwZSwgXAorICAgICAgICAgIHR5cGVu
YW1lIGFyZzZfdHlwZSwgdHlwZW5hbWUgYXJnN190eXBlLCB0eXBlbmFtZSBhcmc4X3R5cGUsIFwK
KyAgICAgICAgICB0eXBlbmFtZSBhcmc5X3R5cGU+XAorICAgICAgcmV0dXJuX3R5cGUgZ21vY2tf
UGVyZm9ybUltcGwoY29uc3QgYXJnc190eXBlJiBhcmdzLCBhcmcwX3R5cGUgYXJnMCwgXAorICAg
ICAgICAgIGFyZzFfdHlwZSBhcmcxLCBhcmcyX3R5cGUgYXJnMiwgYXJnM190eXBlIGFyZzMsIGFy
ZzRfdHlwZSBhcmc0LCBcCisgICAgICAgICAgYXJnNV90eXBlIGFyZzUsIGFyZzZfdHlwZSBhcmc2
LCBhcmc3X3R5cGUgYXJnNywgYXJnOF90eXBlIGFyZzgsIFwKKyAgICAgICAgICBhcmc5X3R5cGUg
YXJnOSkgY29uc3Q7XAorICAgICBwcml2YXRlOlwKKyAgICAgIEdURVNUX0RJU0FMTE9XX0FTU0lH
Tl8oZ21vY2tfSW1wbCk7XAorICAgIH07XAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGPiBvcGVy
YXRvciA6OnRlc3Rpbmc6OkFjdGlvbjxGPigpIGNvbnN0IHtcCisgICAgICByZXR1cm4gOjp0ZXN0
aW5nOjpBY3Rpb248Rj4obmV3IGdtb2NrX0ltcGw8Rj4oKSk7XAorICAgIH1cCisgICBwcml2YXRl
OlwKKyAgICBHVEVTVF9ESVNBTExPV19BU1NJR05fKG5hbWUjI0FjdGlvbik7XAorICB9O1wKKyAg
aW5saW5lIG5hbWUjI0FjdGlvbiBuYW1lKCkge1wKKyAgICByZXR1cm4gbmFtZSMjQWN0aW9uKCk7
XAorICB9XAorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRj5cCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBh
cmcwX3R5cGUsIHR5cGVuYW1lIGFyZzFfdHlwZSwgdHlwZW5hbWUgYXJnMl90eXBlLCBcCisgICAg
ICB0eXBlbmFtZSBhcmczX3R5cGUsIHR5cGVuYW1lIGFyZzRfdHlwZSwgdHlwZW5hbWUgYXJnNV90
eXBlLCBcCisgICAgICB0eXBlbmFtZSBhcmc2X3R5cGUsIHR5cGVuYW1lIGFyZzdfdHlwZSwgdHlw
ZW5hbWUgYXJnOF90eXBlLCBcCisgICAgICB0eXBlbmFtZSBhcmc5X3R5cGU+XAorICB0eXBlbmFt
ZSA6OnRlc3Rpbmc6OmludGVybmFsOjpGdW5jdGlvbjxGPjo6UmVzdWx0XAorICAgICAgbmFtZSMj
QWN0aW9uOjpnbW9ja19JbXBsPEY+OjpnbW9ja19QZXJmb3JtSW1wbChcCisgICAgICAgICAgR01P
Q0tfQUNUSU9OX0FSR19UWVBFU19BTkRfTkFNRVNfVU5VU0VEXykgY29uc3QKKworI2RlZmluZSBB
Q1RJT05fUChuYW1lLCBwMClcCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGU+XAorICBj
bGFzcyBuYW1lIyNBY3Rpb25QIHtcCisgICBwdWJsaWM6XAorICAgIGV4cGxpY2l0IG5hbWUjI0Fj
dGlvblAocDAjI190eXBlIGdtb2NrX3AwKSA6IHAwKGdtb2NrX3AwKSB7fVwKKyAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgRj5cCisgICAgY2xhc3MgZ21vY2tfSW1wbCA6IHB1YmxpYyA6OnRlc3Rpbmc6
OkFjdGlvbkludGVyZmFjZTxGPiB7XAorICAgICBwdWJsaWM6XAorICAgICAgdHlwZWRlZiBGIGZ1
bmN0aW9uX3R5cGU7XAorICAgICAgdHlwZWRlZiB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFs
OjpGdW5jdGlvbjxGPjo6UmVzdWx0IHJldHVybl90eXBlO1wKKyAgICAgIHR5cGVkZWYgdHlwZW5h
bWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RnVuY3Rpb248Rj46OkFyZ3VtZW50VHVwbGVcCisgICAg
ICAgICAgYXJnc190eXBlO1wKKyAgICAgIGV4cGxpY2l0IGdtb2NrX0ltcGwocDAjI190eXBlIGdt
b2NrX3AwKSA6IHAwKGdtb2NrX3AwKSB7fVwKKyAgICAgIHZpcnR1YWwgcmV0dXJuX3R5cGUgUGVy
Zm9ybShjb25zdCBhcmdzX3R5cGUmIGFyZ3MpIHtcCisgICAgICAgIHJldHVybiA6OnRlc3Rpbmc6
OmludGVybmFsOjpBY3Rpb25IZWxwZXI8cmV0dXJuX3R5cGUsIGdtb2NrX0ltcGw+OjpcCisgICAg
ICAgICAgICBQZXJmb3JtKHRoaXMsIGFyZ3MpO1wKKyAgICAgIH1cCisgICAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgYXJnMF90eXBlLCB0eXBlbmFtZSBhcmcxX3R5cGUsIHR5cGVuYW1lIGFyZzJfdHlw
ZSwgXAorICAgICAgICAgIHR5cGVuYW1lIGFyZzNfdHlwZSwgdHlwZW5hbWUgYXJnNF90eXBlLCB0
eXBlbmFtZSBhcmc1X3R5cGUsIFwKKyAgICAgICAgICB0eXBlbmFtZSBhcmc2X3R5cGUsIHR5cGVu
YW1lIGFyZzdfdHlwZSwgdHlwZW5hbWUgYXJnOF90eXBlLCBcCisgICAgICAgICAgdHlwZW5hbWUg
YXJnOV90eXBlPlwKKyAgICAgIHJldHVybl90eXBlIGdtb2NrX1BlcmZvcm1JbXBsKGNvbnN0IGFy
Z3NfdHlwZSYgYXJncywgYXJnMF90eXBlIGFyZzAsIFwKKyAgICAgICAgICBhcmcxX3R5cGUgYXJn
MSwgYXJnMl90eXBlIGFyZzIsIGFyZzNfdHlwZSBhcmczLCBhcmc0X3R5cGUgYXJnNCwgXAorICAg
ICAgICAgIGFyZzVfdHlwZSBhcmc1LCBhcmc2X3R5cGUgYXJnNiwgYXJnN190eXBlIGFyZzcsIGFy
ZzhfdHlwZSBhcmc4LCBcCisgICAgICAgICAgYXJnOV90eXBlIGFyZzkpIGNvbnN0O1wKKyAgICAg
IHAwIyNfdHlwZSBwMDtcCisgICAgIHByaXZhdGU6XAorICAgICAgR1RFU1RfRElTQUxMT1dfQVNT
SUdOXyhnbW9ja19JbXBsKTtcCisgICAgfTtcCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+IG9w
ZXJhdG9yIDo6dGVzdGluZzo6QWN0aW9uPEY+KCkgY29uc3Qge1wKKyAgICAgIHJldHVybiA6OnRl
c3Rpbmc6OkFjdGlvbjxGPihuZXcgZ21vY2tfSW1wbDxGPihwMCkpO1wKKyAgICB9XAorICAgIHAw
IyNfdHlwZSBwMDtcCisgICBwcml2YXRlOlwKKyAgICBHVEVTVF9ESVNBTExPV19BU1NJR05fKG5h
bWUjI0FjdGlvblApO1wKKyAgfTtcCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGU+XAor
ICBpbmxpbmUgbmFtZSMjQWN0aW9uUDxwMCMjX3R5cGU+IG5hbWUocDAjI190eXBlIHAwKSB7XAor
ICAgIHJldHVybiBuYW1lIyNBY3Rpb25QPHAwIyNfdHlwZT4ocDApO1wKKyAgfVwKKyAgdGVtcGxh
dGUgPHR5cGVuYW1lIHAwIyNfdHlwZT5cCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBGPlwKKyAgdGVt
cGxhdGUgPHR5cGVuYW1lIGFyZzBfdHlwZSwgdHlwZW5hbWUgYXJnMV90eXBlLCB0eXBlbmFtZSBh
cmcyX3R5cGUsIFwKKyAgICAgIHR5cGVuYW1lIGFyZzNfdHlwZSwgdHlwZW5hbWUgYXJnNF90eXBl
LCB0eXBlbmFtZSBhcmc1X3R5cGUsIFwKKyAgICAgIHR5cGVuYW1lIGFyZzZfdHlwZSwgdHlwZW5h
bWUgYXJnN190eXBlLCB0eXBlbmFtZSBhcmc4X3R5cGUsIFwKKyAgICAgIHR5cGVuYW1lIGFyZzlf
dHlwZT5cCisgIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpSZXN1
bHRcCisgICAgICBuYW1lIyNBY3Rpb25QPHAwIyNfdHlwZT46Omdtb2NrX0ltcGw8Rj46Omdtb2Nr
X1BlcmZvcm1JbXBsKFwKKyAgICAgICAgICBHTU9DS19BQ1RJT05fQVJHX1RZUEVTX0FORF9OQU1F
U19VTlVTRURfKSBjb25zdAorCisjZGVmaW5lIEFDVElPTl9QMihuYW1lLCBwMCwgcDEpXAorICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMjX3R5cGU+XAorICBjbGFz
cyBuYW1lIyNBY3Rpb25QMiB7XAorICAgcHVibGljOlwKKyAgICBuYW1lIyNBY3Rpb25QMihwMCMj
X3R5cGUgZ21vY2tfcDAsIHAxIyNfdHlwZSBnbW9ja19wMSkgOiBwMChnbW9ja19wMCksIFwKKyAg
ICAgICAgcDEoZ21vY2tfcDEpIHt9XAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGPlwKKyAgICBj
bGFzcyBnbW9ja19JbXBsIDogcHVibGljIDo6dGVzdGluZzo6QWN0aW9uSW50ZXJmYWNlPEY+IHtc
CisgICAgIHB1YmxpYzpcCisgICAgICB0eXBlZGVmIEYgZnVuY3Rpb25fdHlwZTtcCisgICAgICB0
eXBlZGVmIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpSZXN1bHQg
cmV0dXJuX3R5cGU7XAorICAgICAgdHlwZWRlZiB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFs
OjpGdW5jdGlvbjxGPjo6QXJndW1lbnRUdXBsZVwKKyAgICAgICAgICBhcmdzX3R5cGU7XAorICAg
ICAgZ21vY2tfSW1wbChwMCMjX3R5cGUgZ21vY2tfcDAsIHAxIyNfdHlwZSBnbW9ja19wMSkgOiBw
MChnbW9ja19wMCksIFwKKyAgICAgICAgICBwMShnbW9ja19wMSkge31cCisgICAgICB2aXJ0dWFs
IHJldHVybl90eXBlIFBlcmZvcm0oY29uc3QgYXJnc190eXBlJiBhcmdzKSB7XAorICAgICAgICBy
ZXR1cm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWN0aW9uSGVscGVyPHJldHVybl90eXBlLCBnbW9j
a19JbXBsPjo6XAorICAgICAgICAgICAgUGVyZm9ybSh0aGlzLCBhcmdzKTtcCisgICAgICB9XAor
ICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIGFyZzBfdHlwZSwgdHlwZW5hbWUgYXJnMV90eXBlLCB0
eXBlbmFtZSBhcmcyX3R5cGUsIFwKKyAgICAgICAgICB0eXBlbmFtZSBhcmczX3R5cGUsIHR5cGVu
YW1lIGFyZzRfdHlwZSwgdHlwZW5hbWUgYXJnNV90eXBlLCBcCisgICAgICAgICAgdHlwZW5hbWUg
YXJnNl90eXBlLCB0eXBlbmFtZSBhcmc3X3R5cGUsIHR5cGVuYW1lIGFyZzhfdHlwZSwgXAorICAg
ICAgICAgIHR5cGVuYW1lIGFyZzlfdHlwZT5cCisgICAgICByZXR1cm5fdHlwZSBnbW9ja19QZXJm
b3JtSW1wbChjb25zdCBhcmdzX3R5cGUmIGFyZ3MsIGFyZzBfdHlwZSBhcmcwLCBcCisgICAgICAg
ICAgYXJnMV90eXBlIGFyZzEsIGFyZzJfdHlwZSBhcmcyLCBhcmczX3R5cGUgYXJnMywgYXJnNF90
eXBlIGFyZzQsIFwKKyAgICAgICAgICBhcmc1X3R5cGUgYXJnNSwgYXJnNl90eXBlIGFyZzYsIGFy
ZzdfdHlwZSBhcmc3LCBhcmc4X3R5cGUgYXJnOCwgXAorICAgICAgICAgIGFyZzlfdHlwZSBhcmc5
KSBjb25zdDtcCisgICAgICBwMCMjX3R5cGUgcDA7XAorICAgICAgcDEjI190eXBlIHAxO1wKKyAg
ICAgcHJpdmF0ZTpcCisgICAgICBHVEVTVF9ESVNBTExPV19BU1NJR05fKGdtb2NrX0ltcGwpO1wK
KyAgICB9O1wKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRj4gb3BlcmF0b3IgOjp0ZXN0aW5nOjpB
Y3Rpb248Rj4oKSBjb25zdCB7XAorICAgICAgcmV0dXJuIDo6dGVzdGluZzo6QWN0aW9uPEY+KG5l
dyBnbW9ja19JbXBsPEY+KHAwLCBwMSkpO1wKKyAgICB9XAorICAgIHAwIyNfdHlwZSBwMDtcCisg
ICAgcDEjI190eXBlIHAxO1wKKyAgIHByaXZhdGU6XAorICAgIEdURVNUX0RJU0FMTE9XX0FTU0lH
Tl8obmFtZSMjQWN0aW9uUDIpO1wKKyAgfTtcCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5
cGUsIHR5cGVuYW1lIHAxIyNfdHlwZT5cCisgIGlubGluZSBuYW1lIyNBY3Rpb25QMjxwMCMjX3R5
cGUsIHAxIyNfdHlwZT4gbmFtZShwMCMjX3R5cGUgcDAsIFwKKyAgICAgIHAxIyNfdHlwZSBwMSkg
e1wKKyAgICByZXR1cm4gbmFtZSMjQWN0aW9uUDI8cDAjI190eXBlLCBwMSMjX3R5cGU+KHAwLCBw
MSk7XAorICB9XAorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMj
X3R5cGU+XAorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRj5cCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBh
cmcwX3R5cGUsIHR5cGVuYW1lIGFyZzFfdHlwZSwgdHlwZW5hbWUgYXJnMl90eXBlLCBcCisgICAg
ICB0eXBlbmFtZSBhcmczX3R5cGUsIHR5cGVuYW1lIGFyZzRfdHlwZSwgdHlwZW5hbWUgYXJnNV90
eXBlLCBcCisgICAgICB0eXBlbmFtZSBhcmc2X3R5cGUsIHR5cGVuYW1lIGFyZzdfdHlwZSwgdHlw
ZW5hbWUgYXJnOF90eXBlLCBcCisgICAgICB0eXBlbmFtZSBhcmc5X3R5cGU+XAorICB0eXBlbmFt
ZSA6OnRlc3Rpbmc6OmludGVybmFsOjpGdW5jdGlvbjxGPjo6UmVzdWx0XAorICAgICAgbmFtZSMj
QWN0aW9uUDI8cDAjI190eXBlLCBwMSMjX3R5cGU+OjpnbW9ja19JbXBsPEY+OjpnbW9ja19QZXJm
b3JtSW1wbChcCisgICAgICAgICAgR01PQ0tfQUNUSU9OX0FSR19UWVBFU19BTkRfTkFNRVNfVU5V
U0VEXykgY29uc3QKKworI2RlZmluZSBBQ1RJT05fUDMobmFtZSwgcDAsIHAxLCBwMilcCisgIHRl
bXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGUsIHR5cGVuYW1lIHAxIyNfdHlwZSwgdHlwZW5hbWUg
cDIjI190eXBlPlwKKyAgY2xhc3MgbmFtZSMjQWN0aW9uUDMge1wKKyAgIHB1YmxpYzpcCisgICAg
bmFtZSMjQWN0aW9uUDMocDAjI190eXBlIGdtb2NrX3AwLCBwMSMjX3R5cGUgZ21vY2tfcDEsIFwK
KyAgICAgICAgcDIjI190eXBlIGdtb2NrX3AyKSA6IHAwKGdtb2NrX3AwKSwgcDEoZ21vY2tfcDEp
LCBwMihnbW9ja19wMikge31cCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+XAorICAgIGNsYXNz
IGdtb2NrX0ltcGwgOiBwdWJsaWMgOjp0ZXN0aW5nOjpBY3Rpb25JbnRlcmZhY2U8Rj4ge1wKKyAg
ICAgcHVibGljOlwKKyAgICAgIHR5cGVkZWYgRiBmdW5jdGlvbl90eXBlO1wKKyAgICAgIHR5cGVk
ZWYgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RnVuY3Rpb248Rj46OlJlc3VsdCByZXR1
cm5fdHlwZTtcCisgICAgICB0eXBlZGVmIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZ1
bmN0aW9uPEY+OjpBcmd1bWVudFR1cGxlXAorICAgICAgICAgIGFyZ3NfdHlwZTtcCisgICAgICBn
bW9ja19JbXBsKHAwIyNfdHlwZSBnbW9ja19wMCwgcDEjI190eXBlIGdtb2NrX3AxLCBcCisgICAg
ICAgICAgcDIjI190eXBlIGdtb2NrX3AyKSA6IHAwKGdtb2NrX3AwKSwgcDEoZ21vY2tfcDEpLCBw
MihnbW9ja19wMikge31cCisgICAgICB2aXJ0dWFsIHJldHVybl90eXBlIFBlcmZvcm0oY29uc3Qg
YXJnc190eXBlJiBhcmdzKSB7XAorICAgICAgICByZXR1cm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6
QWN0aW9uSGVscGVyPHJldHVybl90eXBlLCBnbW9ja19JbXBsPjo6XAorICAgICAgICAgICAgUGVy
Zm9ybSh0aGlzLCBhcmdzKTtcCisgICAgICB9XAorICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIGFy
ZzBfdHlwZSwgdHlwZW5hbWUgYXJnMV90eXBlLCB0eXBlbmFtZSBhcmcyX3R5cGUsIFwKKyAgICAg
ICAgICB0eXBlbmFtZSBhcmczX3R5cGUsIHR5cGVuYW1lIGFyZzRfdHlwZSwgdHlwZW5hbWUgYXJn
NV90eXBlLCBcCisgICAgICAgICAgdHlwZW5hbWUgYXJnNl90eXBlLCB0eXBlbmFtZSBhcmc3X3R5
cGUsIHR5cGVuYW1lIGFyZzhfdHlwZSwgXAorICAgICAgICAgIHR5cGVuYW1lIGFyZzlfdHlwZT5c
CisgICAgICByZXR1cm5fdHlwZSBnbW9ja19QZXJmb3JtSW1wbChjb25zdCBhcmdzX3R5cGUmIGFy
Z3MsIGFyZzBfdHlwZSBhcmcwLCBcCisgICAgICAgICAgYXJnMV90eXBlIGFyZzEsIGFyZzJfdHlw
ZSBhcmcyLCBhcmczX3R5cGUgYXJnMywgYXJnNF90eXBlIGFyZzQsIFwKKyAgICAgICAgICBhcmc1
X3R5cGUgYXJnNSwgYXJnNl90eXBlIGFyZzYsIGFyZzdfdHlwZSBhcmc3LCBhcmc4X3R5cGUgYXJn
OCwgXAorICAgICAgICAgIGFyZzlfdHlwZSBhcmc5KSBjb25zdDtcCisgICAgICBwMCMjX3R5cGUg
cDA7XAorICAgICAgcDEjI190eXBlIHAxO1wKKyAgICAgIHAyIyNfdHlwZSBwMjtcCisgICAgIHBy
aXZhdGU6XAorICAgICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhnbW9ja19JbXBsKTtcCisgICAg
fTtcCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+IG9wZXJhdG9yIDo6dGVzdGluZzo6QWN0aW9u
PEY+KCkgY29uc3Qge1wKKyAgICAgIHJldHVybiA6OnRlc3Rpbmc6OkFjdGlvbjxGPihuZXcgZ21v
Y2tfSW1wbDxGPihwMCwgcDEsIHAyKSk7XAorICAgIH1cCisgICAgcDAjI190eXBlIHAwO1wKKyAg
ICBwMSMjX3R5cGUgcDE7XAorICAgIHAyIyNfdHlwZSBwMjtcCisgICBwcml2YXRlOlwKKyAgICBH
VEVTVF9ESVNBTExPV19BU1NJR05fKG5hbWUjI0FjdGlvblAzKTtcCisgIH07XAorICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMjX3R5cGUsIHR5cGVuYW1lIHAyIyNf
dHlwZT5cCisgIGlubGluZSBuYW1lIyNBY3Rpb25QMzxwMCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIj
I190eXBlPiBuYW1lKHAwIyNfdHlwZSBwMCwgXAorICAgICAgcDEjI190eXBlIHAxLCBwMiMjX3R5
cGUgcDIpIHtcCisgICAgcmV0dXJuIG5hbWUjI0FjdGlvblAzPHAwIyNfdHlwZSwgcDEjI190eXBl
LCBwMiMjX3R5cGU+KHAwLCBwMSwgcDIpO1wKKyAgfVwKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIHAw
IyNfdHlwZSwgdHlwZW5hbWUgcDEjI190eXBlLCB0eXBlbmFtZSBwMiMjX3R5cGU+XAorICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgRj5cCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBhcmcwX3R5cGUsIHR5cGVu
YW1lIGFyZzFfdHlwZSwgdHlwZW5hbWUgYXJnMl90eXBlLCBcCisgICAgICB0eXBlbmFtZSBhcmcz
X3R5cGUsIHR5cGVuYW1lIGFyZzRfdHlwZSwgdHlwZW5hbWUgYXJnNV90eXBlLCBcCisgICAgICB0
eXBlbmFtZSBhcmc2X3R5cGUsIHR5cGVuYW1lIGFyZzdfdHlwZSwgdHlwZW5hbWUgYXJnOF90eXBl
LCBcCisgICAgICB0eXBlbmFtZSBhcmc5X3R5cGU+XAorICB0eXBlbmFtZSA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpGdW5jdGlvbjxGPjo6UmVzdWx0XAorICAgICAgbmFtZSMjQWN0aW9uUDM8cDAjI190
eXBlLCBwMSMjX3R5cGUsIFwKKyAgICAgICAgICBwMiMjX3R5cGU+OjpnbW9ja19JbXBsPEY+Ojpn
bW9ja19QZXJmb3JtSW1wbChcCisgICAgICAgICAgR01PQ0tfQUNUSU9OX0FSR19UWVBFU19BTkRf
TkFNRVNfVU5VU0VEXykgY29uc3QKKworI2RlZmluZSBBQ1RJT05fUDQobmFtZSwgcDAsIHAxLCBw
MiwgcDMpXAorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMjX3R5
cGUsIHR5cGVuYW1lIHAyIyNfdHlwZSwgXAorICAgICAgdHlwZW5hbWUgcDMjI190eXBlPlwKKyAg
Y2xhc3MgbmFtZSMjQWN0aW9uUDQge1wKKyAgIHB1YmxpYzpcCisgICAgbmFtZSMjQWN0aW9uUDQo
cDAjI190eXBlIGdtb2NrX3AwLCBwMSMjX3R5cGUgZ21vY2tfcDEsIFwKKyAgICAgICAgcDIjI190
eXBlIGdtb2NrX3AyLCBwMyMjX3R5cGUgZ21vY2tfcDMpIDogcDAoZ21vY2tfcDApLCBwMShnbW9j
a19wMSksIFwKKyAgICAgICAgcDIoZ21vY2tfcDIpLCBwMyhnbW9ja19wMykge31cCisgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIEY+XAorICAgIGNsYXNzIGdtb2NrX0ltcGwgOiBwdWJsaWMgOjp0ZXN0
aW5nOjpBY3Rpb25JbnRlcmZhY2U8Rj4ge1wKKyAgICAgcHVibGljOlwKKyAgICAgIHR5cGVkZWYg
RiBmdW5jdGlvbl90eXBlO1wKKyAgICAgIHR5cGVkZWYgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRl
cm5hbDo6RnVuY3Rpb248Rj46OlJlc3VsdCByZXR1cm5fdHlwZTtcCisgICAgICB0eXBlZGVmIHR5
cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpBcmd1bWVudFR1cGxlXAor
ICAgICAgICAgIGFyZ3NfdHlwZTtcCisgICAgICBnbW9ja19JbXBsKHAwIyNfdHlwZSBnbW9ja19w
MCwgcDEjI190eXBlIGdtb2NrX3AxLCBwMiMjX3R5cGUgZ21vY2tfcDIsIFwKKyAgICAgICAgICBw
MyMjX3R5cGUgZ21vY2tfcDMpIDogcDAoZ21vY2tfcDApLCBwMShnbW9ja19wMSksIHAyKGdtb2Nr
X3AyKSwgXAorICAgICAgICAgIHAzKGdtb2NrX3AzKSB7fVwKKyAgICAgIHZpcnR1YWwgcmV0dXJu
X3R5cGUgUGVyZm9ybShjb25zdCBhcmdzX3R5cGUmIGFyZ3MpIHtcCisgICAgICAgIHJldHVybiA6
OnRlc3Rpbmc6OmludGVybmFsOjpBY3Rpb25IZWxwZXI8cmV0dXJuX3R5cGUsIGdtb2NrX0ltcGw+
OjpcCisgICAgICAgICAgICBQZXJmb3JtKHRoaXMsIGFyZ3MpO1wKKyAgICAgIH1cCisgICAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgYXJnMF90eXBlLCB0eXBlbmFtZSBhcmcxX3R5cGUsIHR5cGVuYW1l
IGFyZzJfdHlwZSwgXAorICAgICAgICAgIHR5cGVuYW1lIGFyZzNfdHlwZSwgdHlwZW5hbWUgYXJn
NF90eXBlLCB0eXBlbmFtZSBhcmc1X3R5cGUsIFwKKyAgICAgICAgICB0eXBlbmFtZSBhcmc2X3R5
cGUsIHR5cGVuYW1lIGFyZzdfdHlwZSwgdHlwZW5hbWUgYXJnOF90eXBlLCBcCisgICAgICAgICAg
dHlwZW5hbWUgYXJnOV90eXBlPlwKKyAgICAgIHJldHVybl90eXBlIGdtb2NrX1BlcmZvcm1JbXBs
KGNvbnN0IGFyZ3NfdHlwZSYgYXJncywgYXJnMF90eXBlIGFyZzAsIFwKKyAgICAgICAgICBhcmcx
X3R5cGUgYXJnMSwgYXJnMl90eXBlIGFyZzIsIGFyZzNfdHlwZSBhcmczLCBhcmc0X3R5cGUgYXJn
NCwgXAorICAgICAgICAgIGFyZzVfdHlwZSBhcmc1LCBhcmc2X3R5cGUgYXJnNiwgYXJnN190eXBl
IGFyZzcsIGFyZzhfdHlwZSBhcmc4LCBcCisgICAgICAgICAgYXJnOV90eXBlIGFyZzkpIGNvbnN0
O1wKKyAgICAgIHAwIyNfdHlwZSBwMDtcCisgICAgICBwMSMjX3R5cGUgcDE7XAorICAgICAgcDIj
I190eXBlIHAyO1wKKyAgICAgIHAzIyNfdHlwZSBwMztcCisgICAgIHByaXZhdGU6XAorICAgICAg
R1RFU1RfRElTQUxMT1dfQVNTSUdOXyhnbW9ja19JbXBsKTtcCisgICAgfTtcCisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIEY+IG9wZXJhdG9yIDo6dGVzdGluZzo6QWN0aW9uPEY+KCkgY29uc3Qge1wK
KyAgICAgIHJldHVybiA6OnRlc3Rpbmc6OkFjdGlvbjxGPihuZXcgZ21vY2tfSW1wbDxGPihwMCwg
cDEsIHAyLCBwMykpO1wKKyAgICB9XAorICAgIHAwIyNfdHlwZSBwMDtcCisgICAgcDEjI190eXBl
IHAxO1wKKyAgICBwMiMjX3R5cGUgcDI7XAorICAgIHAzIyNfdHlwZSBwMztcCisgICBwcml2YXRl
OlwKKyAgICBHVEVTVF9ESVNBTExPV19BU1NJR05fKG5hbWUjI0FjdGlvblA0KTtcCisgIH07XAor
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMjX3R5cGUsIHR5cGVu
YW1lIHAyIyNfdHlwZSwgXAorICAgICAgdHlwZW5hbWUgcDMjI190eXBlPlwKKyAgaW5saW5lIG5h
bWUjI0FjdGlvblA0PHAwIyNfdHlwZSwgcDEjI190eXBlLCBwMiMjX3R5cGUsIFwKKyAgICAgIHAz
IyNfdHlwZT4gbmFtZShwMCMjX3R5cGUgcDAsIHAxIyNfdHlwZSBwMSwgcDIjI190eXBlIHAyLCBc
CisgICAgICBwMyMjX3R5cGUgcDMpIHtcCisgICAgcmV0dXJuIG5hbWUjI0FjdGlvblA0PHAwIyNf
dHlwZSwgcDEjI190eXBlLCBwMiMjX3R5cGUsIHAzIyNfdHlwZT4ocDAsIHAxLCBcCisgICAgICAg
IHAyLCBwMyk7XAorICB9XAorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFt
ZSBwMSMjX3R5cGUsIHR5cGVuYW1lIHAyIyNfdHlwZSwgXAorICAgICAgdHlwZW5hbWUgcDMjI190
eXBlPlwKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+XAorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgYXJn
MF90eXBlLCB0eXBlbmFtZSBhcmcxX3R5cGUsIHR5cGVuYW1lIGFyZzJfdHlwZSwgXAorICAgICAg
dHlwZW5hbWUgYXJnM190eXBlLCB0eXBlbmFtZSBhcmc0X3R5cGUsIHR5cGVuYW1lIGFyZzVfdHlw
ZSwgXAorICAgICAgdHlwZW5hbWUgYXJnNl90eXBlLCB0eXBlbmFtZSBhcmc3X3R5cGUsIHR5cGVu
YW1lIGFyZzhfdHlwZSwgXAorICAgICAgdHlwZW5hbWUgYXJnOV90eXBlPlwKKyAgdHlwZW5hbWUg
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6RnVuY3Rpb248Rj46OlJlc3VsdFwKKyAgICAgIG5hbWUjI0Fj
dGlvblA0PHAwIyNfdHlwZSwgcDEjI190eXBlLCBwMiMjX3R5cGUsIFwKKyAgICAgICAgICBwMyMj
X3R5cGU+OjpnbW9ja19JbXBsPEY+OjpnbW9ja19QZXJmb3JtSW1wbChcCisgICAgICAgICAgR01P
Q0tfQUNUSU9OX0FSR19UWVBFU19BTkRfTkFNRVNfVU5VU0VEXykgY29uc3QKKworI2RlZmluZSBB
Q1RJT05fUDUobmFtZSwgcDAsIHAxLCBwMiwgcDMsIHA0KVwKKyAgdGVtcGxhdGUgPHR5cGVuYW1l
IHAwIyNfdHlwZSwgdHlwZW5hbWUgcDEjI190eXBlLCB0eXBlbmFtZSBwMiMjX3R5cGUsIFwKKyAg
ICAgIHR5cGVuYW1lIHAzIyNfdHlwZSwgdHlwZW5hbWUgcDQjI190eXBlPlwKKyAgY2xhc3MgbmFt
ZSMjQWN0aW9uUDUge1wKKyAgIHB1YmxpYzpcCisgICAgbmFtZSMjQWN0aW9uUDUocDAjI190eXBl
IGdtb2NrX3AwLCBwMSMjX3R5cGUgZ21vY2tfcDEsIFwKKyAgICAgICAgcDIjI190eXBlIGdtb2Nr
X3AyLCBwMyMjX3R5cGUgZ21vY2tfcDMsIFwKKyAgICAgICAgcDQjI190eXBlIGdtb2NrX3A0KSA6
IHAwKGdtb2NrX3AwKSwgcDEoZ21vY2tfcDEpLCBwMihnbW9ja19wMiksIFwKKyAgICAgICAgcDMo
Z21vY2tfcDMpLCBwNChnbW9ja19wNCkge31cCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+XAor
ICAgIGNsYXNzIGdtb2NrX0ltcGwgOiBwdWJsaWMgOjp0ZXN0aW5nOjpBY3Rpb25JbnRlcmZhY2U8
Rj4ge1wKKyAgICAgcHVibGljOlwKKyAgICAgIHR5cGVkZWYgRiBmdW5jdGlvbl90eXBlO1wKKyAg
ICAgIHR5cGVkZWYgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RnVuY3Rpb248Rj46OlJl
c3VsdCByZXR1cm5fdHlwZTtcCisgICAgICB0eXBlZGVmIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50
ZXJuYWw6OkZ1bmN0aW9uPEY+OjpBcmd1bWVudFR1cGxlXAorICAgICAgICAgIGFyZ3NfdHlwZTtc
CisgICAgICBnbW9ja19JbXBsKHAwIyNfdHlwZSBnbW9ja19wMCwgcDEjI190eXBlIGdtb2NrX3Ax
LCBwMiMjX3R5cGUgZ21vY2tfcDIsIFwKKyAgICAgICAgICBwMyMjX3R5cGUgZ21vY2tfcDMsIHA0
IyNfdHlwZSBnbW9ja19wNCkgOiBwMChnbW9ja19wMCksIFwKKyAgICAgICAgICBwMShnbW9ja19w
MSksIHAyKGdtb2NrX3AyKSwgcDMoZ21vY2tfcDMpLCBwNChnbW9ja19wNCkge31cCisgICAgICB2
aXJ0dWFsIHJldHVybl90eXBlIFBlcmZvcm0oY29uc3QgYXJnc190eXBlJiBhcmdzKSB7XAorICAg
ICAgICByZXR1cm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWN0aW9uSGVscGVyPHJldHVybl90eXBl
LCBnbW9ja19JbXBsPjo6XAorICAgICAgICAgICAgUGVyZm9ybSh0aGlzLCBhcmdzKTtcCisgICAg
ICB9XAorICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIGFyZzBfdHlwZSwgdHlwZW5hbWUgYXJnMV90
eXBlLCB0eXBlbmFtZSBhcmcyX3R5cGUsIFwKKyAgICAgICAgICB0eXBlbmFtZSBhcmczX3R5cGUs
IHR5cGVuYW1lIGFyZzRfdHlwZSwgdHlwZW5hbWUgYXJnNV90eXBlLCBcCisgICAgICAgICAgdHlw
ZW5hbWUgYXJnNl90eXBlLCB0eXBlbmFtZSBhcmc3X3R5cGUsIHR5cGVuYW1lIGFyZzhfdHlwZSwg
XAorICAgICAgICAgIHR5cGVuYW1lIGFyZzlfdHlwZT5cCisgICAgICByZXR1cm5fdHlwZSBnbW9j
a19QZXJmb3JtSW1wbChjb25zdCBhcmdzX3R5cGUmIGFyZ3MsIGFyZzBfdHlwZSBhcmcwLCBcCisg
ICAgICAgICAgYXJnMV90eXBlIGFyZzEsIGFyZzJfdHlwZSBhcmcyLCBhcmczX3R5cGUgYXJnMywg
YXJnNF90eXBlIGFyZzQsIFwKKyAgICAgICAgICBhcmc1X3R5cGUgYXJnNSwgYXJnNl90eXBlIGFy
ZzYsIGFyZzdfdHlwZSBhcmc3LCBhcmc4X3R5cGUgYXJnOCwgXAorICAgICAgICAgIGFyZzlfdHlw
ZSBhcmc5KSBjb25zdDtcCisgICAgICBwMCMjX3R5cGUgcDA7XAorICAgICAgcDEjI190eXBlIHAx
O1wKKyAgICAgIHAyIyNfdHlwZSBwMjtcCisgICAgICBwMyMjX3R5cGUgcDM7XAorICAgICAgcDQj
I190eXBlIHA0O1wKKyAgICAgcHJpdmF0ZTpcCisgICAgICBHVEVTVF9ESVNBTExPV19BU1NJR05f
KGdtb2NrX0ltcGwpO1wKKyAgICB9O1wKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRj4gb3BlcmF0
b3IgOjp0ZXN0aW5nOjpBY3Rpb248Rj4oKSBjb25zdCB7XAorICAgICAgcmV0dXJuIDo6dGVzdGlu
Zzo6QWN0aW9uPEY+KG5ldyBnbW9ja19JbXBsPEY+KHAwLCBwMSwgcDIsIHAzLCBwNCkpO1wKKyAg
ICB9XAorICAgIHAwIyNfdHlwZSBwMDtcCisgICAgcDEjI190eXBlIHAxO1wKKyAgICBwMiMjX3R5
cGUgcDI7XAorICAgIHAzIyNfdHlwZSBwMztcCisgICAgcDQjI190eXBlIHA0O1wKKyAgIHByaXZh
dGU6XAorICAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8obmFtZSMjQWN0aW9uUDUpO1wKKyAgfTtc
CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGUsIHR5cGVuYW1lIHAxIyNfdHlwZSwgdHlw
ZW5hbWUgcDIjI190eXBlLCBcCisgICAgICB0eXBlbmFtZSBwMyMjX3R5cGUsIHR5cGVuYW1lIHA0
IyNfdHlwZT5cCisgIGlubGluZSBuYW1lIyNBY3Rpb25QNTxwMCMjX3R5cGUsIHAxIyNfdHlwZSwg
cDIjI190eXBlLCBwMyMjX3R5cGUsIFwKKyAgICAgIHA0IyNfdHlwZT4gbmFtZShwMCMjX3R5cGUg
cDAsIHAxIyNfdHlwZSBwMSwgcDIjI190eXBlIHAyLCBwMyMjX3R5cGUgcDMsIFwKKyAgICAgIHA0
IyNfdHlwZSBwNCkge1wKKyAgICByZXR1cm4gbmFtZSMjQWN0aW9uUDU8cDAjI190eXBlLCBwMSMj
X3R5cGUsIHAyIyNfdHlwZSwgcDMjI190eXBlLCBcCisgICAgICAgIHA0IyNfdHlwZT4ocDAsIHAx
LCBwMiwgcDMsIHA0KTtcCisgIH1cCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGUsIHR5
cGVuYW1lIHAxIyNfdHlwZSwgdHlwZW5hbWUgcDIjI190eXBlLCBcCisgICAgICB0eXBlbmFtZSBw
MyMjX3R5cGUsIHR5cGVuYW1lIHA0IyNfdHlwZT5cCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBGPlwK
KyAgdGVtcGxhdGUgPHR5cGVuYW1lIGFyZzBfdHlwZSwgdHlwZW5hbWUgYXJnMV90eXBlLCB0eXBl
bmFtZSBhcmcyX3R5cGUsIFwKKyAgICAgIHR5cGVuYW1lIGFyZzNfdHlwZSwgdHlwZW5hbWUgYXJn
NF90eXBlLCB0eXBlbmFtZSBhcmc1X3R5cGUsIFwKKyAgICAgIHR5cGVuYW1lIGFyZzZfdHlwZSwg
dHlwZW5hbWUgYXJnN190eXBlLCB0eXBlbmFtZSBhcmc4X3R5cGUsIFwKKyAgICAgIHR5cGVuYW1l
IGFyZzlfdHlwZT5cCisgIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPEY+
OjpSZXN1bHRcCisgICAgICBuYW1lIyNBY3Rpb25QNTxwMCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIj
I190eXBlLCBwMyMjX3R5cGUsIFwKKyAgICAgICAgICBwNCMjX3R5cGU+OjpnbW9ja19JbXBsPEY+
OjpnbW9ja19QZXJmb3JtSW1wbChcCisgICAgICAgICAgR01PQ0tfQUNUSU9OX0FSR19UWVBFU19B
TkRfTkFNRVNfVU5VU0VEXykgY29uc3QKKworI2RlZmluZSBBQ1RJT05fUDYobmFtZSwgcDAsIHAx
LCBwMiwgcDMsIHA0LCBwNSlcCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGUsIHR5cGVu
YW1lIHAxIyNfdHlwZSwgdHlwZW5hbWUgcDIjI190eXBlLCBcCisgICAgICB0eXBlbmFtZSBwMyMj
X3R5cGUsIHR5cGVuYW1lIHA0IyNfdHlwZSwgdHlwZW5hbWUgcDUjI190eXBlPlwKKyAgY2xhc3Mg
bmFtZSMjQWN0aW9uUDYge1wKKyAgIHB1YmxpYzpcCisgICAgbmFtZSMjQWN0aW9uUDYocDAjI190
eXBlIGdtb2NrX3AwLCBwMSMjX3R5cGUgZ21vY2tfcDEsIFwKKyAgICAgICAgcDIjI190eXBlIGdt
b2NrX3AyLCBwMyMjX3R5cGUgZ21vY2tfcDMsIHA0IyNfdHlwZSBnbW9ja19wNCwgXAorICAgICAg
ICBwNSMjX3R5cGUgZ21vY2tfcDUpIDogcDAoZ21vY2tfcDApLCBwMShnbW9ja19wMSksIHAyKGdt
b2NrX3AyKSwgXAorICAgICAgICBwMyhnbW9ja19wMyksIHA0KGdtb2NrX3A0KSwgcDUoZ21vY2tf
cDUpIHt9XAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGPlwKKyAgICBjbGFzcyBnbW9ja19JbXBs
IDogcHVibGljIDo6dGVzdGluZzo6QWN0aW9uSW50ZXJmYWNlPEY+IHtcCisgICAgIHB1YmxpYzpc
CisgICAgICB0eXBlZGVmIEYgZnVuY3Rpb25fdHlwZTtcCisgICAgICB0eXBlZGVmIHR5cGVuYW1l
IDo6dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpSZXN1bHQgcmV0dXJuX3R5cGU7XAor
ICAgICAgdHlwZWRlZiB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpGdW5jdGlvbjxGPjo6
QXJndW1lbnRUdXBsZVwKKyAgICAgICAgICBhcmdzX3R5cGU7XAorICAgICAgZ21vY2tfSW1wbChw
MCMjX3R5cGUgZ21vY2tfcDAsIHAxIyNfdHlwZSBnbW9ja19wMSwgcDIjI190eXBlIGdtb2NrX3Ay
LCBcCisgICAgICAgICAgcDMjI190eXBlIGdtb2NrX3AzLCBwNCMjX3R5cGUgZ21vY2tfcDQsIFwK
KyAgICAgICAgICBwNSMjX3R5cGUgZ21vY2tfcDUpIDogcDAoZ21vY2tfcDApLCBwMShnbW9ja19w
MSksIHAyKGdtb2NrX3AyKSwgXAorICAgICAgICAgIHAzKGdtb2NrX3AzKSwgcDQoZ21vY2tfcDQp
LCBwNShnbW9ja19wNSkge31cCisgICAgICB2aXJ0dWFsIHJldHVybl90eXBlIFBlcmZvcm0oY29u
c3QgYXJnc190eXBlJiBhcmdzKSB7XAorICAgICAgICByZXR1cm4gOjp0ZXN0aW5nOjppbnRlcm5h
bDo6QWN0aW9uSGVscGVyPHJldHVybl90eXBlLCBnbW9ja19JbXBsPjo6XAorICAgICAgICAgICAg
UGVyZm9ybSh0aGlzLCBhcmdzKTtcCisgICAgICB9XAorICAgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IGFyZzBfdHlwZSwgdHlwZW5hbWUgYXJnMV90eXBlLCB0eXBlbmFtZSBhcmcyX3R5cGUsIFwKKyAg
ICAgICAgICB0eXBlbmFtZSBhcmczX3R5cGUsIHR5cGVuYW1lIGFyZzRfdHlwZSwgdHlwZW5hbWUg
YXJnNV90eXBlLCBcCisgICAgICAgICAgdHlwZW5hbWUgYXJnNl90eXBlLCB0eXBlbmFtZSBhcmc3
X3R5cGUsIHR5cGVuYW1lIGFyZzhfdHlwZSwgXAorICAgICAgICAgIHR5cGVuYW1lIGFyZzlfdHlw
ZT5cCisgICAgICByZXR1cm5fdHlwZSBnbW9ja19QZXJmb3JtSW1wbChjb25zdCBhcmdzX3R5cGUm
IGFyZ3MsIGFyZzBfdHlwZSBhcmcwLCBcCisgICAgICAgICAgYXJnMV90eXBlIGFyZzEsIGFyZzJf
dHlwZSBhcmcyLCBhcmczX3R5cGUgYXJnMywgYXJnNF90eXBlIGFyZzQsIFwKKyAgICAgICAgICBh
cmc1X3R5cGUgYXJnNSwgYXJnNl90eXBlIGFyZzYsIGFyZzdfdHlwZSBhcmc3LCBhcmc4X3R5cGUg
YXJnOCwgXAorICAgICAgICAgIGFyZzlfdHlwZSBhcmc5KSBjb25zdDtcCisgICAgICBwMCMjX3R5
cGUgcDA7XAorICAgICAgcDEjI190eXBlIHAxO1wKKyAgICAgIHAyIyNfdHlwZSBwMjtcCisgICAg
ICBwMyMjX3R5cGUgcDM7XAorICAgICAgcDQjI190eXBlIHA0O1wKKyAgICAgIHA1IyNfdHlwZSBw
NTtcCisgICAgIHByaXZhdGU6XAorICAgICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhnbW9ja19J
bXBsKTtcCisgICAgfTtcCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+IG9wZXJhdG9yIDo6dGVz
dGluZzo6QWN0aW9uPEY+KCkgY29uc3Qge1wKKyAgICAgIHJldHVybiA6OnRlc3Rpbmc6OkFjdGlv
bjxGPihuZXcgZ21vY2tfSW1wbDxGPihwMCwgcDEsIHAyLCBwMywgcDQsIHA1KSk7XAorICAgIH1c
CisgICAgcDAjI190eXBlIHAwO1wKKyAgICBwMSMjX3R5cGUgcDE7XAorICAgIHAyIyNfdHlwZSBw
MjtcCisgICAgcDMjI190eXBlIHAzO1wKKyAgICBwNCMjX3R5cGUgcDQ7XAorICAgIHA1IyNfdHlw
ZSBwNTtcCisgICBwcml2YXRlOlwKKyAgICBHVEVTVF9ESVNBTExPV19BU1NJR05fKG5hbWUjI0Fj
dGlvblA2KTtcCisgIH07XAorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFt
ZSBwMSMjX3R5cGUsIHR5cGVuYW1lIHAyIyNfdHlwZSwgXAorICAgICAgdHlwZW5hbWUgcDMjI190
eXBlLCB0eXBlbmFtZSBwNCMjX3R5cGUsIHR5cGVuYW1lIHA1IyNfdHlwZT5cCisgIGlubGluZSBu
YW1lIyNBY3Rpb25QNjxwMCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIjI190eXBlLCBwMyMjX3R5cGUs
IFwKKyAgICAgIHA0IyNfdHlwZSwgcDUjI190eXBlPiBuYW1lKHAwIyNfdHlwZSBwMCwgcDEjI190
eXBlIHAxLCBwMiMjX3R5cGUgcDIsIFwKKyAgICAgIHAzIyNfdHlwZSBwMywgcDQjI190eXBlIHA0
LCBwNSMjX3R5cGUgcDUpIHtcCisgICAgcmV0dXJuIG5hbWUjI0FjdGlvblA2PHAwIyNfdHlwZSwg
cDEjI190eXBlLCBwMiMjX3R5cGUsIHAzIyNfdHlwZSwgXAorICAgICAgICBwNCMjX3R5cGUsIHA1
IyNfdHlwZT4ocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSk7XAorICB9XAorICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMjX3R5cGUsIHR5cGVuYW1lIHAyIyNfdHlwZSwg
XAorICAgICAgdHlwZW5hbWUgcDMjI190eXBlLCB0eXBlbmFtZSBwNCMjX3R5cGUsIHR5cGVuYW1l
IHA1IyNfdHlwZT5cCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBGPlwKKyAgdGVtcGxhdGUgPHR5cGVu
YW1lIGFyZzBfdHlwZSwgdHlwZW5hbWUgYXJnMV90eXBlLCB0eXBlbmFtZSBhcmcyX3R5cGUsIFwK
KyAgICAgIHR5cGVuYW1lIGFyZzNfdHlwZSwgdHlwZW5hbWUgYXJnNF90eXBlLCB0eXBlbmFtZSBh
cmc1X3R5cGUsIFwKKyAgICAgIHR5cGVuYW1lIGFyZzZfdHlwZSwgdHlwZW5hbWUgYXJnN190eXBl
LCB0eXBlbmFtZSBhcmc4X3R5cGUsIFwKKyAgICAgIHR5cGVuYW1lIGFyZzlfdHlwZT5cCisgIHR5
cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpSZXN1bHRcCisgICAgICBu
YW1lIyNBY3Rpb25QNjxwMCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIjI190eXBlLCBwMyMjX3R5cGUs
IHA0IyNfdHlwZSwgXAorICAgICAgICAgIHA1IyNfdHlwZT46Omdtb2NrX0ltcGw8Rj46Omdtb2Nr
X1BlcmZvcm1JbXBsKFwKKyAgICAgICAgICBHTU9DS19BQ1RJT05fQVJHX1RZUEVTX0FORF9OQU1F
U19VTlVTRURfKSBjb25zdAorCisjZGVmaW5lIEFDVElPTl9QNyhuYW1lLCBwMCwgcDEsIHAyLCBw
MywgcDQsIHA1LCBwNilcCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGUsIHR5cGVuYW1l
IHAxIyNfdHlwZSwgdHlwZW5hbWUgcDIjI190eXBlLCBcCisgICAgICB0eXBlbmFtZSBwMyMjX3R5
cGUsIHR5cGVuYW1lIHA0IyNfdHlwZSwgdHlwZW5hbWUgcDUjI190eXBlLCBcCisgICAgICB0eXBl
bmFtZSBwNiMjX3R5cGU+XAorICBjbGFzcyBuYW1lIyNBY3Rpb25QNyB7XAorICAgcHVibGljOlwK
KyAgICBuYW1lIyNBY3Rpb25QNyhwMCMjX3R5cGUgZ21vY2tfcDAsIHAxIyNfdHlwZSBnbW9ja19w
MSwgXAorICAgICAgICBwMiMjX3R5cGUgZ21vY2tfcDIsIHAzIyNfdHlwZSBnbW9ja19wMywgcDQj
I190eXBlIGdtb2NrX3A0LCBcCisgICAgICAgIHA1IyNfdHlwZSBnbW9ja19wNSwgcDYjI190eXBl
IGdtb2NrX3A2KSA6IHAwKGdtb2NrX3AwKSwgcDEoZ21vY2tfcDEpLCBcCisgICAgICAgIHAyKGdt
b2NrX3AyKSwgcDMoZ21vY2tfcDMpLCBwNChnbW9ja19wNCksIHA1KGdtb2NrX3A1KSwgXAorICAg
ICAgICBwNihnbW9ja19wNikge31cCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+XAorICAgIGNs
YXNzIGdtb2NrX0ltcGwgOiBwdWJsaWMgOjp0ZXN0aW5nOjpBY3Rpb25JbnRlcmZhY2U8Rj4ge1wK
KyAgICAgcHVibGljOlwKKyAgICAgIHR5cGVkZWYgRiBmdW5jdGlvbl90eXBlO1wKKyAgICAgIHR5
cGVkZWYgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RnVuY3Rpb248Rj46OlJlc3VsdCBy
ZXR1cm5fdHlwZTtcCisgICAgICB0eXBlZGVmIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6
OkZ1bmN0aW9uPEY+OjpBcmd1bWVudFR1cGxlXAorICAgICAgICAgIGFyZ3NfdHlwZTtcCisgICAg
ICBnbW9ja19JbXBsKHAwIyNfdHlwZSBnbW9ja19wMCwgcDEjI190eXBlIGdtb2NrX3AxLCBwMiMj
X3R5cGUgZ21vY2tfcDIsIFwKKyAgICAgICAgICBwMyMjX3R5cGUgZ21vY2tfcDMsIHA0IyNfdHlw
ZSBnbW9ja19wNCwgcDUjI190eXBlIGdtb2NrX3A1LCBcCisgICAgICAgICAgcDYjI190eXBlIGdt
b2NrX3A2KSA6IHAwKGdtb2NrX3AwKSwgcDEoZ21vY2tfcDEpLCBwMihnbW9ja19wMiksIFwKKyAg
ICAgICAgICBwMyhnbW9ja19wMyksIHA0KGdtb2NrX3A0KSwgcDUoZ21vY2tfcDUpLCBwNihnbW9j
a19wNikge31cCisgICAgICB2aXJ0dWFsIHJldHVybl90eXBlIFBlcmZvcm0oY29uc3QgYXJnc190
eXBlJiBhcmdzKSB7XAorICAgICAgICByZXR1cm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWN0aW9u
SGVscGVyPHJldHVybl90eXBlLCBnbW9ja19JbXBsPjo6XAorICAgICAgICAgICAgUGVyZm9ybSh0
aGlzLCBhcmdzKTtcCisgICAgICB9XAorICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIGFyZzBfdHlw
ZSwgdHlwZW5hbWUgYXJnMV90eXBlLCB0eXBlbmFtZSBhcmcyX3R5cGUsIFwKKyAgICAgICAgICB0
eXBlbmFtZSBhcmczX3R5cGUsIHR5cGVuYW1lIGFyZzRfdHlwZSwgdHlwZW5hbWUgYXJnNV90eXBl
LCBcCisgICAgICAgICAgdHlwZW5hbWUgYXJnNl90eXBlLCB0eXBlbmFtZSBhcmc3X3R5cGUsIHR5
cGVuYW1lIGFyZzhfdHlwZSwgXAorICAgICAgICAgIHR5cGVuYW1lIGFyZzlfdHlwZT5cCisgICAg
ICByZXR1cm5fdHlwZSBnbW9ja19QZXJmb3JtSW1wbChjb25zdCBhcmdzX3R5cGUmIGFyZ3MsIGFy
ZzBfdHlwZSBhcmcwLCBcCisgICAgICAgICAgYXJnMV90eXBlIGFyZzEsIGFyZzJfdHlwZSBhcmcy
LCBhcmczX3R5cGUgYXJnMywgYXJnNF90eXBlIGFyZzQsIFwKKyAgICAgICAgICBhcmc1X3R5cGUg
YXJnNSwgYXJnNl90eXBlIGFyZzYsIGFyZzdfdHlwZSBhcmc3LCBhcmc4X3R5cGUgYXJnOCwgXAor
ICAgICAgICAgIGFyZzlfdHlwZSBhcmc5KSBjb25zdDtcCisgICAgICBwMCMjX3R5cGUgcDA7XAor
ICAgICAgcDEjI190eXBlIHAxO1wKKyAgICAgIHAyIyNfdHlwZSBwMjtcCisgICAgICBwMyMjX3R5
cGUgcDM7XAorICAgICAgcDQjI190eXBlIHA0O1wKKyAgICAgIHA1IyNfdHlwZSBwNTtcCisgICAg
ICBwNiMjX3R5cGUgcDY7XAorICAgICBwcml2YXRlOlwKKyAgICAgIEdURVNUX0RJU0FMTE9XX0FT
U0lHTl8oZ21vY2tfSW1wbCk7XAorICAgIH07XAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGPiBv
cGVyYXRvciA6OnRlc3Rpbmc6OkFjdGlvbjxGPigpIGNvbnN0IHtcCisgICAgICByZXR1cm4gOjp0
ZXN0aW5nOjpBY3Rpb248Rj4obmV3IGdtb2NrX0ltcGw8Rj4ocDAsIHAxLCBwMiwgcDMsIHA0LCBw
NSwgXAorICAgICAgICAgIHA2KSk7XAorICAgIH1cCisgICAgcDAjI190eXBlIHAwO1wKKyAgICBw
MSMjX3R5cGUgcDE7XAorICAgIHAyIyNfdHlwZSBwMjtcCisgICAgcDMjI190eXBlIHAzO1wKKyAg
ICBwNCMjX3R5cGUgcDQ7XAorICAgIHA1IyNfdHlwZSBwNTtcCisgICAgcDYjI190eXBlIHA2O1wK
KyAgIHByaXZhdGU6XAorICAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8obmFtZSMjQWN0aW9uUDcp
O1wKKyAgfTtcCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGUsIHR5cGVuYW1lIHAxIyNf
dHlwZSwgdHlwZW5hbWUgcDIjI190eXBlLCBcCisgICAgICB0eXBlbmFtZSBwMyMjX3R5cGUsIHR5
cGVuYW1lIHA0IyNfdHlwZSwgdHlwZW5hbWUgcDUjI190eXBlLCBcCisgICAgICB0eXBlbmFtZSBw
NiMjX3R5cGU+XAorICBpbmxpbmUgbmFtZSMjQWN0aW9uUDc8cDAjI190eXBlLCBwMSMjX3R5cGUs
IHAyIyNfdHlwZSwgcDMjI190eXBlLCBcCisgICAgICBwNCMjX3R5cGUsIHA1IyNfdHlwZSwgcDYj
I190eXBlPiBuYW1lKHAwIyNfdHlwZSBwMCwgcDEjI190eXBlIHAxLCBcCisgICAgICBwMiMjX3R5
cGUgcDIsIHAzIyNfdHlwZSBwMywgcDQjI190eXBlIHA0LCBwNSMjX3R5cGUgcDUsIFwKKyAgICAg
IHA2IyNfdHlwZSBwNikge1wKKyAgICByZXR1cm4gbmFtZSMjQWN0aW9uUDc8cDAjI190eXBlLCBw
MSMjX3R5cGUsIHAyIyNfdHlwZSwgcDMjI190eXBlLCBcCisgICAgICAgIHA0IyNfdHlwZSwgcDUj
I190eXBlLCBwNiMjX3R5cGU+KHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2KTtcCisgIH1cCisg
IHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGUsIHR5cGVuYW1lIHAxIyNfdHlwZSwgdHlwZW5h
bWUgcDIjI190eXBlLCBcCisgICAgICB0eXBlbmFtZSBwMyMjX3R5cGUsIHR5cGVuYW1lIHA0IyNf
dHlwZSwgdHlwZW5hbWUgcDUjI190eXBlLCBcCisgICAgICB0eXBlbmFtZSBwNiMjX3R5cGU+XAor
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRj5cCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBhcmcwX3R5cGUs
IHR5cGVuYW1lIGFyZzFfdHlwZSwgdHlwZW5hbWUgYXJnMl90eXBlLCBcCisgICAgICB0eXBlbmFt
ZSBhcmczX3R5cGUsIHR5cGVuYW1lIGFyZzRfdHlwZSwgdHlwZW5hbWUgYXJnNV90eXBlLCBcCisg
ICAgICB0eXBlbmFtZSBhcmc2X3R5cGUsIHR5cGVuYW1lIGFyZzdfdHlwZSwgdHlwZW5hbWUgYXJn
OF90eXBlLCBcCisgICAgICB0eXBlbmFtZSBhcmc5X3R5cGU+XAorICB0eXBlbmFtZSA6OnRlc3Rp
bmc6OmludGVybmFsOjpGdW5jdGlvbjxGPjo6UmVzdWx0XAorICAgICAgbmFtZSMjQWN0aW9uUDc8
cDAjI190eXBlLCBwMSMjX3R5cGUsIHAyIyNfdHlwZSwgcDMjI190eXBlLCBwNCMjX3R5cGUsIFwK
KyAgICAgICAgICBwNSMjX3R5cGUsIHA2IyNfdHlwZT46Omdtb2NrX0ltcGw8Rj46Omdtb2NrX1Bl
cmZvcm1JbXBsKFwKKyAgICAgICAgICBHTU9DS19BQ1RJT05fQVJHX1RZUEVTX0FORF9OQU1FU19V
TlVTRURfKSBjb25zdAorCisjZGVmaW5lIEFDVElPTl9QOChuYW1lLCBwMCwgcDEsIHAyLCBwMywg
cDQsIHA1LCBwNiwgcDcpXAorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFt
ZSBwMSMjX3R5cGUsIHR5cGVuYW1lIHAyIyNfdHlwZSwgXAorICAgICAgdHlwZW5hbWUgcDMjI190
eXBlLCB0eXBlbmFtZSBwNCMjX3R5cGUsIHR5cGVuYW1lIHA1IyNfdHlwZSwgXAorICAgICAgdHlw
ZW5hbWUgcDYjI190eXBlLCB0eXBlbmFtZSBwNyMjX3R5cGU+XAorICBjbGFzcyBuYW1lIyNBY3Rp
b25QOCB7XAorICAgcHVibGljOlwKKyAgICBuYW1lIyNBY3Rpb25QOChwMCMjX3R5cGUgZ21vY2tf
cDAsIHAxIyNfdHlwZSBnbW9ja19wMSwgXAorICAgICAgICBwMiMjX3R5cGUgZ21vY2tfcDIsIHAz
IyNfdHlwZSBnbW9ja19wMywgcDQjI190eXBlIGdtb2NrX3A0LCBcCisgICAgICAgIHA1IyNfdHlw
ZSBnbW9ja19wNSwgcDYjI190eXBlIGdtb2NrX3A2LCBcCisgICAgICAgIHA3IyNfdHlwZSBnbW9j
a19wNykgOiBwMChnbW9ja19wMCksIHAxKGdtb2NrX3AxKSwgcDIoZ21vY2tfcDIpLCBcCisgICAg
ICAgIHAzKGdtb2NrX3AzKSwgcDQoZ21vY2tfcDQpLCBwNShnbW9ja19wNSksIHA2KGdtb2NrX3A2
KSwgXAorICAgICAgICBwNyhnbW9ja19wNykge31cCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+
XAorICAgIGNsYXNzIGdtb2NrX0ltcGwgOiBwdWJsaWMgOjp0ZXN0aW5nOjpBY3Rpb25JbnRlcmZh
Y2U8Rj4ge1wKKyAgICAgcHVibGljOlwKKyAgICAgIHR5cGVkZWYgRiBmdW5jdGlvbl90eXBlO1wK
KyAgICAgIHR5cGVkZWYgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RnVuY3Rpb248Rj46
OlJlc3VsdCByZXR1cm5fdHlwZTtcCisgICAgICB0eXBlZGVmIHR5cGVuYW1lIDo6dGVzdGluZzo6
aW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpBcmd1bWVudFR1cGxlXAorICAgICAgICAgIGFyZ3NfdHlw
ZTtcCisgICAgICBnbW9ja19JbXBsKHAwIyNfdHlwZSBnbW9ja19wMCwgcDEjI190eXBlIGdtb2Nr
X3AxLCBwMiMjX3R5cGUgZ21vY2tfcDIsIFwKKyAgICAgICAgICBwMyMjX3R5cGUgZ21vY2tfcDMs
IHA0IyNfdHlwZSBnbW9ja19wNCwgcDUjI190eXBlIGdtb2NrX3A1LCBcCisgICAgICAgICAgcDYj
I190eXBlIGdtb2NrX3A2LCBwNyMjX3R5cGUgZ21vY2tfcDcpIDogcDAoZ21vY2tfcDApLCBcCisg
ICAgICAgICAgcDEoZ21vY2tfcDEpLCBwMihnbW9ja19wMiksIHAzKGdtb2NrX3AzKSwgcDQoZ21v
Y2tfcDQpLCBcCisgICAgICAgICAgcDUoZ21vY2tfcDUpLCBwNihnbW9ja19wNiksIHA3KGdtb2Nr
X3A3KSB7fVwKKyAgICAgIHZpcnR1YWwgcmV0dXJuX3R5cGUgUGVyZm9ybShjb25zdCBhcmdzX3R5
cGUmIGFyZ3MpIHtcCisgICAgICAgIHJldHVybiA6OnRlc3Rpbmc6OmludGVybmFsOjpBY3Rpb25I
ZWxwZXI8cmV0dXJuX3R5cGUsIGdtb2NrX0ltcGw+OjpcCisgICAgICAgICAgICBQZXJmb3JtKHRo
aXMsIGFyZ3MpO1wKKyAgICAgIH1cCisgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgYXJnMF90eXBl
LCB0eXBlbmFtZSBhcmcxX3R5cGUsIHR5cGVuYW1lIGFyZzJfdHlwZSwgXAorICAgICAgICAgIHR5
cGVuYW1lIGFyZzNfdHlwZSwgdHlwZW5hbWUgYXJnNF90eXBlLCB0eXBlbmFtZSBhcmc1X3R5cGUs
IFwKKyAgICAgICAgICB0eXBlbmFtZSBhcmc2X3R5cGUsIHR5cGVuYW1lIGFyZzdfdHlwZSwgdHlw
ZW5hbWUgYXJnOF90eXBlLCBcCisgICAgICAgICAgdHlwZW5hbWUgYXJnOV90eXBlPlwKKyAgICAg
IHJldHVybl90eXBlIGdtb2NrX1BlcmZvcm1JbXBsKGNvbnN0IGFyZ3NfdHlwZSYgYXJncywgYXJn
MF90eXBlIGFyZzAsIFwKKyAgICAgICAgICBhcmcxX3R5cGUgYXJnMSwgYXJnMl90eXBlIGFyZzIs
IGFyZzNfdHlwZSBhcmczLCBhcmc0X3R5cGUgYXJnNCwgXAorICAgICAgICAgIGFyZzVfdHlwZSBh
cmc1LCBhcmc2X3R5cGUgYXJnNiwgYXJnN190eXBlIGFyZzcsIGFyZzhfdHlwZSBhcmc4LCBcCisg
ICAgICAgICAgYXJnOV90eXBlIGFyZzkpIGNvbnN0O1wKKyAgICAgIHAwIyNfdHlwZSBwMDtcCisg
ICAgICBwMSMjX3R5cGUgcDE7XAorICAgICAgcDIjI190eXBlIHAyO1wKKyAgICAgIHAzIyNfdHlw
ZSBwMztcCisgICAgICBwNCMjX3R5cGUgcDQ7XAorICAgICAgcDUjI190eXBlIHA1O1wKKyAgICAg
IHA2IyNfdHlwZSBwNjtcCisgICAgICBwNyMjX3R5cGUgcDc7XAorICAgICBwcml2YXRlOlwKKyAg
ICAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oZ21vY2tfSW1wbCk7XAorICAgIH07XAorICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBGPiBvcGVyYXRvciA6OnRlc3Rpbmc6OkFjdGlvbjxGPigpIGNvbnN0
IHtcCisgICAgICByZXR1cm4gOjp0ZXN0aW5nOjpBY3Rpb248Rj4obmV3IGdtb2NrX0ltcGw8Rj4o
cDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgXAorICAgICAgICAgIHA2LCBwNykpO1wKKyAgICB9XAor
ICAgIHAwIyNfdHlwZSBwMDtcCisgICAgcDEjI190eXBlIHAxO1wKKyAgICBwMiMjX3R5cGUgcDI7
XAorICAgIHAzIyNfdHlwZSBwMztcCisgICAgcDQjI190eXBlIHA0O1wKKyAgICBwNSMjX3R5cGUg
cDU7XAorICAgIHA2IyNfdHlwZSBwNjtcCisgICAgcDcjI190eXBlIHA3O1wKKyAgIHByaXZhdGU6
XAorICAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8obmFtZSMjQWN0aW9uUDgpO1wKKyAgfTtcCisg
IHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGUsIHR5cGVuYW1lIHAxIyNfdHlwZSwgdHlwZW5h
bWUgcDIjI190eXBlLCBcCisgICAgICB0eXBlbmFtZSBwMyMjX3R5cGUsIHR5cGVuYW1lIHA0IyNf
dHlwZSwgdHlwZW5hbWUgcDUjI190eXBlLCBcCisgICAgICB0eXBlbmFtZSBwNiMjX3R5cGUsIHR5
cGVuYW1lIHA3IyNfdHlwZT5cCisgIGlubGluZSBuYW1lIyNBY3Rpb25QODxwMCMjX3R5cGUsIHAx
IyNfdHlwZSwgcDIjI190eXBlLCBwMyMjX3R5cGUsIFwKKyAgICAgIHA0IyNfdHlwZSwgcDUjI190
eXBlLCBwNiMjX3R5cGUsIHA3IyNfdHlwZT4gbmFtZShwMCMjX3R5cGUgcDAsIFwKKyAgICAgIHAx
IyNfdHlwZSBwMSwgcDIjI190eXBlIHAyLCBwMyMjX3R5cGUgcDMsIHA0IyNfdHlwZSBwNCwgcDUj
I190eXBlIHA1LCBcCisgICAgICBwNiMjX3R5cGUgcDYsIHA3IyNfdHlwZSBwNykge1wKKyAgICBy
ZXR1cm4gbmFtZSMjQWN0aW9uUDg8cDAjI190eXBlLCBwMSMjX3R5cGUsIHAyIyNfdHlwZSwgcDMj
I190eXBlLCBcCisgICAgICAgIHA0IyNfdHlwZSwgcDUjI190eXBlLCBwNiMjX3R5cGUsIHA3IyNf
dHlwZT4ocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgXAorICAgICAgICBwNiwgcDcpO1wKKyAgfVwK
KyAgdGVtcGxhdGUgPHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlwZW5hbWUgcDEjI190eXBlLCB0eXBl
bmFtZSBwMiMjX3R5cGUsIFwKKyAgICAgIHR5cGVuYW1lIHAzIyNfdHlwZSwgdHlwZW5hbWUgcDQj
I190eXBlLCB0eXBlbmFtZSBwNSMjX3R5cGUsIFwKKyAgICAgIHR5cGVuYW1lIHA2IyNfdHlwZSwg
dHlwZW5hbWUgcDcjI190eXBlPlwKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+XAorICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgYXJnMF90eXBlLCB0eXBlbmFtZSBhcmcxX3R5cGUsIHR5cGVuYW1lIGFyZzJf
dHlwZSwgXAorICAgICAgdHlwZW5hbWUgYXJnM190eXBlLCB0eXBlbmFtZSBhcmc0X3R5cGUsIHR5
cGVuYW1lIGFyZzVfdHlwZSwgXAorICAgICAgdHlwZW5hbWUgYXJnNl90eXBlLCB0eXBlbmFtZSBh
cmc3X3R5cGUsIHR5cGVuYW1lIGFyZzhfdHlwZSwgXAorICAgICAgdHlwZW5hbWUgYXJnOV90eXBl
PlwKKyAgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RnVuY3Rpb248Rj46OlJlc3VsdFwK
KyAgICAgIG5hbWUjI0FjdGlvblA4PHAwIyNfdHlwZSwgcDEjI190eXBlLCBwMiMjX3R5cGUsIHAz
IyNfdHlwZSwgcDQjI190eXBlLCBcCisgICAgICAgICAgcDUjI190eXBlLCBwNiMjX3R5cGUsIFwK
KyAgICAgICAgICBwNyMjX3R5cGU+OjpnbW9ja19JbXBsPEY+OjpnbW9ja19QZXJmb3JtSW1wbChc
CisgICAgICAgICAgR01PQ0tfQUNUSU9OX0FSR19UWVBFU19BTkRfTkFNRVNfVU5VU0VEXykgY29u
c3QKKworI2RlZmluZSBBQ1RJT05fUDkobmFtZSwgcDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYs
IHA3LCBwOClcCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGUsIHR5cGVuYW1lIHAxIyNf
dHlwZSwgdHlwZW5hbWUgcDIjI190eXBlLCBcCisgICAgICB0eXBlbmFtZSBwMyMjX3R5cGUsIHR5
cGVuYW1lIHA0IyNfdHlwZSwgdHlwZW5hbWUgcDUjI190eXBlLCBcCisgICAgICB0eXBlbmFtZSBw
NiMjX3R5cGUsIHR5cGVuYW1lIHA3IyNfdHlwZSwgdHlwZW5hbWUgcDgjI190eXBlPlwKKyAgY2xh
c3MgbmFtZSMjQWN0aW9uUDkge1wKKyAgIHB1YmxpYzpcCisgICAgbmFtZSMjQWN0aW9uUDkocDAj
I190eXBlIGdtb2NrX3AwLCBwMSMjX3R5cGUgZ21vY2tfcDEsIFwKKyAgICAgICAgcDIjI190eXBl
IGdtb2NrX3AyLCBwMyMjX3R5cGUgZ21vY2tfcDMsIHA0IyNfdHlwZSBnbW9ja19wNCwgXAorICAg
ICAgICBwNSMjX3R5cGUgZ21vY2tfcDUsIHA2IyNfdHlwZSBnbW9ja19wNiwgcDcjI190eXBlIGdt
b2NrX3A3LCBcCisgICAgICAgIHA4IyNfdHlwZSBnbW9ja19wOCkgOiBwMChnbW9ja19wMCksIHAx
KGdtb2NrX3AxKSwgcDIoZ21vY2tfcDIpLCBcCisgICAgICAgIHAzKGdtb2NrX3AzKSwgcDQoZ21v
Y2tfcDQpLCBwNShnbW9ja19wNSksIHA2KGdtb2NrX3A2KSwgcDcoZ21vY2tfcDcpLCBcCisgICAg
ICAgIHA4KGdtb2NrX3A4KSB7fVwKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRj5cCisgICAgY2xh
c3MgZ21vY2tfSW1wbCA6IHB1YmxpYyA6OnRlc3Rpbmc6OkFjdGlvbkludGVyZmFjZTxGPiB7XAor
ICAgICBwdWJsaWM6XAorICAgICAgdHlwZWRlZiBGIGZ1bmN0aW9uX3R5cGU7XAorICAgICAgdHlw
ZWRlZiB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpGdW5jdGlvbjxGPjo6UmVzdWx0IHJl
dHVybl90eXBlO1wKKyAgICAgIHR5cGVkZWYgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6
RnVuY3Rpb248Rj46OkFyZ3VtZW50VHVwbGVcCisgICAgICAgICAgYXJnc190eXBlO1wKKyAgICAg
IGdtb2NrX0ltcGwocDAjI190eXBlIGdtb2NrX3AwLCBwMSMjX3R5cGUgZ21vY2tfcDEsIHAyIyNf
dHlwZSBnbW9ja19wMiwgXAorICAgICAgICAgIHAzIyNfdHlwZSBnbW9ja19wMywgcDQjI190eXBl
IGdtb2NrX3A0LCBwNSMjX3R5cGUgZ21vY2tfcDUsIFwKKyAgICAgICAgICBwNiMjX3R5cGUgZ21v
Y2tfcDYsIHA3IyNfdHlwZSBnbW9ja19wNywgXAorICAgICAgICAgIHA4IyNfdHlwZSBnbW9ja19w
OCkgOiBwMChnbW9ja19wMCksIHAxKGdtb2NrX3AxKSwgcDIoZ21vY2tfcDIpLCBcCisgICAgICAg
ICAgcDMoZ21vY2tfcDMpLCBwNChnbW9ja19wNCksIHA1KGdtb2NrX3A1KSwgcDYoZ21vY2tfcDYp
LCBcCisgICAgICAgICAgcDcoZ21vY2tfcDcpLCBwOChnbW9ja19wOCkge31cCisgICAgICB2aXJ0
dWFsIHJldHVybl90eXBlIFBlcmZvcm0oY29uc3QgYXJnc190eXBlJiBhcmdzKSB7XAorICAgICAg
ICByZXR1cm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWN0aW9uSGVscGVyPHJldHVybl90eXBlLCBn
bW9ja19JbXBsPjo6XAorICAgICAgICAgICAgUGVyZm9ybSh0aGlzLCBhcmdzKTtcCisgICAgICB9
XAorICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIGFyZzBfdHlwZSwgdHlwZW5hbWUgYXJnMV90eXBl
LCB0eXBlbmFtZSBhcmcyX3R5cGUsIFwKKyAgICAgICAgICB0eXBlbmFtZSBhcmczX3R5cGUsIHR5
cGVuYW1lIGFyZzRfdHlwZSwgdHlwZW5hbWUgYXJnNV90eXBlLCBcCisgICAgICAgICAgdHlwZW5h
bWUgYXJnNl90eXBlLCB0eXBlbmFtZSBhcmc3X3R5cGUsIHR5cGVuYW1lIGFyZzhfdHlwZSwgXAor
ICAgICAgICAgIHR5cGVuYW1lIGFyZzlfdHlwZT5cCisgICAgICByZXR1cm5fdHlwZSBnbW9ja19Q
ZXJmb3JtSW1wbChjb25zdCBhcmdzX3R5cGUmIGFyZ3MsIGFyZzBfdHlwZSBhcmcwLCBcCisgICAg
ICAgICAgYXJnMV90eXBlIGFyZzEsIGFyZzJfdHlwZSBhcmcyLCBhcmczX3R5cGUgYXJnMywgYXJn
NF90eXBlIGFyZzQsIFwKKyAgICAgICAgICBhcmc1X3R5cGUgYXJnNSwgYXJnNl90eXBlIGFyZzYs
IGFyZzdfdHlwZSBhcmc3LCBhcmc4X3R5cGUgYXJnOCwgXAorICAgICAgICAgIGFyZzlfdHlwZSBh
cmc5KSBjb25zdDtcCisgICAgICBwMCMjX3R5cGUgcDA7XAorICAgICAgcDEjI190eXBlIHAxO1wK
KyAgICAgIHAyIyNfdHlwZSBwMjtcCisgICAgICBwMyMjX3R5cGUgcDM7XAorICAgICAgcDQjI190
eXBlIHA0O1wKKyAgICAgIHA1IyNfdHlwZSBwNTtcCisgICAgICBwNiMjX3R5cGUgcDY7XAorICAg
ICAgcDcjI190eXBlIHA3O1wKKyAgICAgIHA4IyNfdHlwZSBwODtcCisgICAgIHByaXZhdGU6XAor
ICAgICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhnbW9ja19JbXBsKTtcCisgICAgfTtcCisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIEY+IG9wZXJhdG9yIDo6dGVzdGluZzo6QWN0aW9uPEY+KCkgY29u
c3Qge1wKKyAgICAgIHJldHVybiA6OnRlc3Rpbmc6OkFjdGlvbjxGPihuZXcgZ21vY2tfSW1wbDxG
PihwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBcCisgICAgICAgICAgcDYsIHA3LCBwOCkpO1wKKyAg
ICB9XAorICAgIHAwIyNfdHlwZSBwMDtcCisgICAgcDEjI190eXBlIHAxO1wKKyAgICBwMiMjX3R5
cGUgcDI7XAorICAgIHAzIyNfdHlwZSBwMztcCisgICAgcDQjI190eXBlIHA0O1wKKyAgICBwNSMj
X3R5cGUgcDU7XAorICAgIHA2IyNfdHlwZSBwNjtcCisgICAgcDcjI190eXBlIHA3O1wKKyAgICBw
OCMjX3R5cGUgcDg7XAorICAgcHJpdmF0ZTpcCisgICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhu
YW1lIyNBY3Rpb25QOSk7XAorICB9O1wKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIHAwIyNfdHlwZSwg
dHlwZW5hbWUgcDEjI190eXBlLCB0eXBlbmFtZSBwMiMjX3R5cGUsIFwKKyAgICAgIHR5cGVuYW1l
IHAzIyNfdHlwZSwgdHlwZW5hbWUgcDQjI190eXBlLCB0eXBlbmFtZSBwNSMjX3R5cGUsIFwKKyAg
ICAgIHR5cGVuYW1lIHA2IyNfdHlwZSwgdHlwZW5hbWUgcDcjI190eXBlLCB0eXBlbmFtZSBwOCMj
X3R5cGU+XAorICBpbmxpbmUgbmFtZSMjQWN0aW9uUDk8cDAjI190eXBlLCBwMSMjX3R5cGUsIHAy
IyNfdHlwZSwgcDMjI190eXBlLCBcCisgICAgICBwNCMjX3R5cGUsIHA1IyNfdHlwZSwgcDYjI190
eXBlLCBwNyMjX3R5cGUsIFwKKyAgICAgIHA4IyNfdHlwZT4gbmFtZShwMCMjX3R5cGUgcDAsIHAx
IyNfdHlwZSBwMSwgcDIjI190eXBlIHAyLCBwMyMjX3R5cGUgcDMsIFwKKyAgICAgIHA0IyNfdHlw
ZSBwNCwgcDUjI190eXBlIHA1LCBwNiMjX3R5cGUgcDYsIHA3IyNfdHlwZSBwNywgXAorICAgICAg
cDgjI190eXBlIHA4KSB7XAorICAgIHJldHVybiBuYW1lIyNBY3Rpb25QOTxwMCMjX3R5cGUsIHAx
IyNfdHlwZSwgcDIjI190eXBlLCBwMyMjX3R5cGUsIFwKKyAgICAgICAgcDQjI190eXBlLCBwNSMj
X3R5cGUsIHA2IyNfdHlwZSwgcDcjI190eXBlLCBwOCMjX3R5cGU+KHAwLCBwMSwgcDIsIFwKKyAg
ICAgICAgcDMsIHA0LCBwNSwgcDYsIHA3LCBwOCk7XAorICB9XAorICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMjX3R5cGUsIHR5cGVuYW1lIHAyIyNfdHlwZSwgXAor
ICAgICAgdHlwZW5hbWUgcDMjI190eXBlLCB0eXBlbmFtZSBwNCMjX3R5cGUsIHR5cGVuYW1lIHA1
IyNfdHlwZSwgXAorICAgICAgdHlwZW5hbWUgcDYjI190eXBlLCB0eXBlbmFtZSBwNyMjX3R5cGUs
IHR5cGVuYW1lIHA4IyNfdHlwZT5cCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBGPlwKKyAgdGVtcGxh
dGUgPHR5cGVuYW1lIGFyZzBfdHlwZSwgdHlwZW5hbWUgYXJnMV90eXBlLCB0eXBlbmFtZSBhcmcy
X3R5cGUsIFwKKyAgICAgIHR5cGVuYW1lIGFyZzNfdHlwZSwgdHlwZW5hbWUgYXJnNF90eXBlLCB0
eXBlbmFtZSBhcmc1X3R5cGUsIFwKKyAgICAgIHR5cGVuYW1lIGFyZzZfdHlwZSwgdHlwZW5hbWUg
YXJnN190eXBlLCB0eXBlbmFtZSBhcmc4X3R5cGUsIFwKKyAgICAgIHR5cGVuYW1lIGFyZzlfdHlw
ZT5cCisgIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpSZXN1bHRc
CisgICAgICBuYW1lIyNBY3Rpb25QOTxwMCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIjI190eXBlLCBw
MyMjX3R5cGUsIHA0IyNfdHlwZSwgXAorICAgICAgICAgIHA1IyNfdHlwZSwgcDYjI190eXBlLCBw
NyMjX3R5cGUsIFwKKyAgICAgICAgICBwOCMjX3R5cGU+OjpnbW9ja19JbXBsPEY+OjpnbW9ja19Q
ZXJmb3JtSW1wbChcCisgICAgICAgICAgR01PQ0tfQUNUSU9OX0FSR19UWVBFU19BTkRfTkFNRVNf
VU5VU0VEXykgY29uc3QKKworI2RlZmluZSBBQ1RJT05fUDEwKG5hbWUsIHAwLCBwMSwgcDIsIHAz
LCBwNCwgcDUsIHA2LCBwNywgcDgsIHA5KVwKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIHAwIyNfdHlw
ZSwgdHlwZW5hbWUgcDEjI190eXBlLCB0eXBlbmFtZSBwMiMjX3R5cGUsIFwKKyAgICAgIHR5cGVu
YW1lIHAzIyNfdHlwZSwgdHlwZW5hbWUgcDQjI190eXBlLCB0eXBlbmFtZSBwNSMjX3R5cGUsIFwK
KyAgICAgIHR5cGVuYW1lIHA2IyNfdHlwZSwgdHlwZW5hbWUgcDcjI190eXBlLCB0eXBlbmFtZSBw
OCMjX3R5cGUsIFwKKyAgICAgIHR5cGVuYW1lIHA5IyNfdHlwZT5cCisgIGNsYXNzIG5hbWUjI0Fj
dGlvblAxMCB7XAorICAgcHVibGljOlwKKyAgICBuYW1lIyNBY3Rpb25QMTAocDAjI190eXBlIGdt
b2NrX3AwLCBwMSMjX3R5cGUgZ21vY2tfcDEsIFwKKyAgICAgICAgcDIjI190eXBlIGdtb2NrX3Ay
LCBwMyMjX3R5cGUgZ21vY2tfcDMsIHA0IyNfdHlwZSBnbW9ja19wNCwgXAorICAgICAgICBwNSMj
X3R5cGUgZ21vY2tfcDUsIHA2IyNfdHlwZSBnbW9ja19wNiwgcDcjI190eXBlIGdtb2NrX3A3LCBc
CisgICAgICAgIHA4IyNfdHlwZSBnbW9ja19wOCwgcDkjI190eXBlIGdtb2NrX3A5KSA6IHAwKGdt
b2NrX3AwKSwgcDEoZ21vY2tfcDEpLCBcCisgICAgICAgIHAyKGdtb2NrX3AyKSwgcDMoZ21vY2tf
cDMpLCBwNChnbW9ja19wNCksIHA1KGdtb2NrX3A1KSwgcDYoZ21vY2tfcDYpLCBcCisgICAgICAg
IHA3KGdtb2NrX3A3KSwgcDgoZ21vY2tfcDgpLCBwOShnbW9ja19wOSkge31cCisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIEY+XAorICAgIGNsYXNzIGdtb2NrX0ltcGwgOiBwdWJsaWMgOjp0ZXN0aW5n
OjpBY3Rpb25JbnRlcmZhY2U8Rj4ge1wKKyAgICAgcHVibGljOlwKKyAgICAgIHR5cGVkZWYgRiBm
dW5jdGlvbl90eXBlO1wKKyAgICAgIHR5cGVkZWYgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5h
bDo6RnVuY3Rpb248Rj46OlJlc3VsdCByZXR1cm5fdHlwZTtcCisgICAgICB0eXBlZGVmIHR5cGVu
YW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpBcmd1bWVudFR1cGxlXAorICAg
ICAgICAgIGFyZ3NfdHlwZTtcCisgICAgICBnbW9ja19JbXBsKHAwIyNfdHlwZSBnbW9ja19wMCwg
cDEjI190eXBlIGdtb2NrX3AxLCBwMiMjX3R5cGUgZ21vY2tfcDIsIFwKKyAgICAgICAgICBwMyMj
X3R5cGUgZ21vY2tfcDMsIHA0IyNfdHlwZSBnbW9ja19wNCwgcDUjI190eXBlIGdtb2NrX3A1LCBc
CisgICAgICAgICAgcDYjI190eXBlIGdtb2NrX3A2LCBwNyMjX3R5cGUgZ21vY2tfcDcsIHA4IyNf
dHlwZSBnbW9ja19wOCwgXAorICAgICAgICAgIHA5IyNfdHlwZSBnbW9ja19wOSkgOiBwMChnbW9j
a19wMCksIHAxKGdtb2NrX3AxKSwgcDIoZ21vY2tfcDIpLCBcCisgICAgICAgICAgcDMoZ21vY2tf
cDMpLCBwNChnbW9ja19wNCksIHA1KGdtb2NrX3A1KSwgcDYoZ21vY2tfcDYpLCBcCisgICAgICAg
ICAgcDcoZ21vY2tfcDcpLCBwOChnbW9ja19wOCksIHA5KGdtb2NrX3A5KSB7fVwKKyAgICAgIHZp
cnR1YWwgcmV0dXJuX3R5cGUgUGVyZm9ybShjb25zdCBhcmdzX3R5cGUmIGFyZ3MpIHtcCisgICAg
ICAgIHJldHVybiA6OnRlc3Rpbmc6OmludGVybmFsOjpBY3Rpb25IZWxwZXI8cmV0dXJuX3R5cGUs
IGdtb2NrX0ltcGw+OjpcCisgICAgICAgICAgICBQZXJmb3JtKHRoaXMsIGFyZ3MpO1wKKyAgICAg
IH1cCisgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgYXJnMF90eXBlLCB0eXBlbmFtZSBhcmcxX3R5
cGUsIHR5cGVuYW1lIGFyZzJfdHlwZSwgXAorICAgICAgICAgIHR5cGVuYW1lIGFyZzNfdHlwZSwg
dHlwZW5hbWUgYXJnNF90eXBlLCB0eXBlbmFtZSBhcmc1X3R5cGUsIFwKKyAgICAgICAgICB0eXBl
bmFtZSBhcmc2X3R5cGUsIHR5cGVuYW1lIGFyZzdfdHlwZSwgdHlwZW5hbWUgYXJnOF90eXBlLCBc
CisgICAgICAgICAgdHlwZW5hbWUgYXJnOV90eXBlPlwKKyAgICAgIHJldHVybl90eXBlIGdtb2Nr
X1BlcmZvcm1JbXBsKGNvbnN0IGFyZ3NfdHlwZSYgYXJncywgYXJnMF90eXBlIGFyZzAsIFwKKyAg
ICAgICAgICBhcmcxX3R5cGUgYXJnMSwgYXJnMl90eXBlIGFyZzIsIGFyZzNfdHlwZSBhcmczLCBh
cmc0X3R5cGUgYXJnNCwgXAorICAgICAgICAgIGFyZzVfdHlwZSBhcmc1LCBhcmc2X3R5cGUgYXJn
NiwgYXJnN190eXBlIGFyZzcsIGFyZzhfdHlwZSBhcmc4LCBcCisgICAgICAgICAgYXJnOV90eXBl
IGFyZzkpIGNvbnN0O1wKKyAgICAgIHAwIyNfdHlwZSBwMDtcCisgICAgICBwMSMjX3R5cGUgcDE7
XAorICAgICAgcDIjI190eXBlIHAyO1wKKyAgICAgIHAzIyNfdHlwZSBwMztcCisgICAgICBwNCMj
X3R5cGUgcDQ7XAorICAgICAgcDUjI190eXBlIHA1O1wKKyAgICAgIHA2IyNfdHlwZSBwNjtcCisg
ICAgICBwNyMjX3R5cGUgcDc7XAorICAgICAgcDgjI190eXBlIHA4O1wKKyAgICAgIHA5IyNfdHlw
ZSBwOTtcCisgICAgIHByaXZhdGU6XAorICAgICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhnbW9j
a19JbXBsKTtcCisgICAgfTtcCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+IG9wZXJhdG9yIDo6
dGVzdGluZzo6QWN0aW9uPEY+KCkgY29uc3Qge1wKKyAgICAgIHJldHVybiA6OnRlc3Rpbmc6OkFj
dGlvbjxGPihuZXcgZ21vY2tfSW1wbDxGPihwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBcCisgICAg
ICAgICAgcDYsIHA3LCBwOCwgcDkpKTtcCisgICAgfVwKKyAgICBwMCMjX3R5cGUgcDA7XAorICAg
IHAxIyNfdHlwZSBwMTtcCisgICAgcDIjI190eXBlIHAyO1wKKyAgICBwMyMjX3R5cGUgcDM7XAor
ICAgIHA0IyNfdHlwZSBwNDtcCisgICAgcDUjI190eXBlIHA1O1wKKyAgICBwNiMjX3R5cGUgcDY7
XAorICAgIHA3IyNfdHlwZSBwNztcCisgICAgcDgjI190eXBlIHA4O1wKKyAgICBwOSMjX3R5cGUg
cDk7XAorICAgcHJpdmF0ZTpcCisgICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhuYW1lIyNBY3Rp
b25QMTApO1wKKyAgfTtcCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGUsIHR5cGVuYW1l
IHAxIyNfdHlwZSwgdHlwZW5hbWUgcDIjI190eXBlLCBcCisgICAgICB0eXBlbmFtZSBwMyMjX3R5
cGUsIHR5cGVuYW1lIHA0IyNfdHlwZSwgdHlwZW5hbWUgcDUjI190eXBlLCBcCisgICAgICB0eXBl
bmFtZSBwNiMjX3R5cGUsIHR5cGVuYW1lIHA3IyNfdHlwZSwgdHlwZW5hbWUgcDgjI190eXBlLCBc
CisgICAgICB0eXBlbmFtZSBwOSMjX3R5cGU+XAorICBpbmxpbmUgbmFtZSMjQWN0aW9uUDEwPHAw
IyNfdHlwZSwgcDEjI190eXBlLCBwMiMjX3R5cGUsIHAzIyNfdHlwZSwgXAorICAgICAgcDQjI190
eXBlLCBwNSMjX3R5cGUsIHA2IyNfdHlwZSwgcDcjI190eXBlLCBwOCMjX3R5cGUsIFwKKyAgICAg
IHA5IyNfdHlwZT4gbmFtZShwMCMjX3R5cGUgcDAsIHAxIyNfdHlwZSBwMSwgcDIjI190eXBlIHAy
LCBwMyMjX3R5cGUgcDMsIFwKKyAgICAgIHA0IyNfdHlwZSBwNCwgcDUjI190eXBlIHA1LCBwNiMj
X3R5cGUgcDYsIHA3IyNfdHlwZSBwNywgcDgjI190eXBlIHA4LCBcCisgICAgICBwOSMjX3R5cGUg
cDkpIHtcCisgICAgcmV0dXJuIG5hbWUjI0FjdGlvblAxMDxwMCMjX3R5cGUsIHAxIyNfdHlwZSwg
cDIjI190eXBlLCBwMyMjX3R5cGUsIFwKKyAgICAgICAgcDQjI190eXBlLCBwNSMjX3R5cGUsIHA2
IyNfdHlwZSwgcDcjI190eXBlLCBwOCMjX3R5cGUsIHA5IyNfdHlwZT4ocDAsIFwKKyAgICAgICAg
cDEsIHAyLCBwMywgcDQsIHA1LCBwNiwgcDcsIHA4LCBwOSk7XAorICB9XAorICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMjX3R5cGUsIHR5cGVuYW1lIHAyIyNfdHlw
ZSwgXAorICAgICAgdHlwZW5hbWUgcDMjI190eXBlLCB0eXBlbmFtZSBwNCMjX3R5cGUsIHR5cGVu
YW1lIHA1IyNfdHlwZSwgXAorICAgICAgdHlwZW5hbWUgcDYjI190eXBlLCB0eXBlbmFtZSBwNyMj
X3R5cGUsIHR5cGVuYW1lIHA4IyNfdHlwZSwgXAorICAgICAgdHlwZW5hbWUgcDkjI190eXBlPlwK
KyAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+XAorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgYXJnMF90eXBl
LCB0eXBlbmFtZSBhcmcxX3R5cGUsIHR5cGVuYW1lIGFyZzJfdHlwZSwgXAorICAgICAgdHlwZW5h
bWUgYXJnM190eXBlLCB0eXBlbmFtZSBhcmc0X3R5cGUsIHR5cGVuYW1lIGFyZzVfdHlwZSwgXAor
ICAgICAgdHlwZW5hbWUgYXJnNl90eXBlLCB0eXBlbmFtZSBhcmc3X3R5cGUsIHR5cGVuYW1lIGFy
ZzhfdHlwZSwgXAorICAgICAgdHlwZW5hbWUgYXJnOV90eXBlPlwKKyAgdHlwZW5hbWUgOjp0ZXN0
aW5nOjppbnRlcm5hbDo6RnVuY3Rpb248Rj46OlJlc3VsdFwKKyAgICAgIG5hbWUjI0FjdGlvblAx
MDxwMCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIjI190eXBlLCBwMyMjX3R5cGUsIHA0IyNfdHlwZSwg
XAorICAgICAgICAgIHA1IyNfdHlwZSwgcDYjI190eXBlLCBwNyMjX3R5cGUsIHA4IyNfdHlwZSwg
XAorICAgICAgICAgIHA5IyNfdHlwZT46Omdtb2NrX0ltcGw8Rj46Omdtb2NrX1BlcmZvcm1JbXBs
KFwKKyAgICAgICAgICBHTU9DS19BQ1RJT05fQVJHX1RZUEVTX0FORF9OQU1FU19VTlVTRURfKSBj
b25zdAorCituYW1lc3BhY2UgdGVzdGluZyB7CisKKworLy8gVGhlIEFDVElPTiooKSBtYWNyb3Mg
dHJpZ2dlciB3YXJuaW5nIEM0MTAwICh1bnJlZmVyZW5jZWQgZm9ybWFsCisvLyBwYXJhbWV0ZXIp
IGluIE1TVkMgd2l0aCAtVzQuICBVbmZvcnR1bmF0ZWx5IHRoZXkgY2Fubm90IGJlIGZpeGVkIGlu
CisvLyB0aGUgbWFjcm8gZGVmaW5pdGlvbiwgYXMgdGhlIHdhcm5pbmdzIGFyZSBnZW5lcmF0ZWQg
d2hlbiB0aGUgbWFjcm8KKy8vIGlzIGV4cGFuZGVkIGFuZCBtYWNybyBleHBhbnNpb24gY2Fubm90
IGNvbnRhaW4gI3ByYWdtYS4gIFRoZXJlZm9yZQorLy8gd2Ugc3VwcHJlc3MgdGhlbSBoZXJlLgor
I2lmZGVmIF9NU0NfVkVSCisjIHByYWdtYSB3YXJuaW5nKHB1c2gpCisjIHByYWdtYSB3YXJuaW5n
KGRpc2FibGU6NDEwMCkKKyNlbmRpZgorCisvLyBWYXJpb3VzIG92ZXJsb2FkcyBmb3IgSW52b2tl
QXJndW1lbnQ8Tj4oKS4KKy8vCisvLyBUaGUgSW52b2tlQXJndW1lbnQ8Tj4oYTEsIGEyLCAuLi4s
IGFfaykgYWN0aW9uIGludm9rZXMgdGhlIE4tdGgKKy8vICgwLWJhc2VkKSBhcmd1bWVudCwgd2hp
Y2ggbXVzdCBiZSBhIGstYXJ5IGNhbGxhYmxlLCBvZiB0aGUgbW9jaworLy8gZnVuY3Rpb24sIHdp
dGggYXJndW1lbnRzIGExLCBhMiwgLi4uLCBhX2suCisvLworLy8gTm90ZXM6CisvLworLy8gICAx
LiBUaGUgYXJndW1lbnRzIGFyZSBwYXNzZWQgYnkgdmFsdWUgYnkgZGVmYXVsdC4gIElmIHlvdSBu
ZWVkIHRvCisvLyAgIHBhc3MgYW4gYXJndW1lbnQgYnkgcmVmZXJlbmNlLCB3cmFwIGl0IGluc2lk
ZSBCeVJlZigpLiAgRm9yCisvLyAgIGV4YW1wbGUsCisvLworLy8gICAgIEludm9rZUFyZ3VtZW50
PDE+KDUsIHN0cmluZygiSGVsbG8iKSwgQnlSZWYoZm9vKSkKKy8vCisvLyAgIHBhc3NlcyA1IGFu
ZCBzdHJpbmcoIkhlbGxvIikgYnkgdmFsdWUsIGFuZCBwYXNzZXMgZm9vIGJ5CisvLyAgIHJlZmVy
ZW5jZS4KKy8vCisvLyAgIDIuIElmIHRoZSBjYWxsYWJsZSB0YWtlcyBhbiBhcmd1bWVudCBieSBy
ZWZlcmVuY2UgYnV0IEJ5UmVmKCkgaXMKKy8vICAgbm90IHVzZWQsIGl0IHdpbGwgcmVjZWl2ZSB0
aGUgcmVmZXJlbmNlIHRvIGEgY29weSBvZiB0aGUgdmFsdWUsCisvLyAgIGluc3RlYWQgb2YgdGhl
IG9yaWdpbmFsIHZhbHVlLiAgRm9yIGV4YW1wbGUsIHdoZW4gdGhlIDAtdGgKKy8vICAgYXJndW1l
bnQgb2YgdGhlIG1vY2sgZnVuY3Rpb24gdGFrZXMgYSBjb25zdCBzdHJpbmcmLCB0aGUgYWN0aW9u
CisvLworLy8gICAgIEludm9rZUFyZ3VtZW50PDA+KHN0cmluZygiSGVsbG8iKSkKKy8vCisvLyAg
IG1ha2VzIGEgY29weSBvZiB0aGUgdGVtcG9yYXJ5IHN0cmluZygiSGVsbG8iKSBvYmplY3QgYW5k
IHBhc3NlcyBhCisvLyAgIHJlZmVyZW5jZSBvZiB0aGUgY29weSwgaW5zdGVhZCBvZiB0aGUgb3Jp
Z2luYWwgdGVtcG9yYXJ5IG9iamVjdCwKKy8vICAgdG8gdGhlIGNhbGxhYmxlLiAgVGhpcyBtYWtl
cyBpdCBlYXN5IGZvciBhIHVzZXIgdG8gZGVmaW5lIGFuCisvLyAgIEludm9rZUFyZ3VtZW50IGFj
dGlvbiBmcm9tIHRlbXBvcmFyeSB2YWx1ZXMgYW5kIGhhdmUgaXQgcGVyZm9ybWVkCisvLyAgIGxh
dGVyLgorCituYW1lc3BhY2UgaW50ZXJuYWwgeworbmFtZXNwYWNlIGludm9rZV9hcmd1bWVudCB7
CisKKy8vIEFwcGVhcnMgaW4gSW52b2tlQXJndW1lbnRBZGwncyBhcmd1bWVudCBsaXN0IHRvIGhl
bHAgYXZvaWQKKy8vIGFjY2lkZW50YWwgY2FsbHMgdG8gdXNlciBmdW5jdGlvbnMgb2YgdGhlIHNh
bWUgbmFtZS4KK3N0cnVjdCBBZGxUYWcge307CisKKy8vIEludm9rZUFyZ3VtZW50QWRsIC0gYSBo
ZWxwZXIgZm9yIEludm9rZUFyZ3VtZW50LgorLy8gVGhlIGJhc2ljIG92ZXJsb2FkcyBhcmUgcHJv
dmlkZWQgaGVyZSBmb3IgZ2VuZXJpYyBmdW5jdG9ycy4KKy8vIE92ZXJsb2FkcyBmb3Igb3RoZXIg
Y3VzdG9tLWNhbGxhYmxlcyBhcmUgcHJvdmlkZWQgaW4gdGhlCisvLyBpbnRlcm5hbC9jdXN0b20v
Y2FsbGJhY2stYWN0aW9ucy5oIGhlYWRlci4KKwordGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVu
YW1lIEY+CitSIEludm9rZUFyZ3VtZW50QWRsKEFkbFRhZywgRiBmKSB7CisgIHJldHVybiBmKCk7
Cit9Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQTE+CitSIElu
dm9rZUFyZ3VtZW50QWRsKEFkbFRhZywgRiBmLCBBMSBhMSkgeworICByZXR1cm4gZihhMSk7Cit9
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQTEsIHR5cGVuYW1l
IEEyPgorUiBJbnZva2VBcmd1bWVudEFkbChBZGxUYWcsIEYgZiwgQTEgYTEsIEEyIGEyKSB7Cisg
IHJldHVybiBmKGExLCBhMik7Cit9Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgRiwg
dHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMz4KK1IgSW52b2tlQXJndW1lbnRB
ZGwoQWRsVGFnLCBGIGYsIEExIGExLCBBMiBhMiwgQTMgYTMpIHsKKyAgcmV0dXJuIGYoYTEsIGEy
LCBhMyk7Cit9Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQTEs
IHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywKKyAgICB0eXBlbmFtZSBBND4KK1IgSW52b2tlQXJn
dW1lbnRBZGwoQWRsVGFnLCBGIGYsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0KSB7CisgIHJl
dHVybiBmKGExLCBhMiwgYTMsIGE0KTsKK30KK3RlbXBsYXRlIDx0eXBlbmFtZSBSLCB0eXBlbmFt
ZSBGLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLAorICAgIHR5cGVuYW1l
IEE0LCB0eXBlbmFtZSBBNT4KK1IgSW52b2tlQXJndW1lbnRBZGwoQWRsVGFnLCBGIGYsIEExIGEx
LCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSkgeworICByZXR1cm4gZihhMSwgYTIsIGEzLCBh
NCwgYTUpOworfQordGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEYsIHR5cGVuYW1lIEEx
LCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsCisgICAgdHlwZW5hbWUgQTQsIHR5cGVuYW1lIEE1
LCB0eXBlbmFtZSBBNj4KK1IgSW52b2tlQXJndW1lbnRBZGwoQWRsVGFnLCBGIGYsIEExIGExLCBB
MiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYpIHsKKyAgcmV0dXJuIGYoYTEsIGEyLCBh
MywgYTQsIGE1LCBhNik7Cit9Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgRiwgdHlw
ZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywKKyAgICB0eXBlbmFtZSBBNCwgdHlw
ZW5hbWUgQTUsIHR5cGVuYW1lIEE2LCB0eXBlbmFtZSBBNz4KK1IgSW52b2tlQXJndW1lbnRBZGwo
QWRsVGFnLCBGIGYsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsCisg
ICAgQTcgYTcpIHsKKyAgcmV0dXJuIGYoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpOworfQor
dGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEYsIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBB
MiwgdHlwZW5hbWUgQTMsCisgICAgdHlwZW5hbWUgQTQsIHR5cGVuYW1lIEE1LCB0eXBlbmFtZSBB
NiwgdHlwZW5hbWUgQTcsIHR5cGVuYW1lIEE4PgorUiBJbnZva2VBcmd1bWVudEFkbChBZGxUYWcs
IEYgZiwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwKKyAgICBBNyBh
NywgQTggYTgpIHsKKyAgcmV0dXJuIGYoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KTsK
K30KK3RlbXBsYXRlIDx0eXBlbmFtZSBSLCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBMSwgdHlwZW5h
bWUgQTIsIHR5cGVuYW1lIEEzLAorICAgIHR5cGVuYW1lIEE0LCB0eXBlbmFtZSBBNSwgdHlwZW5h
bWUgQTYsIHR5cGVuYW1lIEE3LCB0eXBlbmFtZSBBOCwKKyAgICB0eXBlbmFtZSBBOT4KK1IgSW52
b2tlQXJndW1lbnRBZGwoQWRsVGFnLCBGIGYsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBB
NSBhNSwgQTYgYTYsCisgICAgQTcgYTcsIEE4IGE4LCBBOSBhOSkgeworICByZXR1cm4gZihhMSwg
YTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5KTsKK30KK3RlbXBsYXRlIDx0eXBlbmFtZSBS
LCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLAorICAg
IHR5cGVuYW1lIEE0LCB0eXBlbmFtZSBBNSwgdHlwZW5hbWUgQTYsIHR5cGVuYW1lIEE3LCB0eXBl
bmFtZSBBOCwKKyAgICB0eXBlbmFtZSBBOSwgdHlwZW5hbWUgQTEwPgorUiBJbnZva2VBcmd1bWVu
dEFkbChBZGxUYWcsIEYgZiwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBh
NiwKKyAgICBBNyBhNywgQTggYTgsIEE5IGE5LCBBMTAgYTEwKSB7CisgIHJldHVybiBmKGExLCBh
MiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTksIGExMCk7Cit9Cit9ICAvLyBuYW1lc3BhY2Ug
aW52b2tlX2FyZ3VtZW50Cit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKKworQUNUSU9OX1RFTVBM
QVRFKEludm9rZUFyZ3VtZW50LAorICAgICAgICAgICAgICAgIEhBU18xX1RFTVBMQVRFX1BBUkFN
UyhpbnQsIGspLAorICAgICAgICAgICAgICAgIEFORF8wX1ZBTFVFX1BBUkFNUygpKSB7CisgIHVz
aW5nIGludGVybmFsOjppbnZva2VfYXJndW1lbnQ6Okludm9rZUFyZ3VtZW50QWRsOworICByZXR1
cm4gSW52b2tlQXJndW1lbnRBZGw8cmV0dXJuX3R5cGU+KAorICAgICAgaW50ZXJuYWw6Omludm9r
ZV9hcmd1bWVudDo6QWRsVGFnKCksCisgICAgICA6OnRlc3Rpbmc6OmdldDxrPihhcmdzKSk7Cit9
CisKK0FDVElPTl9URU1QTEFURShJbnZva2VBcmd1bWVudCwKKyAgICAgICAgICAgICAgICBIQVNf
MV9URU1QTEFURV9QQVJBTVMoaW50LCBrKSwKKyAgICAgICAgICAgICAgICBBTkRfMV9WQUxVRV9Q
QVJBTVMocDApKSB7CisgIHVzaW5nIGludGVybmFsOjppbnZva2VfYXJndW1lbnQ6Okludm9rZUFy
Z3VtZW50QWRsOworICByZXR1cm4gSW52b2tlQXJndW1lbnRBZGw8cmV0dXJuX3R5cGU+KAorICAg
ICAgaW50ZXJuYWw6Omludm9rZV9hcmd1bWVudDo6QWRsVGFnKCksCisgICAgICA6OnRlc3Rpbmc6
OmdldDxrPihhcmdzKSwgcDApOworfQorCitBQ1RJT05fVEVNUExBVEUoSW52b2tlQXJndW1lbnQs
CisgICAgICAgICAgICAgICAgSEFTXzFfVEVNUExBVEVfUEFSQU1TKGludCwgayksCisgICAgICAg
ICAgICAgICAgQU5EXzJfVkFMVUVfUEFSQU1TKHAwLCBwMSkpIHsKKyAgdXNpbmcgaW50ZXJuYWw6
Omludm9rZV9hcmd1bWVudDo6SW52b2tlQXJndW1lbnRBZGw7CisgIHJldHVybiBJbnZva2VBcmd1
bWVudEFkbDxyZXR1cm5fdHlwZT4oCisgICAgICBpbnRlcm5hbDo6aW52b2tlX2FyZ3VtZW50OjpB
ZGxUYWcoKSwKKyAgICAgIDo6dGVzdGluZzo6Z2V0PGs+KGFyZ3MpLCBwMCwgcDEpOworfQorCitB
Q1RJT05fVEVNUExBVEUoSW52b2tlQXJndW1lbnQsCisgICAgICAgICAgICAgICAgSEFTXzFfVEVN
UExBVEVfUEFSQU1TKGludCwgayksCisgICAgICAgICAgICAgICAgQU5EXzNfVkFMVUVfUEFSQU1T
KHAwLCBwMSwgcDIpKSB7CisgIHVzaW5nIGludGVybmFsOjppbnZva2VfYXJndW1lbnQ6Okludm9r
ZUFyZ3VtZW50QWRsOworICByZXR1cm4gSW52b2tlQXJndW1lbnRBZGw8cmV0dXJuX3R5cGU+KAor
ICAgICAgaW50ZXJuYWw6Omludm9rZV9hcmd1bWVudDo6QWRsVGFnKCksCisgICAgICA6OnRlc3Rp
bmc6OmdldDxrPihhcmdzKSwgcDAsIHAxLCBwMik7Cit9CisKK0FDVElPTl9URU1QTEFURShJbnZv
a2VBcmd1bWVudCwKKyAgICAgICAgICAgICAgICBIQVNfMV9URU1QTEFURV9QQVJBTVMoaW50LCBr
KSwKKyAgICAgICAgICAgICAgICBBTkRfNF9WQUxVRV9QQVJBTVMocDAsIHAxLCBwMiwgcDMpKSB7
CisgIHVzaW5nIGludGVybmFsOjppbnZva2VfYXJndW1lbnQ6Okludm9rZUFyZ3VtZW50QWRsOwor
ICByZXR1cm4gSW52b2tlQXJndW1lbnRBZGw8cmV0dXJuX3R5cGU+KAorICAgICAgaW50ZXJuYWw6
Omludm9rZV9hcmd1bWVudDo6QWRsVGFnKCksCisgICAgICA6OnRlc3Rpbmc6OmdldDxrPihhcmdz
KSwgcDAsIHAxLCBwMiwgcDMpOworfQorCitBQ1RJT05fVEVNUExBVEUoSW52b2tlQXJndW1lbnQs
CisgICAgICAgICAgICAgICAgSEFTXzFfVEVNUExBVEVfUEFSQU1TKGludCwgayksCisgICAgICAg
ICAgICAgICAgQU5EXzVfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAzLCBwNCkpIHsKKyAgdXNp
bmcgaW50ZXJuYWw6Omludm9rZV9hcmd1bWVudDo6SW52b2tlQXJndW1lbnRBZGw7CisgIHJldHVy
biBJbnZva2VBcmd1bWVudEFkbDxyZXR1cm5fdHlwZT4oCisgICAgICBpbnRlcm5hbDo6aW52b2tl
X2FyZ3VtZW50OjpBZGxUYWcoKSwKKyAgICAgIDo6dGVzdGluZzo6Z2V0PGs+KGFyZ3MpLCBwMCwg
cDEsIHAyLCBwMywgcDQpOworfQorCitBQ1RJT05fVEVNUExBVEUoSW52b2tlQXJndW1lbnQsCisg
ICAgICAgICAgICAgICAgSEFTXzFfVEVNUExBVEVfUEFSQU1TKGludCwgayksCisgICAgICAgICAg
ICAgICAgQU5EXzZfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUpKSB7CisgIHVz
aW5nIGludGVybmFsOjppbnZva2VfYXJndW1lbnQ6Okludm9rZUFyZ3VtZW50QWRsOworICByZXR1
cm4gSW52b2tlQXJndW1lbnRBZGw8cmV0dXJuX3R5cGU+KAorICAgICAgaW50ZXJuYWw6Omludm9r
ZV9hcmd1bWVudDo6QWRsVGFnKCksCisgICAgICA6OnRlc3Rpbmc6OmdldDxrPihhcmdzKSwgcDAs
IHAxLCBwMiwgcDMsIHA0LCBwNSk7Cit9CisKK0FDVElPTl9URU1QTEFURShJbnZva2VBcmd1bWVu
dCwKKyAgICAgICAgICAgICAgICBIQVNfMV9URU1QTEFURV9QQVJBTVMoaW50LCBrKSwKKyAgICAg
ICAgICAgICAgICBBTkRfN19WQUxVRV9QQVJBTVMocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYp
KSB7CisgIHVzaW5nIGludGVybmFsOjppbnZva2VfYXJndW1lbnQ6Okludm9rZUFyZ3VtZW50QWRs
OworICByZXR1cm4gSW52b2tlQXJndW1lbnRBZGw8cmV0dXJuX3R5cGU+KAorICAgICAgaW50ZXJu
YWw6Omludm9rZV9hcmd1bWVudDo6QWRsVGFnKCksCisgICAgICA6OnRlc3Rpbmc6OmdldDxrPihh
cmdzKSwgcDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYpOworfQorCitBQ1RJT05fVEVNUExBVEUo
SW52b2tlQXJndW1lbnQsCisgICAgICAgICAgICAgICAgSEFTXzFfVEVNUExBVEVfUEFSQU1TKGlu
dCwgayksCisgICAgICAgICAgICAgICAgQU5EXzhfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAz
LCBwNCwgcDUsIHA2LCBwNykpIHsKKyAgdXNpbmcgaW50ZXJuYWw6Omludm9rZV9hcmd1bWVudDo6
SW52b2tlQXJndW1lbnRBZGw7CisgIHJldHVybiBJbnZva2VBcmd1bWVudEFkbDxyZXR1cm5fdHlw
ZT4oCisgICAgICBpbnRlcm5hbDo6aW52b2tlX2FyZ3VtZW50OjpBZGxUYWcoKSwKKyAgICAgIDo6
dGVzdGluZzo6Z2V0PGs+KGFyZ3MpLCBwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBwNiwgcDcpOwor
fQorCitBQ1RJT05fVEVNUExBVEUoSW52b2tlQXJndW1lbnQsCisgICAgICAgICAgICAgICAgSEFT
XzFfVEVNUExBVEVfUEFSQU1TKGludCwgayksCisgICAgICAgICAgICAgICAgQU5EXzlfVkFMVUVf
UEFSQU1TKHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2LCBwNywgcDgpKSB7CisgIHVzaW5nIGlu
dGVybmFsOjppbnZva2VfYXJndW1lbnQ6Okludm9rZUFyZ3VtZW50QWRsOworICByZXR1cm4gSW52
b2tlQXJndW1lbnRBZGw8cmV0dXJuX3R5cGU+KAorICAgICAgaW50ZXJuYWw6Omludm9rZV9hcmd1
bWVudDo6QWRsVGFnKCksCisgICAgICA6OnRlc3Rpbmc6OmdldDxrPihhcmdzKSwgcDAsIHAxLCBw
MiwgcDMsIHA0LCBwNSwgcDYsIHA3LCBwOCk7Cit9CisKK0FDVElPTl9URU1QTEFURShJbnZva2VB
cmd1bWVudCwKKyAgICAgICAgICAgICAgICBIQVNfMV9URU1QTEFURV9QQVJBTVMoaW50LCBrKSwK
KyAgICAgICAgICAgICAgICBBTkRfMTBfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAzLCBwNCwg
cDUsIHA2LCBwNywgcDgsIHA5KSkgeworICB1c2luZyBpbnRlcm5hbDo6aW52b2tlX2FyZ3VtZW50
OjpJbnZva2VBcmd1bWVudEFkbDsKKyAgcmV0dXJuIEludm9rZUFyZ3VtZW50QWRsPHJldHVybl90
eXBlPigKKyAgICAgIGludGVybmFsOjppbnZva2VfYXJndW1lbnQ6OkFkbFRhZygpLAorICAgICAg
Ojp0ZXN0aW5nOjpnZXQ8az4oYXJncyksIHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2LCBwNywg
cDgsIHA5KTsKK30KKworLy8gVmFyaW91cyBvdmVybG9hZHMgZm9yIFJldHVybk5ldzxUPigpLgor
Ly8KKy8vIFRoZSBSZXR1cm5OZXc8VD4oYTEsIGEyLCAuLi4sIGFfaykgYWN0aW9uIHJldHVybnMg
YSBwb2ludGVyIHRvIGEgbmV3CisvLyBpbnN0YW5jZSBvZiB0eXBlIFQsIGNvbnN0cnVjdGVkIG9u
IHRoZSBoZWFwIHdpdGggY29uc3RydWN0b3IgYXJndW1lbnRzCisvLyBhMSwgYTIsIC4uLiwgYW5k
IGFfay4gVGhlIGNhbGxlciBhc3N1bWVzIG93bmVyc2hpcCBvZiB0aGUgcmV0dXJuZWQgdmFsdWUu
CitBQ1RJT05fVEVNUExBVEUoUmV0dXJuTmV3LAorICAgICAgICAgICAgICAgIEhBU18xX1RFTVBM
QVRFX1BBUkFNUyh0eXBlbmFtZSwgVCksCisgICAgICAgICAgICAgICAgQU5EXzBfVkFMVUVfUEFS
QU1TKCkpIHsKKyAgcmV0dXJuIG5ldyBUKCk7Cit9CisKK0FDVElPTl9URU1QTEFURShSZXR1cm5O
ZXcsCisgICAgICAgICAgICAgICAgSEFTXzFfVEVNUExBVEVfUEFSQU1TKHR5cGVuYW1lLCBUKSwK
KyAgICAgICAgICAgICAgICBBTkRfMV9WQUxVRV9QQVJBTVMocDApKSB7CisgIHJldHVybiBuZXcg
VChwMCk7Cit9CisKK0FDVElPTl9URU1QTEFURShSZXR1cm5OZXcsCisgICAgICAgICAgICAgICAg
SEFTXzFfVEVNUExBVEVfUEFSQU1TKHR5cGVuYW1lLCBUKSwKKyAgICAgICAgICAgICAgICBBTkRf
Ml9WQUxVRV9QQVJBTVMocDAsIHAxKSkgeworICByZXR1cm4gbmV3IFQocDAsIHAxKTsKK30KKwor
QUNUSU9OX1RFTVBMQVRFKFJldHVybk5ldywKKyAgICAgICAgICAgICAgICBIQVNfMV9URU1QTEFU
RV9QQVJBTVModHlwZW5hbWUsIFQpLAorICAgICAgICAgICAgICAgIEFORF8zX1ZBTFVFX1BBUkFN
UyhwMCwgcDEsIHAyKSkgeworICByZXR1cm4gbmV3IFQocDAsIHAxLCBwMik7Cit9CisKK0FDVElP
Tl9URU1QTEFURShSZXR1cm5OZXcsCisgICAgICAgICAgICAgICAgSEFTXzFfVEVNUExBVEVfUEFS
QU1TKHR5cGVuYW1lLCBUKSwKKyAgICAgICAgICAgICAgICBBTkRfNF9WQUxVRV9QQVJBTVMocDAs
IHAxLCBwMiwgcDMpKSB7CisgIHJldHVybiBuZXcgVChwMCwgcDEsIHAyLCBwMyk7Cit9CisKK0FD
VElPTl9URU1QTEFURShSZXR1cm5OZXcsCisgICAgICAgICAgICAgICAgSEFTXzFfVEVNUExBVEVf
UEFSQU1TKHR5cGVuYW1lLCBUKSwKKyAgICAgICAgICAgICAgICBBTkRfNV9WQUxVRV9QQVJBTVMo
cDAsIHAxLCBwMiwgcDMsIHA0KSkgeworICByZXR1cm4gbmV3IFQocDAsIHAxLCBwMiwgcDMsIHA0
KTsKK30KKworQUNUSU9OX1RFTVBMQVRFKFJldHVybk5ldywKKyAgICAgICAgICAgICAgICBIQVNf
MV9URU1QTEFURV9QQVJBTVModHlwZW5hbWUsIFQpLAorICAgICAgICAgICAgICAgIEFORF82X1ZB
TFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBwMywgcDQsIHA1KSkgeworICByZXR1cm4gbmV3IFQocDAs
IHAxLCBwMiwgcDMsIHA0LCBwNSk7Cit9CisKK0FDVElPTl9URU1QTEFURShSZXR1cm5OZXcsCisg
ICAgICAgICAgICAgICAgSEFTXzFfVEVNUExBVEVfUEFSQU1TKHR5cGVuYW1lLCBUKSwKKyAgICAg
ICAgICAgICAgICBBTkRfN19WQUxVRV9QQVJBTVMocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYp
KSB7CisgIHJldHVybiBuZXcgVChwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBwNik7Cit9CisKK0FD
VElPTl9URU1QTEFURShSZXR1cm5OZXcsCisgICAgICAgICAgICAgICAgSEFTXzFfVEVNUExBVEVf
UEFSQU1TKHR5cGVuYW1lLCBUKSwKKyAgICAgICAgICAgICAgICBBTkRfOF9WQUxVRV9QQVJBTVMo
cDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYsIHA3KSkgeworICByZXR1cm4gbmV3IFQocDAsIHAx
LCBwMiwgcDMsIHA0LCBwNSwgcDYsIHA3KTsKK30KKworQUNUSU9OX1RFTVBMQVRFKFJldHVybk5l
dywKKyAgICAgICAgICAgICAgICBIQVNfMV9URU1QTEFURV9QQVJBTVModHlwZW5hbWUsIFQpLAor
ICAgICAgICAgICAgICAgIEFORF85X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBwMywgcDQsIHA1
LCBwNiwgcDcsIHA4KSkgeworICByZXR1cm4gbmV3IFQocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwg
cDYsIHA3LCBwOCk7Cit9CisKK0FDVElPTl9URU1QTEFURShSZXR1cm5OZXcsCisgICAgICAgICAg
ICAgICAgSEFTXzFfVEVNUExBVEVfUEFSQU1TKHR5cGVuYW1lLCBUKSwKKyAgICAgICAgICAgICAg
ICBBTkRfMTBfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2LCBwNywgcDgs
IHA5KSkgeworICByZXR1cm4gbmV3IFQocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYsIHA3LCBw
OCwgcDkpOworfQorCisjaWZkZWYgX01TQ19WRVIKKyMgcHJhZ21hIHdhcm5pbmcocG9wKQorI2Vu
ZGlmCisKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCisKKy8vIEluY2x1ZGUgYW55IGN1c3RvbSBh
Y3Rpb25zIGFkZGVkIGJ5IHRoZSBsb2NhbCBpbnN0YWxsYXRpb24uCisvLyBXZSBtdXN0IGluY2x1
ZGUgdGhpcyBoZWFkZXIgYXQgdGhlIGVuZCB0byBtYWtlIHN1cmUgaXQgY2FuIHVzZSB0aGUKKy8v
IGRlY2xhcmF0aW9ucyBmcm9tIHRoaXMgZmlsZS4KKyNpbmNsdWRlICJnbW9jay9pbnRlcm5hbC9j
dXN0b20vZ21vY2stZ2VuZXJhdGVkLWFjdGlvbnMuaCIKKworI2VuZGlmICAvLyBHTU9DS19JTkNM
VURFX0dNT0NLX0dNT0NLX0dFTkVSQVRFRF9BQ1RJT05TX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
bW9jay9pbmNsdWRlL2dtb2NrL2dtb2NrLWdlbmVyYXRlZC1hY3Rpb25zLmgucHVtcCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGVtb2NrL2luY2x1ZGUvZ21vY2svZ21vY2stZ2VuZXJhdGVkLWFjdGlvbnMuaC5wdW1wCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjY2ZDlmOWQ1NTFiMTA5NDJmY2MyMzJjMGJhMzhjMmJmOWJmMWRiZjkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2dtb2NrLWdlbmVyYXRlZC1hY3Rp
b25zLmgucHVtcApAQCAtMCwwICsxLDc5NCBAQAorJCQgLSotIG1vZGU6IGMrKzsgLSotCiskJCBU
aGlzIGlzIGEgUHVtcCBzb3VyY2UgZmlsZS4gIFBsZWFzZSB1c2UgUHVtcCB0byBjb252ZXJ0IGl0
IHRvCiskJCBnbW9jay1nZW5lcmF0ZWQtYWN0aW9ucy5oLgorJCQKKyR2YXIgbiA9IDEwICAkJCBU
aGUgbWF4aW11bSBhcml0eSB3ZSBzdXBwb3J0LgorJCR9fSBUaGlzIG1ldGEgY29tbWVudCBmaXhl
cyBhdXRvLWluZGVudGF0aW9uIGluIGVkaXRvcnMuCisvLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xl
IEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
Ky8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlv
bmcgV2FuKQorCisvLyBHb29nbGUgTW9jayAtIGEgZnJhbWV3b3JrIGZvciB3cml0aW5nIEMrKyBt
b2NrIGNsYXNzZXMuCisvLworLy8gVGhpcyBmaWxlIGltcGxlbWVudHMgc29tZSBjb21tb25seSB1
c2VkIHZhcmlhZGljIGFjdGlvbnMuCisKKyNpZm5kZWYgR01PQ0tfSU5DTFVERV9HTU9DS19HTU9D
S19HRU5FUkFURURfQUNUSU9OU19IXworI2RlZmluZSBHTU9DS19JTkNMVURFX0dNT0NLX0dNT0NL
X0dFTkVSQVRFRF9BQ1RJT05TX0hfCisKKyNpbmNsdWRlICJnbW9jay9nbW9jay1hY3Rpb25zLmgi
CisjaW5jbHVkZSAiZ21vY2svaW50ZXJuYWwvZ21vY2stcG9ydC5oIgorCituYW1lc3BhY2UgdGVz
dGluZyB7CituYW1lc3BhY2UgaW50ZXJuYWwgeworCisvLyBJbnZva2VIZWxwZXI8Rj4ga25vd3Mg
aG93IHRvIHVucGFjayBhbiBOLXR1cGxlIGFuZCBpbnZva2UgYW4gTi1hcnkKKy8vIGZ1bmN0aW9u
IG9yIG1ldGhvZCB3aXRoIHRoZSB1bnBhY2tlZCB2YWx1ZXMsIHdoZXJlIEYgaXMgYSBmdW5jdGlv
bgorLy8gdHlwZSB0aGF0IHRha2VzIE4gYXJndW1lbnRzLgordGVtcGxhdGUgPHR5cGVuYW1lIFJl
c3VsdCwgdHlwZW5hbWUgQXJndW1lbnRUdXBsZT4KK2NsYXNzIEludm9rZUhlbHBlcjsKKworCisk
cmFuZ2UgaSAwLi5uCiskZm9yIGkgW1sKKyRyYW5nZSBqIDEuLmkKKyR2YXIgdHlwZXMgPSBbWyRm
b3IgaiBbWywgdHlwZW5hbWUgQSRqXV1dXQorJHZhciBhcyA9IFtbJGZvciBqLCBbW0Ekal1dXV0K
KyR2YXIgYXJncyA9IFtbJGlmIGk9PTAgW1tdXSAkZWxzZSBbWyBhcmdzXV1dXQorJHZhciBnZXRz
ID0gW1skZm9yIGosIFtbZ2V0PCQoaiAtIDEpPihhcmdzKV1dXV0KK3RlbXBsYXRlIDx0eXBlbmFt
ZSBSJHR5cGVzPgorY2xhc3MgSW52b2tlSGVscGVyPFIsIDo6dGVzdGluZzo6dHVwbGU8JGFzPiA+
IHsKKyBwdWJsaWM6CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdGlvbj4KKyAgc3RhdGljIFIg
SW52b2tlKEZ1bmN0aW9uIGZ1bmN0aW9uLCBjb25zdCA6OnRlc3Rpbmc6OnR1cGxlPCRhcz4mJGFy
Z3MpIHsKKyAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCRnZXRzKTsKKyAgfQorCisgIHRlbXBs
YXRlIDxjbGFzcyBDbGFzcywgdHlwZW5hbWUgTWV0aG9kUHRyPgorICBzdGF0aWMgUiBJbnZva2VN
ZXRob2QoQ2xhc3MqIG9ial9wdHIsCisgICAgICAgICAgICAgICAgICAgICAgICBNZXRob2RQdHIg
bWV0aG9kX3B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IDo6dGVzdGluZzo6dHVw
bGU8JGFzPiYkYXJncykgeworICAgICAgICAgICByZXR1cm4gKG9ial9wdHItPiptZXRob2RfcHRy
KSgkZ2V0cyk7CisgIH0KK307CisKKworXV0KKy8vIEFuIElOVEVSTkFMIG1hY3JvIGZvciBleHRy
YWN0aW5nIHRoZSB0eXBlIG9mIGEgdHVwbGUgZmllbGQuICBJdCdzCisvLyBzdWJqZWN0IHRvIGNo
YW5nZSB3aXRob3V0IG5vdGljZSAtIERPIE5PVCBVU0UgSU4gVVNFUiBDT0RFIQorI2RlZmluZSBH
TU9DS19GSUVMRF8oVHVwbGUsIE4pIFwKKyAgICB0eXBlbmFtZSA6OnRlc3Rpbmc6OnR1cGxlX2Vs
ZW1lbnQ8TiwgVHVwbGU+Ojp0eXBlCisKKyRyYW5nZSBpIDEuLm4KKworLy8gU2VsZWN0QXJnczxS
ZXN1bHQsIEFyZ3VtZW50VHVwbGUsIGsxLCBrMiwgLi4uLCBrX24+Ojp0eXBlIGlzIHRoZQorLy8g
dHlwZSBvZiBhbiBuLWFyeSBmdW5jdGlvbiB3aG9zZSBpLXRoICgxLWJhc2VkKSBhcmd1bWVudCB0
eXBlIGlzIHRoZQorLy8ga3tpfS10aCAoMC1iYXNlZCkgZmllbGQgb2YgQXJndW1lbnRUdXBsZSwg
d2hpY2ggbXVzdCBiZSBhIHR1cGxlCisvLyB0eXBlLCBhbmQgd2hvc2UgcmV0dXJuIHR5cGUgaXMg
UmVzdWx0LiAgRm9yIGV4YW1wbGUsCisvLyAgIFNlbGVjdEFyZ3M8aW50LCA6OnRlc3Rpbmc6OnR1
cGxlPGJvb2wsIGNoYXIsIGRvdWJsZSwgbG9uZz4sIDAsIDM+Ojp0eXBlCisvLyBpcyBpbnQoYm9v
bCwgbG9uZykuCisvLworLy8gU2VsZWN0QXJnczxSZXN1bHQsIEFyZ3VtZW50VHVwbGUsIGsxLCBr
MiwgLi4uLCBrX24+OjpTZWxlY3QoYXJncykKKy8vIHJldHVybnMgdGhlIHNlbGVjdGVkIGZpZWxk
cyAoazEsIGsyLCAuLi4sIGtfbikgb2YgYXJncyBhcyBhIHR1cGxlLgorLy8gRm9yIGV4YW1wbGUs
CisvLyAgIFNlbGVjdEFyZ3M8aW50LCB0dXBsZTxib29sLCBjaGFyLCBkb3VibGU+LCAyLCAwPjo6
U2VsZWN0KAorLy8gICAgICAgOjp0ZXN0aW5nOjptYWtlX3R1cGxlKHRydWUsICdhJywgMi41KSkK
Ky8vIHJldHVybnMgdHVwbGUgKDIuNSwgdHJ1ZSkuCisvLworLy8gVGhlIG51bWJlcnMgaW4gbGlz
dCBrMSwgazIsIC4uLiwga19uIG11c3QgYmUgPj0gMCwgd2hlcmUgbiBjYW4gYmUKKy8vIGluIHRo
ZSByYW5nZSBbMCwgJG5dLiAgRHVwbGljYXRlcyBhcmUgYWxsb3dlZCBhbmQgdGhleSBkb24ndCBo
YXZlCisvLyB0byBiZSBpbiBhbiBhc2NlbmRpbmcgb3IgZGVzY2VuZGluZyBvcmRlci4KKwordGVt
cGxhdGUgPHR5cGVuYW1lIFJlc3VsdCwgdHlwZW5hbWUgQXJndW1lbnRUdXBsZSwgJGZvciBpLCBb
W2ludCBrJGldXT4KK2NsYXNzIFNlbGVjdEFyZ3MgeworIHB1YmxpYzoKKyAgdHlwZWRlZiBSZXN1
bHQgdHlwZSgkZm9yIGksIFtbR01PQ0tfRklFTERfKEFyZ3VtZW50VHVwbGUsIGskaSldXSk7Cisg
IHR5cGVkZWYgdHlwZW5hbWUgRnVuY3Rpb248dHlwZT46OkFyZ3VtZW50VHVwbGUgU2VsZWN0ZWRB
cmdzOworICBzdGF0aWMgU2VsZWN0ZWRBcmdzIFNlbGVjdChjb25zdCBBcmd1bWVudFR1cGxlJiBh
cmdzKSB7CisgICAgcmV0dXJuIFNlbGVjdGVkQXJncygkZm9yIGksIFtbZ2V0PGskaT4oYXJncyld
XSk7CisgIH0KK307CisKKworJGZvciBpIFtbCiskcmFuZ2UgaiAxLi5uCiskcmFuZ2UgajEgMS4u
aS0xCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0LCB0eXBlbmFtZSBBcmd1bWVudFR1cGxlJGZv
ciBqMVtbLCBpbnQgayRqMV1dPgorY2xhc3MgU2VsZWN0QXJnczxSZXN1bHQsIEFyZ3VtZW50VHVw
bGUsCisgICAgICAgICAgICAgICAgICRmb3IgaiwgW1skaWYgaiA8PSBpLTEgW1trJGpdXSAkZWxz
ZSBbWy0xXV1dXT4geworIHB1YmxpYzoKKyAgdHlwZWRlZiBSZXN1bHQgdHlwZSgkZm9yIGoxLCBb
W0dNT0NLX0ZJRUxEXyhBcmd1bWVudFR1cGxlLCBrJGoxKV1dKTsKKyAgdHlwZWRlZiB0eXBlbmFt
ZSBGdW5jdGlvbjx0eXBlPjo6QXJndW1lbnRUdXBsZSBTZWxlY3RlZEFyZ3M7CisgIHN0YXRpYyBT
ZWxlY3RlZEFyZ3MgU2VsZWN0KGNvbnN0IEFyZ3VtZW50VHVwbGUmIFtbXV0KKyRpZiBpID09IDEg
W1svKiBhcmdzICovXV0gJGVsc2UgW1thcmdzXV0pIHsKKyAgICByZXR1cm4gU2VsZWN0ZWRBcmdz
KCRmb3IgajEsIFtbZ2V0PGskajE+KGFyZ3MpXV0pOworICB9Cit9OworCisKK11dCisjdW5kZWYg
R01PQ0tfRklFTERfCisKKyR2YXIga3MgPSBbWyRmb3IgaSwgW1trJGldXV1dCisKKy8vIEltcGxl
bWVudHMgdGhlIFdpdGhBcmdzIGFjdGlvbi4KK3RlbXBsYXRlIDx0eXBlbmFtZSBJbm5lckFjdGlv
biwgJGZvciBpLCBbW2ludCBrJGkgPSAtMV1dPgorY2xhc3MgV2l0aEFyZ3NBY3Rpb24geworIHB1
YmxpYzoKKyAgZXhwbGljaXQgV2l0aEFyZ3NBY3Rpb24oY29uc3QgSW5uZXJBY3Rpb24mIGFjdGlv
bikgOiBhY3Rpb25fKGFjdGlvbikge30KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRj4KKyAgb3Bl
cmF0b3IgQWN0aW9uPEY+KCkgY29uc3QgeyByZXR1cm4gTWFrZUFjdGlvbihuZXcgSW1wbDxGPihh
Y3Rpb25fKSk7IH0KKworIHByaXZhdGU6CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBGPgorICBjbGFz
cyBJbXBsIDogcHVibGljIEFjdGlvbkludGVyZmFjZTxGPiB7CisgICBwdWJsaWM6CisgICAgdHlw
ZWRlZiB0eXBlbmFtZSBGdW5jdGlvbjxGPjo6UmVzdWx0IFJlc3VsdDsKKyAgICB0eXBlZGVmIHR5
cGVuYW1lIEZ1bmN0aW9uPEY+OjpBcmd1bWVudFR1cGxlIEFyZ3VtZW50VHVwbGU7CisKKyAgICBl
eHBsaWNpdCBJbXBsKGNvbnN0IElubmVyQWN0aW9uJiBhY3Rpb24pIDogYWN0aW9uXyhhY3Rpb24p
IHt9CisKKyAgICB2aXJ0dWFsIFJlc3VsdCBQZXJmb3JtKGNvbnN0IEFyZ3VtZW50VHVwbGUmIGFy
Z3MpIHsKKyAgICAgIHJldHVybiBhY3Rpb25fLlBlcmZvcm0oU2VsZWN0QXJnczxSZXN1bHQsIEFy
Z3VtZW50VHVwbGUsICRrcz46OlNlbGVjdChhcmdzKSk7CisgICAgfQorCisgICBwcml2YXRlOgor
ICAgIHR5cGVkZWYgdHlwZW5hbWUgU2VsZWN0QXJnczxSZXN1bHQsIEFyZ3VtZW50VHVwbGUsCisg
ICAgICAgICRrcz46OnR5cGUgSW5uZXJGdW5jdGlvblR5cGU7CisKKyAgICBBY3Rpb248SW5uZXJG
dW5jdGlvblR5cGU+IGFjdGlvbl87CisgIH07CisKKyAgY29uc3QgSW5uZXJBY3Rpb24gYWN0aW9u
XzsKKworICBHVEVTVF9ESVNBTExPV19BU1NJR05fKFdpdGhBcmdzQWN0aW9uKTsKK307CisKKy8v
IEEgbWFjcm8gZnJvbSB0aGUgQUNUSU9OKiBmYW1pbHkgKGRlZmluZWQgbGF0ZXIgaW4gdGhpcyBm
aWxlKQorLy8gZGVmaW5lcyBhbiBhY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCBpbiBhIG1vY2sgZnVu
Y3Rpb24uICBUeXBpY2FsbHksCisvLyB0aGVzZSBhY3Rpb25zIG9ubHkgY2FyZSBhYm91dCBhIHN1
YnNldCBvZiB0aGUgYXJndW1lbnRzIG9mIHRoZSBtb2NrCisvLyBmdW5jdGlvbi4gIEZvciBleGFt
cGxlLCBpZiBzdWNoIGFuIGFjdGlvbiBvbmx5IHVzZXMgdGhlIHNlY29uZAorLy8gYXJndW1lbnQs
IGl0IGNhbiBiZSB1c2VkIGluIGFueSBtb2NrIGZ1bmN0aW9uIHRoYXQgdGFrZXMgPj0gMgorLy8g
YXJndW1lbnRzIHdoZXJlIHRoZSB0eXBlIG9mIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMgY29tcGF0
aWJsZS4KKy8vCisvLyBUaGVyZWZvcmUsIHRoZSBhY3Rpb24gaW1wbGVtZW50YXRpb24gbXVzdCBi
ZSBwcmVwYXJlZCB0byB0YWtlIG1vcmUKKy8vIGFyZ3VtZW50cyB0aGFuIGl0IG5lZWRzLiAgVGhl
IEV4Y2Vzc2l2ZUFyZyB0eXBlIGlzIHVzZWQgdG8KKy8vIHJlcHJlc2VudCB0aG9zZSBleGNlc3Np
dmUgYXJndW1lbnRzLiAgSW4gb3JkZXIgdG8ga2VlcCB0aGUgY29tcGlsZXIKKy8vIGVycm9yIG1l
c3NhZ2VzIHRyYWN0YWJsZSwgd2UgZGVmaW5lIGl0IGluIHRoZSB0ZXN0aW5nIG5hbWVzcGFjZQor
Ly8gaW5zdGVhZCBvZiB0ZXN0aW5nOjppbnRlcm5hbC4gIEhvd2V2ZXIsIHRoaXMgaXMgYW4gSU5U
RVJOQUwgVFlQRQorLy8gYW5kIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLCBzbyBh
IHVzZXIgTVVTVCBOT1QgVVNFIFRISVMKKy8vIFRZUEUgRElSRUNUTFkuCitzdHJ1Y3QgRXhjZXNz
aXZlQXJnIHt9OworCisvLyBBIGhlbHBlciBjbGFzcyBuZWVkZWQgZm9yIGltcGxlbWVudGluZyB0
aGUgQUNUSU9OKiBtYWNyb3MuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0LCBjbGFzcyBJbXBs
PgorY2xhc3MgQWN0aW9uSGVscGVyIHsKKyBwdWJsaWM6CiskcmFuZ2UgaSAwLi5uCiskZm9yIGkK
KworW1sKKyR2YXIgdGVtcGxhdGUgPSBbWyRpZiBpPT0wIFtbXV0gJGVsc2UgW1sKKyRyYW5nZSBq
IDAuLmktMQorICB0ZW1wbGF0ZSA8JGZvciBqLCBbW3R5cGVuYW1lIEEkal1dPgorXV1dXQorJHJh
bmdlIGogMC4uaS0xCiskdmFyIEFzID0gW1skZm9yIGosIFtbQSRqXV1dXQorJHZhciBhcyA9IFtb
JGZvciBqLCBbW2dldDwkaj4oYXJncyldXV1dCiskcmFuZ2UgayAxLi5uLWkKKyR2YXIgZWFzID0g
W1skZm9yIGssIFtbRXhjZXNzaXZlQXJnKCldXV1dCiskdmFyIGFyZ19saXN0ID0gW1skaWYgKGk9
PTApIHwgKGk9PW4pIFtbJGFzJGVhc11dICRlbHNlIFtbJGFzLCAkZWFzXV1dXQorJHRlbXBsYXRl
CisgIHN0YXRpYyBSZXN1bHQgUGVyZm9ybShJbXBsKiBpbXBsLCBjb25zdCA6OnRlc3Rpbmc6OnR1
cGxlPCRBcz4mIGFyZ3MpIHsKKyAgICByZXR1cm4gaW1wbC0+dGVtcGxhdGUgZ21vY2tfUGVyZm9y
bUltcGw8JEFzPihhcmdzLCAkYXJnX2xpc3QpOworICB9CisKK11dCit9OworCit9ICAvLyBuYW1l
c3BhY2UgaW50ZXJuYWwKKworLy8gVmFyaW91cyBvdmVybG9hZHMgZm9yIEludm9rZSgpLgorCisv
LyBXaXRoQXJnczxOMSwgTjIsIC4uLiwgTms+KGFuX2FjdGlvbikgY3JlYXRlcyBhbiBhY3Rpb24g
dGhhdCBwYXNzZXMKKy8vIHRoZSBzZWxlY3RlZCBhcmd1bWVudHMgb2YgdGhlIG1vY2sgZnVuY3Rp
b24gdG8gYW5fYWN0aW9uIGFuZAorLy8gcGVyZm9ybXMgaXQuICBJdCBzZXJ2ZXMgYXMgYW4gYWRh
cHRvciBiZXR3ZWVuIGFjdGlvbnMgd2l0aAorLy8gZGlmZmVyZW50IGFyZ3VtZW50IGxpc3RzLiAg
QysrIGRvZXNuJ3Qgc3VwcG9ydCBkZWZhdWx0IGFyZ3VtZW50cyBmb3IKKy8vIGZ1bmN0aW9uIHRl
bXBsYXRlcywgc28gd2UgaGF2ZSB0byBvdmVybG9hZCBpdC4KKworJHJhbmdlIGkgMS4ubgorJGZv
ciBpIFtbCiskcmFuZ2UgaiAxLi5pCit0ZW1wbGF0ZSA8JGZvciBqIFtbaW50IGskaiwgXV10eXBl
bmFtZSBJbm5lckFjdGlvbj4KK2lubGluZSBpbnRlcm5hbDo6V2l0aEFyZ3NBY3Rpb248SW5uZXJB
Y3Rpb24kZm9yIGogW1ssIGskal1dPgorV2l0aEFyZ3MoY29uc3QgSW5uZXJBY3Rpb24mIGFjdGlv
bikgeworICByZXR1cm4gaW50ZXJuYWw6OldpdGhBcmdzQWN0aW9uPElubmVyQWN0aW9uJGZvciBq
IFtbLCBrJGpdXT4oYWN0aW9uKTsKK30KKworCitdXQorLy8gQ3JlYXRlcyBhbiBhY3Rpb24gdGhh
dCBkb2VzIGFjdGlvbnMgYTEsIGEyLCAuLi4sIHNlcXVlbnRpYWxseSBpbgorLy8gZWFjaCBpbnZv
Y2F0aW9uLgorJHJhbmdlIGkgMi4ubgorJGZvciBpIFtbCiskcmFuZ2UgaiAyLi5pCiskdmFyIHR5
cGVzID0gW1skZm9yIGosIFtbdHlwZW5hbWUgQWN0aW9uJGpdXV1dCiskdmFyIEFhcyA9IFtbJGZv
ciBqIFtbLCBBY3Rpb24kaiBhJGpdXV1dCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBBY3Rpb24xLCAk
dHlwZXM+CiskcmFuZ2UgayAxLi5pLTEKKworaW5saW5lICRmb3IgayBbW2ludGVybmFsOjpEb0Jv
dGhBY3Rpb248QWN0aW9uJGssIF1dQWN0aW9uJGkkZm9yIGsgIFtbPl1dCisKK0RvQWxsKEFjdGlv
bjEgYTEkQWFzKSB7CiskaWYgaT09MiBbWworCisgIHJldHVybiBpbnRlcm5hbDo6RG9Cb3RoQWN0
aW9uPEFjdGlvbjEsIEFjdGlvbjI+KGExLCBhMik7CitdXSAkZWxzZSBbWworJHJhbmdlIGoyIDIu
LmkKKworICByZXR1cm4gRG9BbGwoYTEsIERvQWxsKCRmb3IgajIsIFtbYSRqMl1dKSk7CitdXQor
Cit9CisKK11dCisKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCisKKy8vIFRoZSBBQ1RJT04qIGZh
bWlseSBvZiBtYWNyb3MgY2FuIGJlIHVzZWQgaW4gYSBuYW1lc3BhY2Ugc2NvcGUgdG8KKy8vIGRl
ZmluZSBjdXN0b20gYWN0aW9ucyBlYXNpbHkuICBUaGUgc3ludGF4OgorLy8KKy8vICAgQUNUSU9O
KG5hbWUpIHsgc3RhdGVtZW50czsgfQorLy8KKy8vIHdpbGwgZGVmaW5lIGFuIGFjdGlvbiB3aXRo
IHRoZSBnaXZlbiBuYW1lIHRoYXQgZXhlY3V0ZXMgdGhlCisvLyBzdGF0ZW1lbnRzLiAgVGhlIHZh
bHVlIHJldHVybmVkIGJ5IHRoZSBzdGF0ZW1lbnRzIHdpbGwgYmUgdXNlZCBhcworLy8gdGhlIHJl
dHVybiB2YWx1ZSBvZiB0aGUgYWN0aW9uLiAgSW5zaWRlIHRoZSBzdGF0ZW1lbnRzLCB5b3UgY2Fu
CisvLyByZWZlciB0byB0aGUgSy10aCAoMC1iYXNlZCkgYXJndW1lbnQgb2YgdGhlIG1vY2sgZnVu
Y3Rpb24gYnkKKy8vICdhcmdLJywgYW5kIHJlZmVyIHRvIGl0cyB0eXBlIGJ5ICdhcmdLX3R5cGUn
LiAgRm9yIGV4YW1wbGU6CisvLworLy8gICBBQ1RJT04oSW5jcmVtZW50QXJnMSkgeworLy8gICAg
IGFyZzFfdHlwZSB0ZW1wID0gYXJnMTsKKy8vICAgICByZXR1cm4gKysoKnRlbXApOworLy8gICB9
CisvLworLy8gYWxsb3dzIHlvdSB0byB3cml0ZQorLy8KKy8vICAgLi4uV2lsbE9uY2UoSW5jcmVt
ZW50QXJnMSgpKTsKKy8vCisvLyBZb3UgY2FuIGFsc28gcmVmZXIgdG8gdGhlIGVudGlyZSBhcmd1
bWVudCB0dXBsZSBhbmQgaXRzIHR5cGUgYnkKKy8vICdhcmdzJyBhbmQgJ2FyZ3NfdHlwZScsIGFu
ZCByZWZlciB0byB0aGUgbW9jayBmdW5jdGlvbiB0eXBlIGFuZCBpdHMKKy8vIHJldHVybiB0eXBl
IGJ5ICdmdW5jdGlvbl90eXBlJyBhbmQgJ3JldHVybl90eXBlJy4KKy8vCisvLyBOb3RlIHRoYXQg
eW91IGRvbid0IG5lZWQgdG8gc3BlY2lmeSB0aGUgdHlwZXMgb2YgdGhlIG1vY2sgZnVuY3Rpb24K
Ky8vIGFyZ3VtZW50cy4gIEhvd2V2ZXIgcmVzdCBhc3N1cmVkIHRoYXQgeW91ciBjb2RlIGlzIHN0
aWxsIHR5cGUtc2FmZToKKy8vIHlvdSdsbCBnZXQgYSBjb21waWxlciBlcnJvciBpZiAqYXJnMSBk
b2Vzbid0IHN1cHBvcnQgdGhlICsrCisvLyBvcGVyYXRvciwgb3IgaWYgdGhlIHR5cGUgb2YgKyso
KmFyZzEpIGlzbid0IGNvbXBhdGlibGUgd2l0aCB0aGUKKy8vIG1vY2sgZnVuY3Rpb24ncyByZXR1
cm4gdHlwZSwgZm9yIGV4YW1wbGUuCisvLworLy8gU29tZXRpbWVzIHlvdSdsbCB3YW50IHRvIHBh
cmFtZXRlcml6ZSB0aGUgYWN0aW9uLiAgIEZvciB0aGF0IHlvdSBjYW4gdXNlCisvLyBhbm90aGVy
IG1hY3JvOgorLy8KKy8vICAgQUNUSU9OX1AobmFtZSwgcGFyYW1fbmFtZSkgeyBzdGF0ZW1lbnRz
OyB9CisvLworLy8gRm9yIGV4YW1wbGU6CisvLworLy8gICBBQ1RJT05fUChBZGQsIG4pIHsgcmV0
dXJuIGFyZzAgKyBuOyB9CisvLworLy8gd2lsbCBhbGxvdyB5b3UgdG8gd3JpdGU6CisvLworLy8g
ICAuLi5XaWxsT25jZShBZGQoNSkpOworLy8KKy8vIE5vdGUgdGhhdCB5b3UgZG9uJ3QgbmVlZCB0
byBwcm92aWRlIHRoZSB0eXBlIG9mIHRoZSBwYXJhbWV0ZXIKKy8vIGVpdGhlci4gIElmIHlvdSBu
ZWVkIHRvIHJlZmVyZW5jZSB0aGUgdHlwZSBvZiBhIHBhcmFtZXRlciBuYW1lZAorLy8gJ2Zvbycs
IHlvdSBjYW4gd3JpdGUgJ2Zvb190eXBlJy4gIEZvciBleGFtcGxlLCBpbiB0aGUgYm9keSBvZgor
Ly8gQUNUSU9OX1AoQWRkLCBuKSBhYm92ZSwgeW91IGNhbiB3cml0ZSAnbl90eXBlJyB0byByZWZl
ciB0byB0aGUgdHlwZQorLy8gb2YgJ24nLgorLy8KKy8vIFdlIGFsc28gcHJvdmlkZSBBQ1RJT05f
UDIsIEFDVElPTl9QMywgLi4uLCB1cCB0byBBQ1RJT05fUCRuIHRvIHN1cHBvcnQKKy8vIG11bHRp
LXBhcmFtZXRlciBhY3Rpb25zLgorLy8KKy8vIEZvciB0aGUgcHVycG9zZSBvZiB0eXBpbmcsIHlv
dSBjYW4gdmlldworLy8KKy8vICAgQUNUSU9OX1BrKEZvbywgcDEsIC4uLiwgcGspIHsgLi4uIH0K
Ky8vCisvLyBhcyBzaG9ydGhhbmQgZm9yCisvLworLy8gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDFf
dHlwZSwgLi4uLCB0eXBlbmFtZSBwa190eXBlPgorLy8gICBGb29BY3Rpb25QazxwMV90eXBlLCAu
Li4sIHBrX3R5cGU+IEZvbyhwMV90eXBlIHAxLCAuLi4sIHBrX3R5cGUgcGspIHsgLi4uIH0KKy8v
CisvLyBJbiBwYXJ0aWN1bGFyLCB5b3UgY2FuIHByb3ZpZGUgdGhlIHRlbXBsYXRlIHR5cGUgYXJn
dW1lbnRzCisvLyBleHBsaWNpdGx5IHdoZW4gaW52b2tpbmcgRm9vKCksIGFzIGluIEZvbzxsb25n
LCBib29sPig1LCBmYWxzZSk7CisvLyBhbHRob3VnaCB1c3VhbGx5IHlvdSBjYW4gcmVseSBvbiB0
aGUgY29tcGlsZXIgdG8gaW5mZXIgdGhlIHR5cGVzCisvLyBmb3IgeW91IGF1dG9tYXRpY2FsbHku
ICBZb3UgY2FuIGFzc2lnbiB0aGUgcmVzdWx0IG9mIGV4cHJlc3Npb24KKy8vIEZvbyhwMSwgLi4u
LCBwaykgdG8gYSB2YXJpYWJsZSBvZiB0eXBlIEZvb0FjdGlvblBrPHAxX3R5cGUsIC4uLiwKKy8v
IHBrX3R5cGU+LiAgVGhpcyBjYW4gYmUgdXNlZnVsIHdoZW4gY29tcG9zaW5nIGFjdGlvbnMuCisv
LworLy8gWW91IGNhbiBhbHNvIG92ZXJsb2FkIGFjdGlvbnMgd2l0aCBkaWZmZXJlbnQgbnVtYmVy
cyBvZiBwYXJhbWV0ZXJzOgorLy8KKy8vICAgQUNUSU9OX1AoUGx1cywgYSkgeyAuLi4gfQorLy8g
ICBBQ1RJT05fUDIoUGx1cywgYSwgYikgeyAuLi4gfQorLy8KKy8vIFdoaWxlIGl0J3MgdGVtcHRp
bmcgdG8gYWx3YXlzIHVzZSB0aGUgQUNUSU9OKiBtYWNyb3Mgd2hlbiBkZWZpbmluZworLy8gYSBu
ZXcgYWN0aW9uLCB5b3Ugc2hvdWxkIGFsc28gY29uc2lkZXIgaW1wbGVtZW50aW5nIEFjdGlvbklu
dGVyZmFjZQorLy8gb3IgdXNpbmcgTWFrZVBvbHltb3JwaGljQWN0aW9uKCkgaW5zdGVhZCwgZXNw
ZWNpYWxseSBpZiB5b3UgbmVlZCB0bworLy8gdXNlIHRoZSBhY3Rpb24gYSBsb3QuICBXaGlsZSB0
aGVzZSBhcHByb2FjaGVzIHJlcXVpcmUgbW9yZSB3b3JrLAorLy8gdGhleSBnaXZlIHlvdSBtb3Jl
IGNvbnRyb2wgb24gdGhlIHR5cGVzIG9mIHRoZSBtb2NrIGZ1bmN0aW9uCisvLyBhcmd1bWVudHMg
YW5kIHRoZSBhY3Rpb24gcGFyYW1ldGVycywgd2hpY2ggaW4gZ2VuZXJhbCBsZWFkcyB0bworLy8g
YmV0dGVyIGNvbXBpbGVyIGVycm9yIG1lc3NhZ2VzIHRoYXQgcGF5IG9mZiBpbiB0aGUgbG9uZyBy
dW4uICBUaGV5CisvLyBhbHNvIGFsbG93IG92ZXJsb2FkaW5nIGFjdGlvbnMgYmFzZWQgb24gcGFy
YW1ldGVyIHR5cGVzIChhcyBvcHBvc2VkCisvLyB0byBqdXN0IGJhc2VkIG9uIHRoZSBudW1iZXIg
b2YgcGFyYW1ldGVycykuCisvLworLy8gQ0FWRUFUOgorLy8KKy8vIEFDVElPTiooKSBjYW4gb25s
eSBiZSB1c2VkIGluIGEgbmFtZXNwYWNlIHNjb3BlLiAgVGhlIHJlYXNvbiBpcworLy8gdGhhdCBD
KysgZG9lc24ndCB5ZXQgYWxsb3cgZnVuY3Rpb24tbG9jYWwgdHlwZXMgdG8gYmUgdXNlZCB0bwor
Ly8gaW5zdGFudGlhdGUgdGVtcGxhdGVzLiAgVGhlIHVwLWNvbWluZyBDKysweCBzdGFuZGFyZCB3
aWxsIGZpeCB0aGlzLgorLy8gT25jZSB0aGF0J3MgZG9uZSwgd2UnbGwgY29uc2lkZXIgc3VwcG9y
dGluZyB1c2luZyBBQ1RJT04qKCkgaW5zaWRlCisvLyBhIGZ1bmN0aW9uLgorLy8KKy8vIE1PUkUg
SU5GT1JNQVRJT046CisvLworLy8gVG8gbGVhcm4gbW9yZSBhYm91dCB1c2luZyB0aGVzZSBtYWNy
b3MsIHBsZWFzZSBzZWFyY2ggZm9yICdBQ1RJT04nCisvLyBvbiBodHRwOi8vY29kZS5nb29nbGUu
Y29tL3AvZ29vZ2xlbW9jay93aWtpL0Nvb2tCb29rLgorCiskcmFuZ2UgaSAwLi5uCiskcmFuZ2Ug
ayAwLi5uLTEKKworLy8gQW4gaW50ZXJuYWwgbWFjcm8gbmVlZGVkIGZvciBpbXBsZW1lbnRpbmcg
QUNUSU9OKigpLgorI2RlZmluZSBHTU9DS19BQ1RJT05fQVJHX1RZUEVTX0FORF9OQU1FU19VTlVT
RURfXAorICAgIGNvbnN0IGFyZ3NfdHlwZSYgYXJncyBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXwor
JGZvciBrIFtbLCBcCisgICAgYXJnJGtbW11dX3R5cGUgYXJnJGsgR1RFU1RfQVRUUklCVVRFX1VO
VVNFRF9dXQorCisKKy8vIFNvbWV0aW1lcyB5b3Ugd2FudCB0byBnaXZlIGFuIGFjdGlvbiBleHBs
aWNpdCB0ZW1wbGF0ZSBwYXJhbWV0ZXJzCisvLyB0aGF0IGNhbm5vdCBiZSBpbmZlcnJlZCBmcm9t
IGl0cyB2YWx1ZSBwYXJhbWV0ZXJzLiAgQUNUSU9OKCkgYW5kCisvLyBBQ1RJT05fUCooKSBkb24n
dCBzdXBwb3J0IHRoYXQuICBBQ1RJT05fVEVNUExBVEUoKSByZW1lZGllcyB0aGF0CisvLyBhbmQg
Y2FuIGJlIHZpZXdlZCBhcyBhbiBleHRlbnNpb24gdG8gQUNUSU9OKCkgYW5kIEFDVElPTl9QKigp
LgorLy8KKy8vIFRoZSBzeW50YXg6CisvLworLy8gICBBQ1RJT05fVEVNUExBVEUoQWN0aW9uTmFt
ZSwKKy8vICAgICAgICAgICAgICAgICAgIEhBU19tX1RFTVBMQVRFX1BBUkFNUyhraW5kMSwgbmFt
ZTEsIC4uLiwga2luZF9tLCBuYW1lX20pLAorLy8gICAgICAgICAgICAgICAgICAgQU5EX25fVkFM
VUVfUEFSQU1TKHAxLCAuLi4sIHBfbikpIHsgc3RhdGVtZW50czsgfQorLy8KKy8vIGRlZmluZXMg
YW4gYWN0aW9uIHRlbXBsYXRlIHRoYXQgdGFrZXMgbSBleHBsaWNpdCB0ZW1wbGF0ZQorLy8gcGFy
YW1ldGVycyBhbmQgbiB2YWx1ZSBwYXJhbWV0ZXJzLiAgbmFtZV9pIGlzIHRoZSBuYW1lIG9mIHRo
ZSBpLXRoCisvLyB0ZW1wbGF0ZSBwYXJhbWV0ZXIsIGFuZCBraW5kX2kgc3BlY2lmaWVzIHdoZXRo
ZXIgaXQncyBhIHR5cGVuYW1lLAorLy8gYW4gaW50ZWdyYWwgY29uc3RhbnQsIG9yIGEgdGVtcGxh
dGUuICBwX2kgaXMgdGhlIG5hbWUgb2YgdGhlIGktdGgKKy8vIHZhbHVlIHBhcmFtZXRlci4KKy8v
CisvLyBFeGFtcGxlOgorLy8KKy8vICAgLy8gRHVwbGljYXRlQXJnPGssIFQ+KG91dHB1dCkgY29u
dmVydHMgdGhlIGstdGggYXJndW1lbnQgb2YgdGhlIG1vY2sKKy8vICAgLy8gZnVuY3Rpb24gdG8g
dHlwZSBUIGFuZCBjb3BpZXMgaXQgdG8gKm91dHB1dC4KKy8vICAgQUNUSU9OX1RFTVBMQVRFKER1
cGxpY2F0ZUFyZywKKy8vICAgICAgICAgICAgICAgICAgIEhBU18yX1RFTVBMQVRFX1BBUkFNUyhp
bnQsIGssIHR5cGVuYW1lLCBUKSwKKy8vICAgICAgICAgICAgICAgICAgIEFORF8xX1ZBTFVFX1BB
UkFNUyhvdXRwdXQpKSB7CisvLyAgICAgKm91dHB1dCA9IFQoOjp0ZXN0aW5nOjpnZXQ8az4oYXJn
cykpOworLy8gICB9CisvLyAgIC4uLgorLy8gICAgIGludCBuOworLy8gICAgIEVYUEVDVF9DQUxM
KG1vY2ssIEZvbyhfLCBfKSkKKy8vICAgICAgICAgLldpbGxPbmNlKER1cGxpY2F0ZUFyZzwxLCB1
bnNpZ25lZCBjaGFyPigmbikpOworLy8KKy8vIFRvIGNyZWF0ZSBhbiBpbnN0YW5jZSBvZiBhbiBh
Y3Rpb24gdGVtcGxhdGUsIHdyaXRlOgorLy8KKy8vICAgQWN0aW9uTmFtZTx0MSwgLi4uLCB0X20+
KHYxLCAuLi4sIHZfbikKKy8vCisvLyB3aGVyZSB0aGUgdHMgYXJlIHRoZSB0ZW1wbGF0ZSBhcmd1
bWVudHMgYW5kIHRoZSB2cyBhcmUgdGhlIHZhbHVlCisvLyBhcmd1bWVudHMuICBUaGUgdmFsdWUg
YXJndW1lbnQgdHlwZXMgYXJlIGluZmVycmVkIGJ5IHRoZSBjb21waWxlci4KKy8vIElmIHlvdSB3
YW50IHRvIGV4cGxpY2l0bHkgc3BlY2lmeSB0aGUgdmFsdWUgYXJndW1lbnQgdHlwZXMsIHlvdSBj
YW4KKy8vIHByb3ZpZGUgYWRkaXRpb25hbCB0ZW1wbGF0ZSBhcmd1bWVudHM6CisvLworLy8gICBB
Y3Rpb25OYW1lPHQxLCAuLi4sIHRfbSwgdTEsIC4uLiwgdV9rPih2MSwgLi4uLCB2X24pCisvLwor
Ly8gd2hlcmUgdV9pIGlzIHRoZSBkZXNpcmVkIHR5cGUgb2Ygdl9pLgorLy8KKy8vIEFDVElPTl9U
RU1QTEFURSBhbmQgQUNUSU9OL0FDVElPTl9QKiBjYW4gYmUgb3ZlcmxvYWRlZCBvbiB0aGUKKy8v
IG51bWJlciBvZiB2YWx1ZSBwYXJhbWV0ZXJzLCBidXQgbm90IG9uIHRoZSBudW1iZXIgb2YgdGVt
cGxhdGUKKy8vIHBhcmFtZXRlcnMuICBXaXRob3V0IHRoZSByZXN0cmljdGlvbiwgdGhlIG1lYW5p
bmcgb2YgdGhlIGZvbGxvd2luZworLy8gaXMgdW5jbGVhcjoKKy8vCisvLyAgIE92ZXJsb2FkZWRB
Y3Rpb248aW50LCBib29sPih4KTsKKy8vCisvLyBBcmUgd2UgdXNpbmcgYSBzaW5nbGUtdGVtcGxh
dGUtcGFyYW1ldGVyIGFjdGlvbiB3aGVyZSAnYm9vbCcgcmVmZXJzCisvLyB0byB0aGUgdHlwZSBv
ZiB4LCBvciBhcmUgd2UgdXNpbmcgYSB0d28tdGVtcGxhdGUtcGFyYW1ldGVyIGFjdGlvbgorLy8g
d2hlcmUgdGhlIGNvbXBpbGVyIGlzIGFza2VkIHRvIGluZmVyIHRoZSB0eXBlIG9mIHg/CisvLwor
Ly8gSW1wbGVtZW50YXRpb24gbm90ZXM6CisvLworLy8gR01PQ0tfSU5URVJOQUxfKl9IQVNfbV9U
RU1QTEFURV9QQVJBTVMgYW5kCisvLyBHTU9DS19JTlRFUk5BTF8qX0FORF9uX1ZBTFVFX1BBUkFN
UyBhcmUgaW50ZXJuYWwgbWFjcm9zIGZvcgorLy8gaW1wbGVtZW50aW5nIEFDVElPTl9URU1QTEFU
RS4gIFRoZSBtYWluIHRyaWNrIHdlIHVzZSBpcyB0byBjcmVhdGUKKy8vIG5ldyBtYWNybyBpbnZv
Y2F0aW9ucyB3aGVuIGV4cGFuZGluZyBhIG1hY3JvLiAgRm9yIGV4YW1wbGUsIHdlIGhhdmUKKy8v
CisvLyAgICNkZWZpbmUgQUNUSU9OX1RFTVBMQVRFKG5hbWUsIHRlbXBsYXRlX3BhcmFtcywgdmFs
dWVfcGFyYW1zKQorLy8gICAgICAgLi4uIEdNT0NLX0lOVEVSTkFMX0RFQ0xfIyN0ZW1wbGF0ZV9w
YXJhbXMgLi4uCisvLworLy8gd2hpY2ggY2F1c2VzIEFDVElPTl9URU1QTEFURSguLi4sIEhBU18x
X1RFTVBMQVRFX1BBUkFNUyh0eXBlbmFtZSwgVCksIC4uLikKKy8vIHRvIGV4cGFuZCB0bworLy8K
Ky8vICAgICAgIC4uLiBHTU9DS19JTlRFUk5BTF9ERUNMX0hBU18xX1RFTVBMQVRFX1BBUkFNUyh0
eXBlbmFtZSwgVCkgLi4uCisvLworLy8gU2luY2UgR01PQ0tfSU5URVJOQUxfREVDTF9IQVNfMV9U
RU1QTEFURV9QQVJBTVMgaXMgYSBtYWNybywgdGhlCisvLyBwcmVwcm9jZXNzb3Igd2lsbCBjb250
aW51ZSB0byBleHBhbmQgaXQgdG8KKy8vCisvLyAgICAgICAuLi4gdHlwZW5hbWUgVCAuLi4KKy8v
CisvLyBUaGlzIHRlY2huaXF1ZSBjb25mb3JtcyB0byB0aGUgQysrIHN0YW5kYXJkIGFuZCBpcyBw
b3J0YWJsZS4gIEl0CisvLyBhbGxvd3MgdXMgdG8gaW1wbGVtZW50IGFjdGlvbiB0ZW1wbGF0ZXMg
dXNpbmcgTyhOKSBjb2RlLCB3aGVyZSBOIGlzCisvLyB0aGUgbWF4aW11bSBudW1iZXIgb2YgdGVt
cGxhdGUvdmFsdWUgcGFyYW1ldGVycyBzdXBwb3J0ZWQuICBXaXRob3V0CisvLyB1c2luZyBpdCwg
d2UnZCBoYXZlIHRvIGRldm90ZSBPKE5eMikgYW1vdW50IG9mIGNvZGUgdG8gaW1wbGVtZW50IGFs
bAorLy8gY29tYmluYXRpb25zIG9mIG0gYW5kIG4uCisKKy8vIERlY2xhcmVzIHRoZSB0ZW1wbGF0
ZSBwYXJhbWV0ZXJzLgorCiskcmFuZ2UgaiAxLi5uCiskZm9yIGogW1sKKyRyYW5nZSBtIDAuLmot
MQorI2RlZmluZSBHTU9DS19JTlRFUk5BTF9ERUNMX0hBU18kaltbXV0KK19URU1QTEFURV9QQVJB
TVMoJGZvciBtLCBbW2tpbmQkbSwgbmFtZSRtXV0pICRmb3IgbSwgW1traW5kJG0gbmFtZSRtXV0K
KworCitdXQorCisvLyBMaXN0cyB0aGUgdGVtcGxhdGUgcGFyYW1ldGVycy4KKworJGZvciBqIFtb
CiskcmFuZ2UgbSAwLi5qLTEKKyNkZWZpbmUgR01PQ0tfSU5URVJOQUxfTElTVF9IQVNfJGpbW11d
CitfVEVNUExBVEVfUEFSQU1TKCRmb3IgbSwgW1traW5kJG0sIG5hbWUkbV1dKSAkZm9yIG0sIFtb
bmFtZSRtXV0KKworCitdXQorCisvLyBEZWNsYXJlcyB0aGUgdHlwZXMgb2YgdmFsdWUgcGFyYW1l
dGVycy4KKworJGZvciBpIFtbCiskcmFuZ2UgaiAwLi5pLTEKKyNkZWZpbmUgR01PQ0tfSU5URVJO
QUxfREVDTF9UWVBFX0FORF8kaVtbXV0KK19WQUxVRV9QQVJBTVMoJGZvciBqLCBbW3Akal1dKSAk
Zm9yIGogW1ssIHR5cGVuYW1lIHAkaiMjX3R5cGVdXQorCisKK11dCisKKy8vIEluaXRpYWxpemVz
IHRoZSB2YWx1ZSBwYXJhbWV0ZXJzLgorCiskZm9yIGkgW1sKKyRyYW5nZSBqIDAuLmktMQorI2Rl
ZmluZSBHTU9DS19JTlRFUk5BTF9JTklUX0FORF8kaVtbXV1fVkFMVUVfUEFSQU1TKCRmb3Igaiwg
W1twJGpdXSlcCisgICAgKCRmb3IgaiwgW1twJGojI190eXBlIGdtb2NrX3Akal1dKSRpZiBpPjAg
W1sgOiBdXSRmb3IgaiwgW1twJGooZ21vY2tfcCRqKV1dCisKKworXV0KKworLy8gRGVjbGFyZXMg
dGhlIGZpZWxkcyBmb3Igc3RvcmluZyB0aGUgdmFsdWUgcGFyYW1ldGVycy4KKworJGZvciBpIFtb
CiskcmFuZ2UgaiAwLi5pLTEKKyNkZWZpbmUgR01PQ0tfSU5URVJOQUxfREVGTl9BTkRfJGlbW11d
CitfVkFMVUVfUEFSQU1TKCRmb3IgaiwgW1twJGpdXSkgJGZvciBqIFtbcCRqIyNfdHlwZSBwJGo7
IF1dCisKKworXV0KKworLy8gTGlzdHMgdGhlIHZhbHVlIHBhcmFtZXRlcnMuCisKKyRmb3IgaSBb
WworJHJhbmdlIGogMC4uaS0xCisjZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0xJU1RfQU5EXyRpW1td
XQorX1ZBTFVFX1BBUkFNUygkZm9yIGosIFtbcCRqXV0pICRmb3IgaiwgW1twJGpdXQorCisKK11d
CisKKy8vIExpc3RzIHRoZSB2YWx1ZSBwYXJhbWV0ZXIgdHlwZXMuCisKKyRmb3IgaSBbWworJHJh
bmdlIGogMC4uaS0xCisjZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0xJU1RfVFlQRV9BTkRfJGlbW11d
CitfVkFMVUVfUEFSQU1TKCRmb3IgaiwgW1twJGpdXSkgJGZvciBqIFtbLCBwJGojI190eXBlXV0K
KworCitdXQorCisvLyBEZWNsYXJlcyB0aGUgdmFsdWUgcGFyYW1ldGVycy4KKworJGZvciBpIFtb
CiskcmFuZ2UgaiAwLi5pLTEKKyNkZWZpbmUgR01PQ0tfSU5URVJOQUxfREVDTF9BTkRfJGlbW11d
X1ZBTFVFX1BBUkFNUygkZm9yIGosIFtbcCRqXV0pIFtbXV0KKyRmb3IgaiwgW1twJGojI190eXBl
IHAkal1dCisKKworXV0KKworLy8gVGhlIHN1ZmZpeCBvZiB0aGUgY2xhc3MgdGVtcGxhdGUgaW1w
bGVtZW50aW5nIHRoZSBhY3Rpb24gdGVtcGxhdGUuCiskZm9yIGkgW1sKKworCiskcmFuZ2UgaiAw
Li5pLTEKKyNkZWZpbmUgR01PQ0tfSU5URVJOQUxfQ09VTlRfQU5EXyRpW1tdXV9WQUxVRV9QQVJB
TVMoJGZvciBqLCBbW3Akal1dKSBbW11dCiskaWYgaT09MSBbW1BdXSAkZWxpZiBpPj0yIFtbUCRp
XV0KK11dCisKKworLy8gVGhlIG5hbWUgb2YgdGhlIGNsYXNzIHRlbXBsYXRlIGltcGxlbWVudGlu
ZyB0aGUgYWN0aW9uIHRlbXBsYXRlLgorI2RlZmluZSBHTU9DS19BQ1RJT05fQ0xBU1NfKG5hbWUs
IHZhbHVlX3BhcmFtcylcCisgICAgR1RFU1RfQ09OQ0FUX1RPS0VOXyhuYW1lIyNBY3Rpb24sIEdN
T0NLX0lOVEVSTkFMX0NPVU5UXyMjdmFsdWVfcGFyYW1zKQorCiskcmFuZ2UgayAwLi5uLTEKKwor
I2RlZmluZSBBQ1RJT05fVEVNUExBVEUobmFtZSwgdGVtcGxhdGVfcGFyYW1zLCB2YWx1ZV9wYXJh
bXMpXAorICB0ZW1wbGF0ZSA8R01PQ0tfSU5URVJOQUxfREVDTF8jI3RlbXBsYXRlX3BhcmFtc1wK
KyAgICAgICAgICAgIEdNT0NLX0lOVEVSTkFMX0RFQ0xfVFlQRV8jI3ZhbHVlX3BhcmFtcz5cCisg
IGNsYXNzIEdNT0NLX0FDVElPTl9DTEFTU18obmFtZSwgdmFsdWVfcGFyYW1zKSB7XAorICAgcHVi
bGljOlwKKyAgICBleHBsaWNpdCBHTU9DS19BQ1RJT05fQ0xBU1NfKG5hbWUsIHZhbHVlX3BhcmFt
cylcCisgICAgICAgIEdNT0NLX0lOVEVSTkFMX0lOSVRfIyN2YWx1ZV9wYXJhbXMge31cCisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIEY+XAorICAgIGNsYXNzIGdtb2NrX0ltcGwgOiBwdWJsaWMgOjp0
ZXN0aW5nOjpBY3Rpb25JbnRlcmZhY2U8Rj4ge1wKKyAgICAgcHVibGljOlwKKyAgICAgIHR5cGVk
ZWYgRiBmdW5jdGlvbl90eXBlO1wKKyAgICAgIHR5cGVkZWYgdHlwZW5hbWUgOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6RnVuY3Rpb248Rj46OlJlc3VsdCByZXR1cm5fdHlwZTtcCisgICAgICB0eXBlZGVm
IHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpBcmd1bWVudFR1cGxl
XAorICAgICAgICAgIGFyZ3NfdHlwZTtcCisgICAgICBleHBsaWNpdCBnbW9ja19JbXBsIEdNT0NL
X0lOVEVSTkFMX0lOSVRfIyN2YWx1ZV9wYXJhbXMge31cCisgICAgICB2aXJ0dWFsIHJldHVybl90
eXBlIFBlcmZvcm0oY29uc3QgYXJnc190eXBlJiBhcmdzKSB7XAorICAgICAgICByZXR1cm4gOjp0
ZXN0aW5nOjppbnRlcm5hbDo6QWN0aW9uSGVscGVyPHJldHVybl90eXBlLCBnbW9ja19JbXBsPjo6
XAorICAgICAgICAgICAgUGVyZm9ybSh0aGlzLCBhcmdzKTtcCisgICAgICB9XAorICAgICAgdGVt
cGxhdGUgPCRmb3IgaywgW1t0eXBlbmFtZSBhcmcka1tbXV1fdHlwZV1dPlwKKyAgICAgIHJldHVy
bl90eXBlIGdtb2NrX1BlcmZvcm1JbXBsKGNvbnN0IGFyZ3NfdHlwZSYgYXJnc1tbXV0KKyRmb3Ig
ayBbWywgYXJnJGtbW11dX3R5cGUgYXJnJGtdXSkgY29uc3Q7XAorICAgICAgR01PQ0tfSU5URVJO
QUxfREVGTl8jI3ZhbHVlX3BhcmFtc1wKKyAgICAgcHJpdmF0ZTpcCisgICAgICBHVEVTVF9ESVNB
TExPV19BU1NJR05fKGdtb2NrX0ltcGwpO1wKKyAgICB9O1wKKyAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgRj4gb3BlcmF0b3IgOjp0ZXN0aW5nOjpBY3Rpb248Rj4oKSBjb25zdCB7XAorICAgICAgcmV0
dXJuIDo6dGVzdGluZzo6QWN0aW9uPEY+KFwKKyAgICAgICAgICBuZXcgZ21vY2tfSW1wbDxGPihH
TU9DS19JTlRFUk5BTF9MSVNUXyMjdmFsdWVfcGFyYW1zKSk7XAorICAgIH1cCisgICAgR01PQ0tf
SU5URVJOQUxfREVGTl8jI3ZhbHVlX3BhcmFtc1wKKyAgIHByaXZhdGU6XAorICAgIEdURVNUX0RJ
U0FMTE9XX0FTU0lHTl8oR01PQ0tfQUNUSU9OX0NMQVNTXyhuYW1lLCB2YWx1ZV9wYXJhbXMpKTtc
CisgIH07XAorICB0ZW1wbGF0ZSA8R01PQ0tfSU5URVJOQUxfREVDTF8jI3RlbXBsYXRlX3BhcmFt
c1wKKyAgICAgICAgICAgIEdNT0NLX0lOVEVSTkFMX0RFQ0xfVFlQRV8jI3ZhbHVlX3BhcmFtcz5c
CisgIGlubGluZSBHTU9DS19BQ1RJT05fQ0xBU1NfKG5hbWUsIHZhbHVlX3BhcmFtcyk8XAorICAg
ICAgR01PQ0tfSU5URVJOQUxfTElTVF8jI3RlbXBsYXRlX3BhcmFtc1wKKyAgICAgIEdNT0NLX0lO
VEVSTkFMX0xJU1RfVFlQRV8jI3ZhbHVlX3BhcmFtcz4gbmFtZShcCisgICAgICAgICAgR01PQ0tf
SU5URVJOQUxfREVDTF8jI3ZhbHVlX3BhcmFtcykge1wKKyAgICByZXR1cm4gR01PQ0tfQUNUSU9O
X0NMQVNTXyhuYW1lLCB2YWx1ZV9wYXJhbXMpPFwKKyAgICAgICAgR01PQ0tfSU5URVJOQUxfTElT
VF8jI3RlbXBsYXRlX3BhcmFtc1wKKyAgICAgICAgR01PQ0tfSU5URVJOQUxfTElTVF9UWVBFXyMj
dmFsdWVfcGFyYW1zPihcCisgICAgICAgICAgICBHTU9DS19JTlRFUk5BTF9MSVNUXyMjdmFsdWVf
cGFyYW1zKTtcCisgIH1cCisgIHRlbXBsYXRlIDxHTU9DS19JTlRFUk5BTF9ERUNMXyMjdGVtcGxh
dGVfcGFyYW1zXAorICAgICAgICAgICAgR01PQ0tfSU5URVJOQUxfREVDTF9UWVBFXyMjdmFsdWVf
cGFyYW1zPlwKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+XAorICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
YXJnMF90eXBlLCB0eXBlbmFtZSBhcmcxX3R5cGUsIHR5cGVuYW1lIGFyZzJfdHlwZSwgXAorICAg
ICAgdHlwZW5hbWUgYXJnM190eXBlLCB0eXBlbmFtZSBhcmc0X3R5cGUsIHR5cGVuYW1lIGFyZzVf
dHlwZSwgXAorICAgICAgdHlwZW5hbWUgYXJnNl90eXBlLCB0eXBlbmFtZSBhcmc3X3R5cGUsIHR5
cGVuYW1lIGFyZzhfdHlwZSwgXAorICAgICAgdHlwZW5hbWUgYXJnOV90eXBlPlwKKyAgdHlwZW5h
bWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RnVuY3Rpb248Rj46OlJlc3VsdFwKKyAgICAgIEdNT0NL
X0FDVElPTl9DTEFTU18obmFtZSwgdmFsdWVfcGFyYW1zKTxcCisgICAgICAgICAgR01PQ0tfSU5U
RVJOQUxfTElTVF8jI3RlbXBsYXRlX3BhcmFtc1wKKyAgICAgICAgICBHTU9DS19JTlRFUk5BTF9M
SVNUX1RZUEVfIyN2YWx1ZV9wYXJhbXM+OjpnbW9ja19JbXBsPEY+OjpcCisgICAgICAgICAgICAg
IGdtb2NrX1BlcmZvcm1JbXBsKFwKKyAgICAgICAgICBHTU9DS19BQ1RJT05fQVJHX1RZUEVTX0FO
RF9OQU1FU19VTlVTRURfKSBjb25zdAorCiskZm9yIGkKKworW1sKKyR2YXIgdGVtcGxhdGUgPSBb
WyRpZiBpPT0wIFtbXV0gJGVsc2UgW1sKKyRyYW5nZSBqIDAuLmktMQorCisgIHRlbXBsYXRlIDwk
Zm9yIGosIFtbdHlwZW5hbWUgcCRqIyNfdHlwZV1dPlwKK11dXV0KKyR2YXIgY2xhc3NfbmFtZSA9
IFtbbmFtZSMjQWN0aW9uW1skaWYgaT09MCBbW11dICRlbGlmIGk9PTEgW1tQXV0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRlbHNlIFtbUCRpXV1dXV1d
CiskcmFuZ2UgaiAwLi5pLTEKKyR2YXIgY3Rvcl9wYXJhbV9saXN0ID0gW1skZm9yIGosIFtbcCRq
IyNfdHlwZSBnbW9ja19wJGpdXV1dCiskdmFyIHBhcmFtX3R5cGVzX2FuZF9uYW1lcyA9IFtbJGZv
ciBqLCBbW3AkaiMjX3R5cGUgcCRqXV1dXQorJHZhciBpbml0cyA9IFtbJGlmIGk9PTAgW1tdXSAk
ZWxzZSBbWyA6ICRmb3IgaiwgW1twJGooZ21vY2tfcCRqKV1dXV1dXQorJHZhciBwYXJhbV9maWVs
ZF9kZWNscyA9IFtbJGZvciBqCitbWworCisgICAgICBwJGojI190eXBlIHAkajtcCitdXV1dCisk
dmFyIHBhcmFtX2ZpZWxkX2RlY2xzMiA9IFtbJGZvciBqCitbWworCisgICAgcCRqIyNfdHlwZSBw
JGo7XAorXV1dXQorJHZhciBwYXJhbXMgPSBbWyRmb3IgaiwgW1twJGpdXV1dCiskdmFyIHBhcmFt
X3R5cGVzID0gW1skaWYgaT09MCBbW11dICRlbHNlIFtbPCRmb3IgaiwgW1twJGojI190eXBlXV0+
XV1dXQorJHZhciB0eXBlbmFtZV9hcmdfdHlwZXMgPSBbWyRmb3IgaywgW1t0eXBlbmFtZSBhcmck
a1tbXV1fdHlwZV1dXV0KKyR2YXIgYXJnX3R5cGVzX2FuZF9uYW1lcyA9IFtbJGZvciBrLCBbW2Fy
ZyRrW1tdXV90eXBlIGFyZyRrXV1dXQorJHZhciBtYWNyb19uYW1lID0gW1skaWYgaT09MCBbW0FD
VElPTl1dICRlbGlmIGk9PTEgW1tBQ1RJT05fUF1dCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJGVsc2UgW1tBQ1RJT05fUCRpXV1dXQorCisjZGVmaW5lICRtYWNyb19u
YW1lKG5hbWUkZm9yIGogW1ssIHAkal1dKVwkdGVtcGxhdGUKKyAgY2xhc3MgJGNsYXNzX25hbWUg
e1wKKyAgIHB1YmxpYzpcCisgICAgW1skaWYgaT09MSBbW2V4cGxpY2l0IF1dXV0kY2xhc3NfbmFt
ZSgkY3Rvcl9wYXJhbV9saXN0KSRpbml0cyB7fVwKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRj5c
CisgICAgY2xhc3MgZ21vY2tfSW1wbCA6IHB1YmxpYyA6OnRlc3Rpbmc6OkFjdGlvbkludGVyZmFj
ZTxGPiB7XAorICAgICBwdWJsaWM6XAorICAgICAgdHlwZWRlZiBGIGZ1bmN0aW9uX3R5cGU7XAor
ICAgICAgdHlwZWRlZiB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpGdW5jdGlvbjxGPjo6
UmVzdWx0IHJldHVybl90eXBlO1wKKyAgICAgIHR5cGVkZWYgdHlwZW5hbWUgOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6RnVuY3Rpb248Rj46OkFyZ3VtZW50VHVwbGVcCisgICAgICAgICAgYXJnc190eXBl
O1wKKyAgICAgIFtbJGlmIGk9PTEgW1tleHBsaWNpdCBdXV1dZ21vY2tfSW1wbCgkY3Rvcl9wYXJh
bV9saXN0KSRpbml0cyB7fVwKKyAgICAgIHZpcnR1YWwgcmV0dXJuX3R5cGUgUGVyZm9ybShjb25z
dCBhcmdzX3R5cGUmIGFyZ3MpIHtcCisgICAgICAgIHJldHVybiA6OnRlc3Rpbmc6OmludGVybmFs
OjpBY3Rpb25IZWxwZXI8cmV0dXJuX3R5cGUsIGdtb2NrX0ltcGw+OjpcCisgICAgICAgICAgICBQ
ZXJmb3JtKHRoaXMsIGFyZ3MpO1wKKyAgICAgIH1cCisgICAgICB0ZW1wbGF0ZSA8JHR5cGVuYW1l
X2FyZ190eXBlcz5cCisgICAgICByZXR1cm5fdHlwZSBnbW9ja19QZXJmb3JtSW1wbChjb25zdCBh
cmdzX3R5cGUmIGFyZ3MsIFtbXV0KKyRhcmdfdHlwZXNfYW5kX25hbWVzKSBjb25zdDtcJHBhcmFt
X2ZpZWxkX2RlY2xzCisgICAgIHByaXZhdGU6XAorICAgICAgR1RFU1RfRElTQUxMT1dfQVNTSUdO
XyhnbW9ja19JbXBsKTtcCisgICAgfTtcCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+IG9wZXJh
dG9yIDo6dGVzdGluZzo6QWN0aW9uPEY+KCkgY29uc3Qge1wKKyAgICAgIHJldHVybiA6OnRlc3Rp
bmc6OkFjdGlvbjxGPihuZXcgZ21vY2tfSW1wbDxGPigkcGFyYW1zKSk7XAorICAgIH1cJHBhcmFt
X2ZpZWxkX2RlY2xzMgorICAgcHJpdmF0ZTpcCisgICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXygk
Y2xhc3NfbmFtZSk7XAorICB9O1wkdGVtcGxhdGUKKyAgaW5saW5lICRjbGFzc19uYW1lJHBhcmFt
X3R5cGVzIG5hbWUoJHBhcmFtX3R5cGVzX2FuZF9uYW1lcykge1wKKyAgICByZXR1cm4gJGNsYXNz
X25hbWUkcGFyYW1fdHlwZXMoJHBhcmFtcyk7XAorICB9XCR0ZW1wbGF0ZQorICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgRj5cCisgIHRlbXBsYXRlIDwkdHlwZW5hbWVfYXJnX3R5cGVzPlwKKyAgdHlwZW5h
bWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RnVuY3Rpb248Rj46OlJlc3VsdFwKKyAgICAgICRjbGFz
c19uYW1lJHBhcmFtX3R5cGVzOjpnbW9ja19JbXBsPEY+OjpnbW9ja19QZXJmb3JtSW1wbChcCisg
ICAgICAgICAgR01PQ0tfQUNUSU9OX0FSR19UWVBFU19BTkRfTkFNRVNfVU5VU0VEXykgY29uc3QK
K11dCiskJCB9ICAvLyBUaGlzIG1ldGEgY29tbWVudCBmaXhlcyBhdXRvLWluZGVudGF0aW9uIGlu
IEVtYWNzLiAgSXQgd29uJ3QKKyQkICAgIC8vIHNob3cgdXAgaW4gdGhlIGdlbmVyYXRlZCBjb2Rl
LgorCisKK25hbWVzcGFjZSB0ZXN0aW5nIHsKKworCisvLyBUaGUgQUNUSU9OKigpIG1hY3JvcyB0
cmlnZ2VyIHdhcm5pbmcgQzQxMDAgKHVucmVmZXJlbmNlZCBmb3JtYWwKKy8vIHBhcmFtZXRlcikg
aW4gTVNWQyB3aXRoIC1XNC4gIFVuZm9ydHVuYXRlbHkgdGhleSBjYW5ub3QgYmUgZml4ZWQgaW4K
Ky8vIHRoZSBtYWNybyBkZWZpbml0aW9uLCBhcyB0aGUgd2FybmluZ3MgYXJlIGdlbmVyYXRlZCB3
aGVuIHRoZSBtYWNybworLy8gaXMgZXhwYW5kZWQgYW5kIG1hY3JvIGV4cGFuc2lvbiBjYW5ub3Qg
Y29udGFpbiAjcHJhZ21hLiAgVGhlcmVmb3JlCisvLyB3ZSBzdXBwcmVzcyB0aGVtIGhlcmUuCisj
aWZkZWYgX01TQ19WRVIKKyMgcHJhZ21hIHdhcm5pbmcocHVzaCkKKyMgcHJhZ21hIHdhcm5pbmco
ZGlzYWJsZTo0MTAwKQorI2VuZGlmCisKKy8vIFZhcmlvdXMgb3ZlcmxvYWRzIGZvciBJbnZva2VB
cmd1bWVudDxOPigpLgorLy8KKy8vIFRoZSBJbnZva2VBcmd1bWVudDxOPihhMSwgYTIsIC4uLiwg
YV9rKSBhY3Rpb24gaW52b2tlcyB0aGUgTi10aAorLy8gKDAtYmFzZWQpIGFyZ3VtZW50LCB3aGlj
aCBtdXN0IGJlIGEgay1hcnkgY2FsbGFibGUsIG9mIHRoZSBtb2NrCisvLyBmdW5jdGlvbiwgd2l0
aCBhcmd1bWVudHMgYTEsIGEyLCAuLi4sIGFfay4KKy8vCisvLyBOb3RlczoKKy8vCisvLyAgIDEu
IFRoZSBhcmd1bWVudHMgYXJlIHBhc3NlZCBieSB2YWx1ZSBieSBkZWZhdWx0LiAgSWYgeW91IG5l
ZWQgdG8KKy8vICAgcGFzcyBhbiBhcmd1bWVudCBieSByZWZlcmVuY2UsIHdyYXAgaXQgaW5zaWRl
IEJ5UmVmKCkuICBGb3IKKy8vICAgZXhhbXBsZSwKKy8vCisvLyAgICAgSW52b2tlQXJndW1lbnQ8
MT4oNSwgc3RyaW5nKCJIZWxsbyIpLCBCeVJlZihmb28pKQorLy8KKy8vICAgcGFzc2VzIDUgYW5k
IHN0cmluZygiSGVsbG8iKSBieSB2YWx1ZSwgYW5kIHBhc3NlcyBmb28gYnkKKy8vICAgcmVmZXJl
bmNlLgorLy8KKy8vICAgMi4gSWYgdGhlIGNhbGxhYmxlIHRha2VzIGFuIGFyZ3VtZW50IGJ5IHJl
ZmVyZW5jZSBidXQgQnlSZWYoKSBpcworLy8gICBub3QgdXNlZCwgaXQgd2lsbCByZWNlaXZlIHRo
ZSByZWZlcmVuY2UgdG8gYSBjb3B5IG9mIHRoZSB2YWx1ZSwKKy8vICAgaW5zdGVhZCBvZiB0aGUg
b3JpZ2luYWwgdmFsdWUuICBGb3IgZXhhbXBsZSwgd2hlbiB0aGUgMC10aAorLy8gICBhcmd1bWVu
dCBvZiB0aGUgbW9jayBmdW5jdGlvbiB0YWtlcyBhIGNvbnN0IHN0cmluZyYsIHRoZSBhY3Rpb24K
Ky8vCisvLyAgICAgSW52b2tlQXJndW1lbnQ8MD4oc3RyaW5nKCJIZWxsbyIpKQorLy8KKy8vICAg
bWFrZXMgYSBjb3B5IG9mIHRoZSB0ZW1wb3Jhcnkgc3RyaW5nKCJIZWxsbyIpIG9iamVjdCBhbmQg
cGFzc2VzIGEKKy8vICAgcmVmZXJlbmNlIG9mIHRoZSBjb3B5LCBpbnN0ZWFkIG9mIHRoZSBvcmln
aW5hbCB0ZW1wb3Jhcnkgb2JqZWN0LAorLy8gICB0byB0aGUgY2FsbGFibGUuICBUaGlzIG1ha2Vz
IGl0IGVhc3kgZm9yIGEgdXNlciB0byBkZWZpbmUgYW4KKy8vICAgSW52b2tlQXJndW1lbnQgYWN0
aW9uIGZyb20gdGVtcG9yYXJ5IHZhbHVlcyBhbmQgaGF2ZSBpdCBwZXJmb3JtZWQKKy8vICAgbGF0
ZXIuCisKK25hbWVzcGFjZSBpbnRlcm5hbCB7CituYW1lc3BhY2UgaW52b2tlX2FyZ3VtZW50IHsK
KworLy8gQXBwZWFycyBpbiBJbnZva2VBcmd1bWVudEFkbCdzIGFyZ3VtZW50IGxpc3QgdG8gaGVs
cCBhdm9pZAorLy8gYWNjaWRlbnRhbCBjYWxscyB0byB1c2VyIGZ1bmN0aW9ucyBvZiB0aGUgc2Ft
ZSBuYW1lLgorc3RydWN0IEFkbFRhZyB7fTsKKworLy8gSW52b2tlQXJndW1lbnRBZGwgLSBhIGhl
bHBlciBmb3IgSW52b2tlQXJndW1lbnQuCisvLyBUaGUgYmFzaWMgb3ZlcmxvYWRzIGFyZSBwcm92
aWRlZCBoZXJlIGZvciBnZW5lcmljIGZ1bmN0b3JzLgorLy8gT3ZlcmxvYWRzIGZvciBvdGhlciBj
dXN0b20tY2FsbGFibGVzIGFyZSBwcm92aWRlZCBpbiB0aGUKKy8vIGludGVybmFsL2N1c3RvbS9j
YWxsYmFjay1hY3Rpb25zLmggaGVhZGVyLgorCiskcmFuZ2UgaSAwLi5uCiskZm9yIGkKK1tbCisk
cmFuZ2UgaiAxLi5pCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBSLCB0eXBlbmFtZSBGW1skZm9yIGog
W1ssIHR5cGVuYW1lIEEkal1dXV0+CitSIEludm9rZUFyZ3VtZW50QWRsKEFkbFRhZywgRiBmW1sk
Zm9yIGogW1ssIEEkaiBhJGpdXV1dKSB7CisgIHJldHVybiBmKFtbJGZvciBqLCBbW2Ekal1dXV0p
OworfQorXV0KKworfSAgLy8gbmFtZXNwYWNlIGludm9rZV9hcmd1bWVudAorfSAgLy8gbmFtZXNw
YWNlIGludGVybmFsCisKKyRyYW5nZSBpIDAuLm4KKyRmb3IgaSBbWworJHJhbmdlIGogMC4uaS0x
CisKK0FDVElPTl9URU1QTEFURShJbnZva2VBcmd1bWVudCwKKyAgICAgICAgICAgICAgICBIQVNf
MV9URU1QTEFURV9QQVJBTVMoaW50LCBrKSwKKyAgICAgICAgICAgICAgICBBTkRfJGlbW11dX1ZB
TFVFX1BBUkFNUygkZm9yIGosIFtbcCRqXV0pKSB7CisgIHVzaW5nIGludGVybmFsOjppbnZva2Vf
YXJndW1lbnQ6Okludm9rZUFyZ3VtZW50QWRsOworICByZXR1cm4gSW52b2tlQXJndW1lbnRBZGw8
cmV0dXJuX3R5cGU+KAorICAgICAgaW50ZXJuYWw6Omludm9rZV9hcmd1bWVudDo6QWRsVGFnKCks
CisgICAgICA6OnRlc3Rpbmc6OmdldDxrPihhcmdzKSRmb3IgaiBbWywgcCRqXV0pOworfQorCitd
XQorCisvLyBWYXJpb3VzIG92ZXJsb2FkcyBmb3IgUmV0dXJuTmV3PFQ+KCkuCisvLworLy8gVGhl
IFJldHVybk5ldzxUPihhMSwgYTIsIC4uLiwgYV9rKSBhY3Rpb24gcmV0dXJucyBhIHBvaW50ZXIg
dG8gYSBuZXcKKy8vIGluc3RhbmNlIG9mIHR5cGUgVCwgY29uc3RydWN0ZWQgb24gdGhlIGhlYXAg
d2l0aCBjb25zdHJ1Y3RvciBhcmd1bWVudHMKKy8vIGExLCBhMiwgLi4uLCBhbmQgYV9rLiBUaGUg
Y2FsbGVyIGFzc3VtZXMgb3duZXJzaGlwIG9mIHRoZSByZXR1cm5lZCB2YWx1ZS4KKyRyYW5nZSBp
IDAuLm4KKyRmb3IgaSBbWworJHJhbmdlIGogMC4uaS0xCiskdmFyIHBzID0gW1skZm9yIGosIFtb
cCRqXV1dXQorCitBQ1RJT05fVEVNUExBVEUoUmV0dXJuTmV3LAorICAgICAgICAgICAgICAgIEhB
U18xX1RFTVBMQVRFX1BBUkFNUyh0eXBlbmFtZSwgVCksCisgICAgICAgICAgICAgICAgQU5EXyRp
W1tdXV9WQUxVRV9QQVJBTVMoJHBzKSkgeworICByZXR1cm4gbmV3IFQoJHBzKTsKK30KKworXV0K
KworI2lmZGVmIF9NU0NfVkVSCisjIHByYWdtYSB3YXJuaW5nKHBvcCkKKyNlbmRpZgorCit9ICAv
LyBuYW1lc3BhY2UgdGVzdGluZworCisvLyBJbmNsdWRlIGFueSBjdXN0b20gY2FsbGJhY2sgYWN0
aW9ucyBhZGRlZCBieSB0aGUgbG9jYWwgaW5zdGFsbGF0aW9uLgorLy8gV2UgbXVzdCBpbmNsdWRl
IHRoaXMgaGVhZGVyIGF0IHRoZSBlbmQgdG8gbWFrZSBzdXJlIGl0IGNhbiB1c2UgdGhlCisvLyBk
ZWNsYXJhdGlvbnMgZnJvbSB0aGlzIGZpbGUuCisjaW5jbHVkZSAiZ21vY2svaW50ZXJuYWwvY3Vz
dG9tL2dtb2NrLWdlbmVyYXRlZC1hY3Rpb25zLmgiCisKKyNlbmRpZiAgLy8gR01PQ0tfSU5DTFVE
RV9HTU9DS19HTU9DS19HRU5FUkFURURfQUNUSU9OU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1v
Y2svaW5jbHVkZS9nbW9jay9nbW9jay1nZW5lcmF0ZWQtZnVuY3Rpb24tbW9ja2Vycy5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZW1vY2svaW5jbHVkZS9nbW9jay9nbW9jay1nZW5lcmF0ZWQtZnVuY3Rpb24tbW9ja2Vycy5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRmYTVjYTk0ODQ5ZjMzNzMyY2M5YjMxMGE5YzA3NWU3NmNkOWYxMDYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2dtb2NrLWdlbmVyYXRl
ZC1mdW5jdGlvbi1tb2NrZXJzLmgKQEAgLTAsMCArMSwxMDk1IEBACisvLyBUaGlzIGZpbGUgd2Fz
IEdFTkVSQVRFRCBieSBjb21tYW5kOgorLy8gICAgIHB1bXAucHkgZ21vY2stZ2VuZXJhdGVkLWZ1
bmN0aW9uLW1vY2tlcnMuaC5wdW1wCisvLyBETyBOT1QgRURJVCBCWSBIQU5EISEhCisKKy8vIENv
cHlyaWdodCAyMDA3LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisv
LyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJp
YnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8g
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBBdXRob3I6IHdh
bkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisKKy8vIEdvb2dsZSBNb2NrIC0gYSBmcmFtZXdv
cmsgZm9yIHdyaXRpbmcgQysrIG1vY2sgY2xhc3Nlcy4KKy8vCisvLyBUaGlzIGZpbGUgaW1wbGVt
ZW50cyBmdW5jdGlvbiBtb2NrZXJzIG9mIHZhcmlvdXMgYXJpdGllcy4KKworI2lmbmRlZiBHTU9D
S19JTkNMVURFX0dNT0NLX0dNT0NLX0dFTkVSQVRFRF9GVU5DVElPTl9NT0NLRVJTX0hfCisjZGVm
aW5lIEdNT0NLX0lOQ0xVREVfR01PQ0tfR01PQ0tfR0VORVJBVEVEX0ZVTkNUSU9OX01PQ0tFUlNf
SF8KKworI2luY2x1ZGUgImdtb2NrL2dtb2NrLXNwZWMtYnVpbGRlcnMuaCIKKyNpbmNsdWRlICJn
bW9jay9pbnRlcm5hbC9nbW9jay1pbnRlcm5hbC11dGlscy5oIgorCisjaWYgR1RFU1RfSEFTX1NU
RF9GVU5DVElPTl8KKyMgaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNlbmRpZgorCituYW1lc3BhY2Ug
dGVzdGluZyB7CituYW1lc3BhY2UgaW50ZXJuYWwgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRj4K
K2NsYXNzIEZ1bmN0aW9uTW9ja2VyQmFzZTsKKworLy8gTm90ZTogY2xhc3MgRnVuY3Rpb25Nb2Nr
ZXIgcmVhbGx5IGJlbG9uZ3MgdG8gdGhlIDo6dGVzdGluZworLy8gbmFtZXNwYWNlLiAgSG93ZXZl
ciBpZiB3ZSBkZWZpbmUgaXQgaW4gOjp0ZXN0aW5nLCBNU1ZDIHdpbGwKKy8vIGNvbXBsYWluIHdo
ZW4gY2xhc3NlcyBpbiA6OnRlc3Rpbmc6OmludGVybmFsIGRlY2xhcmUgaXQgYXMgYQorLy8gZnJp
ZW5kIGNsYXNzIHRlbXBsYXRlLiAgVG8gd29ya2Fyb3VuZCB0aGlzIGNvbXBpbGVyIGJ1Zywgd2Ug
ZGVmaW5lCisvLyBGdW5jdGlvbk1vY2tlciBpbiA6OnRlc3Rpbmc6OmludGVybmFsIGFuZCBpbXBv
cnQgaXQgaW50byA6OnRlc3RpbmcuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRj4KK2NsYXNzIEZ1bmN0
aW9uTW9ja2VyOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUj4KK2NsYXNzIEZ1bmN0aW9uTW9ja2Vy
PFIoKT4gOiBwdWJsaWMKKyAgICBpbnRlcm5hbDo6RnVuY3Rpb25Nb2NrZXJCYXNlPFIoKT4gewor
IHB1YmxpYzoKKyAgdHlwZWRlZiBSIEYoKTsKKyAgdHlwZWRlZiB0eXBlbmFtZSBpbnRlcm5hbDo6
RnVuY3Rpb248Rj46OkFyZ3VtZW50VHVwbGUgQXJndW1lbnRUdXBsZTsKKworICBNb2NrU3BlYzxG
PiYgV2l0aCgpIHsKKyAgICByZXR1cm4gdGhpcy0+Y3VycmVudF9zcGVjKCk7CisgIH0KKworICBS
IEludm9rZSgpIHsKKyAgICAvLyBFdmVuIHRob3VnaCBnY2MgYW5kIE1TVkMgZG9uJ3QgZW5mb3Jj
ZSBpdCwgJ3RoaXMtPicgaXMgcmVxdWlyZWQKKyAgICAvLyBieSB0aGUgQysrIHN0YW5kYXJkIFsx
NC42LjRdIGhlcmUsIGFzIHRoZSBiYXNlIGNsYXNzIHR5cGUgaXMKKyAgICAvLyBkZXBlbmRlbnQg
b24gdGhlIHRlbXBsYXRlIGFyZ3VtZW50IChhbmQgdGh1cyBzaG91bGRuJ3QgYmUKKyAgICAvLyBs
b29rZWQgaW50byB3aGVuIHJlc29sdmluZyBJbnZva2VXaXRoKS4KKyAgICByZXR1cm4gdGhpcy0+
SW52b2tlV2l0aChBcmd1bWVudFR1cGxlKCkpOworICB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgUiwgdHlwZW5hbWUgQTE+CitjbGFzcyBGdW5jdGlvbk1vY2tlcjxSKEExKT4gOiBwdWJsaWMK
KyAgICBpbnRlcm5hbDo6RnVuY3Rpb25Nb2NrZXJCYXNlPFIoQTEpPiB7CisgcHVibGljOgorICB0
eXBlZGVmIFIgRihBMSk7CisgIHR5cGVkZWYgdHlwZW5hbWUgaW50ZXJuYWw6OkZ1bmN0aW9uPEY+
OjpBcmd1bWVudFR1cGxlIEFyZ3VtZW50VHVwbGU7CisKKyAgTW9ja1NwZWM8Rj4mIFdpdGgoY29u
c3QgTWF0Y2hlcjxBMT4mIG0xKSB7CisgICAgdGhpcy0+Y3VycmVudF9zcGVjKCkuU2V0TWF0Y2hl
cnMoOjp0ZXN0aW5nOjptYWtlX3R1cGxlKG0xKSk7CisgICAgcmV0dXJuIHRoaXMtPmN1cnJlbnRf
c3BlYygpOworICB9CisKKyAgUiBJbnZva2UoQTEgYTEpIHsKKyAgICAvLyBFdmVuIHRob3VnaCBn
Y2MgYW5kIE1TVkMgZG9uJ3QgZW5mb3JjZSBpdCwgJ3RoaXMtPicgaXMgcmVxdWlyZWQKKyAgICAv
LyBieSB0aGUgQysrIHN0YW5kYXJkIFsxNC42LjRdIGhlcmUsIGFzIHRoZSBiYXNlIGNsYXNzIHR5
cGUgaXMKKyAgICAvLyBkZXBlbmRlbnQgb24gdGhlIHRlbXBsYXRlIGFyZ3VtZW50IChhbmQgdGh1
cyBzaG91bGRuJ3QgYmUKKyAgICAvLyBsb29rZWQgaW50byB3aGVuIHJlc29sdmluZyBJbnZva2VX
aXRoKS4KKyAgICByZXR1cm4gdGhpcy0+SW52b2tlV2l0aChBcmd1bWVudFR1cGxlKGExKSk7Cisg
IH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBSLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTI+
CitjbGFzcyBGdW5jdGlvbk1vY2tlcjxSKEExLCBBMik+IDogcHVibGljCisgICAgaW50ZXJuYWw6
OkZ1bmN0aW9uTW9ja2VyQmFzZTxSKEExLCBBMik+IHsKKyBwdWJsaWM6CisgIHR5cGVkZWYgUiBG
KEExLCBBMik7CisgIHR5cGVkZWYgdHlwZW5hbWUgaW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpBcmd1
bWVudFR1cGxlIEFyZ3VtZW50VHVwbGU7CisKKyAgTW9ja1NwZWM8Rj4mIFdpdGgoY29uc3QgTWF0
Y2hlcjxBMT4mIG0xLCBjb25zdCBNYXRjaGVyPEEyPiYgbTIpIHsKKyAgICB0aGlzLT5jdXJyZW50
X3NwZWMoKS5TZXRNYXRjaGVycyg6OnRlc3Rpbmc6Om1ha2VfdHVwbGUobTEsIG0yKSk7CisgICAg
cmV0dXJuIHRoaXMtPmN1cnJlbnRfc3BlYygpOworICB9CisKKyAgUiBJbnZva2UoQTEgYTEsIEEy
IGEyKSB7CisgICAgLy8gRXZlbiB0aG91Z2ggZ2NjIGFuZCBNU1ZDIGRvbid0IGVuZm9yY2UgaXQs
ICd0aGlzLT4nIGlzIHJlcXVpcmVkCisgICAgLy8gYnkgdGhlIEMrKyBzdGFuZGFyZCBbMTQuNi40
XSBoZXJlLCBhcyB0aGUgYmFzZSBjbGFzcyB0eXBlIGlzCisgICAgLy8gZGVwZW5kZW50IG9uIHRo
ZSB0ZW1wbGF0ZSBhcmd1bWVudCAoYW5kIHRodXMgc2hvdWxkbid0IGJlCisgICAgLy8gbG9va2Vk
IGludG8gd2hlbiByZXNvbHZpbmcgSW52b2tlV2l0aCkuCisgICAgcmV0dXJuIHRoaXMtPkludm9r
ZVdpdGgoQXJndW1lbnRUdXBsZShhMSwgYTIpKTsKKyAgfQorfTsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIFIsIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTM+CitjbGFzcyBGdW5j
dGlvbk1vY2tlcjxSKEExLCBBMiwgQTMpPiA6IHB1YmxpYworICAgIGludGVybmFsOjpGdW5jdGlv
bk1vY2tlckJhc2U8UihBMSwgQTIsIEEzKT4geworIHB1YmxpYzoKKyAgdHlwZWRlZiBSIEYoQTEs
IEEyLCBBMyk7CisgIHR5cGVkZWYgdHlwZW5hbWUgaW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpBcmd1
bWVudFR1cGxlIEFyZ3VtZW50VHVwbGU7CisKKyAgTW9ja1NwZWM8Rj4mIFdpdGgoY29uc3QgTWF0
Y2hlcjxBMT4mIG0xLCBjb25zdCBNYXRjaGVyPEEyPiYgbTIsCisgICAgICBjb25zdCBNYXRjaGVy
PEEzPiYgbTMpIHsKKyAgICB0aGlzLT5jdXJyZW50X3NwZWMoKS5TZXRNYXRjaGVycyg6OnRlc3Rp
bmc6Om1ha2VfdHVwbGUobTEsIG0yLCBtMykpOworICAgIHJldHVybiB0aGlzLT5jdXJyZW50X3Nw
ZWMoKTsKKyAgfQorCisgIFIgSW52b2tlKEExIGExLCBBMiBhMiwgQTMgYTMpIHsKKyAgICAvLyBF
dmVuIHRob3VnaCBnY2MgYW5kIE1TVkMgZG9uJ3QgZW5mb3JjZSBpdCwgJ3RoaXMtPicgaXMgcmVx
dWlyZWQKKyAgICAvLyBieSB0aGUgQysrIHN0YW5kYXJkIFsxNC42LjRdIGhlcmUsIGFzIHRoZSBi
YXNlIGNsYXNzIHR5cGUgaXMKKyAgICAvLyBkZXBlbmRlbnQgb24gdGhlIHRlbXBsYXRlIGFyZ3Vt
ZW50IChhbmQgdGh1cyBzaG91bGRuJ3QgYmUKKyAgICAvLyBsb29rZWQgaW50byB3aGVuIHJlc29s
dmluZyBJbnZva2VXaXRoKS4KKyAgICByZXR1cm4gdGhpcy0+SW52b2tlV2l0aChBcmd1bWVudFR1
cGxlKGExLCBhMiwgYTMpKTsKKyAgfQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVu
YW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0PgorY2xhc3MgRnVu
Y3Rpb25Nb2NrZXI8UihBMSwgQTIsIEEzLCBBNCk+IDogcHVibGljCisgICAgaW50ZXJuYWw6OkZ1
bmN0aW9uTW9ja2VyQmFzZTxSKEExLCBBMiwgQTMsIEE0KT4geworIHB1YmxpYzoKKyAgdHlwZWRl
ZiBSIEYoQTEsIEEyLCBBMywgQTQpOworICB0eXBlZGVmIHR5cGVuYW1lIGludGVybmFsOjpGdW5j
dGlvbjxGPjo6QXJndW1lbnRUdXBsZSBBcmd1bWVudFR1cGxlOworCisgIE1vY2tTcGVjPEY+JiBX
aXRoKGNvbnN0IE1hdGNoZXI8QTE+JiBtMSwgY29uc3QgTWF0Y2hlcjxBMj4mIG0yLAorICAgICAg
Y29uc3QgTWF0Y2hlcjxBMz4mIG0zLCBjb25zdCBNYXRjaGVyPEE0PiYgbTQpIHsKKyAgICB0aGlz
LT5jdXJyZW50X3NwZWMoKS5TZXRNYXRjaGVycyg6OnRlc3Rpbmc6Om1ha2VfdHVwbGUobTEsIG0y
LCBtMywgbTQpKTsKKyAgICByZXR1cm4gdGhpcy0+Y3VycmVudF9zcGVjKCk7CisgIH0KKworICBS
IEludm9rZShBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCkgeworICAgIC8vIEV2ZW4gdGhvdWdo
IGdjYyBhbmQgTVNWQyBkb24ndCBlbmZvcmNlIGl0LCAndGhpcy0+JyBpcyByZXF1aXJlZAorICAg
IC8vIGJ5IHRoZSBDKysgc3RhbmRhcmQgWzE0LjYuNF0gaGVyZSwgYXMgdGhlIGJhc2UgY2xhc3Mg
dHlwZSBpcworICAgIC8vIGRlcGVuZGVudCBvbiB0aGUgdGVtcGxhdGUgYXJndW1lbnQgKGFuZCB0
aHVzIHNob3VsZG4ndCBiZQorICAgIC8vIGxvb2tlZCBpbnRvIHdoZW4gcmVzb2x2aW5nIEludm9r
ZVdpdGgpLgorICAgIHJldHVybiB0aGlzLT5JbnZva2VXaXRoKEFyZ3VtZW50VHVwbGUoYTEsIGEy
LCBhMywgYTQpKTsKKyAgfQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEEx
LCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0LAorICAgIHR5cGVuYW1lIEE1
PgorY2xhc3MgRnVuY3Rpb25Nb2NrZXI8UihBMSwgQTIsIEEzLCBBNCwgQTUpPiA6IHB1YmxpYwor
ICAgIGludGVybmFsOjpGdW5jdGlvbk1vY2tlckJhc2U8UihBMSwgQTIsIEEzLCBBNCwgQTUpPiB7
CisgcHVibGljOgorICB0eXBlZGVmIFIgRihBMSwgQTIsIEEzLCBBNCwgQTUpOworICB0eXBlZGVm
IHR5cGVuYW1lIGludGVybmFsOjpGdW5jdGlvbjxGPjo6QXJndW1lbnRUdXBsZSBBcmd1bWVudFR1
cGxlOworCisgIE1vY2tTcGVjPEY+JiBXaXRoKGNvbnN0IE1hdGNoZXI8QTE+JiBtMSwgY29uc3Qg
TWF0Y2hlcjxBMj4mIG0yLAorICAgICAgY29uc3QgTWF0Y2hlcjxBMz4mIG0zLCBjb25zdCBNYXRj
aGVyPEE0PiYgbTQsIGNvbnN0IE1hdGNoZXI8QTU+JiBtNSkgeworICAgIHRoaXMtPmN1cnJlbnRf
c3BlYygpLlNldE1hdGNoZXJzKDo6dGVzdGluZzo6bWFrZV90dXBsZShtMSwgbTIsIG0zLCBtNCwg
bTUpKTsKKyAgICByZXR1cm4gdGhpcy0+Y3VycmVudF9zcGVjKCk7CisgIH0KKworICBSIEludm9r
ZShBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUpIHsKKyAgICAvLyBFdmVuIHRob3Vn
aCBnY2MgYW5kIE1TVkMgZG9uJ3QgZW5mb3JjZSBpdCwgJ3RoaXMtPicgaXMgcmVxdWlyZWQKKyAg
ICAvLyBieSB0aGUgQysrIHN0YW5kYXJkIFsxNC42LjRdIGhlcmUsIGFzIHRoZSBiYXNlIGNsYXNz
IHR5cGUgaXMKKyAgICAvLyBkZXBlbmRlbnQgb24gdGhlIHRlbXBsYXRlIGFyZ3VtZW50IChhbmQg
dGh1cyBzaG91bGRuJ3QgYmUKKyAgICAvLyBsb29rZWQgaW50byB3aGVuIHJlc29sdmluZyBJbnZv
a2VXaXRoKS4KKyAgICByZXR1cm4gdGhpcy0+SW52b2tlV2l0aChBcmd1bWVudFR1cGxlKGExLCBh
MiwgYTMsIGE0LCBhNSkpOworICB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5h
bWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywgdHlwZW5hbWUgQTQsCisgICAgdHlwZW5h
bWUgQTUsIHR5cGVuYW1lIEE2PgorY2xhc3MgRnVuY3Rpb25Nb2NrZXI8UihBMSwgQTIsIEEzLCBB
NCwgQTUsIEE2KT4gOiBwdWJsaWMKKyAgICBpbnRlcm5hbDo6RnVuY3Rpb25Nb2NrZXJCYXNlPFIo
QTEsIEEyLCBBMywgQTQsIEE1LCBBNik+IHsKKyBwdWJsaWM6CisgIHR5cGVkZWYgUiBGKEExLCBB
MiwgQTMsIEE0LCBBNSwgQTYpOworICB0eXBlZGVmIHR5cGVuYW1lIGludGVybmFsOjpGdW5jdGlv
bjxGPjo6QXJndW1lbnRUdXBsZSBBcmd1bWVudFR1cGxlOworCisgIE1vY2tTcGVjPEY+JiBXaXRo
KGNvbnN0IE1hdGNoZXI8QTE+JiBtMSwgY29uc3QgTWF0Y2hlcjxBMj4mIG0yLAorICAgICAgY29u
c3QgTWF0Y2hlcjxBMz4mIG0zLCBjb25zdCBNYXRjaGVyPEE0PiYgbTQsIGNvbnN0IE1hdGNoZXI8
QTU+JiBtNSwKKyAgICAgIGNvbnN0IE1hdGNoZXI8QTY+JiBtNikgeworICAgIHRoaXMtPmN1cnJl
bnRfc3BlYygpLlNldE1hdGNoZXJzKDo6dGVzdGluZzo6bWFrZV90dXBsZShtMSwgbTIsIG0zLCBt
NCwgbTUsCisgICAgICAgIG02KSk7CisgICAgcmV0dXJuIHRoaXMtPmN1cnJlbnRfc3BlYygpOwor
ICB9CisKKyAgUiBJbnZva2UoQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBh
NikgeworICAgIC8vIEV2ZW4gdGhvdWdoIGdjYyBhbmQgTVNWQyBkb24ndCBlbmZvcmNlIGl0LCAn
dGhpcy0+JyBpcyByZXF1aXJlZAorICAgIC8vIGJ5IHRoZSBDKysgc3RhbmRhcmQgWzE0LjYuNF0g
aGVyZSwgYXMgdGhlIGJhc2UgY2xhc3MgdHlwZSBpcworICAgIC8vIGRlcGVuZGVudCBvbiB0aGUg
dGVtcGxhdGUgYXJndW1lbnQgKGFuZCB0aHVzIHNob3VsZG4ndCBiZQorICAgIC8vIGxvb2tlZCBp
bnRvIHdoZW4gcmVzb2x2aW5nIEludm9rZVdpdGgpLgorICAgIHJldHVybiB0aGlzLT5JbnZva2VX
aXRoKEFyZ3VtZW50VHVwbGUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNikpOworICB9Cit9OworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBB
MywgdHlwZW5hbWUgQTQsCisgICAgdHlwZW5hbWUgQTUsIHR5cGVuYW1lIEE2LCB0eXBlbmFtZSBB
Nz4KK2NsYXNzIEZ1bmN0aW9uTW9ja2VyPFIoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcpPiA6
IHB1YmxpYworICAgIGludGVybmFsOjpGdW5jdGlvbk1vY2tlckJhc2U8UihBMSwgQTIsIEEzLCBB
NCwgQTUsIEE2LCBBNyk+IHsKKyBwdWJsaWM6CisgIHR5cGVkZWYgUiBGKEExLCBBMiwgQTMsIEE0
LCBBNSwgQTYsIEE3KTsKKyAgdHlwZWRlZiB0eXBlbmFtZSBpbnRlcm5hbDo6RnVuY3Rpb248Rj46
OkFyZ3VtZW50VHVwbGUgQXJndW1lbnRUdXBsZTsKKworICBNb2NrU3BlYzxGPiYgV2l0aChjb25z
dCBNYXRjaGVyPEExPiYgbTEsIGNvbnN0IE1hdGNoZXI8QTI+JiBtMiwKKyAgICAgIGNvbnN0IE1h
dGNoZXI8QTM+JiBtMywgY29uc3QgTWF0Y2hlcjxBND4mIG00LCBjb25zdCBNYXRjaGVyPEE1PiYg
bTUsCisgICAgICBjb25zdCBNYXRjaGVyPEE2PiYgbTYsIGNvbnN0IE1hdGNoZXI8QTc+JiBtNykg
eworICAgIHRoaXMtPmN1cnJlbnRfc3BlYygpLlNldE1hdGNoZXJzKDo6dGVzdGluZzo6bWFrZV90
dXBsZShtMSwgbTIsIG0zLCBtNCwgbTUsCisgICAgICAgIG02LCBtNykpOworICAgIHJldHVybiB0
aGlzLT5jdXJyZW50X3NwZWMoKTsKKyAgfQorCisgIFIgSW52b2tlKEExIGExLCBBMiBhMiwgQTMg
YTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3KSB7CisgICAgLy8gRXZlbiB0aG91Z2ggZ2Nj
IGFuZCBNU1ZDIGRvbid0IGVuZm9yY2UgaXQsICd0aGlzLT4nIGlzIHJlcXVpcmVkCisgICAgLy8g
YnkgdGhlIEMrKyBzdGFuZGFyZCBbMTQuNi40XSBoZXJlLCBhcyB0aGUgYmFzZSBjbGFzcyB0eXBl
IGlzCisgICAgLy8gZGVwZW5kZW50IG9uIHRoZSB0ZW1wbGF0ZSBhcmd1bWVudCAoYW5kIHRodXMg
c2hvdWxkbid0IGJlCisgICAgLy8gbG9va2VkIGludG8gd2hlbiByZXNvbHZpbmcgSW52b2tlV2l0
aCkuCisgICAgcmV0dXJuIHRoaXMtPkludm9rZVdpdGgoQXJndW1lbnRUdXBsZShhMSwgYTIsIGEz
LCBhNCwgYTUsIGE2LCBhNykpOworICB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlw
ZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywgdHlwZW5hbWUgQTQsCisgICAgdHlw
ZW5hbWUgQTUsIHR5cGVuYW1lIEE2LCB0eXBlbmFtZSBBNywgdHlwZW5hbWUgQTg+CitjbGFzcyBG
dW5jdGlvbk1vY2tlcjxSKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCk+IDogcHVibGlj
CisgICAgaW50ZXJuYWw6OkZ1bmN0aW9uTW9ja2VyQmFzZTxSKEExLCBBMiwgQTMsIEE0LCBBNSwg
QTYsIEE3LCBBOCk+IHsKKyBwdWJsaWM6CisgIHR5cGVkZWYgUiBGKEExLCBBMiwgQTMsIEE0LCBB
NSwgQTYsIEE3LCBBOCk7CisgIHR5cGVkZWYgdHlwZW5hbWUgaW50ZXJuYWw6OkZ1bmN0aW9uPEY+
OjpBcmd1bWVudFR1cGxlIEFyZ3VtZW50VHVwbGU7CisKKyAgTW9ja1NwZWM8Rj4mIFdpdGgoY29u
c3QgTWF0Y2hlcjxBMT4mIG0xLCBjb25zdCBNYXRjaGVyPEEyPiYgbTIsCisgICAgICBjb25zdCBN
YXRjaGVyPEEzPiYgbTMsIGNvbnN0IE1hdGNoZXI8QTQ+JiBtNCwgY29uc3QgTWF0Y2hlcjxBNT4m
IG01LAorICAgICAgY29uc3QgTWF0Y2hlcjxBNj4mIG02LCBjb25zdCBNYXRjaGVyPEE3PiYgbTcs
IGNvbnN0IE1hdGNoZXI8QTg+JiBtOCkgeworICAgIHRoaXMtPmN1cnJlbnRfc3BlYygpLlNldE1h
dGNoZXJzKDo6dGVzdGluZzo6bWFrZV90dXBsZShtMSwgbTIsIG0zLCBtNCwgbTUsCisgICAgICAg
IG02LCBtNywgbTgpKTsKKyAgICByZXR1cm4gdGhpcy0+Y3VycmVudF9zcGVjKCk7CisgIH0KKwor
ICBSIEludm9rZShBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LCBBNyBh
NywgQTggYTgpIHsKKyAgICAvLyBFdmVuIHRob3VnaCBnY2MgYW5kIE1TVkMgZG9uJ3QgZW5mb3Jj
ZSBpdCwgJ3RoaXMtPicgaXMgcmVxdWlyZWQKKyAgICAvLyBieSB0aGUgQysrIHN0YW5kYXJkIFsx
NC42LjRdIGhlcmUsIGFzIHRoZSBiYXNlIGNsYXNzIHR5cGUgaXMKKyAgICAvLyBkZXBlbmRlbnQg
b24gdGhlIHRlbXBsYXRlIGFyZ3VtZW50IChhbmQgdGh1cyBzaG91bGRuJ3QgYmUKKyAgICAvLyBs
b29rZWQgaW50byB3aGVuIHJlc29sdmluZyBJbnZva2VXaXRoKS4KKyAgICByZXR1cm4gdGhpcy0+
SW52b2tlV2l0aChBcmd1bWVudFR1cGxlKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCkp
OworICB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgQTEsIHR5cGVuYW1l
IEEyLCB0eXBlbmFtZSBBMywgdHlwZW5hbWUgQTQsCisgICAgdHlwZW5hbWUgQTUsIHR5cGVuYW1l
IEE2LCB0eXBlbmFtZSBBNywgdHlwZW5hbWUgQTgsIHR5cGVuYW1lIEE5PgorY2xhc3MgRnVuY3Rp
b25Nb2NrZXI8UihBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsIEE5KT4gOiBwdWJsaWMK
KyAgICBpbnRlcm5hbDo6RnVuY3Rpb25Nb2NrZXJCYXNlPFIoQTEsIEEyLCBBMywgQTQsIEE1LCBB
NiwgQTcsIEE4LCBBOSk+IHsKKyBwdWJsaWM6CisgIHR5cGVkZWYgUiBGKEExLCBBMiwgQTMsIEE0
LCBBNSwgQTYsIEE3LCBBOCwgQTkpOworICB0eXBlZGVmIHR5cGVuYW1lIGludGVybmFsOjpGdW5j
dGlvbjxGPjo6QXJndW1lbnRUdXBsZSBBcmd1bWVudFR1cGxlOworCisgIE1vY2tTcGVjPEY+JiBX
aXRoKGNvbnN0IE1hdGNoZXI8QTE+JiBtMSwgY29uc3QgTWF0Y2hlcjxBMj4mIG0yLAorICAgICAg
Y29uc3QgTWF0Y2hlcjxBMz4mIG0zLCBjb25zdCBNYXRjaGVyPEE0PiYgbTQsIGNvbnN0IE1hdGNo
ZXI8QTU+JiBtNSwKKyAgICAgIGNvbnN0IE1hdGNoZXI8QTY+JiBtNiwgY29uc3QgTWF0Y2hlcjxB
Nz4mIG03LCBjb25zdCBNYXRjaGVyPEE4PiYgbTgsCisgICAgICBjb25zdCBNYXRjaGVyPEE5PiYg
bTkpIHsKKyAgICB0aGlzLT5jdXJyZW50X3NwZWMoKS5TZXRNYXRjaGVycyg6OnRlc3Rpbmc6Om1h
a2VfdHVwbGUobTEsIG0yLCBtMywgbTQsIG01LAorICAgICAgICBtNiwgbTcsIG04LCBtOSkpOwor
ICAgIHJldHVybiB0aGlzLT5jdXJyZW50X3NwZWMoKTsKKyAgfQorCisgIFIgSW52b2tlKEExIGEx
LCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3LCBBOCBhOCwgQTkgYTkp
IHsKKyAgICAvLyBFdmVuIHRob3VnaCBnY2MgYW5kIE1TVkMgZG9uJ3QgZW5mb3JjZSBpdCwgJ3Ro
aXMtPicgaXMgcmVxdWlyZWQKKyAgICAvLyBieSB0aGUgQysrIHN0YW5kYXJkIFsxNC42LjRdIGhl
cmUsIGFzIHRoZSBiYXNlIGNsYXNzIHR5cGUgaXMKKyAgICAvLyBkZXBlbmRlbnQgb24gdGhlIHRl
bXBsYXRlIGFyZ3VtZW50IChhbmQgdGh1cyBzaG91bGRuJ3QgYmUKKyAgICAvLyBsb29rZWQgaW50
byB3aGVuIHJlc29sdmluZyBJbnZva2VXaXRoKS4KKyAgICByZXR1cm4gdGhpcy0+SW52b2tlV2l0
aChBcmd1bWVudFR1cGxlKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkpKTsKKyAg
fQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwg
dHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0LAorICAgIHR5cGVuYW1lIEE1LCB0eXBlbmFtZSBBNiwg
dHlwZW5hbWUgQTcsIHR5cGVuYW1lIEE4LCB0eXBlbmFtZSBBOSwKKyAgICB0eXBlbmFtZSBBMTA+
CitjbGFzcyBGdW5jdGlvbk1vY2tlcjxSKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwg
QTksIEExMCk+IDogcHVibGljCisgICAgaW50ZXJuYWw6OkZ1bmN0aW9uTW9ja2VyQmFzZTxSKEEx
LCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgQTksIEExMCk+IHsKKyBwdWJsaWM6CisgIHR5
cGVkZWYgUiBGKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgQTksIEExMCk7CisgIHR5
cGVkZWYgdHlwZW5hbWUgaW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpBcmd1bWVudFR1cGxlIEFyZ3Vt
ZW50VHVwbGU7CisKKyAgTW9ja1NwZWM8Rj4mIFdpdGgoY29uc3QgTWF0Y2hlcjxBMT4mIG0xLCBj
b25zdCBNYXRjaGVyPEEyPiYgbTIsCisgICAgICBjb25zdCBNYXRjaGVyPEEzPiYgbTMsIGNvbnN0
IE1hdGNoZXI8QTQ+JiBtNCwgY29uc3QgTWF0Y2hlcjxBNT4mIG01LAorICAgICAgY29uc3QgTWF0
Y2hlcjxBNj4mIG02LCBjb25zdCBNYXRjaGVyPEE3PiYgbTcsIGNvbnN0IE1hdGNoZXI8QTg+JiBt
OCwKKyAgICAgIGNvbnN0IE1hdGNoZXI8QTk+JiBtOSwgY29uc3QgTWF0Y2hlcjxBMTA+JiBtMTAp
IHsKKyAgICB0aGlzLT5jdXJyZW50X3NwZWMoKS5TZXRNYXRjaGVycyg6OnRlc3Rpbmc6Om1ha2Vf
dHVwbGUobTEsIG0yLCBtMywgbTQsIG01LAorICAgICAgICBtNiwgbTcsIG04LCBtOSwgbTEwKSk7
CisgICAgcmV0dXJuIHRoaXMtPmN1cnJlbnRfc3BlYygpOworICB9CisKKyAgUiBJbnZva2UoQTEg
YTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcsIEE4IGE4LCBBOSBh
OSwKKyAgICAgIEExMCBhMTApIHsKKyAgICAvLyBFdmVuIHRob3VnaCBnY2MgYW5kIE1TVkMgZG9u
J3QgZW5mb3JjZSBpdCwgJ3RoaXMtPicgaXMgcmVxdWlyZWQKKyAgICAvLyBieSB0aGUgQysrIHN0
YW5kYXJkIFsxNC42LjRdIGhlcmUsIGFzIHRoZSBiYXNlIGNsYXNzIHR5cGUgaXMKKyAgICAvLyBk
ZXBlbmRlbnQgb24gdGhlIHRlbXBsYXRlIGFyZ3VtZW50IChhbmQgdGh1cyBzaG91bGRuJ3QgYmUK
KyAgICAvLyBsb29rZWQgaW50byB3aGVuIHJlc29sdmluZyBJbnZva2VXaXRoKS4KKyAgICByZXR1
cm4gdGhpcy0+SW52b2tlV2l0aChBcmd1bWVudFR1cGxlKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYs
IGE3LCBhOCwgYTksCisgICAgICAgIGExMCkpOworICB9Cit9OworCit9ICAvLyBuYW1lc3BhY2Ug
aW50ZXJuYWwKKworLy8gVGhlIHN0eWxlIGd1aWRlIHByb2hpYml0cyAidXNpbmciIHN0YXRlbWVu
dHMgaW4gYSBuYW1lc3BhY2Ugc2NvcGUKKy8vIGluc2lkZSBhIGhlYWRlciBmaWxlLiAgSG93ZXZl
ciwgdGhlIEZ1bmN0aW9uTW9ja2VyIGNsYXNzIHRlbXBsYXRlCisvLyBpcyBtZWFudCB0byBiZSBk
ZWZpbmVkIGluIHRoZSA6OnRlc3RpbmcgbmFtZXNwYWNlLiAgVGhlIGZvbGxvd2luZworLy8gbGlu
ZSBpcyBqdXN0IGEgdHJpY2sgZm9yIHdvcmtpbmcgYXJvdW5kIGEgYnVnIGluIE1TVkMgOC4wLCB3
aGljaAorLy8gY2Fubm90IGhhbmRsZSBpdCBpZiB3ZSBkZWZpbmUgRnVuY3Rpb25Nb2NrZXIgaW4g
Ojp0ZXN0aW5nLgordXNpbmcgaW50ZXJuYWw6OkZ1bmN0aW9uTW9ja2VyOworCisvLyBHTU9DS19S
RVNVTFRfKHRuLCBGKSBleHBhbmRzIHRvIHRoZSByZXN1bHQgdHlwZSBvZiBmdW5jdGlvbiB0eXBl
IEYuCisvLyBXZSBkZWZpbmUgdGhpcyBhcyBhIHZhcmlhZGljIG1hY3JvIGluIGNhc2UgRiBjb250
YWlucyB1bnByb3RlY3RlZAorLy8gY29tbWFzICh0aGUgc2FtZSByZWFzb24gdGhhdCB3ZSB1c2Ug
dmFyaWFkaWMgbWFjcm9zIGluIG90aGVyIHBsYWNlcworLy8gaW4gdGhpcyBmaWxlKS4KKy8vIElO
VEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE9OJ1QgVVNFIElOIFVTRVIgQ09ERSEhIQorI2RlZmlu
ZSBHTU9DS19SRVNVTFRfKHRuLCAuLi4pIFwKKyAgICB0biA6OnRlc3Rpbmc6OmludGVybmFsOjpG
dW5jdGlvbjxfX1ZBX0FSR1NfXz46OlJlc3VsdAorCisvLyBUaGUgdHlwZSBvZiBhcmd1bWVudCBO
IG9mIHRoZSBnaXZlbiBmdW5jdGlvbiB0eXBlLgorLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04g
LSBET04nVCBVU0UgSU4gVVNFUiBDT0RFISEhCisjZGVmaW5lIEdNT0NLX0FSR18odG4sIE4sIC4u
LikgXAorICAgIHRuIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPF9fVkFfQVJHU19fPjo6
QXJndW1lbnQjI04KKworLy8gVGhlIG1hdGNoZXIgdHlwZSBmb3IgYXJndW1lbnQgTiBvZiB0aGUg
Z2l2ZW4gZnVuY3Rpb24gdHlwZS4KKy8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE9OJ1Qg
VVNFIElOIFVTRVIgQ09ERSEhIQorI2RlZmluZSBHTU9DS19NQVRDSEVSXyh0biwgTiwgLi4uKSBc
CisgICAgY29uc3QgOjp0ZXN0aW5nOjpNYXRjaGVyPEdNT0NLX0FSR18odG4sIE4sIF9fVkFfQVJH
U19fKT4mCisKKy8vIFRoZSB2YXJpYWJsZSBmb3IgbW9ja2luZyB0aGUgZ2l2ZW4gbWV0aG9kLgor
Ly8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBET04nVCBVU0UgSU4gVVNFUiBDT0RFISEhCisj
ZGVmaW5lIEdNT0NLX01PQ0tFUl8oYXJpdHksIGNvbnN0bmVzcywgTWV0aG9kKSBcCisgICAgR1RF
U1RfQ09OQ0FUX1RPS0VOXyhnbW9jayMjY29uc3RuZXNzIyNhcml0eSMjXyMjTWV0aG9kIyNfLCBf
X0xJTkVfXykKKworLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBET04nVCBVU0UgSU4gVVNF
UiBDT0RFISEhCisjZGVmaW5lIEdNT0NLX01FVEhPRDBfKHRuLCBjb25zdG5lc3MsIGN0LCBNZXRo
b2QsIC4uLikgXAorICBHTU9DS19SRVNVTFRfKHRuLCBfX1ZBX0FSR1NfXykgY3QgTWV0aG9kKCBc
CisgICAgICApIGNvbnN0bmVzcyB7IFwKKyAgICBHVEVTVF9DT01QSUxFX0FTU0VSVF8oKDo6dGVz
dGluZzo6dHVwbGVfc2l6ZTwgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdG4g
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6RnVuY3Rpb248X19WQV9BUkdTX18+OjpBcmd1bWVudFR1cGxl
Pjo6dmFsdWUgXAorICAgICAgICAgICAgPT0gMCksIFwKKyAgICAgICAgdGhpc19tZXRob2RfZG9l
c19ub3RfdGFrZV8wX2FyZ3VtZW50cyk7IFwKKyAgICBHTU9DS19NT0NLRVJfKDAsIGNvbnN0bmVz
cywgTWV0aG9kKS5TZXRPd25lckFuZE5hbWUodGhpcywgI01ldGhvZCk7IFwKKyAgICByZXR1cm4g
R01PQ0tfTU9DS0VSXygwLCBjb25zdG5lc3MsIE1ldGhvZCkuSW52b2tlKCk7IFwKKyAgfSBcCisg
IDo6dGVzdGluZzo6TW9ja1NwZWM8X19WQV9BUkdTX18+JiBcCisgICAgICBnbW9ja18jI01ldGhv
ZCgpIGNvbnN0bmVzcyB7IFwKKyAgICBHTU9DS19NT0NLRVJfKDAsIGNvbnN0bmVzcywgTWV0aG9k
KS5SZWdpc3Rlck93bmVyKHRoaXMpOyBcCisgICAgcmV0dXJuIEdNT0NLX01PQ0tFUl8oMCwgY29u
c3RuZXNzLCBNZXRob2QpLldpdGgoKTsgXAorICB9IFwKKyAgbXV0YWJsZSA6OnRlc3Rpbmc6OkZ1
bmN0aW9uTW9ja2VyPF9fVkFfQVJHU19fPiBHTU9DS19NT0NLRVJfKDAsIGNvbnN0bmVzcywgXAor
ICAgICAgTWV0aG9kKQorCisvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPTidUIFVTRSBJ
TiBVU0VSIENPREUhISEKKyNkZWZpbmUgR01PQ0tfTUVUSE9EMV8odG4sIGNvbnN0bmVzcywgY3Qs
IE1ldGhvZCwgLi4uKSBcCisgIEdNT0NLX1JFU1VMVF8odG4sIF9fVkFfQVJHU19fKSBjdCBNZXRo
b2QoIFwKKyAgICAgIEdNT0NLX0FSR18odG4sIDEsIF9fVkFfQVJHU19fKSBnbW9ja19hMSkgY29u
c3RuZXNzIHsgXAorICAgIEdURVNUX0NPTVBJTEVfQVNTRVJUXygoOjp0ZXN0aW5nOjp0dXBsZV9z
aXplPCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB0biA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpGdW5jdGlvbjxfX1ZBX0FSR1NfXz46OkFyZ3VtZW50VHVwbGU+Ojp2YWx1ZSBcCisg
ICAgICAgICAgICA9PSAxKSwgXAorICAgICAgICB0aGlzX21ldGhvZF9kb2VzX25vdF90YWtlXzFf
YXJndW1lbnQpOyBcCisgICAgR01PQ0tfTU9DS0VSXygxLCBjb25zdG5lc3MsIE1ldGhvZCkuU2V0
T3duZXJBbmROYW1lKHRoaXMsICNNZXRob2QpOyBcCisgICAgcmV0dXJuIEdNT0NLX01PQ0tFUl8o
MSwgY29uc3RuZXNzLCBNZXRob2QpLkludm9rZShnbW9ja19hMSk7IFwKKyAgfSBcCisgIDo6dGVz
dGluZzo6TW9ja1NwZWM8X19WQV9BUkdTX18+JiBcCisgICAgICBnbW9ja18jI01ldGhvZChHTU9D
S19NQVRDSEVSXyh0biwgMSwgX19WQV9BUkdTX18pIGdtb2NrX2ExKSBjb25zdG5lc3MgeyBcCisg
ICAgR01PQ0tfTU9DS0VSXygxLCBjb25zdG5lc3MsIE1ldGhvZCkuUmVnaXN0ZXJPd25lcih0aGlz
KTsgXAorICAgIHJldHVybiBHTU9DS19NT0NLRVJfKDEsIGNvbnN0bmVzcywgTWV0aG9kKS5XaXRo
KGdtb2NrX2ExKTsgXAorICB9IFwKKyAgbXV0YWJsZSA6OnRlc3Rpbmc6OkZ1bmN0aW9uTW9ja2Vy
PF9fVkFfQVJHU19fPiBHTU9DS19NT0NLRVJfKDEsIGNvbnN0bmVzcywgXAorICAgICAgTWV0aG9k
KQorCisvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPTidUIFVTRSBJTiBVU0VSIENPREUh
ISEKKyNkZWZpbmUgR01PQ0tfTUVUSE9EMl8odG4sIGNvbnN0bmVzcywgY3QsIE1ldGhvZCwgLi4u
KSBcCisgIEdNT0NLX1JFU1VMVF8odG4sIF9fVkFfQVJHU19fKSBjdCBNZXRob2QoIFwKKyAgICAg
IEdNT0NLX0FSR18odG4sIDEsIF9fVkFfQVJHU19fKSBnbW9ja19hMSwgXAorICAgICAgR01PQ0tf
QVJHXyh0biwgMiwgX19WQV9BUkdTX18pIGdtb2NrX2EyKSBjb25zdG5lc3MgeyBcCisgICAgR1RF
U1RfQ09NUElMRV9BU1NFUlRfKCg6OnRlc3Rpbmc6OnR1cGxlX3NpemU8ICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIHRuIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPF9f
VkFfQVJHU19fPjo6QXJndW1lbnRUdXBsZT46OnZhbHVlIFwKKyAgICAgICAgICAgID09IDIpLCBc
CisgICAgICAgIHRoaXNfbWV0aG9kX2RvZXNfbm90X3Rha2VfMl9hcmd1bWVudHMpOyBcCisgICAg
R01PQ0tfTU9DS0VSXygyLCBjb25zdG5lc3MsIE1ldGhvZCkuU2V0T3duZXJBbmROYW1lKHRoaXMs
ICNNZXRob2QpOyBcCisgICAgcmV0dXJuIEdNT0NLX01PQ0tFUl8oMiwgY29uc3RuZXNzLCBNZXRo
b2QpLkludm9rZShnbW9ja19hMSwgZ21vY2tfYTIpOyBcCisgIH0gXAorICA6OnRlc3Rpbmc6Ok1v
Y2tTcGVjPF9fVkFfQVJHU19fPiYgXAorICAgICAgZ21vY2tfIyNNZXRob2QoR01PQ0tfTUFUQ0hF
Ul8odG4sIDEsIF9fVkFfQVJHU19fKSBnbW9ja19hMSwgXAorICAgICAgICAgICAgICAgICAgICAg
R01PQ0tfTUFUQ0hFUl8odG4sIDIsIF9fVkFfQVJHU19fKSBnbW9ja19hMikgY29uc3RuZXNzIHsg
XAorICAgIEdNT0NLX01PQ0tFUl8oMiwgY29uc3RuZXNzLCBNZXRob2QpLlJlZ2lzdGVyT3duZXIo
dGhpcyk7IFwKKyAgICByZXR1cm4gR01PQ0tfTU9DS0VSXygyLCBjb25zdG5lc3MsIE1ldGhvZCku
V2l0aChnbW9ja19hMSwgZ21vY2tfYTIpOyBcCisgIH0gXAorICBtdXRhYmxlIDo6dGVzdGluZzo6
RnVuY3Rpb25Nb2NrZXI8X19WQV9BUkdTX18+IEdNT0NLX01PQ0tFUl8oMiwgY29uc3RuZXNzLCBc
CisgICAgICBNZXRob2QpCisKKy8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE9OJ1QgVVNF
IElOIFVTRVIgQ09ERSEhIQorI2RlZmluZSBHTU9DS19NRVRIT0QzXyh0biwgY29uc3RuZXNzLCBj
dCwgTWV0aG9kLCAuLi4pIFwKKyAgR01PQ0tfUkVTVUxUXyh0biwgX19WQV9BUkdTX18pIGN0IE1l
dGhvZCggXAorICAgICAgR01PQ0tfQVJHXyh0biwgMSwgX19WQV9BUkdTX18pIGdtb2NrX2ExLCBc
CisgICAgICBHTU9DS19BUkdfKHRuLCAyLCBfX1ZBX0FSR1NfXykgZ21vY2tfYTIsIFwKKyAgICAg
IEdNT0NLX0FSR18odG4sIDMsIF9fVkFfQVJHU19fKSBnbW9ja19hMykgY29uc3RuZXNzIHsgXAor
ICAgIEdURVNUX0NPTVBJTEVfQVNTRVJUXygoOjp0ZXN0aW5nOjp0dXBsZV9zaXplPCAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICB0biA6OnRlc3Rpbmc6OmludGVybmFsOjpGdW5j
dGlvbjxfX1ZBX0FSR1NfXz46OkFyZ3VtZW50VHVwbGU+Ojp2YWx1ZSBcCisgICAgICAgICAgICA9
PSAzKSwgXAorICAgICAgICB0aGlzX21ldGhvZF9kb2VzX25vdF90YWtlXzNfYXJndW1lbnRzKTsg
XAorICAgIEdNT0NLX01PQ0tFUl8oMywgY29uc3RuZXNzLCBNZXRob2QpLlNldE93bmVyQW5kTmFt
ZSh0aGlzLCAjTWV0aG9kKTsgXAorICAgIHJldHVybiBHTU9DS19NT0NLRVJfKDMsIGNvbnN0bmVz
cywgTWV0aG9kKS5JbnZva2UoZ21vY2tfYTEsIGdtb2NrX2EyLCBcCisgICAgICAgIGdtb2NrX2Ez
KTsgXAorICB9IFwKKyAgOjp0ZXN0aW5nOjpNb2NrU3BlYzxfX1ZBX0FSR1NfXz4mIFwKKyAgICAg
IGdtb2NrXyMjTWV0aG9kKEdNT0NLX01BVENIRVJfKHRuLCAxLCBfX1ZBX0FSR1NfXykgZ21vY2tf
YTEsIFwKKyAgICAgICAgICAgICAgICAgICAgIEdNT0NLX01BVENIRVJfKHRuLCAyLCBfX1ZBX0FS
R1NfXykgZ21vY2tfYTIsIFwKKyAgICAgICAgICAgICAgICAgICAgIEdNT0NLX01BVENIRVJfKHRu
LCAzLCBfX1ZBX0FSR1NfXykgZ21vY2tfYTMpIGNvbnN0bmVzcyB7IFwKKyAgICBHTU9DS19NT0NL
RVJfKDMsIGNvbnN0bmVzcywgTWV0aG9kKS5SZWdpc3Rlck93bmVyKHRoaXMpOyBcCisgICAgcmV0
dXJuIEdNT0NLX01PQ0tFUl8oMywgY29uc3RuZXNzLCBNZXRob2QpLldpdGgoZ21vY2tfYTEsIGdt
b2NrX2EyLCBcCisgICAgICAgIGdtb2NrX2EzKTsgXAorICB9IFwKKyAgbXV0YWJsZSA6OnRlc3Rp
bmc6OkZ1bmN0aW9uTW9ja2VyPF9fVkFfQVJHU19fPiBHTU9DS19NT0NLRVJfKDMsIGNvbnN0bmVz
cywgXAorICAgICAgTWV0aG9kKQorCisvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPTidU
IFVTRSBJTiBVU0VSIENPREUhISEKKyNkZWZpbmUgR01PQ0tfTUVUSE9ENF8odG4sIGNvbnN0bmVz
cywgY3QsIE1ldGhvZCwgLi4uKSBcCisgIEdNT0NLX1JFU1VMVF8odG4sIF9fVkFfQVJHU19fKSBj
dCBNZXRob2QoIFwKKyAgICAgIEdNT0NLX0FSR18odG4sIDEsIF9fVkFfQVJHU19fKSBnbW9ja19h
MSwgXAorICAgICAgR01PQ0tfQVJHXyh0biwgMiwgX19WQV9BUkdTX18pIGdtb2NrX2EyLCBcCisg
ICAgICBHTU9DS19BUkdfKHRuLCAzLCBfX1ZBX0FSR1NfXykgZ21vY2tfYTMsIFwKKyAgICAgIEdN
T0NLX0FSR18odG4sIDQsIF9fVkFfQVJHU19fKSBnbW9ja19hNCkgY29uc3RuZXNzIHsgXAorICAg
IEdURVNUX0NPTVBJTEVfQVNTRVJUXygoOjp0ZXN0aW5nOjp0dXBsZV9zaXplPCAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICB0biA6OnRlc3Rpbmc6OmludGVybmFsOjpGdW5jdGlv
bjxfX1ZBX0FSR1NfXz46OkFyZ3VtZW50VHVwbGU+Ojp2YWx1ZSBcCisgICAgICAgICAgICA9PSA0
KSwgXAorICAgICAgICB0aGlzX21ldGhvZF9kb2VzX25vdF90YWtlXzRfYXJndW1lbnRzKTsgXAor
ICAgIEdNT0NLX01PQ0tFUl8oNCwgY29uc3RuZXNzLCBNZXRob2QpLlNldE93bmVyQW5kTmFtZSh0
aGlzLCAjTWV0aG9kKTsgXAorICAgIHJldHVybiBHTU9DS19NT0NLRVJfKDQsIGNvbnN0bmVzcywg
TWV0aG9kKS5JbnZva2UoZ21vY2tfYTEsIGdtb2NrX2EyLCBcCisgICAgICAgIGdtb2NrX2EzLCBn
bW9ja19hNCk7IFwKKyAgfSBcCisgIDo6dGVzdGluZzo6TW9ja1NwZWM8X19WQV9BUkdTX18+JiBc
CisgICAgICBnbW9ja18jI01ldGhvZChHTU9DS19NQVRDSEVSXyh0biwgMSwgX19WQV9BUkdTX18p
IGdtb2NrX2ExLCBcCisgICAgICAgICAgICAgICAgICAgICBHTU9DS19NQVRDSEVSXyh0biwgMiwg
X19WQV9BUkdTX18pIGdtb2NrX2EyLCBcCisgICAgICAgICAgICAgICAgICAgICBHTU9DS19NQVRD
SEVSXyh0biwgMywgX19WQV9BUkdTX18pIGdtb2NrX2EzLCBcCisgICAgICAgICAgICAgICAgICAg
ICBHTU9DS19NQVRDSEVSXyh0biwgNCwgX19WQV9BUkdTX18pIGdtb2NrX2E0KSBjb25zdG5lc3Mg
eyBcCisgICAgR01PQ0tfTU9DS0VSXyg0LCBjb25zdG5lc3MsIE1ldGhvZCkuUmVnaXN0ZXJPd25l
cih0aGlzKTsgXAorICAgIHJldHVybiBHTU9DS19NT0NLRVJfKDQsIGNvbnN0bmVzcywgTWV0aG9k
KS5XaXRoKGdtb2NrX2ExLCBnbW9ja19hMiwgXAorICAgICAgICBnbW9ja19hMywgZ21vY2tfYTQp
OyBcCisgIH0gXAorICBtdXRhYmxlIDo6dGVzdGluZzo6RnVuY3Rpb25Nb2NrZXI8X19WQV9BUkdT
X18+IEdNT0NLX01PQ0tFUl8oNCwgY29uc3RuZXNzLCBcCisgICAgICBNZXRob2QpCisKKy8vIElO
VEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE9OJ1QgVVNFIElOIFVTRVIgQ09ERSEhIQorI2RlZmlu
ZSBHTU9DS19NRVRIT0Q1Xyh0biwgY29uc3RuZXNzLCBjdCwgTWV0aG9kLCAuLi4pIFwKKyAgR01P
Q0tfUkVTVUxUXyh0biwgX19WQV9BUkdTX18pIGN0IE1ldGhvZCggXAorICAgICAgR01PQ0tfQVJH
Xyh0biwgMSwgX19WQV9BUkdTX18pIGdtb2NrX2ExLCBcCisgICAgICBHTU9DS19BUkdfKHRuLCAy
LCBfX1ZBX0FSR1NfXykgZ21vY2tfYTIsIFwKKyAgICAgIEdNT0NLX0FSR18odG4sIDMsIF9fVkFf
QVJHU19fKSBnbW9ja19hMywgXAorICAgICAgR01PQ0tfQVJHXyh0biwgNCwgX19WQV9BUkdTX18p
IGdtb2NrX2E0LCBcCisgICAgICBHTU9DS19BUkdfKHRuLCA1LCBfX1ZBX0FSR1NfXykgZ21vY2tf
YTUpIGNvbnN0bmVzcyB7IFwKKyAgICBHVEVTVF9DT01QSUxFX0FTU0VSVF8oKDo6dGVzdGluZzo6
dHVwbGVfc2l6ZTwgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdG4gOjp0ZXN0
aW5nOjppbnRlcm5hbDo6RnVuY3Rpb248X19WQV9BUkdTX18+OjpBcmd1bWVudFR1cGxlPjo6dmFs
dWUgXAorICAgICAgICAgICAgPT0gNSksIFwKKyAgICAgICAgdGhpc19tZXRob2RfZG9lc19ub3Rf
dGFrZV81X2FyZ3VtZW50cyk7IFwKKyAgICBHTU9DS19NT0NLRVJfKDUsIGNvbnN0bmVzcywgTWV0
aG9kKS5TZXRPd25lckFuZE5hbWUodGhpcywgI01ldGhvZCk7IFwKKyAgICByZXR1cm4gR01PQ0tf
TU9DS0VSXyg1LCBjb25zdG5lc3MsIE1ldGhvZCkuSW52b2tlKGdtb2NrX2ExLCBnbW9ja19hMiwg
XAorICAgICAgICBnbW9ja19hMywgZ21vY2tfYTQsIGdtb2NrX2E1KTsgXAorICB9IFwKKyAgOjp0
ZXN0aW5nOjpNb2NrU3BlYzxfX1ZBX0FSR1NfXz4mIFwKKyAgICAgIGdtb2NrXyMjTWV0aG9kKEdN
T0NLX01BVENIRVJfKHRuLCAxLCBfX1ZBX0FSR1NfXykgZ21vY2tfYTEsIFwKKyAgICAgICAgICAg
ICAgICAgICAgIEdNT0NLX01BVENIRVJfKHRuLCAyLCBfX1ZBX0FSR1NfXykgZ21vY2tfYTIsIFwK
KyAgICAgICAgICAgICAgICAgICAgIEdNT0NLX01BVENIRVJfKHRuLCAzLCBfX1ZBX0FSR1NfXykg
Z21vY2tfYTMsIFwKKyAgICAgICAgICAgICAgICAgICAgIEdNT0NLX01BVENIRVJfKHRuLCA0LCBf
X1ZBX0FSR1NfXykgZ21vY2tfYTQsIFwKKyAgICAgICAgICAgICAgICAgICAgIEdNT0NLX01BVENI
RVJfKHRuLCA1LCBfX1ZBX0FSR1NfXykgZ21vY2tfYTUpIGNvbnN0bmVzcyB7IFwKKyAgICBHTU9D
S19NT0NLRVJfKDUsIGNvbnN0bmVzcywgTWV0aG9kKS5SZWdpc3Rlck93bmVyKHRoaXMpOyBcCisg
ICAgcmV0dXJuIEdNT0NLX01PQ0tFUl8oNSwgY29uc3RuZXNzLCBNZXRob2QpLldpdGgoZ21vY2tf
YTEsIGdtb2NrX2EyLCBcCisgICAgICAgIGdtb2NrX2EzLCBnbW9ja19hNCwgZ21vY2tfYTUpOyBc
CisgIH0gXAorICBtdXRhYmxlIDo6dGVzdGluZzo6RnVuY3Rpb25Nb2NrZXI8X19WQV9BUkdTX18+
IEdNT0NLX01PQ0tFUl8oNSwgY29uc3RuZXNzLCBcCisgICAgICBNZXRob2QpCisKKy8vIElOVEVS
TkFMIElNUExFTUVOVEFUSU9OIC0gRE9OJ1QgVVNFIElOIFVTRVIgQ09ERSEhIQorI2RlZmluZSBH
TU9DS19NRVRIT0Q2Xyh0biwgY29uc3RuZXNzLCBjdCwgTWV0aG9kLCAuLi4pIFwKKyAgR01PQ0tf
UkVTVUxUXyh0biwgX19WQV9BUkdTX18pIGN0IE1ldGhvZCggXAorICAgICAgR01PQ0tfQVJHXyh0
biwgMSwgX19WQV9BUkdTX18pIGdtb2NrX2ExLCBcCisgICAgICBHTU9DS19BUkdfKHRuLCAyLCBf
X1ZBX0FSR1NfXykgZ21vY2tfYTIsIFwKKyAgICAgIEdNT0NLX0FSR18odG4sIDMsIF9fVkFfQVJH
U19fKSBnbW9ja19hMywgXAorICAgICAgR01PQ0tfQVJHXyh0biwgNCwgX19WQV9BUkdTX18pIGdt
b2NrX2E0LCBcCisgICAgICBHTU9DS19BUkdfKHRuLCA1LCBfX1ZBX0FSR1NfXykgZ21vY2tfYTUs
IFwKKyAgICAgIEdNT0NLX0FSR18odG4sIDYsIF9fVkFfQVJHU19fKSBnbW9ja19hNikgY29uc3Ru
ZXNzIHsgXAorICAgIEdURVNUX0NPTVBJTEVfQVNTRVJUXygoOjp0ZXN0aW5nOjp0dXBsZV9zaXpl
PCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB0biA6OnRlc3Rpbmc6OmludGVy
bmFsOjpGdW5jdGlvbjxfX1ZBX0FSR1NfXz46OkFyZ3VtZW50VHVwbGU+Ojp2YWx1ZSBcCisgICAg
ICAgICAgICA9PSA2KSwgXAorICAgICAgICB0aGlzX21ldGhvZF9kb2VzX25vdF90YWtlXzZfYXJn
dW1lbnRzKTsgXAorICAgIEdNT0NLX01PQ0tFUl8oNiwgY29uc3RuZXNzLCBNZXRob2QpLlNldE93
bmVyQW5kTmFtZSh0aGlzLCAjTWV0aG9kKTsgXAorICAgIHJldHVybiBHTU9DS19NT0NLRVJfKDYs
IGNvbnN0bmVzcywgTWV0aG9kKS5JbnZva2UoZ21vY2tfYTEsIGdtb2NrX2EyLCBcCisgICAgICAg
IGdtb2NrX2EzLCBnbW9ja19hNCwgZ21vY2tfYTUsIGdtb2NrX2E2KTsgXAorICB9IFwKKyAgOjp0
ZXN0aW5nOjpNb2NrU3BlYzxfX1ZBX0FSR1NfXz4mIFwKKyAgICAgIGdtb2NrXyMjTWV0aG9kKEdN
T0NLX01BVENIRVJfKHRuLCAxLCBfX1ZBX0FSR1NfXykgZ21vY2tfYTEsIFwKKyAgICAgICAgICAg
ICAgICAgICAgIEdNT0NLX01BVENIRVJfKHRuLCAyLCBfX1ZBX0FSR1NfXykgZ21vY2tfYTIsIFwK
KyAgICAgICAgICAgICAgICAgICAgIEdNT0NLX01BVENIRVJfKHRuLCAzLCBfX1ZBX0FSR1NfXykg
Z21vY2tfYTMsIFwKKyAgICAgICAgICAgICAgICAgICAgIEdNT0NLX01BVENIRVJfKHRuLCA0LCBf
X1ZBX0FSR1NfXykgZ21vY2tfYTQsIFwKKyAgICAgICAgICAgICAgICAgICAgIEdNT0NLX01BVENI
RVJfKHRuLCA1LCBfX1ZBX0FSR1NfXykgZ21vY2tfYTUsIFwKKyAgICAgICAgICAgICAgICAgICAg
IEdNT0NLX01BVENIRVJfKHRuLCA2LCBfX1ZBX0FSR1NfXykgZ21vY2tfYTYpIGNvbnN0bmVzcyB7
IFwKKyAgICBHTU9DS19NT0NLRVJfKDYsIGNvbnN0bmVzcywgTWV0aG9kKS5SZWdpc3Rlck93bmVy
KHRoaXMpOyBcCisgICAgcmV0dXJuIEdNT0NLX01PQ0tFUl8oNiwgY29uc3RuZXNzLCBNZXRob2Qp
LldpdGgoZ21vY2tfYTEsIGdtb2NrX2EyLCBcCisgICAgICAgIGdtb2NrX2EzLCBnbW9ja19hNCwg
Z21vY2tfYTUsIGdtb2NrX2E2KTsgXAorICB9IFwKKyAgbXV0YWJsZSA6OnRlc3Rpbmc6OkZ1bmN0
aW9uTW9ja2VyPF9fVkFfQVJHU19fPiBHTU9DS19NT0NLRVJfKDYsIGNvbnN0bmVzcywgXAorICAg
ICAgTWV0aG9kKQorCisvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPTidUIFVTRSBJTiBV
U0VSIENPREUhISEKKyNkZWZpbmUgR01PQ0tfTUVUSE9EN18odG4sIGNvbnN0bmVzcywgY3QsIE1l
dGhvZCwgLi4uKSBcCisgIEdNT0NLX1JFU1VMVF8odG4sIF9fVkFfQVJHU19fKSBjdCBNZXRob2Qo
IFwKKyAgICAgIEdNT0NLX0FSR18odG4sIDEsIF9fVkFfQVJHU19fKSBnbW9ja19hMSwgXAorICAg
ICAgR01PQ0tfQVJHXyh0biwgMiwgX19WQV9BUkdTX18pIGdtb2NrX2EyLCBcCisgICAgICBHTU9D
S19BUkdfKHRuLCAzLCBfX1ZBX0FSR1NfXykgZ21vY2tfYTMsIFwKKyAgICAgIEdNT0NLX0FSR18o
dG4sIDQsIF9fVkFfQVJHU19fKSBnbW9ja19hNCwgXAorICAgICAgR01PQ0tfQVJHXyh0biwgNSwg
X19WQV9BUkdTX18pIGdtb2NrX2E1LCBcCisgICAgICBHTU9DS19BUkdfKHRuLCA2LCBfX1ZBX0FS
R1NfXykgZ21vY2tfYTYsIFwKKyAgICAgIEdNT0NLX0FSR18odG4sIDcsIF9fVkFfQVJHU19fKSBn
bW9ja19hNykgY29uc3RuZXNzIHsgXAorICAgIEdURVNUX0NPTVBJTEVfQVNTRVJUXygoOjp0ZXN0
aW5nOjp0dXBsZV9zaXplPCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB0biA6
OnRlc3Rpbmc6OmludGVybmFsOjpGdW5jdGlvbjxfX1ZBX0FSR1NfXz46OkFyZ3VtZW50VHVwbGU+
Ojp2YWx1ZSBcCisgICAgICAgICAgICA9PSA3KSwgXAorICAgICAgICB0aGlzX21ldGhvZF9kb2Vz
X25vdF90YWtlXzdfYXJndW1lbnRzKTsgXAorICAgIEdNT0NLX01PQ0tFUl8oNywgY29uc3RuZXNz
LCBNZXRob2QpLlNldE93bmVyQW5kTmFtZSh0aGlzLCAjTWV0aG9kKTsgXAorICAgIHJldHVybiBH
TU9DS19NT0NLRVJfKDcsIGNvbnN0bmVzcywgTWV0aG9kKS5JbnZva2UoZ21vY2tfYTEsIGdtb2Nr
X2EyLCBcCisgICAgICAgIGdtb2NrX2EzLCBnbW9ja19hNCwgZ21vY2tfYTUsIGdtb2NrX2E2LCBn
bW9ja19hNyk7IFwKKyAgfSBcCisgIDo6dGVzdGluZzo6TW9ja1NwZWM8X19WQV9BUkdTX18+JiBc
CisgICAgICBnbW9ja18jI01ldGhvZChHTU9DS19NQVRDSEVSXyh0biwgMSwgX19WQV9BUkdTX18p
IGdtb2NrX2ExLCBcCisgICAgICAgICAgICAgICAgICAgICBHTU9DS19NQVRDSEVSXyh0biwgMiwg
X19WQV9BUkdTX18pIGdtb2NrX2EyLCBcCisgICAgICAgICAgICAgICAgICAgICBHTU9DS19NQVRD
SEVSXyh0biwgMywgX19WQV9BUkdTX18pIGdtb2NrX2EzLCBcCisgICAgICAgICAgICAgICAgICAg
ICBHTU9DS19NQVRDSEVSXyh0biwgNCwgX19WQV9BUkdTX18pIGdtb2NrX2E0LCBcCisgICAgICAg
ICAgICAgICAgICAgICBHTU9DS19NQVRDSEVSXyh0biwgNSwgX19WQV9BUkdTX18pIGdtb2NrX2E1
LCBcCisgICAgICAgICAgICAgICAgICAgICBHTU9DS19NQVRDSEVSXyh0biwgNiwgX19WQV9BUkdT
X18pIGdtb2NrX2E2LCBcCisgICAgICAgICAgICAgICAgICAgICBHTU9DS19NQVRDSEVSXyh0biwg
NywgX19WQV9BUkdTX18pIGdtb2NrX2E3KSBjb25zdG5lc3MgeyBcCisgICAgR01PQ0tfTU9DS0VS
Xyg3LCBjb25zdG5lc3MsIE1ldGhvZCkuUmVnaXN0ZXJPd25lcih0aGlzKTsgXAorICAgIHJldHVy
biBHTU9DS19NT0NLRVJfKDcsIGNvbnN0bmVzcywgTWV0aG9kKS5XaXRoKGdtb2NrX2ExLCBnbW9j
a19hMiwgXAorICAgICAgICBnbW9ja19hMywgZ21vY2tfYTQsIGdtb2NrX2E1LCBnbW9ja19hNiwg
Z21vY2tfYTcpOyBcCisgIH0gXAorICBtdXRhYmxlIDo6dGVzdGluZzo6RnVuY3Rpb25Nb2NrZXI8
X19WQV9BUkdTX18+IEdNT0NLX01PQ0tFUl8oNywgY29uc3RuZXNzLCBcCisgICAgICBNZXRob2Qp
CisKKy8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE9OJ1QgVVNFIElOIFVTRVIgQ09ERSEh
IQorI2RlZmluZSBHTU9DS19NRVRIT0Q4Xyh0biwgY29uc3RuZXNzLCBjdCwgTWV0aG9kLCAuLi4p
IFwKKyAgR01PQ0tfUkVTVUxUXyh0biwgX19WQV9BUkdTX18pIGN0IE1ldGhvZCggXAorICAgICAg
R01PQ0tfQVJHXyh0biwgMSwgX19WQV9BUkdTX18pIGdtb2NrX2ExLCBcCisgICAgICBHTU9DS19B
UkdfKHRuLCAyLCBfX1ZBX0FSR1NfXykgZ21vY2tfYTIsIFwKKyAgICAgIEdNT0NLX0FSR18odG4s
IDMsIF9fVkFfQVJHU19fKSBnbW9ja19hMywgXAorICAgICAgR01PQ0tfQVJHXyh0biwgNCwgX19W
QV9BUkdTX18pIGdtb2NrX2E0LCBcCisgICAgICBHTU9DS19BUkdfKHRuLCA1LCBfX1ZBX0FSR1Nf
XykgZ21vY2tfYTUsIFwKKyAgICAgIEdNT0NLX0FSR18odG4sIDYsIF9fVkFfQVJHU19fKSBnbW9j
a19hNiwgXAorICAgICAgR01PQ0tfQVJHXyh0biwgNywgX19WQV9BUkdTX18pIGdtb2NrX2E3LCBc
CisgICAgICBHTU9DS19BUkdfKHRuLCA4LCBfX1ZBX0FSR1NfXykgZ21vY2tfYTgpIGNvbnN0bmVz
cyB7IFwKKyAgICBHVEVTVF9DT01QSUxFX0FTU0VSVF8oKDo6dGVzdGluZzo6dHVwbGVfc2l6ZTwg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdG4gOjp0ZXN0aW5nOjppbnRlcm5h
bDo6RnVuY3Rpb248X19WQV9BUkdTX18+OjpBcmd1bWVudFR1cGxlPjo6dmFsdWUgXAorICAgICAg
ICAgICAgPT0gOCksIFwKKyAgICAgICAgdGhpc19tZXRob2RfZG9lc19ub3RfdGFrZV84X2FyZ3Vt
ZW50cyk7IFwKKyAgICBHTU9DS19NT0NLRVJfKDgsIGNvbnN0bmVzcywgTWV0aG9kKS5TZXRPd25l
ckFuZE5hbWUodGhpcywgI01ldGhvZCk7IFwKKyAgICByZXR1cm4gR01PQ0tfTU9DS0VSXyg4LCBj
b25zdG5lc3MsIE1ldGhvZCkuSW52b2tlKGdtb2NrX2ExLCBnbW9ja19hMiwgXAorICAgICAgICBn
bW9ja19hMywgZ21vY2tfYTQsIGdtb2NrX2E1LCBnbW9ja19hNiwgZ21vY2tfYTcsIGdtb2NrX2E4
KTsgXAorICB9IFwKKyAgOjp0ZXN0aW5nOjpNb2NrU3BlYzxfX1ZBX0FSR1NfXz4mIFwKKyAgICAg
IGdtb2NrXyMjTWV0aG9kKEdNT0NLX01BVENIRVJfKHRuLCAxLCBfX1ZBX0FSR1NfXykgZ21vY2tf
YTEsIFwKKyAgICAgICAgICAgICAgICAgICAgIEdNT0NLX01BVENIRVJfKHRuLCAyLCBfX1ZBX0FS
R1NfXykgZ21vY2tfYTIsIFwKKyAgICAgICAgICAgICAgICAgICAgIEdNT0NLX01BVENIRVJfKHRu
LCAzLCBfX1ZBX0FSR1NfXykgZ21vY2tfYTMsIFwKKyAgICAgICAgICAgICAgICAgICAgIEdNT0NL
X01BVENIRVJfKHRuLCA0LCBfX1ZBX0FSR1NfXykgZ21vY2tfYTQsIFwKKyAgICAgICAgICAgICAg
ICAgICAgIEdNT0NLX01BVENIRVJfKHRuLCA1LCBfX1ZBX0FSR1NfXykgZ21vY2tfYTUsIFwKKyAg
ICAgICAgICAgICAgICAgICAgIEdNT0NLX01BVENIRVJfKHRuLCA2LCBfX1ZBX0FSR1NfXykgZ21v
Y2tfYTYsIFwKKyAgICAgICAgICAgICAgICAgICAgIEdNT0NLX01BVENIRVJfKHRuLCA3LCBfX1ZB
X0FSR1NfXykgZ21vY2tfYTcsIFwKKyAgICAgICAgICAgICAgICAgICAgIEdNT0NLX01BVENIRVJf
KHRuLCA4LCBfX1ZBX0FSR1NfXykgZ21vY2tfYTgpIGNvbnN0bmVzcyB7IFwKKyAgICBHTU9DS19N
T0NLRVJfKDgsIGNvbnN0bmVzcywgTWV0aG9kKS5SZWdpc3Rlck93bmVyKHRoaXMpOyBcCisgICAg
cmV0dXJuIEdNT0NLX01PQ0tFUl8oOCwgY29uc3RuZXNzLCBNZXRob2QpLldpdGgoZ21vY2tfYTEs
IGdtb2NrX2EyLCBcCisgICAgICAgIGdtb2NrX2EzLCBnbW9ja19hNCwgZ21vY2tfYTUsIGdtb2Nr
X2E2LCBnbW9ja19hNywgZ21vY2tfYTgpOyBcCisgIH0gXAorICBtdXRhYmxlIDo6dGVzdGluZzo6
RnVuY3Rpb25Nb2NrZXI8X19WQV9BUkdTX18+IEdNT0NLX01PQ0tFUl8oOCwgY29uc3RuZXNzLCBc
CisgICAgICBNZXRob2QpCisKKy8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE9OJ1QgVVNF
IElOIFVTRVIgQ09ERSEhIQorI2RlZmluZSBHTU9DS19NRVRIT0Q5Xyh0biwgY29uc3RuZXNzLCBj
dCwgTWV0aG9kLCAuLi4pIFwKKyAgR01PQ0tfUkVTVUxUXyh0biwgX19WQV9BUkdTX18pIGN0IE1l
dGhvZCggXAorICAgICAgR01PQ0tfQVJHXyh0biwgMSwgX19WQV9BUkdTX18pIGdtb2NrX2ExLCBc
CisgICAgICBHTU9DS19BUkdfKHRuLCAyLCBfX1ZBX0FSR1NfXykgZ21vY2tfYTIsIFwKKyAgICAg
IEdNT0NLX0FSR18odG4sIDMsIF9fVkFfQVJHU19fKSBnbW9ja19hMywgXAorICAgICAgR01PQ0tf
QVJHXyh0biwgNCwgX19WQV9BUkdTX18pIGdtb2NrX2E0LCBcCisgICAgICBHTU9DS19BUkdfKHRu
LCA1LCBfX1ZBX0FSR1NfXykgZ21vY2tfYTUsIFwKKyAgICAgIEdNT0NLX0FSR18odG4sIDYsIF9f
VkFfQVJHU19fKSBnbW9ja19hNiwgXAorICAgICAgR01PQ0tfQVJHXyh0biwgNywgX19WQV9BUkdT
X18pIGdtb2NrX2E3LCBcCisgICAgICBHTU9DS19BUkdfKHRuLCA4LCBfX1ZBX0FSR1NfXykgZ21v
Y2tfYTgsIFwKKyAgICAgIEdNT0NLX0FSR18odG4sIDksIF9fVkFfQVJHU19fKSBnbW9ja19hOSkg
Y29uc3RuZXNzIHsgXAorICAgIEdURVNUX0NPTVBJTEVfQVNTRVJUXygoOjp0ZXN0aW5nOjp0dXBs
ZV9zaXplPCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB0biA6OnRlc3Rpbmc6
OmludGVybmFsOjpGdW5jdGlvbjxfX1ZBX0FSR1NfXz46OkFyZ3VtZW50VHVwbGU+Ojp2YWx1ZSBc
CisgICAgICAgICAgICA9PSA5KSwgXAorICAgICAgICB0aGlzX21ldGhvZF9kb2VzX25vdF90YWtl
XzlfYXJndW1lbnRzKTsgXAorICAgIEdNT0NLX01PQ0tFUl8oOSwgY29uc3RuZXNzLCBNZXRob2Qp
LlNldE93bmVyQW5kTmFtZSh0aGlzLCAjTWV0aG9kKTsgXAorICAgIHJldHVybiBHTU9DS19NT0NL
RVJfKDksIGNvbnN0bmVzcywgTWV0aG9kKS5JbnZva2UoZ21vY2tfYTEsIGdtb2NrX2EyLCBcCisg
ICAgICAgIGdtb2NrX2EzLCBnbW9ja19hNCwgZ21vY2tfYTUsIGdtb2NrX2E2LCBnbW9ja19hNywg
Z21vY2tfYTgsIFwKKyAgICAgICAgZ21vY2tfYTkpOyBcCisgIH0gXAorICA6OnRlc3Rpbmc6Ok1v
Y2tTcGVjPF9fVkFfQVJHU19fPiYgXAorICAgICAgZ21vY2tfIyNNZXRob2QoR01PQ0tfTUFUQ0hF
Ul8odG4sIDEsIF9fVkFfQVJHU19fKSBnbW9ja19hMSwgXAorICAgICAgICAgICAgICAgICAgICAg
R01PQ0tfTUFUQ0hFUl8odG4sIDIsIF9fVkFfQVJHU19fKSBnbW9ja19hMiwgXAorICAgICAgICAg
ICAgICAgICAgICAgR01PQ0tfTUFUQ0hFUl8odG4sIDMsIF9fVkFfQVJHU19fKSBnbW9ja19hMywg
XAorICAgICAgICAgICAgICAgICAgICAgR01PQ0tfTUFUQ0hFUl8odG4sIDQsIF9fVkFfQVJHU19f
KSBnbW9ja19hNCwgXAorICAgICAgICAgICAgICAgICAgICAgR01PQ0tfTUFUQ0hFUl8odG4sIDUs
IF9fVkFfQVJHU19fKSBnbW9ja19hNSwgXAorICAgICAgICAgICAgICAgICAgICAgR01PQ0tfTUFU
Q0hFUl8odG4sIDYsIF9fVkFfQVJHU19fKSBnbW9ja19hNiwgXAorICAgICAgICAgICAgICAgICAg
ICAgR01PQ0tfTUFUQ0hFUl8odG4sIDcsIF9fVkFfQVJHU19fKSBnbW9ja19hNywgXAorICAgICAg
ICAgICAgICAgICAgICAgR01PQ0tfTUFUQ0hFUl8odG4sIDgsIF9fVkFfQVJHU19fKSBnbW9ja19h
OCwgXAorICAgICAgICAgICAgICAgICAgICAgR01PQ0tfTUFUQ0hFUl8odG4sIDksIF9fVkFfQVJH
U19fKSBnbW9ja19hOSkgY29uc3RuZXNzIHsgXAorICAgIEdNT0NLX01PQ0tFUl8oOSwgY29uc3Ru
ZXNzLCBNZXRob2QpLlJlZ2lzdGVyT3duZXIodGhpcyk7IFwKKyAgICByZXR1cm4gR01PQ0tfTU9D
S0VSXyg5LCBjb25zdG5lc3MsIE1ldGhvZCkuV2l0aChnbW9ja19hMSwgZ21vY2tfYTIsIFwKKyAg
ICAgICAgZ21vY2tfYTMsIGdtb2NrX2E0LCBnbW9ja19hNSwgZ21vY2tfYTYsIGdtb2NrX2E3LCBn
bW9ja19hOCwgXAorICAgICAgICBnbW9ja19hOSk7IFwKKyAgfSBcCisgIG11dGFibGUgOjp0ZXN0
aW5nOjpGdW5jdGlvbk1vY2tlcjxfX1ZBX0FSR1NfXz4gR01PQ0tfTU9DS0VSXyg5LCBjb25zdG5l
c3MsIFwKKyAgICAgIE1ldGhvZCkKKworLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBET04n
VCBVU0UgSU4gVVNFUiBDT0RFISEhCisjZGVmaW5lIEdNT0NLX01FVEhPRDEwXyh0biwgY29uc3Ru
ZXNzLCBjdCwgTWV0aG9kLCAuLi4pIFwKKyAgR01PQ0tfUkVTVUxUXyh0biwgX19WQV9BUkdTX18p
IGN0IE1ldGhvZCggXAorICAgICAgR01PQ0tfQVJHXyh0biwgMSwgX19WQV9BUkdTX18pIGdtb2Nr
X2ExLCBcCisgICAgICBHTU9DS19BUkdfKHRuLCAyLCBfX1ZBX0FSR1NfXykgZ21vY2tfYTIsIFwK
KyAgICAgIEdNT0NLX0FSR18odG4sIDMsIF9fVkFfQVJHU19fKSBnbW9ja19hMywgXAorICAgICAg
R01PQ0tfQVJHXyh0biwgNCwgX19WQV9BUkdTX18pIGdtb2NrX2E0LCBcCisgICAgICBHTU9DS19B
UkdfKHRuLCA1LCBfX1ZBX0FSR1NfXykgZ21vY2tfYTUsIFwKKyAgICAgIEdNT0NLX0FSR18odG4s
IDYsIF9fVkFfQVJHU19fKSBnbW9ja19hNiwgXAorICAgICAgR01PQ0tfQVJHXyh0biwgNywgX19W
QV9BUkdTX18pIGdtb2NrX2E3LCBcCisgICAgICBHTU9DS19BUkdfKHRuLCA4LCBfX1ZBX0FSR1Nf
XykgZ21vY2tfYTgsIFwKKyAgICAgIEdNT0NLX0FSR18odG4sIDksIF9fVkFfQVJHU19fKSBnbW9j
a19hOSwgXAorICAgICAgR01PQ0tfQVJHXyh0biwgMTAsIF9fVkFfQVJHU19fKSBnbW9ja19hMTAp
IGNvbnN0bmVzcyB7IFwKKyAgICBHVEVTVF9DT01QSUxFX0FTU0VSVF8oKDo6dGVzdGluZzo6dHVw
bGVfc2l6ZTwgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdG4gOjp0ZXN0aW5n
OjppbnRlcm5hbDo6RnVuY3Rpb248X19WQV9BUkdTX18+OjpBcmd1bWVudFR1cGxlPjo6dmFsdWUg
XAorICAgICAgICAgICAgPT0gMTApLCBcCisgICAgICAgIHRoaXNfbWV0aG9kX2RvZXNfbm90X3Rh
a2VfMTBfYXJndW1lbnRzKTsgXAorICAgIEdNT0NLX01PQ0tFUl8oMTAsIGNvbnN0bmVzcywgTWV0
aG9kKS5TZXRPd25lckFuZE5hbWUodGhpcywgI01ldGhvZCk7IFwKKyAgICByZXR1cm4gR01PQ0tf
TU9DS0VSXygxMCwgY29uc3RuZXNzLCBNZXRob2QpLkludm9rZShnbW9ja19hMSwgZ21vY2tfYTIs
IFwKKyAgICAgICAgZ21vY2tfYTMsIGdtb2NrX2E0LCBnbW9ja19hNSwgZ21vY2tfYTYsIGdtb2Nr
X2E3LCBnbW9ja19hOCwgZ21vY2tfYTksIFwKKyAgICAgICAgZ21vY2tfYTEwKTsgXAorICB9IFwK
KyAgOjp0ZXN0aW5nOjpNb2NrU3BlYzxfX1ZBX0FSR1NfXz4mIFwKKyAgICAgIGdtb2NrXyMjTWV0
aG9kKEdNT0NLX01BVENIRVJfKHRuLCAxLCBfX1ZBX0FSR1NfXykgZ21vY2tfYTEsIFwKKyAgICAg
ICAgICAgICAgICAgICAgIEdNT0NLX01BVENIRVJfKHRuLCAyLCBfX1ZBX0FSR1NfXykgZ21vY2tf
YTIsIFwKKyAgICAgICAgICAgICAgICAgICAgIEdNT0NLX01BVENIRVJfKHRuLCAzLCBfX1ZBX0FS
R1NfXykgZ21vY2tfYTMsIFwKKyAgICAgICAgICAgICAgICAgICAgIEdNT0NLX01BVENIRVJfKHRu
LCA0LCBfX1ZBX0FSR1NfXykgZ21vY2tfYTQsIFwKKyAgICAgICAgICAgICAgICAgICAgIEdNT0NL
X01BVENIRVJfKHRuLCA1LCBfX1ZBX0FSR1NfXykgZ21vY2tfYTUsIFwKKyAgICAgICAgICAgICAg
ICAgICAgIEdNT0NLX01BVENIRVJfKHRuLCA2LCBfX1ZBX0FSR1NfXykgZ21vY2tfYTYsIFwKKyAg
ICAgICAgICAgICAgICAgICAgIEdNT0NLX01BVENIRVJfKHRuLCA3LCBfX1ZBX0FSR1NfXykgZ21v
Y2tfYTcsIFwKKyAgICAgICAgICAgICAgICAgICAgIEdNT0NLX01BVENIRVJfKHRuLCA4LCBfX1ZB
X0FSR1NfXykgZ21vY2tfYTgsIFwKKyAgICAgICAgICAgICAgICAgICAgIEdNT0NLX01BVENIRVJf
KHRuLCA5LCBfX1ZBX0FSR1NfXykgZ21vY2tfYTksIFwKKyAgICAgICAgICAgICAgICAgICAgIEdN
T0NLX01BVENIRVJfKHRuLCAxMCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgIF9fVkFfQVJH
U19fKSBnbW9ja19hMTApIGNvbnN0bmVzcyB7IFwKKyAgICBHTU9DS19NT0NLRVJfKDEwLCBjb25z
dG5lc3MsIE1ldGhvZCkuUmVnaXN0ZXJPd25lcih0aGlzKTsgXAorICAgIHJldHVybiBHTU9DS19N
T0NLRVJfKDEwLCBjb25zdG5lc3MsIE1ldGhvZCkuV2l0aChnbW9ja19hMSwgZ21vY2tfYTIsIFwK
KyAgICAgICAgZ21vY2tfYTMsIGdtb2NrX2E0LCBnbW9ja19hNSwgZ21vY2tfYTYsIGdtb2NrX2E3
LCBnbW9ja19hOCwgZ21vY2tfYTksIFwKKyAgICAgICAgZ21vY2tfYTEwKTsgXAorICB9IFwKKyAg
bXV0YWJsZSA6OnRlc3Rpbmc6OkZ1bmN0aW9uTW9ja2VyPF9fVkFfQVJHU19fPiBHTU9DS19NT0NL
RVJfKDEwLCBjb25zdG5lc3MsIFwKKyAgICAgIE1ldGhvZCkKKworI2RlZmluZSBNT0NLX01FVEhP
RDAobSwgLi4uKSBHTU9DS19NRVRIT0QwXygsICwgLCBtLCBfX1ZBX0FSR1NfXykKKyNkZWZpbmUg
TU9DS19NRVRIT0QxKG0sIC4uLikgR01PQ0tfTUVUSE9EMV8oLCAsICwgbSwgX19WQV9BUkdTX18p
CisjZGVmaW5lIE1PQ0tfTUVUSE9EMihtLCAuLi4pIEdNT0NLX01FVEhPRDJfKCwgLCAsIG0sIF9f
VkFfQVJHU19fKQorI2RlZmluZSBNT0NLX01FVEhPRDMobSwgLi4uKSBHTU9DS19NRVRIT0QzXygs
ICwgLCBtLCBfX1ZBX0FSR1NfXykKKyNkZWZpbmUgTU9DS19NRVRIT0Q0KG0sIC4uLikgR01PQ0tf
TUVUSE9ENF8oLCAsICwgbSwgX19WQV9BUkdTX18pCisjZGVmaW5lIE1PQ0tfTUVUSE9ENShtLCAu
Li4pIEdNT0NLX01FVEhPRDVfKCwgLCAsIG0sIF9fVkFfQVJHU19fKQorI2RlZmluZSBNT0NLX01F
VEhPRDYobSwgLi4uKSBHTU9DS19NRVRIT0Q2XygsICwgLCBtLCBfX1ZBX0FSR1NfXykKKyNkZWZp
bmUgTU9DS19NRVRIT0Q3KG0sIC4uLikgR01PQ0tfTUVUSE9EN18oLCAsICwgbSwgX19WQV9BUkdT
X18pCisjZGVmaW5lIE1PQ0tfTUVUSE9EOChtLCAuLi4pIEdNT0NLX01FVEhPRDhfKCwgLCAsIG0s
IF9fVkFfQVJHU19fKQorI2RlZmluZSBNT0NLX01FVEhPRDkobSwgLi4uKSBHTU9DS19NRVRIT0Q5
XygsICwgLCBtLCBfX1ZBX0FSR1NfXykKKyNkZWZpbmUgTU9DS19NRVRIT0QxMChtLCAuLi4pIEdN
T0NLX01FVEhPRDEwXygsICwgLCBtLCBfX1ZBX0FSR1NfXykKKworI2RlZmluZSBNT0NLX0NPTlNU
X01FVEhPRDAobSwgLi4uKSBHTU9DS19NRVRIT0QwXygsIGNvbnN0LCAsIG0sIF9fVkFfQVJHU19f
KQorI2RlZmluZSBNT0NLX0NPTlNUX01FVEhPRDEobSwgLi4uKSBHTU9DS19NRVRIT0QxXygsIGNv
bnN0LCAsIG0sIF9fVkFfQVJHU19fKQorI2RlZmluZSBNT0NLX0NPTlNUX01FVEhPRDIobSwgLi4u
KSBHTU9DS19NRVRIT0QyXygsIGNvbnN0LCAsIG0sIF9fVkFfQVJHU19fKQorI2RlZmluZSBNT0NL
X0NPTlNUX01FVEhPRDMobSwgLi4uKSBHTU9DS19NRVRIT0QzXygsIGNvbnN0LCAsIG0sIF9fVkFf
QVJHU19fKQorI2RlZmluZSBNT0NLX0NPTlNUX01FVEhPRDQobSwgLi4uKSBHTU9DS19NRVRIT0Q0
XygsIGNvbnN0LCAsIG0sIF9fVkFfQVJHU19fKQorI2RlZmluZSBNT0NLX0NPTlNUX01FVEhPRDUo
bSwgLi4uKSBHTU9DS19NRVRIT0Q1XygsIGNvbnN0LCAsIG0sIF9fVkFfQVJHU19fKQorI2RlZmlu
ZSBNT0NLX0NPTlNUX01FVEhPRDYobSwgLi4uKSBHTU9DS19NRVRIT0Q2XygsIGNvbnN0LCAsIG0s
IF9fVkFfQVJHU19fKQorI2RlZmluZSBNT0NLX0NPTlNUX01FVEhPRDcobSwgLi4uKSBHTU9DS19N
RVRIT0Q3XygsIGNvbnN0LCAsIG0sIF9fVkFfQVJHU19fKQorI2RlZmluZSBNT0NLX0NPTlNUX01F
VEhPRDgobSwgLi4uKSBHTU9DS19NRVRIT0Q4XygsIGNvbnN0LCAsIG0sIF9fVkFfQVJHU19fKQor
I2RlZmluZSBNT0NLX0NPTlNUX01FVEhPRDkobSwgLi4uKSBHTU9DS19NRVRIT0Q5XygsIGNvbnN0
LCAsIG0sIF9fVkFfQVJHU19fKQorI2RlZmluZSBNT0NLX0NPTlNUX01FVEhPRDEwKG0sIC4uLikg
R01PQ0tfTUVUSE9EMTBfKCwgY29uc3QsICwgbSwgX19WQV9BUkdTX18pCisKKyNkZWZpbmUgTU9D
S19NRVRIT0QwX1QobSwgLi4uKSBHTU9DS19NRVRIT0QwXyh0eXBlbmFtZSwgLCAsIG0sIF9fVkFf
QVJHU19fKQorI2RlZmluZSBNT0NLX01FVEhPRDFfVChtLCAuLi4pIEdNT0NLX01FVEhPRDFfKHR5
cGVuYW1lLCAsICwgbSwgX19WQV9BUkdTX18pCisjZGVmaW5lIE1PQ0tfTUVUSE9EMl9UKG0sIC4u
LikgR01PQ0tfTUVUSE9EMl8odHlwZW5hbWUsICwgLCBtLCBfX1ZBX0FSR1NfXykKKyNkZWZpbmUg
TU9DS19NRVRIT0QzX1QobSwgLi4uKSBHTU9DS19NRVRIT0QzXyh0eXBlbmFtZSwgLCAsIG0sIF9f
VkFfQVJHU19fKQorI2RlZmluZSBNT0NLX01FVEhPRDRfVChtLCAuLi4pIEdNT0NLX01FVEhPRDRf
KHR5cGVuYW1lLCAsICwgbSwgX19WQV9BUkdTX18pCisjZGVmaW5lIE1PQ0tfTUVUSE9ENV9UKG0s
IC4uLikgR01PQ0tfTUVUSE9ENV8odHlwZW5hbWUsICwgLCBtLCBfX1ZBX0FSR1NfXykKKyNkZWZp
bmUgTU9DS19NRVRIT0Q2X1QobSwgLi4uKSBHTU9DS19NRVRIT0Q2Xyh0eXBlbmFtZSwgLCAsIG0s
IF9fVkFfQVJHU19fKQorI2RlZmluZSBNT0NLX01FVEhPRDdfVChtLCAuLi4pIEdNT0NLX01FVEhP
RDdfKHR5cGVuYW1lLCAsICwgbSwgX19WQV9BUkdTX18pCisjZGVmaW5lIE1PQ0tfTUVUSE9EOF9U
KG0sIC4uLikgR01PQ0tfTUVUSE9EOF8odHlwZW5hbWUsICwgLCBtLCBfX1ZBX0FSR1NfXykKKyNk
ZWZpbmUgTU9DS19NRVRIT0Q5X1QobSwgLi4uKSBHTU9DS19NRVRIT0Q5Xyh0eXBlbmFtZSwgLCAs
IG0sIF9fVkFfQVJHU19fKQorI2RlZmluZSBNT0NLX01FVEhPRDEwX1QobSwgLi4uKSBHTU9DS19N
RVRIT0QxMF8odHlwZW5hbWUsICwgLCBtLCBfX1ZBX0FSR1NfXykKKworI2RlZmluZSBNT0NLX0NP
TlNUX01FVEhPRDBfVChtLCAuLi4pIFwKKyAgICBHTU9DS19NRVRIT0QwXyh0eXBlbmFtZSwgY29u
c3QsICwgbSwgX19WQV9BUkdTX18pCisjZGVmaW5lIE1PQ0tfQ09OU1RfTUVUSE9EMV9UKG0sIC4u
LikgXAorICAgIEdNT0NLX01FVEhPRDFfKHR5cGVuYW1lLCBjb25zdCwgLCBtLCBfX1ZBX0FSR1Nf
XykKKyNkZWZpbmUgTU9DS19DT05TVF9NRVRIT0QyX1QobSwgLi4uKSBcCisgICAgR01PQ0tfTUVU
SE9EMl8odHlwZW5hbWUsIGNvbnN0LCAsIG0sIF9fVkFfQVJHU19fKQorI2RlZmluZSBNT0NLX0NP
TlNUX01FVEhPRDNfVChtLCAuLi4pIFwKKyAgICBHTU9DS19NRVRIT0QzXyh0eXBlbmFtZSwgY29u
c3QsICwgbSwgX19WQV9BUkdTX18pCisjZGVmaW5lIE1PQ0tfQ09OU1RfTUVUSE9ENF9UKG0sIC4u
LikgXAorICAgIEdNT0NLX01FVEhPRDRfKHR5cGVuYW1lLCBjb25zdCwgLCBtLCBfX1ZBX0FSR1Nf
XykKKyNkZWZpbmUgTU9DS19DT05TVF9NRVRIT0Q1X1QobSwgLi4uKSBcCisgICAgR01PQ0tfTUVU
SE9ENV8odHlwZW5hbWUsIGNvbnN0LCAsIG0sIF9fVkFfQVJHU19fKQorI2RlZmluZSBNT0NLX0NP
TlNUX01FVEhPRDZfVChtLCAuLi4pIFwKKyAgICBHTU9DS19NRVRIT0Q2Xyh0eXBlbmFtZSwgY29u
c3QsICwgbSwgX19WQV9BUkdTX18pCisjZGVmaW5lIE1PQ0tfQ09OU1RfTUVUSE9EN19UKG0sIC4u
LikgXAorICAgIEdNT0NLX01FVEhPRDdfKHR5cGVuYW1lLCBjb25zdCwgLCBtLCBfX1ZBX0FSR1Nf
XykKKyNkZWZpbmUgTU9DS19DT05TVF9NRVRIT0Q4X1QobSwgLi4uKSBcCisgICAgR01PQ0tfTUVU
SE9EOF8odHlwZW5hbWUsIGNvbnN0LCAsIG0sIF9fVkFfQVJHU19fKQorI2RlZmluZSBNT0NLX0NP
TlNUX01FVEhPRDlfVChtLCAuLi4pIFwKKyAgICBHTU9DS19NRVRIT0Q5Xyh0eXBlbmFtZSwgY29u
c3QsICwgbSwgX19WQV9BUkdTX18pCisjZGVmaW5lIE1PQ0tfQ09OU1RfTUVUSE9EMTBfVChtLCAu
Li4pIFwKKyAgICBHTU9DS19NRVRIT0QxMF8odHlwZW5hbWUsIGNvbnN0LCAsIG0sIF9fVkFfQVJH
U19fKQorCisjZGVmaW5lIE1PQ0tfTUVUSE9EMF9XSVRIX0NBTExUWVBFKGN0LCBtLCAuLi4pIFwK
KyAgICBHTU9DS19NRVRIT0QwXygsICwgY3QsIG0sIF9fVkFfQVJHU19fKQorI2RlZmluZSBNT0NL
X01FVEhPRDFfV0lUSF9DQUxMVFlQRShjdCwgbSwgLi4uKSBcCisgICAgR01PQ0tfTUVUSE9EMV8o
LCAsIGN0LCBtLCBfX1ZBX0FSR1NfXykKKyNkZWZpbmUgTU9DS19NRVRIT0QyX1dJVEhfQ0FMTFRZ
UEUoY3QsIG0sIC4uLikgXAorICAgIEdNT0NLX01FVEhPRDJfKCwgLCBjdCwgbSwgX19WQV9BUkdT
X18pCisjZGVmaW5lIE1PQ0tfTUVUSE9EM19XSVRIX0NBTExUWVBFKGN0LCBtLCAuLi4pIFwKKyAg
ICBHTU9DS19NRVRIT0QzXygsICwgY3QsIG0sIF9fVkFfQVJHU19fKQorI2RlZmluZSBNT0NLX01F
VEhPRDRfV0lUSF9DQUxMVFlQRShjdCwgbSwgLi4uKSBcCisgICAgR01PQ0tfTUVUSE9ENF8oLCAs
IGN0LCBtLCBfX1ZBX0FSR1NfXykKKyNkZWZpbmUgTU9DS19NRVRIT0Q1X1dJVEhfQ0FMTFRZUEUo
Y3QsIG0sIC4uLikgXAorICAgIEdNT0NLX01FVEhPRDVfKCwgLCBjdCwgbSwgX19WQV9BUkdTX18p
CisjZGVmaW5lIE1PQ0tfTUVUSE9ENl9XSVRIX0NBTExUWVBFKGN0LCBtLCAuLi4pIFwKKyAgICBH
TU9DS19NRVRIT0Q2XygsICwgY3QsIG0sIF9fVkFfQVJHU19fKQorI2RlZmluZSBNT0NLX01FVEhP
RDdfV0lUSF9DQUxMVFlQRShjdCwgbSwgLi4uKSBcCisgICAgR01PQ0tfTUVUSE9EN18oLCAsIGN0
LCBtLCBfX1ZBX0FSR1NfXykKKyNkZWZpbmUgTU9DS19NRVRIT0Q4X1dJVEhfQ0FMTFRZUEUoY3Qs
IG0sIC4uLikgXAorICAgIEdNT0NLX01FVEhPRDhfKCwgLCBjdCwgbSwgX19WQV9BUkdTX18pCisj
ZGVmaW5lIE1PQ0tfTUVUSE9EOV9XSVRIX0NBTExUWVBFKGN0LCBtLCAuLi4pIFwKKyAgICBHTU9D
S19NRVRIT0Q5XygsICwgY3QsIG0sIF9fVkFfQVJHU19fKQorI2RlZmluZSBNT0NLX01FVEhPRDEw
X1dJVEhfQ0FMTFRZUEUoY3QsIG0sIC4uLikgXAorICAgIEdNT0NLX01FVEhPRDEwXygsICwgY3Qs
IG0sIF9fVkFfQVJHU19fKQorCisjZGVmaW5lIE1PQ0tfQ09OU1RfTUVUSE9EMF9XSVRIX0NBTExU
WVBFKGN0LCBtLCAuLi4pIFwKKyAgICBHTU9DS19NRVRIT0QwXygsIGNvbnN0LCBjdCwgbSwgX19W
QV9BUkdTX18pCisjZGVmaW5lIE1PQ0tfQ09OU1RfTUVUSE9EMV9XSVRIX0NBTExUWVBFKGN0LCBt
LCAuLi4pIFwKKyAgICBHTU9DS19NRVRIT0QxXygsIGNvbnN0LCBjdCwgbSwgX19WQV9BUkdTX18p
CisjZGVmaW5lIE1PQ0tfQ09OU1RfTUVUSE9EMl9XSVRIX0NBTExUWVBFKGN0LCBtLCAuLi4pIFwK
KyAgICBHTU9DS19NRVRIT0QyXygsIGNvbnN0LCBjdCwgbSwgX19WQV9BUkdTX18pCisjZGVmaW5l
IE1PQ0tfQ09OU1RfTUVUSE9EM19XSVRIX0NBTExUWVBFKGN0LCBtLCAuLi4pIFwKKyAgICBHTU9D
S19NRVRIT0QzXygsIGNvbnN0LCBjdCwgbSwgX19WQV9BUkdTX18pCisjZGVmaW5lIE1PQ0tfQ09O
U1RfTUVUSE9ENF9XSVRIX0NBTExUWVBFKGN0LCBtLCAuLi4pIFwKKyAgICBHTU9DS19NRVRIT0Q0
XygsIGNvbnN0LCBjdCwgbSwgX19WQV9BUkdTX18pCisjZGVmaW5lIE1PQ0tfQ09OU1RfTUVUSE9E
NV9XSVRIX0NBTExUWVBFKGN0LCBtLCAuLi4pIFwKKyAgICBHTU9DS19NRVRIT0Q1XygsIGNvbnN0
LCBjdCwgbSwgX19WQV9BUkdTX18pCisjZGVmaW5lIE1PQ0tfQ09OU1RfTUVUSE9ENl9XSVRIX0NB
TExUWVBFKGN0LCBtLCAuLi4pIFwKKyAgICBHTU9DS19NRVRIT0Q2XygsIGNvbnN0LCBjdCwgbSwg
X19WQV9BUkdTX18pCisjZGVmaW5lIE1PQ0tfQ09OU1RfTUVUSE9EN19XSVRIX0NBTExUWVBFKGN0
LCBtLCAuLi4pIFwKKyAgICBHTU9DS19NRVRIT0Q3XygsIGNvbnN0LCBjdCwgbSwgX19WQV9BUkdT
X18pCisjZGVmaW5lIE1PQ0tfQ09OU1RfTUVUSE9EOF9XSVRIX0NBTExUWVBFKGN0LCBtLCAuLi4p
IFwKKyAgICBHTU9DS19NRVRIT0Q4XygsIGNvbnN0LCBjdCwgbSwgX19WQV9BUkdTX18pCisjZGVm
aW5lIE1PQ0tfQ09OU1RfTUVUSE9EOV9XSVRIX0NBTExUWVBFKGN0LCBtLCAuLi4pIFwKKyAgICBH
TU9DS19NRVRIT0Q5XygsIGNvbnN0LCBjdCwgbSwgX19WQV9BUkdTX18pCisjZGVmaW5lIE1PQ0tf
Q09OU1RfTUVUSE9EMTBfV0lUSF9DQUxMVFlQRShjdCwgbSwgLi4uKSBcCisgICAgR01PQ0tfTUVU
SE9EMTBfKCwgY29uc3QsIGN0LCBtLCBfX1ZBX0FSR1NfXykKKworI2RlZmluZSBNT0NLX01FVEhP
RDBfVF9XSVRIX0NBTExUWVBFKGN0LCBtLCAuLi4pIFwKKyAgICBHTU9DS19NRVRIT0QwXyh0eXBl
bmFtZSwgLCBjdCwgbSwgX19WQV9BUkdTX18pCisjZGVmaW5lIE1PQ0tfTUVUSE9EMV9UX1dJVEhf
Q0FMTFRZUEUoY3QsIG0sIC4uLikgXAorICAgIEdNT0NLX01FVEhPRDFfKHR5cGVuYW1lLCAsIGN0
LCBtLCBfX1ZBX0FSR1NfXykKKyNkZWZpbmUgTU9DS19NRVRIT0QyX1RfV0lUSF9DQUxMVFlQRShj
dCwgbSwgLi4uKSBcCisgICAgR01PQ0tfTUVUSE9EMl8odHlwZW5hbWUsICwgY3QsIG0sIF9fVkFf
QVJHU19fKQorI2RlZmluZSBNT0NLX01FVEhPRDNfVF9XSVRIX0NBTExUWVBFKGN0LCBtLCAuLi4p
IFwKKyAgICBHTU9DS19NRVRIT0QzXyh0eXBlbmFtZSwgLCBjdCwgbSwgX19WQV9BUkdTX18pCisj
ZGVmaW5lIE1PQ0tfTUVUSE9ENF9UX1dJVEhfQ0FMTFRZUEUoY3QsIG0sIC4uLikgXAorICAgIEdN
T0NLX01FVEhPRDRfKHR5cGVuYW1lLCAsIGN0LCBtLCBfX1ZBX0FSR1NfXykKKyNkZWZpbmUgTU9D
S19NRVRIT0Q1X1RfV0lUSF9DQUxMVFlQRShjdCwgbSwgLi4uKSBcCisgICAgR01PQ0tfTUVUSE9E
NV8odHlwZW5hbWUsICwgY3QsIG0sIF9fVkFfQVJHU19fKQorI2RlZmluZSBNT0NLX01FVEhPRDZf
VF9XSVRIX0NBTExUWVBFKGN0LCBtLCAuLi4pIFwKKyAgICBHTU9DS19NRVRIT0Q2Xyh0eXBlbmFt
ZSwgLCBjdCwgbSwgX19WQV9BUkdTX18pCisjZGVmaW5lIE1PQ0tfTUVUSE9EN19UX1dJVEhfQ0FM
TFRZUEUoY3QsIG0sIC4uLikgXAorICAgIEdNT0NLX01FVEhPRDdfKHR5cGVuYW1lLCAsIGN0LCBt
LCBfX1ZBX0FSR1NfXykKKyNkZWZpbmUgTU9DS19NRVRIT0Q4X1RfV0lUSF9DQUxMVFlQRShjdCwg
bSwgLi4uKSBcCisgICAgR01PQ0tfTUVUSE9EOF8odHlwZW5hbWUsICwgY3QsIG0sIF9fVkFfQVJH
U19fKQorI2RlZmluZSBNT0NLX01FVEhPRDlfVF9XSVRIX0NBTExUWVBFKGN0LCBtLCAuLi4pIFwK
KyAgICBHTU9DS19NRVRIT0Q5Xyh0eXBlbmFtZSwgLCBjdCwgbSwgX19WQV9BUkdTX18pCisjZGVm
aW5lIE1PQ0tfTUVUSE9EMTBfVF9XSVRIX0NBTExUWVBFKGN0LCBtLCAuLi4pIFwKKyAgICBHTU9D
S19NRVRIT0QxMF8odHlwZW5hbWUsICwgY3QsIG0sIF9fVkFfQVJHU19fKQorCisjZGVmaW5lIE1P
Q0tfQ09OU1RfTUVUSE9EMF9UX1dJVEhfQ0FMTFRZUEUoY3QsIG0sIC4uLikgXAorICAgIEdNT0NL
X01FVEhPRDBfKHR5cGVuYW1lLCBjb25zdCwgY3QsIG0sIF9fVkFfQVJHU19fKQorI2RlZmluZSBN
T0NLX0NPTlNUX01FVEhPRDFfVF9XSVRIX0NBTExUWVBFKGN0LCBtLCAuLi4pIFwKKyAgICBHTU9D
S19NRVRIT0QxXyh0eXBlbmFtZSwgY29uc3QsIGN0LCBtLCBfX1ZBX0FSR1NfXykKKyNkZWZpbmUg
TU9DS19DT05TVF9NRVRIT0QyX1RfV0lUSF9DQUxMVFlQRShjdCwgbSwgLi4uKSBcCisgICAgR01P
Q0tfTUVUSE9EMl8odHlwZW5hbWUsIGNvbnN0LCBjdCwgbSwgX19WQV9BUkdTX18pCisjZGVmaW5l
IE1PQ0tfQ09OU1RfTUVUSE9EM19UX1dJVEhfQ0FMTFRZUEUoY3QsIG0sIC4uLikgXAorICAgIEdN
T0NLX01FVEhPRDNfKHR5cGVuYW1lLCBjb25zdCwgY3QsIG0sIF9fVkFfQVJHU19fKQorI2RlZmlu
ZSBNT0NLX0NPTlNUX01FVEhPRDRfVF9XSVRIX0NBTExUWVBFKGN0LCBtLCAuLi4pIFwKKyAgICBH
TU9DS19NRVRIT0Q0Xyh0eXBlbmFtZSwgY29uc3QsIGN0LCBtLCBfX1ZBX0FSR1NfXykKKyNkZWZp
bmUgTU9DS19DT05TVF9NRVRIT0Q1X1RfV0lUSF9DQUxMVFlQRShjdCwgbSwgLi4uKSBcCisgICAg
R01PQ0tfTUVUSE9ENV8odHlwZW5hbWUsIGNvbnN0LCBjdCwgbSwgX19WQV9BUkdTX18pCisjZGVm
aW5lIE1PQ0tfQ09OU1RfTUVUSE9ENl9UX1dJVEhfQ0FMTFRZUEUoY3QsIG0sIC4uLikgXAorICAg
IEdNT0NLX01FVEhPRDZfKHR5cGVuYW1lLCBjb25zdCwgY3QsIG0sIF9fVkFfQVJHU19fKQorI2Rl
ZmluZSBNT0NLX0NPTlNUX01FVEhPRDdfVF9XSVRIX0NBTExUWVBFKGN0LCBtLCAuLi4pIFwKKyAg
ICBHTU9DS19NRVRIT0Q3Xyh0eXBlbmFtZSwgY29uc3QsIGN0LCBtLCBfX1ZBX0FSR1NfXykKKyNk
ZWZpbmUgTU9DS19DT05TVF9NRVRIT0Q4X1RfV0lUSF9DQUxMVFlQRShjdCwgbSwgLi4uKSBcCisg
ICAgR01PQ0tfTUVUSE9EOF8odHlwZW5hbWUsIGNvbnN0LCBjdCwgbSwgX19WQV9BUkdTX18pCisj
ZGVmaW5lIE1PQ0tfQ09OU1RfTUVUSE9EOV9UX1dJVEhfQ0FMTFRZUEUoY3QsIG0sIC4uLikgXAor
ICAgIEdNT0NLX01FVEhPRDlfKHR5cGVuYW1lLCBjb25zdCwgY3QsIG0sIF9fVkFfQVJHU19fKQor
I2RlZmluZSBNT0NLX0NPTlNUX01FVEhPRDEwX1RfV0lUSF9DQUxMVFlQRShjdCwgbSwgLi4uKSBc
CisgICAgR01PQ0tfTUVUSE9EMTBfKHR5cGVuYW1lLCBjb25zdCwgY3QsIG0sIF9fVkFfQVJHU19f
KQorCisvLyBBIE1vY2tGdW5jdGlvbjxGPiBjbGFzcyBoYXMgb25lIG1vY2sgbWV0aG9kIHdob3Nl
IHR5cGUgaXMgRi4gIEl0IGlzCisvLyB1c2VmdWwgd2hlbiB5b3UganVzdCB3YW50IHlvdXIgdGVz
dCBjb2RlIHRvIGVtaXQgc29tZSBtZXNzYWdlcyBhbmQKKy8vIGhhdmUgR29vZ2xlIE1vY2sgdmVy
aWZ5IHRoZSByaWdodCBtZXNzYWdlcyBhcmUgc2VudCAoYW5kIHBlcmhhcHMgYXQKKy8vIHRoZSBy
aWdodCB0aW1lcykuICBGb3IgZXhhbXBsZSwgaWYgeW91IGFyZSBleGVyY2lzaW5nIGNvZGU6Cisv
LworLy8gICBGb28oMSk7CisvLyAgIEZvbygyKTsKKy8vICAgRm9vKDMpOworLy8KKy8vIGFuZCB3
YW50IHRvIHZlcmlmeSB0aGF0IEZvbygxKSBhbmQgRm9vKDMpIGJvdGggaW52b2tlCisvLyBtb2Nr
LkJhcigiYSIpLCBidXQgRm9vKDIpIGRvZXNuJ3QgaW52b2tlIGFueXRoaW5nLCB5b3UgY2FuIHdy
aXRlOgorLy8KKy8vIFRFU1QoRm9vVGVzdCwgSW52b2tlc0JhckNvcnJlY3RseSkgeworLy8gICBN
eU1vY2sgbW9jazsKKy8vICAgTW9ja0Z1bmN0aW9uPHZvaWQoc3RyaW5nIGNoZWNrX3BvaW50X25h
bWUpPiBjaGVjazsKKy8vICAgeworLy8gICAgIEluU2VxdWVuY2UgczsKKy8vCisvLyAgICAgRVhQ
RUNUX0NBTEwobW9jaywgQmFyKCJhIikpOworLy8gICAgIEVYUEVDVF9DQUxMKGNoZWNrLCBDYWxs
KCIxIikpOworLy8gICAgIEVYUEVDVF9DQUxMKGNoZWNrLCBDYWxsKCIyIikpOworLy8gICAgIEVY
UEVDVF9DQUxMKG1vY2ssIEJhcigiYSIpKTsKKy8vICAgfQorLy8gICBGb28oMSk7CisvLyAgIGNo
ZWNrLkNhbGwoIjEiKTsKKy8vICAgRm9vKDIpOworLy8gICBjaGVjay5DYWxsKCIyIik7CisvLyAg
IEZvbygzKTsKKy8vIH0KKy8vCisvLyBUaGUgZXhwZWN0YXRpb24gc3BlYyBzYXlzIHRoYXQgdGhl
IGZpcnN0IEJhcigiYSIpIG11c3QgaGFwcGVuCisvLyBiZWZvcmUgY2hlY2sgcG9pbnQgIjEiLCB0
aGUgc2Vjb25kIEJhcigiYSIpIG11c3QgaGFwcGVuIGFmdGVyIGNoZWNrCisvLyBwb2ludCAiMiIs
IGFuZCBub3RoaW5nIHNob3VsZCBoYXBwZW4gYmV0d2VlbiB0aGUgdHdvIGNoZWNrCisvLyBwb2lu
dHMuIFRoZSBleHBsaWNpdCBjaGVjayBwb2ludHMgbWFrZSBpdCBlYXN5IHRvIHRlbGwgd2hpY2gK
Ky8vIEJhcigiYSIpIGlzIGNhbGxlZCBieSB3aGljaCBjYWxsIHRvIEZvbygpLgorLy8KKy8vIE1v
Y2tGdW5jdGlvbjxGPiBjYW4gYWxzbyBiZSB1c2VkIHRvIGV4ZXJjaXNlIGNvZGUgdGhhdCBhY2Nl
cHRzCisvLyBzdGQ6OmZ1bmN0aW9uPEY+IGNhbGxiYWNrcy4gVG8gZG8gc28sIHVzZSBBc1N0ZEZ1
bmN0aW9uKCkgbWV0aG9kCisvLyB0byBjcmVhdGUgc3RkOjpmdW5jdGlvbiBwcm94eSBmb3J3YXJk
aW5nIHRvIG9yaWdpbmFsIG9iamVjdCdzIENhbGwuCisvLyBFeGFtcGxlOgorLy8KKy8vIFRFU1Qo
Rm9vVGVzdCwgUnVuc0NhbGxiYWNrV2l0aEJhckFyZ3VtZW50KSB7CisvLyAgIE1vY2tGdW5jdGlv
bjxpbnQoc3RyaW5nKT4gY2FsbGJhY2s7CisvLyAgIEVYUEVDVF9DQUxMKGNhbGxiYWNrLCBDYWxs
KCJiYXIiKSkuV2lsbE9uY2UoUmV0dXJuKDEpKTsKKy8vICAgRm9vKGNhbGxiYWNrLkFzU3RkRnVu
Y3Rpb24oKSk7CisvLyB9Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRj4KK2NsYXNzIE1vY2tGdW5jdGlv
bjsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFI+CitjbGFzcyBNb2NrRnVuY3Rpb248UigpPiB7Cisg
cHVibGljOgorICBNb2NrRnVuY3Rpb24oKSB7fQorCisgIE1PQ0tfTUVUSE9EMF9UKENhbGwsIFIo
KSk7CisKKyNpZiBHVEVTVF9IQVNfU1REX0ZVTkNUSU9OXworICBzdGQ6OmZ1bmN0aW9uPFIoKT4g
QXNTdGRGdW5jdGlvbigpIHsKKyAgICByZXR1cm4gW3RoaXNdKCkgLT4gUiB7CisgICAgICByZXR1
cm4gdGhpcy0+Q2FsbCgpOworICAgIH07CisgIH0KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9G
VU5DVElPTl8KKworIHByaXZhdGU6CisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8o
TW9ja0Z1bmN0aW9uKTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBSLCB0eXBlbmFtZSBBMD4K
K2NsYXNzIE1vY2tGdW5jdGlvbjxSKEEwKT4geworIHB1YmxpYzoKKyAgTW9ja0Z1bmN0aW9uKCkg
e30KKworICBNT0NLX01FVEhPRDFfVChDYWxsLCBSKEEwKSk7CisKKyNpZiBHVEVTVF9IQVNfU1RE
X0ZVTkNUSU9OXworICBzdGQ6OmZ1bmN0aW9uPFIoQTApPiBBc1N0ZEZ1bmN0aW9uKCkgeworICAg
IHJldHVybiBbdGhpc10oQTAgYTApIC0+IFIgeworICAgICAgcmV0dXJuIHRoaXMtPkNhbGwoYTAp
OworICAgIH07CisgIH0KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9GVU5DVElPTl8KKworIHBy
aXZhdGU6CisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oTW9ja0Z1bmN0aW9uKTsK
K307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBSLCB0eXBlbmFtZSBBMCwgdHlwZW5hbWUgQTE+Citj
bGFzcyBNb2NrRnVuY3Rpb248UihBMCwgQTEpPiB7CisgcHVibGljOgorICBNb2NrRnVuY3Rpb24o
KSB7fQorCisgIE1PQ0tfTUVUSE9EMl9UKENhbGwsIFIoQTAsIEExKSk7CisKKyNpZiBHVEVTVF9I
QVNfU1REX0ZVTkNUSU9OXworICBzdGQ6OmZ1bmN0aW9uPFIoQTAsIEExKT4gQXNTdGRGdW5jdGlv
bigpIHsKKyAgICByZXR1cm4gW3RoaXNdKEEwIGEwLCBBMSBhMSkgLT4gUiB7CisgICAgICByZXR1
cm4gdGhpcy0+Q2FsbChhMCwgYTEpOworICAgIH07CisgIH0KKyNlbmRpZiAgLy8gR1RFU1RfSEFT
X1NURF9GVU5DVElPTl8KKworIHByaXZhdGU6CisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FT
U0lHTl8oTW9ja0Z1bmN0aW9uKTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBSLCB0eXBlbmFt
ZSBBMCwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyPgorY2xhc3MgTW9ja0Z1bmN0aW9uPFIoQTAs
IEExLCBBMik+IHsKKyBwdWJsaWM6CisgIE1vY2tGdW5jdGlvbigpIHt9CisKKyAgTU9DS19NRVRI
T0QzX1QoQ2FsbCwgUihBMCwgQTEsIEEyKSk7CisKKyNpZiBHVEVTVF9IQVNfU1REX0ZVTkNUSU9O
XworICBzdGQ6OmZ1bmN0aW9uPFIoQTAsIEExLCBBMik+IEFzU3RkRnVuY3Rpb24oKSB7CisgICAg
cmV0dXJuIFt0aGlzXShBMCBhMCwgQTEgYTEsIEEyIGEyKSAtPiBSIHsKKyAgICAgIHJldHVybiB0
aGlzLT5DYWxsKGEwLCBhMSwgYTIpOworICAgIH07CisgIH0KKyNlbmRpZiAgLy8gR1RFU1RfSEFT
X1NURF9GVU5DVElPTl8KKworIHByaXZhdGU6CisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FT
U0lHTl8oTW9ja0Z1bmN0aW9uKTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBSLCB0eXBlbmFt
ZSBBMCwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMz4KK2NsYXNzIE1vY2tG
dW5jdGlvbjxSKEEwLCBBMSwgQTIsIEEzKT4geworIHB1YmxpYzoKKyAgTW9ja0Z1bmN0aW9uKCkg
e30KKworICBNT0NLX01FVEhPRDRfVChDYWxsLCBSKEEwLCBBMSwgQTIsIEEzKSk7CisKKyNpZiBH
VEVTVF9IQVNfU1REX0ZVTkNUSU9OXworICBzdGQ6OmZ1bmN0aW9uPFIoQTAsIEExLCBBMiwgQTMp
PiBBc1N0ZEZ1bmN0aW9uKCkgeworICAgIHJldHVybiBbdGhpc10oQTAgYTAsIEExIGExLCBBMiBh
MiwgQTMgYTMpIC0+IFIgeworICAgICAgcmV0dXJuIHRoaXMtPkNhbGwoYTAsIGExLCBhMiwgYTMp
OworICAgIH07CisgIH0KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9GVU5DVElPTl8KKworIHBy
aXZhdGU6CisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oTW9ja0Z1bmN0aW9uKTsK
K307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBSLCB0eXBlbmFtZSBBMCwgdHlwZW5hbWUgQTEsIHR5
cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywKKyAgICB0eXBlbmFtZSBBND4KK2NsYXNzIE1vY2tGdW5j
dGlvbjxSKEEwLCBBMSwgQTIsIEEzLCBBNCk+IHsKKyBwdWJsaWM6CisgIE1vY2tGdW5jdGlvbigp
IHt9CisKKyAgTU9DS19NRVRIT0Q1X1QoQ2FsbCwgUihBMCwgQTEsIEEyLCBBMywgQTQpKTsKKwor
I2lmIEdURVNUX0hBU19TVERfRlVOQ1RJT05fCisgIHN0ZDo6ZnVuY3Rpb248UihBMCwgQTEsIEEy
LCBBMywgQTQpPiBBc1N0ZEZ1bmN0aW9uKCkgeworICAgIHJldHVybiBbdGhpc10oQTAgYTAsIEEx
IGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0KSAtPiBSIHsKKyAgICAgIHJldHVybiB0aGlzLT5DYWxs
KGEwLCBhMSwgYTIsIGEzLCBhNCk7CisgICAgfTsKKyAgfQorI2VuZGlmICAvLyBHVEVTVF9IQVNf
U1REX0ZVTkNUSU9OXworCisgcHJpdmF0ZToKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNT
SUdOXyhNb2NrRnVuY3Rpb24pOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1l
IEEwLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLAorICAgIHR5cGVuYW1l
IEE0LCB0eXBlbmFtZSBBNT4KK2NsYXNzIE1vY2tGdW5jdGlvbjxSKEEwLCBBMSwgQTIsIEEzLCBB
NCwgQTUpPiB7CisgcHVibGljOgorICBNb2NrRnVuY3Rpb24oKSB7fQorCisgIE1PQ0tfTUVUSE9E
Nl9UKENhbGwsIFIoQTAsIEExLCBBMiwgQTMsIEE0LCBBNSkpOworCisjaWYgR1RFU1RfSEFTX1NU
RF9GVU5DVElPTl8KKyAgc3RkOjpmdW5jdGlvbjxSKEEwLCBBMSwgQTIsIEEzLCBBNCwgQTUpPiBB
c1N0ZEZ1bmN0aW9uKCkgeworICAgIHJldHVybiBbdGhpc10oQTAgYTAsIEExIGExLCBBMiBhMiwg
QTMgYTMsIEE0IGE0LCBBNSBhNSkgLT4gUiB7CisgICAgICByZXR1cm4gdGhpcy0+Q2FsbChhMCwg
YTEsIGEyLCBhMywgYTQsIGE1KTsKKyAgICB9OworICB9CisjZW5kaWYgIC8vIEdURVNUX0hBU19T
VERfRlVOQ1RJT05fCisKKyBwcml2YXRlOgorICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJ
R05fKE1vY2tGdW5jdGlvbik7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUg
QTAsIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsCisgICAgdHlwZW5hbWUg
QTQsIHR5cGVuYW1lIEE1LCB0eXBlbmFtZSBBNj4KK2NsYXNzIE1vY2tGdW5jdGlvbjxSKEEwLCBB
MSwgQTIsIEEzLCBBNCwgQTUsIEE2KT4geworIHB1YmxpYzoKKyAgTW9ja0Z1bmN0aW9uKCkge30K
KworICBNT0NLX01FVEhPRDdfVChDYWxsLCBSKEEwLCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2KSk7
CisKKyNpZiBHVEVTVF9IQVNfU1REX0ZVTkNUSU9OXworICBzdGQ6OmZ1bmN0aW9uPFIoQTAsIEEx
LCBBMiwgQTMsIEE0LCBBNSwgQTYpPiBBc1N0ZEZ1bmN0aW9uKCkgeworICAgIHJldHVybiBbdGhp
c10oQTAgYTAsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYpIC0+IFIg
eworICAgICAgcmV0dXJuIHRoaXMtPkNhbGwoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpOwor
ICAgIH07CisgIH0KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9GVU5DVElPTl8KKworIHByaXZh
dGU6CisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oTW9ja0Z1bmN0aW9uKTsKK307
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBSLCB0eXBlbmFtZSBBMCwgdHlwZW5hbWUgQTEsIHR5cGVu
YW1lIEEyLCB0eXBlbmFtZSBBMywKKyAgICB0eXBlbmFtZSBBNCwgdHlwZW5hbWUgQTUsIHR5cGVu
YW1lIEE2LCB0eXBlbmFtZSBBNz4KK2NsYXNzIE1vY2tGdW5jdGlvbjxSKEEwLCBBMSwgQTIsIEEz
LCBBNCwgQTUsIEE2LCBBNyk+IHsKKyBwdWJsaWM6CisgIE1vY2tGdW5jdGlvbigpIHt9CisKKyAg
TU9DS19NRVRIT0Q4X1QoQ2FsbCwgUihBMCwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcpKTsK
KworI2lmIEdURVNUX0hBU19TVERfRlVOQ1RJT05fCisgIHN0ZDo6ZnVuY3Rpb248UihBMCwgQTEs
IEEyLCBBMywgQTQsIEE1LCBBNiwgQTcpPiBBc1N0ZEZ1bmN0aW9uKCkgeworICAgIHJldHVybiBb
dGhpc10oQTAgYTAsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3
IGE3KSAtPiBSIHsKKyAgICAgIHJldHVybiB0aGlzLT5DYWxsKGEwLCBhMSwgYTIsIGEzLCBhNCwg
YTUsIGE2LCBhNyk7CisgICAgfTsKKyAgfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX0ZVTkNU
SU9OXworCisgcHJpdmF0ZToKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhNb2Nr
RnVuY3Rpb24pOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEEwLCB0eXBl
bmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLAorICAgIHR5cGVuYW1lIEE0LCB0eXBl
bmFtZSBBNSwgdHlwZW5hbWUgQTYsIHR5cGVuYW1lIEE3LCB0eXBlbmFtZSBBOD4KK2NsYXNzIE1v
Y2tGdW5jdGlvbjxSKEEwLCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgpPiB7CisgcHVi
bGljOgorICBNb2NrRnVuY3Rpb24oKSB7fQorCisgIE1PQ0tfTUVUSE9EOV9UKENhbGwsIFIoQTAs
IEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCkpOworCisjaWYgR1RFU1RfSEFTX1NURF9G
VU5DVElPTl8KKyAgc3RkOjpmdW5jdGlvbjxSKEEwLCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBB
NywgQTgpPiBBc1N0ZEZ1bmN0aW9uKCkgeworICAgIHJldHVybiBbdGhpc10oQTAgYTAsIEExIGEx
LCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3LAorICAgICAgICBBOCBh
OCkgLT4gUiB7CisgICAgICByZXR1cm4gdGhpcy0+Q2FsbChhMCwgYTEsIGEyLCBhMywgYTQsIGE1
LCBhNiwgYTcsIGE4KTsKKyAgICB9OworICB9CisjZW5kaWYgIC8vIEdURVNUX0hBU19TVERfRlVO
Q1RJT05fCisKKyBwcml2YXRlOgorICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKE1v
Y2tGdW5jdGlvbik7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgQTAsIHR5
cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsCisgICAgdHlwZW5hbWUgQTQsIHR5
cGVuYW1lIEE1LCB0eXBlbmFtZSBBNiwgdHlwZW5hbWUgQTcsIHR5cGVuYW1lIEE4LAorICAgIHR5
cGVuYW1lIEE5PgorY2xhc3MgTW9ja0Z1bmN0aW9uPFIoQTAsIEExLCBBMiwgQTMsIEE0LCBBNSwg
QTYsIEE3LCBBOCwgQTkpPiB7CisgcHVibGljOgorICBNb2NrRnVuY3Rpb24oKSB7fQorCisgIE1P
Q0tfTUVUSE9EMTBfVChDYWxsLCBSKEEwLCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgs
IEE5KSk7CisKKyNpZiBHVEVTVF9IQVNfU1REX0ZVTkNUSU9OXworICBzdGQ6OmZ1bmN0aW9uPFIo
QTAsIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgQTkpPiBBc1N0ZEZ1bmN0aW9uKCkg
eworICAgIHJldHVybiBbdGhpc10oQTAgYTAsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBB
NSBhNSwgQTYgYTYsIEE3IGE3LAorICAgICAgICBBOCBhOCwgQTkgYTkpIC0+IFIgeworICAgICAg
cmV0dXJuIHRoaXMtPkNhbGwoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkp
OworICAgIH07CisgIH0KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9GVU5DVElPTl8KKworIHBy
aXZhdGU6CisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oTW9ja0Z1bmN0aW9uKTsK
K307CisKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCisKKyNlbmRpZiAgLy8gR01PQ0tfSU5DTFVE
RV9HTU9DS19HTU9DS19HRU5FUkFURURfRlVOQ1RJT05fTU9DS0VSU19IXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9nbW9jay1nZW5lcmF0ZWQtZnVuY3Rpb24tbW9ja2Vy
cy5oLnB1bXAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2dtb2NrLWdlbmVyYXRlZC1mdW5j
dGlvbi1tb2NrZXJzLmgucHVtcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MTE1MDJkMGNlMDNjM2VkZDk1OWY1MGJk
NTI5Y2Q5ZWMwNjgwOGJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9n
bW9jay9nbW9jay1nZW5lcmF0ZWQtZnVuY3Rpb24tbW9ja2Vycy5oLnB1bXAKQEAgLTAsMCArMSwy
OTEgQEAKKyQkIC0qLSBtb2RlOiBjKys7IC0qLQorJCQgVGhpcyBpcyBhIFB1bXAgc291cmNlIGZp
bGUuICBQbGVhc2UgdXNlIFB1bXAgdG8gY29udmVydCBpdCB0bworJCQgZ21vY2stZ2VuZXJhdGVk
LWZ1bmN0aW9uLW1vY2tlcnMuaC4KKyQkCiskdmFyIG4gPSAxMCAgJCQgVGhlIG1heGltdW0gYXJp
dHkgd2Ugc3VwcG9ydC4KKy8vIENvcHlyaWdodCAyMDA3LCBHb29nbGUgSW5jLgorLy8gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1l
dDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisv
LworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKy8vCisvLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisKKy8vIEdv
b2dsZSBNb2NrIC0gYSBmcmFtZXdvcmsgZm9yIHdyaXRpbmcgQysrIG1vY2sgY2xhc3Nlcy4KKy8v
CisvLyBUaGlzIGZpbGUgaW1wbGVtZW50cyBmdW5jdGlvbiBtb2NrZXJzIG9mIHZhcmlvdXMgYXJp
dGllcy4KKworI2lmbmRlZiBHTU9DS19JTkNMVURFX0dNT0NLX0dNT0NLX0dFTkVSQVRFRF9GVU5D
VElPTl9NT0NLRVJTX0hfCisjZGVmaW5lIEdNT0NLX0lOQ0xVREVfR01PQ0tfR01PQ0tfR0VORVJB
VEVEX0ZVTkNUSU9OX01PQ0tFUlNfSF8KKworI2luY2x1ZGUgImdtb2NrL2dtb2NrLXNwZWMtYnVp
bGRlcnMuaCIKKyNpbmNsdWRlICJnbW9jay9pbnRlcm5hbC9nbW9jay1pbnRlcm5hbC11dGlscy5o
IgorCisjaWYgR1RFU1RfSEFTX1NURF9GVU5DVElPTl8KKyMgaW5jbHVkZSA8ZnVuY3Rpb25hbD4K
KyNlbmRpZgorCituYW1lc3BhY2UgdGVzdGluZyB7CituYW1lc3BhY2UgaW50ZXJuYWwgeworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgRj4KK2NsYXNzIEZ1bmN0aW9uTW9ja2VyQmFzZTsKKworLy8gTm90
ZTogY2xhc3MgRnVuY3Rpb25Nb2NrZXIgcmVhbGx5IGJlbG9uZ3MgdG8gdGhlIDo6dGVzdGluZwor
Ly8gbmFtZXNwYWNlLiAgSG93ZXZlciBpZiB3ZSBkZWZpbmUgaXQgaW4gOjp0ZXN0aW5nLCBNU1ZD
IHdpbGwKKy8vIGNvbXBsYWluIHdoZW4gY2xhc3NlcyBpbiA6OnRlc3Rpbmc6OmludGVybmFsIGRl
Y2xhcmUgaXQgYXMgYQorLy8gZnJpZW5kIGNsYXNzIHRlbXBsYXRlLiAgVG8gd29ya2Fyb3VuZCB0
aGlzIGNvbXBpbGVyIGJ1Zywgd2UgZGVmaW5lCisvLyBGdW5jdGlvbk1vY2tlciBpbiA6OnRlc3Rp
bmc6OmludGVybmFsIGFuZCBpbXBvcnQgaXQgaW50byA6OnRlc3RpbmcuCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgRj4KK2NsYXNzIEZ1bmN0aW9uTW9ja2VyOworCisKKyRyYW5nZSBpIDAuLm4KKyRmb3Ig
aSBbWworJHJhbmdlIGogMS4uaQorJHZhciB0eXBlbmFtZV9BcyA9IFtbJGZvciBqIFtbLCB0eXBl
bmFtZSBBJGpdXV1dCiskdmFyIEFzID0gW1skZm9yIGosIFtbQSRqXV1dXQorJHZhciBhcyA9IFtb
JGZvciBqLCBbW2Ekal1dXV0KKyR2YXIgQWFzID0gW1skZm9yIGosIFtbQSRqIGEkal1dXV0KKyR2
YXIgbXMgPSBbWyRmb3IgaiwgW1ttJGpdXV1dCiskdmFyIG1hdGNoZXJzID0gW1skZm9yIGosIFtb
Y29uc3QgTWF0Y2hlcjxBJGo+JiBtJGpdXV1dCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUiR0eXBlbmFt
ZV9Bcz4KK2NsYXNzIEZ1bmN0aW9uTW9ja2VyPFIoJEFzKT4gOiBwdWJsaWMKKyAgICBpbnRlcm5h
bDo6RnVuY3Rpb25Nb2NrZXJCYXNlPFIoJEFzKT4geworIHB1YmxpYzoKKyAgdHlwZWRlZiBSIEYo
JEFzKTsKKyAgdHlwZWRlZiB0eXBlbmFtZSBpbnRlcm5hbDo6RnVuY3Rpb248Rj46OkFyZ3VtZW50
VHVwbGUgQXJndW1lbnRUdXBsZTsKKworICBNb2NrU3BlYzxGPiYgV2l0aCgkbWF0Y2hlcnMpIHsK
KworJGlmIGkgPj0gMSBbWworICAgIHRoaXMtPmN1cnJlbnRfc3BlYygpLlNldE1hdGNoZXJzKDo6
dGVzdGluZzo6bWFrZV90dXBsZSgkbXMpKTsKKworXV0KKyAgICByZXR1cm4gdGhpcy0+Y3VycmVu
dF9zcGVjKCk7CisgIH0KKworICBSIEludm9rZSgkQWFzKSB7CisgICAgLy8gRXZlbiB0aG91Z2gg
Z2NjIGFuZCBNU1ZDIGRvbid0IGVuZm9yY2UgaXQsICd0aGlzLT4nIGlzIHJlcXVpcmVkCisgICAg
Ly8gYnkgdGhlIEMrKyBzdGFuZGFyZCBbMTQuNi40XSBoZXJlLCBhcyB0aGUgYmFzZSBjbGFzcyB0
eXBlIGlzCisgICAgLy8gZGVwZW5kZW50IG9uIHRoZSB0ZW1wbGF0ZSBhcmd1bWVudCAoYW5kIHRo
dXMgc2hvdWxkbid0IGJlCisgICAgLy8gbG9va2VkIGludG8gd2hlbiByZXNvbHZpbmcgSW52b2tl
V2l0aCkuCisgICAgcmV0dXJuIHRoaXMtPkludm9rZVdpdGgoQXJndW1lbnRUdXBsZSgkYXMpKTsK
KyAgfQorfTsKKworCitdXQorfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCisKKy8vIFRoZSBzdHls
ZSBndWlkZSBwcm9oaWJpdHMgInVzaW5nIiBzdGF0ZW1lbnRzIGluIGEgbmFtZXNwYWNlIHNjb3Bl
CisvLyBpbnNpZGUgYSBoZWFkZXIgZmlsZS4gIEhvd2V2ZXIsIHRoZSBGdW5jdGlvbk1vY2tlciBj
bGFzcyB0ZW1wbGF0ZQorLy8gaXMgbWVhbnQgdG8gYmUgZGVmaW5lZCBpbiB0aGUgOjp0ZXN0aW5n
IG5hbWVzcGFjZS4gIFRoZSBmb2xsb3dpbmcKKy8vIGxpbmUgaXMganVzdCBhIHRyaWNrIGZvciB3
b3JraW5nIGFyb3VuZCBhIGJ1ZyBpbiBNU1ZDIDguMCwgd2hpY2gKKy8vIGNhbm5vdCBoYW5kbGUg
aXQgaWYgd2UgZGVmaW5lIEZ1bmN0aW9uTW9ja2VyIGluIDo6dGVzdGluZy4KK3VzaW5nIGludGVy
bmFsOjpGdW5jdGlvbk1vY2tlcjsKKworLy8gR01PQ0tfUkVTVUxUXyh0biwgRikgZXhwYW5kcyB0
byB0aGUgcmVzdWx0IHR5cGUgb2YgZnVuY3Rpb24gdHlwZSBGLgorLy8gV2UgZGVmaW5lIHRoaXMg
YXMgYSB2YXJpYWRpYyBtYWNybyBpbiBjYXNlIEYgY29udGFpbnMgdW5wcm90ZWN0ZWQKKy8vIGNv
bW1hcyAodGhlIHNhbWUgcmVhc29uIHRoYXQgd2UgdXNlIHZhcmlhZGljIG1hY3JvcyBpbiBvdGhl
ciBwbGFjZXMKKy8vIGluIHRoaXMgZmlsZSkuCisvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAt
IERPTidUIFVTRSBJTiBVU0VSIENPREUhISEKKyNkZWZpbmUgR01PQ0tfUkVTVUxUXyh0biwgLi4u
KSBcCisgICAgdG4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6RnVuY3Rpb248X19WQV9BUkdTX18+OjpS
ZXN1bHQKKworLy8gVGhlIHR5cGUgb2YgYXJndW1lbnQgTiBvZiB0aGUgZ2l2ZW4gZnVuY3Rpb24g
dHlwZS4KKy8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE9OJ1QgVVNFIElOIFVTRVIgQ09E
RSEhIQorI2RlZmluZSBHTU9DS19BUkdfKHRuLCBOLCAuLi4pIFwKKyAgICB0biA6OnRlc3Rpbmc6
OmludGVybmFsOjpGdW5jdGlvbjxfX1ZBX0FSR1NfXz46OkFyZ3VtZW50IyNOCisKKy8vIFRoZSBt
YXRjaGVyIHR5cGUgZm9yIGFyZ3VtZW50IE4gb2YgdGhlIGdpdmVuIGZ1bmN0aW9uIHR5cGUuCisv
LyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPTidUIFVTRSBJTiBVU0VSIENPREUhISEKKyNk
ZWZpbmUgR01PQ0tfTUFUQ0hFUl8odG4sIE4sIC4uLikgXAorICAgIGNvbnN0IDo6dGVzdGluZzo6
TWF0Y2hlcjxHTU9DS19BUkdfKHRuLCBOLCBfX1ZBX0FSR1NfXyk+JgorCisvLyBUaGUgdmFyaWFi
bGUgZm9yIG1vY2tpbmcgdGhlIGdpdmVuIG1ldGhvZC4KKy8vIElOVEVSTkFMIElNUExFTUVOVEFU
SU9OIC0gRE9OJ1QgVVNFIElOIFVTRVIgQ09ERSEhIQorI2RlZmluZSBHTU9DS19NT0NLRVJfKGFy
aXR5LCBjb25zdG5lc3MsIE1ldGhvZCkgXAorICAgIEdURVNUX0NPTkNBVF9UT0tFTl8oZ21vY2sj
I2NvbnN0bmVzcyMjYXJpdHkjI18jI01ldGhvZCMjXywgX19MSU5FX18pCisKKworJGZvciBpIFtb
CiskcmFuZ2UgaiAxLi5pCiskdmFyIGFyZ19hcyA9IFtbJGZvciBqLCBcCisgICAgICBbW0dNT0NL
X0FSR18odG4sICRqLCBfX1ZBX0FSR1NfXykgZ21vY2tfYSRqXV1dXQorJHZhciBhcyA9IFtbJGZv
ciBqLCBbW2dtb2NrX2Ekal1dXV0KKyR2YXIgbWF0Y2hlcl9hcyA9IFtbJGZvciBqLCBcCisgICAg
ICAgICAgICAgICAgICAgICBbW0dNT0NLX01BVENIRVJfKHRuLCAkaiwgX19WQV9BUkdTX18pIGdt
b2NrX2Ekal1dXV0KKy8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE9OJ1QgVVNFIElOIFVT
RVIgQ09ERSEhIQorI2RlZmluZSBHTU9DS19NRVRIT0QkaVtbXV1fKHRuLCBjb25zdG5lc3MsIGN0
LCBNZXRob2QsIC4uLikgXAorICBHTU9DS19SRVNVTFRfKHRuLCBfX1ZBX0FSR1NfXykgY3QgTWV0
aG9kKCBcCisgICAgICAkYXJnX2FzKSBjb25zdG5lc3MgeyBcCisgICAgR1RFU1RfQ09NUElMRV9B
U1NFUlRfKCg6OnRlc3Rpbmc6OnR1cGxlX3NpemU8ICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgIHRuIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPF9fVkFfQVJHU19fPjo6
QXJndW1lbnRUdXBsZT46OnZhbHVlID09ICRpKSwgXAorICAgICAgICB0aGlzX21ldGhvZF9kb2Vz
X25vdF90YWtlXyRpW1tdXV9hcmd1bWVudFtbJGlmIGkgIT0gMSBbW3NdXV1dKTsgXAorICAgIEdN
T0NLX01PQ0tFUl8oJGksIGNvbnN0bmVzcywgTWV0aG9kKS5TZXRPd25lckFuZE5hbWUodGhpcywg
I01ldGhvZCk7IFwKKyAgICByZXR1cm4gR01PQ0tfTU9DS0VSXygkaSwgY29uc3RuZXNzLCBNZXRo
b2QpLkludm9rZSgkYXMpOyBcCisgIH0gXAorICA6OnRlc3Rpbmc6Ok1vY2tTcGVjPF9fVkFfQVJH
U19fPiYgXAorICAgICAgZ21vY2tfIyNNZXRob2QoJG1hdGNoZXJfYXMpIGNvbnN0bmVzcyB7IFwK
KyAgICBHTU9DS19NT0NLRVJfKCRpLCBjb25zdG5lc3MsIE1ldGhvZCkuUmVnaXN0ZXJPd25lcih0
aGlzKTsgXAorICAgIHJldHVybiBHTU9DS19NT0NLRVJfKCRpLCBjb25zdG5lc3MsIE1ldGhvZCku
V2l0aCgkYXMpOyBcCisgIH0gXAorICBtdXRhYmxlIDo6dGVzdGluZzo6RnVuY3Rpb25Nb2NrZXI8
X19WQV9BUkdTX18+IEdNT0NLX01PQ0tFUl8oJGksIGNvbnN0bmVzcywgTWV0aG9kKQorCisKK11d
CiskZm9yIGkgW1sKKyNkZWZpbmUgTU9DS19NRVRIT0QkaShtLCAuLi4pIEdNT0NLX01FVEhPRCRp
W1tdXV8oLCAsICwgbSwgX19WQV9BUkdTX18pCisKK11dCisKKworJGZvciBpIFtbCisjZGVmaW5l
IE1PQ0tfQ09OU1RfTUVUSE9EJGkobSwgLi4uKSBHTU9DS19NRVRIT0QkaVtbXV1fKCwgY29uc3Qs
ICwgbSwgX19WQV9BUkdTX18pCisKK11dCisKKworJGZvciBpIFtbCisjZGVmaW5lIE1PQ0tfTUVU
SE9EJGlbW11dX1QobSwgLi4uKSBHTU9DS19NRVRIT0QkaVtbXV1fKHR5cGVuYW1lLCAsICwgbSwg
X19WQV9BUkdTX18pCisKK11dCisKKworJGZvciBpIFtbCisjZGVmaW5lIE1PQ0tfQ09OU1RfTUVU
SE9EJGlbW11dX1QobSwgLi4uKSBcCisgICAgR01PQ0tfTUVUSE9EJGlbW11dXyh0eXBlbmFtZSwg
Y29uc3QsICwgbSwgX19WQV9BUkdTX18pCisKK11dCisKKworJGZvciBpIFtbCisjZGVmaW5lIE1P
Q0tfTUVUSE9EJGlbW11dX1dJVEhfQ0FMTFRZUEUoY3QsIG0sIC4uLikgXAorICAgIEdNT0NLX01F
VEhPRCRpW1tdXV8oLCAsIGN0LCBtLCBfX1ZBX0FSR1NfXykKKworXV0KKworCiskZm9yIGkgW1sK
KyNkZWZpbmUgTU9DS19DT05TVF9NRVRIT0QkaVtbXV1fV0lUSF9DQUxMVFlQRShjdCwgbSwgLi4u
KSBcCisgICAgR01PQ0tfTUVUSE9EJGlbW11dXygsIGNvbnN0LCBjdCwgbSwgX19WQV9BUkdTX18p
CisKK11dCisKKworJGZvciBpIFtbCisjZGVmaW5lIE1PQ0tfTUVUSE9EJGlbW11dX1RfV0lUSF9D
QUxMVFlQRShjdCwgbSwgLi4uKSBcCisgICAgR01PQ0tfTUVUSE9EJGlbW11dXyh0eXBlbmFtZSwg
LCBjdCwgbSwgX19WQV9BUkdTX18pCisKK11dCisKKworJGZvciBpIFtbCisjZGVmaW5lIE1PQ0tf
Q09OU1RfTUVUSE9EJGlbW11dX1RfV0lUSF9DQUxMVFlQRShjdCwgbSwgLi4uKSBcCisgICAgR01P
Q0tfTUVUSE9EJGlbW11dXyh0eXBlbmFtZSwgY29uc3QsIGN0LCBtLCBfX1ZBX0FSR1NfXykKKwor
XV0KKworLy8gQSBNb2NrRnVuY3Rpb248Rj4gY2xhc3MgaGFzIG9uZSBtb2NrIG1ldGhvZCB3aG9z
ZSB0eXBlIGlzIEYuICBJdCBpcworLy8gdXNlZnVsIHdoZW4geW91IGp1c3Qgd2FudCB5b3VyIHRl
c3QgY29kZSB0byBlbWl0IHNvbWUgbWVzc2FnZXMgYW5kCisvLyBoYXZlIEdvb2dsZSBNb2NrIHZl
cmlmeSB0aGUgcmlnaHQgbWVzc2FnZXMgYXJlIHNlbnQgKGFuZCBwZXJoYXBzIGF0CisvLyB0aGUg
cmlnaHQgdGltZXMpLiAgRm9yIGV4YW1wbGUsIGlmIHlvdSBhcmUgZXhlcmNpc2luZyBjb2RlOgor
Ly8KKy8vICAgRm9vKDEpOworLy8gICBGb28oMik7CisvLyAgIEZvbygzKTsKKy8vCisvLyBhbmQg
d2FudCB0byB2ZXJpZnkgdGhhdCBGb28oMSkgYW5kIEZvbygzKSBib3RoIGludm9rZQorLy8gbW9j
ay5CYXIoImEiKSwgYnV0IEZvbygyKSBkb2Vzbid0IGludm9rZSBhbnl0aGluZywgeW91IGNhbiB3
cml0ZToKKy8vCisvLyBURVNUKEZvb1Rlc3QsIEludm9rZXNCYXJDb3JyZWN0bHkpIHsKKy8vICAg
TXlNb2NrIG1vY2s7CisvLyAgIE1vY2tGdW5jdGlvbjx2b2lkKHN0cmluZyBjaGVja19wb2ludF9u
YW1lKT4gY2hlY2s7CisvLyAgIHsKKy8vICAgICBJblNlcXVlbmNlIHM7CisvLworLy8gICAgIEVY
UEVDVF9DQUxMKG1vY2ssIEJhcigiYSIpKTsKKy8vICAgICBFWFBFQ1RfQ0FMTChjaGVjaywgQ2Fs
bCgiMSIpKTsKKy8vICAgICBFWFBFQ1RfQ0FMTChjaGVjaywgQ2FsbCgiMiIpKTsKKy8vICAgICBF
WFBFQ1RfQ0FMTChtb2NrLCBCYXIoImEiKSk7CisvLyAgIH0KKy8vICAgRm9vKDEpOworLy8gICBj
aGVjay5DYWxsKCIxIik7CisvLyAgIEZvbygyKTsKKy8vICAgY2hlY2suQ2FsbCgiMiIpOworLy8g
ICBGb28oMyk7CisvLyB9CisvLworLy8gVGhlIGV4cGVjdGF0aW9uIHNwZWMgc2F5cyB0aGF0IHRo
ZSBmaXJzdCBCYXIoImEiKSBtdXN0IGhhcHBlbgorLy8gYmVmb3JlIGNoZWNrIHBvaW50ICIxIiwg
dGhlIHNlY29uZCBCYXIoImEiKSBtdXN0IGhhcHBlbiBhZnRlciBjaGVjaworLy8gcG9pbnQgIjIi
LCBhbmQgbm90aGluZyBzaG91bGQgaGFwcGVuIGJldHdlZW4gdGhlIHR3byBjaGVjaworLy8gcG9p
bnRzLiBUaGUgZXhwbGljaXQgY2hlY2sgcG9pbnRzIG1ha2UgaXQgZWFzeSB0byB0ZWxsIHdoaWNo
CisvLyBCYXIoImEiKSBpcyBjYWxsZWQgYnkgd2hpY2ggY2FsbCB0byBGb28oKS4KKy8vCisvLyBN
b2NrRnVuY3Rpb248Rj4gY2FuIGFsc28gYmUgdXNlZCB0byBleGVyY2lzZSBjb2RlIHRoYXQgYWNj
ZXB0cworLy8gc3RkOjpmdW5jdGlvbjxGPiBjYWxsYmFja3MuIFRvIGRvIHNvLCB1c2UgQXNTdGRG
dW5jdGlvbigpIG1ldGhvZAorLy8gdG8gY3JlYXRlIHN0ZDo6ZnVuY3Rpb24gcHJveHkgZm9yd2Fy
ZGluZyB0byBvcmlnaW5hbCBvYmplY3QncyBDYWxsLgorLy8gRXhhbXBsZToKKy8vCisvLyBURVNU
KEZvb1Rlc3QsIFJ1bnNDYWxsYmFja1dpdGhCYXJBcmd1bWVudCkgeworLy8gICBNb2NrRnVuY3Rp
b248aW50KHN0cmluZyk+IGNhbGxiYWNrOworLy8gICBFWFBFQ1RfQ0FMTChjYWxsYmFjaywgQ2Fs
bCgiYmFyIikpLldpbGxPbmNlKFJldHVybigxKSk7CisvLyAgIEZvbyhjYWxsYmFjay5Bc1N0ZEZ1
bmN0aW9uKCkpOworLy8gfQordGVtcGxhdGUgPHR5cGVuYW1lIEY+CitjbGFzcyBNb2NrRnVuY3Rp
b247CisKKworJGZvciBpIFtbCiskcmFuZ2UgaiAwLi5pLTEKKyR2YXIgQXJnVHlwZXMgPSBbWyRm
b3IgaiwgW1tBJGpdXV1dCiskdmFyIEFyZ05hbWVzID0gW1skZm9yIGosIFtbYSRqXV1dXQorJHZh
ciBBcmdEZWNscyA9IFtbJGZvciBqLCBbW0EkaiBhJGpdXV1dCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
UiRmb3IgaiBbWywgdHlwZW5hbWUgQSRqXV0+CitjbGFzcyBNb2NrRnVuY3Rpb248UigkQXJnVHlw
ZXMpPiB7CisgcHVibGljOgorICBNb2NrRnVuY3Rpb24oKSB7fQorCisgIE1PQ0tfTUVUSE9EJGlb
W11dX1QoQ2FsbCwgUigkQXJnVHlwZXMpKTsKKworI2lmIEdURVNUX0hBU19TVERfRlVOQ1RJT05f
CisgIHN0ZDo6ZnVuY3Rpb248UigkQXJnVHlwZXMpPiBBc1N0ZEZ1bmN0aW9uKCkgeworICAgIHJl
dHVybiBbdGhpc10oJEFyZ0RlY2xzKSAtPiBSIHsKKyAgICAgIHJldHVybiB0aGlzLT5DYWxsKCRB
cmdOYW1lcyk7CisgICAgfTsKKyAgfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX0ZVTkNUSU9O
XworCisgcHJpdmF0ZToKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhNb2NrRnVu
Y3Rpb24pOworfTsKKworCitdXQorfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKKworI2VuZGlmICAv
LyBHTU9DS19JTkNMVURFX0dNT0NLX0dNT0NLX0dFTkVSQVRFRF9GVU5DVElPTl9NT0NLRVJTX0hf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2dtb2NrLWdlbmVyYXRlZC1t
YXRjaGVycy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9nbW9jay1nZW5lcmF0ZWQtbWF0
Y2hlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41NzA1NmZkOTFkMjI5MDZiMjIyZTFkYWNhNGI5MmMyZDJmYTVh
YzYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9nbW9jay1n
ZW5lcmF0ZWQtbWF0Y2hlcnMuaApAQCAtMCwwICsxLDIxNzkgQEAKKy8vIFRoaXMgZmlsZSB3YXMg
R0VORVJBVEVEIGJ5IGNvbW1hbmQ6CisvLyAgICAgcHVtcC5weSBnbW9jay1nZW5lcmF0ZWQtbWF0
Y2hlcnMuaC5wdW1wCisvLyBETyBOT1QgRURJVCBCWSBIQU5EISEhCisKKy8vIENvcHlyaWdodCAy
MDA4LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgor
Ly8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
Ky8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8v
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworLy8gR29vZ2xlIE1vY2sgLSBhIGZyYW1l
d29yayBmb3Igd3JpdGluZyBDKysgbW9jayBjbGFzc2VzLgorLy8KKy8vIFRoaXMgZmlsZSBpbXBs
ZW1lbnRzIHNvbWUgY29tbW9ubHkgdXNlZCB2YXJpYWRpYyBtYXRjaGVycy4KKworI2lmbmRlZiBH
TU9DS19JTkNMVURFX0dNT0NLX0dNT0NLX0dFTkVSQVRFRF9NQVRDSEVSU19IXworI2RlZmluZSBH
TU9DS19JTkNMVURFX0dNT0NLX0dNT0NLX0dFTkVSQVRFRF9NQVRDSEVSU19IXworCisjaW5jbHVk
ZSA8aXRlcmF0b3I+CisjaW5jbHVkZSA8c3N0cmVhbT4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5j
bHVkZSA8dmVjdG9yPgorI2luY2x1ZGUgImdtb2NrL2dtb2NrLW1hdGNoZXJzLmgiCisKK25hbWVz
cGFjZSB0ZXN0aW5nIHsKK25hbWVzcGFjZSBpbnRlcm5hbCB7CisKKy8vIFRoZSB0eXBlIG9mIHRo
ZSBpLXRoICgwLWJhc2VkKSBmaWVsZCBvZiBUdXBsZS4KKyNkZWZpbmUgR01PQ0tfRklFTERfVFlQ
RV8oVHVwbGUsIGkpIFwKKyAgICB0eXBlbmFtZSA6OnRlc3Rpbmc6OnR1cGxlX2VsZW1lbnQ8aSwg
VHVwbGU+Ojp0eXBlCisKKy8vIFR1cGxlRmllbGRzPFR1cGxlLCBrMCwgLi4uLCBrbj4gaXMgZm9y
IHNlbGVjdGluZyBmaWVsZHMgZnJvbSBhCisvLyB0dXBsZSBvZiB0eXBlIFR1cGxlLiAgSXQgaGFz
IHR3byBtZW1iZXJzOgorLy8KKy8vICAgdHlwZTogYSB0dXBsZSB0eXBlIHdob3NlIGktdGggZmll
bGQgaXMgdGhlIGtpLXRoIGZpZWxkIG9mIFR1cGxlLgorLy8gICBHZXRTZWxlY3RlZEZpZWxkcyh0
KTogcmV0dXJucyBmaWVsZHMgazAsIC4uLiwgYW5kIGtuIG9mIHQgYXMgYSB0dXBsZS4KKy8vCisv
LyBGb3IgZXhhbXBsZSwgaW4gY2xhc3MgVHVwbGVGaWVsZHM8dHVwbGU8Ym9vbCwgY2hhciwgaW50
PiwgMiwgMD4sIHdlIGhhdmU6CisvLworLy8gICB0eXBlIGlzIHR1cGxlPGludCwgYm9vbD4sIGFu
ZAorLy8gICBHZXRTZWxlY3RlZEZpZWxkcyhtYWtlX3R1cGxlKHRydWUsICdhJywgNDIpKSBpcyAo
NDIsIHRydWUpLgorCit0ZW1wbGF0ZSA8Y2xhc3MgVHVwbGUsIGludCBrMCA9IC0xLCBpbnQgazEg
PSAtMSwgaW50IGsyID0gLTEsIGludCBrMyA9IC0xLAorICAgIGludCBrNCA9IC0xLCBpbnQgazUg
PSAtMSwgaW50IGs2ID0gLTEsIGludCBrNyA9IC0xLCBpbnQgazggPSAtMSwKKyAgICBpbnQgazkg
PSAtMT4KK2NsYXNzIFR1cGxlRmllbGRzOworCisvLyBUaGlzIGdlbmVyaWMgdmVyc2lvbiBpcyB1
c2VkIHdoZW4gdGhlcmUgYXJlIDEwIHNlbGVjdG9ycy4KK3RlbXBsYXRlIDxjbGFzcyBUdXBsZSwg
aW50IGswLCBpbnQgazEsIGludCBrMiwgaW50IGszLCBpbnQgazQsIGludCBrNSwgaW50IGs2LAor
ICAgIGludCBrNywgaW50IGs4LCBpbnQgazk+CitjbGFzcyBUdXBsZUZpZWxkcyB7CisgcHVibGlj
OgorICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8R01PQ0tfRklFTERfVFlQRV8oVHVwbGUsIGsw
KSwKKyAgICAgIEdNT0NLX0ZJRUxEX1RZUEVfKFR1cGxlLCBrMSksIEdNT0NLX0ZJRUxEX1RZUEVf
KFR1cGxlLCBrMiksCisgICAgICBHTU9DS19GSUVMRF9UWVBFXyhUdXBsZSwgazMpLCBHTU9DS19G
SUVMRF9UWVBFXyhUdXBsZSwgazQpLAorICAgICAgR01PQ0tfRklFTERfVFlQRV8oVHVwbGUsIGs1
KSwgR01PQ0tfRklFTERfVFlQRV8oVHVwbGUsIGs2KSwKKyAgICAgIEdNT0NLX0ZJRUxEX1RZUEVf
KFR1cGxlLCBrNyksIEdNT0NLX0ZJRUxEX1RZUEVfKFR1cGxlLCBrOCksCisgICAgICBHTU9DS19G
SUVMRF9UWVBFXyhUdXBsZSwgazkpPiB0eXBlOworICBzdGF0aWMgdHlwZSBHZXRTZWxlY3RlZEZp
ZWxkcyhjb25zdCBUdXBsZSYgdCkgeworICAgIHJldHVybiB0eXBlKGdldDxrMD4odCksIGdldDxr
MT4odCksIGdldDxrMj4odCksIGdldDxrMz4odCksIGdldDxrND4odCksCisgICAgICAgIGdldDxr
NT4odCksIGdldDxrNj4odCksIGdldDxrNz4odCksIGdldDxrOD4odCksIGdldDxrOT4odCkpOwor
ICB9Cit9OworCisvLyBUaGUgZm9sbG93aW5nIHNwZWNpYWxpemF0aW9uIGlzIHVzZWQgZm9yIDAg
fiA5IHNlbGVjdG9ycy4KKwordGVtcGxhdGUgPGNsYXNzIFR1cGxlPgorY2xhc3MgVHVwbGVGaWVs
ZHM8VHVwbGUsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xPiB7CisgcHVi
bGljOgorICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8PiB0eXBlOworICBzdGF0aWMgdHlwZSBH
ZXRTZWxlY3RlZEZpZWxkcyhjb25zdCBUdXBsZSYgLyogdCAqLykgeworICAgIHJldHVybiB0eXBl
KCk7CisgIH0KK307CisKK3RlbXBsYXRlIDxjbGFzcyBUdXBsZSwgaW50IGswPgorY2xhc3MgVHVw
bGVGaWVsZHM8VHVwbGUsIGswLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xPiB7
CisgcHVibGljOgorICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8R01PQ0tfRklFTERfVFlQRV8o
VHVwbGUsIGswKT4gdHlwZTsKKyAgc3RhdGljIHR5cGUgR2V0U2VsZWN0ZWRGaWVsZHMoY29uc3Qg
VHVwbGUmIHQpIHsKKyAgICByZXR1cm4gdHlwZShnZXQ8azA+KHQpKTsKKyAgfQorfTsKKwordGVt
cGxhdGUgPGNsYXNzIFR1cGxlLCBpbnQgazAsIGludCBrMT4KK2NsYXNzIFR1cGxlRmllbGRzPFR1
cGxlLCBrMCwgazEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMT4geworIHB1YmxpYzoK
KyAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPEdNT0NLX0ZJRUxEX1RZUEVfKFR1cGxlLCBrMCks
CisgICAgICBHTU9DS19GSUVMRF9UWVBFXyhUdXBsZSwgazEpPiB0eXBlOworICBzdGF0aWMgdHlw
ZSBHZXRTZWxlY3RlZEZpZWxkcyhjb25zdCBUdXBsZSYgdCkgeworICAgIHJldHVybiB0eXBlKGdl
dDxrMD4odCksIGdldDxrMT4odCkpOworICB9Cit9OworCit0ZW1wbGF0ZSA8Y2xhc3MgVHVwbGUs
IGludCBrMCwgaW50IGsxLCBpbnQgazI+CitjbGFzcyBUdXBsZUZpZWxkczxUdXBsZSwgazAsIGsx
LCBrMiwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTE+IHsKKyBwdWJsaWM6CisgIHR5cGVkZWYg
Ojp0ZXN0aW5nOjp0dXBsZTxHTU9DS19GSUVMRF9UWVBFXyhUdXBsZSwgazApLAorICAgICAgR01P
Q0tfRklFTERfVFlQRV8oVHVwbGUsIGsxKSwgR01PQ0tfRklFTERfVFlQRV8oVHVwbGUsIGsyKT4g
dHlwZTsKKyAgc3RhdGljIHR5cGUgR2V0U2VsZWN0ZWRGaWVsZHMoY29uc3QgVHVwbGUmIHQpIHsK
KyAgICByZXR1cm4gdHlwZShnZXQ8azA+KHQpLCBnZXQ8azE+KHQpLCBnZXQ8azI+KHQpKTsKKyAg
fQorfTsKKwordGVtcGxhdGUgPGNsYXNzIFR1cGxlLCBpbnQgazAsIGludCBrMSwgaW50IGsyLCBp
bnQgazM+CitjbGFzcyBUdXBsZUZpZWxkczxUdXBsZSwgazAsIGsxLCBrMiwgazMsIC0xLCAtMSwg
LTEsIC0xLCAtMSwgLTE+IHsKKyBwdWJsaWM6CisgIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxH
TU9DS19GSUVMRF9UWVBFXyhUdXBsZSwgazApLAorICAgICAgR01PQ0tfRklFTERfVFlQRV8oVHVw
bGUsIGsxKSwgR01PQ0tfRklFTERfVFlQRV8oVHVwbGUsIGsyKSwKKyAgICAgIEdNT0NLX0ZJRUxE
X1RZUEVfKFR1cGxlLCBrMyk+IHR5cGU7CisgIHN0YXRpYyB0eXBlIEdldFNlbGVjdGVkRmllbGRz
KGNvbnN0IFR1cGxlJiB0KSB7CisgICAgcmV0dXJuIHR5cGUoZ2V0PGswPih0KSwgZ2V0PGsxPih0
KSwgZ2V0PGsyPih0KSwgZ2V0PGszPih0KSk7CisgIH0KK307CisKK3RlbXBsYXRlIDxjbGFzcyBU
dXBsZSwgaW50IGswLCBpbnQgazEsIGludCBrMiwgaW50IGszLCBpbnQgazQ+CitjbGFzcyBUdXBs
ZUZpZWxkczxUdXBsZSwgazAsIGsxLCBrMiwgazMsIGs0LCAtMSwgLTEsIC0xLCAtMSwgLTE+IHsK
KyBwdWJsaWM6CisgIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxHTU9DS19GSUVMRF9UWVBFXyhU
dXBsZSwgazApLAorICAgICAgR01PQ0tfRklFTERfVFlQRV8oVHVwbGUsIGsxKSwgR01PQ0tfRklF
TERfVFlQRV8oVHVwbGUsIGsyKSwKKyAgICAgIEdNT0NLX0ZJRUxEX1RZUEVfKFR1cGxlLCBrMyks
IEdNT0NLX0ZJRUxEX1RZUEVfKFR1cGxlLCBrNCk+IHR5cGU7CisgIHN0YXRpYyB0eXBlIEdldFNl
bGVjdGVkRmllbGRzKGNvbnN0IFR1cGxlJiB0KSB7CisgICAgcmV0dXJuIHR5cGUoZ2V0PGswPih0
KSwgZ2V0PGsxPih0KSwgZ2V0PGsyPih0KSwgZ2V0PGszPih0KSwgZ2V0PGs0Pih0KSk7CisgIH0K
K307CisKK3RlbXBsYXRlIDxjbGFzcyBUdXBsZSwgaW50IGswLCBpbnQgazEsIGludCBrMiwgaW50
IGszLCBpbnQgazQsIGludCBrNT4KK2NsYXNzIFR1cGxlRmllbGRzPFR1cGxlLCBrMCwgazEsIGsy
LCBrMywgazQsIGs1LCAtMSwgLTEsIC0xLCAtMT4geworIHB1YmxpYzoKKyAgdHlwZWRlZiA6OnRl
c3Rpbmc6OnR1cGxlPEdNT0NLX0ZJRUxEX1RZUEVfKFR1cGxlLCBrMCksCisgICAgICBHTU9DS19G
SUVMRF9UWVBFXyhUdXBsZSwgazEpLCBHTU9DS19GSUVMRF9UWVBFXyhUdXBsZSwgazIpLAorICAg
ICAgR01PQ0tfRklFTERfVFlQRV8oVHVwbGUsIGszKSwgR01PQ0tfRklFTERfVFlQRV8oVHVwbGUs
IGs0KSwKKyAgICAgIEdNT0NLX0ZJRUxEX1RZUEVfKFR1cGxlLCBrNSk+IHR5cGU7CisgIHN0YXRp
YyB0eXBlIEdldFNlbGVjdGVkRmllbGRzKGNvbnN0IFR1cGxlJiB0KSB7CisgICAgcmV0dXJuIHR5
cGUoZ2V0PGswPih0KSwgZ2V0PGsxPih0KSwgZ2V0PGsyPih0KSwgZ2V0PGszPih0KSwgZ2V0PGs0
Pih0KSwKKyAgICAgICAgZ2V0PGs1Pih0KSk7CisgIH0KK307CisKK3RlbXBsYXRlIDxjbGFzcyBU
dXBsZSwgaW50IGswLCBpbnQgazEsIGludCBrMiwgaW50IGszLCBpbnQgazQsIGludCBrNSwgaW50
IGs2PgorY2xhc3MgVHVwbGVGaWVsZHM8VHVwbGUsIGswLCBrMSwgazIsIGszLCBrNCwgazUsIGs2
LCAtMSwgLTEsIC0xPiB7CisgcHVibGljOgorICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8R01P
Q0tfRklFTERfVFlQRV8oVHVwbGUsIGswKSwKKyAgICAgIEdNT0NLX0ZJRUxEX1RZUEVfKFR1cGxl
LCBrMSksIEdNT0NLX0ZJRUxEX1RZUEVfKFR1cGxlLCBrMiksCisgICAgICBHTU9DS19GSUVMRF9U
WVBFXyhUdXBsZSwgazMpLCBHTU9DS19GSUVMRF9UWVBFXyhUdXBsZSwgazQpLAorICAgICAgR01P
Q0tfRklFTERfVFlQRV8oVHVwbGUsIGs1KSwgR01PQ0tfRklFTERfVFlQRV8oVHVwbGUsIGs2KT4g
dHlwZTsKKyAgc3RhdGljIHR5cGUgR2V0U2VsZWN0ZWRGaWVsZHMoY29uc3QgVHVwbGUmIHQpIHsK
KyAgICByZXR1cm4gdHlwZShnZXQ8azA+KHQpLCBnZXQ8azE+KHQpLCBnZXQ8azI+KHQpLCBnZXQ8
azM+KHQpLCBnZXQ8azQ+KHQpLAorICAgICAgICBnZXQ8azU+KHQpLCBnZXQ8azY+KHQpKTsKKyAg
fQorfTsKKwordGVtcGxhdGUgPGNsYXNzIFR1cGxlLCBpbnQgazAsIGludCBrMSwgaW50IGsyLCBp
bnQgazMsIGludCBrNCwgaW50IGs1LCBpbnQgazYsCisgICAgaW50IGs3PgorY2xhc3MgVHVwbGVG
aWVsZHM8VHVwbGUsIGswLCBrMSwgazIsIGszLCBrNCwgazUsIGs2LCBrNywgLTEsIC0xPiB7Cisg
cHVibGljOgorICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8R01PQ0tfRklFTERfVFlQRV8oVHVw
bGUsIGswKSwKKyAgICAgIEdNT0NLX0ZJRUxEX1RZUEVfKFR1cGxlLCBrMSksIEdNT0NLX0ZJRUxE
X1RZUEVfKFR1cGxlLCBrMiksCisgICAgICBHTU9DS19GSUVMRF9UWVBFXyhUdXBsZSwgazMpLCBH
TU9DS19GSUVMRF9UWVBFXyhUdXBsZSwgazQpLAorICAgICAgR01PQ0tfRklFTERfVFlQRV8oVHVw
bGUsIGs1KSwgR01PQ0tfRklFTERfVFlQRV8oVHVwbGUsIGs2KSwKKyAgICAgIEdNT0NLX0ZJRUxE
X1RZUEVfKFR1cGxlLCBrNyk+IHR5cGU7CisgIHN0YXRpYyB0eXBlIEdldFNlbGVjdGVkRmllbGRz
KGNvbnN0IFR1cGxlJiB0KSB7CisgICAgcmV0dXJuIHR5cGUoZ2V0PGswPih0KSwgZ2V0PGsxPih0
KSwgZ2V0PGsyPih0KSwgZ2V0PGszPih0KSwgZ2V0PGs0Pih0KSwKKyAgICAgICAgZ2V0PGs1Pih0
KSwgZ2V0PGs2Pih0KSwgZ2V0PGs3Pih0KSk7CisgIH0KK307CisKK3RlbXBsYXRlIDxjbGFzcyBU
dXBsZSwgaW50IGswLCBpbnQgazEsIGludCBrMiwgaW50IGszLCBpbnQgazQsIGludCBrNSwgaW50
IGs2LAorICAgIGludCBrNywgaW50IGs4PgorY2xhc3MgVHVwbGVGaWVsZHM8VHVwbGUsIGswLCBr
MSwgazIsIGszLCBrNCwgazUsIGs2LCBrNywgazgsIC0xPiB7CisgcHVibGljOgorICB0eXBlZGVm
IDo6dGVzdGluZzo6dHVwbGU8R01PQ0tfRklFTERfVFlQRV8oVHVwbGUsIGswKSwKKyAgICAgIEdN
T0NLX0ZJRUxEX1RZUEVfKFR1cGxlLCBrMSksIEdNT0NLX0ZJRUxEX1RZUEVfKFR1cGxlLCBrMiks
CisgICAgICBHTU9DS19GSUVMRF9UWVBFXyhUdXBsZSwgazMpLCBHTU9DS19GSUVMRF9UWVBFXyhU
dXBsZSwgazQpLAorICAgICAgR01PQ0tfRklFTERfVFlQRV8oVHVwbGUsIGs1KSwgR01PQ0tfRklF
TERfVFlQRV8oVHVwbGUsIGs2KSwKKyAgICAgIEdNT0NLX0ZJRUxEX1RZUEVfKFR1cGxlLCBrNyks
IEdNT0NLX0ZJRUxEX1RZUEVfKFR1cGxlLCBrOCk+IHR5cGU7CisgIHN0YXRpYyB0eXBlIEdldFNl
bGVjdGVkRmllbGRzKGNvbnN0IFR1cGxlJiB0KSB7CisgICAgcmV0dXJuIHR5cGUoZ2V0PGswPih0
KSwgZ2V0PGsxPih0KSwgZ2V0PGsyPih0KSwgZ2V0PGszPih0KSwgZ2V0PGs0Pih0KSwKKyAgICAg
ICAgZ2V0PGs1Pih0KSwgZ2V0PGs2Pih0KSwgZ2V0PGs3Pih0KSwgZ2V0PGs4Pih0KSk7CisgIH0K
K307CisKKyN1bmRlZiBHTU9DS19GSUVMRF9UWVBFXworCisvLyBJbXBsZW1lbnRzIHRoZSBBcmdz
KCkgbWF0Y2hlci4KK3RlbXBsYXRlIDxjbGFzcyBBcmdzVHVwbGUsIGludCBrMCA9IC0xLCBpbnQg
azEgPSAtMSwgaW50IGsyID0gLTEsIGludCBrMyA9IC0xLAorICAgIGludCBrNCA9IC0xLCBpbnQg
azUgPSAtMSwgaW50IGs2ID0gLTEsIGludCBrNyA9IC0xLCBpbnQgazggPSAtMSwKKyAgICBpbnQg
azkgPSAtMT4KK2NsYXNzIEFyZ3NNYXRjaGVySW1wbCA6IHB1YmxpYyBNYXRjaGVySW50ZXJmYWNl
PEFyZ3NUdXBsZT4geworIHB1YmxpYzoKKyAgLy8gQXJnc1R1cGxlIG1heSBoYXZlIHRvcC1sZXZl
bCBjb25zdCBvciByZWZlcmVuY2UgbW9kaWZpZXJzLgorICB0eXBlZGVmIEdURVNUX1JFTU9WRV9S
RUZFUkVOQ0VfQU5EX0NPTlNUXyhBcmdzVHVwbGUpIFJhd0FyZ3NUdXBsZTsKKyAgdHlwZWRlZiB0
eXBlbmFtZSBpbnRlcm5hbDo6VHVwbGVGaWVsZHM8UmF3QXJnc1R1cGxlLCBrMCwgazEsIGsyLCBr
MywgazQsIGs1LAorICAgICAgazYsIGs3LCBrOCwgazk+Ojp0eXBlIFNlbGVjdGVkQXJnczsKKyAg
dHlwZWRlZiBNYXRjaGVyPGNvbnN0IFNlbGVjdGVkQXJncyY+IE1vbm9tb3JwaGljSW5uZXJNYXRj
aGVyOworCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBJbm5lck1hdGNoZXI+CisgIGV4cGxpY2l0IEFy
Z3NNYXRjaGVySW1wbChjb25zdCBJbm5lck1hdGNoZXImIGlubmVyX21hdGNoZXIpCisgICAgICA6
IGlubmVyX21hdGNoZXJfKFNhZmVNYXRjaGVyQ2FzdDxjb25zdCBTZWxlY3RlZEFyZ3MmPihpbm5l
cl9tYXRjaGVyKSkge30KKworICB2aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWluKEFyZ3NUdXBs
ZSBhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoUmVzdWx0TGlzdGVu
ZXIqIGxpc3RlbmVyKSBjb25zdCB7CisgICAgY29uc3QgU2VsZWN0ZWRBcmdzJiBzZWxlY3RlZF9h
cmdzID0gR2V0U2VsZWN0ZWRBcmdzKGFyZ3MpOworICAgIGlmICghbGlzdGVuZXItPklzSW50ZXJl
c3RlZCgpKQorICAgICAgcmV0dXJuIGlubmVyX21hdGNoZXJfLk1hdGNoZXMoc2VsZWN0ZWRfYXJn
cyk7CisKKyAgICBQcmludEluZGljZXMobGlzdGVuZXItPnN0cmVhbSgpKTsKKyAgICAqbGlzdGVu
ZXIgPDwgImFyZSAiIDw8IFByaW50VG9TdHJpbmcoc2VsZWN0ZWRfYXJncyk7CisKKyAgICBTdHJp
bmdNYXRjaFJlc3VsdExpc3RlbmVyIGlubmVyX2xpc3RlbmVyOworICAgIGNvbnN0IGJvb2wgbWF0
Y2ggPSBpbm5lcl9tYXRjaGVyXy5NYXRjaEFuZEV4cGxhaW4oc2VsZWN0ZWRfYXJncywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbm5lcl9s
aXN0ZW5lcik7CisgICAgUHJpbnRJZk5vdEVtcHR5KGlubmVyX2xpc3RlbmVyLnN0cigpLCBsaXN0
ZW5lci0+c3RyZWFtKCkpOworICAgIHJldHVybiBtYXRjaDsKKyAgfQorCisgIHZpcnR1YWwgdm9p
ZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgeworICAgICpvcyA8PCAiYXJl
IGEgdHVwbGUgIjsKKyAgICBQcmludEluZGljZXMob3MpOworICAgIGlubmVyX21hdGNoZXJfLkRl
c2NyaWJlVG8ob3MpOworICB9CisKKyAgdmlydHVhbCB2b2lkIERlc2NyaWJlTmVnYXRpb25Ubyg6
OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKKyAgICAqb3MgPDwgImFyZSBhIHR1cGxlICI7Cisg
ICAgUHJpbnRJbmRpY2VzKG9zKTsKKyAgICBpbm5lcl9tYXRjaGVyXy5EZXNjcmliZU5lZ2F0aW9u
VG8ob3MpOworICB9CisKKyBwcml2YXRlOgorICBzdGF0aWMgU2VsZWN0ZWRBcmdzIEdldFNlbGVj
dGVkQXJncyhBcmdzVHVwbGUgYXJncykgeworICAgIHJldHVybiBUdXBsZUZpZWxkczxSYXdBcmdz
VHVwbGUsIGswLCBrMSwgazIsIGszLCBrNCwgazUsIGs2LCBrNywgazgsCisgICAgICAgIGs5Pjo6
R2V0U2VsZWN0ZWRGaWVsZHMoYXJncyk7CisgIH0KKworICAvLyBQcmludHMgdGhlIGluZGljZXMg
b2YgdGhlIHNlbGVjdGVkIGZpZWxkcy4KKyAgc3RhdGljIHZvaWQgUHJpbnRJbmRpY2VzKDo6c3Rk
Ojpvc3RyZWFtKiBvcykgeworICAgICpvcyA8PCAid2hvc2UgZmllbGRzICgiOworICAgIGNvbnN0
IGludCBpbmRpY2VzWzEwXSA9IHsgazAsIGsxLCBrMiwgazMsIGs0LCBrNSwgazYsIGs3LCBrOCwg
azkgfTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDEwOyBpKyspIHsKKyAgICAgIGlmIChpbmRp
Y2VzW2ldIDwgMCkKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGlmIChpID49IDEpCisgICAgICAg
ICpvcyA8PCAiLCAiOworCisgICAgICAqb3MgPDwgIiMiIDw8IGluZGljZXNbaV07CisgICAgfQor
ICAgICpvcyA8PCAiKSAiOworICB9CisKKyAgY29uc3QgTW9ub21vcnBoaWNJbm5lck1hdGNoZXIg
aW5uZXJfbWF0Y2hlcl87CisKKyAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhBcmdzTWF0Y2hlcklt
cGwpOworfTsKKwordGVtcGxhdGUgPGNsYXNzIElubmVyTWF0Y2hlciwgaW50IGswID0gLTEsIGlu
dCBrMSA9IC0xLCBpbnQgazIgPSAtMSwKKyAgICBpbnQgazMgPSAtMSwgaW50IGs0ID0gLTEsIGlu
dCBrNSA9IC0xLCBpbnQgazYgPSAtMSwgaW50IGs3ID0gLTEsCisgICAgaW50IGs4ID0gLTEsIGlu
dCBrOSA9IC0xPgorY2xhc3MgQXJnc01hdGNoZXIgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgQXJn
c01hdGNoZXIoY29uc3QgSW5uZXJNYXRjaGVyJiBpbm5lcl9tYXRjaGVyKQorICAgICAgOiBpbm5l
cl9tYXRjaGVyXyhpbm5lcl9tYXRjaGVyKSB7fQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBBcmdz
VHVwbGU+CisgIG9wZXJhdG9yIE1hdGNoZXI8QXJnc1R1cGxlPigpIGNvbnN0IHsKKyAgICByZXR1
cm4gTWFrZU1hdGNoZXIobmV3IEFyZ3NNYXRjaGVySW1wbDxBcmdzVHVwbGUsIGswLCBrMSwgazIs
IGszLCBrNCwgazUsCisgICAgICAgIGs2LCBrNywgazgsIGs5Pihpbm5lcl9tYXRjaGVyXykpOwor
ICB9CisKKyBwcml2YXRlOgorICBjb25zdCBJbm5lck1hdGNoZXIgaW5uZXJfbWF0Y2hlcl87CisK
KyAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhBcmdzTWF0Y2hlcik7Cit9OworCisvLyBBIHNldCBv
ZiBtZXRhZnVuY3Rpb25zIGZvciBjb21wdXRpbmcgdGhlIHJlc3VsdCB0eXBlIG9mIEFsbE9mLgor
Ly8gQWxsT2YobTEsIC4uLiwgbU4pIHJldHVybnMKKy8vIEFsbE9mUmVzdWx0TjxkZWNsdHlwZSht
MSksIC4uLiwgZGVjbHR5cGUobU4pPjo6dHlwZS4KKworLy8gQWx0aG91Z2ggQWxsT2YgaXNuJ3Qg
ZGVmaW5lZCBmb3Igb25lIGFyZ3VtZW50LCBBbGxPZlJlc3VsdDEgaXMgZGVmaW5lZAorLy8gdG8g
c2ltcGxpZnkgdGhlIGltcGxlbWVudGF0aW9uLgordGVtcGxhdGUgPHR5cGVuYW1lIE0xPgorc3Ry
dWN0IEFsbE9mUmVzdWx0MSB7CisgIHR5cGVkZWYgTTEgdHlwZTsKK307CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBNMSwgdHlwZW5hbWUgTTI+CitzdHJ1Y3QgQWxsT2ZSZXN1bHQyIHsKKyAgdHlwZWRl
ZiBCb3RoT2ZNYXRjaGVyPAorICAgICAgdHlwZW5hbWUgQWxsT2ZSZXN1bHQxPE0xPjo6dHlwZSwK
KyAgICAgIHR5cGVuYW1lIEFsbE9mUmVzdWx0MTxNMj46OnR5cGUKKyAgPiB0eXBlOworfTsKKwor
dGVtcGxhdGUgPHR5cGVuYW1lIE0xLCB0eXBlbmFtZSBNMiwgdHlwZW5hbWUgTTM+CitzdHJ1Y3Qg
QWxsT2ZSZXN1bHQzIHsKKyAgdHlwZWRlZiBCb3RoT2ZNYXRjaGVyPAorICAgICAgdHlwZW5hbWUg
QWxsT2ZSZXN1bHQxPE0xPjo6dHlwZSwKKyAgICAgIHR5cGVuYW1lIEFsbE9mUmVzdWx0MjxNMiwg
TTM+Ojp0eXBlCisgID4gdHlwZTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBNMSwgdHlwZW5h
bWUgTTIsIHR5cGVuYW1lIE0zLCB0eXBlbmFtZSBNND4KK3N0cnVjdCBBbGxPZlJlc3VsdDQgewor
ICB0eXBlZGVmIEJvdGhPZk1hdGNoZXI8CisgICAgICB0eXBlbmFtZSBBbGxPZlJlc3VsdDI8TTEs
IE0yPjo6dHlwZSwKKyAgICAgIHR5cGVuYW1lIEFsbE9mUmVzdWx0MjxNMywgTTQ+Ojp0eXBlCisg
ID4gdHlwZTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBNMSwgdHlwZW5hbWUgTTIsIHR5cGVu
YW1lIE0zLCB0eXBlbmFtZSBNNCwgdHlwZW5hbWUgTTU+CitzdHJ1Y3QgQWxsT2ZSZXN1bHQ1IHsK
KyAgdHlwZWRlZiBCb3RoT2ZNYXRjaGVyPAorICAgICAgdHlwZW5hbWUgQWxsT2ZSZXN1bHQyPE0x
LCBNMj46OnR5cGUsCisgICAgICB0eXBlbmFtZSBBbGxPZlJlc3VsdDM8TTMsIE00LCBNNT46OnR5
cGUKKyAgPiB0eXBlOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIE0xLCB0eXBlbmFtZSBNMiwg
dHlwZW5hbWUgTTMsIHR5cGVuYW1lIE00LCB0eXBlbmFtZSBNNSwKKyAgICB0eXBlbmFtZSBNNj4K
K3N0cnVjdCBBbGxPZlJlc3VsdDYgeworICB0eXBlZGVmIEJvdGhPZk1hdGNoZXI8CisgICAgICB0
eXBlbmFtZSBBbGxPZlJlc3VsdDM8TTEsIE0yLCBNMz46OnR5cGUsCisgICAgICB0eXBlbmFtZSBB
bGxPZlJlc3VsdDM8TTQsIE01LCBNNj46OnR5cGUKKyAgPiB0eXBlOworfTsKKwordGVtcGxhdGUg
PHR5cGVuYW1lIE0xLCB0eXBlbmFtZSBNMiwgdHlwZW5hbWUgTTMsIHR5cGVuYW1lIE00LCB0eXBl
bmFtZSBNNSwKKyAgICB0eXBlbmFtZSBNNiwgdHlwZW5hbWUgTTc+CitzdHJ1Y3QgQWxsT2ZSZXN1
bHQ3IHsKKyAgdHlwZWRlZiBCb3RoT2ZNYXRjaGVyPAorICAgICAgdHlwZW5hbWUgQWxsT2ZSZXN1
bHQzPE0xLCBNMiwgTTM+Ojp0eXBlLAorICAgICAgdHlwZW5hbWUgQWxsT2ZSZXN1bHQ0PE00LCBN
NSwgTTYsIE03Pjo6dHlwZQorICA+IHR5cGU7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTTEs
IHR5cGVuYW1lIE0yLCB0eXBlbmFtZSBNMywgdHlwZW5hbWUgTTQsIHR5cGVuYW1lIE01LAorICAg
IHR5cGVuYW1lIE02LCB0eXBlbmFtZSBNNywgdHlwZW5hbWUgTTg+CitzdHJ1Y3QgQWxsT2ZSZXN1
bHQ4IHsKKyAgdHlwZWRlZiBCb3RoT2ZNYXRjaGVyPAorICAgICAgdHlwZW5hbWUgQWxsT2ZSZXN1
bHQ0PE0xLCBNMiwgTTMsIE00Pjo6dHlwZSwKKyAgICAgIHR5cGVuYW1lIEFsbE9mUmVzdWx0NDxN
NSwgTTYsIE03LCBNOD46OnR5cGUKKyAgPiB0eXBlOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1l
IE0xLCB0eXBlbmFtZSBNMiwgdHlwZW5hbWUgTTMsIHR5cGVuYW1lIE00LCB0eXBlbmFtZSBNNSwK
KyAgICB0eXBlbmFtZSBNNiwgdHlwZW5hbWUgTTcsIHR5cGVuYW1lIE04LCB0eXBlbmFtZSBNOT4K
K3N0cnVjdCBBbGxPZlJlc3VsdDkgeworICB0eXBlZGVmIEJvdGhPZk1hdGNoZXI8CisgICAgICB0
eXBlbmFtZSBBbGxPZlJlc3VsdDQ8TTEsIE0yLCBNMywgTTQ+Ojp0eXBlLAorICAgICAgdHlwZW5h
bWUgQWxsT2ZSZXN1bHQ1PE01LCBNNiwgTTcsIE04LCBNOT46OnR5cGUKKyAgPiB0eXBlOworfTsK
KwordGVtcGxhdGUgPHR5cGVuYW1lIE0xLCB0eXBlbmFtZSBNMiwgdHlwZW5hbWUgTTMsIHR5cGVu
YW1lIE00LCB0eXBlbmFtZSBNNSwKKyAgICB0eXBlbmFtZSBNNiwgdHlwZW5hbWUgTTcsIHR5cGVu
YW1lIE04LCB0eXBlbmFtZSBNOSwgdHlwZW5hbWUgTTEwPgorc3RydWN0IEFsbE9mUmVzdWx0MTAg
eworICB0eXBlZGVmIEJvdGhPZk1hdGNoZXI8CisgICAgICB0eXBlbmFtZSBBbGxPZlJlc3VsdDU8
TTEsIE0yLCBNMywgTTQsIE01Pjo6dHlwZSwKKyAgICAgIHR5cGVuYW1lIEFsbE9mUmVzdWx0NTxN
NiwgTTcsIE04LCBNOSwgTTEwPjo6dHlwZQorICA+IHR5cGU7Cit9OworCisvLyBBIHNldCBvZiBt
ZXRhZnVuY3Rpb25zIGZvciBjb21wdXRpbmcgdGhlIHJlc3VsdCB0eXBlIG9mIEFueU9mLgorLy8g
QW55T2YobTEsIC4uLiwgbU4pIHJldHVybnMKKy8vIEFueU9mUmVzdWx0TjxkZWNsdHlwZShtMSks
IC4uLiwgZGVjbHR5cGUobU4pPjo6dHlwZS4KKworLy8gQWx0aG91Z2ggQW55T2YgaXNuJ3QgZGVm
aW5lZCBmb3Igb25lIGFyZ3VtZW50LCBBbnlPZlJlc3VsdDEgaXMgZGVmaW5lZAorLy8gdG8gc2lt
cGxpZnkgdGhlIGltcGxlbWVudGF0aW9uLgordGVtcGxhdGUgPHR5cGVuYW1lIE0xPgorc3RydWN0
IEFueU9mUmVzdWx0MSB7CisgIHR5cGVkZWYgTTEgdHlwZTsKK307CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBNMSwgdHlwZW5hbWUgTTI+CitzdHJ1Y3QgQW55T2ZSZXN1bHQyIHsKKyAgdHlwZWRlZiBF
aXRoZXJPZk1hdGNoZXI8CisgICAgICB0eXBlbmFtZSBBbnlPZlJlc3VsdDE8TTE+Ojp0eXBlLAor
ICAgICAgdHlwZW5hbWUgQW55T2ZSZXN1bHQxPE0yPjo6dHlwZQorICA+IHR5cGU7Cit9OworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgTTEsIHR5cGVuYW1lIE0yLCB0eXBlbmFtZSBNMz4KK3N0cnVjdCBB
bnlPZlJlc3VsdDMgeworICB0eXBlZGVmIEVpdGhlck9mTWF0Y2hlcjwKKyAgICAgIHR5cGVuYW1l
IEFueU9mUmVzdWx0MTxNMT46OnR5cGUsCisgICAgICB0eXBlbmFtZSBBbnlPZlJlc3VsdDI8TTIs
IE0zPjo6dHlwZQorICA+IHR5cGU7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTTEsIHR5cGVu
YW1lIE0yLCB0eXBlbmFtZSBNMywgdHlwZW5hbWUgTTQ+CitzdHJ1Y3QgQW55T2ZSZXN1bHQ0IHsK
KyAgdHlwZWRlZiBFaXRoZXJPZk1hdGNoZXI8CisgICAgICB0eXBlbmFtZSBBbnlPZlJlc3VsdDI8
TTEsIE0yPjo6dHlwZSwKKyAgICAgIHR5cGVuYW1lIEFueU9mUmVzdWx0MjxNMywgTTQ+Ojp0eXBl
CisgID4gdHlwZTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBNMSwgdHlwZW5hbWUgTTIsIHR5
cGVuYW1lIE0zLCB0eXBlbmFtZSBNNCwgdHlwZW5hbWUgTTU+CitzdHJ1Y3QgQW55T2ZSZXN1bHQ1
IHsKKyAgdHlwZWRlZiBFaXRoZXJPZk1hdGNoZXI8CisgICAgICB0eXBlbmFtZSBBbnlPZlJlc3Vs
dDI8TTEsIE0yPjo6dHlwZSwKKyAgICAgIHR5cGVuYW1lIEFueU9mUmVzdWx0MzxNMywgTTQsIE01
Pjo6dHlwZQorICA+IHR5cGU7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTTEsIHR5cGVuYW1l
IE0yLCB0eXBlbmFtZSBNMywgdHlwZW5hbWUgTTQsIHR5cGVuYW1lIE01LAorICAgIHR5cGVuYW1l
IE02Pgorc3RydWN0IEFueU9mUmVzdWx0NiB7CisgIHR5cGVkZWYgRWl0aGVyT2ZNYXRjaGVyPAor
ICAgICAgdHlwZW5hbWUgQW55T2ZSZXN1bHQzPE0xLCBNMiwgTTM+Ojp0eXBlLAorICAgICAgdHlw
ZW5hbWUgQW55T2ZSZXN1bHQzPE00LCBNNSwgTTY+Ojp0eXBlCisgID4gdHlwZTsKK307CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBNMSwgdHlwZW5hbWUgTTIsIHR5cGVuYW1lIE0zLCB0eXBlbmFtZSBN
NCwgdHlwZW5hbWUgTTUsCisgICAgdHlwZW5hbWUgTTYsIHR5cGVuYW1lIE03Pgorc3RydWN0IEFu
eU9mUmVzdWx0NyB7CisgIHR5cGVkZWYgRWl0aGVyT2ZNYXRjaGVyPAorICAgICAgdHlwZW5hbWUg
QW55T2ZSZXN1bHQzPE0xLCBNMiwgTTM+Ojp0eXBlLAorICAgICAgdHlwZW5hbWUgQW55T2ZSZXN1
bHQ0PE00LCBNNSwgTTYsIE03Pjo6dHlwZQorICA+IHR5cGU7Cit9OworCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgTTEsIHR5cGVuYW1lIE0yLCB0eXBlbmFtZSBNMywgdHlwZW5hbWUgTTQsIHR5cGVuYW1l
IE01LAorICAgIHR5cGVuYW1lIE02LCB0eXBlbmFtZSBNNywgdHlwZW5hbWUgTTg+CitzdHJ1Y3Qg
QW55T2ZSZXN1bHQ4IHsKKyAgdHlwZWRlZiBFaXRoZXJPZk1hdGNoZXI8CisgICAgICB0eXBlbmFt
ZSBBbnlPZlJlc3VsdDQ8TTEsIE0yLCBNMywgTTQ+Ojp0eXBlLAorICAgICAgdHlwZW5hbWUgQW55
T2ZSZXN1bHQ0PE01LCBNNiwgTTcsIE04Pjo6dHlwZQorICA+IHR5cGU7Cit9OworCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgTTEsIHR5cGVuYW1lIE0yLCB0eXBlbmFtZSBNMywgdHlwZW5hbWUgTTQsIHR5
cGVuYW1lIE01LAorICAgIHR5cGVuYW1lIE02LCB0eXBlbmFtZSBNNywgdHlwZW5hbWUgTTgsIHR5
cGVuYW1lIE05Pgorc3RydWN0IEFueU9mUmVzdWx0OSB7CisgIHR5cGVkZWYgRWl0aGVyT2ZNYXRj
aGVyPAorICAgICAgdHlwZW5hbWUgQW55T2ZSZXN1bHQ0PE0xLCBNMiwgTTMsIE00Pjo6dHlwZSwK
KyAgICAgIHR5cGVuYW1lIEFueU9mUmVzdWx0NTxNNSwgTTYsIE03LCBNOCwgTTk+Ojp0eXBlCisg
ID4gdHlwZTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBNMSwgdHlwZW5hbWUgTTIsIHR5cGVu
YW1lIE0zLCB0eXBlbmFtZSBNNCwgdHlwZW5hbWUgTTUsCisgICAgdHlwZW5hbWUgTTYsIHR5cGVu
YW1lIE03LCB0eXBlbmFtZSBNOCwgdHlwZW5hbWUgTTksIHR5cGVuYW1lIE0xMD4KK3N0cnVjdCBB
bnlPZlJlc3VsdDEwIHsKKyAgdHlwZWRlZiBFaXRoZXJPZk1hdGNoZXI8CisgICAgICB0eXBlbmFt
ZSBBbnlPZlJlc3VsdDU8TTEsIE0yLCBNMywgTTQsIE01Pjo6dHlwZSwKKyAgICAgIHR5cGVuYW1l
IEFueU9mUmVzdWx0NTxNNiwgTTcsIE04LCBNOSwgTTEwPjo6dHlwZQorICA+IHR5cGU7Cit9Owor
Cit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKKworLy8gQXJnczxOMSwgTjIsIC4uLiwgTms+KGFf
bWF0Y2hlcikgbWF0Y2hlcyBhIHR1cGxlIGlmIHRoZSBzZWxlY3RlZAorLy8gZmllbGRzIG9mIGl0
IG1hdGNoZXMgYV9tYXRjaGVyLiAgQysrIGRvZXNuJ3Qgc3VwcG9ydCBkZWZhdWx0CisvLyBhcmd1
bWVudHMgZm9yIGZ1bmN0aW9uIHRlbXBsYXRlcywgc28gd2UgaGF2ZSB0byBvdmVybG9hZCBpdC4K
K3RlbXBsYXRlIDx0eXBlbmFtZSBJbm5lck1hdGNoZXI+CitpbmxpbmUgaW50ZXJuYWw6OkFyZ3NN
YXRjaGVyPElubmVyTWF0Y2hlcj4KK0FyZ3MoY29uc3QgSW5uZXJNYXRjaGVyJiBtYXRjaGVyKSB7
CisgIHJldHVybiBpbnRlcm5hbDo6QXJnc01hdGNoZXI8SW5uZXJNYXRjaGVyPihtYXRjaGVyKTsK
K30KKwordGVtcGxhdGUgPGludCBrMSwgdHlwZW5hbWUgSW5uZXJNYXRjaGVyPgoraW5saW5lIGlu
dGVybmFsOjpBcmdzTWF0Y2hlcjxJbm5lck1hdGNoZXIsIGsxPgorQXJncyhjb25zdCBJbm5lck1h
dGNoZXImIG1hdGNoZXIpIHsKKyAgcmV0dXJuIGludGVybmFsOjpBcmdzTWF0Y2hlcjxJbm5lck1h
dGNoZXIsIGsxPihtYXRjaGVyKTsKK30KKwordGVtcGxhdGUgPGludCBrMSwgaW50IGsyLCB0eXBl
bmFtZSBJbm5lck1hdGNoZXI+CitpbmxpbmUgaW50ZXJuYWw6OkFyZ3NNYXRjaGVyPElubmVyTWF0
Y2hlciwgazEsIGsyPgorQXJncyhjb25zdCBJbm5lck1hdGNoZXImIG1hdGNoZXIpIHsKKyAgcmV0
dXJuIGludGVybmFsOjpBcmdzTWF0Y2hlcjxJbm5lck1hdGNoZXIsIGsxLCBrMj4obWF0Y2hlcik7
Cit9CisKK3RlbXBsYXRlIDxpbnQgazEsIGludCBrMiwgaW50IGszLCB0eXBlbmFtZSBJbm5lck1h
dGNoZXI+CitpbmxpbmUgaW50ZXJuYWw6OkFyZ3NNYXRjaGVyPElubmVyTWF0Y2hlciwgazEsIGsy
LCBrMz4KK0FyZ3MoY29uc3QgSW5uZXJNYXRjaGVyJiBtYXRjaGVyKSB7CisgIHJldHVybiBpbnRl
cm5hbDo6QXJnc01hdGNoZXI8SW5uZXJNYXRjaGVyLCBrMSwgazIsIGszPihtYXRjaGVyKTsKK30K
KwordGVtcGxhdGUgPGludCBrMSwgaW50IGsyLCBpbnQgazMsIGludCBrNCwgdHlwZW5hbWUgSW5u
ZXJNYXRjaGVyPgoraW5saW5lIGludGVybmFsOjpBcmdzTWF0Y2hlcjxJbm5lck1hdGNoZXIsIGsx
LCBrMiwgazMsIGs0PgorQXJncyhjb25zdCBJbm5lck1hdGNoZXImIG1hdGNoZXIpIHsKKyAgcmV0
dXJuIGludGVybmFsOjpBcmdzTWF0Y2hlcjxJbm5lck1hdGNoZXIsIGsxLCBrMiwgazMsIGs0Piht
YXRjaGVyKTsKK30KKwordGVtcGxhdGUgPGludCBrMSwgaW50IGsyLCBpbnQgazMsIGludCBrNCwg
aW50IGs1LCB0eXBlbmFtZSBJbm5lck1hdGNoZXI+CitpbmxpbmUgaW50ZXJuYWw6OkFyZ3NNYXRj
aGVyPElubmVyTWF0Y2hlciwgazEsIGsyLCBrMywgazQsIGs1PgorQXJncyhjb25zdCBJbm5lck1h
dGNoZXImIG1hdGNoZXIpIHsKKyAgcmV0dXJuIGludGVybmFsOjpBcmdzTWF0Y2hlcjxJbm5lck1h
dGNoZXIsIGsxLCBrMiwgazMsIGs0LCBrNT4obWF0Y2hlcik7Cit9CisKK3RlbXBsYXRlIDxpbnQg
azEsIGludCBrMiwgaW50IGszLCBpbnQgazQsIGludCBrNSwgaW50IGs2LCB0eXBlbmFtZSBJbm5l
ck1hdGNoZXI+CitpbmxpbmUgaW50ZXJuYWw6OkFyZ3NNYXRjaGVyPElubmVyTWF0Y2hlciwgazEs
IGsyLCBrMywgazQsIGs1LCBrNj4KK0FyZ3MoY29uc3QgSW5uZXJNYXRjaGVyJiBtYXRjaGVyKSB7
CisgIHJldHVybiBpbnRlcm5hbDo6QXJnc01hdGNoZXI8SW5uZXJNYXRjaGVyLCBrMSwgazIsIGsz
LCBrNCwgazUsIGs2PihtYXRjaGVyKTsKK30KKwordGVtcGxhdGUgPGludCBrMSwgaW50IGsyLCBp
bnQgazMsIGludCBrNCwgaW50IGs1LCBpbnQgazYsIGludCBrNywKKyAgICB0eXBlbmFtZSBJbm5l
ck1hdGNoZXI+CitpbmxpbmUgaW50ZXJuYWw6OkFyZ3NNYXRjaGVyPElubmVyTWF0Y2hlciwgazEs
IGsyLCBrMywgazQsIGs1LCBrNiwgazc+CitBcmdzKGNvbnN0IElubmVyTWF0Y2hlciYgbWF0Y2hl
cikgeworICByZXR1cm4gaW50ZXJuYWw6OkFyZ3NNYXRjaGVyPElubmVyTWF0Y2hlciwgazEsIGsy
LCBrMywgazQsIGs1LCBrNiwKKyAgICAgIGs3PihtYXRjaGVyKTsKK30KKwordGVtcGxhdGUgPGlu
dCBrMSwgaW50IGsyLCBpbnQgazMsIGludCBrNCwgaW50IGs1LCBpbnQgazYsIGludCBrNywgaW50
IGs4LAorICAgIHR5cGVuYW1lIElubmVyTWF0Y2hlcj4KK2lubGluZSBpbnRlcm5hbDo6QXJnc01h
dGNoZXI8SW5uZXJNYXRjaGVyLCBrMSwgazIsIGszLCBrNCwgazUsIGs2LCBrNywgazg+CitBcmdz
KGNvbnN0IElubmVyTWF0Y2hlciYgbWF0Y2hlcikgeworICByZXR1cm4gaW50ZXJuYWw6OkFyZ3NN
YXRjaGVyPElubmVyTWF0Y2hlciwgazEsIGsyLCBrMywgazQsIGs1LCBrNiwgazcsCisgICAgICBr
OD4obWF0Y2hlcik7Cit9CisKK3RlbXBsYXRlIDxpbnQgazEsIGludCBrMiwgaW50IGszLCBpbnQg
azQsIGludCBrNSwgaW50IGs2LCBpbnQgazcsIGludCBrOCwKKyAgICBpbnQgazksIHR5cGVuYW1l
IElubmVyTWF0Y2hlcj4KK2lubGluZSBpbnRlcm5hbDo6QXJnc01hdGNoZXI8SW5uZXJNYXRjaGVy
LCBrMSwgazIsIGszLCBrNCwgazUsIGs2LCBrNywgazgsIGs5PgorQXJncyhjb25zdCBJbm5lck1h
dGNoZXImIG1hdGNoZXIpIHsKKyAgcmV0dXJuIGludGVybmFsOjpBcmdzTWF0Y2hlcjxJbm5lck1h
dGNoZXIsIGsxLCBrMiwgazMsIGs0LCBrNSwgazYsIGs3LCBrOCwKKyAgICAgIGs5PihtYXRjaGVy
KTsKK30KKwordGVtcGxhdGUgPGludCBrMSwgaW50IGsyLCBpbnQgazMsIGludCBrNCwgaW50IGs1
LCBpbnQgazYsIGludCBrNywgaW50IGs4LAorICAgIGludCBrOSwgaW50IGsxMCwgdHlwZW5hbWUg
SW5uZXJNYXRjaGVyPgoraW5saW5lIGludGVybmFsOjpBcmdzTWF0Y2hlcjxJbm5lck1hdGNoZXIs
IGsxLCBrMiwgazMsIGs0LCBrNSwgazYsIGs3LCBrOCwgazksCisgICAgazEwPgorQXJncyhjb25z
dCBJbm5lck1hdGNoZXImIG1hdGNoZXIpIHsKKyAgcmV0dXJuIGludGVybmFsOjpBcmdzTWF0Y2hl
cjxJbm5lck1hdGNoZXIsIGsxLCBrMiwgazMsIGs0LCBrNSwgazYsIGs3LCBrOCwKKyAgICAgIGs5
LCBrMTA+KG1hdGNoZXIpOworfQorCisvLyBFbGVtZW50c0FyZShlXzEsIGVfMiwgLi4uIGVfbikg
bWF0Y2hlcyBhbiBTVEwtc3R5bGUgY29udGFpbmVyIHdpdGgKKy8vIG4gZWxlbWVudHMsIHdoZXJl
IHRoZSBpLXRoIGVsZW1lbnQgaW4gdGhlIGNvbnRhaW5lciBtdXN0CisvLyBtYXRjaCB0aGUgaS10
aCBhcmd1bWVudCBpbiB0aGUgbGlzdC4gIEVhY2ggYXJndW1lbnQgb2YKKy8vIEVsZW1lbnRzQXJl
KCkgY2FuIGJlIGVpdGhlciBhIHZhbHVlIG9yIGEgbWF0Y2hlci4gIFdlIHN1cHBvcnQgdXAgdG8K
Ky8vIDEwIGFyZ3VtZW50cy4KKy8vCisvLyBUaGUgdXNlIG9mIERlY2F5QXJyYXkgaW4gdGhlIGlt
cGxlbWVudGF0aW9uIGFsbG93cyBFbGVtZW50c0FyZSgpCisvLyB0byBhY2NlcHQgc3RyaW5nIGxp
dGVyYWxzLCB3aG9zZSB0eXBlIGlzIGNvbnN0IGNoYXJbTl0sIGJ1dCB3ZQorLy8gd2FudCB0byB0
cmVhdCB0aGVtIGFzIGNvbnN0IGNoYXIqLgorLy8KKy8vIE5PVEU6IFNpbmNlIEVsZW1lbnRzQXJl
KCkgY2FyZXMgYWJvdXQgdGhlIG9yZGVyIG9mIHRoZSBlbGVtZW50cywgaXQKKy8vIG11c3Qgbm90
IGJlIHVzZWQgd2l0aCBjb250YWluZXJzIHdob3NlIGVsZW1lbnRzJ3Mgb3JkZXIgaXMKKy8vIHVu
ZGVmaW5lZCAoZS5nLiBoYXNoX21hcCkuCisKK2lubGluZSBpbnRlcm5hbDo6RWxlbWVudHNBcmVN
YXRjaGVyPAorICAgIDo6dGVzdGluZzo6dHVwbGU8PiA+CitFbGVtZW50c0FyZSgpIHsKKyAgdHlw
ZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPD4gQXJnczsKKyAgcmV0dXJuIGludGVybmFsOjpFbGVtZW50
c0FyZU1hdGNoZXI8QXJncz4oQXJncygpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxPgor
aW5saW5lIGludGVybmFsOjpFbGVtZW50c0FyZU1hdGNoZXI8CisgICAgOjp0ZXN0aW5nOjp0dXBs
ZTwKKyAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDE+Ojp0eXBlPiA+CitF
bGVtZW50c0FyZShjb25zdCBUMSYgZTEpIHsKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPAor
ICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDE+Ojp0eXBlPiBBcmdzOworICBy
ZXR1cm4gaW50ZXJuYWw6OkVsZW1lbnRzQXJlTWF0Y2hlcjxBcmdzPihBcmdzKGUxKSk7Cit9CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+CitpbmxpbmUgaW50ZXJuYWw6OkVs
ZW1lbnRzQXJlTWF0Y2hlcjwKKyAgICA6OnRlc3Rpbmc6OnR1cGxlPAorICAgICAgICB0eXBlbmFt
ZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMT46OnR5cGUsCisgICAgICAgIHR5cGVuYW1lIGludGVy
bmFsOjpEZWNheUFycmF5PFQyPjo6dHlwZT4gPgorRWxlbWVudHNBcmUoY29uc3QgVDEmIGUxLCBj
b25zdCBUMiYgZTIpIHsKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPAorICAgICAgdHlwZW5h
bWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDE+Ojp0eXBlLAorICAgICAgdHlwZW5hbWUgaW50ZXJu
YWw6OkRlY2F5QXJyYXk8VDI+Ojp0eXBlPiBBcmdzOworICByZXR1cm4gaW50ZXJuYWw6OkVsZW1l
bnRzQXJlTWF0Y2hlcjxBcmdzPihBcmdzKGUxLCBlMikpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMz4KK2lubGluZSBpbnRlcm5hbDo6RWxlbWVu
dHNBcmVNYXRjaGVyPAorICAgIDo6dGVzdGluZzo6dHVwbGU8CisgICAgICAgIHR5cGVuYW1lIGlu
dGVybmFsOjpEZWNheUFycmF5PFQxPjo6dHlwZSwKKyAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6
OkRlY2F5QXJyYXk8VDI+Ojp0eXBlLAorICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlB
cnJheTxUMz46OnR5cGU+ID4KK0VsZW1lbnRzQXJlKGNvbnN0IFQxJiBlMSwgY29uc3QgVDImIGUy
LCBjb25zdCBUMyYgZTMpIHsKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPAorICAgICAgdHlw
ZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDE+Ojp0eXBlLAorICAgICAgdHlwZW5hbWUgaW50
ZXJuYWw6OkRlY2F5QXJyYXk8VDI+Ojp0eXBlLAorICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRl
Y2F5QXJyYXk8VDM+Ojp0eXBlPiBBcmdzOworICByZXR1cm4gaW50ZXJuYWw6OkVsZW1lbnRzQXJl
TWF0Y2hlcjxBcmdzPihBcmdzKGUxLCBlMiwgZTMpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0PgoraW5saW5lIGludGVy
bmFsOjpFbGVtZW50c0FyZU1hdGNoZXI8CisgICAgOjp0ZXN0aW5nOjp0dXBsZTwKKyAgICAgICAg
dHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDE+Ojp0eXBlLAorICAgICAgICB0eXBlbmFt
ZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMj46OnR5cGUsCisgICAgICAgIHR5cGVuYW1lIGludGVy
bmFsOjpEZWNheUFycmF5PFQzPjo6dHlwZSwKKyAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRl
Y2F5QXJyYXk8VDQ+Ojp0eXBlPiA+CitFbGVtZW50c0FyZShjb25zdCBUMSYgZTEsIGNvbnN0IFQy
JiBlMiwgY29uc3QgVDMmIGUzLCBjb25zdCBUNCYgZTQpIHsKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6
OnR1cGxlPAorICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDE+Ojp0eXBlLAor
ICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDI+Ojp0eXBlLAorICAgICAgdHlw
ZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDM+Ojp0eXBlLAorICAgICAgdHlwZW5hbWUgaW50
ZXJuYWw6OkRlY2F5QXJyYXk8VDQ+Ojp0eXBlPiBBcmdzOworICByZXR1cm4gaW50ZXJuYWw6OkVs
ZW1lbnRzQXJlTWF0Y2hlcjxBcmdzPihBcmdzKGUxLCBlMiwgZTMsIGU0KSk7Cit9CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwg
dHlwZW5hbWUgVDU+CitpbmxpbmUgaW50ZXJuYWw6OkVsZW1lbnRzQXJlTWF0Y2hlcjwKKyAgICA6
OnRlc3Rpbmc6OnR1cGxlPAorICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxU
MT46OnR5cGUsCisgICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQyPjo6dHlw
ZSwKKyAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDM+Ojp0eXBlLAorICAg
ICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUND46OnR5cGUsCisgICAgICAgIHR5
cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ1Pjo6dHlwZT4gPgorRWxlbWVudHNBcmUoY29u
c3QgVDEmIGUxLCBjb25zdCBUMiYgZTIsIGNvbnN0IFQzJiBlMywgY29uc3QgVDQmIGU0LAorICAg
IGNvbnN0IFQ1JiBlNSkgeworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8CisgICAgICB0eXBl
bmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMT46OnR5cGUsCisgICAgICB0eXBlbmFtZSBpbnRl
cm5hbDo6RGVjYXlBcnJheTxUMj46OnR5cGUsCisgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVj
YXlBcnJheTxUMz46OnR5cGUsCisgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxU
ND46OnR5cGUsCisgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUNT46OnR5cGU+
IEFyZ3M7CisgIHJldHVybiBpbnRlcm5hbDo6RWxlbWVudHNBcmVNYXRjaGVyPEFyZ3M+KEFyZ3Mo
ZTEsIGUyLCBlMywgZTQsIGU1KSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5h
bWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCisgICAgdHlwZW5h
bWUgVDY+CitpbmxpbmUgaW50ZXJuYWw6OkVsZW1lbnRzQXJlTWF0Y2hlcjwKKyAgICA6OnRlc3Rp
bmc6OnR1cGxlPAorICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMT46OnR5
cGUsCisgICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQyPjo6dHlwZSwKKyAg
ICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDM+Ojp0eXBlLAorICAgICAgICB0
eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUND46OnR5cGUsCisgICAgICAgIHR5cGVuYW1l
IGludGVybmFsOjpEZWNheUFycmF5PFQ1Pjo6dHlwZSwKKyAgICAgICAgdHlwZW5hbWUgaW50ZXJu
YWw6OkRlY2F5QXJyYXk8VDY+Ojp0eXBlPiA+CitFbGVtZW50c0FyZShjb25zdCBUMSYgZTEsIGNv
bnN0IFQyJiBlMiwgY29uc3QgVDMmIGUzLCBjb25zdCBUNCYgZTQsCisgICAgY29uc3QgVDUmIGU1
LCBjb25zdCBUNiYgZTYpIHsKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPAorICAgICAgdHlw
ZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDE+Ojp0eXBlLAorICAgICAgdHlwZW5hbWUgaW50
ZXJuYWw6OkRlY2F5QXJyYXk8VDI+Ojp0eXBlLAorICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRl
Y2F5QXJyYXk8VDM+Ojp0eXBlLAorICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8
VDQ+Ojp0eXBlLAorICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDU+Ojp0eXBl
LAorICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDY+Ojp0eXBlPiBBcmdzOwor
ICByZXR1cm4gaW50ZXJuYWw6OkVsZW1lbnRzQXJlTWF0Y2hlcjxBcmdzPihBcmdzKGUxLCBlMiwg
ZTMsIGU0LCBlNSwgZTYpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBU
MiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICB0eXBlbmFtZSBU
NiwgdHlwZW5hbWUgVDc+CitpbmxpbmUgaW50ZXJuYWw6OkVsZW1lbnRzQXJlTWF0Y2hlcjwKKyAg
ICA6OnRlc3Rpbmc6OnR1cGxlPAorICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJh
eTxUMT46OnR5cGUsCisgICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQyPjo6
dHlwZSwKKyAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDM+Ojp0eXBlLAor
ICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUND46OnR5cGUsCisgICAgICAg
IHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ1Pjo6dHlwZSwKKyAgICAgICAgdHlwZW5h
bWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDY+Ojp0eXBlLAorICAgICAgICB0eXBlbmFtZSBpbnRl
cm5hbDo6RGVjYXlBcnJheTxUNz46OnR5cGU+ID4KK0VsZW1lbnRzQXJlKGNvbnN0IFQxJiBlMSwg
Y29uc3QgVDImIGUyLCBjb25zdCBUMyYgZTMsIGNvbnN0IFQ0JiBlNCwKKyAgICBjb25zdCBUNSYg
ZTUsIGNvbnN0IFQ2JiBlNiwgY29uc3QgVDcmIGU3KSB7CisgIHR5cGVkZWYgOjp0ZXN0aW5nOjp0
dXBsZTwKKyAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQxPjo6dHlwZSwKKyAg
ICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQyPjo6dHlwZSwKKyAgICAgIHR5cGVu
YW1lIGludGVybmFsOjpEZWNheUFycmF5PFQzPjo6dHlwZSwKKyAgICAgIHR5cGVuYW1lIGludGVy
bmFsOjpEZWNheUFycmF5PFQ0Pjo6dHlwZSwKKyAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNh
eUFycmF5PFQ1Pjo6dHlwZSwKKyAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ2
Pjo6dHlwZSwKKyAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ3Pjo6dHlwZT4g
QXJnczsKKyAgcmV0dXJuIGludGVybmFsOjpFbGVtZW50c0FyZU1hdGNoZXI8QXJncz4oQXJncyhl
MSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNykpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEs
IHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAg
IHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDg+CitpbmxpbmUgaW50ZXJuYWw6
OkVsZW1lbnRzQXJlTWF0Y2hlcjwKKyAgICA6OnRlc3Rpbmc6OnR1cGxlPAorICAgICAgICB0eXBl
bmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMT46OnR5cGUsCisgICAgICAgIHR5cGVuYW1lIGlu
dGVybmFsOjpEZWNheUFycmF5PFQyPjo6dHlwZSwKKyAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6
OkRlY2F5QXJyYXk8VDM+Ojp0eXBlLAorICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlB
cnJheTxUND46OnR5cGUsCisgICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ1
Pjo6dHlwZSwKKyAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDY+Ojp0eXBl
LAorICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUNz46OnR5cGUsCisgICAg
ICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ4Pjo6dHlwZT4gPgorRWxlbWVudHNB
cmUoY29uc3QgVDEmIGUxLCBjb25zdCBUMiYgZTIsIGNvbnN0IFQzJiBlMywgY29uc3QgVDQmIGU0
LAorICAgIGNvbnN0IFQ1JiBlNSwgY29uc3QgVDYmIGU2LCBjb25zdCBUNyYgZTcsIGNvbnN0IFQ4
JiBlOCkgeworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8CisgICAgICB0eXBlbmFtZSBpbnRl
cm5hbDo6RGVjYXlBcnJheTxUMT46OnR5cGUsCisgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVj
YXlBcnJheTxUMj46OnR5cGUsCisgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxU
Mz46OnR5cGUsCisgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUND46OnR5cGUs
CisgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUNT46OnR5cGUsCisgICAgICB0
eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUNj46OnR5cGUsCisgICAgICB0eXBlbmFtZSBp
bnRlcm5hbDo6RGVjYXlBcnJheTxUNz46OnR5cGUsCisgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6
RGVjYXlBcnJheTxUOD46OnR5cGU+IEFyZ3M7CisgIHJldHVybiBpbnRlcm5hbDo6RWxlbWVudHNB
cmVNYXRjaGVyPEFyZ3M+KEFyZ3MoZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsCisgICAgICBl
OCkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBU
MywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBU
NywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5PgoraW5saW5lIGludGVybmFsOjpFbGVtZW50c0Fy
ZU1hdGNoZXI8CisgICAgOjp0ZXN0aW5nOjp0dXBsZTwKKyAgICAgICAgdHlwZW5hbWUgaW50ZXJu
YWw6OkRlY2F5QXJyYXk8VDE+Ojp0eXBlLAorICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVj
YXlBcnJheTxUMj46OnR5cGUsCisgICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5
PFQzPjo6dHlwZSwKKyAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDQ+Ojp0
eXBlLAorICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUNT46OnR5cGUsCisg
ICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ2Pjo6dHlwZSwKKyAgICAgICAg
dHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDc+Ojp0eXBlLAorICAgICAgICB0eXBlbmFt
ZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUOD46OnR5cGUsCisgICAgICAgIHR5cGVuYW1lIGludGVy
bmFsOjpEZWNheUFycmF5PFQ5Pjo6dHlwZT4gPgorRWxlbWVudHNBcmUoY29uc3QgVDEmIGUxLCBj
b25zdCBUMiYgZTIsIGNvbnN0IFQzJiBlMywgY29uc3QgVDQmIGU0LAorICAgIGNvbnN0IFQ1JiBl
NSwgY29uc3QgVDYmIGU2LCBjb25zdCBUNyYgZTcsIGNvbnN0IFQ4JiBlOCwgY29uc3QgVDkmIGU5
KSB7CisgIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTwKKyAgICAgIHR5cGVuYW1lIGludGVybmFs
OjpEZWNheUFycmF5PFQxPjo6dHlwZSwKKyAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFy
cmF5PFQyPjo6dHlwZSwKKyAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQzPjo6
dHlwZSwKKyAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ0Pjo6dHlwZSwKKyAg
ICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ1Pjo6dHlwZSwKKyAgICAgIHR5cGVu
YW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ2Pjo6dHlwZSwKKyAgICAgIHR5cGVuYW1lIGludGVy
bmFsOjpEZWNheUFycmF5PFQ3Pjo6dHlwZSwKKyAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNh
eUFycmF5PFQ4Pjo6dHlwZSwKKyAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ5
Pjo6dHlwZT4gQXJnczsKKyAgcmV0dXJuIGludGVybmFsOjpFbGVtZW50c0FyZU1hdGNoZXI8QXJn
cz4oQXJncyhlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywKKyAgICAgIGU4LCBlOSkpOworfQor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5h
bWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5h
bWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTA+CitpbmxpbmUgaW50ZXJuYWw6OkVsZW1l
bnRzQXJlTWF0Y2hlcjwKKyAgICA6OnRlc3Rpbmc6OnR1cGxlPAorICAgICAgICB0eXBlbmFtZSBp
bnRlcm5hbDo6RGVjYXlBcnJheTxUMT46OnR5cGUsCisgICAgICAgIHR5cGVuYW1lIGludGVybmFs
OjpEZWNheUFycmF5PFQyPjo6dHlwZSwKKyAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5
QXJyYXk8VDM+Ojp0eXBlLAorICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxU
ND46OnR5cGUsCisgICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ1Pjo6dHlw
ZSwKKyAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDY+Ojp0eXBlLAorICAg
ICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUNz46OnR5cGUsCisgICAgICAgIHR5
cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ4Pjo6dHlwZSwKKyAgICAgICAgdHlwZW5hbWUg
aW50ZXJuYWw6OkRlY2F5QXJyYXk8VDk+Ojp0eXBlLAorICAgICAgICB0eXBlbmFtZSBpbnRlcm5h
bDo6RGVjYXlBcnJheTxUMTA+Ojp0eXBlPiA+CitFbGVtZW50c0FyZShjb25zdCBUMSYgZTEsIGNv
bnN0IFQyJiBlMiwgY29uc3QgVDMmIGUzLCBjb25zdCBUNCYgZTQsCisgICAgY29uc3QgVDUmIGU1
LCBjb25zdCBUNiYgZTYsIGNvbnN0IFQ3JiBlNywgY29uc3QgVDgmIGU4LCBjb25zdCBUOSYgZTks
CisgICAgY29uc3QgVDEwJiBlMTApIHsKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPAorICAg
ICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDE+Ojp0eXBlLAorICAgICAgdHlwZW5h
bWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDI+Ojp0eXBlLAorICAgICAgdHlwZW5hbWUgaW50ZXJu
YWw6OkRlY2F5QXJyYXk8VDM+Ojp0eXBlLAorICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5
QXJyYXk8VDQ+Ojp0eXBlLAorICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDU+
Ojp0eXBlLAorICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDY+Ojp0eXBlLAor
ICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDc+Ojp0eXBlLAorICAgICAgdHlw
ZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDg+Ojp0eXBlLAorICAgICAgdHlwZW5hbWUgaW50
ZXJuYWw6OkRlY2F5QXJyYXk8VDk+Ojp0eXBlLAorICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRl
Y2F5QXJyYXk8VDEwPjo6dHlwZT4gQXJnczsKKyAgcmV0dXJuIGludGVybmFsOjpFbGVtZW50c0Fy
ZU1hdGNoZXI8QXJncz4oQXJncyhlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywKKyAgICAgIGU4
LCBlOSwgZTEwKSk7Cit9CisKKy8vIFVub3JkZXJlZEVsZW1lbnRzQXJlKGVfMSwgZV8yLCAuLi4s
IGVfbikgaXMgYW4gRWxlbWVudHNBcmUgZXh0ZW5zaW9uCisvLyB0aGF0IG1hdGNoZXMgbiBlbGVt
ZW50cyBpbiBhbnkgb3JkZXIuICBXZSBzdXBwb3J0IHVwIHRvIG49MTAgYXJndW1lbnRzLgorCitp
bmxpbmUgaW50ZXJuYWw6OlVub3JkZXJlZEVsZW1lbnRzQXJlTWF0Y2hlcjwKKyAgICA6OnRlc3Rp
bmc6OnR1cGxlPD4gPgorVW5vcmRlcmVkRWxlbWVudHNBcmUoKSB7CisgIHR5cGVkZWYgOjp0ZXN0
aW5nOjp0dXBsZTw+IEFyZ3M7CisgIHJldHVybiBpbnRlcm5hbDo6VW5vcmRlcmVkRWxlbWVudHNB
cmVNYXRjaGVyPEFyZ3M+KEFyZ3MoKSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMT4KK2lu
bGluZSBpbnRlcm5hbDo6VW5vcmRlcmVkRWxlbWVudHNBcmVNYXRjaGVyPAorICAgIDo6dGVzdGlu
Zzo6dHVwbGU8CisgICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQxPjo6dHlw
ZT4gPgorVW5vcmRlcmVkRWxlbWVudHNBcmUoY29uc3QgVDEmIGUxKSB7CisgIHR5cGVkZWYgOjp0
ZXN0aW5nOjp0dXBsZTwKKyAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQxPjo6
dHlwZT4gQXJnczsKKyAgcmV0dXJuIGludGVybmFsOjpVbm9yZGVyZWRFbGVtZW50c0FyZU1hdGNo
ZXI8QXJncz4oQXJncyhlMSkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1l
IFQyPgoraW5saW5lIGludGVybmFsOjpVbm9yZGVyZWRFbGVtZW50c0FyZU1hdGNoZXI8CisgICAg
Ojp0ZXN0aW5nOjp0dXBsZTwKKyAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8
VDE+Ojp0eXBlLAorICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMj46OnR5
cGU+ID4KK1Vub3JkZXJlZEVsZW1lbnRzQXJlKGNvbnN0IFQxJiBlMSwgY29uc3QgVDImIGUyKSB7
CisgIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTwKKyAgICAgIHR5cGVuYW1lIGludGVybmFsOjpE
ZWNheUFycmF5PFQxPjo6dHlwZSwKKyAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5
PFQyPjo6dHlwZT4gQXJnczsKKyAgcmV0dXJuIGludGVybmFsOjpVbm9yZGVyZWRFbGVtZW50c0Fy
ZU1hdGNoZXI8QXJncz4oQXJncyhlMSwgZTIpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDM+CitpbmxpbmUgaW50ZXJuYWw6OlVub3JkZXJlZEVs
ZW1lbnRzQXJlTWF0Y2hlcjwKKyAgICA6OnRlc3Rpbmc6OnR1cGxlPAorICAgICAgICB0eXBlbmFt
ZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMT46OnR5cGUsCisgICAgICAgIHR5cGVuYW1lIGludGVy
bmFsOjpEZWNheUFycmF5PFQyPjo6dHlwZSwKKyAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRl
Y2F5QXJyYXk8VDM+Ojp0eXBlPiA+CitVbm9yZGVyZWRFbGVtZW50c0FyZShjb25zdCBUMSYgZTEs
IGNvbnN0IFQyJiBlMiwgY29uc3QgVDMmIGUzKSB7CisgIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBs
ZTwKKyAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQxPjo6dHlwZSwKKyAgICAg
IHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQyPjo6dHlwZSwKKyAgICAgIHR5cGVuYW1l
IGludGVybmFsOjpEZWNheUFycmF5PFQzPjo6dHlwZT4gQXJnczsKKyAgcmV0dXJuIGludGVybmFs
OjpVbm9yZGVyZWRFbGVtZW50c0FyZU1hdGNoZXI8QXJncz4oQXJncyhlMSwgZTIsIGUzKSk7Cit9
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBl
bmFtZSBUND4KK2lubGluZSBpbnRlcm5hbDo6VW5vcmRlcmVkRWxlbWVudHNBcmVNYXRjaGVyPAor
ICAgIDo6dGVzdGluZzo6dHVwbGU8CisgICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFy
cmF5PFQxPjo6dHlwZSwKKyAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDI+
Ojp0eXBlLAorICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMz46OnR5cGUs
CisgICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ0Pjo6dHlwZT4gPgorVW5v
cmRlcmVkRWxlbWVudHNBcmUoY29uc3QgVDEmIGUxLCBjb25zdCBUMiYgZTIsIGNvbnN0IFQzJiBl
MywgY29uc3QgVDQmIGU0KSB7CisgIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTwKKyAgICAgIHR5
cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQxPjo6dHlwZSwKKyAgICAgIHR5cGVuYW1lIGlu
dGVybmFsOjpEZWNheUFycmF5PFQyPjo6dHlwZSwKKyAgICAgIHR5cGVuYW1lIGludGVybmFsOjpE
ZWNheUFycmF5PFQzPjo6dHlwZSwKKyAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5
PFQ0Pjo6dHlwZT4gQXJnczsKKyAgcmV0dXJuIGludGVybmFsOjpVbm9yZGVyZWRFbGVtZW50c0Fy
ZU1hdGNoZXI8QXJncz4oQXJncyhlMSwgZTIsIGUzLCBlNCkpOworfQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1l
IFQ1PgoraW5saW5lIGludGVybmFsOjpVbm9yZGVyZWRFbGVtZW50c0FyZU1hdGNoZXI8CisgICAg
Ojp0ZXN0aW5nOjp0dXBsZTwKKyAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8
VDE+Ojp0eXBlLAorICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMj46OnR5
cGUsCisgICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQzPjo6dHlwZSwKKyAg
ICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDQ+Ojp0eXBlLAorICAgICAgICB0
eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUNT46OnR5cGU+ID4KK1Vub3JkZXJlZEVsZW1l
bnRzQXJlKGNvbnN0IFQxJiBlMSwgY29uc3QgVDImIGUyLCBjb25zdCBUMyYgZTMsIGNvbnN0IFQ0
JiBlNCwKKyAgICBjb25zdCBUNSYgZTUpIHsKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPAor
ICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDE+Ojp0eXBlLAorICAgICAgdHlw
ZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDI+Ojp0eXBlLAorICAgICAgdHlwZW5hbWUgaW50
ZXJuYWw6OkRlY2F5QXJyYXk8VDM+Ojp0eXBlLAorICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRl
Y2F5QXJyYXk8VDQ+Ojp0eXBlLAorICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8
VDU+Ojp0eXBlPiBBcmdzOworICByZXR1cm4gaW50ZXJuYWw6OlVub3JkZXJlZEVsZW1lbnRzQXJl
TWF0Y2hlcjxBcmdzPihBcmdzKGUxLCBlMiwgZTMsIGU0LCBlNSkpOworfQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVu
YW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2PgoraW5saW5lIGludGVybmFsOjpVbm9yZGVyZWRFbGVt
ZW50c0FyZU1hdGNoZXI8CisgICAgOjp0ZXN0aW5nOjp0dXBsZTwKKyAgICAgICAgdHlwZW5hbWUg
aW50ZXJuYWw6OkRlY2F5QXJyYXk8VDE+Ojp0eXBlLAorICAgICAgICB0eXBlbmFtZSBpbnRlcm5h
bDo6RGVjYXlBcnJheTxUMj46OnR5cGUsCisgICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNh
eUFycmF5PFQzPjo6dHlwZSwKKyAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8
VDQ+Ojp0eXBlLAorICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUNT46OnR5
cGUsCisgICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ2Pjo6dHlwZT4gPgor
VW5vcmRlcmVkRWxlbWVudHNBcmUoY29uc3QgVDEmIGUxLCBjb25zdCBUMiYgZTIsIGNvbnN0IFQz
JiBlMywgY29uc3QgVDQmIGU0LAorICAgIGNvbnN0IFQ1JiBlNSwgY29uc3QgVDYmIGU2KSB7Cisg
IHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTwKKyAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNh
eUFycmF5PFQxPjo6dHlwZSwKKyAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQy
Pjo6dHlwZSwKKyAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQzPjo6dHlwZSwK
KyAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ0Pjo6dHlwZSwKKyAgICAgIHR5
cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ1Pjo6dHlwZSwKKyAgICAgIHR5cGVuYW1lIGlu
dGVybmFsOjpEZWNheUFycmF5PFQ2Pjo6dHlwZT4gQXJnczsKKyAgcmV0dXJuIGludGVybmFsOjpV
bm9yZGVyZWRFbGVtZW50c0FyZU1hdGNoZXI8QXJncz4oQXJncyhlMSwgZTIsIGUzLCBlNCwgZTUs
CisgICAgICBlNikpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0
eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0
eXBlbmFtZSBUNz4KK2lubGluZSBpbnRlcm5hbDo6VW5vcmRlcmVkRWxlbWVudHNBcmVNYXRjaGVy
PAorICAgIDo6dGVzdGluZzo6dHVwbGU8CisgICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNh
eUFycmF5PFQxPjo6dHlwZSwKKyAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8
VDI+Ojp0eXBlLAorICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMz46OnR5
cGUsCisgICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ0Pjo6dHlwZSwKKyAg
ICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDU+Ojp0eXBlLAorICAgICAgICB0
eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUNj46OnR5cGUsCisgICAgICAgIHR5cGVuYW1l
IGludGVybmFsOjpEZWNheUFycmF5PFQ3Pjo6dHlwZT4gPgorVW5vcmRlcmVkRWxlbWVudHNBcmUo
Y29uc3QgVDEmIGUxLCBjb25zdCBUMiYgZTIsIGNvbnN0IFQzJiBlMywgY29uc3QgVDQmIGU0LAor
ICAgIGNvbnN0IFQ1JiBlNSwgY29uc3QgVDYmIGU2LCBjb25zdCBUNyYgZTcpIHsKKyAgdHlwZWRl
ZiA6OnRlc3Rpbmc6OnR1cGxlPAorICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8
VDE+Ojp0eXBlLAorICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDI+Ojp0eXBl
LAorICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDM+Ojp0eXBlLAorICAgICAg
dHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDQ+Ojp0eXBlLAorICAgICAgdHlwZW5hbWUg
aW50ZXJuYWw6OkRlY2F5QXJyYXk8VDU+Ojp0eXBlLAorICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6
OkRlY2F5QXJyYXk8VDY+Ojp0eXBlLAorICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJy
YXk8VDc+Ojp0eXBlPiBBcmdzOworICByZXR1cm4gaW50ZXJuYWw6OlVub3JkZXJlZEVsZW1lbnRz
QXJlTWF0Y2hlcjxBcmdzPihBcmdzKGUxLCBlMiwgZTMsIGU0LCBlNSwKKyAgICAgIGU2LCBlNykp
OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywg
dHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywg
dHlwZW5hbWUgVDg+CitpbmxpbmUgaW50ZXJuYWw6OlVub3JkZXJlZEVsZW1lbnRzQXJlTWF0Y2hl
cjwKKyAgICA6OnRlc3Rpbmc6OnR1cGxlPAorICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVj
YXlBcnJheTxUMT46OnR5cGUsCisgICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5
PFQyPjo6dHlwZSwKKyAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDM+Ojp0
eXBlLAorICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUND46OnR5cGUsCisg
ICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ1Pjo6dHlwZSwKKyAgICAgICAg
dHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDY+Ojp0eXBlLAorICAgICAgICB0eXBlbmFt
ZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUNz46OnR5cGUsCisgICAgICAgIHR5cGVuYW1lIGludGVy
bmFsOjpEZWNheUFycmF5PFQ4Pjo6dHlwZT4gPgorVW5vcmRlcmVkRWxlbWVudHNBcmUoY29uc3Qg
VDEmIGUxLCBjb25zdCBUMiYgZTIsIGNvbnN0IFQzJiBlMywgY29uc3QgVDQmIGU0LAorICAgIGNv
bnN0IFQ1JiBlNSwgY29uc3QgVDYmIGU2LCBjb25zdCBUNyYgZTcsIGNvbnN0IFQ4JiBlOCkgewor
ICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8CisgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVj
YXlBcnJheTxUMT46OnR5cGUsCisgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxU
Mj46OnR5cGUsCisgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMz46OnR5cGUs
CisgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUND46OnR5cGUsCisgICAgICB0
eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUNT46OnR5cGUsCisgICAgICB0eXBlbmFtZSBp
bnRlcm5hbDo6RGVjYXlBcnJheTxUNj46OnR5cGUsCisgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6
RGVjYXlBcnJheTxUNz46OnR5cGUsCisgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJh
eTxUOD46OnR5cGU+IEFyZ3M7CisgIHJldHVybiBpbnRlcm5hbDo6VW5vcmRlcmVkRWxlbWVudHNB
cmVNYXRjaGVyPEFyZ3M+KEFyZ3MoZTEsIGUyLCBlMywgZTQsIGU1LAorICAgICAgZTYsIGU3LCBl
OCkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBU
MywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBU
NywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5PgoraW5saW5lIGludGVybmFsOjpVbm9yZGVyZWRF
bGVtZW50c0FyZU1hdGNoZXI8CisgICAgOjp0ZXN0aW5nOjp0dXBsZTwKKyAgICAgICAgdHlwZW5h
bWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDE+Ojp0eXBlLAorICAgICAgICB0eXBlbmFtZSBpbnRl
cm5hbDo6RGVjYXlBcnJheTxUMj46OnR5cGUsCisgICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpE
ZWNheUFycmF5PFQzPjo6dHlwZSwKKyAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJy
YXk8VDQ+Ojp0eXBlLAorICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUNT46
OnR5cGUsCisgICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ2Pjo6dHlwZSwK
KyAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDc+Ojp0eXBlLAorICAgICAg
ICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUOD46OnR5cGUsCisgICAgICAgIHR5cGVu
YW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ5Pjo6dHlwZT4gPgorVW5vcmRlcmVkRWxlbWVudHNB
cmUoY29uc3QgVDEmIGUxLCBjb25zdCBUMiYgZTIsIGNvbnN0IFQzJiBlMywgY29uc3QgVDQmIGU0
LAorICAgIGNvbnN0IFQ1JiBlNSwgY29uc3QgVDYmIGU2LCBjb25zdCBUNyYgZTcsIGNvbnN0IFQ4
JiBlOCwgY29uc3QgVDkmIGU5KSB7CisgIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTwKKyAgICAg
IHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQxPjo6dHlwZSwKKyAgICAgIHR5cGVuYW1l
IGludGVybmFsOjpEZWNheUFycmF5PFQyPjo6dHlwZSwKKyAgICAgIHR5cGVuYW1lIGludGVybmFs
OjpEZWNheUFycmF5PFQzPjo6dHlwZSwKKyAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFy
cmF5PFQ0Pjo6dHlwZSwKKyAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ1Pjo6
dHlwZSwKKyAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ2Pjo6dHlwZSwKKyAg
ICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ3Pjo6dHlwZSwKKyAgICAgIHR5cGVu
YW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ4Pjo6dHlwZSwKKyAgICAgIHR5cGVuYW1lIGludGVy
bmFsOjpEZWNheUFycmF5PFQ5Pjo6dHlwZT4gQXJnczsKKyAgcmV0dXJuIGludGVybmFsOjpVbm9y
ZGVyZWRFbGVtZW50c0FyZU1hdGNoZXI8QXJncz4oQXJncyhlMSwgZTIsIGUzLCBlNCwgZTUsCisg
ICAgICBlNiwgZTcsIGU4LCBlOSkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVu
YW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5cGVu
YW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBU
MTA+CitpbmxpbmUgaW50ZXJuYWw6OlVub3JkZXJlZEVsZW1lbnRzQXJlTWF0Y2hlcjwKKyAgICA6
OnRlc3Rpbmc6OnR1cGxlPAorICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxU
MT46OnR5cGUsCisgICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQyPjo6dHlw
ZSwKKyAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDM+Ojp0eXBlLAorICAg
ICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUND46OnR5cGUsCisgICAgICAgIHR5
cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ1Pjo6dHlwZSwKKyAgICAgICAgdHlwZW5hbWUg
aW50ZXJuYWw6OkRlY2F5QXJyYXk8VDY+Ojp0eXBlLAorICAgICAgICB0eXBlbmFtZSBpbnRlcm5h
bDo6RGVjYXlBcnJheTxUNz46OnR5cGUsCisgICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNh
eUFycmF5PFQ4Pjo6dHlwZSwKKyAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8
VDk+Ojp0eXBlLAorICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMTA+Ojp0
eXBlPiA+CitVbm9yZGVyZWRFbGVtZW50c0FyZShjb25zdCBUMSYgZTEsIGNvbnN0IFQyJiBlMiwg
Y29uc3QgVDMmIGUzLCBjb25zdCBUNCYgZTQsCisgICAgY29uc3QgVDUmIGU1LCBjb25zdCBUNiYg
ZTYsIGNvbnN0IFQ3JiBlNywgY29uc3QgVDgmIGU4LCBjb25zdCBUOSYgZTksCisgICAgY29uc3Qg
VDEwJiBlMTApIHsKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPAorICAgICAgdHlwZW5hbWUg
aW50ZXJuYWw6OkRlY2F5QXJyYXk8VDE+Ojp0eXBlLAorICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6
OkRlY2F5QXJyYXk8VDI+Ojp0eXBlLAorICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJy
YXk8VDM+Ojp0eXBlLAorICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDQ+Ojp0
eXBlLAorICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDU+Ojp0eXBlLAorICAg
ICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDY+Ojp0eXBlLAorICAgICAgdHlwZW5h
bWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDc+Ojp0eXBlLAorICAgICAgdHlwZW5hbWUgaW50ZXJu
YWw6OkRlY2F5QXJyYXk8VDg+Ojp0eXBlLAorICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5
QXJyYXk8VDk+Ojp0eXBlLAorICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDEw
Pjo6dHlwZT4gQXJnczsKKyAgcmV0dXJuIGludGVybmFsOjpVbm9yZGVyZWRFbGVtZW50c0FyZU1h
dGNoZXI8QXJncz4oQXJncyhlMSwgZTIsIGUzLCBlNCwgZTUsCisgICAgICBlNiwgZTcsIGU4LCBl
OSwgZTEwKSk7Cit9CisKKy8vIEFsbE9mKG0xLCBtMiwgLi4uLCBtaykgbWF0Y2hlcyBhbnkgdmFs
dWUgdGhhdCBtYXRjaGVzIGFsbCBvZiB0aGUgZ2l2ZW4KKy8vIHN1Yi1tYXRjaGVycy4gIEFsbE9m
IGlzIGNhbGxlZCBmdWxseSBxdWFsaWZpZWQgdG8gcHJldmVudCBBREwgZnJvbSBmaXJpbmcuCisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBNMSwgdHlwZW5hbWUgTTI+CitpbmxpbmUgdHlwZW5hbWUgaW50
ZXJuYWw6OkFsbE9mUmVzdWx0MjxNMSwgTTI+Ojp0eXBlCitBbGxPZihNMSBtMSwgTTIgbTIpIHsK
KyAgcmV0dXJuIHR5cGVuYW1lIGludGVybmFsOjpBbGxPZlJlc3VsdDI8TTEsIE0yPjo6dHlwZSgK
KyAgICAgIG0xLAorICAgICAgbTIpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTTEsIHR5cGVu
YW1lIE0yLCB0eXBlbmFtZSBNMz4KK2lubGluZSB0eXBlbmFtZSBpbnRlcm5hbDo6QWxsT2ZSZXN1
bHQzPE0xLCBNMiwgTTM+Ojp0eXBlCitBbGxPZihNMSBtMSwgTTIgbTIsIE0zIG0zKSB7CisgIHJl
dHVybiB0eXBlbmFtZSBpbnRlcm5hbDo6QWxsT2ZSZXN1bHQzPE0xLCBNMiwgTTM+Ojp0eXBlKAor
ICAgICAgbTEsCisgICAgICA6OnRlc3Rpbmc6OkFsbE9mKG0yLCBtMykpOworfQorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgTTEsIHR5cGVuYW1lIE0yLCB0eXBlbmFtZSBNMywgdHlwZW5hbWUgTTQ+Citp
bmxpbmUgdHlwZW5hbWUgaW50ZXJuYWw6OkFsbE9mUmVzdWx0NDxNMSwgTTIsIE0zLCBNND46OnR5
cGUKK0FsbE9mKE0xIG0xLCBNMiBtMiwgTTMgbTMsIE00IG00KSB7CisgIHJldHVybiB0eXBlbmFt
ZSBpbnRlcm5hbDo6QWxsT2ZSZXN1bHQ0PE0xLCBNMiwgTTMsIE00Pjo6dHlwZSgKKyAgICAgIDo6
dGVzdGluZzo6QWxsT2YobTEsIG0yKSwKKyAgICAgIDo6dGVzdGluZzo6QWxsT2YobTMsIG00KSk7
Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBNMSwgdHlwZW5hbWUgTTIsIHR5cGVuYW1lIE0zLCB0
eXBlbmFtZSBNNCwgdHlwZW5hbWUgTTU+CitpbmxpbmUgdHlwZW5hbWUgaW50ZXJuYWw6OkFsbE9m
UmVzdWx0NTxNMSwgTTIsIE0zLCBNNCwgTTU+Ojp0eXBlCitBbGxPZihNMSBtMSwgTTIgbTIsIE0z
IG0zLCBNNCBtNCwgTTUgbTUpIHsKKyAgcmV0dXJuIHR5cGVuYW1lIGludGVybmFsOjpBbGxPZlJl
c3VsdDU8TTEsIE0yLCBNMywgTTQsIE01Pjo6dHlwZSgKKyAgICAgIDo6dGVzdGluZzo6QWxsT2Yo
bTEsIG0yKSwKKyAgICAgIDo6dGVzdGluZzo6QWxsT2YobTMsIG00LCBtNSkpOworfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgTTEsIHR5cGVuYW1lIE0yLCB0eXBlbmFtZSBNMywgdHlwZW5hbWUgTTQs
IHR5cGVuYW1lIE01LAorICAgIHR5cGVuYW1lIE02PgoraW5saW5lIHR5cGVuYW1lIGludGVybmFs
OjpBbGxPZlJlc3VsdDY8TTEsIE0yLCBNMywgTTQsIE01LCBNNj46OnR5cGUKK0FsbE9mKE0xIG0x
LCBNMiBtMiwgTTMgbTMsIE00IG00LCBNNSBtNSwgTTYgbTYpIHsKKyAgcmV0dXJuIHR5cGVuYW1l
IGludGVybmFsOjpBbGxPZlJlc3VsdDY8TTEsIE0yLCBNMywgTTQsIE01LCBNNj46OnR5cGUoCisg
ICAgICA6OnRlc3Rpbmc6OkFsbE9mKG0xLCBtMiwgbTMpLAorICAgICAgOjp0ZXN0aW5nOjpBbGxP
ZihtNCwgbTUsIG02KSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBNMSwgdHlwZW5hbWUgTTIs
IHR5cGVuYW1lIE0zLCB0eXBlbmFtZSBNNCwgdHlwZW5hbWUgTTUsCisgICAgdHlwZW5hbWUgTTYs
IHR5cGVuYW1lIE03PgoraW5saW5lIHR5cGVuYW1lIGludGVybmFsOjpBbGxPZlJlc3VsdDc8TTEs
IE0yLCBNMywgTTQsIE01LCBNNiwgTTc+Ojp0eXBlCitBbGxPZihNMSBtMSwgTTIgbTIsIE0zIG0z
LCBNNCBtNCwgTTUgbTUsIE02IG02LCBNNyBtNykgeworICByZXR1cm4gdHlwZW5hbWUgaW50ZXJu
YWw6OkFsbE9mUmVzdWx0NzxNMSwgTTIsIE0zLCBNNCwgTTUsIE02LCBNNz46OnR5cGUoCisgICAg
ICA6OnRlc3Rpbmc6OkFsbE9mKG0xLCBtMiwgbTMpLAorICAgICAgOjp0ZXN0aW5nOjpBbGxPZiht
NCwgbTUsIG02LCBtNykpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTTEsIHR5cGVuYW1lIE0y
LCB0eXBlbmFtZSBNMywgdHlwZW5hbWUgTTQsIHR5cGVuYW1lIE01LAorICAgIHR5cGVuYW1lIE02
LCB0eXBlbmFtZSBNNywgdHlwZW5hbWUgTTg+CitpbmxpbmUgdHlwZW5hbWUgaW50ZXJuYWw6OkFs
bE9mUmVzdWx0ODxNMSwgTTIsIE0zLCBNNCwgTTUsIE02LCBNNywgTTg+Ojp0eXBlCitBbGxPZihN
MSBtMSwgTTIgbTIsIE0zIG0zLCBNNCBtNCwgTTUgbTUsIE02IG02LCBNNyBtNywgTTggbTgpIHsK
KyAgcmV0dXJuIHR5cGVuYW1lIGludGVybmFsOjpBbGxPZlJlc3VsdDg8TTEsIE0yLCBNMywgTTQs
IE01LCBNNiwgTTcsIE04Pjo6dHlwZSgKKyAgICAgIDo6dGVzdGluZzo6QWxsT2YobTEsIG0yLCBt
MywgbTQpLAorICAgICAgOjp0ZXN0aW5nOjpBbGxPZihtNSwgbTYsIG03LCBtOCkpOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgTTEsIHR5cGVuYW1lIE0yLCB0eXBlbmFtZSBNMywgdHlwZW5hbWUg
TTQsIHR5cGVuYW1lIE01LAorICAgIHR5cGVuYW1lIE02LCB0eXBlbmFtZSBNNywgdHlwZW5hbWUg
TTgsIHR5cGVuYW1lIE05PgoraW5saW5lIHR5cGVuYW1lIGludGVybmFsOjpBbGxPZlJlc3VsdDk8
TTEsIE0yLCBNMywgTTQsIE01LCBNNiwgTTcsIE04LCBNOT46OnR5cGUKK0FsbE9mKE0xIG0xLCBN
MiBtMiwgTTMgbTMsIE00IG00LCBNNSBtNSwgTTYgbTYsIE03IG03LCBNOCBtOCwgTTkgbTkpIHsK
KyAgcmV0dXJuIHR5cGVuYW1lIGludGVybmFsOjpBbGxPZlJlc3VsdDk8TTEsIE0yLCBNMywgTTQs
IE01LCBNNiwgTTcsIE04LAorICAgICAgTTk+Ojp0eXBlKAorICAgICAgOjp0ZXN0aW5nOjpBbGxP
ZihtMSwgbTIsIG0zLCBtNCksCisgICAgICA6OnRlc3Rpbmc6OkFsbE9mKG01LCBtNiwgbTcsIG04
LCBtOSkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTTEsIHR5cGVuYW1lIE0yLCB0eXBlbmFt
ZSBNMywgdHlwZW5hbWUgTTQsIHR5cGVuYW1lIE01LAorICAgIHR5cGVuYW1lIE02LCB0eXBlbmFt
ZSBNNywgdHlwZW5hbWUgTTgsIHR5cGVuYW1lIE05LCB0eXBlbmFtZSBNMTA+CitpbmxpbmUgdHlw
ZW5hbWUgaW50ZXJuYWw6OkFsbE9mUmVzdWx0MTA8TTEsIE0yLCBNMywgTTQsIE01LCBNNiwgTTcs
IE04LCBNOSwKKyAgICBNMTA+Ojp0eXBlCitBbGxPZihNMSBtMSwgTTIgbTIsIE0zIG0zLCBNNCBt
NCwgTTUgbTUsIE02IG02LCBNNyBtNywgTTggbTgsIE05IG05LCBNMTAgbTEwKSB7CisgIHJldHVy
biB0eXBlbmFtZSBpbnRlcm5hbDo6QWxsT2ZSZXN1bHQxMDxNMSwgTTIsIE0zLCBNNCwgTTUsIE02
LCBNNywgTTgsIE05LAorICAgICAgTTEwPjo6dHlwZSgKKyAgICAgIDo6dGVzdGluZzo6QWxsT2Yo
bTEsIG0yLCBtMywgbTQsIG01KSwKKyAgICAgIDo6dGVzdGluZzo6QWxsT2YobTYsIG03LCBtOCwg
bTksIG0xMCkpOworfQorCisvLyBBbnlPZihtMSwgbTIsIC4uLiwgbWspIG1hdGNoZXMgYW55IHZh
bHVlIHRoYXQgbWF0Y2hlcyBhbnkgb2YgdGhlIGdpdmVuCisvLyBzdWItbWF0Y2hlcnMuICBBbnlP
ZiBpcyBjYWxsZWQgZnVsbHkgcXVhbGlmaWVkIHRvIHByZXZlbnQgQURMIGZyb20gZmlyaW5nLgor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgTTEsIHR5cGVuYW1lIE0yPgoraW5saW5lIHR5cGVuYW1lIGlu
dGVybmFsOjpBbnlPZlJlc3VsdDI8TTEsIE0yPjo6dHlwZQorQW55T2YoTTEgbTEsIE0yIG0yKSB7
CisgIHJldHVybiB0eXBlbmFtZSBpbnRlcm5hbDo6QW55T2ZSZXN1bHQyPE0xLCBNMj46OnR5cGUo
CisgICAgICBtMSwKKyAgICAgIG0yKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIE0xLCB0eXBl
bmFtZSBNMiwgdHlwZW5hbWUgTTM+CitpbmxpbmUgdHlwZW5hbWUgaW50ZXJuYWw6OkFueU9mUmVz
dWx0MzxNMSwgTTIsIE0zPjo6dHlwZQorQW55T2YoTTEgbTEsIE0yIG0yLCBNMyBtMykgeworICBy
ZXR1cm4gdHlwZW5hbWUgaW50ZXJuYWw6OkFueU9mUmVzdWx0MzxNMSwgTTIsIE0zPjo6dHlwZSgK
KyAgICAgIG0xLAorICAgICAgOjp0ZXN0aW5nOjpBbnlPZihtMiwgbTMpKTsKK30KKwordGVtcGxh
dGUgPHR5cGVuYW1lIE0xLCB0eXBlbmFtZSBNMiwgdHlwZW5hbWUgTTMsIHR5cGVuYW1lIE00Pgor
aW5saW5lIHR5cGVuYW1lIGludGVybmFsOjpBbnlPZlJlc3VsdDQ8TTEsIE0yLCBNMywgTTQ+Ojp0
eXBlCitBbnlPZihNMSBtMSwgTTIgbTIsIE0zIG0zLCBNNCBtNCkgeworICByZXR1cm4gdHlwZW5h
bWUgaW50ZXJuYWw6OkFueU9mUmVzdWx0NDxNMSwgTTIsIE0zLCBNND46OnR5cGUoCisgICAgICA6
OnRlc3Rpbmc6OkFueU9mKG0xLCBtMiksCisgICAgICA6OnRlc3Rpbmc6OkFueU9mKG0zLCBtNCkp
OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTTEsIHR5cGVuYW1lIE0yLCB0eXBlbmFtZSBNMywg
dHlwZW5hbWUgTTQsIHR5cGVuYW1lIE01PgoraW5saW5lIHR5cGVuYW1lIGludGVybmFsOjpBbnlP
ZlJlc3VsdDU8TTEsIE0yLCBNMywgTTQsIE01Pjo6dHlwZQorQW55T2YoTTEgbTEsIE0yIG0yLCBN
MyBtMywgTTQgbTQsIE01IG01KSB7CisgIHJldHVybiB0eXBlbmFtZSBpbnRlcm5hbDo6QW55T2ZS
ZXN1bHQ1PE0xLCBNMiwgTTMsIE00LCBNNT46OnR5cGUoCisgICAgICA6OnRlc3Rpbmc6OkFueU9m
KG0xLCBtMiksCisgICAgICA6OnRlc3Rpbmc6OkFueU9mKG0zLCBtNCwgbTUpKTsKK30KKwordGVt
cGxhdGUgPHR5cGVuYW1lIE0xLCB0eXBlbmFtZSBNMiwgdHlwZW5hbWUgTTMsIHR5cGVuYW1lIE00
LCB0eXBlbmFtZSBNNSwKKyAgICB0eXBlbmFtZSBNNj4KK2lubGluZSB0eXBlbmFtZSBpbnRlcm5h
bDo6QW55T2ZSZXN1bHQ2PE0xLCBNMiwgTTMsIE00LCBNNSwgTTY+Ojp0eXBlCitBbnlPZihNMSBt
MSwgTTIgbTIsIE0zIG0zLCBNNCBtNCwgTTUgbTUsIE02IG02KSB7CisgIHJldHVybiB0eXBlbmFt
ZSBpbnRlcm5hbDo6QW55T2ZSZXN1bHQ2PE0xLCBNMiwgTTMsIE00LCBNNSwgTTY+Ojp0eXBlKAor
ICAgICAgOjp0ZXN0aW5nOjpBbnlPZihtMSwgbTIsIG0zKSwKKyAgICAgIDo6dGVzdGluZzo6QW55
T2YobTQsIG01LCBtNikpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTTEsIHR5cGVuYW1lIE0y
LCB0eXBlbmFtZSBNMywgdHlwZW5hbWUgTTQsIHR5cGVuYW1lIE01LAorICAgIHR5cGVuYW1lIE02
LCB0eXBlbmFtZSBNNz4KK2lubGluZSB0eXBlbmFtZSBpbnRlcm5hbDo6QW55T2ZSZXN1bHQ3PE0x
LCBNMiwgTTMsIE00LCBNNSwgTTYsIE03Pjo6dHlwZQorQW55T2YoTTEgbTEsIE0yIG0yLCBNMyBt
MywgTTQgbTQsIE01IG01LCBNNiBtNiwgTTcgbTcpIHsKKyAgcmV0dXJuIHR5cGVuYW1lIGludGVy
bmFsOjpBbnlPZlJlc3VsdDc8TTEsIE0yLCBNMywgTTQsIE01LCBNNiwgTTc+Ojp0eXBlKAorICAg
ICAgOjp0ZXN0aW5nOjpBbnlPZihtMSwgbTIsIG0zKSwKKyAgICAgIDo6dGVzdGluZzo6QW55T2Yo
bTQsIG01LCBtNiwgbTcpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIE0xLCB0eXBlbmFtZSBN
MiwgdHlwZW5hbWUgTTMsIHR5cGVuYW1lIE00LCB0eXBlbmFtZSBNNSwKKyAgICB0eXBlbmFtZSBN
NiwgdHlwZW5hbWUgTTcsIHR5cGVuYW1lIE04PgoraW5saW5lIHR5cGVuYW1lIGludGVybmFsOjpB
bnlPZlJlc3VsdDg8TTEsIE0yLCBNMywgTTQsIE01LCBNNiwgTTcsIE04Pjo6dHlwZQorQW55T2Yo
TTEgbTEsIE0yIG0yLCBNMyBtMywgTTQgbTQsIE01IG01LCBNNiBtNiwgTTcgbTcsIE04IG04KSB7
CisgIHJldHVybiB0eXBlbmFtZSBpbnRlcm5hbDo6QW55T2ZSZXN1bHQ4PE0xLCBNMiwgTTMsIE00
LCBNNSwgTTYsIE03LCBNOD46OnR5cGUoCisgICAgICA6OnRlc3Rpbmc6OkFueU9mKG0xLCBtMiwg
bTMsIG00KSwKKyAgICAgIDo6dGVzdGluZzo6QW55T2YobTUsIG02LCBtNywgbTgpKTsKK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIE0xLCB0eXBlbmFtZSBNMiwgdHlwZW5hbWUgTTMsIHR5cGVuYW1l
IE00LCB0eXBlbmFtZSBNNSwKKyAgICB0eXBlbmFtZSBNNiwgdHlwZW5hbWUgTTcsIHR5cGVuYW1l
IE04LCB0eXBlbmFtZSBNOT4KK2lubGluZSB0eXBlbmFtZSBpbnRlcm5hbDo6QW55T2ZSZXN1bHQ5
PE0xLCBNMiwgTTMsIE00LCBNNSwgTTYsIE03LCBNOCwgTTk+Ojp0eXBlCitBbnlPZihNMSBtMSwg
TTIgbTIsIE0zIG0zLCBNNCBtNCwgTTUgbTUsIE02IG02LCBNNyBtNywgTTggbTgsIE05IG05KSB7
CisgIHJldHVybiB0eXBlbmFtZSBpbnRlcm5hbDo6QW55T2ZSZXN1bHQ5PE0xLCBNMiwgTTMsIE00
LCBNNSwgTTYsIE03LCBNOCwKKyAgICAgIE05Pjo6dHlwZSgKKyAgICAgIDo6dGVzdGluZzo6QW55
T2YobTEsIG0yLCBtMywgbTQpLAorICAgICAgOjp0ZXN0aW5nOjpBbnlPZihtNSwgbTYsIG03LCBt
OCwgbTkpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIE0xLCB0eXBlbmFtZSBNMiwgdHlwZW5h
bWUgTTMsIHR5cGVuYW1lIE00LCB0eXBlbmFtZSBNNSwKKyAgICB0eXBlbmFtZSBNNiwgdHlwZW5h
bWUgTTcsIHR5cGVuYW1lIE04LCB0eXBlbmFtZSBNOSwgdHlwZW5hbWUgTTEwPgoraW5saW5lIHR5
cGVuYW1lIGludGVybmFsOjpBbnlPZlJlc3VsdDEwPE0xLCBNMiwgTTMsIE00LCBNNSwgTTYsIE03
LCBNOCwgTTksCisgICAgTTEwPjo6dHlwZQorQW55T2YoTTEgbTEsIE0yIG0yLCBNMyBtMywgTTQg
bTQsIE01IG01LCBNNiBtNiwgTTcgbTcsIE04IG04LCBNOSBtOSwgTTEwIG0xMCkgeworICByZXR1
cm4gdHlwZW5hbWUgaW50ZXJuYWw6OkFueU9mUmVzdWx0MTA8TTEsIE0yLCBNMywgTTQsIE01LCBN
NiwgTTcsIE04LCBNOSwKKyAgICAgIE0xMD46OnR5cGUoCisgICAgICA6OnRlc3Rpbmc6OkFueU9m
KG0xLCBtMiwgbTMsIG00LCBtNSksCisgICAgICA6OnRlc3Rpbmc6OkFueU9mKG02LCBtNywgbTgs
IG05LCBtMTApKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKKworCisvLyBUaGUgTUFU
Q0hFUiogZmFtaWx5IG9mIG1hY3JvcyBjYW4gYmUgdXNlZCBpbiBhIG5hbWVzcGFjZSBzY29wZSB0
bworLy8gZGVmaW5lIGN1c3RvbSBtYXRjaGVycyBlYXNpbHkuCisvLworLy8gQmFzaWMgVXNhZ2UK
Ky8vID09PT09PT09PT09CisvLworLy8gVGhlIHN5bnRheAorLy8KKy8vICAgTUFUQ0hFUihuYW1l
LCBkZXNjcmlwdGlvbl9zdHJpbmcpIHsgc3RhdGVtZW50czsgfQorLy8KKy8vIGRlZmluZXMgYSBt
YXRjaGVyIHdpdGggdGhlIGdpdmVuIG5hbWUgdGhhdCBleGVjdXRlcyB0aGUgc3RhdGVtZW50cywK
Ky8vIHdoaWNoIG11c3QgcmV0dXJuIGEgYm9vbCB0byBpbmRpY2F0ZSBpZiB0aGUgbWF0Y2ggc3Vj
Y2VlZHMuICBJbnNpZGUKKy8vIHRoZSBzdGF0ZW1lbnRzLCB5b3UgY2FuIHJlZmVyIHRvIHRoZSB2
YWx1ZSBiZWluZyBtYXRjaGVkIGJ5ICdhcmcnLAorLy8gYW5kIHJlZmVyIHRvIGl0cyB0eXBlIGJ5
ICdhcmdfdHlwZScuCisvLworLy8gVGhlIGRlc2NyaXB0aW9uIHN0cmluZyBkb2N1bWVudHMgd2hh
dCB0aGUgbWF0Y2hlciBkb2VzLCBhbmQgaXMgdXNlZAorLy8gdG8gZ2VuZXJhdGUgdGhlIGZhaWx1
cmUgbWVzc2FnZSB3aGVuIHRoZSBtYXRjaCBmYWlscy4gIFNpbmNlIGEKKy8vIE1BVENIRVIoKSBp
cyB1c3VhbGx5IGRlZmluZWQgaW4gYSBoZWFkZXIgZmlsZSBzaGFyZWQgYnkgbXVsdGlwbGUKKy8v
IEMrKyBzb3VyY2UgZmlsZXMsIHdlIHJlcXVpcmUgdGhlIGRlc2NyaXB0aW9uIHRvIGJlIGEgQy1z
dHJpbmcKKy8vIGxpdGVyYWwgdG8gYXZvaWQgcG9zc2libGUgc2lkZSBlZmZlY3RzLiAgSXQgY2Fu
IGJlIGVtcHR5LCBpbiB3aGljaAorLy8gY2FzZSB3ZSdsbCB1c2UgdGhlIHNlcXVlbmNlIG9mIHdv
cmRzIGluIHRoZSBtYXRjaGVyIG5hbWUgYXMgdGhlCisvLyBkZXNjcmlwdGlvbi4KKy8vCisvLyBG
b3IgZXhhbXBsZToKKy8vCisvLyAgIE1BVENIRVIoSXNFdmVuLCAiIikgeyByZXR1cm4gKGFyZyAl
IDIpID09IDA7IH0KKy8vCisvLyBhbGxvd3MgeW91IHRvIHdyaXRlCisvLworLy8gICAvLyBFeHBl
Y3RzIG1vY2tfZm9vLkJhcihuKSB0byBiZSBjYWxsZWQgd2hlcmUgbiBpcyBldmVuLgorLy8gICBF
WFBFQ1RfQ0FMTChtb2NrX2ZvbywgQmFyKElzRXZlbigpKSk7CisvLworLy8gb3IsCisvLworLy8g
ICAvLyBWZXJpZmllcyB0aGF0IHRoZSB2YWx1ZSBvZiBzb21lX2V4cHJlc3Npb24gaXMgZXZlbi4K
Ky8vICAgRVhQRUNUX1RIQVQoc29tZV9leHByZXNzaW9uLCBJc0V2ZW4oKSk7CisvLworLy8gSWYg
dGhlIGFib3ZlIGFzc2VydGlvbiBmYWlscywgaXQgd2lsbCBwcmludCBzb21ldGhpbmcgbGlrZToK
Ky8vCisvLyAgIFZhbHVlIG9mOiBzb21lX2V4cHJlc3Npb24KKy8vICAgRXhwZWN0ZWQ6IGlzIGV2
ZW4KKy8vICAgICBBY3R1YWw6IDcKKy8vCisvLyB3aGVyZSB0aGUgZGVzY3JpcHRpb24gImlzIGV2
ZW4iIGlzIGF1dG9tYXRpY2FsbHkgY2FsY3VsYXRlZCBmcm9tIHRoZQorLy8gbWF0Y2hlciBuYW1l
IElzRXZlbi4KKy8vCisvLyBBcmd1bWVudCBUeXBlCisvLyA9PT09PT09PT09PT09CisvLworLy8g
Tm90ZSB0aGF0IHRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBiZWluZyBtYXRjaGVkIChhcmdfdHlwZSkg
aXMKKy8vIGRldGVybWluZWQgYnkgdGhlIGNvbnRleHQgaW4gd2hpY2ggeW91IHVzZSB0aGUgbWF0
Y2hlciBhbmQgaXMKKy8vIHN1cHBsaWVkIHRvIHlvdSBieSB0aGUgY29tcGlsZXIsIHNvIHlvdSBk
b24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0CisvLyBkZWNsYXJpbmcgaXQgKG5vciBjYW4geW91KS4g
IFRoaXMgYWxsb3dzIHRoZSBtYXRjaGVyIHRvIGJlCisvLyBwb2x5bW9ycGhpYy4gIEZvciBleGFt
cGxlLCBJc0V2ZW4oKSBjYW4gYmUgdXNlZCB0byBtYXRjaCBhbnkgdHlwZQorLy8gd2hlcmUgdGhl
IHZhbHVlIG9mICIoYXJnICUgMikgPT0gMCIgY2FuIGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRv
CisvLyBhIGJvb2wuICBJbiB0aGUgIkJhcihJc0V2ZW4oKSkiIGV4YW1wbGUgYWJvdmUsIGlmIG1l
dGhvZCBCYXIoKQorLy8gdGFrZXMgYW4gaW50LCAnYXJnX3R5cGUnIHdpbGwgYmUgaW50OyBpZiBp
dCB0YWtlcyBhbiB1bnNpZ25lZCBsb25nLAorLy8gJ2FyZ190eXBlJyB3aWxsIGJlIHVuc2lnbmVk
IGxvbmc7IGFuZCBzbyBvbi4KKy8vCisvLyBQYXJhbWV0ZXJpemluZyBNYXRjaGVycworLy8gPT09
PT09PT09PT09PT09PT09PT09PT0KKy8vCisvLyBTb21ldGltZXMgeW91J2xsIHdhbnQgdG8gcGFy
YW1ldGVyaXplIHRoZSBtYXRjaGVyLiAgRm9yIHRoYXQgeW91CisvLyBjYW4gdXNlIGFub3RoZXIg
bWFjcm86CisvLworLy8gICBNQVRDSEVSX1AobmFtZSwgcGFyYW1fbmFtZSwgZGVzY3JpcHRpb25f
c3RyaW5nKSB7IHN0YXRlbWVudHM7IH0KKy8vCisvLyBGb3IgZXhhbXBsZToKKy8vCisvLyAgIE1B
VENIRVJfUChIYXNBYnNvbHV0ZVZhbHVlLCB2YWx1ZSwgIiIpIHsgcmV0dXJuIGFicyhhcmcpID09
IHZhbHVlOyB9CisvLworLy8gd2lsbCBhbGxvdyB5b3UgdG8gd3JpdGU6CisvLworLy8gICBFWFBF
Q1RfVEhBVChCbGFoKCJhIiksIEhhc0Fic29sdXRlVmFsdWUobikpOworLy8KKy8vIHdoaWNoIG1h
eSBsZWFkIHRvIHRoaXMgbWVzc2FnZSAoYXNzdW1pbmcgbiBpcyAxMCk6CisvLworLy8gICBWYWx1
ZSBvZjogQmxhaCgiYSIpCisvLyAgIEV4cGVjdGVkOiBoYXMgYWJzb2x1dGUgdmFsdWUgMTAKKy8v
ICAgICBBY3R1YWw6IC05CisvLworLy8gTm90ZSB0aGF0IGJvdGggdGhlIG1hdGNoZXIgZGVzY3Jp
cHRpb24gYW5kIGl0cyBwYXJhbWV0ZXIgYXJlCisvLyBwcmludGVkLCBtYWtpbmcgdGhlIG1lc3Nh
Z2UgaHVtYW4tZnJpZW5kbHkuCisvLworLy8gSW4gdGhlIG1hdGNoZXIgZGVmaW5pdGlvbiBib2R5
LCB5b3UgY2FuIHdyaXRlICdmb29fdHlwZScgdG8KKy8vIHJlZmVyZW5jZSB0aGUgdHlwZSBvZiBh
IHBhcmFtZXRlciBuYW1lZCAnZm9vJy4gIEZvciBleGFtcGxlLCBpbiB0aGUKKy8vIGJvZHkgb2Yg
TUFUQ0hFUl9QKEhhc0Fic29sdXRlVmFsdWUsIHZhbHVlKSBhYm92ZSwgeW91IGNhbiB3cml0ZQor
Ly8gJ3ZhbHVlX3R5cGUnIHRvIHJlZmVyIHRvIHRoZSB0eXBlIG9mICd2YWx1ZScuCisvLworLy8g
V2UgYWxzbyBwcm92aWRlIE1BVENIRVJfUDIsIE1BVENIRVJfUDMsIC4uLiwgdXAgdG8gTUFUQ0hF
Ul9QMTAgdG8KKy8vIHN1cHBvcnQgbXVsdGktcGFyYW1ldGVyIG1hdGNoZXJzLgorLy8KKy8vIERl
c2NyaWJpbmcgUGFyYW1ldGVyaXplZCBNYXRjaGVycworLy8gPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09CisvLworLy8gVGhlIGxhc3QgYXJndW1lbnQgdG8gTUFUQ0hFUiooKSBpcyBh
IHN0cmluZy10eXBlZCBleHByZXNzaW9uLiAgVGhlCisvLyBleHByZXNzaW9uIGNhbiByZWZlcmVu
Y2UgYWxsIG9mIHRoZSBtYXRjaGVyJ3MgcGFyYW1ldGVycyBhbmQgYQorLy8gc3BlY2lhbCBib29s
LXR5cGVkIHZhcmlhYmxlIG5hbWVkICduZWdhdGlvbicuICBXaGVuICduZWdhdGlvbicgaXMKKy8v
IGZhbHNlLCB0aGUgZXhwcmVzc2lvbiBzaG91bGQgZXZhbHVhdGUgdG8gdGhlIG1hdGNoZXIncyBk
ZXNjcmlwdGlvbjsKKy8vIG90aGVyd2lzZSBpdCBzaG91bGQgZXZhbHVhdGUgdG8gdGhlIGRlc2Ny
aXB0aW9uIG9mIHRoZSBuZWdhdGlvbiBvZgorLy8gdGhlIG1hdGNoZXIuICBGb3IgZXhhbXBsZSwK
Ky8vCisvLyAgIHVzaW5nIHRlc3Rpbmc6OlByaW50VG9TdHJpbmc7CisvLworLy8gICBNQVRDSEVS
X1AyKEluQ2xvc2VkUmFuZ2UsIGxvdywgaGksCisvLyAgICAgICBzdHJpbmcobmVnYXRpb24gPyAi
aXMgbm90IiA6ICJpcyIpICsgIiBpbiByYW5nZSBbIiArCisvLyAgICAgICBQcmludFRvU3RyaW5n
KGxvdykgKyAiLCAiICsgUHJpbnRUb1N0cmluZyhoaSkgKyAiXSIpIHsKKy8vICAgICByZXR1cm4g
bG93IDw9IGFyZyAmJiBhcmcgPD0gaGk7CisvLyAgIH0KKy8vICAgLi4uCisvLyAgIEVYUEVDVF9U
SEFUKDMsIEluQ2xvc2VkUmFuZ2UoNCwgNikpOworLy8gICBFWFBFQ1RfVEhBVCgzLCBOb3QoSW5D
bG9zZWRSYW5nZSgyLCA0KSkpOworLy8KKy8vIHdvdWxkIGdlbmVyYXRlIHR3byBmYWlsdXJlcyB0
aGF0IGNvbnRhaW4gdGhlIHRleHQ6CisvLworLy8gICBFeHBlY3RlZDogaXMgaW4gcmFuZ2UgWzQs
IDZdCisvLyAgIC4uLgorLy8gICBFeHBlY3RlZDogaXMgbm90IGluIHJhbmdlIFsyLCA0XQorLy8K
Ky8vIElmIHlvdSBzcGVjaWZ5ICIiIGFzIHRoZSBkZXNjcmlwdGlvbiwgdGhlIGZhaWx1cmUgbWVz
c2FnZSB3aWxsCisvLyBjb250YWluIHRoZSBzZXF1ZW5jZSBvZiB3b3JkcyBpbiB0aGUgbWF0Y2hl
ciBuYW1lIGZvbGxvd2VkIGJ5IHRoZQorLy8gcGFyYW1ldGVyIHZhbHVlcyBwcmludGVkIGFzIGEg
dHVwbGUuICBGb3IgZXhhbXBsZSwKKy8vCisvLyAgIE1BVENIRVJfUDIoSW5DbG9zZWRSYW5nZSwg
bG93LCBoaSwgIiIpIHsgLi4uIH0KKy8vICAgLi4uCisvLyAgIEVYUEVDVF9USEFUKDMsIEluQ2xv
c2VkUmFuZ2UoNCwgNikpOworLy8gICBFWFBFQ1RfVEhBVCgzLCBOb3QoSW5DbG9zZWRSYW5nZSgy
LCA0KSkpOworLy8KKy8vIHdvdWxkIGdlbmVyYXRlIHR3byBmYWlsdXJlcyB0aGF0IGNvbnRhaW4g
dGhlIHRleHQ6CisvLworLy8gICBFeHBlY3RlZDogaW4gY2xvc2VkIHJhbmdlICg0LCA2KQorLy8g
ICAuLi4KKy8vICAgRXhwZWN0ZWQ6IG5vdCAoaW4gY2xvc2VkIHJhbmdlICgyLCA0KSkKKy8vCisv
LyBUeXBlcyBvZiBNYXRjaGVyIFBhcmFtZXRlcnMKKy8vID09PT09PT09PT09PT09PT09PT09PT09
PT09PQorLy8KKy8vIEZvciB0aGUgcHVycG9zZSBvZiB0eXBpbmcsIHlvdSBjYW4gdmlldworLy8K
Ky8vICAgTUFUQ0hFUl9QayhGb28sIHAxLCAuLi4sIHBrLCBkZXNjcmlwdGlvbl9zdHJpbmcpIHsg
Li4uIH0KKy8vCisvLyBhcyBzaG9ydGhhbmQgZm9yCisvLworLy8gICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgcDFfdHlwZSwgLi4uLCB0eXBlbmFtZSBwa190eXBlPgorLy8gICBGb29NYXRjaGVyUGs8cDFf
dHlwZSwgLi4uLCBwa190eXBlPgorLy8gICBGb28ocDFfdHlwZSBwMSwgLi4uLCBwa190eXBlIHBr
KSB7IC4uLiB9CisvLworLy8gV2hlbiB5b3Ugd3JpdGUgRm9vKHYxLCAuLi4sIHZrKSwgdGhlIGNv
bXBpbGVyIGluZmVycyB0aGUgdHlwZXMgb2YKKy8vIHRoZSBwYXJhbWV0ZXJzIHYxLCAuLi4sIGFu
ZCB2ayBmb3IgeW91LiAgSWYgeW91IGFyZSBub3QgaGFwcHkgd2l0aAorLy8gdGhlIHJlc3VsdCBv
ZiB0aGUgdHlwZSBpbmZlcmVuY2UsIHlvdSBjYW4gc3BlY2lmeSB0aGUgdHlwZXMgYnkKKy8vIGV4
cGxpY2l0bHkgaW5zdGFudGlhdGluZyB0aGUgdGVtcGxhdGUsIGFzIGluIEZvbzxsb25nLCBib29s
Pig1LAorLy8gZmFsc2UpLiAgQXMgc2FpZCBlYXJsaWVyLCB5b3UgZG9uJ3QgZ2V0IHRvIChvciBu
ZWVkIHRvKSBzcGVjaWZ5CisvLyAnYXJnX3R5cGUnIGFzIHRoYXQncyBkZXRlcm1pbmVkIGJ5IHRo
ZSBjb250ZXh0IGluIHdoaWNoIHRoZSBtYXRjaGVyCisvLyBpcyB1c2VkLiAgWW91IGNhbiBhc3Np
Z24gdGhlIHJlc3VsdCBvZiBleHByZXNzaW9uIEZvbyhwMSwgLi4uLCBwaykKKy8vIHRvIGEgdmFy
aWFibGUgb2YgdHlwZSBGb29NYXRjaGVyUGs8cDFfdHlwZSwgLi4uLCBwa190eXBlPi4gIFRoaXMK
Ky8vIGNhbiBiZSB1c2VmdWwgd2hlbiBjb21wb3NpbmcgbWF0Y2hlcnMuCisvLworLy8gV2hpbGUg
eW91IGNhbiBpbnN0YW50aWF0ZSBhIG1hdGNoZXIgdGVtcGxhdGUgd2l0aCByZWZlcmVuY2UgdHlw
ZXMsCisvLyBwYXNzaW5nIHRoZSBwYXJhbWV0ZXJzIGJ5IHBvaW50ZXIgdXN1YWxseSBtYWtlcyB5
b3VyIGNvZGUgbW9yZQorLy8gcmVhZGFibGUuICBJZiwgaG93ZXZlciwgeW91IHN0aWxsIHdhbnQg
dG8gcGFzcyBhIHBhcmFtZXRlciBieQorLy8gcmVmZXJlbmNlLCBiZSBhd2FyZSB0aGF0IGluIHRo
ZSBmYWlsdXJlIG1lc3NhZ2UgZ2VuZXJhdGVkIGJ5IHRoZQorLy8gbWF0Y2hlciB5b3Ugd2lsbCBz
ZWUgdGhlIHZhbHVlIG9mIHRoZSByZWZlcmVuY2VkIG9iamVjdCBidXQgbm90IGl0cworLy8gYWRk
cmVzcy4KKy8vCisvLyBFeHBsYWluaW5nIE1hdGNoIFJlc3VsdHMKKy8vID09PT09PT09PT09PT09
PT09PT09PT09PQorLy8KKy8vIFNvbWV0aW1lcyB0aGUgbWF0Y2hlciBkZXNjcmlwdGlvbiBhbG9u
ZSBpc24ndCBlbm91Z2ggdG8gZXhwbGFpbiB3aHkKKy8vIHRoZSBtYXRjaCBoYXMgZmFpbGVkIG9y
IHN1Y2NlZWRlZC4gIEZvciBleGFtcGxlLCB3aGVuIGV4cGVjdGluZyBhCisvLyBsb25nIHN0cmlu
ZywgaXQgY2FuIGJlIHZlcnkgaGVscGZ1bCB0byBhbHNvIHByaW50IHRoZSBkaWZmIGJldHdlZW4K
Ky8vIHRoZSBleHBlY3RlZCBzdHJpbmcgYW5kIHRoZSBhY3R1YWwgb25lLiAgVG8gYWNoaWV2ZSB0
aGF0LCB5b3UgY2FuCisvLyBvcHRpb25hbGx5IHN0cmVhbSBhZGRpdGlvbmFsIGluZm9ybWF0aW9u
IHRvIGEgc3BlY2lhbCB2YXJpYWJsZQorLy8gbmFtZWQgcmVzdWx0X2xpc3RlbmVyLCB3aG9zZSB0
eXBlIGlzIGEgcG9pbnRlciB0byBjbGFzcworLy8gTWF0Y2hSZXN1bHRMaXN0ZW5lcjoKKy8vCisv
LyAgIE1BVENIRVJfUChFcXVhbHNMb25nU3RyaW5nLCBzdHIsICIiKSB7CisvLyAgICAgaWYgKGFy
ZyA9PSBzdHIpIHJldHVybiB0cnVlOworLy8KKy8vICAgICAqcmVzdWx0X2xpc3RlbmVyIDw8ICJ0
aGUgZGlmZmVyZW5jZTogIgorLy8vICAgICAgICAgICAgICAgICAgICAgPDwgRGlmZlN0cmluZ3Mo
c3RyLCBhcmcpOworLy8gICAgIHJldHVybiBmYWxzZTsKKy8vICAgfQorLy8KKy8vIE92ZXJsb2Fk
aW5nIE1hdGNoZXJzCisvLyA9PT09PT09PT09PT09PT09PT09PQorLy8KKy8vIFlvdSBjYW4gb3Zl
cmxvYWQgbWF0Y2hlcnMgd2l0aCBkaWZmZXJlbnQgbnVtYmVycyBvZiBwYXJhbWV0ZXJzOgorLy8K
Ky8vICAgTUFUQ0hFUl9QKEJsYWgsIGEsIGRlc2NyaXB0aW9uX3N0cmluZzEpIHsgLi4uIH0KKy8v
ICAgTUFUQ0hFUl9QMihCbGFoLCBhLCBiLCBkZXNjcmlwdGlvbl9zdHJpbmcyKSB7IC4uLiB9Cisv
LworLy8gQ2F2ZWF0cworLy8gPT09PT09PQorLy8KKy8vIFdoZW4gZGVmaW5pbmcgYSBuZXcgbWF0
Y2hlciwgeW91IHNob3VsZCBhbHNvIGNvbnNpZGVyIGltcGxlbWVudGluZworLy8gTWF0Y2hlcklu
dGVyZmFjZSBvciB1c2luZyBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKCkuICBUaGVzZQorLy8gYXBw
cm9hY2hlcyByZXF1aXJlIG1vcmUgd29yayB0aGFuIHRoZSBNQVRDSEVSKiBtYWNyb3MsIGJ1dCBh
bHNvCisvLyBnaXZlIHlvdSBtb3JlIGNvbnRyb2wgb24gdGhlIHR5cGVzIG9mIHRoZSB2YWx1ZSBi
ZWluZyBtYXRjaGVkIGFuZAorLy8gdGhlIG1hdGNoZXIgcGFyYW1ldGVycywgd2hpY2ggbWF5IGxl
YWRzIHRvIGJldHRlciBjb21waWxlciBlcnJvcgorLy8gbWVzc2FnZXMgd2hlbiB0aGUgbWF0Y2hl
ciBpcyB1c2VkIHdyb25nLiAgVGhleSBhbHNvIGFsbG93CisvLyBvdmVybG9hZGluZyBtYXRjaGVy
cyBiYXNlZCBvbiBwYXJhbWV0ZXIgdHlwZXMgKGFzIG9wcG9zZWQgdG8ganVzdAorLy8gYmFzZWQg
b24gdGhlIG51bWJlciBvZiBwYXJhbWV0ZXJzKS4KKy8vCisvLyBNQVRDSEVSKigpIGNhbiBvbmx5
IGJlIHVzZWQgaW4gYSBuYW1lc3BhY2Ugc2NvcGUuICBUaGUgcmVhc29uIGlzCisvLyB0aGF0IEMr
KyBkb2Vzbid0IHlldCBhbGxvdyBmdW5jdGlvbi1sb2NhbCB0eXBlcyB0byBiZSB1c2VkIHRvCisv
LyBpbnN0YW50aWF0ZSB0ZW1wbGF0ZXMuICBUaGUgdXAtY29taW5nIEMrKzB4IHN0YW5kYXJkIHdp
bGwgZml4IHRoaXMuCisvLyBPbmNlIHRoYXQncyBkb25lLCB3ZSdsbCBjb25zaWRlciBzdXBwb3J0
aW5nIHVzaW5nIE1BVENIRVIqKCkgaW5zaWRlCisvLyBhIGZ1bmN0aW9uLgorLy8KKy8vIE1vcmUg
SW5mb3JtYXRpb24KKy8vID09PT09PT09PT09PT09PT0KKy8vCisvLyBUbyBsZWFybiBtb3JlIGFi
b3V0IHVzaW5nIHRoZXNlIG1hY3JvcywgcGxlYXNlIHNlYXJjaCBmb3IgJ01BVENIRVInCisvLyBv
biBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9jay93aWtpL0Nvb2tCb29rLgorCisj
ZGVmaW5lIE1BVENIRVIobmFtZSwgZGVzY3JpcHRpb24pXAorICBjbGFzcyBuYW1lIyNNYXRjaGVy
IHtcCisgICBwdWJsaWM6XAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBhcmdfdHlwZT5cCisgICAg
Y2xhc3MgZ21vY2tfSW1wbCA6IHB1YmxpYyA6OnRlc3Rpbmc6Ok1hdGNoZXJJbnRlcmZhY2U8YXJn
X3R5cGU+IHtcCisgICAgIHB1YmxpYzpcCisgICAgICBnbW9ja19JbXBsKClcCisgICAgICAgICAg
IHt9XAorICAgICAgdmlydHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbihcCisgICAgICAgICAgYXJn
X3R5cGUgYXJnLCA6OnRlc3Rpbmc6Ok1hdGNoUmVzdWx0TGlzdGVuZXIqIHJlc3VsdF9saXN0ZW5l
cikgY29uc3Q7XAorICAgICAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0q
IGdtb2NrX29zKSBjb25zdCB7XAorICAgICAgICAqZ21vY2tfb3MgPDwgRm9ybWF0RGVzY3JpcHRp
b24oZmFsc2UpO1wKKyAgICAgIH1cCisgICAgICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVOZWdhdGlv
blRvKDo6c3RkOjpvc3RyZWFtKiBnbW9ja19vcykgY29uc3Qge1wKKyAgICAgICAgKmdtb2NrX29z
IDw8IEZvcm1hdERlc2NyaXB0aW9uKHRydWUpO1wKKyAgICAgIH1cCisgICAgIHByaXZhdGU6XAor
ICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6c3RyaW5nIEZvcm1hdERlc2NyaXB0aW9uKGJvb2wg
bmVnYXRpb24pIGNvbnN0IHtcCisgICAgICAgIGNvbnN0IDo6dGVzdGluZzo6aW50ZXJuYWw6OnN0
cmluZyBnbW9ja19kZXNjcmlwdGlvbiA9IChkZXNjcmlwdGlvbik7XAorICAgICAgICBpZiAoIWdt
b2NrX2Rlc2NyaXB0aW9uLmVtcHR5KCkpXAorICAgICAgICAgIHJldHVybiBnbW9ja19kZXNjcmlw
dGlvbjtcCisgICAgICAgIHJldHVybiA6OnRlc3Rpbmc6OmludGVybmFsOjpGb3JtYXRNYXRjaGVy
RGVzY3JpcHRpb24oXAorICAgICAgICAgICAgbmVnYXRpb24sICNuYW1lLCBcCisgICAgICAgICAg
ICA6OnRlc3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0
cmluZ3MoXAorICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6dHVwbGU8PigpKSk7XAorICAgICAg
fVwKKyAgICAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oZ21vY2tfSW1wbCk7XAorICAgIH07XAor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBhcmdfdHlwZT5cCisgICAgb3BlcmF0b3IgOjp0ZXN0aW5n
OjpNYXRjaGVyPGFyZ190eXBlPigpIGNvbnN0IHtcCisgICAgICByZXR1cm4gOjp0ZXN0aW5nOjpN
YXRjaGVyPGFyZ190eXBlPihcCisgICAgICAgICAgbmV3IGdtb2NrX0ltcGw8YXJnX3R5cGU+KCkp
O1wKKyAgICB9XAorICAgIG5hbWUjI01hdGNoZXIoKSB7XAorICAgIH1cCisgICBwcml2YXRlOlwK
KyAgICBHVEVTVF9ESVNBTExPV19BU1NJR05fKG5hbWUjI01hdGNoZXIpO1wKKyAgfTtcCisgIGlu
bGluZSBuYW1lIyNNYXRjaGVyIG5hbWUoKSB7XAorICAgIHJldHVybiBuYW1lIyNNYXRjaGVyKCk7
XAorICB9XAorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgYXJnX3R5cGU+XAorICBib29sIG5hbWUjI01h
dGNoZXI6Omdtb2NrX0ltcGw8YXJnX3R5cGU+OjpNYXRjaEFuZEV4cGxhaW4oXAorICAgICAgYXJn
X3R5cGUgYXJnLCBcCisgICAgICA6OnRlc3Rpbmc6Ok1hdGNoUmVzdWx0TGlzdGVuZXIqIHJlc3Vs
dF9saXN0ZW5lciBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXylcCisgICAgICAgICAgY29uc3QKKwor
I2RlZmluZSBNQVRDSEVSX1AobmFtZSwgcDAsIGRlc2NyaXB0aW9uKVwKKyAgdGVtcGxhdGUgPHR5
cGVuYW1lIHAwIyNfdHlwZT5cCisgIGNsYXNzIG5hbWUjI01hdGNoZXJQIHtcCisgICBwdWJsaWM6
XAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBhcmdfdHlwZT5cCisgICAgY2xhc3MgZ21vY2tfSW1w
bCA6IHB1YmxpYyA6OnRlc3Rpbmc6Ok1hdGNoZXJJbnRlcmZhY2U8YXJnX3R5cGU+IHtcCisgICAg
IHB1YmxpYzpcCisgICAgICBleHBsaWNpdCBnbW9ja19JbXBsKHAwIyNfdHlwZSBnbW9ja19wMClc
CisgICAgICAgICAgIDogcDAoZ21vY2tfcDApIHt9XAorICAgICAgdmlydHVhbCBib29sIE1hdGNo
QW5kRXhwbGFpbihcCisgICAgICAgICAgYXJnX3R5cGUgYXJnLCA6OnRlc3Rpbmc6Ok1hdGNoUmVz
dWx0TGlzdGVuZXIqIHJlc3VsdF9saXN0ZW5lcikgY29uc3Q7XAorICAgICAgdmlydHVhbCB2b2lk
IERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIGdtb2NrX29zKSBjb25zdCB7XAorICAgICAgICAq
Z21vY2tfb3MgPDwgRm9ybWF0RGVzY3JpcHRpb24oZmFsc2UpO1wKKyAgICAgIH1cCisgICAgICB2
aXJ0dWFsIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBnbW9ja19vcykg
Y29uc3Qge1wKKyAgICAgICAgKmdtb2NrX29zIDw8IEZvcm1hdERlc2NyaXB0aW9uKHRydWUpO1wK
KyAgICAgIH1cCisgICAgICBwMCMjX3R5cGUgcDA7XAorICAgICBwcml2YXRlOlwKKyAgICAgIDo6
dGVzdGluZzo6aW50ZXJuYWw6OnN0cmluZyBGb3JtYXREZXNjcmlwdGlvbihib29sIG5lZ2F0aW9u
KSBjb25zdCB7XAorICAgICAgICBjb25zdCA6OnRlc3Rpbmc6OmludGVybmFsOjpzdHJpbmcgZ21v
Y2tfZGVzY3JpcHRpb24gPSAoZGVzY3JpcHRpb24pO1wKKyAgICAgICAgaWYgKCFnbW9ja19kZXNj
cmlwdGlvbi5lbXB0eSgpKVwKKyAgICAgICAgICByZXR1cm4gZ21vY2tfZGVzY3JpcHRpb247XAor
ICAgICAgICByZXR1cm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6Rm9ybWF0TWF0Y2hlckRlc2NyaXB0
aW9uKFwKKyAgICAgICAgICAgIG5lZ2F0aW9uLCAjbmFtZSwgXAorICAgICAgICAgICAgOjp0ZXN0
aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKFwK
KyAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OnR1cGxlPHAwIyNfdHlwZT4ocDApKSk7XAorICAg
ICAgfVwKKyAgICAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oZ21vY2tfSW1wbCk7XAorICAgIH07
XAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBhcmdfdHlwZT5cCisgICAgb3BlcmF0b3IgOjp0ZXN0
aW5nOjpNYXRjaGVyPGFyZ190eXBlPigpIGNvbnN0IHtcCisgICAgICByZXR1cm4gOjp0ZXN0aW5n
OjpNYXRjaGVyPGFyZ190eXBlPihcCisgICAgICAgICAgbmV3IGdtb2NrX0ltcGw8YXJnX3R5cGU+
KHAwKSk7XAorICAgIH1cCisgICAgZXhwbGljaXQgbmFtZSMjTWF0Y2hlclAocDAjI190eXBlIGdt
b2NrX3AwKSA6IHAwKGdtb2NrX3AwKSB7XAorICAgIH1cCisgICAgcDAjI190eXBlIHAwO1wKKyAg
IHByaXZhdGU6XAorICAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8obmFtZSMjTWF0Y2hlclApO1wK
KyAgfTtcCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGU+XAorICBpbmxpbmUgbmFtZSMj
TWF0Y2hlclA8cDAjI190eXBlPiBuYW1lKHAwIyNfdHlwZSBwMCkge1wKKyAgICByZXR1cm4gbmFt
ZSMjTWF0Y2hlclA8cDAjI190eXBlPihwMCk7XAorICB9XAorICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
cDAjI190eXBlPlwKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIGFyZ190eXBlPlwKKyAgYm9vbCBuYW1l
IyNNYXRjaGVyUDxwMCMjX3R5cGU+OjpnbW9ja19JbXBsPGFyZ190eXBlPjo6TWF0Y2hBbmRFeHBs
YWluKFwKKyAgICAgIGFyZ190eXBlIGFyZywgXAorICAgICAgOjp0ZXN0aW5nOjpNYXRjaFJlc3Vs
dExpc3RlbmVyKiByZXN1bHRfbGlzdGVuZXIgR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8pXAorICAg
ICAgICAgIGNvbnN0CisKKyNkZWZpbmUgTUFUQ0hFUl9QMihuYW1lLCBwMCwgcDEsIGRlc2NyaXB0
aW9uKVwKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlwZW5hbWUgcDEjI190eXBl
PlwKKyAgY2xhc3MgbmFtZSMjTWF0Y2hlclAyIHtcCisgICBwdWJsaWM6XAorICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBhcmdfdHlwZT5cCisgICAgY2xhc3MgZ21vY2tfSW1wbCA6IHB1YmxpYyA6OnRl
c3Rpbmc6Ok1hdGNoZXJJbnRlcmZhY2U8YXJnX3R5cGU+IHtcCisgICAgIHB1YmxpYzpcCisgICAg
ICBnbW9ja19JbXBsKHAwIyNfdHlwZSBnbW9ja19wMCwgcDEjI190eXBlIGdtb2NrX3AxKVwKKyAg
ICAgICAgICAgOiBwMChnbW9ja19wMCksIHAxKGdtb2NrX3AxKSB7fVwKKyAgICAgIHZpcnR1YWwg
Ym9vbCBNYXRjaEFuZEV4cGxhaW4oXAorICAgICAgICAgIGFyZ190eXBlIGFyZywgOjp0ZXN0aW5n
OjpNYXRjaFJlc3VsdExpc3RlbmVyKiByZXN1bHRfbGlzdGVuZXIpIGNvbnN0O1wKKyAgICAgIHZp
cnR1YWwgdm9pZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFtKiBnbW9ja19vcykgY29uc3Qge1wK
KyAgICAgICAgKmdtb2NrX29zIDw8IEZvcm1hdERlc2NyaXB0aW9uKGZhbHNlKTtcCisgICAgICB9
XAorICAgICAgdmlydHVhbCB2b2lkIERlc2NyaWJlTmVnYXRpb25Ubyg6OnN0ZDo6b3N0cmVhbSog
Z21vY2tfb3MpIGNvbnN0IHtcCisgICAgICAgICpnbW9ja19vcyA8PCBGb3JtYXREZXNjcmlwdGlv
bih0cnVlKTtcCisgICAgICB9XAorICAgICAgcDAjI190eXBlIHAwO1wKKyAgICAgIHAxIyNfdHlw
ZSBwMTtcCisgICAgIHByaXZhdGU6XAorICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6c3RyaW5n
IEZvcm1hdERlc2NyaXB0aW9uKGJvb2wgbmVnYXRpb24pIGNvbnN0IHtcCisgICAgICAgIGNvbnN0
IDo6dGVzdGluZzo6aW50ZXJuYWw6OnN0cmluZyBnbW9ja19kZXNjcmlwdGlvbiA9IChkZXNjcmlw
dGlvbik7XAorICAgICAgICBpZiAoIWdtb2NrX2Rlc2NyaXB0aW9uLmVtcHR5KCkpXAorICAgICAg
ICAgIHJldHVybiBnbW9ja19kZXNjcmlwdGlvbjtcCisgICAgICAgIHJldHVybiA6OnRlc3Rpbmc6
OmludGVybmFsOjpGb3JtYXRNYXRjaGVyRGVzY3JpcHRpb24oXAorICAgICAgICAgICAgbmVnYXRp
b24sICNuYW1lLCBcCisgICAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxU
ZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3MoXAorICAgICAgICAgICAgICAgIDo6dGVzdGlu
Zzo6dHVwbGU8cDAjI190eXBlLCBwMSMjX3R5cGU+KHAwLCBwMSkpKTtcCisgICAgICB9XAorICAg
ICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhnbW9ja19JbXBsKTtcCisgICAgfTtcCisgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIGFyZ190eXBlPlwKKyAgICBvcGVyYXRvciA6OnRlc3Rpbmc6Ok1hdGNo
ZXI8YXJnX3R5cGU+KCkgY29uc3Qge1wKKyAgICAgIHJldHVybiA6OnRlc3Rpbmc6Ok1hdGNoZXI8
YXJnX3R5cGU+KFwKKyAgICAgICAgICBuZXcgZ21vY2tfSW1wbDxhcmdfdHlwZT4ocDAsIHAxKSk7
XAorICAgIH1cCisgICAgbmFtZSMjTWF0Y2hlclAyKHAwIyNfdHlwZSBnbW9ja19wMCwgcDEjI190
eXBlIGdtb2NrX3AxKSA6IHAwKGdtb2NrX3AwKSwgXAorICAgICAgICBwMShnbW9ja19wMSkge1wK
KyAgICB9XAorICAgIHAwIyNfdHlwZSBwMDtcCisgICAgcDEjI190eXBlIHAxO1wKKyAgIHByaXZh
dGU6XAorICAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8obmFtZSMjTWF0Y2hlclAyKTtcCisgIH07
XAorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMjX3R5cGU+XAor
ICBpbmxpbmUgbmFtZSMjTWF0Y2hlclAyPHAwIyNfdHlwZSwgcDEjI190eXBlPiBuYW1lKHAwIyNf
dHlwZSBwMCwgXAorICAgICAgcDEjI190eXBlIHAxKSB7XAorICAgIHJldHVybiBuYW1lIyNNYXRj
aGVyUDI8cDAjI190eXBlLCBwMSMjX3R5cGU+KHAwLCBwMSk7XAorICB9XAorICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMjX3R5cGU+XAorICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgYXJnX3R5cGU+XAorICBib29sIG5hbWUjI01hdGNoZXJQMjxwMCMjX3R5cGUsIFwKKyAg
ICAgIHAxIyNfdHlwZT46Omdtb2NrX0ltcGw8YXJnX3R5cGU+OjpNYXRjaEFuZEV4cGxhaW4oXAor
ICAgICAgYXJnX3R5cGUgYXJnLCBcCisgICAgICA6OnRlc3Rpbmc6Ok1hdGNoUmVzdWx0TGlzdGVu
ZXIqIHJlc3VsdF9saXN0ZW5lciBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXylcCisgICAgICAgICAg
Y29uc3QKKworI2RlZmluZSBNQVRDSEVSX1AzKG5hbWUsIHAwLCBwMSwgcDIsIGRlc2NyaXB0aW9u
KVwKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlwZW5hbWUgcDEjI190eXBlLCB0
eXBlbmFtZSBwMiMjX3R5cGU+XAorICBjbGFzcyBuYW1lIyNNYXRjaGVyUDMge1wKKyAgIHB1Ymxp
YzpcCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIGFyZ190eXBlPlwKKyAgICBjbGFzcyBnbW9ja19J
bXBsIDogcHVibGljIDo6dGVzdGluZzo6TWF0Y2hlckludGVyZmFjZTxhcmdfdHlwZT4ge1wKKyAg
ICAgcHVibGljOlwKKyAgICAgIGdtb2NrX0ltcGwocDAjI190eXBlIGdtb2NrX3AwLCBwMSMjX3R5
cGUgZ21vY2tfcDEsIHAyIyNfdHlwZSBnbW9ja19wMilcCisgICAgICAgICAgIDogcDAoZ21vY2tf
cDApLCBwMShnbW9ja19wMSksIHAyKGdtb2NrX3AyKSB7fVwKKyAgICAgIHZpcnR1YWwgYm9vbCBN
YXRjaEFuZEV4cGxhaW4oXAorICAgICAgICAgIGFyZ190eXBlIGFyZywgOjp0ZXN0aW5nOjpNYXRj
aFJlc3VsdExpc3RlbmVyKiByZXN1bHRfbGlzdGVuZXIpIGNvbnN0O1wKKyAgICAgIHZpcnR1YWwg
dm9pZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFtKiBnbW9ja19vcykgY29uc3Qge1wKKyAgICAg
ICAgKmdtb2NrX29zIDw8IEZvcm1hdERlc2NyaXB0aW9uKGZhbHNlKTtcCisgICAgICB9XAorICAg
ICAgdmlydHVhbCB2b2lkIERlc2NyaWJlTmVnYXRpb25Ubyg6OnN0ZDo6b3N0cmVhbSogZ21vY2tf
b3MpIGNvbnN0IHtcCisgICAgICAgICpnbW9ja19vcyA8PCBGb3JtYXREZXNjcmlwdGlvbih0cnVl
KTtcCisgICAgICB9XAorICAgICAgcDAjI190eXBlIHAwO1wKKyAgICAgIHAxIyNfdHlwZSBwMTtc
CisgICAgICBwMiMjX3R5cGUgcDI7XAorICAgICBwcml2YXRlOlwKKyAgICAgIDo6dGVzdGluZzo6
aW50ZXJuYWw6OnN0cmluZyBGb3JtYXREZXNjcmlwdGlvbihib29sIG5lZ2F0aW9uKSBjb25zdCB7
XAorICAgICAgICBjb25zdCA6OnRlc3Rpbmc6OmludGVybmFsOjpzdHJpbmcgZ21vY2tfZGVzY3Jp
cHRpb24gPSAoZGVzY3JpcHRpb24pO1wKKyAgICAgICAgaWYgKCFnbW9ja19kZXNjcmlwdGlvbi5l
bXB0eSgpKVwKKyAgICAgICAgICByZXR1cm4gZ21vY2tfZGVzY3JpcHRpb247XAorICAgICAgICBy
ZXR1cm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6Rm9ybWF0TWF0Y2hlckRlc2NyaXB0aW9uKFwKKyAg
ICAgICAgICAgIG5lZ2F0aW9uLCAjbmFtZSwgXAorICAgICAgICAgICAgOjp0ZXN0aW5nOjppbnRl
cm5hbDo6VW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKFwKKyAgICAgICAg
ICAgICAgICA6OnRlc3Rpbmc6OnR1cGxlPHAwIyNfdHlwZSwgcDEjI190eXBlLCBwMiMjX3R5cGU+
KHAwLCBwMSwgXAorICAgICAgICAgICAgICAgICAgICBwMikpKTtcCisgICAgICB9XAorICAgICAg
R1RFU1RfRElTQUxMT1dfQVNTSUdOXyhnbW9ja19JbXBsKTtcCisgICAgfTtcCisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIGFyZ190eXBlPlwKKyAgICBvcGVyYXRvciA6OnRlc3Rpbmc6Ok1hdGNoZXI8
YXJnX3R5cGU+KCkgY29uc3Qge1wKKyAgICAgIHJldHVybiA6OnRlc3Rpbmc6Ok1hdGNoZXI8YXJn
X3R5cGU+KFwKKyAgICAgICAgICBuZXcgZ21vY2tfSW1wbDxhcmdfdHlwZT4ocDAsIHAxLCBwMikp
O1wKKyAgICB9XAorICAgIG5hbWUjI01hdGNoZXJQMyhwMCMjX3R5cGUgZ21vY2tfcDAsIHAxIyNf
dHlwZSBnbW9ja19wMSwgXAorICAgICAgICBwMiMjX3R5cGUgZ21vY2tfcDIpIDogcDAoZ21vY2tf
cDApLCBwMShnbW9ja19wMSksIHAyKGdtb2NrX3AyKSB7XAorICAgIH1cCisgICAgcDAjI190eXBl
IHAwO1wKKyAgICBwMSMjX3R5cGUgcDE7XAorICAgIHAyIyNfdHlwZSBwMjtcCisgICBwcml2YXRl
OlwKKyAgICBHVEVTVF9ESVNBTExPV19BU1NJR05fKG5hbWUjI01hdGNoZXJQMyk7XAorICB9O1wK
KyAgdGVtcGxhdGUgPHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlwZW5hbWUgcDEjI190eXBlLCB0eXBl
bmFtZSBwMiMjX3R5cGU+XAorICBpbmxpbmUgbmFtZSMjTWF0Y2hlclAzPHAwIyNfdHlwZSwgcDEj
I190eXBlLCBwMiMjX3R5cGU+IG5hbWUocDAjI190eXBlIHAwLCBcCisgICAgICBwMSMjX3R5cGUg
cDEsIHAyIyNfdHlwZSBwMikge1wKKyAgICByZXR1cm4gbmFtZSMjTWF0Y2hlclAzPHAwIyNfdHlw
ZSwgcDEjI190eXBlLCBwMiMjX3R5cGU+KHAwLCBwMSwgcDIpO1wKKyAgfVwKKyAgdGVtcGxhdGUg
PHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlwZW5hbWUgcDEjI190eXBlLCB0eXBlbmFtZSBwMiMjX3R5
cGU+XAorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgYXJnX3R5cGU+XAorICBib29sIG5hbWUjI01hdGNo
ZXJQMzxwMCMjX3R5cGUsIHAxIyNfdHlwZSwgXAorICAgICAgcDIjI190eXBlPjo6Z21vY2tfSW1w
bDxhcmdfdHlwZT46Ok1hdGNoQW5kRXhwbGFpbihcCisgICAgICBhcmdfdHlwZSBhcmcsIFwKKyAg
ICAgIDo6dGVzdGluZzo6TWF0Y2hSZXN1bHRMaXN0ZW5lciogcmVzdWx0X2xpc3RlbmVyIEdURVNU
X0FUVFJJQlVURV9VTlVTRURfKVwKKyAgICAgICAgICBjb25zdAorCisjZGVmaW5lIE1BVENIRVJf
UDQobmFtZSwgcDAsIHAxLCBwMiwgcDMsIGRlc2NyaXB0aW9uKVwKKyAgdGVtcGxhdGUgPHR5cGVu
YW1lIHAwIyNfdHlwZSwgdHlwZW5hbWUgcDEjI190eXBlLCB0eXBlbmFtZSBwMiMjX3R5cGUsIFwK
KyAgICAgIHR5cGVuYW1lIHAzIyNfdHlwZT5cCisgIGNsYXNzIG5hbWUjI01hdGNoZXJQNCB7XAor
ICAgcHVibGljOlwKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgYXJnX3R5cGU+XAorICAgIGNsYXNz
IGdtb2NrX0ltcGwgOiBwdWJsaWMgOjp0ZXN0aW5nOjpNYXRjaGVySW50ZXJmYWNlPGFyZ190eXBl
PiB7XAorICAgICBwdWJsaWM6XAorICAgICAgZ21vY2tfSW1wbChwMCMjX3R5cGUgZ21vY2tfcDAs
IHAxIyNfdHlwZSBnbW9ja19wMSwgcDIjI190eXBlIGdtb2NrX3AyLCBcCisgICAgICAgICAgcDMj
I190eXBlIGdtb2NrX3AzKVwKKyAgICAgICAgICAgOiBwMChnbW9ja19wMCksIHAxKGdtb2NrX3Ax
KSwgcDIoZ21vY2tfcDIpLCBwMyhnbW9ja19wMykge31cCisgICAgICB2aXJ0dWFsIGJvb2wgTWF0
Y2hBbmRFeHBsYWluKFwKKyAgICAgICAgICBhcmdfdHlwZSBhcmcsIDo6dGVzdGluZzo6TWF0Y2hS
ZXN1bHRMaXN0ZW5lciogcmVzdWx0X2xpc3RlbmVyKSBjb25zdDtcCisgICAgICB2aXJ0dWFsIHZv
aWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogZ21vY2tfb3MpIGNvbnN0IHtcCisgICAgICAg
ICpnbW9ja19vcyA8PCBGb3JtYXREZXNjcmlwdGlvbihmYWxzZSk7XAorICAgICAgfVwKKyAgICAg
IHZpcnR1YWwgdm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0qIGdtb2NrX29z
KSBjb25zdCB7XAorICAgICAgICAqZ21vY2tfb3MgPDwgRm9ybWF0RGVzY3JpcHRpb24odHJ1ZSk7
XAorICAgICAgfVwKKyAgICAgIHAwIyNfdHlwZSBwMDtcCisgICAgICBwMSMjX3R5cGUgcDE7XAor
ICAgICAgcDIjI190eXBlIHAyO1wKKyAgICAgIHAzIyNfdHlwZSBwMztcCisgICAgIHByaXZhdGU6
XAorICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6c3RyaW5nIEZvcm1hdERlc2NyaXB0aW9uKGJv
b2wgbmVnYXRpb24pIGNvbnN0IHtcCisgICAgICAgIGNvbnN0IDo6dGVzdGluZzo6aW50ZXJuYWw6
OnN0cmluZyBnbW9ja19kZXNjcmlwdGlvbiA9IChkZXNjcmlwdGlvbik7XAorICAgICAgICBpZiAo
IWdtb2NrX2Rlc2NyaXB0aW9uLmVtcHR5KCkpXAorICAgICAgICAgIHJldHVybiBnbW9ja19kZXNj
cmlwdGlvbjtcCisgICAgICAgIHJldHVybiA6OnRlc3Rpbmc6OmludGVybmFsOjpGb3JtYXRNYXRj
aGVyRGVzY3JpcHRpb24oXAorICAgICAgICAgICAgbmVnYXRpb24sICNuYW1lLCBcCisgICAgICAg
ICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNU
b1N0cmluZ3MoXAorICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6dHVwbGU8cDAjI190eXBlLCBw
MSMjX3R5cGUsIHAyIyNfdHlwZSwgXAorICAgICAgICAgICAgICAgICAgICBwMyMjX3R5cGU+KHAw
LCBwMSwgcDIsIHAzKSkpO1wKKyAgICAgIH1cCisgICAgICBHVEVTVF9ESVNBTExPV19BU1NJR05f
KGdtb2NrX0ltcGwpO1wKKyAgICB9O1wKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgYXJnX3R5cGU+
XAorICAgIG9wZXJhdG9yIDo6dGVzdGluZzo6TWF0Y2hlcjxhcmdfdHlwZT4oKSBjb25zdCB7XAor
ICAgICAgcmV0dXJuIDo6dGVzdGluZzo6TWF0Y2hlcjxhcmdfdHlwZT4oXAorICAgICAgICAgIG5l
dyBnbW9ja19JbXBsPGFyZ190eXBlPihwMCwgcDEsIHAyLCBwMykpO1wKKyAgICB9XAorICAgIG5h
bWUjI01hdGNoZXJQNChwMCMjX3R5cGUgZ21vY2tfcDAsIHAxIyNfdHlwZSBnbW9ja19wMSwgXAor
ICAgICAgICBwMiMjX3R5cGUgZ21vY2tfcDIsIHAzIyNfdHlwZSBnbW9ja19wMykgOiBwMChnbW9j
a19wMCksIHAxKGdtb2NrX3AxKSwgXAorICAgICAgICBwMihnbW9ja19wMiksIHAzKGdtb2NrX3Az
KSB7XAorICAgIH1cCisgICAgcDAjI190eXBlIHAwO1wKKyAgICBwMSMjX3R5cGUgcDE7XAorICAg
IHAyIyNfdHlwZSBwMjtcCisgICAgcDMjI190eXBlIHAzO1wKKyAgIHByaXZhdGU6XAorICAgIEdU
RVNUX0RJU0FMTE9XX0FTU0lHTl8obmFtZSMjTWF0Y2hlclA0KTtcCisgIH07XAorICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMjX3R5cGUsIHR5cGVuYW1lIHAyIyNf
dHlwZSwgXAorICAgICAgdHlwZW5hbWUgcDMjI190eXBlPlwKKyAgaW5saW5lIG5hbWUjI01hdGNo
ZXJQNDxwMCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIjI190eXBlLCBcCisgICAgICBwMyMjX3R5cGU+
IG5hbWUocDAjI190eXBlIHAwLCBwMSMjX3R5cGUgcDEsIHAyIyNfdHlwZSBwMiwgXAorICAgICAg
cDMjI190eXBlIHAzKSB7XAorICAgIHJldHVybiBuYW1lIyNNYXRjaGVyUDQ8cDAjI190eXBlLCBw
MSMjX3R5cGUsIHAyIyNfdHlwZSwgcDMjI190eXBlPihwMCwgXAorICAgICAgICBwMSwgcDIsIHAz
KTtcCisgIH1cCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGUsIHR5cGVuYW1lIHAxIyNf
dHlwZSwgdHlwZW5hbWUgcDIjI190eXBlLCBcCisgICAgICB0eXBlbmFtZSBwMyMjX3R5cGU+XAor
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgYXJnX3R5cGU+XAorICBib29sIG5hbWUjI01hdGNoZXJQNDxw
MCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIjI190eXBlLCBcCisgICAgICBwMyMjX3R5cGU+OjpnbW9j
a19JbXBsPGFyZ190eXBlPjo6TWF0Y2hBbmRFeHBsYWluKFwKKyAgICAgIGFyZ190eXBlIGFyZywg
XAorICAgICAgOjp0ZXN0aW5nOjpNYXRjaFJlc3VsdExpc3RlbmVyKiByZXN1bHRfbGlzdGVuZXIg
R1RFU1RfQVRUUklCVVRFX1VOVVNFRF8pXAorICAgICAgICAgIGNvbnN0CisKKyNkZWZpbmUgTUFU
Q0hFUl9QNShuYW1lLCBwMCwgcDEsIHAyLCBwMywgcDQsIGRlc2NyaXB0aW9uKVwKKyAgdGVtcGxh
dGUgPHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlwZW5hbWUgcDEjI190eXBlLCB0eXBlbmFtZSBwMiMj
X3R5cGUsIFwKKyAgICAgIHR5cGVuYW1lIHAzIyNfdHlwZSwgdHlwZW5hbWUgcDQjI190eXBlPlwK
KyAgY2xhc3MgbmFtZSMjTWF0Y2hlclA1IHtcCisgICBwdWJsaWM6XAorICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBhcmdfdHlwZT5cCisgICAgY2xhc3MgZ21vY2tfSW1wbCA6IHB1YmxpYyA6OnRlc3Rp
bmc6Ok1hdGNoZXJJbnRlcmZhY2U8YXJnX3R5cGU+IHtcCisgICAgIHB1YmxpYzpcCisgICAgICBn
bW9ja19JbXBsKHAwIyNfdHlwZSBnbW9ja19wMCwgcDEjI190eXBlIGdtb2NrX3AxLCBwMiMjX3R5
cGUgZ21vY2tfcDIsIFwKKyAgICAgICAgICBwMyMjX3R5cGUgZ21vY2tfcDMsIHA0IyNfdHlwZSBn
bW9ja19wNClcCisgICAgICAgICAgIDogcDAoZ21vY2tfcDApLCBwMShnbW9ja19wMSksIHAyKGdt
b2NrX3AyKSwgcDMoZ21vY2tfcDMpLCBcCisgICAgICAgICAgICAgICBwNChnbW9ja19wNCkge31c
CisgICAgICB2aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWluKFwKKyAgICAgICAgICBhcmdfdHlw
ZSBhcmcsIDo6dGVzdGluZzo6TWF0Y2hSZXN1bHRMaXN0ZW5lciogcmVzdWx0X2xpc3RlbmVyKSBj
b25zdDtcCisgICAgICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogZ21v
Y2tfb3MpIGNvbnN0IHtcCisgICAgICAgICpnbW9ja19vcyA8PCBGb3JtYXREZXNjcmlwdGlvbihm
YWxzZSk7XAorICAgICAgfVwKKyAgICAgIHZpcnR1YWwgdm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8o
OjpzdGQ6Om9zdHJlYW0qIGdtb2NrX29zKSBjb25zdCB7XAorICAgICAgICAqZ21vY2tfb3MgPDwg
Rm9ybWF0RGVzY3JpcHRpb24odHJ1ZSk7XAorICAgICAgfVwKKyAgICAgIHAwIyNfdHlwZSBwMDtc
CisgICAgICBwMSMjX3R5cGUgcDE7XAorICAgICAgcDIjI190eXBlIHAyO1wKKyAgICAgIHAzIyNf
dHlwZSBwMztcCisgICAgICBwNCMjX3R5cGUgcDQ7XAorICAgICBwcml2YXRlOlwKKyAgICAgIDo6
dGVzdGluZzo6aW50ZXJuYWw6OnN0cmluZyBGb3JtYXREZXNjcmlwdGlvbihib29sIG5lZ2F0aW9u
KSBjb25zdCB7XAorICAgICAgICBjb25zdCA6OnRlc3Rpbmc6OmludGVybmFsOjpzdHJpbmcgZ21v
Y2tfZGVzY3JpcHRpb24gPSAoZGVzY3JpcHRpb24pO1wKKyAgICAgICAgaWYgKCFnbW9ja19kZXNj
cmlwdGlvbi5lbXB0eSgpKVwKKyAgICAgICAgICByZXR1cm4gZ21vY2tfZGVzY3JpcHRpb247XAor
ICAgICAgICByZXR1cm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6Rm9ybWF0TWF0Y2hlckRlc2NyaXB0
aW9uKFwKKyAgICAgICAgICAgIG5lZ2F0aW9uLCAjbmFtZSwgXAorICAgICAgICAgICAgOjp0ZXN0
aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKFwK
KyAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OnR1cGxlPHAwIyNfdHlwZSwgcDEjI190eXBlLCBw
MiMjX3R5cGUsIHAzIyNfdHlwZSwgXAorICAgICAgICAgICAgICAgICAgICBwNCMjX3R5cGU+KHAw
LCBwMSwgcDIsIHAzLCBwNCkpKTtcCisgICAgICB9XAorICAgICAgR1RFU1RfRElTQUxMT1dfQVNT
SUdOXyhnbW9ja19JbXBsKTtcCisgICAgfTtcCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIGFyZ190
eXBlPlwKKyAgICBvcGVyYXRvciA6OnRlc3Rpbmc6Ok1hdGNoZXI8YXJnX3R5cGU+KCkgY29uc3Qg
e1wKKyAgICAgIHJldHVybiA6OnRlc3Rpbmc6Ok1hdGNoZXI8YXJnX3R5cGU+KFwKKyAgICAgICAg
ICBuZXcgZ21vY2tfSW1wbDxhcmdfdHlwZT4ocDAsIHAxLCBwMiwgcDMsIHA0KSk7XAorICAgIH1c
CisgICAgbmFtZSMjTWF0Y2hlclA1KHAwIyNfdHlwZSBnbW9ja19wMCwgcDEjI190eXBlIGdtb2Nr
X3AxLCBcCisgICAgICAgIHAyIyNfdHlwZSBnbW9ja19wMiwgcDMjI190eXBlIGdtb2NrX3AzLCBc
CisgICAgICAgIHA0IyNfdHlwZSBnbW9ja19wNCkgOiBwMChnbW9ja19wMCksIHAxKGdtb2NrX3Ax
KSwgcDIoZ21vY2tfcDIpLCBcCisgICAgICAgIHAzKGdtb2NrX3AzKSwgcDQoZ21vY2tfcDQpIHtc
CisgICAgfVwKKyAgICBwMCMjX3R5cGUgcDA7XAorICAgIHAxIyNfdHlwZSBwMTtcCisgICAgcDIj
I190eXBlIHAyO1wKKyAgICBwMyMjX3R5cGUgcDM7XAorICAgIHA0IyNfdHlwZSBwNDtcCisgICBw
cml2YXRlOlwKKyAgICBHVEVTVF9ESVNBTExPV19BU1NJR05fKG5hbWUjI01hdGNoZXJQNSk7XAor
ICB9O1wKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlwZW5hbWUgcDEjI190eXBl
LCB0eXBlbmFtZSBwMiMjX3R5cGUsIFwKKyAgICAgIHR5cGVuYW1lIHAzIyNfdHlwZSwgdHlwZW5h
bWUgcDQjI190eXBlPlwKKyAgaW5saW5lIG5hbWUjI01hdGNoZXJQNTxwMCMjX3R5cGUsIHAxIyNf
dHlwZSwgcDIjI190eXBlLCBwMyMjX3R5cGUsIFwKKyAgICAgIHA0IyNfdHlwZT4gbmFtZShwMCMj
X3R5cGUgcDAsIHAxIyNfdHlwZSBwMSwgcDIjI190eXBlIHAyLCBwMyMjX3R5cGUgcDMsIFwKKyAg
ICAgIHA0IyNfdHlwZSBwNCkge1wKKyAgICByZXR1cm4gbmFtZSMjTWF0Y2hlclA1PHAwIyNfdHlw
ZSwgcDEjI190eXBlLCBwMiMjX3R5cGUsIHAzIyNfdHlwZSwgXAorICAgICAgICBwNCMjX3R5cGU+
KHAwLCBwMSwgcDIsIHAzLCBwNCk7XAorICB9XAorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190
eXBlLCB0eXBlbmFtZSBwMSMjX3R5cGUsIHR5cGVuYW1lIHAyIyNfdHlwZSwgXAorICAgICAgdHlw
ZW5hbWUgcDMjI190eXBlLCB0eXBlbmFtZSBwNCMjX3R5cGU+XAorICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgYXJnX3R5cGU+XAorICBib29sIG5hbWUjI01hdGNoZXJQNTxwMCMjX3R5cGUsIHAxIyNfdHlw
ZSwgcDIjI190eXBlLCBwMyMjX3R5cGUsIFwKKyAgICAgIHA0IyNfdHlwZT46Omdtb2NrX0ltcGw8
YXJnX3R5cGU+OjpNYXRjaEFuZEV4cGxhaW4oXAorICAgICAgYXJnX3R5cGUgYXJnLCBcCisgICAg
ICA6OnRlc3Rpbmc6Ok1hdGNoUmVzdWx0TGlzdGVuZXIqIHJlc3VsdF9saXN0ZW5lciBHVEVTVF9B
VFRSSUJVVEVfVU5VU0VEXylcCisgICAgICAgICAgY29uc3QKKworI2RlZmluZSBNQVRDSEVSX1A2
KG5hbWUsIHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIGRlc2NyaXB0aW9uKVwKKyAgdGVtcGxhdGUg
PHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlwZW5hbWUgcDEjI190eXBlLCB0eXBlbmFtZSBwMiMjX3R5
cGUsIFwKKyAgICAgIHR5cGVuYW1lIHAzIyNfdHlwZSwgdHlwZW5hbWUgcDQjI190eXBlLCB0eXBl
bmFtZSBwNSMjX3R5cGU+XAorICBjbGFzcyBuYW1lIyNNYXRjaGVyUDYge1wKKyAgIHB1YmxpYzpc
CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIGFyZ190eXBlPlwKKyAgICBjbGFzcyBnbW9ja19JbXBs
IDogcHVibGljIDo6dGVzdGluZzo6TWF0Y2hlckludGVyZmFjZTxhcmdfdHlwZT4ge1wKKyAgICAg
cHVibGljOlwKKyAgICAgIGdtb2NrX0ltcGwocDAjI190eXBlIGdtb2NrX3AwLCBwMSMjX3R5cGUg
Z21vY2tfcDEsIHAyIyNfdHlwZSBnbW9ja19wMiwgXAorICAgICAgICAgIHAzIyNfdHlwZSBnbW9j
a19wMywgcDQjI190eXBlIGdtb2NrX3A0LCBwNSMjX3R5cGUgZ21vY2tfcDUpXAorICAgICAgICAg
ICA6IHAwKGdtb2NrX3AwKSwgcDEoZ21vY2tfcDEpLCBwMihnbW9ja19wMiksIHAzKGdtb2NrX3Az
KSwgXAorICAgICAgICAgICAgICAgcDQoZ21vY2tfcDQpLCBwNShnbW9ja19wNSkge31cCisgICAg
ICB2aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWluKFwKKyAgICAgICAgICBhcmdfdHlwZSBhcmcs
IDo6dGVzdGluZzo6TWF0Y2hSZXN1bHRMaXN0ZW5lciogcmVzdWx0X2xpc3RlbmVyKSBjb25zdDtc
CisgICAgICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogZ21vY2tfb3Mp
IGNvbnN0IHtcCisgICAgICAgICpnbW9ja19vcyA8PCBGb3JtYXREZXNjcmlwdGlvbihmYWxzZSk7
XAorICAgICAgfVwKKyAgICAgIHZpcnR1YWwgdm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6
Om9zdHJlYW0qIGdtb2NrX29zKSBjb25zdCB7XAorICAgICAgICAqZ21vY2tfb3MgPDwgRm9ybWF0
RGVzY3JpcHRpb24odHJ1ZSk7XAorICAgICAgfVwKKyAgICAgIHAwIyNfdHlwZSBwMDtcCisgICAg
ICBwMSMjX3R5cGUgcDE7XAorICAgICAgcDIjI190eXBlIHAyO1wKKyAgICAgIHAzIyNfdHlwZSBw
MztcCisgICAgICBwNCMjX3R5cGUgcDQ7XAorICAgICAgcDUjI190eXBlIHA1O1wKKyAgICAgcHJp
dmF0ZTpcCisgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpzdHJpbmcgRm9ybWF0RGVzY3JpcHRp
b24oYm9vbCBuZWdhdGlvbikgY29uc3Qge1wKKyAgICAgICAgY29uc3QgOjp0ZXN0aW5nOjppbnRl
cm5hbDo6c3RyaW5nIGdtb2NrX2Rlc2NyaXB0aW9uID0gKGRlc2NyaXB0aW9uKTtcCisgICAgICAg
IGlmICghZ21vY2tfZGVzY3JpcHRpb24uZW1wdHkoKSlcCisgICAgICAgICAgcmV0dXJuIGdtb2Nr
X2Rlc2NyaXB0aW9uO1wKKyAgICAgICAgcmV0dXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZvcm1h
dE1hdGNoZXJEZXNjcmlwdGlvbihcCisgICAgICAgICAgICBuZWdhdGlvbiwgI25hbWUsIFwKKyAg
ICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OlVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZp
ZWxkc1RvU3RyaW5ncyhcCisgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjp0dXBsZTxwMCMjX3R5
cGUsIHAxIyNfdHlwZSwgcDIjI190eXBlLCBwMyMjX3R5cGUsIFwKKyAgICAgICAgICAgICAgICAg
ICAgcDQjI190eXBlLCBwNSMjX3R5cGU+KHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUpKSk7XAorICAg
ICAgfVwKKyAgICAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oZ21vY2tfSW1wbCk7XAorICAgIH07
XAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBhcmdfdHlwZT5cCisgICAgb3BlcmF0b3IgOjp0ZXN0
aW5nOjpNYXRjaGVyPGFyZ190eXBlPigpIGNvbnN0IHtcCisgICAgICByZXR1cm4gOjp0ZXN0aW5n
OjpNYXRjaGVyPGFyZ190eXBlPihcCisgICAgICAgICAgbmV3IGdtb2NrX0ltcGw8YXJnX3R5cGU+
KHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUpKTtcCisgICAgfVwKKyAgICBuYW1lIyNNYXRjaGVyUDYo
cDAjI190eXBlIGdtb2NrX3AwLCBwMSMjX3R5cGUgZ21vY2tfcDEsIFwKKyAgICAgICAgcDIjI190
eXBlIGdtb2NrX3AyLCBwMyMjX3R5cGUgZ21vY2tfcDMsIHA0IyNfdHlwZSBnbW9ja19wNCwgXAor
ICAgICAgICBwNSMjX3R5cGUgZ21vY2tfcDUpIDogcDAoZ21vY2tfcDApLCBwMShnbW9ja19wMSks
IHAyKGdtb2NrX3AyKSwgXAorICAgICAgICBwMyhnbW9ja19wMyksIHA0KGdtb2NrX3A0KSwgcDUo
Z21vY2tfcDUpIHtcCisgICAgfVwKKyAgICBwMCMjX3R5cGUgcDA7XAorICAgIHAxIyNfdHlwZSBw
MTtcCisgICAgcDIjI190eXBlIHAyO1wKKyAgICBwMyMjX3R5cGUgcDM7XAorICAgIHA0IyNfdHlw
ZSBwNDtcCisgICAgcDUjI190eXBlIHA1O1wKKyAgIHByaXZhdGU6XAorICAgIEdURVNUX0RJU0FM
TE9XX0FTU0lHTl8obmFtZSMjTWF0Y2hlclA2KTtcCisgIH07XAorICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMjX3R5cGUsIHR5cGVuYW1lIHAyIyNfdHlwZSwgXAor
ICAgICAgdHlwZW5hbWUgcDMjI190eXBlLCB0eXBlbmFtZSBwNCMjX3R5cGUsIHR5cGVuYW1lIHA1
IyNfdHlwZT5cCisgIGlubGluZSBuYW1lIyNNYXRjaGVyUDY8cDAjI190eXBlLCBwMSMjX3R5cGUs
IHAyIyNfdHlwZSwgcDMjI190eXBlLCBcCisgICAgICBwNCMjX3R5cGUsIHA1IyNfdHlwZT4gbmFt
ZShwMCMjX3R5cGUgcDAsIHAxIyNfdHlwZSBwMSwgcDIjI190eXBlIHAyLCBcCisgICAgICBwMyMj
X3R5cGUgcDMsIHA0IyNfdHlwZSBwNCwgcDUjI190eXBlIHA1KSB7XAorICAgIHJldHVybiBuYW1l
IyNNYXRjaGVyUDY8cDAjI190eXBlLCBwMSMjX3R5cGUsIHAyIyNfdHlwZSwgcDMjI190eXBlLCBc
CisgICAgICAgIHA0IyNfdHlwZSwgcDUjI190eXBlPihwMCwgcDEsIHAyLCBwMywgcDQsIHA1KTtc
CisgIH1cCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGUsIHR5cGVuYW1lIHAxIyNfdHlw
ZSwgdHlwZW5hbWUgcDIjI190eXBlLCBcCisgICAgICB0eXBlbmFtZSBwMyMjX3R5cGUsIHR5cGVu
YW1lIHA0IyNfdHlwZSwgdHlwZW5hbWUgcDUjI190eXBlPlwKKyAgdGVtcGxhdGUgPHR5cGVuYW1l
IGFyZ190eXBlPlwKKyAgYm9vbCBuYW1lIyNNYXRjaGVyUDY8cDAjI190eXBlLCBwMSMjX3R5cGUs
IHAyIyNfdHlwZSwgcDMjI190eXBlLCBwNCMjX3R5cGUsIFwKKyAgICAgIHA1IyNfdHlwZT46Omdt
b2NrX0ltcGw8YXJnX3R5cGU+OjpNYXRjaEFuZEV4cGxhaW4oXAorICAgICAgYXJnX3R5cGUgYXJn
LCBcCisgICAgICA6OnRlc3Rpbmc6Ok1hdGNoUmVzdWx0TGlzdGVuZXIqIHJlc3VsdF9saXN0ZW5l
ciBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXylcCisgICAgICAgICAgY29uc3QKKworI2RlZmluZSBN
QVRDSEVSX1A3KG5hbWUsIHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2LCBkZXNjcmlwdGlvbilc
CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGUsIHR5cGVuYW1lIHAxIyNfdHlwZSwgdHlw
ZW5hbWUgcDIjI190eXBlLCBcCisgICAgICB0eXBlbmFtZSBwMyMjX3R5cGUsIHR5cGVuYW1lIHA0
IyNfdHlwZSwgdHlwZW5hbWUgcDUjI190eXBlLCBcCisgICAgICB0eXBlbmFtZSBwNiMjX3R5cGU+
XAorICBjbGFzcyBuYW1lIyNNYXRjaGVyUDcge1wKKyAgIHB1YmxpYzpcCisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIGFyZ190eXBlPlwKKyAgICBjbGFzcyBnbW9ja19JbXBsIDogcHVibGljIDo6dGVz
dGluZzo6TWF0Y2hlckludGVyZmFjZTxhcmdfdHlwZT4ge1wKKyAgICAgcHVibGljOlwKKyAgICAg
IGdtb2NrX0ltcGwocDAjI190eXBlIGdtb2NrX3AwLCBwMSMjX3R5cGUgZ21vY2tfcDEsIHAyIyNf
dHlwZSBnbW9ja19wMiwgXAorICAgICAgICAgIHAzIyNfdHlwZSBnbW9ja19wMywgcDQjI190eXBl
IGdtb2NrX3A0LCBwNSMjX3R5cGUgZ21vY2tfcDUsIFwKKyAgICAgICAgICBwNiMjX3R5cGUgZ21v
Y2tfcDYpXAorICAgICAgICAgICA6IHAwKGdtb2NrX3AwKSwgcDEoZ21vY2tfcDEpLCBwMihnbW9j
a19wMiksIHAzKGdtb2NrX3AzKSwgXAorICAgICAgICAgICAgICAgcDQoZ21vY2tfcDQpLCBwNShn
bW9ja19wNSksIHA2KGdtb2NrX3A2KSB7fVwKKyAgICAgIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4
cGxhaW4oXAorICAgICAgICAgIGFyZ190eXBlIGFyZywgOjp0ZXN0aW5nOjpNYXRjaFJlc3VsdExp
c3RlbmVyKiByZXN1bHRfbGlzdGVuZXIpIGNvbnN0O1wKKyAgICAgIHZpcnR1YWwgdm9pZCBEZXNj
cmliZVRvKDo6c3RkOjpvc3RyZWFtKiBnbW9ja19vcykgY29uc3Qge1wKKyAgICAgICAgKmdtb2Nr
X29zIDw8IEZvcm1hdERlc2NyaXB0aW9uKGZhbHNlKTtcCisgICAgICB9XAorICAgICAgdmlydHVh
bCB2b2lkIERlc2NyaWJlTmVnYXRpb25Ubyg6OnN0ZDo6b3N0cmVhbSogZ21vY2tfb3MpIGNvbnN0
IHtcCisgICAgICAgICpnbW9ja19vcyA8PCBGb3JtYXREZXNjcmlwdGlvbih0cnVlKTtcCisgICAg
ICB9XAorICAgICAgcDAjI190eXBlIHAwO1wKKyAgICAgIHAxIyNfdHlwZSBwMTtcCisgICAgICBw
MiMjX3R5cGUgcDI7XAorICAgICAgcDMjI190eXBlIHAzO1wKKyAgICAgIHA0IyNfdHlwZSBwNDtc
CisgICAgICBwNSMjX3R5cGUgcDU7XAorICAgICAgcDYjI190eXBlIHA2O1wKKyAgICAgcHJpdmF0
ZTpcCisgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpzdHJpbmcgRm9ybWF0RGVzY3JpcHRpb24o
Ym9vbCBuZWdhdGlvbikgY29uc3Qge1wKKyAgICAgICAgY29uc3QgOjp0ZXN0aW5nOjppbnRlcm5h
bDo6c3RyaW5nIGdtb2NrX2Rlc2NyaXB0aW9uID0gKGRlc2NyaXB0aW9uKTtcCisgICAgICAgIGlm
ICghZ21vY2tfZGVzY3JpcHRpb24uZW1wdHkoKSlcCisgICAgICAgICAgcmV0dXJuIGdtb2NrX2Rl
c2NyaXB0aW9uO1wKKyAgICAgICAgcmV0dXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZvcm1hdE1h
dGNoZXJEZXNjcmlwdGlvbihcCisgICAgICAgICAgICBuZWdhdGlvbiwgI25hbWUsIFwKKyAgICAg
ICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OlVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxk
c1RvU3RyaW5ncyhcCisgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjp0dXBsZTxwMCMjX3R5cGUs
IHAxIyNfdHlwZSwgcDIjI190eXBlLCBwMyMjX3R5cGUsIFwKKyAgICAgICAgICAgICAgICAgICAg
cDQjI190eXBlLCBwNSMjX3R5cGUsIHA2IyNfdHlwZT4ocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwg
XAorICAgICAgICAgICAgICAgICAgICBwNikpKTtcCisgICAgICB9XAorICAgICAgR1RFU1RfRElT
QUxMT1dfQVNTSUdOXyhnbW9ja19JbXBsKTtcCisgICAgfTtcCisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIGFyZ190eXBlPlwKKyAgICBvcGVyYXRvciA6OnRlc3Rpbmc6Ok1hdGNoZXI8YXJnX3R5cGU+
KCkgY29uc3Qge1wKKyAgICAgIHJldHVybiA6OnRlc3Rpbmc6Ok1hdGNoZXI8YXJnX3R5cGU+KFwK
KyAgICAgICAgICBuZXcgZ21vY2tfSW1wbDxhcmdfdHlwZT4ocDAsIHAxLCBwMiwgcDMsIHA0LCBw
NSwgcDYpKTtcCisgICAgfVwKKyAgICBuYW1lIyNNYXRjaGVyUDcocDAjI190eXBlIGdtb2NrX3Aw
LCBwMSMjX3R5cGUgZ21vY2tfcDEsIFwKKyAgICAgICAgcDIjI190eXBlIGdtb2NrX3AyLCBwMyMj
X3R5cGUgZ21vY2tfcDMsIHA0IyNfdHlwZSBnbW9ja19wNCwgXAorICAgICAgICBwNSMjX3R5cGUg
Z21vY2tfcDUsIHA2IyNfdHlwZSBnbW9ja19wNikgOiBwMChnbW9ja19wMCksIHAxKGdtb2NrX3Ax
KSwgXAorICAgICAgICBwMihnbW9ja19wMiksIHAzKGdtb2NrX3AzKSwgcDQoZ21vY2tfcDQpLCBw
NShnbW9ja19wNSksIFwKKyAgICAgICAgcDYoZ21vY2tfcDYpIHtcCisgICAgfVwKKyAgICBwMCMj
X3R5cGUgcDA7XAorICAgIHAxIyNfdHlwZSBwMTtcCisgICAgcDIjI190eXBlIHAyO1wKKyAgICBw
MyMjX3R5cGUgcDM7XAorICAgIHA0IyNfdHlwZSBwNDtcCisgICAgcDUjI190eXBlIHA1O1wKKyAg
ICBwNiMjX3R5cGUgcDY7XAorICAgcHJpdmF0ZTpcCisgICAgR1RFU1RfRElTQUxMT1dfQVNTSUdO
XyhuYW1lIyNNYXRjaGVyUDcpO1wKKyAgfTtcCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5
cGUsIHR5cGVuYW1lIHAxIyNfdHlwZSwgdHlwZW5hbWUgcDIjI190eXBlLCBcCisgICAgICB0eXBl
bmFtZSBwMyMjX3R5cGUsIHR5cGVuYW1lIHA0IyNfdHlwZSwgdHlwZW5hbWUgcDUjI190eXBlLCBc
CisgICAgICB0eXBlbmFtZSBwNiMjX3R5cGU+XAorICBpbmxpbmUgbmFtZSMjTWF0Y2hlclA3PHAw
IyNfdHlwZSwgcDEjI190eXBlLCBwMiMjX3R5cGUsIHAzIyNfdHlwZSwgXAorICAgICAgcDQjI190
eXBlLCBwNSMjX3R5cGUsIHA2IyNfdHlwZT4gbmFtZShwMCMjX3R5cGUgcDAsIHAxIyNfdHlwZSBw
MSwgXAorICAgICAgcDIjI190eXBlIHAyLCBwMyMjX3R5cGUgcDMsIHA0IyNfdHlwZSBwNCwgcDUj
I190eXBlIHA1LCBcCisgICAgICBwNiMjX3R5cGUgcDYpIHtcCisgICAgcmV0dXJuIG5hbWUjI01h
dGNoZXJQNzxwMCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIjI190eXBlLCBwMyMjX3R5cGUsIFwKKyAg
ICAgICAgcDQjI190eXBlLCBwNSMjX3R5cGUsIHA2IyNfdHlwZT4ocDAsIHAxLCBwMiwgcDMsIHA0
LCBwNSwgcDYpO1wKKyAgfVwKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlwZW5h
bWUgcDEjI190eXBlLCB0eXBlbmFtZSBwMiMjX3R5cGUsIFwKKyAgICAgIHR5cGVuYW1lIHAzIyNf
dHlwZSwgdHlwZW5hbWUgcDQjI190eXBlLCB0eXBlbmFtZSBwNSMjX3R5cGUsIFwKKyAgICAgIHR5
cGVuYW1lIHA2IyNfdHlwZT5cCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBhcmdfdHlwZT5cCisgIGJv
b2wgbmFtZSMjTWF0Y2hlclA3PHAwIyNfdHlwZSwgcDEjI190eXBlLCBwMiMjX3R5cGUsIHAzIyNf
dHlwZSwgcDQjI190eXBlLCBcCisgICAgICBwNSMjX3R5cGUsIHA2IyNfdHlwZT46Omdtb2NrX0lt
cGw8YXJnX3R5cGU+OjpNYXRjaEFuZEV4cGxhaW4oXAorICAgICAgYXJnX3R5cGUgYXJnLCBcCisg
ICAgICA6OnRlc3Rpbmc6Ok1hdGNoUmVzdWx0TGlzdGVuZXIqIHJlc3VsdF9saXN0ZW5lciBHVEVT
VF9BVFRSSUJVVEVfVU5VU0VEXylcCisgICAgICAgICAgY29uc3QKKworI2RlZmluZSBNQVRDSEVS
X1A4KG5hbWUsIHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2LCBwNywgZGVzY3JpcHRpb24pXAor
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMjX3R5cGUsIHR5cGVu
YW1lIHAyIyNfdHlwZSwgXAorICAgICAgdHlwZW5hbWUgcDMjI190eXBlLCB0eXBlbmFtZSBwNCMj
X3R5cGUsIHR5cGVuYW1lIHA1IyNfdHlwZSwgXAorICAgICAgdHlwZW5hbWUgcDYjI190eXBlLCB0
eXBlbmFtZSBwNyMjX3R5cGU+XAorICBjbGFzcyBuYW1lIyNNYXRjaGVyUDgge1wKKyAgIHB1Ymxp
YzpcCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIGFyZ190eXBlPlwKKyAgICBjbGFzcyBnbW9ja19J
bXBsIDogcHVibGljIDo6dGVzdGluZzo6TWF0Y2hlckludGVyZmFjZTxhcmdfdHlwZT4ge1wKKyAg
ICAgcHVibGljOlwKKyAgICAgIGdtb2NrX0ltcGwocDAjI190eXBlIGdtb2NrX3AwLCBwMSMjX3R5
cGUgZ21vY2tfcDEsIHAyIyNfdHlwZSBnbW9ja19wMiwgXAorICAgICAgICAgIHAzIyNfdHlwZSBn
bW9ja19wMywgcDQjI190eXBlIGdtb2NrX3A0LCBwNSMjX3R5cGUgZ21vY2tfcDUsIFwKKyAgICAg
ICAgICBwNiMjX3R5cGUgZ21vY2tfcDYsIHA3IyNfdHlwZSBnbW9ja19wNylcCisgICAgICAgICAg
IDogcDAoZ21vY2tfcDApLCBwMShnbW9ja19wMSksIHAyKGdtb2NrX3AyKSwgcDMoZ21vY2tfcDMp
LCBcCisgICAgICAgICAgICAgICBwNChnbW9ja19wNCksIHA1KGdtb2NrX3A1KSwgcDYoZ21vY2tf
cDYpLCBwNyhnbW9ja19wNykge31cCisgICAgICB2aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWlu
KFwKKyAgICAgICAgICBhcmdfdHlwZSBhcmcsIDo6dGVzdGluZzo6TWF0Y2hSZXN1bHRMaXN0ZW5l
ciogcmVzdWx0X2xpc3RlbmVyKSBjb25zdDtcCisgICAgICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVU
byg6OnN0ZDo6b3N0cmVhbSogZ21vY2tfb3MpIGNvbnN0IHtcCisgICAgICAgICpnbW9ja19vcyA8
PCBGb3JtYXREZXNjcmlwdGlvbihmYWxzZSk7XAorICAgICAgfVwKKyAgICAgIHZpcnR1YWwgdm9p
ZCBEZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0qIGdtb2NrX29zKSBjb25zdCB7XAor
ICAgICAgICAqZ21vY2tfb3MgPDwgRm9ybWF0RGVzY3JpcHRpb24odHJ1ZSk7XAorICAgICAgfVwK
KyAgICAgIHAwIyNfdHlwZSBwMDtcCisgICAgICBwMSMjX3R5cGUgcDE7XAorICAgICAgcDIjI190
eXBlIHAyO1wKKyAgICAgIHAzIyNfdHlwZSBwMztcCisgICAgICBwNCMjX3R5cGUgcDQ7XAorICAg
ICAgcDUjI190eXBlIHA1O1wKKyAgICAgIHA2IyNfdHlwZSBwNjtcCisgICAgICBwNyMjX3R5cGUg
cDc7XAorICAgICBwcml2YXRlOlwKKyAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OnN0cmluZyBG
b3JtYXREZXNjcmlwdGlvbihib29sIG5lZ2F0aW9uKSBjb25zdCB7XAorICAgICAgICBjb25zdCA6
OnRlc3Rpbmc6OmludGVybmFsOjpzdHJpbmcgZ21vY2tfZGVzY3JpcHRpb24gPSAoZGVzY3JpcHRp
b24pO1wKKyAgICAgICAgaWYgKCFnbW9ja19kZXNjcmlwdGlvbi5lbXB0eSgpKVwKKyAgICAgICAg
ICByZXR1cm4gZ21vY2tfZGVzY3JpcHRpb247XAorICAgICAgICByZXR1cm4gOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6Rm9ybWF0TWF0Y2hlckRlc2NyaXB0aW9uKFwKKyAgICAgICAgICAgIG5lZ2F0aW9u
LCAjbmFtZSwgXAorICAgICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsVGVy
c2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKFwKKyAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6
OnR1cGxlPHAwIyNfdHlwZSwgcDEjI190eXBlLCBwMiMjX3R5cGUsIHAzIyNfdHlwZSwgXAorICAg
ICAgICAgICAgICAgICAgICBwNCMjX3R5cGUsIHA1IyNfdHlwZSwgcDYjI190eXBlLCBwNyMjX3R5
cGU+KHAwLCBwMSwgcDIsIFwKKyAgICAgICAgICAgICAgICAgICAgcDMsIHA0LCBwNSwgcDYsIHA3
KSkpO1wKKyAgICAgIH1cCisgICAgICBHVEVTVF9ESVNBTExPV19BU1NJR05fKGdtb2NrX0ltcGwp
O1wKKyAgICB9O1wKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgYXJnX3R5cGU+XAorICAgIG9wZXJh
dG9yIDo6dGVzdGluZzo6TWF0Y2hlcjxhcmdfdHlwZT4oKSBjb25zdCB7XAorICAgICAgcmV0dXJu
IDo6dGVzdGluZzo6TWF0Y2hlcjxhcmdfdHlwZT4oXAorICAgICAgICAgIG5ldyBnbW9ja19JbXBs
PGFyZ190eXBlPihwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBwNiwgcDcpKTtcCisgICAgfVwKKyAg
ICBuYW1lIyNNYXRjaGVyUDgocDAjI190eXBlIGdtb2NrX3AwLCBwMSMjX3R5cGUgZ21vY2tfcDEs
IFwKKyAgICAgICAgcDIjI190eXBlIGdtb2NrX3AyLCBwMyMjX3R5cGUgZ21vY2tfcDMsIHA0IyNf
dHlwZSBnbW9ja19wNCwgXAorICAgICAgICBwNSMjX3R5cGUgZ21vY2tfcDUsIHA2IyNfdHlwZSBn
bW9ja19wNiwgXAorICAgICAgICBwNyMjX3R5cGUgZ21vY2tfcDcpIDogcDAoZ21vY2tfcDApLCBw
MShnbW9ja19wMSksIHAyKGdtb2NrX3AyKSwgXAorICAgICAgICBwMyhnbW9ja19wMyksIHA0KGdt
b2NrX3A0KSwgcDUoZ21vY2tfcDUpLCBwNihnbW9ja19wNiksIFwKKyAgICAgICAgcDcoZ21vY2tf
cDcpIHtcCisgICAgfVwKKyAgICBwMCMjX3R5cGUgcDA7XAorICAgIHAxIyNfdHlwZSBwMTtcCisg
ICAgcDIjI190eXBlIHAyO1wKKyAgICBwMyMjX3R5cGUgcDM7XAorICAgIHA0IyNfdHlwZSBwNDtc
CisgICAgcDUjI190eXBlIHA1O1wKKyAgICBwNiMjX3R5cGUgcDY7XAorICAgIHA3IyNfdHlwZSBw
NztcCisgICBwcml2YXRlOlwKKyAgICBHVEVTVF9ESVNBTExPV19BU1NJR05fKG5hbWUjI01hdGNo
ZXJQOCk7XAorICB9O1wKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlwZW5hbWUg
cDEjI190eXBlLCB0eXBlbmFtZSBwMiMjX3R5cGUsIFwKKyAgICAgIHR5cGVuYW1lIHAzIyNfdHlw
ZSwgdHlwZW5hbWUgcDQjI190eXBlLCB0eXBlbmFtZSBwNSMjX3R5cGUsIFwKKyAgICAgIHR5cGVu
YW1lIHA2IyNfdHlwZSwgdHlwZW5hbWUgcDcjI190eXBlPlwKKyAgaW5saW5lIG5hbWUjI01hdGNo
ZXJQODxwMCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIjI190eXBlLCBwMyMjX3R5cGUsIFwKKyAgICAg
IHA0IyNfdHlwZSwgcDUjI190eXBlLCBwNiMjX3R5cGUsIHA3IyNfdHlwZT4gbmFtZShwMCMjX3R5
cGUgcDAsIFwKKyAgICAgIHAxIyNfdHlwZSBwMSwgcDIjI190eXBlIHAyLCBwMyMjX3R5cGUgcDMs
IHA0IyNfdHlwZSBwNCwgcDUjI190eXBlIHA1LCBcCisgICAgICBwNiMjX3R5cGUgcDYsIHA3IyNf
dHlwZSBwNykge1wKKyAgICByZXR1cm4gbmFtZSMjTWF0Y2hlclA4PHAwIyNfdHlwZSwgcDEjI190
eXBlLCBwMiMjX3R5cGUsIHAzIyNfdHlwZSwgXAorICAgICAgICBwNCMjX3R5cGUsIHA1IyNfdHlw
ZSwgcDYjI190eXBlLCBwNyMjX3R5cGU+KHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIFwKKyAgICAg
ICAgcDYsIHA3KTtcCisgIH1cCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGUsIHR5cGVu
YW1lIHAxIyNfdHlwZSwgdHlwZW5hbWUgcDIjI190eXBlLCBcCisgICAgICB0eXBlbmFtZSBwMyMj
X3R5cGUsIHR5cGVuYW1lIHA0IyNfdHlwZSwgdHlwZW5hbWUgcDUjI190eXBlLCBcCisgICAgICB0
eXBlbmFtZSBwNiMjX3R5cGUsIHR5cGVuYW1lIHA3IyNfdHlwZT5cCisgIHRlbXBsYXRlIDx0eXBl
bmFtZSBhcmdfdHlwZT5cCisgIGJvb2wgbmFtZSMjTWF0Y2hlclA4PHAwIyNfdHlwZSwgcDEjI190
eXBlLCBwMiMjX3R5cGUsIHAzIyNfdHlwZSwgcDQjI190eXBlLCBcCisgICAgICBwNSMjX3R5cGUs
IHA2IyNfdHlwZSwgXAorICAgICAgcDcjI190eXBlPjo6Z21vY2tfSW1wbDxhcmdfdHlwZT46Ok1h
dGNoQW5kRXhwbGFpbihcCisgICAgICBhcmdfdHlwZSBhcmcsIFwKKyAgICAgIDo6dGVzdGluZzo6
TWF0Y2hSZXN1bHRMaXN0ZW5lciogcmVzdWx0X2xpc3RlbmVyIEdURVNUX0FUVFJJQlVURV9VTlVT
RURfKVwKKyAgICAgICAgICBjb25zdAorCisjZGVmaW5lIE1BVENIRVJfUDkobmFtZSwgcDAsIHAx
LCBwMiwgcDMsIHA0LCBwNSwgcDYsIHA3LCBwOCwgZGVzY3JpcHRpb24pXAorICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMjX3R5cGUsIHR5cGVuYW1lIHAyIyNfdHlw
ZSwgXAorICAgICAgdHlwZW5hbWUgcDMjI190eXBlLCB0eXBlbmFtZSBwNCMjX3R5cGUsIHR5cGVu
YW1lIHA1IyNfdHlwZSwgXAorICAgICAgdHlwZW5hbWUgcDYjI190eXBlLCB0eXBlbmFtZSBwNyMj
X3R5cGUsIHR5cGVuYW1lIHA4IyNfdHlwZT5cCisgIGNsYXNzIG5hbWUjI01hdGNoZXJQOSB7XAor
ICAgcHVibGljOlwKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgYXJnX3R5cGU+XAorICAgIGNsYXNz
IGdtb2NrX0ltcGwgOiBwdWJsaWMgOjp0ZXN0aW5nOjpNYXRjaGVySW50ZXJmYWNlPGFyZ190eXBl
PiB7XAorICAgICBwdWJsaWM6XAorICAgICAgZ21vY2tfSW1wbChwMCMjX3R5cGUgZ21vY2tfcDAs
IHAxIyNfdHlwZSBnbW9ja19wMSwgcDIjI190eXBlIGdtb2NrX3AyLCBcCisgICAgICAgICAgcDMj
I190eXBlIGdtb2NrX3AzLCBwNCMjX3R5cGUgZ21vY2tfcDQsIHA1IyNfdHlwZSBnbW9ja19wNSwg
XAorICAgICAgICAgIHA2IyNfdHlwZSBnbW9ja19wNiwgcDcjI190eXBlIGdtb2NrX3A3LCBwOCMj
X3R5cGUgZ21vY2tfcDgpXAorICAgICAgICAgICA6IHAwKGdtb2NrX3AwKSwgcDEoZ21vY2tfcDEp
LCBwMihnbW9ja19wMiksIHAzKGdtb2NrX3AzKSwgXAorICAgICAgICAgICAgICAgcDQoZ21vY2tf
cDQpLCBwNShnbW9ja19wNSksIHA2KGdtb2NrX3A2KSwgcDcoZ21vY2tfcDcpLCBcCisgICAgICAg
ICAgICAgICBwOChnbW9ja19wOCkge31cCisgICAgICB2aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBs
YWluKFwKKyAgICAgICAgICBhcmdfdHlwZSBhcmcsIDo6dGVzdGluZzo6TWF0Y2hSZXN1bHRMaXN0
ZW5lciogcmVzdWx0X2xpc3RlbmVyKSBjb25zdDtcCisgICAgICB2aXJ0dWFsIHZvaWQgRGVzY3Jp
YmVUbyg6OnN0ZDo6b3N0cmVhbSogZ21vY2tfb3MpIGNvbnN0IHtcCisgICAgICAgICpnbW9ja19v
cyA8PCBGb3JtYXREZXNjcmlwdGlvbihmYWxzZSk7XAorICAgICAgfVwKKyAgICAgIHZpcnR1YWwg
dm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0qIGdtb2NrX29zKSBjb25zdCB7
XAorICAgICAgICAqZ21vY2tfb3MgPDwgRm9ybWF0RGVzY3JpcHRpb24odHJ1ZSk7XAorICAgICAg
fVwKKyAgICAgIHAwIyNfdHlwZSBwMDtcCisgICAgICBwMSMjX3R5cGUgcDE7XAorICAgICAgcDIj
I190eXBlIHAyO1wKKyAgICAgIHAzIyNfdHlwZSBwMztcCisgICAgICBwNCMjX3R5cGUgcDQ7XAor
ICAgICAgcDUjI190eXBlIHA1O1wKKyAgICAgIHA2IyNfdHlwZSBwNjtcCisgICAgICBwNyMjX3R5
cGUgcDc7XAorICAgICAgcDgjI190eXBlIHA4O1wKKyAgICAgcHJpdmF0ZTpcCisgICAgICA6OnRl
c3Rpbmc6OmludGVybmFsOjpzdHJpbmcgRm9ybWF0RGVzY3JpcHRpb24oYm9vbCBuZWdhdGlvbikg
Y29uc3Qge1wKKyAgICAgICAgY29uc3QgOjp0ZXN0aW5nOjppbnRlcm5hbDo6c3RyaW5nIGdtb2Nr
X2Rlc2NyaXB0aW9uID0gKGRlc2NyaXB0aW9uKTtcCisgICAgICAgIGlmICghZ21vY2tfZGVzY3Jp
cHRpb24uZW1wdHkoKSlcCisgICAgICAgICAgcmV0dXJuIGdtb2NrX2Rlc2NyaXB0aW9uO1wKKyAg
ICAgICAgcmV0dXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZvcm1hdE1hdGNoZXJEZXNjcmlwdGlv
bihcCisgICAgICAgICAgICBuZWdhdGlvbiwgI25hbWUsIFwKKyAgICAgICAgICAgIDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OlVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5ncyhcCisg
ICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjp0dXBsZTxwMCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIj
I190eXBlLCBwMyMjX3R5cGUsIFwKKyAgICAgICAgICAgICAgICAgICAgcDQjI190eXBlLCBwNSMj
X3R5cGUsIHA2IyNfdHlwZSwgcDcjI190eXBlLCBcCisgICAgICAgICAgICAgICAgICAgIHA4IyNf
dHlwZT4ocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYsIHA3LCBwOCkpKTtcCisgICAgICB9XAor
ICAgICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhnbW9ja19JbXBsKTtcCisgICAgfTtcCisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIGFyZ190eXBlPlwKKyAgICBvcGVyYXRvciA6OnRlc3Rpbmc6Ok1h
dGNoZXI8YXJnX3R5cGU+KCkgY29uc3Qge1wKKyAgICAgIHJldHVybiA6OnRlc3Rpbmc6Ok1hdGNo
ZXI8YXJnX3R5cGU+KFwKKyAgICAgICAgICBuZXcgZ21vY2tfSW1wbDxhcmdfdHlwZT4ocDAsIHAx
LCBwMiwgcDMsIHA0LCBwNSwgcDYsIHA3LCBwOCkpO1wKKyAgICB9XAorICAgIG5hbWUjI01hdGNo
ZXJQOShwMCMjX3R5cGUgZ21vY2tfcDAsIHAxIyNfdHlwZSBnbW9ja19wMSwgXAorICAgICAgICBw
MiMjX3R5cGUgZ21vY2tfcDIsIHAzIyNfdHlwZSBnbW9ja19wMywgcDQjI190eXBlIGdtb2NrX3A0
LCBcCisgICAgICAgIHA1IyNfdHlwZSBnbW9ja19wNSwgcDYjI190eXBlIGdtb2NrX3A2LCBwNyMj
X3R5cGUgZ21vY2tfcDcsIFwKKyAgICAgICAgcDgjI190eXBlIGdtb2NrX3A4KSA6IHAwKGdtb2Nr
X3AwKSwgcDEoZ21vY2tfcDEpLCBwMihnbW9ja19wMiksIFwKKyAgICAgICAgcDMoZ21vY2tfcDMp
LCBwNChnbW9ja19wNCksIHA1KGdtb2NrX3A1KSwgcDYoZ21vY2tfcDYpLCBwNyhnbW9ja19wNyks
IFwKKyAgICAgICAgcDgoZ21vY2tfcDgpIHtcCisgICAgfVwKKyAgICBwMCMjX3R5cGUgcDA7XAor
ICAgIHAxIyNfdHlwZSBwMTtcCisgICAgcDIjI190eXBlIHAyO1wKKyAgICBwMyMjX3R5cGUgcDM7
XAorICAgIHA0IyNfdHlwZSBwNDtcCisgICAgcDUjI190eXBlIHA1O1wKKyAgICBwNiMjX3R5cGUg
cDY7XAorICAgIHA3IyNfdHlwZSBwNztcCisgICAgcDgjI190eXBlIHA4O1wKKyAgIHByaXZhdGU6
XAorICAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8obmFtZSMjTWF0Y2hlclA5KTtcCisgIH07XAor
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMjX3R5cGUsIHR5cGVu
YW1lIHAyIyNfdHlwZSwgXAorICAgICAgdHlwZW5hbWUgcDMjI190eXBlLCB0eXBlbmFtZSBwNCMj
X3R5cGUsIHR5cGVuYW1lIHA1IyNfdHlwZSwgXAorICAgICAgdHlwZW5hbWUgcDYjI190eXBlLCB0
eXBlbmFtZSBwNyMjX3R5cGUsIHR5cGVuYW1lIHA4IyNfdHlwZT5cCisgIGlubGluZSBuYW1lIyNN
YXRjaGVyUDk8cDAjI190eXBlLCBwMSMjX3R5cGUsIHAyIyNfdHlwZSwgcDMjI190eXBlLCBcCisg
ICAgICBwNCMjX3R5cGUsIHA1IyNfdHlwZSwgcDYjI190eXBlLCBwNyMjX3R5cGUsIFwKKyAgICAg
IHA4IyNfdHlwZT4gbmFtZShwMCMjX3R5cGUgcDAsIHAxIyNfdHlwZSBwMSwgcDIjI190eXBlIHAy
LCBwMyMjX3R5cGUgcDMsIFwKKyAgICAgIHA0IyNfdHlwZSBwNCwgcDUjI190eXBlIHA1LCBwNiMj
X3R5cGUgcDYsIHA3IyNfdHlwZSBwNywgXAorICAgICAgcDgjI190eXBlIHA4KSB7XAorICAgIHJl
dHVybiBuYW1lIyNNYXRjaGVyUDk8cDAjI190eXBlLCBwMSMjX3R5cGUsIHAyIyNfdHlwZSwgcDMj
I190eXBlLCBcCisgICAgICAgIHA0IyNfdHlwZSwgcDUjI190eXBlLCBwNiMjX3R5cGUsIHA3IyNf
dHlwZSwgcDgjI190eXBlPihwMCwgcDEsIHAyLCBcCisgICAgICAgIHAzLCBwNCwgcDUsIHA2LCBw
NywgcDgpO1wKKyAgfVwKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlwZW5hbWUg
cDEjI190eXBlLCB0eXBlbmFtZSBwMiMjX3R5cGUsIFwKKyAgICAgIHR5cGVuYW1lIHAzIyNfdHlw
ZSwgdHlwZW5hbWUgcDQjI190eXBlLCB0eXBlbmFtZSBwNSMjX3R5cGUsIFwKKyAgICAgIHR5cGVu
YW1lIHA2IyNfdHlwZSwgdHlwZW5hbWUgcDcjI190eXBlLCB0eXBlbmFtZSBwOCMjX3R5cGU+XAor
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgYXJnX3R5cGU+XAorICBib29sIG5hbWUjI01hdGNoZXJQOTxw
MCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIjI190eXBlLCBwMyMjX3R5cGUsIHA0IyNfdHlwZSwgXAor
ICAgICAgcDUjI190eXBlLCBwNiMjX3R5cGUsIHA3IyNfdHlwZSwgXAorICAgICAgcDgjI190eXBl
Pjo6Z21vY2tfSW1wbDxhcmdfdHlwZT46Ok1hdGNoQW5kRXhwbGFpbihcCisgICAgICBhcmdfdHlw
ZSBhcmcsIFwKKyAgICAgIDo6dGVzdGluZzo6TWF0Y2hSZXN1bHRMaXN0ZW5lciogcmVzdWx0X2xp
c3RlbmVyIEdURVNUX0FUVFJJQlVURV9VTlVTRURfKVwKKyAgICAgICAgICBjb25zdAorCisjZGVm
aW5lIE1BVENIRVJfUDEwKG5hbWUsIHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2LCBwNywgcDgs
IHA5LCBkZXNjcmlwdGlvbilcCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGUsIHR5cGVu
YW1lIHAxIyNfdHlwZSwgdHlwZW5hbWUgcDIjI190eXBlLCBcCisgICAgICB0eXBlbmFtZSBwMyMj
X3R5cGUsIHR5cGVuYW1lIHA0IyNfdHlwZSwgdHlwZW5hbWUgcDUjI190eXBlLCBcCisgICAgICB0
eXBlbmFtZSBwNiMjX3R5cGUsIHR5cGVuYW1lIHA3IyNfdHlwZSwgdHlwZW5hbWUgcDgjI190eXBl
LCBcCisgICAgICB0eXBlbmFtZSBwOSMjX3R5cGU+XAorICBjbGFzcyBuYW1lIyNNYXRjaGVyUDEw
IHtcCisgICBwdWJsaWM6XAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBhcmdfdHlwZT5cCisgICAg
Y2xhc3MgZ21vY2tfSW1wbCA6IHB1YmxpYyA6OnRlc3Rpbmc6Ok1hdGNoZXJJbnRlcmZhY2U8YXJn
X3R5cGU+IHtcCisgICAgIHB1YmxpYzpcCisgICAgICBnbW9ja19JbXBsKHAwIyNfdHlwZSBnbW9j
a19wMCwgcDEjI190eXBlIGdtb2NrX3AxLCBwMiMjX3R5cGUgZ21vY2tfcDIsIFwKKyAgICAgICAg
ICBwMyMjX3R5cGUgZ21vY2tfcDMsIHA0IyNfdHlwZSBnbW9ja19wNCwgcDUjI190eXBlIGdtb2Nr
X3A1LCBcCisgICAgICAgICAgcDYjI190eXBlIGdtb2NrX3A2LCBwNyMjX3R5cGUgZ21vY2tfcDcs
IHA4IyNfdHlwZSBnbW9ja19wOCwgXAorICAgICAgICAgIHA5IyNfdHlwZSBnbW9ja19wOSlcCisg
ICAgICAgICAgIDogcDAoZ21vY2tfcDApLCBwMShnbW9ja19wMSksIHAyKGdtb2NrX3AyKSwgcDMo
Z21vY2tfcDMpLCBcCisgICAgICAgICAgICAgICBwNChnbW9ja19wNCksIHA1KGdtb2NrX3A1KSwg
cDYoZ21vY2tfcDYpLCBwNyhnbW9ja19wNyksIFwKKyAgICAgICAgICAgICAgIHA4KGdtb2NrX3A4
KSwgcDkoZ21vY2tfcDkpIHt9XAorICAgICAgdmlydHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbihc
CisgICAgICAgICAgYXJnX3R5cGUgYXJnLCA6OnRlc3Rpbmc6Ok1hdGNoUmVzdWx0TGlzdGVuZXIq
IHJlc3VsdF9saXN0ZW5lcikgY29uc3Q7XAorICAgICAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8o
OjpzdGQ6Om9zdHJlYW0qIGdtb2NrX29zKSBjb25zdCB7XAorICAgICAgICAqZ21vY2tfb3MgPDwg
Rm9ybWF0RGVzY3JpcHRpb24oZmFsc2UpO1wKKyAgICAgIH1cCisgICAgICB2aXJ0dWFsIHZvaWQg
RGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBnbW9ja19vcykgY29uc3Qge1wKKyAg
ICAgICAgKmdtb2NrX29zIDw8IEZvcm1hdERlc2NyaXB0aW9uKHRydWUpO1wKKyAgICAgIH1cCisg
ICAgICBwMCMjX3R5cGUgcDA7XAorICAgICAgcDEjI190eXBlIHAxO1wKKyAgICAgIHAyIyNfdHlw
ZSBwMjtcCisgICAgICBwMyMjX3R5cGUgcDM7XAorICAgICAgcDQjI190eXBlIHA0O1wKKyAgICAg
IHA1IyNfdHlwZSBwNTtcCisgICAgICBwNiMjX3R5cGUgcDY7XAorICAgICAgcDcjI190eXBlIHA3
O1wKKyAgICAgIHA4IyNfdHlwZSBwODtcCisgICAgICBwOSMjX3R5cGUgcDk7XAorICAgICBwcml2
YXRlOlwKKyAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OnN0cmluZyBGb3JtYXREZXNjcmlwdGlv
bihib29sIG5lZ2F0aW9uKSBjb25zdCB7XAorICAgICAgICBjb25zdCA6OnRlc3Rpbmc6OmludGVy
bmFsOjpzdHJpbmcgZ21vY2tfZGVzY3JpcHRpb24gPSAoZGVzY3JpcHRpb24pO1wKKyAgICAgICAg
aWYgKCFnbW9ja19kZXNjcmlwdGlvbi5lbXB0eSgpKVwKKyAgICAgICAgICByZXR1cm4gZ21vY2tf
ZGVzY3JpcHRpb247XAorICAgICAgICByZXR1cm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6Rm9ybWF0
TWF0Y2hlckRlc2NyaXB0aW9uKFwKKyAgICAgICAgICAgIG5lZ2F0aW9uLCAjbmFtZSwgXAorICAg
ICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmll
bGRzVG9TdHJpbmdzKFwKKyAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OnR1cGxlPHAwIyNfdHlw
ZSwgcDEjI190eXBlLCBwMiMjX3R5cGUsIHAzIyNfdHlwZSwgXAorICAgICAgICAgICAgICAgICAg
ICBwNCMjX3R5cGUsIHA1IyNfdHlwZSwgcDYjI190eXBlLCBwNyMjX3R5cGUsIHA4IyNfdHlwZSwg
XAorICAgICAgICAgICAgICAgICAgICBwOSMjX3R5cGU+KHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUs
IHA2LCBwNywgcDgsIHA5KSkpO1wKKyAgICAgIH1cCisgICAgICBHVEVTVF9ESVNBTExPV19BU1NJ
R05fKGdtb2NrX0ltcGwpO1wKKyAgICB9O1wKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgYXJnX3R5
cGU+XAorICAgIG9wZXJhdG9yIDo6dGVzdGluZzo6TWF0Y2hlcjxhcmdfdHlwZT4oKSBjb25zdCB7
XAorICAgICAgcmV0dXJuIDo6dGVzdGluZzo6TWF0Y2hlcjxhcmdfdHlwZT4oXAorICAgICAgICAg
IG5ldyBnbW9ja19JbXBsPGFyZ190eXBlPihwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBwNiwgcDcs
IHA4LCBwOSkpO1wKKyAgICB9XAorICAgIG5hbWUjI01hdGNoZXJQMTAocDAjI190eXBlIGdtb2Nr
X3AwLCBwMSMjX3R5cGUgZ21vY2tfcDEsIFwKKyAgICAgICAgcDIjI190eXBlIGdtb2NrX3AyLCBw
MyMjX3R5cGUgZ21vY2tfcDMsIHA0IyNfdHlwZSBnbW9ja19wNCwgXAorICAgICAgICBwNSMjX3R5
cGUgZ21vY2tfcDUsIHA2IyNfdHlwZSBnbW9ja19wNiwgcDcjI190eXBlIGdtb2NrX3A3LCBcCisg
ICAgICAgIHA4IyNfdHlwZSBnbW9ja19wOCwgcDkjI190eXBlIGdtb2NrX3A5KSA6IHAwKGdtb2Nr
X3AwKSwgcDEoZ21vY2tfcDEpLCBcCisgICAgICAgIHAyKGdtb2NrX3AyKSwgcDMoZ21vY2tfcDMp
LCBwNChnbW9ja19wNCksIHA1KGdtb2NrX3A1KSwgcDYoZ21vY2tfcDYpLCBcCisgICAgICAgIHA3
KGdtb2NrX3A3KSwgcDgoZ21vY2tfcDgpLCBwOShnbW9ja19wOSkge1wKKyAgICB9XAorICAgIHAw
IyNfdHlwZSBwMDtcCisgICAgcDEjI190eXBlIHAxO1wKKyAgICBwMiMjX3R5cGUgcDI7XAorICAg
IHAzIyNfdHlwZSBwMztcCisgICAgcDQjI190eXBlIHA0O1wKKyAgICBwNSMjX3R5cGUgcDU7XAor
ICAgIHA2IyNfdHlwZSBwNjtcCisgICAgcDcjI190eXBlIHA3O1wKKyAgICBwOCMjX3R5cGUgcDg7
XAorICAgIHA5IyNfdHlwZSBwOTtcCisgICBwcml2YXRlOlwKKyAgICBHVEVTVF9ESVNBTExPV19B
U1NJR05fKG5hbWUjI01hdGNoZXJQMTApO1wKKyAgfTtcCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBw
MCMjX3R5cGUsIHR5cGVuYW1lIHAxIyNfdHlwZSwgdHlwZW5hbWUgcDIjI190eXBlLCBcCisgICAg
ICB0eXBlbmFtZSBwMyMjX3R5cGUsIHR5cGVuYW1lIHA0IyNfdHlwZSwgdHlwZW5hbWUgcDUjI190
eXBlLCBcCisgICAgICB0eXBlbmFtZSBwNiMjX3R5cGUsIHR5cGVuYW1lIHA3IyNfdHlwZSwgdHlw
ZW5hbWUgcDgjI190eXBlLCBcCisgICAgICB0eXBlbmFtZSBwOSMjX3R5cGU+XAorICBpbmxpbmUg
bmFtZSMjTWF0Y2hlclAxMDxwMCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIjI190eXBlLCBwMyMjX3R5
cGUsIFwKKyAgICAgIHA0IyNfdHlwZSwgcDUjI190eXBlLCBwNiMjX3R5cGUsIHA3IyNfdHlwZSwg
cDgjI190eXBlLCBcCisgICAgICBwOSMjX3R5cGU+IG5hbWUocDAjI190eXBlIHAwLCBwMSMjX3R5
cGUgcDEsIHAyIyNfdHlwZSBwMiwgcDMjI190eXBlIHAzLCBcCisgICAgICBwNCMjX3R5cGUgcDQs
IHA1IyNfdHlwZSBwNSwgcDYjI190eXBlIHA2LCBwNyMjX3R5cGUgcDcsIHA4IyNfdHlwZSBwOCwg
XAorICAgICAgcDkjI190eXBlIHA5KSB7XAorICAgIHJldHVybiBuYW1lIyNNYXRjaGVyUDEwPHAw
IyNfdHlwZSwgcDEjI190eXBlLCBwMiMjX3R5cGUsIHAzIyNfdHlwZSwgXAorICAgICAgICBwNCMj
X3R5cGUsIHA1IyNfdHlwZSwgcDYjI190eXBlLCBwNyMjX3R5cGUsIHA4IyNfdHlwZSwgcDkjI190
eXBlPihwMCwgXAorICAgICAgICBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2LCBwNywgcDgsIHA5KTtc
CisgIH1cCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGUsIHR5cGVuYW1lIHAxIyNfdHlw
ZSwgdHlwZW5hbWUgcDIjI190eXBlLCBcCisgICAgICB0eXBlbmFtZSBwMyMjX3R5cGUsIHR5cGVu
YW1lIHA0IyNfdHlwZSwgdHlwZW5hbWUgcDUjI190eXBlLCBcCisgICAgICB0eXBlbmFtZSBwNiMj
X3R5cGUsIHR5cGVuYW1lIHA3IyNfdHlwZSwgdHlwZW5hbWUgcDgjI190eXBlLCBcCisgICAgICB0
eXBlbmFtZSBwOSMjX3R5cGU+XAorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgYXJnX3R5cGU+XAorICBi
b29sIG5hbWUjI01hdGNoZXJQMTA8cDAjI190eXBlLCBwMSMjX3R5cGUsIHAyIyNfdHlwZSwgcDMj
I190eXBlLCBcCisgICAgICBwNCMjX3R5cGUsIHA1IyNfdHlwZSwgcDYjI190eXBlLCBwNyMjX3R5
cGUsIHA4IyNfdHlwZSwgXAorICAgICAgcDkjI190eXBlPjo6Z21vY2tfSW1wbDxhcmdfdHlwZT46
Ok1hdGNoQW5kRXhwbGFpbihcCisgICAgICBhcmdfdHlwZSBhcmcsIFwKKyAgICAgIDo6dGVzdGlu
Zzo6TWF0Y2hSZXN1bHRMaXN0ZW5lciogcmVzdWx0X2xpc3RlbmVyIEdURVNUX0FUVFJJQlVURV9V
TlVTRURfKVwKKyAgICAgICAgICBjb25zdAorCisjZW5kaWYgIC8vIEdNT0NLX0lOQ0xVREVfR01P
Q0tfR01PQ0tfR0VORVJBVEVEX01BVENIRVJTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9p
bmNsdWRlL2dtb2NrL2dtb2NrLWdlbmVyYXRlZC1tYXRjaGVycy5oLnB1bXAgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9j
ay9pbmNsdWRlL2dtb2NrL2dtb2NrLWdlbmVyYXRlZC1tYXRjaGVycy5oLnB1bXAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZGUzMGMyYzkyYmFjMjE0M2YwZjkwMTI3OWE3YTc3Y2U1ZTgzYzU4ZgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svZ21vY2stZ2VuZXJhdGVkLW1hdGNoZXJz
LmgucHVtcApAQCAtMCwwICsxLDY3MiBAQAorJCQgLSotIG1vZGU6IGMrKzsgLSotCiskJCBUaGlz
IGlzIGEgUHVtcCBzb3VyY2UgZmlsZS4gIFBsZWFzZSB1c2UgUHVtcCB0byBjb252ZXJ0IGl0IHRv
CiskJCBnbW9jay1nZW5lcmF0ZWQtYWN0aW9ucy5oLgorJCQKKyR2YXIgbiA9IDEwICAkJCBUaGUg
bWF4aW11bSBhcml0eSB3ZSBzdXBwb3J0LgorJCQgfX0gVGhpcyBsaW5lIGZpeGVzIGF1dG8taW5k
ZW50YXRpb24gb2YgdGhlIGZvbGxvd2luZyBjb2RlIGluIEVtYWNzLgorLy8gQ29weXJpZ2h0IDIw
MDgsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisv
LyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisvLyBHb29nbGUgTW9jayAtIGEgZnJhbWV3
b3JrIGZvciB3cml0aW5nIEMrKyBtb2NrIGNsYXNzZXMuCisvLworLy8gVGhpcyBmaWxlIGltcGxl
bWVudHMgc29tZSBjb21tb25seSB1c2VkIHZhcmlhZGljIG1hdGNoZXJzLgorCisjaWZuZGVmIEdN
T0NLX0lOQ0xVREVfR01PQ0tfR01PQ0tfR0VORVJBVEVEX01BVENIRVJTX0hfCisjZGVmaW5lIEdN
T0NLX0lOQ0xVREVfR01PQ0tfR01PQ0tfR0VORVJBVEVEX01BVENIRVJTX0hfCisKKyNpbmNsdWRl
IDxpdGVyYXRvcj4KKyNpbmNsdWRlIDxzc3RyZWFtPgorI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNs
dWRlIDx2ZWN0b3I+CisjaW5jbHVkZSAiZ21vY2svZ21vY2stbWF0Y2hlcnMuaCIKKworbmFtZXNw
YWNlIHRlc3RpbmcgeworbmFtZXNwYWNlIGludGVybmFsIHsKKworJHJhbmdlIGkgMC4ubi0xCisK
Ky8vIFRoZSB0eXBlIG9mIHRoZSBpLXRoICgwLWJhc2VkKSBmaWVsZCBvZiBUdXBsZS4KKyNkZWZp
bmUgR01PQ0tfRklFTERfVFlQRV8oVHVwbGUsIGkpIFwKKyAgICB0eXBlbmFtZSA6OnRlc3Rpbmc6
OnR1cGxlX2VsZW1lbnQ8aSwgVHVwbGU+Ojp0eXBlCisKKy8vIFR1cGxlRmllbGRzPFR1cGxlLCBr
MCwgLi4uLCBrbj4gaXMgZm9yIHNlbGVjdGluZyBmaWVsZHMgZnJvbSBhCisvLyB0dXBsZSBvZiB0
eXBlIFR1cGxlLiAgSXQgaGFzIHR3byBtZW1iZXJzOgorLy8KKy8vICAgdHlwZTogYSB0dXBsZSB0
eXBlIHdob3NlIGktdGggZmllbGQgaXMgdGhlIGtpLXRoIGZpZWxkIG9mIFR1cGxlLgorLy8gICBH
ZXRTZWxlY3RlZEZpZWxkcyh0KTogcmV0dXJucyBmaWVsZHMgazAsIC4uLiwgYW5kIGtuIG9mIHQg
YXMgYSB0dXBsZS4KKy8vCisvLyBGb3IgZXhhbXBsZSwgaW4gY2xhc3MgVHVwbGVGaWVsZHM8dHVw
bGU8Ym9vbCwgY2hhciwgaW50PiwgMiwgMD4sIHdlIGhhdmU6CisvLworLy8gICB0eXBlIGlzIHR1
cGxlPGludCwgYm9vbD4sIGFuZAorLy8gICBHZXRTZWxlY3RlZEZpZWxkcyhtYWtlX3R1cGxlKHRy
dWUsICdhJywgNDIpKSBpcyAoNDIsIHRydWUpLgorCit0ZW1wbGF0ZSA8Y2xhc3MgVHVwbGUkZm9y
IGkgW1ssIGludCBrJGkgPSAtMV1dPgorY2xhc3MgVHVwbGVGaWVsZHM7CisKKy8vIFRoaXMgZ2Vu
ZXJpYyB2ZXJzaW9uIGlzIHVzZWQgd2hlbiB0aGVyZSBhcmUgJG4gc2VsZWN0b3JzLgordGVtcGxh
dGUgPGNsYXNzIFR1cGxlJGZvciBpIFtbLCBpbnQgayRpXV0+CitjbGFzcyBUdXBsZUZpZWxkcyB7
CisgcHVibGljOgorICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8JGZvciBpLCBbW0dNT0NLX0ZJ
RUxEX1RZUEVfKFR1cGxlLCBrJGkpXV0+IHR5cGU7CisgIHN0YXRpYyB0eXBlIEdldFNlbGVjdGVk
RmllbGRzKGNvbnN0IFR1cGxlJiB0KSB7CisgICAgcmV0dXJuIHR5cGUoJGZvciBpLCBbW2dldDxr
JGk+KHQpXV0pOworICB9Cit9OworCisvLyBUaGUgZm9sbG93aW5nIHNwZWNpYWxpemF0aW9uIGlz
IHVzZWQgZm9yIDAgfiAkKG4tMSkgc2VsZWN0b3JzLgorCiskZm9yIGkgW1sKKyQkIH19fQorJHJh
bmdlIGogMC4uaS0xCiskcmFuZ2UgayAwLi5uLTEKKwordGVtcGxhdGUgPGNsYXNzIFR1cGxlJGZv
ciBqIFtbLCBpbnQgayRqXV0+CitjbGFzcyBUdXBsZUZpZWxkczxUdXBsZSwgJGZvciBrLCBbWyRp
ZiBrIDwgaSBbW2ska11dICRlbHNlIFtbLTFdXV1dPiB7CisgcHVibGljOgorICB0eXBlZGVmIDo6
dGVzdGluZzo6dHVwbGU8JGZvciBqLCBbW0dNT0NLX0ZJRUxEX1RZUEVfKFR1cGxlLCBrJGopXV0+
IHR5cGU7CisgIHN0YXRpYyB0eXBlIEdldFNlbGVjdGVkRmllbGRzKGNvbnN0IFR1cGxlJiAkaWYg
aT09MCBbWy8qIHQgKi9dXSAkZWxzZSBbW3RdXSkgeworICAgIHJldHVybiB0eXBlKCRmb3Igaiwg
W1tnZXQ8ayRqPih0KV1dKTsKKyAgfQorfTsKKworXV0KKworI3VuZGVmIEdNT0NLX0ZJRUxEX1RZ
UEVfCisKKy8vIEltcGxlbWVudHMgdGhlIEFyZ3MoKSBtYXRjaGVyLgorCiskdmFyIGtzID0gW1sk
Zm9yIGksIFtbayRpXV1dXQordGVtcGxhdGUgPGNsYXNzIEFyZ3NUdXBsZSRmb3IgaSBbWywgaW50
IGskaSA9IC0xXV0+CitjbGFzcyBBcmdzTWF0Y2hlckltcGwgOiBwdWJsaWMgTWF0Y2hlckludGVy
ZmFjZTxBcmdzVHVwbGU+IHsKKyBwdWJsaWM6CisgIC8vIEFyZ3NUdXBsZSBtYXkgaGF2ZSB0b3At
bGV2ZWwgY29uc3Qgb3IgcmVmZXJlbmNlIG1vZGlmaWVycy4KKyAgdHlwZWRlZiBHVEVTVF9SRU1P
VkVfUkVGRVJFTkNFX0FORF9DT05TVF8oQXJnc1R1cGxlKSBSYXdBcmdzVHVwbGU7CisgIHR5cGVk
ZWYgdHlwZW5hbWUgaW50ZXJuYWw6OlR1cGxlRmllbGRzPFJhd0FyZ3NUdXBsZSwgJGtzPjo6dHlw
ZSBTZWxlY3RlZEFyZ3M7CisgIHR5cGVkZWYgTWF0Y2hlcjxjb25zdCBTZWxlY3RlZEFyZ3MmPiBN
b25vbW9ycGhpY0lubmVyTWF0Y2hlcjsKKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5uZXJNYXRj
aGVyPgorICBleHBsaWNpdCBBcmdzTWF0Y2hlckltcGwoY29uc3QgSW5uZXJNYXRjaGVyJiBpbm5l
cl9tYXRjaGVyKQorICAgICAgOiBpbm5lcl9tYXRjaGVyXyhTYWZlTWF0Y2hlckNhc3Q8Y29uc3Qg
U2VsZWN0ZWRBcmdzJj4oaW5uZXJfbWF0Y2hlcikpIHt9CisKKyAgdmlydHVhbCBib29sIE1hdGNo
QW5kRXhwbGFpbihBcmdzVHVwbGUgYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgeworICAgIGNvbnN0IFNlbGVj
dGVkQXJncyYgc2VsZWN0ZWRfYXJncyA9IEdldFNlbGVjdGVkQXJncyhhcmdzKTsKKyAgICBpZiAo
IWxpc3RlbmVyLT5Jc0ludGVyZXN0ZWQoKSkKKyAgICAgIHJldHVybiBpbm5lcl9tYXRjaGVyXy5N
YXRjaGVzKHNlbGVjdGVkX2FyZ3MpOworCisgICAgUHJpbnRJbmRpY2VzKGxpc3RlbmVyLT5zdHJl
YW0oKSk7CisgICAgKmxpc3RlbmVyIDw8ICJhcmUgIiA8PCBQcmludFRvU3RyaW5nKHNlbGVjdGVk
X2FyZ3MpOworCisgICAgU3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lciBpbm5lcl9saXN0ZW5lcjsK
KyAgICBjb25zdCBib29sIG1hdGNoID0gaW5uZXJfbWF0Y2hlcl8uTWF0Y2hBbmRFeHBsYWluKHNl
bGVjdGVkX2FyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmaW5uZXJfbGlzdGVuZXIpOworICAgIFByaW50SWZOb3RFbXB0eShpbm5lcl9s
aXN0ZW5lci5zdHIoKSwgbGlzdGVuZXItPnN0cmVhbSgpKTsKKyAgICByZXR1cm4gbWF0Y2g7Cisg
IH0KKworICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0
IHsKKyAgICAqb3MgPDwgImFyZSBhIHR1cGxlICI7CisgICAgUHJpbnRJbmRpY2VzKG9zKTsKKyAg
ICBpbm5lcl9tYXRjaGVyXy5EZXNjcmliZVRvKG9zKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBE
ZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7CisgICAgKm9zIDw8
ICJhcmUgYSB0dXBsZSAiOworICAgIFByaW50SW5kaWNlcyhvcyk7CisgICAgaW5uZXJfbWF0Y2hl
cl8uRGVzY3JpYmVOZWdhdGlvblRvKG9zKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgc3RhdGljIFNl
bGVjdGVkQXJncyBHZXRTZWxlY3RlZEFyZ3MoQXJnc1R1cGxlIGFyZ3MpIHsKKyAgICByZXR1cm4g
VHVwbGVGaWVsZHM8UmF3QXJnc1R1cGxlLCAka3M+OjpHZXRTZWxlY3RlZEZpZWxkcyhhcmdzKTsK
KyAgfQorCisgIC8vIFByaW50cyB0aGUgaW5kaWNlcyBvZiB0aGUgc2VsZWN0ZWQgZmllbGRzLgor
ICBzdGF0aWMgdm9pZCBQcmludEluZGljZXMoOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgKm9z
IDw8ICJ3aG9zZSBmaWVsZHMgKCI7CisgICAgY29uc3QgaW50IGluZGljZXNbJG5dID0geyAka3Mg
fTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8ICRuOyBpKyspIHsKKyAgICAgIGlmIChpbmRpY2Vz
W2ldIDwgMCkKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGlmIChpID49IDEpCisgICAgICAgICpv
cyA8PCAiLCAiOworCisgICAgICAqb3MgPDwgIiMiIDw8IGluZGljZXNbaV07CisgICAgfQorICAg
ICpvcyA8PCAiKSAiOworICB9CisKKyAgY29uc3QgTW9ub21vcnBoaWNJbm5lck1hdGNoZXIgaW5u
ZXJfbWF0Y2hlcl87CisKKyAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhBcmdzTWF0Y2hlckltcGwp
OworfTsKKwordGVtcGxhdGUgPGNsYXNzIElubmVyTWF0Y2hlciRmb3IgaSBbWywgaW50IGskaSA9
IC0xXV0+CitjbGFzcyBBcmdzTWF0Y2hlciB7CisgcHVibGljOgorICBleHBsaWNpdCBBcmdzTWF0
Y2hlcihjb25zdCBJbm5lck1hdGNoZXImIGlubmVyX21hdGNoZXIpCisgICAgICA6IGlubmVyX21h
dGNoZXJfKGlubmVyX21hdGNoZXIpIHt9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEFyZ3NUdXBs
ZT4KKyAgb3BlcmF0b3IgTWF0Y2hlcjxBcmdzVHVwbGU+KCkgY29uc3QgeworICAgIHJldHVybiBN
YWtlTWF0Y2hlcihuZXcgQXJnc01hdGNoZXJJbXBsPEFyZ3NUdXBsZSwgJGtzPihpbm5lcl9tYXRj
aGVyXykpOworICB9CisKKyBwcml2YXRlOgorICBjb25zdCBJbm5lck1hdGNoZXIgaW5uZXJfbWF0
Y2hlcl87CisKKyAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhBcmdzTWF0Y2hlcik7Cit9OworCisv
LyBBIHNldCBvZiBtZXRhZnVuY3Rpb25zIGZvciBjb21wdXRpbmcgdGhlIHJlc3VsdCB0eXBlIG9m
IEFsbE9mLgorLy8gQWxsT2YobTEsIC4uLiwgbU4pIHJldHVybnMKKy8vIEFsbE9mUmVzdWx0Tjxk
ZWNsdHlwZShtMSksIC4uLiwgZGVjbHR5cGUobU4pPjo6dHlwZS4KKworLy8gQWx0aG91Z2ggQWxs
T2YgaXNuJ3QgZGVmaW5lZCBmb3Igb25lIGFyZ3VtZW50LCBBbGxPZlJlc3VsdDEgaXMgZGVmaW5l
ZAorLy8gdG8gc2ltcGxpZnkgdGhlIGltcGxlbWVudGF0aW9uLgordGVtcGxhdGUgPHR5cGVuYW1l
IE0xPgorc3RydWN0IEFsbE9mUmVzdWx0MSB7CisgIHR5cGVkZWYgTTEgdHlwZTsKK307CisKKyRy
YW5nZSBpIDEuLm4KKworJHJhbmdlIGkgMi4ubgorJGZvciBpIFtbCiskcmFuZ2UgaiAyLi5pCisk
dmFyIG0gPSBpLzIKKyRyYW5nZSBrIDEuLm0KKyRyYW5nZSB0IG0rMS4uaQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgTTEkZm9yIGogW1ssIHR5cGVuYW1lIE0kal1dPgorc3RydWN0IEFsbE9mUmVzdWx0
JGkgeworICB0eXBlZGVmIEJvdGhPZk1hdGNoZXI8CisgICAgICB0eXBlbmFtZSBBbGxPZlJlc3Vs
dCRtPCRmb3IgaywgW1tNJGtdXT46OnR5cGUsCisgICAgICB0eXBlbmFtZSBBbGxPZlJlc3VsdCQo
aS1tKTwkZm9yIHQsIFtbTSR0XV0+Ojp0eXBlCisgID4gdHlwZTsKK307CisKK11dCisKKy8vIEEg
c2V0IG9mIG1ldGFmdW5jdGlvbnMgZm9yIGNvbXB1dGluZyB0aGUgcmVzdWx0IHR5cGUgb2YgQW55
T2YuCisvLyBBbnlPZihtMSwgLi4uLCBtTikgcmV0dXJucworLy8gQW55T2ZSZXN1bHROPGRlY2x0
eXBlKG0xKSwgLi4uLCBkZWNsdHlwZShtTik+Ojp0eXBlLgorCisvLyBBbHRob3VnaCBBbnlPZiBp
c24ndCBkZWZpbmVkIGZvciBvbmUgYXJndW1lbnQsIEFueU9mUmVzdWx0MSBpcyBkZWZpbmVkCisv
LyB0byBzaW1wbGlmeSB0aGUgaW1wbGVtZW50YXRpb24uCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTTE+
CitzdHJ1Y3QgQW55T2ZSZXN1bHQxIHsKKyAgdHlwZWRlZiBNMSB0eXBlOworfTsKKworJHJhbmdl
IGkgMS4ubgorCiskcmFuZ2UgaSAyLi5uCiskZm9yIGkgW1sKKyRyYW5nZSBqIDIuLmkKKyR2YXIg
bSA9IGkvMgorJHJhbmdlIGsgMS4ubQorJHJhbmdlIHQgbSsxLi5pCisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBNMSRmb3IgaiBbWywgdHlwZW5hbWUgTSRqXV0+CitzdHJ1Y3QgQW55T2ZSZXN1bHQkaSB7
CisgIHR5cGVkZWYgRWl0aGVyT2ZNYXRjaGVyPAorICAgICAgdHlwZW5hbWUgQW55T2ZSZXN1bHQk
bTwkZm9yIGssIFtbTSRrXV0+Ojp0eXBlLAorICAgICAgdHlwZW5hbWUgQW55T2ZSZXN1bHQkKGkt
bSk8JGZvciB0LCBbW00kdF1dPjo6dHlwZQorICA+IHR5cGU7Cit9OworCitdXQorCit9ICAvLyBu
YW1lc3BhY2UgaW50ZXJuYWwKKworLy8gQXJnczxOMSwgTjIsIC4uLiwgTms+KGFfbWF0Y2hlcikg
bWF0Y2hlcyBhIHR1cGxlIGlmIHRoZSBzZWxlY3RlZAorLy8gZmllbGRzIG9mIGl0IG1hdGNoZXMg
YV9tYXRjaGVyLiAgQysrIGRvZXNuJ3Qgc3VwcG9ydCBkZWZhdWx0CisvLyBhcmd1bWVudHMgZm9y
IGZ1bmN0aW9uIHRlbXBsYXRlcywgc28gd2UgaGF2ZSB0byBvdmVybG9hZCBpdC4KKworJHJhbmdl
IGkgMC4ubgorJGZvciBpIFtbCiskcmFuZ2UgaiAxLi5pCit0ZW1wbGF0ZSA8JGZvciBqIFtbaW50
IGskaiwgXV10eXBlbmFtZSBJbm5lck1hdGNoZXI+CitpbmxpbmUgaW50ZXJuYWw6OkFyZ3NNYXRj
aGVyPElubmVyTWF0Y2hlciRmb3IgaiBbWywgayRqXV0+CitBcmdzKGNvbnN0IElubmVyTWF0Y2hl
ciYgbWF0Y2hlcikgeworICByZXR1cm4gaW50ZXJuYWw6OkFyZ3NNYXRjaGVyPElubmVyTWF0Y2hl
ciRmb3IgaiBbWywgayRqXV0+KG1hdGNoZXIpOworfQorCisKK11dCisvLyBFbGVtZW50c0FyZShl
XzEsIGVfMiwgLi4uIGVfbikgbWF0Y2hlcyBhbiBTVEwtc3R5bGUgY29udGFpbmVyIHdpdGgKKy8v
IG4gZWxlbWVudHMsIHdoZXJlIHRoZSBpLXRoIGVsZW1lbnQgaW4gdGhlIGNvbnRhaW5lciBtdXN0
CisvLyBtYXRjaCB0aGUgaS10aCBhcmd1bWVudCBpbiB0aGUgbGlzdC4gIEVhY2ggYXJndW1lbnQg
b2YKKy8vIEVsZW1lbnRzQXJlKCkgY2FuIGJlIGVpdGhlciBhIHZhbHVlIG9yIGEgbWF0Y2hlci4g
IFdlIHN1cHBvcnQgdXAgdG8KKy8vICRuIGFyZ3VtZW50cy4KKy8vCisvLyBUaGUgdXNlIG9mIERl
Y2F5QXJyYXkgaW4gdGhlIGltcGxlbWVudGF0aW9uIGFsbG93cyBFbGVtZW50c0FyZSgpCisvLyB0
byBhY2NlcHQgc3RyaW5nIGxpdGVyYWxzLCB3aG9zZSB0eXBlIGlzIGNvbnN0IGNoYXJbTl0sIGJ1
dCB3ZQorLy8gd2FudCB0byB0cmVhdCB0aGVtIGFzIGNvbnN0IGNoYXIqLgorLy8KKy8vIE5PVEU6
IFNpbmNlIEVsZW1lbnRzQXJlKCkgY2FyZXMgYWJvdXQgdGhlIG9yZGVyIG9mIHRoZSBlbGVtZW50
cywgaXQKKy8vIG11c3Qgbm90IGJlIHVzZWQgd2l0aCBjb250YWluZXJzIHdob3NlIGVsZW1lbnRz
J3Mgb3JkZXIgaXMKKy8vIHVuZGVmaW5lZCAoZS5nLiBoYXNoX21hcCkuCisKKyRyYW5nZSBpIDAu
Lm4KKyRmb3IgaSBbWworCiskcmFuZ2UgaiAxLi5pCisKKyRpZiBpPjAgW1sKKwordGVtcGxhdGUg
PCRmb3IgaiwgW1t0eXBlbmFtZSBUJGpdXT4KK11dCisKK2lubGluZSBpbnRlcm5hbDo6RWxlbWVu
dHNBcmVNYXRjaGVyPAorICAgIDo6dGVzdGluZzo6dHVwbGU8CiskZm9yIGosIFtbCisKKyAgICAg
ICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VCRqW1tdXT46OnR5cGVdXT4gPgorRWxl
bWVudHNBcmUoJGZvciBqLCBbW2NvbnN0IFQkaiYgZSRqXV0pIHsKKyAgdHlwZWRlZiA6OnRlc3Rp
bmc6OnR1cGxlPAorJGZvciBqLCBbWworCisgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlB
cnJheTxUJGpbW11dPjo6dHlwZV1dPiBBcmdzOworICByZXR1cm4gaW50ZXJuYWw6OkVsZW1lbnRz
QXJlTWF0Y2hlcjxBcmdzPihBcmdzKCRmb3IgaiwgW1tlJGpdXSkpOworfQorCitdXQorCisvLyBV
bm9yZGVyZWRFbGVtZW50c0FyZShlXzEsIGVfMiwgLi4uLCBlX24pIGlzIGFuIEVsZW1lbnRzQXJl
IGV4dGVuc2lvbgorLy8gdGhhdCBtYXRjaGVzIG4gZWxlbWVudHMgaW4gYW55IG9yZGVyLiAgV2Ug
c3VwcG9ydCB1cCB0byBuPSRuIGFyZ3VtZW50cy4KKworJHJhbmdlIGkgMC4ubgorJGZvciBpIFtb
CisKKyRyYW5nZSBqIDEuLmkKKworJGlmIGk+MCBbWworCit0ZW1wbGF0ZSA8JGZvciBqLCBbW3R5
cGVuYW1lIFQkal1dPgorXV0KKworaW5saW5lIGludGVybmFsOjpVbm9yZGVyZWRFbGVtZW50c0Fy
ZU1hdGNoZXI8CisgICAgOjp0ZXN0aW5nOjp0dXBsZTwKKyRmb3IgaiwgW1sKKworICAgICAgICB0
eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUJGpbW11dPjo6dHlwZV1dPiA+CitVbm9yZGVy
ZWRFbGVtZW50c0FyZSgkZm9yIGosIFtbY29uc3QgVCRqJiBlJGpdXSkgeworICB0eXBlZGVmIDo6
dGVzdGluZzo6dHVwbGU8CiskZm9yIGosIFtbCisKKyAgICAgIHR5cGVuYW1lIGludGVybmFsOjpE
ZWNheUFycmF5PFQkaltbXV0+Ojp0eXBlXV0+IEFyZ3M7CisgIHJldHVybiBpbnRlcm5hbDo6VW5v
cmRlcmVkRWxlbWVudHNBcmVNYXRjaGVyPEFyZ3M+KEFyZ3MoJGZvciBqLCBbW2Ukal1dKSk7Cit9
CisKK11dCisKKy8vIEFsbE9mKG0xLCBtMiwgLi4uLCBtaykgbWF0Y2hlcyBhbnkgdmFsdWUgdGhh
dCBtYXRjaGVzIGFsbCBvZiB0aGUgZ2l2ZW4KKy8vIHN1Yi1tYXRjaGVycy4gIEFsbE9mIGlzIGNh
bGxlZCBmdWxseSBxdWFsaWZpZWQgdG8gcHJldmVudCBBREwgZnJvbSBmaXJpbmcuCisKKyRyYW5n
ZSBpIDIuLm4KKyRmb3IgaSBbWworJHJhbmdlIGogMS4uaQorJHZhciBtID0gaS8yCiskcmFuZ2Ug
ayAxLi5tCiskcmFuZ2UgdCBtKzEuLmkKKwordGVtcGxhdGUgPCRmb3IgaiwgW1t0eXBlbmFtZSBN
JGpdXT4KK2lubGluZSB0eXBlbmFtZSBpbnRlcm5hbDo6QWxsT2ZSZXN1bHQkaTwkZm9yIGosIFtb
TSRqXV0+Ojp0eXBlCitBbGxPZigkZm9yIGosIFtbTSRqIG0kal1dKSB7CisgIHJldHVybiB0eXBl
bmFtZSBpbnRlcm5hbDo6QWxsT2ZSZXN1bHQkaTwkZm9yIGosIFtbTSRqXV0+Ojp0eXBlKAorICAg
ICAgJGlmIG0gPT0gMSBbW20xXV0gJGVsc2UgW1s6OnRlc3Rpbmc6OkFsbE9mKCRmb3IgaywgW1tt
JGtdXSldXSwKKyAgICAgICRpZiBtKzEgPT0gaSBbW20kaV1dICRlbHNlIFtbOjp0ZXN0aW5nOjpB
bGxPZigkZm9yIHQsIFtbbSR0XV0pXV0pOworfQorCitdXQorCisvLyBBbnlPZihtMSwgbTIsIC4u
LiwgbWspIG1hdGNoZXMgYW55IHZhbHVlIHRoYXQgbWF0Y2hlcyBhbnkgb2YgdGhlIGdpdmVuCisv
LyBzdWItbWF0Y2hlcnMuICBBbnlPZiBpcyBjYWxsZWQgZnVsbHkgcXVhbGlmaWVkIHRvIHByZXZl
bnQgQURMIGZyb20gZmlyaW5nLgorCiskcmFuZ2UgaSAyLi5uCiskZm9yIGkgW1sKKyRyYW5nZSBq
IDEuLmkKKyR2YXIgbSA9IGkvMgorJHJhbmdlIGsgMS4ubQorJHJhbmdlIHQgbSsxLi5pCisKK3Rl
bXBsYXRlIDwkZm9yIGosIFtbdHlwZW5hbWUgTSRqXV0+CitpbmxpbmUgdHlwZW5hbWUgaW50ZXJu
YWw6OkFueU9mUmVzdWx0JGk8JGZvciBqLCBbW00kal1dPjo6dHlwZQorQW55T2YoJGZvciBqLCBb
W00kaiBtJGpdXSkgeworICByZXR1cm4gdHlwZW5hbWUgaW50ZXJuYWw6OkFueU9mUmVzdWx0JGk8
JGZvciBqLCBbW00kal1dPjo6dHlwZSgKKyAgICAgICRpZiBtID09IDEgW1ttMV1dICRlbHNlIFtb
Ojp0ZXN0aW5nOjpBbnlPZigkZm9yIGssIFtbbSRrXV0pXV0sCisgICAgICAkaWYgbSsxID09IGkg
W1ttJGldXSAkZWxzZSBbWzo6dGVzdGluZzo6QW55T2YoJGZvciB0LCBbW20kdF1dKV1dKTsKK30K
KworXV0KKworfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKKyQkIH0gLy8gVGhpcyBQdW1wIG1ldGEg
Y29tbWVudCBmaXhlcyBhdXRvLWluZGVudGF0aW9uIGluIEVtYWNzLiBJdCB3aWxsIG5vdAorJCQg
ICAvLyBzaG93IHVwIGluIHRoZSBnZW5lcmF0ZWQgY29kZS4KKworCisvLyBUaGUgTUFUQ0hFUiog
ZmFtaWx5IG9mIG1hY3JvcyBjYW4gYmUgdXNlZCBpbiBhIG5hbWVzcGFjZSBzY29wZSB0bworLy8g
ZGVmaW5lIGN1c3RvbSBtYXRjaGVycyBlYXNpbHkuCisvLworLy8gQmFzaWMgVXNhZ2UKKy8vID09
PT09PT09PT09CisvLworLy8gVGhlIHN5bnRheAorLy8KKy8vICAgTUFUQ0hFUihuYW1lLCBkZXNj
cmlwdGlvbl9zdHJpbmcpIHsgc3RhdGVtZW50czsgfQorLy8KKy8vIGRlZmluZXMgYSBtYXRjaGVy
IHdpdGggdGhlIGdpdmVuIG5hbWUgdGhhdCBleGVjdXRlcyB0aGUgc3RhdGVtZW50cywKKy8vIHdo
aWNoIG11c3QgcmV0dXJuIGEgYm9vbCB0byBpbmRpY2F0ZSBpZiB0aGUgbWF0Y2ggc3VjY2VlZHMu
ICBJbnNpZGUKKy8vIHRoZSBzdGF0ZW1lbnRzLCB5b3UgY2FuIHJlZmVyIHRvIHRoZSB2YWx1ZSBi
ZWluZyBtYXRjaGVkIGJ5ICdhcmcnLAorLy8gYW5kIHJlZmVyIHRvIGl0cyB0eXBlIGJ5ICdhcmdf
dHlwZScuCisvLworLy8gVGhlIGRlc2NyaXB0aW9uIHN0cmluZyBkb2N1bWVudHMgd2hhdCB0aGUg
bWF0Y2hlciBkb2VzLCBhbmQgaXMgdXNlZAorLy8gdG8gZ2VuZXJhdGUgdGhlIGZhaWx1cmUgbWVz
c2FnZSB3aGVuIHRoZSBtYXRjaCBmYWlscy4gIFNpbmNlIGEKKy8vIE1BVENIRVIoKSBpcyB1c3Vh
bGx5IGRlZmluZWQgaW4gYSBoZWFkZXIgZmlsZSBzaGFyZWQgYnkgbXVsdGlwbGUKKy8vIEMrKyBz
b3VyY2UgZmlsZXMsIHdlIHJlcXVpcmUgdGhlIGRlc2NyaXB0aW9uIHRvIGJlIGEgQy1zdHJpbmcK
Ky8vIGxpdGVyYWwgdG8gYXZvaWQgcG9zc2libGUgc2lkZSBlZmZlY3RzLiAgSXQgY2FuIGJlIGVt
cHR5LCBpbiB3aGljaAorLy8gY2FzZSB3ZSdsbCB1c2UgdGhlIHNlcXVlbmNlIG9mIHdvcmRzIGlu
IHRoZSBtYXRjaGVyIG5hbWUgYXMgdGhlCisvLyBkZXNjcmlwdGlvbi4KKy8vCisvLyBGb3IgZXhh
bXBsZToKKy8vCisvLyAgIE1BVENIRVIoSXNFdmVuLCAiIikgeyByZXR1cm4gKGFyZyAlIDIpID09
IDA7IH0KKy8vCisvLyBhbGxvd3MgeW91IHRvIHdyaXRlCisvLworLy8gICAvLyBFeHBlY3RzIG1v
Y2tfZm9vLkJhcihuKSB0byBiZSBjYWxsZWQgd2hlcmUgbiBpcyBldmVuLgorLy8gICBFWFBFQ1Rf
Q0FMTChtb2NrX2ZvbywgQmFyKElzRXZlbigpKSk7CisvLworLy8gb3IsCisvLworLy8gICAvLyBW
ZXJpZmllcyB0aGF0IHRoZSB2YWx1ZSBvZiBzb21lX2V4cHJlc3Npb24gaXMgZXZlbi4KKy8vICAg
RVhQRUNUX1RIQVQoc29tZV9leHByZXNzaW9uLCBJc0V2ZW4oKSk7CisvLworLy8gSWYgdGhlIGFi
b3ZlIGFzc2VydGlvbiBmYWlscywgaXQgd2lsbCBwcmludCBzb21ldGhpbmcgbGlrZToKKy8vCisv
LyAgIFZhbHVlIG9mOiBzb21lX2V4cHJlc3Npb24KKy8vICAgRXhwZWN0ZWQ6IGlzIGV2ZW4KKy8v
ICAgICBBY3R1YWw6IDcKKy8vCisvLyB3aGVyZSB0aGUgZGVzY3JpcHRpb24gImlzIGV2ZW4iIGlz
IGF1dG9tYXRpY2FsbHkgY2FsY3VsYXRlZCBmcm9tIHRoZQorLy8gbWF0Y2hlciBuYW1lIElzRXZl
bi4KKy8vCisvLyBBcmd1bWVudCBUeXBlCisvLyA9PT09PT09PT09PT09CisvLworLy8gTm90ZSB0
aGF0IHRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBiZWluZyBtYXRjaGVkIChhcmdfdHlwZSkgaXMKKy8v
IGRldGVybWluZWQgYnkgdGhlIGNvbnRleHQgaW4gd2hpY2ggeW91IHVzZSB0aGUgbWF0Y2hlciBh
bmQgaXMKKy8vIHN1cHBsaWVkIHRvIHlvdSBieSB0aGUgY29tcGlsZXIsIHNvIHlvdSBkb24ndCBu
ZWVkIHRvIHdvcnJ5IGFib3V0CisvLyBkZWNsYXJpbmcgaXQgKG5vciBjYW4geW91KS4gIFRoaXMg
YWxsb3dzIHRoZSBtYXRjaGVyIHRvIGJlCisvLyBwb2x5bW9ycGhpYy4gIEZvciBleGFtcGxlLCBJ
c0V2ZW4oKSBjYW4gYmUgdXNlZCB0byBtYXRjaCBhbnkgdHlwZQorLy8gd2hlcmUgdGhlIHZhbHVl
IG9mICIoYXJnICUgMikgPT0gMCIgY2FuIGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRvCisvLyBh
IGJvb2wuICBJbiB0aGUgIkJhcihJc0V2ZW4oKSkiIGV4YW1wbGUgYWJvdmUsIGlmIG1ldGhvZCBC
YXIoKQorLy8gdGFrZXMgYW4gaW50LCAnYXJnX3R5cGUnIHdpbGwgYmUgaW50OyBpZiBpdCB0YWtl
cyBhbiB1bnNpZ25lZCBsb25nLAorLy8gJ2FyZ190eXBlJyB3aWxsIGJlIHVuc2lnbmVkIGxvbmc7
IGFuZCBzbyBvbi4KKy8vCisvLyBQYXJhbWV0ZXJpemluZyBNYXRjaGVycworLy8gPT09PT09PT09
PT09PT09PT09PT09PT0KKy8vCisvLyBTb21ldGltZXMgeW91J2xsIHdhbnQgdG8gcGFyYW1ldGVy
aXplIHRoZSBtYXRjaGVyLiAgRm9yIHRoYXQgeW91CisvLyBjYW4gdXNlIGFub3RoZXIgbWFjcm86
CisvLworLy8gICBNQVRDSEVSX1AobmFtZSwgcGFyYW1fbmFtZSwgZGVzY3JpcHRpb25fc3RyaW5n
KSB7IHN0YXRlbWVudHM7IH0KKy8vCisvLyBGb3IgZXhhbXBsZToKKy8vCisvLyAgIE1BVENIRVJf
UChIYXNBYnNvbHV0ZVZhbHVlLCB2YWx1ZSwgIiIpIHsgcmV0dXJuIGFicyhhcmcpID09IHZhbHVl
OyB9CisvLworLy8gd2lsbCBhbGxvdyB5b3UgdG8gd3JpdGU6CisvLworLy8gICBFWFBFQ1RfVEhB
VChCbGFoKCJhIiksIEhhc0Fic29sdXRlVmFsdWUobikpOworLy8KKy8vIHdoaWNoIG1heSBsZWFk
IHRvIHRoaXMgbWVzc2FnZSAoYXNzdW1pbmcgbiBpcyAxMCk6CisvLworLy8gICBWYWx1ZSBvZjog
QmxhaCgiYSIpCisvLyAgIEV4cGVjdGVkOiBoYXMgYWJzb2x1dGUgdmFsdWUgMTAKKy8vICAgICBB
Y3R1YWw6IC05CisvLworLy8gTm90ZSB0aGF0IGJvdGggdGhlIG1hdGNoZXIgZGVzY3JpcHRpb24g
YW5kIGl0cyBwYXJhbWV0ZXIgYXJlCisvLyBwcmludGVkLCBtYWtpbmcgdGhlIG1lc3NhZ2UgaHVt
YW4tZnJpZW5kbHkuCisvLworLy8gSW4gdGhlIG1hdGNoZXIgZGVmaW5pdGlvbiBib2R5LCB5b3Ug
Y2FuIHdyaXRlICdmb29fdHlwZScgdG8KKy8vIHJlZmVyZW5jZSB0aGUgdHlwZSBvZiBhIHBhcmFt
ZXRlciBuYW1lZCAnZm9vJy4gIEZvciBleGFtcGxlLCBpbiB0aGUKKy8vIGJvZHkgb2YgTUFUQ0hF
Ul9QKEhhc0Fic29sdXRlVmFsdWUsIHZhbHVlKSBhYm92ZSwgeW91IGNhbiB3cml0ZQorLy8gJ3Zh
bHVlX3R5cGUnIHRvIHJlZmVyIHRvIHRoZSB0eXBlIG9mICd2YWx1ZScuCisvLworLy8gV2UgYWxz
byBwcm92aWRlIE1BVENIRVJfUDIsIE1BVENIRVJfUDMsIC4uLiwgdXAgdG8gTUFUQ0hFUl9QJG4g
dG8KKy8vIHN1cHBvcnQgbXVsdGktcGFyYW1ldGVyIG1hdGNoZXJzLgorLy8KKy8vIERlc2NyaWJp
bmcgUGFyYW1ldGVyaXplZCBNYXRjaGVycworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09CisvLworLy8gVGhlIGxhc3QgYXJndW1lbnQgdG8gTUFUQ0hFUiooKSBpcyBhIHN0cmlu
Zy10eXBlZCBleHByZXNzaW9uLiAgVGhlCisvLyBleHByZXNzaW9uIGNhbiByZWZlcmVuY2UgYWxs
IG9mIHRoZSBtYXRjaGVyJ3MgcGFyYW1ldGVycyBhbmQgYQorLy8gc3BlY2lhbCBib29sLXR5cGVk
IHZhcmlhYmxlIG5hbWVkICduZWdhdGlvbicuICBXaGVuICduZWdhdGlvbicgaXMKKy8vIGZhbHNl
LCB0aGUgZXhwcmVzc2lvbiBzaG91bGQgZXZhbHVhdGUgdG8gdGhlIG1hdGNoZXIncyBkZXNjcmlw
dGlvbjsKKy8vIG90aGVyd2lzZSBpdCBzaG91bGQgZXZhbHVhdGUgdG8gdGhlIGRlc2NyaXB0aW9u
IG9mIHRoZSBuZWdhdGlvbiBvZgorLy8gdGhlIG1hdGNoZXIuICBGb3IgZXhhbXBsZSwKKy8vCisv
LyAgIHVzaW5nIHRlc3Rpbmc6OlByaW50VG9TdHJpbmc7CisvLworLy8gICBNQVRDSEVSX1AyKElu
Q2xvc2VkUmFuZ2UsIGxvdywgaGksCisvLyAgICAgICBzdHJpbmcobmVnYXRpb24gPyAiaXMgbm90
IiA6ICJpcyIpICsgIiBpbiByYW5nZSBbIiArCisvLyAgICAgICBQcmludFRvU3RyaW5nKGxvdykg
KyAiLCAiICsgUHJpbnRUb1N0cmluZyhoaSkgKyAiXSIpIHsKKy8vICAgICByZXR1cm4gbG93IDw9
IGFyZyAmJiBhcmcgPD0gaGk7CisvLyAgIH0KKy8vICAgLi4uCisvLyAgIEVYUEVDVF9USEFUKDMs
IEluQ2xvc2VkUmFuZ2UoNCwgNikpOworLy8gICBFWFBFQ1RfVEhBVCgzLCBOb3QoSW5DbG9zZWRS
YW5nZSgyLCA0KSkpOworLy8KKy8vIHdvdWxkIGdlbmVyYXRlIHR3byBmYWlsdXJlcyB0aGF0IGNv
bnRhaW4gdGhlIHRleHQ6CisvLworLy8gICBFeHBlY3RlZDogaXMgaW4gcmFuZ2UgWzQsIDZdCisv
LyAgIC4uLgorLy8gICBFeHBlY3RlZDogaXMgbm90IGluIHJhbmdlIFsyLCA0XQorLy8KKy8vIElm
IHlvdSBzcGVjaWZ5ICIiIGFzIHRoZSBkZXNjcmlwdGlvbiwgdGhlIGZhaWx1cmUgbWVzc2FnZSB3
aWxsCisvLyBjb250YWluIHRoZSBzZXF1ZW5jZSBvZiB3b3JkcyBpbiB0aGUgbWF0Y2hlciBuYW1l
IGZvbGxvd2VkIGJ5IHRoZQorLy8gcGFyYW1ldGVyIHZhbHVlcyBwcmludGVkIGFzIGEgdHVwbGUu
ICBGb3IgZXhhbXBsZSwKKy8vCisvLyAgIE1BVENIRVJfUDIoSW5DbG9zZWRSYW5nZSwgbG93LCBo
aSwgIiIpIHsgLi4uIH0KKy8vICAgLi4uCisvLyAgIEVYUEVDVF9USEFUKDMsIEluQ2xvc2VkUmFu
Z2UoNCwgNikpOworLy8gICBFWFBFQ1RfVEhBVCgzLCBOb3QoSW5DbG9zZWRSYW5nZSgyLCA0KSkp
OworLy8KKy8vIHdvdWxkIGdlbmVyYXRlIHR3byBmYWlsdXJlcyB0aGF0IGNvbnRhaW4gdGhlIHRl
eHQ6CisvLworLy8gICBFeHBlY3RlZDogaW4gY2xvc2VkIHJhbmdlICg0LCA2KQorLy8gICAuLi4K
Ky8vICAgRXhwZWN0ZWQ6IG5vdCAoaW4gY2xvc2VkIHJhbmdlICgyLCA0KSkKKy8vCisvLyBUeXBl
cyBvZiBNYXRjaGVyIFBhcmFtZXRlcnMKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PQor
Ly8KKy8vIEZvciB0aGUgcHVycG9zZSBvZiB0eXBpbmcsIHlvdSBjYW4gdmlldworLy8KKy8vICAg
TUFUQ0hFUl9QayhGb28sIHAxLCAuLi4sIHBrLCBkZXNjcmlwdGlvbl9zdHJpbmcpIHsgLi4uIH0K
Ky8vCisvLyBhcyBzaG9ydGhhbmQgZm9yCisvLworLy8gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDFf
dHlwZSwgLi4uLCB0eXBlbmFtZSBwa190eXBlPgorLy8gICBGb29NYXRjaGVyUGs8cDFfdHlwZSwg
Li4uLCBwa190eXBlPgorLy8gICBGb28ocDFfdHlwZSBwMSwgLi4uLCBwa190eXBlIHBrKSB7IC4u
LiB9CisvLworLy8gV2hlbiB5b3Ugd3JpdGUgRm9vKHYxLCAuLi4sIHZrKSwgdGhlIGNvbXBpbGVy
IGluZmVycyB0aGUgdHlwZXMgb2YKKy8vIHRoZSBwYXJhbWV0ZXJzIHYxLCAuLi4sIGFuZCB2ayBm
b3IgeW91LiAgSWYgeW91IGFyZSBub3QgaGFwcHkgd2l0aAorLy8gdGhlIHJlc3VsdCBvZiB0aGUg
dHlwZSBpbmZlcmVuY2UsIHlvdSBjYW4gc3BlY2lmeSB0aGUgdHlwZXMgYnkKKy8vIGV4cGxpY2l0
bHkgaW5zdGFudGlhdGluZyB0aGUgdGVtcGxhdGUsIGFzIGluIEZvbzxsb25nLCBib29sPig1LAor
Ly8gZmFsc2UpLiAgQXMgc2FpZCBlYXJsaWVyLCB5b3UgZG9uJ3QgZ2V0IHRvIChvciBuZWVkIHRv
KSBzcGVjaWZ5CisvLyAnYXJnX3R5cGUnIGFzIHRoYXQncyBkZXRlcm1pbmVkIGJ5IHRoZSBjb250
ZXh0IGluIHdoaWNoIHRoZSBtYXRjaGVyCisvLyBpcyB1c2VkLiAgWW91IGNhbiBhc3NpZ24gdGhl
IHJlc3VsdCBvZiBleHByZXNzaW9uIEZvbyhwMSwgLi4uLCBwaykKKy8vIHRvIGEgdmFyaWFibGUg
b2YgdHlwZSBGb29NYXRjaGVyUGs8cDFfdHlwZSwgLi4uLCBwa190eXBlPi4gIFRoaXMKKy8vIGNh
biBiZSB1c2VmdWwgd2hlbiBjb21wb3NpbmcgbWF0Y2hlcnMuCisvLworLy8gV2hpbGUgeW91IGNh
biBpbnN0YW50aWF0ZSBhIG1hdGNoZXIgdGVtcGxhdGUgd2l0aCByZWZlcmVuY2UgdHlwZXMsCisv
LyBwYXNzaW5nIHRoZSBwYXJhbWV0ZXJzIGJ5IHBvaW50ZXIgdXN1YWxseSBtYWtlcyB5b3VyIGNv
ZGUgbW9yZQorLy8gcmVhZGFibGUuICBJZiwgaG93ZXZlciwgeW91IHN0aWxsIHdhbnQgdG8gcGFz
cyBhIHBhcmFtZXRlciBieQorLy8gcmVmZXJlbmNlLCBiZSBhd2FyZSB0aGF0IGluIHRoZSBmYWls
dXJlIG1lc3NhZ2UgZ2VuZXJhdGVkIGJ5IHRoZQorLy8gbWF0Y2hlciB5b3Ugd2lsbCBzZWUgdGhl
IHZhbHVlIG9mIHRoZSByZWZlcmVuY2VkIG9iamVjdCBidXQgbm90IGl0cworLy8gYWRkcmVzcy4K
Ky8vCisvLyBFeHBsYWluaW5nIE1hdGNoIFJlc3VsdHMKKy8vID09PT09PT09PT09PT09PT09PT09
PT09PQorLy8KKy8vIFNvbWV0aW1lcyB0aGUgbWF0Y2hlciBkZXNjcmlwdGlvbiBhbG9uZSBpc24n
dCBlbm91Z2ggdG8gZXhwbGFpbiB3aHkKKy8vIHRoZSBtYXRjaCBoYXMgZmFpbGVkIG9yIHN1Y2Nl
ZWRlZC4gIEZvciBleGFtcGxlLCB3aGVuIGV4cGVjdGluZyBhCisvLyBsb25nIHN0cmluZywgaXQg
Y2FuIGJlIHZlcnkgaGVscGZ1bCB0byBhbHNvIHByaW50IHRoZSBkaWZmIGJldHdlZW4KKy8vIHRo
ZSBleHBlY3RlZCBzdHJpbmcgYW5kIHRoZSBhY3R1YWwgb25lLiAgVG8gYWNoaWV2ZSB0aGF0LCB5
b3UgY2FuCisvLyBvcHRpb25hbGx5IHN0cmVhbSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIGEg
c3BlY2lhbCB2YXJpYWJsZQorLy8gbmFtZWQgcmVzdWx0X2xpc3RlbmVyLCB3aG9zZSB0eXBlIGlz
IGEgcG9pbnRlciB0byBjbGFzcworLy8gTWF0Y2hSZXN1bHRMaXN0ZW5lcjoKKy8vCisvLyAgIE1B
VENIRVJfUChFcXVhbHNMb25nU3RyaW5nLCBzdHIsICIiKSB7CisvLyAgICAgaWYgKGFyZyA9PSBz
dHIpIHJldHVybiB0cnVlOworLy8KKy8vICAgICAqcmVzdWx0X2xpc3RlbmVyIDw8ICJ0aGUgZGlm
ZmVyZW5jZTogIgorLy8vICAgICAgICAgICAgICAgICAgICAgPDwgRGlmZlN0cmluZ3Moc3RyLCBh
cmcpOworLy8gICAgIHJldHVybiBmYWxzZTsKKy8vICAgfQorLy8KKy8vIE92ZXJsb2FkaW5nIE1h
dGNoZXJzCisvLyA9PT09PT09PT09PT09PT09PT09PQorLy8KKy8vIFlvdSBjYW4gb3ZlcmxvYWQg
bWF0Y2hlcnMgd2l0aCBkaWZmZXJlbnQgbnVtYmVycyBvZiBwYXJhbWV0ZXJzOgorLy8KKy8vICAg
TUFUQ0hFUl9QKEJsYWgsIGEsIGRlc2NyaXB0aW9uX3N0cmluZzEpIHsgLi4uIH0KKy8vICAgTUFU
Q0hFUl9QMihCbGFoLCBhLCBiLCBkZXNjcmlwdGlvbl9zdHJpbmcyKSB7IC4uLiB9CisvLworLy8g
Q2F2ZWF0cworLy8gPT09PT09PQorLy8KKy8vIFdoZW4gZGVmaW5pbmcgYSBuZXcgbWF0Y2hlciwg
eW91IHNob3VsZCBhbHNvIGNvbnNpZGVyIGltcGxlbWVudGluZworLy8gTWF0Y2hlckludGVyZmFj
ZSBvciB1c2luZyBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKCkuICBUaGVzZQorLy8gYXBwcm9hY2hl
cyByZXF1aXJlIG1vcmUgd29yayB0aGFuIHRoZSBNQVRDSEVSKiBtYWNyb3MsIGJ1dCBhbHNvCisv
LyBnaXZlIHlvdSBtb3JlIGNvbnRyb2wgb24gdGhlIHR5cGVzIG9mIHRoZSB2YWx1ZSBiZWluZyBt
YXRjaGVkIGFuZAorLy8gdGhlIG1hdGNoZXIgcGFyYW1ldGVycywgd2hpY2ggbWF5IGxlYWRzIHRv
IGJldHRlciBjb21waWxlciBlcnJvcgorLy8gbWVzc2FnZXMgd2hlbiB0aGUgbWF0Y2hlciBpcyB1
c2VkIHdyb25nLiAgVGhleSBhbHNvIGFsbG93CisvLyBvdmVybG9hZGluZyBtYXRjaGVycyBiYXNl
ZCBvbiBwYXJhbWV0ZXIgdHlwZXMgKGFzIG9wcG9zZWQgdG8ganVzdAorLy8gYmFzZWQgb24gdGhl
IG51bWJlciBvZiBwYXJhbWV0ZXJzKS4KKy8vCisvLyBNQVRDSEVSKigpIGNhbiBvbmx5IGJlIHVz
ZWQgaW4gYSBuYW1lc3BhY2Ugc2NvcGUuICBUaGUgcmVhc29uIGlzCisvLyB0aGF0IEMrKyBkb2Vz
bid0IHlldCBhbGxvdyBmdW5jdGlvbi1sb2NhbCB0eXBlcyB0byBiZSB1c2VkIHRvCisvLyBpbnN0
YW50aWF0ZSB0ZW1wbGF0ZXMuICBUaGUgdXAtY29taW5nIEMrKzB4IHN0YW5kYXJkIHdpbGwgZml4
IHRoaXMuCisvLyBPbmNlIHRoYXQncyBkb25lLCB3ZSdsbCBjb25zaWRlciBzdXBwb3J0aW5nIHVz
aW5nIE1BVENIRVIqKCkgaW5zaWRlCisvLyBhIGZ1bmN0aW9uLgorLy8KKy8vIE1vcmUgSW5mb3Jt
YXRpb24KKy8vID09PT09PT09PT09PT09PT0KKy8vCisvLyBUbyBsZWFybiBtb3JlIGFib3V0IHVz
aW5nIHRoZXNlIG1hY3JvcywgcGxlYXNlIHNlYXJjaCBmb3IgJ01BVENIRVInCisvLyBvbiBodHRw
Oi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9jay93aWtpL0Nvb2tCb29rLgorCiskcmFuZ2Ug
aSAwLi5uCiskZm9yIGkKKworW1sKKyR2YXIgbWFjcm9fbmFtZSA9IFtbJGlmIGk9PTAgW1tNQVRD
SEVSXV0gJGVsaWYgaT09MSBbW01BVENIRVJfUF1dCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICRlbHNlIFtbTUFUQ0hFUl9QJGldXV1dCiskdmFyIGNsYXNzX25hbWUg
PSBbW25hbWUjI01hdGNoZXJbWyRpZiBpPT0wIFtbXV0gJGVsaWYgaT09MSBbW1BdXQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRlbHNlIFtbUCRpXV1d
XV1dCiskcmFuZ2UgaiAwLi5pLTEKKyR2YXIgdGVtcGxhdGUgPSBbWyRpZiBpPT0wIFtbXV0gJGVs
c2UgW1sKKworICB0ZW1wbGF0ZSA8JGZvciBqLCBbW3R5cGVuYW1lIHAkaiMjX3R5cGVdXT5cCitd
XV1dCiskdmFyIGN0b3JfcGFyYW1fbGlzdCA9IFtbJGZvciBqLCBbW3AkaiMjX3R5cGUgZ21vY2tf
cCRqXV1dXQorJHZhciBpbXBsX2N0b3JfcGFyYW1fbGlzdCA9IFtbJGZvciBqLCBbW3AkaiMjX3R5
cGUgZ21vY2tfcCRqXV1dXQorJHZhciBpbXBsX2luaXRzID0gW1skaWYgaT09MCBbW11dICRlbHNl
IFtbIDogJGZvciBqLCBbW3AkaihnbW9ja19wJGopXV1dXV1dCiskdmFyIGluaXRzID0gW1skaWYg
aT09MCBbW11dICRlbHNlIFtbIDogJGZvciBqLCBbW3AkaihnbW9ja19wJGopXV1dXV1dCiskdmFy
IHBhcmFtcyA9IFtbJGZvciBqLCBbW3Akal1dXV0KKyR2YXIgcGFyYW1fdHlwZXMgPSBbWyRpZiBp
PT0wIFtbXV0gJGVsc2UgW1s8JGZvciBqLCBbW3AkaiMjX3R5cGVdXT5dXV1dCiskdmFyIHBhcmFt
X3R5cGVzX2FuZF9uYW1lcyA9IFtbJGZvciBqLCBbW3AkaiMjX3R5cGUgcCRqXV1dXQorJHZhciBw
YXJhbV9maWVsZF9kZWNscyA9IFtbJGZvciBqCitbWworCisgICAgICBwJGojI190eXBlIHAkajtc
CitdXV1dCiskdmFyIHBhcmFtX2ZpZWxkX2RlY2xzMiA9IFtbJGZvciBqCitbWworCisgICAgcCRq
IyNfdHlwZSBwJGo7XAorXV1dXQorCisjZGVmaW5lICRtYWNyb19uYW1lKG5hbWUkZm9yIGogW1ss
IHAkal1dLCBkZXNjcmlwdGlvbilcJHRlbXBsYXRlCisgIGNsYXNzICRjbGFzc19uYW1lIHtcCisg
ICBwdWJsaWM6XAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBhcmdfdHlwZT5cCisgICAgY2xhc3Mg
Z21vY2tfSW1wbCA6IHB1YmxpYyA6OnRlc3Rpbmc6Ok1hdGNoZXJJbnRlcmZhY2U8YXJnX3R5cGU+
IHtcCisgICAgIHB1YmxpYzpcCisgICAgICBbWyRpZiBpPT0xIFtbZXhwbGljaXQgXV1dXWdtb2Nr
X0ltcGwoJGltcGxfY3Rvcl9wYXJhbV9saXN0KVwKKyAgICAgICAgICAkaW1wbF9pbml0cyB7fVwK
KyAgICAgIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxhaW4oXAorICAgICAgICAgIGFyZ190eXBl
IGFyZywgOjp0ZXN0aW5nOjpNYXRjaFJlc3VsdExpc3RlbmVyKiByZXN1bHRfbGlzdGVuZXIpIGNv
bnN0O1wKKyAgICAgIHZpcnR1YWwgdm9pZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFtKiBnbW9j
a19vcykgY29uc3Qge1wKKyAgICAgICAgKmdtb2NrX29zIDw8IEZvcm1hdERlc2NyaXB0aW9uKGZh
bHNlKTtcCisgICAgICB9XAorICAgICAgdmlydHVhbCB2b2lkIERlc2NyaWJlTmVnYXRpb25Ubyg6
OnN0ZDo6b3N0cmVhbSogZ21vY2tfb3MpIGNvbnN0IHtcCisgICAgICAgICpnbW9ja19vcyA8PCBG
b3JtYXREZXNjcmlwdGlvbih0cnVlKTtcCisgICAgICB9XCRwYXJhbV9maWVsZF9kZWNscworICAg
ICBwcml2YXRlOlwKKyAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OnN0cmluZyBGb3JtYXREZXNj
cmlwdGlvbihib29sIG5lZ2F0aW9uKSBjb25zdCB7XAorICAgICAgICBjb25zdCA6OnRlc3Rpbmc6
OmludGVybmFsOjpzdHJpbmcgZ21vY2tfZGVzY3JpcHRpb24gPSAoZGVzY3JpcHRpb24pO1wKKyAg
ICAgICAgaWYgKCFnbW9ja19kZXNjcmlwdGlvbi5lbXB0eSgpKVwKKyAgICAgICAgICByZXR1cm4g
Z21vY2tfZGVzY3JpcHRpb247XAorICAgICAgICByZXR1cm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6
Rm9ybWF0TWF0Y2hlckRlc2NyaXB0aW9uKFwKKyAgICAgICAgICAgIG5lZ2F0aW9uLCAjbmFtZSwg
XAorICAgICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsVGVyc2VQcmludFR1
cGxlRmllbGRzVG9TdHJpbmdzKFwKKyAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OnR1cGxlPCRm
b3IgaiwgW1twJGojI190eXBlXV0+KCRmb3IgaiwgW1twJGpdXSkpKTtcCisgICAgICB9XAorICAg
ICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhnbW9ja19JbXBsKTtcCisgICAgfTtcCisgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIGFyZ190eXBlPlwKKyAgICBvcGVyYXRvciA6OnRlc3Rpbmc6Ok1hdGNo
ZXI8YXJnX3R5cGU+KCkgY29uc3Qge1wKKyAgICAgIHJldHVybiA6OnRlc3Rpbmc6Ok1hdGNoZXI8
YXJnX3R5cGU+KFwKKyAgICAgICAgICBuZXcgZ21vY2tfSW1wbDxhcmdfdHlwZT4oJHBhcmFtcykp
O1wKKyAgICB9XAorICAgIFtbJGlmIGk9PTEgW1tleHBsaWNpdCBdXV1dJGNsYXNzX25hbWUoJGN0
b3JfcGFyYW1fbGlzdCkkaW5pdHMge1wKKyAgICB9XCRwYXJhbV9maWVsZF9kZWNsczIKKyAgIHBy
aXZhdGU6XAorICAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oJGNsYXNzX25hbWUpO1wKKyAgfTtc
JHRlbXBsYXRlCisgIGlubGluZSAkY2xhc3NfbmFtZSRwYXJhbV90eXBlcyBuYW1lKCRwYXJhbV90
eXBlc19hbmRfbmFtZXMpIHtcCisgICAgcmV0dXJuICRjbGFzc19uYW1lJHBhcmFtX3R5cGVzKCRw
YXJhbXMpO1wKKyAgfVwkdGVtcGxhdGUKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIGFyZ190eXBlPlwK
KyAgYm9vbCAkY2xhc3NfbmFtZSRwYXJhbV90eXBlczo6Z21vY2tfSW1wbDxhcmdfdHlwZT46Ok1h
dGNoQW5kRXhwbGFpbihcCisgICAgICBhcmdfdHlwZSBhcmcsIFwKKyAgICAgIDo6dGVzdGluZzo6
TWF0Y2hSZXN1bHRMaXN0ZW5lciogcmVzdWx0X2xpc3RlbmVyIEdURVNUX0FUVFJJQlVURV9VTlVT
RURfKVwKKyAgICAgICAgICBjb25zdAorXV0KKworCisjZW5kaWYgIC8vIEdNT0NLX0lOQ0xVREVf
R01PQ0tfR01PQ0tfR0VORVJBVEVEX01BVENIRVJTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9j
ay9pbmNsdWRlL2dtb2NrL2dtb2NrLWdlbmVyYXRlZC1uaWNlLXN0cmljdC5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1v
Y2svaW5jbHVkZS9nbW9jay9nbW9jay1nZW5lcmF0ZWQtbmljZS1zdHJpY3QuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40MDk1ZjRkNWJjN2ZiYjVmMWE4OWQ0Y2RlYWRlYmJlM2VmYjk5NTgwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9nbW9jay1nZW5lcmF0ZWQtbmljZS1zdHJp
Y3QuaApAQCAtMCwwICsxLDM5NyBAQAorLy8gVGhpcyBmaWxlIHdhcyBHRU5FUkFURUQgYnkgY29t
bWFuZDoKKy8vICAgICBwdW1wLnB5IGdtb2NrLWdlbmVyYXRlZC1uaWNlLXN0cmljdC5oLnB1bXAK
Ky8vIERPIE5PVCBFRElUIEJZIEhBTkQhISEKKworLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJ
bmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisv
LyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25n
IFdhbikKKworLy8gSW1wbGVtZW50cyBjbGFzcyB0ZW1wbGF0ZXMgTmljZU1vY2ssIE5hZ2d5TW9j
aywgYW5kIFN0cmljdE1vY2suCisvLworLy8gR2l2ZW4gYSBtb2NrIGNsYXNzIE1vY2tGb28gdGhh
dCBpcyBjcmVhdGVkIHVzaW5nIEdvb2dsZSBNb2NrLAorLy8gTmljZU1vY2s8TW9ja0Zvbz4gaXMg
YSBzdWJjbGFzcyBvZiBNb2NrRm9vIHRoYXQgYWxsb3dzCisvLyB1bmludGVyZXN0aW5nIGNhbGxz
IChpLmUuIGNhbGxzIHRvIG1vY2sgbWV0aG9kcyB0aGF0IGhhdmUgbm8KKy8vIEVYUEVDVF9DQUxM
IHNwZWNzKSwgTmFnZ3lNb2NrPE1vY2tGb28+IGlzIGEgc3ViY2xhc3Mgb2YgTW9ja0ZvbworLy8g
dGhhdCBwcmludHMgYSB3YXJuaW5nIHdoZW4gYW4gdW5pbnRlcmVzdGluZyBjYWxsIG9jY3Vycywg
YW5kCisvLyBTdHJpY3RNb2NrPE1vY2tGb28+IGlzIGEgc3ViY2xhc3Mgb2YgTW9ja0ZvbyB0aGF0
IHRyZWF0cyBhbGwKKy8vIHVuaW50ZXJlc3RpbmcgY2FsbHMgYXMgZXJyb3JzLgorLy8KKy8vIEN1
cnJlbnRseSBhIG1vY2sgaXMgbmFnZ3kgYnkgZGVmYXVsdCwgc28gTW9ja0ZvbyBhbmQKKy8vIE5h
Z2d5TW9jazxNb2NrRm9vPiBiZWhhdmUgbGlrZSB0aGUgc2FtZS4gIEhvd2V2ZXIsIHdlIHdpbGwg
c29vbgorLy8gc3dpdGNoIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIG1vY2tzIHRvIGJlIG5pY2Us
IGFzIHRoYXQgaW4gZ2VuZXJhbAorLy8gbGVhZHMgdG8gbW9yZSBtYWludGFpbmFibGUgdGVzdHMu
ICBXaGVuIHRoYXQgaGFwcGVucywgTW9ja0ZvbyB3aWxsCisvLyBzdG9wIGJlaGF2aW5nIGxpa2Ug
TmFnZ3lNb2NrPE1vY2tGb28+IGFuZCBzdGFydCBiZWhhdmluZyBsaWtlCisvLyBOaWNlTW9jazxN
b2NrRm9vPi4KKy8vCisvLyBOaWNlTW9jaywgTmFnZ3lNb2NrLCBhbmQgU3RyaWN0TW9jayAiaW5o
ZXJpdCIgdGhlIGNvbnN0cnVjdG9ycyBvZgorLy8gdGhlaXIgcmVzcGVjdGl2ZSBiYXNlIGNsYXNz
LCB3aXRoIHVwLXRvIDEwIGFyZ3VtZW50cy4gIFRoZXJlZm9yZQorLy8geW91IGNhbiB3cml0ZSBO
aWNlTW9jazxNb2NrRm9vPig1LCAiYSIpIHRvIGNvbnN0cnVjdCBhIG5pY2UgbW9jaworLy8gd2hl
cmUgTW9ja0ZvbyBoYXMgYSBjb25zdHJ1Y3RvciB0aGF0IGFjY2VwdHMgKGludCwgY29uc3QgY2hh
ciopLAorLy8gZm9yIGV4YW1wbGUuCisvLworLy8gQSBrbm93biBsaW1pdGF0aW9uIGlzIHRoYXQg
TmljZU1vY2s8TW9ja0Zvbz4sIE5hZ2d5TW9jazxNb2NrRm9vPiwKKy8vIGFuZCBTdHJpY3RNb2Nr
PE1vY2tGb28+IG9ubHkgd29ya3MgZm9yIG1vY2sgbWV0aG9kcyBkZWZpbmVkIHVzaW5nCisvLyB0
aGUgTU9DS19NRVRIT0QqIGZhbWlseSBvZiBtYWNyb3MgRElSRUNUTFkgaW4gdGhlIE1vY2tGb28g
Y2xhc3MuCisvLyBJZiBhIG1vY2sgbWV0aG9kIGlzIGRlZmluZWQgaW4gYSBiYXNlIGNsYXNzIG9m
IE1vY2tGb28sIHRoZSAibmljZSIKKy8vIG9yICJzdHJpY3QiIG1vZGlmaWVyIG1heSBub3QgYWZm
ZWN0IGl0LCBkZXBlbmRpbmcgb24gdGhlIGNvbXBpbGVyLgorLy8gSW4gcGFydGljdWxhciwgbmVz
dGluZyBOaWNlTW9jaywgTmFnZ3lNb2NrLCBhbmQgU3RyaWN0TW9jayBpcyBOT1QKKy8vIHN1cHBv
cnRlZC4KKy8vCisvLyBBbm90aGVyIGtub3duIGxpbWl0YXRpb24gaXMgdGhhdCB0aGUgY29uc3Ry
dWN0b3JzIG9mIHRoZSBiYXNlIG1vY2sKKy8vIGNhbm5vdCBoYXZlIGFyZ3VtZW50cyBwYXNzZWQg
Ynkgbm9uLWNvbnN0IHJlZmVyZW5jZSwgd2hpY2ggYXJlCisvLyBiYW5uZWQgYnkgdGhlIEdvb2ds
ZSBDKysgc3R5bGUgZ3VpZGUgYW55d2F5LgorCisjaWZuZGVmIEdNT0NLX0lOQ0xVREVfR01PQ0tf
R01PQ0tfR0VORVJBVEVEX05JQ0VfU1RSSUNUX0hfCisjZGVmaW5lIEdNT0NLX0lOQ0xVREVfR01P
Q0tfR01PQ0tfR0VORVJBVEVEX05JQ0VfU1RSSUNUX0hfCisKKyNpbmNsdWRlICJnbW9jay9nbW9j
ay1zcGVjLWJ1aWxkZXJzLmgiCisjaW5jbHVkZSAiZ21vY2svaW50ZXJuYWwvZ21vY2stcG9ydC5o
IgorCituYW1lc3BhY2UgdGVzdGluZyB7CisKK3RlbXBsYXRlIDxjbGFzcyBNb2NrQ2xhc3M+Citj
bGFzcyBOaWNlTW9jayA6IHB1YmxpYyBNb2NrQ2xhc3MgeworIHB1YmxpYzoKKyAgLy8gV2UgZG9u
J3QgZmFjdG9yIG91dCB0aGUgY29uc3RydWN0b3IgYm9keSB0byBhIGNvbW1vbiBtZXRob2QsIGFz
CisgIC8vIHdlIGhhdmUgdG8gYXZvaWQgYSBwb3NzaWJsZSBjbGFzaCB3aXRoIG1lbWJlcnMgb2Yg
TW9ja0NsYXNzLgorICBOaWNlTW9jaygpIHsKKyAgICA6OnRlc3Rpbmc6Ok1vY2s6OkFsbG93VW5p
bnRlcmVzdGluZ0NhbGxzKAorICAgICAgICBpbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxNb2NrQ2xh
c3MqPih0aGlzKSk7CisgIH0KKworICAvLyBDKysgZG9lc24ndCAoeWV0KSBhbGxvdyBpbmhlcml0
YW5jZSBvZiBjb25zdHJ1Y3RvcnMsIHNvIHdlIGhhdmUKKyAgLy8gdG8gZGVmaW5lIGl0IGZvciBl
YWNoIGFyaXR5LgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTE+CisgIGV4cGxpY2l0IE5pY2VNb2Nr
KGNvbnN0IEExJiBhMSkgOiBNb2NrQ2xhc3MoYTEpIHsKKyAgICA6OnRlc3Rpbmc6Ok1vY2s6OkFs
bG93VW5pbnRlcmVzdGluZ0NhbGxzKAorICAgICAgICBpbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxN
b2NrQ2xhc3MqPih0aGlzKSk7CisgIH0KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEExLCB0eXBlbmFt
ZSBBMj4KKyAgTmljZU1vY2soY29uc3QgQTEmIGExLCBjb25zdCBBMiYgYTIpIDogTW9ja0NsYXNz
KGExLCBhMikgeworICAgIDo6dGVzdGluZzo6TW9jazo6QWxsb3dVbmludGVyZXN0aW5nQ2FsbHMo
CisgICAgICAgIGludGVybmFsOjpJbXBsaWNpdENhc3RfPE1vY2tDbGFzcyo+KHRoaXMpKTsKKyAg
fQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzPgor
ICBOaWNlTW9jayhjb25zdCBBMSYgYTEsIGNvbnN0IEEyJiBhMiwgY29uc3QgQTMmIGEzKSA6IE1v
Y2tDbGFzcyhhMSwgYTIsIGEzKSB7CisgICAgOjp0ZXN0aW5nOjpNb2NrOjpBbGxvd1VuaW50ZXJl
c3RpbmdDYWxscygKKyAgICAgICAgaW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88TW9ja0NsYXNzKj4o
dGhpcykpOworICB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlw
ZW5hbWUgQTMsIHR5cGVuYW1lIEE0PgorICBOaWNlTW9jayhjb25zdCBBMSYgYTEsIGNvbnN0IEEy
JiBhMiwgY29uc3QgQTMmIGEzLAorICAgICAgY29uc3QgQTQmIGE0KSA6IE1vY2tDbGFzcyhhMSwg
YTIsIGEzLCBhNCkgeworICAgIDo6dGVzdGluZzo6TW9jazo6QWxsb3dVbmludGVyZXN0aW5nQ2Fs
bHMoCisgICAgICAgIGludGVybmFsOjpJbXBsaWNpdENhc3RfPE1vY2tDbGFzcyo+KHRoaXMpKTsK
KyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEz
LCB0eXBlbmFtZSBBNCwgdHlwZW5hbWUgQTU+CisgIE5pY2VNb2NrKGNvbnN0IEExJiBhMSwgY29u
c3QgQTImIGEyLCBjb25zdCBBMyYgYTMsIGNvbnN0IEE0JiBhNCwKKyAgICAgIGNvbnN0IEE1JiBh
NSkgOiBNb2NrQ2xhc3MoYTEsIGEyLCBhMywgYTQsIGE1KSB7CisgICAgOjp0ZXN0aW5nOjpNb2Nr
OjpBbGxvd1VuaW50ZXJlc3RpbmdDYWxscygKKyAgICAgICAgaW50ZXJuYWw6OkltcGxpY2l0Q2Fz
dF88TW9ja0NsYXNzKj4odGhpcykpOworICB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEExLCB0
eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0LCB0eXBlbmFtZSBBNSwKKyAgICAg
IHR5cGVuYW1lIEE2PgorICBOaWNlTW9jayhjb25zdCBBMSYgYTEsIGNvbnN0IEEyJiBhMiwgY29u
c3QgQTMmIGEzLCBjb25zdCBBNCYgYTQsCisgICAgICBjb25zdCBBNSYgYTUsIGNvbnN0IEE2JiBh
NikgOiBNb2NrQ2xhc3MoYTEsIGEyLCBhMywgYTQsIGE1LCBhNikgeworICAgIDo6dGVzdGluZzo6
TW9jazo6QWxsb3dVbmludGVyZXN0aW5nQ2FsbHMoCisgICAgICAgIGludGVybmFsOjpJbXBsaWNp
dENhc3RfPE1vY2tDbGFzcyo+KHRoaXMpKTsKKyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBB
MSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBBNCwgdHlwZW5hbWUgQTUsCisg
ICAgICB0eXBlbmFtZSBBNiwgdHlwZW5hbWUgQTc+CisgIE5pY2VNb2NrKGNvbnN0IEExJiBhMSwg
Y29uc3QgQTImIGEyLCBjb25zdCBBMyYgYTMsIGNvbnN0IEE0JiBhNCwKKyAgICAgIGNvbnN0IEE1
JiBhNSwgY29uc3QgQTYmIGE2LCBjb25zdCBBNyYgYTcpIDogTW9ja0NsYXNzKGExLCBhMiwgYTMs
IGE0LCBhNSwKKyAgICAgIGE2LCBhNykgeworICAgIDo6dGVzdGluZzo6TW9jazo6QWxsb3dVbmlu
dGVyZXN0aW5nQ2FsbHMoCisgICAgICAgIGludGVybmFsOjpJbXBsaWNpdENhc3RfPE1vY2tDbGFz
cyo+KHRoaXMpKTsKKyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIs
IHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBBNCwgdHlwZW5hbWUgQTUsCisgICAgICB0eXBlbmFtZSBB
NiwgdHlwZW5hbWUgQTcsIHR5cGVuYW1lIEE4PgorICBOaWNlTW9jayhjb25zdCBBMSYgYTEsIGNv
bnN0IEEyJiBhMiwgY29uc3QgQTMmIGEzLCBjb25zdCBBNCYgYTQsCisgICAgICBjb25zdCBBNSYg
YTUsIGNvbnN0IEE2JiBhNiwgY29uc3QgQTcmIGE3LCBjb25zdCBBOCYgYTgpIDogTW9ja0NsYXNz
KGExLAorICAgICAgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpIHsKKyAgICA6OnRlc3Rpbmc6
Ok1vY2s6OkFsbG93VW5pbnRlcmVzdGluZ0NhbGxzKAorICAgICAgICBpbnRlcm5hbDo6SW1wbGlj
aXRDYXN0XzxNb2NrQ2xhc3MqPih0aGlzKSk7CisgIH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
QTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywgdHlwZW5hbWUgQTQsIHR5cGVuYW1lIEE1LAor
ICAgICAgdHlwZW5hbWUgQTYsIHR5cGVuYW1lIEE3LCB0eXBlbmFtZSBBOCwgdHlwZW5hbWUgQTk+
CisgIE5pY2VNb2NrKGNvbnN0IEExJiBhMSwgY29uc3QgQTImIGEyLCBjb25zdCBBMyYgYTMsIGNv
bnN0IEE0JiBhNCwKKyAgICAgIGNvbnN0IEE1JiBhNSwgY29uc3QgQTYmIGE2LCBjb25zdCBBNyYg
YTcsIGNvbnN0IEE4JiBhOCwKKyAgICAgIGNvbnN0IEE5JiBhOSkgOiBNb2NrQ2xhc3MoYTEsIGEy
LCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSkgeworICAgIDo6dGVzdGluZzo6TW9jazo6QWxs
b3dVbmludGVyZXN0aW5nQ2FsbHMoCisgICAgICAgIGludGVybmFsOjpJbXBsaWNpdENhc3RfPE1v
Y2tDbGFzcyo+KHRoaXMpKTsKKyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBBMSwgdHlwZW5h
bWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBBNCwgdHlwZW5hbWUgQTUsCisgICAgICB0eXBl
bmFtZSBBNiwgdHlwZW5hbWUgQTcsIHR5cGVuYW1lIEE4LCB0eXBlbmFtZSBBOSwgdHlwZW5hbWUg
QTEwPgorICBOaWNlTW9jayhjb25zdCBBMSYgYTEsIGNvbnN0IEEyJiBhMiwgY29uc3QgQTMmIGEz
LCBjb25zdCBBNCYgYTQsCisgICAgICBjb25zdCBBNSYgYTUsIGNvbnN0IEE2JiBhNiwgY29uc3Qg
QTcmIGE3LCBjb25zdCBBOCYgYTgsIGNvbnN0IEE5JiBhOSwKKyAgICAgIGNvbnN0IEExMCYgYTEw
KSA6IE1vY2tDbGFzcyhhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5LCBhMTApIHsK
KyAgICA6OnRlc3Rpbmc6Ok1vY2s6OkFsbG93VW5pbnRlcmVzdGluZ0NhbGxzKAorICAgICAgICBp
bnRlcm5hbDo6SW1wbGljaXRDYXN0XzxNb2NrQ2xhc3MqPih0aGlzKSk7CisgIH0KKworICB2aXJ0
dWFsIH5OaWNlTW9jaygpIHsKKyAgICA6OnRlc3Rpbmc6Ok1vY2s6OlVucmVnaXN0ZXJDYWxsUmVh
Y3Rpb24oCisgICAgICAgIGludGVybmFsOjpJbXBsaWNpdENhc3RfPE1vY2tDbGFzcyo+KHRoaXMp
KTsKKyAgfQorCisgcHJpdmF0ZToKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhO
aWNlTW9jayk7Cit9OworCit0ZW1wbGF0ZSA8Y2xhc3MgTW9ja0NsYXNzPgorY2xhc3MgTmFnZ3lN
b2NrIDogcHVibGljIE1vY2tDbGFzcyB7CisgcHVibGljOgorICAvLyBXZSBkb24ndCBmYWN0b3Ig
b3V0IHRoZSBjb25zdHJ1Y3RvciBib2R5IHRvIGEgY29tbW9uIG1ldGhvZCwgYXMKKyAgLy8gd2Ug
aGF2ZSB0byBhdm9pZCBhIHBvc3NpYmxlIGNsYXNoIHdpdGggbWVtYmVycyBvZiBNb2NrQ2xhc3Mu
CisgIE5hZ2d5TW9jaygpIHsKKyAgICA6OnRlc3Rpbmc6Ok1vY2s6Oldhcm5VbmludGVyZXN0aW5n
Q2FsbHMoCisgICAgICAgIGludGVybmFsOjpJbXBsaWNpdENhc3RfPE1vY2tDbGFzcyo+KHRoaXMp
KTsKKyAgfQorCisgIC8vIEMrKyBkb2Vzbid0ICh5ZXQpIGFsbG93IGluaGVyaXRhbmNlIG9mIGNv
bnN0cnVjdG9ycywgc28gd2UgaGF2ZQorICAvLyB0byBkZWZpbmUgaXQgZm9yIGVhY2ggYXJpdHku
CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBBMT4KKyAgZXhwbGljaXQgTmFnZ3lNb2NrKGNvbnN0IEEx
JiBhMSkgOiBNb2NrQ2xhc3MoYTEpIHsKKyAgICA6OnRlc3Rpbmc6Ok1vY2s6Oldhcm5VbmludGVy
ZXN0aW5nQ2FsbHMoCisgICAgICAgIGludGVybmFsOjpJbXBsaWNpdENhc3RfPE1vY2tDbGFzcyo+
KHRoaXMpKTsKKyAgfQorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyPgorICBO
YWdneU1vY2soY29uc3QgQTEmIGExLCBjb25zdCBBMiYgYTIpIDogTW9ja0NsYXNzKGExLCBhMikg
eworICAgIDo6dGVzdGluZzo6TW9jazo6V2FyblVuaW50ZXJlc3RpbmdDYWxscygKKyAgICAgICAg
aW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88TW9ja0NsYXNzKj4odGhpcykpOworICB9CisKKyAgdGVt
cGxhdGUgPHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTM+CisgIE5hZ2d5TW9j
ayhjb25zdCBBMSYgYTEsIGNvbnN0IEEyJiBhMiwgY29uc3QgQTMmIGEzKSA6IE1vY2tDbGFzcyhh
MSwgYTIsIGEzKSB7CisgICAgOjp0ZXN0aW5nOjpNb2NrOjpXYXJuVW5pbnRlcmVzdGluZ0NhbGxz
KAorICAgICAgICBpbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxNb2NrQ2xhc3MqPih0aGlzKSk7Cisg
IH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywg
dHlwZW5hbWUgQTQ+CisgIE5hZ2d5TW9jayhjb25zdCBBMSYgYTEsIGNvbnN0IEEyJiBhMiwgY29u
c3QgQTMmIGEzLAorICAgICAgY29uc3QgQTQmIGE0KSA6IE1vY2tDbGFzcyhhMSwgYTIsIGEzLCBh
NCkgeworICAgIDo6dGVzdGluZzo6TW9jazo6V2FyblVuaW50ZXJlc3RpbmdDYWxscygKKyAgICAg
ICAgaW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88TW9ja0NsYXNzKj4odGhpcykpOworICB9CisKKyAg
dGVtcGxhdGUgPHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1l
IEE0LCB0eXBlbmFtZSBBNT4KKyAgTmFnZ3lNb2NrKGNvbnN0IEExJiBhMSwgY29uc3QgQTImIGEy
LCBjb25zdCBBMyYgYTMsIGNvbnN0IEE0JiBhNCwKKyAgICAgIGNvbnN0IEE1JiBhNSkgOiBNb2Nr
Q2xhc3MoYTEsIGEyLCBhMywgYTQsIGE1KSB7CisgICAgOjp0ZXN0aW5nOjpNb2NrOjpXYXJuVW5p
bnRlcmVzdGluZ0NhbGxzKAorICAgICAgICBpbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxNb2NrQ2xh
c3MqPih0aGlzKSk7CisgIH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEy
LCB0eXBlbmFtZSBBMywgdHlwZW5hbWUgQTQsIHR5cGVuYW1lIEE1LAorICAgICAgdHlwZW5hbWUg
QTY+CisgIE5hZ2d5TW9jayhjb25zdCBBMSYgYTEsIGNvbnN0IEEyJiBhMiwgY29uc3QgQTMmIGEz
LCBjb25zdCBBNCYgYTQsCisgICAgICBjb25zdCBBNSYgYTUsIGNvbnN0IEE2JiBhNikgOiBNb2Nr
Q2xhc3MoYTEsIGEyLCBhMywgYTQsIGE1LCBhNikgeworICAgIDo6dGVzdGluZzo6TW9jazo6V2Fy
blVuaW50ZXJlc3RpbmdDYWxscygKKyAgICAgICAgaW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88TW9j
a0NsYXNzKj4odGhpcykpOworICB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEExLCB0eXBlbmFt
ZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0LCB0eXBlbmFtZSBBNSwKKyAgICAgIHR5cGVu
YW1lIEE2LCB0eXBlbmFtZSBBNz4KKyAgTmFnZ3lNb2NrKGNvbnN0IEExJiBhMSwgY29uc3QgQTIm
IGEyLCBjb25zdCBBMyYgYTMsIGNvbnN0IEE0JiBhNCwKKyAgICAgIGNvbnN0IEE1JiBhNSwgY29u
c3QgQTYmIGE2LCBjb25zdCBBNyYgYTcpIDogTW9ja0NsYXNzKGExLCBhMiwgYTMsIGE0LCBhNSwK
KyAgICAgIGE2LCBhNykgeworICAgIDo6dGVzdGluZzo6TW9jazo6V2FyblVuaW50ZXJlc3RpbmdD
YWxscygKKyAgICAgICAgaW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88TW9ja0NsYXNzKj4odGhpcykp
OworICB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUg
QTMsIHR5cGVuYW1lIEE0LCB0eXBlbmFtZSBBNSwKKyAgICAgIHR5cGVuYW1lIEE2LCB0eXBlbmFt
ZSBBNywgdHlwZW5hbWUgQTg+CisgIE5hZ2d5TW9jayhjb25zdCBBMSYgYTEsIGNvbnN0IEEyJiBh
MiwgY29uc3QgQTMmIGEzLCBjb25zdCBBNCYgYTQsCisgICAgICBjb25zdCBBNSYgYTUsIGNvbnN0
IEE2JiBhNiwgY29uc3QgQTcmIGE3LCBjb25zdCBBOCYgYTgpIDogTW9ja0NsYXNzKGExLAorICAg
ICAgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpIHsKKyAgICA6OnRlc3Rpbmc6Ok1vY2s6Oldh
cm5VbmludGVyZXN0aW5nQ2FsbHMoCisgICAgICAgIGludGVybmFsOjpJbXBsaWNpdENhc3RfPE1v
Y2tDbGFzcyo+KHRoaXMpKTsKKyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBBMSwgdHlwZW5h
bWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBBNCwgdHlwZW5hbWUgQTUsCisgICAgICB0eXBl
bmFtZSBBNiwgdHlwZW5hbWUgQTcsIHR5cGVuYW1lIEE4LCB0eXBlbmFtZSBBOT4KKyAgTmFnZ3lN
b2NrKGNvbnN0IEExJiBhMSwgY29uc3QgQTImIGEyLCBjb25zdCBBMyYgYTMsIGNvbnN0IEE0JiBh
NCwKKyAgICAgIGNvbnN0IEE1JiBhNSwgY29uc3QgQTYmIGE2LCBjb25zdCBBNyYgYTcsIGNvbnN0
IEE4JiBhOCwKKyAgICAgIGNvbnN0IEE5JiBhOSkgOiBNb2NrQ2xhc3MoYTEsIGEyLCBhMywgYTQs
IGE1LCBhNiwgYTcsIGE4LCBhOSkgeworICAgIDo6dGVzdGluZzo6TW9jazo6V2FyblVuaW50ZXJl
c3RpbmdDYWxscygKKyAgICAgICAgaW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88TW9ja0NsYXNzKj4o
dGhpcykpOworICB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlw
ZW5hbWUgQTMsIHR5cGVuYW1lIEE0LCB0eXBlbmFtZSBBNSwKKyAgICAgIHR5cGVuYW1lIEE2LCB0
eXBlbmFtZSBBNywgdHlwZW5hbWUgQTgsIHR5cGVuYW1lIEE5LCB0eXBlbmFtZSBBMTA+CisgIE5h
Z2d5TW9jayhjb25zdCBBMSYgYTEsIGNvbnN0IEEyJiBhMiwgY29uc3QgQTMmIGEzLCBjb25zdCBB
NCYgYTQsCisgICAgICBjb25zdCBBNSYgYTUsIGNvbnN0IEE2JiBhNiwgY29uc3QgQTcmIGE3LCBj
b25zdCBBOCYgYTgsIGNvbnN0IEE5JiBhOSwKKyAgICAgIGNvbnN0IEExMCYgYTEwKSA6IE1vY2tD
bGFzcyhhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5LCBhMTApIHsKKyAgICA6OnRl
c3Rpbmc6Ok1vY2s6Oldhcm5VbmludGVyZXN0aW5nQ2FsbHMoCisgICAgICAgIGludGVybmFsOjpJ
bXBsaWNpdENhc3RfPE1vY2tDbGFzcyo+KHRoaXMpKTsKKyAgfQorCisgIHZpcnR1YWwgfk5hZ2d5
TW9jaygpIHsKKyAgICA6OnRlc3Rpbmc6Ok1vY2s6OlVucmVnaXN0ZXJDYWxsUmVhY3Rpb24oCisg
ICAgICAgIGludGVybmFsOjpJbXBsaWNpdENhc3RfPE1vY2tDbGFzcyo+KHRoaXMpKTsKKyAgfQor
CisgcHJpdmF0ZToKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhOYWdneU1vY2sp
OworfTsKKwordGVtcGxhdGUgPGNsYXNzIE1vY2tDbGFzcz4KK2NsYXNzIFN0cmljdE1vY2sgOiBw
dWJsaWMgTW9ja0NsYXNzIHsKKyBwdWJsaWM6CisgIC8vIFdlIGRvbid0IGZhY3RvciBvdXQgdGhl
IGNvbnN0cnVjdG9yIGJvZHkgdG8gYSBjb21tb24gbWV0aG9kLCBhcworICAvLyB3ZSBoYXZlIHRv
IGF2b2lkIGEgcG9zc2libGUgY2xhc2ggd2l0aCBtZW1iZXJzIG9mIE1vY2tDbGFzcy4KKyAgU3Ry
aWN0TW9jaygpIHsKKyAgICA6OnRlc3Rpbmc6Ok1vY2s6OkZhaWxVbmludGVyZXN0aW5nQ2FsbHMo
CisgICAgICAgIGludGVybmFsOjpJbXBsaWNpdENhc3RfPE1vY2tDbGFzcyo+KHRoaXMpKTsKKyAg
fQorCisgIC8vIEMrKyBkb2Vzbid0ICh5ZXQpIGFsbG93IGluaGVyaXRhbmNlIG9mIGNvbnN0cnVj
dG9ycywgc28gd2UgaGF2ZQorICAvLyB0byBkZWZpbmUgaXQgZm9yIGVhY2ggYXJpdHkuCisgIHRl
bXBsYXRlIDx0eXBlbmFtZSBBMT4KKyAgZXhwbGljaXQgU3RyaWN0TW9jayhjb25zdCBBMSYgYTEp
IDogTW9ja0NsYXNzKGExKSB7CisgICAgOjp0ZXN0aW5nOjpNb2NrOjpGYWlsVW5pbnRlcmVzdGlu
Z0NhbGxzKAorICAgICAgICBpbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxNb2NrQ2xhc3MqPih0aGlz
KSk7CisgIH0KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMj4KKyAgU3RyaWN0
TW9jayhjb25zdCBBMSYgYTEsIGNvbnN0IEEyJiBhMikgOiBNb2NrQ2xhc3MoYTEsIGEyKSB7Cisg
ICAgOjp0ZXN0aW5nOjpNb2NrOjpGYWlsVW5pbnRlcmVzdGluZ0NhbGxzKAorICAgICAgICBpbnRl
cm5hbDo6SW1wbGljaXRDYXN0XzxNb2NrQ2xhc3MqPih0aGlzKSk7CisgIH0KKworICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMz4KKyAgU3RyaWN0TW9jayhj
b25zdCBBMSYgYTEsIGNvbnN0IEEyJiBhMiwgY29uc3QgQTMmIGEzKSA6IE1vY2tDbGFzcyhhMSwg
YTIsIGEzKSB7CisgICAgOjp0ZXN0aW5nOjpNb2NrOjpGYWlsVW5pbnRlcmVzdGluZ0NhbGxzKAor
ICAgICAgICBpbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxNb2NrQ2xhc3MqPih0aGlzKSk7CisgIH0K
KworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywgdHlw
ZW5hbWUgQTQ+CisgIFN0cmljdE1vY2soY29uc3QgQTEmIGExLCBjb25zdCBBMiYgYTIsIGNvbnN0
IEEzJiBhMywKKyAgICAgIGNvbnN0IEE0JiBhNCkgOiBNb2NrQ2xhc3MoYTEsIGEyLCBhMywgYTQp
IHsKKyAgICA6OnRlc3Rpbmc6Ok1vY2s6OkZhaWxVbmludGVyZXN0aW5nQ2FsbHMoCisgICAgICAg
IGludGVybmFsOjpJbXBsaWNpdENhc3RfPE1vY2tDbGFzcyo+KHRoaXMpKTsKKyAgfQorCisgIHRl
bXBsYXRlIDx0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBB
NCwgdHlwZW5hbWUgQTU+CisgIFN0cmljdE1vY2soY29uc3QgQTEmIGExLCBjb25zdCBBMiYgYTIs
IGNvbnN0IEEzJiBhMywgY29uc3QgQTQmIGE0LAorICAgICAgY29uc3QgQTUmIGE1KSA6IE1vY2tD
bGFzcyhhMSwgYTIsIGEzLCBhNCwgYTUpIHsKKyAgICA6OnRlc3Rpbmc6Ok1vY2s6OkZhaWxVbmlu
dGVyZXN0aW5nQ2FsbHMoCisgICAgICAgIGludGVybmFsOjpJbXBsaWNpdENhc3RfPE1vY2tDbGFz
cyo+KHRoaXMpKTsKKyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIs
IHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBBNCwgdHlwZW5hbWUgQTUsCisgICAgICB0eXBlbmFtZSBB
Nj4KKyAgU3RyaWN0TW9jayhjb25zdCBBMSYgYTEsIGNvbnN0IEEyJiBhMiwgY29uc3QgQTMmIGEz
LCBjb25zdCBBNCYgYTQsCisgICAgICBjb25zdCBBNSYgYTUsIGNvbnN0IEE2JiBhNikgOiBNb2Nr
Q2xhc3MoYTEsIGEyLCBhMywgYTQsIGE1LCBhNikgeworICAgIDo6dGVzdGluZzo6TW9jazo6RmFp
bFVuaW50ZXJlc3RpbmdDYWxscygKKyAgICAgICAgaW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88TW9j
a0NsYXNzKj4odGhpcykpOworICB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEExLCB0eXBlbmFt
ZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0LCB0eXBlbmFtZSBBNSwKKyAgICAgIHR5cGVu
YW1lIEE2LCB0eXBlbmFtZSBBNz4KKyAgU3RyaWN0TW9jayhjb25zdCBBMSYgYTEsIGNvbnN0IEEy
JiBhMiwgY29uc3QgQTMmIGEzLCBjb25zdCBBNCYgYTQsCisgICAgICBjb25zdCBBNSYgYTUsIGNv
bnN0IEE2JiBhNiwgY29uc3QgQTcmIGE3KSA6IE1vY2tDbGFzcyhhMSwgYTIsIGEzLCBhNCwgYTUs
CisgICAgICBhNiwgYTcpIHsKKyAgICA6OnRlc3Rpbmc6Ok1vY2s6OkZhaWxVbmludGVyZXN0aW5n
Q2FsbHMoCisgICAgICAgIGludGVybmFsOjpJbXBsaWNpdENhc3RfPE1vY2tDbGFzcyo+KHRoaXMp
KTsKKyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1l
IEEzLCB0eXBlbmFtZSBBNCwgdHlwZW5hbWUgQTUsCisgICAgICB0eXBlbmFtZSBBNiwgdHlwZW5h
bWUgQTcsIHR5cGVuYW1lIEE4PgorICBTdHJpY3RNb2NrKGNvbnN0IEExJiBhMSwgY29uc3QgQTIm
IGEyLCBjb25zdCBBMyYgYTMsIGNvbnN0IEE0JiBhNCwKKyAgICAgIGNvbnN0IEE1JiBhNSwgY29u
c3QgQTYmIGE2LCBjb25zdCBBNyYgYTcsIGNvbnN0IEE4JiBhOCkgOiBNb2NrQ2xhc3MoYTEsCisg
ICAgICBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCkgeworICAgIDo6dGVzdGluZzo6TW9jazo6
RmFpbFVuaW50ZXJlc3RpbmdDYWxscygKKyAgICAgICAgaW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88
TW9ja0NsYXNzKj4odGhpcykpOworICB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEExLCB0eXBl
bmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0LCB0eXBlbmFtZSBBNSwKKyAgICAgIHR5
cGVuYW1lIEE2LCB0eXBlbmFtZSBBNywgdHlwZW5hbWUgQTgsIHR5cGVuYW1lIEE5PgorICBTdHJp
Y3RNb2NrKGNvbnN0IEExJiBhMSwgY29uc3QgQTImIGEyLCBjb25zdCBBMyYgYTMsIGNvbnN0IEE0
JiBhNCwKKyAgICAgIGNvbnN0IEE1JiBhNSwgY29uc3QgQTYmIGE2LCBjb25zdCBBNyYgYTcsIGNv
bnN0IEE4JiBhOCwKKyAgICAgIGNvbnN0IEE5JiBhOSkgOiBNb2NrQ2xhc3MoYTEsIGEyLCBhMywg
YTQsIGE1LCBhNiwgYTcsIGE4LCBhOSkgeworICAgIDo6dGVzdGluZzo6TW9jazo6RmFpbFVuaW50
ZXJlc3RpbmdDYWxscygKKyAgICAgICAgaW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88TW9ja0NsYXNz
Kj4odGhpcykpOworICB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwg
dHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0LCB0eXBlbmFtZSBBNSwKKyAgICAgIHR5cGVuYW1lIEE2
LCB0eXBlbmFtZSBBNywgdHlwZW5hbWUgQTgsIHR5cGVuYW1lIEE5LCB0eXBlbmFtZSBBMTA+Cisg
IFN0cmljdE1vY2soY29uc3QgQTEmIGExLCBjb25zdCBBMiYgYTIsIGNvbnN0IEEzJiBhMywgY29u
c3QgQTQmIGE0LAorICAgICAgY29uc3QgQTUmIGE1LCBjb25zdCBBNiYgYTYsIGNvbnN0IEE3JiBh
NywgY29uc3QgQTgmIGE4LCBjb25zdCBBOSYgYTksCisgICAgICBjb25zdCBBMTAmIGExMCkgOiBN
b2NrQ2xhc3MoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSwgYTEwKSB7CisgICAg
Ojp0ZXN0aW5nOjpNb2NrOjpGYWlsVW5pbnRlcmVzdGluZ0NhbGxzKAorICAgICAgICBpbnRlcm5h
bDo6SW1wbGljaXRDYXN0XzxNb2NrQ2xhc3MqPih0aGlzKSk7CisgIH0KKworICB2aXJ0dWFsIH5T
dHJpY3RNb2NrKCkgeworICAgIDo6dGVzdGluZzo6TW9jazo6VW5yZWdpc3RlckNhbGxSZWFjdGlv
bigKKyAgICAgICAgaW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88TW9ja0NsYXNzKj4odGhpcykpOwor
ICB9CisKKyBwcml2YXRlOgorICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFN0cmlj
dE1vY2spOworfTsKKworLy8gVGhlIGZvbGxvd2luZyBzcGVjaWFsaXphdGlvbnMgY2F0Y2ggc29t
ZSAocmVsYXRpdmVseSBtb3JlIGNvbW1vbikKKy8vIHVzZXIgZXJyb3JzIG9mIG5lc3Rpbmcgbmlj
ZSBhbmQgc3RyaWN0IG1vY2tzLiAgVGhleSBkbyBOT1QgY2F0Y2gKKy8vIGFsbCBwb3NzaWJsZSBl
cnJvcnMuCisKKy8vIFRoZXNlIHNwZWNpYWxpemF0aW9ucyBhcmUgZGVjbGFyZWQgYnV0IG5vdCBk
ZWZpbmVkLCBhcyBOaWNlTW9jaywKKy8vIE5hZ2d5TW9jaywgYW5kIFN0cmljdE1vY2sgY2Fubm90
IGJlIG5lc3RlZC4KKwordGVtcGxhdGUgPHR5cGVuYW1lIE1vY2tDbGFzcz4KK2NsYXNzIE5pY2VN
b2NrPE5pY2VNb2NrPE1vY2tDbGFzcz4gPjsKK3RlbXBsYXRlIDx0eXBlbmFtZSBNb2NrQ2xhc3M+
CitjbGFzcyBOaWNlTW9jazxOYWdneU1vY2s8TW9ja0NsYXNzPiA+OwordGVtcGxhdGUgPHR5cGVu
YW1lIE1vY2tDbGFzcz4KK2NsYXNzIE5pY2VNb2NrPFN0cmljdE1vY2s8TW9ja0NsYXNzPiA+Owor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgTW9ja0NsYXNzPgorY2xhc3MgTmFnZ3lNb2NrPE5pY2VNb2Nr
PE1vY2tDbGFzcz4gPjsKK3RlbXBsYXRlIDx0eXBlbmFtZSBNb2NrQ2xhc3M+CitjbGFzcyBOYWdn
eU1vY2s8TmFnZ3lNb2NrPE1vY2tDbGFzcz4gPjsKK3RlbXBsYXRlIDx0eXBlbmFtZSBNb2NrQ2xh
c3M+CitjbGFzcyBOYWdneU1vY2s8U3RyaWN0TW9jazxNb2NrQ2xhc3M+ID47CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBNb2NrQ2xhc3M+CitjbGFzcyBTdHJpY3RNb2NrPE5pY2VNb2NrPE1vY2tDbGFz
cz4gPjsKK3RlbXBsYXRlIDx0eXBlbmFtZSBNb2NrQ2xhc3M+CitjbGFzcyBTdHJpY3RNb2NrPE5h
Z2d5TW9jazxNb2NrQ2xhc3M+ID47Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgTW9ja0NsYXNzPgorY2xh
c3MgU3RyaWN0TW9jazxTdHJpY3RNb2NrPE1vY2tDbGFzcz4gPjsKKworfSAgLy8gbmFtZXNwYWNl
IHRlc3RpbmcKKworI2VuZGlmICAvLyBHTU9DS19JTkNMVURFX0dNT0NLX0dNT0NLX0dFTkVSQVRF
RF9OSUNFX1NUUklDVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9n
bW9jay1nZW5lcmF0ZWQtbmljZS1zdHJpY3QuaC5wdW1wIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9n
bW9jay9nbW9jay1nZW5lcmF0ZWQtbmljZS1zdHJpY3QuaC5wdW1wCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlZTFj
ZTdmMzA5NTEwOTlhNjk2MjJmNDViYzE1ZjE1ZmIwZmFmMDcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2dtb2NrLWdlbmVyYXRlZC1uaWNlLXN0cmljdC5oLnB1
bXAKQEAgLTAsMCArMSwxNjEgQEAKKyQkIC0qLSBtb2RlOiBjKys7IC0qLQorJCQgVGhpcyBpcyBh
IFB1bXAgc291cmNlIGZpbGUuICBQbGVhc2UgdXNlIFB1bXAgdG8gY29udmVydCBpdCB0bworJCQg
Z21vY2stZ2VuZXJhdGVkLW5pY2Utc3RyaWN0LmguCiskJAorJHZhciBuID0gMTAgICQkIFRoZSBt
YXhpbXVtIGFyaXR5IHdlIHN1cHBvcnQuCisvLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4K
Ky8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
Ky8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8v
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisvLworLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2Fu
KQorCisvLyBJbXBsZW1lbnRzIGNsYXNzIHRlbXBsYXRlcyBOaWNlTW9jaywgTmFnZ3lNb2NrLCBh
bmQgU3RyaWN0TW9jay4KKy8vCisvLyBHaXZlbiBhIG1vY2sgY2xhc3MgTW9ja0ZvbyB0aGF0IGlz
IGNyZWF0ZWQgdXNpbmcgR29vZ2xlIE1vY2ssCisvLyBOaWNlTW9jazxNb2NrRm9vPiBpcyBhIHN1
YmNsYXNzIG9mIE1vY2tGb28gdGhhdCBhbGxvd3MKKy8vIHVuaW50ZXJlc3RpbmcgY2FsbHMgKGku
ZS4gY2FsbHMgdG8gbW9jayBtZXRob2RzIHRoYXQgaGF2ZSBubworLy8gRVhQRUNUX0NBTEwgc3Bl
Y3MpLCBOYWdneU1vY2s8TW9ja0Zvbz4gaXMgYSBzdWJjbGFzcyBvZiBNb2NrRm9vCisvLyB0aGF0
IHByaW50cyBhIHdhcm5pbmcgd2hlbiBhbiB1bmludGVyZXN0aW5nIGNhbGwgb2NjdXJzLCBhbmQK
Ky8vIFN0cmljdE1vY2s8TW9ja0Zvbz4gaXMgYSBzdWJjbGFzcyBvZiBNb2NrRm9vIHRoYXQgdHJl
YXRzIGFsbAorLy8gdW5pbnRlcmVzdGluZyBjYWxscyBhcyBlcnJvcnMuCisvLworLy8gQ3VycmVu
dGx5IGEgbW9jayBpcyBuYWdneSBieSBkZWZhdWx0LCBzbyBNb2NrRm9vIGFuZAorLy8gTmFnZ3lN
b2NrPE1vY2tGb28+IGJlaGF2ZSBsaWtlIHRoZSBzYW1lLiAgSG93ZXZlciwgd2Ugd2lsbCBzb29u
CisvLyBzd2l0Y2ggdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgbW9ja3MgdG8gYmUgbmljZSwgYXMg
dGhhdCBpbiBnZW5lcmFsCisvLyBsZWFkcyB0byBtb3JlIG1haW50YWluYWJsZSB0ZXN0cy4gIFdo
ZW4gdGhhdCBoYXBwZW5zLCBNb2NrRm9vIHdpbGwKKy8vIHN0b3AgYmVoYXZpbmcgbGlrZSBOYWdn
eU1vY2s8TW9ja0Zvbz4gYW5kIHN0YXJ0IGJlaGF2aW5nIGxpa2UKKy8vIE5pY2VNb2NrPE1vY2tG
b28+LgorLy8KKy8vIE5pY2VNb2NrLCBOYWdneU1vY2ssIGFuZCBTdHJpY3RNb2NrICJpbmhlcml0
IiB0aGUgY29uc3RydWN0b3JzIG9mCisvLyB0aGVpciByZXNwZWN0aXZlIGJhc2UgY2xhc3MsIHdp
dGggdXAtdG8gJG4gYXJndW1lbnRzLiAgVGhlcmVmb3JlCisvLyB5b3UgY2FuIHdyaXRlIE5pY2VN
b2NrPE1vY2tGb28+KDUsICJhIikgdG8gY29uc3RydWN0IGEgbmljZSBtb2NrCisvLyB3aGVyZSBN
b2NrRm9vIGhhcyBhIGNvbnN0cnVjdG9yIHRoYXQgYWNjZXB0cyAoaW50LCBjb25zdCBjaGFyKiks
CisvLyBmb3IgZXhhbXBsZS4KKy8vCisvLyBBIGtub3duIGxpbWl0YXRpb24gaXMgdGhhdCBOaWNl
TW9jazxNb2NrRm9vPiwgTmFnZ3lNb2NrPE1vY2tGb28+LAorLy8gYW5kIFN0cmljdE1vY2s8TW9j
a0Zvbz4gb25seSB3b3JrcyBmb3IgbW9jayBtZXRob2RzIGRlZmluZWQgdXNpbmcKKy8vIHRoZSBN
T0NLX01FVEhPRCogZmFtaWx5IG9mIG1hY3JvcyBESVJFQ1RMWSBpbiB0aGUgTW9ja0ZvbyBjbGFz
cy4KKy8vIElmIGEgbW9jayBtZXRob2QgaXMgZGVmaW5lZCBpbiBhIGJhc2UgY2xhc3Mgb2YgTW9j
a0ZvbywgdGhlICJuaWNlIgorLy8gb3IgInN0cmljdCIgbW9kaWZpZXIgbWF5IG5vdCBhZmZlY3Qg
aXQsIGRlcGVuZGluZyBvbiB0aGUgY29tcGlsZXIuCisvLyBJbiBwYXJ0aWN1bGFyLCBuZXN0aW5n
IE5pY2VNb2NrLCBOYWdneU1vY2ssIGFuZCBTdHJpY3RNb2NrIGlzIE5PVAorLy8gc3VwcG9ydGVk
LgorLy8KKy8vIEFub3RoZXIga25vd24gbGltaXRhdGlvbiBpcyB0aGF0IHRoZSBjb25zdHJ1Y3Rv
cnMgb2YgdGhlIGJhc2UgbW9jaworLy8gY2Fubm90IGhhdmUgYXJndW1lbnRzIHBhc3NlZCBieSBu
b24tY29uc3QgcmVmZXJlbmNlLCB3aGljaCBhcmUKKy8vIGJhbm5lZCBieSB0aGUgR29vZ2xlIEMr
KyBzdHlsZSBndWlkZSBhbnl3YXkuCisKKyNpZm5kZWYgR01PQ0tfSU5DTFVERV9HTU9DS19HTU9D
S19HRU5FUkFURURfTklDRV9TVFJJQ1RfSF8KKyNkZWZpbmUgR01PQ0tfSU5DTFVERV9HTU9DS19H
TU9DS19HRU5FUkFURURfTklDRV9TVFJJQ1RfSF8KKworI2luY2x1ZGUgImdtb2NrL2dtb2NrLXNw
ZWMtYnVpbGRlcnMuaCIKKyNpbmNsdWRlICJnbW9jay9pbnRlcm5hbC9nbW9jay1wb3J0LmgiCisK
K25hbWVzcGFjZSB0ZXN0aW5nIHsKKworJHJhbmdlIGtpbmQgMC4uMgorJGZvciBraW5kIFtbCisK
KyR2YXIgY2xheno9W1skaWYga2luZD09MCBbW05pY2VNb2NrXV0KKyAgICAgICAgICAgICAkZWxp
ZiBraW5kPT0xIFtbTmFnZ3lNb2NrXV0KKyAgICAgICAgICAgICAkZWxzZSBbW1N0cmljdE1vY2td
XV1dCisKKyR2YXIgbWV0aG9kPVtbJGlmIGtpbmQ9PTAgW1tBbGxvd1VuaW50ZXJlc3RpbmdDYWxs
c11dCisgICAgICAgICAgICAgJGVsaWYga2luZD09MSBbW1dhcm5VbmludGVyZXN0aW5nQ2FsbHNd
XQorICAgICAgICAgICAgICRlbHNlIFtbRmFpbFVuaW50ZXJlc3RpbmdDYWxsc11dXV0KKwordGVt
cGxhdGUgPGNsYXNzIE1vY2tDbGFzcz4KK2NsYXNzICRjbGF6eiA6IHB1YmxpYyBNb2NrQ2xhc3Mg
eworIHB1YmxpYzoKKyAgLy8gV2UgZG9uJ3QgZmFjdG9yIG91dCB0aGUgY29uc3RydWN0b3IgYm9k
eSB0byBhIGNvbW1vbiBtZXRob2QsIGFzCisgIC8vIHdlIGhhdmUgdG8gYXZvaWQgYSBwb3NzaWJs
ZSBjbGFzaCB3aXRoIG1lbWJlcnMgb2YgTW9ja0NsYXNzLgorICAkY2xhenooKSB7CisgICAgOjp0
ZXN0aW5nOjpNb2NrOjokbWV0aG9kKAorICAgICAgICBpbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxN
b2NrQ2xhc3MqPih0aGlzKSk7CisgIH0KKworICAvLyBDKysgZG9lc24ndCAoeWV0KSBhbGxvdyBp
bmhlcml0YW5jZSBvZiBjb25zdHJ1Y3RvcnMsIHNvIHdlIGhhdmUKKyAgLy8gdG8gZGVmaW5lIGl0
IGZvciBlYWNoIGFyaXR5LgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTE+CisgIGV4cGxpY2l0ICRj
bGF6eihjb25zdCBBMSYgYTEpIDogTW9ja0NsYXNzKGExKSB7CisgICAgOjp0ZXN0aW5nOjpNb2Nr
OjokbWV0aG9kKAorICAgICAgICBpbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxNb2NrQ2xhc3MqPih0
aGlzKSk7CisgIH0KKworJHJhbmdlIGkgMi4ubgorJGZvciBpIFtbCiskcmFuZ2UgaiAxLi5pCisg
IHRlbXBsYXRlIDwkZm9yIGosIFtbdHlwZW5hbWUgQSRqXV0+CisgICRjbGF6eigkZm9yIGosIFtb
Y29uc3QgQSRqJiBhJGpdXSkgOiBNb2NrQ2xhc3MoJGZvciBqLCBbW2Ekal1dKSB7CisgICAgOjp0
ZXN0aW5nOjpNb2NrOjokbWV0aG9kKAorICAgICAgICBpbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxN
b2NrQ2xhc3MqPih0aGlzKSk7CisgIH0KKworCitdXQorICB2aXJ0dWFsIH4kY2xhenooKSB7Cisg
ICAgOjp0ZXN0aW5nOjpNb2NrOjpVbnJlZ2lzdGVyQ2FsbFJlYWN0aW9uKAorICAgICAgICBpbnRl
cm5hbDo6SW1wbGljaXRDYXN0XzxNb2NrQ2xhc3MqPih0aGlzKSk7CisgIH0KKworIHByaXZhdGU6
CisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oJGNsYXp6KTsKK307CisKK11dCisK
Ky8vIFRoZSBmb2xsb3dpbmcgc3BlY2lhbGl6YXRpb25zIGNhdGNoIHNvbWUgKHJlbGF0aXZlbHkg
bW9yZSBjb21tb24pCisvLyB1c2VyIGVycm9ycyBvZiBuZXN0aW5nIG5pY2UgYW5kIHN0cmljdCBt
b2Nrcy4gIFRoZXkgZG8gTk9UIGNhdGNoCisvLyBhbGwgcG9zc2libGUgZXJyb3JzLgorCisvLyBU
aGVzZSBzcGVjaWFsaXphdGlvbnMgYXJlIGRlY2xhcmVkIGJ1dCBub3QgZGVmaW5lZCwgYXMgTmlj
ZU1vY2ssCisvLyBOYWdneU1vY2ssIGFuZCBTdHJpY3RNb2NrIGNhbm5vdCBiZSBuZXN0ZWQuCisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBNb2NrQ2xhc3M+CitjbGFzcyBOaWNlTW9jazxOaWNlTW9jazxN
b2NrQ2xhc3M+ID47Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgTW9ja0NsYXNzPgorY2xhc3MgTmljZU1v
Y2s8TmFnZ3lNb2NrPE1vY2tDbGFzcz4gPjsKK3RlbXBsYXRlIDx0eXBlbmFtZSBNb2NrQ2xhc3M+
CitjbGFzcyBOaWNlTW9jazxTdHJpY3RNb2NrPE1vY2tDbGFzcz4gPjsKKwordGVtcGxhdGUgPHR5
cGVuYW1lIE1vY2tDbGFzcz4KK2NsYXNzIE5hZ2d5TW9jazxOaWNlTW9jazxNb2NrQ2xhc3M+ID47
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgTW9ja0NsYXNzPgorY2xhc3MgTmFnZ3lNb2NrPE5hZ2d5TW9j
azxNb2NrQ2xhc3M+ID47Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgTW9ja0NsYXNzPgorY2xhc3MgTmFn
Z3lNb2NrPFN0cmljdE1vY2s8TW9ja0NsYXNzPiA+OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTW9j
a0NsYXNzPgorY2xhc3MgU3RyaWN0TW9jazxOaWNlTW9jazxNb2NrQ2xhc3M+ID47Cit0ZW1wbGF0
ZSA8dHlwZW5hbWUgTW9ja0NsYXNzPgorY2xhc3MgU3RyaWN0TW9jazxOYWdneU1vY2s8TW9ja0Ns
YXNzPiA+OwordGVtcGxhdGUgPHR5cGVuYW1lIE1vY2tDbGFzcz4KK2NsYXNzIFN0cmljdE1vY2s8
U3RyaWN0TW9jazxNb2NrQ2xhc3M+ID47CisKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCisKKyNl
bmRpZiAgLy8gR01PQ0tfSU5DTFVERV9HTU9DS19HTU9DS19HRU5FUkFURURfTklDRV9TVFJJQ1Rf
SF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svZ21vY2stbWF0Y2hlcnMu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svZ21vY2stbWF0Y2hlcnMuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45YWRlNWI2NDg4ZjlhYmZkZTEwNDIyMDIzNWIyZjg2MTBhOGNjOTZhCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9nbW9jay1tYXRjaGVycy5oCkBAIC0wLDAg
KzEsNDM5NyBAQAorLy8gQ29weXJpZ2h0IDIwMDcsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0Ogor
Ly8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisv
LyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisv
LyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
Ly8KKy8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKworLy8gR29vZ2xl
IE1vY2sgLSBhIGZyYW1ld29yayBmb3Igd3JpdGluZyBDKysgbW9jayBjbGFzc2VzLgorLy8KKy8v
IFRoaXMgZmlsZSBpbXBsZW1lbnRzIHNvbWUgY29tbW9ubHkgdXNlZCBhcmd1bWVudCBtYXRjaGVy
cy4gIE1vcmUKKy8vIG1hdGNoZXJzIGNhbiBiZSBkZWZpbmVkIGJ5IHRoZSB1c2VyIGltcGxlbWVu
dGluZyB0aGUKKy8vIE1hdGNoZXJJbnRlcmZhY2U8VD4gaW50ZXJmYWNlIGlmIG5lY2Vzc2FyeS4K
KworI2lmbmRlZiBHTU9DS19JTkNMVURFX0dNT0NLX0dNT0NLX01BVENIRVJTX0hfCisjZGVmaW5l
IEdNT0NLX0lOQ0xVREVfR01PQ0tfR01PQ0tfTUFUQ0hFUlNfSF8KKworI2luY2x1ZGUgPG1hdGgu
aD4KKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8aXRlcmF0b3I+CisjaW5jbHVkZSA8
bGltaXRzPgorI2luY2x1ZGUgPG9zdHJlYW0+ICAvLyBOT0xJTlQKKyNpbmNsdWRlIDxzc3RyZWFt
PgorI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgPHZlY3Rv
cj4KKworI2luY2x1ZGUgImdtb2NrL2ludGVybmFsL2dtb2NrLWludGVybmFsLXV0aWxzLmgiCisj
aW5jbHVkZSAiZ21vY2svaW50ZXJuYWwvZ21vY2stcG9ydC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0
ZXN0LmgiCisKKyNpZiBHVEVTVF9IQVNfU1REX0lOSVRJQUxJWkVSX0xJU1RfCisjIGluY2x1ZGUg
PGluaXRpYWxpemVyX2xpc3Q+ICAvLyBOT0xJTlQgLS0gbXVzdCBiZSBhZnRlciBndGVzdC5oCisj
ZW5kaWYKKworbmFtZXNwYWNlIHRlc3RpbmcgeworCisvLyBUbyBpbXBsZW1lbnQgYSBtYXRjaGVy
IEZvbyBmb3IgdHlwZSBULCBkZWZpbmU6CisvLyAgIDEuIGEgY2xhc3MgRm9vTWF0Y2hlckltcGwg
dGhhdCBpbXBsZW1lbnRzIHRoZQorLy8gICAgICBNYXRjaGVySW50ZXJmYWNlPFQ+IGludGVyZmFj
ZSwgYW5kCisvLyAgIDIuIGEgZmFjdG9yeSBmdW5jdGlvbiB0aGF0IGNyZWF0ZXMgYSBNYXRjaGVy
PFQ+IG9iamVjdCBmcm9tIGEKKy8vICAgICAgRm9vTWF0Y2hlckltcGwqLgorLy8KKy8vIFRoZSB0
d28tbGV2ZWwgZGVsZWdhdGlvbiBkZXNpZ24gbWFrZXMgaXQgcG9zc2libGUgdG8gYWxsb3cgYSB1
c2VyCisvLyB0byB3cml0ZSAidiIgaW5zdGVhZCBvZiAiRXEodikiIHdoZXJlIGEgTWF0Y2hlciBp
cyBleHBlY3RlZCwgd2hpY2gKKy8vIGlzIGltcG9zc2libGUgaWYgd2UgcGFzcyBtYXRjaGVycyBi
eSBwb2ludGVycy4gIEl0IGFsc28gZWFzZXMKKy8vIG93bmVyc2hpcCBtYW5hZ2VtZW50IGFzIE1h
dGNoZXIgb2JqZWN0cyBjYW4gbm93IGJlIGNvcGllZCBsaWtlCisvLyBwbGFpbiB2YWx1ZXMuCisK
Ky8vIE1hdGNoUmVzdWx0TGlzdGVuZXIgaXMgYW4gYWJzdHJhY3QgY2xhc3MuICBJdHMgPDwgb3Bl
cmF0b3IgY2FuIGJlCisvLyB1c2VkIGJ5IGEgbWF0Y2hlciB0byBleHBsYWluIHdoeSBhIHZhbHVl
IG1hdGNoZXMgb3IgZG9lc24ndCBtYXRjaC4KKy8vCisvLyBUT0RPKHdhbkBnb29nbGUuY29tKTog
YWRkIG1ldGhvZAorLy8gICBib29sIEludGVyZXN0ZWRJbldoeShib29sIHJlc3VsdCkgY29uc3Q7
CisvLyB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBsaXN0ZW5lciBpcyBpbnRlcmVzdGVkIGluIHdo
eSB0aGUgbWF0Y2gKKy8vIHJlc3VsdCBpcyAncmVzdWx0Jy4KK2NsYXNzIE1hdGNoUmVzdWx0TGlz
dGVuZXIgeworIHB1YmxpYzoKKyAgLy8gQ3JlYXRlcyBhIGxpc3RlbmVyIG9iamVjdCB3aXRoIHRo
ZSBnaXZlbiB1bmRlcmx5aW5nIG9zdHJlYW0uICBUaGUKKyAgLy8gbGlzdGVuZXIgZG9lcyBub3Qg
b3duIHRoZSBvc3RyZWFtLCBhbmQgZG9lcyBub3QgZGVyZWZlcmVuY2UgaXQKKyAgLy8gaW4gdGhl
IGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3IuCisgIGV4cGxpY2l0IE1hdGNoUmVzdWx0TGlzdGVu
ZXIoOjpzdGQ6Om9zdHJlYW0qIG9zKSA6IHN0cmVhbV8ob3MpIHt9CisgIHZpcnR1YWwgfk1hdGNo
UmVzdWx0TGlzdGVuZXIoKSA9IDA7ICAvLyBNYWtlcyB0aGlzIGNsYXNzIGFic3RyYWN0LgorCisg
IC8vIFN0cmVhbXMgeCB0byB0aGUgdW5kZXJseWluZyBvc3RyZWFtOyBkb2VzIG5vdGhpbmcgaWYg
dGhlIG9zdHJlYW0KKyAgLy8gaXMgTlVMTC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIE1h
dGNoUmVzdWx0TGlzdGVuZXImIG9wZXJhdG9yPDwoY29uc3QgVCYgeCkgeworICAgIGlmIChzdHJl
YW1fICE9IE5VTEwpCisgICAgICAqc3RyZWFtXyA8PCB4OworICAgIHJldHVybiAqdGhpczsKKyAg
fQorCisgIC8vIFJldHVybnMgdGhlIHVuZGVybHlpbmcgb3N0cmVhbS4KKyAgOjpzdGQ6Om9zdHJl
YW0qIHN0cmVhbSgpIHsgcmV0dXJuIHN0cmVhbV87IH0KKworICAvLyBSZXR1cm5zIHRydWUgaWZm
IHRoZSBsaXN0ZW5lciBpcyBpbnRlcmVzdGVkIGluIGFuIGV4cGxhbmF0aW9uIG9mCisgIC8vIHRo
ZSBtYXRjaCByZXN1bHQuICBBIG1hdGNoZXIncyBNYXRjaEFuZEV4cGxhaW4oKSBtZXRob2QgY2Fu
IHVzZQorICAvLyB0aGlzIGluZm9ybWF0aW9uIHRvIGF2b2lkIGdlbmVyYXRpbmcgdGhlIGV4cGxh
bmF0aW9uIHdoZW4gbm8gb25lCisgIC8vIGludGVuZHMgdG8gaGVhciBpdC4KKyAgYm9vbCBJc0lu
dGVyZXN0ZWQoKSBjb25zdCB7IHJldHVybiBzdHJlYW1fICE9IE5VTEw7IH0KKworIHByaXZhdGU6
CisgIDo6c3RkOjpvc3RyZWFtKiBjb25zdCBzdHJlYW1fOworCisgIEdURVNUX0RJU0FMTE9XX0NP
UFlfQU5EX0FTU0lHTl8oTWF0Y2hSZXN1bHRMaXN0ZW5lcik7Cit9OworCitpbmxpbmUgTWF0Y2hS
ZXN1bHRMaXN0ZW5lcjo6fk1hdGNoUmVzdWx0TGlzdGVuZXIoKSB7Cit9CisKKy8vIEFuIGluc3Rh
bmNlIG9mIGEgc3ViY2xhc3Mgb2YgdGhpcyBrbm93cyBob3cgdG8gZGVzY3JpYmUgaXRzZWxmIGFz
IGEKKy8vIG1hdGNoZXIuCitjbGFzcyBNYXRjaGVyRGVzY3JpYmVySW50ZXJmYWNlIHsKKyBwdWJs
aWM6CisgIHZpcnR1YWwgfk1hdGNoZXJEZXNjcmliZXJJbnRlcmZhY2UoKSB7fQorCisgIC8vIERl
c2NyaWJlcyB0aGlzIG1hdGNoZXIgdG8gYW4gb3N0cmVhbS4gIFRoZSBmdW5jdGlvbiBzaG91bGQg
cHJpbnQKKyAgLy8gYSB2ZXJiIHBocmFzZSB0aGF0IGRlc2NyaWJlcyB0aGUgcHJvcGVydHkgYSB2
YWx1ZSBtYXRjaGluZyB0aGlzCisgIC8vIG1hdGNoZXIgc2hvdWxkIGhhdmUuICBUaGUgc3ViamVj
dCBvZiB0aGUgdmVyYiBwaHJhc2UgaXMgdGhlIHZhbHVlCisgIC8vIGJlaW5nIG1hdGNoZWQuICBG
b3IgZXhhbXBsZSwgdGhlIERlc2NyaWJlVG8oKSBtZXRob2Qgb2YgdGhlIEd0KDcpCisgIC8vIG1h
dGNoZXIgcHJpbnRzICJpcyBncmVhdGVyIHRoYW4gNyIuCisgIHZpcnR1YWwgdm9pZCBEZXNjcmli
ZVRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgPSAwOworCisgIC8vIERlc2NyaWJlcyB0aGUg
bmVnYXRpb24gb2YgdGhpcyBtYXRjaGVyIHRvIGFuIG9zdHJlYW0uICBGb3IKKyAgLy8gZXhhbXBs
ZSwgaWYgdGhlIGRlc2NyaXB0aW9uIG9mIHRoaXMgbWF0Y2hlciBpcyAiaXMgZ3JlYXRlciB0aGFu
CisgIC8vIDciLCB0aGUgbmVnYXRlZCBkZXNjcmlwdGlvbiBjb3VsZCBiZSAiaXMgbm90IGdyZWF0
ZXIgdGhhbiA3Ii4KKyAgLy8gWW91IGFyZSBub3QgcmVxdWlyZWQgdG8gb3ZlcnJpZGUgdGhpcyB3
aGVuIGltcGxlbWVudGluZworICAvLyBNYXRjaGVySW50ZXJmYWNlLCBidXQgaXQgaXMgaGlnaGx5
IGFkdmlzZWQgc28gdGhhdCB5b3VyIG1hdGNoZXIKKyAgLy8gY2FuIHByb2R1Y2UgZ29vZCBlcnJv
ciBtZXNzYWdlcy4KKyAgdmlydHVhbCB2b2lkIERlc2NyaWJlTmVnYXRpb25Ubyg6OnN0ZDo6b3N0
cmVhbSogb3MpIGNvbnN0IHsKKyAgICAqb3MgPDwgIm5vdCAoIjsKKyAgICBEZXNjcmliZVRvKG9z
KTsKKyAgICAqb3MgPDwgIikiOworICB9Cit9OworCisvLyBUaGUgaW1wbGVtZW50YXRpb24gb2Yg
YSBtYXRjaGVyLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBNYXRjaGVySW50ZXJmYWNl
IDogcHVibGljIE1hdGNoZXJEZXNjcmliZXJJbnRlcmZhY2UgeworIHB1YmxpYzoKKyAgLy8gUmV0
dXJucyB0cnVlIGlmZiB0aGUgbWF0Y2hlciBtYXRjaGVzIHg7IGFsc28gZXhwbGFpbnMgdGhlIG1h
dGNoCisgIC8vIHJlc3VsdCB0byAnbGlzdGVuZXInIGlmIG5lY2Vzc2FyeSAoc2VlIHRoZSBuZXh0
IHBhcmFncmFwaCksIGluCisgIC8vIHRoZSBmb3JtIG9mIGEgbm9uLXJlc3RyaWN0aXZlIHJlbGF0
aXZlIGNsYXVzZSAoIndoaWNoIC4uLiIsCisgIC8vICJ3aG9zZSAuLi4iLCBldGMpIHRoYXQgZGVz
Y3JpYmVzIHguICBGb3IgZXhhbXBsZSwgdGhlCisgIC8vIE1hdGNoQW5kRXhwbGFpbigpIG1ldGhv
ZCBvZiB0aGUgUG9pbnRlZSguLi4pIG1hdGNoZXIgc2hvdWxkCisgIC8vIGdlbmVyYXRlIGFuIGV4
cGxhbmF0aW9uIGxpa2UgIndoaWNoIHBvaW50cyB0byAuLi4iLgorICAvLworICAvLyBJbXBsZW1l
bnRhdGlvbnMgb2YgTWF0Y2hBbmRFeHBsYWluKCkgc2hvdWxkIGFkZCBhbiBleHBsYW5hdGlvbiBv
ZgorICAvLyB0aGUgbWF0Y2ggcmVzdWx0ICppZiBhbmQgb25seSBpZiogdGhleSBjYW4gcHJvdmlk
ZSBhZGRpdGlvbmFsCisgIC8vIGluZm9ybWF0aW9uIHRoYXQncyBub3QgYWxyZWFkeSBwcmVzZW50
IChvciBub3Qgb2J2aW91cykgaW4gdGhlCisgIC8vIHByaW50LW91dCBvZiB4IGFuZCB0aGUgbWF0
Y2hlcidzIGRlc2NyaXB0aW9uLiAgV2hldGhlciB0aGUgbWF0Y2gKKyAgLy8gc3VjY2VlZHMgaXMg
bm90IGEgZmFjdG9yIGluIGRlY2lkaW5nIHdoZXRoZXIgYW4gZXhwbGFuYXRpb24gaXMKKyAgLy8g
bmVlZGVkLCBhcyBzb21ldGltZXMgdGhlIGNhbGxlciBuZWVkcyB0byBwcmludCBhIGZhaWx1cmUg
bWVzc2FnZQorICAvLyB3aGVuIHRoZSBtYXRjaCBzdWNjZWVkcyAoZS5nLiB3aGVuIHRoZSBtYXRj
aGVyIGlzIHVzZWQgaW5zaWRlCisgIC8vIE5vdCgpKS4KKyAgLy8KKyAgLy8gRm9yIGV4YW1wbGUs
IGEgImhhcyBhdCBsZWFzdCAxMCBlbGVtZW50cyIgbWF0Y2hlciBzaG91bGQgZXhwbGFpbgorICAv
LyB3aGF0IHRoZSBhY3R1YWwgZWxlbWVudCBjb3VudCBpcywgcmVnYXJkbGVzcyBvZiB0aGUgbWF0
Y2ggcmVzdWx0LAorICAvLyBhcyBpdCBpcyB1c2VmdWwgaW5mb3JtYXRpb24gdG8gdGhlIHJlYWRl
cjsgb24gdGhlIG90aGVyIGhhbmQsIGFuCisgIC8vICJpcyBlbXB0eSIgbWF0Y2hlciBwcm9iYWJs
eSBvbmx5IG5lZWRzIHRvIGV4cGxhaW4gd2hhdCB0aGUgYWN0dWFsCisgIC8vIHNpemUgaXMgd2hl
biB0aGUgbWF0Y2ggZmFpbHMsIGFzIGl0J3MgcmVkdW5kYW50IHRvIHNheSB0aGF0IHRoZQorICAv
LyBzaXplIGlzIDAgd2hlbiB0aGUgdmFsdWUgaXMgYWxyZWFkeSBrbm93biB0byBiZSBlbXB0eS4K
KyAgLy8KKyAgLy8gWW91IHNob3VsZCBvdmVycmlkZSB0aGlzIG1ldGhvZCB3aGVuIGRlZmluaW5n
IGEgbmV3IG1hdGNoZXIuCisgIC8vCisgIC8vIEl0J3MgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRo
ZSBjYWxsZXIgKEdvb2dsZSBNb2NrKSB0byBndWFyYW50ZWUKKyAgLy8gdGhhdCAnbGlzdGVuZXIn
IGlzIG5vdCBOVUxMLiAgVGhpcyBoZWxwcyB0byBzaW1wbGlmeSBhIG1hdGNoZXIncworICAvLyBp
bXBsZW1lbnRhdGlvbiB3aGVuIGl0IGRvZXNuJ3QgY2FyZSBhYm91dCB0aGUgcGVyZm9ybWFuY2Us
IGFzIGl0CisgIC8vIGNhbiB0YWxrIHRvICdsaXN0ZW5lcicgd2l0aG91dCBjaGVja2luZyBpdHMg
dmFsaWRpdHkgZmlyc3QuCisgIC8vIEhvd2V2ZXIsIGluIG9yZGVyIHRvIGltcGxlbWVudCBkdW1t
eSBsaXN0ZW5lcnMgZWZmaWNpZW50bHksCisgIC8vIGxpc3RlbmVyLT5zdHJlYW0oKSBtYXkgYmUg
TlVMTC4KKyAgdmlydHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbihUIHgsIE1hdGNoUmVzdWx0TGlz
dGVuZXIqIGxpc3RlbmVyKSBjb25zdCA9IDA7CisKKyAgLy8gSW5oZXJpdHMgdGhlc2UgbWV0aG9k
cyBmcm9tIE1hdGNoZXJEZXNjcmliZXJJbnRlcmZhY2U6CisgIC8vICAgdmlydHVhbCB2b2lkIERl
c2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCA9IDA7CisgIC8vICAgdmlydHVhbCB2
b2lkIERlc2NyaWJlTmVnYXRpb25Ubyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0OworfTsKKwor
Ly8gQSBtYXRjaCByZXN1bHQgbGlzdGVuZXIgdGhhdCBzdG9yZXMgdGhlIGV4cGxhbmF0aW9uIGlu
IGEgc3RyaW5nLgorY2xhc3MgU3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lciA6IHB1YmxpYyBNYXRj
aFJlc3VsdExpc3RlbmVyIHsKKyBwdWJsaWM6CisgIFN0cmluZ01hdGNoUmVzdWx0TGlzdGVuZXIo
KSA6IE1hdGNoUmVzdWx0TGlzdGVuZXIoJnNzXykge30KKworICAvLyBSZXR1cm5zIHRoZSBleHBs
YW5hdGlvbiBhY2N1bXVsYXRlZCBzbyBmYXIuCisgIHN0ZDo6c3RyaW5nIHN0cigpIGNvbnN0IHsg
cmV0dXJuIHNzXy5zdHIoKTsgfQorCisgIC8vIENsZWFycyB0aGUgZXhwbGFuYXRpb24gYWNjdW11
bGF0ZWQgc28gZmFyLgorICB2b2lkIENsZWFyKCkgeyBzc18uc3RyKCIiKTsgfQorCisgcHJpdmF0
ZToKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzc187CisKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9B
TkRfQVNTSUdOXyhTdHJpbmdNYXRjaFJlc3VsdExpc3RlbmVyKTsKK307CisKK25hbWVzcGFjZSBp
bnRlcm5hbCB7CisKK3N0cnVjdCBBbnlFcSB7CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBBLCB0eXBl
bmFtZSBCPgorICBib29sIG9wZXJhdG9yKCkoY29uc3QgQSYgYSwgY29uc3QgQiYgYikgY29uc3Qg
eyByZXR1cm4gYSA9PSBiOyB9Cit9Oworc3RydWN0IEFueU5lIHsKKyAgdGVtcGxhdGUgPHR5cGVu
YW1lIEEsIHR5cGVuYW1lIEI+CisgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBBJiBhLCBjb25zdCBC
JiBiKSBjb25zdCB7IHJldHVybiBhICE9IGI7IH0KK307CitzdHJ1Y3QgQW55THQgeworICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgQSwgdHlwZW5hbWUgQj4KKyAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IEEm
IGEsIGNvbnN0IEImIGIpIGNvbnN0IHsgcmV0dXJuIGEgPCBiOyB9Cit9Oworc3RydWN0IEFueUd0
IHsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEEsIHR5cGVuYW1lIEI+CisgIGJvb2wgb3BlcmF0b3Io
KShjb25zdCBBJiBhLCBjb25zdCBCJiBiKSBjb25zdCB7IHJldHVybiBhID4gYjsgfQorfTsKK3N0
cnVjdCBBbnlMZSB7CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBBLCB0eXBlbmFtZSBCPgorICBib29s
IG9wZXJhdG9yKCkoY29uc3QgQSYgYSwgY29uc3QgQiYgYikgY29uc3QgeyByZXR1cm4gYSA8PSBi
OyB9Cit9Oworc3RydWN0IEFueUdlIHsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEEsIHR5cGVuYW1l
IEI+CisgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBBJiBhLCBjb25zdCBCJiBiKSBjb25zdCB7IHJl
dHVybiBhID49IGI7IH0KK307CisKKy8vIEEgbWF0Y2ggcmVzdWx0IGxpc3RlbmVyIHRoYXQgaWdu
b3JlcyB0aGUgZXhwbGFuYXRpb24uCitjbGFzcyBEdW1teU1hdGNoUmVzdWx0TGlzdGVuZXIgOiBw
dWJsaWMgTWF0Y2hSZXN1bHRMaXN0ZW5lciB7CisgcHVibGljOgorICBEdW1teU1hdGNoUmVzdWx0
TGlzdGVuZXIoKSA6IE1hdGNoUmVzdWx0TGlzdGVuZXIoTlVMTCkge30KKworIHByaXZhdGU6Cisg
IEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oRHVtbXlNYXRjaFJlc3VsdExpc3RlbmVy
KTsKK307CisKKy8vIEEgbWF0Y2ggcmVzdWx0IGxpc3RlbmVyIHRoYXQgZm9yd2FyZHMgdGhlIGV4
cGxhbmF0aW9uIHRvIGEgZ2l2ZW4KKy8vIG9zdHJlYW0uICBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVu
IHRoaXMgYW5kIE1hdGNoUmVzdWx0TGlzdGVuZXIgaXMKKy8vIHRoYXQgdGhlIGZvcm1lciBpcyBj
b25jcmV0ZS4KK2NsYXNzIFN0cmVhbU1hdGNoUmVzdWx0TGlzdGVuZXIgOiBwdWJsaWMgTWF0Y2hS
ZXN1bHRMaXN0ZW5lciB7CisgcHVibGljOgorICBleHBsaWNpdCBTdHJlYW1NYXRjaFJlc3VsdExp
c3RlbmVyKDo6c3RkOjpvc3RyZWFtKiBvcykKKyAgICAgIDogTWF0Y2hSZXN1bHRMaXN0ZW5lcihv
cykge30KKworIHByaXZhdGU6CisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oU3Ry
ZWFtTWF0Y2hSZXN1bHRMaXN0ZW5lcik7Cit9OworCisvLyBBbiBpbnRlcm5hbCBjbGFzcyBmb3Ig
aW1wbGVtZW50aW5nIE1hdGNoZXI8VD4sIHdoaWNoIHdpbGwgZGVyaXZlCisvLyBmcm9tIGl0LiAg
V2UgcHV0IGZ1bmN0aW9uYWxpdGllcyBjb21tb24gdG8gYWxsIE1hdGNoZXI8VD4KKy8vIHNwZWNp
YWxpemF0aW9ucyBoZXJlIHRvIGF2b2lkIGNvZGUgZHVwbGljYXRpb24uCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK2NsYXNzIE1hdGNoZXJCYXNlIHsKKyBwdWJsaWM6CisgIC8vIFJldHVybnMgdHJ1
ZSBpZmYgdGhlIG1hdGNoZXIgbWF0Y2hlcyB4OyBhbHNvIGV4cGxhaW5zIHRoZSBtYXRjaAorICAv
LyByZXN1bHQgdG8gJ2xpc3RlbmVyJy4KKyAgYm9vbCBNYXRjaEFuZEV4cGxhaW4oVCB4LCBNYXRj
aFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgeworICAgIHJldHVybiBpbXBsXy0+TWF0
Y2hBbmRFeHBsYWluKHgsIGxpc3RlbmVyKTsKKyAgfQorCisgIC8vIFJldHVybnMgdHJ1ZSBpZmYg
dGhpcyBtYXRjaGVyIG1hdGNoZXMgeC4KKyAgYm9vbCBNYXRjaGVzKFQgeCkgY29uc3QgeworICAg
IER1bW15TWF0Y2hSZXN1bHRMaXN0ZW5lciBkdW1teTsKKyAgICByZXR1cm4gTWF0Y2hBbmRFeHBs
YWluKHgsICZkdW1teSk7CisgIH0KKworICAvLyBEZXNjcmliZXMgdGhpcyBtYXRjaGVyIHRvIGFu
IG9zdHJlYW0uCisgIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsg
aW1wbF8tPkRlc2NyaWJlVG8ob3MpOyB9CisKKyAgLy8gRGVzY3JpYmVzIHRoZSBuZWdhdGlvbiBv
ZiB0aGlzIG1hdGNoZXIgdG8gYW4gb3N0cmVhbS4KKyAgdm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8o
OjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7CisgICAgaW1wbF8tPkRlc2NyaWJlTmVnYXRpb25U
byhvcyk7CisgIH0KKworICAvLyBFeHBsYWlucyB3aHkgeCBtYXRjaGVzLCBvciBkb2Vzbid0IG1h
dGNoLCB0aGUgbWF0Y2hlci4KKyAgdm9pZCBFeHBsYWluTWF0Y2hSZXN1bHRUbyhUIHgsIDo6c3Rk
Ojpvc3RyZWFtKiBvcykgY29uc3QgeworICAgIFN0cmVhbU1hdGNoUmVzdWx0TGlzdGVuZXIgbGlz
dGVuZXIob3MpOworICAgIE1hdGNoQW5kRXhwbGFpbih4LCAmbGlzdGVuZXIpOworICB9CisKKyAg
Ly8gUmV0dXJucyB0aGUgZGVzY3JpYmVyIGZvciB0aGlzIG1hdGNoZXIgb2JqZWN0OyByZXRhaW5z
IG93bmVyc2hpcAorICAvLyBvZiB0aGUgZGVzY3JpYmVyLCB3aGljaCBpcyBvbmx5IGd1YXJhbnRl
ZWQgdG8gYmUgYWxpdmUgd2hlbgorICAvLyB0aGlzIG1hdGNoZXIgb2JqZWN0IGlzIGFsaXZlLgor
ICBjb25zdCBNYXRjaGVyRGVzY3JpYmVySW50ZXJmYWNlKiBHZXREZXNjcmliZXIoKSBjb25zdCB7
CisgICAgcmV0dXJuIGltcGxfLmdldCgpOworICB9CisKKyBwcm90ZWN0ZWQ6CisgIE1hdGNoZXJC
YXNlKCkge30KKworICAvLyBDb25zdHJ1Y3RzIGEgbWF0Y2hlciBmcm9tIGl0cyBpbXBsZW1lbnRh
dGlvbi4KKyAgZXhwbGljaXQgTWF0Y2hlckJhc2UoY29uc3QgTWF0Y2hlckludGVyZmFjZTxUPiog
aW1wbCkKKyAgICAgIDogaW1wbF8oaW1wbCkge30KKworICB2aXJ0dWFsIH5NYXRjaGVyQmFzZSgp
IHt9CisKKyBwcml2YXRlOgorICAvLyBzaGFyZWRfcHRyICh1dGlsL2d0bC9zaGFyZWRfcHRyLmgp
IGFuZCBsaW5rZWRfcHRyIGhhdmUgc2ltaWxhcgorICAvLyBpbnRlcmZhY2VzLiAgVGhlIGZvcm1l
ciBkeW5hbWljYWxseSBhbGxvY2F0ZXMgYSBjaHVuayBvZiBtZW1vcnkKKyAgLy8gdG8gaG9sZCB0
aGUgcmVmZXJlbmNlIGNvdW50LCB3aGlsZSB0aGUgbGF0dGVyIHRyYWNrcyBhbGwKKyAgLy8gcmVm
ZXJlbmNlcyB1c2luZyBhIGNpcmN1bGFyIGxpbmtlZCBsaXN0IHdpdGhvdXQgYWxsb2NhdGluZwor
ICAvLyBtZW1vcnkuICBJdCBoYXMgYmVlbiBvYnNlcnZlZCB0aGF0IGxpbmtlZF9wdHIgcGVyZm9y
bXMgYmV0dGVyIGluCisgIC8vIHR5cGljYWwgc2NlbmFyaW9zLiAgSG93ZXZlciwgc2hhcmVkX3B0
ciBjYW4gb3V0LXBlcmZvcm0KKyAgLy8gbGlua2VkX3B0ciB3aGVuIHRoZXJlIGFyZSBtYW55IG1v
cmUgdXNlcyBvZiB0aGUgY29weSBjb25zdHJ1Y3RvcgorICAvLyB0aGFuIHRoZSBkZWZhdWx0IGNv
bnN0cnVjdG9yLgorICAvLworICAvLyBJZiBwZXJmb3JtYW5jZSBiZWNvbWVzIGEgcHJvYmxlbSwg
d2Ugc2hvdWxkIHNlZSBpZiB1c2luZworICAvLyBzaGFyZWRfcHRyIGhlbHBzLgorICA6OnRlc3Rp
bmc6OmludGVybmFsOjpsaW5rZWRfcHRyPGNvbnN0IE1hdGNoZXJJbnRlcmZhY2U8VD4gPiBpbXBs
XzsKK307CisKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAorCisvLyBBIE1hdGNoZXI8VD4gaXMg
YSBjb3B5YWJsZSBhbmQgSU1NVVRBQkxFIChleGNlcHQgYnkgYXNzaWdubWVudCkKKy8vIG9iamVj
dCB0aGF0IGNhbiBjaGVjayB3aGV0aGVyIGEgdmFsdWUgb2YgdHlwZSBUIG1hdGNoZXMuICBUaGUK
Ky8vIGltcGxlbWVudGF0aW9uIG9mIE1hdGNoZXI8VD4gaXMganVzdCBhIGxpbmtlZF9wdHIgdG8g
Y29uc3QKKy8vIE1hdGNoZXJJbnRlcmZhY2U8VD4sIHNvIGNvcHlpbmcgaXMgZmFpcmx5IGNoZWFw
LiAgRG9uJ3QgaW5oZXJpdAorLy8gZnJvbSBNYXRjaGVyIQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CitjbGFzcyBNYXRjaGVyIDogcHVibGljIGludGVybmFsOjpNYXRjaGVyQmFzZTxUPiB7CisgcHVi
bGljOgorICAvLyBDb25zdHJ1Y3RzIGEgbnVsbCBtYXRjaGVyLiAgTmVlZGVkIGZvciBzdG9yaW5n
IE1hdGNoZXIgb2JqZWN0cyBpbiBTVEwKKyAgLy8gY29udGFpbmVycy4gIEEgZGVmYXVsdC1jb25z
dHJ1Y3RlZCBtYXRjaGVyIGlzIG5vdCB5ZXQgaW5pdGlhbGl6ZWQuICBZb3UKKyAgLy8gY2Fubm90
IHVzZSBpdCB1bnRpbCBhIHZhbGlkIHZhbHVlIGhhcyBiZWVuIGFzc2lnbmVkIHRvIGl0LgorICBl
eHBsaWNpdCBNYXRjaGVyKCkge30gIC8vIE5PTElOVAorCisgIC8vIENvbnN0cnVjdHMgYSBtYXRj
aGVyIGZyb20gaXRzIGltcGxlbWVudGF0aW9uLgorICBleHBsaWNpdCBNYXRjaGVyKGNvbnN0IE1h
dGNoZXJJbnRlcmZhY2U8VD4qIGltcGwpCisgICAgICA6IGludGVybmFsOjpNYXRjaGVyQmFzZTxU
PihpbXBsKSB7fQorCisgIC8vIEltcGxpY2l0IGNvbnN0cnVjdG9yIGhlcmUgYWxsb3dzIHBlb3Bs
ZSB0byB3cml0ZQorICAvLyBFWFBFQ1RfQ0FMTChmb28sIEJhcig1KSkgaW5zdGVhZCBvZiBFWFBF
Q1RfQ0FMTChmb28sIEJhcihFcSg1KSkpIHNvbWV0aW1lcworICBNYXRjaGVyKFQgdmFsdWUpOyAg
Ly8gTk9MSU5UCit9OworCisvLyBUaGUgZm9sbG93aW5nIHR3byBzcGVjaWFsaXphdGlvbnMgYWxs
b3cgdGhlIHVzZXIgdG8gd3JpdGUgc3RyCisvLyBpbnN0ZWFkIG9mIEVxKHN0cikgYW5kICJmb28i
IGluc3RlYWQgb2YgRXEoImZvbyIpIHdoZW4gYSBzdHJpbmcKKy8vIG1hdGNoZXIgaXMgZXhwZWN0
ZWQuCit0ZW1wbGF0ZSA8PgorY2xhc3MgR1RFU1RfQVBJXyBNYXRjaGVyPGNvbnN0IGludGVybmFs
OjpzdHJpbmcmPgorICAgIDogcHVibGljIGludGVybmFsOjpNYXRjaGVyQmFzZTxjb25zdCBpbnRl
cm5hbDo6c3RyaW5nJj4geworIHB1YmxpYzoKKyAgTWF0Y2hlcigpIHt9CisKKyAgZXhwbGljaXQg
TWF0Y2hlcihjb25zdCBNYXRjaGVySW50ZXJmYWNlPGNvbnN0IGludGVybmFsOjpzdHJpbmcmPiog
aW1wbCkKKyAgICAgIDogaW50ZXJuYWw6Ok1hdGNoZXJCYXNlPGNvbnN0IGludGVybmFsOjpzdHJp
bmcmPihpbXBsKSB7fQorCisgIC8vIEFsbG93cyB0aGUgdXNlciB0byB3cml0ZSBzdHIgaW5zdGVh
ZCBvZiBFcShzdHIpIHNvbWV0aW1lcywgd2hlcmUKKyAgLy8gc3RyIGlzIGEgc3RyaW5nIG9iamVj
dC4KKyAgTWF0Y2hlcihjb25zdCBpbnRlcm5hbDo6c3RyaW5nJiBzKTsgIC8vIE5PTElOVAorCisg
IC8vIEFsbG93cyB0aGUgdXNlciB0byB3cml0ZSAiZm9vIiBpbnN0ZWFkIG9mIEVxKCJmb28iKSBz
b21ldGltZXMuCisgIE1hdGNoZXIoY29uc3QgY2hhciogcyk7ICAvLyBOT0xJTlQKK307CisKK3Rl
bXBsYXRlIDw+CitjbGFzcyBHVEVTVF9BUElfIE1hdGNoZXI8aW50ZXJuYWw6OnN0cmluZz4KKyAg
ICA6IHB1YmxpYyBpbnRlcm5hbDo6TWF0Y2hlckJhc2U8aW50ZXJuYWw6OnN0cmluZz4geworIHB1
YmxpYzoKKyAgTWF0Y2hlcigpIHt9CisKKyAgZXhwbGljaXQgTWF0Y2hlcihjb25zdCBNYXRjaGVy
SW50ZXJmYWNlPGludGVybmFsOjpzdHJpbmc+KiBpbXBsKQorICAgICAgOiBpbnRlcm5hbDo6TWF0
Y2hlckJhc2U8aW50ZXJuYWw6OnN0cmluZz4oaW1wbCkge30KKworICAvLyBBbGxvd3MgdGhlIHVz
ZXIgdG8gd3JpdGUgc3RyIGluc3RlYWQgb2YgRXEoc3RyKSBzb21ldGltZXMsIHdoZXJlCisgIC8v
IHN0ciBpcyBhIHN0cmluZyBvYmplY3QuCisgIE1hdGNoZXIoY29uc3QgaW50ZXJuYWw6OnN0cmlu
ZyYgcyk7ICAvLyBOT0xJTlQKKworICAvLyBBbGxvd3MgdGhlIHVzZXIgdG8gd3JpdGUgImZvbyIg
aW5zdGVhZCBvZiBFcSgiZm9vIikgc29tZXRpbWVzLgorICBNYXRjaGVyKGNvbnN0IGNoYXIqIHMp
OyAgLy8gTk9MSU5UCit9OworCisjaWYgR1RFU1RfSEFTX1NUUklOR19QSUVDRV8KKy8vIFRoZSBm
b2xsb3dpbmcgdHdvIHNwZWNpYWxpemF0aW9ucyBhbGxvdyB0aGUgdXNlciB0byB3cml0ZSBzdHIK
Ky8vIGluc3RlYWQgb2YgRXEoc3RyKSBhbmQgImZvbyIgaW5zdGVhZCBvZiBFcSgiZm9vIikgd2hl
biBhIFN0cmluZ1BpZWNlCisvLyBtYXRjaGVyIGlzIGV4cGVjdGVkLgordGVtcGxhdGUgPD4KK2Ns
YXNzIEdURVNUX0FQSV8gTWF0Y2hlcjxjb25zdCBTdHJpbmdQaWVjZSY+CisgICAgOiBwdWJsaWMg
aW50ZXJuYWw6Ok1hdGNoZXJCYXNlPGNvbnN0IFN0cmluZ1BpZWNlJj4geworIHB1YmxpYzoKKyAg
TWF0Y2hlcigpIHt9CisKKyAgZXhwbGljaXQgTWF0Y2hlcihjb25zdCBNYXRjaGVySW50ZXJmYWNl
PGNvbnN0IFN0cmluZ1BpZWNlJj4qIGltcGwpCisgICAgICA6IGludGVybmFsOjpNYXRjaGVyQmFz
ZTxjb25zdCBTdHJpbmdQaWVjZSY+KGltcGwpIHt9CisKKyAgLy8gQWxsb3dzIHRoZSB1c2VyIHRv
IHdyaXRlIHN0ciBpbnN0ZWFkIG9mIEVxKHN0cikgc29tZXRpbWVzLCB3aGVyZQorICAvLyBzdHIg
aXMgYSBzdHJpbmcgb2JqZWN0LgorICBNYXRjaGVyKGNvbnN0IGludGVybmFsOjpzdHJpbmcmIHMp
OyAgLy8gTk9MSU5UCisKKyAgLy8gQWxsb3dzIHRoZSB1c2VyIHRvIHdyaXRlICJmb28iIGluc3Rl
YWQgb2YgRXEoImZvbyIpIHNvbWV0aW1lcy4KKyAgTWF0Y2hlcihjb25zdCBjaGFyKiBzKTsgIC8v
IE5PTElOVAorCisgIC8vIEFsbG93cyB0aGUgdXNlciB0byBwYXNzIFN0cmluZ1BpZWNlcyBkaXJl
Y3RseS4KKyAgTWF0Y2hlcihTdHJpbmdQaWVjZSBzKTsgIC8vIE5PTElOVAorfTsKKwordGVtcGxh
dGUgPD4KK2NsYXNzIEdURVNUX0FQSV8gTWF0Y2hlcjxTdHJpbmdQaWVjZT4KKyAgICA6IHB1Ymxp
YyBpbnRlcm5hbDo6TWF0Y2hlckJhc2U8U3RyaW5nUGllY2U+IHsKKyBwdWJsaWM6CisgIE1hdGNo
ZXIoKSB7fQorCisgIGV4cGxpY2l0IE1hdGNoZXIoY29uc3QgTWF0Y2hlckludGVyZmFjZTxTdHJp
bmdQaWVjZT4qIGltcGwpCisgICAgICA6IGludGVybmFsOjpNYXRjaGVyQmFzZTxTdHJpbmdQaWVj
ZT4oaW1wbCkge30KKworICAvLyBBbGxvd3MgdGhlIHVzZXIgdG8gd3JpdGUgc3RyIGluc3RlYWQg
b2YgRXEoc3RyKSBzb21ldGltZXMsIHdoZXJlCisgIC8vIHN0ciBpcyBhIHN0cmluZyBvYmplY3Qu
CisgIE1hdGNoZXIoY29uc3QgaW50ZXJuYWw6OnN0cmluZyYgcyk7ICAvLyBOT0xJTlQKKworICAv
LyBBbGxvd3MgdGhlIHVzZXIgdG8gd3JpdGUgImZvbyIgaW5zdGVhZCBvZiBFcSgiZm9vIikgc29t
ZXRpbWVzLgorICBNYXRjaGVyKGNvbnN0IGNoYXIqIHMpOyAgLy8gTk9MSU5UCisKKyAgLy8gQWxs
b3dzIHRoZSB1c2VyIHRvIHBhc3MgU3RyaW5nUGllY2VzIGRpcmVjdGx5LgorICBNYXRjaGVyKFN0
cmluZ1BpZWNlIHMpOyAgLy8gTk9MSU5UCit9OworI2VuZGlmICAvLyBHVEVTVF9IQVNfU1RSSU5H
X1BJRUNFXworCisvLyBUaGUgUG9seW1vcnBoaWNNYXRjaGVyIGNsYXNzIHRlbXBsYXRlIG1ha2Vz
IGl0IGVhc3kgdG8gaW1wbGVtZW50IGEKKy8vIHBvbHltb3JwaGljIG1hdGNoZXIgKGkuZS4gYSBt
YXRjaGVyIHRoYXQgY2FuIG1hdGNoIHZhbHVlcyBvZiBtb3JlCisvLyB0aGFuIG9uZSB0eXBlLCBl
LmcuIEVxKG4pIGFuZCBOb3ROdWxsKCkpLgorLy8KKy8vIFRvIGRlZmluZSBhIHBvbHltb3JwaGlj
IG1hdGNoZXIsIGEgdXNlciBzaG91bGQgcHJvdmlkZSBhbiBJbXBsCisvLyBjbGFzcyB0aGF0IGhh
cyBhIERlc2NyaWJlVG8oKSBtZXRob2QgYW5kIGEgRGVzY3JpYmVOZWdhdGlvblRvKCkKKy8vIG1l
dGhvZCwgYW5kIGRlZmluZSBhIG1lbWJlciBmdW5jdGlvbiAob3IgbWVtYmVyIGZ1bmN0aW9uIHRl
bXBsYXRlKQorLy8KKy8vICAgYm9vbCBNYXRjaEFuZEV4cGxhaW4oY29uc3QgVmFsdWUmIHZhbHVl
LAorLy8gICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5l
cikgY29uc3Q7CisvLworLy8gU2VlIHRoZSBkZWZpbml0aW9uIG9mIE5vdE51bGwoKSBmb3IgYSBj
b21wbGV0ZSBleGFtcGxlLgordGVtcGxhdGUgPGNsYXNzIEltcGw+CitjbGFzcyBQb2x5bW9ycGhp
Y01hdGNoZXIgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgUG9seW1vcnBoaWNNYXRjaGVyKGNvbnN0
IEltcGwmIGFuX2ltcGwpIDogaW1wbF8oYW5faW1wbCkge30KKworICAvLyBSZXR1cm5zIGEgbXV0
YWJsZSByZWZlcmVuY2UgdG8gdGhlIHVuZGVybHlpbmcgbWF0Y2hlcgorICAvLyBpbXBsZW1lbnRh
dGlvbiBvYmplY3QuCisgIEltcGwmIG11dGFibGVfaW1wbCgpIHsgcmV0dXJuIGltcGxfOyB9CisK
KyAgLy8gUmV0dXJucyBhbiBpbW11dGFibGUgcmVmZXJlbmNlIHRvIHRoZSB1bmRlcmx5aW5nIG1h
dGNoZXIKKyAgLy8gaW1wbGVtZW50YXRpb24gb2JqZWN0LgorICBjb25zdCBJbXBsJiBpbXBsKCkg
Y29uc3QgeyByZXR1cm4gaW1wbF87IH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgb3Bl
cmF0b3IgTWF0Y2hlcjxUPigpIGNvbnN0IHsKKyAgICByZXR1cm4gTWF0Y2hlcjxUPihuZXcgTW9u
b21vcnBoaWNJbXBsPFQ+KGltcGxfKSk7CisgIH0KKworIHByaXZhdGU6CisgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgorICBjbGFzcyBNb25vbW9ycGhpY0ltcGwgOiBwdWJsaWMgTWF0Y2hlckludGVy
ZmFjZTxUPiB7CisgICBwdWJsaWM6CisgICAgZXhwbGljaXQgTW9ub21vcnBoaWNJbXBsKGNvbnN0
IEltcGwmIGltcGwpIDogaW1wbF8oaW1wbCkge30KKworICAgIHZpcnR1YWwgdm9pZCBEZXNjcmli
ZVRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgeworICAgICAgaW1wbF8uRGVzY3JpYmVUbyhv
cyk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIERlc2NyaWJlTmVnYXRpb25Ubyg6OnN0ZDo6
b3N0cmVhbSogb3MpIGNvbnN0IHsKKyAgICAgIGltcGxfLkRlc2NyaWJlTmVnYXRpb25Ubyhvcyk7
CisgICAgfQorCisgICAgdmlydHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbihUIHgsIE1hdGNoUmVz
dWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBjb25zdCB7CisgICAgICByZXR1cm4gaW1wbF8uTWF0Y2hB
bmRFeHBsYWluKHgsIGxpc3RlbmVyKTsKKyAgICB9CisKKyAgIHByaXZhdGU6CisgICAgY29uc3Qg
SW1wbCBpbXBsXzsKKworICAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oTW9ub21vcnBoaWNJbXBs
KTsKKyAgfTsKKworICBJbXBsIGltcGxfOworCisgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oUG9s
eW1vcnBoaWNNYXRjaGVyKTsKK307CisKKy8vIENyZWF0ZXMgYSBtYXRjaGVyIGZyb20gaXRzIGlt
cGxlbWVudGF0aW9uLiAgVGhpcyBpcyBlYXNpZXIgdG8gdXNlCisvLyB0aGFuIHRoZSBNYXRjaGVy
PFQ+IGNvbnN0cnVjdG9yIGFzIGl0IGRvZXNuJ3QgcmVxdWlyZSB5b3UgdG8KKy8vIGV4cGxpY2l0
bHkgd3JpdGUgdGhlIHRlbXBsYXRlIGFyZ3VtZW50LCBlLmcuCisvLworLy8gICBNYWtlTWF0Y2hl
cihmb28pOworLy8gdnMKKy8vICAgTWF0Y2hlcjxjb25zdCBzdHJpbmcmPihmb28pOwordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CitpbmxpbmUgTWF0Y2hlcjxUPiBNYWtlTWF0Y2hlcihjb25zdCBNYXRj
aGVySW50ZXJmYWNlPFQ+KiBpbXBsKSB7CisgIHJldHVybiBNYXRjaGVyPFQ+KGltcGwpOworfQor
CisvLyBDcmVhdGVzIGEgcG9seW1vcnBoaWMgbWF0Y2hlciBmcm9tIGl0cyBpbXBsZW1lbnRhdGlv
bi4gIFRoaXMgaXMKKy8vIGVhc2llciB0byB1c2UgdGhhbiB0aGUgUG9seW1vcnBoaWNNYXRjaGVy
PEltcGw+IGNvbnN0cnVjdG9yIGFzIGl0CisvLyBkb2Vzbid0IHJlcXVpcmUgeW91IHRvIGV4cGxp
Y2l0bHkgd3JpdGUgdGhlIHRlbXBsYXRlIGFyZ3VtZW50LCBlLmcuCisvLworLy8gICBNYWtlUG9s
eW1vcnBoaWNNYXRjaGVyKGZvbyk7CisvLyB2cworLy8gICBQb2x5bW9ycGhpY01hdGNoZXI8VHlw
ZU9mRm9vPihmb28pOwordGVtcGxhdGUgPGNsYXNzIEltcGw+CitpbmxpbmUgUG9seW1vcnBoaWNN
YXRjaGVyPEltcGw+IE1ha2VQb2x5bW9ycGhpY01hdGNoZXIoY29uc3QgSW1wbCYgaW1wbCkgewor
ICByZXR1cm4gUG9seW1vcnBoaWNNYXRjaGVyPEltcGw+KGltcGwpOworfQorCisvLyBBbnl0aGlu
ZyBpbnNpZGUgdGhlICdpbnRlcm5hbCcgbmFtZXNwYWNlIElTIElOVEVSTkFMIElNUExFTUVOVEFU
SU9OCisvLyBhbmQgTVVTVCBOT1QgQkUgVVNFRCBJTiBVU0VSIENPREUhISEKK25hbWVzcGFjZSBp
bnRlcm5hbCB7CisKKy8vIFRoZSBNYXRjaGVyQ2FzdEltcGwgY2xhc3MgdGVtcGxhdGUgaXMgYSBo
ZWxwZXIgZm9yIGltcGxlbWVudGluZworLy8gTWF0Y2hlckNhc3QoKS4gIFdlIG5lZWQgdGhpcyBo
ZWxwZXIgaW4gb3JkZXIgdG8gcGFydGlhbGx5CisvLyBzcGVjaWFsaXplIHRoZSBpbXBsZW1lbnRh
dGlvbiBvZiBNYXRjaGVyQ2FzdCgpIChDKysgYWxsb3dzCisvLyBjbGFzcy9zdHJ1Y3QgdGVtcGxh
dGVzIHRvIGJlIHBhcnRpYWxseSBzcGVjaWFsaXplZCwgYnV0IG5vdAorLy8gZnVuY3Rpb24gdGVt
cGxhdGVzLikuCisKKy8vIFRoaXMgZ2VuZXJhbCB2ZXJzaW9uIGlzIHVzZWQgd2hlbiBNYXRjaGVy
Q2FzdCgpJ3MgYXJndW1lbnQgaXMgYQorLy8gcG9seW1vcnBoaWMgbWF0Y2hlciAoaS5lLiBzb21l
dGhpbmcgdGhhdCBjYW4gYmUgY29udmVydGVkIHRvIGEKKy8vIE1hdGNoZXIgYnV0IGlzIG5vdCBv
bmUgeWV0OyBmb3IgZXhhbXBsZSwgRXEodmFsdWUpKSBvciBhIHZhbHVlIChmb3IKKy8vIGV4YW1w
bGUsICJoZWxsbyIpLgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIE0+CitjbGFzcyBN
YXRjaGVyQ2FzdEltcGwgeworIHB1YmxpYzoKKyAgc3RhdGljIE1hdGNoZXI8VD4gQ2FzdChjb25z
dCBNJiBwb2x5bW9ycGhpY19tYXRjaGVyX29yX3ZhbHVlKSB7CisgICAgLy8gTSBjYW4gYmUgYSBw
b2x5bW9yaGljIG1hdGNoZXIsIGluIHdoaWNoIGNhc2Ugd2Ugd2FudCB0byB1c2UKKyAgICAvLyBp
dHMgY29udmVyc2lvbiBvcGVyYXRvciB0byBjcmVhdGUgTWF0Y2hlcjxUPi4gIE9yIGl0IGNhbiBi
ZSBhIHZhbHVlCisgICAgLy8gdGhhdCBzaG91bGQgYmUgcGFzc2VkIHRvIHRoZSBNYXRjaGVyPFQ+
J3MgY29uc3RydWN0b3IuCisgICAgLy8KKyAgICAvLyBXZSBjYW4ndCBjYWxsIE1hdGNoZXI8VD4o
cG9seW1vcnBoaWNfbWF0Y2hlcl9vcl92YWx1ZSkgd2hlbiBNIGlzIGEKKyAgICAvLyBwb2x5bW9y
cGhpYyBtYXRjaGVyIGJlY2F1c2UgaXQnbGwgYmUgYW1iaWd1b3VzIGlmIFQgaGFzIGFuIGltcGxp
Y2l0CisgICAgLy8gY29uc3RydWN0b3IgZnJvbSBNICh0aGlzIHVzdWFsbHkgaGFwcGVucyB3aGVu
IFQgaGFzIGFuIGltcGxpY2l0CisgICAgLy8gY29uc3RydWN0b3IgZnJvbSBhbnkgdHlwZSkuCisg
ICAgLy8KKyAgICAvLyBJdCB3b24ndCB3b3JrIHRvIHVuY29uZGl0aW9uYWxseSBpbXBsaWN0X2Nh
c3QKKyAgICAvLyBwb2x5bW9ycGhpY19tYXRjaGVyX29yX3ZhbHVlIHRvIE1hdGNoZXI8VD4gYmVj
YXVzZSBpdCB3b24ndCB0cmlnZ2VyCisgICAgLy8gYSB1c2VyLWRlZmluZWQgY29udmVyc2lvbiBm
cm9tIE0gdG8gVCBpZiBvbmUgZXhpc3RzIChhc3N1bWluZyBNIGlzCisgICAgLy8gYSB2YWx1ZSku
CisgICAgcmV0dXJuIENhc3RJbXBsKAorICAgICAgICBwb2x5bW9ycGhpY19tYXRjaGVyX29yX3Zh
bHVlLAorICAgICAgICBCb29sZWFuQ29uc3RhbnQ8CisgICAgICAgICAgICBpbnRlcm5hbDo6SW1w
bGljaXRseUNvbnZlcnRpYmxlPE0sIE1hdGNoZXI8VD4gPjo6dmFsdWU+KCkpOworICB9CisKKyBw
cml2YXRlOgorICBzdGF0aWMgTWF0Y2hlcjxUPiBDYXN0SW1wbChjb25zdCBNJiB2YWx1ZSwgQm9v
bGVhbkNvbnN0YW50PGZhbHNlPikgeworICAgIC8vIE0gY2FuJ3QgYmUgaW1wbGljaXRseSBjb252
ZXJ0ZWQgdG8gTWF0Y2hlcjxUPiwgc28gTSBpc24ndCBhIHBvbHltb3JwaGljCisgICAgLy8gbWF0
Y2hlci4gIEl0IG11c3QgYmUgYSB2YWx1ZSB0aGVuLiAgVXNlIGRpcmVjdCBpbml0aWFsaXphdGlv
biB0byBjcmVhdGUKKyAgICAvLyBhIG1hdGNoZXIuCisgICAgcmV0dXJuIE1hdGNoZXI8VD4oSW1w
bGljaXRDYXN0XzxUPih2YWx1ZSkpOworICB9CisKKyAgc3RhdGljIE1hdGNoZXI8VD4gQ2FzdElt
cGwoY29uc3QgTSYgcG9seW1vcnBoaWNfbWF0Y2hlcl9vcl92YWx1ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQm9vbGVhbkNvbnN0YW50PHRydWU+KSB7CisgICAgLy8gTSBpcyBpbXBs
aWNpdGx5IGNvbnZlcnRpYmxlIHRvIE1hdGNoZXI8VD4sIHdoaWNoIG1lYW5zIHRoYXQgZWl0aGVy
CisgICAgLy8gTSBpcyBhIHBvbHltb3JocGljIG1hdGNoZXIgb3IgTWF0Y2hlcjxUPiBoYXMgYW4g
aW1wbGljaXQgY29uc3RydWN0b3IKKyAgICAvLyBmcm9tIE0uICBJbiBib3RoIGNhc2VzIHVzaW5n
IHRoZSBpbXBsaWNpdCBjb252ZXJzaW9uIHdpbGwgcHJvZHVjZSBhCisgICAgLy8gbWF0Y2hlci4K
KyAgICAvLworICAgIC8vIEV2ZW4gaWYgVCBoYXMgYW4gaW1wbGljaXQgY29uc3RydWN0b3IgZnJv
bSBNLCBpdCB3b24ndCBiZSBjYWxsZWQgYmVjYXVzZQorICAgIC8vIGNyZWF0aW5nIE1hdGNoZXI8
VD4gd291bGQgcmVxdWlyZSBhIGNoYWluIG9mIHR3byB1c2VyLWRlZmluZWQgY29udmVyc2lvbnMK
KyAgICAvLyAoZmlyc3QgdG8gY3JlYXRlIFQgZnJvbSBNIGFuZCB0aGVuIHRvIGNyZWF0ZSBNYXRj
aGVyPFQ+IGZyb20gVCkuCisgICAgcmV0dXJuIHBvbHltb3JwaGljX21hdGNoZXJfb3JfdmFsdWU7
CisgIH0KK307CisKKy8vIFRoaXMgbW9yZSBzcGVjaWFsaXplZCB2ZXJzaW9uIGlzIHVzZWQgd2hl
biBNYXRjaGVyQ2FzdCgpJ3MgYXJndW1lbnQKKy8vIGlzIGFscmVhZHkgYSBNYXRjaGVyLiAgVGhp
cyBvbmx5IGNvbXBpbGVzIHdoZW4gdHlwZSBUIGNhbiBiZQorLy8gc3RhdGljYWxseSBjb252ZXJ0
ZWQgdG8gdHlwZSBVLgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CitjbGFzcyBN
YXRjaGVyQ2FzdEltcGw8VCwgTWF0Y2hlcjxVPiA+IHsKKyBwdWJsaWM6CisgIHN0YXRpYyBNYXRj
aGVyPFQ+IENhc3QoY29uc3QgTWF0Y2hlcjxVPiYgc291cmNlX21hdGNoZXIpIHsKKyAgICByZXR1
cm4gTWF0Y2hlcjxUPihuZXcgSW1wbChzb3VyY2VfbWF0Y2hlcikpOworICB9CisKKyBwcml2YXRl
OgorICBjbGFzcyBJbXBsIDogcHVibGljIE1hdGNoZXJJbnRlcmZhY2U8VD4geworICAgcHVibGlj
OgorICAgIGV4cGxpY2l0IEltcGwoY29uc3QgTWF0Y2hlcjxVPiYgc291cmNlX21hdGNoZXIpCisg
ICAgICAgIDogc291cmNlX21hdGNoZXJfKHNvdXJjZV9tYXRjaGVyKSB7fQorCisgICAgLy8gV2Ug
ZGVsZWdhdGUgdGhlIG1hdGNoaW5nIGxvZ2ljIHRvIHRoZSBzb3VyY2UgbWF0Y2hlci4KKyAgICB2
aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWluKFQgeCwgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlz
dGVuZXIpIGNvbnN0IHsKKyAgICAgIHJldHVybiBzb3VyY2VfbWF0Y2hlcl8uTWF0Y2hBbmRFeHBs
YWluKHN0YXRpY19jYXN0PFU+KHgpLCBsaXN0ZW5lcik7CisgICAgfQorCisgICAgdmlydHVhbCB2
b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7CisgICAgICBzb3VyY2Vf
bWF0Y2hlcl8uRGVzY3JpYmVUbyhvcyk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIERlc2Ny
aWJlTmVnYXRpb25Ubyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKKyAgICAgIHNvdXJjZV9t
YXRjaGVyXy5EZXNjcmliZU5lZ2F0aW9uVG8ob3MpOworICAgIH0KKworICAgcHJpdmF0ZToKKyAg
ICBjb25zdCBNYXRjaGVyPFU+IHNvdXJjZV9tYXRjaGVyXzsKKworICAgIEdURVNUX0RJU0FMTE9X
X0FTU0lHTl8oSW1wbCk7CisgIH07Cit9OworCisvLyBUaGlzIGV2ZW4gbW9yZSBzcGVjaWFsaXpl
ZCB2ZXJzaW9uIGlzIHVzZWQgZm9yIGVmZmljaWVudGx5IGNhc3RpbmcKKy8vIGEgbWF0Y2hlciB0
byBpdHMgb3duIHR5cGUuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIE1hdGNoZXJDYXN0
SW1wbDxULCBNYXRjaGVyPFQ+ID4geworIHB1YmxpYzoKKyAgc3RhdGljIE1hdGNoZXI8VD4gQ2Fz
dChjb25zdCBNYXRjaGVyPFQ+JiBtYXRjaGVyKSB7IHJldHVybiBtYXRjaGVyOyB9Cit9OworCit9
ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKKworLy8gSW4gb3JkZXIgdG8gYmUgc2FmZSBhbmQgY2xl
YXIsIGNhc3RpbmcgYmV0d2VlbiBkaWZmZXJlbnQgbWF0Y2hlcgorLy8gdHlwZXMgaXMgZG9uZSBl
eHBsaWNpdGx5IHZpYSBNYXRjaGVyQ2FzdDxUPihtKSwgd2hpY2ggdGFrZXMgYQorLy8gbWF0Y2hl
ciBtIGFuZCByZXR1cm5zIGEgTWF0Y2hlcjxUPi4gIEl0IGNvbXBpbGVzIG9ubHkgd2hlbiBUIGNh
biBiZQorLy8gc3RhdGljYWxseSBjb252ZXJ0ZWQgdG8gdGhlIGFyZ3VtZW50IHR5cGUgb2YgbS4K
K3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBNPgoraW5saW5lIE1hdGNoZXI8VD4gTWF0
Y2hlckNhc3QoY29uc3QgTSYgbWF0Y2hlcikgeworICByZXR1cm4gaW50ZXJuYWw6Ok1hdGNoZXJD
YXN0SW1wbDxULCBNPjo6Q2FzdChtYXRjaGVyKTsKK30KKworLy8gSW1wbGVtZW50cyBTYWZlTWF0
Y2hlckNhc3QoKS4KKy8vCisvLyBXZSB1c2UgYW4gaW50ZXJtZWRpYXRlIGNsYXNzIHRvIGRvIHRo
ZSBhY3R1YWwgc2FmZSBjYXN0aW5nIGFzIE5va2lhJ3MKKy8vIFN5bWJpYW4gY29tcGlsZXIgY2Fu
bm90IGRlY2lkZSBiZXR3ZWVuCisvLyB0ZW1wbGF0ZSA8VCwgTT4gLi4uIChNKSBhbmQKKy8vIHRl
bXBsYXRlIDxULCBVPiAuLi4gKGNvbnN0IE1hdGNoZXI8VT4mKQorLy8gZm9yIGZ1bmN0aW9uIHRl
bXBsYXRlcyBidXQgY2FuIGZvciBtZW1iZXIgZnVuY3Rpb24gdGVtcGxhdGVzLgordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CitjbGFzcyBTYWZlTWF0Y2hlckNhc3RJbXBsIHsKKyBwdWJsaWM6CisgIC8v
IFRoaXMgb3ZlcmxvYWQgaGFuZGxlcyBwb2x5bW9ycGhpYyBtYXRjaGVycyBhbmQgdmFsdWVzIG9u
bHkgc2luY2UKKyAgLy8gbW9ub21vcnBoaWMgbWF0Y2hlcnMgYXJlIGhhbmRsZWQgYnkgdGhlIG5l
eHQgb25lLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTT4KKyAgc3RhdGljIGlubGluZSBNYXRjaGVy
PFQ+IENhc3QoY29uc3QgTSYgcG9seW1vcnBoaWNfbWF0Y2hlcl9vcl92YWx1ZSkgeworICAgIHJl
dHVybiBpbnRlcm5hbDo6TWF0Y2hlckNhc3RJbXBsPFQsIE0+OjpDYXN0KHBvbHltb3JwaGljX21h
dGNoZXJfb3JfdmFsdWUpOworICB9CisKKyAgLy8gVGhpcyBvdmVybG9hZCBoYW5kbGVzIG1vbm9t
b3JwaGljIG1hdGNoZXJzLgorICAvLworICAvLyBJbiBnZW5lcmFsLCBpZiB0eXBlIFQgY2FuIGJl
IGltcGxpY2l0bHkgY29udmVydGVkIHRvIHR5cGUgVSwgd2UgY2FuCisgIC8vIHNhZmVseSBjb252
ZXJ0IGEgTWF0Y2hlcjxVPiB0byBhIE1hdGNoZXI8VD4gKGkuZS4gTWF0Y2hlciBpcworICAvLyBj
b250cmF2YXJpYW50KToganVzdCBrZWVwIGEgY29weSBvZiB0aGUgb3JpZ2luYWwgTWF0Y2hlcjxV
PiwgY29udmVydCB0aGUKKyAgLy8gYXJndW1lbnQgZnJvbSB0eXBlIFQgdG8gVSwgYW5kIHRoZW4g
cGFzcyBpdCB0byB0aGUgdW5kZXJseWluZyBNYXRjaGVyPFU+LgorICAvLyBUaGUgb25seSBleGNl
cHRpb24gaXMgd2hlbiBVIGlzIGEgcmVmZXJlbmNlIGFuZCBUIGlzIG5vdCwgYXMgdGhlCisgIC8v
IHVuZGVybHlpbmcgTWF0Y2hlcjxVPiBtYXkgYmUgaW50ZXJlc3RlZCBpbiB0aGUgYXJndW1lbnQn
cyBhZGRyZXNzLCB3aGljaAorICAvLyBpcyBub3QgcHJlc2VydmVkIGluIHRoZSBjb252ZXJzaW9u
IGZyb20gVCB0byBVLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KKyAgc3RhdGljIGlubGluZSBN
YXRjaGVyPFQ+IENhc3QoY29uc3QgTWF0Y2hlcjxVPiYgbWF0Y2hlcikgeworICAgIC8vIEVuZm9y
Y2UgdGhhdCBUIGNhbiBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byBVLgorICAgIEdURVNUX0NP
TVBJTEVfQVNTRVJUXygoaW50ZXJuYWw6OkltcGxpY2l0bHlDb252ZXJ0aWJsZTxULCBVPjo6dmFs
dWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBUX211c3RfYmVfaW1wbGljaXRseV9jb252
ZXJ0aWJsZV90b19VKTsKKyAgICAvLyBFbmZvcmNlIHRoYXQgd2UgYXJlIG5vdCBjb252ZXJ0aW5n
IGEgbm9uLXJlZmVyZW5jZSB0eXBlIFQgdG8gYSByZWZlcmVuY2UKKyAgICAvLyB0eXBlIFUuCisg
ICAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKAorICAgICAgICBpbnRlcm5hbDo6aXNfcmVmZXJlbmNl
PFQ+Ojp2YWx1ZSB8fCAhaW50ZXJuYWw6OmlzX3JlZmVyZW5jZTxVPjo6dmFsdWUsCisgICAgICAg
IGNhbm5vdF9jb252ZXJ0X25vbl9yZWZlcmVudGNlX2FyZ190b19yZWZlcmVuY2UpOworICAgIC8v
IEluIGNhc2UgYm90aCBUIGFuZCBVIGFyZSBhcml0aG1ldGljIHR5cGVzLCBlbmZvcmNlIHRoYXQg
dGhlCisgICAgLy8gY29udmVyc2lvbiBpcyBub3QgbG9zc3kuCisgICAgdHlwZWRlZiBHVEVTVF9S
RU1PVkVfUkVGRVJFTkNFX0FORF9DT05TVF8oVCkgUmF3VDsKKyAgICB0eXBlZGVmIEdURVNUX1JF
TU9WRV9SRUZFUkVOQ0VfQU5EX0NPTlNUXyhVKSBSYXdVOworICAgIGNvbnN0IGJvb2wga1RJc090
aGVyID0gR01PQ0tfS0lORF9PRl8oUmF3VCkgPT0gaW50ZXJuYWw6OmtPdGhlcjsKKyAgICBjb25z
dCBib29sIGtVSXNPdGhlciA9IEdNT0NLX0tJTkRfT0ZfKFJhd1UpID09IGludGVybmFsOjprT3Ro
ZXI7CisgICAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKAorICAgICAgICBrVElzT3RoZXIgfHwga1VJ
c090aGVyIHx8CisgICAgICAgIChpbnRlcm5hbDo6TG9zc2xlc3NBcml0aG1ldGljQ29udmVydGli
bGU8UmF3VCwgUmF3VT46OnZhbHVlKSwKKyAgICAgICAgY29udmVyc2lvbl9vZl9hcml0aG1ldGlj
X3R5cGVzX211c3RfYmVfbG9zc2xlc3MpOworICAgIHJldHVybiBNYXRjaGVyQ2FzdDxUPihtYXRj
aGVyKTsKKyAgfQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIE0+Citpbmxp
bmUgTWF0Y2hlcjxUPiBTYWZlTWF0Y2hlckNhc3QoY29uc3QgTSYgcG9seW1vcnBoaWNfbWF0Y2hl
cikgeworICByZXR1cm4gU2FmZU1hdGNoZXJDYXN0SW1wbDxUPjo6Q2FzdChwb2x5bW9ycGhpY19t
YXRjaGVyKTsKK30KKworLy8gQTxUPigpIHJldHVybnMgYSBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBh
bnkgdmFsdWUgb2YgdHlwZSBULgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitNYXRjaGVyPFQ+IEEo
KTsKKworLy8gQW55dGhpbmcgaW5zaWRlIHRoZSAnaW50ZXJuYWwnIG5hbWVzcGFjZSBJUyBJTlRF
Uk5BTCBJTVBMRU1FTlRBVElPTgorLy8gYW5kIE1VU1QgTk9UIEJFIFVTRUQgSU4gVVNFUiBDT0RF
ISEhCituYW1lc3BhY2UgaW50ZXJuYWwgeworCisvLyBJZiB0aGUgZXhwbGFuYXRpb24gaXMgbm90
IGVtcHR5LCBwcmludHMgaXQgdG8gdGhlIG9zdHJlYW0uCitpbmxpbmUgdm9pZCBQcmludElmTm90
RW1wdHkoY29uc3Qgc3RkOjpzdHJpbmcmIGV4cGxhbmF0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBpZiAoZXhwbGFuYXRpb24gIT0gIiIg
JiYgb3MgIT0gTlVMTCkgeworICAgICpvcyA8PCAiLCAiIDw8IGV4cGxhbmF0aW9uOworICB9Cit9
CisKKy8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gdHlwZSBuYW1lIGlzIGVhc3kgdG8gcmVh
ZCBieSBhIGh1bWFuLgorLy8gVGhpcyBpcyB1c2VkIHRvIGRlY2lkZSB3aGV0aGVyIHByaW50aW5n
IHRoZSB0eXBlIG9mIGEgdmFsdWUgbWlnaHQKKy8vIGJlIGhlbHBmdWwuCitpbmxpbmUgYm9vbCBJ
c1JlYWRhYmxlVHlwZU5hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIHR5cGVfbmFtZSkgeworICAvLyBX
ZSBjb25zaWRlciBhIHR5cGUgbmFtZSByZWFkYWJsZSBpZiBpdCdzIHNob3J0IG9yIGRvZXNuJ3Qg
Y29udGFpbgorICAvLyBhIHRlbXBsYXRlIG9yIGZ1bmN0aW9uIHR5cGUuCisgIHJldHVybiAodHlw
ZV9uYW1lLmxlbmd0aCgpIDw9IDIwIHx8CisgICAgICAgICAgdHlwZV9uYW1lLmZpbmRfZmlyc3Rf
b2YoIjwoIikgPT0gc3RkOjpzdHJpbmc6Om5wb3MpOworfQorCisvLyBNYXRjaGVzIHRoZSB2YWx1
ZSBhZ2FpbnN0IHRoZSBnaXZlbiBtYXRjaGVyLCBwcmludHMgdGhlIHZhbHVlIGFuZCBleHBsYWlu
cworLy8gdGhlIG1hdGNoIHJlc3VsdCB0byB0aGUgbGlzdGVuZXIuIFJldHVybnMgdGhlIG1hdGNo
IHJlc3VsdC4KKy8vICdsaXN0ZW5lcicgbXVzdCBub3QgYmUgTlVMTC4KKy8vIFZhbHVlIGNhbm5v
dCBiZSBwYXNzZWQgYnkgY29uc3QgcmVmZXJlbmNlLCBiZWNhdXNlIHNvbWUgbWF0Y2hlcnMgdGFr
ZSBhCisvLyBub24tY29uc3QgYXJndW1lbnQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVmFsdWUsIHR5
cGVuYW1lIFQ+Citib29sIE1hdGNoUHJpbnRBbmRFeHBsYWluKFZhbHVlJiB2YWx1ZSwgY29uc3Qg
TWF0Y2hlcjxUPiYgbWF0Y2hlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hSZXN1
bHRMaXN0ZW5lciogbGlzdGVuZXIpIHsKKyAgaWYgKCFsaXN0ZW5lci0+SXNJbnRlcmVzdGVkKCkp
IHsKKyAgICAvLyBJZiB0aGUgbGlzdGVuZXIgaXMgbm90IGludGVyZXN0ZWQsIHdlIGRvIG5vdCBu
ZWVkIHRvIGNvbnN0cnVjdCB0aGUKKyAgICAvLyBpbm5lciBleHBsYW5hdGlvbi4KKyAgICByZXR1
cm4gbWF0Y2hlci5NYXRjaGVzKHZhbHVlKTsKKyAgfQorCisgIFN0cmluZ01hdGNoUmVzdWx0TGlz
dGVuZXIgaW5uZXJfbGlzdGVuZXI7CisgIGNvbnN0IGJvb2wgbWF0Y2ggPSBtYXRjaGVyLk1hdGNo
QW5kRXhwbGFpbih2YWx1ZSwgJmlubmVyX2xpc3RlbmVyKTsKKworICBVbml2ZXJzYWxQcmludCh2
YWx1ZSwgbGlzdGVuZXItPnN0cmVhbSgpKTsKKyNpZiBHVEVTVF9IQVNfUlRUSQorICBjb25zdCBz
dGQ6OnN0cmluZyYgdHlwZV9uYW1lID0gR2V0VHlwZU5hbWU8VmFsdWU+KCk7CisgIGlmIChJc1Jl
YWRhYmxlVHlwZU5hbWUodHlwZV9uYW1lKSkKKyAgICAqbGlzdGVuZXItPnN0cmVhbSgpIDw8ICIg
KG9mIHR5cGUgIiA8PCB0eXBlX25hbWUgPDwgIikiOworI2VuZGlmCisgIFByaW50SWZOb3RFbXB0
eShpbm5lcl9saXN0ZW5lci5zdHIoKSwgbGlzdGVuZXItPnN0cmVhbSgpKTsKKworICByZXR1cm4g
bWF0Y2g7Cit9CisKKy8vIEFuIGludGVybmFsIGhlbHBlciBjbGFzcyBmb3IgZG9pbmcgY29tcGls
ZS10aW1lIGxvb3Agb24gYSB0dXBsZSdzCisvLyBmaWVsZHMuCit0ZW1wbGF0ZSA8c2l6ZV90IE4+
CitjbGFzcyBUdXBsZVByZWZpeCB7CisgcHVibGljOgorICAvLyBUdXBsZVByZWZpeDxOPjo6TWF0
Y2hlcyhtYXRjaGVyX3R1cGxlLCB2YWx1ZV90dXBsZSkgcmV0dXJucyB0cnVlCisgIC8vIGlmZiB0
aGUgZmlyc3QgTiBmaWVsZHMgb2YgbWF0Y2hlcl90dXBsZSBtYXRjaGVzIHRoZSBmaXJzdCBOCisg
IC8vIGZpZWxkcyBvZiB2YWx1ZV90dXBsZSwgcmVzcGVjdGl2ZWx5LgorICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgTWF0Y2hlclR1cGxlLCB0eXBlbmFtZSBWYWx1ZVR1cGxlPgorICBzdGF0aWMgYm9vbCBN
YXRjaGVzKGNvbnN0IE1hdGNoZXJUdXBsZSYgbWF0Y2hlcl90dXBsZSwKKyAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBWYWx1ZVR1cGxlJiB2YWx1ZV90dXBsZSkgeworICAgIHJldHVybiBUdXBs
ZVByZWZpeDxOIC0gMT46Ok1hdGNoZXMobWF0Y2hlcl90dXBsZSwgdmFsdWVfdHVwbGUpCisgICAg
ICAgICYmIGdldDxOIC0gMT4obWF0Y2hlcl90dXBsZSkuTWF0Y2hlcyhnZXQ8TiAtIDE+KHZhbHVl
X3R1cGxlKSk7CisgIH0KKworICAvLyBUdXBsZVByZWZpeDxOPjo6RXhwbGFpbk1hdGNoRmFpbHVy
ZXNUbyhtYXRjaGVycywgdmFsdWVzLCBvcykKKyAgLy8gZGVzY3JpYmVzIGZhaWx1cmVzIGluIG1h
dGNoaW5nIHRoZSBmaXJzdCBOIGZpZWxkcyBvZiBtYXRjaGVycworICAvLyBhZ2FpbnN0IHRoZSBm
aXJzdCBOIGZpZWxkcyBvZiB2YWx1ZXMuICBJZiB0aGVyZSBpcyBubyBmYWlsdXJlLAorICAvLyBu
b3RoaW5nIHdpbGwgYmUgc3RyZWFtZWQgdG8gb3MuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBNYXRj
aGVyVHVwbGUsIHR5cGVuYW1lIFZhbHVlVHVwbGU+CisgIHN0YXRpYyB2b2lkIEV4cGxhaW5NYXRj
aEZhaWx1cmVzVG8oY29uc3QgTWF0Y2hlclR1cGxlJiBtYXRjaGVycywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWYWx1ZVR1cGxlJiB2YWx1ZXMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAg
Ly8gRmlyc3QsIGRlc2NyaWJlcyBmYWlsdXJlcyBpbiB0aGUgZmlyc3QgTiAtIDEgZmllbGRzLgor
ICAgIFR1cGxlUHJlZml4PE4gLSAxPjo6RXhwbGFpbk1hdGNoRmFpbHVyZXNUbyhtYXRjaGVycywg
dmFsdWVzLCBvcyk7CisKKyAgICAvLyBUaGVuIGRlc2NyaWJlcyB0aGUgZmFpbHVyZSAoaWYgYW55
KSBpbiB0aGUgKE4gLSAxKS10aCAoMC1iYXNlZCkKKyAgICAvLyBmaWVsZC4KKyAgICB0eXBlbmFt
ZSB0dXBsZV9lbGVtZW50PE4gLSAxLCBNYXRjaGVyVHVwbGU+Ojp0eXBlIG1hdGNoZXIgPQorICAg
ICAgICBnZXQ8TiAtIDE+KG1hdGNoZXJzKTsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIHR1cGxlX2Vs
ZW1lbnQ8TiAtIDEsIFZhbHVlVHVwbGU+Ojp0eXBlIFZhbHVlOworICAgIFZhbHVlIHZhbHVlID0g
Z2V0PE4gLSAxPih2YWx1ZXMpOworICAgIFN0cmluZ01hdGNoUmVzdWx0TGlzdGVuZXIgbGlzdGVu
ZXI7CisgICAgaWYgKCFtYXRjaGVyLk1hdGNoQW5kRXhwbGFpbih2YWx1ZSwgJmxpc3RlbmVyKSkg
eworICAgICAgLy8gVE9ETyh3YW4pOiBpbmNsdWRlIGluIHRoZSBtZXNzYWdlIHRoZSBuYW1lIG9m
IHRoZSBwYXJhbWV0ZXIKKyAgICAgIC8vIGFzIHVzZWQgaW4gTU9DS19NRVRIT0QqKCkgd2hlbiBw
b3NzaWJsZS4KKyAgICAgICpvcyA8PCAiICBFeHBlY3RlZCBhcmcgIyIgPDwgTiAtIDEgPDwgIjog
IjsKKyAgICAgIGdldDxOIC0gMT4obWF0Y2hlcnMpLkRlc2NyaWJlVG8ob3MpOworICAgICAgKm9z
IDw8ICJcbiAgICAgICAgICAgQWN0dWFsOiAiOworICAgICAgLy8gV2UgcmVtb3ZlIHRoZSByZWZl
cmVuY2UgaW4gdHlwZSBWYWx1ZSB0byBwcmV2ZW50IHRoZQorICAgICAgLy8gdW5pdmVyc2FsIHBy
aW50ZXIgZnJvbSBwcmludGluZyB0aGUgYWRkcmVzcyBvZiB2YWx1ZSwgd2hpY2gKKyAgICAgIC8v
IGlzbid0IGludGVyZXN0aW5nIHRvIHRoZSB1c2VyIG1vc3Qgb2YgdGhlIHRpbWUuICBUaGUKKyAg
ICAgIC8vIG1hdGNoZXIncyBNYXRjaEFuZEV4cGxhaW4oKSBtZXRob2QgaGFuZGxlcyB0aGUgY2Fz
ZSB3aGVuCisgICAgICAvLyB0aGUgYWRkcmVzcyBpcyBpbnRlcmVzdGluZy4KKyAgICAgIGludGVy
bmFsOjpVbml2ZXJzYWxQcmludCh2YWx1ZSwgb3MpOworICAgICAgUHJpbnRJZk5vdEVtcHR5KGxp
c3RlbmVyLnN0cigpLCBvcyk7CisgICAgICAqb3MgPDwgIlxuIjsKKyAgICB9CisgIH0KK307CisK
Ky8vIFRoZSBiYXNlIGNhc2UuCit0ZW1wbGF0ZSA8PgorY2xhc3MgVHVwbGVQcmVmaXg8MD4gewor
IHB1YmxpYzoKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIE1hdGNoZXJUdXBsZSwgdHlwZW5hbWUgVmFs
dWVUdXBsZT4KKyAgc3RhdGljIGJvb2wgTWF0Y2hlcyhjb25zdCBNYXRjaGVyVHVwbGUmIC8qIG1h
dGNoZXJfdHVwbGUgKi8sCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmFsdWVUdXBsZSYg
LyogdmFsdWVfdHVwbGUgKi8pIHsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorCisgIHRlbXBsYXRl
IDx0eXBlbmFtZSBNYXRjaGVyVHVwbGUsIHR5cGVuYW1lIFZhbHVlVHVwbGU+CisgIHN0YXRpYyB2
b2lkIEV4cGxhaW5NYXRjaEZhaWx1cmVzVG8oY29uc3QgTWF0Y2hlclR1cGxlJiAvKiBtYXRjaGVy
cyAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWYWx1ZVR1
cGxlJiAvKiB2YWx1ZXMgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OjpzdGQ6Om9zdHJlYW0qIC8qIG9zICovKSB7fQorfTsKKworLy8gVHVwbGVNYXRjaGVzKG1hdGNo
ZXJfdHVwbGUsIHZhbHVlX3R1cGxlKSByZXR1cm5zIHRydWUgaWZmIGFsbAorLy8gbWF0Y2hlcnMg
aW4gbWF0Y2hlcl90dXBsZSBtYXRjaCB0aGUgY29ycmVzcG9uZGluZyBmaWVsZHMgaW4KKy8vIHZh
bHVlX3R1cGxlLiAgSXQgaXMgYSBjb21waWxlciBlcnJvciBpZiBtYXRjaGVyX3R1cGxlIGFuZAor
Ly8gdmFsdWVfdHVwbGUgaGF2ZSBkaWZmZXJlbnQgbnVtYmVyIG9mIGZpZWxkcyBvciBpbmNvbXBh
dGlibGUgZmllbGQKKy8vIHR5cGVzLgordGVtcGxhdGUgPHR5cGVuYW1lIE1hdGNoZXJUdXBsZSwg
dHlwZW5hbWUgVmFsdWVUdXBsZT4KK2Jvb2wgVHVwbGVNYXRjaGVzKGNvbnN0IE1hdGNoZXJUdXBs
ZSYgbWF0Y2hlcl90dXBsZSwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IFZhbHVlVHVwbGUmIHZh
bHVlX3R1cGxlKSB7CisgIC8vIE1ha2VzIHN1cmUgdGhhdCBtYXRjaGVyX3R1cGxlIGFuZCB2YWx1
ZV90dXBsZSBoYXZlIHRoZSBzYW1lCisgIC8vIG51bWJlciBvZiBmaWVsZHMuCisgIEdURVNUX0NP
TVBJTEVfQVNTRVJUXyh0dXBsZV9zaXplPE1hdGNoZXJUdXBsZT46OnZhbHVlID09CisgICAgICAg
ICAgICAgICAgICAgICAgICB0dXBsZV9zaXplPFZhbHVlVHVwbGU+Ojp2YWx1ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1hdGNoZXJfYW5kX3ZhbHVlX2hhdmVfZGlmZmVyZW50X251bWJlcnNf
b2ZfZmllbGRzKTsKKyAgcmV0dXJuIFR1cGxlUHJlZml4PHR1cGxlX3NpemU8VmFsdWVUdXBsZT46
OnZhbHVlPjo6CisgICAgICBNYXRjaGVzKG1hdGNoZXJfdHVwbGUsIHZhbHVlX3R1cGxlKTsKK30K
KworLy8gRGVzY3JpYmVzIGZhaWx1cmVzIGluIG1hdGNoaW5nIG1hdGNoZXJzIGFnYWluc3QgdmFs
dWVzLiAgSWYgdGhlcmUKKy8vIGlzIG5vIGZhaWx1cmUsIG5vdGhpbmcgd2lsbCBiZSBzdHJlYW1l
ZCB0byBvcy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBNYXRjaGVyVHVwbGUsIHR5cGVuYW1lIFZhbHVl
VHVwbGU+Cit2b2lkIEV4cGxhaW5NYXRjaEZhaWx1cmVUdXBsZVRvKGNvbnN0IE1hdGNoZXJUdXBs
ZSYgbWF0Y2hlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZhbHVl
VHVwbGUmIHZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjpzdGQ6Om9z
dHJlYW0qIG9zKSB7CisgIFR1cGxlUHJlZml4PHR1cGxlX3NpemU8TWF0Y2hlclR1cGxlPjo6dmFs
dWU+OjpFeHBsYWluTWF0Y2hGYWlsdXJlc1RvKAorICAgICAgbWF0Y2hlcnMsIHZhbHVlcywgb3Mp
OworfQorCisvLyBUcmFuc2Zvcm1UdXBsZVZhbHVlcyBhbmQgaXRzIGhlbHBlci4KKy8vCisvLyBU
cmFuc2Zvcm1UdXBsZVZhbHVlc0hlbHBlciBoaWRlcyB0aGUgaW50ZXJuYWwgbWFjaGluZXJ5IHRo
YXQKKy8vIFRyYW5zZm9ybVR1cGxlVmFsdWVzIHVzZXMgdG8gaW1wbGVtZW50IGEgdHVwbGUgdHJh
dmVyc2FsLgordGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxlLCB0eXBlbmFtZSBGdW5jLCB0eXBlbmFt
ZSBPdXRJdGVyPgorY2xhc3MgVHJhbnNmb3JtVHVwbGVWYWx1ZXNIZWxwZXIgeworIHByaXZhdGU6
CisgIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZV9zaXplPFR1cGxlPiBUdXBsZVNpemU7CisKKyBw
dWJsaWM6CisgIC8vIEZvciBlYWNoIG1lbWJlciBvZiB0dXBsZSAndCcsIHRha2VuIGluIG9yZGVy
LCBldmFsdWF0ZXMgJypvdXQrKyA9IGYodCknLgorICAvLyBSZXR1cm5zIHRoZSBmaW5hbCB2YWx1
ZSBvZiAnb3V0JyBpbiBjYXNlIHRoZSBjYWxsZXIgbmVlZHMgaXQuCisgIHN0YXRpYyBPdXRJdGVy
IFJ1bihGdW5jIGYsIGNvbnN0IFR1cGxlJiB0LCBPdXRJdGVyIG91dCkgeworICAgIHJldHVybiBJ
dGVyYXRlT3ZlclR1cGxlPFR1cGxlLCBUdXBsZVNpemU6OnZhbHVlPigpKGYsIHQsIG91dCk7Cisg
IH0KKworIHByaXZhdGU6CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUdXAsIHNpemVfdCBrUmVtYWlu
aW5nU2l6ZT4KKyAgc3RydWN0IEl0ZXJhdGVPdmVyVHVwbGUgeworICAgIE91dEl0ZXIgb3BlcmF0
b3IoKSAoRnVuYyBmLCBjb25zdCBUdXAmIHQsIE91dEl0ZXIgb3V0KSBjb25zdCB7CisgICAgICAq
b3V0KysgPSBmKDo6dGVzdGluZzo6Z2V0PFR1cGxlU2l6ZTo6dmFsdWUgLSBrUmVtYWluaW5nU2l6
ZT4odCkpOworICAgICAgcmV0dXJuIEl0ZXJhdGVPdmVyVHVwbGU8VHVwLCBrUmVtYWluaW5nU2l6
ZSAtIDE+KCkoZiwgdCwgb3V0KTsKKyAgICB9CisgIH07CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
dXA+CisgIHN0cnVjdCBJdGVyYXRlT3ZlclR1cGxlPFR1cCwgMD4geworICAgIE91dEl0ZXIgb3Bl
cmF0b3IoKSAoRnVuYyAvKiBmICovLCBjb25zdCBUdXAmIC8qIHQgKi8sIE91dEl0ZXIgb3V0KSBj
b25zdCB7CisgICAgICByZXR1cm4gb3V0OworICAgIH0KKyAgfTsKK307CisKKy8vIFN1Y2Nlc3Np
dmVseSBpbnZva2VzICdmKGVsZW1lbnQpJyBvbiBlYWNoIGVsZW1lbnQgb2YgdGhlIHR1cGxlICd0
JywKKy8vIGFwcGVuZGluZyBlYWNoIHJlc3VsdCB0byB0aGUgJ291dCcgaXRlcmF0b3IuIFJldHVy
bnMgdGhlIGZpbmFsIHZhbHVlCisvLyBvZiAnb3V0Jy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUdXBs
ZSwgdHlwZW5hbWUgRnVuYywgdHlwZW5hbWUgT3V0SXRlcj4KK091dEl0ZXIgVHJhbnNmb3JtVHVw
bGVWYWx1ZXMoRnVuYyBmLCBjb25zdCBUdXBsZSYgdCwgT3V0SXRlciBvdXQpIHsKKyAgcmV0dXJu
IFRyYW5zZm9ybVR1cGxlVmFsdWVzSGVscGVyPFR1cGxlLCBGdW5jLCBPdXRJdGVyPjo6UnVuKGYs
IHQsIG91dCk7Cit9CisKKy8vIEltcGxlbWVudHMgQTxUPigpLgordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CitjbGFzcyBBbnlNYXRjaGVySW1wbCA6IHB1YmxpYyBNYXRjaGVySW50ZXJmYWNlPFQ+IHsK
KyBwdWJsaWM6CisgIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxhaW4oCisgICAgICBUIC8qIHgg
Ki8sIE1hdGNoUmVzdWx0TGlzdGVuZXIqIC8qIGxpc3RlbmVyICovKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CisgIHZpcnR1YWwgdm9pZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29u
c3QgeyAqb3MgPDwgImlzIGFueXRoaW5nIjsgfQorICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVOZWdh
dGlvblRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgeworICAgIC8vIFRoaXMgaXMgbW9zdGx5
IGZvciBjb21wbGV0ZW5lc3MnIHNhZmUsIGFzIGl0J3Mgbm90IHZlcnkgdXNlZnVsCisgICAgLy8g
dG8gd3JpdGUgTm90KEE8Ym9vbD4oKSkuICBIb3dldmVyIHdlIGNhbm5vdCBjb21wbGV0ZWx5IHJ1
bGUgb3V0CisgICAgLy8gc3VjaCBhIHBvc3NpYmlsaXR5LCBhbmQgaXQgZG9lc24ndCBodXJ0IHRv
IGJlIHByZXBhcmVkLgorICAgICpvcyA8PCAibmV2ZXIgbWF0Y2hlcyI7CisgIH0KK307CisKKy8v
IEltcGxlbWVudHMgXywgYSBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhbnkgdmFsdWUgb2YgYW55Cisv
LyB0eXBlLiAgVGhpcyBpcyBhIHBvbHltb3JwaGljIG1hdGNoZXIsIHNvIHdlIG5lZWQgYSB0ZW1w
bGF0ZSB0eXBlCisvLyBjb252ZXJzaW9uIG9wZXJhdG9yIHRvIG1ha2UgaXQgYXBwZWFyaW5nIGFz
IGEgTWF0Y2hlcjxUPiBmb3IgYW55CisvLyB0eXBlIFQuCitjbGFzcyBBbnl0aGluZ01hdGNoZXIg
eworIHB1YmxpYzoKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIG9wZXJhdG9yIE1hdGNoZXI8
VD4oKSBjb25zdCB7IHJldHVybiBBPFQ+KCk7IH0KK307CisKKy8vIEltcGxlbWVudHMgYSBtYXRj
aGVyIHRoYXQgY29tcGFyZXMgYSBnaXZlbiB2YWx1ZSB3aXRoIGEKKy8vIHByZS1zdXBwbGllZCB2
YWx1ZSB1c2luZyBvbmUgb2YgdGhlID09LCA8PSwgPCwgZXRjLCBvcGVyYXRvcnMuICBUaGUKKy8v
IHR3byB2YWx1ZXMgYmVpbmcgY29tcGFyZWQgZG9uJ3QgaGF2ZSB0byBoYXZlIHRoZSBzYW1lIHR5
cGUuCisvLworLy8gVGhlIG1hdGNoZXIgZGVmaW5lZCBoZXJlIGlzIHBvbHltb3JwaGljIChmb3Ig
ZXhhbXBsZSwgRXEoNSkgY2FuIGJlCisvLyB1c2VkIHRvIG1hdGNoIGFuIGludCwgYSBzaG9ydCwg
YSBkb3VibGUsIGV0YykuICBUaGVyZWZvcmUgd2UgdXNlCisvLyBhIHRlbXBsYXRlIHR5cGUgY29u
dmVyc2lvbiBvcGVyYXRvciBpbiB0aGUgaW1wbGVtZW50YXRpb24uCisvLworLy8gVGhlIGZvbGxv
d2luZyB0ZW1wbGF0ZSBkZWZpbml0aW9uIGFzc3VtZXMgdGhhdCB0aGUgUmhzIHBhcmFtZXRlciBp
cworLy8gYSAiYmFyZSIgdHlwZSAoaS5lLiBuZWl0aGVyICdjb25zdCBUJyBub3IgJ1QmJykuCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgRCwgdHlwZW5hbWUgUmhzLCB0eXBlbmFtZSBPcD4KK2NsYXNzIENv
bXBhcmlzb25CYXNlIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IENvbXBhcmlzb25CYXNlKGNvbnN0
IFJocyYgcmhzKSA6IHJoc18ocmhzKSB7fQorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGhzPgorICBv
cGVyYXRvciBNYXRjaGVyPExocz4oKSBjb25zdCB7CisgICAgcmV0dXJuIE1ha2VNYXRjaGVyKG5l
dyBJbXBsPExocz4ocmhzXykpOworICB9CisKKyBwcml2YXRlOgorICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgTGhzPgorICBjbGFzcyBJbXBsIDogcHVibGljIE1hdGNoZXJJbnRlcmZhY2U8TGhzPiB7Cisg
ICBwdWJsaWM6CisgICAgZXhwbGljaXQgSW1wbChjb25zdCBSaHMmIHJocykgOiByaHNfKHJocykg
e30KKyAgICB2aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWluKAorICAgICAgICBMaHMgbGhzLCBN
YXRjaFJlc3VsdExpc3RlbmVyKiAvKiBsaXN0ZW5lciAqLykgY29uc3QgeworICAgICAgcmV0dXJu
IE9wKCkobGhzLCByaHNfKTsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8oOjpz
dGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7CisgICAgICAqb3MgPDwgRDo6RGVzYygpIDw8ICIgIjsK
KyAgICAgIFVuaXZlcnNhbFByaW50KHJoc18sIG9zKTsKKyAgICB9CisgICAgdmlydHVhbCB2b2lk
IERlc2NyaWJlTmVnYXRpb25Ubyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKKyAgICAgICpv
cyA8PCBEOjpOZWdhdGVkRGVzYygpIDw8ICAiICI7CisgICAgICBVbml2ZXJzYWxQcmludChyaHNf
LCBvcyk7CisgICAgfQorICAgcHJpdmF0ZToKKyAgICBSaHMgcmhzXzsKKyAgICBHVEVTVF9ESVNB
TExPV19BU1NJR05fKEltcGwpOworICB9OworICBSaHMgcmhzXzsKKyAgR1RFU1RfRElTQUxMT1df
QVNTSUdOXyhDb21wYXJpc29uQmFzZSk7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUmhzPgor
Y2xhc3MgRXFNYXRjaGVyIDogcHVibGljIENvbXBhcmlzb25CYXNlPEVxTWF0Y2hlcjxSaHM+LCBS
aHMsIEFueUVxPiB7CisgcHVibGljOgorICBleHBsaWNpdCBFcU1hdGNoZXIoY29uc3QgUmhzJiBy
aHMpCisgICAgICA6IENvbXBhcmlzb25CYXNlPEVxTWF0Y2hlcjxSaHM+LCBSaHMsIEFueUVxPihy
aHMpIHsgfQorICBzdGF0aWMgY29uc3QgY2hhciogRGVzYygpIHsgcmV0dXJuICJpcyBlcXVhbCB0
byI7IH0KKyAgc3RhdGljIGNvbnN0IGNoYXIqIE5lZ2F0ZWREZXNjKCkgeyByZXR1cm4gImlzbid0
IGVxdWFsIHRvIjsgfQorfTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBSaHM+CitjbGFzcyBOZU1hdGNo
ZXIgOiBwdWJsaWMgQ29tcGFyaXNvbkJhc2U8TmVNYXRjaGVyPFJocz4sIFJocywgQW55TmU+IHsK
KyBwdWJsaWM6CisgIGV4cGxpY2l0IE5lTWF0Y2hlcihjb25zdCBSaHMmIHJocykKKyAgICAgIDog
Q29tcGFyaXNvbkJhc2U8TmVNYXRjaGVyPFJocz4sIFJocywgQW55TmU+KHJocykgeyB9CisgIHN0
YXRpYyBjb25zdCBjaGFyKiBEZXNjKCkgeyByZXR1cm4gImlzbid0IGVxdWFsIHRvIjsgfQorICBz
dGF0aWMgY29uc3QgY2hhciogTmVnYXRlZERlc2MoKSB7IHJldHVybiAiaXMgZXF1YWwgdG8iOyB9
Cit9OwordGVtcGxhdGUgPHR5cGVuYW1lIFJocz4KK2NsYXNzIEx0TWF0Y2hlciA6IHB1YmxpYyBD
b21wYXJpc29uQmFzZTxMdE1hdGNoZXI8UmhzPiwgUmhzLCBBbnlMdD4geworIHB1YmxpYzoKKyAg
ZXhwbGljaXQgTHRNYXRjaGVyKGNvbnN0IFJocyYgcmhzKQorICAgICAgOiBDb21wYXJpc29uQmFz
ZTxMdE1hdGNoZXI8UmhzPiwgUmhzLCBBbnlMdD4ocmhzKSB7IH0KKyAgc3RhdGljIGNvbnN0IGNo
YXIqIERlc2MoKSB7IHJldHVybiAiaXMgPCI7IH0KKyAgc3RhdGljIGNvbnN0IGNoYXIqIE5lZ2F0
ZWREZXNjKCkgeyByZXR1cm4gImlzbid0IDwiOyB9Cit9OwordGVtcGxhdGUgPHR5cGVuYW1lIFJo
cz4KK2NsYXNzIEd0TWF0Y2hlciA6IHB1YmxpYyBDb21wYXJpc29uQmFzZTxHdE1hdGNoZXI8Umhz
PiwgUmhzLCBBbnlHdD4geworIHB1YmxpYzoKKyAgZXhwbGljaXQgR3RNYXRjaGVyKGNvbnN0IFJo
cyYgcmhzKQorICAgICAgOiBDb21wYXJpc29uQmFzZTxHdE1hdGNoZXI8UmhzPiwgUmhzLCBBbnlH
dD4ocmhzKSB7IH0KKyAgc3RhdGljIGNvbnN0IGNoYXIqIERlc2MoKSB7IHJldHVybiAiaXMgPiI7
IH0KKyAgc3RhdGljIGNvbnN0IGNoYXIqIE5lZ2F0ZWREZXNjKCkgeyByZXR1cm4gImlzbid0ID4i
OyB9Cit9OwordGVtcGxhdGUgPHR5cGVuYW1lIFJocz4KK2NsYXNzIExlTWF0Y2hlciA6IHB1Ymxp
YyBDb21wYXJpc29uQmFzZTxMZU1hdGNoZXI8UmhzPiwgUmhzLCBBbnlMZT4geworIHB1YmxpYzoK
KyAgZXhwbGljaXQgTGVNYXRjaGVyKGNvbnN0IFJocyYgcmhzKQorICAgICAgOiBDb21wYXJpc29u
QmFzZTxMZU1hdGNoZXI8UmhzPiwgUmhzLCBBbnlMZT4ocmhzKSB7IH0KKyAgc3RhdGljIGNvbnN0
IGNoYXIqIERlc2MoKSB7IHJldHVybiAiaXMgPD0iOyB9CisgIHN0YXRpYyBjb25zdCBjaGFyKiBO
ZWdhdGVkRGVzYygpIHsgcmV0dXJuICJpc24ndCA8PSI7IH0KK307Cit0ZW1wbGF0ZSA8dHlwZW5h
bWUgUmhzPgorY2xhc3MgR2VNYXRjaGVyIDogcHVibGljIENvbXBhcmlzb25CYXNlPEdlTWF0Y2hl
cjxSaHM+LCBSaHMsIEFueUdlPiB7CisgcHVibGljOgorICBleHBsaWNpdCBHZU1hdGNoZXIoY29u
c3QgUmhzJiByaHMpCisgICAgICA6IENvbXBhcmlzb25CYXNlPEdlTWF0Y2hlcjxSaHM+LCBSaHMs
IEFueUdlPihyaHMpIHsgfQorICBzdGF0aWMgY29uc3QgY2hhciogRGVzYygpIHsgcmV0dXJuICJp
cyA+PSI7IH0KKyAgc3RhdGljIGNvbnN0IGNoYXIqIE5lZ2F0ZWREZXNjKCkgeyByZXR1cm4gImlz
bid0ID49IjsgfQorfTsKKworLy8gSW1wbGVtZW50cyB0aGUgcG9seW1vcnBoaWMgSXNOdWxsKCkg
bWF0Y2hlciwgd2hpY2ggbWF0Y2hlcyBhbnkgcmF3IG9yIHNtYXJ0CisvLyBwb2ludGVyIHRoYXQg
aXMgTlVMTC4KK2NsYXNzIElzTnVsbE1hdGNoZXIgeworIHB1YmxpYzoKKyAgdGVtcGxhdGUgPHR5
cGVuYW1lIFBvaW50ZXI+CisgIGJvb2wgTWF0Y2hBbmRFeHBsYWluKGNvbnN0IFBvaW50ZXImIHAs
CisgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIC8qIGxpc3RlbmVy
ICovKSBjb25zdCB7CisjaWYgR1RFU1RfTEFOR19DWFgxMQorICAgIHJldHVybiBwID09IG51bGxw
dHI7CisjZWxzZSAgLy8gR1RFU1RfTEFOR19DWFgxMQorICAgIHJldHVybiBHZXRSYXdQb2ludGVy
KHApID09IE5VTEw7CisjZW5kaWYgIC8vIEdURVNUX0xBTkdfQ1hYMTEKKyAgfQorCisgIHZvaWQg
RGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsgKm9zIDw8ICJpcyBOVUxMIjsg
fQorICB2b2lkIERlc2NyaWJlTmVnYXRpb25Ubyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsK
KyAgICAqb3MgPDwgImlzbid0IE5VTEwiOworICB9Cit9OworCisvLyBJbXBsZW1lbnRzIHRoZSBw
b2x5bW9ycGhpYyBOb3ROdWxsKCkgbWF0Y2hlciwgd2hpY2ggbWF0Y2hlcyBhbnkgcmF3IG9yIHNt
YXJ0CisvLyBwb2ludGVyIHRoYXQgaXMgbm90IE5VTEwuCitjbGFzcyBOb3ROdWxsTWF0Y2hlciB7
CisgcHVibGljOgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUG9pbnRlcj4KKyAgYm9vbCBNYXRjaEFu
ZEV4cGxhaW4oY29uc3QgUG9pbnRlciYgcCwKKyAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hS
ZXN1bHRMaXN0ZW5lciogLyogbGlzdGVuZXIgKi8pIGNvbnN0IHsKKyNpZiBHVEVTVF9MQU5HX0NY
WDExCisgICAgcmV0dXJuIHAgIT0gbnVsbHB0cjsKKyNlbHNlICAvLyBHVEVTVF9MQU5HX0NYWDEx
CisgICAgcmV0dXJuIEdldFJhd1BvaW50ZXIocCkgIT0gTlVMTDsKKyNlbmRpZiAgLy8gR1RFU1Rf
TEFOR19DWFgxMQorICB9CisKKyAgdm9pZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFtKiBvcykg
Y29uc3QgeyAqb3MgPDwgImlzbid0IE5VTEwiOyB9CisgIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRv
KDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgeworICAgICpvcyA8PCAiaXMgTlVMTCI7CisgIH0K
K307CisKKy8vIFJlZih2YXJpYWJsZSkgbWF0Y2hlcyBhbnkgYXJndW1lbnQgdGhhdCBpcyBhIHJl
ZmVyZW5jZSB0bworLy8gJ3ZhcmlhYmxlJy4gIFRoaXMgbWF0Y2hlciBpcyBwb2x5bW9ycGhpYyBh
cyBpdCBjYW4gbWF0Y2ggYW55CisvLyBzdXBlciB0eXBlIG9mIHRoZSB0eXBlIG9mICd2YXJpYWJs
ZScuCisvLworLy8gVGhlIFJlZk1hdGNoZXIgdGVtcGxhdGUgY2xhc3MgaW1wbGVtZW50cyBSZWYo
dmFyaWFibGUpLiAgSXQgY2FuCisvLyBvbmx5IGJlIGluc3RhbnRpYXRlZCB3aXRoIGEgcmVmZXJl
bmNlIHR5cGUuICBUaGlzIHByZXZlbnRzIGEgdXNlcgorLy8gZnJvbSBtaXN0YWtlbmx5IHVzaW5n
IFJlZih4KSB0byBtYXRjaCBhIG5vbi1yZWZlcmVuY2UgZnVuY3Rpb24KKy8vIGFyZ3VtZW50LiAg
Rm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgd2lsbCByaWdodGVvdXNseSBjYXVzZSBhCisvLyBj
b21waWxlciBlcnJvcjoKKy8vCisvLyAgIGludCBuOworLy8gICBNYXRjaGVyPGludD4gbTEgPSBS
ZWYobik7ICAgLy8gVGhpcyB3b24ndCBjb21waWxlLgorLy8gICBNYXRjaGVyPGludCY+IG0yID0g
UmVmKG4pOyAgLy8gVGhpcyB3aWxsIGNvbXBpbGUuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2Ns
YXNzIFJlZk1hdGNoZXI7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgUmVmTWF0Y2hl
cjxUJj4geworICAvLyBHb29nbGUgTW9jayBpcyBhIGdlbmVyaWMgZnJhbWV3b3JrIGFuZCB0aHVz
IG5lZWRzIHRvIHN1cHBvcnQKKyAgLy8gbW9ja2luZyBhbnkgZnVuY3Rpb24gdHlwZXMsIGluY2x1
ZGluZyB0aG9zZSB0aGF0IHRha2Ugbm9uLWNvbnN0CisgIC8vIHJlZmVyZW5jZSBhcmd1bWVudHMu
ICBUaGVyZWZvcmUgdGhlIHRlbXBsYXRlIHBhcmFtZXRlciBUIChhbmQKKyAgLy8gU3VwZXIgYmVs
b3cpIGNhbiBiZSBpbnN0YW50aWF0ZWQgdG8gZWl0aGVyIGEgY29uc3QgdHlwZSBvciBhCisgIC8v
IG5vbi1jb25zdCB0eXBlLgorIHB1YmxpYzoKKyAgLy8gUmVmTWF0Y2hlcigpIHRha2VzIGEgVCYg
aW5zdGVhZCBvZiBjb25zdCBUJiwgYXMgd2Ugd2FudCB0aGUKKyAgLy8gY29tcGlsZXIgdG8gY2F0
Y2ggdXNpbmcgUmVmKGNvbnN0X3ZhbHVlKSBhcyBhIG1hdGNoZXIgZm9yIGEKKyAgLy8gbm9uLWNv
bnN0IHJlZmVyZW5jZS4KKyAgZXhwbGljaXQgUmVmTWF0Y2hlcihUJiB4KSA6IG9iamVjdF8oeCkg
e30gIC8vIE5PTElOVAorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBTdXBlcj4KKyAgb3BlcmF0b3Ig
TWF0Y2hlcjxTdXBlciY+KCkgY29uc3QgeworICAgIC8vIEJ5IHBhc3Npbmcgb2JqZWN0XyAodHlw
ZSBUJikgdG8gSW1wbCgpLCB3aGljaCBleHBlY3RzIGEgU3VwZXImLAorICAgIC8vIHdlIG1ha2Ug
c3VyZSB0aGF0IFN1cGVyIGlzIGEgc3VwZXIgdHlwZSBvZiBULiAgSW4gcGFydGljdWxhciwKKyAg
ICAvLyB0aGlzIGNhdGNoZXMgdXNpbmcgUmVmKGNvbnN0X3ZhbHVlKSBhcyBhIG1hdGNoZXIgZm9y
IGEKKyAgICAvLyBub24tY29uc3QgcmVmZXJlbmNlLCBhcyB5b3UgY2Fubm90IGltcGxpY2l0bHkg
Y29udmVydCBhIGNvbnN0CisgICAgLy8gcmVmZXJlbmNlIHRvIGEgbm9uLWNvbnN0IHJlZmVyZW5j
ZS4KKyAgICByZXR1cm4gTWFrZU1hdGNoZXIobmV3IEltcGw8U3VwZXI+KG9iamVjdF8pKTsKKyAg
fQorCisgcHJpdmF0ZToKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFN1cGVyPgorICBjbGFzcyBJbXBs
IDogcHVibGljIE1hdGNoZXJJbnRlcmZhY2U8U3VwZXImPiB7CisgICBwdWJsaWM6CisgICAgZXhw
bGljaXQgSW1wbChTdXBlciYgeCkgOiBvYmplY3RfKHgpIHt9ICAvLyBOT0xJTlQKKworICAgIC8v
IE1hdGNoQW5kRXhwbGFpbigpIHRha2VzIGEgU3VwZXImIChhcyBvcHBvc2VkIHRvIGNvbnN0IFN1
cGVyJikKKyAgICAvLyBpbiBvcmRlciB0byBtYXRjaCB0aGUgaW50ZXJmYWNlIE1hdGNoZXJJbnRl
cmZhY2U8U3VwZXImPi4KKyAgICB2aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWluKAorICAgICAg
ICBTdXBlciYgeCwgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNvbnN0IHsKKyAgICAg
ICpsaXN0ZW5lciA8PCAid2hpY2ggaXMgbG9jYXRlZCBAIiA8PCBzdGF0aWNfY2FzdDxjb25zdCB2
b2lkKj4oJngpOworICAgICAgcmV0dXJuICZ4ID09ICZvYmplY3RfOworICAgIH0KKworICAgIHZp
cnR1YWwgdm9pZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgeworICAgICAg
Km9zIDw8ICJyZWZlcmVuY2VzIHRoZSB2YXJpYWJsZSAiOworICAgICAgVW5pdmVyc2FsUHJpbnRl
cjxTdXBlciY+OjpQcmludChvYmplY3RfLCBvcyk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lk
IERlc2NyaWJlTmVnYXRpb25Ubyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKKyAgICAgICpv
cyA8PCAiZG9lcyBub3QgcmVmZXJlbmNlIHRoZSB2YXJpYWJsZSAiOworICAgICAgVW5pdmVyc2Fs
UHJpbnRlcjxTdXBlciY+OjpQcmludChvYmplY3RfLCBvcyk7CisgICAgfQorCisgICBwcml2YXRl
OgorICAgIGNvbnN0IFN1cGVyJiBvYmplY3RfOworCisgICAgR1RFU1RfRElTQUxMT1dfQVNTSUdO
XyhJbXBsKTsKKyAgfTsKKworICBUJiBvYmplY3RfOworCisgIEdURVNUX0RJU0FMTE9XX0FTU0lH
Tl8oUmVmTWF0Y2hlcik7Cit9OworCisvLyBQb2x5bW9ycGhpYyBoZWxwZXIgZnVuY3Rpb25zIGZv
ciBuYXJyb3cgYW5kIHdpZGUgc3RyaW5nIG1hdGNoZXJzLgoraW5saW5lIGJvb2wgQ2FzZUluc2Vu
c2l0aXZlQ1N0cmluZ0VxdWFscyhjb25zdCBjaGFyKiBsaHMsIGNvbnN0IGNoYXIqIHJocykgewor
ICByZXR1cm4gU3RyaW5nOjpDYXNlSW5zZW5zaXRpdmVDU3RyaW5nRXF1YWxzKGxocywgcmhzKTsK
K30KKworaW5saW5lIGJvb2wgQ2FzZUluc2Vuc2l0aXZlQ1N0cmluZ0VxdWFscyhjb25zdCB3Y2hh
cl90KiBsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHdjaGFyX3QqIHJocykgeworICByZXR1cm4gU3RyaW5nOjpDYXNlSW5zZW5zaXRpdmVXaWRlQ1N0
cmluZ0VxdWFscyhsaHMsIHJocyk7Cit9CisKKy8vIFN0cmluZyBjb21wYXJpc29uIGZvciBuYXJy
b3cgb3Igd2lkZSBzdHJpbmdzIHRoYXQgY2FuIGhhdmUgZW1iZWRkZWQgTlVMCisvLyBjaGFyYWN0
ZXJzLgordGVtcGxhdGUgPHR5cGVuYW1lIFN0cmluZ1R5cGU+Citib29sIENhc2VJbnNlbnNpdGl2
ZVN0cmluZ0VxdWFscyhjb25zdCBTdHJpbmdUeXBlJiBzMSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFN0cmluZ1R5cGUmIHMyKSB7CisgIC8vIEFyZSB0aGUgaGVhZHMg
ZXF1YWw/CisgIGlmICghQ2FzZUluc2Vuc2l0aXZlQ1N0cmluZ0VxdWFscyhzMS5jX3N0cigpLCBz
Mi5jX3N0cigpKSkgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIC8vIFNraXAgdGhlIGVx
dWFsIGhlYWRzLgorICBjb25zdCB0eXBlbmFtZSBTdHJpbmdUeXBlOjp2YWx1ZV90eXBlIG51bCA9
IDA7CisgIGNvbnN0IHNpemVfdCBpMSA9IHMxLmZpbmQobnVsKSwgaTIgPSBzMi5maW5kKG51bCk7
CisKKyAgLy8gQXJlIHdlIGF0IHRoZSBlbmQgb2YgZWl0aGVyIHMxIG9yIHMyPworICBpZiAoaTEg
PT0gU3RyaW5nVHlwZTo6bnBvcyB8fCBpMiA9PSBTdHJpbmdUeXBlOjpucG9zKSB7CisgICAgcmV0
dXJuIGkxID09IGkyOworICB9CisKKyAgLy8gQXJlIHRoZSB0YWlscyBlcXVhbD8KKyAgcmV0dXJu
IENhc2VJbnNlbnNpdGl2ZVN0cmluZ0VxdWFscyhzMS5zdWJzdHIoaTEgKyAxKSwgczIuc3Vic3Ry
KGkyICsgMSkpOworfQorCisvLyBTdHJpbmcgbWF0Y2hlcnMuCisKKy8vIEltcGxlbWVudHMgZXF1
YWxpdHktYmFzZWQgc3RyaW5nIG1hdGNoZXJzIGxpa2UgU3RyRXEsIFN0ckNhc2VOZSwgYW5kIGV0
Yy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBTdHJpbmdUeXBlPgorY2xhc3MgU3RyRXF1YWxpdHlNYXRj
aGVyIHsKKyBwdWJsaWM6CisgIFN0ckVxdWFsaXR5TWF0Y2hlcihjb25zdCBTdHJpbmdUeXBlJiBz
dHIsIGJvb2wgZXhwZWN0X2VxLAorICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYXNlX3NlbnNp
dGl2ZSkKKyAgICAgIDogc3RyaW5nXyhzdHIpLCBleHBlY3RfZXFfKGV4cGVjdF9lcSksIGNhc2Vf
c2Vuc2l0aXZlXyhjYXNlX3NlbnNpdGl2ZSkge30KKworICAvLyBBY2NlcHRzIHBvaW50ZXIgdHlw
ZXMsIHBhcnRpY3VsYXJseToKKyAgLy8gICBjb25zdCBjaGFyKgorICAvLyAgIGNoYXIqCisgIC8v
ICAgY29uc3Qgd2NoYXJfdCoKKyAgLy8gICB3Y2hhcl90KgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q2hhclR5cGU+CisgIGJvb2wgTWF0Y2hBbmRFeHBsYWluKENoYXJUeXBlKiBzLCBNYXRjaFJlc3Vs
dExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgeworICAgIGlmIChzID09IE5VTEwpIHsKKyAgICAg
IHJldHVybiAhZXhwZWN0X2VxXzsKKyAgICB9CisgICAgcmV0dXJuIE1hdGNoQW5kRXhwbGFpbihT
dHJpbmdUeXBlKHMpLCBsaXN0ZW5lcik7CisgIH0KKworICAvLyBNYXRjaGVzIGFueXRoaW5nIHRo
YXQgY2FuIGNvbnZlcnQgdG8gU3RyaW5nVHlwZS4KKyAgLy8KKyAgLy8gVGhpcyBpcyBhIHRlbXBs
YXRlLCBub3QganVzdCBhIHBsYWluIGZ1bmN0aW9uIHdpdGggY29uc3QgU3RyaW5nVHlwZSYsCisg
IC8vIGJlY2F1c2UgU3RyaW5nUGllY2UgaGFzIHNvbWUgaW50ZXJmZXJpbmcgbm9uLWV4cGxpY2l0
IGNvbnN0cnVjdG9ycy4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIE1hdGNoZWVTdHJpbmdUeXBlPgor
ICBib29sIE1hdGNoQW5kRXhwbGFpbihjb25zdCBNYXRjaGVlU3RyaW5nVHlwZSYgcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHRMaXN0ZW5lciogLyogbGlzdGVuZXIgKi8pIGNv
bnN0IHsKKyAgICBjb25zdCBTdHJpbmdUeXBlJiBzMihzKTsKKyAgICBjb25zdCBib29sIGVxID0g
Y2FzZV9zZW5zaXRpdmVfID8gczIgPT0gc3RyaW5nXyA6CisgICAgICAgIENhc2VJbnNlbnNpdGl2
ZVN0cmluZ0VxdWFscyhzMiwgc3RyaW5nXyk7CisgICAgcmV0dXJuIGV4cGVjdF9lcV8gPT0gZXE7
CisgIH0KKworICB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Cisg
ICAgRGVzY3JpYmVUb0hlbHBlcihleHBlY3RfZXFfLCBvcyk7CisgIH0KKworICB2b2lkIERlc2Ny
aWJlTmVnYXRpb25Ubyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKKyAgICBEZXNjcmliZVRv
SGVscGVyKCFleHBlY3RfZXFfLCBvcyk7CisgIH0KKworIHByaXZhdGU6CisgIHZvaWQgRGVzY3Jp
YmVUb0hlbHBlcihib29sIGV4cGVjdF9lcSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Cisg
ICAgKm9zIDw8IChleHBlY3RfZXEgPyAiaXMgIiA6ICJpc24ndCAiKTsKKyAgICAqb3MgPDwgImVx
dWFsIHRvICI7CisgICAgaWYgKCFjYXNlX3NlbnNpdGl2ZV8pIHsKKyAgICAgICpvcyA8PCAiKGln
bm9yaW5nIGNhc2UpICI7CisgICAgfQorICAgIFVuaXZlcnNhbFByaW50KHN0cmluZ18sIG9zKTsK
KyAgfQorCisgIGNvbnN0IFN0cmluZ1R5cGUgc3RyaW5nXzsKKyAgY29uc3QgYm9vbCBleHBlY3Rf
ZXFfOworICBjb25zdCBib29sIGNhc2Vfc2Vuc2l0aXZlXzsKKworICBHVEVTVF9ESVNBTExPV19B
U1NJR05fKFN0ckVxdWFsaXR5TWF0Y2hlcik7Cit9OworCisvLyBJbXBsZW1lbnRzIHRoZSBwb2x5
bW9ycGhpYyBIYXNTdWJzdHIoc3Vic3RyaW5nKSBtYXRjaGVyLCB3aGljaAorLy8gY2FuIGJlIHVz
ZWQgYXMgYSBNYXRjaGVyPFQ+IGFzIGxvbmcgYXMgVCBjYW4gYmUgY29udmVydGVkIHRvIGEKKy8v
IHN0cmluZy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBTdHJpbmdUeXBlPgorY2xhc3MgSGFzU3Vic3Ry
TWF0Y2hlciB7CisgcHVibGljOgorICBleHBsaWNpdCBIYXNTdWJzdHJNYXRjaGVyKGNvbnN0IFN0
cmluZ1R5cGUmIHN1YnN0cmluZykKKyAgICAgIDogc3Vic3RyaW5nXyhzdWJzdHJpbmcpIHt9CisK
KyAgLy8gQWNjZXB0cyBwb2ludGVyIHR5cGVzLCBwYXJ0aWN1bGFybHk6CisgIC8vICAgY29uc3Qg
Y2hhcioKKyAgLy8gICBjaGFyKgorICAvLyAgIGNvbnN0IHdjaGFyX3QqCisgIC8vICAgd2NoYXJf
dCoKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgorICBib29sIE1hdGNoQW5kRXhwbGFp
bihDaGFyVHlwZSogcywgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNvbnN0IHsKKyAg
ICByZXR1cm4gcyAhPSBOVUxMICYmIE1hdGNoQW5kRXhwbGFpbihTdHJpbmdUeXBlKHMpLCBsaXN0
ZW5lcik7CisgIH0KKworICAvLyBNYXRjaGVzIGFueXRoaW5nIHRoYXQgY2FuIGNvbnZlcnQgdG8g
U3RyaW5nVHlwZS4KKyAgLy8KKyAgLy8gVGhpcyBpcyBhIHRlbXBsYXRlLCBub3QganVzdCBhIHBs
YWluIGZ1bmN0aW9uIHdpdGggY29uc3QgU3RyaW5nVHlwZSYsCisgIC8vIGJlY2F1c2UgU3RyaW5n
UGllY2UgaGFzIHNvbWUgaW50ZXJmZXJpbmcgbm9uLWV4cGxpY2l0IGNvbnN0cnVjdG9ycy4KKyAg
dGVtcGxhdGUgPHR5cGVuYW1lIE1hdGNoZWVTdHJpbmdUeXBlPgorICBib29sIE1hdGNoQW5kRXhw
bGFpbihjb25zdCBNYXRjaGVlU3RyaW5nVHlwZSYgcywKKyAgICAgICAgICAgICAgICAgICAgICAg
TWF0Y2hSZXN1bHRMaXN0ZW5lciogLyogbGlzdGVuZXIgKi8pIGNvbnN0IHsKKyAgICBjb25zdCBT
dHJpbmdUeXBlJiBzMihzKTsKKyAgICByZXR1cm4gczIuZmluZChzdWJzdHJpbmdfKSAhPSBTdHJp
bmdUeXBlOjpucG9zOworICB9CisKKyAgLy8gRGVzY3JpYmVzIHdoYXQgdGhpcyBtYXRjaGVyIG1h
dGNoZXMuCisgIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKKyAg
ICAqb3MgPDwgImhhcyBzdWJzdHJpbmcgIjsKKyAgICBVbml2ZXJzYWxQcmludChzdWJzdHJpbmdf
LCBvcyk7CisgIH0KKworICB2b2lkIERlc2NyaWJlTmVnYXRpb25Ubyg6OnN0ZDo6b3N0cmVhbSog
b3MpIGNvbnN0IHsKKyAgICAqb3MgPDwgImhhcyBubyBzdWJzdHJpbmcgIjsKKyAgICBVbml2ZXJz
YWxQcmludChzdWJzdHJpbmdfLCBvcyk7CisgIH0KKworIHByaXZhdGU6CisgIGNvbnN0IFN0cmlu
Z1R5cGUgc3Vic3RyaW5nXzsKKworICBHVEVTVF9ESVNBTExPV19BU1NJR05fKEhhc1N1YnN0ck1h
dGNoZXIpOworfTsKKworLy8gSW1wbGVtZW50cyB0aGUgcG9seW1vcnBoaWMgU3RhcnRzV2l0aChz
dWJzdHJpbmcpIG1hdGNoZXIsIHdoaWNoCisvLyBjYW4gYmUgdXNlZCBhcyBhIE1hdGNoZXI8VD4g
YXMgbG9uZyBhcyBUIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYQorLy8gc3RyaW5nLgordGVtcGxhdGUg
PHR5cGVuYW1lIFN0cmluZ1R5cGU+CitjbGFzcyBTdGFydHNXaXRoTWF0Y2hlciB7CisgcHVibGlj
OgorICBleHBsaWNpdCBTdGFydHNXaXRoTWF0Y2hlcihjb25zdCBTdHJpbmdUeXBlJiBwcmVmaXgp
IDogcHJlZml4XyhwcmVmaXgpIHsKKyAgfQorCisgIC8vIEFjY2VwdHMgcG9pbnRlciB0eXBlcywg
cGFydGljdWxhcmx5OgorICAvLyAgIGNvbnN0IGNoYXIqCisgIC8vICAgY2hhcioKKyAgLy8gICBj
b25zdCB3Y2hhcl90KgorICAvLyAgIHdjaGFyX3QqCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFy
VHlwZT4KKyAgYm9vbCBNYXRjaEFuZEV4cGxhaW4oQ2hhclR5cGUqIHMsIE1hdGNoUmVzdWx0TGlz
dGVuZXIqIGxpc3RlbmVyKSBjb25zdCB7CisgICAgcmV0dXJuIHMgIT0gTlVMTCAmJiBNYXRjaEFu
ZEV4cGxhaW4oU3RyaW5nVHlwZShzKSwgbGlzdGVuZXIpOworICB9CisKKyAgLy8gTWF0Y2hlcyBh
bnl0aGluZyB0aGF0IGNhbiBjb252ZXJ0IHRvIFN0cmluZ1R5cGUuCisgIC8vCisgIC8vIFRoaXMg
aXMgYSB0ZW1wbGF0ZSwgbm90IGp1c3QgYSBwbGFpbiBmdW5jdGlvbiB3aXRoIGNvbnN0IFN0cmlu
Z1R5cGUmLAorICAvLyBiZWNhdXNlIFN0cmluZ1BpZWNlIGhhcyBzb21lIGludGVyZmVyaW5nIG5v
bi1leHBsaWNpdCBjb25zdHJ1Y3RvcnMuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBNYXRjaGVlU3Ry
aW5nVHlwZT4KKyAgYm9vbCBNYXRjaEFuZEV4cGxhaW4oY29uc3QgTWF0Y2hlZVN0cmluZ1R5cGUm
IHMsCisgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIC8qIGxpc3Rl
bmVyICovKSBjb25zdCB7CisgICAgY29uc3QgU3RyaW5nVHlwZSYgczIocyk7CisgICAgcmV0dXJu
IHMyLmxlbmd0aCgpID49IHByZWZpeF8ubGVuZ3RoKCkgJiYKKyAgICAgICAgczIuc3Vic3RyKDAs
IHByZWZpeF8ubGVuZ3RoKCkpID09IHByZWZpeF87CisgIH0KKworICB2b2lkIERlc2NyaWJlVG8o
OjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7CisgICAgKm9zIDw8ICJzdGFydHMgd2l0aCAiOwor
ICAgIFVuaXZlcnNhbFByaW50KHByZWZpeF8sIG9zKTsKKyAgfQorCisgIHZvaWQgRGVzY3JpYmVO
ZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgeworICAgICpvcyA8PCAiZG9lc24n
dCBzdGFydCB3aXRoICI7CisgICAgVW5pdmVyc2FsUHJpbnQocHJlZml4Xywgb3MpOworICB9CisK
KyBwcml2YXRlOgorICBjb25zdCBTdHJpbmdUeXBlIHByZWZpeF87CisKKyAgR1RFU1RfRElTQUxM
T1dfQVNTSUdOXyhTdGFydHNXaXRoTWF0Y2hlcik7Cit9OworCisvLyBJbXBsZW1lbnRzIHRoZSBw
b2x5bW9ycGhpYyBFbmRzV2l0aChzdWJzdHJpbmcpIG1hdGNoZXIsIHdoaWNoCisvLyBjYW4gYmUg
dXNlZCBhcyBhIE1hdGNoZXI8VD4gYXMgbG9uZyBhcyBUIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYQor
Ly8gc3RyaW5nLgordGVtcGxhdGUgPHR5cGVuYW1lIFN0cmluZ1R5cGU+CitjbGFzcyBFbmRzV2l0
aE1hdGNoZXIgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgRW5kc1dpdGhNYXRjaGVyKGNvbnN0IFN0
cmluZ1R5cGUmIHN1ZmZpeCkgOiBzdWZmaXhfKHN1ZmZpeCkge30KKworICAvLyBBY2NlcHRzIHBv
aW50ZXIgdHlwZXMsIHBhcnRpY3VsYXJseToKKyAgLy8gICBjb25zdCBjaGFyKgorICAvLyAgIGNo
YXIqCisgIC8vICAgY29uc3Qgd2NoYXJfdCoKKyAgLy8gICB3Y2hhcl90KgorICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgQ2hhclR5cGU+CisgIGJvb2wgTWF0Y2hBbmRFeHBsYWluKENoYXJUeXBlKiBzLCBN
YXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgeworICAgIHJldHVybiBzICE9IE5V
TEwgJiYgTWF0Y2hBbmRFeHBsYWluKFN0cmluZ1R5cGUocyksIGxpc3RlbmVyKTsKKyAgfQorCisg
IC8vIE1hdGNoZXMgYW55dGhpbmcgdGhhdCBjYW4gY29udmVydCB0byBTdHJpbmdUeXBlLgorICAv
LworICAvLyBUaGlzIGlzIGEgdGVtcGxhdGUsIG5vdCBqdXN0IGEgcGxhaW4gZnVuY3Rpb24gd2l0
aCBjb25zdCBTdHJpbmdUeXBlJiwKKyAgLy8gYmVjYXVzZSBTdHJpbmdQaWVjZSBoYXMgc29tZSBp
bnRlcmZlcmluZyBub24tZXhwbGljaXQgY29uc3RydWN0b3JzLgorICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgTWF0Y2hlZVN0cmluZ1R5cGU+CisgIGJvb2wgTWF0Y2hBbmRFeHBsYWluKGNvbnN0IE1hdGNo
ZWVTdHJpbmdUeXBlJiBzLAorICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3Rl
bmVyKiAvKiBsaXN0ZW5lciAqLykgY29uc3QgeworICAgIGNvbnN0IFN0cmluZ1R5cGUmIHMyKHMp
OworICAgIHJldHVybiBzMi5sZW5ndGgoKSA+PSBzdWZmaXhfLmxlbmd0aCgpICYmCisgICAgICAg
IHMyLnN1YnN0cihzMi5sZW5ndGgoKSAtIHN1ZmZpeF8ubGVuZ3RoKCkpID09IHN1ZmZpeF87Cisg
IH0KKworICB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7CisgICAg
Km9zIDw8ICJlbmRzIHdpdGggIjsKKyAgICBVbml2ZXJzYWxQcmludChzdWZmaXhfLCBvcyk7Cisg
IH0KKworICB2b2lkIERlc2NyaWJlTmVnYXRpb25Ubyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0
IHsKKyAgICAqb3MgPDwgImRvZXNuJ3QgZW5kIHdpdGggIjsKKyAgICBVbml2ZXJzYWxQcmludChz
dWZmaXhfLCBvcyk7CisgIH0KKworIHByaXZhdGU6CisgIGNvbnN0IFN0cmluZ1R5cGUgc3VmZml4
XzsKKworICBHVEVTVF9ESVNBTExPV19BU1NJR05fKEVuZHNXaXRoTWF0Y2hlcik7Cit9OworCisv
LyBJbXBsZW1lbnRzIHBvbHltb3JwaGljIG1hdGNoZXJzIE1hdGNoZXNSZWdleChyZWdleCkgYW5k
CisvLyBDb250YWluc1JlZ2V4KHJlZ2V4KSwgd2hpY2ggY2FuIGJlIHVzZWQgYXMgYSBNYXRjaGVy
PFQ+IGFzIGxvbmcgYXMKKy8vIFQgY2FuIGJlIGNvbnZlcnRlZCB0byBhIHN0cmluZy4KK2NsYXNz
IE1hdGNoZXNSZWdleE1hdGNoZXIgeworIHB1YmxpYzoKKyAgTWF0Y2hlc1JlZ2V4TWF0Y2hlcihj
b25zdCBSRSogcmVnZXgsIGJvb2wgZnVsbF9tYXRjaCkKKyAgICAgIDogcmVnZXhfKHJlZ2V4KSwg
ZnVsbF9tYXRjaF8oZnVsbF9tYXRjaCkge30KKworICAvLyBBY2NlcHRzIHBvaW50ZXIgdHlwZXMs
IHBhcnRpY3VsYXJseToKKyAgLy8gICBjb25zdCBjaGFyKgorICAvLyAgIGNoYXIqCisgIC8vICAg
Y29uc3Qgd2NoYXJfdCoKKyAgLy8gICB3Y2hhcl90KgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hh
clR5cGU+CisgIGJvb2wgTWF0Y2hBbmRFeHBsYWluKENoYXJUeXBlKiBzLCBNYXRjaFJlc3VsdExp
c3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgeworICAgIHJldHVybiBzICE9IE5VTEwgJiYgTWF0Y2hB
bmRFeHBsYWluKHN0ZDo6c3RyaW5nKHMpLCBsaXN0ZW5lcik7CisgIH0KKworICAvLyBNYXRjaGVz
IGFueXRoaW5nIHRoYXQgY2FuIGNvbnZlcnQgdG8gc3RkOjpzdHJpbmcuCisgIC8vCisgIC8vIFRo
aXMgaXMgYSB0ZW1wbGF0ZSwgbm90IGp1c3QgYSBwbGFpbiBmdW5jdGlvbiB3aXRoIGNvbnN0IHN0
ZDo6c3RyaW5nJiwKKyAgLy8gYmVjYXVzZSBTdHJpbmdQaWVjZSBoYXMgc29tZSBpbnRlcmZlcmlu
ZyBub24tZXhwbGljaXQgY29uc3RydWN0b3JzLgorICB0ZW1wbGF0ZSA8Y2xhc3MgTWF0Y2hlZVN0
cmluZ1R5cGU+CisgIGJvb2wgTWF0Y2hBbmRFeHBsYWluKGNvbnN0IE1hdGNoZWVTdHJpbmdUeXBl
JiBzLAorICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiAvKiBsaXN0
ZW5lciAqLykgY29uc3QgeworICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzMihzKTsKKyAgICByZXR1
cm4gZnVsbF9tYXRjaF8gPyBSRTo6RnVsbE1hdGNoKHMyLCAqcmVnZXhfKSA6CisgICAgICAgIFJF
OjpQYXJ0aWFsTWF0Y2goczIsICpyZWdleF8pOworICB9CisKKyAgdm9pZCBEZXNjcmliZVRvKDo6
c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgeworICAgICpvcyA8PCAoZnVsbF9tYXRjaF8gPyAibWF0
Y2hlcyIgOiAiY29udGFpbnMiKQorICAgICAgICA8PCAiIHJlZ3VsYXIgZXhwcmVzc2lvbiAiOwor
ICAgIFVuaXZlcnNhbFByaW50ZXI8c3RkOjpzdHJpbmc+OjpQcmludChyZWdleF8tPnBhdHRlcm4o
KSwgb3MpOworICB9CisKKyAgdm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0q
IG9zKSBjb25zdCB7CisgICAgKm9zIDw8ICJkb2Vzbid0ICIgPDwgKGZ1bGxfbWF0Y2hfID8gIm1h
dGNoIiA6ICJjb250YWluIikKKyAgICAgICAgPDwgIiByZWd1bGFyIGV4cHJlc3Npb24gIjsKKyAg
ICBVbml2ZXJzYWxQcmludGVyPHN0ZDo6c3RyaW5nPjo6UHJpbnQocmVnZXhfLT5wYXR0ZXJuKCks
IG9zKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgY29uc3QgaW50ZXJuYWw6OmxpbmtlZF9wdHI8Y29u
c3QgUkU+IHJlZ2V4XzsKKyAgY29uc3QgYm9vbCBmdWxsX21hdGNoXzsKKworICBHVEVTVF9ESVNB
TExPV19BU1NJR05fKE1hdGNoZXNSZWdleE1hdGNoZXIpOworfTsKKworLy8gSW1wbGVtZW50cyBh
IG1hdGNoZXIgdGhhdCBjb21wYXJlcyB0aGUgdHdvIGZpZWxkcyBvZiBhIDItdHVwbGUKKy8vIHVz
aW5nIG9uZSBvZiB0aGUgPT0sIDw9LCA8LCBldGMsIG9wZXJhdG9ycy4gIFRoZSB0d28gZmllbGRz
IGJlaW5nCisvLyBjb21wYXJlZCBkb24ndCBoYXZlIHRvIGhhdmUgdGhlIHNhbWUgdHlwZS4KKy8v
CisvLyBUaGUgbWF0Y2hlciBkZWZpbmVkIGhlcmUgaXMgcG9seW1vcnBoaWMgKGZvciBleGFtcGxl
LCBFcSgpIGNhbiBiZQorLy8gdXNlZCB0byBtYXRjaCBhIHR1cGxlPGludCwgc2hvcnQ+LCBhIHR1
cGxlPGNvbnN0IGxvbmcmLCBkb3VibGU+LAorLy8gZXRjKS4gIFRoZXJlZm9yZSB3ZSB1c2UgYSB0
ZW1wbGF0ZSB0eXBlIGNvbnZlcnNpb24gb3BlcmF0b3IgaW4gdGhlCisvLyBpbXBsZW1lbnRhdGlv
bi4KK3RlbXBsYXRlIDx0eXBlbmFtZSBELCB0eXBlbmFtZSBPcD4KK2NsYXNzIFBhaXJNYXRjaEJh
c2UgeworIHB1YmxpYzoKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KKyAg
b3BlcmF0b3IgTWF0Y2hlcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDI+ID4oKSBjb25zdCB7Cisg
ICAgcmV0dXJuIE1ha2VNYXRjaGVyKG5ldyBJbXBsPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMj4g
Pik7CisgIH0KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KKyAgb3BlcmF0
b3IgTWF0Y2hlcjxjb25zdCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMj4mPigpIGNvbnN0IHsKKyAg
ICByZXR1cm4gTWFrZU1hdGNoZXIobmV3IEltcGw8Y29uc3QgOjp0ZXN0aW5nOjp0dXBsZTxUMSwg
VDI+Jj4pOworICB9CisKKyBwcml2YXRlOgorICBzdGF0aWMgOjpzdGQ6Om9zdHJlYW0mIEdldERl
c2MoOjpzdGQ6Om9zdHJlYW0mIG9zKSB7ICAvLyBOT0xJTlQKKyAgICByZXR1cm4gb3MgPDwgRDo6
RGVzYygpOworICB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxlPgorICBjbGFzcyBJbXBs
IDogcHVibGljIE1hdGNoZXJJbnRlcmZhY2U8VHVwbGU+IHsKKyAgIHB1YmxpYzoKKyAgICB2aXJ0
dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWluKAorICAgICAgICBUdXBsZSBhcmdzLAorICAgICAgICBN
YXRjaFJlc3VsdExpc3RlbmVyKiAvKiBsaXN0ZW5lciAqLykgY29uc3QgeworICAgICAgcmV0dXJu
IE9wKCkoOjp0ZXN0aW5nOjpnZXQ8MD4oYXJncyksIDo6dGVzdGluZzo6Z2V0PDE+KGFyZ3MpKTsK
KyAgICB9CisgICAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBj
b25zdCB7CisgICAgICAqb3MgPDwgImFyZSAiIDw8IEdldERlc2M7CisgICAgfQorICAgIHZpcnR1
YWwgdm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Cisg
ICAgICAqb3MgPDwgImFyZW4ndCAiIDw8IEdldERlc2M7CisgICAgfQorICB9OworfTsKKworY2xh
c3MgRXEyTWF0Y2hlciA6IHB1YmxpYyBQYWlyTWF0Y2hCYXNlPEVxMk1hdGNoZXIsIEFueUVxPiB7
CisgcHVibGljOgorICBzdGF0aWMgY29uc3QgY2hhciogRGVzYygpIHsgcmV0dXJuICJhbiBlcXVh
bCBwYWlyIjsgfQorfTsKK2NsYXNzIE5lMk1hdGNoZXIgOiBwdWJsaWMgUGFpck1hdGNoQmFzZTxO
ZTJNYXRjaGVyLCBBbnlOZT4geworIHB1YmxpYzoKKyAgc3RhdGljIGNvbnN0IGNoYXIqIERlc2Mo
KSB7IHJldHVybiAiYW4gdW5lcXVhbCBwYWlyIjsgfQorfTsKK2NsYXNzIEx0Mk1hdGNoZXIgOiBw
dWJsaWMgUGFpck1hdGNoQmFzZTxMdDJNYXRjaGVyLCBBbnlMdD4geworIHB1YmxpYzoKKyAgc3Rh
dGljIGNvbnN0IGNoYXIqIERlc2MoKSB7IHJldHVybiAiYSBwYWlyIHdoZXJlIHRoZSBmaXJzdCA8
IHRoZSBzZWNvbmQiOyB9Cit9OworY2xhc3MgR3QyTWF0Y2hlciA6IHB1YmxpYyBQYWlyTWF0Y2hC
YXNlPEd0Mk1hdGNoZXIsIEFueUd0PiB7CisgcHVibGljOgorICBzdGF0aWMgY29uc3QgY2hhciog
RGVzYygpIHsgcmV0dXJuICJhIHBhaXIgd2hlcmUgdGhlIGZpcnN0ID4gdGhlIHNlY29uZCI7IH0K
K307CitjbGFzcyBMZTJNYXRjaGVyIDogcHVibGljIFBhaXJNYXRjaEJhc2U8TGUyTWF0Y2hlciwg
QW55TGU+IHsKKyBwdWJsaWM6CisgIHN0YXRpYyBjb25zdCBjaGFyKiBEZXNjKCkgeyByZXR1cm4g
ImEgcGFpciB3aGVyZSB0aGUgZmlyc3QgPD0gdGhlIHNlY29uZCI7IH0KK307CitjbGFzcyBHZTJN
YXRjaGVyIDogcHVibGljIFBhaXJNYXRjaEJhc2U8R2UyTWF0Y2hlciwgQW55R2U+IHsKKyBwdWJs
aWM6CisgIHN0YXRpYyBjb25zdCBjaGFyKiBEZXNjKCkgeyByZXR1cm4gImEgcGFpciB3aGVyZSB0
aGUgZmlyc3QgPj0gdGhlIHNlY29uZCI7IH0KK307CisKKy8vIEltcGxlbWVudHMgdGhlIE5vdCgu
Li4pIG1hdGNoZXIgZm9yIGEgcGFydGljdWxhciBhcmd1bWVudCB0eXBlIFQuCisvLyBXZSBkbyBu
b3QgbmVzdCBpdCBpbnNpZGUgdGhlIE5vdE1hdGNoZXIgY2xhc3MgdGVtcGxhdGUsIGFzIHRoYXQK
Ky8vIHdpbGwgcHJldmVudCBkaWZmZXJlbnQgaW5zdGFudGlhdGlvbnMgb2YgTm90TWF0Y2hlciBm
cm9tIHNoYXJpbmcKKy8vIHRoZSBzYW1lIE5vdE1hdGNoZXJJbXBsPFQ+IGNsYXNzLgordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBOb3RNYXRjaGVySW1wbCA6IHB1YmxpYyBNYXRjaGVySW50
ZXJmYWNlPFQ+IHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IE5vdE1hdGNoZXJJbXBsKGNvbnN0IE1h
dGNoZXI8VD4mIG1hdGNoZXIpCisgICAgICA6IG1hdGNoZXJfKG1hdGNoZXIpIHt9CisKKyAgdmly
dHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbihUIHgsIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3Rl
bmVyKSBjb25zdCB7CisgICAgcmV0dXJuICFtYXRjaGVyXy5NYXRjaEFuZEV4cGxhaW4oeCwgbGlz
dGVuZXIpOworICB9CisKKyAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0q
IG9zKSBjb25zdCB7CisgICAgbWF0Y2hlcl8uRGVzY3JpYmVOZWdhdGlvblRvKG9zKTsKKyAgfQor
CisgIHZpcnR1YWwgdm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBj
b25zdCB7CisgICAgbWF0Y2hlcl8uRGVzY3JpYmVUbyhvcyk7CisgIH0KKworIHByaXZhdGU6Cisg
IGNvbnN0IE1hdGNoZXI8VD4gbWF0Y2hlcl87CisKKyAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhO
b3RNYXRjaGVySW1wbCk7Cit9OworCisvLyBJbXBsZW1lbnRzIHRoZSBOb3QobSkgbWF0Y2hlciwg
d2hpY2ggbWF0Y2hlcyBhIHZhbHVlIHRoYXQgZG9lc24ndAorLy8gbWF0Y2ggbWF0Y2hlciBtLgor
dGVtcGxhdGUgPHR5cGVuYW1lIElubmVyTWF0Y2hlcj4KK2NsYXNzIE5vdE1hdGNoZXIgeworIHB1
YmxpYzoKKyAgZXhwbGljaXQgTm90TWF0Y2hlcihJbm5lck1hdGNoZXIgbWF0Y2hlcikgOiBtYXRj
aGVyXyhtYXRjaGVyKSB7fQorCisgIC8vIFRoaXMgdGVtcGxhdGUgdHlwZSBjb252ZXJzaW9uIG9w
ZXJhdG9yIGFsbG93cyBOb3QobSkgdG8gYmUgdXNlZAorICAvLyB0byBtYXRjaCBhbnkgdHlwZSBt
IGNhbiBtYXRjaC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIG9wZXJhdG9yIE1hdGNoZXI8
VD4oKSBjb25zdCB7CisgICAgcmV0dXJuIE1hdGNoZXI8VD4obmV3IE5vdE1hdGNoZXJJbXBsPFQ+
KFNhZmVNYXRjaGVyQ2FzdDxUPihtYXRjaGVyXykpKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgSW5u
ZXJNYXRjaGVyIG1hdGNoZXJfOworCisgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oTm90TWF0Y2hl
cik7Cit9OworCisvLyBJbXBsZW1lbnRzIHRoZSBBbGxPZihtMSwgbTIpIG1hdGNoZXIgZm9yIGEg
cGFydGljdWxhciBhcmd1bWVudCB0eXBlCisvLyBULiBXZSBkbyBub3QgbmVzdCBpdCBpbnNpZGUg
dGhlIEJvdGhPZk1hdGNoZXIgY2xhc3MgdGVtcGxhdGUsIGFzCisvLyB0aGF0IHdpbGwgcHJldmVu
dCBkaWZmZXJlbnQgaW5zdGFudGlhdGlvbnMgb2YgQm90aE9mTWF0Y2hlciBmcm9tCisvLyBzaGFy
aW5nIHRoZSBzYW1lIEJvdGhPZk1hdGNoZXJJbXBsPFQ+IGNsYXNzLgordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CitjbGFzcyBCb3RoT2ZNYXRjaGVySW1wbCA6IHB1YmxpYyBNYXRjaGVySW50ZXJmYWNl
PFQ+IHsKKyBwdWJsaWM6CisgIEJvdGhPZk1hdGNoZXJJbXBsKGNvbnN0IE1hdGNoZXI8VD4mIG1h
dGNoZXIxLCBjb25zdCBNYXRjaGVyPFQ+JiBtYXRjaGVyMikKKyAgICAgIDogbWF0Y2hlcjFfKG1h
dGNoZXIxKSwgbWF0Y2hlcjJfKG1hdGNoZXIyKSB7fQorCisgIHZpcnR1YWwgdm9pZCBEZXNjcmli
ZVRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgeworICAgICpvcyA8PCAiKCI7CisgICAgbWF0
Y2hlcjFfLkRlc2NyaWJlVG8ob3MpOworICAgICpvcyA8PCAiKSBhbmQgKCI7CisgICAgbWF0Y2hl
cjJfLkRlc2NyaWJlVG8ob3MpOworICAgICpvcyA8PCAiKSI7CisgIH0KKworICB2aXJ0dWFsIHZv
aWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgeworICAgICpv
cyA8PCAiKCI7CisgICAgbWF0Y2hlcjFfLkRlc2NyaWJlTmVnYXRpb25Ubyhvcyk7CisgICAgKm9z
IDw8ICIpIG9yICgiOworICAgIG1hdGNoZXIyXy5EZXNjcmliZU5lZ2F0aW9uVG8ob3MpOworICAg
ICpvcyA8PCAiKSI7CisgIH0KKworICB2aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWluKFQgeCwg
TWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNvbnN0IHsKKyAgICAvLyBJZiBlaXRoZXIg
bWF0Y2hlcjFfIG9yIG1hdGNoZXIyXyBkb2Vzbid0IG1hdGNoIHgsIHdlIG9ubHkgbmVlZAorICAg
IC8vIHRvIGV4cGxhaW4gd2h5IG9uZSBvZiB0aGVtIGZhaWxzLgorICAgIFN0cmluZ01hdGNoUmVz
dWx0TGlzdGVuZXIgbGlzdGVuZXIxOworICAgIGlmICghbWF0Y2hlcjFfLk1hdGNoQW5kRXhwbGFp
bih4LCAmbGlzdGVuZXIxKSkgeworICAgICAgKmxpc3RlbmVyIDw8IGxpc3RlbmVyMS5zdHIoKTsK
KyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBTdHJpbmdNYXRjaFJlc3VsdExpc3Rl
bmVyIGxpc3RlbmVyMjsKKyAgICBpZiAoIW1hdGNoZXIyXy5NYXRjaEFuZEV4cGxhaW4oeCwgJmxp
c3RlbmVyMikpIHsKKyAgICAgICpsaXN0ZW5lciA8PCBsaXN0ZW5lcjIuc3RyKCk7CisgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gT3RoZXJ3aXNlIHdlIG5lZWQgdG8gZXhwbGFp
biB3aHkgKmJvdGgqIG9mIHRoZW0gbWF0Y2guCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgczEgPSBs
aXN0ZW5lcjEuc3RyKCk7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgczIgPSBsaXN0ZW5lcjIuc3Ry
KCk7CisKKyAgICBpZiAoczEgPT0gIiIpIHsKKyAgICAgICpsaXN0ZW5lciA8PCBzMjsKKyAgICB9
IGVsc2UgeworICAgICAgKmxpc3RlbmVyIDw8IHMxOworICAgICAgaWYgKHMyICE9ICIiKSB7Cisg
ICAgICAgICpsaXN0ZW5lciA8PCAiLCBhbmQgIiA8PCBzMjsKKyAgICAgIH0KKyAgICB9CisgICAg
cmV0dXJuIHRydWU7CisgIH0KKworIHByaXZhdGU6CisgIGNvbnN0IE1hdGNoZXI8VD4gbWF0Y2hl
cjFfOworICBjb25zdCBNYXRjaGVyPFQ+IG1hdGNoZXIyXzsKKworICBHVEVTVF9ESVNBTExPV19B
U1NJR05fKEJvdGhPZk1hdGNoZXJJbXBsKTsKK307CisKKyNpZiBHVEVTVF9MQU5HX0NYWDExCisv
LyBNYXRjaGVyTGlzdCBwcm92aWRlcyBtZWNoYW5pc21zIGZvciBzdG9yaW5nIGEgdmFyaWFibGUg
bnVtYmVyIG9mIG1hdGNoZXJzIGluCisvLyBhIGxpc3Qgc3RydWN0dXJlIChMaXN0VHlwZSkgYW5k
IGNyZWF0aW5nIGEgY29tYmluaW5nIG1hdGNoZXIgZnJvbSBzdWNoIGEKKy8vIGxpc3QuCisvLyBU
aGUgdGVtcGxhdGUgaXMgZGVmaW5lZCByZWN1cnNpdmVseSB1c2luZyB0aGUgZm9sbG93aW5nIHRl
bXBsYXRlIHBhcmFtdGVyczoKKy8vICAgKiBrU2l6ZSBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBNYXRj
aGVyTGlzdC4KKy8vICAgKiBIZWFkIGlzIHRoZSB0eXBlIG9mIHRoZSBmaXJzdCBtYXRjaGVyIG9m
IHRoZSBsaXN0LgorLy8gICAqIFRhaWwgZGVub3RlcyB0aGUgdHlwZXMgb2YgdGhlIHJlbWFpbmlu
ZyBtYXRjaGVycyBvZiB0aGUgbGlzdC4KK3RlbXBsYXRlIDxpbnQga1NpemUsIHR5cGVuYW1lIEhl
YWQsIHR5cGVuYW1lLi4uIFRhaWw+CitzdHJ1Y3QgTWF0Y2hlckxpc3QgeworICB0eXBlZGVmIE1h
dGNoZXJMaXN0PGtTaXplIC0gMSwgVGFpbC4uLj4gTWF0Y2hlckxpc3RUYWlsOworICB0eXBlZGVm
IDo6c3RkOjpwYWlyPEhlYWQsIHR5cGVuYW1lIE1hdGNoZXJMaXN0VGFpbDo6TGlzdFR5cGU+IExp
c3RUeXBlOworCisgIC8vIEJ1aWxkTGlzdCBzdG9yZXMgdmFyaWFkaWMgdHlwZSB2YWx1ZXMgaW4g
YSBuZXN0ZWQgcGFpciBzdHJ1Y3R1cmUuCisgIC8vIEV4YW1wbGU6CisgIC8vIE1hdGNoZXJMaXN0
PDMsIGludCwgc3RyaW5nLCBmbG9hdD46OkJ1aWxkTGlzdCg1LCAiZm9vIiwgMi4wKSB3aWxsIHJl
dHVybgorICAvLyB0aGUgY29ycmVzcG9uZGluZyByZXN1bHQgb2YgdHlwZSBwYWlyPGludCwgcGFp
cjxzdHJpbmcsIGZsb2F0Pj4uCisgIHN0YXRpYyBMaXN0VHlwZSBCdWlsZExpc3QoY29uc3QgSGVh
ZCYgbWF0Y2hlciwgY29uc3QgVGFpbCYuLi4gdGFpbCkgeworICAgIHJldHVybiBMaXN0VHlwZSht
YXRjaGVyLCBNYXRjaGVyTGlzdFRhaWw6OkJ1aWxkTGlzdCh0YWlsLi4uKSk7CisgIH0KKworICAv
LyBDcmVhdGVNYXRjaGVyPFQ+IGNyZWF0ZXMgYSBNYXRjaGVyPFQ+IGZyb20gYSBnaXZlbiBsaXN0
IG9mIG1hdGNoZXJzIChidWlsdAorICAvLyBieSBCdWlsZExpc3QoKSkuIENvbWJpbmluZ01hdGNo
ZXI8VD4gaXMgdXNlZCB0byBjb21iaW5lIHRoZSBtYXRjaGVycyBvZiB0aGUKKyAgLy8gbGlzdC4g
Q29tYmluaW5nTWF0Y2hlcjxUPiBtdXN0IGltcGxlbWVudCBNYXRjaGVySW50ZXJmYWNlPFQ+IGFu
ZCBoYXZlIGEKKyAgLy8gY29uc3RydWN0b3IgdGFraW5nIHR3byBNYXRjaGVyPFQ+cyBhcyBpbnB1
dC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHRlbXBsYXRlIDx0eXBlbmFtZSAvKiBUICovPiBj
bGFzcyBDb21iaW5pbmdNYXRjaGVyPgorICBzdGF0aWMgTWF0Y2hlcjxUPiBDcmVhdGVNYXRjaGVy
KGNvbnN0IExpc3RUeXBlJiBtYXRjaGVycykgeworICAgIHJldHVybiBNYXRjaGVyPFQ+KG5ldyBD
b21iaW5pbmdNYXRjaGVyPFQ+KAorICAgICAgICBTYWZlTWF0Y2hlckNhc3Q8VD4obWF0Y2hlcnMu
Zmlyc3QpLAorICAgICAgICBNYXRjaGVyTGlzdFRhaWw6OnRlbXBsYXRlIENyZWF0ZU1hdGNoZXI8
VCwgQ29tYmluaW5nTWF0Y2hlcj4oCisgICAgICAgICAgICBtYXRjaGVycy5zZWNvbmQpKSk7Cisg
IH0KK307CisKKy8vIFRoZSBmb2xsb3dpbmcgZGVmaW5lcyB0aGUgYmFzZSBjYXNlIGZvciB0aGUg
cmVjdXJzaXZlIGRlZmluaXRpb24gb2YKKy8vIE1hdGNoZXJMaXN0LgordGVtcGxhdGUgPHR5cGVu
YW1lIE1hdGNoZXIxLCB0eXBlbmFtZSBNYXRjaGVyMj4KK3N0cnVjdCBNYXRjaGVyTGlzdDwyLCBN
YXRjaGVyMSwgTWF0Y2hlcjI+IHsKKyAgdHlwZWRlZiA6OnN0ZDo6cGFpcjxNYXRjaGVyMSwgTWF0
Y2hlcjI+IExpc3RUeXBlOworCisgIHN0YXRpYyBMaXN0VHlwZSBCdWlsZExpc3QoY29uc3QgTWF0
Y2hlcjEmIG1hdGNoZXIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE1hdGNo
ZXIyJiBtYXRjaGVyMikgeworICAgIHJldHVybiA6OnN0ZDo6cGFpcjxNYXRjaGVyMSwgTWF0Y2hl
cjI+KG1hdGNoZXIxLCBtYXRjaGVyMik7CisgIH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
dGVtcGxhdGUgPHR5cGVuYW1lIC8qIFQgKi8+IGNsYXNzIENvbWJpbmluZ01hdGNoZXI+CisgIHN0
YXRpYyBNYXRjaGVyPFQ+IENyZWF0ZU1hdGNoZXIoY29uc3QgTGlzdFR5cGUmIG1hdGNoZXJzKSB7
CisgICAgcmV0dXJuIE1hdGNoZXI8VD4obmV3IENvbWJpbmluZ01hdGNoZXI8VD4oCisgICAgICAg
IFNhZmVNYXRjaGVyQ2FzdDxUPihtYXRjaGVycy5maXJzdCksCisgICAgICAgIFNhZmVNYXRjaGVy
Q2FzdDxUPihtYXRjaGVycy5zZWNvbmQpKSk7CisgIH0KK307CisKKy8vIFZhcmlhZGljTWF0Y2hl
ciBpcyB1c2VkIGZvciB0aGUgdmFyaWFkaWMgaW1wbGVtZW50YXRpb24gb2YKKy8vIEFsbE9mKG1f
MSwgbV8yLCAuLi4pIGFuZCBBbnlPZihtXzEsIG1fMiwgLi4uKS4KKy8vIENvbWJpbmluZ01hdGNo
ZXI8VD4gaXMgdXNlZCB0byByZWN1cnNpdmVseSBjb21iaW5lIHRoZSBwcm92aWRlZCBtYXRjaGVy
cworLy8gKG9mIHR5cGUgQXJncy4uLikuCit0ZW1wbGF0ZSA8dGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IGNsYXNzIENvbWJpbmluZ01hdGNoZXIsIHR5cGVuYW1lLi4uIEFyZ3M+CitjbGFzcyBWYXJpYWRp
Y01hdGNoZXIgeworIHB1YmxpYzoKKyAgVmFyaWFkaWNNYXRjaGVyKGNvbnN0IEFyZ3MmLi4uIG1h
dGNoZXJzKSAgLy8gTk9MSU5UCisgICAgICA6IG1hdGNoZXJzXyhNYXRjaGVyTGlzdFR5cGU6OkJ1
aWxkTGlzdChtYXRjaGVycy4uLikpIHt9CisKKyAgLy8gVGhpcyB0ZW1wbGF0ZSB0eXBlIGNvbnZl
cnNpb24gb3BlcmF0b3IgYWxsb3dzIGFuCisgIC8vIFZhcmlhZGljTWF0Y2hlcjxNYXRjaGVyMSwg
TWF0Y2hlcjIuLi4+IG9iamVjdCB0byBtYXRjaCBhbnkgdHlwZSB0aGF0CisgIC8vIGFsbCBvZiB0
aGUgcHJvdmlkZWQgbWF0Y2hlcnMgKE1hdGNoZXIxLCBNYXRjaGVyMiwgLi4uKSBjYW4gbWF0Y2gu
CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBvcGVyYXRvciBNYXRjaGVyPFQ+KCkgY29uc3Qg
eworICAgIHJldHVybiBNYXRjaGVyTGlzdFR5cGU6OnRlbXBsYXRlIENyZWF0ZU1hdGNoZXI8VCwg
Q29tYmluaW5nTWF0Y2hlcj4oCisgICAgICAgIG1hdGNoZXJzXyk7CisgIH0KKworIHByaXZhdGU6
CisgIHR5cGVkZWYgTWF0Y2hlckxpc3Q8c2l6ZW9mLi4uKEFyZ3MpLCBBcmdzLi4uPiBNYXRjaGVy
TGlzdFR5cGU7CisKKyAgY29uc3QgdHlwZW5hbWUgTWF0Y2hlckxpc3RUeXBlOjpMaXN0VHlwZSBt
YXRjaGVyc187CisKKyAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhWYXJpYWRpY01hdGNoZXIpOwor
fTsKKwordGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+Cit1c2luZyBBbGxPZk1hdGNoZXIgPSBW
YXJpYWRpY01hdGNoZXI8Qm90aE9mTWF0Y2hlckltcGwsIEFyZ3MuLi4+OworCisjZW5kaWYgIC8v
IEdURVNUX0xBTkdfQ1hYMTEKKworLy8gVXNlZCBmb3IgaW1wbGVtZW50aW5nIHRoZSBBbGxPZiht
XzEsIC4uLiwgbV9uKSBtYXRjaGVyLCB3aGljaAorLy8gbWF0Y2hlcyBhIHZhbHVlIHRoYXQgbWF0
Y2hlcyBhbGwgb2YgdGhlIG1hdGNoZXJzIG1fMSwgLi4uLCBhbmQgbV9uLgordGVtcGxhdGUgPHR5
cGVuYW1lIE1hdGNoZXIxLCB0eXBlbmFtZSBNYXRjaGVyMj4KK2NsYXNzIEJvdGhPZk1hdGNoZXIg
eworIHB1YmxpYzoKKyAgQm90aE9mTWF0Y2hlcihNYXRjaGVyMSBtYXRjaGVyMSwgTWF0Y2hlcjIg
bWF0Y2hlcjIpCisgICAgICA6IG1hdGNoZXIxXyhtYXRjaGVyMSksIG1hdGNoZXIyXyhtYXRjaGVy
Mikge30KKworICAvLyBUaGlzIHRlbXBsYXRlIHR5cGUgY29udmVyc2lvbiBvcGVyYXRvciBhbGxv
d3MgYQorICAvLyBCb3RoT2ZNYXRjaGVyPE1hdGNoZXIxLCBNYXRjaGVyMj4gb2JqZWN0IHRvIG1h
dGNoIGFueSB0eXBlIHRoYXQKKyAgLy8gYm90aCBNYXRjaGVyMSBhbmQgTWF0Y2hlcjIgY2FuIG1h
dGNoLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgb3BlcmF0b3IgTWF0Y2hlcjxUPigpIGNv
bnN0IHsKKyAgICByZXR1cm4gTWF0Y2hlcjxUPihuZXcgQm90aE9mTWF0Y2hlckltcGw8VD4oU2Fm
ZU1hdGNoZXJDYXN0PFQ+KG1hdGNoZXIxXyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNhZmVNYXRjaGVyQ2FzdDxUPihtYXRjaGVyMl8pKSk7CisgIH0K
KworIHByaXZhdGU6CisgIE1hdGNoZXIxIG1hdGNoZXIxXzsKKyAgTWF0Y2hlcjIgbWF0Y2hlcjJf
OworCisgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oQm90aE9mTWF0Y2hlcik7Cit9OworCisvLyBJ
bXBsZW1lbnRzIHRoZSBBbnlPZihtMSwgbTIpIG1hdGNoZXIgZm9yIGEgcGFydGljdWxhciBhcmd1
bWVudCB0eXBlCisvLyBULiAgV2UgZG8gbm90IG5lc3QgaXQgaW5zaWRlIHRoZSBBbnlPZk1hdGNo
ZXIgY2xhc3MgdGVtcGxhdGUsIGFzCisvLyB0aGF0IHdpbGwgcHJldmVudCBkaWZmZXJlbnQgaW5z
dGFudGlhdGlvbnMgb2YgQW55T2ZNYXRjaGVyIGZyb20KKy8vIHNoYXJpbmcgdGhlIHNhbWUgRWl0
aGVyT2ZNYXRjaGVySW1wbDxUPiBjbGFzcy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3Mg
RWl0aGVyT2ZNYXRjaGVySW1wbCA6IHB1YmxpYyBNYXRjaGVySW50ZXJmYWNlPFQ+IHsKKyBwdWJs
aWM6CisgIEVpdGhlck9mTWF0Y2hlckltcGwoY29uc3QgTWF0Y2hlcjxUPiYgbWF0Y2hlcjEsIGNv
bnN0IE1hdGNoZXI8VD4mIG1hdGNoZXIyKQorICAgICAgOiBtYXRjaGVyMV8obWF0Y2hlcjEpLCBt
YXRjaGVyMl8obWF0Y2hlcjIpIHt9CisKKyAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6
Om9zdHJlYW0qIG9zKSBjb25zdCB7CisgICAgKm9zIDw8ICIoIjsKKyAgICBtYXRjaGVyMV8uRGVz
Y3JpYmVUbyhvcyk7CisgICAgKm9zIDw8ICIpIG9yICgiOworICAgIG1hdGNoZXIyXy5EZXNjcmli
ZVRvKG9zKTsKKyAgICAqb3MgPDwgIikiOworICB9CisKKyAgdmlydHVhbCB2b2lkIERlc2NyaWJl
TmVnYXRpb25Ubyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKKyAgICAqb3MgPDwgIigiOwor
ICAgIG1hdGNoZXIxXy5EZXNjcmliZU5lZ2F0aW9uVG8ob3MpOworICAgICpvcyA8PCAiKSBhbmQg
KCI7CisgICAgbWF0Y2hlcjJfLkRlc2NyaWJlTmVnYXRpb25Ubyhvcyk7CisgICAgKm9zIDw8ICIp
IjsKKyAgfQorCisgIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxhaW4oVCB4LCBNYXRjaFJlc3Vs
dExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgeworICAgIC8vIElmIGVpdGhlciBtYXRjaGVyMV8g
b3IgbWF0Y2hlcjJfIG1hdGNoZXMgeCwgd2UganVzdCBuZWVkIHRvCisgICAgLy8gZXhwbGFpbiB3
aHkgKm9uZSogb2YgdGhlbSBtYXRjaGVzLgorICAgIFN0cmluZ01hdGNoUmVzdWx0TGlzdGVuZXIg
bGlzdGVuZXIxOworICAgIGlmIChtYXRjaGVyMV8uTWF0Y2hBbmRFeHBsYWluKHgsICZsaXN0ZW5l
cjEpKSB7CisgICAgICAqbGlzdGVuZXIgPDwgbGlzdGVuZXIxLnN0cigpOworICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCisgICAgU3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lciBsaXN0ZW5lcjI7
CisgICAgaWYgKG1hdGNoZXIyXy5NYXRjaEFuZEV4cGxhaW4oeCwgJmxpc3RlbmVyMikpIHsKKyAg
ICAgICpsaXN0ZW5lciA8PCBsaXN0ZW5lcjIuc3RyKCk7CisgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICAvLyBPdGhlcndpc2Ugd2UgbmVlZCB0byBleHBsYWluIHdoeSAqYm90aCogb2Yg
dGhlbSBmYWlsLgorICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHMxID0gbGlzdGVuZXIxLnN0cigpOwor
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHMyID0gbGlzdGVuZXIyLnN0cigpOworCisgICAgaWYgKHMx
ID09ICIiKSB7CisgICAgICAqbGlzdGVuZXIgPDwgczI7CisgICAgfSBlbHNlIHsKKyAgICAgICps
aXN0ZW5lciA8PCBzMTsKKyAgICAgIGlmIChzMiAhPSAiIikgeworICAgICAgICAqbGlzdGVuZXIg
PDwgIiwgYW5kICIgPDwgczI7CisgICAgICB9CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKKyAg
fQorCisgcHJpdmF0ZToKKyAgY29uc3QgTWF0Y2hlcjxUPiBtYXRjaGVyMV87CisgIGNvbnN0IE1h
dGNoZXI8VD4gbWF0Y2hlcjJfOworCisgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oRWl0aGVyT2ZN
YXRjaGVySW1wbCk7Cit9OworCisjaWYgR1RFU1RfTEFOR19DWFgxMQorLy8gQW55T2ZNYXRjaGVy
IGlzIHVzZWQgZm9yIHRoZSB2YXJpYWRpYyBpbXBsZW1lbnRhdGlvbiBvZiBBbnlPZihtXzEsIG1f
MiwgLi4uKS4KK3RlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgordXNpbmcgQW55T2ZNYXRjaGVy
ID0gVmFyaWFkaWNNYXRjaGVyPEVpdGhlck9mTWF0Y2hlckltcGwsIEFyZ3MuLi4+OworCisjZW5k
aWYgIC8vIEdURVNUX0xBTkdfQ1hYMTEKKworLy8gVXNlZCBmb3IgaW1wbGVtZW50aW5nIHRoZSBB
bnlPZihtXzEsIC4uLiwgbV9uKSBtYXRjaGVyLCB3aGljaAorLy8gbWF0Y2hlcyBhIHZhbHVlIHRo
YXQgbWF0Y2hlcyBhdCBsZWFzdCBvbmUgb2YgdGhlIG1hdGNoZXJzIG1fMSwgLi4uLAorLy8gYW5k
IG1fbi4KK3RlbXBsYXRlIDx0eXBlbmFtZSBNYXRjaGVyMSwgdHlwZW5hbWUgTWF0Y2hlcjI+Citj
bGFzcyBFaXRoZXJPZk1hdGNoZXIgeworIHB1YmxpYzoKKyAgRWl0aGVyT2ZNYXRjaGVyKE1hdGNo
ZXIxIG1hdGNoZXIxLCBNYXRjaGVyMiBtYXRjaGVyMikKKyAgICAgIDogbWF0Y2hlcjFfKG1hdGNo
ZXIxKSwgbWF0Y2hlcjJfKG1hdGNoZXIyKSB7fQorCisgIC8vIFRoaXMgdGVtcGxhdGUgdHlwZSBj
b252ZXJzaW9uIG9wZXJhdG9yIGFsbG93cyBhCisgIC8vIEVpdGhlck9mTWF0Y2hlcjxNYXRjaGVy
MSwgTWF0Y2hlcjI+IG9iamVjdCB0byBtYXRjaCBhbnkgdHlwZSB0aGF0CisgIC8vIGJvdGggTWF0
Y2hlcjEgYW5kIE1hdGNoZXIyIGNhbiBtYXRjaC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cisg
IG9wZXJhdG9yIE1hdGNoZXI8VD4oKSBjb25zdCB7CisgICAgcmV0dXJuIE1hdGNoZXI8VD4obmV3
IEVpdGhlck9mTWF0Y2hlckltcGw8VD4oCisgICAgICAgIFNhZmVNYXRjaGVyQ2FzdDxUPihtYXRj
aGVyMV8pLCBTYWZlTWF0Y2hlckNhc3Q8VD4obWF0Y2hlcjJfKSkpOworICB9CisKKyBwcml2YXRl
OgorICBNYXRjaGVyMSBtYXRjaGVyMV87CisgIE1hdGNoZXIyIG1hdGNoZXIyXzsKKworICBHVEVT
VF9ESVNBTExPV19BU1NJR05fKEVpdGhlck9mTWF0Y2hlcik7Cit9OworCisvLyBVc2VkIGZvciBp
bXBsZW1lbnRpbmcgVHJ1bHkocHJlZCksIHdoaWNoIHR1cm5zIGEgcHJlZGljYXRlIGludG8gYQor
Ly8gbWF0Y2hlci4KK3RlbXBsYXRlIDx0eXBlbmFtZSBQcmVkaWNhdGU+CitjbGFzcyBUcnVseU1h
dGNoZXIgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgVHJ1bHlNYXRjaGVyKFByZWRpY2F0ZSBwcmVk
KSA6IHByZWRpY2F0ZV8ocHJlZCkge30KKworICAvLyBUaGlzIG1ldGhvZCB0ZW1wbGF0ZSBhbGxv
d3MgVHJ1bHkocHJlZCkgdG8gYmUgdXNlZCBhcyBhIG1hdGNoZXIKKyAgLy8gZm9yIHR5cGUgVCB3
aGVyZSBUIGlzIHRoZSBhcmd1bWVudCB0eXBlIG9mIHByZWRpY2F0ZSAncHJlZCcuICBUaGUKKyAg
Ly8gYXJndW1lbnQgaXMgcGFzc2VkIGJ5IHJlZmVyZW5jZSBhcyB0aGUgcHJlZGljYXRlIG1heSBi
ZQorICAvLyBpbnRlcmVzdGVkIGluIHRoZSBhZGRyZXNzIG9mIHRoZSBhcmd1bWVudC4KKyAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CisgIGJvb2wgTWF0Y2hBbmRFeHBsYWluKFQmIHgsICAvLyBOT0xJ
TlQKKyAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHRMaXN0ZW5lciogLyogbGlzdGVu
ZXIgKi8pIGNvbnN0IHsKKyAgICAvLyBXaXRob3V0IHRoZSBpZi1zdGF0ZW1lbnQsIE1TVkMgc29t
ZXRpbWVzIHdhcm5zIGFib3V0IGNvbnZlcnRpbmcKKyAgICAvLyBhIHZhbHVlIHRvIGJvb2wgKHdh
cm5pbmcgNDgwMCkuCisgICAgLy8KKyAgICAvLyBXZSBjYW5ub3Qgd3JpdGUgJ3JldHVybiAhIXBy
ZWRpY2F0ZV8oeCk7JyBhcyB0aGF0IGRvZXNuJ3Qgd29yaworICAgIC8vIHdoZW4gcHJlZGljYXRl
Xyh4KSByZXR1cm5zIGEgY2xhc3MgY29udmVydGlibGUgdG8gYm9vbCBidXQKKyAgICAvLyBoYXZp
bmcgbm8gb3BlcmF0b3IhKCkuCisgICAgaWYgKHByZWRpY2F0ZV8oeCkpCisgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6
Om9zdHJlYW0qIG9zKSBjb25zdCB7CisgICAgKm9zIDw8ICJzYXRpc2ZpZXMgdGhlIGdpdmVuIHBy
ZWRpY2F0ZSI7CisgIH0KKworICB2b2lkIERlc2NyaWJlTmVnYXRpb25Ubyg6OnN0ZDo6b3N0cmVh
bSogb3MpIGNvbnN0IHsKKyAgICAqb3MgPDwgImRvZXNuJ3Qgc2F0aXNmeSB0aGUgZ2l2ZW4gcHJl
ZGljYXRlIjsKKyAgfQorCisgcHJpdmF0ZToKKyAgUHJlZGljYXRlIHByZWRpY2F0ZV87CisKKyAg
R1RFU1RfRElTQUxMT1dfQVNTSUdOXyhUcnVseU1hdGNoZXIpOworfTsKKworLy8gVXNlZCBmb3Ig
aW1wbGVtZW50aW5nIE1hdGNoZXMobWF0Y2hlciksIHdoaWNoIHR1cm5zIGEgbWF0Y2hlciBpbnRv
CisvLyBhIHByZWRpY2F0ZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBNPgorY2xhc3MgTWF0Y2hlckFz
UHJlZGljYXRlIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IE1hdGNoZXJBc1ByZWRpY2F0ZShNIG1h
dGNoZXIpIDogbWF0Y2hlcl8obWF0Y2hlcikge30KKworICAvLyBUaGlzIHRlbXBsYXRlIG9wZXJh
dG9yKCkgYWxsb3dzIE1hdGNoZXMobSkgdG8gYmUgdXNlZCBhcyBhCisgIC8vIHByZWRpY2F0ZSBv
biB0eXBlIFQgd2hlcmUgbSBpcyBhIG1hdGNoZXIgb24gdHlwZSBULgorICAvLworICAvLyBUaGUg
YXJndW1lbnQgeCBpcyBwYXNzZWQgYnkgcmVmZXJlbmNlIGluc3RlYWQgb2YgYnkgdmFsdWUsIGFz
CisgIC8vIHNvbWUgbWF0Y2hlciBtYXkgYmUgaW50ZXJlc3RlZCBpbiBpdHMgYWRkcmVzcyAoZS5n
LiBhcyBpbgorICAvLyBNYXRjaGVzKFJlZihuKSkoeCkpLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KKyAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IFQmIHgpIGNvbnN0IHsKKyAgICAvLyBXZSBsZXQg
bWF0Y2hlcl8gY29tbWl0IHRvIGEgcGFydGljdWxhciB0eXBlIGhlcmUgaW5zdGVhZCBvZgorICAg
IC8vIHdoZW4gdGhlIE1hdGNoZXJBc1ByZWRpY2F0ZSBvYmplY3Qgd2FzIGNvbnN0cnVjdGVkLiAg
VGhpcworICAgIC8vIGFsbG93cyB1cyB0byB3cml0ZSBNYXRjaGVzKG0pIHdoZXJlIG0gaXMgYSBw
b2x5bW9ycGhpYyBtYXRjaGVyCisgICAgLy8gKGUuZy4gRXEoNSkpLgorICAgIC8vCisgICAgLy8g
SWYgd2Ugd3JpdGUgTWF0Y2hlcjxUPihtYXRjaGVyXykuTWF0Y2hlcyh4KSBoZXJlLCBpdCB3b24n
dAorICAgIC8vIGNvbXBpbGUgd2hlbiBtYXRjaGVyXyBoYXMgdHlwZSBNYXRjaGVyPGNvbnN0IFQm
PjsgaWYgd2Ugd3JpdGUKKyAgICAvLyBNYXRjaGVyPGNvbnN0IFQmPihtYXRjaGVyXykuTWF0Y2hl
cyh4KSBoZXJlLCBpdCB3b24ndCBjb21waWxlCisgICAgLy8gd2hlbiBtYXRjaGVyXyBoYXMgdHlw
ZSBNYXRjaGVyPFQ+OyBpZiB3ZSBqdXN0IHdyaXRlCisgICAgLy8gbWF0Y2hlcl8uTWF0Y2hlcyh4
KSwgaXQgd29uJ3QgY29tcGlsZSB3aGVuIG1hdGNoZXJfIGlzCisgICAgLy8gcG9seW1vcnBoaWMs
IGUuZy4gRXEoNSkuCisgICAgLy8KKyAgICAvLyBNYXRjaGVyQ2FzdDxjb25zdCBUJj4oKSBpcyBu
ZWNlc3NhcnkgZm9yIG1ha2luZyB0aGUgY29kZSB3b3JrCisgICAgLy8gaW4gYWxsIG9mIHRoZSBh
Ym92ZSBzaXR1YXRpb25zLgorICAgIHJldHVybiBNYXRjaGVyQ2FzdDxjb25zdCBUJj4obWF0Y2hl
cl8pLk1hdGNoZXMoeCk7CisgIH0KKworIHByaXZhdGU6CisgIE0gbWF0Y2hlcl87CisKKyAgR1RF
U1RfRElTQUxMT1dfQVNTSUdOXyhNYXRjaGVyQXNQcmVkaWNhdGUpOworfTsKKworLy8gRm9yIGlt
cGxlbWVudGluZyBBU1NFUlRfVEhBVCgpIGFuZCBFWFBFQ1RfVEhBVCgpLiAgVGhlIHRlbXBsYXRl
CisvLyBhcmd1bWVudCBNIG11c3QgYmUgYSB0eXBlIHRoYXQgY2FuIGJlIGNvbnZlcnRlZCB0byBh
IG1hdGNoZXIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTT4KK2NsYXNzIFByZWRpY2F0ZUZvcm1hdHRl
ckZyb21NYXRjaGVyIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IFByZWRpY2F0ZUZvcm1hdHRlckZy
b21NYXRjaGVyKE0gbSkgOiBtYXRjaGVyXyhpbnRlcm5hbDo6bW92ZShtKSkge30KKworICAvLyBU
aGlzIHRlbXBsYXRlICgpIG9wZXJhdG9yIGFsbG93cyBhIFByZWRpY2F0ZUZvcm1hdHRlckZyb21N
YXRjaGVyCisgIC8vIG9iamVjdCB0byBhY3QgYXMgYSBwcmVkaWNhdGUtZm9ybWF0dGVyIHN1aXRh
YmxlIGZvciB1c2luZyB3aXRoCisgIC8vIEdvb2dsZSBUZXN0J3MgRVhQRUNUX1BSRURfRk9STUFU
MSgpIG1hY3JvLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgQXNzZXJ0aW9uUmVzdWx0IG9w
ZXJhdG9yKCkoY29uc3QgY2hhciogdmFsdWVfdGV4dCwgY29uc3QgVCYgeCkgY29uc3QgeworICAg
IC8vIFdlIGNvbnZlcnQgbWF0Y2hlcl8gdG8gYSBNYXRjaGVyPGNvbnN0IFQmPiAqbm93KiBpbnN0
ZWFkIG9mCisgICAgLy8gd2hlbiB0aGUgUHJlZGljYXRlRm9ybWF0dGVyRnJvbU1hdGNoZXIgb2Jq
ZWN0IHdhcyBjb25zdHJ1Y3RlZCwKKyAgICAvLyBhcyBtYXRjaGVyXyBtYXkgYmUgcG9seW1vcnBo
aWMgKGUuZy4gTm90TnVsbCgpKSBhbmQgd2Ugd29uJ3QKKyAgICAvLyBrbm93IHdoaWNoIHR5cGUg
dG8gaW5zdGFudGlhdGUgaXQgdG8gdW50aWwgd2UgYWN0dWFsbHkgc2VlIHRoZQorICAgIC8vIHR5
cGUgb2YgeCBoZXJlLgorICAgIC8vCisgICAgLy8gV2Ugd3JpdGUgU2FmZU1hdGNoZXJDYXN0PGNv
bnN0IFQmPihtYXRjaGVyXykgaW5zdGVhZCBvZgorICAgIC8vIE1hdGNoZXI8Y29uc3QgVCY+KG1h
dGNoZXJfKSwgYXMgdGhlIGxhdHRlciB3b24ndCBjb21waWxlIHdoZW4KKyAgICAvLyBtYXRjaGVy
XyBoYXMgdHlwZSBNYXRjaGVyPFQ+IChlLmcuIEFuPGludD4oKSkuCisgICAgLy8gV2UgZG9uJ3Qg
d3JpdGUgTWF0Y2hlckNhc3Q8Y29uc3QgVCY+IGVpdGhlciwgYXMgdGhhdCBhbGxvd3MKKyAgICAv
LyBwb3RlbnRpYWxseSB1bnNhZmUgZG93bmNhc3Rpbmcgb2YgdGhlIG1hdGNoZXIgYXJndW1lbnQu
CisgICAgY29uc3QgTWF0Y2hlcjxjb25zdCBUJj4gbWF0Y2hlciA9IFNhZmVNYXRjaGVyQ2FzdDxj
b25zdCBUJj4obWF0Y2hlcl8pOworICAgIFN0cmluZ01hdGNoUmVzdWx0TGlzdGVuZXIgbGlzdGVu
ZXI7CisgICAgaWYgKE1hdGNoUHJpbnRBbmRFeHBsYWluKHgsIG1hdGNoZXIsICZsaXN0ZW5lcikp
CisgICAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOworCisgICAgOjpzdGQ6OnN0cmluZ3N0
cmVhbSBzczsKKyAgICBzcyA8PCAiVmFsdWUgb2Y6ICIgPDwgdmFsdWVfdGV4dCA8PCAiXG4iCisg
ICAgICAgPDwgIkV4cGVjdGVkOiAiOworICAgIG1hdGNoZXIuRGVzY3JpYmVUbygmc3MpOworICAg
IHNzIDw8ICJcbiAgQWN0dWFsOiAiIDw8IGxpc3RlbmVyLnN0cigpOworICAgIHJldHVybiBBc3Nl
cnRpb25GYWlsdXJlKCkgPDwgc3Muc3RyKCk7CisgIH0KKworIHByaXZhdGU6CisgIGNvbnN0IE0g
bWF0Y2hlcl87CisKKyAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhQcmVkaWNhdGVGb3JtYXR0ZXJG
cm9tTWF0Y2hlcik7Cit9OworCisvLyBBIGhlbHBlciBmdW5jdGlvbiBmb3IgY29udmVydGluZyBh
IG1hdGNoZXIgdG8gYSBwcmVkaWNhdGUtZm9ybWF0dGVyCisvLyB3aXRob3V0IHRoZSB1c2VyIG5l
ZWRpbmcgdG8gZXhwbGljaXRseSB3cml0ZSB0aGUgdHlwZS4gIFRoaXMgaXMKKy8vIHVzZWQgZm9y
IGltcGxlbWVudGluZyBBU1NFUlRfVEhBVCgpIGFuZCBFWFBFQ1RfVEhBVCgpLgorLy8gSW1wbGVt
ZW50YXRpb24gZGV0YWlsOiAnbWF0Y2hlcicgaXMgcmVjZWl2ZWQgYnktdmFsdWUgdG8gZm9yY2Ug
ZGVjYXlpbmcuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTT4KK2lubGluZSBQcmVkaWNhdGVGb3JtYXR0
ZXJGcm9tTWF0Y2hlcjxNPgorTWFrZVByZWRpY2F0ZUZvcm1hdHRlckZyb21NYXRjaGVyKE0gbWF0
Y2hlcikgeworICByZXR1cm4gUHJlZGljYXRlRm9ybWF0dGVyRnJvbU1hdGNoZXI8TT4oaW50ZXJu
YWw6Om1vdmUobWF0Y2hlcikpOworfQorCisvLyBJbXBsZW1lbnRzIHRoZSBwb2x5bW9ycGhpYyBm
bG9hdGluZyBwb2ludCBlcXVhbGl0eSBtYXRjaGVyLCB3aGljaCBtYXRjaGVzCisvLyB0d28gZmxv
YXQgdmFsdWVzIHVzaW5nIFVMUC1iYXNlZCBhcHByb3hpbWF0aW9uIG9yLCBvcHRpb25hbGx5LCBh
CisvLyB1c2VyLXNwZWNpZmllZCBlcHNpbG9uLiAgVGhlIHRlbXBsYXRlIGlzIG1lYW50IHRvIGJl
IGluc3RhbnRpYXRlZCB3aXRoCisvLyBGbG9hdFR5cGUgYmVpbmcgZWl0aGVyIGZsb2F0IG9yIGRv
dWJsZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBGbG9hdFR5cGU+CitjbGFzcyBGbG9hdGluZ0VxTWF0
Y2hlciB7CisgcHVibGljOgorICAvLyBDb25zdHJ1Y3RvciBmb3IgRmxvYXRpbmdFcU1hdGNoZXIu
CisgIC8vIFRoZSBtYXRjaGVyJ3MgaW5wdXQgd2lsbCBiZSBjb21wYXJlZCB3aXRoIGV4cGVjdGVk
LiAgVGhlIG1hdGNoZXIgdHJlYXRzIHR3bworICAvLyBOQU5zIGFzIGVxdWFsIGlmIG5hbl9lcV9u
YW4gaXMgdHJ1ZS4gIE90aGVyd2lzZSwgdW5kZXIgSUVFRSBzdGFuZGFyZHMsCisgIC8vIGVxdWFs
aXR5IGNvbXBhcmlzb25zIGJldHdlZW4gTkFOcyB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2UuICBX
ZSBzcGVjaWZ5IGEKKyAgLy8gbmVnYXRpdmUgbWF4X2Fic19lcnJvcl8gdGVybSB0byBpbmRpY2F0
ZSB0aGF0IFVMUC1iYXNlZCBhcHByb3hpbWF0aW9uIHdpbGwKKyAgLy8gYmUgdXNlZCBmb3IgY29t
cGFyaXNvbi4KKyAgRmxvYXRpbmdFcU1hdGNoZXIoRmxvYXRUeXBlIGV4cGVjdGVkLCBib29sIG5h
bl9lcV9uYW4pIDoKKyAgICBleHBlY3RlZF8oZXhwZWN0ZWQpLCBuYW5fZXFfbmFuXyhuYW5fZXFf
bmFuKSwgbWF4X2Fic19lcnJvcl8oLTEpIHsKKyAgfQorCisgIC8vIENvbnN0cnVjdG9yIHRoYXQg
c3VwcG9ydHMgYSB1c2VyLXNwZWNpZmllZCBtYXhfYWJzX2Vycm9yIHRoYXQgd2lsbCBiZSB1c2Vk
CisgIC8vIGZvciBjb21wYXJpc29uIGluc3RlYWQgb2YgVUxQLWJhc2VkIGFwcHJveGltYXRpb24u
ICBUaGUgbWF4IGFic29sdXRlCisgIC8vIHNob3VsZCBiZSBub24tbmVnYXRpdmUuCisgIEZsb2F0
aW5nRXFNYXRjaGVyKEZsb2F0VHlwZSBleHBlY3RlZCwgYm9vbCBuYW5fZXFfbmFuLAorICAgICAg
ICAgICAgICAgICAgICBGbG9hdFR5cGUgbWF4X2Fic19lcnJvcikKKyAgICAgIDogZXhwZWN0ZWRf
KGV4cGVjdGVkKSwKKyAgICAgICAgbmFuX2VxX25hbl8obmFuX2VxX25hbiksCisgICAgICAgIG1h
eF9hYnNfZXJyb3JfKG1heF9hYnNfZXJyb3IpIHsKKyAgICBHVEVTVF9DSEVDS18obWF4X2Fic19l
cnJvciA+PSAwKQorICAgICAgICA8PCAiLCB3aGVyZSBtYXhfYWJzX2Vycm9yIGlzIiA8PCBtYXhf
YWJzX2Vycm9yOworICB9CisKKyAgLy8gSW1wbGVtZW50cyBmbG9hdGluZyBwb2ludCBlcXVhbGl0
eSBtYXRjaGVyIGFzIGEgTWF0Y2hlcjxUPi4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIGNs
YXNzIEltcGwgOiBwdWJsaWMgTWF0Y2hlckludGVyZmFjZTxUPiB7CisgICBwdWJsaWM6CisgICAg
SW1wbChGbG9hdFR5cGUgZXhwZWN0ZWQsIGJvb2wgbmFuX2VxX25hbiwgRmxvYXRUeXBlIG1heF9h
YnNfZXJyb3IpCisgICAgICAgIDogZXhwZWN0ZWRfKGV4cGVjdGVkKSwKKyAgICAgICAgICBuYW5f
ZXFfbmFuXyhuYW5fZXFfbmFuKSwKKyAgICAgICAgICBtYXhfYWJzX2Vycm9yXyhtYXhfYWJzX2Vy
cm9yKSB7fQorCisgICAgdmlydHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbihUIHZhbHVlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVu
ZXIpIGNvbnN0IHsKKyAgICAgIGNvbnN0IEZsb2F0aW5nUG9pbnQ8RmxvYXRUeXBlPiBhY3R1YWwo
dmFsdWUpLCBleHBlY3RlZChleHBlY3RlZF8pOworCisgICAgICAvLyBDb21wYXJlcyBOYU5zIGZp
cnN0LCBpZiBuYW5fZXFfbmFuXyBpcyB0cnVlLgorICAgICAgaWYgKGFjdHVhbC5pc19uYW4oKSB8
fCBleHBlY3RlZC5pc19uYW4oKSkgeworICAgICAgICBpZiAoYWN0dWFsLmlzX25hbigpICYmIGV4
cGVjdGVkLmlzX25hbigpKSB7CisgICAgICAgICAgcmV0dXJuIG5hbl9lcV9uYW5fOworICAgICAg
ICB9CisgICAgICAgIC8vIE9uZSBpcyBuYW47IHRoZSBvdGhlciBpcyBub3QgbmFuLgorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAgICBpZiAoSGFzTWF4QWJzRXJyb3IoKSkgewor
ICAgICAgICAvLyBXZSBwZXJmb3JtIGFuIGVxdWFsaXR5IGNoZWNrIHNvIHRoYXQgaW5mIHdpbGwg
bWF0Y2ggaW5mLCByZWdhcmRsZXNzCisgICAgICAgIC8vIG9mIGVycm9yIGJvdW5kcy4gIElmIHRo
ZSByZXN1bHQgb2YgdmFsdWUgLSBleHBlY3RlZF8gd291bGQgcmVzdWx0IGluCisgICAgICAgIC8v
IG92ZXJmbG93IG9yIGlmIGVpdGhlciB2YWx1ZSBpcyBpbmYsIHRoZSBkZWZhdWx0IHJlc3VsdCBp
cyBpbmZpbml0eSwKKyAgICAgICAgLy8gd2hpY2ggc2hvdWxkIG9ubHkgbWF0Y2ggaWYgbWF4X2Fi
c19lcnJvcl8gaXMgYWxzbyBpbmZpbml0eS4KKyAgICAgICAgaWYgKHZhbHVlID09IGV4cGVjdGVk
XykgeworICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgY29uc3Qg
RmxvYXRUeXBlIGRpZmYgPSB2YWx1ZSAtIGV4cGVjdGVkXzsKKyAgICAgICAgaWYgKGZhYnMoZGlm
ZikgPD0gbWF4X2Fic19lcnJvcl8pIHsKKyAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChsaXN0ZW5lci0+SXNJbnRlcmVzdGVkKCkpIHsKKyAgICAgICAgICAq
bGlzdGVuZXIgPDwgIndoaWNoIGlzICIgPDwgZGlmZiA8PCAiIGZyb20gIiA8PCBleHBlY3RlZF87
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcmV0dXJuIGFjdHVhbC5BbG1vc3RFcXVhbHMoZXhwZWN0ZWQpOworICAgICAgfQorICAgIH0K
KworICAgIHZpcnR1YWwgdm9pZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3Qg
eworICAgICAgLy8gb3MtPnByZWNpc2lvbigpIHJldHVybnMgdGhlIHByZXZpb3VzbHkgc2V0IHBy
ZWNpc2lvbiwgd2hpY2ggd2UKKyAgICAgIC8vIHN0b3JlIHRvIHJlc3RvcmUgdGhlIG9zdHJlYW0g
dG8gaXRzIG9yaWdpbmFsIGNvbmZpZ3VyYXRpb24KKyAgICAgIC8vIGFmdGVyIG91dHB1dHRpbmcu
CisgICAgICBjb25zdCA6OnN0ZDo6c3RyZWFtc2l6ZSBvbGRfcHJlY2lzaW9uID0gb3MtPnByZWNp
c2lvbigKKyAgICAgICAgICA6OnN0ZDo6bnVtZXJpY19saW1pdHM8RmxvYXRUeXBlPjo6ZGlnaXRz
MTAgKyAyKTsKKyAgICAgIGlmIChGbG9hdGluZ1BvaW50PEZsb2F0VHlwZT4oZXhwZWN0ZWRfKS5p
c19uYW4oKSkgeworICAgICAgICBpZiAobmFuX2VxX25hbl8pIHsKKyAgICAgICAgICAqb3MgPDwg
ImlzIE5hTiI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgKm9zIDw8ICJuZXZlciBtYXRj
aGVzIjsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIHsKKyAgICAgICAgKm9zIDw8ICJpcyBhcHBy
b3hpbWF0ZWx5ICIgPDwgZXhwZWN0ZWRfOworICAgICAgICBpZiAoSGFzTWF4QWJzRXJyb3IoKSkg
eworICAgICAgICAgICpvcyA8PCAiIChhYnNvbHV0ZSBlcnJvciA8PSAiIDw8IG1heF9hYnNfZXJy
b3JfIDw8ICIpIjsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgb3MtPnByZWNpc2lvbihvbGRf
cHJlY2lzaW9uKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRv
KDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgeworICAgICAgLy8gQXMgYmVmb3JlLCBnZXQgb3Jp
Z2luYWwgcHJlY2lzaW9uLgorICAgICAgY29uc3QgOjpzdGQ6OnN0cmVhbXNpemUgb2xkX3ByZWNp
c2lvbiA9IG9zLT5wcmVjaXNpb24oCisgICAgICAgICAgOjpzdGQ6Om51bWVyaWNfbGltaXRzPEZs
b2F0VHlwZT46OmRpZ2l0czEwICsgMik7CisgICAgICBpZiAoRmxvYXRpbmdQb2ludDxGbG9hdFR5
cGU+KGV4cGVjdGVkXykuaXNfbmFuKCkpIHsKKyAgICAgICAgaWYgKG5hbl9lcV9uYW5fKSB7Cisg
ICAgICAgICAgKm9zIDw8ICJpc24ndCBOYU4iOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICpvcyA8PCAiaXMgYW55dGhpbmciOworICAgICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAg
ICAqb3MgPDwgImlzbid0IGFwcHJveGltYXRlbHkgIiA8PCBleHBlY3RlZF87CisgICAgICAgIGlm
IChIYXNNYXhBYnNFcnJvcigpKSB7CisgICAgICAgICAgKm9zIDw8ICIgKGFic29sdXRlIGVycm9y
ID4gIiA8PCBtYXhfYWJzX2Vycm9yXyA8PCAiKSI7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAg
IC8vIFJlc3RvcmUgb3JpZ2luYWwgcHJlY2lzaW9uLgorICAgICAgb3MtPnByZWNpc2lvbihvbGRf
cHJlY2lzaW9uKTsKKyAgICB9CisKKyAgIHByaXZhdGU6CisgICAgYm9vbCBIYXNNYXhBYnNFcnJv
cigpIGNvbnN0IHsKKyAgICAgIHJldHVybiBtYXhfYWJzX2Vycm9yXyA+PSAwOworICAgIH0KKwor
ICAgIGNvbnN0IEZsb2F0VHlwZSBleHBlY3RlZF87CisgICAgY29uc3QgYm9vbCBuYW5fZXFfbmFu
XzsKKyAgICAvLyBtYXhfYWJzX2Vycm9yIHdpbGwgYmUgdXNlZCBmb3IgdmFsdWUgY29tcGFyaXNv
biB3aGVuID49IDAuCisgICAgY29uc3QgRmxvYXRUeXBlIG1heF9hYnNfZXJyb3JfOworCisgICAg
R1RFU1RfRElTQUxMT1dfQVNTSUdOXyhJbXBsKTsKKyAgfTsKKworICAvLyBUaGUgZm9sbG93aW5n
IDMgdHlwZSBjb252ZXJzaW9uIG9wZXJhdG9ycyBhbGxvdyBGbG9hdEVxKGV4cGVjdGVkKSBhbmQK
KyAgLy8gTmFuU2Vuc2l0aXZlRmxvYXRFcShleHBlY3RlZCkgdG8gYmUgdXNlZCBhcyBhIE1hdGNo
ZXI8ZmxvYXQ+LCBhCisgIC8vIE1hdGNoZXI8Y29uc3QgZmxvYXQmPiwgb3IgYSBNYXRjaGVyPGZs
b2F0Jj4sIGJ1dCBub3RoaW5nIGVsc2UuCisgIC8vIChXaGlsZSBHb29nbGUncyBDKysgY29kaW5n
IHN0eWxlIGRvZXNuJ3QgYWxsb3cgYXJndW1lbnRzIHBhc3NlZAorICAvLyBieSBub24tY29uc3Qg
cmVmZXJlbmNlLCB3ZSBtYXkgc2VlIHRoZW0gaW4gY29kZSBub3QgY29uZm9ybWluZyB0bworICAv
LyB0aGUgc3R5bGUuICBUaGVyZWZvcmUgR29vZ2xlIE1vY2sgbmVlZHMgdG8gc3VwcG9ydCB0aGVt
LikKKyAgb3BlcmF0b3IgTWF0Y2hlcjxGbG9hdFR5cGU+KCkgY29uc3QgeworICAgIHJldHVybiBN
YWtlTWF0Y2hlcigKKyAgICAgICAgbmV3IEltcGw8RmxvYXRUeXBlPihleHBlY3RlZF8sIG5hbl9l
cV9uYW5fLCBtYXhfYWJzX2Vycm9yXykpOworICB9CisKKyAgb3BlcmF0b3IgTWF0Y2hlcjxjb25z
dCBGbG9hdFR5cGUmPigpIGNvbnN0IHsKKyAgICByZXR1cm4gTWFrZU1hdGNoZXIoCisgICAgICAg
IG5ldyBJbXBsPGNvbnN0IEZsb2F0VHlwZSY+KGV4cGVjdGVkXywgbmFuX2VxX25hbl8sIG1heF9h
YnNfZXJyb3JfKSk7CisgIH0KKworICBvcGVyYXRvciBNYXRjaGVyPEZsb2F0VHlwZSY+KCkgY29u
c3QgeworICAgIHJldHVybiBNYWtlTWF0Y2hlcigKKyAgICAgICAgbmV3IEltcGw8RmxvYXRUeXBl
Jj4oZXhwZWN0ZWRfLCBuYW5fZXFfbmFuXywgbWF4X2Fic19lcnJvcl8pKTsKKyAgfQorCisgcHJp
dmF0ZToKKyAgY29uc3QgRmxvYXRUeXBlIGV4cGVjdGVkXzsKKyAgY29uc3QgYm9vbCBuYW5fZXFf
bmFuXzsKKyAgLy8gbWF4X2Fic19lcnJvciB3aWxsIGJlIHVzZWQgZm9yIHZhbHVlIGNvbXBhcmlz
b24gd2hlbiA+PSAwLgorICBjb25zdCBGbG9hdFR5cGUgbWF4X2Fic19lcnJvcl87CisKKyAgR1RF
U1RfRElTQUxMT1dfQVNTSUdOXyhGbG9hdGluZ0VxTWF0Y2hlcik7Cit9OworCisvLyBJbXBsZW1l
bnRzIHRoZSBQb2ludGVlKG0pIG1hdGNoZXIgZm9yIG1hdGNoaW5nIGEgcG9pbnRlciB3aG9zZQor
Ly8gcG9pbnRlZSBtYXRjaGVzIG1hdGNoZXIgbS4gIFRoZSBwb2ludGVyIGNhbiBiZSBlaXRoZXIg
cmF3IG9yIHNtYXJ0LgordGVtcGxhdGUgPHR5cGVuYW1lIElubmVyTWF0Y2hlcj4KK2NsYXNzIFBv
aW50ZWVNYXRjaGVyIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IFBvaW50ZWVNYXRjaGVyKGNvbnN0
IElubmVyTWF0Y2hlciYgbWF0Y2hlcikgOiBtYXRjaGVyXyhtYXRjaGVyKSB7fQorCisgIC8vIFRo
aXMgdHlwZSBjb252ZXJzaW9uIG9wZXJhdG9yIHRlbXBsYXRlIGFsbG93cyBQb2ludGVlKG0pIHRv
IGJlCisgIC8vIHVzZWQgYXMgYSBtYXRjaGVyIGZvciBhbnkgcG9pbnRlciB0eXBlIHdob3NlIHBv
aW50ZWUgdHlwZSBpcworICAvLyBjb21wYXRpYmxlIHdpdGggdGhlIGlubmVyIG1hdGNoZXIsIHdo
ZXJlIHR5cGUgUG9pbnRlciBjYW4gYmUKKyAgLy8gZWl0aGVyIGEgcmF3IHBvaW50ZXIgb3IgYSBz
bWFydCBwb2ludGVyLgorICAvLworICAvLyBUaGUgcmVhc29uIHdlIGRvIHRoaXMgaW5zdGVhZCBv
ZiByZWx5aW5nIG9uCisgIC8vIE1ha2VQb2x5bW9ycGhpY01hdGNoZXIoKSBpcyB0aGF0IHRoZSBs
YXR0ZXIgaXMgbm90IGZsZXhpYmxlCisgIC8vIGVub3VnaCBmb3IgaW1wbGVtZW50aW5nIHRoZSBE
ZXNjcmliZVRvKCkgbWV0aG9kIG9mIFBvaW50ZWUoKS4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFBv
aW50ZXI+CisgIG9wZXJhdG9yIE1hdGNoZXI8UG9pbnRlcj4oKSBjb25zdCB7CisgICAgcmV0dXJu
IE1ha2VNYXRjaGVyKG5ldyBJbXBsPFBvaW50ZXI+KG1hdGNoZXJfKSk7CisgIH0KKworIHByaXZh
dGU6CisgIC8vIFRoZSBtb25vbW9ycGhpYyBpbXBsZW1lbnRhdGlvbiB0aGF0IHdvcmtzIGZvciBh
IHBhcnRpY3VsYXIgcG9pbnRlciB0eXBlLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUG9pbnRlcj4K
KyAgY2xhc3MgSW1wbCA6IHB1YmxpYyBNYXRjaGVySW50ZXJmYWNlPFBvaW50ZXI+IHsKKyAgIHB1
YmxpYzoKKyAgICB0eXBlZGVmIHR5cGVuYW1lIFBvaW50ZWVPZjxHVEVTVF9SRU1PVkVfQ09OU1Rf
KCAgLy8gTk9MSU5UCisgICAgICAgIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfKFBvaW50ZXIpKT46
OnR5cGUgUG9pbnRlZTsKKworICAgIGV4cGxpY2l0IEltcGwoY29uc3QgSW5uZXJNYXRjaGVyJiBt
YXRjaGVyKQorICAgICAgICA6IG1hdGNoZXJfKE1hdGNoZXJDYXN0PGNvbnN0IFBvaW50ZWUmPiht
YXRjaGVyKSkge30KKworICAgIHZpcnR1YWwgdm9pZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFt
KiBvcykgY29uc3QgeworICAgICAgKm9zIDw8ICJwb2ludHMgdG8gYSB2YWx1ZSB0aGF0ICI7Cisg
ICAgICBtYXRjaGVyXy5EZXNjcmliZVRvKG9zKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQg
RGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgeworICAgICAgKm9z
IDw8ICJkb2VzIG5vdCBwb2ludCB0byBhIHZhbHVlIHRoYXQgIjsKKyAgICAgIG1hdGNoZXJfLkRl
c2NyaWJlVG8ob3MpOworICAgIH0KKworICAgIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxhaW4o
UG9pbnRlciBwb2ludGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hS
ZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNvbnN0IHsKKyAgICAgIGlmIChHZXRSYXdQb2ludGVy
KHBvaW50ZXIpID09IE5VTEwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgKmxpc3Rl
bmVyIDw8ICJ3aGljaCBwb2ludHMgdG8gIjsKKyAgICAgIHJldHVybiBNYXRjaFByaW50QW5kRXhw
bGFpbigqcG9pbnRlciwgbWF0Y2hlcl8sIGxpc3RlbmVyKTsKKyAgICB9CisKKyAgIHByaXZhdGU6
CisgICAgY29uc3QgTWF0Y2hlcjxjb25zdCBQb2ludGVlJj4gbWF0Y2hlcl87CisKKyAgICBHVEVT
VF9ESVNBTExPV19BU1NJR05fKEltcGwpOworICB9OworCisgIGNvbnN0IElubmVyTWF0Y2hlciBt
YXRjaGVyXzsKKworICBHVEVTVF9ESVNBTExPV19BU1NJR05fKFBvaW50ZWVNYXRjaGVyKTsKK307
CisKKy8vIEltcGxlbWVudHMgdGhlIFdoZW5EeW5hbWljQ2FzdFRvPFQ+KG0pIG1hdGNoZXIgdGhh
dCBtYXRjaGVzIGEgcG9pbnRlciBvcgorLy8gcmVmZXJlbmNlIHRoYXQgbWF0Y2hlcyBpbm5lcl9t
YXRjaGVyIHdoZW4gZHluYW1pY19jYXN0PFQ+IGlzIGFwcGxpZWQuCisvLyBUaGUgcmVzdWx0IG9m
IGR5bmFtaWNfY2FzdDxUbz4gaXMgZm9yd2FyZGVkIHRvIHRoZSBpbm5lciBtYXRjaGVyLgorLy8g
SWYgVG8gaXMgYSBwb2ludGVyIGFuZCB0aGUgY2FzdCBmYWlscywgdGhlIGlubmVyIG1hdGNoZXIg
d2lsbCByZWNlaXZlIE5VTEwuCisvLyBJZiBUbyBpcyBhIHJlZmVyZW5jZSBhbmQgdGhlIGNhc3Qg
ZmFpbHMsIHRoaXMgbWF0Y2hlciByZXR1cm5zIGZhbHNlCisvLyBpbW1lZGlhdGVseS4KK3RlbXBs
YXRlIDx0eXBlbmFtZSBUbz4KK2NsYXNzIFdoZW5EeW5hbWljQ2FzdFRvTWF0Y2hlckJhc2Ugewor
IHB1YmxpYzoKKyAgZXhwbGljaXQgV2hlbkR5bmFtaWNDYXN0VG9NYXRjaGVyQmFzZShjb25zdCBN
YXRjaGVyPFRvPiYgbWF0Y2hlcikKKyAgICAgIDogbWF0Y2hlcl8obWF0Y2hlcikge30KKworICB2
b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7CisgICAgR2V0Q2FzdFR5
cGVEZXNjcmlwdGlvbihvcyk7CisgICAgbWF0Y2hlcl8uRGVzY3JpYmVUbyhvcyk7CisgIH0KKwor
ICB2b2lkIERlc2NyaWJlTmVnYXRpb25Ubyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKKyAg
ICBHZXRDYXN0VHlwZURlc2NyaXB0aW9uKG9zKTsKKyAgICBtYXRjaGVyXy5EZXNjcmliZU5lZ2F0
aW9uVG8ob3MpOworICB9CisKKyBwcm90ZWN0ZWQ6CisgIGNvbnN0IE1hdGNoZXI8VG8+IG1hdGNo
ZXJfOworCisgIHN0YXRpYyBzdGQ6OnN0cmluZyBHZXRUb05hbWUoKSB7CisjaWYgR1RFU1RfSEFT
X1JUVEkKKyAgICByZXR1cm4gR2V0VHlwZU5hbWU8VG8+KCk7CisjZWxzZSAgLy8gR1RFU1RfSEFT
X1JUVEkKKyAgICByZXR1cm4gInRoZSB0YXJnZXQgdHlwZSI7CisjZW5kaWYgIC8vIEdURVNUX0hB
U19SVFRJCisgIH0KKworIHByaXZhdGU6CisgIHN0YXRpYyB2b2lkIEdldENhc3RUeXBlRGVzY3Jp
cHRpb24oOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgKm9zIDw8ICJ3aGVuIGR5bmFtaWNfY2Fz
dCB0byAiIDw8IEdldFRvTmFtZSgpIDw8ICIsICI7CisgIH0KKworICBHVEVTVF9ESVNBTExPV19B
U1NJR05fKFdoZW5EeW5hbWljQ2FzdFRvTWF0Y2hlckJhc2UpOworfTsKKworLy8gUHJpbWFyeSB0
ZW1wbGF0ZS4KKy8vIFRvIGlzIGEgcG9pbnRlci4gQ2FzdCBhbmQgZm9yd2FyZCB0aGUgcmVzdWx0
LgordGVtcGxhdGUgPHR5cGVuYW1lIFRvPgorY2xhc3MgV2hlbkR5bmFtaWNDYXN0VG9NYXRjaGVy
IDogcHVibGljIFdoZW5EeW5hbWljQ2FzdFRvTWF0Y2hlckJhc2U8VG8+IHsKKyBwdWJsaWM6Cisg
IGV4cGxpY2l0IFdoZW5EeW5hbWljQ2FzdFRvTWF0Y2hlcihjb25zdCBNYXRjaGVyPFRvPiYgbWF0
Y2hlcikKKyAgICAgIDogV2hlbkR5bmFtaWNDYXN0VG9NYXRjaGVyQmFzZTxUbz4obWF0Y2hlcikg
e30KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnJvbT4KKyAgYm9vbCBNYXRjaEFuZEV4cGxhaW4o
RnJvbSBmcm9tLCBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgeworICAgIC8v
IFRPRE8oc2JlbnphKTogQWRkIG1vcmUgZGV0YWlsIG9uIGZhaWx1cmVzLiBpZSBkaWQgdGhlIGR5
bl9jYXN0IGZhaWw/CisgICAgVG8gdG8gPSBkeW5hbWljX2Nhc3Q8VG8+KGZyb20pOworICAgIHJl
dHVybiBNYXRjaFByaW50QW5kRXhwbGFpbih0bywgdGhpcy0+bWF0Y2hlcl8sIGxpc3RlbmVyKTsK
KyAgfQorfTsKKworLy8gU3BlY2lhbGl6ZSBmb3IgcmVmZXJlbmNlcy4KKy8vIEluIHRoaXMgY2Fz
ZSB3ZSByZXR1cm4gZmFsc2UgaWYgdGhlIGR5bmFtaWNfY2FzdCBmYWlscy4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBUbz4KK2NsYXNzIFdoZW5EeW5hbWljQ2FzdFRvTWF0Y2hlcjxUbyY+IDogcHVibGlj
IFdoZW5EeW5hbWljQ2FzdFRvTWF0Y2hlckJhc2U8VG8mPiB7CisgcHVibGljOgorICBleHBsaWNp
dCBXaGVuRHluYW1pY0Nhc3RUb01hdGNoZXIoY29uc3QgTWF0Y2hlcjxUbyY+JiBtYXRjaGVyKQor
ICAgICAgOiBXaGVuRHluYW1pY0Nhc3RUb01hdGNoZXJCYXNlPFRvJj4obWF0Y2hlcikge30KKwor
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnJvbT4KKyAgYm9vbCBNYXRjaEFuZEV4cGxhaW4oRnJvbSYg
ZnJvbSwgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNvbnN0IHsKKyAgICAvLyBXZSBk
b24ndCB3YW50IGFuIHN0ZDo6YmFkX2Nhc3QgaGVyZSwgc28gZG8gdGhlIGNhc3Qgd2l0aCBwb2lu
dGVycy4KKyAgICBUbyogdG8gPSBkeW5hbWljX2Nhc3Q8VG8qPigmZnJvbSk7CisgICAgaWYgKHRv
ID09IE5VTEwpIHsKKyAgICAgICpsaXN0ZW5lciA8PCAid2hpY2ggY2Fubm90IGJlIGR5bmFtaWNf
Y2FzdCB0byAiIDw8IHRoaXMtPkdldFRvTmFtZSgpOworICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyAgICByZXR1cm4gTWF0Y2hQcmludEFuZEV4cGxhaW4oKnRvLCB0aGlzLT5tYXRjaGVyXywg
bGlzdGVuZXIpOworICB9Cit9OworCisvLyBJbXBsZW1lbnRzIHRoZSBGaWVsZCgpIG1hdGNoZXIg
Zm9yIG1hdGNoaW5nIGEgZmllbGQgKGkuZS4gbWVtYmVyCisvLyB2YXJpYWJsZSkgb2YgYW4gb2Jq
ZWN0LgordGVtcGxhdGUgPHR5cGVuYW1lIENsYXNzLCB0eXBlbmFtZSBGaWVsZFR5cGU+CitjbGFz
cyBGaWVsZE1hdGNoZXIgeworIHB1YmxpYzoKKyAgRmllbGRNYXRjaGVyKEZpZWxkVHlwZSBDbGFz
czo6KmZpZWxkLAorICAgICAgICAgICAgICAgY29uc3QgTWF0Y2hlcjxjb25zdCBGaWVsZFR5cGUm
PiYgbWF0Y2hlcikKKyAgICAgIDogZmllbGRfKGZpZWxkKSwgbWF0Y2hlcl8obWF0Y2hlcikge30K
KworICB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7CisgICAgKm9z
IDw8ICJpcyBhbiBvYmplY3Qgd2hvc2UgZ2l2ZW4gZmllbGQgIjsKKyAgICBtYXRjaGVyXy5EZXNj
cmliZVRvKG9zKTsKKyAgfQorCisgIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3Ry
ZWFtKiBvcykgY29uc3QgeworICAgICpvcyA8PCAiaXMgYW4gb2JqZWN0IHdob3NlIGdpdmVuIGZp
ZWxkICI7CisgICAgbWF0Y2hlcl8uRGVzY3JpYmVOZWdhdGlvblRvKG9zKTsKKyAgfQorCisgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgorICBib29sIE1hdGNoQW5kRXhwbGFpbihjb25zdCBUJiB2YWx1
ZSwgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNvbnN0IHsKKyAgICByZXR1cm4gTWF0
Y2hBbmRFeHBsYWluSW1wbCgKKyAgICAgICAgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6
CisgICAgICAgICAgICBpc19wb2ludGVyPEdURVNUX1JFTU9WRV9DT05TVF8oVCk+Ojp0eXBlKCks
CisgICAgICAgIHZhbHVlLCBsaXN0ZW5lcik7CisgIH0KKworIHByaXZhdGU6CisgIC8vIFRoZSBm
aXJzdCBhcmd1bWVudCBvZiBNYXRjaEFuZEV4cGxhaW5JbXBsKCkgaXMgbmVlZGVkIHRvIGhlbHAK
KyAgLy8gU3ltYmlhbidzIEMrKyBjb21waWxlciBjaG9vc2Ugd2hpY2ggb3ZlcmxvYWQgdG8gdXNl
LiAgSXRzIHR5cGUgaXMKKyAgLy8gdHJ1ZV90eXBlIGlmZiB0aGUgRmllbGQoKSBtYXRjaGVyIGlz
IHVzZWQgdG8gbWF0Y2ggYSBwb2ludGVyLgorICBib29sIE1hdGNoQW5kRXhwbGFpbkltcGwoZmFs
c2VfdHlwZSAvKiBpc19ub3RfcG9pbnRlciAqLywgY29uc3QgQ2xhc3MmIG9iaiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBjb25zdCB7
CisgICAgKmxpc3RlbmVyIDw8ICJ3aG9zZSBnaXZlbiBmaWVsZCBpcyAiOworICAgIHJldHVybiBN
YXRjaFByaW50QW5kRXhwbGFpbihvYmouKmZpZWxkXywgbWF0Y2hlcl8sIGxpc3RlbmVyKTsKKyAg
fQorCisgIGJvb2wgTWF0Y2hBbmRFeHBsYWluSW1wbCh0cnVlX3R5cGUgLyogaXNfcG9pbnRlciAq
LywgY29uc3QgQ2xhc3MqIHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3Vs
dExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgeworICAgIGlmIChwID09IE5VTEwpCisgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAqbGlzdGVuZXIgPDwgIndoaWNoIHBvaW50cyB0byBhbiBvYmpl
Y3QgIjsKKyAgICAvLyBTaW5jZSAqcCBoYXMgYSBmaWVsZCwgaXQgbXVzdCBiZSBhIGNsYXNzL3N0
cnVjdC91bmlvbiB0eXBlIGFuZAorICAgIC8vIHRodXMgY2Fubm90IGJlIGEgcG9pbnRlci4gIFRo
ZXJlZm9yZSB3ZSBwYXNzIGZhbHNlX3R5cGUoKSBhcworICAgIC8vIHRoZSBmaXJzdCBhcmd1bWVu
dC4KKyAgICByZXR1cm4gTWF0Y2hBbmRFeHBsYWluSW1wbChmYWxzZV90eXBlKCksICpwLCBsaXN0
ZW5lcik7CisgIH0KKworICBjb25zdCBGaWVsZFR5cGUgQ2xhc3M6OipmaWVsZF87CisgIGNvbnN0
IE1hdGNoZXI8Y29uc3QgRmllbGRUeXBlJj4gbWF0Y2hlcl87CisKKyAgR1RFU1RfRElTQUxMT1df
QVNTSUdOXyhGaWVsZE1hdGNoZXIpOworfTsKKworLy8gSW1wbGVtZW50cyB0aGUgUHJvcGVydHko
KSBtYXRjaGVyIGZvciBtYXRjaGluZyBhIHByb3BlcnR5CisvLyAoaS5lLiByZXR1cm4gdmFsdWUg
b2YgYSBnZXR0ZXIgbWV0aG9kKSBvZiBhbiBvYmplY3QuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xh
c3MsIHR5cGVuYW1lIFByb3BlcnR5VHlwZT4KK2NsYXNzIFByb3BlcnR5TWF0Y2hlciB7CisgcHVi
bGljOgorICAvLyBUaGUgcHJvcGVydHkgbWF5IGhhdmUgYSByZWZlcmVuY2UgdHlwZSwgc28gJ2Nv
bnN0IFByb3BlcnR5VHlwZSYnCisgIC8vIG1heSBjYXVzZSBkb3VibGUgcmVmZXJlbmNlcyBhbmQg
ZmFpbCB0byBjb21waWxlLiAgVGhhdCdzIHdoeSB3ZQorICAvLyBuZWVkIEdURVNUX1JFRkVSRU5D
RV9UT19DT05TVCwgd2hpY2ggd29ya3MgcmVnYXJkbGVzcyBvZgorICAvLyBQcm9wZXJ0eVR5cGUg
YmVpbmcgYSByZWZlcmVuY2Ugb3Igbm90LgorICB0eXBlZGVmIEdURVNUX1JFRkVSRU5DRV9UT19D
T05TVF8oUHJvcGVydHlUeXBlKSBSZWZUb0NvbnN0UHJvcGVydHk7CisKKyAgUHJvcGVydHlNYXRj
aGVyKFByb3BlcnR5VHlwZSAoQ2xhc3M6Oipwcm9wZXJ0eSkoKSBjb25zdCwKKyAgICAgICAgICAg
ICAgICAgIGNvbnN0IE1hdGNoZXI8UmVmVG9Db25zdFByb3BlcnR5PiYgbWF0Y2hlcikKKyAgICAg
IDogcHJvcGVydHlfKHByb3BlcnR5KSwgbWF0Y2hlcl8obWF0Y2hlcikge30KKworICB2b2lkIERl
c2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7CisgICAgKm9zIDw8ICJpcyBhbiBv
YmplY3Qgd2hvc2UgZ2l2ZW4gcHJvcGVydHkgIjsKKyAgICBtYXRjaGVyXy5EZXNjcmliZVRvKG9z
KTsKKyAgfQorCisgIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBvcykg
Y29uc3QgeworICAgICpvcyA8PCAiaXMgYW4gb2JqZWN0IHdob3NlIGdpdmVuIHByb3BlcnR5ICI7
CisgICAgbWF0Y2hlcl8uRGVzY3JpYmVOZWdhdGlvblRvKG9zKTsKKyAgfQorCisgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgorICBib29sIE1hdGNoQW5kRXhwbGFpbihjb25zdCBUJnZhbHVlLCBNYXRj
aFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgeworICAgIHJldHVybiBNYXRjaEFuZEV4
cGxhaW5JbXBsKAorICAgICAgICB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjoKKyAgICAg
ICAgICAgIGlzX3BvaW50ZXI8R1RFU1RfUkVNT1ZFX0NPTlNUXyhUKT46OnR5cGUoKSwKKyAgICAg
ICAgdmFsdWUsIGxpc3RlbmVyKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgLy8gVGhlIGZpcnN0IGFy
Z3VtZW50IG9mIE1hdGNoQW5kRXhwbGFpbkltcGwoKSBpcyBuZWVkZWQgdG8gaGVscAorICAvLyBT
eW1iaWFuJ3MgQysrIGNvbXBpbGVyIGNob29zZSB3aGljaCBvdmVybG9hZCB0byB1c2UuICBJdHMg
dHlwZSBpcworICAvLyB0cnVlX3R5cGUgaWZmIHRoZSBQcm9wZXJ0eSgpIG1hdGNoZXIgaXMgdXNl
ZCB0byBtYXRjaCBhIHBvaW50ZXIuCisgIGJvb2wgTWF0Y2hBbmRFeHBsYWluSW1wbChmYWxzZV90
eXBlIC8qIGlzX25vdF9wb2ludGVyICovLCBjb25zdCBDbGFzcyYgb2JqLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNvbnN0IHsKKyAg
ICAqbGlzdGVuZXIgPDwgIndob3NlIGdpdmVuIHByb3BlcnR5IGlzICI7CisgICAgLy8gQ2Fubm90
IHBhc3MgdGhlIHJldHVybiB2YWx1ZSAoZm9yIGV4YW1wbGUsIGludCkgdG8gTWF0Y2hQcmludEFu
ZEV4cGxhaW4sCisgICAgLy8gd2hpY2ggdGFrZXMgYSBub24tY29uc3QgcmVmZXJlbmNlIGFzIGFy
Z3VtZW50LgorI2lmIGRlZmluZWQoX1BSRUZBU1RfICkgJiYgX01TQ19WRVIgPT0gMTgwMAorICAg
IC8vIFdvcmthcm91bmQgYnVnIGluIFZDKysgMjAxMydzIC9hbmFseXplIHBhcnNlci4KKyAgICAv
LyBodHRwczovL2Nvbm5lY3QubWljcm9zb2Z0LmNvbS9WaXN1YWxTdHVkaW8vZmVlZGJhY2svZGV0
YWlscy8xMTA2MzYzL2ludGVybmFsLWNvbXBpbGVyLWVycm9yLXdpdGgtYW5hbHl6ZS1kdWUtdG8t
ZmFpbHVyZS10by1pbmZlci1tb3ZlCisgICAgcG9zaXg6OkFib3J0KCk7ICAvLyBUbyBtYWtlIHN1
cmUgaXQgaXMgbmV2ZXIgcnVuLgorICAgIHJldHVybiBmYWxzZTsKKyNlbHNlCisgICAgUmVmVG9D
b25zdFByb3BlcnR5IHJlc3VsdCA9IChvYmouKnByb3BlcnR5XykoKTsKKyAgICByZXR1cm4gTWF0
Y2hQcmludEFuZEV4cGxhaW4ocmVzdWx0LCBtYXRjaGVyXywgbGlzdGVuZXIpOworI2VuZGlmCisg
IH0KKworICBib29sIE1hdGNoQW5kRXhwbGFpbkltcGwodHJ1ZV90eXBlIC8qIGlzX3BvaW50ZXIg
Ki8sIGNvbnN0IENsYXNzKiBwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hSZXN1
bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNvbnN0IHsKKyAgICBpZiAocCA9PSBOVUxMKQorICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgKmxpc3RlbmVyIDw8ICJ3aGljaCBwb2ludHMgdG8gYW4gb2Jq
ZWN0ICI7CisgICAgLy8gU2luY2UgKnAgaGFzIGEgcHJvcGVydHkgbWV0aG9kLCBpdCBtdXN0IGJl
IGEgY2xhc3Mvc3RydWN0L3VuaW9uCisgICAgLy8gdHlwZSBhbmQgdGh1cyBjYW5ub3QgYmUgYSBw
b2ludGVyLiAgVGhlcmVmb3JlIHdlIHBhc3MKKyAgICAvLyBmYWxzZV90eXBlKCkgYXMgdGhlIGZp
cnN0IGFyZ3VtZW50LgorICAgIHJldHVybiBNYXRjaEFuZEV4cGxhaW5JbXBsKGZhbHNlX3R5cGUo
KSwgKnAsIGxpc3RlbmVyKTsKKyAgfQorCisgIFByb3BlcnR5VHlwZSAoQ2xhc3M6Oipwcm9wZXJ0
eV8pKCkgY29uc3Q7CisgIGNvbnN0IE1hdGNoZXI8UmVmVG9Db25zdFByb3BlcnR5PiBtYXRjaGVy
XzsKKworICBHVEVTVF9ESVNBTExPV19BU1NJR05fKFByb3BlcnR5TWF0Y2hlcik7Cit9OworCisv
LyBUeXBlIHRyYWl0cyBzcGVjaWZ5aW5nIHZhcmlvdXMgZmVhdHVyZXMgb2YgZGlmZmVyZW50IGZ1
bmN0b3JzIGZvciBSZXN1bHRPZi4KKy8vIFRoZSBkZWZhdWx0IHRlbXBsYXRlIHNwZWNpZmllcyBm
ZWF0dXJlcyBmb3IgZnVuY3RvciBvYmplY3RzLgorLy8gRnVuY3RvciBjbGFzc2VzIGhhdmUgdG8g
dHlwZWRlZiBhcmd1bWVudF90eXBlIGFuZCByZXN1bHRfdHlwZQorLy8gdG8gYmUgY29tcGF0aWJs
ZSB3aXRoIFJlc3VsdE9mLgordGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+CitzdHJ1Y3QgQ2Fs
bGFibGVUcmFpdHMgeworICB0eXBlZGVmIHR5cGVuYW1lIEZ1bmN0b3I6OnJlc3VsdF90eXBlIFJl
c3VsdFR5cGU7CisgIHR5cGVkZWYgRnVuY3RvciBTdG9yYWdlVHlwZTsKKworICBzdGF0aWMgdm9p
ZCBDaGVja0lzVmFsaWQoRnVuY3RvciAvKiBmdW5jdG9yICovKSB7fQorICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KKyAgc3RhdGljIFJlc3VsdFR5cGUgSW52b2tlKEZ1bmN0b3IgZiwgVCBhcmcpIHsg
cmV0dXJuIGYoYXJnKTsgfQorfTsKKworLy8gU3BlY2lhbGl6YXRpb24gZm9yIGZ1bmN0aW9uIHBv
aW50ZXJzLgordGVtcGxhdGUgPHR5cGVuYW1lIEFyZ1R5cGUsIHR5cGVuYW1lIFJlc1R5cGU+Citz
dHJ1Y3QgQ2FsbGFibGVUcmFpdHM8UmVzVHlwZSgqKShBcmdUeXBlKT4geworICB0eXBlZGVmIFJl
c1R5cGUgUmVzdWx0VHlwZTsKKyAgdHlwZWRlZiBSZXNUeXBlKCpTdG9yYWdlVHlwZSkoQXJnVHlw
ZSk7CisKKyAgc3RhdGljIHZvaWQgQ2hlY2tJc1ZhbGlkKFJlc1R5cGUoKmYpKEFyZ1R5cGUpKSB7
CisgICAgR1RFU1RfQ0hFQ0tfKGYgIT0gTlVMTCkKKyAgICAgICAgPDwgIk5VTEwgZnVuY3Rpb24g
cG9pbnRlciBpcyBwYXNzZWQgaW50byBSZXN1bHRPZigpLiI7CisgIH0KKyAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CisgIHN0YXRpYyBSZXNUeXBlIEludm9rZShSZXNUeXBlKCpmKShBcmdUeXBlKSwg
VCBhcmcpIHsKKyAgICByZXR1cm4gKCpmKShhcmcpOworICB9Cit9OworCisvLyBJbXBsZW1lbnRz
IHRoZSBSZXN1bHRPZigpIG1hdGNoZXIgZm9yIG1hdGNoaW5nIGEgcmV0dXJuIHZhbHVlIG9mIGEK
Ky8vIHVuYXJ5IGZ1bmN0aW9uIG9mIGFuIG9iamVjdC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBDYWxs
YWJsZT4KK2NsYXNzIFJlc3VsdE9mTWF0Y2hlciB7CisgcHVibGljOgorICB0eXBlZGVmIHR5cGVu
YW1lIENhbGxhYmxlVHJhaXRzPENhbGxhYmxlPjo6UmVzdWx0VHlwZSBSZXN1bHRUeXBlOworCisg
IFJlc3VsdE9mTWF0Y2hlcihDYWxsYWJsZSBjYWxsYWJsZSwgY29uc3QgTWF0Y2hlcjxSZXN1bHRU
eXBlPiYgbWF0Y2hlcikKKyAgICAgIDogY2FsbGFibGVfKGNhbGxhYmxlKSwgbWF0Y2hlcl8obWF0
Y2hlcikgeworICAgIENhbGxhYmxlVHJhaXRzPENhbGxhYmxlPjo6Q2hlY2tJc1ZhbGlkKGNhbGxh
YmxlXyk7CisgIH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgb3BlcmF0b3IgTWF0Y2hl
cjxUPigpIGNvbnN0IHsKKyAgICByZXR1cm4gTWF0Y2hlcjxUPihuZXcgSW1wbDxUPihjYWxsYWJs
ZV8sIG1hdGNoZXJfKSk7CisgIH0KKworIHByaXZhdGU6CisgIHR5cGVkZWYgdHlwZW5hbWUgQ2Fs
bGFibGVUcmFpdHM8Q2FsbGFibGU+OjpTdG9yYWdlVHlwZSBDYWxsYWJsZVN0b3JhZ2VUeXBlOwor
CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBjbGFzcyBJbXBsIDogcHVibGljIE1hdGNoZXJJ
bnRlcmZhY2U8VD4geworICAgcHVibGljOgorICAgIEltcGwoQ2FsbGFibGVTdG9yYWdlVHlwZSBj
YWxsYWJsZSwgY29uc3QgTWF0Y2hlcjxSZXN1bHRUeXBlPiYgbWF0Y2hlcikKKyAgICAgICAgOiBj
YWxsYWJsZV8oY2FsbGFibGUpLCBtYXRjaGVyXyhtYXRjaGVyKSB7fQorCisgICAgdmlydHVhbCB2
b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7CisgICAgICAqb3MgPDwg
ImlzIG1hcHBlZCBieSB0aGUgZ2l2ZW4gY2FsbGFibGUgdG8gYSB2YWx1ZSB0aGF0ICI7CisgICAg
ICBtYXRjaGVyXy5EZXNjcmliZVRvKG9zKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgRGVz
Y3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgeworICAgICAgKm9zIDw8
ICJpcyBtYXBwZWQgYnkgdGhlIGdpdmVuIGNhbGxhYmxlIHRvIGEgdmFsdWUgdGhhdCAiOworICAg
ICAgbWF0Y2hlcl8uRGVzY3JpYmVOZWdhdGlvblRvKG9zKTsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IGJvb2wgTWF0Y2hBbmRFeHBsYWluKFQgb2JqLCBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5l
cikgY29uc3QgeworICAgICAgKmxpc3RlbmVyIDw8ICJ3aGljaCBpcyBtYXBwZWQgYnkgdGhlIGdp
dmVuIGNhbGxhYmxlIHRvICI7CisgICAgICAvLyBDYW5ub3QgcGFzcyB0aGUgcmV0dXJuIHZhbHVl
IChmb3IgZXhhbXBsZSwgaW50KSB0bworICAgICAgLy8gTWF0Y2hQcmludEFuZEV4cGxhaW4sIHdo
aWNoIHRha2VzIGEgbm9uLWNvbnN0IHJlZmVyZW5jZSBhcyBhcmd1bWVudC4KKyAgICAgIFJlc3Vs
dFR5cGUgcmVzdWx0ID0KKyAgICAgICAgICBDYWxsYWJsZVRyYWl0czxDYWxsYWJsZT46OnRlbXBs
YXRlIEludm9rZTxUPihjYWxsYWJsZV8sIG9iaik7CisgICAgICByZXR1cm4gTWF0Y2hQcmludEFu
ZEV4cGxhaW4ocmVzdWx0LCBtYXRjaGVyXywgbGlzdGVuZXIpOworICAgIH0KKworICAgcHJpdmF0
ZToKKyAgICAvLyBGdW5jdG9ycyBvZnRlbiBkZWZpbmUgb3BlcmF0b3IoKSBhcyBub24tY29uc3Qg
bWV0aG9kIGV2ZW4gdGhvdWdoCisgICAgLy8gdGhleSBhcmUgYWN0dWFseSBzdGF0ZWxlc3MuIEJ1
dCB3ZSBuZWVkIHRvIHVzZSB0aGVtIGV2ZW4gd2hlbgorICAgIC8vICd0aGlzJyBpcyBhIGNvbnN0
IHBvaW50ZXIuIEl0J3MgdGhlIHVzZXIncyByZXNwb25zaWJpbGl0eSBub3QgdG8KKyAgICAvLyB1
c2Ugc3RhdGVmdWwgY2FsbGFibGVzIHdpdGggUmVzdWx0T2YoKSwgd2hpY2ggZG9lcyd0IGd1YXJh
bnRlZQorICAgIC8vIGhvdyBtYW55IHRpbWVzIHRoZSBjYWxsYWJsZSB3aWxsIGJlIGludm9rZWQu
CisgICAgbXV0YWJsZSBDYWxsYWJsZVN0b3JhZ2VUeXBlIGNhbGxhYmxlXzsKKyAgICBjb25zdCBN
YXRjaGVyPFJlc3VsdFR5cGU+IG1hdGNoZXJfOworCisgICAgR1RFU1RfRElTQUxMT1dfQVNTSUdO
XyhJbXBsKTsKKyAgfTsgIC8vIGNsYXNzIEltcGwKKworICBjb25zdCBDYWxsYWJsZVN0b3JhZ2VU
eXBlIGNhbGxhYmxlXzsKKyAgY29uc3QgTWF0Y2hlcjxSZXN1bHRUeXBlPiBtYXRjaGVyXzsKKwor
ICBHVEVTVF9ESVNBTExPV19BU1NJR05fKFJlc3VsdE9mTWF0Y2hlcik7Cit9OworCisvLyBJbXBs
ZW1lbnRzIGEgbWF0Y2hlciB0aGF0IGNoZWNrcyB0aGUgc2l6ZSBvZiBhbiBTVEwtc3R5bGUgY29u
dGFpbmVyLgordGVtcGxhdGUgPHR5cGVuYW1lIFNpemVNYXRjaGVyPgorY2xhc3MgU2l6ZUlzTWF0
Y2hlciB7CisgcHVibGljOgorICBleHBsaWNpdCBTaXplSXNNYXRjaGVyKGNvbnN0IFNpemVNYXRj
aGVyJiBzaXplX21hdGNoZXIpCisgICAgICAgOiBzaXplX21hdGNoZXJfKHNpemVfbWF0Y2hlcikg
eworICB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lcj4KKyAgb3BlcmF0b3IgTWF0
Y2hlcjxDb250YWluZXI+KCkgY29uc3QgeworICAgIHJldHVybiBNYWtlTWF0Y2hlcihuZXcgSW1w
bDxDb250YWluZXI+KHNpemVfbWF0Y2hlcl8pKTsKKyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBDb250YWluZXI+CisgIGNsYXNzIEltcGwgOiBwdWJsaWMgTWF0Y2hlckludGVyZmFjZTxDb250
YWluZXI+IHsKKyAgIHB1YmxpYzoKKyAgICB0eXBlZGVmIGludGVybmFsOjpTdGxDb250YWluZXJW
aWV3PAorICAgICAgICAgR1RFU1RfUkVNT1ZFX1JFRkVSRU5DRV9BTkRfQ09OU1RfKENvbnRhaW5l
cik+IENvbnRhaW5lclZpZXc7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBDb250YWluZXJWaWV3Ojp0
eXBlOjpzaXplX3R5cGUgU2l6ZVR5cGU7CisgICAgZXhwbGljaXQgSW1wbChjb25zdCBTaXplTWF0
Y2hlciYgc2l6ZV9tYXRjaGVyKQorICAgICAgICA6IHNpemVfbWF0Y2hlcl8oTWF0Y2hlckNhc3Q8
U2l6ZVR5cGU+KHNpemVfbWF0Y2hlcikpIHt9CisKKyAgICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVU
byg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKKyAgICAgICpvcyA8PCAic2l6ZSAiOworICAg
ICAgc2l6ZV9tYXRjaGVyXy5EZXNjcmliZVRvKG9zKTsKKyAgICB9CisgICAgdmlydHVhbCB2b2lk
IERlc2NyaWJlTmVnYXRpb25Ubyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKKyAgICAgICpv
cyA8PCAic2l6ZSAiOworICAgICAgc2l6ZV9tYXRjaGVyXy5EZXNjcmliZU5lZ2F0aW9uVG8ob3Mp
OworICAgIH0KKworICAgIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxhaW4oQ29udGFpbmVyIGNv
bnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoUmVzdWx0TGlz
dGVuZXIqIGxpc3RlbmVyKSBjb25zdCB7CisgICAgICBTaXplVHlwZSBzaXplID0gY29udGFpbmVy
LnNpemUoKTsKKyAgICAgIFN0cmluZ01hdGNoUmVzdWx0TGlzdGVuZXIgc2l6ZV9saXN0ZW5lcjsK
KyAgICAgIGNvbnN0IGJvb2wgcmVzdWx0ID0gc2l6ZV9tYXRjaGVyXy5NYXRjaEFuZEV4cGxhaW4o
c2l6ZSwgJnNpemVfbGlzdGVuZXIpOworICAgICAgKmxpc3RlbmVyCisgICAgICAgICAgPDwgIndo
b3NlIHNpemUgIiA8PCBzaXplIDw8IChyZXN1bHQgPyAiIG1hdGNoZXMiIDogIiBkb2Vzbid0IG1h
dGNoIik7CisgICAgICBQcmludElmTm90RW1wdHkoc2l6ZV9saXN0ZW5lci5zdHIoKSwgbGlzdGVu
ZXItPnN0cmVhbSgpKTsKKyAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICBwcml2YXRl
OgorICAgIGNvbnN0IE1hdGNoZXI8U2l6ZVR5cGU+IHNpemVfbWF0Y2hlcl87CisgICAgR1RFU1Rf
RElTQUxMT1dfQVNTSUdOXyhJbXBsKTsKKyAgfTsKKworIHByaXZhdGU6CisgIGNvbnN0IFNpemVN
YXRjaGVyIHNpemVfbWF0Y2hlcl87CisgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oU2l6ZUlzTWF0
Y2hlcik7Cit9OworCisvLyBJbXBsZW1lbnRzIGEgbWF0Y2hlciB0aGF0IGNoZWNrcyB0aGUgYmVn
aW4oKS4uZW5kKCkgZGlzdGFuY2Ugb2YgYW4gU1RMLXN0eWxlCisvLyBjb250YWluZXIuCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgRGlzdGFuY2VNYXRjaGVyPgorY2xhc3MgQmVnaW5FbmREaXN0YW5jZUlz
TWF0Y2hlciB7CisgcHVibGljOgorICBleHBsaWNpdCBCZWdpbkVuZERpc3RhbmNlSXNNYXRjaGVy
KGNvbnN0IERpc3RhbmNlTWF0Y2hlciYgZGlzdGFuY2VfbWF0Y2hlcikKKyAgICAgIDogZGlzdGFu
Y2VfbWF0Y2hlcl8oZGlzdGFuY2VfbWF0Y2hlcikge30KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q29udGFpbmVyPgorICBvcGVyYXRvciBNYXRjaGVyPENvbnRhaW5lcj4oKSBjb25zdCB7CisgICAg
cmV0dXJuIE1ha2VNYXRjaGVyKG5ldyBJbXBsPENvbnRhaW5lcj4oZGlzdGFuY2VfbWF0Y2hlcl8p
KTsKKyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXI+CisgIGNsYXNzIEltcGwg
OiBwdWJsaWMgTWF0Y2hlckludGVyZmFjZTxDb250YWluZXI+IHsKKyAgIHB1YmxpYzoKKyAgICB0
eXBlZGVmIGludGVybmFsOjpTdGxDb250YWluZXJWaWV3PAorICAgICAgICBHVEVTVF9SRU1PVkVf
UkVGRVJFTkNFX0FORF9DT05TVF8oQ29udGFpbmVyKT4gQ29udGFpbmVyVmlldzsKKyAgICB0eXBl
ZGVmIHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPAorICAgICAgICB0eXBlbmFtZSBDb250
YWluZXJWaWV3Ojp0eXBlOjpjb25zdF9pdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQorICAgICAg
ICBEaXN0YW5jZVR5cGU7CisgICAgZXhwbGljaXQgSW1wbChjb25zdCBEaXN0YW5jZU1hdGNoZXIm
IGRpc3RhbmNlX21hdGNoZXIpCisgICAgICAgIDogZGlzdGFuY2VfbWF0Y2hlcl8oTWF0Y2hlckNh
c3Q8RGlzdGFuY2VUeXBlPihkaXN0YW5jZV9tYXRjaGVyKSkge30KKworICAgIHZpcnR1YWwgdm9p
ZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgeworICAgICAgKm9zIDw8ICJk
aXN0YW5jZSBiZXR3ZWVuIGJlZ2luKCkgYW5kIGVuZCgpICI7CisgICAgICBkaXN0YW5jZV9tYXRj
aGVyXy5EZXNjcmliZVRvKG9zKTsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIERlc2NyaWJlTmVn
YXRpb25Ubyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKKyAgICAgICpvcyA8PCAiZGlzdGFu
Y2UgYmV0d2VlbiBiZWdpbigpIGFuZCBlbmQoKSAiOworICAgICAgZGlzdGFuY2VfbWF0Y2hlcl8u
RGVzY3JpYmVOZWdhdGlvblRvKG9zKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGJvb2wgTWF0Y2hB
bmRFeHBsYWluKENvbnRhaW5lciBjb250YWluZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgeworI2lmIEdURVNU
X0hBU19TVERfQkVHSU5fQU5EX0VORF8KKyAgICAgIHVzaW5nIHN0ZDo6YmVnaW47CisgICAgICB1
c2luZyBzdGQ6OmVuZDsKKyAgICAgIERpc3RhbmNlVHlwZSBkaXN0YW5jZSA9IHN0ZDo6ZGlzdGFu
Y2UoYmVnaW4oY29udGFpbmVyKSwgZW5kKGNvbnRhaW5lcikpOworI2Vsc2UKKyAgICAgIERpc3Rh
bmNlVHlwZSBkaXN0YW5jZSA9IHN0ZDo6ZGlzdGFuY2UoY29udGFpbmVyLmJlZ2luKCksIGNvbnRh
aW5lci5lbmQoKSk7CisjZW5kaWYKKyAgICAgIFN0cmluZ01hdGNoUmVzdWx0TGlzdGVuZXIgZGlz
dGFuY2VfbGlzdGVuZXI7CisgICAgICBjb25zdCBib29sIHJlc3VsdCA9CisgICAgICAgICAgZGlz
dGFuY2VfbWF0Y2hlcl8uTWF0Y2hBbmRFeHBsYWluKGRpc3RhbmNlLCAmZGlzdGFuY2VfbGlzdGVu
ZXIpOworICAgICAgKmxpc3RlbmVyIDw8ICJ3aG9zZSBkaXN0YW5jZSBiZXR3ZWVuIGJlZ2luKCkg
YW5kIGVuZCgpICIgPDwgZGlzdGFuY2UKKyAgICAgICAgICAgICAgICA8PCAocmVzdWx0ID8gIiBt
YXRjaGVzIiA6ICIgZG9lc24ndCBtYXRjaCIpOworICAgICAgUHJpbnRJZk5vdEVtcHR5KGRpc3Rh
bmNlX2xpc3RlbmVyLnN0cigpLCBsaXN0ZW5lci0+c3RyZWFtKCkpOworICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisKKyAgIHByaXZhdGU6CisgICAgY29uc3QgTWF0Y2hlcjxEaXN0YW5jZVR5
cGU+IGRpc3RhbmNlX21hdGNoZXJfOworICAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oSW1wbCk7
CisgIH07CisKKyBwcml2YXRlOgorICBjb25zdCBEaXN0YW5jZU1hdGNoZXIgZGlzdGFuY2VfbWF0
Y2hlcl87CisgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oQmVnaW5FbmREaXN0YW5jZUlzTWF0Y2hl
cik7Cit9OworCisvLyBJbXBsZW1lbnRzIGFuIGVxdWFsaXR5IG1hdGNoZXIgZm9yIGFueSBTVEwt
c3R5bGUgY29udGFpbmVyIHdob3NlIGVsZW1lbnRzCisvLyBzdXBwb3J0ID09LiBUaGlzIG1hdGNo
ZXIgaXMgbGlrZSBFcSgpLCBidXQgaXRzIGZhaWx1cmUgZXhwbGFuYXRpb25zIHByb3ZpZGUKKy8v
IG1vcmUgZGV0YWlsZWQgaW5mb3JtYXRpb24gdGhhdCBpcyB1c2VmdWwgd2hlbiB0aGUgY29udGFp
bmVyIGlzIHVzZWQgYXMgYSBzZXQuCisvLyBUaGUgZmFpbHVyZSBtZXNzYWdlIHJlcG9ydHMgZWxl
bWVudHMgdGhhdCBhcmUgaW4gb25lIG9mIHRoZSBvcGVyYW5kcyBidXQgbm90CisvLyB0aGUgb3Ro
ZXIuIFRoZSBmYWlsdXJlIG1lc3NhZ2VzIGRvIG5vdCByZXBvcnQgZHVwbGljYXRlIG9yIG91dC1v
Zi1vcmRlcgorLy8gZWxlbWVudHMgaW4gdGhlIGNvbnRhaW5lcnMgKHdoaWNoIGRvbid0IHByb3Bl
cmx5IG1hdHRlciB0byBzZXRzLCBidXQgY2FuCisvLyBvY2N1ciBpZiB0aGUgY29udGFpbmVycyBh
cmUgdmVjdG9ycyBvciBsaXN0cywgZm9yIGV4YW1wbGUpLgorLy8KKy8vIFVzZXMgdGhlIGNvbnRh
aW5lcidzIGNvbnN0X2l0ZXJhdG9yLCB2YWx1ZV90eXBlLCBvcGVyYXRvciA9PSwKKy8vIGJlZ2lu
KCksIGFuZCBlbmQoKS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXI+CitjbGFzcyBDb250
YWluZXJFcU1hdGNoZXIgeworIHB1YmxpYzoKKyAgdHlwZWRlZiBpbnRlcm5hbDo6U3RsQ29udGFp
bmVyVmlldzxDb250YWluZXI+IFZpZXc7CisgIHR5cGVkZWYgdHlwZW5hbWUgVmlldzo6dHlwZSBT
dGxDb250YWluZXI7CisgIHR5cGVkZWYgdHlwZW5hbWUgVmlldzo6Y29uc3RfcmVmZXJlbmNlIFN0
bENvbnRhaW5lclJlZmVyZW5jZTsKKworICAvLyBXZSBtYWtlIGEgY29weSBvZiBleHBlY3RlZCBp
biBjYXNlIHRoZSBlbGVtZW50cyBpbiBpdCBhcmUgbW9kaWZpZWQKKyAgLy8gYWZ0ZXIgdGhpcyBt
YXRjaGVyIGlzIGNyZWF0ZWQuCisgIGV4cGxpY2l0IENvbnRhaW5lckVxTWF0Y2hlcihjb25zdCBD
b250YWluZXImIGV4cGVjdGVkKQorICAgICAgOiBleHBlY3RlZF8oVmlldzo6Q29weShleHBlY3Rl
ZCkpIHsKKyAgICAvLyBNYWtlcyBzdXJlIHRoZSB1c2VyIGRvZXNuJ3QgaW5zdGFudGlhdGUgdGhp
cyBjbGFzcyB0ZW1wbGF0ZQorICAgIC8vIHdpdGggYSBjb25zdCBvciByZWZlcmVuY2UgdHlwZS4K
KyAgICAodm9pZCl0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE8Q29udGFpbmVyLAorICAgICAg
ICBHVEVTVF9SRU1PVkVfUkVGRVJFTkNFX0FORF9DT05TVF8oQ29udGFpbmVyKT4oKTsKKyAgfQor
CisgIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKKyAgICAqb3Mg
PDwgImVxdWFscyAiOworICAgIFVuaXZlcnNhbFByaW50KGV4cGVjdGVkXywgb3MpOworICB9Cisg
IHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgeworICAg
ICpvcyA8PCAiZG9lcyBub3QgZXF1YWwgIjsKKyAgICBVbml2ZXJzYWxQcmludChleHBlY3RlZF8s
IG9zKTsKKyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBMaHNDb250YWluZXI+CisgIGJvb2wg
TWF0Y2hBbmRFeHBsYWluKGNvbnN0IExoc0NvbnRhaW5lciYgbGhzLAorICAgICAgICAgICAgICAg
ICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgeworICAgIC8vIEdU
RVNUX1JFTU9WRV9DT05TVF8oKSBpcyBuZWVkZWQgdG8gd29yayBhcm91bmQgYW4gTVNWQyA4LjAg
YnVnCisgICAgLy8gdGhhdCBjYXVzZXMgTGhzQ29udGFpbmVyIHRvIGJlIGEgY29uc3QgdHlwZSBz
b21ldGltZXMuCisgICAgdHlwZWRlZiBpbnRlcm5hbDo6U3RsQ29udGFpbmVyVmlldzxHVEVTVF9S
RU1PVkVfQ09OU1RfKExoc0NvbnRhaW5lcik+CisgICAgICAgIExoc1ZpZXc7CisgICAgdHlwZWRl
ZiB0eXBlbmFtZSBMaHNWaWV3Ojp0eXBlIExoc1N0bENvbnRhaW5lcjsKKyAgICBTdGxDb250YWlu
ZXJSZWZlcmVuY2UgbGhzX3N0bF9jb250YWluZXIgPSBMaHNWaWV3OjpDb25zdFJlZmVyZW5jZShs
aHMpOworICAgIGlmIChsaHNfc3RsX2NvbnRhaW5lciA9PSBleHBlY3RlZF8pCisgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIDo6c3RkOjpvc3RyZWFtKiBjb25zdCBvcyA9IGxpc3RlbmVyLT5zdHJl
YW0oKTsKKyAgICBpZiAob3MgIT0gTlVMTCkgeworICAgICAgLy8gU29tZXRoaW5nIGlzIGRpZmZl
cmVudC4gQ2hlY2sgZm9yIGV4dHJhIHZhbHVlcyBmaXJzdC4KKyAgICAgIGJvb2wgcHJpbnRlZF9o
ZWFkZXIgPSBmYWxzZTsKKyAgICAgIGZvciAodHlwZW5hbWUgTGhzU3RsQ29udGFpbmVyOjpjb25z
dF9pdGVyYXRvciBpdCA9CisgICAgICAgICAgICAgICBsaHNfc3RsX2NvbnRhaW5lci5iZWdpbigp
OworICAgICAgICAgICBpdCAhPSBsaHNfc3RsX2NvbnRhaW5lci5lbmQoKTsgKytpdCkgeworICAg
ICAgICBpZiAoaW50ZXJuYWw6OkFycmF5QXdhcmVGaW5kKGV4cGVjdGVkXy5iZWdpbigpLCBleHBl
Y3RlZF8uZW5kKCksICppdCkgPT0KKyAgICAgICAgICAgIGV4cGVjdGVkXy5lbmQoKSkgeworICAg
ICAgICAgIGlmIChwcmludGVkX2hlYWRlcikgeworICAgICAgICAgICAgKm9zIDw8ICIsICI7Cisg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICpvcyA8PCAid2hpY2ggaGFzIHRoZXNlIHVu
ZXhwZWN0ZWQgZWxlbWVudHM6ICI7CisgICAgICAgICAgICBwcmludGVkX2hlYWRlciA9IHRydWU7
CisgICAgICAgICAgfQorICAgICAgICAgIFVuaXZlcnNhbFByaW50KCppdCwgb3MpOworICAgICAg
ICB9CisgICAgICB9CisKKyAgICAgIC8vIE5vdyBjaGVjayBmb3IgbWlzc2luZyB2YWx1ZXMuCisg
ICAgICBib29sIHByaW50ZWRfaGVhZGVyMiA9IGZhbHNlOworICAgICAgZm9yICh0eXBlbmFtZSBT
dGxDb250YWluZXI6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gZXhwZWN0ZWRfLmJlZ2luKCk7CisgICAg
ICAgICAgIGl0ICE9IGV4cGVjdGVkXy5lbmQoKTsgKytpdCkgeworICAgICAgICBpZiAoaW50ZXJu
YWw6OkFycmF5QXdhcmVGaW5kKAorICAgICAgICAgICAgICAgIGxoc19zdGxfY29udGFpbmVyLmJl
Z2luKCksIGxoc19zdGxfY29udGFpbmVyLmVuZCgpLCAqaXQpID09CisgICAgICAgICAgICBsaHNf
c3RsX2NvbnRhaW5lci5lbmQoKSkgeworICAgICAgICAgIGlmIChwcmludGVkX2hlYWRlcjIpIHsK
KyAgICAgICAgICAgICpvcyA8PCAiLCAiOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAqb3MgPDwgKHByaW50ZWRfaGVhZGVyID8gIixcbmFuZCIgOiAid2hpY2giKQorICAgICAgICAg
ICAgICAgIDw8ICIgZG9lc24ndCBoYXZlIHRoZXNlIGV4cGVjdGVkIGVsZW1lbnRzOiAiOworICAg
ICAgICAgICAgcHJpbnRlZF9oZWFkZXIyID0gdHJ1ZTsKKyAgICAgICAgICB9CisgICAgICAgICAg
VW5pdmVyc2FsUHJpbnQoKml0LCBvcyk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisKKyAg
ICByZXR1cm4gZmFsc2U7CisgIH0KKworIHByaXZhdGU6CisgIGNvbnN0IFN0bENvbnRhaW5lciBl
eHBlY3RlZF87CisKKyAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhDb250YWluZXJFcU1hdGNoZXIp
OworfTsKKworLy8gQSBjb21wYXJhdG9yIGZ1bmN0b3IgdGhhdCB1c2VzIHRoZSA8IG9wZXJhdG9y
IHRvIGNvbXBhcmUgdHdvIHZhbHVlcy4KK3N0cnVjdCBMZXNzQ29tcGFyYXRvciB7CisgIHRlbXBs
YXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorICBib29sIG9wZXJhdG9yKCkoY29uc3QgVCYg
bGhzLCBjb25zdCBVJiByaHMpIGNvbnN0IHsgcmV0dXJuIGxocyA8IHJoczsgfQorfTsKKworLy8g
SW1wbGVtZW50cyBXaGVuU29ydGVkQnkoY29tcGFyYXRvciwgY29udGFpbmVyX21hdGNoZXIpLgor
dGVtcGxhdGUgPHR5cGVuYW1lIENvbXBhcmF0b3IsIHR5cGVuYW1lIENvbnRhaW5lck1hdGNoZXI+
CitjbGFzcyBXaGVuU29ydGVkQnlNYXRjaGVyIHsKKyBwdWJsaWM6CisgIFdoZW5Tb3J0ZWRCeU1h
dGNoZXIoY29uc3QgQ29tcGFyYXRvciYgY29tcGFyYXRvciwKKyAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBDb250YWluZXJNYXRjaGVyJiBtYXRjaGVyKQorICAgICAgOiBjb21wYXJhdG9yXyhj
b21wYXJhdG9yKSwgbWF0Y2hlcl8obWF0Y2hlcikge30KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
TGhzQ29udGFpbmVyPgorICBvcGVyYXRvciBNYXRjaGVyPExoc0NvbnRhaW5lcj4oKSBjb25zdCB7
CisgICAgcmV0dXJuIE1ha2VNYXRjaGVyKG5ldyBJbXBsPExoc0NvbnRhaW5lcj4oY29tcGFyYXRv
cl8sIG1hdGNoZXJfKSk7CisgIH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGhzQ29udGFpbmVy
PgorICBjbGFzcyBJbXBsIDogcHVibGljIE1hdGNoZXJJbnRlcmZhY2U8TGhzQ29udGFpbmVyPiB7
CisgICBwdWJsaWM6CisgICAgdHlwZWRlZiBpbnRlcm5hbDo6U3RsQ29udGFpbmVyVmlldzwKKyAg
ICAgICAgIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfQU5EX0NPTlNUXyhMaHNDb250YWluZXIpPiBM
aHNWaWV3OworICAgIHR5cGVkZWYgdHlwZW5hbWUgTGhzVmlldzo6dHlwZSBMaHNTdGxDb250YWlu
ZXI7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBMaHNWaWV3Ojpjb25zdF9yZWZlcmVuY2UgTGhzU3Rs
Q29udGFpbmVyUmVmZXJlbmNlOworICAgIC8vIFRyYW5zZm9ybXMgc3RkOjpwYWlyPGNvbnN0IEtl
eSwgVmFsdWU+IGludG8gc3RkOjpwYWlyPEtleSwgVmFsdWU+CisgICAgLy8gc28gdGhhdCB3ZSBj
YW4gbWF0Y2ggYXNzb2NpYXRpdmUgY29udGFpbmVycy4KKyAgICB0eXBlZGVmIHR5cGVuYW1lIFJl
bW92ZUNvbnN0RnJvbUtleTwKKyAgICAgICAgdHlwZW5hbWUgTGhzU3RsQ29udGFpbmVyOjp2YWx1
ZV90eXBlPjo6dHlwZSBMaHNWYWx1ZTsKKworICAgIEltcGwoY29uc3QgQ29tcGFyYXRvciYgY29t
cGFyYXRvciwgY29uc3QgQ29udGFpbmVyTWF0Y2hlciYgbWF0Y2hlcikKKyAgICAgICAgOiBjb21w
YXJhdG9yXyhjb21wYXJhdG9yKSwgbWF0Y2hlcl8obWF0Y2hlcikge30KKworICAgIHZpcnR1YWwg
dm9pZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgeworICAgICAgKm9zIDw8
ICIod2hlbiBzb3J0ZWQpICI7CisgICAgICBtYXRjaGVyXy5EZXNjcmliZVRvKG9zKTsKKyAgICB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBv
cykgY29uc3QgeworICAgICAgKm9zIDw8ICIod2hlbiBzb3J0ZWQpICI7CisgICAgICBtYXRjaGVy
Xy5EZXNjcmliZU5lZ2F0aW9uVG8ob3MpOworICAgIH0KKworICAgIHZpcnR1YWwgYm9vbCBNYXRj
aEFuZEV4cGxhaW4oTGhzQ29udGFpbmVyIGxocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBjb25zdCB7CisgICAgICBMaHNT
dGxDb250YWluZXJSZWZlcmVuY2UgbGhzX3N0bF9jb250YWluZXIgPSBMaHNWaWV3OjpDb25zdFJl
ZmVyZW5jZShsaHMpOworICAgICAgOjpzdGQ6OnZlY3RvcjxMaHNWYWx1ZT4gc29ydGVkX2NvbnRh
aW5lcihsaHNfc3RsX2NvbnRhaW5lci5iZWdpbigpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsaHNfc3RsX2NvbnRhaW5lci5lbmQoKSk7CisgICAgICA6
OnN0ZDo6c29ydCgKKyAgICAgICAgICAgc29ydGVkX2NvbnRhaW5lci5iZWdpbigpLCBzb3J0ZWRf
Y29udGFpbmVyLmVuZCgpLCBjb21wYXJhdG9yXyk7CisKKyAgICAgIGlmICghbGlzdGVuZXItPklz
SW50ZXJlc3RlZCgpKSB7CisgICAgICAgIC8vIElmIHRoZSBsaXN0ZW5lciBpcyBub3QgaW50ZXJl
c3RlZCwgd2UgZG8gbm90IG5lZWQgdG8KKyAgICAgICAgLy8gY29uc3RydWN0IHRoZSBpbm5lciBl
eHBsYW5hdGlvbi4KKyAgICAgICAgcmV0dXJuIG1hdGNoZXJfLk1hdGNoZXMoc29ydGVkX2NvbnRh
aW5lcik7CisgICAgICB9CisKKyAgICAgICpsaXN0ZW5lciA8PCAid2hpY2ggaXMgIjsKKyAgICAg
IFVuaXZlcnNhbFByaW50KHNvcnRlZF9jb250YWluZXIsIGxpc3RlbmVyLT5zdHJlYW0oKSk7Cisg
ICAgICAqbGlzdGVuZXIgPDwgIiB3aGVuIHNvcnRlZCI7CisKKyAgICAgIFN0cmluZ01hdGNoUmVz
dWx0TGlzdGVuZXIgaW5uZXJfbGlzdGVuZXI7CisgICAgICBjb25zdCBib29sIG1hdGNoID0gbWF0
Y2hlcl8uTWF0Y2hBbmRFeHBsYWluKHNvcnRlZF9jb250YWluZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbm5lcl9saXN0ZW5lcik7CisgICAg
ICBQcmludElmTm90RW1wdHkoaW5uZXJfbGlzdGVuZXIuc3RyKCksIGxpc3RlbmVyLT5zdHJlYW0o
KSk7CisgICAgICByZXR1cm4gbWF0Y2g7CisgICAgfQorCisgICBwcml2YXRlOgorICAgIGNvbnN0
IENvbXBhcmF0b3IgY29tcGFyYXRvcl87CisgICAgY29uc3QgTWF0Y2hlcjxjb25zdCA6OnN0ZDo6
dmVjdG9yPExoc1ZhbHVlPiY+IG1hdGNoZXJfOworCisgICAgR1RFU1RfRElTQUxMT1dfQ09QWV9B
TkRfQVNTSUdOXyhJbXBsKTsKKyAgfTsKKworIHByaXZhdGU6CisgIGNvbnN0IENvbXBhcmF0b3Ig
Y29tcGFyYXRvcl87CisgIGNvbnN0IENvbnRhaW5lck1hdGNoZXIgbWF0Y2hlcl87CisKKyAgR1RF
U1RfRElTQUxMT1dfQVNTSUdOXyhXaGVuU29ydGVkQnlNYXRjaGVyKTsKK307CisKKy8vIEltcGxl
bWVudHMgUG9pbnR3aXNlKHR1cGxlX21hdGNoZXIsIHJoc19jb250YWluZXIpLiAgdHVwbGVfbWF0
Y2hlcgorLy8gbXVzdCBiZSBhYmxlIHRvIGJlIHNhZmVseSBjYXN0IHRvIE1hdGNoZXI8dHVwbGU8
Y29uc3QgVDEmLCBjb25zdAorLy8gVDImPiA+LCB3aGVyZSBUMSBhbmQgVDIgYXJlIHRoZSB0eXBl
cyBvZiBlbGVtZW50cyBpbiB0aGUgTEhTCisvLyBjb250YWluZXIgYW5kIHRoZSBSSFMgY29udGFp
bmVyIHJlc3BlY3RpdmVseS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZU1hdGNoZXIsIHR5cGVu
YW1lIFJoc0NvbnRhaW5lcj4KK2NsYXNzIFBvaW50d2lzZU1hdGNoZXIgeworIHB1YmxpYzoKKyAg
dHlwZWRlZiBpbnRlcm5hbDo6U3RsQ29udGFpbmVyVmlldzxSaHNDb250YWluZXI+IFJoc1ZpZXc7
CisgIHR5cGVkZWYgdHlwZW5hbWUgUmhzVmlldzo6dHlwZSBSaHNTdGxDb250YWluZXI7CisgIHR5
cGVkZWYgdHlwZW5hbWUgUmhzU3RsQ29udGFpbmVyOjp2YWx1ZV90eXBlIFJoc1ZhbHVlOworCisg
IC8vIExpa2UgQ29udGFpbmVyRXEsIHdlIG1ha2UgYSBjb3B5IG9mIHJocyBpbiBjYXNlIHRoZSBl
bGVtZW50cyBpbgorICAvLyBpdCBhcmUgbW9kaWZpZWQgYWZ0ZXIgdGhpcyBtYXRjaGVyIGlzIGNy
ZWF0ZWQuCisgIFBvaW50d2lzZU1hdGNoZXIoY29uc3QgVHVwbGVNYXRjaGVyJiB0dXBsZV9tYXRj
aGVyLCBjb25zdCBSaHNDb250YWluZXImIHJocykKKyAgICAgIDogdHVwbGVfbWF0Y2hlcl8odHVw
bGVfbWF0Y2hlciksIHJoc18oUmhzVmlldzo6Q29weShyaHMpKSB7CisgICAgLy8gTWFrZXMgc3Vy
ZSB0aGUgdXNlciBkb2Vzbid0IGluc3RhbnRpYXRlIHRoaXMgY2xhc3MgdGVtcGxhdGUKKyAgICAv
LyB3aXRoIGEgY29uc3Qgb3IgcmVmZXJlbmNlIHR5cGUuCisgICAgKHZvaWQpdGVzdGluZzo6U3Rh
dGljQXNzZXJ0VHlwZUVxPFJoc0NvbnRhaW5lciwKKyAgICAgICAgR1RFU1RfUkVNT1ZFX1JFRkVS
RU5DRV9BTkRfQ09OU1RfKFJoc0NvbnRhaW5lcik+KCk7CisgIH0KKworICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgTGhzQ29udGFpbmVyPgorICBvcGVyYXRvciBNYXRjaGVyPExoc0NvbnRhaW5lcj4oKSBj
b25zdCB7CisgICAgcmV0dXJuIE1ha2VNYXRjaGVyKG5ldyBJbXBsPExoc0NvbnRhaW5lcj4odHVw
bGVfbWF0Y2hlcl8sIHJoc18pKTsKKyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBMaHNDb250
YWluZXI+CisgIGNsYXNzIEltcGwgOiBwdWJsaWMgTWF0Y2hlckludGVyZmFjZTxMaHNDb250YWlu
ZXI+IHsKKyAgIHB1YmxpYzoKKyAgICB0eXBlZGVmIGludGVybmFsOjpTdGxDb250YWluZXJWaWV3
PAorICAgICAgICAgR1RFU1RfUkVNT1ZFX1JFRkVSRU5DRV9BTkRfQ09OU1RfKExoc0NvbnRhaW5l
cik+IExoc1ZpZXc7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBMaHNWaWV3Ojp0eXBlIExoc1N0bENv
bnRhaW5lcjsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIExoc1ZpZXc6OmNvbnN0X3JlZmVyZW5jZSBM
aHNTdGxDb250YWluZXJSZWZlcmVuY2U7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBMaHNTdGxDb250
YWluZXI6OnZhbHVlX3R5cGUgTGhzVmFsdWU7CisgICAgLy8gV2UgcGFzcyB0aGUgTEhTIHZhbHVl
IGFuZCB0aGUgUkhTIHZhbHVlIHRvIHRoZSBpbm5lciBtYXRjaGVyIGJ5CisgICAgLy8gcmVmZXJl
bmNlLCBhcyB0aGV5IG1heSBiZSBleHBlbnNpdmUgdG8gY29weS4gIFdlIG11c3QgdXNlIHR1cGxl
CisgICAgLy8gaW5zdGVhZCBvZiBwYWlyIGhlcmUsIGFzIGEgcGFpciBjYW5ub3QgaG9sZCByZWZl
cmVuY2VzIChDKysgOTgsCisgICAgLy8gMjAuMi4yIFtsaWIucGFpcnNdKS4KKyAgICB0eXBlZGVm
IDo6dGVzdGluZzo6dHVwbGU8Y29uc3QgTGhzVmFsdWUmLCBjb25zdCBSaHNWYWx1ZSY+IElubmVy
TWF0Y2hlckFyZzsKKworICAgIEltcGwoY29uc3QgVHVwbGVNYXRjaGVyJiB0dXBsZV9tYXRjaGVy
LCBjb25zdCBSaHNTdGxDb250YWluZXImIHJocykKKyAgICAgICAgLy8gbW9ub190dXBsZV9tYXRj
aGVyXyBob2xkcyBhIG1vbm9tb3JwaGljIHZlcnNpb24gb2YgdGhlIHR1cGxlIG1hdGNoZXIuCisg
ICAgICAgIDogbW9ub190dXBsZV9tYXRjaGVyXyhTYWZlTWF0Y2hlckNhc3Q8SW5uZXJNYXRjaGVy
QXJnPih0dXBsZV9tYXRjaGVyKSksCisgICAgICAgICAgcmhzXyhyaHMpIHt9CisKKyAgICB2aXJ0
dWFsIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKKyAgICAgICpv
cyA8PCAiY29udGFpbnMgIiA8PCByaHNfLnNpemUoKQorICAgICAgICAgIDw8ICIgdmFsdWVzLCB3
aGVyZSBlYWNoIHZhbHVlIGFuZCBpdHMgY29ycmVzcG9uZGluZyB2YWx1ZSBpbiAiOworICAgICAg
VW5pdmVyc2FsUHJpbnRlcjxSaHNTdGxDb250YWluZXI+OjpQcmludChyaHNfLCBvcyk7CisgICAg
ICAqb3MgPDwgIiAiOworICAgICAgbW9ub190dXBsZV9tYXRjaGVyXy5EZXNjcmliZVRvKG9zKTsK
KyAgICB9CisgICAgdmlydHVhbCB2b2lkIERlc2NyaWJlTmVnYXRpb25Ubyg6OnN0ZDo6b3N0cmVh
bSogb3MpIGNvbnN0IHsKKyAgICAgICpvcyA8PCAiZG9lc24ndCBjb250YWluIGV4YWN0bHkgIiA8
PCByaHNfLnNpemUoKQorICAgICAgICAgIDw8ICIgdmFsdWVzLCBvciBjb250YWlucyBhIHZhbHVl
IHggYXQgc29tZSBpbmRleCBpIgorICAgICAgICAgIDw8ICIgd2hlcmUgeCBhbmQgdGhlIGktdGgg
dmFsdWUgb2YgIjsKKyAgICAgIFVuaXZlcnNhbFByaW50KHJoc18sIG9zKTsKKyAgICAgICpvcyA8
PCAiICI7CisgICAgICBtb25vX3R1cGxlX21hdGNoZXJfLkRlc2NyaWJlTmVnYXRpb25Ubyhvcyk7
CisgICAgfQorCisgICAgdmlydHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbihMaHNDb250YWluZXIg
bGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHRMaXN0ZW5l
ciogbGlzdGVuZXIpIGNvbnN0IHsKKyAgICAgIExoc1N0bENvbnRhaW5lclJlZmVyZW5jZSBsaHNf
c3RsX2NvbnRhaW5lciA9IExoc1ZpZXc6OkNvbnN0UmVmZXJlbmNlKGxocyk7CisgICAgICBjb25z
dCBzaXplX3QgYWN0dWFsX3NpemUgPSBsaHNfc3RsX2NvbnRhaW5lci5zaXplKCk7CisgICAgICBp
ZiAoYWN0dWFsX3NpemUgIT0gcmhzXy5zaXplKCkpIHsKKyAgICAgICAgKmxpc3RlbmVyIDw8ICJ3
aGljaCBjb250YWlucyAiIDw8IGFjdHVhbF9zaXplIDw8ICIgdmFsdWVzIjsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgfQorCisgICAgICB0eXBlbmFtZSBMaHNTdGxDb250YWluZXI6OmNv
bnN0X2l0ZXJhdG9yIGxlZnQgPSBsaHNfc3RsX2NvbnRhaW5lci5iZWdpbigpOworICAgICAgdHlw
ZW5hbWUgUmhzU3RsQ29udGFpbmVyOjpjb25zdF9pdGVyYXRvciByaWdodCA9IHJoc18uYmVnaW4o
KTsKKyAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IGFjdHVhbF9zaXplOyArK2ksICsrbGVm
dCwgKytyaWdodCkgeworICAgICAgICBjb25zdCBJbm5lck1hdGNoZXJBcmcgdmFsdWVfcGFpcigq
bGVmdCwgKnJpZ2h0KTsKKworICAgICAgICBpZiAobGlzdGVuZXItPklzSW50ZXJlc3RlZCgpKSB7
CisgICAgICAgICAgU3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lciBpbm5lcl9saXN0ZW5lcjsKKyAg
ICAgICAgICBpZiAoIW1vbm9fdHVwbGVfbWF0Y2hlcl8uTWF0Y2hBbmRFeHBsYWluKAorICAgICAg
ICAgICAgICAgICAgdmFsdWVfcGFpciwgJmlubmVyX2xpc3RlbmVyKSkgeworICAgICAgICAgICAg
Kmxpc3RlbmVyIDw8ICJ3aGVyZSB0aGUgdmFsdWUgcGFpciAoIjsKKyAgICAgICAgICAgIFVuaXZl
cnNhbFByaW50KCpsZWZ0LCBsaXN0ZW5lci0+c3RyZWFtKCkpOworICAgICAgICAgICAgKmxpc3Rl
bmVyIDw8ICIsICI7CisgICAgICAgICAgICBVbml2ZXJzYWxQcmludCgqcmlnaHQsIGxpc3RlbmVy
LT5zdHJlYW0oKSk7CisgICAgICAgICAgICAqbGlzdGVuZXIgPDwgIikgYXQgaW5kZXggIyIgPDwg
aSA8PCAiIGRvbid0IG1hdGNoIjsKKyAgICAgICAgICAgIFByaW50SWZOb3RFbXB0eShpbm5lcl9s
aXN0ZW5lci5zdHIoKSwgbGlzdGVuZXItPnN0cmVhbSgpKTsKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgaWYgKCFtb25v
X3R1cGxlX21hdGNoZXJfLk1hdGNoZXModmFsdWVfcGFpcikpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
CisgICBwcml2YXRlOgorICAgIGNvbnN0IE1hdGNoZXI8SW5uZXJNYXRjaGVyQXJnPiBtb25vX3R1
cGxlX21hdGNoZXJfOworICAgIGNvbnN0IFJoc1N0bENvbnRhaW5lciByaHNfOworCisgICAgR1RF
U1RfRElTQUxMT1dfQVNTSUdOXyhJbXBsKTsKKyAgfTsKKworIHByaXZhdGU6CisgIGNvbnN0IFR1
cGxlTWF0Y2hlciB0dXBsZV9tYXRjaGVyXzsKKyAgY29uc3QgUmhzU3RsQ29udGFpbmVyIHJoc187
CisKKyAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhQb2ludHdpc2VNYXRjaGVyKTsKK307CisKKy8v
IEhvbGRzIHRoZSBsb2dpYyBjb21tb24gdG8gQ29udGFpbnNNYXRjaGVySW1wbCBhbmQgRWFjaE1h
dGNoZXJJbXBsLgordGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lcj4KK2NsYXNzIFF1YW50aWZp
ZXJNYXRjaGVySW1wbCA6IHB1YmxpYyBNYXRjaGVySW50ZXJmYWNlPENvbnRhaW5lcj4geworIHB1
YmxpYzoKKyAgdHlwZWRlZiBHVEVTVF9SRU1PVkVfUkVGRVJFTkNFX0FORF9DT05TVF8oQ29udGFp
bmVyKSBSYXdDb250YWluZXI7CisgIHR5cGVkZWYgU3RsQ29udGFpbmVyVmlldzxSYXdDb250YWlu
ZXI+IFZpZXc7CisgIHR5cGVkZWYgdHlwZW5hbWUgVmlldzo6dHlwZSBTdGxDb250YWluZXI7Cisg
IHR5cGVkZWYgdHlwZW5hbWUgVmlldzo6Y29uc3RfcmVmZXJlbmNlIFN0bENvbnRhaW5lclJlZmVy
ZW5jZTsKKyAgdHlwZWRlZiB0eXBlbmFtZSBTdGxDb250YWluZXI6OnZhbHVlX3R5cGUgRWxlbWVu
dDsKKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5uZXJNYXRjaGVyPgorICBleHBsaWNpdCBRdWFu
dGlmaWVyTWF0Y2hlckltcGwoSW5uZXJNYXRjaGVyIGlubmVyX21hdGNoZXIpCisgICAgICA6IGlu
bmVyX21hdGNoZXJfKAorICAgICAgICAgICB0ZXN0aW5nOjpTYWZlTWF0Y2hlckNhc3Q8Y29uc3Qg
RWxlbWVudCY+KGlubmVyX21hdGNoZXIpKSB7fQorCisgIC8vIENoZWNrcyB3aGV0aGVyOgorICAv
LyAqIEFsbCBlbGVtZW50cyBpbiB0aGUgY29udGFpbmVyIG1hdGNoLCBpZiBhbGxfZWxlbWVudHNf
c2hvdWxkX21hdGNoLgorICAvLyAqIEFueSBlbGVtZW50IGluIHRoZSBjb250YWluZXIgbWF0Y2hl
cywgaWYgIWFsbF9lbGVtZW50c19zaG91bGRfbWF0Y2guCisgIGJvb2wgTWF0Y2hBbmRFeHBsYWlu
SW1wbChib29sIGFsbF9lbGVtZW50c19zaG91bGRfbWF0Y2gsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDb250YWluZXIgY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
TWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNvbnN0IHsKKyAgICBTdGxDb250YWluZXJS
ZWZlcmVuY2Ugc3RsX2NvbnRhaW5lciA9IFZpZXc6OkNvbnN0UmVmZXJlbmNlKGNvbnRhaW5lcik7
CisgICAgc2l6ZV90IGkgPSAwOworICAgIGZvciAodHlwZW5hbWUgU3RsQ29udGFpbmVyOjpjb25z
dF9pdGVyYXRvciBpdCA9IHN0bF9jb250YWluZXIuYmVnaW4oKTsKKyAgICAgICAgIGl0ICE9IHN0
bF9jb250YWluZXIuZW5kKCk7ICsraXQsICsraSkgeworICAgICAgU3RyaW5nTWF0Y2hSZXN1bHRM
aXN0ZW5lciBpbm5lcl9saXN0ZW5lcjsKKyAgICAgIGNvbnN0IGJvb2wgbWF0Y2hlcyA9IGlubmVy
X21hdGNoZXJfLk1hdGNoQW5kRXhwbGFpbigqaXQsICZpbm5lcl9saXN0ZW5lcik7CisKKyAgICAg
IGlmIChtYXRjaGVzICE9IGFsbF9lbGVtZW50c19zaG91bGRfbWF0Y2gpIHsKKyAgICAgICAgKmxp
c3RlbmVyIDw8ICJ3aG9zZSBlbGVtZW50ICMiIDw8IGkKKyAgICAgICAgICAgICAgICAgIDw8ICht
YXRjaGVzID8gIiBtYXRjaGVzIiA6ICIgZG9lc24ndCBtYXRjaCIpOworICAgICAgICBQcmludElm
Tm90RW1wdHkoaW5uZXJfbGlzdGVuZXIuc3RyKCksIGxpc3RlbmVyLT5zdHJlYW0oKSk7CisgICAg
ICAgIHJldHVybiAhYWxsX2VsZW1lbnRzX3Nob3VsZF9tYXRjaDsKKyAgICAgIH0KKyAgICB9Cisg
ICAgcmV0dXJuIGFsbF9lbGVtZW50c19zaG91bGRfbWF0Y2g7CisgIH0KKworIHByb3RlY3RlZDoK
KyAgY29uc3QgTWF0Y2hlcjxjb25zdCBFbGVtZW50Jj4gaW5uZXJfbWF0Y2hlcl87CisKKyAgR1RF
U1RfRElTQUxMT1dfQVNTSUdOXyhRdWFudGlmaWVyTWF0Y2hlckltcGwpOworfTsKKworLy8gSW1w
bGVtZW50cyBDb250YWlucyhlbGVtZW50X21hdGNoZXIpIGZvciB0aGUgZ2l2ZW4gYXJndW1lbnQg
dHlwZSBDb250YWluZXIuCisvLyBTeW1tZXRyaWMgdG8gRWFjaE1hdGNoZXJJbXBsLgordGVtcGxh
dGUgPHR5cGVuYW1lIENvbnRhaW5lcj4KK2NsYXNzIENvbnRhaW5zTWF0Y2hlckltcGwgOiBwdWJs
aWMgUXVhbnRpZmllck1hdGNoZXJJbXBsPENvbnRhaW5lcj4geworIHB1YmxpYzoKKyAgdGVtcGxh
dGUgPHR5cGVuYW1lIElubmVyTWF0Y2hlcj4KKyAgZXhwbGljaXQgQ29udGFpbnNNYXRjaGVySW1w
bChJbm5lck1hdGNoZXIgaW5uZXJfbWF0Y2hlcikKKyAgICAgIDogUXVhbnRpZmllck1hdGNoZXJJ
bXBsPENvbnRhaW5lcj4oaW5uZXJfbWF0Y2hlcikge30KKworICAvLyBEZXNjcmliZXMgd2hhdCB0
aGlzIG1hdGNoZXIgZG9lcy4KKyAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJl
YW0qIG9zKSBjb25zdCB7CisgICAgKm9zIDw8ICJjb250YWlucyBhdCBsZWFzdCBvbmUgZWxlbWVu
dCB0aGF0ICI7CisgICAgdGhpcy0+aW5uZXJfbWF0Y2hlcl8uRGVzY3JpYmVUbyhvcyk7CisgIH0K
KworICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBvcykg
Y29uc3QgeworICAgICpvcyA8PCAiZG9lc24ndCBjb250YWluIGFueSBlbGVtZW50IHRoYXQgIjsK
KyAgICB0aGlzLT5pbm5lcl9tYXRjaGVyXy5EZXNjcmliZVRvKG9zKTsKKyAgfQorCisgIHZpcnR1
YWwgYm9vbCBNYXRjaEFuZEV4cGxhaW4oQ29udGFpbmVyIGNvbnRhaW5lciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3Qg
eworICAgIHJldHVybiB0aGlzLT5NYXRjaEFuZEV4cGxhaW5JbXBsKGZhbHNlLCBjb250YWluZXIs
IGxpc3RlbmVyKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhD
b250YWluc01hdGNoZXJJbXBsKTsKK307CisKKy8vIEltcGxlbWVudHMgRWFjaChlbGVtZW50X21h
dGNoZXIpIGZvciB0aGUgZ2l2ZW4gYXJndW1lbnQgdHlwZSBDb250YWluZXIuCisvLyBTeW1tZXRy
aWMgdG8gQ29udGFpbnNNYXRjaGVySW1wbC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXI+
CitjbGFzcyBFYWNoTWF0Y2hlckltcGwgOiBwdWJsaWMgUXVhbnRpZmllck1hdGNoZXJJbXBsPENv
bnRhaW5lcj4geworIHB1YmxpYzoKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIElubmVyTWF0Y2hlcj4K
KyAgZXhwbGljaXQgRWFjaE1hdGNoZXJJbXBsKElubmVyTWF0Y2hlciBpbm5lcl9tYXRjaGVyKQor
ICAgICAgOiBRdWFudGlmaWVyTWF0Y2hlckltcGw8Q29udGFpbmVyPihpbm5lcl9tYXRjaGVyKSB7
fQorCisgIC8vIERlc2NyaWJlcyB3aGF0IHRoaXMgbWF0Y2hlciBkb2VzLgorICB2aXJ0dWFsIHZv
aWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKKyAgICAqb3MgPDwgIm9u
bHkgY29udGFpbnMgZWxlbWVudHMgdGhhdCAiOworICAgIHRoaXMtPmlubmVyX21hdGNoZXJfLkRl
c2NyaWJlVG8ob3MpOworICB9CisKKyAgdmlydHVhbCB2b2lkIERlc2NyaWJlTmVnYXRpb25Ubyg6
OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKKyAgICAqb3MgPDwgImNvbnRhaW5zIHNvbWUgZWxl
bWVudCB0aGF0ICI7CisgICAgdGhpcy0+aW5uZXJfbWF0Y2hlcl8uRGVzY3JpYmVOZWdhdGlvblRv
KG9zKTsKKyAgfQorCisgIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxhaW4oQ29udGFpbmVyIGNv
bnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3Rl
bmVyKiBsaXN0ZW5lcikgY29uc3QgeworICAgIHJldHVybiB0aGlzLT5NYXRjaEFuZEV4cGxhaW5J
bXBsKHRydWUsIGNvbnRhaW5lciwgbGlzdGVuZXIpOworICB9CisKKyBwcml2YXRlOgorICBHVEVT
VF9ESVNBTExPV19BU1NJR05fKEVhY2hNYXRjaGVySW1wbCk7Cit9OworCisvLyBJbXBsZW1lbnRz
IHBvbHltb3JwaGljIENvbnRhaW5zKGVsZW1lbnRfbWF0Y2hlcikuCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgTT4KK2NsYXNzIENvbnRhaW5zTWF0Y2hlciB7CisgcHVibGljOgorICBleHBsaWNpdCBDb250
YWluc01hdGNoZXIoTSBtKSA6IGlubmVyX21hdGNoZXJfKG0pIHt9CisKKyAgdGVtcGxhdGUgPHR5
cGVuYW1lIENvbnRhaW5lcj4KKyAgb3BlcmF0b3IgTWF0Y2hlcjxDb250YWluZXI+KCkgY29uc3Qg
eworICAgIHJldHVybiBNYWtlTWF0Y2hlcihuZXcgQ29udGFpbnNNYXRjaGVySW1wbDxDb250YWlu
ZXI+KGlubmVyX21hdGNoZXJfKSk7CisgIH0KKworIHByaXZhdGU6CisgIGNvbnN0IE0gaW5uZXJf
bWF0Y2hlcl87CisKKyAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhDb250YWluc01hdGNoZXIpOwor
fTsKKworLy8gSW1wbGVtZW50cyBwb2x5bW9ycGhpYyBFYWNoKGVsZW1lbnRfbWF0Y2hlcikuCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgTT4KK2NsYXNzIEVhY2hNYXRjaGVyIHsKKyBwdWJsaWM6CisgIGV4
cGxpY2l0IEVhY2hNYXRjaGVyKE0gbSkgOiBpbm5lcl9tYXRjaGVyXyhtKSB7fQorCisgIHRlbXBs
YXRlIDx0eXBlbmFtZSBDb250YWluZXI+CisgIG9wZXJhdG9yIE1hdGNoZXI8Q29udGFpbmVyPigp
IGNvbnN0IHsKKyAgICByZXR1cm4gTWFrZU1hdGNoZXIobmV3IEVhY2hNYXRjaGVySW1wbDxDb250
YWluZXI+KGlubmVyX21hdGNoZXJfKSk7CisgIH0KKworIHByaXZhdGU6CisgIGNvbnN0IE0gaW5u
ZXJfbWF0Y2hlcl87CisKKyAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhFYWNoTWF0Y2hlcik7Cit9
OworCisvLyBJbXBsZW1lbnRzIEtleShpbm5lcl9tYXRjaGVyKSBmb3IgdGhlIGdpdmVuIGFyZ3Vt
ZW50IHBhaXIgdHlwZS4KKy8vIEtleShpbm5lcl9tYXRjaGVyKSBtYXRjaGVzIGFuIHN0ZDo6cGFp
ciB3aG9zZSAnZmlyc3QnIGZpZWxkIG1hdGNoZXMKKy8vIGlubmVyX21hdGNoZXIuICBGb3IgZXhh
bXBsZSwgQ29udGFpbnMoS2V5KEdlKDUpKSkgY2FuIGJlIHVzZWQgdG8gbWF0Y2ggYW4KKy8vIHN0
ZDo6bWFwIHRoYXQgY29udGFpbnMgYXQgbGVhc3Qgb25lIGVsZW1lbnQgd2hvc2Uga2V5IGlzID49
IDUuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUGFpclR5cGU+CitjbGFzcyBLZXlNYXRjaGVySW1wbCA6
IHB1YmxpYyBNYXRjaGVySW50ZXJmYWNlPFBhaXJUeXBlPiB7CisgcHVibGljOgorICB0eXBlZGVm
IEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfQU5EX0NPTlNUXyhQYWlyVHlwZSkgUmF3UGFpclR5cGU7
CisgIHR5cGVkZWYgdHlwZW5hbWUgUmF3UGFpclR5cGU6OmZpcnN0X3R5cGUgS2V5VHlwZTsKKwor
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5uZXJNYXRjaGVyPgorICBleHBsaWNpdCBLZXlNYXRjaGVy
SW1wbChJbm5lck1hdGNoZXIgaW5uZXJfbWF0Y2hlcikKKyAgICAgIDogaW5uZXJfbWF0Y2hlcl8o
CisgICAgICAgICAgdGVzdGluZzo6U2FmZU1hdGNoZXJDYXN0PGNvbnN0IEtleVR5cGUmPihpbm5l
cl9tYXRjaGVyKSkgeworICB9CisKKyAgLy8gUmV0dXJucyB0cnVlIGlmZiAna2V5X3ZhbHVlLmZp
cnN0JyAodGhlIGtleSkgbWF0Y2hlcyB0aGUgaW5uZXIgbWF0Y2hlci4KKyAgdmlydHVhbCBib29s
IE1hdGNoQW5kRXhwbGFpbihQYWlyVHlwZSBrZXlfdmFsdWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNvbnN0IHsKKyAgICBT
dHJpbmdNYXRjaFJlc3VsdExpc3RlbmVyIGlubmVyX2xpc3RlbmVyOworICAgIGNvbnN0IGJvb2wg
bWF0Y2ggPSBpbm5lcl9tYXRjaGVyXy5NYXRjaEFuZEV4cGxhaW4oa2V5X3ZhbHVlLmZpcnN0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlu
bmVyX2xpc3RlbmVyKTsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBleHBsYW5hdGlvbiA9IGlubmVy
X2xpc3RlbmVyLnN0cigpOworICAgIGlmIChleHBsYW5hdGlvbiAhPSAiIikgeworICAgICAgKmxp
c3RlbmVyIDw8ICJ3aG9zZSBmaXJzdCBmaWVsZCBpcyBhIHZhbHVlICIgPDwgZXhwbGFuYXRpb247
CisgICAgfQorICAgIHJldHVybiBtYXRjaDsKKyAgfQorCisgIC8vIERlc2NyaWJlcyB3aGF0IHRo
aXMgbWF0Y2hlciBkb2VzLgorICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVh
bSogb3MpIGNvbnN0IHsKKyAgICAqb3MgPDwgImhhcyBhIGtleSB0aGF0ICI7CisgICAgaW5uZXJf
bWF0Y2hlcl8uRGVzY3JpYmVUbyhvcyk7CisgIH0KKworICAvLyBEZXNjcmliZXMgd2hhdCB0aGUg
bmVnYXRpb24gb2YgdGhpcyBtYXRjaGVyIGRvZXMuCisgIHZpcnR1YWwgdm9pZCBEZXNjcmliZU5l
Z2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7CisgICAgKm9zIDw8ICJkb2Vzbid0
IGhhdmUgYSBrZXkgdGhhdCAiOworICAgIGlubmVyX21hdGNoZXJfLkRlc2NyaWJlVG8ob3MpOwor
ICB9CisKKyBwcml2YXRlOgorICBjb25zdCBNYXRjaGVyPGNvbnN0IEtleVR5cGUmPiBpbm5lcl9t
YXRjaGVyXzsKKworICBHVEVTVF9ESVNBTExPV19BU1NJR05fKEtleU1hdGNoZXJJbXBsKTsKK307
CisKKy8vIEltcGxlbWVudHMgcG9seW1vcnBoaWMgS2V5KG1hdGNoZXJfZm9yX2tleSkuCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgTT4KK2NsYXNzIEtleU1hdGNoZXIgeworIHB1YmxpYzoKKyAgZXhwbGlj
aXQgS2V5TWF0Y2hlcihNIG0pIDogbWF0Y2hlcl9mb3Jfa2V5XyhtKSB7fQorCisgIHRlbXBsYXRl
IDx0eXBlbmFtZSBQYWlyVHlwZT4KKyAgb3BlcmF0b3IgTWF0Y2hlcjxQYWlyVHlwZT4oKSBjb25z
dCB7CisgICAgcmV0dXJuIE1ha2VNYXRjaGVyKG5ldyBLZXlNYXRjaGVySW1wbDxQYWlyVHlwZT4o
bWF0Y2hlcl9mb3Jfa2V5XykpOworICB9CisKKyBwcml2YXRlOgorICBjb25zdCBNIG1hdGNoZXJf
Zm9yX2tleV87CisKKyAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhLZXlNYXRjaGVyKTsKK307CisK
Ky8vIEltcGxlbWVudHMgUGFpcihmaXJzdF9tYXRjaGVyLCBzZWNvbmRfbWF0Y2hlcikgZm9yIHRo
ZSBnaXZlbiBhcmd1bWVudCBwYWlyCisvLyB0eXBlIHdpdGggaXRzIHR3byBtYXRjaGVycy4gU2Vl
IFBhaXIoKSBmdW5jdGlvbiBiZWxvdy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBQYWlyVHlwZT4KK2Ns
YXNzIFBhaXJNYXRjaGVySW1wbCA6IHB1YmxpYyBNYXRjaGVySW50ZXJmYWNlPFBhaXJUeXBlPiB7
CisgcHVibGljOgorICB0eXBlZGVmIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfQU5EX0NPTlNUXyhQ
YWlyVHlwZSkgUmF3UGFpclR5cGU7CisgIHR5cGVkZWYgdHlwZW5hbWUgUmF3UGFpclR5cGU6OmZp
cnN0X3R5cGUgRmlyc3RUeXBlOworICB0eXBlZGVmIHR5cGVuYW1lIFJhd1BhaXJUeXBlOjpzZWNv
bmRfdHlwZSBTZWNvbmRUeXBlOworCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBGaXJzdE1hdGNoZXIs
IHR5cGVuYW1lIFNlY29uZE1hdGNoZXI+CisgIFBhaXJNYXRjaGVySW1wbChGaXJzdE1hdGNoZXIg
Zmlyc3RfbWF0Y2hlciwgU2Vjb25kTWF0Y2hlciBzZWNvbmRfbWF0Y2hlcikKKyAgICAgIDogZmly
c3RfbWF0Y2hlcl8oCisgICAgICAgICAgICB0ZXN0aW5nOjpTYWZlTWF0Y2hlckNhc3Q8Y29uc3Qg
Rmlyc3RUeXBlJj4oZmlyc3RfbWF0Y2hlcikpLAorICAgICAgICBzZWNvbmRfbWF0Y2hlcl8oCisg
ICAgICAgICAgICB0ZXN0aW5nOjpTYWZlTWF0Y2hlckNhc3Q8Y29uc3QgU2Vjb25kVHlwZSY+KHNl
Y29uZF9tYXRjaGVyKSkgeworICB9CisKKyAgLy8gRGVzY3JpYmVzIHdoYXQgdGhpcyBtYXRjaGVy
IGRvZXMuCisgIHZpcnR1YWwgdm9pZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29u
c3QgeworICAgICpvcyA8PCAiaGFzIGEgZmlyc3QgZmllbGQgdGhhdCAiOworICAgIGZpcnN0X21h
dGNoZXJfLkRlc2NyaWJlVG8ob3MpOworICAgICpvcyA8PCAiLCBhbmQgaGFzIGEgc2Vjb25kIGZp
ZWxkIHRoYXQgIjsKKyAgICBzZWNvbmRfbWF0Y2hlcl8uRGVzY3JpYmVUbyhvcyk7CisgIH0KKwor
ICAvLyBEZXNjcmliZXMgd2hhdCB0aGUgbmVnYXRpb24gb2YgdGhpcyBtYXRjaGVyIGRvZXMuCisg
IHZpcnR1YWwgdm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25z
dCB7CisgICAgKm9zIDw8ICJoYXMgYSBmaXJzdCBmaWVsZCB0aGF0ICI7CisgICAgZmlyc3RfbWF0
Y2hlcl8uRGVzY3JpYmVOZWdhdGlvblRvKG9zKTsKKyAgICAqb3MgPDwgIiwgb3IgaGFzIGEgc2Vj
b25kIGZpZWxkIHRoYXQgIjsKKyAgICBzZWNvbmRfbWF0Y2hlcl8uRGVzY3JpYmVOZWdhdGlvblRv
KG9zKTsKKyAgfQorCisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgJ2FfcGFpci5maXJzdCcgbWF0Y2hl
cyBmaXJzdF9tYXRjaGVyIGFuZCAnYV9wYWlyLnNlY29uZCcKKyAgLy8gbWF0Y2hlcyBzZWNvbmRf
bWF0Y2hlci4KKyAgdmlydHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbihQYWlyVHlwZSBhX3BhaXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlz
dGVuZXIpIGNvbnN0IHsKKyAgICBpZiAoIWxpc3RlbmVyLT5Jc0ludGVyZXN0ZWQoKSkgeworICAg
ICAgLy8gSWYgdGhlIGxpc3RlbmVyIGlzIG5vdCBpbnRlcmVzdGVkLCB3ZSBkb24ndCBuZWVkIHRv
IGNvbnN0cnVjdCB0aGUKKyAgICAgIC8vIGV4cGxhbmF0aW9uLgorICAgICAgcmV0dXJuIGZpcnN0
X21hdGNoZXJfLk1hdGNoZXMoYV9wYWlyLmZpcnN0KSAmJgorICAgICAgICAgICAgIHNlY29uZF9t
YXRjaGVyXy5NYXRjaGVzKGFfcGFpci5zZWNvbmQpOworICAgIH0KKyAgICBTdHJpbmdNYXRjaFJl
c3VsdExpc3RlbmVyIGZpcnN0X2lubmVyX2xpc3RlbmVyOworICAgIGlmICghZmlyc3RfbWF0Y2hl
cl8uTWF0Y2hBbmRFeHBsYWluKGFfcGFpci5maXJzdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmZmlyc3RfaW5uZXJfbGlzdGVuZXIpKSB7CisgICAgICAqbGlzdGVu
ZXIgPDwgIndob3NlIGZpcnN0IGZpZWxkIGRvZXMgbm90IG1hdGNoIjsKKyAgICAgIFByaW50SWZO
b3RFbXB0eShmaXJzdF9pbm5lcl9saXN0ZW5lci5zdHIoKSwgbGlzdGVuZXItPnN0cmVhbSgpKTsK
KyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgU3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5l
ciBzZWNvbmRfaW5uZXJfbGlzdGVuZXI7CisgICAgaWYgKCFzZWNvbmRfbWF0Y2hlcl8uTWF0Y2hB
bmRFeHBsYWluKGFfcGFpci5zZWNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZzZWNvbmRfaW5uZXJfbGlzdGVuZXIpKSB7CisgICAgICAqbGlzdGVuZXIgPDwg
Indob3NlIHNlY29uZCBmaWVsZCBkb2VzIG5vdCBtYXRjaCI7CisgICAgICBQcmludElmTm90RW1w
dHkoc2Vjb25kX2lubmVyX2xpc3RlbmVyLnN0cigpLCBsaXN0ZW5lci0+c3RyZWFtKCkpOworICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBFeHBsYWluU3VjY2VzcyhmaXJzdF9pbm5lcl9s
aXN0ZW5lci5zdHIoKSwgc2Vjb25kX2lubmVyX2xpc3RlbmVyLnN0cigpLAorICAgICAgICAgICAg
ICAgICAgIGxpc3RlbmVyKTsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorCisgcHJpdmF0ZToKKyAg
dm9pZCBFeHBsYWluU3VjY2Vzcyhjb25zdCBzdGQ6OnN0cmluZyYgZmlyc3RfZXhwbGFuYXRpb24s
CisgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHNlY29uZF9leHBsYW5h
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5l
cikgY29uc3QgeworICAgICpsaXN0ZW5lciA8PCAid2hvc2UgYm90aCBmaWVsZHMgbWF0Y2giOwor
ICAgIGlmIChmaXJzdF9leHBsYW5hdGlvbiAhPSAiIikgeworICAgICAgKmxpc3RlbmVyIDw8ICIs
IHdoZXJlIHRoZSBmaXJzdCBmaWVsZCBpcyBhIHZhbHVlICIgPDwgZmlyc3RfZXhwbGFuYXRpb247
CisgICAgfQorICAgIGlmIChzZWNvbmRfZXhwbGFuYXRpb24gIT0gIiIpIHsKKyAgICAgICpsaXN0
ZW5lciA8PCAiLCAiOworICAgICAgaWYgKGZpcnN0X2V4cGxhbmF0aW9uICE9ICIiKSB7CisgICAg
ICAgICpsaXN0ZW5lciA8PCAiYW5kICI7CisgICAgICB9IGVsc2UgeworICAgICAgICAqbGlzdGVu
ZXIgPDwgIndoZXJlICI7CisgICAgICB9CisgICAgICAqbGlzdGVuZXIgPDwgInRoZSBzZWNvbmQg
ZmllbGQgaXMgYSB2YWx1ZSAiIDw8IHNlY29uZF9leHBsYW5hdGlvbjsKKyAgICB9CisgIH0KKwor
ICBjb25zdCBNYXRjaGVyPGNvbnN0IEZpcnN0VHlwZSY+IGZpcnN0X21hdGNoZXJfOworICBjb25z
dCBNYXRjaGVyPGNvbnN0IFNlY29uZFR5cGUmPiBzZWNvbmRfbWF0Y2hlcl87CisKKyAgR1RFU1Rf
RElTQUxMT1dfQVNTSUdOXyhQYWlyTWF0Y2hlckltcGwpOworfTsKKworLy8gSW1wbGVtZW50cyBw
b2x5bW9ycGhpYyBQYWlyKGZpcnN0X21hdGNoZXIsIHNlY29uZF9tYXRjaGVyKS4KK3RlbXBsYXRl
IDx0eXBlbmFtZSBGaXJzdE1hdGNoZXIsIHR5cGVuYW1lIFNlY29uZE1hdGNoZXI+CitjbGFzcyBQ
YWlyTWF0Y2hlciB7CisgcHVibGljOgorICBQYWlyTWF0Y2hlcihGaXJzdE1hdGNoZXIgZmlyc3Rf
bWF0Y2hlciwgU2Vjb25kTWF0Y2hlciBzZWNvbmRfbWF0Y2hlcikKKyAgICAgIDogZmlyc3RfbWF0
Y2hlcl8oZmlyc3RfbWF0Y2hlciksIHNlY29uZF9tYXRjaGVyXyhzZWNvbmRfbWF0Y2hlcikge30K
KworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUGFpclR5cGU+CisgIG9wZXJhdG9yIE1hdGNoZXI8UGFp
clR5cGU+ICgpIGNvbnN0IHsKKyAgICByZXR1cm4gTWFrZU1hdGNoZXIoCisgICAgICAgIG5ldyBQ
YWlyTWF0Y2hlckltcGw8UGFpclR5cGU+KAorICAgICAgICAgICAgZmlyc3RfbWF0Y2hlcl8sIHNl
Y29uZF9tYXRjaGVyXykpOworICB9CisKKyBwcml2YXRlOgorICBjb25zdCBGaXJzdE1hdGNoZXIg
Zmlyc3RfbWF0Y2hlcl87CisgIGNvbnN0IFNlY29uZE1hdGNoZXIgc2Vjb25kX21hdGNoZXJfOwor
CisgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oUGFpck1hdGNoZXIpOworfTsKKworLy8gSW1wbGVt
ZW50cyBFbGVtZW50c0FyZSgpIGFuZCBFbGVtZW50c0FyZUFycmF5KCkuCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ29udGFpbmVyPgorY2xhc3MgRWxlbWVudHNBcmVNYXRjaGVySW1wbCA6IHB1YmxpYyBN
YXRjaGVySW50ZXJmYWNlPENvbnRhaW5lcj4geworIHB1YmxpYzoKKyAgdHlwZWRlZiBHVEVTVF9S
RU1PVkVfUkVGRVJFTkNFX0FORF9DT05TVF8oQ29udGFpbmVyKSBSYXdDb250YWluZXI7CisgIHR5
cGVkZWYgaW50ZXJuYWw6OlN0bENvbnRhaW5lclZpZXc8UmF3Q29udGFpbmVyPiBWaWV3OworICB0
eXBlZGVmIHR5cGVuYW1lIFZpZXc6OnR5cGUgU3RsQ29udGFpbmVyOworICB0eXBlZGVmIHR5cGVu
YW1lIFZpZXc6OmNvbnN0X3JlZmVyZW5jZSBTdGxDb250YWluZXJSZWZlcmVuY2U7CisgIHR5cGVk
ZWYgdHlwZW5hbWUgU3RsQ29udGFpbmVyOjp2YWx1ZV90eXBlIEVsZW1lbnQ7CisKKyAgLy8gQ29u
c3RydWN0cyB0aGUgbWF0Y2hlciBmcm9tIGEgc2VxdWVuY2Ugb2YgZWxlbWVudCB2YWx1ZXMgb3IK
KyAgLy8gZWxlbWVudCBtYXRjaGVycy4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcj4K
KyAgRWxlbWVudHNBcmVNYXRjaGVySW1wbChJbnB1dEl0ZXIgZmlyc3QsIElucHV0SXRlciBsYXN0
KSB7CisgICAgd2hpbGUgKGZpcnN0ICE9IGxhc3QpIHsKKyAgICAgIG1hdGNoZXJzXy5wdXNoX2Jh
Y2soTWF0Y2hlckNhc3Q8Y29uc3QgRWxlbWVudCY+KCpmaXJzdCsrKSk7CisgICAgfQorICB9CisK
KyAgLy8gRGVzY3JpYmVzIHdoYXQgdGhpcyBtYXRjaGVyIGRvZXMuCisgIHZpcnR1YWwgdm9pZCBE
ZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgeworICAgIGlmIChjb3VudCgpID09
IDApIHsKKyAgICAgICpvcyA8PCAiaXMgZW1wdHkiOworICAgIH0gZWxzZSBpZiAoY291bnQoKSA9
PSAxKSB7CisgICAgICAqb3MgPDwgImhhcyAxIGVsZW1lbnQgdGhhdCAiOworICAgICAgbWF0Y2hl
cnNfWzBdLkRlc2NyaWJlVG8ob3MpOworICAgIH0gZWxzZSB7CisgICAgICAqb3MgPDwgImhhcyAi
IDw8IEVsZW1lbnRzKGNvdW50KCkpIDw8ICIgd2hlcmVcbiI7CisgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSAhPSBjb3VudCgpOyArK2kpIHsKKyAgICAgICAgKm9zIDw8ICJlbGVtZW50ICMiIDw8
IGkgPDwgIiAiOworICAgICAgICBtYXRjaGVyc19baV0uRGVzY3JpYmVUbyhvcyk7CisgICAgICAg
IGlmIChpICsgMSA8IGNvdW50KCkpIHsKKyAgICAgICAgICAqb3MgPDwgIixcbiI7CisgICAgICAg
IH0KKyAgICAgIH0KKyAgICB9CisgIH0KKworICAvLyBEZXNjcmliZXMgd2hhdCB0aGUgbmVnYXRp
b24gb2YgdGhpcyBtYXRjaGVyIGRvZXMuCisgIHZpcnR1YWwgdm9pZCBEZXNjcmliZU5lZ2F0aW9u
VG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7CisgICAgaWYgKGNvdW50KCkgPT0gMCkgewor
ICAgICAgKm9zIDw8ICJpc24ndCBlbXB0eSI7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAg
Km9zIDw8ICJkb2Vzbid0IGhhdmUgIiA8PCBFbGVtZW50cyhjb3VudCgpKSA8PCAiLCBvclxuIjsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBjb3VudCgpOyArK2kpIHsKKyAgICAgICpvcyA8
PCAiZWxlbWVudCAjIiA8PCBpIDw8ICIgIjsKKyAgICAgIG1hdGNoZXJzX1tpXS5EZXNjcmliZU5l
Z2F0aW9uVG8ob3MpOworICAgICAgaWYgKGkgKyAxIDwgY291bnQoKSkgeworICAgICAgICAqb3Mg
PDwgIiwgb3JcbiI7CisgICAgICB9CisgICAgfQorICB9CisKKyAgdmlydHVhbCBib29sIE1hdGNo
QW5kRXhwbGFpbihDb250YWluZXIgY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBjb25zdCB7CisgICAgLy8gVG8g
d29yayB3aXRoIHN0cmVhbS1saWtlICJjb250YWluZXJzIiwgd2UgbXVzdCBvbmx5IHdhbGsKKyAg
ICAvLyB0aHJvdWdoIHRoZSBlbGVtZW50cyBpbiBvbmUgcGFzcy4KKworICAgIGNvbnN0IGJvb2wg
bGlzdGVuZXJfaW50ZXJlc3RlZCA9IGxpc3RlbmVyLT5Jc0ludGVyZXN0ZWQoKTsKKworICAgIC8v
IGV4cGxhbmF0aW9uc1tpXSBpcyB0aGUgZXhwbGFuYXRpb24gb2YgdGhlIGVsZW1lbnQgYXQgaW5k
ZXggaS4KKyAgICA6OnN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBleHBsYW5hdGlvbnMoY291bnQo
KSk7CisgICAgU3RsQ29udGFpbmVyUmVmZXJlbmNlIHN0bF9jb250YWluZXIgPSBWaWV3OjpDb25z
dFJlZmVyZW5jZShjb250YWluZXIpOworICAgIHR5cGVuYW1lIFN0bENvbnRhaW5lcjo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBzdGxfY29udGFpbmVyLmJlZ2luKCk7CisgICAgc2l6ZV90IGV4YW1fcG9z
ID0gMDsKKyAgICBib29sIG1pc21hdGNoX2ZvdW5kID0gZmFsc2U7ICAvLyBIYXZlIHdlIGZvdW5k
IGEgbWlzbWF0Y2hlZCBlbGVtZW50IHlldD8KKworICAgIC8vIEdvIHRocm91Z2ggdGhlIGVsZW1l
bnRzIGFuZCBtYXRjaGVycyBpbiBwYWlycywgdW50aWwgd2UgcmVhY2gKKyAgICAvLyB0aGUgZW5k
IG9mIGVpdGhlciB0aGUgZWxlbWVudHMgb3IgdGhlIG1hdGNoZXJzLCBvciB1bnRpbCB3ZSBmaW5k
IGEKKyAgICAvLyBtaXNtYXRjaC4KKyAgICBmb3IgKDsgaXQgIT0gc3RsX2NvbnRhaW5lci5lbmQo
KSAmJiBleGFtX3BvcyAhPSBjb3VudCgpOyArK2l0LCArK2V4YW1fcG9zKSB7CisgICAgICBib29s
IG1hdGNoOyAgLy8gRG9lcyB0aGUgY3VycmVudCBlbGVtZW50IG1hdGNoIHRoZSBjdXJyZW50IG1h
dGNoZXI/CisgICAgICBpZiAobGlzdGVuZXJfaW50ZXJlc3RlZCkgeworICAgICAgICBTdHJpbmdN
YXRjaFJlc3VsdExpc3RlbmVyIHM7CisgICAgICAgIG1hdGNoID0gbWF0Y2hlcnNfW2V4YW1fcG9z
XS5NYXRjaEFuZEV4cGxhaW4oKml0LCAmcyk7CisgICAgICAgIGV4cGxhbmF0aW9uc1tleGFtX3Bv
c10gPSBzLnN0cigpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgbWF0Y2ggPSBtYXRjaGVyc19b
ZXhhbV9wb3NdLk1hdGNoZXMoKml0KTsKKyAgICAgIH0KKworICAgICAgaWYgKCFtYXRjaCkgewor
ICAgICAgICBtaXNtYXRjaF9mb3VuZCA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAgICAgfQor
ICAgIH0KKyAgICAvLyBJZiBtaXNtYXRjaF9mb3VuZCBpcyB0cnVlLCAnZXhhbV9wb3MnIGlzIHRo
ZSBpbmRleCBvZiB0aGUgbWlzbWF0Y2guCisKKyAgICAvLyBGaW5kIGhvdyBtYW55IGVsZW1lbnRz
IHRoZSBhY3R1YWwgY29udGFpbmVyIGhhcy4gIFdlIGF2b2lkCisgICAgLy8gY2FsbGluZyBzaXpl
KCkgcy50LiB0aGlzIGNvZGUgd29ya3MgZm9yIHN0cmVhbS1saWtlICJjb250YWluZXJzIgorICAg
IC8vIHRoYXQgZG9uJ3QgZGVmaW5lIHNpemUoKS4KKyAgICBzaXplX3QgYWN0dWFsX2NvdW50ID0g
ZXhhbV9wb3M7CisgICAgZm9yICg7IGl0ICE9IHN0bF9jb250YWluZXIuZW5kKCk7ICsraXQpIHsK
KyAgICAgICsrYWN0dWFsX2NvdW50OworICAgIH0KKworICAgIGlmIChhY3R1YWxfY291bnQgIT0g
Y291bnQoKSkgeworICAgICAgLy8gVGhlIGVsZW1lbnQgY291bnQgZG9lc24ndCBtYXRjaC4gIElm
IHRoZSBjb250YWluZXIgaXMgZW1wdHksCisgICAgICAvLyB0aGVyZSdzIG5vIG5lZWQgdG8gZXhw
bGFpbiBhbnl0aGluZyBhcyBHb29nbGUgTW9jayBhbHJlYWR5CisgICAgICAvLyBwcmludHMgdGhl
IGVtcHR5IGNvbnRhaW5lci4gIE90aGVyd2lzZSB3ZSBqdXN0IG5lZWQgdG8gc2hvdworICAgICAg
Ly8gaG93IG1hbnkgZWxlbWVudHMgdGhlcmUgYWN0dWFsbHkgYXJlLgorICAgICAgaWYgKGxpc3Rl
bmVyX2ludGVyZXN0ZWQgJiYgKGFjdHVhbF9jb3VudCAhPSAwKSkgeworICAgICAgICAqbGlzdGVu
ZXIgPDwgIndoaWNoIGhhcyAiIDw8IEVsZW1lbnRzKGFjdHVhbF9jb3VudCk7CisgICAgICB9Cisg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKG1pc21hdGNoX2ZvdW5kKSB7Cisg
ICAgICAvLyBUaGUgZWxlbWVudCBjb3VudCBtYXRjaGVzLCBidXQgdGhlIGV4YW1fcG9zLXRoIGVs
ZW1lbnQgZG9lc24ndCBtYXRjaC4KKyAgICAgIGlmIChsaXN0ZW5lcl9pbnRlcmVzdGVkKSB7Cisg
ICAgICAgICpsaXN0ZW5lciA8PCAid2hvc2UgZWxlbWVudCAjIiA8PCBleGFtX3BvcyA8PCAiIGRv
ZXNuJ3QgbWF0Y2giOworICAgICAgICBQcmludElmTm90RW1wdHkoZXhwbGFuYXRpb25zW2V4YW1f
cG9zXSwgbGlzdGVuZXItPnN0cmVhbSgpKTsKKyAgICAgIH0KKyAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICAvLyBFdmVyeSBlbGVtZW50IG1hdGNoZXMgaXRzIGV4cGVjdGF0aW9uLiAg
V2UgbmVlZCB0byBleHBsYWluIHdoeQorICAgIC8vICh0aGUgb2J2aW91cyBvbmVzIGNhbiBiZSBz
a2lwcGVkKS4KKyAgICBpZiAobGlzdGVuZXJfaW50ZXJlc3RlZCkgeworICAgICAgYm9vbCByZWFz
b25fcHJpbnRlZCA9IGZhbHNlOworICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gY291bnQo
KTsgKytpKSB7CisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzID0gZXhwbGFuYXRpb25zW2ld
OworICAgICAgICBpZiAoIXMuZW1wdHkoKSkgeworICAgICAgICAgIGlmIChyZWFzb25fcHJpbnRl
ZCkgeworICAgICAgICAgICAgKmxpc3RlbmVyIDw8ICIsXG5hbmQgIjsKKyAgICAgICAgICB9Cisg
ICAgICAgICAgKmxpc3RlbmVyIDw8ICJ3aG9zZSBlbGVtZW50ICMiIDw8IGkgPDwgIiBtYXRjaGVz
LCAiIDw8IHM7CisgICAgICAgICAgcmVhc29uX3ByaW50ZWQgPSB0cnVlOworICAgICAgICB9Cisg
ICAgICB9CisgICAgfQorICAgIHJldHVybiB0cnVlOworICB9CisKKyBwcml2YXRlOgorICBzdGF0
aWMgTWVzc2FnZSBFbGVtZW50cyhzaXplX3QgY291bnQpIHsKKyAgICByZXR1cm4gTWVzc2FnZSgp
IDw8IGNvdW50IDw8IChjb3VudCA9PSAxID8gIiBlbGVtZW50IiA6ICIgZWxlbWVudHMiKTsKKyAg
fQorCisgIHNpemVfdCBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1hdGNoZXJzXy5zaXplKCk7IH0K
KworICA6OnN0ZDo6dmVjdG9yPE1hdGNoZXI8Y29uc3QgRWxlbWVudCY+ID4gbWF0Y2hlcnNfOwor
CisgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oRWxlbWVudHNBcmVNYXRjaGVySW1wbCk7Cit9Owor
CisvLyBDb25uZWN0aXZpdHkgbWF0cml4IG9mIChlbGVtZW50cyBYIG1hdGNoZXJzKSwgaW4gZWxl
bWVudC1tYWpvciBvcmRlci4KKy8vIEluaXRpYWxseSwgdGhlcmUgYXJlIG5vIGVkZ2VzLgorLy8g
VXNlIE5leHRHcmFwaCgpIHRvIGl0ZXJhdGUgb3ZlciBhbGwgcG9zc2libGUgZWRnZSBjb25maWd1
cmF0aW9ucy4KKy8vIFVzZSBSYW5kb21pemUoKSB0byBnZW5lcmF0ZSBhIHJhbmRvbSBlZGdlIGNv
bmZpZ3VyYXRpb24uCitjbGFzcyBHVEVTVF9BUElfIE1hdGNoTWF0cml4IHsKKyBwdWJsaWM6Cisg
IE1hdGNoTWF0cml4KHNpemVfdCBudW1fZWxlbWVudHMsIHNpemVfdCBudW1fbWF0Y2hlcnMpCisg
ICAgICA6IG51bV9lbGVtZW50c18obnVtX2VsZW1lbnRzKSwKKyAgICAgICAgbnVtX21hdGNoZXJz
XyhudW1fbWF0Y2hlcnMpLAorICAgICAgICBtYXRjaGVkXyhudW1fZWxlbWVudHNfKiBudW1fbWF0
Y2hlcnNfLCAwKSB7CisgIH0KKworICBzaXplX3QgTGhzU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG51
bV9lbGVtZW50c187IH0KKyAgc2l6ZV90IFJoc1NpemUoKSBjb25zdCB7IHJldHVybiBudW1fbWF0
Y2hlcnNfOyB9CisgIGJvb2wgSGFzRWRnZShzaXplX3QgaWxocywgc2l6ZV90IGlyaHMpIGNvbnN0
IHsKKyAgICByZXR1cm4gbWF0Y2hlZF9bU3BhY2VJbmRleChpbGhzLCBpcmhzKV0gPT0gMTsKKyAg
fQorICB2b2lkIFNldEVkZ2Uoc2l6ZV90IGlsaHMsIHNpemVfdCBpcmhzLCBib29sIGIpIHsKKyAg
ICBtYXRjaGVkX1tTcGFjZUluZGV4KGlsaHMsIGlyaHMpXSA9IGIgPyAxIDogMDsKKyAgfQorCisg
IC8vIFRyZWF0aW5nIHRoZSBjb25uZWN0aXZpdHkgbWF0cml4IGFzIGEgKExoc1NpemUoKSpSaHNT
aXplKCkpLWJpdCBudW1iZXIsCisgIC8vIGFkZHMgMSB0byB0aGF0IG51bWJlcjsgcmV0dXJucyBm
YWxzZSBpZiBpbmNyZW1lbnRpbmcgdGhlIGdyYXBoIGxlZnQgaXQKKyAgLy8gZW1wdHkuCisgIGJv
b2wgTmV4dEdyYXBoKCk7CisKKyAgdm9pZCBSYW5kb21pemUoKTsKKworICBzdGQ6OnN0cmluZyBE
ZWJ1Z1N0cmluZygpIGNvbnN0OworCisgcHJpdmF0ZToKKyAgc2l6ZV90IFNwYWNlSW5kZXgoc2l6
ZV90IGlsaHMsIHNpemVfdCBpcmhzKSBjb25zdCB7CisgICAgcmV0dXJuIGlsaHMgKiBudW1fbWF0
Y2hlcnNfICsgaXJoczsKKyAgfQorCisgIHNpemVfdCBudW1fZWxlbWVudHNfOworICBzaXplX3Qg
bnVtX21hdGNoZXJzXzsKKworICAvLyBFYWNoIGVsZW1lbnQgaXMgYSBjaGFyIGludGVycHJldGVk
IGFzIGJvb2wuIFRoZXkgYXJlIHN0b3JlZCBhcyBhCisgIC8vIGZsYXR0ZW5lZCBhcnJheSBpbiBs
aHMtbWFqb3Igb3JkZXIsIHVzZSAnU3BhY2VJbmRleCgpJyB0byB0cmFuc2xhdGUKKyAgLy8gYSAo
aWxocywgaXJocykgbWF0cml4IGNvb3JkaW5hdGUgaW50byBhbiBvZmZzZXQuCisgIDo6c3RkOjp2
ZWN0b3I8Y2hhcj4gbWF0Y2hlZF87Cit9OworCit0eXBlZGVmIDo6c3RkOjpwYWlyPHNpemVfdCwg
c2l6ZV90PiBFbGVtZW50TWF0Y2hlclBhaXI7Cit0eXBlZGVmIDo6c3RkOjp2ZWN0b3I8RWxlbWVu
dE1hdGNoZXJQYWlyPiBFbGVtZW50TWF0Y2hlclBhaXJzOworCisvLyBSZXR1cm5zIGEgbWF4aW11
bSBiaXBhcnRpdGUgbWF0Y2hpbmcgZm9yIHRoZSBzcGVjaWZpZWQgZ3JhcGggJ2cnLgorLy8gVGhl
IG1hdGNoaW5nIGlzIHJlcHJlc2VudGVkIGFzIGEgdmVjdG9yIG9mIHtlbGVtZW50LCBtYXRjaGVy
fSBwYWlycy4KK0dURVNUX0FQSV8gRWxlbWVudE1hdGNoZXJQYWlycworRmluZE1heEJpcGFydGl0
ZU1hdGNoaW5nKGNvbnN0IE1hdGNoTWF0cml4JiBnKTsKKworR1RFU1RfQVBJXyBib29sIEZpbmRQ
YWlyaW5nKGNvbnN0IE1hdGNoTWF0cml4JiBtYXRyaXgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIpOworCisvLyBVbnR5cGVkIGJhc2Ug
Y2xhc3MgZm9yIGltcGxlbWVudGluZyBVbm9yZGVyZWRFbGVtZW50c0FyZS4gIEJ5CisvLyBwdXR0
aW5nIGxvZ2ljIHRoYXQncyBub3Qgc3BlY2lmaWMgdG8gdGhlIGVsZW1lbnQgdHlwZSBoZXJlLCB3
ZQorLy8gcmVkdWNlIGJpbmFyeSBibG9hdCBhbmQgaW5jcmVhc2UgY29tcGlsYXRpb24gc3BlZWQu
CitjbGFzcyBHVEVTVF9BUElfIFVub3JkZXJlZEVsZW1lbnRzQXJlTWF0Y2hlckltcGxCYXNlIHsK
KyBwcm90ZWN0ZWQ6CisgIC8vIEEgdmVjdG9yIG9mIG1hdGNoZXIgZGVzY3JpYmVycywgb25lIGZv
ciBlYWNoIGVsZW1lbnQgbWF0Y2hlci4KKyAgLy8gRG9lcyBub3Qgb3duIHRoZSBkZXNjcmliZXJz
IChhbmQgdGh1cyBjYW4gYmUgdXNlZCBvbmx5IHdoZW4gdGhlCisgIC8vIGVsZW1lbnQgbWF0Y2hl
cnMgYXJlIGFsaXZlKS4KKyAgdHlwZWRlZiA6OnN0ZDo6dmVjdG9yPGNvbnN0IE1hdGNoZXJEZXNj
cmliZXJJbnRlcmZhY2UqPiBNYXRjaGVyRGVzY3JpYmVyVmVjOworCisgIC8vIERlc2NyaWJlcyB0
aGlzIFVub3JkZXJlZEVsZW1lbnRzQXJlIG1hdGNoZXIuCisgIHZvaWQgRGVzY3JpYmVUb0ltcGwo
OjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdDsKKworICAvLyBEZXNjcmliZXMgdGhlIG5lZ2F0aW9u
IG9mIHRoaXMgVW5vcmRlcmVkRWxlbWVudHNBcmUgbWF0Y2hlci4KKyAgdm9pZCBEZXNjcmliZU5l
Z2F0aW9uVG9JbXBsKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3Q7CisKKyAgYm9vbCBWZXJpZnlB
bGxFbGVtZW50c0FuZE1hdGNoZXJzQXJlTWF0Y2hlZCgKKyAgICAgIGNvbnN0IDo6c3RkOjp2ZWN0
b3I8c3RkOjpzdHJpbmc+JiBlbGVtZW50X3ByaW50b3V0cywKKyAgICAgIGNvbnN0IE1hdGNoTWF0
cml4JiBtYXRyaXgsIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBjb25zdDsKKworICBN
YXRjaGVyRGVzY3JpYmVyVmVjJiBtYXRjaGVyX2Rlc2NyaWJlcnMoKSB7CisgICAgcmV0dXJuIG1h
dGNoZXJfZGVzY3JpYmVyc187CisgIH0KKworICBzdGF0aWMgTWVzc2FnZSBFbGVtZW50cyhzaXpl
X3QgbikgeworICAgIHJldHVybiBNZXNzYWdlKCkgPDwgbiA8PCAiIGVsZW1lbnQiIDw8IChuID09
IDEgPyAiIiA6ICJzIik7CisgIH0KKworIHByaXZhdGU6CisgIE1hdGNoZXJEZXNjcmliZXJWZWMg
bWF0Y2hlcl9kZXNjcmliZXJzXzsKKworICBHVEVTVF9ESVNBTExPV19BU1NJR05fKFVub3JkZXJl
ZEVsZW1lbnRzQXJlTWF0Y2hlckltcGxCYXNlKTsKK307CisKKy8vIEltcGxlbWVudHMgdW5vcmRl
cmVkIEVsZW1lbnRzQXJlIGFuZCB1bm9yZGVyZWQgRWxlbWVudHNBcmVBcnJheS4KK3RlbXBsYXRl
IDx0eXBlbmFtZSBDb250YWluZXI+CitjbGFzcyBVbm9yZGVyZWRFbGVtZW50c0FyZU1hdGNoZXJJ
bXBsCisgICAgOiBwdWJsaWMgTWF0Y2hlckludGVyZmFjZTxDb250YWluZXI+LAorICAgICAgcHVi
bGljIFVub3JkZXJlZEVsZW1lbnRzQXJlTWF0Y2hlckltcGxCYXNlIHsKKyBwdWJsaWM6CisgIHR5
cGVkZWYgR1RFU1RfUkVNT1ZFX1JFRkVSRU5DRV9BTkRfQ09OU1RfKENvbnRhaW5lcikgUmF3Q29u
dGFpbmVyOworICB0eXBlZGVmIGludGVybmFsOjpTdGxDb250YWluZXJWaWV3PFJhd0NvbnRhaW5l
cj4gVmlldzsKKyAgdHlwZWRlZiB0eXBlbmFtZSBWaWV3Ojp0eXBlIFN0bENvbnRhaW5lcjsKKyAg
dHlwZWRlZiB0eXBlbmFtZSBWaWV3Ojpjb25zdF9yZWZlcmVuY2UgU3RsQ29udGFpbmVyUmVmZXJl
bmNlOworICB0eXBlZGVmIHR5cGVuYW1lIFN0bENvbnRhaW5lcjo6Y29uc3RfaXRlcmF0b3IgU3Rs
Q29udGFpbmVyQ29uc3RJdGVyYXRvcjsKKyAgdHlwZWRlZiB0eXBlbmFtZSBTdGxDb250YWluZXI6
OnZhbHVlX3R5cGUgRWxlbWVudDsKKworICAvLyBDb25zdHJ1Y3RzIHRoZSBtYXRjaGVyIGZyb20g
YSBzZXF1ZW5jZSBvZiBlbGVtZW50IHZhbHVlcyBvcgorICAvLyBlbGVtZW50IG1hdGNoZXJzLgor
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyPgorICBVbm9yZGVyZWRFbGVtZW50c0FyZU1h
dGNoZXJJbXBsKElucHV0SXRlciBmaXJzdCwgSW5wdXRJdGVyIGxhc3QpIHsKKyAgICBmb3IgKDsg
Zmlyc3QgIT0gbGFzdDsgKytmaXJzdCkgeworICAgICAgbWF0Y2hlcnNfLnB1c2hfYmFjayhNYXRj
aGVyQ2FzdDxjb25zdCBFbGVtZW50Jj4oKmZpcnN0KSk7CisgICAgICBtYXRjaGVyX2Rlc2NyaWJl
cnMoKS5wdXNoX2JhY2sobWF0Y2hlcnNfLmJhY2soKS5HZXREZXNjcmliZXIoKSk7CisgICAgfQor
ICB9CisKKyAgLy8gRGVzY3JpYmVzIHdoYXQgdGhpcyBtYXRjaGVyIGRvZXMuCisgIHZpcnR1YWwg
dm9pZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgeworICAgIHJldHVybiBV
bm9yZGVyZWRFbGVtZW50c0FyZU1hdGNoZXJJbXBsQmFzZTo6RGVzY3JpYmVUb0ltcGwob3MpOwor
ICB9CisKKyAgLy8gRGVzY3JpYmVzIHdoYXQgdGhlIG5lZ2F0aW9uIG9mIHRoaXMgbWF0Y2hlciBk
b2VzLgorICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBv
cykgY29uc3QgeworICAgIHJldHVybiBVbm9yZGVyZWRFbGVtZW50c0FyZU1hdGNoZXJJbXBsQmFz
ZTo6RGVzY3JpYmVOZWdhdGlvblRvSW1wbChvcyk7CisgIH0KKworICB2aXJ0dWFsIGJvb2wgTWF0
Y2hBbmRFeHBsYWluKENvbnRhaW5lciBjb250YWluZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNvbnN0IHsKKyAgICBTdGxD
b250YWluZXJSZWZlcmVuY2Ugc3RsX2NvbnRhaW5lciA9IFZpZXc6OkNvbnN0UmVmZXJlbmNlKGNv
bnRhaW5lcik7CisgICAgOjpzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gZWxlbWVudF9wcmludG91
dHM7CisgICAgTWF0Y2hNYXRyaXggbWF0cml4ID0gQW5hbHl6ZUVsZW1lbnRzKHN0bF9jb250YWlu
ZXIuYmVnaW4oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rs
X2NvbnRhaW5lci5lbmQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJmVsZW1lbnRfcHJpbnRvdXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsaXN0ZW5lcik7CisKKyAgICBjb25zdCBzaXplX3QgYWN0dWFsX2NvdW50ID0gbWF0
cml4Lkxoc1NpemUoKTsKKyAgICBpZiAoYWN0dWFsX2NvdW50ID09IDAgJiYgbWF0Y2hlcnNfLmVt
cHR5KCkpIHsKKyAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAoYWN0dWFsX2NvdW50
ICE9IG1hdGNoZXJzXy5zaXplKCkpIHsKKyAgICAgIC8vIFRoZSBlbGVtZW50IGNvdW50IGRvZXNu
J3QgbWF0Y2guICBJZiB0aGUgY29udGFpbmVyIGlzIGVtcHR5LAorICAgICAgLy8gdGhlcmUncyBu
byBuZWVkIHRvIGV4cGxhaW4gYW55dGhpbmcgYXMgR29vZ2xlIE1vY2sgYWxyZWFkeQorICAgICAg
Ly8gcHJpbnRzIHRoZSBlbXB0eSBjb250YWluZXIuIE90aGVyd2lzZSB3ZSBqdXN0IG5lZWQgdG8g
c2hvdworICAgICAgLy8gaG93IG1hbnkgZWxlbWVudHMgdGhlcmUgYWN0dWFsbHkgYXJlLgorICAg
ICAgaWYgKGFjdHVhbF9jb3VudCAhPSAwICYmIGxpc3RlbmVyLT5Jc0ludGVyZXN0ZWQoKSkgewor
ICAgICAgICAqbGlzdGVuZXIgPDwgIndoaWNoIGhhcyAiIDw8IEVsZW1lbnRzKGFjdHVhbF9jb3Vu
dCk7CisgICAgICB9CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIFZl
cmlmeUFsbEVsZW1lbnRzQW5kTWF0Y2hlcnNBcmVNYXRjaGVkKGVsZW1lbnRfcHJpbnRvdXRzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRyaXgs
IGxpc3RlbmVyKSAmJgorICAgICAgICAgICBGaW5kUGFpcmluZyhtYXRyaXgsIGxpc3RlbmVyKTsK
KyAgfQorCisgcHJpdmF0ZToKKyAgdHlwZWRlZiA6OnN0ZDo6dmVjdG9yPE1hdGNoZXI8Y29uc3Qg
RWxlbWVudCY+ID4gTWF0Y2hlclZlYzsKKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudEl0
ZXI+CisgIE1hdGNoTWF0cml4IEFuYWx5emVFbGVtZW50cyhFbGVtZW50SXRlciBlbGVtX2ZpcnN0
LCBFbGVtZW50SXRlciBlbGVtX2xhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6
OnN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiogZWxlbWVudF9wcmludG91dHMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3Qg
eworICAgIGVsZW1lbnRfcHJpbnRvdXRzLT5jbGVhcigpOworICAgIDo6c3RkOjp2ZWN0b3I8Y2hh
cj4gZGlkX21hdGNoOworICAgIHNpemVfdCBudW1fZWxlbWVudHMgPSAwOworICAgIGZvciAoOyBl
bGVtX2ZpcnN0ICE9IGVsZW1fbGFzdDsgKytudW1fZWxlbWVudHMsICsrZWxlbV9maXJzdCkgewor
ICAgICAgaWYgKGxpc3RlbmVyLT5Jc0ludGVyZXN0ZWQoKSkgeworICAgICAgICBlbGVtZW50X3By
aW50b3V0cy0+cHVzaF9iYWNrKFByaW50VG9TdHJpbmcoKmVsZW1fZmlyc3QpKTsKKyAgICAgIH0K
KyAgICAgIGZvciAoc2l6ZV90IGlyaHMgPSAwOyBpcmhzICE9IG1hdGNoZXJzXy5zaXplKCk7ICsr
aXJocykgeworICAgICAgICBkaWRfbWF0Y2gucHVzaF9iYWNrKE1hdGNoZXMobWF0Y2hlcnNfW2ly
aHNdKSgqZWxlbV9maXJzdCkpOworICAgICAgfQorICAgIH0KKworICAgIE1hdGNoTWF0cml4IG1h
dHJpeChudW1fZWxlbWVudHMsIG1hdGNoZXJzXy5zaXplKCkpOworICAgIDo6c3RkOjp2ZWN0b3I8
Y2hhcj46OmNvbnN0X2l0ZXJhdG9yIGRpZF9tYXRjaF9pdGVyID0gZGlkX21hdGNoLmJlZ2luKCk7
CisgICAgZm9yIChzaXplX3QgaWxocyA9IDA7IGlsaHMgIT0gbnVtX2VsZW1lbnRzOyArK2lsaHMp
IHsKKyAgICAgIGZvciAoc2l6ZV90IGlyaHMgPSAwOyBpcmhzICE9IG1hdGNoZXJzXy5zaXplKCk7
ICsraXJocykgeworICAgICAgICBtYXRyaXguU2V0RWRnZShpbGhzLCBpcmhzLCAqZGlkX21hdGNo
X2l0ZXIrKyAhPSAwKTsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG1hdHJpeDsKKyAgfQor
CisgIE1hdGNoZXJWZWMgbWF0Y2hlcnNfOworCisgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oVW5v
cmRlcmVkRWxlbWVudHNBcmVNYXRjaGVySW1wbCk7Cit9OworCisvLyBGdW5jdG9yIGZvciB1c2Ug
aW4gVHJhbnNmb3JtVHVwbGUuCisvLyBQZXJmb3JtcyBNYXRjaGVyQ2FzdDxUYXJnZXQ+IG9uIGFu
IGlucHV0IGFyZ3VtZW50IG9mIGFueSB0eXBlLgordGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldD4K
K3N0cnVjdCBDYXN0QW5kQXBwZW5kVHJhbnNmb3JtIHsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEFy
Zz4KKyAgTWF0Y2hlcjxUYXJnZXQ+IG9wZXJhdG9yKCkoY29uc3QgQXJnJiBhKSBjb25zdCB7Cisg
ICAgcmV0dXJuIE1hdGNoZXJDYXN0PFRhcmdldD4oYSk7CisgIH0KK307CisKKy8vIEltcGxlbWVu
dHMgVW5vcmRlcmVkRWxlbWVudHNBcmUuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTWF0Y2hlclR1cGxl
PgorY2xhc3MgVW5vcmRlcmVkRWxlbWVudHNBcmVNYXRjaGVyIHsKKyBwdWJsaWM6CisgIGV4cGxp
Y2l0IFVub3JkZXJlZEVsZW1lbnRzQXJlTWF0Y2hlcihjb25zdCBNYXRjaGVyVHVwbGUmIGFyZ3Mp
CisgICAgICA6IG1hdGNoZXJzXyhhcmdzKSB7fQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb250
YWluZXI+CisgIG9wZXJhdG9yIE1hdGNoZXI8Q29udGFpbmVyPigpIGNvbnN0IHsKKyAgICB0eXBl
ZGVmIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfQU5EX0NPTlNUXyhDb250YWluZXIpIFJhd0NvbnRh
aW5lcjsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIGludGVybmFsOjpTdGxDb250YWluZXJWaWV3PFJh
d0NvbnRhaW5lcj46OnR5cGUgVmlldzsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIFZpZXc6OnZhbHVl
X3R5cGUgRWxlbWVudDsKKyAgICB0eXBlZGVmIDo6c3RkOjp2ZWN0b3I8TWF0Y2hlcjxjb25zdCBF
bGVtZW50Jj4gPiBNYXRjaGVyVmVjOworICAgIE1hdGNoZXJWZWMgbWF0Y2hlcnM7CisgICAgbWF0
Y2hlcnMucmVzZXJ2ZSg6OnRlc3Rpbmc6OnR1cGxlX3NpemU8TWF0Y2hlclR1cGxlPjo6dmFsdWUp
OworICAgIFRyYW5zZm9ybVR1cGxlVmFsdWVzKENhc3RBbmRBcHBlbmRUcmFuc2Zvcm08Y29uc3Qg
RWxlbWVudCY+KCksIG1hdGNoZXJzXywKKyAgICAgICAgICAgICAgICAgICAgICAgICA6OnN0ZDo6
YmFja19pbnNlcnRlcihtYXRjaGVycykpOworICAgIHJldHVybiBNYWtlTWF0Y2hlcihuZXcgVW5v
cmRlcmVkRWxlbWVudHNBcmVNYXRjaGVySW1wbDxDb250YWluZXI+KAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbWF0Y2hlcnMuYmVnaW4oKSwgbWF0Y2hlcnMuZW5kKCkpKTsKKyAgfQorCisg
cHJpdmF0ZToKKyAgY29uc3QgTWF0Y2hlclR1cGxlIG1hdGNoZXJzXzsKKyAgR1RFU1RfRElTQUxM
T1dfQVNTSUdOXyhVbm9yZGVyZWRFbGVtZW50c0FyZU1hdGNoZXIpOworfTsKKworLy8gSW1wbGVt
ZW50cyBFbGVtZW50c0FyZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBNYXRjaGVyVHVwbGU+CitjbGFz
cyBFbGVtZW50c0FyZU1hdGNoZXIgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgRWxlbWVudHNBcmVN
YXRjaGVyKGNvbnN0IE1hdGNoZXJUdXBsZSYgYXJncykgOiBtYXRjaGVyc18oYXJncykge30KKwor
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyPgorICBvcGVyYXRvciBNYXRjaGVyPENvbnRh
aW5lcj4oKSBjb25zdCB7CisgICAgdHlwZWRlZiBHVEVTVF9SRU1PVkVfUkVGRVJFTkNFX0FORF9D
T05TVF8oQ29udGFpbmVyKSBSYXdDb250YWluZXI7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBpbnRl
cm5hbDo6U3RsQ29udGFpbmVyVmlldzxSYXdDb250YWluZXI+Ojp0eXBlIFZpZXc7CisgICAgdHlw
ZWRlZiB0eXBlbmFtZSBWaWV3Ojp2YWx1ZV90eXBlIEVsZW1lbnQ7CisgICAgdHlwZWRlZiA6OnN0
ZDo6dmVjdG9yPE1hdGNoZXI8Y29uc3QgRWxlbWVudCY+ID4gTWF0Y2hlclZlYzsKKyAgICBNYXRj
aGVyVmVjIG1hdGNoZXJzOworICAgIG1hdGNoZXJzLnJlc2VydmUoOjp0ZXN0aW5nOjp0dXBsZV9z
aXplPE1hdGNoZXJUdXBsZT46OnZhbHVlKTsKKyAgICBUcmFuc2Zvcm1UdXBsZVZhbHVlcyhDYXN0
QW5kQXBwZW5kVHJhbnNmb3JtPGNvbnN0IEVsZW1lbnQmPigpLCBtYXRjaGVyc18sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgOjpzdGQ6OmJhY2tfaW5zZXJ0ZXIobWF0Y2hlcnMpKTsKKyAgICBy
ZXR1cm4gTWFrZU1hdGNoZXIobmV3IEVsZW1lbnRzQXJlTWF0Y2hlckltcGw8Q29udGFpbmVyPigK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZXJzLmJlZ2luKCksIG1hdGNoZXJzLmVu
ZCgpKSk7CisgIH0KKworIHByaXZhdGU6CisgIGNvbnN0IE1hdGNoZXJUdXBsZSBtYXRjaGVyc187
CisgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oRWxlbWVudHNBcmVNYXRjaGVyKTsKK307CisKKy8v
IEltcGxlbWVudHMgVW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSgpLgordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CitjbGFzcyBVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5TWF0Y2hlciB7CisgcHVibGlj
OgorICBVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5TWF0Y2hlcigpIHt9CisKKyAgdGVtcGxhdGUg
PHR5cGVuYW1lIEl0ZXI+CisgIFVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXlNYXRjaGVyKEl0ZXIg
Zmlyc3QsIEl0ZXIgbGFzdCkKKyAgICAgIDogbWF0Y2hlcnNfKGZpcnN0LCBsYXN0KSB7fQorCisg
IHRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXI+CisgIG9wZXJhdG9yIE1hdGNoZXI8Q29udGFp
bmVyPigpIGNvbnN0IHsKKyAgICByZXR1cm4gTWFrZU1hdGNoZXIoCisgICAgICAgIG5ldyBVbm9y
ZGVyZWRFbGVtZW50c0FyZU1hdGNoZXJJbXBsPENvbnRhaW5lcj4obWF0Y2hlcnNfLmJlZ2luKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bWF0Y2hlcnNfLmVuZCgpKSk7CisgIH0KKworIHByaXZhdGU6CisgIDo6c3RkOjp2ZWN0b3I8VD4g
bWF0Y2hlcnNfOworCisgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oVW5vcmRlcmVkRWxlbWVudHNB
cmVBcnJheU1hdGNoZXIpOworfTsKKworLy8gSW1wbGVtZW50cyBFbGVtZW50c0FyZUFycmF5KCku
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIEVsZW1lbnRzQXJlQXJyYXlNYXRjaGVyIHsK
KyBwdWJsaWM6CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBJdGVyPgorICBFbGVtZW50c0FyZUFycmF5
TWF0Y2hlcihJdGVyIGZpcnN0LCBJdGVyIGxhc3QpIDogbWF0Y2hlcnNfKGZpcnN0LCBsYXN0KSB7
fQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXI+CisgIG9wZXJhdG9yIE1hdGNoZXI8
Q29udGFpbmVyPigpIGNvbnN0IHsKKyAgICByZXR1cm4gTWFrZU1hdGNoZXIobmV3IEVsZW1lbnRz
QXJlTWF0Y2hlckltcGw8Q29udGFpbmVyPigKKyAgICAgICAgbWF0Y2hlcnNfLmJlZ2luKCksIG1h
dGNoZXJzXy5lbmQoKSkpOworICB9CisKKyBwcml2YXRlOgorICBjb25zdCA6OnN0ZDo6dmVjdG9y
PFQ+IG1hdGNoZXJzXzsKKworICBHVEVTVF9ESVNBTExPV19BU1NJR05fKEVsZW1lbnRzQXJlQXJy
YXlNYXRjaGVyKTsKK307CisKKy8vIEdpdmVuIGEgMi10dXBsZSBtYXRjaGVyIHRtIG9mIHR5cGUg
VHVwbGUyTWF0Y2hlciBhbmQgYSB2YWx1ZSBzZWNvbmQKKy8vIG9mIHR5cGUgU2Vjb25kLCBCb3Vu
ZFNlY29uZE1hdGNoZXI8VHVwbGUyTWF0Y2hlciwgU2Vjb25kPih0bSwKKy8vIHNlY29uZCkgaXMg
YSBwb2x5bW9ycGhpYyBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhIHZhbHVlIHggaWZmIHRtCisvLyBt
YXRjaGVzIHR1cGxlICh4LCBzZWNvbmQpLiAgVXNlZnVsIGZvciBpbXBsZW1lbnRpbmcKKy8vIFVu
b3JkZXJlZFBvaW50d2lzZSgpIGluIHRlcm1zIG9mIFVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXko
KS4KKy8vCisvLyBCb3VuZFNlY29uZE1hdGNoZXIgaXMgY29weWFibGUgYW5kIGFzc2lnbmFibGUs
IGFzIHdlIG5lZWQgdG8gcHV0CisvLyBpbnN0YW5jZXMgb2YgdGhpcyBjbGFzcyBpbiBhIHZlY3Rv
ciB3aGVuIGltcGxlbWVudGluZworLy8gVW5vcmRlcmVkUG9pbnR3aXNlKCkuCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVHVwbGUyTWF0Y2hlciwgdHlwZW5hbWUgU2Vjb25kPgorY2xhc3MgQm91bmRTZWNv
bmRNYXRjaGVyIHsKKyBwdWJsaWM6CisgIEJvdW5kU2Vjb25kTWF0Y2hlcihjb25zdCBUdXBsZTJN
YXRjaGVyJiB0bSwgY29uc3QgU2Vjb25kJiBzZWNvbmQpCisgICAgICA6IHR1cGxlMl9tYXRjaGVy
Xyh0bSksIHNlY29uZF92YWx1ZV8oc2Vjb25kKSB7fQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgorICBvcGVyYXRvciBNYXRjaGVyPFQ+KCkgY29uc3QgeworICAgIHJldHVybiBNYWtlTWF0Y2hl
cihuZXcgSW1wbDxUPih0dXBsZTJfbWF0Y2hlcl8sIHNlY29uZF92YWx1ZV8pKTsKKyAgfQorCisg
IC8vIFdlIGhhdmUgdG8gZGVmaW5lIHRoaXMgZm9yIFVub3JkZXJlZFBvaW50d2lzZSgpIHRvIGNv
bXBpbGUgaW4KKyAgLy8gQysrOTggbW9kZSwgYXMgaXQgcHV0cyBCb3VuZFNlY29uZE1hdGNoZXIg
aW5zdGFuY2VzIGluIGEgdmVjdG9yLAorICAvLyB3aGljaCByZXF1aXJlcyB0aGUgZWxlbWVudHMg
dG8gYmUgYXNzaWduYWJsZSBpbiBDKys5OC4gIFRoZQorICAvLyBjb21waWxlciBjYW5ub3QgZ2Vu
ZXJhdGUgdGhlIG9wZXJhdG9yPSBmb3IgdXMsIGFzIFR1cGxlMk1hdGNoZXIKKyAgLy8gYW5kIFNl
Y29uZCBtYXkgbm90IGJlIGFzc2lnbmFibGUuCisgIC8vCisgIC8vIEhvd2V2ZXIsIHRoaXMgc2hv
dWxkIG5ldmVyIGJlIGNhbGxlZCwgc28gdGhlIGltcGxlbWVudGF0aW9uIGp1c3QKKyAgLy8gbmVl
ZCB0byBhc3NlcnQuCisgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IEJvdW5kU2Vjb25kTWF0Y2hlciYg
LypyaHMqLykgeworICAgIEdURVNUX0xPR18oRkFUQUwpIDw8ICJCb3VuZFNlY29uZE1hdGNoZXIg
c2hvdWxkIG5ldmVyIGJlIGFzc2lnbmVkLiI7CisgIH0KKworIHByaXZhdGU6CisgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgorICBjbGFzcyBJbXBsIDogcHVibGljIE1hdGNoZXJJbnRlcmZhY2U8VD4g
eworICAgcHVibGljOgorICAgIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxULCBTZWNvbmQ+IEFy
Z1R1cGxlOworCisgICAgSW1wbChjb25zdCBUdXBsZTJNYXRjaGVyJiB0bSwgY29uc3QgU2Vjb25k
JiBzZWNvbmQpCisgICAgICAgIDogbW9ub190dXBsZTJfbWF0Y2hlcl8oU2FmZU1hdGNoZXJDYXN0
PGNvbnN0IEFyZ1R1cGxlJj4odG0pKSwKKyAgICAgICAgICBzZWNvbmRfdmFsdWVfKHNlY29uZCkg
e30KKworICAgIHZpcnR1YWwgdm9pZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29u
c3QgeworICAgICAgKm9zIDw8ICJhbmQgIjsKKyAgICAgIFVuaXZlcnNhbFByaW50KHNlY29uZF92
YWx1ZV8sIG9zKTsKKyAgICAgICpvcyA8PCAiICI7CisgICAgICBtb25vX3R1cGxlMl9tYXRjaGVy
Xy5EZXNjcmliZVRvKG9zKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBs
YWluKFQgeCwgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNvbnN0IHsKKyAgICAgIHJl
dHVybiBtb25vX3R1cGxlMl9tYXRjaGVyXy5NYXRjaEFuZEV4cGxhaW4oQXJnVHVwbGUoeCwgc2Vj
b25kX3ZhbHVlXyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxpc3RlbmVyKTsKKyAgICB9CisKKyAgIHByaXZhdGU6CisgICAgY29uc3QgTWF0Y2hl
cjxjb25zdCBBcmdUdXBsZSY+IG1vbm9fdHVwbGUyX21hdGNoZXJfOworICAgIGNvbnN0IFNlY29u
ZCBzZWNvbmRfdmFsdWVfOworCisgICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhJbXBsKTsKKyAg
fTsKKworICBjb25zdCBUdXBsZTJNYXRjaGVyIHR1cGxlMl9tYXRjaGVyXzsKKyAgY29uc3QgU2Vj
b25kIHNlY29uZF92YWx1ZV87Cit9OworCisvLyBHaXZlbiBhIDItdHVwbGUgbWF0Y2hlciB0bSBh
bmQgYSB2YWx1ZSBzZWNvbmQsCisvLyBNYXRjaGVyQmluZFNlY29uZCh0bSwgc2Vjb25kKSByZXR1
cm5zIGEgbWF0Y2hlciB0aGF0IG1hdGNoZXMgYQorLy8gdmFsdWUgeCBpZmYgdG0gbWF0Y2hlcyB0
dXBsZSAoeCwgc2Vjb25kKS4gIFVzZWZ1bCBmb3IgaW1wbGVtZW50aW5nCisvLyBVbm9yZGVyZWRQ
b2ludHdpc2UoKSBpbiB0ZXJtcyBvZiBVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KCkuCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVHVwbGUyTWF0Y2hlciwgdHlwZW5hbWUgU2Vjb25kPgorQm91bmRTZWNv
bmRNYXRjaGVyPFR1cGxlMk1hdGNoZXIsIFNlY29uZD4gTWF0Y2hlckJpbmRTZWNvbmQoCisgICAg
Y29uc3QgVHVwbGUyTWF0Y2hlciYgdG0sIGNvbnN0IFNlY29uZCYgc2Vjb25kKSB7CisgIHJldHVy
biBCb3VuZFNlY29uZE1hdGNoZXI8VHVwbGUyTWF0Y2hlciwgU2Vjb25kPih0bSwgc2Vjb25kKTsK
K30KKworLy8gUmV0dXJucyB0aGUgZGVzY3JpcHRpb24gZm9yIGEgbWF0Y2hlciBkZWZpbmVkIHVz
aW5nIHRoZSBNQVRDSEVSKigpCisvLyBtYWNybyB3aGVyZSB0aGUgdXNlci1zdXBwbGllZCBkZXNj
cmlwdGlvbiBzdHJpbmcgaXMgIiIsIGlmCisvLyAnbmVnYXRpb24nIGlzIGZhbHNlOyBvdGhlcndp
c2UgcmV0dXJucyB0aGUgZGVzY3JpcHRpb24gb2YgdGhlCisvLyBuZWdhdGlvbiBvZiB0aGUgbWF0
Y2hlci4gICdwYXJhbV92YWx1ZXMnIGNvbnRhaW5zIGEgbGlzdCBvZiBzdHJpbmdzCisvLyB0aGF0
IGFyZSB0aGUgcHJpbnQtb3V0IG9mIHRoZSBtYXRjaGVyJ3MgcGFyYW1ldGVycy4KK0dURVNUX0FQ
SV8gc3RkOjpzdHJpbmcgRm9ybWF0TWF0Y2hlckRlc2NyaXB0aW9uKGJvb2wgbmVnYXRpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBtYXRjaGVyX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBTdHJpbmdzJiBwYXJhbV92YWx1ZXMpOworCit9ICAvLyBuYW1lc3BhY2Ug
aW50ZXJuYWwKKworLy8gRWxlbWVudHNBcmVBcnJheShmaXJzdCwgbGFzdCkKKy8vIEVsZW1lbnRz
QXJlQXJyYXkocG9pbnRlciwgY291bnQpCisvLyBFbGVtZW50c0FyZUFycmF5KGFycmF5KQorLy8g
RWxlbWVudHNBcmVBcnJheShjb250YWluZXIpCisvLyBFbGVtZW50c0FyZUFycmF5KHsgZTEsIGUy
LCAuLi4sIGVuIH0pCisvLworLy8gVGhlIEVsZW1lbnRzQXJlQXJyYXkoKSBmdW5jdGlvbnMgYXJl
IGxpa2UgRWxlbWVudHNBcmUoLi4uKSwgZXhjZXB0CisvLyB0aGF0IHRoZXkgYXJlIGdpdmVuIGEg
aG9tb2dlbmVvdXMgc2VxdWVuY2UgcmF0aGVyIHRoYW4gdGFraW5nIGVhY2gKKy8vIGVsZW1lbnQg
YXMgYSBmdW5jdGlvbiBhcmd1bWVudC4gVGhlIHNlcXVlbmNlIGNhbiBiZSBzcGVjaWZpZWQgYXMg
YW4KKy8vIGFycmF5LCBhIHBvaW50ZXIgYW5kIGNvdW50LCBhIHZlY3RvciwgYW4gaW5pdGlhbGl6
ZXIgbGlzdCwgb3IgYW4KKy8vIFNUTCBpdGVyYXRvciByYW5nZS4gSW4gZWFjaCBvZiB0aGVzZSBj
YXNlcywgdGhlIHVuZGVybHlpbmcgc2VxdWVuY2UKKy8vIGNhbiBiZSBlaXRoZXIgYSBzZXF1ZW5j
ZSBvZiB2YWx1ZXMgb3IgYSBzZXF1ZW5jZSBvZiBtYXRjaGVycy4KKy8vCisvLyBBbGwgZm9ybXMg
b2YgRWxlbWVudHNBcmVBcnJheSgpIG1ha2UgYSBjb3B5IG9mIHRoZSBpbnB1dCBtYXRjaGVyIHNl
cXVlbmNlLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcj4KK2lubGluZSBpbnRlcm5hbDo6RWxl
bWVudHNBcmVBcnJheU1hdGNoZXI8CisgICAgdHlwZW5hbWUgOjpzdGQ6Oml0ZXJhdG9yX3RyYWl0
czxJdGVyPjo6dmFsdWVfdHlwZT4KK0VsZW1lbnRzQXJlQXJyYXkoSXRlciBmaXJzdCwgSXRlciBs
YXN0KSB7CisgIHR5cGVkZWYgdHlwZW5hbWUgOjpzdGQ6Oml0ZXJhdG9yX3RyYWl0czxJdGVyPjo6
dmFsdWVfdHlwZSBUOworICByZXR1cm4gaW50ZXJuYWw6OkVsZW1lbnRzQXJlQXJyYXlNYXRjaGVy
PFQ+KGZpcnN0LCBsYXN0KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitpbmxpbmUgaW50
ZXJuYWw6OkVsZW1lbnRzQXJlQXJyYXlNYXRjaGVyPFQ+IEVsZW1lbnRzQXJlQXJyYXkoCisgICAg
Y29uc3QgVCogcG9pbnRlciwgc2l6ZV90IGNvdW50KSB7CisgIHJldHVybiBFbGVtZW50c0FyZUFy
cmF5KHBvaW50ZXIsIHBvaW50ZXIgKyBjb3VudCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
LCBzaXplX3QgTj4KK2lubGluZSBpbnRlcm5hbDo6RWxlbWVudHNBcmVBcnJheU1hdGNoZXI8VD4g
RWxlbWVudHNBcmVBcnJheSgKKyAgICBjb25zdCBUICgmYXJyYXkpW05dKSB7CisgIHJldHVybiBF
bGVtZW50c0FyZUFycmF5KGFycmF5LCBOKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENvbnRh
aW5lcj4KK2lubGluZSBpbnRlcm5hbDo6RWxlbWVudHNBcmVBcnJheU1hdGNoZXI8dHlwZW5hbWUg
Q29udGFpbmVyOjp2YWx1ZV90eXBlPgorRWxlbWVudHNBcmVBcnJheShjb25zdCBDb250YWluZXIm
IGNvbnRhaW5lcikgeworICByZXR1cm4gRWxlbWVudHNBcmVBcnJheShjb250YWluZXIuYmVnaW4o
KSwgY29udGFpbmVyLmVuZCgpKTsKK30KKworI2lmIEdURVNUX0hBU19TVERfSU5JVElBTElaRVJf
TElTVF8KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgoraW5saW5lIGludGVybmFsOjpFbGVtZW50c0Fy
ZUFycmF5TWF0Y2hlcjxUPgorRWxlbWVudHNBcmVBcnJheSg6OnN0ZDo6aW5pdGlhbGl6ZXJfbGlz
dDxUPiB4cykgeworICByZXR1cm4gRWxlbWVudHNBcmVBcnJheSh4cy5iZWdpbigpLCB4cy5lbmQo
KSk7Cit9CisjZW5kaWYKKworLy8gVW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheShmaXJzdCwgbGFz
dCkKKy8vIFVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkocG9pbnRlciwgY291bnQpCisvLyBVbm9y
ZGVyZWRFbGVtZW50c0FyZUFycmF5KGFycmF5KQorLy8gVW5vcmRlcmVkRWxlbWVudHNBcmVBcnJh
eShjb250YWluZXIpCisvLyBVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHsgZTEsIGUyLCAuLi4s
IGVuIH0pCisvLworLy8gVGhlIFVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkoKSBmdW5jdGlvbnMg
YXJlIGxpa2UKKy8vIEVsZW1lbnRzQXJlQXJyYXkoLi4uKSwgYnV0IGFsbG93IG1hdGNoaW5nIHRo
ZSBlbGVtZW50cyBpbiBhbnkgb3JkZXIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcj4KK2lubGlu
ZSBpbnRlcm5hbDo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheU1hdGNoZXI8CisgICAgdHlwZW5h
bWUgOjpzdGQ6Oml0ZXJhdG9yX3RyYWl0czxJdGVyPjo6dmFsdWVfdHlwZT4KK1Vub3JkZXJlZEVs
ZW1lbnRzQXJlQXJyYXkoSXRlciBmaXJzdCwgSXRlciBsYXN0KSB7CisgIHR5cGVkZWYgdHlwZW5h
bWUgOjpzdGQ6Oml0ZXJhdG9yX3RyYWl0czxJdGVyPjo6dmFsdWVfdHlwZSBUOworICByZXR1cm4g
aW50ZXJuYWw6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXlNYXRjaGVyPFQ+KGZpcnN0LCBsYXN0
KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitpbmxpbmUgaW50ZXJuYWw6OlVub3JkZXJl
ZEVsZW1lbnRzQXJlQXJyYXlNYXRjaGVyPFQ+CitVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KGNv
bnN0IFQqIHBvaW50ZXIsIHNpemVfdCBjb3VudCkgeworICByZXR1cm4gVW5vcmRlcmVkRWxlbWVu
dHNBcmVBcnJheShwb2ludGVyLCBwb2ludGVyICsgY291bnQpOworfQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgc2l6ZV90IE4+CitpbmxpbmUgaW50ZXJuYWw6OlVub3JkZXJlZEVsZW1lbnRzQXJl
QXJyYXlNYXRjaGVyPFQ+CitVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KGNvbnN0IFQgKCZhcnJh
eSlbTl0pIHsKKyAgcmV0dXJuIFVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkoYXJyYXksIE4pOwor
fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyPgoraW5saW5lIGludGVybmFsOjpVbm9y
ZGVyZWRFbGVtZW50c0FyZUFycmF5TWF0Y2hlcjwKKyAgICB0eXBlbmFtZSBDb250YWluZXI6OnZh
bHVlX3R5cGU+CitVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KGNvbnN0IENvbnRhaW5lciYgY29u
dGFpbmVyKSB7CisgIHJldHVybiBVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KGNvbnRhaW5lci5i
ZWdpbigpLCBjb250YWluZXIuZW5kKCkpOworfQorCisjaWYgR1RFU1RfSEFTX1NURF9JTklUSUFM
SVpFUl9MSVNUXwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitpbmxpbmUgaW50ZXJuYWw6OlVub3Jk
ZXJlZEVsZW1lbnRzQXJlQXJyYXlNYXRjaGVyPFQ+CitVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5
KDo6c3RkOjppbml0aWFsaXplcl9saXN0PFQ+IHhzKSB7CisgIHJldHVybiBVbm9yZGVyZWRFbGVt
ZW50c0FyZUFycmF5KHhzLmJlZ2luKCksIHhzLmVuZCgpKTsKK30KKyNlbmRpZgorCisvLyBfIGlz
IGEgbWF0Y2hlciB0aGF0IG1hdGNoZXMgYW55dGhpbmcgb2YgYW55IHR5cGUuCisvLworLy8gVGhp
cyBkZWZpbml0aW9uIGlzIGZpbmUgYXM6CisvLworLy8gICAxLiBUaGUgQysrIHN0YW5kYXJkIHBl
cm1pdHMgdXNpbmcgdGhlIG5hbWUgXyBpbiBhIG5hbWVzcGFjZSB0aGF0CisvLyAgICAgIGlzIG5v
dCB0aGUgZ2xvYmFsIG5hbWVzcGFjZSBvciA6OnN0ZC4KKy8vICAgMi4gVGhlIEFueXRoaW5nTWF0
Y2hlciBjbGFzcyBoYXMgbm8gZGF0YSBtZW1iZXIgb3IgY29uc3RydWN0b3IsCisvLyAgICAgIHNv
IGl0J3MgT0sgdG8gY3JlYXRlIGdsb2JhbCB2YXJpYWJsZXMgb2YgdGhpcyB0eXBlLgorLy8gICAz
LiBjLXN0eWxlIGhhcyBhcHByb3ZlZCBvZiB1c2luZyBfIGluIHRoaXMgY2FzZS4KK2NvbnN0IGlu
dGVybmFsOjpBbnl0aGluZ01hdGNoZXIgXyA9IHt9OworLy8gQ3JlYXRlcyBhIG1hdGNoZXIgdGhh
dCBtYXRjaGVzIGFueSB2YWx1ZSBvZiB0aGUgZ2l2ZW4gdHlwZSBULgordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CitpbmxpbmUgTWF0Y2hlcjxUPiBBKCkgeyByZXR1cm4gTWFrZU1hdGNoZXIobmV3IGlu
dGVybmFsOjpBbnlNYXRjaGVySW1wbDxUPigpKTsgfQorCisvLyBDcmVhdGVzIGEgbWF0Y2hlciB0
aGF0IG1hdGNoZXMgYW55IHZhbHVlIG9mIHRoZSBnaXZlbiB0eXBlIFQuCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK2lubGluZSBNYXRjaGVyPFQ+IEFuKCkgeyByZXR1cm4gQTxUPigpOyB9CisKKy8v
IENyZWF0ZXMgYSBwb2x5bW9ycGhpYyBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhbnl0aGluZyBlcXVh
bCB0byB4LgorLy8gTm90ZTogaWYgdGhlIHBhcmFtZXRlciBvZiBFcSgpIHdlcmUgZGVjbGFyZWQg
YXMgY29uc3QgVCYsIEVxKCJmb28iKQorLy8gd291bGRuJ3QgY29tcGlsZS4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgoraW5saW5lIGludGVybmFsOjpFcU1hdGNoZXI8VD4gRXEoVCB4KSB7IHJldHVy
biBpbnRlcm5hbDo6RXFNYXRjaGVyPFQ+KHgpOyB9CisKKy8vIENvbnN0cnVjdHMgYSBNYXRjaGVy
PFQ+IGZyb20gYSAndmFsdWUnIG9mIHR5cGUgVC4gIFRoZSBjb25zdHJ1Y3RlZAorLy8gbWF0Y2hl
ciBtYXRjaGVzIGFueSB2YWx1ZSB0aGF0J3MgZXF1YWwgdG8gJ3ZhbHVlJy4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgorTWF0Y2hlcjxUPjo6TWF0Y2hlcihUIHZhbHVlKSB7ICp0aGlzID0gRXEodmFs
dWUpOyB9CisKKy8vIENyZWF0ZXMgYSBtb25vbW9ycGhpYyBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBh
bnl0aGluZyB3aXRoIHR5cGUgTGhzCisvLyBhbmQgZXF1YWwgdG8gcmhzLiAgQSB1c2VyIG1heSBu
ZWVkIHRvIHVzZSB0aGlzIGluc3RlYWQgb2YgRXEoLi4uKQorLy8gaW4gb3JkZXIgdG8gcmVzb2x2
ZSBhbiBvdmVybG9hZGluZyBhbWJpZ3VpdHkuCisvLworLy8gVHlwZWRFcTxUPih4KSBpcyBqdXN0
IGEgY29udmVuaWVudCBzaG9ydC1oYW5kIGZvciBNYXRjaGVyPFQ+KEVxKHgpKQorLy8gb3IgTWF0
Y2hlcjxUPih4KSwgYnV0IG1vcmUgcmVhZGFibGUgdGhhbiB0aGUgbGF0dGVyLgorLy8KKy8vIFdl
IGNvdWxkIGRlZmluZSBzaW1pbGFyIG1vbm9tb3JwaGljIG1hdGNoZXJzIGZvciBvdGhlciBjb21w
YXJpc29uCisvLyBvcGVyYXRpb25zIChlLmcuIFR5cGVkTHQsIFR5cGVkR2UsIGFuZCBldGMpLCBi
dXQgZGVjaWRlZCBub3QgdG8gZG8KKy8vIGl0IHlldCBhcyB0aG9zZSBhcmUgdXNlZCBtdWNoIGxl
c3MgdGhhbiBFcSgpIGluIHByYWN0aWNlLiAgQSB1c2VyCisvLyBjYW4gYWx3YXlzIHdyaXRlIE1h
dGNoZXI8VD4oTHQoNSkpIHRvIGJlIGV4cGxpY2l0IGFib3V0IHRoZSB0eXBlLAorLy8gZm9yIGV4
YW1wbGUuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTGhzLCB0eXBlbmFtZSBSaHM+CitpbmxpbmUgTWF0
Y2hlcjxMaHM+IFR5cGVkRXEoY29uc3QgUmhzJiByaHMpIHsgcmV0dXJuIEVxKHJocyk7IH0KKwor
Ly8gQ3JlYXRlcyBhIHBvbHltb3JwaGljIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGFueXRoaW5nID49
IHguCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUmhzPgoraW5saW5lIGludGVybmFsOjpHZU1hdGNoZXI8
UmhzPiBHZShSaHMgeCkgeworICByZXR1cm4gaW50ZXJuYWw6OkdlTWF0Y2hlcjxSaHM+KHgpOwor
fQorCisvLyBDcmVhdGVzIGEgcG9seW1vcnBoaWMgbWF0Y2hlciB0aGF0IG1hdGNoZXMgYW55dGhp
bmcgPiB4LgordGVtcGxhdGUgPHR5cGVuYW1lIFJocz4KK2lubGluZSBpbnRlcm5hbDo6R3RNYXRj
aGVyPFJocz4gR3QoUmhzIHgpIHsKKyAgcmV0dXJuIGludGVybmFsOjpHdE1hdGNoZXI8UmhzPih4
KTsKK30KKworLy8gQ3JlYXRlcyBhIHBvbHltb3JwaGljIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGFu
eXRoaW5nIDw9IHguCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUmhzPgoraW5saW5lIGludGVybmFsOjpM
ZU1hdGNoZXI8UmhzPiBMZShSaHMgeCkgeworICByZXR1cm4gaW50ZXJuYWw6OkxlTWF0Y2hlcjxS
aHM+KHgpOworfQorCisvLyBDcmVhdGVzIGEgcG9seW1vcnBoaWMgbWF0Y2hlciB0aGF0IG1hdGNo
ZXMgYW55dGhpbmcgPCB4LgordGVtcGxhdGUgPHR5cGVuYW1lIFJocz4KK2lubGluZSBpbnRlcm5h
bDo6THRNYXRjaGVyPFJocz4gTHQoUmhzIHgpIHsKKyAgcmV0dXJuIGludGVybmFsOjpMdE1hdGNo
ZXI8UmhzPih4KTsKK30KKworLy8gQ3JlYXRlcyBhIHBvbHltb3JwaGljIG1hdGNoZXIgdGhhdCBt
YXRjaGVzIGFueXRoaW5nICE9IHguCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUmhzPgoraW5saW5lIGlu
dGVybmFsOjpOZU1hdGNoZXI8UmhzPiBOZShSaHMgeCkgeworICByZXR1cm4gaW50ZXJuYWw6Ok5l
TWF0Y2hlcjxSaHM+KHgpOworfQorCisvLyBDcmVhdGVzIGEgcG9seW1vcnBoaWMgbWF0Y2hlciB0
aGF0IG1hdGNoZXMgYW55IE5VTEwgcG9pbnRlci4KK2lubGluZSBQb2x5bW9ycGhpY01hdGNoZXI8
aW50ZXJuYWw6OklzTnVsbE1hdGNoZXIgPiBJc051bGwoKSB7CisgIHJldHVybiBNYWtlUG9seW1v
cnBoaWNNYXRjaGVyKGludGVybmFsOjpJc051bGxNYXRjaGVyKCkpOworfQorCisvLyBDcmVhdGVz
IGEgcG9seW1vcnBoaWMgbWF0Y2hlciB0aGF0IG1hdGNoZXMgYW55IG5vbi1OVUxMIHBvaW50ZXIu
CisvLyBUaGlzIGlzIGNvbnZlbmllbnQgYXMgTm90KE5VTEwpIGRvZXNuJ3QgY29tcGlsZSAodGhl
IGNvbXBpbGVyCisvLyB0aGlua3MgdGhhdCB0aGF0IGV4cHJlc3Npb24gaXMgY29tcGFyaW5nIGEg
cG9pbnRlciB3aXRoIGFuIGludGVnZXIpLgoraW5saW5lIFBvbHltb3JwaGljTWF0Y2hlcjxpbnRl
cm5hbDo6Tm90TnVsbE1hdGNoZXIgPiBOb3ROdWxsKCkgeworICByZXR1cm4gTWFrZVBvbHltb3Jw
aGljTWF0Y2hlcihpbnRlcm5hbDo6Tm90TnVsbE1hdGNoZXIoKSk7Cit9CisKKy8vIENyZWF0ZXMg
YSBwb2x5bW9ycGhpYyBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhbnkgYXJndW1lbnQgdGhhdAorLy8g
cmVmZXJlbmNlcyB2YXJpYWJsZSB4LgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitpbmxpbmUgaW50
ZXJuYWw6OlJlZk1hdGNoZXI8VCY+IFJlZihUJiB4KSB7ICAvLyBOT0xJTlQKKyAgcmV0dXJuIGlu
dGVybmFsOjpSZWZNYXRjaGVyPFQmPih4KTsKK30KKworLy8gQ3JlYXRlcyBhIG1hdGNoZXIgdGhh
dCBtYXRjaGVzIGFueSBkb3VibGUgYXJndW1lbnQgYXBwcm94aW1hdGVseQorLy8gZXF1YWwgdG8g
cmhzLCB3aGVyZSB0d28gTkFOcyBhcmUgY29uc2lkZXJlZCB1bmVxdWFsLgoraW5saW5lIGludGVy
bmFsOjpGbG9hdGluZ0VxTWF0Y2hlcjxkb3VibGU+IERvdWJsZUVxKGRvdWJsZSByaHMpIHsKKyAg
cmV0dXJuIGludGVybmFsOjpGbG9hdGluZ0VxTWF0Y2hlcjxkb3VibGU+KHJocywgZmFsc2UpOwor
fQorCisvLyBDcmVhdGVzIGEgbWF0Y2hlciB0aGF0IG1hdGNoZXMgYW55IGRvdWJsZSBhcmd1bWVu
dCBhcHByb3hpbWF0ZWx5CisvLyBlcXVhbCB0byByaHMsIGluY2x1ZGluZyBOYU4gdmFsdWVzIHdo
ZW4gcmhzIGlzIE5hTi4KK2lubGluZSBpbnRlcm5hbDo6RmxvYXRpbmdFcU1hdGNoZXI8ZG91Ymxl
PiBOYW5TZW5zaXRpdmVEb3VibGVFcShkb3VibGUgcmhzKSB7CisgIHJldHVybiBpbnRlcm5hbDo6
RmxvYXRpbmdFcU1hdGNoZXI8ZG91YmxlPihyaHMsIHRydWUpOworfQorCisvLyBDcmVhdGVzIGEg
bWF0Y2hlciB0aGF0IG1hdGNoZXMgYW55IGRvdWJsZSBhcmd1bWVudCBhcHByb3hpbWF0ZWx5IGVx
dWFsIHRvCisvLyByaHMsIHVwIHRvIHRoZSBzcGVjaWZpZWQgbWF4IGFic29sdXRlIGVycm9yIGJv
dW5kLCB3aGVyZSB0d28gTkFOcyBhcmUKKy8vIGNvbnNpZGVyZWQgdW5lcXVhbC4gIFRoZSBtYXgg
YWJzb2x1dGUgZXJyb3IgYm91bmQgbXVzdCBiZSBub24tbmVnYXRpdmUuCitpbmxpbmUgaW50ZXJu
YWw6OkZsb2F0aW5nRXFNYXRjaGVyPGRvdWJsZT4gRG91YmxlTmVhcigKKyAgICBkb3VibGUgcmhz
LCBkb3VibGUgbWF4X2Fic19lcnJvcikgeworICByZXR1cm4gaW50ZXJuYWw6OkZsb2F0aW5nRXFN
YXRjaGVyPGRvdWJsZT4ocmhzLCBmYWxzZSwgbWF4X2Fic19lcnJvcik7Cit9CisKKy8vIENyZWF0
ZXMgYSBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhbnkgZG91YmxlIGFyZ3VtZW50IGFwcHJveGltYXRl
bHkgZXF1YWwgdG8KKy8vIHJocywgdXAgdG8gdGhlIHNwZWNpZmllZCBtYXggYWJzb2x1dGUgZXJy
b3IgYm91bmQsIGluY2x1ZGluZyBOYU4gdmFsdWVzIHdoZW4KKy8vIHJocyBpcyBOYU4uICBUaGUg
bWF4IGFic29sdXRlIGVycm9yIGJvdW5kIG11c3QgYmUgbm9uLW5lZ2F0aXZlLgoraW5saW5lIGlu
dGVybmFsOjpGbG9hdGluZ0VxTWF0Y2hlcjxkb3VibGU+IE5hblNlbnNpdGl2ZURvdWJsZU5lYXIo
CisgICAgZG91YmxlIHJocywgZG91YmxlIG1heF9hYnNfZXJyb3IpIHsKKyAgcmV0dXJuIGludGVy
bmFsOjpGbG9hdGluZ0VxTWF0Y2hlcjxkb3VibGU+KHJocywgdHJ1ZSwgbWF4X2Fic19lcnJvcik7
Cit9CisKKy8vIENyZWF0ZXMgYSBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhbnkgZmxvYXQgYXJndW1l
bnQgYXBwcm94aW1hdGVseQorLy8gZXF1YWwgdG8gcmhzLCB3aGVyZSB0d28gTkFOcyBhcmUgY29u
c2lkZXJlZCB1bmVxdWFsLgoraW5saW5lIGludGVybmFsOjpGbG9hdGluZ0VxTWF0Y2hlcjxmbG9h
dD4gRmxvYXRFcShmbG9hdCByaHMpIHsKKyAgcmV0dXJuIGludGVybmFsOjpGbG9hdGluZ0VxTWF0
Y2hlcjxmbG9hdD4ocmhzLCBmYWxzZSk7Cit9CisKKy8vIENyZWF0ZXMgYSBtYXRjaGVyIHRoYXQg
bWF0Y2hlcyBhbnkgZmxvYXQgYXJndW1lbnQgYXBwcm94aW1hdGVseQorLy8gZXF1YWwgdG8gcmhz
LCBpbmNsdWRpbmcgTmFOIHZhbHVlcyB3aGVuIHJocyBpcyBOYU4uCitpbmxpbmUgaW50ZXJuYWw6
OkZsb2F0aW5nRXFNYXRjaGVyPGZsb2F0PiBOYW5TZW5zaXRpdmVGbG9hdEVxKGZsb2F0IHJocykg
eworICByZXR1cm4gaW50ZXJuYWw6OkZsb2F0aW5nRXFNYXRjaGVyPGZsb2F0PihyaHMsIHRydWUp
OworfQorCisvLyBDcmVhdGVzIGEgbWF0Y2hlciB0aGF0IG1hdGNoZXMgYW55IGZsb2F0IGFyZ3Vt
ZW50IGFwcHJveGltYXRlbHkgZXF1YWwgdG8KKy8vIHJocywgdXAgdG8gdGhlIHNwZWNpZmllZCBt
YXggYWJzb2x1dGUgZXJyb3IgYm91bmQsIHdoZXJlIHR3byBOQU5zIGFyZQorLy8gY29uc2lkZXJl
ZCB1bmVxdWFsLiAgVGhlIG1heCBhYnNvbHV0ZSBlcnJvciBib3VuZCBtdXN0IGJlIG5vbi1uZWdh
dGl2ZS4KK2lubGluZSBpbnRlcm5hbDo6RmxvYXRpbmdFcU1hdGNoZXI8ZmxvYXQ+IEZsb2F0TmVh
cigKKyAgICBmbG9hdCByaHMsIGZsb2F0IG1heF9hYnNfZXJyb3IpIHsKKyAgcmV0dXJuIGludGVy
bmFsOjpGbG9hdGluZ0VxTWF0Y2hlcjxmbG9hdD4ocmhzLCBmYWxzZSwgbWF4X2Fic19lcnJvcik7
Cit9CisKKy8vIENyZWF0ZXMgYSBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhbnkgZmxvYXQgYXJndW1l
bnQgYXBwcm94aW1hdGVseSBlcXVhbCB0bworLy8gcmhzLCB1cCB0byB0aGUgc3BlY2lmaWVkIG1h
eCBhYnNvbHV0ZSBlcnJvciBib3VuZCwgaW5jbHVkaW5nIE5hTiB2YWx1ZXMgd2hlbgorLy8gcmhz
IGlzIE5hTi4gIFRoZSBtYXggYWJzb2x1dGUgZXJyb3IgYm91bmQgbXVzdCBiZSBub24tbmVnYXRp
dmUuCitpbmxpbmUgaW50ZXJuYWw6OkZsb2F0aW5nRXFNYXRjaGVyPGZsb2F0PiBOYW5TZW5zaXRp
dmVGbG9hdE5lYXIoCisgICAgZmxvYXQgcmhzLCBmbG9hdCBtYXhfYWJzX2Vycm9yKSB7CisgIHJl
dHVybiBpbnRlcm5hbDo6RmxvYXRpbmdFcU1hdGNoZXI8ZmxvYXQ+KHJocywgdHJ1ZSwgbWF4X2Fi
c19lcnJvcik7Cit9CisKKy8vIENyZWF0ZXMgYSBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhIHBvaW50
ZXIgKHJhdyBvciBzbWFydCkgdGhhdCBwb2ludHMKKy8vIHRvIGEgdmFsdWUgdGhhdCBtYXRjaGVz
IGlubmVyX21hdGNoZXIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5uZXJNYXRjaGVyPgoraW5saW5l
IGludGVybmFsOjpQb2ludGVlTWF0Y2hlcjxJbm5lck1hdGNoZXI+IFBvaW50ZWUoCisgICAgY29u
c3QgSW5uZXJNYXRjaGVyJiBpbm5lcl9tYXRjaGVyKSB7CisgIHJldHVybiBpbnRlcm5hbDo6UG9p
bnRlZU1hdGNoZXI8SW5uZXJNYXRjaGVyPihpbm5lcl9tYXRjaGVyKTsKK30KKworLy8gQ3JlYXRl
cyBhIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGEgcG9pbnRlciBvciByZWZlcmVuY2UgdGhhdCBtYXRj
aGVzCisvLyBpbm5lcl9tYXRjaGVyIHdoZW4gZHluYW1pY19jYXN0PFRvPiBpcyBhcHBsaWVkLgor
Ly8gVGhlIHJlc3VsdCBvZiBkeW5hbWljX2Nhc3Q8VG8+IGlzIGZvcndhcmRlZCB0byB0aGUgaW5u
ZXIgbWF0Y2hlci4KKy8vIElmIFRvIGlzIGEgcG9pbnRlciBhbmQgdGhlIGNhc3QgZmFpbHMsIHRo
ZSBpbm5lciBtYXRjaGVyIHdpbGwgcmVjZWl2ZSBOVUxMLgorLy8gSWYgVG8gaXMgYSByZWZlcmVu
Y2UgYW5kIHRoZSBjYXN0IGZhaWxzLCB0aGlzIG1hdGNoZXIgcmV0dXJucyBmYWxzZQorLy8gaW1t
ZWRpYXRlbHkuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVG8+CitpbmxpbmUgUG9seW1vcnBoaWNNYXRj
aGVyPGludGVybmFsOjpXaGVuRHluYW1pY0Nhc3RUb01hdGNoZXI8VG8+ID4KK1doZW5EeW5hbWlj
Q2FzdFRvKGNvbnN0IE1hdGNoZXI8VG8+JiBpbm5lcl9tYXRjaGVyKSB7CisgIHJldHVybiBNYWtl
UG9seW1vcnBoaWNNYXRjaGVyKAorICAgICAgaW50ZXJuYWw6OldoZW5EeW5hbWljQ2FzdFRvTWF0
Y2hlcjxUbz4oaW5uZXJfbWF0Y2hlcikpOworfQorCisvLyBDcmVhdGVzIGEgbWF0Y2hlciB0aGF0
IG1hdGNoZXMgYW4gb2JqZWN0IHdob3NlIGdpdmVuIGZpZWxkIG1hdGNoZXMKKy8vICdtYXRjaGVy
Jy4gIEZvciBleGFtcGxlLAorLy8gICBGaWVsZCgmRm9vOjpudW1iZXIsIEdlKDUpKQorLy8gbWF0
Y2hlcyBhIEZvbyBvYmplY3QgeCBpZmYgeC5udW1iZXIgPj0gNS4KK3RlbXBsYXRlIDx0eXBlbmFt
ZSBDbGFzcywgdHlwZW5hbWUgRmllbGRUeXBlLCB0eXBlbmFtZSBGaWVsZE1hdGNoZXI+Citpbmxp
bmUgUG9seW1vcnBoaWNNYXRjaGVyPAorICBpbnRlcm5hbDo6RmllbGRNYXRjaGVyPENsYXNzLCBG
aWVsZFR5cGU+ID4gRmllbGQoCisgICAgRmllbGRUeXBlIENsYXNzOjoqZmllbGQsIGNvbnN0IEZp
ZWxkTWF0Y2hlciYgbWF0Y2hlcikgeworICByZXR1cm4gTWFrZVBvbHltb3JwaGljTWF0Y2hlcigK
KyAgICAgIGludGVybmFsOjpGaWVsZE1hdGNoZXI8Q2xhc3MsIEZpZWxkVHlwZT4oCisgICAgICAg
ICAgZmllbGQsIE1hdGNoZXJDYXN0PGNvbnN0IEZpZWxkVHlwZSY+KG1hdGNoZXIpKSk7CisgIC8v
IFRoZSBjYWxsIHRvIE1hdGNoZXJDYXN0KCkgaXMgcmVxdWlyZWQgZm9yIHN1cHBvcnRpbmcgaW5u
ZXIKKyAgLy8gbWF0Y2hlcnMgb2YgY29tcGF0aWJsZSB0eXBlcy4gIEZvciBleGFtcGxlLCBpdCBh
bGxvd3MKKyAgLy8gICBGaWVsZCgmRm9vOjpiYXIsIG0pCisgIC8vIHRvIGNvbXBpbGUgd2hlcmUg
YmFyIGlzIGFuIGludDMyIGFuZCBtIGlzIGEgbWF0Y2hlciBmb3IgaW50NjQuCit9CisKKy8vIENy
ZWF0ZXMgYSBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhbiBvYmplY3Qgd2hvc2UgZ2l2ZW4gcHJvcGVy
dHkKKy8vIG1hdGNoZXMgJ21hdGNoZXInLiAgRm9yIGV4YW1wbGUsCisvLyAgIFByb3BlcnR5KCZG
b286OnN0ciwgU3RhcnRzV2l0aCgiaGkiKSkKKy8vIG1hdGNoZXMgYSBGb28gb2JqZWN0IHggaWZm
IHguc3RyKCkgc3RhcnRzIHdpdGggImhpIi4KK3RlbXBsYXRlIDx0eXBlbmFtZSBDbGFzcywgdHlw
ZW5hbWUgUHJvcGVydHlUeXBlLCB0eXBlbmFtZSBQcm9wZXJ0eU1hdGNoZXI+CitpbmxpbmUgUG9s
eW1vcnBoaWNNYXRjaGVyPAorICBpbnRlcm5hbDo6UHJvcGVydHlNYXRjaGVyPENsYXNzLCBQcm9w
ZXJ0eVR5cGU+ID4gUHJvcGVydHkoCisgICAgUHJvcGVydHlUeXBlIChDbGFzczo6KnByb3BlcnR5
KSgpIGNvbnN0LCBjb25zdCBQcm9wZXJ0eU1hdGNoZXImIG1hdGNoZXIpIHsKKyAgcmV0dXJuIE1h
a2VQb2x5bW9ycGhpY01hdGNoZXIoCisgICAgICBpbnRlcm5hbDo6UHJvcGVydHlNYXRjaGVyPENs
YXNzLCBQcm9wZXJ0eVR5cGU+KAorICAgICAgICAgIHByb3BlcnR5LAorICAgICAgICAgIE1hdGNo
ZXJDYXN0PEdURVNUX1JFRkVSRU5DRV9UT19DT05TVF8oUHJvcGVydHlUeXBlKT4obWF0Y2hlcikp
KTsKKyAgLy8gVGhlIGNhbGwgdG8gTWF0Y2hlckNhc3QoKSBpcyByZXF1aXJlZCBmb3Igc3VwcG9y
dGluZyBpbm5lcgorICAvLyBtYXRjaGVycyBvZiBjb21wYXRpYmxlIHR5cGVzLiAgRm9yIGV4YW1w
bGUsIGl0IGFsbG93cworICAvLyAgIFByb3BlcnR5KCZGb286OmJhciwgbSkKKyAgLy8gdG8gY29t
cGlsZSB3aGVyZSBiYXIoKSByZXR1cm5zIGFuIGludDMyIGFuZCBtIGlzIGEgbWF0Y2hlciBmb3Ig
aW50NjQuCit9CisKKy8vIENyZWF0ZXMgYSBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhbiBvYmplY3Qg
aWZmIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcKKy8vIGEgY2FsbGFibGUgdG8geCBtYXRjaGVzICdt
YXRjaGVyJy4KKy8vIEZvciBleGFtcGxlLAorLy8gICBSZXN1bHRPZihmLCBTdGFydHNXaXRoKCJo
aSIpKQorLy8gbWF0Y2hlcyBhIEZvbyBvYmplY3QgeCBpZmYgZih4KSBzdGFydHMgd2l0aCAiaGki
LgorLy8gY2FsbGFibGUgcGFyYW1ldGVyIGNhbiBiZSBhIGZ1bmN0aW9uLCBmdW5jdGlvbiBwb2lu
dGVyLCBvciBhIGZ1bmN0b3IuCisvLyBDYWxsYWJsZSBoYXMgdG8gc2F0aXNmeSB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnM6CisvLyAgICogSXQgaXMgcmVxdWlyZWQgdG8ga2VlcCBubyBzdGF0ZSBh
ZmZlY3RpbmcgdGhlIHJlc3VsdHMgb2YKKy8vICAgICB0aGUgY2FsbHMgb24gaXQgYW5kIG1ha2Ug
bm8gYXNzdW1wdGlvbnMgYWJvdXQgaG93IG1hbnkgY2FsbHMKKy8vICAgICB3aWxsIGJlIG1hZGUu
IEFueSBzdGF0ZSBpdCBrZWVwcyBtdXN0IGJlIHByb3RlY3RlZCBmcm9tIHRoZQorLy8gICAgIGNv
bmN1cnJlbnQgYWNjZXNzLgorLy8gICAqIElmIGl0IGlzIGEgZnVuY3Rpb24gb2JqZWN0LCBpdCBo
YXMgdG8gZGVmaW5lIHR5cGUgcmVzdWx0X3R5cGUuCisvLyAgICAgV2UgcmVjb21tZW5kIGRlcml2
aW5nIHlvdXIgZnVuY3RvciBjbGFzc2VzIGZyb20gc3RkOjp1bmFyeV9mdW5jdGlvbi4KK3RlbXBs
YXRlIDx0eXBlbmFtZSBDYWxsYWJsZSwgdHlwZW5hbWUgUmVzdWx0T2ZNYXRjaGVyPgoraW50ZXJu
YWw6OlJlc3VsdE9mTWF0Y2hlcjxDYWxsYWJsZT4gUmVzdWx0T2YoCisgICAgQ2FsbGFibGUgY2Fs
bGFibGUsIGNvbnN0IFJlc3VsdE9mTWF0Y2hlciYgbWF0Y2hlcikgeworICByZXR1cm4gaW50ZXJu
YWw6OlJlc3VsdE9mTWF0Y2hlcjxDYWxsYWJsZT4oCisgICAgICAgICAgY2FsbGFibGUsCisgICAg
ICAgICAgTWF0Y2hlckNhc3Q8dHlwZW5hbWUgaW50ZXJuYWw6OkNhbGxhYmxlVHJhaXRzPENhbGxh
YmxlPjo6UmVzdWx0VHlwZT4oCisgICAgICAgICAgICAgIG1hdGNoZXIpKTsKKyAgLy8gVGhlIGNh
bGwgdG8gTWF0Y2hlckNhc3QoKSBpcyByZXF1aXJlZCBmb3Igc3VwcG9ydGluZyBpbm5lcgorICAv
LyBtYXRjaGVycyBvZiBjb21wYXRpYmxlIHR5cGVzLiAgRm9yIGV4YW1wbGUsIGl0IGFsbG93cwor
ICAvLyAgIFJlc3VsdE9mKEZ1bmN0aW9uLCBtKQorICAvLyB0byBjb21waWxlIHdoZXJlIEZ1bmN0
aW9uKCkgcmV0dXJucyBhbiBpbnQzMiBhbmQgbSBpcyBhIG1hdGNoZXIgZm9yIGludDY0LgorfQor
CisvLyBTdHJpbmcgbWF0Y2hlcnMuCisKKy8vIE1hdGNoZXMgYSBzdHJpbmcgZXF1YWwgdG8gc3Ry
LgoraW5saW5lIFBvbHltb3JwaGljTWF0Y2hlcjxpbnRlcm5hbDo6U3RyRXF1YWxpdHlNYXRjaGVy
PHN0ZDo6c3RyaW5nPiA+IFN0ckVxKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIpIHsKKyAg
cmV0dXJuIE1ha2VQb2x5bW9ycGhpY01hdGNoZXIoCisgICAgICBpbnRlcm5hbDo6U3RyRXF1YWxp
dHlNYXRjaGVyPHN0ZDo6c3RyaW5nPihzdHIsIHRydWUsIHRydWUpKTsKK30KKworLy8gTWF0Y2hl
cyBhIHN0cmluZyBub3QgZXF1YWwgdG8gc3RyLgoraW5saW5lIFBvbHltb3JwaGljTWF0Y2hlcjxp
bnRlcm5hbDo6U3RyRXF1YWxpdHlNYXRjaGVyPHN0ZDo6c3RyaW5nPiA+IFN0ck5lKAorICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiBzdHIpIHsKKyAgcmV0dXJuIE1ha2VQb2x5bW9ycGhpY01hdGNoZXIo
CisgICAgICBpbnRlcm5hbDo6U3RyRXF1YWxpdHlNYXRjaGVyPHN0ZDo6c3RyaW5nPihzdHIsIGZh
bHNlLCB0cnVlKSk7Cit9CisKKy8vIE1hdGNoZXMgYSBzdHJpbmcgZXF1YWwgdG8gc3RyLCBpZ25v
cmluZyBjYXNlLgoraW5saW5lIFBvbHltb3JwaGljTWF0Y2hlcjxpbnRlcm5hbDo6U3RyRXF1YWxp
dHlNYXRjaGVyPHN0ZDo6c3RyaW5nPiA+IFN0ckNhc2VFcSgKKyAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgc3RyKSB7CisgIHJldHVybiBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKAorICAgICAgaW50ZXJu
YWw6OlN0ckVxdWFsaXR5TWF0Y2hlcjxzdGQ6OnN0cmluZz4oc3RyLCB0cnVlLCBmYWxzZSkpOwor
fQorCisvLyBNYXRjaGVzIGEgc3RyaW5nIG5vdCBlcXVhbCB0byBzdHIsIGlnbm9yaW5nIGNhc2Uu
CitpbmxpbmUgUG9seW1vcnBoaWNNYXRjaGVyPGludGVybmFsOjpTdHJFcXVhbGl0eU1hdGNoZXI8
c3RkOjpzdHJpbmc+ID4gU3RyQ2FzZU5lKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIpIHsK
KyAgcmV0dXJuIE1ha2VQb2x5bW9ycGhpY01hdGNoZXIoCisgICAgICBpbnRlcm5hbDo6U3RyRXF1
YWxpdHlNYXRjaGVyPHN0ZDo6c3RyaW5nPihzdHIsIGZhbHNlLCBmYWxzZSkpOworfQorCisvLyBD
cmVhdGVzIGEgbWF0Y2hlciB0aGF0IG1hdGNoZXMgYW55IHN0cmluZywgc3RkOjpzdHJpbmcsIG9y
IEMgc3RyaW5nCisvLyB0aGF0IGNvbnRhaW5zIHRoZSBnaXZlbiBzdWJzdHJpbmcuCitpbmxpbmUg
UG9seW1vcnBoaWNNYXRjaGVyPGludGVybmFsOjpIYXNTdWJzdHJNYXRjaGVyPHN0ZDo6c3RyaW5n
PiA+IEhhc1N1YnN0cigKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgc3Vic3RyaW5nKSB7CisgIHJl
dHVybiBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKAorICAgICAgaW50ZXJuYWw6Okhhc1N1YnN0ck1h
dGNoZXI8c3RkOjpzdHJpbmc+KHN1YnN0cmluZykpOworfQorCisvLyBNYXRjaGVzIGEgc3RyaW5n
IHRoYXQgc3RhcnRzIHdpdGggJ3ByZWZpeCcgKGNhc2Utc2Vuc2l0aXZlKS4KK2lubGluZSBQb2x5
bW9ycGhpY01hdGNoZXI8aW50ZXJuYWw6OlN0YXJ0c1dpdGhNYXRjaGVyPHN0ZDo6c3RyaW5nPiA+
IFN0YXJ0c1dpdGgoCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHByZWZpeCkgeworICByZXR1cm4g
TWFrZVBvbHltb3JwaGljTWF0Y2hlcigKKyAgICAgIGludGVybmFsOjpTdGFydHNXaXRoTWF0Y2hl
cjxzdGQ6OnN0cmluZz4ocHJlZml4KSk7Cit9CisKKy8vIE1hdGNoZXMgYSBzdHJpbmcgdGhhdCBl
bmRzIHdpdGggJ3N1ZmZpeCcgKGNhc2Utc2Vuc2l0aXZlKS4KK2lubGluZSBQb2x5bW9ycGhpY01h
dGNoZXI8aW50ZXJuYWw6OkVuZHNXaXRoTWF0Y2hlcjxzdGQ6OnN0cmluZz4gPiBFbmRzV2l0aCgK
KyAgICBjb25zdCBzdGQ6OnN0cmluZyYgc3VmZml4KSB7CisgIHJldHVybiBNYWtlUG9seW1vcnBo
aWNNYXRjaGVyKGludGVybmFsOjpFbmRzV2l0aE1hdGNoZXI8c3RkOjpzdHJpbmc+KHN1ZmZpeCkp
OworfQorCisvLyBNYXRjaGVzIGEgc3RyaW5nIHRoYXQgZnVsbHkgbWF0Y2hlcyByZWd1bGFyIGV4
cHJlc3Npb24gJ3JlZ2V4Jy4KKy8vIFRoZSBtYXRjaGVyIHRha2VzIG93bmVyc2hpcCBvZiAncmVn
ZXgnLgoraW5saW5lIFBvbHltb3JwaGljTWF0Y2hlcjxpbnRlcm5hbDo6TWF0Y2hlc1JlZ2V4TWF0
Y2hlcj4gTWF0Y2hlc1JlZ2V4KAorICAgIGNvbnN0IGludGVybmFsOjpSRSogcmVnZXgpIHsKKyAg
cmV0dXJuIE1ha2VQb2x5bW9ycGhpY01hdGNoZXIoaW50ZXJuYWw6Ok1hdGNoZXNSZWdleE1hdGNo
ZXIocmVnZXgsIHRydWUpKTsKK30KK2lubGluZSBQb2x5bW9ycGhpY01hdGNoZXI8aW50ZXJuYWw6
Ok1hdGNoZXNSZWdleE1hdGNoZXI+IE1hdGNoZXNSZWdleCgKKyAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgcmVnZXgpIHsKKyAgcmV0dXJuIE1hdGNoZXNSZWdleChuZXcgaW50ZXJuYWw6OlJFKHJlZ2V4
KSk7Cit9CisKKy8vIE1hdGNoZXMgYSBzdHJpbmcgdGhhdCBjb250YWlucyByZWd1bGFyIGV4cHJl
c3Npb24gJ3JlZ2V4Jy4KKy8vIFRoZSBtYXRjaGVyIHRha2VzIG93bmVyc2hpcCBvZiAncmVnZXgn
LgoraW5saW5lIFBvbHltb3JwaGljTWF0Y2hlcjxpbnRlcm5hbDo6TWF0Y2hlc1JlZ2V4TWF0Y2hl
cj4gQ29udGFpbnNSZWdleCgKKyAgICBjb25zdCBpbnRlcm5hbDo6UkUqIHJlZ2V4KSB7CisgIHJl
dHVybiBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKGludGVybmFsOjpNYXRjaGVzUmVnZXhNYXRjaGVy
KHJlZ2V4LCBmYWxzZSkpOworfQoraW5saW5lIFBvbHltb3JwaGljTWF0Y2hlcjxpbnRlcm5hbDo6
TWF0Y2hlc1JlZ2V4TWF0Y2hlcj4gQ29udGFpbnNSZWdleCgKKyAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgcmVnZXgpIHsKKyAgcmV0dXJuIENvbnRhaW5zUmVnZXgobmV3IGludGVybmFsOjpSRShyZWdl
eCkpOworfQorCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HIHx8IEdURVNUX0hBU19TVERf
V1NUUklORworLy8gV2lkZSBzdHJpbmcgbWF0Y2hlcnMuCisKKy8vIE1hdGNoZXMgYSBzdHJpbmcg
ZXF1YWwgdG8gc3RyLgoraW5saW5lIFBvbHltb3JwaGljTWF0Y2hlcjxpbnRlcm5hbDo6U3RyRXF1
YWxpdHlNYXRjaGVyPGludGVybmFsOjp3c3RyaW5nPiA+CisgICAgU3RyRXEoY29uc3QgaW50ZXJu
YWw6OndzdHJpbmcmIHN0cikgeworICByZXR1cm4gTWFrZVBvbHltb3JwaGljTWF0Y2hlcihpbnRl
cm5hbDo6U3RyRXF1YWxpdHlNYXRjaGVyPGludGVybmFsOjp3c3RyaW5nPigKKyAgICAgIHN0ciwg
dHJ1ZSwgdHJ1ZSkpOworfQorCisvLyBNYXRjaGVzIGEgc3RyaW5nIG5vdCBlcXVhbCB0byBzdHIu
CitpbmxpbmUgUG9seW1vcnBoaWNNYXRjaGVyPGludGVybmFsOjpTdHJFcXVhbGl0eU1hdGNoZXI8
aW50ZXJuYWw6OndzdHJpbmc+ID4KKyAgICBTdHJOZShjb25zdCBpbnRlcm5hbDo6d3N0cmluZyYg
c3RyKSB7CisgIHJldHVybiBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKGludGVybmFsOjpTdHJFcXVh
bGl0eU1hdGNoZXI8aW50ZXJuYWw6OndzdHJpbmc+KAorICAgICAgc3RyLCBmYWxzZSwgdHJ1ZSkp
OworfQorCisvLyBNYXRjaGVzIGEgc3RyaW5nIGVxdWFsIHRvIHN0ciwgaWdub3JpbmcgY2FzZS4K
K2lubGluZSBQb2x5bW9ycGhpY01hdGNoZXI8aW50ZXJuYWw6OlN0ckVxdWFsaXR5TWF0Y2hlcjxp
bnRlcm5hbDo6d3N0cmluZz4gPgorICAgIFN0ckNhc2VFcShjb25zdCBpbnRlcm5hbDo6d3N0cmlu
ZyYgc3RyKSB7CisgIHJldHVybiBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKGludGVybmFsOjpTdHJF
cXVhbGl0eU1hdGNoZXI8aW50ZXJuYWw6OndzdHJpbmc+KAorICAgICAgc3RyLCB0cnVlLCBmYWxz
ZSkpOworfQorCisvLyBNYXRjaGVzIGEgc3RyaW5nIG5vdCBlcXVhbCB0byBzdHIsIGlnbm9yaW5n
IGNhc2UuCitpbmxpbmUgUG9seW1vcnBoaWNNYXRjaGVyPGludGVybmFsOjpTdHJFcXVhbGl0eU1h
dGNoZXI8aW50ZXJuYWw6OndzdHJpbmc+ID4KKyAgICBTdHJDYXNlTmUoY29uc3QgaW50ZXJuYWw6
OndzdHJpbmcmIHN0cikgeworICByZXR1cm4gTWFrZVBvbHltb3JwaGljTWF0Y2hlcihpbnRlcm5h
bDo6U3RyRXF1YWxpdHlNYXRjaGVyPGludGVybmFsOjp3c3RyaW5nPigKKyAgICAgIHN0ciwgZmFs
c2UsIGZhbHNlKSk7Cit9CisKKy8vIENyZWF0ZXMgYSBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhbnkg
d3N0cmluZywgc3RkOjp3c3RyaW5nLCBvciBDIHdpZGUgc3RyaW5nCisvLyB0aGF0IGNvbnRhaW5z
IHRoZSBnaXZlbiBzdWJzdHJpbmcuCitpbmxpbmUgUG9seW1vcnBoaWNNYXRjaGVyPGludGVybmFs
OjpIYXNTdWJzdHJNYXRjaGVyPGludGVybmFsOjp3c3RyaW5nPiA+CisgICAgSGFzU3Vic3RyKGNv
bnN0IGludGVybmFsOjp3c3RyaW5nJiBzdWJzdHJpbmcpIHsKKyAgcmV0dXJuIE1ha2VQb2x5bW9y
cGhpY01hdGNoZXIoaW50ZXJuYWw6Okhhc1N1YnN0ck1hdGNoZXI8aW50ZXJuYWw6OndzdHJpbmc+
KAorICAgICAgc3Vic3RyaW5nKSk7Cit9CisKKy8vIE1hdGNoZXMgYSBzdHJpbmcgdGhhdCBzdGFy
dHMgd2l0aCAncHJlZml4JyAoY2FzZS1zZW5zaXRpdmUpLgoraW5saW5lIFBvbHltb3JwaGljTWF0
Y2hlcjxpbnRlcm5hbDo6U3RhcnRzV2l0aE1hdGNoZXI8aW50ZXJuYWw6OndzdHJpbmc+ID4KKyAg
ICBTdGFydHNXaXRoKGNvbnN0IGludGVybmFsOjp3c3RyaW5nJiBwcmVmaXgpIHsKKyAgcmV0dXJu
IE1ha2VQb2x5bW9ycGhpY01hdGNoZXIoaW50ZXJuYWw6OlN0YXJ0c1dpdGhNYXRjaGVyPGludGVy
bmFsOjp3c3RyaW5nPigKKyAgICAgIHByZWZpeCkpOworfQorCisvLyBNYXRjaGVzIGEgc3RyaW5n
IHRoYXQgZW5kcyB3aXRoICdzdWZmaXgnIChjYXNlLXNlbnNpdGl2ZSkuCitpbmxpbmUgUG9seW1v
cnBoaWNNYXRjaGVyPGludGVybmFsOjpFbmRzV2l0aE1hdGNoZXI8aW50ZXJuYWw6OndzdHJpbmc+
ID4KKyAgICBFbmRzV2l0aChjb25zdCBpbnRlcm5hbDo6d3N0cmluZyYgc3VmZml4KSB7CisgIHJl
dHVybiBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKGludGVybmFsOjpFbmRzV2l0aE1hdGNoZXI8aW50
ZXJuYWw6OndzdHJpbmc+KAorICAgICAgc3VmZml4KSk7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1Rf
SEFTX0dMT0JBTF9XU1RSSU5HIHx8IEdURVNUX0hBU19TVERfV1NUUklORworCisvLyBDcmVhdGVz
IGEgcG9seW1vcnBoaWMgbWF0Y2hlciB0aGF0IG1hdGNoZXMgYSAyLXR1cGxlIHdoZXJlIHRoZQor
Ly8gZmlyc3QgZmllbGQgPT0gdGhlIHNlY29uZCBmaWVsZC4KK2lubGluZSBpbnRlcm5hbDo6RXEy
TWF0Y2hlciBFcSgpIHsgcmV0dXJuIGludGVybmFsOjpFcTJNYXRjaGVyKCk7IH0KKworLy8gQ3Jl
YXRlcyBhIHBvbHltb3JwaGljIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGEgMi10dXBsZSB3aGVyZSB0
aGUKKy8vIGZpcnN0IGZpZWxkID49IHRoZSBzZWNvbmQgZmllbGQuCitpbmxpbmUgaW50ZXJuYWw6
OkdlMk1hdGNoZXIgR2UoKSB7IHJldHVybiBpbnRlcm5hbDo6R2UyTWF0Y2hlcigpOyB9CisKKy8v
IENyZWF0ZXMgYSBwb2x5bW9ycGhpYyBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhIDItdHVwbGUgd2hl
cmUgdGhlCisvLyBmaXJzdCBmaWVsZCA+IHRoZSBzZWNvbmQgZmllbGQuCitpbmxpbmUgaW50ZXJu
YWw6Okd0Mk1hdGNoZXIgR3QoKSB7IHJldHVybiBpbnRlcm5hbDo6R3QyTWF0Y2hlcigpOyB9CisK
Ky8vIENyZWF0ZXMgYSBwb2x5bW9ycGhpYyBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhIDItdHVwbGUg
d2hlcmUgdGhlCisvLyBmaXJzdCBmaWVsZCA8PSB0aGUgc2Vjb25kIGZpZWxkLgoraW5saW5lIGlu
dGVybmFsOjpMZTJNYXRjaGVyIExlKCkgeyByZXR1cm4gaW50ZXJuYWw6OkxlMk1hdGNoZXIoKTsg
fQorCisvLyBDcmVhdGVzIGEgcG9seW1vcnBoaWMgbWF0Y2hlciB0aGF0IG1hdGNoZXMgYSAyLXR1
cGxlIHdoZXJlIHRoZQorLy8gZmlyc3QgZmllbGQgPCB0aGUgc2Vjb25kIGZpZWxkLgoraW5saW5l
IGludGVybmFsOjpMdDJNYXRjaGVyIEx0KCkgeyByZXR1cm4gaW50ZXJuYWw6Okx0Mk1hdGNoZXIo
KTsgfQorCisvLyBDcmVhdGVzIGEgcG9seW1vcnBoaWMgbWF0Y2hlciB0aGF0IG1hdGNoZXMgYSAy
LXR1cGxlIHdoZXJlIHRoZQorLy8gZmlyc3QgZmllbGQgIT0gdGhlIHNlY29uZCBmaWVsZC4KK2lu
bGluZSBpbnRlcm5hbDo6TmUyTWF0Y2hlciBOZSgpIHsgcmV0dXJuIGludGVybmFsOjpOZTJNYXRj
aGVyKCk7IH0KKworLy8gQ3JlYXRlcyBhIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGFueSB2YWx1ZSBv
ZiB0eXBlIFQgdGhhdCBtIGRvZXNuJ3QKKy8vIG1hdGNoLgordGVtcGxhdGUgPHR5cGVuYW1lIElu
bmVyTWF0Y2hlcj4KK2lubGluZSBpbnRlcm5hbDo6Tm90TWF0Y2hlcjxJbm5lck1hdGNoZXI+IE5v
dChJbm5lck1hdGNoZXIgbSkgeworICByZXR1cm4gaW50ZXJuYWw6Ok5vdE1hdGNoZXI8SW5uZXJN
YXRjaGVyPihtKTsKK30KKworLy8gUmV0dXJucyBhIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGFueXRo
aW5nIHRoYXQgc2F0aXNmaWVzIHRoZSBnaXZlbgorLy8gcHJlZGljYXRlLiAgVGhlIHByZWRpY2F0
ZSBjYW4gYmUgYW55IHVuYXJ5IGZ1bmN0aW9uIG9yIGZ1bmN0b3IKKy8vIHdob3NlIHJldHVybiB0
eXBlIGNhbiBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byBib29sLgordGVtcGxhdGUgPHR5cGVu
YW1lIFByZWRpY2F0ZT4KK2lubGluZSBQb2x5bW9ycGhpY01hdGNoZXI8aW50ZXJuYWw6OlRydWx5
TWF0Y2hlcjxQcmVkaWNhdGU+ID4KK1RydWx5KFByZWRpY2F0ZSBwcmVkKSB7CisgIHJldHVybiBN
YWtlUG9seW1vcnBoaWNNYXRjaGVyKGludGVybmFsOjpUcnVseU1hdGNoZXI8UHJlZGljYXRlPihw
cmVkKSk7Cit9CisKKy8vIFJldHVybnMgYSBtYXRjaGVyIHRoYXQgbWF0Y2hlcyB0aGUgY29udGFp
bmVyIHNpemUuIFRoZSBjb250YWluZXIgbXVzdAorLy8gc3VwcG9ydCBib3RoIHNpemUoKSBhbmQg
c2l6ZV90eXBlIHdoaWNoIGFsbCBTVEwtbGlrZSBjb250YWluZXJzIHByb3ZpZGUuCisvLyBOb3Rl
IHRoYXQgdGhlIHBhcmFtZXRlciAnc2l6ZScgY2FuIGJlIGEgdmFsdWUgb2YgdHlwZSBzaXplX3R5
cGUgYXMgd2VsbCBhcworLy8gbWF0Y2hlci4gRm9yIGluc3RhbmNlOgorLy8gICBFWFBFQ1RfVEhB
VChjb250YWluZXIsIFNpemVJcygyKSk7ICAgICAvLyBDaGVja3MgY29udGFpbmVyIGhhcyAyIGVs
ZW1lbnRzLgorLy8gICBFWFBFQ1RfVEhBVChjb250YWluZXIsIFNpemVJcyhMZSgyKSk7ICAvLyBD
aGVja3MgY29udGFpbmVyIGhhcyBhdCBtb3N0IDIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgU2l6ZU1h
dGNoZXI+CitpbmxpbmUgaW50ZXJuYWw6OlNpemVJc01hdGNoZXI8U2l6ZU1hdGNoZXI+CitTaXpl
SXMoY29uc3QgU2l6ZU1hdGNoZXImIHNpemVfbWF0Y2hlcikgeworICByZXR1cm4gaW50ZXJuYWw6
OlNpemVJc01hdGNoZXI8U2l6ZU1hdGNoZXI+KHNpemVfbWF0Y2hlcik7Cit9CisKKy8vIFJldHVy
bnMgYSBtYXRjaGVyIHRoYXQgbWF0Y2hlcyB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgY29udGFp
bmVyJ3MgYmVnaW4oKQorLy8gaXRlcmF0b3IgYW5kIGl0cyBlbmQoKSBpdGVyYXRvciwgaS5lLiB0
aGUgc2l6ZSBvZiB0aGUgY29udGFpbmVyLiBUaGlzIG1hdGNoZXIKKy8vIGNhbiBiZSB1c2VkIGlu
c3RlYWQgb2YgU2l6ZUlzIHdpdGggY29udGFpbmVycyBzdWNoIGFzIHN0ZDo6Zm9yd2FyZF9saXN0
IHdoaWNoCisvLyBkbyBub3QgaW1wbGVtZW50IHNpemUoKS4gVGhlIGNvbnRhaW5lciBtdXN0IHBy
b3ZpZGUgY29uc3RfaXRlcmF0b3IgKHdpdGgKKy8vIHZhbGlkIGl0ZXJhdG9yX3RyYWl0cyksIGJl
Z2luKCkgYW5kIGVuZCgpLgordGVtcGxhdGUgPHR5cGVuYW1lIERpc3RhbmNlTWF0Y2hlcj4KK2lu
bGluZSBpbnRlcm5hbDo6QmVnaW5FbmREaXN0YW5jZUlzTWF0Y2hlcjxEaXN0YW5jZU1hdGNoZXI+
CitCZWdpbkVuZERpc3RhbmNlSXMoY29uc3QgRGlzdGFuY2VNYXRjaGVyJiBkaXN0YW5jZV9tYXRj
aGVyKSB7CisgIHJldHVybiBpbnRlcm5hbDo6QmVnaW5FbmREaXN0YW5jZUlzTWF0Y2hlcjxEaXN0
YW5jZU1hdGNoZXI+KGRpc3RhbmNlX21hdGNoZXIpOworfQorCisvLyBSZXR1cm5zIGEgbWF0Y2hl
ciB0aGF0IG1hdGNoZXMgYW4gZXF1YWwgY29udGFpbmVyLgorLy8gVGhpcyBtYXRjaGVyIGJlaGF2
ZXMgbGlrZSBFcSgpLCBidXQgaW4gdGhlIGV2ZW50IG9mIG1pc21hdGNoIGxpc3RzIHRoZQorLy8g
dmFsdWVzIHRoYXQgYXJlIGluY2x1ZGVkIGluIG9uZSBjb250YWluZXIgYnV0IG5vdCB0aGUgb3Ro
ZXIuIChEdXBsaWNhdGUKKy8vIHZhbHVlcyBhbmQgb3JkZXIgZGlmZmVyZW5jZXMgYXJlIG5vdCBl
eHBsYWluZWQuKQordGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lcj4KK2lubGluZSBQb2x5bW9y
cGhpY01hdGNoZXI8aW50ZXJuYWw6OkNvbnRhaW5lckVxTWF0Y2hlcjwgIC8vIE5PTElOVAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdURVNUX1JFTU9WRV9DT05TVF8oQ29udGFpbmVyKT4g
PgorICAgIENvbnRhaW5lckVxKGNvbnN0IENvbnRhaW5lciYgcmhzKSB7CisgIC8vIFRoaXMgZm9s
bG93aW5nIGxpbmUgaXMgZm9yIHdvcmtpbmcgYXJvdW5kIGEgYnVnIGluIE1TVkMgOC4wLAorICAv
LyB3aGljaCBjYXVzZXMgQ29udGFpbmVyIHRvIGJlIGEgY29uc3QgdHlwZSBzb21ldGltZXMuCisg
IHR5cGVkZWYgR1RFU1RfUkVNT1ZFX0NPTlNUXyhDb250YWluZXIpIFJhd0NvbnRhaW5lcjsKKyAg
cmV0dXJuIE1ha2VQb2x5bW9ycGhpY01hdGNoZXIoCisgICAgICBpbnRlcm5hbDo6Q29udGFpbmVy
RXFNYXRjaGVyPFJhd0NvbnRhaW5lcj4ocmhzKSk7Cit9CisKKy8vIFJldHVybnMgYSBtYXRjaGVy
IHRoYXQgbWF0Y2hlcyBhIGNvbnRhaW5lciB0aGF0LCB3aGVuIHNvcnRlZCB1c2luZworLy8gdGhl
IGdpdmVuIGNvbXBhcmF0b3IsIG1hdGNoZXMgY29udGFpbmVyX21hdGNoZXIuCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgQ29tcGFyYXRvciwgdHlwZW5hbWUgQ29udGFpbmVyTWF0Y2hlcj4KK2lubGluZSBp
bnRlcm5hbDo6V2hlblNvcnRlZEJ5TWF0Y2hlcjxDb21wYXJhdG9yLCBDb250YWluZXJNYXRjaGVy
PgorV2hlblNvcnRlZEJ5KGNvbnN0IENvbXBhcmF0b3ImIGNvbXBhcmF0b3IsCisgICAgICAgICAg
ICAgY29uc3QgQ29udGFpbmVyTWF0Y2hlciYgY29udGFpbmVyX21hdGNoZXIpIHsKKyAgcmV0dXJu
IGludGVybmFsOjpXaGVuU29ydGVkQnlNYXRjaGVyPENvbXBhcmF0b3IsIENvbnRhaW5lck1hdGNo
ZXI+KAorICAgICAgY29tcGFyYXRvciwgY29udGFpbmVyX21hdGNoZXIpOworfQorCisvLyBSZXR1
cm5zIGEgbWF0Y2hlciB0aGF0IG1hdGNoZXMgYSBjb250YWluZXIgdGhhdCwgd2hlbiBzb3J0ZWQg
dXNpbmcKKy8vIHRoZSA8IG9wZXJhdG9yLCBtYXRjaGVzIGNvbnRhaW5lcl9tYXRjaGVyLgordGVt
cGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lck1hdGNoZXI+CitpbmxpbmUgaW50ZXJuYWw6OldoZW5T
b3J0ZWRCeU1hdGNoZXI8aW50ZXJuYWw6Okxlc3NDb21wYXJhdG9yLCBDb250YWluZXJNYXRjaGVy
PgorV2hlblNvcnRlZChjb25zdCBDb250YWluZXJNYXRjaGVyJiBjb250YWluZXJfbWF0Y2hlcikg
eworICByZXR1cm4KKyAgICAgIGludGVybmFsOjpXaGVuU29ydGVkQnlNYXRjaGVyPGludGVybmFs
OjpMZXNzQ29tcGFyYXRvciwgQ29udGFpbmVyTWF0Y2hlcj4oCisgICAgICAgICAgaW50ZXJuYWw6
Okxlc3NDb21wYXJhdG9yKCksIGNvbnRhaW5lcl9tYXRjaGVyKTsKK30KKworLy8gTWF0Y2hlcyBh
biBTVEwtc3R5bGUgY29udGFpbmVyIG9yIGEgbmF0aXZlIGFycmF5IHRoYXQgY29udGFpbnMgdGhl
CisvLyBzYW1lIG51bWJlciBvZiBlbGVtZW50cyBhcyBpbiByaHMsIHdoZXJlIGl0cyBpLXRoIGVs
ZW1lbnQgYW5kIHJocydzCisvLyBpLXRoIGVsZW1lbnQgKGFzIGEgcGFpcikgc2F0aXNmeSB0aGUg
Z2l2ZW4gcGFpciBtYXRjaGVyLCBmb3IgYWxsIGkuCisvLyBUdXBsZU1hdGNoZXIgbXVzdCBiZSBh
YmxlIHRvIGJlIHNhZmVseSBjYXN0IHRvIE1hdGNoZXI8dHVwbGU8Y29uc3QKKy8vIFQxJiwgY29u
c3QgVDImPiA+LCB3aGVyZSBUMSBhbmQgVDIgYXJlIHRoZSB0eXBlcyBvZiBlbGVtZW50cyBpbiB0
aGUKKy8vIExIUyBjb250YWluZXIgYW5kIHRoZSBSSFMgY29udGFpbmVyIHJlc3BlY3RpdmVseS4K
K3RlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZU1hdGNoZXIsIHR5cGVuYW1lIENvbnRhaW5lcj4KK2lu
bGluZSBpbnRlcm5hbDo6UG9pbnR3aXNlTWF0Y2hlcjxUdXBsZU1hdGNoZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfUkVNT1ZFX0NPTlNUXyhDb250YWluZXIpPgor
UG9pbnR3aXNlKGNvbnN0IFR1cGxlTWF0Y2hlciYgdHVwbGVfbWF0Y2hlciwgY29uc3QgQ29udGFp
bmVyJiByaHMpIHsKKyAgLy8gVGhpcyBmb2xsb3dpbmcgbGluZSBpcyBmb3Igd29ya2luZyBhcm91
bmQgYSBidWcgaW4gTVNWQyA4LjAsCisgIC8vIHdoaWNoIGNhdXNlcyBDb250YWluZXIgdG8gYmUg
YSBjb25zdCB0eXBlIHNvbWV0aW1lcyAoZS5nLiB3aGVuCisgIC8vIHJocyBpcyBhIGNvbnN0IGlu
dFtdKS4uCisgIHR5cGVkZWYgR1RFU1RfUkVNT1ZFX0NPTlNUXyhDb250YWluZXIpIFJhd0NvbnRh
aW5lcjsKKyAgcmV0dXJuIGludGVybmFsOjpQb2ludHdpc2VNYXRjaGVyPFR1cGxlTWF0Y2hlciwg
UmF3Q29udGFpbmVyPigKKyAgICAgIHR1cGxlX21hdGNoZXIsIHJocyk7Cit9CisKKyNpZiBHVEVT
VF9IQVNfU1REX0lOSVRJQUxJWkVSX0xJU1RfCisKKy8vIFN1cHBvcnRzIHRoZSBQb2ludHdpc2Uo
bSwge2EsIGIsIGN9KSBzeW50YXguCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGVNYXRjaGVyLCB0
eXBlbmFtZSBUPgoraW5saW5lIGludGVybmFsOjpQb2ludHdpc2VNYXRjaGVyPFR1cGxlTWF0Y2hl
ciwgc3RkOjp2ZWN0b3I8VD4gPiBQb2ludHdpc2UoCisgICAgY29uc3QgVHVwbGVNYXRjaGVyJiB0
dXBsZV9tYXRjaGVyLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VD4gcmhzKSB7CisgIHJldHVybiBQ
b2ludHdpc2UodHVwbGVfbWF0Y2hlciwgc3RkOjp2ZWN0b3I8VD4ocmhzKSk7Cit9CisKKyNlbmRp
ZiAgLy8gR1RFU1RfSEFTX1NURF9JTklUSUFMSVpFUl9MSVNUXworCisvLyBVbm9yZGVyZWRQb2lu
dHdpc2UocGFpcl9tYXRjaGVyLCByaHMpIG1hdGNoZXMgYW4gU1RMLXN0eWxlCisvLyBjb250YWlu
ZXIgb3IgYSBuYXRpdmUgYXJyYXkgdGhhdCBjb250YWlucyB0aGUgc2FtZSBudW1iZXIgb2YKKy8v
IGVsZW1lbnRzIGFzIGluIHJocywgd2hlcmUgaW4gc29tZSBwZXJtdXRhdGlvbiBvZiB0aGUgY29u
dGFpbmVyLCBpdHMKKy8vIGktdGggZWxlbWVudCBhbmQgcmhzJ3MgaS10aCBlbGVtZW50IChhcyBh
IHBhaXIpIHNhdGlzZnkgdGhlIGdpdmVuCisvLyBwYWlyIG1hdGNoZXIsIGZvciBhbGwgaS4gIFR1
cGxlMk1hdGNoZXIgbXVzdCBiZSBhYmxlIHRvIGJlIHNhZmVseQorLy8gY2FzdCB0byBNYXRjaGVy
PHR1cGxlPGNvbnN0IFQxJiwgY29uc3QgVDImPiA+LCB3aGVyZSBUMSBhbmQgVDIgYXJlCisvLyB0
aGUgdHlwZXMgb2YgZWxlbWVudHMgaW4gdGhlIExIUyBjb250YWluZXIgYW5kIHRoZSBSSFMgY29u
dGFpbmVyCisvLyByZXNwZWN0aXZlbHkuCisvLworLy8gVGhpcyBpcyBsaWtlIFBvaW50d2lzZShw
YWlyX21hdGNoZXIsIHJocyksIGV4Y2VwdCB0aGF0IHRoZSBlbGVtZW50CisvLyBvcmRlciBkb2Vz
bid0IG1hdHRlci4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZTJNYXRjaGVyLCB0eXBlbmFtZSBS
aHNDb250YWluZXI+CitpbmxpbmUgaW50ZXJuYWw6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXlN
YXRjaGVyPAorICAgIHR5cGVuYW1lIGludGVybmFsOjpCb3VuZFNlY29uZE1hdGNoZXI8CisgICAg
ICAgIFR1cGxlMk1hdGNoZXIsIHR5cGVuYW1lIGludGVybmFsOjpTdGxDb250YWluZXJWaWV3PEdU
RVNUX1JFTU9WRV9DT05TVF8oCisgICAgICAgICAgICAgICAgICAgICAgICAgICBSaHNDb250YWlu
ZXIpPjo6dHlwZTo6dmFsdWVfdHlwZT4gPgorVW5vcmRlcmVkUG9pbnR3aXNlKGNvbnN0IFR1cGxl
Mk1hdGNoZXImIHR1cGxlMl9tYXRjaGVyLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IFJoc0Nv
bnRhaW5lciYgcmhzX2NvbnRhaW5lcikgeworICAvLyBUaGlzIGZvbGxvd2luZyBsaW5lIGlzIGZv
ciB3b3JraW5nIGFyb3VuZCBhIGJ1ZyBpbiBNU1ZDIDguMCwKKyAgLy8gd2hpY2ggY2F1c2VzIFJo
c0NvbnRhaW5lciB0byBiZSBhIGNvbnN0IHR5cGUgc29tZXRpbWVzIChlLmcuIHdoZW4KKyAgLy8g
cmhzX2NvbnRhaW5lciBpcyBhIGNvbnN0IGludFtdKS4KKyAgdHlwZWRlZiBHVEVTVF9SRU1PVkVf
Q09OU1RfKFJoc0NvbnRhaW5lcikgUmF3UmhzQ29udGFpbmVyOworCisgIC8vIFJoc1ZpZXcgYWxs
b3dzIHRoZSBzYW1lIGNvZGUgdG8gaGFuZGxlIFJoc0NvbnRhaW5lciBiZWluZyBhCisgIC8vIFNU
TC1zdHlsZSBjb250YWluZXIgYW5kIGl0IGJlaW5nIGEgbmF0aXZlIEMtc3R5bGUgYXJyYXkuCisg
IHR5cGVkZWYgdHlwZW5hbWUgaW50ZXJuYWw6OlN0bENvbnRhaW5lclZpZXc8UmF3UmhzQ29udGFp
bmVyPiBSaHNWaWV3OworICB0eXBlZGVmIHR5cGVuYW1lIFJoc1ZpZXc6OnR5cGUgUmhzU3RsQ29u
dGFpbmVyOworICB0eXBlZGVmIHR5cGVuYW1lIFJoc1N0bENvbnRhaW5lcjo6dmFsdWVfdHlwZSBT
ZWNvbmQ7CisgIGNvbnN0IFJoc1N0bENvbnRhaW5lciYgcmhzX3N0bF9jb250YWluZXIgPQorICAg
ICAgUmhzVmlldzo6Q29uc3RSZWZlcmVuY2UocmhzX2NvbnRhaW5lcik7CisKKyAgLy8gQ3JlYXRl
IGEgbWF0Y2hlciBmb3IgZWFjaCBlbGVtZW50IGluIHJoc19jb250YWluZXIuCisgIDo6c3RkOjp2
ZWN0b3I8aW50ZXJuYWw6OkJvdW5kU2Vjb25kTWF0Y2hlcjxUdXBsZTJNYXRjaGVyLCBTZWNvbmQ+
ID4gbWF0Y2hlcnM7CisgIGZvciAodHlwZW5hbWUgUmhzU3RsQ29udGFpbmVyOjpjb25zdF9pdGVy
YXRvciBpdCA9IHJoc19zdGxfY29udGFpbmVyLmJlZ2luKCk7CisgICAgICAgaXQgIT0gcmhzX3N0
bF9jb250YWluZXIuZW5kKCk7ICsraXQpIHsKKyAgICBtYXRjaGVycy5wdXNoX2JhY2soCisgICAg
ICAgIGludGVybmFsOjpNYXRjaGVyQmluZFNlY29uZCh0dXBsZTJfbWF0Y2hlciwgKml0KSk7Cisg
IH0KKworICAvLyBEZWxlZ2F0ZSB0aGUgd29yayB0byBVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5
KCkuCisgIHJldHVybiBVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KG1hdGNoZXJzKTsKK30KKwor
I2lmIEdURVNUX0hBU19TVERfSU5JVElBTElaRVJfTElTVF8KKworLy8gU3VwcG9ydHMgdGhlIFVu
b3JkZXJlZFBvaW50d2lzZShtLCB7YSwgYiwgY30pIHN5bnRheC4KK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUdXBsZTJNYXRjaGVyLCB0eXBlbmFtZSBUPgoraW5saW5lIGludGVybmFsOjpVbm9yZGVyZWRF
bGVtZW50c0FyZUFycmF5TWF0Y2hlcjwKKyAgICB0eXBlbmFtZSBpbnRlcm5hbDo6Qm91bmRTZWNv
bmRNYXRjaGVyPFR1cGxlMk1hdGNoZXIsIFQ+ID4KK1Vub3JkZXJlZFBvaW50d2lzZShjb25zdCBU
dXBsZTJNYXRjaGVyJiB0dXBsZTJfbWF0Y2hlciwKKyAgICAgICAgICAgICAgICAgICBzdGQ6Omlu
aXRpYWxpemVyX2xpc3Q8VD4gcmhzKSB7CisgIHJldHVybiBVbm9yZGVyZWRQb2ludHdpc2UodHVw
bGUyX21hdGNoZXIsIHN0ZDo6dmVjdG9yPFQ+KHJocykpOworfQorCisjZW5kaWYgIC8vIEdURVNU
X0hBU19TVERfSU5JVElBTElaRVJfTElTVF8KKworLy8gTWF0Y2hlcyBhbiBTVEwtc3R5bGUgY29u
dGFpbmVyIG9yIGEgbmF0aXZlIGFycmF5IHRoYXQgY29udGFpbnMgYXQKKy8vIGxlYXN0IG9uZSBl
bGVtZW50IG1hdGNoaW5nIHRoZSBnaXZlbiB2YWx1ZSBvciBtYXRjaGVyLgorLy8KKy8vIEV4YW1w
bGVzOgorLy8gICA6OnN0ZDo6c2V0PGludD4gcGFnZV9pZHM7CisvLyAgIHBhZ2VfaWRzLmluc2Vy
dCgzKTsKKy8vICAgcGFnZV9pZHMuaW5zZXJ0KDEpOworLy8gICBFWFBFQ1RfVEhBVChwYWdlX2lk
cywgQ29udGFpbnMoMSkpOworLy8gICBFWFBFQ1RfVEhBVChwYWdlX2lkcywgQ29udGFpbnMoR3Qo
MikpKTsKKy8vICAgRVhQRUNUX1RIQVQocGFnZV9pZHMsIE5vdChDb250YWlucyg0KSkpOworLy8K
Ky8vICAgOjpzdGQ6Om1hcDxpbnQsIHNpemVfdD4gcGFnZV9sZW5ndGhzOworLy8gICBwYWdlX2xl
bmd0aHNbMV0gPSAxMDA7CisvLyAgIEVYUEVDVF9USEFUKHBhZ2VfbGVuZ3RocywKKy8vICAgICAg
ICAgICAgICAgQ29udGFpbnMoOjpzdGQ6OnBhaXI8Y29uc3QgaW50LCBzaXplX3Q+KDEsIDEwMCkp
KTsKKy8vCisvLyAgIGNvbnN0IGNoYXIqIHVzZXJfaWRzW10gPSB7ICJqb2UiLCAibWlrZSIsICJ0
b20iIH07CisvLyAgIEVYUEVDVF9USEFUKHVzZXJfaWRzLCBDb250YWlucyhFcSg6OnN0ZDo6c3Ry
aW5nKCJ0b20iKSkpKTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBNPgoraW5saW5lIGludGVybmFsOjpD
b250YWluc01hdGNoZXI8TT4gQ29udGFpbnMoTSBtYXRjaGVyKSB7CisgIHJldHVybiBpbnRlcm5h
bDo6Q29udGFpbnNNYXRjaGVyPE0+KG1hdGNoZXIpOworfQorCisvLyBNYXRjaGVzIGFuIFNUTC1z
dHlsZSBjb250YWluZXIgb3IgYSBuYXRpdmUgYXJyYXkgdGhhdCBjb250YWlucyBvbmx5CisvLyBl
bGVtZW50cyBtYXRjaGluZyB0aGUgZ2l2ZW4gdmFsdWUgb3IgbWF0Y2hlci4KKy8vCisvLyBFYWNo
KG0pIGlzIHNlbWFudGljYWxseSBlcXVpdmFsZW50IHRvIE5vdChDb250YWlucyhOb3QobSkpKS4g
T25seQorLy8gdGhlIG1lc3NhZ2VzIGFyZSBkaWZmZXJlbnQuCisvLworLy8gRXhhbXBsZXM6Cisv
LyAgIDo6c3RkOjpzZXQ8aW50PiBwYWdlX2lkczsKKy8vICAgLy8gRWFjaChtKSBtYXRjaGVzIGFu
IGVtcHR5IGNvbnRhaW5lciwgcmVnYXJkbGVzcyBvZiB3aGF0IG0gaXMuCisvLyAgIEVYUEVDVF9U
SEFUKHBhZ2VfaWRzLCBFYWNoKEVxKDEpKSk7CisvLyAgIEVYUEVDVF9USEFUKHBhZ2VfaWRzLCBF
YWNoKEVxKDc3KSkpOworLy8KKy8vICAgcGFnZV9pZHMuaW5zZXJ0KDMpOworLy8gICBFWFBFQ1Rf
VEhBVChwYWdlX2lkcywgRWFjaChHdCgwKSkpOworLy8gICBFWFBFQ1RfVEhBVChwYWdlX2lkcywg
Tm90KEVhY2goR3QoNCkpKSk7CisvLyAgIHBhZ2VfaWRzLmluc2VydCgxKTsKKy8vICAgRVhQRUNU
X1RIQVQocGFnZV9pZHMsIE5vdChFYWNoKEx0KDIpKSkpOworLy8KKy8vICAgOjpzdGQ6Om1hcDxp
bnQsIHNpemVfdD4gcGFnZV9sZW5ndGhzOworLy8gICBwYWdlX2xlbmd0aHNbMV0gPSAxMDA7Cisv
LyAgIHBhZ2VfbGVuZ3Roc1syXSA9IDIwMDsKKy8vICAgcGFnZV9sZW5ndGhzWzNdID0gMzAwOwor
Ly8gICBFWFBFQ1RfVEhBVChwYWdlX2xlbmd0aHMsIE5vdChFYWNoKFBhaXIoMSwgMTAwKSkpKTsK
Ky8vICAgRVhQRUNUX1RIQVQocGFnZV9sZW5ndGhzLCBFYWNoKEtleShMZSgzKSkpKTsKKy8vCisv
LyAgIGNvbnN0IGNoYXIqIHVzZXJfaWRzW10gPSB7ICJqb2UiLCAibWlrZSIsICJ0b20iIH07Cisv
LyAgIEVYUEVDVF9USEFUKHVzZXJfaWRzLCBOb3QoRWFjaChFcSg6OnN0ZDo6c3RyaW5nKCJ0b20i
KSkpKSk7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgTT4KK2lubGluZSBpbnRlcm5hbDo6RWFjaE1hdGNo
ZXI8TT4gRWFjaChNIG1hdGNoZXIpIHsKKyAgcmV0dXJuIGludGVybmFsOjpFYWNoTWF0Y2hlcjxN
PihtYXRjaGVyKTsKK30KKworLy8gS2V5KGlubmVyX21hdGNoZXIpIG1hdGNoZXMgYW4gc3RkOjpw
YWlyIHdob3NlICdmaXJzdCcgZmllbGQgbWF0Y2hlcworLy8gaW5uZXJfbWF0Y2hlci4gIEZvciBl
eGFtcGxlLCBDb250YWlucyhLZXkoR2UoNSkpKSBjYW4gYmUgdXNlZCB0byBtYXRjaCBhbgorLy8g
c3RkOjptYXAgdGhhdCBjb250YWlucyBhdCBsZWFzdCBvbmUgZWxlbWVudCB3aG9zZSBrZXkgaXMg
Pj0gNS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBNPgoraW5saW5lIGludGVybmFsOjpLZXlNYXRjaGVy
PE0+IEtleShNIGlubmVyX21hdGNoZXIpIHsKKyAgcmV0dXJuIGludGVybmFsOjpLZXlNYXRjaGVy
PE0+KGlubmVyX21hdGNoZXIpOworfQorCisvLyBQYWlyKGZpcnN0X21hdGNoZXIsIHNlY29uZF9t
YXRjaGVyKSBtYXRjaGVzIGEgc3RkOjpwYWlyIHdob3NlICdmaXJzdCcgZmllbGQKKy8vIG1hdGNo
ZXMgZmlyc3RfbWF0Y2hlciBhbmQgd2hvc2UgJ3NlY29uZCcgZmllbGQgbWF0Y2hlcyBzZWNvbmRf
bWF0Y2hlci4gIEZvcgorLy8gZXhhbXBsZSwgRVhQRUNUX1RIQVQobWFwX3R5cGUsIEVsZW1lbnRz
QXJlKFBhaXIoR2UoNSksICJmb28iKSkpIGNhbiBiZSB1c2VkCisvLyB0byBtYXRjaCBhIHN0ZDo6
bWFwPGludCwgc3RyaW5nPiB0aGF0IGNvbnRhaW5zIGV4YWN0bHkgb25lIGVsZW1lbnQgd2hvc2Ug
a2V5CisvLyBpcyA+PSA1IGFuZCB3aG9zZSB2YWx1ZSBlcXVhbHMgImZvbyIuCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgRmlyc3RNYXRjaGVyLCB0eXBlbmFtZSBTZWNvbmRNYXRjaGVyPgoraW5saW5lIGlu
dGVybmFsOjpQYWlyTWF0Y2hlcjxGaXJzdE1hdGNoZXIsIFNlY29uZE1hdGNoZXI+CitQYWlyKEZp
cnN0TWF0Y2hlciBmaXJzdF9tYXRjaGVyLCBTZWNvbmRNYXRjaGVyIHNlY29uZF9tYXRjaGVyKSB7
CisgIHJldHVybiBpbnRlcm5hbDo6UGFpck1hdGNoZXI8Rmlyc3RNYXRjaGVyLCBTZWNvbmRNYXRj
aGVyPigKKyAgICAgIGZpcnN0X21hdGNoZXIsIHNlY29uZF9tYXRjaGVyKTsKK30KKworLy8gUmV0
dXJucyBhIHByZWRpY2F0ZSB0aGF0IGlzIHNhdGlzZmllZCBieSBhbnl0aGluZyB0aGF0IG1hdGNo
ZXMgdGhlCisvLyBnaXZlbiBtYXRjaGVyLgordGVtcGxhdGUgPHR5cGVuYW1lIE0+CitpbmxpbmUg
aW50ZXJuYWw6Ok1hdGNoZXJBc1ByZWRpY2F0ZTxNPiBNYXRjaGVzKE0gbWF0Y2hlcikgeworICBy
ZXR1cm4gaW50ZXJuYWw6Ok1hdGNoZXJBc1ByZWRpY2F0ZTxNPihtYXRjaGVyKTsKK30KKworLy8g
UmV0dXJucyB0cnVlIGlmZiB0aGUgdmFsdWUgbWF0Y2hlcyB0aGUgbWF0Y2hlci4KK3RlbXBsYXRl
IDx0eXBlbmFtZSBULCB0eXBlbmFtZSBNPgoraW5saW5lIGJvb2wgVmFsdWUoY29uc3QgVCYgdmFs
dWUsIE0gbWF0Y2hlcikgeworICByZXR1cm4gdGVzdGluZzo6TWF0Y2hlcyhtYXRjaGVyKSh2YWx1
ZSk7Cit9CisKKy8vIE1hdGNoZXMgdGhlIHZhbHVlIGFnYWluc3QgdGhlIGdpdmVuIG1hdGNoZXIg
YW5kIGV4cGxhaW5zIHRoZSBtYXRjaAorLy8gcmVzdWx0IHRvIGxpc3RlbmVyLgordGVtcGxhdGUg
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIE0+CitpbmxpbmUgYm9vbCBFeHBsYWluTWF0Y2hSZXN1bHQo
CisgICAgTSBtYXRjaGVyLCBjb25zdCBUJiB2YWx1ZSwgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlz
dGVuZXIpIHsKKyAgcmV0dXJuIFNhZmVNYXRjaGVyQ2FzdDxjb25zdCBUJj4obWF0Y2hlcikuTWF0
Y2hBbmRFeHBsYWluKHZhbHVlLCBsaXN0ZW5lcik7Cit9CisKKyNpZiBHVEVTVF9MQU5HX0NYWDEx
CisvLyBEZWZpbmUgdmFyaWFkaWMgbWF0Y2hlciB2ZXJzaW9ucy4gVGhleSBhcmUgb3ZlcmxvYWRl
ZCBpbgorLy8gZ21vY2stZ2VuZXJhdGVkLW1hdGNoZXJzLmggZm9yIHRoZSBjYXNlcyBzdXBwb3J0
ZWQgYnkgcHJlIEMrKzExIGNvbXBpbGVycy4KK3RlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgor
aW5saW5lIGludGVybmFsOjpBbGxPZk1hdGNoZXI8QXJncy4uLj4gQWxsT2YoY29uc3QgQXJncyYu
Li4gbWF0Y2hlcnMpIHsKKyAgcmV0dXJuIGludGVybmFsOjpBbGxPZk1hdGNoZXI8QXJncy4uLj4o
bWF0Y2hlcnMuLi4pOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KK2lubGluZSBp
bnRlcm5hbDo6QW55T2ZNYXRjaGVyPEFyZ3MuLi4+IEFueU9mKGNvbnN0IEFyZ3MmLi4uIG1hdGNo
ZXJzKSB7CisgIHJldHVybiBpbnRlcm5hbDo6QW55T2ZNYXRjaGVyPEFyZ3MuLi4+KG1hdGNoZXJz
Li4uKTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9MQU5HX0NYWDExCisKKy8vIEFsbEFyZ3MobSkg
aXMgYSBzeW5vbnltIG9mIG0uICBUaGlzIGlzIHVzZWZ1bCBpbgorLy8KKy8vICAgRVhQRUNUX0NB
TEwoZm9vLCBCYXIoXywgXykpLldpdGgoQWxsQXJncyhFcSgpKSk7CisvLworLy8gd2hpY2ggaXMg
ZWFzaWVyIHRvIHJlYWQgdGhhbgorLy8KKy8vICAgRVhQRUNUX0NBTEwoZm9vLCBCYXIoXywgXykp
LldpdGgoRXEoKSk7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5uZXJNYXRjaGVyPgoraW5saW5lIElu
bmVyTWF0Y2hlciBBbGxBcmdzKGNvbnN0IElubmVyTWF0Y2hlciYgbWF0Y2hlcikgeyByZXR1cm4g
bWF0Y2hlcjsgfQorCisvLyBUaGVzZSBtYWNyb3MgYWxsb3cgdXNpbmcgbWF0Y2hlcnMgdG8gY2hl
Y2sgdmFsdWVzIGluIEdvb2dsZSBUZXN0CisvLyB0ZXN0cy4gIEFTU0VSVF9USEFUKHZhbHVlLCBt
YXRjaGVyKSBhbmQgRVhQRUNUX1RIQVQodmFsdWUsIG1hdGNoZXIpCisvLyBzdWNjZWVkIGlmZiB0
aGUgdmFsdWUgbWF0Y2hlcyB0aGUgbWF0Y2hlci4gIElmIHRoZSBhc3NlcnRpb24gZmFpbHMsCisv
LyB0aGUgdmFsdWUgYW5kIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgbWF0Y2hlciB3aWxsIGJlIHBy
aW50ZWQuCisjZGVmaW5lIEFTU0VSVF9USEFUKHZhbHVlLCBtYXRjaGVyKSBBU1NFUlRfUFJFRF9G
T1JNQVQxKFwKKyAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpNYWtlUHJlZGljYXRlRm9ybWF0dGVy
RnJvbU1hdGNoZXIobWF0Y2hlciksIHZhbHVlKQorI2RlZmluZSBFWFBFQ1RfVEhBVCh2YWx1ZSwg
bWF0Y2hlcikgRVhQRUNUX1BSRURfRk9STUFUMShcCisgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6
TWFrZVByZWRpY2F0ZUZvcm1hdHRlckZyb21NYXRjaGVyKG1hdGNoZXIpLCB2YWx1ZSkKKworfSAg
Ly8gbmFtZXNwYWNlIHRlc3RpbmcKKworLy8gSW5jbHVkZSBhbnkgY3VzdG9tIGNhbGxiYWNrIG1h
dGNoZXJzIGFkZGVkIGJ5IHRoZSBsb2NhbCBpbnN0YWxsYXRpb24uCisvLyBXZSBtdXN0IGluY2x1
ZGUgdGhpcyBoZWFkZXIgYXQgdGhlIGVuZCB0byBtYWtlIHN1cmUgaXQgY2FuIHVzZSB0aGUKKy8v
IGRlY2xhcmF0aW9ucyBmcm9tIHRoaXMgZmlsZS4KKyNpbmNsdWRlICJnbW9jay9pbnRlcm5hbC9j
dXN0b20vZ21vY2stbWF0Y2hlcnMuaCIKKyNlbmRpZiAgLy8gR01PQ0tfSU5DTFVERV9HTU9DS19H
TU9DS19NQVRDSEVSU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9n
bW9jay1tb3JlLWFjdGlvbnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svZ21vY2stbW9y
ZS1hY3Rpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2QzODdiNmI3ZDc1ZWJjNDRhYzAzMTBmYTYyZTU4ZDYx
MDA0ZWM2NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svZ21v
Y2stbW9yZS1hY3Rpb25zLmgKQEAgLTAsMCArMSwyNDYgQEAKKy8vIENvcHlyaWdodCAyMDA3LCBH
b29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8v
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
Ly8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
Ly8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBBdXRob3I6IHdhbkBnb29nbGUuY29tICha
aGFueW9uZyBXYW4pCisKKy8vIEdvb2dsZSBNb2NrIC0gYSBmcmFtZXdvcmsgZm9yIHdyaXRpbmcg
QysrIG1vY2sgY2xhc3Nlcy4KKy8vCisvLyBUaGlzIGZpbGUgaW1wbGVtZW50cyBzb21lIGFjdGlv
bnMgdGhhdCBkZXBlbmQgb24gZ21vY2stZ2VuZXJhdGVkLWFjdGlvbnMuaC4KKworI2lmbmRlZiBH
TU9DS19JTkNMVURFX0dNT0NLX0dNT0NLX01PUkVfQUNUSU9OU19IXworI2RlZmluZSBHTU9DS19J
TkNMVURFX0dNT0NLX0dNT0NLX01PUkVfQUNUSU9OU19IXworCisjaW5jbHVkZSA8YWxnb3JpdGht
PgorCisjaW5jbHVkZSAiZ21vY2svZ21vY2stZ2VuZXJhdGVkLWFjdGlvbnMuaCIKKworbmFtZXNw
YWNlIHRlc3RpbmcgeworbmFtZXNwYWNlIGludGVybmFsIHsKKworLy8gSW1wbGVtZW50cyB0aGUg
SW52b2tlKGYpIGFjdGlvbi4gIFRoZSB0ZW1wbGF0ZSBhcmd1bWVudAorLy8gRnVuY3Rpb25JbXBs
IGlzIHRoZSBpbXBsZW1lbnRhdGlvbiB0eXBlIG9mIGYsIHdoaWNoIGNhbiBiZSBlaXRoZXIgYQor
Ly8gZnVuY3Rpb24gcG9pbnRlciBvciBhIGZ1bmN0b3IuICBJbnZva2UoZikgY2FuIGJlIHVzZWQg
YXMgYW4KKy8vIEFjdGlvbjxGPiBhcyBsb25nIGFzIGYncyB0eXBlIGlzIGNvbXBhdGlibGUgd2l0
aCBGIChpLmUuIGYgY2FuIGJlCisvLyBhc3NpZ25lZCB0byBhIHRyMTo6ZnVuY3Rpb248Rj4pLgor
dGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uSW1wbD4KK2NsYXNzIEludm9rZUFjdGlvbiB7Cisg
cHVibGljOgorICAvLyBUaGUgYyd0b3IgbWFrZXMgYSBjb3B5IG9mIGZ1bmN0aW9uX2ltcGwgKGVp
dGhlciBhIGZ1bmN0aW9uCisgIC8vIHBvaW50ZXIgb3IgYSBmdW5jdG9yKS4KKyAgZXhwbGljaXQg
SW52b2tlQWN0aW9uKEZ1bmN0aW9uSW1wbCBmdW5jdGlvbl9pbXBsKQorICAgICAgOiBmdW5jdGlv
bl9pbXBsXyhmdW5jdGlvbl9pbXBsKSB7fQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQs
IHR5cGVuYW1lIEFyZ3VtZW50VHVwbGU+CisgIFJlc3VsdCBQZXJmb3JtKGNvbnN0IEFyZ3VtZW50
VHVwbGUmIGFyZ3MpIHsKKyAgICByZXR1cm4gSW52b2tlSGVscGVyPFJlc3VsdCwgQXJndW1lbnRU
dXBsZT46Okludm9rZShmdW5jdGlvbl9pbXBsXywgYXJncyk7CisgIH0KKworIHByaXZhdGU6Cisg
IEZ1bmN0aW9uSW1wbCBmdW5jdGlvbl9pbXBsXzsKKworICBHVEVTVF9ESVNBTExPV19BU1NJR05f
KEludm9rZUFjdGlvbik7Cit9OworCisvLyBJbXBsZW1lbnRzIHRoZSBJbnZva2Uob2JqZWN0X3B0
ciwgJkNsYXNzOjpNZXRob2QpIGFjdGlvbi4KK3RlbXBsYXRlIDxjbGFzcyBDbGFzcywgdHlwZW5h
bWUgTWV0aG9kUHRyPgorY2xhc3MgSW52b2tlTWV0aG9kQWN0aW9uIHsKKyBwdWJsaWM6CisgIElu
dm9rZU1ldGhvZEFjdGlvbihDbGFzcyogb2JqX3B0ciwgTWV0aG9kUHRyIG1ldGhvZF9wdHIpCisg
ICAgICA6IG1ldGhvZF9wdHJfKG1ldGhvZF9wdHIpLCBvYmpfcHRyXyhvYmpfcHRyKSB7fQorCisg
IHRlbXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQsIHR5cGVuYW1lIEFyZ3VtZW50VHVwbGU+CisgIFJl
c3VsdCBQZXJmb3JtKGNvbnN0IEFyZ3VtZW50VHVwbGUmIGFyZ3MpIGNvbnN0IHsKKyAgICByZXR1
cm4gSW52b2tlSGVscGVyPFJlc3VsdCwgQXJndW1lbnRUdXBsZT46Okludm9rZU1ldGhvZCgKKyAg
ICAgICAgb2JqX3B0cl8sIG1ldGhvZF9wdHJfLCBhcmdzKTsKKyAgfQorCisgcHJpdmF0ZToKKyAg
Ly8gVGhlIG9yZGVyIG9mIHRoZXNlIG1lbWJlcnMgbWF0dGVycy4gIFJldmVyc2luZyB0aGUgb3Jk
ZXIgY2FuIHRyaWdnZXIKKyAgLy8gd2FybmluZyBDNDEyMSBpbiBNU1ZDIChzZWUKKyAgLy8gaHR0
cDovL2NvbXB1dGVyLXByb2dyYW1taW5nLWZvcnVtLmNvbS83LXZjLm5ldC82ZmJjMzAyNjVmODYw
YWQxLmh0bSApLgorICBjb25zdCBNZXRob2RQdHIgbWV0aG9kX3B0cl87CisgIENsYXNzKiBjb25z
dCBvYmpfcHRyXzsKKworICBHVEVTVF9ESVNBTExPV19BU1NJR05fKEludm9rZU1ldGhvZEFjdGlv
bik7Cit9OworCisvLyBBbiBpbnRlcm5hbCByZXBsYWNlbWVudCBmb3Igc3RkOjpjb3B5IHdoaWNo
IG1pbWljcyBpdHMgYmVoYXZpb3IuIFRoaXMgaXMKKy8vIG5lY2Vzc2FyeSBiZWNhdXNlIFZpc3Vh
bCBTdHVkaW8gZGVwcmVjYXRlcyA6OnN0ZDo6Y29weSwgaXNzdWluZyB3YXJuaW5nIDQ5OTYuCisv
LyBIb3dldmVyIFZpc3VhbCBTdHVkaW8gMjAxMCBhbmQgbGF0ZXIgZG8gbm90IGhvbm9yICNwcmFn
bWFzIHdoaWNoIGRpc2FibGUgdGhhdAorLy8gd2FybmluZy4KK3RlbXBsYXRlPHR5cGVuYW1lIElu
cHV0SXRlcmF0b3IsIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yPgoraW5saW5lIE91dHB1dEl0ZXJh
dG9yIENvcHlFbGVtZW50cyhJbnB1dEl0ZXJhdG9yIGZpcnN0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBJbnB1dEl0ZXJhdG9yIGxhc3QsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yIG91dHB1dCkgeworICBmb3IgKDsgZmlyc3Qg
IT0gbGFzdDsgKytmaXJzdCwgKytvdXRwdXQpIHsKKyAgICAqb3V0cHV0ID0gKmZpcnN0OworICB9
CisgIHJldHVybiBvdXRwdXQ7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAorCisvLyBW
YXJpb3VzIG92ZXJsb2FkcyBmb3IgSW52b2tlKCkuCisKKy8vIENyZWF0ZXMgYW4gYWN0aW9uIHRo
YXQgaW52b2tlcyAnZnVuY3Rpb25faW1wbCcgd2l0aCB0aGUgbW9jaworLy8gZnVuY3Rpb24ncyBh
cmd1bWVudHMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rpb25JbXBsPgorUG9seW1vcnBoaWNB
Y3Rpb248aW50ZXJuYWw6Okludm9rZUFjdGlvbjxGdW5jdGlvbkltcGw+ID4gSW52b2tlKAorICAg
IEZ1bmN0aW9uSW1wbCBmdW5jdGlvbl9pbXBsKSB7CisgIHJldHVybiBNYWtlUG9seW1vcnBoaWNB
Y3Rpb24oCisgICAgICBpbnRlcm5hbDo6SW52b2tlQWN0aW9uPEZ1bmN0aW9uSW1wbD4oZnVuY3Rp
b25faW1wbCkpOworfQorCisvLyBDcmVhdGVzIGFuIGFjdGlvbiB0aGF0IGludm9rZXMgdGhlIGdp
dmVuIG1ldGhvZCBvbiB0aGUgZ2l2ZW4gb2JqZWN0CisvLyB3aXRoIHRoZSBtb2NrIGZ1bmN0aW9u
J3MgYXJndW1lbnRzLgordGVtcGxhdGUgPGNsYXNzIENsYXNzLCB0eXBlbmFtZSBNZXRob2RQdHI+
CitQb2x5bW9ycGhpY0FjdGlvbjxpbnRlcm5hbDo6SW52b2tlTWV0aG9kQWN0aW9uPENsYXNzLCBN
ZXRob2RQdHI+ID4gSW52b2tlKAorICAgIENsYXNzKiBvYmpfcHRyLCBNZXRob2RQdHIgbWV0aG9k
X3B0cikgeworICByZXR1cm4gTWFrZVBvbHltb3JwaGljQWN0aW9uKAorICAgICAgaW50ZXJuYWw6
Okludm9rZU1ldGhvZEFjdGlvbjxDbGFzcywgTWV0aG9kUHRyPihvYmpfcHRyLCBtZXRob2RfcHRy
KSk7Cit9CisKKy8vIFdpdGhvdXRBcmdzKGlubmVyX2FjdGlvbikgY2FuIGJlIHVzZWQgaW4gYSBt
b2NrIGZ1bmN0aW9uIHdpdGggYQorLy8gbm9uLWVtcHR5IGFyZ3VtZW50IGxpc3QgdG8gcGVyZm9y
bSBpbm5lcl9hY3Rpb24sIHdoaWNoIHRha2VzIG5vCisvLyBhcmd1bWVudC4gIEluIG90aGVyIHdv
cmRzLCBpdCBhZGFwdHMgYW4gYWN0aW9uIGFjY2VwdGluZyBubworLy8gYXJndW1lbnQgdG8gb25l
IHRoYXQgYWNjZXB0cyAoYW5kIGlnbm9yZXMpIGFyZ3VtZW50cy4KK3RlbXBsYXRlIDx0eXBlbmFt
ZSBJbm5lckFjdGlvbj4KK2lubGluZSBpbnRlcm5hbDo6V2l0aEFyZ3NBY3Rpb248SW5uZXJBY3Rp
b24+CitXaXRob3V0QXJncyhjb25zdCBJbm5lckFjdGlvbiYgYWN0aW9uKSB7CisgIHJldHVybiBp
bnRlcm5hbDo6V2l0aEFyZ3NBY3Rpb248SW5uZXJBY3Rpb24+KGFjdGlvbik7Cit9CisKKy8vIFdp
dGhBcmc8az4oYW5fYWN0aW9uKSBjcmVhdGVzIGFuIGFjdGlvbiB0aGF0IHBhc3NlcyB0aGUgay10
aAorLy8gKDAtYmFzZWQpIGFyZ3VtZW50IG9mIHRoZSBtb2NrIGZ1bmN0aW9uIHRvIGFuX2FjdGlv
biBhbmQgcGVyZm9ybXMKKy8vIGl0LiAgSXQgYWRhcHRzIGFuIGFjdGlvbiBhY2NlcHRpbmcgb25l
IGFyZ3VtZW50IHRvIG9uZSB0aGF0IGFjY2VwdHMKKy8vIG11bHRpcGxlIGFyZ3VtZW50cy4gIEZv
ciBjb252ZW5pZW5jZSwgd2UgYWxzbyBwcm92aWRlCisvLyBXaXRoQXJnczxrPihhbl9hY3Rpb24p
IChkZWZpbmVkIGJlbG93KSBhcyBhIHN5bm9ueW0uCit0ZW1wbGF0ZSA8aW50IGssIHR5cGVuYW1l
IElubmVyQWN0aW9uPgoraW5saW5lIGludGVybmFsOjpXaXRoQXJnc0FjdGlvbjxJbm5lckFjdGlv
biwgaz4KK1dpdGhBcmcoY29uc3QgSW5uZXJBY3Rpb24mIGFjdGlvbikgeworICByZXR1cm4gaW50
ZXJuYWw6OldpdGhBcmdzQWN0aW9uPElubmVyQWN0aW9uLCBrPihhY3Rpb24pOworfQorCisvLyBU
aGUgQUNUSU9OKigpIG1hY3JvcyB0cmlnZ2VyIHdhcm5pbmcgQzQxMDAgKHVucmVmZXJlbmNlZCBm
b3JtYWwKKy8vIHBhcmFtZXRlcikgaW4gTVNWQyB3aXRoIC1XNC4gIFVuZm9ydHVuYXRlbHkgdGhl
eSBjYW5ub3QgYmUgZml4ZWQgaW4KKy8vIHRoZSBtYWNybyBkZWZpbml0aW9uLCBhcyB0aGUgd2Fy
bmluZ3MgYXJlIGdlbmVyYXRlZCB3aGVuIHRoZSBtYWNybworLy8gaXMgZXhwYW5kZWQgYW5kIG1h
Y3JvIGV4cGFuc2lvbiBjYW5ub3QgY29udGFpbiAjcHJhZ21hLiAgVGhlcmVmb3JlCisvLyB3ZSBz
dXBwcmVzcyB0aGVtIGhlcmUuCisjaWZkZWYgX01TQ19WRVIKKyMgcHJhZ21hIHdhcm5pbmcocHVz
aCkKKyMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTAwKQorI2VuZGlmCisKKy8vIEFjdGlvbiBS
ZXR1cm5Bcmc8az4oKSByZXR1cm5zIHRoZSBrLXRoIGFyZ3VtZW50IG9mIHRoZSBtb2NrIGZ1bmN0
aW9uLgorQUNUSU9OX1RFTVBMQVRFKFJldHVybkFyZywKKyAgICAgICAgICAgICAgICBIQVNfMV9U
RU1QTEFURV9QQVJBTVMoaW50LCBrKSwKKyAgICAgICAgICAgICAgICBBTkRfMF9WQUxVRV9QQVJB
TVMoKSkgeworICByZXR1cm4gOjp0ZXN0aW5nOjpnZXQ8az4oYXJncyk7Cit9CisKKy8vIEFjdGlv
biBTYXZlQXJnPGs+KHBvaW50ZXIpIHNhdmVzIHRoZSBrLXRoICgwLWJhc2VkKSBhcmd1bWVudCBv
ZiB0aGUKKy8vIG1vY2sgZnVuY3Rpb24gdG8gKnBvaW50ZXIuCitBQ1RJT05fVEVNUExBVEUoU2F2
ZUFyZywKKyAgICAgICAgICAgICAgICBIQVNfMV9URU1QTEFURV9QQVJBTVMoaW50LCBrKSwKKyAg
ICAgICAgICAgICAgICBBTkRfMV9WQUxVRV9QQVJBTVMocG9pbnRlcikpIHsKKyAgKnBvaW50ZXIg
PSA6OnRlc3Rpbmc6OmdldDxrPihhcmdzKTsKK30KKworLy8gQWN0aW9uIFNhdmVBcmdQb2ludGVl
PGs+KHBvaW50ZXIpIHNhdmVzIHRoZSB2YWx1ZSBwb2ludGVkIHRvCisvLyBieSB0aGUgay10aCAo
MC1iYXNlZCkgYXJndW1lbnQgb2YgdGhlIG1vY2sgZnVuY3Rpb24gdG8gKnBvaW50ZXIuCitBQ1RJ
T05fVEVNUExBVEUoU2F2ZUFyZ1BvaW50ZWUsCisgICAgICAgICAgICAgICAgSEFTXzFfVEVNUExB
VEVfUEFSQU1TKGludCwgayksCisgICAgICAgICAgICAgICAgQU5EXzFfVkFMVUVfUEFSQU1TKHBv
aW50ZXIpKSB7CisgICpwb2ludGVyID0gKjo6dGVzdGluZzo6Z2V0PGs+KGFyZ3MpOworfQorCisv
LyBBY3Rpb24gU2V0QXJnUmVmZXJlZTxrPih2YWx1ZSkgYXNzaWducyAndmFsdWUnIHRvIHRoZSB2
YXJpYWJsZQorLy8gcmVmZXJlbmNlZCBieSB0aGUgay10aCAoMC1iYXNlZCkgYXJndW1lbnQgb2Yg
dGhlIG1vY2sgZnVuY3Rpb24uCitBQ1RJT05fVEVNUExBVEUoU2V0QXJnUmVmZXJlZSwKKyAgICAg
ICAgICAgICAgICBIQVNfMV9URU1QTEFURV9QQVJBTVMoaW50LCBrKSwKKyAgICAgICAgICAgICAg
ICBBTkRfMV9WQUxVRV9QQVJBTVModmFsdWUpKSB7CisgIHR5cGVkZWYgdHlwZW5hbWUgOjp0ZXN0
aW5nOjp0dXBsZV9lbGVtZW50PGssIGFyZ3NfdHlwZT46OnR5cGUgYXJna190eXBlOworICAvLyBF
bnN1cmVzIHRoYXQgYXJndW1lbnQgI2sgaXMgYSByZWZlcmVuY2UuICBJZiB5b3UgZ2V0IGEgY29t
cGlsZXIKKyAgLy8gZXJyb3Igb24gdGhlIG5leHQgbGluZSwgeW91IGFyZSB1c2luZyBTZXRBcmdS
ZWZlcmVlPGs+KHZhbHVlKSBpbgorICAvLyBhIG1vY2sgZnVuY3Rpb24gd2hvc2Ugay10aCAoMC1i
YXNlZCkgYXJndW1lbnQgaXMgbm90IGEgcmVmZXJlbmNlLgorICBHVEVTVF9DT01QSUxFX0FTU0VS
VF8oaW50ZXJuYWw6OmlzX3JlZmVyZW5jZTxhcmdrX3R5cGU+Ojp2YWx1ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIFNldEFyZ1JlZmVyZWVfbXVzdF9iZV91c2VkX3dpdGhfYV9yZWZlcmVuY2Vf
YXJndW1lbnQpOworICA6OnRlc3Rpbmc6OmdldDxrPihhcmdzKSA9IHZhbHVlOworfQorCisvLyBB
Y3Rpb24gU2V0QXJyYXlBcmd1bWVudDxrPihmaXJzdCwgbGFzdCkgY29waWVzIHRoZSBlbGVtZW50
cyBpbgorLy8gc291cmNlIHJhbmdlIFtmaXJzdCwgbGFzdCkgdG8gdGhlIGFycmF5IHBvaW50ZWQg
dG8gYnkgdGhlIGstdGgKKy8vICgwLWJhc2VkKSBhcmd1bWVudCwgd2hpY2ggY2FuIGJlIGVpdGhl
ciBhIHBvaW50ZXIgb3IgYW4KKy8vIGl0ZXJhdG9yLiBUaGUgYWN0aW9uIGRvZXMgbm90IHRha2Ug
b3duZXJzaGlwIG9mIHRoZSBlbGVtZW50cyBpbiB0aGUKKy8vIHNvdXJjZSByYW5nZS4KK0FDVElP
Tl9URU1QTEFURShTZXRBcnJheUFyZ3VtZW50LAorICAgICAgICAgICAgICAgIEhBU18xX1RFTVBM
QVRFX1BBUkFNUyhpbnQsIGspLAorICAgICAgICAgICAgICAgIEFORF8yX1ZBTFVFX1BBUkFNUyhm
aXJzdCwgbGFzdCkpIHsKKyAgLy8gVmlzdWFsIFN0dWRpbyBkZXByZWNhdGVzIDo6c3RkOjpjb3B5
LCBzbyB3ZSB1c2Ugb3VyIG93biBjb3B5IGluIHRoYXQgY2FzZS4KKyNpZmRlZiBfTVNDX1ZFUgor
ICBpbnRlcm5hbDo6Q29weUVsZW1lbnRzKGZpcnN0LCBsYXN0LCA6OnRlc3Rpbmc6OmdldDxrPihh
cmdzKSk7CisjZWxzZQorICA6OnN0ZDo6Y29weShmaXJzdCwgbGFzdCwgOjp0ZXN0aW5nOjpnZXQ8
az4oYXJncykpOworI2VuZGlmCit9CisKKy8vIEFjdGlvbiBEZWxldGVBcmc8az4oKSBkZWxldGVz
IHRoZSBrLXRoICgwLWJhc2VkKSBhcmd1bWVudCBvZiB0aGUgbW9jaworLy8gZnVuY3Rpb24uCitB
Q1RJT05fVEVNUExBVEUoRGVsZXRlQXJnLAorICAgICAgICAgICAgICAgIEhBU18xX1RFTVBMQVRF
X1BBUkFNUyhpbnQsIGspLAorICAgICAgICAgICAgICAgIEFORF8wX1ZBTFVFX1BBUkFNUygpKSB7
CisgIGRlbGV0ZSA6OnRlc3Rpbmc6OmdldDxrPihhcmdzKTsKK30KKworLy8gVGhpcyBhY3Rpb24g
cmV0dXJucyB0aGUgdmFsdWUgcG9pbnRlZCB0byBieSAncG9pbnRlcicuCitBQ1RJT05fUChSZXR1
cm5Qb2ludGVlLCBwb2ludGVyKSB7IHJldHVybiAqcG9pbnRlcjsgfQorCisvLyBBY3Rpb24gVGhy
b3coZXhjZXB0aW9uKSBjYW4gYmUgdXNlZCBpbiBhIG1vY2sgZnVuY3Rpb24gb2YgYW55IHR5cGUK
Ky8vIHRvIHRocm93IHRoZSBnaXZlbiBleGNlcHRpb24uICBBbnkgY29weWFibGUgdmFsdWUgY2Fu
IGJlIHRocm93bi4KKyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUworCisvLyBTdXBwcmVzc2VzIHRo
ZSAndW5yZWFjaGFibGUgY29kZScgd2FybmluZyB0aGF0IFZDIGdlbmVyYXRlcyBpbiBvcHQgbW9k
ZXMuCisjIGlmZGVmIF9NU0NfVkVSCisjICBwcmFnbWEgd2FybmluZyhwdXNoKSAgICAgICAgICAv
LyBTYXZlcyB0aGUgY3VycmVudCB3YXJuaW5nIHN0YXRlLgorIyAgcHJhZ21hIHdhcm5pbmcoZGlz
YWJsZTo0NzAyKSAgLy8gVGVtcG9yYXJpbHkgZGlzYWJsZXMgd2FybmluZyA0NzAyLgorIyBlbmRp
ZgorQUNUSU9OX1AoVGhyb3csIGV4Y2VwdGlvbikgeyB0aHJvdyBleGNlcHRpb247IH0KKyMgaWZk
ZWYgX01TQ19WRVIKKyMgIHByYWdtYSB3YXJuaW5nKHBvcCkgICAgICAgICAgIC8vIFJlc3RvcmVz
IHRoZSB3YXJuaW5nIHN0YXRlLgorIyBlbmRpZgorCisjZW5kaWYgIC8vIEdURVNUX0hBU19FWENF
UFRJT05TCisKKyNpZmRlZiBfTVNDX1ZFUgorIyBwcmFnbWEgd2FybmluZyhwb3ApCisjZW5kaWYK
KworfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKKworI2VuZGlmICAvLyBHTU9DS19JTkNMVURFX0dN
T0NLX0dNT0NLX01PUkVfQUNUSU9OU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVk
ZS9nbW9jay9nbW9jay1tb3JlLW1hdGNoZXJzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dtb2Nr
L2dtb2NrLW1vcmUtbWF0Y2hlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZGI4OTlmNDI5N2IzNDZjY2E0YTA3
Njk2MjI4YjhlYWEzMGQ0M2M2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVk
ZS9nbW9jay9nbW9jay1tb3JlLW1hdGNoZXJzLmgKQEAgLTAsMCArMSw1OCBAQAorLy8gQ29weXJp
Z2h0IDIwMTMsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisv
LyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRp
b24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisv
LyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEF1dGhvcjogbWFyY3Vz
LmJvZXJnZXJAZ29vZ2xlLmNvbSAoTWFyY3VzIEJvZXJnZXIpCisKKy8vIEdvb2dsZSBNb2NrIC0g
YSBmcmFtZXdvcmsgZm9yIHdyaXRpbmcgQysrIG1vY2sgY2xhc3Nlcy4KKy8vCisvLyBUaGlzIGZp
bGUgaW1wbGVtZW50cyBzb21lIG1hdGNoZXJzIHRoYXQgZGVwZW5kIG9uIGdtb2NrLWdlbmVyYXRl
ZC1tYXRjaGVycy5oLgorLy8KKy8vIE5vdGUgdGhhdCB0ZXN0cyBhcmUgaW1wbGVtZW50ZWQgaW4g
Z21vY2stbWF0Y2hlcnNfdGVzdC5jYyByYXRoZXIgdGhhbgorLy8gZ21vY2stbW9yZS1tYXRjaGVy
cy10ZXN0LmNjLgorCisjaWZuZGVmIEdNT0NLX0dNT0NLX01PUkVfTUFUQ0hFUlNfSF8KKyNkZWZp
bmUgR01PQ0tfR01PQ0tfTU9SRV9NQVRDSEVSU19IXworCisjaW5jbHVkZSAiZ21vY2svZ21vY2st
Z2VuZXJhdGVkLW1hdGNoZXJzLmgiCisKK25hbWVzcGFjZSB0ZXN0aW5nIHsKKworLy8gRGVmaW5l
cyBhIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGFuIGVtcHR5IGNvbnRhaW5lci4gVGhlIGNvbnRhaW5l
ciBtdXN0CisvLyBzdXBwb3J0IGJvdGggc2l6ZSgpIGFuZCBlbXB0eSgpLCB3aGljaCBhbGwgU1RM
LWxpa2UgY29udGFpbmVycyBwcm92aWRlLgorTUFUQ0hFUihJc0VtcHR5LCBuZWdhdGlvbiA/ICJp
c24ndCBlbXB0eSIgOiAiaXMgZW1wdHkiKSB7CisgIGlmIChhcmcuZW1wdHkoKSkgeworICAgIHJl
dHVybiB0cnVlOworICB9CisgICpyZXN1bHRfbGlzdGVuZXIgPDwgIndob3NlIHNpemUgaXMgIiA8
PCBhcmcuc2l6ZSgpOworICByZXR1cm4gZmFsc2U7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB0ZXN0
aW5nCisKKyNlbmRpZiAgLy8gR01PQ0tfR01PQ0tfTU9SRV9NQVRDSEVSU19IXwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9nbW9jay1zcGVjLWJ1aWxkZXJzLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xlbW9jay9pbmNsdWRlL2dtb2NrL2dtb2NrLXNwZWMtYnVpbGRlcnMuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
OWY3MjEyOWQ2NWYwZDdjZTI3N2JiNzc5Yzk0MTg5ZWRiY2UzOTY1Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9nbW9jay1zcGVjLWJ1aWxkZXJzLmgKQEAgLTAs
MCArMSwxODUwIEBACisvLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6
CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
Ky8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8K
Ky8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisvLworLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorCisvLyBHb29n
bGUgTW9jayAtIGEgZnJhbWV3b3JrIGZvciB3cml0aW5nIEMrKyBtb2NrIGNsYXNzZXMuCisvLwor
Ly8gVGhpcyBmaWxlIGltcGxlbWVudHMgdGhlIE9OX0NBTEwoKSBhbmQgRVhQRUNUX0NBTEwoKSBt
YWNyb3MuCisvLworLy8gQSB1c2VyIGNhbiB1c2UgdGhlIE9OX0NBTEwoKSBtYWNybyB0byBzcGVj
aWZ5IHRoZSBkZWZhdWx0IGFjdGlvbiBvZgorLy8gYSBtb2NrIG1ldGhvZC4gIFRoZSBzeW50YXgg
aXM6CisvLworLy8gICBPTl9DQUxMKG1vY2tfb2JqZWN0LCBNZXRob2QoYXJndW1lbnQtbWF0Y2hl
cnMpKQorLy8gICAgICAgLldpdGgobXVsdGktYXJndW1lbnQtbWF0Y2hlcikKKy8vICAgICAgIC5X
aWxsQnlEZWZhdWx0KGFjdGlvbik7CisvLworLy8gIHdoZXJlIHRoZSAuV2l0aCgpIGNsYXVzZSBp
cyBvcHRpb25hbC4KKy8vCisvLyBBIHVzZXIgY2FuIHVzZSB0aGUgRVhQRUNUX0NBTEwoKSBtYWNy
byB0byBzcGVjaWZ5IGFuIGV4cGVjdGF0aW9uIG9uCisvLyBhIG1vY2sgbWV0aG9kLiAgVGhlIHN5
bnRheCBpczoKKy8vCisvLyAgIEVYUEVDVF9DQUxMKG1vY2tfb2JqZWN0LCBNZXRob2QoYXJndW1l
bnQtbWF0Y2hlcnMpKQorLy8gICAgICAgLldpdGgobXVsdGktYXJndW1lbnQtbWF0Y2hlcnMpCisv
LyAgICAgICAuVGltZXMoY2FyZGluYWxpdHkpCisvLyAgICAgICAuSW5TZXF1ZW5jZShzZXF1ZW5j
ZXMpCisvLyAgICAgICAuQWZ0ZXIoZXhwZWN0YXRpb25zKQorLy8gICAgICAgLldpbGxPbmNlKGFj
dGlvbikKKy8vICAgICAgIC5XaWxsUmVwZWF0ZWRseShhY3Rpb24pCisvLyAgICAgICAuUmV0aXJl
c09uU2F0dXJhdGlvbigpOworLy8KKy8vIHdoZXJlIGFsbCBjbGF1c2VzIGFyZSBvcHRpb25hbCwg
YW5kIC5JblNlcXVlbmNlKCkvLkFmdGVyKCkvCisvLyAuV2lsbE9uY2UoKSBjYW4gYXBwZWFyIGFu
eSBudW1iZXIgb2YgdGltZXMuCisKKyNpZm5kZWYgR01PQ0tfSU5DTFVERV9HTU9DS19HTU9DS19T
UEVDX0JVSUxERVJTX0hfCisjZGVmaW5lIEdNT0NLX0lOQ0xVREVfR01PQ0tfR01PQ0tfU1BFQ19C
VUlMREVSU19IXworCisjaW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPHNldD4KKyNpbmNsdWRlIDxz
c3RyZWFtPgorI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpZiBHVEVT
VF9IQVNfRVhDRVBUSU9OUworIyBpbmNsdWRlIDxzdGRleGNlcHQ+ICAvLyBOT0xJTlQKKyNlbmRp
ZgorCisjaW5jbHVkZSAiZ21vY2svZ21vY2stYWN0aW9ucy5oIgorI2luY2x1ZGUgImdtb2NrL2dt
b2NrLWNhcmRpbmFsaXRpZXMuaCIKKyNpbmNsdWRlICJnbW9jay9nbW9jay1tYXRjaGVycy5oIgor
I2luY2x1ZGUgImdtb2NrL2ludGVybmFsL2dtb2NrLWludGVybmFsLXV0aWxzLmgiCisjaW5jbHVk
ZSAiZ21vY2svaW50ZXJuYWwvZ21vY2stcG9ydC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0Lmgi
CisKK25hbWVzcGFjZSB0ZXN0aW5nIHsKKworLy8gQW4gYWJzdHJhY3QgaGFuZGxlIG9mIGFuIGV4
cGVjdGF0aW9uLgorY2xhc3MgRXhwZWN0YXRpb247CisKKy8vIEEgc2V0IG9mIGV4cGVjdGF0aW9u
IGhhbmRsZXMuCitjbGFzcyBFeHBlY3RhdGlvblNldDsKKworLy8gQW55dGhpbmcgaW5zaWRlIHRo
ZSAnaW50ZXJuYWwnIG5hbWVzcGFjZSBJUyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTgorLy8gYW5k
IE1VU1QgTk9UIEJFIFVTRUQgSU4gVVNFUiBDT0RFISEhCituYW1lc3BhY2UgaW50ZXJuYWwgewor
CisvLyBJbXBsZW1lbnRzIGEgbW9jayBmdW5jdGlvbi4KK3RlbXBsYXRlIDx0eXBlbmFtZSBGPiBj
bGFzcyBGdW5jdGlvbk1vY2tlcjsKKworLy8gQmFzZSBjbGFzcyBmb3IgZXhwZWN0YXRpb25zLgor
Y2xhc3MgRXhwZWN0YXRpb25CYXNlOworCisvLyBJbXBsZW1lbnRzIGFuIGV4cGVjdGF0aW9uLgor
dGVtcGxhdGUgPHR5cGVuYW1lIEY+IGNsYXNzIFR5cGVkRXhwZWN0YXRpb247CisKKy8vIEhlbHBl
ciBjbGFzcyBmb3IgdGVzdGluZyB0aGUgRXhwZWN0YXRpb24gY2xhc3MgdGVtcGxhdGUuCitjbGFz
cyBFeHBlY3RhdGlvblRlc3RlcjsKKworLy8gQmFzZSBjbGFzcyBmb3IgZnVuY3Rpb24gbW9ja2Vy
cy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBGPiBjbGFzcyBGdW5jdGlvbk1vY2tlckJhc2U7CisKKy8v
IFByb3RlY3RzIHRoZSBtb2NrIG9iamVjdCByZWdpc3RyeSAoaW4gY2xhc3MgTW9jayksIGFsbCBm
dW5jdGlvbgorLy8gbW9ja2VycywgYW5kIGFsbCBleHBlY3RhdGlvbnMuCisvLworLy8gVGhlIHJl
YXNvbiB3ZSBkb24ndCB1c2UgbW9yZSBmaW5lLWdyYWluZWQgcHJvdGVjdGlvbiBpczogd2hlbiBh
CisvLyBtb2NrIGZ1bmN0aW9uIEZvbygpIGlzIGNhbGxlZCwgaXQgbmVlZHMgdG8gY29uc3VsdCBp
dHMgZXhwZWN0YXRpb25zCisvLyB0byBzZWUgd2hpY2ggb25lIHNob3VsZCBiZSBwaWNrZWQuICBJ
ZiBhbm90aGVyIHRocmVhZCBpcyBhbGxvd2VkIHRvCisvLyBjYWxsIGEgbW9jayBmdW5jdGlvbiAo
ZWl0aGVyIEZvbygpIG9yIGEgZGlmZmVyZW50IG9uZSkgYXQgdGhlIHNhbWUKKy8vIHRpbWUsIGl0
IGNvdWxkIGFmZmVjdCB0aGUgInJldGlyZWQiIGF0dHJpYnV0ZXMgb2YgRm9vKCkncworLy8gZXhw
ZWN0YXRpb25zIHdoZW4gSW5TZXF1ZW5jZSgpIGlzIHVzZWQsIGFuZCB0aHVzIGFmZmVjdCB3aGlj
aAorLy8gZXhwZWN0YXRpb24gZ2V0cyBwaWNrZWQuICBUaGVyZWZvcmUsIHdlIHNlcXVlbmNlIGFs
bCBtb2NrIGZ1bmN0aW9uCisvLyBjYWxscyB0byBlbnN1cmUgdGhlIGludGVncml0eSBvZiB0aGUg
bW9jayBvYmplY3RzJyBzdGF0ZXMuCitHVEVTVF9BUElfIEdURVNUX0RFQ0xBUkVfU1RBVElDX01V
VEVYXyhnX2dtb2NrX211dGV4KTsKKworLy8gVW50eXBlZCBiYXNlIGNsYXNzIGZvciBBY3Rpb25S
ZXN1bHRIb2xkZXI8Uj4uCitjbGFzcyBVbnR5cGVkQWN0aW9uUmVzdWx0SG9sZGVyQmFzZTsKKwor
Ly8gQWJzdHJhY3QgYmFzZSBjbGFzcyBvZiBGdW5jdGlvbk1vY2tlckJhc2UuICBUaGlzIGlzIHRo
ZQorLy8gdHlwZS1hZ25vc3RpYyBwYXJ0IG9mIHRoZSBmdW5jdGlvbiBtb2NrZXIgaW50ZXJmYWNl
LiAgSXRzIHB1cmUKKy8vIHZpcnR1YWwgbWV0aG9kcyBhcmUgaW1wbGVtZW50ZWQgYnkgRnVuY3Rp
b25Nb2NrZXJCYXNlLgorY2xhc3MgR1RFU1RfQVBJXyBVbnR5cGVkRnVuY3Rpb25Nb2NrZXJCYXNl
IHsKKyBwdWJsaWM6CisgIFVudHlwZWRGdW5jdGlvbk1vY2tlckJhc2UoKTsKKyAgdmlydHVhbCB+
VW50eXBlZEZ1bmN0aW9uTW9ja2VyQmFzZSgpOworCisgIC8vIFZlcmlmaWVzIHRoYXQgYWxsIGV4
cGVjdGF0aW9ucyBvbiB0aGlzIG1vY2sgZnVuY3Rpb24gaGF2ZSBiZWVuCisgIC8vIHNhdGlzZmll
ZC4gIFJlcG9ydHMgb25lIG9yIG1vcmUgR29vZ2xlIFRlc3Qgbm9uLWZhdGFsIGZhaWx1cmVzCisg
IC8vIGFuZCByZXR1cm5zIGZhbHNlIGlmIG5vdC4KKyAgYm9vbCBWZXJpZnlBbmRDbGVhckV4cGVj
dGF0aW9uc0xvY2tlZCgpCisgICAgICBHVEVTVF9FWENMVVNJVkVfTE9DS19SRVFVSVJFRF8oZ19n
bW9ja19tdXRleCk7CisKKyAgLy8gQ2xlYXJzIHRoZSBPTl9DQUxMKClzIHNldCBvbiB0aGlzIG1v
Y2sgZnVuY3Rpb24uCisgIHZpcnR1YWwgdm9pZCBDbGVhckRlZmF1bHRBY3Rpb25zTG9ja2VkKCkK
KyAgICAgIEdURVNUX0VYQ0xVU0lWRV9MT0NLX1JFUVVJUkVEXyhnX2dtb2NrX211dGV4KSA9IDA7
CisKKyAgLy8gSW4gYWxsIG9mIHRoZSBmb2xsb3dpbmcgVW50eXBlZCogZnVuY3Rpb25zLCBpdCdz
IHRoZSBjYWxsZXIncworICAvLyByZXNwb25zaWJpbGl0eSB0byBndWFyYW50ZWUgdGhlIGNvcnJl
Y3RuZXNzIG9mIHRoZSBhcmd1bWVudHMnCisgIC8vIHR5cGVzLgorCisgIC8vIFBlcmZvcm1zIHRo
ZSBkZWZhdWx0IGFjdGlvbiB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMgYW5kIHJldHVybnMKKyAg
Ly8gdGhlIGFjdGlvbidzIHJlc3VsdC4gIFRoZSBjYWxsIGRlc2NyaXB0aW9uIHN0cmluZyB3aWxs
IGJlIHVzZWQgaW4KKyAgLy8gdGhlIGVycm9yIG1lc3NhZ2UgdG8gZGVzY3JpYmUgdGhlIGNhbGwg
aW4gdGhlIGNhc2UgdGhlIGRlZmF1bHQKKyAgLy8gYWN0aW9uIGZhaWxzLgorICAvLyBMID0gKgor
ICB2aXJ0dWFsIFVudHlwZWRBY3Rpb25SZXN1bHRIb2xkZXJCYXNlKiBVbnR5cGVkUGVyZm9ybURl
ZmF1bHRBY3Rpb24oCisgICAgICBjb25zdCB2b2lkKiB1bnR5cGVkX2FyZ3MsIGNvbnN0IHN0ZDo6
c3RyaW5nJiBjYWxsX2Rlc2NyaXB0aW9uKSBjb25zdCA9IDA7CisKKyAgLy8gUGVyZm9ybXMgdGhl
IGdpdmVuIGFjdGlvbiB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMgYW5kIHJldHVybnMKKyAgLy8g
dGhlIGFjdGlvbidzIHJlc3VsdC4KKyAgLy8gTCA9ICoKKyAgdmlydHVhbCBVbnR5cGVkQWN0aW9u
UmVzdWx0SG9sZGVyQmFzZSogVW50eXBlZFBlcmZvcm1BY3Rpb24oCisgICAgICBjb25zdCB2b2lk
KiB1bnR5cGVkX2FjdGlvbiwKKyAgICAgIGNvbnN0IHZvaWQqIHVudHlwZWRfYXJncykgY29uc3Qg
PSAwOworCisgIC8vIFdyaXRlcyBhIG1lc3NhZ2UgdGhhdCB0aGUgY2FsbCBpcyB1bmludGVyZXN0
aW5nIChpLmUuIG5laXRoZXIKKyAgLy8gZXhwbGljaXRseSBleHBlY3RlZCBub3IgZXhwbGljaXRs
eSB1bmV4cGVjdGVkKSB0byB0aGUgZ2l2ZW4KKyAgLy8gb3N0cmVhbS4KKyAgdmlydHVhbCB2b2lk
IFVudHlwZWREZXNjcmliZVVuaW50ZXJlc3RpbmdDYWxsKAorICAgICAgY29uc3Qgdm9pZCogdW50
eXBlZF9hcmdzLAorICAgICAgOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdAorICAgICAgICAgIEdU
RVNUX0xPQ0tfRVhDTFVERURfKGdfZ21vY2tfbXV0ZXgpID0gMDsKKworICAvLyBSZXR1cm5zIHRo
ZSBleHBlY3RhdGlvbiB0aGF0IG1hdGNoZXMgdGhlIGdpdmVuIGZ1bmN0aW9uIGFyZ3VtZW50cwor
ICAvLyAob3IgTlVMTCBpcyB0aGVyZSdzIG5vIG1hdGNoKTsgd2hlbiBhIG1hdGNoIGlzIGZvdW5k
LAorICAvLyB1bnR5cGVkX2FjdGlvbiBpcyBzZXQgdG8gcG9pbnQgdG8gdGhlIGFjdGlvbiB0aGF0
IHNob3VsZCBiZQorICAvLyBwZXJmb3JtZWQgKG9yIE5VTEwgaWYgdGhlIGFjdGlvbiBpcyAiZG8g
ZGVmYXVsdCIpLCBhbmQKKyAgLy8gaXNfZXhjZXNzaXZlIGlzIG1vZGlmaWVkIHRvIGluZGljYXRl
IHdoZXRoZXIgdGhlIGNhbGwgZXhjZWVkcyB0aGUKKyAgLy8gZXhwZWN0ZWQgbnVtYmVyLgorICB2
aXJ0dWFsIGNvbnN0IEV4cGVjdGF0aW9uQmFzZSogVW50eXBlZEZpbmRNYXRjaGluZ0V4cGVjdGF0
aW9uKAorICAgICAgY29uc3Qgdm9pZCogdW50eXBlZF9hcmdzLAorICAgICAgY29uc3Qgdm9pZCoq
IHVudHlwZWRfYWN0aW9uLCBib29sKiBpc19leGNlc3NpdmUsCisgICAgICA6OnN0ZDo6b3N0cmVh
bSogd2hhdCwgOjpzdGQ6Om9zdHJlYW0qIHdoeSkKKyAgICAgICAgICBHVEVTVF9MT0NLX0VYQ0xV
REVEXyhnX2dtb2NrX211dGV4KSA9IDA7CisKKyAgLy8gUHJpbnRzIHRoZSBnaXZlbiBmdW5jdGlv
biBhcmd1bWVudHMgdG8gdGhlIG9zdHJlYW0uCisgIHZpcnR1YWwgdm9pZCBVbnR5cGVkUHJpbnRB
cmdzKGNvbnN0IHZvaWQqIHVudHlwZWRfYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCA9IDA7CisKKyAgLy8gU2V0cyB0aGUgbW9j
ayBvYmplY3QgdGhpcyBtb2NrIG1ldGhvZCBiZWxvbmdzIHRvLCBhbmQgcmVnaXN0ZXJzCisgIC8v
IHRoaXMgaW5mb3JtYXRpb24gaW4gdGhlIGdsb2JhbCBtb2NrIHJlZ2lzdHJ5LiAgV2lsbCBiZSBj
YWxsZWQKKyAgLy8gd2hlbmV2ZXIgYW4gRVhQRUNUX0NBTEwoKSBvciBPTl9DQUxMKCkgaXMgZXhl
Y3V0ZWQgb24gdGhpcyBtb2NrCisgIC8vIG1ldGhvZC4KKyAgLy8gVE9ETyh3YW5AZ29vZ2xlLmNv
bSk6IHJlbmFtZSB0byBTZXRBbmRSZWdpc3Rlck93bmVyKCkuCisgIHZvaWQgUmVnaXN0ZXJPd25l
cihjb25zdCB2b2lkKiBtb2NrX29iaikKKyAgICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKGdfZ21v
Y2tfbXV0ZXgpOworCisgIC8vIFNldHMgdGhlIG1vY2sgb2JqZWN0IHRoaXMgbW9jayBtZXRob2Qg
YmVsb25ncyB0bywgYW5kIHNldHMgdGhlCisgIC8vIG5hbWUgb2YgdGhlIG1vY2sgZnVuY3Rpb24u
ICBXaWxsIGJlIGNhbGxlZCB1cG9uIGVhY2ggaW52b2NhdGlvbgorICAvLyBvZiB0aGlzIG1vY2sg
ZnVuY3Rpb24uCisgIHZvaWQgU2V0T3duZXJBbmROYW1lKGNvbnN0IHZvaWQqIG1vY2tfb2JqLCBj
b25zdCBjaGFyKiBuYW1lKQorICAgICAgR1RFU1RfTE9DS19FWENMVURFRF8oZ19nbW9ja19tdXRl
eCk7CisKKyAgLy8gUmV0dXJucyB0aGUgbW9jayBvYmplY3QgdGhpcyBtb2NrIG1ldGhvZCBiZWxv
bmdzIHRvLiAgTXVzdCBiZQorICAvLyBjYWxsZWQgYWZ0ZXIgUmVnaXN0ZXJPd25lcigpIG9yIFNl
dE93bmVyQW5kTmFtZSgpIGhhcyBiZWVuCisgIC8vIGNhbGxlZC4KKyAgY29uc3Qgdm9pZCogTW9j
a09iamVjdCgpIGNvbnN0CisgICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhnX2dtb2NrX211dGV4
KTsKKworICAvLyBSZXR1cm5zIHRoZSBuYW1lIG9mIHRoaXMgbW9jayBtZXRob2QuICBNdXN0IGJl
IGNhbGxlZCBhZnRlcgorICAvLyBTZXRPd25lckFuZE5hbWUoKSBoYXMgYmVlbiBjYWxsZWQuCisg
IGNvbnN0IGNoYXIqIE5hbWUoKSBjb25zdAorICAgICAgR1RFU1RfTE9DS19FWENMVURFRF8oZ19n
bW9ja19tdXRleCk7CisKKyAgLy8gUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludm9raW5nIHRoaXMg
bW9jayBmdW5jdGlvbiB3aXRoIHRoZSBnaXZlbgorICAvLyBhcmd1bWVudHMuICBUaGlzIGZ1bmN0
aW9uIGNhbiBiZSBzYWZlbHkgY2FsbGVkIGZyb20gbXVsdGlwbGUKKyAgLy8gdGhyZWFkcyBjb25j
dXJyZW50bHkuICBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBkZWxldGluZyB0aGUKKyAg
Ly8gcmVzdWx0LgorICBVbnR5cGVkQWN0aW9uUmVzdWx0SG9sZGVyQmFzZSogVW50eXBlZEludm9r
ZVdpdGgoCisgICAgICBjb25zdCB2b2lkKiB1bnR5cGVkX2FyZ3MpCisgICAgICAgICAgR1RFU1Rf
TE9DS19FWENMVURFRF8oZ19nbW9ja19tdXRleCk7CisKKyBwcm90ZWN0ZWQ6CisgIHR5cGVkZWYg
c3RkOjp2ZWN0b3I8Y29uc3Qgdm9pZCo+IFVudHlwZWRPbkNhbGxTcGVjczsKKworICB0eXBlZGVm
IHN0ZDo6dmVjdG9yPGludGVybmFsOjpsaW5rZWRfcHRyPEV4cGVjdGF0aW9uQmFzZT4gPgorICBV
bnR5cGVkRXhwZWN0YXRpb25zOworCisgIC8vIFJldHVybnMgYW4gRXhwZWN0YXRpb24gb2JqZWN0
IHRoYXQgcmVmZXJlbmNlcyBhbmQgY28tb3ducyBleHAsCisgIC8vIHdoaWNoIG11c3QgYmUgYW4g
ZXhwZWN0YXRpb24gb24gdGhpcyBtb2NrIGZ1bmN0aW9uLgorICBFeHBlY3RhdGlvbiBHZXRIYW5k
bGVPZihFeHBlY3RhdGlvbkJhc2UqIGV4cCk7CisKKyAgLy8gQWRkcmVzcyBvZiB0aGUgbW9jayBv
YmplY3QgdGhpcyBtb2NrIG1ldGhvZCBiZWxvbmdzIHRvLiAgT25seQorICAvLyB2YWxpZCBhZnRl
ciB0aGlzIG1vY2sgbWV0aG9kIGhhcyBiZWVuIGNhbGxlZCBvcgorICAvLyBPTl9DQUxML0VYUEVD
VF9DQUxMIGhhcyBiZWVuIGludm9rZWQgb24gaXQuCisgIGNvbnN0IHZvaWQqIG1vY2tfb2JqXzsg
IC8vIFByb3RlY3RlZCBieSBnX2dtb2NrX211dGV4LgorCisgIC8vIE5hbWUgb2YgdGhlIGZ1bmN0
aW9uIGJlaW5nIG1vY2tlZC4gIE9ubHkgdmFsaWQgYWZ0ZXIgdGhpcyBtb2NrCisgIC8vIG1ldGhv
ZCBoYXMgYmVlbiBjYWxsZWQuCisgIGNvbnN0IGNoYXIqIG5hbWVfOyAgLy8gUHJvdGVjdGVkIGJ5
IGdfZ21vY2tfbXV0ZXguCisKKyAgLy8gQWxsIGRlZmF1bHQgYWN0aW9uIHNwZWNzIGZvciB0aGlz
IGZ1bmN0aW9uIG1vY2tlci4KKyAgVW50eXBlZE9uQ2FsbFNwZWNzIHVudHlwZWRfb25fY2FsbF9z
cGVjc187CisKKyAgLy8gQWxsIGV4cGVjdGF0aW9ucyBmb3IgdGhpcyBmdW5jdGlvbiBtb2NrZXIu
CisgIFVudHlwZWRFeHBlY3RhdGlvbnMgdW50eXBlZF9leHBlY3RhdGlvbnNfOworfTsgIC8vIGNs
YXNzIFVudHlwZWRGdW5jdGlvbk1vY2tlckJhc2UKKworLy8gVW50eXBlZCBiYXNlIGNsYXNzIGZv
ciBPbkNhbGxTcGVjPEY+LgorY2xhc3MgVW50eXBlZE9uQ2FsbFNwZWNCYXNlIHsKKyBwdWJsaWM6
CisgIC8vIFRoZSBhcmd1bWVudHMgYXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgT05fQ0FMTCgpIHN0
YXRlbWVudC4KKyAgVW50eXBlZE9uQ2FsbFNwZWNCYXNlKGNvbnN0IGNoYXIqIGFfZmlsZSwgaW50
IGFfbGluZSkKKyAgICAgIDogZmlsZV8oYV9maWxlKSwgbGluZV8oYV9saW5lKSwgbGFzdF9jbGF1
c2VfKGtOb25lKSB7fQorCisgIC8vIFdoZXJlIGluIHRoZSBzb3VyY2UgZmlsZSB3YXMgdGhlIGRl
ZmF1bHQgYWN0aW9uIHNwZWMgZGVmaW5lZD8KKyAgY29uc3QgY2hhciogZmlsZSgpIGNvbnN0IHsg
cmV0dXJuIGZpbGVfOyB9CisgIGludCBsaW5lKCkgY29uc3QgeyByZXR1cm4gbGluZV87IH0KKwor
IHByb3RlY3RlZDoKKyAgLy8gR2l2ZXMgZWFjaCBjbGF1c2UgaW4gdGhlIE9OX0NBTEwoKSBzdGF0
ZW1lbnQgYSBuYW1lLgorICBlbnVtIENsYXVzZSB7CisgICAgLy8gRG8gbm90IGNoYW5nZSB0aGUg
b3JkZXIgb2YgdGhlIGVudW0gbWVtYmVycyEgIFRoZSBydW4tdGltZQorICAgIC8vIHN5bnRheCBj
aGVja2luZyByZWxpZXMgb24gaXQuCisgICAga05vbmUsCisgICAga1dpdGgsCisgICAga1dpbGxC
eURlZmF1bHQKKyAgfTsKKworICAvLyBBc3NlcnRzIHRoYXQgdGhlIE9OX0NBTEwoKSBzdGF0ZW1l
bnQgaGFzIGEgY2VydGFpbiBwcm9wZXJ0eS4KKyAgdm9pZCBBc3NlcnRTcGVjUHJvcGVydHkoYm9v
bCBwcm9wZXJ0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcm
IGZhaWx1cmVfbWVzc2FnZSkgY29uc3QgeworICAgIEFzc2VydChwcm9wZXJ0eSwgZmlsZV8sIGxp
bmVfLCBmYWlsdXJlX21lc3NhZ2UpOworICB9CisKKyAgLy8gRXhwZWN0cyB0aGF0IHRoZSBPTl9D
QUxMKCkgc3RhdGVtZW50IGhhcyBhIGNlcnRhaW4gcHJvcGVydHkuCisgIHZvaWQgRXhwZWN0U3Bl
Y1Byb3BlcnR5KGJvb2wgcHJvcGVydHksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiBmYWlsdXJlX21lc3NhZ2UpIGNvbnN0IHsKKyAgICBFeHBlY3QocHJvcGVy
dHksIGZpbGVfLCBsaW5lXywgZmFpbHVyZV9tZXNzYWdlKTsKKyAgfQorCisgIGNvbnN0IGNoYXIq
IGZpbGVfOworICBpbnQgbGluZV87CisKKyAgLy8gVGhlIGxhc3QgY2xhdXNlIGluIHRoZSBPTl9D
QUxMKCkgc3RhdGVtZW50IGFzIHNlZW4gc28gZmFyLgorICAvLyBJbml0aWFsbHkga05vbmUgYW5k
IGNoYW5nZXMgYXMgdGhlIHN0YXRlbWVudCBpcyBwYXJzZWQuCisgIENsYXVzZSBsYXN0X2NsYXVz
ZV87Cit9OyAgLy8gY2xhc3MgVW50eXBlZE9uQ2FsbFNwZWNCYXNlCisKKy8vIFRoaXMgdGVtcGxh
dGUgY2xhc3MgaW1wbGVtZW50cyBhbiBPTl9DQUxMIHNwZWMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
Rj4KK2NsYXNzIE9uQ2FsbFNwZWMgOiBwdWJsaWMgVW50eXBlZE9uQ2FsbFNwZWNCYXNlIHsKKyBw
dWJsaWM6CisgIHR5cGVkZWYgdHlwZW5hbWUgRnVuY3Rpb248Rj46OkFyZ3VtZW50VHVwbGUgQXJn
dW1lbnRUdXBsZTsKKyAgdHlwZWRlZiB0eXBlbmFtZSBGdW5jdGlvbjxGPjo6QXJndW1lbnRNYXRj
aGVyVHVwbGUgQXJndW1lbnRNYXRjaGVyVHVwbGU7CisKKyAgLy8gQ29uc3RydWN0cyBhbiBPbkNh
bGxTcGVjIG9iamVjdCBmcm9tIHRoZSBpbmZvcm1hdGlvbiBpbnNpZGUKKyAgLy8gdGhlIHBhcmVu
dGhlc2lzIG9mIGFuIE9OX0NBTEwoKSBzdGF0ZW1lbnQuCisgIE9uQ2FsbFNwZWMoY29uc3QgY2hh
ciogYV9maWxlLCBpbnQgYV9saW5lLAorICAgICAgICAgICAgIGNvbnN0IEFyZ3VtZW50TWF0Y2hl
clR1cGxlJiBtYXRjaGVycykKKyAgICAgIDogVW50eXBlZE9uQ2FsbFNwZWNCYXNlKGFfZmlsZSwg
YV9saW5lKSwKKyAgICAgICAgbWF0Y2hlcnNfKG1hdGNoZXJzKSwKKyAgICAgICAgLy8gQnkgZGVm
YXVsdCwgZXh0cmFfbWF0Y2hlcl8gc2hvdWxkIG1hdGNoIGFueXRoaW5nLiAgSG93ZXZlciwKKyAg
ICAgICAgLy8gd2UgY2Fubm90IGluaXRpYWxpemUgaXQgd2l0aCBfIGFzIHRoYXQgdHJpZ2dlcnMg
YSBjb21waWxlcgorICAgICAgICAvLyBidWcgaW4gU3ltYmlhbidzIEMrKyBjb21waWxlciAoY2Fu
bm90IGRlY2lkZSBiZXR3ZWVuIHR3bworICAgICAgICAvLyBvdmVybG9hZGVkIGNvbnN0cnVjdG9y
cyBvZiBNYXRjaGVyPGNvbnN0IEFyZ3VtZW50VHVwbGUmPikuCisgICAgICAgIGV4dHJhX21hdGNo
ZXJfKEE8Y29uc3QgQXJndW1lbnRUdXBsZSY+KCkpIHsKKyAgfQorCisgIC8vIEltcGxlbWVudHMg
dGhlIC5XaXRoKCkgY2xhdXNlLgorICBPbkNhbGxTcGVjJiBXaXRoKGNvbnN0IE1hdGNoZXI8Y29u
c3QgQXJndW1lbnRUdXBsZSY+JiBtKSB7CisgICAgLy8gTWFrZXMgc3VyZSB0aGlzIGlzIGNhbGxl
ZCBhdCBtb3N0IG9uY2UuCisgICAgRXhwZWN0U3BlY1Byb3BlcnR5KGxhc3RfY2xhdXNlXyA8IGtX
aXRoLAorICAgICAgICAgICAgICAgICAgICAgICAiLldpdGgoKSBjYW5ub3QgYXBwZWFyICIKKyAg
ICAgICAgICAgICAgICAgICAgICAgIm1vcmUgdGhhbiBvbmNlIGluIGFuIE9OX0NBTEwoKS4iKTsK
KyAgICBsYXN0X2NsYXVzZV8gPSBrV2l0aDsKKworICAgIGV4dHJhX21hdGNoZXJfID0gbTsKKyAg
ICByZXR1cm4gKnRoaXM7CisgIH0KKworICAvLyBJbXBsZW1lbnRzIHRoZSAuV2lsbEJ5RGVmYXVs
dCgpIGNsYXVzZS4KKyAgT25DYWxsU3BlYyYgV2lsbEJ5RGVmYXVsdChjb25zdCBBY3Rpb248Rj4m
IGFjdGlvbikgeworICAgIEV4cGVjdFNwZWNQcm9wZXJ0eShsYXN0X2NsYXVzZV8gPCBrV2lsbEJ5
RGVmYXVsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIi5XaWxsQnlEZWZhdWx0KCkgbXVzdCBh
cHBlYXIgIgorICAgICAgICAgICAgICAgICAgICAgICAiZXhhY3RseSBvbmNlIGluIGFuIE9OX0NB
TEwoKS4iKTsKKyAgICBsYXN0X2NsYXVzZV8gPSBrV2lsbEJ5RGVmYXVsdDsKKworICAgIEV4cGVj
dFNwZWNQcm9wZXJ0eSghYWN0aW9uLklzRG9EZWZhdWx0KCksCisgICAgICAgICAgICAgICAgICAg
ICAgICJEb0RlZmF1bHQoKSBjYW5ub3QgYmUgdXNlZCBpbiBPTl9DQUxMKCkuIik7CisgICAgYWN0
aW9uXyA9IGFjdGlvbjsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKworICAvLyBSZXR1cm5zIHRy
dWUgaWZmIHRoZSBnaXZlbiBhcmd1bWVudHMgbWF0Y2ggdGhlIG1hdGNoZXJzLgorICBib29sIE1h
dGNoZXMoY29uc3QgQXJndW1lbnRUdXBsZSYgYXJncykgY29uc3QgeworICAgIHJldHVybiBUdXBs
ZU1hdGNoZXMobWF0Y2hlcnNfLCBhcmdzKSAmJiBleHRyYV9tYXRjaGVyXy5NYXRjaGVzKGFyZ3Mp
OworICB9CisKKyAgLy8gUmV0dXJucyB0aGUgYWN0aW9uIHNwZWNpZmllZCBieSB0aGUgdXNlci4K
KyAgY29uc3QgQWN0aW9uPEY+JiBHZXRBY3Rpb24oKSBjb25zdCB7CisgICAgQXNzZXJ0U3BlY1By
b3BlcnR5KGxhc3RfY2xhdXNlXyA9PSBrV2lsbEJ5RGVmYXVsdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIi5XaWxsQnlEZWZhdWx0KCkgbXVzdCBhcHBlYXIgZXhhY3RseSAiCisgICAgICAgICAg
ICAgICAgICAgICAgICJvbmNlIGluIGFuIE9OX0NBTEwoKS4iKTsKKyAgICByZXR1cm4gYWN0aW9u
XzsKKyAgfQorCisgcHJpdmF0ZToKKyAgLy8gVGhlIGluZm9ybWF0aW9uIGluIHN0YXRlbWVudAor
ICAvLworICAvLyAgIE9OX0NBTEwobW9ja19vYmplY3QsIE1ldGhvZChtYXRjaGVycykpCisgIC8v
ICAgICAgIC5XaXRoKG11bHRpLWFyZ3VtZW50LW1hdGNoZXIpCisgIC8vICAgICAgIC5XaWxsQnlE
ZWZhdWx0KGFjdGlvbik7CisgIC8vCisgIC8vIGlzIHJlY29yZGVkIGluIHRoZSBkYXRhIG1lbWJl
cnMgbGlrZSB0aGlzOgorICAvLworICAvLyAgIHNvdXJjZSBmaWxlIHRoYXQgY29udGFpbnMgdGhl
IHN0YXRlbWVudCA9PiBmaWxlXworICAvLyAgIGxpbmUgbnVtYmVyIG9mIHRoZSBzdGF0ZW1lbnQg
ICAgICAgICAgICA9PiBsaW5lXworICAvLyAgIG1hdGNoZXJzICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9PiBtYXRjaGVyc18KKyAgLy8gICBtdWx0aS1hcmd1bWVudC1tYXRjaGVyICAg
ICAgICAgICAgICAgICAgPT4gZXh0cmFfbWF0Y2hlcl8KKyAgLy8gICBhY3Rpb24gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPT4gYWN0aW9uXworICBBcmd1bWVudE1hdGNoZXJUdXBs
ZSBtYXRjaGVyc187CisgIE1hdGNoZXI8Y29uc3QgQXJndW1lbnRUdXBsZSY+IGV4dHJhX21hdGNo
ZXJfOworICBBY3Rpb248Rj4gYWN0aW9uXzsKK307ICAvLyBjbGFzcyBPbkNhbGxTcGVjCisKKy8v
IFBvc3NpYmxlIHJlYWN0aW9ucyBvbiB1bmludGVyZXN0aW5nIGNhbGxzLgorZW51bSBDYWxsUmVh
Y3Rpb24geworICBrQWxsb3csCisgIGtXYXJuLAorICBrRmFpbCwKKyAga0RlZmF1bHQgPSBrV2Fy
biAgLy8gQnkgZGVmYXVsdCwgd2FybiBhYm91dCB1bmludGVyZXN0aW5nIGNhbGxzLgorfTsKKwor
fSAgLy8gbmFtZXNwYWNlIGludGVybmFsCisKKy8vIFV0aWxpdGllcyBmb3IgbWFuaXB1bGF0aW5n
IG1vY2sgb2JqZWN0cy4KK2NsYXNzIEdURVNUX0FQSV8gTW9jayB7CisgcHVibGljOgorICAvLyBU
aGUgZm9sbG93aW5nIHB1YmxpYyBtZXRob2RzIGNhbiBiZSBjYWxsZWQgY29uY3VycmVudGx5Lgor
CisgIC8vIFRlbGxzIEdvb2dsZSBNb2NrIHRvIGlnbm9yZSBtb2NrX29iaiB3aGVuIGNoZWNraW5n
IGZvciBsZWFrZWQKKyAgLy8gbW9jayBvYmplY3RzLgorICBzdGF0aWMgdm9pZCBBbGxvd0xlYWso
Y29uc3Qgdm9pZCogbW9ja19vYmopCisgICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhpbnRlcm5h
bDo6Z19nbW9ja19tdXRleCk7CisKKyAgLy8gVmVyaWZpZXMgYW5kIGNsZWFycyBhbGwgZXhwZWN0
YXRpb25zIG9uIHRoZSBnaXZlbiBtb2NrIG9iamVjdC4KKyAgLy8gSWYgdGhlIGV4cGVjdGF0aW9u
cyBhcmVuJ3Qgc2F0aXNmaWVkLCBnZW5lcmF0ZXMgb25lIG9yIG1vcmUKKyAgLy8gR29vZ2xlIFRl
c3Qgbm9uLWZhdGFsIGZhaWx1cmVzIGFuZCByZXR1cm5zIGZhbHNlLgorICBzdGF0aWMgYm9vbCBW
ZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucyh2b2lkKiBtb2NrX29iaikKKyAgICAgIEdURVNUX0xP
Q0tfRVhDTFVERURfKGludGVybmFsOjpnX2dtb2NrX211dGV4KTsKKworICAvLyBWZXJpZmllcyBh
bGwgZXhwZWN0YXRpb25zIG9uIHRoZSBnaXZlbiBtb2NrIG9iamVjdCBhbmQgY2xlYXJzIGl0cwor
ICAvLyBkZWZhdWx0IGFjdGlvbnMgYW5kIGV4cGVjdGF0aW9ucy4gIFJldHVybnMgdHJ1ZSBpZmYg
dGhlCisgIC8vIHZlcmlmaWNhdGlvbiB3YXMgc3VjY2Vzc2Z1bC4KKyAgc3RhdGljIGJvb2wgVmVy
aWZ5QW5kQ2xlYXIodm9pZCogbW9ja19vYmopCisgICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhp
bnRlcm5hbDo6Z19nbW9ja19tdXRleCk7CisKKyBwcml2YXRlOgorICBmcmllbmQgY2xhc3MgaW50
ZXJuYWw6OlVudHlwZWRGdW5jdGlvbk1vY2tlckJhc2U7CisKKyAgLy8gTmVlZGVkIGZvciBhIGZ1
bmN0aW9uIG1vY2tlciB0byByZWdpc3RlciBpdHNlbGYgKHNvIHRoYXQgd2Uga25vdworICAvLyBo
b3cgdG8gY2xlYXIgYSBtb2NrIG9iamVjdCkuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBGPgorICBm
cmllbmQgY2xhc3MgaW50ZXJuYWw6OkZ1bmN0aW9uTW9ja2VyQmFzZTsKKworICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgTT4KKyAgZnJpZW5kIGNsYXNzIE5pY2VNb2NrOworCisgIHRlbXBsYXRlIDx0eXBl
bmFtZSBNPgorICBmcmllbmQgY2xhc3MgTmFnZ3lNb2NrOworCisgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBNPgorICBmcmllbmQgY2xhc3MgU3RyaWN0TW9jazsKKworICAvLyBUZWxscyBHb29nbGUgTW9j
ayB0byBhbGxvdyB1bmludGVyZXN0aW5nIGNhbGxzIG9uIHRoZSBnaXZlbiBtb2NrCisgIC8vIG9i
amVjdC4KKyAgc3RhdGljIHZvaWQgQWxsb3dVbmludGVyZXN0aW5nQ2FsbHMoY29uc3Qgdm9pZCog
bW9ja19vYmopCisgICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhpbnRlcm5hbDo6Z19nbW9ja19t
dXRleCk7CisKKyAgLy8gVGVsbHMgR29vZ2xlIE1vY2sgdG8gd2FybiB0aGUgdXNlciBhYm91dCB1
bmludGVyZXN0aW5nIGNhbGxzIG9uCisgIC8vIHRoZSBnaXZlbiBtb2NrIG9iamVjdC4KKyAgc3Rh
dGljIHZvaWQgV2FyblVuaW50ZXJlc3RpbmdDYWxscyhjb25zdCB2b2lkKiBtb2NrX29iaikKKyAg
ICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKGludGVybmFsOjpnX2dtb2NrX211dGV4KTsKKworICAv
LyBUZWxscyBHb29nbGUgTW9jayB0byBmYWlsIHVuaW50ZXJlc3RpbmcgY2FsbHMgb24gdGhlIGdp
dmVuIG1vY2sKKyAgLy8gb2JqZWN0LgorICBzdGF0aWMgdm9pZCBGYWlsVW5pbnRlcmVzdGluZ0Nh
bGxzKGNvbnN0IHZvaWQqIG1vY2tfb2JqKQorICAgICAgR1RFU1RfTE9DS19FWENMVURFRF8oaW50
ZXJuYWw6OmdfZ21vY2tfbXV0ZXgpOworCisgIC8vIFRlbGxzIEdvb2dsZSBNb2NrIHRoZSBnaXZl
biBtb2NrIG9iamVjdCBpcyBiZWluZyBkZXN0cm95ZWQgYW5kCisgIC8vIGl0cyBlbnRyeSBpbiB0
aGUgY2FsbC1yZWFjdGlvbiB0YWJsZSBzaG91bGQgYmUgcmVtb3ZlZC4KKyAgc3RhdGljIHZvaWQg
VW5yZWdpc3RlckNhbGxSZWFjdGlvbihjb25zdCB2b2lkKiBtb2NrX29iaikKKyAgICAgIEdURVNU
X0xPQ0tfRVhDTFVERURfKGludGVybmFsOjpnX2dtb2NrX211dGV4KTsKKworICAvLyBSZXR1cm5z
IHRoZSByZWFjdGlvbiBHb29nbGUgTW9jayB3aWxsIGhhdmUgb24gdW5pbnRlcmVzdGluZyBjYWxs
cworICAvLyBtYWRlIG9uIHRoZSBnaXZlbiBtb2NrIG9iamVjdC4KKyAgc3RhdGljIGludGVybmFs
OjpDYWxsUmVhY3Rpb24gR2V0UmVhY3Rpb25PblVuaW50ZXJlc3RpbmdDYWxscygKKyAgICAgIGNv
bnN0IHZvaWQqIG1vY2tfb2JqKQorICAgICAgICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKGludGVy
bmFsOjpnX2dtb2NrX211dGV4KTsKKworICAvLyBWZXJpZmllcyB0aGF0IGFsbCBleHBlY3RhdGlv
bnMgb24gdGhlIGdpdmVuIG1vY2sgb2JqZWN0IGhhdmUgYmVlbgorICAvLyBzYXRpc2ZpZWQuICBS
ZXBvcnRzIG9uZSBvciBtb3JlIEdvb2dsZSBUZXN0IG5vbi1mYXRhbCBmYWlsdXJlcworICAvLyBh
bmQgcmV0dXJucyBmYWxzZSBpZiBub3QuCisgIHN0YXRpYyBib29sIFZlcmlmeUFuZENsZWFyRXhw
ZWN0YXRpb25zTG9ja2VkKHZvaWQqIG1vY2tfb2JqKQorICAgICAgR1RFU1RfRVhDTFVTSVZFX0xP
Q0tfUkVRVUlSRURfKGludGVybmFsOjpnX2dtb2NrX211dGV4KTsKKworICAvLyBDbGVhcnMgYWxs
IE9OX0NBTEwoKXMgc2V0IG9uIHRoZSBnaXZlbiBtb2NrIG9iamVjdC4KKyAgc3RhdGljIHZvaWQg
Q2xlYXJEZWZhdWx0QWN0aW9uc0xvY2tlZCh2b2lkKiBtb2NrX29iaikKKyAgICAgIEdURVNUX0VY
Q0xVU0lWRV9MT0NLX1JFUVVJUkVEXyhpbnRlcm5hbDo6Z19nbW9ja19tdXRleCk7CisKKyAgLy8g
UmVnaXN0ZXJzIGEgbW9jayBvYmplY3QgYW5kIGEgbW9jayBtZXRob2QgaXQgb3ducy4KKyAgc3Rh
dGljIHZvaWQgUmVnaXN0ZXIoCisgICAgICBjb25zdCB2b2lkKiBtb2NrX29iaiwKKyAgICAgIGlu
dGVybmFsOjpVbnR5cGVkRnVuY3Rpb25Nb2NrZXJCYXNlKiBtb2NrZXIpCisgICAgICAgICAgR1RF
U1RfTE9DS19FWENMVURFRF8oaW50ZXJuYWw6OmdfZ21vY2tfbXV0ZXgpOworCisgIC8vIFRlbGxz
IEdvb2dsZSBNb2NrIHdoZXJlIGluIHRoZSBzb3VyY2UgY29kZSBtb2NrX29iaiBpcyB1c2VkIGlu
IGFuCisgIC8vIE9OX0NBTEwgb3IgRVhQRUNUX0NBTEwuICBJbiBjYXNlIG1vY2tfb2JqIGlzIGxl
YWtlZCwgdGhpcworICAvLyBpbmZvcm1hdGlvbiBoZWxwcyB0aGUgdXNlciBpZGVudGlmeSB3aGlj
aCBvYmplY3QgaXQgaXMuCisgIHN0YXRpYyB2b2lkIFJlZ2lzdGVyVXNlQnlPbkNhbGxPckV4cGVj
dENhbGwoCisgICAgICBjb25zdCB2b2lkKiBtb2NrX29iaiwgY29uc3QgY2hhciogZmlsZSwgaW50
IGxpbmUpCisgICAgICAgICAgR1RFU1RfTE9DS19FWENMVURFRF8oaW50ZXJuYWw6OmdfZ21vY2tf
bXV0ZXgpOworCisgIC8vIFVucmVnaXN0ZXJzIGEgbW9jayBtZXRob2Q7IHJlbW92ZXMgdGhlIG93
bmluZyBtb2NrIG9iamVjdCBmcm9tCisgIC8vIHRoZSByZWdpc3RyeSB3aGVuIHRoZSBsYXN0IG1v
Y2sgbWV0aG9kIGFzc29jaWF0ZWQgd2l0aCBpdCBoYXMKKyAgLy8gYmVlbiB1bnJlZ2lzdGVyZWQu
ICBUaGlzIGlzIGNhbGxlZCBvbmx5IGluIHRoZSBkZXN0cnVjdG9yIG9mCisgIC8vIEZ1bmN0aW9u
TW9ja2VyQmFzZS4KKyAgc3RhdGljIHZvaWQgVW5yZWdpc3RlckxvY2tlZChpbnRlcm5hbDo6VW50
eXBlZEZ1bmN0aW9uTW9ja2VyQmFzZSogbW9ja2VyKQorICAgICAgR1RFU1RfRVhDTFVTSVZFX0xP
Q0tfUkVRVUlSRURfKGludGVybmFsOjpnX2dtb2NrX211dGV4KTsKK307ICAvLyBjbGFzcyBNb2Nr
CisKKy8vIEFuIGFic3RyYWN0IGhhbmRsZSBvZiBhbiBleHBlY3RhdGlvbi4gIFVzZWZ1bCBpbiB0
aGUgLkFmdGVyKCkKKy8vIGNsYXVzZSBvZiBFWFBFQ1RfQ0FMTCgpIGZvciBzZXR0aW5nIHRoZSAo
cGFydGlhbCkgb3JkZXIgb2YKKy8vIGV4cGVjdGF0aW9ucy4gIFRoZSBzeW50YXg6CisvLworLy8g
ICBFeHBlY3RhdGlvbiBlMSA9IEVYUEVDVF9DQUxMKC4uLikuLi47CisvLyAgIEVYUEVDVF9DQUxM
KC4uLikuQWZ0ZXIoZTEpLi4uOworLy8KKy8vIHNldHMgdHdvIGV4cGVjdGF0aW9ucyB3aGVyZSB0
aGUgbGF0dGVyIGNhbiBvbmx5IGJlIG1hdGNoZWQgYWZ0ZXIKKy8vIHRoZSBmb3JtZXIgaGFzIGJl
ZW4gc2F0aXNmaWVkLgorLy8KKy8vIE5vdGVzOgorLy8gICAtIFRoaXMgY2xhc3MgaXMgY29weWFi
bGUgYW5kIGhhcyB2YWx1ZSBzZW1hbnRpY3MuCisvLyAgIC0gQ29uc3RuZXNzIGlzIHNoYWxsb3c6
IGEgY29uc3QgRXhwZWN0YXRpb24gb2JqZWN0IGl0c2VsZiBjYW5ub3QKKy8vICAgICBiZSBtb2Rp
ZmllZCwgYnV0IHRoZSBtdXRhYmxlIG1ldGhvZHMgb2YgdGhlIEV4cGVjdGF0aW9uQmFzZQorLy8g
ICAgIG9iamVjdCBpdCByZWZlcmVuY2VzIGNhbiBiZSBjYWxsZWQgdmlhIGV4cGVjdGF0aW9uX2Jh
c2UoKS4KKy8vICAgLSBUaGUgY29uc3RydWN0b3JzIGFuZCBkZXN0cnVjdG9yIGFyZSBkZWZpbmVk
IG91dC1vZi1saW5lIGJlY2F1c2UKKy8vICAgICB0aGUgU3ltYmlhbiBXSU5TQ1cgY29tcGlsZXIg
d2FudHMgdG8gb3RoZXJ3aXNlIGluc3RhbnRpYXRlIHRoZW0KKy8vICAgICB3aGVuIGl0IHNlZXMg
dGhpcyBjbGFzcyBkZWZpbml0aW9uLCBhdCB3aGljaCBwb2ludCBpdCBkb2Vzbid0IGhhdmUKKy8v
ICAgICBFeHBlY3RhdGlvbkJhc2UgYXZhaWxhYmxlIHlldCwgbGVhZGluZyB0byBpbmNvcnJlY3Qg
ZGVzdHJ1Y3Rpb24KKy8vICAgICBpbiB0aGUgbGlua2VkX3B0ciAob3IgY29tcGlsYXRpb24gZXJy
b3JzIGlmIHVzaW5nIGEgY2hlY2tpbmcKKy8vICAgICBsaW5rZWRfcHRyKS4KK2NsYXNzIEdURVNU
X0FQSV8gRXhwZWN0YXRpb24geworIHB1YmxpYzoKKyAgLy8gQ29uc3RydWN0cyBhIG51bGwgb2Jq
ZWN0IHRoYXQgZG9lc24ndCByZWZlcmVuY2UgYW55IGV4cGVjdGF0aW9uLgorICBFeHBlY3RhdGlv
bigpOworCisgIH5FeHBlY3RhdGlvbigpOworCisgIC8vIFRoaXMgc2luZ2xlLWFyZ3VtZW50IGN0
b3IgbXVzdCBub3QgYmUgZXhwbGljaXQsIGluIG9yZGVyIHRvIHN1cHBvcnQgdGhlCisgIC8vICAg
RXhwZWN0YXRpb24gZSA9IEVYUEVDVF9DQUxMKC4uLik7CisgIC8vIHN5bnRheC4KKyAgLy8KKyAg
Ly8gQSBUeXBlZEV4cGVjdGF0aW9uIG9iamVjdCBzdG9yZXMgaXRzIHByZS1yZXF1aXNpdGVzIGFz
CisgIC8vIEV4cGVjdGF0aW9uIG9iamVjdHMsIGFuZCBuZWVkcyB0byBjYWxsIHRoZSBub24tY29u
c3QgUmV0aXJlKCkKKyAgLy8gbWV0aG9kIG9uIHRoZSBFeHBlY3RhdGlvbkJhc2Ugb2JqZWN0cyB0
aGV5IHJlZmVyZW5jZS4gIFRoZXJlZm9yZQorICAvLyBFeHBlY3RhdGlvbiBtdXN0IHJlY2VpdmUg
YSAqbm9uLWNvbnN0KiByZWZlcmVuY2UgdG8gdGhlCisgIC8vIEV4cGVjdGF0aW9uQmFzZSBvYmpl
Y3QuCisgIEV4cGVjdGF0aW9uKGludGVybmFsOjpFeHBlY3RhdGlvbkJhc2UmIGV4cCk7ICAvLyBO
T0xJTlQKKworICAvLyBUaGUgY29tcGlsZXItZ2VuZXJhdGVkIGNvcHkgY3RvciBhbmQgb3BlcmF0
b3I9IHdvcmsgZXhhY3RseSBhcworICAvLyBpbnRlbmRlZCwgc28gd2UgZG9uJ3QgbmVlZCB0byBk
ZWZpbmUgb3VyIG93bi4KKworICAvLyBSZXR1cm5zIHRydWUgaWZmIHJocyByZWZlcmVuY2VzIHRo
ZSBzYW1lIGV4cGVjdGF0aW9uIGFzIHRoaXMgb2JqZWN0IGRvZXMuCisgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBFeHBlY3RhdGlvbiYgcmhzKSBjb25zdCB7CisgICAgcmV0dXJuIGV4cGVjdGF0aW9u
X2Jhc2VfID09IHJocy5leHBlY3RhdGlvbl9iYXNlXzsKKyAgfQorCisgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBFeHBlY3RhdGlvbiYgcmhzKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IHJocyk7
IH0KKworIHByaXZhdGU6CisgIGZyaWVuZCBjbGFzcyBFeHBlY3RhdGlvblNldDsKKyAgZnJpZW5k
IGNsYXNzIFNlcXVlbmNlOworICBmcmllbmQgY2xhc3MgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RXhw
ZWN0YXRpb25CYXNlOworICBmcmllbmQgY2xhc3MgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VW50eXBl
ZEZ1bmN0aW9uTW9ja2VyQmFzZTsKKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRj4KKyAgZnJpZW5k
IGNsYXNzIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uTW9ja2VyQmFzZTsKKworICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgRj4KKyAgZnJpZW5kIGNsYXNzIDo6dGVzdGluZzo6aW50ZXJuYWw6OlR5
cGVkRXhwZWN0YXRpb247CisKKyAgLy8gVGhpcyBjb21wYXJhdG9yIGlzIG5lZWRlZCBmb3IgcHV0
dGluZyBFeHBlY3RhdGlvbiBvYmplY3RzIGludG8gYSBzZXQuCisgIGNsYXNzIExlc3MgeworICAg
cHVibGljOgorICAgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBFeHBlY3RhdGlvbiYgbGhzLCBjb25z
dCBFeHBlY3RhdGlvbiYgcmhzKSBjb25zdCB7CisgICAgICByZXR1cm4gbGhzLmV4cGVjdGF0aW9u
X2Jhc2VfLmdldCgpIDwgcmhzLmV4cGVjdGF0aW9uX2Jhc2VfLmdldCgpOworICAgIH0KKyAgfTsK
KworICB0eXBlZGVmIDo6c3RkOjpzZXQ8RXhwZWN0YXRpb24sIExlc3M+IFNldDsKKworICBFeHBl
Y3RhdGlvbigKKyAgICAgIGNvbnN0IGludGVybmFsOjpsaW5rZWRfcHRyPGludGVybmFsOjpFeHBl
Y3RhdGlvbkJhc2U+JiBleHBlY3RhdGlvbl9iYXNlKTsKKworICAvLyBSZXR1cm5zIHRoZSBleHBl
Y3RhdGlvbiB0aGlzIG9iamVjdCByZWZlcmVuY2VzLgorICBjb25zdCBpbnRlcm5hbDo6bGlua2Vk
X3B0cjxpbnRlcm5hbDo6RXhwZWN0YXRpb25CYXNlPiYKKyAgZXhwZWN0YXRpb25fYmFzZSgpIGNv
bnN0IHsKKyAgICByZXR1cm4gZXhwZWN0YXRpb25fYmFzZV87CisgIH0KKworICAvLyBBIGxpbmtl
ZF9wdHIgdGhhdCBjby1vd25zIHRoZSBleHBlY3RhdGlvbiB0aGlzIGhhbmRsZSByZWZlcmVuY2Vz
LgorICBpbnRlcm5hbDo6bGlua2VkX3B0cjxpbnRlcm5hbDo6RXhwZWN0YXRpb25CYXNlPiBleHBl
Y3RhdGlvbl9iYXNlXzsKK307CisKKy8vIEEgc2V0IG9mIGV4cGVjdGF0aW9uIGhhbmRsZXMuICBV
c2VmdWwgaW4gdGhlIC5BZnRlcigpIGNsYXVzZSBvZgorLy8gRVhQRUNUX0NBTEwoKSBmb3Igc2V0
dGluZyB0aGUgKHBhcnRpYWwpIG9yZGVyIG9mIGV4cGVjdGF0aW9ucy4gIFRoZQorLy8gc3ludGF4
OgorLy8KKy8vICAgRXhwZWN0YXRpb25TZXQgZXM7CisvLyAgIGVzICs9IEVYUEVDVF9DQUxMKC4u
LikuLi47CisvLyAgIGVzICs9IEVYUEVDVF9DQUxMKC4uLikuLi47CisvLyAgIEVYUEVDVF9DQUxM
KC4uLikuQWZ0ZXIoZXMpLi4uOworLy8KKy8vIHNldHMgdGhyZWUgZXhwZWN0YXRpb25zIHdoZXJl
IHRoZSBsYXN0IG9uZSBjYW4gb25seSBiZSBtYXRjaGVkCisvLyBhZnRlciB0aGUgZmlyc3QgdHdv
IGhhdmUgYm90aCBiZWVuIHNhdGlzZmllZC4KKy8vCisvLyBUaGlzIGNsYXNzIGlzIGNvcHlhYmxl
IGFuZCBoYXMgdmFsdWUgc2VtYW50aWNzLgorY2xhc3MgRXhwZWN0YXRpb25TZXQgeworIHB1Ymxp
YzoKKyAgLy8gQSBiaWRpcmVjdGlvbmFsIGl0ZXJhdG9yIHRoYXQgY2FuIHJlYWQgYSBjb25zdCBl
bGVtZW50IGluIHRoZSBzZXQuCisgIHR5cGVkZWYgRXhwZWN0YXRpb246OlNldDo6Y29uc3RfaXRl
cmF0b3IgY29uc3RfaXRlcmF0b3I7CisKKyAgLy8gQW4gb2JqZWN0IHN0b3JlZCBpbiB0aGUgc2V0
LiAgVGhpcyBpcyBhbiBhbGlhcyBvZiBFeHBlY3RhdGlvbi4KKyAgdHlwZWRlZiBFeHBlY3RhdGlv
bjo6U2V0Ojp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7CisKKyAgLy8gQ29uc3RydWN0cyBhbiBlbXB0
eSBzZXQuCisgIEV4cGVjdGF0aW9uU2V0KCkge30KKworICAvLyBUaGlzIHNpbmdsZS1hcmd1bWVu
dCBjdG9yIG11c3Qgbm90IGJlIGV4cGxpY2l0LCBpbiBvcmRlciB0byBzdXBwb3J0IHRoZQorICAv
LyAgIEV4cGVjdGF0aW9uU2V0IGVzID0gRVhQRUNUX0NBTEwoLi4uKTsKKyAgLy8gc3ludGF4Lgor
ICBFeHBlY3RhdGlvblNldChpbnRlcm5hbDo6RXhwZWN0YXRpb25CYXNlJiBleHApIHsgIC8vIE5P
TElOVAorICAgICp0aGlzICs9IEV4cGVjdGF0aW9uKGV4cCk7CisgIH0KKworICAvLyBUaGlzIHNp
bmdsZS1hcmd1bWVudCBjdG9yIGltcGxlbWVudHMgaW1wbGljaXQgY29udmVyc2lvbiBmcm9tCisg
IC8vIEV4cGVjdGF0aW9uIGFuZCB0aHVzIG11c3Qgbm90IGJlIGV4cGxpY2l0LiAgVGhpcyBhbGxv
d3MgZWl0aGVyIGFuCisgIC8vIEV4cGVjdGF0aW9uIG9yIGFuIEV4cGVjdGF0aW9uU2V0IHRvIGJl
IHVzZWQgaW4gLkFmdGVyKCkuCisgIEV4cGVjdGF0aW9uU2V0KGNvbnN0IEV4cGVjdGF0aW9uJiBl
KSB7ICAvLyBOT0xJTlQKKyAgICAqdGhpcyArPSBlOworICB9CisKKyAgLy8gVGhlIGNvbXBpbGVy
LWdlbmVyYXRvciBjdG9yIGFuZCBvcGVyYXRvcj0gd29ya3MgZXhhY3RseSBhcworICAvLyBpbnRl
bmRlZCwgc28gd2UgZG9uJ3QgbmVlZCB0byBkZWZpbmUgb3VyIG93bi4KKworICAvLyBSZXR1cm5z
IHRydWUgaWZmIHJocyBjb250YWlucyB0aGUgc2FtZSBzZXQgb2YgRXhwZWN0YXRpb24gb2JqZWN0
cworICAvLyBhcyB0aGlzIGRvZXMuCisgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFeHBlY3RhdGlv
blNldCYgcmhzKSBjb25zdCB7CisgICAgcmV0dXJuIGV4cGVjdGF0aW9uc18gPT0gcmhzLmV4cGVj
dGF0aW9uc187CisgIH0KKworICBib29sIG9wZXJhdG9yIT0oY29uc3QgRXhwZWN0YXRpb25TZXQm
IHJocykgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSByaHMpOyB9CisKKyAgLy8gSW1wbGVtZW50
cyB0aGUgc3ludGF4CisgIC8vICAgZXhwZWN0YXRpb25fc2V0ICs9IEVYUEVDVF9DQUxMKC4uLik7
CisgIEV4cGVjdGF0aW9uU2V0JiBvcGVyYXRvcis9KGNvbnN0IEV4cGVjdGF0aW9uJiBlKSB7Cisg
ICAgZXhwZWN0YXRpb25zXy5pbnNlcnQoZSk7CisgICAgcmV0dXJuICp0aGlzOworICB9CisKKyAg
aW50IHNpemUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGV4cGVjdGF0aW9uc18u
c2l6ZSgpKTsgfQorCisgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gZXhw
ZWN0YXRpb25zXy5iZWdpbigpOyB9CisgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0
dXJuIGV4cGVjdGF0aW9uc18uZW5kKCk7IH0KKworIHByaXZhdGU6CisgIEV4cGVjdGF0aW9uOjpT
ZXQgZXhwZWN0YXRpb25zXzsKK307CisKKworLy8gU2VxdWVuY2Ugb2JqZWN0cyBhcmUgdXNlZCBi
eSBhIHVzZXIgdG8gc3BlY2lmeSB0aGUgcmVsYXRpdmUgb3JkZXIKKy8vIGluIHdoaWNoIHRoZSBl
eHBlY3RhdGlvbnMgc2hvdWxkIG1hdGNoLiAgVGhleSBhcmUgY29weWFibGUgKHdlIHJlbHkKKy8v
IG9uIHRoZSBjb21waWxlci1kZWZpbmVkIGNvcHkgY29uc3RydWN0b3IgYW5kIGFzc2lnbm1lbnQg
b3BlcmF0b3IpLgorY2xhc3MgR1RFU1RfQVBJXyBTZXF1ZW5jZSB7CisgcHVibGljOgorICAvLyBD
b25zdHJ1Y3RzIGFuIGVtcHR5IHNlcXVlbmNlLgorICBTZXF1ZW5jZSgpIDogbGFzdF9leHBlY3Rh
dGlvbl8obmV3IEV4cGVjdGF0aW9uKSB7fQorCisgIC8vIEFkZHMgYW4gZXhwZWN0YXRpb24gdG8g
dGhpcyBzZXF1ZW5jZS4gIFRoZSBjYWxsZXIgbXVzdCBlbnN1cmUKKyAgLy8gdGhhdCBubyBvdGhl
ciB0aHJlYWQgaXMgYWNjZXNzaW5nIHRoaXMgU2VxdWVuY2Ugb2JqZWN0LgorICB2b2lkIEFkZEV4
cGVjdGF0aW9uKGNvbnN0IEV4cGVjdGF0aW9uJiBleHBlY3RhdGlvbikgY29uc3Q7CisKKyBwcml2
YXRlOgorICAvLyBUaGUgbGFzdCBleHBlY3RhdGlvbiBpbiB0aGlzIHNlcXVlbmNlLiAgV2UgdXNl
IGEgbGlua2VkX3B0ciBoZXJlCisgIC8vIGJlY2F1c2UgU2VxdWVuY2Ugb2JqZWN0cyBhcmUgY29w
eWFibGUgYW5kIHdlIHdhbnQgdGhlIGNvcGllcyB0bworICAvLyBiZSBhbGlhc2VzLiAgVGhlIGxp
bmtlZF9wdHIgYWxsb3dzIHRoZSBjb3BpZXMgdG8gY28tb3duIGFuZCBzaGFyZQorICAvLyB0aGUg
c2FtZSBFeHBlY3RhdGlvbiBvYmplY3QuCisgIGludGVybmFsOjpsaW5rZWRfcHRyPEV4cGVjdGF0
aW9uPiBsYXN0X2V4cGVjdGF0aW9uXzsKK307ICAvLyBjbGFzcyBTZXF1ZW5jZQorCisvLyBBbiBv
YmplY3Qgb2YgdGhpcyB0eXBlIGNhdXNlcyBhbGwgRVhQRUNUX0NBTEwoKSBzdGF0ZW1lbnRzCisv
LyBlbmNvdW50ZXJlZCBpbiBpdHMgc2NvcGUgdG8gYmUgcHV0IGluIGFuIGFub255bW91cyBzZXF1
ZW5jZS4gIFRoZQorLy8gd29yayBpcyBkb25lIGluIHRoZSBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1
Y3Rvci4gIFlvdSBzaG91bGQgb25seQorLy8gY3JlYXRlIGFuIEluU2VxdWVuY2Ugb2JqZWN0IG9u
IHRoZSBzdGFjay4KKy8vCisvLyBUaGUgc29sZSBwdXJwb3NlIGZvciB0aGlzIGNsYXNzIGlzIHRv
IHN1cHBvcnQgZWFzeSBkZWZpbml0aW9uIG9mCisvLyBzZXF1ZW50aWFsIGV4cGVjdGF0aW9ucywg
ZS5nLgorLy8KKy8vICAgeworLy8gICAgIEluU2VxdWVuY2UgZHVtbXk7ICAvLyBUaGUgbmFtZSBv
ZiB0aGUgb2JqZWN0IGRvZXNuJ3QgbWF0dGVyLgorLy8KKy8vICAgICAvLyBUaGUgZm9sbG93aW5n
IGV4cGVjdGF0aW9ucyBtdXN0IG1hdGNoIGluIHRoZSBvcmRlciB0aGV5IGFwcGVhci4KKy8vICAg
ICBFWFBFQ1RfQ0FMTChhLCBCYXIoKSkuLi47CisvLyAgICAgRVhQRUNUX0NBTEwoYSwgQmF6KCkp
Li4uOworLy8gICAgIC4uLgorLy8gICAgIEVYUEVDVF9DQUxMKGIsIFh5eigpKS4uLjsKKy8vICAg
fQorLy8KKy8vIFlvdSBjYW4gY3JlYXRlIEluU2VxdWVuY2Ugb2JqZWN0cyBpbiBtdWx0aXBsZSB0
aHJlYWRzLCBhcyBsb25nIGFzCisvLyB0aGV5IGFyZSB1c2VkIHRvIGFmZmVjdCBkaWZmZXJlbnQg
bW9jayBvYmplY3RzLiAgVGhlIGlkZWEgaXMgdGhhdAorLy8gZWFjaCB0aHJlYWQgY2FuIGNyZWF0
ZSBhbmQgc2V0IHVwIGl0cyBvd24gbW9ja3MgYXMgaWYgaXQncyB0aGUgb25seQorLy8gdGhyZWFk
LiAgSG93ZXZlciwgZm9yIGNsYXJpdHkgb2YgeW91ciB0ZXN0cyB3ZSByZWNvbW1lbmQgeW91IHRv
IHNldAorLy8gdXAgbW9ja3MgaW4gdGhlIG1haW4gdGhyZWFkIHVubGVzcyB5b3UgaGF2ZSBhIGdv
b2QgcmVhc29uIG5vdCB0byBkbworLy8gc28uCitjbGFzcyBHVEVTVF9BUElfIEluU2VxdWVuY2Ug
eworIHB1YmxpYzoKKyAgSW5TZXF1ZW5jZSgpOworICB+SW5TZXF1ZW5jZSgpOworIHByaXZhdGU6
CisgIGJvb2wgc2VxdWVuY2VfY3JlYXRlZF87CisKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRf
QVNTSUdOXyhJblNlcXVlbmNlKTsgIC8vIE5PTElOVAorfSBHVEVTVF9BVFRSSUJVVEVfVU5VU0VE
XzsKKworbmFtZXNwYWNlIGludGVybmFsIHsKKworLy8gUG9pbnRzIHRvIHRoZSBpbXBsaWNpdCBz
ZXF1ZW5jZSBpbnRyb2R1Y2VkIGJ5IGEgbGl2aW5nIEluU2VxdWVuY2UKKy8vIG9iamVjdCAoaWYg
YW55KSBpbiB0aGUgY3VycmVudCB0aHJlYWQgb3IgTlVMTC4KK0dURVNUX0FQSV8gZXh0ZXJuIFRo
cmVhZExvY2FsPFNlcXVlbmNlKj4gZ19nbW9ja19pbXBsaWNpdF9zZXF1ZW5jZTsKKworLy8gQmFz
ZSBjbGFzcyBmb3IgaW1wbGVtZW50aW5nIGV4cGVjdGF0aW9ucy4KKy8vCisvLyBUaGVyZSBhcmUg
dHdvIHJlYXNvbnMgZm9yIGhhdmluZyBhIHR5cGUtYWdub3N0aWMgYmFzZSBjbGFzcyBmb3IKKy8v
IEV4cGVjdGF0aW9uOgorLy8KKy8vICAgMS4gV2UgbmVlZCB0byBzdG9yZSBjb2xsZWN0aW9ucyBv
ZiBleHBlY3RhdGlvbnMgb2YgZGlmZmVyZW50CisvLyAgIHR5cGVzIChlLmcuIGFsbCBwcmUtcmVx
dWlzaXRlcyBvZiBhIHBhcnRpY3VsYXIgZXhwZWN0YXRpb24sIGFsbAorLy8gICBleHBlY3RhdGlv
bnMgaW4gYSBzZXF1ZW5jZSkuICBUaGVyZWZvcmUgdGhlc2UgZXhwZWN0YXRpb24gb2JqZWN0cwor
Ly8gICBtdXN0IHNoYXJlIGEgY29tbW9uIGJhc2UgY2xhc3MuCisvLworLy8gICAyLiBXZSBjYW4g
YXZvaWQgYmluYXJ5IGNvZGUgYmxvYXQgYnkgbW92aW5nIG1ldGhvZHMgbm90IGRlcGVuZGluZwor
Ly8gICBvbiB0aGUgdGVtcGxhdGUgYXJndW1lbnQgb2YgRXhwZWN0YXRpb24gdG8gdGhlIGJhc2Ug
Y2xhc3MuCisvLworLy8gVGhpcyBjbGFzcyBpcyBpbnRlcm5hbCBhbmQgbXVzdG4ndCBiZSB1c2Vk
IGJ5IHVzZXIgY29kZSBkaXJlY3RseS4KK2NsYXNzIEdURVNUX0FQSV8gRXhwZWN0YXRpb25CYXNl
IHsKKyBwdWJsaWM6CisgIC8vIHNvdXJjZV90ZXh0IGlzIHRoZSBFWFBFQ1RfQ0FMTCguLi4pIHNv
dXJjZSB0aGF0IGNyZWF0ZWQgdGhpcyBFeHBlY3RhdGlvbi4KKyAgRXhwZWN0YXRpb25CYXNlKGNv
bnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBzdGQ6OnN0cmluZyYgc291cmNlX3RleHQp
OworCisgIHZpcnR1YWwgfkV4cGVjdGF0aW9uQmFzZSgpOworCisgIC8vIFdoZXJlIGluIHRoZSBz
b3VyY2UgZmlsZSB3YXMgdGhlIGV4cGVjdGF0aW9uIHNwZWMgZGVmaW5lZD8KKyAgY29uc3QgY2hh
ciogZmlsZSgpIGNvbnN0IHsgcmV0dXJuIGZpbGVfOyB9CisgIGludCBsaW5lKCkgY29uc3QgeyBy
ZXR1cm4gbGluZV87IH0KKyAgY29uc3QgY2hhciogc291cmNlX3RleHQoKSBjb25zdCB7IHJldHVy
biBzb3VyY2VfdGV4dF8uY19zdHIoKTsgfQorICAvLyBSZXR1cm5zIHRoZSBjYXJkaW5hbGl0eSBz
cGVjaWZpZWQgaW4gdGhlIGV4cGVjdGF0aW9uIHNwZWMuCisgIGNvbnN0IENhcmRpbmFsaXR5JiBj
YXJkaW5hbGl0eSgpIGNvbnN0IHsgcmV0dXJuIGNhcmRpbmFsaXR5XzsgfQorCisgIC8vIERlc2Ny
aWJlcyB0aGUgc291cmNlIGZpbGUgbG9jYXRpb24gb2YgdGhpcyBleHBlY3RhdGlvbi4KKyAgdm9p
ZCBEZXNjcmliZUxvY2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7CisgICAgKm9z
IDw8IEZvcm1hdEZpbGVMb2NhdGlvbihmaWxlKCksIGxpbmUoKSkgPDwgIiAiOworICB9CisKKyAg
Ly8gRGVzY3JpYmVzIGhvdyBtYW55IHRpbWVzIGEgZnVuY3Rpb24gY2FsbCBtYXRjaGluZyB0aGlz
CisgIC8vIGV4cGVjdGF0aW9uIGhhcyBvY2N1cnJlZC4KKyAgdm9pZCBEZXNjcmliZUNhbGxDb3Vu
dFRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QKKyAgICAgIEdURVNUX0VYQ0xVU0lWRV9MT0NL
X1JFUVVJUkVEXyhnX2dtb2NrX211dGV4KTsKKworICAvLyBJZiB0aGlzIG1vY2sgbWV0aG9kIGhh
cyBhbiBleHRyYSBtYXRjaGVyIChpLmUuIC5XaXRoKG1hdGNoZXIpKSwKKyAgLy8gZGVzY3JpYmVz
IGl0IHRvIHRoZSBvc3RyZWFtLgorICB2aXJ0dWFsIHZvaWQgTWF5YmVEZXNjcmliZUV4dHJhTWF0
Y2hlclRvKDo6c3RkOjpvc3RyZWFtKiBvcykgPSAwOworCisgcHJvdGVjdGVkOgorICBmcmllbmQg
Y2xhc3MgOjp0ZXN0aW5nOjpFeHBlY3RhdGlvbjsKKyAgZnJpZW5kIGNsYXNzIFVudHlwZWRGdW5j
dGlvbk1vY2tlckJhc2U7CisKKyAgZW51bSBDbGF1c2UgeworICAgIC8vIERvbid0IGNoYW5nZSB0
aGUgb3JkZXIgb2YgdGhlIGVudW0gbWVtYmVycyEKKyAgICBrTm9uZSwKKyAgICBrV2l0aCwKKyAg
ICBrVGltZXMsCisgICAga0luU2VxdWVuY2UsCisgICAga0FmdGVyLAorICAgIGtXaWxsT25jZSwK
KyAgICBrV2lsbFJlcGVhdGVkbHksCisgICAga1JldGlyZXNPblNhdHVyYXRpb24KKyAgfTsKKwor
ICB0eXBlZGVmIHN0ZDo6dmVjdG9yPGNvbnN0IHZvaWQqPiBVbnR5cGVkQWN0aW9uczsKKworICAv
LyBSZXR1cm5zIGFuIEV4cGVjdGF0aW9uIG9iamVjdCB0aGF0IHJlZmVyZW5jZXMgYW5kIGNvLW93
bnMgdGhpcworICAvLyBleHBlY3RhdGlvbi4KKyAgdmlydHVhbCBFeHBlY3RhdGlvbiBHZXRIYW5k
bGUoKSA9IDA7CisKKyAgLy8gQXNzZXJ0cyB0aGF0IHRoZSBFWFBFQ1RfQ0FMTCgpIHN0YXRlbWVu
dCBoYXMgdGhlIGdpdmVuIHByb3BlcnR5LgorICB2b2lkIEFzc2VydFNwZWNQcm9wZXJ0eShib29s
IHByb3BlcnR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYg
ZmFpbHVyZV9tZXNzYWdlKSBjb25zdCB7CisgICAgQXNzZXJ0KHByb3BlcnR5LCBmaWxlXywgbGlu
ZV8sIGZhaWx1cmVfbWVzc2FnZSk7CisgIH0KKworICAvLyBFeHBlY3RzIHRoYXQgdGhlIEVYUEVD
VF9DQUxMKCkgc3RhdGVtZW50IGhhcyB0aGUgZ2l2ZW4gcHJvcGVydHkuCisgIHZvaWQgRXhwZWN0
U3BlY1Byb3BlcnR5KGJvb2wgcHJvcGVydHksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiBmYWlsdXJlX21lc3NhZ2UpIGNvbnN0IHsKKyAgICBFeHBlY3QocHJv
cGVydHksIGZpbGVfLCBsaW5lXywgZmFpbHVyZV9tZXNzYWdlKTsKKyAgfQorCisgIC8vIEV4cGxp
Y2l0bHkgc3BlY2lmaWVzIHRoZSBjYXJkaW5hbGl0eSBvZiB0aGlzIGV4cGVjdGF0aW9uLiAgVXNl
ZAorICAvLyBieSB0aGUgc3ViY2xhc3NlcyB0byBpbXBsZW1lbnQgdGhlIC5UaW1lcygpIGNsYXVz
ZS4KKyAgdm9pZCBTcGVjaWZ5Q2FyZGluYWxpdHkoY29uc3QgQ2FyZGluYWxpdHkmIGNhcmRpbmFs
aXR5KTsKKworICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSB1c2VyIHNwZWNpZmllZCB0aGUgY2Fy
ZGluYWxpdHkgZXhwbGljaXRseQorICAvLyB1c2luZyBhIC5UaW1lcygpLgorICBib29sIGNhcmRp
bmFsaXR5X3NwZWNpZmllZCgpIGNvbnN0IHsgcmV0dXJuIGNhcmRpbmFsaXR5X3NwZWNpZmllZF87
IH0KKworICAvLyBTZXRzIHRoZSBjYXJkaW5hbGl0eSBvZiB0aGlzIGV4cGVjdGF0aW9uIHNwZWMu
CisgIHZvaWQgc2V0X2NhcmRpbmFsaXR5KGNvbnN0IENhcmRpbmFsaXR5JiBhX2NhcmRpbmFsaXR5
KSB7CisgICAgY2FyZGluYWxpdHlfID0gYV9jYXJkaW5hbGl0eTsKKyAgfQorCisgIC8vIFRoZSBm
b2xsb3dpbmcgZ3JvdXAgb2YgbWV0aG9kcyBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgdGhl
CisgIC8vIEVYUEVDVF9DQUxMKCkgc3RhdGVtZW50LCBhbmQgb25seSB3aGVuIGdfZ21vY2tfbXV0
ZXggaXMgaGVsZCBieQorICAvLyB0aGUgY3VycmVudCB0aHJlYWQuCisKKyAgLy8gUmV0aXJlcyBh
bGwgcHJlLXJlcXVpc2l0ZXMgb2YgdGhpcyBleHBlY3RhdGlvbi4KKyAgdm9pZCBSZXRpcmVBbGxQ
cmVSZXF1aXNpdGVzKCkKKyAgICAgIEdURVNUX0VYQ0xVU0lWRV9MT0NLX1JFUVVJUkVEXyhnX2dt
b2NrX211dGV4KTsKKworICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoaXMgZXhwZWN0YXRpb24gaXMg
cmV0aXJlZC4KKyAgYm9vbCBpc19yZXRpcmVkKCkgY29uc3QKKyAgICAgIEdURVNUX0VYQ0xVU0lW
RV9MT0NLX1JFUVVJUkVEXyhnX2dtb2NrX211dGV4KSB7CisgICAgZ19nbW9ja19tdXRleC5Bc3Nl
cnRIZWxkKCk7CisgICAgcmV0dXJuIHJldGlyZWRfOworICB9CisKKyAgLy8gUmV0aXJlcyB0aGlz
IGV4cGVjdGF0aW9uLgorICB2b2lkIFJldGlyZSgpCisgICAgICBHVEVTVF9FWENMVVNJVkVfTE9D
S19SRVFVSVJFRF8oZ19nbW9ja19tdXRleCkgeworICAgIGdfZ21vY2tfbXV0ZXguQXNzZXJ0SGVs
ZCgpOworICAgIHJldGlyZWRfID0gdHJ1ZTsKKyAgfQorCisgIC8vIFJldHVybnMgdHJ1ZSBpZmYg
dGhpcyBleHBlY3RhdGlvbiBpcyBzYXRpc2ZpZWQuCisgIGJvb2wgSXNTYXRpc2ZpZWQoKSBjb25z
dAorICAgICAgR1RFU1RfRVhDTFVTSVZFX0xPQ0tfUkVRVUlSRURfKGdfZ21vY2tfbXV0ZXgpIHsK
KyAgICBnX2dtb2NrX211dGV4LkFzc2VydEhlbGQoKTsKKyAgICByZXR1cm4gY2FyZGluYWxpdHko
KS5Jc1NhdGlzZmllZEJ5Q2FsbENvdW50KGNhbGxfY291bnRfKTsKKyAgfQorCisgIC8vIFJldHVy
bnMgdHJ1ZSBpZmYgdGhpcyBleHBlY3RhdGlvbiBpcyBzYXR1cmF0ZWQuCisgIGJvb2wgSXNTYXR1
cmF0ZWQoKSBjb25zdAorICAgICAgR1RFU1RfRVhDTFVTSVZFX0xPQ0tfUkVRVUlSRURfKGdfZ21v
Y2tfbXV0ZXgpIHsKKyAgICBnX2dtb2NrX211dGV4LkFzc2VydEhlbGQoKTsKKyAgICByZXR1cm4g
Y2FyZGluYWxpdHkoKS5Jc1NhdHVyYXRlZEJ5Q2FsbENvdW50KGNhbGxfY291bnRfKTsKKyAgfQor
CisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhpcyBleHBlY3RhdGlvbiBpcyBvdmVyLXNhdHVyYXRl
ZC4KKyAgYm9vbCBJc092ZXJTYXR1cmF0ZWQoKSBjb25zdAorICAgICAgR1RFU1RfRVhDTFVTSVZF
X0xPQ0tfUkVRVUlSRURfKGdfZ21vY2tfbXV0ZXgpIHsKKyAgICBnX2dtb2NrX211dGV4LkFzc2Vy
dEhlbGQoKTsKKyAgICByZXR1cm4gY2FyZGluYWxpdHkoKS5Jc092ZXJTYXR1cmF0ZWRCeUNhbGxD
b3VudChjYWxsX2NvdW50Xyk7CisgIH0KKworICAvLyBSZXR1cm5zIHRydWUgaWZmIGFsbCBwcmUt
cmVxdWlzaXRlcyBvZiB0aGlzIGV4cGVjdGF0aW9uIGFyZSBzYXRpc2ZpZWQuCisgIGJvb2wgQWxs
UHJlcmVxdWlzaXRlc0FyZVNhdGlzZmllZCgpIGNvbnN0CisgICAgICBHVEVTVF9FWENMVVNJVkVf
TE9DS19SRVFVSVJFRF8oZ19nbW9ja19tdXRleCk7CisKKyAgLy8gQWRkcyB1bnNhdGlzZmllZCBw
cmUtcmVxdWlzaXRlcyBvZiB0aGlzIGV4cGVjdGF0aW9uIHRvICdyZXN1bHQnLgorICB2b2lkIEZp
bmRVbnNhdGlzZmllZFByZXJlcXVpc2l0ZXMoRXhwZWN0YXRpb25TZXQqIHJlc3VsdCkgY29uc3QK
KyAgICAgIEdURVNUX0VYQ0xVU0lWRV9MT0NLX1JFUVVJUkVEXyhnX2dtb2NrX211dGV4KTsKKwor
ICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgdGhpcyBleHBlY3RhdGlvbiBoYXMgYmVlbiBpbnZva2Vk
LgorICBpbnQgY2FsbF9jb3VudCgpIGNvbnN0CisgICAgICBHVEVTVF9FWENMVVNJVkVfTE9DS19S
RVFVSVJFRF8oZ19nbW9ja19tdXRleCkgeworICAgIGdfZ21vY2tfbXV0ZXguQXNzZXJ0SGVsZCgp
OworICAgIHJldHVybiBjYWxsX2NvdW50XzsKKyAgfQorCisgIC8vIEluY3JlbWVudHMgdGhlIG51
bWJlciB0aGlzIGV4cGVjdGF0aW9uIGhhcyBiZWVuIGludm9rZWQuCisgIHZvaWQgSW5jcmVtZW50
Q2FsbENvdW50KCkKKyAgICAgIEdURVNUX0VYQ0xVU0lWRV9MT0NLX1JFUVVJUkVEXyhnX2dtb2Nr
X211dGV4KSB7CisgICAgZ19nbW9ja19tdXRleC5Bc3NlcnRIZWxkKCk7CisgICAgY2FsbF9jb3Vu
dF8rKzsKKyAgfQorCisgIC8vIENoZWNrcyB0aGUgYWN0aW9uIGNvdW50IChpLmUuIHRoZSBudW1i
ZXIgb2YgV2lsbE9uY2UoKSBhbmQKKyAgLy8gV2lsbFJlcGVhdGVkbHkoKSBjbGF1c2VzKSBhZ2Fp
bnN0IHRoZSBjYXJkaW5hbGl0eSBpZiB0aGlzIGhhc24ndAorICAvLyBiZWVuIGRvbmUgYmVmb3Jl
LiAgUHJpbnRzIGEgd2FybmluZyBpZiB0aGVyZSBhcmUgdG9vIG1hbnkgb3IgdG9vCisgIC8vIGZl
dyBhY3Rpb25zLgorICB2b2lkIENoZWNrQWN0aW9uQ291bnRJZk5vdERvbmUoKSBjb25zdAorICAg
ICAgR1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhfKTsKKworICBmcmllbmQgY2xhc3MgOjp0ZXN0
aW5nOjpTZXF1ZW5jZTsKKyAgZnJpZW5kIGNsYXNzIDo6dGVzdGluZzo6aW50ZXJuYWw6OkV4cGVj
dGF0aW9uVGVzdGVyOworCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdGlvbj4KKyAgZnJpZW5k
IGNsYXNzIFR5cGVkRXhwZWN0YXRpb247CisKKyAgLy8gSW1wbGVtZW50cyB0aGUgLlRpbWVzKCkg
Y2xhdXNlLgorICB2b2lkIFVudHlwZWRUaW1lcyhjb25zdCBDYXJkaW5hbGl0eSYgYV9jYXJkaW5h
bGl0eSk7CisKKyAgLy8gVGhpcyBncm91cCBvZiBmaWVsZHMgYXJlIHBhcnQgb2YgdGhlIHNwZWMg
YW5kIHdvbid0IGNoYW5nZSBhZnRlcgorICAvLyBhbiBFWFBFQ1RfQ0FMTCgpIHN0YXRlbWVudCBm
aW5pc2hlcy4KKyAgY29uc3QgY2hhciogZmlsZV87ICAgICAgICAgIC8vIFRoZSBmaWxlIHRoYXQg
Y29udGFpbnMgdGhlIGV4cGVjdGF0aW9uLgorICBpbnQgbGluZV87ICAgICAgICAgICAgICAgICAg
Ly8gVGhlIGxpbmUgbnVtYmVyIG9mIHRoZSBleHBlY3RhdGlvbi4KKyAgY29uc3Qgc3RkOjpzdHJp
bmcgc291cmNlX3RleHRfOyAgLy8gVGhlIEVYUEVDVF9DQUxMKC4uLikgc291cmNlIHRleHQuCisg
IC8vIFRydWUgaWZmIHRoZSBjYXJkaW5hbGl0eSBpcyBzcGVjaWZpZWQgZXhwbGljaXRseS4KKyAg
Ym9vbCBjYXJkaW5hbGl0eV9zcGVjaWZpZWRfOworICBDYXJkaW5hbGl0eSBjYXJkaW5hbGl0eV87
ICAgICAgICAgICAgLy8gVGhlIGNhcmRpbmFsaXR5IG9mIHRoZSBleHBlY3RhdGlvbi4KKyAgLy8g
VGhlIGltbWVkaWF0ZSBwcmUtcmVxdWlzaXRlcyAoaS5lLiBleHBlY3RhdGlvbnMgdGhhdCBtdXN0
IGJlCisgIC8vIHNhdGlzZmllZCBiZWZvcmUgdGhpcyBleHBlY3RhdGlvbiBjYW4gYmUgbWF0Y2hl
ZCkgb2YgdGhpcworICAvLyBleHBlY3RhdGlvbi4gIFdlIHVzZSBsaW5rZWRfcHRyIGluIHRoZSBz
ZXQgYmVjYXVzZSB3ZSB3YW50IGFuCisgIC8vIEV4cGVjdGF0aW9uIG9iamVjdCB0byBiZSBjby1v
d25lZCBieSBpdHMgRnVuY3Rpb25Nb2NrZXIgYW5kIGl0cworICAvLyBzdWNjZXNzb3JzLiAgVGhp
cyBhbGxvd3MgbXVsdGlwbGUgbW9jayBvYmplY3RzIHRvIGJlIGRlbGV0ZWQgYXQKKyAgLy8gZGlm
ZmVyZW50IHRpbWVzLgorICBFeHBlY3RhdGlvblNldCBpbW1lZGlhdGVfcHJlcmVxdWlzaXRlc187
CisKKyAgLy8gVGhpcyBncm91cCBvZiBmaWVsZHMgYXJlIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRo
ZSBleHBlY3RhdGlvbiwKKyAgLy8gYW5kIGNhbiBjaGFuZ2UgYXMgdGhlIG1vY2sgZnVuY3Rpb24g
aXMgY2FsbGVkLgorICBpbnQgY2FsbF9jb3VudF87ICAvLyBIb3cgbWFueSB0aW1lcyB0aGlzIGV4
cGVjdGF0aW9uIGhhcyBiZWVuIGludm9rZWQuCisgIGJvb2wgcmV0aXJlZF87ICAgIC8vIFRydWUg
aWZmIHRoaXMgZXhwZWN0YXRpb24gaGFzIHJldGlyZWQuCisgIFVudHlwZWRBY3Rpb25zIHVudHlw
ZWRfYWN0aW9uc187CisgIGJvb2wgZXh0cmFfbWF0Y2hlcl9zcGVjaWZpZWRfOworICBib29sIHJl
cGVhdGVkX2FjdGlvbl9zcGVjaWZpZWRfOyAgLy8gVHJ1ZSBpZiBhIFdpbGxSZXBlYXRlZGx5KCkg
d2FzIHNwZWNpZmllZC4KKyAgYm9vbCByZXRpcmVzX29uX3NhdHVyYXRpb25fOworICBDbGF1c2Ug
bGFzdF9jbGF1c2VfOworICBtdXRhYmxlIGJvb2wgYWN0aW9uX2NvdW50X2NoZWNrZWRfOyAgLy8g
VW5kZXIgbXV0ZXhfLgorICBtdXRhYmxlIE11dGV4IG11dGV4XzsgIC8vIFByb3RlY3RzIGFjdGlv
bl9jb3VudF9jaGVja2VkXy4KKworICBHVEVTVF9ESVNBTExPV19BU1NJR05fKEV4cGVjdGF0aW9u
QmFzZSk7Cit9OyAgLy8gY2xhc3MgRXhwZWN0YXRpb25CYXNlCisKKy8vIEltcGVtZW50cyBhbiBl
eHBlY3RhdGlvbiBmb3IgdGhlIGdpdmVuIGZ1bmN0aW9uIHR5cGUuCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgRj4KK2NsYXNzIFR5cGVkRXhwZWN0YXRpb24gOiBwdWJsaWMgRXhwZWN0YXRpb25CYXNlIHsK
KyBwdWJsaWM6CisgIHR5cGVkZWYgdHlwZW5hbWUgRnVuY3Rpb248Rj46OkFyZ3VtZW50VHVwbGUg
QXJndW1lbnRUdXBsZTsKKyAgdHlwZWRlZiB0eXBlbmFtZSBGdW5jdGlvbjxGPjo6QXJndW1lbnRN
YXRjaGVyVHVwbGUgQXJndW1lbnRNYXRjaGVyVHVwbGU7CisgIHR5cGVkZWYgdHlwZW5hbWUgRnVu
Y3Rpb248Rj46OlJlc3VsdCBSZXN1bHQ7CisKKyAgVHlwZWRFeHBlY3RhdGlvbihGdW5jdGlvbk1v
Y2tlckJhc2U8Rj4qIG93bmVyLCBjb25zdCBjaGFyKiBhX2ZpbGUsIGludCBhX2xpbmUsCisgICAg
ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGFfc291cmNlX3RleHQsCisgICAgICAg
ICAgICAgICAgICAgY29uc3QgQXJndW1lbnRNYXRjaGVyVHVwbGUmIG0pCisgICAgICA6IEV4cGVj
dGF0aW9uQmFzZShhX2ZpbGUsIGFfbGluZSwgYV9zb3VyY2VfdGV4dCksCisgICAgICAgIG93bmVy
Xyhvd25lciksCisgICAgICAgIG1hdGNoZXJzXyhtKSwKKyAgICAgICAgLy8gQnkgZGVmYXVsdCwg
ZXh0cmFfbWF0Y2hlcl8gc2hvdWxkIG1hdGNoIGFueXRoaW5nLiAgSG93ZXZlciwKKyAgICAgICAg
Ly8gd2UgY2Fubm90IGluaXRpYWxpemUgaXQgd2l0aCBfIGFzIHRoYXQgdHJpZ2dlcnMgYSBjb21w
aWxlcgorICAgICAgICAvLyBidWcgaW4gU3ltYmlhbidzIEMrKyBjb21waWxlciAoY2Fubm90IGRl
Y2lkZSBiZXR3ZWVuIHR3bworICAgICAgICAvLyBvdmVybG9hZGVkIGNvbnN0cnVjdG9ycyBvZiBN
YXRjaGVyPGNvbnN0IEFyZ3VtZW50VHVwbGUmPikuCisgICAgICAgIGV4dHJhX21hdGNoZXJfKEE8
Y29uc3QgQXJndW1lbnRUdXBsZSY+KCkpLAorICAgICAgICByZXBlYXRlZF9hY3Rpb25fKERvRGVm
YXVsdCgpKSB7fQorCisgIHZpcnR1YWwgflR5cGVkRXhwZWN0YXRpb24oKSB7CisgICAgLy8gQ2hl
Y2sgdGhlIHZhbGlkaXR5IG9mIHRoZSBhY3Rpb24gY291bnQgaWYgaXQgaGFzbid0IGJlZW4gZG9u
ZQorICAgIC8vIHlldCAoZm9yIGV4YW1wbGUsIGlmIHRoZSBleHBlY3RhdGlvbiB3YXMgbmV2ZXIg
dXNlZCkuCisgICAgQ2hlY2tBY3Rpb25Db3VudElmTm90RG9uZSgpOworICAgIGZvciAoVW50eXBl
ZEFjdGlvbnM6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gdW50eXBlZF9hY3Rpb25zXy5iZWdpbigpOwor
ICAgICAgICAgaXQgIT0gdW50eXBlZF9hY3Rpb25zXy5lbmQoKTsgKytpdCkgeworICAgICAgZGVs
ZXRlIHN0YXRpY19jYXN0PGNvbnN0IEFjdGlvbjxGPio+KCppdCk7CisgICAgfQorICB9CisKKyAg
Ly8gSW1wbGVtZW50cyB0aGUgLldpdGgoKSBjbGF1c2UuCisgIFR5cGVkRXhwZWN0YXRpb24mIFdp
dGgoY29uc3QgTWF0Y2hlcjxjb25zdCBBcmd1bWVudFR1cGxlJj4mIG0pIHsKKyAgICBpZiAobGFz
dF9jbGF1c2VfID09IGtXaXRoKSB7CisgICAgICBFeHBlY3RTcGVjUHJvcGVydHkoZmFsc2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIi5XaXRoKCkgY2Fubm90IGFwcGVhciAiCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIm1vcmUgdGhhbiBvbmNlIGluIGFuIEVYUEVDVF9DQUxMKCkuIik7
CisgICAgfSBlbHNlIHsKKyAgICAgIEV4cGVjdFNwZWNQcm9wZXJ0eShsYXN0X2NsYXVzZV8gPCBr
V2l0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiLldpdGgoKSBtdXN0IGJlIHRoZSBmaXJz
dCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgImNsYXVzZSBpbiBhbiBFWFBFQ1RfQ0FMTCgp
LiIpOworICAgIH0KKyAgICBsYXN0X2NsYXVzZV8gPSBrV2l0aDsKKworICAgIGV4dHJhX21hdGNo
ZXJfID0gbTsKKyAgICBleHRyYV9tYXRjaGVyX3NwZWNpZmllZF8gPSB0cnVlOworICAgIHJldHVy
biAqdGhpczsKKyAgfQorCisgIC8vIEltcGxlbWVudHMgdGhlIC5UaW1lcygpIGNsYXVzZS4KKyAg
VHlwZWRFeHBlY3RhdGlvbiYgVGltZXMoY29uc3QgQ2FyZGluYWxpdHkmIGFfY2FyZGluYWxpdHkp
IHsKKyAgICBFeHBlY3RhdGlvbkJhc2U6OlVudHlwZWRUaW1lcyhhX2NhcmRpbmFsaXR5KTsKKyAg
ICByZXR1cm4gKnRoaXM7CisgIH0KKworICAvLyBJbXBsZW1lbnRzIHRoZSAuVGltZXMoKSBjbGF1
c2UuCisgIFR5cGVkRXhwZWN0YXRpb24mIFRpbWVzKGludCBuKSB7CisgICAgcmV0dXJuIFRpbWVz
KEV4YWN0bHkobikpOworICB9CisKKyAgLy8gSW1wbGVtZW50cyB0aGUgLkluU2VxdWVuY2UoKSBj
bGF1c2UuCisgIFR5cGVkRXhwZWN0YXRpb24mIEluU2VxdWVuY2UoY29uc3QgU2VxdWVuY2UmIHMp
IHsKKyAgICBFeHBlY3RTcGVjUHJvcGVydHkobGFzdF9jbGF1c2VfIDw9IGtJblNlcXVlbmNlLAor
ICAgICAgICAgICAgICAgICAgICAgICAiLkluU2VxdWVuY2UoKSBjYW5ub3QgYXBwZWFyIGFmdGVy
IC5BZnRlcigpLCIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAuV2lsbE9uY2UoKSwgLldpbGxS
ZXBlYXRlZGx5KCksIG9yICIKKyAgICAgICAgICAgICAgICAgICAgICAgIi5SZXRpcmVzT25TYXR1
cmF0aW9uKCkuIik7CisgICAgbGFzdF9jbGF1c2VfID0ga0luU2VxdWVuY2U7CisKKyAgICBzLkFk
ZEV4cGVjdGF0aW9uKEdldEhhbmRsZSgpKTsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKyAgVHlw
ZWRFeHBlY3RhdGlvbiYgSW5TZXF1ZW5jZShjb25zdCBTZXF1ZW5jZSYgczEsIGNvbnN0IFNlcXVl
bmNlJiBzMikgeworICAgIHJldHVybiBJblNlcXVlbmNlKHMxKS5JblNlcXVlbmNlKHMyKTsKKyAg
fQorICBUeXBlZEV4cGVjdGF0aW9uJiBJblNlcXVlbmNlKGNvbnN0IFNlcXVlbmNlJiBzMSwgY29u
c3QgU2VxdWVuY2UmIHMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNl
cXVlbmNlJiBzMykgeworICAgIHJldHVybiBJblNlcXVlbmNlKHMxLCBzMikuSW5TZXF1ZW5jZShz
Myk7CisgIH0KKyAgVHlwZWRFeHBlY3RhdGlvbiYgSW5TZXF1ZW5jZShjb25zdCBTZXF1ZW5jZSYg
czEsIGNvbnN0IFNlcXVlbmNlJiBzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBTZXF1ZW5jZSYgczMsIGNvbnN0IFNlcXVlbmNlJiBzNCkgeworICAgIHJldHVybiBJblNl
cXVlbmNlKHMxLCBzMiwgczMpLkluU2VxdWVuY2UoczQpOworICB9CisgIFR5cGVkRXhwZWN0YXRp
b24mIEluU2VxdWVuY2UoY29uc3QgU2VxdWVuY2UmIHMxLCBjb25zdCBTZXF1ZW5jZSYgczIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2VxdWVuY2UmIHMzLCBjb25zdCBT
ZXF1ZW5jZSYgczQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2VxdWVu
Y2UmIHM1KSB7CisgICAgcmV0dXJuIEluU2VxdWVuY2UoczEsIHMyLCBzMywgczQpLkluU2VxdWVu
Y2UoczUpOworICB9CisKKyAgLy8gSW1wbGVtZW50cyB0aGF0IC5BZnRlcigpIGNsYXVzZS4KKyAg
VHlwZWRFeHBlY3RhdGlvbiYgQWZ0ZXIoY29uc3QgRXhwZWN0YXRpb25TZXQmIHMpIHsKKyAgICBF
eHBlY3RTcGVjUHJvcGVydHkobGFzdF9jbGF1c2VfIDw9IGtBZnRlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIi5BZnRlcigpIGNhbm5vdCBhcHBlYXIgYWZ0ZXIgLldpbGxPbmNlKCksIgorICAg
ICAgICAgICAgICAgICAgICAgICAiIC5XaWxsUmVwZWF0ZWRseSgpLCBvciAiCisgICAgICAgICAg
ICAgICAgICAgICAgICIuUmV0aXJlc09uU2F0dXJhdGlvbigpLiIpOworICAgIGxhc3RfY2xhdXNl
XyA9IGtBZnRlcjsKKworICAgIGZvciAoRXhwZWN0YXRpb25TZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gcy5iZWdpbigpOyBpdCAhPSBzLmVuZCgpOyArK2l0KSB7CisgICAgICBpbW1lZGlhdGVfcHJl
cmVxdWlzaXRlc18gKz0gKml0OworICAgIH0KKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKyAgVHlw
ZWRFeHBlY3RhdGlvbiYgQWZ0ZXIoY29uc3QgRXhwZWN0YXRpb25TZXQmIHMxLCBjb25zdCBFeHBl
Y3RhdGlvblNldCYgczIpIHsKKyAgICByZXR1cm4gQWZ0ZXIoczEpLkFmdGVyKHMyKTsKKyAgfQor
ICBUeXBlZEV4cGVjdGF0aW9uJiBBZnRlcihjb25zdCBFeHBlY3RhdGlvblNldCYgczEsIGNvbnN0
IEV4cGVjdGF0aW9uU2V0JiBzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRXhw
ZWN0YXRpb25TZXQmIHMzKSB7CisgICAgcmV0dXJuIEFmdGVyKHMxLCBzMikuQWZ0ZXIoczMpOwor
ICB9CisgIFR5cGVkRXhwZWN0YXRpb24mIEFmdGVyKGNvbnN0IEV4cGVjdGF0aW9uU2V0JiBzMSwg
Y29uc3QgRXhwZWN0YXRpb25TZXQmIHMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBFeHBlY3RhdGlvblNldCYgczMsIGNvbnN0IEV4cGVjdGF0aW9uU2V0JiBzNCkgeworICAgIHJl
dHVybiBBZnRlcihzMSwgczIsIHMzKS5BZnRlcihzNCk7CisgIH0KKyAgVHlwZWRFeHBlY3RhdGlv
biYgQWZ0ZXIoY29uc3QgRXhwZWN0YXRpb25TZXQmIHMxLCBjb25zdCBFeHBlY3RhdGlvblNldCYg
czIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEV4cGVjdGF0aW9uU2V0JiBzMywg
Y29uc3QgRXhwZWN0YXRpb25TZXQmIHM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBFeHBlY3RhdGlvblNldCYgczUpIHsKKyAgICByZXR1cm4gQWZ0ZXIoczEsIHMyLCBzMywgczQp
LkFmdGVyKHM1KTsKKyAgfQorCisgIC8vIEltcGxlbWVudHMgdGhlIC5XaWxsT25jZSgpIGNsYXVz
ZS4KKyAgVHlwZWRFeHBlY3RhdGlvbiYgV2lsbE9uY2UoY29uc3QgQWN0aW9uPEY+JiBhY3Rpb24p
IHsKKyAgICBFeHBlY3RTcGVjUHJvcGVydHkobGFzdF9jbGF1c2VfIDw9IGtXaWxsT25jZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIi5XaWxsT25jZSgpIGNhbm5vdCBhcHBlYXIgYWZ0ZXIgIgor
ICAgICAgICAgICAgICAgICAgICAgICAiLldpbGxSZXBlYXRlZGx5KCkgb3IgLlJldGlyZXNPblNh
dHVyYXRpb24oKS4iKTsKKyAgICBsYXN0X2NsYXVzZV8gPSBrV2lsbE9uY2U7CisKKyAgICB1bnR5
cGVkX2FjdGlvbnNfLnB1c2hfYmFjayhuZXcgQWN0aW9uPEY+KGFjdGlvbikpOworICAgIGlmICgh
Y2FyZGluYWxpdHlfc3BlY2lmaWVkKCkpIHsKKyAgICAgIHNldF9jYXJkaW5hbGl0eShFeGFjdGx5
KHN0YXRpY19jYXN0PGludD4odW50eXBlZF9hY3Rpb25zXy5zaXplKCkpKSk7CisgICAgfQorICAg
IHJldHVybiAqdGhpczsKKyAgfQorCisgIC8vIEltcGxlbWVudHMgdGhlIC5XaWxsUmVwZWF0ZWRs
eSgpIGNsYXVzZS4KKyAgVHlwZWRFeHBlY3RhdGlvbiYgV2lsbFJlcGVhdGVkbHkoY29uc3QgQWN0
aW9uPEY+JiBhY3Rpb24pIHsKKyAgICBpZiAobGFzdF9jbGF1c2VfID09IGtXaWxsUmVwZWF0ZWRs
eSkgeworICAgICAgRXhwZWN0U3BlY1Byb3BlcnR5KGZhbHNlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICIuV2lsbFJlcGVhdGVkbHkoKSBjYW5ub3QgYXBwZWFyICIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAibW9yZSB0aGFuIG9uY2UgaW4gYW4gRVhQRUNUX0NBTEwoKS4iKTsKKyAgICB9
IGVsc2UgeworICAgICAgRXhwZWN0U3BlY1Byb3BlcnR5KGxhc3RfY2xhdXNlXyA8IGtXaWxsUmVw
ZWF0ZWRseSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiLldpbGxSZXBlYXRlZGx5KCkgY2Fu
bm90IGFwcGVhciAiCisgICAgICAgICAgICAgICAgICAgICAgICAgImFmdGVyIC5SZXRpcmVzT25T
YXR1cmF0aW9uKCkuIik7CisgICAgfQorICAgIGxhc3RfY2xhdXNlXyA9IGtXaWxsUmVwZWF0ZWRs
eTsKKyAgICByZXBlYXRlZF9hY3Rpb25fc3BlY2lmaWVkXyA9IHRydWU7CisKKyAgICByZXBlYXRl
ZF9hY3Rpb25fID0gYWN0aW9uOworICAgIGlmICghY2FyZGluYWxpdHlfc3BlY2lmaWVkKCkpIHsK
KyAgICAgIHNldF9jYXJkaW5hbGl0eShBdExlYXN0KHN0YXRpY19jYXN0PGludD4odW50eXBlZF9h
Y3Rpb25zXy5zaXplKCkpKSk7CisgICAgfQorCisgICAgLy8gTm93IHRoYXQgbm8gbW9yZSBhY3Rp
b24gY2xhdXNlcyBjYW4gYmUgc3BlY2lmaWVkLCB3ZSBjaGVjaworICAgIC8vIHdoZXRoZXIgdGhl
aXIgY291bnQgbWFrZXMgc2Vuc2UuCisgICAgQ2hlY2tBY3Rpb25Db3VudElmTm90RG9uZSgpOwor
ICAgIHJldHVybiAqdGhpczsKKyAgfQorCisgIC8vIEltcGxlbWVudHMgdGhlIC5SZXRpcmVzT25T
YXR1cmF0aW9uKCkgY2xhdXNlLgorICBUeXBlZEV4cGVjdGF0aW9uJiBSZXRpcmVzT25TYXR1cmF0
aW9uKCkgeworICAgIEV4cGVjdFNwZWNQcm9wZXJ0eShsYXN0X2NsYXVzZV8gPCBrUmV0aXJlc09u
U2F0dXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIi5SZXRpcmVzT25TYXR1cmF0aW9u
KCkgY2Fubm90IGFwcGVhciAiCisgICAgICAgICAgICAgICAgICAgICAgICJtb3JlIHRoYW4gb25j
ZS4iKTsKKyAgICBsYXN0X2NsYXVzZV8gPSBrUmV0aXJlc09uU2F0dXJhdGlvbjsKKyAgICByZXRp
cmVzX29uX3NhdHVyYXRpb25fID0gdHJ1ZTsKKworICAgIC8vIE5vdyB0aGF0IG5vIG1vcmUgYWN0
aW9uIGNsYXVzZXMgY2FuIGJlIHNwZWNpZmllZCwgd2UgY2hlY2sKKyAgICAvLyB3aGV0aGVyIHRo
ZWlyIGNvdW50IG1ha2VzIHNlbnNlLgorICAgIENoZWNrQWN0aW9uQ291bnRJZk5vdERvbmUoKTsK
KyAgICByZXR1cm4gKnRoaXM7CisgIH0KKworICAvLyBSZXR1cm5zIHRoZSBtYXRjaGVycyBmb3Ig
dGhlIGFyZ3VtZW50cyBhcyBzcGVjaWZpZWQgaW5zaWRlIHRoZQorICAvLyBFWFBFQ1RfQ0FMTCgp
IG1hY3JvLgorICBjb25zdCBBcmd1bWVudE1hdGNoZXJUdXBsZSYgbWF0Y2hlcnMoKSBjb25zdCB7
CisgICAgcmV0dXJuIG1hdGNoZXJzXzsKKyAgfQorCisgIC8vIFJldHVybnMgdGhlIG1hdGNoZXIg
c3BlY2lmaWVkIGJ5IHRoZSAuV2l0aCgpIGNsYXVzZS4KKyAgY29uc3QgTWF0Y2hlcjxjb25zdCBB
cmd1bWVudFR1cGxlJj4mIGV4dHJhX21hdGNoZXIoKSBjb25zdCB7CisgICAgcmV0dXJuIGV4dHJh
X21hdGNoZXJfOworICB9CisKKyAgLy8gUmV0dXJucyB0aGUgYWN0aW9uIHNwZWNpZmllZCBieSB0
aGUgLldpbGxSZXBlYXRlZGx5KCkgY2xhdXNlLgorICBjb25zdCBBY3Rpb248Rj4mIHJlcGVhdGVk
X2FjdGlvbigpIGNvbnN0IHsgcmV0dXJuIHJlcGVhdGVkX2FjdGlvbl87IH0KKworICAvLyBJZiB0
aGlzIG1vY2sgbWV0aG9kIGhhcyBhbiBleHRyYSBtYXRjaGVyIChpLmUuIC5XaXRoKG1hdGNoZXIp
KSwKKyAgLy8gZGVzY3JpYmVzIGl0IHRvIHRoZSBvc3RyZWFtLgorICB2aXJ0dWFsIHZvaWQgTWF5
YmVEZXNjcmliZUV4dHJhTWF0Y2hlclRvKDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAgIGlmIChl
eHRyYV9tYXRjaGVyX3NwZWNpZmllZF8pIHsKKyAgICAgICpvcyA8PCAiICAgIEV4cGVjdGVkIGFy
Z3M6ICI7CisgICAgICBleHRyYV9tYXRjaGVyXy5EZXNjcmliZVRvKG9zKTsKKyAgICAgICpvcyA8
PCAiXG4iOworICAgIH0KKyAgfQorCisgcHJpdmF0ZToKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1
bmN0aW9uPgorICBmcmllbmQgY2xhc3MgRnVuY3Rpb25Nb2NrZXJCYXNlOworCisgIC8vIFJldHVy
bnMgYW4gRXhwZWN0YXRpb24gb2JqZWN0IHRoYXQgcmVmZXJlbmNlcyBhbmQgY28tb3ducyB0aGlz
CisgIC8vIGV4cGVjdGF0aW9uLgorICB2aXJ0dWFsIEV4cGVjdGF0aW9uIEdldEhhbmRsZSgpIHsK
KyAgICByZXR1cm4gb3duZXJfLT5HZXRIYW5kbGVPZih0aGlzKTsKKyAgfQorCisgIC8vIFRoZSBm
b2xsb3dpbmcgbWV0aG9kcyB3aWxsIGJlIGNhbGxlZCBvbmx5IGFmdGVyIHRoZSBFWFBFQ1RfQ0FM
TCgpCisgIC8vIHN0YXRlbWVudCBmaW5pc2hlcyBhbmQgd2hlbiB0aGUgY3VycmVudCB0aHJlYWQg
aG9sZHMKKyAgLy8gZ19nbW9ja19tdXRleC4KKworICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoaXMg
ZXhwZWN0YXRpb24gbWF0Y2hlcyB0aGUgZ2l2ZW4gYXJndW1lbnRzLgorICBib29sIE1hdGNoZXMo
Y29uc3QgQXJndW1lbnRUdXBsZSYgYXJncykgY29uc3QKKyAgICAgIEdURVNUX0VYQ0xVU0lWRV9M
T0NLX1JFUVVJUkVEXyhnX2dtb2NrX211dGV4KSB7CisgICAgZ19nbW9ja19tdXRleC5Bc3NlcnRI
ZWxkKCk7CisgICAgcmV0dXJuIFR1cGxlTWF0Y2hlcyhtYXRjaGVyc18sIGFyZ3MpICYmIGV4dHJh
X21hdGNoZXJfLk1hdGNoZXMoYXJncyk7CisgIH0KKworICAvLyBSZXR1cm5zIHRydWUgaWZmIHRo
aXMgZXhwZWN0YXRpb24gc2hvdWxkIGhhbmRsZSB0aGUgZ2l2ZW4gYXJndW1lbnRzLgorICBib29s
IFNob3VsZEhhbmRsZUFyZ3VtZW50cyhjb25zdCBBcmd1bWVudFR1cGxlJiBhcmdzKSBjb25zdAor
ICAgICAgR1RFU1RfRVhDTFVTSVZFX0xPQ0tfUkVRVUlSRURfKGdfZ21vY2tfbXV0ZXgpIHsKKyAg
ICBnX2dtb2NrX211dGV4LkFzc2VydEhlbGQoKTsKKworICAgIC8vIEluIGNhc2UgdGhlIGFjdGlv
biBjb3VudCB3YXNuJ3QgY2hlY2tlZCB3aGVuIHRoZSBleHBlY3RhdGlvbgorICAgIC8vIHdhcyBk
ZWZpbmVkIChlLmcuIGlmIHRoaXMgZXhwZWN0YXRpb24gaGFzIG5vIFdpbGxSZXBlYXRlZGx5KCkK
KyAgICAvLyBvciBSZXRpcmVzT25TYXR1cmF0aW9uKCkgY2xhdXNlKSwgd2UgY2hlY2sgaXQgd2hl
biB0aGUKKyAgICAvLyBleHBlY3RhdGlvbiBpcyB1c2VkIGZvciB0aGUgZmlyc3QgdGltZS4KKyAg
ICBDaGVja0FjdGlvbkNvdW50SWZOb3REb25lKCk7CisgICAgcmV0dXJuICFpc19yZXRpcmVkKCkg
JiYgQWxsUHJlcmVxdWlzaXRlc0FyZVNhdGlzZmllZCgpICYmIE1hdGNoZXMoYXJncyk7CisgIH0K
KworICAvLyBEZXNjcmliZXMgdGhlIHJlc3VsdCBvZiBtYXRjaGluZyB0aGUgYXJndW1lbnRzIGFn
YWluc3QgdGhpcworICAvLyBleHBlY3RhdGlvbiB0byB0aGUgZ2l2ZW4gb3N0cmVhbS4KKyAgdm9p
ZCBFeHBsYWluTWF0Y2hSZXN1bHRUbygKKyAgICAgIGNvbnN0IEFyZ3VtZW50VHVwbGUmIGFyZ3Ms
CisgICAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0CisgICAgICAgICAgR1RFU1RfRVhDTFVT
SVZFX0xPQ0tfUkVRVUlSRURfKGdfZ21vY2tfbXV0ZXgpIHsKKyAgICBnX2dtb2NrX211dGV4LkFz
c2VydEhlbGQoKTsKKworICAgIGlmIChpc19yZXRpcmVkKCkpIHsKKyAgICAgICpvcyA8PCAiICAg
ICAgICAgRXhwZWN0ZWQ6IHRoZSBleHBlY3RhdGlvbiBpcyBhY3RpdmVcbiIKKyAgICAgICAgICA8
PCAiICAgICAgICAgICBBY3R1YWw6IGl0IGlzIHJldGlyZWRcbiI7CisgICAgfSBlbHNlIGlmICgh
TWF0Y2hlcyhhcmdzKSkgeworICAgICAgaWYgKCFUdXBsZU1hdGNoZXMobWF0Y2hlcnNfLCBhcmdz
KSkgeworICAgICAgICBFeHBsYWluTWF0Y2hGYWlsdXJlVHVwbGVUbyhtYXRjaGVyc18sIGFyZ3Ms
IG9zKTsKKyAgICAgIH0KKyAgICAgIFN0cmluZ01hdGNoUmVzdWx0TGlzdGVuZXIgbGlzdGVuZXI7
CisgICAgICBpZiAoIWV4dHJhX21hdGNoZXJfLk1hdGNoQW5kRXhwbGFpbihhcmdzLCAmbGlzdGVu
ZXIpKSB7CisgICAgICAgICpvcyA8PCAiICAgIEV4cGVjdGVkIGFyZ3M6ICI7CisgICAgICAgIGV4
dHJhX21hdGNoZXJfLkRlc2NyaWJlVG8ob3MpOworICAgICAgICAqb3MgPDwgIlxuICAgICAgICAg
ICBBY3R1YWw6IGRvbid0IG1hdGNoIjsKKworICAgICAgICBpbnRlcm5hbDo6UHJpbnRJZk5vdEVt
cHR5KGxpc3RlbmVyLnN0cigpLCBvcyk7CisgICAgICAgICpvcyA8PCAiXG4iOworICAgICAgfQor
ICAgIH0gZWxzZSBpZiAoIUFsbFByZXJlcXVpc2l0ZXNBcmVTYXRpc2ZpZWQoKSkgeworICAgICAg
Km9zIDw8ICIgICAgICAgICBFeHBlY3RlZDogYWxsIHByZS1yZXF1aXNpdGVzIGFyZSBzYXRpc2Zp
ZWRcbiIKKyAgICAgICAgICA8PCAiICAgICAgICAgICBBY3R1YWw6IHRoZSBmb2xsb3dpbmcgaW1t
ZWRpYXRlIHByZS1yZXF1aXNpdGVzICIKKyAgICAgICAgICA8PCAiYXJlIG5vdCBzYXRpc2ZpZWQ6
XG4iOworICAgICAgRXhwZWN0YXRpb25TZXQgdW5zYXRpc2ZpZWRfcHJlcmVxczsKKyAgICAgIEZp
bmRVbnNhdGlzZmllZFByZXJlcXVpc2l0ZXMoJnVuc2F0aXNmaWVkX3ByZXJlcXMpOworICAgICAg
aW50IGkgPSAwOworICAgICAgZm9yIChFeHBlY3RhdGlvblNldDo6Y29uc3RfaXRlcmF0b3IgaXQg
PSB1bnNhdGlzZmllZF9wcmVyZXFzLmJlZ2luKCk7CisgICAgICAgICAgIGl0ICE9IHVuc2F0aXNm
aWVkX3ByZXJlcXMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgaXQtPmV4cGVjdGF0aW9uX2Jhc2Uo
KS0+RGVzY3JpYmVMb2NhdGlvblRvKG9zKTsKKyAgICAgICAgKm9zIDw8ICJwcmUtcmVxdWlzaXRl
ICMiIDw8IGkrKyA8PCAiXG4iOworICAgICAgfQorICAgICAgKm9zIDw8ICIgICAgICAgICAgICAg
ICAgICAgKGVuZCBvZiBwcmUtcmVxdWlzaXRlcylcbiI7CisgICAgfSBlbHNlIHsKKyAgICAgIC8v
IFRoaXMgbGluZSBpcyBoZXJlIGp1c3QgZm9yIGNvbXBsZXRlbmVzcycgc2FrZS4gIEl0IHdpbGwg
bmV2ZXIKKyAgICAgIC8vIGJlIGV4ZWN1dGVkIGFzIGN1cnJlbnRseSB0aGUgRXhwbGFpbk1hdGNo
UmVzdWx0VG8oKSBmdW5jdGlvbgorICAgICAgLy8gaXMgY2FsbGVkIG9ubHkgd2hlbiB0aGUgbW9j
ayBmdW5jdGlvbiBjYWxsIGRvZXMgTk9UIG1hdGNoIHRoZQorICAgICAgLy8gZXhwZWN0YXRpb24u
CisgICAgICAqb3MgPDwgIlRoZSBjYWxsIG1hdGNoZXMgdGhlIGV4cGVjdGF0aW9uLlxuIjsKKyAg
ICB9CisgIH0KKworICAvLyBSZXR1cm5zIHRoZSBhY3Rpb24gdGhhdCBzaG91bGQgYmUgdGFrZW4g
Zm9yIHRoZSBjdXJyZW50IGludm9jYXRpb24uCisgIGNvbnN0IEFjdGlvbjxGPiYgR2V0Q3VycmVu
dEFjdGlvbigKKyAgICAgIGNvbnN0IEZ1bmN0aW9uTW9ja2VyQmFzZTxGPiogbW9ja2VyLAorICAg
ICAgY29uc3QgQXJndW1lbnRUdXBsZSYgYXJncykgY29uc3QKKyAgICAgICAgICBHVEVTVF9FWENM
VVNJVkVfTE9DS19SRVFVSVJFRF8oZ19nbW9ja19tdXRleCkgeworICAgIGdfZ21vY2tfbXV0ZXgu
QXNzZXJ0SGVsZCgpOworICAgIGNvbnN0IGludCBjb3VudCA9IGNhbGxfY291bnQoKTsKKyAgICBB
c3NlcnQoY291bnQgPj0gMSwgX19GSUxFX18sIF9fTElORV9fLAorICAgICAgICAgICAiY2FsbF9j
b3VudCgpIGlzIDw9IDAgd2hlbiBHZXRDdXJyZW50QWN0aW9uKCkgaXMgIgorICAgICAgICAgICAi
Y2FsbGVkIC0gdGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLiIpOworCisgICAgY29uc3QgaW50IGFj
dGlvbl9jb3VudCA9IHN0YXRpY19jYXN0PGludD4odW50eXBlZF9hY3Rpb25zXy5zaXplKCkpOwor
ICAgIGlmIChhY3Rpb25fY291bnQgPiAwICYmICFyZXBlYXRlZF9hY3Rpb25fc3BlY2lmaWVkXyAm
JgorICAgICAgICBjb3VudCA+IGFjdGlvbl9jb3VudCkgeworICAgICAgLy8gSWYgdGhlcmUgaXMg
YXQgbGVhc3Qgb25lIFdpbGxPbmNlKCkgYW5kIG5vIFdpbGxSZXBlYXRlZGx5KCksCisgICAgICAv
LyB3ZSB3YXJuIHRoZSB1c2VyIHdoZW4gdGhlIFdpbGxPbmNlKCkgY2xhdXNlcyByYW4gb3V0Lgor
ICAgICAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgICAgIERlc2NyaWJlTG9jYXRpb25Ubygm
c3MpOworICAgICAgc3MgPDwgIkFjdGlvbnMgcmFuIG91dCBpbiAiIDw8IHNvdXJjZV90ZXh0KCkg
PDwgIi4uLlxuIgorICAgICAgICAgPDwgIkNhbGxlZCAiIDw8IGNvdW50IDw8ICIgdGltZXMsIGJ1
dCBvbmx5ICIKKyAgICAgICAgIDw8IGFjdGlvbl9jb3VudCA8PCAiIFdpbGxPbmNlKCkiCisgICAg
ICAgICA8PCAoYWN0aW9uX2NvdW50ID09IDEgPyAiIGlzIiA6ICJzIGFyZSIpIDw8ICIgc3BlY2lm
aWVkIC0gIjsKKyAgICAgIG1vY2tlci0+RGVzY3JpYmVEZWZhdWx0QWN0aW9uVG8oYXJncywgJnNz
KTsKKyAgICAgIExvZyhrV2FybmluZywgc3Muc3RyKCksIDEpOworICAgIH0KKworICAgIHJldHVy
biBjb3VudCA8PSBhY3Rpb25fY291bnQgPworICAgICAgICAqc3RhdGljX2Nhc3Q8Y29uc3QgQWN0
aW9uPEY+Kj4odW50eXBlZF9hY3Rpb25zX1tjb3VudCAtIDFdKSA6CisgICAgICAgIHJlcGVhdGVk
X2FjdGlvbigpOworICB9CisKKyAgLy8gR2l2ZW4gdGhlIGFyZ3VtZW50cyBvZiBhIG1vY2sgZnVu
Y3Rpb24gY2FsbCwgaWYgdGhlIGNhbGwgd2lsbAorICAvLyBvdmVyLXNhdHVyYXRlIHRoaXMgZXhw
ZWN0YXRpb24sIHJldHVybnMgdGhlIGRlZmF1bHQgYWN0aW9uOworICAvLyBvdGhlcndpc2UsIHJl
dHVybnMgdGhlIG5leHQgYWN0aW9uIGluIHRoaXMgZXhwZWN0YXRpb24uICBBbHNvCisgIC8vIGRl
c2NyaWJlcyAqd2hhdCogaGFwcGVuZWQgdG8gJ3doYXQnLCBhbmQgZXhwbGFpbnMgKndoeSogR29v
Z2xlCisgIC8vIE1vY2sgZG9lcyBpdCB0byAnd2h5Jy4gIFRoaXMgbWV0aG9kIGlzIG5vdCBjb25z
dCBhcyBpdCBjYWxscworICAvLyBJbmNyZW1lbnRDYWxsQ291bnQoKS4gIEEgcmV0dXJuIHZhbHVl
IG9mIE5VTEwgbWVhbnMgdGhlIGRlZmF1bHQKKyAgLy8gYWN0aW9uLgorICBjb25zdCBBY3Rpb248
Rj4qIEdldEFjdGlvbkZvckFyZ3VtZW50cygKKyAgICAgIGNvbnN0IEZ1bmN0aW9uTW9ja2VyQmFz
ZTxGPiogbW9ja2VyLAorICAgICAgY29uc3QgQXJndW1lbnRUdXBsZSYgYXJncywKKyAgICAgIDo6
c3RkOjpvc3RyZWFtKiB3aGF0LAorICAgICAgOjpzdGQ6Om9zdHJlYW0qIHdoeSkKKyAgICAgICAg
ICBHVEVTVF9FWENMVVNJVkVfTE9DS19SRVFVSVJFRF8oZ19nbW9ja19tdXRleCkgeworICAgIGdf
Z21vY2tfbXV0ZXguQXNzZXJ0SGVsZCgpOworICAgIGlmIChJc1NhdHVyYXRlZCgpKSB7CisgICAg
ICAvLyBXZSBoYXZlIGFuIGV4Y2Vzc2l2ZSBjYWxsLgorICAgICAgSW5jcmVtZW50Q2FsbENvdW50
KCk7CisgICAgICAqd2hhdCA8PCAiTW9jayBmdW5jdGlvbiBjYWxsZWQgbW9yZSB0aW1lcyB0aGFu
IGV4cGVjdGVkIC0gIjsKKyAgICAgIG1vY2tlci0+RGVzY3JpYmVEZWZhdWx0QWN0aW9uVG8oYXJn
cywgd2hhdCk7CisgICAgICBEZXNjcmliZUNhbGxDb3VudFRvKHdoeSk7CisKKyAgICAgIC8vIFRP
RE8od2FuQGdvb2dsZS5jb20pOiBhbGxvdyB0aGUgdXNlciB0byBjb250cm9sIHdoZXRoZXIKKyAg
ICAgIC8vIHVuZXhwZWN0ZWQgY2FsbHMgc2hvdWxkIGZhaWwgaW1tZWRpYXRlbHkgb3IgY29udGlu
dWUgdXNpbmcgYQorICAgICAgLy8gZmxhZyAtLWdtb2NrX3VuZXhwZWN0ZWRfY2FsbHNfYXJlX2Zh
dGFsLgorICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgSW5jcmVtZW50Q2FsbENvdW50
KCk7CisgICAgUmV0aXJlQWxsUHJlUmVxdWlzaXRlcygpOworCisgICAgaWYgKHJldGlyZXNfb25f
c2F0dXJhdGlvbl8gJiYgSXNTYXR1cmF0ZWQoKSkgeworICAgICAgUmV0aXJlKCk7CisgICAgfQor
CisgICAgLy8gTXVzdCBiZSBkb25lIGFmdGVyIEluY3JlbWVudENvdW50KCkhCisgICAgKndoYXQg
PDwgIk1vY2sgZnVuY3Rpb24gY2FsbCBtYXRjaGVzICIgPDwgc291cmNlX3RleHQoKSA8PCIuLi5c
biI7CisgICAgcmV0dXJuICYoR2V0Q3VycmVudEFjdGlvbihtb2NrZXIsIGFyZ3MpKTsKKyAgfQor
CisgIC8vIEFsbCB0aGUgZmllbGRzIGJlbG93IHdvbid0IGNoYW5nZSBvbmNlIHRoZSBFWFBFQ1Rf
Q0FMTCgpCisgIC8vIHN0YXRlbWVudCBmaW5pc2hlcy4KKyAgRnVuY3Rpb25Nb2NrZXJCYXNlPEY+
KiBjb25zdCBvd25lcl87CisgIEFyZ3VtZW50TWF0Y2hlclR1cGxlIG1hdGNoZXJzXzsKKyAgTWF0
Y2hlcjxjb25zdCBBcmd1bWVudFR1cGxlJj4gZXh0cmFfbWF0Y2hlcl87CisgIEFjdGlvbjxGPiBy
ZXBlYXRlZF9hY3Rpb25fOworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVHlw
ZWRFeHBlY3RhdGlvbik7Cit9OyAgLy8gY2xhc3MgVHlwZWRFeHBlY3RhdGlvbgorCisvLyBBIE1v
Y2tTcGVjIG9iamVjdCBpcyB1c2VkIGJ5IE9OX0NBTEwoKSBvciBFWFBFQ1RfQ0FMTCgpIGZvcgor
Ly8gc3BlY2lmeWluZyB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiwgb3IgZXhwZWN0YXRpb24gb24s
IGEgbW9jaworLy8gZnVuY3Rpb24uCisKKy8vIE5vdGU6IGNsYXNzIE1vY2tTcGVjIHJlYWxseSBi
ZWxvbmdzIHRvIHRoZSA6OnRlc3RpbmcgbmFtZXNwYWNlLgorLy8gSG93ZXZlciBpZiB3ZSBkZWZp
bmUgaXQgaW4gOjp0ZXN0aW5nLCBNU1ZDIHdpbGwgY29tcGxhaW4gd2hlbgorLy8gY2xhc3NlcyBp
biA6OnRlc3Rpbmc6OmludGVybmFsIGRlY2xhcmUgaXQgYXMgYSBmcmllbmQgY2xhc3MKKy8vIHRl
bXBsYXRlLiAgVG8gd29ya2Fyb3VuZCB0aGlzIGNvbXBpbGVyIGJ1Zywgd2UgZGVmaW5lIE1vY2tT
cGVjIGluCisvLyA6OnRlc3Rpbmc6OmludGVybmFsIGFuZCBpbXBvcnQgaXQgaW50byA6OnRlc3Rp
bmcuCisKKy8vIExvZ3MgYSBtZXNzYWdlIGluY2x1ZGluZyBmaWxlIGFuZCBsaW5lIG51bWJlciBp
bmZvcm1hdGlvbi4KK0dURVNUX0FQSV8gdm9pZCBMb2dXaXRoTG9jYXRpb24odGVzdGluZzo6aW50
ZXJuYWw6OkxvZ1NldmVyaXR5IHNldmVyaXR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UpOworCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgRj4KK2NsYXNzIE1vY2tTcGVjIHsKKyBwdWJsaWM6CisgIHR5cGVkZWYgdHlwZW5hbWUgaW50
ZXJuYWw6OkZ1bmN0aW9uPEY+OjpBcmd1bWVudFR1cGxlIEFyZ3VtZW50VHVwbGU7CisgIHR5cGVk
ZWYgdHlwZW5hbWUgaW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpBcmd1bWVudE1hdGNoZXJUdXBsZQor
ICAgICAgQXJndW1lbnRNYXRjaGVyVHVwbGU7CisKKyAgLy8gQ29uc3RydWN0cyBhIE1vY2tTcGVj
IG9iamVjdCwgZ2l2ZW4gdGhlIGZ1bmN0aW9uIG1vY2tlciBvYmplY3QKKyAgLy8gdGhhdCB0aGUg
c3BlYyBpcyBhc3NvY2lhdGVkIHdpdGguCisgIGV4cGxpY2l0IE1vY2tTcGVjKGludGVybmFsOjpG
dW5jdGlvbk1vY2tlckJhc2U8Rj4qIGZ1bmN0aW9uX21vY2tlcikKKyAgICAgIDogZnVuY3Rpb25f
bW9ja2VyXyhmdW5jdGlvbl9tb2NrZXIpIHt9CisKKyAgLy8gQWRkcyBhIG5ldyBkZWZhdWx0IGFj
dGlvbiBzcGVjIHRvIHRoZSBmdW5jdGlvbiBtb2NrZXIgYW5kIHJldHVybnMKKyAgLy8gdGhlIG5l
d2x5IGNyZWF0ZWQgc3BlYy4KKyAgaW50ZXJuYWw6Ok9uQ2FsbFNwZWM8Rj4mIEludGVybmFsRGVm
YXVsdEFjdGlvblNldEF0KAorICAgICAgY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0
IGNoYXIqIG9iaiwgY29uc3QgY2hhciogY2FsbCkgeworICAgIExvZ1dpdGhMb2NhdGlvbihpbnRl
cm5hbDo6a0luZm8sIGZpbGUsIGxpbmUsCisgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5n
KCJPTl9DQUxMKCIpICsgb2JqICsgIiwgIiArIGNhbGwgKyAiKSBpbnZva2VkIik7CisgICAgcmV0
dXJuIGZ1bmN0aW9uX21vY2tlcl8tPkFkZE5ld09uQ2FsbFNwZWMoZmlsZSwgbGluZSwgbWF0Y2hl
cnNfKTsKKyAgfQorCisgIC8vIEFkZHMgYSBuZXcgZXhwZWN0YXRpb24gc3BlYyB0byB0aGUgZnVu
Y3Rpb24gbW9ja2VyIGFuZCByZXR1cm5zCisgIC8vIHRoZSBuZXdseSBjcmVhdGVkIHNwZWMuCisg
IGludGVybmFsOjpUeXBlZEV4cGVjdGF0aW9uPEY+JiBJbnRlcm5hbEV4cGVjdGVkQXQoCisgICAg
ICBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogb2JqLCBjb25zdCBjaGFy
KiBjYWxsKSB7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgc291cmNlX3RleHQoc3RkOjpzdHJpbmco
IkVYUEVDVF9DQUxMKCIpICsgb2JqICsgIiwgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2FsbCArICIpIik7CisgICAgTG9nV2l0aExvY2F0aW9uKGludGVybmFsOjprSW5m
bywgZmlsZSwgbGluZSwgc291cmNlX3RleHQgKyAiIGludm9rZWQiKTsKKyAgICByZXR1cm4gZnVu
Y3Rpb25fbW9ja2VyXy0+QWRkTmV3RXhwZWN0YXRpb24oCisgICAgICAgIGZpbGUsIGxpbmUsIHNv
dXJjZV90ZXh0LCBtYXRjaGVyc18pOworICB9CisKKyBwcml2YXRlOgorICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgRnVuY3Rpb24+CisgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6RnVuY3Rpb25Nb2NrZXI7
CisKKyAgdm9pZCBTZXRNYXRjaGVycyhjb25zdCBBcmd1bWVudE1hdGNoZXJUdXBsZSYgbWF0Y2hl
cnMpIHsKKyAgICBtYXRjaGVyc18gPSBtYXRjaGVyczsKKyAgfQorCisgIC8vIFRoZSBmdW5jdGlv
biBtb2NrZXIgdGhhdCBvd25zIHRoaXMgc3BlYy4KKyAgaW50ZXJuYWw6OkZ1bmN0aW9uTW9ja2Vy
QmFzZTxGPiogY29uc3QgZnVuY3Rpb25fbW9ja2VyXzsKKyAgLy8gVGhlIGFyZ3VtZW50IG1hdGNo
ZXJzIHNwZWNpZmllZCBpbiB0aGUgc3BlYy4KKyAgQXJndW1lbnRNYXRjaGVyVHVwbGUgbWF0Y2hl
cnNfOworCisgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oTW9ja1NwZWMpOworfTsgIC8vIGNsYXNz
IE1vY2tTcGVjCisKKy8vIFdyYXBwZXIgdHlwZSBmb3IgZ2VuZXJpY2FsbHkgaG9sZGluZyBhbiBv
cmRpbmFyeSB2YWx1ZSBvciBsdmFsdWUgcmVmZXJlbmNlLgorLy8gSWYgVCBpcyBub3QgYSByZWZl
cmVuY2UgdHlwZSwgaXQgbXVzdCBiZSBjb3B5YWJsZSBvciBtb3ZhYmxlLgorLy8gUmVmZXJlbmNl
T3JWYWx1ZVdyYXBwZXI8VD4gaXMgbW92YWJsZSwgYW5kIHdpbGwgYWxzbyBiZSBjb3B5YWJsZSB1
bmxlc3MKKy8vIFQgaXMgYSBtb3ZlLW9ubHkgdmFsdWUgdHlwZSAod2hpY2ggbWVhbnMgdGhhdCBp
dCB3aWxsIGFsd2F5cyBiZSBjb3B5YWJsZQorLy8gaWYgdGhlIGN1cnJlbnQgcGxhdGZvcm0gZG9l
cyBub3Qgc3VwcG9ydCBtb3ZlIHNlbWFudGljcykuCisvLworLy8gVGhlIHByaW1hcnkgdGVtcGxh
dGUgZGVmaW5lcyBoYW5kbGluZyBmb3IgdmFsdWVzLCBidXQgZnVuY3Rpb24gaGVhZGVyCisvLyBj
b21tZW50cyBkZXNjcmliZSB0aGUgY29udHJhY3QgZm9yIHRoZSB3aG9sZSB0ZW1wbGF0ZSAoaW5j
bHVkaW5nCisvLyBzcGVjaWFsaXphdGlvbnMpLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFz
cyBSZWZlcmVuY2VPclZhbHVlV3JhcHBlciB7CisgcHVibGljOgorICAvLyBDb25zdHJ1Y3RzIGEg
d3JhcHBlciBmcm9tIHRoZSBnaXZlbiB2YWx1ZS9yZWZlcmVuY2UuCisgIGV4cGxpY2l0IFJlZmVy
ZW5jZU9yVmFsdWVXcmFwcGVyKFQgdmFsdWUpCisgICAgICA6IHZhbHVlXyg6OnRlc3Rpbmc6Omlu
dGVybmFsOjptb3ZlKHZhbHVlKSkgeworICB9CisKKyAgLy8gVW53cmFwcyBhbmQgcmV0dXJucyB0
aGUgdW5kZXJseWluZyB2YWx1ZS9yZWZlcmVuY2UsIGV4YWN0bHkgYXMKKyAgLy8gb3JpZ2luYWxs
eSBwYXNzZWQuIFRoZSBiZWhhdmlvciBvZiBjYWxsaW5nIHRoaXMgbW9yZSB0aGFuIG9uY2Ugb24K
KyAgLy8gdGhlIHNhbWUgb2JqZWN0IGlzIHVuc3BlY2lmaWVkLgorICBUIFVud3JhcCgpIHsgcmV0
dXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6Om1vdmUodmFsdWVfKTsgfQorCisgIC8vIFByb3ZpZGVz
IG5vbmRlc3RydWN0aXZlIGFjY2VzcyB0byB0aGUgdW5kZXJseWluZyB2YWx1ZS9yZWZlcmVuY2Uu
CisgIC8vIEFsd2F5cyByZXR1cm5zIGEgY29uc3QgcmVmZXJlbmNlIChtb3JlIHByZWNpc2VseSwK
KyAgLy8gY29uc3QgUmVtb3ZlUmVmZXJlbmNlPFQ+JikuIFRoZSBiZWhhdmlvciBvZiBjYWxsaW5n
IHRoaXMgYWZ0ZXIKKyAgLy8gY2FsbGluZyBVbndyYXAgb24gdGhlIHNhbWUgb2JqZWN0IGlzIHVu
c3BlY2lmaWVkLgorICBjb25zdCBUJiBQZWVrKCkgY29uc3QgeworICAgIHJldHVybiB2YWx1ZV87
CisgIH0KKworIHByaXZhdGU6CisgIFQgdmFsdWVfOworfTsKKworLy8gU3BlY2lhbGl6YXRpb24g
Zm9yIGx2YWx1ZSByZWZlcmVuY2UgdHlwZXMuIFNlZSBwcmltYXJ5IHRlbXBsYXRlCisvLyBmb3Ig
ZG9jdW1lbnRhdGlvbi4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgUmVmZXJlbmNlT3JW
YWx1ZVdyYXBwZXI8VCY+IHsKKyBwdWJsaWM6CisgIC8vIFdvcmthcm91bmQgZm9yIGRlYmF0YWJs
ZSBwYXNzLWJ5LXJlZmVyZW5jZSBsaW50IHdhcm5pbmcgKGMtbGlicmFyeS10ZWFtCisgIC8vIHBv
bGljeSBwcmVjbHVkZXMgTk9MSU5UIGluIHRoaXMgY29udGV4dCkKKyAgdHlwZWRlZiBUJiByZWZl
cmVuY2U7CisgIGV4cGxpY2l0IFJlZmVyZW5jZU9yVmFsdWVXcmFwcGVyKHJlZmVyZW5jZSByZWYp
CisgICAgICA6IHZhbHVlX3B0cl8oJnJlZikge30KKyAgVCYgVW53cmFwKCkgeyByZXR1cm4gKnZh
bHVlX3B0cl87IH0KKyAgY29uc3QgVCYgUGVlaygpIGNvbnN0IHsgcmV0dXJuICp2YWx1ZV9wdHJf
OyB9CisKKyBwcml2YXRlOgorICBUKiB2YWx1ZV9wdHJfOworfTsKKworLy8gTVNWQyB3YXJucyBh
Ym91dCB1c2luZyAndGhpcycgaW4gYmFzZSBtZW1iZXIgaW5pdGlhbGl6ZXIgbGlzdCwgc28KKy8v
IHdlIG5lZWQgdG8gdGVtcG9yYXJpbHkgZGlzYWJsZSB0aGUgd2FybmluZy4gIFdlIGhhdmUgdG8g
ZG8gaXQgZm9yCisvLyB0aGUgZW50aXJlIGNsYXNzIHRvIHN1cHByZXNzIHRoZSB3YXJuaW5nLCBl
dmVuIHRob3VnaCBpdCdzIGFib3V0CisvLyB0aGUgY29uc3RydWN0b3Igb25seS4KKworI2lmZGVm
IF9NU0NfVkVSCisjIHByYWdtYSB3YXJuaW5nKHB1c2gpICAgICAgICAgIC8vIFNhdmVzIHRoZSBj
dXJyZW50IHdhcm5pbmcgc3RhdGUuCisjIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDM1NSkgIC8v
IFRlbXBvcmFyaWx5IGRpc2FibGVzIHdhcm5pbmcgNDM1NS4KKyNlbmRpZiAgLy8gX01TVl9WRVIK
KworLy8gQysrIHRyZWF0cyB0aGUgdm9pZCB0eXBlIHNwZWNpYWxseS4gIEZvciBleGFtcGxlLCB5
b3UgY2Fubm90IGRlZmluZQorLy8gYSB2b2lkLXR5cGVkIHZhcmlhYmxlIG9yIHBhc3MgYSB2b2lk
IHZhbHVlIHRvIGEgZnVuY3Rpb24uCisvLyBBY3Rpb25SZXN1bHRIb2xkZXI8VD4gaG9sZHMgYSB2
YWx1ZSBvZiB0eXBlIFQsIHdoZXJlIFQgbXVzdCBiZSBhCisvLyBjb3B5YWJsZSB0eXBlIG9yIHZv
aWQgKFQgZG9lc24ndCBuZWVkIHRvIGJlIGRlZmF1bHQtY29uc3RydWN0YWJsZSkuCisvLyBJdCBo
aWRlcyB0aGUgc3ludGFjdGljIGRpZmZlcmVuY2UgYmV0d2VlbiB2b2lkIGFuZCBvdGhlciB0eXBl
cywgYW5kCisvLyBpcyB1c2VkIHRvIHVuaWZ5IHRoZSBjb2RlIGZvciBpbnZva2luZyBib3RoIHZv
aWQtcmV0dXJuaW5nIGFuZAorLy8gbm9uLXZvaWQtcmV0dXJuaW5nIG1vY2sgZnVuY3Rpb25zLgor
CisvLyBVbnR5cGVkIGJhc2UgY2xhc3MgZm9yIEFjdGlvblJlc3VsdEhvbGRlcjxUPi4KK2NsYXNz
IFVudHlwZWRBY3Rpb25SZXN1bHRIb2xkZXJCYXNlIHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgflVu
dHlwZWRBY3Rpb25SZXN1bHRIb2xkZXJCYXNlKCkge30KKworICAvLyBQcmludHMgdGhlIGhlbGQg
dmFsdWUgYXMgYW4gYWN0aW9uJ3MgcmVzdWx0IHRvIG9zLgorICB2aXJ0dWFsIHZvaWQgUHJpbnRB
c0FjdGlvblJlc3VsdCg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0ID0gMDsKK307CisKKy8vIFRo
aXMgZ2VuZXJpYyBkZWZpbml0aW9uIGlzIHVzZWQgd2hlbiBUIGlzIG5vdCB2b2lkLgordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBBY3Rpb25SZXN1bHRIb2xkZXIgOiBwdWJsaWMgVW50eXBl
ZEFjdGlvblJlc3VsdEhvbGRlckJhc2UgeworIHB1YmxpYzoKKyAgLy8gUmV0dXJucyB0aGUgaGVs
ZCB2YWx1ZS4gTXVzdCBub3QgYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNlLgorICBUIFVud3JhcCgp
IHsKKyAgICByZXR1cm4gcmVzdWx0Xy5VbndyYXAoKTsKKyAgfQorCisgIC8vIFByaW50cyB0aGUg
aGVsZCB2YWx1ZSBhcyBhbiBhY3Rpb24ncyByZXN1bHQgdG8gb3MuCisgIHZpcnR1YWwgdm9pZCBQ
cmludEFzQWN0aW9uUmVzdWx0KDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgeworICAgICpvcyA8
PCAiXG4gICAgICAgICAgUmV0dXJuczogIjsKKyAgICAvLyBUIG1heSBiZSBhIHJlZmVyZW5jZSB0
eXBlLCBzbyB3ZSBkb24ndCB1c2UgVW5pdmVyc2FsUHJpbnQoKS4KKyAgICBVbml2ZXJzYWxQcmlu
dGVyPFQ+OjpQcmludChyZXN1bHRfLlBlZWsoKSwgb3MpOworICB9CisKKyAgLy8gUGVyZm9ybXMg
dGhlIGdpdmVuIG1vY2sgZnVuY3Rpb24ncyBkZWZhdWx0IGFjdGlvbiBhbmQgcmV0dXJucyB0aGUK
KyAgLy8gcmVzdWx0IGluIGEgbmV3LWVkIEFjdGlvblJlc3VsdEhvbGRlci4KKyAgdGVtcGxhdGUg
PHR5cGVuYW1lIEY+CisgIHN0YXRpYyBBY3Rpb25SZXN1bHRIb2xkZXIqIFBlcmZvcm1EZWZhdWx0
QWN0aW9uKAorICAgICAgY29uc3QgRnVuY3Rpb25Nb2NrZXJCYXNlPEY+KiBmdW5jX21vY2tlciwK
KyAgICAgIGNvbnN0IHR5cGVuYW1lIEZ1bmN0aW9uPEY+OjpBcmd1bWVudFR1cGxlJiBhcmdzLAor
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNhbGxfZGVzY3JpcHRpb24pIHsKKyAgICByZXR1cm4g
bmV3IEFjdGlvblJlc3VsdEhvbGRlcihXcmFwcGVyKAorICAgICAgICBmdW5jX21vY2tlci0+UGVy
Zm9ybURlZmF1bHRBY3Rpb24oYXJncywgY2FsbF9kZXNjcmlwdGlvbikpKTsKKyAgfQorCisgIC8v
IFBlcmZvcm1zIHRoZSBnaXZlbiBhY3Rpb24gYW5kIHJldHVybnMgdGhlIHJlc3VsdCBpbiBhIG5l
dy1lZAorICAvLyBBY3Rpb25SZXN1bHRIb2xkZXIuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBGPgor
ICBzdGF0aWMgQWN0aW9uUmVzdWx0SG9sZGVyKgorICBQZXJmb3JtQWN0aW9uKGNvbnN0IEFjdGlv
bjxGPiYgYWN0aW9uLAorICAgICAgICAgICAgICAgIGNvbnN0IHR5cGVuYW1lIEZ1bmN0aW9uPEY+
OjpBcmd1bWVudFR1cGxlJiBhcmdzKSB7CisgICAgcmV0dXJuIG5ldyBBY3Rpb25SZXN1bHRIb2xk
ZXIoV3JhcHBlcihhY3Rpb24uUGVyZm9ybShhcmdzKSkpOworICB9CisKKyBwcml2YXRlOgorICB0
eXBlZGVmIFJlZmVyZW5jZU9yVmFsdWVXcmFwcGVyPFQ+IFdyYXBwZXI7CisKKyAgZXhwbGljaXQg
QWN0aW9uUmVzdWx0SG9sZGVyKFdyYXBwZXIgcmVzdWx0KQorICAgICAgOiByZXN1bHRfKDo6dGVz
dGluZzo6aW50ZXJuYWw6Om1vdmUocmVzdWx0KSkgeworICB9CisKKyAgV3JhcHBlciByZXN1bHRf
OworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oQWN0aW9uUmVzdWx0SG9sZGVy
KTsKK307CisKKy8vIFNwZWNpYWxpemF0aW9uIGZvciBUID0gdm9pZC4KK3RlbXBsYXRlIDw+Citj
bGFzcyBBY3Rpb25SZXN1bHRIb2xkZXI8dm9pZD4gOiBwdWJsaWMgVW50eXBlZEFjdGlvblJlc3Vs
dEhvbGRlckJhc2UgeworIHB1YmxpYzoKKyAgdm9pZCBVbndyYXAoKSB7IH0KKworICB2aXJ0dWFs
IHZvaWQgUHJpbnRBc0FjdGlvblJlc3VsdCg6OnN0ZDo6b3N0cmVhbSogLyogb3MgKi8pIGNvbnN0
IHt9CisKKyAgLy8gUGVyZm9ybXMgdGhlIGdpdmVuIG1vY2sgZnVuY3Rpb24ncyBkZWZhdWx0IGFj
dGlvbiBhbmQgcmV0dXJucyBvd25lcnNoaXAKKyAgLy8gb2YgYW4gZW1wdHkgQWN0aW9uUmVzdWx0
SG9sZGVyKi4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+CisgIHN0YXRpYyBBY3Rpb25SZXN1bHRI
b2xkZXIqIFBlcmZvcm1EZWZhdWx0QWN0aW9uKAorICAgICAgY29uc3QgRnVuY3Rpb25Nb2NrZXJC
YXNlPEY+KiBmdW5jX21vY2tlciwKKyAgICAgIGNvbnN0IHR5cGVuYW1lIEZ1bmN0aW9uPEY+OjpB
cmd1bWVudFR1cGxlJiBhcmdzLAorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNhbGxfZGVzY3Jp
cHRpb24pIHsKKyAgICBmdW5jX21vY2tlci0+UGVyZm9ybURlZmF1bHRBY3Rpb24oYXJncywgY2Fs
bF9kZXNjcmlwdGlvbik7CisgICAgcmV0dXJuIG5ldyBBY3Rpb25SZXN1bHRIb2xkZXI7CisgIH0K
KworICAvLyBQZXJmb3JtcyB0aGUgZ2l2ZW4gYWN0aW9uIGFuZCByZXR1cm5zIG93bmVyc2hpcCBv
ZiBhbiBlbXB0eQorICAvLyBBY3Rpb25SZXN1bHRIb2xkZXIqLgorICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgRj4KKyAgc3RhdGljIEFjdGlvblJlc3VsdEhvbGRlciogUGVyZm9ybUFjdGlvbigKKyAgICAg
IGNvbnN0IEFjdGlvbjxGPiYgYWN0aW9uLAorICAgICAgY29uc3QgdHlwZW5hbWUgRnVuY3Rpb248
Rj46OkFyZ3VtZW50VHVwbGUmIGFyZ3MpIHsKKyAgICBhY3Rpb24uUGVyZm9ybShhcmdzKTsKKyAg
ICByZXR1cm4gbmV3IEFjdGlvblJlc3VsdEhvbGRlcjsKKyAgfQorCisgcHJpdmF0ZToKKyAgQWN0
aW9uUmVzdWx0SG9sZGVyKCkge30KKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhB
Y3Rpb25SZXN1bHRIb2xkZXIpOworfTsKKworLy8gVGhlIGJhc2Ugb2YgdGhlIGZ1bmN0aW9uIG1v
Y2tlciBjbGFzcyBmb3IgdGhlIGdpdmVuIGZ1bmN0aW9uIHR5cGUuCisvLyBXZSBwdXQgdGhlIG1l
dGhvZHMgaW4gdGhpcyBjbGFzcyBpbnN0ZWFkIG9mIGl0cyBjaGlsZCB0byBhdm9pZCBjb2RlCisv
LyBibG9hdC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBGPgorY2xhc3MgRnVuY3Rpb25Nb2NrZXJCYXNl
IDogcHVibGljIFVudHlwZWRGdW5jdGlvbk1vY2tlckJhc2UgeworIHB1YmxpYzoKKyAgdHlwZWRl
ZiB0eXBlbmFtZSBGdW5jdGlvbjxGPjo6UmVzdWx0IFJlc3VsdDsKKyAgdHlwZWRlZiB0eXBlbmFt
ZSBGdW5jdGlvbjxGPjo6QXJndW1lbnRUdXBsZSBBcmd1bWVudFR1cGxlOworICB0eXBlZGVmIHR5
cGVuYW1lIEZ1bmN0aW9uPEY+OjpBcmd1bWVudE1hdGNoZXJUdXBsZSBBcmd1bWVudE1hdGNoZXJU
dXBsZTsKKworICBGdW5jdGlvbk1vY2tlckJhc2UoKSA6IGN1cnJlbnRfc3BlY18odGhpcykge30K
KworICAvLyBUaGUgZGVzdHJ1Y3RvciB2ZXJpZmllcyB0aGF0IGFsbCBleHBlY3RhdGlvbnMgb24g
dGhpcyBtb2NrCisgIC8vIGZ1bmN0aW9uIGhhdmUgYmVlbiBzYXRpc2ZpZWQuICBJZiBub3QsIGl0
IHdpbGwgcmVwb3J0IEdvb2dsZSBUZXN0CisgIC8vIG5vbi1mYXRhbCBmYWlsdXJlcyBmb3IgdGhl
IHZpb2xhdGlvbnMuCisgIHZpcnR1YWwgfkZ1bmN0aW9uTW9ja2VyQmFzZSgpCisgICAgICAgIEdU
RVNUX0xPQ0tfRVhDTFVERURfKGdfZ21vY2tfbXV0ZXgpIHsKKyAgICBNdXRleExvY2sgbCgmZ19n
bW9ja19tdXRleCk7CisgICAgVmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnNMb2NrZWQoKTsKKyAg
ICBNb2NrOjpVbnJlZ2lzdGVyTG9ja2VkKHRoaXMpOworICAgIENsZWFyRGVmYXVsdEFjdGlvbnNM
b2NrZWQoKTsKKyAgfQorCisgIC8vIFJldHVybnMgdGhlIE9OX0NBTEwgc3BlYyB0aGF0IG1hdGNo
ZXMgdGhpcyBtb2NrIGZ1bmN0aW9uIHdpdGggdGhlCisgIC8vIGdpdmVuIGFyZ3VtZW50czsgcmV0
dXJucyBOVUxMIGlmIG5vIG1hdGNoaW5nIE9OX0NBTEwgaXMgZm91bmQuCisgIC8vIEwgPSAqCisg
IGNvbnN0IE9uQ2FsbFNwZWM8Rj4qIEZpbmRPbkNhbGxTcGVjKAorICAgICAgY29uc3QgQXJndW1l
bnRUdXBsZSYgYXJncykgY29uc3QgeworICAgIGZvciAoVW50eXBlZE9uQ2FsbFNwZWNzOjpjb25z
dF9yZXZlcnNlX2l0ZXJhdG9yIGl0CisgICAgICAgICAgICAgPSB1bnR5cGVkX29uX2NhbGxfc3Bl
Y3NfLnJiZWdpbigpOworICAgICAgICAgaXQgIT0gdW50eXBlZF9vbl9jYWxsX3NwZWNzXy5yZW5k
KCk7ICsraXQpIHsKKyAgICAgIGNvbnN0IE9uQ2FsbFNwZWM8Rj4qIHNwZWMgPSBzdGF0aWNfY2Fz
dDxjb25zdCBPbkNhbGxTcGVjPEY+Kj4oKml0KTsKKyAgICAgIGlmIChzcGVjLT5NYXRjaGVzKGFy
Z3MpKQorICAgICAgICByZXR1cm4gc3BlYzsKKyAgICB9CisKKyAgICByZXR1cm4gTlVMTDsKKyAg
fQorCisgIC8vIFBlcmZvcm1zIHRoZSBkZWZhdWx0IGFjdGlvbiBvZiB0aGlzIG1vY2sgZnVuY3Rp
b24gb24gdGhlIGdpdmVuCisgIC8vIGFyZ3VtZW50cyBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LiBB
c3NlcnRzIChvciB0aHJvd3MgaWYKKyAgLy8gZXhjZXB0aW9ucyBhcmUgZW5hYmxlZCkgd2l0aCBh
IGhlbHBmdWwgY2FsbCBkZXNjcnB0aW9uIGlmIHRoZXJlCisgIC8vIGlzIG5vIHZhbGlkIHJldHVy
biB2YWx1ZS4gVGhpcyBtZXRob2QgZG9lc24ndCBkZXBlbmQgb24gdGhlCisgIC8vIG11dGFibGUg
c3RhdGUgb2YgdGhpcyBvYmplY3QsIGFuZCB0aHVzIGNhbiBiZSBjYWxsZWQgY29uY3VycmVudGx5
CisgIC8vIHdpdGhvdXQgbG9ja2luZy4KKyAgLy8gTCA9ICoKKyAgUmVzdWx0IFBlcmZvcm1EZWZh
dWx0QWN0aW9uKGNvbnN0IEFyZ3VtZW50VHVwbGUmIGFyZ3MsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgY2FsbF9kZXNjcmlwdGlvbikgY29uc3Qgewor
ICAgIGNvbnN0IE9uQ2FsbFNwZWM8Rj4qIGNvbnN0IHNwZWMgPQorICAgICAgICB0aGlzLT5GaW5k
T25DYWxsU3BlYyhhcmdzKTsKKyAgICBpZiAoc3BlYyAhPSBOVUxMKSB7CisgICAgICByZXR1cm4g
c3BlYy0+R2V0QWN0aW9uKCkuUGVyZm9ybShhcmdzKTsKKyAgICB9CisgICAgY29uc3Qgc3RkOjpz
dHJpbmcgbWVzc2FnZSA9CisgICAgICAgIGNhbGxfZGVzY3JpcHRpb24gKworICAgICAgICAiXG4g
ICAgVGhlIG1vY2sgZnVuY3Rpb24gaGFzIG5vIGRlZmF1bHQgYWN0aW9uICIKKyAgICAgICAgInNl
dCwgYW5kIGl0cyByZXR1cm4gdHlwZSBoYXMgbm8gZGVmYXVsdCB2YWx1ZSBzZXQuIjsKKyNpZiBH
VEVTVF9IQVNfRVhDRVBUSU9OUworICAgIGlmICghRGVmYXVsdFZhbHVlPFJlc3VsdD46OkV4aXN0
cygpKSB7CisgICAgICB0aHJvdyBzdGQ6OnJ1bnRpbWVfZXJyb3IobWVzc2FnZSk7CisgICAgfQor
I2Vsc2UKKyAgICBBc3NlcnQoRGVmYXVsdFZhbHVlPFJlc3VsdD46OkV4aXN0cygpLCAiIiwgLTEs
IG1lc3NhZ2UpOworI2VuZGlmCisgICAgcmV0dXJuIERlZmF1bHRWYWx1ZTxSZXN1bHQ+OjpHZXQo
KTsKKyAgfQorCisgIC8vIFBlcmZvcm1zIHRoZSBkZWZhdWx0IGFjdGlvbiB3aXRoIHRoZSBnaXZl
biBhcmd1bWVudHMgYW5kIHJldHVybnMKKyAgLy8gdGhlIGFjdGlvbidzIHJlc3VsdC4gIFRoZSBj
YWxsIGRlc2NyaXB0aW9uIHN0cmluZyB3aWxsIGJlIHVzZWQgaW4KKyAgLy8gdGhlIGVycm9yIG1l
c3NhZ2UgdG8gZGVzY3JpYmUgdGhlIGNhbGwgaW4gdGhlIGNhc2UgdGhlIGRlZmF1bHQKKyAgLy8g
YWN0aW9uIGZhaWxzLiAgVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgZGVsZXRpbmcgdGhl
IHJlc3VsdC4KKyAgLy8gTCA9ICoKKyAgdmlydHVhbCBVbnR5cGVkQWN0aW9uUmVzdWx0SG9sZGVy
QmFzZSogVW50eXBlZFBlcmZvcm1EZWZhdWx0QWN0aW9uKAorICAgICAgY29uc3Qgdm9pZCogdW50
eXBlZF9hcmdzLCAgLy8gbXVzdCBwb2ludCB0byBhbiBBcmd1bWVudFR1cGxlCisgICAgICBjb25z
dCBzdGQ6OnN0cmluZyYgY2FsbF9kZXNjcmlwdGlvbikgY29uc3QgeworICAgIGNvbnN0IEFyZ3Vt
ZW50VHVwbGUmIGFyZ3MgPQorICAgICAgICAqc3RhdGljX2Nhc3Q8Y29uc3QgQXJndW1lbnRUdXBs
ZSo+KHVudHlwZWRfYXJncyk7CisgICAgcmV0dXJuIFJlc3VsdEhvbGRlcjo6UGVyZm9ybURlZmF1
bHRBY3Rpb24odGhpcywgYXJncywgY2FsbF9kZXNjcmlwdGlvbik7CisgIH0KKworICAvLyBQZXJm
b3JtcyB0aGUgZ2l2ZW4gYWN0aW9uIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cyBhbmQgcmV0dXJu
cworICAvLyB0aGUgYWN0aW9uJ3MgcmVzdWx0LiAgVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBm
b3IgZGVsZXRpbmcgdGhlCisgIC8vIHJlc3VsdC4KKyAgLy8gTCA9ICoKKyAgdmlydHVhbCBVbnR5
cGVkQWN0aW9uUmVzdWx0SG9sZGVyQmFzZSogVW50eXBlZFBlcmZvcm1BY3Rpb24oCisgICAgICBj
b25zdCB2b2lkKiB1bnR5cGVkX2FjdGlvbiwgY29uc3Qgdm9pZCogdW50eXBlZF9hcmdzKSBjb25z
dCB7CisgICAgLy8gTWFrZSBhIGNvcHkgb2YgdGhlIGFjdGlvbiBiZWZvcmUgcGVyZm9ybWluZyBp
dCwgaW4gY2FzZSB0aGUKKyAgICAvLyBhY3Rpb24gZGVsZXRlcyB0aGUgbW9jayBvYmplY3QgKGFu
ZCB0aHVzIGRlbGV0ZXMgaXRzZWxmKS4KKyAgICBjb25zdCBBY3Rpb248Rj4gYWN0aW9uID0gKnN0
YXRpY19jYXN0PGNvbnN0IEFjdGlvbjxGPio+KHVudHlwZWRfYWN0aW9uKTsKKyAgICBjb25zdCBB
cmd1bWVudFR1cGxlJiBhcmdzID0KKyAgICAgICAgKnN0YXRpY19jYXN0PGNvbnN0IEFyZ3VtZW50
VHVwbGUqPih1bnR5cGVkX2FyZ3MpOworICAgIHJldHVybiBSZXN1bHRIb2xkZXI6OlBlcmZvcm1B
Y3Rpb24oYWN0aW9uLCBhcmdzKTsKKyAgfQorCisgIC8vIEltcGxlbWVudHMgVW50eXBlZEZ1bmN0
aW9uTW9ja2VyQmFzZTo6Q2xlYXJEZWZhdWx0QWN0aW9uc0xvY2tlZCgpOgorICAvLyBjbGVhcnMg
dGhlIE9OX0NBTEwoKXMgc2V0IG9uIHRoaXMgbW9jayBmdW5jdGlvbi4KKyAgdmlydHVhbCB2b2lk
IENsZWFyRGVmYXVsdEFjdGlvbnNMb2NrZWQoKQorICAgICAgR1RFU1RfRVhDTFVTSVZFX0xPQ0tf
UkVRVUlSRURfKGdfZ21vY2tfbXV0ZXgpIHsKKyAgICBnX2dtb2NrX211dGV4LkFzc2VydEhlbGQo
KTsKKworICAgIC8vIERlbGV0aW5nIG91ciBkZWZhdWx0IGFjdGlvbnMgbWF5IHRyaWdnZXIgb3Ro
ZXIgbW9jayBvYmplY3RzIHRvIGJlCisgICAgLy8gZGVsZXRlZCwgZm9yIGV4YW1wbGUgaWYgYW4g
YWN0aW9uIGNvbnRhaW5zIGEgcmVmZXJlbmNlIGNvdW50ZWQgc21hcnQKKyAgICAvLyBwb2ludGVy
IHRvIHRoYXQgbW9jayBvYmplY3QsIGFuZCB0aGF0IGlzIHRoZSBsYXN0IHJlZmVyZW5jZS4gU28g
aWYgd2UKKyAgICAvLyBkZWxldGUgb3VyIGFjdGlvbnMgd2l0aGluIHRoZSBjb250ZXh0IG9mIHRo
ZSBnbG9iYWwgbXV0ZXggd2UgbWF5IGRlYWRsb2NrCisgICAgLy8gd2hlbiB0aGlzIG1ldGhvZCBp
cyBjYWxsZWQgYWdhaW4uIEluc3RlYWQsIG1ha2UgYSBjb3B5IG9mIHRoZSBzZXQgb2YKKyAgICAv
LyBhY3Rpb25zIHRvIGRlbGV0ZSwgY2xlYXIgb3VyIHNldCB3aXRoaW4gdGhlIG11dGV4LCBhbmQg
dGhlbiBkZWxldGUgdGhlCisgICAgLy8gYWN0aW9ucyBvdXRzaWRlIG9mIHRoZSBtdXRleC4KKyAg
ICBVbnR5cGVkT25DYWxsU3BlY3Mgc3BlY3NfdG9fZGVsZXRlOworICAgIHVudHlwZWRfb25fY2Fs
bF9zcGVjc18uc3dhcChzcGVjc190b19kZWxldGUpOworCisgICAgZ19nbW9ja19tdXRleC5Vbmxv
Y2soKTsKKyAgICBmb3IgKFVudHlwZWRPbkNhbGxTcGVjczo6Y29uc3RfaXRlcmF0b3IgaXQgPQor
ICAgICAgICAgICAgIHNwZWNzX3RvX2RlbGV0ZS5iZWdpbigpOworICAgICAgICAgaXQgIT0gc3Bl
Y3NfdG9fZGVsZXRlLmVuZCgpOyArK2l0KSB7CisgICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8Y29u
c3QgT25DYWxsU3BlYzxGPio+KCppdCk7CisgICAgfQorCisgICAgLy8gTG9jayB0aGUgbXV0ZXgg
YWdhaW4sIHNpbmNlIHRoZSBjYWxsZXIgZXhwZWN0cyBpdCB0byBiZSBsb2NrZWQgd2hlbiB3ZQor
ICAgIC8vIHJldHVybi4KKyAgICBnX2dtb2NrX211dGV4LkxvY2soKTsKKyAgfQorCisgcHJvdGVj
dGVkOgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rpb24+CisgIGZyaWVuZCBjbGFzcyBNb2Nr
U3BlYzsKKworICB0eXBlZGVmIEFjdGlvblJlc3VsdEhvbGRlcjxSZXN1bHQ+IFJlc3VsdEhvbGRl
cjsKKworICAvLyBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW52b2tpbmcgdGhpcyBtb2NrIGZ1bmN0
aW9uIHdpdGggdGhlIGdpdmVuCisgIC8vIGFyZ3VtZW50cy4gIFRoaXMgZnVuY3Rpb24gY2FuIGJl
IHNhZmVseSBjYWxsZWQgZnJvbSBtdWx0aXBsZQorICAvLyB0aHJlYWRzIGNvbmN1cnJlbnRseS4K
KyAgUmVzdWx0IEludm9rZVdpdGgoY29uc3QgQXJndW1lbnRUdXBsZSYgYXJncykKKyAgICAgICAg
R1RFU1RfTE9DS19FWENMVURFRF8oZ19nbW9ja19tdXRleCkgeworICAgIHNjb3BlZF9wdHI8UmVz
dWx0SG9sZGVyPiBob2xkZXIoCisgICAgICAgIERvd25DYXN0XzxSZXN1bHRIb2xkZXIqPih0aGlz
LT5VbnR5cGVkSW52b2tlV2l0aCgmYXJncykpKTsKKyAgICByZXR1cm4gaG9sZGVyLT5VbndyYXAo
KTsKKyAgfQorCisgIC8vIEFkZHMgYW5kIHJldHVybnMgYSBkZWZhdWx0IGFjdGlvbiBzcGVjIGZv
ciB0aGlzIG1vY2sgZnVuY3Rpb24uCisgIE9uQ2FsbFNwZWM8Rj4mIEFkZE5ld09uQ2FsbFNwZWMo
CisgICAgICBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwKKyAgICAgIGNvbnN0IEFyZ3VtZW50
TWF0Y2hlclR1cGxlJiBtKQorICAgICAgICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKGdfZ21vY2tf
bXV0ZXgpIHsKKyAgICBNb2NrOjpSZWdpc3RlclVzZUJ5T25DYWxsT3JFeHBlY3RDYWxsKE1vY2tP
YmplY3QoKSwgZmlsZSwgbGluZSk7CisgICAgT25DYWxsU3BlYzxGPiogY29uc3Qgb25fY2FsbF9z
cGVjID0gbmV3IE9uQ2FsbFNwZWM8Rj4oZmlsZSwgbGluZSwgbSk7CisgICAgdW50eXBlZF9vbl9j
YWxsX3NwZWNzXy5wdXNoX2JhY2sob25fY2FsbF9zcGVjKTsKKyAgICByZXR1cm4gKm9uX2NhbGxf
c3BlYzsKKyAgfQorCisgIC8vIEFkZHMgYW5kIHJldHVybnMgYW4gZXhwZWN0YXRpb24gc3BlYyBm
b3IgdGhpcyBtb2NrIGZ1bmN0aW9uLgorICBUeXBlZEV4cGVjdGF0aW9uPEY+JiBBZGROZXdFeHBl
Y3RhdGlvbihjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHNvdXJjZV90ZXh0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBcmd1bWVudE1hdGNo
ZXJUdXBsZSYgbSkKKyAgICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKGdfZ21vY2tfbXV0ZXgpIHsK
KyAgICBNb2NrOjpSZWdpc3RlclVzZUJ5T25DYWxsT3JFeHBlY3RDYWxsKE1vY2tPYmplY3QoKSwg
ZmlsZSwgbGluZSk7CisgICAgVHlwZWRFeHBlY3RhdGlvbjxGPiogY29uc3QgZXhwZWN0YXRpb24g
PQorICAgICAgICBuZXcgVHlwZWRFeHBlY3RhdGlvbjxGPih0aGlzLCBmaWxlLCBsaW5lLCBzb3Vy
Y2VfdGV4dCwgbSk7CisgICAgY29uc3QgbGlua2VkX3B0cjxFeHBlY3RhdGlvbkJhc2U+IHVudHlw
ZWRfZXhwZWN0YXRpb24oZXhwZWN0YXRpb24pOworICAgIHVudHlwZWRfZXhwZWN0YXRpb25zXy5w
dXNoX2JhY2sodW50eXBlZF9leHBlY3RhdGlvbik7CisKKyAgICAvLyBBZGRzIHRoaXMgZXhwZWN0
YXRpb24gaW50byB0aGUgaW1wbGljaXQgc2VxdWVuY2UgaWYgdGhlcmUgaXMgb25lLgorICAgIFNl
cXVlbmNlKiBjb25zdCBpbXBsaWNpdF9zZXF1ZW5jZSA9IGdfZ21vY2tfaW1wbGljaXRfc2VxdWVu
Y2UuZ2V0KCk7CisgICAgaWYgKGltcGxpY2l0X3NlcXVlbmNlICE9IE5VTEwpIHsKKyAgICAgIGlt
cGxpY2l0X3NlcXVlbmNlLT5BZGRFeHBlY3RhdGlvbihFeHBlY3RhdGlvbih1bnR5cGVkX2V4cGVj
dGF0aW9uKSk7CisgICAgfQorCisgICAgcmV0dXJuICpleHBlY3RhdGlvbjsKKyAgfQorCisgIC8v
IFRoZSBjdXJyZW50IHNwZWMgKGVpdGhlciBkZWZhdWx0IGFjdGlvbiBzcGVjIG9yIGV4cGVjdGF0
aW9uIHNwZWMpCisgIC8vIGJlaW5nIGRlc2NyaWJlZCBvbiB0aGlzIGZ1bmN0aW9uIG1vY2tlci4K
KyAgTW9ja1NwZWM8Rj4mIGN1cnJlbnRfc3BlYygpIHsgcmV0dXJuIGN1cnJlbnRfc3BlY187IH0K
KworIHByaXZhdGU6CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jPiBmcmllbmQgY2xhc3MgVHlw
ZWRFeHBlY3RhdGlvbjsKKworICAvLyBTb21lIHV0aWxpdGllcyBuZWVkZWQgZm9yIGltcGxlbWVu
dGluZyBVbnR5cGVkSW52b2tlV2l0aCgpLgorCisgIC8vIERlc2NyaWJlcyB3aGF0IGRlZmF1bHQg
YWN0aW9uIHdpbGwgYmUgcGVyZm9ybWVkIGZvciB0aGUgZ2l2ZW4KKyAgLy8gYXJndW1lbnRzLgor
ICAvLyBMID0gKgorICB2b2lkIERlc2NyaWJlRGVmYXVsdEFjdGlvblRvKGNvbnN0IEFyZ3VtZW50
VHVwbGUmIGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjpzdGQ6Om9zdHJl
YW0qIG9zKSBjb25zdCB7CisgICAgY29uc3QgT25DYWxsU3BlYzxGPiogY29uc3Qgc3BlYyA9IEZp
bmRPbkNhbGxTcGVjKGFyZ3MpOworCisgICAgaWYgKHNwZWMgPT0gTlVMTCkgeworICAgICAgKm9z
IDw8IChpbnRlcm5hbDo6dHlwZV9lcXVhbHM8UmVzdWx0LCB2b2lkPjo6dmFsdWUgPworICAgICAg
ICAgICAgICAicmV0dXJuaW5nIGRpcmVjdGx5LlxuIiA6CisgICAgICAgICAgICAgICJyZXR1cm5p
bmcgZGVmYXVsdCB2YWx1ZS5cbiIpOworICAgIH0gZWxzZSB7CisgICAgICAqb3MgPDwgInRha2lu
ZyBkZWZhdWx0IGFjdGlvbiBzcGVjaWZpZWQgYXQ6XG4iCisgICAgICAgICAgPDwgRm9ybWF0Rmls
ZUxvY2F0aW9uKHNwZWMtPmZpbGUoKSwgc3BlYy0+bGluZSgpKSA8PCAiXG4iOworICAgIH0KKyAg
fQorCisgIC8vIFdyaXRlcyBhIG1lc3NhZ2UgdGhhdCB0aGUgY2FsbCBpcyB1bmludGVyZXN0aW5n
IChpLmUuIG5laXRoZXIKKyAgLy8gZXhwbGljaXRseSBleHBlY3RlZCBub3IgZXhwbGljaXRseSB1
bmV4cGVjdGVkKSB0byB0aGUgZ2l2ZW4KKyAgLy8gb3N0cmVhbS4KKyAgdmlydHVhbCB2b2lkIFVu
dHlwZWREZXNjcmliZVVuaW50ZXJlc3RpbmdDYWxsKAorICAgICAgY29uc3Qgdm9pZCogdW50eXBl
ZF9hcmdzLAorICAgICAgOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdAorICAgICAgICAgIEdURVNU
X0xPQ0tfRVhDTFVERURfKGdfZ21vY2tfbXV0ZXgpIHsKKyAgICBjb25zdCBBcmd1bWVudFR1cGxl
JiBhcmdzID0KKyAgICAgICAgKnN0YXRpY19jYXN0PGNvbnN0IEFyZ3VtZW50VHVwbGUqPih1bnR5
cGVkX2FyZ3MpOworICAgICpvcyA8PCAiVW5pbnRlcmVzdGluZyBtb2NrIGZ1bmN0aW9uIGNhbGwg
LSAiOworICAgIERlc2NyaWJlRGVmYXVsdEFjdGlvblRvKGFyZ3MsIG9zKTsKKyAgICAqb3MgPDwg
IiAgICBGdW5jdGlvbiBjYWxsOiAiIDw8IE5hbWUoKTsKKyAgICBVbml2ZXJzYWxQcmludChhcmdz
LCBvcyk7CisgIH0KKworICAvLyBSZXR1cm5zIHRoZSBleHBlY3RhdGlvbiB0aGF0IG1hdGNoZXMg
dGhlIGdpdmVuIGZ1bmN0aW9uIGFyZ3VtZW50cworICAvLyAob3IgTlVMTCBpcyB0aGVyZSdzIG5v
IG1hdGNoKTsgd2hlbiBhIG1hdGNoIGlzIGZvdW5kLAorICAvLyB1bnR5cGVkX2FjdGlvbiBpcyBz
ZXQgdG8gcG9pbnQgdG8gdGhlIGFjdGlvbiB0aGF0IHNob3VsZCBiZQorICAvLyBwZXJmb3JtZWQg
KG9yIE5VTEwgaWYgdGhlIGFjdGlvbiBpcyAiZG8gZGVmYXVsdCIpLCBhbmQKKyAgLy8gaXNfZXhj
ZXNzaXZlIGlzIG1vZGlmaWVkIHRvIGluZGljYXRlIHdoZXRoZXIgdGhlIGNhbGwgZXhjZWVkcyB0
aGUKKyAgLy8gZXhwZWN0ZWQgbnVtYmVyLgorICAvLworICAvLyBDcml0aWNhbCBzZWN0aW9uOiBX
ZSBtdXN0IGZpbmQgdGhlIG1hdGNoaW5nIGV4cGVjdGF0aW9uIGFuZCB0aGUKKyAgLy8gY29ycmVz
cG9uZGluZyBhY3Rpb24gdGhhdCBuZWVkcyB0byBiZSB0YWtlbiBpbiBhbiBBVE9NSUMKKyAgLy8g
dHJhbnNhY3Rpb24uICBPdGhlcndpc2UgYW5vdGhlciB0aHJlYWQgbWF5IGNhbGwgdGhpcyBtb2Nr
CisgIC8vIG1ldGhvZCBpbiB0aGUgbWlkZGxlIGFuZCBtZXNzIHVwIHRoZSBzdGF0ZS4KKyAgLy8K
KyAgLy8gSG93ZXZlciwgcGVyZm9ybWluZyB0aGUgYWN0aW9uIGhhcyB0byBiZSBsZWZ0IG91dCBv
ZiB0aGUgY3JpdGljYWwKKyAgLy8gc2VjdGlvbi4gIFRoZSByZWFzb24gaXMgdGhhdCB3ZSBoYXZl
IG5vIGNvbnRyb2wgb24gd2hhdCB0aGUKKyAgLy8gYWN0aW9uIGRvZXMgKGl0IGNhbiBpbnZva2Ug
YW4gYXJiaXRyYXJ5IHVzZXIgZnVuY3Rpb24gb3IgZXZlbiBhCisgIC8vIG1vY2sgZnVuY3Rpb24p
IGFuZCBleGNlc3NpdmUgbG9ja2luZyBjb3VsZCBjYXVzZSBhIGRlYWQgbG9jay4KKyAgdmlydHVh
bCBjb25zdCBFeHBlY3RhdGlvbkJhc2UqIFVudHlwZWRGaW5kTWF0Y2hpbmdFeHBlY3RhdGlvbigK
KyAgICAgIGNvbnN0IHZvaWQqIHVudHlwZWRfYXJncywKKyAgICAgIGNvbnN0IHZvaWQqKiB1bnR5
cGVkX2FjdGlvbiwgYm9vbCogaXNfZXhjZXNzaXZlLAorICAgICAgOjpzdGQ6Om9zdHJlYW0qIHdo
YXQsIDo6c3RkOjpvc3RyZWFtKiB3aHkpCisgICAgICAgICAgR1RFU1RfTE9DS19FWENMVURFRF8o
Z19nbW9ja19tdXRleCkgeworICAgIGNvbnN0IEFyZ3VtZW50VHVwbGUmIGFyZ3MgPQorICAgICAg
ICAqc3RhdGljX2Nhc3Q8Y29uc3QgQXJndW1lbnRUdXBsZSo+KHVudHlwZWRfYXJncyk7CisgICAg
TXV0ZXhMb2NrIGwoJmdfZ21vY2tfbXV0ZXgpOworICAgIFR5cGVkRXhwZWN0YXRpb248Rj4qIGV4
cCA9IHRoaXMtPkZpbmRNYXRjaGluZ0V4cGVjdGF0aW9uTG9ja2VkKGFyZ3MpOworICAgIGlmIChl
eHAgPT0gTlVMTCkgeyAgLy8gQSBtYXRjaCB3YXNuJ3QgZm91bmQuCisgICAgICB0aGlzLT5Gb3Jt
YXRVbmV4cGVjdGVkQ2FsbE1lc3NhZ2VMb2NrZWQoYXJncywgd2hhdCwgd2h5KTsKKyAgICAgIHJl
dHVybiBOVUxMOworICAgIH0KKworICAgIC8vIFRoaXMgbGluZSBtdXN0IGJlIGRvbmUgYmVmb3Jl
IGNhbGxpbmcgR2V0QWN0aW9uRm9yQXJndW1lbnRzKCksCisgICAgLy8gd2hpY2ggd2lsbCBpbmNy
ZW1lbnQgdGhlIGNhbGwgY291bnQgZm9yICpleHAgYW5kIHRodXMgYWZmZWN0CisgICAgLy8gaXRz
IHNhdHVyYXRpb24gc3RhdHVzLgorICAgICppc19leGNlc3NpdmUgPSBleHAtPklzU2F0dXJhdGVk
KCk7CisgICAgY29uc3QgQWN0aW9uPEY+KiBhY3Rpb24gPSBleHAtPkdldEFjdGlvbkZvckFyZ3Vt
ZW50cyh0aGlzLCBhcmdzLCB3aGF0LCB3aHkpOworICAgIGlmIChhY3Rpb24gIT0gTlVMTCAmJiBh
Y3Rpb24tPklzRG9EZWZhdWx0KCkpCisgICAgICBhY3Rpb24gPSBOVUxMOyAgLy8gTm9ybWFsaXpl
ICJkbyBkZWZhdWx0IiB0byBOVUxMLgorICAgICp1bnR5cGVkX2FjdGlvbiA9IGFjdGlvbjsKKyAg
ICByZXR1cm4gZXhwOworICB9CisKKyAgLy8gUHJpbnRzIHRoZSBnaXZlbiBmdW5jdGlvbiBhcmd1
bWVudHMgdG8gdGhlIG9zdHJlYW0uCisgIHZpcnR1YWwgdm9pZCBVbnR5cGVkUHJpbnRBcmdzKGNv
bnN0IHZvaWQqIHVudHlwZWRfYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7CisgICAgY29uc3QgQXJndW1lbnRUdXBsZSYgYXJn
cyA9CisgICAgICAgICpzdGF0aWNfY2FzdDxjb25zdCBBcmd1bWVudFR1cGxlKj4odW50eXBlZF9h
cmdzKTsKKyAgICBVbml2ZXJzYWxQcmludChhcmdzLCBvcyk7CisgIH0KKworICAvLyBSZXR1cm5z
IHRoZSBleHBlY3RhdGlvbiB0aGF0IG1hdGNoZXMgdGhlIGFyZ3VtZW50cywgb3IgTlVMTCBpZiBu
bworICAvLyBleHBlY3RhdGlvbiBtYXRjaGVzIHRoZW0uCisgIFR5cGVkRXhwZWN0YXRpb248Rj4q
IEZpbmRNYXRjaGluZ0V4cGVjdGF0aW9uTG9ja2VkKAorICAgICAgY29uc3QgQXJndW1lbnRUdXBs
ZSYgYXJncykgY29uc3QKKyAgICAgICAgICBHVEVTVF9FWENMVVNJVkVfTE9DS19SRVFVSVJFRF8o
Z19nbW9ja19tdXRleCkgeworICAgIGdfZ21vY2tfbXV0ZXguQXNzZXJ0SGVsZCgpOworICAgIGZv
ciAodHlwZW5hbWUgVW50eXBlZEV4cGVjdGF0aW9uczo6Y29uc3RfcmV2ZXJzZV9pdGVyYXRvciBp
dCA9CisgICAgICAgICAgICAgdW50eXBlZF9leHBlY3RhdGlvbnNfLnJiZWdpbigpOworICAgICAg
ICAgaXQgIT0gdW50eXBlZF9leHBlY3RhdGlvbnNfLnJlbmQoKTsgKytpdCkgeworICAgICAgVHlw
ZWRFeHBlY3RhdGlvbjxGPiogY29uc3QgZXhwID0KKyAgICAgICAgICBzdGF0aWNfY2FzdDxUeXBl
ZEV4cGVjdGF0aW9uPEY+Kj4oaXQtPmdldCgpKTsKKyAgICAgIGlmIChleHAtPlNob3VsZEhhbmRs
ZUFyZ3VtZW50cyhhcmdzKSkgeworICAgICAgICByZXR1cm4gZXhwOworICAgICAgfQorICAgIH0K
KyAgICByZXR1cm4gTlVMTDsKKyAgfQorCisgIC8vIFJldHVybnMgYSBtZXNzYWdlIHRoYXQgdGhl
IGFyZ3VtZW50cyBkb24ndCBtYXRjaCBhbnkgZXhwZWN0YXRpb24uCisgIHZvaWQgRm9ybWF0VW5l
eHBlY3RlZENhbGxNZXNzYWdlTG9ja2VkKAorICAgICAgY29uc3QgQXJndW1lbnRUdXBsZSYgYXJn
cywKKyAgICAgIDo6c3RkOjpvc3RyZWFtKiBvcywKKyAgICAgIDo6c3RkOjpvc3RyZWFtKiB3aHkp
IGNvbnN0CisgICAgICAgICAgR1RFU1RfRVhDTFVTSVZFX0xPQ0tfUkVRVUlSRURfKGdfZ21vY2tf
bXV0ZXgpIHsKKyAgICBnX2dtb2NrX211dGV4LkFzc2VydEhlbGQoKTsKKyAgICAqb3MgPDwgIlxu
VW5leHBlY3RlZCBtb2NrIGZ1bmN0aW9uIGNhbGwgLSAiOworICAgIERlc2NyaWJlRGVmYXVsdEFj
dGlvblRvKGFyZ3MsIG9zKTsKKyAgICBQcmludFRyaWVkRXhwZWN0YXRpb25zTG9ja2VkKGFyZ3Ms
IHdoeSk7CisgIH0KKworICAvLyBQcmludHMgYSBsaXN0IG9mIGV4cGVjdGF0aW9ucyB0aGF0IGhh
dmUgYmVlbiB0cmllZCBhZ2FpbnN0IHRoZQorICAvLyBjdXJyZW50IG1vY2sgZnVuY3Rpb24gY2Fs
bC4KKyAgdm9pZCBQcmludFRyaWVkRXhwZWN0YXRpb25zTG9ja2VkKAorICAgICAgY29uc3QgQXJn
dW1lbnRUdXBsZSYgYXJncywKKyAgICAgIDo6c3RkOjpvc3RyZWFtKiB3aHkpIGNvbnN0CisgICAg
ICAgICAgR1RFU1RfRVhDTFVTSVZFX0xPQ0tfUkVRVUlSRURfKGdfZ21vY2tfbXV0ZXgpIHsKKyAg
ICBnX2dtb2NrX211dGV4LkFzc2VydEhlbGQoKTsKKyAgICBjb25zdCBpbnQgY291bnQgPSBzdGF0
aWNfY2FzdDxpbnQ+KHVudHlwZWRfZXhwZWN0YXRpb25zXy5zaXplKCkpOworICAgICp3aHkgPDwg
Ikdvb2dsZSBNb2NrIHRyaWVkIHRoZSBmb2xsb3dpbmcgIiA8PCBjb3VudCA8PCAiICIKKyAgICAg
ICAgIDw8IChjb3VudCA9PSAxID8gImV4cGVjdGF0aW9uLCBidXQgaXQgZGlkbid0IG1hdGNoIiA6
CisgICAgICAgICAgICAgImV4cGVjdGF0aW9ucywgYnV0IG5vbmUgbWF0Y2hlZCIpCisgICAgICAg
ICA8PCAiOlxuIjsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKyAgICAg
IFR5cGVkRXhwZWN0YXRpb248Rj4qIGNvbnN0IGV4cGVjdGF0aW9uID0KKyAgICAgICAgICBzdGF0
aWNfY2FzdDxUeXBlZEV4cGVjdGF0aW9uPEY+Kj4odW50eXBlZF9leHBlY3RhdGlvbnNfW2ldLmdl
dCgpKTsKKyAgICAgICp3aHkgPDwgIlxuIjsKKyAgICAgIGV4cGVjdGF0aW9uLT5EZXNjcmliZUxv
Y2F0aW9uVG8od2h5KTsKKyAgICAgIGlmIChjb3VudCA+IDEpIHsKKyAgICAgICAgKndoeSA8PCAi
dHJpZWQgZXhwZWN0YXRpb24gIyIgPDwgaSA8PCAiOiAiOworICAgICAgfQorICAgICAgKndoeSA8
PCBleHBlY3RhdGlvbi0+c291cmNlX3RleHQoKSA8PCAiLi4uXG4iOworICAgICAgZXhwZWN0YXRp
b24tPkV4cGxhaW5NYXRjaFJlc3VsdFRvKGFyZ3MsIHdoeSk7CisgICAgICBleHBlY3RhdGlvbi0+
RGVzY3JpYmVDYWxsQ291bnRUbyh3aHkpOworICAgIH0KKyAgfQorCisgIC8vIFRoZSBjdXJyZW50
IHNwZWMgKGVpdGhlciBkZWZhdWx0IGFjdGlvbiBzcGVjIG9yIGV4cGVjdGF0aW9uIHNwZWMpCisg
IC8vIGJlaW5nIGRlc2NyaWJlZCBvbiB0aGlzIGZ1bmN0aW9uIG1vY2tlci4KKyAgTW9ja1NwZWM8
Rj4gY3VycmVudF9zcGVjXzsKKworICAvLyBUaGVyZSBpcyBubyBnZW5lcmFsbHkgdXNlZnVsIGFu
ZCBpbXBsZW1lbnRhYmxlIHNlbWFudGljcyBvZgorICAvLyBjb3B5aW5nIGEgbW9jayBvYmplY3Qs
IHNvIGNvcHlpbmcgYSBtb2NrIGlzIHVzdWFsbHkgYSB1c2VyIGVycm9yLgorICAvLyBUaHVzIHdl
IGRpc2FsbG93IGNvcHlpbmcgZnVuY3Rpb24gbW9ja2Vycy4gIElmIHRoZSB1c2VyIHJlYWxseQor
ICAvLyB3YW50cyB0byBjb3B5IGEgbW9jayBvYmplY3QsIGhlIHNob3VsZCBpbXBsZW1lbnQgaGlz
IG93biBjb3B5CisgIC8vIG9wZXJhdGlvbiwgZm9yIGV4YW1wbGU6CisgIC8vCisgIC8vICAgY2xh
c3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28geworICAvLyAgICBwdWJsaWM6CisgIC8vICAgICAvLyBE
ZWZpbmVzIGEgY29weSBjb25zdHJ1Y3RvciBleHBsaWNpdGx5LgorICAvLyAgICAgTW9ja0Zvbyhj
b25zdCBNb2NrRm9vJiBzcmMpIHt9CisgIC8vICAgICAuLi4KKyAgLy8gICB9OworICBHVEVTVF9E
SVNBTExPV19DT1BZX0FORF9BU1NJR05fKEZ1bmN0aW9uTW9ja2VyQmFzZSk7Cit9OyAgLy8gY2xh
c3MgRnVuY3Rpb25Nb2NrZXJCYXNlCisKKyNpZmRlZiBfTVNDX1ZFUgorIyBwcmFnbWEgd2Fybmlu
Zyhwb3ApICAvLyBSZXN0b3JlcyB0aGUgd2FybmluZyBzdGF0ZS4KKyNlbmRpZiAgLy8gX01TVl9W
RVIKKworLy8gSW1wbGVtZW50cyBtZXRob2RzIG9mIEZ1bmN0aW9uTW9ja2VyQmFzZS4KKworLy8g
VmVyaWZpZXMgdGhhdCBhbGwgZXhwZWN0YXRpb25zIG9uIHRoaXMgbW9jayBmdW5jdGlvbiBoYXZl
IGJlZW4KKy8vIHNhdGlzZmllZC4gIFJlcG9ydHMgb25lIG9yIG1vcmUgR29vZ2xlIFRlc3Qgbm9u
LWZhdGFsIGZhaWx1cmVzIGFuZAorLy8gcmV0dXJucyBmYWxzZSBpZiBub3QuCisKKy8vIFJlcG9y
dHMgYW4gdW5pbnRlcmVzdGluZyBjYWxsICh3aG9zZSBkZXNjcmlwdGlvbiBpcyBpbiBtc2cpIGlu
IHRoZQorLy8gbWFubmVyIHNwZWNpZmllZCBieSAncmVhY3Rpb24nLgordm9pZCBSZXBvcnRVbmlu
dGVyZXN0aW5nQ2FsbChDYWxsUmVhY3Rpb24gcmVhY3Rpb24sIGNvbnN0IHN0ZDo6c3RyaW5nJiBt
c2cpOworCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKKworLy8gVGhlIHN0eWxlIGd1aWRlIHBy
b2hpYml0cyAidXNpbmciIHN0YXRlbWVudHMgaW4gYSBuYW1lc3BhY2Ugc2NvcGUKKy8vIGluc2lk
ZSBhIGhlYWRlciBmaWxlLiAgSG93ZXZlciwgdGhlIE1vY2tTcGVjIGNsYXNzIHRlbXBsYXRlIGlz
CisvLyBtZWFudCB0byBiZSBkZWZpbmVkIGluIHRoZSA6OnRlc3RpbmcgbmFtZXNwYWNlLiAgVGhl
IGZvbGxvd2luZyBsaW5lCisvLyBpcyBqdXN0IGEgdHJpY2sgZm9yIHdvcmtpbmcgYXJvdW5kIGEg
YnVnIGluIE1TVkMgOC4wLCB3aGljaCBjYW5ub3QKKy8vIGhhbmRsZSBpdCBpZiB3ZSBkZWZpbmUg
TW9ja1NwZWMgaW4gOjp0ZXN0aW5nLgordXNpbmcgaW50ZXJuYWw6Ok1vY2tTcGVjOworCisvLyBD
b25zdCh4KSBpcyBhIGNvbnZlbmllbnQgZnVuY3Rpb24gZm9yIG9idGFpbmluZyBhIGNvbnN0IHJl
ZmVyZW5jZQorLy8gdG8geC4gIFRoaXMgaXMgdXNlZnVsIGZvciBzZXR0aW5nIGV4cGVjdGF0aW9u
cyBvbiBhbiBvdmVybG9hZGVkCisvLyBjb25zdCBtb2NrIG1ldGhvZCwgZS5nLgorLy8KKy8vICAg
Y2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb29JbnRlcmZhY2UgeworLy8gICAgcHVibGljOgorLy8g
ICAgIE1PQ0tfTUVUSE9EMChCYXIsIGludCgpKTsKKy8vICAgICBNT0NLX0NPTlNUX01FVEhPRDAo
QmFyLCBpbnQmKCkpOworLy8gICB9OworLy8KKy8vICAgTW9ja0ZvbyBmb287CisvLyAgIC8vIEV4
cGVjdHMgYSBjYWxsIHRvIG5vbi1jb25zdCBNb2NrRm9vOjpCYXIoKS4KKy8vICAgRVhQRUNUX0NB
TEwoZm9vLCBCYXIoKSk7CisvLyAgIC8vIEV4cGVjdHMgYSBjYWxsIHRvIGNvbnN0IE1vY2tGb286
OkJhcigpLgorLy8gICBFWFBFQ1RfQ0FMTChDb25zdChmb28pLCBCYXIoKSk7Cit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KK2lubGluZSBjb25zdCBUJiBDb25zdChjb25zdCBUJiB4KSB7IHJldHVybiB4
OyB9CisKKy8vIENvbnN0cnVjdHMgYW4gRXhwZWN0YXRpb24gb2JqZWN0IHRoYXQgcmVmZXJlbmNl
cyBhbmQgY28tb3ducyBleHAuCitpbmxpbmUgRXhwZWN0YXRpb246OkV4cGVjdGF0aW9uKGludGVy
bmFsOjpFeHBlY3RhdGlvbkJhc2UmIGV4cCkgIC8vIE5PTElOVAorICAgIDogZXhwZWN0YXRpb25f
YmFzZV8oZXhwLkdldEhhbmRsZSgpLmV4cGVjdGF0aW9uX2Jhc2UoKSkge30KKworfSAgLy8gbmFt
ZXNwYWNlIHRlc3RpbmcKKworLy8gQSBzZXBhcmF0ZSBtYWNybyBpcyByZXF1aXJlZCB0byBhdm9p
ZCBjb21waWxlIGVycm9ycyB3aGVuIHRoZSBuYW1lCisvLyBvZiB0aGUgbWV0aG9kIHVzZWQgaW4g
Y2FsbCBpcyBhIHJlc3VsdCBvZiBtYWNybyBleHBhbnNpb24uCisvLyBTZWUgQ29tcGlsZXNXaXRo
TWV0aG9kTmFtZUV4cGFuZGVkRnJvbU1hY3JvIHRlc3RzIGluCisvLyBpbnRlcm5hbC9nbW9jay1z
cGVjLWJ1aWxkZXJzX3Rlc3QuY2MgZm9yIG1vcmUgZGV0YWlscy4KKyNkZWZpbmUgR01PQ0tfT05f
Q0FMTF9JTVBMXyhvYmosIGNhbGwpIFwKKyAgICAoKG9iaikuZ21vY2tfIyNjYWxsKS5JbnRlcm5h
bERlZmF1bHRBY3Rpb25TZXRBdChfX0ZJTEVfXywgX19MSU5FX18sIFwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjb2JqLCAjY2FsbCkKKyNkZWZp
bmUgT05fQ0FMTChvYmosIGNhbGwpIEdNT0NLX09OX0NBTExfSU1QTF8ob2JqLCBjYWxsKQorCisj
ZGVmaW5lIEdNT0NLX0VYUEVDVF9DQUxMX0lNUExfKG9iaiwgY2FsbCkgXAorICAgICgob2JqKS5n
bW9ja18jI2NhbGwpLkludGVybmFsRXhwZWN0ZWRBdChfX0ZJTEVfXywgX19MSU5FX18sICNvYmos
ICNjYWxsKQorI2RlZmluZSBFWFBFQ1RfQ0FMTChvYmosIGNhbGwpIEdNT0NLX0VYUEVDVF9DQUxM
X0lNUExfKG9iaiwgY2FsbCkKKworI2VuZGlmICAvLyBHTU9DS19JTkNMVURFX0dNT0NLX0dNT0NL
X1NQRUNfQlVJTERFUlNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2sv
Z21vY2suaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svZ21vY2suaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
NzM1YzcxYmY4YWE3MmRmMzQ2OTJmNDJjZDc4YjQ4ZGEzYmU2MzU1Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9nbW9jay5oCkBAIC0wLDAgKzEsOTQgQEAKKy8v
IENvcHlyaWdodCAyMDA3LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
CisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlz
dHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
Ly8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBBdXRob3I6
IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisKKy8vIEdvb2dsZSBNb2NrIC0gYSBmcmFt
ZXdvcmsgZm9yIHdyaXRpbmcgQysrIG1vY2sgY2xhc3Nlcy4KKy8vCisvLyBUaGlzIGlzIHRoZSBt
YWluIGhlYWRlciBmaWxlIGEgdXNlciBzaG91bGQgaW5jbHVkZS4KKworI2lmbmRlZiBHTU9DS19J
TkNMVURFX0dNT0NLX0dNT0NLX0hfCisjZGVmaW5lIEdNT0NLX0lOQ0xVREVfR01PQ0tfR01PQ0tf
SF8KKworLy8gVGhpcyBmaWxlIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBzeW50YXg6CisvLwor
Ly8gICBPTl9DQUxMKG1vY2tfb2JqZWN0Lk1ldGhvZCguLi4pKQorLy8gICAgIC5XaXRoKC4uLikg
PworLy8gICAgIC5XaWxsQnlEZWZhdWx0KC4uLik7CisvLworLy8gd2hlcmUgV2l0aCgpIGlzIG9w
dGlvbmFsIGFuZCBXaWxsQnlEZWZhdWx0KCkgbXVzdCBhcHBlYXIgZXhhY3RseQorLy8gb25jZS4K
Ky8vCisvLyAgIEVYUEVDVF9DQUxMKG1vY2tfb2JqZWN0Lk1ldGhvZCguLi4pKQorLy8gICAgIC5X
aXRoKC4uLikgPworLy8gICAgIC5UaW1lcyguLi4pID8KKy8vICAgICAuSW5TZXF1ZW5jZSguLi4p
ICoKKy8vICAgICAuV2lsbE9uY2UoLi4uKSAqCisvLyAgICAgLldpbGxSZXBlYXRlZGx5KC4uLikg
PworLy8gICAgIC5SZXRpcmVzT25TYXR1cmF0aW9uKCkgPyA7CisvLworLy8gd2hlcmUgYWxsIGNs
YXVzZXMgYXJlIG9wdGlvbmFsIGFuZCBXaWxsT25jZSgpIGNhbiBiZSByZXBlYXRlZC4KKworI2lu
Y2x1ZGUgImdtb2NrL2dtb2NrLWFjdGlvbnMuaCIKKyNpbmNsdWRlICJnbW9jay9nbW9jay1jYXJk
aW5hbGl0aWVzLmgiCisjaW5jbHVkZSAiZ21vY2svZ21vY2stZ2VuZXJhdGVkLWFjdGlvbnMuaCIK
KyNpbmNsdWRlICJnbW9jay9nbW9jay1nZW5lcmF0ZWQtZnVuY3Rpb24tbW9ja2Vycy5oIgorI2lu
Y2x1ZGUgImdtb2NrL2dtb2NrLWdlbmVyYXRlZC1uaWNlLXN0cmljdC5oIgorI2luY2x1ZGUgImdt
b2NrL2dtb2NrLWdlbmVyYXRlZC1tYXRjaGVycy5oIgorI2luY2x1ZGUgImdtb2NrL2dtb2NrLW1h
dGNoZXJzLmgiCisjaW5jbHVkZSAiZ21vY2svZ21vY2stbW9yZS1hY3Rpb25zLmgiCisjaW5jbHVk
ZSAiZ21vY2svZ21vY2stbW9yZS1tYXRjaGVycy5oIgorI2luY2x1ZGUgImdtb2NrL2ludGVybmFs
L2dtb2NrLWludGVybmFsLXV0aWxzLmgiCisKK25hbWVzcGFjZSB0ZXN0aW5nIHsKKworLy8gRGVj
bGFyZXMgR29vZ2xlIE1vY2sgZmxhZ3MgdGhhdCB3ZSB3YW50IGEgdXNlciB0byB1c2UgcHJvZ3Jh
bW1hdGljYWxseS4KK0dNT0NLX0RFQ0xBUkVfYm9vbF8oY2F0Y2hfbGVha2VkX21vY2tzKTsKK0dN
T0NLX0RFQ0xBUkVfc3RyaW5nXyh2ZXJib3NlKTsKKworLy8gSW5pdGlhbGl6ZXMgR29vZ2xlIE1v
Y2suICBUaGlzIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBydW5uaW5nIHRoZQorLy8gdGVzdHMuICBJ
biBwYXJ0aWN1bGFyLCBpdCBwYXJzZXMgdGhlIGNvbW1hbmQgbGluZSBmb3IgdGhlIGZsYWdzCisv
LyB0aGF0IEdvb2dsZSBNb2NrIHJlY29nbml6ZXMuICBXaGVuZXZlciBhIEdvb2dsZSBNb2NrIGZs
YWcgaXMgc2VlbiwKKy8vIGl0IGlzIHJlbW92ZWQgZnJvbSBhcmd2LCBhbmQgKmFyZ2MgaXMgZGVj
cmVtZW50ZWQuCisvLworLy8gTm8gdmFsdWUgaXMgcmV0dXJuZWQuICBJbnN0ZWFkLCB0aGUgR29v
Z2xlIE1vY2sgZmxhZyB2YXJpYWJsZXMgYXJlCisvLyB1cGRhdGVkLgorLy8KKy8vIFNpbmNlIEdv
b2dsZSBUZXN0IGlzIG5lZWRlZCBmb3IgR29vZ2xlIE1vY2sgdG8gd29yaywgdGhpcyBmdW5jdGlv
bgorLy8gYWxzbyBpbml0aWFsaXplcyBHb29nbGUgVGVzdCBhbmQgcGFyc2VzIGl0cyBmbGFncywg
aWYgdGhhdCBoYXNuJ3QKKy8vIGJlZW4gZG9uZS4KK0dURVNUX0FQSV8gdm9pZCBJbml0R29vZ2xl
TW9jayhpbnQqIGFyZ2MsIGNoYXIqKiBhcmd2KTsKKworLy8gVGhpcyBvdmVybG9hZGVkIHZlcnNp
b24gY2FuIGJlIHVzZWQgaW4gV2luZG93cyBwcm9ncmFtcyBjb21waWxlZCBpbgorLy8gVU5JQ09E
RSBtb2RlLgorR1RFU1RfQVBJXyB2b2lkIEluaXRHb29nbGVNb2NrKGludCogYXJnYywgd2NoYXJf
dCoqIGFyZ3YpOworCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZworCisjZW5kaWYgIC8vIEdNT0NL
X0lOQ0xVREVfR01PQ0tfR01PQ0tfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUv
Z21vY2svaW50ZXJuYWwvY3VzdG9tL2dtb2NrLWdlbmVyYXRlZC1hY3Rpb25zLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
bW9jay9pbmNsdWRlL2dtb2NrL2ludGVybmFsL2N1c3RvbS9nbW9jay1nZW5lcmF0ZWQtYWN0aW9u
cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjdkYzNiMWFkNTQxNjY1MjJkNzk2OTJjMzZmNzFlYmRlODY4NzMyZjgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2ludGVybmFsL2N1
c3RvbS9nbW9jay1nZW5lcmF0ZWQtYWN0aW9ucy5oCkBAIC0wLDAgKzEsOCBAQAorLy8gVGhpcyBm
aWxlIHdhcyBHRU5FUkFURUQgYnkgY29tbWFuZDoKKy8vICAgICBwdW1wLnB5IGdtb2NrLWdlbmVy
YXRlZC1hY3Rpb25zLmgucHVtcAorLy8gRE8gTk9UIEVESVQgQlkgSEFORCEhIQorCisjaWZuZGVm
IEdNT0NLX0lOQ0xVREVfR01PQ0tfSU5URVJOQUxfQ1VTVE9NX0dNT0NLX0dFTkVSQVRFRF9BQ1RJ
T05TX0hfCisjZGVmaW5lIEdNT0NLX0lOQ0xVREVfR01PQ0tfSU5URVJOQUxfQ1VTVE9NX0dNT0NL
X0dFTkVSQVRFRF9BQ1RJT05TX0hfCisKKyNlbmRpZiAgLy8gR01PQ0tfSU5DTFVERV9HTU9DS19J
TlRFUk5BTF9DVVNUT01fR01PQ0tfR0VORVJBVEVEX0FDVElPTlNfSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGVtb2NrL2luY2x1ZGUvZ21vY2svaW50ZXJuYWwvY3VzdG9tL2dtb2NrLWdlbmVyYXRlZC1h
Y3Rpb25zLmgucHVtcCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svaW50ZXJuYWwvY3VzdG9t
L2dtb2NrLWdlbmVyYXRlZC1hY3Rpb25zLmgucHVtcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMjZjOGEwOGE0Nzc0
YjlhOWY3NGIyY2VkMWViMDU1N2IyN2RlYTMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1v
Y2svaW5jbHVkZS9nbW9jay9pbnRlcm5hbC9jdXN0b20vZ21vY2stZ2VuZXJhdGVkLWFjdGlvbnMu
aC5wdW1wCkBAIC0wLDAgKzEsMTAgQEAKKyQkIC0qLSBtb2RlOiBjKys7IC0qLQorJCQgVGhpcyBp
cyBhIFB1bXAgc291cmNlIGZpbGUgKGh0dHA6Ly9nby9wdW1wKS4gIFBsZWFzZSB1c2UgUHVtcCB0
byBjb252ZXJ0CiskJCBpdCB0byBjYWxsYmFjay1hY3Rpb25zLmguCiskJAorJHZhciBtYXhfY2Fs
bGJhY2tfYXJpdHkgPSA1CiskJH19IFRoaXMgbWV0YSBjb21tZW50IGZpeGVzIGF1dG8taW5kZW50
YXRpb24gaW4gZWRpdG9ycy4KKyNpZm5kZWYgR01PQ0tfSU5DTFVERV9HTU9DS19JTlRFUk5BTF9D
VVNUT01fR01PQ0tfR0VORVJBVEVEX0FDVElPTlNfSF8KKyNkZWZpbmUgR01PQ0tfSU5DTFVERV9H
TU9DS19JTlRFUk5BTF9DVVNUT01fR01PQ0tfR0VORVJBVEVEX0FDVElPTlNfSF8KKworI2VuZGlm
ICAvLyBHTU9DS19JTkNMVURFX0dNT0NLX0lOVEVSTkFMX0NVU1RPTV9HTU9DS19HRU5FUkFURURf
QUNUSU9OU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9pbnRlcm5h
bC9jdXN0b20vZ21vY2stbWF0Y2hlcnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svaW50
ZXJuYWwvY3VzdG9tL2dtb2NrLW1hdGNoZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjJlZmVmOTFkYmU1Mzdk
MWIxY2IxM2UyZTlmMmJlNTRjYmQ3ZTg4ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2Nr
L2luY2x1ZGUvZ21vY2svaW50ZXJuYWwvY3VzdG9tL2dtb2NrLW1hdGNoZXJzLmgKQEAgLTAsMCAr
MSwzOSBAQAorLy8gQ29weXJpZ2h0IDIwMTUsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8K
Ky8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
Ly8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8K
Ky8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQorLy8gQW4gaW5zdGFsbGF0aW9uLXNwZWNpZmljIGV4dGVuc2lvbiBwb2ludCBmb3Ig
Z21vY2stbWF0Y2hlcnMuaC4KKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8KKy8vIEFkZHMgZ29vZ2xlMyBjYWxsYmFjayBz
dXBwb3J0IHRvIENhbGxhYmxlVHJhaXRzLgorLy8KKyNpZm5kZWYgR01PQ0tfSU5DTFVERV9HTU9D
S19JTlRFUk5BTF9DVVNUT01fQ0FMTEJBQ0tfTUFUQ0hFUlNfSF8KKyNkZWZpbmUgR01PQ0tfSU5D
TFVERV9HTU9DS19JTlRFUk5BTF9DVVNUT01fQ0FMTEJBQ0tfTUFUQ0hFUlNfSF8KKworI2VuZGlm
ICAvLyAgR01PQ0tfSU5DTFVERV9HTU9DS19JTlRFUk5BTF9DVVNUT01fQ0FMTEJBQ0tfTUFUQ0hF
UlNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svaW50ZXJuYWwvY3Vz
dG9tL2dtb2NrLXBvcnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svaW50ZXJuYWwvY3Vz
dG9tL2dtb2NrLXBvcnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45Y2U4YmZlMDZiZjEyYmZjZjIzMTk0NTY3Zjkw
YWQwY2NkNTgzNjQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9j
ay9pbnRlcm5hbC9jdXN0b20vZ21vY2stcG9ydC5oCkBAIC0wLDAgKzEsNDYgQEAKKy8vIENvcHly
aWdodCAyMDE1LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
Ly8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0
aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
Ly8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBJbmplY3Rpb24gcG9p
bnQgZm9yIGN1c3RvbSB1c2VyIGNvbmZpZ3VyYXRpb25zLgorLy8gVGhlIGZvbGxvd2luZyBtYWNy
b3MgY2FuIGJlIGRlZmluZWQ6CisvLworLy8gICBGbGFnIHJlbGF0ZWQgbWFjcm9zOgorLy8gICAg
IEdNT0NLX0RFQ0xBUkVfYm9vbF8obmFtZSkKKy8vICAgICBHTU9DS19ERUNMQVJFX2ludDMyXyhu
YW1lKQorLy8gICAgIEdNT0NLX0RFQ0xBUkVfc3RyaW5nXyhuYW1lKQorLy8gICAgIEdNT0NLX0RF
RklORV9ib29sXyhuYW1lLCBkZWZhdWx0X3ZhbCwgZG9jKQorLy8gICAgIEdNT0NLX0RFRklORV9p
bnQzMl8obmFtZSwgZGVmYXVsdF92YWwsIGRvYykKKy8vICAgICBHTU9DS19ERUZJTkVfc3RyaW5n
XyhuYW1lLCBkZWZhdWx0X3ZhbCwgZG9jKQorLy8KKy8vICoqIEN1c3RvbSBpbXBsZW1lbnRhdGlv
biBzdGFydHMgaGVyZSAqKgorCisjaWZuZGVmIEdNT0NLX0lOQ0xVREVfR01PQ0tfSU5URVJOQUxf
Q1VTVE9NX0dNT0NLX1BPUlRfSF8KKyNkZWZpbmUgR01PQ0tfSU5DTFVERV9HTU9DS19JTlRFUk5B
TF9DVVNUT01fR01PQ0tfUE9SVF9IXworCisjZW5kaWYgIC8vIEdNT0NLX0lOQ0xVREVfR01PQ0tf
SU5URVJOQUxfQ1VTVE9NX0dNT0NLX1BPUlRfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2lu
Y2x1ZGUvZ21vY2svaW50ZXJuYWwvZ21vY2stZ2VuZXJhdGVkLWludGVybmFsLXV0aWxzLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2ludGVybmFsL2dtb2NrLWdlbmVyYXRlZC1pbnRlcm5h
bC11dGlscy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4MTFlNDNmODdjMTFiMDA3ZmQ3YjQ1YjIxZTRjMWE1ZGVh
NjFmNmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2ludGVy
bmFsL2dtb2NrLWdlbmVyYXRlZC1pbnRlcm5hbC11dGlscy5oCkBAIC0wLDAgKzEsMjc5IEBACisv
LyBUaGlzIGZpbGUgd2FzIEdFTkVSQVRFRCBieSBjb21tYW5kOgorLy8gICAgIHB1bXAucHkgZ21v
Y2stZ2VuZXJhdGVkLWludGVybmFsLXV0aWxzLmgucHVtcAorLy8gRE8gTk9UIEVESVQgQlkgSEFO
RCEhIQorCisvLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLwor
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisv
LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLwor
Ly8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorCisvLyBHb29nbGUgTW9j
ayAtIGEgZnJhbWV3b3JrIGZvciB3cml0aW5nIEMrKyBtb2NrIGNsYXNzZXMuCisvLworLy8gVGhp
cyBmaWxlIGNvbnRhaW5zIHRlbXBsYXRlIG1ldGEtcHJvZ3JhbW1pbmcgdXRpbGl0eSBjbGFzc2Vz
IG5lZWRlZAorLy8gZm9yIGltcGxlbWVudGluZyBHb29nbGUgTW9jay4KKworI2lmbmRlZiBHTU9D
S19JTkNMVURFX0dNT0NLX0lOVEVSTkFMX0dNT0NLX0dFTkVSQVRFRF9JTlRFUk5BTF9VVElMU19I
XworI2RlZmluZSBHTU9DS19JTkNMVURFX0dNT0NLX0lOVEVSTkFMX0dNT0NLX0dFTkVSQVRFRF9J
TlRFUk5BTF9VVElMU19IXworCisjaW5jbHVkZSAiZ21vY2svaW50ZXJuYWwvZ21vY2stcG9ydC5o
IgorCituYW1lc3BhY2UgdGVzdGluZyB7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3Mg
TWF0Y2hlcjsKKworbmFtZXNwYWNlIGludGVybmFsIHsKKworLy8gQW4gSWdub3JlZFZhbHVlIG9i
amVjdCBjYW4gYmUgaW1wbGljaXRseSBjb25zdHJ1Y3RlZCBmcm9tIEFOWSB2YWx1ZS4KKy8vIFRo
aXMgaXMgdXNlZCBpbiBpbXBsZW1lbnRpbmcgdGhlIElnbm9yZVJlc3VsdChhKSBhY3Rpb24uCitj
bGFzcyBJZ25vcmVkVmFsdWUgeworIHB1YmxpYzoKKyAgLy8gVGhpcyBjb25zdHJ1Y3RvciB0ZW1w
bGF0ZSBhbGxvd3MgYW55IHZhbHVlIHRvIGJlIGltcGxpY2l0bHkKKyAgLy8gY29udmVydGVkIHRv
IElnbm9yZWRWYWx1ZS4gIFRoZSBvYmplY3QgaGFzIG5vIGRhdGEgbWVtYmVyIGFuZAorICAvLyBk
b2Vzbid0IHRyeSB0byByZW1lbWJlciBhbnl0aGluZyBhYm91dCB0aGUgYXJndW1lbnQuICBXZQor
ICAvLyBkZWxpYmVyYXRlbHkgb21pdCB0aGUgJ2V4cGxpY2l0JyBrZXl3b3JkIGluIG9yZGVyIHRv
IGFsbG93IHRoZQorICAvLyBjb252ZXJzaW9uIHRvIGJlIGltcGxpY2l0LgorICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KKyAgSWdub3JlZFZhbHVlKGNvbnN0IFQmIC8qIGlnbm9yZWQgKi8pIHt9ICAv
LyBOT0xJTlQocnVudGltZS9leHBsaWNpdCkKK307CisKKy8vIE1hdGNoZXJUdXBsZTxUPjo6dHlw
ZSBpcyBhIHR1cGxlIHR5cGUgd2hlcmUgZWFjaCBmaWVsZCBpcyBhIE1hdGNoZXIKKy8vIGZvciB0
aGUgY29ycmVzcG9uZGluZyBmaWVsZCBpbiB0dXBsZSB0eXBlIFQuCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVHVwbGU+CitzdHJ1Y3QgTWF0Y2hlclR1cGxlOworCit0ZW1wbGF0ZSA8Pgorc3RydWN0IE1h
dGNoZXJUdXBsZTwgOjp0ZXN0aW5nOjp0dXBsZTw+ID4geworICB0eXBlZGVmIDo6dGVzdGluZzo6
dHVwbGU8ID4gdHlwZTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBBMT4KK3N0cnVjdCBNYXRj
aGVyVHVwbGU8IDo6dGVzdGluZzo6dHVwbGU8QTE+ID4geworICB0eXBlZGVmIDo6dGVzdGluZzo6
dHVwbGU8TWF0Y2hlcjxBMT4gPiB0eXBlOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEExLCB0
eXBlbmFtZSBBMj4KK3N0cnVjdCBNYXRjaGVyVHVwbGU8IDo6dGVzdGluZzo6dHVwbGU8QTEsIEEy
PiA+IHsKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPE1hdGNoZXI8QTE+LCBNYXRjaGVyPEEy
PiA+IHR5cGU7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBl
bmFtZSBBMz4KK3N0cnVjdCBNYXRjaGVyVHVwbGU8IDo6dGVzdGluZzo6dHVwbGU8QTEsIEEyLCBB
Mz4gPiB7CisgIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxNYXRjaGVyPEExPiwgTWF0Y2hlcjxB
Mj4sIE1hdGNoZXI8QTM+ID4gdHlwZTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBBMSwgdHlw
ZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBBND4KK3N0cnVjdCBNYXRjaGVyVHVwbGU8
IDo6dGVzdGluZzo6dHVwbGU8QTEsIEEyLCBBMywgQTQ+ID4geworICB0eXBlZGVmIDo6dGVzdGlu
Zzo6dHVwbGU8TWF0Y2hlcjxBMT4sIE1hdGNoZXI8QTI+LCBNYXRjaGVyPEEzPiwKKyAgICAgIE1h
dGNoZXI8QTQ+ID4gdHlwZTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBBMSwgdHlwZW5hbWUg
QTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBBNCwgdHlwZW5hbWUgQTU+CitzdHJ1Y3QgTWF0Y2hl
clR1cGxlPCA6OnRlc3Rpbmc6OnR1cGxlPEExLCBBMiwgQTMsIEE0LCBBNT4gPiB7CisgIHR5cGVk
ZWYgOjp0ZXN0aW5nOjp0dXBsZTxNYXRjaGVyPEExPiwgTWF0Y2hlcjxBMj4sIE1hdGNoZXI8QTM+
LCBNYXRjaGVyPEE0PiwKKyAgICAgIE1hdGNoZXI8QTU+ID4gdHlwZTsKK307CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBBNCwgdHlw
ZW5hbWUgQTUsCisgICAgdHlwZW5hbWUgQTY+CitzdHJ1Y3QgTWF0Y2hlclR1cGxlPCA6OnRlc3Rp
bmc6OnR1cGxlPEExLCBBMiwgQTMsIEE0LCBBNSwgQTY+ID4geworICB0eXBlZGVmIDo6dGVzdGlu
Zzo6dHVwbGU8TWF0Y2hlcjxBMT4sIE1hdGNoZXI8QTI+LCBNYXRjaGVyPEEzPiwgTWF0Y2hlcjxB
ND4sCisgICAgICBNYXRjaGVyPEE1PiwgTWF0Y2hlcjxBNj4gPiB0eXBlOworfTsKKwordGVtcGxh
dGUgPHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0LCB0
eXBlbmFtZSBBNSwKKyAgICB0eXBlbmFtZSBBNiwgdHlwZW5hbWUgQTc+CitzdHJ1Y3QgTWF0Y2hl
clR1cGxlPCA6OnRlc3Rpbmc6OnR1cGxlPEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3PiA+IHsK
KyAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPE1hdGNoZXI8QTE+LCBNYXRjaGVyPEEyPiwgTWF0
Y2hlcjxBMz4sIE1hdGNoZXI8QTQ+LAorICAgICAgTWF0Y2hlcjxBNT4sIE1hdGNoZXI8QTY+LCBN
YXRjaGVyPEE3PiA+IHR5cGU7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQTEsIHR5cGVuYW1l
IEEyLCB0eXBlbmFtZSBBMywgdHlwZW5hbWUgQTQsIHR5cGVuYW1lIEE1LAorICAgIHR5cGVuYW1l
IEE2LCB0eXBlbmFtZSBBNywgdHlwZW5hbWUgQTg+CitzdHJ1Y3QgTWF0Y2hlclR1cGxlPCA6OnRl
c3Rpbmc6OnR1cGxlPEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOD4gPiB7CisgIHR5cGVk
ZWYgOjp0ZXN0aW5nOjp0dXBsZTxNYXRjaGVyPEExPiwgTWF0Y2hlcjxBMj4sIE1hdGNoZXI8QTM+
LCBNYXRjaGVyPEE0PiwKKyAgICAgIE1hdGNoZXI8QTU+LCBNYXRjaGVyPEE2PiwgTWF0Y2hlcjxB
Nz4sIE1hdGNoZXI8QTg+ID4gdHlwZTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBBMSwgdHlw
ZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBBNCwgdHlwZW5hbWUgQTUsCisgICAgdHlw
ZW5hbWUgQTYsIHR5cGVuYW1lIEE3LCB0eXBlbmFtZSBBOCwgdHlwZW5hbWUgQTk+CitzdHJ1Y3Qg
TWF0Y2hlclR1cGxlPCA6OnRlc3Rpbmc6OnR1cGxlPEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3
LCBBOCwgQTk+ID4geworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8TWF0Y2hlcjxBMT4sIE1h
dGNoZXI8QTI+LCBNYXRjaGVyPEEzPiwgTWF0Y2hlcjxBND4sCisgICAgICBNYXRjaGVyPEE1Piwg
TWF0Y2hlcjxBNj4sIE1hdGNoZXI8QTc+LCBNYXRjaGVyPEE4PiwgTWF0Y2hlcjxBOT4gPiB0eXBl
OworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMs
IHR5cGVuYW1lIEE0LCB0eXBlbmFtZSBBNSwKKyAgICB0eXBlbmFtZSBBNiwgdHlwZW5hbWUgQTcs
IHR5cGVuYW1lIEE4LCB0eXBlbmFtZSBBOSwgdHlwZW5hbWUgQTEwPgorc3RydWN0IE1hdGNoZXJU
dXBsZTwgOjp0ZXN0aW5nOjp0dXBsZTxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsIEE5
LAorICAgIEExMD4gPiB7CisgIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxNYXRjaGVyPEExPiwg
TWF0Y2hlcjxBMj4sIE1hdGNoZXI8QTM+LCBNYXRjaGVyPEE0PiwKKyAgICAgIE1hdGNoZXI8QTU+
LCBNYXRjaGVyPEE2PiwgTWF0Y2hlcjxBNz4sIE1hdGNoZXI8QTg+LCBNYXRjaGVyPEE5PiwKKyAg
ICAgIE1hdGNoZXI8QTEwPiA+IHR5cGU7Cit9OworCisvLyBUZW1wbGF0ZSBzdHJ1Y3QgRnVuY3Rp
b248Rj4sIHdoZXJlIEYgbXVzdCBiZSBhIGZ1bmN0aW9uIHR5cGUsIGNvbnRhaW5zCisvLyB0aGUg
Zm9sbG93aW5nIHR5cGVkZWZzOgorLy8KKy8vICAgUmVzdWx0OiAgICAgICAgICAgICAgIHRoZSBm
dW5jdGlvbidzIHJldHVybiB0eXBlLgorLy8gICBBcmd1bWVudE46ICAgICAgICAgICAgdGhlIHR5
cGUgb2YgdGhlIE4tdGggYXJndW1lbnQsIHdoZXJlIE4gc3RhcnRzIHdpdGggMS4KKy8vICAgQXJn
dW1lbnRUdXBsZTogICAgICAgIHRoZSB0dXBsZSB0eXBlIGNvbnNpc3Rpbmcgb2YgYWxsIHBhcmFt
ZXRlcnMgb2YgRi4KKy8vICAgQXJndW1lbnRNYXRjaGVyVHVwbGU6IHRoZSB0dXBsZSB0eXBlIGNv
bnNpc3Rpbmcgb2YgTWF0Y2hlcnMgZm9yIGFsbAorLy8gICAgICAgICAgICAgICAgICAgICAgICAg
cGFyYW1ldGVycyBvZiBGLgorLy8gICBNYWtlUmVzdWx0Vm9pZDogICAgICAgdGhlIGZ1bmN0aW9u
IHR5cGUgb2J0YWluZWQgYnkgc3Vic3RpdHV0aW5nIHZvaWQKKy8vICAgICAgICAgICAgICAgICAg
ICAgICAgIGZvciB0aGUgcmV0dXJuIHR5cGUgb2YgRi4KKy8vICAgTWFrZVJlc3VsdElnbm9yZWRW
YWx1ZToKKy8vICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmdW5jdGlvbiB0eXBlIG9idGFp
bmVkIGJ5IHN1YnN0aXR1dGluZyBTb21ldGhpbmcKKy8vICAgICAgICAgICAgICAgICAgICAgICAg
IGZvciB0aGUgcmV0dXJuIHR5cGUgb2YgRi4KK3RlbXBsYXRlIDx0eXBlbmFtZSBGPgorc3RydWN0
IEZ1bmN0aW9uOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUj4KK3N0cnVjdCBGdW5jdGlvbjxSKCk+
IHsKKyAgdHlwZWRlZiBSIFJlc3VsdDsKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPD4gQXJn
dW1lbnRUdXBsZTsKKyAgdHlwZWRlZiB0eXBlbmFtZSBNYXRjaGVyVHVwbGU8QXJndW1lbnRUdXBs
ZT46OnR5cGUgQXJndW1lbnRNYXRjaGVyVHVwbGU7CisgIHR5cGVkZWYgdm9pZCBNYWtlUmVzdWx0
Vm9pZCgpOworICB0eXBlZGVmIElnbm9yZWRWYWx1ZSBNYWtlUmVzdWx0SWdub3JlZFZhbHVlKCk7
Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgQTE+CitzdHJ1Y3QgRnVuY3Rp
b248UihBMSk+CisgICAgOiBGdW5jdGlvbjxSKCk+IHsKKyAgdHlwZWRlZiBBMSBBcmd1bWVudDE7
CisgIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxBMT4gQXJndW1lbnRUdXBsZTsKKyAgdHlwZWRl
ZiB0eXBlbmFtZSBNYXRjaGVyVHVwbGU8QXJndW1lbnRUdXBsZT46OnR5cGUgQXJndW1lbnRNYXRj
aGVyVHVwbGU7CisgIHR5cGVkZWYgdm9pZCBNYWtlUmVzdWx0Vm9pZChBMSk7CisgIHR5cGVkZWYg
SWdub3JlZFZhbHVlIE1ha2VSZXN1bHRJZ25vcmVkVmFsdWUoQTEpOworfTsKKwordGVtcGxhdGUg
PHR5cGVuYW1lIFIsIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMj4KK3N0cnVjdCBGdW5jdGlvbjxS
KEExLCBBMik+CisgICAgOiBGdW5jdGlvbjxSKEExKT4geworICB0eXBlZGVmIEEyIEFyZ3VtZW50
MjsKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPEExLCBBMj4gQXJndW1lbnRUdXBsZTsKKyAg
dHlwZWRlZiB0eXBlbmFtZSBNYXRjaGVyVHVwbGU8QXJndW1lbnRUdXBsZT46OnR5cGUgQXJndW1l
bnRNYXRjaGVyVHVwbGU7CisgIHR5cGVkZWYgdm9pZCBNYWtlUmVzdWx0Vm9pZChBMSwgQTIpOwor
ICB0eXBlZGVmIElnbm9yZWRWYWx1ZSBNYWtlUmVzdWx0SWdub3JlZFZhbHVlKEExLCBBMik7Cit9
OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBl
bmFtZSBBMz4KK3N0cnVjdCBGdW5jdGlvbjxSKEExLCBBMiwgQTMpPgorICAgIDogRnVuY3Rpb248
UihBMSwgQTIpPiB7CisgIHR5cGVkZWYgQTMgQXJndW1lbnQzOworICB0eXBlZGVmIDo6dGVzdGlu
Zzo6dHVwbGU8QTEsIEEyLCBBMz4gQXJndW1lbnRUdXBsZTsKKyAgdHlwZWRlZiB0eXBlbmFtZSBN
YXRjaGVyVHVwbGU8QXJndW1lbnRUdXBsZT46OnR5cGUgQXJndW1lbnRNYXRjaGVyVHVwbGU7Cisg
IHR5cGVkZWYgdm9pZCBNYWtlUmVzdWx0Vm9pZChBMSwgQTIsIEEzKTsKKyAgdHlwZWRlZiBJZ25v
cmVkVmFsdWUgTWFrZVJlc3VsdElnbm9yZWRWYWx1ZShBMSwgQTIsIEEzKTsKK307CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBSLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0
eXBlbmFtZSBBND4KK3N0cnVjdCBGdW5jdGlvbjxSKEExLCBBMiwgQTMsIEE0KT4KKyAgICA6IEZ1
bmN0aW9uPFIoQTEsIEEyLCBBMyk+IHsKKyAgdHlwZWRlZiBBNCBBcmd1bWVudDQ7CisgIHR5cGVk
ZWYgOjp0ZXN0aW5nOjp0dXBsZTxBMSwgQTIsIEEzLCBBND4gQXJndW1lbnRUdXBsZTsKKyAgdHlw
ZWRlZiB0eXBlbmFtZSBNYXRjaGVyVHVwbGU8QXJndW1lbnRUdXBsZT46OnR5cGUgQXJndW1lbnRN
YXRjaGVyVHVwbGU7CisgIHR5cGVkZWYgdm9pZCBNYWtlUmVzdWx0Vm9pZChBMSwgQTIsIEEzLCBB
NCk7CisgIHR5cGVkZWYgSWdub3JlZFZhbHVlIE1ha2VSZXN1bHRJZ25vcmVkVmFsdWUoQTEsIEEy
LCBBMywgQTQpOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEExLCB0eXBl
bmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0LAorICAgIHR5cGVuYW1lIEE1Pgorc3Ry
dWN0IEZ1bmN0aW9uPFIoQTEsIEEyLCBBMywgQTQsIEE1KT4KKyAgICA6IEZ1bmN0aW9uPFIoQTEs
IEEyLCBBMywgQTQpPiB7CisgIHR5cGVkZWYgQTUgQXJndW1lbnQ1OworICB0eXBlZGVmIDo6dGVz
dGluZzo6dHVwbGU8QTEsIEEyLCBBMywgQTQsIEE1PiBBcmd1bWVudFR1cGxlOworICB0eXBlZGVm
IHR5cGVuYW1lIE1hdGNoZXJUdXBsZTxBcmd1bWVudFR1cGxlPjo6dHlwZSBBcmd1bWVudE1hdGNo
ZXJUdXBsZTsKKyAgdHlwZWRlZiB2b2lkIE1ha2VSZXN1bHRWb2lkKEExLCBBMiwgQTMsIEE0LCBB
NSk7CisgIHR5cGVkZWYgSWdub3JlZFZhbHVlIE1ha2VSZXN1bHRJZ25vcmVkVmFsdWUoQTEsIEEy
LCBBMywgQTQsIEE1KTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBSLCB0eXBlbmFtZSBBMSwg
dHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBBNCwKKyAgICB0eXBlbmFtZSBBNSwg
dHlwZW5hbWUgQTY+CitzdHJ1Y3QgRnVuY3Rpb248UihBMSwgQTIsIEEzLCBBNCwgQTUsIEE2KT4K
KyAgICA6IEZ1bmN0aW9uPFIoQTEsIEEyLCBBMywgQTQsIEE1KT4geworICB0eXBlZGVmIEE2IEFy
Z3VtZW50NjsKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPEExLCBBMiwgQTMsIEE0LCBBNSwg
QTY+IEFyZ3VtZW50VHVwbGU7CisgIHR5cGVkZWYgdHlwZW5hbWUgTWF0Y2hlclR1cGxlPEFyZ3Vt
ZW50VHVwbGU+Ojp0eXBlIEFyZ3VtZW50TWF0Y2hlclR1cGxlOworICB0eXBlZGVmIHZvaWQgTWFr
ZVJlc3VsdFZvaWQoQTEsIEEyLCBBMywgQTQsIEE1LCBBNik7CisgIHR5cGVkZWYgSWdub3JlZFZh
bHVlIE1ha2VSZXN1bHRJZ25vcmVkVmFsdWUoQTEsIEEyLCBBMywgQTQsIEE1LCBBNik7Cit9Owor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFt
ZSBBMywgdHlwZW5hbWUgQTQsCisgICAgdHlwZW5hbWUgQTUsIHR5cGVuYW1lIEE2LCB0eXBlbmFt
ZSBBNz4KK3N0cnVjdCBGdW5jdGlvbjxSKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3KT4KKyAg
ICA6IEZ1bmN0aW9uPFIoQTEsIEEyLCBBMywgQTQsIEE1LCBBNik+IHsKKyAgdHlwZWRlZiBBNyBB
cmd1bWVudDc7CisgIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxBMSwgQTIsIEEzLCBBNCwgQTUs
IEE2LCBBNz4gQXJndW1lbnRUdXBsZTsKKyAgdHlwZWRlZiB0eXBlbmFtZSBNYXRjaGVyVHVwbGU8
QXJndW1lbnRUdXBsZT46OnR5cGUgQXJndW1lbnRNYXRjaGVyVHVwbGU7CisgIHR5cGVkZWYgdm9p
ZCBNYWtlUmVzdWx0Vm9pZChBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNyk7CisgIHR5cGVkZWYg
SWdub3JlZFZhbHVlIE1ha2VSZXN1bHRJZ25vcmVkVmFsdWUoQTEsIEEyLCBBMywgQTQsIEE1LCBB
NiwgQTcpOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEExLCB0eXBlbmFt
ZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0LAorICAgIHR5cGVuYW1lIEE1LCB0eXBlbmFt
ZSBBNiwgdHlwZW5hbWUgQTcsIHR5cGVuYW1lIEE4Pgorc3RydWN0IEZ1bmN0aW9uPFIoQTEsIEEy
LCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4KT4KKyAgICA6IEZ1bmN0aW9uPFIoQTEsIEEyLCBBMywg
QTQsIEE1LCBBNiwgQTcpPiB7CisgIHR5cGVkZWYgQTggQXJndW1lbnQ4OworICB0eXBlZGVmIDo6
dGVzdGluZzo6dHVwbGU8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4PiBBcmd1bWVudFR1
cGxlOworICB0eXBlZGVmIHR5cGVuYW1lIE1hdGNoZXJUdXBsZTxBcmd1bWVudFR1cGxlPjo6dHlw
ZSBBcmd1bWVudE1hdGNoZXJUdXBsZTsKKyAgdHlwZWRlZiB2b2lkIE1ha2VSZXN1bHRWb2lkKEEx
LCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCk7CisgIHR5cGVkZWYgSWdub3JlZFZhbHVlIE1h
a2VSZXN1bHRJZ25vcmVkVmFsdWUoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4KTsKK307
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBSLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVu
YW1lIEEzLCB0eXBlbmFtZSBBNCwKKyAgICB0eXBlbmFtZSBBNSwgdHlwZW5hbWUgQTYsIHR5cGVu
YW1lIEE3LCB0eXBlbmFtZSBBOCwgdHlwZW5hbWUgQTk+CitzdHJ1Y3QgRnVuY3Rpb248UihBMSwg
QTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsIEE5KT4KKyAgICA6IEZ1bmN0aW9uPFIoQTEsIEEy
LCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4KT4geworICB0eXBlZGVmIEE5IEFyZ3VtZW50OTsKKyAg
dHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwg
QTk+IEFyZ3VtZW50VHVwbGU7CisgIHR5cGVkZWYgdHlwZW5hbWUgTWF0Y2hlclR1cGxlPEFyZ3Vt
ZW50VHVwbGU+Ojp0eXBlIEFyZ3VtZW50TWF0Y2hlclR1cGxlOworICB0eXBlZGVmIHZvaWQgTWFr
ZVJlc3VsdFZvaWQoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOSk7CisgIHR5cGVk
ZWYgSWdub3JlZFZhbHVlIE1ha2VSZXN1bHRJZ25vcmVkVmFsdWUoQTEsIEEyLCBBMywgQTQsIEE1
LCBBNiwgQTcsIEE4LAorICAgICAgQTkpOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5
cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0LAorICAgIHR5
cGVuYW1lIEE1LCB0eXBlbmFtZSBBNiwgdHlwZW5hbWUgQTcsIHR5cGVuYW1lIEE4LCB0eXBlbmFt
ZSBBOSwKKyAgICB0eXBlbmFtZSBBMTA+CitzdHJ1Y3QgRnVuY3Rpb248UihBMSwgQTIsIEEzLCBB
NCwgQTUsIEE2LCBBNywgQTgsIEE5LCBBMTApPgorICAgIDogRnVuY3Rpb248UihBMSwgQTIsIEEz
LCBBNCwgQTUsIEE2LCBBNywgQTgsIEE5KT4geworICB0eXBlZGVmIEExMCBBcmd1bWVudDEwOwor
ICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4
LCBBOSwKKyAgICAgIEExMD4gQXJndW1lbnRUdXBsZTsKKyAgdHlwZWRlZiB0eXBlbmFtZSBNYXRj
aGVyVHVwbGU8QXJndW1lbnRUdXBsZT46OnR5cGUgQXJndW1lbnRNYXRjaGVyVHVwbGU7CisgIHR5
cGVkZWYgdm9pZCBNYWtlUmVzdWx0Vm9pZChBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgs
IEE5LCBBMTApOworICB0eXBlZGVmIElnbm9yZWRWYWx1ZSBNYWtlUmVzdWx0SWdub3JlZFZhbHVl
KEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwKKyAgICAgIEE5LCBBMTApOworfTsKKwor
fSAgLy8gbmFtZXNwYWNlIGludGVybmFsCisKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCisKKyNl
bmRpZiAgLy8gR01PQ0tfSU5DTFVERV9HTU9DS19JTlRFUk5BTF9HTU9DS19HRU5FUkFURURfSU5U
RVJOQUxfVVRJTFNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svaW50
ZXJuYWwvZ21vY2stZ2VuZXJhdGVkLWludGVybmFsLXV0aWxzLmgucHVtcCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2Nr
L2luY2x1ZGUvZ21vY2svaW50ZXJuYWwvZ21vY2stZ2VuZXJhdGVkLWludGVybmFsLXV0aWxzLmgu
cHVtcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44MDBhZjE3YzFkOGJiYjgwMDIwMThiYzNlZjFkYWM0ZDMxY2VlOWU4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9pbnRlcm5hbC9n
bW9jay1nZW5lcmF0ZWQtaW50ZXJuYWwtdXRpbHMuaC5wdW1wCkBAIC0wLDAgKzEsMTM2IEBACisk
JCAtKi0gbW9kZTogYysrOyAtKi0KKyQkIFRoaXMgaXMgYSBQdW1wIHNvdXJjZSBmaWxlLiAgUGxl
YXNlIHVzZSBQdW1wIHRvIGNvbnZlcnQgaXQgdG8KKyQkIGdtb2NrLWdlbmVyYXRlZC1mdW5jdGlv
bi1tb2NrZXJzLmguCiskJAorJHZhciBuID0gMTAgICQkIFRoZSBtYXhpbXVtIGFyaXR5IHdlIHN1
cHBvcnQuCisvLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLwor
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisv
LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLwor
Ly8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorCisvLyBHb29nbGUgTW9j
ayAtIGEgZnJhbWV3b3JrIGZvciB3cml0aW5nIEMrKyBtb2NrIGNsYXNzZXMuCisvLworLy8gVGhp
cyBmaWxlIGNvbnRhaW5zIHRlbXBsYXRlIG1ldGEtcHJvZ3JhbW1pbmcgdXRpbGl0eSBjbGFzc2Vz
IG5lZWRlZAorLy8gZm9yIGltcGxlbWVudGluZyBHb29nbGUgTW9jay4KKworI2lmbmRlZiBHTU9D
S19JTkNMVURFX0dNT0NLX0lOVEVSTkFMX0dNT0NLX0dFTkVSQVRFRF9JTlRFUk5BTF9VVElMU19I
XworI2RlZmluZSBHTU9DS19JTkNMVURFX0dNT0NLX0lOVEVSTkFMX0dNT0NLX0dFTkVSQVRFRF9J
TlRFUk5BTF9VVElMU19IXworCisjaW5jbHVkZSAiZ21vY2svaW50ZXJuYWwvZ21vY2stcG9ydC5o
IgorCituYW1lc3BhY2UgdGVzdGluZyB7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3Mg
TWF0Y2hlcjsKKworbmFtZXNwYWNlIGludGVybmFsIHsKKworLy8gQW4gSWdub3JlZFZhbHVlIG9i
amVjdCBjYW4gYmUgaW1wbGljaXRseSBjb25zdHJ1Y3RlZCBmcm9tIEFOWSB2YWx1ZS4KKy8vIFRo
aXMgaXMgdXNlZCBpbiBpbXBsZW1lbnRpbmcgdGhlIElnbm9yZVJlc3VsdChhKSBhY3Rpb24uCitj
bGFzcyBJZ25vcmVkVmFsdWUgeworIHB1YmxpYzoKKyAgLy8gVGhpcyBjb25zdHJ1Y3RvciB0ZW1w
bGF0ZSBhbGxvd3MgYW55IHZhbHVlIHRvIGJlIGltcGxpY2l0bHkKKyAgLy8gY29udmVydGVkIHRv
IElnbm9yZWRWYWx1ZS4gIFRoZSBvYmplY3QgaGFzIG5vIGRhdGEgbWVtYmVyIGFuZAorICAvLyBk
b2Vzbid0IHRyeSB0byByZW1lbWJlciBhbnl0aGluZyBhYm91dCB0aGUgYXJndW1lbnQuICBXZQor
ICAvLyBkZWxpYmVyYXRlbHkgb21pdCB0aGUgJ2V4cGxpY2l0JyBrZXl3b3JkIGluIG9yZGVyIHRv
IGFsbG93IHRoZQorICAvLyBjb252ZXJzaW9uIHRvIGJlIGltcGxpY2l0LgorICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KKyAgSWdub3JlZFZhbHVlKGNvbnN0IFQmIC8qIGlnbm9yZWQgKi8pIHt9ICAv
LyBOT0xJTlQocnVudGltZS9leHBsaWNpdCkKK307CisKKy8vIE1hdGNoZXJUdXBsZTxUPjo6dHlw
ZSBpcyBhIHR1cGxlIHR5cGUgd2hlcmUgZWFjaCBmaWVsZCBpcyBhIE1hdGNoZXIKKy8vIGZvciB0
aGUgY29ycmVzcG9uZGluZyBmaWVsZCBpbiB0dXBsZSB0eXBlIFQuCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVHVwbGU+CitzdHJ1Y3QgTWF0Y2hlclR1cGxlOworCisKKyRyYW5nZSBpIDAuLm4KKyRmb3Ig
aSBbWworJHJhbmdlIGogMS4uaQorJHZhciB0eXBlbmFtZV9BcyA9IFtbJGZvciBqLCBbW3R5cGVu
YW1lIEEkal1dXV0KKyR2YXIgQXMgPSBbWyRmb3IgaiwgW1tBJGpdXV1dCiskdmFyIG1hdGNoZXJf
QXMgPSBbWyRmb3IgaiwgW1tNYXRjaGVyPEEkaj5dXV1dCit0ZW1wbGF0ZSA8JHR5cGVuYW1lX0Fz
Pgorc3RydWN0IE1hdGNoZXJUdXBsZTwgOjp0ZXN0aW5nOjp0dXBsZTwkQXM+ID4geworICB0eXBl
ZGVmIDo6dGVzdGluZzo6dHVwbGU8JG1hdGNoZXJfQXMgPiB0eXBlOworfTsKKworCitdXQorLy8g
VGVtcGxhdGUgc3RydWN0IEZ1bmN0aW9uPEY+LCB3aGVyZSBGIG11c3QgYmUgYSBmdW5jdGlvbiB0
eXBlLCBjb250YWlucworLy8gdGhlIGZvbGxvd2luZyB0eXBlZGVmczoKKy8vCisvLyAgIFJlc3Vs
dDogICAgICAgICAgICAgICB0aGUgZnVuY3Rpb24ncyByZXR1cm4gdHlwZS4KKy8vICAgQXJndW1l
bnROOiAgICAgICAgICAgIHRoZSB0eXBlIG9mIHRoZSBOLXRoIGFyZ3VtZW50LCB3aGVyZSBOIHN0
YXJ0cyB3aXRoIDEuCisvLyAgIEFyZ3VtZW50VHVwbGU6ICAgICAgICB0aGUgdHVwbGUgdHlwZSBj
b25zaXN0aW5nIG9mIGFsbCBwYXJhbWV0ZXJzIG9mIEYuCisvLyAgIEFyZ3VtZW50TWF0Y2hlclR1
cGxlOiB0aGUgdHVwbGUgdHlwZSBjb25zaXN0aW5nIG9mIE1hdGNoZXJzIGZvciBhbGwKKy8vICAg
ICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMgb2YgRi4KKy8vICAgTWFrZVJlc3VsdFZv
aWQ6ICAgICAgIHRoZSBmdW5jdGlvbiB0eXBlIG9idGFpbmVkIGJ5IHN1YnN0aXR1dGluZyB2b2lk
CisvLyAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIHJldHVybiB0eXBlIG9mIEYuCisv
LyAgIE1ha2VSZXN1bHRJZ25vcmVkVmFsdWU6CisvLyAgICAgICAgICAgICAgICAgICAgICAgICB0
aGUgZnVuY3Rpb24gdHlwZSBvYnRhaW5lZCBieSBzdWJzdGl0dXRpbmcgU29tZXRoaW5nCisvLyAg
ICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIHJldHVybiB0eXBlIG9mIEYuCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgRj4KK3N0cnVjdCBGdW5jdGlvbjsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFI+
CitzdHJ1Y3QgRnVuY3Rpb248UigpPiB7CisgIHR5cGVkZWYgUiBSZXN1bHQ7CisgIHR5cGVkZWYg
Ojp0ZXN0aW5nOjp0dXBsZTw+IEFyZ3VtZW50VHVwbGU7CisgIHR5cGVkZWYgdHlwZW5hbWUgTWF0
Y2hlclR1cGxlPEFyZ3VtZW50VHVwbGU+Ojp0eXBlIEFyZ3VtZW50TWF0Y2hlclR1cGxlOworICB0
eXBlZGVmIHZvaWQgTWFrZVJlc3VsdFZvaWQoKTsKKyAgdHlwZWRlZiBJZ25vcmVkVmFsdWUgTWFr
ZVJlc3VsdElnbm9yZWRWYWx1ZSgpOworfTsKKworCiskcmFuZ2UgaSAxLi5uCiskZm9yIGkgW1sK
KyRyYW5nZSBqIDEuLmkKKyR2YXIgdHlwZW5hbWVfQXMgPSBbWyRmb3IgaiBbWywgdHlwZW5hbWUg
QSRqXV1dXQorJHZhciBBcyA9IFtbJGZvciBqLCBbW0Ekal1dXV0KKyR2YXIgbWF0Y2hlcl9BcyA9
IFtbJGZvciBqLCBbW01hdGNoZXI8QSRqPl1dXV0KKyRyYW5nZSBrIDEuLmktMQorJHZhciBwcmV2
X0FzID0gW1skZm9yIGssIFtbQSRrXV1dXQordGVtcGxhdGUgPHR5cGVuYW1lIFIkdHlwZW5hbWVf
QXM+CitzdHJ1Y3QgRnVuY3Rpb248UigkQXMpPgorICAgIDogRnVuY3Rpb248UigkcHJldl9Bcyk+
IHsKKyAgdHlwZWRlZiBBJGkgQXJndW1lbnQkaTsKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxl
PCRBcz4gQXJndW1lbnRUdXBsZTsKKyAgdHlwZWRlZiB0eXBlbmFtZSBNYXRjaGVyVHVwbGU8QXJn
dW1lbnRUdXBsZT46OnR5cGUgQXJndW1lbnRNYXRjaGVyVHVwbGU7CisgIHR5cGVkZWYgdm9pZCBN
YWtlUmVzdWx0Vm9pZCgkQXMpOworICB0eXBlZGVmIElnbm9yZWRWYWx1ZSBNYWtlUmVzdWx0SWdu
b3JlZFZhbHVlKCRBcyk7Cit9OworCisKK11dCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKKwor
fSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKKworI2VuZGlmICAvLyBHTU9DS19JTkNMVURFX0dNT0NL
X0lOVEVSTkFMX0dNT0NLX0dFTkVSQVRFRF9JTlRFUk5BTF9VVElMU19IXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9pbnRlcm5hbC9nbW9jay1pbnRlcm5hbC11dGlscy5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9pbnRlcm5hbC9nbW9jay1pbnRlcm5hbC11dGls
cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjdlNjVjZWE4ZGQxNGYyYWRmOGRiMDEyNjkzM2IxM2ZlODU5MDNiMGEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2ludGVybmFsL2dt
b2NrLWludGVybmFsLXV0aWxzLmgKQEAgLTAsMCArMSw1MTAgQEAKKy8vIENvcHlyaWdodCAyMDA3
LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
Ky8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8g
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8v
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBBdXRob3I6IHdhbkBnb29nbGUuY29t
IChaaGFueW9uZyBXYW4pCisKKy8vIEdvb2dsZSBNb2NrIC0gYSBmcmFtZXdvcmsgZm9yIHdyaXRp
bmcgQysrIG1vY2sgY2xhc3Nlcy4KKy8vCisvLyBUaGlzIGZpbGUgZGVmaW5lcyBzb21lIHV0aWxp
dGllcyB1c2VmdWwgZm9yIGltcGxlbWVudGluZyBHb29nbGUKKy8vIE1vY2suICBUaGV5IGFyZSBz
dWJqZWN0IHRvIGNoYW5nZSB3aXRob3V0IG5vdGljZSwgc28gcGxlYXNlIERPIE5PVAorLy8gVVNF
IFRIRU0gSU4gVVNFUiBDT0RFLgorCisjaWZuZGVmIEdNT0NLX0lOQ0xVREVfR01PQ0tfSU5URVJO
QUxfR01PQ0tfSU5URVJOQUxfVVRJTFNfSF8KKyNkZWZpbmUgR01PQ0tfSU5DTFVERV9HTU9DS19J
TlRFUk5BTF9HTU9DS19JTlRFUk5BTF9VVElMU19IXworCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNp
bmNsdWRlIDxvc3RyZWFtPiAgLy8gTk9MSU5UCisjaW5jbHVkZSA8c3RyaW5nPgorCisjaW5jbHVk
ZSAiZ21vY2svaW50ZXJuYWwvZ21vY2stZ2VuZXJhdGVkLWludGVybmFsLXV0aWxzLmgiCisjaW5j
bHVkZSAiZ21vY2svaW50ZXJuYWwvZ21vY2stcG9ydC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
LmgiCisKK25hbWVzcGFjZSB0ZXN0aW5nIHsKK25hbWVzcGFjZSBpbnRlcm5hbCB7CisKKy8vIENv
bnZlcnRzIGFuIGlkZW50aWZpZXIgbmFtZSB0byBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGxv
d2VyLWNhc2UKKy8vIHdvcmRzLiAgRWFjaCBtYXhpbXVtIHN1YnN0cmluZyBvZiB0aGUgZm9ybSBb
QS1aYS16XVthLXpdKnxcZCsgaXMKKy8vIHRyZWF0ZWQgYXMgb25lIHdvcmQuICBGb3IgZXhhbXBs
ZSwgYm90aCAiRm9vQmFyMTIzIiBhbmQKKy8vICJmb29fYmFyXzEyMyIgYXJlIGNvbnZlcnRlZCB0
byAiZm9vIGJhciAxMjMiLgorR1RFU1RfQVBJXyBzdHJpbmcgQ29udmVydElkZW50aWZpZXJOYW1l
VG9Xb3Jkcyhjb25zdCBjaGFyKiBpZF9uYW1lKTsKKworLy8gUG9pbnRlZU9mPFBvaW50ZXI+Ojp0
eXBlIGlzIHRoZSB0eXBlIG9mIGEgdmFsdWUgcG9pbnRlZCB0byBieSBhCisvLyBQb2ludGVyLCB3
aGljaCBjYW4gYmUgZWl0aGVyIGEgc21hcnQgcG9pbnRlciBvciBhIHJhdyBwb2ludGVyLiAgVGhl
CisvLyBmb2xsb3dpbmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBpcyBmb3IgdGhlIGNhc2Ugd2hl
cmUgUG9pbnRlciBpcyBhCisvLyBzbWFydCBwb2ludGVyLgordGVtcGxhdGUgPHR5cGVuYW1lIFBv
aW50ZXI+CitzdHJ1Y3QgUG9pbnRlZU9mIHsKKyAgLy8gU21hcnQgcG9pbnRlciBjbGFzc2VzIGRl
ZmluZSB0eXBlIGVsZW1lbnRfdHlwZSBhcyB0aGUgdHlwZSBvZgorICAvLyB0aGVpciBwb2ludGVl
cy4KKyAgdHlwZWRlZiB0eXBlbmFtZSBQb2ludGVyOjplbGVtZW50X3R5cGUgdHlwZTsKK307Cisv
LyBUaGlzIHNwZWNpYWxpemF0aW9uIGlzIGZvciB0aGUgcmF3IHBvaW50ZXIgY2FzZS4KK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IFBvaW50ZWVPZjxUKj4geyB0eXBlZGVmIFQgdHlwZTsg
fTsgIC8vIE5PTElOVAorCisvLyBHZXRSYXdQb2ludGVyKHApIHJldHVybnMgdGhlIHJhdyBwb2lu
dGVyIHVuZGVybHlpbmcgcCB3aGVuIHAgaXMgYQorLy8gc21hcnQgcG9pbnRlciwgb3IgcmV0dXJu
cyBwIGl0c2VsZiB3aGVuIHAgaXMgYWxyZWFkeSBhIHJhdyBwb2ludGVyLgorLy8gVGhlIGZvbGxv
d2luZyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGlzIGZvciB0aGUgc21hcnQgcG9pbnRlciBjYXNl
LgordGVtcGxhdGUgPHR5cGVuYW1lIFBvaW50ZXI+CitpbmxpbmUgY29uc3QgdHlwZW5hbWUgUG9p
bnRlcjo6ZWxlbWVudF90eXBlKiBHZXRSYXdQb2ludGVyKGNvbnN0IFBvaW50ZXImIHApIHsKKyAg
cmV0dXJuIHAuZ2V0KCk7Cit9CisvLyBUaGlzIG92ZXJsb2FkZWQgdmVyc2lvbiBpcyBmb3IgdGhl
IHJhdyBwb2ludGVyIGNhc2UuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudD4KK2lubGluZSBF
bGVtZW50KiBHZXRSYXdQb2ludGVyKEVsZW1lbnQqIHApIHsgcmV0dXJuIHA7IH0KKworLy8gVGhp
cyBjb21wYXJhdG9yIGFsbG93cyBsaW5rZWRfcHRyIHRvIGJlIHN0b3JlZCBpbiBzZXRzLgordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgTGlua2VkUHRyTGVzc1RoYW4geworICBib29sIG9w
ZXJhdG9yKCkoY29uc3QgOjp0ZXN0aW5nOjppbnRlcm5hbDo6bGlua2VkX3B0cjxUPiYgbGhzLAor
ICAgICAgICAgICAgICAgICAgY29uc3QgOjp0ZXN0aW5nOjppbnRlcm5hbDo6bGlua2VkX3B0cjxU
PiYgcmhzKSBjb25zdCB7CisgICAgcmV0dXJuIGxocy5nZXQoKSA8IHJocy5nZXQoKTsKKyAgfQor
fTsKKworLy8gU3ltYmlhbiBjb21waWxhdGlvbiBjYW4gYmUgZG9uZSB3aXRoIHdjaGFyX3QgYmVp
bmcgZWl0aGVyIGEgbmF0aXZlCisvLyB0eXBlIG9yIGEgdHlwZWRlZi4gIFVzaW5nIEdvb2dsZSBN
b2NrIHdpdGggT3BlbkMgd2l0aG91dCB3Y2hhcl90CisvLyBzaG91bGQgcmVxdWlyZSB0aGUgZGVm
aW5pdGlvbiBvZiBfU1RMUF9OT19XQ0hBUl9ULgorLy8KKy8vIE1TVkMgdHJlYXRzIHdjaGFyX3Qg
YXMgYSBuYXRpdmUgdHlwZSB1c3VhbGx5LCBidXQgdHJlYXRzIGl0IGFzIHRoZQorLy8gc2FtZSBh
cyB1bnNpZ25lZCBzaG9ydCB3aGVuIHRoZSBjb21waWxlciBvcHRpb24gL1pjOndjaGFyX3QtIGlz
CisvLyBzcGVjaWZpZWQuICBJdCBkZWZpbmVzIF9OQVRJVkVfV0NIQVJfVF9ERUZJTkVEIHN5bWJv
bCB3aGVuIHdjaGFyX3QKKy8vIGlzIGEgbmF0aXZlIHR5cGUuCisjaWYgKEdURVNUX09TX1NZTUJJ
QU4gJiYgZGVmaW5lZChfU1RMUF9OT19XQ0hBUl9UKSkgfHwgXAorICAgIChkZWZpbmVkKF9NU0Nf
VkVSKSAmJiAhZGVmaW5lZChfTkFUSVZFX1dDSEFSX1RfREVGSU5FRCkpCisvLyB3Y2hhcl90IGlz
IGEgdHlwZWRlZi4KKyNlbHNlCisjIGRlZmluZSBHTU9DS19XQ0hBUl9UX0lTX05BVElWRV8gMQor
I2VuZGlmCisKKy8vIHNpZ25lZCB3Y2hhcl90IGFuZCB1bnNpZ25lZCB3Y2hhcl90IGFyZSBOT1Qg
aW4gdGhlIEMrKyBzdGFuZGFyZC4KKy8vIFVzaW5nIHRoZW0gaXMgYSBiYWQgcHJhY3RpY2UgYW5k
IG5vdCBwb3J0YWJsZS4gIFNvIERPTidUIHVzZSB0aGVtLgorLy8KKy8vIFN0aWxsLCBHb29nbGUg
TW9jayBpcyBkZXNpZ25lZCB0byB3b3JrIGV2ZW4gaWYgdGhlIHVzZXIgdXNlcyBzaWduZWQKKy8v
IHdjaGFyX3Qgb3IgdW5zaWduZWQgd2NoYXJfdCAob2J2aW91c2x5LCBhc3N1bWluZyB0aGUgY29t
cGlsZXIKKy8vIHN1cHBvcnRzIHRoZW0pLgorLy8KKy8vIFRvIGdjYywKKy8vICAgd2NoYXJfdCA9
PSBzaWduZWQgd2NoYXJfdCAhPSB1bnNpZ25lZCB3Y2hhcl90ID09IHVuc2lnbmVkIGludAorI2lm
ZGVmIF9fR05VQ19fCisvLyBzaWduZWQvdW5zaWduZWQgd2NoYXJfdCBhcmUgdmFsaWQgdHlwZXMu
CisjIGRlZmluZSBHTU9DS19IQVNfU0lHTkVEX1dDSEFSX1RfIDEKKyNlbmRpZgorCisvLyBJbiB3
aGF0IGZvbGxvd3MsIHdlIHVzZSB0aGUgdGVybSAia2luZCIgdG8gaW5kaWNhdGUgd2hldGhlciBh
IHR5cGUKKy8vIGlzIGJvb2wsIGFuIGludGVnZXIgdHlwZSAoZXhjbHVkaW5nIGJvb2wpLCBhIGZs
b2F0aW5nLXBvaW50IHR5cGUsCisvLyBvciBub25lIG9mIHRoZW0uICBUaGlzIGNhdGVnb3JpemF0
aW9uIGlzIHVzZWZ1bCBmb3IgZGV0ZXJtaW5pbmcKKy8vIHdoZW4gYSBtYXRjaGVyIGFyZ3VtZW50
IHR5cGUgY2FuIGJlIHNhZmVseSBjb252ZXJ0ZWQgdG8gYW5vdGhlcgorLy8gdHlwZSBpbiB0aGUg
aW1wbGVtZW50YXRpb24gb2YgU2FmZU1hdGNoZXJDYXN0LgorZW51bSBUeXBlS2luZCB7CisgIGtC
b29sLCBrSW50ZWdlciwga0Zsb2F0aW5nUG9pbnQsIGtPdGhlcgorfTsKKworLy8gS2luZE9mPFQ+
Ojp2YWx1ZSBpcyB0aGUga2luZCBvZiB0eXBlIFQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3Ry
dWN0IEtpbmRPZiB7CisgIGVudW0geyB2YWx1ZSA9IGtPdGhlciB9OyAgLy8gVGhlIGRlZmF1bHQg
a2luZC4KK307CisKKy8vIFRoaXMgbWFjcm8gZGVjbGFyZXMgdGhhdCB0aGUga2luZCBvZiAndHlw
ZScgaXMgJ2tpbmQnLgorI2RlZmluZSBHTU9DS19ERUNMQVJFX0tJTkRfKHR5cGUsIGtpbmQpIFwK
KyAgdGVtcGxhdGUgPD4gc3RydWN0IEtpbmRPZjx0eXBlPiB7IGVudW0geyB2YWx1ZSA9IGtpbmQg
fTsgfQorCitHTU9DS19ERUNMQVJFX0tJTkRfKGJvb2wsIGtCb29sKTsKKworLy8gQWxsIHN0YW5k
YXJkIGludGVnZXIgdHlwZXMuCitHTU9DS19ERUNMQVJFX0tJTkRfKGNoYXIsIGtJbnRlZ2VyKTsK
K0dNT0NLX0RFQ0xBUkVfS0lORF8oc2lnbmVkIGNoYXIsIGtJbnRlZ2VyKTsKK0dNT0NLX0RFQ0xB
UkVfS0lORF8odW5zaWduZWQgY2hhciwga0ludGVnZXIpOworR01PQ0tfREVDTEFSRV9LSU5EXyhz
aG9ydCwga0ludGVnZXIpOyAgLy8gTk9MSU5UCitHTU9DS19ERUNMQVJFX0tJTkRfKHVuc2lnbmVk
IHNob3J0LCBrSW50ZWdlcik7ICAvLyBOT0xJTlQKK0dNT0NLX0RFQ0xBUkVfS0lORF8oaW50LCBr
SW50ZWdlcik7CitHTU9DS19ERUNMQVJFX0tJTkRfKHVuc2lnbmVkIGludCwga0ludGVnZXIpOwor
R01PQ0tfREVDTEFSRV9LSU5EXyhsb25nLCBrSW50ZWdlcik7ICAvLyBOT0xJTlQKK0dNT0NLX0RF
Q0xBUkVfS0lORF8odW5zaWduZWQgbG9uZywga0ludGVnZXIpOyAgLy8gTk9MSU5UCisKKyNpZiBH
TU9DS19XQ0hBUl9UX0lTX05BVElWRV8KK0dNT0NLX0RFQ0xBUkVfS0lORF8od2NoYXJfdCwga0lu
dGVnZXIpOworI2VuZGlmCisKKy8vIE5vbi1zdGFuZGFyZCBpbnRlZ2VyIHR5cGVzLgorR01PQ0tf
REVDTEFSRV9LSU5EXyhJbnQ2NCwga0ludGVnZXIpOworR01PQ0tfREVDTEFSRV9LSU5EXyhVSW50
NjQsIGtJbnRlZ2VyKTsKKworLy8gQWxsIHN0YW5kYXJkIGZsb2F0aW5nLXBvaW50IHR5cGVzLgor
R01PQ0tfREVDTEFSRV9LSU5EXyhmbG9hdCwga0Zsb2F0aW5nUG9pbnQpOworR01PQ0tfREVDTEFS
RV9LSU5EXyhkb3VibGUsIGtGbG9hdGluZ1BvaW50KTsKK0dNT0NLX0RFQ0xBUkVfS0lORF8obG9u
ZyBkb3VibGUsIGtGbG9hdGluZ1BvaW50KTsKKworI3VuZGVmIEdNT0NLX0RFQ0xBUkVfS0lORF8K
KworLy8gRXZhbHVhdGVzIHRvIHRoZSBraW5kIG9mICd0eXBlJy4KKyNkZWZpbmUgR01PQ0tfS0lO
RF9PRl8odHlwZSkgXAorICBzdGF0aWNfY2FzdDwgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VHlwZUtp
bmQ+KCBcCisgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpLaW5kT2Y8dHlwZT46OnZhbHVlKQor
CisvLyBFdmFsdWF0ZXMgdG8gdHJ1ZSBpZmYgaW50ZWdlciB0eXBlIFQgaXMgc2lnbmVkLgorI2Rl
ZmluZSBHTU9DS19JU19TSUdORURfKFQpIChzdGF0aWNfY2FzdDxUPigtMSkgPCAwKQorCisvLyBM
b3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZUltcGw8a0Zyb21LaW5kLCBGcm9tLCBrVG9LaW5k
LCBUbz46OnZhbHVlCisvLyBpcyB0cnVlIGlmZiBhcml0aG1ldGljIHR5cGUgRnJvbSBjYW4gYmUg
bG9zc2xlc3NseSBjb252ZXJ0ZWQgdG8KKy8vIGFyaXRobWV0aWMgdHlwZSBUby4KKy8vCisvLyBJ
dCdzIHRoZSB1c2VyJ3MgcmVzcG9uc2liaWxpdHkgdG8gZW5zdXJlIHRoYXQgYm90aCBGcm9tIGFu
ZCBUbyBhcmUKKy8vIHJhdyAoaS5lLiBoYXMgbm8gQ1YgbW9kaWZpZXIsIGlzIG5vdCBhIHBvaW50
ZXIsIGFuZCBpcyBub3QgYQorLy8gcmVmZXJlbmNlKSBidWlsdC1pbiBhcml0aG1ldGljIHR5cGVz
LCBrRnJvbUtpbmQgaXMgdGhlIGtpbmQgb2YKKy8vIEZyb20sIGFuZCBrVG9LaW5kIGlzIHRoZSBr
aW5kIG9mIFRvOyB0aGUgdmFsdWUgaXMKKy8vIGltcGxlbWVudGF0aW9uLWRlZmluZWQgd2hlbiB0
aGUgYWJvdmUgcHJlLWNvbmRpdGlvbiBpcyB2aW9sYXRlZC4KK3RlbXBsYXRlIDxUeXBlS2luZCBr
RnJvbUtpbmQsIHR5cGVuYW1lIEZyb20sIFR5cGVLaW5kIGtUb0tpbmQsIHR5cGVuYW1lIFRvPgor
c3RydWN0IExvc3NsZXNzQXJpdGhtZXRpY0NvbnZlcnRpYmxlSW1wbCA6IHB1YmxpYyBmYWxzZV90
eXBlIHt9OworCisvLyBDb252ZXJ0aW5nIGJvb2wgdG8gYm9vbCBpcyBsb3NzbGVzcy4KK3RlbXBs
YXRlIDw+CitzdHJ1Y3QgTG9zc2xlc3NBcml0aG1ldGljQ29udmVydGlibGVJbXBsPGtCb29sLCBi
b29sLCBrQm9vbCwgYm9vbD4KKyAgICA6IHB1YmxpYyB0cnVlX3R5cGUge307ICAvLyBOT0xJTlQK
KworLy8gQ29udmVydGluZyBib29sIHRvIGFueSBpbnRlZ2VyIHR5cGUgaXMgbG9zc2xlc3MuCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVG8+CitzdHJ1Y3QgTG9zc2xlc3NBcml0aG1ldGljQ29udmVydGli
bGVJbXBsPGtCb29sLCBib29sLCBrSW50ZWdlciwgVG8+CisgICAgOiBwdWJsaWMgdHJ1ZV90eXBl
IHt9OyAgLy8gTk9MSU5UCisKKy8vIENvbnZlcnRpbmcgYm9vbCB0byBhbnkgZmxvYXRpbmctcG9p
bnQgdHlwZSBpcyBsb3NzbGVzcy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUbz4KK3N0cnVjdCBMb3Nz
bGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZUltcGw8a0Jvb2wsIGJvb2wsIGtGbG9hdGluZ1BvaW50
LCBUbz4KKyAgICA6IHB1YmxpYyB0cnVlX3R5cGUge307ICAvLyBOT0xJTlQKKworLy8gQ29udmVy
dGluZyBhbiBpbnRlZ2VyIHRvIGJvb2wgaXMgbG9zc3kuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRnJv
bT4KK3N0cnVjdCBMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZUltcGw8a0ludGVnZXIsIEZy
b20sIGtCb29sLCBib29sPgorICAgIDogcHVibGljIGZhbHNlX3R5cGUge307ICAvLyBOT0xJTlQK
KworLy8gQ29udmVydGluZyBhbiBpbnRlZ2VyIHRvIGFub3RoZXIgbm9uLWJvb2wgaW50ZWdlciBp
cyBsb3NzbGVzcyBpZmYKKy8vIHRoZSB0YXJnZXQgdHlwZSdzIHJhbmdlIGVuY2xvc2VzIHRoZSBz
b3VyY2UgdHlwZSdzIHJhbmdlLgordGVtcGxhdGUgPHR5cGVuYW1lIEZyb20sIHR5cGVuYW1lIFRv
Pgorc3RydWN0IExvc3NsZXNzQXJpdGhtZXRpY0NvbnZlcnRpYmxlSW1wbDxrSW50ZWdlciwgRnJv
bSwga0ludGVnZXIsIFRvPgorICAgIDogcHVibGljIGJvb2xfY29uc3RhbnQ8CisgICAgICAvLyBX
aGVuIGNvbnZlcnRpbmcgZnJvbSBhIHNtYWxsZXIgc2l6ZSB0byBhIGxhcmdlciBzaXplLCB3ZSBh
cmUKKyAgICAgIC8vIGZpbmUgYXMgbG9uZyBhcyB3ZSBhcmUgbm90IGNvbnZlcnRpbmcgZnJvbSBz
aWduZWQgdG8gdW5zaWduZWQuCisgICAgICAoKHNpemVvZihGcm9tKSA8IHNpemVvZihUbykpICYm
CisgICAgICAgKCFHTU9DS19JU19TSUdORURfKEZyb20pIHx8IEdNT0NLX0lTX1NJR05FRF8oVG8p
KSkgfHwKKyAgICAgIC8vIFdoZW4gY29udmVydGluZyBiZXR3ZWVuIHRoZSBzYW1lIHNpemUsIHRo
ZSBzaWduZWRuZXNzIG11c3QgbWF0Y2guCisgICAgICAoKHNpemVvZihGcm9tKSA9PSBzaXplb2Yo
VG8pKSAmJgorICAgICAgIChHTU9DS19JU19TSUdORURfKEZyb20pID09IEdNT0NLX0lTX1NJR05F
RF8oVG8pKSk+IHt9OyAgLy8gTk9MSU5UCisKKyN1bmRlZiBHTU9DS19JU19TSUdORURfCisKKy8v
IENvbnZlcnRpbmcgYW4gaW50ZWdlciB0byBhIGZsb2F0aW5nLXBvaW50IHR5cGUgbWF5IGJlIGxv
c3N5LCBzaW5jZQorLy8gdGhlIGZvcm1hdCBvZiBhIGZsb2F0aW5nLXBvaW50IG51bWJlciBpcyBp
bXBsZW1lbnRhdGlvbi1kZWZpbmVkLgordGVtcGxhdGUgPHR5cGVuYW1lIEZyb20sIHR5cGVuYW1l
IFRvPgorc3RydWN0IExvc3NsZXNzQXJpdGhtZXRpY0NvbnZlcnRpYmxlSW1wbDxrSW50ZWdlciwg
RnJvbSwga0Zsb2F0aW5nUG9pbnQsIFRvPgorICAgIDogcHVibGljIGZhbHNlX3R5cGUge307ICAv
LyBOT0xJTlQKKworLy8gQ29udmVydGluZyBhIGZsb2F0aW5nLXBvaW50IHRvIGJvb2wgaXMgbG9z
c3kuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRnJvbT4KK3N0cnVjdCBMb3NzbGVzc0FyaXRobWV0aWND
b252ZXJ0aWJsZUltcGw8a0Zsb2F0aW5nUG9pbnQsIEZyb20sIGtCb29sLCBib29sPgorICAgIDog
cHVibGljIGZhbHNlX3R5cGUge307ICAvLyBOT0xJTlQKKworLy8gQ29udmVydGluZyBhIGZsb2F0
aW5nLXBvaW50IHRvIGFuIGludGVnZXIgaXMgbG9zc3kuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRnJv
bSwgdHlwZW5hbWUgVG8+CitzdHJ1Y3QgTG9zc2xlc3NBcml0aG1ldGljQ29udmVydGlibGVJbXBs
PGtGbG9hdGluZ1BvaW50LCBGcm9tLCBrSW50ZWdlciwgVG8+CisgICAgOiBwdWJsaWMgZmFsc2Vf
dHlwZSB7fTsgIC8vIE5PTElOVAorCisvLyBDb252ZXJ0aW5nIGEgZmxvYXRpbmctcG9pbnQgdG8g
YW5vdGhlciBmbG9hdGluZy1wb2ludCBpcyBsb3NzbGVzcworLy8gaWZmIHRoZSB0YXJnZXQgdHlw
ZSBpcyBhdCBsZWFzdCBhcyBiaWcgYXMgdGhlIHNvdXJjZSB0eXBlLgordGVtcGxhdGUgPHR5cGVu
YW1lIEZyb20sIHR5cGVuYW1lIFRvPgorc3RydWN0IExvc3NsZXNzQXJpdGhtZXRpY0NvbnZlcnRp
YmxlSW1wbDwKKyAga0Zsb2F0aW5nUG9pbnQsIEZyb20sIGtGbG9hdGluZ1BvaW50LCBUbz4KKyAg
ICA6IHB1YmxpYyBib29sX2NvbnN0YW50PHNpemVvZihGcm9tKSA8PSBzaXplb2YoVG8pPiB7fTsg
IC8vIE5PTElOVAorCisvLyBMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZTxGcm9tLCBUbz46
OnZhbHVlIGlzIHRydWUgaWZmIGFyaXRobWV0aWMKKy8vIHR5cGUgRnJvbSBjYW4gYmUgbG9zc2xl
c3NseSBjb252ZXJ0ZWQgdG8gYXJpdGhtZXRpYyB0eXBlIFRvLgorLy8KKy8vIEl0J3MgdGhlIHVz
ZXIncyByZXNwb25zaWJpbGl0eSB0byBlbnN1cmUgdGhhdCBib3RoIEZyb20gYW5kIFRvIGFyZQor
Ly8gcmF3IChpLmUuIGhhcyBubyBDViBtb2RpZmllciwgaXMgbm90IGEgcG9pbnRlciwgYW5kIGlz
IG5vdCBhCisvLyByZWZlcmVuY2UpIGJ1aWx0LWluIGFyaXRobWV0aWMgdHlwZXM7IHRoZSB2YWx1
ZSBpcworLy8gaW1wbGVtZW50YXRpb24tZGVmaW5lZCB3aGVuIHRoZSBhYm92ZSBwcmUtY29uZGl0
aW9uIGlzIHZpb2xhdGVkLgordGVtcGxhdGUgPHR5cGVuYW1lIEZyb20sIHR5cGVuYW1lIFRvPgor
c3RydWN0IExvc3NsZXNzQXJpdGhtZXRpY0NvbnZlcnRpYmxlCisgICAgOiBwdWJsaWMgTG9zc2xl
c3NBcml0aG1ldGljQ29udmVydGlibGVJbXBsPAorICBHTU9DS19LSU5EX09GXyhGcm9tKSwgRnJv
bSwgR01PQ0tfS0lORF9PRl8oVG8pLCBUbz4ge307ICAvLyBOT0xJTlQKKworLy8gVGhpcyBpbnRl
cmZhY2Uga25vd3MgaG93IHRvIHJlcG9ydCBhIEdvb2dsZSBNb2NrIGZhaWx1cmUgKGVpdGhlcgor
Ly8gbm9uLWZhdGFsIG9yIGZhdGFsKS4KK2NsYXNzIEZhaWx1cmVSZXBvcnRlckludGVyZmFjZSB7
CisgcHVibGljOgorICAvLyBUaGUgdHlwZSBvZiBhIGZhaWx1cmUgKGVpdGhlciBub24tZmF0YWwg
b3IgZmF0YWwpLgorICBlbnVtIEZhaWx1cmVUeXBlIHsKKyAgICBrTm9uZmF0YWwsIGtGYXRhbAor
ICB9OworCisgIHZpcnR1YWwgfkZhaWx1cmVSZXBvcnRlckludGVyZmFjZSgpIHt9CisKKyAgLy8g
UmVwb3J0cyBhIGZhaWx1cmUgdGhhdCBvY2N1cnJlZCBhdCB0aGUgZ2l2ZW4gc291cmNlIGZpbGUg
bG9jYXRpb24uCisgIHZpcnR1YWwgdm9pZCBSZXBvcnRGYWlsdXJlKEZhaWx1cmVUeXBlIHR5cGUs
IGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSkgPSAwOworfTsKKworLy8gUmV0dXJucyB0aGUg
ZmFpbHVyZSByZXBvcnRlciB1c2VkIGJ5IEdvb2dsZSBNb2NrLgorR1RFU1RfQVBJXyBGYWlsdXJl
UmVwb3J0ZXJJbnRlcmZhY2UqIEdldEZhaWx1cmVSZXBvcnRlcigpOworCisvLyBBc3NlcnRzIHRo
YXQgY29uZGl0aW9uIGlzIHRydWU7IGFib3J0cyB0aGUgcHJvY2VzcyB3aXRoIHRoZSBnaXZlbgor
Ly8gbWVzc2FnZSBpZiBjb25kaXRpb24gaXMgZmFsc2UuICBXZSBjYW5ub3QgdXNlIExPRyhGQVRB
TCkgb3IgQ0hFQ0soKQorLy8gYXMgR29vZ2xlIE1vY2sgbWlnaHQgYmUgdXNlZCB0byBtb2NrIHRo
ZSBsb2cgc2luayBpdHNlbGYuICBXZQorLy8gaW5saW5lIHRoaXMgZnVuY3Rpb24gdG8gcHJldmVu
dCBpdCBmcm9tIHNob3dpbmcgdXAgaW4gdGhlIHN0YWNrCisvLyB0cmFjZS4KK2lubGluZSB2b2lk
IEFzc2VydChib29sIGNvbmRpdGlvbiwgY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsCisgICAg
ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1zZykgeworICBpZiAoIWNvbmRpdGlv
bikgeworICAgIEdldEZhaWx1cmVSZXBvcnRlcigpLT5SZXBvcnRGYWlsdXJlKEZhaWx1cmVSZXBv
cnRlckludGVyZmFjZTo6a0ZhdGFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZpbGUsIGxpbmUsIG1zZyk7CisgIH0KK30KK2lubGluZSB2b2lkIEFzc2VydChib29s
IGNvbmRpdGlvbiwgY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUpIHsKKyAgQXNzZXJ0KGNvbmRp
dGlvbiwgZmlsZSwgbGluZSwgIkFzc2VydGlvbiBmYWlsZWQuIik7Cit9CisKKy8vIFZlcmlmaWVz
IHRoYXQgY29uZGl0aW9uIGlzIHRydWU7IGdlbmVyYXRlcyBhIG5vbi1mYXRhbCBmYWlsdXJlIGlm
CisvLyBjb25kaXRpb24gaXMgZmFsc2UuCitpbmxpbmUgdm9pZCBFeHBlY3QoYm9vbCBjb25kaXRp
b24sIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLAorICAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiBtc2cpIHsKKyAgaWYgKCFjb25kaXRpb24pIHsKKyAgICBHZXRGYWlsdXJl
UmVwb3J0ZXIoKS0+UmVwb3J0RmFpbHVyZShGYWlsdXJlUmVwb3J0ZXJJbnRlcmZhY2U6OmtOb25m
YXRhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLCBsaW5l
LCBtc2cpOworICB9Cit9CitpbmxpbmUgdm9pZCBFeHBlY3QoYm9vbCBjb25kaXRpb24sIGNvbnN0
IGNoYXIqIGZpbGUsIGludCBsaW5lKSB7CisgIEV4cGVjdChjb25kaXRpb24sIGZpbGUsIGxpbmUs
ICJFeHBlY3RhdGlvbiBmYWlsZWQuIik7Cit9CisKKy8vIFNldmVyaXR5IGxldmVsIG9mIGEgbG9n
LgorZW51bSBMb2dTZXZlcml0eSB7CisgIGtJbmZvID0gMCwKKyAga1dhcm5pbmcgPSAxCit9Owor
CisvLyBWYWxpZCB2YWx1ZXMgZm9yIHRoZSAtLWdtb2NrX3ZlcmJvc2UgZmxhZy4KKworLy8gQWxs
IGxvZ3MgKGluZm9ybWF0aW9uYWwgYW5kIHdhcm5pbmdzKSBhcmUgcHJpbnRlZC4KK2NvbnN0IGNo
YXIga0luZm9WZXJib3NpdHlbXSA9ICJpbmZvIjsKKy8vIE9ubHkgd2FybmluZ3MgYXJlIHByaW50
ZWQuCitjb25zdCBjaGFyIGtXYXJuaW5nVmVyYm9zaXR5W10gPSAid2FybmluZyI7CisvLyBObyBs
b2dzIGFyZSBwcmludGVkLgorY29uc3QgY2hhciBrRXJyb3JWZXJib3NpdHlbXSA9ICJlcnJvciI7
CisKKy8vIFJldHVybnMgdHJ1ZSBpZmYgYSBsb2cgd2l0aCB0aGUgZ2l2ZW4gc2V2ZXJpdHkgaXMg
dmlzaWJsZSBhY2NvcmRpbmcKKy8vIHRvIHRoZSAtLWdtb2NrX3ZlcmJvc2UgZmxhZy4KK0dURVNU
X0FQSV8gYm9vbCBMb2dJc1Zpc2libGUoTG9nU2V2ZXJpdHkgc2V2ZXJpdHkpOworCisvLyBQcmlu
dHMgdGhlIGdpdmVuIG1lc3NhZ2UgdG8gc3Rkb3V0IGlmZiAnc2V2ZXJpdHknID49IHRoZSBsZXZl
bAorLy8gc3BlY2lmaWVkIGJ5IHRoZSAtLWdtb2NrX3ZlcmJvc2UgZmxhZy4gIElmIHN0YWNrX2Zy
YW1lc190b19za2lwID49CisvLyAwLCBhbHNvIHByaW50cyB0aGUgc3RhY2sgdHJhY2UgZXhjbHVk
aW5nIHRoZSB0b3AKKy8vIHN0YWNrX2ZyYW1lc190b19za2lwIGZyYW1lcy4gIEluIG9wdCBtb2Rl
LCBhbnkgcG9zaXRpdmUKKy8vIHN0YWNrX2ZyYW1lc190b19za2lwIGlzIHRyZWF0ZWQgYXMgMCwg
c2luY2Ugd2UgZG9uJ3Qga25vdyB3aGljaAorLy8gZnVuY3Rpb24gY2FsbHMgd2lsbCBiZSBpbmxp
bmVkIGJ5IHRoZSBjb21waWxlciBhbmQgbmVlZCB0byBiZQorLy8gY29uc2VydmF0aXZlLgorR1RF
U1RfQVBJXyB2b2lkIExvZyhMb2dTZXZlcml0eSBzZXZlcml0eSwgY29uc3Qgc3RkOjpzdHJpbmcm
IG1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgIGludCBzdGFja19mcmFtZXNfdG9fc2tpcCk7
CisKKy8vIFRPRE8od2FuQGdvb2dsZS5jb20pOiBncm91cCBhbGwgdHlwZSB1dGlsaXRpZXMgdG9n
ZXRoZXIuCisKKy8vIFR5cGUgdHJhaXRzLgorCisvLyBpc19yZWZlcmVuY2U8VD46OnZhbHVlIGlz
IG5vbi16ZXJvIGlmZiBUIGlzIGEgcmVmZXJlbmNlIHR5cGUuCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gc3RydWN0IGlzX3JlZmVyZW5jZSA6IHB1YmxpYyBmYWxzZV90eXBlIHt9OwordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IHN0cnVjdCBpc19yZWZlcmVuY2U8VCY+IDogcHVibGljIHRydWVfdHlwZSB7
fTsKKworLy8gdHlwZV9lcXVhbHM8VDEsIFQyPjo6dmFsdWUgaXMgbm9uLXplcm8gaWZmIFQxIGFu
ZCBUMiBhcmUgdGhlIHNhbWUgdHlwZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUg
VDI+IHN0cnVjdCB0eXBlX2VxdWFscyA6IHB1YmxpYyBmYWxzZV90eXBlIHt9OwordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IHN0cnVjdCB0eXBlX2VxdWFsczxULCBUPiA6IHB1YmxpYyB0cnVlX3R5cGUg
e307CisKKy8vIHJlbW92ZV9yZWZlcmVuY2U8VD46OnR5cGUgcmVtb3ZlcyB0aGUgcmVmZXJlbmNl
IGZyb20gdHlwZSBULCBpZiBhbnkuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IHJlbW92
ZV9yZWZlcmVuY2UgeyB0eXBlZGVmIFQgdHlwZTsgfTsgIC8vIE5PTElOVAordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IHN0cnVjdCByZW1vdmVfcmVmZXJlbmNlPFQmPiB7IHR5cGVkZWYgVCB0eXBlOyB9
OyAvLyBOT0xJTlQKKworLy8gRGVjYXlBcnJheTxUPjo6dHlwZSB0dXJucyBhbiBhcnJheSB0eXBl
IFVbTl0gdG8gY29uc3QgVSogYW5kIHByZXNlcnZlcworLy8gb3RoZXIgdHlwZXMuICBVc2VmdWwg
Zm9yIHNhdmluZyBhIGNvcHkgb2YgYSBmdW5jdGlvbiBhcmd1bWVudC4KK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPiBzdHJ1Y3QgRGVjYXlBcnJheSB7IHR5cGVkZWYgVCB0eXBlOyB9OyAgLy8gTk9MSU5U
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4+IHN0cnVjdCBEZWNheUFycmF5PFRbTl0+
IHsKKyAgdHlwZWRlZiBjb25zdCBUKiB0eXBlOworfTsKKy8vIFNvbWV0aW1lcyBwZW9wbGUgdXNl
IGFycmF5cyB3aG9zZSBzaXplIGlzIG5vdCBhdmFpbGFibGUgYXQgdGhlIHVzZSBzaXRlCisvLyAo
ZS5nLiBleHRlcm4gY29uc3QgY2hhciBrTmFtZVByZWZpeFtdKS4gIFRoaXMgc3BlY2lhbGl6YXRp
b24gY292ZXJzIHRoYXQKKy8vIGNhc2UuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IERl
Y2F5QXJyYXk8VFtdPiB7CisgIHR5cGVkZWYgY29uc3QgVCogdHlwZTsKK307CisKKy8vIERpc2Fi
bGUgTVNWQyB3YXJuaW5ncyBmb3IgaW5maW5pdGUgcmVjdXJzaW9uLCBzaW5jZSBpbiB0aGlzIGNh
c2UgdGhlCisvLyB0aGUgcmVjdXJzaW9uIGlzIHVucmVhY2hhYmxlLgorI2lmZGVmIF9NU0NfVkVS
CisjIHByYWdtYSB3YXJuaW5nKHB1c2gpCisjIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDcxNykK
KyNlbmRpZgorCisvLyBJbnZhbGlkPFQ+KCkgaXMgdXNhYmxlIGFzIGFuIGV4cHJlc3Npb24gb2Yg
dHlwZSBULCBidXQgd2lsbCB0ZXJtaW5hdGUKKy8vIHRoZSBwcm9ncmFtIHdpdGggYW4gYXNzZXJ0
aW9uIGZhaWx1cmUgaWYgYWN0dWFsbHkgcnVuLiAgVGhpcyBpcyB1c2VmdWwKKy8vIHdoZW4gYSB2
YWx1ZSBvZiB0eXBlIFQgaXMgbmVlZGVkIGZvciBjb21waWxhdGlvbiwgYnV0IHRoZSBzdGF0ZW1l
bnQKKy8vIHdpbGwgbm90IHJlYWxseSBiZSBleGVjdXRlZCAob3Igd2UgZG9uJ3QgY2FyZSBpZiB0
aGUgc3RhdGVtZW50CisvLyBjcmFzaGVzKS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgoraW5saW5l
IFQgSW52YWxpZCgpIHsKKyAgQXNzZXJ0KGZhbHNlLCAiIiwgLTEsICJJbnRlcm5hbCBlcnJvcjog
YXR0ZW1wdCB0byByZXR1cm4gaW52YWxpZCB2YWx1ZSIpOworICAvLyBUaGlzIHN0YXRlbWVudCBp
cyB1bnJlYWNoYWJsZSwgYW5kIHdvdWxkIG5ldmVyIHRlcm1pbmF0ZSBldmVuIGlmIGl0CisgIC8v
IGNvdWxkIGJlIHJlYWNoZWQuIEl0IGlzIHByb3ZpZGVkIG9ubHkgdG8gcGxhY2F0ZSBjb21waWxl
ciB3YXJuaW5ncworICAvLyBhYm91dCBtaXNzaW5nIHJldHVybiBzdGF0ZW1lbnRzLgorICByZXR1
cm4gSW52YWxpZDxUPigpOworfQorCisjaWZkZWYgX01TQ19WRVIKKyMgcHJhZ21hIHdhcm5pbmco
cG9wKQorI2VuZGlmCisKKy8vIEdpdmVuIGEgcmF3IHR5cGUgKGkuZS4gaGF2aW5nIG5vIHRvcC1s
ZXZlbCByZWZlcmVuY2Ugb3IgY29uc3QKKy8vIG1vZGlmaWVyKSBSYXdDb250YWluZXIgdGhhdCdz
IGVpdGhlciBhbiBTVEwtc3R5bGUgY29udGFpbmVyIG9yIGEKKy8vIG5hdGl2ZSBhcnJheSwgY2xh
c3MgU3RsQ29udGFpbmVyVmlldzxSYXdDb250YWluZXI+IGhhcyB0aGUKKy8vIGZvbGxvd2luZyBt
ZW1iZXJzOgorLy8KKy8vICAgLSB0eXBlIGlzIGEgdHlwZSB0aGF0IHByb3ZpZGVzIGFuIFNUTC1z
dHlsZSBjb250YWluZXIgdmlldyB0bworLy8gICAgIChpLmUuIGltcGxlbWVudHMgdGhlIFNUTCBj
b250YWluZXIgY29uY2VwdCBmb3IpIFJhd0NvbnRhaW5lcjsKKy8vICAgLSBjb25zdF9yZWZlcmVu
Y2UgaXMgYSB0eXBlIHRoYXQgcHJvdmlkZXMgYSByZWZlcmVuY2UgdG8gYSBjb25zdAorLy8gICAg
IFJhd0NvbnRhaW5lcjsKKy8vICAgLSBDb25zdFJlZmVyZW5jZShyYXdfY29udGFpbmVyKSByZXR1
cm5zIGEgY29uc3QgcmVmZXJlbmNlIHRvIGFuIFNUTC1zdHlsZQorLy8gICAgIGNvbnRhaW5lciB2
aWV3IHRvIHJhd19jb250YWluZXIsIHdoaWNoIGlzIGEgUmF3Q29udGFpbmVyLgorLy8gICAtIENv
cHkocmF3X2NvbnRhaW5lcikgcmV0dXJucyBhbiBTVEwtc3R5bGUgY29udGFpbmVyIHZpZXcgb2Yg
YQorLy8gICAgIGNvcHkgb2YgcmF3X2NvbnRhaW5lciwgd2hpY2ggaXMgYSBSYXdDb250YWluZXIu
CisvLworLy8gVGhpcyBnZW5lcmljIHZlcnNpb24gaXMgdXNlZCB3aGVuIFJhd0NvbnRhaW5lciBp
dHNlbGYgaXMgYWxyZWFkeSBhbgorLy8gU1RMLXN0eWxlIGNvbnRhaW5lci4KK3RlbXBsYXRlIDxj
bGFzcyBSYXdDb250YWluZXI+CitjbGFzcyBTdGxDb250YWluZXJWaWV3IHsKKyBwdWJsaWM6Cisg
IHR5cGVkZWYgUmF3Q29udGFpbmVyIHR5cGU7CisgIHR5cGVkZWYgY29uc3QgdHlwZSYgY29uc3Rf
cmVmZXJlbmNlOworCisgIHN0YXRpYyBjb25zdF9yZWZlcmVuY2UgQ29uc3RSZWZlcmVuY2UoY29u
c3QgUmF3Q29udGFpbmVyJiBjb250YWluZXIpIHsKKyAgICAvLyBFbnN1cmVzIHRoYXQgUmF3Q29u
dGFpbmVyIGlzIG5vdCBhIGNvbnN0IHR5cGUuCisgICAgdGVzdGluZzo6U3RhdGljQXNzZXJ0VHlw
ZUVxPFJhd0NvbnRhaW5lciwKKyAgICAgICAgR1RFU1RfUkVNT1ZFX0NPTlNUXyhSYXdDb250YWlu
ZXIpPigpOworICAgIHJldHVybiBjb250YWluZXI7CisgIH0KKyAgc3RhdGljIHR5cGUgQ29weShj
b25zdCBSYXdDb250YWluZXImIGNvbnRhaW5lcikgeyByZXR1cm4gY29udGFpbmVyOyB9Cit9Owor
CisvLyBUaGlzIHNwZWNpYWxpemF0aW9uIGlzIHVzZWQgd2hlbiBSYXdDb250YWluZXIgaXMgYSBu
YXRpdmUgYXJyYXkgdHlwZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50LCBzaXplX3QgTj4K
K2NsYXNzIFN0bENvbnRhaW5lclZpZXc8RWxlbWVudFtOXT4geworIHB1YmxpYzoKKyAgdHlwZWRl
ZiBHVEVTVF9SRU1PVkVfQ09OU1RfKEVsZW1lbnQpIFJhd0VsZW1lbnQ7CisgIHR5cGVkZWYgaW50
ZXJuYWw6Ok5hdGl2ZUFycmF5PFJhd0VsZW1lbnQ+IHR5cGU7CisgIC8vIE5hdGl2ZUFycmF5PFQ+
IGNhbiByZXByZXNlbnQgYSBuYXRpdmUgYXJyYXkgZWl0aGVyIGJ5IHZhbHVlIG9yIGJ5CisgIC8v
IHJlZmVyZW5jZSAoc2VsZWN0ZWQgYnkgYSBjb25zdHJ1Y3RvciBhcmd1bWVudCksIHNvICdjb25z
dCB0eXBlJworICAvLyBjYW4gYmUgdXNlZCB0byByZWZlcmVuY2UgYSBjb25zdCBuYXRpdmUgYXJy
YXkuICBXZSBjYW5ub3QKKyAgLy8gJ3R5cGVkZWYgY29uc3QgdHlwZSYgY29uc3RfcmVmZXJlbmNl
JyBoZXJlLCBhcyB0aGF0IHdvdWxkIG1lYW4KKyAgLy8gQ29uc3RSZWZlcmVuY2UoKSBoYXMgdG8g
cmV0dXJuIGEgcmVmZXJlbmNlIHRvIGEgbG9jYWwgdmFyaWFibGUuCisgIHR5cGVkZWYgY29uc3Qg
dHlwZSBjb25zdF9yZWZlcmVuY2U7CisKKyAgc3RhdGljIGNvbnN0X3JlZmVyZW5jZSBDb25zdFJl
ZmVyZW5jZShjb25zdCBFbGVtZW50ICgmYXJyYXkpW05dKSB7CisgICAgLy8gRW5zdXJlcyB0aGF0
IEVsZW1lbnQgaXMgbm90IGEgY29uc3QgdHlwZS4KKyAgICB0ZXN0aW5nOjpTdGF0aWNBc3NlcnRU
eXBlRXE8RWxlbWVudCwgUmF3RWxlbWVudD4oKTsKKyNpZiBHVEVTVF9PU19TWU1CSUFOCisgICAg
Ly8gVGhlIE5va2lhIFN5bWJpYW4gY29tcGlsZXIgY29uZnVzZXMgaXRzZWxmIGluIHRlbXBsYXRl
IGluc3RhbnRpYXRpb24KKyAgICAvLyBmb3IgdGhpcyBjYWxsIHdpdGhvdXQgdGhlIGNhc3QgdG8g
RWxlbWVudCo6CisgICAgLy8gZnVuY3Rpb24gY2FsbCAnW3Rlc3Rpbmc6OmludGVybmFsOjpOYXRp
dmVBcnJheTxjaGFyICo+XS5OYXRpdmVBcnJheSgKKyAgICAvLyAgICAge2x2YWx9IGNvbnN0IGNo
YXIgKls0XSwgbG9uZywgdGVzdGluZzo6aW50ZXJuYWw6OlJlbGF0aW9uVG9Tb3VyY2UpJworICAg
IC8vICAgICBkb2VzIG5vdCBtYXRjaAorICAgIC8vICd0ZXN0aW5nOjppbnRlcm5hbDo6TmF0aXZl
QXJyYXk8Y2hhciAqPjo6TmF0aXZlQXJyYXkoCisgICAgLy8gICAgIGNoYXIgKmNvbnN0ICosIHVu
c2lnbmVkIGludCwgdGVzdGluZzo6aW50ZXJuYWw6OlJlbGF0aW9uVG9Tb3VyY2UpJworICAgIC8v
IChpbnN0YW50aWF0aW5nOiAndGVzdGluZzo6aW50ZXJuYWw6OkNvbnRhaW5zTWF0Y2hlckltcGwK
KyAgICAvLyAgICAgPGNvbnN0IGNoYXIgKiAoJilbNF0+OjpNYXRjaGVzKGNvbnN0IGNoYXIgKiAo
JilbNF0pIGNvbnN0JykKKyAgICAvLyAoaW5zdGFudGlhdGluZzogJ3Rlc3Rpbmc6OmludGVybmFs
OjpTdGxDb250YWluZXJWaWV3PGNoYXIgKls0XT46OgorICAgIC8vICAgICBDb25zdFJlZmVyZW5j
ZShjb25zdCBjaGFyICogKCYpWzRdKScpCisgICAgLy8gKGFuZCB0aG91Z2ggdGhlIE4gcGFyYW1l
dGVyIHR5cGUgaXMgbWlzbWF0Y2hlZCBpbiB0aGUgYWJvdmUgZXhwbGljaXQKKyAgICAvLyBjb252
ZXJzaW9uIG9mIGl0IGRvZXNuJ3QgaGVscCAtIG9ubHkgdGhlIGNvbnZlcnNpb24gb2YgdGhlIGFy
cmF5KS4KKyAgICByZXR1cm4gdHlwZShjb25zdF9jYXN0PEVsZW1lbnQqPigmYXJyYXlbMF0pLCBO
LAorICAgICAgICAgICAgICAgIFJlbGF0aW9uVG9Tb3VyY2VSZWZlcmVuY2UoKSk7CisjZWxzZQor
ICAgIHJldHVybiB0eXBlKGFycmF5LCBOLCBSZWxhdGlvblRvU291cmNlUmVmZXJlbmNlKCkpOwor
I2VuZGlmICAvLyBHVEVTVF9PU19TWU1CSUFOCisgIH0KKyAgc3RhdGljIHR5cGUgQ29weShjb25z
dCBFbGVtZW50ICgmYXJyYXkpW05dKSB7CisjaWYgR1RFU1RfT1NfU1lNQklBTgorICAgIHJldHVy
biB0eXBlKGNvbnN0X2Nhc3Q8RWxlbWVudCo+KCZhcnJheVswXSksIE4sIFJlbGF0aW9uVG9Tb3Vy
Y2VDb3B5KCkpOworI2Vsc2UKKyAgICByZXR1cm4gdHlwZShhcnJheSwgTiwgUmVsYXRpb25Ub1Nv
dXJjZUNvcHkoKSk7CisjZW5kaWYgIC8vIEdURVNUX09TX1NZTUJJQU4KKyAgfQorfTsKKworLy8g
VGhpcyBzcGVjaWFsaXphdGlvbiBpcyB1c2VkIHdoZW4gUmF3Q29udGFpbmVyIGlzIGEgbmF0aXZl
IGFycmF5CisvLyByZXByZXNlbnRlZCBhcyBhIChwb2ludGVyLCBzaXplKSB0dXBsZS4KK3RlbXBs
YXRlIDx0eXBlbmFtZSBFbGVtZW50UG9pbnRlciwgdHlwZW5hbWUgU2l6ZT4KK2NsYXNzIFN0bENv
bnRhaW5lclZpZXc8IDo6dGVzdGluZzo6dHVwbGU8RWxlbWVudFBvaW50ZXIsIFNpemU+ID4gewor
IHB1YmxpYzoKKyAgdHlwZWRlZiBHVEVTVF9SRU1PVkVfQ09OU1RfKAorICAgICAgdHlwZW5hbWUg
aW50ZXJuYWw6OlBvaW50ZWVPZjxFbGVtZW50UG9pbnRlcj46OnR5cGUpIFJhd0VsZW1lbnQ7Cisg
IHR5cGVkZWYgaW50ZXJuYWw6Ok5hdGl2ZUFycmF5PFJhd0VsZW1lbnQ+IHR5cGU7CisgIHR5cGVk
ZWYgY29uc3QgdHlwZSBjb25zdF9yZWZlcmVuY2U7CisKKyAgc3RhdGljIGNvbnN0X3JlZmVyZW5j
ZSBDb25zdFJlZmVyZW5jZSgKKyAgICAgIGNvbnN0IDo6dGVzdGluZzo6dHVwbGU8RWxlbWVudFBv
aW50ZXIsIFNpemU+JiBhcnJheSkgeworICAgIHJldHVybiB0eXBlKGdldDwwPihhcnJheSksIGdl
dDwxPihhcnJheSksIFJlbGF0aW9uVG9Tb3VyY2VSZWZlcmVuY2UoKSk7CisgIH0KKyAgc3RhdGlj
IHR5cGUgQ29weShjb25zdCA6OnRlc3Rpbmc6OnR1cGxlPEVsZW1lbnRQb2ludGVyLCBTaXplPiYg
YXJyYXkpIHsKKyAgICByZXR1cm4gdHlwZShnZXQ8MD4oYXJyYXkpLCBnZXQ8MT4oYXJyYXkpLCBS
ZWxhdGlvblRvU291cmNlQ29weSgpKTsKKyAgfQorfTsKKworLy8gVGhlIGZvbGxvd2luZyBzcGVj
aWFsaXphdGlvbiBwcmV2ZW50cyB0aGUgdXNlciBmcm9tIGluc3RhbnRpYXRpbmcKKy8vIFN0bENv
bnRhaW5lciB3aXRoIGEgcmVmZXJlbmNlIHR5cGUuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xh
c3MgU3RsQ29udGFpbmVyVmlldzxUJj47CisKKy8vIEEgdHlwZSB0cmFuc2Zvcm0gdG8gcmVtb3Zl
IGNvbnN0bmVzcyBmcm9tIHRoZSBmaXJzdCBwYXJ0IG9mIGEgcGFpci4KKy8vIFBhaXJzIGxpa2Ug
dGhhdCBhcmUgdXNlZCBhcyB0aGUgdmFsdWVfdHlwZSBvZiBhc3NvY2lhdGl2ZSBjb250YWluZXJz
LAorLy8gYW5kIHRoaXMgdHJhbnNmb3JtIHByb2R1Y2VzIGEgc2ltaWxhciBidXQgYXNzaWduYWJs
ZSBwYWlyLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgUmVtb3ZlQ29uc3RGcm9tS2V5
IHsKKyAgdHlwZWRlZiBUIHR5cGU7Cit9OworCisvLyBQYXJ0aWFsbHkgc3BlY2lhbGl6ZWQgdG8g
cmVtb3ZlIGNvbnN0bmVzcyBmcm9tIHN0ZDo6cGFpcjxjb25zdCBLLCBWPi4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBLLCB0eXBlbmFtZSBWPgorc3RydWN0IFJlbW92ZUNvbnN0RnJvbUtleTxzdGQ6OnBh
aXI8Y29uc3QgSywgVj4gPiB7CisgIHR5cGVkZWYgc3RkOjpwYWlyPEssIFY+IHR5cGU7Cit9Owor
CisvLyBNYXBwaW5nIGZyb20gYm9vbGVhbnMgdG8gdHlwZXMuIFNpbWlsYXIgdG8gYm9vc3Q6OmJv
b2xfPGtWYWx1ZT4gYW5kCisvLyBzdGQ6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIGtWYWx1ZT4u
Cit0ZW1wbGF0ZSA8Ym9vbCBrVmFsdWU+CitzdHJ1Y3QgQm9vbGVhbkNvbnN0YW50IHt9OworCit9
ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCisKKyNlbmRp
ZiAgLy8gR01PQ0tfSU5DTFVERV9HTU9DS19JTlRFUk5BTF9HTU9DS19JTlRFUk5BTF9VVElMU19I
XworCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2ludGVybmFsL2dtb2Nr
LXBvcnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svaW50ZXJuYWwvZ21vY2stcG9ydC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjYzZjRhNjgwMmU4ZTY2MGQzNmFhODliMTJkYzI4MTM4ZDIwZjY4MGIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2ludGVybmFsL2dtb2Nr
LXBvcnQuaApAQCAtMCwwICsxLDkxIEBACisvLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4K
Ky8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
Ky8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8v
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisvLworLy8gQXV0aG9yOiB2YWRpbWJAZ29vZ2xlLmNvbSAoVmFkaW0gQmVy
bWFuKQorLy8KKy8vIExvdy1sZXZlbCB0eXBlcyBhbmQgdXRpbGl0aWVzIGZvciBwb3J0aW5nIEdv
b2dsZSBNb2NrIHRvIHZhcmlvdXMKKy8vIHBsYXRmb3Jtcy4gIEFsbCBtYWNyb3MgZW5kaW5nIHdp
dGggXyBhbmQgc3ltYm9scyBkZWZpbmVkIGluIGFuCisvLyBpbnRlcm5hbCBuYW1lc3BhY2UgYXJl
IHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLiAgQ29kZQorLy8gb3V0c2lkZSBHb29n
bGUgTW9jayBNVVNUIE5PVCBVU0UgVEhFTSBESVJFQ1RMWS4gIE1hY3JvcyB0aGF0IGRvbid0Cisv
LyBlbmQgd2l0aCBfIGFyZSBwYXJ0IG9mIEdvb2dsZSBNb2NrJ3MgcHVibGljIEFQSSBhbmQgY2Fu
IGJlIHVzZWQgYnkKKy8vIGNvZGUgb3V0c2lkZSBHb29nbGUgTW9jay4KKworI2lmbmRlZiBHTU9D
S19JTkNMVURFX0dNT0NLX0lOVEVSTkFMX0dNT0NLX1BPUlRfSF8KKyNkZWZpbmUgR01PQ0tfSU5D
TFVERV9HTU9DS19JTlRFUk5BTF9HTU9DS19QT1JUX0hfCisKKyNpbmNsdWRlIDxhc3NlcnQuaD4K
KyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxpb3N0cmVhbT4KKworLy8gTW9zdCBvZiB0
aGUgdXRpbGl0aWVzIG5lZWRlZCBmb3IgcG9ydGluZyBHb29nbGUgTW9jayBhcmUgYWxzbworLy8g
cmVxdWlyZWQgZm9yIEdvb2dsZSBUZXN0IGFuZCBhcmUgZGVmaW5lZCBpbiBndGVzdC1wb3J0Lmgu
CisvLworLy8gTm90ZSB0byBtYWludGFpbmVyczogdG8gcmVkdWNlIGNvZGUgZHVwbGljYXRpb24s
IHByZWZlciBhZGRpbmcKKy8vIHBvcnRhYmlsaXR5IHV0aWxpdGllcyB0byBHb29nbGUgVGVzdCdz
IGd0ZXN0LXBvcnQuaCBpbnN0ZWFkIG9mCisvLyBoZXJlLCBhcyBHb29nbGUgTW9jayBkZXBlbmRz
IG9uIEdvb2dsZSBUZXN0LiAgT25seSBhZGQgYSB1dGlsaXR5CisvLyBoZXJlIGlmIGl0J3MgdHJ1
bHkgc3BlY2lmaWMgdG8gR29vZ2xlIE1vY2suCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtbGlua2VkX3B0ci5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIK
KyNpbmNsdWRlICJnbW9jay9pbnRlcm5hbC9jdXN0b20vZ21vY2stcG9ydC5oIgorCisvLyBUbyBh
dm9pZCBjb25kaXRpb25hbCBjb21waWxhdGlvbiBldmVyeXdoZXJlLCB3ZSBtYWtlIGl0CisvLyBn
bW9jay1wb3J0LmgncyByZXNwb25zaWJpbGl0eSB0byAjaW5jbHVkZSB0aGUgaGVhZGVyIGltcGxl
bWVudGluZworLy8gdHIxL3R1cGxlLiAgZ21vY2stcG9ydC5oIGRvZXMgdGhpcyB2aWEgZ3Rlc3Qt
cG9ydC5oLCB3aGljaCBpcworLy8gZ3VhcmFudGVlZCB0byBwdWxsIGluIHRoZSB0dXBsZSBoZWFk
ZXIuCisKKy8vIEZvciBNUyBWaXN1YWwgQysrLCBjaGVjayB0aGUgY29tcGlsZXIgdmVyc2lvbi4g
QXQgbGVhc3QgVlMgMjAwMyBpcworLy8gcmVxdWlyZWQgdG8gY29tcGlsZSBHb29nbGUgTW9jay4K
KyNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA8IDEzMTAKKyMgZXJyb3IgIkF0IGxl
YXN0IFZpc3VhbCBDKysgMjAwMyAoNy4xKSBpcyByZXF1aXJlZCB0byBjb21waWxlIEdvb2dsZSBN
b2NrLiIKKyNlbmRpZgorCisvLyBNYWNybyBmb3IgcmVmZXJlbmNpbmcgZmxhZ3MuICBUaGlzIGlz
IHB1YmxpYyBhcyB3ZSB3YW50IHRoZSB1c2VyIHRvCisvLyB1c2UgdGhpcyBzeW50YXggdG8gcmVm
ZXJlbmNlIEdvb2dsZSBNb2NrIGZsYWdzLgorI2RlZmluZSBHTU9DS19GTEFHKG5hbWUpIEZMQUdT
X2dtb2NrXyMjbmFtZQorCisjaWYgIWRlZmluZWQoR01PQ0tfREVDTEFSRV9ib29sXykKKworLy8g
TWFjcm9zIGZvciBkZWNsYXJpbmcgZmxhZ3MuCisjZGVmaW5lIEdNT0NLX0RFQ0xBUkVfYm9vbF8o
bmFtZSkgZXh0ZXJuIEdURVNUX0FQSV8gYm9vbCBHTU9DS19GTEFHKG5hbWUpCisjZGVmaW5lIEdN
T0NLX0RFQ0xBUkVfaW50MzJfKG5hbWUpIFwKKyAgICBleHRlcm4gR1RFU1RfQVBJXyA6OnRlc3Rp
bmc6OmludGVybmFsOjpJbnQzMiBHTU9DS19GTEFHKG5hbWUpCisjZGVmaW5lIEdNT0NLX0RFQ0xB
UkVfc3RyaW5nXyhuYW1lKSBcCisgICAgZXh0ZXJuIEdURVNUX0FQSV8gOjpzdGQ6OnN0cmluZyBH
TU9DS19GTEFHKG5hbWUpCisKKy8vIE1hY3JvcyBmb3IgZGVmaW5pbmcgZmxhZ3MuCisjZGVmaW5l
IEdNT0NLX0RFRklORV9ib29sXyhuYW1lLCBkZWZhdWx0X3ZhbCwgZG9jKSBcCisgICAgR1RFU1Rf
QVBJXyBib29sIEdNT0NLX0ZMQUcobmFtZSkgPSAoZGVmYXVsdF92YWwpCisjZGVmaW5lIEdNT0NL
X0RFRklORV9pbnQzMl8obmFtZSwgZGVmYXVsdF92YWwsIGRvYykgXAorICAgIEdURVNUX0FQSV8g
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6SW50MzIgR01PQ0tfRkxBRyhuYW1lKSA9IChkZWZhdWx0X3Zh
bCkKKyNkZWZpbmUgR01PQ0tfREVGSU5FX3N0cmluZ18obmFtZSwgZGVmYXVsdF92YWwsIGRvYykg
XAorICAgIEdURVNUX0FQSV8gOjpzdGQ6OnN0cmluZyBHTU9DS19GTEFHKG5hbWUpID0gKGRlZmF1
bHRfdmFsKQorCisjZW5kaWYgIC8vICFkZWZpbmVkKEdNT0NLX0RFQ0xBUkVfYm9vbF8pCisKKyNl
bmRpZiAgLy8gR01PQ0tfSU5DTFVERV9HTU9DS19JTlRFUk5BTF9HTU9DS19QT1JUX0hfCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xlbW9jay9tYWtlL01ha2VmaWxlIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svbWFrZS9NYWtl
ZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43YzEzZTA1ZmE5NjFkZDNhMzdlZTA1ZGVmMTJkZTA4Y2UwZTg2YTg4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svbWFrZS9NYWtlZmlsZQpAQCAtMCwwICsx
LDEwMSBAQAorIyBBIHNhbXBsZSBNYWtlZmlsZSBmb3IgYnVpbGRpbmcgYm90aCBHb29nbGUgTW9j
ayBhbmQgR29vZ2xlIFRlc3QgYW5kCisjIHVzaW5nIHRoZW0gaW4gdXNlciB0ZXN0cy4gIFRoaXMg
ZmlsZSBpcyBzZWxmLWNvbnRhaW5lZCwgc28geW91IGRvbid0CisjIG5lZWQgdG8gdXNlIHRoZSBN
YWtlZmlsZSBpbiBHb29nbGUgVGVzdCdzIHNvdXJjZSB0cmVlLiAgUGxlYXNlIHR3ZWFrCisjIGl0
IHRvIHN1aXQgeW91ciBlbnZpcm9ubWVudCBhbmQgcHJvamVjdC4gIFlvdSBtYXkgd2FudCB0byBt
b3ZlIGl0IHRvCisjIHlvdXIgcHJvamVjdCdzIHJvb3QgZGlyZWN0b3J5LgorIworIyBTWU5PUFNJ
UzoKKyMKKyMgICBtYWtlIFthbGxdICAtIG1ha2VzIGV2ZXJ5dGhpbmcuCisjICAgbWFrZSBUQVJH
RVQgLSBtYWtlcyB0aGUgZ2l2ZW4gdGFyZ2V0LgorIyAgIG1ha2UgY2xlYW4gIC0gcmVtb3ZlcyBh
bGwgZmlsZXMgZ2VuZXJhdGVkIGJ5IG1ha2UuCisKKyMgUGxlYXNlIHR3ZWFrIHRoZSBmb2xsb3dp
bmcgdmFyaWFibGUgZGVmaW5pdGlvbnMgYXMgbmVlZGVkIGJ5IHlvdXIKKyMgcHJvamVjdCwgZXhj
ZXB0IEdNT0NLX0hFQURFUlMgYW5kIEdURVNUX0hFQURFUlMsIHdoaWNoIHlvdSBjYW4gdXNlCisj
IGluIHlvdXIgb3duIHRhcmdldHMgYnV0IHNob3VsZG4ndCBtb2RpZnkuCisKKyMgUG9pbnRzIHRv
IHRoZSByb290IG9mIEdvb2dsZSBUZXN0LCByZWxhdGl2ZSB0byB3aGVyZSB0aGlzIGZpbGUgaXMu
CisjIFJlbWVtYmVyIHRvIHR3ZWFrIHRoaXMgaWYgeW91IG1vdmUgdGhpcyBmaWxlLCBvciBpZiB5
b3Ugd2FudCB0byB1c2UKKyMgYSBjb3B5IG9mIEdvb2dsZSBUZXN0IGF0IGEgZGlmZmVyZW50IGxv
Y2F0aW9uLgorR1RFU1RfRElSID0gLi4vLi4vZ29vZ2xldGVzdAorCisjIFBvaW50cyB0byB0aGUg
cm9vdCBvZiBHb29nbGUgTW9jaywgcmVsYXRpdmUgdG8gd2hlcmUgdGhpcyBmaWxlIGlzLgorIyBS
ZW1lbWJlciB0byB0d2VhayB0aGlzIGlmIHlvdSBtb3ZlIHRoaXMgZmlsZS4KK0dNT0NLX0RJUiA9
IC4uCisKKyMgV2hlcmUgdG8gZmluZCB1c2VyIGNvZGUuCitVU0VSX0RJUiA9IC4uL3Rlc3QKKwor
IyBGbGFncyBwYXNzZWQgdG8gdGhlIHByZXByb2Nlc3Nvci4KKyMgU2V0IEdvb2dsZSBUZXN0IGFu
ZCBHb29nbGUgTW9jaydzIGhlYWRlciBkaXJlY3RvcmllcyBhcyBzeXN0ZW0KKyMgZGlyZWN0b3Jp
ZXMsIHN1Y2ggdGhhdCB0aGUgY29tcGlsZXIgZG9lc24ndCBnZW5lcmF0ZSB3YXJuaW5ncyBpbgor
IyB0aGVzZSBoZWFkZXJzLgorQ1BQRkxBR1MgKz0gLWlzeXN0ZW0gJChHVEVTVF9ESVIpL2luY2x1
ZGUgLWlzeXN0ZW0gJChHTU9DS19ESVIpL2luY2x1ZGUKKworIyBGbGFncyBwYXNzZWQgdG8gdGhl
IEMrKyBjb21waWxlci4KK0NYWEZMQUdTICs9IC1nIC1XYWxsIC1XZXh0cmEgLXB0aHJlYWQKKwor
IyBBbGwgdGVzdHMgcHJvZHVjZWQgYnkgdGhpcyBNYWtlZmlsZS4gIFJlbWVtYmVyIHRvIGFkZCBu
ZXcgdGVzdHMgeW91CisjIGNyZWF0ZWQgdG8gdGhlIGxpc3QuCitURVNUUyA9IGdtb2NrX3Rlc3QK
KworIyBBbGwgR29vZ2xlIFRlc3QgaGVhZGVycy4gIFVzdWFsbHkgeW91IHNob3VsZG4ndCBjaGFu
Z2UgdGhpcworIyBkZWZpbml0aW9uLgorR1RFU1RfSEVBREVSUyA9ICQoR1RFU1RfRElSKS9pbmNs
dWRlL2d0ZXN0LyouaCBcCisgICAgICAgICAgICAgICAgJChHVEVTVF9ESVIpL2luY2x1ZGUvZ3Rl
c3QvaW50ZXJuYWwvKi5oCisKKyMgQWxsIEdvb2dsZSBNb2NrIGhlYWRlcnMuIE5vdGUgdGhhdCBh
bGwgR29vZ2xlIFRlc3QgaGVhZGVycyBhcmUKKyMgaW5jbHVkZWQgaGVyZSB0b28sIGFzIHRoZXkg
YXJlICNpbmNsdWRlZCBieSBHb29nbGUgTW9jayBoZWFkZXJzLgorIyBVc3VhbGx5IHlvdSBzaG91
bGRuJ3QgY2hhbmdlIHRoaXMgZGVmaW5pdGlvbi4JCitHTU9DS19IRUFERVJTID0gJChHTU9DS19E
SVIpL2luY2x1ZGUvZ21vY2svKi5oIFwKKyAgICAgICAgICAgICAgICAkKEdNT0NLX0RJUikvaW5j
bHVkZS9nbW9jay9pbnRlcm5hbC8qLmggXAorICAgICAgICAgICAgICAgICQoR1RFU1RfSEVBREVS
UykKKworIyBIb3VzZS1rZWVwaW5nIGJ1aWxkIHRhcmdldHMuCisKK2FsbCA6ICQoVEVTVFMpCisK
K2NsZWFuIDoKKwlybSAtZiAkKFRFU1RTKSBnbW9jay5hIGdtb2NrX21haW4uYSAqLm8KKworIyBC
dWlsZHMgZ21vY2suYSBhbmQgZ21vY2tfbWFpbi5hLiAgVGhlc2UgbGlicmFyaWVzIGNvbnRhaW4g
Ym90aAorIyBHb29nbGUgTW9jayBhbmQgR29vZ2xlIFRlc3QuICBBIHRlc3Qgc2hvdWxkIGxpbmsg
d2l0aCBlaXRoZXIgZ21vY2suYQorIyBvciBnbW9ja19tYWluLmEsIGRlcGVuZGluZyBvbiB3aGV0
aGVyIGl0IGRlZmluZXMgaXRzIG93biBtYWluKCkKKyMgZnVuY3Rpb24uICBJdCdzIGZpbmUgaWYg
eW91ciB0ZXN0IG9ubHkgdXNlcyBmZWF0dXJlcyBmcm9tIEdvb2dsZQorIyBUZXN0IChhbmQgbm90
IEdvb2dsZSBNb2NrKS4KKworIyBVc3VhbGx5IHlvdSBzaG91bGRuJ3QgdHdlYWsgc3VjaCBpbnRl
cm5hbCB2YXJpYWJsZXMsIGluZGljYXRlZCBieSBhCisjIHRyYWlsaW5nIF8uCitHVEVTVF9TUkNT
XyA9ICQoR1RFU1RfRElSKS9zcmMvKi5jYyAkKEdURVNUX0RJUikvc3JjLyouaCAkKEdURVNUX0hF
QURFUlMpCitHTU9DS19TUkNTXyA9ICQoR01PQ0tfRElSKS9zcmMvKi5jYyAkKEdNT0NLX0hFQURF
UlMpCisKKyMgRm9yIHNpbXBsaWNpdHkgYW5kIHRvIGF2b2lkIGRlcGVuZGluZyBvbiBpbXBsZW1l
bnRhdGlvbiBkZXRhaWxzIG9mCisjIEdvb2dsZSBNb2NrIGFuZCBHb29nbGUgVGVzdCwgdGhlIGRl
cGVuZGVuY2llcyBzcGVjaWZpZWQgYmVsb3cgYXJlCisjIGNvbnNlcnZhdGl2ZSBhbmQgbm90IG9w
dGltaXplZC4gIFRoaXMgaXMgZmluZSBhcyBHb29nbGUgTW9jayBhbmQKKyMgR29vZ2xlIFRlc3Qg
Y29tcGlsZSBmYXN0IGFuZCBmb3Igb3JkaW5hcnkgdXNlcnMgdGhlaXIgc291cmNlIHJhcmVseQor
IyBjaGFuZ2VzLgorZ3Rlc3QtYWxsLm8gOiAkKEdURVNUX1NSQ1NfKQorCSQoQ1hYKSAkKENQUEZM
QUdTKSAtSSQoR1RFU1RfRElSKSAtSSQoR01PQ0tfRElSKSAkKENYWEZMQUdTKSBcCisgICAgICAg
ICAgICAtYyAkKEdURVNUX0RJUikvc3JjL2d0ZXN0LWFsbC5jYworCitnbW9jay1hbGwubyA6ICQo
R01PQ0tfU1JDU18pCisJJChDWFgpICQoQ1BQRkxBR1MpIC1JJChHVEVTVF9ESVIpIC1JJChHTU9D
S19ESVIpICQoQ1hYRkxBR1MpIFwKKyAgICAgICAgICAgIC1jICQoR01PQ0tfRElSKS9zcmMvZ21v
Y2stYWxsLmNjCisKK2dtb2NrX21haW4ubyA6ICQoR01PQ0tfU1JDU18pCisJJChDWFgpICQoQ1BQ
RkxBR1MpIC1JJChHVEVTVF9ESVIpIC1JJChHTU9DS19ESVIpICQoQ1hYRkxBR1MpIFwKKyAgICAg
ICAgICAgIC1jICQoR01PQ0tfRElSKS9zcmMvZ21vY2tfbWFpbi5jYworCitnbW9jay5hIDogZ21v
Y2stYWxsLm8gZ3Rlc3QtYWxsLm8KKwkkKEFSKSAkKEFSRkxBR1MpICRAICReCisKK2dtb2NrX21h
aW4uYSA6IGdtb2NrLWFsbC5vIGd0ZXN0LWFsbC5vIGdtb2NrX21haW4ubworCSQoQVIpICQoQVJG
TEFHUykgJEAgJF4KKworIyBCdWlsZHMgYSBzYW1wbGUgdGVzdC4KKworZ21vY2tfdGVzdC5vIDog
JChVU0VSX0RJUikvZ21vY2tfdGVzdC5jYyAkKEdNT0NLX0hFQURFUlMpCisJJChDWFgpICQoQ1BQ
RkxBR1MpICQoQ1hYRkxBR1MpIC1jICQoVVNFUl9ESVIpL2dtb2NrX3Rlc3QuY2MKKworZ21vY2tf
dGVzdCA6IGdtb2NrX3Rlc3QubyBnbW9ja19tYWluLmEKKwkkKENYWCkgJChDUFBGTEFHUykgJChD
WFhGTEFHUykgLWxwdGhyZWFkICReIC1vICRACmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9tc3Zj
LzIwMDUvZ21vY2suc2xuIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDA1L2dtb2NrLnNsbgpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wY2Y1N2EzNWFhOGMyNjE1MzEwZjc0OGFjMjMyZWVjZjE4ZWZkMWViCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDA1L2dtb2NrLnNsbgpAQCAtMCwwICsxLDMyIEBA
Civvu78KK01pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJz
aW9uIDkuMDAKKyMgVmlzdWFsIFN0dWRpbyAyMDA1CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0x
MUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImdtb2NrIiwgImdtb2NrLnZjcHJvaiIsICJ7MzQ2
ODFGMEQtQ0U0NS00MTVELUI1RjItNUM2NjJERkUzQkQ1fSIKK0VuZFByb2plY3QKK1Byb2plY3Qo
Ins4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiZ21vY2tfdGVzdCIs
ICJnbW9ja190ZXN0LnZjcHJvaiIsICJ7RjEwRDIyRjgtQUM3Qi00MjEzLTg3MjAtNjA4RTdEODc4
Q0QyfSIKK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEw
QzkxQkM5NDJ9IikgPSAiZ21vY2tfbWFpbiIsICJnbW9ja19tYWluLnZjcHJvaiIsICJ7RTRFRjYx
NEItMzBERi00OTU0LThDNTMtNTgwQTBCRjZCNTg5fSIKK0VuZFByb2plY3QKK0dsb2JhbAorCUds
b2JhbFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHByZVNvbHV0aW9u
CisJCURlYnVnfFdpbjMyID0gRGVidWd8V2luMzIKKwkJUmVsZWFzZXxXaW4zMiA9IFJlbGVhc2V8
V2luMzIKKwlFbmRHbG9iYWxTZWN0aW9uCisJR2xvYmFsU2VjdGlvbihQcm9qZWN0Q29uZmlndXJh
dGlvblBsYXRmb3JtcykgPSBwb3N0U29sdXRpb24KKwkJezM0NjgxRjBELUNFNDUtNDE1RC1CNUYy
LTVDNjYyREZFM0JENX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJezM0
NjgxRjBELUNFNDUtNDE1RC1CNUYyLTVDNjYyREZFM0JENX0uRGVidWd8V2luMzIuQnVpbGQuMCA9
IERlYnVnfFdpbjMyCisJCXszNDY4MUYwRC1DRTQ1LTQxNUQtQjVGMi01QzY2MkRGRTNCRDV9LlJl
bGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7MzQ2ODFGMEQtQ0U0NS00
MTVELUI1RjItNUM2NjJERkUzQkQ1fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdp
bjMyCisJCXtGMTBEMjJGOC1BQzdCLTQyMTMtODcyMC02MDhFN0Q4NzhDRDJ9LkRlYnVnfFdpbjMy
LkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXtGMTBEMjJGOC1BQzdCLTQyMTMtODcyMC02MDhF
N0Q4NzhDRDJ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7RjEwRDIyRjgt
QUM3Qi00MjEzLTg3MjAtNjA4RTdEODc4Q0QyfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJl
bGVhc2V8V2luMzIKKwkJe0YxMEQyMkY4LUFDN0ItNDIxMy04NzIwLTYwOEU3RDg3OENEMn0uUmVs
ZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7RTRFRjYxNEItMzBERi00OTU0
LThDNTMtNTgwQTBCRjZCNTg5fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgor
CQl7RTRFRjYxNEItMzBERi00OTU0LThDNTMtNTgwQTBCRjZCNTg5fS5EZWJ1Z3xXaW4zMi5CdWls
ZC4wID0gRGVidWd8V2luMzIKKwkJe0U0RUY2MTRCLTMwREYtNDk1NC04QzUzLTU4MEEwQkY2QjU4
OX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXtFNEVGNjE0Qi0z
MERGLTQ5NTQtOEM1My01ODBBMEJGNkI1ODl9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVh
c2V8V2luMzIKKwlFbmRHbG9iYWxTZWN0aW9uCisJR2xvYmFsU2VjdGlvbihTb2x1dGlvblByb3Bl
cnRpZXMpID0gcHJlU29sdXRpb24KKwkJSGlkZVNvbHV0aW9uTm9kZSA9IEZBTFNFCisJRW5kR2xv
YmFsU2VjdGlvbgorRW5kR2xvYmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9tc3ZjLzIwMDUv
Z21vY2sudmNwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDA1L2dtb2NrLnZjcHJvagpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iN2RlNThmODdlNjY0MDQ5ODgwMGM2NmJiOTNiMTc1NThiMDAxOWQwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDA1L2dtb2NrLnZjcHJvagpAQCAtMCwwICsxLDE5
MSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Cis8Vmlz
dWFsU3R1ZGlvUHJvamVjdAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249Ijgu
MDAiCisJTmFtZT0iZ21vY2siCisJUHJvamVjdEdVSUQ9InszNDY4MUYwRC1DRTQ1LTQxNUQtQjVG
Mi01QzY2MkRGRTNCRDV9IgorCVJvb3ROYW1lc3BhY2U9Imdtb2NrIgorCUtleXdvcmQ9IldpbjMy
UHJvaiIKKwk+CisJPFBsYXRmb3Jtcz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJXaW4zMiIKKwkJ
Lz4KKwk8L1BsYXRmb3Jtcz4KKwk8VG9vbEZpbGVzPgorCTwvVG9vbEZpbGVzPgorCTxDb25maWd1
cmF0aW9ucz4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJT3V0
cHV0RGlyZWN0b3J5PSIkKFNvbHV0aW9uRGlyKSQoQ29uZmlndXJhdGlvbk5hbWUpIgorCQkJSW50
ZXJtZWRpYXRlRGlyZWN0b3J5PSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkiCisJCQlDb25maWd1
cmF0aW9uVHlwZT0iNCIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXGdtb2NrX2NvbmZp
Zy52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1l
PSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0
b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0
b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5l
cmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+
CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9u
PSIwIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXGluY2x1ZGU7Li5c
Li4iCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19ERUJVRztfTElCIgorCQkJ
CU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKKwkJCQlS
dW50aW1lTGlicmFyeT0iMSIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKKwkJCQlXYXJu
aW5nTGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIgor
CQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1l
PSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5h
bWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJW
Q1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpYnJhcmlh
blRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJ
CQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlO
YW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRv
b2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJ
CS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVh
c2V8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9IiQoU29sdXRpb25EaXIpJChDb25maWd1cmF0
aW9uTmFtZSkiCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiQoT3V0RGlyKVwkKFByb2plY3RO
YW1lKSIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0IgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVl
dHM9Ii5cZ21vY2tfY29uZmlnLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjEiCisJCQlXaG9s
ZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJl
QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxk
VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wi
CisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRv
b2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxU
b29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzPSIuLlwuLlxpbmNsdWRlOy4uXC4uIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRp
b25zPSJXSU4zMjtOREVCVUc7X0xJQiIKKwkJCQlSdW50aW1lTGlicmFyeT0iMCIKKwkJCQlVc2VQ
cmVjb21waWxlZEhlYWRlcj0iMCIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRC
aXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9
IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVy
VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wi
CisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgor
CQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpYnJhcmlhblRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJ
CQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFr
ZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4K
KwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlO
YW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwk8
L0NvbmZpZ3VyYXRpb25zPgorCTxSZWZlcmVuY2VzPgorCTwvUmVmZXJlbmNlcz4KKwk8RmlsZXM+
CisJCTxGaWx0ZXIKKwkJCU5hbWU9IlNvdXJjZSBGaWxlcyIKKwkJCUZpbHRlcj0iY3BwO2M7Y2M7
Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXgiCisJCQlVbmlxdWVJZGVudGlmaWVyPSJ7
NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfSIKKwkJCT4KKwkJCTxGaWxlCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxzcmNcZ21vY2stYWxsLmNjIgorCQkJCT4KKwkJCTwvRmls
ZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKEdUZXN0RGlyKVxzcmNcZ3Rlc3QtYWxs
LmNjIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2lu
MzIiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJ
CQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKEdUZXN0RGlyKSIKKwkJCQkJLz4K
KwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlO
YW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIgorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChHVGVz
dERpcikiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJ
PC9GaWx0ZXI+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IlB1YmxpYyBIZWFkZXIgRmlsZXMiCisJCQlG
aWx0ZXI9Img7aHBwO2h4eDtobTtpbmw7aW5jO3hzZCIKKwkJCVVuaXF1ZUlkZW50aWZpZXI9Ins5
Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9IgorCQkJPgorCQk8L0ZpbHRlcj4K
KwkJPEZpbHRlcgorCQkJTmFtZT0iUHJpdmF0ZSBIZWFkZXIgRmlsZXMiCisJCQk+CisJCTwvRmls
dGVyPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Q
cm9qZWN0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDA1L2dtb2NrX2NvbmZpZy52
c3Byb3BzIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDA1L2dtb2NrX2NvbmZpZy52c3Byb3BzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjliNWZmN2YzOGFiZWIxMjBmYzhmMGVkMjIzMDRkMTJkZGI4ZTEyYzMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9tc3ZjLzIwMDUvZ21vY2tfY29uZmlnLnZzcHJvcHMKQEAg
LTAsMCArMSwxNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUy
Ij8+Cis8VmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysr
IgorCVZlcnNpb249IjguMDAiCisJTmFtZT0iZ21vY2tfY29uZmlnIgorCT4KKwk8VG9vbAorCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIm
cXVvdDskKEdUZXN0RGlyKS9pbmNsdWRlJnF1b3Q7IgorCS8+CisJPFVzZXJNYWNybworCQlOYW1l
PSJHVGVzdERpciIKKwkJVmFsdWU9Ii4uLy4uLy4uL2dvb2dsZXRlc3QiCisJLz4KKzwvVmlzdWFs
U3R1ZGlvUHJvcGVydHlTaGVldD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL21zdmMvMjAwNS9n
bW9ja19tYWluLnZjcHJvaiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL21zdmMvMjAwNS9nbW9ja19tYWluLnZjcHJv
agpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yMmZmOGE2MTU3N2U2MzA0MmJhNGEyMmNjYjk4NmE5YjA2NWVjN2JlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDA1L2dtb2NrX21haW4udmNwcm9q
CkBAIC0wLDAgKzEsMTg3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dz
LTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysi
CisJVmVyc2lvbj0iOC4wMCIKKwlOYW1lPSJnbW9ja19tYWluIgorCVByb2plY3RHVUlEPSJ7RTRF
RjYxNEItMzBERi00OTU0LThDNTMtNTgwQTBCRjZCNTg5fSIKKwlSb290TmFtZXNwYWNlPSJnbW9j
a19tYWluIgorCUtleXdvcmQ9IldpbjMyUHJvaiIKKwk+CisJPFBsYXRmb3Jtcz4KKwkJPFBsYXRm
b3JtCisJCQlOYW1lPSJXaW4zMiIKKwkJLz4KKwk8L1BsYXRmb3Jtcz4KKwk8VG9vbEZpbGVzPgor
CTwvVG9vbEZpbGVzPgorCTxDb25maWd1cmF0aW9ucz4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5h
bWU9IkRlYnVnfFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIkKFNvbHV0aW9uRGlyKSQoQ29u
ZmlndXJhdGlvbk5hbWUpIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIkKE91dERpcilcJChQ
cm9qZWN0TmFtZSkiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iNCIKKwkJCUluaGVyaXRlZFByb3Bl
cnR5U2hlZXRzPSIuXGdtb2NrX2NvbmZpZy52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIxIgor
CQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJ
CTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJ
CQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFt
ZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJ
TmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIwIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXM9Ii4uLy4uL2luY2x1ZGUiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMy
O19ERUJVRztfTElCIgorCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgorCQkJCUJhc2ljUnVudGlt
ZUNoZWNrcz0iMyIKKwkJCQlSdW50aW1lTGlicmFyeT0iMSIKKwkJCQlVc2VQcmVjb21waWxlZEhl
YWRlcj0iMCIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0
eVByb2JsZW1zPSJ0cnVlIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCisJCQkvPgor
CQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+
CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJ
PFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJ
CQlOYW1lPSJWQ0xpYnJhcmlhblRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FM
aW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkv
PgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJ
CQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RC
dWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRp
b24KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9IiQoU29sdXRp
b25EaXIpJChDb25maWd1cmF0aW9uTmFtZSkiCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiQo
T3V0RGlyKVwkKFByb2plY3ROYW1lKSIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0IgorCQkJSW5o
ZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5cZ21vY2tfY29uZmlnLnZzcHJvcHMiCisJCQlDaGFyYWN0
ZXJTZXQ9IjEiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9v
bAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlO
YW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1M
RGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZp
Y2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExU
b29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlB
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi9pbmNsdWRlIgorCQkJCVByZXByb2Nl
c3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0xJQiIKKwkJCQlSdW50aW1lTGlicmFyeT0i
MCIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJ
CQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIgorCQkJCURlYnVnSW5mb3Jt
YXRpb25Gb3JtYXQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNv
dXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VD
b21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRv
b2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpYnJhcmlhblRvb2wiCisJCQkvPgor
CQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5h
bWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VU
b29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJ
PFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmln
dXJhdGlvbj4KKwk8L0NvbmZpZ3VyYXRpb25zPgorCTxSZWZlcmVuY2VzPgorCQk8UHJvamVjdFJl
ZmVyZW5jZQorCQkJUmVmZXJlbmNlZFByb2plY3RJZGVudGlmaWVyPSJ7MzQ2ODFGMEQtQ0U0NS00
MTVELUI1RjItNUM2NjJERkUzQkQ1fSIKKwkJCVJlbGF0aXZlUGF0aFRvUHJvamVjdD0iLlxnbW9j
ay52Y3Byb2oiCisJCS8+CisJPC9SZWZlcmVuY2VzPgorCTxGaWxlcz4KKwkJPEZpbHRlcgorCQkJ
TmFtZT0iU291cmNlIEZpbGVzIgorCQkJRmlsdGVyPSJjcHA7YztjYztjeHg7ZGVmO29kbDtpZGw7
aHBqO2JhdDthc207YXNteCIKKwkJCVVuaXF1ZUlkZW50aWZpZXI9Ins0RkM3MzdGMS1DN0E1LTQz
NzYtQTA2Ni0yQTMyRDc1MkEyRkZ9IgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXC4uXHNyY1xnbW9ja19tYWluLmNjIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
KwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9
IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIu
Li8uLi9pbmNsdWRlIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZp
bGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCT4KKwkJCQkJ
PFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQlBZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzPSIuLi8uLi9pbmNsdWRlIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCQk8RmlsdGVyCisJCQlOYW1lPSJI
ZWFkZXIgRmlsZXMiCisJCQlGaWx0ZXI9Img7aHBwO2h4eDtobTtpbmw7aW5jO3hzZCIKKwkJCVVu
aXF1ZUlkZW50aWZpZXI9Ins5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9Igor
CQkJPgorCQk8L0ZpbHRlcj4KKwk8L0ZpbGVzPgorCTxHbG9iYWxzPgorCTwvR2xvYmFscz4KKzwv
VmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL21zdmMvMjAwNS9n
bW9ja190ZXN0LnZjcHJvaiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL21zdmMvMjAwNS9nbW9ja190ZXN0LnZjcHJv
agpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41MGQ2NzczOTQ0Y2EzZjVmMjczZWY3ZjEyNWFkNjNiYTg0YmFlM2FkCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDA1L2dtb2NrX3Rlc3QudmNwcm9q
CkBAIC0wLDAgKzEsMjAxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dz
LTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysi
CisJVmVyc2lvbj0iOC4wMCIKKwlOYW1lPSJnbW9ja190ZXN0IgorCVByb2plY3RHVUlEPSJ7RjEw
RDIyRjgtQUM3Qi00MjEzLTg3MjAtNjA4RTdEODc4Q0QyfSIKKwlSb290TmFtZXNwYWNlPSJnbW9j
a190ZXN0IgorCUtleXdvcmQ9IldpbjMyUHJvaiIKKwk+CisJPFBsYXRmb3Jtcz4KKwkJPFBsYXRm
b3JtCisJCQlOYW1lPSJXaW4zMiIKKwkJLz4KKwk8L1BsYXRmb3Jtcz4KKwk8VG9vbEZpbGVzPgor
CTwvVG9vbEZpbGVzPgorCTxDb25maWd1cmF0aW9ucz4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5h
bWU9IkRlYnVnfFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIkKFNvbHV0aW9uRGlyKSQoQ29u
ZmlndXJhdGlvbk5hbWUpIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIkKE91dERpcilcJChQ
cm9qZWN0TmFtZSkiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCUluaGVyaXRlZFByb3Bl
cnR5U2hlZXRzPSIuXGdtb2NrX2NvbmZpZy52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIxIgor
CQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJ
CTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJ
CQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFt
ZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJ
TmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9iaWdvYmoiCisJCQkJT3B0aW1pemF0aW9u
PSIwIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXGluY2x1ZGU7Li5c
Li4iCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19ERUJVRztfQ09OU09MRSIK
KwkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCisJ
CQkJUnVudGltZUxpYnJhcnk9IjEiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJ
V2FybmluZ0xldmVsPSIzIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1
ZSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJ
TmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJ
CQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFt
ZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5r
ZXJUb29sIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMiIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3Jt
YXRpb249InRydWUiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiCisJ
CQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAor
CQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNY
RENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJ
CQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAor
CQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0i
VkNXZWJEZXBsb3ltZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1
aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlv
bgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iJChTb2x1dGlv
bkRpcikkKENvbmZpZ3VyYXRpb25OYW1lKSIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJChP
dXREaXIpXCQoUHJvamVjdE5hbWUpIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlJbmhl
cml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxnbW9ja19jb25maWcudnNwcm9wcyIKKwkJCUNoYXJhY3Rl
clNldD0iMSIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29s
CisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5h
bWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxE
YXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2Vydmlj
ZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRv
b2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFk
ZGl0aW9uYWxPcHRpb25zPSIvYmlnb2JqIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXM9Ii4uXC4uXGluY2x1ZGU7Li5cLi4iCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJ
TjMyO05ERUJVRztfQ09OU09MRSIKKwkJCQlSdW50aW1lTGlicmFyeT0iMCIKKwkJCQlVc2VQcmVj
b21waWxlZEhlYWRlcj0iMCIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQ
b3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMi
CisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9v
bCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJ
CQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJ
PFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJTGlua0luY3JlbWVudGFsPSIxIgor
CQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSIKKwkJCQlTdWJTeXN0ZW09IjEiCisJ
CQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIgorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiCisJ
CQkJVGFyZ2V0TWFjaGluZT0iMSIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtU
b29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgor
CQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJ
TmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BU
b29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkv
PgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIgorCQkJLz4KKwkJCTxU
b29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3Vy
YXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8UmVmZXJlbmNlcz4KKwkJPFByb2plY3RSZWZl
cmVuY2UKKwkJCVJlZmVyZW5jZWRQcm9qZWN0SWRlbnRpZmllcj0ie0U0RUY2MTRCLTMwREYtNDk1
NC04QzUzLTU4MEEwQkY2QjU4OX0iCisJCQlSZWxhdGl2ZVBhdGhUb1Byb2plY3Q9Ii5cZ21vY2tf
bWFpbi52Y3Byb2oiCisJCS8+CisJPC9SZWZlcmVuY2VzPgorCTxGaWxlcz4KKwkJPEZpbHRlcgor
CQkJTmFtZT0iU291cmNlIEZpbGVzIgorCQkJRmlsdGVyPSJjcHA7YztjYztjeHg7ZGVmO29kbDtp
ZGw7aHBqO2JhdDthc207YXNteCIKKwkJCVVuaXF1ZUlkZW50aWZpZXI9Ins0RkM3MzdGMS1DN0E1
LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9IgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXC4uXHRlc3RcZ21vY2tfYWxsX3Rlc3QuY2MiCisJCQkJPgorCQkJPC9GaWxlPgorCQk8
L0ZpbHRlcj4KKwkJPEZpbHRlcgorCQkJTmFtZT0iSGVhZGVyIEZpbGVzIgorCQkJRmlsdGVyPSJo
O2hwcDtoeHg7aG07aW5sO2luYzt4c2QiCisJCQlVbmlxdWVJZGVudGlmaWVyPSJ7OTM5OTUzODAt
ODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfSIKKwkJCT4KKwkJPC9GaWx0ZXI+CisJPC9GaWxl
cz4KKwk8R2xvYmFscz4KKwk8L0dsb2JhbHM+Cis8L1Zpc3VhbFN0dWRpb1Byb2plY3Q+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xlbW9jay9tc3ZjLzIwMTAvZ21vY2suc2xuIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2
Yy8yMDEwL2dtb2NrLnNsbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYzM1NmUxNDUyOTI0NDhjOGExMzJjZmZjYzM2
MTgzOTgxNWNlZTUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDEwL2dt
b2NrLnNsbgpAQCAtMCwwICsxLDMyIEBACivvu78KK01pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNv
bHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDExLjAwCisjIFZpc3VhbCBDKysgRXhwcmVzcyAy
MDEwCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0g
Imdtb2NrIiwgImdtb2NrLnZjeHByb2oiLCAiezM0NjgxRjBELUNFNDUtNDE1RC1CNUYyLTVDNjYy
REZFM0JENX0iCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEt
MDBBMEM5MUJDOTQyfSIpID0gImdtb2NrX3Rlc3QiLCAiZ21vY2tfdGVzdC52Y3hwcm9qIiwgIntG
MTBEMjJGOC1BQzdCLTQyMTMtODcyMC02MDhFN0Q4NzhDRDJ9IgorRW5kUHJvamVjdAorUHJvamVj
dCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJnbW9ja19tYWlu
IiwgImdtb2NrX21haW4udmN4cHJvaiIsICJ7RTRFRjYxNEItMzBERi00OTU0LThDNTMtNTgwQTBC
RjZCNTg5fSIKK0VuZFByb2plY3QKK0dsb2JhbAorCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Db25m
aWd1cmF0aW9uUGxhdGZvcm1zKSA9IHByZVNvbHV0aW9uCisJCURlYnVnfFdpbjMyID0gRGVidWd8
V2luMzIKKwkJUmVsZWFzZXxXaW4zMiA9IFJlbGVhc2V8V2luMzIKKwlFbmRHbG9iYWxTZWN0aW9u
CisJR2xvYmFsU2VjdGlvbihQcm9qZWN0Q29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwb3N0U29s
dXRpb24KKwkJezM0NjgxRjBELUNFNDUtNDE1RC1CNUYyLTVDNjYyREZFM0JENX0uRGVidWd8V2lu
MzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJezM0NjgxRjBELUNFNDUtNDE1RC1CNUYyLTVD
NjYyREZFM0JENX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXszNDY4MUYw
RC1DRTQ1LTQxNUQtQjVGMi01QzY2MkRGRTNCRDV9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0g
UmVsZWFzZXxXaW4zMgorCQl7MzQ2ODFGMEQtQ0U0NS00MTVELUI1RjItNUM2NjJERkUzQkQ1fS5S
ZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXtGMTBEMjJGOC1BQzdCLTQy
MTMtODcyMC02MDhFN0Q4NzhDRDJ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMy
CisJCXtGMTBEMjJGOC1BQzdCLTQyMTMtODcyMC02MDhFN0Q4NzhDRDJ9LkRlYnVnfFdpbjMyLkJ1
aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7RjEwRDIyRjgtQUM3Qi00MjEzLTg3MjAtNjA4RTdEODc4
Q0QyfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0YxMEQyMkY4
LUFDN0ItNDIxMy04NzIwLTYwOEU3RDg3OENEMn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVs
ZWFzZXxXaW4zMgorCQl7RTRFRjYxNEItMzBERi00OTU0LThDNTMtNTgwQTBCRjZCNTg5fS5EZWJ1
Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7RTRFRjYxNEItMzBERi00OTU0LThD
NTMtNTgwQTBCRjZCNTg5fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJe0U0
RUY2MTRCLTMwREYtNDk1NC04QzUzLTU4MEEwQkY2QjU4OX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVD
ZmcgPSBSZWxlYXNlfFdpbjMyCisJCXtFNEVGNjE0Qi0zMERGLTQ5NTQtOEM1My01ODBBMEJGNkI1
ODl9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwlFbmRHbG9iYWxTZWN0
aW9uCisJR2xvYmFsU2VjdGlvbihTb2x1dGlvblByb3BlcnRpZXMpID0gcHJlU29sdXRpb24KKwkJ
SGlkZVNvbHV0aW9uTm9kZSA9IEZBTFNFCisJRW5kR2xvYmFsU2VjdGlvbgorRW5kR2xvYmFsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9tc3ZjLzIwMTAvZ21vY2sudmN4cHJvaiBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVt
b2NrL21zdmMvMjAxMC9nbW9jay52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIxYTg1ZWY2YzdkNmE3OWZh
MDIyYTFkNTYzMDE0YzE4NjE0YTJkZDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9t
c3ZjLzIwMTAvZ21vY2sudmN4cHJvagpAQCAtMCwwICsxLDgyIEBACis8P3htbCB2ZXJzaW9uPSIx
LjAiIGVuY29kaW5nPSJ1dGYtOCI/Pg0KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIg
VG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2Rl
dmVsb3Blci9tc2J1aWxkLzIwMDMiPg0KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZp
Z3VyYXRpb25zIj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdp
bjMyIj4NCisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4NCisgICAg
ICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9u
Pg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+DQor
ICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxh
dGZvcm0+V2luMzI8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAg
PC9JdGVtR3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+DQorICAgIDxQ
cm9qZWN0R3VpZD57MzQ2ODFGMEQtQ0U0NS00MTVELUI1RjItNUM2NjJERkUzQkQ1fTwvUHJvamVj
dEd1aWQ+DQorICAgIDxSb290TmFtZXNwYWNlPmdtb2NrPC9Sb290TmFtZXNwYWNlPg0KKyAgICA8
S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8SW1w
b3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3Bz
IiAvPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8
Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+DQorICAg
IDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgICA8V2hvbGVQcm9ncmFt
T3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4NCisgIDwvUHJvcGVy
dHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAg
IDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4NCisg
ICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3Jv
dXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5w
cm9wcyIgLz4NCisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPg0KKyAg
PC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMi
Pg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQ
bGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1p
Y3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRh
UGxhdGZvcm0iIC8+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iZ21vY2tfY29uZmlnLnByb3BzIiAv
Pg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hl
ZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3Bw
LiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGly
KVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBw
RGF0YVBsYXRmb3JtIiAvPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9Imdtb2NrX2NvbmZpZy5wcm9w
cyIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1h
Y3JvcyIgLz4NCisgIDxQcm9wZXJ0eUdyb3VwPg0KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4x
MC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+DQorICAgIDxPdXREaXIgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoU29sdXRp
b25EaXIpJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChPdXREaXIp
JChQcm9qZWN0TmFtZSlcPC9JbnREaXI+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChTb2x1dGlvbkRpcikk
KENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoT3V0RGlyKSQoUHJv
amVjdE5hbWUpXDwvSW50RGlyPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0
aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3xXaW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJs
ZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4u
LlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25z
PldJTjMyO19ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNz
b3JEZWZpbml0aW9ucz4NCisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVp
bGQ+DQorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1
bnRpbWVDaGVja3M+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Zzwv
UnVudGltZUxpYnJhcnk+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJl
Y29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZl
bD4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVn
SW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgPC9JdGVtRGVmaW5pdGlv
bkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+DQorICAgIDxDbENvbXBpbGU+DQor
ICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjsl
KEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X0xJQjsl
KFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAg
ICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAg
IDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAg
IDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPERlYnVnSW5mb3Jt
YXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAg
ICA8L0NsQ29tcGlsZT4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtR3JvdXA+
DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXGdtb2NrLWFsbC5jYyIgLz4NCisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKEdUZXN0RGlyKVxzcmNcZ3Rlc3QtYWxsLmNjIj4NCisg
ICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChHVGVzdERpcik7JShBZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisg
ICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKEdUZXN0RGlyKTslKEFkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0K
KyAgICA8L0NsQ29tcGlsZT4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIk
KFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4NCisgIDxJbXBvcnRHcm91
cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+DQorICA8L0ltcG9ydEdyb3VwPg0KKzwvUHJvamVj
dD4NCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9tc3ZjLzIwMTAvZ21vY2tfY29uZmlnLnByb3Bz
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDEwL2dtb2NrX2NvbmZpZy5wcm9wcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
NDFmMzFjZmU2OWFkOGNhNDczMjgzYzY5NmQzOTI2MDk1YTU0OGNhCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDEwL2dtb2NrX2NvbmZpZy5wcm9wcwpAQCAtMCwwICsxLDE5
IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pg0KKzxQcm9qZWN0IERl
ZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2No
ZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPg0KKyAgPFByb3BlcnR5
R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiPg0KKyAgICA8R1Rlc3REaXI+Li4vLi4vLi4vZ29vZ2xl
dGVzdDwvR1Rlc3REaXI+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cD4N
CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJz
aW9uPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+DQorICAg
IDxDbENvbXBpbGU+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChHVGVz
dERpcikvaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgIDwvSXRlbURlZmluaXRp
b25Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9IkdUZXN0
RGlyIj4NCisgICAgICA8VmFsdWU+JChHVGVzdERpcik8L1ZhbHVlPg0KKyAgICA8L0J1aWxkTWFj
cm8+DQorICA8L0l0ZW1Hcm91cD4NCis8L1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1v
Y2svbXN2Yy8yMDEwL2dtb2NrX21haW4udmN4cHJvaiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL21zdmMvMjAxMC9n
bW9ja19tYWluLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjdmZWNkNWY4YjcxM2FiZWI5ZDdkYjE3YjFh
ZTI5YTM0NGM1OGY4NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL21zdmMvMjAxMC9n
bW9ja19tYWluLnZjeHByb2oKQEAgLTAsMCArMSw4OCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBl
bmNvZGluZz0idXRmLTgiPz4NCis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xz
VmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9w
ZXIvbXNidWlsZC8yMDAzIj4NCisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0
aW9ucyI+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+
DQorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBs
YXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisg
ICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPg0KKyAgICAg
IDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3Jt
PldpbjMyPC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgIDwvSXRl
bUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPg0KKyAgICA8UHJvamVj
dEd1aWQ+e0U0RUY2MTRCLTMwREYtNDk1NC04QzUzLTU4MEEwQkY2QjU4OX08L1Byb2plY3RHdWlk
Pg0KKyAgICA8Um9vdE5hbWVzcGFjZT5nbW9ja19tYWluPC9Sb290TmFtZXNwYWNlPg0KKyAgICA8
S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8SW1w
b3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3Bz
IiAvPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8
Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+DQorICAg
IDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgICA8V2hvbGVQcm9ncmFt
T3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4NCisgIDwvUHJvcGVy
dHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAg
IDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4NCisg
ICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3Jv
dXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5w
cm9wcyIgLz4NCisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPg0KKyAg
PC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMi
Pg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQ
bGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1p
Y3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRh
UGxhdGZvcm0iIC8+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iZ21vY2tfY29uZmlnLnByb3BzIiAv
Pg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hl
ZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3Bw
LiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGly
KVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBw
RGF0YVBsYXRmb3JtIiAvPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9Imdtb2NrX2NvbmZpZy5wcm9w
cyIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1h
Y3JvcyIgLz4NCisgIDxQcm9wZXJ0eUdyb3VwPg0KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4x
MC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+DQorICAgIDxPdXREaXIgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoU29sdXRp
b25EaXIpJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChPdXREaXIp
JChQcm9qZWN0TmFtZSlcPC9JbnREaXI+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChTb2x1dGlvbkRpcikk
KENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoT3V0RGlyKSQoUHJv
amVjdE5hbWUpXDwvSW50RGlyPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0
aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3xXaW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJs
ZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4u
Li8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMy
O19ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZp
bml0aW9ucz4NCisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+DQor
ICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVD
aGVja3M+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1ZzwvUnVudGlt
ZUxpYnJhcnk+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGls
ZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCisg
ICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3Jt
YXRpb25Gb3JtYXQ+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3Vw
Pg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAg
PEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAg
IDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X0xJQjslKFByZXByb2Nlc3Nv
ckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPFJ1bnRpbWVM
aWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxQcmVjb21waWxl
ZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2
ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+
UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICA8L0NsQ29tcGls
ZT4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxQcm9q
ZWN0UmVmZXJlbmNlIEluY2x1ZGU9Imdtb2NrLnZjeHByb2oiPg0KKyAgICAgIDxQcm9qZWN0Pnsz
NDY4MWYwZC1jZTQ1LTQxNWQtYjVmMi01YzY2MmRmZTNiZDV9PC9Qcm9qZWN0Pg0KKyAgICAgIDxD
b3B5TG9jYWxTYXRlbGxpdGVBc3NlbWJsaWVzPnRydWU8L0NvcHlMb2NhbFNhdGVsbGl0ZUFzc2Vt
YmxpZXM+DQorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PnRydWU8L1JlZmVyZW5jZU91
dHB1dEFzc2VtYmx5Pg0KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+DQorICA8L0l0ZW1Hcm91cD4N
CisgIDxJdGVtR3JvdXA+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXGdtb2Nr
X21haW4uY2MiPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4uLi8uLi9p
bmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXM+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Li4v
Li4vaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgIDwvSXRlbUdyb3VwPg0KKyAg
PEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIg
Lz4NCisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+DQorICA8L0ltcG9y
dEdyb3VwPg0KKzwvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9tc3ZjLzIwMTAv
Z21vY2tfdGVzdC52Y3hwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDEwL2dtb2NrX3Rlc3QudmN4
cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yNjU0MzllYzJiNzFlYjA4MzBjODYyZDM5N2MyNGRlMzJhMGM1MDU3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDEwL2dtb2NrX3Rlc3QudmN4
cHJvagpAQCAtMCwwICsxLDEwMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRm
LTgiPz4NCis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4w
IiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8y
MDAzIj4NCisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+DQorICAg
IDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+DQorICAgICAgPENv
bmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPldpbjMy
PC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RD
b25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPg0KKyAgICAgIDxDb25maWd1cmF0
aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0
Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgIDwvSXRlbUdyb3VwPg0KKyAg
PFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPg0KKyAgICA8UHJvamVjdEd1aWQ+e0YxMEQy
MkY4LUFDN0ItNDIxMy04NzIwLTYwOEU3RDg3OENEMn08L1Byb2plY3RHdWlkPg0KKyAgICA8Um9v
dE5hbWVzcGFjZT5nbW9ja190ZXN0PC9Sb290TmFtZXNwYWNlPg0KKyAgICA8S2V5d29yZD5XaW4z
MlByb2o8L0tleXdvcmQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9
IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPg0KKyAgPFBy
b3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlv
blR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0
PlVuaWNvZGU8L0NoYXJhY3RlclNldD4NCisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50
cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8
UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlv
blR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0
PlVuaWNvZGU8L0NoYXJhY3RlclNldD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxJbXBvcnQg
UHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPg0KKyAgPElt
cG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+DQorICA8L0ltcG9ydEdyb3VwPg0K
KyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQg
UHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnBy
b3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBs
YXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisg
ICAgPEltcG9ydCBQcm9qZWN0PSJnbW9ja19jb25maWcucHJvcHMiIC8+DQorICA8L0ltcG9ydEdy
b3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1w
b3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNl
ci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAu
JChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+
DQorICAgIDxJbXBvcnQgUHJvamVjdD0iZ21vY2tfY29uZmlnLnByb3BzIiAvPg0KKyAgPC9JbXBv
cnRHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPg0KKyAgPFBy
b3BlcnR5R3JvdXA+DQorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1By
b2plY3RGaWxlVmVyc2lvbj4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKENvbmZpZ3Vy
YXRpb24pXDwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKE91dERpcikkKFByb2plY3ROYW1lKVw8
L0ludERpcj4NCisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvTGlua0luY3JlbWVudGFsPg0K
KyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZXxXaW4zMiciPiQoU29sdXRpb25EaXIpJChDb25maWd1cmF0aW9uKVw8L091dERpcj4N
CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8V2luMzInIj4kKE91dERpcikkKFByb2plY3ROYW1lKVw8L0ludERpcj4NCisgICAg
PExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPg0KKyAgPC9Qcm9wZXJ0
eUdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAg
ICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vYmlnb2JqICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRp
dGlvbmFsT3B0aW9ucz4NCisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRp
b24+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsu
LlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfREVCVUc7
X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRp
b25zPg0KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4NCisgICAg
ICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNr
cz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnPC9SdW50aW1lTGli
cmFyeT4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhl
YWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPg0KKyAgICAg
IDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlv
bkZvcm1hdD4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxHZW5lcmF0
ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPg0KKyAgICAg
IDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPg0KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1h
Y2hpbmVYODY8L1RhcmdldE1hY2hpbmU+DQorICAgIDwvTGluaz4NCisgIDwvSXRlbURlZmluaXRp
b25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0K
KyAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vYmlnb2JqICUoQWRkaXRpb25hbE9wdGlvbnMpPC9B
ZGRpdGlvbmFsT3B0aW9ucz4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4u
LlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25z
PldJTjMyO05ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJv
Y2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8
L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1By
ZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2
ZWw+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1
Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAg
ICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRp
b24+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPE9wdGlt
aXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+DQorICAgICAgPEVuYWJsZUNP
TURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCisgICAgICA8VGFyZ2V0TWFj
aGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPg0KKyAgICA8L0xpbms+DQorICA8L0l0ZW1E
ZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJ
bmNsdWRlPSJnbW9ja19tYWluLnZjeHByb2oiPg0KKyAgICAgIDxQcm9qZWN0PntlNGVmNjE0Yi0z
MGRmLTQ5NTQtOGM1My01ODBhMGJmNmI1ODl9PC9Qcm9qZWN0Pg0KKyAgICAgIDxDb3B5TG9jYWxT
YXRlbGxpdGVBc3NlbWJsaWVzPnRydWU8L0NvcHlMb2NhbFNhdGVsbGl0ZUFzc2VtYmxpZXM+DQor
ICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PnRydWU8L1JlZmVyZW5jZU91dHB1dEFzc2Vt
Ymx5Pg0KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVt
R3JvdXA+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cdGVzdFxnbW9ja19hbGxfdGVz
dC5jYyIgLz4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0
c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4NCisgIDxJbXBvcnRHcm91cCBMYWJlbD0i
RXh0ZW5zaW9uVGFyZ2V0cyI+DQorICA8L0ltcG9ydEdyb3VwPg0KKzwvUHJvamVjdD4NCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xlbW9jay9tc3ZjLzIwMTUvZ21vY2suc2xuIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2
Yy8yMDE1L2dtb2NrLnNsbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNTllMDdmY2I3OWQ3MjY0ZjQwZDBmYmI1OGE1
Mzg1ZjVhN2Y3MmMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDE1L2dt
b2NrLnNsbgpAQCAtMCwwICsxLDMyIEBACivvu78KK01pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNv
bHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDEyLjAwCisjIFZpc3VhbCBTdHVkaW8gMTQKK1By
b2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiZ21vY2si
LCAiZ21vY2sudmN4cHJvaiIsICJ7MzQ2ODFGMEQtQ0U0NS00MTVELUI1RjItNUM2NjJERkUzQkQ1
fSIKK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkx
QkM5NDJ9IikgPSAiZ21vY2tfdGVzdCIsICJnbW9ja190ZXN0LnZjeHByb2oiLCAie0YxMEQyMkY4
LUFDN0ItNDIxMy04NzIwLTYwOEU3RDg3OENEMn0iCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJD
OUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImdtb2NrX21haW4iLCAiZ21v
Y2tfbWFpbi52Y3hwcm9qIiwgIntFNEVGNjE0Qi0zMERGLTQ5NTQtOEM1My01ODBBMEJGNkI1ODl9
IgorRW5kUHJvamVjdAorR2xvYmFsCisJR2xvYmFsU2VjdGlvbihTb2x1dGlvbkNvbmZpZ3VyYXRp
b25QbGF0Zm9ybXMpID0gcHJlU29sdXRpb24KKwkJRGVidWd8V2luMzIgPSBEZWJ1Z3xXaW4zMgor
CQlSZWxlYXNlfFdpbjMyID0gUmVsZWFzZXxXaW4zMgorCUVuZEdsb2JhbFNlY3Rpb24KKwlHbG9i
YWxTZWN0aW9uKFByb2plY3RDb25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHBvc3RTb2x1dGlvbgor
CQl7MzQ2ODFGMEQtQ0U0NS00MTVELUI1RjItNUM2NjJERkUzQkQ1fS5EZWJ1Z3xXaW4zMi5BY3Rp
dmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7MzQ2ODFGMEQtQ0U0NS00MTVELUI1RjItNUM2NjJERkUz
QkQ1fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezM0NjgxRjBELUNFNDUt
NDE1RC1CNUYyLTVDNjYyREZFM0JENX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNl
fFdpbjMyCisJCXszNDY4MUYwRC1DRTQ1LTQxNUQtQjVGMi01QzY2MkRGRTNCRDV9LlJlbGVhc2V8
V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0YxMEQyMkY4LUFDN0ItNDIxMy04NzIw
LTYwOEU3RDg3OENEMn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJe0Yx
MEQyMkY4LUFDN0ItNDIxMy04NzIwLTYwOEU3RDg3OENEMn0uRGVidWd8V2luMzIuQnVpbGQuMCA9
IERlYnVnfFdpbjMyCisJCXtGMTBEMjJGOC1BQzdCLTQyMTMtODcyMC02MDhFN0Q4NzhDRDJ9LlJl
bGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7RjEwRDIyRjgtQUM3Qi00
MjEzLTg3MjAtNjA4RTdEODc4Q0QyfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdp
bjMyCisJCXtFNEVGNjE0Qi0zMERGLTQ5NTQtOEM1My01ODBBMEJGNkI1ODl9LkRlYnVnfFdpbjMy
LkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXtFNEVGNjE0Qi0zMERGLTQ5NTQtOEM1My01ODBB
MEJGNkI1ODl9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7RTRFRjYxNEIt
MzBERi00OTU0LThDNTMtNTgwQTBCRjZCNTg5fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJl
bGVhc2V8V2luMzIKKwkJe0U0RUY2MTRCLTMwREYtNDk1NC04QzUzLTU4MEEwQkY2QjU4OX0uUmVs
ZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCUVuZEdsb2JhbFNlY3Rpb24KKwlH
bG9iYWxTZWN0aW9uKFNvbHV0aW9uUHJvcGVydGllcykgPSBwcmVTb2x1dGlvbgorCQlIaWRlU29s
dXRpb25Ob2RlID0gRkFMU0UKKwlFbmRHbG9iYWxTZWN0aW9uCitFbmRHbG9iYWwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGVtb2NrL21zdmMvMjAxNS9nbW9jay52Y3hwcm9qIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2
Yy8yMDE1L2dtb2NrLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDVkZGQwOTEwMGRlZWU3OTY4YjIwYzhj
YzFjZmYwNGEyNDAyZjc0YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL21zdmMvMjAx
NS9nbW9jay52Y3hwcm9qCkBAIC0wLDAgKzEsODQgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIg
ZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xz
VmVyc2lvbj0iMTQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxv
cGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0
aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4K
KyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRm
b3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQ
cm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25m
aWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8
L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgor
ICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPnszNDY4
MUYwRC1DRTQ1LTQxNUQtQjVGMi01QzY2MkRGRTNCRDV9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9v
dE5hbWVzcGFjZT5nbW9jazwvUm9vdE5hbWVzcGFjZT4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8
L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFy
Z2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3Jv
dXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdp
bjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0
aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8
L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xl
UHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3Jt
VG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNv
bmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25m
aWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4K
KyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0
eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNw
cC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+Cisg
IDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMi
PgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBs
YXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWlj
cm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQ
bGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Imdtb2NrX2NvbmZpZy5wcm9wcyIgLz4K
KyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMi
PgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBs
YXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWlj
cm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQ
bGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Imdtb2NrX2NvbmZpZy5wcm9wcyIgLz4K
KyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+
CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTku
MTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKFNvbHV0aW9uRGlyKSQoQ29u
ZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChPdXREaXIpJChQcm9qZWN0TmFt
ZSlcPC9JbnREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKFNvbHV0aW9uRGlyKSQoQ29uZmlndXJhdGlv
bilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE91dERpcikkKFByb2plY3ROYW1lKVw8L0lu
dERpcj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAg
PENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4K
KyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47
JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfREVCVUc7X0xJQjsl
KFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAg
ICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50
aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxS
dW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAg
PFByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxX
YXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlv
bkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgPC9D
bENvbXBpbGU+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3Jv
dXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdp
bjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwv
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0
aW9ucz5XSU4zMjtOREVCVUc7X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJv
Y2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwv
UnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8L1ByZWNv
bXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4K
KyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZv
cm1hdGlvbkZvcm1hdD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3Vw
PgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXGdtb2Nr
LWFsbC5jYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoR1Rlc3REaXIpXHNyY1xndGVz
dC1hbGwuY2MiPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoR1Rlc3RE
aXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKEdUZXN0
RGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQ
cm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPElt
cG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwv
UHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
bW9jay9tc3ZjLzIwMTUvZ21vY2tfY29uZmlnLnByb3BzIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDE1
L2dtb2NrX2NvbmZpZy5wcm9wcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43N2JjOTViMTkyZDk1MzYwMThkNjdkNDI2
ZmJhMDY4NmIzZDQ1YTFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDE1
L2dtb2NrX2NvbmZpZy5wcm9wcwpAQCAtMCwwICsxLDE5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAi
IGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29s
c1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxv
cGVyL21zYnVpbGQvMjAwMyI+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIj4K
KyAgICA8R1Rlc3REaXI+Li4vLi4vLi4vZ29vZ2xldGVzdDwvR1Rlc3REaXI+CisgIDwvUHJvcGVy
dHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAu
MC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJ
dGVtRGVmaW5pdGlvbkdyb3VwPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcz4kKEdUZXN0RGlyKS9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBp
bGU+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8QnVpbGRN
YWNybyBJbmNsdWRlPSJHVGVzdERpciI+CisgICAgICA8VmFsdWU+JChHVGVzdERpcik8L1ZhbHVl
PgorICAgIDwvQnVpbGRNYWNybz4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2ds
ZXRlc3QvZ29vZ2xlbW9jay9tc3ZjLzIwMTUvZ21vY2tfbWFpbi52Y3hwcm9qIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1v
Y2svbXN2Yy8yMDE1L2dtb2NrX21haW4udmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NmNjNjhiOWEzOTEy
YmIzNGJiNjdmZGI0NGY5MjMxNDEzNzA4OWNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1v
Y2svbXN2Yy8yMDE1L2dtb2NrX21haW4udmN4cHJvagpAQCAtMCwwICsxLDkwIEBACivvu788P3ht
bCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdl
dHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjE0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNy
b3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQ
cm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRl
PSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlv
bj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmln
dXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4z
MiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAg
PFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgor
ICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQ
cm9qZWN0R3VpZD57RTRFRjYxNEItMzBERi00OTU0LThDNTMtNTgwQTBCRjZCNTg5fTwvUHJvamVj
dEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+Z21vY2tfbWFpbjwvUm9vdE5hbWVzcGFjZT4KKyAg
ICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPElt
cG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9w
cyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxD
b25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8
Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0
aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgICA8UGxhdGZvcm1U
b29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJv
cGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlw
ZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0PlVu
aWNvZGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3Jt
VG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJn
ZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJF
eHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBM
YWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERp
cilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0
cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJyki
IExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Imdt
b2NrX2NvbmZpZy5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBM
YWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERp
cilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0
cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJyki
IExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Imdt
b2NrX2NvbmZpZy5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAg
TGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZp
bGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8T3V0RGly
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzIn
Ij4kKFNvbHV0aW9uRGlyKSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+
JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPE91dERpciBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKFNvbHV0
aW9uRGlyKSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE91dERp
cikkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURl
ZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlz
YWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
Pi4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4z
MjtfREVCVUc7X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+Cisg
ICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNo
ZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1bnRpbWVM
aWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPC9QcmVjb21waWxlZEhl
YWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8
RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25G
b3JtYXQ+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0
ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPi4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNz
b3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25z
KTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlU
aHJlYWRlZDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+CisgICAg
ICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5p
bmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwv
RGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtRGVmaW5p
dGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9
Imdtb2NrLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+ezM0NjgxZjBkLWNlNDUtNDE1ZC1iNWYy
LTVjNjYyZGZlM2JkNX08L1Byb2plY3Q+CisgICAgICA8Q29weUxvY2FsU2F0ZWxsaXRlQXNzZW1i
bGllcz50cnVlPC9Db3B5TG9jYWxTYXRlbGxpdGVBc3NlbWJsaWVzPgorICAgICAgPFJlZmVyZW5j
ZU91dHB1dEFzc2VtYmx5PnRydWU8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJv
amVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNcZ21vY2tfbWFpbi5jYyI+CisgICAgICA8QWRkaXRpb25h
bEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfFdpbjMyJyI+Li4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Li4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21w
aWxlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgp
XE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNp
b25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9tc3ZjLzIwMTUvZ21vY2tfdGVz
dC52Y3hwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDE1L2dtb2NrX3Rlc3QudmN4cHJvagpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43NmVhNTUzNGFkMTliNjQ5MDkwZTQzZDAxMGQxZjlkNWUxYmVkNzVkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDE1L2dtb2NrX3Rlc3QudmN4cHJvagpAQCAt
MCwwICsxLDEwMyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4K
KzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSIxNC4wIiB4bWxu
cz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4K
KyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVj
dENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRp
b24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3Jt
PgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9u
IEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwv
Q29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Q
cm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExh
YmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+e0YxMEQyMkY4LUFDN0ItNDIxMy04NzIw
LTYwOEU3RDg3OENEMn08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPmdtb2NrX3Rl
c3Q8L1Jvb3ROYW1lc3BhY2U+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8
L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNy
b3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJD
b25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZp
Z3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0Pgor
ICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0
aW9uPgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1By
b3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Cisg
ICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAg
ICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29s
c2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0
IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPElt
cG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+Cisg
IDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJv
amVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3Bz
IiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRm
b3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8
SW1wb3J0IFByb2plY3Q9Imdtb2NrX2NvbmZpZy5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4K
KyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJv
amVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3Bz
IiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRm
b3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8
SW1wb3J0IFByb2plY3Q9Imdtb2NrX2NvbmZpZy5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4K
KyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3Vw
PgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVy
c2lvbj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWd8V2luMzInIj4kKFNvbHV0aW9uRGlyKSQoQ29uZmlndXJhdGlvbilcPC9PdXRE
aXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfFdpbjMyJyI+JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAg
PExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxPdXREaXIgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+
JChTb2x1dGlvbkRpcikkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+
JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPExpbmtJbmNyZW1lbnRhbCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzIn
Ij5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVm
aW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWd8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxPcHRpb25z
Pi9iaWdvYmogJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgorICAgICAg
PE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjskKEdUZXN0RGlyKTslKEFkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgor
ICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19ERUJVRztfQ09OU09MRTslKFBy
ZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8
TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1l
Q2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50
aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFBy
ZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJu
aW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZv
cm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgPC9DbENv
bXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8
L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3Vi
U3lzdGVtPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4K
KyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9u
R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
fFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vYmln
b2JqICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KKyAgICAgIDxBZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAg
IDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRp
bWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBp
bGVkSGVhZGVyPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2
ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Q
cm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgPC9DbENvbXBpbGU+
CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVy
YXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVt
PgorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+Cisg
ICAgICA8RW5hYmxlQ09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPgorICAg
ICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+
CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJl
ZmVyZW5jZSBJbmNsdWRlPSJnbW9ja19tYWluLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2U0
ZWY2MTRiLTMwZGYtNDk1NC04YzUzLTU4MGEwYmY2YjU4OX08L1Byb2plY3Q+CisgICAgICA8Q29w
eUxvY2FsU2F0ZWxsaXRlQXNzZW1ibGllcz50cnVlPC9Db3B5TG9jYWxTYXRlbGxpdGVBc3NlbWJs
aWVzPgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PnRydWU8L1JlZmVyZW5jZU91dHB1
dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJ
dGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlx0ZXN0XGdtb2NrX2FsbF90
ZXN0LmNjIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0
c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJF
eHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zY3JpcHRzL2Z1c2Vf
Z21vY2tfZmlsZXMucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zY3JpcHRzL2Z1c2VfZ21vY2tfZmlsZXMucHkK
bmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uY2I3ZmRmMmY3ODM5YmRjZDUxZjU1MjNlYzY0ODkyMGIwNjA5Y2JmMwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NjcmlwdHMvZnVzZV9nbW9ja19maWxlcy5weQpA
QCAtMCwwICsxLDI0MCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAy
MDA5LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisj
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
IyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworIiIiZnVzZV9nbW9ja19maWxlcy5weSB2MC4xLjAKK0Z1c2VzIEdvb2dsZSBNb2NrIGFu
ZCBHb29nbGUgVGVzdCBzb3VyY2UgY29kZSBpbnRvIHR3byAuaCBmaWxlcyBhbmQgYSAuY2MgZmls
ZS4KKworU1lOT1BTSVMKKyAgICAgICBmdXNlX2dtb2NrX2ZpbGVzLnB5IFtHTU9DS19ST09UX0RJ
Ul0gT1VUUFVUX0RJUgorCisgICAgICAgU2NhbnMgR01PQ0tfUk9PVF9ESVIgZm9yIEdvb2dsZSBN
b2NrIGFuZCBHb29nbGUgVGVzdCBzb3VyY2UKKyAgICAgICBjb2RlLCBhc3N1bWluZyBHb29nbGUg
VGVzdCBpcyBpbiB0aGUgR01PQ0tfUk9PVF9ESVIvLi4vZ29vZ2xldGVzdAorICAgICAgIGRpcmVj
dG9yeSwgYW5kIGdlbmVyYXRlcyB0aHJlZSBmaWxlczoKKyAgICAgICBPVVRQVVRfRElSL2d0ZXN0
L2d0ZXN0LmgsIE9VVFBVVF9ESVIvZ21vY2svZ21vY2suaCwgYW5kCisgICAgICAgT1VUUFVUX0RJ
Ui9nbW9jay1ndGVzdC1hbGwuY2MuICBUaGVuIHlvdSBjYW4gYnVpbGQgeW91ciB0ZXN0cworICAg
ICAgIGJ5IGFkZGluZyBPVVRQVVRfRElSIHRvIHRoZSBpbmNsdWRlIHNlYXJjaCBwYXRoIGFuZCBs
aW5raW5nCisgICAgICAgd2l0aCBPVVRQVVRfRElSL2dtb2NrLWd0ZXN0LWFsbC5jYy4gIFRoZXNl
IHRocmVlIGZpbGVzIGNvbnRhaW4KKyAgICAgICBldmVyeXRoaW5nIHlvdSBuZWVkIHRvIHVzZSBH
b29nbGUgTW9jay4gIEhlbmNlIHlvdSBjYW4KKyAgICAgICAiaW5zdGFsbCIgR29vZ2xlIE1vY2sg
YnkgY29weWluZyB0aGVtIHRvIHdoZXJldmVyIHlvdSB3YW50LgorCisgICAgICAgR01PQ0tfUk9P
VF9ESVIgY2FuIGJlIG9taXR0ZWQgYW5kIGRlZmF1bHRzIHRvIHRoZSBwYXJlbnQKKyAgICAgICBk
aXJlY3Rvcnkgb2YgdGhlIGRpcmVjdG9yeSBob2xkaW5nIHRoaXMgc2NyaXB0LgorCitFWEFNUExF
UworICAgICAgIC4vZnVzZV9nbW9ja19maWxlcy5weSBmdXNlZF9nbW9jaworICAgICAgIC4vZnVz
ZV9nbW9ja19maWxlcy5weSBwYXRoL3RvL3VucGFja2VkL2dtb2NrIGZ1c2VkX2dtb2NrCisKK1Ro
aXMgdG9vbCBpcyBleHBlcmltZW50YWwuICBJbiBwYXJ0aWN1bGFyLCBpdCBhc3N1bWVzIHRoYXQg
dGhlcmUgaXMgbm8KK2NvbmRpdGlvbmFsIGluY2x1c2lvbiBvZiBHb29nbGUgTW9jayBvciBHb29n
bGUgVGVzdCBoZWFkZXJzLiAgUGxlYXNlCityZXBvcnQgYW55IHByb2JsZW1zIHRvIGdvb2dsZW1v
Y2tAZ29vZ2xlZ3JvdXBzLmNvbS4gIFlvdSBjYW4gcmVhZAoraHR0cDovL2NvZGUuZ29vZ2xlLmNv
bS9wL2dvb2dsZW1vY2svd2lraS9Db29rQm9vayBmb3IgbW9yZQoraW5mb3JtYXRpb24uCisiIiIK
KworX19hdXRob3JfXyA9ICd3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKScKKworaW1wb3J0
IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzZXRzCitpbXBvcnQgc3lzCisKKyMgV2UgYXNzdW1lIHRo
YXQgdGhpcyBmaWxlIGlzIGluIHRoZSBzY3JpcHRzLyBkaXJlY3RvcnkgaW4gdGhlIEdvb2dsZQor
IyBNb2NrIHJvb3QgZGlyZWN0b3J5LgorREVGQVVMVF9HTU9DS19ST09UX0RJUiA9IG9zLnBhdGgu
am9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAnLi4nKQorCisjIFdlIG5lZWQgdG8gY2Fs
bCBpbnRvIGdvb2dsZXRlc3Qvc2NyaXB0cy9mdXNlX2d0ZXN0X2ZpbGVzLnB5Lgorc3lzLnBhdGgu
YXBwZW5kKG9zLnBhdGguam9pbihERUZBVUxUX0dNT0NLX1JPT1RfRElSLCAnLi4vZ29vZ2xldGVz
dC9zY3JpcHRzJykpCitpbXBvcnQgZnVzZV9ndGVzdF9maWxlcworZ3Rlc3QgPSBmdXNlX2d0ZXN0
X2ZpbGVzCisKKyMgUmVnZXggZm9yIG1hdGNoaW5nICcjaW5jbHVkZSAiZ21vY2svLi4uIicuCitJ
TkNMVURFX0dNT0NLX0ZJTEVfUkVHRVggPSByZS5jb21waWxlKHInXlxzKiNccyppbmNsdWRlXHMq
IihnbW9jay8uKykiJykKKworIyBXaGVyZSB0byBmaW5kIHRoZSBzb3VyY2Ugc2VlZCBmaWxlcy4K
K0dNT0NLX0hfU0VFRCA9ICdpbmNsdWRlL2dtb2NrL2dtb2NrLmgnCitHTU9DS19BTExfQ0NfU0VF
RCA9ICdzcmMvZ21vY2stYWxsLmNjJworCisjIFdoZXJlIHRvIHB1dCB0aGUgZ2VuZXJhdGVkIGZp
bGVzLgorR1RFU1RfSF9PVVRQVVQgPSAnZ3Rlc3QvZ3Rlc3QuaCcKK0dNT0NLX0hfT1VUUFVUID0g
J2dtb2NrL2dtb2NrLmgnCitHTU9DS19HVEVTVF9BTExfQ0NfT1VUUFVUID0gJ2dtb2NrLWd0ZXN0
LWFsbC5jYycKKworCitkZWYgR2V0R1Rlc3RSb290RGlyKGdtb2NrX3Jvb3QpOgorICAiIiJSZXR1
cm5zIHRoZSByb290IGRpcmVjdG9yeSBvZiBHb29nbGUgVGVzdC4iIiIKKworICByZXR1cm4gb3Mu
cGF0aC5qb2luKGdtb2NrX3Jvb3QsICcuLi9nb29nbGV0ZXN0JykKKworCitkZWYgVmFsaWRhdGVH
TW9ja1Jvb3REaXIoZ21vY2tfcm9vdCk6CisgICIiIk1ha2VzIHN1cmUgZ21vY2tfcm9vdCBwb2lu
dHMgdG8gYSB2YWxpZCBnbW9jayByb290IGRpcmVjdG9yeS4KKworICBUaGUgZnVuY3Rpb24gYWJv
cnRzIHRoZSBwcm9ncmFtIG9uIGZhaWx1cmUuCisgICIiIgorCisgIGd0ZXN0LlZhbGlkYXRlR1Rl
c3RSb290RGlyKEdldEdUZXN0Um9vdERpcihnbW9ja19yb290KSkKKyAgZ3Rlc3QuVmVyaWZ5Rmls
ZUV4aXN0cyhnbW9ja19yb290LCBHTU9DS19IX1NFRUQpCisgIGd0ZXN0LlZlcmlmeUZpbGVFeGlz
dHMoZ21vY2tfcm9vdCwgR01PQ0tfQUxMX0NDX1NFRUQpCisKKworZGVmIFZhbGlkYXRlT3V0cHV0
RGlyKG91dHB1dF9kaXIpOgorICAiIiJNYWtlcyBzdXJlIG91dHB1dF9kaXIgcG9pbnRzIHRvIGEg
dmFsaWQgb3V0cHV0IGRpcmVjdG9yeS4KKworICBUaGUgZnVuY3Rpb24gYWJvcnRzIHRoZSBwcm9n
cmFtIG9uIGZhaWx1cmUuCisgICIiIgorCisgIGd0ZXN0LlZlcmlmeU91dHB1dEZpbGUob3V0cHV0
X2RpciwgZ3Rlc3QuR1RFU1RfSF9PVVRQVVQpCisgIGd0ZXN0LlZlcmlmeU91dHB1dEZpbGUob3V0
cHV0X2RpciwgR01PQ0tfSF9PVVRQVVQpCisgIGd0ZXN0LlZlcmlmeU91dHB1dEZpbGUob3V0cHV0
X2RpciwgR01PQ0tfR1RFU1RfQUxMX0NDX09VVFBVVCkKKworCitkZWYgRnVzZUdNb2NrSChnbW9j
a19yb290LCBvdXRwdXRfZGlyKToKKyAgIiIiU2NhbnMgZm9sZGVyIGdtb2NrX3Jvb3QgdG8gZ2Vu
ZXJhdGUgZ21vY2svZ21vY2suaCBpbiBvdXRwdXRfZGlyLiIiIgorCisgIG91dHB1dF9maWxlID0g
ZmlsZShvcy5wYXRoLmpvaW4ob3V0cHV0X2RpciwgR01PQ0tfSF9PVVRQVVQpLCAndycpCisgIHBy
b2Nlc3NlZF9maWxlcyA9IHNldHMuU2V0KCkgICMgSG9sZHMgYWxsIGdtb2NrIGhlYWRlcnMgd2Un
dmUgcHJvY2Vzc2VkLgorCisgIGRlZiBQcm9jZXNzRmlsZShnbW9ja19oZWFkZXJfcGF0aCk6Cisg
ICAgIiIiUHJvY2Vzc2VzIHRoZSBnaXZlbiBnbW9jayBoZWFkZXIgZmlsZS4iIiIKKworICAgICMg
V2UgZG9uJ3QgcHJvY2VzcyB0aGUgc2FtZSBoZWFkZXIgdHdpY2UuCisgICAgaWYgZ21vY2tfaGVh
ZGVyX3BhdGggaW4gcHJvY2Vzc2VkX2ZpbGVzOgorICAgICAgcmV0dXJuCisKKyAgICBwcm9jZXNz
ZWRfZmlsZXMuYWRkKGdtb2NrX2hlYWRlcl9wYXRoKQorCisgICAgIyBSZWFkcyBlYWNoIGxpbmUg
aW4gdGhlIGdpdmVuIGdtb2NrIGhlYWRlci4KKyAgICBmb3IgbGluZSBpbiBmaWxlKG9zLnBhdGgu
am9pbihnbW9ja19yb290LCBnbW9ja19oZWFkZXJfcGF0aCksICdyJyk6CisgICAgICBtID0gSU5D
TFVERV9HTU9DS19GSUxFX1JFR0VYLm1hdGNoKGxpbmUpCisgICAgICBpZiBtOgorICAgICAgICAj
IEl0J3MgJyNpbmNsdWRlICJnbW9jay8uLi4iJyAtIGxldCdzIHByb2Nlc3MgaXQgcmVjdXJzaXZl
bHkuCisgICAgICAgIFByb2Nlc3NGaWxlKCdpbmNsdWRlLycgKyBtLmdyb3VwKDEpKQorICAgICAg
ZWxzZToKKyAgICAgICAgbSA9IGd0ZXN0LklOQ0xVREVfR1RFU1RfRklMRV9SRUdFWC5tYXRjaChs
aW5lKQorICAgICAgICBpZiBtOgorICAgICAgICAgICMgSXQncyAnI2luY2x1ZGUgImd0ZXN0L2Zv
by5oIicuICBXZSB0cmFuc2xhdGUgaXQgdG8KKyAgICAgICAgICAjICJndGVzdC9ndGVzdC5oIiwg
cmVnYXJkbGVzcyBvZiB3aGF0IGZvbyBpcywgc2luY2UgYWxsCisgICAgICAgICAgIyBndGVzdCBo
ZWFkZXJzIGFyZSBmdXNlZCBpbnRvIGd0ZXN0L2d0ZXN0LmguCisKKyAgICAgICAgICAjIFRoZXJl
IGlzIG5vIG5lZWQgdG8gI2luY2x1ZGUgZ3Rlc3QuaCB0d2ljZS4KKyAgICAgICAgICBpZiBub3Qg
Z3Rlc3QuR1RFU1RfSF9TRUVEIGluIHByb2Nlc3NlZF9maWxlczoKKyAgICAgICAgICAgIHByb2Nl
c3NlZF9maWxlcy5hZGQoZ3Rlc3QuR1RFU1RfSF9TRUVEKQorICAgICAgICAgICAgb3V0cHV0X2Zp
bGUud3JpdGUoJyNpbmNsdWRlICIlcyJcbicgJSAoZ3Rlc3QuR1RFU1RfSF9PVVRQVVQsKSkKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAjIE90aGVyd2lzZSB3ZSBjb3B5IHRoZSBsaW5lIHVuY2hh
bmdlZCB0byB0aGUgb3V0cHV0IGZpbGUuCisgICAgICAgICAgb3V0cHV0X2ZpbGUud3JpdGUobGlu
ZSkKKworICBQcm9jZXNzRmlsZShHTU9DS19IX1NFRUQpCisgIG91dHB1dF9maWxlLmNsb3NlKCkK
KworCitkZWYgRnVzZUdNb2NrQWxsQ2NUb0ZpbGUoZ21vY2tfcm9vdCwgb3V0cHV0X2ZpbGUpOgor
ICAiIiJTY2FucyBmb2xkZXIgZ21vY2tfcm9vdCB0byBmdXNlIGdtb2NrLWFsbC5jYyBpbnRvIG91
dHB1dF9maWxlLiIiIgorCisgIHByb2Nlc3NlZF9maWxlcyA9IHNldHMuU2V0KCkKKworICBkZWYg
UHJvY2Vzc0ZpbGUoZ21vY2tfc291cmNlX2ZpbGUpOgorICAgICIiIlByb2Nlc3NlcyB0aGUgZ2l2
ZW4gZ21vY2sgc291cmNlIGZpbGUuIiIiCisKKyAgICAjIFdlIGRvbid0IHByb2Nlc3MgdGhlIHNh
bWUgI2luY2x1ZGVkIGZpbGUgdHdpY2UuCisgICAgaWYgZ21vY2tfc291cmNlX2ZpbGUgaW4gcHJv
Y2Vzc2VkX2ZpbGVzOgorICAgICAgcmV0dXJuCisKKyAgICBwcm9jZXNzZWRfZmlsZXMuYWRkKGdt
b2NrX3NvdXJjZV9maWxlKQorCisgICAgIyBSZWFkcyBlYWNoIGxpbmUgaW4gdGhlIGdpdmVuIGdt
b2NrIHNvdXJjZSBmaWxlLgorICAgIGZvciBsaW5lIGluIGZpbGUob3MucGF0aC5qb2luKGdtb2Nr
X3Jvb3QsIGdtb2NrX3NvdXJjZV9maWxlKSwgJ3InKToKKyAgICAgIG0gPSBJTkNMVURFX0dNT0NL
X0ZJTEVfUkVHRVgubWF0Y2gobGluZSkKKyAgICAgIGlmIG06CisgICAgICAgICMgSXQncyAnI2lu
Y2x1ZGUgImdtb2NrL2Zvby5oIicuICBXZSB0cmVhdCBpdCBhcyAnI2luY2x1ZGUKKyAgICAgICAg
IyAiZ21vY2svZ21vY2suaCInLCBhcyBhbGwgb3RoZXIgZ21vY2sgaGVhZGVycyBhcmUgYmVpbmcg
ZnVzZWQKKyAgICAgICAgIyBpbnRvIGdtb2NrLmggYW5kIGNhbm5vdCBiZSAjaW5jbHVkZWQgZGly
ZWN0bHkuCisKKyAgICAgICAgIyBUaGVyZSBpcyBubyBuZWVkIHRvICNpbmNsdWRlICJnbW9jay9n
bW9jay5oIiBtb3JlIHRoYW4gb25jZS4KKyAgICAgICAgaWYgbm90IEdNT0NLX0hfU0VFRCBpbiBw
cm9jZXNzZWRfZmlsZXM6CisgICAgICAgICAgcHJvY2Vzc2VkX2ZpbGVzLmFkZChHTU9DS19IX1NF
RUQpCisgICAgICAgICAgb3V0cHV0X2ZpbGUud3JpdGUoJyNpbmNsdWRlICIlcyJcbicgJSAoR01P
Q0tfSF9PVVRQVVQsKSkKKyAgICAgIGVsc2U6CisgICAgICAgIG0gPSBndGVzdC5JTkNMVURFX0dU
RVNUX0ZJTEVfUkVHRVgubWF0Y2gobGluZSkKKyAgICAgICAgaWYgbToKKyAgICAgICAgICAjIEl0
J3MgJyNpbmNsdWRlICJndGVzdC8uLi4iJy4KKyAgICAgICAgICAjIFRoZXJlIGlzIG5vIG5lZWQg
dG8gI2luY2x1ZGUgZ3Rlc3QuaCBhcyBpdCBoYXMgYmVlbgorICAgICAgICAgICMgI2luY2x1ZGVk
IGJ5IGd0ZXN0LWFsbC5jYy4KKyAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgbSA9IGd0ZXN0LklOQ0xVREVfU1JDX0ZJTEVfUkVHRVgubWF0Y2gobGluZSkKKyAgICAgICAg
ICBpZiBtOgorICAgICAgICAgICAgIyBJdCdzICcjaW5jbHVkZSAic3JjL2ZvbyInIC0gbGV0J3Mg
cHJvY2VzcyBpdCByZWN1cnNpdmVseS4KKyAgICAgICAgICAgIFByb2Nlc3NGaWxlKG0uZ3JvdXAo
MSkpCisgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgT3RoZXJ3aXNlIHdlIGNvcHkgdGhl
IGxpbmUgdW5jaGFuZ2VkIHRvIHRoZSBvdXRwdXQgZmlsZS4KKyAgICAgICAgICAgIG91dHB1dF9m
aWxlLndyaXRlKGxpbmUpCisKKyAgUHJvY2Vzc0ZpbGUoR01PQ0tfQUxMX0NDX1NFRUQpCisKKwor
ZGVmIEZ1c2VHTW9ja0dUZXN0QWxsQ2MoZ21vY2tfcm9vdCwgb3V0cHV0X2Rpcik6CisgICIiIlNj
YW5zIGZvbGRlciBnbW9ja19yb290IHRvIGdlbmVyYXRlIGdtb2NrLWd0ZXN0LWFsbC5jYyBpbiBv
dXRwdXRfZGlyLiIiIgorCisgIG91dHB1dF9maWxlID0gZmlsZShvcy5wYXRoLmpvaW4ob3V0cHV0
X2RpciwgR01PQ0tfR1RFU1RfQUxMX0NDX09VVFBVVCksICd3JykKKyAgIyBGaXJzdCwgZnVzZSBn
dGVzdC1hbGwuY2MgaW50byBnbW9jay1ndGVzdC1hbGwuY2MuCisgIGd0ZXN0LkZ1c2VHVGVzdEFs
bENjVG9GaWxlKEdldEdUZXN0Um9vdERpcihnbW9ja19yb290KSwgb3V0cHV0X2ZpbGUpCisgICMg
TmV4dCwgYXBwZW5kIGZ1c2VkIGdtb2NrLWFsbC5jYyB0byBnbW9jay1ndGVzdC1hbGwuY2MuCisg
IEZ1c2VHTW9ja0FsbENjVG9GaWxlKGdtb2NrX3Jvb3QsIG91dHB1dF9maWxlKQorICBvdXRwdXRf
ZmlsZS5jbG9zZSgpCisKKworZGVmIEZ1c2VHTW9jayhnbW9ja19yb290LCBvdXRwdXRfZGlyKToK
KyAgIiIiRnVzZXMgZ3Rlc3QuaCwgZ21vY2suaCwgYW5kIGdtb2NrLWd0ZXN0LWFsbC5oLiIiIgor
CisgIFZhbGlkYXRlR01vY2tSb290RGlyKGdtb2NrX3Jvb3QpCisgIFZhbGlkYXRlT3V0cHV0RGly
KG91dHB1dF9kaXIpCisKKyAgZ3Rlc3QuRnVzZUdUZXN0SChHZXRHVGVzdFJvb3REaXIoZ21vY2tf
cm9vdCksIG91dHB1dF9kaXIpCisgIEZ1c2VHTW9ja0goZ21vY2tfcm9vdCwgb3V0cHV0X2RpcikK
KyAgRnVzZUdNb2NrR1Rlc3RBbGxDYyhnbW9ja19yb290LCBvdXRwdXRfZGlyKQorCisKK2RlZiBt
YWluKCk6CisgIGFyZ2MgPSBsZW4oc3lzLmFyZ3YpCisgIGlmIGFyZ2MgPT0gMjoKKyAgICAjIGZ1
c2VfZ21vY2tfZmlsZXMucHkgT1VUUFVUX0RJUgorICAgIEZ1c2VHTW9jayhERUZBVUxUX0dNT0NL
X1JPT1RfRElSLCBzeXMuYXJndlsxXSkKKyAgZWxpZiBhcmdjID09IDM6CisgICAgIyBmdXNlX2dt
b2NrX2ZpbGVzLnB5IEdNT0NLX1JPT1RfRElSIE9VVFBVVF9ESVIKKyAgICBGdXNlR01vY2soc3lz
LmFyZ3ZbMV0sIHN5cy5hcmd2WzJdKQorICBlbHNlOgorICAgIHByaW50IF9fZG9jX18KKyAgICBz
eXMuZXhpdCgxKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIG1haW4oKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZW1vY2svc2NyaXB0cy9nZW5lcmF0b3IvTElDRU5TRSBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVt
b2NrL3NjcmlwdHMvZ2VuZXJhdG9yL0xJQ0VOU0UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODdlYTA2MzY1MTBhMThh
MDZlNDkwMTE3ZTcxN2ViMWZkZjU3NWYxOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2Nr
L3NjcmlwdHMvZ2VuZXJhdG9yL0xJQ0VOU0UKQEAgLTAsMCArMSwyMDMgQEAKKworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQXBhY2hlIExpY2Vuc2UKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZlcnNpb24gMi4wLCBKYW51YXJ5IDIwMDQKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy8KKworICAgVEVSTVMgQU5EIENPTkRJ
VElPTlMgRk9SIFVTRSwgUkVQUk9EVUNUSU9OLCBBTkQgRElTVFJJQlVUSU9OCisKKyAgIDEuIERl
ZmluaXRpb25zLgorCisgICAgICAiTGljZW5zZSIgc2hhbGwgbWVhbiB0aGUgdGVybXMgYW5kIGNv
bmRpdGlvbnMgZm9yIHVzZSwgcmVwcm9kdWN0aW9uLAorICAgICAgYW5kIGRpc3RyaWJ1dGlvbiBh
cyBkZWZpbmVkIGJ5IFNlY3Rpb25zIDEgdGhyb3VnaCA5IG9mIHRoaXMgZG9jdW1lbnQuCisKKyAg
ICAgICJMaWNlbnNvciIgc2hhbGwgbWVhbiB0aGUgY29weXJpZ2h0IG93bmVyIG9yIGVudGl0eSBh
dXRob3JpemVkIGJ5CisgICAgICB0aGUgY29weXJpZ2h0IG93bmVyIHRoYXQgaXMgZ3JhbnRpbmcg
dGhlIExpY2Vuc2UuCisKKyAgICAgICJMZWdhbCBFbnRpdHkiIHNoYWxsIG1lYW4gdGhlIHVuaW9u
IG9mIHRoZSBhY3RpbmcgZW50aXR5IGFuZCBhbGwKKyAgICAgIG90aGVyIGVudGl0aWVzIHRoYXQg
Y29udHJvbCwgYXJlIGNvbnRyb2xsZWQgYnksIG9yIGFyZSB1bmRlciBjb21tb24KKyAgICAgIGNv
bnRyb2wgd2l0aCB0aGF0IGVudGl0eS4gRm9yIHRoZSBwdXJwb3NlcyBvZiB0aGlzIGRlZmluaXRp
b24sCisgICAgICAiY29udHJvbCIgbWVhbnMgKGkpIHRoZSBwb3dlciwgZGlyZWN0IG9yIGluZGly
ZWN0LCB0byBjYXVzZSB0aGUKKyAgICAgIGRpcmVjdGlvbiBvciBtYW5hZ2VtZW50IG9mIHN1Y2gg
ZW50aXR5LCB3aGV0aGVyIGJ5IGNvbnRyYWN0IG9yCisgICAgICBvdGhlcndpc2UsIG9yIChpaSkg
b3duZXJzaGlwIG9mIGZpZnR5IHBlcmNlbnQgKDUwJSkgb3IgbW9yZSBvZiB0aGUKKyAgICAgIG91
dHN0YW5kaW5nIHNoYXJlcywgb3IgKGlpaSkgYmVuZWZpY2lhbCBvd25lcnNoaXAgb2Ygc3VjaCBl
bnRpdHkuCisKKyAgICAgICJZb3UiIChvciAiWW91ciIpIHNoYWxsIG1lYW4gYW4gaW5kaXZpZHVh
bCBvciBMZWdhbCBFbnRpdHkKKyAgICAgIGV4ZXJjaXNpbmcgcGVybWlzc2lvbnMgZ3JhbnRlZCBi
eSB0aGlzIExpY2Vuc2UuCisKKyAgICAgICJTb3VyY2UiIGZvcm0gc2hhbGwgbWVhbiB0aGUgcHJl
ZmVycmVkIGZvcm0gZm9yIG1ha2luZyBtb2RpZmljYXRpb25zLAorICAgICAgaW5jbHVkaW5nIGJ1
dCBub3QgbGltaXRlZCB0byBzb2Z0d2FyZSBzb3VyY2UgY29kZSwgZG9jdW1lbnRhdGlvbgorICAg
ICAgc291cmNlLCBhbmQgY29uZmlndXJhdGlvbiBmaWxlcy4KKworICAgICAgIk9iamVjdCIgZm9y
bSBzaGFsbCBtZWFuIGFueSBmb3JtIHJlc3VsdGluZyBmcm9tIG1lY2hhbmljYWwKKyAgICAgIHRy
YW5zZm9ybWF0aW9uIG9yIHRyYW5zbGF0aW9uIG9mIGEgU291cmNlIGZvcm0sIGluY2x1ZGluZyBi
dXQKKyAgICAgIG5vdCBsaW1pdGVkIHRvIGNvbXBpbGVkIG9iamVjdCBjb2RlLCBnZW5lcmF0ZWQg
ZG9jdW1lbnRhdGlvbiwKKyAgICAgIGFuZCBjb252ZXJzaW9ucyB0byBvdGhlciBtZWRpYSB0eXBl
cy4KKworICAgICAgIldvcmsiIHNoYWxsIG1lYW4gdGhlIHdvcmsgb2YgYXV0aG9yc2hpcCwgd2hl
dGhlciBpbiBTb3VyY2Ugb3IKKyAgICAgIE9iamVjdCBmb3JtLCBtYWRlIGF2YWlsYWJsZSB1bmRl
ciB0aGUgTGljZW5zZSwgYXMgaW5kaWNhdGVkIGJ5IGEKKyAgICAgIGNvcHlyaWdodCBub3RpY2Ug
dGhhdCBpcyBpbmNsdWRlZCBpbiBvciBhdHRhY2hlZCB0byB0aGUgd29yaworICAgICAgKGFuIGV4
YW1wbGUgaXMgcHJvdmlkZWQgaW4gdGhlIEFwcGVuZGl4IGJlbG93KS4KKworICAgICAgIkRlcml2
YXRpdmUgV29ya3MiIHNoYWxsIG1lYW4gYW55IHdvcmssIHdoZXRoZXIgaW4gU291cmNlIG9yIE9i
amVjdAorICAgICAgZm9ybSwgdGhhdCBpcyBiYXNlZCBvbiAob3IgZGVyaXZlZCBmcm9tKSB0aGUg
V29yayBhbmQgZm9yIHdoaWNoIHRoZQorICAgICAgZWRpdG9yaWFsIHJldmlzaW9ucywgYW5ub3Rh
dGlvbnMsIGVsYWJvcmF0aW9ucywgb3Igb3RoZXIgbW9kaWZpY2F0aW9ucworICAgICAgcmVwcmVz
ZW50LCBhcyBhIHdob2xlLCBhbiBvcmlnaW5hbCB3b3JrIG9mIGF1dGhvcnNoaXAuIEZvciB0aGUg
cHVycG9zZXMKKyAgICAgIG9mIHRoaXMgTGljZW5zZSwgRGVyaXZhdGl2ZSBXb3JrcyBzaGFsbCBu
b3QgaW5jbHVkZSB3b3JrcyB0aGF0IHJlbWFpbgorICAgICAgc2VwYXJhYmxlIGZyb20sIG9yIG1l
cmVseSBsaW5rIChvciBiaW5kIGJ5IG5hbWUpIHRvIHRoZSBpbnRlcmZhY2VzIG9mLAorICAgICAg
dGhlIFdvcmsgYW5kIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZi4KKworICAgICAgIkNvbnRyaWJ1
dGlvbiIgc2hhbGwgbWVhbiBhbnkgd29yayBvZiBhdXRob3JzaGlwLCBpbmNsdWRpbmcKKyAgICAg
IHRoZSBvcmlnaW5hbCB2ZXJzaW9uIG9mIHRoZSBXb3JrIGFuZCBhbnkgbW9kaWZpY2F0aW9ucyBv
ciBhZGRpdGlvbnMKKyAgICAgIHRvIHRoYXQgV29yayBvciBEZXJpdmF0aXZlIFdvcmtzIHRoZXJl
b2YsIHRoYXQgaXMgaW50ZW50aW9uYWxseQorICAgICAgc3VibWl0dGVkIHRvIExpY2Vuc29yIGZv
ciBpbmNsdXNpb24gaW4gdGhlIFdvcmsgYnkgdGhlIGNvcHlyaWdodCBvd25lcgorICAgICAgb3Ig
YnkgYW4gaW5kaXZpZHVhbCBvciBMZWdhbCBFbnRpdHkgYXV0aG9yaXplZCB0byBzdWJtaXQgb24g
YmVoYWxmIG9mCisgICAgICB0aGUgY29weXJpZ2h0IG93bmVyLiBGb3IgdGhlIHB1cnBvc2VzIG9m
IHRoaXMgZGVmaW5pdGlvbiwgInN1Ym1pdHRlZCIKKyAgICAgIG1lYW5zIGFueSBmb3JtIG9mIGVs
ZWN0cm9uaWMsIHZlcmJhbCwgb3Igd3JpdHRlbiBjb21tdW5pY2F0aW9uIHNlbnQKKyAgICAgIHRv
IHRoZSBMaWNlbnNvciBvciBpdHMgcmVwcmVzZW50YXRpdmVzLCBpbmNsdWRpbmcgYnV0IG5vdCBs
aW1pdGVkIHRvCisgICAgICBjb21tdW5pY2F0aW9uIG9uIGVsZWN0cm9uaWMgbWFpbGluZyBsaXN0
cywgc291cmNlIGNvZGUgY29udHJvbCBzeXN0ZW1zLAorICAgICAgYW5kIGlzc3VlIHRyYWNraW5n
IHN5c3RlbXMgdGhhdCBhcmUgbWFuYWdlZCBieSwgb3Igb24gYmVoYWxmIG9mLCB0aGUKKyAgICAg
IExpY2Vuc29yIGZvciB0aGUgcHVycG9zZSBvZiBkaXNjdXNzaW5nIGFuZCBpbXByb3ZpbmcgdGhl
IFdvcmssIGJ1dAorICAgICAgZXhjbHVkaW5nIGNvbW11bmljYXRpb24gdGhhdCBpcyBjb25zcGlj
dW91c2x5IG1hcmtlZCBvciBvdGhlcndpc2UKKyAgICAgIGRlc2lnbmF0ZWQgaW4gd3JpdGluZyBi
eSB0aGUgY29weXJpZ2h0IG93bmVyIGFzICJOb3QgYSBDb250cmlidXRpb24uIgorCisgICAgICAi
Q29udHJpYnV0b3IiIHNoYWxsIG1lYW4gTGljZW5zb3IgYW5kIGFueSBpbmRpdmlkdWFsIG9yIExl
Z2FsIEVudGl0eQorICAgICAgb24gYmVoYWxmIG9mIHdob20gYSBDb250cmlidXRpb24gaGFzIGJl
ZW4gcmVjZWl2ZWQgYnkgTGljZW5zb3IgYW5kCisgICAgICBzdWJzZXF1ZW50bHkgaW5jb3Jwb3Jh
dGVkIHdpdGhpbiB0aGUgV29yay4KKworICAgMi4gR3JhbnQgb2YgQ29weXJpZ2h0IExpY2Vuc2Uu
IFN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mCisgICAgICB0aGlzIExpY2Vu
c2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCisg
ICAgICB3b3JsZHdpZGUsIG5vbi1leGNsdXNpdmUsIG5vLWNoYXJnZSwgcm95YWx0eS1mcmVlLCBp
cnJldm9jYWJsZQorICAgICAgY29weXJpZ2h0IGxpY2Vuc2UgdG8gcmVwcm9kdWNlLCBwcmVwYXJl
IERlcml2YXRpdmUgV29ya3Mgb2YsCisgICAgICBwdWJsaWNseSBkaXNwbGF5LCBwdWJsaWNseSBw
ZXJmb3JtLCBzdWJsaWNlbnNlLCBhbmQgZGlzdHJpYnV0ZSB0aGUKKyAgICAgIFdvcmsgYW5kIHN1
Y2ggRGVyaXZhdGl2ZSBXb3JrcyBpbiBTb3VyY2Ugb3IgT2JqZWN0IGZvcm0uCisKKyAgIDMuIEdy
YW50IG9mIFBhdGVudCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9u
cyBvZgorICAgICAgdGhpcyBMaWNlbnNlLCBlYWNoIENvbnRyaWJ1dG9yIGhlcmVieSBncmFudHMg
dG8gWW91IGEgcGVycGV0dWFsLAorICAgICAgd29ybGR3aWRlLCBub24tZXhjbHVzaXZlLCBuby1j
aGFyZ2UsIHJveWFsdHktZnJlZSwgaXJyZXZvY2FibGUKKyAgICAgIChleGNlcHQgYXMgc3RhdGVk
IGluIHRoaXMgc2VjdGlvbikgcGF0ZW50IGxpY2Vuc2UgdG8gbWFrZSwgaGF2ZSBtYWRlLAorICAg
ICAgdXNlLCBvZmZlciB0byBzZWxsLCBzZWxsLCBpbXBvcnQsIGFuZCBvdGhlcndpc2UgdHJhbnNm
ZXIgdGhlIFdvcmssCisgICAgICB3aGVyZSBzdWNoIGxpY2Vuc2UgYXBwbGllcyBvbmx5IHRvIHRo
b3NlIHBhdGVudCBjbGFpbXMgbGljZW5zYWJsZQorICAgICAgYnkgc3VjaCBDb250cmlidXRvciB0
aGF0IGFyZSBuZWNlc3NhcmlseSBpbmZyaW5nZWQgYnkgdGhlaXIKKyAgICAgIENvbnRyaWJ1dGlv
bihzKSBhbG9uZSBvciBieSBjb21iaW5hdGlvbiBvZiB0aGVpciBDb250cmlidXRpb24ocykKKyAg
ICAgIHdpdGggdGhlIFdvcmsgdG8gd2hpY2ggc3VjaCBDb250cmlidXRpb24ocykgd2FzIHN1Ym1p
dHRlZC4gSWYgWW91CisgICAgICBpbnN0aXR1dGUgcGF0ZW50IGxpdGlnYXRpb24gYWdhaW5zdCBh
bnkgZW50aXR5IChpbmNsdWRpbmcgYQorICAgICAgY3Jvc3MtY2xhaW0gb3IgY291bnRlcmNsYWlt
IGluIGEgbGF3c3VpdCkgYWxsZWdpbmcgdGhhdCB0aGUgV29yaworICAgICAgb3IgYSBDb250cmli
dXRpb24gaW5jb3Jwb3JhdGVkIHdpdGhpbiB0aGUgV29yayBjb25zdGl0dXRlcyBkaXJlY3QKKyAg
ICAgIG9yIGNvbnRyaWJ1dG9yeSBwYXRlbnQgaW5mcmluZ2VtZW50LCB0aGVuIGFueSBwYXRlbnQg
bGljZW5zZXMKKyAgICAgIGdyYW50ZWQgdG8gWW91IHVuZGVyIHRoaXMgTGljZW5zZSBmb3IgdGhh
dCBXb3JrIHNoYWxsIHRlcm1pbmF0ZQorICAgICAgYXMgb2YgdGhlIGRhdGUgc3VjaCBsaXRpZ2F0
aW9uIGlzIGZpbGVkLgorCisgICA0LiBSZWRpc3RyaWJ1dGlvbi4gWW91IG1heSByZXByb2R1Y2Ug
YW5kIGRpc3RyaWJ1dGUgY29waWVzIG9mIHRoZQorICAgICAgV29yayBvciBEZXJpdmF0aXZlIFdv
cmtzIHRoZXJlb2YgaW4gYW55IG1lZGl1bSwgd2l0aCBvciB3aXRob3V0CisgICAgICBtb2RpZmlj
YXRpb25zLCBhbmQgaW4gU291cmNlIG9yIE9iamVjdCBmb3JtLCBwcm92aWRlZCB0aGF0IFlvdQor
ICAgICAgbWVldCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKKyAgICAgIChhKSBZb3UgbXVz
dCBnaXZlIGFueSBvdGhlciByZWNpcGllbnRzIG9mIHRoZSBXb3JrIG9yCisgICAgICAgICAgRGVy
aXZhdGl2ZSBXb3JrcyBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlOyBhbmQKKworICAgICAgKGIpIFlv
dSBtdXN0IGNhdXNlIGFueSBtb2RpZmllZCBmaWxlcyB0byBjYXJyeSBwcm9taW5lbnQgbm90aWNl
cworICAgICAgICAgIHN0YXRpbmcgdGhhdCBZb3UgY2hhbmdlZCB0aGUgZmlsZXM7IGFuZAorCisg
ICAgICAoYykgWW91IG11c3QgcmV0YWluLCBpbiB0aGUgU291cmNlIGZvcm0gb2YgYW55IERlcml2
YXRpdmUgV29ya3MKKyAgICAgICAgICB0aGF0IFlvdSBkaXN0cmlidXRlLCBhbGwgY29weXJpZ2h0
LCBwYXRlbnQsIHRyYWRlbWFyaywgYW5kCisgICAgICAgICAgYXR0cmlidXRpb24gbm90aWNlcyBm
cm9tIHRoZSBTb3VyY2UgZm9ybSBvZiB0aGUgV29yaywKKyAgICAgICAgICBleGNsdWRpbmcgdGhv
c2Ugbm90aWNlcyB0aGF0IGRvIG5vdCBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mCisgICAgICAgICAg
dGhlIERlcml2YXRpdmUgV29ya3M7IGFuZAorCisgICAgICAoZCkgSWYgdGhlIFdvcmsgaW5jbHVk
ZXMgYSAiTk9USUNFIiB0ZXh0IGZpbGUgYXMgcGFydCBvZiBpdHMKKyAgICAgICAgICBkaXN0cmli
dXRpb24sIHRoZW4gYW55IERlcml2YXRpdmUgV29ya3MgdGhhdCBZb3UgZGlzdHJpYnV0ZSBtdXN0
CisgICAgICAgICAgaW5jbHVkZSBhIHJlYWRhYmxlIGNvcHkgb2YgdGhlIGF0dHJpYnV0aW9uIG5v
dGljZXMgY29udGFpbmVkCisgICAgICAgICAgd2l0aGluIHN1Y2ggTk9USUNFIGZpbGUsIGV4Y2x1
ZGluZyB0aG9zZSBub3RpY2VzIHRoYXQgZG8gbm90CisgICAgICAgICAgcGVydGFpbiB0byBhbnkg
cGFydCBvZiB0aGUgRGVyaXZhdGl2ZSBXb3JrcywgaW4gYXQgbGVhc3Qgb25lCisgICAgICAgICAg
b2YgdGhlIGZvbGxvd2luZyBwbGFjZXM6IHdpdGhpbiBhIE5PVElDRSB0ZXh0IGZpbGUgZGlzdHJp
YnV0ZWQKKyAgICAgICAgICBhcyBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyB3aXRoaW4g
dGhlIFNvdXJjZSBmb3JtIG9yCisgICAgICAgICAgZG9jdW1lbnRhdGlvbiwgaWYgcHJvdmlkZWQg
YWxvbmcgd2l0aCB0aGUgRGVyaXZhdGl2ZSBXb3Jrczsgb3IsCisgICAgICAgICAgd2l0aGluIGEg
ZGlzcGxheSBnZW5lcmF0ZWQgYnkgdGhlIERlcml2YXRpdmUgV29ya3MsIGlmIGFuZAorICAgICAg
ICAgIHdoZXJldmVyIHN1Y2ggdGhpcmQtcGFydHkgbm90aWNlcyBub3JtYWxseSBhcHBlYXIuIFRo
ZSBjb250ZW50cworICAgICAgICAgIG9mIHRoZSBOT1RJQ0UgZmlsZSBhcmUgZm9yIGluZm9ybWF0
aW9uYWwgcHVycG9zZXMgb25seSBhbmQKKyAgICAgICAgICBkbyBub3QgbW9kaWZ5IHRoZSBMaWNl
bnNlLiBZb3UgbWF5IGFkZCBZb3VyIG93biBhdHRyaWJ1dGlvbgorICAgICAgICAgIG5vdGljZXMg
d2l0aGluIERlcml2YXRpdmUgV29ya3MgdGhhdCBZb3UgZGlzdHJpYnV0ZSwgYWxvbmdzaWRlCisg
ICAgICAgICAgb3IgYXMgYW4gYWRkZW5kdW0gdG8gdGhlIE5PVElDRSB0ZXh0IGZyb20gdGhlIFdv
cmssIHByb3ZpZGVkCisgICAgICAgICAgdGhhdCBzdWNoIGFkZGl0aW9uYWwgYXR0cmlidXRpb24g
bm90aWNlcyBjYW5ub3QgYmUgY29uc3RydWVkCisgICAgICAgICAgYXMgbW9kaWZ5aW5nIHRoZSBM
aWNlbnNlLgorCisgICAgICBZb3UgbWF5IGFkZCBZb3VyIG93biBjb3B5cmlnaHQgc3RhdGVtZW50
IHRvIFlvdXIgbW9kaWZpY2F0aW9ucyBhbmQKKyAgICAgIG1heSBwcm92aWRlIGFkZGl0aW9uYWwg
b3IgZGlmZmVyZW50IGxpY2Vuc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMKKyAgICAgIGZvciB1c2Us
IHJlcHJvZHVjdGlvbiwgb3IgZGlzdHJpYnV0aW9uIG9mIFlvdXIgbW9kaWZpY2F0aW9ucywgb3IK
KyAgICAgIGZvciBhbnkgc3VjaCBEZXJpdmF0aXZlIFdvcmtzIGFzIGEgd2hvbGUsIHByb3ZpZGVk
IFlvdXIgdXNlLAorICAgICAgcmVwcm9kdWN0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoZSBX
b3JrIG90aGVyd2lzZSBjb21wbGllcyB3aXRoCisgICAgICB0aGUgY29uZGl0aW9ucyBzdGF0ZWQg
aW4gdGhpcyBMaWNlbnNlLgorCisgICA1LiBTdWJtaXNzaW9uIG9mIENvbnRyaWJ1dGlvbnMuIFVu
bGVzcyBZb3UgZXhwbGljaXRseSBzdGF0ZSBvdGhlcndpc2UsCisgICAgICBhbnkgQ29udHJpYnV0
aW9uIGludGVudGlvbmFsbHkgc3VibWl0dGVkIGZvciBpbmNsdXNpb24gaW4gdGhlIFdvcmsKKyAg
ICAgIGJ5IFlvdSB0byB0aGUgTGljZW5zb3Igc2hhbGwgYmUgdW5kZXIgdGhlIHRlcm1zIGFuZCBj
b25kaXRpb25zIG9mCisgICAgICB0aGlzIExpY2Vuc2UsIHdpdGhvdXQgYW55IGFkZGl0aW9uYWwg
dGVybXMgb3IgY29uZGl0aW9ucy4KKyAgICAgIE5vdHdpdGhzdGFuZGluZyB0aGUgYWJvdmUsIG5v
dGhpbmcgaGVyZWluIHNoYWxsIHN1cGVyc2VkZSBvciBtb2RpZnkKKyAgICAgIHRoZSB0ZXJtcyBv
ZiBhbnkgc2VwYXJhdGUgbGljZW5zZSBhZ3JlZW1lbnQgeW91IG1heSBoYXZlIGV4ZWN1dGVkCisg
ICAgICB3aXRoIExpY2Vuc29yIHJlZ2FyZGluZyBzdWNoIENvbnRyaWJ1dGlvbnMuCisKKyAgIDYu
IFRyYWRlbWFya3MuIFRoaXMgTGljZW5zZSBkb2VzIG5vdCBncmFudCBwZXJtaXNzaW9uIHRvIHVz
ZSB0aGUgdHJhZGUKKyAgICAgIG5hbWVzLCB0cmFkZW1hcmtzLCBzZXJ2aWNlIG1hcmtzLCBvciBw
cm9kdWN0IG5hbWVzIG9mIHRoZSBMaWNlbnNvciwKKyAgICAgIGV4Y2VwdCBhcyByZXF1aXJlZCBm
b3IgcmVhc29uYWJsZSBhbmQgY3VzdG9tYXJ5IHVzZSBpbiBkZXNjcmliaW5nIHRoZQorICAgICAg
b3JpZ2luIG9mIHRoZSBXb3JrIGFuZCByZXByb2R1Y2luZyB0aGUgY29udGVudCBvZiB0aGUgTk9U
SUNFIGZpbGUuCisKKyAgIDcuIERpc2NsYWltZXIgb2YgV2FycmFudHkuIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvcgorICAgICAgYWdyZWVkIHRvIGluIHdyaXRpbmcsIExpY2Vu
c29yIHByb3ZpZGVzIHRoZSBXb3JrIChhbmQgZWFjaAorICAgICAgQ29udHJpYnV0b3IgcHJvdmlk
ZXMgaXRzIENvbnRyaWJ1dGlvbnMpIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgICBXSVRIT1VU
IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IK
KyAgICAgIGltcGxpZWQsIGluY2x1ZGluZywgd2l0aG91dCBsaW1pdGF0aW9uLCBhbnkgd2FycmFu
dGllcyBvciBjb25kaXRpb25zCisgICAgICBvZiBUSVRMRSwgTk9OLUlORlJJTkdFTUVOVCwgTUVS
Q0hBTlRBQklMSVRZLCBvciBGSVRORVNTIEZPUiBBCisgICAgICBQQVJUSUNVTEFSIFBVUlBPU0Uu
IFlvdSBhcmUgc29sZWx5IHJlc3BvbnNpYmxlIGZvciBkZXRlcm1pbmluZyB0aGUKKyAgICAgIGFw
cHJvcHJpYXRlbmVzcyBvZiB1c2luZyBvciByZWRpc3RyaWJ1dGluZyB0aGUgV29yayBhbmQgYXNz
dW1lIGFueQorICAgICAgcmlza3MgYXNzb2NpYXRlZCB3aXRoIFlvdXIgZXhlcmNpc2Ugb2YgcGVy
bWlzc2lvbnMgdW5kZXIgdGhpcyBMaWNlbnNlLgorCisgICA4LiBMaW1pdGF0aW9uIG9mIExpYWJp
bGl0eS4gSW4gbm8gZXZlbnQgYW5kIHVuZGVyIG5vIGxlZ2FsIHRoZW9yeSwKKyAgICAgIHdoZXRo
ZXIgaW4gdG9ydCAoaW5jbHVkaW5nIG5lZ2xpZ2VuY2UpLCBjb250cmFjdCwgb3Igb3RoZXJ3aXNl
LAorICAgICAgdW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IChzdWNoIGFzIGRlbGli
ZXJhdGUgYW5kIGdyb3NzbHkKKyAgICAgIG5lZ2xpZ2VudCBhY3RzKSBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc2hhbGwgYW55IENvbnRyaWJ1dG9yIGJlCisgICAgICBsaWFibGUgdG8gWW91IGZv
ciBkYW1hZ2VzLCBpbmNsdWRpbmcgYW55IGRpcmVjdCwgaW5kaXJlY3QsIHNwZWNpYWwsCisgICAg
ICBpbmNpZGVudGFsLCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb2YgYW55IGNoYXJhY3RlciBh
cmlzaW5nIGFzIGEKKyAgICAgIHJlc3VsdCBvZiB0aGlzIExpY2Vuc2Ugb3Igb3V0IG9mIHRoZSB1
c2Ugb3IgaW5hYmlsaXR5IHRvIHVzZSB0aGUKKyAgICAgIFdvcmsgKGluY2x1ZGluZyBidXQgbm90
IGxpbWl0ZWQgdG8gZGFtYWdlcyBmb3IgbG9zcyBvZiBnb29kd2lsbCwKKyAgICAgIHdvcmsgc3Rv
cHBhZ2UsIGNvbXB1dGVyIGZhaWx1cmUgb3IgbWFsZnVuY3Rpb24sIG9yIGFueSBhbmQgYWxsCisg
ICAgICBvdGhlciBjb21tZXJjaWFsIGRhbWFnZXMgb3IgbG9zc2VzKSwgZXZlbiBpZiBzdWNoIENv
bnRyaWJ1dG9yCisgICAgICBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiBz
dWNoIGRhbWFnZXMuCisKKyAgIDkuIEFjY2VwdGluZyBXYXJyYW50eSBvciBBZGRpdGlvbmFsIExp
YWJpbGl0eS4gV2hpbGUgcmVkaXN0cmlidXRpbmcKKyAgICAgIHRoZSBXb3JrIG9yIERlcml2YXRp
dmUgV29ya3MgdGhlcmVvZiwgWW91IG1heSBjaG9vc2UgdG8gb2ZmZXIsCisgICAgICBhbmQgY2hh
cmdlIGEgZmVlIGZvciwgYWNjZXB0YW5jZSBvZiBzdXBwb3J0LCB3YXJyYW50eSwgaW5kZW1uaXR5
LAorICAgICAgb3Igb3RoZXIgbGlhYmlsaXR5IG9ibGlnYXRpb25zIGFuZC9vciByaWdodHMgY29u
c2lzdGVudCB3aXRoIHRoaXMKKyAgICAgIExpY2Vuc2UuIEhvd2V2ZXIsIGluIGFjY2VwdGluZyBz
dWNoIG9ibGlnYXRpb25zLCBZb3UgbWF5IGFjdCBvbmx5CisgICAgICBvbiBZb3VyIG93biBiZWhh
bGYgYW5kIG9uIFlvdXIgc29sZSByZXNwb25zaWJpbGl0eSwgbm90IG9uIGJlaGFsZgorICAgICAg
b2YgYW55IG90aGVyIENvbnRyaWJ1dG9yLCBhbmQgb25seSBpZiBZb3UgYWdyZWUgdG8gaW5kZW1u
aWZ5LAorICAgICAgZGVmZW5kLCBhbmQgaG9sZCBlYWNoIENvbnRyaWJ1dG9yIGhhcm1sZXNzIGZv
ciBhbnkgbGlhYmlsaXR5CisgICAgICBpbmN1cnJlZCBieSwgb3IgY2xhaW1zIGFzc2VydGVkIGFn
YWluc3QsIHN1Y2ggQ29udHJpYnV0b3IgYnkgcmVhc29uCisgICAgICBvZiB5b3VyIGFjY2VwdGlu
ZyBhbnkgc3VjaCB3YXJyYW50eSBvciBhZGRpdGlvbmFsIGxpYWJpbGl0eS4KKworICAgRU5EIE9G
IFRFUk1TIEFORCBDT05ESVRJT05TCisKKyAgIEFQUEVORElYOiBIb3cgdG8gYXBwbHkgdGhlIEFw
YWNoZSBMaWNlbnNlIHRvIHlvdXIgd29yay4KKworICAgICAgVG8gYXBwbHkgdGhlIEFwYWNoZSBM
aWNlbnNlIHRvIHlvdXIgd29yaywgYXR0YWNoIHRoZSBmb2xsb3dpbmcKKyAgICAgIGJvaWxlcnBs
YXRlIG5vdGljZSwgd2l0aCB0aGUgZmllbGRzIGVuY2xvc2VkIGJ5IGJyYWNrZXRzICJbXSIKKyAg
ICAgIHJlcGxhY2VkIHdpdGggeW91ciBvd24gaWRlbnRpZnlpbmcgaW5mb3JtYXRpb24uIChEb24n
dCBpbmNsdWRlCisgICAgICB0aGUgYnJhY2tldHMhKSAgVGhlIHRleHQgc2hvdWxkIGJlIGVuY2xv
c2VkIGluIHRoZSBhcHByb3ByaWF0ZQorICAgICAgY29tbWVudCBzeW50YXggZm9yIHRoZSBmaWxl
IGZvcm1hdC4gV2UgYWxzbyByZWNvbW1lbmQgdGhhdCBhCisgICAgICBmaWxlIG9yIGNsYXNzIG5h
bWUgYW5kIGRlc2NyaXB0aW9uIG9mIHB1cnBvc2UgYmUgaW5jbHVkZWQgb24gdGhlCisgICAgICBz
YW1lICJwcmludGVkIHBhZ2UiIGFzIHRoZSBjb3B5cmlnaHQgbm90aWNlIGZvciBlYXNpZXIKKyAg
ICAgIGlkZW50aWZpY2F0aW9uIHdpdGhpbiB0aGlyZC1wYXJ0eSBhcmNoaXZlcy4KKworICAgQ29w
eXJpZ2h0IFsyMDA3XSBOZWFsIE5vcndpdHoKKyAgIFBvcnRpb25zIENvcHlyaWdodCBbMjAwN10g
R29vZ2xlIEluYy4KKworICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NjcmlwdHMvZ2VuZXJhdG9yL1JFQURNRSBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGVtb2NrL3NjcmlwdHMvZ2VuZXJhdG9yL1JFQURNRQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNmY5NTk3
NGI2MGI1YTRkOTUzOGYwOGViMTNiYjIwNGZiZGM4NjRlCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZW1vY2svc2NyaXB0cy9nZW5lcmF0b3IvUkVBRE1FCkBAIC0wLDAgKzEsMzUgQEAKKworVGhl
IEdvb2dsZSBNb2NrIGNsYXNzIGdlbmVyYXRvciBpcyBhbiBhcHBsaWNhdGlvbiB0aGF0IGlzIHBh
cnQgb2YgY3BwY2xlYW4uCitGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBjcHBjbGVhbiwgc2Vl
IHRoZSBSRUFETUUuY3BwY2xlYW4gZmlsZSBvcgordmlzaXQgaHR0cDovL2NvZGUuZ29vZ2xlLmNv
bS9wL2NwcGNsZWFuLworCitjcHBjbGVhbiByZXF1aXJlcyBQeXRob24gMi4zLjUgb3IgbGF0ZXIu
ICBJZiB5b3UgZG9uJ3QgaGF2ZSBQeXRob24gaW5zdGFsbGVkCitvbiB5b3VyIHN5c3RlbSwgeW91
IHdpbGwgYWxzbyBuZWVkIHRvIGluc3RhbGwgaXQuICBZb3UgY2FuIGRvd25sb2FkIFB5dGhvbgor
ZnJvbTogIGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZC9yZWxlYXNlcy8KKworVG8gdXNl
IHRoZSBHb29nbGUgTW9jayBjbGFzcyBnZW5lcmF0b3IsIHlvdSBuZWVkIHRvIGNhbGwgaXQKK29u
IHRoZSBjb21tYW5kIGxpbmUgcGFzc2luZyB0aGUgaGVhZGVyIGZpbGUgYW5kIGNsYXNzIGZvciB3
aGljaCB5b3Ugd2FudAordG8gZ2VuZXJhdGUgYSBHb29nbGUgTW9jayBjbGFzcy4KKworTWFrZSBz
dXJlIHRvIGluc3RhbGwgdGhlIHNjcmlwdHMgc29tZXdoZXJlIGluIHlvdXIgcGF0aC4gIFRoZW4g
eW91IGNhbgorcnVuIHRoZSBwcm9ncmFtLgorCisgIGdtb2NrX2dlbi5weSBoZWFkZXItZmlsZS5o
IFtDbGFzc05hbWVdLi4uCisKK0lmIG5vIENsYXNzTmFtZXMgYXJlIHNwZWNpZmllZCwgYWxsIGNs
YXNzZXMgaW4gdGhlIGZpbGUgYXJlIGVtaXR0ZWQuCisKK1RvIGNoYW5nZSB0aGUgaW5kZW50YXRp
b24gZnJvbSB0aGUgZGVmYXVsdCBvZiAyLCBzZXQgSU5ERU5UIGluCit0aGUgZW52aXJvbm1lbnQu
ICBGb3IgZXhhbXBsZSB0byB1c2UgYW4gaW5kZW50IG9mIDQgc3BhY2VzOgorCitJTkRFTlQ9NCBn
bW9ja19nZW4ucHkgaGVhZGVyLWZpbGUuaCBDbGFzc05hbWUKKworVGhpcyB2ZXJzaW9uIHdhcyBt
YWRlIGZyb20gU1ZOIHJldmlzaW9uIDI4MSBpbiB0aGUgY3BwY2xlYW4gcmVwb3NpdG9yeS4KKwor
S25vd24gTGltaXRhdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tCitOb3QgYWxsIGNvZGUgd2lsbCBi
ZSBnZW5lcmF0ZWQgcHJvcGVybHkuICBGb3IgZXhhbXBsZSwgd2hlbiBtb2NraW5nIHRlbXBsYXRl
ZAorY2xhc3NlcywgdGhlIHRlbXBsYXRlIGluZm9ybWF0aW9uIGlzIGxvc3QuICBZb3Ugd2lsbCBu
ZWVkIHRvIGFkZCB0aGUgdGVtcGxhdGUKK2luZm9ybWF0aW9uIG1hbnVhbGx5LgorCitOb3QgYWxs
IHBlcm11dGF0aW9ucyBvZiB1c2luZyBtdWx0aXBsZSBwb2ludGVycy9yZWZlcmVuY2VzIHdpbGwg
YmUgcmVuZGVyZWQKK3Byb3Blcmx5LiAgVGhlc2Ugd2lsbCBhbHNvIGhhdmUgdG8gYmUgZml4ZWQg
bWFudWFsbHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zY3JpcHRzL2dlbmVyYXRvci9SRUFE
TUUuY3BwY2xlYW4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zY3JpcHRzL2dlbmVyYXRvci9SRUFETUUuY3BwY2xl
YW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNjU0MzFiNjE3NTkzMTljZDM1ZDgwYmZkMGFhNzg0NDFjMDk2M2U3Ygot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NjcmlwdHMvZ2VuZXJhdG9yL1JFQURNRS5j
cHBjbGVhbgpAQCAtMCwwICsxLDExNSBAQAorR29hbDoKKy0tLS0tCisgIENwcENsZWFuIGF0dGVt
cHRzIHRvIGZpbmQgcHJvYmxlbXMgaW4gQysrIHNvdXJjZSB0aGF0IHNsb3cgZGV2ZWxvcG1lbnQK
KyAgaW4gbGFyZ2UgY29kZSBiYXNlcywgZm9yIGV4YW1wbGUgdmFyaW91cyBmb3JtcyBvZiB1bnVz
ZWQgY29kZS4KKyAgVW51c2VkIGNvZGUgY2FuIGJlIHVudXNlZCBmdW5jdGlvbnMsIG1ldGhvZHMs
IGRhdGEgbWVtYmVycywgdHlwZXMsIGV0YworICB0byB1bm5lY2Vzc2FyeSAjaW5jbHVkZSBkaXJl
Y3RpdmVzLiAgVW5uZWNlc3NhcnkgI2luY2x1ZGVzIGNhbiBjYXVzZQorICBjb25zaWRlcmFibGUg
ZXh0cmEgY29tcGlsZXMgaW5jcmVhc2luZyB0aGUgZWRpdC1jb21waWxlLXJ1biBjeWNsZS4KKwor
ICBUaGUgcHJvamVjdCBob21lIHBhZ2UgaXM6ICAgaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nw
cGNsZWFuLworCisKK0ZlYXR1cmVzOgorLS0tLS0tLS0tCisgKiBGaW5kIGFuZCBwcmludCBDKysg
bGFuZ3VhZ2UgY29uc3RydWN0czogY2xhc3NlcywgbWV0aG9kcywgZnVuY3Rpb25zLCBldGMuCisg
KiBGaW5kIGNsYXNzZXMgd2l0aCB2aXJ0dWFsIG1ldGhvZHMsIG5vIHZpcnR1YWwgZGVzdHJ1Y3Rv
ciwgYW5kIG5vIGJhc2VzCisgKiBGaW5kIGdsb2JhbC9zdGF0aWMgZGF0YSB0aGF0IGFyZSBwb3Rl
bnRpYWwgcHJvYmxlbXMgd2hlbiB1c2luZyB0aHJlYWRzCisgKiBVbm5lY2Vzc2FyeSBmb3J3YXJk
IGNsYXNzIGRlY2xhcmF0aW9ucworICogVW5uZWNlc3NhcnkgZnVuY3Rpb24gZGVjbGFyYXRpb25z
CisgKiBVbmRlY2xhcmVkIGZ1bmN0aW9uIGRlZmluaXRpb25zCisgKiAocGxhbm5lZCkgRmluZCB1
bm5lY2Vzc2FyeSBoZWFkZXIgZmlsZXMgI2luY2x1ZGVkCisgICAtIE5vIGRpcmVjdCByZWZlcmVu
Y2UgdG8gYW55dGhpbmcgaW4gdGhlIGhlYWRlcgorICAgLSBIZWFkZXIgaXMgdW5uZWNlc3Nhcnkg
aWYgY2xhc3NlcyB3ZXJlIGZvcndhcmQgZGVjbGFyZWQgaW5zdGVhZAorICogKHBsYW5uZWQpIFNv
dXJjZSBmaWxlcyB0aGF0IHJlZmVyZW5jZSBoZWFkZXJzIG5vdCBkaXJlY3RseSAjaW5jbHVkZWQs
CisgICBpZSwgZmlsZXMgdGhhdCByZWx5IG9uIGEgdHJhbnNpdGl2ZSAjaW5jbHVkZSBmcm9tIGFu
b3RoZXIgaGVhZGVyCisgKiAocGxhbm5lZCkgVW51c2VkIG1lbWJlcnMgKHByaXZhdGUsIHByb3Rl
Y3RlZCwgJiBwdWJsaWMpIG1ldGhvZHMgYW5kIGRhdGEKKyAqIChwbGFubmVkKSBTdG9yZSBBU1Qg
aW4gYSBTUUwgZGF0YWJhc2Ugc28gcmVsYXRpb25zaGlwcyBjYW4gYmUgcXVlcmllZAorCitBU1Qg
aXMgQWJzdHJhY3QgU3ludGF4IFRyZWUsIGEgcmVwcmVzZW50YXRpb24gb2YgcGFyc2VkIHNvdXJj
ZSBjb2RlLgoraHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BYnN0cmFjdF9zeW50YXhfdHJl
ZQorCisKK1N5c3RlbSBSZXF1aXJlbWVudHM6CistLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUHl0
aG9uIDIuNCBvciBsYXRlciAoMi4zIHByb2JhYmx5IHdvcmtzIHRvbykKKyAqIFdvcmtzIG9uIFdp
bmRvd3MgKHVudGVzdGVkKSwgTWFjIE9TIFgsIGFuZCBVbml4CisKKworSG93IHRvIFJ1bjoKKy0t
LS0tLS0tLS0tCisgIEZvciBhbGwgZXhhbXBsZXMsIGl0IGlzIGFzc3VtZWQgdGhhdCBjcHBjbGVh
biByZXNpZGVzIGluIGEgZGlyZWN0b3J5IGNhbGxlZAorICAvY3BwY2xlYW4uCisKKyAgVG8gcHJp
bnQgd2FybmluZ3MgZm9yIGNsYXNzZXMgd2l0aCB2aXJ0dWFsIG1ldGhvZHMsIG5vIHZpcnR1YWwg
ZGVzdHJ1Y3RvciBhbmQKKyAgbm8gYmFzZSBjbGFzc2VzOgorCisgICAgICAvY3BwY2xlYW4vcnVu
LnNoIG5vbnZpcnR1YWxfZHRvcnMucHkgZmlsZTEuaCBmaWxlMi5oIGZpbGUzLmNjIC4uLgorCisg
IFRvIHByaW50IGFsbCB0aGUgZnVuY3Rpb25zIGRlZmluZWQgaW4gaGVhZGVyIGZpbGUocyk6CisK
KyAgICAgIC9jcHBjbGVhbi9ydW4uc2ggZnVuY3Rpb25zLnB5IGZpbGUxLmggZmlsZTIuaCAuLi4K
KworICBBbGwgdGhlIGNvbW1hbmRzIHRha2UgbXVsdGlwbGUgZmlsZXMgb24gdGhlIGNvbW1hbmQg
bGluZS4gIE90aGVyIHByb2dyYW1zCisgIGluY2x1ZGU6IGZpbmRfd2FybmluZ3MsIGhlYWRlcnMs
IG1ldGhvZHMsIGFuZCB0eXBlcy4gIFNvbWUgb3RoZXIgcHJvZ3JhbXMKKyAgYXJlIGF2YWlsYWJs
ZSwgYnV0IHVzZWQgcHJpbWFyaWx5IGZvciBkZWJ1Z2dpbmcuCisKKyAgcnVuLnNoIGlzIGEgc2lt
cGxlIHdyYXBwZXIgdGhhdCBzZXRzIFBZVEhPTlBBVEggdG8gL2NwcGNsZWFuIGFuZCB0aGVuCisg
IHJ1bnMgdGhlIHByb2dyYW0gaW4gL2NwcGNsZWFuL2NwcC9QUk9HUkFNLnB5LiAgVGhlcmUgaXMg
Y3VycmVudGx5CisgIG5vIGVxdWl2YWxlbnQgZm9yIFdpbmRvd3MuICBDb250cmlidXRpb25zIGZv
ciBhIHJ1bi5iYXQgZmlsZQorICB3b3VsZCBiZSBncmVhdGx5IGFwcHJlY2lhdGVkLgorCisKK0hv
dyB0byBDb25maWd1cmU6CistLS0tLS0tLS0tLS0tLS0tLQorICBZb3UgY2FuIGFkZCBhIHNpdGVo
ZWFkZXJzLnB5IGZpbGUgaW4gL2NwcGNsZWFuL2NwcCB0byBjb25maWd1cmUgd2hlcmUKKyAgdG8g
bG9vayBmb3Igb3RoZXIgaGVhZGVycyAodHlwaWNhbGx5IC1JIG9wdGlvbnMgcGFzc2VkIHRvIGEg
Y29tcGlsZXIpLgorICBDdXJyZW50bHkgdHdvIHZhbHVlcyBhcmUgc3VwcG9ydGVkOiAgX1RSQU5T
SVRJVkUgYW5kIEdldEluY2x1ZGVEaXJzLgorICBfVFJBTlNJVElWRSBzaG91bGQgYmUgc2V0IHRv
IGEgYm9vbGVhbiB2YWx1ZSAoVHJ1ZSBvciBGYWxzZSkgaW5kaWNhdGluZworICB3aGV0aGVyIHRv
IHRyYW5zaXRpdmVseSBwcm9jZXNzIGFsbCBoZWFkZXIgZmlsZXMuICBUaGUgZGVmYXVsdCBpcyBG
YWxzZS4KKworICBHZXRJbmNsdWRlRGlycyBpcyBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSBzaW5n
bGUgYXJndW1lbnQgYW5kIHJldHVybnMKKyAgYSBzZXF1ZW5jZSBvZiBkaXJlY3RvcmllcyB0byBp
bmNsdWRlLiAgVGhpcyBjYW4gYmUgYSBnZW5lcmF0b3Igb3IKKyAgcmV0dXJuIGEgc3RhdGljIGxp
c3QuCisKKyAgICAgIGRlZiBHZXRJbmNsdWRlRGlycyhmaWxlbmFtZSk6CisgICAgICAgICAgcmV0
dXJuIFsnL3NvbWUvcGF0aC93aXRoL290aGVyL2hlYWRlcnMnXQorCisgICAgICAjIEhlcmUgaXMg
YSBtb3JlIGNvbXBsaWNhdGVkIGV4YW1wbGUuCisgICAgICBkZWYgR2V0SW5jbHVkZURpcnMoZmls
ZW5hbWUpOgorICAgICAgICAgIHlpZWxkICcvcGF0aDEnCisgICAgICAgICAgeWllbGQgb3MucGF0
aC5qb2luKCcvcGF0aDInLCBvcy5wYXRoLmRpcm5hbWUoZmlsZW5hbWUpKQorICAgICAgICAgIHlp
ZWxkICcvcGF0aDMnCisKKworSG93IHRvIFRlc3Q6CistLS0tLS0tLS0tLS0KKyAgRm9yIGFsbCBl
eGFtcGxlcywgaXQgaXMgYXNzdW1lZCB0aGF0IGNwcGNsZWFuIHJlc2lkZXMgaW4gYSBkaXJlY3Rv
cnkgY2FsbGVkCisgIC9jcHBjbGVhbi4gIFRoZSB0ZXN0cyByZXF1aXJlCisKKyAgY2QgL2NwcGNs
ZWFuCisgIG1ha2UgdGVzdAorICAjIFRvIGdlbmVyYXRlIGV4cGVjdGVkIHJlc3VsdHMgYWZ0ZXIg
YSBjaGFuZ2U6CisgIG1ha2UgZXhwZWN0ZWQKKworCitDdXJyZW50IFN0YXR1czoKKy0tLS0tLS0t
LS0tLS0tLQorICBUaGUgcGFyc2VyIHdvcmtzIHByZXR0eSB3ZWxsIGZvciBoZWFkZXIgZmlsZXMs
IHBhcnNpbmcgYWJvdXQgOTklIG9mIEdvb2dsZSdzCisgIGhlYWRlciBmaWxlcy4gIEFueXRoaW5n
IHdoaWNoIGluc3BlY3RzIHN0cnVjdHVyZSBvZiBDKysgc291cmNlIGZpbGVzIHNob3VsZAorICB3
b3JrIHJlYXNvbmFibHkgd2VsbC4gIEZ1bmN0aW9uIGJvZGllcyBhcmUgbm90IHRyYW5zZm9ybWVk
IHRvIGFuIEFTVCwKKyAgYnV0IGxlZnQgYXMgdG9rZW5zLiAgTXVjaCB3b3JrIGlzIHN0aWxsIG5l
ZWRlZCBvbiBmaW5kaW5nIHVudXNlZCBoZWFkZXIgZmlsZXMKKyAgYW5kIHN0b3JpbmcgYW4gQVNU
IGluIGEgZGF0YWJhc2UuCisKKworTm9uLWdvYWxzOgorLS0tLS0tLS0tLQorICogUGFyc2luZyBh
bGwgdmFsaWQgQysrIHNvdXJjZQorICogSGFuZGxpbmcgaW52YWxpZCBDKysgc291cmNlIGdyYWNl
ZnVsbHkKKyAqIENvbXBpbGluZyB0byBtYWNoaW5lIGNvZGUgKG9yIGFueXRoaW5nIGJleW9uZCBh
biBBU1QpCisKKworQ29udGFjdDoKKy0tLS0tLS0tCisgIElmIHlvdSB1c2VkIGNwcGNsZWFuLCBJ
IHdvdWxkIGxvdmUgdG8gaGVhciBhYm91dCB5b3VyIGV4cGVyaWVuY2VzCisgIGNwcGNsZWFuQGdv
b2dsZWdyb3Vwcy5jb20uICBFdmVuIGlmIHlvdSBkb24ndCB1c2UgY3BwY2xlYW4sIEknZCBsaWtl
IHRvCisgIGhlYXIgZnJvbSB5b3UuICA6LSkgIChZb3UgY2FuIGNvbnRhY3QgbWUgZGlyZWN0bHkg
YXQ6ICBubm9yd2l0ekBnbWFpbC5jb20pCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zY3JpcHRz
L2dlbmVyYXRvci9jcHAvYXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc2NyaXB0cy9nZW5lcmF0b3IvY3Bw
L2FzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xMWNiZTkxMjZhZjVjMjRlNjkyYmIzMTU1NDU3NmNhZTkyNzU2
MGNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc2NyaXB0cy9nZW5lcmF0b3IvY3Bw
L2FzdC5weQpAQCAtMCwwICsxLDE3MzMgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBD
b3B5cmlnaHQgMjAwNyBOZWFsIE5vcndpdHoKKyMgUG9ydGlvbnMgQ29weXJpZ2h0IDIwMDcgR29v
Z2xlIEluYy4KKyMKKyMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9u
IDIuMCAodGhlICJMaWNlbnNlIik7CisjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyMgWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CisjCisjICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisjCisjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyMgV0lUSE9VVCBX
QVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGlt
cGxpZWQuCisjIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVy
bmluZyBwZXJtaXNzaW9ucyBhbmQKKyMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisK
KyIiIkdlbmVyYXRlIGFuIEFic3RyYWN0IFN5bnRheCBUcmVlIChBU1QpIGZvciBDKysuIiIiCisK
K19fYXV0aG9yX18gPSAnbm5vcndpdHpAZ29vZ2xlLmNvbSAoTmVhbCBOb3J3aXR6KScKKworCisj
IFRPRE86CisjICAqIFRva2VucyBzaG91bGQgbmV2ZXIgYmUgZXhwb3J0ZWQsIG5lZWQgdG8gY29u
dmVydCB0byBOb2RlcworIyAgICAocmV0dXJuIHR5cGVzLCBwYXJhbWV0ZXJzLCBldGMuKQorIyAg
KiBIYW5kbGUgc3RhdGljIGNsYXNzIGRhdGEgZm9yIHRlbXBsYXRpemVkIGNsYXNzZXMKKyMgICog
SGFuZGxlIGNhc3RzIChib3RoIEMrKyBhbmQgQy1zdHlsZSkKKyMgICogSGFuZGxlIGNvbmRpdGlv
bnMgYW5kIGxvb3BzIChpZi9lbHNlLCBzd2l0Y2gsIGZvciwgd2hpbGUvZG8pCisjCisjIFRPRE8g
bXVjaCwgbXVjaCBsYXRlcjoKKyMgICogSGFuZGxlICNkZWZpbmUKKyMgICogZXhjZXB0aW9ucwor
CisKK3RyeToKKyAgICAjIFB5dGhvbiAzLngKKyAgICBpbXBvcnQgYnVpbHRpbnMKK2V4Y2VwdCBJ
bXBvcnRFcnJvcjoKKyAgICAjIFB5dGhvbiAyLngKKyAgICBpbXBvcnQgX19idWlsdGluX18gYXMg
YnVpbHRpbnMKKworaW1wb3J0IHN5cworaW1wb3J0IHRyYWNlYmFjaworCitmcm9tIGNwcCBpbXBv
cnQga2V5d29yZHMKK2Zyb20gY3BwIGltcG9ydCB0b2tlbml6ZQorZnJvbSBjcHAgaW1wb3J0IHV0
aWxzCisKKworaWYgbm90IGhhc2F0dHIoYnVpbHRpbnMsICdyZXZlcnNlZCcpOgorICAgICMgU3Vw
cG9ydCBQeXRob24gMi4zIGFuZCBlYXJsaWVyLgorICAgIGRlZiByZXZlcnNlZChzZXEpOgorICAg
ICAgICBmb3IgaSBpbiByYW5nZShsZW4oc2VxKS0xLCAtMSwgLTEpOgorICAgICAgICAgICAgeWll
bGQgc2VxW2ldCisKK2lmIG5vdCBoYXNhdHRyKGJ1aWx0aW5zLCAnbmV4dCcpOgorICAgICMgU3Vw
cG9ydCBQeXRob24gMi41IGFuZCBlYXJsaWVyLgorICAgIGRlZiBuZXh0KG9iaik6CisgICAgICAg
IHJldHVybiBvYmoubmV4dCgpCisKKworVklTSUJJTElUWV9QVUJMSUMsIFZJU0lCSUxJVFlfUFJP
VEVDVEVELCBWSVNJQklMSVRZX1BSSVZBVEUgPSByYW5nZSgzKQorCitGVU5DVElPTl9OT05FID0g
MHgwMAorRlVOQ1RJT05fQ09OU1QgPSAweDAxCitGVU5DVElPTl9WSVJUVUFMID0gMHgwMgorRlVO
Q1RJT05fUFVSRV9WSVJUVUFMID0gMHgwNAorRlVOQ1RJT05fQ1RPUiA9IDB4MDgKK0ZVTkNUSU9O
X0RUT1IgPSAweDEwCitGVU5DVElPTl9BVFRSSUJVVEUgPSAweDIwCitGVU5DVElPTl9VTktOT1dO
X0FOTk9UQVRJT04gPSAweDQwCitGVU5DVElPTl9USFJPVyA9IDB4ODAKK0ZVTkNUSU9OX09WRVJS
SURFID0gMHgxMDAKKworIiIiCitUaGVzZSBhcmUgY3VycmVudGx5IHVudXNlZC4gIFNob3VsZCBy
ZWFsbHkgaGFuZGxlIHRoZXNlIHByb3Blcmx5IGF0IHNvbWUgcG9pbnQuCisKK1RZUEVfTU9ESUZJ
RVJfSU5MSU5FICAgPSAweDAxMDAwMAorVFlQRV9NT0RJRklFUl9FWFRFUk4gICA9IDB4MDIwMDAw
CitUWVBFX01PRElGSUVSX1NUQVRJQyAgID0gMHgwNDAwMDAKK1RZUEVfTU9ESUZJRVJfQ09OU1Qg
ICAgPSAweDA4MDAwMAorVFlQRV9NT0RJRklFUl9SRUdJU1RFUiA9IDB4MTAwMDAwCitUWVBFX01P
RElGSUVSX1ZPTEFUSUxFID0gMHgyMDAwMDAKK1RZUEVfTU9ESUZJRVJfTVVUQUJMRSAgPSAweDQw
MDAwMAorCitUWVBFX01PRElGSUVSX01BUCA9IHsKKyAgICAnaW5saW5lJzogVFlQRV9NT0RJRklF
Ul9JTkxJTkUsCisgICAgJ2V4dGVybic6IFRZUEVfTU9ESUZJRVJfRVhURVJOLAorICAgICdzdGF0
aWMnOiBUWVBFX01PRElGSUVSX1NUQVRJQywKKyAgICAnY29uc3QnOiBUWVBFX01PRElGSUVSX0NP
TlNULAorICAgICdyZWdpc3Rlcic6IFRZUEVfTU9ESUZJRVJfUkVHSVNURVIsCisgICAgJ3ZvbGF0
aWxlJzogVFlQRV9NT0RJRklFUl9WT0xBVElMRSwKKyAgICAnbXV0YWJsZSc6IFRZUEVfTU9ESUZJ
RVJfTVVUQUJMRSwKKyAgICB9CisiIiIKKworX0lOVEVSTkFMX1RPS0VOID0gJ2ludGVybmFsJwor
X05BTUVTUEFDRV9QT1AgPSAnbnMtcG9wJworCisKKyMgVE9ETyhubm9yd2l0eik6IHVzZSB0aGlz
IGFzIGEgc2luZ2xldG9uIGZvciB0ZW1wbGF0ZWRfdHlwZXMsIGV0YworIyB3aGVyZSB3ZSBkb24n
dCB3YW50IHRvIGNyZWF0ZSBhIG5ldyBlbXB0eSBkaWN0IGVhY2ggdGltZS4gIEl0IGlzIGFsc28g
Y29uc3QuCitjbGFzcyBfTnVsbERpY3Qob2JqZWN0KToKKyAgICBfX2NvbnRhaW5zX18gPSBsYW1i
ZGEgc2VsZjogRmFsc2UKKyAgICBrZXlzID0gdmFsdWVzID0gaXRlbXMgPSBpdGVya2V5cyA9IGl0
ZXJ2YWx1ZXMgPSBpdGVyaXRlbXMgPSBsYW1iZGEgc2VsZjogKCkKKworCisjIFRPRE8obm5vcndp
dHopOiBtb3ZlIEFTVCBub2RlcyBpbnRvIGEgc2VwYXJhdGUgbW9kdWxlLgorY2xhc3MgTm9kZShv
YmplY3QpOgorICAgICIiIkJhc2UgQVNUIG5vZGUuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2Vs
Ziwgc3RhcnQsIGVuZCk6CisgICAgICAgIHNlbGYuc3RhcnQgPSBzdGFydAorICAgICAgICBzZWxm
LmVuZCA9IGVuZAorCisgICAgZGVmIElzRGVjbGFyYXRpb24oc2VsZik6CisgICAgICAgICIiIlJl
dHVybnMgYm9vbCBpZiB0aGlzIG5vZGUgaXMgYSBkZWNsYXJhdGlvbi4iIiIKKyAgICAgICAgcmV0
dXJuIEZhbHNlCisKKyAgICBkZWYgSXNEZWZpbml0aW9uKHNlbGYpOgorICAgICAgICAiIiJSZXR1
cm5zIGJvb2wgaWYgdGhpcyBub2RlIGlzIGEgZGVmaW5pdGlvbi4iIiIKKyAgICAgICAgcmV0dXJu
IEZhbHNlCisKKyAgICBkZWYgSXNFeHBvcnRhYmxlKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm5z
IGJvb2wgaWYgdGhpcyBub2RlIGV4cG9ydGFibGUgZnJvbSBhIGhlYWRlciBmaWxlLiIiIgorICAg
ICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBSZXF1aXJlcyhzZWxmLCBub2RlKToKKyAgICAg
ICAgIiIiRG9lcyB0aGlzIEFTVCBub2RlIHJlcXVpcmUgdGhlIGRlZmluaXRpb24gb2YgdGhlIG5v
ZGUgcGFzc2VkIGluPyIiIgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBYWFhfX3N0
cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fU3RyaW5nSGVscGVyKHNlbGYuX19jbGFz
c19fLl9fbmFtZV9fLCAnJykKKworICAgIGRlZiBfU3RyaW5nSGVscGVyKHNlbGYsIG5hbWUsIHN1
ZmZpeCk6CisgICAgICAgIGlmIG5vdCB1dGlscy5ERUJVRzoKKyAgICAgICAgICAgIHJldHVybiAn
JXMoJXMpJyAlIChuYW1lLCBzdWZmaXgpCisgICAgICAgIHJldHVybiAnJXMoJWQsICVkLCAlcykn
ICUgKG5hbWUsIHNlbGYuc3RhcnQsIHNlbGYuZW5kLCBzdWZmaXgpCisKKyAgICBkZWYgX19yZXBy
X18oc2VsZik6CisgICAgICAgIHJldHVybiBzdHIoc2VsZikKKworCitjbGFzcyBEZWZpbmUoTm9k
ZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0YXJ0LCBlbmQsIG5hbWUsIGRlZmluaXRpb24p
OgorICAgICAgICBOb2RlLl9faW5pdF9fKHNlbGYsIHN0YXJ0LCBlbmQpCisgICAgICAgIHNlbGYu
bmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi5kZWZpbml0aW9uID0gZGVmaW5pdGlvbgorCisgICAg
ZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHZhbHVlID0gJyVzICVzJyAlIChzZWxmLm5hbWUs
IHNlbGYuZGVmaW5pdGlvbikKKyAgICAgICAgcmV0dXJuIHNlbGYuX1N0cmluZ0hlbHBlcihzZWxm
Ll9fY2xhc3NfXy5fX25hbWVfXywgdmFsdWUpCisKKworY2xhc3MgSW5jbHVkZShOb2RlKToKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgc3RhcnQsIGVuZCwgZmlsZW5hbWUsIHN5c3RlbSk6CisgICAg
ICAgIE5vZGUuX19pbml0X18oc2VsZiwgc3RhcnQsIGVuZCkKKyAgICAgICAgc2VsZi5maWxlbmFt
ZSA9IGZpbGVuYW1lCisgICAgICAgIHNlbGYuc3lzdGVtID0gc3lzdGVtCisKKyAgICBkZWYgX19z
dHJfXyhzZWxmKToKKyAgICAgICAgZm10ID0gJyIlcyInCisgICAgICAgIGlmIHNlbGYuc3lzdGVt
OgorICAgICAgICAgICAgZm10ID0gJzwlcz4nCisgICAgICAgIHJldHVybiBzZWxmLl9TdHJpbmdI
ZWxwZXIoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIGZtdCAlIHNlbGYuZmlsZW5hbWUpCisKKwor
Y2xhc3MgR290byhOb2RlKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc3RhcnQsIGVuZCwgbGFi
ZWwpOgorICAgICAgICBOb2RlLl9faW5pdF9fKHNlbGYsIHN0YXJ0LCBlbmQpCisgICAgICAgIHNl
bGYubGFiZWwgPSBsYWJlbAorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVy
biBzZWxmLl9TdHJpbmdIZWxwZXIoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHN0cihzZWxmLmxh
YmVsKSkKKworCitjbGFzcyBFeHByKE5vZGUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdGFy
dCwgZW5kLCBleHByKToKKyAgICAgICAgTm9kZS5fX2luaXRfXyhzZWxmLCBzdGFydCwgZW5kKQor
ICAgICAgICBzZWxmLmV4cHIgPSBleHByCisKKyAgICBkZWYgUmVxdWlyZXMoc2VsZiwgbm9kZSk6
CisgICAgICAgICMgVE9ETyhubm9yd2l0eik6IGltcGwuCisgICAgICAgIHJldHVybiBGYWxzZQor
CisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9TdHJpbmdIZWxw
ZXIoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHN0cihzZWxmLmV4cHIpKQorCisKK2NsYXNzIFJl
dHVybihFeHByKToKKyAgICBwYXNzCisKKworY2xhc3MgRGVsZXRlKEV4cHIpOgorICAgIHBhc3MK
KworCitjbGFzcyBGcmllbmQoRXhwcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0YXJ0LCBl
bmQsIGV4cHIsIG5hbWVzcGFjZSk6CisgICAgICAgIEV4cHIuX19pbml0X18oc2VsZiwgc3RhcnQs
IGVuZCwgZXhwcikKKyAgICAgICAgc2VsZi5uYW1lc3BhY2UgPSBuYW1lc3BhY2VbOl0KKworCitj
bGFzcyBVc2luZyhOb2RlKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc3RhcnQsIGVuZCwgbmFt
ZXMpOgorICAgICAgICBOb2RlLl9faW5pdF9fKHNlbGYsIHN0YXJ0LCBlbmQpCisgICAgICAgIHNl
bGYubmFtZXMgPSBuYW1lcworCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVy
biBzZWxmLl9TdHJpbmdIZWxwZXIoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHN0cihzZWxmLm5h
bWVzKSkKKworCitjbGFzcyBQYXJhbWV0ZXIoTm9kZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IHN0YXJ0LCBlbmQsIG5hbWUsIHBhcmFtZXRlcl90eXBlLCBkZWZhdWx0KToKKyAgICAgICAgTm9k
ZS5fX2luaXRfXyhzZWxmLCBzdGFydCwgZW5kKQorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisg
ICAgICAgIHNlbGYudHlwZSA9IHBhcmFtZXRlcl90eXBlCisgICAgICAgIHNlbGYuZGVmYXVsdCA9
IGRlZmF1bHQKKworICAgIGRlZiBSZXF1aXJlcyhzZWxmLCBub2RlKToKKyAgICAgICAgIyBUT0RP
KG5ub3J3aXR6KTogaGFuZGxlIG5hbWVzcGFjZXMsIGV0Yy4KKyAgICAgICAgcmV0dXJuIHNlbGYu
dHlwZS5uYW1lID09IG5vZGUubmFtZQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAg
IG5hbWUgPSBzdHIoc2VsZi50eXBlKQorICAgICAgICBzdWZmaXggPSAnJXMgJXMnICUgKG5hbWUs
IHNlbGYubmFtZSkKKyAgICAgICAgaWYgc2VsZi5kZWZhdWx0OgorICAgICAgICAgICAgc3VmZml4
ICs9ICcgPSAnICsgJycuam9pbihbZC5uYW1lIGZvciBkIGluIHNlbGYuZGVmYXVsdF0pCisgICAg
ICAgIHJldHVybiBzZWxmLl9TdHJpbmdIZWxwZXIoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHN1
ZmZpeCkKKworCitjbGFzcyBfR2VuZXJpY0RlY2xhcmF0aW9uKE5vZGUpOgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBzdGFydCwgZW5kLCBuYW1lLCBuYW1lc3BhY2UpOgorICAgICAgICBOb2RlLl9f
aW5pdF9fKHNlbGYsIHN0YXJ0LCBlbmQpCisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAg
ICAgc2VsZi5uYW1lc3BhY2UgPSBuYW1lc3BhY2VbOl0KKworICAgIGRlZiBGdWxsTmFtZShzZWxm
KToKKyAgICAgICAgcHJlZml4ID0gJycKKyAgICAgICAgaWYgc2VsZi5uYW1lc3BhY2UgYW5kIHNl
bGYubmFtZXNwYWNlWy0xXToKKyAgICAgICAgICAgIHByZWZpeCA9ICc6Oicuam9pbihzZWxmLm5h
bWVzcGFjZSkgKyAnOjonCisgICAgICAgIHJldHVybiBwcmVmaXggKyBzZWxmLm5hbWUKKworICAg
IGRlZiBfVHlwZVN0cmluZ0hlbHBlcihzZWxmLCBzdWZmaXgpOgorICAgICAgICBpZiBzZWxmLm5h
bWVzcGFjZToKKyAgICAgICAgICAgIG5hbWVzID0gW24gb3IgJzxhbm9ueW1vdXM+JyBmb3IgbiBp
biBzZWxmLm5hbWVzcGFjZV0KKyAgICAgICAgICAgIHN1ZmZpeCArPSAnIGluICcgKyAnOjonLmpv
aW4obmFtZXMpCisgICAgICAgIHJldHVybiBzZWxmLl9TdHJpbmdIZWxwZXIoc2VsZi5fX2NsYXNz
X18uX19uYW1lX18sIHN1ZmZpeCkKKworCisjIFRPRE8obm5vcndpdHopOiBtZXJnZSB3aXRoIFBh
cmFtZXRlciBpbiBzb21lIHdheT8KK2NsYXNzIFZhcmlhYmxlRGVjbGFyYXRpb24oX0dlbmVyaWNE
ZWNsYXJhdGlvbik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0YXJ0LCBlbmQsIG5hbWUsIHZh
cl90eXBlLCBpbml0aWFsX3ZhbHVlLCBuYW1lc3BhY2UpOgorICAgICAgICBfR2VuZXJpY0RlY2xh
cmF0aW9uLl9faW5pdF9fKHNlbGYsIHN0YXJ0LCBlbmQsIG5hbWUsIG5hbWVzcGFjZSkKKyAgICAg
ICAgc2VsZi50eXBlID0gdmFyX3R5cGUKKyAgICAgICAgc2VsZi5pbml0aWFsX3ZhbHVlID0gaW5p
dGlhbF92YWx1ZQorCisgICAgZGVmIFJlcXVpcmVzKHNlbGYsIG5vZGUpOgorICAgICAgICAjIFRP
RE8obm5vcndpdHopOiBoYW5kbGUgbmFtZXNwYWNlcywgZXRjLgorICAgICAgICByZXR1cm4gc2Vs
Zi50eXBlLm5hbWUgPT0gbm9kZS5uYW1lCisKKyAgICBkZWYgVG9TdHJpbmcoc2VsZik6CisgICAg
ICAgICIiIlJldHVybiBhIHN0cmluZyB0aGF0IHRyaWVzIHRvIHJlY29uc3RpdHV0ZSB0aGUgdmFy
aWFibGUgZGVjbC4iIiIKKyAgICAgICAgc3VmZml4ID0gJyVzICVzJyAlIChzZWxmLnR5cGUsIHNl
bGYubmFtZSkKKyAgICAgICAgaWYgc2VsZi5pbml0aWFsX3ZhbHVlOgorICAgICAgICAgICAgc3Vm
Zml4ICs9ICcgPSAnICsgc2VsZi5pbml0aWFsX3ZhbHVlCisgICAgICAgIHJldHVybiBzdWZmaXgK
KworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fU3RyaW5nSGVs
cGVyKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLlRvU3RyaW5nKCkpCisKKworY2xhc3Mg
VHlwZWRlZihfR2VuZXJpY0RlY2xhcmF0aW9uKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc3Rh
cnQsIGVuZCwgbmFtZSwgYWxpYXMsIG5hbWVzcGFjZSk6CisgICAgICAgIF9HZW5lcmljRGVjbGFy
YXRpb24uX19pbml0X18oc2VsZiwgc3RhcnQsIGVuZCwgbmFtZSwgbmFtZXNwYWNlKQorICAgICAg
ICBzZWxmLmFsaWFzID0gYWxpYXMKKworICAgIGRlZiBJc0RlZmluaXRpb24oc2VsZik6CisgICAg
ICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgSXNFeHBvcnRhYmxlKHNlbGYpOgorICAgICAgICBy
ZXR1cm4gVHJ1ZQorCisgICAgZGVmIFJlcXVpcmVzKHNlbGYsIG5vZGUpOgorICAgICAgICAjIFRP
RE8obm5vcndpdHopOiBoYW5kbGUgbmFtZXNwYWNlcywgZXRjLgorICAgICAgICBuYW1lID0gbm9k
ZS5uYW1lCisgICAgICAgIGZvciB0b2tlbiBpbiBzZWxmLmFsaWFzOgorICAgICAgICAgICAgaWYg
dG9rZW4gaXMgbm90IE5vbmUgYW5kIG5hbWUgPT0gdG9rZW4ubmFtZToKKyAgICAgICAgICAgICAg
ICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBfX3N0cl9fKHNl
bGYpOgorICAgICAgICBzdWZmaXggPSAnJXMsICVzJyAlIChzZWxmLm5hbWUsIHNlbGYuYWxpYXMp
CisgICAgICAgIHJldHVybiBzZWxmLl9UeXBlU3RyaW5nSGVscGVyKHN1ZmZpeCkKKworCitjbGFz
cyBfTmVzdGVkVHlwZShfR2VuZXJpY0RlY2xhcmF0aW9uKToKKyAgICBkZWYgX19pbml0X18oc2Vs
Ziwgc3RhcnQsIGVuZCwgbmFtZSwgZmllbGRzLCBuYW1lc3BhY2UpOgorICAgICAgICBfR2VuZXJp
Y0RlY2xhcmF0aW9uLl9faW5pdF9fKHNlbGYsIHN0YXJ0LCBlbmQsIG5hbWUsIG5hbWVzcGFjZSkK
KyAgICAgICAgc2VsZi5maWVsZHMgPSBmaWVsZHMKKworICAgIGRlZiBJc0RlZmluaXRpb24oc2Vs
Zik6CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgSXNFeHBvcnRhYmxlKHNlbGYpOgor
ICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHN1
ZmZpeCA9ICclcywgeyVzfScgJSAoc2VsZi5uYW1lLCBzZWxmLmZpZWxkcykKKyAgICAgICAgcmV0
dXJuIHNlbGYuX1R5cGVTdHJpbmdIZWxwZXIoc3VmZml4KQorCisKK2NsYXNzIFVuaW9uKF9OZXN0
ZWRUeXBlKToKKyAgICBwYXNzCisKKworY2xhc3MgRW51bShfTmVzdGVkVHlwZSk6CisgICAgcGFz
cworCisKK2NsYXNzIENsYXNzKF9HZW5lcmljRGVjbGFyYXRpb24pOgorICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBzdGFydCwgZW5kLCBuYW1lLCBiYXNlcywgdGVtcGxhdGVkX3R5cGVzLCBib2R5LCBu
YW1lc3BhY2UpOgorICAgICAgICBfR2VuZXJpY0RlY2xhcmF0aW9uLl9faW5pdF9fKHNlbGYsIHN0
YXJ0LCBlbmQsIG5hbWUsIG5hbWVzcGFjZSkKKyAgICAgICAgc2VsZi5iYXNlcyA9IGJhc2VzCisg
ICAgICAgIHNlbGYuYm9keSA9IGJvZHkKKyAgICAgICAgc2VsZi50ZW1wbGF0ZWRfdHlwZXMgPSB0
ZW1wbGF0ZWRfdHlwZXMKKworICAgIGRlZiBJc0RlY2xhcmF0aW9uKHNlbGYpOgorICAgICAgICBy
ZXR1cm4gc2VsZi5iYXNlcyBpcyBOb25lIGFuZCBzZWxmLmJvZHkgaXMgTm9uZQorCisgICAgZGVm
IElzRGVmaW5pdGlvbihzZWxmKToKKyAgICAgICAgcmV0dXJuIG5vdCBzZWxmLklzRGVjbGFyYXRp
b24oKQorCisgICAgZGVmIElzRXhwb3J0YWJsZShzZWxmKToKKyAgICAgICAgcmV0dXJuIG5vdCBz
ZWxmLklzRGVjbGFyYXRpb24oKQorCisgICAgZGVmIFJlcXVpcmVzKHNlbGYsIG5vZGUpOgorICAg
ICAgICAjIFRPRE8obm5vcndpdHopOiBoYW5kbGUgbmFtZXNwYWNlcywgZXRjLgorICAgICAgICBp
ZiBzZWxmLmJhc2VzOgorICAgICAgICAgICAgZm9yIHRva2VuX2xpc3QgaW4gc2VsZi5iYXNlczoK
KyAgICAgICAgICAgICAgICAjIFRPRE8obm5vcndpdHopOiBiYXNlcyBhcmUgdG9rZW5zLCBkbyBu
YW1lIGNvbXBhcmlzaW9uLgorICAgICAgICAgICAgICAgIGZvciB0b2tlbiBpbiB0b2tlbl9saXN0
OgorICAgICAgICAgICAgICAgICAgICBpZiB0b2tlbi5uYW1lID09IG5vZGUubmFtZToKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICMgVE9ETyhubm9yd2l0eik6
IHNlYXJjaCBpbiBib2R5IHRvby4KKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgX19z
dHJfXyhzZWxmKToKKyAgICAgICAgbmFtZSA9IHNlbGYubmFtZQorICAgICAgICBpZiBzZWxmLnRl
bXBsYXRlZF90eXBlczoKKyAgICAgICAgICAgIG5hbWUgKz0gJzwlcz4nICUgc2VsZi50ZW1wbGF0
ZWRfdHlwZXMKKyAgICAgICAgc3VmZml4ID0gJyVzLCAlcywgJXMnICUgKG5hbWUsIHNlbGYuYmFz
ZXMsIHNlbGYuYm9keSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX1R5cGVTdHJpbmdIZWxwZXIoc3Vm
Zml4KQorCisKK2NsYXNzIFN0cnVjdChDbGFzcyk6CisgICAgcGFzcworCisKK2NsYXNzIEZ1bmN0
aW9uKF9HZW5lcmljRGVjbGFyYXRpb24pOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdGFydCwg
ZW5kLCBuYW1lLCByZXR1cm5fdHlwZSwgcGFyYW1ldGVycywKKyAgICAgICAgICAgICAgICAgbW9k
aWZpZXJzLCB0ZW1wbGF0ZWRfdHlwZXMsIGJvZHksIG5hbWVzcGFjZSk6CisgICAgICAgIF9HZW5l
cmljRGVjbGFyYXRpb24uX19pbml0X18oc2VsZiwgc3RhcnQsIGVuZCwgbmFtZSwgbmFtZXNwYWNl
KQorICAgICAgICBjb252ZXJ0ZXIgPSBUeXBlQ29udmVydGVyKG5hbWVzcGFjZSkKKyAgICAgICAg
c2VsZi5yZXR1cm5fdHlwZSA9IGNvbnZlcnRlci5DcmVhdGVSZXR1cm5UeXBlKHJldHVybl90eXBl
KQorICAgICAgICBzZWxmLnBhcmFtZXRlcnMgPSBjb252ZXJ0ZXIuVG9QYXJhbWV0ZXJzKHBhcmFt
ZXRlcnMpCisgICAgICAgIHNlbGYubW9kaWZpZXJzID0gbW9kaWZpZXJzCisgICAgICAgIHNlbGYu
Ym9keSA9IGJvZHkKKyAgICAgICAgc2VsZi50ZW1wbGF0ZWRfdHlwZXMgPSB0ZW1wbGF0ZWRfdHlw
ZXMKKworICAgIGRlZiBJc0RlY2xhcmF0aW9uKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5i
b2R5IGlzIE5vbmUKKworICAgIGRlZiBJc0RlZmluaXRpb24oc2VsZik6CisgICAgICAgIHJldHVy
biBzZWxmLmJvZHkgaXMgbm90IE5vbmUKKworICAgIGRlZiBJc0V4cG9ydGFibGUoc2VsZik6Cisg
ICAgICAgIGlmIHNlbGYucmV0dXJuX3R5cGUgYW5kICdzdGF0aWMnIGluIHNlbGYucmV0dXJuX3R5
cGUubW9kaWZpZXJzOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBO
b25lIG5vdCBpbiBzZWxmLm5hbWVzcGFjZQorCisgICAgZGVmIFJlcXVpcmVzKHNlbGYsIG5vZGUp
OgorICAgICAgICBpZiBzZWxmLnBhcmFtZXRlcnM6CisgICAgICAgICAgICAjIFRPRE8obm5vcndp
dHopOiBwYXJhbWV0ZXJzIGFyZSB0b2tlbnMsIGRvIG5hbWUgY29tcGFyaXNpb24uCisgICAgICAg
ICAgICBmb3IgcCBpbiBzZWxmLnBhcmFtZXRlcnM6CisgICAgICAgICAgICAgICAgaWYgcC5uYW1l
ID09IG5vZGUubmFtZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAg
IyBUT0RPKG5ub3J3aXR6KTogc2VhcmNoIGluIGJvZHkgdG9vLgorICAgICAgICByZXR1cm4gRmFs
c2UKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICAjIFRPRE8obm5vcndpdHopOiBh
ZGQgdGVtcGxhdGVkX3R5cGVzLgorICAgICAgICBzdWZmaXggPSAoJyVzICVzKCVzKSwgMHglMDJ4
LCAlcycgJQorICAgICAgICAgICAgICAgICAgKHNlbGYucmV0dXJuX3R5cGUsIHNlbGYubmFtZSwg
c2VsZi5wYXJhbWV0ZXJzLAorICAgICAgICAgICAgICAgICAgIHNlbGYubW9kaWZpZXJzLCBzZWxm
LmJvZHkpKQorICAgICAgICByZXR1cm4gc2VsZi5fVHlwZVN0cmluZ0hlbHBlcihzdWZmaXgpCisK
KworY2xhc3MgTWV0aG9kKEZ1bmN0aW9uKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc3RhcnQs
IGVuZCwgbmFtZSwgaW5fY2xhc3MsIHJldHVybl90eXBlLCBwYXJhbWV0ZXJzLAorICAgICAgICAg
ICAgICAgICBtb2RpZmllcnMsIHRlbXBsYXRlZF90eXBlcywgYm9keSwgbmFtZXNwYWNlKToKKyAg
ICAgICAgRnVuY3Rpb24uX19pbml0X18oc2VsZiwgc3RhcnQsIGVuZCwgbmFtZSwgcmV0dXJuX3R5
cGUsIHBhcmFtZXRlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVycywgdGVt
cGxhdGVkX3R5cGVzLCBib2R5LCBuYW1lc3BhY2UpCisgICAgICAgICMgVE9ETyhubm9yd2l0eik6
IGluX2NsYXNzIGNvdWxkIGFsc28gYmUgYSBuYW1lc3BhY2Ugd2hpY2ggY2FuCisgICAgICAgICMg
bWVzcyB1cCBmaW5kaW5nIGZ1bmN0aW9ucyBwcm9wZXJseS4KKyAgICAgICAgc2VsZi5pbl9jbGFz
cyA9IGluX2NsYXNzCisKKworY2xhc3MgVHlwZShfR2VuZXJpY0RlY2xhcmF0aW9uKToKKyAgICAi
IiJUeXBlIHVzZWQgZm9yIGFueSB2YXJpYWJsZSAoZWcgY2xhc3MsIHByaW1pdGl2ZSwgc3RydWN0
LCBldGMpLiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0YXJ0LCBlbmQsIG5hbWUsIHRl
bXBsYXRlZF90eXBlcywgbW9kaWZpZXJzLAorICAgICAgICAgICAgICAgICByZWZlcmVuY2UsIHBv
aW50ZXIsIGFycmF5KToKKyAgICAgICAgIiIiCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgbmFt
ZTogc3RyIG5hbWUgb2YgbWFpbiB0eXBlCisgICAgICAgICAgdGVtcGxhdGVkX3R5cGVzOiBbQ2xh
c3MgKFR5cGU/KV0gdGVtcGxhdGUgdHlwZSBpbmZvIGJldHdlZW4gPD4KKyAgICAgICAgICBtb2Rp
ZmllcnM6IFtzdHJdIHR5cGUgbW9kaWZpZXJzIChrZXl3b3JkcykgZWcsIGNvbnN0LCBtdXRhYmxl
LCBldGMuCisgICAgICAgICAgcmVmZXJlbmNlLCBwb2ludGVyLCBhcnJheTogYm9vbHMKKyAgICAg
ICAgIiIiCisgICAgICAgIF9HZW5lcmljRGVjbGFyYXRpb24uX19pbml0X18oc2VsZiwgc3RhcnQs
IGVuZCwgbmFtZSwgW10pCisgICAgICAgIHNlbGYudGVtcGxhdGVkX3R5cGVzID0gdGVtcGxhdGVk
X3R5cGVzCisgICAgICAgIGlmIG5vdCBuYW1lIGFuZCBtb2RpZmllcnM6CisgICAgICAgICAgICBz
ZWxmLm5hbWUgPSBtb2RpZmllcnMucG9wKCkKKyAgICAgICAgc2VsZi5tb2RpZmllcnMgPSBtb2Rp
ZmllcnMKKyAgICAgICAgc2VsZi5yZWZlcmVuY2UgPSByZWZlcmVuY2UKKyAgICAgICAgc2VsZi5w
b2ludGVyID0gcG9pbnRlcgorICAgICAgICBzZWxmLmFycmF5ID0gYXJyYXkKKworICAgIGRlZiBf
X3N0cl9fKHNlbGYpOgorICAgICAgICBwcmVmaXggPSAnJworICAgICAgICBpZiBzZWxmLm1vZGlm
aWVyczoKKyAgICAgICAgICAgIHByZWZpeCA9ICcgJy5qb2luKHNlbGYubW9kaWZpZXJzKSArICcg
JworICAgICAgICBuYW1lID0gc3RyKHNlbGYubmFtZSkKKyAgICAgICAgaWYgc2VsZi50ZW1wbGF0
ZWRfdHlwZXM6CisgICAgICAgICAgICBuYW1lICs9ICc8JXM+JyAlIHNlbGYudGVtcGxhdGVkX3R5
cGVzCisgICAgICAgIHN1ZmZpeCA9IHByZWZpeCArIG5hbWUKKyAgICAgICAgaWYgc2VsZi5yZWZl
cmVuY2U6CisgICAgICAgICAgICBzdWZmaXggKz0gJyYnCisgICAgICAgIGlmIHNlbGYucG9pbnRl
cjoKKyAgICAgICAgICAgIHN1ZmZpeCArPSAnKicKKyAgICAgICAgaWYgc2VsZi5hcnJheToKKyAg
ICAgICAgICAgIHN1ZmZpeCArPSAnW10nCisgICAgICAgIHJldHVybiBzZWxmLl9UeXBlU3RyaW5n
SGVscGVyKHN1ZmZpeCkKKworICAgICMgQnkgZGVmaW5pdGlvbiwgSXMqIGFyZSBhbHdheXMgRmFs
c2UuICBBIFR5cGUgY2FuIG9ubHkgZXhpc3QgaW4KKyAgICAjIHNvbWUgc29ydCBvZiB2YXJpYWJs
ZSBkZWNsYXJhdGlvbiwgcGFyYW1ldGVyLCBvciByZXR1cm4gdmFsdWUuCisgICAgZGVmIElzRGVj
bGFyYXRpb24oc2VsZik6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIElzRGVmaW5p
dGlvbihzZWxmKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgSXNFeHBvcnRhYmxl
KHNlbGYpOgorICAgICAgICByZXR1cm4gRmFsc2UKKworCitjbGFzcyBUeXBlQ29udmVydGVyKG9i
amVjdCk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZXNwYWNlX3N0YWNrKToKKyAgICAg
ICAgc2VsZi5uYW1lc3BhY2Vfc3RhY2sgPSBuYW1lc3BhY2Vfc3RhY2sKKworICAgIGRlZiBfR2V0
VGVtcGxhdGVFbmQoc2VsZiwgdG9rZW5zLCBzdGFydCk6CisgICAgICAgIGNvdW50ID0gMQorICAg
ICAgICBlbmQgPSBzdGFydAorICAgICAgICB3aGlsZSAxOgorICAgICAgICAgICAgdG9rZW4gPSB0
b2tlbnNbZW5kXQorICAgICAgICAgICAgZW5kICs9IDEKKyAgICAgICAgICAgIGlmIHRva2VuLm5h
bWUgPT0gJzwnOgorICAgICAgICAgICAgICAgIGNvdW50ICs9IDEKKyAgICAgICAgICAgIGVsaWYg
dG9rZW4ubmFtZSA9PSAnPic6CisgICAgICAgICAgICAgICAgY291bnQgLT0gMQorICAgICAgICAg
ICAgICAgIGlmIGNvdW50ID09IDA6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAg
IHJldHVybiB0b2tlbnNbc3RhcnQ6ZW5kLTFdLCBlbmQKKworICAgIGRlZiBUb1R5cGUoc2VsZiwg
dG9rZW5zKToKKyAgICAgICAgIiIiQ29udmVydCBbVG9rZW4sLi4uXSB0byBbQ2xhc3MoLi4uKSwg
XSB1c2VmdWwgZm9yIGJhc2UgY2xhc3Nlcy4KKyAgICAgICAgRm9yIGV4YW1wbGUsIGNvZGUgbGlr
ZSBjbGFzcyBGb28gOiBwdWJsaWMgQmFyPHgsIHk+IHsgLi4uIH07CisgICAgICAgIHRoZSAiQmFy
PHgsIHk+IiBwb3J0aW9uIGdldHMgY29udmVydGVkIHRvIGFuIEFTVC4KKworICAgICAgICBSZXR1
cm5zOgorICAgICAgICAgIFtDbGFzcyguLi4pLCAuLi5dCisgICAgICAgICIiIgorICAgICAgICBy
ZXN1bHQgPSBbXQorICAgICAgICBuYW1lX3Rva2VucyA9IFtdCisgICAgICAgIHJlZmVyZW5jZSA9
IHBvaW50ZXIgPSBhcnJheSA9IEZhbHNlCisKKyAgICAgICAgZGVmIEFkZFR5cGUodGVtcGxhdGVk
X3R5cGVzKToKKyAgICAgICAgICAgICMgUGFydGl0aW9uIHRva2VucyBpbnRvIG5hbWUgYW5kIG1v
ZGlmaWVyIHRva2Vucy4KKyAgICAgICAgICAgIG5hbWVzID0gW10KKyAgICAgICAgICAgIG1vZGlm
aWVycyA9IFtdCisgICAgICAgICAgICBmb3IgdCBpbiBuYW1lX3Rva2VuczoKKyAgICAgICAgICAg
ICAgICBpZiBrZXl3b3Jkcy5Jc0tleXdvcmQodC5uYW1lKToKKyAgICAgICAgICAgICAgICAgICAg
bW9kaWZpZXJzLmFwcGVuZCh0Lm5hbWUpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgICAgICAgICAgbmFtZXMuYXBwZW5kKHQubmFtZSkKKyAgICAgICAgICAgIG5hbWUgPSAnJy5q
b2luKG5hbWVzKQorICAgICAgICAgICAgaWYgbmFtZV90b2tlbnM6CisgICAgICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZChUeXBlKG5hbWVfdG9rZW5zWzBdLnN0YXJ0LCBuYW1lX3Rva2Vuc1stMV0u
ZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCB0ZW1wbGF0ZWRf
dHlwZXMsIG1vZGlmaWVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVm
ZXJlbmNlLCBwb2ludGVyLCBhcnJheSkpCisgICAgICAgICAgICBkZWwgbmFtZV90b2tlbnNbOl0K
KworICAgICAgICBpID0gMAorICAgICAgICBlbmQgPSBsZW4odG9rZW5zKQorICAgICAgICB3aGls
ZSBpIDwgZW5kOgorICAgICAgICAgICAgdG9rZW4gPSB0b2tlbnNbaV0KKyAgICAgICAgICAgIGlm
IHRva2VuLm5hbWUgPT0gJzwnOgorICAgICAgICAgICAgICAgIG5ld190b2tlbnMsIG5ld19lbmQg
PSBzZWxmLl9HZXRUZW1wbGF0ZUVuZCh0b2tlbnMsIGkrMSkKKyAgICAgICAgICAgICAgICBBZGRU
eXBlKHNlbGYuVG9UeXBlKG5ld190b2tlbnMpKQorICAgICAgICAgICAgICAgICMgSWYgdGhlcmUg
aXMgYSBjb21tYSBhZnRlciB0aGUgdGVtcGxhdGUsIHdlIG5lZWQgdG8gY29uc3VtZQorICAgICAg
ICAgICAgICAgICMgdGhhdCBoZXJlIG90aGVyd2lzZSBpdCBiZWNvbWVzIHBhcnQgb2YgdGhlIG5h
bWUuCisgICAgICAgICAgICAgICAgaSA9IG5ld19lbmQKKyAgICAgICAgICAgICAgICByZWZlcmVu
Y2UgPSBwb2ludGVyID0gYXJyYXkgPSBGYWxzZQorICAgICAgICAgICAgZWxpZiB0b2tlbi5uYW1l
ID09ICcsJzoKKyAgICAgICAgICAgICAgICBBZGRUeXBlKFtdKQorICAgICAgICAgICAgICAgIHJl
ZmVyZW5jZSA9IHBvaW50ZXIgPSBhcnJheSA9IEZhbHNlCisgICAgICAgICAgICBlbGlmIHRva2Vu
Lm5hbWUgPT0gJyonOgorICAgICAgICAgICAgICAgIHBvaW50ZXIgPSBUcnVlCisgICAgICAgICAg
ICBlbGlmIHRva2VuLm5hbWUgPT0gJyYnOgorICAgICAgICAgICAgICAgIHJlZmVyZW5jZSA9IFRy
dWUKKyAgICAgICAgICAgIGVsaWYgdG9rZW4ubmFtZSA9PSAnWyc6CisgICAgICAgICAgICAgICBw
b2ludGVyID0gVHJ1ZQorICAgICAgICAgICAgZWxpZiB0b2tlbi5uYW1lID09ICddJzoKKyAgICAg
ICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG5hbWVf
dG9rZW5zLmFwcGVuZCh0b2tlbikKKyAgICAgICAgICAgIGkgKz0gMQorCisgICAgICAgIGlmIG5h
bWVfdG9rZW5zOgorICAgICAgICAgICAgIyBObyAnPCcgaW4gdGhlIHRva2VucywganVzdCBhIHNp
bXBsZSBuYW1lIGFuZCBubyB0ZW1wbGF0ZS4KKyAgICAgICAgICAgIEFkZFR5cGUoW10pCisgICAg
ICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiBEZWNsYXJhdGlvblRvUGFydHMoc2VsZiwgcGFy
dHMsIG5lZWRzX25hbWVfcmVtb3ZlZCk6CisgICAgICAgIG5hbWUgPSBOb25lCisgICAgICAgIGRl
ZmF1bHQgPSBbXQorICAgICAgICBpZiBuZWVkc19uYW1lX3JlbW92ZWQ6CisgICAgICAgICAgICAj
IEhhbmRsZSBkZWZhdWx0IChpbml0aWFsKSB2YWx1ZXMgcHJvcGVybHkuCisgICAgICAgICAgICBm
b3IgaSwgdCBpbiBlbnVtZXJhdGUocGFydHMpOgorICAgICAgICAgICAgICAgIGlmIHQubmFtZSA9
PSAnPSc6CisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgPSBwYXJ0c1tpKzE6XQorICAgICAg
ICAgICAgICAgICAgICBuYW1lID0gcGFydHNbaS0xXS5uYW1lCisgICAgICAgICAgICAgICAgICAg
IGlmIG5hbWUgPT0gJ10nIGFuZCBwYXJ0c1tpLTJdLm5hbWUgPT0gJ1snOgorICAgICAgICAgICAg
ICAgICAgICAgICAgbmFtZSA9IHBhcnRzW2ktM10ubmFtZQorICAgICAgICAgICAgICAgICAgICAg
ICAgaSAtPSAxCisgICAgICAgICAgICAgICAgICAgIHBhcnRzID0gcGFydHNbOmktMV0KKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg
aWYgcGFydHNbLTFdLnRva2VuX3R5cGUgPT0gdG9rZW5pemUuTkFNRToKKyAgICAgICAgICAgICAg
ICAgICAgbmFtZSA9IHBhcnRzLnBvcCgpLm5hbWUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgICAgICAjIFRPRE8obm5vcndpdHopOiB0aGlzIGlzIGEgaGFjayB0aGF0IGhh
cHBlbnMgZm9yIGNvZGUgbGlrZQorICAgICAgICAgICAgICAgICAgICAjIFJlZ2lzdGVyKEZvbzxU
Pik7IHdoZXJlIGl0IHRoaW5rcyB0aGlzIGlzIGEgZnVuY3Rpb24gY2FsbAorICAgICAgICAgICAg
ICAgICAgICAjIGJ1dCBpdCdzIGFjdHVhbGx5IGEgZGVjbGFyYXRpb24uCisgICAgICAgICAgICAg
ICAgICAgIG5hbWUgPSAnPz8/JworICAgICAgICBtb2RpZmllcnMgPSBbXQorICAgICAgICB0eXBl
X25hbWUgPSBbXQorICAgICAgICBvdGhlcl90b2tlbnMgPSBbXQorICAgICAgICB0ZW1wbGF0ZWRf
dHlwZXMgPSBbXQorICAgICAgICBpID0gMAorICAgICAgICBlbmQgPSBsZW4ocGFydHMpCisgICAg
ICAgIHdoaWxlIGkgPCBlbmQ6CisgICAgICAgICAgICBwID0gcGFydHNbaV0KKyAgICAgICAgICAg
IGlmIGtleXdvcmRzLklzS2V5d29yZChwLm5hbWUpOgorICAgICAgICAgICAgICAgIG1vZGlmaWVy
cy5hcHBlbmQocC5uYW1lKQorICAgICAgICAgICAgZWxpZiBwLm5hbWUgPT0gJzwnOgorICAgICAg
ICAgICAgICAgIHRlbXBsYXRlZF90b2tlbnMsIG5ld19lbmQgPSBzZWxmLl9HZXRUZW1wbGF0ZUVu
ZChwYXJ0cywgaSsxKQorICAgICAgICAgICAgICAgIHRlbXBsYXRlZF90eXBlcyA9IHNlbGYuVG9U
eXBlKHRlbXBsYXRlZF90b2tlbnMpCisgICAgICAgICAgICAgICAgaSA9IG5ld19lbmQgLSAxCisg
ICAgICAgICAgICAgICAgIyBEb24ndCBhZGQgYSBzcHVyaW91cyA6OiB0byBkYXRhIG1lbWJlcnMg
YmVpbmcgaW5pdGlhbGl6ZWQuCisgICAgICAgICAgICAgICAgbmV4dF9pbmRleCA9IGkgKyAxCisg
ICAgICAgICAgICAgICAgaWYgbmV4dF9pbmRleCA8IGVuZCBhbmQgcGFydHNbbmV4dF9pbmRleF0u
bmFtZSA9PSAnOjonOgorICAgICAgICAgICAgICAgICAgICBpICs9IDEKKyAgICAgICAgICAgIGVs
aWYgcC5uYW1lIGluICgnWycsICddJywgJz0nKToKKyAgICAgICAgICAgICAgICAjIFRoZXNlIGFy
ZSBoYW5kbGVkIGVsc2V3aGVyZS4KKyAgICAgICAgICAgICAgICBvdGhlcl90b2tlbnMuYXBwZW5k
KHApCisgICAgICAgICAgICBlbGlmIHAubmFtZSBub3QgaW4gKCcqJywgJyYnLCAnPicpOgorICAg
ICAgICAgICAgICAgICMgRW5zdXJlIHRoYXQgbmFtZXMgaGF2ZSBhIHNwYWNlIGJldHdlZW4gdGhl
bS4KKyAgICAgICAgICAgICAgICBpZiAodHlwZV9uYW1lIGFuZCB0eXBlX25hbWVbLTFdLnRva2Vu
X3R5cGUgPT0gdG9rZW5pemUuTkFNRSBhbmQKKyAgICAgICAgICAgICAgICAgICAgcC50b2tlbl90
eXBlID09IHRva2VuaXplLk5BTUUpOgorICAgICAgICAgICAgICAgICAgICB0eXBlX25hbWUuYXBw
ZW5kKHRva2VuaXplLlRva2VuKHRva2VuaXplLlNZTlRBWCwgJyAnLCAwLCAwKSkKKyAgICAgICAg
ICAgICAgICB0eXBlX25hbWUuYXBwZW5kKHApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgICAgIG90aGVyX3Rva2Vucy5hcHBlbmQocCkKKyAgICAgICAgICAgIGkgKz0gMQorICAgICAg
ICB0eXBlX25hbWUgPSAnJy5qb2luKFt0Lm5hbWUgZm9yIHQgaW4gdHlwZV9uYW1lXSkKKyAgICAg
ICAgcmV0dXJuIG5hbWUsIHR5cGVfbmFtZSwgdGVtcGxhdGVkX3R5cGVzLCBtb2RpZmllcnMsIGRl
ZmF1bHQsIG90aGVyX3Rva2VucworCisgICAgZGVmIFRvUGFyYW1ldGVycyhzZWxmLCB0b2tlbnMp
OgorICAgICAgICBpZiBub3QgdG9rZW5zOgorICAgICAgICAgICAgcmV0dXJuIFtdCisKKyAgICAg
ICAgcmVzdWx0ID0gW10KKyAgICAgICAgbmFtZSA9IHR5cGVfbmFtZSA9ICcnCisgICAgICAgIHR5
cGVfbW9kaWZpZXJzID0gW10KKyAgICAgICAgcG9pbnRlciA9IHJlZmVyZW5jZSA9IGFycmF5ID0g
RmFsc2UKKyAgICAgICAgZmlyc3RfdG9rZW4gPSBOb25lCisgICAgICAgIGRlZmF1bHQgPSBbXQor
CisgICAgICAgIGRlZiBBZGRQYXJhbWV0ZXIoZW5kKToKKyAgICAgICAgICAgIGlmIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgZGVsIGRlZmF1bHRbMF0gICMgUmVtb3ZlIGZsYWcuCisgICAgICAg
ICAgICBwYXJ0cyA9IHNlbGYuRGVjbGFyYXRpb25Ub1BhcnRzKHR5cGVfbW9kaWZpZXJzLCBUcnVl
KQorICAgICAgICAgICAgKG5hbWUsIHR5cGVfbmFtZSwgdGVtcGxhdGVkX3R5cGVzLCBtb2RpZmll
cnMsCisgICAgICAgICAgICAgdW51c2VkX2RlZmF1bHQsIHVudXNlZF9vdGhlcl90b2tlbnMpID0g
cGFydHMKKyAgICAgICAgICAgIHBhcmFtZXRlcl90eXBlID0gVHlwZShmaXJzdF90b2tlbi5zdGFy
dCwgZmlyc3RfdG9rZW4uZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5
cGVfbmFtZSwgdGVtcGxhdGVkX3R5cGVzLCBtb2RpZmllcnMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVmZXJlbmNlLCBwb2ludGVyLCBhcnJheSkKKyAgICAgICAgICAgIHAg
PSBQYXJhbWV0ZXIoZmlyc3RfdG9rZW4uc3RhcnQsIGVuZCwgbmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFyYW1ldGVyX3R5cGUsIGRlZmF1bHQpCisgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKHApCisKKyAgICAgICAgdGVtcGxhdGVfY291bnQgPSAwCisgICAgICAgIGZvciBzIGlu
IHRva2VuczoKKyAgICAgICAgICAgIGlmIG5vdCBmaXJzdF90b2tlbjoKKyAgICAgICAgICAgICAg
ICBmaXJzdF90b2tlbiA9IHMKKyAgICAgICAgICAgIGlmIHMubmFtZSA9PSAnPCc6CisgICAgICAg
ICAgICAgICAgdGVtcGxhdGVfY291bnQgKz0gMQorICAgICAgICAgICAgZWxpZiBzLm5hbWUgPT0g
Jz4nOgorICAgICAgICAgICAgICAgIHRlbXBsYXRlX2NvdW50IC09IDEKKyAgICAgICAgICAgIGlm
IHRlbXBsYXRlX2NvdW50ID4gMDoKKyAgICAgICAgICAgICAgICB0eXBlX21vZGlmaWVycy5hcHBl
bmQocykKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBpZiBzLm5hbWUg
PT0gJywnOgorICAgICAgICAgICAgICAgIEFkZFBhcmFtZXRlcihzLnN0YXJ0KQorICAgICAgICAg
ICAgICAgIG5hbWUgPSB0eXBlX25hbWUgPSAnJworICAgICAgICAgICAgICAgIHR5cGVfbW9kaWZp
ZXJzID0gW10KKyAgICAgICAgICAgICAgICBwb2ludGVyID0gcmVmZXJlbmNlID0gYXJyYXkgPSBG
YWxzZQorICAgICAgICAgICAgICAgIGZpcnN0X3Rva2VuID0gTm9uZQorICAgICAgICAgICAgICAg
IGRlZmF1bHQgPSBbXQorICAgICAgICAgICAgZWxpZiBzLm5hbWUgPT0gJyonOgorICAgICAgICAg
ICAgICAgIHBvaW50ZXIgPSBUcnVlCisgICAgICAgICAgICBlbGlmIHMubmFtZSA9PSAnJic6Cisg
ICAgICAgICAgICAgICAgcmVmZXJlbmNlID0gVHJ1ZQorICAgICAgICAgICAgZWxpZiBzLm5hbWUg
PT0gJ1snOgorICAgICAgICAgICAgICAgIGFycmF5ID0gVHJ1ZQorICAgICAgICAgICAgZWxpZiBz
Lm5hbWUgPT0gJ10nOgorICAgICAgICAgICAgICAgIHBhc3MgICMgSnVzdCBkb24ndCBhZGQgdG8g
dHlwZV9tb2RpZmllcnMuCisgICAgICAgICAgICBlbGlmIHMubmFtZSA9PSAnPSc6CisgICAgICAg
ICAgICAgICAgIyBHb3QgYSBkZWZhdWx0IHZhbHVlLiAgQWRkIGFueSB2YWx1ZSAoTm9uZSkgYXMg
YSBmbGFnLgorICAgICAgICAgICAgICAgIGRlZmF1bHQuYXBwZW5kKE5vbmUpCisgICAgICAgICAg
ICBlbGlmIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgZGVmYXVsdC5hcHBlbmQocykKKyAgICAg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdHlwZV9tb2RpZmllcnMuYXBwZW5kKHMpCisg
ICAgICAgIEFkZFBhcmFtZXRlcih0b2tlbnNbLTFdLmVuZCkKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dAorCisgICAgZGVmIENyZWF0ZVJldHVyblR5cGUoc2VsZiwgcmV0dXJuX3R5cGVfc2VxKToKKyAg
ICAgICAgaWYgbm90IHJldHVybl90eXBlX3NlcToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisg
ICAgICAgIHN0YXJ0ID0gcmV0dXJuX3R5cGVfc2VxWzBdLnN0YXJ0CisgICAgICAgIGVuZCA9IHJl
dHVybl90eXBlX3NlcVstMV0uZW5kCisgICAgICAgIF8sIG5hbWUsIHRlbXBsYXRlZF90eXBlcywg
bW9kaWZpZXJzLCBkZWZhdWx0LCBvdGhlcl90b2tlbnMgPSBcCisgICAgICAgICAgIHNlbGYuRGVj
bGFyYXRpb25Ub1BhcnRzKHJldHVybl90eXBlX3NlcSwgRmFsc2UpCisgICAgICAgIG5hbWVzID0g
W24ubmFtZSBmb3IgbiBpbiBvdGhlcl90b2tlbnNdCisgICAgICAgIHJlZmVyZW5jZSA9ICcmJyBp
biBuYW1lcworICAgICAgICBwb2ludGVyID0gJyonIGluIG5hbWVzCisgICAgICAgIGFycmF5ID0g
J1snIGluIG5hbWVzCisgICAgICAgIHJldHVybiBUeXBlKHN0YXJ0LCBlbmQsIG5hbWUsIHRlbXBs
YXRlZF90eXBlcywgbW9kaWZpZXJzLAorICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2UsIHBv
aW50ZXIsIGFycmF5KQorCisgICAgZGVmIEdldFRlbXBsYXRlSW5kaWNlcyhzZWxmLCBuYW1lcyk6
CisgICAgICAgICMgbmFtZXMgaXMgYSBsaXN0IG9mIHN0cmluZ3MuCisgICAgICAgIHN0YXJ0ID0g
bmFtZXMuaW5kZXgoJzwnKQorICAgICAgICBlbmQgPSBsZW4obmFtZXMpIC0gMQorICAgICAgICB3
aGlsZSBlbmQgPiAwOgorICAgICAgICAgICAgaWYgbmFtZXNbZW5kXSA9PSAnPic6CisgICAgICAg
ICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVuZCAtPSAxCisgICAgICAgIHJldHVybiBzdGFy
dCwgZW5kKzEKKworY2xhc3MgQXN0QnVpbGRlcihvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCB0b2tlbl9zdHJlYW0sIGZpbGVuYW1lLCBpbl9jbGFzcz0nJywgdmlzaWJpbGl0eT1Ob25l
LAorICAgICAgICAgICAgICAgICBuYW1lc3BhY2Vfc3RhY2s9W10pOgorICAgICAgICBzZWxmLnRv
a2VucyA9IHRva2VuX3N0cmVhbQorICAgICAgICBzZWxmLmZpbGVuYW1lID0gZmlsZW5hbWUKKyAg
ICAgICAgIyBUT0RPKG5ub3J3aXR6KTogdXNlIGEgYmV0dGVyIGRhdGEgc3RydWN0dXJlIChkZXF1
ZSkgZm9yIHRoZSBxdWV1ZS4KKyAgICAgICAgIyBTd2l0Y2hpbmcgZGlyZWN0aW9ucyBvZiB0aGUg
InF1ZXVlIiBpbXByb3ZlZCBwZXJmIGJ5IGFib3V0IDI1JS4KKyAgICAgICAgIyBVc2luZyBhIGRl
cXVlIHNob3VsZCBiZSBldmVuIGJldHRlciBzaW5jZSB3ZSBhY2Nlc3MgZnJvbSBib3RoIHNpZGVz
LgorICAgICAgICBzZWxmLnRva2VuX3F1ZXVlID0gW10KKyAgICAgICAgc2VsZi5uYW1lc3BhY2Vf
c3RhY2sgPSBuYW1lc3BhY2Vfc3RhY2tbOl0KKyAgICAgICAgc2VsZi5pbl9jbGFzcyA9IGluX2Ns
YXNzCisgICAgICAgIGlmIGluX2NsYXNzIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLmluX2Ns
YXNzX25hbWVfb25seSA9IE5vbmUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuaW5f
Y2xhc3NfbmFtZV9vbmx5ID0gaW5fY2xhc3Muc3BsaXQoJzo6JylbLTFdCisgICAgICAgIHNlbGYu
dmlzaWJpbGl0eSA9IHZpc2liaWxpdHkKKyAgICAgICAgc2VsZi5pbl9mdW5jdGlvbiA9IEZhbHNl
CisgICAgICAgIHNlbGYuY3VycmVudF90b2tlbiA9IE5vbmUKKyAgICAgICAgIyBLZWVwIHRoZSBz
dGF0ZSB3aGV0aGVyIHdlIGFyZSBjdXJyZW50bHkgaGFuZGxpbmcgYSB0eXBlZGVmIG9yIG5vdC4K
KyAgICAgICAgc2VsZi5faGFuZGxpbmdfdHlwZWRlZiA9IEZhbHNlCisKKyAgICAgICAgc2VsZi5j
b252ZXJ0ZXIgPSBUeXBlQ29udmVydGVyKHNlbGYubmFtZXNwYWNlX3N0YWNrKQorCisgICAgZGVm
IEhhbmRsZUVycm9yKHNlbGYsIG1zZywgdG9rZW4pOgorICAgICAgICBwcmludGFibGVfcXVldWUg
PSBsaXN0KHJldmVyc2VkKHNlbGYudG9rZW5fcXVldWVbLTIwOl0pKQorICAgICAgICBzeXMuc3Rk
ZXJyLndyaXRlKCdHb3QgJXMgaW4gJXMgQCAlcyAlc1xuJyAlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgKG1zZywgc2VsZi5maWxlbmFtZSwgdG9rZW4sIHByaW50YWJsZV9xdWV1ZSkpCisKKyAg
ICBkZWYgR2VuZXJhdGUoc2VsZik6CisgICAgICAgIHdoaWxlIDE6CisgICAgICAgICAgICB0b2tl
biA9IHNlbGYuX0dldE5leHRUb2tlbigpCisgICAgICAgICAgICBpZiBub3QgdG9rZW46CisgICAg
ICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAgIyBHZXQgdGhlIG5leHQgdG9rZW4uCisg
ICAgICAgICAgICBzZWxmLmN1cnJlbnRfdG9rZW4gPSB0b2tlbgorCisgICAgICAgICAgICAjIERp
c3BhdGNoIG9uIHRoZSBuZXh0IHRva2VuIHR5cGUuCisgICAgICAgICAgICBpZiB0b2tlbi50b2tl
bl90eXBlID09IF9JTlRFUk5BTF9UT0tFTjoKKyAgICAgICAgICAgICAgICBpZiB0b2tlbi5uYW1l
ID09IF9OQU1FU1BBQ0VfUE9QOgorICAgICAgICAgICAgICAgICAgICBzZWxmLm5hbWVzcGFjZV9z
dGFjay5wb3AoKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIHRyeToK
KyAgICAgICAgICAgICAgICByZXN1bHQgPSBzZWxmLl9HZW5lcmF0ZU9uZSh0b2tlbikKKyAgICAg
ICAgICAgICAgICBpZiByZXN1bHQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHlp
ZWxkIHJlc3VsdAorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIHNlbGYuSGFu
ZGxlRXJyb3IoJ2V4Y2VwdGlvbicsIHRva2VuKQorICAgICAgICAgICAgICAgIHJhaXNlCisKKyAg
ICBkZWYgX0NyZWF0ZVZhcmlhYmxlKHNlbGYsIHBvc190b2tlbiwgbmFtZSwgdHlwZV9uYW1lLCB0
eXBlX21vZGlmaWVycywKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlZl9wb2ludGVyX25hbWVf
c2VxLCB0ZW1wbGF0ZWRfdHlwZXMsIHZhbHVlPU5vbmUpOgorICAgICAgICByZWZlcmVuY2UgPSAn
JicgaW4gcmVmX3BvaW50ZXJfbmFtZV9zZXEKKyAgICAgICAgcG9pbnRlciA9ICcqJyBpbiByZWZf
cG9pbnRlcl9uYW1lX3NlcQorICAgICAgICBhcnJheSA9ICdbJyBpbiByZWZfcG9pbnRlcl9uYW1l
X3NlcQorICAgICAgICB2YXJfdHlwZSA9IFR5cGUocG9zX3Rva2VuLnN0YXJ0LCBwb3NfdG9rZW4u
ZW5kLCB0eXBlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZWRfdHlwZXMs
IHR5cGVfbW9kaWZpZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlLCBwb2lu
dGVyLCBhcnJheSkKKyAgICAgICAgcmV0dXJuIFZhcmlhYmxlRGVjbGFyYXRpb24ocG9zX3Rva2Vu
LnN0YXJ0LCBwb3NfdG9rZW4uZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuYW1lLCB2YXJfdHlwZSwgdmFsdWUsIHNlbGYubmFtZXNwYWNlX3N0YWNrKQorCisgICAgZGVm
IF9HZW5lcmF0ZU9uZShzZWxmLCB0b2tlbik6CisgICAgICAgIGlmIHRva2VuLnRva2VuX3R5cGUg
PT0gdG9rZW5pemUuTkFNRToKKyAgICAgICAgICAgIGlmIChrZXl3b3Jkcy5Jc0tleXdvcmQodG9r
ZW4ubmFtZSkgYW5kCisgICAgICAgICAgICAgICAgbm90IGtleXdvcmRzLklzQnVpbHRpblR5cGUo
dG9rZW4ubmFtZSkpOgorICAgICAgICAgICAgICAgIG1ldGhvZCA9IGdldGF0dHIoc2VsZiwgJ2hh
bmRsZV8nICsgdG9rZW4ubmFtZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbWV0aG9kKCkKKyAg
ICAgICAgICAgIGVsaWYgdG9rZW4ubmFtZSA9PSBzZWxmLmluX2NsYXNzX25hbWVfb25seToKKyAg
ICAgICAgICAgICAgICAjIFRoZSB0b2tlbiBuYW1lIGlzIHRoZSBzYW1lIGFzIHRoZSBjbGFzcywg
bXVzdCBiZSBhIGN0b3IgaWYKKyAgICAgICAgICAgICAgICAjIHRoZXJlIGlzIGEgcGFyZW4uICBP
dGhlcndpc2UsIGl0J3MgdGhlIHJldHVybiB0eXBlLgorICAgICAgICAgICAgICAgICMgUGVlayBh
aGVhZCB0byBnZXQgdGhlIG5leHQgdG9rZW4gdG8gZmlndXJlIG91dCB3aGljaC4KKyAgICAgICAg
ICAgICAgICBuZXh0ID0gc2VsZi5fR2V0TmV4dFRva2VuKCkKKyAgICAgICAgICAgICAgICBzZWxm
Ll9BZGRCYWNrVG9rZW4obmV4dCkKKyAgICAgICAgICAgICAgICBpZiBuZXh0LnRva2VuX3R5cGUg
PT0gdG9rZW5pemUuU1lOVEFYIGFuZCBuZXh0Lm5hbWUgPT0gJygnOgorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gc2VsZi5fR2V0TWV0aG9kKFt0b2tlbl0sIEZVTkNUSU9OX0NUT1IsIE5vbmUs
IFRydWUpCisgICAgICAgICAgICAgICAgIyBGYWxsIHRocm91Z2gtLWhhbmRsZSBsaWtlIGFueSBv
dGhlciBtZXRob2QuCisKKyAgICAgICAgICAgICMgSGFuZGxlIGRhdGEgb3IgZnVuY3Rpb24gZGVj
bGFyYXRpb24vZGVmaW5pdGlvbi4KKyAgICAgICAgICAgIHN5bnRheCA9IHRva2VuaXplLlNZTlRB
WAorICAgICAgICAgICAgdGVtcF90b2tlbnMsIGxhc3RfdG9rZW4gPSBcCisgICAgICAgICAgICAg
ICAgc2VsZi5fR2V0VmFyVG9rZW5zVXBUbyhzeW50YXgsICcoJywgJzsnLCAneycsICdbJykKKyAg
ICAgICAgICAgIHRlbXBfdG9rZW5zLmluc2VydCgwLCB0b2tlbikKKyAgICAgICAgICAgIGlmIGxh
c3RfdG9rZW4ubmFtZSA9PSAnKCc6CisgICAgICAgICAgICAgICAgIyBJZiB0aGVyZSBpcyBhbiBh
c3NpZ25tZW50IGJlZm9yZSB0aGUgcGFyZW4sCisgICAgICAgICAgICAgICAgIyB0aGlzIGlzIGFu
IGV4cHJlc3Npb24sIG5vdCBhIG1ldGhvZC4KKyAgICAgICAgICAgICAgICBleHByID0gYm9vbChb
ZSBmb3IgZSBpbiB0ZW1wX3Rva2VucyBpZiBlLm5hbWUgPT0gJz0nXSkKKyAgICAgICAgICAgICAg
ICBpZiBleHByOgorICAgICAgICAgICAgICAgICAgICBuZXdfdGVtcCA9IHNlbGYuX0dldFRva2Vu
c1VwVG8odG9rZW5pemUuU1lOVEFYLCAnOycpCisgICAgICAgICAgICAgICAgICAgIHRlbXBfdG9r
ZW5zLmFwcGVuZChsYXN0X3Rva2VuKQorICAgICAgICAgICAgICAgICAgICB0ZW1wX3Rva2Vucy5l
eHRlbmQobmV3X3RlbXApCisgICAgICAgICAgICAgICAgICAgIGxhc3RfdG9rZW4gPSB0b2tlbml6
ZS5Ub2tlbih0b2tlbml6ZS5TWU5UQVgsICc7JywgMCwgMCkKKworICAgICAgICAgICAgaWYgbGFz
dF90b2tlbi5uYW1lID09ICdbJzoKKyAgICAgICAgICAgICAgICAjIEhhbmRsZSBhcnJheSwgdGhp
cyBpc24ndCBhIG1ldGhvZCwgdW5sZXNzIGl0J3MgYW4gb3BlcmF0b3IuCisgICAgICAgICAgICAg
ICAgIyBUT0RPKG5ub3J3aXR6KToga2VlcCB0aGUgc2l6ZSBzb21ld2hlcmUuCisgICAgICAgICAg
ICAgICAgIyB1bnVzZWRfc2l6ZSA9IHNlbGYuX0dldFRva2Vuc1VwVG8odG9rZW5pemUuU1lOVEFY
LCAnXScpCisgICAgICAgICAgICAgICAgdGVtcF90b2tlbnMuYXBwZW5kKGxhc3RfdG9rZW4pCisg
ICAgICAgICAgICAgICAgaWYgdGVtcF90b2tlbnNbLTJdLm5hbWUgPT0gJ29wZXJhdG9yJzoKKyAg
ICAgICAgICAgICAgICAgICAgdGVtcF90b2tlbnMuYXBwZW5kKHNlbGYuX0dldE5leHRUb2tlbigp
KQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHRlbXBfdG9rZW5z
MiwgbGFzdF90b2tlbiA9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX0dldFZhclRv
a2Vuc1VwVG8odG9rZW5pemUuU1lOVEFYLCAnOycpCisgICAgICAgICAgICAgICAgICAgIHRlbXBf
dG9rZW5zLmV4dGVuZCh0ZW1wX3Rva2VuczIpCisKKyAgICAgICAgICAgIGlmIGxhc3RfdG9rZW4u
bmFtZSA9PSAnOyc6CisgICAgICAgICAgICAgICAgIyBIYW5kbGUgZGF0YSwgdGhpcyBpc24ndCBh
IG1ldGhvZC4KKyAgICAgICAgICAgICAgICBwYXJ0cyA9IHNlbGYuY29udmVydGVyLkRlY2xhcmF0
aW9uVG9QYXJ0cyh0ZW1wX3Rva2VucywgVHJ1ZSkKKyAgICAgICAgICAgICAgICAobmFtZSwgdHlw
ZV9uYW1lLCB0ZW1wbGF0ZWRfdHlwZXMsIG1vZGlmaWVycywgZGVmYXVsdCwKKyAgICAgICAgICAg
ICAgICAgdW51c2VkX290aGVyX3Rva2VucykgPSBwYXJ0cworCisgICAgICAgICAgICAgICAgdDAg
PSB0ZW1wX3Rva2Vuc1swXQorICAgICAgICAgICAgICAgIG5hbWVzID0gW3QubmFtZSBmb3IgdCBp
biB0ZW1wX3Rva2Vuc10KKyAgICAgICAgICAgICAgICBpZiB0ZW1wbGF0ZWRfdHlwZXM6CisgICAg
ICAgICAgICAgICAgICAgIHN0YXJ0LCBlbmQgPSBzZWxmLmNvbnZlcnRlci5HZXRUZW1wbGF0ZUlu
ZGljZXMobmFtZXMpCisgICAgICAgICAgICAgICAgICAgIG5hbWVzID0gbmFtZXNbOnN0YXJ0XSAr
IG5hbWVzW2VuZDpdCisgICAgICAgICAgICAgICAgZGVmYXVsdCA9ICcnLmpvaW4oW3QubmFtZSBm
b3IgdCBpbiBkZWZhdWx0XSkKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fQ3JlYXRlVmFy
aWFibGUodDAsIG5hbWUsIHR5cGVfbmFtZSwgbW9kaWZpZXJzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lcywgdGVtcGxhdGVkX3R5cGVzLCBkZWZhdWx0
KQorICAgICAgICAgICAgaWYgbGFzdF90b2tlbi5uYW1lID09ICd7JzoKKyAgICAgICAgICAgICAg
ICBzZWxmLl9BZGRCYWNrVG9rZW5zKHRlbXBfdG9rZW5zWzE6XSkKKyAgICAgICAgICAgICAgICBz
ZWxmLl9BZGRCYWNrVG9rZW4obGFzdF90b2tlbikKKyAgICAgICAgICAgICAgICBtZXRob2RfbmFt
ZSA9IHRlbXBfdG9rZW5zWzBdLm5hbWUKKyAgICAgICAgICAgICAgICBtZXRob2QgPSBnZXRhdHRy
KHNlbGYsICdoYW5kbGVfJyArIG1ldGhvZF9uYW1lLCBOb25lKQorICAgICAgICAgICAgICAgIGlm
IG5vdCBtZXRob2Q6CisgICAgICAgICAgICAgICAgICAgICMgTXVzdCBiZSBkZWNsYXJpbmcgYSB2
YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgIyBUT0RPKG5ub3J3aXR6KTogaGFuZGxlIHRo
ZSBkZWNsYXJhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAg
ICAgICAgICByZXR1cm4gbWV0aG9kKCkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9HZXRNZXRo
b2QodGVtcF90b2tlbnMsIDAsIE5vbmUsIEZhbHNlKQorICAgICAgICBlbGlmIHRva2VuLnRva2Vu
X3R5cGUgPT0gdG9rZW5pemUuU1lOVEFYOgorICAgICAgICAgICAgaWYgdG9rZW4ubmFtZSA9PSAn
ficgYW5kIHNlbGYuaW5fY2xhc3M6CisgICAgICAgICAgICAgICAgIyBNdXN0IGJlIGEgZHRvciAo
cHJvYmFibHkgbm90IGluIG1ldGhvZCBib2R5KS4KKyAgICAgICAgICAgICAgICB0b2tlbiA9IHNl
bGYuX0dldE5leHRUb2tlbigpCisgICAgICAgICAgICAgICAgIyBzZWxmLmluX2NsYXNzIGNhbiBj
b250YWluIEE6Ok5hbWUsIGJ1dCB0aGUgZHRvciB3aWxsIG9ubHkKKyAgICAgICAgICAgICAgICAj
IGJlIE5hbWUuICBNYWtlIHN1cmUgdG8gY29tcGFyZSBhZ2FpbnN0IHRoZSByaWdodCB2YWx1ZS4K
KyAgICAgICAgICAgICAgICBpZiAodG9rZW4udG9rZW5fdHlwZSA9PSB0b2tlbml6ZS5OQU1FIGFu
ZAorICAgICAgICAgICAgICAgICAgICB0b2tlbi5uYW1lID09IHNlbGYuaW5fY2xhc3NfbmFtZV9v
bmx5KToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX0dldE1ldGhvZChbdG9rZW5d
LCBGVU5DVElPTl9EVE9SLCBOb25lLCBUcnVlKQorICAgICAgICAgICAgIyBUT0RPKG5ub3J3aXR6
KTogaGFuZGxlIGEgbG90IG1vcmUgc3ludGF4LgorICAgICAgICBlbGlmIHRva2VuLnRva2VuX3R5
cGUgPT0gdG9rZW5pemUuUFJFUFJPQ0VTU09SOgorICAgICAgICAgICAgIyBUT0RPKG5ub3J3aXR6
KTogaGFuZGxlIG1vcmUgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMuCisgICAgICAgICAgICAjIHRv
a2VuIHN0YXJ0cyB3aXRoIGEgIywgc28gcmVtb3ZlIGl0IGFuZCBzdHJpcCB3aGl0ZXNwYWNlLgor
ICAgICAgICAgICAgbmFtZSA9IHRva2VuLm5hbWVbMTpdLmxzdHJpcCgpCisgICAgICAgICAgICBp
ZiBuYW1lLnN0YXJ0c3dpdGgoJ2luY2x1ZGUnKToKKyAgICAgICAgICAgICAgICAjIFJlbW92ZSAi
aW5jbHVkZSIuCisgICAgICAgICAgICAgICAgbmFtZSA9IG5hbWVbNzpdLnN0cmlwKCkKKyAgICAg
ICAgICAgICAgICBhc3NlcnQgbmFtZQorICAgICAgICAgICAgICAgICMgSGFuZGxlICNpbmNsdWRl
IFw8bmV3bGluZT4gImhlYWRlci1vbi1zZWNvbmQtbGluZS5oIi4KKyAgICAgICAgICAgICAgICBp
ZiBuYW1lLnN0YXJ0c3dpdGgoJ1xcJyk6CisgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBuYW1l
WzE6XS5zdHJpcCgpCisgICAgICAgICAgICAgICAgYXNzZXJ0IG5hbWVbMF0gaW4gJzwiJywgdG9r
ZW4KKyAgICAgICAgICAgICAgICBhc3NlcnQgbmFtZVstMV0gaW4gJz4iJywgdG9rZW4KKyAgICAg
ICAgICAgICAgICBzeXN0ZW0gPSBuYW1lWzBdID09ICc8JworICAgICAgICAgICAgICAgIGZpbGVu
YW1lID0gbmFtZVsxOi0xXQorICAgICAgICAgICAgICAgIHJldHVybiBJbmNsdWRlKHRva2VuLnN0
YXJ0LCB0b2tlbi5lbmQsIGZpbGVuYW1lLCBzeXN0ZW0pCisgICAgICAgICAgICBpZiBuYW1lLnN0
YXJ0c3dpdGgoJ2RlZmluZScpOgorICAgICAgICAgICAgICAgICMgUmVtb3ZlICJkZWZpbmUiLgor
ICAgICAgICAgICAgICAgIG5hbWUgPSBuYW1lWzY6XS5zdHJpcCgpCisgICAgICAgICAgICAgICAg
YXNzZXJ0IG5hbWUKKyAgICAgICAgICAgICAgICB2YWx1ZSA9ICcnCisgICAgICAgICAgICAgICAg
Zm9yIGksIGMgaW4gZW51bWVyYXRlKG5hbWUpOgorICAgICAgICAgICAgICAgICAgICBpZiBjLmlz
c3BhY2UoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbmFtZVtpOl0ubHN0cmlw
KCkKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBuYW1lWzppXQorICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICByZXR1cm4gRGVmaW5lKHRva2VuLnN0
YXJ0LCB0b2tlbi5lbmQsIG5hbWUsIHZhbHVlKQorICAgICAgICAgICAgaWYgbmFtZS5zdGFydHN3
aXRoKCdpZicpIGFuZCBuYW1lWzI6M10uaXNzcGFjZSgpOgorICAgICAgICAgICAgICAgIGNvbmRp
dGlvbiA9IG5hbWVbMzpdLnN0cmlwKCkKKyAgICAgICAgICAgICAgICBpZiBjb25kaXRpb24uc3Rh
cnRzd2l0aCgnMCcpIG9yIGNvbmRpdGlvbi5zdGFydHN3aXRoKCcoMCknKToKKyAgICAgICAgICAg
ICAgICAgICAgc2VsZi5fU2tpcElmMEJsb2NrcygpCisgICAgICAgIHJldHVybiBOb25lCisKKyAg
ICBkZWYgX0dldFRva2Vuc1VwVG8oc2VsZiwgZXhwZWN0ZWRfdG9rZW5fdHlwZSwgZXhwZWN0ZWRf
dG9rZW4pOgorICAgICAgICByZXR1cm4gc2VsZi5fR2V0VmFyVG9rZW5zVXBUbyhleHBlY3RlZF90
b2tlbl90eXBlLCBleHBlY3RlZF90b2tlbilbMF0KKworICAgIGRlZiBfR2V0VmFyVG9rZW5zVXBU
byhzZWxmLCBleHBlY3RlZF90b2tlbl90eXBlLCAqZXhwZWN0ZWRfdG9rZW5zKToKKyAgICAgICAg
bGFzdF90b2tlbiA9IHNlbGYuX0dldE5leHRUb2tlbigpCisgICAgICAgIHRva2VucyA9IFtdCisg
ICAgICAgIHdoaWxlIChsYXN0X3Rva2VuLnRva2VuX3R5cGUgIT0gZXhwZWN0ZWRfdG9rZW5fdHlw
ZSBvcgorICAgICAgICAgICAgICAgbGFzdF90b2tlbi5uYW1lIG5vdCBpbiBleHBlY3RlZF90b2tl
bnMpOgorICAgICAgICAgICAgdG9rZW5zLmFwcGVuZChsYXN0X3Rva2VuKQorICAgICAgICAgICAg
bGFzdF90b2tlbiA9IHNlbGYuX0dldE5leHRUb2tlbigpCisgICAgICAgIHJldHVybiB0b2tlbnMs
IGxhc3RfdG9rZW4KKworICAgICMgVE9ETyhubm9yd2l0eik6IHJlbW92ZSBfSWdub3JlVXBUbygp
IGl0IHNob3VsZG4ndCBiZSBuZWNlc2FyeS4KKyAgICBkZWYgX0lnbm9yZVVwVG8oc2VsZiwgdG9r
ZW5fdHlwZSwgdG9rZW4pOgorICAgICAgICB1bnVzZWRfdG9rZW5zID0gc2VsZi5fR2V0VG9rZW5z
VXBUbyh0b2tlbl90eXBlLCB0b2tlbikKKworICAgIGRlZiBfU2tpcElmMEJsb2NrcyhzZWxmKToK
KyAgICAgICAgY291bnQgPSAxCisgICAgICAgIHdoaWxlIDE6CisgICAgICAgICAgICB0b2tlbiA9
IHNlbGYuX0dldE5leHRUb2tlbigpCisgICAgICAgICAgICBpZiB0b2tlbi50b2tlbl90eXBlICE9
IHRva2VuaXplLlBSRVBST0NFU1NPUjoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAg
ICAgICAgICBuYW1lID0gdG9rZW4ubmFtZVsxOl0ubHN0cmlwKCkKKyAgICAgICAgICAgIGlmIG5h
bWUuc3RhcnRzd2l0aCgnZW5kaWYnKToKKyAgICAgICAgICAgICAgICBjb3VudCAtPSAxCisgICAg
ICAgICAgICAgICAgaWYgY291bnQgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAg
ICAgICAgICAgIGVsaWYgbmFtZS5zdGFydHN3aXRoKCdpZicpOgorICAgICAgICAgICAgICAgIGNv
dW50ICs9IDEKKworICAgIGRlZiBfR2V0TWF0Y2hpbmdDaGFyKHNlbGYsIG9wZW5fcGFyZW4sIGNs
b3NlX3BhcmVuLCBHZXROZXh0VG9rZW49Tm9uZSk6CisgICAgICAgIGlmIEdldE5leHRUb2tlbiBp
cyBOb25lOgorICAgICAgICAgICAgR2V0TmV4dFRva2VuID0gc2VsZi5fR2V0TmV4dFRva2VuCisg
ICAgICAgICMgQXNzdW1lcyB0aGUgY3VycmVudCB0b2tlbiBpcyBvcGVuX3BhcmVuIGFuZCB3ZSB3
aWxsIGNvbnN1bWUKKyAgICAgICAgIyBhbmQgcmV0dXJuIHVwIHRvIHRoZSBjbG9zZV9wYXJlbi4K
KyAgICAgICAgY291bnQgPSAxCisgICAgICAgIHRva2VuID0gR2V0TmV4dFRva2VuKCkKKyAgICAg
ICAgd2hpbGUgMToKKyAgICAgICAgICAgIGlmIHRva2VuLnRva2VuX3R5cGUgPT0gdG9rZW5pemUu
U1lOVEFYOgorICAgICAgICAgICAgICAgIGlmIHRva2VuLm5hbWUgPT0gb3Blbl9wYXJlbjoKKyAg
ICAgICAgICAgICAgICAgICAgY291bnQgKz0gMQorICAgICAgICAgICAgICAgIGVsaWYgdG9rZW4u
bmFtZSA9PSBjbG9zZV9wYXJlbjoKKyAgICAgICAgICAgICAgICAgICAgY291bnQgLT0gMQorICAg
ICAgICAgICAgICAgICAgICBpZiBjb3VudCA9PSAwOgorICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWsKKyAgICAgICAgICAgIHlpZWxkIHRva2VuCisgICAgICAgICAgICB0b2tlbiA9IEdldE5l
eHRUb2tlbigpCisgICAgICAgIHlpZWxkIHRva2VuCisKKyAgICBkZWYgX0dldFBhcmFtZXRlcnMo
c2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9HZXRNYXRjaGluZ0NoYXIoJygnLCAnKScpCisK
KyAgICBkZWYgR2V0U2NvcGUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9HZXRNYXRjaGlu
Z0NoYXIoJ3snLCAnfScpCisKKyAgICBkZWYgX0dldE5leHRUb2tlbihzZWxmKToKKyAgICAgICAg
aWYgc2VsZi50b2tlbl9xdWV1ZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnRva2VuX3F1ZXVl
LnBvcCgpCisgICAgICAgIHJldHVybiBuZXh0KHNlbGYudG9rZW5zKQorCisgICAgZGVmIF9BZGRC
YWNrVG9rZW4oc2VsZiwgdG9rZW4pOgorICAgICAgICBpZiB0b2tlbi53aGVuY2UgPT0gdG9rZW5p
emUuV0hFTkNFX1NUUkVBTToKKyAgICAgICAgICAgIHRva2VuLndoZW5jZSA9IHRva2VuaXplLldI
RU5DRV9RVUVVRQorICAgICAgICAgICAgc2VsZi50b2tlbl9xdWV1ZS5pbnNlcnQoMCwgdG9rZW4p
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhc3NlcnQgdG9rZW4ud2hlbmNlID09IHRva2Vu
aXplLldIRU5DRV9RVUVVRSwgdG9rZW4KKyAgICAgICAgICAgIHNlbGYudG9rZW5fcXVldWUuYXBw
ZW5kKHRva2VuKQorCisgICAgZGVmIF9BZGRCYWNrVG9rZW5zKHNlbGYsIHRva2Vucyk6CisgICAg
ICAgIGlmIHRva2VuczoKKyAgICAgICAgICAgIGlmIHRva2Vuc1stMV0ud2hlbmNlID09IHRva2Vu
aXplLldIRU5DRV9TVFJFQU06CisgICAgICAgICAgICAgICAgZm9yIHRva2VuIGluIHRva2VuczoK
KyAgICAgICAgICAgICAgICAgICAgdG9rZW4ud2hlbmNlID0gdG9rZW5pemUuV0hFTkNFX1FVRVVF
CisgICAgICAgICAgICAgICAgc2VsZi50b2tlbl9xdWV1ZVs6MF0gPSByZXZlcnNlZCh0b2tlbnMp
CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGFzc2VydCB0b2tlbnNbLTFdLndo
ZW5jZSA9PSB0b2tlbml6ZS5XSEVOQ0VfUVVFVUUsIHRva2VucworICAgICAgICAgICAgICAgIHNl
bGYudG9rZW5fcXVldWUuZXh0ZW5kKHJldmVyc2VkKHRva2VucykpCisKKyAgICBkZWYgR2V0TmFt
ZShzZWxmLCBzZXE9Tm9uZSk6CisgICAgICAgICIiIlJldHVybnMgKFt0b2tlbnNdLCBuZXh0X3Rv
a2VuX2luZm8pLiIiIgorICAgICAgICBHZXROZXh0VG9rZW4gPSBzZWxmLl9HZXROZXh0VG9rZW4K
KyAgICAgICAgaWYgc2VxIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaXQgPSBpdGVyKHNlcSkK
KyAgICAgICAgICAgIEdldE5leHRUb2tlbiA9IGxhbWJkYTogbmV4dChpdCkKKyAgICAgICAgbmV4
dF90b2tlbiA9IEdldE5leHRUb2tlbigpCisgICAgICAgIHRva2VucyA9IFtdCisgICAgICAgIGxh
c3RfdG9rZW5fd2FzX25hbWUgPSBGYWxzZQorICAgICAgICB3aGlsZSAobmV4dF90b2tlbi50b2tl
bl90eXBlID09IHRva2VuaXplLk5BTUUgb3IKKyAgICAgICAgICAgICAgIChuZXh0X3Rva2VuLnRv
a2VuX3R5cGUgPT0gdG9rZW5pemUuU1lOVEFYIGFuZAorICAgICAgICAgICAgICAgIG5leHRfdG9r
ZW4ubmFtZSBpbiAoJzo6JywgJzwnKSkpOgorICAgICAgICAgICAgIyBUd28gTkFNRXMgaW4gYSBy
b3cgbWVhbnMgdGhlIGlkZW50aWZpZXIgc2hvdWxkIHRlcm1pbmF0ZS4KKyAgICAgICAgICAgICMg
SXQncyBwcm9iYWJseSBzb21lIHNvcnQgb2YgdmFyaWFibGUgZGVjbGFyYXRpb24uCisgICAgICAg
ICAgICBpZiBsYXN0X3Rva2VuX3dhc19uYW1lIGFuZCBuZXh0X3Rva2VuLnRva2VuX3R5cGUgPT0g
dG9rZW5pemUuTkFNRToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgbGFzdF90
b2tlbl93YXNfbmFtZSA9IG5leHRfdG9rZW4udG9rZW5fdHlwZSA9PSB0b2tlbml6ZS5OQU1FCisg
ICAgICAgICAgICB0b2tlbnMuYXBwZW5kKG5leHRfdG9rZW4pCisgICAgICAgICAgICAjIEhhbmRs
ZSB0ZW1wbGF0ZWQgbmFtZXMuCisgICAgICAgICAgICBpZiBuZXh0X3Rva2VuLm5hbWUgPT0gJzwn
OgorICAgICAgICAgICAgICAgIHRva2Vucy5leHRlbmQoc2VsZi5fR2V0TWF0Y2hpbmdDaGFyKCc8
JywgJz4nLCBHZXROZXh0VG9rZW4pKQorICAgICAgICAgICAgICAgIGxhc3RfdG9rZW5fd2FzX25h
bWUgPSBUcnVlCisgICAgICAgICAgICBuZXh0X3Rva2VuID0gR2V0TmV4dFRva2VuKCkKKyAgICAg
ICAgcmV0dXJuIHRva2VucywgbmV4dF90b2tlbgorCisgICAgZGVmIEdldE1ldGhvZChzZWxmLCBt
b2RpZmllcnMsIHRlbXBsYXRlZF90eXBlcyk6CisgICAgICAgIHJldHVybl90eXBlX2FuZF9uYW1l
ID0gc2VsZi5fR2V0VG9rZW5zVXBUbyh0b2tlbml6ZS5TWU5UQVgsICcoJykKKyAgICAgICAgYXNz
ZXJ0IGxlbihyZXR1cm5fdHlwZV9hbmRfbmFtZSkgPj0gMQorICAgICAgICByZXR1cm4gc2VsZi5f
R2V0TWV0aG9kKHJldHVybl90eXBlX2FuZF9uYW1lLCBtb2RpZmllcnMsIHRlbXBsYXRlZF90eXBl
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWxzZSkKKworICAgIGRlZiBfR2V0
TWV0aG9kKHNlbGYsIHJldHVybl90eXBlX2FuZF9uYW1lLCBtb2RpZmllcnMsIHRlbXBsYXRlZF90
eXBlcywKKyAgICAgICAgICAgICAgICAgICBnZXRfcGFyZW4pOgorICAgICAgICB0ZW1wbGF0ZV9w
b3J0aW9uID0gTm9uZQorICAgICAgICBpZiBnZXRfcGFyZW46CisgICAgICAgICAgICB0b2tlbiA9
IHNlbGYuX0dldE5leHRUb2tlbigpCisgICAgICAgICAgICBhc3NlcnQgdG9rZW4udG9rZW5fdHlw
ZSA9PSB0b2tlbml6ZS5TWU5UQVgsIHRva2VuCisgICAgICAgICAgICBpZiB0b2tlbi5uYW1lID09
ICc8JzoKKyAgICAgICAgICAgICAgICAjIEhhbmRsZSB0ZW1wbGF0aXplZCBkdG9ycy4KKyAgICAg
ICAgICAgICAgICB0ZW1wbGF0ZV9wb3J0aW9uID0gW3Rva2VuXQorICAgICAgICAgICAgICAgIHRl
bXBsYXRlX3BvcnRpb24uZXh0ZW5kKHNlbGYuX0dldE1hdGNoaW5nQ2hhcignPCcsICc+JykpCisg
ICAgICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9HZXROZXh0VG9rZW4oKQorICAgICAgICAgICAg
YXNzZXJ0IHRva2VuLnRva2VuX3R5cGUgPT0gdG9rZW5pemUuU1lOVEFYLCB0b2tlbgorICAgICAg
ICAgICAgYXNzZXJ0IHRva2VuLm5hbWUgPT0gJygnLCB0b2tlbgorCisgICAgICAgIG5hbWUgPSBy
ZXR1cm5fdHlwZV9hbmRfbmFtZS5wb3AoKQorICAgICAgICAjIEhhbmRsZSB0ZW1wbGF0aXplZCBj
dG9ycy4KKyAgICAgICAgaWYgbmFtZS5uYW1lID09ICc+JzoKKyAgICAgICAgICAgIGluZGV4ID0g
MQorICAgICAgICAgICAgd2hpbGUgcmV0dXJuX3R5cGVfYW5kX25hbWVbaW5kZXhdLm5hbWUgIT0g
JzwnOgorICAgICAgICAgICAgICAgIGluZGV4ICs9IDEKKyAgICAgICAgICAgIHRlbXBsYXRlX3Bv
cnRpb24gPSByZXR1cm5fdHlwZV9hbmRfbmFtZVtpbmRleDpdICsgW25hbWVdCisgICAgICAgICAg
ICBkZWwgcmV0dXJuX3R5cGVfYW5kX25hbWVbaW5kZXg6XQorICAgICAgICAgICAgbmFtZSA9IHJl
dHVybl90eXBlX2FuZF9uYW1lLnBvcCgpCisgICAgICAgIGVsaWYgbmFtZS5uYW1lID09ICddJzoK
KyAgICAgICAgICAgIHJ0ID0gcmV0dXJuX3R5cGVfYW5kX25hbWUKKyAgICAgICAgICAgIGFzc2Vy
dCBydFstMV0ubmFtZSA9PSAnWycsIHJldHVybl90eXBlX2FuZF9uYW1lCisgICAgICAgICAgICBh
c3NlcnQgcnRbLTJdLm5hbWUgPT0gJ29wZXJhdG9yJywgcmV0dXJuX3R5cGVfYW5kX25hbWUKKyAg
ICAgICAgICAgIG5hbWVfc2VxID0gcmV0dXJuX3R5cGVfYW5kX25hbWVbLTI6XQorICAgICAgICAg
ICAgZGVsIHJldHVybl90eXBlX2FuZF9uYW1lWy0yOl0KKyAgICAgICAgICAgIG5hbWUgPSB0b2tl
bml6ZS5Ub2tlbih0b2tlbml6ZS5OQU1FLCAnb3BlcmF0b3JbXScsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbmFtZV9zZXFbMF0uc3RhcnQsIG5hbWUuZW5kKQorICAgICAgICAg
ICAgIyBHZXQgdGhlIG9wZW4gcGFyZW4gc28gX0dldFBhcmFtZXRlcnMoKSBiZWxvdyB3b3Jrcy4K
KyAgICAgICAgICAgIHVudXNlZF9vcGVuX3BhcmVuID0gc2VsZi5fR2V0TmV4dFRva2VuKCkKKwor
ICAgICAgICAjIFRPRE8obm5vcndpdHopOiBzdG9yZSB0ZW1wbGF0ZV9wb3J0aW9uLgorICAgICAg
ICByZXR1cm5fdHlwZSA9IHJldHVybl90eXBlX2FuZF9uYW1lCisgICAgICAgIGluZGljZXMgPSBu
YW1lCisgICAgICAgIGlmIHJldHVybl90eXBlOgorICAgICAgICAgICAgaW5kaWNlcyA9IHJldHVy
bl90eXBlWzBdCisKKyAgICAgICAgIyBGb3JjZSBjdG9yIGZvciB0ZW1wbGF0aXplZCBjdG9ycy4K
KyAgICAgICAgaWYgbmFtZS5uYW1lID09IHNlbGYuaW5fY2xhc3MgYW5kIG5vdCBtb2RpZmllcnM6
CisgICAgICAgICAgICBtb2RpZmllcnMgfD0gRlVOQ1RJT05fQ1RPUgorICAgICAgICBwYXJhbWV0
ZXJzID0gbGlzdChzZWxmLl9HZXRQYXJhbWV0ZXJzKCkpCisgICAgICAgIGRlbCBwYXJhbWV0ZXJz
Wy0xXSAgICAgICAgICAgICAgIyBSZW1vdmUgdHJhaWxpbmcgJyknLgorCisgICAgICAgICMgSGFu
ZGxpbmcgb3BlcmF0b3IoKSBpcyBlc3BlY2lhbGx5IHdlaXJkLgorICAgICAgICBpZiBuYW1lLm5h
bWUgPT0gJ29wZXJhdG9yJyBhbmQgbm90IHBhcmFtZXRlcnM6CisgICAgICAgICAgICB0b2tlbiA9
IHNlbGYuX0dldE5leHRUb2tlbigpCisgICAgICAgICAgICBhc3NlcnQgdG9rZW4ubmFtZSA9PSAn
KCcsIHRva2VuCisgICAgICAgICAgICBwYXJhbWV0ZXJzID0gbGlzdChzZWxmLl9HZXRQYXJhbWV0
ZXJzKCkpCisgICAgICAgICAgICBkZWwgcGFyYW1ldGVyc1stMV0gICAgICAgICAgIyBSZW1vdmUg
dHJhaWxpbmcgJyknLgorCisgICAgICAgIHRva2VuID0gc2VsZi5fR2V0TmV4dFRva2VuKCkKKyAg
ICAgICAgd2hpbGUgdG9rZW4udG9rZW5fdHlwZSA9PSB0b2tlbml6ZS5OQU1FOgorICAgICAgICAg
ICAgbW9kaWZpZXJfdG9rZW4gPSB0b2tlbgorICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9HZXRO
ZXh0VG9rZW4oKQorICAgICAgICAgICAgaWYgbW9kaWZpZXJfdG9rZW4ubmFtZSA9PSAnY29uc3Qn
OgorICAgICAgICAgICAgICAgIG1vZGlmaWVycyB8PSBGVU5DVElPTl9DT05TVAorICAgICAgICAg
ICAgZWxpZiBtb2RpZmllcl90b2tlbi5uYW1lID09ICdfX2F0dHJpYnV0ZV9fJzoKKyAgICAgICAg
ICAgICAgICAjIFRPRE8obm5vcndpdHopOiBoYW5kbGUgbW9yZSBfX2F0dHJpYnV0ZV9fIGRldGFp
bHMuCisgICAgICAgICAgICAgICAgbW9kaWZpZXJzIHw9IEZVTkNUSU9OX0FUVFJJQlVURQorICAg
ICAgICAgICAgICAgIGFzc2VydCB0b2tlbi5uYW1lID09ICcoJywgdG9rZW4KKyAgICAgICAgICAg
ICAgICAjIENvbnN1bWUgZXZlcnl0aGluZyBiZXR3ZWVuIHRoZSAocGFyZW5zKS4KKyAgICAgICAg
ICAgICAgICB1bnVzZWRfdG9rZW5zID0gbGlzdChzZWxmLl9HZXRNYXRjaGluZ0NoYXIoJygnLCAn
KScpKQorICAgICAgICAgICAgICAgIHRva2VuID0gc2VsZi5fR2V0TmV4dFRva2VuKCkKKyAgICAg
ICAgICAgIGVsaWYgbW9kaWZpZXJfdG9rZW4ubmFtZSA9PSAndGhyb3cnOgorICAgICAgICAgICAg
ICAgIG1vZGlmaWVycyB8PSBGVU5DVElPTl9USFJPVworICAgICAgICAgICAgICAgIGFzc2VydCB0
b2tlbi5uYW1lID09ICcoJywgdG9rZW4KKyAgICAgICAgICAgICAgICAjIENvbnN1bWUgZXZlcnl0
aGluZyBiZXR3ZWVuIHRoZSAocGFyZW5zKS4KKyAgICAgICAgICAgICAgICB1bnVzZWRfdG9rZW5z
ID0gbGlzdChzZWxmLl9HZXRNYXRjaGluZ0NoYXIoJygnLCAnKScpKQorICAgICAgICAgICAgICAg
IHRva2VuID0gc2VsZi5fR2V0TmV4dFRva2VuKCkKKyAgICAgICAgICAgIGVsaWYgbW9kaWZpZXJf
dG9rZW4ubmFtZSA9PSAnb3ZlcnJpZGUnOgorICAgICAgICAgICAgICAgIG1vZGlmaWVycyB8PSBG
VU5DVElPTl9PVkVSUklERQorICAgICAgICAgICAgZWxpZiBtb2RpZmllcl90b2tlbi5uYW1lID09
IG1vZGlmaWVyX3Rva2VuLm5hbWUudXBwZXIoKToKKyAgICAgICAgICAgICAgICAjIEhBQ0sobm5v
cndpdHopOiAgYXNzdW1lIHRoYXQgYWxsIHVwcGVyLWNhc2UgbmFtZXMKKyAgICAgICAgICAgICAg
ICAjIGFyZSBzb21lIG1hY3JvIHdlIGFyZW4ndCBleHBhbmRpbmcuCisgICAgICAgICAgICAgICAg
bW9kaWZpZXJzIHw9IEZVTkNUSU9OX1VOS05PV05fQU5OT1RBVElPTgorICAgICAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgICAgICBzZWxmLkhhbmRsZUVycm9yKCd1bmV4cGVjdGVkIHRva2VuJywg
bW9kaWZpZXJfdG9rZW4pCisKKyAgICAgICAgYXNzZXJ0IHRva2VuLnRva2VuX3R5cGUgPT0gdG9r
ZW5pemUuU1lOVEFYLCB0b2tlbgorICAgICAgICAjIEhhbmRsZSBjdG9yIGluaXRpYWxpemVycy4K
KyAgICAgICAgaWYgdG9rZW4ubmFtZSA9PSAnOic6CisgICAgICAgICAgICAjIFRPRE8obm5vcndp
dHopOiBhbnl0aGluZyBlbHNlIHRvIGhhbmRsZSBmb3IgaW5pdGlhbGl6ZXIgbGlzdD8KKyAgICAg
ICAgICAgIHdoaWxlIHRva2VuLm5hbWUgIT0gJzsnIGFuZCB0b2tlbi5uYW1lICE9ICd7JzoKKyAg
ICAgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX0dldE5leHRUb2tlbigpCisKKyAgICAgICAgIyBI
YW5kbGUgcG9pbnRlciB0byBmdW5jdGlvbnMgdGhhdCBhcmUgcmVhbGx5IGRhdGEgYnV0IGxvb2sK
KyAgICAgICAgIyBsaWtlIG1ldGhvZCBkZWNsYXJhdGlvbnMuCisgICAgICAgIGlmIHRva2VuLm5h
bWUgPT0gJygnOgorICAgICAgICAgICAgaWYgcGFyYW1ldGVyc1swXS5uYW1lID09ICcqJzoKKyAg
ICAgICAgICAgICAgICAjIG5hbWUgY29udGFpbnMgdGhlIHJldHVybiB0eXBlLgorICAgICAgICAg
ICAgICAgIG5hbWUgPSBwYXJhbWV0ZXJzLnBvcCgpCisgICAgICAgICAgICAgICAgIyBwYXJhbWV0
ZXJzIGNvbnRhaW5zIHRoZSBuYW1lIG9mIHRoZSBkYXRhLgorICAgICAgICAgICAgICAgIG1vZGlm
aWVycyA9IFtwLm5hbWUgZm9yIHAgaW4gcGFyYW1ldGVyc10KKyAgICAgICAgICAgICAgICAjIEFs
cmVhZHkgYXQgdGhlICggdG8gb3BlbiB0aGUgcGFyYW1ldGVyIGxpc3QuCisgICAgICAgICAgICAg
ICAgZnVuY3Rpb25fcGFyYW1ldGVycyA9IGxpc3Qoc2VsZi5fR2V0TWF0Y2hpbmdDaGFyKCcoJywg
JyknKSkKKyAgICAgICAgICAgICAgICBkZWwgZnVuY3Rpb25fcGFyYW1ldGVyc1stMV0gICMgUmVt
b3ZlIHRyYWlsaW5nICcpJy4KKyAgICAgICAgICAgICAgICAjIFRPRE8obm5vcndpdHopOiBzdG9y
ZSB0aGUgZnVuY3Rpb25fcGFyYW1ldGVycy4KKyAgICAgICAgICAgICAgICB0b2tlbiA9IHNlbGYu
X0dldE5leHRUb2tlbigpCisgICAgICAgICAgICAgICAgYXNzZXJ0IHRva2VuLnRva2VuX3R5cGUg
PT0gdG9rZW5pemUuU1lOVEFYLCB0b2tlbgorICAgICAgICAgICAgICAgIGFzc2VydCB0b2tlbi5u
YW1lID09ICc7JywgdG9rZW4KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fQ3JlYXRlVmFy
aWFibGUoaW5kaWNlcywgbmFtZS5uYW1lLCBpbmRpY2VzLm5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVycywgJycsIE5vbmUpCisgICAgICAg
ICAgICAjIEF0IHRoaXMgcG9pbnQsIHdlIGdvdCBzb21ldGhpbmcgbGlrZToKKyAgICAgICAgICAg
ICMgIHJldHVybl90eXBlICh0eXBlOjoqbmFtZV8pKHBhcmFtcyk7CisgICAgICAgICAgICAjIFRo
aXMgaXMgYSBkYXRhIG1lbWJlciBjYWxsZWQgbmFtZV8gdGhhdCBpcyBhIGZ1bmN0aW9uIHBvaW50
ZXIuCisgICAgICAgICAgICAjIFdpdGggdGhpcyBjb2RlOiB2b2lkIChzcV90eXBlOjoqZmllbGRf
KShzdHJpbmcmKTsKKyAgICAgICAgICAgICMgV2UgZ2V0OiBuYW1lPXZvaWQgcmV0dXJuX3R5cGU9
W10gcGFyYW1ldGVycz1zcV90eXBlIC4uLiBmaWVsZF8KKyAgICAgICAgICAgICMgVE9ETyhubm9y
d2l0eik6IGlzIHJldHVybl90eXBlIGFsd2F5cyBlbXB0eT8KKyAgICAgICAgICAgICMgVE9ETyhu
bm9yd2l0eik6IHRoaXMgaXNuJ3QgZXZlbiBjbG9zZSB0byBiZWluZyBjb3JyZWN0LgorICAgICAg
ICAgICAgIyBKdXN0IHB1dCBpbiBzb21ldGhpbmcgc28gd2UgZG9uJ3QgY3Jhc2ggYW5kIGNhbiBt
b3ZlIG9uLgorICAgICAgICAgICAgcmVhbF9uYW1lID0gcGFyYW1ldGVyc1stMV0KKyAgICAgICAg
ICAgIG1vZGlmaWVycyA9IFtwLm5hbWUgZm9yIHAgaW4gc2VsZi5fR2V0UGFyYW1ldGVycygpXQor
ICAgICAgICAgICAgZGVsIG1vZGlmaWVyc1stMV0gICAgICAgICAgICMgUmVtb3ZlIHRyYWlsaW5n
ICcpJy4KKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9DcmVhdGVWYXJpYWJsZShpbmRpY2VzLCBy
ZWFsX25hbWUubmFtZSwgaW5kaWNlcy5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1vZGlmaWVycywgJycsIE5vbmUpCisKKyAgICAgICAgaWYgdG9rZW4ubmFt
ZSA9PSAneyc6CisgICAgICAgICAgICBib2R5ID0gbGlzdChzZWxmLkdldFNjb3BlKCkpCisgICAg
ICAgICAgICBkZWwgYm9keVstMV0gICAgICAgICAgICAgICAgIyBSZW1vdmUgdHJhaWxpbmcgJ30n
LgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYm9keSA9IE5vbmUKKyAgICAgICAgICAgIGlm
IHRva2VuLm5hbWUgPT0gJz0nOgorICAgICAgICAgICAgICAgIHRva2VuID0gc2VsZi5fR2V0TmV4
dFRva2VuKCkKKworICAgICAgICAgICAgICAgIGlmIHRva2VuLm5hbWUgPT0gJ2RlZmF1bHQnIG9y
IHRva2VuLm5hbWUgPT0gJ2RlbGV0ZSc6CisgICAgICAgICAgICAgICAgICAgICMgSWdub3JlIGV4
cGxpY2l0bHkgZGVmYXVsdGVkIGFuZCBkZWxldGVkIHNwZWNpYWwgbWVtYmVycworICAgICAgICAg
ICAgICAgICAgICAjIGluIEMrKzExLgorICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IHNlbGYu
X0dldE5leHRUb2tlbigpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAg
ICAgIyBIYW5kbGUgcHVyZS12aXJ0dWFsIGRlY2xhcmF0aW9ucy4KKyAgICAgICAgICAgICAgICAg
ICAgYXNzZXJ0IHRva2VuLnRva2VuX3R5cGUgPT0gdG9rZW5pemUuQ09OU1RBTlQsIHRva2VuCisg
ICAgICAgICAgICAgICAgICAgIGFzc2VydCB0b2tlbi5uYW1lID09ICcwJywgdG9rZW4KKyAgICAg
ICAgICAgICAgICAgICAgbW9kaWZpZXJzIHw9IEZVTkNUSU9OX1BVUkVfVklSVFVBTAorICAgICAg
ICAgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX0dldE5leHRUb2tlbigpCisKKyAgICAgICAgICAg
IGlmIHRva2VuLm5hbWUgPT0gJ1snOgorICAgICAgICAgICAgICAgICMgVE9ETyhubm9yd2l0eik6
IHN0b3JlIHRva2VucyBhbmQgaW1wcm92ZSBwYXJzaW5nLgorICAgICAgICAgICAgICAgICMgdGVt
cGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOPiBjaGFyICgmQVNIKFQgKCZzZXEpW05dKSlbTl07
CisgICAgICAgICAgICAgICAgdG9rZW5zID0gbGlzdChzZWxmLl9HZXRNYXRjaGluZ0NoYXIoJ1sn
LCAnXScpKQorICAgICAgICAgICAgICAgIHRva2VuID0gc2VsZi5fR2V0TmV4dFRva2VuKCkKKwor
ICAgICAgICAgICAgYXNzZXJ0IHRva2VuLm5hbWUgPT0gJzsnLCAodG9rZW4sIHJldHVybl90eXBl
X2FuZF9uYW1lLCBwYXJhbWV0ZXJzKQorCisgICAgICAgICMgTG9va3MgbGlrZSB3ZSBnb3QgYSBt
ZXRob2QsIG5vdCBhIGZ1bmN0aW9uLgorICAgICAgICBpZiBsZW4ocmV0dXJuX3R5cGUpID4gMiBh
bmQgcmV0dXJuX3R5cGVbLTFdLm5hbWUgPT0gJzo6JzoKKyAgICAgICAgICAgIHJldHVybl90eXBl
LCBpbl9jbGFzcyA9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9HZXRSZXR1cm5U
eXBlQW5kQ2xhc3NOYW1lKHJldHVybl90eXBlKQorICAgICAgICAgICAgcmV0dXJuIE1ldGhvZChp
bmRpY2VzLnN0YXJ0LCBpbmRpY2VzLmVuZCwgbmFtZS5uYW1lLCBpbl9jbGFzcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuX3R5cGUsIHBhcmFtZXRlcnMsIG1vZGlmaWVycywgdGVt
cGxhdGVkX3R5cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5LCBzZWxmLm5hbWVz
cGFjZV9zdGFjaykKKyAgICAgICAgcmV0dXJuIEZ1bmN0aW9uKGluZGljZXMuc3RhcnQsIGluZGlj
ZXMuZW5kLCBuYW1lLm5hbWUsIHJldHVybl90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
cGFyYW1ldGVycywgbW9kaWZpZXJzLCB0ZW1wbGF0ZWRfdHlwZXMsIGJvZHksCisgICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLm5hbWVzcGFjZV9zdGFjaykKKworICAgIGRlZiBfR2V0UmV0dXJu
VHlwZUFuZENsYXNzTmFtZShzZWxmLCB0b2tlbl9zZXEpOgorICAgICAgICAjIFNwbGl0dGluZyB0
aGUgcmV0dXJuIHR5cGUgZnJvbSB0aGUgY2xhc3MgbmFtZSBpbiBhIG1ldGhvZAorICAgICAgICAj
IGNhbiBiZSB0cmlja3kuICBGb3IgZXhhbXBsZSwgUmV0dXJuOjpUeXBlOjpJczo6SGFyZDo6VG86
OkZpbmQoKS4KKyAgICAgICAgIyBXaGVyZSBpcyB0aGUgcmV0dXJuIHR5cGUgYW5kIHdoZXJlIGlz
IHRoZSBjbGFzcyBuYW1lPworICAgICAgICAjIFRoZSBoZXVyaXN0aWMgdXNlZCBpcyB0byBwdWxs
IHRoZSBsYXN0IG5hbWUgYXMgdGhlIGNsYXNzIG5hbWUuCisgICAgICAgICMgVGhpcyBpbmNsdWRl
cyBhbGwgdGhlIHRlbXBsYXRlZCB0eXBlIGluZm8uCisgICAgICAgICMgVE9ETyhubm9yd2l0eik6
IGlmIHRoZXJlIGlzIG9ubHkgT25lIG5hbWUgbGlrZSBpbiB0aGUKKyAgICAgICAgIyBleGFtcGxl
IGFib3ZlLCBwdW50IGFuZCBhc3N1bWUgdGhlIGxhc3QgYml0IGlzIHRoZSBjbGFzcyBuYW1lLgor
CisgICAgICAgICMgSWdub3JlIGEgOjogcHJlZml4LCBpZiBleGlzdHMgc28gd2UgY2FuIGZpbmQg
dGhlIGZpcnN0IHJlYWwgbmFtZS4KKyAgICAgICAgaSA9IDAKKyAgICAgICAgaWYgdG9rZW5fc2Vx
WzBdLm5hbWUgPT0gJzo6JzoKKyAgICAgICAgICAgIGkgPSAxCisgICAgICAgICMgSWdub3JlIGEg
Ojogc3VmZml4LCBpZiBleGlzdHMuCisgICAgICAgIGVuZCA9IGxlbih0b2tlbl9zZXEpIC0gMQor
ICAgICAgICBpZiB0b2tlbl9zZXFbZW5kLTFdLm5hbWUgPT0gJzo6JzoKKyAgICAgICAgICAgIGVu
ZCAtPSAxCisKKyAgICAgICAgIyBNYWtlIGEgY29weSBvZiB0aGUgc2VxdWVuY2Ugc28gd2UgY2Fu
IGFwcGVuZCBhIHNlbnRpbmVsCisgICAgICAgICMgdmFsdWUuIFRoaXMgaXMgcmVxdWlyZWQgZm9y
IEdldE5hbWUgd2lsbCBoYXMgdG8gaGF2ZSBzb21lCisgICAgICAgICMgdGVybWluYXRpbmcgY29u
ZGl0aW9uIGJleW9uZCB0aGUgbGFzdCBuYW1lLgorICAgICAgICBzZXFfY29weSA9IHRva2VuX3Nl
cVtpOmVuZF0KKyAgICAgICAgc2VxX2NvcHkuYXBwZW5kKHRva2VuaXplLlRva2VuKHRva2VuaXpl
LlNZTlRBWCwgJycsIDAsIDApKQorICAgICAgICBuYW1lcyA9IFtdCisgICAgICAgIHdoaWxlIGkg
PCBlbmQ6CisgICAgICAgICAgICAjIEl0ZXJhdGUgdGhyb3VnaCB0aGUgc2VxdWVuY2UgcGFyc2lu
ZyBvdXQgZWFjaCBuYW1lLgorICAgICAgICAgICAgbmV3X25hbWUsIG5leHQgPSBzZWxmLkdldE5h
bWUoc2VxX2NvcHlbaTpdKQorICAgICAgICAgICAgYXNzZXJ0IG5ld19uYW1lLCAnR290IGVtcHR5
IG5ld19uYW1lLCBuZXh0PSVzJyAlIG5leHQKKyAgICAgICAgICAgICMgV2UgZ290IGEgcG9pbnRl
ciBvciByZWYuICBBZGQgaXQgdG8gdGhlIG5hbWUuCisgICAgICAgICAgICBpZiBuZXh0IGFuZCBu
ZXh0LnRva2VuX3R5cGUgPT0gdG9rZW5pemUuU1lOVEFYOgorICAgICAgICAgICAgICAgIG5ld19u
YW1lLmFwcGVuZChuZXh0KQorICAgICAgICAgICAgbmFtZXMuYXBwZW5kKG5ld19uYW1lKQorICAg
ICAgICAgICAgaSArPSBsZW4obmV3X25hbWUpCisKKyAgICAgICAgIyBOb3cgdGhhdCB3ZSBoYXZl
IHRoZSBuYW1lcywgaXQncyB0aW1lIHRvIHVuZG8gd2hhdCB3ZSBkaWQuCisKKyAgICAgICAgIyBS
ZW1vdmUgdGhlIHNlbnRpbmVsIHZhbHVlLgorICAgICAgICBuYW1lc1stMV0ucG9wKCkKKyAgICAg
ICAgIyBGbGF0dGVuIHRoZSB0b2tlbiBzZXF1ZW5jZSBmb3IgdGhlIHJldHVybiB0eXBlLgorICAg
ICAgICByZXR1cm5fdHlwZSA9IFtlIGZvciBzZXEgaW4gbmFtZXNbOi0xXSBmb3IgZSBpbiBzZXFd
CisgICAgICAgICMgVGhlIGNsYXNzIG5hbWUgaXMgdGhlIGxhc3QgbmFtZS4KKyAgICAgICAgY2xh
c3NfbmFtZSA9IG5hbWVzWy0xXQorICAgICAgICByZXR1cm4gcmV0dXJuX3R5cGUsIGNsYXNzX25h
bWUKKworICAgIGRlZiBoYW5kbGVfYm9vbChzZWxmKToKKyAgICAgICAgcGFzcworCisgICAgZGVm
IGhhbmRsZV9jaGFyKHNlbGYpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgaGFuZGxlX2ludChz
ZWxmKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIGhhbmRsZV9sb25nKHNlbGYpOgorICAgICAg
ICBwYXNzCisKKyAgICBkZWYgaGFuZGxlX3Nob3J0KHNlbGYpOgorICAgICAgICBwYXNzCisKKyAg
ICBkZWYgaGFuZGxlX2RvdWJsZShzZWxmKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIGhhbmRs
ZV9mbG9hdChzZWxmKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIGhhbmRsZV92b2lkKHNlbGYp
OgorICAgICAgICBwYXNzCisKKyAgICBkZWYgaGFuZGxlX3djaGFyX3Qoc2VsZik6CisgICAgICAg
IHBhc3MKKworICAgIGRlZiBoYW5kbGVfdW5zaWduZWQoc2VsZik6CisgICAgICAgIHBhc3MKKwor
ICAgIGRlZiBoYW5kbGVfc2lnbmVkKHNlbGYpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgX0dl
dE5lc3RlZFR5cGUoc2VsZiwgY3Rvcik6CisgICAgICAgIG5hbWUgPSBOb25lCisgICAgICAgIG5h
bWVfdG9rZW5zLCB0b2tlbiA9IHNlbGYuR2V0TmFtZSgpCisgICAgICAgIGlmIG5hbWVfdG9rZW5z
OgorICAgICAgICAgICAgbmFtZSA9ICcnLmpvaW4oW3QubmFtZSBmb3IgdCBpbiBuYW1lX3Rva2Vu
c10pCisKKyAgICAgICAgIyBIYW5kbGUgZm9yd2FyZCBkZWNsYXJhdGlvbnMuCisgICAgICAgIGlm
IHRva2VuLnRva2VuX3R5cGUgPT0gdG9rZW5pemUuU1lOVEFYIGFuZCB0b2tlbi5uYW1lID09ICc7
JzoKKyAgICAgICAgICAgIHJldHVybiBjdG9yKHRva2VuLnN0YXJ0LCB0b2tlbi5lbmQsIG5hbWUs
IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm5hbWVzcGFjZV9zdGFjaykKKwor
ICAgICAgICBpZiB0b2tlbi50b2tlbl90eXBlID09IHRva2VuaXplLk5BTUUgYW5kIHNlbGYuX2hh
bmRsaW5nX3R5cGVkZWY6CisgICAgICAgICAgICBzZWxmLl9BZGRCYWNrVG9rZW4odG9rZW4pCisg
ICAgICAgICAgICByZXR1cm4gY3Rvcih0b2tlbi5zdGFydCwgdG9rZW4uZW5kLCBuYW1lLCBOb25l
LAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5uYW1lc3BhY2Vfc3RhY2spCisKKyAgICAg
ICAgIyBNdXN0IGJlIHRoZSB0eXBlIGRlY2xhcmF0aW9uLgorICAgICAgICBmaWVsZHMgPSBsaXN0
KHNlbGYuX0dldE1hdGNoaW5nQ2hhcigneycsICd9JykpCisgICAgICAgIGRlbCBmaWVsZHNbLTFd
ICAgICAgICAgICAgICAgICAgIyBSZW1vdmUgdHJhaWxpbmcgJ30nLgorICAgICAgICBpZiB0b2tl
bi50b2tlbl90eXBlID09IHRva2VuaXplLlNZTlRBWCBhbmQgdG9rZW4ubmFtZSA9PSAneyc6Cisg
ICAgICAgICAgICBuZXh0ID0gc2VsZi5fR2V0TmV4dFRva2VuKCkKKyAgICAgICAgICAgIG5ld190
eXBlID0gY3Rvcih0b2tlbi5zdGFydCwgdG9rZW4uZW5kLCBuYW1lLCBmaWVsZHMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5uYW1lc3BhY2Vfc3RhY2spCisgICAgICAgICAgICAj
IEEgbmFtZSBtZWFucyB0aGlzIGlzIGFuIGFub255bW91cyB0eXBlIGFuZCB0aGUgbmFtZQorICAg
ICAgICAgICAgIyBpcyB0aGUgdmFyaWFibGUgZGVjbGFyYXRpb24uCisgICAgICAgICAgICBpZiBu
ZXh0LnRva2VuX3R5cGUgIT0gdG9rZW5pemUuTkFNRToKKyAgICAgICAgICAgICAgICByZXR1cm4g
bmV3X3R5cGUKKyAgICAgICAgICAgIG5hbWUgPSBuZXdfdHlwZQorICAgICAgICAgICAgdG9rZW4g
PSBuZXh0CisKKyAgICAgICAgIyBNdXN0IGJlIHZhcmlhYmxlIGRlY2xhcmF0aW9uIHVzaW5nIHRo
ZSB0eXBlIHByZWZpeGVkIHdpdGgga2V5d29yZC4KKyAgICAgICAgYXNzZXJ0IHRva2VuLnRva2Vu
X3R5cGUgPT0gdG9rZW5pemUuTkFNRSwgdG9rZW4KKyAgICAgICAgcmV0dXJuIHNlbGYuX0NyZWF0
ZVZhcmlhYmxlKHRva2VuLCB0b2tlbi5uYW1lLCBuYW1lLCBbXSwgJycsIE5vbmUpCisKKyAgICBk
ZWYgaGFuZGxlX3N0cnVjdChzZWxmKToKKyAgICAgICAgIyBTcGVjaWFsIGNhc2UgdGhlIGhhbmRs
aW5nIHR5cGVkZWYvYWxpYXNpbmcgb2Ygc3RydWN0cyBoZXJlLgorICAgICAgICAjIEl0IHdvdWxk
IGJlIGEgcGFpbiB0byBoYW5kbGUgaW4gdGhlIGNsYXNzIGNvZGUuCisgICAgICAgIG5hbWVfdG9r
ZW5zLCB2YXJfdG9rZW4gPSBzZWxmLkdldE5hbWUoKQorICAgICAgICBpZiBuYW1lX3Rva2VuczoK
KyAgICAgICAgICAgIG5leHRfdG9rZW4gPSBzZWxmLl9HZXROZXh0VG9rZW4oKQorICAgICAgICAg
ICAgaXNfc3ludGF4ID0gKHZhcl90b2tlbi50b2tlbl90eXBlID09IHRva2VuaXplLlNZTlRBWCBh
bmQKKyAgICAgICAgICAgICAgICAgICAgICAgICB2YXJfdG9rZW4ubmFtZVswXSBpbiAnKiYnKQor
ICAgICAgICAgICAgaXNfdmFyaWFibGUgPSAodmFyX3Rva2VuLnRva2VuX3R5cGUgPT0gdG9rZW5p
emUuTkFNRSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRfdG9rZW4ubmFtZSA9
PSAnOycpCisgICAgICAgICAgICB2YXJpYWJsZSA9IHZhcl90b2tlbgorICAgICAgICAgICAgaWYg
aXNfc3ludGF4IGFuZCBub3QgaXNfdmFyaWFibGU6CisgICAgICAgICAgICAgICAgdmFyaWFibGUg
PSBuZXh0X3Rva2VuCisgICAgICAgICAgICAgICAgdGVtcCA9IHNlbGYuX0dldE5leHRUb2tlbigp
CisgICAgICAgICAgICAgICAgaWYgdGVtcC50b2tlbl90eXBlID09IHRva2VuaXplLlNZTlRBWCBh
bmQgdGVtcC5uYW1lID09ICcoJzoKKyAgICAgICAgICAgICAgICAgICAgIyBIYW5kbGUgbWV0aG9k
cyBkZWNsYXJlZCB0byByZXR1cm4gYSBzdHJ1Y3QuCisgICAgICAgICAgICAgICAgICAgIHQwID0g
bmFtZV90b2tlbnNbMF0KKyAgICAgICAgICAgICAgICAgICAgc3RydWN0ID0gdG9rZW5pemUuVG9r
ZW4odG9rZW5pemUuTkFNRSwgJ3N0cnVjdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHQwLnN0YXJ0LTcsIHQwLnN0YXJ0LTIpCisgICAgICAgICAgICAgICAg
ICAgIHR5cGVfYW5kX25hbWUgPSBbc3RydWN0XQorICAgICAgICAgICAgICAgICAgICB0eXBlX2Fu
ZF9uYW1lLmV4dGVuZChuYW1lX3Rva2VucykKKyAgICAgICAgICAgICAgICAgICAgdHlwZV9hbmRf
bmFtZS5leHRlbmQoKHZhcl90b2tlbiwgbmV4dF90b2tlbikpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBzZWxmLl9HZXRNZXRob2QodHlwZV9hbmRfbmFtZSwgMCwgTm9uZSwgRmFsc2UpCisg
ICAgICAgICAgICAgICAgYXNzZXJ0IHRlbXAubmFtZSA9PSAnOycsICh0ZW1wLCBuYW1lX3Rva2Vu
cywgdmFyX3Rva2VuKQorICAgICAgICAgICAgaWYgaXNfc3ludGF4IG9yIChpc192YXJpYWJsZSBh
bmQgbm90IHNlbGYuX2hhbmRsaW5nX3R5cGVkZWYpOgorICAgICAgICAgICAgICAgIG1vZGlmaWVy
cyA9IFsnc3RydWN0J10KKyAgICAgICAgICAgICAgICB0eXBlX25hbWUgPSAnJy5qb2luKFt0Lm5h
bWUgZm9yIHQgaW4gbmFtZV90b2tlbnNdKQorICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gbmFt
ZV90b2tlbnNbMF0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fQ3JlYXRlVmFyaWFibGUo
cG9zaXRpb24sIHZhcmlhYmxlLm5hbWUsIHR5cGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzLCB2YXJfdG9rZW4ubmFtZSwgTm9uZSkK
KyAgICAgICAgICAgIG5hbWVfdG9rZW5zLmV4dGVuZCgodmFyX3Rva2VuLCBuZXh0X3Rva2VuKSkK
KyAgICAgICAgICAgIHNlbGYuX0FkZEJhY2tUb2tlbnMobmFtZV90b2tlbnMpCisgICAgICAgIGVs
c2U6CisgICAgICAgICAgICBzZWxmLl9BZGRCYWNrVG9rZW4odmFyX3Rva2VuKQorICAgICAgICBy
ZXR1cm4gc2VsZi5fR2V0Q2xhc3MoU3RydWN0LCBWSVNJQklMSVRZX1BVQkxJQywgTm9uZSkKKwor
ICAgIGRlZiBoYW5kbGVfdW5pb24oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9HZXROZXN0
ZWRUeXBlKFVuaW9uKQorCisgICAgZGVmIGhhbmRsZV9lbnVtKHNlbGYpOgorICAgICAgICByZXR1
cm4gc2VsZi5fR2V0TmVzdGVkVHlwZShFbnVtKQorCisgICAgZGVmIGhhbmRsZV9hdXRvKHNlbGYp
OgorICAgICAgICAjIFRPRE8obm5vcndpdHopOiB3YXJuIGFib3V0IHVzaW5nIGF1dG8/ICBQcm9i
YWJseSBub3Qgc2luY2UgaXQKKyAgICAgICAgIyB3aWxsIGJlIHJlY2xhaW1lZCBhbmQgdXNlZnVs
IGZvciBDKysweC4KKyAgICAgICAgcGFzcworCisgICAgZGVmIGhhbmRsZV9yZWdpc3RlcihzZWxm
KToKKyAgICAgICAgcGFzcworCisgICAgZGVmIGhhbmRsZV9jb25zdChzZWxmKToKKyAgICAgICAg
cGFzcworCisgICAgZGVmIGhhbmRsZV9pbmxpbmUoc2VsZik6CisgICAgICAgIHBhc3MKKworICAg
IGRlZiBoYW5kbGVfZXh0ZXJuKHNlbGYpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgaGFuZGxl
X3N0YXRpYyhzZWxmKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIGhhbmRsZV92aXJ0dWFsKHNl
bGYpOgorICAgICAgICAjIFdoYXQgZm9sbG93cyBtdXN0IGJlIGEgbWV0aG9kLgorICAgICAgICB0
b2tlbiA9IHRva2VuMiA9IHNlbGYuX0dldE5leHRUb2tlbigpCisgICAgICAgIGlmIHRva2VuLm5h
bWUgPT0gJ2lubGluZSc6CisgICAgICAgICAgICAjIEhBQ0sobm5vcndpdHopOiBoYW5kbGUgaW5s
aW5lIGR0b3JzIGJ5IGlnbm9yaW5nICdpbmxpbmUnLgorICAgICAgICAgICAgdG9rZW4yID0gc2Vs
Zi5fR2V0TmV4dFRva2VuKCkKKyAgICAgICAgaWYgdG9rZW4yLnRva2VuX3R5cGUgPT0gdG9rZW5p
emUuU1lOVEFYIGFuZCB0b2tlbjIubmFtZSA9PSAnfic6CisgICAgICAgICAgICByZXR1cm4gc2Vs
Zi5HZXRNZXRob2QoRlVOQ1RJT05fVklSVFVBTCArIEZVTkNUSU9OX0RUT1IsIE5vbmUpCisgICAg
ICAgIGFzc2VydCB0b2tlbi50b2tlbl90eXBlID09IHRva2VuaXplLk5BTUUgb3IgdG9rZW4ubmFt
ZSA9PSAnOjonLCB0b2tlbgorICAgICAgICByZXR1cm5fdHlwZV9hbmRfbmFtZSA9IHNlbGYuX0dl
dFRva2Vuc1VwVG8odG9rZW5pemUuU1lOVEFYLCAnKCcpICAjICkKKyAgICAgICAgcmV0dXJuX3R5
cGVfYW5kX25hbWUuaW5zZXJ0KDAsIHRva2VuKQorICAgICAgICBpZiB0b2tlbjIgaXMgbm90IHRv
a2VuOgorICAgICAgICAgICAgcmV0dXJuX3R5cGVfYW5kX25hbWUuaW5zZXJ0KDEsIHRva2VuMikK
KyAgICAgICAgcmV0dXJuIHNlbGYuX0dldE1ldGhvZChyZXR1cm5fdHlwZV9hbmRfbmFtZSwgRlVO
Q1RJT05fVklSVFVBTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lLCBGYWxz
ZSkKKworICAgIGRlZiBoYW5kbGVfdm9sYXRpbGUoc2VsZik6CisgICAgICAgIHBhc3MKKworICAg
IGRlZiBoYW5kbGVfbXV0YWJsZShzZWxmKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIGhhbmRs
ZV9wdWJsaWMoc2VsZik6CisgICAgICAgIGFzc2VydCBzZWxmLmluX2NsYXNzCisgICAgICAgIHNl
bGYudmlzaWJpbGl0eSA9IFZJU0lCSUxJVFlfUFVCTElDCisKKyAgICBkZWYgaGFuZGxlX3Byb3Rl
Y3RlZChzZWxmKToKKyAgICAgICAgYXNzZXJ0IHNlbGYuaW5fY2xhc3MKKyAgICAgICAgc2VsZi52
aXNpYmlsaXR5ID0gVklTSUJJTElUWV9QUk9URUNURUQKKworICAgIGRlZiBoYW5kbGVfcHJpdmF0
ZShzZWxmKToKKyAgICAgICAgYXNzZXJ0IHNlbGYuaW5fY2xhc3MKKyAgICAgICAgc2VsZi52aXNp
YmlsaXR5ID0gVklTSUJJTElUWV9QUklWQVRFCisKKyAgICBkZWYgaGFuZGxlX2ZyaWVuZChzZWxm
KToKKyAgICAgICAgdG9rZW5zID0gc2VsZi5fR2V0VG9rZW5zVXBUbyh0b2tlbml6ZS5TWU5UQVgs
ICc7JykKKyAgICAgICAgYXNzZXJ0IHRva2VucworICAgICAgICB0MCA9IHRva2Vuc1swXQorICAg
ICAgICByZXR1cm4gRnJpZW5kKHQwLnN0YXJ0LCB0MC5lbmQsIHRva2Vucywgc2VsZi5uYW1lc3Bh
Y2Vfc3RhY2spCisKKyAgICBkZWYgaGFuZGxlX3N0YXRpY19jYXN0KHNlbGYpOgorICAgICAgICBw
YXNzCisKKyAgICBkZWYgaGFuZGxlX2NvbnN0X2Nhc3Qoc2VsZik6CisgICAgICAgIHBhc3MKKwor
ICAgIGRlZiBoYW5kbGVfZHluYW1pY19jYXN0KHNlbGYpOgorICAgICAgICBwYXNzCisKKyAgICBk
ZWYgaGFuZGxlX3JlaW50ZXJwcmV0X2Nhc3Qoc2VsZik6CisgICAgICAgIHBhc3MKKworICAgIGRl
ZiBoYW5kbGVfbmV3KHNlbGYpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgaGFuZGxlX2RlbGV0
ZShzZWxmKToKKyAgICAgICAgdG9rZW5zID0gc2VsZi5fR2V0VG9rZW5zVXBUbyh0b2tlbml6ZS5T
WU5UQVgsICc7JykKKyAgICAgICAgYXNzZXJ0IHRva2VucworICAgICAgICByZXR1cm4gRGVsZXRl
KHRva2Vuc1swXS5zdGFydCwgdG9rZW5zWzBdLmVuZCwgdG9rZW5zKQorCisgICAgZGVmIGhhbmRs
ZV90eXBlZGVmKHNlbGYpOgorICAgICAgICB0b2tlbiA9IHNlbGYuX0dldE5leHRUb2tlbigpCisg
ICAgICAgIGlmICh0b2tlbi50b2tlbl90eXBlID09IHRva2VuaXplLk5BTUUgYW5kCisgICAgICAg
ICAgICBrZXl3b3Jkcy5Jc0tleXdvcmQodG9rZW4ubmFtZSkpOgorICAgICAgICAgICAgIyBUb2tl
biBtdXN0IGJlIHN0cnVjdC9lbnVtL3VuaW9uL2NsYXNzLgorICAgICAgICAgICAgbWV0aG9kID0g
Z2V0YXR0cihzZWxmLCAnaGFuZGxlXycgKyB0b2tlbi5uYW1lKQorICAgICAgICAgICAgc2VsZi5f
aGFuZGxpbmdfdHlwZWRlZiA9IFRydWUKKyAgICAgICAgICAgIHRva2VucyA9IFttZXRob2QoKV0K
KyAgICAgICAgICAgIHNlbGYuX2hhbmRsaW5nX3R5cGVkZWYgPSBGYWxzZQorICAgICAgICBlbHNl
OgorICAgICAgICAgICAgdG9rZW5zID0gW3Rva2VuXQorCisgICAgICAgICMgR2V0IHRoZSByZW1h
aW5kZXIgb2YgdGhlIHR5cGVkZWYgdXAgdG8gdGhlIHNlbWktY29sb24uCisgICAgICAgIHRva2Vu
cy5leHRlbmQoc2VsZi5fR2V0VG9rZW5zVXBUbyh0b2tlbml6ZS5TWU5UQVgsICc7JykpCisKKyAg
ICAgICAgIyBUT0RPKG5ub3J3aXR6KTogY2xlYW4gYWxsIHRoaXMgdXAuCisgICAgICAgIGFzc2Vy
dCB0b2tlbnMKKyAgICAgICAgbmFtZSA9IHRva2Vucy5wb3AoKQorICAgICAgICBpbmRpY2VzID0g
bmFtZQorICAgICAgICBpZiB0b2tlbnM6CisgICAgICAgICAgICBpbmRpY2VzID0gdG9rZW5zWzBd
CisgICAgICAgIGlmIG5vdCBpbmRpY2VzOgorICAgICAgICAgICAgaW5kaWNlcyA9IHRva2VuCisg
ICAgICAgIGlmIG5hbWUubmFtZSA9PSAnKSc6CisgICAgICAgICAgICAjIEhBQ0sobm5vcndpdHop
OiBIYW5kbGUgcG9pbnRlcnMgdG8gZnVuY3Rpb25zICJwcm9wZXJseSIuCisgICAgICAgICAgICBp
ZiAobGVuKHRva2VucykgPj0gNCBhbmQKKyAgICAgICAgICAgICAgICB0b2tlbnNbMV0ubmFtZSA9
PSAnKCcgYW5kIHRva2Vuc1syXS5uYW1lID09ICcqJyk6CisgICAgICAgICAgICAgICAgdG9rZW5z
LmFwcGVuZChuYW1lKQorICAgICAgICAgICAgICAgIG5hbWUgPSB0b2tlbnNbM10KKyAgICAgICAg
ZWxpZiBuYW1lLm5hbWUgPT0gJ10nOgorICAgICAgICAgICAgIyBIQUNLKG5ub3J3aXR6KTogSGFu
ZGxlIGFycmF5cyBwcm9wZXJseS4KKyAgICAgICAgICAgIGlmIGxlbih0b2tlbnMpID49IDI6Cisg
ICAgICAgICAgICAgICAgdG9rZW5zLmFwcGVuZChuYW1lKQorICAgICAgICAgICAgICAgIG5hbWUg
PSB0b2tlbnNbMV0KKyAgICAgICAgbmV3X3R5cGUgPSB0b2tlbnMKKyAgICAgICAgaWYgdG9rZW5z
IGFuZCBpc2luc3RhbmNlKHRva2Vuc1swXSwgdG9rZW5pemUuVG9rZW4pOgorICAgICAgICAgICAg
bmV3X3R5cGUgPSBzZWxmLmNvbnZlcnRlci5Ub1R5cGUodG9rZW5zKVswXQorICAgICAgICByZXR1
cm4gVHlwZWRlZihpbmRpY2VzLnN0YXJ0LCBpbmRpY2VzLmVuZCwgbmFtZS5uYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICBuZXdfdHlwZSwgc2VsZi5uYW1lc3BhY2Vfc3RhY2spCisKKyAgICBk
ZWYgaGFuZGxlX3R5cGVpZChzZWxmKToKKyAgICAgICAgcGFzcyAgIyBOb3QgbmVlZGVkIHlldC4K
KworICAgIGRlZiBoYW5kbGVfdHlwZW5hbWUoc2VsZik6CisgICAgICAgIHBhc3MgICMgTm90IG5l
ZWRlZCB5ZXQuCisKKyAgICBkZWYgX0dldFRlbXBsYXRlZFR5cGVzKHNlbGYpOgorICAgICAgICBy
ZXN1bHQgPSB7fQorICAgICAgICB0b2tlbnMgPSBsaXN0KHNlbGYuX0dldE1hdGNoaW5nQ2hhcign
PCcsICc+JykpCisgICAgICAgIGxlbl90b2tlbnMgPSBsZW4odG9rZW5zKSAtIDEgICAgIyBJZ25v
cmUgdHJhaWxpbmcgJz4nLgorICAgICAgICBpID0gMAorICAgICAgICB3aGlsZSBpIDwgbGVuX3Rv
a2VuczoKKyAgICAgICAgICAgIGtleSA9IHRva2Vuc1tpXS5uYW1lCisgICAgICAgICAgICBpICs9
IDEKKyAgICAgICAgICAgIGlmIGtleXdvcmRzLklzS2V5d29yZChrZXkpIG9yIGtleSA9PSAnLCc6
CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHR5cGVfbmFtZSA9IGRlZmF1
bHQgPSBOb25lCisgICAgICAgICAgICBpZiBpIDwgbGVuX3Rva2VuczoKKyAgICAgICAgICAgICAg
ICBpICs9IDEKKyAgICAgICAgICAgICAgICBpZiB0b2tlbnNbaS0xXS5uYW1lID09ICc9JzoKKyAg
ICAgICAgICAgICAgICAgICAgYXNzZXJ0IGkgPCBsZW5fdG9rZW5zLCAnJXMgJXMnICUgKGksIHRv
a2VucykKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCwgdW51c2VkX25leHRfdG9rZW4gPSBz
ZWxmLkdldE5hbWUodG9rZW5zW2k6XSkKKyAgICAgICAgICAgICAgICAgICAgaSArPSBsZW4oZGVm
YXVsdCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpZiB0b2tl
bnNbaS0xXS5uYW1lICE9ICcsJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICMgV2UgZ290IHNv
bWV0aGluZyBsaWtlOiBUeXBlIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgIyBS
ZS1hZGp1c3QgdGhlIGtleSAodmFyaWFibGUpIGFuZCB0eXBlX25hbWUgKFR5cGUpLgorICAgICAg
ICAgICAgICAgICAgICAgICAga2V5ID0gdG9rZW5zW2ktMV0ubmFtZQorICAgICAgICAgICAgICAg
ICAgICAgICAgdHlwZV9uYW1lID0gdG9rZW5zW2ktMl0KKworICAgICAgICAgICAgcmVzdWx0W2tl
eV0gPSAodHlwZV9uYW1lLCBkZWZhdWx0KQorICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBk
ZWYgaGFuZGxlX3RlbXBsYXRlKHNlbGYpOgorICAgICAgICB0b2tlbiA9IHNlbGYuX0dldE5leHRU
b2tlbigpCisgICAgICAgIGFzc2VydCB0b2tlbi50b2tlbl90eXBlID09IHRva2VuaXplLlNZTlRB
WCwgdG9rZW4KKyAgICAgICAgYXNzZXJ0IHRva2VuLm5hbWUgPT0gJzwnLCB0b2tlbgorICAgICAg
ICB0ZW1wbGF0ZWRfdHlwZXMgPSBzZWxmLl9HZXRUZW1wbGF0ZWRUeXBlcygpCisgICAgICAgICMg
VE9ETyhubm9yd2l0eik6IGZvciBub3csIGp1c3QgaWdub3JlIHRoZSB0ZW1wbGF0ZSBwYXJhbXMu
CisgICAgICAgIHRva2VuID0gc2VsZi5fR2V0TmV4dFRva2VuKCkKKyAgICAgICAgaWYgdG9rZW4u
dG9rZW5fdHlwZSA9PSB0b2tlbml6ZS5OQU1FOgorICAgICAgICAgICAgaWYgdG9rZW4ubmFtZSA9
PSAnY2xhc3MnOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9HZXRDbGFzcyhDbGFzcywg
VklTSUJJTElUWV9QUklWQVRFLCB0ZW1wbGF0ZWRfdHlwZXMpCisgICAgICAgICAgICBlbGlmIHRv
a2VuLm5hbWUgPT0gJ3N0cnVjdCc6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX0dldENs
YXNzKFN0cnVjdCwgVklTSUJJTElUWV9QVUJMSUMsIHRlbXBsYXRlZF90eXBlcykKKyAgICAgICAg
ICAgIGVsaWYgdG9rZW4ubmFtZSA9PSAnZnJpZW5kJzoKKyAgICAgICAgICAgICAgICByZXR1cm4g
c2VsZi5oYW5kbGVfZnJpZW5kKCkKKyAgICAgICAgc2VsZi5fQWRkQmFja1Rva2VuKHRva2VuKQor
ICAgICAgICB0b2tlbnMsIGxhc3QgPSBzZWxmLl9HZXRWYXJUb2tlbnNVcFRvKHRva2VuaXplLlNZ
TlRBWCwgJygnLCAnOycpCisgICAgICAgIHRva2Vucy5hcHBlbmQobGFzdCkKKyAgICAgICAgc2Vs
Zi5fQWRkQmFja1Rva2Vucyh0b2tlbnMpCisgICAgICAgIGlmIGxhc3QubmFtZSA9PSAnKCc6Cisg
ICAgICAgICAgICByZXR1cm4gc2VsZi5HZXRNZXRob2QoRlVOQ1RJT05fTk9ORSwgdGVtcGxhdGVk
X3R5cGVzKQorICAgICAgICAjIE11c3QgYmUgYSB2YXJpYWJsZSBkZWZpbml0aW9uLgorICAgICAg
ICByZXR1cm4gTm9uZQorCisgICAgZGVmIGhhbmRsZV90cnVlKHNlbGYpOgorICAgICAgICBwYXNz
ICAjIE5vdGhpbmcgdG8gZG8uCisKKyAgICBkZWYgaGFuZGxlX2ZhbHNlKHNlbGYpOgorICAgICAg
ICBwYXNzICAjIE5vdGhpbmcgdG8gZG8uCisKKyAgICBkZWYgaGFuZGxlX2FzbShzZWxmKToKKyAg
ICAgICAgcGFzcyAgIyBOb3QgbmVlZGVkIHlldC4KKworICAgIGRlZiBoYW5kbGVfY2xhc3Moc2Vs
Zik6CisgICAgICAgIHJldHVybiBzZWxmLl9HZXRDbGFzcyhDbGFzcywgVklTSUJJTElUWV9QUklW
QVRFLCBOb25lKQorCisgICAgZGVmIF9HZXRCYXNlcyhzZWxmKToKKyAgICAgICAgIyBHZXQgYmFz
ZSBjbGFzc2VzLgorICAgICAgICBiYXNlcyA9IFtdCisgICAgICAgIHdoaWxlIDE6CisgICAgICAg
ICAgICB0b2tlbiA9IHNlbGYuX0dldE5leHRUb2tlbigpCisgICAgICAgICAgICBhc3NlcnQgdG9r
ZW4udG9rZW5fdHlwZSA9PSB0b2tlbml6ZS5OQU1FLCB0b2tlbgorICAgICAgICAgICAgIyBUT0RP
KG5ub3J3aXR6KTogc3RvcmUga2luZCBvZiBpbmhlcml0YW5jZS4uLm1heWJlLgorICAgICAgICAg
ICAgaWYgdG9rZW4ubmFtZSBub3QgaW4gKCdwdWJsaWMnLCAncHJvdGVjdGVkJywgJ3ByaXZhdGUn
KToKKyAgICAgICAgICAgICAgICAjIElmIGluaGVyaXRhbmNlIHR5cGUgaXMgbm90IHNwZWNpZmll
ZCwgaXQgaXMgcHJpdmF0ZS4KKyAgICAgICAgICAgICAgICAjIEp1c3QgcHV0IHRoZSB0b2tlbiBi
YWNrIHNvIHdlIGNhbiBmb3JtIGEgbmFtZS4KKyAgICAgICAgICAgICAgICAjIFRPRE8obm5vcndp
dHopOiBpdCB3b3VsZCBiZSBnb29kIHRvIHdhcm4gYWJvdXQgdGhpcy4KKyAgICAgICAgICAgICAg
ICBzZWxmLl9BZGRCYWNrVG9rZW4odG9rZW4pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgICAgICMgQ2hlY2sgZm9yIHZpcnR1YWwgaW5oZXJpdGFuY2UuCisgICAgICAgICAgICAgICAg
dG9rZW4gPSBzZWxmLl9HZXROZXh0VG9rZW4oKQorICAgICAgICAgICAgICAgIGlmIHRva2VuLm5h
bWUgIT0gJ3ZpcnR1YWwnOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9BZGRCYWNrVG9rZW4o
dG9rZW4pCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyBUT0RP
KG5ub3J3aXR6KTogc3RvcmUgdGhhdCB3ZSBnb3QgdmlydHVhbCBmb3IgdGhpcyBiYXNlLgorICAg
ICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBiYXNlLCBuZXh0X3Rva2VuID0gc2Vs
Zi5HZXROYW1lKCkKKyAgICAgICAgICAgIGJhc2VzX2FzdCA9IHNlbGYuY29udmVydGVyLlRvVHlw
ZShiYXNlKQorICAgICAgICAgICAgYXNzZXJ0IGxlbihiYXNlc19hc3QpID09IDEsIGJhc2VzX2Fz
dAorICAgICAgICAgICAgYmFzZXMuYXBwZW5kKGJhc2VzX2FzdFswXSkKKyAgICAgICAgICAgIGFz
c2VydCBuZXh0X3Rva2VuLnRva2VuX3R5cGUgPT0gdG9rZW5pemUuU1lOVEFYLCBuZXh0X3Rva2Vu
CisgICAgICAgICAgICBpZiBuZXh0X3Rva2VuLm5hbWUgPT0gJ3snOgorICAgICAgICAgICAgICAg
IHRva2VuID0gbmV4dF90b2tlbgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAj
IFN1cHBvcnQgbXVsdGlwbGUgaW5oZXJpdGFuY2UuCisgICAgICAgICAgICBhc3NlcnQgbmV4dF90
b2tlbi5uYW1lID09ICcsJywgbmV4dF90b2tlbgorICAgICAgICByZXR1cm4gYmFzZXMsIHRva2Vu
CisKKyAgICBkZWYgX0dldENsYXNzKHNlbGYsIGNsYXNzX3R5cGUsIHZpc2liaWxpdHksIHRlbXBs
YXRlZF90eXBlcyk6CisgICAgICAgIGNsYXNzX25hbWUgPSBOb25lCisgICAgICAgIGNsYXNzX3Rv
a2VuID0gc2VsZi5fR2V0TmV4dFRva2VuKCkKKyAgICAgICAgaWYgY2xhc3NfdG9rZW4udG9rZW5f
dHlwZSAhPSB0b2tlbml6ZS5OQU1FOgorICAgICAgICAgICAgYXNzZXJ0IGNsYXNzX3Rva2VuLnRv
a2VuX3R5cGUgPT0gdG9rZW5pemUuU1lOVEFYLCBjbGFzc190b2tlbgorICAgICAgICAgICAgdG9r
ZW4gPSBjbGFzc190b2tlbgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBTa2lwIGFueSBt
YWNybyAoZS5nLiBzdG9yYWdlIGNsYXNzIHNwZWNpZmllcnMpIGFmdGVyIHRoZQorICAgICAgICAg
ICAgIyAnY2xhc3MnIGtleXdvcmQuCisgICAgICAgICAgICBuZXh0X3Rva2VuID0gc2VsZi5fR2V0
TmV4dFRva2VuKCkKKyAgICAgICAgICAgIGlmIG5leHRfdG9rZW4udG9rZW5fdHlwZSA9PSB0b2tl
bml6ZS5OQU1FOgorICAgICAgICAgICAgICAgIHNlbGYuX0FkZEJhY2tUb2tlbihuZXh0X3Rva2Vu
KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLl9BZGRCYWNrVG9rZW5z
KFtjbGFzc190b2tlbiwgbmV4dF90b2tlbl0pCisgICAgICAgICAgICBuYW1lX3Rva2VucywgdG9r
ZW4gPSBzZWxmLkdldE5hbWUoKQorICAgICAgICAgICAgY2xhc3NfbmFtZSA9ICcnLmpvaW4oW3Qu
bmFtZSBmb3IgdCBpbiBuYW1lX3Rva2Vuc10pCisgICAgICAgIGJhc2VzID0gTm9uZQorICAgICAg
ICBpZiB0b2tlbi50b2tlbl90eXBlID09IHRva2VuaXplLlNZTlRBWDoKKyAgICAgICAgICAgIGlm
IHRva2VuLm5hbWUgPT0gJzsnOgorICAgICAgICAgICAgICAgICMgRm9yd2FyZCBkZWNsYXJhdGlv
bi4KKyAgICAgICAgICAgICAgICByZXR1cm4gY2xhc3NfdHlwZShjbGFzc190b2tlbi5zdGFydCwg
Y2xhc3NfdG9rZW4uZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNz
X25hbWUsIE5vbmUsIHRlbXBsYXRlZF90eXBlcywgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLm5hbWVzcGFjZV9zdGFjaykKKyAgICAgICAgICAgIGlmIHRva2Vu
Lm5hbWUgaW4gJyomJzoKKyAgICAgICAgICAgICAgICAjIElubGluZSBmb3J3YXJkIGRlY2xhcmF0
aW9uLiAgQ291bGQgYmUgbWV0aG9kIG9yIGRhdGEuCisgICAgICAgICAgICAgICAgbmFtZV90b2tl
biA9IHNlbGYuX0dldE5leHRUb2tlbigpCisgICAgICAgICAgICAgICAgbmV4dF90b2tlbiA9IHNl
bGYuX0dldE5leHRUb2tlbigpCisgICAgICAgICAgICAgICAgaWYgbmV4dF90b2tlbi5uYW1lID09
ICc7JzoKKyAgICAgICAgICAgICAgICAgICAgIyBIYW5kbGUgZGF0YQorICAgICAgICAgICAgICAg
ICAgICBtb2RpZmllcnMgPSBbJ2NsYXNzJ10KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNl
bGYuX0NyZWF0ZVZhcmlhYmxlKGNsYXNzX3Rva2VuLCBuYW1lX3Rva2VuLm5hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc19uYW1lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzLCB0
b2tlbi5uYW1lLCBOb25lKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg
ICAgICMgQXNzdW1lIHRoaXMgaXMgYSBtZXRob2QuCisgICAgICAgICAgICAgICAgICAgIHRva2Vu
cyA9IChjbGFzc190b2tlbiwgdG9rZW4sIG5hbWVfdG9rZW4sIG5leHRfdG9rZW4pCisgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX0FkZEJhY2tUb2tlbnModG9rZW5zKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gc2VsZi5HZXRNZXRob2QoRlVOQ1RJT05fTk9ORSwgTm9uZSkKKyAgICAgICAg
ICAgIGlmIHRva2VuLm5hbWUgPT0gJzonOgorICAgICAgICAgICAgICAgIGJhc2VzLCB0b2tlbiA9
IHNlbGYuX0dldEJhc2VzKCkKKworICAgICAgICBib2R5ID0gTm9uZQorICAgICAgICBpZiB0b2tl
bi50b2tlbl90eXBlID09IHRva2VuaXplLlNZTlRBWCBhbmQgdG9rZW4ubmFtZSA9PSAneyc6Cisg
ICAgICAgICAgICBhc3NlcnQgdG9rZW4udG9rZW5fdHlwZSA9PSB0b2tlbml6ZS5TWU5UQVgsIHRv
a2VuCisgICAgICAgICAgICBhc3NlcnQgdG9rZW4ubmFtZSA9PSAneycsIHRva2VuCisKKyAgICAg
ICAgICAgIGFzdCA9IEFzdEJ1aWxkZXIoc2VsZi5HZXRTY29wZSgpLCBzZWxmLmZpbGVuYW1lLCBj
bGFzc19uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5LCBzZWxm
Lm5hbWVzcGFjZV9zdGFjaykKKyAgICAgICAgICAgIGJvZHkgPSBsaXN0KGFzdC5HZW5lcmF0ZSgp
KQorCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5faGFuZGxpbmdfdHlwZWRlZjoKKyAgICAgICAg
ICAgICAgICB0b2tlbiA9IHNlbGYuX0dldE5leHRUb2tlbigpCisgICAgICAgICAgICAgICAgaWYg
dG9rZW4udG9rZW5fdHlwZSAhPSB0b2tlbml6ZS5OQU1FOgorICAgICAgICAgICAgICAgICAgICBh
c3NlcnQgdG9rZW4udG9rZW5fdHlwZSA9PSB0b2tlbml6ZS5TWU5UQVgsIHRva2VuCisgICAgICAg
ICAgICAgICAgICAgIGFzc2VydCB0b2tlbi5uYW1lID09ICc7JywgdG9rZW4KKyAgICAgICAgICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBuZXdfY2xhc3MgPSBjbGFzc190eXBlKGNs
YXNzX3Rva2VuLnN0YXJ0LCBjbGFzc190b2tlbi5lbmQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2xhc3NfbmFtZSwgYmFzZXMsIE5vbmUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keSwgc2VsZi5uYW1lc3BhY2Vfc3Rh
Y2spCisKKyAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzID0gW10KKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHNlbGYuX0NyZWF0ZVZhcmlhYmxlKGNsYXNzX3Rva2VuLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4ubmFtZSwgbmV3X2Ns
YXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9k
aWZpZXJzLCB0b2tlbi5uYW1lLCBOb25lKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYg
bm90IHNlbGYuX2hhbmRsaW5nX3R5cGVkZWY6CisgICAgICAgICAgICAgICAgc2VsZi5IYW5kbGVF
cnJvcignbm9uLXR5cGVkZWYgdG9rZW4nLCB0b2tlbikKKyAgICAgICAgICAgIHNlbGYuX0FkZEJh
Y2tUb2tlbih0b2tlbikKKworICAgICAgICByZXR1cm4gY2xhc3NfdHlwZShjbGFzc190b2tlbi5z
dGFydCwgY2xhc3NfdG9rZW4uZW5kLCBjbGFzc19uYW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBiYXNlcywgdGVtcGxhdGVkX3R5cGVzLCBib2R5LCBzZWxmLm5hbWVzcGFjZV9zdGFjaykK
KworICAgIGRlZiBoYW5kbGVfbmFtZXNwYWNlKHNlbGYpOgorICAgICAgICB0b2tlbiA9IHNlbGYu
X0dldE5leHRUb2tlbigpCisgICAgICAgICMgU3VwcG9ydCBhbm9ueW1vdXMgbmFtZXNwYWNlcy4K
KyAgICAgICAgbmFtZSA9IE5vbmUKKyAgICAgICAgaWYgdG9rZW4udG9rZW5fdHlwZSA9PSB0b2tl
bml6ZS5OQU1FOgorICAgICAgICAgICAgbmFtZSA9IHRva2VuLm5hbWUKKyAgICAgICAgICAgIHRv
a2VuID0gc2VsZi5fR2V0TmV4dFRva2VuKCkKKyAgICAgICAgc2VsZi5uYW1lc3BhY2Vfc3RhY2su
YXBwZW5kKG5hbWUpCisgICAgICAgIGFzc2VydCB0b2tlbi50b2tlbl90eXBlID09IHRva2VuaXpl
LlNZTlRBWCwgdG9rZW4KKyAgICAgICAgIyBDcmVhdGUgYW4gaW50ZXJuYWwgdG9rZW4gdGhhdCBk
ZW5vdGVzIHdoZW4gdGhlIG5hbWVzcGFjZSBpcyBjb21wbGV0ZS4KKyAgICAgICAgaW50ZXJuYWxf
dG9rZW4gPSB0b2tlbml6ZS5Ub2tlbihfSU5URVJOQUxfVE9LRU4sIF9OQU1FU1BBQ0VfUE9QLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsIE5vbmUpCisgICAg
ICAgIGludGVybmFsX3Rva2VuLndoZW5jZSA9IHRva2VuLndoZW5jZQorICAgICAgICBpZiB0b2tl
bi5uYW1lID09ICc9JzoKKyAgICAgICAgICAgICMgVE9ETyhubm9yd2l0eik6IGhhbmRsZSBhbGlh
c2luZyBuYW1lc3BhY2VzLgorICAgICAgICAgICAgbmFtZSwgbmV4dF90b2tlbiA9IHNlbGYuR2V0
TmFtZSgpCisgICAgICAgICAgICBhc3NlcnQgbmV4dF90b2tlbi5uYW1lID09ICc7JywgbmV4dF90
b2tlbgorICAgICAgICAgICAgc2VsZi5fQWRkQmFja1Rva2VuKGludGVybmFsX3Rva2VuKQorICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgYXNzZXJ0IHRva2VuLm5hbWUgPT0gJ3snLCB0b2tlbgor
ICAgICAgICAgICAgdG9rZW5zID0gbGlzdChzZWxmLkdldFNjb3BlKCkpCisgICAgICAgICAgICAj
IFJlcGxhY2UgdGhlIHRyYWlsaW5nIH0gd2l0aCB0aGUgaW50ZXJuYWwgbmFtZXNwYWNlIHBvcCB0
b2tlbi4KKyAgICAgICAgICAgIHRva2Vuc1stMV0gPSBpbnRlcm5hbF90b2tlbgorICAgICAgICAg
ICAgIyBIYW5kbGUgbmFtZXNwYWNlIHdpdGggbm90aGluZyBpbiBpdC4KKyAgICAgICAgICAgIHNl
bGYuX0FkZEJhY2tUb2tlbnModG9rZW5zKQorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVm
IGhhbmRsZV91c2luZyhzZWxmKToKKyAgICAgICAgdG9rZW5zID0gc2VsZi5fR2V0VG9rZW5zVXBU
byh0b2tlbml6ZS5TWU5UQVgsICc7JykKKyAgICAgICAgYXNzZXJ0IHRva2VucworICAgICAgICBy
ZXR1cm4gVXNpbmcodG9rZW5zWzBdLnN0YXJ0LCB0b2tlbnNbMF0uZW5kLCB0b2tlbnMpCisKKyAg
ICBkZWYgaGFuZGxlX2V4cGxpY2l0KHNlbGYpOgorICAgICAgICBhc3NlcnQgc2VsZi5pbl9jbGFz
cworICAgICAgICAjIE5vdGhpbmcgbXVjaCB0byBkby4KKyAgICAgICAgIyBUT0RPKG5ub3J3aXR6
KTogbWF5YmUgdmVyaWZ5IHRoZSBtZXRob2QgbmFtZSA9PSBjbGFzcyBuYW1lLgorICAgICAgICAj
IFRoaXMgbXVzdCBiZSBhIGN0b3IuCisgICAgICAgIHJldHVybiBzZWxmLkdldE1ldGhvZChGVU5D
VElPTl9DVE9SLCBOb25lKQorCisgICAgZGVmIGhhbmRsZV90aGlzKHNlbGYpOgorICAgICAgICBw
YXNzICAjIE5vdGhpbmcgdG8gZG8uCisKKyAgICBkZWYgaGFuZGxlX29wZXJhdG9yKHNlbGYpOgor
ICAgICAgICAjIFB1bGwgb2ZmIHRoZSBuZXh0IHRva2VuKHM/KSBhbmQgbWFrZSB0aGF0IHBhcnQg
b2YgdGhlIG1ldGhvZCBuYW1lLgorICAgICAgICBwYXNzCisKKyAgICBkZWYgaGFuZGxlX3NpemVv
ZihzZWxmKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIGhhbmRsZV9jYXNlKHNlbGYpOgorICAg
ICAgICBwYXNzCisKKyAgICBkZWYgaGFuZGxlX3N3aXRjaChzZWxmKToKKyAgICAgICAgcGFzcwor
CisgICAgZGVmIGhhbmRsZV9kZWZhdWx0KHNlbGYpOgorICAgICAgICB0b2tlbiA9IHNlbGYuX0dl
dE5leHRUb2tlbigpCisgICAgICAgIGFzc2VydCB0b2tlbi50b2tlbl90eXBlID09IHRva2VuaXpl
LlNZTlRBWAorICAgICAgICBhc3NlcnQgdG9rZW4ubmFtZSA9PSAnOicKKworICAgIGRlZiBoYW5k
bGVfaWYoc2VsZik6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBoYW5kbGVfZWxzZShzZWxmKToK
KyAgICAgICAgcGFzcworCisgICAgZGVmIGhhbmRsZV9yZXR1cm4oc2VsZik6CisgICAgICAgIHRv
a2VucyA9IHNlbGYuX0dldFRva2Vuc1VwVG8odG9rZW5pemUuU1lOVEFYLCAnOycpCisgICAgICAg
IGlmIG5vdCB0b2tlbnM6CisgICAgICAgICAgICByZXR1cm4gUmV0dXJuKHNlbGYuY3VycmVudF90
b2tlbi5zdGFydCwgc2VsZi5jdXJyZW50X3Rva2VuLmVuZCwgTm9uZSkKKyAgICAgICAgcmV0dXJu
IFJldHVybih0b2tlbnNbMF0uc3RhcnQsIHRva2Vuc1swXS5lbmQsIHRva2VucykKKworICAgIGRl
ZiBoYW5kbGVfZ290byhzZWxmKToKKyAgICAgICAgdG9rZW5zID0gc2VsZi5fR2V0VG9rZW5zVXBU
byh0b2tlbml6ZS5TWU5UQVgsICc7JykKKyAgICAgICAgYXNzZXJ0IGxlbih0b2tlbnMpID09IDEs
IHN0cih0b2tlbnMpCisgICAgICAgIHJldHVybiBHb3RvKHRva2Vuc1swXS5zdGFydCwgdG9rZW5z
WzBdLmVuZCwgdG9rZW5zWzBdLm5hbWUpCisKKyAgICBkZWYgaGFuZGxlX3RyeShzZWxmKToKKyAg
ICAgICAgcGFzcyAgIyBOb3QgbmVlZGVkIHlldC4KKworICAgIGRlZiBoYW5kbGVfY2F0Y2goc2Vs
Zik6CisgICAgICAgIHBhc3MgICMgTm90IG5lZWRlZCB5ZXQuCisKKyAgICBkZWYgaGFuZGxlX3Ro
cm93KHNlbGYpOgorICAgICAgICBwYXNzICAjIE5vdCBuZWVkZWQgeWV0LgorCisgICAgZGVmIGhh
bmRsZV93aGlsZShzZWxmKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIGhhbmRsZV9kbyhzZWxm
KToKKyAgICAgICAgcGFzcworCisgICAgZGVmIGhhbmRsZV9mb3Ioc2VsZik6CisgICAgICAgIHBh
c3MKKworICAgIGRlZiBoYW5kbGVfYnJlYWsoc2VsZik6CisgICAgICAgIHNlbGYuX0lnbm9yZVVw
VG8odG9rZW5pemUuU1lOVEFYLCAnOycpCisKKyAgICBkZWYgaGFuZGxlX2NvbnRpbnVlKHNlbGYp
OgorICAgICAgICBzZWxmLl9JZ25vcmVVcFRvKHRva2VuaXplLlNZTlRBWCwgJzsnKQorCisKK2Rl
ZiBCdWlsZGVyRnJvbVNvdXJjZShzb3VyY2UsIGZpbGVuYW1lKToKKyAgICAiIiJVdGlsaXR5IG1l
dGhvZCB0aGF0IHJldHVybnMgYW4gQXN0QnVpbGRlciBmcm9tIHNvdXJjZSBjb2RlLgorCisgICAg
QXJnczoKKyAgICAgIHNvdXJjZTogJ0MrKyBzb3VyY2UgY29kZScKKyAgICAgIGZpbGVuYW1lOiAn
ZmlsZTEnCisKKyAgICBSZXR1cm5zOgorICAgICAgQXN0QnVpbGRlcgorICAgICIiIgorICAgIHJl
dHVybiBBc3RCdWlsZGVyKHRva2VuaXplLkdldFRva2Vucyhzb3VyY2UpLCBmaWxlbmFtZSkKKwor
CitkZWYgUHJpbnRJbmRlbnRpZmllcnMoZmlsZW5hbWUsIHNob3VsZF9wcmludCk6CisgICAgIiIi
UHJpbnRzIGFsbCBpZGVudGlmaWVycyBmb3IgYSBDKysgc291cmNlIGZpbGUuCisKKyAgICBBcmdz
OgorICAgICAgZmlsZW5hbWU6ICdmaWxlMScKKyAgICAgIHNob3VsZF9wcmludDogcHJlZGljYXRl
IHdpdGggc2lnbmF0dXJlOiBib29sIEZ1bmN0aW9uKHRva2VuKQorICAgICIiIgorICAgIHNvdXJj
ZSA9IHV0aWxzLlJlYWRGaWxlKGZpbGVuYW1lLCBGYWxzZSkKKyAgICBpZiBzb3VyY2UgaXMgTm9u
ZToKKyAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnVW5hYmxlIHRvIGZpbmQ6ICVzXG4nICUgZmls
ZW5hbWUpCisgICAgICAgIHJldHVybgorCisgICAgI3ByaW50KCdQcm9jZXNzaW5nICVzJyAlIGFj
dHVhbF9maWxlbmFtZSkKKyAgICBidWlsZGVyID0gQnVpbGRlckZyb21Tb3VyY2Uoc291cmNlLCBm
aWxlbmFtZSkKKyAgICB0cnk6CisgICAgICAgIGZvciBub2RlIGluIGJ1aWxkZXIuR2VuZXJhdGUo
KToKKyAgICAgICAgICAgIGlmIHNob3VsZF9wcmludChub2RlKToKKyAgICAgICAgICAgICAgICBw
cmludChub2RlLm5hbWUpCisgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICBy
ZXR1cm4KKyAgICBleGNlcHQ6CisgICAgICAgIHBhc3MKKworCitkZWYgUHJpbnRBbGxJbmRlbnRp
ZmllcnMoZmlsZW5hbWVzLCBzaG91bGRfcHJpbnQpOgorICAgICIiIlByaW50cyBhbGwgaWRlbnRp
ZmllcnMgZm9yIGVhY2ggQysrIHNvdXJjZSBmaWxlIGluIGZpbGVuYW1lcy4KKworICAgIEFyZ3M6
CisgICAgICBmaWxlbmFtZXM6IFsnZmlsZTEnLCAnZmlsZTInLCAuLi5dCisgICAgICBzaG91bGRf
cHJpbnQ6IHByZWRpY2F0ZSB3aXRoIHNpZ25hdHVyZTogYm9vbCBGdW5jdGlvbih0b2tlbikKKyAg
ICAiIiIKKyAgICBmb3IgcGF0aCBpbiBmaWxlbmFtZXM6CisgICAgICAgIFByaW50SW5kZW50aWZp
ZXJzKHBhdGgsIHNob3VsZF9wcmludCkKKworCitkZWYgbWFpbihhcmd2KToKKyAgICBmb3IgZmls
ZW5hbWUgaW4gYXJndlsxOl06CisgICAgICAgIHNvdXJjZSA9IHV0aWxzLlJlYWRGaWxlKGZpbGVu
YW1lKQorICAgICAgICBpZiBzb3VyY2UgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRpbnVlCisK
KyAgICAgICAgcHJpbnQoJ1Byb2Nlc3NpbmcgJXMnICUgZmlsZW5hbWUpCisgICAgICAgIGJ1aWxk
ZXIgPSBCdWlsZGVyRnJvbVNvdXJjZShzb3VyY2UsIGZpbGVuYW1lKQorICAgICAgICB0cnk6Cisg
ICAgICAgICAgICBlbnRpcmVfYXN0ID0gZmlsdGVyKE5vbmUsIGJ1aWxkZXIuR2VuZXJhdGUoKSkK
KyAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICAgICAgcmV0dXJuCisg
ICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICMgQWxyZWFkeSBwcmludGVkIGEgd2FybmluZywg
cHJpbnQgdGhlIHRyYWNlYmFjayBhbmQgY29udGludWUuCisgICAgICAgICAgICB0cmFjZWJhY2su
cHJpbnRfZXhjKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIHV0aWxzLkRFQlVHOgor
ICAgICAgICAgICAgICAgIGZvciBhc3QgaW4gZW50aXJlX2FzdDoKKyAgICAgICAgICAgICAgICAg
ICAgcHJpbnQoYXN0KQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgbWFpbihz
eXMuYXJndikKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NjcmlwdHMvZ2VuZXJhdG9yL2NwcC9n
bW9ja19jbGFzcy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NjcmlwdHMvZ2VuZXJhdG9yL2NwcC9nbW9ja19j
bGFzcy5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mOTk2NmNiYjRiMGUxN2VkZTZlZGEyY2EyOWU4YmE3MTE1Mzk0
ZTE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc2NyaXB0cy9nZW5lcmF0b3IvY3Bw
L2dtb2NrX2NsYXNzLnB5CkBAIC0wLDAgKzEsMjI3IEBACisjIS91c3IvYmluL2VudiBweXRob24K
KyMKKyMgQ29weXJpZ2h0IDIwMDggR29vZ2xlIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisj
CisjIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi
TGljZW5zZSIpOworIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCisjIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAorIworIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorIworIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCisjIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisjIFdJVEhPVVQgV0FSUkFOVElFUyBP
UiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorIyBT
ZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlz
c2lvbnMgYW5kCisjIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisiIiJHZW5lcmF0
ZSBHb29nbGUgTW9jayBjbGFzc2VzIGZyb20gYmFzZSBjbGFzc2VzLgorCitUaGlzIHByb2dyYW0g
d2lsbCByZWFkIGluIGEgQysrIHNvdXJjZSBmaWxlIGFuZCBvdXRwdXQgdGhlIEdvb2dsZSBNb2Nr
CitjbGFzc2VzIGZvciB0aGUgc3BlY2lmaWVkIGNsYXNzZXMuICBJZiBubyBjbGFzcyBpcyBzcGVj
aWZpZWQsIGFsbAorY2xhc3NlcyBpbiB0aGUgc291cmNlIGZpbGUgYXJlIGVtaXR0ZWQuCisKK1Vz
YWdlOgorICBnbW9ja19jbGFzcy5weSBoZWFkZXItZmlsZS5oIFtDbGFzc05hbWVdLi4uCisKK091
dHB1dCBpcyBzZW50IHRvIHN0ZG91dC4KKyIiIgorCitfX2F1dGhvcl9fID0gJ25ub3J3aXR6QGdv
b2dsZS5jb20gKE5lYWwgTm9yd2l0eiknCisKKworaW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9y
dCBzeXMKKworZnJvbSBjcHAgaW1wb3J0IGFzdAorZnJvbSBjcHAgaW1wb3J0IHV0aWxzCisKKyMg
UHJlc2VydmUgY29tcGF0aWJpbGl0eSB3aXRoIFB5dGhvbiAyLjMuCit0cnk6CisgIF9kdW1teSA9
IHNldAorZXhjZXB0IE5hbWVFcnJvcjoKKyAgaW1wb3J0IHNldHMKKyAgc2V0ID0gc2V0cy5TZXQK
KworX1ZFUlNJT04gPSAoMSwgMCwgMSkgICMgVGhlIHZlcnNpb24gb2YgdGhpcyBzY3JpcHQuCisj
IEhvdyBtYW55IHNwYWNlcyB0byBpbmRlbnQuICBDYW4gc2V0IG1lIHdpdGggdGhlIElOREVOVCBl
bnZpcm9ubWVudCB2YXJpYWJsZS4KK19JTkRFTlQgPSAyCisKKworZGVmIF9HZW5lcmF0ZU1ldGhv
ZHMob3V0cHV0X2xpbmVzLCBzb3VyY2UsIGNsYXNzX25vZGUpOgorICBmdW5jdGlvbl90eXBlID0g
KGFzdC5GVU5DVElPTl9WSVJUVUFMIHwgYXN0LkZVTkNUSU9OX1BVUkVfVklSVFVBTCB8CisgICAg
ICAgICAgICAgICAgICAgYXN0LkZVTkNUSU9OX09WRVJSSURFKQorICBjdG9yX29yX2R0b3IgPSBh
c3QuRlVOQ1RJT05fQ1RPUiB8IGFzdC5GVU5DVElPTl9EVE9SCisgIGluZGVudCA9ICcgJyAqIF9J
TkRFTlQKKworICBmb3Igbm9kZSBpbiBjbGFzc19ub2RlLmJvZHk6CisgICAgIyBXZSBvbmx5IGNh
cmUgYWJvdXQgdmlydHVhbCBmdW5jdGlvbnMuCisgICAgaWYgKGlzaW5zdGFuY2Uobm9kZSwgYXN0
LkZ1bmN0aW9uKSBhbmQKKyAgICAgICAgbm9kZS5tb2RpZmllcnMgJiBmdW5jdGlvbl90eXBlIGFu
ZAorICAgICAgICBub3Qgbm9kZS5tb2RpZmllcnMgJiBjdG9yX29yX2R0b3IpOgorICAgICAgIyBQ
aWNrIG91dCBhbGwgdGhlIGVsZW1lbnRzIHdlIG5lZWQgZnJvbSB0aGUgb3JpZ2luYWwgZnVuY3Rp
b24uCisgICAgICBjb25zdCA9ICcnCisgICAgICBpZiBub2RlLm1vZGlmaWVycyAmIGFzdC5GVU5D
VElPTl9DT05TVDoKKyAgICAgICAgY29uc3QgPSAnQ09OU1RfJworICAgICAgcmV0dXJuX3R5cGUg
PSAndm9pZCcKKyAgICAgIGlmIG5vZGUucmV0dXJuX3R5cGU6CisgICAgICAgICMgQWRkIG1vZGlm
aWVycyBsaWtlICdjb25zdCcuCisgICAgICAgIG1vZGlmaWVycyA9ICcnCisgICAgICAgIGlmIG5v
ZGUucmV0dXJuX3R5cGUubW9kaWZpZXJzOgorICAgICAgICAgIG1vZGlmaWVycyA9ICcgJy5qb2lu
KG5vZGUucmV0dXJuX3R5cGUubW9kaWZpZXJzKSArICcgJworICAgICAgICByZXR1cm5fdHlwZSA9
IG1vZGlmaWVycyArIG5vZGUucmV0dXJuX3R5cGUubmFtZQorICAgICAgICB0ZW1wbGF0ZV9hcmdz
ID0gW2FyZy5uYW1lIGZvciBhcmcgaW4gbm9kZS5yZXR1cm5fdHlwZS50ZW1wbGF0ZWRfdHlwZXNd
CisgICAgICAgIGlmIHRlbXBsYXRlX2FyZ3M6CisgICAgICAgICAgcmV0dXJuX3R5cGUgKz0gJzwn
ICsgJywgJy5qb2luKHRlbXBsYXRlX2FyZ3MpICsgJz4nCisgICAgICAgICAgaWYgbGVuKHRlbXBs
YXRlX2FyZ3MpID4gMToKKyAgICAgICAgICAgIGZvciBsaW5lIGluIFsKKyAgICAgICAgICAgICAg
ICAnLy8gVGhlIGZvbGxvd2luZyBsaW5lIHdvblwndCByZWFsbHkgY29tcGlsZSwgYXMgdGhlIHJl
dHVybicsCisgICAgICAgICAgICAgICAgJy8vIHR5cGUgaGFzIG11bHRpcGxlIHRlbXBsYXRlIGFy
Z3VtZW50cy4gIFRvIGZpeCBpdCwgdXNlIGEnLAorICAgICAgICAgICAgICAgICcvLyB0eXBlZGVm
IGZvciB0aGUgcmV0dXJuIHR5cGUuJ106CisgICAgICAgICAgICAgIG91dHB1dF9saW5lcy5hcHBl
bmQoaW5kZW50ICsgbGluZSkKKyAgICAgICAgaWYgbm9kZS5yZXR1cm5fdHlwZS5wb2ludGVyOgor
ICAgICAgICAgIHJldHVybl90eXBlICs9ICcqJworICAgICAgICBpZiBub2RlLnJldHVybl90eXBl
LnJlZmVyZW5jZToKKyAgICAgICAgICByZXR1cm5fdHlwZSArPSAnJicKKyAgICAgICAgbnVtX3Bh
cmFtZXRlcnMgPSBsZW4obm9kZS5wYXJhbWV0ZXJzKQorICAgICAgICBpZiBsZW4obm9kZS5wYXJh
bWV0ZXJzKSA9PSAxOgorICAgICAgICAgIGZpcnN0X3BhcmFtID0gbm9kZS5wYXJhbWV0ZXJzWzBd
CisgICAgICAgICAgaWYgc291cmNlW2ZpcnN0X3BhcmFtLnN0YXJ0OmZpcnN0X3BhcmFtLmVuZF0u
c3RyaXAoKSA9PSAndm9pZCc6CisgICAgICAgICAgICAjIFdlIG11c3QgdHJlYXQgVCh2b2lkKSBh
cyBhIGZ1bmN0aW9uIHdpdGggbm8gcGFyYW1ldGVycy4KKyAgICAgICAgICAgIG51bV9wYXJhbWV0
ZXJzID0gMAorICAgICAgdG1wbCA9ICcnCisgICAgICBpZiBjbGFzc19ub2RlLnRlbXBsYXRlZF90
eXBlczoKKyAgICAgICAgdG1wbCA9ICdfVCcKKyAgICAgIG1vY2tfbWV0aG9kX21hY3JvID0gJ01P
Q0tfJXNNRVRIT0QlZCVzJyAlIChjb25zdCwgbnVtX3BhcmFtZXRlcnMsIHRtcGwpCisKKyAgICAg
IGFyZ3MgPSAnJworICAgICAgaWYgbm9kZS5wYXJhbWV0ZXJzOgorICAgICAgICAjIER1ZSB0byB0
aGUgcGFyc2VyIGxpbWl0YXRpb25zLCBpdCBpcyBpbXBvc3NpYmxlIHRvIGtlZXAgY29tbWVudHMK
KyAgICAgICAgIyB3aGlsZSBzdHJpcHBpbmcgdGhlIGRlZmF1bHQgcGFyYW1ldGVycy4gIFdoZW4g
ZGVmYXVsdHMgYXJlCisgICAgICAgICMgcHJlc2VudCwgd2UgY2hvb3NlIHRvIHN0cmlwIHRoZW0g
YW5kIGNvbW1lbnRzIChhbmQgcHJvZHVjZQorICAgICAgICAjIGNvbXBpbGFibGUgY29kZSkuCisg
ICAgICAgICMgVE9ETyhubm9yd2l0ekBnb29nbGUuY29tKTogSW52ZXN0aWdhdGUgd2hldGhlciBp
dCBpcyBwb3NzaWJsZSB0bworICAgICAgICAjIHByZXNlcnZlIHBhcmFtZXRlciBuYW1lIHdoZW4g
cmVjb25zdHJ1Y3RpbmcgcGFyYW1ldGVyIHRleHQgZnJvbQorICAgICAgICAjIHRoZSBBU1QuCisg
ICAgICAgIGlmIGxlbihbcGFyYW0gZm9yIHBhcmFtIGluIG5vZGUucGFyYW1ldGVycyBpZiBwYXJh
bS5kZWZhdWx0XSkgPiAwOgorICAgICAgICAgIGFyZ3MgPSAnLCAnLmpvaW4ocGFyYW0udHlwZS5u
YW1lIGZvciBwYXJhbSBpbiBub2RlLnBhcmFtZXRlcnMpCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgIyBHZXQgdGhlIGZ1bGwgdGV4dCBvZiB0aGUgcGFyYW1ldGVycyBmcm9tIHRoZSBzdGFydAor
ICAgICAgICAgICMgb2YgdGhlIGZpcnN0IHBhcmFtZXRlciB0byB0aGUgZW5kIG9mIHRoZSBsYXN0
IHBhcmFtZXRlci4KKyAgICAgICAgICBzdGFydCA9IG5vZGUucGFyYW1ldGVyc1swXS5zdGFydAor
ICAgICAgICAgIGVuZCA9IG5vZGUucGFyYW1ldGVyc1stMV0uZW5kCisgICAgICAgICAgIyBSZW1v
dmUgLy8gY29tbWVudHMuCisgICAgICAgICAgYXJnc19zdHJpbmdzID0gcmUuc3ViKHInLy8uKics
ICcnLCBzb3VyY2Vbc3RhcnQ6ZW5kXSkKKyAgICAgICAgICAjIENvbmRlbnNlIG11bHRpcGxlIHNw
YWNlcyBhbmQgZWxpbWluYXRlIG5ld2xpbmVzIHB1dHRpbmcgdGhlCisgICAgICAgICAgIyBwYXJh
bWV0ZXJzIHRvZ2V0aGVyIG9uIGEgc2luZ2xlIGxpbmUuICBFbnN1cmUgdGhlcmUgaXMgYQorICAg
ICAgICAgICMgc3BhY2UgaW4gYW4gYXJndW1lbnQgd2hpY2ggaXMgc3BsaXQgYnkgYSBuZXdsaW5l
IHdpdGhvdXQKKyAgICAgICAgICAjIGludGVydmVuaW5nIHdoaXRlc3BhY2UsIGUuZy46IGludFxu
QmFyCisgICAgICAgICAgYXJncyA9IHJlLnN1YignICArJywgJyAnLCBhcmdzX3N0cmluZ3MucmVw
bGFjZSgnXG4nLCAnICcpKQorCisgICAgICAjIENyZWF0ZSB0aGUgbW9jayBtZXRob2QgZGVmaW5p
dGlvbi4KKyAgICAgIG91dHB1dF9saW5lcy5leHRlbmQoWyclcyVzKCVzLCcgJSAoaW5kZW50LCBt
b2NrX21ldGhvZF9tYWNybywgbm9kZS5uYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICclcyVzKCVzKSk7JyAlIChpbmRlbnQqMywgcmV0dXJuX3R5cGUsIGFyZ3MpXSkKKworCitkZWYg
X0dlbmVyYXRlTW9ja3MoZmlsZW5hbWUsIHNvdXJjZSwgYXN0X2xpc3QsIGRlc2lyZWRfY2xhc3Nf
bmFtZXMpOgorICBwcm9jZXNzZWRfY2xhc3NfbmFtZXMgPSBzZXQoKQorICBsaW5lcyA9IFtdCisg
IGZvciBub2RlIGluIGFzdF9saXN0OgorICAgIGlmIChpc2luc3RhbmNlKG5vZGUsIGFzdC5DbGFz
cykgYW5kIG5vZGUuYm9keSBhbmQKKyAgICAgICAgIyBkZXNpcmVkX2NsYXNzX25hbWVzIGJlaW5n
IE5vbmUgbWVhbnMgdGhhdCBhbGwgY2xhc3NlcyBhcmUgc2VsZWN0ZWQuCisgICAgICAgIChub3Qg
ZGVzaXJlZF9jbGFzc19uYW1lcyBvciBub2RlLm5hbWUgaW4gZGVzaXJlZF9jbGFzc19uYW1lcykp
OgorICAgICAgY2xhc3NfbmFtZSA9IG5vZGUubmFtZQorICAgICAgcGFyZW50X25hbWUgPSBjbGFz
c19uYW1lCisgICAgICBwcm9jZXNzZWRfY2xhc3NfbmFtZXMuYWRkKGNsYXNzX25hbWUpCisgICAg
ICBjbGFzc19ub2RlID0gbm9kZQorICAgICAgIyBBZGQgbmFtZXNwYWNlIGJlZm9yZSB0aGUgY2xh
c3MuCisgICAgICBpZiBjbGFzc19ub2RlLm5hbWVzcGFjZToKKyAgICAgICAgbGluZXMuZXh0ZW5k
KFsnbmFtZXNwYWNlICVzIHsnICUgbiBmb3IgbiBpbiBjbGFzc19ub2RlLm5hbWVzcGFjZV0pICAj
IH0KKyAgICAgICAgbGluZXMuYXBwZW5kKCcnKQorCisgICAgICAjIEFkZCB0ZW1wbGF0ZSBhcmdz
IGZvciB0ZW1wbGF0ZWQgY2xhc3Nlcy4KKyAgICAgIGlmIGNsYXNzX25vZGUudGVtcGxhdGVkX3R5
cGVzOgorICAgICAgICAjIFRPRE8ocGF1bGNoYW5nKTogVGhlIEFTVCBkb2Vzbid0IHByZXNlcnZl
IHRlbXBsYXRlIGFyZ3VtZW50IG9yZGVyLAorICAgICAgICAjIHNvIHdlIGhhdmUgdG8gbWFrZSB1
cCBuYW1lcyBoZXJlLgorICAgICAgICAjIFRPRE8ocGF1bGNoYW5nKTogSGFuZGxlIG5vbi10eXBl
IHRlbXBsYXRlIGFyZ3VtZW50cyAoZS5nLgorICAgICAgICAjIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IGludCBOPikuCisgICAgICAgIHRlbXBsYXRlX2FyZ19jb3VudCA9IGxlbihjbGFzc19ub2RlLnRl
bXBsYXRlZF90eXBlcy5rZXlzKCkpCisgICAgICAgIHRlbXBsYXRlX2FyZ3MgPSBbJ1QlZCcgJSBu
IGZvciBuIGluIHJhbmdlKHRlbXBsYXRlX2FyZ19jb3VudCldCisgICAgICAgIHRlbXBsYXRlX2Rl
Y2xzID0gWyd0eXBlbmFtZSAnICsgYXJnIGZvciBhcmcgaW4gdGVtcGxhdGVfYXJnc10KKyAgICAg
ICAgbGluZXMuYXBwZW5kKCd0ZW1wbGF0ZSA8JyArICcsICcuam9pbih0ZW1wbGF0ZV9kZWNscykg
KyAnPicpCisgICAgICAgIHBhcmVudF9uYW1lICs9ICc8JyArICcsICcuam9pbih0ZW1wbGF0ZV9h
cmdzKSArICc+JworCisgICAgICAjIEFkZCB0aGUgY2xhc3MgcHJvbG9nLgorICAgICAgbGluZXMu
YXBwZW5kKCdjbGFzcyBNb2NrJXMgOiBwdWJsaWMgJXMgeycgICMgfQorICAgICAgICAgICAgICAg
ICAgICUgKGNsYXNzX25hbWUsIHBhcmVudF9uYW1lKSkKKyAgICAgIGxpbmVzLmFwcGVuZCgnJXNw
dWJsaWM6JyAlICgnICcgKiAoX0lOREVOVCAvLyAyKSkpCisKKyAgICAgICMgQWRkIGFsbCB0aGUg
bWV0aG9kcy4KKyAgICAgIF9HZW5lcmF0ZU1ldGhvZHMobGluZXMsIHNvdXJjZSwgY2xhc3Nfbm9k
ZSkKKworICAgICAgIyBDbG9zZSB0aGUgY2xhc3MuCisgICAgICBpZiBsaW5lczoKKyAgICAgICAg
IyBJZiB0aGVyZSBhcmUgbm8gdmlydHVhbCBtZXRob2RzLCBubyBuZWVkIGZvciBhIHB1YmxpYyBs
YWJlbC4KKyAgICAgICAgaWYgbGVuKGxpbmVzKSA9PSAyOgorICAgICAgICAgIGRlbCBsaW5lc1st
MV0KKworICAgICAgICAjIE9ubHkgY2xvc2UgdGhlIGNsYXNzIGlmIHRoZXJlIHJlYWxseSBpcyBh
IGNsYXNzLgorICAgICAgICBsaW5lcy5hcHBlbmQoJ307JykKKyAgICAgICAgbGluZXMuYXBwZW5k
KCcnKSAgIyBBZGQgYW4gZXh0cmEgbmV3bGluZS4KKworICAgICAgIyBDbG9zZSB0aGUgbmFtZXNw
YWNlLgorICAgICAgaWYgY2xhc3Nfbm9kZS5uYW1lc3BhY2U6CisgICAgICAgIGZvciBpIGluIHJh
bmdlKGxlbihjbGFzc19ub2RlLm5hbWVzcGFjZSktMSwgLTEsIC0xKToKKyAgICAgICAgICBsaW5l
cy5hcHBlbmQoJ30gIC8vIG5hbWVzcGFjZSAlcycgJSBjbGFzc19ub2RlLm5hbWVzcGFjZVtpXSkK
KyAgICAgICAgbGluZXMuYXBwZW5kKCcnKSAgIyBBZGQgYW4gZXh0cmEgbmV3bGluZS4KKworICBp
ZiBkZXNpcmVkX2NsYXNzX25hbWVzOgorICAgIG1pc3NpbmdfY2xhc3NfbmFtZV9saXN0ID0gbGlz
dChkZXNpcmVkX2NsYXNzX25hbWVzIC0gcHJvY2Vzc2VkX2NsYXNzX25hbWVzKQorICAgIGlmIG1p
c3NpbmdfY2xhc3NfbmFtZV9saXN0OgorICAgICAgbWlzc2luZ19jbGFzc19uYW1lX2xpc3Quc29y
dCgpCisgICAgICBzeXMuc3RkZXJyLndyaXRlKCdDbGFzcyhlcykgbm90IGZvdW5kIGluICVzOiAl
c1xuJyAlCisgICAgICAgICAgICAgICAgICAgICAgIChmaWxlbmFtZSwgJywgJy5qb2luKG1pc3Np
bmdfY2xhc3NfbmFtZV9saXN0KSkpCisgIGVsaWYgbm90IHByb2Nlc3NlZF9jbGFzc19uYW1lczoK
KyAgICBzeXMuc3RkZXJyLndyaXRlKCdObyBjbGFzcyBmb3VuZCBpbiAlc1xuJyAlIGZpbGVuYW1l
KQorCisgIHJldHVybiBsaW5lcworCisKK2RlZiBtYWluKGFyZ3Y9c3lzLmFyZ3YpOgorICBpZiBs
ZW4oYXJndikgPCAyOgorICAgIHN5cy5zdGRlcnIud3JpdGUoJ0dvb2dsZSBNb2NrIENsYXNzIEdl
bmVyYXRvciB2JXNcblxuJyAlCisgICAgICAgICAgICAgICAgICAgICAnLicuam9pbihtYXAoc3Ry
LCBfVkVSU0lPTikpKQorICAgIHN5cy5zdGRlcnIud3JpdGUoX19kb2NfXykKKyAgICByZXR1cm4g
MQorCisgIGdsb2JhbCBfSU5ERU5UCisgIHRyeToKKyAgICBfSU5ERU5UID0gaW50KG9zLmVudmly
b25bJ0lOREVOVCddKQorICBleGNlcHQgS2V5RXJyb3I6CisgICAgcGFzcworICBleGNlcHQ6Cisg
ICAgc3lzLnN0ZGVyci53cml0ZSgnVW5hYmxlIHRvIHVzZSBpbmRlbnQgb2YgJXNcbicgJSBvcy5l
bnZpcm9uLmdldCgnSU5ERU5UJykpCisKKyAgZmlsZW5hbWUgPSBhcmd2WzFdCisgIGRlc2lyZWRf
Y2xhc3NfbmFtZXMgPSBOb25lICAjIE5vbmUgbWVhbnMgYWxsIGNsYXNzZXMgaW4gdGhlIHNvdXJj
ZSBmaWxlLgorICBpZiBsZW4oYXJndikgPj0gMzoKKyAgICBkZXNpcmVkX2NsYXNzX25hbWVzID0g
c2V0KGFyZ3ZbMjpdKQorICBzb3VyY2UgPSB1dGlscy5SZWFkRmlsZShmaWxlbmFtZSkKKyAgaWYg
c291cmNlIGlzIE5vbmU6CisgICAgcmV0dXJuIDEKKworICBidWlsZGVyID0gYXN0LkJ1aWxkZXJG
cm9tU291cmNlKHNvdXJjZSwgZmlsZW5hbWUpCisgIHRyeToKKyAgICBlbnRpcmVfYXN0ID0gZmls
dGVyKE5vbmUsIGJ1aWxkZXIuR2VuZXJhdGUoKSkKKyAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0
OgorICAgIHJldHVybgorICBleGNlcHQ6CisgICAgIyBBbiBlcnJvciBtZXNzYWdlIHdhcyBhbHJl
YWR5IHByaW50ZWQgc2luY2Ugd2UgY291bGRuJ3QgcGFyc2UuCisgICAgc3lzLmV4aXQoMSkKKyAg
ZWxzZToKKyAgICBsaW5lcyA9IF9HZW5lcmF0ZU1vY2tzKGZpbGVuYW1lLCBzb3VyY2UsIGVudGly
ZV9hc3QsIGRlc2lyZWRfY2xhc3NfbmFtZXMpCisgICAgc3lzLnN0ZG91dC53cml0ZSgnXG4nLmpv
aW4obGluZXMpKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIG1haW4oc3lzLmFy
Z3YpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zY3JpcHRzL2dlbmVyYXRvci9jcHAvZ21vY2tf
Y2xhc3NfdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NjcmlwdHMvZ2VuZXJhdG9yL2NwcC9nbW9ja19j
bGFzc190ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxOGY5MGE2NTBkMWEyOGE0ZTM0NGU0ZWVhMGRlYzFj
MWNjYTM3Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zY3JpcHRzL2dlbmVyYXRv
ci9jcHAvZ21vY2tfY2xhc3NfdGVzdC5weQpAQCAtMCwwICsxLDQ0OCBAQAorIyEvdXNyL2Jpbi9l
bnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDA5IE5lYWwgTm9yd2l0eiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorIyBQb3J0aW9ucyBDb3B5cmlnaHQgMjAwOSBHb29nbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorIworIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNp
b24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorIyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKKyMKKyMgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKyMKKyMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorIyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorIyBXSVRIT1VU
IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4KKyMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292
ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorIyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K
KworIiIiVGVzdHMgZm9yIGdtb2NrLnNjcmlwdHMuZ2VuZXJhdG9yLmNwcC5nbW9ja19jbGFzcy4i
IiIKKworX19hdXRob3JfXyA9ICdubm9yd2l0ekBnb29nbGUuY29tIChOZWFsIE5vcndpdHopJwor
CisKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CisKKyMgQWxsb3cgdGhl
IGNwcCBpbXBvcnRzIGJlbG93IHRvIHdvcmsgd2hlbiBydW4gYXMgYSBzdGFuZGFsb25lIHNjcmlw
dC4KK3N5cy5wYXRoLmFwcGVuZChvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9f
KSwgJy4uJykpCisKK2Zyb20gY3BwIGltcG9ydCBhc3QKK2Zyb20gY3BwIGltcG9ydCBnbW9ja19j
bGFzcworCisKK2NsYXNzIFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgIiIiSGVscGVy
IGNsYXNzIHRoYXQgYWRkcyBhc3NlcnQgbWV0aG9kcy4iIiIKKworICBkZWYgU3RyaXBMZWFkaW5n
V2hpdGVzcGFjZShzZWxmLCBsaW5lcyk6CisgICAgIiIiU3RyaXAgbGVhZGluZyB3aGl0ZXNwYWNl
IGluIGVhY2ggbGluZSBpbiAnbGluZXMnLiIiIgorICAgIHJldHVybiAnXG4nLmpvaW4oW3MubHN0
cmlwKCkgZm9yIHMgaW4gbGluZXMuc3BsaXQoJ1xuJyldKQorCisgIGRlZiBhc3NlcnRFcXVhbEln
bm9yZUxlYWRpbmdXaGl0ZXNwYWNlKHNlbGYsIGV4cGVjdGVkX2xpbmVzLCBsaW5lcyk6CisgICAg
IiIiU3BlY2lhbGl6ZWQgYXNzZXJ0IHRoYXQgaWdub3JlcyB0aGUgaW5kZW50IGxldmVsLiIiIgor
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfbGluZXMsIHNlbGYuU3RyaXBMZWFkaW5nV2hp
dGVzcGFjZShsaW5lcykpCisKKworY2xhc3MgR2VuZXJhdGVNZXRob2RzVGVzdChUZXN0Q2FzZSk6
CisKKyAgZGVmIEdlbmVyYXRlTWV0aG9kU291cmNlKHNlbGYsIGNwcF9zb3VyY2UpOgorICAgICIi
IkNvbnZlcnQgQysrIHNvdXJjZSB0byBHb29nbGUgTW9jayBvdXRwdXQgc291cmNlIGxpbmVzLiIi
IgorICAgIG1ldGhvZF9zb3VyY2VfbGluZXMgPSBbXQorICAgICMgPHRlc3Q+IGlzIGEgcHNldWRv
LWZpbGVuYW1lLCBpdCBpcyBub3QgcmVhZCBvciB3cml0dGVuLgorICAgIGJ1aWxkZXIgPSBhc3Qu
QnVpbGRlckZyb21Tb3VyY2UoY3BwX3NvdXJjZSwgJzx0ZXN0PicpCisgICAgYXN0X2xpc3QgPSBs
aXN0KGJ1aWxkZXIuR2VuZXJhdGUoKSkKKyAgICBnbW9ja19jbGFzcy5fR2VuZXJhdGVNZXRob2Rz
KG1ldGhvZF9zb3VyY2VfbGluZXMsIGNwcF9zb3VyY2UsIGFzdF9saXN0WzBdKQorICAgIHJldHVy
biAnXG4nLmpvaW4obWV0aG9kX3NvdXJjZV9saW5lcykKKworICBkZWYgdGVzdFNpbXBsZU1ldGhv
ZChzZWxmKToKKyAgICBzb3VyY2UgPSAiIiIKK2NsYXNzIEZvbyB7CisgcHVibGljOgorICB2aXJ0
dWFsIGludCBCYXIoKTsKK307CisiIiIKKyAgICBzZWxmLmFzc2VydEVxdWFsSWdub3JlTGVhZGlu
Z1doaXRlc3BhY2UoCisgICAgICAgICdNT0NLX01FVEhPRDAoQmFyLFxuaW50KCkpOycsCisgICAg
ICAgIHNlbGYuR2VuZXJhdGVNZXRob2RTb3VyY2Uoc291cmNlKSkKKworICBkZWYgdGVzdFNpbXBs
ZUNvbnN0cnVjdG9yc0FuZERlc3RydWN0b3Ioc2VsZik6CisgICAgc291cmNlID0gIiIiCitjbGFz
cyBGb28geworIHB1YmxpYzoKKyAgRm9vKCk7CisgIEZvbyhpbnQgeCk7CisgIEZvbyhjb25zdCBG
b28mIGYpOworICBGb28oRm9vJiYgZik7CisgIH5Gb28oKTsKKyAgdmlydHVhbCBpbnQgQmFyKCkg
PSAwOworfTsKKyIiIgorICAgICMgVGhlIGNvbnN0cnVjdG9ycyBhbmQgZGVzdHJ1Y3RvciBzaG91
bGQgYmUgaWdub3JlZC4KKyAgICBzZWxmLmFzc2VydEVxdWFsSWdub3JlTGVhZGluZ1doaXRlc3Bh
Y2UoCisgICAgICAgICdNT0NLX01FVEhPRDAoQmFyLFxuaW50KCkpOycsCisgICAgICAgIHNlbGYu
R2VuZXJhdGVNZXRob2RTb3VyY2Uoc291cmNlKSkKKworICBkZWYgdGVzdFZpcnR1YWxEZXN0cnVj
dG9yKHNlbGYpOgorICAgIHNvdXJjZSA9ICIiIgorY2xhc3MgRm9vIHsKKyBwdWJsaWM6CisgIHZp
cnR1YWwgfkZvbygpOworICB2aXJ0dWFsIGludCBCYXIoKSA9IDA7Cit9OworIiIiCisgICAgIyBU
aGUgZGVzdHJ1Y3RvciBzaG91bGQgYmUgaWdub3JlZC4KKyAgICBzZWxmLmFzc2VydEVxdWFsSWdu
b3JlTGVhZGluZ1doaXRlc3BhY2UoCisgICAgICAgICdNT0NLX01FVEhPRDAoQmFyLFxuaW50KCkp
OycsCisgICAgICAgIHNlbGYuR2VuZXJhdGVNZXRob2RTb3VyY2Uoc291cmNlKSkKKworICBkZWYg
dGVzdEV4cGxpY2l0bHlEZWZhdWx0ZWRDb25zdHJ1Y3RvcnNBbmREZXN0cnVjdG9yKHNlbGYpOgor
ICAgIHNvdXJjZSA9ICIiIgorY2xhc3MgRm9vIHsKKyBwdWJsaWM6CisgIEZvbygpID0gZGVmYXVs
dDsKKyAgRm9vKGNvbnN0IEZvbyYgZikgPSBkZWZhdWx0OworICBGb28oRm9vJiYgZikgPSBkZWZh
dWx0OworICB+Rm9vKCkgPSBkZWZhdWx0OworICB2aXJ0dWFsIGludCBCYXIoKSA9IDA7Cit9Owor
IiIiCisgICAgIyBUaGUgY29uc3RydWN0b3JzIGFuZCBkZXN0cnVjdG9yIHNob3VsZCBiZSBpZ25v
cmVkLgorICAgIHNlbGYuYXNzZXJ0RXF1YWxJZ25vcmVMZWFkaW5nV2hpdGVzcGFjZSgKKyAgICAg
ICAgJ01PQ0tfTUVUSE9EMChCYXIsXG5pbnQoKSk7JywKKyAgICAgICAgc2VsZi5HZW5lcmF0ZU1l
dGhvZFNvdXJjZShzb3VyY2UpKQorCisgIGRlZiB0ZXN0RXhwbGljaXRseURlbGV0ZWRDb25zdHJ1
Y3RvcnNBbmREZXN0cnVjdG9yKHNlbGYpOgorICAgIHNvdXJjZSA9ICIiIgorY2xhc3MgRm9vIHsK
KyBwdWJsaWM6CisgIEZvbygpID0gZGVsZXRlOworICBGb28oY29uc3QgRm9vJiBmKSA9IGRlbGV0
ZTsKKyAgRm9vKEZvbyYmIGYpID0gZGVsZXRlOworICB+Rm9vKCkgPSBkZWxldGU7CisgIHZpcnR1
YWwgaW50IEJhcigpID0gMDsKK307CisiIiIKKyAgICAjIFRoZSBjb25zdHJ1Y3RvcnMgYW5kIGRl
c3RydWN0b3Igc2hvdWxkIGJlIGlnbm9yZWQuCisgICAgc2VsZi5hc3NlcnRFcXVhbElnbm9yZUxl
YWRpbmdXaGl0ZXNwYWNlKAorICAgICAgICAnTU9DS19NRVRIT0QwKEJhcixcbmludCgpKTsnLAor
ICAgICAgICBzZWxmLkdlbmVyYXRlTWV0aG9kU291cmNlKHNvdXJjZSkpCisKKyAgZGVmIHRlc3RT
aW1wbGVPdmVycmlkZU1ldGhvZChzZWxmKToKKyAgICBzb3VyY2UgPSAiIiIKK2NsYXNzIEZvbyB7
CisgcHVibGljOgorICBpbnQgQmFyKCkgb3ZlcnJpZGU7Cit9OworIiIiCisgICAgc2VsZi5hc3Nl
cnRFcXVhbElnbm9yZUxlYWRpbmdXaGl0ZXNwYWNlKAorICAgICAgICAnTU9DS19NRVRIT0QwKEJh
cixcbmludCgpKTsnLAorICAgICAgICBzZWxmLkdlbmVyYXRlTWV0aG9kU291cmNlKHNvdXJjZSkp
CisKKyAgZGVmIHRlc3RTaW1wbGVDb25zdE1ldGhvZChzZWxmKToKKyAgICBzb3VyY2UgPSAiIiIK
K2NsYXNzIEZvbyB7CisgcHVibGljOgorICB2aXJ0dWFsIHZvaWQgQmFyKGJvb2wgZmxhZykgY29u
c3Q7Cit9OworIiIiCisgICAgc2VsZi5hc3NlcnRFcXVhbElnbm9yZUxlYWRpbmdXaGl0ZXNwYWNl
KAorICAgICAgICAnTU9DS19DT05TVF9NRVRIT0QxKEJhcixcbnZvaWQoYm9vbCBmbGFnKSk7JywK
KyAgICAgICAgc2VsZi5HZW5lcmF0ZU1ldGhvZFNvdXJjZShzb3VyY2UpKQorCisgIGRlZiB0ZXN0
RXhwbGljaXRWb2lkKHNlbGYpOgorICAgIHNvdXJjZSA9ICIiIgorY2xhc3MgRm9vIHsKKyBwdWJs
aWM6CisgIHZpcnR1YWwgaW50IEJhcih2b2lkKTsKK307CisiIiIKKyAgICBzZWxmLmFzc2VydEVx
dWFsSWdub3JlTGVhZGluZ1doaXRlc3BhY2UoCisgICAgICAgICdNT0NLX01FVEhPRDAoQmFyLFxu
aW50KHZvaWQpKTsnLAorICAgICAgICBzZWxmLkdlbmVyYXRlTWV0aG9kU291cmNlKHNvdXJjZSkp
CisKKyAgZGVmIHRlc3RTdHJhbmdlTmV3bGluZUluUGFyYW1ldGVyKHNlbGYpOgorICAgIHNvdXJj
ZSA9ICIiIgorY2xhc3MgRm9vIHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgdm9pZCBCYXIoaW50Cith
KSA9IDA7Cit9OworIiIiCisgICAgc2VsZi5hc3NlcnRFcXVhbElnbm9yZUxlYWRpbmdXaGl0ZXNw
YWNlKAorICAgICAgICAnTU9DS19NRVRIT0QxKEJhcixcbnZvaWQoaW50IGEpKTsnLAorICAgICAg
ICBzZWxmLkdlbmVyYXRlTWV0aG9kU291cmNlKHNvdXJjZSkpCisKKyAgZGVmIHRlc3REZWZhdWx0
UGFyYW1ldGVycyhzZWxmKToKKyAgICBzb3VyY2UgPSAiIiIKK2NsYXNzIEZvbyB7CisgcHVibGlj
OgorICB2aXJ0dWFsIHZvaWQgQmFyKGludCBhLCBjaGFyIGMgPSAneCcpID0gMDsKK307CisiIiIK
KyAgICBzZWxmLmFzc2VydEVxdWFsSWdub3JlTGVhZGluZ1doaXRlc3BhY2UoCisgICAgICAgICdN
T0NLX01FVEhPRDIoQmFyLFxudm9pZChpbnQsIGNoYXIpKTsnLAorICAgICAgICBzZWxmLkdlbmVy
YXRlTWV0aG9kU291cmNlKHNvdXJjZSkpCisKKyAgZGVmIHRlc3RNdWx0aXBsZURlZmF1bHRQYXJh
bWV0ZXJzKHNlbGYpOgorICAgIHNvdXJjZSA9ICIiIgorY2xhc3MgRm9vIHsKKyBwdWJsaWM6Cisg
IHZpcnR1YWwgdm9pZCBCYXIoaW50IGEgPSA0MiwgY2hhciBjID0gJ3gnKSA9IDA7Cit9OworIiIi
CisgICAgc2VsZi5hc3NlcnRFcXVhbElnbm9yZUxlYWRpbmdXaGl0ZXNwYWNlKAorICAgICAgICAn
TU9DS19NRVRIT0QyKEJhcixcbnZvaWQoaW50LCBjaGFyKSk7JywKKyAgICAgICAgc2VsZi5HZW5l
cmF0ZU1ldGhvZFNvdXJjZShzb3VyY2UpKQorCisgIGRlZiB0ZXN0UmVtb3Zlc0NvbW1lbnRzV2hl
bkRlZmF1bHRzQXJlUHJlc2VudChzZWxmKToKKyAgICBzb3VyY2UgPSAiIiIKK2NsYXNzIEZvbyB7
CisgcHVibGljOgorICB2aXJ0dWFsIHZvaWQgQmFyKGludCBhID0gNDIgLyogYSBjb21tZW50ICov
LAorICAgICAgICAgICAgICAgICAgIGNoYXIgLyogb3RoZXIgY29tbWVudCAqLyBjPSAneCcpID0g
MDsKK307CisiIiIKKyAgICBzZWxmLmFzc2VydEVxdWFsSWdub3JlTGVhZGluZ1doaXRlc3BhY2Uo
CisgICAgICAgICdNT0NLX01FVEhPRDIoQmFyLFxudm9pZChpbnQsIGNoYXIpKTsnLAorICAgICAg
ICBzZWxmLkdlbmVyYXRlTWV0aG9kU291cmNlKHNvdXJjZSkpCisKKyAgZGVmIHRlc3REb3VibGVT
bGFzaENvbW1lbnRzSW5QYXJhbWV0ZXJMaXN0QXJlUmVtb3ZlZChzZWxmKToKKyAgICBzb3VyY2Ug
PSAiIiIKK2NsYXNzIEZvbyB7CisgcHVibGljOgorICB2aXJ0dWFsIHZvaWQgQmFyKGludCBhLCAg
Ly8gaW5saW5lIGNvbW1lbnRzIHNob3VsZCBiZSBlbGlkZWQuCisgICAgICAgICAgICAgICAgICAg
aW50IGIgICAvLyBpbmxpbmUgY29tbWVudHMgc2hvdWxkIGJlIGVsaWRlZC4KKyAgICAgICAgICAg
ICAgICAgICApIGNvbnN0ID0gMDsKK307CisiIiIKKyAgICBzZWxmLmFzc2VydEVxdWFsSWdub3Jl
TGVhZGluZ1doaXRlc3BhY2UoCisgICAgICAgICdNT0NLX0NPTlNUX01FVEhPRDIoQmFyLFxudm9p
ZChpbnQgYSwgaW50IGIpKTsnLAorICAgICAgICBzZWxmLkdlbmVyYXRlTWV0aG9kU291cmNlKHNv
dXJjZSkpCisKKyAgZGVmIHRlc3RDU3R5bGVDb21tZW50c0luUGFyYW1ldGVyTGlzdEFyZU5vdFJl
bW92ZWQoc2VsZik6CisgICAgIyBOT1RFKG5ub3J3aXR6KTogSSdtIG5vdCBzdXJlIGlmIGl0J3Mg
dGhlIGJlc3QgYmVoYXZpb3IgdG8ga2VlcCB0aGVzZQorICAgICMgY29tbWVudHMuICBBbHNvIG5v
dGUgdGhhdCBDIHN0eWxlIGNvbW1lbnRzIGFmdGVyIHRoZSBsYXN0IHBhcmFtZXRlcgorICAgICMg
YXJlIHN0aWxsIGVsaWRlZC4KKyAgICBzb3VyY2UgPSAiIiIKK2NsYXNzIEZvbyB7CisgcHVibGlj
OgorICB2aXJ0dWFsIGNvbnN0IHN0cmluZyYgQmFyKGludCAvKiBrZWVwZXIgKi8sIGludCBiKTsK
K307CisiIiIKKyAgICBzZWxmLmFzc2VydEVxdWFsSWdub3JlTGVhZGluZ1doaXRlc3BhY2UoCisg
ICAgICAgICdNT0NLX01FVEhPRDIoQmFyLFxuY29uc3Qgc3RyaW5nJihpbnQgLyoga2VlcGVyICov
LCBpbnQgYikpOycsCisgICAgICAgIHNlbGYuR2VuZXJhdGVNZXRob2RTb3VyY2Uoc291cmNlKSkK
KworICBkZWYgdGVzdEFyZ3NPZlRlbXBsYXRlVHlwZXMoc2VsZik6CisgICAgc291cmNlID0gIiIi
CitjbGFzcyBGb28geworIHB1YmxpYzoKKyAgdmlydHVhbCBpbnQgQmFyKGNvbnN0IHZlY3Rvcjxp
bnQ+JiB2LCBtYXA8aW50LCBzdHJpbmc+KiBvdXRwdXQpOworfTsiIiIKKyAgICBzZWxmLmFzc2Vy
dEVxdWFsSWdub3JlTGVhZGluZ1doaXRlc3BhY2UoCisgICAgICAgICdNT0NLX01FVEhPRDIoQmFy
LFxuJworICAgICAgICAnaW50KGNvbnN0IHZlY3RvcjxpbnQ+JiB2LCBtYXA8aW50LCBzdHJpbmc+
KiBvdXRwdXQpKTsnLAorICAgICAgICBzZWxmLkdlbmVyYXRlTWV0aG9kU291cmNlKHNvdXJjZSkp
CisKKyAgZGVmIHRlc3RSZXR1cm5UeXBlV2l0aE9uZVRlbXBsYXRlQXJnKHNlbGYpOgorICAgIHNv
dXJjZSA9ICIiIgorY2xhc3MgRm9vIHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgdmVjdG9yPGludD4q
IEJhcihpbnQgbik7Cit9OyIiIgorICAgIHNlbGYuYXNzZXJ0RXF1YWxJZ25vcmVMZWFkaW5nV2hp
dGVzcGFjZSgKKyAgICAgICAgJ01PQ0tfTUVUSE9EMShCYXIsXG52ZWN0b3I8aW50PiooaW50IG4p
KTsnLAorICAgICAgICBzZWxmLkdlbmVyYXRlTWV0aG9kU291cmNlKHNvdXJjZSkpCisKKyAgZGVm
IHRlc3RSZXR1cm5UeXBlV2l0aE1hbnlUZW1wbGF0ZUFyZ3Moc2VsZik6CisgICAgc291cmNlID0g
IiIiCitjbGFzcyBGb28geworIHB1YmxpYzoKKyAgdmlydHVhbCBtYXA8aW50LCBzdHJpbmc+IEJh
cigpOworfTsiIiIKKyAgICAjIENvbXBhcmluZyB0aGUgY29tbWVudCB0ZXh0IGlzIGJyaXR0bGUg
LSB3ZSdsbCB0aGluayBvZiBzb21ldGhpbmcKKyAgICAjIGJldHRlciBpbiBjYXNlIHRoaXMgZ2V0
cyBhbm5veWluZywgYnV0IGZvciBub3cgbGV0J3Mga2VlcCBpdCBzaW1wbGUuCisgICAgc2VsZi5h
c3NlcnRFcXVhbElnbm9yZUxlYWRpbmdXaGl0ZXNwYWNlKAorICAgICAgICAnLy8gVGhlIGZvbGxv
d2luZyBsaW5lIHdvblwndCByZWFsbHkgY29tcGlsZSwgYXMgdGhlIHJldHVyblxuJworICAgICAg
ICAnLy8gdHlwZSBoYXMgbXVsdGlwbGUgdGVtcGxhdGUgYXJndW1lbnRzLiAgVG8gZml4IGl0LCB1
c2UgYVxuJworICAgICAgICAnLy8gdHlwZWRlZiBmb3IgdGhlIHJldHVybiB0eXBlLlxuJworICAg
ICAgICAnTU9DS19NRVRIT0QwKEJhcixcbm1hcDxpbnQsIHN0cmluZz4oKSk7JywKKyAgICAgICAg
c2VsZi5HZW5lcmF0ZU1ldGhvZFNvdXJjZShzb3VyY2UpKQorCisgIGRlZiB0ZXN0U2ltcGxlTWV0
aG9kSW5UZW1wbGF0ZWRDbGFzcyhzZWxmKToKKyAgICBzb3VyY2UgPSAiIiIKK3RlbXBsYXRlPGNs
YXNzIFQ+CitjbGFzcyBGb28geworIHB1YmxpYzoKKyAgdmlydHVhbCBpbnQgQmFyKCk7Cit9Owor
IiIiCisgICAgc2VsZi5hc3NlcnRFcXVhbElnbm9yZUxlYWRpbmdXaGl0ZXNwYWNlKAorICAgICAg
ICAnTU9DS19NRVRIT0QwX1QoQmFyLFxuaW50KCkpOycsCisgICAgICAgIHNlbGYuR2VuZXJhdGVN
ZXRob2RTb3VyY2Uoc291cmNlKSkKKworICBkZWYgdGVzdFBvaW50ZXJBcmdXaXRob3V0TmFtZXMo
c2VsZik6CisgICAgc291cmNlID0gIiIiCitjbGFzcyBGb28geworICB2aXJ0dWFsIGludCBCYXIo
QyopOworfTsKKyIiIgorICAgIHNlbGYuYXNzZXJ0RXF1YWxJZ25vcmVMZWFkaW5nV2hpdGVzcGFj
ZSgKKyAgICAgICAgJ01PQ0tfTUVUSE9EMShCYXIsXG5pbnQoQyopKTsnLAorICAgICAgICBzZWxm
LkdlbmVyYXRlTWV0aG9kU291cmNlKHNvdXJjZSkpCisKKyAgZGVmIHRlc3RSZWZlcmVuY2VBcmdX
aXRob3V0TmFtZXMoc2VsZik6CisgICAgc291cmNlID0gIiIiCitjbGFzcyBGb28geworICB2aXJ0
dWFsIGludCBCYXIoQyYpOworfTsKKyIiIgorICAgIHNlbGYuYXNzZXJ0RXF1YWxJZ25vcmVMZWFk
aW5nV2hpdGVzcGFjZSgKKyAgICAgICAgJ01PQ0tfTUVUSE9EMShCYXIsXG5pbnQoQyYpKTsnLAor
ICAgICAgICBzZWxmLkdlbmVyYXRlTWV0aG9kU291cmNlKHNvdXJjZSkpCisKKyAgZGVmIHRlc3RB
cnJheUFyZ1dpdGhvdXROYW1lcyhzZWxmKToKKyAgICBzb3VyY2UgPSAiIiIKK2NsYXNzIEZvbyB7
CisgIHZpcnR1YWwgaW50IEJhcihDW10pOworfTsKKyIiIgorICAgIHNlbGYuYXNzZXJ0RXF1YWxJ
Z25vcmVMZWFkaW5nV2hpdGVzcGFjZSgKKyAgICAgICAgJ01PQ0tfTUVUSE9EMShCYXIsXG5pbnQo
Q1tdKSk7JywKKyAgICAgICAgc2VsZi5HZW5lcmF0ZU1ldGhvZFNvdXJjZShzb3VyY2UpKQorCisK
K2NsYXNzIEdlbmVyYXRlTW9ja3NUZXN0KFRlc3RDYXNlKToKKworICBkZWYgR2VuZXJhdGVNb2Nr
cyhzZWxmLCBjcHBfc291cmNlKToKKyAgICAiIiJDb252ZXJ0IEMrKyBzb3VyY2UgdG8gY29tcGxl
dGUgR29vZ2xlIE1vY2sgb3V0cHV0IHNvdXJjZS4iIiIKKyAgICAjIDx0ZXN0PiBpcyBhIHBzZXVk
by1maWxlbmFtZSwgaXQgaXMgbm90IHJlYWQgb3Igd3JpdHRlbi4KKyAgICBmaWxlbmFtZSA9ICc8
dGVzdD4nCisgICAgYnVpbGRlciA9IGFzdC5CdWlsZGVyRnJvbVNvdXJjZShjcHBfc291cmNlLCBm
aWxlbmFtZSkKKyAgICBhc3RfbGlzdCA9IGxpc3QoYnVpbGRlci5HZW5lcmF0ZSgpKQorICAgIGxp
bmVzID0gZ21vY2tfY2xhc3MuX0dlbmVyYXRlTW9ja3MoZmlsZW5hbWUsIGNwcF9zb3VyY2UsIGFz
dF9saXN0LCBOb25lKQorICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCisKKyAgZGVmIHRlc3RO
YW1lc3BhY2VzKHNlbGYpOgorICAgIHNvdXJjZSA9ICIiIgorbmFtZXNwYWNlIEZvbyB7CituYW1l
c3BhY2UgQmFyIHsgY2xhc3MgRm9yd2FyZDsgfQorbmFtZXNwYWNlIEJheiB7CisKK2NsYXNzIFRl
c3QgeworIHB1YmxpYzoKKyAgdmlydHVhbCB2b2lkIEZvbygpOworfTsKKworfSAgLy8gbmFtZXNw
YWNlIEJhegorfSAgLy8gbmFtZXNwYWNlIEZvbworIiIiCisgICAgZXhwZWN0ZWQgPSAiIiJcCitu
YW1lc3BhY2UgRm9vIHsKK25hbWVzcGFjZSBCYXogeworCitjbGFzcyBNb2NrVGVzdCA6IHB1Ymxp
YyBUZXN0IHsKK3B1YmxpYzoKK01PQ0tfTUVUSE9EMChGb28sCit2b2lkKCkpOworfTsKKworfSAg
Ly8gbmFtZXNwYWNlIEJhegorfSAgLy8gbmFtZXNwYWNlIEZvbworIiIiCisgICAgc2VsZi5hc3Nl
cnRFcXVhbElnbm9yZUxlYWRpbmdXaGl0ZXNwYWNlKAorICAgICAgICBleHBlY3RlZCwgc2VsZi5H
ZW5lcmF0ZU1vY2tzKHNvdXJjZSkpCisKKyAgZGVmIHRlc3RDbGFzc1dpdGhTdG9yYWdlU3BlY2lm
aWVyTWFjcm8oc2VsZik6CisgICAgc291cmNlID0gIiIiCitjbGFzcyBTVE9SQUdFX1NQRUNJRklF
UiBUZXN0IHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgdm9pZCBGb28oKTsKK307CisiIiIKKyAgICBl
eHBlY3RlZCA9ICIiIlwKK2NsYXNzIE1vY2tUZXN0IDogcHVibGljIFRlc3QgeworcHVibGljOgor
TU9DS19NRVRIT0QwKEZvbywKK3ZvaWQoKSk7Cit9OworIiIiCisgICAgc2VsZi5hc3NlcnRFcXVh
bElnbm9yZUxlYWRpbmdXaGl0ZXNwYWNlKAorICAgICAgICBleHBlY3RlZCwgc2VsZi5HZW5lcmF0
ZU1vY2tzKHNvdXJjZSkpCisKKyAgZGVmIHRlc3RUZW1wbGF0ZWRGb3J3YXJkRGVjbGFyYXRpb24o
c2VsZik6CisgICAgc291cmNlID0gIiIiCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgRm9yd2Fy
ZDsgIC8vIEZvcndhcmQgZGVjbGFyYXRpb24gc2hvdWxkIGJlIGlnbm9yZWQuCitjbGFzcyBUZXN0
IHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgdm9pZCBGb28oKTsKK307CisiIiIKKyAgICBleHBlY3Rl
ZCA9ICIiIlwKK2NsYXNzIE1vY2tUZXN0IDogcHVibGljIFRlc3QgeworcHVibGljOgorTU9DS19N
RVRIT0QwKEZvbywKK3ZvaWQoKSk7Cit9OworIiIiCisgICAgc2VsZi5hc3NlcnRFcXVhbElnbm9y
ZUxlYWRpbmdXaGl0ZXNwYWNlKAorICAgICAgICBleHBlY3RlZCwgc2VsZi5HZW5lcmF0ZU1vY2tz
KHNvdXJjZSkpCisKKyAgZGVmIHRlc3RUZW1wbGF0ZWRDbGFzcyhzZWxmKToKKyAgICBzb3VyY2Ug
PSAiIiIKK3RlbXBsYXRlIDx0eXBlbmFtZSBTLCB0eXBlbmFtZSBUPgorY2xhc3MgVGVzdCB7Cisg
cHVibGljOgorICB2aXJ0dWFsIHZvaWQgRm9vKCk7Cit9OworIiIiCisgICAgZXhwZWN0ZWQgPSAi
IiJcCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxPgorY2xhc3MgTW9ja1Rlc3Qg
OiBwdWJsaWMgVGVzdDxUMCwgVDE+IHsKK3B1YmxpYzoKK01PQ0tfTUVUSE9EMF9UKEZvbywKK3Zv
aWQoKSk7Cit9OworIiIiCisgICAgc2VsZi5hc3NlcnRFcXVhbElnbm9yZUxlYWRpbmdXaGl0ZXNw
YWNlKAorICAgICAgICBleHBlY3RlZCwgc2VsZi5HZW5lcmF0ZU1vY2tzKHNvdXJjZSkpCisKKyAg
ZGVmIHRlc3RUZW1wbGF0ZUluQVRlbXBsYXRlVHlwZWRlZihzZWxmKToKKyAgICBzb3VyY2UgPSAi
IiIKK2NsYXNzIFRlc3QgeworIHB1YmxpYzoKKyAgdHlwZWRlZiBzdGQ6OnZlY3RvcjxzdGQ6Omxp
c3Q8aW50Pj4gRm9vVHlwZTsKKyAgdmlydHVhbCB2b2lkIEJhcihjb25zdCBGb29UeXBlJiB0ZXN0
X2FyZyk7Cit9OworIiIiCisgICAgZXhwZWN0ZWQgPSAiIiJcCitjbGFzcyBNb2NrVGVzdCA6IHB1
YmxpYyBUZXN0IHsKK3B1YmxpYzoKK01PQ0tfTUVUSE9EMShCYXIsCit2b2lkKGNvbnN0IEZvb1R5
cGUmIHRlc3RfYXJnKSk7Cit9OworIiIiCisgICAgc2VsZi5hc3NlcnRFcXVhbElnbm9yZUxlYWRp
bmdXaGl0ZXNwYWNlKAorICAgICAgICBleHBlY3RlZCwgc2VsZi5HZW5lcmF0ZU1vY2tzKHNvdXJj
ZSkpCisKKyAgZGVmIHRlc3RUZW1wbGF0ZUluQVRlbXBsYXRlVHlwZWRlZldpdGhDb21tYShzZWxm
KToKKyAgICBzb3VyY2UgPSAiIiIKK2NsYXNzIFRlc3QgeworIHB1YmxpYzoKKyAgdHlwZWRlZiBz
dGQ6OmZ1bmN0aW9uPHZvaWQoCisgICAgICBjb25zdCB2ZWN0b3I8c3RkOjpsaXN0PGludD4+Jiwg
aW50PiBGb29UeXBlOworICB2aXJ0dWFsIHZvaWQgQmFyKGNvbnN0IEZvb1R5cGUmIHRlc3RfYXJn
KTsKK307CisiIiIKKyAgICBleHBlY3RlZCA9ICIiIlwKK2NsYXNzIE1vY2tUZXN0IDogcHVibGlj
IFRlc3QgeworcHVibGljOgorTU9DS19NRVRIT0QxKEJhciwKK3ZvaWQoY29uc3QgRm9vVHlwZSYg
dGVzdF9hcmcpKTsKK307CisiIiIKKyAgICBzZWxmLmFzc2VydEVxdWFsSWdub3JlTGVhZGluZ1do
aXRlc3BhY2UoCisgICAgICAgIGV4cGVjdGVkLCBzZWxmLkdlbmVyYXRlTW9ja3Moc291cmNlKSkK
KworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2ds
ZXRlc3QvZ29vZ2xlbW9jay9zY3JpcHRzL2dlbmVyYXRvci9jcHAva2V5d29yZHMucHkgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xlbW9jay9zY3JpcHRzL2dlbmVyYXRvci9jcHAva2V5d29yZHMucHkKbmV3IGZpbGUgbW9kZSAx
MDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjY5
NDQ1MGUzNzNlMTkxYjZkNWQ4N2NhYmE0NmVhNzM3MWYwMGVlZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGVtb2NrL3NjcmlwdHMvZ2VuZXJhdG9yL2NwcC9rZXl3b3Jkcy5weQpAQCAtMCwwICsx
LDU5IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMDcgTmVhbCBO
b3J3aXR6CisjIFBvcnRpb25zIENvcHlyaWdodCAyMDA3IEdvb2dsZSBJbmMuCisjCisjIExpY2Vu
c2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIp
OworIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCisjIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAor
IworIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIwor
IyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCisjIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisjIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorIyBTZWUgdGhlIExp
Y2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5k
CisjIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisiIiJDKysga2V5d29yZHMgYW5k
IGhlbHBlciB1dGlsaXRpZXMgZm9yIGRldGVybWluaW5nIGtleXdvcmRzLiIiIgorCitfX2F1dGhv
cl9fID0gJ25ub3J3aXR6QGdvb2dsZS5jb20gKE5lYWwgTm9yd2l0eiknCisKKwordHJ5OgorICAg
ICMgUHl0aG9uIDMueAorICAgIGltcG9ydCBidWlsdGlucworZXhjZXB0IEltcG9ydEVycm9yOgor
ICAgICMgUHl0aG9uIDIueAorICAgIGltcG9ydCBfX2J1aWx0aW5fXyBhcyBidWlsdGlucworCisK
K2lmIG5vdCBoYXNhdHRyKGJ1aWx0aW5zLCAnc2V0Jyk6CisgICAgIyBOb21pbmFsIHN1cHBvcnQg
Zm9yIFB5dGhvbiAyLjMuCisgICAgZnJvbSBzZXRzIGltcG9ydCBTZXQgYXMgc2V0CisKKworVFlQ
RVMgPSBzZXQoJ2Jvb2wgY2hhciBpbnQgbG9uZyBzaG9ydCBkb3VibGUgZmxvYXQgdm9pZCB3Y2hh
cl90IHVuc2lnbmVkIHNpZ25lZCcuc3BsaXQoKSkKK1RZUEVfTU9ESUZJRVJTID0gc2V0KCdhdXRv
IHJlZ2lzdGVyIGNvbnN0IGlubGluZSBleHRlcm4gc3RhdGljIHZpcnR1YWwgdm9sYXRpbGUgbXV0
YWJsZScuc3BsaXQoKSkKK0FDQ0VTUyA9IHNldCgncHVibGljIHByb3RlY3RlZCBwcml2YXRlIGZy
aWVuZCcuc3BsaXQoKSkKKworQ0FTVFMgPSBzZXQoJ3N0YXRpY19jYXN0IGNvbnN0X2Nhc3QgZHlu
YW1pY19jYXN0IHJlaW50ZXJwcmV0X2Nhc3QnLnNwbGl0KCkpCisKK09USEVSUyA9IHNldCgndHJ1
ZSBmYWxzZSBhc20gY2xhc3MgbmFtZXNwYWNlIHVzaW5nIGV4cGxpY2l0IHRoaXMgb3BlcmF0b3Ig
c2l6ZW9mJy5zcGxpdCgpKQorT1RIRVJfVFlQRVMgPSBzZXQoJ25ldyBkZWxldGUgdHlwZWRlZiBz
dHJ1Y3QgdW5pb24gZW51bSB0eXBlaWQgdHlwZW5hbWUgdGVtcGxhdGUnLnNwbGl0KCkpCisKK0NP
TlRST0wgPSBzZXQoJ2Nhc2Ugc3dpdGNoIGRlZmF1bHQgaWYgZWxzZSByZXR1cm4gZ290bycuc3Bs
aXQoKSkKK0VYQ0VQVElPTiA9IHNldCgndHJ5IGNhdGNoIHRocm93Jy5zcGxpdCgpKQorTE9PUCA9
IHNldCgnd2hpbGUgZG8gZm9yIGJyZWFrIGNvbnRpbnVlJy5zcGxpdCgpKQorCitBTEwgPSBUWVBF
UyB8IFRZUEVfTU9ESUZJRVJTIHwgQUNDRVNTIHwgQ0FTVFMgfCBPVEhFUlMgfCBPVEhFUl9UWVBF
UyB8IENPTlRST0wgfCBFWENFUFRJT04gfCBMT09QCisKKworZGVmIElzS2V5d29yZCh0b2tlbik6
CisgICAgcmV0dXJuIHRva2VuIGluIEFMTAorCitkZWYgSXNCdWlsdGluVHlwZSh0b2tlbik6Cisg
ICAgaWYgdG9rZW4gaW4gKCd2aXJ0dWFsJywgJ2lubGluZScpOgorICAgICAgICAjIFRoZXNlIG9u
bHkgYXBwbHkgdG8gbWV0aG9kcywgdGhleSBjYW4ndCBiZSB0eXBlcyBieSB0aGVtc2VsdmVzLgor
ICAgICAgICByZXR1cm4gRmFsc2UKKyAgICByZXR1cm4gdG9rZW4gaW4gVFlQRVMgb3IgdG9rZW4g
aW4gVFlQRV9NT0RJRklFUlMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NjcmlwdHMvZ2VuZXJh
dG9yL2NwcC90b2tlbml6ZS5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NjcmlwdHMvZ2VuZXJhdG9yL2NwcC90
b2tlbml6ZS5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNTlkNTU2MmQ3OGNmOTJhYmFmZGQyYjlmMWVmNjRlZjA1
ZjU0N2JkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc2NyaXB0cy9nZW5lcmF0b3Iv
Y3BwL3Rva2VuaXplLnB5CkBAIC0wLDAgKzEsMjg3IEBACisjIS91c3IvYmluL2VudiBweXRob24K
KyMKKyMgQ29weXJpZ2h0IDIwMDcgTmVhbCBOb3J3aXR6CisjIFBvcnRpb25zIENvcHlyaWdodCAy
MDA3IEdvb2dsZSBJbmMuCisjCisjIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwg
VmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisjIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorIworIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIworIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisjIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisjIFdJ
VEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz
cyBvciBpbXBsaWVkLgorIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisjIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNl
bnNlLgorCisiIiJUb2tlbml6ZSBDKysgc291cmNlIGNvZGUuIiIiCisKK19fYXV0aG9yX18gPSAn
bm5vcndpdHpAZ29vZ2xlLmNvbSAoTmVhbCBOb3J3aXR6KScKKworCit0cnk6CisgICAgIyBQeXRo
b24gMy54CisgICAgaW1wb3J0IGJ1aWx0aW5zCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgIyBQ
eXRob24gMi54CisgICAgaW1wb3J0IF9fYnVpbHRpbl9fIGFzIGJ1aWx0aW5zCisKKworaW1wb3J0
IHN5cworCitmcm9tIGNwcCBpbXBvcnQgdXRpbHMKKworCitpZiBub3QgaGFzYXR0cihidWlsdGlu
cywgJ3NldCcpOgorICAgICMgTm9taW5hbCBzdXBwb3J0IGZvciBQeXRob24gMi4zLgorICAgIGZy
b20gc2V0cyBpbXBvcnQgU2V0IGFzIHNldAorCisKKyMgQWRkICQgYXMgYSB2YWxpZCBpZGVudGlm
aWVyIGNoYXIgc2luY2Ugc28gbXVjaCBjb2RlIHVzZXMgaXQuCitfbGV0dGVycyA9ICdhYmNkZWZn
aGlqa2xtbm9wcXJzdHV2d3h5eicKK1ZBTElEX0lERU5USUZJRVJfQ0hBUlMgPSBzZXQoX2xldHRl
cnMgKyBfbGV0dGVycy51cHBlcigpICsgJ18wMTIzNDU2Nzg5JCcpCitIRVhfRElHSVRTID0gc2V0
KCcwMTIzNDU2Nzg5YWJjZGVmQUJDREVGJykKK0lOVF9PUl9GTE9BVF9ESUdJVFMgPSBzZXQoJzAx
MjM0NTY3ODkwZUUtKycpCisKKworIyBDKysweCBzdHJpbmcgcHJlZmZpeGVzLgorX1NUUl9QUkVG
SVhFUyA9IHNldCgoJ1InLCAndTgnLCAndThSJywgJ3UnLCAndVInLCAnVScsICdVUicsICdMJywg
J0xSJykpCisKKworIyBUb2tlbiB0eXBlcy4KK1VOS05PV04gPSAnVU5LTk9XTicKK1NZTlRBWCA9
ICdTWU5UQVgnCitDT05TVEFOVCA9ICdDT05TVEFOVCcKK05BTUUgPSAnTkFNRScKK1BSRVBST0NF
U1NPUiA9ICdQUkVQUk9DRVNTT1InCisKKyMgV2hlcmUgdGhlIHRva2VuIG9yaWdpbmF0ZWQgZnJv
bS4gIFRoaXMgY2FuIGJlIHVzZWQgZm9yIGJhY2t0cmFja2luZy4KKyMgSXQgaXMgYWx3YXlzIHNl
dCB0byBXSEVOQ0VfU1RSRUFNIGluIHRoaXMgY29kZS4KK1dIRU5DRV9TVFJFQU0sIFdIRU5DRV9R
VUVVRSA9IHJhbmdlKDIpCisKKworY2xhc3MgVG9rZW4ob2JqZWN0KToKKyAgICAiIiJEYXRhIGNv
bnRhaW5lciB0byByZXByZXNlbnQgYSBDKysgdG9rZW4uCisKKyAgICBUb2tlbnMgY2FuIGJlIGlk
ZW50aWZpZXJzLCBzeW50YXggY2hhcihzKSwgY29uc3RhbnRzLCBvcgorICAgIHByZS1wcm9jZXNz
b3IgZGlyZWN0aXZlcy4KKworICAgIHN0YXJ0IGNvbnRhaW5zIHRoZSBpbmRleCBvZiB0aGUgZmly
c3QgY2hhciBvZiB0aGUgdG9rZW4gaW4gdGhlIHNvdXJjZQorICAgIGVuZCBjb250YWlucyB0aGUg
aW5kZXggb2YgdGhlIGxhc3QgY2hhciBvZiB0aGUgdG9rZW4gaW4gdGhlIHNvdXJjZQorICAgICIi
IgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRva2VuX3R5cGUsIG5hbWUsIHN0YXJ0LCBlbmQp
OgorICAgICAgICBzZWxmLnRva2VuX3R5cGUgPSB0b2tlbl90eXBlCisgICAgICAgIHNlbGYubmFt
ZSA9IG5hbWUKKyAgICAgICAgc2VsZi5zdGFydCA9IHN0YXJ0CisgICAgICAgIHNlbGYuZW5kID0g
ZW5kCisgICAgICAgIHNlbGYud2hlbmNlID0gV0hFTkNFX1NUUkVBTQorCisgICAgZGVmIF9fc3Ry
X18oc2VsZik6CisgICAgICAgIGlmIG5vdCB1dGlscy5ERUJVRzoKKyAgICAgICAgICAgIHJldHVy
biAnVG9rZW4oJXIpJyAlIHNlbGYubmFtZQorICAgICAgICByZXR1cm4gJ1Rva2VuKCVyLCAlcywg
JXMpJyAlIChzZWxmLm5hbWUsIHNlbGYuc3RhcnQsIHNlbGYuZW5kKQorCisgICAgX19yZXByX18g
PSBfX3N0cl9fCisKKworZGVmIF9HZXRTdHJpbmcoc291cmNlLCBzdGFydCwgaSk6CisgICAgaSA9
IHNvdXJjZS5maW5kKCciJywgaSsxKQorICAgIHdoaWxlIHNvdXJjZVtpLTFdID09ICdcXCc6Cisg
ICAgICAgICMgQ291bnQgdGhlIHRyYWlsaW5nIGJhY2tzbGFzaGVzLgorICAgICAgICBiYWNrc2xh
c2hfY291bnQgPSAxCisgICAgICAgIGogPSBpIC0gMgorICAgICAgICB3aGlsZSBzb3VyY2Vbal0g
PT0gJ1xcJzoKKyAgICAgICAgICAgIGJhY2tzbGFzaF9jb3VudCArPSAxCisgICAgICAgICAgICBq
IC09IDEKKyAgICAgICAgIyBXaGVuIHRyYWlsaW5nIGJhY2tzbGFzaGVzIGFyZSBldmVuLCB0aGV5
IGVzY2FwZSBlYWNoIG90aGVyLgorICAgICAgICBpZiAoYmFja3NsYXNoX2NvdW50ICUgMikgPT0g
MDoKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGkgPSBzb3VyY2UuZmluZCgnIicsIGkrMSkK
KyAgICByZXR1cm4gaSArIDEKKworCitkZWYgX0dldENoYXIoc291cmNlLCBzdGFydCwgaSk6Cisg
ICAgIyBOT1RFKG5ub3J3aXR6KTogbWF5IG5vdCBiZSBxdWl0ZSBjb3JyZWN0LCBzaG91bGQgYmUg
Z29vZCBlbm91Z2guCisgICAgaSA9IHNvdXJjZS5maW5kKCInIiwgaSsxKQorICAgIHdoaWxlIHNv
dXJjZVtpLTFdID09ICdcXCc6CisgICAgICAgICMgTmVlZCB0byBzcGVjaWFsIGNhc2UgJ1xcJy4K
KyAgICAgICAgaWYgKGkgLSAyKSA+IHN0YXJ0IGFuZCBzb3VyY2VbaS0yXSA9PSAnXFwnOgorICAg
ICAgICAgICAgYnJlYWsKKyAgICAgICAgaSA9IHNvdXJjZS5maW5kKCInIiwgaSsxKQorICAgICMg
VHJ5IHRvIGhhbmRsZSB1bnRlcm1pbmF0ZWQgc2luZ2xlIHF1b3RlcyAoaW4gYSAjaWYgMCBibG9j
aykuCisgICAgaWYgaSA8IDA6CisgICAgICAgIGkgPSBzdGFydAorICAgIHJldHVybiBpICsgMQor
CisKK2RlZiBHZXRUb2tlbnMoc291cmNlKToKKyAgICAiIiJSZXR1cm5zIGEgc2VxdWVuY2Ugb2Yg
VG9rZW5zLgorCisgICAgQXJnczoKKyAgICAgIHNvdXJjZTogc3RyaW5nIG9mIEMrKyBzb3VyY2Ug
Y29kZS4KKworICAgIFlpZWxkczoKKyAgICAgIFRva2VuIHRoYXQgcmVwcmVzZW50cyB0aGUgbmV4
dCB0b2tlbiBpbiB0aGUgc291cmNlLgorICAgICIiIgorICAgICMgQ2FjaGUgdmFyaW91cyB2YWxp
ZCBjaGFyYWN0ZXIgc2V0cyBmb3Igc3BlZWQuCisgICAgdmFsaWRfaWRlbnRpZmllcl9jaGFycyA9
IFZBTElEX0lERU5USUZJRVJfQ0hBUlMKKyAgICBoZXhfZGlnaXRzID0gSEVYX0RJR0lUUworICAg
IGludF9vcl9mbG9hdF9kaWdpdHMgPSBJTlRfT1JfRkxPQVRfRElHSVRTCisgICAgaW50X29yX2Zs
b2F0X2RpZ2l0czIgPSBpbnRfb3JfZmxvYXRfZGlnaXRzIHwgc2V0KCcuJykKKworICAgICMgT25s
eSBpZ25vcmUgZXJyb3JzIHdoaWxlIGluIGEgI2lmIDAgYmxvY2suCisgICAgaWdub3JlX2Vycm9y
cyA9IEZhbHNlCisgICAgY291bnRfaWZzID0gMAorCisgICAgaSA9IDAKKyAgICBlbmQgPSBsZW4o
c291cmNlKQorICAgIHdoaWxlIGkgPCBlbmQ6CisgICAgICAgICMgU2tpcCB3aGl0ZXNwYWNlLgor
ICAgICAgICB3aGlsZSBpIDwgZW5kIGFuZCBzb3VyY2VbaV0uaXNzcGFjZSgpOgorICAgICAgICAg
ICAgaSArPSAxCisgICAgICAgIGlmIGkgPj0gZW5kOgorICAgICAgICAgICAgcmV0dXJuCisKKyAg
ICAgICAgdG9rZW5fdHlwZSA9IFVOS05PV04KKyAgICAgICAgc3RhcnQgPSBpCisgICAgICAgIGMg
PSBzb3VyY2VbaV0KKyAgICAgICAgaWYgYy5pc2FscGhhKCkgb3IgYyA9PSAnXyc6ICAgICAgICAg
ICAgICAjIEZpbmQgYSBzdHJpbmcgdG9rZW4uCisgICAgICAgICAgICB0b2tlbl90eXBlID0gTkFN
RQorICAgICAgICAgICAgd2hpbGUgc291cmNlW2ldIGluIHZhbGlkX2lkZW50aWZpZXJfY2hhcnM6
CisgICAgICAgICAgICAgICAgaSArPSAxCisgICAgICAgICAgICAjIFN0cmluZyBhbmQgY2hhcmFj
dGVyIGNvbnN0YW50cyBjYW4gbG9vayBsaWtlIGEgbmFtZSBpZgorICAgICAgICAgICAgIyB0aGV5
IGFyZSBzb21ldGhpbmcgbGlrZSBMIiIuCisgICAgICAgICAgICBpZiAoc291cmNlW2ldID09ICIn
IiBhbmQgKGkgLSBzdGFydCkgPT0gMSBhbmQKKyAgICAgICAgICAgICAgICBzb3VyY2Vbc3RhcnQ6
aV0gaW4gJ3VVTCcpOgorICAgICAgICAgICAgICAgICMgdSwgVSwgYW5kIEwgYXJlIHZhbGlkIEMr
KzB4IGNoYXJhY3RlciBwcmVmZml4ZXMuCisgICAgICAgICAgICAgICAgdG9rZW5fdHlwZSA9IENP
TlNUQU5UCisgICAgICAgICAgICAgICAgaSA9IF9HZXRDaGFyKHNvdXJjZSwgc3RhcnQsIGkpCisg
ICAgICAgICAgICBlbGlmIHNvdXJjZVtpXSA9PSAiJyIgYW5kIHNvdXJjZVtzdGFydDppXSBpbiBf
U1RSX1BSRUZJWEVTOgorICAgICAgICAgICAgICAgIHRva2VuX3R5cGUgPSBDT05TVEFOVAorICAg
ICAgICAgICAgICAgIGkgPSBfR2V0U3RyaW5nKHNvdXJjZSwgc3RhcnQsIGkpCisgICAgICAgIGVs
aWYgYyA9PSAnLycgYW5kIHNvdXJjZVtpKzFdID09ICcvJzogICAgIyBGaW5kIC8vIGNvbW1lbnRz
LgorICAgICAgICAgICAgaSA9IHNvdXJjZS5maW5kKCdcbicsIGkpCisgICAgICAgICAgICBpZiBp
ID09IC0xOiAgIyBIYW5kbGUgRU9GLgorICAgICAgICAgICAgICAgIGkgPSBlbmQKKyAgICAgICAg
ICAgIGNvbnRpbnVlCisgICAgICAgIGVsaWYgYyA9PSAnLycgYW5kIHNvdXJjZVtpKzFdID09ICcq
JzogICAgIyBGaW5kIC8qIGNvbW1lbnRzLiAqLworICAgICAgICAgICAgaSA9IHNvdXJjZS5maW5k
KCcqLycsIGkpICsgMgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgZWxpZiBjIGluICc6
Ky08PiZ8Kj0nOiAgICAgICAgICAgICAgICAgICAjIDogb3IgOjogKHBsdXMgb3RoZXIgY2hhcnMp
LgorICAgICAgICAgICAgdG9rZW5fdHlwZSA9IFNZTlRBWAorICAgICAgICAgICAgaSArPSAxCisg
ICAgICAgICAgICBuZXdfY2ggPSBzb3VyY2VbaV0KKyAgICAgICAgICAgIGlmIG5ld19jaCA9PSBj
IGFuZCBjICE9ICc+JzogICAgICAgICAjIFRyZWF0ICI+PiIgYXMgdHdvIHRva2Vucy4KKyAgICAg
ICAgICAgICAgICBpICs9IDEKKyAgICAgICAgICAgIGVsaWYgYyA9PSAnLScgYW5kIG5ld19jaCA9
PSAnPic6CisgICAgICAgICAgICAgICAgaSArPSAxCisgICAgICAgICAgICBlbGlmIG5ld19jaCA9
PSAnPSc6CisgICAgICAgICAgICAgICAgaSArPSAxCisgICAgICAgIGVsaWYgYyBpbiAnKClbXXt9
fiE/XiU7Ly4sJzogICAgICAgICAgICAgIyBIYW5kbGUgc2luZ2xlIGNoYXIgdG9rZW5zLgorICAg
ICAgICAgICAgdG9rZW5fdHlwZSA9IFNZTlRBWAorICAgICAgICAgICAgaSArPSAxCisgICAgICAg
ICAgICBpZiBjID09ICcuJyBhbmQgc291cmNlW2ldLmlzZGlnaXQoKToKKyAgICAgICAgICAgICAg
ICB0b2tlbl90eXBlID0gQ09OU1RBTlQKKyAgICAgICAgICAgICAgICBpICs9IDEKKyAgICAgICAg
ICAgICAgICB3aGlsZSBzb3VyY2VbaV0gaW4gaW50X29yX2Zsb2F0X2RpZ2l0czoKKyAgICAgICAg
ICAgICAgICAgICAgaSArPSAxCisgICAgICAgICAgICAgICAgIyBIYW5kbGUgZmxvYXQgc3VmZml4
ZXMuCisgICAgICAgICAgICAgICAgZm9yIHN1ZmZpeCBpbiAoJ2wnLCAnZicpOgorICAgICAgICAg
ICAgICAgICAgICBpZiBzdWZmaXggPT0gc291cmNlW2k6aSsxXS5sb3dlcigpOgorICAgICAgICAg
ICAgICAgICAgICAgICAgaSArPSAxCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAg
ICAgICBlbGlmIGMuaXNkaWdpdCgpOiAgICAgICAgICAgICAgICAgICAgICAgICMgRmluZCBpbnRl
Z2VyLgorICAgICAgICAgICAgdG9rZW5fdHlwZSA9IENPTlNUQU5UCisgICAgICAgICAgICBpZiBj
ID09ICcwJyBhbmQgc291cmNlW2krMV0gaW4gJ3hYJzoKKyAgICAgICAgICAgICAgICAjIEhhbmRs
ZSBoZXggZGlnaXRzLgorICAgICAgICAgICAgICAgIGkgKz0gMgorICAgICAgICAgICAgICAgIHdo
aWxlIHNvdXJjZVtpXSBpbiBoZXhfZGlnaXRzOgorICAgICAgICAgICAgICAgICAgICBpICs9IDEK
KyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgd2hpbGUgc291cmNlW2ldIGluIGlu
dF9vcl9mbG9hdF9kaWdpdHMyOgorICAgICAgICAgICAgICAgICAgICBpICs9IDEKKyAgICAgICAg
ICAgICMgSGFuZGxlIGludGVnZXIgKGFuZCBmbG9hdCkgc3VmZml4ZXMuCisgICAgICAgICAgICBm
b3Igc3VmZml4IGluICgndWxsJywgJ2xsJywgJ3VsJywgJ2wnLCAnZicsICd1Jyk6CisgICAgICAg
ICAgICAgICAgc2l6ZSA9IGxlbihzdWZmaXgpCisgICAgICAgICAgICAgICAgaWYgc3VmZml4ID09
IHNvdXJjZVtpOmkrc2l6ZV0ubG93ZXIoKToKKyAgICAgICAgICAgICAgICAgICAgaSArPSBzaXpl
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsaWYgYyA9PSAnIic6ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIyBGaW5kIHN0cmluZy4KKyAgICAgICAgICAgIHRva2VuX3R5
cGUgPSBDT05TVEFOVAorICAgICAgICAgICAgaSA9IF9HZXRTdHJpbmcoc291cmNlLCBzdGFydCwg
aSkKKyAgICAgICAgZWxpZiBjID09ICInIjogICAgICAgICAgICAgICAgICAgICAgICAgICAjIEZp
bmQgY2hhci4KKyAgICAgICAgICAgIHRva2VuX3R5cGUgPSBDT05TVEFOVAorICAgICAgICAgICAg
aSA9IF9HZXRDaGFyKHNvdXJjZSwgc3RhcnQsIGkpCisgICAgICAgIGVsaWYgYyA9PSAnIyc6ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIyBGaW5kIHByZS1wcm9jZXNzb3IgY29tbWFuZC4KKyAg
ICAgICAgICAgIHRva2VuX3R5cGUgPSBQUkVQUk9DRVNTT1IKKyAgICAgICAgICAgIGdvdF9pZiA9
IHNvdXJjZVtpOmkrM10gPT0gJyNpZicgYW5kIHNvdXJjZVtpKzM6aSs0XS5pc3NwYWNlKCkKKyAg
ICAgICAgICAgIGlmIGdvdF9pZjoKKyAgICAgICAgICAgICAgICBjb3VudF9pZnMgKz0gMQorICAg
ICAgICAgICAgZWxpZiBzb3VyY2VbaTppKzZdID09ICcjZW5kaWYnOgorICAgICAgICAgICAgICAg
IGNvdW50X2lmcyAtPSAxCisgICAgICAgICAgICAgICAgaWYgY291bnRfaWZzID09IDA6CisgICAg
ICAgICAgICAgICAgICAgIGlnbm9yZV9lcnJvcnMgPSBGYWxzZQorCisgICAgICAgICAgICAjIFRP
RE8obm5vcndpdHopOiBoYW5kbGUgcHJlcHJvY2Vzc29yIHN0YXRlbWVudHMgKFwgY29udGludWF0
aW9ucykuCisgICAgICAgICAgICB3aGlsZSAxOgorICAgICAgICAgICAgICAgIGkxID0gc291cmNl
LmZpbmQoJ1xuJywgaSkKKyAgICAgICAgICAgICAgICBpMiA9IHNvdXJjZS5maW5kKCcvLycsIGkp
CisgICAgICAgICAgICAgICAgaTMgPSBzb3VyY2UuZmluZCgnLyonLCBpKQorICAgICAgICAgICAg
ICAgIGk0ID0gc291cmNlLmZpbmQoJyInLCBpKQorICAgICAgICAgICAgICAgICMgTk9URShubm9y
d2l0eik6IGRvZXNuJ3QgaGFuZGxlIGNvbW1lbnRzIGluICNkZWZpbmUgbWFjcm9zLgorICAgICAg
ICAgICAgICAgICMgR2V0IHRoZSBmaXJzdCBpbXBvcnRhbnQgc3ltYm9sIChuZXdsaW5lLCBjb21t
ZW50LCBFT0YvZW5kKS4KKyAgICAgICAgICAgICAgICBpID0gbWluKFt4IGZvciB4IGluIChpMSwg
aTIsIGkzLCBpNCwgZW5kKSBpZiB4ICE9IC0xXSkKKworICAgICAgICAgICAgICAgICMgSGFuZGxl
ICNpbmNsdWRlICJkaXIvL2Zvby5oIiBwcm9wZXJseS4KKyAgICAgICAgICAgICAgICBpZiBzb3Vy
Y2VbaV0gPT0gJyInOgorICAgICAgICAgICAgICAgICAgICBpID0gc291cmNlLmZpbmQoJyInLCBp
KzEpICsgMQorICAgICAgICAgICAgICAgICAgICBhc3NlcnQgaSA+IDAKKyAgICAgICAgICAgICAg
ICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAjIEtlZXAgZ29pbmcgaWYgZW5kIG9mIHRo
ZSBsaW5lIGFuZCB0aGUgbGluZSBlbmRzIHdpdGggXC4KKyAgICAgICAgICAgICAgICBpZiBub3Qg
KGkgPT0gaTEgYW5kIHNvdXJjZVtpLTFdID09ICdcXCcpOgorICAgICAgICAgICAgICAgICAgICBp
ZiBnb3RfaWY6CisgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb24gPSBzb3VyY2Vbc3Rh
cnQrNDppXS5sc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmRpdGlvbi5z
dGFydHN3aXRoKCcwJykgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb24u
c3RhcnRzd2l0aCgnKDApJykpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZV9l
cnJvcnMgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAg
aSArPSAxCisgICAgICAgIGVsaWYgYyA9PSAnXFwnOiAgICAgICAgICAgICAgICAgICAgICAgICAg
IyBIYW5kbGUgXCBpbiBjb2RlLgorICAgICAgICAgICAgIyBUaGlzIGlzIGRpZmZlcmVudCBmcm9t
IHRoZSBwcmUtcHJvY2Vzc29yIFwgaGFuZGxpbmcuCisgICAgICAgICAgICBpICs9IDEKKyAgICAg
ICAgICAgIGNvbnRpbnVlCisgICAgICAgIGVsaWYgaWdub3JlX2Vycm9yczoKKyAgICAgICAgICAg
ICMgVGhlIHRva2VuaXplciBzZWVtcyB0byBiZSBpbiBwcmV0dHkgZ29vZCBzaGFwZS4gIFRoaXMK
KyAgICAgICAgICAgICMgcmFpc2UgaXMgY29uZGl0aW9uYWxseSBkaXNhYmxlZCBzbyB0aGF0IGJv
Z3VzIGNvZGUKKyAgICAgICAgICAgICMgaW4gYW4gI2lmIDAgYmxvY2sgY2FuIGJlIGhhbmRsZWQu
ICBTaW5jZSB3ZSB3aWxsIGlnbm9yZQorICAgICAgICAgICAgIyBpdCBhbnl3YXlzLCB0aGlzIGlz
IHByb2JhYmx5IGZpbmUuICBTbyBkaXNhYmxlIHRoZQorICAgICAgICAgICAgIyBleGNlcHRpb24g
YW5kICByZXR1cm4gdGhlIGJvZ3VzIGNoYXIuCisgICAgICAgICAgICBpICs9IDEKKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ0dvdCBpbnZhbGlkIHRva2VuIGlu
ICVzIEAgJWQgdG9rZW46JXM6ICVyXG4nICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KCc/JywgaSwgYywgc291cmNlW2ktMTA6aSsxMF0pKQorICAgICAgICAgICAgcmFpc2UgUnVudGlt
ZUVycm9yKCd1bmV4cGVjdGVkIHRva2VuJykKKworICAgICAgICBpZiBpIDw9IDA6CisgICAgICAg
ICAgICBwcmludCgnSW52YWxpZCBpbmRleCwgZXhpdGluZyBub3cuJykKKyAgICAgICAgICAgIHJl
dHVybgorICAgICAgICB5aWVsZCBUb2tlbih0b2tlbl90eXBlLCBzb3VyY2Vbc3RhcnQ6aV0sIHN0
YXJ0LCBpKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgZGVmIG1haW4oYXJn
dik6CisgICAgICAgICIiIkRyaXZlciBtb3N0bHkgZm9yIHRlc3RpbmcgcHVycG9zZXMuIiIiCisg
ICAgICAgIGZvciBmaWxlbmFtZSBpbiBhcmd2WzE6XToKKyAgICAgICAgICAgIHNvdXJjZSA9IHV0
aWxzLlJlYWRGaWxlKGZpbGVuYW1lKQorICAgICAgICAgICAgaWYgc291cmNlIGlzIE5vbmU6Cisg
ICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgZm9yIHRva2VuIGluIEdldFRv
a2Vucyhzb3VyY2UpOgorICAgICAgICAgICAgICAgIHByaW50KCclLTEyczogJXMnICUgKHRva2Vu
LnRva2VuX3R5cGUsIHRva2VuLm5hbWUpKQorICAgICAgICAgICAgICAgICMgcHJpbnQoJ1xyJTYu
MmYlJScgJSAoMTAwLjAgKiBpbmRleCAvIHRva2VuLmVuZCksKQorICAgICAgICAgICAgc3lzLnN0
ZG91dC53cml0ZSgnXG4nKQorCisKKyAgICBtYWluKHN5cy5hcmd2KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZW1vY2svc2NyaXB0cy9nZW5lcmF0b3IvY3BwL3V0aWxzLnB5IGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc2Ny
aXB0cy9nZW5lcmF0b3IvY3BwL3V0aWxzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhYjM2ZWVjMzM1ZWJhYTYw
MzA1MWI3YmM1MTg2Yzg3YThmNzhmODEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9z
Y3JpcHRzL2dlbmVyYXRvci9jcHAvdXRpbHMucHkKQEAgLTAsMCArMSw0MSBAQAorIyEvdXNyL2Jp
bi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDA3IE5lYWwgTm9yd2l0egorIyBQb3J0aW9u
cyBDb3B5cmlnaHQgMjAwNyBHb29nbGUgSW5jLgorIworIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBh
Y2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyMgeW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorIyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyMKKyMgICAgICBodHRwOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyMKKyMgVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorIyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLAorIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwg
ZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl
Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorIyBsaW1pdGF0aW9ucyB1
bmRlciB0aGUgTGljZW5zZS4KKworIiIiR2VuZXJpYyB1dGlsaXRpZXMgZm9yIEMrKyBwYXJzaW5n
LiIiIgorCitfX2F1dGhvcl9fID0gJ25ub3J3aXR6QGdvb2dsZS5jb20gKE5lYWwgTm9yd2l0eikn
CisKKworaW1wb3J0IHN5cworCisKKyMgU2V0IHRvIFRydWUgdG8gc2VlIHRoZSBzdGFydC9lbmQg
dG9rZW4gaW5kaWNlcy4KK0RFQlVHID0gVHJ1ZQorCisKK2RlZiBSZWFkRmlsZShmaWxlbmFtZSwg
cHJpbnRfZXJyb3I9VHJ1ZSk6CisgICAgIiIiUmV0dXJucyB0aGUgY29udGVudHMgb2YgYSBmaWxl
LiIiIgorICAgIHRyeToKKyAgICAgICAgZnAgPSBvcGVuKGZpbGVuYW1lKQorICAgICAgICB0cnk6
CisgICAgICAgICAgICByZXR1cm4gZnAucmVhZCgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAg
ICAgICBmcC5jbG9zZSgpCisgICAgZXhjZXB0IElPRXJyb3I6CisgICAgICAgIGlmIHByaW50X2Vy
cm9yOgorICAgICAgICAgICAgcHJpbnQoJ0Vycm9yIHJlYWRpbmcgJXM6ICVzJyAlIChmaWxlbmFt
ZSwgc3lzLmV4Y19pbmZvKClbMV0pKQorICAgICAgICByZXR1cm4gTm9uZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZW1vY2svc2NyaXB0cy9nZW5lcmF0b3IvZ21vY2tfZ2VuLnB5IGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2sv
c2NyaXB0cy9nZW5lcmF0b3IvZ21vY2tfZ2VuLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjYzBkMTM1ZDZmMmQ5
YTNlNGFmZmMzZWExYTA5OTQ2OTdiNjUzODgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9j
ay9zY3JpcHRzL2dlbmVyYXRvci9nbW9ja19nZW4ucHkKQEAgLTAsMCArMSwzMSBAQAorIyEvdXNy
L2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDA4IEdvb2dsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisjCisjIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisjIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAorIworIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorIworIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisjIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisjIFdJVEhP
VVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBv
ciBpbXBsaWVkLgorIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisjIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNl
LgorCisiIiJEcml2ZXIgZm9yIHN0YXJ0aW5nIHVwIEdvb2dsZSBNb2NrIGNsYXNzIGdlbmVyYXRv
ci4iIiIKKworX19hdXRob3JfXyA9ICdubm9yd2l0ekBnb29nbGUuY29tIChOZWFsIE5vcndpdHop
JworCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoK
KyAgIyBBZGQgdGhlIGRpcmVjdG9yeSBvZiB0aGlzIHNjcmlwdCB0byB0aGUgcGF0aCBzbyB3ZSBj
YW4gaW1wb3J0IGdtb2NrX2NsYXNzLgorICBzeXMucGF0aC5hcHBlbmQob3MucGF0aC5kaXJuYW1l
KF9fZmlsZV9fKSkKKworICBmcm9tIGNwcCBpbXBvcnQgZ21vY2tfY2xhc3MKKyAgIyBGaXggdGhl
IGRvY3N0cmluZyBpbiBjYXNlIHRoZXkgcmVxdWlyZSB0aGUgdXNhZ2UuCisgIGdtb2NrX2NsYXNz
Ll9fZG9jX18gPSBnbW9ja19jbGFzcy5fX2RvY19fLnJlcGxhY2UoJ2dtb2NrX2NsYXNzLnB5Jywg
X19maWxlX18pCisgIGdtb2NrX2NsYXNzLm1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2sv
c2NyaXB0cy9nbW9jay1jb25maWcuaW4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zY3JpcHRzL2dtb2NrLWNvbmZp
Zy5pbgpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yYmFlZmU5NGQ2ZmI5ZTAxMTUzZGI5YjYwZjFjNzFlM2YyYzBhNzNi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc2NyaXB0cy9nbW9jay1jb25maWcuaW4K
QEAgLTAsMCArMSwzMDMgQEAKKyMhL2Jpbi9zaAorCisjIFRoZXNlIHZhcmlhYmxlcyBhcmUgYXV0
b21hdGljYWxseSBmaWxsZWQgaW4gYnkgdGhlIGNvbmZpZ3VyZSBzY3JpcHQuCituYW1lPSJAUEFD
S0FHRV9UQVJOQU1FQCIKK3ZlcnNpb249IkBQQUNLQUdFX1ZFUlNJT05AIgorCitzaG93X3VzYWdl
KCkKK3sKKyAgZWNobyAiVXNhZ2U6IGdtb2NrLWNvbmZpZyBbT1BUSU9OUy4uLl0iCit9CisKK3No
b3dfaGVscCgpCit7CisgIHNob3dfdXNhZ2UKKyAgY2F0IDw8XEVPRgorCitUaGUgYGdtb2NrLWNv
bmZpZycgc2NyaXB0IHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgbmVjZXNzYXJ5IGNvbXBpbGUgYW5k
IGxpbmtpbmcKK2ZsYWdzIHRvIGNvbm5lY3Qgd2l0aCBHb29nbGUgQysrIE1vY2tpbmcgRnJhbWV3
b3JrLCBib3RoIGluIGEgYnVpbGQgcHJpb3IgdG8KK2luc3RhbGxhdGlvbiwgYW5kIG9uIHRoZSBz
eXN0ZW0gcHJvcGVyIGFmdGVyIGluc3RhbGxhdGlvbi4gVGhlIGluc3RhbGxhdGlvbgorb3ZlcnJp
ZGVzIG1heSBiZSBpc3N1ZWQgaW4gY29tYmluYXRpb24gd2l0aCBhbnkgb3RoZXIgcXVlcmllcywg
YnV0IHdpbGwgb25seQorYWZmZWN0IGluc3RhbGxhdGlvbiBxdWVyaWVzIGlmIGNhbGxlZCBvbiBh
IGJ1aWx0IGJ1dCBub3QgaW5zdGFsbGVkIGdtb2NrLiBUaGUKK2luc3RhbGxhdGlvbiBxdWVyaWVz
IG1heSBub3QgYmUgaXNzdWVkIHdpdGggYW55IG90aGVyIHR5cGVzIG9mIHF1ZXJpZXMsIGFuZAor
b25seSBvbmUgaW5zdGFsbGF0aW9uIHF1ZXJ5IG1heSBiZSBtYWRlIGF0IGEgdGltZS4gVGhlIHZl
cnNpb24gcXVlcmllcyBhbmQKK2NvbXBpbGVyIGZsYWcgcXVlcmllcyBtYXkgYmUgY29tYmluZWQg
YXMgZGVzaXJlZCBidXQgbm90IG1peGVkLiBEaWZmZXJlbnQKK3ZlcnNpb24gcXVlcmllcyBhcmUg
YWx3YXlzIGNvbWJpbmVkIHdpdGggbG9naWNhbCAiYW5kIiBzZW1hbnRpY3MsIGFuZCBvbmx5IHRo
ZQorbGFzdCBvZiBhbnkgcGFydGljdWxhciBxdWVyeSBpcyB1c2VkIHdoaWxlIGFsbCBwcmV2aW91
cyBvbmVzIGlnbm9yZWQuIEFsbAordmVyc2lvbnMgbXVzdCBiZSBzcGVjaWZpZWQgYXMgYSBzZXF1
ZW5jZSBvZiBudW1iZXJzIHNlcGFyYXRlZCBieSBwZXJpb2RzLgorQ29tcGlsZXIgZmxhZyBxdWVy
aWVzIG91dHB1dCB0aGUgdW5pb24gb2YgdGhlIHNldHMgb2YgZmxhZ3Mgd2hlbiBjb21iaW5lZC4K
KworIEV4YW1wbGVzOgorICBnbW9jay1jb25maWcgLS1taW4tdmVyc2lvbj0xLjAgfHwgZWNobyAi
SW5zdWZmaWNpZW50IEdvb2dsZSBNb2NrIHZlcnNpb24uIgorCisgIGcrKyAkKGdtb2NrLWNvbmZp
ZyAtLWNwcGZsYWdzIC0tY3h4ZmxhZ3MpIC1vIGZvby5vIC1jIGZvby5jcHAKKyAgZysrICQoZ21v
Y2stY29uZmlnIC0tbGRmbGFncyAtLWxpYnMpIC1vIGZvbyBmb28ubworCisgICMgV2hlbiB1c2lu
ZyBhIGJ1aWx0IGJ1dCBub3QgaW5zdGFsbGVkIEdvb2dsZSBNb2NrOgorICBnKysgJCguLi8uLi9t
eV9nbW9ja19idWlsZC9zY3JpcHRzL2dtb2NrLWNvbmZpZyAuLi4pIC4uLgorCisgICMgV2hlbiB1
c2luZyBhbiBpbnN0YWxsZWQgR29vZ2xlIE1vY2ssIGJ1dCB3aXRoIGluc3RhbGxhdGlvbiBvdmVy
cmlkZXM6CisgIGV4cG9ydCBHTU9DS19QUkVGSVg9Ii9vcHQiCisgIGcrKyAkKGdtb2NrLWNvbmZp
ZyAtLWxpYmRpcj0iL29wdC9saWI2NCIgLi4uKSAuLi4KKworIEhlbHA6CisgIC0tdXNhZ2UgICAg
ICAgICAgICAgICAgICAgIGJyaWVmIHVzYWdlIGluZm9ybWF0aW9uCisgIC0taGVscCAgICAgICAg
ICAgICAgICAgICAgIGRpc3BsYXkgdGhpcyBoZWxwIG1lc3NhZ2UKKworIEluc3RhbGxhdGlvbiBP
dmVycmlkZXM6CisgIC0tcHJlZml4PTxkaXI+ICAgICAgICAgICAgIG92ZXJyaWRlcyB0aGUgaW5z
dGFsbGF0aW9uIHByZWZpeAorICAtLWV4ZWMtcHJlZml4PTxkaXI+ICAgICAgICBvdmVycmlkZXMg
dGhlIGV4ZWN1dGFibGUgaW5zdGFsbGF0aW9uIHByZWZpeAorICAtLWxpYmRpcj08ZGlyPiAgICAg
ICAgICAgICBvdmVycmlkZXMgdGhlIGxpYnJhcnkgaW5zdGFsbGF0aW9uIHByZWZpeAorICAtLWlu
Y2x1ZGVkaXI9PGRpcj4gICAgICAgICBvdmVycmlkZXMgdGhlIGhlYWRlciBmaWxlIGluc3RhbGxh
dGlvbiBwcmVmaXgKKworIEluc3RhbGxhdGlvbiBRdWVyaWVzOgorICAtLXByZWZpeCAgICAgICAg
ICAgICAgICAgICBpbnN0YWxsYXRpb24gcHJlZml4CisgIC0tZXhlYy1wcmVmaXggICAgICAgICAg
ICAgIGV4ZWN1dGFibGUgaW5zdGFsbGF0aW9uIHByZWZpeAorICAtLWxpYmRpciAgICAgICAgICAg
ICAgICAgICBsaWJyYXJ5IGluc3RhbGxhdGlvbiBkaXJlY3RvcnkKKyAgLS1pbmNsdWRlZGlyICAg
ICAgICAgICAgICAgaGVhZGVyIGZpbGUgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeQorICAtLXZlcnNp
b24gICAgICAgICAgICAgICAgICB0aGUgdmVyc2lvbiBvZiB0aGUgR29vZ2xlIE1vY2sgaW5zdGFs
bGF0aW9uCisKKyBWZXJzaW9uIFF1ZXJpZXM6CisgIC0tbWluLXZlcnNpb249VkVSU0lPTiAgICAg
IHJldHVybiAwIGlmIHRoZSB2ZXJzaW9uIGlzIGF0IGxlYXN0IFZFUlNJT04KKyAgLS1leGFjdC12
ZXJzaW9uPVZFUlNJT04gICAgcmV0dXJuIDAgaWYgdGhlIHZlcnNpb24gaXMgZXhhY3RseSBWRVJT
SU9OCisgIC0tbWF4LXZlcnNpb249VkVSU0lPTiAgICAgIHJldHVybiAwIGlmIHRoZSB2ZXJzaW9u
IGlzIGF0IG1vc3QgVkVSU0lPTgorCisgQ29tcGlsYXRpb24gRmxhZyBRdWVyaWVzOgorICAtLWNw
cGZsYWdzICAgICAgICAgICAgICAgICBjb21waWxlIGZsYWdzIHNwZWNpZmljIHRvIHRoZSBDLWxp
a2UgcHJlcHJvY2Vzc29ycworICAtLWN4eGZsYWdzICAgICAgICAgICAgICAgICBjb21waWxlIGZs
YWdzIGFwcHJvcHJpYXRlIGZvciBDKysgcHJvZ3JhbXMKKyAgLS1sZGZsYWdzICAgICAgICAgICAg
ICAgICAgbGlua2VyIGZsYWdzCisgIC0tbGlicyAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmll
cyBmb3IgbGlua2luZworCitFT0YKK30KKworIyBUaGlzIGZ1bmN0aW9uIGJvdW5kcyBvdXIgdmVy
c2lvbiB3aXRoIGEgbWluIGFuZCBhIG1heC4gSXQgdXNlcyBzb21lIGNsZXZlcgorIyBQT1NJWC1j
b21wbGlhbnQgdmFyaWFibGUgZXhwYW5zaW9uIHRvIHBvcnRhYmx5IGRvIGFsbCB0aGUgd29yayBp
biB0aGUgc2hlbGwKKyMgYW5kIGF2b2lkIGFueSBkZXBlbmRlbmN5IG9uIGEgcGFydGljdWxhciAi
c2VkIiBvciAiYXdrIiBpbXBsZW1lbnRhdGlvbi4KKyMgTm90YWJsZSBpcyB0aGF0IGl0IHdpbGwg
b25seSBldmVyIGNvbXBhcmUgdGhlIGZpcnN0IDMgY29tcG9uZW50cyBvZiB2ZXJzaW9ucy4KKyMg
RnVydGhlciBjb21wb25lbnRzIHdpbGwgYmUgY2xlYW5seSBzdHJpcHBlZCBvZmYuIEFsbCB2ZXJz
aW9ucyBtdXN0IGJlCisjIHVuYWRvcm5lZCwgc28gInYxLjAiIHdpbGwgKm5vdCogd29yay4gVGhl
IG1pbmltdW0gdmVyc2lvbiBtdXN0IGJlIGluICQxLCBhbmQKKyMgdGhlIG1heCBpbiAkMi4gVE9E
TyhjaGFuZGxlcmNAZ29vZ2xlLmNvbSk6IElmIHRoaXMgZXZlciBicmVha3MsIHdlIHNob3VsZAor
IyBpbnZlc3RpZ2F0ZSBleHBhbmRpbmcgdGhpcyB2aWEgYXV0b200dGUgZnJvbSBBU19WRVJTSU9O
X0NPTVBBUkUgcmF0aGVyIHRoYW4KKyMgY29udGludWluZyB0byBtYWludGFpbiBvdXIgb3duIHNo
ZWxsIHZlcnNpb24uCitjaGVja192ZXJzaW9ucygpCit7CisgIG1ham9yX3ZlcnNpb249JHt2ZXJz
aW9uJSUuKn0KKyAgbWlub3JfdmVyc2lvbj0iMCIKKyAgcG9pbnRfdmVyc2lvbj0iMCIKKyAgaWYg
dGVzdCAiJHt2ZXJzaW9uIyoufSIgIT0gIiR7dmVyc2lvbn0iOyB0aGVuCisgICAgbWlub3JfdmVy
c2lvbj0ke3ZlcnNpb24jKi59CisgICAgbWlub3JfdmVyc2lvbj0ke21pbm9yX3ZlcnNpb24lJS4q
fQorICBmaQorICBpZiB0ZXN0ICIke3ZlcnNpb24jKi4qLn0iICE9ICIke3ZlcnNpb259IjsgdGhl
bgorICAgIHBvaW50X3ZlcnNpb249JHt2ZXJzaW9uIyouKi59CisgICAgcG9pbnRfdmVyc2lvbj0k
e3BvaW50X3ZlcnNpb24lJS4qfQorICBmaQorCisgIG1pbl92ZXJzaW9uPSIkMSIKKyAgbWluX21h
am9yX3ZlcnNpb249JHttaW5fdmVyc2lvbiUlLip9CisgIG1pbl9taW5vcl92ZXJzaW9uPSIwIgor
ICBtaW5fcG9pbnRfdmVyc2lvbj0iMCIKKyAgaWYgdGVzdCAiJHttaW5fdmVyc2lvbiMqLn0iICE9
ICIke21pbl92ZXJzaW9ufSI7IHRoZW4KKyAgICBtaW5fbWlub3JfdmVyc2lvbj0ke21pbl92ZXJz
aW9uIyoufQorICAgIG1pbl9taW5vcl92ZXJzaW9uPSR7bWluX21pbm9yX3ZlcnNpb24lJS4qfQor
ICBmaQorICBpZiB0ZXN0ICIke21pbl92ZXJzaW9uIyouKi59IiAhPSAiJHttaW5fdmVyc2lvbn0i
OyB0aGVuCisgICAgbWluX3BvaW50X3ZlcnNpb249JHttaW5fdmVyc2lvbiMqLioufQorICAgIG1p
bl9wb2ludF92ZXJzaW9uPSR7bWluX3BvaW50X3ZlcnNpb24lJS4qfQorICBmaQorCisgIG1heF92
ZXJzaW9uPSIkMiIKKyAgbWF4X21ham9yX3ZlcnNpb249JHttYXhfdmVyc2lvbiUlLip9CisgIG1h
eF9taW5vcl92ZXJzaW9uPSIwIgorICBtYXhfcG9pbnRfdmVyc2lvbj0iMCIKKyAgaWYgdGVzdCAi
JHttYXhfdmVyc2lvbiMqLn0iICE9ICIke21heF92ZXJzaW9ufSI7IHRoZW4KKyAgICBtYXhfbWlu
b3JfdmVyc2lvbj0ke21heF92ZXJzaW9uIyoufQorICAgIG1heF9taW5vcl92ZXJzaW9uPSR7bWF4
X21pbm9yX3ZlcnNpb24lJS4qfQorICBmaQorICBpZiB0ZXN0ICIke21heF92ZXJzaW9uIyouKi59
IiAhPSAiJHttYXhfdmVyc2lvbn0iOyB0aGVuCisgICAgbWF4X3BvaW50X3ZlcnNpb249JHttYXhf
dmVyc2lvbiMqLioufQorICAgIG1heF9wb2ludF92ZXJzaW9uPSR7bWF4X3BvaW50X3ZlcnNpb24l
JS4qfQorICBmaQorCisgIHRlc3QgJCgoJG1ham9yX3ZlcnNpb24pKSAtbHQgJCgoJG1pbl9tYWpv
cl92ZXJzaW9uKSkgJiYgZXhpdCAxCisgIGlmIHRlc3QgJCgoJG1ham9yX3ZlcnNpb24pKSAtZXEg
JCgoJG1pbl9tYWpvcl92ZXJzaW9uKSk7IHRoZW4KKyAgICB0ZXN0ICQoKCRtaW5vcl92ZXJzaW9u
KSkgLWx0ICQoKCRtaW5fbWlub3JfdmVyc2lvbikpICYmIGV4aXQgMQorICAgIGlmIHRlc3QgJCgo
JG1pbm9yX3ZlcnNpb24pKSAtZXEgJCgoJG1pbl9taW5vcl92ZXJzaW9uKSk7IHRoZW4KKyAgICAg
IHRlc3QgJCgoJHBvaW50X3ZlcnNpb24pKSAtbHQgJCgoJG1pbl9wb2ludF92ZXJzaW9uKSkgJiYg
ZXhpdCAxCisgICAgZmkKKyAgZmkKKworICB0ZXN0ICQoKCRtYWpvcl92ZXJzaW9uKSkgLWd0ICQo
KCRtYXhfbWFqb3JfdmVyc2lvbikpICYmIGV4aXQgMQorICBpZiB0ZXN0ICQoKCRtYWpvcl92ZXJz
aW9uKSkgLWVxICQoKCRtYXhfbWFqb3JfdmVyc2lvbikpOyB0aGVuCisgICAgdGVzdCAkKCgkbWlu
b3JfdmVyc2lvbikpIC1ndCAkKCgkbWF4X21pbm9yX3ZlcnNpb24pKSAmJiBleGl0IDEKKyAgICBp
ZiB0ZXN0ICQoKCRtaW5vcl92ZXJzaW9uKSkgLWVxICQoKCRtYXhfbWlub3JfdmVyc2lvbikpOyB0
aGVuCisgICAgICB0ZXN0ICQoKCRwb2ludF92ZXJzaW9uKSkgLWd0ICQoKCRtYXhfcG9pbnRfdmVy
c2lvbikpICYmIGV4aXQgMQorICAgIGZpCisgIGZpCisKKyAgZXhpdCAwCit9CisKKyMgU2hvdyB0
aGUgdXNhZ2UgbGluZSB3aGVuIG5vIGFyZ3VtZW50cyBhcmUgc3BlY2lmaWVkLgoraWYgdGVzdCAk
IyAtZXEgMDsgdGhlbgorICBzaG93X3VzYWdlCisgIGV4aXQgMQorZmkKKword2hpbGUgdGVzdCAk
IyAtZ3QgMDsgZG8KKyAgY2FzZSAkMSBpbgorICAgIC0tdXNhZ2UpICAgICAgICAgIHNob3dfdXNh
Z2U7ICAgICAgICAgZXhpdCAwOzsKKyAgICAtLWhlbHApICAgICAgICAgICBzaG93X2hlbHA7ICAg
ICAgICAgIGV4aXQgMDs7CisKKyAgICAjIEluc3RhbGxhdGlvbiBvdmVycmlkZXMKKyAgICAtLXBy
ZWZpeD0qKSAgICAgICBHTU9DS19QUkVGSVg9JHsxIy0tcHJlZml4PX07OworICAgIC0tZXhlYy1w
cmVmaXg9KikgIEdNT0NLX0VYRUNfUFJFRklYPSR7MSMtLWV4ZWMtcHJlZml4PX07OworICAgIC0t
bGliZGlyPSopICAgICAgIEdNT0NLX0xJQkRJUj0kezEjLS1saWJkaXI9fTs7CisgICAgLS1pbmNs
dWRlZGlyPSopICAgR01PQ0tfSU5DTFVERURJUj0kezEjLS1pbmNsdWRlZGlyPX07OworCisgICAg
IyBJbnN0YWxsYXRpb24gcXVlcmllcworICAgIC0tcHJlZml4fC0tZXhlYy1wcmVmaXh8LS1saWJk
aXJ8LS1pbmNsdWRlZGlyfC0tdmVyc2lvbikKKyAgICAgIGlmIHRlc3QgLW4gIiR7ZG9fcXVlcnl9
IjsgdGhlbgorICAgICAgICBzaG93X3VzYWdlCisgICAgICAgIGV4aXQgMQorICAgICAgZmkKKyAg
ICAgIGRvX3F1ZXJ5PSR7MSMtLX0KKyAgICAgIDs7CisKKyAgICAjIFZlcnNpb24gY2hlY2tpbmcK
KyAgICAtLW1pbi12ZXJzaW9uPSopCisgICAgICBkb19jaGVja192ZXJzaW9ucz15ZXMKKyAgICAg
IG1pbl92ZXJzaW9uPSR7MSMtLW1pbi12ZXJzaW9uPX0KKyAgICAgIDs7CisgICAgLS1tYXgtdmVy
c2lvbj0qKQorICAgICAgZG9fY2hlY2tfdmVyc2lvbnM9eWVzCisgICAgICBtYXhfdmVyc2lvbj0k
ezEjLS1tYXgtdmVyc2lvbj19CisgICAgICA7OworICAgIC0tZXhhY3QtdmVyc2lvbj0qKQorICAg
ICAgZG9fY2hlY2tfdmVyc2lvbnM9eWVzCisgICAgICBleGFjdF92ZXJzaW9uPSR7MSMtLWV4YWN0
LXZlcnNpb249fQorICAgICAgOzsKKworICAgICMgQ29tcGlsZXIgZmxhZyBvdXRwdXQKKyAgICAt
LWNwcGZsYWdzKSAgICAgICBlY2hvX2NwcGZsYWdzPXllczs7CisgICAgLS1jeHhmbGFncykgICAg
ICAgZWNob19jeHhmbGFncz15ZXM7OworICAgIC0tbGRmbGFncykgICAgICAgIGVjaG9fbGRmbGFn
cz15ZXM7OworICAgIC0tbGlicykgICAgICAgICAgIGVjaG9fbGlicz15ZXM7OworCisgICAgIyBF
dmVyeXRoaW5nIGVsc2UgaXMgYW4gZXJyb3IKKyAgICAqKSAgICAgICAgICAgICAgICBzaG93X3Vz
YWdlOyAgICAgICAgIGV4aXQgMTs7CisgIGVzYWMKKyAgc2hpZnQKK2RvbmUKKworIyBUaGVzZSBo
YXZlIGRlZmF1bHRzIGZpbGxlZCBpbiBieSB0aGUgY29uZmlndXJlIHNjcmlwdCBidXQgY2FuIGFs
c28gYmUKKyMgb3ZlcnJpZGRlbiBieSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgb3IgY29tbWFuZCBs
aW5lIHBhcmFtZXRlcnMuCitwcmVmaXg9IiR7R01PQ0tfUFJFRklYOi1AcHJlZml4QH0iCitleGVj
X3ByZWZpeD0iJHtHTU9DS19FWEVDX1BSRUZJWDotQGV4ZWNfcHJlZml4QH0iCitsaWJkaXI9IiR7
R01PQ0tfTElCRElSOi1AbGliZGlyQH0iCitpbmNsdWRlZGlyPSIke0dNT0NLX0lOQ0xVREVESVI6
LUBpbmNsdWRlZGlyQH0iCisKKyMgV2UgdHJ5IGFuZCBkZXRlY3QgaWYgb3VyIGJpbmFyeSBpcyBu
b3QgbG9jYXRlZCBhdCBpdHMgaW5zdGFsbGVkIGxvY2F0aW9uLiBJZgorIyBpdCdzIG5vdCwgd2Ug
cHJvdmlkZSB2YXJpYWJsZXMgcG9pbnRpbmcgdG8gdGhlIHNvdXJjZSBhbmQgYnVpbGQgdHJlZSBy
YXRoZXIKKyMgdGhhbiB0byB0aGUgaW5zdGFsbCB0cmVlLiBXZSBhbHNvIGxvY2F0ZSBHb29nbGUg
VGVzdCB1c2luZyB0aGUgY29uZmlndXJlZAorIyBndGVzdC1jb25maWcgc2NyaXB0IHJhdGhlciB0
aGFuIHNlYXJjaGluZyB0aGUgUEFUSCBhbmQgb3VyIGJpbmRpciBmb3Igb25lLgorIyBUaGlzIGFs
bG93cyBidWlsZGluZyBhZ2FpbnN0IGEganVzdC1idWlsdCBnbW9jayByYXRoZXIgdGhhbiBhbiBp
bnN0YWxsZWQKKyMgZ21vY2suCitiaW5kaXI9IkBiaW5kaXJAIgordGhpc19yZWxhdGl2ZV9iaW5k
aXI9YGRpcm5hbWUgJDBgCit0aGlzX2JpbmRpcj1gY2QgJHt0aGlzX3JlbGF0aXZlX2JpbmRpcn07
IHB3ZCAtUGAKK2lmIHRlc3QgIiR7dGhpc19iaW5kaXJ9IiA9ICIke3RoaXNfYmluZGlyJSR7Ymlu
ZGlyfX0iOyB0aGVuCisgICMgVGhlIHBhdGggdG8gdGhlIHNjcmlwdCBkb2Vzbid0IGVuZCBpbiB0
aGUgYmluZGlyIHNlcXVlbmNlIGZyb20gQXV0b2NvbmYsCisgICMgYXNzdW1lIHRoYXQgd2UgYXJl
IGluIGEgYnVpbGQgdHJlZS4KKyAgYnVpbGRfZGlyPWBkaXJuYW1lICR7dGhpc19iaW5kaXJ9YAor
ICBzcmNfZGlyPWBjZCAke3RoaXNfYmluZGlyfS9AdG9wX3NyY2RpckA7IHB3ZCAtUGAKKworICAj
IFRPRE8oY2hhbmRsZXJjQGdvb2dsZS5jb20pOiBUaGlzIGlzIGEgZGFuZ2Vyb3VzIGRlcGVuZGVu
Y3kgb24gbGlidG9vbCwgd2UKKyAgIyBzaG91bGQgd29yayB0byByZW1vdmUgaXQsIGFuZC9vciBy
ZW1vdmUgbGlidG9vbCBhbHRvZ2V0aGVyLCByZXBsYWNpbmcgaXQKKyAgIyB3aXRoIGRpcmVjdCBy
ZWZlcmVuY2VzIHRvIHRoZSBsaWJyYXJ5IGFuZCBhIGxpbmsgcGF0aC4KKyAgZ21vY2tfbGlicz0i
JHtidWlsZF9kaXJ9L2xpYi9saWJnbW9jay5sYSIKKyAgZ21vY2tfbGRmbGFncz0iIgorCisgICMg
V2UgcHJvdmlkZSBob29rcyB0byBpbmNsdWRlIGZyb20gZWl0aGVyIHRoZSBzb3VyY2Ugb3IgYnVp
bGQgZGlyLCB3aGVyZSB0aGUKKyAgIyBidWlsZCBkaXIgaXMgYWx3YXlzIHByZWZlcnJlZC4gVGhp
cyB3aWxsIHBvdGVudGlhbGx5IGFsbG93IHVzIHRvIHdyaXRlCisgICMgYnVpbGQgcnVsZXMgZm9y
IGdlbmVyYXRlZCBoZWFkZXJzIGFuZCBoYXZlIHRoZW0gYXV0b21hdGljYWxseSBiZSBwcmVmZXJy
ZWQKKyAgIyBvdmVyIHByb3ZpZGVkIHZlcnNpb25zLgorICBnbW9ja19jcHBmbGFncz0iLUkke2J1
aWxkX2Rpcn0vaW5jbHVkZSAtSSR7c3JjX2Rpcn0vaW5jbHVkZSIKKyAgZ21vY2tfY3h4ZmxhZ3M9
IiIKKworICAjIERpcmVjdGx5IGludm9rZSB0aGUgZ3Rlc3QtY29uZmlnIHNjcmlwdCB1c2VkIGR1
cmluZyB0aGUgYnVpbGQgcHJvY2Vzcy4KKyAgZ3Rlc3RfY29uZmlnPSJAR1RFU1RfQ09ORklHQCIK
K2Vsc2UKKyAgIyBXZSdyZSB1c2luZyBhbiBpbnN0YWxsZWQgZ21vY2ssIGFsdGhvdWdoIGl0IG1h
eSBiZSBzdGFnZWQgdW5kZXIgc29tZQorICAjIHByZWZpeC4gQXNzdW1lIChhcyBvdXIgb3duIGxp
YnJhcmllcyBkbykgdGhhdCB3ZSBjYW4gcmVzb2x2ZSB0aGUgcHJlZml4LAorICAjIGFuZCBhcmUg
cHJlc2VudCBpbiB0aGUgZHluYW1pYyBsaW5rIHBhdGhzLgorICBnbW9ja19sZGZsYWdzPSItTCR7
bGliZGlyfSIKKyAgZ21vY2tfbGlicz0iLWwke25hbWV9IgorICBnbW9ja19jcHBmbGFncz0iLUkk
e2luY2x1ZGVkaXJ9IgorICBnbW9ja19jeHhmbGFncz0iIgorCisgICMgV2UgYWxzbyBwcmVmZXIg
YW55IGd0ZXN0LWNvbmZpZyBzY3JpcHQgaW5zdGFsbGVkIGluIG91ciBwcmVmaXguIExhY2tpbmcK
KyAgIyBvbmUsIHdlIGxvb2sgaW4gdGhlIFBBVEggZm9yIG9uZS4KKyAgZ3Rlc3RfY29uZmlnPSIk
e2JpbmRpcn0vZ3Rlc3QtY29uZmlnIgorICBpZiB0ZXN0ICEgLXggIiR7Z3Rlc3RfY29uZmlnfSI7
IHRoZW4KKyAgICBndGVzdF9jb25maWc9YHdoaWNoIGd0ZXN0LWNvbmZpZ2AKKyAgZmkKK2ZpCisK
KyMgRW5zdXJlIHRoYXQgd2UgaGF2ZSBsb2NhdGVkIGEgR29vZ2xlIFRlc3QgdG8gbGluayBhZ2Fp
bnN0LgoraWYgISB0ZXN0IC14ICIke2d0ZXN0X2NvbmZpZ30iOyB0aGVuCisgIGVjaG8gIlVuYWJs
ZSB0byBsb2NhdGUgR29vZ2xlIFRlc3QsIGNoZWNrIHlvdXIgR29vZ2xlIE1vY2sgY29uZmlndXJh
dGlvbiIgXAorICAgICAgICJhbmQgaW5zdGFsbGF0aW9uIiA+JjIKKyAgZXhpdCAxCitlbGlmICEg
IiR7Z3Rlc3RfY29uZmlnfSIgIi0tZXhhY3QtdmVyc2lvbj1AR1RFU1RfVkVSU0lPTkAiOyB0aGVu
CisgIGVjaG8gIlRoZSBHb29nbGUgVGVzdCBmb3VuZCBpcyBub3QgdGhlIHNhbWUgdmVyc2lvbiBh
cyBHb29nbGUgTW9jayB3YXMgIiBcCisgICAgICAgImJ1aWx0IGFnYWluc3QiID4mMgorICBleGl0
IDEKK2ZpCisKKyMgQWRkIHRoZSBuZWNlc3NhcnkgR29vZ2xlIFRlc3QgYml0cyBpbnRvIHRoZSB2
YXJpb3VzIGZsYWcgdmFyaWFibGVzCitnbW9ja19jcHBmbGFncz0iJHtnbW9ja19jcHBmbGFnc30g
YCR7Z3Rlc3RfY29uZmlnfSAtLWNwcGZsYWdzYCIKK2dtb2NrX2N4eGZsYWdzPSIke2dtb2NrX2N4
eGZsYWdzfSBgJHtndGVzdF9jb25maWd9IC0tY3h4ZmxhZ3NgIgorZ21vY2tfbGRmbGFncz0iJHtn
bW9ja19sZGZsYWdzfSBgJHtndGVzdF9jb25maWd9IC0tbGRmbGFnc2AiCitnbW9ja19saWJzPSIk
e2dtb2NrX2xpYnN9IGAke2d0ZXN0X2NvbmZpZ30gLS1saWJzYCIKKworIyBEbyBhbiBpbnN0YWxs
YXRpb24gcXVlcnkgaWYgcmVxdWVzdGVkLgoraWYgdGVzdCAtbiAiJGRvX3F1ZXJ5IjsgdGhlbgor
ICBjYXNlICRkb19xdWVyeSBpbgorICAgIHByZWZpeCkgICAgICAgICAgIGVjaG8gJHByZWZpeDsg
ICAgICAgZXhpdCAwOzsKKyAgICBleGVjLXByZWZpeCkgICAgICBlY2hvICRleGVjX3ByZWZpeDsg
IGV4aXQgMDs7CisgICAgbGliZGlyKSAgICAgICAgICAgZWNobyAkbGliZGlyOyAgICAgICBleGl0
IDA7OworICAgIGluY2x1ZGVkaXIpICAgICAgIGVjaG8gJGluY2x1ZGVkaXI7ICAgZXhpdCAwOzsK
KyAgICB2ZXJzaW9uKSAgICAgICAgICBlY2hvICR2ZXJzaW9uOyAgICAgIGV4aXQgMDs7CisgICAg
KikgICAgICAgICAgICAgICAgc2hvd191c2FnZTsgICAgICAgICBleGl0IDE7OworICBlc2FjCitm
aQorCisjIERvIGEgdmVyc2lvbiBjaGVjayBpZiByZXF1ZXN0ZWQuCitpZiB0ZXN0ICIkZG9fY2hl
Y2tfdmVyc2lvbnMiID0gInllcyI7IHRoZW4KKyAgIyBNYWtlIHN1cmUgd2UgZGlkbid0IHJlY2Vp
dmUgYSBiYWQgY29tYmluYXRpb24gb2YgcGFyYW1ldGVycy4KKyAgdGVzdCAiJGVjaG9fY3BwZmxh
Z3MiID0gInllcyIgJiYgc2hvd191c2FnZSAmJiBleGl0IDEKKyAgdGVzdCAiJGVjaG9fY3h4Zmxh
Z3MiID0gInllcyIgJiYgc2hvd191c2FnZSAmJiBleGl0IDEKKyAgdGVzdCAiJGVjaG9fbGRmbGFn
cyIgPSAieWVzIiAgJiYgc2hvd191c2FnZSAmJiBleGl0IDEKKyAgdGVzdCAiJGVjaG9fbGlicyIg
PSAieWVzIiAgICAgJiYgc2hvd191c2FnZSAmJiBleGl0IDEKKworICBpZiB0ZXN0ICIkZXhhY3Rf
dmVyc2lvbiIgIT0gIiI7IHRoZW4KKyAgICBjaGVja192ZXJzaW9ucyAkZXhhY3RfdmVyc2lvbiAk
ZXhhY3RfdmVyc2lvbgorICAgICMgdW5yZWFjaGFibGUKKyAgZWxzZQorICAgIGNoZWNrX3ZlcnNp
b25zICR7bWluX3ZlcnNpb246LTAuMC4wfSAke21heF92ZXJzaW9uOi05OTk5Ljk5OTkuOTk5OX0K
KyAgICAjIHVucmVhY2hhYmxlCisgIGZpCitmaQorCisjIERvIHRoZSBvdXRwdXQgaW4gdGhlIGNv
cnJlY3Qgb3JkZXIgc28gdGhhdCB0aGVzZSBjYW4gYmUgdXNlZCBpbi1saW5lIG9mCisjIGEgY29t
cGlsZXIgaW52b2NhdGlvbi4KK291dHB1dD0iIgordGVzdCAiJGVjaG9fY3BwZmxhZ3MiID0gInll
cyIgJiYgb3V0cHV0PSIkb3V0cHV0ICRnbW9ja19jcHBmbGFncyIKK3Rlc3QgIiRlY2hvX2N4eGZs
YWdzIiA9ICJ5ZXMiICYmIG91dHB1dD0iJG91dHB1dCAkZ21vY2tfY3h4ZmxhZ3MiCit0ZXN0ICIk
ZWNob19sZGZsYWdzIiA9ICJ5ZXMiICAmJiBvdXRwdXQ9IiRvdXRwdXQgJGdtb2NrX2xkZmxhZ3Mi
Cit0ZXN0ICIkZWNob19saWJzIiA9ICJ5ZXMiICAgICAmJiBvdXRwdXQ9IiRvdXRwdXQgJGdtb2Nr
X2xpYnMiCitlY2hvICRvdXRwdXQKKworZXhpdCAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9z
Y3JpcHRzL2dtb2NrX2RvY3Rvci5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NjcmlwdHMvZ21vY2tfZG9jdG9y
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjc0OTkyYmM3NDQ4MTA3NDVjNzJkZGQ4YmMyMGQ5ODE1YWYzYzJhYmQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zY3JpcHRzL2dtb2NrX2RvY3Rvci5weQpA
QCAtMCwwICsxLDY0MCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAy
MDA4LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisj
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
IyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworIiIiQ29udmVydHMgY29tcGlsZXIncyBlcnJvcnMgaW4gY29kZSB1c2luZyBHb29nbGUg
TW9jayB0byBwbGFpbiBFbmdsaXNoLiIiIgorCitfX2F1dGhvcl9fID0gJ3dhbkBnb29nbGUuY29t
IChaaGFueW9uZyBXYW4pJworCitpbXBvcnQgcmUKK2ltcG9ydCBzeXMKKworX1ZFUlNJT04gPSAn
MS4wLjMnCisKK19FTUFJTCA9ICdnb29nbGVtb2NrQGdvb2dsZWdyb3Vwcy5jb20nCisKK19DT01N
T05fR01PQ0tfU1lNQk9MUyA9IFsKKyAgICAjIE1hdGNoZXJzCisgICAgJ18nLAorICAgICdBJywK
KyAgICAnQWRkcmVzc1NhdGlzZmllcycsCisgICAgJ0FsbE9mJywKKyAgICAnQW4nLAorICAgICdB
bnlPZicsCisgICAgJ0NvbnRhaW5lckVxJywKKyAgICAnQ29udGFpbnMnLAorICAgICdDb250YWlu
c1JlZ2V4JywKKyAgICAnRG91YmxlRXEnLAorICAgICdFbGVtZW50c0FyZScsCisgICAgJ0VsZW1l
bnRzQXJlQXJyYXknLAorICAgICdFbmRzV2l0aCcsCisgICAgJ0VxJywKKyAgICAnRmllbGQnLAor
ICAgICdGbG9hdEVxJywKKyAgICAnR2UnLAorICAgICdHdCcsCisgICAgJ0hhc1N1YnN0cicsCisg
ICAgJ0lzSW5pdGlhbGl6ZWRQcm90bycsCisgICAgJ0xlJywKKyAgICAnTHQnLAorICAgICdNYXRj
aGVyQ2FzdCcsCisgICAgJ01hdGNoZXMnLAorICAgICdNYXRjaGVzUmVnZXgnLAorICAgICdOYW5T
ZW5zaXRpdmVEb3VibGVFcScsCisgICAgJ05hblNlbnNpdGl2ZUZsb2F0RXEnLAorICAgICdOZScs
CisgICAgJ05vdCcsCisgICAgJ05vdE51bGwnLAorICAgICdQb2ludGVlJywKKyAgICAnUHJvcGVy
dHknLAorICAgICdSZWYnLAorICAgICdSZXN1bHRPZicsCisgICAgJ1NhZmVNYXRjaGVyQ2FzdCcs
CisgICAgJ1N0YXJ0c1dpdGgnLAorICAgICdTdHJDYXNlRXEnLAorICAgICdTdHJDYXNlTmUnLAor
ICAgICdTdHJFcScsCisgICAgJ1N0ck5lJywKKyAgICAnVHJ1bHknLAorICAgICdUeXBlZEVxJywK
KyAgICAnVmFsdWUnLAorCisgICAgIyBBY3Rpb25zCisgICAgJ0Fzc2lnbicsCisgICAgJ0J5UmVm
JywKKyAgICAnRGVsZXRlQXJnJywKKyAgICAnRG9BbGwnLAorICAgICdEb0RlZmF1bHQnLAorICAg
ICdJZ25vcmVSZXN1bHQnLAorICAgICdJbnZva2UnLAorICAgICdJbnZva2VBcmd1bWVudCcsCisg
ICAgJ0ludm9rZVdpdGhvdXRBcmdzJywKKyAgICAnUmV0dXJuJywKKyAgICAnUmV0dXJuTmV3JywK
KyAgICAnUmV0dXJuTnVsbCcsCisgICAgJ1JldHVyblJlZicsCisgICAgJ1NhdmVBcmcnLAorICAg
ICdTZXRBcmdSZWZlcmVlJywKKyAgICAnU2V0QXJnUG9pbnRlZScsCisgICAgJ1NldEFyZ3VtZW50
UG9pbnRlZScsCisgICAgJ1NldEFycmF5QXJndW1lbnQnLAorICAgICdTZXRFcnJub0FuZFJldHVy
bicsCisgICAgJ1Rocm93JywKKyAgICAnV2l0aEFyZycsCisgICAgJ1dpdGhBcmdzJywKKyAgICAn
V2l0aG91dEFyZ3MnLAorCisgICAgIyBDYXJkaW5hbGl0aWVzCisgICAgJ0FueU51bWJlcicsCisg
ICAgJ0F0TGVhc3QnLAorICAgICdBdE1vc3QnLAorICAgICdCZXR3ZWVuJywKKyAgICAnRXhhY3Rs
eScsCisKKyAgICAjIFNlcXVlbmNlcworICAgICdJblNlcXVlbmNlJywKKyAgICAnU2VxdWVuY2Un
LAorCisgICAgIyBNaXNjCisgICAgJ0RlZmF1bHRWYWx1ZScsCisgICAgJ01vY2snLAorICAgIF0K
KworIyBSZWdleCBmb3IgbWF0Y2hpbmcgc291cmNlIGZpbGUgcGF0aCBhbmQgbGluZSBudW1iZXIg
aW4gdGhlIGNvbXBpbGVyJ3MgZXJyb3JzLgorX0dDQ19GSUxFX0xJTkVfUkUgPSByJyg/UDxmaWxl
Pi4qKTooP1A8bGluZT5cZCspOihcZCs6KT9ccysnCitfQ0xBTkdfRklMRV9MSU5FX1JFID0gcico
P1A8ZmlsZT4uKik6KD9QPGxpbmU+XGQrKTooP1A8Y29sdW1uPlxkKyk6XHMrJworX0NMQU5HX05P
Tl9HTU9DS19GSUxFX0xJTkVfUkUgPSAoCisgICAgcicoP1A8ZmlsZT4uKlsvXFxeXSg/IWdtb2Nr
LSlbXi9cXF0rKTooP1A8bGluZT5cZCspOig/UDxjb2x1bW4+XGQrKTpccysnKQorCisKK2RlZiBf
RmluZEFsbE1hdGNoZXMocmVnZXgsIHMpOgorICAiIiJHZW5lcmF0ZXMgYWxsIG1hdGNoZXMgb2Yg
cmVnZXggaW4gc3RyaW5nIHMuIiIiCisKKyAgciA9IHJlLmNvbXBpbGUocmVnZXgpCisgIHJldHVy
biByLmZpbmRpdGVyKHMpCisKKworZGVmIF9HZW5lcmljRGlhZ25vc2VyKHNob3J0X25hbWUsIGxv
bmdfbmFtZSwgZGlhZ25vc2VzLCBtc2cpOgorICAiIiJEaWFnbm9zZXMgdGhlIGdpdmVuIGRpc2Vh
c2UgYnkgcGF0dGVybiBtYXRjaGluZy4KKworICBDYW4gcHJvdmlkZSBkaWZmZXJlbnQgZGlhZ25v
c2VzIGZvciBkaWZmZXJlbnQgcGF0dGVybnMuCisKKyAgQXJnczoKKyAgICBzaG9ydF9uYW1lOiBT
aG9ydCBuYW1lIG9mIHRoZSBkaXNlYXNlLgorICAgIGxvbmdfbmFtZTogIExvbmcgbmFtZSBvZiB0
aGUgZGlzZWFzZS4KKyAgICBkaWFnbm9zZXM6ICBBIGxpc3Qgb2YgcGFpcnMgKHJlZ2V4LCBwYXR0
ZXJuIGZvciBmb3JtYXR0aW5nIHRoZSBkaWFnbm9zaXMKKyAgICAgICAgICAgICAgICBmb3IgbWF0
Y2hpbmcgcmVnZXgpLgorICAgIG1zZzogICAgICAgIENvbXBpbGVyJ3MgZXJyb3IgbWVzc2FnZXMu
CisgIFlpZWxkczoKKyAgICBUdXBsZXMgb2YgdGhlIGZvcm0KKyAgICAgIChzaG9ydCBuYW1lIG9m
IGRpc2Vhc2UsIGxvbmcgbmFtZSBvZiBkaXNlYXNlLCBkaWFnbm9zaXMpLgorICAiIiIKKyAgZm9y
IHJlZ2V4LCBkaWFnbm9zaXMgaW4gZGlhZ25vc2VzOgorICAgIGlmIHJlLnNlYXJjaChyZWdleCwg
bXNnKToKKyAgICAgIGRpYWdub3NpcyA9ICclKGZpbGUpczolKGxpbmUpczonICsgZGlhZ25vc2lz
CisgICAgICBmb3IgbSBpbiBfRmluZEFsbE1hdGNoZXMocmVnZXgsIG1zZyk6CisgICAgICAgIHlp
ZWxkIChzaG9ydF9uYW1lLCBsb25nX25hbWUsIGRpYWdub3NpcyAlIG0uZ3JvdXBkaWN0KCkpCisK
KworZGVmIF9OZWVkVG9SZXR1cm5SZWZlcmVuY2VEaWFnbm9zZXIobXNnKToKKyAgIiIiRGlhZ25v
c2VzIHRoZSBOUlIgZGlzZWFzZSwgZ2l2ZW4gdGhlIGVycm9yIG1lc3NhZ2VzIGJ5IHRoZSBjb21w
aWxlci4iIiIKKworICBnY2NfcmVnZXggPSAocidJbiBtZW1iZXIgZnVuY3Rpb24gXCd0ZXN0aW5n
OjppbnRlcm5hbDo6UmV0dXJuQWN0aW9uPFI+LipcbicKKyAgICAgICAgICAgICAgICsgX0dDQ19G
SUxFX0xJTkVfUkUgKyByJ2luc3RhbnRpYXRlZCBmcm9tIGhlcmVcbicKKyAgICAgICAgICAgICAg
IHInLipnbW9jay1hY3Rpb25zXC5oLiplcnJvcjogY3JlYXRpbmcgYXJyYXkgd2l0aCBuZWdhdGl2
ZSBzaXplJykKKyAgY2xhbmdfcmVnZXggPSAocidlcnJvcjouKmFycmF5LipuZWdhdGl2ZS4qXHI/
XG4nCisgICAgICAgICAgICAgICAgIHInKC4qXG4pKj8nICsKKyAgICAgICAgICAgICAgICAgX0NM
QU5HX05PTl9HTU9DS19GSUxFX0xJTkVfUkUgKworICAgICAgICAgICAgICAgICByJ25vdGU6IGlu
IGluc3RhbnRpYXRpb24gb2YgZnVuY3Rpb24gdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24gJworICAg
ICAgICAgICAgICAgICByJ1wndGVzdGluZzo6aW50ZXJuYWw6OlJldHVybkFjdGlvbjwoP1A8dHlw
ZT4uKik+JworICAgICAgICAgICAgICAgICByJzo6b3BlcmF0b3IgQWN0aW9uPC4qPlwnIHJlcXVl
c3RlZCBoZXJlJykKKyAgY2xhbmcxMV9yZSA9IChyJ3VzZV9SZXR1cm5SZWZfaW5zdGVhZF9vZl9S
ZXR1cm5fdG9fcmV0dXJuX2FfcmVmZXJlbmNlLionCisgICAgICAgICAgICAgICAgcicoLipcbikq
PycgKyBfQ0xBTkdfTk9OX0dNT0NLX0ZJTEVfTElORV9SRSkKKworICBkaWFnbm9zaXMgPSAiIiIK
K1lvdSBhcmUgdXNpbmcgYSBSZXR1cm4oKSBhY3Rpb24gaW4gYSBmdW5jdGlvbiB0aGF0IHJldHVy
bnMgYSByZWZlcmVuY2UgdG8KKyUodHlwZSlzLiAgUGxlYXNlIHVzZSBSZXR1cm5SZWYoKSBpbnN0
ZWFkLiIiIgorICByZXR1cm4gX0dlbmVyaWNEaWFnbm9zZXIoJ05SUicsICdOZWVkIHRvIFJldHVy
biBSZWZlcmVuY2UnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhjbGFuZ19yZWdleCwg
ZGlhZ25vc2lzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xhbmcxMV9yZSwgZGlh
Z25vc2lzICUgeyd0eXBlJzogJ2EgdHlwZSd9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoZ2NjX3JlZ2V4LCBkaWFnbm9zaXMgJSB7J3R5cGUnOiAnYSB0eXBlJ30pXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1zZykKKworCitkZWYgX05lZWRUb1JldHVyblNvbWV0aGluZ0Rp
YWdub3Nlcihtc2cpOgorICAiIiJEaWFnbm9zZXMgdGhlIE5SUyBkaXNlYXNlLCBnaXZlbiB0aGUg
ZXJyb3IgbWVzc2FnZXMgYnkgdGhlIGNvbXBpbGVyLiIiIgorCisgIGdjY19yZWdleCA9IChfR0ND
X0ZJTEVfTElORV9SRSArIHInKGluc3RhbnRpYXRlZCBmcm9tIGhlcmVcbi4nCisgICAgICAgICAg
ICAgICByJypnbW9jay4qYWN0aW9uc1wuaC4qZXJyb3I6IHZvaWQgdmFsdWUgbm90IGlnbm9yZWQp
JworICAgICAgICAgICAgICAgcid8KGVycm9yOiBjb250cm9sIHJlYWNoZXMgZW5kIG9mIG5vbi12
b2lkIGZ1bmN0aW9uKScpCisgIGNsYW5nX3JlZ2V4MSA9IChfQ0xBTkdfRklMRV9MSU5FX1JFICsK
KyAgICAgICAgICAgICAgICAgIHInZXJyb3I6IGNhbm5vdCBpbml0aWFsaXplIHJldHVybiBvYmpl
Y3QgJworICAgICAgICAgICAgICAgICAgcidvZiB0eXBlIFwnUmVzdWx0XCcgXChha2EgXCcoP1A8
cmV0dXJuX3R5cGU+LiopXCdcKSAnCisgICAgICAgICAgICAgICAgICByJ3dpdGggYW4gcnZhbHVl
IG9mIHR5cGUgXCd2b2lkXCcnKQorICBjbGFuZ19yZWdleDIgPSAoX0NMQU5HX0ZJTEVfTElORV9S
RSArCisgICAgICAgICAgICAgICAgICByJ2Vycm9yOiBjYW5ub3QgaW5pdGlhbGl6ZSByZXR1cm4g
b2JqZWN0ICcKKyAgICAgICAgICAgICAgICAgIHInb2YgdHlwZSBcJyg/UDxyZXR1cm5fdHlwZT4u
KilcJyAnCisgICAgICAgICAgICAgICAgICByJ3dpdGggYW4gcnZhbHVlIG9mIHR5cGUgXCd2b2lk
XCcnKQorICBkaWFnbm9zaXMgPSAiIiIKK1lvdSBhcmUgdXNpbmcgYW4gYWN0aW9uIHRoYXQgcmV0
dXJucyB2b2lkLCBidXQgaXQgbmVlZHMgdG8gcmV0dXJuCislKHJldHVybl90eXBlKXMuICBQbGVh
c2UgdGVsbCBpdCAqd2hhdCogdG8gcmV0dXJuLiAgUGVyaGFwcyB5b3UgY2FuIHVzZQordGhlIHBh
dHRlcm4gRG9BbGwoc29tZV9hY3Rpb24sIFJldHVybihzb21lX3ZhbHVlKSk/IiIiCisgIHJldHVy
biBfR2VuZXJpY0RpYWdub3NlcigKKyAgICAgICdOUlMnLAorICAgICAgJ05lZWQgdG8gUmV0dXJu
IFNvbWV0aGluZycsCisgICAgICBbKGdjY19yZWdleCwgZGlhZ25vc2lzICUgeydyZXR1cm5fdHlw
ZSc6ICcqc29tZXRoaW5nKid9KSwKKyAgICAgICAoY2xhbmdfcmVnZXgxLCBkaWFnbm9zaXMpLAor
ICAgICAgIChjbGFuZ19yZWdleDIsIGRpYWdub3NpcyldLAorICAgICAgbXNnKQorCisKK2RlZiBf
TmVlZFRvUmV0dXJuTm90aGluZ0RpYWdub3Nlcihtc2cpOgorICAiIiJEaWFnbm9zZXMgdGhlIE5S
TiBkaXNlYXNlLCBnaXZlbiB0aGUgZXJyb3IgbWVzc2FnZXMgYnkgdGhlIGNvbXBpbGVyLiIiIgor
CisgIGdjY19yZWdleCA9IChfR0NDX0ZJTEVfTElORV9SRSArIHInaW5zdGFudGlhdGVkIGZyb20g
aGVyZVxuJworICAgICAgICAgICAgICAgcicuKmdtb2NrLWFjdGlvbnNcLmguKmVycm9yOiBpbnN0
YW50aWF0aW9uIG9mICcKKyAgICAgICAgICAgICAgIHInXCd0ZXN0aW5nOjppbnRlcm5hbDo6UmV0
dXJuQWN0aW9uPFI+OjpJbXBsPEY+Ojp2YWx1ZV9cJyAnCisgICAgICAgICAgICAgICByJ2FzIHR5
cGUgXCd2b2lkXCcnKQorICBjbGFuZ19yZWdleDEgPSAocidlcnJvcjogZmllbGQgaGFzIGluY29t
cGxldGUgdHlwZSAnCisgICAgICAgICAgICAgICAgICByJ1wnUmVzdWx0XCcgXChha2EgXCd2b2lk
XCdcKShccik/XG4nCisgICAgICAgICAgICAgICAgICByJyguKlxuKSo/JyArCisgICAgICAgICAg
ICAgICAgICBfQ0xBTkdfTk9OX0dNT0NLX0ZJTEVfTElORV9SRSArIHInbm90ZTogaW4gaW5zdGFu
dGlhdGlvbiAnCisgICAgICAgICAgICAgICAgICByJ29mIGZ1bmN0aW9uIHRlbXBsYXRlIHNwZWNp
YWxpemF0aW9uICcKKyAgICAgICAgICAgICAgICAgIHInXCd0ZXN0aW5nOjppbnRlcm5hbDo6UmV0
dXJuQWN0aW9uPCg/UDxyZXR1cm5fdHlwZT4uKik+JworICAgICAgICAgICAgICAgICAgcic6Om9w
ZXJhdG9yIEFjdGlvbjx2b2lkIFwoLipcKT5cJyByZXF1ZXN0ZWQgaGVyZScpCisgIGNsYW5nX3Jl
Z2V4MiA9IChyJ2Vycm9yOiBmaWVsZCBoYXMgaW5jb21wbGV0ZSB0eXBlICcKKyAgICAgICAgICAg
ICAgICAgIHInXCdSZXN1bHRcJyBcKGFrYSBcJ3ZvaWRcJ1wpKFxyKT9cbicKKyAgICAgICAgICAg
ICAgICAgIHInKC4qXG4pKj8nICsKKyAgICAgICAgICAgICAgICAgIF9DTEFOR19OT05fR01PQ0tf
RklMRV9MSU5FX1JFICsgcidub3RlOiBpbiBpbnN0YW50aWF0aW9uICcKKyAgICAgICAgICAgICAg
ICAgIHInb2YgZnVuY3Rpb24gdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24gJworICAgICAgICAgICAg
ICAgICAgcidcJ3Rlc3Rpbmc6OmludGVybmFsOjpEb0JvdGhBY3Rpb248Lio+JworICAgICAgICAg
ICAgICAgICAgcic6Om9wZXJhdG9yIEFjdGlvbjwoP1A8cmV0dXJuX3R5cGU+LiopIFwoLipcKT5c
JyAnCisgICAgICAgICAgICAgICAgICByJ3JlcXVlc3RlZCBoZXJlJykKKyAgZGlhZ25vc2lzID0g
IiIiCitZb3UgYXJlIHVzaW5nIGFuIGFjdGlvbiB0aGF0IHJldHVybnMgJShyZXR1cm5fdHlwZSlz
LCBidXQgaXQgbmVlZHMgdG8gcmV0dXJuCit2b2lkLiAgUGxlYXNlIHVzZSBhIHZvaWQtcmV0dXJu
aW5nIGFjdGlvbiBpbnN0ZWFkLgorCitBbGwgYWN0aW9ucyBidXQgdGhlIGxhc3QgaW4gRG9BbGwo
Li4uKSBtdXN0IHJldHVybiB2b2lkLiAgUGVyaGFwcyB5b3UgbmVlZAordG8gcmUtYXJyYW5nZSB0
aGUgb3JkZXIgb2YgYWN0aW9ucyBpbiBhIERvQWxsKCksIGlmIHlvdSBhcmUgdXNpbmcgb25lPyIi
IgorICByZXR1cm4gX0dlbmVyaWNEaWFnbm9zZXIoCisgICAgICAnTlJOJywKKyAgICAgICdOZWVk
IHRvIFJldHVybiBOb3RoaW5nJywKKyAgICAgIFsoZ2NjX3JlZ2V4LCBkaWFnbm9zaXMgJSB7J3Jl
dHVybl90eXBlJzogJypzb21ldGhpbmcqJ30pLAorICAgICAgIChjbGFuZ19yZWdleDEsIGRpYWdu
b3NpcyksCisgICAgICAgKGNsYW5nX3JlZ2V4MiwgZGlhZ25vc2lzKV0sCisgICAgICBtc2cpCisK
KworZGVmIF9JbmNvbXBsZXRlQnlSZWZlcmVuY2VBcmd1bWVudERpYWdub3Nlcihtc2cpOgorICAi
IiJEaWFnbm9zZXMgdGhlIElCUkEgZGlzZWFzZSwgZ2l2ZW4gdGhlIGVycm9yIG1lc3NhZ2VzIGJ5
IHRoZSBjb21waWxlci4iIiIKKworICBnY2NfcmVnZXggPSAoX0dDQ19GSUxFX0xJTkVfUkUgKyBy
J2luc3RhbnRpYXRlZCBmcm9tIGhlcmVcbicKKyAgICAgICAgICAgICAgIHInLipndGVzdC1wcmlu
dGVyc1wuaC4qZXJyb3I6IGludmFsaWQgYXBwbGljYXRpb24gb2YgJworICAgICAgICAgICAgICAg
cidcJ3NpemVvZlwnIHRvIGluY29tcGxldGUgdHlwZSBcJyg/UDx0eXBlPi4qKVwnJykKKworICBj
bGFuZ19yZWdleCA9IChyJy4qZ3Rlc3QtcHJpbnRlcnNcLmguKmVycm9yOiBpbnZhbGlkIGFwcGxp
Y2F0aW9uIG9mICcKKyAgICAgICAgICAgICAgICAgcidcJ3NpemVvZlwnIHRvIGFuIGluY29tcGxl
dGUgdHlwZSAnCisgICAgICAgICAgICAgICAgIHInXCcoP1A8dHlwZT4uKikoIGNvbnN0KT9cJ1xy
P1xuJworICAgICAgICAgICAgICAgICByJyguKlxuKSo/JyArCisgICAgICAgICAgICAgICAgIF9D
TEFOR19OT05fR01PQ0tfRklMRV9MSU5FX1JFICsKKyAgICAgICAgICAgICAgICAgcidub3RlOiBp
biBpbnN0YW50aWF0aW9uIG9mIG1lbWJlciBmdW5jdGlvbiAnCisgICAgICAgICAgICAgICAgIHIn
XCd0ZXN0aW5nOjppbnRlcm5hbDI6OlR5cGVXaXRob3V0Rm9ybWF0dGVyPC4qPjo6JworICAgICAg
ICAgICAgICAgICByJ1ByaW50VmFsdWVcJyByZXF1ZXN0ZWQgaGVyZScpCisgIGRpYWdub3NpcyA9
ICIiIgorSW4gb3JkZXIgdG8gbW9jayB0aGlzIGZ1bmN0aW9uLCBHb29nbGUgTW9jayBuZWVkcyB0
byBzZWUgdGhlIGRlZmluaXRpb24KK29mIHR5cGUgIiUodHlwZSlzIiAtIGRlY2xhcmF0aW9uIGFs
b25lIGlzIG5vdCBlbm91Z2guICBFaXRoZXIgI2luY2x1ZGUKK3RoZSBoZWFkZXIgdGhhdCBkZWZp
bmVzIGl0LCBvciBjaGFuZ2UgdGhlIGFyZ3VtZW50IHRvIGJlIHBhc3NlZAorYnkgcG9pbnRlci4i
IiIKKworICByZXR1cm4gX0dlbmVyaWNEaWFnbm9zZXIoJ0lCUkEnLCAnSW5jb21wbGV0ZSBCeS1S
ZWZlcmVuY2UgQXJndW1lbnQgVHlwZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBbKGdj
Y19yZWdleCwgZGlhZ25vc2lzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xhbmdf
cmVnZXgsIGRpYWdub3NpcyldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnKQorCisK
K2RlZiBfT3ZlcmxvYWRlZEZ1bmN0aW9uTWF0Y2hlckRpYWdub3Nlcihtc2cpOgorICAiIiJEaWFn
bm9zZXMgdGhlIE9GTSBkaXNlYXNlLCBnaXZlbiB0aGUgZXJyb3IgbWVzc2FnZXMgYnkgdGhlIGNv
bXBpbGVyLiIiIgorCisgIGdjY19yZWdleCA9IChfR0NDX0ZJTEVfTElORV9SRSArIHInZXJyb3I6
IG5vIG1hdGNoaW5nIGZ1bmN0aW9uIGZvciAnCisgICAgICAgICAgICAgICByJ2NhbGwgdG8gXCdU
cnVseVwoPHVucmVzb2x2ZWQgb3ZlcmxvYWRlZCBmdW5jdGlvbiB0eXBlPlwpJykKKyAgY2xhbmdf
cmVnZXggPSAoX0NMQU5HX0ZJTEVfTElORV9SRSArIHInZXJyb3I6IG5vIG1hdGNoaW5nIGZ1bmN0
aW9uIGZvciAnCisgICAgICAgICAgICAgICAgIHInY2FsbCB0byBcJ1RydWx5JykKKyAgZGlhZ25v
c2lzID0gIiIiCitUaGUgYXJndW1lbnQgeW91IGdhdmUgdG8gVHJ1bHkoKSBpcyBhbiBvdmVybG9h
ZGVkIGZ1bmN0aW9uLiAgUGxlYXNlIHRlbGwKK3lvdXIgY29tcGlsZXIgd2hpY2ggb3ZlcmxvYWRl
ZCB2ZXJzaW9uIHlvdSB3YW50IHRvIHVzZS4KKworRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50IHRv
IHVzZSB0aGUgdmVyc2lvbiB3aG9zZSBzaWduYXR1cmUgaXMKKyAgYm9vbCBGb28oaW50IG4pOwor
eW91IHNob3VsZCB3cml0ZQorICBUcnVseShzdGF0aWNfY2FzdDxib29sICgqKShpbnQgbik+KEZv
bykpIiIiCisgIHJldHVybiBfR2VuZXJpY0RpYWdub3NlcignT0ZNJywgJ092ZXJsb2FkZWQgRnVu
Y3Rpb24gTWF0Y2hlcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBbKGdjY19yZWdleCwg
ZGlhZ25vc2lzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xhbmdfcmVnZXgsIGRp
YWdub3NpcyldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnKQorCisKK2RlZiBfT3Zl
cmxvYWRlZEZ1bmN0aW9uQWN0aW9uRGlhZ25vc2VyKG1zZyk6CisgICIiIkRpYWdub3NlcyB0aGUg
T0ZBIGRpc2Vhc2UsIGdpdmVuIHRoZSBlcnJvciBtZXNzYWdlcyBieSB0aGUgY29tcGlsZXIuIiIi
CisKKyAgZ2NjX3JlZ2V4ID0gKF9HQ0NfRklMRV9MSU5FX1JFICsgcidlcnJvcjogbm8gbWF0Y2hp
bmcgZnVuY3Rpb24gZm9yIGNhbGwgdG8gJworICAgICAgICAgICAgICAgcidcJ0ludm9rZVwoPHVu
cmVzb2x2ZWQgb3ZlcmxvYWRlZCBmdW5jdGlvbiB0eXBlPicpCisgIGNsYW5nX3JlZ2V4ID0gKF9D
TEFOR19GSUxFX0xJTkVfUkUgKyByJ2Vycm9yOiBubyBtYXRjaGluZyAnCisgICAgICAgICAgICAg
ICAgIHInZnVuY3Rpb24gZm9yIGNhbGwgdG8gXCdJbnZva2VcJ1xyP1xuJworICAgICAgICAgICAg
ICAgICByJyguKlxuKSo/JworICAgICAgICAgICAgICAgICByJy4qXGJnbW9jay1nZW5lcmF0ZWQt
YWN0aW9uc1wuaDpcZCs6XGQrOlxzKycKKyAgICAgICAgICAgICAgICAgcidub3RlOiBjYW5kaWRh
dGUgdGVtcGxhdGUgaWdub3JlZDpccysnCisgICAgICAgICAgICAgICAgIHInY291bGRuXCd0IGlu
ZmVyIHRlbXBsYXRlIGFyZ3VtZW50IFwnRnVuY3Rpb25JbXBsXCcnKQorICBkaWFnbm9zaXMgPSAi
IiIKK0Z1bmN0aW9uIHlvdSBhcmUgcGFzc2luZyB0byBJbnZva2UgaXMgb3ZlcmxvYWRlZC4gIFBs
ZWFzZSB0ZWxsIHlvdXIgY29tcGlsZXIKK3doaWNoIG92ZXJsb2FkZWQgdmVyc2lvbiB5b3Ugd2Fu
dCB0byB1c2UuCisKK0ZvciBleGFtcGxlLCBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIHZlcnNpb24g
d2hvc2Ugc2lnbmF0dXJlIGlzCisgIGJvb2wgTXlGdW5jdGlvbihpbnQgbiwgZG91YmxlIHgpOwor
eW91IHNob3VsZCB3cml0ZSBzb21ldGhpbmcgbGlrZQorICBJbnZva2Uoc3RhdGljX2Nhc3Q8Ym9v
bCAoKikoaW50IG4sIGRvdWJsZSB4KT4oTXlGdW5jdGlvbikpIiIiCisgIHJldHVybiBfR2VuZXJp
Y0RpYWdub3NlcignT0ZBJywgJ092ZXJsb2FkZWQgRnVuY3Rpb24gQWN0aW9uJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFsoZ2NjX3JlZ2V4LCBkaWFnbm9zaXMpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChjbGFuZ19yZWdleCwgZGlhZ25vc2lzKV0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtc2cpCisKKworZGVmIF9PdmVybG9hZGVkTWV0aG9kQWN0aW9uRGlhZ25v
c2VyKG1zZyk6CisgICIiIkRpYWdub3NlcyB0aGUgT01BIGRpc2Vhc2UsIGdpdmVuIHRoZSBlcnJv
ciBtZXNzYWdlcyBieSB0aGUgY29tcGlsZXIuIiIiCisKKyAgZ2NjX3JlZ2V4ID0gKF9HQ0NfRklM
RV9MSU5FX1JFICsgcidlcnJvcjogbm8gbWF0Y2hpbmcgZnVuY3Rpb24gZm9yICcKKyAgICAgICAg
ICAgICAgIHInY2FsbCB0byBcJ0ludm9rZVwoLissIDx1bnJlc29sdmVkIG92ZXJsb2FkZWQgZnVu
Y3Rpb24gJworICAgICAgICAgICAgICAgcid0eXBlPlwpJykKKyAgY2xhbmdfcmVnZXggPSAoX0NM
QU5HX0ZJTEVfTElORV9SRSArIHInZXJyb3I6IG5vIG1hdGNoaW5nIGZ1bmN0aW9uICcKKyAgICAg
ICAgICAgICAgICAgcidmb3IgY2FsbCB0byBcJ0ludm9rZVwnXHI/XG4nCisgICAgICAgICAgICAg
ICAgIHInKC4qXG4pKj8nCisgICAgICAgICAgICAgICAgIHInLipcYmdtb2NrLWdlbmVyYXRlZC1h
Y3Rpb25zXC5oOlxkKzpcZCs6ICcKKyAgICAgICAgICAgICAgICAgcidub3RlOiBjYW5kaWRhdGUg
ZnVuY3Rpb24gdGVtcGxhdGUgbm90IHZpYWJsZTogJworICAgICAgICAgICAgICAgICByJ3JlcXVp
cmVzIC4qLCBidXQgMiAoYXJndW1lbnRzICk/d2VyZSBwcm92aWRlZCcpCisgIGRpYWdub3NpcyA9
ICIiIgorVGhlIHNlY29uZCBhcmd1bWVudCB5b3UgZ2F2ZSB0byBJbnZva2UoKSBpcyBhbiBvdmVy
bG9hZGVkIG1ldGhvZC4gIFBsZWFzZQordGVsbCB5b3VyIGNvbXBpbGVyIHdoaWNoIG92ZXJsb2Fk
ZWQgdmVyc2lvbiB5b3Ugd2FudCB0byB1c2UuCisKK0ZvciBleGFtcGxlLCBpZiB5b3Ugd2FudCB0
byB1c2UgdGhlIHZlcnNpb24gd2hvc2Ugc2lnbmF0dXJlIGlzCisgIGNsYXNzIEZvbyB7CisgICAg
Li4uCisgICAgYm9vbCBCYXIoaW50IG4sIGRvdWJsZSB4KTsKKyAgfTsKK3lvdSBzaG91bGQgd3Jp
dGUgc29tZXRoaW5nIGxpa2UKKyAgSW52b2tlKGZvbywgc3RhdGljX2Nhc3Q8Ym9vbCAoRm9vOjoq
KShpbnQgbiwgZG91YmxlIHgpPigmRm9vOjpCYXIpKSIiIgorICByZXR1cm4gX0dlbmVyaWNEaWFn
bm9zZXIoJ09NQScsICdPdmVybG9hZGVkIE1ldGhvZCBBY3Rpb24nLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgWyhnY2NfcmVnZXgsIGRpYWdub3NpcyksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKGNsYW5nX3JlZ2V4LCBkaWFnbm9zaXMpXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1zZykKKworCitkZWYgX01vY2tPYmplY3RQb2ludGVyRGlhZ25vc2VyKG1zZyk6Cisg
ICIiIkRpYWdub3NlcyB0aGUgTU9QIGRpc2Vhc2UsIGdpdmVuIHRoZSBlcnJvciBtZXNzYWdlcyBi
eSB0aGUgY29tcGlsZXIuIiIiCisKKyAgZ2NjX3JlZ2V4ID0gKF9HQ0NfRklMRV9MSU5FX1JFICsg
cidlcnJvcjogcmVxdWVzdCBmb3IgbWVtYmVyICcKKyAgICAgICAgICAgICAgIHInXCdnbW9ja18o
P1A8bWV0aG9kPi4rKVwnIGluIFwnKD9QPG1vY2tfb2JqZWN0Pi4rKVwnLCAnCisgICAgICAgICAg
ICAgICByJ3doaWNoIGlzIG9mIG5vbi1jbGFzcyB0eXBlIFwnKC4qOjopKig/UDxjbGFzc19uYW1l
Pi4rKVwqXCcnKQorICBjbGFuZ19yZWdleCA9IChfQ0xBTkdfRklMRV9MSU5FX1JFICsgcidlcnJv
cjogbWVtYmVyIHJlZmVyZW5jZSB0eXBlICcKKyAgICAgICAgICAgICAgICAgcidcJyg/UDxjbGFz
c19uYW1lPi4qPykgKlwnIGlzIGEgcG9pbnRlcjsgJworICAgICAgICAgICAgICAgICByJyhkaWQg
eW91IG1lYW58bWF5YmUgeW91IG1lYW50KSB0byB1c2UgXCctPlwnXD8nKQorICBkaWFnbm9zaXMg
PSAiIiIKK1RoZSBmaXJzdCBhcmd1bWVudCB0byBPTl9DQUxMKCkgYW5kIEVYUEVDVF9DQUxMKCkg
bXVzdCBiZSBhIG1vY2sgKm9iamVjdCosCitub3QgYSAqcG9pbnRlciogdG8gaXQuICBQbGVhc2Ug
d3JpdGUgJyooJShtb2NrX29iamVjdClzKScgaW5zdGVhZCBvZgorJyUobW9ja19vYmplY3Qpcycg
YXMgeW91ciBmaXJzdCBhcmd1bWVudC4KKworRm9yIGV4YW1wbGUsIGdpdmVuIHRoZSBtb2NrIGNs
YXNzOgorCisgIGNsYXNzICUoY2xhc3NfbmFtZSlzIDogcHVibGljIC4uLiB7CisgICAgLi4uCisg
ICAgTU9DS19NRVRIT0QwKCUobWV0aG9kKXMsIC4uLik7CisgIH07CisKK2FuZCB0aGUgZm9sbG93
aW5nIG1vY2sgaW5zdGFuY2U6CisKKyAgJShjbGFzc19uYW1lKXMqIG1vY2tfcHRyID0gLi4uCisK
K3lvdSBzaG91bGQgdXNlIHRoZSBFWFBFQ1RfQ0FMTCBsaWtlIHRoaXM6CisKKyAgRVhQRUNUX0NB
TEwoKm1vY2tfcHRyLCAlKG1ldGhvZClzKC4uLikpOyIiIgorCisgIHJldHVybiBfR2VuZXJpY0Rp
YWdub3NlcigKKyAgICAgICdNT1AnLAorICAgICAgJ01vY2sgT2JqZWN0IFBvaW50ZXInLAorICAg
ICAgWyhnY2NfcmVnZXgsIGRpYWdub3NpcyksCisgICAgICAgKGNsYW5nX3JlZ2V4LCBkaWFnbm9z
aXMgJSB7J21vY2tfb2JqZWN0JzogJ21vY2tfb2JqZWN0JywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnbWV0aG9kJzogJ21ldGhvZCcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ2NsYXNzX25hbWUnOiAnJShjbGFzc19uYW1lKXMnfSldLAorICAgICAgIG1z
ZykKKworCitkZWYgX05lZWRUb1VzZVN5bWJvbERpYWdub3Nlcihtc2cpOgorICAiIiJEaWFnbm9z
ZXMgdGhlIE5VUyBkaXNlYXNlLCBnaXZlbiB0aGUgZXJyb3IgbWVzc2FnZXMgYnkgdGhlIGNvbXBp
bGVyLiIiIgorCisgIGdjY19yZWdleCA9IChfR0NDX0ZJTEVfTElORV9SRSArIHInZXJyb3I6IFwn
KD9QPHN5bWJvbD4uKylcJyAnCisgICAgICAgICAgICAgICByJyh3YXMgbm90IGRlY2xhcmVkIGlu
IHRoaXMgc2NvcGV8aGFzIG5vdCBiZWVuIGRlY2xhcmVkKScpCisgIGNsYW5nX3JlZ2V4ID0gKF9D
TEFOR19GSUxFX0xJTkVfUkUgKworICAgICAgICAgICAgICAgICByJ2Vycm9yOiAodXNlIG9mIHVu
ZGVjbGFyZWQgaWRlbnRpZmllcnx1bmtub3duIHR5cGUgbmFtZXwnCisgICAgICAgICAgICAgICAg
IHInbm8gdGVtcGxhdGUgbmFtZWQpIFwnKD9QPHN5bWJvbD5bXlwnXSspXCcnKQorICBkaWFnbm9z
aXMgPSAiIiIKKyclKHN5bWJvbClzJyBpcyBkZWZpbmVkIGJ5IEdvb2dsZSBNb2NrIGluIHRoZSB0
ZXN0aW5nIG5hbWVzcGFjZS4KK0RpZCB5b3UgZm9yZ2V0IHRvIHdyaXRlCisgIHVzaW5nIHRlc3Rp
bmc6OiUoc3ltYm9sKXM7Cis/IiIiCisgIGZvciBtIGluIChsaXN0KF9GaW5kQWxsTWF0Y2hlcyhn
Y2NfcmVnZXgsIG1zZykpICsKKyAgICAgICAgICAgIGxpc3QoX0ZpbmRBbGxNYXRjaGVzKGNsYW5n
X3JlZ2V4LCBtc2cpKSk6CisgICAgc3ltYm9sID0gbS5ncm91cGRpY3QoKVsnc3ltYm9sJ10KKyAg
ICBpZiBzeW1ib2wgaW4gX0NPTU1PTl9HTU9DS19TWU1CT0xTOgorICAgICAgeWllbGQgKCdOVVMn
LCAnTmVlZCB0byBVc2UgU3ltYm9sJywgZGlhZ25vc2lzICUgbS5ncm91cGRpY3QoKSkKKworCitk
ZWYgX05lZWRUb1VzZVJldHVybk51bGxEaWFnbm9zZXIobXNnKToKKyAgIiIiRGlhZ25vc2VzIHRo
ZSBOUk5VTEwgZGlzZWFzZSwgZ2l2ZW4gdGhlIGVycm9yIG1lc3NhZ2VzIGJ5IHRoZSBjb21waWxl
ci4iIiIKKworICBnY2NfcmVnZXggPSAoJ2luc3RhbnRpYXRlZCBmcm9tIFwndGVzdGluZzo6aW50
ZXJuYWw6OlJldHVybkFjdGlvbjxSPicKKyAgICAgICAgICAgICAgICc6Om9wZXJhdG9yIHRlc3Rp
bmc6OkFjdGlvbjxGdW5jPlwoXCkgY29uc3QuKlxuJyArCisgICAgICAgICAgICAgICBfR0NDX0ZJ
TEVfTElORV9SRSArIHInaW5zdGFudGlhdGVkIGZyb20gaGVyZVxuJworICAgICAgICAgICAgICAg
cicuKmVycm9yOiBubyBtYXRjaGluZyBmdW5jdGlvbiBmb3IgY2FsbCB0byBcJ0ltcGxpY2l0Q2Fz
dF9cKCcKKyAgICAgICAgICAgICAgIHInKDo/bG9uZyApP2ludCZcKScpCisgIGNsYW5nX3JlZ2V4
ID0gKHInXGJnbW9jay1hY3Rpb25zLmg6LiogZXJyb3I6IG5vIG1hdGNoaW5nIGZ1bmN0aW9uIGZv
ciAnCisgICAgICAgICAgICAgICAgIHInY2FsbCB0byBcJ0ltcGxpY2l0Q2FzdF9cJ1xyP1xuJwor
ICAgICAgICAgICAgICAgICByJyguKlxuKSo/JyArCisgICAgICAgICAgICAgICAgIF9DTEFOR19O
T05fR01PQ0tfRklMRV9MSU5FX1JFICsgcidub3RlOiBpbiBpbnN0YW50aWF0aW9uICcKKyAgICAg
ICAgICAgICAgICAgcidvZiBmdW5jdGlvbiB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbiAnCisgICAg
ICAgICAgICAgICAgIHInXCd0ZXN0aW5nOjppbnRlcm5hbDo6UmV0dXJuQWN0aW9uPChpbnR8bG9u
Zyk+OjpvcGVyYXRvciAnCisgICAgICAgICAgICAgICAgIHInQWN0aW9uPCg/UDx0eXBlPi4qKVwo
XCk+XCcgcmVxdWVzdGVkIGhlcmUnKQorICBkaWFnbm9zaXMgPSAiIiIKK1lvdSBhcmUgcHJvYmFi
bHkgY2FsbGluZyBSZXR1cm4oTlVMTCkgYW5kIHRoZSBjb21waWxlciBpc24ndCBzdXJlIGhvdyB0
byB0dXJuCitOVUxMIGludG8gJSh0eXBlKXMuIFVzZSBSZXR1cm5OdWxsKCkgaW5zdGVhZC4KK05v
dGU6IHRoZSBsaW5lIG51bWJlciBtYXkgYmUgb2ZmOyBwbGVhc2UgZml4IGFsbCBpbnN0YW5jZXMg
b2YgUmV0dXJuKE5VTEwpLiIiIgorICByZXR1cm4gX0dlbmVyaWNEaWFnbm9zZXIoCisgICAgICAn
TlJOVUxMJywgJ05lZWQgdG8gdXNlIFJldHVybk51bGwnLAorICAgICAgWyhjbGFuZ19yZWdleCwg
ZGlhZ25vc2lzKSwKKyAgICAgICAoZ2NjX3JlZ2V4LCBkaWFnbm9zaXMgJSB7J3R5cGUnOiAndGhl
IHJpZ2h0IHR5cGUnfSldLAorICAgICAgbXNnKQorCisKK2RlZiBfVHlwZUluVGVtcGxhdGVkQmFz
ZURpYWdub3Nlcihtc2cpOgorICAiIiJEaWFnbm9zZXMgdGhlIFRUQiBkaXNlYXNlLCBnaXZlbiB0
aGUgZXJyb3IgbWVzc2FnZXMgYnkgdGhlIGNvbXBpbGVyLiIiIgorCisgICMgVGhpcyB2ZXJzaW9u
IHdvcmtzIHdoZW4gdGhlIHR5cGUgaXMgdXNlZCBhcyB0aGUgbW9jayBmdW5jdGlvbidzIHJldHVy
bgorICAjIHR5cGUuCisgIGdjY180XzNfMV9yZWdleF90eXBlX2luX3JldHZhbCA9ICgKKyAgICAg
IHInSW4gbWVtYmVyIGZ1bmN0aW9uIFwnaW50IC4qXG4nICsgX0dDQ19GSUxFX0xJTkVfUkUgKwor
ICAgICAgcidlcnJvcjogYSBmdW5jdGlvbiBjYWxsIGNhbm5vdCBhcHBlYXIgaW4gYSBjb25zdGFu
dC1leHByZXNzaW9uJykKKyAgZ2NjXzRfNF8wX3JlZ2V4X3R5cGVfaW5fcmV0dmFsID0gKAorICAg
ICAgcidlcnJvcjogYSBmdW5jdGlvbiBjYWxsIGNhbm5vdCBhcHBlYXIgaW4gYSBjb25zdGFudC1l
eHByZXNzaW9uJworICAgICAgKyBfR0NDX0ZJTEVfTElORV9SRSArIHInZXJyb3I6IHRlbXBsYXRl
IGFyZ3VtZW50IDEgaXMgaW52YWxpZFxuJykKKyAgIyBUaGlzIHZlcnNpb24gd29ya3Mgd2hlbiB0
aGUgdHlwZSBpcyB1c2VkIGFzIHRoZSBtb2NrIGZ1bmN0aW9uJ3Mgc29sZQorICAjIHBhcmFtZXRl
ciB0eXBlLgorICBnY2NfcmVnZXhfdHlwZV9vZl9zb2xlX3BhcmFtID0gKAorICAgICAgX0dDQ19G
SUxFX0xJTkVfUkUgKworICAgICAgcidlcnJvcjogXCcoP1A8dHlwZT4uKylcJyB3YXMgbm90IGRl
Y2xhcmVkIGluIHRoaXMgc2NvcGVcbicKKyAgICAgIHInLiplcnJvcjogdGVtcGxhdGUgYXJndW1l
bnQgMSBpcyBpbnZhbGlkXG4nKQorICAjIFRoaXMgdmVyc2lvbiB3b3JrcyB3aGVuIHRoZSB0eXBl
IGlzIHVzZWQgYXMgYSBwYXJhbWV0ZXIgb2YgYSBtb2NrCisgICMgZnVuY3Rpb24gdGhhdCBoYXMg
bXVsdGlwbGUgcGFyYW1ldGVycy4KKyAgZ2NjX3JlZ2V4X3R5cGVfb2ZfYV9wYXJhbSA9ICgKKyAg
ICAgIHInZXJyb3I6IGV4cGVjdGVkIGA7XCcgYmVmb3JlIFwnOjpcJyB0b2tlblxuJworICAgICAg
KyBfR0NDX0ZJTEVfTElORV9SRSArCisgICAgICByJ2Vycm9yOiBcJyg/UDx0eXBlPi4rKVwnIHdh
cyBub3QgZGVjbGFyZWQgaW4gdGhpcyBzY29wZVxuJworICAgICAgcicuKmVycm9yOiB0ZW1wbGF0
ZSBhcmd1bWVudCAxIGlzIGludmFsaWRcbicKKyAgICAgIHInLiplcnJvcjogXCcuK1wnIHdhcyBu
b3QgZGVjbGFyZWQgaW4gdGhpcyBzY29wZScpCisgIGNsYW5nX3JlZ2V4X3R5cGVfb2ZfcmV0dmFs
X29yX3NvbGVfcGFyYW0gPSAoCisgICAgICBfQ0xBTkdfRklMRV9MSU5FX1JFICsKKyAgICAgIHIn
ZXJyb3I6IHVzZSBvZiB1bmRlY2xhcmVkIGlkZW50aWZpZXIgXCcoP1A8dHlwZT4uKilcJ1xuJwor
ICAgICAgcicoLipcbikqPycKKyAgICAgIHInKD9QPWZpbGUpOig/UD1saW5lKTpcZCs6IGVycm9y
OiAnCisgICAgICByJ25vbi1mcmllbmQgY2xhc3MgbWVtYmVyIFwnUmVzdWx0XCcgY2Fubm90IGhh
dmUgYSBxdWFsaWZpZWQgbmFtZScKKyAgICAgICkKKyAgY2xhbmdfcmVnZXhfdHlwZV9vZl9hX3Bh
cmFtID0gKAorICAgICAgX0NMQU5HX0ZJTEVfTElORV9SRSArCisgICAgICByJ2Vycm9yOiBDXCtc
KyByZXF1aXJlcyBhIHR5cGUgc3BlY2lmaWVyIGZvciBhbGwgZGVjbGFyYXRpb25zXG4nCisgICAg
ICByJyguKlxuKSo/JworICAgICAgcicoP1A9ZmlsZSk6KD9QPWxpbmUpOig/UD1jb2x1bW4pOiBl
cnJvcjogJworICAgICAgcidDXCtcKyByZXF1aXJlcyBhIHR5cGUgc3BlY2lmaWVyIGZvciBhbGwg
ZGVjbGFyYXRpb25zJworICAgICAgKQorICBjbGFuZ19yZWdleF91bmtub3duX3R5cGUgPSAoCisg
ICAgICBfQ0xBTkdfRklMRV9MSU5FX1JFICsKKyAgICAgIHInZXJyb3I6IHVua25vd24gdHlwZSBu
YW1lIFwnKD9QPHR5cGU+W15cJ10rKVwnJworICAgICAgKQorCisgIGRpYWdub3NpcyA9ICIiIgor
SW4gYSBtb2NrIGNsYXNzIHRlbXBsYXRlLCB0eXBlcyBvciB0eXBlZGVmcyBkZWZpbmVkIGluIHRo
ZSBiYXNlIGNsYXNzCit0ZW1wbGF0ZSBhcmUgKm5vdCogYXV0b21hdGljYWxseSB2aXNpYmxlLiAg
VGhpcyBpcyBob3cgQysrIHdvcmtzLiAgQmVmb3JlCit5b3UgY2FuIHVzZSBhIHR5cGUgb3IgdHlw
ZWRlZiBuYW1lZCAlKHR5cGUpcyBkZWZpbmVkIGluIGJhc2UgY2xhc3MgQmFzZTxUPiwgeW91Citu
ZWVkIHRvIG1ha2UgaXQgdmlzaWJsZS4gIE9uZSB3YXkgdG8gZG8gaXQgaXM6CisKKyAgdHlwZWRl
ZiB0eXBlbmFtZSBCYXNlPFQ+OjolKHR5cGUpcyAlKHR5cGUpczsiIiIKKworICBmb3IgZGlhZyBp
biBfR2VuZXJpY0RpYWdub3NlcigKKyAgICAgICdUVEInLCAnVHlwZSBpbiBUZW1wbGF0ZSBCYXNl
JywKKyAgICAgIFsoZ2NjXzRfM18xX3JlZ2V4X3R5cGVfaW5fcmV0dmFsLCBkaWFnbm9zaXMgJSB7
J3R5cGUnOiAnRm9vJ30pLAorICAgICAgIChnY2NfNF80XzBfcmVnZXhfdHlwZV9pbl9yZXR2YWws
IGRpYWdub3NpcyAlIHsndHlwZSc6ICdGb28nfSksCisgICAgICAgKGdjY19yZWdleF90eXBlX29m
X3NvbGVfcGFyYW0sIGRpYWdub3NpcyksCisgICAgICAgKGdjY19yZWdleF90eXBlX29mX2FfcGFy
YW0sIGRpYWdub3NpcyksCisgICAgICAgKGNsYW5nX3JlZ2V4X3R5cGVfb2ZfcmV0dmFsX29yX3Nv
bGVfcGFyYW0sIGRpYWdub3NpcyksCisgICAgICAgKGNsYW5nX3JlZ2V4X3R5cGVfb2ZfYV9wYXJh
bSwgZGlhZ25vc2lzICUgeyd0eXBlJzogJ0Zvbyd9KV0sCisgICAgICBtc2cpOgorICAgIHlpZWxk
IGRpYWcKKyAgIyBBdm9pZCBvdmVybGFwIHdpdGggdGhlIE5VUyBwYXR0ZXJuLgorICBmb3IgbSBp
biBfRmluZEFsbE1hdGNoZXMoY2xhbmdfcmVnZXhfdW5rbm93bl90eXBlLCBtc2cpOgorICAgIHR5
cGVfID0gbS5ncm91cGRpY3QoKVsndHlwZSddCisgICAgaWYgdHlwZV8gbm90IGluIF9DT01NT05f
R01PQ0tfU1lNQk9MUzoKKyAgICAgIHlpZWxkICgnVFRCJywgJ1R5cGUgaW4gVGVtcGxhdGUgQmFz
ZScsIGRpYWdub3NpcyAlIG0uZ3JvdXBkaWN0KCkpCisKKworZGVmIF9Xcm9uZ01vY2tNZXRob2RN
YWNyb0RpYWdub3Nlcihtc2cpOgorICAiIiJEaWFnbm9zZXMgdGhlIFdNTSBkaXNlYXNlLCBnaXZl
biB0aGUgZXJyb3IgbWVzc2FnZXMgYnkgdGhlIGNvbXBpbGVyLiIiIgorCisgIGdjY19yZWdleCA9
IChfR0NDX0ZJTEVfTElORV9SRSArCisgICAgICAgICAgICAgICByJy4qdGhpc19tZXRob2RfZG9l
c19ub3RfdGFrZV8oP1A8d3JvbmdfYXJncz5cZCspX2FyZ3VtZW50LipcbicKKyAgICAgICAgICAg
ICAgIHInLipcbicKKyAgICAgICAgICAgICAgIHInLipjYW5kaWRhdGVzIGFyZS4qRnVuY3Rpb25N
b2NrZXI8W14+XStBKD9QPGFyZ3M+XGQrKVwpPicpCisgIGNsYW5nX3JlZ2V4ID0gKF9DTEFOR19O
T05fR01PQ0tfRklMRV9MSU5FX1JFICsKKyAgICAgICAgICAgICAgICAgcidlcnJvcjouKmFycmF5
LipuZWdhdGl2ZS4qcj9cbicKKyAgICAgICAgICAgICAgICAgcicoLipcbikqPycKKyAgICAgICAg
ICAgICAgICAgcicoP1A9ZmlsZSk6KD9QPWxpbmUpOig/UD1jb2x1bW4pOiBlcnJvcjogdG9vIGZl
dyBhcmd1bWVudHMgJworICAgICAgICAgICAgICAgICByJ3RvIGZ1bmN0aW9uIGNhbGwsIGV4cGVj
dGVkICg/UDxhcmdzPlxkKyksICcKKyAgICAgICAgICAgICAgICAgcidoYXZlICg/UDx3cm9uZ19h
cmdzPlxkKyknKQorICBjbGFuZzExX3JlID0gKF9DTEFOR19OT05fR01PQ0tfRklMRV9MSU5FX1JF
ICsKKyAgICAgICAgICAgICAgICByJy4qdGhpc19tZXRob2RfZG9lc19ub3RfdGFrZV8nCisgICAg
ICAgICAgICAgICAgcicoP1A8d3JvbmdfYXJncz5cZCspX2FyZ3VtZW50LionKQorICBkaWFnbm9z
aXMgPSAiIiIKK1lvdSBhcmUgdXNpbmcgTU9DS19NRVRIT0QlKHdyb25nX2FyZ3MpcyB0byBkZWZp
bmUgYSBtb2NrIG1ldGhvZCB0aGF0IGhhcworJShhcmdzKXMgYXJndW1lbnRzLiBVc2UgTU9DS19N
RVRIT0QlKGFyZ3MpcyAob3IgTU9DS19DT05TVF9NRVRIT0QlKGFyZ3MpcywKK01PQ0tfTUVUSE9E
JShhcmdzKXNfVCwgTU9DS19DT05TVF9NRVRIT0QlKGFyZ3Mpc19UIGFzIGFwcHJvcHJpYXRlKSBp
bnN0ZWFkLiIiIgorICByZXR1cm4gX0dlbmVyaWNEaWFnbm9zZXIoJ1dNTScsICdXcm9uZyBNT0NL
X01FVEhPRG4gTWFjcm8nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhnY2NfcmVnZXgs
IGRpYWdub3NpcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsYW5nMTFfcmUsIGRp
YWdub3NpcyAlIHsnd3JvbmdfYXJncyc6ICdtJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcmdzJzogJ24nfSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKGNsYW5nX3JlZ2V4LCBkaWFnbm9zaXMpXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1zZykKKworCitkZWYgX1dyb25nUGFyZW5Qb3NpdGlvbkRpYWdub3Nlciht
c2cpOgorICAiIiJEaWFnbm9zZXMgdGhlIFdQUCBkaXNlYXNlLCBnaXZlbiB0aGUgZXJyb3IgbWVz
c2FnZXMgYnkgdGhlIGNvbXBpbGVyLiIiIgorCisgIGdjY19yZWdleCA9IChfR0NDX0ZJTEVfTElO
RV9SRSArCisgICAgICAgICAgICAgICByJ2Vycm9yOi4qdGVzdGluZzo6aW50ZXJuYWw6Ok1vY2tT
cGVjPC4qIGhhcyBubyBtZW1iZXIgbmFtZWQgXCcnCisgICAgICAgICAgICAgICByJyg/UDxtZXRo
b2Q+XHcrKVwnJykKKyAgY2xhbmdfcmVnZXggPSAoX0NMQU5HX05PTl9HTU9DS19GSUxFX0xJTkVf
UkUgKworICAgICAgICAgICAgICAgICByJ2Vycm9yOiBubyBtZW1iZXIgbmFtZWQgXCcoP1A8bWV0
aG9kPlx3KylcJyBpbiAnCisgICAgICAgICAgICAgICAgIHInXCd0ZXN0aW5nOjppbnRlcm5hbDo6
TW9ja1NwZWM8Lio+XCcnKQorICBkaWFnbm9zaXMgPSAiIiIKK1RoZSBjbG9zaW5nIHBhcmVudGhl
c2lzIG9mIE9OX0NBTEwgb3IgRVhQRUNUX0NBTEwgc2hvdWxkIGJlICpiZWZvcmUqCisiLiUobWV0
aG9kKXMiLiAgRm9yIGV4YW1wbGUsIHlvdSBzaG91bGQgd3JpdGU6CisgIEVYUEVDVF9DQUxMKG15
X21vY2ssIEZvbyhfKSkuJShtZXRob2QpcyguLi4pOworaW5zdGVhZCBvZjoKKyAgRVhQRUNUX0NB
TEwobXlfbW9jaywgRm9vKF8pLiUobWV0aG9kKXMoLi4uKSk7IiIiCisgIHJldHVybiBfR2VuZXJp
Y0RpYWdub3NlcignV1BQJywgJ1dyb25nIFBhcmVudGhlc2lzIFBvc2l0aW9uJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFsoZ2NjX3JlZ2V4LCBkaWFnbm9zaXMpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChjbGFuZ19yZWdleCwgZGlhZ25vc2lzKV0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtc2cpCisKKworX0RJQUdOT1NFUlMgPSBbCisgICAgX0luY29tcGxldGVC
eVJlZmVyZW5jZUFyZ3VtZW50RGlhZ25vc2VyLAorICAgIF9Nb2NrT2JqZWN0UG9pbnRlckRpYWdu
b3NlciwKKyAgICBfTmVlZFRvUmV0dXJuTm90aGluZ0RpYWdub3NlciwKKyAgICBfTmVlZFRvUmV0
dXJuUmVmZXJlbmNlRGlhZ25vc2VyLAorICAgIF9OZWVkVG9SZXR1cm5Tb21ldGhpbmdEaWFnbm9z
ZXIsCisgICAgX05lZWRUb1VzZVJldHVybk51bGxEaWFnbm9zZXIsCisgICAgX05lZWRUb1VzZVN5
bWJvbERpYWdub3NlciwKKyAgICBfT3ZlcmxvYWRlZEZ1bmN0aW9uQWN0aW9uRGlhZ25vc2VyLAor
ICAgIF9PdmVybG9hZGVkRnVuY3Rpb25NYXRjaGVyRGlhZ25vc2VyLAorICAgIF9PdmVybG9hZGVk
TWV0aG9kQWN0aW9uRGlhZ25vc2VyLAorICAgIF9UeXBlSW5UZW1wbGF0ZWRCYXNlRGlhZ25vc2Vy
LAorICAgIF9Xcm9uZ01vY2tNZXRob2RNYWNyb0RpYWdub3NlciwKKyAgICBfV3JvbmdQYXJlblBv
c2l0aW9uRGlhZ25vc2VyLAorICAgIF0KKworCitkZWYgRGlhZ25vc2UobXNnKToKKyAgIiIiR2Vu
ZXJhdGVzIGFsbCBwb3NzaWJsZSBkaWFnbm9zZXMgZ2l2ZW4gdGhlIGNvbXBpbGVyIGVycm9yIG1l
c3NhZ2UuIiIiCisKKyAgbXNnID0gcmUuc3ViKHInXHgxYlxbW15tXSptJywgJycsIG1zZykgICMg
U3RyaXBzIGFsbCBjb2xvciBmb3JtYXR0aW5nLgorICAjIEFzc3VtaW5nIHRoZSBzdHJpbmcgaXMg
dXNpbmcgdGhlIFVURi04IGVuY29kaW5nLCByZXBsYWNlcyB0aGUgbGVmdCBhbmQKKyAgIyB0aGUg
cmlnaHQgc2luZ2xlIHF1b3RlIGNoYXJhY3RlcnMgd2l0aCBhcG9zdHJvcGhlcy4KKyAgbXNnID0g
cmUuc3ViKHInKFx4ZTJceDgwXHg5OHxceGUyXHg4MFx4OTkpJywgIiciLCBtc2cpCisKKyAgZGlh
Z25vc2VzID0gW10KKyAgZm9yIGRpYWdub3NlciBpbiBfRElBR05PU0VSUzoKKyAgICBmb3IgZGlh
ZyBpbiBkaWFnbm9zZXIobXNnKToKKyAgICAgIGRpYWdub3NpcyA9ICdbJXMgLSAlc11cbiVzJyAl
IGRpYWcKKyAgICAgIGlmIG5vdCBkaWFnbm9zaXMgaW4gZGlhZ25vc2VzOgorICAgICAgICBkaWFn
bm9zZXMuYXBwZW5kKGRpYWdub3NpcykKKyAgcmV0dXJuIGRpYWdub3NlcworCisKK2RlZiBtYWlu
KCk6CisgIHByaW50ICgnR29vZ2xlIE1vY2sgRG9jdG9yIHYlcyAtICcKKyAgICAgICAgICdkaWFn
bm9zZXMgcHJvYmxlbXMgaW4gY29kZSB1c2luZyBHb29nbGUgTW9jay4nICUgX1ZFUlNJT04pCisK
KyAgaWYgc3lzLnN0ZGluLmlzYXR0eSgpOgorICAgIHByaW50ICgnUGxlYXNlIGNvcHkgYW5kIHBh
c3RlIHRoZSBjb21waWxlciBlcnJvcnMgaGVyZS4gIFByZXNzIGMtRCB3aGVuICcKKyAgICAgICAg
ICAgJ3lvdSBhcmUgZG9uZTonKQorICBlbHNlOgorICAgIHByaW50ICgnV2FpdGluZyBmb3IgY29t
cGlsZXIgZXJyb3JzIG9uIHN0ZGluIC4gLiAuJykKKworICBtc2cgPSBzeXMuc3RkaW4ucmVhZCgp
LnN0cmlwKCkKKyAgZGlhZ25vc2VzID0gRGlhZ25vc2UobXNnKQorICBjb3VudCA9IGxlbihkaWFn
bm9zZXMpCisgIGlmIG5vdCBjb3VudDoKKyAgICBwcmludCAoIiIiCitZb3VyIGNvbXBpbGVyIGNv
bXBsYWluZWQ6Cis4PC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorJXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT44CisKK1VoLW9oLCBJJ20gbm90IHNtYXJ0IGVub3Vn
aCB0byBmaWd1cmUgb3V0IHdoYXQgdGhlIHByb2JsZW0gaXMuIDotKAorSG93ZXZlci4uLgorSWYg
eW91IHNlbmQgeW91ciBzb3VyY2UgY29kZSBhbmQgdGhlIGNvbXBpbGVyJ3MgZXJyb3IgbWVzc2Fn
ZXMgdG8KKyVzLCB5b3UgY2FuIGJlIGhlbHBlZCBhbmQgSSBjYW4gZ2V0IHNtYXJ0ZXIgLS0KK3dp
bi13aW4gZm9yIHVzISIiIiAlIChtc2csIF9FTUFJTCkpCisgIGVsc2U6CisgICAgcHJpbnQgKCct
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0nKQorICAgIHByaW50ICgnWW91ciBjb2RlIGFwcGVhcnMgdG8gaGF2ZSB0aGUgZm9sbG93aW5n
JywpCisgICAgaWYgY291bnQgPiAxOgorICAgICAgcHJpbnQgKCclcyBkaXNlYXNlczonICUgKGNv
dW50LCkpCisgICAgZWxzZToKKyAgICAgIHByaW50ICgnZGlzZWFzZTonKQorICAgIGkgPSAwCisg
ICAgZm9yIGQgaW4gZGlhZ25vc2VzOgorICAgICAgaSArPSAxCisgICAgICBpZiBjb3VudCA+IDE6
CisgICAgICAgIHByaW50ICgnXG4jJXM6JyAlIChpLCkpCisgICAgICBwcmludCAoZCkKKyAgICBw
cmludCAoIiIiCitIb3cgZGlkIEkgZG8/ICBJZiB5b3UgdGhpbmsgSSdtIHdyb25nIG9yIHVuaGVs
cGZ1bCwgcGxlYXNlIHNlbmQgeW91cgorc291cmNlIGNvZGUgYW5kIHRoZSBjb21waWxlcidzIGVy
cm9yIG1lc3NhZ2VzIHRvICVzLgorVGhlbiB5b3UgY2FuIGJlIGhlbHBlZCBhbmQgSSBjYW4gZ2V0
IHNtYXJ0ZXIgLS0gSSBwcm9taXNlIEkgd29uJ3QgYmUgdXBzZXQhIiIiICUKKyAgICAgICAgICAg
X0VNQUlMKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIG1haW4oKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZW1vY2svc2NyaXB0cy91cGxvYWQucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zY3JpcHRz
L3VwbG9hZC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTZmOWExNDcxOWVmOGM5ZmRiNjAzYWQ1MGJkZDM1ZGM3
OTk2ZTJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc2NyaXB0cy91cGxvYWQucHkK
QEAgLTAsMCArMSwxMzg3IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0
IDIwMDcgR29vZ2xlIEluYy4KKyMKKyMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNl
LCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyMgWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisjCisjICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyMKKyMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorIyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorIyBX
SVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJl
c3Mgb3IgaW1wbGllZC4KKyMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh
Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorIyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKworIiIiVG9vbCBmb3IgdXBsb2FkaW5nIGRpZmZzIGZyb20gYSB2ZXJzaW9uIGNvbnRy
b2wgc3lzdGVtIHRvIHRoZSBjb2RlcmV2aWV3IGFwcC4KKworVXNhZ2Ugc3VtbWFyeTogdXBsb2Fk
LnB5IFtvcHRpb25zXSBbLS0gZGlmZl9vcHRpb25zXQorCitEaWZmIG9wdGlvbnMgYXJlIHBhc3Nl
ZCB0byB0aGUgZGlmZiBjb21tYW5kIG9mIHRoZSB1bmRlcmx5aW5nIHN5c3RlbS4KKworU3VwcG9y
dGVkIHZlcnNpb24gY29udHJvbCBzeXN0ZW1zOgorICBHaXQKKyAgTWVyY3VyaWFsCisgIFN1YnZl
cnNpb24KKworSXQgaXMgaW1wb3J0YW50IGZvciBHaXQvTWVyY3VyaWFsIHVzZXJzIHRvIHNwZWNp
ZnkgYSB0cmVlL25vZGUvYnJhbmNoIHRvIGRpZmYKK2FnYWluc3QgYnkgdXNpbmcgdGhlICctLXJl
dicgb3B0aW9uLgorIiIiCisjIFRoaXMgY29kZSBpcyBkZXJpdmVkIGZyb20gYXBwY2ZnLnB5IGlu
IHRoZSBBcHAgRW5naW5lIFNESyAob3BlbiBzb3VyY2UpLAorIyBhbmQgZnJvbSBBU1BOIHJlY2lw
ZSAjMTQ2MzA2LgorCitpbXBvcnQgY29va2llbGliCitpbXBvcnQgZ2V0cGFzcworaW1wb3J0IGxv
Z2dpbmcKK2ltcG9ydCBtZDUKK2ltcG9ydCBtaW1ldHlwZXMKK2ltcG9ydCBvcHRwYXJzZQoraW1w
b3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzb2NrZXQKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBv
cnQgc3lzCitpbXBvcnQgdXJsbGliCitpbXBvcnQgdXJsbGliMgoraW1wb3J0IHVybHBhcnNlCisK
K3RyeToKKyAgaW1wb3J0IHJlYWRsaW5lCitleGNlcHQgSW1wb3J0RXJyb3I6CisgIHBhc3MKKwor
IyBUaGUgbG9nZ2luZyB2ZXJib3NpdHk6CisjICAwOiBFcnJvcnMgb25seS4KKyMgIDE6IFN0YXR1
cyBtZXNzYWdlcy4KKyMgIDI6IEluZm8gbG9ncy4KKyMgIDM6IERlYnVnIGxvZ3MuCit2ZXJib3Np
dHkgPSAxCisKKyMgTWF4IHNpemUgb2YgcGF0Y2ggb3IgYmFzZSBmaWxlLgorTUFYX1VQTE9BRF9T
SVpFID0gOTAwICogMTAyNAorCisKK2RlZiBHZXRFbWFpbChwcm9tcHQpOgorICAiIiJQcm9tcHRz
IHRoZSB1c2VyIGZvciB0aGVpciBlbWFpbCBhZGRyZXNzIGFuZCByZXR1cm5zIGl0LgorCisgIFRo
ZSBsYXN0IHVzZWQgZW1haWwgYWRkcmVzcyBpcyBzYXZlZCB0byBhIGZpbGUgYW5kIG9mZmVyZWQg
dXAgYXMgYSBzdWdnZXN0aW9uCisgIHRvIHRoZSB1c2VyLiBJZiB0aGUgdXNlciBwcmVzc2VzIGVu
dGVyIHdpdGhvdXQgdHlwaW5nIGluIGFueXRoaW5nIHRoZSBsYXN0CisgIHVzZWQgZW1haWwgYWRk
cmVzcyBpcyB1c2VkLiBJZiB0aGUgdXNlciBlbnRlcnMgYSBuZXcgYWRkcmVzcywgaXQgaXMgc2F2
ZWQKKyAgZm9yIG5leHQgdGltZSB3ZSBwcm9tcHQuCisKKyAgIiIiCisgIGxhc3RfZW1haWxfZmls
ZV9uYW1lID0gb3MucGF0aC5leHBhbmR1c2VyKCJ+Ly5sYXN0X2NvZGVyZXZpZXdfZW1haWxfYWRk
cmVzcyIpCisgIGxhc3RfZW1haWwgPSAiIgorICBpZiBvcy5wYXRoLmV4aXN0cyhsYXN0X2VtYWls
X2ZpbGVfbmFtZSk6CisgICAgdHJ5OgorICAgICAgbGFzdF9lbWFpbF9maWxlID0gb3BlbihsYXN0
X2VtYWlsX2ZpbGVfbmFtZSwgInIiKQorICAgICAgbGFzdF9lbWFpbCA9IGxhc3RfZW1haWxfZmls
ZS5yZWFkbGluZSgpLnN0cmlwKCJcbiIpCisgICAgICBsYXN0X2VtYWlsX2ZpbGUuY2xvc2UoKQor
ICAgICAgcHJvbXB0ICs9ICIgWyVzXSIgJSBsYXN0X2VtYWlsCisgICAgZXhjZXB0IElPRXJyb3Is
IGU6CisgICAgICBwYXNzCisgIGVtYWlsID0gcmF3X2lucHV0KHByb21wdCArICI6ICIpLnN0cmlw
KCkKKyAgaWYgZW1haWw6CisgICAgdHJ5OgorICAgICAgbGFzdF9lbWFpbF9maWxlID0gb3Blbihs
YXN0X2VtYWlsX2ZpbGVfbmFtZSwgInciKQorICAgICAgbGFzdF9lbWFpbF9maWxlLndyaXRlKGVt
YWlsKQorICAgICAgbGFzdF9lbWFpbF9maWxlLmNsb3NlKCkKKyAgICBleGNlcHQgSU9FcnJvciwg
ZToKKyAgICAgIHBhc3MKKyAgZWxzZToKKyAgICBlbWFpbCA9IGxhc3RfZW1haWwKKyAgcmV0dXJu
IGVtYWlsCisKKworZGVmIFN0YXR1c1VwZGF0ZShtc2cpOgorICAiIiJQcmludCBhIHN0YXR1cyBt
ZXNzYWdlIHRvIHN0ZG91dC4KKworICBJZiAndmVyYm9zaXR5JyBpcyBncmVhdGVyIHRoYW4gMCwg
cHJpbnQgdGhlIG1lc3NhZ2UuCisKKyAgQXJnczoKKyAgICBtc2c6IFRoZSBzdHJpbmcgdG8gcHJp
bnQuCisgICIiIgorICBpZiB2ZXJib3NpdHkgPiAwOgorICAgIHByaW50IG1zZworCisKK2RlZiBF
cnJvckV4aXQobXNnKToKKyAgIiIiUHJpbnQgYW4gZXJyb3IgbWVzc2FnZSB0byBzdGRlcnIgYW5k
IGV4aXQuIiIiCisgIHByaW50ID4+c3lzLnN0ZGVyciwgbXNnCisgIHN5cy5leGl0KDEpCisKKwor
Y2xhc3MgQ2xpZW50TG9naW5FcnJvcih1cmxsaWIyLkhUVFBFcnJvcik6CisgICIiIlJhaXNlZCB0
byBpbmRpY2F0ZSB0aGVyZSB3YXMgYW4gZXJyb3IgYXV0aGVudGljYXRpbmcgd2l0aCBDbGllbnRM
b2dpbi4iIiIKKworICBkZWYgX19pbml0X18oc2VsZiwgdXJsLCBjb2RlLCBtc2csIGhlYWRlcnMs
IGFyZ3MpOgorICAgIHVybGxpYjIuSFRUUEVycm9yLl9faW5pdF9fKHNlbGYsIHVybCwgY29kZSwg
bXNnLCBoZWFkZXJzLCBOb25lKQorICAgIHNlbGYuYXJncyA9IGFyZ3MKKyAgICBzZWxmLnJlYXNv
biA9IGFyZ3NbIkVycm9yIl0KKworCitjbGFzcyBBYnN0cmFjdFJwY1NlcnZlcihvYmplY3QpOgor
ICAiIiJQcm92aWRlcyBhIGNvbW1vbiBpbnRlcmZhY2UgZm9yIGEgc2ltcGxlIFJQQyBzZXJ2ZXIu
IiIiCisKKyAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIGF1dGhfZnVuY3Rpb24sIGhvc3Rfb3Zl
cnJpZGU9Tm9uZSwgZXh0cmFfaGVhZGVycz17fSwKKyAgICAgICAgICAgICAgIHNhdmVfY29va2ll
cz1GYWxzZSk6CisgICAgIiIiQ3JlYXRlcyBhIG5ldyBIdHRwUnBjU2VydmVyLgorCisgICAgQXJn
czoKKyAgICAgIGhvc3Q6IFRoZSBob3N0IHRvIHNlbmQgcmVxdWVzdHMgdG8uCisgICAgICBhdXRo
X2Z1bmN0aW9uOiBBIGZ1bmN0aW9uIHRoYXQgdGFrZXMgbm8gYXJndW1lbnRzIGFuZCByZXR1cm5z
IGFuCisgICAgICAgIChlbWFpbCwgcGFzc3dvcmQpIHR1cGxlIHdoZW4gY2FsbGVkLiBXaWxsIGJl
IGNhbGxlZCBpZiBhdXRoZW50aWNhdGlvbgorICAgICAgICBpcyByZXF1aXJlZC4KKyAgICAgIGhv
c3Rfb3ZlcnJpZGU6IFRoZSBob3N0IGhlYWRlciB0byBzZW5kIHRvIHRoZSBzZXJ2ZXIgKGRlZmF1
bHRzIHRvIGhvc3QpLgorICAgICAgZXh0cmFfaGVhZGVyczogQSBkaWN0IG9mIGV4dHJhIGhlYWRl
cnMgdG8gYXBwZW5kIHRvIGV2ZXJ5IHJlcXVlc3QuCisgICAgICBzYXZlX2Nvb2tpZXM6IElmIFRy
dWUsIHNhdmUgdGhlIGF1dGhlbnRpY2F0aW9uIGNvb2tpZXMgdG8gbG9jYWwgZGlzay4KKyAgICAg
ICAgSWYgRmFsc2UsIHVzZSBhbiBpbi1tZW1vcnkgY29va2llamFyIGluc3RlYWQuICBTdWJjbGFz
c2VzIG11c3QKKyAgICAgICAgaW1wbGVtZW50IHRoaXMgZnVuY3Rpb25hbGl0eS4gIERlZmF1bHRz
IHRvIEZhbHNlLgorICAgICIiIgorICAgIHNlbGYuaG9zdCA9IGhvc3QKKyAgICBzZWxmLmhvc3Rf
b3ZlcnJpZGUgPSBob3N0X292ZXJyaWRlCisgICAgc2VsZi5hdXRoX2Z1bmN0aW9uID0gYXV0aF9m
dW5jdGlvbgorICAgIHNlbGYuYXV0aGVudGljYXRlZCA9IEZhbHNlCisgICAgc2VsZi5leHRyYV9o
ZWFkZXJzID0gZXh0cmFfaGVhZGVycworICAgIHNlbGYuc2F2ZV9jb29raWVzID0gc2F2ZV9jb29r
aWVzCisgICAgc2VsZi5vcGVuZXIgPSBzZWxmLl9HZXRPcGVuZXIoKQorICAgIGlmIHNlbGYuaG9z
dF9vdmVycmlkZToKKyAgICAgIGxvZ2dpbmcuaW5mbygiU2VydmVyOiAlczsgSG9zdDogJXMiLCBz
ZWxmLmhvc3QsIHNlbGYuaG9zdF9vdmVycmlkZSkKKyAgICBlbHNlOgorICAgICAgbG9nZ2luZy5p
bmZvKCJTZXJ2ZXI6ICVzIiwgc2VsZi5ob3N0KQorCisgIGRlZiBfR2V0T3BlbmVyKHNlbGYpOgor
ICAgICIiIlJldHVybnMgYW4gT3BlbmVyRGlyZWN0b3IgZm9yIG1ha2luZyBIVFRQIHJlcXVlc3Rz
LgorCisgICAgUmV0dXJuczoKKyAgICAgIEEgdXJsbGliMi5PcGVuZXJEaXJlY3RvciBvYmplY3Qu
CisgICAgIiIiCisgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCisKKyAgZGVmIF9DcmVh
dGVSZXF1ZXN0KHNlbGYsIHVybCwgZGF0YT1Ob25lKToKKyAgICAiIiJDcmVhdGVzIGEgbmV3IHVy
bGxpYiByZXF1ZXN0LiIiIgorICAgIGxvZ2dpbmcuZGVidWcoIkNyZWF0aW5nIHJlcXVlc3QgZm9y
OiAnJXMnIHdpdGggcGF5bG9hZDpcbiVzIiwgdXJsLCBkYXRhKQorICAgIHJlcSA9IHVybGxpYjIu
UmVxdWVzdCh1cmwsIGRhdGE9ZGF0YSkKKyAgICBpZiBzZWxmLmhvc3Rfb3ZlcnJpZGU6CisgICAg
ICByZXEuYWRkX2hlYWRlcigiSG9zdCIsIHNlbGYuaG9zdF9vdmVycmlkZSkKKyAgICBmb3Iga2V5
LCB2YWx1ZSBpbiBzZWxmLmV4dHJhX2hlYWRlcnMuaXRlcml0ZW1zKCk6CisgICAgICByZXEuYWRk
X2hlYWRlcihrZXksIHZhbHVlKQorICAgIHJldHVybiByZXEKKworICBkZWYgX0dldEF1dGhUb2tl
bihzZWxmLCBlbWFpbCwgcGFzc3dvcmQpOgorICAgICIiIlVzZXMgQ2xpZW50TG9naW4gdG8gYXV0
aGVudGljYXRlIHRoZSB1c2VyLCByZXR1cm5pbmcgYW4gYXV0aCB0b2tlbi4KKworICAgIEFyZ3M6
CisgICAgICBlbWFpbDogICAgVGhlIHVzZXIncyBlbWFpbCBhZGRyZXNzCisgICAgICBwYXNzd29y
ZDogVGhlIHVzZXIncyBwYXNzd29yZAorCisgICAgUmFpc2VzOgorICAgICAgQ2xpZW50TG9naW5F
cnJvcjogSWYgdGhlcmUgd2FzIGFuIGVycm9yIGF1dGhlbnRpY2F0aW5nIHdpdGggQ2xpZW50TG9n
aW4uCisgICAgICBIVFRQRXJyb3I6IElmIHRoZXJlIHdhcyBzb21lIG90aGVyIGZvcm0gb2YgSFRU
UCBlcnJvci4KKworICAgIFJldHVybnM6CisgICAgICBUaGUgYXV0aGVudGljYXRpb24gdG9rZW4g
cmV0dXJuZWQgYnkgQ2xpZW50TG9naW4uCisgICAgIiIiCisgICAgYWNjb3VudF90eXBlID0gIkdP
T0dMRSIKKyAgICBpZiBzZWxmLmhvc3QuZW5kc3dpdGgoIi5nb29nbGUuY29tIik6CisgICAgICAj
IE5lZWRlZCBmb3IgdXNlIGluc2lkZSBHb29nbGUuCisgICAgICBhY2NvdW50X3R5cGUgPSAiSE9T
VEVEIgorICAgIHJlcSA9IHNlbGYuX0NyZWF0ZVJlcXVlc3QoCisgICAgICAgIHVybD0iaHR0cHM6
Ly93d3cuZ29vZ2xlLmNvbS9hY2NvdW50cy9DbGllbnRMb2dpbiIsCisgICAgICAgIGRhdGE9dXJs
bGliLnVybGVuY29kZSh7CisgICAgICAgICAgICAiRW1haWwiOiBlbWFpbCwKKyAgICAgICAgICAg
ICJQYXNzd2QiOiBwYXNzd29yZCwKKyAgICAgICAgICAgICJzZXJ2aWNlIjogImFoIiwKKyAgICAg
ICAgICAgICJzb3VyY2UiOiAicmlldHZlbGQtY29kZXJldmlldy11cGxvYWQiLAorICAgICAgICAg
ICAgImFjY291bnRUeXBlIjogYWNjb3VudF90eXBlLAorICAgICAgICB9KSwKKyAgICApCisgICAg
dHJ5OgorICAgICAgcmVzcG9uc2UgPSBzZWxmLm9wZW5lci5vcGVuKHJlcSkKKyAgICAgIHJlc3Bv
bnNlX2JvZHkgPSByZXNwb25zZS5yZWFkKCkKKyAgICAgIHJlc3BvbnNlX2RpY3QgPSBkaWN0KHgu
c3BsaXQoIj0iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gcmVzcG9uc2Vf
Ym9keS5zcGxpdCgiXG4iKSBpZiB4KQorICAgICAgcmV0dXJuIHJlc3BvbnNlX2RpY3RbIkF1dGgi
XQorICAgIGV4Y2VwdCB1cmxsaWIyLkhUVFBFcnJvciwgZToKKyAgICAgIGlmIGUuY29kZSA9PSA0
MDM6CisgICAgICAgIGJvZHkgPSBlLnJlYWQoKQorICAgICAgICByZXNwb25zZV9kaWN0ID0gZGlj
dCh4LnNwbGl0KCI9IiwgMSkgZm9yIHggaW4gYm9keS5zcGxpdCgiXG4iKSBpZiB4KQorICAgICAg
ICByYWlzZSBDbGllbnRMb2dpbkVycm9yKHJlcS5nZXRfZnVsbF91cmwoKSwgZS5jb2RlLCBlLm1z
ZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmhlYWRlcnMsIHJlc3BvbnNlX2Rp
Y3QpCisgICAgICBlbHNlOgorICAgICAgICByYWlzZQorCisgIGRlZiBfR2V0QXV0aENvb2tpZShz
ZWxmLCBhdXRoX3Rva2VuKToKKyAgICAiIiJGZXRjaGVzIGF1dGhlbnRpY2F0aW9uIGNvb2tpZXMg
Zm9yIGFuIGF1dGhlbnRpY2F0aW9uIHRva2VuLgorCisgICAgQXJnczoKKyAgICAgIGF1dGhfdG9r
ZW46IFRoZSBhdXRoZW50aWNhdGlvbiB0b2tlbiByZXR1cm5lZCBieSBDbGllbnRMb2dpbi4KKwor
ICAgIFJhaXNlczoKKyAgICAgIEhUVFBFcnJvcjogSWYgdGhlcmUgd2FzIGFuIGVycm9yIGZldGNo
aW5nIHRoZSBhdXRoZW50aWNhdGlvbiBjb29raWVzLgorICAgICIiIgorICAgICMgVGhpcyBpcyBh
IGR1bW15IHZhbHVlIHRvIGFsbG93IHVzIHRvIGlkZW50aWZ5IHdoZW4gd2UncmUgc3VjY2Vzc2Z1
bC4KKyAgICBjb250aW51ZV9sb2NhdGlvbiA9ICJodHRwOi8vbG9jYWxob3N0LyIKKyAgICBhcmdz
ID0geyJjb250aW51ZSI6IGNvbnRpbnVlX2xvY2F0aW9uLCAiYXV0aCI6IGF1dGhfdG9rZW59Cisg
ICAgcmVxID0gc2VsZi5fQ3JlYXRlUmVxdWVzdCgiaHR0cDovLyVzL19haC9sb2dpbj8lcyIgJQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuaG9zdCwgdXJsbGliLnVybGVuY29k
ZShhcmdzKSkpCisgICAgdHJ5OgorICAgICAgcmVzcG9uc2UgPSBzZWxmLm9wZW5lci5vcGVuKHJl
cSkKKyAgICBleGNlcHQgdXJsbGliMi5IVFRQRXJyb3IsIGU6CisgICAgICByZXNwb25zZSA9IGUK
KyAgICBpZiAocmVzcG9uc2UuY29kZSAhPSAzMDIgb3IKKyAgICAgICAgcmVzcG9uc2UuaW5mbygp
WyJsb2NhdGlvbiJdICE9IGNvbnRpbnVlX2xvY2F0aW9uKToKKyAgICAgIHJhaXNlIHVybGxpYjIu
SFRUUEVycm9yKHJlcS5nZXRfZnVsbF91cmwoKSwgcmVzcG9uc2UuY29kZSwgcmVzcG9uc2UubXNn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuaGVhZGVycywgcmVzcG9u
c2UuZnApCisgICAgc2VsZi5hdXRoZW50aWNhdGVkID0gVHJ1ZQorCisgIGRlZiBfQXV0aGVudGlj
YXRlKHNlbGYpOgorICAgICIiIkF1dGhlbnRpY2F0ZXMgdGhlIHVzZXIuCisKKyAgICBUaGUgYXV0
aGVudGljYXRpb24gcHJvY2VzcyB3b3JrcyBhcyBmb2xsb3dzOgorICAgICAxKSBXZSBnZXQgYSB1
c2VybmFtZSBhbmQgcGFzc3dvcmQgZnJvbSB0aGUgdXNlcgorICAgICAyKSBXZSB1c2UgQ2xpZW50
TG9naW4gdG8gb2J0YWluIGFuIEFVVEggdG9rZW4gZm9yIHRoZSB1c2VyCisgICAgICAgIChzZWUg
aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9hcGlzL2FjY291bnRzL0F1dGhGb3JJbnN0YWxsZWRBcHBz
Lmh0bWwpLgorICAgICAzKSBXZSBwYXNzIHRoZSBhdXRoIHRva2VuIHRvIC9fYWgvbG9naW4gb24g
dGhlIHNlcnZlciB0byBvYnRhaW4gYW4KKyAgICAgICAgYXV0aGVudGljYXRpb24gY29va2llLiBJ
ZiBsb2dpbiB3YXMgc3VjY2Vzc2Z1bCwgaXQgdHJpZXMgdG8gcmVkaXJlY3QKKyAgICAgICAgdXMg
dG8gdGhlIFVSTCB3ZSBwcm92aWRlZC4KKworICAgIElmIHdlIGF0dGVtcHQgdG8gYWNjZXNzIHRo
ZSB1cGxvYWQgQVBJIHdpdGhvdXQgZmlyc3Qgb2J0YWluaW5nIGFuCisgICAgYXV0aGVudGljYXRp
b24gY29va2llLCBpdCByZXR1cm5zIGEgNDAxIHJlc3BvbnNlIGFuZCBkaXJlY3RzIHVzIHRvCisg
ICAgYXV0aGVudGljYXRlIG91cnNlbHZlcyB3aXRoIENsaWVudExvZ2luLgorICAgICIiIgorICAg
IGZvciBpIGluIHJhbmdlKDMpOgorICAgICAgY3JlZGVudGlhbHMgPSBzZWxmLmF1dGhfZnVuY3Rp
b24oKQorICAgICAgdHJ5OgorICAgICAgICBhdXRoX3Rva2VuID0gc2VsZi5fR2V0QXV0aFRva2Vu
KGNyZWRlbnRpYWxzWzBdLCBjcmVkZW50aWFsc1sxXSkKKyAgICAgIGV4Y2VwdCBDbGllbnRMb2dp
bkVycm9yLCBlOgorICAgICAgICBpZiBlLnJlYXNvbiA9PSAiQmFkQXV0aGVudGljYXRpb24iOgor
ICAgICAgICAgIHByaW50ID4+c3lzLnN0ZGVyciwgIkludmFsaWQgdXNlcm5hbWUgb3IgcGFzc3dv
cmQuIgorICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGlmIGUucmVhc29uID09ICJDYXB0Y2hh
UmVxdWlyZWQiOgorICAgICAgICAgIHByaW50ID4+c3lzLnN0ZGVyciwgKAorICAgICAgICAgICAg
ICAiUGxlYXNlIGdvIHRvXG4iCisgICAgICAgICAgICAgICJodHRwczovL3d3dy5nb29nbGUuY29t
L2FjY291bnRzL0Rpc3BsYXlVbmxvY2tDYXB0Y2hhXG4iCisgICAgICAgICAgICAgICJhbmQgdmVy
aWZ5IHlvdSBhcmUgYSBodW1hbi4gIFRoZW4gdHJ5IGFnYWluLiIpCisgICAgICAgICAgYnJlYWsK
KyAgICAgICAgaWYgZS5yZWFzb24gPT0gIk5vdFZlcmlmaWVkIjoKKyAgICAgICAgICBwcmludCA+
PnN5cy5zdGRlcnIsICJBY2NvdW50IG5vdCB2ZXJpZmllZC4iCisgICAgICAgICAgYnJlYWsKKyAg
ICAgICAgaWYgZS5yZWFzb24gPT0gIlRlcm1zTm90QWdyZWVkIjoKKyAgICAgICAgICBwcmludCA+
PnN5cy5zdGRlcnIsICJVc2VyIGhhcyBub3QgYWdyZWVkIHRvIFRPUy4iCisgICAgICAgICAgYnJl
YWsKKyAgICAgICAgaWYgZS5yZWFzb24gPT0gIkFjY291bnREZWxldGVkIjoKKyAgICAgICAgICBw
cmludCA+PnN5cy5zdGRlcnIsICJUaGUgdXNlciBhY2NvdW50IGhhcyBiZWVuIGRlbGV0ZWQuIgor
ICAgICAgICAgIGJyZWFrCisgICAgICAgIGlmIGUucmVhc29uID09ICJBY2NvdW50RGlzYWJsZWQi
OgorICAgICAgICAgIHByaW50ID4+c3lzLnN0ZGVyciwgIlRoZSB1c2VyIGFjY291bnQgaGFzIGJl
ZW4gZGlzYWJsZWQuIgorICAgICAgICAgIGJyZWFrCisgICAgICAgIGlmIGUucmVhc29uID09ICJT
ZXJ2aWNlRGlzYWJsZWQiOgorICAgICAgICAgIHByaW50ID4+c3lzLnN0ZGVyciwgKCJUaGUgdXNl
cidzIGFjY2VzcyB0byB0aGUgc2VydmljZSBoYXMgYmVlbiAiCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImRpc2FibGVkLiIpCisgICAgICAgICAgYnJlYWsKKyAgICAgICAgaWYgZS5y
ZWFzb24gPT0gIlNlcnZpY2VVbmF2YWlsYWJsZSI6CisgICAgICAgICAgcHJpbnQgPj5zeXMuc3Rk
ZXJyLCAiVGhlIHNlcnZpY2UgaXMgbm90IGF2YWlsYWJsZTsgdHJ5IGFnYWluIGxhdGVyLiIKKyAg
ICAgICAgICBicmVhaworICAgICAgICByYWlzZQorICAgICAgc2VsZi5fR2V0QXV0aENvb2tpZShh
dXRoX3Rva2VuKQorICAgICAgcmV0dXJuCisKKyAgZGVmIFNlbmQoc2VsZiwgcmVxdWVzdF9wYXRo
LCBwYXlsb2FkPU5vbmUsCisgICAgICAgICAgIGNvbnRlbnRfdHlwZT0iYXBwbGljYXRpb24vb2N0
ZXQtc3RyZWFtIiwKKyAgICAgICAgICAgdGltZW91dD1Ob25lLAorICAgICAgICAgICAqKmt3YXJn
cyk6CisgICAgIiIiU2VuZHMgYW4gUlBDIGFuZCByZXR1cm5zIHRoZSByZXNwb25zZS4KKworICAg
IEFyZ3M6CisgICAgICByZXF1ZXN0X3BhdGg6IFRoZSBwYXRoIHRvIHNlbmQgdGhlIHJlcXVlc3Qg
dG8sIGVnIC9hcGkvYXBwdmVyc2lvbi9jcmVhdGUuCisgICAgICBwYXlsb2FkOiBUaGUgYm9keSBv
ZiB0aGUgcmVxdWVzdCwgb3IgTm9uZSB0byBzZW5kIGFuIGVtcHR5IHJlcXVlc3QuCisgICAgICBj
b250ZW50X3R5cGU6IFRoZSBDb250ZW50LVR5cGUgaGVhZGVyIHRvIHVzZS4KKyAgICAgIHRpbWVv
dXQ6IHRpbWVvdXQgaW4gc2Vjb25kczsgZGVmYXVsdCBOb25lIGkuZS4gbm8gdGltZW91dC4KKyAg
ICAgICAgKE5vdGU6IGZvciBsYXJnZSByZXF1ZXN0cyBvbiBPUyBYLCB0aGUgdGltZW91dCBkb2Vz
bid0IHdvcmsgcmlnaHQuKQorICAgICAga3dhcmdzOiBBbnkga2V5d29yZCBhcmd1bWVudHMgYXJl
IGNvbnZlcnRlZCBpbnRvIHF1ZXJ5IHN0cmluZyBwYXJhbWV0ZXJzLgorCisgICAgUmV0dXJuczoK
KyAgICAgIFRoZSByZXNwb25zZSBib2R5LCBhcyBhIHN0cmluZy4KKyAgICAiIiIKKyAgICAjIFRP
RE86IERvbid0IHJlcXVpcmUgYXV0aGVudGljYXRpb24uICBMZXQgdGhlIHNlcnZlciBzYXkKKyAg
ICAjIHdoZXRoZXIgaXQgaXMgbmVjZXNzYXJ5LgorICAgIGlmIG5vdCBzZWxmLmF1dGhlbnRpY2F0
ZWQ6CisgICAgICBzZWxmLl9BdXRoZW50aWNhdGUoKQorCisgICAgb2xkX3RpbWVvdXQgPSBzb2Nr
ZXQuZ2V0ZGVmYXVsdHRpbWVvdXQoKQorICAgIHNvY2tldC5zZXRkZWZhdWx0dGltZW91dCh0aW1l
b3V0KQorICAgIHRyeToKKyAgICAgIHRyaWVzID0gMAorICAgICAgd2hpbGUgVHJ1ZToKKyAgICAg
ICAgdHJpZXMgKz0gMQorICAgICAgICBhcmdzID0gZGljdChrd2FyZ3MpCisgICAgICAgIHVybCA9
ICJodHRwOi8vJXMlcyIgJSAoc2VsZi5ob3N0LCByZXF1ZXN0X3BhdGgpCisgICAgICAgIGlmIGFy
Z3M6CisgICAgICAgICAgdXJsICs9ICI/IiArIHVybGxpYi51cmxlbmNvZGUoYXJncykKKyAgICAg
ICAgcmVxID0gc2VsZi5fQ3JlYXRlUmVxdWVzdCh1cmw9dXJsLCBkYXRhPXBheWxvYWQpCisgICAg
ICAgIHJlcS5hZGRfaGVhZGVyKCJDb250ZW50LVR5cGUiLCBjb250ZW50X3R5cGUpCisgICAgICAg
IHRyeToKKyAgICAgICAgICBmID0gc2VsZi5vcGVuZXIub3BlbihyZXEpCisgICAgICAgICAgcmVz
cG9uc2UgPSBmLnJlYWQoKQorICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICAgIHJldHVybiBy
ZXNwb25zZQorICAgICAgICBleGNlcHQgdXJsbGliMi5IVFRQRXJyb3IsIGU6CisgICAgICAgICAg
aWYgdHJpZXMgPiAzOgorICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICBlbGlmIGUuY29kZSA9
PSA0MDE6CisgICAgICAgICAgICBzZWxmLl9BdXRoZW50aWNhdGUoKQorIyMgICAgICAgICAgIGVs
aWYgZS5jb2RlID49IDUwMCBhbmQgZS5jb2RlIDwgNjAwOgorIyMgICAgICAgICAgICAgIyBTZXJ2
ZXIgRXJyb3IgLSB0cnkgYWdhaW4uCisjIyAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAg
IGVsc2U6CisgICAgICAgICAgICByYWlzZQorICAgIGZpbmFsbHk6CisgICAgICBzb2NrZXQuc2V0
ZGVmYXVsdHRpbWVvdXQob2xkX3RpbWVvdXQpCisKKworY2xhc3MgSHR0cFJwY1NlcnZlcihBYnN0
cmFjdFJwY1NlcnZlcik6CisgICIiIlByb3ZpZGVzIGEgc2ltcGxpZmllZCBSUEMtc3R5bGUgaW50
ZXJmYWNlIGZvciBIVFRQIHJlcXVlc3RzLiIiIgorCisgIGRlZiBfQXV0aGVudGljYXRlKHNlbGYp
OgorICAgICIiIlNhdmUgdGhlIGNvb2tpZSBqYXIgYWZ0ZXIgYXV0aGVudGljYXRpb24uIiIiCisg
ICAgc3VwZXIoSHR0cFJwY1NlcnZlciwgc2VsZikuX0F1dGhlbnRpY2F0ZSgpCisgICAgaWYgc2Vs
Zi5zYXZlX2Nvb2tpZXM6CisgICAgICBTdGF0dXNVcGRhdGUoIlNhdmluZyBhdXRoZW50aWNhdGlv
biBjb29raWVzIHRvICVzIiAlIHNlbGYuY29va2llX2ZpbGUpCisgICAgICBzZWxmLmNvb2tpZV9q
YXIuc2F2ZSgpCisKKyAgZGVmIF9HZXRPcGVuZXIoc2VsZik6CisgICAgIiIiUmV0dXJucyBhbiBP
cGVuZXJEaXJlY3RvciB0aGF0IHN1cHBvcnRzIGNvb2tpZXMgYW5kIGlnbm9yZXMgcmVkaXJlY3Rz
LgorCisgICAgUmV0dXJuczoKKyAgICAgIEEgdXJsbGliMi5PcGVuZXJEaXJlY3RvciBvYmplY3Qu
CisgICAgIiIiCisgICAgb3BlbmVyID0gdXJsbGliMi5PcGVuZXJEaXJlY3RvcigpCisgICAgb3Bl
bmVyLmFkZF9oYW5kbGVyKHVybGxpYjIuUHJveHlIYW5kbGVyKCkpCisgICAgb3BlbmVyLmFkZF9o
YW5kbGVyKHVybGxpYjIuVW5rbm93bkhhbmRsZXIoKSkKKyAgICBvcGVuZXIuYWRkX2hhbmRsZXIo
dXJsbGliMi5IVFRQSGFuZGxlcigpKQorICAgIG9wZW5lci5hZGRfaGFuZGxlcih1cmxsaWIyLkhU
VFBEZWZhdWx0RXJyb3JIYW5kbGVyKCkpCisgICAgb3BlbmVyLmFkZF9oYW5kbGVyKHVybGxpYjIu
SFRUUFNIYW5kbGVyKCkpCisgICAgb3BlbmVyLmFkZF9oYW5kbGVyKHVybGxpYjIuSFRUUEVycm9y
UHJvY2Vzc29yKCkpCisgICAgaWYgc2VsZi5zYXZlX2Nvb2tpZXM6CisgICAgICBzZWxmLmNvb2tp
ZV9maWxlID0gb3MucGF0aC5leHBhbmR1c2VyKCJ+Ly5jb2RlcmV2aWV3X3VwbG9hZF9jb29raWVz
IikKKyAgICAgIHNlbGYuY29va2llX2phciA9IGNvb2tpZWxpYi5Nb3ppbGxhQ29va2llSmFyKHNl
bGYuY29va2llX2ZpbGUpCisgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzZWxmLmNvb2tpZV9maWxl
KToKKyAgICAgICAgdHJ5OgorICAgICAgICAgIHNlbGYuY29va2llX2phci5sb2FkKCkKKyAgICAg
ICAgICBzZWxmLmF1dGhlbnRpY2F0ZWQgPSBUcnVlCisgICAgICAgICAgU3RhdHVzVXBkYXRlKCJM
b2FkZWQgYXV0aGVudGljYXRpb24gY29va2llcyBmcm9tICVzIiAlCisgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYuY29va2llX2ZpbGUpCisgICAgICAgIGV4Y2VwdCAoY29va2llbGliLkxvYWRF
cnJvciwgSU9FcnJvcik6CisgICAgICAgICAgIyBGYWlsZWQgdG8gbG9hZCBjb29raWVzIC0ganVz
dCBpZ25vcmUgdGhlbS4KKyAgICAgICAgICBwYXNzCisgICAgICBlbHNlOgorICAgICAgICAjIENy
ZWF0ZSBhbiBlbXB0eSBjb29raWUgZmlsZSB3aXRoIG1vZGUgNjAwCisgICAgICAgIGZkID0gb3Mu
b3BlbihzZWxmLmNvb2tpZV9maWxlLCBvcy5PX0NSRUFULCAwNjAwKQorICAgICAgICBvcy5jbG9z
ZShmZCkKKyAgICAgICMgQWx3YXlzIGNobW9kIHRoZSBjb29raWUgZmlsZQorICAgICAgb3MuY2ht
b2Qoc2VsZi5jb29raWVfZmlsZSwgMDYwMCkKKyAgICBlbHNlOgorICAgICAgIyBEb24ndCBzYXZl
IGNvb2tpZXMgYWNyb3NzIHJ1bnMgb2YgdXBkYXRlLnB5LgorICAgICAgc2VsZi5jb29raWVfamFy
ID0gY29va2llbGliLkNvb2tpZUphcigpCisgICAgb3BlbmVyLmFkZF9oYW5kbGVyKHVybGxpYjIu
SFRUUENvb2tpZVByb2Nlc3NvcihzZWxmLmNvb2tpZV9qYXIpKQorICAgIHJldHVybiBvcGVuZXIK
KworCitwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIodXNhZ2U9IiVwcm9nIFtvcHRpb25z
XSBbLS0gZGlmZl9vcHRpb25zXSIpCitwYXJzZXIuYWRkX29wdGlvbigiLXkiLCAiLS1hc3N1bWVf
eWVzIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKKyAgICAgICAgICAgICAgICAgIGRlc3Q9ImFzc3Vt
ZV95ZXMiLCBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgaGVscD0iQXNzdW1lIHRo
YXQgdGhlIGFuc3dlciB0byB5ZXMvbm8gcXVlc3Rpb25zIGlzICd5ZXMnLiIpCisjIExvZ2dpbmcK
K2dyb3VwID0gcGFyc2VyLmFkZF9vcHRpb25fZ3JvdXAoIkxvZ2dpbmcgb3B0aW9ucyIpCitncm91
cC5hZGRfb3B0aW9uKCItcSIsICItLXF1aWV0IiwgYWN0aW9uPSJzdG9yZV9jb25zdCIsIGNvbnN0
PTAsCisgICAgICAgICAgICAgICAgIGRlc3Q9InZlcmJvc2UiLCBoZWxwPSJQcmludCBlcnJvcnMg
b25seS4iKQorZ3JvdXAuYWRkX29wdGlvbigiLXYiLCAiLS12ZXJib3NlIiwgYWN0aW9uPSJzdG9y
ZV9jb25zdCIsIGNvbnN0PTIsCisgICAgICAgICAgICAgICAgIGRlc3Q9InZlcmJvc2UiLCBkZWZh
dWx0PTEsCisgICAgICAgICAgICAgICAgIGhlbHA9IlByaW50IGluZm8gbGV2ZWwgbG9ncyAoZGVm
YXVsdCkuIikKK2dyb3VwLmFkZF9vcHRpb24oIi0tbm9pc3kiLCBhY3Rpb249InN0b3JlX2NvbnN0
IiwgY29uc3Q9MywKKyAgICAgICAgICAgICAgICAgZGVzdD0idmVyYm9zZSIsIGhlbHA9IlByaW50
IGFsbCBsb2dzLiIpCisjIFJldmlldyBzZXJ2ZXIKK2dyb3VwID0gcGFyc2VyLmFkZF9vcHRpb25f
Z3JvdXAoIlJldmlldyBzZXJ2ZXIgb3B0aW9ucyIpCitncm91cC5hZGRfb3B0aW9uKCItcyIsICIt
LXNlcnZlciIsIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJzZXJ2ZXIiLAorICAgICAgICAgICAgICAg
ICBkZWZhdWx0PSJjb2RlcmV2aWV3LmFwcHNwb3QuY29tIiwKKyAgICAgICAgICAgICAgICAgbWV0
YXZhcj0iU0VSVkVSIiwKKyAgICAgICAgICAgICAgICAgaGVscD0oIlRoZSBzZXJ2ZXIgdG8gdXBs
b2FkIHRvLiBUaGUgZm9ybWF0IGlzIGhvc3RbOnBvcnRdLiAiCisgICAgICAgICAgICAgICAgICAg
ICAgICJEZWZhdWx0cyB0byAnY29kZXJldmlldy5hcHBzcG90LmNvbScuIikpCitncm91cC5hZGRf
b3B0aW9uKCItZSIsICItLWVtYWlsIiwgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9ImVtYWlsIiwKKyAg
ICAgICAgICAgICAgICAgbWV0YXZhcj0iRU1BSUwiLCBkZWZhdWx0PU5vbmUsCisgICAgICAgICAg
ICAgICAgIGhlbHA9IlRoZSB1c2VybmFtZSB0byB1c2UuIFdpbGwgcHJvbXB0IGlmIG9taXR0ZWQu
IikKK2dyb3VwLmFkZF9vcHRpb24oIi1IIiwgIi0taG9zdCIsIGFjdGlvbj0ic3RvcmUiLCBkZXN0
PSJob3N0IiwKKyAgICAgICAgICAgICAgICAgbWV0YXZhcj0iSE9TVCIsIGRlZmF1bHQ9Tm9uZSwK
KyAgICAgICAgICAgICAgICAgaGVscD0iT3ZlcnJpZGVzIHRoZSBIb3N0IGhlYWRlciBzZW50IHdp
dGggYWxsIFJQQ3MuIikKK2dyb3VwLmFkZF9vcHRpb24oIi0tbm9fY29va2llcyIsIGFjdGlvbj0i
c3RvcmVfZmFsc2UiLAorICAgICAgICAgICAgICAgICBkZXN0PSJzYXZlX2Nvb2tpZXMiLCBkZWZh
dWx0PVRydWUsCisgICAgICAgICAgICAgICAgIGhlbHA9IkRvIG5vdCBzYXZlIGF1dGhlbnRpY2F0
aW9uIGNvb2tpZXMgdG8gbG9jYWwgZGlzay4iKQorIyBJc3N1ZQorZ3JvdXAgPSBwYXJzZXIuYWRk
X29wdGlvbl9ncm91cCgiSXNzdWUgb3B0aW9ucyIpCitncm91cC5hZGRfb3B0aW9uKCItZCIsICIt
LWRlc2NyaXB0aW9uIiwgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9ImRlc2NyaXB0aW9uIiwKKyAgICAg
ICAgICAgICAgICAgbWV0YXZhcj0iREVTQ1JJUFRJT04iLCBkZWZhdWx0PU5vbmUsCisgICAgICAg
ICAgICAgICAgIGhlbHA9Ik9wdGlvbmFsIGRlc2NyaXB0aW9uIHdoZW4gY3JlYXRpbmcgYW4gaXNz
dWUuIikKK2dyb3VwLmFkZF9vcHRpb24oIi1mIiwgIi0tZGVzY3JpcHRpb25fZmlsZSIsIGFjdGlv
bj0ic3RvcmUiLAorICAgICAgICAgICAgICAgICBkZXN0PSJkZXNjcmlwdGlvbl9maWxlIiwgbWV0
YXZhcj0iREVTQ1JJUFRJT05fRklMRSIsCisgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwK
KyAgICAgICAgICAgICAgICAgaGVscD0iT3B0aW9uYWwgcGF0aCBvZiBhIGZpbGUgdGhhdCBjb250
YWlucyAiCisgICAgICAgICAgICAgICAgICAgICAgInRoZSBkZXNjcmlwdGlvbiB3aGVuIGNyZWF0
aW5nIGFuIGlzc3VlLiIpCitncm91cC5hZGRfb3B0aW9uKCItciIsICItLXJldmlld2VycyIsIGFj
dGlvbj0ic3RvcmUiLCBkZXN0PSJyZXZpZXdlcnMiLAorICAgICAgICAgICAgICAgICBtZXRhdmFy
PSJSRVZJRVdFUlMiLCBkZWZhdWx0PU5vbmUsCisgICAgICAgICAgICAgICAgIGhlbHA9IkFkZCBy
ZXZpZXdlcnMgKGNvbW1hIHNlcGFyYXRlZCBlbWFpbCBhZGRyZXNzZXMpLiIpCitncm91cC5hZGRf
b3B0aW9uKCItLWNjIiwgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9ImNjIiwKKyAgICAgICAgICAgICAg
ICAgbWV0YXZhcj0iQ0MiLCBkZWZhdWx0PU5vbmUsCisgICAgICAgICAgICAgICAgIGhlbHA9IkFk
ZCBDQyAoY29tbWEgc2VwYXJhdGVkIGVtYWlsIGFkZHJlc3NlcykuIikKKyMgVXBsb2FkIG9wdGlv
bnMKK2dyb3VwID0gcGFyc2VyLmFkZF9vcHRpb25fZ3JvdXAoIlBhdGNoIG9wdGlvbnMiKQorZ3Jv
dXAuYWRkX29wdGlvbigiLW0iLCAiLS1tZXNzYWdlIiwgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9Im1l
c3NhZ2UiLAorICAgICAgICAgICAgICAgICBtZXRhdmFyPSJNRVNTQUdFIiwgZGVmYXVsdD1Ob25l
LAorICAgICAgICAgICAgICAgICBoZWxwPSJBIG1lc3NhZ2UgdG8gaWRlbnRpZnkgdGhlIHBhdGNo
LiAiCisgICAgICAgICAgICAgICAgICAgICAgIldpbGwgcHJvbXB0IGlmIG9taXR0ZWQuIikKK2dy
b3VwLmFkZF9vcHRpb24oIi1pIiwgIi0taXNzdWUiLCB0eXBlPSJpbnQiLCBhY3Rpb249InN0b3Jl
IiwKKyAgICAgICAgICAgICAgICAgbWV0YXZhcj0iSVNTVUUiLCBkZWZhdWx0PU5vbmUsCisgICAg
ICAgICAgICAgICAgIGhlbHA9Iklzc3VlIG51bWJlciB0byB3aGljaCB0byBhZGQuIERlZmF1bHRz
IHRvIG5ldyBpc3N1ZS4iKQorZ3JvdXAuYWRkX29wdGlvbigiLS1kb3dubG9hZF9iYXNlIiwgYWN0
aW9uPSJzdG9yZV90cnVlIiwKKyAgICAgICAgICAgICAgICAgZGVzdD0iZG93bmxvYWRfYmFzZSIs
IGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgIGhlbHA9IkJhc2UgZmlsZXMgd2lsbCBi
ZSBkb3dubG9hZGVkIGJ5IHRoZSBzZXJ2ZXIgIgorICAgICAgICAgICAgICAgICAiKHNpZGUtYnkt
c2lkZSBkaWZmcyBtYXkgbm90IHdvcmsgb24gZmlsZXMgd2l0aCBDUnMpLiIpCitncm91cC5hZGRf
b3B0aW9uKCItLXJldiIsIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJyZXZpc2lvbiIsCisgICAgICAg
ICAgICAgICAgIG1ldGF2YXI9IlJFViIsIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAg
aGVscD0iQnJhbmNoL3RyZWUvcmV2aXNpb24gdG8gZGlmZiBhZ2FpbnN0ICh1c2VkIGJ5IERWQ1Mp
LiIpCitncm91cC5hZGRfb3B0aW9uKCItLXNlbmRfbWFpbCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIs
CisgICAgICAgICAgICAgICAgIGRlc3Q9InNlbmRfbWFpbCIsIGRlZmF1bHQ9RmFsc2UsCisgICAg
ICAgICAgICAgICAgIGhlbHA9IlNlbmQgbm90aWZpY2F0aW9uIGVtYWlsIHRvIHJldmlld2Vycy4i
KQorCisKK2RlZiBHZXRScGNTZXJ2ZXIob3B0aW9ucyk6CisgICIiIlJldHVybnMgYW4gaW5zdGFu
Y2Ugb2YgYW4gQWJzdHJhY3RScGNTZXJ2ZXIuCisKKyAgUmV0dXJuczoKKyAgICBBIG5ldyBBYnN0
cmFjdFJwY1NlcnZlciwgb24gd2hpY2ggUlBDIGNhbGxzIGNhbiBiZSBtYWRlLgorICAiIiIKKwor
ICBycGNfc2VydmVyX2NsYXNzID0gSHR0cFJwY1NlcnZlcgorCisgIGRlZiBHZXRVc2VyQ3JlZGVu
dGlhbHMoKToKKyAgICAiIiJQcm9tcHRzIHRoZSB1c2VyIGZvciBhIHVzZXJuYW1lIGFuZCBwYXNz
d29yZC4iIiIKKyAgICBlbWFpbCA9IG9wdGlvbnMuZW1haWwKKyAgICBpZiBlbWFpbCBpcyBOb25l
OgorICAgICAgZW1haWwgPSBHZXRFbWFpbCgiRW1haWwgKGxvZ2luIGZvciB1cGxvYWRpbmcgdG8g
JXMpIiAlIG9wdGlvbnMuc2VydmVyKQorICAgIHBhc3N3b3JkID0gZ2V0cGFzcy5nZXRwYXNzKCJQ
YXNzd29yZCBmb3IgJXM6ICIgJSBlbWFpbCkKKyAgICByZXR1cm4gKGVtYWlsLCBwYXNzd29yZCkK
KworICAjIElmIHRoaXMgaXMgdGhlIGRldl9hcHBzZXJ2ZXIsIHVzZSBmYWtlIGF1dGhlbnRpY2F0
aW9uLgorICBob3N0ID0gKG9wdGlvbnMuaG9zdCBvciBvcHRpb25zLnNlcnZlcikubG93ZXIoKQor
ICBpZiBob3N0ID09ICJsb2NhbGhvc3QiIG9yIGhvc3Quc3RhcnRzd2l0aCgibG9jYWxob3N0OiIp
OgorICAgIGVtYWlsID0gb3B0aW9ucy5lbWFpbAorICAgIGlmIGVtYWlsIGlzIE5vbmU6CisgICAg
ICBlbWFpbCA9ICJ0ZXN0QGV4YW1wbGUuY29tIgorICAgICAgbG9nZ2luZy5pbmZvKCJVc2luZyBk
ZWJ1ZyB1c2VyICVzLiAgT3ZlcnJpZGUgd2l0aCAtLWVtYWlsIiAlIGVtYWlsKQorICAgIHNlcnZl
ciA9IHJwY19zZXJ2ZXJfY2xhc3MoCisgICAgICAgIG9wdGlvbnMuc2VydmVyLAorICAgICAgICBs
YW1iZGE6IChlbWFpbCwgInBhc3N3b3JkIiksCisgICAgICAgIGhvc3Rfb3ZlcnJpZGU9b3B0aW9u
cy5ob3N0LAorICAgICAgICBleHRyYV9oZWFkZXJzPXsiQ29va2llIjoKKyAgICAgICAgICAgICAg
ICAgICAgICAgJ2Rldl9hcHBzZXJ2ZXJfbG9naW49IiVzOkZhbHNlIicgJSBlbWFpbH0sCisgICAg
ICAgIHNhdmVfY29va2llcz1vcHRpb25zLnNhdmVfY29va2llcykKKyAgICAjIERvbid0IHRyeSB0
byB0YWxrIHRvIENsaWVudExvZ2luLgorICAgIHNlcnZlci5hdXRoZW50aWNhdGVkID0gVHJ1ZQor
ICAgIHJldHVybiBzZXJ2ZXIKKworICByZXR1cm4gcnBjX3NlcnZlcl9jbGFzcyhvcHRpb25zLnNl
cnZlciwgR2V0VXNlckNyZWRlbnRpYWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBob3N0
X292ZXJyaWRlPW9wdGlvbnMuaG9zdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZV9j
b29raWVzPW9wdGlvbnMuc2F2ZV9jb29raWVzKQorCisKK2RlZiBFbmNvZGVNdWx0aXBhcnRGb3Jt
RGF0YShmaWVsZHMsIGZpbGVzKToKKyAgIiIiRW5jb2RlIGZvcm0gZmllbGRzIGZvciBtdWx0aXBh
cnQvZm9ybS1kYXRhLgorCisgIEFyZ3M6CisgICAgZmllbGRzOiBBIHNlcXVlbmNlIG9mIChuYW1l
LCB2YWx1ZSkgZWxlbWVudHMgZm9yIHJlZ3VsYXIgZm9ybSBmaWVsZHMuCisgICAgZmlsZXM6IEEg
c2VxdWVuY2Ugb2YgKG5hbWUsIGZpbGVuYW1lLCB2YWx1ZSkgZWxlbWVudHMgZm9yIGRhdGEgdG8g
YmUKKyAgICAgICAgICAgdXBsb2FkZWQgYXMgZmlsZXMuCisgIFJldHVybnM6CisgICAgKGNvbnRl
bnRfdHlwZSwgYm9keSkgcmVhZHkgZm9yIGh0dHBsaWIuSFRUUCBpbnN0YW5jZS4KKworICBTb3Vy
Y2U6CisgICAgaHR0cDovL2FzcG4uYWN0aXZlc3RhdGUuY29tL0FTUE4vQ29va2Jvb2svUHl0aG9u
L1JlY2lwZS8xNDYzMDYKKyAgIiIiCisgIEJPVU5EQVJZID0gJy1NLUEtRy1JLUMtLS1CLU8tVS1O
LUQtQS1SLVktJworICBDUkxGID0gJ1xyXG4nCisgIGxpbmVzID0gW10KKyAgZm9yIChrZXksIHZh
bHVlKSBpbiBmaWVsZHM6CisgICAgbGluZXMuYXBwZW5kKCctLScgKyBCT1VOREFSWSkKKyAgICBs
aW5lcy5hcHBlbmQoJ0NvbnRlbnQtRGlzcG9zaXRpb246IGZvcm0tZGF0YTsgbmFtZT0iJXMiJyAl
IGtleSkKKyAgICBsaW5lcy5hcHBlbmQoJycpCisgICAgbGluZXMuYXBwZW5kKHZhbHVlKQorICBm
b3IgKGtleSwgZmlsZW5hbWUsIHZhbHVlKSBpbiBmaWxlczoKKyAgICBsaW5lcy5hcHBlbmQoJy0t
JyArIEJPVU5EQVJZKQorICAgIGxpbmVzLmFwcGVuZCgnQ29udGVudC1EaXNwb3NpdGlvbjogZm9y
bS1kYXRhOyBuYW1lPSIlcyI7IGZpbGVuYW1lPSIlcyInICUKKyAgICAgICAgICAgICAoa2V5LCBm
aWxlbmFtZSkpCisgICAgbGluZXMuYXBwZW5kKCdDb250ZW50LVR5cGU6ICVzJyAlIEdldENvbnRl
bnRUeXBlKGZpbGVuYW1lKSkKKyAgICBsaW5lcy5hcHBlbmQoJycpCisgICAgbGluZXMuYXBwZW5k
KHZhbHVlKQorICBsaW5lcy5hcHBlbmQoJy0tJyArIEJPVU5EQVJZICsgJy0tJykKKyAgbGluZXMu
YXBwZW5kKCcnKQorICBib2R5ID0gQ1JMRi5qb2luKGxpbmVzKQorICBjb250ZW50X3R5cGUgPSAn
bXVsdGlwYXJ0L2Zvcm0tZGF0YTsgYm91bmRhcnk9JXMnICUgQk9VTkRBUlkKKyAgcmV0dXJuIGNv
bnRlbnRfdHlwZSwgYm9keQorCisKK2RlZiBHZXRDb250ZW50VHlwZShmaWxlbmFtZSk6CisgICIi
IkhlbHBlciB0byBndWVzcyB0aGUgY29udGVudC10eXBlIGZyb20gdGhlIGZpbGVuYW1lLiIiIgor
ICByZXR1cm4gbWltZXR5cGVzLmd1ZXNzX3R5cGUoZmlsZW5hbWUpWzBdIG9yICdhcHBsaWNhdGlv
bi9vY3RldC1zdHJlYW0nCisKKworIyBVc2UgYSBzaGVsbCBmb3Igc3ViY29tbWFuZHMgb24gV2lu
ZG93cyB0byBnZXQgYSBQQVRIIHNlYXJjaC4KK3VzZV9zaGVsbCA9IHN5cy5wbGF0Zm9ybS5zdGFy
dHN3aXRoKCJ3aW4iKQorCitkZWYgUnVuU2hlbGxXaXRoUmV0dXJuQ29kZShjb21tYW5kLCBwcmlu
dF9vdXRwdXQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3
bGluZXM9VHJ1ZSk6CisgICIiIkV4ZWN1dGVzIGEgY29tbWFuZCBhbmQgcmV0dXJucyB0aGUgb3V0
cHV0IGZyb20gc3Rkb3V0IGFuZCB0aGUgcmV0dXJuIGNvZGUuCisKKyAgQXJnczoKKyAgICBjb21t
YW5kOiBDb21tYW5kIHRvIGV4ZWN1dGUuCisgICAgcHJpbnRfb3V0cHV0OiBJZiBUcnVlLCB0aGUg
b3V0cHV0IGlzIHByaW50ZWQgdG8gc3Rkb3V0LgorICAgICAgICAgICAgICAgICAgSWYgRmFsc2Us
IGJvdGggc3Rkb3V0IGFuZCBzdGRlcnIgYXJlIGlnbm9yZWQuCisgICAgdW5pdmVyc2FsX25ld2xp
bmVzOiBVc2UgdW5pdmVyc2FsX25ld2xpbmVzIGZsYWcgKGRlZmF1bHQ6IFRydWUpLgorCisgIFJl
dHVybnM6CisgICAgVHVwbGUgKG91dHB1dCwgcmV0dXJuIGNvZGUpCisgICIiIgorICBsb2dnaW5n
LmluZm8oIlJ1bm5pbmcgJXMiLCBjb21tYW5kKQorICBwID0gc3VicHJvY2Vzcy5Qb3Blbihjb21t
YW5kLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFLAorICAg
ICAgICAgICAgICAgICAgICAgICBzaGVsbD11c2Vfc2hlbGwsIHVuaXZlcnNhbF9uZXdsaW5lcz11
bml2ZXJzYWxfbmV3bGluZXMpCisgIGlmIHByaW50X291dHB1dDoKKyAgICBvdXRwdXRfYXJyYXkg
PSBbXQorICAgIHdoaWxlIFRydWU6CisgICAgICBsaW5lID0gcC5zdGRvdXQucmVhZGxpbmUoKQor
ICAgICAgaWYgbm90IGxpbmU6CisgICAgICAgIGJyZWFrCisgICAgICBwcmludCBsaW5lLnN0cmlw
KCJcbiIpCisgICAgICBvdXRwdXRfYXJyYXkuYXBwZW5kKGxpbmUpCisgICAgb3V0cHV0ID0gIiIu
am9pbihvdXRwdXRfYXJyYXkpCisgIGVsc2U6CisgICAgb3V0cHV0ID0gcC5zdGRvdXQucmVhZCgp
CisgIHAud2FpdCgpCisgIGVycm91dCA9IHAuc3RkZXJyLnJlYWQoKQorICBpZiBwcmludF9vdXRw
dXQgYW5kIGVycm91dDoKKyAgICBwcmludCA+PnN5cy5zdGRlcnIsIGVycm91dAorICBwLnN0ZG91
dC5jbG9zZSgpCisgIHAuc3RkZXJyLmNsb3NlKCkKKyAgcmV0dXJuIG91dHB1dCwgcC5yZXR1cm5j
b2RlCisKKworZGVmIFJ1blNoZWxsKGNvbW1hbmQsIHNpbGVudF9vaz1GYWxzZSwgdW5pdmVyc2Fs
X25ld2xpbmVzPVRydWUsCisgICAgICAgICAgICAgcHJpbnRfb3V0cHV0PUZhbHNlKToKKyAgZGF0
YSwgcmV0Y29kZSA9IFJ1blNoZWxsV2l0aFJldHVybkNvZGUoY29tbWFuZCwgcHJpbnRfb3V0cHV0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3
bGluZXMpCisgIGlmIHJldGNvZGU6CisgICAgRXJyb3JFeGl0KCJHb3QgZXJyb3Igc3RhdHVzIGZy
b20gJXM6XG4lcyIgJSAoY29tbWFuZCwgZGF0YSkpCisgIGlmIG5vdCBzaWxlbnRfb2sgYW5kIG5v
dCBkYXRhOgorICAgIEVycm9yRXhpdCgiTm8gb3V0cHV0IGZyb20gJXMiICUgY29tbWFuZCkKKyAg
cmV0dXJuIGRhdGEKKworCitjbGFzcyBWZXJzaW9uQ29udHJvbFN5c3RlbShvYmplY3QpOgorICAi
IiJBYnN0cmFjdCBiYXNlIGNsYXNzIHByb3ZpZGluZyBhbiBpbnRlcmZhY2UgdG8gdGhlIFZDUy4i
IiIKKworICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucyk6CisgICAgIiIiQ29uc3RydWN0b3Iu
CisKKyAgICBBcmdzOgorICAgICAgb3B0aW9uczogQ29tbWFuZCBsaW5lIG9wdGlvbnMuCisgICAg
IiIiCisgICAgc2VsZi5vcHRpb25zID0gb3B0aW9ucworCisgIGRlZiBHZW5lcmF0ZURpZmYoc2Vs
ZiwgYXJncyk6CisgICAgIiIiUmV0dXJuIHRoZSBjdXJyZW50IGRpZmYgYXMgYSBzdHJpbmcuCisK
KyAgICBBcmdzOgorICAgICAgYXJnczogRXh0cmEgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIGRp
ZmYgY29tbWFuZC4KKyAgICAiIiIKKyAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKAorICAg
ICAgICAiYWJzdHJhY3QgbWV0aG9kIC0tIHN1YmNsYXNzICVzIG11c3Qgb3ZlcnJpZGUiICUgc2Vs
Zi5fX2NsYXNzX18pCisKKyAgZGVmIEdldFVua25vd25GaWxlcyhzZWxmKToKKyAgICAiIiJSZXR1
cm4gYSBsaXN0IG9mIGZpbGVzIHVua25vd24gdG8gdGhlIFZDUy4iIiIKKyAgICByYWlzZSBOb3RJ
bXBsZW1lbnRlZEVycm9yKAorICAgICAgICAiYWJzdHJhY3QgbWV0aG9kIC0tIHN1YmNsYXNzICVz
IG11c3Qgb3ZlcnJpZGUiICUgc2VsZi5fX2NsYXNzX18pCisKKyAgZGVmIENoZWNrRm9yVW5rbm93
bkZpbGVzKHNlbGYpOgorICAgICIiIlNob3cgYW4gImFyZSB5b3Ugc3VyZT8iIHByb21wdCBpZiB0
aGVyZSBhcmUgdW5rbm93biBmaWxlcy4iIiIKKyAgICB1bmtub3duX2ZpbGVzID0gc2VsZi5HZXRV
bmtub3duRmlsZXMoKQorICAgIGlmIHVua25vd25fZmlsZXM6CisgICAgICBwcmludCAiVGhlIGZv
bGxvd2luZyBmaWxlcyBhcmUgbm90IGFkZGVkIHRvIHZlcnNpb24gY29udHJvbDoiCisgICAgICBm
b3IgbGluZSBpbiB1bmtub3duX2ZpbGVzOgorICAgICAgICBwcmludCBsaW5lCisgICAgICBwcm9t
cHQgPSAiQXJlIHlvdSBzdXJlIHRvIGNvbnRpbnVlPyh5L04pICIKKyAgICAgIGFuc3dlciA9IHJh
d19pbnB1dChwcm9tcHQpLnN0cmlwKCkKKyAgICAgIGlmIGFuc3dlciAhPSAieSI6CisgICAgICAg
IEVycm9yRXhpdCgiVXNlciBhYm9ydGVkIikKKworICBkZWYgR2V0QmFzZUZpbGUoc2VsZiwgZmls
ZW5hbWUpOgorICAgICIiIkdldCB0aGUgY29udGVudCBvZiB0aGUgdXBzdHJlYW0gdmVyc2lvbiBv
ZiBhIGZpbGUuCisKKyAgICBSZXR1cm5zOgorICAgICAgQSB0dXBsZSAoYmFzZV9jb250ZW50LCBu
ZXdfY29udGVudCwgaXNfYmluYXJ5LCBzdGF0dXMpCisgICAgICAgIGJhc2VfY29udGVudDogVGhl
IGNvbnRlbnRzIG9mIHRoZSBiYXNlIGZpbGUuCisgICAgICAgIG5ld19jb250ZW50OiBGb3IgdGV4
dCBmaWxlcywgdGhpcyBpcyBlbXB0eS4gIEZvciBiaW5hcnkgZmlsZXMsIHRoaXMgaXMKKyAgICAg
ICAgICB0aGUgY29udGVudHMgb2YgdGhlIG5ldyBmaWxlLCBzaW5jZSB0aGUgZGlmZiBvdXRwdXQg
d29uJ3QgY29udGFpbgorICAgICAgICAgIGluZm9ybWF0aW9uIHRvIHJlY29uc3RydWN0IHRoZSBj
dXJyZW50IGZpbGUuCisgICAgICAgIGlzX2JpbmFyeTogVHJ1ZSBpZmYgdGhlIGZpbGUgaXMgYmlu
YXJ5LgorICAgICAgICBzdGF0dXM6IFRoZSBzdGF0dXMgb2YgdGhlIGZpbGUuCisgICAgIiIiCisK
KyAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKAorICAgICAgICAiYWJzdHJhY3QgbWV0aG9k
IC0tIHN1YmNsYXNzICVzIG11c3Qgb3ZlcnJpZGUiICUgc2VsZi5fX2NsYXNzX18pCisKKworICBk
ZWYgR2V0QmFzZUZpbGVzKHNlbGYsIGRpZmYpOgorICAgICIiIkhlbHBlciB0aGF0IGNhbGxzIEdl
dEJhc2UgZmlsZSBmb3IgZWFjaCBmaWxlIGluIHRoZSBwYXRjaC4KKworICAgIFJldHVybnM6Cisg
ICAgICBBIGRpY3Rpb25hcnkgdGhhdCBtYXBzIGZyb20gZmlsZW5hbWUgdG8gR2V0QmFzZUZpbGUn
cyB0dXBsZS4gIEZpbGVuYW1lcworICAgICAgYXJlIHJldHJpZXZlZCBiYXNlZCBvbiBsaW5lcyB0
aGF0IHN0YXJ0IHdpdGggIkluZGV4OiIgb3IKKyAgICAgICJQcm9wZXJ0eSBjaGFuZ2VzIG9uOiIu
CisgICAgIiIiCisgICAgZmlsZXMgPSB7fQorICAgIGZvciBsaW5lIGluIGRpZmYuc3BsaXRsaW5l
cyhUcnVlKToKKyAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnSW5kZXg6Jykgb3IgbGluZS5zdGFy
dHN3aXRoKCdQcm9wZXJ0eSBjaGFuZ2VzIG9uOicpOgorICAgICAgICB1bnVzZWQsIGZpbGVuYW1l
ID0gbGluZS5zcGxpdCgnOicsIDEpCisgICAgICAgICMgT24gV2luZG93cyBpZiBhIGZpbGUgaGFz
IHByb3BlcnR5IGNoYW5nZXMgaXRzIGZpbGVuYW1lIHVzZXMgJ1wnCisgICAgICAgICMgaW5zdGVh
ZCBvZiAnLycuCisgICAgICAgIGZpbGVuYW1lID0gZmlsZW5hbWUuc3RyaXAoKS5yZXBsYWNlKCdc
XCcsICcvJykKKyAgICAgICAgZmlsZXNbZmlsZW5hbWVdID0gc2VsZi5HZXRCYXNlRmlsZShmaWxl
bmFtZSkKKyAgICByZXR1cm4gZmlsZXMKKworCisgIGRlZiBVcGxvYWRCYXNlRmlsZXMoc2VsZiwg
aXNzdWUsIHJwY19zZXJ2ZXIsIHBhdGNoX2xpc3QsIHBhdGNoc2V0LCBvcHRpb25zLAorICAgICAg
ICAgICAgICAgICAgICAgIGZpbGVzKToKKyAgICAiIiJVcGxvYWRzIHRoZSBiYXNlIGZpbGVzIChh
bmQgaWYgbmVjZXNzYXJ5LCB0aGUgY3VycmVudCBvbmVzIGFzIHdlbGwpLiIiIgorCisgICAgZGVm
IFVwbG9hZEZpbGUoZmlsZW5hbWUsIGZpbGVfaWQsIGNvbnRlbnQsIGlzX2JpbmFyeSwgc3RhdHVz
LCBpc19iYXNlKToKKyAgICAgICIiIlVwbG9hZHMgYSBmaWxlIHRvIHRoZSBzZXJ2ZXIuIiIiCisg
ICAgICBmaWxlX3Rvb19sYXJnZSA9IEZhbHNlCisgICAgICBpZiBpc19iYXNlOgorICAgICAgICB0
eXBlID0gImJhc2UiCisgICAgICBlbHNlOgorICAgICAgICB0eXBlID0gImN1cnJlbnQiCisgICAg
ICBpZiBsZW4oY29udGVudCkgPiBNQVhfVVBMT0FEX1NJWkU6CisgICAgICAgIHByaW50ICgiTm90
IHVwbG9hZGluZyB0aGUgJXMgZmlsZSBmb3IgJXMgYmVjYXVzZSBpdCdzIHRvbyBsYXJnZS4iICUK
KyAgICAgICAgICAgICAgICh0eXBlLCBmaWxlbmFtZSkpCisgICAgICAgIGZpbGVfdG9vX2xhcmdl
ID0gVHJ1ZQorICAgICAgICBjb250ZW50ID0gIiIKKyAgICAgIGNoZWNrc3VtID0gbWQ1Lm5ldyhj
b250ZW50KS5oZXhkaWdlc3QoKQorICAgICAgaWYgb3B0aW9ucy52ZXJib3NlID4gMCBhbmQgbm90
IGZpbGVfdG9vX2xhcmdlOgorICAgICAgICBwcmludCAiVXBsb2FkaW5nICVzIGZpbGUgZm9yICVz
IiAlICh0eXBlLCBmaWxlbmFtZSkKKyAgICAgIHVybCA9ICIvJWQvdXBsb2FkX2NvbnRlbnQvJWQv
JWQiICUgKGludChpc3N1ZSksIGludChwYXRjaHNldCksIGZpbGVfaWQpCisgICAgICBmb3JtX2Zp
ZWxkcyA9IFsoImZpbGVuYW1lIiwgZmlsZW5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgKCJz
dGF0dXMiLCBzdGF0dXMpLAorICAgICAgICAgICAgICAgICAgICAgKCJjaGVja3N1bSIsIGNoZWNr
c3VtKSwKKyAgICAgICAgICAgICAgICAgICAgICgiaXNfYmluYXJ5Iiwgc3RyKGlzX2JpbmFyeSkp
LAorICAgICAgICAgICAgICAgICAgICAgKCJpc19jdXJyZW50Iiwgc3RyKG5vdCBpc19iYXNlKSks
CisgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgIGlmIGZpbGVfdG9vX2xhcmdlOgorICAgICAg
ICBmb3JtX2ZpZWxkcy5hcHBlbmQoKCJmaWxlX3Rvb19sYXJnZSIsICIxIikpCisgICAgICBpZiBv
cHRpb25zLmVtYWlsOgorICAgICAgICBmb3JtX2ZpZWxkcy5hcHBlbmQoKCJ1c2VyIiwgb3B0aW9u
cy5lbWFpbCkpCisgICAgICBjdHlwZSwgYm9keSA9IEVuY29kZU11bHRpcGFydEZvcm1EYXRhKGZv
cm1fZmllbGRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
KCJkYXRhIiwgZmlsZW5hbWUsIGNvbnRlbnQpXSkKKyAgICAgIHJlc3BvbnNlX2JvZHkgPSBycGNf
c2VydmVyLlNlbmQodXJsLCBib2R5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb250ZW50X3R5cGU9Y3R5cGUpCisgICAgICBpZiBub3QgcmVzcG9uc2VfYm9keS5zdGFy
dHN3aXRoKCJPSyIpOgorICAgICAgICBTdGF0dXNVcGRhdGUoIiAgLS0+ICVzIiAlIHJlc3BvbnNl
X2JvZHkpCisgICAgICAgIHN5cy5leGl0KDEpCisKKyAgICBwYXRjaGVzID0gZGljdCgpCisgICAg
W3BhdGNoZXMuc2V0ZGVmYXVsdCh2LCBrKSBmb3IgaywgdiBpbiBwYXRjaF9saXN0XQorICAgIGZv
ciBmaWxlbmFtZSBpbiBwYXRjaGVzLmtleXMoKToKKyAgICAgIGJhc2VfY29udGVudCwgbmV3X2Nv
bnRlbnQsIGlzX2JpbmFyeSwgc3RhdHVzID0gZmlsZXNbZmlsZW5hbWVdCisgICAgICBmaWxlX2lk
X3N0ciA9IHBhdGNoZXMuZ2V0KGZpbGVuYW1lKQorICAgICAgaWYgZmlsZV9pZF9zdHIuZmluZCgi
bm9iYXNlIikgIT0gLTE6CisgICAgICAgIGJhc2VfY29udGVudCA9IE5vbmUKKyAgICAgICAgZmls
ZV9pZF9zdHIgPSBmaWxlX2lkX3N0cltmaWxlX2lkX3N0ci5yZmluZCgiXyIpICsgMTpdCisgICAg
ICBmaWxlX2lkID0gaW50KGZpbGVfaWRfc3RyKQorICAgICAgaWYgYmFzZV9jb250ZW50ICE9IE5v
bmU6CisgICAgICAgIFVwbG9hZEZpbGUoZmlsZW5hbWUsIGZpbGVfaWQsIGJhc2VfY29udGVudCwg
aXNfYmluYXJ5LCBzdGF0dXMsIFRydWUpCisgICAgICBpZiBuZXdfY29udGVudCAhPSBOb25lOgor
ICAgICAgICBVcGxvYWRGaWxlKGZpbGVuYW1lLCBmaWxlX2lkLCBuZXdfY29udGVudCwgaXNfYmlu
YXJ5LCBzdGF0dXMsIEZhbHNlKQorCisgIGRlZiBJc0ltYWdlKHNlbGYsIGZpbGVuYW1lKToKKyAg
ICAiIiJSZXR1cm5zIHRydWUgaWYgdGhlIGZpbGVuYW1lIGhhcyBhbiBpbWFnZSBleHRlbnNpb24u
IiIiCisgICAgbWltZXR5cGUgPSAgbWltZXR5cGVzLmd1ZXNzX3R5cGUoZmlsZW5hbWUpWzBdCisg
ICAgaWYgbm90IG1pbWV0eXBlOgorICAgICAgcmV0dXJuIEZhbHNlCisgICAgcmV0dXJuIG1pbWV0
eXBlLnN0YXJ0c3dpdGgoImltYWdlLyIpCisKKworY2xhc3MgU3VidmVyc2lvblZDUyhWZXJzaW9u
Q29udHJvbFN5c3RlbSk6CisgICIiIkltcGxlbWVudGF0aW9uIG9mIHRoZSBWZXJzaW9uQ29udHJv
bFN5c3RlbSBpbnRlcmZhY2UgZm9yIFN1YnZlcnNpb24uIiIiCisKKyAgZGVmIF9faW5pdF9fKHNl
bGYsIG9wdGlvbnMpOgorICAgIHN1cGVyKFN1YnZlcnNpb25WQ1MsIHNlbGYpLl9faW5pdF9fKG9w
dGlvbnMpCisgICAgaWYgc2VsZi5vcHRpb25zLnJldmlzaW9uOgorICAgICAgbWF0Y2ggPSByZS5t
YXRjaChyIihcZCspKDooXGQrKSk/Iiwgc2VsZi5vcHRpb25zLnJldmlzaW9uKQorICAgICAgaWYg
bm90IG1hdGNoOgorICAgICAgICBFcnJvckV4aXQoIkludmFsaWQgU3VidmVyc2lvbiByZXZpc2lv
biAlcy4iICUgc2VsZi5vcHRpb25zLnJldmlzaW9uKQorICAgICAgc2VsZi5yZXZfc3RhcnQgPSBt
YXRjaC5ncm91cCgxKQorICAgICAgc2VsZi5yZXZfZW5kID0gbWF0Y2guZ3JvdXAoMykKKyAgICBl
bHNlOgorICAgICAgc2VsZi5yZXZfc3RhcnQgPSBzZWxmLnJldl9lbmQgPSBOb25lCisgICAgIyBD
YWNoZSBvdXRwdXQgZnJvbSAic3ZuIGxpc3QgLXIgUkVWTk8gZGlybmFtZSIuCisgICAgIyBLZXlz
OiBkaXJuYW1lLCBWYWx1ZXM6IDItdHVwbGUgKG91cHV0IGZvciBzdGFydCByZXYgYW5kIGVuZCBy
ZXYpLgorICAgIHNlbGYuc3ZubHNfY2FjaGUgPSB7fQorICAgICMgU1ZOIGJhc2UgVVJMIGlzIHJl
cXVpcmVkIHRvIGZldGNoIGZpbGVzIGRlbGV0ZWQgaW4gYW4gb2xkZXIgcmV2aXNpb24uCisgICAg
IyBSZXN1bHQgaXMgY2FjaGVkIHRvIG5vdCBndWVzcyBpdCBvdmVyIGFuZCBvdmVyIGFnYWluIGlu
IEdldEJhc2VGaWxlKCkuCisgICAgcmVxdWlyZWQgPSBzZWxmLm9wdGlvbnMuZG93bmxvYWRfYmFz
ZSBvciBzZWxmLm9wdGlvbnMucmV2aXNpb24gaXMgbm90IE5vbmUKKyAgICBzZWxmLnN2bl9iYXNl
ID0gc2VsZi5fR3Vlc3NCYXNlKHJlcXVpcmVkKQorCisgIGRlZiBHdWVzc0Jhc2Uoc2VsZiwgcmVx
dWlyZWQpOgorICAgICIiIldyYXBwZXIgZm9yIF9HdWVzc0Jhc2UuIiIiCisgICAgcmV0dXJuIHNl
bGYuc3ZuX2Jhc2UKKworICBkZWYgX0d1ZXNzQmFzZShzZWxmLCByZXF1aXJlZCk6CisgICAgIiIi
UmV0dXJucyB0aGUgU1ZOIGJhc2UgVVJMLgorCisgICAgQXJnczoKKyAgICAgIHJlcXVpcmVkOiBJ
ZiB0cnVlLCBleGl0cyBpZiB0aGUgdXJsIGNhbid0IGJlIGd1ZXNzZWQsIG90aGVyd2lzZSBOb25l
IGlzCisgICAgICAgIHJldHVybmVkLgorICAgICIiIgorICAgIGluZm8gPSBSdW5TaGVsbChbInN2
biIsICJpbmZvIl0pCisgICAgZm9yIGxpbmUgaW4gaW5mby5zcGxpdGxpbmVzKCk6CisgICAgICB3
b3JkcyA9IGxpbmUuc3BsaXQoKQorICAgICAgaWYgbGVuKHdvcmRzKSA9PSAyIGFuZCB3b3Jkc1sw
XSA9PSAiVVJMOiI6CisgICAgICAgIHVybCA9IHdvcmRzWzFdCisgICAgICAgIHNjaGVtZSwgbmV0
bG9jLCBwYXRoLCBwYXJhbXMsIHF1ZXJ5LCBmcmFnbWVudCA9IHVybHBhcnNlLnVybHBhcnNlKHVy
bCkKKyAgICAgICAgdXNlcm5hbWUsIG5ldGxvYyA9IHVybGxpYi5zcGxpdHVzZXIobmV0bG9jKQor
ICAgICAgICBpZiB1c2VybmFtZToKKyAgICAgICAgICBsb2dnaW5nLmluZm8oIlJlbW92ZWQgdXNl
cm5hbWUgZnJvbSBiYXNlIFVSTCIpCisgICAgICAgIGlmIG5ldGxvYy5lbmRzd2l0aCgic3ZuLnB5
dGhvbi5vcmciKToKKyAgICAgICAgICBpZiBuZXRsb2MgPT0gInN2bi5weXRob24ub3JnIjoKKyAg
ICAgICAgICAgIGlmIHBhdGguc3RhcnRzd2l0aCgiL3Byb2plY3RzLyIpOgorICAgICAgICAgICAg
ICBwYXRoID0gcGF0aFs5Ol0KKyAgICAgICAgICBlbGlmIG5ldGxvYyAhPSAicHl0aG9uZGV2QHN2
bi5weXRob24ub3JnIjoKKyAgICAgICAgICAgIEVycm9yRXhpdCgiVW5yZWNvZ25pemVkIFB5dGhv
biBVUkw6ICVzIiAlIHVybCkKKyAgICAgICAgICBiYXNlID0gImh0dHA6Ly9zdm4ucHl0aG9uLm9y
Zy92aWV3LypjaGVja291dColcy8iICUgcGF0aAorICAgICAgICAgIGxvZ2dpbmcuaW5mbygiR3Vl
c3NlZCBQeXRob24gYmFzZSA9ICVzIiwgYmFzZSkKKyAgICAgICAgZWxpZiBuZXRsb2MuZW5kc3dp
dGgoInN2bi5jb2xsYWIubmV0Iik6CisgICAgICAgICAgaWYgcGF0aC5zdGFydHN3aXRoKCIvcmVw
b3MvIik6CisgICAgICAgICAgICBwYXRoID0gcGF0aFs2Ol0KKyAgICAgICAgICBiYXNlID0gImh0
dHA6Ly9zdm4uY29sbGFiLm5ldC92aWV3dmMvKmNoZWNrb3V0KiVzLyIgJSBwYXRoCisgICAgICAg
ICAgbG9nZ2luZy5pbmZvKCJHdWVzc2VkIENvbGxhYk5ldCBiYXNlID0gJXMiLCBiYXNlKQorICAg
ICAgICBlbGlmIG5ldGxvYy5lbmRzd2l0aCgiLmdvb2dsZWNvZGUuY29tIik6CisgICAgICAgICAg
cGF0aCA9IHBhdGggKyAiLyIKKyAgICAgICAgICBiYXNlID0gdXJscGFyc2UudXJsdW5wYXJzZSgo
Imh0dHAiLCBuZXRsb2MsIHBhdGgsIHBhcmFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcXVlcnksIGZyYWdtZW50KSkKKyAgICAgICAgICBsb2dnaW5nLmluZm8oIkd1
ZXNzZWQgR29vZ2xlIENvZGUgYmFzZSA9ICVzIiwgYmFzZSkKKyAgICAgICAgZWxzZToKKyAgICAg
ICAgICBwYXRoID0gcGF0aCArICIvIgorICAgICAgICAgIGJhc2UgPSB1cmxwYXJzZS51cmx1bnBh
cnNlKChzY2hlbWUsIG5ldGxvYywgcGF0aCwgcGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBxdWVyeSwgZnJhZ21lbnQpKQorICAgICAgICAgIGxvZ2dpbmcuaW5m
bygiR3Vlc3NlZCBiYXNlID0gJXMiLCBiYXNlKQorICAgICAgICByZXR1cm4gYmFzZQorICAgIGlm
IHJlcXVpcmVkOgorICAgICAgRXJyb3JFeGl0KCJDYW4ndCBmaW5kIFVSTCBpbiBvdXRwdXQgZnJv
bSBzdm4gaW5mbyIpCisgICAgcmV0dXJuIE5vbmUKKworICBkZWYgR2VuZXJhdGVEaWZmKHNlbGYs
IGFyZ3MpOgorICAgIGNtZCA9IFsic3ZuIiwgImRpZmYiXQorICAgIGlmIHNlbGYub3B0aW9ucy5y
ZXZpc2lvbjoKKyAgICAgIGNtZCArPSBbIi1yIiwgc2VsZi5vcHRpb25zLnJldmlzaW9uXQorICAg
IGNtZC5leHRlbmQoYXJncykKKyAgICBkYXRhID0gUnVuU2hlbGwoY21kKQorICAgIGNvdW50ID0g
MAorICAgIGZvciBsaW5lIGluIGRhdGEuc3BsaXRsaW5lcygpOgorICAgICAgaWYgbGluZS5zdGFy
dHN3aXRoKCJJbmRleDoiKSBvciBsaW5lLnN0YXJ0c3dpdGgoIlByb3BlcnR5IGNoYW5nZXMgb246
Iik6CisgICAgICAgIGNvdW50ICs9IDEKKyAgICAgICAgbG9nZ2luZy5pbmZvKGxpbmUpCisgICAg
aWYgbm90IGNvdW50OgorICAgICAgRXJyb3JFeGl0KCJObyB2YWxpZCBwYXRjaGVzIGZvdW5kIGlu
IG91dHB1dCBmcm9tIHN2biBkaWZmIikKKyAgICByZXR1cm4gZGF0YQorCisgIGRlZiBfQ29sbGFw
c2VLZXl3b3JkcyhzZWxmLCBjb250ZW50LCBrZXl3b3JkX3N0cik6CisgICAgIiIiQ29sbGFwc2Vz
IFNWTiBrZXl3b3Jkcy4iIiIKKyAgICAjIHN2biBjYXQgdHJhbnNsYXRlcyBrZXl3b3JkcyBidXQg
c3ZuIGRpZmYgZG9lc24ndC4gQXMgYSByZXN1bHQgb2YgdGhpcworICAgICMgYmVoYXZpb3IgcGF0
Y2hpbmcuUGF0Y2hDaHVua3MoKSBmYWlscyB3aXRoIGEgY2h1bmsgbWlzbWF0Y2ggZXJyb3IuCisg
ICAgIyBUaGlzIHBhcnQgd2FzIG9yaWdpbmFsbHkgd3JpdHRlbiBieSB0aGUgUmV2aWV3IEJvYXJk
IGRldmVsb3BtZW50IHRlYW0KKyAgICAjIHdobyBoYWQgdGhlIHNhbWUgcHJvYmxlbSAoaHR0cDov
L3Jldmlld3MucmV2aWV3LWJvYXJkLm9yZy9yLzI3Ni8pLgorICAgICMgTWFwcGluZyBvZiBrZXl3
b3JkcyB0byBrbm93biBhbGlhc2VzCisgICAgc3ZuX2tleXdvcmRzID0geworICAgICAgIyBTdGFu
ZGFyZCBrZXl3b3JkcworICAgICAgJ0RhdGUnOiAgICAgICAgICAgICAgICBbJ0RhdGUnLCAnTGFz
dENoYW5nZWREYXRlJ10sCisgICAgICAnUmV2aXNpb24nOiAgICAgICAgICAgIFsnUmV2aXNpb24n
LCAnTGFzdENoYW5nZWRSZXZpc2lvbicsICdSZXYnXSwKKyAgICAgICdBdXRob3InOiAgICAgICAg
ICAgICAgWydBdXRob3InLCAnTGFzdENoYW5nZWRCeSddLAorICAgICAgJ0hlYWRVUkwnOiAgICAg
ICAgICAgICBbJ0hlYWRVUkwnLCAnVVJMJ10sCisgICAgICAnSWQnOiAgICAgICAgICAgICAgICAg
IFsnSWQnXSwKKworICAgICAgIyBBbGlhc2VzCisgICAgICAnTGFzdENoYW5nZWREYXRlJzogICAg
IFsnTGFzdENoYW5nZWREYXRlJywgJ0RhdGUnXSwKKyAgICAgICdMYXN0Q2hhbmdlZFJldmlzaW9u
JzogWydMYXN0Q2hhbmdlZFJldmlzaW9uJywgJ1JldicsICdSZXZpc2lvbiddLAorICAgICAgJ0xh
c3RDaGFuZ2VkQnknOiAgICAgICBbJ0xhc3RDaGFuZ2VkQnknLCAnQXV0aG9yJ10sCisgICAgICAn
VVJMJzogICAgICAgICAgICAgICAgIFsnVVJMJywgJ0hlYWRVUkwnXSwKKyAgICB9CisKKyAgICBk
ZWYgcmVwbChtKToKKyAgICAgICBpZiBtLmdyb3VwKDIpOgorICAgICAgICAgcmV0dXJuICIkJXM6
OiVzJCIgJSAobS5ncm91cCgxKSwgIiAiICogbGVuKG0uZ3JvdXAoMykpKQorICAgICAgIHJldHVy
biAiJCVzJCIgJSBtLmdyb3VwKDEpCisgICAga2V5d29yZHMgPSBba2V5d29yZAorICAgICAgICAg
ICAgICAgIGZvciBuYW1lIGluIGtleXdvcmRfc3RyLnNwbGl0KCIgIikKKyAgICAgICAgICAgICAg
ICBmb3Iga2V5d29yZCBpbiBzdm5fa2V5d29yZHMuZ2V0KG5hbWUsIFtdKV0KKyAgICByZXR1cm4g
cmUuc3ViKHIiXCQoJXMpOig6PykoW15cJF0rKVwkIiAlICd8Jy5qb2luKGtleXdvcmRzKSwgcmVw
bCwgY29udGVudCkKKworICBkZWYgR2V0VW5rbm93bkZpbGVzKHNlbGYpOgorICAgIHN0YXR1cyA9
IFJ1blNoZWxsKFsic3ZuIiwgInN0YXR1cyIsICItLWlnbm9yZS1leHRlcm5hbHMiXSwgc2lsZW50
X29rPVRydWUpCisgICAgdW5rbm93bl9maWxlcyA9IFtdCisgICAgZm9yIGxpbmUgaW4gc3RhdHVz
LnNwbGl0KCJcbiIpOgorICAgICAgaWYgbGluZSBhbmQgbGluZVswXSA9PSAiPyI6CisgICAgICAg
IHVua25vd25fZmlsZXMuYXBwZW5kKGxpbmUpCisgICAgcmV0dXJuIHVua25vd25fZmlsZXMKKwor
ICBkZWYgUmVhZEZpbGUoc2VsZiwgZmlsZW5hbWUpOgorICAgICIiIlJldHVybnMgdGhlIGNvbnRl
bnRzIG9mIGEgZmlsZS4iIiIKKyAgICBmaWxlID0gb3BlbihmaWxlbmFtZSwgJ3JiJykKKyAgICBy
ZXN1bHQgPSAiIgorICAgIHRyeToKKyAgICAgIHJlc3VsdCA9IGZpbGUucmVhZCgpCisgICAgZmlu
YWxseToKKyAgICAgIGZpbGUuY2xvc2UoKQorICAgIHJldHVybiByZXN1bHQKKworICBkZWYgR2V0
U3RhdHVzKHNlbGYsIGZpbGVuYW1lKToKKyAgICAiIiJSZXR1cm5zIHRoZSBzdGF0dXMgb2YgYSBm
aWxlLiIiIgorICAgIGlmIG5vdCBzZWxmLm9wdGlvbnMucmV2aXNpb246CisgICAgICBzdGF0dXMg
PSBSdW5TaGVsbChbInN2biIsICJzdGF0dXMiLCAiLS1pZ25vcmUtZXh0ZXJuYWxzIiwgZmlsZW5h
bWVdKQorICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgRXJyb3JFeGl0KCJzdm4gc3RhdHVz
IHJldHVybmVkIG5vIG91dHB1dCBmb3IgJXMiICUgZmlsZW5hbWUpCisgICAgICBzdGF0dXNfbGlu
ZXMgPSBzdGF0dXMuc3BsaXRsaW5lcygpCisgICAgICAjIElmIGZpbGUgaXMgaW4gYSBjbCwgdGhl
IG91dHB1dCB3aWxsIGJlZ2luIHdpdGgKKyAgICAgICMgIlxuLS0tIENoYW5nZWxpc3QgJ2NsX25h
bWUnOlxuIi4gIFNlZQorICAgICAgIyBodHRwOi8vc3ZuLmNvbGxhYi5uZXQvcmVwb3Mvc3ZuL3Ry
dW5rL25vdGVzL2NoYW5nZWxpc3QtZGVzaWduLnR4dAorICAgICAgaWYgKGxlbihzdGF0dXNfbGlu
ZXMpID09IDMgYW5kCisgICAgICAgICAgbm90IHN0YXR1c19saW5lc1swXSBhbmQKKyAgICAgICAg
ICBzdGF0dXNfbGluZXNbMV0uc3RhcnRzd2l0aCgiLS0tIENoYW5nZWxpc3QiKSk6CisgICAgICAg
IHN0YXR1cyA9IHN0YXR1c19saW5lc1syXQorICAgICAgZWxzZToKKyAgICAgICAgc3RhdHVzID0g
c3RhdHVzX2xpbmVzWzBdCisgICAgIyBJZiB3ZSBoYXZlIGEgcmV2aXNpb24gdG8gZGlmZiBhZ2Fp
bnN0IHdlIG5lZWQgdG8gcnVuICJzdm4gbGlzdCIKKyAgICAjIGZvciB0aGUgb2xkIGFuZCB0aGUg
bmV3IHJldmlzaW9uIGFuZCBjb21wYXJlIHRoZSByZXN1bHRzIHRvIGdldAorICAgICMgdGhlIGNv
cnJlY3Qgc3RhdHVzIGZvciBhIGZpbGUuCisgICAgZWxzZToKKyAgICAgIGRpcm5hbWUsIHJlbGZp
bGVuYW1lID0gb3MucGF0aC5zcGxpdChmaWxlbmFtZSkKKyAgICAgIGlmIGRpcm5hbWUgbm90IGlu
IHNlbGYuc3ZubHNfY2FjaGU6CisgICAgICAgIGNtZCA9IFsic3ZuIiwgImxpc3QiLCAiLXIiLCBz
ZWxmLnJldl9zdGFydCwgZGlybmFtZSBvciAiLiJdCisgICAgICAgIG91dCwgcmV0dXJuY29kZSA9
IFJ1blNoZWxsV2l0aFJldHVybkNvZGUoY21kKQorICAgICAgICBpZiByZXR1cm5jb2RlOgorICAg
ICAgICAgIEVycm9yRXhpdCgiRmFpbGVkIHRvIGdldCBzdGF0dXMgZm9yICVzLiIgJSBmaWxlbmFt
ZSkKKyAgICAgICAgb2xkX2ZpbGVzID0gb3V0LnNwbGl0bGluZXMoKQorICAgICAgICBhcmdzID0g
WyJzdm4iLCAibGlzdCJdCisgICAgICAgIGlmIHNlbGYucmV2X2VuZDoKKyAgICAgICAgICBhcmdz
ICs9IFsiLXIiLCBzZWxmLnJldl9lbmRdCisgICAgICAgIGNtZCA9IGFyZ3MgKyBbZGlybmFtZSBv
ciAiLiJdCisgICAgICAgIG91dCwgcmV0dXJuY29kZSA9IFJ1blNoZWxsV2l0aFJldHVybkNvZGUo
Y21kKQorICAgICAgICBpZiByZXR1cm5jb2RlOgorICAgICAgICAgIEVycm9yRXhpdCgiRmFpbGVk
IHRvIHJ1biBjb21tYW5kICVzIiAlIGNtZCkKKyAgICAgICAgc2VsZi5zdm5sc19jYWNoZVtkaXJu
YW1lXSA9IChvbGRfZmlsZXMsIG91dC5zcGxpdGxpbmVzKCkpCisgICAgICBvbGRfZmlsZXMsIG5l
d19maWxlcyA9IHNlbGYuc3ZubHNfY2FjaGVbZGlybmFtZV0KKyAgICAgIGlmIHJlbGZpbGVuYW1l
IGluIG9sZF9maWxlcyBhbmQgcmVsZmlsZW5hbWUgbm90IGluIG5ld19maWxlczoKKyAgICAgICAg
c3RhdHVzID0gIkQgICAiCisgICAgICBlbGlmIHJlbGZpbGVuYW1lIGluIG9sZF9maWxlcyBhbmQg
cmVsZmlsZW5hbWUgaW4gbmV3X2ZpbGVzOgorICAgICAgICBzdGF0dXMgPSAiTSAgICIKKyAgICAg
IGVsc2U6CisgICAgICAgIHN0YXR1cyA9ICJBICAgIgorICAgIHJldHVybiBzdGF0dXMKKworICBk
ZWYgR2V0QmFzZUZpbGUoc2VsZiwgZmlsZW5hbWUpOgorICAgIHN0YXR1cyA9IHNlbGYuR2V0U3Rh
dHVzKGZpbGVuYW1lKQorICAgIGJhc2VfY29udGVudCA9IE5vbmUKKyAgICBuZXdfY29udGVudCA9
IE5vbmUKKworICAgICMgSWYgYSBmaWxlIGlzIGNvcGllZCBpdHMgc3RhdHVzIHdpbGwgYmUgIkEg
ICsiLCB3aGljaCBzaWduaWZpZXMKKyAgICAjICJhZGRpdGlvbi13aXRoLWhpc3RvcnkiLiAgU2Vl
ICJzdm4gc3QiIGZvciBtb3JlIGluZm9ybWF0aW9uLiAgV2UgbmVlZCB0bworICAgICMgdXBsb2Fk
IHRoZSBvcmlnaW5hbCBmaWxlIG9yIGVsc2UgZGlmZiBwYXJzaW5nIHdpbGwgZmFpbCBpZiB0aGUg
ZmlsZSB3YXMKKyAgICAjIGVkaXRlZC4KKyAgICBpZiBzdGF0dXNbMF0gPT0gIkEiIGFuZCBzdGF0
dXNbM10gIT0gIisiOgorICAgICAgIyBXZSdsbCBuZWVkIHRvIHVwbG9hZCB0aGUgbmV3IGNvbnRl
bnQgaWYgd2UncmUgYWRkaW5nIGEgYmluYXJ5IGZpbGUKKyAgICAgICMgc2luY2UgZGlmZidzIG91
dHB1dCB3b24ndCBjb250YWluIGl0LgorICAgICAgbWltZXR5cGUgPSBSdW5TaGVsbChbInN2biIs
ICJwcm9wZ2V0IiwgInN2bjptaW1lLXR5cGUiLCBmaWxlbmFtZV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpbGVudF9vaz1UcnVlKQorICAgICAgYmFzZV9jb250ZW50ID0gIiIKKyAgICAg
IGlzX2JpbmFyeSA9IG1pbWV0eXBlIGFuZCBub3QgbWltZXR5cGUuc3RhcnRzd2l0aCgidGV4dC8i
KQorICAgICAgaWYgaXNfYmluYXJ5IGFuZCBzZWxmLklzSW1hZ2UoZmlsZW5hbWUpOgorICAgICAg
ICBuZXdfY29udGVudCA9IHNlbGYuUmVhZEZpbGUoZmlsZW5hbWUpCisgICAgZWxpZiAoc3RhdHVz
WzBdIGluICgiTSIsICJEIiwgIlIiKSBvcgorICAgICAgICAgIChzdGF0dXNbMF0gPT0gIkEiIGFu
ZCBzdGF0dXNbM10gPT0gIisiKSBvciAgIyBDb3BpZWQgZmlsZS4KKyAgICAgICAgICAoc3RhdHVz
WzBdID09ICIgIiBhbmQgc3RhdHVzWzFdID09ICJNIikpOiAgIyBQcm9wZXJ0eSBjaGFuZ2UuCisg
ICAgICBhcmdzID0gW10KKyAgICAgIGlmIHNlbGYub3B0aW9ucy5yZXZpc2lvbjoKKyAgICAgICAg
dXJsID0gIiVzLyVzQCVzIiAlIChzZWxmLnN2bl9iYXNlLCBmaWxlbmFtZSwgc2VsZi5yZXZfc3Rh
cnQpCisgICAgICBlbHNlOgorICAgICAgICAjIERvbid0IGNoYW5nZSBmaWxlbmFtZSwgaXQncyBu
ZWVkZWQgbGF0ZXIuCisgICAgICAgIHVybCA9IGZpbGVuYW1lCisgICAgICAgIGFyZ3MgKz0gWyIt
ciIsICJCQVNFIl0KKyAgICAgIGNtZCA9IFsic3ZuIl0gKyBhcmdzICsgWyJwcm9wZ2V0IiwgInN2
bjptaW1lLXR5cGUiLCB1cmxdCisgICAgICBtaW1ldHlwZSwgcmV0dXJuY29kZSA9IFJ1blNoZWxs
V2l0aFJldHVybkNvZGUoY21kKQorICAgICAgaWYgcmV0dXJuY29kZToKKyAgICAgICAgIyBGaWxl
IGRvZXMgbm90IGV4aXN0IGluIHRoZSByZXF1ZXN0ZWQgcmV2aXNpb24uCisgICAgICAgICMgUmVz
ZXQgbWltZXR5cGUsIGl0IGNvbnRhaW5zIGFuIGVycm9yIG1lc3NhZ2UuCisgICAgICAgIG1pbWV0
eXBlID0gIiIKKyAgICAgIGdldF9iYXNlID0gRmFsc2UKKyAgICAgIGlzX2JpbmFyeSA9IG1pbWV0
eXBlIGFuZCBub3QgbWltZXR5cGUuc3RhcnRzd2l0aCgidGV4dC8iKQorICAgICAgaWYgc3RhdHVz
WzBdID09ICIgIjoKKyAgICAgICAgIyBFbXB0eSBiYXNlIGNvbnRlbnQganVzdCB0byBmb3JjZSBh
biB1cGxvYWQuCisgICAgICAgIGJhc2VfY29udGVudCA9ICIiCisgICAgICBlbGlmIGlzX2JpbmFy
eToKKyAgICAgICAgaWYgc2VsZi5Jc0ltYWdlKGZpbGVuYW1lKToKKyAgICAgICAgICBnZXRfYmFz
ZSA9IFRydWUKKyAgICAgICAgICBpZiBzdGF0dXNbMF0gPT0gIk0iOgorICAgICAgICAgICAgaWYg
bm90IHNlbGYucmV2X2VuZDoKKyAgICAgICAgICAgICAgbmV3X2NvbnRlbnQgPSBzZWxmLlJlYWRG
aWxlKGZpbGVuYW1lKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgdXJsID0gIiVz
LyVzQCVzIiAlIChzZWxmLnN2bl9iYXNlLCBmaWxlbmFtZSwgc2VsZi5yZXZfZW5kKQorICAgICAg
ICAgICAgICBuZXdfY29udGVudCA9IFJ1blNoZWxsKFsic3ZuIiwgImNhdCIsIHVybF0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUs
IHNpbGVudF9vaz1UcnVlKQorICAgICAgICBlbHNlOgorICAgICAgICAgIGJhc2VfY29udGVudCA9
ICIiCisgICAgICBlbHNlOgorICAgICAgICBnZXRfYmFzZSA9IFRydWUKKworICAgICAgaWYgZ2V0
X2Jhc2U6CisgICAgICAgIGlmIGlzX2JpbmFyeToKKyAgICAgICAgICB1bml2ZXJzYWxfbmV3bGlu
ZXMgPSBGYWxzZQorICAgICAgICBlbHNlOgorICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcyA9
IFRydWUKKyAgICAgICAgaWYgc2VsZi5yZXZfc3RhcnQ6CisgICAgICAgICAgIyAic3ZuIGNhdCAt
ciBSRVYgZGVsZXRlX2ZpbGUudHh0IiBkb2Vzbid0IHdvcmsuIGNhdCByZXF1aXJlcworICAgICAg
ICAgICMgdGhlIGZ1bGwgVVJMIHdpdGggIkBSRVYiIGFwcGVuZGVkIGluc3RlYWQgb2YgdXNpbmcg
Ii1yIiBvcHRpb24uCisgICAgICAgICAgdXJsID0gIiVzLyVzQCVzIiAlIChzZWxmLnN2bl9iYXNl
LCBmaWxlbmFtZSwgc2VsZi5yZXZfc3RhcnQpCisgICAgICAgICAgYmFzZV9jb250ZW50ID0gUnVu
U2hlbGwoWyJzdm4iLCAiY2F0IiwgdXJsXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bml2ZXJzYWxfbmV3bGluZXM9dW5pdmVyc2FsX25ld2xpbmVzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpbGVudF9vaz1UcnVlKQorICAgICAgICBlbHNlOgorICAg
ICAgICAgIGJhc2VfY29udGVudCA9IFJ1blNoZWxsKFsic3ZuIiwgImNhdCIsIGZpbGVuYW1lXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9dW5p
dmVyc2FsX25ld2xpbmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbGVu
dF9vaz1UcnVlKQorICAgICAgICBpZiBub3QgaXNfYmluYXJ5OgorICAgICAgICAgIGFyZ3MgPSBb
XQorICAgICAgICAgIGlmIHNlbGYucmV2X3N0YXJ0OgorICAgICAgICAgICAgdXJsID0gIiVzLyVz
QCVzIiAlIChzZWxmLnN2bl9iYXNlLCBmaWxlbmFtZSwgc2VsZi5yZXZfc3RhcnQpCisgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIHVybCA9IGZpbGVuYW1lCisgICAgICAgICAgICBhcmdzICs9
IFsiLXIiLCAiQkFTRSJdCisgICAgICAgICAgY21kID0gWyJzdm4iXSArIGFyZ3MgKyBbInByb3Bn
ZXQiLCAic3ZuOmtleXdvcmRzIiwgdXJsXQorICAgICAgICAgIGtleXdvcmRzLCByZXR1cm5jb2Rl
ID0gUnVuU2hlbGxXaXRoUmV0dXJuQ29kZShjbWQpCisgICAgICAgICAgaWYga2V5d29yZHMgYW5k
IG5vdCByZXR1cm5jb2RlOgorICAgICAgICAgICAgYmFzZV9jb250ZW50ID0gc2VsZi5fQ29sbGFw
c2VLZXl3b3JkcyhiYXNlX2NvbnRlbnQsIGtleXdvcmRzKQorICAgIGVsc2U6CisgICAgICBTdGF0
dXNVcGRhdGUoInN2biBzdGF0dXMgcmV0dXJuZWQgdW5leHBlY3RlZCBvdXRwdXQ6ICVzIiAlIHN0
YXR1cykKKyAgICAgIHN5cy5leGl0KDEpCisgICAgcmV0dXJuIGJhc2VfY29udGVudCwgbmV3X2Nv
bnRlbnQsIGlzX2JpbmFyeSwgc3RhdHVzWzA6NV0KKworCitjbGFzcyBHaXRWQ1MoVmVyc2lvbkNv
bnRyb2xTeXN0ZW0pOgorICAiIiJJbXBsZW1lbnRhdGlvbiBvZiB0aGUgVmVyc2lvbkNvbnRyb2xT
eXN0ZW0gaW50ZXJmYWNlIGZvciBHaXQuIiIiCisKKyAgZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlv
bnMpOgorICAgIHN1cGVyKEdpdFZDUywgc2VsZikuX19pbml0X18ob3B0aW9ucykKKyAgICAjIE1h
cCBvZiBmaWxlbmFtZSAtPiBoYXNoIG9mIGJhc2UgZmlsZS4KKyAgICBzZWxmLmJhc2VfaGFzaGVz
ID0ge30KKworICBkZWYgR2VuZXJhdGVEaWZmKHNlbGYsIGV4dHJhX2FyZ3MpOgorICAgICMgVGhp
cyBpcyBtb3JlIGNvbXBsaWNhdGVkIHRoYW4gc3ZuJ3MgR2VuZXJhdGVEaWZmIGJlY2F1c2Ugd2Ug
bXVzdCBjb252ZXJ0CisgICAgIyB0aGUgZGlmZiBvdXRwdXQgdG8gaW5jbHVkZSBhbiBzdm4tc3R5
bGUgIkluZGV4OiIgbGluZSBhcyB3ZWxsIGFzIHJlY29yZAorICAgICMgdGhlIGhhc2hlcyBvZiB0
aGUgYmFzZSBmaWxlcywgc28gd2UgY2FuIHVwbG9hZCB0aGVtIGFsb25nIHdpdGggb3VyIGRpZmYu
CisgICAgaWYgc2VsZi5vcHRpb25zLnJldmlzaW9uOgorICAgICAgZXh0cmFfYXJncyA9IFtzZWxm
Lm9wdGlvbnMucmV2aXNpb25dICsgZXh0cmFfYXJncworICAgIGdpdGRpZmYgPSBSdW5TaGVsbChb
ImdpdCIsICJkaWZmIiwgIi0tZnVsbC1pbmRleCJdICsgZXh0cmFfYXJncykKKyAgICBzdm5kaWZm
ID0gW10KKyAgICBmaWxlY291bnQgPSAwCisgICAgZmlsZW5hbWUgPSBOb25lCisgICAgZm9yIGxp
bmUgaW4gZ2l0ZGlmZi5zcGxpdGxpbmVzKCk6CisgICAgICBtYXRjaCA9IHJlLm1hdGNoKHIiZGlm
ZiAtLWdpdCBhLyguKikgYi8uKiQiLCBsaW5lKQorICAgICAgaWYgbWF0Y2g6CisgICAgICAgIGZp
bGVjb3VudCArPSAxCisgICAgICAgIGZpbGVuYW1lID0gbWF0Y2guZ3JvdXAoMSkKKyAgICAgICAg
c3ZuZGlmZi5hcHBlbmQoIkluZGV4OiAlc1xuIiAlIGZpbGVuYW1lKQorICAgICAgZWxzZToKKyAg
ICAgICAgIyBUaGUgImluZGV4IiBsaW5lIGluIGEgZ2l0IGRpZmYgbG9va3MgbGlrZSB0aGlzIChs
b25nIGhhc2hlcyBlbGlkZWQpOgorICAgICAgICAjICAgaW5kZXggODJjMGQ0NC4uYjJjZWUzZiAx
MDA3NTUKKyAgICAgICAgIyBXZSB3YW50IHRvIHNhdmUgdGhlIGxlZnQgaGFzaCwgYXMgdGhhdCBp
ZGVudGlmaWVzIHRoZSBiYXNlIGZpbGUuCisgICAgICAgIG1hdGNoID0gcmUubWF0Y2gociJpbmRl
eCAoXHcrKVwuXC4iLCBsaW5lKQorICAgICAgICBpZiBtYXRjaDoKKyAgICAgICAgICBzZWxmLmJh
c2VfaGFzaGVzW2ZpbGVuYW1lXSA9IG1hdGNoLmdyb3VwKDEpCisgICAgICBzdm5kaWZmLmFwcGVu
ZChsaW5lICsgIlxuIikKKyAgICBpZiBub3QgZmlsZWNvdW50OgorICAgICAgRXJyb3JFeGl0KCJO
byB2YWxpZCBwYXRjaGVzIGZvdW5kIGluIG91dHB1dCBmcm9tIGdpdCBkaWZmIikKKyAgICByZXR1
cm4gIiIuam9pbihzdm5kaWZmKQorCisgIGRlZiBHZXRVbmtub3duRmlsZXMoc2VsZik6CisgICAg
c3RhdHVzID0gUnVuU2hlbGwoWyJnaXQiLCAibHMtZmlsZXMiLCAiLS1leGNsdWRlLXN0YW5kYXJk
IiwgIi0tb3RoZXJzIl0sCisgICAgICAgICAgICAgICAgICAgICAgc2lsZW50X29rPVRydWUpCisg
ICAgcmV0dXJuIHN0YXR1cy5zcGxpdGxpbmVzKCkKKworICBkZWYgR2V0QmFzZUZpbGUoc2VsZiwg
ZmlsZW5hbWUpOgorICAgIGhhc2ggPSBzZWxmLmJhc2VfaGFzaGVzW2ZpbGVuYW1lXQorICAgIGJh
c2VfY29udGVudCA9IE5vbmUKKyAgICBuZXdfY29udGVudCA9IE5vbmUKKyAgICBpc19iaW5hcnkg
PSBGYWxzZQorICAgIGlmIGhhc2ggPT0gIjAiICogNDA6ICAjIEFsbC16ZXJvIGhhc2ggaW5kaWNh
dGVzIG5vIGJhc2UgZmlsZS4KKyAgICAgIHN0YXR1cyA9ICJBIgorICAgICAgYmFzZV9jb250ZW50
ID0gIiIKKyAgICBlbHNlOgorICAgICAgc3RhdHVzID0gIk0iCisgICAgICBiYXNlX2NvbnRlbnQs
IHJldHVybmNvZGUgPSBSdW5TaGVsbFdpdGhSZXR1cm5Db2RlKFsiZ2l0IiwgInNob3ciLCBoYXNo
XSkKKyAgICAgIGlmIHJldHVybmNvZGU6CisgICAgICAgIEVycm9yRXhpdCgiR290IGVycm9yIHN0
YXR1cyBmcm9tICdnaXQgc2hvdyAlcyciICUgaGFzaCkKKyAgICByZXR1cm4gKGJhc2VfY29udGVu
dCwgbmV3X2NvbnRlbnQsIGlzX2JpbmFyeSwgc3RhdHVzKQorCisKK2NsYXNzIE1lcmN1cmlhbFZD
UyhWZXJzaW9uQ29udHJvbFN5c3RlbSk6CisgICIiIkltcGxlbWVudGF0aW9uIG9mIHRoZSBWZXJz
aW9uQ29udHJvbFN5c3RlbSBpbnRlcmZhY2UgZm9yIE1lcmN1cmlhbC4iIiIKKworICBkZWYgX19p
bml0X18oc2VsZiwgb3B0aW9ucywgcmVwb19kaXIpOgorICAgIHN1cGVyKE1lcmN1cmlhbFZDUywg
c2VsZikuX19pbml0X18ob3B0aW9ucykKKyAgICAjIEFic29sdXRlIHBhdGggdG8gcmVwb3NpdG9y
eSAod2UgY2FuIGJlIGluIGEgc3ViZGlyKQorICAgIHNlbGYucmVwb19kaXIgPSBvcy5wYXRoLm5v
cm1wYXRoKHJlcG9fZGlyKQorICAgICMgQ29tcHV0ZSB0aGUgc3ViZGlyCisgICAgY3dkID0gb3Mu
cGF0aC5ub3JtcGF0aChvcy5nZXRjd2QoKSkKKyAgICBhc3NlcnQgY3dkLnN0YXJ0c3dpdGgoc2Vs
Zi5yZXBvX2RpcikKKyAgICBzZWxmLnN1YmRpciA9IGN3ZFtsZW4oc2VsZi5yZXBvX2Rpcik6XS5s
c3RyaXAociJcLyIpCisgICAgaWYgc2VsZi5vcHRpb25zLnJldmlzaW9uOgorICAgICAgc2VsZi5i
YXNlX3JldiA9IHNlbGYub3B0aW9ucy5yZXZpc2lvbgorICAgIGVsc2U6CisgICAgICBzZWxmLmJh
c2VfcmV2ID0gUnVuU2hlbGwoWyJoZyIsICJwYXJlbnQiLCAiLXEiXSkuc3BsaXQoJzonKVsxXS5z
dHJpcCgpCisKKyAgZGVmIF9HZXRSZWxQYXRoKHNlbGYsIGZpbGVuYW1lKToKKyAgICAiIiJHZXQg
cmVsYXRpdmUgcGF0aCBvZiBhIGZpbGUgYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IGRpcmVjdG9y
eSwKKyAgICBnaXZlbiBpdHMgbG9naWNhbCBwYXRoIGluIHRoZSByZXBvLiIiIgorICAgIGFzc2Vy
dCBmaWxlbmFtZS5zdGFydHN3aXRoKHNlbGYuc3ViZGlyKSwgZmlsZW5hbWUKKyAgICByZXR1cm4g
ZmlsZW5hbWVbbGVuKHNlbGYuc3ViZGlyKTpdLmxzdHJpcChyIlwvIikKKworICBkZWYgR2VuZXJh
dGVEaWZmKHNlbGYsIGV4dHJhX2FyZ3MpOgorICAgICMgSWYgbm8gZmlsZSBzcGVjaWZpZWQsIHJl
c3RyaWN0IHRvIHRoZSBjdXJyZW50IHN1YmRpcgorICAgIGV4dHJhX2FyZ3MgPSBleHRyYV9hcmdz
IG9yIFsiLiJdCisgICAgY21kID0gWyJoZyIsICJkaWZmIiwgIi0tZ2l0IiwgIi1yIiwgc2VsZi5i
YXNlX3Jldl0gKyBleHRyYV9hcmdzCisgICAgZGF0YSA9IFJ1blNoZWxsKGNtZCwgc2lsZW50X29r
PVRydWUpCisgICAgc3ZuZGlmZiA9IFtdCisgICAgZmlsZWNvdW50ID0gMAorICAgIGZvciBsaW5l
IGluIGRhdGEuc3BsaXRsaW5lcygpOgorICAgICAgbSA9IHJlLm1hdGNoKCJkaWZmIC0tZ2l0IGEv
KFxTKykgYi8oXFMrKSIsIGxpbmUpCisgICAgICBpZiBtOgorICAgICAgICAjIE1vZGlmeSBsaW5l
IHRvIG1ha2UgaXQgbG9vayBsaWtlIGFzIGl0IGNvbWVzIGZyb20gc3ZuIGRpZmYuCisgICAgICAg
ICMgV2l0aCB0aGlzIG1vZGlmaWNhdGlvbiBubyBjaGFuZ2VzIG9uIHRoZSBzZXJ2ZXIgc2lkZSBh
cmUgcmVxdWlyZWQKKyAgICAgICAgIyB0byBtYWtlIHVwbG9hZC5weSB3b3JrIHdpdGggTWVyY3Vy
aWFsIHJlcG9zLgorICAgICAgICAjIE5PVEU6IGZvciBwcm9wZXIgaGFuZGxpbmcgb2YgbW92ZWQv
Y29waWVkIGZpbGVzLCB3ZSBoYXZlIHRvIHVzZQorICAgICAgICAjIHRoZSBzZWNvbmQgZmlsZW5h
bWUuCisgICAgICAgIGZpbGVuYW1lID0gbS5ncm91cCgyKQorICAgICAgICBzdm5kaWZmLmFwcGVu
ZCgiSW5kZXg6ICVzIiAlIGZpbGVuYW1lKQorICAgICAgICBzdm5kaWZmLmFwcGVuZCgiPSIgKiA2
NykKKyAgICAgICAgZmlsZWNvdW50ICs9IDEKKyAgICAgICAgbG9nZ2luZy5pbmZvKGxpbmUpCisg
ICAgICBlbHNlOgorICAgICAgICBzdm5kaWZmLmFwcGVuZChsaW5lKQorICAgIGlmIG5vdCBmaWxl
Y291bnQ6CisgICAgICBFcnJvckV4aXQoIk5vIHZhbGlkIHBhdGNoZXMgZm91bmQgaW4gb3V0cHV0
IGZyb20gaGcgZGlmZiIpCisgICAgcmV0dXJuICJcbiIuam9pbihzdm5kaWZmKSArICJcbiIKKwor
ICBkZWYgR2V0VW5rbm93bkZpbGVzKHNlbGYpOgorICAgICIiIlJldHVybiBhIGxpc3Qgb2YgZmls
ZXMgdW5rbm93biB0byB0aGUgVkNTLiIiIgorICAgIGFyZ3MgPSBbXQorICAgIHN0YXR1cyA9IFJ1
blNoZWxsKFsiaGciLCAic3RhdHVzIiwgIi0tcmV2Iiwgc2VsZi5iYXNlX3JldiwgIi11IiwgIi4i
XSwKKyAgICAgICAgc2lsZW50X29rPVRydWUpCisgICAgdW5rbm93bl9maWxlcyA9IFtdCisgICAg
Zm9yIGxpbmUgaW4gc3RhdHVzLnNwbGl0bGluZXMoKToKKyAgICAgIHN0LCBmbiA9IGxpbmUuc3Bs
aXQoIiAiLCAxKQorICAgICAgaWYgc3QgPT0gIj8iOgorICAgICAgICB1bmtub3duX2ZpbGVzLmFw
cGVuZChmbikKKyAgICByZXR1cm4gdW5rbm93bl9maWxlcworCisgIGRlZiBHZXRCYXNlRmlsZShz
ZWxmLCBmaWxlbmFtZSk6CisgICAgIyAiaGcgc3RhdHVzIiBhbmQgImhnIGNhdCIgYm90aCB0YWtl
IGEgcGF0aCByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBzdWJkaXIKKyAgICAjIHJhdGhlciB0aGFu
IHRvIHRoZSByZXBvIHJvb3QsIGJ1dCAiaGcgZGlmZiIgaGFzIGdpdmVuIHVzIHRoZSBmdWxsIHBh
dGgKKyAgICAjIHRvIHRoZSByZXBvIHJvb3QuCisgICAgYmFzZV9jb250ZW50ID0gIiIKKyAgICBu
ZXdfY29udGVudCA9IE5vbmUKKyAgICBpc19iaW5hcnkgPSBGYWxzZQorICAgIG9sZHJlbHBhdGgg
PSByZWxwYXRoID0gc2VsZi5fR2V0UmVsUGF0aChmaWxlbmFtZSkKKyAgICAjICJoZyBzdGF0dXMg
LUMiIHJldHVybnMgdHdvIGxpbmVzIGZvciBtb3ZlZC9jb3BpZWQgZmlsZXMsIG9uZSBvdGhlcndp
c2UKKyAgICBvdXQgPSBSdW5TaGVsbChbImhnIiwgInN0YXR1cyIsICItQyIsICItLXJldiIsIHNl
bGYuYmFzZV9yZXYsIHJlbHBhdGhdKQorICAgIG91dCA9IG91dC5zcGxpdGxpbmVzKCkKKyAgICAj
IEhBQ0s6IHN0cmlwIGVycm9yIG1lc3NhZ2UgYWJvdXQgbWlzc2luZyBmaWxlL2RpcmVjdG9yeSBp
ZiBpdCBpc24ndCBpbgorICAgICMgdGhlIHdvcmtpbmcgY29weQorICAgIGlmIG91dFswXS5zdGFy
dHN3aXRoKCclczogJyAlIHJlbHBhdGgpOgorICAgICAgb3V0ID0gb3V0WzE6XQorICAgIGlmIGxl
bihvdXQpID4gMToKKyAgICAgICMgTW92ZWQvY29waWVkID0+IGNvbnNpZGVyZWQgYXMgbW9kaWZp
ZWQsIHVzZSBvbGQgZmlsZW5hbWUgdG8KKyAgICAgICMgcmV0cmlldmUgYmFzZSBjb250ZW50cwor
ICAgICAgb2xkcmVscGF0aCA9IG91dFsxXS5zdHJpcCgpCisgICAgICBzdGF0dXMgPSAiTSIKKyAg
ICBlbHNlOgorICAgICAgc3RhdHVzLCBfID0gb3V0WzBdLnNwbGl0KCcgJywgMSkKKyAgICBpZiBz
dGF0dXMgIT0gIkEiOgorICAgICAgYmFzZV9jb250ZW50ID0gUnVuU2hlbGwoWyJoZyIsICJjYXQi
LCAiLXIiLCBzZWxmLmJhc2VfcmV2LCBvbGRyZWxwYXRoXSwKKyAgICAgICAgc2lsZW50X29rPVRy
dWUpCisgICAgICBpc19iaW5hcnkgPSAiXDAiIGluIGJhc2VfY29udGVudCAgIyBNZXJjdXJpYWwn
cyBoZXVyaXN0aWMKKyAgICBpZiBzdGF0dXMgIT0gIlIiOgorICAgICAgbmV3X2NvbnRlbnQgPSBv
cGVuKHJlbHBhdGgsICJyYiIpLnJlYWQoKQorICAgICAgaXNfYmluYXJ5ID0gaXNfYmluYXJ5IG9y
ICJcMCIgaW4gbmV3X2NvbnRlbnQKKyAgICBpZiBpc19iaW5hcnkgYW5kIGJhc2VfY29udGVudDoK
KyAgICAgICMgRmV0Y2ggYWdhaW4gd2l0aG91dCBjb252ZXJ0aW5nIG5ld2xpbmVzCisgICAgICBi
YXNlX2NvbnRlbnQgPSBSdW5TaGVsbChbImhnIiwgImNhdCIsICItciIsIHNlbGYuYmFzZV9yZXYs
IG9sZHJlbHBhdGhdLAorICAgICAgICBzaWxlbnRfb2s9VHJ1ZSwgdW5pdmVyc2FsX25ld2xpbmVz
PUZhbHNlKQorICAgIGlmIG5vdCBpc19iaW5hcnkgb3Igbm90IHNlbGYuSXNJbWFnZShyZWxwYXRo
KToKKyAgICAgIG5ld19jb250ZW50ID0gTm9uZQorICAgIHJldHVybiBiYXNlX2NvbnRlbnQsIG5l
d19jb250ZW50LCBpc19iaW5hcnksIHN0YXR1cworCisKKyMgTk9URTogVGhlIFNwbGl0UGF0Y2gg
ZnVuY3Rpb24gaXMgZHVwbGljYXRlZCBpbiBlbmdpbmUucHksIGtlZXAgdGhlbSBpbiBzeW5jLgor
ZGVmIFNwbGl0UGF0Y2goZGF0YSk6CisgICIiIlNwbGl0cyBhIHBhdGNoIGludG8gc2VwYXJhdGUg
cGllY2VzIGZvciBlYWNoIGZpbGUuCisKKyAgQXJnczoKKyAgICBkYXRhOiBBIHN0cmluZyBjb250
YWluaW5nIHRoZSBvdXRwdXQgb2Ygc3ZuIGRpZmYuCisKKyAgUmV0dXJuczoKKyAgICBBIGxpc3Qg
b2YgMi10dXBsZSAoZmlsZW5hbWUsIHRleHQpIHdoZXJlIHRleHQgaXMgdGhlIHN2biBkaWZmIG91
dHB1dAorICAgICAgcGVydGFpbmluZyB0byBmaWxlbmFtZS4KKyAgIiIiCisgIHBhdGNoZXMgPSBb
XQorICBmaWxlbmFtZSA9IE5vbmUKKyAgZGlmZiA9IFtdCisgIGZvciBsaW5lIGluIGRhdGEuc3Bs
aXRsaW5lcyhUcnVlKToKKyAgICBuZXdfZmlsZW5hbWUgPSBOb25lCisgICAgaWYgbGluZS5zdGFy
dHN3aXRoKCdJbmRleDonKToKKyAgICAgIHVudXNlZCwgbmV3X2ZpbGVuYW1lID0gbGluZS5zcGxp
dCgnOicsIDEpCisgICAgICBuZXdfZmlsZW5hbWUgPSBuZXdfZmlsZW5hbWUuc3RyaXAoKQorICAg
IGVsaWYgbGluZS5zdGFydHN3aXRoKCdQcm9wZXJ0eSBjaGFuZ2VzIG9uOicpOgorICAgICAgdW51
c2VkLCB0ZW1wX2ZpbGVuYW1lID0gbGluZS5zcGxpdCgnOicsIDEpCisgICAgICAjIFdoZW4gYSBm
aWxlIGlzIG1vZGlmaWVkLCBwYXRocyB1c2UgJy8nIGJldHdlZW4gZGlyZWN0b3JpZXMsIGhvd2V2
ZXIKKyAgICAgICMgd2hlbiBhIHByb3BlcnR5IGlzIG1vZGlmaWVkICdcJyBpcyB1c2VkIG9uIFdp
bmRvd3MuICBNYWtlIHRoZW0gdGhlIHNhbWUKKyAgICAgICMgb3RoZXJ3aXNlIHRoZSBmaWxlIHNo
b3dzIHVwIHR3aWNlLgorICAgICAgdGVtcF9maWxlbmFtZSA9IHRlbXBfZmlsZW5hbWUuc3RyaXAo
KS5yZXBsYWNlKCdcXCcsICcvJykKKyAgICAgIGlmIHRlbXBfZmlsZW5hbWUgIT0gZmlsZW5hbWU6
CisgICAgICAgICMgRmlsZSBoYXMgcHJvcGVydHkgY2hhbmdlcyBidXQgbm8gbW9kaWZpY2F0aW9u
cywgY3JlYXRlIGEgbmV3IGRpZmYuCisgICAgICAgIG5ld19maWxlbmFtZSA9IHRlbXBfZmlsZW5h
bWUKKyAgICBpZiBuZXdfZmlsZW5hbWU6CisgICAgICBpZiBmaWxlbmFtZSBhbmQgZGlmZjoKKyAg
ICAgICAgcGF0Y2hlcy5hcHBlbmQoKGZpbGVuYW1lLCAnJy5qb2luKGRpZmYpKSkKKyAgICAgIGZp
bGVuYW1lID0gbmV3X2ZpbGVuYW1lCisgICAgICBkaWZmID0gW2xpbmVdCisgICAgICBjb250aW51
ZQorICAgIGlmIGRpZmYgaXMgbm90IE5vbmU6CisgICAgICBkaWZmLmFwcGVuZChsaW5lKQorICBp
ZiBmaWxlbmFtZSBhbmQgZGlmZjoKKyAgICBwYXRjaGVzLmFwcGVuZCgoZmlsZW5hbWUsICcnLmpv
aW4oZGlmZikpKQorICByZXR1cm4gcGF0Y2hlcworCisKK2RlZiBVcGxvYWRTZXBhcmF0ZVBhdGNo
ZXMoaXNzdWUsIHJwY19zZXJ2ZXIsIHBhdGNoc2V0LCBkYXRhLCBvcHRpb25zKToKKyAgIiIiVXBs
b2FkcyBhIHNlcGFyYXRlIHBhdGNoIGZvciBlYWNoIGZpbGUgaW4gdGhlIGRpZmYgb3V0cHV0Lgor
CisgIFJldHVybnMgYSBsaXN0IG9mIFtwYXRjaF9rZXksIGZpbGVuYW1lXSBmb3IgZWFjaCBmaWxl
LgorICAiIiIKKyAgcGF0Y2hlcyA9IFNwbGl0UGF0Y2goZGF0YSkKKyAgcnYgPSBbXQorICBmb3Ig
cGF0Y2ggaW4gcGF0Y2hlczoKKyAgICBpZiBsZW4ocGF0Y2hbMV0pID4gTUFYX1VQTE9BRF9TSVpF
OgorICAgICAgcHJpbnQgKCJOb3QgdXBsb2FkaW5nIHRoZSBwYXRjaCBmb3IgIiArIHBhdGNoWzBd
ICsKKyAgICAgICAgICAgICAiIGJlY2F1c2UgdGhlIGZpbGUgaXMgdG9vIGxhcmdlLiIpCisgICAg
ICBjb250aW51ZQorICAgIGZvcm1fZmllbGRzID0gWygiZmlsZW5hbWUiLCBwYXRjaFswXSldCisg
ICAgaWYgbm90IG9wdGlvbnMuZG93bmxvYWRfYmFzZToKKyAgICAgIGZvcm1fZmllbGRzLmFwcGVu
ZCgoImNvbnRlbnRfdXBsb2FkIiwgIjEiKSkKKyAgICBmaWxlcyA9IFsoImRhdGEiLCAiZGF0YS5k
aWZmIiwgcGF0Y2hbMV0pXQorICAgIGN0eXBlLCBib2R5ID0gRW5jb2RlTXVsdGlwYXJ0Rm9ybURh
dGEoZm9ybV9maWVsZHMsIGZpbGVzKQorICAgIHVybCA9ICIvJWQvdXBsb2FkX3BhdGNoLyVkIiAl
IChpbnQoaXNzdWUpLCBpbnQocGF0Y2hzZXQpKQorICAgIHByaW50ICJVcGxvYWRpbmcgcGF0Y2gg
Zm9yICIgKyBwYXRjaFswXQorICAgIHJlc3BvbnNlX2JvZHkgPSBycGNfc2VydmVyLlNlbmQodXJs
LCBib2R5LCBjb250ZW50X3R5cGU9Y3R5cGUpCisgICAgbGluZXMgPSByZXNwb25zZV9ib2R5LnNw
bGl0bGluZXMoKQorICAgIGlmIG5vdCBsaW5lcyBvciBsaW5lc1swXSAhPSAiT0siOgorICAgICAg
U3RhdHVzVXBkYXRlKCIgIC0tPiAlcyIgJSByZXNwb25zZV9ib2R5KQorICAgICAgc3lzLmV4aXQo
MSkKKyAgICBydi5hcHBlbmQoW2xpbmVzWzFdLCBwYXRjaFswXV0pCisgIHJldHVybiBydgorCisK
K2RlZiBHdWVzc1ZDUyhvcHRpb25zKToKKyAgIiIiSGVscGVyIHRvIGd1ZXNzIHRoZSB2ZXJzaW9u
IGNvbnRyb2wgc3lzdGVtLgorCisgIFRoaXMgZXhhbWluZXMgdGhlIGN1cnJlbnQgZGlyZWN0b3J5
LCBndWVzc2VzIHdoaWNoIFZlcnNpb25Db250cm9sU3lzdGVtCisgIHdlJ3JlIHVzaW5nLCBhbmQg
cmV0dXJucyBhbiBpbnN0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgY2xhc3MuICBFeGl0IHdpdGgg
YW4KKyAgZXJyb3IgaWYgd2UgY2FuJ3QgZmlndXJlIGl0IG91dC4KKworICBSZXR1cm5zOgorICAg
IEEgVmVyc2lvbkNvbnRyb2xTeXN0ZW0gaW5zdGFuY2UuIEV4aXRzIGlmIHRoZSBWQ1MgY2FuJ3Qg
YmUgZ3Vlc3NlZC4KKyAgIiIiCisgICMgTWVyY3VyaWFsIGhhcyBhIGNvbW1hbmQgdG8gZ2V0IHRo
ZSBiYXNlIGRpcmVjdG9yeSBvZiBhIHJlcG9zaXRvcnkKKyAgIyBUcnkgcnVubmluZyBpdCwgYnV0
IGRvbid0IGRpZSBpZiB3ZSBkb24ndCBoYXZlIGhnIGluc3RhbGxlZC4KKyAgIyBOT1RFOiB3ZSB0
cnkgTWVyY3VyaWFsIGZpcnN0IGFzIGl0IGNhbiBzaXQgb24gdG9wIG9mIGFuIFNWTiB3b3JraW5n
IGNvcHkuCisgIHRyeToKKyAgICBvdXQsIHJldHVybmNvZGUgPSBSdW5TaGVsbFdpdGhSZXR1cm5D
b2RlKFsiaGciLCAicm9vdCJdKQorICAgIGlmIHJldHVybmNvZGUgPT0gMDoKKyAgICAgIHJldHVy
biBNZXJjdXJpYWxWQ1Mob3B0aW9ucywgb3V0LnN0cmlwKCkpCisgIGV4Y2VwdCBPU0Vycm9yLCAo
ZXJybm8sIG1lc3NhZ2UpOgorICAgIGlmIGVycm5vICE9IDI6ICAjIEVOT0VOVCAtLSB0aGV5IGRv
bid0IGhhdmUgaGcgaW5zdGFsbGVkLgorICAgICAgcmFpc2UKKworICAjIFN1YnZlcnNpb24gaGFz
IGEgLnN2biBpbiBhbGwgd29ya2luZyBkaXJlY3Rvcmllcy4KKyAgaWYgb3MucGF0aC5pc2Rpcign
LnN2bicpOgorICAgIGxvZ2dpbmcuaW5mbygiR3Vlc3NlZCBWQ1MgPSBTdWJ2ZXJzaW9uIikKKyAg
ICByZXR1cm4gU3VidmVyc2lvblZDUyhvcHRpb25zKQorCisgICMgR2l0IGhhcyBhIGNvbW1hbmQg
dG8gdGVzdCBpZiB5b3UncmUgaW4gYSBnaXQgdHJlZS4KKyAgIyBUcnkgcnVubmluZyBpdCwgYnV0
IGRvbid0IGRpZSBpZiB3ZSBkb24ndCBoYXZlIGdpdCBpbnN0YWxsZWQuCisgIHRyeToKKyAgICBv
dXQsIHJldHVybmNvZGUgPSBSdW5TaGVsbFdpdGhSZXR1cm5Db2RlKFsiZ2l0IiwgInJldi1wYXJz
ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0taXMt
aW5zaWRlLXdvcmstdHJlZSJdKQorICAgIGlmIHJldHVybmNvZGUgPT0gMDoKKyAgICAgIHJldHVy
biBHaXRWQ1Mob3B0aW9ucykKKyAgZXhjZXB0IE9TRXJyb3IsIChlcnJubywgbWVzc2FnZSk6Cisg
ICAgaWYgZXJybm8gIT0gMjogICMgRU5PRU5UIC0tIHRoZXkgZG9uJ3QgaGF2ZSBnaXQgaW5zdGFs
bGVkLgorICAgICAgcmFpc2UKKworICBFcnJvckV4aXQoKCJDb3VsZCBub3QgZ3Vlc3MgdmVyc2lv
biBjb250cm9sIHN5c3RlbS4gIgorICAgICAgICAgICAgICJBcmUgeW91IGluIGEgd29ya2luZyBj
b3B5IGRpcmVjdG9yeT8iKSkKKworCitkZWYgUmVhbE1haW4oYXJndiwgZGF0YT1Ob25lKToKKyAg
IiIiVGhlIHJlYWwgbWFpbiBmdW5jdGlvbi4KKworICBBcmdzOgorICAgIGFyZ3Y6IENvbW1hbmQg
bGluZSBhcmd1bWVudHMuCisgICAgZGF0YTogRGlmZiBjb250ZW50cy4gSWYgTm9uZSAoZGVmYXVs
dCkgdGhlIGRpZmYgaXMgZ2VuZXJhdGVkIGJ5CisgICAgICB0aGUgVmVyc2lvbkNvbnRyb2xTeXN0
ZW0gaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYnkgR3Vlc3NWQ1MoKS4KKworICBSZXR1cm5zOgor
ICAgIEEgMi10dXBsZSAoaXNzdWUgaWQsIHBhdGNoc2V0IGlkKS4KKyAgICBUaGUgcGF0Y2hzZXQg
aWQgaXMgTm9uZSBpZiB0aGUgYmFzZSBmaWxlcyBhcmUgbm90IHVwbG9hZGVkIGJ5IHRoaXMKKyAg
ICBzY3JpcHQgKGFwcGxpZXMgb25seSB0byBTVk4gY2hlY2tvdXRzKS4KKyAgIiIiCisgIGxvZ2dp
bmcuYmFzaWNDb25maWcoZm9ybWF0PSgiJShhc2N0aW1lKS4xOXMgJShsZXZlbG5hbWUpcyAlKGZp
bGVuYW1lKXM6IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUobGluZW5vKXMgJSht
ZXNzYWdlKXMgIikpCisgIG9zLmVudmlyb25bJ0xDX0FMTCddID0gJ0MnCisgIG9wdGlvbnMsIGFy
Z3MgPSBwYXJzZXIucGFyc2VfYXJncyhhcmd2WzE6XSkKKyAgZ2xvYmFsIHZlcmJvc2l0eQorICB2
ZXJib3NpdHkgPSBvcHRpb25zLnZlcmJvc2UKKyAgaWYgdmVyYm9zaXR5ID49IDM6CisgICAgbG9n
Z2luZy5nZXRMb2dnZXIoKS5zZXRMZXZlbChsb2dnaW5nLkRFQlVHKQorICBlbGlmIHZlcmJvc2l0
eSA+PSAyOgorICAgIGxvZ2dpbmcuZ2V0TG9nZ2VyKCkuc2V0TGV2ZWwobG9nZ2luZy5JTkZPKQor
ICB2Y3MgPSBHdWVzc1ZDUyhvcHRpb25zKQorICBpZiBpc2luc3RhbmNlKHZjcywgU3VidmVyc2lv
blZDUyk6CisgICAgIyBiYXNlIGZpZWxkIGlzIG9ubHkgYWxsb3dlZCBmb3IgU3VidmVyc2lvbi4K
KyAgICAjIE5vdGU6IEZldGNoaW5nIGJhc2UgZmlsZXMgbWF5IGJlY29tZSBkZXByZWNhdGVkIGlu
IGZ1dHVyZSByZWxlYXNlcy4KKyAgICBiYXNlID0gdmNzLkd1ZXNzQmFzZShvcHRpb25zLmRvd25s
b2FkX2Jhc2UpCisgIGVsc2U6CisgICAgYmFzZSA9IE5vbmUKKyAgaWYgbm90IGJhc2UgYW5kIG9w
dGlvbnMuZG93bmxvYWRfYmFzZToKKyAgICBvcHRpb25zLmRvd25sb2FkX2Jhc2UgPSBUcnVlCisg
ICAgbG9nZ2luZy5pbmZvKCJFbmFibGVkIHVwbG9hZCBvZiBiYXNlIGZpbGUiKQorICBpZiBub3Qg
b3B0aW9ucy5hc3N1bWVfeWVzOgorICAgIHZjcy5DaGVja0ZvclVua25vd25GaWxlcygpCisgIGlm
IGRhdGEgaXMgTm9uZToKKyAgICBkYXRhID0gdmNzLkdlbmVyYXRlRGlmZihhcmdzKQorICBmaWxl
cyA9IHZjcy5HZXRCYXNlRmlsZXMoZGF0YSkKKyAgaWYgdmVyYm9zaXR5ID49IDE6CisgICAgcHJp
bnQgIlVwbG9hZCBzZXJ2ZXI6Iiwgb3B0aW9ucy5zZXJ2ZXIsICIoY2hhbmdlIHdpdGggLXMvLS1z
ZXJ2ZXIpIgorICBpZiBvcHRpb25zLmlzc3VlOgorICAgIHByb21wdCA9ICJNZXNzYWdlIGRlc2Ny
aWJpbmcgdGhpcyBwYXRjaCBzZXQ6ICIKKyAgZWxzZToKKyAgICBwcm9tcHQgPSAiTmV3IGlzc3Vl
IHN1YmplY3Q6ICIKKyAgbWVzc2FnZSA9IG9wdGlvbnMubWVzc2FnZSBvciByYXdfaW5wdXQocHJv
bXB0KS5zdHJpcCgpCisgIGlmIG5vdCBtZXNzYWdlOgorICAgIEVycm9yRXhpdCgiQSBub24tZW1w
dHkgbWVzc2FnZSBpcyByZXF1aXJlZCIpCisgIHJwY19zZXJ2ZXIgPSBHZXRScGNTZXJ2ZXIob3B0
aW9ucykKKyAgZm9ybV9maWVsZHMgPSBbKCJzdWJqZWN0IiwgbWVzc2FnZSldCisgIGlmIGJhc2U6
CisgICAgZm9ybV9maWVsZHMuYXBwZW5kKCgiYmFzZSIsIGJhc2UpKQorICBpZiBvcHRpb25zLmlz
c3VlOgorICAgIGZvcm1fZmllbGRzLmFwcGVuZCgoImlzc3VlIiwgc3RyKG9wdGlvbnMuaXNzdWUp
KSkKKyAgaWYgb3B0aW9ucy5lbWFpbDoKKyAgICBmb3JtX2ZpZWxkcy5hcHBlbmQoKCJ1c2VyIiwg
b3B0aW9ucy5lbWFpbCkpCisgIGlmIG9wdGlvbnMucmV2aWV3ZXJzOgorICAgIGZvciByZXZpZXdl
ciBpbiBvcHRpb25zLnJldmlld2Vycy5zcGxpdCgnLCcpOgorICAgICAgaWYgIkAiIGluIHJldmll
d2VyIGFuZCBub3QgcmV2aWV3ZXIuc3BsaXQoIkAiKVsxXS5jb3VudCgiLiIpID09IDE6CisgICAg
ICAgIEVycm9yRXhpdCgiSW52YWxpZCBlbWFpbCBhZGRyZXNzOiAlcyIgJSByZXZpZXdlcikKKyAg
ICBmb3JtX2ZpZWxkcy5hcHBlbmQoKCJyZXZpZXdlcnMiLCBvcHRpb25zLnJldmlld2VycykpCisg
IGlmIG9wdGlvbnMuY2M6CisgICAgZm9yIGNjIGluIG9wdGlvbnMuY2Muc3BsaXQoJywnKToKKyAg
ICAgIGlmICJAIiBpbiBjYyBhbmQgbm90IGNjLnNwbGl0KCJAIilbMV0uY291bnQoIi4iKSA9PSAx
OgorICAgICAgICBFcnJvckV4aXQoIkludmFsaWQgZW1haWwgYWRkcmVzczogJXMiICUgY2MpCisg
ICAgZm9ybV9maWVsZHMuYXBwZW5kKCgiY2MiLCBvcHRpb25zLmNjKSkKKyAgZGVzY3JpcHRpb24g
PSBvcHRpb25zLmRlc2NyaXB0aW9uCisgIGlmIG9wdGlvbnMuZGVzY3JpcHRpb25fZmlsZToKKyAg
ICBpZiBvcHRpb25zLmRlc2NyaXB0aW9uOgorICAgICAgRXJyb3JFeGl0KCJDYW4ndCBzcGVjaWZ5
IGRlc2NyaXB0aW9uIGFuZCBkZXNjcmlwdGlvbl9maWxlIikKKyAgICBmaWxlID0gb3BlbihvcHRp
b25zLmRlc2NyaXB0aW9uX2ZpbGUsICdyJykKKyAgICBkZXNjcmlwdGlvbiA9IGZpbGUucmVhZCgp
CisgICAgZmlsZS5jbG9zZSgpCisgIGlmIGRlc2NyaXB0aW9uOgorICAgIGZvcm1fZmllbGRzLmFw
cGVuZCgoImRlc2NyaXB0aW9uIiwgZGVzY3JpcHRpb24pKQorICAjIFNlbmQgYSBoYXNoIG9mIGFs
bCB0aGUgYmFzZSBmaWxlIHNvIHRoZSBzZXJ2ZXIgY2FuIGRldGVybWluZSBpZiBhIGNvcHkKKyAg
IyBhbHJlYWR5IGV4aXN0cyBpbiBhbiBlYXJsaWVyIHBhdGNoc2V0LgorICBiYXNlX2hhc2hlcyA9
ICIiCisgIGZvciBmaWxlLCBpbmZvIGluIGZpbGVzLml0ZXJpdGVtcygpOgorICAgIGlmIG5vdCBp
bmZvWzBdIGlzIE5vbmU6CisgICAgICBjaGVja3N1bSA9IG1kNS5uZXcoaW5mb1swXSkuaGV4ZGln
ZXN0KCkKKyAgICAgIGlmIGJhc2VfaGFzaGVzOgorICAgICAgICBiYXNlX2hhc2hlcyArPSAifCIK
KyAgICAgIGJhc2VfaGFzaGVzICs9IGNoZWNrc3VtICsgIjoiICsgZmlsZQorICBmb3JtX2ZpZWxk
cy5hcHBlbmQoKCJiYXNlX2hhc2hlcyIsIGJhc2VfaGFzaGVzKSkKKyAgIyBJZiB3ZSdyZSB1cGxv
YWRpbmcgYmFzZSBmaWxlcywgZG9uJ3Qgc2VuZCB0aGUgZW1haWwgYmVmb3JlIHRoZSB1cGxvYWRz
LCBzbworICAjIHRoYXQgaXQgY29udGFpbnMgdGhlIGZpbGUgc3RhdHVzLgorICBpZiBvcHRpb25z
LnNlbmRfbWFpbCBhbmQgb3B0aW9ucy5kb3dubG9hZF9iYXNlOgorICAgIGZvcm1fZmllbGRzLmFw
cGVuZCgoInNlbmRfbWFpbCIsICIxIikpCisgIGlmIG5vdCBvcHRpb25zLmRvd25sb2FkX2Jhc2U6
CisgICAgZm9ybV9maWVsZHMuYXBwZW5kKCgiY29udGVudF91cGxvYWQiLCAiMSIpKQorICBpZiBs
ZW4oZGF0YSkgPiBNQVhfVVBMT0FEX1NJWkU6CisgICAgcHJpbnQgIlBhdGNoIGlzIGxhcmdlLCBz
byB1cGxvYWRpbmcgZmlsZSBwYXRjaGVzIHNlcGFyYXRlbHkuIgorICAgIHVwbG9hZGVkX2RpZmZf
ZmlsZSA9IFtdCisgICAgZm9ybV9maWVsZHMuYXBwZW5kKCgic2VwYXJhdGVfcGF0Y2hlcyIsICIx
IikpCisgIGVsc2U6CisgICAgdXBsb2FkZWRfZGlmZl9maWxlID0gWygiZGF0YSIsICJkYXRhLmRp
ZmYiLCBkYXRhKV0KKyAgY3R5cGUsIGJvZHkgPSBFbmNvZGVNdWx0aXBhcnRGb3JtRGF0YShmb3Jt
X2ZpZWxkcywgdXBsb2FkZWRfZGlmZl9maWxlKQorICByZXNwb25zZV9ib2R5ID0gcnBjX3NlcnZl
ci5TZW5kKCIvdXBsb2FkIiwgYm9keSwgY29udGVudF90eXBlPWN0eXBlKQorICBwYXRjaHNldCA9
IE5vbmUKKyAgaWYgbm90IG9wdGlvbnMuZG93bmxvYWRfYmFzZSBvciBub3QgdXBsb2FkZWRfZGlm
Zl9maWxlOgorICAgIGxpbmVzID0gcmVzcG9uc2VfYm9keS5zcGxpdGxpbmVzKCkKKyAgICBpZiBs
ZW4obGluZXMpID49IDI6CisgICAgICBtc2cgPSBsaW5lc1swXQorICAgICAgcGF0Y2hzZXQgPSBs
aW5lc1sxXS5zdHJpcCgpCisgICAgICBwYXRjaGVzID0gW3guc3BsaXQoIiAiLCAxKSBmb3IgeCBp
biBsaW5lc1syOl1dCisgICAgZWxzZToKKyAgICAgIG1zZyA9IHJlc3BvbnNlX2JvZHkKKyAgZWxz
ZToKKyAgICBtc2cgPSByZXNwb25zZV9ib2R5CisgIFN0YXR1c1VwZGF0ZShtc2cpCisgIGlmIG5v
dCByZXNwb25zZV9ib2R5LnN0YXJ0c3dpdGgoIklzc3VlIGNyZWF0ZWQuIikgYW5kIFwKKyAgbm90
IHJlc3BvbnNlX2JvZHkuc3RhcnRzd2l0aCgiSXNzdWUgdXBkYXRlZC4iKToKKyAgICBzeXMuZXhp
dCgwKQorICBpc3N1ZSA9IG1zZ1ttc2cucmZpbmQoIi8iKSsxOl0KKworICBpZiBub3QgdXBsb2Fk
ZWRfZGlmZl9maWxlOgorICAgIHJlc3VsdCA9IFVwbG9hZFNlcGFyYXRlUGF0Y2hlcyhpc3N1ZSwg
cnBjX3NlcnZlciwgcGF0Y2hzZXQsIGRhdGEsIG9wdGlvbnMpCisgICAgaWYgbm90IG9wdGlvbnMu
ZG93bmxvYWRfYmFzZToKKyAgICAgIHBhdGNoZXMgPSByZXN1bHQKKworICBpZiBub3Qgb3B0aW9u
cy5kb3dubG9hZF9iYXNlOgorICAgIHZjcy5VcGxvYWRCYXNlRmlsZXMoaXNzdWUsIHJwY19zZXJ2
ZXIsIHBhdGNoZXMsIHBhdGNoc2V0LCBvcHRpb25zLCBmaWxlcykKKyAgICBpZiBvcHRpb25zLnNl
bmRfbWFpbDoKKyAgICAgIHJwY19zZXJ2ZXIuU2VuZCgiLyIgKyBpc3N1ZSArICIvbWFpbCIsIHBh
eWxvYWQ9IiIpCisgIHJldHVybiBpc3N1ZSwgcGF0Y2hzZXQKKworCitkZWYgbWFpbigpOgorICB0
cnk6CisgICAgUmVhbE1haW4oc3lzLmFyZ3YpCisgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoK
KyAgICBwcmludAorICAgIFN0YXR1c1VwZGF0ZSgiSW50ZXJydXB0ZWQuIikKKyAgICBzeXMuZXhp
dCgxKQorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgIG1haW4oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZW1vY2svc2NyaXB0cy91cGxvYWRfZ21vY2sucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zY3Jp
cHRzL3VwbG9hZF9nbW9jay5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZGM0ODRiMzkxMmJjMDNiYzYwZGM5MDVh
YjU2ZjJjMTFmMmI3MzM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc2NyaXB0cy91
cGxvYWRfZ21vY2sucHkKQEAgLTAsMCArMSw3OCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisj
CisjIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9u
LgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworIiIidXBsb2FkX2dtb2NrLnB5IHYwLjEuMCAtLSB1cGxvYWRz
IGEgR29vZ2xlIE1vY2sgcGF0Y2ggZm9yIHJldmlldy4KKworVGhpcyBzaW1wbGUgd3JhcHBlciBw
YXNzZXMgYWxsIGNvbW1hbmQgbGluZSBmbGFncyBhbmQKKy0tY2M9Z29vZ2xlbW9ja0Bnb29nbGVn
cm91cHMuY29tIHRvIHVwbG9hZC5weS4KKworVVNBR0U6IHVwbG9hZF9nbW9jay5weSBbb3B0aW9u
cyBmb3IgdXBsb2FkLnB5XQorIiIiCisKK19fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpo
YW55b25nIFdhbiknCisKK2ltcG9ydCBvcworaW1wb3J0IHN5cworCitDQ19GTEFHID0gJy0tY2M9
JworR01PQ0tfR1JPVVAgPSAnZ29vZ2xlbW9ja0Bnb29nbGVncm91cHMuY29tJworCisKK2RlZiBt
YWluKCk6CisgICMgRmluZHMgdGhlIHBhdGggdG8gdXBsb2FkLnB5LCBhc3N1bWluZyBpdCBpcyBp
biB0aGUgc2FtZSBkaXJlY3RvcnkKKyAgIyBhcyB0aGlzIGZpbGUuCisgIG15X2RpciA9IG9zLnBh
dGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoX19maWxlX18pKQorICB1cGxvYWRfcHlfcGF0aCA9
IG9zLnBhdGguam9pbihteV9kaXIsICd1cGxvYWQucHknKQorCisgICMgQWRkcyBHb29nbGUgTW9j
ayBkaXNjdXNzaW9uIGdyb3VwIHRvIHRoZSBjYyBsaW5lIGlmIGl0J3Mgbm90IHRoZXJlCisgICMg
YWxyZWFkeS4KKyAgdXBsb2FkX3B5X2FyZ3YgPSBbdXBsb2FkX3B5X3BhdGhdCisgIGZvdW5kX2Nj
X2ZsYWcgPSBGYWxzZQorICBmb3IgYXJnIGluIHN5cy5hcmd2WzE6XToKKyAgICBpZiBhcmcuc3Rh
cnRzd2l0aChDQ19GTEFHKToKKyAgICAgIGZvdW5kX2NjX2ZsYWcgPSBUcnVlCisgICAgICBjY19s
aW5lID0gYXJnW2xlbihDQ19GTEFHKTpdCisgICAgICBjY19saXN0ID0gW2FkZHIgZm9yIGFkZHIg
aW4gY2NfbGluZS5zcGxpdCgnLCcpIGlmIGFkZHJdCisgICAgICBpZiBHTU9DS19HUk9VUCBub3Qg
aW4gY2NfbGlzdDoKKyAgICAgICAgY2NfbGlzdC5hcHBlbmQoR01PQ0tfR1JPVVApCisgICAgICB1
cGxvYWRfcHlfYXJndi5hcHBlbmQoQ0NfRkxBRyArICcsJy5qb2luKGNjX2xpc3QpKQorICAgIGVs
c2U6CisgICAgICB1cGxvYWRfcHlfYXJndi5hcHBlbmQoYXJnKQorCisgIGlmIG5vdCBmb3VuZF9j
Y19mbGFnOgorICAgIHVwbG9hZF9weV9hcmd2LmFwcGVuZChDQ19GTEFHICsgR01PQ0tfR1JPVVAp
CisKKyAgIyBJbnZva2VzIHVwbG9hZC5weSB3aXRoIHRoZSBtb2RpZmllZCBjb21tYW5kIGxpbmUg
ZmxhZ3MuCisgIG9zLmV4ZWN2KHVwbG9hZF9weV9wYXRoLCB1cGxvYWRfcHlfYXJndikKKworCitp
ZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICBtYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVt
b2NrL3NyYy9nbW9jay1hbGwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zcmMvZ21vY2stYWxsLmNjCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjdhZWJjZTdhZmVmY2E4YTliYTU1Y2FjYWRiMjJmNmE5ZDA3MDhiN2IKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zcmMvZ21vY2stYWxsLmNjCkBAIC0wLDAgKzEsNDcgQEAK
Ky8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8g
ZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8v
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBBdXRo
b3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisvLworLy8gR29vZ2xlIEMrKyBNb2Nr
aW5nIEZyYW1ld29yayAoR29vZ2xlIE1vY2spCisvLworLy8gVGhpcyBmaWxlICNpbmNsdWRlcyBh
bGwgR29vZ2xlIE1vY2sgaW1wbGVtZW50YXRpb24gLmNjIGZpbGVzLiAgVGhlCisvLyBwdXJwb3Nl
IGlzIHRvIGFsbG93IGEgdXNlciB0byBidWlsZCBHb29nbGUgTW9jayBieSBjb21waWxpbmcgdGhp
cworLy8gZmlsZSBhbG9uZS4KKworLy8gVGhpcyBsaW5lIGVuc3VyZXMgdGhhdCBnbW9jay5oIGNh
biBiZSBjb21waWxlZCBvbiBpdHMgb3duLCBldmVuCisvLyB3aGVuIGl0J3MgZnVzZWQuCisjaW5j
bHVkZSAiZ21vY2svZ21vY2suaCIKKworLy8gVGhlIGZvbGxvd2luZyBsaW5lcyBwdWxsIGluIHRo
ZSByZWFsIGdtb2NrICouY2MgZmlsZXMuCisjaW5jbHVkZSAic3JjL2dtb2NrLWNhcmRpbmFsaXRp
ZXMuY2MiCisjaW5jbHVkZSAic3JjL2dtb2NrLWludGVybmFsLXV0aWxzLmNjIgorI2luY2x1ZGUg
InNyYy9nbW9jay1tYXRjaGVycy5jYyIKKyNpbmNsdWRlICJzcmMvZ21vY2stc3BlYy1idWlsZGVy
cy5jYyIKKyNpbmNsdWRlICJzcmMvZ21vY2suY2MiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9z
cmMvZ21vY2stY2FyZGluYWxpdGllcy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NyYy9nbW9jay1jYXJkaW5h
bGl0aWVzLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzNWI5NjZlODAxYmQ3YzY3YmYwOTUxMWZjYTA1Njc2NWM0
NmFlOWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zcmMvZ21vY2stY2FyZGluYWxp
dGllcy5jYwpAQCAtMCwwICsxLDE1NiBAQAorLy8gQ29weXJpZ2h0IDIwMDcsIEdvb2dsZSBJbmMu
CisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisv
LyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorLy8KKy8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdh
bikKKworLy8gR29vZ2xlIE1vY2sgLSBhIGZyYW1ld29yayBmb3Igd3JpdGluZyBDKysgbW9jayBj
bGFzc2VzLgorLy8KKy8vIFRoaXMgZmlsZSBpbXBsZW1lbnRzIGNhcmRpbmFsaXRpZXMuCisKKyNp
bmNsdWRlICJnbW9jay9nbW9jay1jYXJkaW5hbGl0aWVzLmgiCisKKyNpbmNsdWRlIDxsaW1pdHMu
aD4KKyNpbmNsdWRlIDxvc3RyZWFtPiAgLy8gTk9MSU5UCisjaW5jbHVkZSA8c3N0cmVhbT4KKyNp
bmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSAiZ21vY2svaW50ZXJuYWwvZ21vY2staW50ZXJuYWwt
dXRpbHMuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCituYW1lc3BhY2UgdGVzdGluZyB7
CisKK25hbWVzcGFjZSB7CisKKy8vIEltcGxlbWVudHMgdGhlIEJldHdlZW4obSwgbikgY2FyZGlu
YWxpdHkuCitjbGFzcyBCZXR3ZWVuQ2FyZGluYWxpdHlJbXBsIDogcHVibGljIENhcmRpbmFsaXR5
SW50ZXJmYWNlIHsKKyBwdWJsaWM6CisgIEJldHdlZW5DYXJkaW5hbGl0eUltcGwoaW50IG1pbiwg
aW50IG1heCkKKyAgICAgIDogbWluXyhtaW4gPj0gMCA/IG1pbiA6IDApLAorICAgICAgICBtYXhf
KG1heCA+PSBtaW5fID8gbWF4IDogbWluXykgeworICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHNzOwor
ICAgIGlmIChtaW4gPCAwKSB7CisgICAgICBzcyA8PCAiVGhlIGludm9jYXRpb24gbG93ZXIgYm91
bmQgbXVzdCBiZSA+PSAwLCAiCisgICAgICAgICA8PCAiYnV0IGlzIGFjdHVhbGx5ICIgPDwgbWlu
IDw8ICIuIjsKKyAgICAgIGludGVybmFsOjpFeHBlY3QoZmFsc2UsIF9fRklMRV9fLCBfX0xJTkVf
Xywgc3Muc3RyKCkpOworICAgIH0gZWxzZSBpZiAobWF4IDwgMCkgeworICAgICAgc3MgPDwgIlRo
ZSBpbnZvY2F0aW9uIHVwcGVyIGJvdW5kIG11c3QgYmUgPj0gMCwgIgorICAgICAgICAgPDwgImJ1
dCBpcyBhY3R1YWxseSAiIDw8IG1heCA8PCAiLiI7CisgICAgICBpbnRlcm5hbDo6RXhwZWN0KGZh
bHNlLCBfX0ZJTEVfXywgX19MSU5FX18sIHNzLnN0cigpKTsKKyAgICB9IGVsc2UgaWYgKG1pbiA+
IG1heCkgeworICAgICAgc3MgPDwgIlRoZSBpbnZvY2F0aW9uIHVwcGVyIGJvdW5kICgiIDw8IG1h
eAorICAgICAgICAgPDwgIikgbXVzdCBiZSA+PSB0aGUgaW52b2NhdGlvbiBsb3dlciBib3VuZCAo
IiA8PCBtaW4KKyAgICAgICAgIDw8ICIpLiI7CisgICAgICBpbnRlcm5hbDo6RXhwZWN0KGZhbHNl
LCBfX0ZJTEVfXywgX19MSU5FX18sIHNzLnN0cigpKTsKKyAgICB9CisgIH0KKworICAvLyBDb25z
ZXJ2YXRpdmUgZXN0aW1hdGUgb24gdGhlIGxvd2VyL3VwcGVyIGJvdW5kIG9mIHRoZSBudW1iZXIg
b2YKKyAgLy8gY2FsbHMgYWxsb3dlZC4KKyAgdmlydHVhbCBpbnQgQ29uc2VydmF0aXZlTG93ZXJC
b3VuZCgpIGNvbnN0IHsgcmV0dXJuIG1pbl87IH0KKyAgdmlydHVhbCBpbnQgQ29uc2VydmF0aXZl
VXBwZXJCb3VuZCgpIGNvbnN0IHsgcmV0dXJuIG1heF87IH0KKworICB2aXJ0dWFsIGJvb2wgSXNT
YXRpc2ZpZWRCeUNhbGxDb3VudChpbnQgY2FsbF9jb3VudCkgY29uc3QgeworICAgIHJldHVybiBt
aW5fIDw9IGNhbGxfY291bnQgJiYgY2FsbF9jb3VudCA8PSBtYXhfOworICB9CisKKyAgdmlydHVh
bCBib29sIElzU2F0dXJhdGVkQnlDYWxsQ291bnQoaW50IGNhbGxfY291bnQpIGNvbnN0IHsKKyAg
ICByZXR1cm4gY2FsbF9jb3VudCA+PSBtYXhfOworICB9CisKKyAgdmlydHVhbCB2b2lkIERlc2Ny
aWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdDsKKworIHByaXZhdGU6CisgIGNvbnN0IGlu
dCBtaW5fOworICBjb25zdCBpbnQgbWF4XzsKKworICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9B
U1NJR05fKEJldHdlZW5DYXJkaW5hbGl0eUltcGwpOworfTsKKworLy8gRm9ybWF0cyAibiB0aW1l
cyIgaW4gYSBodW1hbi1mcmllbmRseSB3YXkuCitpbmxpbmUgc3RkOjpzdHJpbmcgRm9ybWF0VGlt
ZXMoaW50IG4pIHsKKyAgaWYgKG4gPT0gMSkgeworICAgIHJldHVybiAib25jZSI7CisgIH0gZWxz
ZSBpZiAobiA9PSAyKSB7CisgICAgcmV0dXJuICJ0d2ljZSI7CisgIH0gZWxzZSB7CisgICAgc3Rk
OjpzdHJpbmdzdHJlYW0gc3M7CisgICAgc3MgPDwgbiA8PCAiIHRpbWVzIjsKKyAgICByZXR1cm4g
c3Muc3RyKCk7CisgIH0KK30KKworLy8gRGVzY3JpYmVzIHRoZSBCZXR3ZWVuKG0sIG4pIGNhcmRp
bmFsaXR5IGluIGh1bWFuLWZyaWVuZGx5IHRleHQuCit2b2lkIEJldHdlZW5DYXJkaW5hbGl0eUlt
cGw6OkRlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7CisgIGlmIChtaW5fID09
IDApIHsKKyAgICBpZiAobWF4XyA9PSAwKSB7CisgICAgICAqb3MgPDwgIm5ldmVyIGNhbGxlZCI7
CisgICAgfSBlbHNlIGlmIChtYXhfID09IElOVF9NQVgpIHsKKyAgICAgICpvcyA8PCAiY2FsbGVk
IGFueSBudW1iZXIgb2YgdGltZXMiOworICAgIH0gZWxzZSB7CisgICAgICAqb3MgPDwgImNhbGxl
ZCBhdCBtb3N0ICIgPDwgRm9ybWF0VGltZXMobWF4Xyk7CisgICAgfQorICB9IGVsc2UgaWYgKG1p
bl8gPT0gbWF4XykgeworICAgICpvcyA8PCAiY2FsbGVkICIgPDwgRm9ybWF0VGltZXMobWluXyk7
CisgIH0gZWxzZSBpZiAobWF4XyA9PSBJTlRfTUFYKSB7CisgICAgKm9zIDw8ICJjYWxsZWQgYXQg
bGVhc3QgIiA8PCBGb3JtYXRUaW1lcyhtaW5fKTsKKyAgfSBlbHNlIHsKKyAgICAvLyAwIDwgbWlu
XyA8IG1heF8gPCBJTlRfTUFYCisgICAgKm9zIDw8ICJjYWxsZWQgYmV0d2VlbiAiIDw8IG1pbl8g
PDwgIiBhbmQgIiA8PCBtYXhfIDw8ICIgdGltZXMiOworICB9Cit9CisKK30gIC8vIFVubmFtZWQg
bmFtZXNwYWNlCisKKy8vIERlc2NyaWJlcyB0aGUgZ2l2ZW4gY2FsbCBjb3VudCB0byBhbiBvc3Ry
ZWFtLgordm9pZCBDYXJkaW5hbGl0eTo6RGVzY3JpYmVBY3R1YWxDYWxsQ291bnRUbyhpbnQgYWN0
dWFsX2NhbGxfY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBpZiAoYWN0dWFsX2NhbGxfY291bnQgPiAwKSB7
CisgICAgKm9zIDw8ICJjYWxsZWQgIiA8PCBGb3JtYXRUaW1lcyhhY3R1YWxfY2FsbF9jb3VudCk7
CisgIH0gZWxzZSB7CisgICAgKm9zIDw8ICJuZXZlciBjYWxsZWQiOworICB9Cit9CisKKy8vIENy
ZWF0ZXMgYSBjYXJkaW5hbGl0eSB0aGF0IGFsbG93cyBhdCBsZWFzdCBuIGNhbGxzLgorR1RFU1Rf
QVBJXyBDYXJkaW5hbGl0eSBBdExlYXN0KGludCBuKSB7IHJldHVybiBCZXR3ZWVuKG4sIElOVF9N
QVgpOyB9CisKKy8vIENyZWF0ZXMgYSBjYXJkaW5hbGl0eSB0aGF0IGFsbG93cyBhdCBtb3N0IG4g
Y2FsbHMuCitHVEVTVF9BUElfIENhcmRpbmFsaXR5IEF0TW9zdChpbnQgbikgeyByZXR1cm4gQmV0
d2VlbigwLCBuKTsgfQorCisvLyBDcmVhdGVzIGEgY2FyZGluYWxpdHkgdGhhdCBhbGxvd3MgYW55
IG51bWJlciBvZiBjYWxscy4KK0dURVNUX0FQSV8gQ2FyZGluYWxpdHkgQW55TnVtYmVyKCkgeyBy
ZXR1cm4gQXRMZWFzdCgwKTsgfQorCisvLyBDcmVhdGVzIGEgY2FyZGluYWxpdHkgdGhhdCBhbGxv
d3MgYmV0d2VlbiBtaW4gYW5kIG1heCBjYWxscy4KK0dURVNUX0FQSV8gQ2FyZGluYWxpdHkgQmV0
d2VlbihpbnQgbWluLCBpbnQgbWF4KSB7CisgIHJldHVybiBDYXJkaW5hbGl0eShuZXcgQmV0d2Vl
bkNhcmRpbmFsaXR5SW1wbChtaW4sIG1heCkpOworfQorCisvLyBDcmVhdGVzIGEgY2FyZGluYWxp
dHkgdGhhdCBhbGxvd3MgZXhhY3RseSBuIGNhbGxzLgorR1RFU1RfQVBJXyBDYXJkaW5hbGl0eSBF
eGFjdGx5KGludCBuKSB7IHJldHVybiBCZXR3ZWVuKG4sIG4pOyB9CisKK30gIC8vIG5hbWVzcGFj
ZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zcmMvZ21vY2staW50ZXJuYWwtdXRp
bHMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xlbW9jay9zcmMvZ21vY2staW50ZXJuYWwtdXRpbHMuY2MKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjQ2NGFiYzI0MWYxOWJhNzZiYTFjOTJlYWUxMTkxMjYzYTkwNDJjMwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGVtb2NrL3NyYy9nbW9jay1pbnRlcm5hbC11dGlscy5jYwpAQCAtMCwwICsx
LDE3MyBAQAorLy8gQ29weXJpZ2h0IDIwMDcsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8K
Ky8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
Ly8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8K
Ky8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKworLy8gR29vZ2xlIE1v
Y2sgLSBhIGZyYW1ld29yayBmb3Igd3JpdGluZyBDKysgbW9jayBjbGFzc2VzLgorLy8KKy8vIFRo
aXMgZmlsZSBkZWZpbmVzIHNvbWUgdXRpbGl0aWVzIHVzZWZ1bCBmb3IgaW1wbGVtZW50aW5nIEdv
b2dsZQorLy8gTW9jay4gIFRoZXkgYXJlIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNl
LCBzbyBwbGVhc2UgRE8gTk9UCisvLyBVU0UgVEhFTSBJTiBVU0VSIENPREUuCisKKyNpbmNsdWRl
ICJnbW9jay9pbnRlcm5hbC9nbW9jay1pbnRlcm5hbC11dGlscy5oIgorCisjaW5jbHVkZSA8Y3R5
cGUuaD4KKyNpbmNsdWRlIDxvc3RyZWFtPiAgLy8gTk9MSU5UCisjaW5jbHVkZSA8c3RyaW5nPgor
I2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCisjaW5jbHVkZSAiZ21vY2svaW50ZXJuYWwvZ21vY2st
cG9ydC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB0ZXN0aW5nIHsK
K25hbWVzcGFjZSBpbnRlcm5hbCB7CisKKy8vIENvbnZlcnRzIGFuIGlkZW50aWZpZXIgbmFtZSB0
byBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGxvd2VyLWNhc2UKKy8vIHdvcmRzLiAgRWFjaCBt
YXhpbXVtIHN1YnN0cmluZyBvZiB0aGUgZm9ybSBbQS1aYS16XVthLXpdKnxcZCsgaXMKKy8vIHRy
ZWF0ZWQgYXMgb25lIHdvcmQuICBGb3IgZXhhbXBsZSwgYm90aCAiRm9vQmFyMTIzIiBhbmQKKy8v
ICJmb29fYmFyXzEyMyIgYXJlIGNvbnZlcnRlZCB0byAiZm9vIGJhciAxMjMiLgorR1RFU1RfQVBJ
XyBzdHJpbmcgQ29udmVydElkZW50aWZpZXJOYW1lVG9Xb3Jkcyhjb25zdCBjaGFyKiBpZF9uYW1l
KSB7CisgIHN0cmluZyByZXN1bHQ7CisgIGNoYXIgcHJldl9jaGFyID0gJ1wwJzsKKyAgZm9yIChj
b25zdCBjaGFyKiBwID0gaWRfbmFtZTsgKnAgIT0gJ1wwJzsgcHJldl9jaGFyID0gKihwKyspKSB7
CisgICAgLy8gV2UgZG9uJ3QgY2FyZSBhYm91dCB0aGUgY3VycmVudCBsb2NhbGUgYXMgdGhlIGlu
cHV0IGlzCisgICAgLy8gZ3VhcmFudGVlZCB0byBiZSBhIHZhbGlkIEMrKyBpZGVudGlmaWVyIG5h
bWUuCisgICAgY29uc3QgYm9vbCBzdGFydHNfbmV3X3dvcmQgPSBJc1VwcGVyKCpwKSB8fAorICAg
ICAgICAoIUlzQWxwaGEocHJldl9jaGFyKSAmJiBJc0xvd2VyKCpwKSkgfHwKKyAgICAgICAgKCFJ
c0RpZ2l0KHByZXZfY2hhcikgJiYgSXNEaWdpdCgqcCkpOworCisgICAgaWYgKElzQWxOdW0oKnAp
KSB7CisgICAgICBpZiAoc3RhcnRzX25ld193b3JkICYmIHJlc3VsdCAhPSAiIikKKyAgICAgICAg
cmVzdWx0ICs9ICcgJzsKKyAgICAgIHJlc3VsdCArPSBUb0xvd2VyKCpwKTsKKyAgICB9CisgIH0K
KyAgcmV0dXJuIHJlc3VsdDsKK30KKworLy8gVGhpcyBjbGFzcyByZXBvcnRzIEdvb2dsZSBNb2Nr
IGZhaWx1cmVzIGFzIEdvb2dsZSBUZXN0IGZhaWx1cmVzLiAgQQorLy8gdXNlciBjYW4gZGVmaW5l
IGFub3RoZXIgY2xhc3MgaW4gYSBzaW1pbGFyIGZhc2hpb24gaWYgaGUgaW50ZW5kcyB0bworLy8g
dXNlIEdvb2dsZSBNb2NrIHdpdGggYSB0ZXN0aW5nIGZyYW1ld29yayBvdGhlciB0aGFuIEdvb2ds
ZSBUZXN0LgorY2xhc3MgR29vZ2xlVGVzdEZhaWx1cmVSZXBvcnRlciA6IHB1YmxpYyBGYWlsdXJl
UmVwb3J0ZXJJbnRlcmZhY2UgeworIHB1YmxpYzoKKyAgdmlydHVhbCB2b2lkIFJlcG9ydEZhaWx1
cmUoRmFpbHVyZVR5cGUgdHlwZSwgY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKSB7CisgICAg
QXNzZXJ0SGVscGVyKHR5cGUgPT0ga0ZhdGFsID8KKyAgICAgICAgICAgICAgICAgVGVzdFBhcnRS
ZXN1bHQ6OmtGYXRhbEZhaWx1cmUgOgorICAgICAgICAgICAgICAgICBUZXN0UGFydFJlc3VsdDo6
a05vbkZhdGFsRmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgZmlsZSwKKyAgICAgICAgICAgICAg
ICAgbGluZSwKKyAgICAgICAgICAgICAgICAgbWVzc2FnZS5jX3N0cigpKSA9IE1lc3NhZ2UoKTsK
KyAgICBpZiAodHlwZSA9PSBrRmF0YWwpIHsKKyAgICAgIHBvc2l4OjpBYm9ydCgpOworICAgIH0K
KyAgfQorfTsKKworLy8gUmV0dXJucyB0aGUgZ2xvYmFsIGZhaWx1cmUgcmVwb3J0ZXIuICBXaWxs
IGNyZWF0ZSBhCisvLyBHb29nbGVUZXN0RmFpbHVyZVJlcG9ydGVyIGFuZCByZXR1cm4gaXQgdGhl
IGZpcnN0IHRpbWUgY2FsbGVkLgorR1RFU1RfQVBJXyBGYWlsdXJlUmVwb3J0ZXJJbnRlcmZhY2Uq
IEdldEZhaWx1cmVSZXBvcnRlcigpIHsKKyAgLy8gUG9pbnRzIHRvIHRoZSBnbG9iYWwgZmFpbHVy
ZSByZXBvcnRlciB1c2VkIGJ5IEdvb2dsZSBNb2NrLiAgZ2NjCisgIC8vIGd1YXJhbnRlZXMgdGhh
dCB0aGUgZm9sbG93aW5nIHVzZSBvZiBmYWlsdXJlX3JlcG9ydGVyIGlzCisgIC8vIHRocmVhZC1z
YWZlLiAgV2UgbWF5IG5lZWQgdG8gYWRkIGFkZGl0aW9uYWwgc3luY2hyb25pemF0aW9uIHRvCisg
IC8vIHByb3RlY3QgZmFpbHVyZV9yZXBvcnRlciBpZiB3ZSBwb3J0IEdvb2dsZSBNb2NrIHRvIG90
aGVyCisgIC8vIGNvbXBpbGVycy4KKyAgc3RhdGljIEZhaWx1cmVSZXBvcnRlckludGVyZmFjZSog
Y29uc3QgZmFpbHVyZV9yZXBvcnRlciA9CisgICAgICBuZXcgR29vZ2xlVGVzdEZhaWx1cmVSZXBv
cnRlcigpOworICByZXR1cm4gZmFpbHVyZV9yZXBvcnRlcjsKK30KKworLy8gUHJvdGVjdHMgZ2xv
YmFsIHJlc291cmNlcyAoc3Rkb3V0IGluIHBhcnRpY3VsYXIpIHVzZWQgYnkgTG9nKCkuCitzdGF0
aWMgR1RFU1RfREVGSU5FX1NUQVRJQ19NVVRFWF8oZ19sb2dfbXV0ZXgpOworCisvLyBSZXR1cm5z
IHRydWUgaWZmIGEgbG9nIHdpdGggdGhlIGdpdmVuIHNldmVyaXR5IGlzIHZpc2libGUgYWNjb3Jk
aW5nCisvLyB0byB0aGUgLS1nbW9ja192ZXJib3NlIGZsYWcuCitHVEVTVF9BUElfIGJvb2wgTG9n
SXNWaXNpYmxlKExvZ1NldmVyaXR5IHNldmVyaXR5KSB7CisgIGlmIChHTU9DS19GTEFHKHZlcmJv
c2UpID09IGtJbmZvVmVyYm9zaXR5KSB7CisgICAgLy8gQWx3YXlzIHNob3cgdGhlIGxvZyBpZiAt
LWdtb2NrX3ZlcmJvc2U9aW5mby4KKyAgICByZXR1cm4gdHJ1ZTsKKyAgfSBlbHNlIGlmIChHTU9D
S19GTEFHKHZlcmJvc2UpID09IGtFcnJvclZlcmJvc2l0eSkgeworICAgIC8vIEFsd2F5cyBoaWRl
IGl0IGlmIC0tZ21vY2tfdmVyYm9zZT1lcnJvci4KKyAgICByZXR1cm4gZmFsc2U7CisgIH0gZWxz
ZSB7CisgICAgLy8gSWYgLS1nbW9ja192ZXJib3NlIGlzIG5laXRoZXIgImluZm8iIG5vciAiZXJy
b3IiLCB3ZSB0cmVhdCBpdAorICAgIC8vIGFzICJ3YXJuaW5nIiAoaXRzIGRlZmF1bHQgdmFsdWUp
LgorICAgIHJldHVybiBzZXZlcml0eSA9PSBrV2FybmluZzsKKyAgfQorfQorCisvLyBQcmludHMg
dGhlIGdpdmVuIG1lc3NhZ2UgdG8gc3Rkb3V0IGlmZiAnc2V2ZXJpdHknID49IHRoZSBsZXZlbAor
Ly8gc3BlY2lmaWVkIGJ5IHRoZSAtLWdtb2NrX3ZlcmJvc2UgZmxhZy4gIElmIHN0YWNrX2ZyYW1l
c190b19za2lwID49CisvLyAwLCBhbHNvIHByaW50cyB0aGUgc3RhY2sgdHJhY2UgZXhjbHVkaW5n
IHRoZSB0b3AKKy8vIHN0YWNrX2ZyYW1lc190b19za2lwIGZyYW1lcy4gIEluIG9wdCBtb2RlLCBh
bnkgcG9zaXRpdmUKKy8vIHN0YWNrX2ZyYW1lc190b19za2lwIGlzIHRyZWF0ZWQgYXMgMCwgc2lu
Y2Ugd2UgZG9uJ3Qga25vdyB3aGljaAorLy8gZnVuY3Rpb24gY2FsbHMgd2lsbCBiZSBpbmxpbmVk
IGJ5IHRoZSBjb21waWxlciBhbmQgbmVlZCB0byBiZQorLy8gY29uc2VydmF0aXZlLgorR1RFU1Rf
QVBJXyB2b2lkIExvZyhMb2dTZXZlcml0eSBzZXZlcml0eSwgY29uc3Qgc3RkOjpzdHJpbmcmIG1l
c3NhZ2UsCisgICAgICAgICAgICAgICAgICAgIGludCBzdGFja19mcmFtZXNfdG9fc2tpcCkgewor
ICBpZiAoIUxvZ0lzVmlzaWJsZShzZXZlcml0eSkpCisgICAgcmV0dXJuOworCisgIC8vIEVuc3Vy
ZXMgdGhhdCBsb2dzIGZyb20gZGlmZmVyZW50IHRocmVhZHMgZG9uJ3QgaW50ZXJsZWF2ZS4KKyAg
TXV0ZXhMb2NrIGwoJmdfbG9nX211dGV4KTsKKworICAvLyAidXNpbmcgOjpzdGQ6OmNvdXQ7IiBk
b2Vzbid0IHdvcmsgd2l0aCBTeW1iaWFuJ3MgU1RMcG9ydCwgd2hlcmUgY291dCBpcyBhCisgIC8v
IG1hY3JvLgorCisgIGlmIChzZXZlcml0eSA9PSBrV2FybmluZykgeworICAgIC8vIFByaW50cyBh
IEdNT0NLIFdBUk5JTkcgbWFya2VyIHRvIG1ha2UgdGhlIHdhcm5pbmdzIGVhc2lseSBzZWFyY2hh
YmxlLgorICAgIHN0ZDo6Y291dCA8PCAiXG5HTU9DSyBXQVJOSU5HOiI7CisgIH0KKyAgLy8gUHJl
LXBlbmRzIGEgbmV3LWxpbmUgdG8gbWVzc2FnZSBpZiBpdCBkb2Vzbid0IHN0YXJ0IHdpdGggb25l
LgorICBpZiAobWVzc2FnZS5lbXB0eSgpIHx8IG1lc3NhZ2VbMF0gIT0gJ1xuJykgeworICAgIHN0
ZDo6Y291dCA8PCAiXG4iOworICB9CisgIHN0ZDo6Y291dCA8PCBtZXNzYWdlOworICBpZiAoc3Rh
Y2tfZnJhbWVzX3RvX3NraXAgPj0gMCkgeworI2lmZGVmIE5ERUJVRworICAgIC8vIEluIG9wdCBt
b2RlLCB3ZSBoYXZlIHRvIGJlIGNvbnNlcnZhdGl2ZSBhbmQgc2tpcCBubyBzdGFjayBmcmFtZS4K
KyAgICBjb25zdCBpbnQgYWN0dWFsX3RvX3NraXAgPSAwOworI2Vsc2UKKyAgICAvLyBJbiBkYmcg
bW9kZSwgd2UgY2FuIGRvIHdoYXQgdGhlIGNhbGxlciB0ZWxsIHVzIHRvIGRvIChwbHVzIG9uZQor
ICAgIC8vIGZvciBza2lwcGluZyB0aGlzIGZ1bmN0aW9uJ3Mgc3RhY2sgZnJhbWUpLgorICAgIGNv
bnN0IGludCBhY3R1YWxfdG9fc2tpcCA9IHN0YWNrX2ZyYW1lc190b19za2lwICsgMTsKKyNlbmRp
ZiAgLy8gTkRFQlVHCisKKyAgICAvLyBBcHBlbmRzIGEgbmV3LWxpbmUgdG8gbWVzc2FnZSBpZiBp
dCBkb2Vzbid0IGVuZCB3aXRoIG9uZS4KKyAgICBpZiAoIW1lc3NhZ2UuZW1wdHkoKSAmJiAqbWVz
c2FnZS5yYmVnaW4oKSAhPSAnXG4nKSB7CisgICAgICBzdGQ6OmNvdXQgPDwgIlxuIjsKKyAgICB9
CisgICAgc3RkOjpjb3V0IDw8ICJTdGFjayB0cmFjZTpcbiIKKyAgICAgICAgIDw8IDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OkdldEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AoCisgICAgICAgICAg
ICAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKSwgYWN0dWFsX3RvX3NraXApOwor
ICB9CisgIHN0ZDo6Y291dCA8PCA6OnN0ZDo6Zmx1c2g7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBp
bnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2Nr
L3NyYy9nbW9jay1tYXRjaGVycy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NyYy9nbW9jay1tYXRjaGVycy5j
YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lMGRlMjVjYjkyN2E3NzAzYWUwYzMwMmY2NjA4NTA4ZTFkYjZmZDVmCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc3JjL2dtb2NrLW1hdGNoZXJzLmNjCkBAIC0w
LDAgKzEsNDk3IEBACisvLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6
CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
Ky8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8K
Ky8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisvLworLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorCisvLyBHb29n
bGUgTW9jayAtIGEgZnJhbWV3b3JrIGZvciB3cml0aW5nIEMrKyBtb2NrIGNsYXNzZXMuCisvLwor
Ly8gVGhpcyBmaWxlIGltcGxlbWVudHMgTWF0Y2hlcjxjb25zdCBzdHJpbmcmPiwgTWF0Y2hlcjxz
dHJpbmc+LCBhbmQKKy8vIHV0aWxpdGllcyBmb3IgZGVmaW5pbmcgbWF0Y2hlcnMuCisKKyNpbmNs
dWRlICJnbW9jay9nbW9jay1tYXRjaGVycy5oIgorI2luY2x1ZGUgImdtb2NrL2dtb2NrLWdlbmVy
YXRlZC1tYXRjaGVycy5oIgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3N0cmVh
bT4KKyNpbmNsdWRlIDxzdHJpbmc+CisKK25hbWVzcGFjZSB0ZXN0aW5nIHsKKworLy8gQ29uc3Ry
dWN0cyBhIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGEgY29uc3Qgc3RyaW5nJiB3aG9zZSB2YWx1ZSBp
cworLy8gZXF1YWwgdG8gcy4KK01hdGNoZXI8Y29uc3QgaW50ZXJuYWw6OnN0cmluZyY+OjpNYXRj
aGVyKGNvbnN0IGludGVybmFsOjpzdHJpbmcmIHMpIHsKKyAgKnRoaXMgPSBFcShzKTsKK30KKwor
Ly8gQ29uc3RydWN0cyBhIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGEgY29uc3Qgc3RyaW5nJiB3aG9z
ZSB2YWx1ZSBpcworLy8gZXF1YWwgdG8gcy4KK01hdGNoZXI8Y29uc3QgaW50ZXJuYWw6OnN0cmlu
ZyY+OjpNYXRjaGVyKGNvbnN0IGNoYXIqIHMpIHsKKyAgKnRoaXMgPSBFcShpbnRlcm5hbDo6c3Ry
aW5nKHMpKTsKK30KKworLy8gQ29uc3RydWN0cyBhIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGEgc3Ry
aW5nIHdob3NlIHZhbHVlIGlzIGVxdWFsIHRvIHMuCitNYXRjaGVyPGludGVybmFsOjpzdHJpbmc+
OjpNYXRjaGVyKGNvbnN0IGludGVybmFsOjpzdHJpbmcmIHMpIHsgKnRoaXMgPSBFcShzKTsgfQor
CisvLyBDb25zdHJ1Y3RzIGEgbWF0Y2hlciB0aGF0IG1hdGNoZXMgYSBzdHJpbmcgd2hvc2UgdmFs
dWUgaXMgZXF1YWwgdG8gcy4KK01hdGNoZXI8aW50ZXJuYWw6OnN0cmluZz46Ok1hdGNoZXIoY29u
c3QgY2hhciogcykgeworICAqdGhpcyA9IEVxKGludGVybmFsOjpzdHJpbmcocykpOworfQorCisj
aWYgR1RFU1RfSEFTX1NUUklOR19QSUVDRV8KKy8vIENvbnN0cnVjdHMgYSBtYXRjaGVyIHRoYXQg
bWF0Y2hlcyBhIGNvbnN0IFN0cmluZ1BpZWNlJiB3aG9zZSB2YWx1ZSBpcworLy8gZXF1YWwgdG8g
cy4KK01hdGNoZXI8Y29uc3QgU3RyaW5nUGllY2UmPjo6TWF0Y2hlcihjb25zdCBpbnRlcm5hbDo6
c3RyaW5nJiBzKSB7CisgICp0aGlzID0gRXEocyk7Cit9CisKKy8vIENvbnN0cnVjdHMgYSBtYXRj
aGVyIHRoYXQgbWF0Y2hlcyBhIGNvbnN0IFN0cmluZ1BpZWNlJiB3aG9zZSB2YWx1ZSBpcworLy8g
ZXF1YWwgdG8gcy4KK01hdGNoZXI8Y29uc3QgU3RyaW5nUGllY2UmPjo6TWF0Y2hlcihjb25zdCBj
aGFyKiBzKSB7CisgICp0aGlzID0gRXEoaW50ZXJuYWw6OnN0cmluZyhzKSk7Cit9CisKKy8vIENv
bnN0cnVjdHMgYSBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhIGNvbnN0IFN0cmluZ1BpZWNlJiB3aG9z
ZSB2YWx1ZSBpcworLy8gZXF1YWwgdG8gcy4KK01hdGNoZXI8Y29uc3QgU3RyaW5nUGllY2UmPjo6
TWF0Y2hlcihTdHJpbmdQaWVjZSBzKSB7CisgICp0aGlzID0gRXEocy5Ub1N0cmluZygpKTsKK30K
KworLy8gQ29uc3RydWN0cyBhIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGEgU3RyaW5nUGllY2Ugd2hv
c2UgdmFsdWUgaXMgZXF1YWwgdG8gcy4KK01hdGNoZXI8U3RyaW5nUGllY2U+OjpNYXRjaGVyKGNv
bnN0IGludGVybmFsOjpzdHJpbmcmIHMpIHsKKyAgKnRoaXMgPSBFcShzKTsKK30KKworLy8gQ29u
c3RydWN0cyBhIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGEgU3RyaW5nUGllY2Ugd2hvc2UgdmFsdWUg
aXMgZXF1YWwgdG8gcy4KK01hdGNoZXI8U3RyaW5nUGllY2U+OjpNYXRjaGVyKGNvbnN0IGNoYXIq
IHMpIHsKKyAgKnRoaXMgPSBFcShpbnRlcm5hbDo6c3RyaW5nKHMpKTsKK30KKworLy8gQ29uc3Ry
dWN0cyBhIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGEgU3RyaW5nUGllY2Ugd2hvc2UgdmFsdWUgaXMg
ZXF1YWwgdG8gcy4KK01hdGNoZXI8U3RyaW5nUGllY2U+OjpNYXRjaGVyKFN0cmluZ1BpZWNlIHMp
IHsKKyAgKnRoaXMgPSBFcShzLlRvU3RyaW5nKCkpOworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNf
U1RSSU5HX1BJRUNFXworCituYW1lc3BhY2UgaW50ZXJuYWwgeworCisvLyBKb2lucyBhIHZlY3Rv
ciBvZiBzdHJpbmdzIGFzIGlmIHRoZXkgYXJlIGZpZWxkcyBvZiBhIHR1cGxlOyByZXR1cm5zCisv
LyB0aGUgam9pbmVkIHN0cmluZy4KK0dURVNUX0FQSV8gc3RyaW5nIEpvaW5Bc1R1cGxlKGNvbnN0
IFN0cmluZ3MmIGZpZWxkcykgeworICBzd2l0Y2ggKGZpZWxkcy5zaXplKCkpIHsKKyAgICBjYXNl
IDA6CisgICAgICByZXR1cm4gIiI7CisgICAgY2FzZSAxOgorICAgICAgcmV0dXJuIGZpZWxkc1sw
XTsKKyAgICBkZWZhdWx0OgorICAgICAgc3RyaW5nIHJlc3VsdCA9ICIoIiArIGZpZWxkc1swXTsK
KyAgICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgZmllbGRzLnNpemUoKTsgaSsrKSB7CisgICAg
ICAgIHJlc3VsdCArPSAiLCAiOworICAgICAgICByZXN1bHQgKz0gZmllbGRzW2ldOworICAgICAg
fQorICAgICAgcmVzdWx0ICs9ICIpIjsKKyAgICAgIHJldHVybiByZXN1bHQ7CisgIH0KK30KKwor
Ly8gUmV0dXJucyB0aGUgZGVzY3JpcHRpb24gZm9yIGEgbWF0Y2hlciBkZWZpbmVkIHVzaW5nIHRo
ZSBNQVRDSEVSKigpCisvLyBtYWNybyB3aGVyZSB0aGUgdXNlci1zdXBwbGllZCBkZXNjcmlwdGlv
biBzdHJpbmcgaXMgIiIsIGlmCisvLyAnbmVnYXRpb24nIGlzIGZhbHNlOyBvdGhlcndpc2UgcmV0
dXJucyB0aGUgZGVzY3JpcHRpb24gb2YgdGhlCisvLyBuZWdhdGlvbiBvZiB0aGUgbWF0Y2hlci4g
ICdwYXJhbV92YWx1ZXMnIGNvbnRhaW5zIGEgbGlzdCBvZiBzdHJpbmdzCisvLyB0aGF0IGFyZSB0
aGUgcHJpbnQtb3V0IG9mIHRoZSBtYXRjaGVyJ3MgcGFyYW1ldGVycy4KK0dURVNUX0FQSV8gc3Ry
aW5nIEZvcm1hdE1hdGNoZXJEZXNjcmlwdGlvbihib29sIG5lZ2F0aW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG1hdGNoZXJfbmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmdz
JiBwYXJhbV92YWx1ZXMpIHsKKyAgc3RyaW5nIHJlc3VsdCA9IENvbnZlcnRJZGVudGlmaWVyTmFt
ZVRvV29yZHMobWF0Y2hlcl9uYW1lKTsKKyAgaWYgKHBhcmFtX3ZhbHVlcy5zaXplKCkgPj0gMSkK
KyAgICByZXN1bHQgKz0gIiAiICsgSm9pbkFzVHVwbGUocGFyYW1fdmFsdWVzKTsKKyAgcmV0dXJu
IG5lZ2F0aW9uID8gIm5vdCAoIiArIHJlc3VsdCArICIpIiA6IHJlc3VsdDsKK30KKworLy8gRmlu
ZE1heEJpcGFydGl0ZU1hdGNoaW5nIGFuZCBpdHMgaGVscGVyIGNsYXNzLgorLy8KKy8vIFVzZXMg
dGhlIHdlbGwta25vd24gRm9yZC1GdWxrZXJzb24gbWF4IGZsb3cgbWV0aG9kIHRvIGZpbmQgYSBt
YXhpbXVtCisvLyBiaXBhcnRpdGUgbWF0Y2hpbmcuIEZsb3cgaXMgY29uc2lkZXJlZCB0byBiZSBm
cm9tIGxlZnQgdG8gcmlnaHQuCisvLyBUaGVyZSBpcyBhbiBpbXBsaWNpdCBzb3VyY2Ugbm9kZSB0
aGF0IGlzIGNvbm5lY3RlZCB0byBhbGwgb2YgdGhlIGxlZnQKKy8vIG5vZGVzLCBhbmQgYW4gaW1w
bGljaXQgc2luayBub2RlIHRoYXQgaXMgY29ubmVjdGVkIHRvIGFsbCBvZiB0aGUKKy8vIHJpZ2h0
IG5vZGVzLiBBbGwgZWRnZXMgaGF2ZSB1bml0IGNhcGFjaXR5LgorLy8KKy8vIE5laXRoZXIgdGhl
IGZsb3cgZ3JhcGggbm9yIHRoZSByZXNpZHVhbCBmbG93IGdyYXBoIGFyZSByZXByZXNlbnRlZAor
Ly8gZXhwbGljaXRseS4gSW5zdGVhZCwgdGhleSBhcmUgaW1wbGllZCBieSB0aGUgaW5mb3JtYXRp
b24gaW4gJ2dyYXBoJyBhbmQKKy8vIGEgdmVjdG9yPGludD4gY2FsbGVkICdsZWZ0Xycgd2hvc2Ug
ZWxlbWVudHMgYXJlIGluaXRpYWxpemVkIHRvIHRoZQorLy8gdmFsdWUga1VudXNlZC4gVGhpcyBy
ZXByZXNlbnRzIHRoZSBpbml0aWFsIHN0YXRlIG9mIHRoZSBhbGdvcml0aG0sCisvLyB3aGVyZSB0
aGUgZmxvdyBncmFwaCBpcyBlbXB0eSwgYW5kIHRoZSByZXNpZHVhbCBmbG93IGdyYXBoIGhhcyB0
aGUKKy8vIGZvbGxvd2luZyBlZGdlczoKKy8vICAgLSBBbiBlZGdlIGZyb20gc291cmNlIHRvIGVh
Y2ggbGVmdF8gbm9kZQorLy8gICAtIEFuIGVkZ2UgZnJvbSBlYWNoIHJpZ2h0XyBub2RlIHRvIHNp
bmsKKy8vICAgLSBBbiBlZGdlIGZyb20gZWFjaCBsZWZ0XyBub2RlIHRvIGVhY2ggcmlnaHRfIG5v
ZGUsIGlmIHRoZQorLy8gICAgIGNvcnJlc3BvbmRpbmcgZWRnZSBleGlzdHMgaW4gJ2dyYXBoJy4K
Ky8vCisvLyBXaGVuIHRoZSBUcnlBdWdtZW50KCkgbWV0aG9kIGFkZHMgYSBmbG93LCBpdCBzZXRz
IGxlZnRfW2xdID0gciBmb3Igc29tZQorLy8gbm9kZXMgbCBhbmQgci4gVGhpcyBpbmR1Y2VzIHRo
ZSBmb2xsb3dpbmcgY2hhbmdlczoKKy8vICAgLSBUaGUgZWRnZXMgKHNvdXJjZSwgbCksIChsLCBy
KSwgYW5kIChyLCBzaW5rKSBhcmUgYWRkZWQgdG8gdGhlCisvLyAgICAgZmxvdyBncmFwaC4KKy8v
ICAgLSBUaGUgc2FtZSB0aHJlZSBlZGdlcyBhcmUgcmVtb3ZlZCBmcm9tIHRoZSByZXNpZHVhbCBm
bG93IGdyYXBoLgorLy8gICAtIFRoZSByZXZlcnNlIGVkZ2VzIChsLCBzb3VyY2UpLCAociwgbCks
IGFuZCAoc2luaywgcikgYXJlIGFkZGVkCisvLyAgICAgdG8gdGhlIHJlc2lkdWFsIGZsb3cgZ3Jh
cGgsIHdoaWNoIGlzIGEgZGlyZWN0aW9uYWwgZ3JhcGgKKy8vICAgICByZXByZXNlbnRpbmcgdW51
c2VkIGZsb3cgY2FwYWNpdHkuCisvLworLy8gV2hlbiB0aGUgbWV0aG9kIGF1Z21lbnRzIGEgZmxv
dyAobW92aW5nIGxlZnRfW2xdIGZyb20gc29tZSByMSB0byBzb21lCisvLyBvdGhlciByMiksIHRo
aXMgY2FuIGJlIHRob3VnaHQgb2YgYXMgInVuZG9pbmciIHRoZSBhYm92ZSBzdGVwcyB3aXRoCisv
LyByZXNwZWN0IHRvIHIxIGFuZCAicmVkb2luZyIgdGhlbSB3aXRoIHJlc3BlY3QgdG8gcjIuCisv
LworLy8gSXQgYmVhcnMgcmVwZWF0aW5nIHRoYXQgdGhlIGZsb3cgZ3JhcGggYW5kIHJlc2lkdWFs
IGZsb3cgZ3JhcGggYXJlCisvLyBuZXZlciByZXByZXNlbnRlZCBleHBsaWNpdGx5LCBidXQgY2Fu
IGJlIGRlcml2ZWQgYnkgbG9va2luZyBhdCB0aGUKKy8vIGluZm9ybWF0aW9uIGluICdncmFwaCcg
YW5kIGluIGxlZnRfLgorLy8KKy8vIEFzIGFuIG9wdGltaXphdGlvbiwgdGhlcmUgaXMgYSBzZWNv
bmQgdmVjdG9yPGludD4gY2FsbGVkIHJpZ2h0XyB3aGljaAorLy8gZG9lcyBub3QgcHJvdmlkZSBh
bnkgbmV3IGluZm9ybWF0aW9uLiBJbnN0ZWFkLCBpdCBlbmFibGVzIG1vcmUKKy8vIGVmZmljaWVu
dCBxdWVyaWVzIGFib3V0IGVkZ2VzIGVudGVyaW5nIG9yIGxlYXZpbmcgdGhlIHJpZ2h0LXNpZGUg
bm9kZXMKKy8vIG9mIHRoZSBmbG93IG9yIHJlc2lkdWFsIGZsb3cgZ3JhcGhzLiBUaGUgZm9sbG93
aW5nIGludmFyaWFudHMgYXJlCisvLyBtYWludGFpbmVkOgorLy8KKy8vIGxlZnRbbF0gPT0ga1Vu
dXNlZCBvciByaWdodFtsZWZ0W2xdXSA9PSBsCisvLyByaWdodFtyXSA9PSBrVW51c2VkIG9yIGxl
ZnRbcmlnaHRbcl1dID09IHIKKy8vCisvLyAuIFsgc291cmNlIF0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLgorLy8gLiAgIHx8fCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC4KKy8vIC4gICB8fHwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAuCisvLyAuICAgfHxcLS0+IGxlZnRbMF09MSAgLS0tXCAg
ICByaWdodFswXT0tMSAtLS0tXCAgICAgLgorLy8gLiAgIHx8ICAgICAgICAgICAgICAgICAgIHwg
ICAgICAgICAgICAgICAgICAgIHwgICAgIC4KKy8vIC4gICB8XC0tLT4gbGVmdFsxXT0tMSAgICBc
LS0+IHJpZ2h0WzFdPTAgIC0tLVx8ICAgICAuCisvLyAuICAgfCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8fCAgICAgLgorLy8gLiAgIFwtLS0tPiBsZWZ0WzJdPTIgIC0t
LS0tLT4gcmlnaHRbMl09MiAgLS1cfHwgICAgIC4KKy8vIC4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfHx8ICAgICAuCisvLyAuICAgICAgICAgZWxlbWVudHMgICAg
ICAgICAgIG1hdGNoZXJzICAgICAgIHZ2diAgICAgLgorLy8gLiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgWyBzaW5rIF0gIC4KKy8vCisvLyBTZWUgQWxzbzoKKy8vICAg
WzFdIENvcm1lbiwgZXQgYWwgKDIwMDEpLiAiU2VjdGlvbiAyNi4yOiBUaGUgRm9yZC1GdWxrZXJz
b24gbWV0aG9kIi4KKy8vICAgICAgICJJbnRyb2R1Y3Rpb24gdG8gQWxnb3JpdGhtcyAoU2Vjb25k
IGVkLikiLCBwcC4gNjUxLTY2NC4KKy8vICAgWzJdICJGb3JkLUZ1bGtlcnNvbiBhbGdvcml0aG0i
LCBXaWtpcGVkaWEsCisvLyAgICAgICAnaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Gb3Jk
JUUyJTgwJTkzRnVsa2Vyc29uX2FsZ29yaXRobScKK2NsYXNzIE1heEJpcGFydGl0ZU1hdGNoU3Rh
dGUgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgTWF4QmlwYXJ0aXRlTWF0Y2hTdGF0ZShjb25zdCBN
YXRjaE1hdHJpeCYgZ3JhcGgpCisgICAgICA6IGdyYXBoXygmZ3JhcGgpLAorICAgICAgICBsZWZ0
XyhncmFwaF8tPkxoc1NpemUoKSwga1VudXNlZCksCisgICAgICAgIHJpZ2h0XyhncmFwaF8tPlJo
c1NpemUoKSwga1VudXNlZCkgeworICB9CisKKyAgLy8gUmV0dXJucyB0aGUgZWRnZXMgb2YgYSBt
YXhpbWFsIG1hdGNoLCBlYWNoIGluIHRoZSBmb3JtIHtsZWZ0LCByaWdodH0uCisgIEVsZW1lbnRN
YXRjaGVyUGFpcnMgQ29tcHV0ZSgpIHsKKyAgICAvLyAnc2VlbicgaXMgdXNlZCBmb3IgcGF0aCBm
aW5kaW5nIHsgMDogdW5zZWVuLCAxOiBzZWVuIH0uCisgICAgOjpzdGQ6OnZlY3RvcjxjaGFyPiBz
ZWVuOworICAgIC8vIFNlYXJjaGVzIHRoZSByZXNpZHVhbCBmbG93IGdyYXBoIGZvciBhIHBhdGgg
ZnJvbSBlYWNoIGxlZnQgbm9kZSB0bworICAgIC8vIHRoZSBzaW5rIGluIHRoZSByZXNpZHVhbCBm
bG93IGdyYXBoLCBhbmQgaWYgb25lIGlzIGZvdW5kLCBhZGQgZmxvdworICAgIC8vIHRvIHRoZSBn
cmFwaC4gSXQncyBva2F5IHRvIHNlYXJjaCB0aHJvdWdoIHRoZSBsZWZ0IG5vZGVzIG9uY2UuIFRo
ZQorICAgIC8vIGVkZ2UgZnJvbSB0aGUgaW1wbGljaXQgc291cmNlIG5vZGUgdG8gZWFjaCBwcmV2
aW91c2x5LXZpc2l0ZWQgbGVmdAorICAgIC8vIG5vZGUgd2lsbCBoYXZlIGZsb3cgaWYgdGhhdCBs
ZWZ0IG5vZGUgaGFzIGFueSBwYXRoIHRvIHRoZSBzaW5rCisgICAgLy8gd2hhdHNvZXZlci4gU3Vi
c2VxdWVudCBhdWdtZW50YXRpb25zIGNhbiBvbmx5IGFkZCBmbG93IHRvIHRoZQorICAgIC8vIG5l
dHdvcmssIGFuZCBjYW5ub3QgdGFrZSBhd2F5IHRoYXQgcHJldmlvdXMgZmxvdyB1bml0IGZyb20g
dGhlIHNvdXJjZS4KKyAgICAvLyBTaW5jZSB0aGUgc291cmNlLXRvLWxlZnQgZWRnZSBjYW4gb25s
eSBjYXJyeSBvbmUgZmxvdyB1bml0IChvciwKKyAgICAvLyBlYWNoIGVsZW1lbnQgY2FuIGJlIG1h
dGNoZWQgdG8gb25seSBvbmUgbWF0Y2hlciksIHRoZXJlIGlzIG5vIG5lZWQKKyAgICAvLyB0byB2
aXNpdCB0aGUgbGVmdCBub2RlcyBtb3JlIHRoYW4gb25jZSBsb29raW5nIGZvciBhdWdtZW50ZWQg
cGF0aHMuCisgICAgLy8gVGhlIGZsb3cgaXMga25vd24gdG8gYmUgcG9zc2libGUgb3IgaW1wb3Nz
aWJsZSBieSBsb29raW5nIGF0IHRoZQorICAgIC8vIG5vZGUgb25jZS4KKyAgICBmb3IgKHNpemVf
dCBpbGhzID0gMDsgaWxocyA8IGdyYXBoXy0+TGhzU2l6ZSgpOyArK2lsaHMpIHsKKyAgICAgIC8v
IFJlc2V0IHRoZSBwYXRoLW1hcmtpbmcgdmVjdG9yIGFuZCB0cnkgdG8gZmluZCBhIHBhdGggZnJv
bQorICAgICAgLy8gc291cmNlIHRvIHNpbmsgc3RhcnRpbmcgYXQgdGhlIGxlZnRfW2lsaHNdIG5v
ZGUuCisgICAgICBHVEVTVF9DSEVDS18obGVmdF9baWxoc10gPT0ga1VudXNlZCkKKyAgICAgICAg
ICA8PCAiaWxoczogIiA8PCBpbGhzIDw8ICIsIGxlZnRfW2lsaHNdOiAiIDw8IGxlZnRfW2lsaHNd
OworICAgICAgLy8gJ3NlZW4nIGluaXRpYWxpemVkIHRvICdncmFwaF8tPlJoc1NpemUoKScgY29w
aWVzIG9mIDAuCisgICAgICBzZWVuLmFzc2lnbihncmFwaF8tPlJoc1NpemUoKSwgMCk7CisgICAg
ICBUcnlBdWdtZW50KGlsaHMsICZzZWVuKTsKKyAgICB9CisgICAgRWxlbWVudE1hdGNoZXJQYWly
cyByZXN1bHQ7CisgICAgZm9yIChzaXplX3QgaWxocyA9IDA7IGlsaHMgPCBsZWZ0Xy5zaXplKCk7
ICsraWxocykgeworICAgICAgc2l6ZV90IGlyaHMgPSBsZWZ0X1tpbGhzXTsKKyAgICAgIGlmIChp
cmhzID09IGtVbnVzZWQpIGNvbnRpbnVlOworICAgICAgcmVzdWx0LnB1c2hfYmFjayhFbGVtZW50
TWF0Y2hlclBhaXIoaWxocywgaXJocykpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworICB9
CisKKyBwcml2YXRlOgorICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtVbnVzZWQgPSBzdGF0aWNfY2Fz
dDxzaXplX3Q+KC0xKTsKKworICAvLyBQZXJmb3JtIGEgZGVwdGgtZmlyc3Qgc2VhcmNoIGZyb20g
bGVmdCBub2RlIGlsaHMgdG8gdGhlIHNpbmsuICBJZiBhCisgIC8vIHBhdGggaXMgZm91bmQsIGZs
b3cgaXMgYWRkZWQgdG8gdGhlIG5ldHdvcmsgYnkgbGlua2luZyB0aGUgbGVmdCBhbmQKKyAgLy8g
cmlnaHQgdmVjdG9yIGVsZW1lbnRzIGNvcnJlc3BvbmRpbmcgZWFjaCBzZWdtZW50IG9mIHRoZSBw
YXRoLgorICAvLyBSZXR1cm5zIHRydWUgaWYgYSBwYXRoIHRvIHNpbmsgd2FzIGZvdW5kLCB3aGlj
aCBtZWFucyB0aGF0IGEgdW5pdCBvZgorICAvLyBmbG93IHdhcyBhZGRlZCB0byB0aGUgbmV0d29y
ay4gVGhlICdzZWVuJyB2ZWN0b3IgZWxlbWVudHMgY29ycmVzcG9uZAorICAvLyB0byByaWdodCBu
b2RlcyBhbmQgYXJlIG1hcmtlZCB0byBlbGltaW5hdGUgY3ljbGVzIGZyb20gdGhlIHNlYXJjaC4K
KyAgLy8KKyAgLy8gTGVmdCBub2RlcyB3aWxsIG9ubHkgYmUgZXhwbG9yZWQgYXQgbW9zdCBvbmNl
IGJlY2F1c2UgdGhleQorICAvLyBhcmUgYWNjZXNzaWJsZSBmcm9tIGF0IG1vc3Qgb25lIHJpZ2h0
IG5vZGUgaW4gdGhlIHJlc2lkdWFsIGZsb3cKKyAgLy8gZ3JhcGguCisgIC8vCisgIC8vIE5vdGUg
dGhhdCBsZWZ0X1tpbGhzXSBpcyB0aGUgb25seSBlbGVtZW50IG9mIGxlZnRfIHRoYXQgVHJ5QXVn
bWVudCB3aWxsCisgIC8vIHBvdGVudGlhbGx5IHRyYW5zaXRpb24gZnJvbSBrVW51c2VkIHRvIGFu
b3RoZXIgdmFsdWUuIEFueSBvdGhlcgorICAvLyBsZWZ0XyBlbGVtZW50IGhvbGRpbmcga1VudXNl
ZCBiZWZvcmUgVHJ5QXVnbWVudCB3aWxsIGJlIGhvbGRpbmcgaXQKKyAgLy8gd2hlbiBUcnlBdWdt
ZW50IHJldHVybnMuCisgIC8vCisgIGJvb2wgVHJ5QXVnbWVudChzaXplX3QgaWxocywgOjpzdGQ6
OnZlY3RvcjxjaGFyPiogc2VlbikgeworICAgIGZvciAoc2l6ZV90IGlyaHMgPSAwOyBpcmhzIDwg
Z3JhcGhfLT5SaHNTaXplKCk7ICsraXJocykgeworICAgICAgaWYgKCgqc2VlbilbaXJoc10pCisg
ICAgICAgIGNvbnRpbnVlOworICAgICAgaWYgKCFncmFwaF8tPkhhc0VkZ2UoaWxocywgaXJocykp
CisgICAgICAgIGNvbnRpbnVlOworICAgICAgLy8gVGhlcmUncyBhbiBhdmFpbGFibGUgZWRnZSBm
cm9tIGlsaHMgdG8gaXJocy4KKyAgICAgICgqc2VlbilbaXJoc10gPSAxOworICAgICAgLy8gTmV4
dCBhIHNlYXJjaCBpcyBwZXJmb3JtZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIKKyAgICAgIC8vIHRo
aXMgZWRnZSBpcyBhIGRlYWQgZW5kIG9yIGxlYWRzIHRvIHRoZSBzaW5rLgorICAgICAgLy8KKyAg
ICAgIC8vIHJpZ2h0X1tpcmhzXSA9PSBrVW51c2VkIG1lYW5zIHRoYXQgdGhlcmUgaXMgcmVzaWR1
YWwgZmxvdyBmcm9tCisgICAgICAvLyByaWdodCBub2RlIGlyaHMgdG8gdGhlIHNpbmssIHNvIHdl
IGNhbiB1c2UgdGhhdCB0byBmaW5pc2ggdGhpcworICAgICAgLy8gZmxvdyBwYXRoIGFuZCByZXR1
cm4gc3VjY2Vzcy4KKyAgICAgIC8vCisgICAgICAvLyBPdGhlcndpc2UgdGhlcmUgaXMgcmVzaWR1
YWwgZmxvdyB0byBzb21lIGlsaHMuIFdlIHB1c2ggZmxvdworICAgICAgLy8gYWxvbmcgdGhhdCBw
YXRoIGFuZCBjYWxsIG91cnNlbHZlcyByZWN1cnNpdmVseSB0byBzZWUgaWYgdGhpcworICAgICAg
Ly8gdWx0aW1hdGVseSBsZWFkcyB0byBzaW5rLgorICAgICAgaWYgKHJpZ2h0X1tpcmhzXSA9PSBr
VW51c2VkIHx8IFRyeUF1Z21lbnQocmlnaHRfW2lyaHNdLCBzZWVuKSkgeworICAgICAgICAvLyBB
ZGQgZmxvdyBmcm9tIGxlZnRfW2lsaHNdIHRvIHJpZ2h0X1tpcmhzXS4KKyAgICAgICAgbGVmdF9b
aWxoc10gPSBpcmhzOworICAgICAgICByaWdodF9baXJoc10gPSBpbGhzOworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgY29u
c3QgTWF0Y2hNYXRyaXgqIGdyYXBoXzsgIC8vIG5vdCBvd25lZAorICAvLyBFYWNoIGVsZW1lbnQg
b2YgdGhlIGxlZnRfIHZlY3RvciByZXByZXNlbnRzIGEgbGVmdCBoYW5kIHNpZGUgbm9kZQorICAv
LyAoaS5lLiBhbiBlbGVtZW50KSBhbmQgZWFjaCBlbGVtZW50IG9mIHJpZ2h0XyBpcyBhIHJpZ2h0
IGhhbmQgc2lkZQorICAvLyBub2RlIChpLmUuIGEgbWF0Y2hlcikuIFRoZSB2YWx1ZXMgaW4gdGhl
IGxlZnRfIHZlY3RvciBpbmRpY2F0ZQorICAvLyBvdXRmbG93IGZyb20gdGhhdCBub2RlIHRvIGEg
bm9kZSBvbiB0aGUgdGhlIHJpZ2h0XyBzaWRlLiBUaGUgdmFsdWVzCisgIC8vIGluIHRoZSByaWdo
dF8gaW5kaWNhdGUgaW5mbG93LCBhbmQgc3BlY2lmeSB3aGljaCBsZWZ0XyBub2RlIGlzCisgIC8v
IGZlZWRpbmcgdGhhdCByaWdodF8gbm9kZSwgaWYgYW55LiBGb3IgZXhhbXBsZSwgbGVmdF9bM10g
PT0gMSBtZWFucworICAvLyB0aGVyZSdzIGEgZmxvdyBmcm9tIGVsZW1lbnQgIzMgdG8gbWF0Y2hl
ciAjMS4gU3VjaCBhIGZsb3cgd291bGQgYWxzbworICAvLyBiZSByZWR1bmRhbnRseSByZXByZXNl
bnRlZCBpbiB0aGUgcmlnaHRfIHZlY3RvciBhcyByaWdodF9bMV0gPT0gMy4KKyAgLy8gRWxlbWVu
dHMgb2YgbGVmdF8gYW5kIHJpZ2h0XyBhcmUgZWl0aGVyIGtVbnVzZWQgb3IgbXV0dWFsbHkKKyAg
Ly8gcmVmZXJlbnQuIE11dHVhbGx5IHJlZmVyZW50IG1lYW5zIHRoYXQgbGVmdF9bcmlnaHRfW2ld
XSA9IGkgYW5kCisgIC8vIHJpZ2h0X1tsZWZ0X1tpXV0gPSBpLgorICA6OnN0ZDo6dmVjdG9yPHNp
emVfdD4gbGVmdF87CisgIDo6c3RkOjp2ZWN0b3I8c2l6ZV90PiByaWdodF87CisKKyAgR1RFU1Rf
RElTQUxMT1dfQVNTSUdOXyhNYXhCaXBhcnRpdGVNYXRjaFN0YXRlKTsKK307CisKK2NvbnN0IHNp
emVfdCBNYXhCaXBhcnRpdGVNYXRjaFN0YXRlOjprVW51c2VkOworCitHVEVTVF9BUElfIEVsZW1l
bnRNYXRjaGVyUGFpcnMKK0ZpbmRNYXhCaXBhcnRpdGVNYXRjaGluZyhjb25zdCBNYXRjaE1hdHJp
eCYgZykgeworICByZXR1cm4gTWF4QmlwYXJ0aXRlTWF0Y2hTdGF0ZShnKS5Db21wdXRlKCk7Cit9
CisKK3N0YXRpYyB2b2lkIExvZ0VsZW1lbnRNYXRjaGVyUGFpclZlYyhjb25zdCBFbGVtZW50TWF0
Y2hlclBhaXJzJiBwYWlycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6
OnN0ZDo6b3N0cmVhbSogc3RyZWFtKSB7CisgIHR5cGVkZWYgRWxlbWVudE1hdGNoZXJQYWlyczo6
Y29uc3RfaXRlcmF0b3IgSXRlcjsKKyAgOjpzdGQ6Om9zdHJlYW0mIG9zID0gKnN0cmVhbTsKKyAg
b3MgPDwgInsiOworICBjb25zdCBjaGFyICpzZXAgPSAiIjsKKyAgZm9yIChJdGVyIGl0ID0gcGFp
cnMuYmVnaW4oKTsgaXQgIT0gcGFpcnMuZW5kKCk7ICsraXQpIHsKKyAgICBvcyA8PCBzZXAgPDwg
IlxuICAoIgorICAgICAgIDw8ICJlbGVtZW50ICMiIDw8IGl0LT5maXJzdCA8PCAiLCAiCisgICAg
ICAgPDwgIm1hdGNoZXIgIyIgPDwgaXQtPnNlY29uZCA8PCAiKSI7CisgICAgc2VwID0gIiwiOwor
ICB9CisgIG9zIDw8ICJcbn0iOworfQorCisvLyBUcmllcyB0byBmaW5kIGEgcGFpcmluZywgYW5k
IGV4cGxhaW5zIHRoZSByZXN1bHQuCitHVEVTVF9BUElfIGJvb2wgRmluZFBhaXJpbmcoY29uc3Qg
TWF0Y2hNYXRyaXgmIG1hdHJpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJl
c3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgeworICBFbGVtZW50TWF0Y2hlclBhaXJzIG1hdGNoZXMg
PSBGaW5kTWF4QmlwYXJ0aXRlTWF0Y2hpbmcobWF0cml4KTsKKworICBzaXplX3QgbWF4X2Zsb3cg
PSBtYXRjaGVzLnNpemUoKTsKKyAgYm9vbCByZXN1bHQgPSAobWF4X2Zsb3cgPT0gbWF0cml4LlJo
c1NpemUoKSk7CisKKyAgaWYgKCFyZXN1bHQpIHsKKyAgICBpZiAobGlzdGVuZXItPklzSW50ZXJl
c3RlZCgpKSB7CisgICAgICAqbGlzdGVuZXIgPDwgIndoZXJlIG5vIHBlcm11dGF0aW9uIG9mIHRo
ZSBlbGVtZW50cyBjYW4gIgorICAgICAgICAgICAgICAgICAgICJzYXRpc2Z5IGFsbCBtYXRjaGVy
cywgYW5kIHRoZSBjbG9zZXN0IG1hdGNoIGlzICIKKyAgICAgICAgICAgICAgICA8PCBtYXhfZmxv
dyA8PCAiIG9mICIgPDwgbWF0cml4LlJoc1NpemUoKQorICAgICAgICAgICAgICAgIDw8ICIgbWF0
Y2hlcnMgd2l0aCB0aGUgcGFpcmluZ3M6XG4iOworICAgICAgTG9nRWxlbWVudE1hdGNoZXJQYWly
VmVjKG1hdGNoZXMsIGxpc3RlbmVyLT5zdHJlYW0oKSk7CisgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKKyAgfQorCisgIGlmIChtYXRjaGVzLnNpemUoKSA+IDEpIHsKKyAgICBpZiAobGlzdGVuZXIt
PklzSW50ZXJlc3RlZCgpKSB7CisgICAgICBjb25zdCBjaGFyICpzZXAgPSAid2hlcmU6XG4iOwor
ICAgICAgZm9yIChzaXplX3QgbWkgPSAwOyBtaSA8IG1hdGNoZXMuc2l6ZSgpOyArK21pKSB7Cisg
ICAgICAgICpsaXN0ZW5lciA8PCBzZXAgPDwgIiAtIGVsZW1lbnQgIyIgPDwgbWF0Y2hlc1ttaV0u
Zmlyc3QKKyAgICAgICAgICAgICAgICAgIDw8ICIgaXMgbWF0Y2hlZCBieSBtYXRjaGVyICMiIDw8
IG1hdGNoZXNbbWldLnNlY29uZDsKKyAgICAgICAgc2VwID0gIixcbiI7CisgICAgICB9CisgICAg
fQorICB9CisgIHJldHVybiB0cnVlOworfQorCitib29sIE1hdGNoTWF0cml4OjpOZXh0R3JhcGgo
KSB7CisgIGZvciAoc2l6ZV90IGlsaHMgPSAwOyBpbGhzIDwgTGhzU2l6ZSgpOyArK2lsaHMpIHsK
KyAgICBmb3IgKHNpemVfdCBpcmhzID0gMDsgaXJocyA8IFJoc1NpemUoKTsgKytpcmhzKSB7Cisg
ICAgICBjaGFyJiBiID0gbWF0Y2hlZF9bU3BhY2VJbmRleChpbGhzLCBpcmhzKV07CisgICAgICBp
ZiAoIWIpIHsKKyAgICAgICAgYiA9IDE7CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgfQor
ICAgICAgYiA9IDA7CisgICAgfQorICB9CisgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBNYXRj
aE1hdHJpeDo6UmFuZG9taXplKCkgeworICBmb3IgKHNpemVfdCBpbGhzID0gMDsgaWxocyA8IExo
c1NpemUoKTsgKytpbGhzKSB7CisgICAgZm9yIChzaXplX3QgaXJocyA9IDA7IGlyaHMgPCBSaHNT
aXplKCk7ICsraXJocykgeworICAgICAgY2hhciYgYiA9IG1hdGNoZWRfW1NwYWNlSW5kZXgoaWxo
cywgaXJocyldOworICAgICAgYiA9IHN0YXRpY19jYXN0PGNoYXI+KHJhbmQoKSAmIDEpOyAgLy8g
Tk9MSU5UCisgICAgfQorICB9Cit9CisKK3N0ZDo6c3RyaW5nIE1hdGNoTWF0cml4OjpEZWJ1Z1N0
cmluZygpIGNvbnN0IHsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgY29uc3QgY2hhciAq
c2VwID0gIiI7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgTGhzU2l6ZSgpOyArK2kpIHsKKyAg
ICBzcyA8PCBzZXA7CisgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBSaHNTaXplKCk7ICsraikg
eworICAgICAgc3MgPDwgSGFzRWRnZShpLCBqKTsKKyAgICB9CisgICAgc2VwID0gIjsiOworICB9
CisgIHJldHVybiBzcy5zdHIoKTsKK30KKwordm9pZCBVbm9yZGVyZWRFbGVtZW50c0FyZU1hdGNo
ZXJJbXBsQmFzZTo6RGVzY3JpYmVUb0ltcGwoCisgICAgOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25z
dCB7CisgIGlmIChtYXRjaGVyX2Rlc2NyaWJlcnNfLmVtcHR5KCkpIHsKKyAgICAqb3MgPDwgImlz
IGVtcHR5IjsKKyAgICByZXR1cm47CisgIH0KKyAgaWYgKG1hdGNoZXJfZGVzY3JpYmVyc18uc2l6
ZSgpID09IDEpIHsKKyAgICAqb3MgPDwgImhhcyAiIDw8IEVsZW1lbnRzKDEpIDw8ICIgYW5kIHRo
YXQgZWxlbWVudCAiOworICAgIG1hdGNoZXJfZGVzY3JpYmVyc19bMF0tPkRlc2NyaWJlVG8ob3Mp
OworICAgIHJldHVybjsKKyAgfQorICAqb3MgPDwgImhhcyAiIDw8IEVsZW1lbnRzKG1hdGNoZXJf
ZGVzY3JpYmVyc18uc2l6ZSgpKQorICAgICAgPDwgIiBhbmQgdGhlcmUgZXhpc3RzIHNvbWUgcGVy
bXV0YXRpb24gb2YgZWxlbWVudHMgc3VjaCB0aGF0OlxuIjsKKyAgY29uc3QgY2hhciogc2VwID0g
IiI7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IG1hdGNoZXJfZGVzY3JpYmVyc18uc2l6ZSgp
OyArK2kpIHsKKyAgICAqb3MgPDwgc2VwIDw8ICIgLSBlbGVtZW50ICMiIDw8IGkgPDwgIiAiOwor
ICAgIG1hdGNoZXJfZGVzY3JpYmVyc19baV0tPkRlc2NyaWJlVG8ob3MpOworICAgIHNlcCA9ICIs
IGFuZFxuIjsKKyAgfQorfQorCit2b2lkIFVub3JkZXJlZEVsZW1lbnRzQXJlTWF0Y2hlckltcGxC
YXNlOjpEZXNjcmliZU5lZ2F0aW9uVG9JbXBsKAorICAgIDo6c3RkOjpvc3RyZWFtKiBvcykgY29u
c3QgeworICBpZiAobWF0Y2hlcl9kZXNjcmliZXJzXy5lbXB0eSgpKSB7CisgICAgKm9zIDw8ICJp
c24ndCBlbXB0eSI7CisgICAgcmV0dXJuOworICB9CisgIGlmIChtYXRjaGVyX2Rlc2NyaWJlcnNf
LnNpemUoKSA9PSAxKSB7CisgICAgKm9zIDw8ICJkb2Vzbid0IGhhdmUgIiA8PCBFbGVtZW50cygx
KQorICAgICAgICA8PCAiLCBvciBoYXMgIiA8PCBFbGVtZW50cygxKSA8PCAiIHRoYXQgIjsKKyAg
ICBtYXRjaGVyX2Rlc2NyaWJlcnNfWzBdLT5EZXNjcmliZU5lZ2F0aW9uVG8ob3MpOworICAgIHJl
dHVybjsKKyAgfQorICAqb3MgPDwgImRvZXNuJ3QgaGF2ZSAiIDw8IEVsZW1lbnRzKG1hdGNoZXJf
ZGVzY3JpYmVyc18uc2l6ZSgpKQorICAgICAgPDwgIiwgb3IgdGhlcmUgZXhpc3RzIG5vIHBlcm11
dGF0aW9uIG9mIGVsZW1lbnRzIHN1Y2ggdGhhdDpcbiI7CisgIGNvbnN0IGNoYXIqIHNlcCA9ICIi
OworICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBtYXRjaGVyX2Rlc2NyaWJlcnNfLnNpemUoKTsg
KytpKSB7CisgICAgKm9zIDw8IHNlcCA8PCAiIC0gZWxlbWVudCAjIiA8PCBpIDw8ICIgIjsKKyAg
ICBtYXRjaGVyX2Rlc2NyaWJlcnNfW2ldLT5EZXNjcmliZVRvKG9zKTsKKyAgICBzZXAgPSAiLCBh
bmRcbiI7CisgIH0KK30KKworLy8gQ2hlY2tzIHRoYXQgYWxsIG1hdGNoZXJzIG1hdGNoIGF0IGxl
YXN0IG9uZSBlbGVtZW50LCBhbmQgdGhhdCBhbGwKKy8vIGVsZW1lbnRzIG1hdGNoIGF0IGxlYXN0
IG9uZSBtYXRjaGVyLiBUaGlzIGVuYWJsZXMgZmFzdGVyIG1hdGNoaW5nCisvLyBhbmQgYmV0dGVy
IGVycm9yIHJlcG9ydGluZy4KKy8vIFJldHVybnMgZmFsc2UsIHdyaXRpbmcgYW4gZXhwbGFuYXRp
b24gdG8gJ2xpc3RlbmVyJywgaWYgYW5kIG9ubHkKKy8vIGlmIHRoZSBzdWNjZXNzIGNyaXRlcmlh
IGFyZSBub3QgbWV0LgorYm9vbCBVbm9yZGVyZWRFbGVtZW50c0FyZU1hdGNoZXJJbXBsQmFzZTo6
CisgICAgVmVyaWZ5QWxsRWxlbWVudHNBbmRNYXRjaGVyc0FyZU1hdGNoZWQoCisgICAgICAgIGNv
bnN0IDo6c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBlbGVtZW50X3ByaW50b3V0cywKKyAgICAg
ICAgY29uc3QgTWF0Y2hNYXRyaXgmIG1hdHJpeCwgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVu
ZXIpIGNvbnN0IHsKKyAgYm9vbCByZXN1bHQgPSB0cnVlOworICA6OnN0ZDo6dmVjdG9yPGNoYXI+
IGVsZW1lbnRfbWF0Y2hlZChtYXRyaXguTGhzU2l6ZSgpLCAwKTsKKyAgOjpzdGQ6OnZlY3Rvcjxj
aGFyPiBtYXRjaGVyX21hdGNoZWQobWF0cml4LlJoc1NpemUoKSwgMCk7CisKKyAgZm9yIChzaXpl
X3QgaWxocyA9IDA7IGlsaHMgPCBtYXRyaXguTGhzU2l6ZSgpOyBpbGhzKyspIHsKKyAgICBmb3Ig
KHNpemVfdCBpcmhzID0gMDsgaXJocyA8IG1hdHJpeC5SaHNTaXplKCk7IGlyaHMrKykgeworICAg
ICAgY2hhciBtYXRjaGVkID0gbWF0cml4Lkhhc0VkZ2UoaWxocywgaXJocyk7CisgICAgICBlbGVt
ZW50X21hdGNoZWRbaWxoc10gfD0gbWF0Y2hlZDsKKyAgICAgIG1hdGNoZXJfbWF0Y2hlZFtpcmhz
XSB8PSBtYXRjaGVkOworICAgIH0KKyAgfQorCisgIHsKKyAgICBjb25zdCBjaGFyKiBzZXAgPQor
ICAgICAgICAid2hlcmUgdGhlIGZvbGxvd2luZyBtYXRjaGVycyBkb24ndCBtYXRjaCBhbnkgZWxl
bWVudHM6XG4iOworICAgIGZvciAoc2l6ZV90IG1pID0gMDsgbWkgPCBtYXRjaGVyX21hdGNoZWQu
c2l6ZSgpOyArK21pKSB7CisgICAgICBpZiAobWF0Y2hlcl9tYXRjaGVkW21pXSkKKyAgICAgICAg
Y29udGludWU7CisgICAgICByZXN1bHQgPSBmYWxzZTsKKyAgICAgIGlmIChsaXN0ZW5lci0+SXNJ
bnRlcmVzdGVkKCkpIHsKKyAgICAgICAgKmxpc3RlbmVyIDw8IHNlcCA8PCAibWF0Y2hlciAjIiA8
PCBtaSA8PCAiOiAiOworICAgICAgICBtYXRjaGVyX2Rlc2NyaWJlcnNfW21pXS0+RGVzY3JpYmVU
byhsaXN0ZW5lci0+c3RyZWFtKCkpOworICAgICAgICBzZXAgPSAiLFxuIjsKKyAgICAgIH0KKyAg
ICB9CisgIH0KKworICB7CisgICAgY29uc3QgY2hhciogc2VwID0KKyAgICAgICAgIndoZXJlIHRo
ZSBmb2xsb3dpbmcgZWxlbWVudHMgZG9uJ3QgbWF0Y2ggYW55IG1hdGNoZXJzOlxuIjsKKyAgICBj
b25zdCBjaGFyKiBvdXRlcl9zZXAgPSAiIjsKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgb3V0
ZXJfc2VwID0gIlxuYW5kICI7CisgICAgfQorICAgIGZvciAoc2l6ZV90IGVpID0gMDsgZWkgPCBl
bGVtZW50X21hdGNoZWQuc2l6ZSgpOyArK2VpKSB7CisgICAgICBpZiAoZWxlbWVudF9tYXRjaGVk
W2VpXSkKKyAgICAgICAgY29udGludWU7CisgICAgICByZXN1bHQgPSBmYWxzZTsKKyAgICAgIGlm
IChsaXN0ZW5lci0+SXNJbnRlcmVzdGVkKCkpIHsKKyAgICAgICAgKmxpc3RlbmVyIDw8IG91dGVy
X3NlcCA8PCBzZXAgPDwgImVsZW1lbnQgIyIgPDwgZWkgPDwgIjogIgorICAgICAgICAgICAgICAg
ICAgPDwgZWxlbWVudF9wcmludG91dHNbZWldOworICAgICAgICBzZXAgPSAiLFxuIjsKKyAgICAg
ICAgb3V0ZXJfc2VwID0gIiI7CisgICAgICB9CisgICAgfQorICB9CisgIHJldHVybiByZXN1bHQ7
Cit9CisKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NyYy9nbW9jay1zcGVjLWJ1aWxkZXJzLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZW1vY2svc3JjL2dtb2NrLXNwZWMtYnVpbGRlcnMuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmZhMWVlNGJi
YmM3YjFiYzk1YTg1NzM2ODU4ZTA4ZjBhNWRhZjZmNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGVtb2NrL3NyYy9nbW9jay1zcGVjLWJ1aWxkZXJzLmNjCkBAIC0wLDAgKzEsODIyIEBACisvLyBD
b3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLwor
Ly8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3Ry
aWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8v
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gQXV0aG9yOiB3
YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorCisvLyBHb29nbGUgTW9jayAtIGEgZnJhbWV3
b3JrIGZvciB3cml0aW5nIEMrKyBtb2NrIGNsYXNzZXMuCisvLworLy8gVGhpcyBmaWxlIGltcGxl
bWVudHMgdGhlIHNwZWMgYnVpbGRlciBzeW50YXggKE9OX0NBTEwgYW5kCisvLyBFWFBFQ1RfQ0FM
TCkuCisKKyNpbmNsdWRlICJnbW9jay9nbW9jay1zcGVjLWJ1aWxkZXJzLmgiCisKKyNpbmNsdWRl
IDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxpb3N0cmVhbT4gIC8vIE5PTElOVAorI2luY2x1ZGUgPG1h
cD4KKyNpbmNsdWRlIDxzZXQ+CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgImdtb2NrL2dt
b2NrLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworI2lmIEdURVNUX09TX0NZR1dJTiB8
fCBHVEVTVF9PU19MSU5VWCB8fCBHVEVTVF9PU19NQUMKKyMgaW5jbHVkZSA8dW5pc3RkLmg+ICAv
LyBOT0xJTlQKKyNlbmRpZgorCituYW1lc3BhY2UgdGVzdGluZyB7CituYW1lc3BhY2UgaW50ZXJu
YWwgeworCisvLyBQcm90ZWN0cyB0aGUgbW9jayBvYmplY3QgcmVnaXN0cnkgKGluIGNsYXNzIE1v
Y2spLCBhbGwgZnVuY3Rpb24KKy8vIG1vY2tlcnMsIGFuZCBhbGwgZXhwZWN0YXRpb25zLgorR1RF
U1RfQVBJXyBHVEVTVF9ERUZJTkVfU1RBVElDX01VVEVYXyhnX2dtb2NrX211dGV4KTsKKworLy8g
TG9ncyBhIG1lc3NhZ2UgaW5jbHVkaW5nIGZpbGUgYW5kIGxpbmUgbnVtYmVyIGluZm9ybWF0aW9u
LgorR1RFU1RfQVBJXyB2b2lkIExvZ1dpdGhMb2NhdGlvbih0ZXN0aW5nOjppbnRlcm5hbDo6TG9n
U2V2ZXJpdHkgc2V2ZXJpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIGZpbGUsIGludCBsaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSkgeworICA6OnN0ZDo6b3N0cmluZ3N0cmVhbSBzOwor
ICBzIDw8IGZpbGUgPDwgIjoiIDw8IGxpbmUgPDwgIjogIiA8PCBtZXNzYWdlIDw8IDo6c3RkOjpl
bmRsOworICBMb2coc2V2ZXJpdHksIHMuc3RyKCksIDApOworfQorCisvLyBDb25zdHJ1Y3RzIGFu
IEV4cGVjdGF0aW9uQmFzZSBvYmplY3QuCitFeHBlY3RhdGlvbkJhc2U6OkV4cGVjdGF0aW9uQmFz
ZShjb25zdCBjaGFyKiBhX2ZpbGUsIGludCBhX2xpbmUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgYV9zb3VyY2VfdGV4dCkKKyAgICA6IGZpbGVf
KGFfZmlsZSksCisgICAgICBsaW5lXyhhX2xpbmUpLAorICAgICAgc291cmNlX3RleHRfKGFfc291
cmNlX3RleHQpLAorICAgICAgY2FyZGluYWxpdHlfc3BlY2lmaWVkXyhmYWxzZSksCisgICAgICBj
YXJkaW5hbGl0eV8oRXhhY3RseSgxKSksCisgICAgICBjYWxsX2NvdW50XygwKSwKKyAgICAgIHJl
dGlyZWRfKGZhbHNlKSwKKyAgICAgIGV4dHJhX21hdGNoZXJfc3BlY2lmaWVkXyhmYWxzZSksCisg
ICAgICByZXBlYXRlZF9hY3Rpb25fc3BlY2lmaWVkXyhmYWxzZSksCisgICAgICByZXRpcmVzX29u
X3NhdHVyYXRpb25fKGZhbHNlKSwKKyAgICAgIGxhc3RfY2xhdXNlXyhrTm9uZSksCisgICAgICBh
Y3Rpb25fY291bnRfY2hlY2tlZF8oZmFsc2UpIHt9CisKKy8vIERlc3RydWN0cyBhbiBFeHBlY3Rh
dGlvbkJhc2Ugb2JqZWN0LgorRXhwZWN0YXRpb25CYXNlOjp+RXhwZWN0YXRpb25CYXNlKCkge30K
KworLy8gRXhwbGljaXRseSBzcGVjaWZpZXMgdGhlIGNhcmRpbmFsaXR5IG9mIHRoaXMgZXhwZWN0
YXRpb24uICBVc2VkIGJ5CisvLyB0aGUgc3ViY2xhc3NlcyB0byBpbXBsZW1lbnQgdGhlIC5UaW1l
cygpIGNsYXVzZS4KK3ZvaWQgRXhwZWN0YXRpb25CYXNlOjpTcGVjaWZ5Q2FyZGluYWxpdHkoY29u
c3QgQ2FyZGluYWxpdHkmIGFfY2FyZGluYWxpdHkpIHsKKyAgY2FyZGluYWxpdHlfc3BlY2lmaWVk
XyA9IHRydWU7CisgIGNhcmRpbmFsaXR5XyA9IGFfY2FyZGluYWxpdHk7Cit9CisKKy8vIFJldGly
ZXMgYWxsIHByZS1yZXF1aXNpdGVzIG9mIHRoaXMgZXhwZWN0YXRpb24uCit2b2lkIEV4cGVjdGF0
aW9uQmFzZTo6UmV0aXJlQWxsUHJlUmVxdWlzaXRlcygpCisgICAgR1RFU1RfRVhDTFVTSVZFX0xP
Q0tfUkVRVUlSRURfKGdfZ21vY2tfbXV0ZXgpIHsKKyAgaWYgKGlzX3JldGlyZWQoKSkgeworICAg
IC8vIFdlIGNhbiB0YWtlIHRoaXMgc2hvcnQtY3V0IGFzIHdlIG5ldmVyIHJldGlyZSBhbiBleHBl
Y3RhdGlvbgorICAgIC8vIHVudGlsIHdlIGhhdmUgcmV0aXJlZCBhbGwgaXRzIHByZS1yZXF1aXNp
dGVzLgorICAgIHJldHVybjsKKyAgfQorCisgIGZvciAoRXhwZWN0YXRpb25TZXQ6OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gaW1tZWRpYXRlX3ByZXJlcXVpc2l0ZXNfLmJlZ2luKCk7CisgICAgICAgaXQg
IT0gaW1tZWRpYXRlX3ByZXJlcXVpc2l0ZXNfLmVuZCgpOyArK2l0KSB7CisgICAgRXhwZWN0YXRp
b25CYXNlKiBjb25zdCBwcmVyZXF1aXNpdGUgPSBpdC0+ZXhwZWN0YXRpb25fYmFzZSgpLmdldCgp
OworICAgIGlmICghcHJlcmVxdWlzaXRlLT5pc19yZXRpcmVkKCkpIHsKKyAgICAgIHByZXJlcXVp
c2l0ZS0+UmV0aXJlQWxsUHJlUmVxdWlzaXRlcygpOworICAgICAgcHJlcmVxdWlzaXRlLT5SZXRp
cmUoKTsKKyAgICB9CisgIH0KK30KKworLy8gUmV0dXJucyB0cnVlIGlmZiBhbGwgcHJlLXJlcXVp
c2l0ZXMgb2YgdGhpcyBleHBlY3RhdGlvbiBoYXZlIGJlZW4KKy8vIHNhdGlzZmllZC4KK2Jvb2wg
RXhwZWN0YXRpb25CYXNlOjpBbGxQcmVyZXF1aXNpdGVzQXJlU2F0aXNmaWVkKCkgY29uc3QKKyAg
ICBHVEVTVF9FWENMVVNJVkVfTE9DS19SRVFVSVJFRF8oZ19nbW9ja19tdXRleCkgeworICBnX2dt
b2NrX211dGV4LkFzc2VydEhlbGQoKTsKKyAgZm9yIChFeHBlY3RhdGlvblNldDo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBpbW1lZGlhdGVfcHJlcmVxdWlzaXRlc18uYmVnaW4oKTsKKyAgICAgICBpdCAh
PSBpbW1lZGlhdGVfcHJlcmVxdWlzaXRlc18uZW5kKCk7ICsraXQpIHsKKyAgICBpZiAoIShpdC0+
ZXhwZWN0YXRpb25fYmFzZSgpLT5Jc1NhdGlzZmllZCgpKSB8fAorICAgICAgICAhKGl0LT5leHBl
Y3RhdGlvbl9iYXNlKCktPkFsbFByZXJlcXVpc2l0ZXNBcmVTYXRpc2ZpZWQoKSkpCisgICAgICBy
ZXR1cm4gZmFsc2U7CisgIH0KKyAgcmV0dXJuIHRydWU7Cit9CisKKy8vIEFkZHMgdW5zYXRpc2Zp
ZWQgcHJlLXJlcXVpc2l0ZXMgb2YgdGhpcyBleHBlY3RhdGlvbiB0byAncmVzdWx0Jy4KK3ZvaWQg
RXhwZWN0YXRpb25CYXNlOjpGaW5kVW5zYXRpc2ZpZWRQcmVyZXF1aXNpdGVzKEV4cGVjdGF0aW9u
U2V0KiByZXN1bHQpIGNvbnN0CisgICAgR1RFU1RfRVhDTFVTSVZFX0xPQ0tfUkVRVUlSRURfKGdf
Z21vY2tfbXV0ZXgpIHsKKyAgZ19nbW9ja19tdXRleC5Bc3NlcnRIZWxkKCk7CisgIGZvciAoRXhw
ZWN0YXRpb25TZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaW1tZWRpYXRlX3ByZXJlcXVpc2l0ZXNf
LmJlZ2luKCk7CisgICAgICAgaXQgIT0gaW1tZWRpYXRlX3ByZXJlcXVpc2l0ZXNfLmVuZCgpOyAr
K2l0KSB7CisgICAgaWYgKGl0LT5leHBlY3RhdGlvbl9iYXNlKCktPklzU2F0aXNmaWVkKCkpIHsK
KyAgICAgIC8vIElmICppdCBpcyBzYXRpc2ZpZWQgYW5kIGhhcyBhIGNhbGwgY291bnQgb2YgMCwg
c29tZSBvZiBpdHMKKyAgICAgIC8vIHByZS1yZXF1aXNpdGVzIG1heSBub3QgYmUgc2F0aXNmaWVk
IHlldC4KKyAgICAgIGlmIChpdC0+ZXhwZWN0YXRpb25fYmFzZSgpLT5jYWxsX2NvdW50XyA9PSAw
KSB7CisgICAgICAgIGl0LT5leHBlY3RhdGlvbl9iYXNlKCktPkZpbmRVbnNhdGlzZmllZFByZXJl
cXVpc2l0ZXMocmVzdWx0KTsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgLy8gTm93IHRo
YXQgd2Uga25vdyAqaXQgaXMgdW5zYXRpc2ZpZWQsIHdlIGFyZSBub3Qgc28gaW50ZXJlc3RlZAor
ICAgICAgLy8gaW4gd2hldGhlciBpdHMgcHJlLXJlcXVpc2l0ZXMgYXJlIHNhdGlzZmllZC4gIFRo
ZXJlZm9yZSB3ZQorICAgICAgLy8gZG9uJ3QgcmVjdXJzaXZlbHkgY2FsbCBGaW5kVW5zYXRpc2Zp
ZWRQcmVyZXF1aXNpdGVzKCkgaGVyZS4KKyAgICAgICpyZXN1bHQgKz0gKml0OworICAgIH0KKyAg
fQorfQorCisvLyBEZXNjcmliZXMgaG93IG1hbnkgdGltZXMgYSBmdW5jdGlvbiBjYWxsIG1hdGNo
aW5nIHRoaXMKKy8vIGV4cGVjdGF0aW9uIGhhcyBvY2N1cnJlZC4KK3ZvaWQgRXhwZWN0YXRpb25C
YXNlOjpEZXNjcmliZUNhbGxDb3VudFRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QKKyAgICBH
VEVTVF9FWENMVVNJVkVfTE9DS19SRVFVSVJFRF8oZ19nbW9ja19tdXRleCkgeworICBnX2dtb2Nr
X211dGV4LkFzc2VydEhlbGQoKTsKKworICAvLyBEZXNjcmliZXMgaG93IG1hbnkgdGltZXMgdGhl
IGZ1bmN0aW9uIGlzIGV4cGVjdGVkIHRvIGJlIGNhbGxlZC4KKyAgKm9zIDw8ICIgICAgICAgICBF
eHBlY3RlZDogdG8gYmUgIjsKKyAgY2FyZGluYWxpdHkoKS5EZXNjcmliZVRvKG9zKTsKKyAgKm9z
IDw8ICJcbiAgICAgICAgICAgQWN0dWFsOiAiOworICBDYXJkaW5hbGl0eTo6RGVzY3JpYmVBY3R1
YWxDYWxsQ291bnRUbyhjYWxsX2NvdW50KCksIG9zKTsKKworICAvLyBEZXNjcmliZXMgdGhlIHN0
YXRlIG9mIHRoZSBleHBlY3RhdGlvbiAoZS5nLiBpcyBpdCBzYXRpc2ZpZWQ/CisgIC8vIGlzIGl0
IGFjdGl2ZT8pLgorICAqb3MgPDwgIiAtICIgPDwgKElzT3ZlclNhdHVyYXRlZCgpID8gIm92ZXIt
c2F0dXJhdGVkIiA6CisgICAgICAgICAgICAgICAgICAgSXNTYXR1cmF0ZWQoKSA/ICJzYXR1cmF0
ZWQiIDoKKyAgICAgICAgICAgICAgICAgICBJc1NhdGlzZmllZCgpID8gInNhdGlzZmllZCIgOiAi
dW5zYXRpc2ZpZWQiKQorICAgICAgPDwgIiBhbmQgIgorICAgICAgPDwgKGlzX3JldGlyZWQoKSA/
ICJyZXRpcmVkIiA6ICJhY3RpdmUiKTsKK30KKworLy8gQ2hlY2tzIHRoZSBhY3Rpb24gY291bnQg
KGkuZS4gdGhlIG51bWJlciBvZiBXaWxsT25jZSgpIGFuZAorLy8gV2lsbFJlcGVhdGVkbHkoKSBj
bGF1c2VzKSBhZ2FpbnN0IHRoZSBjYXJkaW5hbGl0eSBpZiB0aGlzIGhhc24ndAorLy8gYmVlbiBk
b25lIGJlZm9yZS4gIFByaW50cyBhIHdhcm5pbmcgaWYgdGhlcmUgYXJlIHRvbyBtYW55IG9yIHRv
bworLy8gZmV3IGFjdGlvbnMuCit2b2lkIEV4cGVjdGF0aW9uQmFzZTo6Q2hlY2tBY3Rpb25Db3Vu
dElmTm90RG9uZSgpIGNvbnN0CisgICAgR1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhfKSB7Cisg
IGJvb2wgc2hvdWxkX2NoZWNrID0gZmFsc2U7CisgIHsKKyAgICBNdXRleExvY2sgbCgmbXV0ZXhf
KTsKKyAgICBpZiAoIWFjdGlvbl9jb3VudF9jaGVja2VkXykgeworICAgICAgYWN0aW9uX2NvdW50
X2NoZWNrZWRfID0gdHJ1ZTsKKyAgICAgIHNob3VsZF9jaGVjayA9IHRydWU7CisgICAgfQorICB9
CisKKyAgaWYgKHNob3VsZF9jaGVjaykgeworICAgIGlmICghY2FyZGluYWxpdHlfc3BlY2lmaWVk
XykgeworICAgICAgLy8gVGhlIGNhcmRpbmFsaXR5IHdhcyBpbmZlcnJlZCAtIG5vIG5lZWQgdG8g
Y2hlY2sgdGhlIGFjdGlvbgorICAgICAgLy8gY291bnQgYWdhaW5zdCBpdC4KKyAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICAvLyBUaGUgY2FyZGluYWxpdHkgd2FzIGV4cGxpY2l0bHkgc3BlY2lm
aWVkLgorICAgIGNvbnN0IGludCBhY3Rpb25fY291bnQgPSBzdGF0aWNfY2FzdDxpbnQ+KHVudHlw
ZWRfYWN0aW9uc18uc2l6ZSgpKTsKKyAgICBjb25zdCBpbnQgdXBwZXJfYm91bmQgPSBjYXJkaW5h
bGl0eSgpLkNvbnNlcnZhdGl2ZVVwcGVyQm91bmQoKTsKKyAgICBjb25zdCBpbnQgbG93ZXJfYm91
bmQgPSBjYXJkaW5hbGl0eSgpLkNvbnNlcnZhdGl2ZUxvd2VyQm91bmQoKTsKKyAgICBib29sIHRv
b19tYW55OyAgLy8gVHJ1ZSBpZiB0aGVyZSBhcmUgdG9vIG1hbnkgYWN0aW9ucywgb3IgZmFsc2UK
KyAgICAvLyBpZiB0aGVyZSBhcmUgdG9vIGZldy4KKyAgICBpZiAoYWN0aW9uX2NvdW50ID4gdXBw
ZXJfYm91bmQgfHwKKyAgICAgICAgKGFjdGlvbl9jb3VudCA9PSB1cHBlcl9ib3VuZCAmJiByZXBl
YXRlZF9hY3Rpb25fc3BlY2lmaWVkXykpIHsKKyAgICAgIHRvb19tYW55ID0gdHJ1ZTsKKyAgICB9
IGVsc2UgaWYgKDAgPCBhY3Rpb25fY291bnQgJiYgYWN0aW9uX2NvdW50IDwgbG93ZXJfYm91bmQg
JiYKKyAgICAgICAgICAgICAgICFyZXBlYXRlZF9hY3Rpb25fc3BlY2lmaWVkXykgeworICAgICAg
dG9vX21hbnkgPSBmYWxzZTsKKyAgICB9IGVsc2UgeworICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgICAgRGVzY3JpYmVMb2NhdGlvblRvKCZzcyk7
CisgICAgc3MgPDwgIlRvbyAiIDw8ICh0b29fbWFueSA/ICJtYW55IiA6ICJmZXciKQorICAgICAg
IDw8ICIgYWN0aW9ucyBzcGVjaWZpZWQgaW4gIiA8PCBzb3VyY2VfdGV4dCgpIDw8ICIuLi5cbiIK
KyAgICAgICA8PCAiRXhwZWN0ZWQgdG8gYmUgIjsKKyAgICBjYXJkaW5hbGl0eSgpLkRlc2NyaWJl
VG8oJnNzKTsKKyAgICBzcyA8PCAiLCBidXQgaGFzICIgPDwgKHRvb19tYW55ID8gIiIgOiAib25s
eSAiKQorICAgICAgIDw8IGFjdGlvbl9jb3VudCA8PCAiIFdpbGxPbmNlKCkiCisgICAgICAgPDwg
KGFjdGlvbl9jb3VudCA9PSAxID8gIiIgOiAicyIpOworICAgIGlmIChyZXBlYXRlZF9hY3Rpb25f
c3BlY2lmaWVkXykgeworICAgICAgc3MgPDwgIiBhbmQgYSBXaWxsUmVwZWF0ZWRseSgpIjsKKyAg
ICB9CisgICAgc3MgPDwgIi4iOworICAgIExvZyhrV2FybmluZywgc3Muc3RyKCksIC0xKTsgIC8v
IC0xIG1lYW5zICJkb24ndCBwcmludCBzdGFjayB0cmFjZSIuCisgIH0KK30KKworLy8gSW1wbGVt
ZW50cyB0aGUgLlRpbWVzKCkgY2xhdXNlLgordm9pZCBFeHBlY3RhdGlvbkJhc2U6OlVudHlwZWRU
aW1lcyhjb25zdCBDYXJkaW5hbGl0eSYgYV9jYXJkaW5hbGl0eSkgeworICBpZiAobGFzdF9jbGF1
c2VfID09IGtUaW1lcykgeworICAgIEV4cGVjdFNwZWNQcm9wZXJ0eShmYWxzZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIi5UaW1lcygpIGNhbm5vdCBhcHBlYXIgIgorICAgICAgICAgICAgICAg
ICAgICAgICAibW9yZSB0aGFuIG9uY2UgaW4gYW4gRVhQRUNUX0NBTEwoKS4iKTsKKyAgfSBlbHNl
IHsKKyAgICBFeHBlY3RTcGVjUHJvcGVydHkobGFzdF9jbGF1c2VfIDwga1RpbWVzLAorICAgICAg
ICAgICAgICAgICAgICAgICAiLlRpbWVzKCkgY2Fubm90IGFwcGVhciBhZnRlciAiCisgICAgICAg
ICAgICAgICAgICAgICAgICIuSW5TZXF1ZW5jZSgpLCAuV2lsbE9uY2UoKSwgLldpbGxSZXBlYXRl
ZGx5KCksICIKKyAgICAgICAgICAgICAgICAgICAgICAgIm9yIC5SZXRpcmVzT25TYXR1cmF0aW9u
KCkuIik7CisgIH0KKyAgbGFzdF9jbGF1c2VfID0ga1RpbWVzOworCisgIFNwZWNpZnlDYXJkaW5h
bGl0eShhX2NhcmRpbmFsaXR5KTsKK30KKworLy8gUG9pbnRzIHRvIHRoZSBpbXBsaWNpdCBzZXF1
ZW5jZSBpbnRyb2R1Y2VkIGJ5IGEgbGl2aW5nIEluU2VxdWVuY2UKKy8vIG9iamVjdCAoaWYgYW55
KSBpbiB0aGUgY3VycmVudCB0aHJlYWQgb3IgTlVMTC4KK0dURVNUX0FQSV8gVGhyZWFkTG9jYWw8
U2VxdWVuY2UqPiBnX2dtb2NrX2ltcGxpY2l0X3NlcXVlbmNlOworCisvLyBSZXBvcnRzIGFuIHVu
aW50ZXJlc3RpbmcgY2FsbCAod2hvc2UgZGVzY3JpcHRpb24gaXMgaW4gbXNnKSBpbiB0aGUKKy8v
IG1hbm5lciBzcGVjaWZpZWQgYnkgJ3JlYWN0aW9uJy4KK3ZvaWQgUmVwb3J0VW5pbnRlcmVzdGlu
Z0NhbGwoQ2FsbFJlYWN0aW9uIHJlYWN0aW9uLCBjb25zdCBzdGQ6OnN0cmluZyYgbXNnKSB7Cisg
IC8vIEluY2x1ZGUgYSBzdGFjayB0cmFjZSBvbmx5IGlmIC0tZ21vY2tfdmVyYm9zZT1pbmZvIGlz
IHNwZWNpZmllZC4KKyAgY29uc3QgaW50IHN0YWNrX2ZyYW1lc190b19za2lwID0KKyAgICAgIEdN
T0NLX0ZMQUcodmVyYm9zZSkgPT0ga0luZm9WZXJib3NpdHkgPyAzIDogLTE7CisgIHN3aXRjaCAo
cmVhY3Rpb24pIHsKKyAgICBjYXNlIGtBbGxvdzoKKyAgICAgIExvZyhrSW5mbywgbXNnLCBzdGFj
a19mcmFtZXNfdG9fc2tpcCk7CisgICAgICBicmVhazsKKyAgICBjYXNlIGtXYXJuOgorICAgICAg
TG9nKGtXYXJuaW5nLAorICAgICAgICAgIG1zZyArCisgICAgICAgICAgIlxuTk9URTogWW91IGNh
biBzYWZlbHkgaWdub3JlIHRoZSBhYm92ZSB3YXJuaW5nIHVubGVzcyB0aGlzICIKKyAgICAgICAg
ICAiY2FsbCBzaG91bGQgbm90IGhhcHBlbi4gIERvIG5vdCBzdXBwcmVzcyBpdCBieSBibGluZGx5
IGFkZGluZyAiCisgICAgICAgICAgImFuIEVYUEVDVF9DQUxMKCkgaWYgeW91IGRvbid0IG1lYW4g
dG8gZW5mb3JjZSB0aGUgY2FsbC4gICIKKyAgICAgICAgICAiU2VlIGh0dHBzOi8vZ2l0aHViLmNv
bS9nb29nbGUvZ29vZ2xldGVzdC9ibG9iL21hc3Rlci9nb29nbGVtb2NrL2RvY3MvQ29va0Jvb2su
bWQjIgorICAgICAgICAgICJrbm93aW5nLXdoZW4tdG8tZXhwZWN0IGZvciBkZXRhaWxzLlxuIiwK
KyAgICAgICAgICBzdGFja19mcmFtZXNfdG9fc2tpcCk7CisgICAgICBicmVhazsKKyAgICBkZWZh
dWx0OiAgLy8gRkFJTAorICAgICAgRXhwZWN0KGZhbHNlLCBOVUxMLCAtMSwgbXNnKTsKKyAgfQor
fQorCitVbnR5cGVkRnVuY3Rpb25Nb2NrZXJCYXNlOjpVbnR5cGVkRnVuY3Rpb25Nb2NrZXJCYXNl
KCkKKyAgICA6IG1vY2tfb2JqXyhOVUxMKSwgbmFtZV8oIiIpIHt9CisKK1VudHlwZWRGdW5jdGlv
bk1vY2tlckJhc2U6On5VbnR5cGVkRnVuY3Rpb25Nb2NrZXJCYXNlKCkge30KKworLy8gU2V0cyB0
aGUgbW9jayBvYmplY3QgdGhpcyBtb2NrIG1ldGhvZCBiZWxvbmdzIHRvLCBhbmQgcmVnaXN0ZXJz
CisvLyB0aGlzIGluZm9ybWF0aW9uIGluIHRoZSBnbG9iYWwgbW9jayByZWdpc3RyeS4gIFdpbGwg
YmUgY2FsbGVkCisvLyB3aGVuZXZlciBhbiBFWFBFQ1RfQ0FMTCgpIG9yIE9OX0NBTEwoKSBpcyBl
eGVjdXRlZCBvbiB0aGlzIG1vY2sKKy8vIG1ldGhvZC4KK3ZvaWQgVW50eXBlZEZ1bmN0aW9uTW9j
a2VyQmFzZTo6UmVnaXN0ZXJPd25lcihjb25zdCB2b2lkKiBtb2NrX29iaikKKyAgICBHVEVTVF9M
T0NLX0VYQ0xVREVEXyhnX2dtb2NrX211dGV4KSB7CisgIHsKKyAgICBNdXRleExvY2sgbCgmZ19n
bW9ja19tdXRleCk7CisgICAgbW9ja19vYmpfID0gbW9ja19vYmo7CisgIH0KKyAgTW9jazo6UmVn
aXN0ZXIobW9ja19vYmosIHRoaXMpOworfQorCisvLyBTZXRzIHRoZSBtb2NrIG9iamVjdCB0aGlz
IG1vY2sgbWV0aG9kIGJlbG9uZ3MgdG8sIGFuZCBzZXRzIHRoZSBuYW1lCisvLyBvZiB0aGUgbW9j
ayBmdW5jdGlvbi4gIFdpbGwgYmUgY2FsbGVkIHVwb24gZWFjaCBpbnZvY2F0aW9uIG9mIHRoaXMK
Ky8vIG1vY2sgZnVuY3Rpb24uCit2b2lkIFVudHlwZWRGdW5jdGlvbk1vY2tlckJhc2U6OlNldE93
bmVyQW5kTmFtZShjb25zdCB2b2lkKiBtb2NrX29iaiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUpCisgICAgR1RFU1RfTE9D
S19FWENMVURFRF8oZ19nbW9ja19tdXRleCkgeworICAvLyBXZSBwcm90ZWN0IG5hbWVfIHVuZGVy
IGdfZ21vY2tfbXV0ZXggaW4gY2FzZSB0aGlzIG1vY2sgZnVuY3Rpb24KKyAgLy8gaXMgY2FsbGVk
IGZyb20gdHdvIHRocmVhZHMgY29uY3VycmVudGx5LgorICBNdXRleExvY2sgbCgmZ19nbW9ja19t
dXRleCk7CisgIG1vY2tfb2JqXyA9IG1vY2tfb2JqOworICBuYW1lXyA9IG5hbWU7Cit9CisKKy8v
IFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uIGJlaW5nIG1vY2tlZC4gIE11c3QgYmUg
Y2FsbGVkCisvLyBhZnRlciBSZWdpc3Rlck93bmVyKCkgb3IgU2V0T3duZXJBbmROYW1lKCkgaGFz
IGJlZW4gY2FsbGVkLgorY29uc3Qgdm9pZCogVW50eXBlZEZ1bmN0aW9uTW9ja2VyQmFzZTo6TW9j
a09iamVjdCgpIGNvbnN0CisgICAgR1RFU1RfTE9DS19FWENMVURFRF8oZ19nbW9ja19tdXRleCkg
eworICBjb25zdCB2b2lkKiBtb2NrX29iajsKKyAgeworICAgIC8vIFdlIHByb3RlY3QgbW9ja19v
YmpfIHVuZGVyIGdfZ21vY2tfbXV0ZXggaW4gY2FzZSB0aGlzIG1vY2sKKyAgICAvLyBmdW5jdGlv
biBpcyBjYWxsZWQgZnJvbSB0d28gdGhyZWFkcyBjb25jdXJyZW50bHkuCisgICAgTXV0ZXhMb2Nr
IGwoJmdfZ21vY2tfbXV0ZXgpOworICAgIEFzc2VydChtb2NrX29ial8gIT0gTlVMTCwgX19GSUxF
X18sIF9fTElORV9fLAorICAgICAgICAgICAiTW9ja09iamVjdCgpIG11c3Qgbm90IGJlIGNhbGxl
ZCBiZWZvcmUgUmVnaXN0ZXJPd25lcigpIG9yICIKKyAgICAgICAgICAgIlNldE93bmVyQW5kTmFt
ZSgpIGhhcyBiZWVuIGNhbGxlZC4iKTsKKyAgICBtb2NrX29iaiA9IG1vY2tfb2JqXzsKKyAgfQor
ICByZXR1cm4gbW9ja19vYmo7Cit9CisKKy8vIFJldHVybnMgdGhlIG5hbWUgb2YgdGhpcyBtb2Nr
IG1ldGhvZC4gIE11c3QgYmUgY2FsbGVkIGFmdGVyCisvLyBTZXRPd25lckFuZE5hbWUoKSBoYXMg
YmVlbiBjYWxsZWQuCitjb25zdCBjaGFyKiBVbnR5cGVkRnVuY3Rpb25Nb2NrZXJCYXNlOjpOYW1l
KCkgY29uc3QKKyAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhnX2dtb2NrX211dGV4KSB7CisgIGNv
bnN0IGNoYXIqIG5hbWU7CisgIHsKKyAgICAvLyBXZSBwcm90ZWN0IG5hbWVfIHVuZGVyIGdfZ21v
Y2tfbXV0ZXggaW4gY2FzZSB0aGlzIG1vY2sKKyAgICAvLyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJv
bSB0d28gdGhyZWFkcyBjb25jdXJyZW50bHkuCisgICAgTXV0ZXhMb2NrIGwoJmdfZ21vY2tfbXV0
ZXgpOworICAgIEFzc2VydChuYW1lXyAhPSBOVUxMLCBfX0ZJTEVfXywgX19MSU5FX18sCisgICAg
ICAgICAgICJOYW1lKCkgbXVzdCBub3QgYmUgY2FsbGVkIGJlZm9yZSBTZXRPd25lckFuZE5hbWUo
KSBoYXMgIgorICAgICAgICAgICAiYmVlbiBjYWxsZWQuIik7CisgICAgbmFtZSA9IG5hbWVfOwor
ICB9CisgIHJldHVybiBuYW1lOworfQorCisvLyBDYWxjdWxhdGVzIHRoZSByZXN1bHQgb2YgaW52
b2tpbmcgdGhpcyBtb2NrIGZ1bmN0aW9uIHdpdGggdGhlIGdpdmVuCisvLyBhcmd1bWVudHMsIHBy
aW50cyBpdCwgYW5kIHJldHVybnMgaXQuICBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlCisvLyBm
b3IgZGVsZXRpbmcgdGhlIHJlc3VsdC4KK1VudHlwZWRBY3Rpb25SZXN1bHRIb2xkZXJCYXNlKgor
VW50eXBlZEZ1bmN0aW9uTW9ja2VyQmFzZTo6VW50eXBlZEludm9rZVdpdGgoY29uc3Qgdm9pZCog
Y29uc3QgdW50eXBlZF9hcmdzKQorICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKGdfZ21vY2tfbXV0
ZXgpIHsKKyAgaWYgKHVudHlwZWRfZXhwZWN0YXRpb25zXy5zaXplKCkgPT0gMCkgeworICAgIC8v
IE5vIGV4cGVjdGF0aW9uIGlzIHNldCBvbiB0aGlzIG1vY2sgbWV0aG9kIC0gd2UgaGF2ZSBhbgor
ICAgIC8vIHVuaW50ZXJlc3RpbmcgY2FsbC4KKworICAgIC8vIFdlIG11c3QgZ2V0IEdvb2dsZSBN
b2NrJ3MgcmVhY3Rpb24gb24gdW5pbnRlcmVzdGluZyBjYWxscworICAgIC8vIG1hZGUgb24gdGhp
cyBtb2NrIG9iamVjdCBCRUZPUkUgcGVyZm9ybWluZyB0aGUgYWN0aW9uLAorICAgIC8vIGJlY2F1
c2UgdGhlIGFjdGlvbiBtYXkgREVMRVRFIHRoZSBtb2NrIG9iamVjdCBhbmQgbWFrZSB0aGUKKyAg
ICAvLyBmb2xsb3dpbmcgZXhwcmVzc2lvbiBtZWFuaW5nbGVzcy4KKyAgICBjb25zdCBDYWxsUmVh
Y3Rpb24gcmVhY3Rpb24gPQorICAgICAgICBNb2NrOjpHZXRSZWFjdGlvbk9uVW5pbnRlcmVzdGlu
Z0NhbGxzKE1vY2tPYmplY3QoKSk7CisKKyAgICAvLyBUcnVlIGlmZiB3ZSBuZWVkIHRvIHByaW50
IHRoaXMgY2FsbCdzIGFyZ3VtZW50cyBhbmQgcmV0dXJuCisgICAgLy8gdmFsdWUuICBUaGlzIGRl
ZmluaXRpb24gbXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aAorICAgIC8vIHRoZSBiZWhhdmlvciBv
ZiBSZXBvcnRVbmludGVyZXN0aW5nQ2FsbCgpLgorICAgIGNvbnN0IGJvb2wgbmVlZF90b19yZXBv
cnRfdW5pbnRlcmVzdGluZ19jYWxsID0KKyAgICAgICAgLy8gSWYgdGhlIHVzZXIgYWxsb3dzIHRo
aXMgdW5pbnRlcmVzdGluZyBjYWxsLCB3ZSBwcmludCBpdAorICAgICAgICAvLyBvbmx5IHdoZW4g
aGUgd2FudHMgaW5mb3JtYXRpb25hbCBtZXNzYWdlcy4KKyAgICAgICAgcmVhY3Rpb24gPT0ga0Fs
bG93ID8gTG9nSXNWaXNpYmxlKGtJbmZvKSA6CisgICAgICAgIC8vIElmIHRoZSB1c2VyIHdhbnRz
IHRoaXMgdG8gYmUgYSB3YXJuaW5nLCB3ZSBwcmludCBpdCBvbmx5CisgICAgICAgIC8vIHdoZW4g
aGUgd2FudHMgdG8gc2VlIHdhcm5pbmdzLgorICAgICAgICByZWFjdGlvbiA9PSBrV2FybiA/IExv
Z0lzVmlzaWJsZShrV2FybmluZykgOgorICAgICAgICAvLyBPdGhlcndpc2UsIHRoZSB1c2VyIHdh
bnRzIHRoaXMgdG8gYmUgYW4gZXJyb3IsIGFuZCB3ZQorICAgICAgICAvLyBzaG91bGQgYWx3YXlz
IHByaW50IGRldGFpbGVkIGluZm9ybWF0aW9uIGluIHRoZSBlcnJvci4KKyAgICAgICAgdHJ1ZTsK
KworICAgIGlmICghbmVlZF90b19yZXBvcnRfdW5pbnRlcmVzdGluZ19jYWxsKSB7CisgICAgICAv
LyBQZXJmb3JtIHRoZSBhY3Rpb24gd2l0aG91dCBwcmludGluZyB0aGUgY2FsbCBpbmZvcm1hdGlv
bi4KKyAgICAgIHJldHVybiB0aGlzLT5VbnR5cGVkUGVyZm9ybURlZmF1bHRBY3Rpb24odW50eXBl
ZF9hcmdzLCAiIik7CisgICAgfQorCisgICAgLy8gV2FybnMgYWJvdXQgdGhlIHVuaW50ZXJlc3Rp
bmcgY2FsbC4KKyAgICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzOworICAgIHRoaXMtPlVudHlwZWRE
ZXNjcmliZVVuaW50ZXJlc3RpbmdDYWxsKHVudHlwZWRfYXJncywgJnNzKTsKKworICAgIC8vIENh
bGN1bGF0ZXMgdGhlIGZ1bmN0aW9uIHJlc3VsdC4KKyAgICBVbnR5cGVkQWN0aW9uUmVzdWx0SG9s
ZGVyQmFzZSogY29uc3QgcmVzdWx0ID0KKyAgICAgICAgdGhpcy0+VW50eXBlZFBlcmZvcm1EZWZh
dWx0QWN0aW9uKHVudHlwZWRfYXJncywgc3Muc3RyKCkpOworCisgICAgLy8gUHJpbnRzIHRoZSBm
dW5jdGlvbiByZXN1bHQuCisgICAgaWYgKHJlc3VsdCAhPSBOVUxMKQorICAgICAgcmVzdWx0LT5Q
cmludEFzQWN0aW9uUmVzdWx0KCZzcyk7CisKKyAgICBSZXBvcnRVbmludGVyZXN0aW5nQ2FsbChy
ZWFjdGlvbiwgc3Muc3RyKCkpOworICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworICBib29sIGlz
X2V4Y2Vzc2l2ZSA9IGZhbHNlOworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzOworICA6OnN0ZDo6
c3RyaW5nc3RyZWFtIHdoeTsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBsb2M7CisgIGNvbnN0IHZv
aWQqIHVudHlwZWRfYWN0aW9uID0gTlVMTDsKKworICAvLyBUaGUgVW50eXBlZEZpbmRNYXRjaGlu
Z0V4cGVjdGF0aW9uKCkgZnVuY3Rpb24gYWNxdWlyZXMgYW5kCisgIC8vIHJlbGVhc2VzIGdfZ21v
Y2tfbXV0ZXguCisgIGNvbnN0IEV4cGVjdGF0aW9uQmFzZSogY29uc3QgdW50eXBlZF9leHBlY3Rh
dGlvbiA9CisgICAgICB0aGlzLT5VbnR5cGVkRmluZE1hdGNoaW5nRXhwZWN0YXRpb24oCisgICAg
ICAgICAgdW50eXBlZF9hcmdzLCAmdW50eXBlZF9hY3Rpb24sICZpc19leGNlc3NpdmUsCisgICAg
ICAgICAgJnNzLCAmd2h5KTsKKyAgY29uc3QgYm9vbCBmb3VuZCA9IHVudHlwZWRfZXhwZWN0YXRp
b24gIT0gTlVMTDsKKworICAvLyBUcnVlIGlmZiB3ZSBuZWVkIHRvIHByaW50IHRoZSBjYWxsJ3Mg
YXJndW1lbnRzIGFuZCByZXR1cm4gdmFsdWUuCisgIC8vIFRoaXMgZGVmaW5pdGlvbiBtdXN0IGJl
IGtlcHQgaW4gc3luYyB3aXRoIHRoZSB1c2VzIG9mIEV4cGVjdCgpCisgIC8vIGFuZCBMb2coKSBp
biB0aGlzIGZ1bmN0aW9uLgorICBjb25zdCBib29sIG5lZWRfdG9fcmVwb3J0X2NhbGwgPQorICAg
ICAgIWZvdW5kIHx8IGlzX2V4Y2Vzc2l2ZSB8fCBMb2dJc1Zpc2libGUoa0luZm8pOworICBpZiAo
IW5lZWRfdG9fcmVwb3J0X2NhbGwpIHsKKyAgICAvLyBQZXJmb3JtIHRoZSBhY3Rpb24gd2l0aG91
dCBwcmludGluZyB0aGUgY2FsbCBpbmZvcm1hdGlvbi4KKyAgICByZXR1cm4KKyAgICAgICAgdW50
eXBlZF9hY3Rpb24gPT0gTlVMTCA/CisgICAgICAgIHRoaXMtPlVudHlwZWRQZXJmb3JtRGVmYXVs
dEFjdGlvbih1bnR5cGVkX2FyZ3MsICIiKSA6CisgICAgICAgIHRoaXMtPlVudHlwZWRQZXJmb3Jt
QWN0aW9uKHVudHlwZWRfYWN0aW9uLCB1bnR5cGVkX2FyZ3MpOworICB9CisKKyAgc3MgPDwgIiAg
ICBGdW5jdGlvbiBjYWxsOiAiIDw8IE5hbWUoKTsKKyAgdGhpcy0+VW50eXBlZFByaW50QXJncyh1
bnR5cGVkX2FyZ3MsICZzcyk7CisKKyAgLy8gSW4gY2FzZSB0aGUgYWN0aW9uIGRlbGV0ZXMgYSBw
aWVjZSBvZiB0aGUgZXhwZWN0YXRpb24sIHdlCisgIC8vIGdlbmVyYXRlIHRoZSBtZXNzYWdlIGJl
Zm9yZWhhbmQuCisgIGlmIChmb3VuZCAmJiAhaXNfZXhjZXNzaXZlKSB7CisgICAgdW50eXBlZF9l
eHBlY3RhdGlvbi0+RGVzY3JpYmVMb2NhdGlvblRvKCZsb2MpOworICB9CisKKyAgVW50eXBlZEFj
dGlvblJlc3VsdEhvbGRlckJhc2UqIGNvbnN0IHJlc3VsdCA9CisgICAgICB1bnR5cGVkX2FjdGlv
biA9PSBOVUxMID8KKyAgICAgIHRoaXMtPlVudHlwZWRQZXJmb3JtRGVmYXVsdEFjdGlvbih1bnR5
cGVkX2FyZ3MsIHNzLnN0cigpKSA6CisgICAgICB0aGlzLT5VbnR5cGVkUGVyZm9ybUFjdGlvbih1
bnR5cGVkX2FjdGlvbiwgdW50eXBlZF9hcmdzKTsKKyAgaWYgKHJlc3VsdCAhPSBOVUxMKQorICAg
IHJlc3VsdC0+UHJpbnRBc0FjdGlvblJlc3VsdCgmc3MpOworICBzcyA8PCAiXG4iIDw8IHdoeS5z
dHIoKTsKKworICBpZiAoIWZvdW5kKSB7CisgICAgLy8gTm8gZXhwZWN0YXRpb24gbWF0Y2hlcyB0
aGlzIGNhbGwgLSByZXBvcnRzIGEgZmFpbHVyZS4KKyAgICBFeHBlY3QoZmFsc2UsIE5VTEwsIC0x
LCBzcy5zdHIoKSk7CisgIH0gZWxzZSBpZiAoaXNfZXhjZXNzaXZlKSB7CisgICAgLy8gV2UgaGFk
IGFuIHVwcGVyLWJvdW5kIHZpb2xhdGlvbiBhbmQgdGhlIGZhaWx1cmUgbWVzc2FnZSBpcyBpbiBz
cy4KKyAgICBFeHBlY3QoZmFsc2UsIHVudHlwZWRfZXhwZWN0YXRpb24tPmZpbGUoKSwKKyAgICAg
ICAgICAgdW50eXBlZF9leHBlY3RhdGlvbi0+bGluZSgpLCBzcy5zdHIoKSk7CisgIH0gZWxzZSB7
CisgICAgLy8gV2UgaGFkIGFuIGV4cGVjdGVkIGNhbGwgYW5kIHRoZSBtYXRjaGluZyBleHBlY3Rh
dGlvbiBpcworICAgIC8vIGRlc2NyaWJlZCBpbiBzcy4KKyAgICBMb2coa0luZm8sIGxvYy5zdHIo
KSArIHNzLnN0cigpLCAyKTsKKyAgfQorCisgIHJldHVybiByZXN1bHQ7Cit9CisKKy8vIFJldHVy
bnMgYW4gRXhwZWN0YXRpb24gb2JqZWN0IHRoYXQgcmVmZXJlbmNlcyBhbmQgY28tb3ducyBleHAs
CisvLyB3aGljaCBtdXN0IGJlIGFuIGV4cGVjdGF0aW9uIG9uIHRoaXMgbW9jayBmdW5jdGlvbi4K
K0V4cGVjdGF0aW9uIFVudHlwZWRGdW5jdGlvbk1vY2tlckJhc2U6OkdldEhhbmRsZU9mKEV4cGVj
dGF0aW9uQmFzZSogZXhwKSB7CisgIGZvciAoVW50eXBlZEV4cGVjdGF0aW9uczo6Y29uc3RfaXRl
cmF0b3IgaXQgPQorICAgICAgICAgICB1bnR5cGVkX2V4cGVjdGF0aW9uc18uYmVnaW4oKTsKKyAg
ICAgICBpdCAhPSB1bnR5cGVkX2V4cGVjdGF0aW9uc18uZW5kKCk7ICsraXQpIHsKKyAgICBpZiAo
aXQtPmdldCgpID09IGV4cCkgeworICAgICAgcmV0dXJuIEV4cGVjdGF0aW9uKCppdCk7CisgICAg
fQorICB9CisKKyAgQXNzZXJ0KGZhbHNlLCBfX0ZJTEVfXywgX19MSU5FX18sICJDYW5ub3QgZmlu
ZCBleHBlY3RhdGlvbi4iKTsKKyAgcmV0dXJuIEV4cGVjdGF0aW9uKCk7CisgIC8vIFRoZSBhYm92
ZSBzdGF0ZW1lbnQgaXMganVzdCB0byBtYWtlIHRoZSBjb2RlIGNvbXBpbGUsIGFuZCB3aWxsCisg
IC8vIG5ldmVyIGJlIGV4ZWN1dGVkLgorfQorCisvLyBWZXJpZmllcyB0aGF0IGFsbCBleHBlY3Rh
dGlvbnMgb24gdGhpcyBtb2NrIGZ1bmN0aW9uIGhhdmUgYmVlbgorLy8gc2F0aXNmaWVkLiAgUmVw
b3J0cyBvbmUgb3IgbW9yZSBHb29nbGUgVGVzdCBub24tZmF0YWwgZmFpbHVyZXMKKy8vIGFuZCBy
ZXR1cm5zIGZhbHNlIGlmIG5vdC4KK2Jvb2wgVW50eXBlZEZ1bmN0aW9uTW9ja2VyQmFzZTo6VmVy
aWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnNMb2NrZWQoKQorICAgIEdURVNUX0VYQ0xVU0lWRV9MT0NL
X1JFUVVJUkVEXyhnX2dtb2NrX211dGV4KSB7CisgIGdfZ21vY2tfbXV0ZXguQXNzZXJ0SGVsZCgp
OworICBib29sIGV4cGVjdGF0aW9uc19tZXQgPSB0cnVlOworICBmb3IgKFVudHlwZWRFeHBlY3Rh
dGlvbnM6OmNvbnN0X2l0ZXJhdG9yIGl0ID0KKyAgICAgICAgICAgdW50eXBlZF9leHBlY3RhdGlv
bnNfLmJlZ2luKCk7CisgICAgICAgaXQgIT0gdW50eXBlZF9leHBlY3RhdGlvbnNfLmVuZCgpOyAr
K2l0KSB7CisgICAgRXhwZWN0YXRpb25CYXNlKiBjb25zdCB1bnR5cGVkX2V4cGVjdGF0aW9uID0g
aXQtPmdldCgpOworICAgIGlmICh1bnR5cGVkX2V4cGVjdGF0aW9uLT5Jc092ZXJTYXR1cmF0ZWQo
KSkgeworICAgICAgLy8gVGhlcmUgd2FzIGFuIHVwcGVyLWJvdW5kIHZpb2xhdGlvbi4gIFNpbmNl
IHRoZSBlcnJvciB3YXMKKyAgICAgIC8vIGFscmVhZHkgcmVwb3J0ZWQgd2hlbiBpdCBvY2N1cnJl
ZCwgdGhlcmUgaXMgbm8gbmVlZCB0byBkbworICAgICAgLy8gYW55dGhpbmcgaGVyZS4KKyAgICAg
IGV4cGVjdGF0aW9uc19tZXQgPSBmYWxzZTsKKyAgICB9IGVsc2UgaWYgKCF1bnR5cGVkX2V4cGVj
dGF0aW9uLT5Jc1NhdGlzZmllZCgpKSB7CisgICAgICBleHBlY3RhdGlvbnNfbWV0ID0gZmFsc2U7
CisgICAgICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzOworICAgICAgc3MgIDw8ICJBY3R1YWwgZnVu
Y3Rpb24gY2FsbCBjb3VudCBkb2Vzbid0IG1hdGNoICIKKyAgICAgICAgICA8PCB1bnR5cGVkX2V4
cGVjdGF0aW9uLT5zb3VyY2VfdGV4dCgpIDw8ICIuLi5cbiI7CisgICAgICAvLyBObyBuZWVkIHRv
IHNob3cgdGhlIHNvdXJjZSBmaWxlIGxvY2F0aW9uIG9mIHRoZSBleHBlY3RhdGlvbgorICAgICAg
Ly8gaW4gdGhlIGRlc2NyaXB0aW9uLCBhcyB0aGUgRXhwZWN0KCkgY2FsbCB0aGF0IGZvbGxvd3Mg
YWxyZWFkeQorICAgICAgLy8gdGFrZXMgY2FyZSBvZiBpdC4KKyAgICAgIHVudHlwZWRfZXhwZWN0
YXRpb24tPk1heWJlRGVzY3JpYmVFeHRyYU1hdGNoZXJUbygmc3MpOworICAgICAgdW50eXBlZF9l
eHBlY3RhdGlvbi0+RGVzY3JpYmVDYWxsQ291bnRUbygmc3MpOworICAgICAgRXhwZWN0KGZhbHNl
LCB1bnR5cGVkX2V4cGVjdGF0aW9uLT5maWxlKCksCisgICAgICAgICAgICAgdW50eXBlZF9leHBl
Y3RhdGlvbi0+bGluZSgpLCBzcy5zdHIoKSk7CisgICAgfQorICB9CisKKyAgLy8gRGVsZXRpbmcg
b3VyIGV4cGVjdGF0aW9ucyBtYXkgdHJpZ2dlciBvdGhlciBtb2NrIG9iamVjdHMgdG8gYmUgZGVs
ZXRlZCwgZm9yCisgIC8vIGV4YW1wbGUgaWYgYW4gYWN0aW9uIGNvbnRhaW5zIGEgcmVmZXJlbmNl
IGNvdW50ZWQgc21hcnQgcG9pbnRlciB0byB0aGF0CisgIC8vIG1vY2sgb2JqZWN0LCBhbmQgdGhh
dCBpcyB0aGUgbGFzdCByZWZlcmVuY2UuIFNvIGlmIHdlIGRlbGV0ZSBvdXIKKyAgLy8gZXhwZWN0
YXRpb25zIHdpdGhpbiB0aGUgY29udGV4dCBvZiB0aGUgZ2xvYmFsIG11dGV4IHdlIG1heSBkZWFk
bG9jayB3aGVuCisgIC8vIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCBhZ2Fpbi4gSW5zdGVhZCwgbWFr
ZSBhIGNvcHkgb2YgdGhlIHNldCBvZgorICAvLyBleHBlY3RhdGlvbnMgdG8gZGVsZXRlLCBjbGVh
ciBvdXIgc2V0IHdpdGhpbiB0aGUgbXV0ZXgsIGFuZCB0aGVuIGNsZWFyIHRoZQorICAvLyBjb3Bp
ZWQgc2V0IG91dHNpZGUgb2YgaXQuCisgIFVudHlwZWRFeHBlY3RhdGlvbnMgZXhwZWN0YXRpb25z
X3RvX2RlbGV0ZTsKKyAgdW50eXBlZF9leHBlY3RhdGlvbnNfLnN3YXAoZXhwZWN0YXRpb25zX3Rv
X2RlbGV0ZSk7CisKKyAgZ19nbW9ja19tdXRleC5VbmxvY2soKTsKKyAgZXhwZWN0YXRpb25zX3Rv
X2RlbGV0ZS5jbGVhcigpOworICBnX2dtb2NrX211dGV4LkxvY2soKTsKKworICByZXR1cm4gZXhw
ZWN0YXRpb25zX21ldDsKK30KKworfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCisKKy8vIENsYXNz
IE1vY2suCisKK25hbWVzcGFjZSB7CisKK3R5cGVkZWYgc3RkOjpzZXQ8aW50ZXJuYWw6OlVudHlw
ZWRGdW5jdGlvbk1vY2tlckJhc2UqPiBGdW5jdGlvbk1vY2tlcnM7CisKKy8vIFRoZSBjdXJyZW50
IHN0YXRlIG9mIGEgbW9jayBvYmplY3QuICBTdWNoIGluZm9ybWF0aW9uIGlzIG5lZWRlZCBmb3IK
Ky8vIGRldGVjdGluZyBsZWFrZWQgbW9jayBvYmplY3RzIGFuZCBleHBsaWNpdGx5IHZlcmlmeWlu
ZyBhIG1vY2sncworLy8gZXhwZWN0YXRpb25zLgorc3RydWN0IE1vY2tPYmplY3RTdGF0ZSB7Cisg
IE1vY2tPYmplY3RTdGF0ZSgpCisgICAgICA6IGZpcnN0X3VzZWRfZmlsZShOVUxMKSwgZmlyc3Rf
dXNlZF9saW5lKC0xKSwgbGVha2FibGUoZmFsc2UpIHt9CisKKyAgLy8gV2hlcmUgaW4gdGhlIHNv
dXJjZSBmaWxlIGFuIE9OX0NBTEwgb3IgRVhQRUNUX0NBTEwgaXMgZmlyc3QKKyAgLy8gaW52b2tl
ZCBvbiB0aGlzIG1vY2sgb2JqZWN0LgorICBjb25zdCBjaGFyKiBmaXJzdF91c2VkX2ZpbGU7Cisg
IGludCBmaXJzdF91c2VkX2xpbmU7CisgIDo6c3RkOjpzdHJpbmcgZmlyc3RfdXNlZF90ZXN0X2Nh
c2U7CisgIDo6c3RkOjpzdHJpbmcgZmlyc3RfdXNlZF90ZXN0OworICBib29sIGxlYWthYmxlOyAg
Ly8gdHJ1ZSBpZmYgaXQncyBPSyB0byBsZWFrIHRoZSBvYmplY3QuCisgIEZ1bmN0aW9uTW9ja2Vy
cyBmdW5jdGlvbl9tb2NrZXJzOyAgLy8gQWxsIHJlZ2lzdGVyZWQgbWV0aG9kcyBvZiB0aGUgb2Jq
ZWN0LgorfTsKKworLy8gQSBnbG9iYWwgcmVnaXN0cnkgaG9sZGluZyB0aGUgc3RhdGUgb2YgYWxs
IG1vY2sgb2JqZWN0cyB0aGF0IGFyZQorLy8gYWxpdmUuICBBIG1vY2sgb2JqZWN0IGlzIGFkZGVk
IHRvIHRoaXMgcmVnaXN0cnkgdGhlIGZpcnN0IHRpbWUKKy8vIE1vY2s6OkFsbG93TGVhaygpLCBP
Tl9DQUxMKCksIG9yIEVYUEVDVF9DQUxMKCkgaXMgY2FsbGVkIG9uIGl0LiAgSXQKKy8vIGlzIHJl
bW92ZWQgZnJvbSB0aGUgcmVnaXN0cnkgaW4gdGhlIG1vY2sgb2JqZWN0J3MgZGVzdHJ1Y3Rvci4K
K2NsYXNzIE1vY2tPYmplY3RSZWdpc3RyeSB7CisgcHVibGljOgorICAvLyBNYXBzIGEgbW9jayBv
YmplY3QgKGlkZW50aWZpZWQgYnkgaXRzIGFkZHJlc3MpIHRvIGl0cyBzdGF0ZS4KKyAgdHlwZWRl
ZiBzdGQ6Om1hcDxjb25zdCB2b2lkKiwgTW9ja09iamVjdFN0YXRlPiBTdGF0ZU1hcDsKKworICAv
LyBUaGlzIGRlc3RydWN0b3Igd2lsbCBiZSBjYWxsZWQgd2hlbiBhIHByb2dyYW0gZXhpdHMsIGFm
dGVyIGFsbAorICAvLyB0ZXN0cyBpbiBpdCBoYXZlIGJlZW4gcnVuLiAgQnkgdGhlbiwgdGhlcmUg
c2hvdWxkIGJlIG5vIG1vY2sKKyAgLy8gb2JqZWN0IGFsaXZlLiAgVGhlcmVmb3JlIHdlIHJlcG9y
dCBhbnkgbGl2aW5nIG9iamVjdCBhcyB0ZXN0CisgIC8vIGZhaWx1cmUsIHVubGVzcyB0aGUgdXNl
ciBleHBsaWNpdGx5IGFza2VkIHVzIHRvIGlnbm9yZSBpdC4KKyAgfk1vY2tPYmplY3RSZWdpc3Ry
eSgpIHsKKyAgICAvLyAidXNpbmcgOjpzdGQ6OmNvdXQ7IiBkb2Vzbid0IHdvcmsgd2l0aCBTeW1i
aWFuJ3MgU1RMcG9ydCwgd2hlcmUgY291dCBpcworICAgIC8vIGEgbWFjcm8uCisKKyAgICBpZiAo
IUdNT0NLX0ZMQUcoY2F0Y2hfbGVha2VkX21vY2tzKSkKKyAgICAgIHJldHVybjsKKworICAgIGlu
dCBsZWFrZWRfY291bnQgPSAwOworICAgIGZvciAoU3RhdGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gc3RhdGVzXy5iZWdpbigpOyBpdCAhPSBzdGF0ZXNfLmVuZCgpOworICAgICAgICAgKytpdCkg
eworICAgICAgaWYgKGl0LT5zZWNvbmQubGVha2FibGUpICAvLyBUaGUgdXNlciBzYWlkIGl0J3Mg
ZmluZSB0byBsZWFrIHRoaXMgb2JqZWN0LgorICAgICAgICBjb250aW51ZTsKKworICAgICAgLy8g
VE9ETyh3YW5AZ29vZ2xlLmNvbSk6IFByaW50IHRoZSB0eXBlIG9mIHRoZSBsZWFrZWQgb2JqZWN0
LgorICAgICAgLy8gVGhpcyBjYW4gaGVscCB0aGUgdXNlciBpZGVudGlmeSB0aGUgbGVha2VkIG9i
amVjdC4KKyAgICAgIHN0ZDo6Y291dCA8PCAiXG4iOworICAgICAgY29uc3QgTW9ja09iamVjdFN0
YXRlJiBzdGF0ZSA9IGl0LT5zZWNvbmQ7CisgICAgICBzdGQ6OmNvdXQgPDwgaW50ZXJuYWw6OkZv
cm1hdEZpbGVMb2NhdGlvbihzdGF0ZS5maXJzdF91c2VkX2ZpbGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5maXJzdF91c2VkX2xpbmUpOwor
ICAgICAgc3RkOjpjb3V0IDw8ICIgRVJST1I6IHRoaXMgbW9jayBvYmplY3QiOworICAgICAgaWYg
KHN0YXRlLmZpcnN0X3VzZWRfdGVzdCAhPSAiIikgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIiAo
dXNlZCBpbiB0ZXN0ICIgPDwgc3RhdGUuZmlyc3RfdXNlZF90ZXN0X2Nhc2UgPDwgIi4iCisgICAg
ICAgICAgICAgPDwgc3RhdGUuZmlyc3RfdXNlZF90ZXN0IDw8ICIpIjsKKyAgICAgIH0KKyAgICAg
IHN0ZDo6Y291dCA8PCAiIHNob3VsZCBiZSBkZWxldGVkIGJ1dCBuZXZlciBpcy4gSXRzIGFkZHJl
c3MgaXMgQCIKKyAgICAgICAgICAgPDwgaXQtPmZpcnN0IDw8ICIuIjsKKyAgICAgIGxlYWtlZF9j
b3VudCsrOworICAgIH0KKyAgICBpZiAobGVha2VkX2NvdW50ID4gMCkgeworICAgICAgc3RkOjpj
b3V0IDw8ICJcbkVSUk9SOiAiIDw8IGxlYWtlZF9jb3VudAorICAgICAgICAgICA8PCAiIGxlYWtl
ZCBtb2NrICIgPDwgKGxlYWtlZF9jb3VudCA9PSAxID8gIm9iamVjdCIgOiAib2JqZWN0cyIpCisg
ICAgICAgICAgIDw8ICIgZm91bmQgYXQgcHJvZ3JhbSBleGl0LlxuIjsKKyAgICAgIHN0ZDo6Y291
dC5mbHVzaCgpOworICAgICAgOjpzdGQ6OmNlcnIuZmx1c2goKTsKKyAgICAgIC8vIFJVTl9BTExf
VEVTVFMoKSBoYXMgYWxyZWFkeSByZXR1cm5lZCB3aGVuIHRoaXMgZGVzdHJ1Y3RvciBpcworICAg
ICAgLy8gY2FsbGVkLiAgVGhlcmVmb3JlIHdlIGNhbm5vdCB1c2UgdGhlIG5vcm1hbCBHb29nbGUg
VGVzdAorICAgICAgLy8gZmFpbHVyZSByZXBvcnRpbmcgbWVjaGFuaXNtLgorICAgICAgX2V4aXQo
MSk7ICAvLyBXZSBjYW5ub3QgY2FsbCBleGl0KCkgYXMgaXQgaXMgbm90IHJlZW50cmFudCBhbmQK
KyAgICAgICAgICAgICAgICAgLy8gbWF5IGFscmVhZHkgaGF2ZSBiZWVuIGNhbGxlZC4KKyAgICB9
CisgIH0KKworICBTdGF0ZU1hcCYgc3RhdGVzKCkgeyByZXR1cm4gc3RhdGVzXzsgfQorCisgcHJp
dmF0ZToKKyAgU3RhdGVNYXAgc3RhdGVzXzsKK307CisKKy8vIFByb3RlY3RlZCBieSBnX2dtb2Nr
X211dGV4LgorTW9ja09iamVjdFJlZ2lzdHJ5IGdfbW9ja19vYmplY3RfcmVnaXN0cnk7CisKKy8v
IE1hcHMgYSBtb2NrIG9iamVjdCB0byB0aGUgcmVhY3Rpb24gR29vZ2xlIE1vY2sgc2hvdWxkIGhh
dmUgd2hlbiBhbgorLy8gdW5pbnRlcmVzdGluZyBtZXRob2QgaXMgY2FsbGVkLiAgUHJvdGVjdGVk
IGJ5IGdfZ21vY2tfbXV0ZXguCitzdGQ6Om1hcDxjb25zdCB2b2lkKiwgaW50ZXJuYWw6OkNhbGxS
ZWFjdGlvbj4gZ191bmludGVyZXN0aW5nX2NhbGxfcmVhY3Rpb247CisKKy8vIFNldHMgdGhlIHJl
YWN0aW9uIEdvb2dsZSBNb2NrIHNob3VsZCBoYXZlIHdoZW4gYW4gdW5pbnRlcmVzdGluZworLy8g
bWV0aG9kIG9mIHRoZSBnaXZlbiBtb2NrIG9iamVjdCBpcyBjYWxsZWQuCit2b2lkIFNldFJlYWN0
aW9uT25VbmludGVyZXN0aW5nQ2FsbHMoY29uc3Qgdm9pZCogbW9ja19vYmosCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWw6OkNhbGxSZWFjdGlvbiByZWFjdGlv
bikKKyAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhpbnRlcm5hbDo6Z19nbW9ja19tdXRleCkgewor
ICBpbnRlcm5hbDo6TXV0ZXhMb2NrIGwoJmludGVybmFsOjpnX2dtb2NrX211dGV4KTsKKyAgZ191
bmludGVyZXN0aW5nX2NhbGxfcmVhY3Rpb25bbW9ja19vYmpdID0gcmVhY3Rpb247Cit9CisKK30g
IC8vIG5hbWVzcGFjZQorCisvLyBUZWxscyBHb29nbGUgTW9jayB0byBhbGxvdyB1bmludGVyZXN0
aW5nIGNhbGxzIG9uIHRoZSBnaXZlbiBtb2NrCisvLyBvYmplY3QuCit2b2lkIE1vY2s6OkFsbG93
VW5pbnRlcmVzdGluZ0NhbGxzKGNvbnN0IHZvaWQqIG1vY2tfb2JqKQorICAgIEdURVNUX0xPQ0tf
RVhDTFVERURfKGludGVybmFsOjpnX2dtb2NrX211dGV4KSB7CisgIFNldFJlYWN0aW9uT25Vbmlu
dGVyZXN0aW5nQ2FsbHMobW9ja19vYmosIGludGVybmFsOjprQWxsb3cpOworfQorCisvLyBUZWxs
cyBHb29nbGUgTW9jayB0byB3YXJuIHRoZSB1c2VyIGFib3V0IHVuaW50ZXJlc3RpbmcgY2FsbHMg
b24gdGhlCisvLyBnaXZlbiBtb2NrIG9iamVjdC4KK3ZvaWQgTW9jazo6V2FyblVuaW50ZXJlc3Rp
bmdDYWxscyhjb25zdCB2b2lkKiBtb2NrX29iaikKKyAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhp
bnRlcm5hbDo6Z19nbW9ja19tdXRleCkgeworICBTZXRSZWFjdGlvbk9uVW5pbnRlcmVzdGluZ0Nh
bGxzKG1vY2tfb2JqLCBpbnRlcm5hbDo6a1dhcm4pOworfQorCisvLyBUZWxscyBHb29nbGUgTW9j
ayB0byBmYWlsIHVuaW50ZXJlc3RpbmcgY2FsbHMgb24gdGhlIGdpdmVuIG1vY2sKKy8vIG9iamVj
dC4KK3ZvaWQgTW9jazo6RmFpbFVuaW50ZXJlc3RpbmdDYWxscyhjb25zdCB2b2lkKiBtb2NrX29i
aikKKyAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhpbnRlcm5hbDo6Z19nbW9ja19tdXRleCkgewor
ICBTZXRSZWFjdGlvbk9uVW5pbnRlcmVzdGluZ0NhbGxzKG1vY2tfb2JqLCBpbnRlcm5hbDo6a0Zh
aWwpOworfQorCisvLyBUZWxscyBHb29nbGUgTW9jayB0aGUgZ2l2ZW4gbW9jayBvYmplY3QgaXMg
YmVpbmcgZGVzdHJveWVkIGFuZCBpdHMKKy8vIGVudHJ5IGluIHRoZSBjYWxsLXJlYWN0aW9uIHRh
YmxlIHNob3VsZCBiZSByZW1vdmVkLgordm9pZCBNb2NrOjpVbnJlZ2lzdGVyQ2FsbFJlYWN0aW9u
KGNvbnN0IHZvaWQqIG1vY2tfb2JqKQorICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKGludGVybmFs
OjpnX2dtb2NrX211dGV4KSB7CisgIGludGVybmFsOjpNdXRleExvY2sgbCgmaW50ZXJuYWw6Omdf
Z21vY2tfbXV0ZXgpOworICBnX3VuaW50ZXJlc3RpbmdfY2FsbF9yZWFjdGlvbi5lcmFzZShtb2Nr
X29iaik7Cit9CisKKy8vIFJldHVybnMgdGhlIHJlYWN0aW9uIEdvb2dsZSBNb2NrIHdpbGwgaGF2
ZSBvbiB1bmludGVyZXN0aW5nIGNhbGxzCisvLyBtYWRlIG9uIHRoZSBnaXZlbiBtb2NrIG9iamVj
dC4KK2ludGVybmFsOjpDYWxsUmVhY3Rpb24gTW9jazo6R2V0UmVhY3Rpb25PblVuaW50ZXJlc3Rp
bmdDYWxscygKKyAgICBjb25zdCB2b2lkKiBtb2NrX29iaikKKyAgICAgICAgR1RFU1RfTE9DS19F
WENMVURFRF8oaW50ZXJuYWw6OmdfZ21vY2tfbXV0ZXgpIHsKKyAgaW50ZXJuYWw6Ok11dGV4TG9j
ayBsKCZpbnRlcm5hbDo6Z19nbW9ja19tdXRleCk7CisgIHJldHVybiAoZ191bmludGVyZXN0aW5n
X2NhbGxfcmVhY3Rpb24uY291bnQobW9ja19vYmopID09IDApID8KKyAgICAgIGludGVybmFsOjpr
RGVmYXVsdCA6IGdfdW5pbnRlcmVzdGluZ19jYWxsX3JlYWN0aW9uW21vY2tfb2JqXTsKK30KKwor
Ly8gVGVsbHMgR29vZ2xlIE1vY2sgdG8gaWdub3JlIG1vY2tfb2JqIHdoZW4gY2hlY2tpbmcgZm9y
IGxlYWtlZCBtb2NrCisvLyBvYmplY3RzLgordm9pZCBNb2NrOjpBbGxvd0xlYWsoY29uc3Qgdm9p
ZCogbW9ja19vYmopCisgICAgR1RFU1RfTE9DS19FWENMVURFRF8oaW50ZXJuYWw6OmdfZ21vY2tf
bXV0ZXgpIHsKKyAgaW50ZXJuYWw6Ok11dGV4TG9jayBsKCZpbnRlcm5hbDo6Z19nbW9ja19tdXRl
eCk7CisgIGdfbW9ja19vYmplY3RfcmVnaXN0cnkuc3RhdGVzKClbbW9ja19vYmpdLmxlYWthYmxl
ID0gdHJ1ZTsKK30KKworLy8gVmVyaWZpZXMgYW5kIGNsZWFycyBhbGwgZXhwZWN0YXRpb25zIG9u
IHRoZSBnaXZlbiBtb2NrIG9iamVjdC4gIElmCisvLyB0aGUgZXhwZWN0YXRpb25zIGFyZW4ndCBz
YXRpc2ZpZWQsIGdlbmVyYXRlcyBvbmUgb3IgbW9yZSBHb29nbGUKKy8vIFRlc3Qgbm9uLWZhdGFs
IGZhaWx1cmVzIGFuZCByZXR1cm5zIGZhbHNlLgorYm9vbCBNb2NrOjpWZXJpZnlBbmRDbGVhckV4
cGVjdGF0aW9ucyh2b2lkKiBtb2NrX29iaikKKyAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhpbnRl
cm5hbDo6Z19nbW9ja19tdXRleCkgeworICBpbnRlcm5hbDo6TXV0ZXhMb2NrIGwoJmludGVybmFs
OjpnX2dtb2NrX211dGV4KTsKKyAgcmV0dXJuIFZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zTG9j
a2VkKG1vY2tfb2JqKTsKK30KKworLy8gVmVyaWZpZXMgYWxsIGV4cGVjdGF0aW9ucyBvbiB0aGUg
Z2l2ZW4gbW9jayBvYmplY3QgYW5kIGNsZWFycyBpdHMKKy8vIGRlZmF1bHQgYWN0aW9ucyBhbmQg
ZXhwZWN0YXRpb25zLiAgUmV0dXJucyB0cnVlIGlmZiB0aGUKKy8vIHZlcmlmaWNhdGlvbiB3YXMg
c3VjY2Vzc2Z1bC4KK2Jvb2wgTW9jazo6VmVyaWZ5QW5kQ2xlYXIodm9pZCogbW9ja19vYmopCisg
ICAgR1RFU1RfTE9DS19FWENMVURFRF8oaW50ZXJuYWw6OmdfZ21vY2tfbXV0ZXgpIHsKKyAgaW50
ZXJuYWw6Ok11dGV4TG9jayBsKCZpbnRlcm5hbDo6Z19nbW9ja19tdXRleCk7CisgIENsZWFyRGVm
YXVsdEFjdGlvbnNMb2NrZWQobW9ja19vYmopOworICByZXR1cm4gVmVyaWZ5QW5kQ2xlYXJFeHBl
Y3RhdGlvbnNMb2NrZWQobW9ja19vYmopOworfQorCisvLyBWZXJpZmllcyBhbmQgY2xlYXJzIGFs
bCBleHBlY3RhdGlvbnMgb24gdGhlIGdpdmVuIG1vY2sgb2JqZWN0LiAgSWYKKy8vIHRoZSBleHBl
Y3RhdGlvbnMgYXJlbid0IHNhdGlzZmllZCwgZ2VuZXJhdGVzIG9uZSBvciBtb3JlIEdvb2dsZQor
Ly8gVGVzdCBub24tZmF0YWwgZmFpbHVyZXMgYW5kIHJldHVybnMgZmFsc2UuCitib29sIE1vY2s6
OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zTG9ja2VkKHZvaWQqIG1vY2tfb2JqKQorICAgIEdU
RVNUX0VYQ0xVU0lWRV9MT0NLX1JFUVVJUkVEXyhpbnRlcm5hbDo6Z19nbW9ja19tdXRleCkgewor
ICBpbnRlcm5hbDo6Z19nbW9ja19tdXRleC5Bc3NlcnRIZWxkKCk7CisgIGlmIChnX21vY2tfb2Jq
ZWN0X3JlZ2lzdHJ5LnN0YXRlcygpLmNvdW50KG1vY2tfb2JqKSA9PSAwKSB7CisgICAgLy8gTm8g
RVhQRUNUX0NBTEwoKSB3YXMgc2V0IG9uIHRoZSBnaXZlbiBtb2NrIG9iamVjdC4KKyAgICByZXR1
cm4gdHJ1ZTsKKyAgfQorCisgIC8vIFZlcmlmaWVzIGFuZCBjbGVhcnMgdGhlIGV4cGVjdGF0aW9u
cyBvbiBlYWNoIG1vY2sgbWV0aG9kIGluIHRoZQorICAvLyBnaXZlbiBtb2NrIG9iamVjdC4KKyAg
Ym9vbCBleHBlY3RhdGlvbnNfbWV0ID0gdHJ1ZTsKKyAgRnVuY3Rpb25Nb2NrZXJzJiBtb2NrZXJz
ID0KKyAgICAgIGdfbW9ja19vYmplY3RfcmVnaXN0cnkuc3RhdGVzKClbbW9ja19vYmpdLmZ1bmN0
aW9uX21vY2tlcnM7CisgIGZvciAoRnVuY3Rpb25Nb2NrZXJzOjpjb25zdF9pdGVyYXRvciBpdCA9
IG1vY2tlcnMuYmVnaW4oKTsKKyAgICAgICBpdCAhPSBtb2NrZXJzLmVuZCgpOyArK2l0KSB7Cisg
ICAgaWYgKCEoKml0KS0+VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnNMb2NrZWQoKSkgeworICAg
ICAgZXhwZWN0YXRpb25zX21ldCA9IGZhbHNlOworICAgIH0KKyAgfQorCisgIC8vIFdlIGRvbid0
IGNsZWFyIHRoZSBjb250ZW50IG9mIG1vY2tlcnMsIGFzIHRoZXkgbWF5IHN0aWxsIGJlCisgIC8v
IG5lZWRlZCBieSBDbGVhckRlZmF1bHRBY3Rpb25zTG9ja2VkKCkuCisgIHJldHVybiBleHBlY3Rh
dGlvbnNfbWV0OworfQorCisvLyBSZWdpc3RlcnMgYSBtb2NrIG9iamVjdCBhbmQgYSBtb2NrIG1l
dGhvZCBpdCBvd25zLgordm9pZCBNb2NrOjpSZWdpc3Rlcihjb25zdCB2b2lkKiBtb2NrX29iaiwK
KyAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWw6OlVudHlwZWRGdW5jdGlvbk1vY2tlckJhc2Uq
IG1vY2tlcikKKyAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhpbnRlcm5hbDo6Z19nbW9ja19tdXRl
eCkgeworICBpbnRlcm5hbDo6TXV0ZXhMb2NrIGwoJmludGVybmFsOjpnX2dtb2NrX211dGV4KTsK
KyAgZ19tb2NrX29iamVjdF9yZWdpc3RyeS5zdGF0ZXMoKVttb2NrX29ial0uZnVuY3Rpb25fbW9j
a2Vycy5pbnNlcnQobW9ja2VyKTsKK30KKworLy8gVGVsbHMgR29vZ2xlIE1vY2sgd2hlcmUgaW4g
dGhlIHNvdXJjZSBjb2RlIG1vY2tfb2JqIGlzIHVzZWQgaW4gYW4KKy8vIE9OX0NBTEwgb3IgRVhQ
RUNUX0NBTEwuICBJbiBjYXNlIG1vY2tfb2JqIGlzIGxlYWtlZCwgdGhpcworLy8gaW5mb3JtYXRp
b24gaGVscHMgdGhlIHVzZXIgaWRlbnRpZnkgd2hpY2ggb2JqZWN0IGl0IGlzLgordm9pZCBNb2Nr
OjpSZWdpc3RlclVzZUJ5T25DYWxsT3JFeHBlY3RDYWxsKGNvbnN0IHZvaWQqIG1vY2tfb2JqLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZp
bGUsIGludCBsaW5lKQorICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKGludGVybmFsOjpnX2dtb2Nr
X211dGV4KSB7CisgIGludGVybmFsOjpNdXRleExvY2sgbCgmaW50ZXJuYWw6OmdfZ21vY2tfbXV0
ZXgpOworICBNb2NrT2JqZWN0U3RhdGUmIHN0YXRlID0gZ19tb2NrX29iamVjdF9yZWdpc3RyeS5z
dGF0ZXMoKVttb2NrX29ial07CisgIGlmIChzdGF0ZS5maXJzdF91c2VkX2ZpbGUgPT0gTlVMTCkg
eworICAgIHN0YXRlLmZpcnN0X3VzZWRfZmlsZSA9IGZpbGU7CisgICAgc3RhdGUuZmlyc3RfdXNl
ZF9saW5lID0gbGluZTsKKyAgICBjb25zdCBUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0KKyAg
ICAgICAgVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7CisgICAg
aWYgKHRlc3RfaW5mbyAhPSBOVUxMKSB7CisgICAgICAvLyBUT0RPKHdhbkBnb29nbGUuY29tKTog
cmVjb3JkIHRoZSB0ZXN0IGNhc2UgbmFtZSB3aGVuIHRoZQorICAgICAgLy8gT05fQ0FMTCBvciBF
WFBFQ1RfQ0FMTCBpcyBpbnZva2VkIGZyb20gU2V0VXBUZXN0Q2FzZSgpIG9yCisgICAgICAvLyBU
ZWFyRG93blRlc3RDYXNlKCkuCisgICAgICBzdGF0ZS5maXJzdF91c2VkX3Rlc3RfY2FzZSA9IHRl
c3RfaW5mby0+dGVzdF9jYXNlX25hbWUoKTsKKyAgICAgIHN0YXRlLmZpcnN0X3VzZWRfdGVzdCA9
IHRlc3RfaW5mby0+bmFtZSgpOworICAgIH0KKyAgfQorfQorCisvLyBVbnJlZ2lzdGVycyBhIG1v
Y2sgbWV0aG9kOyByZW1vdmVzIHRoZSBvd25pbmcgbW9jayBvYmplY3QgZnJvbSB0aGUKKy8vIHJl
Z2lzdHJ5IHdoZW4gdGhlIGxhc3QgbW9jayBtZXRob2QgYXNzb2NpYXRlZCB3aXRoIGl0IGhhcyBi
ZWVuCisvLyB1bnJlZ2lzdGVyZWQuICBUaGlzIGlzIGNhbGxlZCBvbmx5IGluIHRoZSBkZXN0cnVj
dG9yIG9mCisvLyBGdW5jdGlvbk1vY2tlckJhc2UuCit2b2lkIE1vY2s6OlVucmVnaXN0ZXJMb2Nr
ZWQoaW50ZXJuYWw6OlVudHlwZWRGdW5jdGlvbk1vY2tlckJhc2UqIG1vY2tlcikKKyAgICBHVEVT
VF9FWENMVVNJVkVfTE9DS19SRVFVSVJFRF8oaW50ZXJuYWw6OmdfZ21vY2tfbXV0ZXgpIHsKKyAg
aW50ZXJuYWw6OmdfZ21vY2tfbXV0ZXguQXNzZXJ0SGVsZCgpOworICBmb3IgKE1vY2tPYmplY3RS
ZWdpc3RyeTo6U3RhdGVNYXA6Oml0ZXJhdG9yIGl0ID0KKyAgICAgICAgICAgZ19tb2NrX29iamVj
dF9yZWdpc3RyeS5zdGF0ZXMoKS5iZWdpbigpOworICAgICAgIGl0ICE9IGdfbW9ja19vYmplY3Rf
cmVnaXN0cnkuc3RhdGVzKCkuZW5kKCk7ICsraXQpIHsKKyAgICBGdW5jdGlvbk1vY2tlcnMmIG1v
Y2tlcnMgPSBpdC0+c2Vjb25kLmZ1bmN0aW9uX21vY2tlcnM7CisgICAgaWYgKG1vY2tlcnMuZXJh
c2UobW9ja2VyKSA+IDApIHsKKyAgICAgIC8vIG1vY2tlciB3YXMgaW4gbW9ja2VycyBhbmQgaGFz
IGJlZW4ganVzdCByZW1vdmVkLgorICAgICAgaWYgKG1vY2tlcnMuZW1wdHkoKSkgeworICAgICAg
ICBnX21vY2tfb2JqZWN0X3JlZ2lzdHJ5LnN0YXRlcygpLmVyYXNlKGl0KTsKKyAgICAgIH0KKyAg
ICAgIHJldHVybjsKKyAgICB9CisgIH0KK30KKworLy8gQ2xlYXJzIGFsbCBPTl9DQUxMKClzIHNl
dCBvbiB0aGUgZ2l2ZW4gbW9jayBvYmplY3QuCit2b2lkIE1vY2s6OkNsZWFyRGVmYXVsdEFjdGlv
bnNMb2NrZWQodm9pZCogbW9ja19vYmopCisgICAgR1RFU1RfRVhDTFVTSVZFX0xPQ0tfUkVRVUlS
RURfKGludGVybmFsOjpnX2dtb2NrX211dGV4KSB7CisgIGludGVybmFsOjpnX2dtb2NrX211dGV4
LkFzc2VydEhlbGQoKTsKKworICBpZiAoZ19tb2NrX29iamVjdF9yZWdpc3RyeS5zdGF0ZXMoKS5j
b3VudChtb2NrX29iaikgPT0gMCkgeworICAgIC8vIE5vIE9OX0NBTEwoKSB3YXMgc2V0IG9uIHRo
ZSBnaXZlbiBtb2NrIG9iamVjdC4KKyAgICByZXR1cm47CisgIH0KKworICAvLyBDbGVhcnMgdGhl
IGRlZmF1bHQgYWN0aW9ucyBmb3IgZWFjaCBtb2NrIG1ldGhvZCBpbiB0aGUgZ2l2ZW4gbW9jawor
ICAvLyBvYmplY3QuCisgIEZ1bmN0aW9uTW9ja2VycyYgbW9ja2VycyA9CisgICAgICBnX21vY2tf
b2JqZWN0X3JlZ2lzdHJ5LnN0YXRlcygpW21vY2tfb2JqXS5mdW5jdGlvbl9tb2NrZXJzOworICBm
b3IgKEZ1bmN0aW9uTW9ja2Vyczo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtb2NrZXJzLmJlZ2luKCk7
CisgICAgICAgaXQgIT0gbW9ja2Vycy5lbmQoKTsgKytpdCkgeworICAgICgqaXQpLT5DbGVhckRl
ZmF1bHRBY3Rpb25zTG9ja2VkKCk7CisgIH0KKworICAvLyBXZSBkb24ndCBjbGVhciB0aGUgY29u
dGVudCBvZiBtb2NrZXJzLCBhcyB0aGV5IG1heSBzdGlsbCBiZQorICAvLyBuZWVkZWQgYnkgVmVy
aWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnNMb2NrZWQoKS4KK30KKworRXhwZWN0YXRpb246OkV4cGVj
dGF0aW9uKCkge30KKworRXhwZWN0YXRpb246OkV4cGVjdGF0aW9uKAorICAgIGNvbnN0IGludGVy
bmFsOjpsaW5rZWRfcHRyPGludGVybmFsOjpFeHBlY3RhdGlvbkJhc2U+JiBhbl9leHBlY3RhdGlv
bl9iYXNlKQorICAgIDogZXhwZWN0YXRpb25fYmFzZV8oYW5fZXhwZWN0YXRpb25fYmFzZSkge30K
KworRXhwZWN0YXRpb246On5FeHBlY3RhdGlvbigpIHt9CisKKy8vIEFkZHMgYW4gZXhwZWN0YXRp
b24gdG8gYSBzZXF1ZW5jZS4KK3ZvaWQgU2VxdWVuY2U6OkFkZEV4cGVjdGF0aW9uKGNvbnN0IEV4
cGVjdGF0aW9uJiBleHBlY3RhdGlvbikgY29uc3QgeworICBpZiAoKmxhc3RfZXhwZWN0YXRpb25f
ICE9IGV4cGVjdGF0aW9uKSB7CisgICAgaWYgKGxhc3RfZXhwZWN0YXRpb25fLT5leHBlY3RhdGlv
bl9iYXNlKCkgIT0gTlVMTCkgeworICAgICAgZXhwZWN0YXRpb24uZXhwZWN0YXRpb25fYmFzZSgp
LT5pbW1lZGlhdGVfcHJlcmVxdWlzaXRlc18KKyAgICAgICAgICArPSAqbGFzdF9leHBlY3RhdGlv
bl87CisgICAgfQorICAgICpsYXN0X2V4cGVjdGF0aW9uXyA9IGV4cGVjdGF0aW9uOworICB9Cit9
CisKKy8vIENyZWF0ZXMgdGhlIGltcGxpY2l0IHNlcXVlbmNlIGlmIHRoZXJlIGlzbid0IG9uZS4K
K0luU2VxdWVuY2U6OkluU2VxdWVuY2UoKSB7CisgIGlmIChpbnRlcm5hbDo6Z19nbW9ja19pbXBs
aWNpdF9zZXF1ZW5jZS5nZXQoKSA9PSBOVUxMKSB7CisgICAgaW50ZXJuYWw6OmdfZ21vY2tfaW1w
bGljaXRfc2VxdWVuY2Uuc2V0KG5ldyBTZXF1ZW5jZSk7CisgICAgc2VxdWVuY2VfY3JlYXRlZF8g
PSB0cnVlOworICB9IGVsc2UgeworICAgIHNlcXVlbmNlX2NyZWF0ZWRfID0gZmFsc2U7CisgIH0K
K30KKworLy8gRGVsZXRlcyB0aGUgaW1wbGljaXQgc2VxdWVuY2UgaWYgaXQgd2FzIGNyZWF0ZWQg
YnkgdGhlIGNvbnN0cnVjdG9yCisvLyBvZiB0aGlzIG9iamVjdC4KK0luU2VxdWVuY2U6On5JblNl
cXVlbmNlKCkgeworICBpZiAoc2VxdWVuY2VfY3JlYXRlZF8pIHsKKyAgICBkZWxldGUgaW50ZXJu
YWw6OmdfZ21vY2tfaW1wbGljaXRfc2VxdWVuY2UuZ2V0KCk7CisgICAgaW50ZXJuYWw6OmdfZ21v
Y2tfaW1wbGljaXRfc2VxdWVuY2Uuc2V0KE5VTEwpOworICB9Cit9CisKK30gIC8vIG5hbWVzcGFj
ZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zcmMvZ21vY2suY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
bW9jay9zcmMvZ21vY2suY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWFjM2Q4NDJiYTA3NTgxNWYzMTA5ODM5ZTc5
OTBlNGQ5ZGZkMmUwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NyYy9nbW9jay5j
YwpAQCAtMCwwICsxLDE4MyBAQAorLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCisvLyBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
Ly8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
Ly8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
Ky8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorLy8KKy8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKwor
I2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCisjaW5jbHVkZSAiZ21vY2svaW50ZXJuYWwvZ21vY2st
cG9ydC5oIgorCituYW1lc3BhY2UgdGVzdGluZyB7CisKKy8vIFRPRE8od2FuQGdvb2dsZS5jb20p
OiBzdXBwb3J0IHVzaW5nIGVudmlyb25tZW50IHZhcmlhYmxlcyB0bworLy8gY29udHJvbCB0aGUg
ZmxhZyB2YWx1ZXMsIGxpa2Ugd2hhdCBHb29nbGUgVGVzdCBkb2VzLgorCitHTU9DS19ERUZJTkVf
Ym9vbF8oY2F0Y2hfbGVha2VkX21vY2tzLCB0cnVlLAorICAgICAgICAgICAgICAgICAgICJ0cnVl
IGlmZiBHb29nbGUgTW9jayBzaG91bGQgcmVwb3J0IGxlYWtlZCBtb2NrIG9iamVjdHMgIgorICAg
ICAgICAgICAgICAgICAgICJhcyBmYWlsdXJlcy4iKTsKKworR01PQ0tfREVGSU5FX3N0cmluZ18o
dmVyYm9zZSwgaW50ZXJuYWw6OmtXYXJuaW5nVmVyYm9zaXR5LAorICAgICAgICAgICAgICAgICAg
ICAgIkNvbnRyb2xzIGhvdyB2ZXJib3NlIEdvb2dsZSBNb2NrJ3Mgb3V0cHV0IGlzLiIKKyAgICAg
ICAgICAgICAgICAgICAgICIgIFZhbGlkIHZhbHVlczpcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICIgIGluZm8gICAgLSBwcmludHMgYWxsIG1lc3NhZ2VzLlxuIgorICAgICAgICAgICAgICAgICAg
ICAgIiAgd2FybmluZyAtIHByaW50cyB3YXJuaW5ncyBhbmQgZXJyb3JzLlxuIgorICAgICAgICAg
ICAgICAgICAgICAgIiAgZXJyb3IgICAtIHByaW50cyBlcnJvcnMgb25seS4iKTsKKworbmFtZXNw
YWNlIGludGVybmFsIHsKKworLy8gUGFyc2VzIGEgc3RyaW5nIGFzIGEgY29tbWFuZCBsaW5lIGZs
YWcuICBUaGUgc3RyaW5nIHNob3VsZCBoYXZlIHRoZQorLy8gZm9ybWF0ICItLWdtb2NrX2ZsYWc9
dmFsdWUiLiAgV2hlbiBkZWZfb3B0aW9uYWwgaXMgdHJ1ZSwgdGhlCisvLyAiPXZhbHVlIiBwYXJ0
IGNhbiBiZSBvbWl0dGVkLgorLy8KKy8vIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBmbGFnLCBv
ciBOVUxMIGlmIHRoZSBwYXJzaW5nIGZhaWxlZC4KK3N0YXRpYyBjb25zdCBjaGFyKiBQYXJzZUdv
b2dsZU1vY2tGbGFnVmFsdWUoY29uc3QgY2hhciogc3RyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmbGFnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRlZl9vcHRpb25hbCkgeworICAvLyBz
dHIgYW5kIGZsYWcgbXVzdCBub3QgYmUgTlVMTC4KKyAgaWYgKHN0ciA9PSBOVUxMIHx8IGZsYWcg
PT0gTlVMTCkgcmV0dXJuIE5VTEw7CisKKyAgLy8gVGhlIGZsYWcgbXVzdCBzdGFydCB3aXRoICIt
LWdtb2NrXyIuCisgIGNvbnN0IHN0ZDo6c3RyaW5nIGZsYWdfc3RyID0gc3RkOjpzdHJpbmcoIi0t
Z21vY2tfIikgKyBmbGFnOworICBjb25zdCBzaXplX3QgZmxhZ19sZW4gPSBmbGFnX3N0ci5sZW5n
dGgoKTsKKyAgaWYgKHN0cm5jbXAoc3RyLCBmbGFnX3N0ci5jX3N0cigpLCBmbGFnX2xlbikgIT0g
MCkgcmV0dXJuIE5VTEw7CisKKyAgLy8gU2tpcHMgdGhlIGZsYWcgbmFtZS4KKyAgY29uc3QgY2hh
ciogZmxhZ19lbmQgPSBzdHIgKyBmbGFnX2xlbjsKKworICAvLyBXaGVuIGRlZl9vcHRpb25hbCBp
cyB0cnVlLCBpdCdzIE9LIHRvIG5vdCBoYXZlIGEgIj12YWx1ZSIgcGFydC4KKyAgaWYgKGRlZl9v
cHRpb25hbCAmJiAoZmxhZ19lbmRbMF0gPT0gJ1wwJykpIHsKKyAgICByZXR1cm4gZmxhZ19lbmQ7
CisgIH0KKworICAvLyBJZiBkZWZfb3B0aW9uYWwgaXMgdHJ1ZSBhbmQgdGhlcmUgYXJlIG1vcmUg
Y2hhcmFjdGVycyBhZnRlciB0aGUKKyAgLy8gZmxhZyBuYW1lLCBvciBpZiBkZWZfb3B0aW9uYWwg
aXMgZmFsc2UsIHRoZXJlIG11c3QgYmUgYSAnPScgYWZ0ZXIKKyAgLy8gdGhlIGZsYWcgbmFtZS4K
KyAgaWYgKGZsYWdfZW5kWzBdICE9ICc9JykgcmV0dXJuIE5VTEw7CisKKyAgLy8gUmV0dXJucyB0
aGUgc3RyaW5nIGFmdGVyICI9Ii4KKyAgcmV0dXJuIGZsYWdfZW5kICsgMTsKK30KKworLy8gUGFy
c2VzIGEgc3RyaW5nIGZvciBhIEdvb2dsZSBNb2NrIGJvb2wgZmxhZywgaW4gdGhlIGZvcm0gb2YK
Ky8vICItLWdtb2NrX2ZsYWc9dmFsdWUiLgorLy8KKy8vIE9uIHN1Y2Nlc3MsIHN0b3JlcyB0aGUg
dmFsdWUgb2YgdGhlIGZsYWcgaW4gKnZhbHVlLCBhbmQgcmV0dXJucworLy8gdHJ1ZS4gIE9uIGZh
aWx1cmUsIHJldHVybnMgZmFsc2Ugd2l0aG91dCBjaGFuZ2luZyAqdmFsdWUuCitzdGF0aWMgYm9v
bCBQYXJzZUdvb2dsZU1vY2tCb29sRmxhZyhjb25zdCBjaGFyKiBzdHIsIGNvbnN0IGNoYXIqIGZs
YWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sKiB2YWx1ZSkgewor
ICAvLyBHZXRzIHRoZSB2YWx1ZSBvZiB0aGUgZmxhZyBhcyBhIHN0cmluZy4KKyAgY29uc3QgY2hh
ciogY29uc3QgdmFsdWVfc3RyID0gUGFyc2VHb29nbGVNb2NrRmxhZ1ZhbHVlKHN0ciwgZmxhZywg
dHJ1ZSk7CisKKyAgLy8gQWJvcnRzIGlmIHRoZSBwYXJzaW5nIGZhaWxlZC4KKyAgaWYgKHZhbHVl
X3N0ciA9PSBOVUxMKSByZXR1cm4gZmFsc2U7CisKKyAgLy8gQ29udmVydHMgdGhlIHN0cmluZyB2
YWx1ZSB0byBhIGJvb2wuCisgICp2YWx1ZSA9ICEoKnZhbHVlX3N0ciA9PSAnMCcgfHwgKnZhbHVl
X3N0ciA9PSAnZicgfHwgKnZhbHVlX3N0ciA9PSAnRicpOworICByZXR1cm4gdHJ1ZTsKK30KKwor
Ly8gUGFyc2VzIGEgc3RyaW5nIGZvciBhIEdvb2dsZSBNb2NrIHN0cmluZyBmbGFnLCBpbiB0aGUg
Zm9ybSBvZgorLy8gIi0tZ21vY2tfZmxhZz12YWx1ZSIuCisvLworLy8gT24gc3VjY2Vzcywgc3Rv
cmVzIHRoZSB2YWx1ZSBvZiB0aGUgZmxhZyBpbiAqdmFsdWUsIGFuZCByZXR1cm5zCisvLyB0cnVl
LiAgT24gZmFpbHVyZSwgcmV0dXJucyBmYWxzZSB3aXRob3V0IGNoYW5naW5nICp2YWx1ZS4KK3Rl
bXBsYXRlIDx0eXBlbmFtZSBTdHJpbmc+CitzdGF0aWMgYm9vbCBQYXJzZUdvb2dsZU1vY2tTdHJp
bmdGbGFnKGNvbnN0IGNoYXIqIHN0ciwgY29uc3QgY2hhciogZmxhZywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nKiB2YWx1ZSkgeworICAvLyBHZXRzIHRoZSB2
YWx1ZSBvZiB0aGUgZmxhZyBhcyBhIHN0cmluZy4KKyAgY29uc3QgY2hhciogY29uc3QgdmFsdWVf
c3RyID0gUGFyc2VHb29nbGVNb2NrRmxhZ1ZhbHVlKHN0ciwgZmxhZywgZmFsc2UpOworCisgIC8v
IEFib3J0cyBpZiB0aGUgcGFyc2luZyBmYWlsZWQuCisgIGlmICh2YWx1ZV9zdHIgPT0gTlVMTCkg
cmV0dXJuIGZhbHNlOworCisgIC8vIFNldHMgKnZhbHVlIHRvIHRoZSB2YWx1ZSBvZiB0aGUgZmxh
Zy4KKyAgKnZhbHVlID0gdmFsdWVfc3RyOworICByZXR1cm4gdHJ1ZTsKK30KKworLy8gVGhlIGlu
dGVybmFsIGltcGxlbWVudGF0aW9uIG9mIEluaXRHb29nbGVNb2NrKCkuCisvLworLy8gVGhlIHR5
cGUgcGFyYW1ldGVyIENoYXJUeXBlIGNhbiBiZSBpbnN0YW50aWF0ZWQgdG8gZWl0aGVyIGNoYXIg
b3IKKy8vIHdjaGFyX3QuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Cit2b2lkIEluaXRH
b29nbGVNb2NrSW1wbChpbnQqIGFyZ2MsIENoYXJUeXBlKiogYXJndikgeworICAvLyBNYWtlcyBz
dXJlIEdvb2dsZSBUZXN0IGlzIGluaXRpYWxpemVkLiAgSW5pdEdvb2dsZVRlc3QoKSBpcworICAv
LyBpZGVtcG90ZW50LCBzbyBpdCdzIGZpbmUgaWYgdGhlIHVzZXIgaGFzIGFscmVhZHkgY2FsbGVk
IGl0LgorICBJbml0R29vZ2xlVGVzdChhcmdjLCBhcmd2KTsKKyAgaWYgKCphcmdjIDw9IDApIHJl
dHVybjsKKworICBmb3IgKGludCBpID0gMTsgaSAhPSAqYXJnYzsgaSsrKSB7CisgICAgY29uc3Qg
c3RkOjpzdHJpbmcgYXJnX3N0cmluZyA9IFN0cmVhbWFibGVUb1N0cmluZyhhcmd2W2ldKTsKKyAg
ICBjb25zdCBjaGFyKiBjb25zdCBhcmcgPSBhcmdfc3RyaW5nLmNfc3RyKCk7CisKKyAgICAvLyBE
byB3ZSBzZWUgYSBHb29nbGUgTW9jayBmbGFnPworICAgIGlmIChQYXJzZUdvb2dsZU1vY2tCb29s
RmxhZyhhcmcsICJjYXRjaF9sZWFrZWRfbW9ja3MiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAmR01PQ0tfRkxBRyhjYXRjaF9sZWFrZWRfbW9ja3MpKSB8fAorICAgICAgICBQYXJz
ZUdvb2dsZU1vY2tTdHJpbmdGbGFnKGFyZywgInZlcmJvc2UiLCAmR01PQ0tfRkxBRyh2ZXJib3Nl
KSkpIHsKKyAgICAgIC8vIFllcy4gIFNoaWZ0IHRoZSByZW1haW5kZXIgb2YgdGhlIGFyZ3YgbGlz
dCBsZWZ0IGJ5IG9uZS4gIE5vdGUKKyAgICAgIC8vIHRoYXQgYXJndiBoYXMgKCphcmdjICsgMSkg
ZWxlbWVudHMsIHRoZSBsYXN0IG9uZSBhbHdheXMgYmVpbmcKKyAgICAgIC8vIE5VTEwuICBUaGUg
Zm9sbG93aW5nIGxvb3AgbW92ZXMgdGhlIHRyYWlsaW5nIE5VTEwgZWxlbWVudCBhcworICAgICAg
Ly8gd2VsbC4KKyAgICAgIGZvciAoaW50IGogPSBpOyBqICE9ICphcmdjOyBqKyspIHsKKyAgICAg
ICAgYXJndltqXSA9IGFyZ3ZbaiArIDFdOworICAgICAgfQorCisgICAgICAvLyBEZWNyZW1lbnRz
IHRoZSBhcmd1bWVudCBjb3VudC4KKyAgICAgICgqYXJnYyktLTsKKworICAgICAgLy8gV2UgYWxz
byBuZWVkIHRvIGRlY3JlbWVudCB0aGUgaXRlcmF0b3IgYXMgd2UganVzdCByZW1vdmVkCisgICAg
ICAvLyBhbiBlbGVtZW50LgorICAgICAgaS0tOworICAgIH0KKyAgfQorfQorCit9ICAvLyBuYW1l
c3BhY2UgaW50ZXJuYWwKKworLy8gSW5pdGlhbGl6ZXMgR29vZ2xlIE1vY2suICBUaGlzIG11c3Qg
YmUgY2FsbGVkIGJlZm9yZSBydW5uaW5nIHRoZQorLy8gdGVzdHMuICBJbiBwYXJ0aWN1bGFyLCBp
dCBwYXJzZXMgYSBjb21tYW5kIGxpbmUgZm9yIHRoZSBmbGFncyB0aGF0CisvLyBHb29nbGUgTW9j
ayByZWNvZ25pemVzLiAgV2hlbmV2ZXIgYSBHb29nbGUgTW9jayBmbGFnIGlzIHNlZW4sIGl0IGlz
CisvLyByZW1vdmVkIGZyb20gYXJndiwgYW5kICphcmdjIGlzIGRlY3JlbWVudGVkLgorLy8KKy8v
IE5vIHZhbHVlIGlzIHJldHVybmVkLiAgSW5zdGVhZCwgdGhlIEdvb2dsZSBNb2NrIGZsYWcgdmFy
aWFibGVzIGFyZQorLy8gdXBkYXRlZC4KKy8vCisvLyBTaW5jZSBHb29nbGUgVGVzdCBpcyBuZWVk
ZWQgZm9yIEdvb2dsZSBNb2NrIHRvIHdvcmssIHRoaXMgZnVuY3Rpb24KKy8vIGFsc28gaW5pdGlh
bGl6ZXMgR29vZ2xlIFRlc3QgYW5kIHBhcnNlcyBpdHMgZmxhZ3MsIGlmIHRoYXQgaGFzbid0Cisv
LyBiZWVuIGRvbmUuCitHVEVTVF9BUElfIHZvaWQgSW5pdEdvb2dsZU1vY2soaW50KiBhcmdjLCBj
aGFyKiogYXJndikgeworICBpbnRlcm5hbDo6SW5pdEdvb2dsZU1vY2tJbXBsKGFyZ2MsIGFyZ3Yp
OworfQorCisvLyBUaGlzIG92ZXJsb2FkZWQgdmVyc2lvbiBjYW4gYmUgdXNlZCBpbiBXaW5kb3dz
IHByb2dyYW1zIGNvbXBpbGVkIGluCisvLyBVTklDT0RFIG1vZGUuCitHVEVTVF9BUElfIHZvaWQg
SW5pdEdvb2dsZU1vY2soaW50KiBhcmdjLCB3Y2hhcl90KiogYXJndikgeworICBpbnRlcm5hbDo6
SW5pdEdvb2dsZU1vY2tJbXBsKGFyZ2MsIGFyZ3YpOworfQorCit9ICAvLyBuYW1lc3BhY2UgdGVz
dGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc3JjL2dtb2NrX21haW4uY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
bW9jay9zcmMvZ21vY2tfbWFpbi5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDViZTAzYmUyMmY1NjkwZTU1N2Nk
YjBjODA0ZGFmMjA2NGI4ODdjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc3JjL2dt
b2NrX21haW4uY2MKQEAgLTAsMCArMSw1NCBAQAorLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJ
bmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisv
LyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25n
IFdhbikKKworI2luY2x1ZGUgPGlvc3RyZWFtPgorI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCisj
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworLy8gTVMgQysrIGNvbXBpbGVyL2xpbmtlciBoYXMg
YSBidWcgb24gV2luZG93cyAobm90IG9uIFdpbmRvd3MgQ0UpLCB3aGljaAorLy8gY2F1c2VzIGEg
bGluayBlcnJvciB3aGVuIF90bWFpbiBpcyBkZWZpbmVkIGluIGEgc3RhdGljIGxpYnJhcnkgYW5k
IFVOSUNPREUKKy8vIGlzIGVuYWJsZWQuIEZvciB0aGlzIHJlYXNvbiBpbnN0ZWFkIG9mIF90bWFp
biwgbWFpbiBmdW5jdGlvbiBpcyB1c2VkIG9uCisvLyBXaW5kb3dzLiBTZWUgdGhlIGZvbGxvd2lu
ZyBsaW5rIHRvIHRyYWNrIHRoZSBjdXJyZW50IHN0YXR1cyBvZiB0aGlzIGJ1ZzoKKy8vIGh0dHA6
Ly9jb25uZWN0Lm1pY3Jvc29mdC5jb20vVmlzdWFsU3R1ZGlvL2ZlZWRiYWNrL1ZpZXdGZWVkYmFj
ay5hc3B4P0ZlZWRiYWNrSUQ9Mzk0NDY0ICAvLyBOT0xJTlQKKyNpZiBHVEVTVF9PU19XSU5ET1dT
X01PQklMRQorIyBpbmNsdWRlIDx0Y2hhci5oPiAgLy8gTk9MSU5UCisKK0dURVNUX0FQSV8gaW50
IF90bWFpbihpbnQgYXJnYywgVENIQVIqKiBhcmd2KSB7CisjZWxzZQorR1RFU1RfQVBJXyBpbnQg
bWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKKyNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9X
U19NT0JJTEUKKyAgc3RkOjpjb3V0IDw8ICJSdW5uaW5nIG1haW4oKSBmcm9tIGdtb2NrX21haW4u
Y2NcbiI7CisgIC8vIFNpbmNlIEdvb2dsZSBNb2NrIGRlcGVuZHMgb24gR29vZ2xlIFRlc3QsIElu
aXRHb29nbGVNb2NrKCkgaXMKKyAgLy8gYWxzbyByZXNwb25zaWJsZSBmb3IgaW5pdGlhbGl6aW5n
IEdvb2dsZSBUZXN0LiAgVGhlcmVmb3JlIHRoZXJlJ3MKKyAgLy8gbm8gbmVlZCBmb3IgY2FsbGlu
ZyB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgpIHNlcGFyYXRlbHkuCisgIHRlc3Rpbmc6OkluaXRH
b29nbGVNb2NrKCZhcmdjLCBhcmd2KTsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2stYWN0aW9uc190ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZW1vY2svdGVzdC9nbW9jay1hY3Rpb25zX3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQ3MGRlNGM1NWNk
YTNkNTc5NmZhZWE0OTg4MjQ5ODk1ZWQ2ZmNjOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVt
b2NrL3Rlc3QvZ21vY2stYWN0aW9uc190ZXN0LmNjCkBAIC0wLDAgKzEsMTQxMSBAQAorLy8gQ29w
eXJpZ2h0IDIwMDcsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8v
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmli
dXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEF1dGhvcjogd2Fu
QGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKworLy8gR29vZ2xlIE1vY2sgLSBhIGZyYW1ld29y
ayBmb3Igd3JpdGluZyBDKysgbW9jayBjbGFzc2VzLgorLy8KKy8vIFRoaXMgZmlsZSB0ZXN0cyB0
aGUgYnVpbHQtaW4gYWN0aW9ucy4KKworI2luY2x1ZGUgImdtb2NrL2dtb2NrLWFjdGlvbnMuaCIK
KyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8aXRlcmF0b3I+CisjaW5jbHVkZSA8bWVt
b3J5PgorI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlICJnbW9jay9nbW9jay5oIgorI2luY2x1
ZGUgImdtb2NrL2ludGVybmFsL2dtb2NrLXBvcnQuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5o
IgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXNwaS5oIgorCituYW1lc3BhY2UgeworCisvLyBUaGlz
IGxpc3Qgc2hvdWxkIGJlIGtlcHQgc29ydGVkLgordXNpbmcgdGVzdGluZzo6QWN0aW9uOwordXNp
bmcgdGVzdGluZzo6QWN0aW9uSW50ZXJmYWNlOwordXNpbmcgdGVzdGluZzo6QXNzaWduOwordXNp
bmcgdGVzdGluZzo6QnlNb3ZlOwordXNpbmcgdGVzdGluZzo6QnlSZWY7Cit1c2luZyB0ZXN0aW5n
OjpEZWZhdWx0VmFsdWU7Cit1c2luZyB0ZXN0aW5nOjpEb0RlZmF1bHQ7Cit1c2luZyB0ZXN0aW5n
OjpJZ25vcmVSZXN1bHQ7Cit1c2luZyB0ZXN0aW5nOjpJbnZva2U7Cit1c2luZyB0ZXN0aW5nOjpJ
bnZva2VXaXRob3V0QXJnczsKK3VzaW5nIHRlc3Rpbmc6Ok1ha2VQb2x5bW9ycGhpY0FjdGlvbjsK
K3VzaW5nIHRlc3Rpbmc6Ok5lOwordXNpbmcgdGVzdGluZzo6UG9seW1vcnBoaWNBY3Rpb247Cit1
c2luZyB0ZXN0aW5nOjpSZXR1cm47Cit1c2luZyB0ZXN0aW5nOjpSZXR1cm5OdWxsOwordXNpbmcg
dGVzdGluZzo6UmV0dXJuUmVmOwordXNpbmcgdGVzdGluZzo6UmV0dXJuUmVmT2ZDb3B5OwordXNp
bmcgdGVzdGluZzo6U2V0QXJnUG9pbnRlZTsKK3VzaW5nIHRlc3Rpbmc6OlNldEFyZ3VtZW50UG9p
bnRlZTsKK3VzaW5nIHRlc3Rpbmc6Ol87Cit1c2luZyB0ZXN0aW5nOjpnZXQ7Cit1c2luZyB0ZXN0
aW5nOjppbnRlcm5hbDo6QnVpbHRJbkRlZmF1bHRWYWx1ZTsKK3VzaW5nIHRlc3Rpbmc6OmludGVy
bmFsOjpJbnQ2NDsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpVSW50NjQ7Cit1c2luZyB0ZXN0
aW5nOjptYWtlX3R1cGxlOwordXNpbmcgdGVzdGluZzo6dHVwbGU7Cit1c2luZyB0ZXN0aW5nOjp0
dXBsZV9lbGVtZW50OworCisjaWYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCit1c2luZyB0ZXN0
aW5nOjpTZXRFcnJub0FuZFJldHVybjsKKyNlbmRpZgorCisjaWYgR1RFU1RfSEFTX1BST1RPQlVG
XwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlRlc3RNZXNzYWdlOworI2VuZGlmICAvLyBHVEVT
VF9IQVNfUFJPVE9CVUZfCisKKy8vIFRlc3RzIHRoYXQgQnVpbHRJbkRlZmF1bHRWYWx1ZTxUKj46
OkdldCgpIHJldHVybnMgTlVMTC4KK1RFU1QoQnVpbHRJbkRlZmF1bHRWYWx1ZVRlc3QsIElzTnVs
bEZvclBvaW50ZXJUeXBlcykgeworICBFWFBFQ1RfVFJVRShCdWlsdEluRGVmYXVsdFZhbHVlPGlu
dCo+OjpHZXQoKSA9PSBOVUxMKTsKKyAgRVhQRUNUX1RSVUUoQnVpbHRJbkRlZmF1bHRWYWx1ZTxj
b25zdCBjaGFyKj46OkdldCgpID09IE5VTEwpOworICBFWFBFQ1RfVFJVRShCdWlsdEluRGVmYXVs
dFZhbHVlPHZvaWQqPjo6R2V0KCkgPT0gTlVMTCk7Cit9CisKKy8vIFRlc3RzIHRoYXQgQnVpbHRJ
bkRlZmF1bHRWYWx1ZTxUKj46OkV4aXN0cygpIHJldHVybiB0cnVlLgorVEVTVChCdWlsdEluRGVm
YXVsdFZhbHVlVGVzdCwgRXhpc3RzRm9yUG9pbnRlclR5cGVzKSB7CisgIEVYUEVDVF9UUlVFKEJ1
aWx0SW5EZWZhdWx0VmFsdWU8aW50Kj46OkV4aXN0cygpKTsKKyAgRVhQRUNUX1RSVUUoQnVpbHRJ
bkRlZmF1bHRWYWx1ZTxjb25zdCBjaGFyKj46OkV4aXN0cygpKTsKKyAgRVhQRUNUX1RSVUUoQnVp
bHRJbkRlZmF1bHRWYWx1ZTx2b2lkKj46OkV4aXN0cygpKTsKK30KKworLy8gVGVzdHMgdGhhdCBC
dWlsdEluRGVmYXVsdFZhbHVlPFQ+OjpHZXQoKSByZXR1cm5zIDAgd2hlbiBUIGlzIGEKKy8vIGJ1
aWx0LWluIG51bWVyaWMgdHlwZS4KK1RFU1QoQnVpbHRJbkRlZmF1bHRWYWx1ZVRlc3QsIElzWmVy
b0Zvck51bWVyaWNUeXBlcykgeworICBFWFBFQ1RfRVEoMFUsIEJ1aWx0SW5EZWZhdWx0VmFsdWU8
dW5zaWduZWQgY2hhcj46OkdldCgpKTsKKyAgRVhQRUNUX0VRKDAsIEJ1aWx0SW5EZWZhdWx0VmFs
dWU8c2lnbmVkIGNoYXI+OjpHZXQoKSk7CisgIEVYUEVDVF9FUSgwLCBCdWlsdEluRGVmYXVsdFZh
bHVlPGNoYXI+OjpHZXQoKSk7CisjaWYgR01PQ0tfSEFTX1NJR05FRF9XQ0hBUl9UXworICBFWFBF
Q1RfRVEoMFUsIEJ1aWx0SW5EZWZhdWx0VmFsdWU8dW5zaWduZWQgd2NoYXJfdD46OkdldCgpKTsK
KyAgRVhQRUNUX0VRKDAsIEJ1aWx0SW5EZWZhdWx0VmFsdWU8c2lnbmVkIHdjaGFyX3Q+OjpHZXQo
KSk7CisjZW5kaWYKKyNpZiBHTU9DS19XQ0hBUl9UX0lTX05BVElWRV8KKyAgRVhQRUNUX0VRKDAs
IEJ1aWx0SW5EZWZhdWx0VmFsdWU8d2NoYXJfdD46OkdldCgpKTsKKyNlbmRpZgorICBFWFBFQ1Rf
RVEoMFUsIEJ1aWx0SW5EZWZhdWx0VmFsdWU8dW5zaWduZWQgc2hvcnQ+OjpHZXQoKSk7ICAvLyBO
T0xJTlQKKyAgRVhQRUNUX0VRKDAsIEJ1aWx0SW5EZWZhdWx0VmFsdWU8c2lnbmVkIHNob3J0Pjo6
R2V0KCkpOyAgLy8gTk9MSU5UCisgIEVYUEVDVF9FUSgwLCBCdWlsdEluRGVmYXVsdFZhbHVlPHNo
b3J0Pjo6R2V0KCkpOyAgLy8gTk9MSU5UCisgIEVYUEVDVF9FUSgwVSwgQnVpbHRJbkRlZmF1bHRW
YWx1ZTx1bnNpZ25lZCBpbnQ+OjpHZXQoKSk7CisgIEVYUEVDVF9FUSgwLCBCdWlsdEluRGVmYXVs
dFZhbHVlPHNpZ25lZCBpbnQ+OjpHZXQoKSk7CisgIEVYUEVDVF9FUSgwLCBCdWlsdEluRGVmYXVs
dFZhbHVlPGludD46OkdldCgpKTsKKyAgRVhQRUNUX0VRKDBVLCBCdWlsdEluRGVmYXVsdFZhbHVl
PHVuc2lnbmVkIGxvbmc+OjpHZXQoKSk7ICAvLyBOT0xJTlQKKyAgRVhQRUNUX0VRKDAsIEJ1aWx0
SW5EZWZhdWx0VmFsdWU8c2lnbmVkIGxvbmc+OjpHZXQoKSk7ICAvLyBOT0xJTlQKKyAgRVhQRUNU
X0VRKDAsIEJ1aWx0SW5EZWZhdWx0VmFsdWU8bG9uZz46OkdldCgpKTsgIC8vIE5PTElOVAorICBF
WFBFQ1RfRVEoMFUsIEJ1aWx0SW5EZWZhdWx0VmFsdWU8VUludDY0Pjo6R2V0KCkpOworICBFWFBF
Q1RfRVEoMCwgQnVpbHRJbkRlZmF1bHRWYWx1ZTxJbnQ2ND46OkdldCgpKTsKKyAgRVhQRUNUX0VR
KDAsIEJ1aWx0SW5EZWZhdWx0VmFsdWU8ZmxvYXQ+OjpHZXQoKSk7CisgIEVYUEVDVF9FUSgwLCBC
dWlsdEluRGVmYXVsdFZhbHVlPGRvdWJsZT46OkdldCgpKTsKK30KKworLy8gVGVzdHMgdGhhdCBC
dWlsdEluRGVmYXVsdFZhbHVlPFQ+OjpFeGlzdHMoKSByZXR1cm5zIHRydWUgd2hlbiBUIGlzIGEK
Ky8vIGJ1aWx0LWluIG51bWVyaWMgdHlwZS4KK1RFU1QoQnVpbHRJbkRlZmF1bHRWYWx1ZVRlc3Qs
IEV4aXN0c0Zvck51bWVyaWNUeXBlcykgeworICBFWFBFQ1RfVFJVRShCdWlsdEluRGVmYXVsdFZh
bHVlPHVuc2lnbmVkIGNoYXI+OjpFeGlzdHMoKSk7CisgIEVYUEVDVF9UUlVFKEJ1aWx0SW5EZWZh
dWx0VmFsdWU8c2lnbmVkIGNoYXI+OjpFeGlzdHMoKSk7CisgIEVYUEVDVF9UUlVFKEJ1aWx0SW5E
ZWZhdWx0VmFsdWU8Y2hhcj46OkV4aXN0cygpKTsKKyNpZiBHTU9DS19IQVNfU0lHTkVEX1dDSEFS
X1RfCisgIEVYUEVDVF9UUlVFKEJ1aWx0SW5EZWZhdWx0VmFsdWU8dW5zaWduZWQgd2NoYXJfdD46
OkV4aXN0cygpKTsKKyAgRVhQRUNUX1RSVUUoQnVpbHRJbkRlZmF1bHRWYWx1ZTxzaWduZWQgd2No
YXJfdD46OkV4aXN0cygpKTsKKyNlbmRpZgorI2lmIEdNT0NLX1dDSEFSX1RfSVNfTkFUSVZFXwor
ICBFWFBFQ1RfVFJVRShCdWlsdEluRGVmYXVsdFZhbHVlPHdjaGFyX3Q+OjpFeGlzdHMoKSk7Cisj
ZW5kaWYKKyAgRVhQRUNUX1RSVUUoQnVpbHRJbkRlZmF1bHRWYWx1ZTx1bnNpZ25lZCBzaG9ydD46
OkV4aXN0cygpKTsgIC8vIE5PTElOVAorICBFWFBFQ1RfVFJVRShCdWlsdEluRGVmYXVsdFZhbHVl
PHNpZ25lZCBzaG9ydD46OkV4aXN0cygpKTsgIC8vIE5PTElOVAorICBFWFBFQ1RfVFJVRShCdWls
dEluRGVmYXVsdFZhbHVlPHNob3J0Pjo6RXhpc3RzKCkpOyAgLy8gTk9MSU5UCisgIEVYUEVDVF9U
UlVFKEJ1aWx0SW5EZWZhdWx0VmFsdWU8dW5zaWduZWQgaW50Pjo6RXhpc3RzKCkpOworICBFWFBF
Q1RfVFJVRShCdWlsdEluRGVmYXVsdFZhbHVlPHNpZ25lZCBpbnQ+OjpFeGlzdHMoKSk7CisgIEVY
UEVDVF9UUlVFKEJ1aWx0SW5EZWZhdWx0VmFsdWU8aW50Pjo6RXhpc3RzKCkpOworICBFWFBFQ1Rf
VFJVRShCdWlsdEluRGVmYXVsdFZhbHVlPHVuc2lnbmVkIGxvbmc+OjpFeGlzdHMoKSk7ICAvLyBO
T0xJTlQKKyAgRVhQRUNUX1RSVUUoQnVpbHRJbkRlZmF1bHRWYWx1ZTxzaWduZWQgbG9uZz46OkV4
aXN0cygpKTsgIC8vIE5PTElOVAorICBFWFBFQ1RfVFJVRShCdWlsdEluRGVmYXVsdFZhbHVlPGxv
bmc+OjpFeGlzdHMoKSk7ICAvLyBOT0xJTlQKKyAgRVhQRUNUX1RSVUUoQnVpbHRJbkRlZmF1bHRW
YWx1ZTxVSW50NjQ+OjpFeGlzdHMoKSk7CisgIEVYUEVDVF9UUlVFKEJ1aWx0SW5EZWZhdWx0VmFs
dWU8SW50NjQ+OjpFeGlzdHMoKSk7CisgIEVYUEVDVF9UUlVFKEJ1aWx0SW5EZWZhdWx0VmFsdWU8
ZmxvYXQ+OjpFeGlzdHMoKSk7CisgIEVYUEVDVF9UUlVFKEJ1aWx0SW5EZWZhdWx0VmFsdWU8ZG91
YmxlPjo6RXhpc3RzKCkpOworfQorCisvLyBUZXN0cyB0aGF0IEJ1aWx0SW5EZWZhdWx0VmFsdWU8
Ym9vbD46OkdldCgpIHJldHVybnMgZmFsc2UuCitURVNUKEJ1aWx0SW5EZWZhdWx0VmFsdWVUZXN0
LCBJc0ZhbHNlRm9yQm9vbCkgeworICBFWFBFQ1RfRkFMU0UoQnVpbHRJbkRlZmF1bHRWYWx1ZTxi
b29sPjo6R2V0KCkpOworfQorCisvLyBUZXN0cyB0aGF0IEJ1aWx0SW5EZWZhdWx0VmFsdWU8Ym9v
bD46OkV4aXN0cygpIHJldHVybnMgdHJ1ZS4KK1RFU1QoQnVpbHRJbkRlZmF1bHRWYWx1ZVRlc3Qs
IEJvb2xFeGlzdHMpIHsKKyAgRVhQRUNUX1RSVUUoQnVpbHRJbkRlZmF1bHRWYWx1ZTxib29sPjo6
RXhpc3RzKCkpOworfQorCisvLyBUZXN0cyB0aGF0IEJ1aWx0SW5EZWZhdWx0VmFsdWU8VD46Okdl
dCgpIHJldHVybnMgIiIgd2hlbiBUIGlzIGEKKy8vIHN0cmluZyB0eXBlLgorVEVTVChCdWlsdElu
RGVmYXVsdFZhbHVlVGVzdCwgSXNFbXB0eVN0cmluZ0ZvclN0cmluZykgeworI2lmIEdURVNUX0hB
U19HTE9CQUxfU1RSSU5HCisgIEVYUEVDVF9FUSgiIiwgQnVpbHRJbkRlZmF1bHRWYWx1ZTwgOjpz
dHJpbmc+OjpHZXQoKSk7CisjZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisKKyAg
RVhQRUNUX0VRKCIiLCBCdWlsdEluRGVmYXVsdFZhbHVlPCA6OnN0ZDo6c3RyaW5nPjo6R2V0KCkp
OworfQorCisvLyBUZXN0cyB0aGF0IEJ1aWx0SW5EZWZhdWx0VmFsdWU8VD46OkV4aXN0cygpIHJl
dHVybnMgdHJ1ZSB3aGVuIFQgaXMgYQorLy8gc3RyaW5nIHR5cGUuCitURVNUKEJ1aWx0SW5EZWZh
dWx0VmFsdWVUZXN0LCBFeGlzdHNGb3JTdHJpbmcpIHsKKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1NU
UklORworICBFWFBFQ1RfVFJVRShCdWlsdEluRGVmYXVsdFZhbHVlPCA6OnN0cmluZz46OkV4aXN0
cygpKTsKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKKworICBFWFBFQ1RfVFJV
RShCdWlsdEluRGVmYXVsdFZhbHVlPCA6OnN0ZDo6c3RyaW5nPjo6RXhpc3RzKCkpOworfQorCisv
LyBUZXN0cyB0aGF0IEJ1aWx0SW5EZWZhdWx0VmFsdWU8Y29uc3QgVD46OkdldCgpIHJldHVybnMg
dGhlIHNhbWUKKy8vIHZhbHVlIGFzIEJ1aWx0SW5EZWZhdWx0VmFsdWU8VD46OkdldCgpIGRvZXMu
CitURVNUKEJ1aWx0SW5EZWZhdWx0VmFsdWVUZXN0LCBXb3Jrc0ZvckNvbnN0VHlwZXMpIHsKKyAg
RVhQRUNUX0VRKCIiLCBCdWlsdEluRGVmYXVsdFZhbHVlPGNvbnN0IHN0ZDo6c3RyaW5nPjo6R2V0
KCkpOworICBFWFBFQ1RfRVEoMCwgQnVpbHRJbkRlZmF1bHRWYWx1ZTxjb25zdCBpbnQ+OjpHZXQo
KSk7CisgIEVYUEVDVF9UUlVFKEJ1aWx0SW5EZWZhdWx0VmFsdWU8Y2hhciogY29uc3Q+OjpHZXQo
KSA9PSBOVUxMKTsKKyAgRVhQRUNUX0ZBTFNFKEJ1aWx0SW5EZWZhdWx0VmFsdWU8Y29uc3QgYm9v
bD46OkdldCgpKTsKK30KKworLy8gQSB0eXBlIHRoYXQncyBkZWZhdWx0IGNvbnN0cnVjdGlibGUu
CitjbGFzcyBNeURlZmF1bHRDb25zdHJ1Y3RpYmxlIHsKKyBwdWJsaWM6CisgIE15RGVmYXVsdENv
bnN0cnVjdGlibGUoKSA6IHZhbHVlXyg0Mikge30KKworICBpbnQgdmFsdWUoKSBjb25zdCB7IHJl
dHVybiB2YWx1ZV87IH0KKworIHByaXZhdGU6CisgIGludCB2YWx1ZV87Cit9OworCisvLyBBIHR5
cGUgdGhhdCdzIG5vdCBkZWZhdWx0IGNvbnN0cnVjdGlibGUuCitjbGFzcyBNeU5vbkRlZmF1bHRD
b25zdHJ1Y3RpYmxlIHsKKyBwdWJsaWM6CisgIC8vIERvZXMgbm90IGhhdmUgYSBkZWZhdWx0IGN0
b3IuCisgIGV4cGxpY2l0IE15Tm9uRGVmYXVsdENvbnN0cnVjdGlibGUoaW50IGFfdmFsdWUpIDog
dmFsdWVfKGFfdmFsdWUpIHt9CisKKyAgaW50IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gdmFsdWVf
OyB9CisKKyBwcml2YXRlOgorICBpbnQgdmFsdWVfOworfTsKKworI2lmIEdURVNUX0hBU19TVERf
VFlQRV9UUkFJVFNfCisKK1RFU1QoQnVpbHRJbkRlZmF1bHRWYWx1ZVRlc3QsIEV4aXN0c0ZvckRl
ZmF1bHRDb25zdHJ1Y3RpYmxlVHlwZSkgeworICBFWFBFQ1RfVFJVRShCdWlsdEluRGVmYXVsdFZh
bHVlPE15RGVmYXVsdENvbnN0cnVjdGlibGU+OjpFeGlzdHMoKSk7Cit9CisKK1RFU1QoQnVpbHRJ
bkRlZmF1bHRWYWx1ZVRlc3QsIElzRGVmYXVsdENvbnN0cnVjdGVkRm9yRGVmYXVsdENvbnN0cnVj
dGlibGVUeXBlKSB7CisgIEVYUEVDVF9FUSg0MiwgQnVpbHRJbkRlZmF1bHRWYWx1ZTxNeURlZmF1
bHRDb25zdHJ1Y3RpYmxlPjo6R2V0KCkudmFsdWUoKSk7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1Rf
SEFTX1NURF9UWVBFX1RSQUlUU18KKworVEVTVChCdWlsdEluRGVmYXVsdFZhbHVlVGVzdCwgRG9l
c05vdEV4aXN0Rm9yTm9uRGVmYXVsdENvbnN0cnVjdGlibGVUeXBlKSB7CisgIEVYUEVDVF9GQUxT
RShCdWlsdEluRGVmYXVsdFZhbHVlPE15Tm9uRGVmYXVsdENvbnN0cnVjdGlibGU+OjpFeGlzdHMo
KSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgQnVpbHRJbkRlZmF1bHRWYWx1ZTxUJj46OkdldCgpIGFi
b3J0cyB0aGUgcHJvZ3JhbS4KK1RFU1QoQnVpbHRJbkRlZmF1bHRWYWx1ZURlYXRoVGVzdCwgSXNV
bmRlZmluZWRGb3JSZWZlcmVuY2VzKSB7CisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoewor
ICAgIEJ1aWx0SW5EZWZhdWx0VmFsdWU8aW50Jj46OkdldCgpOworICB9LCAiIik7CisgIEVYUEVD
VF9ERUFUSF9JRl9TVVBQT1JURUQoeworICAgIEJ1aWx0SW5EZWZhdWx0VmFsdWU8Y29uc3QgY2hh
ciY+OjpHZXQoKTsKKyAgfSwgIiIpOworfQorCitURVNUKEJ1aWx0SW5EZWZhdWx0VmFsdWVEZWF0
aFRlc3QsIElzVW5kZWZpbmVkRm9yTm9uRGVmYXVsdENvbnN0cnVjdGlibGVUeXBlKSB7CisgIEVY
UEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoeworICAgIEJ1aWx0SW5EZWZhdWx0VmFsdWU8TXlOb25E
ZWZhdWx0Q29uc3RydWN0aWJsZT46OkdldCgpOworICB9LCAiIik7Cit9CisKKy8vIFRlc3RzIHRo
YXQgRGVmYXVsdFZhbHVlPFQ+OjpJc1NldCgpIGlzIGZhbHNlIGluaXRpYWxseS4KK1RFU1QoRGVm
YXVsdFZhbHVlVGVzdCwgSXNJbml0aWFsbHlVbnNldCkgeworICBFWFBFQ1RfRkFMU0UoRGVmYXVs
dFZhbHVlPGludD46OklzU2V0KCkpOworICBFWFBFQ1RfRkFMU0UoRGVmYXVsdFZhbHVlPE15RGVm
YXVsdENvbnN0cnVjdGlibGU+OjpJc1NldCgpKTsKKyAgRVhQRUNUX0ZBTFNFKERlZmF1bHRWYWx1
ZTxjb25zdCBNeU5vbkRlZmF1bHRDb25zdHJ1Y3RpYmxlPjo6SXNTZXQoKSk7Cit9CisKKy8vIFRl
c3RzIHRoYXQgRGVmYXVsdFZhbHVlPFQ+IGNhbiBiZSBzZXQgYW5kIHRoZW4gdW5zZXQuCitURVNU
KERlZmF1bHRWYWx1ZVRlc3QsIENhbkJlU2V0QW5kVW5zZXQpIHsKKyAgRVhQRUNUX1RSVUUoRGVm
YXVsdFZhbHVlPGludD46OkV4aXN0cygpKTsKKyAgRVhQRUNUX0ZBTFNFKERlZmF1bHRWYWx1ZTxj
b25zdCBNeU5vbkRlZmF1bHRDb25zdHJ1Y3RpYmxlPjo6RXhpc3RzKCkpOworCisgIERlZmF1bHRW
YWx1ZTxpbnQ+OjpTZXQoMSk7CisgIERlZmF1bHRWYWx1ZTxjb25zdCBNeU5vbkRlZmF1bHRDb25z
dHJ1Y3RpYmxlPjo6U2V0KAorICAgICAgTXlOb25EZWZhdWx0Q29uc3RydWN0aWJsZSg0MikpOwor
CisgIEVYUEVDVF9FUSgxLCBEZWZhdWx0VmFsdWU8aW50Pjo6R2V0KCkpOworICBFWFBFQ1RfRVEo
NDIsIERlZmF1bHRWYWx1ZTxjb25zdCBNeU5vbkRlZmF1bHRDb25zdHJ1Y3RpYmxlPjo6R2V0KCku
dmFsdWUoKSk7CisKKyAgRVhQRUNUX1RSVUUoRGVmYXVsdFZhbHVlPGludD46OkV4aXN0cygpKTsK
KyAgRVhQRUNUX1RSVUUoRGVmYXVsdFZhbHVlPGNvbnN0IE15Tm9uRGVmYXVsdENvbnN0cnVjdGli
bGU+OjpFeGlzdHMoKSk7CisKKyAgRGVmYXVsdFZhbHVlPGludD46OkNsZWFyKCk7CisgIERlZmF1
bHRWYWx1ZTxjb25zdCBNeU5vbkRlZmF1bHRDb25zdHJ1Y3RpYmxlPjo6Q2xlYXIoKTsKKworICBF
WFBFQ1RfRkFMU0UoRGVmYXVsdFZhbHVlPGludD46OklzU2V0KCkpOworICBFWFBFQ1RfRkFMU0Uo
RGVmYXVsdFZhbHVlPGNvbnN0IE15Tm9uRGVmYXVsdENvbnN0cnVjdGlibGU+OjpJc1NldCgpKTsK
KworICBFWFBFQ1RfVFJVRShEZWZhdWx0VmFsdWU8aW50Pjo6RXhpc3RzKCkpOworICBFWFBFQ1Rf
RkFMU0UoRGVmYXVsdFZhbHVlPGNvbnN0IE15Tm9uRGVmYXVsdENvbnN0cnVjdGlibGU+OjpFeGlz
dHMoKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgRGVmYXVsdFZhbHVlPFQ+OjpHZXQoKSByZXR1cm5z
IHRoZQorLy8gQnVpbHRJbkRlZmF1bHRWYWx1ZTxUPjo6R2V0KCkgd2hlbiBEZWZhdWx0VmFsdWU8
VD46OklzU2V0KCkgaXMKKy8vIGZhbHNlLgorVEVTVChEZWZhdWx0VmFsdWVEZWF0aFRlc3QsIEdl
dFJldHVybnNCdWlsdEluRGVmYXVsdFZhbHVlV2hlblVuc2V0KSB7CisgIEVYUEVDVF9GQUxTRShE
ZWZhdWx0VmFsdWU8aW50Pjo6SXNTZXQoKSk7CisgIEVYUEVDVF9UUlVFKERlZmF1bHRWYWx1ZTxp
bnQ+OjpFeGlzdHMoKSk7CisgIEVYUEVDVF9GQUxTRShEZWZhdWx0VmFsdWU8TXlOb25EZWZhdWx0
Q29uc3RydWN0aWJsZT46OklzU2V0KCkpOworICBFWFBFQ1RfRkFMU0UoRGVmYXVsdFZhbHVlPE15
Tm9uRGVmYXVsdENvbnN0cnVjdGlibGU+OjpFeGlzdHMoKSk7CisKKyAgRVhQRUNUX0VRKDAsIERl
ZmF1bHRWYWx1ZTxpbnQ+OjpHZXQoKSk7CisKKyAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCh7
CisgICAgRGVmYXVsdFZhbHVlPE15Tm9uRGVmYXVsdENvbnN0cnVjdGlibGU+OjpHZXQoKTsKKyAg
fSwgIiIpOworfQorCisjaWYgR1RFU1RfSEFTX1NURF9VTklRVUVfUFRSXworVEVTVChEZWZhdWx0
VmFsdWVUZXN0LCBHZXRXb3Jrc0Zvck1vdmVPbmx5SWZTZXQpIHsKKyAgRVhQRUNUX1RSVUUoRGVm
YXVsdFZhbHVlPHN0ZDo6dW5pcXVlX3B0cjxpbnQ+Pjo6RXhpc3RzKCkpOworICBFWFBFQ1RfVFJV
RShEZWZhdWx0VmFsdWU8c3RkOjp1bmlxdWVfcHRyPGludD4+OjpHZXQoKSA9PSBOVUxMKTsKKyAg
RGVmYXVsdFZhbHVlPHN0ZDo6dW5pcXVlX3B0cjxpbnQ+Pjo6U2V0RmFjdG9yeShbXSB7CisgICAg
cmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxpbnQ+KG5ldyBpbnQoNDIpKTsKKyAgfSk7CisgIEVYUEVD
VF9UUlVFKERlZmF1bHRWYWx1ZTxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj46OkV4aXN0cygpKTsKKyAg
c3RkOjp1bmlxdWVfcHRyPGludD4gaSA9IERlZmF1bHRWYWx1ZTxzdGQ6OnVuaXF1ZV9wdHI8aW50
Pj46OkdldCgpOworICBFWFBFQ1RfRVEoNDIsICppKTsKK30KKyNlbmRpZiAgLy8gR1RFU1RfSEFT
X1NURF9VTklRVUVfUFRSXworCisvLyBUZXN0cyB0aGF0IERlZmF1bHRWYWx1ZTx2b2lkPjo6R2V0
KCkgcmV0dXJucyB2b2lkLgorVEVTVChEZWZhdWx0VmFsdWVUZXN0LCBHZXRXb3Jrc0ZvclZvaWQp
IHsKKyAgcmV0dXJuIERlZmF1bHRWYWx1ZTx2b2lkPjo6R2V0KCk7Cit9CisKKy8vIFRlc3RzIHVz
aW5nIERlZmF1bHRWYWx1ZSB3aXRoIGEgcmVmZXJlbmNlIHR5cGUuCisKKy8vIFRlc3RzIHRoYXQg
RGVmYXVsdFZhbHVlPFQmPjo6SXNTZXQoKSBpcyBmYWxzZSBpbml0aWFsbHkuCitURVNUKERlZmF1
bHRWYWx1ZU9mUmVmZXJlbmNlVGVzdCwgSXNJbml0aWFsbHlVbnNldCkgeworICBFWFBFQ1RfRkFM
U0UoRGVmYXVsdFZhbHVlPGludCY+OjpJc1NldCgpKTsKKyAgRVhQRUNUX0ZBTFNFKERlZmF1bHRW
YWx1ZTxNeURlZmF1bHRDb25zdHJ1Y3RpYmxlJj46OklzU2V0KCkpOworICBFWFBFQ1RfRkFMU0Uo
RGVmYXVsdFZhbHVlPE15Tm9uRGVmYXVsdENvbnN0cnVjdGlibGUmPjo6SXNTZXQoKSk7Cit9CisK
Ky8vIFRlc3RzIHRoYXQgRGVmYXVsdFZhbHVlPFQmPjo6RXhpc3RzIGlzIGZhbHNlIGluaXRpYWxs
bHkuCitURVNUKERlZmF1bHRWYWx1ZU9mUmVmZXJlbmNlVGVzdCwgSXNJbml0aWFsbHlOb3RFeGlz
dGluZykgeworICBFWFBFQ1RfRkFMU0UoRGVmYXVsdFZhbHVlPGludCY+OjpFeGlzdHMoKSk7Cisg
IEVYUEVDVF9GQUxTRShEZWZhdWx0VmFsdWU8TXlEZWZhdWx0Q29uc3RydWN0aWJsZSY+OjpFeGlz
dHMoKSk7CisgIEVYUEVDVF9GQUxTRShEZWZhdWx0VmFsdWU8TXlOb25EZWZhdWx0Q29uc3RydWN0
aWJsZSY+OjpFeGlzdHMoKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgRGVmYXVsdFZhbHVlPFQmPiBj
YW4gYmUgc2V0IGFuZCB0aGVuIHVuc2V0LgorVEVTVChEZWZhdWx0VmFsdWVPZlJlZmVyZW5jZVRl
c3QsIENhbkJlU2V0QW5kVW5zZXQpIHsKKyAgaW50IG4gPSAxOworICBEZWZhdWx0VmFsdWU8Y29u
c3QgaW50Jj46OlNldChuKTsKKyAgTXlOb25EZWZhdWx0Q29uc3RydWN0aWJsZSB4KDQyKTsKKyAg
RGVmYXVsdFZhbHVlPE15Tm9uRGVmYXVsdENvbnN0cnVjdGlibGUmPjo6U2V0KHgpOworCisgIEVY
UEVDVF9UUlVFKERlZmF1bHRWYWx1ZTxjb25zdCBpbnQmPjo6RXhpc3RzKCkpOworICBFWFBFQ1Rf
VFJVRShEZWZhdWx0VmFsdWU8TXlOb25EZWZhdWx0Q29uc3RydWN0aWJsZSY+OjpFeGlzdHMoKSk7
CisKKyAgRVhQRUNUX0VRKCZuLCAmKERlZmF1bHRWYWx1ZTxjb25zdCBpbnQmPjo6R2V0KCkpKTsK
KyAgRVhQRUNUX0VRKCZ4LCAmKERlZmF1bHRWYWx1ZTxNeU5vbkRlZmF1bHRDb25zdHJ1Y3RpYmxl
Jj46OkdldCgpKSk7CisKKyAgRGVmYXVsdFZhbHVlPGNvbnN0IGludCY+OjpDbGVhcigpOworICBE
ZWZhdWx0VmFsdWU8TXlOb25EZWZhdWx0Q29uc3RydWN0aWJsZSY+OjpDbGVhcigpOworCisgIEVY
UEVDVF9GQUxTRShEZWZhdWx0VmFsdWU8Y29uc3QgaW50Jj46OkV4aXN0cygpKTsKKyAgRVhQRUNU
X0ZBTFNFKERlZmF1bHRWYWx1ZTxNeU5vbkRlZmF1bHRDb25zdHJ1Y3RpYmxlJj46OkV4aXN0cygp
KTsKKworICBFWFBFQ1RfRkFMU0UoRGVmYXVsdFZhbHVlPGNvbnN0IGludCY+OjpJc1NldCgpKTsK
KyAgRVhQRUNUX0ZBTFNFKERlZmF1bHRWYWx1ZTxNeU5vbkRlZmF1bHRDb25zdHJ1Y3RpYmxlJj46
OklzU2V0KCkpOworfQorCisvLyBUZXN0cyB0aGF0IERlZmF1bHRWYWx1ZTxUJj46OkdldCgpIHJl
dHVybnMgdGhlCisvLyBCdWlsdEluRGVmYXVsdFZhbHVlPFQmPjo6R2V0KCkgd2hlbiBEZWZhdWx0
VmFsdWU8VCY+OjpJc1NldCgpIGlzCisvLyBmYWxzZS4KK1RFU1QoRGVmYXVsdFZhbHVlT2ZSZWZl
cmVuY2VEZWF0aFRlc3QsIEdldFJldHVybnNCdWlsdEluRGVmYXVsdFZhbHVlV2hlblVuc2V0KSB7
CisgIEVYUEVDVF9GQUxTRShEZWZhdWx0VmFsdWU8aW50Jj46OklzU2V0KCkpOworICBFWFBFQ1Rf
RkFMU0UoRGVmYXVsdFZhbHVlPE15Tm9uRGVmYXVsdENvbnN0cnVjdGlibGUmPjo6SXNTZXQoKSk7
CisKKyAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCh7CisgICAgRGVmYXVsdFZhbHVlPGludCY+
OjpHZXQoKTsKKyAgfSwgIiIpOworICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKHsKKyAgICBE
ZWZhdWx0VmFsdWU8TXlOb25EZWZhdWx0Q29uc3RydWN0aWJsZT46OkdldCgpOworICB9LCAiIik7
Cit9CisKKy8vIFRlc3RzIHRoYXQgQWN0aW9uSW50ZXJmYWNlIGNhbiBiZSBpbXBsZW1lbnRlZCBi
eSBkZWZpbmluZyB0aGUKKy8vIFBlcmZvcm0gbWV0aG9kLgorCit0eXBlZGVmIGludCBNeUdsb2Jh
bEZ1bmN0aW9uKGJvb2wsIGludCk7CisKK2NsYXNzIE15QWN0aW9uSW1wbCA6IHB1YmxpYyBBY3Rp
b25JbnRlcmZhY2U8TXlHbG9iYWxGdW5jdGlvbj4geworIHB1YmxpYzoKKyAgdmlydHVhbCBpbnQg
UGVyZm9ybShjb25zdCB0dXBsZTxib29sLCBpbnQ+JiBhcmdzKSB7CisgICAgcmV0dXJuIGdldDww
PihhcmdzKSA/IGdldDwxPihhcmdzKSA6IDA7CisgIH0KK307CisKK1RFU1QoQWN0aW9uSW50ZXJm
YWNlVGVzdCwgQ2FuQmVJbXBsZW1lbnRlZEJ5RGVmaW5pbmdQZXJmb3JtKSB7CisgIE15QWN0aW9u
SW1wbCBteV9hY3Rpb25faW1wbDsKKyAgKHZvaWQpbXlfYWN0aW9uX2ltcGw7Cit9CisKK1RFU1Qo
QWN0aW9uSW50ZXJmYWNlVGVzdCwgTWFrZUFjdGlvbikgeworICBBY3Rpb248TXlHbG9iYWxGdW5j
dGlvbj4gYWN0aW9uID0gTWFrZUFjdGlvbihuZXcgTXlBY3Rpb25JbXBsKTsKKworICAvLyBXaGVu
IGV4ZXJjaXNpbmcgdGhlIFBlcmZvcm0oKSBtZXRob2Qgb2YgQWN0aW9uPEY+LCB3ZSBtdXN0IHBh
c3MKKyAgLy8gaXQgYSB0dXBsZSB3aG9zZSBzaXplIGFuZCB0eXBlIGFyZSBjb21wYXRpYmxlIHdp
dGggRidzIGFyZ3VtZW50CisgIC8vIHR5cGVzLiAgRm9yIGV4YW1wbGUsIGlmIEYgaXMgaW50KCks
IHRoZW4gUGVyZm9ybSgpIHRha2VzIGEKKyAgLy8gMC10dXBsZTsgaWYgRiBpcyB2b2lkKGJvb2ws
IGludCksIHRoZW4gUGVyZm9ybSgpIHRha2VzIGEKKyAgLy8gdHVwbGU8Ym9vbCwgaW50PiwgYW5k
IHNvIG9uLgorICBFWFBFQ1RfRVEoNSwgYWN0aW9uLlBlcmZvcm0obWFrZV90dXBsZSh0cnVlLCA1
KSkpOworfQorCisvLyBUZXN0cyB0aGF0IEFjdGlvbjxGPiBjYW4gYmUgY29udHJ1Y3RlZCBmcm9t
IGEgcG9pbnRlciB0bworLy8gQWN0aW9uSW50ZXJmYWNlPEY+LgorVEVTVChBY3Rpb25UZXN0LCBD
YW5CZUNvbnN0cnVjdGVkRnJvbUFjdGlvbkludGVyZmFjZSkgeworICBBY3Rpb248TXlHbG9iYWxG
dW5jdGlvbj4gYWN0aW9uKG5ldyBNeUFjdGlvbkltcGwpOworfQorCisvLyBUZXN0cyB0aGF0IEFj
dGlvbjxGPiBkZWxlZ2F0ZXMgYWN0dWFsIHdvcmsgdG8gQWN0aW9uSW50ZXJmYWNlPEY+LgorVEVT
VChBY3Rpb25UZXN0LCBEZWxlZ2F0ZXNXb3JrVG9BY3Rpb25JbnRlcmZhY2UpIHsKKyAgY29uc3Qg
QWN0aW9uPE15R2xvYmFsRnVuY3Rpb24+IGFjdGlvbihuZXcgTXlBY3Rpb25JbXBsKTsKKworICBF
WFBFQ1RfRVEoNSwgYWN0aW9uLlBlcmZvcm0obWFrZV90dXBsZSh0cnVlLCA1KSkpOworICBFWFBF
Q1RfRVEoMCwgYWN0aW9uLlBlcmZvcm0obWFrZV90dXBsZShmYWxzZSwgMSkpKTsKK30KKworLy8g
VGVzdHMgdGhhdCBBY3Rpb248Rj4gY2FuIGJlIGNvcGllZC4KK1RFU1QoQWN0aW9uVGVzdCwgSXND
b3B5YWJsZSkgeworICBBY3Rpb248TXlHbG9iYWxGdW5jdGlvbj4gYTEobmV3IE15QWN0aW9uSW1w
bCk7CisgIEFjdGlvbjxNeUdsb2JhbEZ1bmN0aW9uPiBhMihhMSk7ICAvLyBUZXN0cyB0aGUgY29w
eSBjb25zdHJ1Y3Rvci4KKworICAvLyBhMSBzaG91bGQgY29udGludWUgdG8gd29yayBhZnRlciBi
ZWluZyBjb3BpZWQgZnJvbS4KKyAgRVhQRUNUX0VRKDUsIGExLlBlcmZvcm0obWFrZV90dXBsZSh0
cnVlLCA1KSkpOworICBFWFBFQ1RfRVEoMCwgYTEuUGVyZm9ybShtYWtlX3R1cGxlKGZhbHNlLCAx
KSkpOworCisgIC8vIGEyIHNob3VsZCB3b3JrIGxpa2UgdGhlIGFjdGlvbiBpdCB3YXMgY29waWVk
IGZyb20uCisgIEVYUEVDVF9FUSg1LCBhMi5QZXJmb3JtKG1ha2VfdHVwbGUodHJ1ZSwgNSkpKTsK
KyAgRVhQRUNUX0VRKDAsIGEyLlBlcmZvcm0obWFrZV90dXBsZShmYWxzZSwgMSkpKTsKKworICBh
MiA9IGExOyAgLy8gVGVzdHMgdGhlIGFzc2lnbm1lbnQgb3BlcmF0b3IuCisKKyAgLy8gYTEgc2hv
dWxkIGNvbnRpbnVlIHRvIHdvcmsgYWZ0ZXIgYmVpbmcgY29waWVkIGZyb20uCisgIEVYUEVDVF9F
USg1LCBhMS5QZXJmb3JtKG1ha2VfdHVwbGUodHJ1ZSwgNSkpKTsKKyAgRVhQRUNUX0VRKDAsIGEx
LlBlcmZvcm0obWFrZV90dXBsZShmYWxzZSwgMSkpKTsKKworICAvLyBhMiBzaG91bGQgd29yayBs
aWtlIHRoZSBhY3Rpb24gaXQgd2FzIGNvcGllZCBmcm9tLgorICBFWFBFQ1RfRVEoNSwgYTIuUGVy
Zm9ybShtYWtlX3R1cGxlKHRydWUsIDUpKSk7CisgIEVYUEVDVF9FUSgwLCBhMi5QZXJmb3JtKG1h
a2VfdHVwbGUoZmFsc2UsIDEpKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgYW4gQWN0aW9uPEZyb20+
IG9iamVjdCBjYW4gYmUgY29udmVydGVkIHRvIGEKKy8vIGNvbXBhdGlibGUgQWN0aW9uPFRvPiBv
YmplY3QuCisKK2NsYXNzIElzTm90WmVybyA6IHB1YmxpYyBBY3Rpb25JbnRlcmZhY2U8Ym9vbChp
bnQpPiB7ICAvLyBOT0xJTlQKKyBwdWJsaWM6CisgIHZpcnR1YWwgYm9vbCBQZXJmb3JtKGNvbnN0
IHR1cGxlPGludD4mIGFyZykgeworICAgIHJldHVybiBnZXQ8MD4oYXJnKSAhPSAwOworICB9Cit9
OworCisjaWYgIUdURVNUX09TX1NZTUJJQU4KKy8vIENvbXBpbGluZyB0aGlzIHRlc3Qgb24gTm9r
aWEncyBTeW1iaWFuIGNvbXBpbGVyIGZhaWxzIHdpdGg6CisvLyAgJ1Jlc3VsdCcgaXMgbm90IGEg
bWVtYmVyIG9mIGNsYXNzICd0ZXN0aW5nOjppbnRlcm5hbDo6RnVuY3Rpb248aW50PicKKy8vICAo
cG9pbnQgb2YgaW5zdGFudGlhdGlvbjogJ0B1bm5hbWVkQGdtb2NrX2FjdGlvbnNfdGVzdF9jY0A6
OgorLy8gICAgICBBY3Rpb25UZXN0X0NhbkJlQ29udmVydGVkVG9PdGhlckFjdGlvblR5cGVfVGVz
dDo6VGVzdEJvZHkoKScpCisvLyB3aXRoIG5vIG9idmlvdXMgZml4LgorVEVTVChBY3Rpb25UZXN0
LCBDYW5CZUNvbnZlcnRlZFRvT3RoZXJBY3Rpb25UeXBlKSB7CisgIGNvbnN0IEFjdGlvbjxib29s
KGludCk+IGExKG5ldyBJc05vdFplcm8pOyAgLy8gTk9MSU5UCisgIGNvbnN0IEFjdGlvbjxpbnQo
Y2hhcik+IGEyID0gQWN0aW9uPGludChjaGFyKT4oYTEpOyAgLy8gTk9MSU5UCisgIEVYUEVDVF9F
USgxLCBhMi5QZXJmb3JtKG1ha2VfdHVwbGUoJ2EnKSkpOworICBFWFBFQ1RfRVEoMCwgYTIuUGVy
Zm9ybShtYWtlX3R1cGxlKCdcMCcpKSk7Cit9CisjZW5kaWYgIC8vICFHVEVTVF9PU19TWU1CSUFO
CisKKy8vIFRoZSBmb2xsb3dpbmcgdHdvIGNsYXNzZXMgYXJlIGZvciB0ZXN0aW5nIE1ha2VQb2x5
bW9ycGhpY0FjdGlvbigpLgorCisvLyBJbXBsZW1lbnRzIGEgcG9seW1vcnBoaWMgYWN0aW9uIHRo
YXQgcmV0dXJucyB0aGUgc2Vjb25kIG9mIHRoZQorLy8gYXJndW1lbnRzIGl0IHJlY2VpdmVzLgor
Y2xhc3MgUmV0dXJuU2Vjb25kQXJndW1lbnRBY3Rpb24geworIHB1YmxpYzoKKyAgLy8gV2Ugd2Fu
dCB0byB2ZXJpZnkgdGhhdCBNYWtlUG9seW1vcnBoaWNBY3Rpb24oKSBjYW4gd29yayB3aXRoIGEK
KyAgLy8gcG9seW1vcnBoaWMgYWN0aW9uIHdob3NlIFBlcmZvcm0oKSBtZXRob2QgdGVtcGxhdGUg
aXMgZWl0aGVyCisgIC8vIGNvbnN0IG9yIG5vdC4gIFRoaXMgbGV0cyB1cyB2ZXJpZnkgdGhlIG5v
bi1jb25zdCBjYXNlLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0LCB0eXBlbmFtZSBBcmd1
bWVudFR1cGxlPgorICBSZXN1bHQgUGVyZm9ybShjb25zdCBBcmd1bWVudFR1cGxlJiBhcmdzKSB7
IHJldHVybiBnZXQ8MT4oYXJncyk7IH0KK307CisKKy8vIEltcGxlbWVudHMgYSBwb2x5bW9ycGhp
YyBhY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCBpbiBhIG51bGxhcnkKKy8vIGZ1bmN0aW9uIHRvIHJl
dHVybiAwLgorY2xhc3MgUmV0dXJuWmVyb0Zyb21OdWxsYXJ5RnVuY3Rpb25BY3Rpb24geworIHB1
YmxpYzoKKyAgLy8gRm9yIHRlc3RpbmcgdGhhdCBNYWtlUG9seW1vcnBoaWNBY3Rpb24oKSB3b3Jr
cyB3aGVuIHRoZQorICAvLyBpbXBsZW1lbnRhdGlvbiBjbGFzcycgUGVyZm9ybSgpIG1ldGhvZCB0
ZW1wbGF0ZSB0YWtlcyBvbmx5IG9uZQorICAvLyB0ZW1wbGF0ZSBwYXJhbWV0ZXIuCisgIC8vCisg
IC8vIFdlIHdhbnQgdG8gdmVyaWZ5IHRoYXQgTWFrZVBvbHltb3JwaGljQWN0aW9uKCkgY2FuIHdv
cmsgd2l0aCBhCisgIC8vIHBvbHltb3JwaGljIGFjdGlvbiB3aG9zZSBQZXJmb3JtKCkgbWV0aG9k
IHRlbXBsYXRlIGlzIGVpdGhlcgorICAvLyBjb25zdCBvciBub3QuICBUaGlzIGxldHMgdXMgdmVy
aWZ5IHRoZSBjb25zdCBjYXNlLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0PgorICBSZXN1
bHQgUGVyZm9ybShjb25zdCB0dXBsZTw+JikgY29uc3QgeyByZXR1cm4gMDsgfQorfTsKKworLy8g
VGhlc2UgZnVuY3Rpb25zIHZlcmlmeSB0aGF0IE1ha2VQb2x5bW9ycGhpY0FjdGlvbigpIHJldHVy
bnMgYQorLy8gUG9seW1vcnBoaWNBY3Rpb248VD4gd2hlcmUgVCBpcyB0aGUgYXJndW1lbnQncyB0
eXBlLgorCitQb2x5bW9ycGhpY0FjdGlvbjxSZXR1cm5TZWNvbmRBcmd1bWVudEFjdGlvbj4gUmV0
dXJuU2Vjb25kQXJndW1lbnQoKSB7CisgIHJldHVybiBNYWtlUG9seW1vcnBoaWNBY3Rpb24oUmV0
dXJuU2Vjb25kQXJndW1lbnRBY3Rpb24oKSk7Cit9CisKK1BvbHltb3JwaGljQWN0aW9uPFJldHVy
blplcm9Gcm9tTnVsbGFyeUZ1bmN0aW9uQWN0aW9uPgorUmV0dXJuWmVyb0Zyb21OdWxsYXJ5RnVu
Y3Rpb24oKSB7CisgIHJldHVybiBNYWtlUG9seW1vcnBoaWNBY3Rpb24oUmV0dXJuWmVyb0Zyb21O
dWxsYXJ5RnVuY3Rpb25BY3Rpb24oKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgTWFrZVBvbHltb3Jw
aGljQWN0aW9uKCkgdHVybnMgYSBwb2x5bW9ycGhpYyBhY3Rpb24KKy8vIGltcGxlbWVudGF0aW9u
IGNsYXNzIGludG8gYSBwb2x5bW9ycGhpYyBhY3Rpb24uCitURVNUKE1ha2VQb2x5bW9ycGhpY0Fj
dGlvblRlc3QsIENvbnN0cnVjdHNBY3Rpb25Gcm9tSW1wbCkgeworICBBY3Rpb248aW50KGJvb2ws
IGludCwgZG91YmxlKT4gYTEgPSBSZXR1cm5TZWNvbmRBcmd1bWVudCgpOyAgLy8gTk9MSU5UCisg
IEVYUEVDVF9FUSg1LCBhMS5QZXJmb3JtKG1ha2VfdHVwbGUoZmFsc2UsIDUsIDIuMCkpKTsKK30K
KworLy8gVGVzdHMgdGhhdCBNYWtlUG9seW1vcnBoaWNBY3Rpb24oKSB3b3JrcyB3aGVuIHRoZSBp
bXBsZW1lbnRhdGlvbgorLy8gY2xhc3MnIFBlcmZvcm0oKSBtZXRob2QgdGVtcGxhdGUgaGFzIG9u
bHkgb25lIHRlbXBsYXRlIHBhcmFtZXRlci4KK1RFU1QoTWFrZVBvbHltb3JwaGljQWN0aW9uVGVz
dCwgV29ya3NXaGVuUGVyZm9ybUhhc09uZVRlbXBsYXRlUGFyYW1ldGVyKSB7CisgIEFjdGlvbjxp
bnQoKT4gYTEgPSBSZXR1cm5aZXJvRnJvbU51bGxhcnlGdW5jdGlvbigpOworICBFWFBFQ1RfRVEo
MCwgYTEuUGVyZm9ybShtYWtlX3R1cGxlKCkpKTsKKworICBBY3Rpb248dm9pZCooKT4gYTIgPSBS
ZXR1cm5aZXJvRnJvbU51bGxhcnlGdW5jdGlvbigpOworICBFWFBFQ1RfVFJVRShhMi5QZXJmb3Jt
KG1ha2VfdHVwbGUoKSkgPT0gTlVMTCk7Cit9CisKKy8vIFRlc3RzIHRoYXQgUmV0dXJuKCkgd29y
a3MgYXMgYW4gYWN0aW9uIGZvciB2b2lkLXJldHVybmluZworLy8gZnVuY3Rpb25zLgorVEVTVChS
ZXR1cm5UZXN0LCBXb3Jrc0ZvclZvaWQpIHsKKyAgY29uc3QgQWN0aW9uPHZvaWQoaW50KT4gcmV0
ID0gUmV0dXJuKCk7ICAvLyBOT0xJTlQKKyAgcmV0dXJuIHJldC5QZXJmb3JtKG1ha2VfdHVwbGUo
MSkpOworfQorCisvLyBUZXN0cyB0aGF0IFJldHVybih2KSByZXR1cm5zIHYuCitURVNUKFJldHVy
blRlc3QsIFJldHVybnNHaXZlblZhbHVlKSB7CisgIEFjdGlvbjxpbnQoKT4gcmV0ID0gUmV0dXJu
KDEpOyAgLy8gTk9MSU5UCisgIEVYUEVDVF9FUSgxLCByZXQuUGVyZm9ybShtYWtlX3R1cGxlKCkp
KTsKKworICByZXQgPSBSZXR1cm4oLTUpOworICBFWFBFQ1RfRVEoLTUsIHJldC5QZXJmb3JtKG1h
a2VfdHVwbGUoKSkpOworfQorCisvLyBUZXN0cyB0aGF0IFJldHVybigic3RyaW5nIGxpdGVyYWwi
KSB3b3Jrcy4KK1RFU1QoUmV0dXJuVGVzdCwgQWNjZXB0c1N0cmluZ0xpdGVyYWwpIHsKKyAgQWN0
aW9uPGNvbnN0IGNoYXIqKCk+IGExID0gUmV0dXJuKCJIZWxsbyIpOworICBFWFBFQ1RfU1RSRVEo
IkhlbGxvIiwgYTEuUGVyZm9ybShtYWtlX3R1cGxlKCkpKTsKKworICBBY3Rpb248c3RkOjpzdHJp
bmcoKT4gYTIgPSBSZXR1cm4oIndvcmxkIik7CisgIEVYUEVDVF9FUSgid29ybGQiLCBhMi5QZXJm
b3JtKG1ha2VfdHVwbGUoKSkpOworfQorCisvLyBUZXN0IHN0cnVjdCB3aGljaCB3cmFwcyBhIHZl
Y3RvciBvZiBpbnRlZ2Vycy4gVXNlZCBpbgorLy8gJ1N1cHBvcnRzV3JhcHBlclJldHVyblR5cGUn
IHRlc3QuCitzdHJ1Y3QgSW50ZWdlclZlY3RvcldyYXBwZXIgeworICBzdGQ6OnZlY3RvcjxpbnQ+
ICogdjsKKyAgSW50ZWdlclZlY3RvcldyYXBwZXIoc3RkOjp2ZWN0b3I8aW50PiYgX3YpIDogdigm
X3YpIHt9ICAvLyBOT0xJTlQKK307CisKKy8vIFRlc3RzIHRoYXQgUmV0dXJuKCkgd29ya3Mgd2hl
biByZXR1cm4gdHlwZSBpcyBhIHdyYXBwZXIgdHlwZS4KK1RFU1QoUmV0dXJuVGVzdCwgU3VwcG9y
dHNXcmFwcGVyUmV0dXJuVHlwZSkgeworICAvLyBJbml0aWFsaXplIHZlY3RvciBvZiBpbnRlZ2Vy
cy4KKyAgc3RkOjp2ZWN0b3I8aW50PiB2OworICBmb3IgKGludCBpID0gMDsgaSA8IDU7ICsraSkg
di5wdXNoX2JhY2soaSk7CisKKyAgLy8gUmV0dXJuKCkgY2FsbGVkIHdpdGggJ3YnIGFzIGFyZ3Vt
ZW50LiBUaGUgQWN0aW9uIHdpbGwgcmV0dXJuIHRoZSBzYW1lIGRhdGEKKyAgLy8gYXMgJ3YnIChj
b3B5KSBidXQgaXQgd2lsbCBiZSB3cmFwcGVkIGluIGFuIEludGVnZXJWZWN0b3JXcmFwcGVyLgor
ICBBY3Rpb248SW50ZWdlclZlY3RvcldyYXBwZXIoKT4gYSA9IFJldHVybih2KTsKKyAgY29uc3Qg
c3RkOjp2ZWN0b3I8aW50PiYgcmVzdWx0ID0gKihhLlBlcmZvcm0obWFrZV90dXBsZSgpKS52KTsK
KyAgRVhQRUNUX1RIQVQocmVzdWx0LCA6OnRlc3Rpbmc6OkVsZW1lbnRzQXJlKDAsIDEsIDIsIDMs
IDQpKTsKK30KKworLy8gVGVzdHMgdGhhdCBSZXR1cm4odikgaXMgY292YXJhaW50LgorCitzdHJ1
Y3QgQmFzZSB7CisgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCYXNlJikgeyByZXR1cm4gdHJ1ZTsg
fQorfTsKKworc3RydWN0IERlcml2ZWQgOiBwdWJsaWMgQmFzZSB7CisgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBEZXJpdmVkJikgeyByZXR1cm4gdHJ1ZTsgfQorfTsKKworVEVTVChSZXR1cm5UZXN0
LCBJc0NvdmFyaWFudCkgeworICBCYXNlIGJhc2U7CisgIERlcml2ZWQgZGVyaXZlZDsKKyAgQWN0
aW9uPEJhc2UqKCk+IHJldCA9IFJldHVybigmYmFzZSk7CisgIEVYUEVDVF9FUSgmYmFzZSwgcmV0
LlBlcmZvcm0obWFrZV90dXBsZSgpKSk7CisKKyAgcmV0ID0gUmV0dXJuKCZkZXJpdmVkKTsKKyAg
RVhQRUNUX0VRKCZkZXJpdmVkLCByZXQuUGVyZm9ybShtYWtlX3R1cGxlKCkpKTsKK30KKworLy8g
VGVzdHMgdGhhdCB0aGUgdHlwZSBvZiB0aGUgdmFsdWUgcGFzc2VkIGludG8gUmV0dXJuIGlzIGNv
bnZlcnRlZCBpbnRvIFQKKy8vIHdoZW4gdGhlIGFjdGlvbiBpcyBjYXN0IHRvIEFjdGlvbjxUKC4u
Lik+IHJhdGhlciB0aGFuIHdoZW4gdGhlIGFjdGlvbiBpcworLy8gcGVyZm9ybWVkLiBTZWUgY29t
bWVudHMgb24gdGVzdGluZzo6aW50ZXJuYWw6OlJldHVybkFjdGlvbiBpbgorLy8gZ21vY2stYWN0
aW9ucy5oIGZvciBtb3JlIGluZm9ybWF0aW9uLgorY2xhc3MgRnJvbVR5cGUgeworIHB1YmxpYzoK
KyAgZXhwbGljaXQgRnJvbVR5cGUoYm9vbCogaXNfY29udmVydGVkKSA6IGNvbnZlcnRlZF8oaXNf
Y29udmVydGVkKSB7fQorICBib29sKiBjb252ZXJ0ZWQoKSBjb25zdCB7IHJldHVybiBjb252ZXJ0
ZWRfOyB9CisKKyBwcml2YXRlOgorICBib29sKiBjb25zdCBjb252ZXJ0ZWRfOworCisgIEdURVNU
X0RJU0FMTE9XX0FTU0lHTl8oRnJvbVR5cGUpOworfTsKKworY2xhc3MgVG9UeXBlIHsKKyBwdWJs
aWM6CisgIC8vIE11c3QgYWxsb3cgaW1wbGljaXQgY29udmVyc2lvbiBkdWUgdG8gdXNlIGluIElt
cGxpY2l0Q2FzdF88VD4uCisgIFRvVHlwZShjb25zdCBGcm9tVHlwZSYgeCkgeyAqeC5jb252ZXJ0
ZWQoKSA9IHRydWU7IH0gIC8vIE5PTElOVAorfTsKKworVEVTVChSZXR1cm5UZXN0LCBDb252ZXJ0
c0FyZ3VtZW50V2hlbkNvbnZlcnRlZCkgeworICBib29sIGNvbnZlcnRlZCA9IGZhbHNlOworICBG
cm9tVHlwZSB4KCZjb252ZXJ0ZWQpOworICBBY3Rpb248VG9UeXBlKCk+IGFjdGlvbihSZXR1cm4o
eCkpOworICBFWFBFQ1RfVFJVRShjb252ZXJ0ZWQpIDw8ICJSZXR1cm4gbXVzdCBjb252ZXJ0IGl0
cyBhcmd1bWVudCBpbiBpdHMgb3duICIKKyAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiY29u
dmVyc2lvbiBvcGVyYXRvci4iOworICBjb252ZXJ0ZWQgPSBmYWxzZTsKKyAgYWN0aW9uLlBlcmZv
cm0odHVwbGU8PigpKTsKKyAgRVhQRUNUX0ZBTFNFKGNvbnZlcnRlZCkgPDwgIkFjdGlvbiBtdXN0
IE5PVCBjb252ZXJ0IGl0cyBhcmd1bWVudCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgIDw8
ICJ3aGVuIHBlcmZvcm1lZC4iOworfQorCitjbGFzcyBEZXN0aW5hdGlvblR5cGUge307CisKK2Ns
YXNzIFNvdXJjZVR5cGUgeworIHB1YmxpYzoKKyAgLy8gTm90ZTogYSBub24tY29uc3QgdHlwZWNh
c3Qgb3BlcmF0b3IuCisgIG9wZXJhdG9yIERlc3RpbmF0aW9uVHlwZSgpIHsgcmV0dXJuIERlc3Rp
bmF0aW9uVHlwZSgpOyB9Cit9OworCitURVNUKFJldHVyblRlc3QsIENhbkNvbnZlcnRBcmd1bWVu
dFVzaW5nTm9uQ29uc3RUeXBlQ2FzdE9wZXJhdG9yKSB7CisgIFNvdXJjZVR5cGUgczsKKyAgQWN0
aW9uPERlc3RpbmF0aW9uVHlwZSgpPiBhY3Rpb24oUmV0dXJuKHMpKTsKK30KKworLy8gVGVzdHMg
dGhhdCBSZXR1cm5OdWxsKCkgcmV0dXJucyBOVUxMIGluIGEgcG9pbnRlci1yZXR1cm5pbmcgZnVu
Y3Rpb24uCitURVNUKFJldHVybk51bGxUZXN0LCBXb3Jrc0luUG9pbnRlclJldHVybmluZ0Z1bmN0
aW9uKSB7CisgIGNvbnN0IEFjdGlvbjxpbnQqKCk+IGExID0gUmV0dXJuTnVsbCgpOworICBFWFBF
Q1RfVFJVRShhMS5QZXJmb3JtKG1ha2VfdHVwbGUoKSkgPT0gTlVMTCk7CisKKyAgY29uc3QgQWN0
aW9uPGNvbnN0IGNoYXIqKGJvb2wpPiBhMiA9IFJldHVybk51bGwoKTsgIC8vIE5PTElOVAorICBF
WFBFQ1RfVFJVRShhMi5QZXJmb3JtKG1ha2VfdHVwbGUodHJ1ZSkpID09IE5VTEwpOworfQorCisj
aWYgR1RFU1RfSEFTX1NURF9VTklRVUVfUFRSXworLy8gVGVzdHMgdGhhdCBSZXR1cm5OdWxsKCkg
cmV0dXJucyBOVUxMIGZvciBzaGFyZWRfcHRyIGFuZCB1bmlxdWVfcHRyIHJldHVybmluZworLy8g
ZnVuY3Rpb25zLgorVEVTVChSZXR1cm5OdWxsVGVzdCwgV29ya3NJblNtYXJ0UG9pbnRlclJldHVy
bmluZ0Z1bmN0aW9uKSB7CisgIGNvbnN0IEFjdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8Y29uc3QgaW50
PigpPiBhMSA9IFJldHVybk51bGwoKTsKKyAgRVhQRUNUX1RSVUUoYTEuUGVyZm9ybShtYWtlX3R1
cGxlKCkpID09IG51bGxwdHIpOworCisgIGNvbnN0IEFjdGlvbjxzdGQ6OnNoYXJlZF9wdHI8aW50
PihzdGQ6OnN0cmluZyk+IGEyID0gUmV0dXJuTnVsbCgpOworICBFWFBFQ1RfVFJVRShhMi5QZXJm
b3JtKG1ha2VfdHVwbGUoImZvbyIpKSA9PSBudWxscHRyKTsKK30KKyNlbmRpZiAgLy8gR1RFU1Rf
SEFTX1NURF9VTklRVUVfUFRSXworCisvLyBUZXN0cyB0aGF0IFJldHVyblJlZih2KSB3b3JrcyBm
b3IgcmVmZXJlbmNlIHR5cGVzLgorVEVTVChSZXR1cm5SZWZUZXN0LCBXb3Jrc0ZvclJlZmVyZW5j
ZSkgeworICBjb25zdCBpbnQgbiA9IDA7CisgIGNvbnN0IEFjdGlvbjxjb25zdCBpbnQmKGJvb2wp
PiByZXQgPSBSZXR1cm5SZWYobik7ICAvLyBOT0xJTlQKKworICBFWFBFQ1RfRVEoJm4sICZyZXQu
UGVyZm9ybShtYWtlX3R1cGxlKHRydWUpKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgUmV0dXJuUmVm
KHYpIGlzIGNvdmFyaWFudC4KK1RFU1QoUmV0dXJuUmVmVGVzdCwgSXNDb3ZhcmlhbnQpIHsKKyAg
QmFzZSBiYXNlOworICBEZXJpdmVkIGRlcml2ZWQ7CisgIEFjdGlvbjxCYXNlJigpPiBhID0gUmV0
dXJuUmVmKGJhc2UpOworICBFWFBFQ1RfRVEoJmJhc2UsICZhLlBlcmZvcm0obWFrZV90dXBsZSgp
KSk7CisKKyAgYSA9IFJldHVyblJlZihkZXJpdmVkKTsKKyAgRVhQRUNUX0VRKCZkZXJpdmVkLCAm
YS5QZXJmb3JtKG1ha2VfdHVwbGUoKSkpOworfQorCisvLyBUZXN0cyB0aGF0IFJldHVyblJlZk9m
Q29weSh2KSB3b3JrcyBmb3IgcmVmZXJlbmNlIHR5cGVzLgorVEVTVChSZXR1cm5SZWZPZkNvcHlU
ZXN0LCBXb3Jrc0ZvclJlZmVyZW5jZSkgeworICBpbnQgbiA9IDQyOworICBjb25zdCBBY3Rpb248
Y29uc3QgaW50JigpPiByZXQgPSBSZXR1cm5SZWZPZkNvcHkobik7CisKKyAgRVhQRUNUX05FKCZu
LCAmcmV0LlBlcmZvcm0obWFrZV90dXBsZSgpKSk7CisgIEVYUEVDVF9FUSg0MiwgcmV0LlBlcmZv
cm0obWFrZV90dXBsZSgpKSk7CisKKyAgbiA9IDQzOworICBFWFBFQ1RfTkUoJm4sICZyZXQuUGVy
Zm9ybShtYWtlX3R1cGxlKCkpKTsKKyAgRVhQRUNUX0VRKDQyLCByZXQuUGVyZm9ybShtYWtlX3R1
cGxlKCkpKTsKK30KKworLy8gVGVzdHMgdGhhdCBSZXR1cm5SZWZPZkNvcHkodikgaXMgY292YXJp
YW50LgorVEVTVChSZXR1cm5SZWZPZkNvcHlUZXN0LCBJc0NvdmFyaWFudCkgeworICBCYXNlIGJh
c2U7CisgIERlcml2ZWQgZGVyaXZlZDsKKyAgQWN0aW9uPEJhc2UmKCk+IGEgPSBSZXR1cm5SZWZP
ZkNvcHkoYmFzZSk7CisgIEVYUEVDVF9ORSgmYmFzZSwgJmEuUGVyZm9ybShtYWtlX3R1cGxlKCkp
KTsKKworICBhID0gUmV0dXJuUmVmT2ZDb3B5KGRlcml2ZWQpOworICBFWFBFQ1RfTkUoJmRlcml2
ZWQsICZhLlBlcmZvcm0obWFrZV90dXBsZSgpKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgRG9EZWZh
dWx0KCkgZG9lcyB0aGUgZGVmYXVsdCBhY3Rpb24gZm9yIHRoZSBtb2NrIG1ldGhvZC4KKworY2xh
c3MgTW9ja0NsYXNzIHsKKyBwdWJsaWM6CisgIE1vY2tDbGFzcygpIHt9CisKKyAgTU9DS19NRVRI
T0QxKEludEZ1bmMsIGludChib29sIGZsYWcpKTsgIC8vIE5PTElOVAorICBNT0NLX01FVEhPRDAo
Rm9vLCBNeU5vbkRlZmF1bHRDb25zdHJ1Y3RpYmxlKCkpOworI2lmIEdURVNUX0hBU19TVERfVU5J
UVVFX1BUUl8KKyAgTU9DS19NRVRIT0QwKE1ha2VVbmlxdWUsIHN0ZDo6dW5pcXVlX3B0cjxpbnQ+
KCkpOworICBNT0NLX01FVEhPRDAoTWFrZVVuaXF1ZUJhc2UsIHN0ZDo6dW5pcXVlX3B0cjxCYXNl
PigpKTsKKyAgTU9DS19NRVRIT0QwKE1ha2VWZWN0b3JVbmlxdWUsIHN0ZDo6dmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxpbnQ+PigpKTsKKyNlbmRpZgorCisgcHJpdmF0ZToKKyAgR1RFU1RfRElTQUxM
T1dfQ09QWV9BTkRfQVNTSUdOXyhNb2NrQ2xhc3MpOworfTsKKworLy8gVGVzdHMgdGhhdCBEb0Rl
ZmF1bHQoKSByZXR1cm5zIHRoZSBidWlsdC1pbiBkZWZhdWx0IHZhbHVlIGZvciB0aGUKKy8vIHJl
dHVybiB0eXBlIGJ5IGRlZmF1bHQuCitURVNUKERvRGVmYXVsdFRlc3QsIFJldHVybnNCdWlsdElu
RGVmYXVsdFZhbHVlQnlEZWZhdWx0KSB7CisgIE1vY2tDbGFzcyBtb2NrOworICBFWFBFQ1RfQ0FM
TChtb2NrLCBJbnRGdW5jKF8pKQorICAgICAgLldpbGxPbmNlKERvRGVmYXVsdCgpKTsKKyAgRVhQ
RUNUX0VRKDAsIG1vY2suSW50RnVuYyh0cnVlKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgRG9EZWZh
dWx0KCkgdGhyb3dzICh3aGVuIGV4Y2VwdGlvbnMgYXJlIGVuYWJsZWQpIG9yIGFib3J0cworLy8g
dGhlIHByb2Nlc3Mgd2hlbiB0aGVyZSBpcyBubyBidWlsdC1pbiBkZWZhdWx0IHZhbHVlIGZvciB0
aGUgcmV0dXJuIHR5cGUuCitURVNUKERvRGVmYXVsdERlYXRoVGVzdCwgRGllc0ZvclVua25vd1R5
cGUpIHsKKyAgTW9ja0NsYXNzIG1vY2s7CisgIEVYUEVDVF9DQUxMKG1vY2ssIEZvbygpKQorICAg
ICAgLldpbGxSZXBlYXRlZGx5KERvRGVmYXVsdCgpKTsKKyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9O
UworICBFWFBFQ1RfQU5ZX1RIUk9XKG1vY2suRm9vKCkpOworI2Vsc2UKKyAgRVhQRUNUX0RFQVRI
X0lGX1NVUFBPUlRFRCh7CisgICAgbW9jay5Gb28oKTsKKyAgfSwgIiIpOworI2VuZGlmCit9CisK
Ky8vIFRlc3RzIHRoYXQgdXNpbmcgRG9EZWZhdWx0KCkgaW5zaWRlIGEgY29tcG9zaXRlIGFjdGlv
biBsZWFkcyB0byBhCisvLyBydW4tdGltZSBlcnJvci4KKwordm9pZCBWb2lkRnVuYyhib29sIC8q
IGZsYWcgKi8pIHt9CisKK1RFU1QoRG9EZWZhdWx0RGVhdGhUZXN0LCBEaWVzSWZVc2VkSW5Db21w
b3NpdGVBY3Rpb24pIHsKKyAgTW9ja0NsYXNzIG1vY2s7CisgIEVYUEVDVF9DQUxMKG1vY2ssIElu
dEZ1bmMoXykpCisgICAgICAuV2lsbFJlcGVhdGVkbHkoRG9BbGwoSW52b2tlKFZvaWRGdW5jKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb0RlZmF1bHQoKSkpOworCisgIC8vIElkZWFs
bHkgd2Ugc2hvdWxkIHZlcmlmeSB0aGUgZXJyb3IgbWVzc2FnZSBhcyB3ZWxsLiAgU2FkbHksCisg
IC8vIEVYUEVDVF9ERUFUSCgpIGNhbiBvbmx5IGNhcHR1cmUgc3RkZXJyLCB3aGlsZSBHb29nbGUg
TW9jaydzCisgIC8vIGVycm9ycyBhcmUgcHJpbnRlZCBvbiBzdGRvdXQuICBUaGVyZWZvcmUgd2Ug
aGF2ZSB0byBzZXR0bGUgZm9yCisgIC8vIG5vdCB2ZXJpZnlpbmcgdGhlIG1lc3NhZ2UuCisgIEVY
UEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoeworICAgIG1vY2suSW50RnVuYyh0cnVlKTsKKyAgfSwg
IiIpOworfQorCisvLyBUZXN0cyB0aGF0IERvRGVmYXVsdCgpIHJldHVybnMgdGhlIGRlZmF1bHQg
dmFsdWUgc2V0IGJ5CisvLyBEZWZhdWx0VmFsdWU8VD46OlNldCgpIHdoZW4gaXQncyBub3Qgb3Zl
cnJpZGVuIGJ5IGFuIE9OX0NBTEwoKS4KK1RFU1QoRG9EZWZhdWx0VGVzdCwgUmV0dXJuc1VzZXJT
cGVjaWZpZWRQZXJUeXBlRGVmYXVsdFZhbHVlV2hlblRoZXJlSXNPbmUpIHsKKyAgRGVmYXVsdFZh
bHVlPGludD46OlNldCgxKTsKKyAgTW9ja0NsYXNzIG1vY2s7CisgIEVYUEVDVF9DQUxMKG1vY2ss
IEludEZ1bmMoXykpCisgICAgICAuV2lsbE9uY2UoRG9EZWZhdWx0KCkpOworICBFWFBFQ1RfRVEo
MSwgbW9jay5JbnRGdW5jKGZhbHNlKSk7CisgIERlZmF1bHRWYWx1ZTxpbnQ+OjpDbGVhcigpOwor
fQorCisvLyBUZXN0cyB0aGF0IERvRGVmYXVsdCgpIGRvZXMgdGhlIGFjdGlvbiBzcGVjaWZpZWQg
YnkgT05fQ0FMTCgpLgorVEVTVChEb0RlZmF1bHRUZXN0LCBEb2VzV2hhdE9uQ2FsbFNwZWNpZmll
cykgeworICBNb2NrQ2xhc3MgbW9jazsKKyAgT05fQ0FMTChtb2NrLCBJbnRGdW5jKF8pKQorICAg
ICAgLldpbGxCeURlZmF1bHQoUmV0dXJuKDIpKTsKKyAgRVhQRUNUX0NBTEwobW9jaywgSW50RnVu
YyhfKSkKKyAgICAgIC5XaWxsT25jZShEb0RlZmF1bHQoKSk7CisgIEVYUEVDVF9FUSgyLCBtb2Nr
LkludEZ1bmMoZmFsc2UpKTsKK30KKworLy8gVGVzdHMgdGhhdCB1c2luZyBEb0RlZmF1bHQoKSBp
biBPTl9DQUxMKCkgbGVhZHMgdG8gYSBydW4tdGltZSBmYWlsdXJlLgorVEVTVChEb0RlZmF1bHRU
ZXN0LCBDYW5ub3RCZVVzZWRJbk9uQ2FsbCkgeworICBNb2NrQ2xhc3MgbW9jazsKKyAgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAgT05fQ0FMTChtb2NrLCBJbnRGdW5j
KF8pKQorICAgICAgLldpbGxCeURlZmF1bHQoRG9EZWZhdWx0KCkpOworICB9LCAiRG9EZWZhdWx0
KCkgY2Fubm90IGJlIHVzZWQgaW4gT05fQ0FMTCgpIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgU2V0
QXJnUG9pbnRlZTxOPih2KSBzZXRzIHRoZSB2YXJpYWJsZSBwb2ludGVkIHRvIGJ5CisvLyB0aGUg
Ti10aCAoMC1iYXNlZCkgYXJndW1lbnQgdG8gdi4KK1RFU1QoU2V0QXJnUG9pbnRlZVRlc3QsIFNl
dHNUaGVOdGhQb2ludGVlKSB7CisgIHR5cGVkZWYgdm9pZCBNeUZ1bmN0aW9uKGJvb2wsIGludCos
IGNoYXIqKTsKKyAgQWN0aW9uPE15RnVuY3Rpb24+IGEgPSBTZXRBcmdQb2ludGVlPDE+KDIpOwor
CisgIGludCBuID0gMDsKKyAgY2hhciBjaCA9ICdcMCc7CisgIGEuUGVyZm9ybShtYWtlX3R1cGxl
KHRydWUsICZuLCAmY2gpKTsKKyAgRVhQRUNUX0VRKDIsIG4pOworICBFWFBFQ1RfRVEoJ1wwJywg
Y2gpOworCisgIGEgPSBTZXRBcmdQb2ludGVlPDI+KCdhJyk7CisgIG4gPSAwOworICBjaCA9ICdc
MCc7CisgIGEuUGVyZm9ybShtYWtlX3R1cGxlKHRydWUsICZuLCAmY2gpKTsKKyAgRVhQRUNUX0VR
KDAsIG4pOworICBFWFBFQ1RfRVEoJ2EnLCBjaCk7Cit9CisKKyNpZiAhKChHVEVTVF9HQ0NfVkVS
XyAmJiBHVEVTVF9HQ0NfVkVSXyA8IDQwMDAwKSB8fCBHVEVTVF9PU19TWU1CSUFOKQorLy8gVGVz
dHMgdGhhdCBTZXRBcmdQb2ludGVlPE4+KCkgYWNjZXB0cyBhIHN0cmluZyBsaXRlcmFsLgorLy8g
R0NDIHByaW9yIHRvIHY0LjAgYW5kIHRoZSBTeW1iaWFuIGNvbXBpbGVyIGRvIG5vdCBzdXBwb3J0
IHRoaXMuCitURVNUKFNldEFyZ1BvaW50ZWVUZXN0LCBBY2NlcHRzU3RyaW5nTGl0ZXJhbCkgewor
ICB0eXBlZGVmIHZvaWQgTXlGdW5jdGlvbihzdGQ6OnN0cmluZyosIGNvbnN0IGNoYXIqKik7Cisg
IEFjdGlvbjxNeUZ1bmN0aW9uPiBhID0gU2V0QXJnUG9pbnRlZTwwPigiaGkiKTsKKyAgc3RkOjpz
dHJpbmcgc3RyOworICBjb25zdCBjaGFyKiBwdHIgPSBOVUxMOworICBhLlBlcmZvcm0obWFrZV90
dXBsZSgmc3RyLCAmcHRyKSk7CisgIEVYUEVDVF9FUSgiaGkiLCBzdHIpOworICBFWFBFQ1RfVFJV
RShwdHIgPT0gTlVMTCk7CisKKyAgYSA9IFNldEFyZ1BvaW50ZWU8MT4oIndvcmxkIik7CisgIHN0
ciA9ICIiOworICBhLlBlcmZvcm0obWFrZV90dXBsZSgmc3RyLCAmcHRyKSk7CisgIEVYUEVDVF9F
USgiIiwgc3RyKTsKKyAgRVhQRUNUX1NUUkVRKCJ3b3JsZCIsIHB0cik7Cit9CisKK1RFU1QoU2V0
QXJnUG9pbnRlZVRlc3QsIEFjY2VwdHNXaWRlU3RyaW5nTGl0ZXJhbCkgeworICB0eXBlZGVmIHZv
aWQgTXlGdW5jdGlvbihjb25zdCB3Y2hhcl90KiopOworICBBY3Rpb248TXlGdW5jdGlvbj4gYSA9
IFNldEFyZ1BvaW50ZWU8MD4oTCJ3b3JsZCIpOworICBjb25zdCB3Y2hhcl90KiBwdHIgPSBOVUxM
OworICBhLlBlcmZvcm0obWFrZV90dXBsZSgmcHRyKSk7CisgIEVYUEVDVF9TVFJFUShMIndvcmxk
IiwgcHRyKTsKKworIyBpZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKKworICB0eXBlZGVmIHZvaWQg
TXlTdHJpbmdGdW5jdGlvbihzdGQ6OndzdHJpbmcqKTsKKyAgQWN0aW9uPE15U3RyaW5nRnVuY3Rp
b24+IGEyID0gU2V0QXJnUG9pbnRlZTwwPihMIndvcmxkIik7CisgIHN0ZDo6d3N0cmluZyBzdHIg
PSBMIiI7CisgIGEyLlBlcmZvcm0obWFrZV90dXBsZSgmc3RyKSk7CisgIEVYUEVDVF9FUShMIndv
cmxkIiwgc3RyKTsKKworIyBlbmRpZgorfQorI2VuZGlmCisKKy8vIFRlc3RzIHRoYXQgU2V0QXJn
UG9pbnRlZTxOPigpIGFjY2VwdHMgYSBjaGFyIHBvaW50ZXIuCitURVNUKFNldEFyZ1BvaW50ZWVU
ZXN0LCBBY2NlcHRzQ2hhclBvaW50ZXIpIHsKKyAgdHlwZWRlZiB2b2lkIE15RnVuY3Rpb24oYm9v
bCwgc3RkOjpzdHJpbmcqLCBjb25zdCBjaGFyKiopOworICBjb25zdCBjaGFyKiBjb25zdCBoaSA9
ICJoaSI7CisgIEFjdGlvbjxNeUZ1bmN0aW9uPiBhID0gU2V0QXJnUG9pbnRlZTwxPihoaSk7Cisg
IHN0ZDo6c3RyaW5nIHN0cjsKKyAgY29uc3QgY2hhciogcHRyID0gTlVMTDsKKyAgYS5QZXJmb3Jt
KG1ha2VfdHVwbGUodHJ1ZSwgJnN0ciwgJnB0cikpOworICBFWFBFQ1RfRVEoImhpIiwgc3RyKTsK
KyAgRVhQRUNUX1RSVUUocHRyID09IE5VTEwpOworCisgIGNoYXIgd29ybGRfYXJyYXlbXSA9ICJ3
b3JsZCI7CisgIGNoYXIqIGNvbnN0IHdvcmxkID0gd29ybGRfYXJyYXk7CisgIGEgPSBTZXRBcmdQ
b2ludGVlPDI+KHdvcmxkKTsKKyAgc3RyID0gIiI7CisgIGEuUGVyZm9ybShtYWtlX3R1cGxlKHRy
dWUsICZzdHIsICZwdHIpKTsKKyAgRVhQRUNUX0VRKCIiLCBzdHIpOworICBFWFBFQ1RfRVEod29y
bGQsIHB0cik7Cit9CisKK1RFU1QoU2V0QXJnUG9pbnRlZVRlc3QsIEFjY2VwdHNXaWRlQ2hhclBv
aW50ZXIpIHsKKyAgdHlwZWRlZiB2b2lkIE15RnVuY3Rpb24oYm9vbCwgY29uc3Qgd2NoYXJfdCoq
KTsKKyAgY29uc3Qgd2NoYXJfdCogY29uc3QgaGkgPSBMImhpIjsKKyAgQWN0aW9uPE15RnVuY3Rp
b24+IGEgPSBTZXRBcmdQb2ludGVlPDE+KGhpKTsKKyAgY29uc3Qgd2NoYXJfdCogcHRyID0gTlVM
TDsKKyAgYS5QZXJmb3JtKG1ha2VfdHVwbGUodHJ1ZSwgJnB0cikpOworICBFWFBFQ1RfRVEoaGks
IHB0cik7CisKKyMgaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCisKKyAgdHlwZWRlZiB2b2lkIE15
U3RyaW5nRnVuY3Rpb24oYm9vbCwgc3RkOjp3c3RyaW5nKik7CisgIHdjaGFyX3Qgd29ybGRfYXJy
YXlbXSA9IEwid29ybGQiOworICB3Y2hhcl90KiBjb25zdCB3b3JsZCA9IHdvcmxkX2FycmF5Owor
ICBBY3Rpb248TXlTdHJpbmdGdW5jdGlvbj4gYTIgPSBTZXRBcmdQb2ludGVlPDE+KHdvcmxkKTsK
KyAgc3RkOjp3c3RyaW5nIHN0cjsKKyAgYTIuUGVyZm9ybShtYWtlX3R1cGxlKHRydWUsICZzdHIp
KTsKKyAgRVhQRUNUX0VRKHdvcmxkX2FycmF5LCBzdHIpOworIyBlbmRpZgorfQorCisjaWYgR1RF
U1RfSEFTX1BST1RPQlVGXworCisvLyBUZXN0cyB0aGF0IFNldEFyZ1BvaW50ZWU8Tj4ocHJvdG9f
YnVmZmVyKSBzZXRzIHRoZSB2MSBwcm90b2J1ZgorLy8gdmFyaWFibGUgcG9pbnRlZCB0byBieSB0
aGUgTi10aCAoMC1iYXNlZCkgYXJndW1lbnQgdG8gcHJvdG9fYnVmZmVyLgorVEVTVChTZXRBcmdQ
b2ludGVlVGVzdCwgU2V0c1RoZU50aFBvaW50ZWVPZlByb3RvQnVmZmVyVHlwZSkgeworICBUZXN0
TWVzc2FnZSogY29uc3QgbXNnID0gbmV3IFRlc3RNZXNzYWdlOworICBtc2ctPnNldF9tZW1iZXIo
InllcyIpOworICBUZXN0TWVzc2FnZSBvcmlnX21zZzsKKyAgb3JpZ19tc2cuQ29weUZyb20oKm1z
Zyk7CisKKyAgQWN0aW9uPHZvaWQoYm9vbCwgVGVzdE1lc3NhZ2UqKT4gYSA9IFNldEFyZ1BvaW50
ZWU8MT4oKm1zZyk7CisgIC8vIFNldEFyZ1BvaW50ZWU8Tj4ocHJvdG9fYnVmZmVyKSBtYWtlcyBh
IGNvcHkgb2YgcHJvdG9fYnVmZmVyCisgIC8vIHMudC4gdGhlIGFjdGlvbiB3b3JrcyBldmVuIHdo
ZW4gdGhlIG9yaWdpbmFsIHByb3RvX2J1ZmZlciBoYXMKKyAgLy8gZGllZC4gIFdlIGVuc3VyZSB0
aGlzIGJlaGF2aW9yIGJ5IGRlbGV0aW5nIG1zZyBiZWZvcmUgdXNpbmcgdGhlCisgIC8vIGFjdGlv
bi4KKyAgZGVsZXRlIG1zZzsKKworICBUZXN0TWVzc2FnZSBkZXN0OworICBFWFBFQ1RfRkFMU0Uo
b3JpZ19tc2cuRXF1YWxzKGRlc3QpKTsKKyAgYS5QZXJmb3JtKG1ha2VfdHVwbGUodHJ1ZSwgJmRl
c3QpKTsKKyAgRVhQRUNUX1RSVUUob3JpZ19tc2cuRXF1YWxzKGRlc3QpKTsKK30KKworLy8gVGVz
dHMgdGhhdCBTZXRBcmdQb2ludGVlPE4+KHByb3RvX2J1ZmZlcikgc2V0cyB0aGUKKy8vIDo6UHJv
dG9jb2xNZXNzYWdlIHZhcmlhYmxlIHBvaW50ZWQgdG8gYnkgdGhlIE4tdGggKDAtYmFzZWQpCisv
LyBhcmd1bWVudCB0byBwcm90b19idWZmZXIuCitURVNUKFNldEFyZ1BvaW50ZWVUZXN0LCBTZXRz
VGhlTnRoUG9pbnRlZU9mUHJvdG9CdWZmZXJCYXNlVHlwZSkgeworICBUZXN0TWVzc2FnZSogY29u
c3QgbXNnID0gbmV3IFRlc3RNZXNzYWdlOworICBtc2ctPnNldF9tZW1iZXIoInllcyIpOworICBU
ZXN0TWVzc2FnZSBvcmlnX21zZzsKKyAgb3JpZ19tc2cuQ29weUZyb20oKm1zZyk7CisKKyAgQWN0
aW9uPHZvaWQoYm9vbCwgOjpQcm90b2NvbE1lc3NhZ2UqKT4gYSA9IFNldEFyZ1BvaW50ZWU8MT4o
Km1zZyk7CisgIC8vIFNldEFyZ1BvaW50ZWU8Tj4ocHJvdG9fYnVmZmVyKSBtYWtlcyBhIGNvcHkg
b2YgcHJvdG9fYnVmZmVyCisgIC8vIHMudC4gdGhlIGFjdGlvbiB3b3JrcyBldmVuIHdoZW4gdGhl
IG9yaWdpbmFsIHByb3RvX2J1ZmZlciBoYXMKKyAgLy8gZGllZC4gIFdlIGVuc3VyZSB0aGlzIGJl
aGF2aW9yIGJ5IGRlbGV0aW5nIG1zZyBiZWZvcmUgdXNpbmcgdGhlCisgIC8vIGFjdGlvbi4KKyAg
ZGVsZXRlIG1zZzsKKworICBUZXN0TWVzc2FnZSBkZXN0OworICA6OlByb3RvY29sTWVzc2FnZSog
Y29uc3QgZGVzdF9iYXNlID0gJmRlc3Q7CisgIEVYUEVDVF9GQUxTRShvcmlnX21zZy5FcXVhbHMo
ZGVzdCkpOworICBhLlBlcmZvcm0obWFrZV90dXBsZSh0cnVlLCBkZXN0X2Jhc2UpKTsKKyAgRVhQ
RUNUX1RSVUUob3JpZ19tc2cuRXF1YWxzKGRlc3QpKTsKK30KKworLy8gVGVzdHMgdGhhdCBTZXRB
cmdQb2ludGVlPE4+KHByb3RvMl9idWZmZXIpIHNldHMgdGhlIHYyCisvLyBwcm90b2J1ZiB2YXJp
YWJsZSBwb2ludGVkIHRvIGJ5IHRoZSBOLXRoICgwLWJhc2VkKSBhcmd1bWVudCB0bworLy8gcHJv
dG8yX2J1ZmZlci4KK1RFU1QoU2V0QXJnUG9pbnRlZVRlc3QsIFNldHNUaGVOdGhQb2ludGVlT2ZQ
cm90bzJCdWZmZXJUeXBlKSB7CisgIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpGb29NZXNzYWdl
OworICBGb29NZXNzYWdlKiBjb25zdCBtc2cgPSBuZXcgRm9vTWVzc2FnZTsKKyAgbXNnLT5zZXRf
aW50X2ZpZWxkKDIpOworICBtc2ctPnNldF9zdHJpbmdfZmllbGQoImhpIik7CisgIEZvb01lc3Nh
Z2Ugb3JpZ19tc2c7CisgIG9yaWdfbXNnLkNvcHlGcm9tKCptc2cpOworCisgIEFjdGlvbjx2b2lk
KGJvb2wsIEZvb01lc3NhZ2UqKT4gYSA9IFNldEFyZ1BvaW50ZWU8MT4oKm1zZyk7CisgIC8vIFNl
dEFyZ1BvaW50ZWU8Tj4ocHJvdG8yX2J1ZmZlcikgbWFrZXMgYSBjb3B5IG9mCisgIC8vIHByb3Rv
Ml9idWZmZXIgcy50LiB0aGUgYWN0aW9uIHdvcmtzIGV2ZW4gd2hlbiB0aGUgb3JpZ2luYWwKKyAg
Ly8gcHJvdG8yX2J1ZmZlciBoYXMgZGllZC4gIFdlIGVuc3VyZSB0aGlzIGJlaGF2aW9yIGJ5IGRl
bGV0aW5nIG1zZworICAvLyBiZWZvcmUgdXNpbmcgdGhlIGFjdGlvbi4KKyAgZGVsZXRlIG1zZzsK
KworICBGb29NZXNzYWdlIGRlc3Q7CisgIGRlc3Quc2V0X2ludF9maWVsZCgwKTsKKyAgYS5QZXJm
b3JtKG1ha2VfdHVwbGUodHJ1ZSwgJmRlc3QpKTsKKyAgRVhQRUNUX0VRKDIsIGRlc3QuaW50X2Zp
ZWxkKCkpOworICBFWFBFQ1RfRVEoImhpIiwgZGVzdC5zdHJpbmdfZmllbGQoKSk7Cit9CisKKy8v
IFRlc3RzIHRoYXQgU2V0QXJnUG9pbnRlZTxOPihwcm90bzJfYnVmZmVyKSBzZXRzIHRoZQorLy8g
cHJvdG8yOjpNZXNzYWdlIHZhcmlhYmxlIHBvaW50ZWQgdG8gYnkgdGhlIE4tdGggKDAtYmFzZWQp
IGFyZ3VtZW50CisvLyB0byBwcm90bzJfYnVmZmVyLgorVEVTVChTZXRBcmdQb2ludGVlVGVzdCwg
U2V0c1RoZU50aFBvaW50ZWVPZlByb3RvMkJ1ZmZlckJhc2VUeXBlKSB7CisgIHVzaW5nIHRlc3Rp
bmc6OmludGVybmFsOjpGb29NZXNzYWdlOworICBGb29NZXNzYWdlKiBjb25zdCBtc2cgPSBuZXcg
Rm9vTWVzc2FnZTsKKyAgbXNnLT5zZXRfaW50X2ZpZWxkKDIpOworICBtc2ctPnNldF9zdHJpbmdf
ZmllbGQoImhpIik7CisgIEZvb01lc3NhZ2Ugb3JpZ19tc2c7CisgIG9yaWdfbXNnLkNvcHlGcm9t
KCptc2cpOworCisgIEFjdGlvbjx2b2lkKGJvb2wsIDo6cHJvdG8yOjpNZXNzYWdlKik+IGEgPSBT
ZXRBcmdQb2ludGVlPDE+KCptc2cpOworICAvLyBTZXRBcmdQb2ludGVlPE4+KHByb3RvMl9idWZm
ZXIpIG1ha2VzIGEgY29weSBvZgorICAvLyBwcm90bzJfYnVmZmVyIHMudC4gdGhlIGFjdGlvbiB3
b3JrcyBldmVuIHdoZW4gdGhlIG9yaWdpbmFsCisgIC8vIHByb3RvMl9idWZmZXIgaGFzIGRpZWQu
ICBXZSBlbnN1cmUgdGhpcyBiZWhhdmlvciBieSBkZWxldGluZyBtc2cKKyAgLy8gYmVmb3JlIHVz
aW5nIHRoZSBhY3Rpb24uCisgIGRlbGV0ZSBtc2c7CisKKyAgRm9vTWVzc2FnZSBkZXN0OworICBk
ZXN0LnNldF9pbnRfZmllbGQoMCk7CisgIDo6cHJvdG8yOjpNZXNzYWdlKiBjb25zdCBkZXN0X2Jh
c2UgPSAmZGVzdDsKKyAgYS5QZXJmb3JtKG1ha2VfdHVwbGUodHJ1ZSwgZGVzdF9iYXNlKSk7Cisg
IEVYUEVDVF9FUSgyLCBkZXN0LmludF9maWVsZCgpKTsKKyAgRVhQRUNUX0VRKCJoaSIsIGRlc3Qu
c3RyaW5nX2ZpZWxkKCkpOworfQorCisjZW5kaWYgIC8vIEdURVNUX0hBU19QUk9UT0JVRl8KKwor
Ly8gVGVzdHMgdGhhdCBTZXRBcmd1bWVudFBvaW50ZWU8Tj4odikgc2V0cyB0aGUgdmFyaWFibGUg
cG9pbnRlZCB0byBieQorLy8gdGhlIE4tdGggKDAtYmFzZWQpIGFyZ3VtZW50IHRvIHYuCitURVNU
KFNldEFyZ3VtZW50UG9pbnRlZVRlc3QsIFNldHNUaGVOdGhQb2ludGVlKSB7CisgIHR5cGVkZWYg
dm9pZCBNeUZ1bmN0aW9uKGJvb2wsIGludCosIGNoYXIqKTsKKyAgQWN0aW9uPE15RnVuY3Rpb24+
IGEgPSBTZXRBcmd1bWVudFBvaW50ZWU8MT4oMik7CisKKyAgaW50IG4gPSAwOworICBjaGFyIGNo
ID0gJ1wwJzsKKyAgYS5QZXJmb3JtKG1ha2VfdHVwbGUodHJ1ZSwgJm4sICZjaCkpOworICBFWFBF
Q1RfRVEoMiwgbik7CisgIEVYUEVDVF9FUSgnXDAnLCBjaCk7CisKKyAgYSA9IFNldEFyZ3VtZW50
UG9pbnRlZTwyPignYScpOworICBuID0gMDsKKyAgY2ggPSAnXDAnOworICBhLlBlcmZvcm0obWFr
ZV90dXBsZSh0cnVlLCAmbiwgJmNoKSk7CisgIEVYUEVDVF9FUSgwLCBuKTsKKyAgRVhQRUNUX0VR
KCdhJywgY2gpOworfQorCisjaWYgR1RFU1RfSEFTX1BST1RPQlVGXworCisvLyBUZXN0cyB0aGF0
IFNldEFyZ3VtZW50UG9pbnRlZTxOPihwcm90b19idWZmZXIpIHNldHMgdGhlIHYxIHByb3RvYnVm
CisvLyB2YXJpYWJsZSBwb2ludGVkIHRvIGJ5IHRoZSBOLXRoICgwLWJhc2VkKSBhcmd1bWVudCB0
byBwcm90b19idWZmZXIuCitURVNUKFNldEFyZ3VtZW50UG9pbnRlZVRlc3QsIFNldHNUaGVOdGhQ
b2ludGVlT2ZQcm90b0J1ZmZlclR5cGUpIHsKKyAgVGVzdE1lc3NhZ2UqIGNvbnN0IG1zZyA9IG5l
dyBUZXN0TWVzc2FnZTsKKyAgbXNnLT5zZXRfbWVtYmVyKCJ5ZXMiKTsKKyAgVGVzdE1lc3NhZ2Ug
b3JpZ19tc2c7CisgIG9yaWdfbXNnLkNvcHlGcm9tKCptc2cpOworCisgIEFjdGlvbjx2b2lkKGJv
b2wsIFRlc3RNZXNzYWdlKik+IGEgPSBTZXRBcmd1bWVudFBvaW50ZWU8MT4oKm1zZyk7CisgIC8v
IFNldEFyZ3VtZW50UG9pbnRlZTxOPihwcm90b19idWZmZXIpIG1ha2VzIGEgY29weSBvZiBwcm90
b19idWZmZXIKKyAgLy8gcy50LiB0aGUgYWN0aW9uIHdvcmtzIGV2ZW4gd2hlbiB0aGUgb3JpZ2lu
YWwgcHJvdG9fYnVmZmVyIGhhcworICAvLyBkaWVkLiAgV2UgZW5zdXJlIHRoaXMgYmVoYXZpb3Ig
YnkgZGVsZXRpbmcgbXNnIGJlZm9yZSB1c2luZyB0aGUKKyAgLy8gYWN0aW9uLgorICBkZWxldGUg
bXNnOworCisgIFRlc3RNZXNzYWdlIGRlc3Q7CisgIEVYUEVDVF9GQUxTRShvcmlnX21zZy5FcXVh
bHMoZGVzdCkpOworICBhLlBlcmZvcm0obWFrZV90dXBsZSh0cnVlLCAmZGVzdCkpOworICBFWFBF
Q1RfVFJVRShvcmlnX21zZy5FcXVhbHMoZGVzdCkpOworfQorCisvLyBUZXN0cyB0aGF0IFNldEFy
Z3VtZW50UG9pbnRlZTxOPihwcm90b19idWZmZXIpIHNldHMgdGhlCisvLyA6OlByb3RvY29sTWVz
c2FnZSB2YXJpYWJsZSBwb2ludGVkIHRvIGJ5IHRoZSBOLXRoICgwLWJhc2VkKQorLy8gYXJndW1l
bnQgdG8gcHJvdG9fYnVmZmVyLgorVEVTVChTZXRBcmd1bWVudFBvaW50ZWVUZXN0LCBTZXRzVGhl
TnRoUG9pbnRlZU9mUHJvdG9CdWZmZXJCYXNlVHlwZSkgeworICBUZXN0TWVzc2FnZSogY29uc3Qg
bXNnID0gbmV3IFRlc3RNZXNzYWdlOworICBtc2ctPnNldF9tZW1iZXIoInllcyIpOworICBUZXN0
TWVzc2FnZSBvcmlnX21zZzsKKyAgb3JpZ19tc2cuQ29weUZyb20oKm1zZyk7CisKKyAgQWN0aW9u
PHZvaWQoYm9vbCwgOjpQcm90b2NvbE1lc3NhZ2UqKT4gYSA9IFNldEFyZ3VtZW50UG9pbnRlZTwx
PigqbXNnKTsKKyAgLy8gU2V0QXJndW1lbnRQb2ludGVlPE4+KHByb3RvX2J1ZmZlcikgbWFrZXMg
YSBjb3B5IG9mIHByb3RvX2J1ZmZlcgorICAvLyBzLnQuIHRoZSBhY3Rpb24gd29ya3MgZXZlbiB3
aGVuIHRoZSBvcmlnaW5hbCBwcm90b19idWZmZXIgaGFzCisgIC8vIGRpZWQuICBXZSBlbnN1cmUg
dGhpcyBiZWhhdmlvciBieSBkZWxldGluZyBtc2cgYmVmb3JlIHVzaW5nIHRoZQorICAvLyBhY3Rp
b24uCisgIGRlbGV0ZSBtc2c7CisKKyAgVGVzdE1lc3NhZ2UgZGVzdDsKKyAgOjpQcm90b2NvbE1l
c3NhZ2UqIGNvbnN0IGRlc3RfYmFzZSA9ICZkZXN0OworICBFWFBFQ1RfRkFMU0Uob3JpZ19tc2cu
RXF1YWxzKGRlc3QpKTsKKyAgYS5QZXJmb3JtKG1ha2VfdHVwbGUodHJ1ZSwgZGVzdF9iYXNlKSk7
CisgIEVYUEVDVF9UUlVFKG9yaWdfbXNnLkVxdWFscyhkZXN0KSk7Cit9CisKKy8vIFRlc3RzIHRo
YXQgU2V0QXJndW1lbnRQb2ludGVlPE4+KHByb3RvMl9idWZmZXIpIHNldHMgdGhlIHYyCisvLyBw
cm90b2J1ZiB2YXJpYWJsZSBwb2ludGVkIHRvIGJ5IHRoZSBOLXRoICgwLWJhc2VkKSBhcmd1bWVu
dCB0bworLy8gcHJvdG8yX2J1ZmZlci4KK1RFU1QoU2V0QXJndW1lbnRQb2ludGVlVGVzdCwgU2V0
c1RoZU50aFBvaW50ZWVPZlByb3RvMkJ1ZmZlclR5cGUpIHsKKyAgdXNpbmcgdGVzdGluZzo6aW50
ZXJuYWw6OkZvb01lc3NhZ2U7CisgIEZvb01lc3NhZ2UqIGNvbnN0IG1zZyA9IG5ldyBGb29NZXNz
YWdlOworICBtc2ctPnNldF9pbnRfZmllbGQoMik7CisgIG1zZy0+c2V0X3N0cmluZ19maWVsZCgi
aGkiKTsKKyAgRm9vTWVzc2FnZSBvcmlnX21zZzsKKyAgb3JpZ19tc2cuQ29weUZyb20oKm1zZyk7
CisKKyAgQWN0aW9uPHZvaWQoYm9vbCwgRm9vTWVzc2FnZSopPiBhID0gU2V0QXJndW1lbnRQb2lu
dGVlPDE+KCptc2cpOworICAvLyBTZXRBcmd1bWVudFBvaW50ZWU8Tj4ocHJvdG8yX2J1ZmZlcikg
bWFrZXMgYSBjb3B5IG9mCisgIC8vIHByb3RvMl9idWZmZXIgcy50LiB0aGUgYWN0aW9uIHdvcmtz
IGV2ZW4gd2hlbiB0aGUgb3JpZ2luYWwKKyAgLy8gcHJvdG8yX2J1ZmZlciBoYXMgZGllZC4gIFdl
IGVuc3VyZSB0aGlzIGJlaGF2aW9yIGJ5IGRlbGV0aW5nIG1zZworICAvLyBiZWZvcmUgdXNpbmcg
dGhlIGFjdGlvbi4KKyAgZGVsZXRlIG1zZzsKKworICBGb29NZXNzYWdlIGRlc3Q7CisgIGRlc3Qu
c2V0X2ludF9maWVsZCgwKTsKKyAgYS5QZXJmb3JtKG1ha2VfdHVwbGUodHJ1ZSwgJmRlc3QpKTsK
KyAgRVhQRUNUX0VRKDIsIGRlc3QuaW50X2ZpZWxkKCkpOworICBFWFBFQ1RfRVEoImhpIiwgZGVz
dC5zdHJpbmdfZmllbGQoKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgU2V0QXJndW1lbnRQb2ludGVl
PE4+KHByb3RvMl9idWZmZXIpIHNldHMgdGhlCisvLyBwcm90bzI6Ok1lc3NhZ2UgdmFyaWFibGUg
cG9pbnRlZCB0byBieSB0aGUgTi10aCAoMC1iYXNlZCkgYXJndW1lbnQKKy8vIHRvIHByb3RvMl9i
dWZmZXIuCitURVNUKFNldEFyZ3VtZW50UG9pbnRlZVRlc3QsIFNldHNUaGVOdGhQb2ludGVlT2ZQ
cm90bzJCdWZmZXJCYXNlVHlwZSkgeworICB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Rm9vTWVz
c2FnZTsKKyAgRm9vTWVzc2FnZSogY29uc3QgbXNnID0gbmV3IEZvb01lc3NhZ2U7CisgIG1zZy0+
c2V0X2ludF9maWVsZCgyKTsKKyAgbXNnLT5zZXRfc3RyaW5nX2ZpZWxkKCJoaSIpOworICBGb29N
ZXNzYWdlIG9yaWdfbXNnOworICBvcmlnX21zZy5Db3B5RnJvbSgqbXNnKTsKKworICBBY3Rpb248
dm9pZChib29sLCA6OnByb3RvMjo6TWVzc2FnZSopPiBhID0gU2V0QXJndW1lbnRQb2ludGVlPDE+
KCptc2cpOworICAvLyBTZXRBcmd1bWVudFBvaW50ZWU8Tj4ocHJvdG8yX2J1ZmZlcikgbWFrZXMg
YSBjb3B5IG9mCisgIC8vIHByb3RvMl9idWZmZXIgcy50LiB0aGUgYWN0aW9uIHdvcmtzIGV2ZW4g
d2hlbiB0aGUgb3JpZ2luYWwKKyAgLy8gcHJvdG8yX2J1ZmZlciBoYXMgZGllZC4gIFdlIGVuc3Vy
ZSB0aGlzIGJlaGF2aW9yIGJ5IGRlbGV0aW5nIG1zZworICAvLyBiZWZvcmUgdXNpbmcgdGhlIGFj
dGlvbi4KKyAgZGVsZXRlIG1zZzsKKworICBGb29NZXNzYWdlIGRlc3Q7CisgIGRlc3Quc2V0X2lu
dF9maWVsZCgwKTsKKyAgOjpwcm90bzI6Ok1lc3NhZ2UqIGNvbnN0IGRlc3RfYmFzZSA9ICZkZXN0
OworICBhLlBlcmZvcm0obWFrZV90dXBsZSh0cnVlLCBkZXN0X2Jhc2UpKTsKKyAgRVhQRUNUX0VR
KDIsIGRlc3QuaW50X2ZpZWxkKCkpOworICBFWFBFQ1RfRVEoImhpIiwgZGVzdC5zdHJpbmdfZmll
bGQoKSk7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1BST1RPQlVGXworCisvLyBTYW1wbGUg
ZnVuY3Rpb25zIGFuZCBmdW5jdG9ycyBmb3IgdGVzdGluZyBJbnZva2UoKSBhbmQgZXRjLgoraW50
IE51bGxhcnkoKSB7IHJldHVybiAxOyB9CisKK2NsYXNzIE51bGxhcnlGdW5jdG9yIHsKKyBwdWJs
aWM6CisgIGludCBvcGVyYXRvcigpKCkgeyByZXR1cm4gMjsgfQorfTsKKworYm9vbCBnX2RvbmUg
PSBmYWxzZTsKK3ZvaWQgVm9pZE51bGxhcnkoKSB7IGdfZG9uZSA9IHRydWU7IH0KKworY2xhc3Mg
Vm9pZE51bGxhcnlGdW5jdG9yIHsKKyBwdWJsaWM6CisgIHZvaWQgb3BlcmF0b3IoKSgpIHsgZ19k
b25lID0gdHJ1ZTsgfQorfTsKKworY2xhc3MgRm9vIHsKKyBwdWJsaWM6CisgIEZvbygpIDogdmFs
dWVfKDEyMykge30KKworICBpbnQgTnVsbGFyeSgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlXzsgfQor
CisgcHJpdmF0ZToKKyAgaW50IHZhbHVlXzsKK307CisKKy8vIFRlc3RzIEludm9rZVdpdGhvdXRB
cmdzKGZ1bmN0aW9uKS4KK1RFU1QoSW52b2tlV2l0aG91dEFyZ3NUZXN0LCBGdW5jdGlvbikgewor
ICAvLyBBcyBhbiBhY3Rpb24gdGhhdCB0YWtlcyBvbmUgYXJndW1lbnQuCisgIEFjdGlvbjxpbnQo
aW50KT4gYSA9IEludm9rZVdpdGhvdXRBcmdzKE51bGxhcnkpOyAgLy8gTk9MSU5UCisgIEVYUEVD
VF9FUSgxLCBhLlBlcmZvcm0obWFrZV90dXBsZSgyKSkpOworCisgIC8vIEFzIGFuIGFjdGlvbiB0
aGF0IHRha2VzIHR3byBhcmd1bWVudHMuCisgIEFjdGlvbjxpbnQoaW50LCBkb3VibGUpPiBhMiA9
IEludm9rZVdpdGhvdXRBcmdzKE51bGxhcnkpOyAgLy8gTk9MSU5UCisgIEVYUEVDVF9FUSgxLCBh
Mi5QZXJmb3JtKG1ha2VfdHVwbGUoMiwgMy41KSkpOworCisgIC8vIEFzIGFuIGFjdGlvbiB0aGF0
IHJldHVybnMgdm9pZC4KKyAgQWN0aW9uPHZvaWQoaW50KT4gYTMgPSBJbnZva2VXaXRob3V0QXJn
cyhWb2lkTnVsbGFyeSk7ICAvLyBOT0xJTlQKKyAgZ19kb25lID0gZmFsc2U7CisgIGEzLlBlcmZv
cm0obWFrZV90dXBsZSgxKSk7CisgIEVYUEVDVF9UUlVFKGdfZG9uZSk7Cit9CisKKy8vIFRlc3Rz
IEludm9rZVdpdGhvdXRBcmdzKGZ1bmN0b3IpLgorVEVTVChJbnZva2VXaXRob3V0QXJnc1Rlc3Qs
IEZ1bmN0b3IpIHsKKyAgLy8gQXMgYW4gYWN0aW9uIHRoYXQgdGFrZXMgbm8gYXJndW1lbnQuCisg
IEFjdGlvbjxpbnQoKT4gYSA9IEludm9rZVdpdGhvdXRBcmdzKE51bGxhcnlGdW5jdG9yKCkpOyAg
Ly8gTk9MSU5UCisgIEVYUEVDVF9FUSgyLCBhLlBlcmZvcm0obWFrZV90dXBsZSgpKSk7CisKKyAg
Ly8gQXMgYW4gYWN0aW9uIHRoYXQgdGFrZXMgdGhyZWUgYXJndW1lbnRzLgorICBBY3Rpb248aW50
KGludCwgZG91YmxlLCBjaGFyKT4gYTIgPSAgLy8gTk9MSU5UCisgICAgICBJbnZva2VXaXRob3V0
QXJncyhOdWxsYXJ5RnVuY3RvcigpKTsKKyAgRVhQRUNUX0VRKDIsIGEyLlBlcmZvcm0obWFrZV90
dXBsZSgzLCAzLjUsICdhJykpKTsKKworICAvLyBBcyBhbiBhY3Rpb24gdGhhdCByZXR1cm5zIHZv
aWQuCisgIEFjdGlvbjx2b2lkKCk+IGEzID0gSW52b2tlV2l0aG91dEFyZ3MoVm9pZE51bGxhcnlG
dW5jdG9yKCkpOworICBnX2RvbmUgPSBmYWxzZTsKKyAgYTMuUGVyZm9ybShtYWtlX3R1cGxlKCkp
OworICBFWFBFQ1RfVFJVRShnX2RvbmUpOworfQorCisvLyBUZXN0cyBJbnZva2VXaXRob3V0QXJn
cyhvYmpfcHRyLCBtZXRob2QpLgorVEVTVChJbnZva2VXaXRob3V0QXJnc1Rlc3QsIE1ldGhvZCkg
eworICBGb28gZm9vOworICBBY3Rpb248aW50KGJvb2wsIGNoYXIpPiBhID0gIC8vIE5PTElOVAor
ICAgICAgSW52b2tlV2l0aG91dEFyZ3MoJmZvbywgJkZvbzo6TnVsbGFyeSk7CisgIEVYUEVDVF9F
USgxMjMsIGEuUGVyZm9ybShtYWtlX3R1cGxlKHRydWUsICdhJykpKTsKK30KKworLy8gVGVzdHMg
dXNpbmcgSWdub3JlUmVzdWx0KCkgb24gYSBwb2x5bW9ycGhpYyBhY3Rpb24uCitURVNUKElnbm9y
ZVJlc3VsdFRlc3QsIFBvbHltb3JwaGljQWN0aW9uKSB7CisgIEFjdGlvbjx2b2lkKGludCk+IGEg
PSBJZ25vcmVSZXN1bHQoUmV0dXJuKDUpKTsgIC8vIE5PTElOVAorICBhLlBlcmZvcm0obWFrZV90
dXBsZSgxKSk7Cit9CisKKy8vIFRlc3RzIHVzaW5nIElnbm9yZVJlc3VsdCgpIG9uIGEgbW9ub21v
cnBoaWMgYWN0aW9uLgorCitpbnQgUmV0dXJuT25lKCkgeworICBnX2RvbmUgPSB0cnVlOworICBy
ZXR1cm4gMTsKK30KKworVEVTVChJZ25vcmVSZXN1bHRUZXN0LCBNb25vbW9ycGhpY0FjdGlvbikg
eworICBnX2RvbmUgPSBmYWxzZTsKKyAgQWN0aW9uPHZvaWQoKT4gYSA9IElnbm9yZVJlc3VsdChJ
bnZva2UoUmV0dXJuT25lKSk7CisgIGEuUGVyZm9ybShtYWtlX3R1cGxlKCkpOworICBFWFBFQ1Rf
VFJVRShnX2RvbmUpOworfQorCisvLyBUZXN0cyB1c2luZyBJZ25vcmVSZXN1bHQoKSBvbiBhbiBh
Y3Rpb24gdGhhdCByZXR1cm5zIGEgY2xhc3MgdHlwZS4KKworTXlOb25EZWZhdWx0Q29uc3RydWN0
aWJsZSBSZXR1cm5NeU5vbkRlZmF1bHRDb25zdHJ1Y3RpYmxlKGRvdWJsZSAvKiB4ICovKSB7Cisg
IGdfZG9uZSA9IHRydWU7CisgIHJldHVybiBNeU5vbkRlZmF1bHRDb25zdHJ1Y3RpYmxlKDQyKTsK
K30KKworVEVTVChJZ25vcmVSZXN1bHRUZXN0LCBBY3Rpb25SZXR1cm5pbmdDbGFzcykgeworICBn
X2RvbmUgPSBmYWxzZTsKKyAgQWN0aW9uPHZvaWQoaW50KT4gYSA9CisgICAgICBJZ25vcmVSZXN1
bHQoSW52b2tlKFJldHVybk15Tm9uRGVmYXVsdENvbnN0cnVjdGlibGUpKTsgIC8vIE5PTElOVAor
ICBhLlBlcmZvcm0obWFrZV90dXBsZSgyKSk7CisgIEVYUEVDVF9UUlVFKGdfZG9uZSk7Cit9CisK
K1RFU1QoQXNzaWduVGVzdCwgSW50KSB7CisgIGludCB4ID0gMDsKKyAgQWN0aW9uPHZvaWQoaW50
KT4gYSA9IEFzc2lnbigmeCwgNSk7CisgIGEuUGVyZm9ybShtYWtlX3R1cGxlKDApKTsKKyAgRVhQ
RUNUX0VRKDUsIHgpOworfQorCitURVNUKEFzc2lnblRlc3QsIFN0cmluZykgeworICA6OnN0ZDo6
c3RyaW5nIHg7CisgIEFjdGlvbjx2b2lkKHZvaWQpPiBhID0gQXNzaWduKCZ4LCAiSGVsbG8sIHdv
cmxkIik7CisgIGEuUGVyZm9ybShtYWtlX3R1cGxlKCkpOworICBFWFBFQ1RfRVEoIkhlbGxvLCB3
b3JsZCIsIHgpOworfQorCitURVNUKEFzc2lnblRlc3QsIENvbXBhdGlibGVUeXBlcykgeworICBk
b3VibGUgeCA9IDA7CisgIEFjdGlvbjx2b2lkKGludCk+IGEgPSBBc3NpZ24oJngsIDUpOworICBh
LlBlcmZvcm0obWFrZV90dXBsZSgwKSk7CisgIEVYUEVDVF9ET1VCTEVfRVEoNSwgeCk7Cit9CisK
KyNpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKworY2xhc3MgU2V0RXJybm9BbmRSZXR1cm5U
ZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgdmlydHVhbCB2b2lk
IFNldFVwKCkgeyBlcnJubyA9IDA7IH0KKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeyBlcnJu
byA9IDA7IH0KK307CisKK1RFU1RfRihTZXRFcnJub0FuZFJldHVyblRlc3QsIEludCkgeworICBB
Y3Rpb248aW50KHZvaWQpPiBhID0gU2V0RXJybm9BbmRSZXR1cm4oRU5PVFRZLCAtNSk7CisgIEVY
UEVDVF9FUSgtNSwgYS5QZXJmb3JtKG1ha2VfdHVwbGUoKSkpOworICBFWFBFQ1RfRVEoRU5PVFRZ
LCBlcnJubyk7Cit9CisKK1RFU1RfRihTZXRFcnJub0FuZFJldHVyblRlc3QsIFB0cikgeworICBp
bnQgeDsKKyAgQWN0aW9uPGludCoodm9pZCk+IGEgPSBTZXRFcnJub0FuZFJldHVybihFTk9UVFks
ICZ4KTsKKyAgRVhQRUNUX0VRKCZ4LCBhLlBlcmZvcm0obWFrZV90dXBsZSgpKSk7CisgIEVYUEVD
VF9FUShFTk9UVFksIGVycm5vKTsKK30KKworVEVTVF9GKFNldEVycm5vQW5kUmV0dXJuVGVzdCwg
Q29tcGF0aWJsZVR5cGVzKSB7CisgIEFjdGlvbjxkb3VibGUoKT4gYSA9IFNldEVycm5vQW5kUmV0
dXJuKEVJTlZBTCwgNSk7CisgIEVYUEVDVF9ET1VCTEVfRVEoNS4wLCBhLlBlcmZvcm0obWFrZV90
dXBsZSgpKSk7CisgIEVYUEVDVF9FUShFSU5WQUwsIGVycm5vKTsKK30KKworI2VuZGlmICAvLyAh
R1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKworLy8gVGVzdHMgQnlSZWYoKS4KKworLy8gVGVzdHMg
dGhhdCBSZWZlcmVuY2VXcmFwcGVyPFQ+IGlzIGNvcHlhYmxlLgorVEVTVChCeVJlZlRlc3QsIElz
Q29weWFibGUpIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgczEgPSAiSGkiOworICBjb25zdCBzdGQ6
OnN0cmluZyBzMiA9ICJIZWxsbyI7CisKKyAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UmVmZXJlbmNl
V3JhcHBlcjxjb25zdCBzdGQ6OnN0cmluZz4gcmVmX3dyYXBwZXIgPQorICAgICAgQnlSZWYoczEp
OworICBjb25zdCBzdGQ6OnN0cmluZyYgcjEgPSByZWZfd3JhcHBlcjsKKyAgRVhQRUNUX0VRKCZz
MSwgJnIxKTsKKworICAvLyBBc3NpZ25zIGEgbmV3IHZhbHVlIHRvIHJlZl93cmFwcGVyLgorICBy
ZWZfd3JhcHBlciA9IEJ5UmVmKHMyKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcmIHIyID0gcmVmX3dy
YXBwZXI7CisgIEVYUEVDVF9FUSgmczIsICZyMik7CisKKyAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6
UmVmZXJlbmNlV3JhcHBlcjxjb25zdCBzdGQ6OnN0cmluZz4gcmVmX3dyYXBwZXIxID0KKyAgICAg
IEJ5UmVmKHMxKTsKKyAgLy8gQ29waWVzIHJlZl93cmFwcGVyMSB0byByZWZfd3JhcHBlci4KKyAg
cmVmX3dyYXBwZXIgPSByZWZfd3JhcHBlcjE7CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiByMyA9IHJl
Zl93cmFwcGVyOworICBFWFBFQ1RfRVEoJnMxLCAmcjMpOworfQorCisvLyBUZXN0cyB1c2luZyBC
eVJlZigpIG9uIGEgY29uc3QgdmFsdWUuCitURVNUKEJ5UmVmVGVzdCwgQ29uc3RWYWx1ZSkgewor
ICBjb25zdCBpbnQgbiA9IDA7CisgIC8vIGludCYgcmVmID0gQnlSZWYobik7ICAvLyBUaGlzIHNo
b3VsZG4ndCBjb21waWxlIC0gd2UgaGF2ZSBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBuZWdhdGl2ZSBjb21waWxhdGlvbiB0ZXN0IHRvIGNhdGNoIGl0LgorICBjb25zdCBpbnQmIGNv
bnN0X3JlZiA9IEJ5UmVmKG4pOworICBFWFBFQ1RfRVEoJm4sICZjb25zdF9yZWYpOworfQorCisv
LyBUZXN0cyB1c2luZyBCeVJlZigpIG9uIGEgbm9uLWNvbnN0IHZhbHVlLgorVEVTVChCeVJlZlRl
c3QsIE5vbkNvbnN0VmFsdWUpIHsKKyAgaW50IG4gPSAwOworCisgIC8vIEJ5UmVmKG4pIGNhbiBi
ZSB1c2VkIGFzIGVpdGhlciBhbiBpbnQmLAorICBpbnQmIHJlZiA9IEJ5UmVmKG4pOworICBFWFBF
Q1RfRVEoJm4sICZyZWYpOworCisgIC8vIG9yIGEgY29uc3QgaW50Ji4KKyAgY29uc3QgaW50JiBj
b25zdF9yZWYgPSBCeVJlZihuKTsKKyAgRVhQRUNUX0VRKCZuLCAmY29uc3RfcmVmKTsKK30KKwor
Ly8gVGVzdHMgZXhwbGljaXRseSBzcGVjaWZ5aW5nIHRoZSB0eXBlIHdoZW4gdXNpbmcgQnlSZWYo
KS4KK1RFU1QoQnlSZWZUZXN0LCBFeHBsaWNpdFR5cGUpIHsKKyAgaW50IG4gPSAwOworICBjb25z
dCBpbnQmIHIxID0gQnlSZWY8Y29uc3QgaW50PihuKTsKKyAgRVhQRUNUX0VRKCZuLCAmcjEpOwor
CisgIC8vIEJ5UmVmPGNoYXI+KG4pOyAgLy8gVGhpcyBzaG91bGRuJ3QgY29tcGlsZSAtIHdlIGhh
dmUgYSBuZWdhdGl2ZQorICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbXBpbGF0aW9uIHRlc3Qg
dG8gY2F0Y2ggaXQuCisKKyAgRGVyaXZlZCBkOworICBEZXJpdmVkJiByMiA9IEJ5UmVmPERlcml2
ZWQ+KGQpOworICBFWFBFQ1RfRVEoJmQsICZyMik7CisKKyAgY29uc3QgRGVyaXZlZCYgcjMgPSBC
eVJlZjxjb25zdCBEZXJpdmVkPihkKTsKKyAgRVhQRUNUX0VRKCZkLCAmcjMpOworCisgIEJhc2Um
IHI0ID0gQnlSZWY8QmFzZT4oZCk7CisgIEVYUEVDVF9FUSgmZCwgJnI0KTsKKworICBjb25zdCBC
YXNlJiByNSA9IEJ5UmVmPGNvbnN0IEJhc2U+KGQpOworICBFWFBFQ1RfRVEoJmQsICZyNSk7CisK
KyAgLy8gVGhlIGZvbGxvd2luZyBzaG91bGRuJ3QgY29tcGlsZSAtIHdlIGhhdmUgYSBuZWdhdGl2
ZSBjb21waWxhdGlvbgorICAvLyB0ZXN0IGZvciBpdC4KKyAgLy8KKyAgLy8gQmFzZSBiOworICAv
LyBCeVJlZjxEZXJpdmVkPihiKTsKK30KKworLy8gVGVzdHMgdGhhdCBHb29nbGUgTW9jayBwcmlu
dHMgZXhwcmVzc2lvbiBCeVJlZih4KSBhcyBhIHJlZmVyZW5jZSB0byB4LgorVEVTVChCeVJlZlRl
c3QsIFByaW50c0NvcnJlY3RseSkgeworICBpbnQgbiA9IDQyOworICA6OnN0ZDo6c3RyaW5nc3Ry
ZWFtIGV4cGVjdGVkLCBhY3R1YWw7CisgIHRlc3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxQcmlu
dGVyPGNvbnN0IGludCY+OjpQcmludChuLCAmZXhwZWN0ZWQpOworICB0ZXN0aW5nOjppbnRlcm5h
bDo6VW5pdmVyc2FsUHJpbnQoQnlSZWYobiksICZhY3R1YWwpOworICBFWFBFQ1RfRVEoZXhwZWN0
ZWQuc3RyKCksIGFjdHVhbC5zdHIoKSk7Cit9CisKKyNpZiBHVEVTVF9IQVNfU1REX1VOSVFVRV9Q
VFJfCisKK3N0ZDo6dW5pcXVlX3B0cjxpbnQ+IFVuaXF1ZVB0clNvdXJjZSgpIHsKKyAgcmV0dXJu
IHN0ZDo6dW5pcXVlX3B0cjxpbnQ+KG5ldyBpbnQoMTkpKTsKK30KKworc3RkOjp2ZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPGludD4+IFZlY3RvclVuaXF1ZVB0clNvdXJjZSgpIHsKKyAgc3RkOjp2ZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPGludD4+IG91dDsKKyAgb3V0LmVtcGxhY2VfYmFjayhuZXcgaW50
KDcpKTsKKyAgcmV0dXJuIG91dDsKK30KKworVEVTVChNb2NrTWV0aG9kVGVzdCwgQ2FuUmV0dXJu
TW92ZU9ubHlWYWx1ZV9SZXR1cm4pIHsKKyAgTW9ja0NsYXNzIG1vY2s7CisgIHN0ZDo6dW5pcXVl
X3B0cjxpbnQ+IGkobmV3IGludCgxOSkpOworICBFWFBFQ1RfQ0FMTChtb2NrLCBNYWtlVW5pcXVl
KCkpLldpbGxPbmNlKFJldHVybihCeU1vdmUoc3RkOjptb3ZlKGkpKSkpOworICBFWFBFQ1RfQ0FM
TChtb2NrLCBNYWtlVmVjdG9yVW5pcXVlKCkpCisgICAgICAuV2lsbE9uY2UoUmV0dXJuKEJ5TW92
ZShWZWN0b3JVbmlxdWVQdHJTb3VyY2UoKSkpKTsKKyAgRGVyaXZlZCogZCA9IG5ldyBEZXJpdmVk
OworICBFWFBFQ1RfQ0FMTChtb2NrLCBNYWtlVW5pcXVlQmFzZSgpKQorICAgICAgLldpbGxPbmNl
KFJldHVybihCeU1vdmUoc3RkOjp1bmlxdWVfcHRyPERlcml2ZWQ+KGQpKSkpOworCisgIHN0ZDo6
dW5pcXVlX3B0cjxpbnQ+IHJlc3VsdDEgPSBtb2NrLk1ha2VVbmlxdWUoKTsKKyAgRVhQRUNUX0VR
KDE5LCAqcmVzdWx0MSk7CisKKyAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPGludD4+IHZy
ZXN1bHQgPSBtb2NrLk1ha2VWZWN0b3JVbmlxdWUoKTsKKyAgRVhQRUNUX0VRKDF1LCB2cmVzdWx0
LnNpemUoKSk7CisgIEVYUEVDVF9ORShudWxscHRyLCB2cmVzdWx0WzBdKTsKKyAgRVhQRUNUX0VR
KDcsICp2cmVzdWx0WzBdKTsKKworICBzdGQ6OnVuaXF1ZV9wdHI8QmFzZT4gcmVzdWx0MiA9IG1v
Y2suTWFrZVVuaXF1ZUJhc2UoKTsKKyAgRVhQRUNUX0VRKGQsIHJlc3VsdDIuZ2V0KCkpOworfQor
CitURVNUKE1vY2tNZXRob2RUZXN0LCBDYW5SZXR1cm5Nb3ZlT25seVZhbHVlX0RvQWxsUmV0dXJu
KSB7CisgIHRlc3Rpbmc6Ok1vY2tGdW5jdGlvbjx2b2lkKCk+IG1vY2tfZnVuY3Rpb247CisgIE1v
Y2tDbGFzcyBtb2NrOworICBzdGQ6OnVuaXF1ZV9wdHI8aW50PiBpKG5ldyBpbnQoMTkpKTsKKyAg
RVhQRUNUX0NBTEwobW9ja19mdW5jdGlvbiwgQ2FsbCgpKTsKKyAgRVhQRUNUX0NBTEwobW9jaywg
TWFrZVVuaXF1ZSgpKS5XaWxsT25jZShEb0FsbCgKKyAgICAgIEludm9rZVdpdGhvdXRBcmdzKCZt
b2NrX2Z1bmN0aW9uLCAmdGVzdGluZzo6TW9ja0Z1bmN0aW9uPHZvaWQoKT46OkNhbGwpLAorICAg
ICAgUmV0dXJuKEJ5TW92ZShzdGQ6Om1vdmUoaSkpKSkpOworCisgIHN0ZDo6dW5pcXVlX3B0cjxp
bnQ+IHJlc3VsdDEgPSBtb2NrLk1ha2VVbmlxdWUoKTsKKyAgRVhQRUNUX0VRKDE5LCAqcmVzdWx0
MSk7Cit9CisKK1RFU1QoTW9ja01ldGhvZFRlc3QsIENhblJldHVybk1vdmVPbmx5VmFsdWVfSW52
b2tlKSB7CisgIE1vY2tDbGFzcyBtb2NrOworCisgIC8vIENoZWNrIGRlZmF1bHQgdmFsdWUKKyAg
RGVmYXVsdFZhbHVlPHN0ZDo6dW5pcXVlX3B0cjxpbnQ+Pjo6U2V0RmFjdG9yeShbXSB7CisgICAg
cmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxpbnQ+KG5ldyBpbnQoNDIpKTsKKyAgfSk7CisgIEVYUEVD
VF9FUSg0MiwgKm1vY2suTWFrZVVuaXF1ZSgpKTsKKworICBFWFBFQ1RfQ0FMTChtb2NrLCBNYWtl
VW5pcXVlKCkpLldpbGxSZXBlYXRlZGx5KEludm9rZShVbmlxdWVQdHJTb3VyY2UpKTsKKyAgRVhQ
RUNUX0NBTEwobW9jaywgTWFrZVZlY3RvclVuaXF1ZSgpKQorICAgICAgLldpbGxSZXBlYXRlZGx5
KEludm9rZShWZWN0b3JVbmlxdWVQdHJTb3VyY2UpKTsKKyAgc3RkOjp1bmlxdWVfcHRyPGludD4g
cmVzdWx0MSA9IG1vY2suTWFrZVVuaXF1ZSgpOworICBFWFBFQ1RfRVEoMTksICpyZXN1bHQxKTsK
KyAgc3RkOjp1bmlxdWVfcHRyPGludD4gcmVzdWx0MiA9IG1vY2suTWFrZVVuaXF1ZSgpOworICBF
WFBFQ1RfRVEoMTksICpyZXN1bHQyKTsKKyAgRVhQRUNUX05FKHJlc3VsdDEsIHJlc3VsdDIpOwor
CisgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxpbnQ+PiB2cmVzdWx0ID0gbW9jay5NYWtl
VmVjdG9yVW5pcXVlKCk7CisgIEVYUEVDVF9FUSgxdSwgdnJlc3VsdC5zaXplKCkpOworICBFWFBF
Q1RfTkUobnVsbHB0ciwgdnJlc3VsdFswXSk7CisgIEVYUEVDVF9FUSg3LCAqdnJlc3VsdFswXSk7
Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9VTklRVUVfUFRSXworCit9ICAvLyBVbm5h
bWVkIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9jay1jYXJkaW5h
bGl0aWVzX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2NrLWNhcmRpbmFsaXRpZXNfdGVz
dC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42NDgxNWU1N2EzOTA2ZTgwMTU0ODA2MDIzMjI1Y2ZhYjNiZjY4ZDUz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9jay1jYXJkaW5hbGl0aWVz
X3Rlc3QuY2MKQEAgLTAsMCArMSw0MjggQEAKKy8vIENvcHlyaWdodCAyMDA3LCBHb29nbGUgSW5j
LgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8g
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKy8vCisvLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBX
YW4pCisKKy8vIEdvb2dsZSBNb2NrIC0gYSBmcmFtZXdvcmsgZm9yIHdyaXRpbmcgQysrIG1vY2sg
Y2xhc3Nlcy4KKy8vCisvLyBUaGlzIGZpbGUgdGVzdHMgdGhlIGJ1aWx0LWluIGNhcmRpbmFsaXRp
ZXMuCisKKyNpbmNsdWRlICJnbW9jay9nbW9jay5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0Lmgi
CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiCisKK25hbWVzcGFjZSB7CisKK3VzaW5nIHN0
ZDo6c3RyaW5nc3RyZWFtOwordXNpbmcgdGVzdGluZzo6QW55TnVtYmVyOwordXNpbmcgdGVzdGlu
Zzo6QXRMZWFzdDsKK3VzaW5nIHRlc3Rpbmc6OkF0TW9zdDsKK3VzaW5nIHRlc3Rpbmc6OkJldHdl
ZW47Cit1c2luZyB0ZXN0aW5nOjpDYXJkaW5hbGl0eTsKK3VzaW5nIHRlc3Rpbmc6OkNhcmRpbmFs
aXR5SW50ZXJmYWNlOwordXNpbmcgdGVzdGluZzo6RXhhY3RseTsKK3VzaW5nIHRlc3Rpbmc6Oklz
U3Vic3RyaW5nOwordXNpbmcgdGVzdGluZzo6TWFrZUNhcmRpbmFsaXR5OworCitjbGFzcyBNb2Nr
Rm9vIHsKKyBwdWJsaWM6CisgIE1vY2tGb28oKSB7fQorICBNT0NLX01FVEhPRDAoQmFyLCBpbnQo
KSk7ICAvLyBOT0xJTlQKKworIHByaXZhdGU6CisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FT
U0lHTl8oTW9ja0Zvbyk7Cit9OworCisvLyBUZXN0cyB0aGF0IENhcmRpbmFsaXR5IG9iamVjdHMg
Y2FuIGJlIGRlZmF1bHQgY29uc3RydWN0ZWQuCitURVNUKENhcmRpbmFsaXR5VGVzdCwgSXNEZWZh
dWx0Q29uc3RydWN0YWJsZSkgeworICBDYXJkaW5hbGl0eSBjOworfQorCisvLyBUZXN0cyB0aGF0
IENhcmRpbmFsaXR5IG9iamVjdHMgYXJlIGNvcHlhYmxlLgorVEVTVChDYXJkaW5hbGl0eVRlc3Qs
IElzQ29weWFibGUpIHsKKyAgLy8gVGVzdHMgdGhlIGNvcHkgY29uc3RydWN0b3IuCisgIENhcmRp
bmFsaXR5IGMgPSBFeGFjdGx5KDEpOworICBFWFBFQ1RfRkFMU0UoYy5Jc1NhdGlzZmllZEJ5Q2Fs
bENvdW50KDApKTsKKyAgRVhQRUNUX1RSVUUoYy5Jc1NhdGlzZmllZEJ5Q2FsbENvdW50KDEpKTsK
KyAgRVhQRUNUX1RSVUUoYy5Jc1NhdHVyYXRlZEJ5Q2FsbENvdW50KDEpKTsKKworICAvLyBUZXN0
cyB0aGUgYXNzaWdubWVudCBvcGVyYXRvci4KKyAgYyA9IEV4YWN0bHkoMik7CisgIEVYUEVDVF9G
QUxTRShjLklzU2F0aXNmaWVkQnlDYWxsQ291bnQoMSkpOworICBFWFBFQ1RfVFJVRShjLklzU2F0
aXNmaWVkQnlDYWxsQ291bnQoMikpOworICBFWFBFQ1RfVFJVRShjLklzU2F0dXJhdGVkQnlDYWxs
Q291bnQoMikpOworfQorCitURVNUKENhcmRpbmFsaXR5VGVzdCwgSXNPdmVyU2F0dXJhdGVkQnlD
YWxsQ291bnRXb3JrcykgeworICBjb25zdCBDYXJkaW5hbGl0eSBjID0gQXRNb3N0KDUpOworICBF
WFBFQ1RfRkFMU0UoYy5Jc092ZXJTYXR1cmF0ZWRCeUNhbGxDb3VudCg0KSk7CisgIEVYUEVDVF9G
QUxTRShjLklzT3ZlclNhdHVyYXRlZEJ5Q2FsbENvdW50KDUpKTsKKyAgRVhQRUNUX1RSVUUoYy5J
c092ZXJTYXR1cmF0ZWRCeUNhbGxDb3VudCg2KSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgQ2FyZGlu
YWxpdHk6OkRlc2NyaWJlQWN0dWFsQ2FsbENvdW50VG8oKSBjcmVhdGVzIHRoZQorLy8gY29ycmVj
dCBkZXNjcmlwdGlvbi4KK1RFU1QoQ2FyZGluYWxpdHlUZXN0LCBDYW5EZXNjcmliZUFjdHVhbENh
bGxDb3VudCkgeworICBzdHJpbmdzdHJlYW0gc3MwOworICBDYXJkaW5hbGl0eTo6RGVzY3JpYmVB
Y3R1YWxDYWxsQ291bnRUbygwLCAmc3MwKTsKKyAgRVhQRUNUX0VRKCJuZXZlciBjYWxsZWQiLCBz
czAuc3RyKCkpOworCisgIHN0cmluZ3N0cmVhbSBzczE7CisgIENhcmRpbmFsaXR5OjpEZXNjcmli
ZUFjdHVhbENhbGxDb3VudFRvKDEsICZzczEpOworICBFWFBFQ1RfRVEoImNhbGxlZCBvbmNlIiwg
c3MxLnN0cigpKTsKKworICBzdHJpbmdzdHJlYW0gc3MyOworICBDYXJkaW5hbGl0eTo6RGVzY3Jp
YmVBY3R1YWxDYWxsQ291bnRUbygyLCAmc3MyKTsKKyAgRVhQRUNUX0VRKCJjYWxsZWQgdHdpY2Ui
LCBzczIuc3RyKCkpOworCisgIHN0cmluZ3N0cmVhbSBzczM7CisgIENhcmRpbmFsaXR5OjpEZXNj
cmliZUFjdHVhbENhbGxDb3VudFRvKDMsICZzczMpOworICBFWFBFQ1RfRVEoImNhbGxlZCAzIHRp
bWVzIiwgc3MzLnN0cigpKTsKK30KKworLy8gVGVzdHMgQW55TnVtYmVyKCkKK1RFU1QoQW55TnVt
YmVyLCBXb3JrcykgeworICBjb25zdCBDYXJkaW5hbGl0eSBjID0gQW55TnVtYmVyKCk7CisgIEVY
UEVDVF9UUlVFKGMuSXNTYXRpc2ZpZWRCeUNhbGxDb3VudCgwKSk7CisgIEVYUEVDVF9GQUxTRShj
LklzU2F0dXJhdGVkQnlDYWxsQ291bnQoMCkpOworCisgIEVYUEVDVF9UUlVFKGMuSXNTYXRpc2Zp
ZWRCeUNhbGxDb3VudCgxKSk7CisgIEVYUEVDVF9GQUxTRShjLklzU2F0dXJhdGVkQnlDYWxsQ291
bnQoMSkpOworCisgIEVYUEVDVF9UUlVFKGMuSXNTYXRpc2ZpZWRCeUNhbGxDb3VudCg5KSk7Cisg
IEVYUEVDVF9GQUxTRShjLklzU2F0dXJhdGVkQnlDYWxsQ291bnQoOSkpOworCisgIHN0cmluZ3N0
cmVhbSBzczsKKyAgYy5EZXNjcmliZVRvKCZzcyk7CisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoSXNT
dWJzdHJpbmcsICJjYWxsZWQgYW55IG51bWJlciBvZiB0aW1lcyIsCisgICAgICAgICAgICAgICAg
ICAgICAgc3Muc3RyKCkpOworfQorCitURVNUKEFueU51bWJlclRlc3QsIEhhc0NvcnJlY3RCb3Vu
ZHMpIHsKKyAgY29uc3QgQ2FyZGluYWxpdHkgYyA9IEFueU51bWJlcigpOworICBFWFBFQ1RfRVEo
MCwgYy5Db25zZXJ2YXRpdmVMb3dlckJvdW5kKCkpOworICBFWFBFQ1RfRVEoSU5UX01BWCwgYy5D
b25zZXJ2YXRpdmVVcHBlckJvdW5kKCkpOworfQorCisvLyBUZXN0cyBBdExlYXN0KG4pLgorCitU
RVNUKEF0TGVhc3RUZXN0LCBPbk5lZ2F0aXZlTnVtYmVyKSB7CisgIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEF0TGVhc3QoLTEpOworICB9LCAiVGhlIGludm9jYXRp
b24gbG93ZXIgYm91bmQgbXVzdCBiZSA+PSAwIik7Cit9CisKK1RFU1QoQXRMZWFzdFRlc3QsIE9u
WmVybykgeworICBjb25zdCBDYXJkaW5hbGl0eSBjID0gQXRMZWFzdCgwKTsKKyAgRVhQRUNUX1RS
VUUoYy5Jc1NhdGlzZmllZEJ5Q2FsbENvdW50KDApKTsKKyAgRVhQRUNUX0ZBTFNFKGMuSXNTYXR1
cmF0ZWRCeUNhbGxDb3VudCgwKSk7CisKKyAgRVhQRUNUX1RSVUUoYy5Jc1NhdGlzZmllZEJ5Q2Fs
bENvdW50KDEpKTsKKyAgRVhQRUNUX0ZBTFNFKGMuSXNTYXR1cmF0ZWRCeUNhbGxDb3VudCgxKSk7
CisKKyAgc3RyaW5nc3RyZWFtIHNzOworICBjLkRlc2NyaWJlVG8oJnNzKTsKKyAgRVhQRUNUX1BS
RURfRk9STUFUMihJc1N1YnN0cmluZywgImFueSBudW1iZXIgb2YgdGltZXMiLAorICAgICAgICAg
ICAgICAgICAgICAgIHNzLnN0cigpKTsKK30KKworVEVTVChBdExlYXN0VGVzdCwgT25Qb3NpdGl2
ZU51bWJlcikgeworICBjb25zdCBDYXJkaW5hbGl0eSBjID0gQXRMZWFzdCgyKTsKKyAgRVhQRUNU
X0ZBTFNFKGMuSXNTYXRpc2ZpZWRCeUNhbGxDb3VudCgwKSk7CisgIEVYUEVDVF9GQUxTRShjLklz
U2F0dXJhdGVkQnlDYWxsQ291bnQoMCkpOworCisgIEVYUEVDVF9GQUxTRShjLklzU2F0aXNmaWVk
QnlDYWxsQ291bnQoMSkpOworICBFWFBFQ1RfRkFMU0UoYy5Jc1NhdHVyYXRlZEJ5Q2FsbENvdW50
KDEpKTsKKworICBFWFBFQ1RfVFJVRShjLklzU2F0aXNmaWVkQnlDYWxsQ291bnQoMikpOworICBF
WFBFQ1RfRkFMU0UoYy5Jc1NhdHVyYXRlZEJ5Q2FsbENvdW50KDIpKTsKKworICBzdHJpbmdzdHJl
YW0gc3MxOworICBBdExlYXN0KDEpLkRlc2NyaWJlVG8oJnNzMSk7CisgIEVYUEVDVF9QUkVEX0ZP
Uk1BVDIoSXNTdWJzdHJpbmcsICJhdCBsZWFzdCBvbmNlIiwKKyAgICAgICAgICAgICAgICAgICAg
ICBzczEuc3RyKCkpOworCisgIHN0cmluZ3N0cmVhbSBzczI7CisgIGMuRGVzY3JpYmVUbygmc3My
KTsKKyAgRVhQRUNUX1BSRURfRk9STUFUMihJc1N1YnN0cmluZywgImF0IGxlYXN0IHR3aWNlIiwK
KyAgICAgICAgICAgICAgICAgICAgICBzczIuc3RyKCkpOworCisgIHN0cmluZ3N0cmVhbSBzczM7
CisgIEF0TGVhc3QoMykuRGVzY3JpYmVUbygmc3MzKTsKKyAgRVhQRUNUX1BSRURfRk9STUFUMihJ
c1N1YnN0cmluZywgImF0IGxlYXN0IDMgdGltZXMiLAorICAgICAgICAgICAgICAgICAgICAgIHNz
My5zdHIoKSk7Cit9CisKK1RFU1QoQXRMZWFzdFRlc3QsIEhhc0NvcnJlY3RCb3VuZHMpIHsKKyAg
Y29uc3QgQ2FyZGluYWxpdHkgYyA9IEF0TGVhc3QoMik7CisgIEVYUEVDVF9FUSgyLCBjLkNvbnNl
cnZhdGl2ZUxvd2VyQm91bmQoKSk7CisgIEVYUEVDVF9FUShJTlRfTUFYLCBjLkNvbnNlcnZhdGl2
ZVVwcGVyQm91bmQoKSk7Cit9CisKKy8vIFRlc3RzIEF0TW9zdChuKS4KKworVEVTVChBdE1vc3RU
ZXN0LCBPbk5lZ2F0aXZlTnVtYmVyKSB7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8v
IE5PTElOVAorICAgIEF0TW9zdCgtMSk7CisgIH0sICJUaGUgaW52b2NhdGlvbiB1cHBlciBib3Vu
ZCBtdXN0IGJlID49IDAiKTsKK30KKworVEVTVChBdE1vc3RUZXN0LCBPblplcm8pIHsKKyAgY29u
c3QgQ2FyZGluYWxpdHkgYyA9IEF0TW9zdCgwKTsKKyAgRVhQRUNUX1RSVUUoYy5Jc1NhdGlzZmll
ZEJ5Q2FsbENvdW50KDApKTsKKyAgRVhQRUNUX1RSVUUoYy5Jc1NhdHVyYXRlZEJ5Q2FsbENvdW50
KDApKTsKKworICBFWFBFQ1RfRkFMU0UoYy5Jc1NhdGlzZmllZEJ5Q2FsbENvdW50KDEpKTsKKyAg
RVhQRUNUX1RSVUUoYy5Jc1NhdHVyYXRlZEJ5Q2FsbENvdW50KDEpKTsKKworICBzdHJpbmdzdHJl
YW0gc3M7CisgIGMuRGVzY3JpYmVUbygmc3MpOworICBFWFBFQ1RfUFJFRF9GT1JNQVQyKElzU3Vi
c3RyaW5nLCAibmV2ZXIgY2FsbGVkIiwKKyAgICAgICAgICAgICAgICAgICAgICBzcy5zdHIoKSk7
Cit9CisKK1RFU1QoQXRNb3N0VGVzdCwgT25Qb3NpdGl2ZU51bWJlcikgeworICBjb25zdCBDYXJk
aW5hbGl0eSBjID0gQXRNb3N0KDIpOworICBFWFBFQ1RfVFJVRShjLklzU2F0aXNmaWVkQnlDYWxs
Q291bnQoMCkpOworICBFWFBFQ1RfRkFMU0UoYy5Jc1NhdHVyYXRlZEJ5Q2FsbENvdW50KDApKTsK
KworICBFWFBFQ1RfVFJVRShjLklzU2F0aXNmaWVkQnlDYWxsQ291bnQoMSkpOworICBFWFBFQ1Rf
RkFMU0UoYy5Jc1NhdHVyYXRlZEJ5Q2FsbENvdW50KDEpKTsKKworICBFWFBFQ1RfVFJVRShjLklz
U2F0aXNmaWVkQnlDYWxsQ291bnQoMikpOworICBFWFBFQ1RfVFJVRShjLklzU2F0dXJhdGVkQnlD
YWxsQ291bnQoMikpOworCisgIHN0cmluZ3N0cmVhbSBzczE7CisgIEF0TW9zdCgxKS5EZXNjcmli
ZVRvKCZzczEpOworICBFWFBFQ1RfUFJFRF9GT1JNQVQyKElzU3Vic3RyaW5nLCAiY2FsbGVkIGF0
IG1vc3Qgb25jZSIsCisgICAgICAgICAgICAgICAgICAgICAgc3MxLnN0cigpKTsKKworICBzdHJp
bmdzdHJlYW0gc3MyOworICBjLkRlc2NyaWJlVG8oJnNzMik7CisgIEVYUEVDVF9QUkVEX0ZPUk1B
VDIoSXNTdWJzdHJpbmcsICJjYWxsZWQgYXQgbW9zdCB0d2ljZSIsCisgICAgICAgICAgICAgICAg
ICAgICAgc3MyLnN0cigpKTsKKworICBzdHJpbmdzdHJlYW0gc3MzOworICBBdE1vc3QoMykuRGVz
Y3JpYmVUbygmc3MzKTsKKyAgRVhQRUNUX1BSRURfRk9STUFUMihJc1N1YnN0cmluZywgImNhbGxl
ZCBhdCBtb3N0IDMgdGltZXMiLAorICAgICAgICAgICAgICAgICAgICAgIHNzMy5zdHIoKSk7Cit9
CisKK1RFU1QoQXRNb3N0VGVzdCwgSGFzQ29ycmVjdEJvdW5kcykgeworICBjb25zdCBDYXJkaW5h
bGl0eSBjID0gQXRNb3N0KDIpOworICBFWFBFQ1RfRVEoMCwgYy5Db25zZXJ2YXRpdmVMb3dlckJv
dW5kKCkpOworICBFWFBFQ1RfRVEoMiwgYy5Db25zZXJ2YXRpdmVVcHBlckJvdW5kKCkpOworfQor
CisvLyBUZXN0cyBCZXR3ZWVuKG0sIG4pLgorCitURVNUKEJldHdlZW5UZXN0LCBPbk5lZ2F0aXZl
U3RhcnQpIHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAgQmV0
d2VlbigtMSwgMik7CisgIH0sICJUaGUgaW52b2NhdGlvbiBsb3dlciBib3VuZCBtdXN0IGJlID49
IDAsIGJ1dCBpcyBhY3R1YWxseSAtMSIpOworfQorCitURVNUKEJldHdlZW5UZXN0LCBPbk5lZ2F0
aXZlRW5kKSB7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEJl
dHdlZW4oMSwgLTIpOworICB9LCAiVGhlIGludm9jYXRpb24gdXBwZXIgYm91bmQgbXVzdCBiZSA+
PSAwLCBidXQgaXMgYWN0dWFsbHkgLTIiKTsKK30KKworVEVTVChCZXR3ZWVuVGVzdCwgT25TdGFy
dEJpZ2dlclRoYW5FbmQpIHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5U
CisgICAgQmV0d2VlbigyLCAxKTsKKyAgfSwgIlRoZSBpbnZvY2F0aW9uIHVwcGVyIGJvdW5kICgx
KSBtdXN0IGJlID49ICIKKyAgICAgInRoZSBpbnZvY2F0aW9uIGxvd2VyIGJvdW5kICgyKSIpOwor
fQorCitURVNUKEJldHdlZW5UZXN0LCBPblplcm9TdGFydEFuZFplcm9FbmQpIHsKKyAgY29uc3Qg
Q2FyZGluYWxpdHkgYyA9IEJldHdlZW4oMCwgMCk7CisKKyAgRVhQRUNUX1RSVUUoYy5Jc1NhdGlz
ZmllZEJ5Q2FsbENvdW50KDApKTsKKyAgRVhQRUNUX1RSVUUoYy5Jc1NhdHVyYXRlZEJ5Q2FsbENv
dW50KDApKTsKKworICBFWFBFQ1RfRkFMU0UoYy5Jc1NhdGlzZmllZEJ5Q2FsbENvdW50KDEpKTsK
KyAgRVhQRUNUX1RSVUUoYy5Jc1NhdHVyYXRlZEJ5Q2FsbENvdW50KDEpKTsKKworICBzdHJpbmdz
dHJlYW0gc3M7CisgIGMuRGVzY3JpYmVUbygmc3MpOworICBFWFBFQ1RfUFJFRF9GT1JNQVQyKElz
U3Vic3RyaW5nLCAibmV2ZXIgY2FsbGVkIiwKKyAgICAgICAgICAgICAgICAgICAgICBzcy5zdHIo
KSk7Cit9CisKK1RFU1QoQmV0d2VlblRlc3QsIE9uWmVyb1N0YXJ0QW5kTm9uWmVyb0VuZCkgewor
ICBjb25zdCBDYXJkaW5hbGl0eSBjID0gQmV0d2VlbigwLCAyKTsKKworICBFWFBFQ1RfVFJVRShj
LklzU2F0aXNmaWVkQnlDYWxsQ291bnQoMCkpOworICBFWFBFQ1RfRkFMU0UoYy5Jc1NhdHVyYXRl
ZEJ5Q2FsbENvdW50KDApKTsKKworICBFWFBFQ1RfVFJVRShjLklzU2F0aXNmaWVkQnlDYWxsQ291
bnQoMikpOworICBFWFBFQ1RfVFJVRShjLklzU2F0dXJhdGVkQnlDYWxsQ291bnQoMikpOworCisg
IEVYUEVDVF9GQUxTRShjLklzU2F0aXNmaWVkQnlDYWxsQ291bnQoNCkpOworICBFWFBFQ1RfVFJV
RShjLklzU2F0dXJhdGVkQnlDYWxsQ291bnQoNCkpOworCisgIHN0cmluZ3N0cmVhbSBzczsKKyAg
Yy5EZXNjcmliZVRvKCZzcyk7CisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoSXNTdWJzdHJpbmcsICJj
YWxsZWQgYXQgbW9zdCB0d2ljZSIsCisgICAgICAgICAgICAgICAgICAgICAgc3Muc3RyKCkpOwor
fQorCitURVNUKEJldHdlZW5UZXN0LCBPblNhbWVTdGFydEFuZEVuZCkgeworICBjb25zdCBDYXJk
aW5hbGl0eSBjID0gQmV0d2VlbigzLCAzKTsKKworICBFWFBFQ1RfRkFMU0UoYy5Jc1NhdGlzZmll
ZEJ5Q2FsbENvdW50KDIpKTsKKyAgRVhQRUNUX0ZBTFNFKGMuSXNTYXR1cmF0ZWRCeUNhbGxDb3Vu
dCgyKSk7CisKKyAgRVhQRUNUX1RSVUUoYy5Jc1NhdGlzZmllZEJ5Q2FsbENvdW50KDMpKTsKKyAg
RVhQRUNUX1RSVUUoYy5Jc1NhdHVyYXRlZEJ5Q2FsbENvdW50KDMpKTsKKworICBFWFBFQ1RfRkFM
U0UoYy5Jc1NhdGlzZmllZEJ5Q2FsbENvdW50KDQpKTsKKyAgRVhQRUNUX1RSVUUoYy5Jc1NhdHVy
YXRlZEJ5Q2FsbENvdW50KDQpKTsKKworICBzdHJpbmdzdHJlYW0gc3M7CisgIGMuRGVzY3JpYmVU
bygmc3MpOworICBFWFBFQ1RfUFJFRF9GT1JNQVQyKElzU3Vic3RyaW5nLCAiY2FsbGVkIDMgdGlt
ZXMiLAorICAgICAgICAgICAgICAgICAgICAgIHNzLnN0cigpKTsKK30KKworVEVTVChCZXR3ZWVu
VGVzdCwgT25EaWZmZXJlbnRTdGFydEFuZEVuZCkgeworICBjb25zdCBDYXJkaW5hbGl0eSBjID0g
QmV0d2VlbigzLCA1KTsKKworICBFWFBFQ1RfRkFMU0UoYy5Jc1NhdGlzZmllZEJ5Q2FsbENvdW50
KDIpKTsKKyAgRVhQRUNUX0ZBTFNFKGMuSXNTYXR1cmF0ZWRCeUNhbGxDb3VudCgyKSk7CisKKyAg
RVhQRUNUX1RSVUUoYy5Jc1NhdGlzZmllZEJ5Q2FsbENvdW50KDMpKTsKKyAgRVhQRUNUX0ZBTFNF
KGMuSXNTYXR1cmF0ZWRCeUNhbGxDb3VudCgzKSk7CisKKyAgRVhQRUNUX1RSVUUoYy5Jc1NhdGlz
ZmllZEJ5Q2FsbENvdW50KDUpKTsKKyAgRVhQRUNUX1RSVUUoYy5Jc1NhdHVyYXRlZEJ5Q2FsbENv
dW50KDUpKTsKKworICBFWFBFQ1RfRkFMU0UoYy5Jc1NhdGlzZmllZEJ5Q2FsbENvdW50KDYpKTsK
KyAgRVhQRUNUX1RSVUUoYy5Jc1NhdHVyYXRlZEJ5Q2FsbENvdW50KDYpKTsKKworICBzdHJpbmdz
dHJlYW0gc3M7CisgIGMuRGVzY3JpYmVUbygmc3MpOworICBFWFBFQ1RfUFJFRF9GT1JNQVQyKElz
U3Vic3RyaW5nLCAiY2FsbGVkIGJldHdlZW4gMyBhbmQgNSB0aW1lcyIsCisgICAgICAgICAgICAg
ICAgICAgICAgc3Muc3RyKCkpOworfQorCitURVNUKEJldHdlZW5UZXN0LCBIYXNDb3JyZWN0Qm91
bmRzKSB7CisgIGNvbnN0IENhcmRpbmFsaXR5IGMgPSBCZXR3ZWVuKDMsIDUpOworICBFWFBFQ1Rf
RVEoMywgYy5Db25zZXJ2YXRpdmVMb3dlckJvdW5kKCkpOworICBFWFBFQ1RfRVEoNSwgYy5Db25z
ZXJ2YXRpdmVVcHBlckJvdW5kKCkpOworfQorCisvLyBUZXN0cyBFeGFjdGx5KG4pLgorCitURVNU
KEV4YWN0bHlUZXN0LCBPbk5lZ2F0aXZlTnVtYmVyKSB7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKHsgIC8vIE5PTElOVAorICAgIEV4YWN0bHkoLTEpOworICB9LCAiVGhlIGludm9jYXRpb24g
bG93ZXIgYm91bmQgbXVzdCBiZSA+PSAwIik7Cit9CisKK1RFU1QoRXhhY3RseVRlc3QsIE9uWmVy
bykgeworICBjb25zdCBDYXJkaW5hbGl0eSBjID0gRXhhY3RseSgwKTsKKyAgRVhQRUNUX1RSVUUo
Yy5Jc1NhdGlzZmllZEJ5Q2FsbENvdW50KDApKTsKKyAgRVhQRUNUX1RSVUUoYy5Jc1NhdHVyYXRl
ZEJ5Q2FsbENvdW50KDApKTsKKworICBFWFBFQ1RfRkFMU0UoYy5Jc1NhdGlzZmllZEJ5Q2FsbENv
dW50KDEpKTsKKyAgRVhQRUNUX1RSVUUoYy5Jc1NhdHVyYXRlZEJ5Q2FsbENvdW50KDEpKTsKKwor
ICBzdHJpbmdzdHJlYW0gc3M7CisgIGMuRGVzY3JpYmVUbygmc3MpOworICBFWFBFQ1RfUFJFRF9G
T1JNQVQyKElzU3Vic3RyaW5nLCAibmV2ZXIgY2FsbGVkIiwKKyAgICAgICAgICAgICAgICAgICAg
ICBzcy5zdHIoKSk7Cit9CisKK1RFU1QoRXhhY3RseVRlc3QsIE9uUG9zaXRpdmVOdW1iZXIpIHsK
KyAgY29uc3QgQ2FyZGluYWxpdHkgYyA9IEV4YWN0bHkoMik7CisgIEVYUEVDVF9GQUxTRShjLklz
U2F0aXNmaWVkQnlDYWxsQ291bnQoMCkpOworICBFWFBFQ1RfRkFMU0UoYy5Jc1NhdHVyYXRlZEJ5
Q2FsbENvdW50KDApKTsKKworICBFWFBFQ1RfVFJVRShjLklzU2F0aXNmaWVkQnlDYWxsQ291bnQo
MikpOworICBFWFBFQ1RfVFJVRShjLklzU2F0dXJhdGVkQnlDYWxsQ291bnQoMikpOworCisgIHN0
cmluZ3N0cmVhbSBzczE7CisgIEV4YWN0bHkoMSkuRGVzY3JpYmVUbygmc3MxKTsKKyAgRVhQRUNU
X1BSRURfRk9STUFUMihJc1N1YnN0cmluZywgImNhbGxlZCBvbmNlIiwKKyAgICAgICAgICAgICAg
ICAgICAgICBzczEuc3RyKCkpOworCisgIHN0cmluZ3N0cmVhbSBzczI7CisgIGMuRGVzY3JpYmVU
bygmc3MyKTsKKyAgRVhQRUNUX1BSRURfRk9STUFUMihJc1N1YnN0cmluZywgImNhbGxlZCB0d2lj
ZSIsCisgICAgICAgICAgICAgICAgICAgICAgc3MyLnN0cigpKTsKKworICBzdHJpbmdzdHJlYW0g
c3MzOworICBFeGFjdGx5KDMpLkRlc2NyaWJlVG8oJnNzMyk7CisgIEVYUEVDVF9QUkVEX0ZPUk1B
VDIoSXNTdWJzdHJpbmcsICJjYWxsZWQgMyB0aW1lcyIsCisgICAgICAgICAgICAgICAgICAgICAg
c3MzLnN0cigpKTsKK30KKworVEVTVChFeGFjdGx5VGVzdCwgSGFzQ29ycmVjdEJvdW5kcykgewor
ICBjb25zdCBDYXJkaW5hbGl0eSBjID0gRXhhY3RseSgzKTsKKyAgRVhQRUNUX0VRKDMsIGMuQ29u
c2VydmF0aXZlTG93ZXJCb3VuZCgpKTsKKyAgRVhQRUNUX0VRKDMsIGMuQ29uc2VydmF0aXZlVXBw
ZXJCb3VuZCgpKTsKK30KKworLy8gVGVzdHMgdGhhdCBhIHVzZXIgY2FuIG1ha2UgaGlzIG93biBj
YXJkaW5hbGl0eSBieSBpbXBsZW1lbnRpbmcKKy8vIENhcmRpbmFsaXR5SW50ZXJmYWNlIGFuZCBj
YWxsaW5nIE1ha2VDYXJkaW5hbGl0eSgpLgorCitjbGFzcyBFdmVuQ2FyZGluYWxpdHkgOiBwdWJs
aWMgQ2FyZGluYWxpdHlJbnRlcmZhY2UgeworIHB1YmxpYzoKKyAgLy8gUmV0dXJucyB0cnVlIGlm
ZiBjYWxsX2NvdW50IGNhbGxzIHdpbGwgc2F0aXNmeSB0aGlzIGNhcmRpbmFsaXR5LgorICB2aXJ0
dWFsIGJvb2wgSXNTYXRpc2ZpZWRCeUNhbGxDb3VudChpbnQgY2FsbF9jb3VudCkgY29uc3Qgewor
ICAgIHJldHVybiAoY2FsbF9jb3VudCAlIDIgPT0gMCk7CisgIH0KKworICAvLyBSZXR1cm5zIHRy
dWUgaWZmIGNhbGxfY291bnQgY2FsbHMgd2lsbCBzYXR1cmF0ZSB0aGlzIGNhcmRpbmFsaXR5Lgor
ICB2aXJ0dWFsIGJvb2wgSXNTYXR1cmF0ZWRCeUNhbGxDb3VudChpbnQgLyogY2FsbF9jb3VudCAq
LykgY29uc3QgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIC8vIERlc2NyaWJlcyBzZWxm
IHRvIGFuIG9zdHJlYW0uCisgIHZpcnR1YWwgdm9pZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFt
KiBzcykgY29uc3QgeworICAgICpzcyA8PCAiY2FsbGVkIGV2ZW4gbnVtYmVyIG9mIHRpbWVzIjsK
KyAgfQorfTsKKworVEVTVChNYWtlQ2FyZGluYWxpdHlUZXN0LCBDb25zdHJ1Y3RzQ2FyZGluYWxp
dHlGcm9tSW50ZXJmYWNlKSB7CisgIGNvbnN0IENhcmRpbmFsaXR5IGMgPSBNYWtlQ2FyZGluYWxp
dHkobmV3IEV2ZW5DYXJkaW5hbGl0eSk7CisKKyAgRVhQRUNUX1RSVUUoYy5Jc1NhdGlzZmllZEJ5
Q2FsbENvdW50KDIpKTsKKyAgRVhQRUNUX0ZBTFNFKGMuSXNTYXRpc2ZpZWRCeUNhbGxDb3VudCgz
KSk7CisKKyAgRVhQRUNUX0ZBTFNFKGMuSXNTYXR1cmF0ZWRCeUNhbGxDb3VudCgxMDAwMCkpOwor
CisgIHN0cmluZ3N0cmVhbSBzczsKKyAgYy5EZXNjcmliZVRvKCZzcyk7CisgIEVYUEVDVF9FUSgi
Y2FsbGVkIGV2ZW4gbnVtYmVyIG9mIHRpbWVzIiwgc3Muc3RyKCkpOworfQorCit9ICAvLyBVbm5h
bWVkIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9jay1nZW5lcmF0
ZWQtYWN0aW9uc190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9jay1nZW5lcmF0ZWQtYWN0
aW9uc190ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4ZDQ1NzI4YjFlY2Y1MjlmYWFmNGE1YTJlOGE2Yzg2
MzkxMTRkNDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2NrLWdlbmVy
YXRlZC1hY3Rpb25zX3Rlc3QuY2MKQEAgLTAsMCArMSwxMjI4IEBACisvLyBDb3B5cmlnaHQgMjAw
NywgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
Ky8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8v
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisv
LyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNv
bSAoWmhhbnlvbmcgV2FuKQorCisvLyBHb29nbGUgTW9jayAtIGEgZnJhbWV3b3JrIGZvciB3cml0
aW5nIEMrKyBtb2NrIGNsYXNzZXMuCisvLworLy8gVGhpcyBmaWxlIHRlc3RzIHRoZSBidWlsdC1p
biBhY3Rpb25zIGdlbmVyYXRlZCBieSBhIHNjcmlwdC4KKworI2luY2x1ZGUgImdtb2NrL2dtb2Nr
LWdlbmVyYXRlZC1hY3Rpb25zLmgiCisKKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1ZGUg
PHNzdHJlYW0+CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCisj
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHRlc3RpbmcgeworbmFtZXNwYWNl
IGdtb2NrX2dlbmVyYXRlZF9hY3Rpb25zX3Rlc3QgeworCit1c2luZyA6OnN0ZDo6cGx1czsKK3Vz
aW5nIDo6c3RkOjpzdHJpbmc7Cit1c2luZyB0ZXN0aW5nOjpnZXQ7Cit1c2luZyB0ZXN0aW5nOjpt
YWtlX3R1cGxlOwordXNpbmcgdGVzdGluZzo6dHVwbGU7Cit1c2luZyB0ZXN0aW5nOjp0dXBsZV9l
bGVtZW50OwordXNpbmcgdGVzdGluZzo6XzsKK3VzaW5nIHRlc3Rpbmc6OkFjdGlvbjsKK3VzaW5n
IHRlc3Rpbmc6OkFjdGlvbkludGVyZmFjZTsKK3VzaW5nIHRlc3Rpbmc6OkJ5UmVmOwordXNpbmcg
dGVzdGluZzo6RG9BbGw7Cit1c2luZyB0ZXN0aW5nOjpJbnZva2U7Cit1c2luZyB0ZXN0aW5nOjpS
ZXR1cm47Cit1c2luZyB0ZXN0aW5nOjpSZXR1cm5OZXc7Cit1c2luZyB0ZXN0aW5nOjpTZXRBcmdQ
b2ludGVlOwordXNpbmcgdGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxOwordXNpbmcgdGVzdGlu
Zzo6VW51c2VkOwordXNpbmcgdGVzdGluZzo6V2l0aEFyZ3M7CisKKy8vIEZvciBzdXBwcmVzc2lu
ZyBjb21waWxlciB3YXJuaW5ncyBvbiBjb252ZXJzaW9uIHBvc3NpYmx5IGxvc2luZyBwcmVjaXNp
b24uCitpbmxpbmUgc2hvcnQgU2hvcnQoc2hvcnQgbikgeyByZXR1cm4gbjsgfSAgLy8gTk9MSU5U
CitpbmxpbmUgY2hhciBDaGFyKGNoYXIgY2gpIHsgcmV0dXJuIGNoOyB9CisKKy8vIFNhbXBsZSBm
dW5jdGlvbnMgYW5kIGZ1bmN0b3JzIGZvciB0ZXN0aW5nIHZhcmlvdXMgYWN0aW9ucy4KK2ludCBO
dWxsYXJ5KCkgeyByZXR1cm4gMTsgfQorCitjbGFzcyBOdWxsYXJ5RnVuY3RvciB7CisgcHVibGlj
OgorICBpbnQgb3BlcmF0b3IoKSgpIHsgcmV0dXJuIDI7IH0KK307CisKK2Jvb2wgZ19kb25lID0g
ZmFsc2U7CisKK2Jvb2wgVW5hcnkoaW50IHgpIHsgcmV0dXJuIHggPCAwOyB9CisKK2NvbnN0IGNo
YXIqIFBsdXMxKGNvbnN0IGNoYXIqIHMpIHsgcmV0dXJuIHMgKyAxOyB9CisKK2Jvb2wgQnlDb25z
dFJlZihjb25zdCBzdGQ6OnN0cmluZyYgcykgeyByZXR1cm4gcyA9PSAiSGkiOyB9CisKK2NvbnN0
IGRvdWJsZSBnX2RvdWJsZSA9IDA7Citib29sIFJlZmVyZW5jZXNHbG9iYWxEb3VibGUoY29uc3Qg
ZG91YmxlJiB4KSB7IHJldHVybiAmeCA9PSAmZ19kb3VibGU7IH0KKworc3RkOjpzdHJpbmcgQnlO
b25Db25zdFJlZihzdGQ6OnN0cmluZyYgcykgeyByZXR1cm4gcyArPSAiKyI7IH0gIC8vIE5PTElO
VAorCitzdHJ1Y3QgVW5hcnlGdW5jdG9yIHsKKyAgaW50IG9wZXJhdG9yKCkoYm9vbCB4KSB7IHJl
dHVybiB4ID8gMSA6IC0xOyB9Cit9OworCitjb25zdCBjaGFyKiBCaW5hcnkoY29uc3QgY2hhciog
aW5wdXQsIHNob3J0IG4pIHsgcmV0dXJuIGlucHV0ICsgbjsgfSAgLy8gTk9MSU5UCisKK3ZvaWQg
Vm9pZEJpbmFyeShpbnQsIGNoYXIpIHsgZ19kb25lID0gdHJ1ZTsgfQorCitpbnQgVGVybmFyeShp
bnQgeCwgY2hhciB5LCBzaG9ydCB6KSB7IHJldHVybiB4ICsgeSArIHo7IH0gIC8vIE5PTElOVAor
Cit2b2lkIFZvaWRUZXJuYXJ5KGludCwgY2hhciwgYm9vbCkgeyBnX2RvbmUgPSB0cnVlOyB9CisK
K2ludCBTdW1PZjQoaW50IGEsIGludCBiLCBpbnQgYywgaW50IGQpIHsgcmV0dXJuIGEgKyBiICsg
YyArIGQ7IH0KKworc3RkOjpzdHJpbmcgQ29uY2F0NChjb25zdCBjaGFyKiBzMSwgY29uc3QgY2hh
ciogczIsIGNvbnN0IGNoYXIqIHMzLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBz
NCkgeworICByZXR1cm4gc3RkOjpzdHJpbmcoczEpICsgczIgKyBzMyArIHM0OworfQorCitpbnQg
U3VtT2Y1KGludCBhLCBpbnQgYiwgaW50IGMsIGludCBkLCBpbnQgZSkgeyByZXR1cm4gYSArIGIg
KyBjICsgZCArIGU7IH0KKworc3RydWN0IFN1bU9mNUZ1bmN0b3IgeworICBpbnQgb3BlcmF0b3Io
KShpbnQgYSwgaW50IGIsIGludCBjLCBpbnQgZCwgaW50IGUpIHsKKyAgICByZXR1cm4gYSArIGIg
KyBjICsgZCArIGU7CisgIH0KK307CisKK3N0ZDo6c3RyaW5nIENvbmNhdDUoY29uc3QgY2hhciog
czEsIGNvbnN0IGNoYXIqIHMyLCBjb25zdCBjaGFyKiBzMywKKyAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogczQsIGNvbnN0IGNoYXIqIHM1KSB7CisgIHJldHVybiBzdGQ6OnN0cmluZyhz
MSkgKyBzMiArIHMzICsgczQgKyBzNTsKK30KKworaW50IFN1bU9mNihpbnQgYSwgaW50IGIsIGlu
dCBjLCBpbnQgZCwgaW50IGUsIGludCBmKSB7CisgIHJldHVybiBhICsgYiArIGMgKyBkICsgZSAr
IGY7Cit9CisKK3N0cnVjdCBTdW1PZjZGdW5jdG9yIHsKKyAgaW50IG9wZXJhdG9yKCkoaW50IGEs
IGludCBiLCBpbnQgYywgaW50IGQsIGludCBlLCBpbnQgZikgeworICAgIHJldHVybiBhICsgYiAr
IGMgKyBkICsgZSArIGY7CisgIH0KK307CisKK3N0ZDo6c3RyaW5nIENvbmNhdDYoY29uc3QgY2hh
ciogczEsIGNvbnN0IGNoYXIqIHMyLCBjb25zdCBjaGFyKiBzMywKKyAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciogczQsIGNvbnN0IGNoYXIqIHM1LCBjb25zdCBjaGFyKiBzNikgeworICBy
ZXR1cm4gc3RkOjpzdHJpbmcoczEpICsgczIgKyBzMyArIHM0ICsgczUgKyBzNjsKK30KKworc3Rk
OjpzdHJpbmcgQ29uY2F0Nyhjb25zdCBjaGFyKiBzMSwgY29uc3QgY2hhciogczIsIGNvbnN0IGNo
YXIqIHMzLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzNCwgY29uc3QgY2hhciog
czUsIGNvbnN0IGNoYXIqIHM2LAorICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzNykg
eworICByZXR1cm4gc3RkOjpzdHJpbmcoczEpICsgczIgKyBzMyArIHM0ICsgczUgKyBzNiArIHM3
OworfQorCitzdGQ6OnN0cmluZyBDb25jYXQ4KGNvbnN0IGNoYXIqIHMxLCBjb25zdCBjaGFyKiBz
MiwgY29uc3QgY2hhciogczMsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHM0LCBj
b25zdCBjaGFyKiBzNSwgY29uc3QgY2hhciogczYsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIHM3LCBjb25zdCBjaGFyKiBzOCkgeworICByZXR1cm4gc3RkOjpzdHJpbmcoczEpICsg
czIgKyBzMyArIHM0ICsgczUgKyBzNiArIHM3ICsgczg7Cit9CisKK3N0ZDo6c3RyaW5nIENvbmNh
dDkoY29uc3QgY2hhciogczEsIGNvbnN0IGNoYXIqIHMyLCBjb25zdCBjaGFyKiBzMywKKyAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogczQsIGNvbnN0IGNoYXIqIHM1LCBjb25zdCBjaGFy
KiBzNiwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczcsIGNvbnN0IGNoYXIqIHM4
LCBjb25zdCBjaGFyKiBzOSkgeworICByZXR1cm4gc3RkOjpzdHJpbmcoczEpICsgczIgKyBzMyAr
IHM0ICsgczUgKyBzNiArIHM3ICsgczggKyBzOTsKK30KKworc3RkOjpzdHJpbmcgQ29uY2F0MTAo
Y29uc3QgY2hhciogczEsIGNvbnN0IGNoYXIqIHMyLCBjb25zdCBjaGFyKiBzMywKKyAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHM0LCBjb25zdCBjaGFyKiBzNSwgY29uc3QgY2hhciog
czYsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzNywgY29uc3QgY2hhciogczgs
IGNvbnN0IGNoYXIqIHM5LAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczEwKSB7
CisgIHJldHVybiBzdGQ6OnN0cmluZyhzMSkgKyBzMiArIHMzICsgczQgKyBzNSArIHM2ICsgczcg
KyBzOCArIHM5ICsgczEwOworfQorCisvLyBBIGhlbHBlciB0aGF0IHR1cm5zIHRoZSB0eXBlIG9m
IGEgQy1zdHJpbmcgbGl0ZXJhbCBmcm9tIGNvbnN0CisvLyBjaGFyW05dIHRvIGNvbnN0IGNoYXIq
LgoraW5saW5lIGNvbnN0IGNoYXIqIENoYXJQdHIoY29uc3QgY2hhciogcykgeyByZXR1cm4gczsg
fQorCisvLyBUZXN0cyBJbnZva2VBcmd1bWVudDxOPiguLi4pLgorCisvLyBUZXN0cyB1c2luZyBJ
bnZva2VBcmd1bWVudCB3aXRoIGEgbnVsbGFyeSBmdW5jdGlvbi4KK1RFU1QoSW52b2tlQXJndW1l
bnRUZXN0LCBGdW5jdGlvbjApIHsKKyAgQWN0aW9uPGludChpbnQsIGludCgqKSgpKT4gYSA9IElu
dm9rZUFyZ3VtZW50PDE+KCk7ICAvLyBOT0xJTlQKKyAgRVhQRUNUX0VRKDEsIGEuUGVyZm9ybSht
YWtlX3R1cGxlKDIsICZOdWxsYXJ5KSkpOworfQorCisvLyBUZXN0cyB1c2luZyBJbnZva2VBcmd1
bWVudCB3aXRoIGEgdW5hcnkgZnVuY3Rpb24uCitURVNUKEludm9rZUFyZ3VtZW50VGVzdCwgRnVu
Y3RvcjEpIHsKKyAgQWN0aW9uPGludChVbmFyeUZ1bmN0b3IpPiBhID0gSW52b2tlQXJndW1lbnQ8
MD4odHJ1ZSk7ICAvLyBOT0xJTlQKKyAgRVhQRUNUX0VRKDEsIGEuUGVyZm9ybShtYWtlX3R1cGxl
KFVuYXJ5RnVuY3RvcigpKSkpOworfQorCisvLyBUZXN0cyB1c2luZyBJbnZva2VBcmd1bWVudCB3
aXRoIGEgNS1hcnkgZnVuY3Rpb24uCitURVNUKEludm9rZUFyZ3VtZW50VGVzdCwgRnVuY3Rpb241
KSB7CisgIEFjdGlvbjxpbnQoaW50KCopKGludCwgaW50LCBpbnQsIGludCwgaW50KSk+IGEgPSAg
Ly8gTk9MSU5UCisgICAgICBJbnZva2VBcmd1bWVudDwwPigxMDAwMCwgMjAwMCwgMzAwLCA0MCwg
NSk7CisgIEVYUEVDVF9FUSgxMjM0NSwgYS5QZXJmb3JtKG1ha2VfdHVwbGUoJlN1bU9mNSkpKTsK
K30KKworLy8gVGVzdHMgdXNpbmcgSW52b2tlQXJndW1lbnQgd2l0aCBhIDUtYXJ5IGZ1bmN0b3Iu
CitURVNUKEludm9rZUFyZ3VtZW50VGVzdCwgRnVuY3RvcjUpIHsKKyAgQWN0aW9uPGludChTdW1P
ZjVGdW5jdG9yKT4gYSA9ICAvLyBOT0xJTlQKKyAgICAgIEludm9rZUFyZ3VtZW50PDA+KDEwMDAw
LCAyMDAwLCAzMDAsIDQwLCA1KTsKKyAgRVhQRUNUX0VRKDEyMzQ1LCBhLlBlcmZvcm0obWFrZV90
dXBsZShTdW1PZjVGdW5jdG9yKCkpKSk7Cit9CisKKy8vIFRlc3RzIHVzaW5nIEludm9rZUFyZ3Vt
ZW50IHdpdGggYSA2LWFyeSBmdW5jdGlvbi4KK1RFU1QoSW52b2tlQXJndW1lbnRUZXN0LCBGdW5j
dGlvbjYpIHsKKyAgQWN0aW9uPGludChpbnQoKikoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGlu
dCkpPiBhID0gIC8vIE5PTElOVAorICAgICAgSW52b2tlQXJndW1lbnQ8MD4oMTAwMDAwLCAyMDAw
MCwgMzAwMCwgNDAwLCA1MCwgNik7CisgIEVYUEVDVF9FUSgxMjM0NTYsIGEuUGVyZm9ybShtYWtl
X3R1cGxlKCZTdW1PZjYpKSk7Cit9CisKKy8vIFRlc3RzIHVzaW5nIEludm9rZUFyZ3VtZW50IHdp
dGggYSA2LWFyeSBmdW5jdG9yLgorVEVTVChJbnZva2VBcmd1bWVudFRlc3QsIEZ1bmN0b3I2KSB7
CisgIEFjdGlvbjxpbnQoU3VtT2Y2RnVuY3Rvcik+IGEgPSAgLy8gTk9MSU5UCisgICAgICBJbnZv
a2VBcmd1bWVudDwwPigxMDAwMDAsIDIwMDAwLCAzMDAwLCA0MDAsIDUwLCA2KTsKKyAgRVhQRUNU
X0VRKDEyMzQ1NiwgYS5QZXJmb3JtKG1ha2VfdHVwbGUoU3VtT2Y2RnVuY3RvcigpKSkpOworfQor
CisvLyBUZXN0cyB1c2luZyBJbnZva2VBcmd1bWVudCB3aXRoIGEgNy1hcnkgZnVuY3Rpb24uCitU
RVNUKEludm9rZUFyZ3VtZW50VGVzdCwgRnVuY3Rpb243KSB7CisgIEFjdGlvbjxzdGQ6OnN0cmlu
ZyhzdGQ6OnN0cmluZygqKShjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciosIGNvbnN0IGNo
YXIqLCBjb25zdCBjaGFyKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqKSk+CisgICAgICBhID0gSW52b2tlQXJndW1lbnQ8MD4oIjEiLCAiMiIsICIzIiwg
IjQiLCAiNSIsICI2IiwgIjciKTsKKyAgRVhQRUNUX0VRKCIxMjM0NTY3IiwgYS5QZXJmb3JtKG1h
a2VfdHVwbGUoJkNvbmNhdDcpKSk7Cit9CisKKy8vIFRlc3RzIHVzaW5nIEludm9rZUFyZ3VtZW50
IHdpdGggYSA4LWFyeSBmdW5jdGlvbi4KK1RFU1QoSW52b2tlQXJndW1lbnRUZXN0LCBGdW5jdGlv
bjgpIHsKKyAgQWN0aW9uPHN0ZDo6c3RyaW5nKHN0ZDo6c3RyaW5nKCopKGNvbnN0IGNoYXIqLCBj
b25zdCBjaGFyKiwgY29uc3QgY2hhciosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKSk+CisgICAg
ICBhID0gSW52b2tlQXJndW1lbnQ8MD4oIjEiLCAiMiIsICIzIiwgIjQiLCAiNSIsICI2IiwgIjci
LCAiOCIpOworICBFWFBFQ1RfRVEoIjEyMzQ1Njc4IiwgYS5QZXJmb3JtKG1ha2VfdHVwbGUoJkNv
bmNhdDgpKSk7Cit9CisKKy8vIFRlc3RzIHVzaW5nIEludm9rZUFyZ3VtZW50IHdpdGggYSA5LWFy
eSBmdW5jdGlvbi4KK1RFU1QoSW52b2tlQXJndW1lbnRUZXN0LCBGdW5jdGlvbjkpIHsKKyAgQWN0
aW9uPHN0ZDo6c3RyaW5nKHN0ZDo6c3RyaW5nKCopKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwg
Y29uc3QgY2hhciosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKikpPgorICAg
ICAgYSA9IEludm9rZUFyZ3VtZW50PDA+KCIxIiwgIjIiLCAiMyIsICI0IiwgIjUiLCAiNiIsICI3
IiwgIjgiLCAiOSIpOworICBFWFBFQ1RfRVEoIjEyMzQ1Njc4OSIsIGEuUGVyZm9ybShtYWtlX3R1
cGxlKCZDb25jYXQ5KSkpOworfQorCisvLyBUZXN0cyB1c2luZyBJbnZva2VBcmd1bWVudCB3aXRo
IGEgMTAtYXJ5IGZ1bmN0aW9uLgorVEVTVChJbnZva2VBcmd1bWVudFRlc3QsIEZ1bmN0aW9uMTAp
IHsKKyAgQWN0aW9uPHN0ZDo6c3RyaW5nKHN0ZDo6c3RyaW5nKCopKAorICAgICAgY29uc3QgY2hh
ciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLAor
ICAgICAgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhcios
IGNvbnN0IGNoYXIqKSk+CisgICAgICBhID0gSW52b2tlQXJndW1lbnQ8MD4oIjEiLCAiMiIsICIz
IiwgIjQiLCAiNSIsICI2IiwgIjciLCAiOCIsICI5IiwgIjAiKTsKKyAgRVhQRUNUX0VRKCIxMjM0
NTY3ODkwIiwgYS5QZXJmb3JtKG1ha2VfdHVwbGUoJkNvbmNhdDEwKSkpOworfQorCisvLyBUZXN0
cyB1c2luZyBJbnZva2VBcmd1bWVudCB3aXRoIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIHBvaW50
ZXIgYXJndW1lbnQuCitURVNUKEludm9rZUFyZ3VtZW50VGVzdCwgQnlQb2ludGVyRnVuY3Rpb24p
IHsKKyAgQWN0aW9uPGNvbnN0IGNoYXIqKGNvbnN0IGNoYXIqKCopKGNvbnN0IGNoYXIqIGlucHV0
LCBzaG9ydCBuKSk+IGEgPSAgLy8gTk9MSU5UCisgICAgICBJbnZva2VBcmd1bWVudDwwPihzdGF0
aWNfY2FzdDxjb25zdCBjaGFyKj4oIkhpIiksIFNob3J0KDEpKTsKKyAgRVhQRUNUX1NUUkVRKCJp
IiwgYS5QZXJmb3JtKG1ha2VfdHVwbGUoJkJpbmFyeSkpKTsKK30KKworLy8gVGVzdHMgdXNpbmcg
SW52b2tlQXJndW1lbnQgd2l0aCBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSBjb25zdCBjaGFyKgor
Ly8gYnkgcGFzc2luZyBpdCBhIEMtc3RyaW5nIGxpdGVyYWwuCitURVNUKEludm9rZUFyZ3VtZW50
VGVzdCwgRnVuY3Rpb25XaXRoQ1N0cmluZ0xpdGVyYWwpIHsKKyAgQWN0aW9uPGNvbnN0IGNoYXIq
KGNvbnN0IGNoYXIqKCopKGNvbnN0IGNoYXIqIGlucHV0LCBzaG9ydCBuKSk+IGEgPSAgLy8gTk9M
SU5UCisgICAgICBJbnZva2VBcmd1bWVudDwwPigiSGkiLCBTaG9ydCgxKSk7CisgIEVYUEVDVF9T
VFJFUSgiaSIsIGEuUGVyZm9ybShtYWtlX3R1cGxlKCZCaW5hcnkpKSk7Cit9CisKKy8vIFRlc3Rz
IHVzaW5nIEludm9rZUFyZ3VtZW50IHdpdGggYSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgY29uc3Qg
cmVmZXJlbmNlLgorVEVTVChJbnZva2VBcmd1bWVudFRlc3QsIEJ5Q29uc3RSZWZlcmVuY2VGdW5j
dGlvbikgeworICBBY3Rpb248Ym9vbChib29sICgqZnVuY3Rpb24pKGNvbnN0IHN0ZDo6c3RyaW5n
JiBzKSk+IGEgPSAgLy8gTk9MSU5UCisgICAgICBJbnZva2VBcmd1bWVudDwwPihzdGQ6OnN0cmlu
ZygiSGkiKSk7CisgIC8vIFdoZW4gYWN0aW9uICdhJyBpcyBjb25zdHJ1Y3RlZCwgaXQgbWFrZXMg
YSBjb3B5IG9mIHRoZSB0ZW1wb3JhcnkKKyAgLy8gc3RyaW5nIG9iamVjdCBwYXNzZWQgdG8gaXQs
IHNvIGl0J3MgT0sgdG8gdXNlICdhJyBsYXRlciwgd2hlbiB0aGUKKyAgLy8gdGVtcG9yYXJ5IG9i
amVjdCBoYXMgYWxyZWFkeSBkaWVkLgorICBFWFBFQ1RfVFJVRShhLlBlcmZvcm0obWFrZV90dXBs
ZSgmQnlDb25zdFJlZikpKTsKK30KKworLy8gVGVzdHMgdXNpbmcgSW52b2tlQXJndW1lbnQgd2l0
aCBCeVJlZigpIGFuZCBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYQorLy8gY29uc3QgcmVmZXJlbmNl
LgorVEVTVChJbnZva2VBcmd1bWVudFRlc3QsIEJ5RXhwbGljaXRDb25zdFJlZmVyZW5jZUZ1bmN0
aW9uKSB7CisgIEFjdGlvbjxib29sKGJvb2woKikoY29uc3QgZG91YmxlJiB4KSk+IGEgPSAgLy8g
Tk9MSU5UCisgICAgICBJbnZva2VBcmd1bWVudDwwPihCeVJlZihnX2RvdWJsZSkpOworICAvLyBU
aGUgYWJvdmUgbGluZSBjYWxscyBCeVJlZigpIG9uIGEgY29uc3QgdmFsdWUuCisgIEVYUEVDVF9U
UlVFKGEuUGVyZm9ybShtYWtlX3R1cGxlKCZSZWZlcmVuY2VzR2xvYmFsRG91YmxlKSkpOworCisg
IGRvdWJsZSB4ID0gMDsKKyAgYSA9IEludm9rZUFyZ3VtZW50PDA+KEJ5UmVmKHgpKTsgIC8vIFRo
aXMgY2FsbHMgQnlSZWYoKSBvbiBhIG5vbi1jb25zdC4KKyAgRVhQRUNUX0ZBTFNFKGEuUGVyZm9y
bShtYWtlX3R1cGxlKCZSZWZlcmVuY2VzR2xvYmFsRG91YmxlKSkpOworfQorCisvLyBUZXN0cyB1
c2luZyBXaXRoQXJncyBhbmQgd2l0aCBhbiBhY3Rpb24gdGhhdCB0YWtlcyAxIGFyZ3VtZW50Lgor
VEVTVChXaXRoQXJnc1Rlc3QsIE9uZUFyZykgeworICBBY3Rpb248Ym9vbChkb3VibGUgeCwgaW50
IG4pPiBhID0gV2l0aEFyZ3M8MT4oSW52b2tlKFVuYXJ5KSk7ICAvLyBOT0xJTlQKKyAgRVhQRUNU
X1RSVUUoYS5QZXJmb3JtKG1ha2VfdHVwbGUoMS41LCAtMSkpKTsKKyAgRVhQRUNUX0ZBTFNFKGEu
UGVyZm9ybShtYWtlX3R1cGxlKDEuNSwgMSkpKTsKK30KKworLy8gVGVzdHMgdXNpbmcgV2l0aEFy
Z3Mgd2l0aCBhbiBhY3Rpb24gdGhhdCB0YWtlcyAyIGFyZ3VtZW50cy4KK1RFU1QoV2l0aEFyZ3NU
ZXN0LCBUd29BcmdzKSB7CisgIEFjdGlvbjxjb25zdCBjaGFyKihjb25zdCBjaGFyKiBzLCBkb3Vi
bGUgeCwgc2hvcnQgbik+IGEgPQorICAgICAgV2l0aEFyZ3M8MCwgMj4oSW52b2tlKEJpbmFyeSkp
OworICBjb25zdCBjaGFyIHNbXSA9ICJIZWxsbyI7CisgIEVYUEVDVF9FUShzICsgMiwgYS5QZXJm
b3JtKG1ha2VfdHVwbGUoQ2hhclB0cihzKSwgMC41LCBTaG9ydCgyKSkpKTsKK30KKworLy8gVGVz
dHMgdXNpbmcgV2l0aEFyZ3Mgd2l0aCBhbiBhY3Rpb24gdGhhdCB0YWtlcyAzIGFyZ3VtZW50cy4K
K1RFU1QoV2l0aEFyZ3NUZXN0LCBUaHJlZUFyZ3MpIHsKKyAgQWN0aW9uPGludChpbnQsIGRvdWJs
ZSwgY2hhciwgc2hvcnQpPiBhID0gIC8vIE5PTElOVAorICAgICAgV2l0aEFyZ3M8MCwgMiwgMz4o
SW52b2tlKFRlcm5hcnkpKTsKKyAgRVhQRUNUX0VRKDEyMywgYS5QZXJmb3JtKG1ha2VfdHVwbGUo
MTAwLCA2LjUsIENoYXIoMjApLCBTaG9ydCgzKSkpKTsKK30KKworLy8gVGVzdHMgdXNpbmcgV2l0
aEFyZ3Mgd2l0aCBhbiBhY3Rpb24gdGhhdCB0YWtlcyA0IGFyZ3VtZW50cy4KK1RFU1QoV2l0aEFy
Z3NUZXN0LCBGb3VyQXJncykgeworICBBY3Rpb248c3RkOjpzdHJpbmcoY29uc3QgY2hhciosIGNv
bnN0IGNoYXIqLCBkb3VibGUsIGNvbnN0IGNoYXIqLAorICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciopPgorICAgICAgYSA9IFdpdGhBcmdzPDQsIDMsIDEsIDA+KEludm9rZShDb25jYXQ0
KSk7CisgIEVYUEVDVF9FUSgiNDMxMCIsIGEuUGVyZm9ybShtYWtlX3R1cGxlKENoYXJQdHIoIjAi
KSwgQ2hhclB0cigiMSIpLCAyLjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENoYXJQdHIoIjMiKSwgQ2hhclB0cigiNCIpKSkpOworfQorCisvLyBUZXN0cyB1c2lu
ZyBXaXRoQXJncyB3aXRoIGFuIGFjdGlvbiB0aGF0IHRha2VzIDUgYXJndW1lbnRzLgorVEVTVChX
aXRoQXJnc1Rlc3QsIEZpdmVBcmdzKSB7CisgIEFjdGlvbjxzdGQ6OnN0cmluZyhjb25zdCBjaGFy
KiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwKKyAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqKT4KKyAgICAgIGEgPSBXaXRoQXJnczw0LCAzLCAyLCAxLCAwPihJ
bnZva2UoQ29uY2F0NSkpOworICBFWFBFQ1RfRVEoIjQzMjEwIiwKKyAgICAgICAgICAgIGEuUGVy
Zm9ybShtYWtlX3R1cGxlKENoYXJQdHIoIjAiKSwgQ2hhclB0cigiMSIpLCBDaGFyUHRyKCIyIiks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFyUHRyKCIzIiksIENoYXJQdHIo
IjQiKSkpKTsKK30KKworLy8gVGVzdHMgdXNpbmcgV2l0aEFyZ3Mgd2l0aCBhbiBhY3Rpb24gdGhh
dCB0YWtlcyA2IGFyZ3VtZW50cy4KK1RFU1QoV2l0aEFyZ3NUZXN0LCBTaXhBcmdzKSB7CisgIEFj
dGlvbjxzdGQ6OnN0cmluZyhjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKT4g
YSA9CisgICAgICBXaXRoQXJnczwwLCAxLCAyLCAyLCAxLCAwPihJbnZva2UoQ29uY2F0NikpOwor
ICBFWFBFQ1RfRVEoIjAxMjIxMCIsCisgICAgICAgICAgICBhLlBlcmZvcm0obWFrZV90dXBsZShD
aGFyUHRyKCIwIiksIENoYXJQdHIoIjEiKSwgQ2hhclB0cigiMiIpKSkpOworfQorCisvLyBUZXN0
cyB1c2luZyBXaXRoQXJncyB3aXRoIGFuIGFjdGlvbiB0aGF0IHRha2VzIDcgYXJndW1lbnRzLgor
VEVTVChXaXRoQXJnc1Rlc3QsIFNldmVuQXJncykgeworICBBY3Rpb248c3RkOjpzdHJpbmcoY29u
c3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciopPiBhID0KKyAg
ICAgIFdpdGhBcmdzPDAsIDEsIDIsIDMsIDIsIDEsIDA+KEludm9rZShDb25jYXQ3KSk7CisgIEVY
UEVDVF9FUSgiMDEyMzIxMCIsCisgICAgICAgICAgICBhLlBlcmZvcm0obWFrZV90dXBsZShDaGFy
UHRyKCIwIiksIENoYXJQdHIoIjEiKSwgQ2hhclB0cigiMiIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ2hhclB0cigiMyIpKSkpOworfQorCisvLyBUZXN0cyB1c2luZyBXaXRo
QXJncyB3aXRoIGFuIGFjdGlvbiB0aGF0IHRha2VzIDggYXJndW1lbnRzLgorVEVTVChXaXRoQXJn
c1Rlc3QsIEVpZ2h0QXJncykgeworICBBY3Rpb248c3RkOjpzdHJpbmcoY29uc3QgY2hhciosIGNv
bnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciopPiBhID0KKyAgICAgIFdpdGhBcmdz
PDAsIDEsIDIsIDMsIDAsIDEsIDIsIDM+KEludm9rZShDb25jYXQ4KSk7CisgIEVYUEVDVF9FUSgi
MDEyMzAxMjMiLAorICAgICAgICAgICAgYS5QZXJmb3JtKG1ha2VfdHVwbGUoQ2hhclB0cigiMCIp
LCBDaGFyUHRyKCIxIiksIENoYXJQdHIoIjIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENoYXJQdHIoIjMiKSkpKTsKK30KKworLy8gVGVzdHMgdXNpbmcgV2l0aEFyZ3Mgd2l0
aCBhbiBhY3Rpb24gdGhhdCB0YWtlcyA5IGFyZ3VtZW50cy4KK1RFU1QoV2l0aEFyZ3NUZXN0LCBO
aW5lQXJncykgeworICBBY3Rpb248c3RkOjpzdHJpbmcoY29uc3QgY2hhciosIGNvbnN0IGNoYXIq
LCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciopPiBhID0KKyAgICAgIFdpdGhBcmdzPDAsIDEsIDIs
IDMsIDEsIDIsIDMsIDIsIDM+KEludm9rZShDb25jYXQ5KSk7CisgIEVYUEVDVF9FUSgiMDEyMzEy
MzIzIiwKKyAgICAgICAgICAgIGEuUGVyZm9ybShtYWtlX3R1cGxlKENoYXJQdHIoIjAiKSwgQ2hh
clB0cigiMSIpLCBDaGFyUHRyKCIyIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDaGFyUHRyKCIzIikpKSk7Cit9CisKKy8vIFRlc3RzIHVzaW5nIFdpdGhBcmdzIHdpdGggYW4g
YWN0aW9uIHRoYXQgdGFrZXMgMTAgYXJndW1lbnRzLgorVEVTVChXaXRoQXJnc1Rlc3QsIFRlbkFy
Z3MpIHsKKyAgQWN0aW9uPHN0ZDo6c3RyaW5nKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29u
c3QgY2hhciosIGNvbnN0IGNoYXIqKT4gYSA9CisgICAgICBXaXRoQXJnczwwLCAxLCAyLCAzLCAy
LCAxLCAwLCAxLCAyLCAzPihJbnZva2UoQ29uY2F0MTApKTsKKyAgRVhQRUNUX0VRKCIwMTIzMjEw
MTIzIiwKKyAgICAgICAgICAgIGEuUGVyZm9ybShtYWtlX3R1cGxlKENoYXJQdHIoIjAiKSwgQ2hh
clB0cigiMSIpLCBDaGFyUHRyKCIyIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDaGFyUHRyKCIzIikpKSk7Cit9CisKKy8vIFRlc3RzIHVzaW5nIFdpdGhBcmdzIHdpdGggYW4g
YWN0aW9uIHRoYXQgaXMgbm90IEludm9rZSgpLgorY2xhc3MgU3Vic3RyYWN0QWN0aW9uIDogcHVi
bGljIEFjdGlvbkludGVyZmFjZTxpbnQoaW50LCBpbnQpPiB7ICAvLyBOT0xJTlQKKyBwdWJsaWM6
CisgIHZpcnR1YWwgaW50IFBlcmZvcm0oY29uc3QgdHVwbGU8aW50LCBpbnQ+JiBhcmdzKSB7Cisg
ICAgcmV0dXJuIGdldDwwPihhcmdzKSAtIGdldDwxPihhcmdzKTsKKyAgfQorfTsKKworVEVTVChX
aXRoQXJnc1Rlc3QsIE5vbkludm9rZUFjdGlvbikgeworICBBY3Rpb248aW50KGNvbnN0IHN0cmlu
ZyYsIGludCwgaW50KT4gYSA9ICAvLyBOT0xJTlQKKyAgICAgIFdpdGhBcmdzPDIsIDE+KE1ha2VB
Y3Rpb24obmV3IFN1YnN0cmFjdEFjdGlvbikpOworICBzdHJpbmcgcygiaGVsbG8iKTsKKyAgRVhQ
RUNUX0VRKDgsIGEuUGVyZm9ybSh0dXBsZTxjb25zdCBzdHJpbmcmLCBpbnQsIGludD4ocywgMiwg
MTApKSk7Cit9CisKKy8vIFRlc3RzIHVzaW5nIFdpdGhBcmdzIHRvIHBhc3MgYWxsIG9yaWdpbmFs
IGFyZ3VtZW50cyBpbiB0aGUgb3JpZ2luYWwgb3JkZXIuCitURVNUKFdpdGhBcmdzVGVzdCwgSWRl
bnRpdHkpIHsKKyAgQWN0aW9uPGludChpbnQgeCwgY2hhciB5LCBzaG9ydCB6KT4gYSA9ICAvLyBO
T0xJTlQKKyAgICAgIFdpdGhBcmdzPDAsIDEsIDI+KEludm9rZShUZXJuYXJ5KSk7CisgIEVYUEVD
VF9FUSgxMjMsIGEuUGVyZm9ybShtYWtlX3R1cGxlKDEwMCwgQ2hhcigyMCksIFNob3J0KDMpKSkp
OworfQorCisvLyBUZXN0cyB1c2luZyBXaXRoQXJncyB3aXRoIHJlcGVhdGVkIGFyZ3VtZW50cy4K
K1RFU1QoV2l0aEFyZ3NUZXN0LCBSZXBlYXRlZEFyZ3VtZW50cykgeworICBBY3Rpb248aW50KGJv
b2wsIGludCBtLCBpbnQgbik+IGEgPSAgLy8gTk9MSU5UCisgICAgICBXaXRoQXJnczwxLCAxLCAx
LCAxPihJbnZva2UoU3VtT2Y0KSk7CisgIEVYUEVDVF9FUSg0LCBhLlBlcmZvcm0obWFrZV90dXBs
ZShmYWxzZSwgMSwgMTApKSk7Cit9CisKKy8vIFRlc3RzIHVzaW5nIFdpdGhBcmdzIHdpdGggcmV2
ZXJzZWQgYXJndW1lbnQgb3JkZXIuCitURVNUKFdpdGhBcmdzVGVzdCwgUmV2ZXJzZWRBcmd1bWVu
dE9yZGVyKSB7CisgIEFjdGlvbjxjb25zdCBjaGFyKihzaG9ydCBuLCBjb25zdCBjaGFyKiBpbnB1
dCk+IGEgPSAgLy8gTk9MSU5UCisgICAgICBXaXRoQXJnczwxLCAwPihJbnZva2UoQmluYXJ5KSk7
CisgIGNvbnN0IGNoYXIgc1tdID0gIkhlbGxvIjsKKyAgRVhQRUNUX0VRKHMgKyAyLCBhLlBlcmZv
cm0obWFrZV90dXBsZShTaG9ydCgyKSwgQ2hhclB0cihzKSkpKTsKK30KKworLy8gVGVzdHMgdXNp
bmcgV2l0aEFyZ3Mgd2l0aCBjb21wYXRpYmxlLCBidXQgbm90IGlkZW50aWNhbCwgYXJndW1lbnQg
dHlwZXMuCitURVNUKFdpdGhBcmdzVGVzdCwgQXJnc09mQ29tcGF0aWJsZVR5cGVzKSB7CisgIEFj
dGlvbjxsb25nKHNob3J0IHgsIGNoYXIgeSwgZG91YmxlIHosIGNoYXIgYyk+IGEgPSAgLy8gTk9M
SU5UCisgICAgICBXaXRoQXJnczwwLCAxLCAzPihJbnZva2UoVGVybmFyeSkpOworICBFWFBFQ1Rf
RVEoMTIzLCBhLlBlcmZvcm0obWFrZV90dXBsZShTaG9ydCgxMDApLCBDaGFyKDIwKSwgNS42LCBD
aGFyKDMpKSkpOworfQorCisvLyBUZXN0cyB1c2luZyBXaXRoQXJncyB3aXRoIGFuIGFjdGlvbiB0
aGF0IHJldHVybnMgdm9pZC4KK1RFU1QoV2l0aEFyZ3NUZXN0LCBWb2lkQWN0aW9uKSB7CisgIEFj
dGlvbjx2b2lkKGRvdWJsZSB4LCBjaGFyIGMsIGludCBuKT4gYSA9IFdpdGhBcmdzPDIsIDE+KElu
dm9rZShWb2lkQmluYXJ5KSk7CisgIGdfZG9uZSA9IGZhbHNlOworICBhLlBlcmZvcm0obWFrZV90
dXBsZSgxLjUsICdhJywgMykpOworICBFWFBFQ1RfVFJVRShnX2RvbmUpOworfQorCisvLyBUZXN0
cyBEb0FsbChhMSwgYTIpLgorVEVTVChEb0FsbFRlc3QsIFR3b0FjdGlvbnMpIHsKKyAgaW50IG4g
PSAwOworICBBY3Rpb248aW50KGludCopPiBhID0gRG9BbGwoU2V0QXJnUG9pbnRlZTwwPigxKSwg
IC8vIE5PTElOVAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuKDIpKTsKKyAg
RVhQRUNUX0VRKDIsIGEuUGVyZm9ybShtYWtlX3R1cGxlKCZuKSkpOworICBFWFBFQ1RfRVEoMSwg
bik7Cit9CisKKy8vIFRlc3RzIERvQWxsKGExLCBhMiwgYTMpLgorVEVTVChEb0FsbFRlc3QsIFRo
cmVlQWN0aW9ucykgeworICBpbnQgbSA9IDAsIG4gPSAwOworICBBY3Rpb248aW50KGludCosIGlu
dCopPiBhID0gRG9BbGwoU2V0QXJnUG9pbnRlZTwwPigxKSwgIC8vIE5PTElOVAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0QXJnUG9pbnRlZTwxPigyKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybigzKSk7CisgIEVYUEVDVF9FUSgzLCBh
LlBlcmZvcm0obWFrZV90dXBsZSgmbSwgJm4pKSk7CisgIEVYUEVDVF9FUSgxLCBtKTsKKyAgRVhQ
RUNUX0VRKDIsIG4pOworfQorCisvLyBUZXN0cyBEb0FsbChhMSwgYTIsIGEzLCBhNCkuCitURVNU
KERvQWxsVGVzdCwgRm91ckFjdGlvbnMpIHsKKyAgaW50IG0gPSAwLCBuID0gMDsKKyAgY2hhciBj
aCA9ICdcMCc7CisgIEFjdGlvbjxpbnQoaW50KiwgaW50KiwgY2hhciopPiBhID0gIC8vIE5PTElO
VAorICAgICAgRG9BbGwoU2V0QXJnUG9pbnRlZTwwPigxKSwKKyAgICAgICAgICAgIFNldEFyZ1Bv
aW50ZWU8MT4oMiksCisgICAgICAgICAgICBTZXRBcmdQb2ludGVlPDI+KCdhJyksCisgICAgICAg
ICAgICBSZXR1cm4oMykpOworICBFWFBFQ1RfRVEoMywgYS5QZXJmb3JtKG1ha2VfdHVwbGUoJm0s
ICZuLCAmY2gpKSk7CisgIEVYUEVDVF9FUSgxLCBtKTsKKyAgRVhQRUNUX0VRKDIsIG4pOworICBF
WFBFQ1RfRVEoJ2EnLCBjaCk7Cit9CisKKy8vIFRlc3RzIERvQWxsKGExLCBhMiwgYTMsIGE0LCBh
NSkuCitURVNUKERvQWxsVGVzdCwgRml2ZUFjdGlvbnMpIHsKKyAgaW50IG0gPSAwLCBuID0gMDsK
KyAgY2hhciBhID0gJ1wwJywgYiA9ICdcMCc7CisgIEFjdGlvbjxpbnQoaW50KiwgaW50KiwgY2hh
ciosIGNoYXIqKT4gYWN0aW9uID0gIC8vIE5PTElOVAorICAgICAgRG9BbGwoU2V0QXJnUG9pbnRl
ZTwwPigxKSwKKyAgICAgICAgICAgIFNldEFyZ1BvaW50ZWU8MT4oMiksCisgICAgICAgICAgICBT
ZXRBcmdQb2ludGVlPDI+KCdhJyksCisgICAgICAgICAgICBTZXRBcmdQb2ludGVlPDM+KCdiJyks
CisgICAgICAgICAgICBSZXR1cm4oMykpOworICBFWFBFQ1RfRVEoMywgYWN0aW9uLlBlcmZvcm0o
bWFrZV90dXBsZSgmbSwgJm4sICZhLCAmYikpKTsKKyAgRVhQRUNUX0VRKDEsIG0pOworICBFWFBF
Q1RfRVEoMiwgbik7CisgIEVYUEVDVF9FUSgnYScsIGEpOworICBFWFBFQ1RfRVEoJ2InLCBiKTsK
K30KKworLy8gVGVzdHMgRG9BbGwoYTEsIGEyLCAuLi4sIGE2KS4KK1RFU1QoRG9BbGxUZXN0LCBT
aXhBY3Rpb25zKSB7CisgIGludCBtID0gMCwgbiA9IDA7CisgIGNoYXIgYSA9ICdcMCcsIGIgPSAn
XDAnLCBjID0gJ1wwJzsKKyAgQWN0aW9uPGludChpbnQqLCBpbnQqLCBjaGFyKiwgY2hhciosIGNo
YXIqKT4gYWN0aW9uID0gIC8vIE5PTElOVAorICAgICAgRG9BbGwoU2V0QXJnUG9pbnRlZTwwPigx
KSwKKyAgICAgICAgICAgIFNldEFyZ1BvaW50ZWU8MT4oMiksCisgICAgICAgICAgICBTZXRBcmdQ
b2ludGVlPDI+KCdhJyksCisgICAgICAgICAgICBTZXRBcmdQb2ludGVlPDM+KCdiJyksCisgICAg
ICAgICAgICBTZXRBcmdQb2ludGVlPDQ+KCdjJyksCisgICAgICAgICAgICBSZXR1cm4oMykpOwor
ICBFWFBFQ1RfRVEoMywgYWN0aW9uLlBlcmZvcm0obWFrZV90dXBsZSgmbSwgJm4sICZhLCAmYiwg
JmMpKSk7CisgIEVYUEVDVF9FUSgxLCBtKTsKKyAgRVhQRUNUX0VRKDIsIG4pOworICBFWFBFQ1Rf
RVEoJ2EnLCBhKTsKKyAgRVhQRUNUX0VRKCdiJywgYik7CisgIEVYUEVDVF9FUSgnYycsIGMpOwor
fQorCisvLyBUZXN0cyBEb0FsbChhMSwgYTIsIC4uLiwgYTcpLgorVEVTVChEb0FsbFRlc3QsIFNl
dmVuQWN0aW9ucykgeworICBpbnQgbSA9IDAsIG4gPSAwOworICBjaGFyIGEgPSAnXDAnLCBiID0g
J1wwJywgYyA9ICdcMCcsIGQgPSAnXDAnOworICBBY3Rpb248aW50KGludCosIGludCosIGNoYXIq
LCBjaGFyKiwgY2hhciosIGNoYXIqKT4gYWN0aW9uID0gIC8vIE5PTElOVAorICAgICAgRG9BbGwo
U2V0QXJnUG9pbnRlZTwwPigxKSwKKyAgICAgICAgICAgIFNldEFyZ1BvaW50ZWU8MT4oMiksCisg
ICAgICAgICAgICBTZXRBcmdQb2ludGVlPDI+KCdhJyksCisgICAgICAgICAgICBTZXRBcmdQb2lu
dGVlPDM+KCdiJyksCisgICAgICAgICAgICBTZXRBcmdQb2ludGVlPDQ+KCdjJyksCisgICAgICAg
ICAgICBTZXRBcmdQb2ludGVlPDU+KCdkJyksCisgICAgICAgICAgICBSZXR1cm4oMykpOworICBF
WFBFQ1RfRVEoMywgYWN0aW9uLlBlcmZvcm0obWFrZV90dXBsZSgmbSwgJm4sICZhLCAmYiwgJmMs
ICZkKSkpOworICBFWFBFQ1RfRVEoMSwgbSk7CisgIEVYUEVDVF9FUSgyLCBuKTsKKyAgRVhQRUNU
X0VRKCdhJywgYSk7CisgIEVYUEVDVF9FUSgnYicsIGIpOworICBFWFBFQ1RfRVEoJ2MnLCBjKTsK
KyAgRVhQRUNUX0VRKCdkJywgZCk7Cit9CisKKy8vIFRlc3RzIERvQWxsKGExLCBhMiwgLi4uLCBh
OCkuCitURVNUKERvQWxsVGVzdCwgRWlnaHRBY3Rpb25zKSB7CisgIGludCBtID0gMCwgbiA9IDA7
CisgIGNoYXIgYSA9ICdcMCcsIGIgPSAnXDAnLCBjID0gJ1wwJywgZCA9ICdcMCcsIGUgPSAnXDAn
OworICBBY3Rpb248aW50KGludCosIGludCosIGNoYXIqLCBjaGFyKiwgY2hhciosIGNoYXIqLCAg
Ly8gTk9MSU5UCisgICAgICAgICAgICAgY2hhciopPiBhY3Rpb24gPQorICAgICAgRG9BbGwoU2V0
QXJnUG9pbnRlZTwwPigxKSwKKyAgICAgICAgICAgIFNldEFyZ1BvaW50ZWU8MT4oMiksCisgICAg
ICAgICAgICBTZXRBcmdQb2ludGVlPDI+KCdhJyksCisgICAgICAgICAgICBTZXRBcmdQb2ludGVl
PDM+KCdiJyksCisgICAgICAgICAgICBTZXRBcmdQb2ludGVlPDQ+KCdjJyksCisgICAgICAgICAg
ICBTZXRBcmdQb2ludGVlPDU+KCdkJyksCisgICAgICAgICAgICBTZXRBcmdQb2ludGVlPDY+KCdl
JyksCisgICAgICAgICAgICBSZXR1cm4oMykpOworICBFWFBFQ1RfRVEoMywgYWN0aW9uLlBlcmZv
cm0obWFrZV90dXBsZSgmbSwgJm4sICZhLCAmYiwgJmMsICZkLCAmZSkpKTsKKyAgRVhQRUNUX0VR
KDEsIG0pOworICBFWFBFQ1RfRVEoMiwgbik7CisgIEVYUEVDVF9FUSgnYScsIGEpOworICBFWFBF
Q1RfRVEoJ2InLCBiKTsKKyAgRVhQRUNUX0VRKCdjJywgYyk7CisgIEVYUEVDVF9FUSgnZCcsIGQp
OworICBFWFBFQ1RfRVEoJ2UnLCBlKTsKK30KKworLy8gVGVzdHMgRG9BbGwoYTEsIGEyLCAuLi4s
IGE5KS4KK1RFU1QoRG9BbGxUZXN0LCBOaW5lQWN0aW9ucykgeworICBpbnQgbSA9IDAsIG4gPSAw
OworICBjaGFyIGEgPSAnXDAnLCBiID0gJ1wwJywgYyA9ICdcMCcsIGQgPSAnXDAnLCBlID0gJ1ww
JywgZiA9ICdcMCc7CisgIEFjdGlvbjxpbnQoaW50KiwgaW50KiwgY2hhciosIGNoYXIqLCBjaGFy
KiwgY2hhciosICAvLyBOT0xJTlQKKyAgICAgICAgICAgICBjaGFyKiwgY2hhciopPiBhY3Rpb24g
PQorICAgICAgRG9BbGwoU2V0QXJnUG9pbnRlZTwwPigxKSwKKyAgICAgICAgICAgIFNldEFyZ1Bv
aW50ZWU8MT4oMiksCisgICAgICAgICAgICBTZXRBcmdQb2ludGVlPDI+KCdhJyksCisgICAgICAg
ICAgICBTZXRBcmdQb2ludGVlPDM+KCdiJyksCisgICAgICAgICAgICBTZXRBcmdQb2ludGVlPDQ+
KCdjJyksCisgICAgICAgICAgICBTZXRBcmdQb2ludGVlPDU+KCdkJyksCisgICAgICAgICAgICBT
ZXRBcmdQb2ludGVlPDY+KCdlJyksCisgICAgICAgICAgICBTZXRBcmdQb2ludGVlPDc+KCdmJyks
CisgICAgICAgICAgICBSZXR1cm4oMykpOworICBFWFBFQ1RfRVEoMywgYWN0aW9uLlBlcmZvcm0o
bWFrZV90dXBsZSgmbSwgJm4sICZhLCAmYiwgJmMsICZkLCAmZSwgJmYpKSk7CisgIEVYUEVDVF9F
USgxLCBtKTsKKyAgRVhQRUNUX0VRKDIsIG4pOworICBFWFBFQ1RfRVEoJ2EnLCBhKTsKKyAgRVhQ
RUNUX0VRKCdiJywgYik7CisgIEVYUEVDVF9FUSgnYycsIGMpOworICBFWFBFQ1RfRVEoJ2QnLCBk
KTsKKyAgRVhQRUNUX0VRKCdlJywgZSk7CisgIEVYUEVDVF9FUSgnZicsIGYpOworfQorCisvLyBU
ZXN0cyBEb0FsbChhMSwgYTIsIC4uLiwgYTEwKS4KK1RFU1QoRG9BbGxUZXN0LCBUZW5BY3Rpb25z
KSB7CisgIGludCBtID0gMCwgbiA9IDA7CisgIGNoYXIgYSA9ICdcMCcsIGIgPSAnXDAnLCBjID0g
J1wwJywgZCA9ICdcMCc7CisgIGNoYXIgZSA9ICdcMCcsIGYgPSAnXDAnLCBnID0gJ1wwJzsKKyAg
QWN0aW9uPGludChpbnQqLCBpbnQqLCBjaGFyKiwgY2hhciosIGNoYXIqLCBjaGFyKiwgIC8vIE5P
TElOVAorICAgICAgICAgICAgIGNoYXIqLCBjaGFyKiwgY2hhciopPiBhY3Rpb24gPQorICAgICAg
RG9BbGwoU2V0QXJnUG9pbnRlZTwwPigxKSwKKyAgICAgICAgICAgIFNldEFyZ1BvaW50ZWU8MT4o
MiksCisgICAgICAgICAgICBTZXRBcmdQb2ludGVlPDI+KCdhJyksCisgICAgICAgICAgICBTZXRB
cmdQb2ludGVlPDM+KCdiJyksCisgICAgICAgICAgICBTZXRBcmdQb2ludGVlPDQ+KCdjJyksCisg
ICAgICAgICAgICBTZXRBcmdQb2ludGVlPDU+KCdkJyksCisgICAgICAgICAgICBTZXRBcmdQb2lu
dGVlPDY+KCdlJyksCisgICAgICAgICAgICBTZXRBcmdQb2ludGVlPDc+KCdmJyksCisgICAgICAg
ICAgICBTZXRBcmdQb2ludGVlPDg+KCdnJyksCisgICAgICAgICAgICBSZXR1cm4oMykpOworICBF
WFBFQ1RfRVEoMywgYWN0aW9uLlBlcmZvcm0obWFrZV90dXBsZSgmbSwgJm4sICZhLCAmYiwgJmMs
ICZkLCAmZSwgJmYsICZnKSkpOworICBFWFBFQ1RfRVEoMSwgbSk7CisgIEVYUEVDVF9FUSgyLCBu
KTsKKyAgRVhQRUNUX0VRKCdhJywgYSk7CisgIEVYUEVDVF9FUSgnYicsIGIpOworICBFWFBFQ1Rf
RVEoJ2MnLCBjKTsKKyAgRVhQRUNUX0VRKCdkJywgZCk7CisgIEVYUEVDVF9FUSgnZScsIGUpOwor
ICBFWFBFQ1RfRVEoJ2YnLCBmKTsKKyAgRVhQRUNUX0VRKCdnJywgZyk7Cit9CisKKy8vIFRoZSBB
Q1RJT04qKCkgbWFjcm9zIHRyaWdnZXIgd2FybmluZyBDNDEwMCAodW5yZWZlcmVuY2VkIGZvcm1h
bAorLy8gcGFyYW1ldGVyKSBpbiBNU1ZDIHdpdGggLVc0LiAgVW5mb3J0dW5hdGVseSB0aGV5IGNh
bm5vdCBiZSBmaXhlZCBpbgorLy8gdGhlIG1hY3JvIGRlZmluaXRpb24sIGFzIHRoZSB3YXJuaW5n
cyBhcmUgZ2VuZXJhdGVkIHdoZW4gdGhlIG1hY3JvCisvLyBpcyBleHBhbmRlZCBhbmQgbWFjcm8g
ZXhwYW5zaW9uIGNhbm5vdCBjb250YWluICNwcmFnbWEuICBUaGVyZWZvcmUKKy8vIHdlIHN1cHBy
ZXNzIHRoZW0gaGVyZS4KKyNpZmRlZiBfTVNDX1ZFUgorIyBwcmFnbWEgd2FybmluZyhwdXNoKQor
IyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMDApCisjZW5kaWYKKworLy8gVGVzdHMgdGhlIEFD
VElPTiooKSBtYWNybyBmYW1pbHkuCisKKy8vIFRlc3RzIHRoYXQgQUNUSU9OKCkgY2FuIGRlZmlu
ZSBhbiBhY3Rpb24gdGhhdCBkb2Vzbid0IHJlZmVyZW5jZSB0aGUKKy8vIG1vY2sgZnVuY3Rpb24g
YXJndW1lbnRzLgorQUNUSU9OKFJldHVybjUpIHsgcmV0dXJuIDU7IH0KKworVEVTVChBY3Rpb25N
YWNyb1Rlc3QsIFdvcmtzV2hlbk5vdFJlZmVyZW5jaW5nQXJndW1lbnRzKSB7CisgIEFjdGlvbjxk
b3VibGUoKT4gYTEgPSBSZXR1cm41KCk7CisgIEVYUEVDVF9ET1VCTEVfRVEoNSwgYTEuUGVyZm9y
bShtYWtlX3R1cGxlKCkpKTsKKworICBBY3Rpb248aW50KGRvdWJsZSwgYm9vbCk+IGEyID0gUmV0
dXJuNSgpOworICBFWFBFQ1RfRVEoNSwgYTIuUGVyZm9ybShtYWtlX3R1cGxlKDEsIHRydWUpKSk7
Cit9CisKKy8vIFRlc3RzIHRoYXQgQUNUSU9OKCkgY2FuIGRlZmluZSBhbiBhY3Rpb24gdGhhdCBy
ZXR1cm5zIHZvaWQuCitBQ1RJT04oSW5jcmVtZW50QXJnMSkgeyAoKmFyZzEpKys7IH0KKworVEVT
VChBY3Rpb25NYWNyb1Rlc3QsIFdvcmtzV2hlblJldHVybmluZ1ZvaWQpIHsKKyAgQWN0aW9uPHZv
aWQoaW50LCBpbnQqKT4gYTEgPSBJbmNyZW1lbnRBcmcxKCk7CisgIGludCBuID0gMDsKKyAgYTEu
UGVyZm9ybShtYWtlX3R1cGxlKDUsICZuKSk7CisgIEVYUEVDVF9FUSgxLCBuKTsKK30KKworLy8g
VGVzdHMgdGhhdCB0aGUgYm9keSBvZiBBQ1RJT04oKSBjYW4gcmVmZXJlbmNlIHRoZSB0eXBlIG9m
IHRoZQorLy8gYXJndW1lbnQuCitBQ1RJT04oSW5jcmVtZW50QXJnMikgeworICBTdGF0aWNBc3Nl
cnRUeXBlRXE8aW50KiwgYXJnMl90eXBlPigpOworICBhcmcyX3R5cGUgdGVtcCA9IGFyZzI7Cisg
ICgqdGVtcCkrKzsKK30KKworVEVTVChBY3Rpb25NYWNyb1Rlc3QsIENhblJlZmVyZW5jZUFyZ3Vt
ZW50VHlwZSkgeworICBBY3Rpb248dm9pZChpbnQsIGJvb2wsIGludCopPiBhMSA9IEluY3JlbWVu
dEFyZzIoKTsKKyAgaW50IG4gPSAwOworICBhMS5QZXJmb3JtKG1ha2VfdHVwbGUoNSwgZmFsc2Us
ICZuKSk7CisgIEVYUEVDVF9FUSgxLCBuKTsKK30KKworLy8gVGVzdHMgdGhhdCB0aGUgYm9keSBv
ZiBBQ1RJT04oKSBjYW4gcmVmZXJlbmNlIHRoZSBhcmd1bWVudCB0dXBsZQorLy8gdmlhIGFyZ3Nf
dHlwZSBhbmQgYXJncy4KK0FDVElPTihTdW0yKSB7CisgIFN0YXRpY0Fzc2VydFR5cGVFcTx0dXBs
ZTxpbnQsIGNoYXIsIGludCo+LCBhcmdzX3R5cGU+KCk7CisgIGFyZ3NfdHlwZSBhcmdzX2NvcHkg
PSBhcmdzOworICByZXR1cm4gZ2V0PDA+KGFyZ3NfY29weSkgKyBnZXQ8MT4oYXJnc19jb3B5KTsK
K30KKworVEVTVChBY3Rpb25NYWNyb1Rlc3QsIENhblJlZmVyZW5jZUFyZ3VtZW50VHVwbGUpIHsK
KyAgQWN0aW9uPGludChpbnQsIGNoYXIsIGludCopPiBhMSA9IFN1bTIoKTsKKyAgaW50IGR1bW15
ID0gMDsKKyAgRVhQRUNUX0VRKDExLCBhMS5QZXJmb3JtKG1ha2VfdHVwbGUoNSwgQ2hhcig2KSwg
JmR1bW15KSkpOworfQorCisvLyBUZXN0cyB0aGF0IHRoZSBib2R5IG9mIEFDVElPTigpIGNhbiBy
ZWZlcmVuY2UgdGhlIG1vY2sgZnVuY3Rpb24KKy8vIHR5cGUuCitpbnQgRHVtbXkoYm9vbCBmbGFn
KSB7IHJldHVybiBmbGFnPyAxIDogMDsgfQorCitBQ1RJT04oSW52b2tlRHVtbXkpIHsKKyAgU3Rh
dGljQXNzZXJ0VHlwZUVxPGludChib29sKSwgZnVuY3Rpb25fdHlwZT4oKTsKKyAgZnVuY3Rpb25f
dHlwZSogZnAgPSAmRHVtbXk7CisgIHJldHVybiAoKmZwKSh0cnVlKTsKK30KKworVEVTVChBY3Rp
b25NYWNyb1Rlc3QsIENhblJlZmVyZW5jZU1vY2tGdW5jdGlvblR5cGUpIHsKKyAgQWN0aW9uPGlu
dChib29sKT4gYTEgPSBJbnZva2VEdW1teSgpOworICBFWFBFQ1RfRVEoMSwgYTEuUGVyZm9ybSht
YWtlX3R1cGxlKHRydWUpKSk7CisgIEVYUEVDVF9FUSgxLCBhMS5QZXJmb3JtKG1ha2VfdHVwbGUo
ZmFsc2UpKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgdGhlIGJvZHkgb2YgQUNUSU9OKCkgY2FuIHJl
ZmVyZW5jZSB0aGUgbW9jayBmdW5jdGlvbidzCisvLyByZXR1cm4gdHlwZS4KK0FDVElPTihJbnZv
a2VEdW1teTIpIHsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPGludCwgcmV0dXJuX3R5cGU+KCk7Cisg
IHJldHVybl90eXBlIHJlc3VsdCA9IER1bW15KHRydWUpOworICByZXR1cm4gcmVzdWx0OworfQor
CitURVNUKEFjdGlvbk1hY3JvVGVzdCwgQ2FuUmVmZXJlbmNlTW9ja0Z1bmN0aW9uUmV0dXJuVHlw
ZSkgeworICBBY3Rpb248aW50KGJvb2wpPiBhMSA9IEludm9rZUR1bW15MigpOworICBFWFBFQ1Rf
RVEoMSwgYTEuUGVyZm9ybShtYWtlX3R1cGxlKHRydWUpKSk7CisgIEVYUEVDVF9FUSgxLCBhMS5Q
ZXJmb3JtKG1ha2VfdHVwbGUoZmFsc2UpKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgQUNUSU9OKCkg
d29ya3MgZm9yIGFyZ3VtZW50cyBwYXNzZWQgYnkgY29uc3QgcmVmZXJlbmNlLgorQUNUSU9OKFJl
dHVybkFkZHJPZkNvbnN0Qm9vbFJlZmVyZW5jZUFyZykgeworICBTdGF0aWNBc3NlcnRUeXBlRXE8
Y29uc3QgYm9vbCYsIGFyZzFfdHlwZT4oKTsKKyAgcmV0dXJuICZhcmcxOworfQorCitURVNUKEFj
dGlvbk1hY3JvVGVzdCwgV29ya3NGb3JDb25zdFJlZmVyZW5jZUFyZykgeworICBBY3Rpb248Y29u
c3QgYm9vbCooaW50LCBjb25zdCBib29sJik+IGEgPSBSZXR1cm5BZGRyT2ZDb25zdEJvb2xSZWZl
cmVuY2VBcmcoKTsKKyAgY29uc3QgYm9vbCBiID0gZmFsc2U7CisgIEVYUEVDVF9FUSgmYiwgYS5Q
ZXJmb3JtKHR1cGxlPGludCwgY29uc3QgYm9vbCY+KDAsIGIpKSk7Cit9CisKKy8vIFRlc3RzIHRo
YXQgQUNUSU9OKCkgd29ya3MgZm9yIGFyZ3VtZW50cyBwYXNzZWQgYnkgbm9uLWNvbnN0IHJlZmVy
ZW5jZS4KK0FDVElPTihSZXR1cm5BZGRyT2ZJbnRSZWZlcmVuY2VBcmcpIHsKKyAgU3RhdGljQXNz
ZXJ0VHlwZUVxPGludCYsIGFyZzBfdHlwZT4oKTsKKyAgcmV0dXJuICZhcmcwOworfQorCitURVNU
KEFjdGlvbk1hY3JvVGVzdCwgV29ya3NGb3JOb25Db25zdFJlZmVyZW5jZUFyZykgeworICBBY3Rp
b248aW50KihpbnQmLCBib29sLCBpbnQpPiBhID0gUmV0dXJuQWRkck9mSW50UmVmZXJlbmNlQXJn
KCk7CisgIGludCBuID0gMDsKKyAgRVhQRUNUX0VRKCZuLCBhLlBlcmZvcm0odHVwbGU8aW50Jiwg
Ym9vbCwgaW50PihuLCB0cnVlLCAxKSkpOworfQorCisvLyBUZXN0cyB0aGF0IEFDVElPTigpIGNh
biBiZSB1c2VkIGluIGEgbmFtZXNwYWNlLgorbmFtZXNwYWNlIGFjdGlvbl90ZXN0IHsKK0FDVElP
TihTdW0pIHsgcmV0dXJuIGFyZzAgKyBhcmcxOyB9Cit9ICAvLyBuYW1lc3BhY2UgYWN0aW9uX3Rl
c3QKKworVEVTVChBY3Rpb25NYWNyb1Rlc3QsIFdvcmtzSW5OYW1lc3BhY2UpIHsKKyAgQWN0aW9u
PGludChpbnQsIGludCk+IGExID0gYWN0aW9uX3Rlc3Q6OlN1bSgpOworICBFWFBFQ1RfRVEoMywg
YTEuUGVyZm9ybShtYWtlX3R1cGxlKDEsIDIpKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgdGhlIHNh
bWUgQUNUSU9OIGRlZmluaXRpb24gd29ya3MgZm9yIG1vY2sgZnVuY3Rpb25zIHdpdGgKKy8vIGRp
ZmZlcmVudCBhcmd1bWVudCBudW1iZXJzLgorQUNUSU9OKFBsdXNUd28pIHsgcmV0dXJuIGFyZzAg
KyAyOyB9CisKK1RFU1QoQWN0aW9uTWFjcm9UZXN0LCBXb3Jrc0ZvckRpZmZlcmVudEFyZ3VtZW50
TnVtYmVycykgeworICBBY3Rpb248aW50KGludCk+IGExID0gUGx1c1R3bygpOworICBFWFBFQ1Rf
RVEoNCwgYTEuUGVyZm9ybShtYWtlX3R1cGxlKDIpKSk7CisKKyAgQWN0aW9uPGRvdWJsZShmbG9h
dCwgdm9pZCopPiBhMiA9IFBsdXNUd28oKTsKKyAgaW50IGR1bW15OworICBFWFBFQ1RfRE9VQkxF
X0VRKDYsIGEyLlBlcmZvcm0obWFrZV90dXBsZSg0LjBmLCAmZHVtbXkpKSk7Cit9CisKKy8vIFRl
c3RzIHRoYXQgQUNUSU9OX1AgY2FuIGRlZmluZSBhIHBhcmFtZXRlcml6ZWQgYWN0aW9uLgorQUNU
SU9OX1AoUGx1cywgbikgeyByZXR1cm4gYXJnMCArIG47IH0KKworVEVTVChBY3Rpb25QTWFjcm9U
ZXN0LCBEZWZpbmVzUGFyYW1ldGVyaXplZEFjdGlvbikgeworICBBY3Rpb248aW50KGludCBtLCBi
b29sIHQpPiBhMSA9IFBsdXMoOSk7CisgIEVYUEVDVF9FUSgxMCwgYTEuUGVyZm9ybShtYWtlX3R1
cGxlKDEsIHRydWUpKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgdGhlIGJvZHkgb2YgQUNUSU9OX1Ag
Y2FuIHJlZmVyZW5jZSB0aGUgYXJndW1lbnQgdHlwZXMKKy8vIGFuZCB0aGUgcGFyYW1ldGVyIHR5
cGUuCitBQ1RJT05fUChUeXBlZFBsdXMsIG4pIHsKKyAgYXJnMF90eXBlIHQxID0gYXJnMDsKKyAg
bl90eXBlIHQyID0gbjsKKyAgcmV0dXJuIHQxICsgdDI7Cit9CisKK1RFU1QoQWN0aW9uUE1hY3Jv
VGVzdCwgQ2FuUmVmZXJlbmNlQXJndW1lbnRBbmRQYXJhbWV0ZXJUeXBlcykgeworICBBY3Rpb248
aW50KGNoYXIgbSwgYm9vbCB0KT4gYTEgPSBUeXBlZFBsdXMoOSk7CisgIEVYUEVDVF9FUSgxMCwg
YTEuUGVyZm9ybShtYWtlX3R1cGxlKENoYXIoMSksIHRydWUpKSk7Cit9CisKKy8vIFRlc3RzIHRo
YXQgYSBwYXJhbWV0ZXJpemVkIGFjdGlvbiBjYW4gYmUgdXNlZCBpbiBhbnkgbW9jayBmdW5jdGlv
bgorLy8gd2hvc2UgdHlwZSBpcyBjb21wYXRpYmxlLgorVEVTVChBY3Rpb25QTWFjcm9UZXN0LCBX
b3Jrc0luQ29tcGF0aWJsZU1vY2tGdW5jdGlvbikgeworICBBY3Rpb248c3RkOjpzdHJpbmcoY29u
c3Qgc3RkOjpzdHJpbmcmIHMpPiBhMSA9IFBsdXMoInRhaWwiKTsKKyAgY29uc3Qgc3RkOjpzdHJp
bmcgcmUgPSAicmUiOworICBFWFBFQ1RfRVEoInJldGFpbCIsIGExLlBlcmZvcm0odHVwbGU8Y29u
c3Qgc3RkOjpzdHJpbmcmPihyZSkpKTsKK30KKworLy8gVGVzdHMgdGhhdCB3ZSBjYW4gdXNlIEFD
VElPTiooKSB0byBkZWZpbmUgYWN0aW9ucyBvdmVybG9hZGVkIG9uIHRoZQorLy8gbnVtYmVyIG9m
IHBhcmFtZXRlcnMuCisKK0FDVElPTihPdmVybG9hZGVkQWN0aW9uKSB7IHJldHVybiBhcmcwID8g
YXJnMSA6ICJoZWxsbyI7IH0KKworQUNUSU9OX1AoT3ZlcmxvYWRlZEFjdGlvbiwgZGVmYXVsdF92
YWx1ZSkgeworICByZXR1cm4gYXJnMCA/IGFyZzEgOiBkZWZhdWx0X3ZhbHVlOworfQorCitBQ1RJ
T05fUDIoT3ZlcmxvYWRlZEFjdGlvbiwgdHJ1ZV92YWx1ZSwgZmFsc2VfdmFsdWUpIHsKKyAgcmV0
dXJuIGFyZzAgPyB0cnVlX3ZhbHVlIDogZmFsc2VfdmFsdWU7Cit9CisKK1RFU1QoQWN0aW9uTWFj
cm9UZXN0LCBDYW5EZWZpbmVPdmVybG9hZGVkQWN0aW9ucykgeworICB0eXBlZGVmIEFjdGlvbjxj
b25zdCBjaGFyKihib29sLCBjb25zdCBjaGFyKik+IE15QWN0aW9uOworCisgIGNvbnN0IE15QWN0
aW9uIGExID0gT3ZlcmxvYWRlZEFjdGlvbigpOworICBFWFBFQ1RfU1RSRVEoImhlbGxvIiwgYTEu
UGVyZm9ybShtYWtlX3R1cGxlKGZhbHNlLCBDaGFyUHRyKCJ3b3JsZCIpKSkpOworICBFWFBFQ1Rf
U1RSRVEoIndvcmxkIiwgYTEuUGVyZm9ybShtYWtlX3R1cGxlKHRydWUsIENoYXJQdHIoIndvcmxk
IikpKSk7CisKKyAgY29uc3QgTXlBY3Rpb24gYTIgPSBPdmVybG9hZGVkQWN0aW9uKCJoaSIpOwor
ICBFWFBFQ1RfU1RSRVEoImhpIiwgYTIuUGVyZm9ybShtYWtlX3R1cGxlKGZhbHNlLCBDaGFyUHRy
KCJ3b3JsZCIpKSkpOworICBFWFBFQ1RfU1RSRVEoIndvcmxkIiwgYTIuUGVyZm9ybShtYWtlX3R1
cGxlKHRydWUsIENoYXJQdHIoIndvcmxkIikpKSk7CisKKyAgY29uc3QgTXlBY3Rpb24gYTMgPSBP
dmVybG9hZGVkQWN0aW9uKCJoaSIsICJ5b3UiKTsKKyAgRVhQRUNUX1NUUkVRKCJoaSIsIGEzLlBl
cmZvcm0obWFrZV90dXBsZSh0cnVlLCBDaGFyUHRyKCJ3b3JsZCIpKSkpOworICBFWFBFQ1RfU1RS
RVEoInlvdSIsIGEzLlBlcmZvcm0obWFrZV90dXBsZShmYWxzZSwgQ2hhclB0cigid29ybGQiKSkp
KTsKK30KKworLy8gVGVzdHMgQUNUSU9OX1BuIHdoZXJlIG4gPj0gMy4KKworQUNUSU9OX1AzKFBs
dXMsIG0sIG4sIGspIHsgcmV0dXJuIGFyZzAgKyBtICsgbiArIGs7IH0KKworVEVTVChBY3Rpb25Q
bk1hY3JvVGVzdCwgV29ya3NGb3IzUGFyYW1ldGVycykgeworICBBY3Rpb248ZG91YmxlKGludCBt
LCBib29sIHQpPiBhMSA9IFBsdXMoMTAwLCAyMCwgMy40KTsKKyAgRVhQRUNUX0RPVUJMRV9FUSgz
MTIzLjQsIGExLlBlcmZvcm0obWFrZV90dXBsZSgzMDAwLCB0cnVlKSkpOworCisgIEFjdGlvbjxz
dGQ6OnN0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgcyk+IGEyID0gUGx1cygidGFpbCIsICItIiwg
Ij4iKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgcmUgPSAicmUiOworICBFWFBFQ1RfRVEoInJldGFp
bC0+IiwgYTIuUGVyZm9ybSh0dXBsZTxjb25zdCBzdGQ6OnN0cmluZyY+KHJlKSkpOworfQorCitB
Q1RJT05fUDQoUGx1cywgcDAsIHAxLCBwMiwgcDMpIHsgcmV0dXJuIGFyZzAgKyBwMCArIHAxICsg
cDIgKyBwMzsgfQorCitURVNUKEFjdGlvblBuTWFjcm9UZXN0LCBXb3Jrc0ZvcjRQYXJhbWV0ZXJz
KSB7CisgIEFjdGlvbjxpbnQoaW50KT4gYTEgPSBQbHVzKDEsIDIsIDMsIDQpOworICBFWFBFQ1Rf
RVEoMTAgKyAxICsgMiArIDMgKyA0LCBhMS5QZXJmb3JtKG1ha2VfdHVwbGUoMTApKSk7Cit9CisK
K0FDVElPTl9QNShQbHVzLCBwMCwgcDEsIHAyLCBwMywgcDQpIHsgcmV0dXJuIGFyZzAgKyBwMCAr
IHAxICsgcDIgKyBwMyArIHA0OyB9CisKK1RFU1QoQWN0aW9uUG5NYWNyb1Rlc3QsIFdvcmtzRm9y
NVBhcmFtZXRlcnMpIHsKKyAgQWN0aW9uPGludChpbnQpPiBhMSA9IFBsdXMoMSwgMiwgMywgNCwg
NSk7CisgIEVYUEVDVF9FUSgxMCArIDEgKyAyICsgMyArIDQgKyA1LCBhMS5QZXJmb3JtKG1ha2Vf
dHVwbGUoMTApKSk7Cit9CisKK0FDVElPTl9QNihQbHVzLCBwMCwgcDEsIHAyLCBwMywgcDQsIHA1
KSB7CisgIHJldHVybiBhcmcwICsgcDAgKyBwMSArIHAyICsgcDMgKyBwNCArIHA1OworfQorCitU
RVNUKEFjdGlvblBuTWFjcm9UZXN0LCBXb3Jrc0ZvcjZQYXJhbWV0ZXJzKSB7CisgIEFjdGlvbjxp
bnQoaW50KT4gYTEgPSBQbHVzKDEsIDIsIDMsIDQsIDUsIDYpOworICBFWFBFQ1RfRVEoMTAgKyAx
ICsgMiArIDMgKyA0ICsgNSArIDYsIGExLlBlcmZvcm0obWFrZV90dXBsZSgxMCkpKTsKK30KKwor
QUNUSU9OX1A3KFBsdXMsIHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2KSB7CisgIHJldHVybiBh
cmcwICsgcDAgKyBwMSArIHAyICsgcDMgKyBwNCArIHA1ICsgcDY7Cit9CisKK1RFU1QoQWN0aW9u
UG5NYWNyb1Rlc3QsIFdvcmtzRm9yN1BhcmFtZXRlcnMpIHsKKyAgQWN0aW9uPGludChpbnQpPiBh
MSA9IFBsdXMoMSwgMiwgMywgNCwgNSwgNiwgNyk7CisgIEVYUEVDVF9FUSgxMCArIDEgKyAyICsg
MyArIDQgKyA1ICsgNiArIDcsIGExLlBlcmZvcm0obWFrZV90dXBsZSgxMCkpKTsKK30KKworQUNU
SU9OX1A4KFBsdXMsIHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2LCBwNykgeworICByZXR1cm4g
YXJnMCArIHAwICsgcDEgKyBwMiArIHAzICsgcDQgKyBwNSArIHA2ICsgcDc7Cit9CisKK1RFU1Qo
QWN0aW9uUG5NYWNyb1Rlc3QsIFdvcmtzRm9yOFBhcmFtZXRlcnMpIHsKKyAgQWN0aW9uPGludChp
bnQpPiBhMSA9IFBsdXMoMSwgMiwgMywgNCwgNSwgNiwgNywgOCk7CisgIEVYUEVDVF9FUSgxMCAr
IDEgKyAyICsgMyArIDQgKyA1ICsgNiArIDcgKyA4LCBhMS5QZXJmb3JtKG1ha2VfdHVwbGUoMTAp
KSk7Cit9CisKK0FDVElPTl9QOShQbHVzLCBwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBwNiwgcDcs
IHA4KSB7CisgIHJldHVybiBhcmcwICsgcDAgKyBwMSArIHAyICsgcDMgKyBwNCArIHA1ICsgcDYg
KyBwNyArIHA4OworfQorCitURVNUKEFjdGlvblBuTWFjcm9UZXN0LCBXb3Jrc0ZvcjlQYXJhbWV0
ZXJzKSB7CisgIEFjdGlvbjxpbnQoaW50KT4gYTEgPSBQbHVzKDEsIDIsIDMsIDQsIDUsIDYsIDcs
IDgsIDkpOworICBFWFBFQ1RfRVEoMTAgKyAxICsgMiArIDMgKyA0ICsgNSArIDYgKyA3ICsgOCAr
IDksIGExLlBlcmZvcm0obWFrZV90dXBsZSgxMCkpKTsKK30KKworQUNUSU9OX1AxMChQbHVzLCBw
MCwgcDEsIHAyLCBwMywgcDQsIHA1LCBwNiwgcDcsIHA4LCBsYXN0X3BhcmFtKSB7CisgIGFyZzBf
dHlwZSB0MCA9IGFyZzA7CisgIGxhc3RfcGFyYW1fdHlwZSB0OSA9IGxhc3RfcGFyYW07CisgIHJl
dHVybiB0MCArIHAwICsgcDEgKyBwMiArIHAzICsgcDQgKyBwNSArIHA2ICsgcDcgKyBwOCArIHQ5
OworfQorCitURVNUKEFjdGlvblBuTWFjcm9UZXN0LCBXb3Jrc0ZvcjEwUGFyYW1ldGVycykgewor
ICBBY3Rpb248aW50KGludCk+IGExID0gUGx1cygxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAx
MCk7CisgIEVYUEVDVF9FUSgxMCArIDEgKyAyICsgMyArIDQgKyA1ICsgNiArIDcgKyA4ICsgOSAr
IDEwLAorICAgICAgICAgICAgYTEuUGVyZm9ybShtYWtlX3R1cGxlKDEwKSkpOworfQorCisvLyBU
ZXN0cyB0aGF0IHRoZSBhY3Rpb24gYm9keSBjYW4gcHJvbW90ZSB0aGUgcGFyYW1ldGVyIHR5cGVz
LgorCitBQ1RJT05fUDIoUGFkQXJndW1lbnQsIHByZWZpeCwgc3VmZml4KSB7CisgIC8vIFRoZSBm
b2xsb3dpbmcgbGluZXMgcHJvbW90ZSB0aGUgdHdvIHBhcmFtZXRlcnMgdG8gZGVzaXJlZCB0eXBl
cy4KKyAgc3RkOjpzdHJpbmcgcHJlZml4X3N0cihwcmVmaXgpOworICBjaGFyIHN1ZmZpeF9jaGFy
ID0gc3RhdGljX2Nhc3Q8Y2hhcj4oc3VmZml4KTsKKyAgcmV0dXJuIHByZWZpeF9zdHIgKyBhcmcw
ICsgc3VmZml4X2NoYXI7Cit9CisKK1RFU1QoQWN0aW9uUG5NYWNyb1Rlc3QsIFNpbXBsZVR5cGVQ
cm9tb3Rpb24pIHsKKyAgQWN0aW9uPHN0ZDo6c3RyaW5nKGNvbnN0IGNoYXIqKT4gbm9fcHJvbW8g
PQorICAgICAgUGFkQXJndW1lbnQoc3RkOjpzdHJpbmcoImZvbyIpLCAncicpOworICBBY3Rpb248
c3RkOjpzdHJpbmcoY29uc3QgY2hhciopPiBwcm9tbyA9CisgICAgICBQYWRBcmd1bWVudCgiZm9v
Iiwgc3RhdGljX2Nhc3Q8aW50PigncicpKTsKKyAgRVhQRUNUX0VRKCJmb29iYXIiLCBub19wcm9t
by5QZXJmb3JtKG1ha2VfdHVwbGUoQ2hhclB0cigiYmEiKSkpKTsKKyAgRVhQRUNUX0VRKCJmb29i
YXIiLCBwcm9tby5QZXJmb3JtKG1ha2VfdHVwbGUoQ2hhclB0cigiYmEiKSkpKTsKK30KKworLy8g
VGVzdHMgdGhhdCB3ZSBjYW4gcGFydGlhbGx5IHJlc3RyaWN0IHBhcmFtZXRlciB0eXBlcyB1c2lu
ZyBhCisvLyBzdHJhaWdodC1mb3J3YXJkIHBhdHRlcm4uCisKKy8vIERlZmluZXMgYSBnZW5lcmlj
IGFjdGlvbiB0aGF0IGRvZXNuJ3QgcmVzdHJpY3QgdGhlIHR5cGVzIG9mIGl0cworLy8gcGFyYW1l
dGVycy4KK0FDVElPTl9QMyhDb25jYXRJbXBsLCBhLCBiLCBjKSB7CisgIHN0ZDo6c3RyaW5nc3Ry
ZWFtIHNzOworICBzcyA8PCBhIDw8IGIgPDwgYzsKKyAgcmV0dXJuIHNzLnN0cigpOworfQorCisv
LyBOZXh0LCB3ZSB0cnkgdG8gcmVzdHJpY3QgdGhhdCBlaXRoZXIgdGhlIGZpcnN0IHBhcmFtZXRl
ciBpcyBhCisvLyBzdHJpbmcsIG9yIHRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIGFuIGludC4KKwor
Ly8gRGVmaW5lcyBhIHBhcnRpYWxseSBzcGVjaWFsaXplZCB3cmFwcGVyIHRoYXQgcmVzdHJpY3Rz
IHRoZSBmaXJzdAorLy8gcGFyYW1ldGVyIHRvIHN0ZDo6c3RyaW5nLgordGVtcGxhdGUgPHR5cGVu
YW1lIFQxLCB0eXBlbmFtZSBUMj4KKy8vIENvbmNhdEltcGxBY3Rpb25QMyBpcyB0aGUgY2xhc3Mg
dGVtcGxhdGUgQUNUSU9OX1AzIHVzZXMgdG8KKy8vIGltcGxlbWVudCBDb25jYXRJbXBsLiAgV2Ug
c2hvdWxkbid0IGNoYW5nZSB0aGUgbmFtZSBhcyB0aGlzCisvLyBwYXR0ZXJuIHJlcXVpcmVzIHRo
ZSB1c2VyIHRvIHVzZSBpdCBkaXJlY3RseS4KK0NvbmNhdEltcGxBY3Rpb25QMzxzdGQ6OnN0cmlu
ZywgVDEsIFQyPgorQ29uY2F0KGNvbnN0IHN0ZDo6c3RyaW5nJiBhLCBUMSBiLCBUMiBjKSB7Cisg
IEdURVNUX0lOVEVOVElPTkFMX0NPTlNUX0NPTkRfUFVTSF8oKQorICBpZiAodHJ1ZSkgeworICBH
VEVTVF9JTlRFTlRJT05BTF9DT05TVF9DT05EX1BPUF8oKQorICAgIC8vIFRoaXMgYnJhbmNoIHZl
cmlmaWVzIHRoYXQgQ29uY2F0SW1wbCgpIGNhbiBiZSBpbnZva2VkIHdpdGhvdXQKKyAgICAvLyBl
eHBsaWNpdCB0ZW1wbGF0ZSBhcmd1bWVudHMuCisgICAgcmV0dXJuIENvbmNhdEltcGwoYSwgYiwg
Yyk7CisgIH0gZWxzZSB7CisgICAgLy8gVGhpcyBicmFuY2ggdmVyaWZpZXMgdGhhdCBDb25jYXRJ
bXBsKCkgY2FuIGFsc28gYmUgaW52b2tlZCB3aXRoCisgICAgLy8gZXhwbGljaXQgdGVtcGxhdGUg
YXJndW1lbnRzLiAgSXQgZG9lc24ndCByZWFsbHkgbmVlZCB0byBiZQorICAgIC8vIGV4ZWN1dGVk
IGFzIHRoaXMgaXMgYSBjb21waWxlLXRpbWUgdmVyaWZpY2F0aW9uLgorICAgIHJldHVybiBDb25j
YXRJbXBsPHN0ZDo6c3RyaW5nLCBUMSwgVDI+KGEsIGIsIGMpOworICB9Cit9CisKKy8vIERlZmlu
ZXMgYW5vdGhlciBwYXJ0aWFsbHkgc3BlY2lhbGl6ZWQgd3JhcHBlciB0aGF0IHJlc3RyaWN0cyB0
aGUKKy8vIHNlY29uZCBwYXJhbWV0ZXIgdG8gaW50LgordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0
eXBlbmFtZSBUMj4KK0NvbmNhdEltcGxBY3Rpb25QMzxUMSwgaW50LCBUMj4KK0NvbmNhdChUMSBh
LCBpbnQgYiwgVDIgYykgeworICByZXR1cm4gQ29uY2F0SW1wbChhLCBiLCBjKTsKK30KKworVEVT
VChBY3Rpb25Qbk1hY3JvVGVzdCwgQ2FuUGFydGlhbGx5UmVzdHJpY3RQYXJhbWV0ZXJUeXBlcykg
eworICBBY3Rpb248Y29uc3Qgc3RkOjpzdHJpbmcoKT4gYTEgPSBDb25jYXQoIkhlbGxvIiwgIjEi
LCAyKTsKKyAgRVhQRUNUX0VRKCJIZWxsbzEyIiwgYTEuUGVyZm9ybShtYWtlX3R1cGxlKCkpKTsK
KworICBhMSA9IENvbmNhdCgxLCAyLCAzKTsKKyAgRVhQRUNUX0VRKCIxMjMiLCBhMS5QZXJmb3Jt
KG1ha2VfdHVwbGUoKSkpOworfQorCisvLyBWZXJpZmllcyB0aGUgdHlwZSBvZiBhbiBBQ1RJT04q
LgorCitBQ1RJT04oRG9Gb28pIHt9CitBQ1RJT05fUChEb0ZvbywgcCkge30KK0FDVElPTl9QMihE
b0ZvbywgcDAsIHAxKSB7fQorCitURVNUKEFjdGlvblBuTWFjcm9UZXN0LCBUeXBlc0FyZUNvcnJl
Y3QpIHsKKyAgLy8gRG9Gb28oKSBtdXN0IGJlIGFzc2lnbmFibGUgdG8gYSBEb0Zvb0FjdGlvbiB2
YXJpYWJsZS4KKyAgRG9Gb29BY3Rpb24gYTAgPSBEb0ZvbygpOworCisgIC8vIERvRm9vKDEpIG11
c3QgYmUgYXNzaWduYWJsZSB0byBhIERvRm9vQWN0aW9uUCB2YXJpYWJsZS4KKyAgRG9Gb29BY3Rp
b25QPGludD4gYTEgPSBEb0ZvbygxKTsKKworICAvLyBEb0ZvbyhwMSwgLi4uLCBwaykgbXVzdCBi
ZSBhc3NpZ25hYmxlIHRvIGEgRG9Gb29BY3Rpb25QaworICAvLyB2YXJpYWJsZSwgYW5kIHNvIG9u
LgorICBEb0Zvb0FjdGlvblAyPGludCwgY2hhcj4gYTIgPSBEb0ZvbygxLCAnMicpOworICBQbHVz
QWN0aW9uUDM8aW50LCBpbnQsIGNoYXI+IGEzID0gUGx1cygxLCAyLCAnMycpOworICBQbHVzQWN0
aW9uUDQ8aW50LCBpbnQsIGludCwgY2hhcj4gYTQgPSBQbHVzKDEsIDIsIDMsICc0Jyk7CisgIFBs
dXNBY3Rpb25QNTxpbnQsIGludCwgaW50LCBpbnQsIGNoYXI+IGE1ID0gUGx1cygxLCAyLCAzLCA0
LCAnNScpOworICBQbHVzQWN0aW9uUDY8aW50LCBpbnQsIGludCwgaW50LCBpbnQsIGNoYXI+IGE2
ID0gUGx1cygxLCAyLCAzLCA0LCA1LCAnNicpOworICBQbHVzQWN0aW9uUDc8aW50LCBpbnQsIGlu
dCwgaW50LCBpbnQsIGludCwgY2hhcj4gYTcgPQorICAgICAgUGx1cygxLCAyLCAzLCA0LCA1LCA2
LCAnNycpOworICBQbHVzQWN0aW9uUDg8aW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50
LCBjaGFyPiBhOCA9CisgICAgICBQbHVzKDEsIDIsIDMsIDQsIDUsIDYsIDcsICc4Jyk7CisgIFBs
dXNBY3Rpb25QOTxpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgY2hhcj4g
YTkgPQorICAgICAgUGx1cygxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCAnOScpOworICBQbHVzQWN0
aW9uUDEwPGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGNoYXI+
IGExMCA9CisgICAgICBQbHVzKDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksICcwJyk7CisKKyAg
Ly8gQXZvaWQgInVudXNlZCB2YXJpYWJsZSIgd2FybmluZ3MuCisgICh2b2lkKWEwOworICAodm9p
ZClhMTsKKyAgKHZvaWQpYTI7CisgICh2b2lkKWEzOworICAodm9pZClhNDsKKyAgKHZvaWQpYTU7
CisgICh2b2lkKWE2OworICAodm9pZClhNzsKKyAgKHZvaWQpYTg7CisgICh2b2lkKWE5OworICAo
dm9pZClhMTA7Cit9CisKKy8vIFRlc3RzIHRoYXQgYW4gQUNUSU9OX1AqKCkgYWN0aW9uIGNhbiBi
ZSBleHBsaWNpdGx5IGluc3RhbnRpYXRlZAorLy8gd2l0aCByZWZlcmVuY2UtdHlwZWQgcGFyYW1l
dGVycy4KKworQUNUSU9OX1AoUGx1czEsIHgpIHsgcmV0dXJuIHg7IH0KK0FDVElPTl9QMihQbHVz
MiwgeCwgeSkgeyByZXR1cm4geCArIHk7IH0KK0FDVElPTl9QMyhQbHVzMywgeCwgeSwgeikgeyBy
ZXR1cm4geCArIHkgKyB6OyB9CitBQ1RJT05fUDEwKFBsdXMxMCwgYTAsIGExLCBhMiwgYTMsIGE0
LCBhNSwgYTYsIGE3LCBhOCwgYTkpIHsKKyAgcmV0dXJuIGEwICsgYTEgKyBhMiArIGEzICsgYTQg
KyBhNSArIGE2ICsgYTcgKyBhOCArIGE5OworfQorCitURVNUKEFjdGlvblBuTWFjcm9UZXN0LCBD
YW5FeHBsaWNpdGx5SW5zdGFudGlhdGVXaXRoUmVmZXJlbmNlVHlwZXMpIHsKKyAgaW50IHggPSAx
LCB5ID0gMiwgeiA9IDM7CisgIGNvbnN0IHR1cGxlPD4gZW1wdHkgPSBtYWtlX3R1cGxlKCk7CisK
KyAgQWN0aW9uPGludCgpPiBhID0gUGx1czE8aW50Jj4oeCk7CisgIEVYUEVDVF9FUSgxLCBhLlBl
cmZvcm0oZW1wdHkpKTsKKworICBhID0gUGx1czI8Y29uc3QgaW50JiwgaW50Jj4oeCwgeSk7Cisg
IEVYUEVDVF9FUSgzLCBhLlBlcmZvcm0oZW1wdHkpKTsKKworICBhID0gUGx1czM8aW50JiwgY29u
c3QgaW50JiwgaW50Jj4oeCwgeSwgeik7CisgIEVYUEVDVF9FUSg2LCBhLlBlcmZvcm0oZW1wdHkp
KTsKKworICBpbnQgblsxMF0gPSB7IDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwIH07Cisg
IGEgPSBQbHVzMTA8Y29uc3QgaW50JiwgaW50JiwgY29uc3QgaW50JiwgaW50JiwgY29uc3QgaW50
JiwgaW50JiwgY29uc3QgaW50JiwKKyAgICAgIGludCYsIGNvbnN0IGludCYsIGludCY+KG5bMF0s
IG5bMV0sIG5bMl0sIG5bM10sIG5bNF0sIG5bNV0sIG5bNl0sIG5bN10sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBuWzhdLCBuWzldKTsKKyAgRVhQRUNUX0VRKDU1LCBhLlBlcmZvcm0o
ZW1wdHkpKTsKK30KKworY2xhc3MgTnVsbGFyeUNvbnN0cnVjdG9yQ2xhc3MgeworIHB1YmxpYzoK
KyAgTnVsbGFyeUNvbnN0cnVjdG9yQ2xhc3MoKSA6IHZhbHVlXygxMjMpIHt9CisgIGludCB2YWx1
ZV87Cit9OworCisvLyBUZXN0cyB1c2luZyBSZXR1cm5OZXcoKSB3aXRoIGEgbnVsbGFyeSBjb25z
dHJ1Y3Rvci4KK1RFU1QoUmV0dXJuTmV3VGVzdCwgTm9BcmdzKSB7CisgIEFjdGlvbjxOdWxsYXJ5
Q29uc3RydWN0b3JDbGFzcyooKT4gYSA9IFJldHVybk5ldzxOdWxsYXJ5Q29uc3RydWN0b3JDbGFz
cz4oKTsKKyAgTnVsbGFyeUNvbnN0cnVjdG9yQ2xhc3MqIGMgPSBhLlBlcmZvcm0obWFrZV90dXBs
ZSgpKTsKKyAgRVhQRUNUX0VRKDEyMywgYy0+dmFsdWVfKTsKKyAgZGVsZXRlIGM7Cit9CisKK2Ns
YXNzIFVuYXJ5Q29uc3RydWN0b3JDbGFzcyB7CisgcHVibGljOgorICBleHBsaWNpdCBVbmFyeUNv
bnN0cnVjdG9yQ2xhc3MoaW50IHZhbHVlKSA6IHZhbHVlXyh2YWx1ZSkge30KKyAgaW50IHZhbHVl
XzsKK307CisKKy8vIFRlc3RzIHVzaW5nIFJldHVybk5ldygpIHdpdGggYSB1bmFyeSBjb25zdHJ1
Y3Rvci4KK1RFU1QoUmV0dXJuTmV3VGVzdCwgVW5hcnkpIHsKKyAgQWN0aW9uPFVuYXJ5Q29uc3Ry
dWN0b3JDbGFzcyooKT4gYSA9IFJldHVybk5ldzxVbmFyeUNvbnN0cnVjdG9yQ2xhc3M+KDQwMDAp
OworICBVbmFyeUNvbnN0cnVjdG9yQ2xhc3MqIGMgPSBhLlBlcmZvcm0obWFrZV90dXBsZSgpKTsK
KyAgRVhQRUNUX0VRKDQwMDAsIGMtPnZhbHVlXyk7CisgIGRlbGV0ZSBjOworfQorCitURVNUKFJl
dHVybk5ld1Rlc3QsIFVuYXJ5V29ya3NXaGVuTW9ja01ldGhvZEhhc0FyZ3MpIHsKKyAgQWN0aW9u
PFVuYXJ5Q29uc3RydWN0b3JDbGFzcyooYm9vbCwgaW50KT4gYSA9CisgICAgICBSZXR1cm5OZXc8
VW5hcnlDb25zdHJ1Y3RvckNsYXNzPig0MDAwKTsKKyAgVW5hcnlDb25zdHJ1Y3RvckNsYXNzKiBj
ID0gYS5QZXJmb3JtKG1ha2VfdHVwbGUoZmFsc2UsIDUpKTsKKyAgRVhQRUNUX0VRKDQwMDAsIGMt
PnZhbHVlXyk7CisgIGRlbGV0ZSBjOworfQorCitURVNUKFJldHVybk5ld1Rlc3QsIFVuYXJ5V29y
a3NXaGVuTW9ja01ldGhvZFJldHVybnNQb2ludGVyVG9Db25zdCkgeworICBBY3Rpb248Y29uc3Qg
VW5hcnlDb25zdHJ1Y3RvckNsYXNzKigpPiBhID0KKyAgICAgIFJldHVybk5ldzxVbmFyeUNvbnN0
cnVjdG9yQ2xhc3M+KDQwMDApOworICBjb25zdCBVbmFyeUNvbnN0cnVjdG9yQ2xhc3MqIGMgPSBh
LlBlcmZvcm0obWFrZV90dXBsZSgpKTsKKyAgRVhQRUNUX0VRKDQwMDAsIGMtPnZhbHVlXyk7Cisg
IGRlbGV0ZSBjOworfQorCitjbGFzcyBUZW5BcmdDb25zdHJ1Y3RvckNsYXNzIHsKKyBwdWJsaWM6
CisgIFRlbkFyZ0NvbnN0cnVjdG9yQ2xhc3MoaW50IGExLCBpbnQgYTIsIGludCBhMywgaW50IGE0
LCBpbnQgYTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGE2LCBpbnQgYTcsIGludCBh
OCwgaW50IGE5LCBpbnQgYTEwKQorICAgIDogdmFsdWVfKGExICsgYTIgKyBhMyArIGE0ICsgYTUg
KyBhNiArIGE3ICsgYTggKyBhOSArIGExMCkgeworICB9CisgIGludCB2YWx1ZV87Cit9OworCisv
LyBUZXN0cyB1c2luZyBSZXR1cm5OZXcoKSB3aXRoIGEgMTAtYXJndW1lbnQgY29uc3RydWN0b3Iu
CitURVNUKFJldHVybk5ld1Rlc3QsIENvbnN0cnVjdG9yVGhhdFRha2VzMTBBcmd1bWVudHMpIHsK
KyAgQWN0aW9uPFRlbkFyZ0NvbnN0cnVjdG9yQ2xhc3MqKCk+IGEgPQorICAgICAgUmV0dXJuTmV3
PFRlbkFyZ0NvbnN0cnVjdG9yQ2xhc3M+KDEwMDAwMDAwMDAsIDIwMDAwMDAwMCwgMzAwMDAwMDAs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDAwMDAwMCwgNTAwMDAw
LCA2MDAwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3MDAwLCA4
MDAsIDkwLCAwKTsKKyAgVGVuQXJnQ29uc3RydWN0b3JDbGFzcyogYyA9IGEuUGVyZm9ybShtYWtl
X3R1cGxlKCkpOworICBFWFBFQ1RfRVEoMTIzNDU2Nzg5MCwgYy0+dmFsdWVfKTsKKyAgZGVsZXRl
IGM7Cit9CisKKy8vIFRlc3RzIHRoYXQgQUNUSU9OX1RFTVBMQVRFIHdvcmtzIHdoZW4gdGhlcmUg
aXMgbm8gdmFsdWUgcGFyYW1ldGVyLgorQUNUSU9OX1RFTVBMQVRFKENyZWF0ZU5ldywKKyAgICAg
ICAgICAgICAgICBIQVNfMV9URU1QTEFURV9QQVJBTVModHlwZW5hbWUsIFQpLAorICAgICAgICAg
ICAgICAgIEFORF8wX1ZBTFVFX1BBUkFNUygpKSB7CisgIHJldHVybiBuZXcgVDsKK30KKworVEVT
VChBY3Rpb25UZW1wbGF0ZVRlc3QsIFdvcmtzV2l0aG91dFZhbHVlUGFyYW0pIHsKKyAgY29uc3Qg
QWN0aW9uPGludCooKT4gYSA9IENyZWF0ZU5ldzxpbnQ+KCk7CisgIGludCogcCA9IGEuUGVyZm9y
bShtYWtlX3R1cGxlKCkpOworICBkZWxldGUgcDsKK30KKworLy8gVGVzdHMgdGhhdCBBQ1RJT05f
VEVNUExBVEUgd29ya3Mgd2hlbiB0aGVyZSBhcmUgdmFsdWUgcGFyYW1ldGVycy4KK0FDVElPTl9U
RU1QTEFURShDcmVhdGVOZXcsCisgICAgICAgICAgICAgICAgSEFTXzFfVEVNUExBVEVfUEFSQU1T
KHR5cGVuYW1lLCBUKSwKKyAgICAgICAgICAgICAgICBBTkRfMV9WQUxVRV9QQVJBTVMoYTApKSB7
CisgIHJldHVybiBuZXcgVChhMCk7Cit9CisKK1RFU1QoQWN0aW9uVGVtcGxhdGVUZXN0LCBXb3Jr
c1dpdGhWYWx1ZVBhcmFtcykgeworICBjb25zdCBBY3Rpb248aW50KigpPiBhID0gQ3JlYXRlTmV3
PGludD4oNDIpOworICBpbnQqIHAgPSBhLlBlcmZvcm0obWFrZV90dXBsZSgpKTsKKyAgRVhQRUNU
X0VRKDQyLCAqcCk7CisgIGRlbGV0ZSBwOworfQorCisvLyBUZXN0cyB0aGF0IEFDVElPTl9URU1Q
TEFURSB3b3JrcyBmb3IgaW50ZWdyYWwgdGVtcGxhdGUgcGFyYW1ldGVycy4KK0FDVElPTl9URU1Q
TEFURShNeURlbGV0ZUFyZywKKyAgICAgICAgICAgICAgICBIQVNfMV9URU1QTEFURV9QQVJBTVMo
aW50LCBrKSwKKyAgICAgICAgICAgICAgICBBTkRfMF9WQUxVRV9QQVJBTVMoKSkgeworICBkZWxl
dGUgZ2V0PGs+KGFyZ3MpOworfQorCisvLyBSZXNldHMgYSBib29sIHZhcmlhYmxlIGluIHRoZSBk
ZXN0cnVjdG9yLgorY2xhc3MgQm9vbFJlc2V0dGVyIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IEJv
b2xSZXNldHRlcihib29sKiB2YWx1ZSkgOiB2YWx1ZV8odmFsdWUpIHt9CisgIH5Cb29sUmVzZXR0
ZXIoKSB7ICp2YWx1ZV8gPSBmYWxzZTsgfQorIHByaXZhdGU6CisgIGJvb2wqIHZhbHVlXzsKK307
CisKK1RFU1QoQWN0aW9uVGVtcGxhdGVUZXN0LCBXb3Jrc0ZvckludGVncmFsVGVtcGxhdGVQYXJh
bXMpIHsKKyAgY29uc3QgQWN0aW9uPHZvaWQoaW50KiwgQm9vbFJlc2V0dGVyKik+IGEgPSBNeURl
bGV0ZUFyZzwxPigpOworICBpbnQgbiA9IDA7CisgIGJvb2wgYiA9IHRydWU7CisgIEJvb2xSZXNl
dHRlciogcmVzZXR0ZXIgPSBuZXcgQm9vbFJlc2V0dGVyKCZiKTsKKyAgYS5QZXJmb3JtKG1ha2Vf
dHVwbGUoJm4sIHJlc2V0dGVyKSk7CisgIEVYUEVDVF9GQUxTRShiKTsgIC8vIFZlcmlmaWVzIHRo
YXQgcmVzZXR0ZXIgaXMgZGVsZXRlZC4KK30KKworLy8gVGVzdHMgdGhhdCBBQ1RJT05fVEVNUExB
VEVTIHdvcmtzIGZvciB0ZW1wbGF0ZSB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgorQUNUSU9OX1RFTVBM
QVRFKFJldHVyblNtYXJ0UG9pbnRlciwKKyAgICAgICAgICAgICAgICBIQVNfMV9URU1QTEFURV9Q
QVJBTVModGVtcGxhdGUgPHR5cGVuYW1lIFBvaW50ZWU+IGNsYXNzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBQb2ludGVyKSwKKyAgICAgICAgICAgICAgICBBTkRfMV9W
QUxVRV9QQVJBTVMocG9pbnRlZSkpIHsKKyAgcmV0dXJuIFBvaW50ZXI8cG9pbnRlZV90eXBlPihu
ZXcgcG9pbnRlZV90eXBlKHBvaW50ZWUpKTsKK30KKworVEVTVChBY3Rpb25UZW1wbGF0ZVRlc3Qs
IFdvcmtzRm9yVGVtcGxhdGVUZW1wbGF0ZVBhcmFtZXRlcnMpIHsKKyAgdXNpbmcgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6bGlua2VkX3B0cjsKKyAgY29uc3QgQWN0aW9uPGxpbmtlZF9wdHI8aW50Pigp
PiBhID0gUmV0dXJuU21hcnRQb2ludGVyPGxpbmtlZF9wdHI+KDQyKTsKKyAgbGlua2VkX3B0cjxp
bnQ+IHAgPSBhLlBlcmZvcm0obWFrZV90dXBsZSgpKTsKKyAgRVhQRUNUX0VRKDQyLCAqcCk7Cit9
CisKKy8vIFRlc3RzIHRoYXQgQUNUSU9OX1RFTVBMQVRFIHdvcmtzIGZvciAxMCB0ZW1wbGF0ZSBw
YXJhbWV0ZXJzLgordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUg
VDMsIGludCBrNCwgYm9vbCBrNSwKKyAgICAgICAgICB1bnNpZ25lZCBpbnQgazYsIHR5cGVuYW1l
IFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDk+CitzdHJ1Y3QgR2lhbnRUZW1wbGF0ZSB7Cisg
cHVibGljOgorICBleHBsaWNpdCBHaWFudFRlbXBsYXRlKGludCBhX3ZhbHVlKSA6IHZhbHVlKGFf
dmFsdWUpIHt9CisgIGludCB2YWx1ZTsKK307CisKK0FDVElPTl9URU1QTEFURShSZXR1cm5HaWFu
dCwKKyAgICAgICAgICAgICAgICBIQVNfMTBfVEVNUExBVEVfUEFSQU1TKAorICAgICAgICAgICAg
ICAgICAgICB0eXBlbmFtZSwgVDEsCisgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lLCBUMiwK
KyAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUsIFQzLAorICAgICAgICAgICAgICAgICAgICBp
bnQsIGs0LAorICAgICAgICAgICAgICAgICAgICBib29sLCBrNSwKKyAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50LCBrNiwKKyAgICAgICAgICAgICAgICAgICAgY2xhc3MsIFQ3LAorICAg
ICAgICAgICAgICAgICAgICBjbGFzcywgVDgsCisgICAgICAgICAgICAgICAgICAgIGNsYXNzLCBU
OSwKKyAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzLCBUMTAp
LAorICAgICAgICAgICAgICAgIEFORF8xX1ZBTFVFX1BBUkFNUyh2YWx1ZSkpIHsKKyAgcmV0dXJu
IEdpYW50VGVtcGxhdGU8VDEwPFQxPiwgVDIsIFQzLCBrNCwgazUsIGs2LCBUNywgVDgsIFQ5Pih2
YWx1ZSk7Cit9CisKK1RFU1QoQWN0aW9uVGVtcGxhdGVUZXN0LCBXb3Jrc0ZvcjEwVGVtcGxhdGVQ
YXJhbWV0ZXJzKSB7CisgIHVzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OmxpbmtlZF9wdHI7Cisg
IHR5cGVkZWYgR2lhbnRUZW1wbGF0ZTxsaW5rZWRfcHRyPGludD4sIGJvb2wsIGRvdWJsZSwgNSwK
KyAgICAgIHRydWUsIDYsIGNoYXIsIHVuc2lnbmVkLCBpbnQ+IEdpYW50OworICBjb25zdCBBY3Rp
b248R2lhbnQoKT4gYSA9IFJldHVybkdpYW50PAorICAgICAgaW50LCBib29sLCBkb3VibGUsIDUs
IHRydWUsIDYsIGNoYXIsIHVuc2lnbmVkLCBpbnQsIGxpbmtlZF9wdHI+KDQyKTsKKyAgR2lhbnQg
Z2lhbnQgPSBhLlBlcmZvcm0obWFrZV90dXBsZSgpKTsKKyAgRVhQRUNUX0VRKDQyLCBnaWFudC52
YWx1ZSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgQUNUSU9OX1RFTVBMQVRFIHdvcmtzIGZvciAxMCB2
YWx1ZSBwYXJhbWV0ZXJzLgorQUNUSU9OX1RFTVBMQVRFKFJldHVyblN1bSwKKyAgICAgICAgICAg
ICAgICBIQVNfMV9URU1QTEFURV9QQVJBTVModHlwZW5hbWUsIE51bWJlciksCisgICAgICAgICAg
ICAgICAgQU5EXzEwX1ZBTFVFX1BBUkFNUyh2MSwgdjIsIHYzLCB2NCwgdjUsIHY2LCB2Nywgdjgs
IHY5LCB2MTApKSB7CisgIHJldHVybiBzdGF0aWNfY2FzdDxOdW1iZXI+KHYxKSArIHYyICsgdjMg
KyB2NCArIHY1ICsgdjYgKyB2NyArIHY4ICsgdjkgKyB2MTA7Cit9CisKK1RFU1QoQWN0aW9uVGVt
cGxhdGVUZXN0LCBXb3Jrc0ZvcjEwVmFsdWVQYXJhbWV0ZXJzKSB7CisgIGNvbnN0IEFjdGlvbjxp
bnQoKT4gYSA9IFJldHVyblN1bTxpbnQ+KDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwKTsK
KyAgRVhQRUNUX0VRKDU1LCBhLlBlcmZvcm0obWFrZV90dXBsZSgpKSk7Cit9CisKKy8vIFRlc3Rz
IHRoYXQgQUNUSU9OX1RFTVBMQVRFIGFuZCBBQ1RJT04vQUNUSU9OX1AqIGNhbiBiZSBvdmVybG9h
ZGVkCisvLyBvbiB0aGUgbnVtYmVyIG9mIHZhbHVlIHBhcmFtZXRlcnMuCisKK0FDVElPTihSZXR1
cm5TdW0pIHsgcmV0dXJuIDA7IH0KKworQUNUSU9OX1AoUmV0dXJuU3VtLCB4KSB7IHJldHVybiB4
OyB9CisKK0FDVElPTl9URU1QTEFURShSZXR1cm5TdW0sCisgICAgICAgICAgICAgICAgSEFTXzFf
VEVNUExBVEVfUEFSQU1TKHR5cGVuYW1lLCBOdW1iZXIpLAorICAgICAgICAgICAgICAgIEFORF8y
X1ZBTFVFX1BBUkFNUyh2MSwgdjIpKSB7CisgIHJldHVybiBzdGF0aWNfY2FzdDxOdW1iZXI+KHYx
KSArIHYyOworfQorCitBQ1RJT05fVEVNUExBVEUoUmV0dXJuU3VtLAorICAgICAgICAgICAgICAg
IEhBU18xX1RFTVBMQVRFX1BBUkFNUyh0eXBlbmFtZSwgTnVtYmVyKSwKKyAgICAgICAgICAgICAg
ICBBTkRfM19WQUxVRV9QQVJBTVModjEsIHYyLCB2MykpIHsKKyAgcmV0dXJuIHN0YXRpY19jYXN0
PE51bWJlcj4odjEpICsgdjIgKyB2MzsKK30KKworQUNUSU9OX1RFTVBMQVRFKFJldHVyblN1bSwK
KyAgICAgICAgICAgICAgICBIQVNfMl9URU1QTEFURV9QQVJBTVModHlwZW5hbWUsIE51bWJlciwg
aW50LCBrKSwKKyAgICAgICAgICAgICAgICBBTkRfNF9WQUxVRV9QQVJBTVModjEsIHYyLCB2Mywg
djQpKSB7CisgIHJldHVybiBzdGF0aWNfY2FzdDxOdW1iZXI+KHYxKSArIHYyICsgdjMgKyB2NCAr
IGs7Cit9CisKK1RFU1QoQWN0aW9uVGVtcGxhdGVUZXN0LCBDYW5CZU92ZXJsb2FkZWRPbk51bWJl
ck9mVmFsdWVQYXJhbWV0ZXJzKSB7CisgIGNvbnN0IEFjdGlvbjxpbnQoKT4gYTAgPSBSZXR1cm5T
dW0oKTsKKyAgY29uc3QgQWN0aW9uPGludCgpPiBhMSA9IFJldHVyblN1bSgxKTsKKyAgY29uc3Qg
QWN0aW9uPGludCgpPiBhMiA9IFJldHVyblN1bTxpbnQ+KDEsIDIpOworICBjb25zdCBBY3Rpb248
aW50KCk+IGEzID0gUmV0dXJuU3VtPGludD4oMSwgMiwgMyk7CisgIGNvbnN0IEFjdGlvbjxpbnQo
KT4gYTQgPSBSZXR1cm5TdW08aW50LCAxMDAwMD4oMjAwMCwgMzAwLCA0MCwgNSk7CisgIEVYUEVD
VF9FUSgwLCBhMC5QZXJmb3JtKG1ha2VfdHVwbGUoKSkpOworICBFWFBFQ1RfRVEoMSwgYTEuUGVy
Zm9ybShtYWtlX3R1cGxlKCkpKTsKKyAgRVhQRUNUX0VRKDMsIGEyLlBlcmZvcm0obWFrZV90dXBs
ZSgpKSk7CisgIEVYUEVDVF9FUSg2LCBhMy5QZXJmb3JtKG1ha2VfdHVwbGUoKSkpOworICBFWFBF
Q1RfRVEoMTIzNDUsIGE0LlBlcmZvcm0obWFrZV90dXBsZSgpKSk7Cit9CisKKyNpZmRlZiBfTVND
X1ZFUgorIyBwcmFnbWEgd2FybmluZyhwb3ApCisjZW5kaWYKKworfSAgLy8gbmFtZXNwYWNlIGdt
b2NrX2dlbmVyYXRlZF9hY3Rpb25zX3Rlc3QKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2NrLWdlbmVyYXRlZC1mdW5jdGlvbi1tb2NrZXJz
X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2NrLWdlbmVyYXRlZC1mdW5jdGlvbi1tb2Nr
ZXJzX3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDhlNWViYTFiY2ExOGMwNDM5YzVhMGM4ZGViMmRiMWE4
NzhlMDVkYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2stZ2VuZXJh
dGVkLWZ1bmN0aW9uLW1vY2tlcnNfdGVzdC5jYwpAQCAtMCwwICsxLDYyNCBAQAorLy8gQ29weXJp
Z2h0IDIwMDcsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisv
LyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRp
b24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisv
LyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEF1dGhvcjogd2FuQGdv
b2dsZS5jb20gKFpoYW55b25nIFdhbikKKworLy8gR29vZ2xlIE1vY2sgLSBhIGZyYW1ld29yayBm
b3Igd3JpdGluZyBDKysgbW9jayBjbGFzc2VzLgorLy8KKy8vIFRoaXMgZmlsZSB0ZXN0cyB0aGUg
ZnVuY3Rpb24gbW9ja2VyIGNsYXNzZXMuCisKKyNpbmNsdWRlICJnbW9jay9nbW9jay1nZW5lcmF0
ZWQtZnVuY3Rpb24tbW9ja2Vycy5oIgorCisjaWYgR1RFU1RfT1NfV0lORE9XUworLy8gTVNETiBz
YXlzIHRoZSBoZWFkZXIgZmlsZSB0byBiZSBpbmNsdWRlZCBmb3IgU1RETUVUSE9EIGlzIEJhc2VU
eXBzLmggYnV0CisvLyB3ZSBhcmUgZ2V0dGluZyBjb21waWxlciBlcnJvcnMgaWYgd2UgdXNlIGJh
c2V0eXBzLmgsIGhlbmNlIGluY2x1ZGluZworLy8gb2JqYmFzZS5oIGZvciBkZWZpbml0aW9uIG9m
IFNURE1FVEhPRC4KKyMgaW5jbHVkZSA8b2JqYmFzZS5oPgorI2VuZGlmICAvLyBHVEVTVF9PU19X
SU5ET1dTCisKKyNpbmNsdWRlIDxtYXA+CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgImdt
b2NrL2dtb2NrLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworLy8gVGhlcmUgaXMgYSBi
dWcgaW4gTVNWQyAoZml4ZWQgaW4gVlMgMjAwOCkgdGhhdCBwcmV2ZW50cyBjcmVhdGluZyBhCisv
LyBtb2NrIGZvciBhIGZ1bmN0aW9uIHdpdGggY29uc3QgYXJndW1lbnRzLCBzbyB3ZSBkb24ndCB0
ZXN0IHN1Y2gKKy8vIGNhc2VzIGZvciBNU1ZDIHZlcnNpb25zIG9sZGVyIHRoYW4gMjAwOC4KKyNp
ZiAhR1RFU1RfT1NfV0lORE9XUyB8fCAoX01TQ19WRVIgPj0gMTUwMCkKKyMgZGVmaW5lIEdNT0NL
X0FMTE9XU19DT05TVF9QQVJBTV9GVU5DVElPTlMKKyNlbmRpZiAgLy8gIUdURVNUX09TX1dJTkRP
V1MgfHwgKF9NU0NfVkVSID49IDE1MDApCisKK25hbWVzcGFjZSB0ZXN0aW5nIHsKK25hbWVzcGFj
ZSBnbW9ja19nZW5lcmF0ZWRfZnVuY3Rpb25fbW9ja2Vyc190ZXN0IHsKKwordXNpbmcgdGVzdGlu
Zzo6XzsKK3VzaW5nIHRlc3Rpbmc6OkE7Cit1c2luZyB0ZXN0aW5nOjpBbjsKK3VzaW5nIHRlc3Rp
bmc6OkFueU51bWJlcjsKK3VzaW5nIHRlc3Rpbmc6OkNvbnN0OwordXNpbmcgdGVzdGluZzo6RG9E
ZWZhdWx0OwordXNpbmcgdGVzdGluZzo6RXE7Cit1c2luZyB0ZXN0aW5nOjpMdDsKK3VzaW5nIHRl
c3Rpbmc6Ok1vY2tGdW5jdGlvbjsKK3VzaW5nIHRlc3Rpbmc6OlJlZjsKK3VzaW5nIHRlc3Rpbmc6
OlJldHVybjsKK3VzaW5nIHRlc3Rpbmc6OlJldHVyblJlZjsKK3VzaW5nIHRlc3Rpbmc6OlR5cGVk
RXE7CisKK2NsYXNzIEZvb0ludGVyZmFjZSB7CisgcHVibGljOgorICB2aXJ0dWFsIH5Gb29JbnRl
cmZhY2UoKSB7fQorCisgIHZpcnR1YWwgdm9pZCBWb2lkUmV0dXJuaW5nKGludCB4KSA9IDA7CisK
KyAgdmlydHVhbCBpbnQgTnVsbGFyeSgpID0gMDsKKyAgdmlydHVhbCBib29sIFVuYXJ5KGludCB4
KSA9IDA7CisgIHZpcnR1YWwgbG9uZyBCaW5hcnkoc2hvcnQgeCwgaW50IHkpID0gMDsgIC8vIE5P
TElOVAorICB2aXJ0dWFsIGludCBEZWNpbWFsKGJvb2wgYiwgY2hhciBjLCBzaG9ydCBkLCBpbnQg
ZSwgbG9uZyBmLCAgLy8gTk9MSU5UCisgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZywgZG91
YmxlIGgsIHVuc2lnbmVkIGksIGNoYXIqIGosCisgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c3RkOjpzdHJpbmcmIGspID0gMDsKKworICB2aXJ0dWFsIGJvb2wgVGFrZXNOb25Db25zdFJlZmVy
ZW5jZShpbnQmIG4pID0gMDsgIC8vIE5PTElOVAorICB2aXJ0dWFsIHN0ZDo6c3RyaW5nIFRha2Vz
Q29uc3RSZWZlcmVuY2UoY29uc3QgaW50JiBuKSA9IDA7CisjaWZkZWYgR01PQ0tfQUxMT1dTX0NP
TlNUX1BBUkFNX0ZVTkNUSU9OUworICB2aXJ0dWFsIGJvb2wgVGFrZXNDb25zdChjb25zdCBpbnQg
eCkgPSAwOworI2VuZGlmICAvLyBHTU9DS19BTExPV1NfQ09OU1RfUEFSQU1fRlVOQ1RJT05TCisK
KyAgdmlydHVhbCBpbnQgT3ZlcmxvYWRlZE9uQXJndW1lbnROdW1iZXIoKSA9IDA7CisgIHZpcnR1
YWwgaW50IE92ZXJsb2FkZWRPbkFyZ3VtZW50TnVtYmVyKGludCBuKSA9IDA7CisKKyAgdmlydHVh
bCBpbnQgT3ZlcmxvYWRlZE9uQXJndW1lbnRUeXBlKGludCBuKSA9IDA7CisgIHZpcnR1YWwgY2hh
ciBPdmVybG9hZGVkT25Bcmd1bWVudFR5cGUoY2hhciBjKSA9IDA7CisKKyAgdmlydHVhbCBpbnQg
T3ZlcmxvYWRlZE9uQ29uc3RuZXNzKCkgPSAwOworICB2aXJ0dWFsIGNoYXIgT3ZlcmxvYWRlZE9u
Q29uc3RuZXNzKCkgY29uc3QgPSAwOworCisgIHZpcnR1YWwgaW50IFR5cGVXaXRoSG9sZShpbnQg
KCpmdW5jKSgpKSA9IDA7CisgIHZpcnR1YWwgaW50IFR5cGVXaXRoQ29tbWEoY29uc3Qgc3RkOjpt
YXA8aW50LCBzdGQ6OnN0cmluZz4mIGFfbWFwKSA9IDA7CisKKyNpZiBHVEVTVF9PU19XSU5ET1dT
CisgIFNURE1FVEhPRF8oaW50LCBDVE51bGxhcnkpKCkgPSAwOworICBTVERNRVRIT0RfKGJvb2ws
IENUVW5hcnkpKGludCB4KSA9IDA7CisgIFNURE1FVEhPRF8oaW50LCBDVERlY2ltYWwpCisgIChi
b29sIGIsIGNoYXIgYywgc2hvcnQgZCwgaW50IGUsIGxvbmcgZiwgIC8vIE5PTElOVAorICAgZmxv
YXQgZywgZG91YmxlIGgsIHVuc2lnbmVkIGksIGNoYXIqIGosIGNvbnN0IHN0ZDo6c3RyaW5nJiBr
KSA9IDA7CisgIFNURE1FVEhPRF8oY2hhciwgQ1RDb25zdCkoaW50IHgpIGNvbnN0ID0gMDsKKyNl
bmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworfTsKKworLy8gQ29uc3QgcXVhbGlmaWVycyBvbiBh
cmd1bWVudHMgd2VyZSBvbmNlIChpbmNvcnJlY3RseSkgY29uc2lkZXJlZAorLy8gc2lnbmlmaWNh
bnQgaW4gZGV0ZXJtaW5pbmcgd2hldGhlciB0d28gdmlydHVhbCBmdW5jdGlvbnMgaGFkIHRoZSBz
YW1lCisvLyBzaWduYXR1cmUuIFRoaXMgd2FzIGZpeGVkIGluIFZpc3VhbCBTdHVkaW8gMjAwOC4g
SG93ZXZlciwgdGhlIGNvbXBpbGVyCisvLyBzdGlsbCBlbWl0cyBhIHdhcm5pbmcgdGhhdCBhbGVy
dHMgYWJvdXQgdGhpcyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisjaWZkZWYgX01TQ19WRVIKKyMgcHJh
Z21hIHdhcm5pbmcocHVzaCkKKyMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQzNzMpCisjZW5k
aWYKK2NsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vSW50ZXJmYWNlIHsKKyBwdWJsaWM6CisgIE1v
Y2tGb28oKSB7fQorCisgIC8vIE1ha2VzIHN1cmUgdGhhdCBhIG1vY2sgZnVuY3Rpb24gcGFyYW1l
dGVyIGNhbiBiZSBuYW1lZC4KKyAgTU9DS19NRVRIT0QxKFZvaWRSZXR1cm5pbmcsIHZvaWQoaW50
IG4pKTsgIC8vIE5PTElOVAorCisgIE1PQ0tfTUVUSE9EMChOdWxsYXJ5LCBpbnQoKSk7ICAvLyBO
T0xJTlQKKworICAvLyBNYWtlcyBzdXJlIHRoYXQgYSBtb2NrIGZ1bmN0aW9uIHBhcmFtZXRlciBj
YW4gYmUgdW5uYW1lZC4KKyAgTU9DS19NRVRIT0QxKFVuYXJ5LCBib29sKGludCkpOyAgLy8gTk9M
SU5UCisgIE1PQ0tfTUVUSE9EMihCaW5hcnksIGxvbmcoc2hvcnQsIGludCkpOyAgLy8gTk9MSU5U
CisgIE1PQ0tfTUVUSE9EMTAoRGVjaW1hbCwgaW50KGJvb2wsIGNoYXIsIHNob3J0LCBpbnQsIGxv
bmcsIGZsb2F0LCAgLy8gTk9MSU5UCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJs
ZSwgdW5zaWduZWQsIGNoYXIqLCBjb25zdCBzdGQ6OnN0cmluZyYgc3RyKSk7CisKKyAgTU9DS19N
RVRIT0QxKFRha2VzTm9uQ29uc3RSZWZlcmVuY2UsIGJvb2woaW50JikpOyAgLy8gTk9MSU5UCisg
IE1PQ0tfTUVUSE9EMShUYWtlc0NvbnN0UmVmZXJlbmNlLCBzdGQ6OnN0cmluZyhjb25zdCBpbnQm
KSk7CisKKyNpZmRlZiBHTU9DS19BTExPV1NfQ09OU1RfUEFSQU1fRlVOQ1RJT05TCisgIE1PQ0tf
TUVUSE9EMShUYWtlc0NvbnN0LCBib29sKGNvbnN0IGludCkpOyAgLy8gTk9MSU5UCisjZW5kaWYK
KworICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm4gdHlwZSBjYW4gY29udGFpbiB1
bnByb3RlY3RlZCBjb21tYS4KKyAgTU9DS19NRVRIT0QwKFJldHVyblR5cGVXaXRoQ29tbWEsIHN0
ZDo6bWFwPGludCwgc3RkOjpzdHJpbmc+KCkpOworICBNT0NLX0NPTlNUX01FVEhPRDEoUmV0dXJu
VHlwZVdpdGhDb21tYSwKKyAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPGludCwgc3RkOjpz
dHJpbmc+KGludCkpOyAgLy8gTk9MSU5UCisKKyAgTU9DS19NRVRIT0QwKE92ZXJsb2FkZWRPbkFy
Z3VtZW50TnVtYmVyLCBpbnQoKSk7ICAvLyBOT0xJTlQKKyAgTU9DS19NRVRIT0QxKE92ZXJsb2Fk
ZWRPbkFyZ3VtZW50TnVtYmVyLCBpbnQoaW50KSk7ICAvLyBOT0xJTlQKKworICBNT0NLX01FVEhP
RDEoT3ZlcmxvYWRlZE9uQXJndW1lbnRUeXBlLCBpbnQoaW50KSk7ICAvLyBOT0xJTlQKKyAgTU9D
S19NRVRIT0QxKE92ZXJsb2FkZWRPbkFyZ3VtZW50VHlwZSwgY2hhcihjaGFyKSk7ICAvLyBOT0xJ
TlQKKworICBNT0NLX01FVEhPRDAoT3ZlcmxvYWRlZE9uQ29uc3RuZXNzLCBpbnQoKSk7ICAvLyBO
T0xJTlQKKyAgTU9DS19DT05TVF9NRVRIT0QwKE92ZXJsb2FkZWRPbkNvbnN0bmVzcywgY2hhcigp
KTsgIC8vIE5PTElOVAorCisgIE1PQ0tfTUVUSE9EMShUeXBlV2l0aEhvbGUsIGludChpbnQgKCop
KCkpKTsgIC8vIE5PTElOVAorICBNT0NLX01FVEhPRDEoVHlwZVdpdGhDb21tYSwKKyAgICAgICAg
ICAgICAgIGludChjb25zdCBzdGQ6Om1hcDxpbnQsIHN0ZDo6c3RyaW5nPiYpKTsgIC8vIE5PTElO
VAorCisjaWYgR1RFU1RfT1NfV0lORE9XUworICBNT0NLX01FVEhPRDBfV0lUSF9DQUxMVFlQRShT
VERNRVRIT0RDQUxMVFlQRSwgQ1ROdWxsYXJ5LCBpbnQoKSk7CisgIE1PQ0tfTUVUSE9EMV9XSVRI
X0NBTExUWVBFKFNURE1FVEhPRENBTExUWVBFLCBDVFVuYXJ5LCBib29sKGludCkpOworICBNT0NL
X01FVEhPRDEwX1dJVEhfQ0FMTFRZUEUoU1RETUVUSE9EQ0FMTFRZUEUsIENURGVjaW1hbCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludChib29sIGIsIGNoYXIgYywgc2hvcnQgZCwg
aW50IGUsIGxvbmcgZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBn
LCBkb3VibGUgaCwgdW5zaWduZWQgaSwgY2hhciogaiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgaykpOworICBNT0NLX0NPTlNUX01FVEhPRDFf
V0lUSF9DQUxMVFlQRShTVERNRVRIT0RDQUxMVFlQRSwgQ1RDb25zdCwgY2hhcihpbnQpKTsKKwor
ICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm4gdHlwZSBjYW4gY29udGFpbiB1bnBy
b3RlY3RlZCBjb21tYS4KKyAgTU9DS19NRVRIT0QwX1dJVEhfQ0FMTFRZUEUoU1RETUVUSE9EQ0FM
TFRZUEUsIENUUmV0dXJuVHlwZVdpdGhDb21tYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjptYXA8aW50LCBzdGQ6OnN0cmluZz4oKSk7CisjZW5kaWYgIC8vIEdURVNUX09TX1dJ
TkRPV1MKKworIHByaXZhdGU6CisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oTW9j
a0Zvbyk7Cit9OworI2lmZGVmIF9NU0NfVkVSCisjIHByYWdtYSB3YXJuaW5nKHBvcCkKKyNlbmRp
ZgorCitjbGFzcyBGdW5jdGlvbk1vY2tlclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cisg
cHJvdGVjdGVkOgorICBGdW5jdGlvbk1vY2tlclRlc3QoKSA6IGZvb18oJm1vY2tfZm9vXykge30K
KworICBGb29JbnRlcmZhY2UqIGNvbnN0IGZvb187CisgIE1vY2tGb28gbW9ja19mb29fOworfTsK
KworLy8gVGVzdHMgbW9ja2luZyBhIHZvaWQtcmV0dXJuaW5nIGZ1bmN0aW9uLgorVEVTVF9GKEZ1
bmN0aW9uTW9ja2VyVGVzdCwgTW9ja3NWb2lkRnVuY3Rpb24pIHsKKyAgRVhQRUNUX0NBTEwobW9j
a19mb29fLCBWb2lkUmV0dXJuaW5nKEx0KDEwMCkpKTsKKyAgZm9vXy0+Vm9pZFJldHVybmluZygw
KTsKK30KKworLy8gVGVzdHMgbW9ja2luZyBhIG51bGxhcnkgZnVuY3Rpb24uCitURVNUX0YoRnVu
Y3Rpb25Nb2NrZXJUZXN0LCBNb2Nrc051bGxhcnlGdW5jdGlvbikgeworICBFWFBFQ1RfQ0FMTCht
b2NrX2Zvb18sIE51bGxhcnkoKSkKKyAgICAgIC5XaWxsT25jZShEb0RlZmF1bHQoKSkKKyAgICAg
IC5XaWxsT25jZShSZXR1cm4oMSkpOworCisgIEVYUEVDVF9FUSgwLCBmb29fLT5OdWxsYXJ5KCkp
OworICBFWFBFQ1RfRVEoMSwgZm9vXy0+TnVsbGFyeSgpKTsKK30KKworLy8gVGVzdHMgbW9ja2lu
ZyBhIHVuYXJ5IGZ1bmN0aW9uLgorVEVTVF9GKEZ1bmN0aW9uTW9ja2VyVGVzdCwgTW9ja3NVbmFy
eUZ1bmN0aW9uKSB7CisgIEVYUEVDVF9DQUxMKG1vY2tfZm9vXywgVW5hcnkoRXEoMikpKQorICAg
ICAgLlRpbWVzKDIpCisgICAgICAuV2lsbE9uY2UoUmV0dXJuKHRydWUpKTsKKworICBFWFBFQ1Rf
VFJVRShmb29fLT5VbmFyeSgyKSk7CisgIEVYUEVDVF9GQUxTRShmb29fLT5VbmFyeSgyKSk7Cit9
CisKKy8vIFRlc3RzIG1vY2tpbmcgYSBiaW5hcnkgZnVuY3Rpb24uCitURVNUX0YoRnVuY3Rpb25N
b2NrZXJUZXN0LCBNb2Nrc0JpbmFyeUZ1bmN0aW9uKSB7CisgIEVYUEVDVF9DQUxMKG1vY2tfZm9v
XywgQmluYXJ5KDIsIF8pKQorICAgICAgLldpbGxPbmNlKFJldHVybigzKSk7CisKKyAgRVhQRUNU
X0VRKDMsIGZvb18tPkJpbmFyeSgyLCAxKSk7Cit9CisKKy8vIFRlc3RzIG1vY2tpbmcgYSBkZWNp
bWFsIGZ1bmN0aW9uLgorVEVTVF9GKEZ1bmN0aW9uTW9ja2VyVGVzdCwgTW9ja3NEZWNpbWFsRnVu
Y3Rpb24pIHsKKyAgRVhQRUNUX0NBTEwobW9ja19mb29fLCBEZWNpbWFsKHRydWUsICdhJywgMCwg
MCwgMUwsIEE8ZmxvYXQ+KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMdCgx
MDApLCA1VSwgTlVMTCwgImhpIikpCisgICAgICAuV2lsbE9uY2UoUmV0dXJuKDUpKTsKKworICBF
WFBFQ1RfRVEoNSwgZm9vXy0+RGVjaW1hbCh0cnVlLCAnYScsIDAsIDAsIDEsIDAsIDAsIDUsIE5V
TEwsICJoaSIpKTsKK30KKworLy8gVGVzdHMgbW9ja2luZyBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMg
YSBub24tY29uc3QgcmVmZXJlbmNlLgorVEVTVF9GKEZ1bmN0aW9uTW9ja2VyVGVzdCwgTW9ja3NG
dW5jdGlvbldpdGhOb25Db25zdFJlZmVyZW5jZUFyZ3VtZW50KSB7CisgIGludCBhID0gMDsKKyAg
RVhQRUNUX0NBTEwobW9ja19mb29fLCBUYWtlc05vbkNvbnN0UmVmZXJlbmNlKFJlZihhKSkpCisg
ICAgICAuV2lsbE9uY2UoUmV0dXJuKHRydWUpKTsKKworICBFWFBFQ1RfVFJVRShmb29fLT5UYWtl
c05vbkNvbnN0UmVmZXJlbmNlKGEpKTsKK30KKworLy8gVGVzdHMgbW9ja2luZyBhIGZ1bmN0aW9u
IHRoYXQgdGFrZXMgYSBjb25zdCByZWZlcmVuY2UuCitURVNUX0YoRnVuY3Rpb25Nb2NrZXJUZXN0
LCBNb2Nrc0Z1bmN0aW9uV2l0aENvbnN0UmVmZXJlbmNlQXJndW1lbnQpIHsKKyAgaW50IGEgPSAw
OworICBFWFBFQ1RfQ0FMTChtb2NrX2Zvb18sIFRha2VzQ29uc3RSZWZlcmVuY2UoUmVmKGEpKSkK
KyAgICAgIC5XaWxsT25jZShSZXR1cm4oIkhlbGxvIikpOworCisgIEVYUEVDVF9FUSgiSGVsbG8i
LCBmb29fLT5UYWtlc0NvbnN0UmVmZXJlbmNlKGEpKTsKK30KKworI2lmZGVmIEdNT0NLX0FMTE9X
U19DT05TVF9QQVJBTV9GVU5DVElPTlMKKy8vIFRlc3RzIG1vY2tpbmcgYSBmdW5jdGlvbiB0aGF0
IHRha2VzIGEgY29uc3QgdmFyaWFibGUuCitURVNUX0YoRnVuY3Rpb25Nb2NrZXJUZXN0LCBNb2Nr
c0Z1bmN0aW9uV2l0aENvbnN0QXJndW1lbnQpIHsKKyAgRVhQRUNUX0NBTEwobW9ja19mb29fLCBU
YWtlc0NvbnN0KEx0KDEwKSkpCisgICAgICAuV2lsbE9uY2UoRG9EZWZhdWx0KCkpOworCisgIEVY
UEVDVF9GQUxTRShmb29fLT5UYWtlc0NvbnN0KDUpKTsKK30KKyNlbmRpZiAgLy8gR01PQ0tfQUxM
T1dTX0NPTlNUX1BBUkFNX0ZVTkNUSU9OUworCisvLyBUZXN0cyBtb2NraW5nIGZ1bmN0aW9ucyBv
dmVybG9hZGVkIG9uIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzLgorVEVTVF9GKEZ1bmN0aW9uTW9j
a2VyVGVzdCwgTW9ja3NGdW5jdGlvbnNPdmVybG9hZGVkT25Bcmd1bWVudE51bWJlcikgeworICBF
WFBFQ1RfQ0FMTChtb2NrX2Zvb18sIE92ZXJsb2FkZWRPbkFyZ3VtZW50TnVtYmVyKCkpCisgICAg
ICAuV2lsbE9uY2UoUmV0dXJuKDEpKTsKKyAgRVhQRUNUX0NBTEwobW9ja19mb29fLCBPdmVybG9h
ZGVkT25Bcmd1bWVudE51bWJlcihfKSkKKyAgICAgIC5XaWxsT25jZShSZXR1cm4oMikpOworCisg
IEVYUEVDVF9FUSgyLCBmb29fLT5PdmVybG9hZGVkT25Bcmd1bWVudE51bWJlcigxKSk7CisgIEVY
UEVDVF9FUSgxLCBmb29fLT5PdmVybG9hZGVkT25Bcmd1bWVudE51bWJlcigpKTsKK30KKworLy8g
VGVzdHMgbW9ja2luZyBmdW5jdGlvbnMgb3ZlcmxvYWRlZCBvbiB0aGUgdHlwZXMgb2YgYXJndW1l
bnQuCitURVNUX0YoRnVuY3Rpb25Nb2NrZXJUZXN0LCBNb2Nrc0Z1bmN0aW9uc092ZXJsb2FkZWRP
bkFyZ3VtZW50VHlwZSkgeworICBFWFBFQ1RfQ0FMTChtb2NrX2Zvb18sIE92ZXJsb2FkZWRPbkFy
Z3VtZW50VHlwZShBbjxpbnQ+KCkpKQorICAgICAgLldpbGxPbmNlKFJldHVybigxKSk7CisgIEVY
UEVDVF9DQUxMKG1vY2tfZm9vXywgT3ZlcmxvYWRlZE9uQXJndW1lbnRUeXBlKFR5cGVkRXE8Y2hh
cj4oJ2EnKSkpCisgICAgICAuV2lsbE9uY2UoUmV0dXJuKCdiJykpOworCisgIEVYUEVDVF9FUSgx
LCBmb29fLT5PdmVybG9hZGVkT25Bcmd1bWVudFR5cGUoMCkpOworICBFWFBFQ1RfRVEoJ2InLCBm
b29fLT5PdmVybG9hZGVkT25Bcmd1bWVudFR5cGUoJ2EnKSk7Cit9CisKKy8vIFRlc3RzIG1vY2tp
bmcgZnVuY3Rpb25zIG92ZXJsb2FkZWQgb24gdGhlIGNvbnN0LW5lc3Mgb2YgdGhpcyBvYmplY3Qu
CitURVNUX0YoRnVuY3Rpb25Nb2NrZXJUZXN0LCBNb2Nrc0Z1bmN0aW9uc092ZXJsb2FkZWRPbkNv
bnN0bmVzc09mVGhpcykgeworICBFWFBFQ1RfQ0FMTChtb2NrX2Zvb18sIE92ZXJsb2FkZWRPbkNv
bnN0bmVzcygpKTsKKyAgRVhQRUNUX0NBTEwoQ29uc3QobW9ja19mb29fKSwgT3ZlcmxvYWRlZE9u
Q29uc3RuZXNzKCkpCisgICAgICAuV2lsbE9uY2UoUmV0dXJuKCdhJykpOworCisgIEVYUEVDVF9F
USgwLCBmb29fLT5PdmVybG9hZGVkT25Db25zdG5lc3MoKSk7CisgIEVYUEVDVF9FUSgnYScsIENv
bnN0KCpmb29fKS5PdmVybG9hZGVkT25Db25zdG5lc3MoKSk7Cit9CisKK1RFU1RfRihGdW5jdGlv
bk1vY2tlclRlc3QsIE1vY2tzUmV0dXJuVHlwZVdpdGhDb21tYSkgeworICBjb25zdCBzdGQ6Om1h
cDxpbnQsIHN0ZDo6c3RyaW5nPiBhX21hcDsKKyAgRVhQRUNUX0NBTEwobW9ja19mb29fLCBSZXR1
cm5UeXBlV2l0aENvbW1hKCkpCisgICAgICAuV2lsbE9uY2UoUmV0dXJuKGFfbWFwKSk7CisgIEVY
UEVDVF9DQUxMKG1vY2tfZm9vXywgUmV0dXJuVHlwZVdpdGhDb21tYSg0MikpCisgICAgICAuV2ls
bE9uY2UoUmV0dXJuKGFfbWFwKSk7CisKKyAgRVhQRUNUX0VRKGFfbWFwLCBtb2NrX2Zvb18uUmV0
dXJuVHlwZVdpdGhDb21tYSgpKTsKKyAgRVhQRUNUX0VRKGFfbWFwLCBtb2NrX2Zvb18uUmV0dXJu
VHlwZVdpdGhDb21tYSg0MikpOworfQorCisjaWYgR1RFU1RfT1NfV0lORE9XUworLy8gVGVzdHMg
bW9ja2luZyBhIG51bGxhcnkgZnVuY3Rpb24gd2l0aCBjYWxsdHlwZS4KK1RFU1RfRihGdW5jdGlv
bk1vY2tlclRlc3QsIE1vY2tzTnVsbGFyeUZ1bmN0aW9uV2l0aENhbGxUeXBlKSB7CisgIEVYUEVD
VF9DQUxMKG1vY2tfZm9vXywgQ1ROdWxsYXJ5KCkpCisgICAgICAuV2lsbE9uY2UoUmV0dXJuKC0x
KSkKKyAgICAgIC5XaWxsT25jZShSZXR1cm4oMCkpOworCisgIEVYUEVDVF9FUSgtMSwgZm9vXy0+
Q1ROdWxsYXJ5KCkpOworICBFWFBFQ1RfRVEoMCwgZm9vXy0+Q1ROdWxsYXJ5KCkpOworfQorCisv
LyBUZXN0cyBtb2NraW5nIGEgdW5hcnkgZnVuY3Rpb24gd2l0aCBjYWxsdHlwZS4KK1RFU1RfRihG
dW5jdGlvbk1vY2tlclRlc3QsIE1vY2tzVW5hcnlGdW5jdGlvbldpdGhDYWxsVHlwZSkgeworICBF
WFBFQ1RfQ0FMTChtb2NrX2Zvb18sIENUVW5hcnkoRXEoMikpKQorICAgICAgLlRpbWVzKDIpCisg
ICAgICAuV2lsbE9uY2UoUmV0dXJuKHRydWUpKQorICAgICAgLldpbGxPbmNlKFJldHVybihmYWxz
ZSkpOworCisgIEVYUEVDVF9UUlVFKGZvb18tPkNUVW5hcnkoMikpOworICBFWFBFQ1RfRkFMU0Uo
Zm9vXy0+Q1RVbmFyeSgyKSk7Cit9CisKKy8vIFRlc3RzIG1vY2tpbmcgYSBkZWNpbWFsIGZ1bmN0
aW9uIHdpdGggY2FsbHR5cGUuCitURVNUX0YoRnVuY3Rpb25Nb2NrZXJUZXN0LCBNb2Nrc0RlY2lt
YWxGdW5jdGlvbldpdGhDYWxsVHlwZSkgeworICBFWFBFQ1RfQ0FMTChtb2NrX2Zvb18sIENURGVj
aW1hbCh0cnVlLCAnYScsIDAsIDAsIDFMLCBBPGZsb2F0PigpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBMdCgxMDApLCA1VSwgTlVMTCwgImhpIikpCisgICAgICAuV2lsbE9u
Y2UoUmV0dXJuKDEwKSk7CisKKyAgRVhQRUNUX0VRKDEwLCBmb29fLT5DVERlY2ltYWwodHJ1ZSwg
J2EnLCAwLCAwLCAxLCAwLCAwLCA1LCBOVUxMLCAiaGkiKSk7Cit9CisKKy8vIFRlc3RzIG1vY2tp
bmcgZnVuY3Rpb25zIG92ZXJsb2FkZWQgb24gdGhlIGNvbnN0LW5lc3Mgb2YgdGhpcyBvYmplY3Qu
CitURVNUX0YoRnVuY3Rpb25Nb2NrZXJUZXN0LCBNb2Nrc0Z1bmN0aW9uc0NvbnN0RnVuY3Rpb25X
aXRoQ2FsbFR5cGUpIHsKKyAgRVhQRUNUX0NBTEwoQ29uc3QobW9ja19mb29fKSwgQ1RDb25zdChf
KSkKKyAgICAgIC5XaWxsT25jZShSZXR1cm4oJ2EnKSk7CisKKyAgRVhQRUNUX0VRKCdhJywgQ29u
c3QoKmZvb18pLkNUQ29uc3QoMCkpOworfQorCitURVNUX0YoRnVuY3Rpb25Nb2NrZXJUZXN0LCBN
b2Nrc1JldHVyblR5cGVXaXRoQ29tbWFBbmRDYWxsVHlwZSkgeworICBjb25zdCBzdGQ6Om1hcDxp
bnQsIHN0ZDo6c3RyaW5nPiBhX21hcDsKKyAgRVhQRUNUX0NBTEwobW9ja19mb29fLCBDVFJldHVy
blR5cGVXaXRoQ29tbWEoKSkKKyAgICAgIC5XaWxsT25jZShSZXR1cm4oYV9tYXApKTsKKworICBF
WFBFQ1RfRVEoYV9tYXAsIG1vY2tfZm9vXy5DVFJldHVyblR5cGVXaXRoQ29tbWEoKSk7Cit9CisK
KyNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCitjbGFzcyBNb2NrQiB7CisgcHVibGljOgor
ICBNb2NrQigpIHt9CisKKyAgTU9DS19NRVRIT0QwKERvQiwgdm9pZCgpKTsKKworIHByaXZhdGU6
CisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oTW9ja0IpOworfTsKKworLy8gVGVz
dHMgdGhhdCBmdW5jdGlvbnMgd2l0aCBubyBFWFBFQ1RfQ0FMTCgpIHJ1bHMgY2FuIGJlIGNhbGxl
ZCBhbnkKKy8vIG51bWJlciBvZiB0aW1lcy4KK1RFU1QoRXhwZWN0Q2FsbFRlc3QsIFVubWVudGlv
bmVkRnVuY3Rpb25DYW5CZUNhbGxlZEFueU51bWJlck9mVGltZXMpIHsKKyAgeworICAgIE1vY2tC
IGI7CisgIH0KKworICB7CisgICAgTW9ja0IgYjsKKyAgICBiLkRvQigpOworICB9CisKKyAgewor
ICAgIE1vY2tCIGI7CisgICAgYi5Eb0IoKTsKKyAgICBiLkRvQigpOworICB9Cit9CisKKy8vIFRl
c3RzIG1vY2tpbmcgdGVtcGxhdGUgaW50ZXJmYWNlcy4KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CitjbGFzcyBTdGFja0ludGVyZmFjZSB7CisgcHVibGljOgorICB2aXJ0dWFsIH5TdGFja0ludGVy
ZmFjZSgpIHt9CisKKyAgLy8gVGVtcGxhdGUgcGFyYW1ldGVyIGFwcGVhcnMgaW4gZnVuY3Rpb24g
cGFyYW1ldGVyLgorICB2aXJ0dWFsIHZvaWQgUHVzaChjb25zdCBUJiB2YWx1ZSkgPSAwOworICB2
aXJ0dWFsIHZvaWQgUG9wKCkgPSAwOworICB2aXJ0dWFsIGludCBHZXRTaXplKCkgY29uc3QgPSAw
OworICAvLyBUZW1wbGF0ZSBwYXJhbWV0ZXIgYXBwZWFycyBpbiBmdW5jdGlvbiByZXR1cm4gdHlw
ZS4KKyAgdmlydHVhbCBjb25zdCBUJiBHZXRUb3AoKSBjb25zdCA9IDA7Cit9OworCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIE1vY2tTdGFjayA6IHB1YmxpYyBTdGFja0ludGVyZmFjZTxU
PiB7CisgcHVibGljOgorICBNb2NrU3RhY2soKSB7fQorCisgIE1PQ0tfTUVUSE9EMV9UKFB1c2gs
IHZvaWQoY29uc3QgVCYgZWxlbSkpOworICBNT0NLX01FVEhPRDBfVChQb3AsIHZvaWQoKSk7Cisg
IE1PQ0tfQ09OU1RfTUVUSE9EMF9UKEdldFNpemUsIGludCgpKTsgIC8vIE5PTElOVAorICBNT0NL
X0NPTlNUX01FVEhPRDBfVChHZXRUb3AsIGNvbnN0IFQmKCkpOworCisgIC8vIFRlc3RzIHRoYXQg
dGhlIGZ1bmN0aW9uIHJldHVybiB0eXBlIGNhbiBjb250YWluIHVucHJvdGVjdGVkIGNvbW1hLgor
ICBNT0NLX01FVEhPRDBfVChSZXR1cm5UeXBlV2l0aENvbW1hLCBzdGQ6Om1hcDxpbnQsIGludD4o
KSk7CisgIE1PQ0tfQ09OU1RfTUVUSE9EMV9UKFJldHVyblR5cGVXaXRoQ29tbWEsIHN0ZDo6bWFw
PGludCwgaW50PihpbnQpKTsgIC8vIE5PTElOVAorCisgcHJpdmF0ZToKKyAgR1RFU1RfRElTQUxM
T1dfQ09QWV9BTkRfQVNTSUdOXyhNb2NrU3RhY2spOworfTsKKworLy8gVGVzdHMgdGhhdCB0ZW1w
bGF0ZSBtb2NrIHdvcmtzLgorVEVTVChUZW1wbGF0ZU1vY2tUZXN0LCBXb3JrcykgeworICBNb2Nr
U3RhY2s8aW50PiBtb2NrOworCisgIEVYUEVDVF9DQUxMKG1vY2ssIEdldFNpemUoKSkKKyAgICAg
IC5XaWxsT25jZShSZXR1cm4oMCkpCisgICAgICAuV2lsbE9uY2UoUmV0dXJuKDEpKQorICAgICAg
LldpbGxPbmNlKFJldHVybigwKSk7CisgIEVYUEVDVF9DQUxMKG1vY2ssIFB1c2goXykpOworICBp
bnQgbiA9IDU7CisgIEVYUEVDVF9DQUxMKG1vY2ssIEdldFRvcCgpKQorICAgICAgLldpbGxPbmNl
KFJldHVyblJlZihuKSk7CisgIEVYUEVDVF9DQUxMKG1vY2ssIFBvcCgpKQorICAgICAgLlRpbWVz
KEFueU51bWJlcigpKTsKKworICBFWFBFQ1RfRVEoMCwgbW9jay5HZXRTaXplKCkpOworICBtb2Nr
LlB1c2goNSk7CisgIEVYUEVDVF9FUSgxLCBtb2NrLkdldFNpemUoKSk7CisgIEVYUEVDVF9FUSg1
LCBtb2NrLkdldFRvcCgpKTsKKyAgbW9jay5Qb3AoKTsKKyAgRVhQRUNUX0VRKDAsIG1vY2suR2V0
U2l6ZSgpKTsKK30KKworVEVTVChUZW1wbGF0ZU1vY2tUZXN0LCBNZXRob2RXaXRoQ29tbWFJblJl
dHVyblR5cGVXb3JrcykgeworICBNb2NrU3RhY2s8aW50PiBtb2NrOworCisgIGNvbnN0IHN0ZDo6
bWFwPGludCwgaW50PiBhX21hcDsKKyAgRVhQRUNUX0NBTEwobW9jaywgUmV0dXJuVHlwZVdpdGhD
b21tYSgpKQorICAgICAgLldpbGxPbmNlKFJldHVybihhX21hcCkpOworICBFWFBFQ1RfQ0FMTCht
b2NrLCBSZXR1cm5UeXBlV2l0aENvbW1hKDEpKQorICAgICAgLldpbGxPbmNlKFJldHVybihhX21h
cCkpOworCisgIEVYUEVDVF9FUShhX21hcCwgbW9jay5SZXR1cm5UeXBlV2l0aENvbW1hKCkpOwor
ICBFWFBFQ1RfRVEoYV9tYXAsIG1vY2suUmV0dXJuVHlwZVdpdGhDb21tYSgxKSk7Cit9CisKKyNp
ZiBHVEVTVF9PU19XSU5ET1dTCisvLyBUZXN0cyBtb2NraW5nIHRlbXBsYXRlIGludGVyZmFjZXMg
d2l0aCBjYWxsdHlwZS4KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBTdGFja0ludGVy
ZmFjZVdpdGhDYWxsVHlwZSB7CisgcHVibGljOgorICB2aXJ0dWFsIH5TdGFja0ludGVyZmFjZVdp
dGhDYWxsVHlwZSgpIHt9CisKKyAgLy8gVGVtcGxhdGUgcGFyYW1ldGVyIGFwcGVhcnMgaW4gZnVu
Y3Rpb24gcGFyYW1ldGVyLgorICBTVERNRVRIT0RfKHZvaWQsIFB1c2gpKGNvbnN0IFQmIHZhbHVl
KSA9IDA7CisgIFNURE1FVEhPRF8odm9pZCwgUG9wKSgpID0gMDsKKyAgU1RETUVUSE9EXyhpbnQs
IEdldFNpemUpKCkgY29uc3QgPSAwOworICAvLyBUZW1wbGF0ZSBwYXJhbWV0ZXIgYXBwZWFycyBp
biBmdW5jdGlvbiByZXR1cm4gdHlwZS4KKyAgU1RETUVUSE9EXyhjb25zdCBUJiwgR2V0VG9wKSgp
IGNvbnN0ID0gMDsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgTW9ja1N0YWNr
V2l0aENhbGxUeXBlIDogcHVibGljIFN0YWNrSW50ZXJmYWNlV2l0aENhbGxUeXBlPFQ+IHsKKyBw
dWJsaWM6CisgIE1vY2tTdGFja1dpdGhDYWxsVHlwZSgpIHt9CisKKyAgTU9DS19NRVRIT0QxX1Rf
V0lUSF9DQUxMVFlQRShTVERNRVRIT0RDQUxMVFlQRSwgUHVzaCwgdm9pZChjb25zdCBUJiBlbGVt
KSk7CisgIE1PQ0tfTUVUSE9EMF9UX1dJVEhfQ0FMTFRZUEUoU1RETUVUSE9EQ0FMTFRZUEUsIFBv
cCwgdm9pZCgpKTsKKyAgTU9DS19DT05TVF9NRVRIT0QwX1RfV0lUSF9DQUxMVFlQRShTVERNRVRI
T0RDQUxMVFlQRSwgR2V0U2l6ZSwgaW50KCkpOworICBNT0NLX0NPTlNUX01FVEhPRDBfVF9XSVRI
X0NBTExUWVBFKFNURE1FVEhPRENBTExUWVBFLCBHZXRUb3AsIGNvbnN0IFQmKCkpOworCisgcHJp
dmF0ZToKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhNb2NrU3RhY2tXaXRoQ2Fs
bFR5cGUpOworfTsKKworLy8gVGVzdHMgdGhhdCB0ZW1wbGF0ZSBtb2NrIHdpdGggY2FsbHR5cGUg
d29ya3MuCitURVNUKFRlbXBsYXRlTW9ja1Rlc3RXaXRoQ2FsbFR5cGUsIFdvcmtzKSB7CisgIE1v
Y2tTdGFja1dpdGhDYWxsVHlwZTxpbnQ+IG1vY2s7CisKKyAgRVhQRUNUX0NBTEwobW9jaywgR2V0
U2l6ZSgpKQorICAgICAgLldpbGxPbmNlKFJldHVybigwKSkKKyAgICAgIC5XaWxsT25jZShSZXR1
cm4oMSkpCisgICAgICAuV2lsbE9uY2UoUmV0dXJuKDApKTsKKyAgRVhQRUNUX0NBTEwobW9jaywg
UHVzaChfKSk7CisgIGludCBuID0gNTsKKyAgRVhQRUNUX0NBTEwobW9jaywgR2V0VG9wKCkpCisg
ICAgICAuV2lsbE9uY2UoUmV0dXJuUmVmKG4pKTsKKyAgRVhQRUNUX0NBTEwobW9jaywgUG9wKCkp
CisgICAgICAuVGltZXMoQW55TnVtYmVyKCkpOworCisgIEVYUEVDVF9FUSgwLCBtb2NrLkdldFNp
emUoKSk7CisgIG1vY2suUHVzaCg1KTsKKyAgRVhQRUNUX0VRKDEsIG1vY2suR2V0U2l6ZSgpKTsK
KyAgRVhQRUNUX0VRKDUsIG1vY2suR2V0VG9wKCkpOworICBtb2NrLlBvcCgpOworICBFWFBFQ1Rf
RVEoMCwgbW9jay5HZXRTaXplKCkpOworfQorI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisK
KyNkZWZpbmUgTVlfTU9DS19NRVRIT0RTMV8gXAorICAgIE1PQ0tfTUVUSE9EMChPdmVybG9hZGVk
LCB2b2lkKCkpOyBcCisgICAgTU9DS19DT05TVF9NRVRIT0QxKE92ZXJsb2FkZWQsIGludChpbnQg
bikpOyBcCisgICAgTU9DS19NRVRIT0QyKE92ZXJsb2FkZWQsIGJvb2woYm9vbCBmLCBpbnQgbikp
CisKK2NsYXNzIE1vY2tPdmVybG9hZGVkT25BcmdOdW1iZXIgeworIHB1YmxpYzoKKyAgTW9ja092
ZXJsb2FkZWRPbkFyZ051bWJlcigpIHt9CisKKyAgTVlfTU9DS19NRVRIT0RTMV87CisKKyBwcml2
YXRlOgorICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKE1vY2tPdmVybG9hZGVkT25B
cmdOdW1iZXIpOworfTsKKworVEVTVChPdmVybG9hZGVkTW9ja01ldGhvZFRlc3QsIENhbk92ZXJs
b2FkT25BcmdOdW1iZXJJbk1hY3JvQm9keSkgeworICBNb2NrT3ZlcmxvYWRlZE9uQXJnTnVtYmVy
IG1vY2s7CisgIEVYUEVDVF9DQUxMKG1vY2ssIE92ZXJsb2FkZWQoKSk7CisgIEVYUEVDVF9DQUxM
KG1vY2ssIE92ZXJsb2FkZWQoMSkpLldpbGxPbmNlKFJldHVybigyKSk7CisgIEVYUEVDVF9DQUxM
KG1vY2ssIE92ZXJsb2FkZWQodHJ1ZSwgMSkpLldpbGxPbmNlKFJldHVybih0cnVlKSk7CisKKyAg
bW9jay5PdmVybG9hZGVkKCk7CisgIEVYUEVDVF9FUSgyLCBtb2NrLk92ZXJsb2FkZWQoMSkpOwor
ICBFWFBFQ1RfVFJVRShtb2NrLk92ZXJsb2FkZWQodHJ1ZSwgMSkpOworfQorCisjZGVmaW5lIE1Z
X01PQ0tfTUVUSE9EUzJfIFwKKyAgICBNT0NLX0NPTlNUX01FVEhPRDEoT3ZlcmxvYWRlZCwgaW50
KGludCBuKSk7IFwKKyAgICBNT0NLX01FVEhPRDEoT3ZlcmxvYWRlZCwgaW50KGludCBuKSk7CisK
K2NsYXNzIE1vY2tPdmVybG9hZGVkT25Db25zdG5lc3MgeworIHB1YmxpYzoKKyAgTW9ja092ZXJs
b2FkZWRPbkNvbnN0bmVzcygpIHt9CisKKyAgTVlfTU9DS19NRVRIT0RTMl87CisKKyBwcml2YXRl
OgorICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKE1vY2tPdmVybG9hZGVkT25Db25z
dG5lc3MpOworfTsKKworVEVTVChPdmVybG9hZGVkTW9ja01ldGhvZFRlc3QsIENhbk92ZXJsb2Fk
T25Db25zdG5lc3NJbk1hY3JvQm9keSkgeworICBNb2NrT3ZlcmxvYWRlZE9uQ29uc3RuZXNzIG1v
Y2s7CisgIGNvbnN0IE1vY2tPdmVybG9hZGVkT25Db25zdG5lc3MqIGNvbnN0X21vY2sgPSAmbW9j
azsKKyAgRVhQRUNUX0NBTEwobW9jaywgT3ZlcmxvYWRlZCgxKSkuV2lsbE9uY2UoUmV0dXJuKDIp
KTsKKyAgRVhQRUNUX0NBTEwoKmNvbnN0X21vY2ssIE92ZXJsb2FkZWQoMSkpLldpbGxPbmNlKFJl
dHVybigzKSk7CisKKyAgRVhQRUNUX0VRKDIsIG1vY2suT3ZlcmxvYWRlZCgxKSk7CisgIEVYUEVD
VF9FUSgzLCBjb25zdF9tb2NrLT5PdmVybG9hZGVkKDEpKTsKK30KKworVEVTVChNb2NrRnVuY3Rp
b25UZXN0LCBXb3Jrc0ZvclZvaWROdWxsYXJ5KSB7CisgIE1vY2tGdW5jdGlvbjx2b2lkKCk+IGZv
bzsKKyAgRVhQRUNUX0NBTEwoZm9vLCBDYWxsKCkpOworICBmb28uQ2FsbCgpOworfQorCitURVNU
KE1vY2tGdW5jdGlvblRlc3QsIFdvcmtzRm9yTm9uVm9pZE51bGxhcnkpIHsKKyAgTW9ja0Z1bmN0
aW9uPGludCgpPiBmb287CisgIEVYUEVDVF9DQUxMKGZvbywgQ2FsbCgpKQorICAgICAgLldpbGxP
bmNlKFJldHVybigxKSkKKyAgICAgIC5XaWxsT25jZShSZXR1cm4oMikpOworICBFWFBFQ1RfRVEo
MSwgZm9vLkNhbGwoKSk7CisgIEVYUEVDVF9FUSgyLCBmb28uQ2FsbCgpKTsKK30KKworVEVTVChN
b2NrRnVuY3Rpb25UZXN0LCBXb3Jrc0ZvclZvaWRVbmFyeSkgeworICBNb2NrRnVuY3Rpb248dm9p
ZChpbnQpPiBmb287CisgIEVYUEVDVF9DQUxMKGZvbywgQ2FsbCgxKSk7CisgIGZvby5DYWxsKDEp
OworfQorCitURVNUKE1vY2tGdW5jdGlvblRlc3QsIFdvcmtzRm9yTm9uVm9pZEJpbmFyeSkgewor
ICBNb2NrRnVuY3Rpb248aW50KGJvb2wsIGludCk+IGZvbzsKKyAgRVhQRUNUX0NBTEwoZm9vLCBD
YWxsKGZhbHNlLCA0MikpCisgICAgICAuV2lsbE9uY2UoUmV0dXJuKDEpKQorICAgICAgLldpbGxP
bmNlKFJldHVybigyKSk7CisgIEVYUEVDVF9DQUxMKGZvbywgQ2FsbCh0cnVlLCBHZSgxMDApKSkK
KyAgICAgIC5XaWxsT25jZShSZXR1cm4oMykpOworICBFWFBFQ1RfRVEoMSwgZm9vLkNhbGwoZmFs
c2UsIDQyKSk7CisgIEVYUEVDVF9FUSgyLCBmb28uQ2FsbChmYWxzZSwgNDIpKTsKKyAgRVhQRUNU
X0VRKDMsIGZvby5DYWxsKHRydWUsIDEyMCkpOworfQorCitURVNUKE1vY2tGdW5jdGlvblRlc3Qs
IFdvcmtzRm9yMTBBcmd1bWVudHMpIHsKKyAgTW9ja0Z1bmN0aW9uPGludChib29sIGEwLCBjaGFy
IGExLCBpbnQgYTIsIGludCBhMywgaW50IGE0LAorICAgICAgICAgICAgICAgICAgIGludCBhNSwg
aW50IGE2LCBjaGFyIGE3LCBpbnQgYTgsIGJvb2wgYTkpPiBmb287CisgIEVYUEVDVF9DQUxMKGZv
bywgQ2FsbChfLCAnYScsIF8sIF8sIF8sIF8sIF8sIF8sIF8sIF8pKQorICAgICAgLldpbGxPbmNl
KFJldHVybigxKSkKKyAgICAgIC5XaWxsT25jZShSZXR1cm4oMikpOworICBFWFBFQ1RfRVEoMSwg
Zm9vLkNhbGwoZmFsc2UsICdhJywgMCwgMCwgMCwgMCwgMCwgJ2InLCAwLCB0cnVlKSk7CisgIEVY
UEVDVF9FUSgyLCBmb28uQ2FsbCh0cnVlLCAnYScsIDAsIDAsIDAsIDAsIDAsICdiJywgMSwgZmFs
c2UpKTsKK30KKworI2lmIEdURVNUX0hBU19TVERfRlVOQ1RJT05fCitURVNUKE1vY2tGdW5jdGlv
blRlc3QsIEFzU3RkRnVuY3Rpb24pIHsKKyAgTW9ja0Z1bmN0aW9uPGludChpbnQpPiBmb287Cisg
IGF1dG8gY2FsbCA9IFtdKGNvbnN0IHN0ZDo6ZnVuY3Rpb248aW50KGludCk+ICZmLCBpbnQgaSkg
eworICAgIHJldHVybiBmKGkpOworICB9OworICBFWFBFQ1RfQ0FMTChmb28sIENhbGwoMSkpLldp
bGxPbmNlKFJldHVybigtMSkpOworICBFWFBFQ1RfQ0FMTChmb28sIENhbGwoMikpLldpbGxPbmNl
KFJldHVybigtMikpOworICBFWFBFQ1RfRVEoLTEsIGNhbGwoZm9vLkFzU3RkRnVuY3Rpb24oKSwg
MSkpOworICBFWFBFQ1RfRVEoLTIsIGNhbGwoZm9vLkFzU3RkRnVuY3Rpb24oKSwgMikpOworfQor
CitURVNUKE1vY2tGdW5jdGlvblRlc3QsIEFzU3RkRnVuY3Rpb25SZXR1cm5zUmVmZXJlbmNlKSB7
CisgIE1vY2tGdW5jdGlvbjxpbnQmKCk+IGZvbzsKKyAgaW50IHZhbHVlID0gMTsKKyAgRVhQRUNU
X0NBTEwoZm9vLCBDYWxsKCkpLldpbGxPbmNlKFJldHVyblJlZih2YWx1ZSkpOworICBpbnQmIHJl
ZiA9IGZvby5Bc1N0ZEZ1bmN0aW9uKCkoKTsKKyAgRVhQRUNUX0VRKDEsIHJlZik7CisgIHZhbHVl
ID0gMjsKKyAgRVhQRUNUX0VRKDIsIHJlZik7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19TVERf
RlVOQ1RJT05fCisKK30gIC8vIG5hbWVzcGFjZSBnbW9ja19nZW5lcmF0ZWRfZnVuY3Rpb25fbW9j
a2Vyc190ZXN0Cit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1v
Y2svdGVzdC9nbW9jay1nZW5lcmF0ZWQtaW50ZXJuYWwtdXRpbHNfdGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVt
b2NrL3Rlc3QvZ21vY2stZ2VuZXJhdGVkLWludGVybmFsLXV0aWxzX3Rlc3QuY2MKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTBhNTM1YTM0NjQxNmUyNGEwOWZjM2VlNjZkOGU5OGVlZDRlZTQ2MAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2stZ2VuZXJhdGVkLWludGVybmFsLXV0aWxzX3Rl
c3QuY2MKQEAgLTAsMCArMSwxMjcgQEAKKy8vIENvcHlyaWdodCAyMDA3LCBHb29nbGUgSW5jLgor
Ly8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
Ly8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8g
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKy8vCisvLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4p
CisKKy8vIEdvb2dsZSBNb2NrIC0gYSBmcmFtZXdvcmsgZm9yIHdyaXRpbmcgQysrIG1vY2sgY2xh
c3Nlcy4KKy8vCisvLyBUaGlzIGZpbGUgdGVzdHMgdGhlIGludGVybmFsIHV0aWxpdGllcy4KKwor
I2luY2x1ZGUgImdtb2NrL2ludGVybmFsL2dtb2NrLWdlbmVyYXRlZC1pbnRlcm5hbC11dGlscy5o
IgorI2luY2x1ZGUgImdtb2NrL2ludGVybmFsL2dtb2NrLWludGVybmFsLXV0aWxzLmgiCisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHsKKwordXNpbmcgOjp0ZXN0aW5nOjp0
dXBsZTsKK3VzaW5nIDo6dGVzdGluZzo6TWF0Y2hlcjsKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJu
YWw6OkNvbXBpbGVBc3NlcnRUeXBlc0VxdWFsOwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6
TWF0Y2hlclR1cGxlOwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RnVuY3Rpb247Cit1c2lu
ZyA6OnRlc3Rpbmc6OmludGVybmFsOjpJZ25vcmVkVmFsdWU7CisKKy8vIFRlc3RzIHRoZSBNYXRj
aGVyVHVwbGUgdGVtcGxhdGUgc3RydWN0LgorCitURVNUKE1hdGNoZXJUdXBsZVRlc3QsIEZvclNp
emUwKSB7CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPHR1cGxlPD4sIE1hdGNoZXJUdXBsZTx0
dXBsZTw+ID46OnR5cGU+KCk7Cit9CisKK1RFU1QoTWF0Y2hlclR1cGxlVGVzdCwgRm9yU2l6ZTEp
IHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8dHVwbGU8TWF0Y2hlcjxpbnQ+ID4sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIE1hdGNoZXJUdXBsZTx0dXBsZTxpbnQ+ID46OnR5cGU+KCk7
Cit9CisKK1RFU1QoTWF0Y2hlclR1cGxlVGVzdCwgRm9yU2l6ZTIpIHsKKyAgQ29tcGlsZUFzc2Vy
dFR5cGVzRXF1YWw8dHVwbGU8TWF0Y2hlcjxpbnQ+LCBNYXRjaGVyPGNoYXI+ID4sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIE1hdGNoZXJUdXBsZTx0dXBsZTxpbnQsIGNoYXI+ID46OnR5cGU+
KCk7Cit9CisKK1RFU1QoTWF0Y2hlclR1cGxlVGVzdCwgRm9yU2l6ZTUpIHsKKyAgQ29tcGlsZUFz
c2VydFR5cGVzRXF1YWw8dHVwbGU8TWF0Y2hlcjxpbnQ+LCBNYXRjaGVyPGNoYXI+LCBNYXRjaGVy
PGJvb2w+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaGVyPGRvdWJsZT4s
IE1hdGNoZXI8Y2hhcio+ID4sCisgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoZXJUdXBs
ZTx0dXBsZTxpbnQsIGNoYXIsIGJvb2wsIGRvdWJsZSwgY2hhcio+CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID46OnR5cGU+KCk7Cit9CisKKy8vIFRlc3RzIHRoZSBGdW5j
dGlvbiB0ZW1wbGF0ZSBzdHJ1Y3QuCisKK1RFU1QoRnVuY3Rpb25UZXN0LCBOdWxsYXJ5KSB7Cisg
IHR5cGVkZWYgRnVuY3Rpb248aW50KCk+IEY7ICAvLyBOT0xJTlQKKyAgQ29tcGlsZUFzc2VydFR5
cGVzRXF1YWw8aW50LCBGOjpSZXN1bHQ+KCk7CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPHR1
cGxlPD4sIEY6OkFyZ3VtZW50VHVwbGU+KCk7CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPHR1
cGxlPD4sIEY6OkFyZ3VtZW50TWF0Y2hlclR1cGxlPigpOworICBDb21waWxlQXNzZXJ0VHlwZXNF
cXVhbDx2b2lkKCksIEY6Ok1ha2VSZXN1bHRWb2lkPigpOworICBDb21waWxlQXNzZXJ0VHlwZXNF
cXVhbDxJZ25vcmVkVmFsdWUoKSwgRjo6TWFrZVJlc3VsdElnbm9yZWRWYWx1ZT4oKTsKK30KKwor
VEVTVChGdW5jdGlvblRlc3QsIFVuYXJ5KSB7CisgIHR5cGVkZWYgRnVuY3Rpb248aW50KGJvb2wp
PiBGOyAgLy8gTk9MSU5UCisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGludCwgRjo6UmVzdWx0
PigpOworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxib29sLCBGOjpBcmd1bWVudDE+KCk7Cisg
IENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPHR1cGxlPGJvb2w+LCBGOjpBcmd1bWVudFR1cGxlPigp
OworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDx0dXBsZTxNYXRjaGVyPGJvb2w+ID4sIEY6OkFy
Z3VtZW50TWF0Y2hlclR1cGxlPigpOworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDx2b2lkKGJv
b2wpLCBGOjpNYWtlUmVzdWx0Vm9pZD4oKTsgIC8vIE5PTElOVAorICBDb21waWxlQXNzZXJ0VHlw
ZXNFcXVhbDxJZ25vcmVkVmFsdWUoYm9vbCksICAvLyBOT0xJTlQKKyAgICAgIEY6Ok1ha2VSZXN1
bHRJZ25vcmVkVmFsdWU+KCk7Cit9CisKK1RFU1QoRnVuY3Rpb25UZXN0LCBCaW5hcnkpIHsKKyAg
dHlwZWRlZiBGdW5jdGlvbjxpbnQoYm9vbCwgY29uc3QgbG9uZyYpPiBGOyAgLy8gTk9MSU5UCisg
IENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGludCwgRjo6UmVzdWx0PigpOworICBDb21waWxlQXNz
ZXJ0VHlwZXNFcXVhbDxib29sLCBGOjpBcmd1bWVudDE+KCk7CisgIENvbXBpbGVBc3NlcnRUeXBl
c0VxdWFsPGNvbnN0IGxvbmcmLCBGOjpBcmd1bWVudDI+KCk7ICAvLyBOT0xJTlQKKyAgQ29tcGls
ZUFzc2VydFR5cGVzRXF1YWw8dHVwbGU8Ym9vbCwgY29uc3QgbG9uZyY+LCBGOjpBcmd1bWVudFR1
cGxlPigpOyAgLy8gTk9MSU5UCisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPHR1cGxlPE1hdGNo
ZXI8Ym9vbD4sIE1hdGNoZXI8Y29uc3QgbG9uZyY+ID4sICAvLyBOT0xJTlQKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgRjo6QXJndW1lbnRNYXRjaGVyVHVwbGU+KCk7CisgIENvbXBpbGVBc3Nl
cnRUeXBlc0VxdWFsPHZvaWQoYm9vbCwgY29uc3QgbG9uZyYpLCBGOjpNYWtlUmVzdWx0Vm9pZD4o
KTsgIC8vIE5PTElOVAorICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxJZ25vcmVkVmFsdWUoYm9v
bCwgY29uc3QgbG9uZyYpLCAgLy8gTk9MSU5UCisgICAgICBGOjpNYWtlUmVzdWx0SWdub3JlZFZh
bHVlPigpOworfQorCitURVNUKEZ1bmN0aW9uVGVzdCwgTG9uZ0FyZ3VtZW50TGlzdCkgeworICB0
eXBlZGVmIEZ1bmN0aW9uPGNoYXIoYm9vbCwgaW50LCBjaGFyKiwgaW50JiwgY29uc3QgbG9uZyYp
PiBGOyAgLy8gTk9MSU5UCisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGNoYXIsIEY6OlJlc3Vs
dD4oKTsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8Ym9vbCwgRjo6QXJndW1lbnQxPigpOwor
ICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxpbnQsIEY6OkFyZ3VtZW50Mj4oKTsKKyAgQ29tcGls
ZUFzc2VydFR5cGVzRXF1YWw8Y2hhciosIEY6OkFyZ3VtZW50Mz4oKTsKKyAgQ29tcGlsZUFzc2Vy
dFR5cGVzRXF1YWw8aW50JiwgRjo6QXJndW1lbnQ0PigpOworICBDb21waWxlQXNzZXJ0VHlwZXNF
cXVhbDxjb25zdCBsb25nJiwgRjo6QXJndW1lbnQ1PigpOyAgLy8gTk9MSU5UCisgIENvbXBpbGVB
c3NlcnRUeXBlc0VxdWFsPHR1cGxlPGJvb2wsIGludCwgY2hhciosIGludCYsIGNvbnN0IGxvbmcm
PiwgIC8vIE5PTElOVAorICAgICAgICAgICAgICAgICAgICAgICAgICBGOjpBcmd1bWVudFR1cGxl
PigpOworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDx0dXBsZTxNYXRjaGVyPGJvb2w+LCBNYXRj
aGVyPGludD4sIE1hdGNoZXI8Y2hhcio+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBNYXRjaGVyPGludCY+LCBNYXRjaGVyPGNvbnN0IGxvbmcmPiA+LCAgLy8gTk9MSU5UCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIEY6OkFyZ3VtZW50TWF0Y2hlclR1cGxlPigpOworICBDb21w
aWxlQXNzZXJ0VHlwZXNFcXVhbDx2b2lkKGJvb2wsIGludCwgY2hhciosIGludCYsIGNvbnN0IGxv
bmcmKSwgIC8vIE5PTElOVAorICAgICAgICAgICAgICAgICAgICAgICAgICBGOjpNYWtlUmVzdWx0
Vm9pZD4oKTsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8CisgICAgICBJZ25vcmVkVmFsdWUo
Ym9vbCwgaW50LCBjaGFyKiwgaW50JiwgY29uc3QgbG9uZyYpLCAgLy8gTk9MSU5UCisgICAgICBG
OjpNYWtlUmVzdWx0SWdub3JlZFZhbHVlPigpOworfQorCit9ICAvLyBVbm5hbWVkIG5hbWVzcGFj
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9jay1nZW5lcmF0ZWQtbWF0Y2hlcnNf
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2stZ2VuZXJhdGVkLW1hdGNoZXJzX3Rlc3Qu
Y2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODIzNDg1OGQxZDYwNjZhZTg4MzIzN2RiZTUwMjY0OGExMDUwOTFhNwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2stZ2VuZXJhdGVkLW1hdGNo
ZXJzX3Rlc3QuY2MKQEAgLTAsMCArMSwxMjg2IEBACisvLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xl
IEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
Ky8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKKy8vIEdvb2dsZSBNb2NrIC0gYSBmcmFtZXdvcmsgZm9yIHdy
aXRpbmcgQysrIG1vY2sgY2xhc3Nlcy4KKy8vCisvLyBUaGlzIGZpbGUgdGVzdHMgdGhlIGJ1aWx0
LWluIG1hdGNoZXJzIGdlbmVyYXRlZCBieSBhIHNjcmlwdC4KKworI2luY2x1ZGUgImdtb2NrL2dt
b2NrLWdlbmVyYXRlZC1tYXRjaGVycy5oIgorCisjaW5jbHVkZSA8bGlzdD4KKyNpbmNsdWRlIDxt
YXA+CisjaW5jbHVkZSA8c2V0PgorI2luY2x1ZGUgPHNzdHJlYW0+CisjaW5jbHVkZSA8c3RyaW5n
PgorI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiZ21v
Y2svZ21vY2suaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0
ZXN0LXNwaS5oIgorCituYW1lc3BhY2UgeworCit1c2luZyBzdGQ6Omxpc3Q7Cit1c2luZyBzdGQ6
Om1hcDsKK3VzaW5nIHN0ZDo6cGFpcjsKK3VzaW5nIHN0ZDo6c2V0OwordXNpbmcgc3RkOjpzdHJp
bmdzdHJlYW07Cit1c2luZyBzdGQ6OnZlY3RvcjsKK3VzaW5nIHRlc3Rpbmc6OmdldDsKK3VzaW5n
IHRlc3Rpbmc6Om1ha2VfdHVwbGU7Cit1c2luZyB0ZXN0aW5nOjp0dXBsZTsKK3VzaW5nIHRlc3Rp
bmc6Ol87Cit1c2luZyB0ZXN0aW5nOjpBcmdzOwordXNpbmcgdGVzdGluZzo6Q29udGFpbnM7Cit1
c2luZyB0ZXN0aW5nOjpFbGVtZW50c0FyZTsKK3VzaW5nIHRlc3Rpbmc6OkVsZW1lbnRzQXJlQXJy
YXk7Cit1c2luZyB0ZXN0aW5nOjpFcTsKK3VzaW5nIHRlc3Rpbmc6OkdlOwordXNpbmcgdGVzdGlu
Zzo6R3Q7Cit1c2luZyB0ZXN0aW5nOjpMZTsKK3VzaW5nIHRlc3Rpbmc6Okx0OwordXNpbmcgdGVz
dGluZzo6TWFrZU1hdGNoZXI7Cit1c2luZyB0ZXN0aW5nOjpNYXRjaGVyOwordXNpbmcgdGVzdGlu
Zzo6TWF0Y2hlckludGVyZmFjZTsKK3VzaW5nIHRlc3Rpbmc6Ok1hdGNoUmVzdWx0TGlzdGVuZXI7
Cit1c2luZyB0ZXN0aW5nOjpOZTsKK3VzaW5nIHRlc3Rpbmc6Ok5vdDsKK3VzaW5nIHRlc3Rpbmc6
OlBvaW50ZWU7Cit1c2luZyB0ZXN0aW5nOjpQcmludFRvU3RyaW5nOwordXNpbmcgdGVzdGluZzo6
UmVmOwordXNpbmcgdGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxOwordXNpbmcgdGVzdGluZzo6
U3RyRXE7Cit1c2luZyB0ZXN0aW5nOjpWYWx1ZTsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpF
bGVtZW50c0FyZUFycmF5TWF0Y2hlcjsKKworLy8gUmV0dXJucyB0aGUgZGVzY3JpcHRpb24gb2Yg
dGhlIGdpdmVuIG1hdGNoZXIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0ZDo6c3RyaW5nIERl
c2NyaWJlKGNvbnN0IE1hdGNoZXI8VD4mIG0pIHsKKyAgc3RyaW5nc3RyZWFtIHNzOworICBtLkRl
c2NyaWJlVG8oJnNzKTsKKyAgcmV0dXJuIHNzLnN0cigpOworfQorCisvLyBSZXR1cm5zIHRoZSBk
ZXNjcmlwdGlvbiBvZiB0aGUgbmVnYXRpb24gb2YgdGhlIGdpdmVuIG1hdGNoZXIuCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KK3N0ZDo6c3RyaW5nIERlc2NyaWJlTmVnYXRpb24oY29uc3QgTWF0Y2hl
cjxUPiYgbSkgeworICBzdHJpbmdzdHJlYW0gc3M7CisgIG0uRGVzY3JpYmVOZWdhdGlvblRvKCZz
cyk7CisgIHJldHVybiBzcy5zdHIoKTsKK30KKworLy8gUmV0dXJucyB0aGUgcmVhc29uIHdoeSB4
IG1hdGNoZXMsIG9yIGRvZXNuJ3QgbWF0Y2gsIG0uCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTWF0Y2hl
clR5cGUsIHR5cGVuYW1lIFZhbHVlPgorc3RkOjpzdHJpbmcgRXhwbGFpbihjb25zdCBNYXRjaGVy
VHlwZSYgbSwgY29uc3QgVmFsdWUmIHgpIHsKKyAgc3RyaW5nc3RyZWFtIHNzOworICBtLkV4cGxh
aW5NYXRjaFJlc3VsdFRvKHgsICZzcyk7CisgIHJldHVybiBzcy5zdHIoKTsKK30KKworLy8gVGVz
dHMgQXJnczxrMCwgLi4uLCBrbj4obSkuCisKK1RFU1QoQXJnc1Rlc3QsIEFjY2VwdHNaZXJvVGVt
cGxhdGVBcmcpIHsKKyAgY29uc3QgdHVwbGU8aW50LCBib29sPiB0KDUsIHRydWUpOworICBFWFBF
Q1RfVEhBVCh0LCBBcmdzPD4oRXEodHVwbGU8PigpKSkpOworICBFWFBFQ1RfVEhBVCh0LCBOb3Qo
QXJnczw+KE5lKHR1cGxlPD4oKSkpKSk7Cit9CisKK1RFU1QoQXJnc1Rlc3QsIEFjY2VwdHNPbmVU
ZW1wbGF0ZUFyZykgeworICBjb25zdCB0dXBsZTxpbnQsIGJvb2w+IHQoNSwgdHJ1ZSk7CisgIEVY
UEVDVF9USEFUKHQsIEFyZ3M8MD4oRXEobWFrZV90dXBsZSg1KSkpKTsKKyAgRVhQRUNUX1RIQVQo
dCwgQXJnczwxPihFcShtYWtlX3R1cGxlKHRydWUpKSkpOworICBFWFBFQ1RfVEhBVCh0LCBOb3Qo
QXJnczwxPihFcShtYWtlX3R1cGxlKGZhbHNlKSkpKSk7Cit9CisKK1RFU1QoQXJnc1Rlc3QsIEFj
Y2VwdHNUd29UZW1wbGF0ZUFyZ3MpIHsKKyAgY29uc3QgdHVwbGU8c2hvcnQsIGludCwgbG9uZz4g
dCg0LCA1LCA2TCk7ICAvLyBOT0xJTlQKKworICBFWFBFQ1RfVEhBVCh0LCAoQXJnczwwLCAxPihM
dCgpKSkpOworICBFWFBFQ1RfVEhBVCh0LCAoQXJnczwxLCAyPihMdCgpKSkpOworICBFWFBFQ1Rf
VEhBVCh0LCBOb3QoQXJnczwwLCAyPihHdCgpKSkpOworfQorCitURVNUKEFyZ3NUZXN0LCBBY2Nl
cHRzUmVwZWF0ZWRUZW1wbGF0ZUFyZ3MpIHsKKyAgY29uc3QgdHVwbGU8c2hvcnQsIGludCwgbG9u
Zz4gdCg0LCA1LCA2TCk7ICAvLyBOT0xJTlQKKyAgRVhQRUNUX1RIQVQodCwgKEFyZ3M8MCwgMD4o
RXEoKSkpKTsKKyAgRVhQRUNUX1RIQVQodCwgTm90KEFyZ3M8MSwgMT4oTmUoKSkpKTsKK30KKwor
VEVTVChBcmdzVGVzdCwgQWNjZXB0c0RlY3JlYXNpbmdUZW1wbGF0ZUFyZ3MpIHsKKyAgY29uc3Qg
dHVwbGU8c2hvcnQsIGludCwgbG9uZz4gdCg0LCA1LCA2TCk7ICAvLyBOT0xJTlQKKyAgRVhQRUNU
X1RIQVQodCwgKEFyZ3M8MiwgMD4oR3QoKSkpKTsKKyAgRVhQRUNUX1RIQVQodCwgTm90KEFyZ3M8
MiwgMT4oTHQoKSkpKTsKK30KKworLy8gVGhlIE1BVENIRVIqKCkgbWFjcm9zIHRyaWdnZXIgd2Fy
bmluZyBDNDEwMCAodW5yZWZlcmVuY2VkIGZvcm1hbAorLy8gcGFyYW1ldGVyKSBpbiBNU1ZDIHdp
dGggLVc0LiAgVW5mb3J0dW5hdGVseSB0aGV5IGNhbm5vdCBiZSBmaXhlZCBpbgorLy8gdGhlIG1h
Y3JvIGRlZmluaXRpb24sIGFzIHRoZSB3YXJuaW5ncyBhcmUgZ2VuZXJhdGVkIHdoZW4gdGhlIG1h
Y3JvCisvLyBpcyBleHBhbmRlZCBhbmQgbWFjcm8gZXhwYW5zaW9uIGNhbm5vdCBjb250YWluICNw
cmFnbWEuICBUaGVyZWZvcmUKKy8vIHdlIHN1cHByZXNzIHRoZW0gaGVyZS4KKyNpZmRlZiBfTVND
X1ZFUgorIyBwcmFnbWEgd2FybmluZyhwdXNoKQorIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQx
MDApCisjZW5kaWYKKworTUFUQ0hFUihTdW1Jc1plcm8sICIiKSB7CisgIHJldHVybiBnZXQ8MD4o
YXJnKSArIGdldDwxPihhcmcpICsgZ2V0PDI+KGFyZykgPT0gMDsKK30KKworVEVTVChBcmdzVGVz
dCwgQWNjZXB0c01vcmVUZW1wbGF0ZUFyZ3NUaGFuQXJpdHlPZk9yaWdpbmFsVHVwbGUpIHsKKyAg
RVhQRUNUX1RIQVQobWFrZV90dXBsZSgtMSwgMiksIChBcmdzPDAsIDAsIDE+KFN1bUlzWmVybygp
KSkpOworICBFWFBFQ1RfVEhBVChtYWtlX3R1cGxlKDEsIDIpLCBOb3QoQXJnczwwLCAwLCAxPihT
dW1Jc1plcm8oKSkpKTsKK30KKworVEVTVChBcmdzVGVzdCwgQ2FuQmVOZXN0ZWQpIHsKKyAgY29u
c3QgdHVwbGU8c2hvcnQsIGludCwgbG9uZywgaW50PiB0KDQsIDUsIDZMLCA2KTsgIC8vIE5PTElO
VAorICBFWFBFQ1RfVEhBVCh0LCAoQXJnczwxLCAyLCAzPihBcmdzPDEsIDI+KEVxKCkpKSkpOwor
ICBFWFBFQ1RfVEhBVCh0LCAoQXJnczwwLCAxLCAzPihBcmdzPDAsIDI+KEx0KCkpKSkpOworfQor
CitURVNUKEFyZ3NUZXN0LCBDYW5NYXRjaFR1cGxlQnlWYWx1ZSkgeworICB0eXBlZGVmIHR1cGxl
PGNoYXIsIGludCwgaW50PiBUdXBsZTM7CisgIGNvbnN0IE1hdGNoZXI8VHVwbGUzPiBtID0gQXJn
czwxLCAyPihMdCgpKTsKKyAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKFR1cGxlMygnYScsIDEsIDIp
KSk7CisgIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoVHVwbGUzKCdiJywgMiwgMikpKTsKK30KKwor
VEVTVChBcmdzVGVzdCwgQ2FuTWF0Y2hUdXBsZUJ5UmVmZXJlbmNlKSB7CisgIHR5cGVkZWYgdHVw
bGU8Y2hhciwgY2hhciwgaW50PiBUdXBsZTM7CisgIGNvbnN0IE1hdGNoZXI8Y29uc3QgVHVwbGUz
Jj4gbSA9IEFyZ3M8MCwgMT4oTHQoKSk7CisgIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhUdXBsZTMo
J2EnLCAnYicsIDIpKSk7CisgIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoVHVwbGUzKCdiJywgJ2In
LCAyKSkpOworfQorCisvLyBWYWxpZGF0ZXMgdGhhdCBhcmcgaXMgcHJpbnRlZCBhcyBzdHIuCitN
QVRDSEVSX1AoUHJpbnRzQXMsIHN0ciwgIiIpIHsKKyAgcmV0dXJuIHRlc3Rpbmc6OlByaW50VG9T
dHJpbmcoYXJnKSA9PSBzdHI7Cit9CisKK1RFU1QoQXJnc1Rlc3QsIEFjY2VwdHNUZW5UZW1wbGF0
ZUFyZ3MpIHsKKyAgRVhQRUNUX1RIQVQobWFrZV90dXBsZSgwLCAxTCwgMiwgM0wsIDQsIDUsIDYs
IDcsIDgsIDkpLAorICAgICAgICAgICAgICAoQXJnczw5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAx
LCAwPigKKyAgICAgICAgICAgICAgICAgIFByaW50c0FzKCIoOSwgOCwgNywgNiwgNSwgNCwgMywg
MiwgMSwgMCkiKSkpKTsKKyAgRVhQRUNUX1RIQVQobWFrZV90dXBsZSgwLCAxTCwgMiwgM0wsIDQs
IDUsIDYsIDcsIDgsIDkpLAorICAgICAgICAgICAgICBOb3QoQXJnczw5LCA4LCA3LCA2LCA1LCA0
LCAzLCAyLCAxLCAwPigKKyAgICAgICAgICAgICAgICAgICAgICBQcmludHNBcygiKDAsIDgsIDcs
IDYsIDUsIDQsIDMsIDIsIDEsIDApIikpKSk7Cit9CisKK1RFU1QoQXJnc1Rlc3QsIERlc2NpcmJl
c1NlbGZDb3JyZWN0bHkpIHsKKyAgY29uc3QgTWF0Y2hlcjx0dXBsZTxpbnQsIGJvb2wsIGNoYXI+
ID4gbSA9IEFyZ3M8MiwgMD4oTHQoKSk7CisgIEVYUEVDVF9FUSgiYXJlIGEgdHVwbGUgd2hvc2Ug
ZmllbGRzICgjMiwgIzApIGFyZSBhIHBhaXIgd2hlcmUgIgorICAgICAgICAgICAgInRoZSBmaXJz
dCA8IHRoZSBzZWNvbmQiLAorICAgICAgICAgICAgRGVzY3JpYmUobSkpOworfQorCitURVNUKEFy
Z3NUZXN0LCBEZXNjaXJiZXNOZXN0ZWRBcmdzQ29ycmVjdGx5KSB7CisgIGNvbnN0IE1hdGNoZXI8
Y29uc3QgdHVwbGU8aW50LCBib29sLCBjaGFyLCBpbnQ+Jj4gbSA9CisgICAgICBBcmdzPDAsIDIs
IDM+KEFyZ3M8MiwgMD4oTHQoKSkpOworICBFWFBFQ1RfRVEoImFyZSBhIHR1cGxlIHdob3NlIGZp
ZWxkcyAoIzAsICMyLCAjMykgYXJlIGEgdHVwbGUgIgorICAgICAgICAgICAgIndob3NlIGZpZWxk
cyAoIzIsICMwKSBhcmUgYSBwYWlyIHdoZXJlIHRoZSBmaXJzdCA8IHRoZSBzZWNvbmQiLAorICAg
ICAgICAgICAgRGVzY3JpYmUobSkpOworfQorCitURVNUKEFyZ3NUZXN0LCBEZXNjcmliZXNOZWdh
dGlvbkNvcnJlY3RseSkgeworICBjb25zdCBNYXRjaGVyPHR1cGxlPGludCwgY2hhcj4gPiBtID0g
QXJnczwxLCAwPihHdCgpKTsKKyAgRVhQRUNUX0VRKCJhcmUgYSB0dXBsZSB3aG9zZSBmaWVsZHMg
KCMxLCAjMCkgYXJlbid0IGEgcGFpciAiCisgICAgICAgICAgICAid2hlcmUgdGhlIGZpcnN0ID4g
dGhlIHNlY29uZCIsCisgICAgICAgICAgICBEZXNjcmliZU5lZ2F0aW9uKG0pKTsKK30KKworVEVT
VChBcmdzVGVzdCwgRXhwbGFpbnNNYXRjaFJlc3VsdFdpdGhvdXRJbm5lckV4cGxhbmF0aW9uKSB7
CisgIGNvbnN0IE1hdGNoZXI8dHVwbGU8Ym9vbCwgaW50LCBpbnQ+ID4gbSA9IEFyZ3M8MSwgMj4o
RXEoKSk7CisgIEVYUEVDVF9FUSgid2hvc2UgZmllbGRzICgjMSwgIzIpIGFyZSAoNDIsIDQyKSIs
CisgICAgICAgICAgICBFeHBsYWluKG0sIG1ha2VfdHVwbGUoZmFsc2UsIDQyLCA0MikpKTsKKyAg
RVhQRUNUX0VRKCJ3aG9zZSBmaWVsZHMgKCMxLCAjMikgYXJlICg0MiwgNDMpIiwKKyAgICAgICAg
ICAgIEV4cGxhaW4obSwgbWFrZV90dXBsZShmYWxzZSwgNDIsIDQzKSkpOworfQorCisvLyBGb3Ig
dGVzdGluZyBBcmdzPD4ncyBleHBsYW5hdGlvbi4KK2NsYXNzIExlc3NUaGFuTWF0Y2hlciA6IHB1
YmxpYyBNYXRjaGVySW50ZXJmYWNlPHR1cGxlPGNoYXIsIGludD4gPiB7CisgcHVibGljOgorICB2
aXJ0dWFsIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHt9CisKKyAg
dmlydHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbih0dXBsZTxjaGFyLCBpbnQ+IHZhbHVlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVy
KSBjb25zdCB7CisgICAgY29uc3QgaW50IGRpZmYgPSBnZXQ8MD4odmFsdWUpIC0gZ2V0PDE+KHZh
bHVlKTsKKyAgICBpZiAoZGlmZiA+IDApIHsKKyAgICAgICpsaXN0ZW5lciA8PCAid2hlcmUgdGhl
IGZpcnN0IHZhbHVlIGlzICIgPDwgZGlmZgorICAgICAgICAgICAgICAgIDw8ICIgbW9yZSB0aGFu
IHRoZSBzZWNvbmQiOworICAgIH0KKyAgICByZXR1cm4gZGlmZiA8IDA7CisgIH0KK307CisKK01h
dGNoZXI8dHVwbGU8Y2hhciwgaW50PiA+IExlc3NUaGFuKCkgeworICByZXR1cm4gTWFrZU1hdGNo
ZXIobmV3IExlc3NUaGFuTWF0Y2hlcik7Cit9CisKK1RFU1QoQXJnc1Rlc3QsIEV4cGxhaW5zTWF0
Y2hSZXN1bHRXaXRoSW5uZXJFeHBsYW5hdGlvbikgeworICBjb25zdCBNYXRjaGVyPHR1cGxlPGNo
YXIsIGludCwgaW50PiA+IG0gPSBBcmdzPDAsIDI+KExlc3NUaGFuKCkpOworICBFWFBFQ1RfRVEo
Indob3NlIGZpZWxkcyAoIzAsICMyKSBhcmUgKCdhJyAoOTcsIDB4NjEpLCA0MiksICIKKyAgICAg
ICAgICAgICJ3aGVyZSB0aGUgZmlyc3QgdmFsdWUgaXMgNTUgbW9yZSB0aGFuIHRoZSBzZWNvbmQi
LAorICAgICAgICAgICAgRXhwbGFpbihtLCBtYWtlX3R1cGxlKCdhJywgNDIsIDQyKSkpOworICBF
WFBFQ1RfRVEoIndob3NlIGZpZWxkcyAoIzAsICMyKSBhcmUgKCdcXDAnLCA0MykiLAorICAgICAg
ICAgICAgRXhwbGFpbihtLCBtYWtlX3R1cGxlKCdcMCcsIDQyLCA0MykpKTsKK30KKworLy8gRm9y
IHRlc3RpbmcgRXhwbGFpbk1hdGNoUmVzdWx0VG8oKS4KK2NsYXNzIEdyZWF0ZXJUaGFuTWF0Y2hl
ciA6IHB1YmxpYyBNYXRjaGVySW50ZXJmYWNlPGludD4geworIHB1YmxpYzoKKyAgZXhwbGljaXQg
R3JlYXRlclRoYW5NYXRjaGVyKGludCByaHMpIDogcmhzXyhyaHMpIHt9CisKKyAgdmlydHVhbCB2
b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7CisgICAgKm9zIDw8ICJp
cyBncmVhdGVyIHRoYW4gIiA8PCByaHNfOworICB9CisKKyAgdmlydHVhbCBib29sIE1hdGNoQW5k
RXhwbGFpbihpbnQgbGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoUmVz
dWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBjb25zdCB7CisgICAgY29uc3QgaW50IGRpZmYgPSBsaHMg
LSByaHNfOworICAgIGlmIChkaWZmID4gMCkgeworICAgICAgKmxpc3RlbmVyIDw8ICJ3aGljaCBp
cyAiIDw8IGRpZmYgPDwgIiBtb3JlIHRoYW4gIiA8PCByaHNfOworICAgIH0gZWxzZSBpZiAoZGlm
ZiA9PSAwKSB7CisgICAgICAqbGlzdGVuZXIgPDwgIndoaWNoIGlzIHRoZSBzYW1lIGFzICIgPDwg
cmhzXzsKKyAgICB9IGVsc2UgeworICAgICAgKmxpc3RlbmVyIDw8ICJ3aGljaCBpcyAiIDw8IC1k
aWZmIDw8ICIgbGVzcyB0aGFuICIgPDwgcmhzXzsKKyAgICB9CisKKyAgICByZXR1cm4gbGhzID4g
cmhzXzsKKyAgfQorCisgcHJpdmF0ZToKKyAgaW50IHJoc187Cit9OworCitNYXRjaGVyPGludD4g
R3JlYXRlclRoYW4oaW50IG4pIHsKKyAgcmV0dXJuIE1ha2VNYXRjaGVyKG5ldyBHcmVhdGVyVGhh
bk1hdGNoZXIobikpOworfQorCisvLyBUZXN0cyBmb3IgRWxlbWVudHNBcmUoKS4KKworVEVTVChF
bGVtZW50c0FyZVRlc3QsIENhbkRlc2NyaWJlRXhwZWN0aW5nTm9FbGVtZW50KSB7CisgIE1hdGNo
ZXI8Y29uc3QgdmVjdG9yPGludD4mPiBtID0gRWxlbWVudHNBcmUoKTsKKyAgRVhQRUNUX0VRKCJp
cyBlbXB0eSIsIERlc2NyaWJlKG0pKTsKK30KKworVEVTVChFbGVtZW50c0FyZVRlc3QsIENhbkRl
c2NyaWJlRXhwZWN0aW5nT25lRWxlbWVudCkgeworICBNYXRjaGVyPHZlY3RvcjxpbnQ+ID4gbSA9
IEVsZW1lbnRzQXJlKEd0KDUpKTsKKyAgRVhQRUNUX0VRKCJoYXMgMSBlbGVtZW50IHRoYXQgaXMg
PiA1IiwgRGVzY3JpYmUobSkpOworfQorCitURVNUKEVsZW1lbnRzQXJlVGVzdCwgQ2FuRGVzY3Jp
YmVFeHBlY3RpbmdNYW55RWxlbWVudHMpIHsKKyAgTWF0Y2hlcjxsaXN0PHN0ZDo6c3RyaW5nPiA+
IG0gPSBFbGVtZW50c0FyZShTdHJFcSgib25lIiksICJ0d28iKTsKKyAgRVhQRUNUX0VRKCJoYXMg
MiBlbGVtZW50cyB3aGVyZVxuIgorICAgICAgICAgICAgImVsZW1lbnQgIzAgaXMgZXF1YWwgdG8g
XCJvbmVcIixcbiIKKyAgICAgICAgICAgICJlbGVtZW50ICMxIGlzIGVxdWFsIHRvIFwidHdvXCIi
LCBEZXNjcmliZShtKSk7Cit9CisKK1RFU1QoRWxlbWVudHNBcmVUZXN0LCBDYW5EZXNjcmliZU5l
Z2F0aW9uT2ZFeHBlY3RpbmdOb0VsZW1lbnQpIHsKKyAgTWF0Y2hlcjx2ZWN0b3I8aW50PiA+IG0g
PSBFbGVtZW50c0FyZSgpOworICBFWFBFQ1RfRVEoImlzbid0IGVtcHR5IiwgRGVzY3JpYmVOZWdh
dGlvbihtKSk7Cit9CisKK1RFU1QoRWxlbWVudHNBcmVUZXN0LCBDYW5EZXNjcmliZU5lZ2F0aW9u
T2ZFeHBlY3RpbmdPbmVFbG1lbnQpIHsKKyAgTWF0Y2hlcjxjb25zdCBsaXN0PGludD4mID4gbSA9
IEVsZW1lbnRzQXJlKEd0KDUpKTsKKyAgRVhQRUNUX0VRKCJkb2Vzbid0IGhhdmUgMSBlbGVtZW50
LCBvclxuIgorICAgICAgICAgICAgImVsZW1lbnQgIzAgaXNuJ3QgPiA1IiwgRGVzY3JpYmVOZWdh
dGlvbihtKSk7Cit9CisKK1RFU1QoRWxlbWVudHNBcmVUZXN0LCBDYW5EZXNjcmliZU5lZ2F0aW9u
T2ZFeHBlY3RpbmdNYW55RWxlbWVudHMpIHsKKyAgTWF0Y2hlcjxjb25zdCBsaXN0PHN0ZDo6c3Ry
aW5nPiY+IG0gPSBFbGVtZW50c0FyZSgib25lIiwgInR3byIpOworICBFWFBFQ1RfRVEoImRvZXNu
J3QgaGF2ZSAyIGVsZW1lbnRzLCBvclxuIgorICAgICAgICAgICAgImVsZW1lbnQgIzAgaXNuJ3Qg
ZXF1YWwgdG8gXCJvbmVcIiwgb3JcbiIKKyAgICAgICAgICAgICJlbGVtZW50ICMxIGlzbid0IGVx
dWFsIHRvIFwidHdvXCIiLCBEZXNjcmliZU5lZ2F0aW9uKG0pKTsKK30KKworVEVTVChFbGVtZW50
c0FyZVRlc3QsIERvZXNOb3RFeHBsYWluVHJpdmlhbE1hdGNoKSB7CisgIE1hdGNoZXI8Y29uc3Qg
bGlzdDxpbnQ+JiA+IG0gPSBFbGVtZW50c0FyZSgxLCBOZSgyKSk7CisKKyAgbGlzdDxpbnQ+IHRl
c3RfbGlzdDsKKyAgdGVzdF9saXN0LnB1c2hfYmFjaygxKTsKKyAgdGVzdF9saXN0LnB1c2hfYmFj
aygzKTsKKyAgRVhQRUNUX0VRKCIiLCBFeHBsYWluKG0sIHRlc3RfbGlzdCkpOyAgLy8gTm8gbmVl
ZCB0byBleHBsYWluIGFueXRoaW5nLgorfQorCitURVNUKEVsZW1lbnRzQXJlVGVzdCwgRXhwbGFp
bnNOb25Ucml2aWFsTWF0Y2gpIHsKKyAgTWF0Y2hlcjxjb25zdCB2ZWN0b3I8aW50PiYgPiBtID0K
KyAgICAgIEVsZW1lbnRzQXJlKEdyZWF0ZXJUaGFuKDEpLCAwLCBHcmVhdGVyVGhhbigyKSk7CisK
KyAgY29uc3QgaW50IGFbXSA9IHsgMTAsIDAsIDEwMCB9OworICB2ZWN0b3I8aW50PiB0ZXN0X3Zl
Y3RvcihhLCBhICsgR1RFU1RfQVJSQVlfU0laRV8oYSkpOworICBFWFBFQ1RfRVEoIndob3NlIGVs
ZW1lbnQgIzAgbWF0Y2hlcywgd2hpY2ggaXMgOSBtb3JlIHRoYW4gMSxcbiIKKyAgICAgICAgICAg
ICJhbmQgd2hvc2UgZWxlbWVudCAjMiBtYXRjaGVzLCB3aGljaCBpcyA5OCBtb3JlIHRoYW4gMiIs
CisgICAgICAgICAgICBFeHBsYWluKG0sIHRlc3RfdmVjdG9yKSk7Cit9CisKK1RFU1QoRWxlbWVu
dHNBcmVUZXN0LCBDYW5FeHBsYWluTWlzbWF0Y2hXcm9uZ1NpemUpIHsKKyAgTWF0Y2hlcjxjb25z
dCBsaXN0PGludD4mID4gbSA9IEVsZW1lbnRzQXJlKDEsIDMpOworCisgIGxpc3Q8aW50PiB0ZXN0
X2xpc3Q7CisgIC8vIE5vIG5lZWQgdG8gZXhwbGFpbiB3aGVuIHRoZSBjb250YWluZXIgaXMgZW1w
dHkuCisgIEVYUEVDVF9FUSgiIiwgRXhwbGFpbihtLCB0ZXN0X2xpc3QpKTsKKworICB0ZXN0X2xp
c3QucHVzaF9iYWNrKDEpOworICBFWFBFQ1RfRVEoIndoaWNoIGhhcyAxIGVsZW1lbnQiLCBFeHBs
YWluKG0sIHRlc3RfbGlzdCkpOworfQorCitURVNUKEVsZW1lbnRzQXJlVGVzdCwgQ2FuRXhwbGFp
bk1pc21hdGNoUmlnaHRTaXplKSB7CisgIE1hdGNoZXI8Y29uc3QgdmVjdG9yPGludD4mID4gbSA9
IEVsZW1lbnRzQXJlKDEsIEdyZWF0ZXJUaGFuKDUpKTsKKworICB2ZWN0b3I8aW50PiB2OworICB2
LnB1c2hfYmFjaygyKTsKKyAgdi5wdXNoX2JhY2soMSk7CisgIEVYUEVDVF9FUSgid2hvc2UgZWxl
bWVudCAjMCBkb2Vzbid0IG1hdGNoIiwgRXhwbGFpbihtLCB2KSk7CisKKyAgdlswXSA9IDE7Cisg
IEVYUEVDVF9FUSgid2hvc2UgZWxlbWVudCAjMSBkb2Vzbid0IG1hdGNoLCB3aGljaCBpcyA0IGxl
c3MgdGhhbiA1IiwKKyAgICAgICAgICAgIEV4cGxhaW4obSwgdikpOworfQorCitURVNUKEVsZW1l
bnRzQXJlVGVzdCwgTWF0Y2hlc09uZUVsZW1lbnRWZWN0b3IpIHsKKyAgdmVjdG9yPHN0ZDo6c3Ry
aW5nPiB0ZXN0X3ZlY3RvcjsKKyAgdGVzdF92ZWN0b3IucHVzaF9iYWNrKCJ0ZXN0IHN0cmluZyIp
OworCisgIEVYUEVDVF9USEFUKHRlc3RfdmVjdG9yLCBFbGVtZW50c0FyZShTdHJFcSgidGVzdCBz
dHJpbmciKSkpOworfQorCitURVNUKEVsZW1lbnRzQXJlVGVzdCwgTWF0Y2hlc09uZUVsZW1lbnRM
aXN0KSB7CisgIGxpc3Q8c3RkOjpzdHJpbmc+IHRlc3RfbGlzdDsKKyAgdGVzdF9saXN0LnB1c2hf
YmFjaygidGVzdCBzdHJpbmciKTsKKworICBFWFBFQ1RfVEhBVCh0ZXN0X2xpc3QsIEVsZW1lbnRz
QXJlKCJ0ZXN0IHN0cmluZyIpKTsKK30KKworVEVTVChFbGVtZW50c0FyZVRlc3QsIE1hdGNoZXNU
aHJlZUVsZW1lbnRWZWN0b3IpIHsKKyAgdmVjdG9yPHN0ZDo6c3RyaW5nPiB0ZXN0X3ZlY3RvcjsK
KyAgdGVzdF92ZWN0b3IucHVzaF9iYWNrKCJvbmUiKTsKKyAgdGVzdF92ZWN0b3IucHVzaF9iYWNr
KCJ0d28iKTsKKyAgdGVzdF92ZWN0b3IucHVzaF9iYWNrKCJ0aHJlZSIpOworCisgIEVYUEVDVF9U
SEFUKHRlc3RfdmVjdG9yLCBFbGVtZW50c0FyZSgib25lIiwgU3RyRXEoInR3byIpLCBfKSk7Cit9
CisKK1RFU1QoRWxlbWVudHNBcmVUZXN0LCBNYXRjaGVzT25lRWxlbWVudEVxTWF0Y2hlcikgewor
ICB2ZWN0b3I8aW50PiB0ZXN0X3ZlY3RvcjsKKyAgdGVzdF92ZWN0b3IucHVzaF9iYWNrKDQpOwor
CisgIEVYUEVDVF9USEFUKHRlc3RfdmVjdG9yLCBFbGVtZW50c0FyZShFcSg0KSkpOworfQorCitU
RVNUKEVsZW1lbnRzQXJlVGVzdCwgTWF0Y2hlc09uZUVsZW1lbnRBbnlNYXRjaGVyKSB7CisgIHZl
Y3RvcjxpbnQ+IHRlc3RfdmVjdG9yOworICB0ZXN0X3ZlY3Rvci5wdXNoX2JhY2soNCk7CisKKyAg
RVhQRUNUX1RIQVQodGVzdF92ZWN0b3IsIEVsZW1lbnRzQXJlKF8pKTsKK30KKworVEVTVChFbGVt
ZW50c0FyZVRlc3QsIE1hdGNoZXNPbmVFbGVtZW50VmFsdWUpIHsKKyAgdmVjdG9yPGludD4gdGVz
dF92ZWN0b3I7CisgIHRlc3RfdmVjdG9yLnB1c2hfYmFjayg0KTsKKworICBFWFBFQ1RfVEhBVCh0
ZXN0X3ZlY3RvciwgRWxlbWVudHNBcmUoNCkpOworfQorCitURVNUKEVsZW1lbnRzQXJlVGVzdCwg
TWF0Y2hlc1RocmVlRWxlbWVudHNNaXhlZE1hdGNoZXJzKSB7CisgIHZlY3RvcjxpbnQ+IHRlc3Rf
dmVjdG9yOworICB0ZXN0X3ZlY3Rvci5wdXNoX2JhY2soMSk7CisgIHRlc3RfdmVjdG9yLnB1c2hf
YmFjaygyKTsKKyAgdGVzdF92ZWN0b3IucHVzaF9iYWNrKDMpOworCisgIEVYUEVDVF9USEFUKHRl
c3RfdmVjdG9yLCBFbGVtZW50c0FyZSgxLCBFcSgyKSwgXykpOworfQorCitURVNUKEVsZW1lbnRz
QXJlVGVzdCwgTWF0Y2hlc1RlbkVsZW1lbnRWZWN0b3IpIHsKKyAgY29uc3QgaW50IGFbXSA9IHsg
MCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSB9OworICB2ZWN0b3I8aW50PiB0ZXN0X3ZlY3Rv
cihhLCBhICsgR1RFU1RfQVJSQVlfU0laRV8oYSkpOworCisgIEVYUEVDVF9USEFUKHRlc3RfdmVj
dG9yLAorICAgICAgICAgICAgICAvLyBUaGUgZWxlbWVudCBsaXN0IGNhbiBjb250YWluIHZhbHVl
cyBhbmQvb3IgbWF0Y2hlcnMKKyAgICAgICAgICAgICAgLy8gb2YgZGlmZmVyZW50IHR5cGVzLgor
ICAgICAgICAgICAgICBFbGVtZW50c0FyZSgwLCBHZSgwKSwgXywgMywgNCwgTmUoMiksIEVxKDYp
LCA3LCA4LCBfKSk7Cit9CisKK1RFU1QoRWxlbWVudHNBcmVUZXN0LCBEb2VzTm90TWF0Y2hXcm9u
Z1NpemUpIHsKKyAgdmVjdG9yPHN0ZDo6c3RyaW5nPiB0ZXN0X3ZlY3RvcjsKKyAgdGVzdF92ZWN0
b3IucHVzaF9iYWNrKCJ0ZXN0IHN0cmluZyIpOworICB0ZXN0X3ZlY3Rvci5wdXNoX2JhY2soInRl
c3Qgc3RyaW5nIik7CisKKyAgTWF0Y2hlcjx2ZWN0b3I8c3RkOjpzdHJpbmc+ID4gbSA9IEVsZW1l
bnRzQXJlKFN0ckVxKCJ0ZXN0IHN0cmluZyIpKTsKKyAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyh0
ZXN0X3ZlY3RvcikpOworfQorCitURVNUKEVsZW1lbnRzQXJlVGVzdCwgRG9lc05vdE1hdGNoV3Jv
bmdWYWx1ZSkgeworICB2ZWN0b3I8c3RkOjpzdHJpbmc+IHRlc3RfdmVjdG9yOworICB0ZXN0X3Zl
Y3Rvci5wdXNoX2JhY2soIm90aGVyIHN0cmluZyIpOworCisgIE1hdGNoZXI8dmVjdG9yPHN0ZDo6
c3RyaW5nPiA+IG0gPSBFbGVtZW50c0FyZShTdHJFcSgidGVzdCBzdHJpbmciKSk7CisgIEVYUEVD
VF9GQUxTRShtLk1hdGNoZXModGVzdF92ZWN0b3IpKTsKK30KKworVEVTVChFbGVtZW50c0FyZVRl
c3QsIERvZXNOb3RNYXRjaFdyb25nT3JkZXIpIHsKKyAgdmVjdG9yPHN0ZDo6c3RyaW5nPiB0ZXN0
X3ZlY3RvcjsKKyAgdGVzdF92ZWN0b3IucHVzaF9iYWNrKCJvbmUiKTsKKyAgdGVzdF92ZWN0b3Iu
cHVzaF9iYWNrKCJ0aHJlZSIpOworICB0ZXN0X3ZlY3Rvci5wdXNoX2JhY2soInR3byIpOworCisg
IE1hdGNoZXI8dmVjdG9yPHN0ZDo6c3RyaW5nPiA+IG0gPQorICAgICAgRWxlbWVudHNBcmUoU3Ry
RXEoIm9uZSIpLCBTdHJFcSgidHdvIiksIFN0ckVxKCJ0aHJlZSIpKTsKKyAgRVhQRUNUX0ZBTFNF
KG0uTWF0Y2hlcyh0ZXN0X3ZlY3RvcikpOworfQorCitURVNUKEVsZW1lbnRzQXJlVGVzdCwgV29y
a3NGb3JOZXN0ZWRDb250YWluZXIpIHsKKyAgY29uc3QgY2hhciogc3RyaW5nc1tdID0geworICAg
ICJIaSIsCisgICAgIndvcmxkIgorICB9OworCisgIHZlY3RvcjxsaXN0PGNoYXI+ID4gbmVzdGVk
OworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IEdURVNUX0FSUkFZX1NJWkVfKHN0cmluZ3MpOyBp
KyspIHsKKyAgICBuZXN0ZWQucHVzaF9iYWNrKGxpc3Q8Y2hhcj4oc3RyaW5nc1tpXSwgc3RyaW5n
c1tpXSArIHN0cmxlbihzdHJpbmdzW2ldKSkpOworICB9CisKKyAgRVhQRUNUX1RIQVQobmVzdGVk
LCBFbGVtZW50c0FyZShFbGVtZW50c0FyZSgnSCcsIE5lKCdlJykpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEVsZW1lbnRzQXJlKCd3JywgJ28nLCBfLCBfLCAnZCcpKSk7Cisg
IEVYUEVDVF9USEFUKG5lc3RlZCwgTm90KEVsZW1lbnRzQXJlKEVsZW1lbnRzQXJlKCdIJywgJ2Un
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWxlbWVudHNBcmUoJ3cn
LCAnbycsIF8sIF8sICdkJykpKSk7Cit9CisKK1RFU1QoRWxlbWVudHNBcmVUZXN0LCBXb3Jrc1dp
dGhCeVJlZkVsZW1lbnRNYXRjaGVycykgeworICBpbnQgYVtdID0geyAwLCAxLCAyIH07CisgIHZl
Y3RvcjxpbnQ+IHYoYSwgYSArIEdURVNUX0FSUkFZX1NJWkVfKGEpKTsKKworICBFWFBFQ1RfVEhB
VCh2LCBFbGVtZW50c0FyZShSZWYodlswXSksIFJlZih2WzFdKSwgUmVmKHZbMl0pKSk7CisgIEVY
UEVDVF9USEFUKHYsIE5vdChFbGVtZW50c0FyZShSZWYodlswXSksIFJlZih2WzFdKSwgUmVmKGFb
Ml0pKSkpOworfQorCitURVNUKEVsZW1lbnRzQXJlVGVzdCwgV29ya3NXaXRoQ29udGFpbmVyUG9p
bnRlclVzaW5nUG9pbnRlZSkgeworICBpbnQgYVtdID0geyAwLCAxLCAyIH07CisgIHZlY3Rvcjxp
bnQ+IHYoYSwgYSArIEdURVNUX0FSUkFZX1NJWkVfKGEpKTsKKworICBFWFBFQ1RfVEhBVCgmdiwg
UG9pbnRlZShFbGVtZW50c0FyZSgwLCAxLCBfKSkpOworICBFWFBFQ1RfVEhBVCgmdiwgTm90KFBv
aW50ZWUoRWxlbWVudHNBcmUoMCwgXywgMykpKSk7Cit9CisKK1RFU1QoRWxlbWVudHNBcmVUZXN0
LCBXb3Jrc1dpdGhOYXRpdmVBcnJheVBhc3NlZEJ5UmVmZXJlbmNlKSB7CisgIGludCBhcnJheVtd
ID0geyAwLCAxLCAyIH07CisgIEVYUEVDVF9USEFUKGFycmF5LCBFbGVtZW50c0FyZSgwLCAxLCBf
KSk7CisgIEVYUEVDVF9USEFUKGFycmF5LCBOb3QoRWxlbWVudHNBcmUoMSwgXywgXykpKTsKKyAg
RVhQRUNUX1RIQVQoYXJyYXksIE5vdChFbGVtZW50c0FyZSgwLCBfKSkpOworfQorCitjbGFzcyBO
YXRpdmVBcnJheVBhc3NlZEFzUG9pbnRlckFuZFNpemUgeworIHB1YmxpYzoKKyAgTmF0aXZlQXJy
YXlQYXNzZWRBc1BvaW50ZXJBbmRTaXplKCkge30KKworICBNT0NLX01FVEhPRDIoSGVscGVyLCB2
b2lkKGludCogYXJyYXksIGludCBzaXplKSk7CisKKyBwcml2YXRlOgorICBHVEVTVF9ESVNBTExP
V19DT1BZX0FORF9BU1NJR05fKE5hdGl2ZUFycmF5UGFzc2VkQXNQb2ludGVyQW5kU2l6ZSk7Cit9
OworCitURVNUKEVsZW1lbnRzQXJlVGVzdCwgV29ya3NXaXRoTmF0aXZlQXJyYXlQYXNzZWRBc1Bv
aW50ZXJBbmRTaXplKSB7CisgIGludCBhcnJheVtdID0geyAwLCAxIH07CisgIDo6dGVzdGluZzo6
dHVwbGU8aW50Kiwgc2l6ZV90PiBhcnJheV9hc190dXBsZShhcnJheSwgMik7CisgIEVYUEVDVF9U
SEFUKGFycmF5X2FzX3R1cGxlLCBFbGVtZW50c0FyZSgwLCAxKSk7CisgIEVYUEVDVF9USEFUKGFy
cmF5X2FzX3R1cGxlLCBOb3QoRWxlbWVudHNBcmUoMCkpKTsKKworICBOYXRpdmVBcnJheVBhc3Nl
ZEFzUG9pbnRlckFuZFNpemUgaGVscGVyOworICBFWFBFQ1RfQ0FMTChoZWxwZXIsIEhlbHBlcihf
LCBfKSkKKyAgICAgIC5XaXRoKEVsZW1lbnRzQXJlKDAsIDEpKTsKKyAgaGVscGVyLkhlbHBlcihh
cnJheSwgMik7Cit9CisKK1RFU1QoRWxlbWVudHNBcmVUZXN0LCBXb3Jrc1dpdGhUd29EaW1lbnNp
b25hbE5hdGl2ZUFycmF5KSB7CisgIGNvbnN0IGNoYXIgYTJbXVszXSA9IHsgImhpIiwgImxvIiB9
OworICBFWFBFQ1RfVEhBVChhMiwgRWxlbWVudHNBcmUoRWxlbWVudHNBcmUoJ2gnLCAnaScsICdc
MCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWxlbWVudHNBcmUoJ2wnLCAnbycs
ICdcMCcpKSk7CisgIEVYUEVDVF9USEFUKGEyLCBFbGVtZW50c0FyZShTdHJFcSgiaGkiKSwgU3Ry
RXEoImxvIikpKTsKKyAgRVhQRUNUX1RIQVQoYTIsIEVsZW1lbnRzQXJlKE5vdChFbGVtZW50c0Fy
ZSgnaCcsICdvJywgJ1wwJykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWxlbWVu
dHNBcmUoJ2wnLCAnbycsICdcMCcpKSk7Cit9CisKK1RFU1QoRWxlbWVudHNBcmVUZXN0LCBBY2Nl
cHRzU3RyaW5nTGl0ZXJhbCkgeworICBzdGQ6OnN0cmluZyBhcnJheVtdID0geyJoaSIsICJvbmUi
LCAidHdvIn07CisgIEVYUEVDVF9USEFUKGFycmF5LCBFbGVtZW50c0FyZSgiaGkiLCAib25lIiwg
InR3byIpKTsKKyAgRVhQRUNUX1RIQVQoYXJyYXksIE5vdChFbGVtZW50c0FyZSgiaGkiLCAib25l
IiwgInRvbyIpKSk7Cit9CisKKyNpZm5kZWYgX01TQ19WRVIKKworLy8gVGhlIGZvbGxvd2luZyB0
ZXN0IHBhc3NlcyBhIHZhbHVlIG9mIHR5cGUgY29uc3QgY2hhcltdIHRvIGEKKy8vIGZ1bmN0aW9u
IHRlbXBsYXRlIHRoYXQgZXhwZWN0cyBjb25zdCBUJi4gIFNvbWUgdmVyc2lvbnMgb2YgTVNWQwor
Ly8gZ2VuZXJhdGVzIGEgY29tcGlsZXIgZXJyb3IgQzI2NjUgZm9yIHRoYXQuICBXZSBiZWxpZXZl
IGl0J3MgYSBidWcKKy8vIGluIE1TVkMuICBUaGVyZWZvcmUgdGhpcyB0ZXN0IGlzICNpZi1lZCBv
dXQgZm9yIE1TVkMuCisKKy8vIERlY2xhcmVkIGhlcmUgd2l0aCB0aGUgc2l6ZSB1bmtub3duLiAg
RGVmaW5lZCBBRlRFUiB0aGUgZm9sbG93aW5nIHRlc3QuCitleHRlcm4gY29uc3QgY2hhciBrSGlb
XTsKKworVEVTVChFbGVtZW50c0FyZVRlc3QsIEFjY2VwdHNBcnJheVdpdGhVbmtub3duU2l6ZSkg
eworICAvLyBUaGUgc2l6ZSBvZiBrSGkgaXMgbm90IGtub3duIGluIHRoaXMgdGVzdCwgYnV0IEVs
ZW1lbnRzQXJlKCkgc2hvdWxkCisgIC8vIHN0aWxsIGFjY2VwdCBpdC4KKworICBzdGQ6OnN0cmlu
ZyBhcnJheTFbXSA9IHsiaGkifTsKKyAgRVhQRUNUX1RIQVQoYXJyYXkxLCBFbGVtZW50c0FyZShr
SGkpKTsKKworICBzdGQ6OnN0cmluZyBhcnJheTJbXSA9IHsiaG8ifTsKKyAgRVhQRUNUX1RIQVQo
YXJyYXkyLCBOb3QoRWxlbWVudHNBcmUoa0hpKSkpOworfQorCitjb25zdCBjaGFyIGtIaVtdID0g
ImhpIjsKKworI2VuZGlmICAvLyBfTVNDX1ZFUgorCitURVNUKEVsZW1lbnRzQXJlVGVzdCwgTWFr
ZXNDb3B5T2ZBcmd1bWVudHMpIHsKKyAgaW50IHggPSAxOworICBpbnQgeSA9IDI7CisgIC8vIFRo
aXMgc2hvdWxkIG1ha2UgYSBjb3B5IG9mIHggYW5kIHkuCisgIDo6dGVzdGluZzo6aW50ZXJuYWw6
OkVsZW1lbnRzQXJlTWF0Y2hlcjx0ZXN0aW5nOjp0dXBsZTxpbnQsIGludD4gPgorICAgICAgICAg
IHBvbHltb3JwaGljX21hdGNoZXIgPSBFbGVtZW50c0FyZSh4LCB5KTsKKyAgLy8gQ2hhbmdpbmcg
eCBhbmQgeSBub3cgc2hvdWxkbid0IGFmZmVjdCB0aGUgbWVhbmluZyBvZiB0aGUgYWJvdmUgbWF0
Y2hlci4KKyAgeCA9IHkgPSAwOworICBjb25zdCBpbnQgYXJyYXkxW10gPSB7IDEsIDIgfTsKKyAg
RVhQRUNUX1RIQVQoYXJyYXkxLCBwb2x5bW9ycGhpY19tYXRjaGVyKTsKKyAgY29uc3QgaW50IGFy
cmF5MltdID0geyAwLCAwIH07CisgIEVYUEVDVF9USEFUKGFycmF5MiwgTm90KHBvbHltb3JwaGlj
X21hdGNoZXIpKTsKK30KKworCisvLyBUZXN0cyBmb3IgRWxlbWVudHNBcmVBcnJheSgpLiAgU2lu
Y2UgRWxlbWVudHNBcmVBcnJheSgpIHNoYXJlcyBtb3N0CisvLyBvZiB0aGUgaW1wbGVtZW50YXRp
b24gd2l0aCBFbGVtZW50c0FyZSgpLCB3ZSBkb24ndCB0ZXN0IGl0IGFzCisvLyB0aG9yb3VnaGx5
IGhlcmUuCisKK1RFU1QoRWxlbWVudHNBcmVBcnJheVRlc3QsIENhbkJlQ3JlYXRlZFdpdGhWYWx1
ZUFycmF5KSB7CisgIGNvbnN0IGludCBhW10gPSB7IDEsIDIsIDMgfTsKKworICB2ZWN0b3I8aW50
PiB0ZXN0X3ZlY3RvcihhLCBhICsgR1RFU1RfQVJSQVlfU0laRV8oYSkpOworICBFWFBFQ1RfVEhB
VCh0ZXN0X3ZlY3RvciwgRWxlbWVudHNBcmVBcnJheShhKSk7CisKKyAgdGVzdF92ZWN0b3JbMl0g
PSAwOworICBFWFBFQ1RfVEhBVCh0ZXN0X3ZlY3RvciwgTm90KEVsZW1lbnRzQXJlQXJyYXkoYSkp
KTsKK30KKworVEVTVChFbGVtZW50c0FyZUFycmF5VGVzdCwgQ2FuQmVDcmVhdGVkV2l0aEFycmF5
U2l6ZSkgeworICBjb25zdCBjaGFyKiBhW10gPSB7ICJvbmUiLCAidHdvIiwgInRocmVlIiB9Owor
CisgIHZlY3RvcjxzdGQ6OnN0cmluZz4gdGVzdF92ZWN0b3IoYSwgYSArIEdURVNUX0FSUkFZX1NJ
WkVfKGEpKTsKKyAgRVhQRUNUX1RIQVQodGVzdF92ZWN0b3IsIEVsZW1lbnRzQXJlQXJyYXkoYSwg
R1RFU1RfQVJSQVlfU0laRV8oYSkpKTsKKworICBjb25zdCBjaGFyKiogcCA9IGE7CisgIHRlc3Rf
dmVjdG9yWzBdID0gIjEiOworICBFWFBFQ1RfVEhBVCh0ZXN0X3ZlY3RvciwgTm90KEVsZW1lbnRz
QXJlQXJyYXkocCwgR1RFU1RfQVJSQVlfU0laRV8oYSkpKSk7Cit9CisKK1RFU1QoRWxlbWVudHNB
cmVBcnJheVRlc3QsIENhbkJlQ3JlYXRlZFdpdGhvdXRBcnJheVNpemUpIHsKKyAgY29uc3QgY2hh
ciogYVtdID0geyAib25lIiwgInR3byIsICJ0aHJlZSIgfTsKKworICB2ZWN0b3I8c3RkOjpzdHJp
bmc+IHRlc3RfdmVjdG9yKGEsIGEgKyBHVEVTVF9BUlJBWV9TSVpFXyhhKSk7CisgIEVYUEVDVF9U
SEFUKHRlc3RfdmVjdG9yLCBFbGVtZW50c0FyZUFycmF5KGEpKTsKKworICB0ZXN0X3ZlY3Rvclsw
XSA9ICIxIjsKKyAgRVhQRUNUX1RIQVQodGVzdF92ZWN0b3IsIE5vdChFbGVtZW50c0FyZUFycmF5
KGEpKSk7Cit9CisKK1RFU1QoRWxlbWVudHNBcmVBcnJheVRlc3QsIENhbkJlQ3JlYXRlZFdpdGhN
YXRjaGVyQXJyYXkpIHsKKyAgY29uc3QgTWF0Y2hlcjxzdGQ6OnN0cmluZz4ga01hdGNoZXJBcnJh
eVtdID0ge1N0ckVxKCJvbmUiKSwgU3RyRXEoInR3byIpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyRXEoInRocmVlIil9OworCisgIHZlY3Rvcjxz
dGQ6OnN0cmluZz4gdGVzdF92ZWN0b3I7CisgIHRlc3RfdmVjdG9yLnB1c2hfYmFjaygib25lIik7
CisgIHRlc3RfdmVjdG9yLnB1c2hfYmFjaygidHdvIik7CisgIHRlc3RfdmVjdG9yLnB1c2hfYmFj
aygidGhyZWUiKTsKKyAgRVhQRUNUX1RIQVQodGVzdF92ZWN0b3IsIEVsZW1lbnRzQXJlQXJyYXko
a01hdGNoZXJBcnJheSkpOworCisgIHRlc3RfdmVjdG9yLnB1c2hfYmFjaygidGhyZWUiKTsKKyAg
RVhQRUNUX1RIQVQodGVzdF92ZWN0b3IsIE5vdChFbGVtZW50c0FyZUFycmF5KGtNYXRjaGVyQXJy
YXkpKSk7Cit9CisKK1RFU1QoRWxlbWVudHNBcmVBcnJheVRlc3QsIENhbkJlQ3JlYXRlZFdpdGhW
ZWN0b3IpIHsKKyAgY29uc3QgaW50IGFbXSA9IHsgMSwgMiwgMyB9OworICB2ZWN0b3I8aW50PiB0
ZXN0X3ZlY3RvcihhLCBhICsgR1RFU1RfQVJSQVlfU0laRV8oYSkpOworICBjb25zdCB2ZWN0b3I8
aW50PiBleHBlY3RlZChhLCBhICsgR1RFU1RfQVJSQVlfU0laRV8oYSkpOworICBFWFBFQ1RfVEhB
VCh0ZXN0X3ZlY3RvciwgRWxlbWVudHNBcmVBcnJheShleHBlY3RlZCkpOworICB0ZXN0X3ZlY3Rv
ci5wdXNoX2JhY2soNCk7CisgIEVYUEVDVF9USEFUKHRlc3RfdmVjdG9yLCBOb3QoRWxlbWVudHNB
cmVBcnJheShleHBlY3RlZCkpKTsKK30KKworI2lmIEdURVNUX0hBU19TVERfSU5JVElBTElaRVJf
TElTVF8KKworVEVTVChFbGVtZW50c0FyZUFycmF5VGVzdCwgVGFrZXNJbml0aWFsaXplckxpc3Qp
IHsKKyAgY29uc3QgaW50IGFbNV0gPSB7IDEsIDIsIDMsIDQsIDUgfTsKKyAgRVhQRUNUX1RIQVQo
YSwgRWxlbWVudHNBcmVBcnJheSh7IDEsIDIsIDMsIDQsIDUgfSkpOworICBFWFBFQ1RfVEhBVChh
LCBOb3QoRWxlbWVudHNBcmVBcnJheSh7IDEsIDIsIDMsIDUsIDQgfSkpKTsKKyAgRVhQRUNUX1RI
QVQoYSwgTm90KEVsZW1lbnRzQXJlQXJyYXkoeyAxLCAyLCAzLCA0LCA2IH0pKSk7Cit9CisKK1RF
U1QoRWxlbWVudHNBcmVBcnJheVRlc3QsIFRha2VzSW5pdGlhbGl6ZXJMaXN0T2ZDU3RyaW5ncykg
eworICBjb25zdCBzdGQ6OnN0cmluZyBhWzVdID0geyJhIiwgImIiLCAiYyIsICJkIiwgImUifTsK
KyAgRVhQRUNUX1RIQVQoYSwgRWxlbWVudHNBcmVBcnJheSh7ICJhIiwgImIiLCAiYyIsICJkIiwg
ImUiIH0pKTsKKyAgRVhQRUNUX1RIQVQoYSwgTm90KEVsZW1lbnRzQXJlQXJyYXkoeyAiYSIsICJi
IiwgImMiLCAiZSIsICJkIiB9KSkpOworICBFWFBFQ1RfVEhBVChhLCBOb3QoRWxlbWVudHNBcmVB
cnJheSh7ICJhIiwgImIiLCAiYyIsICJkIiwgImVmIiB9KSkpOworfQorCitURVNUKEVsZW1lbnRz
QXJlQXJyYXlUZXN0LCBUYWtlc0luaXRpYWxpemVyTGlzdE9mU2FtZVR5cGVkTWF0Y2hlcnMpIHsK
KyAgY29uc3QgaW50IGFbNV0gPSB7IDEsIDIsIDMsIDQsIDUgfTsKKyAgRVhQRUNUX1RIQVQoYSwg
RWxlbWVudHNBcmVBcnJheSgKKyAgICAgIHsgRXEoMSksIEVxKDIpLCBFcSgzKSwgRXEoNCksIEVx
KDUpIH0pKTsKKyAgRVhQRUNUX1RIQVQoYSwgTm90KEVsZW1lbnRzQXJlQXJyYXkoCisgICAgICB7
IEVxKDEpLCBFcSgyKSwgRXEoMyksIEVxKDQpLCBFcSg2KSB9KSkpOworfQorCitURVNUKEVsZW1l
bnRzQXJlQXJyYXlUZXN0LAorICAgICBUYWtlc0luaXRpYWxpemVyTGlzdE9mRGlmZmVyZW50VHlw
ZWRNYXRjaGVycykgeworICBjb25zdCBpbnQgYVs1XSA9IHsgMSwgMiwgMywgNCwgNSB9OworICAv
LyBUaGUgY29tcGlsZXIgY2Fubm90IGluZmVyIHRoZSB0eXBlIG9mIHRoZSBpbml0aWFsaXplciBs
aXN0IGlmIGl0cworICAvLyBlbGVtZW50cyBoYXZlIGRpZmZlcmVudCB0eXBlcy4gIFdlIG11c3Qg
ZXhwbGljaXRseSBzcGVjaWZ5IHRoZQorICAvLyB1bmlmaWVkIGVsZW1lbnQgdHlwZSBpbiB0aGlz
IGNhc2UuCisgIEVYUEVDVF9USEFUKGEsIEVsZW1lbnRzQXJlQXJyYXk8TWF0Y2hlcjxpbnQ+ID4o
CisgICAgICB7IEVxKDEpLCBOZSgtMiksIEdlKDMpLCBMZSg0KSwgRXEoNSkgfSkpOworICBFWFBF
Q1RfVEhBVChhLCBOb3QoRWxlbWVudHNBcmVBcnJheTxNYXRjaGVyPGludD4gPigKKyAgICAgIHsg
RXEoMSksIE5lKC0yKSwgR2UoMyksIExlKDQpLCBFcSg2KSB9KSkpOworfQorCisjZW5kaWYgIC8v
IEdURVNUX0hBU19TVERfSU5JVElBTElaRVJfTElTVF8KKworVEVTVChFbGVtZW50c0FyZUFycmF5
VGVzdCwgQ2FuQmVDcmVhdGVkV2l0aE1hdGNoZXJWZWN0b3IpIHsKKyAgY29uc3QgaW50IGFbXSA9
IHsgMSwgMiwgMyB9OworICBjb25zdCBNYXRjaGVyPGludD4ga01hdGNoZXJzW10gPSB7IEVxKDEp
LCBFcSgyKSwgRXEoMykgfTsKKyAgdmVjdG9yPGludD4gdGVzdF92ZWN0b3IoYSwgYSArIEdURVNU
X0FSUkFZX1NJWkVfKGEpKTsKKyAgY29uc3QgdmVjdG9yPE1hdGNoZXI8aW50PiA+IGV4cGVjdGVk
KAorICAgICAga01hdGNoZXJzLCBrTWF0Y2hlcnMgKyBHVEVTVF9BUlJBWV9TSVpFXyhrTWF0Y2hl
cnMpKTsKKyAgRVhQRUNUX1RIQVQodGVzdF92ZWN0b3IsIEVsZW1lbnRzQXJlQXJyYXkoZXhwZWN0
ZWQpKTsKKyAgdGVzdF92ZWN0b3IucHVzaF9iYWNrKDQpOworICBFWFBFQ1RfVEhBVCh0ZXN0X3Zl
Y3RvciwgTm90KEVsZW1lbnRzQXJlQXJyYXkoZXhwZWN0ZWQpKSk7Cit9CisKK1RFU1QoRWxlbWVu
dHNBcmVBcnJheVRlc3QsIENhbkJlQ3JlYXRlZFdpdGhJdGVyYXRvclJhbmdlKSB7CisgIGNvbnN0
IGludCBhW10gPSB7IDEsIDIsIDMgfTsKKyAgY29uc3QgdmVjdG9yPGludD4gdGVzdF92ZWN0b3Io
YSwgYSArIEdURVNUX0FSUkFZX1NJWkVfKGEpKTsKKyAgY29uc3QgdmVjdG9yPGludD4gZXhwZWN0
ZWQoYSwgYSArIEdURVNUX0FSUkFZX1NJWkVfKGEpKTsKKyAgRVhQRUNUX1RIQVQodGVzdF92ZWN0
b3IsIEVsZW1lbnRzQXJlQXJyYXkoZXhwZWN0ZWQuYmVnaW4oKSwgZXhwZWN0ZWQuZW5kKCkpKTsK
KyAgLy8gUG9pbnRlcnMgYXJlIGl0ZXJhdG9ycywgdG9vLgorICBFWFBFQ1RfVEhBVCh0ZXN0X3Zl
Y3RvciwgRWxlbWVudHNBcmVBcnJheShhLCBhICsgR1RFU1RfQVJSQVlfU0laRV8oYSkpKTsKKyAg
Ly8gVGhlIGVtcHR5IHJhbmdlIG9mIE5VTEwgcG9pbnRlcnMgc2hvdWxkIGFsc28gYmUgb2theS4K
KyAgaW50KiBjb25zdCBudWxsX2ludCA9IE5VTEw7CisgIEVYUEVDVF9USEFUKHRlc3RfdmVjdG9y
LCBOb3QoRWxlbWVudHNBcmVBcnJheShudWxsX2ludCwgbnVsbF9pbnQpKSk7CisgIEVYUEVDVF9U
SEFUKCh2ZWN0b3I8aW50PigpKSwgRWxlbWVudHNBcmVBcnJheShudWxsX2ludCwgbnVsbF9pbnQp
KTsKK30KKworLy8gU2luY2UgRWxlbWVudHNBcmUoKSBhbmQgRWxlbWVudHNBcmVBcnJheSgpIHNo
YXJlIG11Y2ggb2YgdGhlCisvLyBpbXBsZW1lbnRhdGlvbiwgd2Ugb25seSBkbyBhIHNhbml0eSB0
ZXN0IGZvciBuYXRpdmUgYXJyYXlzIGhlcmUuCitURVNUKEVsZW1lbnRzQXJlQXJyYXlUZXN0LCBX
b3Jrc1dpdGhOYXRpdmVBcnJheSkgeworICA6OnN0ZDo6c3RyaW5nIGFbXSA9IHsgImhpIiwgImhv
IiB9OworICA6OnN0ZDo6c3RyaW5nIGJbXSA9IHsgImhpIiwgImhvIiB9OworCisgIEVYUEVDVF9U
SEFUKGEsIEVsZW1lbnRzQXJlQXJyYXkoYikpOworICBFWFBFQ1RfVEhBVChhLCBFbGVtZW50c0Fy
ZUFycmF5KGIsIDIpKTsKKyAgRVhQRUNUX1RIQVQoYSwgTm90KEVsZW1lbnRzQXJlQXJyYXkoYiwg
MSkpKTsKK30KKworVEVTVChFbGVtZW50c0FyZUFycmF5VGVzdCwgU291cmNlTGlmZVNwYW4pIHsK
KyAgY29uc3QgaW50IGFbXSA9IHsgMSwgMiwgMyB9OworICB2ZWN0b3I8aW50PiB0ZXN0X3ZlY3Rv
cihhLCBhICsgR1RFU1RfQVJSQVlfU0laRV8oYSkpOworICB2ZWN0b3I8aW50PiBleHBlY3QoYSwg
YSArIEdURVNUX0FSUkFZX1NJWkVfKGEpKTsKKyAgRWxlbWVudHNBcmVBcnJheU1hdGNoZXI8aW50
PiBtYXRjaGVyX21ha2VyID0KKyAgICAgIEVsZW1lbnRzQXJlQXJyYXkoZXhwZWN0LmJlZ2luKCks
IGV4cGVjdC5lbmQoKSk7CisgIEVYUEVDVF9USEFUKHRlc3RfdmVjdG9yLCBtYXRjaGVyX21ha2Vy
KTsKKyAgLy8gQ2hhbmdpbmcgaW4gcGxhY2UgdGhlIHZhbHVlcyB0aGF0IGluaXRpYWxpemVkIG1h
dGNoZXJfbWFrZXIgc2hvdWxkIG5vdAorICAvLyBhZmZlY3QgbWF0Y2hlcl9tYWtlciBhbnltb3Jl
LiBJdCBzaG91bGQgaGF2ZSBtYWRlIGl0cyBvd24gY29weSBvZiB0aGVtLgorICB0eXBlZGVmIHZl
Y3RvcjxpbnQ+OjppdGVyYXRvciBJdGVyOworICBmb3IgKEl0ZXIgaXQgPSBleHBlY3QuYmVnaW4o
KTsgaXQgIT0gZXhwZWN0LmVuZCgpOyArK2l0KSB7ICppdCArPSAxMDsgfQorICBFWFBFQ1RfVEhB
VCh0ZXN0X3ZlY3RvciwgbWF0Y2hlcl9tYWtlcik7CisgIHRlc3RfdmVjdG9yLnB1c2hfYmFjaygz
KTsKKyAgRVhQRUNUX1RIQVQodGVzdF92ZWN0b3IsIE5vdChtYXRjaGVyX21ha2VyKSk7Cit9CisK
Ky8vIFRlc3RzIGZvciB0aGUgTUFUQ0hFUiooKSBtYWNybyBmYW1pbHkuCisKKy8vIFRlc3RzIHRo
YXQgYSBzaW1wbGUgTUFUQ0hFUigpIGRlZmluaXRpb24gd29ya3MuCisKK01BVENIRVIoSXNFdmVu
LCAiIikgeyByZXR1cm4gKGFyZyAlIDIpID09IDA7IH0KKworVEVTVChNYXRjaGVyTWFjcm9UZXN0
LCBXb3JrcykgeworICBjb25zdCBNYXRjaGVyPGludD4gbSA9IElzRXZlbigpOworICBFWFBFQ1Rf
VFJVRShtLk1hdGNoZXMoNikpOworICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKDcpKTsKKworICBF
WFBFQ1RfRVEoImlzIGV2ZW4iLCBEZXNjcmliZShtKSk7CisgIEVYUEVDVF9FUSgibm90IChpcyBl
dmVuKSIsIERlc2NyaWJlTmVnYXRpb24obSkpOworICBFWFBFQ1RfRVEoIiIsIEV4cGxhaW4obSwg
NikpOworICBFWFBFQ1RfRVEoIiIsIEV4cGxhaW4obSwgNykpOworfQorCisvLyBUaGlzIGFsc28g
dGVzdHMgdGhhdCB0aGUgZGVzY3JpcHRpb24gc3RyaW5nIGNhbiByZWZlcmVuY2UgJ25lZ2F0aW9u
Jy4KK01BVENIRVIoSXNFdmVuMiwgbmVnYXRpb24gPyAiaXMgb2RkIiA6ICJpcyBldmVuIikgewor
ICBpZiAoKGFyZyAlIDIpID09IDApIHsKKyAgICAvLyBWZXJpZmllcyB0aGF0IHdlIGNhbiBzdHJl
YW0gdG8gcmVzdWx0X2xpc3RlbmVyLCBhIGxpc3RlbmVyCisgICAgLy8gc3VwcGxpZWQgYnkgdGhl
IE1BVENIRVIgbWFjcm8gaW1wbGljaXRseS4KKyAgICAqcmVzdWx0X2xpc3RlbmVyIDw8ICJPSyI7
CisgICAgcmV0dXJuIHRydWU7CisgIH0gZWxzZSB7CisgICAgKnJlc3VsdF9saXN0ZW5lciA8PCAi
JSAyID09ICIgPDwgKGFyZyAlIDIpOworICAgIHJldHVybiBmYWxzZTsKKyAgfQorfQorCisvLyBU
aGlzIGFsc28gdGVzdHMgdGhhdCB0aGUgZGVzY3JpcHRpb24gc3RyaW5nIGNhbiByZWZlcmVuY2Ug
bWF0Y2hlcgorLy8gcGFyYW1ldGVycy4KK01BVENIRVJfUDIoRXFTdW1PZiwgeCwgeSwgc3RkOjpz
dHJpbmcobmVnYXRpb24gPyAiZG9lc24ndCBlcXVhbCIgOiAiZXF1YWxzIikgKworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIiB0aGUgc3VtIG9mICIgKyBQcmludFRvU3RyaW5nKHgpICsg
IiBhbmQgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmludFRvU3RyaW5nKHkp
KSB7CisgIGlmIChhcmcgPT0gKHggKyB5KSkgeworICAgICpyZXN1bHRfbGlzdGVuZXIgPDwgIk9L
IjsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfSBlbHNlIHsKKyAgICAvLyBWZXJpZmllcyB0aGF0IHdl
IGNhbiBzdHJlYW0gdG8gdGhlIHVuZGVybHlpbmcgc3RyZWFtIG9mCisgICAgLy8gcmVzdWx0X2xp
c3RlbmVyLgorICAgIGlmIChyZXN1bHRfbGlzdGVuZXItPnN0cmVhbSgpICE9IE5VTEwpIHsKKyAg
ICAgICpyZXN1bHRfbGlzdGVuZXItPnN0cmVhbSgpIDw8ICJkaWZmID09ICIgPDwgKHggKyB5IC0g
YXJnKTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworICB9Cit9CisKKy8vIFRlc3RzIHRoYXQg
dGhlIG1hdGNoZXIgZGVzY3JpcHRpb24gY2FuIHJlZmVyZW5jZSAnbmVnYXRpb24nIGFuZCB0aGUK
Ky8vIG1hdGNoZXIgcGFyYW1ldGVycy4KK1RFU1QoTWF0Y2hlck1hY3JvVGVzdCwgRGVzY3JpcHRp
b25DYW5SZWZlcmVuY2VOZWdhdGlvbkFuZFBhcmFtZXRlcnMpIHsKKyAgY29uc3QgTWF0Y2hlcjxp
bnQ+IG0xID0gSXNFdmVuMigpOworICBFWFBFQ1RfRVEoImlzIGV2ZW4iLCBEZXNjcmliZShtMSkp
OworICBFWFBFQ1RfRVEoImlzIG9kZCIsIERlc2NyaWJlTmVnYXRpb24obTEpKTsKKworICBjb25z
dCBNYXRjaGVyPGludD4gbTIgPSBFcVN1bU9mKDUsIDkpOworICBFWFBFQ1RfRVEoImVxdWFscyB0
aGUgc3VtIG9mIDUgYW5kIDkiLCBEZXNjcmliZShtMikpOworICBFWFBFQ1RfRVEoImRvZXNuJ3Qg
ZXF1YWwgdGhlIHN1bSBvZiA1IGFuZCA5IiwgRGVzY3JpYmVOZWdhdGlvbihtMikpOworfQorCisv
LyBUZXN0cyBleHBsYWluaW5nIG1hdGNoIHJlc3VsdCBpbiBhIE1BVENIRVIqIG1hY3JvLgorVEVT
VChNYXRjaGVyTWFjcm9UZXN0LCBDYW5FeHBsYWluTWF0Y2hSZXN1bHQpIHsKKyAgY29uc3QgTWF0
Y2hlcjxpbnQ+IG0xID0gSXNFdmVuMigpOworICBFWFBFQ1RfRVEoIk9LIiwgRXhwbGFpbihtMSwg
NCkpOworICBFWFBFQ1RfRVEoIiUgMiA9PSAxIiwgRXhwbGFpbihtMSwgNSkpOworCisgIGNvbnN0
IE1hdGNoZXI8aW50PiBtMiA9IEVxU3VtT2YoMSwgMik7CisgIEVYUEVDVF9FUSgiT0siLCBFeHBs
YWluKG0yLCAzKSk7CisgIEVYUEVDVF9FUSgiZGlmZiA9PSAtMSIsIEV4cGxhaW4obTIsIDQpKTsK
K30KKworLy8gVGVzdHMgdGhhdCB0aGUgYm9keSBvZiBNQVRDSEVSKCkgY2FuIHJlZmVyZW5jZSB0
aGUgdHlwZSBvZiB0aGUKKy8vIHZhbHVlIGJlaW5nIG1hdGNoZWQuCisKK01BVENIRVIoSXNFbXB0
eVN0cmluZywgIiIpIHsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPCA6OnN0ZDo6c3RyaW5nLCBhcmdf
dHlwZT4oKTsKKyAgcmV0dXJuIGFyZyA9PSAiIjsKK30KKworTUFUQ0hFUihJc0VtcHR5U3RyaW5n
QnlSZWYsICIiKSB7CisgIFN0YXRpY0Fzc2VydFR5cGVFcTxjb25zdCA6OnN0ZDo6c3RyaW5nJiwg
YXJnX3R5cGU+KCk7CisgIHJldHVybiBhcmcgPT0gIiI7Cit9CisKK1RFU1QoTWF0Y2hlck1hY3Jv
VGVzdCwgQ2FuUmVmZXJlbmNlQXJnVHlwZSkgeworICBjb25zdCBNYXRjaGVyPCA6OnN0ZDo6c3Ry
aW5nPiBtMSA9IElzRW1wdHlTdHJpbmcoKTsKKyAgRVhQRUNUX1RSVUUobTEuTWF0Y2hlcygiIikp
OworCisgIGNvbnN0IE1hdGNoZXI8Y29uc3QgOjpzdGQ6OnN0cmluZyY+IG0yID0gSXNFbXB0eVN0
cmluZ0J5UmVmKCk7CisgIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoIiIpKTsKK30KKworLy8gVGVz
dHMgdGhhdCBNQVRDSEVSKCkgY2FuIGJlIHVzZWQgaW4gYSBuYW1lc3BhY2UuCisKK25hbWVzcGFj
ZSBtYXRjaGVyX3Rlc3QgeworTUFUQ0hFUihJc09kZCwgIiIpIHsgcmV0dXJuIChhcmcgJSAyKSAh
PSAwOyB9Cit9ICAvLyBuYW1lc3BhY2UgbWF0Y2hlcl90ZXN0CisKK1RFU1QoTWF0Y2hlck1hY3Jv
VGVzdCwgV29ya3NJbk5hbWVzcGFjZSkgeworICBNYXRjaGVyPGludD4gbSA9IG1hdGNoZXJfdGVz
dDo6SXNPZGQoKTsKKyAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyg0KSk7CisgIEVYUEVDVF9UUlVF
KG0uTWF0Y2hlcyg1KSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgVmFsdWUoKSBjYW4gYmUgdXNlZCB0
byBjb21wb3NlIG1hdGNoZXJzLgorTUFUQ0hFUihJc1Bvc2l0aXZlT2RkLCAiIikgeworICByZXR1
cm4gVmFsdWUoYXJnLCBtYXRjaGVyX3Rlc3Q6OklzT2RkKCkpICYmIGFyZyA+IDA7Cit9CisKK1RF
U1QoTWF0Y2hlck1hY3JvVGVzdCwgQ2FuQmVDb21wb3NlZFVzaW5nVmFsdWUpIHsKKyAgRVhQRUNU
X1RIQVQoMywgSXNQb3NpdGl2ZU9kZCgpKTsKKyAgRVhQRUNUX1RIQVQoNCwgTm90KElzUG9zaXRp
dmVPZGQoKSkpOworICBFWFBFQ1RfVEhBVCgtMSwgTm90KElzUG9zaXRpdmVPZGQoKSkpOworfQor
CisvLyBUZXN0cyB0aGF0IGEgc2ltcGxlIE1BVENIRVJfUCgpIGRlZmluaXRpb24gd29ya3MuCisK
K01BVENIRVJfUChJc0dyZWF0ZXJUaGFuMzJBbmQsIG4sICIiKSB7IHJldHVybiBhcmcgPiAzMiAm
JiBhcmcgPiBuOyB9CisKK1RFU1QoTWF0Y2hlclBNYWNyb1Rlc3QsIFdvcmtzKSB7CisgIGNvbnN0
IE1hdGNoZXI8aW50PiBtID0gSXNHcmVhdGVyVGhhbjMyQW5kKDUpOworICBFWFBFQ1RfVFJVRSht
Lk1hdGNoZXMoMzYpKTsKKyAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyg1KSk7CisKKyAgRVhQRUNU
X0VRKCJpcyBncmVhdGVyIHRoYW4gMzIgYW5kIDUiLCBEZXNjcmliZShtKSk7CisgIEVYUEVDVF9F
USgibm90IChpcyBncmVhdGVyIHRoYW4gMzIgYW5kIDUpIiwgRGVzY3JpYmVOZWdhdGlvbihtKSk7
CisgIEVYUEVDVF9FUSgiIiwgRXhwbGFpbihtLCAzNikpOworICBFWFBFQ1RfRVEoIiIsIEV4cGxh
aW4obSwgNSkpOworfQorCisvLyBUZXN0cyB0aGF0IHRoZSBkZXNjcmlwdGlvbiBpcyBjYWxjdWxh
dGVkIGNvcnJlY3RseSBmcm9tIHRoZSBtYXRjaGVyIG5hbWUuCitNQVRDSEVSX1AoX2lzX0dyZWF0
ZXJfVGhhbjMyYW5kXywgbiwgIiIpIHsgcmV0dXJuIGFyZyA+IDMyICYmIGFyZyA+IG47IH0KKwor
VEVTVChNYXRjaGVyUE1hY3JvVGVzdCwgR2VuZXJhdGVzQ29ycmVjdERlc2NyaXB0aW9uKSB7Cisg
IGNvbnN0IE1hdGNoZXI8aW50PiBtID0gX2lzX0dyZWF0ZXJfVGhhbjMyYW5kXyg1KTsKKworICBF
WFBFQ1RfRVEoImlzIGdyZWF0ZXIgdGhhbiAzMiBhbmQgNSIsIERlc2NyaWJlKG0pKTsKKyAgRVhQ
RUNUX0VRKCJub3QgKGlzIGdyZWF0ZXIgdGhhbiAzMiBhbmQgNSkiLCBEZXNjcmliZU5lZ2F0aW9u
KG0pKTsKKyAgRVhQRUNUX0VRKCIiLCBFeHBsYWluKG0sIDM2KSk7CisgIEVYUEVDVF9FUSgiIiwg
RXhwbGFpbihtLCA1KSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgYSBNQVRDSEVSX1AgbWF0Y2hlciBj
YW4gYmUgZXhwbGljaXRseSBpbnN0YW50aWF0ZWQgd2l0aAorLy8gYSByZWZlcmVuY2UgcGFyYW1l
dGVyIHR5cGUuCisKK2NsYXNzIFVuY29weWFibGVGb28geworIHB1YmxpYzoKKyAgZXhwbGljaXQg
VW5jb3B5YWJsZUZvbyhjaGFyIHZhbHVlKSA6IHZhbHVlXyh2YWx1ZSkge30KKyBwcml2YXRlOgor
ICBVbmNvcHlhYmxlRm9vKGNvbnN0IFVuY29weWFibGVGb28mKTsKKyAgdm9pZCBvcGVyYXRvcj0o
Y29uc3QgVW5jb3B5YWJsZUZvbyYpOworCisgIGNoYXIgdmFsdWVfOworfTsKKworTUFUQ0hFUl9Q
KFJlZmVyZW5jZXNVbmNvcHlhYmxlLCB2YXJpYWJsZSwgIiIpIHsgcmV0dXJuICZhcmcgPT0gJnZh
cmlhYmxlOyB9CisKK1RFU1QoTWF0Y2hlclBNYWNyb1Rlc3QsIFdvcmtzV2hlbkV4cGxpY2l0bHlJ
bnN0YW50aWF0ZWRXaXRoUmVmZXJlbmNlKSB7CisgIFVuY29weWFibGVGb28gZm9vMSgnMScpLCBm
b28yKCcyJyk7CisgIGNvbnN0IE1hdGNoZXI8Y29uc3QgVW5jb3B5YWJsZUZvbyY+IG0gPQorICAg
ICAgUmVmZXJlbmNlc1VuY29weWFibGU8Y29uc3QgVW5jb3B5YWJsZUZvbyY+KGZvbzEpOworCisg
IEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhmb28xKSk7CisgIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMo
Zm9vMikpOworCisgIC8vIFdlIGRvbid0IHdhbnQgdGhlIGFkZHJlc3Mgb2YgdGhlIHBhcmFtZXRl
ciBwcmludGVkLCBhcyBtb3N0CisgIC8vIGxpa2VseSBpdCB3aWxsIGp1c3QgYW5ub3kgdGhlIHVz
ZXIuICBJZiB0aGUgYWRkcmVzcyBpcworICAvLyBpbnRlcmVzdGluZywgdGhlIHVzZXIgc2hvdWxk
IGNvbnNpZGVyIHBhc3NpbmcgdGhlIHBhcmFtZXRlciBieQorICAvLyBwb2ludGVyIGluc3RlYWQu
CisgIEVYUEVDVF9FUSgicmVmZXJlbmNlcyB1bmNvcHlhYmxlIDEtYnl0ZSBvYmplY3QgPDMxPiIs
IERlc2NyaWJlKG0pKTsKK30KKworCisvLyBUZXN0cyB0aGF0IHRoZSBib2R5IG9mIE1BVENIRVJf
UG4oKSBjYW4gcmVmZXJlbmNlIHRoZSBwYXJhbWV0ZXIKKy8vIHR5cGVzLgorCitNQVRDSEVSX1Az
KFBhcmFtVHlwZXNBcmVJbnRMb25nQW5kQ2hhciwgZm9vLCBiYXIsIGJheiwgIiIpIHsKKyAgU3Rh
dGljQXNzZXJ0VHlwZUVxPGludCwgZm9vX3R5cGU+KCk7CisgIFN0YXRpY0Fzc2VydFR5cGVFcTxs
b25nLCBiYXJfdHlwZT4oKTsgIC8vIE5PTElOVAorICBTdGF0aWNBc3NlcnRUeXBlRXE8Y2hhciwg
YmF6X3R5cGU+KCk7CisgIHJldHVybiBhcmcgPT0gMDsKK30KKworVEVTVChNYXRjaGVyUG5NYWNy
b1Rlc3QsIENhblJlZmVyZW5jZVBhcmFtVHlwZXMpIHsKKyAgRVhQRUNUX1RIQVQoMCwgUGFyYW1U
eXBlc0FyZUludExvbmdBbmRDaGFyKDEwLCAyMEwsICdhJykpOworfQorCisvLyBUZXN0cyB0aGF0
IGEgTUFUQ0hFUl9QbiBtYXRjaGVyIGNhbiBiZSBleHBsaWNpdGx5IGluc3RhbnRpYXRlZCB3aXRo
CisvLyByZWZlcmVuY2UgcGFyYW1ldGVyIHR5cGVzLgorCitNQVRDSEVSX1AyKFJlZmVyZW5jZXNB
bnlPZiwgdmFyaWFibGUxLCB2YXJpYWJsZTIsICIiKSB7CisgIHJldHVybiAmYXJnID09ICZ2YXJp
YWJsZTEgfHwgJmFyZyA9PSAmdmFyaWFibGUyOworfQorCitURVNUKE1hdGNoZXJQbk1hY3JvVGVz
dCwgV29ya3NXaGVuRXhwbGljaXRseUluc3RhbnRpYXRlZFdpdGhSZWZlcmVuY2VzKSB7CisgIFVu
Y29weWFibGVGb28gZm9vMSgnMScpLCBmb28yKCcyJyksIGZvbzMoJzMnKTsKKyAgY29uc3QgTWF0
Y2hlcjxjb25zdCBVbmNvcHlhYmxlRm9vJj4gbSA9CisgICAgICBSZWZlcmVuY2VzQW55T2Y8Y29u
c3QgVW5jb3B5YWJsZUZvbyYsIGNvbnN0IFVuY29weWFibGVGb28mPihmb28xLCBmb28yKTsKKwor
ICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoZm9vMSkpOworICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMo
Zm9vMikpOworICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKGZvbzMpKTsKK30KKworVEVTVChNYXRj
aGVyUG5NYWNyb1Rlc3QsCisgICAgIEdlbmVyYXRlc0NvcnJldERlc2NyaXB0aW9uV2hlbkV4cGxp
Y2l0bHlJbnN0YW50aWF0ZWRXaXRoUmVmZXJlbmNlcykgeworICBVbmNvcHlhYmxlRm9vIGZvbzEo
JzEnKSwgZm9vMignMicpOworICBjb25zdCBNYXRjaGVyPGNvbnN0IFVuY29weWFibGVGb28mPiBt
ID0KKyAgICAgIFJlZmVyZW5jZXNBbnlPZjxjb25zdCBVbmNvcHlhYmxlRm9vJiwgY29uc3QgVW5j
b3B5YWJsZUZvbyY+KGZvbzEsIGZvbzIpOworCisgIC8vIFdlIGRvbid0IHdhbnQgdGhlIGFkZHJl
c3NlcyBvZiB0aGUgcGFyYW1ldGVycyBwcmludGVkLCBhcyBtb3N0CisgIC8vIGxpa2VseSB0aGV5
IHdpbGwganVzdCBhbm5veSB0aGUgdXNlci4gIElmIHRoZSBhZGRyZXNzZXMgYXJlCisgIC8vIGlu
dGVyZXN0aW5nLCB0aGUgdXNlciBzaG91bGQgY29uc2lkZXIgcGFzc2luZyB0aGUgcGFyYW1ldGVy
cyBieQorICAvLyBwb2ludGVycyBpbnN0ZWFkLgorICBFWFBFQ1RfRVEoInJlZmVyZW5jZXMgYW55
IG9mICgxLWJ5dGUgb2JqZWN0IDwzMT4sIDEtYnl0ZSBvYmplY3QgPDMyPikiLAorICAgICAgICAg
ICAgRGVzY3JpYmUobSkpOworfQorCisvLyBUZXN0cyB0aGF0IGEgc2ltcGxlIE1BVENIRVJfUDIo
KSBkZWZpbml0aW9uIHdvcmtzLgorCitNQVRDSEVSX1AyKElzTm90SW5DbG9zZWRSYW5nZSwgbG93
LCBoaSwgIiIpIHsgcmV0dXJuIGFyZyA8IGxvdyB8fCBhcmcgPiBoaTsgfQorCitURVNUKE1hdGNo
ZXJQbk1hY3JvVGVzdCwgV29ya3MpIHsKKyAgY29uc3QgTWF0Y2hlcjxjb25zdCBsb25nJj4gbSA9
IElzTm90SW5DbG9zZWRSYW5nZSgxMCwgMjApOyAgLy8gTk9MSU5UCisgIEVYUEVDVF9UUlVFKG0u
TWF0Y2hlcygzNkwpKTsKKyAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcygxNUwpKTsKKworICBFWFBF
Q1RfRVEoImlzIG5vdCBpbiBjbG9zZWQgcmFuZ2UgKDEwLCAyMCkiLCBEZXNjcmliZShtKSk7Cisg
IEVYUEVDVF9FUSgibm90IChpcyBub3QgaW4gY2xvc2VkIHJhbmdlICgxMCwgMjApKSIsIERlc2Ny
aWJlTmVnYXRpb24obSkpOworICBFWFBFQ1RfRVEoIiIsIEV4cGxhaW4obSwgMzZMKSk7CisgIEVY
UEVDVF9FUSgiIiwgRXhwbGFpbihtLCAxNUwpKTsKK30KKworLy8gVGVzdHMgdGhhdCBNQVRDSEVS
KigpIGRlZmluaXRpb25zIGNhbiBiZSBvdmVybG9hZGVkIG9uIHRoZSBudW1iZXIKKy8vIG9mIHBh
cmFtZXRlcnM7IGFsc28gdGVzdHMgTUFUQ0hFUl9QbigpIHdoZXJlIG4gPj0gMy4KKworTUFUQ0hF
UihFcXVhbHNTdW1PZiwgIiIpIHsgcmV0dXJuIGFyZyA9PSAwOyB9CitNQVRDSEVSX1AoRXF1YWxz
U3VtT2YsIGEsICIiKSB7IHJldHVybiBhcmcgPT0gYTsgfQorTUFUQ0hFUl9QMihFcXVhbHNTdW1P
ZiwgYSwgYiwgIiIpIHsgcmV0dXJuIGFyZyA9PSBhICsgYjsgfQorTUFUQ0hFUl9QMyhFcXVhbHNT
dW1PZiwgYSwgYiwgYywgIiIpIHsgcmV0dXJuIGFyZyA9PSBhICsgYiArIGM7IH0KK01BVENIRVJf
UDQoRXF1YWxzU3VtT2YsIGEsIGIsIGMsIGQsICIiKSB7IHJldHVybiBhcmcgPT0gYSArIGIgKyBj
ICsgZDsgfQorTUFUQ0hFUl9QNShFcXVhbHNTdW1PZiwgYSwgYiwgYywgZCwgZSwgIiIpIHsgcmV0
dXJuIGFyZyA9PSBhICsgYiArIGMgKyBkICsgZTsgfQorTUFUQ0hFUl9QNihFcXVhbHNTdW1PZiwg
YSwgYiwgYywgZCwgZSwgZiwgIiIpIHsKKyAgcmV0dXJuIGFyZyA9PSBhICsgYiArIGMgKyBkICsg
ZSArIGY7Cit9CitNQVRDSEVSX1A3KEVxdWFsc1N1bU9mLCBhLCBiLCBjLCBkLCBlLCBmLCBnLCAi
IikgeworICByZXR1cm4gYXJnID09IGEgKyBiICsgYyArIGQgKyBlICsgZiArIGc7Cit9CitNQVRD
SEVSX1A4KEVxdWFsc1N1bU9mLCBhLCBiLCBjLCBkLCBlLCBmLCBnLCBoLCAiIikgeworICByZXR1
cm4gYXJnID09IGEgKyBiICsgYyArIGQgKyBlICsgZiArIGcgKyBoOworfQorTUFUQ0hFUl9QOShF
cXVhbHNTdW1PZiwgYSwgYiwgYywgZCwgZSwgZiwgZywgaCwgaSwgIiIpIHsKKyAgcmV0dXJuIGFy
ZyA9PSBhICsgYiArIGMgKyBkICsgZSArIGYgKyBnICsgaCArIGk7Cit9CitNQVRDSEVSX1AxMChF
cXVhbHNTdW1PZiwgYSwgYiwgYywgZCwgZSwgZiwgZywgaCwgaSwgaiwgIiIpIHsKKyAgcmV0dXJu
IGFyZyA9PSBhICsgYiArIGMgKyBkICsgZSArIGYgKyBnICsgaCArIGkgKyBqOworfQorCitURVNU
KE1hdGNoZXJQbk1hY3JvVGVzdCwgQ2FuQmVPdmVybG9hZGVkT25OdW1iZXJPZlBhcmFtZXRlcnMp
IHsKKyAgRVhQRUNUX1RIQVQoMCwgRXF1YWxzU3VtT2YoKSk7CisgIEVYUEVDVF9USEFUKDEsIEVx
dWFsc1N1bU9mKDEpKTsKKyAgRVhQRUNUX1RIQVQoMTIsIEVxdWFsc1N1bU9mKDEwLCAyKSk7Cisg
IEVYUEVDVF9USEFUKDEyMywgRXF1YWxzU3VtT2YoMTAwLCAyMCwgMykpOworICBFWFBFQ1RfVEhB
VCgxMjM0LCBFcXVhbHNTdW1PZigxMDAwLCAyMDAsIDMwLCA0KSk7CisgIEVYUEVDVF9USEFUKDEy
MzQ1LCBFcXVhbHNTdW1PZigxMDAwMCwgMjAwMCwgMzAwLCA0MCwgNSkpOworICBFWFBFQ1RfVEhB
VCgiYWJjZGVmIiwKKyAgICAgICAgICAgICAgRXF1YWxzU3VtT2YoOjpzdGQ6OnN0cmluZygiYSIp
LCAnYicsICdjJywgImQiLCAiZSIsICdmJykpOworICBFWFBFQ1RfVEhBVCgiYWJjZGVmZyIsCisg
ICAgICAgICAgICAgIEVxdWFsc1N1bU9mKDo6c3RkOjpzdHJpbmcoImEiKSwgJ2InLCAnYycsICJk
IiwgImUiLCAnZicsICdnJykpOworICBFWFBFQ1RfVEhBVCgiYWJjZGVmZ2giLAorICAgICAgICAg
ICAgICBFcXVhbHNTdW1PZig6OnN0ZDo6c3RyaW5nKCJhIiksICdiJywgJ2MnLCAiZCIsICJlIiwg
J2YnLCAnZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJoIikpOworICBFWFBFQ1RfVEhB
VCgiYWJjZGVmZ2hpIiwKKyAgICAgICAgICAgICAgRXF1YWxzU3VtT2YoOjpzdGQ6OnN0cmluZygi
YSIpLCAnYicsICdjJywgImQiLCAiZSIsICdmJywgJ2cnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAiaCIsICdpJykpOworICBFWFBFQ1RfVEhBVCgiYWJjZGVmZ2hpaiIsCisgICAgICAgICAg
ICAgIEVxdWFsc1N1bU9mKDo6c3RkOjpzdHJpbmcoImEiKSwgJ2InLCAnYycsICJkIiwgImUiLCAn
ZicsICdnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImgiLCAnaScsIDo6c3RkOjpzdHJp
bmcoImoiKSkpOworCisgIEVYUEVDVF9USEFUKDEsIE5vdChFcXVhbHNTdW1PZigpKSk7CisgIEVY
UEVDVF9USEFUKC0xLCBOb3QoRXF1YWxzU3VtT2YoMSkpKTsKKyAgRVhQRUNUX1RIQVQoLTEyLCBO
b3QoRXF1YWxzU3VtT2YoMTAsIDIpKSk7CisgIEVYUEVDVF9USEFUKC0xMjMsIE5vdChFcXVhbHNT
dW1PZigxMDAsIDIwLCAzKSkpOworICBFWFBFQ1RfVEhBVCgtMTIzNCwgTm90KEVxdWFsc1N1bU9m
KDEwMDAsIDIwMCwgMzAsIDQpKSk7CisgIEVYUEVDVF9USEFUKC0xMjM0NSwgTm90KEVxdWFsc1N1
bU9mKDEwMDAwLCAyMDAwLCAzMDAsIDQwLCA1KSkpOworICBFWFBFQ1RfVEhBVCgiYWJjZGVmICIs
CisgICAgICAgICAgICAgIE5vdChFcXVhbHNTdW1PZig6OnN0ZDo6c3RyaW5nKCJhIiksICdiJywg
J2MnLCAiZCIsICJlIiwgJ2YnKSkpOworICBFWFBFQ1RfVEhBVCgiYWJjZGVmZyAiLAorICAgICAg
ICAgICAgICBOb3QoRXF1YWxzU3VtT2YoOjpzdGQ6OnN0cmluZygiYSIpLCAnYicsICdjJywgImQi
LCAiZSIsICdmJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnJykpKTsKKyAgRVhQ
RUNUX1RIQVQoImFiY2RlZmdoICIsCisgICAgICAgICAgICAgIE5vdChFcXVhbHNTdW1PZig6OnN0
ZDo6c3RyaW5nKCJhIiksICdiJywgJ2MnLCAiZCIsICJlIiwgJ2YnLCAnZycsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiaCIpKSk7CisgIEVYUEVDVF9USEFUKCJhYmNkZWZnaGkgIiwK
KyAgICAgICAgICAgICAgTm90KEVxdWFsc1N1bU9mKDo6c3RkOjpzdHJpbmcoImEiKSwgJ2InLCAn
YycsICJkIiwgImUiLCAnZicsICdnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJo
IiwgJ2knKSkpOworICBFWFBFQ1RfVEhBVCgiYWJjZGVmZ2hpaiAiLAorICAgICAgICAgICAgICBO
b3QoRXF1YWxzU3VtT2YoOjpzdGQ6OnN0cmluZygiYSIpLCAnYicsICdjJywgImQiLCAiZSIsICdm
JywgJ2cnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgiLCAnaScsIDo6c3RkOjpz
dHJpbmcoImoiKSkpKTsKK30KKworLy8gVGVzdHMgdGhhdCBhIE1BVENIRVJfUG4oKSBkZWZpbml0
aW9uIGNhbiBiZSBpbnN0YW50aWF0ZWQgd2l0aCBhbnkKKy8vIGNvbXBhdGlibGUgcGFyYW1ldGVy
IHR5cGVzLgorVEVTVChNYXRjaGVyUG5NYWNyb1Rlc3QsIFdvcmtzRm9yRGlmZmVyZW50UGFyYW1l
dGVyVHlwZXMpIHsKKyAgRVhQRUNUX1RIQVQoMTIzLCBFcXVhbHNTdW1PZigxMDBMLCAyMCwgc3Rh
dGljX2Nhc3Q8Y2hhcj4oMykpKTsKKyAgRVhQRUNUX1RIQVQoImFiY2QiLCBFcXVhbHNTdW1PZig6
OnN0ZDo6c3RyaW5nKCJhIiksICJiIiwgJ2MnLCAiZCIpKTsKKworICBFWFBFQ1RfVEhBVCgxMjQs
IE5vdChFcXVhbHNTdW1PZigxMDBMLCAyMCwgc3RhdGljX2Nhc3Q8Y2hhcj4oMykpKSk7CisgIEVY
UEVDVF9USEFUKCJhYmNkZSIsIE5vdChFcXVhbHNTdW1PZig6OnN0ZDo6c3RyaW5nKCJhIiksICJi
IiwgJ2MnLCAiZCIpKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgdGhlIG1hdGNoZXIgYm9keSBjYW4g
cHJvbW90ZSB0aGUgcGFyYW1ldGVyIHR5cGVzLgorCitNQVRDSEVSX1AyKEVxQ29uY2F0LCBwcmVm
aXgsIHN1ZmZpeCwgIiIpIHsKKyAgLy8gVGhlIGZvbGxvd2luZyBsaW5lcyBwcm9tb3RlIHRoZSB0
d28gcGFyYW1ldGVycyB0byBkZXNpcmVkIHR5cGVzLgorICBzdGQ6OnN0cmluZyBwcmVmaXhfc3Ry
KHByZWZpeCk7CisgIGNoYXIgc3VmZml4X2NoYXIgPSBzdGF0aWNfY2FzdDxjaGFyPihzdWZmaXgp
OworICByZXR1cm4gYXJnID09IHByZWZpeF9zdHIgKyBzdWZmaXhfY2hhcjsKK30KKworVEVTVChN
YXRjaGVyUG5NYWNyb1Rlc3QsIFNpbXBsZVR5cGVQcm9tb3Rpb24pIHsKKyAgTWF0Y2hlcjxzdGQ6
OnN0cmluZz4gbm9fcHJvbW8gPQorICAgICAgRXFDb25jYXQoc3RkOjpzdHJpbmcoImZvbyIpLCAn
dCcpOworICBNYXRjaGVyPGNvbnN0IHN0ZDo6c3RyaW5nJj4gcHJvbW8gPQorICAgICAgRXFDb25j
YXQoImZvbyIsIHN0YXRpY19jYXN0PGludD4oJ3QnKSk7CisgIEVYUEVDVF9GQUxTRShub19wcm9t
by5NYXRjaGVzKCJmb29sIikpOworICBFWFBFQ1RfRkFMU0UocHJvbW8uTWF0Y2hlcygiZm9vbCIp
KTsKKyAgRVhQRUNUX1RSVUUobm9fcHJvbW8uTWF0Y2hlcygiZm9vdCIpKTsKKyAgRVhQRUNUX1RS
VUUocHJvbW8uTWF0Y2hlcygiZm9vdCIpKTsKK30KKworLy8gVmVyaWZpZXMgdGhlIHR5cGUgb2Yg
YSBNQVRDSEVSKi4KKworVEVTVChNYXRjaGVyUG5NYWNyb1Rlc3QsIFR5cGVzQXJlQ29ycmVjdCkg
eworICAvLyBFcXVhbHNTdW1PZigpIG11c3QgYmUgYXNzaWduYWJsZSB0byBhIEVxdWFsc1N1bU9m
TWF0Y2hlciB2YXJpYWJsZS4KKyAgRXF1YWxzU3VtT2ZNYXRjaGVyIGEwID0gRXF1YWxzU3VtT2Yo
KTsKKworICAvLyBFcXVhbHNTdW1PZigxKSBtdXN0IGJlIGFzc2lnbmFibGUgdG8gYSBFcXVhbHNT
dW1PZk1hdGNoZXJQIHZhcmlhYmxlLgorICBFcXVhbHNTdW1PZk1hdGNoZXJQPGludD4gYTEgPSBF
cXVhbHNTdW1PZigxKTsKKworICAvLyBFcXVhbHNTdW1PZihwMSwgLi4uLCBwaykgbXVzdCBiZSBh
c3NpZ25hYmxlIHRvIGEgRXF1YWxzU3VtT2ZNYXRjaGVyUGsKKyAgLy8gdmFyaWFibGUsIGFuZCBz
byBvbi4KKyAgRXF1YWxzU3VtT2ZNYXRjaGVyUDI8aW50LCBjaGFyPiBhMiA9IEVxdWFsc1N1bU9m
KDEsICcyJyk7CisgIEVxdWFsc1N1bU9mTWF0Y2hlclAzPGludCwgaW50LCBjaGFyPiBhMyA9IEVx
dWFsc1N1bU9mKDEsIDIsICczJyk7CisgIEVxdWFsc1N1bU9mTWF0Y2hlclA0PGludCwgaW50LCBp
bnQsIGNoYXI+IGE0ID0gRXF1YWxzU3VtT2YoMSwgMiwgMywgJzQnKTsKKyAgRXF1YWxzU3VtT2ZN
YXRjaGVyUDU8aW50LCBpbnQsIGludCwgaW50LCBjaGFyPiBhNSA9CisgICAgICBFcXVhbHNTdW1P
ZigxLCAyLCAzLCA0LCAnNScpOworICBFcXVhbHNTdW1PZk1hdGNoZXJQNjxpbnQsIGludCwgaW50
LCBpbnQsIGludCwgY2hhcj4gYTYgPQorICAgICAgRXF1YWxzU3VtT2YoMSwgMiwgMywgNCwgNSwg
JzYnKTsKKyAgRXF1YWxzU3VtT2ZNYXRjaGVyUDc8aW50LCBpbnQsIGludCwgaW50LCBpbnQsIGlu
dCwgY2hhcj4gYTcgPQorICAgICAgRXF1YWxzU3VtT2YoMSwgMiwgMywgNCwgNSwgNiwgJzcnKTsK
KyAgRXF1YWxzU3VtT2ZNYXRjaGVyUDg8aW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50
LCBjaGFyPiBhOCA9CisgICAgICBFcXVhbHNTdW1PZigxLCAyLCAzLCA0LCA1LCA2LCA3LCAnOCcp
OworICBFcXVhbHNTdW1PZk1hdGNoZXJQOTxpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQsIGludCwgY2hhcj4gYTkgPQorICAgICAgRXF1YWxzU3VtT2YoMSwgMiwgMywgNCwgNSwgNiwg
NywgOCwgJzknKTsKKyAgRXF1YWxzU3VtT2ZNYXRjaGVyUDEwPGludCwgaW50LCBpbnQsIGludCwg
aW50LCBpbnQsIGludCwgaW50LCBpbnQsIGNoYXI+IGExMCA9CisgICAgICBFcXVhbHNTdW1PZigx
LCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAnMCcpOworCisgIC8vIEF2b2lkICJ1bnVzZWQgdmFy
aWFibGUiIHdhcm5pbmdzLgorICAodm9pZClhMDsKKyAgKHZvaWQpYTE7CisgICh2b2lkKWEyOwor
ICAodm9pZClhMzsKKyAgKHZvaWQpYTQ7CisgICh2b2lkKWE1OworICAodm9pZClhNjsKKyAgKHZv
aWQpYTc7CisgICh2b2lkKWE4OworICAodm9pZClhOTsKKyAgKHZvaWQpYTEwOworfQorCisvLyBU
ZXN0cyB0aGF0IG1hdGNoZXItdHlwZWQgcGFyYW1ldGVycyBjYW4gYmUgdXNlZCBpbiBWYWx1ZSgp
IGluc2lkZSBhCisvLyBNQVRDSEVSX1BuIGRlZmluaXRpb24uCisKKy8vIFN1Y2NlZWRzIGlmIGFy
ZyBtYXRjaGVzIGV4YWN0bHkgMiBvZiB0aGUgMyBtYXRjaGVycy4KK01BVENIRVJfUDMoVHdvT2Ys
IG0xLCBtMiwgbTMsICIiKSB7CisgIGNvbnN0IGludCBjb3VudCA9IHN0YXRpY19jYXN0PGludD4o
VmFsdWUoYXJnLCBtMSkpCisgICAgICArIHN0YXRpY19jYXN0PGludD4oVmFsdWUoYXJnLCBtMikp
ICsgc3RhdGljX2Nhc3Q8aW50PihWYWx1ZShhcmcsIG0zKSk7CisgIHJldHVybiBjb3VudCA9PSAy
OworfQorCitURVNUKE1hdGNoZXJQbk1hY3JvVGVzdCwgQ2FuVXNlTWF0Y2hlclR5cGVkUGFyYW1l
dGVySW5WYWx1ZSkgeworICBFWFBFQ1RfVEhBVCg0MiwgVHdvT2YoR3QoMCksIEx0KDUwKSwgRXEo
MTApKSk7CisgIEVYUEVDVF9USEFUKDAsIE5vdChUd29PZihHdCgtMSksIEx0KDEpLCBFcSgwKSkp
KTsKK30KKworLy8gVGVzdHMgQ29udGFpbnMoKS4KKworVEVTVChDb250YWluc1Rlc3QsIExpc3RN
YXRjaGVzV2hlbkVsZW1lbnRJc0luQ29udGFpbmVyKSB7CisgIGxpc3Q8aW50PiBzb21lX2xpc3Q7
CisgIHNvbWVfbGlzdC5wdXNoX2JhY2soMyk7CisgIHNvbWVfbGlzdC5wdXNoX2JhY2soMSk7Cisg
IHNvbWVfbGlzdC5wdXNoX2JhY2soMik7CisgIEVYUEVDVF9USEFUKHNvbWVfbGlzdCwgQ29udGFp
bnMoMSkpOworICBFWFBFQ1RfVEhBVChzb21lX2xpc3QsIENvbnRhaW5zKEd0KDIuNSkpKTsKKyAg
RVhQRUNUX1RIQVQoc29tZV9saXN0LCBDb250YWlucyhFcSgyLjBmKSkpOworCisgIGxpc3Q8c3Rk
OjpzdHJpbmc+IGFub3RoZXJfbGlzdDsKKyAgYW5vdGhlcl9saXN0LnB1c2hfYmFjaygiZmVlIik7
CisgIGFub3RoZXJfbGlzdC5wdXNoX2JhY2soImZpZSIpOworICBhbm90aGVyX2xpc3QucHVzaF9i
YWNrKCJmb2UiKTsKKyAgYW5vdGhlcl9saXN0LnB1c2hfYmFjaygiZnVtIik7CisgIEVYUEVDVF9U
SEFUKGFub3RoZXJfbGlzdCwgQ29udGFpbnMoc3RkOjpzdHJpbmcoImZlZSIpKSk7Cit9CisKK1RF
U1QoQ29udGFpbnNUZXN0LCBMaXN0RG9lc05vdE1hdGNoV2hlbkVsZW1lbnRJc05vdEluQ29udGFp
bmVyKSB7CisgIGxpc3Q8aW50PiBzb21lX2xpc3Q7CisgIHNvbWVfbGlzdC5wdXNoX2JhY2soMyk7
CisgIHNvbWVfbGlzdC5wdXNoX2JhY2soMSk7CisgIEVYUEVDVF9USEFUKHNvbWVfbGlzdCwgTm90
KENvbnRhaW5zKDQpKSk7Cit9CisKK1RFU1QoQ29udGFpbnNUZXN0LCBTZXRNYXRjaGVzV2hlbkVs
ZW1lbnRJc0luQ29udGFpbmVyKSB7CisgIHNldDxpbnQ+IHNvbWVfc2V0OworICBzb21lX3NldC5p
bnNlcnQoMyk7CisgIHNvbWVfc2V0Lmluc2VydCgxKTsKKyAgc29tZV9zZXQuaW5zZXJ0KDIpOwor
ICBFWFBFQ1RfVEhBVChzb21lX3NldCwgQ29udGFpbnMoRXEoMS4wKSkpOworICBFWFBFQ1RfVEhB
VChzb21lX3NldCwgQ29udGFpbnMoRXEoMy4wZikpKTsKKyAgRVhQRUNUX1RIQVQoc29tZV9zZXQs
IENvbnRhaW5zKDIpKTsKKworICBzZXQ8Y29uc3QgY2hhcio+IGFub3RoZXJfc2V0OworICBhbm90
aGVyX3NldC5pbnNlcnQoImZlZSIpOworICBhbm90aGVyX3NldC5pbnNlcnQoImZpZSIpOworICBh
bm90aGVyX3NldC5pbnNlcnQoImZvZSIpOworICBhbm90aGVyX3NldC5pbnNlcnQoImZ1bSIpOwor
ICBFWFBFQ1RfVEhBVChhbm90aGVyX3NldCwgQ29udGFpbnMoRXEoc3RkOjpzdHJpbmcoImZ1bSIp
KSkpOworfQorCitURVNUKENvbnRhaW5zVGVzdCwgU2V0RG9lc05vdE1hdGNoV2hlbkVsZW1lbnRJ
c05vdEluQ29udGFpbmVyKSB7CisgIHNldDxpbnQ+IHNvbWVfc2V0OworICBzb21lX3NldC5pbnNl
cnQoMyk7CisgIHNvbWVfc2V0Lmluc2VydCgxKTsKKyAgRVhQRUNUX1RIQVQoc29tZV9zZXQsIE5v
dChDb250YWlucyg0KSkpOworCisgIHNldDxjb25zdCBjaGFyKj4gY19zdHJpbmdfc2V0OworICBj
X3N0cmluZ19zZXQuaW5zZXJ0KCJoZWxsbyIpOworICBFWFBFQ1RfVEhBVChjX3N0cmluZ19zZXQs
IE5vdChDb250YWlucyhzdGQ6OnN0cmluZygiaGVsbG8iKS5jX3N0cigpKSkpOworfQorCitURVNU
KENvbnRhaW5zVGVzdCwgRXhwbGFpbnNNYXRjaFJlc3VsdENvcnJlY3RseSkgeworICBjb25zdCBp
bnQgYVsyXSA9IHsgMSwgMiB9OworICBNYXRjaGVyPGNvbnN0IGludCAoJilbMl0+IG0gPSBDb250
YWlucygyKTsKKyAgRVhQRUNUX0VRKCJ3aG9zZSBlbGVtZW50ICMxIG1hdGNoZXMiLCBFeHBsYWlu
KG0sIGEpKTsKKworICBtID0gQ29udGFpbnMoMyk7CisgIEVYUEVDVF9FUSgiIiwgRXhwbGFpbiht
LCBhKSk7CisKKyAgbSA9IENvbnRhaW5zKEdyZWF0ZXJUaGFuKDApKTsKKyAgRVhQRUNUX0VRKCJ3
aG9zZSBlbGVtZW50ICMwIG1hdGNoZXMsIHdoaWNoIGlzIDEgbW9yZSB0aGFuIDAiLCBFeHBsYWlu
KG0sIGEpKTsKKworICBtID0gQ29udGFpbnMoR3JlYXRlclRoYW4oMTApKTsKKyAgRVhQRUNUX0VR
KCIiLCBFeHBsYWluKG0sIGEpKTsKK30KKworVEVTVChDb250YWluc1Rlc3QsIERlc2NyaWJlc0l0
c2VsZkNvcnJlY3RseSkgeworICBNYXRjaGVyPHZlY3RvcjxpbnQ+ID4gbSA9IENvbnRhaW5zKDEp
OworICBFWFBFQ1RfRVEoImNvbnRhaW5zIGF0IGxlYXN0IG9uZSBlbGVtZW50IHRoYXQgaXMgZXF1
YWwgdG8gMSIsIERlc2NyaWJlKG0pKTsKKworICBNYXRjaGVyPHZlY3RvcjxpbnQ+ID4gbTIgPSBO
b3QobSk7CisgIEVYUEVDVF9FUSgiZG9lc24ndCBjb250YWluIGFueSBlbGVtZW50IHRoYXQgaXMg
ZXF1YWwgdG8gMSIsIERlc2NyaWJlKG0yKSk7Cit9CisKK1RFU1QoQ29udGFpbnNUZXN0LCBNYXBN
YXRjaGVzV2hlbkVsZW1lbnRJc0luQ29udGFpbmVyKSB7CisgIG1hcDxjb25zdCBjaGFyKiwgaW50
PiBteV9tYXA7CisgIGNvbnN0IGNoYXIqIGJhciA9ICJhIHN0cmluZyI7CisgIG15X21hcFtiYXJd
ID0gMjsKKyAgRVhQRUNUX1RIQVQobXlfbWFwLCBDb250YWlucyhwYWlyPGNvbnN0IGNoYXIqIGNv
bnN0LCBpbnQ+KGJhciwgMikpKTsKKworICBtYXA8c3RkOjpzdHJpbmcsIGludD4gYW5vdGhlcl9t
YXA7CisgIGFub3RoZXJfbWFwWyJmZWUiXSA9IDE7CisgIGFub3RoZXJfbWFwWyJmaWUiXSA9IDI7
CisgIGFub3RoZXJfbWFwWyJmb2UiXSA9IDM7CisgIGFub3RoZXJfbWFwWyJmdW0iXSA9IDQ7Cisg
IEVYUEVDVF9USEFUKGFub3RoZXJfbWFwLAorICAgICAgICAgICAgICBDb250YWlucyhwYWlyPGNv
bnN0IHN0ZDo6c3RyaW5nLCBpbnQ+KHN0ZDo6c3RyaW5nKCJmZWUiKSwgMSkpKTsKKyAgRVhQRUNU
X1RIQVQoYW5vdGhlcl9tYXAsIENvbnRhaW5zKHBhaXI8Y29uc3Qgc3RkOjpzdHJpbmcsIGludD4o
ImZpZSIsIDIpKSk7Cit9CisKK1RFU1QoQ29udGFpbnNUZXN0LCBNYXBEb2VzTm90TWF0Y2hXaGVu
RWxlbWVudElzTm90SW5Db250YWluZXIpIHsKKyAgbWFwPGludCwgaW50PiBzb21lX21hcDsKKyAg
c29tZV9tYXBbMV0gPSAxMTsKKyAgc29tZV9tYXBbMl0gPSAyMjsKKyAgRVhQRUNUX1RIQVQoc29t
ZV9tYXAsIE5vdChDb250YWlucyhwYWlyPGNvbnN0IGludCwgaW50PigyLCAyMykpKSk7Cit9CisK
K1RFU1QoQ29udGFpbnNUZXN0LCBBcnJheU1hdGNoZXNXaGVuRWxlbWVudElzSW5Db250YWluZXIp
IHsKKyAgY29uc3QgY2hhciogc3RyaW5nX2FycmF5W10gPSB7ICJmZWUiLCAiZmllIiwgImZvZSIs
ICJmdW0iIH07CisgIEVYUEVDVF9USEFUKHN0cmluZ19hcnJheSwgQ29udGFpbnMoRXEoc3RkOjpz
dHJpbmcoImZ1bSIpKSkpOworfQorCitURVNUKENvbnRhaW5zVGVzdCwgQXJyYXlEb2VzTm90TWF0
Y2hXaGVuRWxlbWVudElzTm90SW5Db250YWluZXIpIHsKKyAgaW50IGludF9hcnJheVtdID0geyAx
LCAyLCAzLCA0IH07CisgIEVYUEVDVF9USEFUKGludF9hcnJheSwgTm90KENvbnRhaW5zKDUpKSk7
Cit9CisKK1RFU1QoQ29udGFpbnNUZXN0LCBBY2NlcHRzTWF0Y2hlcikgeworICBjb25zdCBpbnQg
YVtdID0geyAxLCAyLCAzIH07CisgIEVYUEVDVF9USEFUKGEsIENvbnRhaW5zKEd0KDIpKSk7Cisg
IEVYUEVDVF9USEFUKGEsIE5vdChDb250YWlucyhHdCg0KSkpKTsKK30KKworVEVTVChDb250YWlu
c1Rlc3QsIFdvcmtzRm9yTmF0aXZlQXJyYXlBc1R1cGxlKSB7CisgIGNvbnN0IGludCBhW10gPSB7
IDEsIDIgfTsKKyAgY29uc3QgaW50KiBjb25zdCBwb2ludGVyID0gYTsKKyAgRVhQRUNUX1RIQVQo
bWFrZV90dXBsZShwb2ludGVyLCAyKSwgQ29udGFpbnMoMSkpOworICBFWFBFQ1RfVEhBVChtYWtl
X3R1cGxlKHBvaW50ZXIsIDIpLCBOb3QoQ29udGFpbnMoR3QoMykpKSk7Cit9CisKK1RFU1QoQ29u
dGFpbnNUZXN0LCBXb3Jrc0ZvclR3b0RpbWVuc2lvbmFsTmF0aXZlQXJyYXkpIHsKKyAgaW50IGFb
XVszXSA9IHsgeyAxLCAyLCAzIH0sIHsgNCwgNSwgNiB9IH07CisgIEVYUEVDVF9USEFUKGEsIENv
bnRhaW5zKEVsZW1lbnRzQXJlKDQsIDUsIDYpKSk7CisgIEVYUEVDVF9USEFUKGEsIENvbnRhaW5z
KENvbnRhaW5zKDUpKSk7CisgIEVYUEVDVF9USEFUKGEsIE5vdChDb250YWlucyhFbGVtZW50c0Fy
ZSgzLCA0LCA1KSkpKTsKKyAgRVhQRUNUX1RIQVQoYSwgQ29udGFpbnMoTm90KENvbnRhaW5zKDUp
KSkpOworfQorCitURVNUKEFsbE9mVGVzdCwgSHVnZU1hdGNoZXIpIHsKKyAgLy8gVmVyaWZ5IHRo
YXQgdXNpbmcgQWxsT2Ygd2l0aCBtYW55IGFyZ3VtZW50cyBkb2Vzbid0IGNhdXNlCisgIC8vIHRo
ZSBjb21waWxlciB0byBleGNlZWQgdGVtcGxhdGUgaW5zdGFudGlhdGlvbiBkZXB0aCBsaW1pdC4K
KyAgRVhQRUNUX1RIQVQoMCwgdGVzdGluZzo6QWxsT2YoXywgXywgXywgXywgXywgXywgXywgXywg
XywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6QWxsT2YoXywgXywg
XywgXywgXywgXywgXywgXywgXywgXykpKTsKK30KKworVEVTVChBbnlPZlRlc3QsIEh1Z2VNYXRj
aGVyKSB7CisgIC8vIFZlcmlmeSB0aGF0IHVzaW5nIEFueU9mIHdpdGggbWFueSBhcmd1bWVudHMg
ZG9lc24ndCBjYXVzZQorICAvLyB0aGUgY29tcGlsZXIgdG8gZXhjZWVkIHRlbXBsYXRlIGluc3Rh
bnRpYXRpb24gZGVwdGggbGltaXQuCisgIEVYUEVDVF9USEFUKDAsIHRlc3Rpbmc6OkFueU9mKF8s
IF8sIF8sIF8sIF8sIF8sIF8sIF8sIF8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRlc3Rpbmc6OkFueU9mKF8sIF8sIF8sIF8sIF8sIF8sIF8sIF8sIF8sIF8pKSk7Cit9CisKK25h
bWVzcGFjZSBhZGxfdGVzdCB7CisKKy8vIFZlcmlmaWVzIHRoYXQgdGhlIGltcGxlbWVudGF0aW9u
IG9mIDo6dGVzdGluZzo6QWxsT2YgYW5kIDo6dGVzdGluZzo6QW55T2YKKy8vIGRvbid0IGlzc3Vl
IHVucXVhbGlmaWVkIHJlY3Vyc2l2ZSBjYWxscy4gIElmIHRoZXkgZG8sIHRoZSBhcmd1bWVudCBk
ZXBlbmRlbnQKKy8vIG5hbWUgbG9va3VwIHdpbGwgY2F1c2UgQWxsT2YvQW55T2YgaW4gdGhlICdh
ZGxfdGVzdCcgbmFtZXNwYWNlIHRvIGJlIGZvdW5kCisvLyBhcyBhIGNhbmRpZGF0ZSBhbmQgdGhl
IGNvbXBpbGF0aW9uIHdpbGwgYnJlYWsgZHVlIHRvIGFuIGFtYmlndW91cyBvdmVybG9hZC4KKwor
Ly8gVGhlIG1hdGNoZXIgbXVzdCBiZSBpbiB0aGUgc2FtZSBuYW1lc3BhY2UgYXMgQWxsT2YvQW55
T2YgdG8gbWFrZSBhcmd1bWVudAorLy8gZGVwZW5kZW50IGxvb2t1cCBmaW5kIHRob3NlLgorTUFU
Q0hFUihNLCAiIikgeyByZXR1cm4gdHJ1ZTsgfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5
cGVuYW1lIFQyPgorYm9vbCBBbGxPZihjb25zdCBUMSYgdDEsIGNvbnN0IFQyJiB0MikgeyByZXR1
cm4gdHJ1ZTsgfQorCitURVNUKEFsbE9mVGVzdCwgRG9lc05vdENhbGxBbGxPZlVucXVhbGlmaWVk
KSB7CisgIEVYUEVDVF9USEFUKDQyLCB0ZXN0aW5nOjpBbGxPZigKKyAgICAgIE0oKSwgTSgpLCBN
KCksIE0oKSwgTSgpLCBNKCksIE0oKSwgTSgpLCBNKCksIE0oKSkpOworfQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPiBib29sCitBbnlPZihjb25zdCBUMSYgdDEsIGNvbnN0
IFQyJiB0MikgeyByZXR1cm4gdHJ1ZTsgfQorCitURVNUKEFueU9mVGVzdCwgRG9lc05vdENhbGxB
bnlPZlVucXVhbGlmaWVkKSB7CisgIEVYUEVDVF9USEFUKDQyLCB0ZXN0aW5nOjpBbnlPZigKKyAg
ICAgIE0oKSwgTSgpLCBNKCksIE0oKSwgTSgpLCBNKCksIE0oKSwgTSgpLCBNKCksIE0oKSkpOwor
fQorCit9ICAvLyBuYW1lc3BhY2UgYWRsX3Rlc3QKKworI2lmZGVmIF9NU0NfVkVSCisjIHByYWdt
YSB3YXJuaW5nKHBvcCkKKyNlbmRpZgorCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGVtb2NrL3Rlc3QvZ21vY2staW50ZXJuYWwtdXRpbHNfdGVzdC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2Nr
L3Rlc3QvZ21vY2staW50ZXJuYWwtdXRpbHNfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YzI0MjNlY2Qz
NDRhNTEzMDA3NWVmZmM4NWE1ODYzMjhlYmQzNmJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZW1vY2svdGVzdC9nbW9jay1pbnRlcm5hbC11dGlsc190ZXN0LmNjCkBAIC0wLDAgKzEsNjk4IEBA
CisvLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8v
IGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisv
LyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gQXV0
aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorCisvLyBHb29nbGUgTW9jayAtIGEg
ZnJhbWV3b3JrIGZvciB3cml0aW5nIEMrKyBtb2NrIGNsYXNzZXMuCisvLworLy8gVGhpcyBmaWxl
IHRlc3RzIHRoZSBpbnRlcm5hbCB1dGlsaXRpZXMuCisKKyNpbmNsdWRlICJnbW9jay9pbnRlcm5h
bC9nbW9jay1pbnRlcm5hbC11dGlscy5oIgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUg
PG1hcD4KKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHNz
dHJlYW0+CisjaW5jbHVkZSA8dmVjdG9yPgorI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCisjaW5j
bHVkZSAiZ21vY2svaW50ZXJuYWwvZ21vY2stcG9ydC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
LmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiCisKKy8vIEluZGljYXRlcyB0aGF0IHRo
aXMgdHJhbnNsYXRpb24gdW5pdCBpcyBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MKKy8vIGltcGxlbWVu
dGF0aW9uLiAgSXQgbXVzdCBjb21lIGJlZm9yZSBndGVzdC1pbnRlcm5hbC1pbmwuaCBpcworLy8g
aW5jbHVkZWQsIG9yIHRoZXJlIHdpbGwgYmUgYSBjb21waWxlciBlcnJvci4gIFRoaXMgdHJpY2sg
aXMgdG8KKy8vIHByZXZlbnQgYSB1c2VyIGZyb20gYWNjaWRlbnRhbGx5IGluY2x1ZGluZyBndGVz
dC1pbnRlcm5hbC1pbmwuaCBpbgorLy8gaGlzIGNvZGUuCisjZGVmaW5lIEdURVNUX0lNUExFTUVO
VEFUSU9OXyAxCisjaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgorI3VuZGVmIEdU
RVNUX0lNUExFTUVOVEFUSU9OXworCisjaWYgR1RFU1RfT1NfQ1lHV0lOCisjIGluY2x1ZGUgPHN5
cy90eXBlcy5oPiAgLy8gRm9yIHNzaXplX3QuIE5PTElOVAorI2VuZGlmCisKK2NsYXNzIFByb3Rv
Y29sTWVzc2FnZTsKKworbmFtZXNwYWNlIHByb3RvMiB7CitjbGFzcyBNZXNzYWdlOworfSAgLy8g
bmFtZXNwYWNlIHByb3RvMgorCituYW1lc3BhY2UgdGVzdGluZyB7CituYW1lc3BhY2UgaW50ZXJu
YWwgeworCituYW1lc3BhY2UgeworCitURVNUKENvbnZlcnRJZGVudGlmaWVyTmFtZVRvV29yZHNU
ZXN0LCBXb3Jrc1doZW5OYW1lQ29udGFpbnNOb1dvcmQpIHsKKyAgRVhQRUNUX0VRKCIiLCBDb252
ZXJ0SWRlbnRpZmllck5hbWVUb1dvcmRzKCIiKSk7CisgIEVYUEVDVF9FUSgiIiwgQ29udmVydElk
ZW50aWZpZXJOYW1lVG9Xb3JkcygiXyIpKTsKKyAgRVhQRUNUX0VRKCIiLCBDb252ZXJ0SWRlbnRp
Zmllck5hbWVUb1dvcmRzKCJfXyIpKTsKK30KKworVEVTVChDb252ZXJ0SWRlbnRpZmllck5hbWVU
b1dvcmRzVGVzdCwgV29ya3NXaGVuTmFtZUNvbnRhaW5zRGlnaXRzKSB7CisgIEVYUEVDVF9FUSgi
MSIsIENvbnZlcnRJZGVudGlmaWVyTmFtZVRvV29yZHMoIl8xIikpOworICBFWFBFQ1RfRVEoIjIi
LCBDb252ZXJ0SWRlbnRpZmllck5hbWVUb1dvcmRzKCIyXyIpKTsKKyAgRVhQRUNUX0VRKCIzNCIs
IENvbnZlcnRJZGVudGlmaWVyTmFtZVRvV29yZHMoIl8zNF8iKSk7CisgIEVYUEVDVF9FUSgiMzQg
NTYiLCBDb252ZXJ0SWRlbnRpZmllck5hbWVUb1dvcmRzKCJfMzRfNTYiKSk7Cit9CisKK1RFU1Qo
Q29udmVydElkZW50aWZpZXJOYW1lVG9Xb3Jkc1Rlc3QsIFdvcmtzV2hlbk5hbWVDb250YWluc0Nh
bWVsQ2FzZVdvcmRzKSB7CisgIEVYUEVDVF9FUSgiYSBiaWcgd29yZCIsIENvbnZlcnRJZGVudGlm
aWVyTmFtZVRvV29yZHMoIkFCaWdXb3JkIikpOworICBFWFBFQ1RfRVEoImZvbyBiYXIiLCBDb252
ZXJ0SWRlbnRpZmllck5hbWVUb1dvcmRzKCJGb29CYXIiKSk7CisgIEVYUEVDVF9FUSgiZm9vIiwg
Q29udmVydElkZW50aWZpZXJOYW1lVG9Xb3JkcygiRm9vXyIpKTsKKyAgRVhQRUNUX0VRKCJmb28g
YmFyIiwgQ29udmVydElkZW50aWZpZXJOYW1lVG9Xb3JkcygiX0Zvb19CYXJfIikpOworICBFWFBF
Q1RfRVEoImZvbyBhbmQgYmFyIiwgQ29udmVydElkZW50aWZpZXJOYW1lVG9Xb3JkcygiX0Zvb19f
QW5kX0JhciIpKTsKK30KKworVEVTVChDb252ZXJ0SWRlbnRpZmllck5hbWVUb1dvcmRzVGVzdCwg
V29ya3NXaGVuTmFtZUNvbnRhaW5zX1NlcGFyYXRlZFdvcmRzKSB7CisgIEVYUEVDVF9FUSgiZm9v
IGJhciIsIENvbnZlcnRJZGVudGlmaWVyTmFtZVRvV29yZHMoImZvb19iYXIiKSk7CisgIEVYUEVD
VF9FUSgiZm9vIiwgQ29udmVydElkZW50aWZpZXJOYW1lVG9Xb3JkcygiX2Zvb18iKSk7CisgIEVY
UEVDVF9FUSgiZm9vIGJhciIsIENvbnZlcnRJZGVudGlmaWVyTmFtZVRvV29yZHMoIl9mb29fYmFy
XyIpKTsKKyAgRVhQRUNUX0VRKCJmb28gYW5kIGJhciIsIENvbnZlcnRJZGVudGlmaWVyTmFtZVRv
V29yZHMoIl9mb29fX2FuZF9iYXIiKSk7Cit9CisKK1RFU1QoQ29udmVydElkZW50aWZpZXJOYW1l
VG9Xb3Jkc1Rlc3QsIFdvcmtzV2hlbk5hbWVJc01peHR1cmUpIHsKKyAgRVhQRUNUX0VRKCJmb28g
YmFyIDEyMyIsIENvbnZlcnRJZGVudGlmaWVyTmFtZVRvV29yZHMoIkZvb19iYXIxMjMiKSk7Cisg
IEVYUEVDVF9FUSgiY2hhcHRlciAxMSBzZWN0aW9uIDEiLAorICAgICAgICAgICAgQ29udmVydElk
ZW50aWZpZXJOYW1lVG9Xb3JkcygiX0NoYXB0ZXIxMVNlY3Rpb25fMV8iKSk7Cit9CisKK1RFU1Qo
UG9pbnRlZU9mVGVzdCwgV29ya3NGb3JTbWFydFBvaW50ZXJzKSB7CisgIENvbXBpbGVBc3NlcnRU
eXBlc0VxdWFsPGNvbnN0IGNoYXIsCisgICAgICBQb2ludGVlT2Y8aW50ZXJuYWw6OmxpbmtlZF9w
dHI8Y29uc3QgY2hhcj4gPjo6dHlwZT4oKTsKKyNpZiBHVEVTVF9IQVNfU1REX1VOSVFVRV9QVFJf
CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGludCwgUG9pbnRlZU9mPHN0ZDo6dW5pcXVlX3B0
cjxpbnQ+ID46OnR5cGU+KCk7CisjZW5kaWYgIC8vIEdURVNUX0hBU19TVERfVU5JUVVFX1BUUl8K
KyNpZiBHVEVTVF9IQVNfU1REX1NIQVJFRF9QVFJfCisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFs
PHN0ZDo6c3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICBQb2ludGVlT2Y8c3RkOjpz
aGFyZWRfcHRyPHN0ZDo6c3RyaW5nPiA+Ojp0eXBlPigpOworI2VuZGlmICAvLyBHVEVTVF9IQVNf
U1REX1NIQVJFRF9QVFJfCit9CisKK1RFU1QoUG9pbnRlZU9mVGVzdCwgV29ya3NGb3JSYXdQb2lu
dGVycykgeworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxpbnQsIFBvaW50ZWVPZjxpbnQqPjo6
dHlwZT4oKTsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8Y29uc3QgY2hhciwgUG9pbnRlZU9m
PGNvbnN0IGNoYXIqPjo6dHlwZT4oKTsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8dm9pZCwg
UG9pbnRlZU9mPHZvaWQqPjo6dHlwZT4oKTsKK30KKworVEVTVChHZXRSYXdQb2ludGVyVGVzdCwg
V29ya3NGb3JTbWFydFBvaW50ZXJzKSB7CisjaWYgR1RFU1RfSEFTX1NURF9VTklRVUVfUFRSXwor
ICBjb25zdCBjaGFyKiBjb25zdCByYXdfcDEgPSBuZXcgY29uc3QgY2hhcignYScpOyAgLy8gTk9M
SU5UCisgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBjaGFyPiBwMShyYXdfcDEpOworICBF
WFBFQ1RfRVEocmF3X3AxLCBHZXRSYXdQb2ludGVyKHAxKSk7CisjZW5kaWYgIC8vIEdURVNUX0hB
U19TVERfVU5JUVVFX1BUUl8KKyNpZiBHVEVTVF9IQVNfU1REX1NIQVJFRF9QVFJfCisgIGRvdWJs
ZSogY29uc3QgcmF3X3AyID0gbmV3IGRvdWJsZSgyLjUpOyAgLy8gTk9MSU5UCisgIGNvbnN0IHN0
ZDo6c2hhcmVkX3B0cjxkb3VibGU+IHAyKHJhd19wMik7CisgIEVYUEVDVF9FUShyYXdfcDIsIEdl
dFJhd1BvaW50ZXIocDIpKTsKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9TSEFSRURfUFRSXwor
CisgIGNvbnN0IGNoYXIqIGNvbnN0IHJhd19wNCA9IG5ldyBjb25zdCBjaGFyKCdhJyk7ICAvLyBO
T0xJTlQKKyAgY29uc3QgaW50ZXJuYWw6OmxpbmtlZF9wdHI8Y29uc3QgY2hhcj4gcDQocmF3X3A0
KTsKKyAgRVhQRUNUX0VRKHJhd19wNCwgR2V0UmF3UG9pbnRlcihwNCkpOworfQorCitURVNUKEdl
dFJhd1BvaW50ZXJUZXN0LCBXb3Jrc0ZvclJhd1BvaW50ZXJzKSB7CisgIGludCogcCA9IE5VTEw7
CisgIC8vIERvbid0IHVzZSBFWFBFQ1RfRVEgYXMgbm8gTlVMTC10ZXN0aW5nIG1hZ2ljIG9uIFN5
bWJpYW4uCisgIEVYUEVDVF9UUlVFKE5VTEwgPT0gR2V0UmF3UG9pbnRlcihwKSk7CisgIGludCBu
ID0gMTsKKyAgRVhQRUNUX0VRKCZuLCBHZXRSYXdQb2ludGVyKCZuKSk7Cit9CisKKy8vIFRlc3Rz
IEtpbmRPZjxUPi4KKworY2xhc3MgQmFzZSB7fTsKK2NsYXNzIERlcml2ZWQgOiBwdWJsaWMgQmFz
ZSB7fTsKKworVEVTVChLaW5kT2ZUZXN0LCBCb29sKSB7CisgIEVYUEVDVF9FUShrQm9vbCwgR01P
Q0tfS0lORF9PRl8oYm9vbCkpOyAgLy8gTk9MSU5UCit9CisKK1RFU1QoS2luZE9mVGVzdCwgSW50
ZWdlcikgeworICBFWFBFQ1RfRVEoa0ludGVnZXIsIEdNT0NLX0tJTkRfT0ZfKGNoYXIpKTsgIC8v
IE5PTElOVAorICBFWFBFQ1RfRVEoa0ludGVnZXIsIEdNT0NLX0tJTkRfT0ZfKHNpZ25lZCBjaGFy
KSk7ICAvLyBOT0xJTlQKKyAgRVhQRUNUX0VRKGtJbnRlZ2VyLCBHTU9DS19LSU5EX09GXyh1bnNp
Z25lZCBjaGFyKSk7ICAvLyBOT0xJTlQKKyAgRVhQRUNUX0VRKGtJbnRlZ2VyLCBHTU9DS19LSU5E
X09GXyhzaG9ydCkpOyAgLy8gTk9MSU5UCisgIEVYUEVDVF9FUShrSW50ZWdlciwgR01PQ0tfS0lO
RF9PRl8odW5zaWduZWQgc2hvcnQpKTsgIC8vIE5PTElOVAorICBFWFBFQ1RfRVEoa0ludGVnZXIs
IEdNT0NLX0tJTkRfT0ZfKGludCkpOyAgLy8gTk9MSU5UCisgIEVYUEVDVF9FUShrSW50ZWdlciwg
R01PQ0tfS0lORF9PRl8odW5zaWduZWQgaW50KSk7ICAvLyBOT0xJTlQKKyAgRVhQRUNUX0VRKGtJ
bnRlZ2VyLCBHTU9DS19LSU5EX09GXyhsb25nKSk7ICAvLyBOT0xJTlQKKyAgRVhQRUNUX0VRKGtJ
bnRlZ2VyLCBHTU9DS19LSU5EX09GXyh1bnNpZ25lZCBsb25nKSk7ICAvLyBOT0xJTlQKKyAgRVhQ
RUNUX0VRKGtJbnRlZ2VyLCBHTU9DS19LSU5EX09GXyh3Y2hhcl90KSk7ICAvLyBOT0xJTlQKKyAg
RVhQRUNUX0VRKGtJbnRlZ2VyLCBHTU9DS19LSU5EX09GXyhJbnQ2NCkpOyAgLy8gTk9MSU5UCisg
IEVYUEVDVF9FUShrSW50ZWdlciwgR01PQ0tfS0lORF9PRl8oVUludDY0KSk7ICAvLyBOT0xJTlQK
KyAgRVhQRUNUX0VRKGtJbnRlZ2VyLCBHTU9DS19LSU5EX09GXyhzaXplX3QpKTsgIC8vIE5PTElO
VAorI2lmIEdURVNUX09TX0xJTlVYIHx8IEdURVNUX09TX01BQyB8fCBHVEVTVF9PU19DWUdXSU4K
KyAgLy8gc3NpemVfdCBpcyBub3QgZGVmaW5lZCBvbiBXaW5kb3dzIGFuZCBwb3NzaWJseSBzb21l
IG90aGVyIE9TZXMuCisgIEVYUEVDVF9FUShrSW50ZWdlciwgR01PQ0tfS0lORF9PRl8oc3NpemVf
dCkpOyAgLy8gTk9MSU5UCisjZW5kaWYKK30KKworVEVTVChLaW5kT2ZUZXN0LCBGbG9hdGluZ1Bv
aW50KSB7CisgIEVYUEVDVF9FUShrRmxvYXRpbmdQb2ludCwgR01PQ0tfS0lORF9PRl8oZmxvYXQp
KTsgIC8vIE5PTElOVAorICBFWFBFQ1RfRVEoa0Zsb2F0aW5nUG9pbnQsIEdNT0NLX0tJTkRfT0Zf
KGRvdWJsZSkpOyAgLy8gTk9MSU5UCisgIEVYUEVDVF9FUShrRmxvYXRpbmdQb2ludCwgR01PQ0tf
S0lORF9PRl8obG9uZyBkb3VibGUpKTsgIC8vIE5PTElOVAorfQorCitURVNUKEtpbmRPZlRlc3Qs
IE90aGVyKSB7CisgIEVYUEVDVF9FUShrT3RoZXIsIEdNT0NLX0tJTkRfT0ZfKHZvaWQqKSk7ICAv
LyBOT0xJTlQKKyAgRVhQRUNUX0VRKGtPdGhlciwgR01PQ0tfS0lORF9PRl8oY2hhcioqKSk7ICAv
LyBOT0xJTlQKKyAgRVhQRUNUX0VRKGtPdGhlciwgR01PQ0tfS0lORF9PRl8oQmFzZSkpOyAgLy8g
Tk9MSU5UCit9CisKKy8vIFRlc3RzIExvc3NsZXNzQXJpdGhtZXRpY0NvbnZlcnRpYmxlPFQsIFU+
LgorCitURVNUKExvc3NsZXNzQXJpdGhtZXRpY0NvbnZlcnRpYmxlVGVzdCwgQm9vbFRvQm9vbCkg
eworICBFWFBFQ1RfVFJVRSgoTG9zc2xlc3NBcml0aG1ldGljQ29udmVydGlibGU8Ym9vbCwgYm9v
bD46OnZhbHVlKSk7Cit9CisKK1RFU1QoTG9zc2xlc3NBcml0aG1ldGljQ29udmVydGlibGVUZXN0
LCBCb29sVG9JbnRlZ2VyKSB7CisgIEVYUEVDVF9UUlVFKChMb3NzbGVzc0FyaXRobWV0aWNDb252
ZXJ0aWJsZTxib29sLCBjaGFyPjo6dmFsdWUpKTsKKyAgRVhQRUNUX1RSVUUoKExvc3NsZXNzQXJp
dGhtZXRpY0NvbnZlcnRpYmxlPGJvb2wsIGludD46OnZhbHVlKSk7CisgIEVYUEVDVF9UUlVFKAor
ICAgICAgKExvc3NsZXNzQXJpdGhtZXRpY0NvbnZlcnRpYmxlPGJvb2wsIHVuc2lnbmVkIGxvbmc+
Ojp2YWx1ZSkpOyAgLy8gTk9MSU5UCit9CisKK1RFU1QoTG9zc2xlc3NBcml0aG1ldGljQ29udmVy
dGlibGVUZXN0LCBCb29sVG9GbG9hdGluZ1BvaW50KSB7CisgIEVYUEVDVF9UUlVFKChMb3NzbGVz
c0FyaXRobWV0aWNDb252ZXJ0aWJsZTxib29sLCBmbG9hdD46OnZhbHVlKSk7CisgIEVYUEVDVF9U
UlVFKChMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZTxib29sLCBkb3VibGU+Ojp2YWx1ZSkp
OworfQorCitURVNUKExvc3NsZXNzQXJpdGhtZXRpY0NvbnZlcnRpYmxlVGVzdCwgSW50ZWdlclRv
Qm9vbCkgeworICBFWFBFQ1RfRkFMU0UoKExvc3NsZXNzQXJpdGhtZXRpY0NvbnZlcnRpYmxlPHVu
c2lnbmVkIGNoYXIsIGJvb2w+Ojp2YWx1ZSkpOworICBFWFBFQ1RfRkFMU0UoKExvc3NsZXNzQXJp
dGhtZXRpY0NvbnZlcnRpYmxlPGludCwgYm9vbD46OnZhbHVlKSk7Cit9CisKK1RFU1QoTG9zc2xl
c3NBcml0aG1ldGljQ29udmVydGlibGVUZXN0LCBJbnRlZ2VyVG9JbnRlZ2VyKSB7CisgIC8vIFVu
c2lnbmVkID0+IGxhcmdlciBzaWduZWQgaXMgZmluZS4KKyAgRVhQRUNUX1RSVUUoKExvc3NsZXNz
QXJpdGhtZXRpY0NvbnZlcnRpYmxlPHVuc2lnbmVkIGNoYXIsIGludD46OnZhbHVlKSk7CisKKyAg
Ly8gVW5zaWduZWQgPT4gbGFyZ2VyIHVuc2lnbmVkIGlzIGZpbmUuCisgIEVYUEVDVF9UUlVFKAor
ICAgICAgKExvc3NsZXNzQXJpdGhtZXRpY0NvbnZlcnRpYmxlPHVuc2lnbmVkIHNob3J0LCBVSW50
NjQ+Ojp2YWx1ZSkpOyAvLyBOT0xJTlQKKworICAvLyBTaWduZWQgPT4gdW5zaWduZWQgaXMgbm90
IGZpbmUuCisgIEVYUEVDVF9GQUxTRSgoTG9zc2xlc3NBcml0aG1ldGljQ29udmVydGlibGU8c2hv
cnQsIFVJbnQ2ND46OnZhbHVlKSk7IC8vIE5PTElOVAorICBFWFBFQ1RfRkFMU0UoKExvc3NsZXNz
QXJpdGhtZXRpY0NvbnZlcnRpYmxlPAorICAgICAgc2lnbmVkIGNoYXIsIHVuc2lnbmVkIGludD46
OnZhbHVlKSk7ICAvLyBOT0xJTlQKKworICAvLyBTYW1lIHNpemUgYW5kIHNhbWUgc2lnbmVkbmVz
czogZmluZSB0b28uCisgIEVYUEVDVF9UUlVFKChMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJs
ZTwKKyAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIsIHVuc2lnbmVkIGNoYXI+Ojp2YWx1ZSkp
OworICBFWFBFQ1RfVFJVRSgoTG9zc2xlc3NBcml0aG1ldGljQ29udmVydGlibGU8aW50LCBpbnQ+
Ojp2YWx1ZSkpOworICBFWFBFQ1RfVFJVRSgoTG9zc2xlc3NBcml0aG1ldGljQ29udmVydGlibGU8
d2NoYXJfdCwgd2NoYXJfdD46OnZhbHVlKSk7CisgIEVYUEVDVF9UUlVFKChMb3NzbGVzc0FyaXRo
bWV0aWNDb252ZXJ0aWJsZTwKKyAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVk
IGxvbmc+Ojp2YWx1ZSkpOyAgLy8gTk9MSU5UCisKKyAgLy8gU2FtZSBzaXplLCBkaWZmZXJlbnQg
c2lnbmVkbmVzczogbm90IGZpbmUuCisgIEVYUEVDVF9GQUxTRSgoTG9zc2xlc3NBcml0aG1ldGlj
Q29udmVydGlibGU8CisgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciwgc2lnbmVkIGNoYXI+
Ojp2YWx1ZSkpOworICBFWFBFQ1RfRkFMU0UoKExvc3NsZXNzQXJpdGhtZXRpY0NvbnZlcnRpYmxl
PGludCwgdW5zaWduZWQgaW50Pjo6dmFsdWUpKTsKKyAgRVhQRUNUX0ZBTFNFKChMb3NzbGVzc0Fy
aXRobWV0aWNDb252ZXJ0aWJsZTxVSW50NjQsIEludDY0Pjo6dmFsdWUpKTsKKworICAvLyBMYXJn
ZXIgc2l6ZSA9PiBzbWFsbGVyIHNpemUgaXMgbm90IGZpbmUuCisgIEVYUEVDVF9GQUxTRSgoTG9z
c2xlc3NBcml0aG1ldGljQ29udmVydGlibGU8bG9uZywgY2hhcj46OnZhbHVlKSk7ICAvLyBOT0xJ
TlQKKyAgRVhQRUNUX0ZBTFNFKChMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZTxpbnQsIHNp
Z25lZCBjaGFyPjo6dmFsdWUpKTsKKyAgRVhQRUNUX0ZBTFNFKChMb3NzbGVzc0FyaXRobWV0aWND
b252ZXJ0aWJsZTxJbnQ2NCwgdW5zaWduZWQgaW50Pjo6dmFsdWUpKTsKK30KKworVEVTVChMb3Nz
bGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZVRlc3QsIEludGVnZXJUb0Zsb2F0aW5nUG9pbnQpIHsK
KyAgLy8gSW50ZWdlcnMgY2Fubm90IGJlIGxvc3NsZXNzbHkgY29udmVydGVkIHRvIGZsb2F0aW5n
LXBvaW50cywgYXMKKyAgLy8gdGhlIGZvcm1hdCBvZiB0aGUgbGF0dGVyIGlzIGltcGxlbWVudGF0
aW9uLWRlZmluZWQuCisgIEVYUEVDVF9GQUxTRSgoTG9zc2xlc3NBcml0aG1ldGljQ29udmVydGli
bGU8Y2hhciwgZmxvYXQ+Ojp2YWx1ZSkpOworICBFWFBFQ1RfRkFMU0UoKExvc3NsZXNzQXJpdGht
ZXRpY0NvbnZlcnRpYmxlPGludCwgZG91YmxlPjo6dmFsdWUpKTsKKyAgRVhQRUNUX0ZBTFNFKChM
b3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZTwKKyAgICAgICAgICAgICAgICBzaG9ydCwgbG9u
ZyBkb3VibGU+Ojp2YWx1ZSkpOyAgLy8gTk9MSU5UCit9CisKK1RFU1QoTG9zc2xlc3NBcml0aG1l
dGljQ29udmVydGlibGVUZXN0LCBGbG9hdGluZ1BvaW50VG9Cb29sKSB7CisgIEVYUEVDVF9GQUxT
RSgoTG9zc2xlc3NBcml0aG1ldGljQ29udmVydGlibGU8ZmxvYXQsIGJvb2w+Ojp2YWx1ZSkpOwor
ICBFWFBFQ1RfRkFMU0UoKExvc3NsZXNzQXJpdGhtZXRpY0NvbnZlcnRpYmxlPGRvdWJsZSwgYm9v
bD46OnZhbHVlKSk7Cit9CisKK1RFU1QoTG9zc2xlc3NBcml0aG1ldGljQ29udmVydGlibGVUZXN0
LCBGbG9hdGluZ1BvaW50VG9JbnRlZ2VyKSB7CisgIEVYUEVDVF9GQUxTRSgoTG9zc2xlc3NBcml0
aG1ldGljQ29udmVydGlibGU8ZmxvYXQsIGxvbmc+Ojp2YWx1ZSkpOyAgLy8gTk9MSU5UCisgIEVY
UEVDVF9GQUxTRSgoTG9zc2xlc3NBcml0aG1ldGljQ29udmVydGlibGU8ZG91YmxlLCBJbnQ2ND46
OnZhbHVlKSk7CisgIEVYUEVDVF9GQUxTRSgoTG9zc2xlc3NBcml0aG1ldGljQ29udmVydGlibGU8
bG9uZyBkb3VibGUsIGludD46OnZhbHVlKSk7Cit9CisKK1RFU1QoTG9zc2xlc3NBcml0aG1ldGlj
Q29udmVydGlibGVUZXN0LCBGbG9hdGluZ1BvaW50VG9GbG9hdGluZ1BvaW50KSB7CisgIC8vIFNt
YWxsZXIgc2l6ZSA9PiBsYXJnZXIgc2l6ZSBpcyBmaW5lLgorICBFWFBFQ1RfVFJVRSgoTG9zc2xl
c3NBcml0aG1ldGljQ29udmVydGlibGU8ZmxvYXQsIGRvdWJsZT46OnZhbHVlKSk7CisgIEVYUEVD
VF9UUlVFKChMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZTxmbG9hdCwgbG9uZyBkb3VibGU+
Ojp2YWx1ZSkpOworICBFWFBFQ1RfVFJVRSgoTG9zc2xlc3NBcml0aG1ldGljQ29udmVydGlibGU8
ZG91YmxlLCBsb25nIGRvdWJsZT46OnZhbHVlKSk7CisKKyAgLy8gU2FtZSBzaXplOiBmaW5lLgor
ICBFWFBFQ1RfVFJVRSgoTG9zc2xlc3NBcml0aG1ldGljQ29udmVydGlibGU8ZmxvYXQsIGZsb2F0
Pjo6dmFsdWUpKTsKKyAgRVhQRUNUX1RSVUUoKExvc3NsZXNzQXJpdGhtZXRpY0NvbnZlcnRpYmxl
PGRvdWJsZSwgZG91YmxlPjo6dmFsdWUpKTsKKworICAvLyBMYXJnZXIgc2l6ZSA9PiBzbWFsbGVy
IHNpemUgaXMgbm90IGZpbmUuCisgIEVYUEVDVF9GQUxTRSgoTG9zc2xlc3NBcml0aG1ldGljQ29u
dmVydGlibGU8ZG91YmxlLCBmbG9hdD46OnZhbHVlKSk7CisgIEdURVNUX0lOVEVOVElPTkFMX0NP
TlNUX0NPTkRfUFVTSF8oKQorICBpZiAoc2l6ZW9mKGRvdWJsZSkgPT0gc2l6ZW9mKGxvbmcgZG91
YmxlKSkgeyAgLy8gTk9MSU5UCisgIEdURVNUX0lOVEVOVElPTkFMX0NPTlNUX0NPTkRfUE9QXygp
CisgICAgLy8gSW4gc29tZSBpbXBsZW1lbnRhdGlvbnMgKGUuZy4gTVNWQyksIGRvdWJsZSBhbmQg
bG9uZyBkb3VibGUKKyAgICAvLyBoYXZlIHRoZSBzYW1lIHNpemUuCisgICAgRVhQRUNUX1RSVUUo
KExvc3NsZXNzQXJpdGhtZXRpY0NvbnZlcnRpYmxlPGxvbmcgZG91YmxlLCBkb3VibGU+Ojp2YWx1
ZSkpOworICB9IGVsc2UgeworICAgIEVYUEVDVF9GQUxTRSgoTG9zc2xlc3NBcml0aG1ldGljQ29u
dmVydGlibGU8bG9uZyBkb3VibGUsIGRvdWJsZT46OnZhbHVlKSk7CisgIH0KK30KKworLy8gVGVz
dHMgdGhlIFR1cGxlTWF0Y2hlcygpIHRlbXBsYXRlIGZ1bmN0aW9uLgorCitURVNUKFR1cGxlTWF0
Y2hlc1Rlc3QsIFdvcmtzRm9yU2l6ZTApIHsKKyAgdHVwbGU8PiBtYXRjaGVyczsKKyAgdHVwbGU8
PiB2YWx1ZXM7CisKKyAgRVhQRUNUX1RSVUUoVHVwbGVNYXRjaGVzKG1hdGNoZXJzLCB2YWx1ZXMp
KTsKK30KKworVEVTVChUdXBsZU1hdGNoZXNUZXN0LCBXb3Jrc0ZvclNpemUxKSB7CisgIHR1cGxl
PE1hdGNoZXI8aW50PiA+IG1hdGNoZXJzKEVxKDEpKTsKKyAgdHVwbGU8aW50PiB2YWx1ZXMxKDEp
LAorICAgICAgdmFsdWVzMigyKTsKKworICBFWFBFQ1RfVFJVRShUdXBsZU1hdGNoZXMobWF0Y2hl
cnMsIHZhbHVlczEpKTsKKyAgRVhQRUNUX0ZBTFNFKFR1cGxlTWF0Y2hlcyhtYXRjaGVycywgdmFs
dWVzMikpOworfQorCitURVNUKFR1cGxlTWF0Y2hlc1Rlc3QsIFdvcmtzRm9yU2l6ZTIpIHsKKyAg
dHVwbGU8TWF0Y2hlcjxpbnQ+LCBNYXRjaGVyPGNoYXI+ID4gbWF0Y2hlcnMoRXEoMSksIEVxKCdh
JykpOworICB0dXBsZTxpbnQsIGNoYXI+IHZhbHVlczEoMSwgJ2EnKSwKKyAgICAgIHZhbHVlczIo
MSwgJ2InKSwKKyAgICAgIHZhbHVlczMoMiwgJ2EnKSwKKyAgICAgIHZhbHVlczQoMiwgJ2InKTsK
KworICBFWFBFQ1RfVFJVRShUdXBsZU1hdGNoZXMobWF0Y2hlcnMsIHZhbHVlczEpKTsKKyAgRVhQ
RUNUX0ZBTFNFKFR1cGxlTWF0Y2hlcyhtYXRjaGVycywgdmFsdWVzMikpOworICBFWFBFQ1RfRkFM
U0UoVHVwbGVNYXRjaGVzKG1hdGNoZXJzLCB2YWx1ZXMzKSk7CisgIEVYUEVDVF9GQUxTRShUdXBs
ZU1hdGNoZXMobWF0Y2hlcnMsIHZhbHVlczQpKTsKK30KKworVEVTVChUdXBsZU1hdGNoZXNUZXN0
LCBXb3Jrc0ZvclNpemU1KSB7CisgIHR1cGxlPE1hdGNoZXI8aW50PiwgTWF0Y2hlcjxjaGFyPiwg
TWF0Y2hlcjxib29sPiwgTWF0Y2hlcjxsb25nPiwgIC8vIE5PTElOVAorICAgICAgICBNYXRjaGVy
PHN0ZDo6c3RyaW5nPiA+CisgICAgICBtYXRjaGVycyhFcSgxKSwgRXEoJ2EnKSwgRXEodHJ1ZSks
IEVxKDJMKSwgRXEoImhpIikpOworICB0dXBsZTxpbnQsIGNoYXIsIGJvb2wsIGxvbmcsIHN0ZDo6
c3RyaW5nPiAgLy8gTk9MSU5UCisgICAgICB2YWx1ZXMxKDEsICdhJywgdHJ1ZSwgMkwsICJoaSIp
LCB2YWx1ZXMyKDEsICdhJywgdHJ1ZSwgMkwsICJoZWxsbyIpLAorICAgICAgdmFsdWVzMygyLCAn
YScsIHRydWUsIDJMLCAiaGkiKTsKKworICBFWFBFQ1RfVFJVRShUdXBsZU1hdGNoZXMobWF0Y2hl
cnMsIHZhbHVlczEpKTsKKyAgRVhQRUNUX0ZBTFNFKFR1cGxlTWF0Y2hlcyhtYXRjaGVycywgdmFs
dWVzMikpOworICBFWFBFQ1RfRkFMU0UoVHVwbGVNYXRjaGVzKG1hdGNoZXJzLCB2YWx1ZXMzKSk7
Cit9CisKKy8vIFRlc3RzIHRoYXQgQXNzZXJ0KHRydWUsIC4uLikgc3VjY2VlZHMuCitURVNUKEFz
c2VydFRlc3QsIFN1Y2NlZWRzT25UcnVlKSB7CisgIEFzc2VydCh0cnVlLCBfX0ZJTEVfXywgX19M
SU5FX18sICJUaGlzIHNob3VsZCBzdWNjZWVkLiIpOworICBBc3NlcnQodHJ1ZSwgX19GSUxFX18s
IF9fTElORV9fKTsgIC8vIFRoaXMgc2hvdWxkIHN1Y2NlZWQgdG9vLgorfQorCisvLyBUZXN0cyB0
aGF0IEFzc2VydChmYWxzZSwgLi4uKSBnZW5lcmF0ZXMgYSBmYXRhbCBmYWlsdXJlLgorVEVTVChB
c3NlcnRUZXN0LCBGYWlsc0ZhdGFsbHlPbkZhbHNlKSB7CisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQ
T1JURUQoeworICAgIEFzc2VydChmYWxzZSwgX19GSUxFX18sIF9fTElORV9fLCAiVGhpcyBzaG91
bGQgZmFpbC4iKTsKKyAgfSwgIiIpOworCisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoewor
ICAgIEFzc2VydChmYWxzZSwgX19GSUxFX18sIF9fTElORV9fKTsKKyAgfSwgIiIpOworfQorCisv
LyBUZXN0cyB0aGF0IEV4cGVjdCh0cnVlLCAuLi4pIHN1Y2NlZWRzLgorVEVTVChFeHBlY3RUZXN0
LCBTdWNjZWVkc09uVHJ1ZSkgeworICBFeHBlY3QodHJ1ZSwgX19GSUxFX18sIF9fTElORV9fLCAi
VGhpcyBzaG91bGQgc3VjY2VlZC4iKTsKKyAgRXhwZWN0KHRydWUsIF9fRklMRV9fLCBfX0xJTkVf
Xyk7ICAvLyBUaGlzIHNob3VsZCBzdWNjZWVkIHRvby4KK30KKworLy8gVGVzdHMgdGhhdCBFeHBl
Y3QoZmFsc2UsIC4uLikgZ2VuZXJhdGVzIGEgbm9uLWZhdGFsIGZhaWx1cmUuCitURVNUKEV4cGVj
dFRlc3QsIEZhaWxzTm9uZmF0YWxseU9uRmFsc2UpIHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoeyAgLy8gTk9MSU5UCisgICAgRXhwZWN0KGZhbHNlLCBfX0ZJTEVfXywgX19MSU5FX18sICJU
aGlzIHNob3VsZCBmYWlsLiIpOworICB9LCAiVGhpcyBzaG91bGQgZmFpbCIpOworCisgIEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEV4cGVjdChmYWxzZSwgX19GSUxF
X18sIF9fTElORV9fKTsKKyAgfSwgIkV4cGVjdGF0aW9uIGZhaWxlZCIpOworfQorCisvLyBUZXN0
cyBMb2dJc1Zpc2libGUoKS4KKworY2xhc3MgTG9nSXNWaXNpYmxlVGVzdCA6IHB1YmxpYyA6OnRl
c3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeworICAg
IG9yaWdpbmFsX3ZlcmJvc2VfID0gR01PQ0tfRkxBRyh2ZXJib3NlKTsKKyAgfQorCisgIHZpcnR1
YWwgdm9pZCBUZWFyRG93bigpIHsgR01PQ0tfRkxBRyh2ZXJib3NlKSA9IG9yaWdpbmFsX3ZlcmJv
c2VfOyB9CisKKyAgc3RkOjpzdHJpbmcgb3JpZ2luYWxfdmVyYm9zZV87Cit9OworCitURVNUX0Yo
TG9nSXNWaXNpYmxlVGVzdCwgQWx3YXlzUmV0dXJuc1RydWVJZlZlcmJvc2l0eUlzSW5mbykgewor
ICBHTU9DS19GTEFHKHZlcmJvc2UpID0ga0luZm9WZXJib3NpdHk7CisgIEVYUEVDVF9UUlVFKExv
Z0lzVmlzaWJsZShrSW5mbykpOworICBFWFBFQ1RfVFJVRShMb2dJc1Zpc2libGUoa1dhcm5pbmcp
KTsKK30KKworVEVTVF9GKExvZ0lzVmlzaWJsZVRlc3QsIEFsd2F5c1JldHVybnNGYWxzZUlmVmVy
Ym9zaXR5SXNFcnJvcikgeworICBHTU9DS19GTEFHKHZlcmJvc2UpID0ga0Vycm9yVmVyYm9zaXR5
OworICBFWFBFQ1RfRkFMU0UoTG9nSXNWaXNpYmxlKGtJbmZvKSk7CisgIEVYUEVDVF9GQUxTRShM
b2dJc1Zpc2libGUoa1dhcm5pbmcpKTsKK30KKworVEVTVF9GKExvZ0lzVmlzaWJsZVRlc3QsIFdv
cmtzV2hlblZlcmJvc2l0eUlzV2FybmluZykgeworICBHTU9DS19GTEFHKHZlcmJvc2UpID0ga1dh
cm5pbmdWZXJib3NpdHk7CisgIEVYUEVDVF9GQUxTRShMb2dJc1Zpc2libGUoa0luZm8pKTsKKyAg
RVhQRUNUX1RSVUUoTG9nSXNWaXNpYmxlKGtXYXJuaW5nKSk7Cit9CisKKyNpZiBHVEVTVF9IQVNf
U1RSRUFNX1JFRElSRUNUSU9OCisKKy8vIFRlc3RzIHRoZSBMb2coKSBmdW5jdGlvbi4KKworLy8g
VmVyaWZpZXMgdGhhdCBMb2coKSBiZWhhdmVzIGNvcnJlY3RseSBmb3IgdGhlIGdpdmVuIHZlcmJv
c2l0eSBsZXZlbAorLy8gYW5kIGxvZyBzZXZlcml0eS4KK3ZvaWQgVGVzdExvZ1dpdGhTZXZlcml0
eShjb25zdCBzdGQ6OnN0cmluZyYgdmVyYm9zaXR5LCBMb2dTZXZlcml0eSBzZXZlcml0eSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIHNob3VsZF9wcmludCkgeworICBjb25zdCBzdGQ6
OnN0cmluZyBvbGRfZmxhZyA9IEdNT0NLX0ZMQUcodmVyYm9zZSk7CisgIEdNT0NLX0ZMQUcodmVy
Ym9zZSkgPSB2ZXJib3NpdHk7CisgIENhcHR1cmVTdGRvdXQoKTsKKyAgTG9nKHNldmVyaXR5LCAi
VGVzdCBsb2cuXG4iLCAwKTsKKyAgaWYgKHNob3VsZF9wcmludCkgeworICAgIEVYUEVDVF9USEFU
KEdldENhcHR1cmVkU3Rkb3V0KCkuY19zdHIoKSwKKyAgICAgICAgICAgICAgICBDb250YWluc1Jl
Z2V4KAorICAgICAgICAgICAgICAgICAgICBzZXZlcml0eSA9PSBrV2FybmluZyA/CisgICAgICAg
ICAgICAgICAgICAgICJeXG5HTU9DSyBXQVJOSU5HOlxuVGVzdCBsb2dcXC5cblN0YWNrIHRyYWNl
OlxuIiA6CisgICAgICAgICAgICAgICAgICAgICJeXG5UZXN0IGxvZ1xcLlxuU3RhY2sgdHJhY2U6
XG4iKSk7CisgIH0gZWxzZSB7CisgICAgRVhQRUNUX1NUUkVRKCIiLCBHZXRDYXB0dXJlZFN0ZG91
dCgpLmNfc3RyKCkpOworICB9CisgIEdNT0NLX0ZMQUcodmVyYm9zZSkgPSBvbGRfZmxhZzsKK30K
KworLy8gVGVzdHMgdGhhdCB3aGVuIHRoZSBzdGFja19mcmFtZXNfdG9fc2tpcCBwYXJhbWV0ZXIg
aXMgbmVnYXRpdmUsCisvLyBMb2coKSBkb2Vzbid0IGluY2x1ZGUgdGhlIHN0YWNrIHRyYWNlIGlu
IHRoZSBvdXRwdXQuCitURVNUKExvZ1Rlc3QsIE5vU3RhY2tUcmFjZVdoZW5TdGFja0ZyYW1lc1Rv
U2tpcElzTmVnYXRpdmUpIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgc2F2ZWRfZmxhZyA9IEdNT0NL
X0ZMQUcodmVyYm9zZSk7CisgIEdNT0NLX0ZMQUcodmVyYm9zZSkgPSBrSW5mb1ZlcmJvc2l0eTsK
KyAgQ2FwdHVyZVN0ZG91dCgpOworICBMb2coa0luZm8sICJUZXN0IGxvZy5cbiIsIC0xKTsKKyAg
RVhQRUNUX1NUUkVRKCJcblRlc3QgbG9nLlxuIiwgR2V0Q2FwdHVyZWRTdGRvdXQoKS5jX3N0cigp
KTsKKyAgR01PQ0tfRkxBRyh2ZXJib3NlKSA9IHNhdmVkX2ZsYWc7Cit9CisKK3N0cnVjdCBNb2Nr
U3RhY2tUcmFjZUdldHRlciA6IHRlc3Rpbmc6OmludGVybmFsOjpPc1N0YWNrVHJhY2VHZXR0ZXJJ
bnRlcmZhY2UgeworICB2aXJ0dWFsIHN0ZDo6c3RyaW5nIEN1cnJlbnRTdGFja1RyYWNlKGludCBt
YXhfZGVwdGgsIGludCBza2lwX2NvdW50KSB7CisgICAgcmV0dXJuICh0ZXN0aW5nOjpNZXNzYWdl
KCkgPDwgbWF4X2RlcHRoIDw8ICI6OiIgPDwgc2tpcF9jb3VudCA8PCAiXG4iKQorICAgICAgICAu
R2V0U3RyaW5nKCk7CisgIH0KKyAgdmlydHVhbCB2b2lkIFVwb25MZWF2aW5nR1Rlc3QoKSB7fQor
fTsKKworLy8gVGVzdHMgdGhhdCBpbiBvcHQgbW9kZSwgYSBwb3NpdGl2ZSBzdGFja19mcmFtZXNf
dG9fc2tpcCBhcmd1bWVudCBpcworLy8gdHJlYXRlZCBhcyAwLgorVEVTVChMb2dUZXN0LCBOb1Nr
aXBwaW5nU3RhY2tGcmFtZUluT3B0TW9kZSkgeworICBNb2NrU3RhY2tUcmFjZUdldHRlciogbW9j
a19vc19zdGFja190cmFjZV9nZXR0ZXIgPSBuZXcgTW9ja1N0YWNrVHJhY2VHZXR0ZXI7CisgIEdl
dFVuaXRUZXN0SW1wbCgpLT5zZXRfb3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKG1vY2tfb3Nfc3RhY2tf
dHJhY2VfZ2V0dGVyKTsKKworICBDYXB0dXJlU3Rkb3V0KCk7CisgIExvZyhrV2FybmluZywgIlRl
c3QgbG9nLlxuIiwgMTAwKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgbG9nID0gR2V0Q2FwdHVyZWRT
dGRvdXQoKTsKKworICBzdGQ6OnN0cmluZyBleHBlY3RlZF90cmFjZSA9CisgICAgICAodGVzdGlu
Zzo6TWVzc2FnZSgpIDw8IEdURVNUX0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpIDw8ICI6OiIpLkdl
dFN0cmluZygpOworICBzdGQ6OnN0cmluZyBleHBlY3RlZF9tZXNzYWdlID0KKyAgICAgICJcbkdN
T0NLIFdBUk5JTkc6XG4iCisgICAgICAiVGVzdCBsb2cuXG4iCisgICAgICAiU3RhY2sgdHJhY2U6
XG4iICsKKyAgICAgIGV4cGVjdGVkX3RyYWNlOworICBFWFBFQ1RfVEhBVChsb2csIEhhc1N1YnN0
cihleHBlY3RlZF9tZXNzYWdlKSk7CisgIGludCBza2lwX2NvdW50ID0gYXRvaShsb2cuc3Vic3Ry
KGV4cGVjdGVkX21lc3NhZ2Uuc2l6ZSgpKS5jX3N0cigpKTsKKworIyBpZiBkZWZpbmVkKE5ERUJV
RykKKyAgLy8gSW4gb3B0IG1vZGUsIG5vIHN0YWNrIGZyYW1lIHNob3VsZCBiZSBza2lwcGVkLgor
ICBjb25zdCBpbnQgZXhwZWN0ZWRfc2tpcF9jb3VudCA9IDA7CisjIGVsc2UKKyAgLy8gSW4gZGJn
IG1vZGUsIHRoZSBzdGFjayBmcmFtZXMgc2hvdWxkIGJlIHNraXBwZWQuCisgIGNvbnN0IGludCBl
eHBlY3RlZF9za2lwX2NvdW50ID0gMTAwOworIyBlbmRpZgorCisgIC8vIE5vdGUgdGhhdCBlYWNo
IGlubmVyIGltcGxlbWVudGF0aW9uIGxheWVyIHdpbGwgKzEgdGhlIG51bWJlciB0byByZW1vdmUK
KyAgLy8gaXRzZWxmIGZyb20gdGhlIHRyYWNlLiBUaGlzIG1lYW5zIHRoYXQgdGhlIHZhbHVlIGlz
IGEgbGl0dGxlIGhpZ2hlciB0aGFuCisgIC8vIGV4cGVjdGVkLCBidXQgY2xvc2UgZW5vdWdoLgor
ICBFWFBFQ1RfVEhBVChza2lwX2NvdW50LAorICAgICAgICAgICAgICBBbGxPZihHZShleHBlY3Rl
ZF9za2lwX2NvdW50KSwgTGUoZXhwZWN0ZWRfc2tpcF9jb3VudCArIDEwKSkpOworCisgIC8vIFJl
c3RvcmVzIHRoZSBkZWZhdWx0IE9TIHN0YWNrIHRyYWNlIGdldHRlci4KKyAgR2V0VW5pdFRlc3RJ
bXBsKCktPnNldF9vc19zdGFja190cmFjZV9nZXR0ZXIoTlVMTCk7Cit9CisKKy8vIFRlc3RzIHRo
YXQgYWxsIGxvZ3MgYXJlIHByaW50ZWQgd2hlbiB0aGUgdmFsdWUgb2YgdGhlCisvLyAtLWdtb2Nr
X3ZlcmJvc2UgZmxhZyBpcyAiaW5mbyIuCitURVNUKExvZ1Rlc3QsIEFsbExvZ3NBcmVQcmludGVk
V2hlblZlcmJvc2l0eUlzSW5mbykgeworICBUZXN0TG9nV2l0aFNldmVyaXR5KGtJbmZvVmVyYm9z
aXR5LCBrSW5mbywgdHJ1ZSk7CisgIFRlc3RMb2dXaXRoU2V2ZXJpdHkoa0luZm9WZXJib3NpdHks
IGtXYXJuaW5nLCB0cnVlKTsKK30KKworLy8gVGVzdHMgdGhhdCBvbmx5IHdhcm5pbmdzIGFyZSBw
cmludGVkIHdoZW4gdGhlIHZhbHVlIG9mIHRoZQorLy8gLS1nbW9ja192ZXJib3NlIGZsYWcgaXMg
Indhcm5pbmciLgorVEVTVChMb2dUZXN0LCBPbmx5V2FybmluZ3NBcmVQcmludGVkV2hlblZlcmJv
c2l0eUlzV2FybmluZykgeworICBUZXN0TG9nV2l0aFNldmVyaXR5KGtXYXJuaW5nVmVyYm9zaXR5
LCBrSW5mbywgZmFsc2UpOworICBUZXN0TG9nV2l0aFNldmVyaXR5KGtXYXJuaW5nVmVyYm9zaXR5
LCBrV2FybmluZywgdHJ1ZSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgbm8gbG9ncyBhcmUgcHJpbnRl
ZCB3aGVuIHRoZSB2YWx1ZSBvZiB0aGUKKy8vIC0tZ21vY2tfdmVyYm9zZSBmbGFnIGlzICJlcnJv
ciIuCitURVNUKExvZ1Rlc3QsIE5vTG9nc0FyZVByaW50ZWRXaGVuVmVyYm9zaXR5SXNFcnJvcikg
eworICBUZXN0TG9nV2l0aFNldmVyaXR5KGtFcnJvclZlcmJvc2l0eSwga0luZm8sIGZhbHNlKTsK
KyAgVGVzdExvZ1dpdGhTZXZlcml0eShrRXJyb3JWZXJib3NpdHksIGtXYXJuaW5nLCBmYWxzZSk7
Cit9CisKKy8vIFRlc3RzIHRoYXQgb25seSB3YXJuaW5ncyBhcmUgcHJpbnRlZCB3aGVuIHRoZSB2
YWx1ZSBvZiB0aGUKKy8vIC0tZ21vY2tfdmVyYm9zZSBmbGFnIGlzIGludmFsaWQuCitURVNUKExv
Z1Rlc3QsIE9ubHlXYXJuaW5nc0FyZVByaW50ZWRXaGVuVmVyYm9zaXR5SXNJbnZhbGlkKSB7Cisg
IFRlc3RMb2dXaXRoU2V2ZXJpdHkoImludmFsaWQiLCBrSW5mbywgZmFsc2UpOworICBUZXN0TG9n
V2l0aFNldmVyaXR5KCJpbnZhbGlkIiwga1dhcm5pbmcsIHRydWUpOworfQorCisjZW5kaWYgIC8v
IEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KKworVEVTVChUeXBlVHJhaXRzVGVzdCwgdHJ1
ZV90eXBlKSB7CisgIEVYUEVDVF9UUlVFKHRydWVfdHlwZTo6dmFsdWUpOworfQorCitURVNUKFR5
cGVUcmFpdHNUZXN0LCBmYWxzZV90eXBlKSB7CisgIEVYUEVDVF9GQUxTRShmYWxzZV90eXBlOjp2
YWx1ZSk7Cit9CisKK1RFU1QoVHlwZVRyYWl0c1Rlc3QsIGlzX3JlZmVyZW5jZSkgeworICBFWFBF
Q1RfRkFMU0UoaXNfcmVmZXJlbmNlPGludD46OnZhbHVlKTsKKyAgRVhQRUNUX0ZBTFNFKGlzX3Jl
ZmVyZW5jZTxjaGFyKj46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoaXNfcmVmZXJlbmNlPGNvbnN0
IGludCY+Ojp2YWx1ZSk7Cit9CisKK1RFU1QoVHlwZVRyYWl0c1Rlc3QsIGlzX3BvaW50ZXIpIHsK
KyAgRVhQRUNUX0ZBTFNFKGlzX3BvaW50ZXI8aW50Pjo6dmFsdWUpOworICBFWFBFQ1RfRkFMU0Uo
aXNfcG9pbnRlcjxjaGFyJj46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoaXNfcG9pbnRlcjxjb25z
dCBpbnQqPjo6dmFsdWUpOworfQorCitURVNUKFR5cGVUcmFpdHNUZXN0LCB0eXBlX2VxdWFscykg
eworICBFWFBFQ1RfRkFMU0UoKHR5cGVfZXF1YWxzPGludCwgY29uc3QgaW50Pjo6dmFsdWUpKTsK
KyAgRVhQRUNUX0ZBTFNFKCh0eXBlX2VxdWFsczxpbnQsIGludCY+Ojp2YWx1ZSkpOworICBFWFBF
Q1RfRkFMU0UoKHR5cGVfZXF1YWxzPGludCwgZG91YmxlPjo6dmFsdWUpKTsKKyAgRVhQRUNUX1RS
VUUoKHR5cGVfZXF1YWxzPGNoYXIsIGNoYXI+Ojp2YWx1ZSkpOworfQorCitURVNUKFR5cGVUcmFp
dHNUZXN0LCByZW1vdmVfcmVmZXJlbmNlKSB7CisgIEVYUEVDVF9UUlVFKCh0eXBlX2VxdWFsczxj
aGFyLCByZW1vdmVfcmVmZXJlbmNlPGNoYXImPjo6dHlwZT46OnZhbHVlKSk7CisgIEVYUEVDVF9U
UlVFKCh0eXBlX2VxdWFsczxjb25zdCBpbnQsCisgICAgICAgICAgICAgICByZW1vdmVfcmVmZXJl
bmNlPGNvbnN0IGludCY+Ojp0eXBlPjo6dmFsdWUpKTsKKyAgRVhQRUNUX1RSVUUoKHR5cGVfZXF1
YWxzPGludCwgcmVtb3ZlX3JlZmVyZW5jZTxpbnQ+Ojp0eXBlPjo6dmFsdWUpKTsKKyAgRVhQRUNU
X1RSVUUoKHR5cGVfZXF1YWxzPGRvdWJsZSosIHJlbW92ZV9yZWZlcmVuY2U8ZG91YmxlKj46OnR5
cGU+Ojp2YWx1ZSkpOworfQorCisjaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgorCisv
LyBWZXJpZmllcyB0aGF0IExvZygpIGJlaGF2ZXMgY29ycmVjdGx5IGZvciB0aGUgZ2l2ZW4gdmVy
Ym9zaXR5IGxldmVsCisvLyBhbmQgbG9nIHNldmVyaXR5Lgorc3RkOjpzdHJpbmcgR3JhYk91dHB1
dCh2b2lkKCpsb2dnZXIpKCksIGNvbnN0IGNoYXIqIHZlcmJvc2l0eSkgeworICBjb25zdCBzdGQ6
OnN0cmluZyBzYXZlZF9mbGFnID0gR01PQ0tfRkxBRyh2ZXJib3NlKTsKKyAgR01PQ0tfRkxBRyh2
ZXJib3NlKSA9IHZlcmJvc2l0eTsKKyAgQ2FwdHVyZVN0ZG91dCgpOworICBsb2dnZXIoKTsKKyAg
R01PQ0tfRkxBRyh2ZXJib3NlKSA9IHNhdmVkX2ZsYWc7CisgIHJldHVybiBHZXRDYXB0dXJlZFN0
ZG91dCgpOworfQorCitjbGFzcyBEdW1teU1vY2sgeworIHB1YmxpYzoKKyAgTU9DS19NRVRIT0Qw
KFRlc3RNZXRob2QsIHZvaWQoKSk7CisgIE1PQ0tfTUVUSE9EMShUZXN0TWV0aG9kQXJnLCB2b2lk
KGludCBkdW1teSkpOworfTsKKwordm9pZCBFeHBlY3RDYWxsTG9nZ2VyKCkgeworICBEdW1teU1v
Y2sgbW9jazsKKyAgRVhQRUNUX0NBTEwobW9jaywgVGVzdE1ldGhvZCgpKTsKKyAgbW9jay5UZXN0
TWV0aG9kKCk7Cit9OworCisvLyBWZXJpZmllcyB0aGF0IEVYUEVDVF9DQUxMIGxvZ3MgaWYgdGhl
IC0tZ21vY2tfdmVyYm9zZSBmbGFnIGlzIHNldCB0byAiaW5mbyIuCitURVNUKEV4cGVjdENhbGxU
ZXN0LCBMb2dzV2hlblZlcmJvc2l0eUlzSW5mbykgeworICBFWFBFQ1RfVEhBVChzdGQ6OnN0cmlu
ZyhHcmFiT3V0cHV0KEV4cGVjdENhbGxMb2dnZXIsIGtJbmZvVmVyYm9zaXR5KSksCisgICAgICAg
ICAgICAgIEhhc1N1YnN0cigiRVhQRUNUX0NBTEwobW9jaywgVGVzdE1ldGhvZCgpKSIpKTsKK30K
KworLy8gVmVyaWZpZXMgdGhhdCBFWFBFQ1RfQ0FMTCBkb2Vzbid0IGxvZworLy8gaWYgdGhlIC0t
Z21vY2tfdmVyYm9zZSBmbGFnIGlzIHNldCB0byAid2FybmluZyIuCitURVNUKEV4cGVjdENhbGxU
ZXN0LCBEb2VzTm90TG9nV2hlblZlcmJvc2l0eUlzV2FybmluZykgeworICBFWFBFQ1RfU1RSRVEo
IiIsIEdyYWJPdXRwdXQoRXhwZWN0Q2FsbExvZ2dlciwga1dhcm5pbmdWZXJib3NpdHkpLmNfc3Ry
KCkpOworfQorCisvLyBWZXJpZmllcyB0aGF0IEVYUEVDVF9DQUxMIGRvZXNuJ3QgbG9nCisvLyBp
ZiB0aGUgLS1nbW9ja192ZXJib3NlIGZsYWcgaXMgc2V0IHRvICJlcnJvciIuCitURVNUKEV4cGVj
dENhbGxUZXN0LCAgRG9lc05vdExvZ1doZW5WZXJib3NpdHlJc0Vycm9yKSB7CisgIEVYUEVDVF9T
VFJFUSgiIiwgR3JhYk91dHB1dChFeHBlY3RDYWxsTG9nZ2VyLCBrRXJyb3JWZXJib3NpdHkpLmNf
c3RyKCkpOworfQorCit2b2lkIE9uQ2FsbExvZ2dlcigpIHsKKyAgRHVtbXlNb2NrIG1vY2s7Cisg
IE9OX0NBTEwobW9jaywgVGVzdE1ldGhvZCgpKTsKK307CisKKy8vIFZlcmlmaWVzIHRoYXQgT05f
Q0FMTCBsb2dzIGlmIHRoZSAtLWdtb2NrX3ZlcmJvc2UgZmxhZyBpcyBzZXQgdG8gImluZm8iLgor
VEVTVChPbkNhbGxUZXN0LCBMb2dzV2hlblZlcmJvc2l0eUlzSW5mbykgeworICBFWFBFQ1RfVEhB
VChzdGQ6OnN0cmluZyhHcmFiT3V0cHV0KE9uQ2FsbExvZ2dlciwga0luZm9WZXJib3NpdHkpKSwK
KyAgICAgICAgICAgICAgSGFzU3Vic3RyKCJPTl9DQUxMKG1vY2ssIFRlc3RNZXRob2QoKSkiKSk7
Cit9CisKKy8vIFZlcmlmaWVzIHRoYXQgT05fQ0FMTCBkb2Vzbid0IGxvZworLy8gaWYgdGhlIC0t
Z21vY2tfdmVyYm9zZSBmbGFnIGlzIHNldCB0byAid2FybmluZyIuCitURVNUKE9uQ2FsbFRlc3Qs
IERvZXNOb3RMb2dXaGVuVmVyYm9zaXR5SXNXYXJuaW5nKSB7CisgIEVYUEVDVF9TVFJFUSgiIiwg
R3JhYk91dHB1dChPbkNhbGxMb2dnZXIsIGtXYXJuaW5nVmVyYm9zaXR5KS5jX3N0cigpKTsKK30K
KworLy8gVmVyaWZpZXMgdGhhdCBPTl9DQUxMIGRvZXNuJ3QgbG9nIGlmCisvLyB0aGUgLS1nbW9j
a192ZXJib3NlIGZsYWcgaXMgc2V0IHRvICJlcnJvciIuCitURVNUKE9uQ2FsbFRlc3QsIERvZXNO
b3RMb2dXaGVuVmVyYm9zaXR5SXNFcnJvcikgeworICBFWFBFQ1RfU1RSRVEoIiIsIEdyYWJPdXRw
dXQoT25DYWxsTG9nZ2VyLCBrRXJyb3JWZXJib3NpdHkpLmNfc3RyKCkpOworfQorCit2b2lkIE9u
Q2FsbEFueUFyZ3VtZW50TG9nZ2VyKCkgeworICBEdW1teU1vY2sgbW9jazsKKyAgT05fQ0FMTCht
b2NrLCBUZXN0TWV0aG9kQXJnKF8pKTsKK30KKworLy8gVmVyaWZpZXMgdGhhdCBPTl9DQUxMIHBy
aW50cyBwcm92aWRlZCBfIGFyZ3VtZW50LgorVEVTVChPbkNhbGxUZXN0LCBMb2dzQW55dGhpbmdB
cmd1bWVudCkgeworICBFWFBFQ1RfVEhBVChzdGQ6OnN0cmluZyhHcmFiT3V0cHV0KE9uQ2FsbEFu
eUFyZ3VtZW50TG9nZ2VyLCBrSW5mb1ZlcmJvc2l0eSkpLAorICAgICAgICAgICAgICBIYXNTdWJz
dHIoIk9OX0NBTEwobW9jaywgVGVzdE1ldGhvZEFyZyhfKSIpKTsKK30KKworI2VuZGlmICAvLyBH
VEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OCisKKy8vIFRlc3RzIFN0bENvbnRhaW5lclZpZXcu
CisKK1RFU1QoU3RsQ29udGFpbmVyVmlld1Rlc3QsIFdvcmtzRm9yU3RsQ29udGFpbmVyKSB7Cisg
IFN0YXRpY0Fzc2VydFR5cGVFcTxzdGQ6OnZlY3RvcjxpbnQ+LAorICAgICAgU3RsQ29udGFpbmVy
VmlldzxzdGQ6OnZlY3RvcjxpbnQ+ID46OnR5cGU+KCk7CisgIFN0YXRpY0Fzc2VydFR5cGVFcTxj
b25zdCBzdGQ6OnZlY3Rvcjxkb3VibGU+JiwKKyAgICAgIFN0bENvbnRhaW5lclZpZXc8c3RkOjp2
ZWN0b3I8ZG91YmxlPiA+Ojpjb25zdF9yZWZlcmVuY2U+KCk7CisKKyAgdHlwZWRlZiBzdGQ6OnZl
Y3RvcjxjaGFyPiBDaGFyczsKKyAgQ2hhcnMgdjE7CisgIGNvbnN0IENoYXJzJiB2MihTdGxDb250
YWluZXJWaWV3PENoYXJzPjo6Q29uc3RSZWZlcmVuY2UodjEpKTsKKyAgRVhQRUNUX0VRKCZ2MSwg
JnYyKTsKKworICB2MS5wdXNoX2JhY2soJ2EnKTsKKyAgQ2hhcnMgdjMgPSBTdGxDb250YWluZXJW
aWV3PENoYXJzPjo6Q29weSh2MSk7CisgIEVYUEVDVF9USEFUKHYzLCBFcSh2MykpOworfQorCitU
RVNUKFN0bENvbnRhaW5lclZpZXdUZXN0LCBXb3Jrc0ZvclN0YXRpY05hdGl2ZUFycmF5KSB7Cisg
IFN0YXRpY0Fzc2VydFR5cGVFcTxOYXRpdmVBcnJheTxpbnQ+LAorICAgICAgU3RsQ29udGFpbmVy
VmlldzxpbnRbM10+Ojp0eXBlPigpOworICBTdGF0aWNBc3NlcnRUeXBlRXE8TmF0aXZlQXJyYXk8
ZG91YmxlPiwKKyAgICAgIFN0bENvbnRhaW5lclZpZXc8Y29uc3QgZG91YmxlWzRdPjo6dHlwZT4o
KTsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPE5hdGl2ZUFycmF5PGNoYXJbM10+LAorICAgICAgU3Rs
Q29udGFpbmVyVmlldzxjb25zdCBjaGFyWzJdWzNdPjo6dHlwZT4oKTsKKworICBTdGF0aWNBc3Nl
cnRUeXBlRXE8Y29uc3QgTmF0aXZlQXJyYXk8aW50PiwKKyAgICAgIFN0bENvbnRhaW5lclZpZXc8
aW50WzJdPjo6Y29uc3RfcmVmZXJlbmNlPigpOworCisgIGludCBhMVszXSA9IHsgMCwgMSwgMiB9
OworICBOYXRpdmVBcnJheTxpbnQ+IGEyID0gU3RsQ29udGFpbmVyVmlldzxpbnRbM10+OjpDb25z
dFJlZmVyZW5jZShhMSk7CisgIEVYUEVDVF9FUSgzVSwgYTIuc2l6ZSgpKTsKKyAgRVhQRUNUX0VR
KGExLCBhMi5iZWdpbigpKTsKKworICBjb25zdCBOYXRpdmVBcnJheTxpbnQ+IGEzID0gU3RsQ29u
dGFpbmVyVmlldzxpbnRbM10+OjpDb3B5KGExKTsKKyAgQVNTRVJUX0VRKDNVLCBhMy5zaXplKCkp
OworICBFWFBFQ1RfRVEoMCwgYTMuYmVnaW4oKVswXSk7CisgIEVYUEVDVF9FUSgxLCBhMy5iZWdp
bigpWzFdKTsKKyAgRVhQRUNUX0VRKDIsIGEzLmJlZ2luKClbMl0pOworCisgIC8vIE1ha2VzIHN1
cmUgYTEgYW5kIGEzIGFyZW4ndCBhbGlhc2VzLgorICBhMVswXSA9IDM7CisgIEVYUEVDVF9FUSgw
LCBhMy5iZWdpbigpWzBdKTsKK30KKworVEVTVChTdGxDb250YWluZXJWaWV3VGVzdCwgV29ya3NG
b3JEeW5hbWljTmF0aXZlQXJyYXkpIHsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPE5hdGl2ZUFycmF5
PGludD4sCisgICAgICBTdGxDb250YWluZXJWaWV3PHR1cGxlPGNvbnN0IGludCosIHNpemVfdD4g
Pjo6dHlwZT4oKTsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPE5hdGl2ZUFycmF5PGRvdWJsZT4sCisg
ICAgICBTdGxDb250YWluZXJWaWV3PHR1cGxlPGxpbmtlZF9wdHI8ZG91YmxlPiwgaW50PiA+Ojp0
eXBlPigpOworCisgIFN0YXRpY0Fzc2VydFR5cGVFcTxjb25zdCBOYXRpdmVBcnJheTxpbnQ+LAor
ICAgICAgU3RsQ29udGFpbmVyVmlldzx0dXBsZTxjb25zdCBpbnQqLCBpbnQ+ID46OmNvbnN0X3Jl
ZmVyZW5jZT4oKTsKKworICBpbnQgYTFbM10gPSB7IDAsIDEsIDIgfTsKKyAgY29uc3QgaW50KiBj
b25zdCBwMSA9IGExOworICBOYXRpdmVBcnJheTxpbnQ+IGEyID0gU3RsQ29udGFpbmVyVmlldzx0
dXBsZTxjb25zdCBpbnQqLCBpbnQ+ID46OgorICAgICAgQ29uc3RSZWZlcmVuY2UobWFrZV90dXBs
ZShwMSwgMykpOworICBFWFBFQ1RfRVEoM1UsIGEyLnNpemUoKSk7CisgIEVYUEVDVF9FUShhMSwg
YTIuYmVnaW4oKSk7CisKKyAgY29uc3QgTmF0aXZlQXJyYXk8aW50PiBhMyA9IFN0bENvbnRhaW5l
clZpZXc8dHVwbGU8aW50Kiwgc2l6ZV90PiA+OjoKKyAgICAgIENvcHkobWFrZV90dXBsZShzdGF0
aWNfY2FzdDxpbnQqPihhMSksIDMpKTsKKyAgQVNTRVJUX0VRKDNVLCBhMy5zaXplKCkpOworICBF
WFBFQ1RfRVEoMCwgYTMuYmVnaW4oKVswXSk7CisgIEVYUEVDVF9FUSgxLCBhMy5iZWdpbigpWzFd
KTsKKyAgRVhQRUNUX0VRKDIsIGEzLmJlZ2luKClbMl0pOworCisgIC8vIE1ha2VzIHN1cmUgYTEg
YW5kIGEzIGFyZW4ndCBhbGlhc2VzLgorICBhMVswXSA9IDM7CisgIEVYUEVDVF9FUSgwLCBhMy5i
ZWdpbigpWzBdKTsKK30KKworfSAgLy8gbmFtZXNwYWNlCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJu
YWwKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0
L2dtb2NrLW1hdGNoZXJzX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2NrLW1hdGNoZXJz
X3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjVhYjdjODE4ZGFkOTY0MDI1NjZmY2EwMzQzOTk5ZmE3ZDhl
YjNhMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2stbWF0Y2hlcnNf
dGVzdC5jYwpAQCAtMCwwICsxLDU2NTggQEAKKy8vIENvcHlyaWdodCAyMDA3LCBHb29nbGUgSW5j
LgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8g
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKy8vCisvLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBX
YW4pCisKKy8vIEdvb2dsZSBNb2NrIC0gYSBmcmFtZXdvcmsgZm9yIHdyaXRpbmcgQysrIG1vY2sg
Y2xhc3Nlcy4KKy8vCisvLyBUaGlzIGZpbGUgdGVzdHMgc29tZSBjb21tb25seSB1c2VkIGFyZ3Vt
ZW50IG1hdGNoZXJzLgorCisjaW5jbHVkZSAiZ21vY2svZ21vY2stbWF0Y2hlcnMuaCIKKyNpbmNs
dWRlICJnbW9jay9nbW9jay1tb3JlLW1hdGNoZXJzLmgiCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4K
KyNpbmNsdWRlIDx0aW1lLmg+CisjaW5jbHVkZSA8ZGVxdWU+CisjaW5jbHVkZSA8ZnVuY3Rpb25h
bD4KKyNpbmNsdWRlIDxpb3N0cmVhbT4KKyNpbmNsdWRlIDxpdGVyYXRvcj4KKyNpbmNsdWRlIDxs
aW1pdHM+CisjaW5jbHVkZSA8bGlzdD4KKyNpbmNsdWRlIDxtYXA+CisjaW5jbHVkZSA8c2V0Pgor
I2luY2x1ZGUgPHNzdHJlYW0+CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHV0aWxpdHk+
CisjaW5jbHVkZSA8dmVjdG9yPgorI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCisjaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1zcGkuaCIKKworI2lmIEdURVNU
X0hBU19TVERfRk9SV0FSRF9MSVNUXworIyBpbmNsdWRlIDxmb3J3YXJkX2xpc3Q+ICAvLyBOT0xJ
TlQKKyNlbmRpZgorCituYW1lc3BhY2UgdGVzdGluZyB7CisKK25hbWVzcGFjZSBpbnRlcm5hbCB7
CitHVEVTVF9BUElfIHN0cmluZyBKb2luQXNUdXBsZShjb25zdCBTdHJpbmdzJiBmaWVsZHMpOwor
fSAgLy8gbmFtZXNwYWNlIGludGVybmFsCisKK25hbWVzcGFjZSBnbW9ja19tYXRjaGVyc190ZXN0
IHsKKwordXNpbmcgc3RkOjpncmVhdGVyOwordXNpbmcgc3RkOjpsZXNzOwordXNpbmcgc3RkOjps
aXN0OwordXNpbmcgc3RkOjptYWtlX3BhaXI7Cit1c2luZyBzdGQ6Om1hcDsKK3VzaW5nIHN0ZDo6
bXVsdGltYXA7Cit1c2luZyBzdGQ6Om11bHRpc2V0OwordXNpbmcgc3RkOjpvc3RyZWFtOwordXNp
bmcgc3RkOjpwYWlyOwordXNpbmcgc3RkOjpzZXQ7Cit1c2luZyBzdGQ6OnN0cmluZ3N0cmVhbTsK
K3VzaW5nIHN0ZDo6dmVjdG9yOwordXNpbmcgdGVzdGluZzo6QTsKK3VzaW5nIHRlc3Rpbmc6OkFs
bEFyZ3M7Cit1c2luZyB0ZXN0aW5nOjpBbGxPZjsKK3VzaW5nIHRlc3Rpbmc6OkFuOwordXNpbmcg
dGVzdGluZzo6QW55T2Y7Cit1c2luZyB0ZXN0aW5nOjpCeVJlZjsKK3VzaW5nIHRlc3Rpbmc6OkNv
bnRhaW5zUmVnZXg7Cit1c2luZyB0ZXN0aW5nOjpEb3VibGVFcTsKK3VzaW5nIHRlc3Rpbmc6OkRv
dWJsZU5lYXI7Cit1c2luZyB0ZXN0aW5nOjpFbmRzV2l0aDsKK3VzaW5nIHRlc3Rpbmc6OkVxOwor
dXNpbmcgdGVzdGluZzo6RXhwbGFpbk1hdGNoUmVzdWx0OwordXNpbmcgdGVzdGluZzo6RmllbGQ7
Cit1c2luZyB0ZXN0aW5nOjpGbG9hdEVxOwordXNpbmcgdGVzdGluZzo6RmxvYXROZWFyOwordXNp
bmcgdGVzdGluZzo6R2U7Cit1c2luZyB0ZXN0aW5nOjpHdDsKK3VzaW5nIHRlc3Rpbmc6Okhhc1N1
YnN0cjsKK3VzaW5nIHRlc3Rpbmc6OklzRW1wdHk7Cit1c2luZyB0ZXN0aW5nOjpJc051bGw7Cit1
c2luZyB0ZXN0aW5nOjpLZXk7Cit1c2luZyB0ZXN0aW5nOjpMZTsKK3VzaW5nIHRlc3Rpbmc6Okx0
OwordXNpbmcgdGVzdGluZzo6TWFrZU1hdGNoZXI7Cit1c2luZyB0ZXN0aW5nOjpNYWtlUG9seW1v
cnBoaWNNYXRjaGVyOwordXNpbmcgdGVzdGluZzo6TWF0Y2hSZXN1bHRMaXN0ZW5lcjsKK3VzaW5n
IHRlc3Rpbmc6Ok1hdGNoZXI7Cit1c2luZyB0ZXN0aW5nOjpNYXRjaGVyQ2FzdDsKK3VzaW5nIHRl
c3Rpbmc6Ok1hdGNoZXJJbnRlcmZhY2U7Cit1c2luZyB0ZXN0aW5nOjpNYXRjaGVzOwordXNpbmcg
dGVzdGluZzo6TWF0Y2hlc1JlZ2V4OwordXNpbmcgdGVzdGluZzo6TmFuU2Vuc2l0aXZlRG91Ymxl
RXE7Cit1c2luZyB0ZXN0aW5nOjpOYW5TZW5zaXRpdmVEb3VibGVOZWFyOwordXNpbmcgdGVzdGlu
Zzo6TmFuU2Vuc2l0aXZlRmxvYXRFcTsKK3VzaW5nIHRlc3Rpbmc6Ok5hblNlbnNpdGl2ZUZsb2F0
TmVhcjsKK3VzaW5nIHRlc3Rpbmc6Ok5lOwordXNpbmcgdGVzdGluZzo6Tm90OwordXNpbmcgdGVz
dGluZzo6Tm90TnVsbDsKK3VzaW5nIHRlc3Rpbmc6OlBhaXI7Cit1c2luZyB0ZXN0aW5nOjpQb2lu
dGVlOwordXNpbmcgdGVzdGluZzo6UG9pbnR3aXNlOwordXNpbmcgdGVzdGluZzo6UG9seW1vcnBo
aWNNYXRjaGVyOwordXNpbmcgdGVzdGluZzo6UHJvcGVydHk7Cit1c2luZyB0ZXN0aW5nOjpSZWY7
Cit1c2luZyB0ZXN0aW5nOjpSZXN1bHRPZjsKK3VzaW5nIHRlc3Rpbmc6OlNpemVJczsKK3VzaW5n
IHRlc3Rpbmc6OlN0YXJ0c1dpdGg7Cit1c2luZyB0ZXN0aW5nOjpTdHJDYXNlRXE7Cit1c2luZyB0
ZXN0aW5nOjpTdHJDYXNlTmU7Cit1c2luZyB0ZXN0aW5nOjpTdHJFcTsKK3VzaW5nIHRlc3Rpbmc6
OlN0ck5lOwordXNpbmcgdGVzdGluZzo6U3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lcjsKK3VzaW5n
IHRlc3Rpbmc6OlRydWx5OwordXNpbmcgdGVzdGluZzo6VHlwZWRFcTsKK3VzaW5nIHRlc3Rpbmc6
OlVub3JkZXJlZFBvaW50d2lzZTsKK3VzaW5nIHRlc3Rpbmc6OlZhbHVlOwordXNpbmcgdGVzdGlu
Zzo6V2hlblNvcnRlZDsKK3VzaW5nIHRlc3Rpbmc6OldoZW5Tb3J0ZWRCeTsKK3VzaW5nIHRlc3Rp
bmc6Ol87Cit1c2luZyB0ZXN0aW5nOjpnZXQ7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6RHVt
bXlNYXRjaFJlc3VsdExpc3RlbmVyOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkVsZW1lbnRN
YXRjaGVyUGFpcjsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpFbGVtZW50TWF0Y2hlclBhaXJz
OwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkV4cGxhaW5NYXRjaEZhaWx1cmVUdXBsZVRvOwor
dXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkZsb2F0aW5nRXFNYXRjaGVyOwordXNpbmcgdGVzdGlu
Zzo6aW50ZXJuYWw6OkZvcm1hdE1hdGNoZXJEZXNjcmlwdGlvbjsKK3VzaW5nIHRlc3Rpbmc6Omlu
dGVybmFsOjpJc1JlYWRhYmxlVHlwZU5hbWU7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Sm9p
bkFzVHVwbGU7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6bGlua2VkX3B0cjsKK3VzaW5nIHRl
c3Rpbmc6OmludGVybmFsOjpNYXRjaE1hdHJpeDsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpS
RTsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpzY29wZWRfcHRyOwordXNpbmcgdGVzdGluZzo6
aW50ZXJuYWw6OlN0cmVhbU1hdGNoUmVzdWx0TGlzdGVuZXI7Cit1c2luZyB0ZXN0aW5nOjppbnRl
cm5hbDo6U3RyaW5nczsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpsaW5rZWRfcHRyOwordXNp
bmcgdGVzdGluZzo6aW50ZXJuYWw6OnNjb3BlZF9wdHI7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5h
bDo6c3RyaW5nOwordXNpbmcgdGVzdGluZzo6bWFrZV90dXBsZTsKK3VzaW5nIHRlc3Rpbmc6OnR1
cGxlOworCisvLyBGb3IgdGVzdGluZyBFeHBsYWluTWF0Y2hSZXN1bHRUbygpLgorY2xhc3MgR3Jl
YXRlclRoYW5NYXRjaGVyIDogcHVibGljIE1hdGNoZXJJbnRlcmZhY2U8aW50PiB7CisgcHVibGlj
OgorICBleHBsaWNpdCBHcmVhdGVyVGhhbk1hdGNoZXIoaW50IHJocykgOiByaHNfKHJocykge30K
KworICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVUbyhvc3RyZWFtKiBvcykgY29uc3QgeworICAgICpv
cyA8PCAiaXMgPiAiIDw8IHJoc187CisgIH0KKworICB2aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBs
YWluKGludCBsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHRM
aXN0ZW5lciogbGlzdGVuZXIpIGNvbnN0IHsKKyAgICBjb25zdCBpbnQgZGlmZiA9IGxocyAtIHJo
c187CisgICAgaWYgKGRpZmYgPiAwKSB7CisgICAgICAqbGlzdGVuZXIgPDwgIndoaWNoIGlzICIg
PDwgZGlmZiA8PCAiIG1vcmUgdGhhbiAiIDw8IHJoc187CisgICAgfSBlbHNlIGlmIChkaWZmID09
IDApIHsKKyAgICAgICpsaXN0ZW5lciA8PCAid2hpY2ggaXMgdGhlIHNhbWUgYXMgIiA8PCByaHNf
OworICAgIH0gZWxzZSB7CisgICAgICAqbGlzdGVuZXIgPDwgIndoaWNoIGlzICIgPDwgLWRpZmYg
PDwgIiBsZXNzIHRoYW4gIiA8PCByaHNfOworICAgIH0KKworICAgIHJldHVybiBsaHMgPiByaHNf
OworICB9CisKKyBwcml2YXRlOgorICBpbnQgcmhzXzsKK307CisKK01hdGNoZXI8aW50PiBHcmVh
dGVyVGhhbihpbnQgbikgeworICByZXR1cm4gTWFrZU1hdGNoZXIobmV3IEdyZWF0ZXJUaGFuTWF0
Y2hlcihuKSk7Cit9CisKK3N0ZDo6c3RyaW5nIE9mVHlwZShjb25zdCBzdGQ6OnN0cmluZyYgdHlw
ZV9uYW1lKSB7CisjaWYgR1RFU1RfSEFTX1JUVEkKKyAgcmV0dXJuICIgKG9mIHR5cGUgIiArIHR5
cGVfbmFtZSArICIpIjsKKyNlbHNlCisgIHJldHVybiAiIjsKKyNlbmRpZgorfQorCisvLyBSZXR1
cm5zIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgZ2l2ZW4gbWF0Y2hlci4KK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPgorc3RkOjpzdHJpbmcgRGVzY3JpYmUoY29uc3QgTWF0Y2hlcjxUPiYgbSkgeworICBz
dHJpbmdzdHJlYW0gc3M7CisgIG0uRGVzY3JpYmVUbygmc3MpOworICByZXR1cm4gc3Muc3RyKCk7
Cit9CisKKy8vIFJldHVybnMgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBuZWdhdGlvbiBvZiB0aGUg
Z2l2ZW4gbWF0Y2hlci4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RkOjpzdHJpbmcgRGVzY3Jp
YmVOZWdhdGlvbihjb25zdCBNYXRjaGVyPFQ+JiBtKSB7CisgIHN0cmluZ3N0cmVhbSBzczsKKyAg
bS5EZXNjcmliZU5lZ2F0aW9uVG8oJnNzKTsKKyAgcmV0dXJuIHNzLnN0cigpOworfQorCisvLyBS
ZXR1cm5zIHRoZSByZWFzb24gd2h5IHggbWF0Y2hlcywgb3IgZG9lc24ndCBtYXRjaCwgbS4KK3Rl
bXBsYXRlIDx0eXBlbmFtZSBNYXRjaGVyVHlwZSwgdHlwZW5hbWUgVmFsdWU+CitzdGQ6OnN0cmlu
ZyBFeHBsYWluKGNvbnN0IE1hdGNoZXJUeXBlJiBtLCBjb25zdCBWYWx1ZSYgeCkgeworICBTdHJp
bmdNYXRjaFJlc3VsdExpc3RlbmVyIGxpc3RlbmVyOworICBFeHBsYWluTWF0Y2hSZXN1bHQobSwg
eCwgJmxpc3RlbmVyKTsKKyAgcmV0dXJuIGxpc3RlbmVyLnN0cigpOworfQorCitURVNUKE1hdGNo
UmVzdWx0TGlzdGVuZXJUZXN0LCBTdHJlYW1pbmdXb3JrcykgeworICBTdHJpbmdNYXRjaFJlc3Vs
dExpc3RlbmVyIGxpc3RlbmVyOworICBsaXN0ZW5lciA8PCAiaGkiIDw8IDU7CisgIEVYUEVDVF9F
USgiaGk1IiwgbGlzdGVuZXIuc3RyKCkpOworCisgIGxpc3RlbmVyLkNsZWFyKCk7CisgIEVYUEVD
VF9FUSgiIiwgbGlzdGVuZXIuc3RyKCkpOworCisgIGxpc3RlbmVyIDw8IDQyOworICBFWFBFQ1Rf
RVEoIjQyIiwgbGlzdGVuZXIuc3RyKCkpOworCisgIC8vIFN0cmVhbWluZyBzaG91bGRuJ3QgY3Jh
c2ggd2hlbiB0aGUgdW5kZXJseWluZyBvc3RyZWFtIGlzIE5VTEwuCisgIER1bW15TWF0Y2hSZXN1
bHRMaXN0ZW5lciBkdW1teTsKKyAgZHVtbXkgPDwgImhpIiA8PCA1OworfQorCitURVNUKE1hdGNo
UmVzdWx0TGlzdGVuZXJUZXN0LCBDYW5BY2Nlc3NVbmRlcmx5aW5nU3RyZWFtKSB7CisgIEVYUEVD
VF9UUlVFKER1bW15TWF0Y2hSZXN1bHRMaXN0ZW5lcigpLnN0cmVhbSgpID09IE5VTEwpOworICBF
WFBFQ1RfVFJVRShTdHJlYW1NYXRjaFJlc3VsdExpc3RlbmVyKE5VTEwpLnN0cmVhbSgpID09IE5V
TEwpOworCisgIEVYUEVDVF9FUSgmc3RkOjpjb3V0LCBTdHJlYW1NYXRjaFJlc3VsdExpc3RlbmVy
KCZzdGQ6OmNvdXQpLnN0cmVhbSgpKTsKK30KKworVEVTVChNYXRjaFJlc3VsdExpc3RlbmVyVGVz
dCwgSXNJbnRlcmVzdGVkV29ya3MpIHsKKyAgRVhQRUNUX1RSVUUoU3RyaW5nTWF0Y2hSZXN1bHRM
aXN0ZW5lcigpLklzSW50ZXJlc3RlZCgpKTsKKyAgRVhQRUNUX1RSVUUoU3RyZWFtTWF0Y2hSZXN1
bHRMaXN0ZW5lcigmc3RkOjpjb3V0KS5Jc0ludGVyZXN0ZWQoKSk7CisKKyAgRVhQRUNUX0ZBTFNF
KER1bW15TWF0Y2hSZXN1bHRMaXN0ZW5lcigpLklzSW50ZXJlc3RlZCgpKTsKKyAgRVhQRUNUX0ZB
TFNFKFN0cmVhbU1hdGNoUmVzdWx0TGlzdGVuZXIoTlVMTCkuSXNJbnRlcmVzdGVkKCkpOworfQor
CisvLyBNYWtlcyBzdXJlIHRoYXQgdGhlIE1hdGNoZXJJbnRlcmZhY2U8VD4gaW50ZXJmYWNlIGRv
ZXNuJ3QKKy8vIGNoYW5nZS4KK2NsYXNzIEV2ZW5NYXRjaGVySW1wbCA6IHB1YmxpYyBNYXRjaGVy
SW50ZXJmYWNlPGludD4geworIHB1YmxpYzoKKyAgdmlydHVhbCBib29sIE1hdGNoQW5kRXhwbGFp
bihpbnQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3Rl
bmVyKiAvKiBsaXN0ZW5lciAqLykgY29uc3QgeworICAgIHJldHVybiB4ICUgMiA9PSAwOworICB9
CisKKyAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8ob3N0cmVhbSogb3MpIGNvbnN0IHsKKyAgICAq
b3MgPDwgImlzIGFuIGV2ZW4gbnVtYmVyIjsKKyAgfQorCisgIC8vIFdlIGRlbGliZXJhdGVseSBk
b24ndCBkZWZpbmUgRGVzY3JpYmVOZWdhdGlvblRvKCkgYW5kCisgIC8vIEV4cGxhaW5NYXRjaFJl
c3VsdFRvKCkgaGVyZSwgdG8gbWFrZSBzdXJlIHRoZSBkZWZpbml0aW9uIG9mIHRoZXNlCisgIC8v
IHR3byBtZXRob2RzIGlzIG9wdGlvbmFsLgorfTsKKworLy8gTWFrZXMgc3VyZSB0aGF0IHRoZSBN
YXRjaGVySW50ZXJmYWNlIEFQSSBkb2Vzbid0IGNoYW5nZS4KK1RFU1QoTWF0Y2hlckludGVyZmFj
ZVRlc3QsIENhbkJlSW1wbGVtZW50ZWRVc2luZ1B1Ymxpc2hlZEFQSSkgeworICBFdmVuTWF0Y2hl
ckltcGwgbTsKK30KKworLy8gVGVzdHMgaW1wbGVtZW50aW5nIGEgbW9ub21vcnBoaWMgbWF0Y2hl
ciB1c2luZyBNYXRjaEFuZEV4cGxhaW4oKS4KKworY2xhc3MgTmV3RXZlbk1hdGNoZXJJbXBsIDog
cHVibGljIE1hdGNoZXJJbnRlcmZhY2U8aW50PiB7CisgcHVibGljOgorICB2aXJ0dWFsIGJvb2wg
TWF0Y2hBbmRFeHBsYWluKGludCB4LCBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29u
c3QgeworICAgIGNvbnN0IGJvb2wgbWF0Y2ggPSB4ICUgMiA9PSAwOworICAgIC8vIFZlcmlmaWVz
IHRoYXQgd2UgY2FuIHN0cmVhbSB0byBhIGxpc3RlbmVyIGRpcmVjdGx5LgorICAgICpsaXN0ZW5l
ciA8PCAidmFsdWUgJSAiIDw8IDI7CisgICAgaWYgKGxpc3RlbmVyLT5zdHJlYW0oKSAhPSBOVUxM
KSB7CisgICAgICAvLyBWZXJpZmllcyB0aGF0IHdlIGNhbiBzdHJlYW0gdG8gYSBsaXN0ZW5lcidz
IHVuZGVybHlpbmcgc3RyZWFtCisgICAgICAvLyB0b28uCisgICAgICAqbGlzdGVuZXItPnN0cmVh
bSgpIDw8ICIgPT0gIiA8PCAoeCAlIDIpOworICAgIH0KKyAgICByZXR1cm4gbWF0Y2g7CisgIH0K
KworICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVUbyhvc3RyZWFtKiBvcykgY29uc3QgeworICAgICpv
cyA8PCAiaXMgYW4gZXZlbiBudW1iZXIiOworICB9Cit9OworCitURVNUKE1hdGNoZXJJbnRlcmZh
Y2VUZXN0LCBDYW5CZUltcGxlbWVudGVkVXNpbmdOZXdBUEkpIHsKKyAgTWF0Y2hlcjxpbnQ+IG0g
PSBNYWtlTWF0Y2hlcihuZXcgTmV3RXZlbk1hdGNoZXJJbXBsKTsKKyAgRVhQRUNUX1RSVUUobS5N
YXRjaGVzKDIpKTsKKyAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcygzKSk7CisgIEVYUEVDVF9FUSgi
dmFsdWUgJSAyID09IDAiLCBFeHBsYWluKG0sIDIpKTsKKyAgRVhQRUNUX0VRKCJ2YWx1ZSAlIDIg
PT0gMSIsIEV4cGxhaW4obSwgMykpOworfQorCisvLyBUZXN0cyBkZWZhdWx0LWNvbnN0cnVjdGlu
ZyBhIG1hdGNoZXIuCitURVNUKE1hdGNoZXJUZXN0LCBDYW5CZURlZmF1bHRDb25zdHJ1Y3RlZCkg
eworICBNYXRjaGVyPGRvdWJsZT4gbTsKK30KKworLy8gVGVzdHMgdGhhdCBNYXRjaGVyPFQ+IGNh
biBiZSBjb25zdHJ1Y3RlZCBmcm9tIGEgTWF0Y2hlckludGVyZmFjZTxUPiouCitURVNUKE1hdGNo
ZXJUZXN0LCBDYW5CZUNvbnN0cnVjdGVkRnJvbU1hdGNoZXJJbnRlcmZhY2UpIHsKKyAgY29uc3Qg
TWF0Y2hlckludGVyZmFjZTxpbnQ+KiBpbXBsID0gbmV3IEV2ZW5NYXRjaGVySW1wbDsKKyAgTWF0
Y2hlcjxpbnQ+IG0oaW1wbCk7CisgIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyg0KSk7CisgIEVYUEVD
VF9GQUxTRShtLk1hdGNoZXMoNSkpOworfQorCisvLyBUZXN0cyB0aGF0IHZhbHVlIGNhbiBiZSB1
c2VkIGluIHBsYWNlIG9mIEVxKHZhbHVlKS4KK1RFU1QoTWF0Y2hlclRlc3QsIENhbkJlSW1wbGlj
aXRseUNvbnN0cnVjdGVkRnJvbVZhbHVlKSB7CisgIE1hdGNoZXI8aW50PiBtMSA9IDU7CisgIEVY
UEVDVF9UUlVFKG0xLk1hdGNoZXMoNSkpOworICBFWFBFQ1RfRkFMU0UobTEuTWF0Y2hlcyg2KSk7
Cit9CisKKy8vIFRlc3RzIHRoYXQgTlVMTCBjYW4gYmUgdXNlZCBpbiBwbGFjZSBvZiBFcShOVUxM
KS4KK1RFU1QoTWF0Y2hlclRlc3QsIENhbkJlSW1wbGljaXRseUNvbnN0cnVjdGVkRnJvbU5VTEwp
IHsKKyAgTWF0Y2hlcjxpbnQqPiBtMSA9IE5VTEw7CisgIEVYUEVDVF9UUlVFKG0xLk1hdGNoZXMo
TlVMTCkpOworICBpbnQgbiA9IDA7CisgIEVYUEVDVF9GQUxTRShtMS5NYXRjaGVzKCZuKSk7Cit9
CisKKy8vIFRlc3RzIHRoYXQgbWF0Y2hlcnMgYXJlIGNvcHlhYmxlLgorVEVTVChNYXRjaGVyVGVz
dCwgSXNDb3B5YWJsZSkgeworICAvLyBUZXN0cyB0aGUgY29weSBjb25zdHJ1Y3Rvci4KKyAgTWF0
Y2hlcjxib29sPiBtMSA9IEVxKGZhbHNlKTsKKyAgRVhQRUNUX1RSVUUobTEuTWF0Y2hlcyhmYWxz
ZSkpOworICBFWFBFQ1RfRkFMU0UobTEuTWF0Y2hlcyh0cnVlKSk7CisKKyAgLy8gVGVzdHMgdGhl
IGFzc2lnbm1lbnQgb3BlcmF0b3IuCisgIG0xID0gRXEodHJ1ZSk7CisgIEVYUEVDVF9UUlVFKG0x
Lk1hdGNoZXModHJ1ZSkpOworICBFWFBFQ1RfRkFMU0UobTEuTWF0Y2hlcyhmYWxzZSkpOworfQor
CisvLyBUZXN0cyB0aGF0IE1hdGNoZXI8VD46OkRlc2NyaWJlVG8oKSBjYWxscworLy8gTWF0Y2hl
ckludGVyZmFjZTxUPjo6RGVzY3JpYmVUbygpLgorVEVTVChNYXRjaGVyVGVzdCwgQ2FuRGVzY3Jp
YmVJdHNlbGYpIHsKKyAgRVhQRUNUX0VRKCJpcyBhbiBldmVuIG51bWJlciIsCisgICAgICAgICAg
ICBEZXNjcmliZShNYXRjaGVyPGludD4obmV3IEV2ZW5NYXRjaGVySW1wbCkpKTsKK30KKworLy8g
VGVzdHMgTWF0Y2hlcjxUPjo6TWF0Y2hBbmRFeHBsYWluKCkuCitURVNUKE1hdGNoZXJUZXN0LCBN
YXRjaEFuZEV4cGxhaW4pIHsKKyAgTWF0Y2hlcjxpbnQ+IG0gPSBHcmVhdGVyVGhhbigwKTsKKyAg
U3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lciBsaXN0ZW5lcjE7CisgIEVYUEVDVF9UUlVFKG0uTWF0
Y2hBbmRFeHBsYWluKDQyLCAmbGlzdGVuZXIxKSk7CisgIEVYUEVDVF9FUSgid2hpY2ggaXMgNDIg
bW9yZSB0aGFuIDAiLCBsaXN0ZW5lcjEuc3RyKCkpOworCisgIFN0cmluZ01hdGNoUmVzdWx0TGlz
dGVuZXIgbGlzdGVuZXIyOworICBFWFBFQ1RfRkFMU0UobS5NYXRjaEFuZEV4cGxhaW4oLTksICZs
aXN0ZW5lcjIpKTsKKyAgRVhQRUNUX0VRKCJ3aGljaCBpcyA5IGxlc3MgdGhhbiAwIiwgbGlzdGVu
ZXIyLnN0cigpKTsKK30KKworLy8gVGVzdHMgdGhhdCBhIEMtc3RyaW5nIGxpdGVyYWwgY2FuIGJl
IGltcGxpY2l0bHkgY29udmVydGVkIHRvIGEKKy8vIE1hdGNoZXI8c3RyaW5nPiBvciBNYXRjaGVy
PGNvbnN0IHN0cmluZyY+LgorVEVTVChTdHJpbmdNYXRjaGVyVGVzdCwgQ2FuQmVJbXBsaWNpdGx5
Q29uc3RydWN0ZWRGcm9tQ1N0cmluZ0xpdGVyYWwpIHsKKyAgTWF0Y2hlcjxzdHJpbmc+IG0xID0g
ImhpIjsKKyAgRVhQRUNUX1RSVUUobTEuTWF0Y2hlcygiaGkiKSk7CisgIEVYUEVDVF9GQUxTRSht
MS5NYXRjaGVzKCJoZWxsbyIpKTsKKworICBNYXRjaGVyPGNvbnN0IHN0cmluZyY+IG0yID0gImhp
IjsKKyAgRVhQRUNUX1RSVUUobTIuTWF0Y2hlcygiaGkiKSk7CisgIEVYUEVDVF9GQUxTRShtMi5N
YXRjaGVzKCJoZWxsbyIpKTsKK30KKworLy8gVGVzdHMgdGhhdCBhIHN0cmluZyBvYmplY3QgY2Fu
IGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRvIGEKKy8vIE1hdGNoZXI8c3RyaW5nPiBvciBNYXRj
aGVyPGNvbnN0IHN0cmluZyY+LgorVEVTVChTdHJpbmdNYXRjaGVyVGVzdCwgQ2FuQmVJbXBsaWNp
dGx5Q29uc3RydWN0ZWRGcm9tU3RyaW5nKSB7CisgIE1hdGNoZXI8c3RyaW5nPiBtMSA9IHN0cmlu
ZygiaGkiKTsKKyAgRVhQRUNUX1RSVUUobTEuTWF0Y2hlcygiaGkiKSk7CisgIEVYUEVDVF9GQUxT
RShtMS5NYXRjaGVzKCJoZWxsbyIpKTsKKworICBNYXRjaGVyPGNvbnN0IHN0cmluZyY+IG0yID0g
c3RyaW5nKCJoaSIpOworICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKCJoaSIpKTsKKyAgRVhQRUNU
X0ZBTFNFKG0yLk1hdGNoZXMoImhlbGxvIikpOworfQorCisjaWYgR1RFU1RfSEFTX1NUUklOR19Q
SUVDRV8KKy8vIFRlc3RzIHRoYXQgYSBDLXN0cmluZyBsaXRlcmFsIGNhbiBiZSBpbXBsaWNpdGx5
IGNvbnZlcnRlZCB0byBhCisvLyBNYXRjaGVyPFN0cmluZ1BpZWNlPiBvciBNYXRjaGVyPGNvbnN0
IFN0cmluZ1BpZWNlJj4uCitURVNUKFN0cmluZ1BpZWNlTWF0Y2hlclRlc3QsIENhbkJlSW1wbGlj
aXRseUNvbnN0cnVjdGVkRnJvbUNTdHJpbmdMaXRlcmFsKSB7CisgIE1hdGNoZXI8U3RyaW5nUGll
Y2U+IG0xID0gImNhdHMiOworICBFWFBFQ1RfVFJVRShtMS5NYXRjaGVzKCJjYXRzIikpOworICBF
WFBFQ1RfRkFMU0UobTEuTWF0Y2hlcygiZG9ncyIpKTsKKworICBNYXRjaGVyPGNvbnN0IFN0cmlu
Z1BpZWNlJj4gbTIgPSAiY2F0cyI7CisgIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoImNhdHMiKSk7
CisgIEVYUEVDVF9GQUxTRShtMi5NYXRjaGVzKCJkb2dzIikpOworfQorCisvLyBUZXN0cyB0aGF0
IGEgc3RyaW5nIG9iamVjdCBjYW4gYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gYQorLy8gTWF0
Y2hlcjxTdHJpbmdQaWVjZT4gb3IgTWF0Y2hlcjxjb25zdCBTdHJpbmdQaWVjZSY+LgorVEVTVChT
dHJpbmdQaWVjZU1hdGNoZXJUZXN0LCBDYW5CZUltcGxpY2l0bHlDb25zdHJ1Y3RlZEZyb21TdHJp
bmcpIHsKKyAgTWF0Y2hlcjxTdHJpbmdQaWVjZT4gbTEgPSBzdHJpbmcoImNhdHMiKTsKKyAgRVhQ
RUNUX1RSVUUobTEuTWF0Y2hlcygiY2F0cyIpKTsKKyAgRVhQRUNUX0ZBTFNFKG0xLk1hdGNoZXMo
ImRvZ3MiKSk7CisKKyAgTWF0Y2hlcjxjb25zdCBTdHJpbmdQaWVjZSY+IG0yID0gc3RyaW5nKCJj
YXRzIik7CisgIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoImNhdHMiKSk7CisgIEVYUEVDVF9GQUxT
RShtMi5NYXRjaGVzKCJkb2dzIikpOworfQorCisvLyBUZXN0cyB0aGF0IGEgU3RyaW5nUGllY2Ug
b2JqZWN0IGNhbiBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byBhCisvLyBNYXRjaGVyPFN0cmlu
Z1BpZWNlPiBvciBNYXRjaGVyPGNvbnN0IFN0cmluZ1BpZWNlJj4uCitURVNUKFN0cmluZ1BpZWNl
TWF0Y2hlclRlc3QsIENhbkJlSW1wbGljaXRseUNvbnN0cnVjdGVkRnJvbVN0cmluZ1BpZWNlKSB7
CisgIE1hdGNoZXI8U3RyaW5nUGllY2U+IG0xID0gU3RyaW5nUGllY2UoImNhdHMiKTsKKyAgRVhQ
RUNUX1RSVUUobTEuTWF0Y2hlcygiY2F0cyIpKTsKKyAgRVhQRUNUX0ZBTFNFKG0xLk1hdGNoZXMo
ImRvZ3MiKSk7CisKKyAgTWF0Y2hlcjxjb25zdCBTdHJpbmdQaWVjZSY+IG0yID0gU3RyaW5nUGll
Y2UoImNhdHMiKTsKKyAgRVhQRUNUX1RSVUUobTIuTWF0Y2hlcygiY2F0cyIpKTsKKyAgRVhQRUNU
X0ZBTFNFKG0yLk1hdGNoZXMoImRvZ3MiKSk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19TVFJJ
TkdfUElFQ0VfCisKKy8vIFRlc3RzIHRoYXQgTWFrZU1hdGNoZXIoKSBjb25zdHJ1Y3RzIGEgTWF0
Y2hlcjxUPiBmcm9tIGEKKy8vIE1hdGNoZXJJbnRlcmZhY2UqIHdpdGhvdXQgcmVxdWlyaW5nIHRo
ZSB1c2VyIHRvIGV4cGxpY2l0bHkKKy8vIHdyaXRlIHRoZSB0eXBlLgorVEVTVChNYWtlTWF0Y2hl
clRlc3QsIENvbnN0cnVjdHNNYXRjaGVyRnJvbU1hdGNoZXJJbnRlcmZhY2UpIHsKKyAgY29uc3Qg
TWF0Y2hlckludGVyZmFjZTxpbnQ+KiBkdW1teV9pbXBsID0gTlVMTDsKKyAgTWF0Y2hlcjxpbnQ+
IG0gPSBNYWtlTWF0Y2hlcihkdW1teV9pbXBsKTsKK30KKworLy8gVGVzdHMgdGhhdCBNYWtlUG9s
eW1vcnBoaWNNYXRjaGVyKCkgY2FuIGNvbnN0cnVjdCBhIHBvbHltb3JwaGljCisvLyBtYXRjaGVy
IGZyb20gaXRzIGltcGxlbWVudGF0aW9uIHVzaW5nIHRoZSBvbGQgQVBJLgorY29uc3QgaW50IGdf
YmFyID0gMTsKK2NsYXNzIFJlZmVyZW5jZXNCYXJPcklzWmVyb0ltcGwgeworIHB1YmxpYzoKKyAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIGJvb2wgTWF0Y2hBbmRFeHBsYWluKGNvbnN0IFQmIHgs
CisgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIC8qIGxpc3RlbmVy
ICovKSBjb25zdCB7CisgICAgY29uc3Qgdm9pZCogcCA9ICZ4OworICAgIHJldHVybiBwID09ICZn
X2JhciB8fCB4ID09IDA7CisgIH0KKworICB2b2lkIERlc2NyaWJlVG8ob3N0cmVhbSogb3MpIGNv
bnN0IHsgKm9zIDw8ICJnX2JhciBvciB6ZXJvIjsgfQorCisgIHZvaWQgRGVzY3JpYmVOZWdhdGlv
blRvKG9zdHJlYW0qIG9zKSBjb25zdCB7CisgICAgKm9zIDw8ICJkb2Vzbid0IHJlZmVyZW5jZSBn
X2JhciBhbmQgaXMgbm90IHplcm8iOworICB9Cit9OworCisvLyBUaGlzIGZ1bmN0aW9uIHZlcmlm
aWVzIHRoYXQgTWFrZVBvbHltb3JwaGljTWF0Y2hlcigpIHJldHVybnMgYQorLy8gUG9seW1vcnBo
aWNNYXRjaGVyPFQ+IHdoZXJlIFQgaXMgdGhlIGFyZ3VtZW50J3MgdHlwZS4KK1BvbHltb3JwaGlj
TWF0Y2hlcjxSZWZlcmVuY2VzQmFyT3JJc1plcm9JbXBsPiBSZWZlcmVuY2VzQmFyT3JJc1plcm8o
KSB7CisgIHJldHVybiBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKFJlZmVyZW5jZXNCYXJPcklzWmVy
b0ltcGwoKSk7Cit9CisKK1RFU1QoTWFrZVBvbHltb3JwaGljTWF0Y2hlclRlc3QsIENvbnN0cnVj
dHNNYXRjaGVyVXNpbmdPbGRBUEkpIHsKKyAgLy8gVXNpbmcgYSBwb2x5bW9ycGhpYyBtYXRjaGVy
IHRvIG1hdGNoIGEgcmVmZXJlbmNlIHR5cGUuCisgIE1hdGNoZXI8Y29uc3QgaW50Jj4gbTEgPSBS
ZWZlcmVuY2VzQmFyT3JJc1plcm8oKTsKKyAgRVhQRUNUX1RSVUUobTEuTWF0Y2hlcygwKSk7Cisg
IC8vIFZlcmlmaWVzIHRoYXQgdGhlIGlkZW50aXR5IG9mIGEgYnktcmVmZXJlbmNlIGFyZ3VtZW50
IGlzIHByZXNlcnZlZC4KKyAgRVhQRUNUX1RSVUUobTEuTWF0Y2hlcyhnX2JhcikpOworICBFWFBF
Q1RfRkFMU0UobTEuTWF0Y2hlcygxKSk7CisgIEVYUEVDVF9FUSgiZ19iYXIgb3IgemVybyIsIERl
c2NyaWJlKG0xKSk7CisKKyAgLy8gVXNpbmcgYSBwb2x5bW9ycGhpYyBtYXRjaGVyIHRvIG1hdGNo
IGEgdmFsdWUgdHlwZS4KKyAgTWF0Y2hlcjxkb3VibGU+IG0yID0gUmVmZXJlbmNlc0Jhck9ySXNa
ZXJvKCk7CisgIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoMC4wKSk7CisgIEVYUEVDVF9GQUxTRSht
Mi5NYXRjaGVzKDAuMSkpOworICBFWFBFQ1RfRVEoImdfYmFyIG9yIHplcm8iLCBEZXNjcmliZSht
MikpOworfQorCisvLyBUZXN0cyBpbXBsZW1lbnRpbmcgYSBwb2x5bW9ycGhpYyBtYXRjaGVyIHVz
aW5nIE1hdGNoQW5kRXhwbGFpbigpLgorCitjbGFzcyBQb2x5bW9ycGhpY0lzRXZlbkltcGwgewor
IHB1YmxpYzoKKyAgdm9pZCBEZXNjcmliZVRvKG9zdHJlYW0qIG9zKSBjb25zdCB7ICpvcyA8PCAi
aXMgZXZlbiI7IH0KKworICB2b2lkIERlc2NyaWJlTmVnYXRpb25Ubyhvc3RyZWFtKiBvcykgY29u
c3QgeworICAgICpvcyA8PCAiaXMgb2RkIjsKKyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgorICBib29sIE1hdGNoQW5kRXhwbGFpbihjb25zdCBUJiB4LCBNYXRjaFJlc3VsdExpc3RlbmVy
KiBsaXN0ZW5lcikgY29uc3QgeworICAgIC8vIFZlcmlmaWVzIHRoYXQgd2UgY2FuIHN0cmVhbSB0
byB0aGUgbGlzdGVuZXIgZGlyZWN0bHkuCisgICAgKmxpc3RlbmVyIDw8ICIlICIgPDwgMjsKKyAg
ICBpZiAobGlzdGVuZXItPnN0cmVhbSgpICE9IE5VTEwpIHsKKyAgICAgIC8vIFZlcmlmaWVzIHRo
YXQgd2UgY2FuIHN0cmVhbSB0byB0aGUgbGlzdGVuZXIncyB1bmRlcmx5aW5nIHN0cmVhbQorICAg
ICAgLy8gdG9vLgorICAgICAgKmxpc3RlbmVyLT5zdHJlYW0oKSA8PCAiID09ICIgPDwgKHggJSAy
KTsKKyAgICB9CisgICAgcmV0dXJuICh4ICUgMikgPT0gMDsKKyAgfQorfTsKKworUG9seW1vcnBo
aWNNYXRjaGVyPFBvbHltb3JwaGljSXNFdmVuSW1wbD4gUG9seW1vcnBoaWNJc0V2ZW4oKSB7Cisg
IHJldHVybiBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKFBvbHltb3JwaGljSXNFdmVuSW1wbCgpKTsK
K30KKworVEVTVChNYWtlUG9seW1vcnBoaWNNYXRjaGVyVGVzdCwgQ29uc3RydWN0c01hdGNoZXJV
c2luZ05ld0FQSSkgeworICAvLyBVc2luZyBQb2x5bW9ycGhpY0lzRXZlbigpIGFzIGEgTWF0Y2hl
cjxpbnQ+LgorICBjb25zdCBNYXRjaGVyPGludD4gbTEgPSBQb2x5bW9ycGhpY0lzRXZlbigpOwor
ICBFWFBFQ1RfVFJVRShtMS5NYXRjaGVzKDQyKSk7CisgIEVYUEVDVF9GQUxTRShtMS5NYXRjaGVz
KDQzKSk7CisgIEVYUEVDVF9FUSgiaXMgZXZlbiIsIERlc2NyaWJlKG0xKSk7CisKKyAgY29uc3Qg
TWF0Y2hlcjxpbnQ+IG5vdF9tMSA9IE5vdChtMSk7CisgIEVYUEVDVF9FUSgiaXMgb2RkIiwgRGVz
Y3JpYmUobm90X20xKSk7CisKKyAgRVhQRUNUX0VRKCIlIDIgPT0gMCIsIEV4cGxhaW4obTEsIDQy
KSk7CisKKyAgLy8gVXNpbmcgUG9seW1vcnBoaWNJc0V2ZW4oKSBhcyBhIE1hdGNoZXI8Y2hhcj4u
CisgIGNvbnN0IE1hdGNoZXI8Y2hhcj4gbTIgPSBQb2x5bW9ycGhpY0lzRXZlbigpOworICBFWFBF
Q1RfVFJVRShtMi5NYXRjaGVzKCdceDQyJykpOworICBFWFBFQ1RfRkFMU0UobTIuTWF0Y2hlcygn
XHg0MycpKTsKKyAgRVhQRUNUX0VRKCJpcyBldmVuIiwgRGVzY3JpYmUobTIpKTsKKworICBjb25z
dCBNYXRjaGVyPGNoYXI+IG5vdF9tMiA9IE5vdChtMik7CisgIEVYUEVDVF9FUSgiaXMgb2RkIiwg
RGVzY3JpYmUobm90X20yKSk7CisKKyAgRVhQRUNUX0VRKCIlIDIgPT0gMCIsIEV4cGxhaW4obTIs
ICdceDQyJykpOworfQorCisvLyBUZXN0cyB0aGF0IE1hdGNoZXJDYXN0PFQ+KG0pIHdvcmtzIHdo
ZW4gbSBpcyBhIHBvbHltb3JwaGljIG1hdGNoZXIuCitURVNUKE1hdGNoZXJDYXN0VGVzdCwgRnJv
bVBvbHltb3JwaGljTWF0Y2hlcikgeworICBNYXRjaGVyPGludD4gbSA9IE1hdGNoZXJDYXN0PGlu
dD4oRXEoNSkpOworICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoNSkpOworICBFWFBFQ1RfRkFMU0Uo
bS5NYXRjaGVzKDYpKTsKK30KKworLy8gRm9yIHRlc3RpbmcgY2FzdGluZyBtYXRjaGVycyBiZXR3
ZWVuIGNvbXBhdGlibGUgdHlwZXMuCitjbGFzcyBJbnRWYWx1ZSB7CisgcHVibGljOgorICAvLyBB
biBpbnQgY2FuIGJlIHN0YXRpY2FsbHkgKGFsdGhvdWdoIG5vdCBpbXBsaWNpdGx5KSBjYXN0IHRv
IGEKKyAgLy8gSW50VmFsdWUuCisgIGV4cGxpY2l0IEludFZhbHVlKGludCBhX3ZhbHVlKSA6IHZh
bHVlXyhhX3ZhbHVlKSB7fQorCisgIGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlXzsg
fQorIHByaXZhdGU6CisgIGludCB2YWx1ZV87Cit9OworCisvLyBGb3IgdGVzdGluZyBjYXN0aW5n
IG1hdGNoZXJzIGJldHdlZW4gY29tcGF0aWJsZSB0eXBlcy4KK2Jvb2wgSXNQb3NpdGl2ZUludFZh
bHVlKGNvbnN0IEludFZhbHVlJiBmb28pIHsKKyAgcmV0dXJuIGZvby52YWx1ZSgpID4gMDsKK30K
KworLy8gVGVzdHMgdGhhdCBNYXRjaGVyQ2FzdDxUPihtKSB3b3JrcyB3aGVuIG0gaXMgYSBNYXRj
aGVyPFU+IHdoZXJlIFQKKy8vIGNhbiBiZSBzdGF0aWNhbGx5IGNvbnZlcnRlZCB0byBVLgorVEVT
VChNYXRjaGVyQ2FzdFRlc3QsIEZyb21Db21wYXRpYmxlVHlwZSkgeworICBNYXRjaGVyPGRvdWJs
ZT4gbTEgPSBFcSgyLjApOworICBNYXRjaGVyPGludD4gbTIgPSBNYXRjaGVyQ2FzdDxpbnQ+KG0x
KTsKKyAgRVhQRUNUX1RSVUUobTIuTWF0Y2hlcygyKSk7CisgIEVYUEVDVF9GQUxTRShtMi5NYXRj
aGVzKDMpKTsKKworICBNYXRjaGVyPEludFZhbHVlPiBtMyA9IFRydWx5KElzUG9zaXRpdmVJbnRW
YWx1ZSk7CisgIE1hdGNoZXI8aW50PiBtNCA9IE1hdGNoZXJDYXN0PGludD4obTMpOworICAvLyBJ
biB0aGUgZm9sbG93aW5nLCB0aGUgYXJndW1lbnRzIDEgYW5kIDAgYXJlIHN0YXRpY2FsbHkgY29u
dmVydGVkCisgIC8vIHRvIEludFZhbHVlIG9iamVjdHMsIGFuZCB0aGVuIHRlc3RlZCBieSB0aGUg
SXNQb3NpdGl2ZUludFZhbHVlKCkKKyAgLy8gcHJlZGljYXRlLgorICBFWFBFQ1RfVFJVRShtNC5N
YXRjaGVzKDEpKTsKKyAgRVhQRUNUX0ZBTFNFKG00Lk1hdGNoZXMoMCkpOworfQorCisvLyBUZXN0
cyB0aGF0IE1hdGNoZXJDYXN0PFQ+KG0pIHdvcmtzIHdoZW4gbSBpcyBhIE1hdGNoZXI8Y29uc3Qg
VCY+LgorVEVTVChNYXRjaGVyQ2FzdFRlc3QsIEZyb21Db25zdFJlZmVyZW5jZVRvTm9uUmVmZXJl
bmNlKSB7CisgIE1hdGNoZXI8Y29uc3QgaW50Jj4gbTEgPSBFcSgwKTsKKyAgTWF0Y2hlcjxpbnQ+
IG0yID0gTWF0Y2hlckNhc3Q8aW50PihtMSk7CisgIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoMCkp
OworICBFWFBFQ1RfRkFMU0UobTIuTWF0Y2hlcygxKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgTWF0
Y2hlckNhc3Q8VD4obSkgd29ya3Mgd2hlbiBtIGlzIGEgTWF0Y2hlcjxUJj4uCitURVNUKE1hdGNo
ZXJDYXN0VGVzdCwgRnJvbVJlZmVyZW5jZVRvTm9uUmVmZXJlbmNlKSB7CisgIE1hdGNoZXI8aW50
Jj4gbTEgPSBFcSgwKTsKKyAgTWF0Y2hlcjxpbnQ+IG0yID0gTWF0Y2hlckNhc3Q8aW50PihtMSk7
CisgIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoMCkpOworICBFWFBFQ1RfRkFMU0UobTIuTWF0Y2hl
cygxKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgTWF0Y2hlckNhc3Q8Y29uc3QgVCY+KG0pIHdvcmtz
IHdoZW4gbSBpcyBhIE1hdGNoZXI8VD4uCitURVNUKE1hdGNoZXJDYXN0VGVzdCwgRnJvbU5vblJl
ZmVyZW5jZVRvQ29uc3RSZWZlcmVuY2UpIHsKKyAgTWF0Y2hlcjxpbnQ+IG0xID0gRXEoMCk7Cisg
IE1hdGNoZXI8Y29uc3QgaW50Jj4gbTIgPSBNYXRjaGVyQ2FzdDxjb25zdCBpbnQmPihtMSk7Cisg
IEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoMCkpOworICBFWFBFQ1RfRkFMU0UobTIuTWF0Y2hlcygx
KSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgTWF0Y2hlckNhc3Q8VCY+KG0pIHdvcmtzIHdoZW4gbSBp
cyBhIE1hdGNoZXI8VD4uCitURVNUKE1hdGNoZXJDYXN0VGVzdCwgRnJvbU5vblJlZmVyZW5jZVRv
UmVmZXJlbmNlKSB7CisgIE1hdGNoZXI8aW50PiBtMSA9IEVxKDApOworICBNYXRjaGVyPGludCY+
IG0yID0gTWF0Y2hlckNhc3Q8aW50Jj4obTEpOworICBpbnQgbiA9IDA7CisgIEVYUEVDVF9UUlVF
KG0yLk1hdGNoZXMobikpOworICBuID0gMTsKKyAgRVhQRUNUX0ZBTFNFKG0yLk1hdGNoZXMobikp
OworfQorCisvLyBUZXN0cyB0aGF0IE1hdGNoZXJDYXN0PFQ+KG0pIHdvcmtzIHdoZW4gbSBpcyBh
IE1hdGNoZXI8VD4uCitURVNUKE1hdGNoZXJDYXN0VGVzdCwgRnJvbVNhbWVUeXBlKSB7CisgIE1h
dGNoZXI8aW50PiBtMSA9IEVxKDApOworICBNYXRjaGVyPGludD4gbTIgPSBNYXRjaGVyQ2FzdDxp
bnQ+KG0xKTsKKyAgRVhQRUNUX1RSVUUobTIuTWF0Y2hlcygwKSk7CisgIEVYUEVDVF9GQUxTRSht
Mi5NYXRjaGVzKDEpKTsKK30KKworLy8gSW1wbGljaXRseSBjb252ZXJ0aWJsZSBmcm9tIGFueSB0
eXBlLgorc3RydWN0IENvbnZlcnRpYmxlRnJvbUFueSB7CisgIENvbnZlcnRpYmxlRnJvbUFueShp
bnQgYV92YWx1ZSkgOiB2YWx1ZShhX3ZhbHVlKSB7fQorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
KyAgZXhwbGljaXQgQ29udmVydGlibGVGcm9tQW55KGNvbnN0IFQmIC8qYV92YWx1ZSovKSA6IHZh
bHVlKC0xKSB7CisgICAgQUREX0ZBSUxVUkUoKSA8PCAiQ29udmVyc2lvbiBjb25zdHJ1Y3RvciBj
YWxsZWQiOworICB9CisgIGludCB2YWx1ZTsKK307CisKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBD
b252ZXJ0aWJsZUZyb21BbnkmIGEsIGNvbnN0IENvbnZlcnRpYmxlRnJvbUFueSYgYikgeworICBy
ZXR1cm4gYS52YWx1ZSA9PSBiLnZhbHVlOworfQorCitvc3RyZWFtJiBvcGVyYXRvcjw8KG9zdHJl
YW0mIG9zLCBjb25zdCBDb252ZXJ0aWJsZUZyb21BbnkmIGEpIHsKKyAgcmV0dXJuIG9zIDw8IGEu
dmFsdWU7Cit9CisKK1RFU1QoTWF0Y2hlckNhc3RUZXN0LCBDb252ZXJzaW9uQ29uc3RydWN0b3JJ
c1VzZWQpIHsKKyAgTWF0Y2hlcjxDb252ZXJ0aWJsZUZyb21Bbnk+IG0gPSBNYXRjaGVyQ2FzdDxD
b252ZXJ0aWJsZUZyb21Bbnk+KDEpOworICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoQ29udmVydGli
bGVGcm9tQW55KDEpKSk7CisgIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoQ29udmVydGlibGVGcm9t
QW55KDIpKSk7Cit9CisKK1RFU1QoTWF0Y2hlckNhc3RUZXN0LCBGcm9tQ29udmVydGlibGVGcm9t
QW55KSB7CisgIE1hdGNoZXI8Q29udmVydGlibGVGcm9tQW55PiBtID0KKyAgICAgIE1hdGNoZXJD
YXN0PENvbnZlcnRpYmxlRnJvbUFueT4oRXEoQ29udmVydGlibGVGcm9tQW55KDEpKSk7CisgIEVY
UEVDVF9UUlVFKG0uTWF0Y2hlcyhDb252ZXJ0aWJsZUZyb21BbnkoMSkpKTsKKyAgRVhQRUNUX0ZB
TFNFKG0uTWF0Y2hlcyhDb252ZXJ0aWJsZUZyb21BbnkoMikpKTsKK30KKworc3RydWN0IEludFJl
ZmVyZW5jZVdyYXBwZXIgeworICBJbnRSZWZlcmVuY2VXcmFwcGVyKGNvbnN0IGludCYgYV92YWx1
ZSkgOiB2YWx1ZSgmYV92YWx1ZSkge30KKyAgY29uc3QgaW50KiB2YWx1ZTsKK307CisKK2Jvb2wg
b3BlcmF0b3I9PShjb25zdCBJbnRSZWZlcmVuY2VXcmFwcGVyJiBhLCBjb25zdCBJbnRSZWZlcmVu
Y2VXcmFwcGVyJiBiKSB7CisgIHJldHVybiBhLnZhbHVlID09IGIudmFsdWU7Cit9CisKK1RFU1Qo
TWF0Y2hlckNhc3RUZXN0LCBWYWx1ZUlzTm90Q29waWVkKSB7CisgIGludCBuID0gNDI7CisgIE1h
dGNoZXI8SW50UmVmZXJlbmNlV3JhcHBlcj4gbSA9IE1hdGNoZXJDYXN0PEludFJlZmVyZW5jZVdy
YXBwZXI+KG4pOworICAvLyBWZXJpZnkgdGhhdCB0aGUgbWF0Y2hlciBob2xkcyBhIHJlZmVyZW5j
ZSB0byBuLCBub3QgdG8gaXRzIHRlbXBvcmFyeSBjb3B5LgorICBFWFBFQ1RfVFJVRShtLk1hdGNo
ZXMobikpOworfQorCitjbGFzcyBCYXNlIHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgfkJhc2UoKSB7
fQorICBCYXNlKCkge30KKyBwcml2YXRlOgorICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJ
R05fKEJhc2UpOworfTsKKworY2xhc3MgRGVyaXZlZCA6IHB1YmxpYyBCYXNlIHsKKyBwdWJsaWM6
CisgIERlcml2ZWQoKSA6IEJhc2UoKSB7fQorICBpbnQgaTsKK307CisKK2NsYXNzIE90aGVyRGVy
aXZlZCA6IHB1YmxpYyBCYXNlIHt9OworCisvLyBUZXN0cyB0aGF0IFNhZmVNYXRjaGVyQ2FzdDxU
PihtKSB3b3JrcyB3aGVuIG0gaXMgYSBwb2x5bW9ycGhpYyBtYXRjaGVyLgorVEVTVChTYWZlTWF0
Y2hlckNhc3RUZXN0LCBGcm9tUG9seW1vcnBoaWNNYXRjaGVyKSB7CisgIE1hdGNoZXI8Y2hhcj4g
bTIgPSBTYWZlTWF0Y2hlckNhc3Q8Y2hhcj4oRXEoMzIpKTsKKyAgRVhQRUNUX1RSVUUobTIuTWF0
Y2hlcygnICcpKTsKKyAgRVhQRUNUX0ZBTFNFKG0yLk1hdGNoZXMoJ1xuJykpOworfQorCisvLyBU
ZXN0cyB0aGF0IFNhZmVNYXRjaGVyQ2FzdDxUPihtKSB3b3JrcyB3aGVuIG0gaXMgYSBNYXRjaGVy
PFU+IHdoZXJlCisvLyBUIGFuZCBVIGFyZSBhcml0aG1ldGljIHR5cGVzIGFuZCBUIGNhbiBiZSBs
b3NzbGVzc2x5IGNvbnZlcnRlZCB0bworLy8gVS4KK1RFU1QoU2FmZU1hdGNoZXJDYXN0VGVzdCwg
RnJvbUxvc3NsZXNzbHlDb252ZXJ0aWJsZUFyaXRobWV0aWNUeXBlKSB7CisgIE1hdGNoZXI8ZG91
YmxlPiBtMSA9IERvdWJsZUVxKDEuMCk7CisgIE1hdGNoZXI8ZmxvYXQ+IG0yID0gU2FmZU1hdGNo
ZXJDYXN0PGZsb2F0PihtMSk7CisgIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoMS4wZikpOworICBF
WFBFQ1RfRkFMU0UobTIuTWF0Y2hlcygyLjBmKSk7CisKKyAgTWF0Y2hlcjxjaGFyPiBtMyA9IFNh
ZmVNYXRjaGVyQ2FzdDxjaGFyPihUeXBlZEVxPGludD4oJ2EnKSk7CisgIEVYUEVDVF9UUlVFKG0z
Lk1hdGNoZXMoJ2EnKSk7CisgIEVYUEVDVF9GQUxTRShtMy5NYXRjaGVzKCdiJykpOworfQorCisv
LyBUZXN0cyB0aGF0IFNhZmVNYXRjaGVyQ2FzdDxUPihtKSB3b3JrcyB3aGVuIG0gaXMgYSBNYXRj
aGVyPFU+IHdoZXJlIFQgYW5kIFUKKy8vIGFyZSBwb2ludGVycyBvciByZWZlcmVuY2VzIHRvIGEg
ZGVyaXZlZCBhbmQgYSBiYXNlIGNsYXNzLCBjb3JyZXNwb25kaW5nbHkuCitURVNUKFNhZmVNYXRj
aGVyQ2FzdFRlc3QsIEZyb21CYXNlQ2xhc3MpIHsKKyAgRGVyaXZlZCBkLCBkMjsKKyAgTWF0Y2hl
cjxCYXNlKj4gbTEgPSBFcSgmZCk7CisgIE1hdGNoZXI8RGVyaXZlZCo+IG0yID0gU2FmZU1hdGNo
ZXJDYXN0PERlcml2ZWQqPihtMSk7CisgIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoJmQpKTsKKyAg
RVhQRUNUX0ZBTFNFKG0yLk1hdGNoZXMoJmQyKSk7CisKKyAgTWF0Y2hlcjxCYXNlJj4gbTMgPSBS
ZWYoZCk7CisgIE1hdGNoZXI8RGVyaXZlZCY+IG00ID0gU2FmZU1hdGNoZXJDYXN0PERlcml2ZWQm
PihtMyk7CisgIEVYUEVDVF9UUlVFKG00Lk1hdGNoZXMoZCkpOworICBFWFBFQ1RfRkFMU0UobTQu
TWF0Y2hlcyhkMikpOworfQorCisvLyBUZXN0cyB0aGF0IFNhZmVNYXRjaGVyQ2FzdDxUJj4obSkg
d29ya3Mgd2hlbiBtIGlzIGEgTWF0Y2hlcjxjb25zdCBUJj4uCitURVNUKFNhZmVNYXRjaGVyQ2Fz
dFRlc3QsIEZyb21Db25zdFJlZmVyZW5jZVRvUmVmZXJlbmNlKSB7CisgIGludCBuID0gMDsKKyAg
TWF0Y2hlcjxjb25zdCBpbnQmPiBtMSA9IFJlZihuKTsKKyAgTWF0Y2hlcjxpbnQmPiBtMiA9IFNh
ZmVNYXRjaGVyQ2FzdDxpbnQmPihtMSk7CisgIGludCBuMSA9IDA7CisgIEVYUEVDVF9UUlVFKG0y
Lk1hdGNoZXMobikpOworICBFWFBFQ1RfRkFMU0UobTIuTWF0Y2hlcyhuMSkpOworfQorCisvLyBU
ZXN0cyB0aGF0IE1hdGNoZXJDYXN0PGNvbnN0IFQmPihtKSB3b3JrcyB3aGVuIG0gaXMgYSBNYXRj
aGVyPFQ+LgorVEVTVChTYWZlTWF0Y2hlckNhc3RUZXN0LCBGcm9tTm9uUmVmZXJlbmNlVG9Db25z
dFJlZmVyZW5jZSkgeworICBNYXRjaGVyPGludD4gbTEgPSBFcSgwKTsKKyAgTWF0Y2hlcjxjb25z
dCBpbnQmPiBtMiA9IFNhZmVNYXRjaGVyQ2FzdDxjb25zdCBpbnQmPihtMSk7CisgIEVYUEVDVF9U
UlVFKG0yLk1hdGNoZXMoMCkpOworICBFWFBFQ1RfRkFMU0UobTIuTWF0Y2hlcygxKSk7Cit9CisK
Ky8vIFRlc3RzIHRoYXQgU2FmZU1hdGNoZXJDYXN0PFQmPihtKSB3b3JrcyB3aGVuIG0gaXMgYSBN
YXRjaGVyPFQ+LgorVEVTVChTYWZlTWF0Y2hlckNhc3RUZXN0LCBGcm9tTm9uUmVmZXJlbmNlVG9S
ZWZlcmVuY2UpIHsKKyAgTWF0Y2hlcjxpbnQ+IG0xID0gRXEoMCk7CisgIE1hdGNoZXI8aW50Jj4g
bTIgPSBTYWZlTWF0Y2hlckNhc3Q8aW50Jj4obTEpOworICBpbnQgbiA9IDA7CisgIEVYUEVDVF9U
UlVFKG0yLk1hdGNoZXMobikpOworICBuID0gMTsKKyAgRVhQRUNUX0ZBTFNFKG0yLk1hdGNoZXMo
bikpOworfQorCisvLyBUZXN0cyB0aGF0IFNhZmVNYXRjaGVyQ2FzdDxUPihtKSB3b3JrcyB3aGVu
IG0gaXMgYSBNYXRjaGVyPFQ+LgorVEVTVChTYWZlTWF0Y2hlckNhc3RUZXN0LCBGcm9tU2FtZVR5
cGUpIHsKKyAgTWF0Y2hlcjxpbnQ+IG0xID0gRXEoMCk7CisgIE1hdGNoZXI8aW50PiBtMiA9IFNh
ZmVNYXRjaGVyQ2FzdDxpbnQ+KG0xKTsKKyAgRVhQRUNUX1RSVUUobTIuTWF0Y2hlcygwKSk7Cisg
IEVYUEVDVF9GQUxTRShtMi5NYXRjaGVzKDEpKTsKK30KKworVEVTVChTYWZlTWF0Y2hlckNhc3RU
ZXN0LCBDb252ZXJzaW9uQ29uc3RydWN0b3JJc1VzZWQpIHsKKyAgTWF0Y2hlcjxDb252ZXJ0aWJs
ZUZyb21Bbnk+IG0gPSBTYWZlTWF0Y2hlckNhc3Q8Q29udmVydGlibGVGcm9tQW55PigxKTsKKyAg
RVhQRUNUX1RSVUUobS5NYXRjaGVzKENvbnZlcnRpYmxlRnJvbUFueSgxKSkpOworICBFWFBFQ1Rf
RkFMU0UobS5NYXRjaGVzKENvbnZlcnRpYmxlRnJvbUFueSgyKSkpOworfQorCitURVNUKFNhZmVN
YXRjaGVyQ2FzdFRlc3QsIEZyb21Db252ZXJ0aWJsZUZyb21BbnkpIHsKKyAgTWF0Y2hlcjxDb252
ZXJ0aWJsZUZyb21Bbnk+IG0gPQorICAgICAgU2FmZU1hdGNoZXJDYXN0PENvbnZlcnRpYmxlRnJv
bUFueT4oRXEoQ29udmVydGlibGVGcm9tQW55KDEpKSk7CisgIEVYUEVDVF9UUlVFKG0uTWF0Y2hl
cyhDb252ZXJ0aWJsZUZyb21BbnkoMSkpKTsKKyAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhDb252
ZXJ0aWJsZUZyb21BbnkoMikpKTsKK30KKworVEVTVChTYWZlTWF0Y2hlckNhc3RUZXN0LCBWYWx1
ZUlzTm90Q29waWVkKSB7CisgIGludCBuID0gNDI7CisgIE1hdGNoZXI8SW50UmVmZXJlbmNlV3Jh
cHBlcj4gbSA9IFNhZmVNYXRjaGVyQ2FzdDxJbnRSZWZlcmVuY2VXcmFwcGVyPihuKTsKKyAgLy8g
VmVyaWZ5IHRoYXQgdGhlIG1hdGNoZXIgaG9sZHMgYSByZWZlcmVuY2UgdG8gbiwgbm90IHRvIGl0
cyB0ZW1wb3JhcnkgY29weS4KKyAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKG4pKTsKK30KKworVEVT
VChFeHBlY3RUaGF0LCBUYWtlc0xpdGVyYWxzKSB7CisgIEVYUEVDVF9USEFUKDEsIDEpOworICBF
WFBFQ1RfVEhBVCgxLjAsIDEuMCk7CisgIEVYUEVDVF9USEFUKHN0cmluZygpLCAiIik7Cit9CisK
K1RFU1QoRXhwZWN0VGhhdCwgVGFrZXNGdW5jdGlvbnMpIHsKKyAgc3RydWN0IEhlbHBlciB7Cisg
ICAgc3RhdGljIHZvaWQgRnVuYygpIHt9CisgIH07CisgIHZvaWQgKCpmdW5jKSgpID0gSGVscGVy
OjpGdW5jOworICBFWFBFQ1RfVEhBVChmdW5jLCBIZWxwZXI6OkZ1bmMpOworICBFWFBFQ1RfVEhB
VChmdW5jLCAmSGVscGVyOjpGdW5jKTsKK30KKworLy8gVGVzdHMgdGhhdCBBPFQ+KCkgbWF0Y2hl
cyBhbnkgdmFsdWUgb2YgdHlwZSBULgorVEVTVChBVGVzdCwgTWF0Y2hlc0FueVZhbHVlKSB7Cisg
IC8vIFRlc3RzIGEgbWF0Y2hlciBmb3IgYSB2YWx1ZSB0eXBlLgorICBNYXRjaGVyPGRvdWJsZT4g
bTEgPSBBPGRvdWJsZT4oKTsKKyAgRVhQRUNUX1RSVUUobTEuTWF0Y2hlcyg5MS40MykpOworICBF
WFBFQ1RfVFJVRShtMS5NYXRjaGVzKC0xNS4zMikpOworCisgIC8vIFRlc3RzIGEgbWF0Y2hlciBm
b3IgYSByZWZlcmVuY2UgdHlwZS4KKyAgaW50IGEgPSAyOworICBpbnQgYiA9IC02OworICBNYXRj
aGVyPGludCY+IG0yID0gQTxpbnQmPigpOworICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKGEpKTsK
KyAgRVhQRUNUX1RSVUUobTIuTWF0Y2hlcyhiKSk7Cit9CisKK1RFU1QoQVRlc3QsIFdvcmtzRm9y
RGVyaXZlZENsYXNzKSB7CisgIEJhc2UgYmFzZTsKKyAgRGVyaXZlZCBkZXJpdmVkOworICBFWFBF
Q1RfVEhBVCgmYmFzZSwgQTxCYXNlKj4oKSk7CisgIC8vIFRoaXMgc2hvdWxkbid0IGNvbXBpbGU6
IEVYUEVDVF9USEFUKCZiYXNlLCBBPERlcml2ZWQqPigpKTsKKyAgRVhQRUNUX1RIQVQoJmRlcml2
ZWQsIEE8QmFzZSo+KCkpOworICBFWFBFQ1RfVEhBVCgmZGVyaXZlZCwgQTxEZXJpdmVkKj4oKSk7
Cit9CisKKy8vIFRlc3RzIHRoYXQgQTxUPigpIGRlc2NyaWJlcyBpdHNlbGYgcHJvcGVybHkuCitU
RVNUKEFUZXN0LCBDYW5EZXNjcmliZVNlbGYpIHsKKyAgRVhQRUNUX0VRKCJpcyBhbnl0aGluZyIs
IERlc2NyaWJlKEE8Ym9vbD4oKSkpOworfQorCisvLyBUZXN0cyB0aGF0IEFuPFQ+KCkgbWF0Y2hl
cyBhbnkgdmFsdWUgb2YgdHlwZSBULgorVEVTVChBblRlc3QsIE1hdGNoZXNBbnlWYWx1ZSkgewor
ICAvLyBUZXN0cyBhIG1hdGNoZXIgZm9yIGEgdmFsdWUgdHlwZS4KKyAgTWF0Y2hlcjxpbnQ+IG0x
ID0gQW48aW50PigpOworICBFWFBFQ1RfVFJVRShtMS5NYXRjaGVzKDkxNDMpKTsKKyAgRVhQRUNU
X1RSVUUobTEuTWF0Y2hlcygtMTUzMikpOworCisgIC8vIFRlc3RzIGEgbWF0Y2hlciBmb3IgYSBy
ZWZlcmVuY2UgdHlwZS4KKyAgaW50IGEgPSAyOworICBpbnQgYiA9IC02OworICBNYXRjaGVyPGlu
dCY+IG0yID0gQW48aW50Jj4oKTsKKyAgRVhQRUNUX1RSVUUobTIuTWF0Y2hlcyhhKSk7CisgIEVY
UEVDVF9UUlVFKG0yLk1hdGNoZXMoYikpOworfQorCisvLyBUZXN0cyB0aGF0IEFuPFQ+KCkgZGVz
Y3JpYmVzIGl0c2VsZiBwcm9wZXJseS4KK1RFU1QoQW5UZXN0LCBDYW5EZXNjcmliZVNlbGYpIHsK
KyAgRVhQRUNUX0VRKCJpcyBhbnl0aGluZyIsIERlc2NyaWJlKEFuPGludD4oKSkpOworfQorCisv
LyBUZXN0cyB0aGF0IF8gY2FuIGJlIHVzZWQgYXMgYSBtYXRjaGVyIGZvciBhbnkgdHlwZSBhbmQg
bWF0Y2hlcyBhbnkKKy8vIHZhbHVlIG9mIHRoYXQgdHlwZS4KK1RFU1QoVW5kZXJzY29yZVRlc3Qs
IE1hdGNoZXNBbnlWYWx1ZSkgeworICAvLyBVc2VzIF8gYXMgYSBtYXRjaGVyIGZvciBhIHZhbHVl
IHR5cGUuCisgIE1hdGNoZXI8aW50PiBtMSA9IF87CisgIEVYUEVDVF9UUlVFKG0xLk1hdGNoZXMo
MTIzKSk7CisgIEVYUEVDVF9UUlVFKG0xLk1hdGNoZXMoLTI0MikpOworCisgIC8vIFVzZXMgXyBh
cyBhIG1hdGNoZXIgZm9yIGEgcmVmZXJlbmNlIHR5cGUuCisgIGJvb2wgYSA9IGZhbHNlOworICBj
b25zdCBib29sIGIgPSB0cnVlOworICBNYXRjaGVyPGNvbnN0IGJvb2wmPiBtMiA9IF87CisgIEVY
UEVDVF9UUlVFKG0yLk1hdGNoZXMoYSkpOworICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKGIpKTsK
K30KKworLy8gVGVzdHMgdGhhdCBfIGRlc2NyaWJlcyBpdHNlbGYgcHJvcGVybHkuCitURVNUKFVu
ZGVyc2NvcmVUZXN0LCBDYW5EZXNjcmliZVNlbGYpIHsKKyAgTWF0Y2hlcjxpbnQ+IG0gPSBfOwor
ICBFWFBFQ1RfRVEoImlzIGFueXRoaW5nIiwgRGVzY3JpYmUobSkpOworfQorCisvLyBUZXN0cyB0
aGF0IEVxKHgpIG1hdGNoZXMgYW55IHZhbHVlIGVxdWFsIHRvIHguCitURVNUKEVxVGVzdCwgTWF0
Y2hlc0VxdWFsVmFsdWUpIHsKKyAgLy8gMiBDLXN0cmluZ3Mgd2l0aCBzYW1lIGNvbnRlbnQgYnV0
IGRpZmZlcmVudCBhZGRyZXNzZXMuCisgIGNvbnN0IGNoYXIgYTFbXSA9ICJoaSI7CisgIGNvbnN0
IGNoYXIgYTJbXSA9ICJoaSI7CisKKyAgTWF0Y2hlcjxjb25zdCBjaGFyKj4gbTEgPSBFcShhMSk7
CisgIEVYUEVDVF9UUlVFKG0xLk1hdGNoZXMoYTEpKTsKKyAgRVhQRUNUX0ZBTFNFKG0xLk1hdGNo
ZXMoYTIpKTsKK30KKworLy8gVGVzdHMgdGhhdCBFcSh2KSBkZXNjcmliZXMgaXRzZWxmIHByb3Bl
cmx5LgorCitjbGFzcyBVbnByaW50YWJsZSB7CisgcHVibGljOgorICBVbnByaW50YWJsZSgpIDog
Y18oJ2EnKSB7fQorCisgcHJpdmF0ZToKKyAgY2hhciBjXzsKK307CisKK2lubGluZSBib29sIG9w
ZXJhdG9yPT0oY29uc3QgVW5wcmludGFibGUmIC8qIGxocyAqLywgCisgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFVucHJpbnRhYmxlJiAvKiByaHMgKi8pIHsgCisgICAgcmV0dXJuIHRydWU7
IAorfQorCitURVNUKEVxVGVzdCwgQ2FuRGVzY3JpYmVTZWxmKSB7CisgIE1hdGNoZXI8VW5wcmlu
dGFibGU+IG0gPSBFcShVbnByaW50YWJsZSgpKTsKKyAgRVhQRUNUX0VRKCJpcyBlcXVhbCB0byAx
LWJ5dGUgb2JqZWN0IDw2MT4iLCBEZXNjcmliZShtKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgRXEo
dikgY2FuIGJlIHVzZWQgdG8gbWF0Y2ggYW55IHR5cGUgdGhhdCBzdXBwb3J0cworLy8gY29tcGFy
aW5nIHdpdGggdHlwZSBULCB3aGVyZSBUIGlzIHYncyB0eXBlLgorVEVTVChFcVRlc3QsIElzUG9s
eW1vcnBoaWMpIHsKKyAgTWF0Y2hlcjxpbnQ+IG0xID0gRXEoMSk7CisgIEVYUEVDVF9UUlVFKG0x
Lk1hdGNoZXMoMSkpOworICBFWFBFQ1RfRkFMU0UobTEuTWF0Y2hlcygyKSk7CisKKyAgTWF0Y2hl
cjxjaGFyPiBtMiA9IEVxKDEpOworICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKCdcMScpKTsKKyAg
RVhQRUNUX0ZBTFNFKG0yLk1hdGNoZXMoJ2EnKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgVHlwZWRF
cTxUPih2KSBtYXRjaGVzIHZhbHVlcyBvZiB0eXBlIFQgdGhhdCdzIGVxdWFsIHRvIHYuCitURVNU
KFR5cGVkRXFUZXN0LCBDaGVja3NFcXVhbGl0eUZvckdpdmVuVHlwZSkgeworICBNYXRjaGVyPGNo
YXI+IG0xID0gVHlwZWRFcTxjaGFyPignYScpOworICBFWFBFQ1RfVFJVRShtMS5NYXRjaGVzKCdh
JykpOworICBFWFBFQ1RfRkFMU0UobTEuTWF0Y2hlcygnYicpKTsKKworICBNYXRjaGVyPGludD4g
bTIgPSBUeXBlZEVxPGludD4oNik7CisgIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoNikpOworICBF
WFBFQ1RfRkFMU0UobTIuTWF0Y2hlcyg3KSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgVHlwZWRFcSh2
KSBkZXNjcmliZXMgaXRzZWxmIHByb3Blcmx5LgorVEVTVChUeXBlZEVxVGVzdCwgQ2FuRGVzY3Jp
YmVTZWxmKSB7CisgIEVYUEVDVF9FUSgiaXMgZXF1YWwgdG8gMiIsIERlc2NyaWJlKFR5cGVkRXE8
aW50PigyKSkpOworfQorCisvLyBUZXN0cyB0aGF0IFR5cGVkRXE8VD4odikgaGFzIHR5cGUgTWF0
Y2hlcjxUPi4KKworLy8gVHlwZTxUPjo6SXNUeXBlT2YodikgY29tcGlsZXMgaWZmIHRoZSB0eXBl
IG9mIHZhbHVlIHYgaXMgVCwgd2hlcmUgVAorLy8gaXMgYSAiYmFyZSIgdHlwZSAoaS5lLiBub3Qg
aW4gdGhlIGZvcm0gb2YgY29uc3QgVSBvciBVJikuICBJZiB2J3MKKy8vIHR5cGUgaXMgbm90IFQs
IHRoZSBjb21waWxlciB3aWxsIGdlbmVyYXRlIGEgbWVzc2FnZSBhYm91dAorLy8gInVuZGVmaW5l
ZCByZWZlcmVjZSIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBUeXBlIHsKKyAgc3Rh
dGljIGJvb2wgSXNUeXBlT2YoY29uc3QgVCYgLyogdiAqLykgeyByZXR1cm4gdHJ1ZTsgfQorCisg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUMj4KKyAgc3RhdGljIHZvaWQgSXNUeXBlT2YoVDIgdik7Cit9
OworCitURVNUKFR5cGVkRXFUZXN0LCBIYXNTcGVjaWZpZWRUeXBlKSB7CisgIC8vIFZlcmZpZXMg
dGhhdCB0aGUgdHlwZSBvZiBUeXBlZEVxPFQ+KHYpIGlzIE1hdGNoZXI8VD4uCisgIFR5cGU8TWF0
Y2hlcjxpbnQ+ID46OklzVHlwZU9mKFR5cGVkRXE8aW50Pig1KSk7CisgIFR5cGU8TWF0Y2hlcjxk
b3VibGU+ID46OklzVHlwZU9mKFR5cGVkRXE8ZG91YmxlPig1KSk7Cit9CisKKy8vIFRlc3RzIHRo
YXQgR2UodikgbWF0Y2hlcyBhbnl0aGluZyA+PSB2LgorVEVTVChHZVRlc3QsIEltcGxlbWVudHNH
cmVhdGVyVGhhbk9yRXF1YWwpIHsKKyAgTWF0Y2hlcjxpbnQ+IG0xID0gR2UoMCk7CisgIEVYUEVD
VF9UUlVFKG0xLk1hdGNoZXMoMSkpOworICBFWFBFQ1RfVFJVRShtMS5NYXRjaGVzKDApKTsKKyAg
RVhQRUNUX0ZBTFNFKG0xLk1hdGNoZXMoLTEpKTsKK30KKworLy8gVGVzdHMgdGhhdCBHZSh2KSBk
ZXNjcmliZXMgaXRzZWxmIHByb3Blcmx5LgorVEVTVChHZVRlc3QsIENhbkRlc2NyaWJlU2VsZikg
eworICBNYXRjaGVyPGludD4gbSA9IEdlKDUpOworICBFWFBFQ1RfRVEoImlzID49IDUiLCBEZXNj
cmliZShtKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgR3QodikgbWF0Y2hlcyBhbnl0aGluZyA+IHYu
CitURVNUKEd0VGVzdCwgSW1wbGVtZW50c0dyZWF0ZXJUaGFuKSB7CisgIE1hdGNoZXI8ZG91Ymxl
PiBtMSA9IEd0KDApOworICBFWFBFQ1RfVFJVRShtMS5NYXRjaGVzKDEuMCkpOworICBFWFBFQ1Rf
RkFMU0UobTEuTWF0Y2hlcygwLjApKTsKKyAgRVhQRUNUX0ZBTFNFKG0xLk1hdGNoZXMoLTEuMCkp
OworfQorCisvLyBUZXN0cyB0aGF0IEd0KHYpIGRlc2NyaWJlcyBpdHNlbGYgcHJvcGVybHkuCitU
RVNUKEd0VGVzdCwgQ2FuRGVzY3JpYmVTZWxmKSB7CisgIE1hdGNoZXI8aW50PiBtID0gR3QoNSk7
CisgIEVYUEVDVF9FUSgiaXMgPiA1IiwgRGVzY3JpYmUobSkpOworfQorCisvLyBUZXN0cyB0aGF0
IExlKHYpIG1hdGNoZXMgYW55dGhpbmcgPD0gdi4KK1RFU1QoTGVUZXN0LCBJbXBsZW1lbnRzTGVz
c1RoYW5PckVxdWFsKSB7CisgIE1hdGNoZXI8Y2hhcj4gbTEgPSBMZSgnYicpOworICBFWFBFQ1Rf
VFJVRShtMS5NYXRjaGVzKCdhJykpOworICBFWFBFQ1RfVFJVRShtMS5NYXRjaGVzKCdiJykpOwor
ICBFWFBFQ1RfRkFMU0UobTEuTWF0Y2hlcygnYycpKTsKK30KKworLy8gVGVzdHMgdGhhdCBMZSh2
KSBkZXNjcmliZXMgaXRzZWxmIHByb3Blcmx5LgorVEVTVChMZVRlc3QsIENhbkRlc2NyaWJlU2Vs
ZikgeworICBNYXRjaGVyPGludD4gbSA9IExlKDUpOworICBFWFBFQ1RfRVEoImlzIDw9IDUiLCBE
ZXNjcmliZShtKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgTHQodikgbWF0Y2hlcyBhbnl0aGluZyA8
IHYuCitURVNUKEx0VGVzdCwgSW1wbGVtZW50c0xlc3NUaGFuKSB7CisgIE1hdGNoZXI8Y29uc3Qg
c3RkOjpzdHJpbmcmPiBtMSA9IEx0KCJIZWxsbyIpOworICBFWFBFQ1RfVFJVRShtMS5NYXRjaGVz
KCJBYmMiKSk7CisgIEVYUEVDVF9GQUxTRShtMS5NYXRjaGVzKCJIZWxsbyIpKTsKKyAgRVhQRUNU
X0ZBTFNFKG0xLk1hdGNoZXMoIkhlbGxvLCB3b3JsZCEiKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQg
THQodikgZGVzY3JpYmVzIGl0c2VsZiBwcm9wZXJseS4KK1RFU1QoTHRUZXN0LCBDYW5EZXNjcmli
ZVNlbGYpIHsKKyAgTWF0Y2hlcjxpbnQ+IG0gPSBMdCg1KTsKKyAgRVhQRUNUX0VRKCJpcyA8IDUi
LCBEZXNjcmliZShtKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgTmUodikgbWF0Y2hlcyBhbnl0aGlu
ZyAhPSB2LgorVEVTVChOZVRlc3QsIEltcGxlbWVudHNOb3RFcXVhbCkgeworICBNYXRjaGVyPGlu
dD4gbTEgPSBOZSgwKTsKKyAgRVhQRUNUX1RSVUUobTEuTWF0Y2hlcygxKSk7CisgIEVYUEVDVF9U
UlVFKG0xLk1hdGNoZXMoLTEpKTsKKyAgRVhQRUNUX0ZBTFNFKG0xLk1hdGNoZXMoMCkpOworfQor
CisvLyBUZXN0cyB0aGF0IE5lKHYpIGRlc2NyaWJlcyBpdHNlbGYgcHJvcGVybHkuCitURVNUKE5l
VGVzdCwgQ2FuRGVzY3JpYmVTZWxmKSB7CisgIE1hdGNoZXI8aW50PiBtID0gTmUoNSk7CisgIEVY
UEVDVF9FUSgiaXNuJ3QgZXF1YWwgdG8gNSIsIERlc2NyaWJlKG0pKTsKK30KKworLy8gVGVzdHMg
dGhhdCBJc051bGwoKSBtYXRjaGVzIGFueSBOVUxMIHBvaW50ZXIgb2YgYW55IHR5cGUuCitURVNU
KElzTnVsbFRlc3QsIE1hdGNoZXNOdWxsUG9pbnRlcikgeworICBNYXRjaGVyPGludCo+IG0xID0g
SXNOdWxsKCk7CisgIGludCogcDEgPSBOVUxMOworICBpbnQgbiA9IDA7CisgIEVYUEVDVF9UUlVF
KG0xLk1hdGNoZXMocDEpKTsKKyAgRVhQRUNUX0ZBTFNFKG0xLk1hdGNoZXMoJm4pKTsKKworICBN
YXRjaGVyPGNvbnN0IGNoYXIqPiBtMiA9IElzTnVsbCgpOworICBjb25zdCBjaGFyKiBwMiA9IE5V
TEw7CisgIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMocDIpKTsKKyAgRVhQRUNUX0ZBTFNFKG0yLk1h
dGNoZXMoImhpIikpOworCisjaWYgIUdURVNUX09TX1NZTUJJQU4KKyAgLy8gTm9raWEncyBTeW1i
aWFuIGNvbXBpbGVyIGdlbmVyYXRlczoKKyAgLy8gZ21vY2stbWF0Y2hlcnMuaDogYW1iaWd1b3Vz
IGFjY2VzcyB0byBvdmVybG9hZGVkIGZ1bmN0aW9uCisgIC8vIGdtb2NrLW1hdGNoZXJzLmg6ICd0
ZXN0aW5nOjpNYXRjaGVyPHZvaWQgKj46Ok1hdGNoZXIodm9pZCAqKScKKyAgLy8gZ21vY2stbWF0
Y2hlcnMuaDogJ3Rlc3Rpbmc6Ok1hdGNoZXI8dm9pZCAqPjo6TWF0Y2hlcihjb25zdCB0ZXN0aW5n
OjoKKyAgLy8gICAgIE1hdGNoZXJJbnRlcmZhY2U8dm9pZCAqPiAqKScKKyAgLy8gZ21vY2stbWF0
Y2hlcnMuaDogIChwb2ludCBvZiBpbnN0YW50aWF0aW9uOiAndGVzdGluZzo6CisgIC8vICAgICBn
bW9ja19tYXRjaGVyc190ZXN0OjpJc051bGxUZXN0X01hdGNoZXNOdWxsUG9pbnRlcl9UZXN0OjpU
ZXN0Qm9keSgpJykKKyAgLy8gZ21vY2stbWF0Y2hlcnMuaDogICAoaW5zdGFudGlhdGluZzogJ3Rl
c3Rpbmc6OlBvbHltb3JwaGljTWF0YworICBNYXRjaGVyPHZvaWQqPiBtMyA9IElzTnVsbCgpOwor
ICB2b2lkKiBwMyA9IE5VTEw7CisgIEVYUEVDVF9UUlVFKG0zLk1hdGNoZXMocDMpKTsKKyAgRVhQ
RUNUX0ZBTFNFKG0zLk1hdGNoZXMocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMHhiZWVmKSkpOwor
I2VuZGlmCit9CisKK1RFU1QoSXNOdWxsVGVzdCwgTGlua2VkUHRyKSB7CisgIGNvbnN0IE1hdGNo
ZXI8bGlua2VkX3B0cjxpbnQ+ID4gbSA9IElzTnVsbCgpOworICBjb25zdCBsaW5rZWRfcHRyPGlu
dD4gbnVsbF9wOworICBjb25zdCBsaW5rZWRfcHRyPGludD4gbm9uX251bGxfcChuZXcgaW50KTsK
KworICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMobnVsbF9wKSk7CisgIEVYUEVDVF9GQUxTRShtLk1h
dGNoZXMobm9uX251bGxfcCkpOworfQorCitURVNUKElzTnVsbFRlc3QsIFJlZmVyZW5jZVRvQ29u
c3RMaW5rZWRQdHIpIHsKKyAgY29uc3QgTWF0Y2hlcjxjb25zdCBsaW5rZWRfcHRyPGRvdWJsZT4m
PiBtID0gSXNOdWxsKCk7CisgIGNvbnN0IGxpbmtlZF9wdHI8ZG91YmxlPiBudWxsX3A7CisgIGNv
bnN0IGxpbmtlZF9wdHI8ZG91YmxlPiBub25fbnVsbF9wKG5ldyBkb3VibGUpOworCisgIEVYUEVD
VF9UUlVFKG0uTWF0Y2hlcyhudWxsX3ApKTsKKyAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhub25f
bnVsbF9wKSk7Cit9CisKKyNpZiBHVEVTVF9IQVNfU1REX0ZVTkNUSU9OXworVEVTVChJc051bGxU
ZXN0LCBTdGRGdW5jdGlvbikgeworICBjb25zdCBNYXRjaGVyPHN0ZDo6ZnVuY3Rpb248dm9pZCgp
Pj4gbSA9IElzTnVsbCgpOworCisgIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhzdGQ6OmZ1bmN0aW9u
PHZvaWQoKT4oKSkpOworICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKFtde30pKTsKK30KKyNlbmRp
ZiAgLy8gR1RFU1RfSEFTX1NURF9GVU5DVElPTl8KKworLy8gVGVzdHMgdGhhdCBJc051bGwoKSBk
ZXNjcmliZXMgaXRzZWxmIHByb3Blcmx5LgorVEVTVChJc051bGxUZXN0LCBDYW5EZXNjcmliZVNl
bGYpIHsKKyAgTWF0Y2hlcjxpbnQqPiBtID0gSXNOdWxsKCk7CisgIEVYUEVDVF9FUSgiaXMgTlVM
TCIsIERlc2NyaWJlKG0pKTsKKyAgRVhQRUNUX0VRKCJpc24ndCBOVUxMIiwgRGVzY3JpYmVOZWdh
dGlvbihtKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgTm90TnVsbCgpIG1hdGNoZXMgYW55IG5vbi1O
VUxMIHBvaW50ZXIgb2YgYW55IHR5cGUuCitURVNUKE5vdE51bGxUZXN0LCBNYXRjaGVzTm9uTnVs
bFBvaW50ZXIpIHsKKyAgTWF0Y2hlcjxpbnQqPiBtMSA9IE5vdE51bGwoKTsKKyAgaW50KiBwMSA9
IE5VTEw7CisgIGludCBuID0gMDsKKyAgRVhQRUNUX0ZBTFNFKG0xLk1hdGNoZXMocDEpKTsKKyAg
RVhQRUNUX1RSVUUobTEuTWF0Y2hlcygmbikpOworCisgIE1hdGNoZXI8Y29uc3QgY2hhcio+IG0y
ID0gTm90TnVsbCgpOworICBjb25zdCBjaGFyKiBwMiA9IE5VTEw7CisgIEVYUEVDVF9GQUxTRSht
Mi5NYXRjaGVzKHAyKSk7CisgIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoImhpIikpOworfQorCitU
RVNUKE5vdE51bGxUZXN0LCBMaW5rZWRQdHIpIHsKKyAgY29uc3QgTWF0Y2hlcjxsaW5rZWRfcHRy
PGludD4gPiBtID0gTm90TnVsbCgpOworICBjb25zdCBsaW5rZWRfcHRyPGludD4gbnVsbF9wOwor
ICBjb25zdCBsaW5rZWRfcHRyPGludD4gbm9uX251bGxfcChuZXcgaW50KTsKKworICBFWFBFQ1Rf
RkFMU0UobS5NYXRjaGVzKG51bGxfcCkpOworICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMobm9uX251
bGxfcCkpOworfQorCitURVNUKE5vdE51bGxUZXN0LCBSZWZlcmVuY2VUb0NvbnN0TGlua2VkUHRy
KSB7CisgIGNvbnN0IE1hdGNoZXI8Y29uc3QgbGlua2VkX3B0cjxkb3VibGU+Jj4gbSA9IE5vdE51
bGwoKTsKKyAgY29uc3QgbGlua2VkX3B0cjxkb3VibGU+IG51bGxfcDsKKyAgY29uc3QgbGlua2Vk
X3B0cjxkb3VibGU+IG5vbl9udWxsX3AobmV3IGRvdWJsZSk7CisKKyAgRVhQRUNUX0ZBTFNFKG0u
TWF0Y2hlcyhudWxsX3ApKTsKKyAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKG5vbl9udWxsX3ApKTsK
K30KKworI2lmIEdURVNUX0hBU19TVERfRlVOQ1RJT05fCitURVNUKE5vdE51bGxUZXN0LCBTdGRG
dW5jdGlvbikgeworICBjb25zdCBNYXRjaGVyPHN0ZDo6ZnVuY3Rpb248dm9pZCgpPj4gbSA9IE5v
dE51bGwoKTsKKworICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoW117fSkpOworICBFWFBFQ1RfRkFM
U0UobS5NYXRjaGVzKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPigpKSk7Cit9CisjZW5kaWYgIC8vIEdU
RVNUX0hBU19TVERfRlVOQ1RJT05fCisKKy8vIFRlc3RzIHRoYXQgTm90TnVsbCgpIGRlc2NyaWJl
cyBpdHNlbGYgcHJvcGVybHkuCitURVNUKE5vdE51bGxUZXN0LCBDYW5EZXNjcmliZVNlbGYpIHsK
KyAgTWF0Y2hlcjxpbnQqPiBtID0gTm90TnVsbCgpOworICBFWFBFQ1RfRVEoImlzbid0IE5VTEwi
LCBEZXNjcmliZShtKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgUmVmKHZhcmlhYmxlKSBtYXRjaGVz
IGFuIGFyZ3VtZW50IHRoYXQgcmVmZXJlbmNlcworLy8gJ3ZhcmlhYmxlJy4KK1RFU1QoUmVmVGVz
dCwgTWF0Y2hlc1NhbWVWYXJpYWJsZSkgeworICBpbnQgYSA9IDA7CisgIGludCBiID0gMDsKKyAg
TWF0Y2hlcjxpbnQmPiBtID0gUmVmKGEpOworICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoYSkpOwor
ICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKGIpKTsKK30KKworLy8gVGVzdHMgdGhhdCBSZWYodmFy
aWFibGUpIGRlc2NyaWJlcyBpdHNlbGYgcHJvcGVybHkuCitURVNUKFJlZlRlc3QsIENhbkRlc2Ny
aWJlU2VsZikgeworICBpbnQgbiA9IDU7CisgIE1hdGNoZXI8aW50Jj4gbSA9IFJlZihuKTsKKyAg
c3RyaW5nc3RyZWFtIHNzOworICBzcyA8PCAicmVmZXJlbmNlcyB0aGUgdmFyaWFibGUgQCIgPDwg
Jm4gPDwgIiA1IjsKKyAgRVhQRUNUX0VRKHNzLnN0cigpLCBEZXNjcmliZShtKSk7Cit9CisKKy8v
IFRlc3QgdGhhdCBSZWYobm9uX2NvbnN0X3ZhcmlhbGJlKSBjYW4gYmUgdXNlZCBhcyBhIG1hdGNo
ZXIgZm9yIGEKKy8vIGNvbnN0IHJlZmVyZW5jZS4KK1RFU1QoUmVmVGVzdCwgQ2FuQmVVc2VkQXNN
YXRjaGVyRm9yQ29uc3RSZWZlcmVuY2UpIHsKKyAgaW50IGEgPSAwOworICBpbnQgYiA9IDA7Cisg
IE1hdGNoZXI8Y29uc3QgaW50Jj4gbSA9IFJlZihhKTsKKyAgRVhQRUNUX1RSVUUobS5NYXRjaGVz
KGEpKTsKKyAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhiKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQg
UmVmKHZhcmlhYmxlKSBpcyBjb3ZhcmlhbnQsIGkuZS4gUmVmKGRlcml2ZWQpIGNhbiBiZQorLy8g
dXNlZCB3aGVyZXZlciBSZWYoYmFzZSkgY2FuIGJlIHVzZWQgKFJlZihkZXJpdmVkKSBpcyBhIHN1
Yi10eXBlCisvLyBvZiBSZWYoYmFzZSksIGJ1dCBub3QgdmljZSB2ZXJzYS4KKworVEVTVChSZWZU
ZXN0LCBJc0NvdmFyaWFudCkgeworICBCYXNlIGJhc2UsIGJhc2UyOworICBEZXJpdmVkIGRlcml2
ZWQ7CisgIE1hdGNoZXI8Y29uc3QgQmFzZSY+IG0xID0gUmVmKGJhc2UpOworICBFWFBFQ1RfVFJV
RShtMS5NYXRjaGVzKGJhc2UpKTsKKyAgRVhQRUNUX0ZBTFNFKG0xLk1hdGNoZXMoYmFzZTIpKTsK
KyAgRVhQRUNUX0ZBTFNFKG0xLk1hdGNoZXMoZGVyaXZlZCkpOworCisgIG0xID0gUmVmKGRlcml2
ZWQpOworICBFWFBFQ1RfVFJVRShtMS5NYXRjaGVzKGRlcml2ZWQpKTsKKyAgRVhQRUNUX0ZBTFNF
KG0xLk1hdGNoZXMoYmFzZSkpOworICBFWFBFQ1RfRkFMU0UobTEuTWF0Y2hlcyhiYXNlMikpOwor
fQorCitURVNUKFJlZlRlc3QsIEV4cGxhaW5zUmVzdWx0KSB7CisgIGludCBuID0gMDsKKyAgRVhQ
RUNUX1RIQVQoRXhwbGFpbihNYXRjaGVyPGNvbnN0IGludCY+KFJlZihuKSksIG4pLAorICAgICAg
ICAgICAgICBTdGFydHNXaXRoKCJ3aGljaCBpcyBsb2NhdGVkIEAiKSk7CisKKyAgaW50IG0gPSAw
OworICBFWFBFQ1RfVEhBVChFeHBsYWluKE1hdGNoZXI8Y29uc3QgaW50Jj4oUmVmKG4pKSwgbSks
CisgICAgICAgICAgICAgIFN0YXJ0c1dpdGgoIndoaWNoIGlzIGxvY2F0ZWQgQCIpKTsKK30KKwor
Ly8gVGVzdHMgc3RyaW5nIGNvbXBhcmlzb24gbWF0Y2hlcnMuCisKK1RFU1QoU3RyRXFUZXN0LCBN
YXRjaGVzRXF1YWxTdHJpbmcpIHsKKyAgTWF0Y2hlcjxjb25zdCBjaGFyKj4gbSA9IFN0ckVxKHN0
ZDo6c3RyaW5nKCJIZWxsbyIpKTsKKyAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKCJIZWxsbyIpKTsK
KyAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcygiaGVsbG8iKSk7CisgIEVYUEVDVF9GQUxTRShtLk1h
dGNoZXMoTlVMTCkpOworCisgIE1hdGNoZXI8Y29uc3Qgc3RkOjpzdHJpbmcmPiBtMiA9IFN0ckVx
KCJIZWxsbyIpOworICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKCJIZWxsbyIpKTsKKyAgRVhQRUNU
X0ZBTFNFKG0yLk1hdGNoZXMoIkhpIikpOworfQorCitURVNUKFN0ckVxVGVzdCwgQ2FuRGVzY3Jp
YmVTZWxmKSB7CisgIE1hdGNoZXI8c3RkOjpzdHJpbmc+IG0gPSBTdHJFcSgiSGktXCdcIj9cXFxh
XGJcZlxuXHJcdFx2XHhEMyIpOworICBFWFBFQ1RfRVEoImlzIGVxdWFsIHRvIFwiSGktXCdcXFwi
P1xcXFxcXGFcXGJcXGZcXG5cXHJcXHRcXHZcXHhEM1wiIiwKKyAgICAgIERlc2NyaWJlKG0pKTsK
KworICBzdGQ6OnN0cmluZyBzdHIoIjAxMjA0NTAwODAwIik7CisgIHN0clszXSA9ICdcMCc7Cisg
IE1hdGNoZXI8c3RkOjpzdHJpbmc+IG0yID0gU3RyRXEoc3RyKTsKKyAgRVhQRUNUX0VRKCJpcyBl
cXVhbCB0byBcIjAxMlxcMDQ1MDA4MDBcIiIsIERlc2NyaWJlKG0yKSk7CisgIHN0clswXSA9IHN0
cls2XSA9IHN0cls3XSA9IHN0cls5XSA9IHN0clsxMF0gPSAnXDAnOworICBNYXRjaGVyPHN0ZDo6
c3RyaW5nPiBtMyA9IFN0ckVxKHN0cik7CisgIEVYUEVDVF9FUSgiaXMgZXF1YWwgdG8gXCJcXDAx
MlxcMDQ1XFwwXFwwOFxcMFxcMFwiIiwgRGVzY3JpYmUobTMpKTsKK30KKworVEVTVChTdHJOZVRl
c3QsIE1hdGNoZXNVbmVxdWFsU3RyaW5nKSB7CisgIE1hdGNoZXI8Y29uc3QgY2hhcio+IG0gPSBT
dHJOZSgiSGVsbG8iKTsKKyAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKCIiKSk7CisgIEVYUEVDVF9U
UlVFKG0uTWF0Y2hlcyhOVUxMKSk7CisgIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoIkhlbGxvIikp
OworCisgIE1hdGNoZXI8c3RkOjpzdHJpbmc+IG0yID0gU3RyTmUoc3RkOjpzdHJpbmcoIkhlbGxv
IikpOworICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKCJoZWxsbyIpKTsKKyAgRVhQRUNUX0ZBTFNF
KG0yLk1hdGNoZXMoIkhlbGxvIikpOworfQorCitURVNUKFN0ck5lVGVzdCwgQ2FuRGVzY3JpYmVT
ZWxmKSB7CisgIE1hdGNoZXI8Y29uc3QgY2hhcio+IG0gPSBTdHJOZSgiSGkiKTsKKyAgRVhQRUNU
X0VRKCJpc24ndCBlcXVhbCB0byBcIkhpXCIiLCBEZXNjcmliZShtKSk7Cit9CisKK1RFU1QoU3Ry
Q2FzZUVxVGVzdCwgTWF0Y2hlc0VxdWFsU3RyaW5nSWdub3JpbmdDYXNlKSB7CisgIE1hdGNoZXI8
Y29uc3QgY2hhcio+IG0gPSBTdHJDYXNlRXEoc3RyaW5nKCJIZWxsbyIpKTsKKyAgRVhQRUNUX1RS
VUUobS5NYXRjaGVzKCJIZWxsbyIpKTsKKyAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKCJoZWxsbyIp
KTsKKyAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcygiSGkiKSk7CisgIEVYUEVDVF9GQUxTRShtLk1h
dGNoZXMoTlVMTCkpOworCisgIE1hdGNoZXI8Y29uc3Qgc3RyaW5nJj4gbTIgPSBTdHJDYXNlRXEo
IkhlbGxvIik7CisgIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoImhlbGxvIikpOworICBFWFBFQ1Rf
RkFMU0UobTIuTWF0Y2hlcygiSGkiKSk7Cit9CisKK1RFU1QoU3RyQ2FzZUVxVGVzdCwgTWF0Y2hl
c0VxdWFsU3RyaW5nV2l0aDBJZ25vcmluZ0Nhc2UpIHsKKyAgc3RkOjpzdHJpbmcgc3RyMSgib2Fi
b2Nkb29lb28iKTsKKyAgc3RkOjpzdHJpbmcgc3RyMigiT0FCT0NET09FT08iKTsKKyAgTWF0Y2hl
cjxjb25zdCBzdGQ6OnN0cmluZyY+IG0wID0gU3RyQ2FzZUVxKHN0cjEpOworICBFWFBFQ1RfRkFM
U0UobTAuTWF0Y2hlcyhzdHIyICsgc3RkOjpzdHJpbmcoMSwgJ1wwJykpKTsKKworICBzdHIxWzNd
ID0gc3RyMlszXSA9ICdcMCc7CisgIE1hdGNoZXI8Y29uc3Qgc3RkOjpzdHJpbmcmPiBtMSA9IFN0
ckNhc2VFcShzdHIxKTsKKyAgRVhQRUNUX1RSVUUobTEuTWF0Y2hlcyhzdHIyKSk7CisKKyAgc3Ry
MVswXSA9IHN0cjFbNl0gPSBzdHIxWzddID0gc3RyMVsxMF0gPSAnXDAnOworICBzdHIyWzBdID0g
c3RyMls2XSA9IHN0cjJbN10gPSBzdHIyWzEwXSA9ICdcMCc7CisgIE1hdGNoZXI8Y29uc3Qgc3Rk
OjpzdHJpbmcmPiBtMiA9IFN0ckNhc2VFcShzdHIxKTsKKyAgc3RyMVs5XSA9IHN0cjJbOV0gPSAn
XDAnOworICBFWFBFQ1RfRkFMU0UobTIuTWF0Y2hlcyhzdHIyKSk7CisKKyAgTWF0Y2hlcjxjb25z
dCBzdGQ6OnN0cmluZyY+IG0zID0gU3RyQ2FzZUVxKHN0cjEpOworICBFWFBFQ1RfVFJVRShtMy5N
YXRjaGVzKHN0cjIpKTsKKworICBFWFBFQ1RfRkFMU0UobTMuTWF0Y2hlcyhzdHIyICsgIngiKSk7
CisgIHN0cjIuYXBwZW5kKDEsICdcMCcpOworICBFWFBFQ1RfRkFMU0UobTMuTWF0Y2hlcyhzdHIy
KSk7CisgIEVYUEVDVF9GQUxTRShtMy5NYXRjaGVzKHN0ZDo6c3RyaW5nKHN0cjIsIDAsIDkpKSk7
Cit9CisKK1RFU1QoU3RyQ2FzZUVxVGVzdCwgQ2FuRGVzY3JpYmVTZWxmKSB7CisgIE1hdGNoZXI8
c3RkOjpzdHJpbmc+IG0gPSBTdHJDYXNlRXEoIkhpIik7CisgIEVYUEVDVF9FUSgiaXMgZXF1YWwg
dG8gKGlnbm9yaW5nIGNhc2UpIFwiSGlcIiIsIERlc2NyaWJlKG0pKTsKK30KKworVEVTVChTdHJD
YXNlTmVUZXN0LCBNYXRjaGVzVW5lcXVhbFN0cmluZ0lnbm9yaW5nQ2FzZSkgeworICBNYXRjaGVy
PGNvbnN0IGNoYXIqPiBtID0gU3RyQ2FzZU5lKCJIZWxsbyIpOworICBFWFBFQ1RfVFJVRShtLk1h
dGNoZXMoIkhpIikpOworICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoTlVMTCkpOworICBFWFBFQ1Rf
RkFMU0UobS5NYXRjaGVzKCJIZWxsbyIpKTsKKyAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcygiaGVs
bG8iKSk7CisKKyAgTWF0Y2hlcjxzdGQ6OnN0cmluZz4gbTIgPSBTdHJDYXNlTmUoc3RkOjpzdHJp
bmcoIkhlbGxvIikpOworICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKCIiKSk7CisgIEVYUEVDVF9G
QUxTRShtMi5NYXRjaGVzKCJIZWxsbyIpKTsKK30KKworVEVTVChTdHJDYXNlTmVUZXN0LCBDYW5E
ZXNjcmliZVNlbGYpIHsKKyAgTWF0Y2hlcjxjb25zdCBjaGFyKj4gbSA9IFN0ckNhc2VOZSgiSGki
KTsKKyAgRVhQRUNUX0VRKCJpc24ndCBlcXVhbCB0byAoaWdub3JpbmcgY2FzZSkgXCJIaVwiIiwg
RGVzY3JpYmUobSkpOworfQorCisvLyBUZXN0cyB0aGF0IEhhc1N1YnN0cigpIHdvcmtzIGZvciBt
YXRjaGluZyBzdHJpbmctdHlwZWQgdmFsdWVzLgorVEVTVChIYXNTdWJzdHJUZXN0LCBXb3Jrc0Zv
clN0cmluZ0NsYXNzZXMpIHsKKyAgY29uc3QgTWF0Y2hlcjxzdGQ6OnN0cmluZz4gbTEgPSBIYXNT
dWJzdHIoImZvbyIpOworICBFWFBFQ1RfVFJVRShtMS5NYXRjaGVzKHN0ZDo6c3RyaW5nKCJJIGxv
dmUgZm9vZC4iKSkpOworICBFWFBFQ1RfRkFMU0UobTEuTWF0Y2hlcyhzdGQ6OnN0cmluZygidG9m
byIpKSk7CisKKyAgY29uc3QgTWF0Y2hlcjxjb25zdCBzdGQ6OnN0cmluZyY+IG0yID0gSGFzU3Vi
c3RyKCJmb28iKTsKKyAgRVhQRUNUX1RSVUUobTIuTWF0Y2hlcyhzdGQ6OnN0cmluZygiSSBsb3Zl
IGZvb2QuIikpKTsKKyAgRVhQRUNUX0ZBTFNFKG0yLk1hdGNoZXMoc3RkOjpzdHJpbmcoInRvZm8i
KSkpOworfQorCisvLyBUZXN0cyB0aGF0IEhhc1N1YnN0cigpIHdvcmtzIGZvciBtYXRjaGluZyBD
LXN0cmluZy10eXBlZCB2YWx1ZXMuCitURVNUKEhhc1N1YnN0clRlc3QsIFdvcmtzRm9yQ1N0cmlu
Z3MpIHsKKyAgY29uc3QgTWF0Y2hlcjxjaGFyKj4gbTEgPSBIYXNTdWJzdHIoImZvbyIpOworICBF
WFBFQ1RfVFJVRShtMS5NYXRjaGVzKGNvbnN0X2Nhc3Q8Y2hhcio+KCJJIGxvdmUgZm9vZC4iKSkp
OworICBFWFBFQ1RfRkFMU0UobTEuTWF0Y2hlcyhjb25zdF9jYXN0PGNoYXIqPigidG9mbyIpKSk7
CisgIEVYUEVDVF9GQUxTRShtMS5NYXRjaGVzKE5VTEwpKTsKKworICBjb25zdCBNYXRjaGVyPGNv
bnN0IGNoYXIqPiBtMiA9IEhhc1N1YnN0cigiZm9vIik7CisgIEVYUEVDVF9UUlVFKG0yLk1hdGNo
ZXMoIkkgbG92ZSBmb29kLiIpKTsKKyAgRVhQRUNUX0ZBTFNFKG0yLk1hdGNoZXMoInRvZm8iKSk7
CisgIEVYUEVDVF9GQUxTRShtMi5NYXRjaGVzKE5VTEwpKTsKK30KKworLy8gVGVzdHMgdGhhdCBI
YXNTdWJzdHIocykgZGVzY3JpYmVzIGl0c2VsZiBwcm9wZXJseS4KK1RFU1QoSGFzU3Vic3RyVGVz
dCwgQ2FuRGVzY3JpYmVTZWxmKSB7CisgIE1hdGNoZXI8c3RkOjpzdHJpbmc+IG0gPSBIYXNTdWJz
dHIoImZvb1xuXCIiKTsKKyAgRVhQRUNUX0VRKCJoYXMgc3Vic3RyaW5nIFwiZm9vXFxuXFxcIlwi
IiwgRGVzY3JpYmUobSkpOworfQorCitURVNUKEtleVRlc3QsIENhbkRlc2NyaWJlU2VsZikgewor
ICBNYXRjaGVyPGNvbnN0IHBhaXI8c3RkOjpzdHJpbmcsIGludD4mPiBtID0gS2V5KCJmb28iKTsK
KyAgRVhQRUNUX0VRKCJoYXMgYSBrZXkgdGhhdCBpcyBlcXVhbCB0byBcImZvb1wiIiwgRGVzY3Jp
YmUobSkpOworICBFWFBFQ1RfRVEoImRvZXNuJ3QgaGF2ZSBhIGtleSB0aGF0IGlzIGVxdWFsIHRv
IFwiZm9vXCIiLCBEZXNjcmliZU5lZ2F0aW9uKG0pKTsKK30KKworVEVTVChLZXlUZXN0LCBFeHBs
YWluc1Jlc3VsdCkgeworICBNYXRjaGVyPHBhaXI8aW50LCBib29sPiA+IG0gPSBLZXkoR3JlYXRl
clRoYW4oMTApKTsKKyAgRVhQRUNUX0VRKCJ3aG9zZSBmaXJzdCBmaWVsZCBpcyBhIHZhbHVlIHdo
aWNoIGlzIDUgbGVzcyB0aGFuIDEwIiwKKyAgICAgICAgICAgIEV4cGxhaW4obSwgbWFrZV9wYWly
KDUsIHRydWUpKSk7CisgIEVYUEVDVF9FUSgid2hvc2UgZmlyc3QgZmllbGQgaXMgYSB2YWx1ZSB3
aGljaCBpcyA1IG1vcmUgdGhhbiAxMCIsCisgICAgICAgICAgICBFeHBsYWluKG0sIG1ha2VfcGFp
cigxNSwgdHJ1ZSkpKTsKK30KKworVEVTVChLZXlUZXN0LCBNYXRjaGVzQ29ycmVjdGx5KSB7Cisg
IHBhaXI8aW50LCBzdGQ6OnN0cmluZz4gcCgyNSwgImZvbyIpOworICBFWFBFQ1RfVEhBVChwLCBL
ZXkoMjUpKTsKKyAgRVhQRUNUX1RIQVQocCwgTm90KEtleSg0MikpKTsKKyAgRVhQRUNUX1RIQVQo
cCwgS2V5KEdlKDIwKSkpOworICBFWFBFQ1RfVEhBVChwLCBOb3QoS2V5KEx0KDI1KSkpKTsKK30K
KworVEVTVChLZXlUZXN0LCBTYWZlbHlDYXN0c0lubmVyTWF0Y2hlcikgeworICBNYXRjaGVyPGlu
dD4gaXNfcG9zaXRpdmUgPSBHdCgwKTsKKyAgTWF0Y2hlcjxpbnQ+IGlzX25lZ2F0aXZlID0gTHQo
MCk7CisgIHBhaXI8Y2hhciwgYm9vbD4gcCgnYScsIHRydWUpOworICBFWFBFQ1RfVEhBVChwLCBL
ZXkoaXNfcG9zaXRpdmUpKTsKKyAgRVhQRUNUX1RIQVQocCwgTm90KEtleShpc19uZWdhdGl2ZSkp
KTsKK30KKworVEVTVChLZXlUZXN0LCBJbnNpZGVDb250YWluc1VzaW5nTWFwKSB7CisgIG1hcDxp
bnQsIGNoYXI+IGNvbnRhaW5lcjsKKyAgY29udGFpbmVyLmluc2VydChtYWtlX3BhaXIoMSwgJ2En
KSk7CisgIGNvbnRhaW5lci5pbnNlcnQobWFrZV9wYWlyKDIsICdiJykpOworICBjb250YWluZXIu
aW5zZXJ0KG1ha2VfcGFpcig0LCAnYycpKTsKKyAgRVhQRUNUX1RIQVQoY29udGFpbmVyLCBDb250
YWlucyhLZXkoMSkpKTsKKyAgRVhQRUNUX1RIQVQoY29udGFpbmVyLCBOb3QoQ29udGFpbnMoS2V5
KDMpKSkpOworfQorCitURVNUKEtleVRlc3QsIEluc2lkZUNvbnRhaW5zVXNpbmdNdWx0aW1hcCkg
eworICBtdWx0aW1hcDxpbnQsIGNoYXI+IGNvbnRhaW5lcjsKKyAgY29udGFpbmVyLmluc2VydCht
YWtlX3BhaXIoMSwgJ2EnKSk7CisgIGNvbnRhaW5lci5pbnNlcnQobWFrZV9wYWlyKDIsICdiJykp
OworICBjb250YWluZXIuaW5zZXJ0KG1ha2VfcGFpcig0LCAnYycpKTsKKworICBFWFBFQ1RfVEhB
VChjb250YWluZXIsIE5vdChDb250YWlucyhLZXkoMjUpKSkpOworICBjb250YWluZXIuaW5zZXJ0
KG1ha2VfcGFpcigyNSwgJ2QnKSk7CisgIEVYUEVDVF9USEFUKGNvbnRhaW5lciwgQ29udGFpbnMo
S2V5KDI1KSkpOworICBjb250YWluZXIuaW5zZXJ0KG1ha2VfcGFpcigyNSwgJ2UnKSk7CisgIEVY
UEVDVF9USEFUKGNvbnRhaW5lciwgQ29udGFpbnMoS2V5KDI1KSkpOworCisgIEVYUEVDVF9USEFU
KGNvbnRhaW5lciwgQ29udGFpbnMoS2V5KDEpKSk7CisgIEVYUEVDVF9USEFUKGNvbnRhaW5lciwg
Tm90KENvbnRhaW5zKEtleSgzKSkpKTsKK30KKworVEVTVChQYWlyVGVzdCwgVHlwaW5nKSB7Cisg
IC8vIFRlc3QgdmVyaWZpZXMgdGhlIGZvbGxvd2luZyB0eXBlIGNvbnZlcnNpb25zIGNhbiBiZSBj
b21waWxlZC4KKyAgTWF0Y2hlcjxjb25zdCBwYWlyPGNvbnN0IGNoYXIqLCBpbnQ+Jj4gbTEgPSBQ
YWlyKCJmb28iLCA0Mik7CisgIE1hdGNoZXI8Y29uc3QgcGFpcjxjb25zdCBjaGFyKiwgaW50PiA+
IG0yID0gUGFpcigiZm9vIiwgNDIpOworICBNYXRjaGVyPHBhaXI8Y29uc3QgY2hhciosIGludD4g
PiBtMyA9IFBhaXIoImZvbyIsIDQyKTsKKworICBNYXRjaGVyPHBhaXI8aW50LCBjb25zdCBzdGQ6
OnN0cmluZz4gPiBtNCA9IFBhaXIoMjUsICI0MiIpOworICBNYXRjaGVyPHBhaXI8Y29uc3Qgc3Rk
OjpzdHJpbmcsIGludD4gPiBtNSA9IFBhaXIoIjI1IiwgNDIpOworfQorCitURVNUKFBhaXJUZXN0
LCBDYW5EZXNjcmliZVNlbGYpIHsKKyAgTWF0Y2hlcjxjb25zdCBwYWlyPHN0ZDo6c3RyaW5nLCBp
bnQ+Jj4gbTEgPSBQYWlyKCJmb28iLCA0Mik7CisgIEVYUEVDVF9FUSgiaGFzIGEgZmlyc3QgZmll
bGQgdGhhdCBpcyBlcXVhbCB0byBcImZvb1wiIgorICAgICAgICAgICAgIiwgYW5kIGhhcyBhIHNl
Y29uZCBmaWVsZCB0aGF0IGlzIGVxdWFsIHRvIDQyIiwKKyAgICAgICAgICAgIERlc2NyaWJlKG0x
KSk7CisgIEVYUEVDVF9FUSgiaGFzIGEgZmlyc3QgZmllbGQgdGhhdCBpc24ndCBlcXVhbCB0byBc
ImZvb1wiIgorICAgICAgICAgICAgIiwgb3IgaGFzIGEgc2Vjb25kIGZpZWxkIHRoYXQgaXNuJ3Qg
ZXF1YWwgdG8gNDIiLAorICAgICAgICAgICAgRGVzY3JpYmVOZWdhdGlvbihtMSkpOworICAvLyBE
b3VibGUgYW5kIHRyaXBsZSBuZWdhdGlvbiAoMSBvciAyIHRpbWVzIG5vdCBhbmQgZGVzY3JpcHRp
b24gb2YgbmVnYXRpb24pLgorICBNYXRjaGVyPGNvbnN0IHBhaXI8aW50LCBpbnQ+Jj4gbTIgPSBO
b3QoUGFpcihOb3QoMTMpLCA0MikpOworICBFWFBFQ1RfRVEoImhhcyBhIGZpcnN0IGZpZWxkIHRo
YXQgaXNuJ3QgZXF1YWwgdG8gMTMiCisgICAgICAgICAgICAiLCBhbmQgaGFzIGEgc2Vjb25kIGZp
ZWxkIHRoYXQgaXMgZXF1YWwgdG8gNDIiLAorICAgICAgICAgICAgRGVzY3JpYmVOZWdhdGlvbiht
MikpOworfQorCitURVNUKFBhaXJUZXN0LCBDYW5FeHBsYWluTWF0Y2hSZXN1bHRUbykgeworICAv
LyBJZiBuZWl0aGVyIGZpZWxkIG1hdGNoZXMsIFBhaXIoKSBzaG91bGQgZXhwbGFpbiBhYm91dCB0
aGUgZmlyc3QKKyAgLy8gZmllbGQuCisgIGNvbnN0IE1hdGNoZXI8cGFpcjxpbnQsIGludD4gPiBt
ID0gUGFpcihHcmVhdGVyVGhhbigwKSwgR3JlYXRlclRoYW4oMCkpOworICBFWFBFQ1RfRVEoIndo
b3NlIGZpcnN0IGZpZWxkIGRvZXMgbm90IG1hdGNoLCB3aGljaCBpcyAxIGxlc3MgdGhhbiAwIiwK
KyAgICAgICAgICAgIEV4cGxhaW4obSwgbWFrZV9wYWlyKC0xLCAtMikpKTsKKworICAvLyBJZiB0
aGUgZmlyc3QgZmllbGQgbWF0Y2hlcyBidXQgdGhlIHNlY29uZCBkb2Vzbid0LCBQYWlyKCkgc2hv
dWxkCisgIC8vIGV4cGxhaW4gYWJvdXQgdGhlIHNlY29uZCBmaWVsZC4KKyAgRVhQRUNUX0VRKCJ3
aG9zZSBzZWNvbmQgZmllbGQgZG9lcyBub3QgbWF0Y2gsIHdoaWNoIGlzIDIgbGVzcyB0aGFuIDAi
LAorICAgICAgICAgICAgRXhwbGFpbihtLCBtYWtlX3BhaXIoMSwgLTIpKSk7CisKKyAgLy8gSWYg
dGhlIGZpcnN0IGZpZWxkIGRvZXNuJ3QgbWF0Y2ggYnV0IHRoZSBzZWNvbmQgZG9lcywgUGFpcigp
CisgIC8vIHNob3VsZCBleHBsYWluIGFib3V0IHRoZSBmaXJzdCBmaWVsZC4KKyAgRVhQRUNUX0VR
KCJ3aG9zZSBmaXJzdCBmaWVsZCBkb2VzIG5vdCBtYXRjaCwgd2hpY2ggaXMgMSBsZXNzIHRoYW4g
MCIsCisgICAgICAgICAgICBFeHBsYWluKG0sIG1ha2VfcGFpcigtMSwgMikpKTsKKworICAvLyBJ
ZiBib3RoIGZpZWxkcyBtYXRjaCwgUGFpcigpIHNob3VsZCBleHBsYWluIGFib3V0IHRoZW0gYm90
aC4KKyAgRVhQRUNUX0VRKCJ3aG9zZSBib3RoIGZpZWxkcyBtYXRjaCwgd2hlcmUgdGhlIGZpcnN0
IGZpZWxkIGlzIGEgdmFsdWUgIgorICAgICAgICAgICAgIndoaWNoIGlzIDEgbW9yZSB0aGFuIDAs
IGFuZCB0aGUgc2Vjb25kIGZpZWxkIGlzIGEgdmFsdWUgIgorICAgICAgICAgICAgIndoaWNoIGlz
IDIgbW9yZSB0aGFuIDAiLAorICAgICAgICAgICAgRXhwbGFpbihtLCBtYWtlX3BhaXIoMSwgMikp
KTsKKworICAvLyBJZiBvbmx5IHRoZSBmaXJzdCBtYXRjaCBoYXMgYW4gZXhwbGFuYXRpb24sIG9u
bHkgdGhpcyBleHBsYW5hdGlvbiBzaG91bGQKKyAgLy8gYmUgcHJpbnRlZC4KKyAgY29uc3QgTWF0
Y2hlcjxwYWlyPGludCwgaW50PiA+IGV4cGxhaW5fZmlyc3QgPSBQYWlyKEdyZWF0ZXJUaGFuKDAp
LCAwKTsKKyAgRVhQRUNUX0VRKCJ3aG9zZSBib3RoIGZpZWxkcyBtYXRjaCwgd2hlcmUgdGhlIGZp
cnN0IGZpZWxkIGlzIGEgdmFsdWUgIgorICAgICAgICAgICAgIndoaWNoIGlzIDEgbW9yZSB0aGFu
IDAiLAorICAgICAgICAgICAgRXhwbGFpbihleHBsYWluX2ZpcnN0LCBtYWtlX3BhaXIoMSwgMCkp
KTsKKworICAvLyBJZiBvbmx5IHRoZSBzZWNvbmQgbWF0Y2ggaGFzIGFuIGV4cGxhbmF0aW9uLCBv
bmx5IHRoaXMgZXhwbGFuYXRpb24gc2hvdWxkCisgIC8vIGJlIHByaW50ZWQuCisgIGNvbnN0IE1h
dGNoZXI8cGFpcjxpbnQsIGludD4gPiBleHBsYWluX3NlY29uZCA9IFBhaXIoMCwgR3JlYXRlclRo
YW4oMCkpOworICBFWFBFQ1RfRVEoIndob3NlIGJvdGggZmllbGRzIG1hdGNoLCB3aGVyZSB0aGUg
c2Vjb25kIGZpZWxkIGlzIGEgdmFsdWUgIgorICAgICAgICAgICAgIndoaWNoIGlzIDEgbW9yZSB0
aGFuIDAiLAorICAgICAgICAgICAgRXhwbGFpbihleHBsYWluX3NlY29uZCwgbWFrZV9wYWlyKDAs
IDEpKSk7Cit9CisKK1RFU1QoUGFpclRlc3QsIE1hdGNoZXNDb3JyZWN0bHkpIHsKKyAgcGFpcjxp
bnQsIHN0ZDo6c3RyaW5nPiBwKDI1LCAiZm9vIik7CisKKyAgLy8gQm90aCBmaWVsZHMgbWF0Y2gu
CisgIEVYUEVDVF9USEFUKHAsIFBhaXIoMjUsICJmb28iKSk7CisgIEVYUEVDVF9USEFUKHAsIFBh
aXIoR2UoMjApLCBIYXNTdWJzdHIoIm8iKSkpOworCisgIC8vICdmaXJzdCcgZG9lc250JyBtYXRj
aCwgYnV0ICdzZWNvbmQnIG1hdGNoZXMuCisgIEVYUEVDVF9USEFUKHAsIE5vdChQYWlyKDQyLCAi
Zm9vIikpKTsKKyAgRVhQRUNUX1RIQVQocCwgTm90KFBhaXIoTHQoMjUpLCAiZm9vIikpKTsKKwor
ICAvLyAnZmlyc3QnIG1hdGNoZXMsIGJ1dCAnc2Vjb25kJyBkb2Vzbid0IG1hdGNoLgorICBFWFBF
Q1RfVEhBVChwLCBOb3QoUGFpcigyNSwgImJhciIpKSk7CisgIEVYUEVDVF9USEFUKHAsIE5vdChQ
YWlyKDI1LCBOb3QoImZvbyIpKSkpOworCisgIC8vIE5laXRoZXIgZmllbGQgbWF0Y2hlcy4KKyAg
RVhQRUNUX1RIQVQocCwgTm90KFBhaXIoMTMsICJiYXIiKSkpOworICBFWFBFQ1RfVEhBVChwLCBO
b3QoUGFpcihMdCgxMyksIEhhc1N1YnN0cigiYSIpKSkpOworfQorCitURVNUKFBhaXJUZXN0LCBT
YWZlbHlDYXN0c0lubmVyTWF0Y2hlcnMpIHsKKyAgTWF0Y2hlcjxpbnQ+IGlzX3Bvc2l0aXZlID0g
R3QoMCk7CisgIE1hdGNoZXI8aW50PiBpc19uZWdhdGl2ZSA9IEx0KDApOworICBwYWlyPGNoYXIs
IGJvb2w+IHAoJ2EnLCB0cnVlKTsKKyAgRVhQRUNUX1RIQVQocCwgUGFpcihpc19wb3NpdGl2ZSwg
XykpOworICBFWFBFQ1RfVEhBVChwLCBOb3QoUGFpcihpc19uZWdhdGl2ZSwgXykpKTsKKyAgRVhQ
RUNUX1RIQVQocCwgUGFpcihfLCBpc19wb3NpdGl2ZSkpOworICBFWFBFQ1RfVEhBVChwLCBOb3Qo
UGFpcihfLCBpc19uZWdhdGl2ZSkpKTsKK30KKworVEVTVChQYWlyVGVzdCwgSW5zaWRlQ29udGFp
bnNVc2luZ01hcCkgeworICBtYXA8aW50LCBjaGFyPiBjb250YWluZXI7CisgIGNvbnRhaW5lci5p
bnNlcnQobWFrZV9wYWlyKDEsICdhJykpOworICBjb250YWluZXIuaW5zZXJ0KG1ha2VfcGFpcigy
LCAnYicpKTsKKyAgY29udGFpbmVyLmluc2VydChtYWtlX3BhaXIoNCwgJ2MnKSk7CisgIEVYUEVD
VF9USEFUKGNvbnRhaW5lciwgQ29udGFpbnMoUGFpcigxLCAnYScpKSk7CisgIEVYUEVDVF9USEFU
KGNvbnRhaW5lciwgQ29udGFpbnMoUGFpcigxLCBfKSkpOworICBFWFBFQ1RfVEhBVChjb250YWlu
ZXIsIENvbnRhaW5zKFBhaXIoXywgJ2EnKSkpOworICBFWFBFQ1RfVEhBVChjb250YWluZXIsIE5v
dChDb250YWlucyhQYWlyKDMsIF8pKSkpOworfQorCisvLyBUZXN0cyBTdGFydHNXaXRoKHMpLgor
CitURVNUKFN0YXJ0c1dpdGhUZXN0LCBNYXRjaGVzU3RyaW5nV2l0aEdpdmVuUHJlZml4KSB7Cisg
IGNvbnN0IE1hdGNoZXI8Y29uc3QgY2hhcio+IG0xID0gU3RhcnRzV2l0aChzdGQ6OnN0cmluZygi
IikpOworICBFWFBFQ1RfVFJVRShtMS5NYXRjaGVzKCJIaSIpKTsKKyAgRVhQRUNUX1RSVUUobTEu
TWF0Y2hlcygiIikpOworICBFWFBFQ1RfRkFMU0UobTEuTWF0Y2hlcyhOVUxMKSk7CisKKyAgY29u
c3QgTWF0Y2hlcjxjb25zdCBzdGQ6OnN0cmluZyY+IG0yID0gU3RhcnRzV2l0aCgiSGkiKTsKKyAg
RVhQRUNUX1RSVUUobTIuTWF0Y2hlcygiSGkiKSk7CisgIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMo
IkhpIEhpISIpKTsKKyAgRVhQRUNUX1RSVUUobTIuTWF0Y2hlcygiSGlnaCIpKTsKKyAgRVhQRUNU
X0ZBTFNFKG0yLk1hdGNoZXMoIkgiKSk7CisgIEVYUEVDVF9GQUxTRShtMi5NYXRjaGVzKCIgSGki
KSk7Cit9CisKK1RFU1QoU3RhcnRzV2l0aFRlc3QsIENhbkRlc2NyaWJlU2VsZikgeworICBNYXRj
aGVyPGNvbnN0IHN0ZDo6c3RyaW5nPiBtID0gU3RhcnRzV2l0aCgiSGkiKTsKKyAgRVhQRUNUX0VR
KCJzdGFydHMgd2l0aCBcIkhpXCIiLCBEZXNjcmliZShtKSk7Cit9CisKKy8vIFRlc3RzIEVuZHNX
aXRoKHMpLgorCitURVNUKEVuZHNXaXRoVGVzdCwgTWF0Y2hlc1N0cmluZ1dpdGhHaXZlblN1ZmZp
eCkgeworICBjb25zdCBNYXRjaGVyPGNvbnN0IGNoYXIqPiBtMSA9IEVuZHNXaXRoKCIiKTsKKyAg
RVhQRUNUX1RSVUUobTEuTWF0Y2hlcygiSGkiKSk7CisgIEVYUEVDVF9UUlVFKG0xLk1hdGNoZXMo
IiIpKTsKKyAgRVhQRUNUX0ZBTFNFKG0xLk1hdGNoZXMoTlVMTCkpOworCisgIGNvbnN0IE1hdGNo
ZXI8Y29uc3Qgc3RyaW5nJj4gbTIgPSBFbmRzV2l0aChzdHJpbmcoIkhpIikpOworICBFWFBFQ1Rf
VFJVRShtMi5NYXRjaGVzKCJIaSIpKTsKKyAgRVhQRUNUX1RSVUUobTIuTWF0Y2hlcygiV293IEhp
IEhpIikpOworICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKCJTdXBlciBIaSIpKTsKKyAgRVhQRUNU
X0ZBTFNFKG0yLk1hdGNoZXMoImkiKSk7CisgIEVYUEVDVF9GQUxTRShtMi5NYXRjaGVzKCJIaSAi
KSk7Cit9CisKK1RFU1QoRW5kc1dpdGhUZXN0LCBDYW5EZXNjcmliZVNlbGYpIHsKKyAgTWF0Y2hl
cjxjb25zdCBzdGQ6OnN0cmluZz4gbSA9IEVuZHNXaXRoKCJIaSIpOworICBFWFBFQ1RfRVEoImVu
ZHMgd2l0aCBcIkhpXCIiLCBEZXNjcmliZShtKSk7Cit9CisKKy8vIFRlc3RzIE1hdGNoZXNSZWdl
eCgpLgorCitURVNUKE1hdGNoZXNSZWdleFRlc3QsIE1hdGNoZXNTdHJpbmdNYXRjaGluZ0dpdmVu
UmVnZXgpIHsKKyAgY29uc3QgTWF0Y2hlcjxjb25zdCBjaGFyKj4gbTEgPSBNYXRjaGVzUmVnZXgo
ImEuKnoiKTsKKyAgRVhQRUNUX1RSVUUobTEuTWF0Y2hlcygiYXoiKSk7CisgIEVYUEVDVF9UUlVF
KG0xLk1hdGNoZXMoImFiY3oiKSk7CisgIEVYUEVDVF9GQUxTRShtMS5NYXRjaGVzKE5VTEwpKTsK
KworICBjb25zdCBNYXRjaGVyPGNvbnN0IHN0ZDo6c3RyaW5nJj4gbTIgPSBNYXRjaGVzUmVnZXgo
bmV3IFJFKCJhLip6IikpOworICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKCJhemJ6IikpOworICBF
WFBFQ1RfRkFMU0UobTIuTWF0Y2hlcygiYXoxIikpOworICBFWFBFQ1RfRkFMU0UobTIuTWF0Y2hl
cygiMWF6IikpOworfQorCitURVNUKE1hdGNoZXNSZWdleFRlc3QsIENhbkRlc2NyaWJlU2VsZikg
eworICBNYXRjaGVyPGNvbnN0IHN0ZDo6c3RyaW5nPiBtMSA9IE1hdGNoZXNSZWdleChzdGQ6OnN0
cmluZygiSGkuKiIpKTsKKyAgRVhQRUNUX0VRKCJtYXRjaGVzIHJlZ3VsYXIgZXhwcmVzc2lvbiBc
IkhpLipcIiIsIERlc2NyaWJlKG0xKSk7CisKKyAgTWF0Y2hlcjxjb25zdCBjaGFyKj4gbTIgPSBN
YXRjaGVzUmVnZXgobmV3IFJFKCJhLioiKSk7CisgIEVYUEVDVF9FUSgibWF0Y2hlcyByZWd1bGFy
IGV4cHJlc3Npb24gXCJhLipcIiIsIERlc2NyaWJlKG0yKSk7Cit9CisKKy8vIFRlc3RzIENvbnRh
aW5zUmVnZXgoKS4KKworVEVTVChDb250YWluc1JlZ2V4VGVzdCwgTWF0Y2hlc1N0cmluZ0NvbnRh
aW5pbmdHaXZlblJlZ2V4KSB7CisgIGNvbnN0IE1hdGNoZXI8Y29uc3QgY2hhcio+IG0xID0gQ29u
dGFpbnNSZWdleChzdGQ6OnN0cmluZygiYS4qeiIpKTsKKyAgRVhQRUNUX1RSVUUobTEuTWF0Y2hl
cygiYXoiKSk7CisgIEVYUEVDVF9UUlVFKG0xLk1hdGNoZXMoIjBhYmN6MSIpKTsKKyAgRVhQRUNU
X0ZBTFNFKG0xLk1hdGNoZXMoTlVMTCkpOworCisgIGNvbnN0IE1hdGNoZXI8Y29uc3Qgc3RkOjpz
dHJpbmcmPiBtMiA9IENvbnRhaW5zUmVnZXgobmV3IFJFKCJhLip6IikpOworICBFWFBFQ1RfVFJV
RShtMi5NYXRjaGVzKCJhemJ6IikpOworICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKCJhejEiKSk7
CisgIEVYUEVDVF9GQUxTRShtMi5NYXRjaGVzKCIxYSIpKTsKK30KKworVEVTVChDb250YWluc1Jl
Z2V4VGVzdCwgQ2FuRGVzY3JpYmVTZWxmKSB7CisgIE1hdGNoZXI8Y29uc3Qgc3RkOjpzdHJpbmc+
IG0xID0gQ29udGFpbnNSZWdleCgiSGkuKiIpOworICBFWFBFQ1RfRVEoImNvbnRhaW5zIHJlZ3Vs
YXIgZXhwcmVzc2lvbiBcIkhpLipcIiIsIERlc2NyaWJlKG0xKSk7CisKKyAgTWF0Y2hlcjxjb25z
dCBjaGFyKj4gbTIgPSBDb250YWluc1JlZ2V4KG5ldyBSRSgiYS4qIikpOworICBFWFBFQ1RfRVEo
ImNvbnRhaW5zIHJlZ3VsYXIgZXhwcmVzc2lvbiBcImEuKlwiIiwgRGVzY3JpYmUobTIpKTsKK30K
KworLy8gVGVzdHMgZm9yIHdpZGUgc3RyaW5ncy4KKyNpZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcK
K1RFU1QoU3RkV2lkZVN0ckVxVGVzdCwgTWF0Y2hlc0VxdWFsKSB7CisgIE1hdGNoZXI8Y29uc3Qg
d2NoYXJfdCo+IG0gPSBTdHJFcSg6OnN0ZDo6d3N0cmluZyhMIkhlbGxvIikpOworICBFWFBFQ1Rf
VFJVRShtLk1hdGNoZXMoTCJIZWxsbyIpKTsKKyAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhMImhl
bGxvIikpOworICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKE5VTEwpKTsKKworICBNYXRjaGVyPGNv
bnN0IDo6c3RkOjp3c3RyaW5nJj4gbTIgPSBTdHJFcShMIkhlbGxvIik7CisgIEVYUEVDVF9UUlVF
KG0yLk1hdGNoZXMoTCJIZWxsbyIpKTsKKyAgRVhQRUNUX0ZBTFNFKG0yLk1hdGNoZXMoTCJIaSIp
KTsKKworICBNYXRjaGVyPGNvbnN0IDo6c3RkOjp3c3RyaW5nJj4gbTMgPSBTdHJFcShMIlx4RDNc
eDU3Nlx4OEQzXHhDNzREIik7CisgIEVYUEVDVF9UUlVFKG0zLk1hdGNoZXMoTCJceEQzXHg1NzZc
eDhEM1x4Qzc0RCIpKTsKKyAgRVhQRUNUX0ZBTFNFKG0zLk1hdGNoZXMoTCJceEQzXHg1NzZceDhE
M1x4Qzc0RSIpKTsKKworICA6OnN0ZDo6d3N0cmluZyBzdHIoTCIwMTIwNDUwMDgwMCIpOworICBz
dHJbM10gPSBMJ1wwJzsKKyAgTWF0Y2hlcjxjb25zdCA6OnN0ZDo6d3N0cmluZyY+IG00ID0gU3Ry
RXEoc3RyKTsKKyAgRVhQRUNUX1RSVUUobTQuTWF0Y2hlcyhzdHIpKTsKKyAgc3RyWzBdID0gc3Ry
WzZdID0gc3RyWzddID0gc3RyWzldID0gc3RyWzEwXSA9IEwnXDAnOworICBNYXRjaGVyPGNvbnN0
IDo6c3RkOjp3c3RyaW5nJj4gbTUgPSBTdHJFcShzdHIpOworICBFWFBFQ1RfVFJVRShtNS5NYXRj
aGVzKHN0cikpOworfQorCitURVNUKFN0ZFdpZGVTdHJFcVRlc3QsIENhbkRlc2NyaWJlU2VsZikg
eworICBNYXRjaGVyPCA6OnN0ZDo6d3N0cmluZz4gbSA9IFN0ckVxKEwiSGktXCdcIj9cXFxhXGJc
ZlxuXHJcdFx2Iik7CisgIEVYUEVDVF9FUSgiaXMgZXF1YWwgdG8gTFwiSGktXCdcXFwiP1xcXFxc
XGFcXGJcXGZcXG5cXHJcXHRcXHZcIiIsCisgICAgRGVzY3JpYmUobSkpOworCisgIE1hdGNoZXI8
IDo6c3RkOjp3c3RyaW5nPiBtMiA9IFN0ckVxKEwiXHhEM1x4NTc2XHg4RDNceEM3NEQiKTsKKyAg
RVhQRUNUX0VRKCJpcyBlcXVhbCB0byBMXCJcXHhEM1xceDU3NlxceDhEM1xceEM3NERcIiIsCisg
ICAgRGVzY3JpYmUobTIpKTsKKworICA6OnN0ZDo6d3N0cmluZyBzdHIoTCIwMTIwNDUwMDgwMCIp
OworICBzdHJbM10gPSBMJ1wwJzsKKyAgTWF0Y2hlcjxjb25zdCA6OnN0ZDo6d3N0cmluZyY+IG00
ID0gU3RyRXEoc3RyKTsKKyAgRVhQRUNUX0VRKCJpcyBlcXVhbCB0byBMXCIwMTJcXDA0NTAwODAw
XCIiLCBEZXNjcmliZShtNCkpOworICBzdHJbMF0gPSBzdHJbNl0gPSBzdHJbN10gPSBzdHJbOV0g
PSBzdHJbMTBdID0gTCdcMCc7CisgIE1hdGNoZXI8Y29uc3QgOjpzdGQ6OndzdHJpbmcmPiBtNSA9
IFN0ckVxKHN0cik7CisgIEVYUEVDVF9FUSgiaXMgZXF1YWwgdG8gTFwiXFwwMTJcXDA0NVxcMFxc
MDhcXDBcXDBcIiIsIERlc2NyaWJlKG01KSk7Cit9CisKK1RFU1QoU3RkV2lkZVN0ck5lVGVzdCwg
TWF0Y2hlc1VuZXF1YWxTdHJpbmcpIHsKKyAgTWF0Y2hlcjxjb25zdCB3Y2hhcl90Kj4gbSA9IFN0
ck5lKEwiSGVsbG8iKTsKKyAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKEwiIikpOworICBFWFBFQ1Rf
VFJVRShtLk1hdGNoZXMoTlVMTCkpOworICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKEwiSGVsbG8i
KSk7CisKKyAgTWF0Y2hlcjwgOjpzdGQ6OndzdHJpbmc+IG0yID0gU3RyTmUoOjpzdGQ6OndzdHJp
bmcoTCJIZWxsbyIpKTsKKyAgRVhQRUNUX1RSVUUobTIuTWF0Y2hlcyhMImhlbGxvIikpOworICBF
WFBFQ1RfRkFMU0UobTIuTWF0Y2hlcyhMIkhlbGxvIikpOworfQorCitURVNUKFN0ZFdpZGVTdHJO
ZVRlc3QsIENhbkRlc2NyaWJlU2VsZikgeworICBNYXRjaGVyPGNvbnN0IHdjaGFyX3QqPiBtID0g
U3RyTmUoTCJIaSIpOworICBFWFBFQ1RfRVEoImlzbid0IGVxdWFsIHRvIExcIkhpXCIiLCBEZXNj
cmliZShtKSk7Cit9CisKK1RFU1QoU3RkV2lkZVN0ckNhc2VFcVRlc3QsIE1hdGNoZXNFcXVhbFN0
cmluZ0lnbm9yaW5nQ2FzZSkgeworICBNYXRjaGVyPGNvbnN0IHdjaGFyX3QqPiBtID0gU3RyQ2Fz
ZUVxKDo6c3RkOjp3c3RyaW5nKEwiSGVsbG8iKSk7CisgIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhM
IkhlbGxvIikpOworICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoTCJoZWxsbyIpKTsKKyAgRVhQRUNU
X0ZBTFNFKG0uTWF0Y2hlcyhMIkhpIikpOworICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKE5VTEwp
KTsKKworICBNYXRjaGVyPGNvbnN0IDo6c3RkOjp3c3RyaW5nJj4gbTIgPSBTdHJDYXNlRXEoTCJI
ZWxsbyIpOworICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKEwiaGVsbG8iKSk7CisgIEVYUEVDVF9G
QUxTRShtMi5NYXRjaGVzKEwiSGkiKSk7Cit9CisKK1RFU1QoU3RkV2lkZVN0ckNhc2VFcVRlc3Qs
IE1hdGNoZXNFcXVhbFN0cmluZ1dpdGgwSWdub3JpbmdDYXNlKSB7CisgIDo6c3RkOjp3c3RyaW5n
IHN0cjEoTCJvYWJvY2Rvb2VvbyIpOworICA6OnN0ZDo6d3N0cmluZyBzdHIyKEwiT0FCT0NET09F
T08iKTsKKyAgTWF0Y2hlcjxjb25zdCA6OnN0ZDo6d3N0cmluZyY+IG0wID0gU3RyQ2FzZUVxKHN0
cjEpOworICBFWFBFQ1RfRkFMU0UobTAuTWF0Y2hlcyhzdHIyICsgOjpzdGQ6OndzdHJpbmcoMSwg
TCdcMCcpKSk7CisKKyAgc3RyMVszXSA9IHN0cjJbM10gPSBMJ1wwJzsKKyAgTWF0Y2hlcjxjb25z
dCA6OnN0ZDo6d3N0cmluZyY+IG0xID0gU3RyQ2FzZUVxKHN0cjEpOworICBFWFBFQ1RfVFJVRSht
MS5NYXRjaGVzKHN0cjIpKTsKKworICBzdHIxWzBdID0gc3RyMVs2XSA9IHN0cjFbN10gPSBzdHIx
WzEwXSA9IEwnXDAnOworICBzdHIyWzBdID0gc3RyMls2XSA9IHN0cjJbN10gPSBzdHIyWzEwXSA9
IEwnXDAnOworICBNYXRjaGVyPGNvbnN0IDo6c3RkOjp3c3RyaW5nJj4gbTIgPSBTdHJDYXNlRXEo
c3RyMSk7CisgIHN0cjFbOV0gPSBzdHIyWzldID0gTCdcMCc7CisgIEVYUEVDVF9GQUxTRShtMi5N
YXRjaGVzKHN0cjIpKTsKKworICBNYXRjaGVyPGNvbnN0IDo6c3RkOjp3c3RyaW5nJj4gbTMgPSBT
dHJDYXNlRXEoc3RyMSk7CisgIEVYUEVDVF9UUlVFKG0zLk1hdGNoZXMoc3RyMikpOworCisgIEVY
UEVDVF9GQUxTRShtMy5NYXRjaGVzKHN0cjIgKyBMIngiKSk7CisgIHN0cjIuYXBwZW5kKDEsIEwn
XDAnKTsKKyAgRVhQRUNUX0ZBTFNFKG0zLk1hdGNoZXMoc3RyMikpOworICBFWFBFQ1RfRkFMU0Uo
bTMuTWF0Y2hlcyg6OnN0ZDo6d3N0cmluZyhzdHIyLCAwLCA5KSkpOworfQorCitURVNUKFN0ZFdp
ZGVTdHJDYXNlRXFUZXN0LCBDYW5EZXNjcmliZVNlbGYpIHsKKyAgTWF0Y2hlcjwgOjpzdGQ6Ondz
dHJpbmc+IG0gPSBTdHJDYXNlRXEoTCJIaSIpOworICBFWFBFQ1RfRVEoImlzIGVxdWFsIHRvIChp
Z25vcmluZyBjYXNlKSBMXCJIaVwiIiwgRGVzY3JpYmUobSkpOworfQorCitURVNUKFN0ZFdpZGVT
dHJDYXNlTmVUZXN0LCBNYXRjaGVzVW5lcXVhbFN0cmluZ0lnbm9yaW5nQ2FzZSkgeworICBNYXRj
aGVyPGNvbnN0IHdjaGFyX3QqPiBtID0gU3RyQ2FzZU5lKEwiSGVsbG8iKTsKKyAgRVhQRUNUX1RS
VUUobS5NYXRjaGVzKEwiSGkiKSk7CisgIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhOVUxMKSk7Cisg
IEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoTCJIZWxsbyIpKTsKKyAgRVhQRUNUX0ZBTFNFKG0uTWF0
Y2hlcyhMImhlbGxvIikpOworCisgIE1hdGNoZXI8IDo6c3RkOjp3c3RyaW5nPiBtMiA9IFN0ckNh
c2VOZSg6OnN0ZDo6d3N0cmluZyhMIkhlbGxvIikpOworICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVz
KEwiIikpOworICBFWFBFQ1RfRkFMU0UobTIuTWF0Y2hlcyhMIkhlbGxvIikpOworfQorCitURVNU
KFN0ZFdpZGVTdHJDYXNlTmVUZXN0LCBDYW5EZXNjcmliZVNlbGYpIHsKKyAgTWF0Y2hlcjxjb25z
dCB3Y2hhcl90Kj4gbSA9IFN0ckNhc2VOZShMIkhpIik7CisgIEVYUEVDVF9FUSgiaXNuJ3QgZXF1
YWwgdG8gKGlnbm9yaW5nIGNhc2UpIExcIkhpXCIiLCBEZXNjcmliZShtKSk7Cit9CisKKy8vIFRl
c3RzIHRoYXQgSGFzU3Vic3RyKCkgd29ya3MgZm9yIG1hdGNoaW5nIHdzdHJpbmctdHlwZWQgdmFs
dWVzLgorVEVTVChTdGRXaWRlSGFzU3Vic3RyVGVzdCwgV29ya3NGb3JTdHJpbmdDbGFzc2VzKSB7
CisgIGNvbnN0IE1hdGNoZXI8IDo6c3RkOjp3c3RyaW5nPiBtMSA9IEhhc1N1YnN0cihMImZvbyIp
OworICBFWFBFQ1RfVFJVRShtMS5NYXRjaGVzKDo6c3RkOjp3c3RyaW5nKEwiSSBsb3ZlIGZvb2Qu
IikpKTsKKyAgRVhQRUNUX0ZBTFNFKG0xLk1hdGNoZXMoOjpzdGQ6OndzdHJpbmcoTCJ0b2ZvIikp
KTsKKworICBjb25zdCBNYXRjaGVyPGNvbnN0IDo6c3RkOjp3c3RyaW5nJj4gbTIgPSBIYXNTdWJz
dHIoTCJmb28iKTsKKyAgRVhQRUNUX1RSVUUobTIuTWF0Y2hlcyg6OnN0ZDo6d3N0cmluZyhMIkkg
bG92ZSBmb29kLiIpKSk7CisgIEVYUEVDVF9GQUxTRShtMi5NYXRjaGVzKDo6c3RkOjp3c3RyaW5n
KEwidG9mbyIpKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgSGFzU3Vic3RyKCkgd29ya3MgZm9yIG1h
dGNoaW5nIEMtd2lkZS1zdHJpbmctdHlwZWQgdmFsdWVzLgorVEVTVChTdGRXaWRlSGFzU3Vic3Ry
VGVzdCwgV29ya3NGb3JDU3RyaW5ncykgeworICBjb25zdCBNYXRjaGVyPHdjaGFyX3QqPiBtMSA9
IEhhc1N1YnN0cihMImZvbyIpOworICBFWFBFQ1RfVFJVRShtMS5NYXRjaGVzKGNvbnN0X2Nhc3Q8
d2NoYXJfdCo+KEwiSSBsb3ZlIGZvb2QuIikpKTsKKyAgRVhQRUNUX0ZBTFNFKG0xLk1hdGNoZXMo
Y29uc3RfY2FzdDx3Y2hhcl90Kj4oTCJ0b2ZvIikpKTsKKyAgRVhQRUNUX0ZBTFNFKG0xLk1hdGNo
ZXMoTlVMTCkpOworCisgIGNvbnN0IE1hdGNoZXI8Y29uc3Qgd2NoYXJfdCo+IG0yID0gSGFzU3Vi
c3RyKEwiZm9vIik7CisgIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoTCJJIGxvdmUgZm9vZC4iKSk7
CisgIEVYUEVDVF9GQUxTRShtMi5NYXRjaGVzKEwidG9mbyIpKTsKKyAgRVhQRUNUX0ZBTFNFKG0y
Lk1hdGNoZXMoTlVMTCkpOworfQorCisvLyBUZXN0cyB0aGF0IEhhc1N1YnN0cihzKSBkZXNjcmli
ZXMgaXRzZWxmIHByb3Blcmx5LgorVEVTVChTdGRXaWRlSGFzU3Vic3RyVGVzdCwgQ2FuRGVzY3Jp
YmVTZWxmKSB7CisgIE1hdGNoZXI8IDo6c3RkOjp3c3RyaW5nPiBtID0gSGFzU3Vic3RyKEwiZm9v
XG5cIiIpOworICBFWFBFQ1RfRVEoImhhcyBzdWJzdHJpbmcgTFwiZm9vXFxuXFxcIlwiIiwgRGVz
Y3JpYmUobSkpOworfQorCisvLyBUZXN0cyBTdGFydHNXaXRoKHMpLgorCitURVNUKFN0ZFdpZGVT
dGFydHNXaXRoVGVzdCwgTWF0Y2hlc1N0cmluZ1dpdGhHaXZlblByZWZpeCkgeworICBjb25zdCBN
YXRjaGVyPGNvbnN0IHdjaGFyX3QqPiBtMSA9IFN0YXJ0c1dpdGgoOjpzdGQ6OndzdHJpbmcoTCIi
KSk7CisgIEVYUEVDVF9UUlVFKG0xLk1hdGNoZXMoTCJIaSIpKTsKKyAgRVhQRUNUX1RSVUUobTEu
TWF0Y2hlcyhMIiIpKTsKKyAgRVhQRUNUX0ZBTFNFKG0xLk1hdGNoZXMoTlVMTCkpOworCisgIGNv
bnN0IE1hdGNoZXI8Y29uc3QgOjpzdGQ6OndzdHJpbmcmPiBtMiA9IFN0YXJ0c1dpdGgoTCJIaSIp
OworICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKEwiSGkiKSk7CisgIEVYUEVDVF9UUlVFKG0yLk1h
dGNoZXMoTCJIaSBIaSEiKSk7CisgIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoTCJIaWdoIikpOwor
ICBFWFBFQ1RfRkFMU0UobTIuTWF0Y2hlcyhMIkgiKSk7CisgIEVYUEVDVF9GQUxTRShtMi5NYXRj
aGVzKEwiIEhpIikpOworfQorCitURVNUKFN0ZFdpZGVTdGFydHNXaXRoVGVzdCwgQ2FuRGVzY3Jp
YmVTZWxmKSB7CisgIE1hdGNoZXI8Y29uc3QgOjpzdGQ6OndzdHJpbmc+IG0gPSBTdGFydHNXaXRo
KEwiSGkiKTsKKyAgRVhQRUNUX0VRKCJzdGFydHMgd2l0aCBMXCJIaVwiIiwgRGVzY3JpYmUobSkp
OworfQorCisvLyBUZXN0cyBFbmRzV2l0aChzKS4KKworVEVTVChTdGRXaWRlRW5kc1dpdGhUZXN0
LCBNYXRjaGVzU3RyaW5nV2l0aEdpdmVuU3VmZml4KSB7CisgIGNvbnN0IE1hdGNoZXI8Y29uc3Qg
d2NoYXJfdCo+IG0xID0gRW5kc1dpdGgoTCIiKTsKKyAgRVhQRUNUX1RSVUUobTEuTWF0Y2hlcyhM
IkhpIikpOworICBFWFBFQ1RfVFJVRShtMS5NYXRjaGVzKEwiIikpOworICBFWFBFQ1RfRkFMU0Uo
bTEuTWF0Y2hlcyhOVUxMKSk7CisKKyAgY29uc3QgTWF0Y2hlcjxjb25zdCA6OnN0ZDo6d3N0cmlu
ZyY+IG0yID0gRW5kc1dpdGgoOjpzdGQ6OndzdHJpbmcoTCJIaSIpKTsKKyAgRVhQRUNUX1RSVUUo
bTIuTWF0Y2hlcyhMIkhpIikpOworICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKEwiV293IEhpIEhp
IikpOworICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKEwiU3VwZXIgSGkiKSk7CisgIEVYUEVDVF9G
QUxTRShtMi5NYXRjaGVzKEwiaSIpKTsKKyAgRVhQRUNUX0ZBTFNFKG0yLk1hdGNoZXMoTCJIaSAi
KSk7Cit9CisKK1RFU1QoU3RkV2lkZUVuZHNXaXRoVGVzdCwgQ2FuRGVzY3JpYmVTZWxmKSB7Cisg
IE1hdGNoZXI8Y29uc3QgOjpzdGQ6OndzdHJpbmc+IG0gPSBFbmRzV2l0aChMIkhpIik7CisgIEVY
UEVDVF9FUSgiZW5kcyB3aXRoIExcIkhpXCIiLCBEZXNjcmliZShtKSk7Cit9CisKKyNlbmRpZiAg
Ly8gR1RFU1RfSEFTX1NURF9XU1RSSU5HCisKKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcK
K1RFU1QoR2xvYmFsV2lkZVN0ckVxVGVzdCwgTWF0Y2hlc0VxdWFsKSB7CisgIE1hdGNoZXI8Y29u
c3Qgd2NoYXJfdCo+IG0gPSBTdHJFcSg6OndzdHJpbmcoTCJIZWxsbyIpKTsKKyAgRVhQRUNUX1RS
VUUobS5NYXRjaGVzKEwiSGVsbG8iKSk7CisgIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoTCJoZWxs
byIpKTsKKyAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhOVUxMKSk7CisKKyAgTWF0Y2hlcjxjb25z
dCA6OndzdHJpbmcmPiBtMiA9IFN0ckVxKEwiSGVsbG8iKTsKKyAgRVhQRUNUX1RSVUUobTIuTWF0
Y2hlcyhMIkhlbGxvIikpOworICBFWFBFQ1RfRkFMU0UobTIuTWF0Y2hlcyhMIkhpIikpOworCisg
IE1hdGNoZXI8Y29uc3QgOjp3c3RyaW5nJj4gbTMgPSBTdHJFcShMIlx4RDNceDU3Nlx4OEQzXHhD
NzREIik7CisgIEVYUEVDVF9UUlVFKG0zLk1hdGNoZXMoTCJceEQzXHg1NzZceDhEM1x4Qzc0RCIp
KTsKKyAgRVhQRUNUX0ZBTFNFKG0zLk1hdGNoZXMoTCJceEQzXHg1NzZceDhEM1x4Qzc0RSIpKTsK
KworICA6OndzdHJpbmcgc3RyKEwiMDEyMDQ1MDA4MDAiKTsKKyAgc3RyWzNdID0gTCdcMCc7Cisg
IE1hdGNoZXI8Y29uc3QgOjp3c3RyaW5nJj4gbTQgPSBTdHJFcShzdHIpOworICBFWFBFQ1RfVFJV
RShtNC5NYXRjaGVzKHN0cikpOworICBzdHJbMF0gPSBzdHJbNl0gPSBzdHJbN10gPSBzdHJbOV0g
PSBzdHJbMTBdID0gTCdcMCc7CisgIE1hdGNoZXI8Y29uc3QgOjp3c3RyaW5nJj4gbTUgPSBTdHJF
cShzdHIpOworICBFWFBFQ1RfVFJVRShtNS5NYXRjaGVzKHN0cikpOworfQorCitURVNUKEdsb2Jh
bFdpZGVTdHJFcVRlc3QsIENhbkRlc2NyaWJlU2VsZikgeworICBNYXRjaGVyPCA6OndzdHJpbmc+
IG0gPSBTdHJFcShMIkhpLVwnXCI/XFxcYVxiXGZcblxyXHRcdiIpOworICBFWFBFQ1RfRVEoImlz
IGVxdWFsIHRvIExcIkhpLVwnXFxcIj9cXFxcXFxhXFxiXFxmXFxuXFxyXFx0XFx2XCIiLAorICAg
IERlc2NyaWJlKG0pKTsKKworICBNYXRjaGVyPCA6OndzdHJpbmc+IG0yID0gU3RyRXEoTCJceEQz
XHg1NzZceDhEM1x4Qzc0RCIpOworICBFWFBFQ1RfRVEoImlzIGVxdWFsIHRvIExcIlxceEQzXFx4
NTc2XFx4OEQzXFx4Qzc0RFwiIiwKKyAgICBEZXNjcmliZShtMikpOworCisgIDo6d3N0cmluZyBz
dHIoTCIwMTIwNDUwMDgwMCIpOworICBzdHJbM10gPSBMJ1wwJzsKKyAgTWF0Y2hlcjxjb25zdCA6
OndzdHJpbmcmPiBtNCA9IFN0ckVxKHN0cik7CisgIEVYUEVDVF9FUSgiaXMgZXF1YWwgdG8gTFwi
MDEyXFwwNDUwMDgwMFwiIiwgRGVzY3JpYmUobTQpKTsKKyAgc3RyWzBdID0gc3RyWzZdID0gc3Ry
WzddID0gc3RyWzldID0gc3RyWzEwXSA9IEwnXDAnOworICBNYXRjaGVyPGNvbnN0IDo6d3N0cmlu
ZyY+IG01ID0gU3RyRXEoc3RyKTsKKyAgRVhQRUNUX0VRKCJpcyBlcXVhbCB0byBMXCJcXDAxMlxc
MDQ1XFwwXFwwOFxcMFxcMFwiIiwgRGVzY3JpYmUobTUpKTsKK30KKworVEVTVChHbG9iYWxXaWRl
U3RyTmVUZXN0LCBNYXRjaGVzVW5lcXVhbFN0cmluZykgeworICBNYXRjaGVyPGNvbnN0IHdjaGFy
X3QqPiBtID0gU3RyTmUoTCJIZWxsbyIpOworICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoTCIiKSk7
CisgIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhOVUxMKSk7CisgIEVYUEVDVF9GQUxTRShtLk1hdGNo
ZXMoTCJIZWxsbyIpKTsKKworICBNYXRjaGVyPCA6OndzdHJpbmc+IG0yID0gU3RyTmUoOjp3c3Ry
aW5nKEwiSGVsbG8iKSk7CisgIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoTCJoZWxsbyIpKTsKKyAg
RVhQRUNUX0ZBTFNFKG0yLk1hdGNoZXMoTCJIZWxsbyIpKTsKK30KKworVEVTVChHbG9iYWxXaWRl
U3RyTmVUZXN0LCBDYW5EZXNjcmliZVNlbGYpIHsKKyAgTWF0Y2hlcjxjb25zdCB3Y2hhcl90Kj4g
bSA9IFN0ck5lKEwiSGkiKTsKKyAgRVhQRUNUX0VRKCJpc24ndCBlcXVhbCB0byBMXCJIaVwiIiwg
RGVzY3JpYmUobSkpOworfQorCitURVNUKEdsb2JhbFdpZGVTdHJDYXNlRXFUZXN0LCBNYXRjaGVz
RXF1YWxTdHJpbmdJZ25vcmluZ0Nhc2UpIHsKKyAgTWF0Y2hlcjxjb25zdCB3Y2hhcl90Kj4gbSA9
IFN0ckNhc2VFcSg6OndzdHJpbmcoTCJIZWxsbyIpKTsKKyAgRVhQRUNUX1RSVUUobS5NYXRjaGVz
KEwiSGVsbG8iKSk7CisgIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhMImhlbGxvIikpOworICBFWFBF
Q1RfRkFMU0UobS5NYXRjaGVzKEwiSGkiKSk7CisgIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoTlVM
TCkpOworCisgIE1hdGNoZXI8Y29uc3QgOjp3c3RyaW5nJj4gbTIgPSBTdHJDYXNlRXEoTCJIZWxs
byIpOworICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKEwiaGVsbG8iKSk7CisgIEVYUEVDVF9GQUxT
RShtMi5NYXRjaGVzKEwiSGkiKSk7Cit9CisKK1RFU1QoR2xvYmFsV2lkZVN0ckNhc2VFcVRlc3Qs
IE1hdGNoZXNFcXVhbFN0cmluZ1dpdGgwSWdub3JpbmdDYXNlKSB7CisgIDo6d3N0cmluZyBzdHIx
KEwib2Fib2Nkb29lb28iKTsKKyAgOjp3c3RyaW5nIHN0cjIoTCJPQUJPQ0RPT0VPTyIpOworICBN
YXRjaGVyPGNvbnN0IDo6d3N0cmluZyY+IG0wID0gU3RyQ2FzZUVxKHN0cjEpOworICBFWFBFQ1Rf
RkFMU0UobTAuTWF0Y2hlcyhzdHIyICsgOjp3c3RyaW5nKDEsIEwnXDAnKSkpOworCisgIHN0cjFb
M10gPSBzdHIyWzNdID0gTCdcMCc7CisgIE1hdGNoZXI8Y29uc3QgOjp3c3RyaW5nJj4gbTEgPSBT
dHJDYXNlRXEoc3RyMSk7CisgIEVYUEVDVF9UUlVFKG0xLk1hdGNoZXMoc3RyMikpOworCisgIHN0
cjFbMF0gPSBzdHIxWzZdID0gc3RyMVs3XSA9IHN0cjFbMTBdID0gTCdcMCc7CisgIHN0cjJbMF0g
PSBzdHIyWzZdID0gc3RyMls3XSA9IHN0cjJbMTBdID0gTCdcMCc7CisgIE1hdGNoZXI8Y29uc3Qg
Ojp3c3RyaW5nJj4gbTIgPSBTdHJDYXNlRXEoc3RyMSk7CisgIHN0cjFbOV0gPSBzdHIyWzldID0g
TCdcMCc7CisgIEVYUEVDVF9GQUxTRShtMi5NYXRjaGVzKHN0cjIpKTsKKworICBNYXRjaGVyPGNv
bnN0IDo6d3N0cmluZyY+IG0zID0gU3RyQ2FzZUVxKHN0cjEpOworICBFWFBFQ1RfVFJVRShtMy5N
YXRjaGVzKHN0cjIpKTsKKworICBFWFBFQ1RfRkFMU0UobTMuTWF0Y2hlcyhzdHIyICsgTCJ4Iikp
OworICBzdHIyLmFwcGVuZCgxLCBMJ1wwJyk7CisgIEVYUEVDVF9GQUxTRShtMy5NYXRjaGVzKHN0
cjIpKTsKKyAgRVhQRUNUX0ZBTFNFKG0zLk1hdGNoZXMoOjp3c3RyaW5nKHN0cjIsIDAsIDkpKSk7
Cit9CisKK1RFU1QoR2xvYmFsV2lkZVN0ckNhc2VFcVRlc3QsIENhbkRlc2NyaWJlU2VsZikgewor
ICBNYXRjaGVyPCA6OndzdHJpbmc+IG0gPSBTdHJDYXNlRXEoTCJIaSIpOworICBFWFBFQ1RfRVEo
ImlzIGVxdWFsIHRvIChpZ25vcmluZyBjYXNlKSBMXCJIaVwiIiwgRGVzY3JpYmUobSkpOworfQor
CitURVNUKEdsb2JhbFdpZGVTdHJDYXNlTmVUZXN0LCBNYXRjaGVzVW5lcXVhbFN0cmluZ0lnbm9y
aW5nQ2FzZSkgeworICBNYXRjaGVyPGNvbnN0IHdjaGFyX3QqPiBtID0gU3RyQ2FzZU5lKEwiSGVs
bG8iKTsKKyAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKEwiSGkiKSk7CisgIEVYUEVDVF9UUlVFKG0u
TWF0Y2hlcyhOVUxMKSk7CisgIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoTCJIZWxsbyIpKTsKKyAg
RVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhMImhlbGxvIikpOworCisgIE1hdGNoZXI8IDo6d3N0cmlu
Zz4gbTIgPSBTdHJDYXNlTmUoOjp3c3RyaW5nKEwiSGVsbG8iKSk7CisgIEVYUEVDVF9UUlVFKG0y
Lk1hdGNoZXMoTCIiKSk7CisgIEVYUEVDVF9GQUxTRShtMi5NYXRjaGVzKEwiSGVsbG8iKSk7Cit9
CisKK1RFU1QoR2xvYmFsV2lkZVN0ckNhc2VOZVRlc3QsIENhbkRlc2NyaWJlU2VsZikgeworICBN
YXRjaGVyPGNvbnN0IHdjaGFyX3QqPiBtID0gU3RyQ2FzZU5lKEwiSGkiKTsKKyAgRVhQRUNUX0VR
KCJpc24ndCBlcXVhbCB0byAoaWdub3JpbmcgY2FzZSkgTFwiSGlcIiIsIERlc2NyaWJlKG0pKTsK
K30KKworLy8gVGVzdHMgdGhhdCBIYXNTdWJzdHIoKSB3b3JrcyBmb3IgbWF0Y2hpbmcgd3N0cmlu
Zy10eXBlZCB2YWx1ZXMuCitURVNUKEdsb2JhbFdpZGVIYXNTdWJzdHJUZXN0LCBXb3Jrc0ZvclN0
cmluZ0NsYXNzZXMpIHsKKyAgY29uc3QgTWF0Y2hlcjwgOjp3c3RyaW5nPiBtMSA9IEhhc1N1YnN0
cihMImZvbyIpOworICBFWFBFQ1RfVFJVRShtMS5NYXRjaGVzKDo6d3N0cmluZyhMIkkgbG92ZSBm
b29kLiIpKSk7CisgIEVYUEVDVF9GQUxTRShtMS5NYXRjaGVzKDo6d3N0cmluZyhMInRvZm8iKSkp
OworCisgIGNvbnN0IE1hdGNoZXI8Y29uc3QgOjp3c3RyaW5nJj4gbTIgPSBIYXNTdWJzdHIoTCJm
b28iKTsKKyAgRVhQRUNUX1RSVUUobTIuTWF0Y2hlcyg6OndzdHJpbmcoTCJJIGxvdmUgZm9vZC4i
KSkpOworICBFWFBFQ1RfRkFMU0UobTIuTWF0Y2hlcyg6OndzdHJpbmcoTCJ0b2ZvIikpKTsKK30K
KworLy8gVGVzdHMgdGhhdCBIYXNTdWJzdHIoKSB3b3JrcyBmb3IgbWF0Y2hpbmcgQy13aWRlLXN0
cmluZy10eXBlZCB2YWx1ZXMuCitURVNUKEdsb2JhbFdpZGVIYXNTdWJzdHJUZXN0LCBXb3Jrc0Zv
ckNTdHJpbmdzKSB7CisgIGNvbnN0IE1hdGNoZXI8d2NoYXJfdCo+IG0xID0gSGFzU3Vic3RyKEwi
Zm9vIik7CisgIEVYUEVDVF9UUlVFKG0xLk1hdGNoZXMoY29uc3RfY2FzdDx3Y2hhcl90Kj4oTCJJ
IGxvdmUgZm9vZC4iKSkpOworICBFWFBFQ1RfRkFMU0UobTEuTWF0Y2hlcyhjb25zdF9jYXN0PHdj
aGFyX3QqPihMInRvZm8iKSkpOworICBFWFBFQ1RfRkFMU0UobTEuTWF0Y2hlcyhOVUxMKSk7CisK
KyAgY29uc3QgTWF0Y2hlcjxjb25zdCB3Y2hhcl90Kj4gbTIgPSBIYXNTdWJzdHIoTCJmb28iKTsK
KyAgRVhQRUNUX1RSVUUobTIuTWF0Y2hlcyhMIkkgbG92ZSBmb29kLiIpKTsKKyAgRVhQRUNUX0ZB
TFNFKG0yLk1hdGNoZXMoTCJ0b2ZvIikpOworICBFWFBFQ1RfRkFMU0UobTIuTWF0Y2hlcyhOVUxM
KSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgSGFzU3Vic3RyKHMpIGRlc2NyaWJlcyBpdHNlbGYgcHJv
cGVybHkuCitURVNUKEdsb2JhbFdpZGVIYXNTdWJzdHJUZXN0LCBDYW5EZXNjcmliZVNlbGYpIHsK
KyAgTWF0Y2hlcjwgOjp3c3RyaW5nPiBtID0gSGFzU3Vic3RyKEwiZm9vXG5cIiIpOworICBFWFBF
Q1RfRVEoImhhcyBzdWJzdHJpbmcgTFwiZm9vXFxuXFxcIlwiIiwgRGVzY3JpYmUobSkpOworfQor
CisvLyBUZXN0cyBTdGFydHNXaXRoKHMpLgorCitURVNUKEdsb2JhbFdpZGVTdGFydHNXaXRoVGVz
dCwgTWF0Y2hlc1N0cmluZ1dpdGhHaXZlblByZWZpeCkgeworICBjb25zdCBNYXRjaGVyPGNvbnN0
IHdjaGFyX3QqPiBtMSA9IFN0YXJ0c1dpdGgoOjp3c3RyaW5nKEwiIikpOworICBFWFBFQ1RfVFJV
RShtMS5NYXRjaGVzKEwiSGkiKSk7CisgIEVYUEVDVF9UUlVFKG0xLk1hdGNoZXMoTCIiKSk7Cisg
IEVYUEVDVF9GQUxTRShtMS5NYXRjaGVzKE5VTEwpKTsKKworICBjb25zdCBNYXRjaGVyPGNvbnN0
IDo6d3N0cmluZyY+IG0yID0gU3RhcnRzV2l0aChMIkhpIik7CisgIEVYUEVDVF9UUlVFKG0yLk1h
dGNoZXMoTCJIaSIpKTsKKyAgRVhQRUNUX1RSVUUobTIuTWF0Y2hlcyhMIkhpIEhpISIpKTsKKyAg
RVhQRUNUX1RSVUUobTIuTWF0Y2hlcyhMIkhpZ2giKSk7CisgIEVYUEVDVF9GQUxTRShtMi5NYXRj
aGVzKEwiSCIpKTsKKyAgRVhQRUNUX0ZBTFNFKG0yLk1hdGNoZXMoTCIgSGkiKSk7Cit9CisKK1RF
U1QoR2xvYmFsV2lkZVN0YXJ0c1dpdGhUZXN0LCBDYW5EZXNjcmliZVNlbGYpIHsKKyAgTWF0Y2hl
cjxjb25zdCA6OndzdHJpbmc+IG0gPSBTdGFydHNXaXRoKEwiSGkiKTsKKyAgRVhQRUNUX0VRKCJz
dGFydHMgd2l0aCBMXCJIaVwiIiwgRGVzY3JpYmUobSkpOworfQorCisvLyBUZXN0cyBFbmRzV2l0
aChzKS4KKworVEVTVChHbG9iYWxXaWRlRW5kc1dpdGhUZXN0LCBNYXRjaGVzU3RyaW5nV2l0aEdp
dmVuU3VmZml4KSB7CisgIGNvbnN0IE1hdGNoZXI8Y29uc3Qgd2NoYXJfdCo+IG0xID0gRW5kc1dp
dGgoTCIiKTsKKyAgRVhQRUNUX1RSVUUobTEuTWF0Y2hlcyhMIkhpIikpOworICBFWFBFQ1RfVFJV
RShtMS5NYXRjaGVzKEwiIikpOworICBFWFBFQ1RfRkFMU0UobTEuTWF0Y2hlcyhOVUxMKSk7CisK
KyAgY29uc3QgTWF0Y2hlcjxjb25zdCA6OndzdHJpbmcmPiBtMiA9IEVuZHNXaXRoKDo6d3N0cmlu
ZyhMIkhpIikpOworICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKEwiSGkiKSk7CisgIEVYUEVDVF9U
UlVFKG0yLk1hdGNoZXMoTCJXb3cgSGkgSGkiKSk7CisgIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMo
TCJTdXBlciBIaSIpKTsKKyAgRVhQRUNUX0ZBTFNFKG0yLk1hdGNoZXMoTCJpIikpOworICBFWFBF
Q1RfRkFMU0UobTIuTWF0Y2hlcyhMIkhpICIpKTsKK30KKworVEVTVChHbG9iYWxXaWRlRW5kc1dp
dGhUZXN0LCBDYW5EZXNjcmliZVNlbGYpIHsKKyAgTWF0Y2hlcjxjb25zdCA6OndzdHJpbmc+IG0g
PSBFbmRzV2l0aChMIkhpIik7CisgIEVYUEVDVF9FUSgiZW5kcyB3aXRoIExcIkhpXCIiLCBEZXNj
cmliZShtKSk7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCisKKwor
dHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPGxvbmcsIGludD4gVHVwbGUyOyAgLy8gTk9MSU5UCisK
Ky8vIFRlc3RzIHRoYXQgRXEoKSBtYXRjaGVzIGEgMi10dXBsZSB3aGVyZSB0aGUgZmlyc3QgZmll
bGQgPT0gdGhlCisvLyBzZWNvbmQgZmllbGQuCitURVNUKEVxMlRlc3QsIE1hdGNoZXNFcXVhbEFy
Z3VtZW50cykgeworICBNYXRjaGVyPGNvbnN0IFR1cGxlMiY+IG0gPSBFcSgpOworICBFWFBFQ1Rf
VFJVRShtLk1hdGNoZXMoVHVwbGUyKDVMLCA1KSkpOworICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVz
KFR1cGxlMig1TCwgNikpKTsKK30KKworLy8gVGVzdHMgdGhhdCBFcSgpIGRlc2NyaWJlcyBpdHNl
bGYgcHJvcGVybHkuCitURVNUKEVxMlRlc3QsIENhbkRlc2NyaWJlU2VsZikgeworICBNYXRjaGVy
PGNvbnN0IFR1cGxlMiY+IG0gPSBFcSgpOworICBFWFBFQ1RfRVEoImFyZSBhbiBlcXVhbCBwYWly
IiwgRGVzY3JpYmUobSkpOworfQorCisvLyBUZXN0cyB0aGF0IEdlKCkgbWF0Y2hlcyBhIDItdHVw
bGUgd2hlcmUgdGhlIGZpcnN0IGZpZWxkID49IHRoZQorLy8gc2Vjb25kIGZpZWxkLgorVEVTVChH
ZTJUZXN0LCBNYXRjaGVzR3JlYXRlclRoYW5PckVxdWFsQXJndW1lbnRzKSB7CisgIE1hdGNoZXI8
Y29uc3QgVHVwbGUyJj4gbSA9IEdlKCk7CisgIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhUdXBsZTIo
NUwsIDQpKSk7CisgIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhUdXBsZTIoNUwsIDUpKSk7CisgIEVY
UEVDVF9GQUxTRShtLk1hdGNoZXMoVHVwbGUyKDVMLCA2KSkpOworfQorCisvLyBUZXN0cyB0aGF0
IEdlKCkgZGVzY3JpYmVzIGl0c2VsZiBwcm9wZXJseS4KK1RFU1QoR2UyVGVzdCwgQ2FuRGVzY3Jp
YmVTZWxmKSB7CisgIE1hdGNoZXI8Y29uc3QgVHVwbGUyJj4gbSA9IEdlKCk7CisgIEVYUEVDVF9F
USgiYXJlIGEgcGFpciB3aGVyZSB0aGUgZmlyc3QgPj0gdGhlIHNlY29uZCIsIERlc2NyaWJlKG0p
KTsKK30KKworLy8gVGVzdHMgdGhhdCBHdCgpIG1hdGNoZXMgYSAyLXR1cGxlIHdoZXJlIHRoZSBm
aXJzdCBmaWVsZCA+IHRoZQorLy8gc2Vjb25kIGZpZWxkLgorVEVTVChHdDJUZXN0LCBNYXRjaGVz
R3JlYXRlclRoYW5Bcmd1bWVudHMpIHsKKyAgTWF0Y2hlcjxjb25zdCBUdXBsZTImPiBtID0gR3Qo
KTsKKyAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKFR1cGxlMig1TCwgNCkpKTsKKyAgRVhQRUNUX0ZB
TFNFKG0uTWF0Y2hlcyhUdXBsZTIoNUwsIDUpKSk7CisgIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMo
VHVwbGUyKDVMLCA2KSkpOworfQorCisvLyBUZXN0cyB0aGF0IEd0KCkgZGVzY3JpYmVzIGl0c2Vs
ZiBwcm9wZXJseS4KK1RFU1QoR3QyVGVzdCwgQ2FuRGVzY3JpYmVTZWxmKSB7CisgIE1hdGNoZXI8
Y29uc3QgVHVwbGUyJj4gbSA9IEd0KCk7CisgIEVYUEVDVF9FUSgiYXJlIGEgcGFpciB3aGVyZSB0
aGUgZmlyc3QgPiB0aGUgc2Vjb25kIiwgRGVzY3JpYmUobSkpOworfQorCisvLyBUZXN0cyB0aGF0
IExlKCkgbWF0Y2hlcyBhIDItdHVwbGUgd2hlcmUgdGhlIGZpcnN0IGZpZWxkIDw9IHRoZQorLy8g
c2Vjb25kIGZpZWxkLgorVEVTVChMZTJUZXN0LCBNYXRjaGVzTGVzc1RoYW5PckVxdWFsQXJndW1l
bnRzKSB7CisgIE1hdGNoZXI8Y29uc3QgVHVwbGUyJj4gbSA9IExlKCk7CisgIEVYUEVDVF9UUlVF
KG0uTWF0Y2hlcyhUdXBsZTIoNUwsIDYpKSk7CisgIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhUdXBs
ZTIoNUwsIDUpKSk7CisgIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoVHVwbGUyKDVMLCA0KSkpOwor
fQorCisvLyBUZXN0cyB0aGF0IExlKCkgZGVzY3JpYmVzIGl0c2VsZiBwcm9wZXJseS4KK1RFU1Qo
TGUyVGVzdCwgQ2FuRGVzY3JpYmVTZWxmKSB7CisgIE1hdGNoZXI8Y29uc3QgVHVwbGUyJj4gbSA9
IExlKCk7CisgIEVYUEVDVF9FUSgiYXJlIGEgcGFpciB3aGVyZSB0aGUgZmlyc3QgPD0gdGhlIHNl
Y29uZCIsIERlc2NyaWJlKG0pKTsKK30KKworLy8gVGVzdHMgdGhhdCBMdCgpIG1hdGNoZXMgYSAy
LXR1cGxlIHdoZXJlIHRoZSBmaXJzdCBmaWVsZCA8IHRoZQorLy8gc2Vjb25kIGZpZWxkLgorVEVT
VChMdDJUZXN0LCBNYXRjaGVzTGVzc1RoYW5Bcmd1bWVudHMpIHsKKyAgTWF0Y2hlcjxjb25zdCBU
dXBsZTImPiBtID0gTHQoKTsKKyAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKFR1cGxlMig1TCwgNikp
KTsKKyAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhUdXBsZTIoNUwsIDUpKSk7CisgIEVYUEVDVF9G
QUxTRShtLk1hdGNoZXMoVHVwbGUyKDVMLCA0KSkpOworfQorCisvLyBUZXN0cyB0aGF0IEx0KCkg
ZGVzY3JpYmVzIGl0c2VsZiBwcm9wZXJseS4KK1RFU1QoTHQyVGVzdCwgQ2FuRGVzY3JpYmVTZWxm
KSB7CisgIE1hdGNoZXI8Y29uc3QgVHVwbGUyJj4gbSA9IEx0KCk7CisgIEVYUEVDVF9FUSgiYXJl
IGEgcGFpciB3aGVyZSB0aGUgZmlyc3QgPCB0aGUgc2Vjb25kIiwgRGVzY3JpYmUobSkpOworfQor
CisvLyBUZXN0cyB0aGF0IE5lKCkgbWF0Y2hlcyBhIDItdHVwbGUgd2hlcmUgdGhlIGZpcnN0IGZp
ZWxkICE9IHRoZQorLy8gc2Vjb25kIGZpZWxkLgorVEVTVChOZTJUZXN0LCBNYXRjaGVzVW5lcXVh
bEFyZ3VtZW50cykgeworICBNYXRjaGVyPGNvbnN0IFR1cGxlMiY+IG0gPSBOZSgpOworICBFWFBF
Q1RfVFJVRShtLk1hdGNoZXMoVHVwbGUyKDVMLCA2KSkpOworICBFWFBFQ1RfVFJVRShtLk1hdGNo
ZXMoVHVwbGUyKDVMLCA0KSkpOworICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKFR1cGxlMig1TCwg
NSkpKTsKK30KKworLy8gVGVzdHMgdGhhdCBOZSgpIGRlc2NyaWJlcyBpdHNlbGYgcHJvcGVybHku
CitURVNUKE5lMlRlc3QsIENhbkRlc2NyaWJlU2VsZikgeworICBNYXRjaGVyPGNvbnN0IFR1cGxl
MiY+IG0gPSBOZSgpOworICBFWFBFQ1RfRVEoImFyZSBhbiB1bmVxdWFsIHBhaXIiLCBEZXNjcmli
ZShtKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgTm90KG0pIG1hdGNoZXMgYW55IHZhbHVlIHRoYXQg
ZG9lc24ndCBtYXRjaCBtLgorVEVTVChOb3RUZXN0LCBOZWdhdGVzTWF0Y2hlcikgeworICBNYXRj
aGVyPGludD4gbTsKKyAgbSA9IE5vdChFcSgyKSk7CisgIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcygz
KSk7CisgIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoMikpOworfQorCisvLyBUZXN0cyB0aGF0IE5v
dChtKSBkZXNjcmliZXMgaXRzZWxmIHByb3Blcmx5LgorVEVTVChOb3RUZXN0LCBDYW5EZXNjcmli
ZVNlbGYpIHsKKyAgTWF0Y2hlcjxpbnQ+IG0gPSBOb3QoRXEoNSkpOworICBFWFBFQ1RfRVEoImlz
bid0IGVxdWFsIHRvIDUiLCBEZXNjcmliZShtKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgbW9ub21v
cnBoaWMgbWF0Y2hlcnMgYXJlIHNhZmVseSBjYXN0IGJ5IHRoZSBOb3QgbWF0Y2hlci4KK1RFU1Qo
Tm90VGVzdCwgTm90TWF0Y2hlclNhZmVseUNhc3RzTW9ub21vcnBoaWNNYXRjaGVycykgeworICAv
LyBncmVhdGVyX3RoYW5fNSBpcyBhIG1vbm9tb3JwaGljIG1hdGNoZXIuCisgIE1hdGNoZXI8aW50
PiBncmVhdGVyX3RoYW5fNSA9IEd0KDUpOworCisgIE1hdGNoZXI8Y29uc3QgaW50Jj4gbSA9IE5v
dChncmVhdGVyX3RoYW5fNSk7CisgIE1hdGNoZXI8aW50Jj4gbTIgPSBOb3QoZ3JlYXRlcl90aGFu
XzUpOworICBNYXRjaGVyPGludCY+IG0zID0gTm90KG0pOworfQorCisvLyBIZWxwZXIgdG8gYWxs
b3cgZWFzeSB0ZXN0aW5nIG9mIEFsbE9mIG1hdGNoZXJzIHdpdGggbnVtIHBhcmFtZXRlcnMuCit2
b2lkIEFsbE9mTWF0Y2hlcyhpbnQgbnVtLCBjb25zdCBNYXRjaGVyPGludD4mIG0pIHsKKyAgU0NP
UEVEX1RSQUNFKERlc2NyaWJlKG0pKTsKKyAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKDApKTsKKyAg
Zm9yIChpbnQgaSA9IDE7IGkgPD0gbnVtOyArK2kpIHsKKyAgICBFWFBFQ1RfRkFMU0UobS5NYXRj
aGVzKGkpKTsKKyAgfQorICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMobnVtICsgMSkpOworfQorCisv
LyBUZXN0cyB0aGF0IEFsbE9mKG0xLCAuLi4sIG1uKSBtYXRjaGVzIGFueSB2YWx1ZSB0aGF0IG1h
dGNoZXMgYWxsIG9mCisvLyB0aGUgZ2l2ZW4gbWF0Y2hlcnMuCitURVNUKEFsbE9mVGVzdCwgTWF0
Y2hlc1doZW5BbGxNYXRjaCkgeworICBNYXRjaGVyPGludD4gbTsKKyAgbSA9IEFsbE9mKExlKDIp
LCBHZSgxKSk7CisgIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcygxKSk7CisgIEVYUEVDVF9UUlVFKG0u
TWF0Y2hlcygyKSk7CisgIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoMCkpOworICBFWFBFQ1RfRkFM
U0UobS5NYXRjaGVzKDMpKTsKKworICBtID0gQWxsT2YoR3QoMCksIE5lKDEpLCBOZSgyKSk7Cisg
IEVYUEVDVF9UUlVFKG0uTWF0Y2hlcygzKSk7CisgIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoMikp
OworICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKDEpKTsKKyAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hl
cygwKSk7CisKKyAgbSA9IEFsbE9mKEd0KDApLCBOZSgxKSwgTmUoMiksIE5lKDMpKTsKKyAgRVhQ
RUNUX1RSVUUobS5NYXRjaGVzKDQpKTsKKyAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcygzKSk7Cisg
IEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoMikpOworICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKDEp
KTsKKyAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcygwKSk7CisKKyAgbSA9IEFsbE9mKEdlKDApLCBM
dCgxMCksIE5lKDMpLCBOZSg1KSwgTmUoNykpOworICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoMCkp
OworICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoMSkpOworICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVz
KDMpKTsKKworICAvLyBUaGUgZm9sbG93aW5nIHRlc3RzIGZvciB2YXJ5aW5nIG51bWJlciBvZiBz
dWItbWF0Y2hlcnMuIER1ZSB0byB0aGUgd2F5CisgIC8vIHRoZSBzdWItbWF0Y2hlcnMgYXJlIGhh
bmRsZWQgaXQgaXMgZW5vdWdoIHRvIHRlc3QgZXZlcnkgc3ViLW1hdGNoZXIgb25jZQorICAvLyB3
aXRoIHN1Yi1tYXRjaGVycyB1c2luZyB0aGUgc2FtZSBtYXRjaGVyIHR5cGUuIFZhcnlpbmcgbWF0
Y2hlciB0eXBlcyBhcmUKKyAgLy8gY2hlY2tlZCBmb3IgYWJvdmUuCisgIEFsbE9mTWF0Y2hlcygy
LCBBbGxPZihOZSgxKSwgTmUoMikpKTsKKyAgQWxsT2ZNYXRjaGVzKDMsIEFsbE9mKE5lKDEpLCBO
ZSgyKSwgTmUoMykpKTsKKyAgQWxsT2ZNYXRjaGVzKDQsIEFsbE9mKE5lKDEpLCBOZSgyKSwgTmUo
MyksIE5lKDQpKSk7CisgIEFsbE9mTWF0Y2hlcyg1LCBBbGxPZihOZSgxKSwgTmUoMiksIE5lKDMp
LCBOZSg0KSwgTmUoNSkpKTsKKyAgQWxsT2ZNYXRjaGVzKDYsIEFsbE9mKE5lKDEpLCBOZSgyKSwg
TmUoMyksIE5lKDQpLCBOZSg1KSwgTmUoNikpKTsKKyAgQWxsT2ZNYXRjaGVzKDcsIEFsbE9mKE5l
KDEpLCBOZSgyKSwgTmUoMyksIE5lKDQpLCBOZSg1KSwgTmUoNiksIE5lKDcpKSk7CisgIEFsbE9m
TWF0Y2hlcyg4LCBBbGxPZihOZSgxKSwgTmUoMiksIE5lKDMpLCBOZSg0KSwgTmUoNSksIE5lKDYp
LCBOZSg3KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIE5lKDgpKSk7CisgIEFsbE9mTWF0Y2hl
cyg5LCBBbGxPZihOZSgxKSwgTmUoMiksIE5lKDMpLCBOZSg0KSwgTmUoNSksIE5lKDYpLCBOZSg3
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIE5lKDgpLCBOZSg5KSkpOworICBBbGxPZk1hdGNo
ZXMoMTAsIEFsbE9mKE5lKDEpLCBOZSgyKSwgTmUoMyksIE5lKDQpLCBOZSg1KSwgTmUoNiksIE5l
KDcpLCBOZSg4KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBOZSg5KSwgTmUoMTApKSk7Cit9
CisKKyNpZiBHVEVTVF9MQU5HX0NYWDExCisvLyBUZXN0cyB0aGUgdmFyaWFkaWMgdmVyc2lvbiBv
ZiB0aGUgQWxsT2ZNYXRjaGVyLgorVEVTVChBbGxPZlRlc3QsIFZhcmlhZGljTWF0Y2hlc1doZW5B
bGxNYXRjaCkgeworICAvLyBNYWtlIHN1cmUgQWxsT2YgaXMgZGVmaW5lZCBpbiB0aGUgcmlnaHQg
bmFtZXNwYWNlIGFuZCBkb2VzIG5vdCBkZXBlbmQgb24KKyAgLy8gQURMLgorICA6OnRlc3Rpbmc6
OkFsbE9mKDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSk7CisgIE1hdGNoZXI8aW50
PiBtID0gQWxsT2YoTmUoMSksIE5lKDIpLCBOZSgzKSwgTmUoNCksIE5lKDUpLCBOZSg2KSwgTmUo
NyksIE5lKDgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIE5lKDkpLCBOZSgxMCksIE5lKDEx
KSk7CisgIEVYUEVDVF9USEFUKERlc2NyaWJlKG0pLCBFbmRzV2l0aCgiYW5kIChpc24ndCBlcXVh
bCB0byAxMSkpKSkpKSkpKSkiKSk7CisgIEFsbE9mTWF0Y2hlcygxMSwgbSk7CisgIEFsbE9mTWF0
Y2hlcyg1MCwgQWxsT2YoTmUoMSksIE5lKDIpLCBOZSgzKSwgTmUoNCksIE5lKDUpLCBOZSg2KSwg
TmUoNyksIE5lKDgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIE5lKDkpLCBOZSgxMCksIE5l
KDExKSwgTmUoMTIpLCBOZSgxMyksIE5lKDE0KSwgTmUoMTUpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIE5lKDE2KSwgTmUoMTcpLCBOZSgxOCksIE5lKDE5KSwgTmUoMjApLCBOZSgyMSksIE5l
KDIyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBOZSgyMyksIE5lKDI0KSwgTmUoMjUpLCBO
ZSgyNiksIE5lKDI3KSwgTmUoMjgpLCBOZSgyOSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
TmUoMzApLCBOZSgzMSksIE5lKDMyKSwgTmUoMzMpLCBOZSgzNCksIE5lKDM1KSwgTmUoMzYpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIE5lKDM3KSwgTmUoMzgpLCBOZSgzOSksIE5lKDQwKSwg
TmUoNDEpLCBOZSg0MiksIE5lKDQzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBOZSg0NCks
IE5lKDQ1KSwgTmUoNDYpLCBOZSg0NyksIE5lKDQ4KSwgTmUoNDkpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIE5lKDUwKSkpOworfQorCisjZW5kaWYgIC8vIEdURVNUX0xBTkdfQ1hYMTEKKwor
Ly8gVGVzdHMgdGhhdCBBbGxPZihtMSwgLi4uLCBtbikgZGVzY3JpYmVzIGl0c2VsZiBwcm9wZXJs
eS4KK1RFU1QoQWxsT2ZUZXN0LCBDYW5EZXNjcmliZVNlbGYpIHsKKyAgTWF0Y2hlcjxpbnQ+IG07
CisgIG0gPSBBbGxPZihMZSgyKSwgR2UoMSkpOworICBFWFBFQ1RfRVEoIihpcyA8PSAyKSBhbmQg
KGlzID49IDEpIiwgRGVzY3JpYmUobSkpOworCisgIG0gPSBBbGxPZihHdCgwKSwgTmUoMSksIE5l
KDIpKTsKKyAgRVhQRUNUX0VRKCIoaXMgPiAwKSBhbmQgIgorICAgICAgICAgICAgIigoaXNuJ3Qg
ZXF1YWwgdG8gMSkgYW5kICIKKyAgICAgICAgICAgICIoaXNuJ3QgZXF1YWwgdG8gMikpIiwKKyAg
ICAgICAgICAgIERlc2NyaWJlKG0pKTsKKworCisgIG0gPSBBbGxPZihHdCgwKSwgTmUoMSksIE5l
KDIpLCBOZSgzKSk7CisgIEVYUEVDVF9FUSgiKChpcyA+IDApIGFuZCAiCisgICAgICAgICAgICAi
KGlzbid0IGVxdWFsIHRvIDEpKSBhbmQgIgorICAgICAgICAgICAgIigoaXNuJ3QgZXF1YWwgdG8g
MikgYW5kICIKKyAgICAgICAgICAgICIoaXNuJ3QgZXF1YWwgdG8gMykpIiwKKyAgICAgICAgICAg
IERlc2NyaWJlKG0pKTsKKworCisgIG0gPSBBbGxPZihHZSgwKSwgTHQoMTApLCBOZSgzKSwgTmUo
NSksIE5lKDcpKTsKKyAgRVhQRUNUX0VRKCIoKGlzID49IDApIGFuZCAiCisgICAgICAgICAgICAi
KGlzIDwgMTApKSBhbmQgIgorICAgICAgICAgICAgIigoaXNuJ3QgZXF1YWwgdG8gMykgYW5kICIK
KyAgICAgICAgICAgICIoKGlzbid0IGVxdWFsIHRvIDUpIGFuZCAiCisgICAgICAgICAgICAiKGlz
bid0IGVxdWFsIHRvIDcpKSkiLAorICAgICAgICAgICAgRGVzY3JpYmUobSkpOworfQorCisvLyBU
ZXN0cyB0aGF0IEFsbE9mKG0xLCAuLi4sIG1uKSBkZXNjcmliZXMgaXRzIG5lZ2F0aW9uIHByb3Bl
cmx5LgorVEVTVChBbGxPZlRlc3QsIENhbkRlc2NyaWJlTmVnYXRpb24pIHsKKyAgTWF0Y2hlcjxp
bnQ+IG07CisgIG0gPSBBbGxPZihMZSgyKSwgR2UoMSkpOworICBFWFBFQ1RfRVEoIihpc24ndCA8
PSAyKSBvciAiCisgICAgICAgICAgICAiKGlzbid0ID49IDEpIiwKKyAgICAgICAgICAgIERlc2Ny
aWJlTmVnYXRpb24obSkpOworCisgIG0gPSBBbGxPZihHdCgwKSwgTmUoMSksIE5lKDIpKTsKKyAg
RVhQRUNUX0VRKCIoaXNuJ3QgPiAwKSBvciAiCisgICAgICAgICAgICAiKChpcyBlcXVhbCB0byAx
KSBvciAiCisgICAgICAgICAgICAiKGlzIGVxdWFsIHRvIDIpKSIsCisgICAgICAgICAgICBEZXNj
cmliZU5lZ2F0aW9uKG0pKTsKKworCisgIG0gPSBBbGxPZihHdCgwKSwgTmUoMSksIE5lKDIpLCBO
ZSgzKSk7CisgIEVYUEVDVF9FUSgiKChpc24ndCA+IDApIG9yICIKKyAgICAgICAgICAgICIoaXMg
ZXF1YWwgdG8gMSkpIG9yICIKKyAgICAgICAgICAgICIoKGlzIGVxdWFsIHRvIDIpIG9yICIKKyAg
ICAgICAgICAgICIoaXMgZXF1YWwgdG8gMykpIiwKKyAgICAgICAgICAgIERlc2NyaWJlTmVnYXRp
b24obSkpOworCisKKyAgbSA9IEFsbE9mKEdlKDApLCBMdCgxMCksIE5lKDMpLCBOZSg1KSwgTmUo
NykpOworICBFWFBFQ1RfRVEoIigoaXNuJ3QgPj0gMCkgb3IgIgorICAgICAgICAgICAgIihpc24n
dCA8IDEwKSkgb3IgIgorICAgICAgICAgICAgIigoaXMgZXF1YWwgdG8gMykgb3IgIgorICAgICAg
ICAgICAgIigoaXMgZXF1YWwgdG8gNSkgb3IgIgorICAgICAgICAgICAgIihpcyBlcXVhbCB0byA3
KSkpIiwKKyAgICAgICAgICAgIERlc2NyaWJlTmVnYXRpb24obSkpOworfQorCisvLyBUZXN0cyB0
aGF0IG1vbm9tb3JwaGljIG1hdGNoZXJzIGFyZSBzYWZlbHkgY2FzdCBieSB0aGUgQWxsT2YgbWF0
Y2hlci4KK1RFU1QoQWxsT2ZUZXN0LCBBbGxPZk1hdGNoZXJTYWZlbHlDYXN0c01vbm9tb3JwaGlj
TWF0Y2hlcnMpIHsKKyAgLy8gZ3JlYXRlcl90aGFuXzUgYW5kIGxlc3NfdGhhbl8xMCBhcmUgbW9u
b21vcnBoaWMgbWF0Y2hlcnMuCisgIE1hdGNoZXI8aW50PiBncmVhdGVyX3RoYW5fNSA9IEd0KDUp
OworICBNYXRjaGVyPGludD4gbGVzc190aGFuXzEwID0gTHQoMTApOworCisgIE1hdGNoZXI8Y29u
c3QgaW50Jj4gbSA9IEFsbE9mKGdyZWF0ZXJfdGhhbl81LCBsZXNzX3RoYW5fMTApOworICBNYXRj
aGVyPGludCY+IG0yID0gQWxsT2YoZ3JlYXRlcl90aGFuXzUsIGxlc3NfdGhhbl8xMCk7CisgIE1h
dGNoZXI8aW50Jj4gbTMgPSBBbGxPZihncmVhdGVyX3RoYW5fNSwgbTIpOworCisgIC8vIFRlc3Rz
IHRoYXQgQm90aE9mIHdvcmtzIHdoZW4gY29tcG9zaW5nIGl0c2VsZi4KKyAgTWF0Y2hlcjxjb25z
dCBpbnQmPiBtNCA9IEFsbE9mKGdyZWF0ZXJfdGhhbl81LCBsZXNzX3RoYW5fMTAsIGxlc3NfdGhh
bl8xMCk7CisgIE1hdGNoZXI8aW50Jj4gbTUgPSBBbGxPZihncmVhdGVyX3RoYW5fNSwgbGVzc190
aGFuXzEwLCBsZXNzX3RoYW5fMTApOworfQorCitURVNUKEFsbE9mVGVzdCwgRXhwbGFpbnNSZXN1
bHQpIHsKKyAgTWF0Y2hlcjxpbnQ+IG07CisKKyAgLy8gU3VjY2Vzc2Z1bCBtYXRjaC4gIEJvdGgg
bWF0Y2hlcnMgbmVlZCB0byBleHBsYWluLiAgVGhlIHNlY29uZAorICAvLyBtYXRjaGVyIGRvZXNu
J3QgZ2l2ZSBhbiBleHBsYW5hdGlvbiwgc28gb25seSB0aGUgZmlyc3QgbWF0Y2hlcidzCisgIC8v
IGV4cGxhbmF0aW9uIGlzIHByaW50ZWQuCisgIG0gPSBBbGxPZihHcmVhdGVyVGhhbigxMCksIEx0
KDMwKSk7CisgIEVYUEVDVF9FUSgid2hpY2ggaXMgMTUgbW9yZSB0aGFuIDEwIiwgRXhwbGFpbiht
LCAyNSkpOworCisgIC8vIFN1Y2Nlc3NmdWwgbWF0Y2guICBCb3RoIG1hdGNoZXJzIG5lZWQgdG8g
ZXhwbGFpbi4KKyAgbSA9IEFsbE9mKEdyZWF0ZXJUaGFuKDEwKSwgR3JlYXRlclRoYW4oMjApKTsK
KyAgRVhQRUNUX0VRKCJ3aGljaCBpcyAyMCBtb3JlIHRoYW4gMTAsIGFuZCB3aGljaCBpcyAxMCBt
b3JlIHRoYW4gMjAiLAorICAgICAgICAgICAgRXhwbGFpbihtLCAzMCkpOworCisgIC8vIFN1Y2Nl
c3NmdWwgbWF0Y2guICBBbGwgbWF0Y2hlcnMgbmVlZCB0byBleHBsYWluLiAgVGhlIHNlY29uZAor
ICAvLyBtYXRjaGVyIGRvZXNuJ3QgZ2l2ZW4gYW4gZXhwbGFuYXRpb24uCisgIG0gPSBBbGxPZihH
cmVhdGVyVGhhbigxMCksIEx0KDMwKSwgR3JlYXRlclRoYW4oMjApKTsKKyAgRVhQRUNUX0VRKCJ3
aGljaCBpcyAxNSBtb3JlIHRoYW4gMTAsIGFuZCB3aGljaCBpcyA1IG1vcmUgdGhhbiAyMCIsCisg
ICAgICAgICAgICBFeHBsYWluKG0sIDI1KSk7CisKKyAgLy8gU3VjY2Vzc2Z1bCBtYXRjaC4gIEFs
bCBtYXRjaGVycyBuZWVkIHRvIGV4cGxhaW4uCisgIG0gPSBBbGxPZihHcmVhdGVyVGhhbigxMCks
IEdyZWF0ZXJUaGFuKDIwKSwgR3JlYXRlclRoYW4oMzApKTsKKyAgRVhQRUNUX0VRKCJ3aGljaCBp
cyAzMCBtb3JlIHRoYW4gMTAsIGFuZCB3aGljaCBpcyAyMCBtb3JlIHRoYW4gMjAsICIKKyAgICAg
ICAgICAgICJhbmQgd2hpY2ggaXMgMTAgbW9yZSB0aGFuIDMwIiwKKyAgICAgICAgICAgIEV4cGxh
aW4obSwgNDApKTsKKworICAvLyBGYWlsZWQgbWF0Y2guICBUaGUgZmlyc3QgbWF0Y2hlciwgd2hp
Y2ggZmFpbGVkLCBuZWVkcyB0bworICAvLyBleHBsYWluLgorICBtID0gQWxsT2YoR3JlYXRlclRo
YW4oMTApLCBHcmVhdGVyVGhhbigyMCkpOworICBFWFBFQ1RfRVEoIndoaWNoIGlzIDUgbGVzcyB0
aGFuIDEwIiwgRXhwbGFpbihtLCA1KSk7CisKKyAgLy8gRmFpbGVkIG1hdGNoLiAgVGhlIHNlY29u
ZCBtYXRjaGVyLCB3aGljaCBmYWlsZWQsIG5lZWRzIHRvCisgIC8vIGV4cGxhaW4uICBTaW5jZSBp
dCBkb2Vzbid0IGdpdmVuIGFuIGV4cGxhbmF0aW9uLCBub3RoaW5nIGlzCisgIC8vIHByaW50ZWQu
CisgIG0gPSBBbGxPZihHcmVhdGVyVGhhbigxMCksIEx0KDMwKSk7CisgIEVYUEVDVF9FUSgiIiwg
RXhwbGFpbihtLCA0MCkpOworCisgIC8vIEZhaWxlZCBtYXRjaC4gIFRoZSBzZWNvbmQgbWF0Y2hl
ciwgd2hpY2ggZmFpbGVkLCBuZWVkcyB0bworICAvLyBleHBsYWluLgorICBtID0gQWxsT2YoR3Jl
YXRlclRoYW4oMTApLCBHcmVhdGVyVGhhbigyMCkpOworICBFWFBFQ1RfRVEoIndoaWNoIGlzIDUg
bGVzcyB0aGFuIDIwIiwgRXhwbGFpbihtLCAxNSkpOworfQorCisvLyBIZWxwZXIgdG8gYWxsb3cg
ZWFzeSB0ZXN0aW5nIG9mIEFueU9mIG1hdGNoZXJzIHdpdGggbnVtIHBhcmFtZXRlcnMuCit2b2lk
IEFueU9mTWF0Y2hlcyhpbnQgbnVtLCBjb25zdCBNYXRjaGVyPGludD4mIG0pIHsKKyAgU0NPUEVE
X1RSQUNFKERlc2NyaWJlKG0pKTsKKyAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcygwKSk7CisgIGZv
ciAoaW50IGkgPSAxOyBpIDw9IG51bTsgKytpKSB7CisgICAgRVhQRUNUX1RSVUUobS5NYXRjaGVz
KGkpKTsKKyAgfQorICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKG51bSArIDEpKTsKK30KKworLy8g
VGVzdHMgdGhhdCBBbnlPZihtMSwgLi4uLCBtbikgbWF0Y2hlcyBhbnkgdmFsdWUgdGhhdCBtYXRj
aGVzIGF0CisvLyBsZWFzdCBvbmUgb2YgdGhlIGdpdmVuIG1hdGNoZXJzLgorVEVTVChBbnlPZlRl
c3QsIE1hdGNoZXNXaGVuQW55TWF0Y2hlcykgeworICBNYXRjaGVyPGludD4gbTsKKyAgbSA9IEFu
eU9mKExlKDEpLCBHZSgzKSk7CisgIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcygxKSk7CisgIEVYUEVD
VF9UUlVFKG0uTWF0Y2hlcyg0KSk7CisgIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoMikpOworCisg
IG0gPSBBbnlPZihMdCgwKSwgRXEoMSksIEVxKDIpKTsKKyAgRVhQRUNUX1RSVUUobS5NYXRjaGVz
KC0xKSk7CisgIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcygxKSk7CisgIEVYUEVDVF9UUlVFKG0uTWF0
Y2hlcygyKSk7CisgIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoMCkpOworCisgIG0gPSBBbnlPZihM
dCgwKSwgRXEoMSksIEVxKDIpLCBFcSgzKSk7CisgIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcygtMSkp
OworICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoMSkpOworICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMo
MikpOworICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoMykpOworICBFWFBFQ1RfRkFMU0UobS5NYXRj
aGVzKDApKTsKKworICBtID0gQW55T2YoTGUoMCksIEd0KDEwKSwgMywgNSwgNyk7CisgIEVYUEVD
VF9UUlVFKG0uTWF0Y2hlcygwKSk7CisgIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcygxMSkpOworICBF
WFBFQ1RfVFJVRShtLk1hdGNoZXMoMykpOworICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKDIpKTsK
KworICAvLyBUaGUgZm9sbG93aW5nIHRlc3RzIGZvciB2YXJ5aW5nIG51bWJlciBvZiBzdWItbWF0
Y2hlcnMuIER1ZSB0byB0aGUgd2F5CisgIC8vIHRoZSBzdWItbWF0Y2hlcnMgYXJlIGhhbmRsZWQg
aXQgaXMgZW5vdWdoIHRvIHRlc3QgZXZlcnkgc3ViLW1hdGNoZXIgb25jZQorICAvLyB3aXRoIHN1
Yi1tYXRjaGVycyB1c2luZyB0aGUgc2FtZSBtYXRjaGVyIHR5cGUuIFZhcnlpbmcgbWF0Y2hlciB0
eXBlcyBhcmUKKyAgLy8gY2hlY2tlZCBmb3IgYWJvdmUuCisgIEFueU9mTWF0Y2hlcygyLCBBbnlP
ZigxLCAyKSk7CisgIEFueU9mTWF0Y2hlcygzLCBBbnlPZigxLCAyLCAzKSk7CisgIEFueU9mTWF0
Y2hlcyg0LCBBbnlPZigxLCAyLCAzLCA0KSk7CisgIEFueU9mTWF0Y2hlcyg1LCBBbnlPZigxLCAy
LCAzLCA0LCA1KSk7CisgIEFueU9mTWF0Y2hlcyg2LCBBbnlPZigxLCAyLCAzLCA0LCA1LCA2KSk7
CisgIEFueU9mTWF0Y2hlcyg3LCBBbnlPZigxLCAyLCAzLCA0LCA1LCA2LCA3KSk7CisgIEFueU9m
TWF0Y2hlcyg4LCBBbnlPZigxLCAyLCAzLCA0LCA1LCA2LCA3LCA4KSk7CisgIEFueU9mTWF0Y2hl
cyg5LCBBbnlPZigxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5KSk7CisgIEFueU9mTWF0Y2hlcygx
MCwgQW55T2YoMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTApKTsKK30KKworI2lmIEdURVNU
X0xBTkdfQ1hYMTEKKy8vIFRlc3RzIHRoZSB2YXJpYWRpYyB2ZXJzaW9uIG9mIHRoZSBBbnlPZk1h
dGNoZXIuCitURVNUKEFueU9mVGVzdCwgVmFyaWFkaWNNYXRjaGVzV2hlbkFueU1hdGNoZXMpIHsK
KyAgLy8gQWxzbyBtYWtlIHN1cmUgQW55T2YgaXMgZGVmaW5lZCBpbiB0aGUgcmlnaHQgbmFtZXNw
YWNlIGFuZCBkb2VzIG5vdCBkZXBlbmQKKyAgLy8gb24gQURMLgorICBNYXRjaGVyPGludD4gbSA9
IDo6dGVzdGluZzo6QW55T2YoMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExKTsKKwor
ICBFWFBFQ1RfVEhBVChEZXNjcmliZShtKSwgRW5kc1dpdGgoIm9yIChpcyBlcXVhbCB0byAxMSkp
KSkpKSkpKSkiKSk7CisgIEFueU9mTWF0Y2hlcygxMSwgbSk7CisgIEFueU9mTWF0Y2hlcyg1MCwg
QW55T2YoMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgMzEsIDMyLCAzMywgMzQsIDM1LCAzNiwgMzcsIDM4LCAz
OSwgNDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgNDEsIDQyLCA0MywgNDQsIDQ1LCA0Niwg
NDcsIDQ4LCA0OSwgNTApKTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9MQU5HX0NYWDExCisKKy8v
IFRlc3RzIHRoYXQgQW55T2YobTEsIC4uLiwgbW4pIGRlc2NyaWJlcyBpdHNlbGYgcHJvcGVybHku
CitURVNUKEFueU9mVGVzdCwgQ2FuRGVzY3JpYmVTZWxmKSB7CisgIE1hdGNoZXI8aW50PiBtOwor
ICBtID0gQW55T2YoTGUoMSksIEdlKDMpKTsKKyAgRVhQRUNUX0VRKCIoaXMgPD0gMSkgb3IgKGlz
ID49IDMpIiwKKyAgICAgICAgICAgIERlc2NyaWJlKG0pKTsKKworICBtID0gQW55T2YoTHQoMCks
IEVxKDEpLCBFcSgyKSk7CisgIEVYUEVDVF9FUSgiKGlzIDwgMCkgb3IgIgorICAgICAgICAgICAg
IigoaXMgZXF1YWwgdG8gMSkgb3IgKGlzIGVxdWFsIHRvIDIpKSIsCisgICAgICAgICAgICBEZXNj
cmliZShtKSk7CisKKyAgbSA9IEFueU9mKEx0KDApLCBFcSgxKSwgRXEoMiksIEVxKDMpKTsKKyAg
RVhQRUNUX0VRKCIoKGlzIDwgMCkgb3IgIgorICAgICAgICAgICAgIihpcyBlcXVhbCB0byAxKSkg
b3IgIgorICAgICAgICAgICAgIigoaXMgZXF1YWwgdG8gMikgb3IgIgorICAgICAgICAgICAgIihp
cyBlcXVhbCB0byAzKSkiLAorICAgICAgICAgICAgRGVzY3JpYmUobSkpOworCisgIG0gPSBBbnlP
ZihMZSgwKSwgR3QoMTApLCAzLCA1LCA3KTsKKyAgRVhQRUNUX0VRKCIoKGlzIDw9IDApIG9yICIK
KyAgICAgICAgICAgICIoaXMgPiAxMCkpIG9yICIKKyAgICAgICAgICAgICIoKGlzIGVxdWFsIHRv
IDMpIG9yICIKKyAgICAgICAgICAgICIoKGlzIGVxdWFsIHRvIDUpIG9yICIKKyAgICAgICAgICAg
ICIoaXMgZXF1YWwgdG8gNykpKSIsCisgICAgICAgICAgICBEZXNjcmliZShtKSk7Cit9CisKKy8v
IFRlc3RzIHRoYXQgQW55T2YobTEsIC4uLiwgbW4pIGRlc2NyaWJlcyBpdHMgbmVnYXRpb24gcHJv
cGVybHkuCitURVNUKEFueU9mVGVzdCwgQ2FuRGVzY3JpYmVOZWdhdGlvbikgeworICBNYXRjaGVy
PGludD4gbTsKKyAgbSA9IEFueU9mKExlKDEpLCBHZSgzKSk7CisgIEVYUEVDVF9FUSgiKGlzbid0
IDw9IDEpIGFuZCAoaXNuJ3QgPj0gMykiLAorICAgICAgICAgICAgRGVzY3JpYmVOZWdhdGlvbiht
KSk7CisKKyAgbSA9IEFueU9mKEx0KDApLCBFcSgxKSwgRXEoMikpOworICBFWFBFQ1RfRVEoIihp
c24ndCA8IDApIGFuZCAiCisgICAgICAgICAgICAiKChpc24ndCBlcXVhbCB0byAxKSBhbmQgKGlz
bid0IGVxdWFsIHRvIDIpKSIsCisgICAgICAgICAgICBEZXNjcmliZU5lZ2F0aW9uKG0pKTsKKwor
ICBtID0gQW55T2YoTHQoMCksIEVxKDEpLCBFcSgyKSwgRXEoMykpOworICBFWFBFQ1RfRVEoIigo
aXNuJ3QgPCAwKSBhbmQgIgorICAgICAgICAgICAgIihpc24ndCBlcXVhbCB0byAxKSkgYW5kICIK
KyAgICAgICAgICAgICIoKGlzbid0IGVxdWFsIHRvIDIpIGFuZCAiCisgICAgICAgICAgICAiKGlz
bid0IGVxdWFsIHRvIDMpKSIsCisgICAgICAgICAgICBEZXNjcmliZU5lZ2F0aW9uKG0pKTsKKwor
ICBtID0gQW55T2YoTGUoMCksIEd0KDEwKSwgMywgNSwgNyk7CisgIEVYUEVDVF9FUSgiKChpc24n
dCA8PSAwKSBhbmQgIgorICAgICAgICAgICAgIihpc24ndCA+IDEwKSkgYW5kICIKKyAgICAgICAg
ICAgICIoKGlzbid0IGVxdWFsIHRvIDMpIGFuZCAiCisgICAgICAgICAgICAiKChpc24ndCBlcXVh
bCB0byA1KSBhbmQgIgorICAgICAgICAgICAgIihpc24ndCBlcXVhbCB0byA3KSkpIiwKKyAgICAg
ICAgICAgIERlc2NyaWJlTmVnYXRpb24obSkpOworfQorCisvLyBUZXN0cyB0aGF0IG1vbm9tb3Jw
aGljIG1hdGNoZXJzIGFyZSBzYWZlbHkgY2FzdCBieSB0aGUgQW55T2YgbWF0Y2hlci4KK1RFU1Qo
QW55T2ZUZXN0LCBBbnlPZk1hdGNoZXJTYWZlbHlDYXN0c01vbm9tb3JwaGljTWF0Y2hlcnMpIHsK
KyAgLy8gZ3JlYXRlcl90aGFuXzUgYW5kIGxlc3NfdGhhbl8xMCBhcmUgbW9ub21vcnBoaWMgbWF0
Y2hlcnMuCisgIE1hdGNoZXI8aW50PiBncmVhdGVyX3RoYW5fNSA9IEd0KDUpOworICBNYXRjaGVy
PGludD4gbGVzc190aGFuXzEwID0gTHQoMTApOworCisgIE1hdGNoZXI8Y29uc3QgaW50Jj4gbSA9
IEFueU9mKGdyZWF0ZXJfdGhhbl81LCBsZXNzX3RoYW5fMTApOworICBNYXRjaGVyPGludCY+IG0y
ID0gQW55T2YoZ3JlYXRlcl90aGFuXzUsIGxlc3NfdGhhbl8xMCk7CisgIE1hdGNoZXI8aW50Jj4g
bTMgPSBBbnlPZihncmVhdGVyX3RoYW5fNSwgbTIpOworCisgIC8vIFRlc3RzIHRoYXQgRWl0aGVy
T2Ygd29ya3Mgd2hlbiBjb21wb3NpbmcgaXRzZWxmLgorICBNYXRjaGVyPGNvbnN0IGludCY+IG00
ID0gQW55T2YoZ3JlYXRlcl90aGFuXzUsIGxlc3NfdGhhbl8xMCwgbGVzc190aGFuXzEwKTsKKyAg
TWF0Y2hlcjxpbnQmPiBtNSA9IEFueU9mKGdyZWF0ZXJfdGhhbl81LCBsZXNzX3RoYW5fMTAsIGxl
c3NfdGhhbl8xMCk7Cit9CisKK1RFU1QoQW55T2ZUZXN0LCBFeHBsYWluc1Jlc3VsdCkgeworICBN
YXRjaGVyPGludD4gbTsKKworICAvLyBGYWlsZWQgbWF0Y2guICBCb3RoIG1hdGNoZXJzIG5lZWQg
dG8gZXhwbGFpbi4gIFRoZSBzZWNvbmQKKyAgLy8gbWF0Y2hlciBkb2Vzbid0IGdpdmUgYW4gZXhw
bGFuYXRpb24sIHNvIG9ubHkgdGhlIGZpcnN0IG1hdGNoZXIncworICAvLyBleHBsYW5hdGlvbiBp
cyBwcmludGVkLgorICBtID0gQW55T2YoR3JlYXRlclRoYW4oMTApLCBMdCgwKSk7CisgIEVYUEVD
VF9FUSgid2hpY2ggaXMgNSBsZXNzIHRoYW4gMTAiLCBFeHBsYWluKG0sIDUpKTsKKworICAvLyBG
YWlsZWQgbWF0Y2guICBCb3RoIG1hdGNoZXJzIG5lZWQgdG8gZXhwbGFpbi4KKyAgbSA9IEFueU9m
KEdyZWF0ZXJUaGFuKDEwKSwgR3JlYXRlclRoYW4oMjApKTsKKyAgRVhQRUNUX0VRKCJ3aGljaCBp
cyA1IGxlc3MgdGhhbiAxMCwgYW5kIHdoaWNoIGlzIDE1IGxlc3MgdGhhbiAyMCIsCisgICAgICAg
ICAgICBFeHBsYWluKG0sIDUpKTsKKworICAvLyBGYWlsZWQgbWF0Y2guICBBbGwgbWF0Y2hlcnMg
bmVlZCB0byBleHBsYWluLiAgVGhlIHNlY29uZAorICAvLyBtYXRjaGVyIGRvZXNuJ3QgZ2l2ZW4g
YW4gZXhwbGFuYXRpb24uCisgIG0gPSBBbnlPZihHcmVhdGVyVGhhbigxMCksIEd0KDIwKSwgR3Jl
YXRlclRoYW4oMzApKTsKKyAgRVhQRUNUX0VRKCJ3aGljaCBpcyA1IGxlc3MgdGhhbiAxMCwgYW5k
IHdoaWNoIGlzIDI1IGxlc3MgdGhhbiAzMCIsCisgICAgICAgICAgICBFeHBsYWluKG0sIDUpKTsK
KworICAvLyBGYWlsZWQgbWF0Y2guICBBbGwgbWF0Y2hlcnMgbmVlZCB0byBleHBsYWluLgorICBt
ID0gQW55T2YoR3JlYXRlclRoYW4oMTApLCBHcmVhdGVyVGhhbigyMCksIEdyZWF0ZXJUaGFuKDMw
KSk7CisgIEVYUEVDVF9FUSgid2hpY2ggaXMgNSBsZXNzIHRoYW4gMTAsIGFuZCB3aGljaCBpcyAx
NSBsZXNzIHRoYW4gMjAsICIKKyAgICAgICAgICAgICJhbmQgd2hpY2ggaXMgMjUgbGVzcyB0aGFu
IDMwIiwKKyAgICAgICAgICAgIEV4cGxhaW4obSwgNSkpOworCisgIC8vIFN1Y2Nlc3NmdWwgbWF0
Y2guICBUaGUgZmlyc3QgbWF0Y2hlciwgd2hpY2ggc3VjY2VlZGVkLCBuZWVkcyB0bworICAvLyBl
eHBsYWluLgorICBtID0gQW55T2YoR3JlYXRlclRoYW4oMTApLCBHcmVhdGVyVGhhbigyMCkpOwor
ICBFWFBFQ1RfRVEoIndoaWNoIGlzIDUgbW9yZSB0aGFuIDEwIiwgRXhwbGFpbihtLCAxNSkpOwor
CisgIC8vIFN1Y2Nlc3NmdWwgbWF0Y2guICBUaGUgc2Vjb25kIG1hdGNoZXIsIHdoaWNoIHN1Y2Nl
ZWRlZCwgbmVlZHMgdG8KKyAgLy8gZXhwbGFpbi4gIFNpbmNlIGl0IGRvZXNuJ3QgZ2l2ZW4gYW4g
ZXhwbGFuYXRpb24sIG5vdGhpbmcgaXMKKyAgLy8gcHJpbnRlZC4KKyAgbSA9IEFueU9mKEdyZWF0
ZXJUaGFuKDEwKSwgTHQoMzApKTsKKyAgRVhQRUNUX0VRKCIiLCBFeHBsYWluKG0sIDApKTsKKwor
ICAvLyBTdWNjZXNzZnVsIG1hdGNoLiAgVGhlIHNlY29uZCBtYXRjaGVyLCB3aGljaCBzdWNjZWVk
ZWQsIG5lZWRzIHRvCisgIC8vIGV4cGxhaW4uCisgIG0gPSBBbnlPZihHcmVhdGVyVGhhbigzMCks
IEdyZWF0ZXJUaGFuKDIwKSk7CisgIEVYUEVDVF9FUSgid2hpY2ggaXMgNSBtb3JlIHRoYW4gMjAi
LCBFeHBsYWluKG0sIDI1KSk7Cit9CisKKy8vIFRoZSBmb2xsb3dpbmcgcHJlZGljYXRlIGZ1bmN0
aW9uIGFuZCBwcmVkaWNhdGUgZnVuY3RvciBhcmUgZm9yCisvLyB0ZXN0aW5nIHRoZSBUcnVseShw
cmVkaWNhdGUpIG1hdGNoZXIuCisKKy8vIFJldHVybnMgbm9uLXplcm8gaWYgdGhlIGlucHV0IGlz
IHBvc2l0aXZlLiAgTm90ZSB0aGF0IHRoZSByZXR1cm4KKy8vIHR5cGUgb2YgdGhpcyBmdW5jdGlv
biBpcyBub3QgYm9vbC4gIEl0J3MgT0sgYXMgVHJ1bHkoKSBhY2NlcHRzIGFueQorLy8gdW5hcnkg
ZnVuY3Rpb24gb3IgZnVuY3RvciB3aG9zZSByZXR1cm4gdHlwZSBjYW4gYmUgaW1wbGljaXRseQor
Ly8gY29udmVydGVkIHRvIGJvb2wuCitpbnQgSXNQb3NpdGl2ZShkb3VibGUgeCkgeworICByZXR1
cm4geCA+IDAgPyAxIDogMDsKK30KKworLy8gVGhpcyBmdW5jdG9yIHJldHVybnMgdHJ1ZSBpZiB0
aGUgaW5wdXQgaXMgZ3JlYXRlciB0aGFuIHRoZSBnaXZlbgorLy8gbnVtYmVyLgorY2xhc3MgSXNH
cmVhdGVyVGhhbiB7CisgcHVibGljOgorICBleHBsaWNpdCBJc0dyZWF0ZXJUaGFuKGludCB0aHJl
c2hvbGQpIDogdGhyZXNob2xkXyh0aHJlc2hvbGQpIHt9CisKKyAgYm9vbCBvcGVyYXRvcigpKGlu
dCBuKSBjb25zdCB7IHJldHVybiBuID4gdGhyZXNob2xkXzsgfQorCisgcHJpdmF0ZToKKyAgaW50
IHRocmVzaG9sZF87Cit9OworCisvLyBGb3IgdGVzdGluZyBUcnVseSgpLgorY29uc3QgaW50IGZv
byA9IDA7CisKKy8vIFRoaXMgcHJlZGljYXRlIHJldHVybnMgdHJ1ZSBpZmYgdGhlIGFyZ3VtZW50
IHJlZmVyZW5jZXMgZm9vIGFuZCBoYXMKKy8vIGEgemVybyB2YWx1ZS4KK2Jvb2wgUmVmZXJlbmNl
c0Zvb0FuZElzWmVybyhjb25zdCBpbnQmIG4pIHsKKyAgcmV0dXJuICgmbiA9PSAmZm9vKSAmJiAo
biA9PSAwKTsKK30KKworLy8gVGVzdHMgdGhhdCBUcnVseShwcmVkaWNhdGUpIG1hdGNoZXMgd2hh
dCBzYXRpc2ZpZXMgdGhlIGdpdmVuCisvLyBwcmVkaWNhdGUuCitURVNUKFRydWx5VGVzdCwgTWF0
Y2hlc1doYXRTYXRpc2ZpZXNUaGVQcmVkaWNhdGUpIHsKKyAgTWF0Y2hlcjxkb3VibGU+IG0gPSBU
cnVseShJc1Bvc2l0aXZlKTsKKyAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKDIuMCkpOworICBFWFBF
Q1RfRkFMU0UobS5NYXRjaGVzKC0xLjUpKTsKK30KKworLy8gVGVzdHMgdGhhdCBUcnVseShwcmVk
aWNhdGVfZnVuY3Rvcikgd29ya3MgdG9vLgorVEVTVChUcnVseVRlc3QsIENhbkJlVXNlZFdpdGhG
dW5jdG9yKSB7CisgIE1hdGNoZXI8aW50PiBtID0gVHJ1bHkoSXNHcmVhdGVyVGhhbig1KSk7Cisg
IEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyg2KSk7CisgIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoNCkp
OworfQorCisvLyBBIGNsYXNzIHRoYXQgY2FuIGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRvIGJv
b2wuCitjbGFzcyBDb252ZXJ0aWJsZVRvQm9vbCB7CisgcHVibGljOgorICBleHBsaWNpdCBDb252
ZXJ0aWJsZVRvQm9vbChpbnQgbnVtYmVyKSA6IG51bWJlcl8obnVtYmVyKSB7fQorICBvcGVyYXRv
ciBib29sKCkgY29uc3QgeyByZXR1cm4gbnVtYmVyXyAhPSAwOyB9CisKKyBwcml2YXRlOgorICBp
bnQgbnVtYmVyXzsKK307CisKK0NvbnZlcnRpYmxlVG9Cb29sIElzTm90WmVybyhpbnQgbnVtYmVy
KSB7CisgIHJldHVybiBDb252ZXJ0aWJsZVRvQm9vbChudW1iZXIpOworfQorCisvLyBUZXN0cyB0
aGF0IHRoZSBwcmVkaWNhdGUgdXNlZCBpbiBUcnVseSgpIG1heSByZXR1cm4gYSBjbGFzcyB0aGF0
J3MKKy8vIGltcGxpY2l0bHkgY29udmVydGlibGUgdG8gYm9vbCwgZXZlbiB3aGVuIHRoZSBjbGFz
cyBoYXMgbm8KKy8vIG9wZXJhdG9yISgpLgorVEVTVChUcnVseVRlc3QsIFByZWRpY2F0ZUNhblJl
dHVybkFDbGFzc0NvbnZlcnRpYmxlVG9Cb29sKSB7CisgIE1hdGNoZXI8aW50PiBtID0gVHJ1bHko
SXNOb3RaZXJvKTsKKyAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKDEpKTsKKyAgRVhQRUNUX0ZBTFNF
KG0uTWF0Y2hlcygwKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgVHJ1bHkocHJlZGljYXRlKSBjYW4g
ZGVzY3JpYmUgaXRzZWxmIHByb3Blcmx5LgorVEVTVChUcnVseVRlc3QsIENhbkRlc2NyaWJlU2Vs
ZikgeworICBNYXRjaGVyPGRvdWJsZT4gbSA9IFRydWx5KElzUG9zaXRpdmUpOworICBFWFBFQ1Rf
RVEoInNhdGlzZmllcyB0aGUgZ2l2ZW4gcHJlZGljYXRlIiwKKyAgICAgICAgICAgIERlc2NyaWJl
KG0pKTsKK30KKworLy8gVGVzdHMgdGhhdCBUcnVseShwcmVkaWNhdGUpIHdvcmtzIHdoZW4gdGhl
IG1hdGNoZXIgdGFrZXMgaXRzCisvLyBhcmd1bWVudCBieSByZWZlcmVuY2UuCitURVNUKFRydWx5
VGVzdCwgV29ya3NGb3JCeVJlZkFyZ3VtZW50cykgeworICBNYXRjaGVyPGNvbnN0IGludCY+IG0g
PSBUcnVseShSZWZlcmVuY2VzRm9vQW5kSXNaZXJvKTsKKyAgRVhQRUNUX1RSVUUobS5NYXRjaGVz
KGZvbykpOworICBpbnQgbiA9IDA7CisgIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMobikpOworfQor
CisvLyBUZXN0cyB0aGF0IE1hdGNoZXMobSkgaXMgYSBwcmVkaWNhdGUgc2F0aXNmaWVkIGJ5IHdo
YXRldmVyIHRoYXQKKy8vIG1hdGNoZXMgbWF0Y2hlciBtLgorVEVTVChNYXRjaGVzVGVzdCwgSXNT
YXRpc2ZpZWRCeVdoYXRNYXRjaGVzVGhlTWF0Y2hlcikgeworICBFWFBFQ1RfVFJVRShNYXRjaGVz
KEdlKDApKSgxKSk7CisgIEVYUEVDVF9GQUxTRShNYXRjaGVzKEVxKCdhJykpKCdiJykpOworfQor
CisvLyBUZXN0cyB0aGF0IE1hdGNoZXMobSkgd29ya3Mgd2hlbiB0aGUgbWF0Y2hlciB0YWtlcyBp
dHMgYXJndW1lbnQgYnkKKy8vIHJlZmVyZW5jZS4KK1RFU1QoTWF0Y2hlc1Rlc3QsIFdvcmtzT25C
eVJlZkFyZ3VtZW50cykgeworICBpbnQgbSA9IDAsIG4gPSAwOworICBFWFBFQ1RfVFJVRShNYXRj
aGVzKEFsbE9mKFJlZihuKSwgRXEoMCkpKShuKSk7CisgIEVYUEVDVF9GQUxTRShNYXRjaGVzKFJl
ZihtKSkobikpOworfQorCisvLyBUZXN0cyB0aGF0IGEgTWF0Y2hlciBvbiBub24tcmVmZXJlbmNl
IHR5cGUgY2FuIGJlIHVzZWQgaW4KKy8vIE1hdGNoZXMoKS4KK1RFU1QoTWF0Y2hlc1Rlc3QsIFdv
cmtzV2l0aE1hdGNoZXJPbk5vblJlZlR5cGUpIHsKKyAgTWF0Y2hlcjxpbnQ+IGVxNSA9IEVxKDUp
OworICBFWFBFQ1RfVFJVRShNYXRjaGVzKGVxNSkoNSkpOworICBFWFBFQ1RfRkFMU0UoTWF0Y2hl
cyhlcTUpKDIpKTsKK30KKworLy8gVGVzdHMgVmFsdWUodmFsdWUsIG1hdGNoZXIpLiAgU2luY2Ug
VmFsdWUoKSBpcyBhIHNpbXBsZSB3cmFwcGVyIGZvcgorLy8gTWF0Y2hlcygpLCB3aGljaCBoYXMg
YmVlbiB0ZXN0ZWQgYWxyZWFkeSwgd2UgZG9uJ3Qgc3BlbmQgYSBsb3Qgb2YKKy8vIGVmZm9ydCBv
biB0ZXN0aW5nIFZhbHVlKCkuCitURVNUKFZhbHVlVGVzdCwgV29ya3NXaXRoUG9seW1vcnBoaWNN
YXRjaGVyKSB7CisgIEVYUEVDVF9UUlVFKFZhbHVlKCJoaSIsIFN0YXJ0c1dpdGgoImgiKSkpOwor
ICBFWFBFQ1RfRkFMU0UoVmFsdWUoNSwgR3QoMTApKSk7Cit9CisKK1RFU1QoVmFsdWVUZXN0LCBX
b3Jrc1dpdGhNb25vbW9ycGhpY01hdGNoZXIpIHsKKyAgY29uc3QgTWF0Y2hlcjxpbnQ+IGlzX3pl
cm8gPSBFcSgwKTsKKyAgRVhQRUNUX1RSVUUoVmFsdWUoMCwgaXNfemVybykpOworICBFWFBFQ1Rf
RkFMU0UoVmFsdWUoJ2EnLCBpc196ZXJvKSk7CisKKyAgaW50IG4gPSAwOworICBjb25zdCBNYXRj
aGVyPGNvbnN0IGludCY+IHJlZl9uID0gUmVmKG4pOworICBFWFBFQ1RfVFJVRShWYWx1ZShuLCBy
ZWZfbikpOworICBFWFBFQ1RfRkFMU0UoVmFsdWUoMSwgcmVmX24pKTsKK30KKworVEVTVChFeHBs
YWluTWF0Y2hSZXN1bHRUZXN0LCBXb3Jrc1dpdGhQb2x5bW9ycGhpY01hdGNoZXIpIHsKKyAgU3Ry
aW5nTWF0Y2hSZXN1bHRMaXN0ZW5lciBsaXN0ZW5lcjE7CisgIEVYUEVDVF9UUlVFKEV4cGxhaW5N
YXRjaFJlc3VsdChQb2x5bW9ycGhpY0lzRXZlbigpLCA0MiwgJmxpc3RlbmVyMSkpOworICBFWFBF
Q1RfRVEoIiUgMiA9PSAwIiwgbGlzdGVuZXIxLnN0cigpKTsKKworICBTdHJpbmdNYXRjaFJlc3Vs
dExpc3RlbmVyIGxpc3RlbmVyMjsKKyAgRVhQRUNUX0ZBTFNFKEV4cGxhaW5NYXRjaFJlc3VsdChH
ZSg0MiksIDEuNSwgJmxpc3RlbmVyMikpOworICBFWFBFQ1RfRVEoIiIsIGxpc3RlbmVyMi5zdHIo
KSk7Cit9CisKK1RFU1QoRXhwbGFpbk1hdGNoUmVzdWx0VGVzdCwgV29ya3NXaXRoTW9ub21vcnBo
aWNNYXRjaGVyKSB7CisgIGNvbnN0IE1hdGNoZXI8aW50PiBpc19ldmVuID0gUG9seW1vcnBoaWNJ
c0V2ZW4oKTsKKyAgU3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lciBsaXN0ZW5lcjE7CisgIEVYUEVD
VF9UUlVFKEV4cGxhaW5NYXRjaFJlc3VsdChpc19ldmVuLCA0MiwgJmxpc3RlbmVyMSkpOworICBF
WFBFQ1RfRVEoIiUgMiA9PSAwIiwgbGlzdGVuZXIxLnN0cigpKTsKKworICBjb25zdCBNYXRjaGVy
PGNvbnN0IGRvdWJsZSY+IGlzX3plcm8gPSBFcSgwKTsKKyAgU3RyaW5nTWF0Y2hSZXN1bHRMaXN0
ZW5lciBsaXN0ZW5lcjI7CisgIEVYUEVDVF9GQUxTRShFeHBsYWluTWF0Y2hSZXN1bHQoaXNfemVy
bywgMS41LCAmbGlzdGVuZXIyKSk7CisgIEVYUEVDVF9FUSgiIiwgbGlzdGVuZXIyLnN0cigpKTsK
K30KKworTUFUQ0hFUl9QKFJlYWxseSwgaW5uZXJfbWF0Y2hlciwgIiIpIHsKKyAgcmV0dXJuIEV4
cGxhaW5NYXRjaFJlc3VsdChpbm5lcl9tYXRjaGVyLCBhcmcsIHJlc3VsdF9saXN0ZW5lcik7Cit9
CisKK1RFU1QoRXhwbGFpbk1hdGNoUmVzdWx0VGVzdCwgV29ya3NJbnNpZGVNQVRDSEVSKSB7Cisg
IEVYUEVDVF9USEFUKDAsIFJlYWxseShFcSgwKSkpOworfQorCitURVNUKEFsbEFyZ3NUZXN0LCBX
b3Jrc0ZvclR1cGxlKSB7CisgIEVYUEVDVF9USEFUKG1ha2VfdHVwbGUoMSwgMkwpLCBBbGxBcmdz
KEx0KCkpKTsKKyAgRVhQRUNUX1RIQVQobWFrZV90dXBsZSgyTCwgMSksIE5vdChBbGxBcmdzKEx0
KCkpKSk7Cit9CisKK1RFU1QoQWxsQXJnc1Rlc3QsIFdvcmtzRm9yTm9uVHVwbGUpIHsKKyAgRVhQ
RUNUX1RIQVQoNDIsIEFsbEFyZ3MoR3QoMCkpKTsKKyAgRVhQRUNUX1RIQVQoJ2EnLCBOb3QoQWxs
QXJncyhFcSgnYicpKSkpOworfQorCitjbGFzcyBBbGxBcmdzSGVscGVyIHsKKyBwdWJsaWM6Cisg
IEFsbEFyZ3NIZWxwZXIoKSB7fQorCisgIE1PQ0tfTUVUSE9EMihIZWxwZXIsIGludChjaGFyIHgs
IGludCB5KSk7CisKKyBwcml2YXRlOgorICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05f
KEFsbEFyZ3NIZWxwZXIpOworfTsKKworVEVTVChBbGxBcmdzVGVzdCwgV29ya3NJbldpdGhDbGF1
c2UpIHsKKyAgQWxsQXJnc0hlbHBlciBoZWxwZXI7CisgIE9OX0NBTEwoaGVscGVyLCBIZWxwZXIo
XywgXykpCisgICAgICAuV2l0aChBbGxBcmdzKEx0KCkpKQorICAgICAgLldpbGxCeURlZmF1bHQo
UmV0dXJuKDEpKTsKKyAgRVhQRUNUX0NBTEwoaGVscGVyLCBIZWxwZXIoXywgXykpOworICBFWFBF
Q1RfQ0FMTChoZWxwZXIsIEhlbHBlcihfLCBfKSkKKyAgICAgIC5XaXRoKEFsbEFyZ3MoR3QoKSkp
CisgICAgICAuV2lsbE9uY2UoUmV0dXJuKDIpKTsKKworICBFWFBFQ1RfRVEoMSwgaGVscGVyLkhl
bHBlcignXDEnLCAyKSk7CisgIEVYUEVDVF9FUSgyLCBoZWxwZXIuSGVscGVyKCdhJywgMSkpOwor
fQorCisvLyBUZXN0cyB0aGF0IEFTU0VSVF9USEFUKCkgYW5kIEVYUEVDVF9USEFUKCkgd29yayB3
aGVuIHRoZSB2YWx1ZQorLy8gbWF0Y2hlcyB0aGUgbWF0Y2hlci4KK1RFU1QoTWF0Y2hlckFzc2Vy
dGlvblRlc3QsIFdvcmtzV2hlbk1hdGNoZXJJc1NhdGlzZmllZCkgeworICBBU1NFUlRfVEhBVCg1
LCBHZSgyKSkgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgQVNTRVJUX1RIQVQoIkZvbyIs
IEVuZHNXaXRoKCJvbyIpKTsKKyAgRVhQRUNUX1RIQVQoMiwgQWxsT2YoTGUoNyksIEdlKDApKSkg
PDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQgdG9vLiI7CisgIEVYUEVDVF9USEFUKCJIZWxsbyIsIFN0
YXJ0c1dpdGgoIkhlbGwiKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgQVNTRVJUX1RIQVQoKSBhbmQg
RVhQRUNUX1RIQVQoKSB3b3JrIHdoZW4gdGhlIHZhbHVlCisvLyBkb2Vzbid0IG1hdGNoIHRoZSBt
YXRjaGVyLgorVEVTVChNYXRjaGVyQXNzZXJ0aW9uVGVzdCwgV29ya3NXaGVuTWF0Y2hlcklzTm90
U2F0aXNmaWVkKSB7CisgIC8vICduJyBtdXN0IGJlIHN0YXRpYyBhcyBpdCBpcyB1c2VkIGluIGFu
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCksCisgIC8vIHdoaWNoIGNhbm5vdCByZWZlcmVuY2UgYXV0
byB2YXJpYWJsZXMuCisgIHN0YXRpYyB1bnNpZ25lZCBzaG9ydCBuOyAgLy8gTk9MSU5UCisgIG4g
PSA1OworCisgIC8vIFZDKysgcHJpb3IgdG8gdmVyc2lvbiA4LjAgU1AxIGhhcyBhIGJ1ZyB3aGVy
ZSBpdCB3aWxsIG5vdCBzZWUgYW55CisgIC8vIGZ1bmN0aW9ucyBkZWNsYXJlZCBpbiB0aGUgbmFt
ZXNwYWNlIHNjb3BlIGZyb20gd2l0aGluIG5lc3RlZCBjbGFzc2VzLgorICAvLyBFWFBFQ1QvQVNT
RVJUXyhOT04pRkFUQUxfRkFJTFVSRSBtYWNyb3MgdXNlIG5lc3RlZCBjbGFzc2VzIHNvIHRoYXQg
YWxsCisgIC8vIG5hbWVzcGFjZS1sZXZlbCBmdW5jdGlvbnMgaW52b2tlZCBpbnNpZGUgdGhlbSBu
ZWVkIHRvIGJlIGV4cGxpY2l0bHkKKyAgLy8gcmVzb2x2ZWQuCisgIEVYUEVDVF9GQVRBTF9GQUlM
VVJFKEFTU0VSVF9USEFUKG4sIDo6dGVzdGluZzo6R3QoMTApKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIlZhbHVlIG9mOiBuXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZDog
aXMgPiAxMFxuIgorICAgICAgICAgICAgICAgICAgICAgICAiICBBY3R1YWw6IDUiICsgT2ZUeXBl
KCJ1bnNpZ25lZCBzaG9ydCIpKTsKKyAgbiA9IDA7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KAorICAgICAgRVhQRUNUX1RIQVQobiwgOjp0ZXN0aW5nOjpBbGxPZig6OnRlc3Rpbmc6OkxlKDcp
LCA6OnRlc3Rpbmc6OkdlKDUpKSksCisgICAgICAiVmFsdWUgb2Y6IG5cbiIKKyAgICAgICJFeHBl
Y3RlZDogKGlzIDw9IDcpIGFuZCAoaXMgPj0gNSlcbiIKKyAgICAgICIgIEFjdHVhbDogMCIgKyBP
ZlR5cGUoInVuc2lnbmVkIHNob3J0IikpOworfQorCisvLyBUZXN0cyB0aGF0IEFTU0VSVF9USEFU
KCkgYW5kIEVYUEVDVF9USEFUKCkgd29yayB3aGVuIHRoZSBhcmd1bWVudAorLy8gaGFzIGEgcmVm
ZXJlbmNlIHR5cGUuCitURVNUKE1hdGNoZXJBc3NlcnRpb25UZXN0LCBXb3Jrc0ZvckJ5UmVmQXJn
dW1lbnRzKSB7CisgIC8vIFdlIHVzZSBhIHN0YXRpYyB2YXJpYWJsZSBoZXJlIGFzIEVYUEVDVF9G
QVRBTF9GQUlMVVJFKCkgY2Fubm90CisgIC8vIHJlZmVyZW5jZSBhdXRvIHZhcmlhYmxlcy4KKyAg
c3RhdGljIGludCBuOworICBuID0gMDsKKyAgRVhQRUNUX1RIQVQobiwgQWxsT2YoTGUoNyksIFJl
ZihuKSkpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfVEhBVChuLCA6OnRlc3Rpbmc6
Ok5vdCg6OnRlc3Rpbmc6OlJlZihuKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUg
b2Y6IG5cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkOiBkb2VzIG5vdCByZWZl
cmVuY2UgdGhlIHZhcmlhYmxlIEAiKTsKKyAgLy8gVGVzdHMgdGhlICJBY3R1YWwiIHBhcnQuCisg
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9USEFUKG4sIDo6dGVzdGluZzo6Tm90KDo6dGVz
dGluZzo6UmVmKG4pKSksCisgICAgICAgICAgICAgICAgICAgICAgICJBY3R1YWw6IDAiICsgT2ZU
eXBlKCJpbnQiKSArICIsIHdoaWNoIGlzIGxvY2F0ZWQgQCIpOworfQorCisjaWYgIUdURVNUX09T
X1NZTUJJQU4KKy8vIFRlc3RzIHRoYXQgQVNTRVJUX1RIQVQoKSBhbmQgRVhQRUNUX1RIQVQoKSB3
b3JrIHdoZW4gdGhlIG1hdGNoZXIgaXMKKy8vIG1vbm9tb3JwaGljLgorCisvLyBBU1NFUlRfVEhB
VCgiaGVsbG8iLCBzdGFydHNfd2l0aF9oZSkgZmFpbHMgdG8gY29tcGlsZSB3aXRoIE5va2lhJ3MK
Ky8vIFN5bWJpYW4gY29tcGlsZXI6IGl0IHRyaWVzIHRvIGNvbXBpbGUKKy8vIHRlbXBsYXRlPFQs
IFU+IGNsYXNzIE1hdGNoZXJDYXN0SW1wbCB7IC4uLgorLy8gICB2aXJ0dWFsIGJvb2wgTWF0Y2hB
bmRFeHBsYWluKFQgeCwgLi4uKSBjb25zdCB7CisvLyAgICAgcmV0dXJuIHNvdXJjZV9tYXRjaGVy
Xy5NYXRjaEFuZEV4cGxhaW4oc3RhdGljX2Nhc3Q8VT4oeCksIC4uLik7CisvLyB3aXRoIFUgPT0g
c3RyaW5nIGFuZCBUID09IGNvbnN0IGNoYXIqCisvLyBXaXRoIEFTU0VSVF9USEFUKCJoZWxsbyIu
Li4pIGNoYW5nZWQgdG8gQVNTRVJUX1RIQVQoc3RyaW5nKCJoZWxsbyIpIC4uLiApCisvLyB0aGUg
Y29tcGlsZXIgc2lsZW50bHkgY3Jhc2hlcyB3aXRoIG5vIG91dHB1dC4KKy8vIElmIE1hdGNoZXJD
YXN0SW1wbCBpcyBjaGFuZ2VkIHRvIHVzZSBVKHgpIGluc3RlYWQgb2Ygc3RhdGljX2Nhc3Q8VT4o
eCkKKy8vIHRoZSBjb2RlIGNvbXBpbGVzIGJ1dCB0aGUgY29udmVydGVkIHN0cmluZyBpcyBib2d1
cy4KK1RFU1QoTWF0Y2hlckFzc2VydGlvblRlc3QsIFdvcmtzRm9yTW9ub21vcnBoaWNNYXRjaGVy
KSB7CisgIE1hdGNoZXI8Y29uc3QgY2hhcio+IHN0YXJ0c193aXRoX2hlID0gU3RhcnRzV2l0aCgi
aGUiKTsKKyAgQVNTRVJUX1RIQVQoImhlbGxvIiwgc3RhcnRzX3dpdGhfaGUpOworCisgIE1hdGNo
ZXI8Y29uc3Qgc3RkOjpzdHJpbmcmPiBlbmRzX3dpdGhfb2sgPSBFbmRzV2l0aCgib2siKTsKKyAg
QVNTRVJUX1RIQVQoImJvb2siLCBlbmRzX3dpdGhfb2spOworICBjb25zdCBzdGQ6OnN0cmluZyBi
YWQgPSAiYmFkIjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1RIQVQoYmFkLCBl
bmRzX3dpdGhfb2spLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6IGJhZFxu
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQ6IGVuZHMgd2l0aCBcIm9rXCJc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgQWN0dWFsOiBcImJhZFwiIik7CisgIE1h
dGNoZXI8aW50PiBpc19ncmVhdGVyX3RoYW5fNSA9IEd0KDUpOworICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRShFWFBFQ1RfVEhBVCg1LCBpc19ncmVhdGVyX3RoYW5fNSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICJWYWx1ZSBvZjogNVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAi
RXhwZWN0ZWQ6IGlzID4gNVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiICBBY3R1YWw6
IDUiICsgT2ZUeXBlKCJpbnQiKSk7Cit9CisjZW5kaWYgIC8vICFHVEVTVF9PU19TWU1CSUFOCisK
Ky8vIFRlc3RzIGZsb2F0aW5nLXBvaW50IG1hdGNoZXJzLgordGVtcGxhdGUgPHR5cGVuYW1lIFJh
d1R5cGU+CitjbGFzcyBGbG9hdGluZ1BvaW50VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsK
KyBwcm90ZWN0ZWQ6CisgIHR5cGVkZWYgdGVzdGluZzo6aW50ZXJuYWw6OkZsb2F0aW5nUG9pbnQ8
UmF3VHlwZT4gRmxvYXRpbmc7CisgIHR5cGVkZWYgdHlwZW5hbWUgRmxvYXRpbmc6OkJpdHMgQml0
czsKKworICBGbG9hdGluZ1BvaW50VGVzdCgpCisgICAgICA6IG1heF91bHBzXyhGbG9hdGluZzo6
a01heFVscHMpLAorICAgICAgICB6ZXJvX2JpdHNfKEZsb2F0aW5nKDApLmJpdHMoKSksCisgICAg
ICAgIG9uZV9iaXRzXyhGbG9hdGluZygxKS5iaXRzKCkpLAorICAgICAgICBpbmZpbml0eV9iaXRz
XyhGbG9hdGluZyhGbG9hdGluZzo6SW5maW5pdHkoKSkuYml0cygpKSwKKyAgICAgICAgY2xvc2Vf
dG9fcG9zaXRpdmVfemVyb18oQXNCaXRzKHplcm9fYml0c18gKyBtYXhfdWxwc18vMikpLAorICAg
ICAgICBjbG9zZV90b19uZWdhdGl2ZV96ZXJvXyhBc0JpdHMoemVyb19iaXRzXyArIG1heF91bHBz
XyAtIG1heF91bHBzXy8yKSksCisgICAgICAgIGZ1cnRoZXJfZnJvbV9uZWdhdGl2ZV96ZXJvXygt
QXNCaXRzKAorICAgICAgICAgICAgemVyb19iaXRzXyArIG1heF91bHBzXyArIDEgLSBtYXhfdWxw
c18vMikpLAorICAgICAgICBjbG9zZV90b19vbmVfKEFzQml0cyhvbmVfYml0c18gKyBtYXhfdWxw
c18pKSwKKyAgICAgICAgZnVydGhlcl9mcm9tX29uZV8oQXNCaXRzKG9uZV9iaXRzXyArIG1heF91
bHBzXyArIDEpKSwKKyAgICAgICAgaW5maW5pdHlfKEZsb2F0aW5nOjpJbmZpbml0eSgpKSwKKyAg
ICAgICAgY2xvc2VfdG9faW5maW5pdHlfKEFzQml0cyhpbmZpbml0eV9iaXRzXyAtIG1heF91bHBz
XykpLAorICAgICAgICBmdXJ0aGVyX2Zyb21faW5maW5pdHlfKEFzQml0cyhpbmZpbml0eV9iaXRz
XyAtIG1heF91bHBzXyAtIDEpKSwKKyAgICAgICAgbWF4XyhGbG9hdGluZzo6TWF4KCkpLAorICAg
ICAgICBuYW4xXyhBc0JpdHMoRmxvYXRpbmc6OmtFeHBvbmVudEJpdE1hc2sgfCAxKSksCisgICAg
ICAgIG5hbjJfKEFzQml0cyhGbG9hdGluZzo6a0V4cG9uZW50Qml0TWFzayB8IDIwMCkpIHsKKyAg
fQorCisgIHZvaWQgVGVzdFNpemUoKSB7CisgICAgRVhQRUNUX0VRKHNpemVvZihSYXdUeXBlKSwg
c2l6ZW9mKEJpdHMpKTsKKyAgfQorCisgIC8vIEEgYmF0dGVyeSBvZiB0ZXN0cyBmb3IgRmxvYXRp
bmdFcU1hdGNoZXI6Ok1hdGNoZXMuCisgIC8vIG1hdGNoZXJfbWFrZXIgaXMgYSBwb2ludGVyIHRv
IGEgZnVuY3Rpb24gd2hpY2ggY3JlYXRlcyBhIEZsb2F0aW5nRXFNYXRjaGVyLgorICB2b2lkIFRl
c3RNYXRjaGVzKAorICAgICAgdGVzdGluZzo6aW50ZXJuYWw6OkZsb2F0aW5nRXFNYXRjaGVyPFJh
d1R5cGU+ICgqbWF0Y2hlcl9tYWtlcikoUmF3VHlwZSkpIHsKKyAgICBNYXRjaGVyPFJhd1R5cGU+
IG0xID0gbWF0Y2hlcl9tYWtlcigwLjApOworICAgIEVYUEVDVF9UUlVFKG0xLk1hdGNoZXMoLTAu
MCkpOworICAgIEVYUEVDVF9UUlVFKG0xLk1hdGNoZXMoY2xvc2VfdG9fcG9zaXRpdmVfemVyb18p
KTsKKyAgICBFWFBFQ1RfVFJVRShtMS5NYXRjaGVzKGNsb3NlX3RvX25lZ2F0aXZlX3plcm9fKSk7
CisgICAgRVhQRUNUX0ZBTFNFKG0xLk1hdGNoZXMoMS4wKSk7CisKKyAgICBNYXRjaGVyPFJhd1R5
cGU+IG0yID0gbWF0Y2hlcl9tYWtlcihjbG9zZV90b19wb3NpdGl2ZV96ZXJvXyk7CisgICAgRVhQ
RUNUX0ZBTFNFKG0yLk1hdGNoZXMoZnVydGhlcl9mcm9tX25lZ2F0aXZlX3plcm9fKSk7CisKKyAg
ICBNYXRjaGVyPFJhd1R5cGU+IG0zID0gbWF0Y2hlcl9tYWtlcigxLjApOworICAgIEVYUEVDVF9U
UlVFKG0zLk1hdGNoZXMoY2xvc2VfdG9fb25lXykpOworICAgIEVYUEVDVF9GQUxTRShtMy5NYXRj
aGVzKGZ1cnRoZXJfZnJvbV9vbmVfKSk7CisKKyAgICAvLyBUZXN0IGNvbW11dGF0aXZpdHk6IG1h
dGNoZXJfbWFrZXIoMC4wKS5NYXRjaGVzKDEuMCkgd2FzIHRlc3RlZCBhYm92ZS4KKyAgICBFWFBF
Q1RfRkFMU0UobTMuTWF0Y2hlcygwLjApKTsKKworICAgIE1hdGNoZXI8UmF3VHlwZT4gbTQgPSBt
YXRjaGVyX21ha2VyKC1pbmZpbml0eV8pOworICAgIEVYUEVDVF9UUlVFKG00Lk1hdGNoZXMoLWNs
b3NlX3RvX2luZmluaXR5XykpOworCisgICAgTWF0Y2hlcjxSYXdUeXBlPiBtNSA9IG1hdGNoZXJf
bWFrZXIoaW5maW5pdHlfKTsKKyAgICBFWFBFQ1RfVFJVRShtNS5NYXRjaGVzKGNsb3NlX3RvX2lu
ZmluaXR5XykpOworCisgICAgLy8gVGhpcyBpcyBpbnRlcmVzdGluZyBhcyB0aGUgcmVwcmVzZW50
YXRpb25zIG9mIGluZmluaXR5XyBhbmQgbmFuMV8KKyAgICAvLyBhcmUgb25seSAxIERMUCBhcGFy
dC4KKyAgICBFWFBFQ1RfRkFMU0UobTUuTWF0Y2hlcyhuYW4xXykpOworCisgICAgLy8gbWF0Y2hl
cl9tYWtlciBjYW4gcHJvZHVjZSBhIE1hdGNoZXI8Y29uc3QgUmF3VHlwZSY+LCB3aGljaCBpcyBu
ZWVkZWQgaW4KKyAgICAvLyBzb21lIGNhc2VzLgorICAgIE1hdGNoZXI8Y29uc3QgUmF3VHlwZSY+
IG02ID0gbWF0Y2hlcl9tYWtlcigwLjApOworICAgIEVYUEVDVF9UUlVFKG02Lk1hdGNoZXMoLTAu
MCkpOworICAgIEVYUEVDVF9UUlVFKG02Lk1hdGNoZXMoY2xvc2VfdG9fcG9zaXRpdmVfemVyb18p
KTsKKyAgICBFWFBFQ1RfRkFMU0UobTYuTWF0Y2hlcygxLjApKTsKKworICAgIC8vIG1hdGNoZXJf
bWFrZXIgY2FuIHByb2R1Y2UgYSBNYXRjaGVyPFJhd1R5cGUmPiwgd2hpY2ggaXMgbmVlZGVkIGlu
IHNvbWUKKyAgICAvLyBjYXNlcy4KKyAgICBNYXRjaGVyPFJhd1R5cGUmPiBtNyA9IG1hdGNoZXJf
bWFrZXIoMC4wKTsKKyAgICBSYXdUeXBlIHggPSAwLjA7CisgICAgRVhQRUNUX1RSVUUobTcuTWF0
Y2hlcyh4KSk7CisgICAgeCA9IDAuMDFmOworICAgIEVYUEVDVF9GQUxTRShtNy5NYXRjaGVzKHgp
KTsKKyAgfQorCisgIC8vIFByZS1jYWxjdWxhdGVkIG51bWJlcnMgdG8gYmUgdXNlZCBieSB0aGUg
dGVzdHMuCisKKyAgY29uc3Qgc2l6ZV90IG1heF91bHBzXzsKKworICBjb25zdCBCaXRzIHplcm9f
Yml0c187ICAvLyBUaGUgYml0cyB0aGF0IHJlcHJlc2VudCAwLjAuCisgIGNvbnN0IEJpdHMgb25l
X2JpdHNfOyAgLy8gVGhlIGJpdHMgdGhhdCByZXByZXNlbnQgMS4wLgorICBjb25zdCBCaXRzIGlu
ZmluaXR5X2JpdHNfOyAgLy8gVGhlIGJpdHMgdGhhdCByZXByZXNlbnQgK2luZmluaXR5LgorCisg
IC8vIFNvbWUgbnVtYmVycyBjbG9zZSB0byAwLjAuCisgIGNvbnN0IFJhd1R5cGUgY2xvc2VfdG9f
cG9zaXRpdmVfemVyb187CisgIGNvbnN0IFJhd1R5cGUgY2xvc2VfdG9fbmVnYXRpdmVfemVyb187
CisgIGNvbnN0IFJhd1R5cGUgZnVydGhlcl9mcm9tX25lZ2F0aXZlX3plcm9fOworCisgIC8vIFNv
bWUgbnVtYmVycyBjbG9zZSB0byAxLjAuCisgIGNvbnN0IFJhd1R5cGUgY2xvc2VfdG9fb25lXzsK
KyAgY29uc3QgUmF3VHlwZSBmdXJ0aGVyX2Zyb21fb25lXzsKKworICAvLyBTb21lIG51bWJlcnMg
Y2xvc2UgdG8gK2luZmluaXR5LgorICBjb25zdCBSYXdUeXBlIGluZmluaXR5XzsKKyAgY29uc3Qg
UmF3VHlwZSBjbG9zZV90b19pbmZpbml0eV87CisgIGNvbnN0IFJhd1R5cGUgZnVydGhlcl9mcm9t
X2luZmluaXR5XzsKKworICAvLyBNYXhpbXVtIHJlcHJlc2VudGFibGUgdmFsdWUgdGhhdCdzIG5v
dCBpbmZpbml0eS4KKyAgY29uc3QgUmF3VHlwZSBtYXhfOworCisgIC8vIFNvbWUgTmFOcy4KKyAg
Y29uc3QgUmF3VHlwZSBuYW4xXzsKKyAgY29uc3QgUmF3VHlwZSBuYW4yXzsKKworIHByaXZhdGU6
CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBzdGF0aWMgUmF3VHlwZSBBc0JpdHMoVCB2YWx1
ZSkgeworICAgIHJldHVybiBGbG9hdGluZzo6UmVpbnRlcnByZXRCaXRzKHN0YXRpY19jYXN0PEJp
dHM+KHZhbHVlKSk7CisgIH0KK307CisKKy8vIFRlc3RzIGZsb2F0aW5nLXBvaW50IG1hdGNoZXJz
IHdpdGggZml4ZWQgZXBzaWxvbnMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUmF3VHlwZT4KK2NsYXNz
IEZsb2F0aW5nUG9pbnROZWFyVGVzdCA6IHB1YmxpYyBGbG9hdGluZ1BvaW50VGVzdDxSYXdUeXBl
PiB7CisgcHJvdGVjdGVkOgorICB0eXBlZGVmIEZsb2F0aW5nUG9pbnRUZXN0PFJhd1R5cGU+IFBh
cmVudFR5cGU7CisKKyAgLy8gQSBiYXR0ZXJ5IG9mIHRlc3RzIGZvciBGbG9hdGluZ0VxTWF0Y2hl
cjo6TWF0Y2hlcyB3aXRoIGEgZml4ZWQgZXBzaWxvbi4KKyAgLy8gbWF0Y2hlcl9tYWtlciBpcyBh
IHBvaW50ZXIgdG8gYSBmdW5jdGlvbiB3aGljaCBjcmVhdGVzIGEgRmxvYXRpbmdFcU1hdGNoZXIu
CisgIHZvaWQgVGVzdE5lYXJNYXRjaGVzKAorICAgICAgdGVzdGluZzo6aW50ZXJuYWw6OkZsb2F0
aW5nRXFNYXRjaGVyPFJhd1R5cGU+CisgICAgICAgICAgKCptYXRjaGVyX21ha2VyKShSYXdUeXBl
LCBSYXdUeXBlKSkgeworICAgIE1hdGNoZXI8UmF3VHlwZT4gbTEgPSBtYXRjaGVyX21ha2VyKDAu
MCwgMC4wKTsKKyAgICBFWFBFQ1RfVFJVRShtMS5NYXRjaGVzKDAuMCkpOworICAgIEVYUEVDVF9U
UlVFKG0xLk1hdGNoZXMoLTAuMCkpOworICAgIEVYUEVDVF9GQUxTRShtMS5NYXRjaGVzKFBhcmVu
dFR5cGU6OmNsb3NlX3RvX3Bvc2l0aXZlX3plcm9fKSk7CisgICAgRVhQRUNUX0ZBTFNFKG0xLk1h
dGNoZXMoUGFyZW50VHlwZTo6Y2xvc2VfdG9fbmVnYXRpdmVfemVyb18pKTsKKyAgICBFWFBFQ1Rf
RkFMU0UobTEuTWF0Y2hlcygxLjApKTsKKworICAgIE1hdGNoZXI8UmF3VHlwZT4gbTIgPSBtYXRj
aGVyX21ha2VyKDAuMCwgMS4wKTsKKyAgICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKDAuMCkpOwor
ICAgIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoLTAuMCkpOworICAgIEVYUEVDVF9UUlVFKG0yLk1h
dGNoZXMoMS4wKSk7CisgICAgRVhQRUNUX1RSVUUobTIuTWF0Y2hlcygtMS4wKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKG0yLk1hdGNoZXMoUGFyZW50VHlwZTo6Y2xvc2VfdG9fb25lXykpOworICAgIEVY
UEVDVF9GQUxTRShtMi5NYXRjaGVzKC1QYXJlbnRUeXBlOjpjbG9zZV90b19vbmVfKSk7CisKKyAg
ICAvLyBDaGVjayB0aGF0IGluZiBtYXRjaGVzIGluZiwgcmVnYXJkbGVzcyBvZiB0aGUgb2YgdGhl
IHNwZWNpZmllZCBtYXgKKyAgICAvLyBhYnNvbHV0ZSBlcnJvci4KKyAgICBNYXRjaGVyPFJhd1R5
cGU+IG0zID0gbWF0Y2hlcl9tYWtlcihQYXJlbnRUeXBlOjppbmZpbml0eV8sIDAuMCk7CisgICAg
RVhQRUNUX1RSVUUobTMuTWF0Y2hlcyhQYXJlbnRUeXBlOjppbmZpbml0eV8pKTsKKyAgICBFWFBF
Q1RfRkFMU0UobTMuTWF0Y2hlcyhQYXJlbnRUeXBlOjpjbG9zZV90b19pbmZpbml0eV8pKTsKKyAg
ICBFWFBFQ1RfRkFMU0UobTMuTWF0Y2hlcygtUGFyZW50VHlwZTo6aW5maW5pdHlfKSk7CisKKyAg
ICBNYXRjaGVyPFJhd1R5cGU+IG00ID0gbWF0Y2hlcl9tYWtlcigtUGFyZW50VHlwZTo6aW5maW5p
dHlfLCAwLjApOworICAgIEVYUEVDVF9UUlVFKG00Lk1hdGNoZXMoLVBhcmVudFR5cGU6OmluZmlu
aXR5XykpOworICAgIEVYUEVDVF9GQUxTRShtNC5NYXRjaGVzKC1QYXJlbnRUeXBlOjpjbG9zZV90
b19pbmZpbml0eV8pKTsKKyAgICBFWFBFQ1RfRkFMU0UobTQuTWF0Y2hlcyhQYXJlbnRUeXBlOjpp
bmZpbml0eV8pKTsKKworICAgIC8vIFRlc3QgdmFyaW91cyBvdmVyZmxvdyBzY2VuYXJpb3MuCisg
ICAgTWF0Y2hlcjxSYXdUeXBlPiBtNSA9IG1hdGNoZXJfbWFrZXIoUGFyZW50VHlwZTo6bWF4Xywg
UGFyZW50VHlwZTo6bWF4Xyk7CisgICAgRVhQRUNUX1RSVUUobTUuTWF0Y2hlcyhQYXJlbnRUeXBl
OjptYXhfKSk7CisgICAgRVhQRUNUX0ZBTFNFKG01Lk1hdGNoZXMoLVBhcmVudFR5cGU6Om1heF8p
KTsKKworICAgIE1hdGNoZXI8UmF3VHlwZT4gbTYgPSBtYXRjaGVyX21ha2VyKC1QYXJlbnRUeXBl
OjptYXhfLCBQYXJlbnRUeXBlOjptYXhfKTsKKyAgICBFWFBFQ1RfRkFMU0UobTYuTWF0Y2hlcyhQ
YXJlbnRUeXBlOjptYXhfKSk7CisgICAgRVhQRUNUX1RSVUUobTYuTWF0Y2hlcygtUGFyZW50VHlw
ZTo6bWF4XykpOworCisgICAgTWF0Y2hlcjxSYXdUeXBlPiBtNyA9IG1hdGNoZXJfbWFrZXIoUGFy
ZW50VHlwZTo6bWF4XywgMCk7CisgICAgRVhQRUNUX1RSVUUobTcuTWF0Y2hlcyhQYXJlbnRUeXBl
OjptYXhfKSk7CisgICAgRVhQRUNUX0ZBTFNFKG03Lk1hdGNoZXMoLVBhcmVudFR5cGU6Om1heF8p
KTsKKworICAgIE1hdGNoZXI8UmF3VHlwZT4gbTggPSBtYXRjaGVyX21ha2VyKC1QYXJlbnRUeXBl
OjptYXhfLCAwKTsKKyAgICBFWFBFQ1RfRkFMU0UobTguTWF0Y2hlcyhQYXJlbnRUeXBlOjptYXhf
KSk7CisgICAgRVhQRUNUX1RSVUUobTguTWF0Y2hlcygtUGFyZW50VHlwZTo6bWF4XykpOworCisg
ICAgLy8gVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBtYXgoKSBhbmQgLW1heCgpIG5vcm1hbGx5IG92
ZXJmbG93cyB0byBpbmZpbml0eSwKKyAgICAvLyBidXQgaXQgc2hvdWxkIHN0aWxsIG1hdGNoIGlm
IHRoZSBtYXhfYWJzX2Vycm9yIGlzIGFsc28gaW5maW5pdHkuCisgICAgTWF0Y2hlcjxSYXdUeXBl
PiBtOSA9IG1hdGNoZXJfbWFrZXIoCisgICAgICAgIFBhcmVudFR5cGU6Om1heF8sIFBhcmVudFR5
cGU6OmluZmluaXR5Xyk7CisgICAgRVhQRUNUX1RSVUUobTguTWF0Y2hlcygtUGFyZW50VHlwZTo6
bWF4XykpOworCisgICAgLy8gbWF0Y2hlcl9tYWtlciBjYW4gcHJvZHVjZSBhIE1hdGNoZXI8Y29u
c3QgUmF3VHlwZSY+LCB3aGljaCBpcyBuZWVkZWQgaW4KKyAgICAvLyBzb21lIGNhc2VzLgorICAg
IE1hdGNoZXI8Y29uc3QgUmF3VHlwZSY+IG0xMCA9IG1hdGNoZXJfbWFrZXIoMC4wLCAxLjApOwor
ICAgIEVYUEVDVF9UUlVFKG0xMC5NYXRjaGVzKC0wLjApKTsKKyAgICBFWFBFQ1RfVFJVRShtMTAu
TWF0Y2hlcyhQYXJlbnRUeXBlOjpjbG9zZV90b19wb3NpdGl2ZV96ZXJvXykpOworICAgIEVYUEVD
VF9GQUxTRShtMTAuTWF0Y2hlcyhQYXJlbnRUeXBlOjpjbG9zZV90b19vbmVfKSk7CisKKyAgICAv
LyBtYXRjaGVyX21ha2VyIGNhbiBwcm9kdWNlIGEgTWF0Y2hlcjxSYXdUeXBlJj4sIHdoaWNoIGlz
IG5lZWRlZCBpbiBzb21lCisgICAgLy8gY2FzZXMuCisgICAgTWF0Y2hlcjxSYXdUeXBlJj4gbTEx
ID0gbWF0Y2hlcl9tYWtlcigwLjAsIDEuMCk7CisgICAgUmF3VHlwZSB4ID0gMC4wOworICAgIEVY
UEVDVF9UUlVFKG0xMS5NYXRjaGVzKHgpKTsKKyAgICB4ID0gMS4wZjsKKyAgICBFWFBFQ1RfVFJV
RShtMTEuTWF0Y2hlcyh4KSk7CisgICAgeCA9IC0xLjBmOworICAgIEVYUEVDVF9UUlVFKG0xMS5N
YXRjaGVzKHgpKTsKKyAgICB4ID0gMS4xZjsKKyAgICBFWFBFQ1RfRkFMU0UobTExLk1hdGNoZXMo
eCkpOworICAgIHggPSAtMS4xZjsKKyAgICBFWFBFQ1RfRkFMU0UobTExLk1hdGNoZXMoeCkpOwor
ICB9Cit9OworCisvLyBJbnN0YW50aWF0ZSBGbG9hdGluZ1BvaW50VGVzdCBmb3IgdGVzdGluZyBm
bG9hdHMuCit0eXBlZGVmIEZsb2F0aW5nUG9pbnRUZXN0PGZsb2F0PiBGbG9hdFRlc3Q7CisKK1RF
U1RfRihGbG9hdFRlc3QsIEZsb2F0RXFBcHByb3hpbWF0ZWx5TWF0Y2hlc0Zsb2F0cykgeworICBU
ZXN0TWF0Y2hlcygmRmxvYXRFcSk7Cit9CisKK1RFU1RfRihGbG9hdFRlc3QsIE5hblNlbnNpdGl2
ZUZsb2F0RXFBcHByb3hpbWF0ZWx5TWF0Y2hlc0Zsb2F0cykgeworICBUZXN0TWF0Y2hlcygmTmFu
U2Vuc2l0aXZlRmxvYXRFcSk7Cit9CisKK1RFU1RfRihGbG9hdFRlc3QsIEZsb2F0RXFDYW5ub3RN
YXRjaE5hTikgeworICAvLyBGbG9hdEVxIG5ldmVyIG1hdGNoZXMgTmFOLgorICBNYXRjaGVyPGZs
b2F0PiBtID0gRmxvYXRFcShuYW4xXyk7CisgIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMobmFuMV8p
KTsKKyAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhuYW4yXykpOworICBFWFBFQ1RfRkFMU0UobS5N
YXRjaGVzKDEuMCkpOworfQorCitURVNUX0YoRmxvYXRUZXN0LCBOYW5TZW5zaXRpdmVGbG9hdEVx
Q2FuTWF0Y2hOYU4pIHsKKyAgLy8gTmFuU2Vuc2l0aXZlRmxvYXRFcSB3aWxsIG1hdGNoIE5hTi4K
KyAgTWF0Y2hlcjxmbG9hdD4gbSA9IE5hblNlbnNpdGl2ZUZsb2F0RXEobmFuMV8pOworICBFWFBF
Q1RfVFJVRShtLk1hdGNoZXMobmFuMV8pKTsKKyAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKG5hbjJf
KSk7CisgIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoMS4wKSk7Cit9CisKK1RFU1RfRihGbG9hdFRl
c3QsIEZsb2F0RXFDYW5EZXNjcmliZVNlbGYpIHsKKyAgTWF0Y2hlcjxmbG9hdD4gbTEgPSBGbG9h
dEVxKDIuMGYpOworICBFWFBFQ1RfRVEoImlzIGFwcHJveGltYXRlbHkgMiIsIERlc2NyaWJlKG0x
KSk7CisgIEVYUEVDVF9FUSgiaXNuJ3QgYXBwcm94aW1hdGVseSAyIiwgRGVzY3JpYmVOZWdhdGlv
bihtMSkpOworCisgIE1hdGNoZXI8ZmxvYXQ+IG0yID0gRmxvYXRFcSgwLjVmKTsKKyAgRVhQRUNU
X0VRKCJpcyBhcHByb3hpbWF0ZWx5IDAuNSIsIERlc2NyaWJlKG0yKSk7CisgIEVYUEVDVF9FUSgi
aXNuJ3QgYXBwcm94aW1hdGVseSAwLjUiLCBEZXNjcmliZU5lZ2F0aW9uKG0yKSk7CisKKyAgTWF0
Y2hlcjxmbG9hdD4gbTMgPSBGbG9hdEVxKG5hbjFfKTsKKyAgRVhQRUNUX0VRKCJuZXZlciBtYXRj
aGVzIiwgRGVzY3JpYmUobTMpKTsKKyAgRVhQRUNUX0VRKCJpcyBhbnl0aGluZyIsIERlc2NyaWJl
TmVnYXRpb24obTMpKTsKK30KKworVEVTVF9GKEZsb2F0VGVzdCwgTmFuU2Vuc2l0aXZlRmxvYXRF
cUNhbkRlc2NyaWJlU2VsZikgeworICBNYXRjaGVyPGZsb2F0PiBtMSA9IE5hblNlbnNpdGl2ZUZs
b2F0RXEoMi4wZik7CisgIEVYUEVDVF9FUSgiaXMgYXBwcm94aW1hdGVseSAyIiwgRGVzY3JpYmUo
bTEpKTsKKyAgRVhQRUNUX0VRKCJpc24ndCBhcHByb3hpbWF0ZWx5IDIiLCBEZXNjcmliZU5lZ2F0
aW9uKG0xKSk7CisKKyAgTWF0Y2hlcjxmbG9hdD4gbTIgPSBOYW5TZW5zaXRpdmVGbG9hdEVxKDAu
NWYpOworICBFWFBFQ1RfRVEoImlzIGFwcHJveGltYXRlbHkgMC41IiwgRGVzY3JpYmUobTIpKTsK
KyAgRVhQRUNUX0VRKCJpc24ndCBhcHByb3hpbWF0ZWx5IDAuNSIsIERlc2NyaWJlTmVnYXRpb24o
bTIpKTsKKworICBNYXRjaGVyPGZsb2F0PiBtMyA9IE5hblNlbnNpdGl2ZUZsb2F0RXEobmFuMV8p
OworICBFWFBFQ1RfRVEoImlzIE5hTiIsIERlc2NyaWJlKG0zKSk7CisgIEVYUEVDVF9FUSgiaXNu
J3QgTmFOIiwgRGVzY3JpYmVOZWdhdGlvbihtMykpOworfQorCisvLyBJbnN0YW50aWF0ZSBGbG9h
dGluZ1BvaW50VGVzdCBmb3IgdGVzdGluZyBmbG9hdHMgd2l0aCBhIHVzZXItc3BlY2lmaWVkCisv
LyBtYXggYWJzb2x1dGUgZXJyb3IuCit0eXBlZGVmIEZsb2F0aW5nUG9pbnROZWFyVGVzdDxmbG9h
dD4gRmxvYXROZWFyVGVzdDsKKworVEVTVF9GKEZsb2F0TmVhclRlc3QsIEZsb2F0TmVhck1hdGNo
ZXMpIHsKKyAgVGVzdE5lYXJNYXRjaGVzKCZGbG9hdE5lYXIpOworfQorCitURVNUX0YoRmxvYXRO
ZWFyVGVzdCwgTmFuU2Vuc2l0aXZlRmxvYXROZWFyQXBwcm94aW1hdGVseU1hdGNoZXNGbG9hdHMp
IHsKKyAgVGVzdE5lYXJNYXRjaGVzKCZOYW5TZW5zaXRpdmVGbG9hdE5lYXIpOworfQorCitURVNU
X0YoRmxvYXROZWFyVGVzdCwgRmxvYXROZWFyQ2FuRGVzY3JpYmVTZWxmKSB7CisgIE1hdGNoZXI8
ZmxvYXQ+IG0xID0gRmxvYXROZWFyKDIuMGYsIDAuNWYpOworICBFWFBFQ1RfRVEoImlzIGFwcHJv
eGltYXRlbHkgMiAoYWJzb2x1dGUgZXJyb3IgPD0gMC41KSIsIERlc2NyaWJlKG0xKSk7CisgIEVY
UEVDVF9FUSgKKyAgICAgICJpc24ndCBhcHByb3hpbWF0ZWx5IDIgKGFic29sdXRlIGVycm9yID4g
MC41KSIsIERlc2NyaWJlTmVnYXRpb24obTEpKTsKKworICBNYXRjaGVyPGZsb2F0PiBtMiA9IEZs
b2F0TmVhcigwLjVmLCAwLjVmKTsKKyAgRVhQRUNUX0VRKCJpcyBhcHByb3hpbWF0ZWx5IDAuNSAo
YWJzb2x1dGUgZXJyb3IgPD0gMC41KSIsIERlc2NyaWJlKG0yKSk7CisgIEVYUEVDVF9FUSgKKyAg
ICAgICJpc24ndCBhcHByb3hpbWF0ZWx5IDAuNSAoYWJzb2x1dGUgZXJyb3IgPiAwLjUpIiwgRGVz
Y3JpYmVOZWdhdGlvbihtMikpOworCisgIE1hdGNoZXI8ZmxvYXQ+IG0zID0gRmxvYXROZWFyKG5h
bjFfLCAwLjApOworICBFWFBFQ1RfRVEoIm5ldmVyIG1hdGNoZXMiLCBEZXNjcmliZShtMykpOwor
ICBFWFBFQ1RfRVEoImlzIGFueXRoaW5nIiwgRGVzY3JpYmVOZWdhdGlvbihtMykpOworfQorCitU
RVNUX0YoRmxvYXROZWFyVGVzdCwgTmFuU2Vuc2l0aXZlRmxvYXROZWFyQ2FuRGVzY3JpYmVTZWxm
KSB7CisgIE1hdGNoZXI8ZmxvYXQ+IG0xID0gTmFuU2Vuc2l0aXZlRmxvYXROZWFyKDIuMGYsIDAu
NWYpOworICBFWFBFQ1RfRVEoImlzIGFwcHJveGltYXRlbHkgMiAoYWJzb2x1dGUgZXJyb3IgPD0g
MC41KSIsIERlc2NyaWJlKG0xKSk7CisgIEVYUEVDVF9FUSgKKyAgICAgICJpc24ndCBhcHByb3hp
bWF0ZWx5IDIgKGFic29sdXRlIGVycm9yID4gMC41KSIsIERlc2NyaWJlTmVnYXRpb24obTEpKTsK
KworICBNYXRjaGVyPGZsb2F0PiBtMiA9IE5hblNlbnNpdGl2ZUZsb2F0TmVhcigwLjVmLCAwLjVm
KTsKKyAgRVhQRUNUX0VRKCJpcyBhcHByb3hpbWF0ZWx5IDAuNSAoYWJzb2x1dGUgZXJyb3IgPD0g
MC41KSIsIERlc2NyaWJlKG0yKSk7CisgIEVYUEVDVF9FUSgKKyAgICAgICJpc24ndCBhcHByb3hp
bWF0ZWx5IDAuNSAoYWJzb2x1dGUgZXJyb3IgPiAwLjUpIiwgRGVzY3JpYmVOZWdhdGlvbihtMikp
OworCisgIE1hdGNoZXI8ZmxvYXQ+IG0zID0gTmFuU2Vuc2l0aXZlRmxvYXROZWFyKG5hbjFfLCAw
LjFmKTsKKyAgRVhQRUNUX0VRKCJpcyBOYU4iLCBEZXNjcmliZShtMykpOworICBFWFBFQ1RfRVEo
Imlzbid0IE5hTiIsIERlc2NyaWJlTmVnYXRpb24obTMpKTsKK30KKworVEVTVF9GKEZsb2F0TmVh
clRlc3QsIEZsb2F0TmVhckNhbm5vdE1hdGNoTmFOKSB7CisgIC8vIEZsb2F0TmVhciBuZXZlciBt
YXRjaGVzIE5hTi4KKyAgTWF0Y2hlcjxmbG9hdD4gbSA9IEZsb2F0TmVhcihQYXJlbnRUeXBlOjpu
YW4xXywgMC4xZik7CisgIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMobmFuMV8pKTsKKyAgRVhQRUNU
X0ZBTFNFKG0uTWF0Y2hlcyhuYW4yXykpOworICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKDEuMCkp
OworfQorCitURVNUX0YoRmxvYXROZWFyVGVzdCwgTmFuU2Vuc2l0aXZlRmxvYXROZWFyQ2FuTWF0
Y2hOYU4pIHsKKyAgLy8gTmFuU2Vuc2l0aXZlRmxvYXROZWFyIHdpbGwgbWF0Y2ggTmFOLgorICBN
YXRjaGVyPGZsb2F0PiBtID0gTmFuU2Vuc2l0aXZlRmxvYXROZWFyKG5hbjFfLCAwLjFmKTsKKyAg
RVhQRUNUX1RSVUUobS5NYXRjaGVzKG5hbjFfKSk7CisgIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhu
YW4yXykpOworICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKDEuMCkpOworfQorCisvLyBJbnN0YW50
aWF0ZSBGbG9hdGluZ1BvaW50VGVzdCBmb3IgdGVzdGluZyBkb3VibGVzLgordHlwZWRlZiBGbG9h
dGluZ1BvaW50VGVzdDxkb3VibGU+IERvdWJsZVRlc3Q7CisKK1RFU1RfRihEb3VibGVUZXN0LCBE
b3VibGVFcUFwcHJveGltYXRlbHlNYXRjaGVzRG91YmxlcykgeworICBUZXN0TWF0Y2hlcygmRG91
YmxlRXEpOworfQorCitURVNUX0YoRG91YmxlVGVzdCwgTmFuU2Vuc2l0aXZlRG91YmxlRXFBcHBy
b3hpbWF0ZWx5TWF0Y2hlc0RvdWJsZXMpIHsKKyAgVGVzdE1hdGNoZXMoJk5hblNlbnNpdGl2ZURv
dWJsZUVxKTsKK30KKworVEVTVF9GKERvdWJsZVRlc3QsIERvdWJsZUVxQ2Fubm90TWF0Y2hOYU4p
IHsKKyAgLy8gRG91YmxlRXEgbmV2ZXIgbWF0Y2hlcyBOYU4uCisgIE1hdGNoZXI8ZG91YmxlPiBt
ID0gRG91YmxlRXEobmFuMV8pOworICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKG5hbjFfKSk7Cisg
IEVYUEVDVF9GQUxTRShtLk1hdGNoZXMobmFuMl8pKTsKKyAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hl
cygxLjApKTsKK30KKworVEVTVF9GKERvdWJsZVRlc3QsIE5hblNlbnNpdGl2ZURvdWJsZUVxQ2Fu
TWF0Y2hOYU4pIHsKKyAgLy8gTmFuU2Vuc2l0aXZlRG91YmxlRXEgd2lsbCBtYXRjaCBOYU4uCisg
IE1hdGNoZXI8ZG91YmxlPiBtID0gTmFuU2Vuc2l0aXZlRG91YmxlRXEobmFuMV8pOworICBFWFBF
Q1RfVFJVRShtLk1hdGNoZXMobmFuMV8pKTsKKyAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKG5hbjJf
KSk7CisgIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoMS4wKSk7Cit9CisKK1RFU1RfRihEb3VibGVU
ZXN0LCBEb3VibGVFcUNhbkRlc2NyaWJlU2VsZikgeworICBNYXRjaGVyPGRvdWJsZT4gbTEgPSBE
b3VibGVFcSgyLjApOworICBFWFBFQ1RfRVEoImlzIGFwcHJveGltYXRlbHkgMiIsIERlc2NyaWJl
KG0xKSk7CisgIEVYUEVDVF9FUSgiaXNuJ3QgYXBwcm94aW1hdGVseSAyIiwgRGVzY3JpYmVOZWdh
dGlvbihtMSkpOworCisgIE1hdGNoZXI8ZG91YmxlPiBtMiA9IERvdWJsZUVxKDAuNSk7CisgIEVY
UEVDVF9FUSgiaXMgYXBwcm94aW1hdGVseSAwLjUiLCBEZXNjcmliZShtMikpOworICBFWFBFQ1Rf
RVEoImlzbid0IGFwcHJveGltYXRlbHkgMC41IiwgRGVzY3JpYmVOZWdhdGlvbihtMikpOworCisg
IE1hdGNoZXI8ZG91YmxlPiBtMyA9IERvdWJsZUVxKG5hbjFfKTsKKyAgRVhQRUNUX0VRKCJuZXZl
ciBtYXRjaGVzIiwgRGVzY3JpYmUobTMpKTsKKyAgRVhQRUNUX0VRKCJpcyBhbnl0aGluZyIsIERl
c2NyaWJlTmVnYXRpb24obTMpKTsKK30KKworVEVTVF9GKERvdWJsZVRlc3QsIE5hblNlbnNpdGl2
ZURvdWJsZUVxQ2FuRGVzY3JpYmVTZWxmKSB7CisgIE1hdGNoZXI8ZG91YmxlPiBtMSA9IE5hblNl
bnNpdGl2ZURvdWJsZUVxKDIuMCk7CisgIEVYUEVDVF9FUSgiaXMgYXBwcm94aW1hdGVseSAyIiwg
RGVzY3JpYmUobTEpKTsKKyAgRVhQRUNUX0VRKCJpc24ndCBhcHByb3hpbWF0ZWx5IDIiLCBEZXNj
cmliZU5lZ2F0aW9uKG0xKSk7CisKKyAgTWF0Y2hlcjxkb3VibGU+IG0yID0gTmFuU2Vuc2l0aXZl
RG91YmxlRXEoMC41KTsKKyAgRVhQRUNUX0VRKCJpcyBhcHByb3hpbWF0ZWx5IDAuNSIsIERlc2Ny
aWJlKG0yKSk7CisgIEVYUEVDVF9FUSgiaXNuJ3QgYXBwcm94aW1hdGVseSAwLjUiLCBEZXNjcmli
ZU5lZ2F0aW9uKG0yKSk7CisKKyAgTWF0Y2hlcjxkb3VibGU+IG0zID0gTmFuU2Vuc2l0aXZlRG91
YmxlRXEobmFuMV8pOworICBFWFBFQ1RfRVEoImlzIE5hTiIsIERlc2NyaWJlKG0zKSk7CisgIEVY
UEVDVF9FUSgiaXNuJ3QgTmFOIiwgRGVzY3JpYmVOZWdhdGlvbihtMykpOworfQorCisvLyBJbnN0
YW50aWF0ZSBGbG9hdGluZ1BvaW50VGVzdCBmb3IgdGVzdGluZyBmbG9hdHMgd2l0aCBhIHVzZXIt
c3BlY2lmaWVkCisvLyBtYXggYWJzb2x1dGUgZXJyb3IuCit0eXBlZGVmIEZsb2F0aW5nUG9pbnRO
ZWFyVGVzdDxkb3VibGU+IERvdWJsZU5lYXJUZXN0OworCitURVNUX0YoRG91YmxlTmVhclRlc3Qs
IERvdWJsZU5lYXJNYXRjaGVzKSB7CisgIFRlc3ROZWFyTWF0Y2hlcygmRG91YmxlTmVhcik7Cit9
CisKK1RFU1RfRihEb3VibGVOZWFyVGVzdCwgTmFuU2Vuc2l0aXZlRG91YmxlTmVhckFwcHJveGlt
YXRlbHlNYXRjaGVzRG91YmxlcykgeworICBUZXN0TmVhck1hdGNoZXMoJk5hblNlbnNpdGl2ZURv
dWJsZU5lYXIpOworfQorCitURVNUX0YoRG91YmxlTmVhclRlc3QsIERvdWJsZU5lYXJDYW5EZXNj
cmliZVNlbGYpIHsKKyAgTWF0Y2hlcjxkb3VibGU+IG0xID0gRG91YmxlTmVhcigyLjAsIDAuNSk7
CisgIEVYUEVDVF9FUSgiaXMgYXBwcm94aW1hdGVseSAyIChhYnNvbHV0ZSBlcnJvciA8PSAwLjUp
IiwgRGVzY3JpYmUobTEpKTsKKyAgRVhQRUNUX0VRKAorICAgICAgImlzbid0IGFwcHJveGltYXRl
bHkgMiAoYWJzb2x1dGUgZXJyb3IgPiAwLjUpIiwgRGVzY3JpYmVOZWdhdGlvbihtMSkpOworCisg
IE1hdGNoZXI8ZG91YmxlPiBtMiA9IERvdWJsZU5lYXIoMC41LCAwLjUpOworICBFWFBFQ1RfRVEo
ImlzIGFwcHJveGltYXRlbHkgMC41IChhYnNvbHV0ZSBlcnJvciA8PSAwLjUpIiwgRGVzY3JpYmUo
bTIpKTsKKyAgRVhQRUNUX0VRKAorICAgICAgImlzbid0IGFwcHJveGltYXRlbHkgMC41IChhYnNv
bHV0ZSBlcnJvciA+IDAuNSkiLCBEZXNjcmliZU5lZ2F0aW9uKG0yKSk7CisKKyAgTWF0Y2hlcjxk
b3VibGU+IG0zID0gRG91YmxlTmVhcihuYW4xXywgMC4wKTsKKyAgRVhQRUNUX0VRKCJuZXZlciBt
YXRjaGVzIiwgRGVzY3JpYmUobTMpKTsKKyAgRVhQRUNUX0VRKCJpcyBhbnl0aGluZyIsIERlc2Ny
aWJlTmVnYXRpb24obTMpKTsKK30KKworVEVTVF9GKERvdWJsZU5lYXJUZXN0LCBFeHBsYWluc1Jl
c3VsdFdoZW5NYXRjaEZhaWxzKSB7CisgIEVYUEVDVF9FUSgiIiwgRXhwbGFpbihEb3VibGVOZWFy
KDIuMCwgMC4xKSwgMi4wNSkpOworICBFWFBFQ1RfRVEoIndoaWNoIGlzIDAuMiBmcm9tIDIiLCBF
eHBsYWluKERvdWJsZU5lYXIoMi4wLCAwLjEpLCAyLjIpKTsKKyAgRVhQRUNUX0VRKCJ3aGljaCBp
cyAtMC4zIGZyb20gMiIsIEV4cGxhaW4oRG91YmxlTmVhcigyLjAsIDAuMSksIDEuNykpOworCisg
IGNvbnN0IHN0ZDo6c3RyaW5nIGV4cGxhbmF0aW9uID0KKyAgICAgIEV4cGxhaW4oRG91YmxlTmVh
cigyLjEsIDFlLTEwKSwgMi4xICsgMS4yZS0xMCk7CisgIC8vIERpZmZlcmVudCBDKysgaW1wbGVt
ZW50YXRpb25zIG1heSBwcmludCBmbG9hdGluZy1wb2ludCBudW1iZXJzCisgIC8vIHNsaWdodGx5
IGRpZmZlcmVudGx5LgorICBFWFBFQ1RfVFJVRShleHBsYW5hdGlvbiA9PSAid2hpY2ggaXMgMS4y
ZS0xMCBmcm9tIDIuMSIgfHwgIC8vIEdDQworICAgICAgICAgICAgICBleHBsYW5hdGlvbiA9PSAi
d2hpY2ggaXMgMS4yZS0wMTAgZnJvbSAyLjEiKSAgIC8vIE1TVkMKKyAgICAgIDw8ICIgd2hlcmUg
ZXhwbGFuYXRpb24gaXMgXCIiIDw8IGV4cGxhbmF0aW9uIDw8ICJcIi4iOworfQorCitURVNUX0Yo
RG91YmxlTmVhclRlc3QsIE5hblNlbnNpdGl2ZURvdWJsZU5lYXJDYW5EZXNjcmliZVNlbGYpIHsK
KyAgTWF0Y2hlcjxkb3VibGU+IG0xID0gTmFuU2Vuc2l0aXZlRG91YmxlTmVhcigyLjAsIDAuNSk7
CisgIEVYUEVDVF9FUSgiaXMgYXBwcm94aW1hdGVseSAyIChhYnNvbHV0ZSBlcnJvciA8PSAwLjUp
IiwgRGVzY3JpYmUobTEpKTsKKyAgRVhQRUNUX0VRKAorICAgICAgImlzbid0IGFwcHJveGltYXRl
bHkgMiAoYWJzb2x1dGUgZXJyb3IgPiAwLjUpIiwgRGVzY3JpYmVOZWdhdGlvbihtMSkpOworCisg
IE1hdGNoZXI8ZG91YmxlPiBtMiA9IE5hblNlbnNpdGl2ZURvdWJsZU5lYXIoMC41LCAwLjUpOwor
ICBFWFBFQ1RfRVEoImlzIGFwcHJveGltYXRlbHkgMC41IChhYnNvbHV0ZSBlcnJvciA8PSAwLjUp
IiwgRGVzY3JpYmUobTIpKTsKKyAgRVhQRUNUX0VRKAorICAgICAgImlzbid0IGFwcHJveGltYXRl
bHkgMC41IChhYnNvbHV0ZSBlcnJvciA+IDAuNSkiLCBEZXNjcmliZU5lZ2F0aW9uKG0yKSk7CisK
KyAgTWF0Y2hlcjxkb3VibGU+IG0zID0gTmFuU2Vuc2l0aXZlRG91YmxlTmVhcihuYW4xXywgMC4x
KTsKKyAgRVhQRUNUX0VRKCJpcyBOYU4iLCBEZXNjcmliZShtMykpOworICBFWFBFQ1RfRVEoImlz
bid0IE5hTiIsIERlc2NyaWJlTmVnYXRpb24obTMpKTsKK30KKworVEVTVF9GKERvdWJsZU5lYXJU
ZXN0LCBEb3VibGVOZWFyQ2Fubm90TWF0Y2hOYU4pIHsKKyAgLy8gRG91YmxlTmVhciBuZXZlciBt
YXRjaGVzIE5hTi4KKyAgTWF0Y2hlcjxkb3VibGU+IG0gPSBEb3VibGVOZWFyKFBhcmVudFR5cGU6
Om5hbjFfLCAwLjEpOworICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKG5hbjFfKSk7CisgIEVYUEVD
VF9GQUxTRShtLk1hdGNoZXMobmFuMl8pKTsKKyAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcygxLjAp
KTsKK30KKworVEVTVF9GKERvdWJsZU5lYXJUZXN0LCBOYW5TZW5zaXRpdmVEb3VibGVOZWFyQ2Fu
TWF0Y2hOYU4pIHsKKyAgLy8gTmFuU2Vuc2l0aXZlRG91YmxlTmVhciB3aWxsIG1hdGNoIE5hTi4K
KyAgTWF0Y2hlcjxkb3VibGU+IG0gPSBOYW5TZW5zaXRpdmVEb3VibGVOZWFyKG5hbjFfLCAwLjEp
OworICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMobmFuMV8pKTsKKyAgRVhQRUNUX1RSVUUobS5NYXRj
aGVzKG5hbjJfKSk7CisgIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoMS4wKSk7Cit9CisKK1RFU1Qo
UG9pbnRlZVRlc3QsIFJhd1BvaW50ZXIpIHsKKyAgY29uc3QgTWF0Y2hlcjxpbnQqPiBtID0gUG9p
bnRlZShHZSgwKSk7CisKKyAgaW50IG4gPSAxOworICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoJm4p
KTsKKyAgbiA9IC0xOworICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKCZuKSk7CisgIEVYUEVDVF9G
QUxTRShtLk1hdGNoZXMoTlVMTCkpOworfQorCitURVNUKFBvaW50ZWVUZXN0LCBSYXdQb2ludGVy
VG9Db25zdCkgeworICBjb25zdCBNYXRjaGVyPGNvbnN0IGRvdWJsZSo+IG0gPSBQb2ludGVlKEdl
KDApKTsKKworICBkb3VibGUgeCA9IDE7CisgIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcygmeCkpOwor
ICB4ID0gLTE7CisgIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoJngpKTsKKyAgRVhQRUNUX0ZBTFNF
KG0uTWF0Y2hlcyhOVUxMKSk7Cit9CisKK1RFU1QoUG9pbnRlZVRlc3QsIFJlZmVyZW5jZVRvQ29u
c3RSYXdQb2ludGVyKSB7CisgIGNvbnN0IE1hdGNoZXI8aW50KiBjb25zdCAmPiBtID0gUG9pbnRl
ZShHZSgwKSk7CisKKyAgaW50IG4gPSAxOworICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoJm4pKTsK
KyAgbiA9IC0xOworICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKCZuKSk7CisgIEVYUEVDVF9GQUxT
RShtLk1hdGNoZXMoTlVMTCkpOworfQorCitURVNUKFBvaW50ZWVUZXN0LCBSZWZlcmVuY2VUb05v
bkNvbnN0UmF3UG9pbnRlcikgeworICBjb25zdCBNYXRjaGVyPGRvdWJsZSogJj4gbSA9IFBvaW50
ZWUoR2UoMCkpOworCisgIGRvdWJsZSB4ID0gMS4wOworICBkb3VibGUqIHAgPSAmeDsKKyAgRVhQ
RUNUX1RSVUUobS5NYXRjaGVzKHApKTsKKyAgeCA9IC0xOworICBFWFBFQ1RfRkFMU0UobS5NYXRj
aGVzKHApKTsKKyAgcCA9IE5VTEw7CisgIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMocCkpOworfQor
CitNQVRDSEVSX1AoRmllbGRJSXMsIGlubmVyX21hdGNoZXIsICIiKSB7CisgIHJldHVybiBFeHBs
YWluTWF0Y2hSZXN1bHQoaW5uZXJfbWF0Y2hlciwgYXJnLmksIHJlc3VsdF9saXN0ZW5lcik7Cit9
CisKKyNpZiBHVEVTVF9IQVNfUlRUSQorCitURVNUKFdoZW5EeW5hbWljQ2FzdFRvVGVzdCwgU2Ft
ZVR5cGUpIHsKKyAgRGVyaXZlZCBkZXJpdmVkOworICBkZXJpdmVkLmkgPSA0OworCisgIC8vIFJp
Z2h0IHR5cGUuIEEgcG9pbnRlciBpcyBwYXNzZWQgZG93bi4KKyAgQmFzZSogYXNfYmFzZV9wdHIg
PSAmZGVyaXZlZDsKKyAgRVhQRUNUX1RIQVQoYXNfYmFzZV9wdHIsIFdoZW5EeW5hbWljQ2FzdFRv
PERlcml2ZWQqPihOb3QoSXNOdWxsKCkpKSk7CisgIEVYUEVDVF9USEFUKGFzX2Jhc2VfcHRyLCBX
aGVuRHluYW1pY0Nhc3RUbzxEZXJpdmVkKj4oUG9pbnRlZShGaWVsZElJcyg0KSkpKTsKKyAgRVhQ
RUNUX1RIQVQoYXNfYmFzZV9wdHIsCisgICAgICAgICAgICAgIE5vdChXaGVuRHluYW1pY0Nhc3RU
bzxEZXJpdmVkKj4oUG9pbnRlZShGaWVsZElJcyg1KSkpKSk7Cit9CisKK1RFU1QoV2hlbkR5bmFt
aWNDYXN0VG9UZXN0LCBXcm9uZ1R5cGVzKSB7CisgIEJhc2UgYmFzZTsKKyAgRGVyaXZlZCBkZXJp
dmVkOworICBPdGhlckRlcml2ZWQgb3RoZXJfZGVyaXZlZDsKKworICAvLyBXcm9uZyB0eXBlcy4g
TlVMTCBpcyBwYXNzZWQuCisgIEVYUEVDVF9USEFUKCZiYXNlLCBOb3QoV2hlbkR5bmFtaWNDYXN0
VG88RGVyaXZlZCo+KFBvaW50ZWUoXykpKSk7CisgIEVYUEVDVF9USEFUKCZiYXNlLCBXaGVuRHlu
YW1pY0Nhc3RUbzxEZXJpdmVkKj4oSXNOdWxsKCkpKTsKKyAgQmFzZSogYXNfYmFzZV9wdHIgPSAm
ZGVyaXZlZDsKKyAgRVhQRUNUX1RIQVQoYXNfYmFzZV9wdHIsIE5vdChXaGVuRHluYW1pY0Nhc3RU
bzxPdGhlckRlcml2ZWQqPihQb2ludGVlKF8pKSkpOworICBFWFBFQ1RfVEhBVChhc19iYXNlX3B0
ciwgV2hlbkR5bmFtaWNDYXN0VG88T3RoZXJEZXJpdmVkKj4oSXNOdWxsKCkpKTsKKyAgYXNfYmFz
ZV9wdHIgPSAmb3RoZXJfZGVyaXZlZDsKKyAgRVhQRUNUX1RIQVQoYXNfYmFzZV9wdHIsIE5vdChX
aGVuRHluYW1pY0Nhc3RUbzxEZXJpdmVkKj4oUG9pbnRlZShfKSkpKTsKKyAgRVhQRUNUX1RIQVQo
YXNfYmFzZV9wdHIsIFdoZW5EeW5hbWljQ2FzdFRvPERlcml2ZWQqPihJc051bGwoKSkpOworfQor
CitURVNUKFdoZW5EeW5hbWljQ2FzdFRvVGVzdCwgQWxyZWFkeU51bGwpIHsKKyAgLy8gQWxyZWFk
eSBOVUxMLgorICBCYXNlKiBhc19iYXNlX3B0ciA9IE5VTEw7CisgIEVYUEVDVF9USEFUKGFzX2Jh
c2VfcHRyLCBXaGVuRHluYW1pY0Nhc3RUbzxEZXJpdmVkKj4oSXNOdWxsKCkpKTsKK30KKworc3Ry
dWN0IEFtYmlndW91c0Nhc3RUeXBlcyB7CisgIGNsYXNzIFZpcnR1YWxEZXJpdmVkIDogcHVibGlj
IHZpcnR1YWwgQmFzZSB7fTsKKyAgY2xhc3MgRGVyaXZlZFN1YjEgOiBwdWJsaWMgVmlydHVhbERl
cml2ZWQge307CisgIGNsYXNzIERlcml2ZWRTdWIyIDogcHVibGljIFZpcnR1YWxEZXJpdmVkIHt9
OworICBjbGFzcyBNYW55RGVyaXZlZEluSGllcmFyY2h5IDogcHVibGljIERlcml2ZWRTdWIxLCBw
dWJsaWMgRGVyaXZlZFN1YjIge307Cit9OworCitURVNUKFdoZW5EeW5hbWljQ2FzdFRvVGVzdCwg
QW1iaWd1b3VzQ2FzdCkgeworICBBbWJpZ3VvdXNDYXN0VHlwZXM6OkRlcml2ZWRTdWIxIHN1YjE7
CisgIEFtYmlndW91c0Nhc3RUeXBlczo6TWFueURlcml2ZWRJbkhpZXJhcmNoeSBtYW55X2Rlcml2
ZWQ7CisgIC8vIE11bHRpcGx5IGRlcml2ZWQgZnJvbSBCYXNlLiBkeW5hbWljX2Nhc3Q8PiByZXR1
cm5zIE5VTEwuCisgIEJhc2UqIGFzX2Jhc2VfcHRyID0KKyAgICAgIHN0YXRpY19jYXN0PEFtYmln
dW91c0Nhc3RUeXBlczo6RGVyaXZlZFN1YjEqPigmbWFueV9kZXJpdmVkKTsKKyAgRVhQRUNUX1RI
QVQoYXNfYmFzZV9wdHIsCisgICAgICAgICAgICAgIFdoZW5EeW5hbWljQ2FzdFRvPEFtYmlndW91
c0Nhc3RUeXBlczo6VmlydHVhbERlcml2ZWQqPihJc051bGwoKSkpOworICBhc19iYXNlX3B0ciA9
ICZzdWIxOworICBFWFBFQ1RfVEhBVCgKKyAgICAgIGFzX2Jhc2VfcHRyLAorICAgICAgV2hlbkR5
bmFtaWNDYXN0VG88QW1iaWd1b3VzQ2FzdFR5cGVzOjpWaXJ0dWFsRGVyaXZlZCo+KE5vdChJc051
bGwoKSkpKTsKK30KKworVEVTVChXaGVuRHluYW1pY0Nhc3RUb1Rlc3QsIERlc2NyaWJlKSB7Cisg
IE1hdGNoZXI8QmFzZSo+IG1hdGNoZXIgPSBXaGVuRHluYW1pY0Nhc3RUbzxEZXJpdmVkKj4oUG9p
bnRlZShfKSk7CisgIGNvbnN0IHN0cmluZyBwcmVmaXggPQorICAgICAgIndoZW4gZHluYW1pY19j
YXN0IHRvICIgKyBpbnRlcm5hbDo6R2V0VHlwZU5hbWU8RGVyaXZlZCo+KCkgKyAiLCAiOworICBF
WFBFQ1RfRVEocHJlZml4ICsgInBvaW50cyB0byBhIHZhbHVlIHRoYXQgaXMgYW55dGhpbmciLCBE
ZXNjcmliZShtYXRjaGVyKSk7CisgIEVYUEVDVF9FUShwcmVmaXggKyAiZG9lcyBub3QgcG9pbnQg
dG8gYSB2YWx1ZSB0aGF0IGlzIGFueXRoaW5nIiwKKyAgICAgICAgICAgIERlc2NyaWJlTmVnYXRp
b24obWF0Y2hlcikpOworfQorCitURVNUKFdoZW5EeW5hbWljQ2FzdFRvVGVzdCwgRXhwbGFpbikg
eworICBNYXRjaGVyPEJhc2UqPiBtYXRjaGVyID0gV2hlbkR5bmFtaWNDYXN0VG88RGVyaXZlZCo+
KFBvaW50ZWUoXykpOworICBCYXNlKiBudWxsID0gTlVMTDsKKyAgRVhQRUNUX1RIQVQoRXhwbGFp
bihtYXRjaGVyLCBudWxsKSwgSGFzU3Vic3RyKCJOVUxMIikpOworICBEZXJpdmVkIGRlcml2ZWQ7
CisgIEVYUEVDVF9UUlVFKG1hdGNoZXIuTWF0Y2hlcygmZGVyaXZlZCkpOworICBFWFBFQ1RfVEhB
VChFeHBsYWluKG1hdGNoZXIsICZkZXJpdmVkKSwgSGFzU3Vic3RyKCJ3aGljaCBwb2ludHMgdG8g
IikpOworCisgIC8vIFdpdGggcmVmZXJlbmNlcywgdGhlIG1hdGNoZXIgaXRzZWxmIGNhbiBmYWls
LiBUZXN0IGZvciB0aGF0IG9uZS4KKyAgTWF0Y2hlcjxjb25zdCBCYXNlJj4gcmVmX21hdGNoZXIg
PSBXaGVuRHluYW1pY0Nhc3RUbzxjb25zdCBPdGhlckRlcml2ZWQmPihfKTsKKyAgRVhQRUNUX1RI
QVQoRXhwbGFpbihyZWZfbWF0Y2hlciwgZGVyaXZlZCksCisgICAgICAgICAgICAgIEhhc1N1YnN0
cigid2hpY2ggY2Fubm90IGJlIGR5bmFtaWNfY2FzdCIpKTsKK30KKworVEVTVChXaGVuRHluYW1p
Y0Nhc3RUb1Rlc3QsIEdvb2RSZWZlcmVuY2UpIHsKKyAgRGVyaXZlZCBkZXJpdmVkOworICBkZXJp
dmVkLmkgPSA0OworICBCYXNlJiBhc19iYXNlX3JlZiA9IGRlcml2ZWQ7CisgIEVYUEVDVF9USEFU
KGFzX2Jhc2VfcmVmLCBXaGVuRHluYW1pY0Nhc3RUbzxjb25zdCBEZXJpdmVkJj4oRmllbGRJSXMo
NCkpKTsKKyAgRVhQRUNUX1RIQVQoYXNfYmFzZV9yZWYsIFdoZW5EeW5hbWljQ2FzdFRvPGNvbnN0
IERlcml2ZWQmPihOb3QoRmllbGRJSXMoNSkpKSk7Cit9CisKK1RFU1QoV2hlbkR5bmFtaWNDYXN0
VG9UZXN0LCBCYWRSZWZlcmVuY2UpIHsKKyAgRGVyaXZlZCBkZXJpdmVkOworICBCYXNlJiBhc19i
YXNlX3JlZiA9IGRlcml2ZWQ7CisgIEVYUEVDVF9USEFUKGFzX2Jhc2VfcmVmLCBOb3QoV2hlbkR5
bmFtaWNDYXN0VG88Y29uc3QgT3RoZXJEZXJpdmVkJj4oXykpKTsKK30KKworI2VuZGlmICAvLyBH
VEVTVF9IQVNfUlRUSQorCisvLyBNaW5pbWFsIGNvbnN0LXByb3BhZ2F0aW5nIHBvaW50ZXIuCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIENvbnN0UHJvcGFnYXRpbmdQdHIgeworIHB1Ymxp
YzoKKyAgdHlwZWRlZiBUIGVsZW1lbnRfdHlwZTsKKworICBDb25zdFByb3BhZ2F0aW5nUHRyKCkg
OiB2YWxfKCkge30KKyAgZXhwbGljaXQgQ29uc3RQcm9wYWdhdGluZ1B0cihUKiB0KSA6IHZhbF8o
dCkge30KKyAgQ29uc3RQcm9wYWdhdGluZ1B0cihjb25zdCBDb25zdFByb3BhZ2F0aW5nUHRyJiBv
dGhlcikgOiB2YWxfKG90aGVyLnZhbF8pIHt9CisKKyAgVCogZ2V0KCkgeyByZXR1cm4gdmFsXzsg
fQorICBUJiBvcGVyYXRvciooKSB7IHJldHVybiAqdmFsXzsgfQorICAvLyBNb3N0IHNtYXJ0IHBv
aW50ZXJzIHJldHVybiBub24tY29uc3QgVCogYW5kIFQmIGZyb20gdGhlIG5leHQgbWV0aG9kcy4K
KyAgY29uc3QgVCogZ2V0KCkgY29uc3QgeyByZXR1cm4gdmFsXzsgfQorICBjb25zdCBUJiBvcGVy
YXRvciooKSBjb25zdCB7IHJldHVybiAqdmFsXzsgfQorCisgcHJpdmF0ZToKKyAgVCogdmFsXzsK
K307CisKK1RFU1QoUG9pbnRlZVRlc3QsIFdvcmtzV2l0aENvbnN0UHJvcGFnYXRpbmdQb2ludGVy
cykgeworICBjb25zdCBNYXRjaGVyPCBDb25zdFByb3BhZ2F0aW5nUHRyPGludD4gPiBtID0gUG9p
bnRlZShMdCg1KSk7CisgIGludCB0aHJlZSA9IDM7CisgIGNvbnN0IENvbnN0UHJvcGFnYXRpbmdQ
dHI8aW50PiBjbygmdGhyZWUpOworICBDb25zdFByb3BhZ2F0aW5nUHRyPGludD4gbygmdGhyZWUp
OworICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMobykpOworICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMo
Y28pKTsKKyAgKm8gPSA2OworICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKG8pKTsKKyAgRVhQRUNU
X0ZBTFNFKG0uTWF0Y2hlcyhDb25zdFByb3BhZ2F0aW5nUHRyPGludD4oKSkpOworfQorCitURVNU
KFBvaW50ZWVUZXN0LCBOZXZlck1hdGNoZXNOdWxsKSB7CisgIGNvbnN0IE1hdGNoZXI8Y29uc3Qg
Y2hhcio+IG0gPSBQb2ludGVlKF8pOworICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKE5VTEwpKTsK
K30KKworLy8gVGVzdHMgdGhhdCB3ZSBjYW4gd3JpdGUgUG9pbnRlZSh2YWx1ZSkgaW5zdGVhZCBv
ZiBQb2ludGVlKEVxKHZhbHVlKSkuCitURVNUKFBvaW50ZWVUZXN0LCBNYXRjaGVzQWdhaW5zdEFW
YWx1ZSkgeworICBjb25zdCBNYXRjaGVyPGludCo+IG0gPSBQb2ludGVlKDUpOworCisgIGludCBu
ID0gNTsKKyAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKCZuKSk7CisgIG4gPSAtMTsKKyAgRVhQRUNU
X0ZBTFNFKG0uTWF0Y2hlcygmbikpOworICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKE5VTEwpKTsK
K30KKworVEVTVChQb2ludGVlVGVzdCwgQ2FuRGVzY3JpYmVTZWxmKSB7CisgIGNvbnN0IE1hdGNo
ZXI8aW50Kj4gbSA9IFBvaW50ZWUoR3QoMykpOworICBFWFBFQ1RfRVEoInBvaW50cyB0byBhIHZh
bHVlIHRoYXQgaXMgPiAzIiwgRGVzY3JpYmUobSkpOworICBFWFBFQ1RfRVEoImRvZXMgbm90IHBv
aW50IHRvIGEgdmFsdWUgdGhhdCBpcyA+IDMiLAorICAgICAgICAgICAgRGVzY3JpYmVOZWdhdGlv
bihtKSk7Cit9CisKK1RFU1QoUG9pbnRlZVRlc3QsIENhbkV4cGxhaW5NYXRjaFJlc3VsdCkgewor
ICBjb25zdCBNYXRjaGVyPGNvbnN0IHN0ZDo6c3RyaW5nKj4gbSA9IFBvaW50ZWUoU3RhcnRzV2l0
aCgiSGkiKSk7CisKKyAgRVhQRUNUX0VRKCIiLCBFeHBsYWluKG0sIHN0YXRpY19jYXN0PGNvbnN0
IHN0ZDo6c3RyaW5nKj4oTlVMTCkpKTsKKworICBjb25zdCBNYXRjaGVyPGxvbmcqPiBtMiA9IFBv
aW50ZWUoR3JlYXRlclRoYW4oMSkpOyAgLy8gTk9MSU5UCisgIGxvbmcgbiA9IDM7ICAvLyBOT0xJ
TlQKKyAgRVhQRUNUX0VRKCJ3aGljaCBwb2ludHMgdG8gMyIgKyBPZlR5cGUoImxvbmciKSArICIs
IHdoaWNoIGlzIDIgbW9yZSB0aGFuIDEiLAorICAgICAgICAgICAgRXhwbGFpbihtMiwgJm4pKTsK
K30KKworVEVTVChQb2ludGVlVGVzdCwgQWx3YXlzRXhwbGFpbnNQb2ludGVlKSB7CisgIGNvbnN0
IE1hdGNoZXI8aW50Kj4gbSA9IFBvaW50ZWUoMCk7CisgIGludCBuID0gNDI7CisgIEVYUEVDVF9F
USgid2hpY2ggcG9pbnRzIHRvIDQyIiArIE9mVHlwZSgiaW50IiksIEV4cGxhaW4obSwgJm4pKTsK
K30KKworLy8gQW4gdW5jb3B5YWJsZSBjbGFzcy4KK2NsYXNzIFVuY29weWFibGUgeworIHB1Ymxp
YzoKKyAgVW5jb3B5YWJsZSgpIDogdmFsdWVfKC0xKSB7fQorICBleHBsaWNpdCBVbmNvcHlhYmxl
KGludCBhX3ZhbHVlKSA6IHZhbHVlXyhhX3ZhbHVlKSB7fQorCisgIGludCB2YWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIHZhbHVlXzsgfQorICB2b2lkIHNldF92YWx1ZShpbnQgaSkgeyB2YWx1ZV8gPSBp
OyB9CisKKyBwcml2YXRlOgorICBpbnQgdmFsdWVfOworICBHVEVTVF9ESVNBTExPV19DT1BZX0FO
RF9BU1NJR05fKFVuY29weWFibGUpOworfTsKKworLy8gUmV0dXJucyB0cnVlIGlmZiB4LnZhbHVl
KCkgaXMgcG9zaXRpdmUuCitib29sIFZhbHVlSXNQb3NpdGl2ZShjb25zdCBVbmNvcHlhYmxlJiB4
KSB7IHJldHVybiB4LnZhbHVlKCkgPiAwOyB9CisKK01BVENIRVJfUChVbmNvcHlhYmxlSXMsIGlu
bmVyX21hdGNoZXIsICIiKSB7CisgIHJldHVybiBFeHBsYWluTWF0Y2hSZXN1bHQoaW5uZXJfbWF0
Y2hlciwgYXJnLnZhbHVlKCksIHJlc3VsdF9saXN0ZW5lcik7Cit9CisKKy8vIEEgdXNlci1kZWZp
bmVkIHN0cnVjdCBmb3IgdGVzdGluZyBGaWVsZCgpLgorc3RydWN0IEFTdHJ1Y3QgeworICBBU3Ry
dWN0KCkgOiB4KDApLCB5KDEuMCksIHooNSksIHAoTlVMTCkge30KKyAgQVN0cnVjdChjb25zdCBB
U3RydWN0JiByaHMpCisgICAgICA6IHgocmhzLngpLCB5KHJocy55KSwgeihyaHMuei52YWx1ZSgp
KSwgcChyaHMucCkge30KKworICBpbnQgeDsgICAgICAgICAgIC8vIEEgbm9uLWNvbnN0IGZpZWxk
LgorICBjb25zdCBkb3VibGUgeTsgIC8vIEEgY29uc3QgZmllbGQuCisgIFVuY29weWFibGUgejsg
ICAgLy8gQW4gdW5jb3B5YWJsZSBmaWVsZC4KKyAgY29uc3QgY2hhciogcDsgICAvLyBBIHBvaW50
ZXIgZmllbGQuCisKKyBwcml2YXRlOgorICBHVEVTVF9ESVNBTExPV19BU1NJR05fKEFTdHJ1Y3Qp
OworfTsKKworLy8gQSBkZXJpdmVkIHN0cnVjdCBmb3IgdGVzdGluZyBGaWVsZCgpLgorc3RydWN0
IERlcml2ZWRTdHJ1Y3QgOiBwdWJsaWMgQVN0cnVjdCB7CisgIGNoYXIgY2g7CisKKyBwcml2YXRl
OgorICBHVEVTVF9ESVNBTExPV19BU1NJR05fKERlcml2ZWRTdHJ1Y3QpOworfTsKKworLy8gVGVz
dHMgdGhhdCBGaWVsZCgmRm9vOjpmaWVsZCwgLi4uKSB3b3JrcyB3aGVuIGZpZWxkIGlzIG5vbi1j
b25zdC4KK1RFU1QoRmllbGRUZXN0LCBXb3Jrc0Zvck5vbkNvbnN0RmllbGQpIHsKKyAgTWF0Y2hl
cjxBU3RydWN0PiBtID0gRmllbGQoJkFTdHJ1Y3Q6OngsIEdlKDApKTsKKworICBBU3RydWN0IGE7
CisgIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhhKSk7CisgIGEueCA9IC0xOworICBFWFBFQ1RfRkFM
U0UobS5NYXRjaGVzKGEpKTsKK30KKworLy8gVGVzdHMgdGhhdCBGaWVsZCgmRm9vOjpmaWVsZCwg
Li4uKSB3b3JrcyB3aGVuIGZpZWxkIGlzIGNvbnN0LgorVEVTVChGaWVsZFRlc3QsIFdvcmtzRm9y
Q29uc3RGaWVsZCkgeworICBBU3RydWN0IGE7CisKKyAgTWF0Y2hlcjxBU3RydWN0PiBtID0gRmll
bGQoJkFTdHJ1Y3Q6OnksIEdlKDAuMCkpOworICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoYSkpOwor
ICBtID0gRmllbGQoJkFTdHJ1Y3Q6OnksIExlKDAuMCkpOworICBFWFBFQ1RfRkFMU0UobS5NYXRj
aGVzKGEpKTsKK30KKworLy8gVGVzdHMgdGhhdCBGaWVsZCgmRm9vOjpmaWVsZCwgLi4uKSB3b3Jr
cyB3aGVuIGZpZWxkIGlzIG5vdCBjb3B5YWJsZS4KK1RFU1QoRmllbGRUZXN0LCBXb3Jrc0ZvclVu
Y29weWFibGVGaWVsZCkgeworICBBU3RydWN0IGE7CisKKyAgTWF0Y2hlcjxBU3RydWN0PiBtID0g
RmllbGQoJkFTdHJ1Y3Q6OnosIFRydWx5KFZhbHVlSXNQb3NpdGl2ZSkpOworICBFWFBFQ1RfVFJV
RShtLk1hdGNoZXMoYSkpOworICBtID0gRmllbGQoJkFTdHJ1Y3Q6OnosIE5vdChUcnVseShWYWx1
ZUlzUG9zaXRpdmUpKSk7CisgIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoYSkpOworfQorCisvLyBU
ZXN0cyB0aGF0IEZpZWxkKCZGb286OmZpZWxkLCAuLi4pIHdvcmtzIHdoZW4gZmllbGQgaXMgYSBw
b2ludGVyLgorVEVTVChGaWVsZFRlc3QsIFdvcmtzRm9yUG9pbnRlckZpZWxkKSB7CisgIC8vIE1h
dGNoaW5nIGFnYWluc3QgTlVMTC4KKyAgTWF0Y2hlcjxBU3RydWN0PiBtID0gRmllbGQoJkFTdHJ1
Y3Q6OnAsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihOVUxMKSk7CisgIEFTdHJ1Y3QgYTsKKyAg
RVhQRUNUX1RSVUUobS5NYXRjaGVzKGEpKTsKKyAgYS5wID0gImhpIjsKKyAgRVhQRUNUX0ZBTFNF
KG0uTWF0Y2hlcyhhKSk7CisKKyAgLy8gTWF0Y2hpbmcgYSBwb2ludGVyIHRoYXQgaXMgbm90IE5V
TEwuCisgIG0gPSBGaWVsZCgmQVN0cnVjdDo6cCwgU3RhcnRzV2l0aCgiaGkiKSk7CisgIGEucCA9
ICJoaWxsIjsKKyAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKGEpKTsKKyAgYS5wID0gImhvbGUiOwor
ICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKGEpKTsKK30KKworLy8gVGVzdHMgdGhhdCBGaWVsZCgp
IHdvcmtzIHdoZW4gdGhlIG9iamVjdCBpcyBwYXNzZWQgYnkgcmVmZXJlbmNlLgorVEVTVChGaWVs
ZFRlc3QsIFdvcmtzRm9yQnlSZWZBcmd1bWVudCkgeworICBNYXRjaGVyPGNvbnN0IEFTdHJ1Y3Qm
PiBtID0gRmllbGQoJkFTdHJ1Y3Q6OngsIEdlKDApKTsKKworICBBU3RydWN0IGE7CisgIEVYUEVD
VF9UUlVFKG0uTWF0Y2hlcyhhKSk7CisgIGEueCA9IC0xOworICBFWFBFQ1RfRkFMU0UobS5NYXRj
aGVzKGEpKTsKK30KKworLy8gVGVzdHMgdGhhdCBGaWVsZCgmRm9vOjpmaWVsZCwgLi4uKSB3b3Jr
cyB3aGVuIHRoZSBhcmd1bWVudCdzIHR5cGUKKy8vIGlzIGEgc3ViLXR5cGUgb2YgRm9vLgorVEVT
VChGaWVsZFRlc3QsIFdvcmtzRm9yQXJndW1lbnRPZlN1YlR5cGUpIHsKKyAgLy8gTm90ZSB0aGF0
IHRoZSBtYXRjaGVyIGV4cGVjdHMgRGVyaXZlZFN0cnVjdCBidXQgd2Ugc2F5IEFTdHJ1Y3QKKyAg
Ly8gaW5zaWRlIEZpZWxkKCkuCisgIE1hdGNoZXI8Y29uc3QgRGVyaXZlZFN0cnVjdCY+IG0gPSBG
aWVsZCgmQVN0cnVjdDo6eCwgR2UoMCkpOworCisgIERlcml2ZWRTdHJ1Y3QgZDsKKyAgRVhQRUNU
X1RSVUUobS5NYXRjaGVzKGQpKTsKKyAgZC54ID0gLTE7CisgIEVYUEVDVF9GQUxTRShtLk1hdGNo
ZXMoZCkpOworfQorCisvLyBUZXN0cyB0aGF0IEZpZWxkKCZGb286OmZpZWxkLCBtKSB3b3JrcyB3
aGVuIGZpZWxkJ3MgdHlwZSBhbmQgbSdzCisvLyBhcmd1bWVudCB0eXBlIGFyZSBjb21wYXRpYmxl
IGJ1dCBub3QgdGhlIHNhbWUuCitURVNUKEZpZWxkVGVzdCwgV29ya3NGb3JDb21wYXRpYmxlTWF0
Y2hlclR5cGUpIHsKKyAgLy8gVGhlIGZpZWxkIGlzIGFuIGludCwgYnV0IHRoZSBpbm5lciBtYXRj
aGVyIGV4cGVjdHMgYSBzaWduZWQgY2hhci4KKyAgTWF0Y2hlcjxjb25zdCBBU3RydWN0Jj4gbSA9
IEZpZWxkKCZBU3RydWN0Ojp4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TWF0Y2hlcjxzaWduZWQgY2hhcj4oR2UoMCkpKTsKKworICBBU3RydWN0IGE7CisgIEVYUEVDVF9U
UlVFKG0uTWF0Y2hlcyhhKSk7CisgIGEueCA9IC0xOworICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVz
KGEpKTsKK30KKworLy8gVGVzdHMgdGhhdCBGaWVsZCgpIGNhbiBkZXNjcmliZSBpdHNlbGYuCitU
RVNUKEZpZWxkVGVzdCwgQ2FuRGVzY3JpYmVTZWxmKSB7CisgIE1hdGNoZXI8Y29uc3QgQVN0cnVj
dCY+IG0gPSBGaWVsZCgmQVN0cnVjdDo6eCwgR2UoMCkpOworCisgIEVYUEVDVF9FUSgiaXMgYW4g
b2JqZWN0IHdob3NlIGdpdmVuIGZpZWxkIGlzID49IDAiLCBEZXNjcmliZShtKSk7CisgIEVYUEVD
VF9FUSgiaXMgYW4gb2JqZWN0IHdob3NlIGdpdmVuIGZpZWxkIGlzbid0ID49IDAiLCBEZXNjcmli
ZU5lZ2F0aW9uKG0pKTsKK30KKworLy8gVGVzdHMgdGhhdCBGaWVsZCgpIGNhbiBleHBsYWluIHRo
ZSBtYXRjaCByZXN1bHQuCitURVNUKEZpZWxkVGVzdCwgQ2FuRXhwbGFpbk1hdGNoUmVzdWx0KSB7
CisgIE1hdGNoZXI8Y29uc3QgQVN0cnVjdCY+IG0gPSBGaWVsZCgmQVN0cnVjdDo6eCwgR2UoMCkp
OworCisgIEFTdHJ1Y3QgYTsKKyAgYS54ID0gMTsKKyAgRVhQRUNUX0VRKCJ3aG9zZSBnaXZlbiBm
aWVsZCBpcyAxIiArIE9mVHlwZSgiaW50IiksIEV4cGxhaW4obSwgYSkpOworCisgIG0gPSBGaWVs
ZCgmQVN0cnVjdDo6eCwgR3JlYXRlclRoYW4oMCkpOworICBFWFBFQ1RfRVEoCisgICAgICAid2hv
c2UgZ2l2ZW4gZmllbGQgaXMgMSIgKyBPZlR5cGUoImludCIpICsgIiwgd2hpY2ggaXMgMSBtb3Jl
IHRoYW4gMCIsCisgICAgICBFeHBsYWluKG0sIGEpKTsKK30KKworLy8gVGVzdHMgdGhhdCBGaWVs
ZCgpIHdvcmtzIHdoZW4gdGhlIGFyZ3VtZW50IGlzIGEgcG9pbnRlciB0byBjb25zdC4KK1RFU1Qo
RmllbGRGb3JQb2ludGVyVGVzdCwgV29ya3NGb3JQb2ludGVyVG9Db25zdCkgeworICBNYXRjaGVy
PGNvbnN0IEFTdHJ1Y3QqPiBtID0gRmllbGQoJkFTdHJ1Y3Q6OngsIEdlKDApKTsKKworICBBU3Ry
dWN0IGE7CisgIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcygmYSkpOworICBhLnggPSAtMTsKKyAgRVhQ
RUNUX0ZBTFNFKG0uTWF0Y2hlcygmYSkpOworfQorCisvLyBUZXN0cyB0aGF0IEZpZWxkKCkgd29y
a3Mgd2hlbiB0aGUgYXJndW1lbnQgaXMgYSBwb2ludGVyIHRvIG5vbi1jb25zdC4KK1RFU1QoRmll
bGRGb3JQb2ludGVyVGVzdCwgV29ya3NGb3JQb2ludGVyVG9Ob25Db25zdCkgeworICBNYXRjaGVy
PEFTdHJ1Y3QqPiBtID0gRmllbGQoJkFTdHJ1Y3Q6OngsIEdlKDApKTsKKworICBBU3RydWN0IGE7
CisgIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcygmYSkpOworICBhLnggPSAtMTsKKyAgRVhQRUNUX0ZB
TFNFKG0uTWF0Y2hlcygmYSkpOworfQorCisvLyBUZXN0cyB0aGF0IEZpZWxkKCkgd29ya3Mgd2hl
biB0aGUgYXJndW1lbnQgaXMgYSByZWZlcmVuY2UgdG8gYSBjb25zdCBwb2ludGVyLgorVEVTVChG
aWVsZEZvclBvaW50ZXJUZXN0LCBXb3Jrc0ZvclJlZmVyZW5jZVRvQ29uc3RQb2ludGVyKSB7Cisg
IE1hdGNoZXI8QVN0cnVjdCogY29uc3QmPiBtID0gRmllbGQoJkFTdHJ1Y3Q6OngsIEdlKDApKTsK
KworICBBU3RydWN0IGE7CisgIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcygmYSkpOworICBhLnggPSAt
MTsKKyAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcygmYSkpOworfQorCisvLyBUZXN0cyB0aGF0IEZp
ZWxkKCkgZG9lcyBub3QgbWF0Y2ggdGhlIE5VTEwgcG9pbnRlci4KK1RFU1QoRmllbGRGb3JQb2lu
dGVyVGVzdCwgRG9lc05vdE1hdGNoTnVsbCkgeworICBNYXRjaGVyPGNvbnN0IEFTdHJ1Y3QqPiBt
ID0gRmllbGQoJkFTdHJ1Y3Q6OngsIF8pOworICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKE5VTEwp
KTsKK30KKworLy8gVGVzdHMgdGhhdCBGaWVsZCgmRm9vOjpmaWVsZCwgLi4uKSB3b3JrcyB3aGVu
IHRoZSBhcmd1bWVudCdzIHR5cGUKKy8vIGlzIGEgc3ViLXR5cGUgb2YgY29uc3QgRm9vKi4KK1RF
U1QoRmllbGRGb3JQb2ludGVyVGVzdCwgV29ya3NGb3JBcmd1bWVudE9mU3ViVHlwZSkgeworICAv
LyBOb3RlIHRoYXQgdGhlIG1hdGNoZXIgZXhwZWN0cyBEZXJpdmVkU3RydWN0IGJ1dCB3ZSBzYXkg
QVN0cnVjdAorICAvLyBpbnNpZGUgRmllbGQoKS4KKyAgTWF0Y2hlcjxEZXJpdmVkU3RydWN0Kj4g
bSA9IEZpZWxkKCZBU3RydWN0Ojp4LCBHZSgwKSk7CisKKyAgRGVyaXZlZFN0cnVjdCBkOworICBF
WFBFQ1RfVFJVRShtLk1hdGNoZXMoJmQpKTsKKyAgZC54ID0gLTE7CisgIEVYUEVDVF9GQUxTRSht
Lk1hdGNoZXMoJmQpKTsKK30KKworLy8gVGVzdHMgdGhhdCBGaWVsZCgpIGNhbiBkZXNjcmliZSBp
dHNlbGYgd2hlbiB1c2VkIHRvIG1hdGNoIGEgcG9pbnRlci4KK1RFU1QoRmllbGRGb3JQb2ludGVy
VGVzdCwgQ2FuRGVzY3JpYmVTZWxmKSB7CisgIE1hdGNoZXI8Y29uc3QgQVN0cnVjdCo+IG0gPSBG
aWVsZCgmQVN0cnVjdDo6eCwgR2UoMCkpOworCisgIEVYUEVDVF9FUSgiaXMgYW4gb2JqZWN0IHdo
b3NlIGdpdmVuIGZpZWxkIGlzID49IDAiLCBEZXNjcmliZShtKSk7CisgIEVYUEVDVF9FUSgiaXMg
YW4gb2JqZWN0IHdob3NlIGdpdmVuIGZpZWxkIGlzbid0ID49IDAiLCBEZXNjcmliZU5lZ2F0aW9u
KG0pKTsKK30KKworLy8gVGVzdHMgdGhhdCBGaWVsZCgpIGNhbiBleHBsYWluIHRoZSByZXN1bHQg
b2YgbWF0Y2hpbmcgYSBwb2ludGVyLgorVEVTVChGaWVsZEZvclBvaW50ZXJUZXN0LCBDYW5FeHBs
YWluTWF0Y2hSZXN1bHQpIHsKKyAgTWF0Y2hlcjxjb25zdCBBU3RydWN0Kj4gbSA9IEZpZWxkKCZB
U3RydWN0Ojp4LCBHZSgwKSk7CisKKyAgQVN0cnVjdCBhOworICBhLnggPSAxOworICBFWFBFQ1Rf
RVEoIiIsIEV4cGxhaW4obSwgc3RhdGljX2Nhc3Q8Y29uc3QgQVN0cnVjdCo+KE5VTEwpKSk7Cisg
IEVYUEVDVF9FUSgid2hpY2ggcG9pbnRzIHRvIGFuIG9iamVjdCB3aG9zZSBnaXZlbiBmaWVsZCBp
cyAxIiArIE9mVHlwZSgiaW50IiksCisgICAgICAgICAgICBFeHBsYWluKG0sICZhKSk7CisKKyAg
bSA9IEZpZWxkKCZBU3RydWN0Ojp4LCBHcmVhdGVyVGhhbigwKSk7CisgIEVYUEVDVF9FUSgid2hp
Y2ggcG9pbnRzIHRvIGFuIG9iamVjdCB3aG9zZSBnaXZlbiBmaWVsZCBpcyAxIiArIE9mVHlwZSgi
aW50IikgKworICAgICAgICAgICAgIiwgd2hpY2ggaXMgMSBtb3JlIHRoYW4gMCIsIEV4cGxhaW4o
bSwgJmEpKTsKK30KKworLy8gQSB1c2VyLWRlZmluZWQgY2xhc3MgZm9yIHRlc3RpbmcgUHJvcGVy
dHkoKS4KK2NsYXNzIEFDbGFzcyB7CisgcHVibGljOgorICBBQ2xhc3MoKSA6IG5fKDApIHt9CisK
KyAgLy8gQSBnZXR0ZXIgdGhhdCByZXR1cm5zIGEgbm9uLXJlZmVyZW5jZS4KKyAgaW50IG4oKSBj
b25zdCB7IHJldHVybiBuXzsgfQorCisgIHZvaWQgc2V0X24oaW50IG5ld19uKSB7IG5fID0gbmV3
X247IH0KKworICAvLyBBIGdldHRlciB0aGF0IHJldHVybnMgYSByZWZlcmVuY2UgdG8gY29uc3Qu
CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzKCkgY29uc3QgeyByZXR1cm4gc187IH0KKworICB2b2lk
IHNldF9zKGNvbnN0IHN0ZDo6c3RyaW5nJiBuZXdfcykgeyBzXyA9IG5ld19zOyB9CisKKyAgLy8g
QSBnZXR0ZXIgdGhhdCByZXR1cm5zIGEgcmVmZXJlbmNlIHRvIG5vbi1jb25zdC4KKyAgZG91Ymxl
JiB4KCkgY29uc3QgeyByZXR1cm4geF87IH0KKyBwcml2YXRlOgorICBpbnQgbl87CisgIHN0ZDo6
c3RyaW5nIHNfOworCisgIHN0YXRpYyBkb3VibGUgeF87Cit9OworCitkb3VibGUgQUNsYXNzOjp4
XyA9IDAuMDsKKworLy8gQSBkZXJpdmVkIGNsYXNzIGZvciB0ZXN0aW5nIFByb3BlcnR5KCkuCitj
bGFzcyBEZXJpdmVkQ2xhc3MgOiBwdWJsaWMgQUNsYXNzIHsKKyBwdWJsaWM6CisgIGludCBrKCkg
Y29uc3QgeyByZXR1cm4ga187IH0KKyBwcml2YXRlOgorICBpbnQga187Cit9OworCisvLyBUZXN0
cyB0aGF0IFByb3BlcnR5KCZGb286OnByb3BlcnR5LCAuLi4pIHdvcmtzIHdoZW4gcHJvcGVydHko
KQorLy8gcmV0dXJucyBhIG5vbi1yZWZlcmVuY2UuCitURVNUKFByb3BlcnR5VGVzdCwgV29ya3NG
b3JOb25SZWZlcmVuY2VQcm9wZXJ0eSkgeworICBNYXRjaGVyPGNvbnN0IEFDbGFzcyY+IG0gPSBQ
cm9wZXJ0eSgmQUNsYXNzOjpuLCBHZSgwKSk7CisKKyAgQUNsYXNzIGE7CisgIGEuc2V0X24oMSk7
CisgIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhhKSk7CisKKyAgYS5zZXRfbigtMSk7CisgIEVYUEVD
VF9GQUxTRShtLk1hdGNoZXMoYSkpOworfQorCisvLyBUZXN0cyB0aGF0IFByb3BlcnR5KCZGb286
OnByb3BlcnR5LCAuLi4pIHdvcmtzIHdoZW4gcHJvcGVydHkoKQorLy8gcmV0dXJucyBhIHJlZmVy
ZW5jZSB0byBjb25zdC4KK1RFU1QoUHJvcGVydHlUZXN0LCBXb3Jrc0ZvclJlZmVyZW5jZVRvQ29u
c3RQcm9wZXJ0eSkgeworICBNYXRjaGVyPGNvbnN0IEFDbGFzcyY+IG0gPSBQcm9wZXJ0eSgmQUNs
YXNzOjpzLCBTdGFydHNXaXRoKCJoaSIpKTsKKworICBBQ2xhc3MgYTsKKyAgYS5zZXRfcygiaGls
bCIpOworICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoYSkpOworCisgIGEuc2V0X3MoImhvbGUiKTsK
KyAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhhKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgUHJvcGVy
dHkoJkZvbzo6cHJvcGVydHksIC4uLikgd29ya3Mgd2hlbiBwcm9wZXJ0eSgpCisvLyByZXR1cm5z
IGEgcmVmZXJlbmNlIHRvIG5vbi1jb25zdC4KK1RFU1QoUHJvcGVydHlUZXN0LCBXb3Jrc0ZvclJl
ZmVyZW5jZVRvTm9uQ29uc3RQcm9wZXJ0eSkgeworICBkb3VibGUgeCA9IDAuMDsKKyAgQUNsYXNz
IGE7CisKKyAgTWF0Y2hlcjxjb25zdCBBQ2xhc3MmPiBtID0gUHJvcGVydHkoJkFDbGFzczo6eCwg
UmVmKHgpKTsKKyAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhhKSk7CisKKyAgbSA9IFByb3BlcnR5
KCZBQ2xhc3M6OngsIE5vdChSZWYoeCkpKTsKKyAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKGEpKTsK
K30KKworLy8gVGVzdHMgdGhhdCBQcm9wZXJ0eSgmRm9vOjpwcm9wZXJ0eSwgLi4uKSB3b3JrcyB3
aGVuIHRoZSBhcmd1bWVudCBpcworLy8gcGFzc2VkIGJ5IHZhbHVlLgorVEVTVChQcm9wZXJ0eVRl
c3QsIFdvcmtzRm9yQnlWYWx1ZUFyZ3VtZW50KSB7CisgIE1hdGNoZXI8QUNsYXNzPiBtID0gUHJv
cGVydHkoJkFDbGFzczo6cywgU3RhcnRzV2l0aCgiaGkiKSk7CisKKyAgQUNsYXNzIGE7CisgIGEu
c2V0X3MoImhpbGwiKTsKKyAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKGEpKTsKKworICBhLnNldF9z
KCJob2xlIik7CisgIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoYSkpOworfQorCisvLyBUZXN0cyB0
aGF0IFByb3BlcnR5KCZGb286OnByb3BlcnR5LCAuLi4pIHdvcmtzIHdoZW4gdGhlIGFyZ3VtZW50
J3MKKy8vIHR5cGUgaXMgYSBzdWItdHlwZSBvZiBGb28uCitURVNUKFByb3BlcnR5VGVzdCwgV29y
a3NGb3JBcmd1bWVudE9mU3ViVHlwZSkgeworICAvLyBUaGUgbWF0Y2hlciBleHBlY3RzIGEgRGVy
aXZlZENsYXNzLCBidXQgaW5zaWRlIHRoZSBQcm9wZXJ0eSgpIHdlCisgIC8vIHNheSBBQ2xhc3Mu
CisgIE1hdGNoZXI8Y29uc3QgRGVyaXZlZENsYXNzJj4gbSA9IFByb3BlcnR5KCZBQ2xhc3M6Om4s
IEdlKDApKTsKKworICBEZXJpdmVkQ2xhc3MgZDsKKyAgZC5zZXRfbigxKTsKKyAgRVhQRUNUX1RS
VUUobS5NYXRjaGVzKGQpKTsKKworICBkLnNldF9uKC0xKTsKKyAgRVhQRUNUX0ZBTFNFKG0uTWF0
Y2hlcyhkKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgUHJvcGVydHkoJkZvbzo6cHJvcGVydHksIG0p
IHdvcmtzIHdoZW4gcHJvcGVydHkoKSdzIHR5cGUKKy8vIGFuZCBtJ3MgYXJndW1lbnQgdHlwZSBh
cmUgY29tcGF0aWJsZSBidXQgZGlmZmVyZW50LgorVEVTVChQcm9wZXJ0eVRlc3QsIFdvcmtzRm9y
Q29tcGF0aWJsZU1hdGNoZXJUeXBlKSB7CisgIC8vIG4oKSByZXR1cm5zIGFuIGludCBidXQgdGhl
IGlubmVyIG1hdGNoZXIgZXhwZWN0cyBhIHNpZ25lZCBjaGFyLgorICBNYXRjaGVyPGNvbnN0IEFD
bGFzcyY+IG0gPSBQcm9wZXJ0eSgmQUNsYXNzOjpuLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBNYXRjaGVyPHNpZ25lZCBjaGFyPihHZSgwKSkpOworCisgIEFDbGFzcyBh
OworICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoYSkpOworICBhLnNldF9uKC0xKTsKKyAgRVhQRUNU
X0ZBTFNFKG0uTWF0Y2hlcyhhKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgUHJvcGVydHkoKSBjYW4g
ZGVzY3JpYmUgaXRzZWxmLgorVEVTVChQcm9wZXJ0eVRlc3QsIENhbkRlc2NyaWJlU2VsZikgewor
ICBNYXRjaGVyPGNvbnN0IEFDbGFzcyY+IG0gPSBQcm9wZXJ0eSgmQUNsYXNzOjpuLCBHZSgwKSk7
CisKKyAgRVhQRUNUX0VRKCJpcyBhbiBvYmplY3Qgd2hvc2UgZ2l2ZW4gcHJvcGVydHkgaXMgPj0g
MCIsIERlc2NyaWJlKG0pKTsKKyAgRVhQRUNUX0VRKCJpcyBhbiBvYmplY3Qgd2hvc2UgZ2l2ZW4g
cHJvcGVydHkgaXNuJ3QgPj0gMCIsCisgICAgICAgICAgICBEZXNjcmliZU5lZ2F0aW9uKG0pKTsK
K30KKworLy8gVGVzdHMgdGhhdCBQcm9wZXJ0eSgpIGNhbiBleHBsYWluIHRoZSBtYXRjaCByZXN1
bHQuCitURVNUKFByb3BlcnR5VGVzdCwgQ2FuRXhwbGFpbk1hdGNoUmVzdWx0KSB7CisgIE1hdGNo
ZXI8Y29uc3QgQUNsYXNzJj4gbSA9IFByb3BlcnR5KCZBQ2xhc3M6Om4sIEdlKDApKTsKKworICBB
Q2xhc3MgYTsKKyAgYS5zZXRfbigxKTsKKyAgRVhQRUNUX0VRKCJ3aG9zZSBnaXZlbiBwcm9wZXJ0
eSBpcyAxIiArIE9mVHlwZSgiaW50IiksIEV4cGxhaW4obSwgYSkpOworCisgIG0gPSBQcm9wZXJ0
eSgmQUNsYXNzOjpuLCBHcmVhdGVyVGhhbigwKSk7CisgIEVYUEVDVF9FUSgKKyAgICAgICJ3aG9z
ZSBnaXZlbiBwcm9wZXJ0eSBpcyAxIiArIE9mVHlwZSgiaW50IikgKyAiLCB3aGljaCBpcyAxIG1v
cmUgdGhhbiAwIiwKKyAgICAgIEV4cGxhaW4obSwgYSkpOworfQorCisvLyBUZXN0cyB0aGF0IFBy
b3BlcnR5KCkgd29ya3Mgd2hlbiB0aGUgYXJndW1lbnQgaXMgYSBwb2ludGVyIHRvIGNvbnN0Lgor
VEVTVChQcm9wZXJ0eUZvclBvaW50ZXJUZXN0LCBXb3Jrc0ZvclBvaW50ZXJUb0NvbnN0KSB7Cisg
IE1hdGNoZXI8Y29uc3QgQUNsYXNzKj4gbSA9IFByb3BlcnR5KCZBQ2xhc3M6Om4sIEdlKDApKTsK
KworICBBQ2xhc3MgYTsKKyAgYS5zZXRfbigxKTsKKyAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKCZh
KSk7CisKKyAgYS5zZXRfbigtMSk7CisgIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoJmEpKTsKK30K
KworLy8gVGVzdHMgdGhhdCBQcm9wZXJ0eSgpIHdvcmtzIHdoZW4gdGhlIGFyZ3VtZW50IGlzIGEg
cG9pbnRlciB0byBub24tY29uc3QuCitURVNUKFByb3BlcnR5Rm9yUG9pbnRlclRlc3QsIFdvcmtz
Rm9yUG9pbnRlclRvTm9uQ29uc3QpIHsKKyAgTWF0Y2hlcjxBQ2xhc3MqPiBtID0gUHJvcGVydHko
JkFDbGFzczo6cywgU3RhcnRzV2l0aCgiaGkiKSk7CisKKyAgQUNsYXNzIGE7CisgIGEuc2V0X3Mo
ImhpbGwiKTsKKyAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKCZhKSk7CisKKyAgYS5zZXRfcygiaG9s
ZSIpOworICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKCZhKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQg
UHJvcGVydHkoKSB3b3JrcyB3aGVuIHRoZSBhcmd1bWVudCBpcyBhIHJlZmVyZW5jZSB0byBhCisv
LyBjb25zdCBwb2ludGVyLgorVEVTVChQcm9wZXJ0eUZvclBvaW50ZXJUZXN0LCBXb3Jrc0ZvclJl
ZmVyZW5jZVRvQ29uc3RQb2ludGVyKSB7CisgIE1hdGNoZXI8QUNsYXNzKiBjb25zdCY+IG0gPSBQ
cm9wZXJ0eSgmQUNsYXNzOjpzLCBTdGFydHNXaXRoKCJoaSIpKTsKKworICBBQ2xhc3MgYTsKKyAg
YS5zZXRfcygiaGlsbCIpOworICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoJmEpKTsKKworICBhLnNl
dF9zKCJob2xlIik7CisgIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoJmEpKTsKK30KKworLy8gVGVz
dHMgdGhhdCBQcm9wZXJ0eSgpIGRvZXMgbm90IG1hdGNoIHRoZSBOVUxMIHBvaW50ZXIuCitURVNU
KFByb3BlcnR5Rm9yUG9pbnRlclRlc3QsIFdvcmtzRm9yUmVmZXJlbmNlVG9Ob25Db25zdFByb3Bl
cnR5KSB7CisgIE1hdGNoZXI8Y29uc3QgQUNsYXNzKj4gbSA9IFByb3BlcnR5KCZBQ2xhc3M6Ongs
IF8pOworICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKE5VTEwpKTsKK30KKworLy8gVGVzdHMgdGhh
dCBQcm9wZXJ0eSgmRm9vOjpwcm9wZXJ0eSwgLi4uKSB3b3JrcyB3aGVuIHRoZSBhcmd1bWVudCdz
CisvLyB0eXBlIGlzIGEgc3ViLXR5cGUgb2YgY29uc3QgRm9vKi4KK1RFU1QoUHJvcGVydHlGb3JQ
b2ludGVyVGVzdCwgV29ya3NGb3JBcmd1bWVudE9mU3ViVHlwZSkgeworICAvLyBUaGUgbWF0Y2hl
ciBleHBlY3RzIGEgRGVyaXZlZENsYXNzLCBidXQgaW5zaWRlIHRoZSBQcm9wZXJ0eSgpIHdlCisg
IC8vIHNheSBBQ2xhc3MuCisgIE1hdGNoZXI8Y29uc3QgRGVyaXZlZENsYXNzKj4gbSA9IFByb3Bl
cnR5KCZBQ2xhc3M6Om4sIEdlKDApKTsKKworICBEZXJpdmVkQ2xhc3MgZDsKKyAgZC5zZXRfbigx
KTsKKyAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKCZkKSk7CisKKyAgZC5zZXRfbigtMSk7CisgIEVY
UEVDVF9GQUxTRShtLk1hdGNoZXMoJmQpKTsKK30KKworLy8gVGVzdHMgdGhhdCBQcm9wZXJ0eSgp
IGNhbiBkZXNjcmliZSBpdHNlbGYgd2hlbiB1c2VkIHRvIG1hdGNoIGEgcG9pbnRlci4KK1RFU1Qo
UHJvcGVydHlGb3JQb2ludGVyVGVzdCwgQ2FuRGVzY3JpYmVTZWxmKSB7CisgIE1hdGNoZXI8Y29u
c3QgQUNsYXNzKj4gbSA9IFByb3BlcnR5KCZBQ2xhc3M6Om4sIEdlKDApKTsKKworICBFWFBFQ1Rf
RVEoImlzIGFuIG9iamVjdCB3aG9zZSBnaXZlbiBwcm9wZXJ0eSBpcyA+PSAwIiwgRGVzY3JpYmUo
bSkpOworICBFWFBFQ1RfRVEoImlzIGFuIG9iamVjdCB3aG9zZSBnaXZlbiBwcm9wZXJ0eSBpc24n
dCA+PSAwIiwKKyAgICAgICAgICAgIERlc2NyaWJlTmVnYXRpb24obSkpOworfQorCisvLyBUZXN0
cyB0aGF0IFByb3BlcnR5KCkgY2FuIGV4cGxhaW4gdGhlIHJlc3VsdCBvZiBtYXRjaGluZyBhIHBv
aW50ZXIuCitURVNUKFByb3BlcnR5Rm9yUG9pbnRlclRlc3QsIENhbkV4cGxhaW5NYXRjaFJlc3Vs
dCkgeworICBNYXRjaGVyPGNvbnN0IEFDbGFzcyo+IG0gPSBQcm9wZXJ0eSgmQUNsYXNzOjpuLCBH
ZSgwKSk7CisKKyAgQUNsYXNzIGE7CisgIGEuc2V0X24oMSk7CisgIEVYUEVDVF9FUSgiIiwgRXhw
bGFpbihtLCBzdGF0aWNfY2FzdDxjb25zdCBBQ2xhc3MqPihOVUxMKSkpOworICBFWFBFQ1RfRVEo
CisgICAgICAid2hpY2ggcG9pbnRzIHRvIGFuIG9iamVjdCB3aG9zZSBnaXZlbiBwcm9wZXJ0eSBp
cyAxIiArIE9mVHlwZSgiaW50IiksCisgICAgICBFeHBsYWluKG0sICZhKSk7CisKKyAgbSA9IFBy
b3BlcnR5KCZBQ2xhc3M6Om4sIEdyZWF0ZXJUaGFuKDApKTsKKyAgRVhQRUNUX0VRKCJ3aGljaCBw
b2ludHMgdG8gYW4gb2JqZWN0IHdob3NlIGdpdmVuIHByb3BlcnR5IGlzIDEiICsKKyAgICAgICAg
ICAgIE9mVHlwZSgiaW50IikgKyAiLCB3aGljaCBpcyAxIG1vcmUgdGhhbiAwIiwKKyAgICAgICAg
ICAgIEV4cGxhaW4obSwgJmEpKTsKK30KKworLy8gVGVzdHMgUmVzdWx0T2YuCisKKy8vIFRlc3Rz
IHRoYXQgUmVzdWx0T2YoZiwgLi4uKSBjb21waWxlcyBhbmQgd29ya3MgYXMgZXhwZWN0ZWQgd2hl
biBmIGlzIGEKKy8vIGZ1bmN0aW9uIHBvaW50ZXIuCitzdGQ6OnN0cmluZyBJbnRUb1N0cmluZ0Z1
bmN0aW9uKGludCBpbnB1dCkgeworICByZXR1cm4gaW5wdXQgPT0gMSA/ICJmb28iIDogImJhciI7
Cit9CisKK1RFU1QoUmVzdWx0T2ZUZXN0LCBXb3Jrc0ZvckZ1bmN0aW9uUG9pbnRlcnMpIHsKKyAg
TWF0Y2hlcjxpbnQ+IG1hdGNoZXIgPSBSZXN1bHRPZigmSW50VG9TdHJpbmdGdW5jdGlvbiwgRXEo
c3RkOjpzdHJpbmcoImZvbyIpKSk7CisKKyAgRVhQRUNUX1RSVUUobWF0Y2hlci5NYXRjaGVzKDEp
KTsKKyAgRVhQRUNUX0ZBTFNFKG1hdGNoZXIuTWF0Y2hlcygyKSk7Cit9CisKKy8vIFRlc3RzIHRo
YXQgUmVzdWx0T2YoKSBjYW4gZGVzY3JpYmUgaXRzZWxmLgorVEVTVChSZXN1bHRPZlRlc3QsIENh
bkRlc2NyaWJlSXRzZWxmKSB7CisgIE1hdGNoZXI8aW50PiBtYXRjaGVyID0gUmVzdWx0T2YoJklu
dFRvU3RyaW5nRnVuY3Rpb24sIFN0ckVxKCJmb28iKSk7CisKKyAgRVhQRUNUX0VRKCJpcyBtYXBw
ZWQgYnkgdGhlIGdpdmVuIGNhbGxhYmxlIHRvIGEgdmFsdWUgdGhhdCAiCisgICAgICAgICAgICAi
aXMgZXF1YWwgdG8gXCJmb29cIiIsIERlc2NyaWJlKG1hdGNoZXIpKTsKKyAgRVhQRUNUX0VRKCJp
cyBtYXBwZWQgYnkgdGhlIGdpdmVuIGNhbGxhYmxlIHRvIGEgdmFsdWUgdGhhdCAiCisgICAgICAg
ICAgICAiaXNuJ3QgZXF1YWwgdG8gXCJmb29cIiIsIERlc2NyaWJlTmVnYXRpb24obWF0Y2hlcikp
OworfQorCisvLyBUZXN0cyB0aGF0IFJlc3VsdE9mKCkgY2FuIGV4cGxhaW4gdGhlIG1hdGNoIHJl
c3VsdC4KK2ludCBJbnRGdW5jdGlvbihpbnQgaW5wdXQpIHsgcmV0dXJuIGlucHV0ID09IDQyID8g
ODAgOiA5MDsgfQorCitURVNUKFJlc3VsdE9mVGVzdCwgQ2FuRXhwbGFpbk1hdGNoUmVzdWx0KSB7
CisgIE1hdGNoZXI8aW50PiBtYXRjaGVyID0gUmVzdWx0T2YoJkludEZ1bmN0aW9uLCBHZSg4NSkp
OworICBFWFBFQ1RfRVEoIndoaWNoIGlzIG1hcHBlZCBieSB0aGUgZ2l2ZW4gY2FsbGFibGUgdG8g
OTAiICsgT2ZUeXBlKCJpbnQiKSwKKyAgICAgICAgICAgIEV4cGxhaW4obWF0Y2hlciwgMzYpKTsK
KworICBtYXRjaGVyID0gUmVzdWx0T2YoJkludEZ1bmN0aW9uLCBHcmVhdGVyVGhhbig4NSkpOwor
ICBFWFBFQ1RfRVEoIndoaWNoIGlzIG1hcHBlZCBieSB0aGUgZ2l2ZW4gY2FsbGFibGUgdG8gOTAi
ICsgT2ZUeXBlKCJpbnQiKSArCisgICAgICAgICAgICAiLCB3aGljaCBpcyA1IG1vcmUgdGhhbiA4
NSIsIEV4cGxhaW4obWF0Y2hlciwgMzYpKTsKK30KKworLy8gVGVzdHMgdGhhdCBSZXN1bHRPZihm
LCAuLi4pIGNvbXBpbGVzIGFuZCB3b3JrcyBhcyBleHBlY3RlZCB3aGVuIGYoeCkKKy8vIHJldHVy
bnMgYSBub24tcmVmZXJlbmNlLgorVEVTVChSZXN1bHRPZlRlc3QsIFdvcmtzRm9yTm9uUmVmZXJl
bmNlUmVzdWx0cykgeworICBNYXRjaGVyPGludD4gbWF0Y2hlciA9IFJlc3VsdE9mKCZJbnRGdW5j
dGlvbiwgRXEoODApKTsKKworICBFWFBFQ1RfVFJVRShtYXRjaGVyLk1hdGNoZXMoNDIpKTsKKyAg
RVhQRUNUX0ZBTFNFKG1hdGNoZXIuTWF0Y2hlcygzNikpOworfQorCisvLyBUZXN0cyB0aGF0IFJl
c3VsdE9mKGYsIC4uLikgY29tcGlsZXMgYW5kIHdvcmtzIGFzIGV4cGVjdGVkIHdoZW4gZih4KQor
Ly8gcmV0dXJucyBhIHJlZmVyZW5jZSB0byBub24tY29uc3QuCitkb3VibGUmIERvdWJsZUZ1bmN0
aW9uKGRvdWJsZSYgaW5wdXQpIHsgcmV0dXJuIGlucHV0OyB9ICAvLyBOT0xJTlQKKworVW5jb3B5
YWJsZSYgUmVmVW5jb3B5YWJsZUZ1bmN0aW9uKFVuY29weWFibGUmIG9iaikgeyAgLy8gTk9MSU5U
CisgIHJldHVybiBvYmo7Cit9CisKK1RFU1QoUmVzdWx0T2ZUZXN0LCBXb3Jrc0ZvclJlZmVyZW5j
ZVRvTm9uQ29uc3RSZXN1bHRzKSB7CisgIGRvdWJsZSB4ID0gMy4xNDsKKyAgZG91YmxlIHgyID0g
eDsKKyAgTWF0Y2hlcjxkb3VibGUmPiBtYXRjaGVyID0gUmVzdWx0T2YoJkRvdWJsZUZ1bmN0aW9u
LCBSZWYoeCkpOworCisgIEVYUEVDVF9UUlVFKG1hdGNoZXIuTWF0Y2hlcyh4KSk7CisgIEVYUEVD
VF9GQUxTRShtYXRjaGVyLk1hdGNoZXMoeDIpKTsKKworICAvLyBUZXN0IHRoYXQgUmVzdWx0T2Yg
d29ya3Mgd2l0aCB1bmNvcHlhYmxlIG9iamVjdHMKKyAgVW5jb3B5YWJsZSBvYmooMCk7CisgIFVu
Y29weWFibGUgb2JqMigwKTsKKyAgTWF0Y2hlcjxVbmNvcHlhYmxlJj4gbWF0Y2hlcjIgPQorICAg
ICAgUmVzdWx0T2YoJlJlZlVuY29weWFibGVGdW5jdGlvbiwgUmVmKG9iaikpOworCisgIEVYUEVD
VF9UUlVFKG1hdGNoZXIyLk1hdGNoZXMob2JqKSk7CisgIEVYUEVDVF9GQUxTRShtYXRjaGVyMi5N
YXRjaGVzKG9iajIpKTsKK30KKworLy8gVGVzdHMgdGhhdCBSZXN1bHRPZihmLCAuLi4pIGNvbXBp
bGVzIGFuZCB3b3JrcyBhcyBleHBlY3RlZCB3aGVuIGYoeCkKKy8vIHJldHVybnMgYSByZWZlcmVu
Y2UgdG8gY29uc3QuCitjb25zdCBzdGQ6OnN0cmluZyYgU3RyaW5nRnVuY3Rpb24oY29uc3Qgc3Rk
OjpzdHJpbmcmIGlucHV0KSB7IHJldHVybiBpbnB1dDsgfQorCitURVNUKFJlc3VsdE9mVGVzdCwg
V29ya3NGb3JSZWZlcmVuY2VUb0NvbnN0UmVzdWx0cykgeworICBzdGQ6OnN0cmluZyBzID0gImZv
byI7CisgIHN0ZDo6c3RyaW5nIHMyID0gczsKKyAgTWF0Y2hlcjxjb25zdCBzdGQ6OnN0cmluZyY+
IG1hdGNoZXIgPSBSZXN1bHRPZigmU3RyaW5nRnVuY3Rpb24sIFJlZihzKSk7CisKKyAgRVhQRUNU
X1RSVUUobWF0Y2hlci5NYXRjaGVzKHMpKTsKKyAgRVhQRUNUX0ZBTFNFKG1hdGNoZXIuTWF0Y2hl
cyhzMikpOworfQorCisvLyBUZXN0cyB0aGF0IFJlc3VsdE9mKGYsIG0pIHdvcmtzIHdoZW4gZih4
KSBhbmQgbSdzCisvLyBhcmd1bWVudCB0eXBlcyBhcmUgY29tcGF0aWJsZSBidXQgZGlmZmVyZW50
LgorVEVTVChSZXN1bHRPZlRlc3QsIFdvcmtzRm9yQ29tcGF0aWJsZU1hdGNoZXJUeXBlcykgewor
ICAvLyBJbnRGdW5jdGlvbigpIHJldHVybnMgaW50IGJ1dCB0aGUgaW5uZXIgbWF0Y2hlciBleHBl
Y3RzIGEgc2lnbmVkIGNoYXIuCisgIE1hdGNoZXI8aW50PiBtYXRjaGVyID0gUmVzdWx0T2YoSW50
RnVuY3Rpb24sIE1hdGNoZXI8c2lnbmVkIGNoYXI+KEdlKDg1KSkpOworCisgIEVYUEVDVF9UUlVF
KG1hdGNoZXIuTWF0Y2hlcygzNikpOworICBFWFBFQ1RfRkFMU0UobWF0Y2hlci5NYXRjaGVzKDQy
KSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgdGhlIHByb2dyYW0gYWJvcnRzIHdoZW4gUmVzdWx0T2Yg
aXMgcGFzc2VkCisvLyBhIE5VTEwgZnVuY3Rpb24gcG9pbnRlci4KK1RFU1QoUmVzdWx0T2ZEZWF0
aFRlc3QsIERpZXNPbk51bGxGdW5jdGlvblBvaW50ZXJzKSB7CisgIEVYUEVDVF9ERUFUSF9JRl9T
VVBQT1JURUQoCisgICAgICBSZXN1bHRPZihzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZyAoKikoaW50
IGR1bW15KT4oTlVMTCksCisgICAgICAgICAgICAgICBFcShzdGQ6OnN0cmluZygiZm9vIikpKSwK
KyAgICAgICJOVUxMIGZ1bmN0aW9uIHBvaW50ZXIgaXMgcGFzc2VkIGludG8gUmVzdWx0T2ZcXChc
XClcXC4iKTsKK30KKworLy8gVGVzdHMgdGhhdCBSZXN1bHRPZihmLCAuLi4pIGNvbXBpbGVzIGFu
ZCB3b3JrcyBhcyBleHBlY3RlZCB3aGVuIGYgaXMgYQorLy8gZnVuY3Rpb24gcmVmZXJlbmNlLgor
VEVTVChSZXN1bHRPZlRlc3QsIFdvcmtzRm9yRnVuY3Rpb25SZWZlcmVuY2VzKSB7CisgIE1hdGNo
ZXI8aW50PiBtYXRjaGVyID0gUmVzdWx0T2YoSW50VG9TdHJpbmdGdW5jdGlvbiwgU3RyRXEoImZv
byIpKTsKKyAgRVhQRUNUX1RSVUUobWF0Y2hlci5NYXRjaGVzKDEpKTsKKyAgRVhQRUNUX0ZBTFNF
KG1hdGNoZXIuTWF0Y2hlcygyKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgUmVzdWx0T2YoZiwgLi4u
KSBjb21waWxlcyBhbmQgd29ya3MgYXMgZXhwZWN0ZWQgd2hlbiBmIGlzIGEKKy8vIGZ1bmN0aW9u
IG9iamVjdC4KK3N0cnVjdCBGdW5jdG9yIDogcHVibGljIDo6c3RkOjp1bmFyeV9mdW5jdGlvbjxp
bnQsIHN0ZDo6c3RyaW5nPiB7CisgIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoYXJndW1lbnRfdHlw
ZSBpbnB1dCkgY29uc3QgeworICAgIHJldHVybiBJbnRUb1N0cmluZ0Z1bmN0aW9uKGlucHV0KTsK
KyAgfQorfTsKKworVEVTVChSZXN1bHRPZlRlc3QsIFdvcmtzRm9yRnVuY3RvcnMpIHsKKyAgTWF0
Y2hlcjxpbnQ+IG1hdGNoZXIgPSBSZXN1bHRPZihGdW5jdG9yKCksIEVxKHN0ZDo6c3RyaW5nKCJm
b28iKSkpOworCisgIEVYUEVDVF9UUlVFKG1hdGNoZXIuTWF0Y2hlcygxKSk7CisgIEVYUEVDVF9G
QUxTRShtYXRjaGVyLk1hdGNoZXMoMikpOworfQorCisvLyBUZXN0cyB0aGF0IFJlc3VsdE9mKGYs
IC4uLikgY29tcGlsZXMgYW5kIHdvcmtzIGFzIGV4cGVjdGVkIHdoZW4gZiBpcyBhCisvLyBmdW5j
dG9yIHdpdGggbW9yZSB0aGVuIG9uZSBvcGVyYXRvcigpIGRlZmluZWQuIFJlc3VsdE9mKCkgbXVz
dCB3b3JrCisvLyBmb3IgZWFjaCBkZWZpbmVkIG9wZXJhdG9yKCkuCitzdHJ1Y3QgUG9seW1vcnBo
aWNGdW5jdG9yIHsKKyAgdHlwZWRlZiBpbnQgcmVzdWx0X3R5cGU7CisgIGludCBvcGVyYXRvcigp
KGludCBuKSB7IHJldHVybiBuOyB9CisgIGludCBvcGVyYXRvcigpKGNvbnN0IGNoYXIqIHMpIHsg
cmV0dXJuIHN0YXRpY19jYXN0PGludD4oc3RybGVuKHMpKTsgfQorfTsKKworVEVTVChSZXN1bHRP
ZlRlc3QsIFdvcmtzRm9yUG9seW1vcnBoaWNGdW5jdG9ycykgeworICBNYXRjaGVyPGludD4gbWF0
Y2hlcl9pbnQgPSBSZXN1bHRPZihQb2x5bW9ycGhpY0Z1bmN0b3IoKSwgR2UoNSkpOworCisgIEVY
UEVDVF9UUlVFKG1hdGNoZXJfaW50Lk1hdGNoZXMoMTApKTsKKyAgRVhQRUNUX0ZBTFNFKG1hdGNo
ZXJfaW50Lk1hdGNoZXMoMikpOworCisgIE1hdGNoZXI8Y29uc3QgY2hhcio+IG1hdGNoZXJfc3Ry
aW5nID0gUmVzdWx0T2YoUG9seW1vcnBoaWNGdW5jdG9yKCksIEdlKDUpKTsKKworICBFWFBFQ1Rf
VFJVRShtYXRjaGVyX3N0cmluZy5NYXRjaGVzKCJsb25nIHN0cmluZyIpKTsKKyAgRVhQRUNUX0ZB
TFNFKG1hdGNoZXJfc3RyaW5nLk1hdGNoZXMoInNocnQiKSk7Cit9CisKK2NvbnN0IGludCogUmVm
ZXJlbmNpbmdGdW5jdGlvbihjb25zdCBpbnQmIG4pIHsgcmV0dXJuICZuOyB9CisKK3N0cnVjdCBS
ZWZlcmVuY2luZ0Z1bmN0b3IgeworICB0eXBlZGVmIGNvbnN0IGludCogcmVzdWx0X3R5cGU7Cisg
IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoY29uc3QgaW50JiBuKSB7IHJldHVybiAmbjsgfQorfTsK
KworVEVTVChSZXN1bHRPZlRlc3QsIFdvcmtzRm9yUmVmZXJlbmNpbmdDYWxsYWJsZXMpIHsKKyAg
Y29uc3QgaW50IG4gPSAxOworICBjb25zdCBpbnQgbjIgPSAxOworICBNYXRjaGVyPGNvbnN0IGlu
dCY+IG1hdGNoZXIyID0gUmVzdWx0T2YoUmVmZXJlbmNpbmdGdW5jdGlvbiwgRXEoJm4pKTsKKyAg
RVhQRUNUX1RSVUUobWF0Y2hlcjIuTWF0Y2hlcyhuKSk7CisgIEVYUEVDVF9GQUxTRShtYXRjaGVy
Mi5NYXRjaGVzKG4yKSk7CisKKyAgTWF0Y2hlcjxjb25zdCBpbnQmPiBtYXRjaGVyMyA9IFJlc3Vs
dE9mKFJlZmVyZW5jaW5nRnVuY3RvcigpLCBFcSgmbikpOworICBFWFBFQ1RfVFJVRShtYXRjaGVy
My5NYXRjaGVzKG4pKTsKKyAgRVhQRUNUX0ZBTFNFKG1hdGNoZXIzLk1hdGNoZXMobjIpKTsKK30K
KworY2xhc3MgRGl2aXNpYmxlQnlJbXBsIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IERpdmlzaWJs
ZUJ5SW1wbChpbnQgYV9kaXZpZGVyKSA6IGRpdmlkZXJfKGFfZGl2aWRlcikge30KKworICAvLyBG
b3IgdGVzdGluZyB1c2luZyBFeHBsYWluTWF0Y2hSZXN1bHRUbygpIHdpdGggcG9seW1vcnBoaWMg
bWF0Y2hlcnMuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBib29sIE1hdGNoQW5kRXhwbGFp
bihjb25zdCBUJiBuLCBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgeworICAg
ICpsaXN0ZW5lciA8PCAid2hpY2ggaXMgIiA8PCAobiAlIGRpdmlkZXJfKSA8PCAiIG1vZHVsbyAi
CisgICAgICAgICAgICAgIDw8IGRpdmlkZXJfOworICAgIHJldHVybiAobiAlIGRpdmlkZXJfKSA9
PSAwOworICB9CisKKyAgdm9pZCBEZXNjcmliZVRvKG9zdHJlYW0qIG9zKSBjb25zdCB7CisgICAg
Km9zIDw8ICJpcyBkaXZpc2libGUgYnkgIiA8PCBkaXZpZGVyXzsKKyAgfQorCisgIHZvaWQgRGVz
Y3JpYmVOZWdhdGlvblRvKG9zdHJlYW0qIG9zKSBjb25zdCB7CisgICAgKm9zIDw8ICJpcyBub3Qg
ZGl2aXNpYmxlIGJ5ICIgPDwgZGl2aWRlcl87CisgIH0KKworICB2b2lkIHNldF9kaXZpZGVyKGlu
dCBhX2RpdmlkZXIpIHsgZGl2aWRlcl8gPSBhX2RpdmlkZXI7IH0KKyAgaW50IGRpdmlkZXIoKSBj
b25zdCB7IHJldHVybiBkaXZpZGVyXzsgfQorCisgcHJpdmF0ZToKKyAgaW50IGRpdmlkZXJfOwor
fTsKKworUG9seW1vcnBoaWNNYXRjaGVyPERpdmlzaWJsZUJ5SW1wbD4gRGl2aXNpYmxlQnkoaW50
IG4pIHsKKyAgcmV0dXJuIE1ha2VQb2x5bW9ycGhpY01hdGNoZXIoRGl2aXNpYmxlQnlJbXBsKG4p
KTsKK30KKworLy8gVGVzdHMgdGhhdCB3aGVuIEFsbE9mKCkgZmFpbHMsIG9ubHkgdGhlIGZpcnN0
IGZhaWxpbmcgbWF0Y2hlciBpcworLy8gYXNrZWQgdG8gZXhwbGFpbiB3aHkuCitURVNUKEV4cGxh
aW5NYXRjaFJlc3VsdFRlc3QsIEFsbE9mX0ZhbHNlX0ZhbHNlKSB7CisgIGNvbnN0IE1hdGNoZXI8
aW50PiBtID0gQWxsT2YoRGl2aXNpYmxlQnkoNCksIERpdmlzaWJsZUJ5KDMpKTsKKyAgRVhQRUNU
X0VRKCJ3aGljaCBpcyAxIG1vZHVsbyA0IiwgRXhwbGFpbihtLCA1KSk7Cit9CisKKy8vIFRlc3Rz
IHRoYXQgd2hlbiBBbGxPZigpIGZhaWxzLCBvbmx5IHRoZSBmaXJzdCBmYWlsaW5nIG1hdGNoZXIg
aXMKKy8vIGFza2VkIHRvIGV4cGxhaW4gd2h5LgorVEVTVChFeHBsYWluTWF0Y2hSZXN1bHRUZXN0
LCBBbGxPZl9GYWxzZV9UcnVlKSB7CisgIGNvbnN0IE1hdGNoZXI8aW50PiBtID0gQWxsT2YoRGl2
aXNpYmxlQnkoNCksIERpdmlzaWJsZUJ5KDMpKTsKKyAgRVhQRUNUX0VRKCJ3aGljaCBpcyAyIG1v
ZHVsbyA0IiwgRXhwbGFpbihtLCA2KSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgd2hlbiBBbGxPZigp
IGZhaWxzLCBvbmx5IHRoZSBmaXJzdCBmYWlsaW5nIG1hdGNoZXIgaXMKKy8vIGFza2VkIHRvIGV4
cGxhaW4gd2h5LgorVEVTVChFeHBsYWluTWF0Y2hSZXN1bHRUZXN0LCBBbGxPZl9UcnVlX0ZhbHNl
KSB7CisgIGNvbnN0IE1hdGNoZXI8aW50PiBtID0gQWxsT2YoR2UoMSksIERpdmlzaWJsZUJ5KDMp
KTsKKyAgRVhQRUNUX0VRKCJ3aGljaCBpcyAyIG1vZHVsbyAzIiwgRXhwbGFpbihtLCA1KSk7Cit9
CisKKy8vIFRlc3RzIHRoYXQgd2hlbiBBbGxPZigpIHN1Y2NlZWRzLCBhbGwgbWF0Y2hlcnMgYXJl
IGFza2VkIHRvIGV4cGxhaW4KKy8vIHdoeS4KK1RFU1QoRXhwbGFpbk1hdGNoUmVzdWx0VGVzdCwg
QWxsT2ZfVHJ1ZV9UcnVlKSB7CisgIGNvbnN0IE1hdGNoZXI8aW50PiBtID0gQWxsT2YoRGl2aXNp
YmxlQnkoMiksIERpdmlzaWJsZUJ5KDMpKTsKKyAgRVhQRUNUX0VRKCJ3aGljaCBpcyAwIG1vZHVs
byAyLCBhbmQgd2hpY2ggaXMgMCBtb2R1bG8gMyIsIEV4cGxhaW4obSwgNikpOworfQorCitURVNU
KEV4cGxhaW5NYXRjaFJlc3VsdFRlc3QsIEFsbE9mX1RydWVfVHJ1ZV8yKSB7CisgIGNvbnN0IE1h
dGNoZXI8aW50PiBtID0gQWxsT2YoR2UoMiksIExlKDMpKTsKKyAgRVhQRUNUX0VRKCIiLCBFeHBs
YWluKG0sIDIpKTsKK30KKworVEVTVChFeHBsYWlubWF0Y2hlclJlc3VsdFRlc3QsIE1vbm9tb3Jw
aGljTWF0Y2hlcikgeworICBjb25zdCBNYXRjaGVyPGludD4gbSA9IEdyZWF0ZXJUaGFuKDUpOwor
ICBFWFBFQ1RfRVEoIndoaWNoIGlzIDEgbW9yZSB0aGFuIDUiLCBFeHBsYWluKG0sIDYpKTsKK30K
KworLy8gVGhlIGZvbGxvd2luZyB0d28gdGVzdHMgdmVyaWZ5IHRoYXQgdmFsdWVzIHdpdGhvdXQg
YSBwdWJsaWMgY29weQorLy8gY3RvciBjYW4gYmUgdXNlZCBhcyBhcmd1bWVudHMgdG8gbWF0Y2hl
cnMgbGlrZSBFcSgpLCBHZSgpLCBhbmQgZXRjCisvLyB3aXRoIHRoZSBoZWxwIG9mIEJ5UmVmKCku
CisKK2NsYXNzIE5vdENvcHlhYmxlIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IE5vdENvcHlhYmxl
KGludCBhX3ZhbHVlKSA6IHZhbHVlXyhhX3ZhbHVlKSB7fQorCisgIGludCB2YWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIHZhbHVlXzsgfQorCisgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBOb3RDb3B5YWJs
ZSYgcmhzKSBjb25zdCB7CisgICAgcmV0dXJuIHZhbHVlKCkgPT0gcmhzLnZhbHVlKCk7CisgIH0K
KworICBib29sIG9wZXJhdG9yPj0oY29uc3QgTm90Q29weWFibGUmIHJocykgY29uc3QgeworICAg
IHJldHVybiB2YWx1ZSgpID49IHJocy52YWx1ZSgpOworICB9CisgcHJpdmF0ZToKKyAgaW50IHZh
bHVlXzsKKworICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKE5vdENvcHlhYmxlKTsK
K307CisKK1RFU1QoQnlSZWZUZXN0LCBBbGxvd3NOb3RDb3B5YWJsZUNvbnN0VmFsdWVJbk1hdGNo
ZXJzKSB7CisgIGNvbnN0IE5vdENvcHlhYmxlIGNvbnN0X3ZhbHVlMSgxKTsKKyAgY29uc3QgTWF0
Y2hlcjxjb25zdCBOb3RDb3B5YWJsZSY+IG0gPSBFcShCeVJlZihjb25zdF92YWx1ZTEpKTsKKwor
ICBjb25zdCBOb3RDb3B5YWJsZSBuMSgxKSwgbjIoMik7CisgIEVYUEVDVF9UUlVFKG0uTWF0Y2hl
cyhuMSkpOworICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKG4yKSk7Cit9CisKK1RFU1QoQnlSZWZU
ZXN0LCBBbGxvd3NOb3RDb3B5YWJsZVZhbHVlSW5NYXRjaGVycykgeworICBOb3RDb3B5YWJsZSB2
YWx1ZTIoMik7CisgIGNvbnN0IE1hdGNoZXI8Tm90Q29weWFibGUmPiBtID0gR2UoQnlSZWYodmFs
dWUyKSk7CisKKyAgTm90Q29weWFibGUgbjEoMSksIG4yKDIpOworICBFWFBFQ1RfRkFMU0UobS5N
YXRjaGVzKG4xKSk7CisgIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhuMikpOworfQorCitURVNUKElz
RW1wdHlUZXN0LCBJbXBsZW1lbnRzSXNFbXB0eSkgeworICB2ZWN0b3I8aW50PiBjb250YWluZXI7
CisgIEVYUEVDVF9USEFUKGNvbnRhaW5lciwgSXNFbXB0eSgpKTsKKyAgY29udGFpbmVyLnB1c2hf
YmFjaygwKTsKKyAgRVhQRUNUX1RIQVQoY29udGFpbmVyLCBOb3QoSXNFbXB0eSgpKSk7CisgIGNv
bnRhaW5lci5wdXNoX2JhY2soMSk7CisgIEVYUEVDVF9USEFUKGNvbnRhaW5lciwgTm90KElzRW1w
dHkoKSkpOworfQorCitURVNUKElzRW1wdHlUZXN0LCBXb3Jrc1dpdGhTdHJpbmcpIHsKKyAgc3Rk
OjpzdHJpbmcgdGV4dDsKKyAgRVhQRUNUX1RIQVQodGV4dCwgSXNFbXB0eSgpKTsKKyAgdGV4dCA9
ICJmb28iOworICBFWFBFQ1RfVEhBVCh0ZXh0LCBOb3QoSXNFbXB0eSgpKSk7CisgIHRleHQgPSBz
dGQ6OnN0cmluZygiXDAiLCAxKTsKKyAgRVhQRUNUX1RIQVQodGV4dCwgTm90KElzRW1wdHkoKSkp
OworfQorCitURVNUKElzRW1wdHlUZXN0LCBDYW5EZXNjcmliZVNlbGYpIHsKKyAgTWF0Y2hlcjx2
ZWN0b3I8aW50PiA+IG0gPSBJc0VtcHR5KCk7CisgIEVYUEVDVF9FUSgiaXMgZW1wdHkiLCBEZXNj
cmliZShtKSk7CisgIEVYUEVDVF9FUSgiaXNuJ3QgZW1wdHkiLCBEZXNjcmliZU5lZ2F0aW9uKG0p
KTsKK30KKworVEVTVChJc0VtcHR5VGVzdCwgRXhwbGFpbnNSZXN1bHQpIHsKKyAgTWF0Y2hlcjx2
ZWN0b3I8aW50PiA+IG0gPSBJc0VtcHR5KCk7CisgIHZlY3RvcjxpbnQ+IGNvbnRhaW5lcjsKKyAg
RVhQRUNUX0VRKCIiLCBFeHBsYWluKG0sIGNvbnRhaW5lcikpOworICBjb250YWluZXIucHVzaF9i
YWNrKDApOworICBFWFBFQ1RfRVEoIndob3NlIHNpemUgaXMgMSIsIEV4cGxhaW4obSwgY29udGFp
bmVyKSk7Cit9CisKK1RFU1QoU2l6ZUlzVGVzdCwgSW1wbGVtZW50c1NpemVJcykgeworICB2ZWN0
b3I8aW50PiBjb250YWluZXI7CisgIEVYUEVDVF9USEFUKGNvbnRhaW5lciwgU2l6ZUlzKDApKTsK
KyAgRVhQRUNUX1RIQVQoY29udGFpbmVyLCBOb3QoU2l6ZUlzKDEpKSk7CisgIGNvbnRhaW5lci5w
dXNoX2JhY2soMCk7CisgIEVYUEVDVF9USEFUKGNvbnRhaW5lciwgTm90KFNpemVJcygwKSkpOwor
ICBFWFBFQ1RfVEhBVChjb250YWluZXIsIFNpemVJcygxKSk7CisgIGNvbnRhaW5lci5wdXNoX2Jh
Y2soMCk7CisgIEVYUEVDVF9USEFUKGNvbnRhaW5lciwgTm90KFNpemVJcygwKSkpOworICBFWFBF
Q1RfVEhBVChjb250YWluZXIsIFNpemVJcygyKSk7Cit9CisKK1RFU1QoU2l6ZUlzVGVzdCwgV29y
a3NXaXRoTWFwKSB7CisgIG1hcDxzdGQ6OnN0cmluZywgaW50PiBjb250YWluZXI7CisgIEVYUEVD
VF9USEFUKGNvbnRhaW5lciwgU2l6ZUlzKDApKTsKKyAgRVhQRUNUX1RIQVQoY29udGFpbmVyLCBO
b3QoU2l6ZUlzKDEpKSk7CisgIGNvbnRhaW5lci5pbnNlcnQobWFrZV9wYWlyKCJmb28iLCAxKSk7
CisgIEVYUEVDVF9USEFUKGNvbnRhaW5lciwgTm90KFNpemVJcygwKSkpOworICBFWFBFQ1RfVEhB
VChjb250YWluZXIsIFNpemVJcygxKSk7CisgIGNvbnRhaW5lci5pbnNlcnQobWFrZV9wYWlyKCJi
YXIiLCAyKSk7CisgIEVYUEVDVF9USEFUKGNvbnRhaW5lciwgTm90KFNpemVJcygwKSkpOworICBF
WFBFQ1RfVEhBVChjb250YWluZXIsIFNpemVJcygyKSk7Cit9CisKK1RFU1QoU2l6ZUlzVGVzdCwg
V29ya3NXaXRoUmVmZXJlbmNlcykgeworICB2ZWN0b3I8aW50PiBjb250YWluZXI7CisgIE1hdGNo
ZXI8Y29uc3QgdmVjdG9yPGludD4mPiBtID0gU2l6ZUlzKDEpOworICBFWFBFQ1RfVEhBVChjb250
YWluZXIsIE5vdChtKSk7CisgIGNvbnRhaW5lci5wdXNoX2JhY2soMCk7CisgIEVYUEVDVF9USEFU
KGNvbnRhaW5lciwgbSk7Cit9CisKK1RFU1QoU2l6ZUlzVGVzdCwgQ2FuRGVzY3JpYmVTZWxmKSB7
CisgIE1hdGNoZXI8dmVjdG9yPGludD4gPiBtID0gU2l6ZUlzKDIpOworICBFWFBFQ1RfRVEoInNp
emUgaXMgZXF1YWwgdG8gMiIsIERlc2NyaWJlKG0pKTsKKyAgRVhQRUNUX0VRKCJzaXplIGlzbid0
IGVxdWFsIHRvIDIiLCBEZXNjcmliZU5lZ2F0aW9uKG0pKTsKK30KKworVEVTVChTaXplSXNUZXN0
LCBFeHBsYWluc1Jlc3VsdCkgeworICBNYXRjaGVyPHZlY3RvcjxpbnQ+ID4gbTEgPSBTaXplSXMo
Mik7CisgIE1hdGNoZXI8dmVjdG9yPGludD4gPiBtMiA9IFNpemVJcyhMdCgydSkpOworICBNYXRj
aGVyPHZlY3RvcjxpbnQ+ID4gbTMgPSBTaXplSXMoQW55T2YoMCwgMykpOworICBNYXRjaGVyPHZl
Y3RvcjxpbnQ+ID4gbTQgPSBTaXplSXMoR3JlYXRlclRoYW4oMSkpOworICB2ZWN0b3I8aW50PiBj
b250YWluZXI7CisgIEVYUEVDVF9FUSgid2hvc2Ugc2l6ZSAwIGRvZXNuJ3QgbWF0Y2giLCBFeHBs
YWluKG0xLCBjb250YWluZXIpKTsKKyAgRVhQRUNUX0VRKCJ3aG9zZSBzaXplIDAgbWF0Y2hlcyIs
IEV4cGxhaW4obTIsIGNvbnRhaW5lcikpOworICBFWFBFQ1RfRVEoIndob3NlIHNpemUgMCBtYXRj
aGVzIiwgRXhwbGFpbihtMywgY29udGFpbmVyKSk7CisgIEVYUEVDVF9FUSgid2hvc2Ugc2l6ZSAw
IGRvZXNuJ3QgbWF0Y2gsIHdoaWNoIGlzIDEgbGVzcyB0aGFuIDEiLAorICAgICAgICAgICAgRXhw
bGFpbihtNCwgY29udGFpbmVyKSk7CisgIGNvbnRhaW5lci5wdXNoX2JhY2soMCk7CisgIGNvbnRh
aW5lci5wdXNoX2JhY2soMCk7CisgIEVYUEVDVF9FUSgid2hvc2Ugc2l6ZSAyIG1hdGNoZXMiLCBF
eHBsYWluKG0xLCBjb250YWluZXIpKTsKKyAgRVhQRUNUX0VRKCJ3aG9zZSBzaXplIDIgZG9lc24n
dCBtYXRjaCIsIEV4cGxhaW4obTIsIGNvbnRhaW5lcikpOworICBFWFBFQ1RfRVEoIndob3NlIHNp
emUgMiBkb2Vzbid0IG1hdGNoIiwgRXhwbGFpbihtMywgY29udGFpbmVyKSk7CisgIEVYUEVDVF9F
USgid2hvc2Ugc2l6ZSAyIG1hdGNoZXMsIHdoaWNoIGlzIDEgbW9yZSB0aGFuIDEiLAorICAgICAg
ICAgICAgRXhwbGFpbihtNCwgY29udGFpbmVyKSk7Cit9CisKKyNpZiBHVEVTVF9IQVNfVFlQRURf
VEVTVAorLy8gVGVzdHMgQ29udGFpbmVyRXEgd2l0aCBkaWZmZXJlbnQgY29udGFpbmVyIHR5cGVz
LCBhbmQKKy8vIGRpZmZlcmVudCBlbGVtZW50IHR5cGVzLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KK2NsYXNzIENvbnRhaW5lckVxVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHt9OworCit0
eXBlZGVmIHRlc3Rpbmc6OlR5cGVzPAorICAgIHNldDxpbnQ+LAorICAgIHZlY3RvcjxzaXplX3Q+
LAorICAgIG11bHRpc2V0PHNpemVfdD4sCisgICAgbGlzdDxpbnQ+ID4KKyAgICBDb250YWluZXJF
cVRlc3RUeXBlczsKKworVFlQRURfVEVTVF9DQVNFKENvbnRhaW5lckVxVGVzdCwgQ29udGFpbmVy
RXFUZXN0VHlwZXMpOworCisvLyBUZXN0cyB0aGF0IHRoZSBmaWxsZWQgY29udGFpbmVyIGlzIGVx
dWFsIHRvIGl0c2VsZi4KK1RZUEVEX1RFU1QoQ29udGFpbmVyRXFUZXN0LCBFcXVhbHNTZWxmKSB7
CisgIHN0YXRpYyBjb25zdCBpbnQgdmFsc1tdID0gezEsIDEsIDIsIDMsIDUsIDh9OworICBUeXBl
UGFyYW0gbXlfc2V0KHZhbHMsIHZhbHMgKyA2KTsKKyAgY29uc3QgTWF0Y2hlcjxUeXBlUGFyYW0+
IG0gPSBDb250YWluZXJFcShteV9zZXQpOworICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMobXlfc2V0
KSk7CisgIEVYUEVDVF9FUSgiIiwgRXhwbGFpbihtLCBteV9zZXQpKTsKK30KKworLy8gVGVzdHMg
dGhhdCBtaXNzaW5nIHZhbHVlcyBhcmUgcmVwb3J0ZWQuCitUWVBFRF9URVNUKENvbnRhaW5lckVx
VGVzdCwgVmFsdWVNaXNzaW5nKSB7CisgIHN0YXRpYyBjb25zdCBpbnQgdmFsc1tdID0gezEsIDEs
IDIsIDMsIDUsIDh9OworICBzdGF0aWMgY29uc3QgaW50IHRlc3RfdmFsc1tdID0gezIsIDEsIDgs
IDV9OworICBUeXBlUGFyYW0gbXlfc2V0KHZhbHMsIHZhbHMgKyA2KTsKKyAgVHlwZVBhcmFtIHRl
c3Rfc2V0KHRlc3RfdmFscywgdGVzdF92YWxzICsgNCk7CisgIGNvbnN0IE1hdGNoZXI8VHlwZVBh
cmFtPiBtID0gQ29udGFpbmVyRXEobXlfc2V0KTsKKyAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyh0
ZXN0X3NldCkpOworICBFWFBFQ1RfRVEoIndoaWNoIGRvZXNuJ3QgaGF2ZSB0aGVzZSBleHBlY3Rl
ZCBlbGVtZW50czogMyIsCisgICAgICAgICAgICBFeHBsYWluKG0sIHRlc3Rfc2V0KSk7Cit9CisK
Ky8vIFRlc3RzIHRoYXQgYWRkZWQgdmFsdWVzIGFyZSByZXBvcnRlZC4KK1RZUEVEX1RFU1QoQ29u
dGFpbmVyRXFUZXN0LCBWYWx1ZUFkZGVkKSB7CisgIHN0YXRpYyBjb25zdCBpbnQgdmFsc1tdID0g
ezEsIDEsIDIsIDMsIDUsIDh9OworICBzdGF0aWMgY29uc3QgaW50IHRlc3RfdmFsc1tdID0gezEs
IDIsIDMsIDUsIDgsIDQ2fTsKKyAgVHlwZVBhcmFtIG15X3NldCh2YWxzLCB2YWxzICsgNik7Cisg
IFR5cGVQYXJhbSB0ZXN0X3NldCh0ZXN0X3ZhbHMsIHRlc3RfdmFscyArIDYpOworICBjb25zdCBN
YXRjaGVyPGNvbnN0IFR5cGVQYXJhbSY+IG0gPSBDb250YWluZXJFcShteV9zZXQpOworICBFWFBF
Q1RfRkFMU0UobS5NYXRjaGVzKHRlc3Rfc2V0KSk7CisgIEVYUEVDVF9FUSgid2hpY2ggaGFzIHRo
ZXNlIHVuZXhwZWN0ZWQgZWxlbWVudHM6IDQ2IiwgRXhwbGFpbihtLCB0ZXN0X3NldCkpOworfQor
CisvLyBUZXN0cyB0aGF0IGFkZGVkIGFuZCBtaXNzaW5nIHZhbHVlcyBhcmUgcmVwb3J0ZWQgdG9n
ZXRoZXIuCitUWVBFRF9URVNUKENvbnRhaW5lckVxVGVzdCwgVmFsdWVBZGRlZEFuZFJlbW92ZWQp
IHsKKyAgc3RhdGljIGNvbnN0IGludCB2YWxzW10gPSB7MSwgMSwgMiwgMywgNSwgOH07CisgIHN0
YXRpYyBjb25zdCBpbnQgdGVzdF92YWxzW10gPSB7MSwgMiwgMywgOCwgNDZ9OworICBUeXBlUGFy
YW0gbXlfc2V0KHZhbHMsIHZhbHMgKyA2KTsKKyAgVHlwZVBhcmFtIHRlc3Rfc2V0KHRlc3RfdmFs
cywgdGVzdF92YWxzICsgNSk7CisgIGNvbnN0IE1hdGNoZXI8VHlwZVBhcmFtPiBtID0gQ29udGFp
bmVyRXEobXlfc2V0KTsKKyAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyh0ZXN0X3NldCkpOworICBF
WFBFQ1RfRVEoIndoaWNoIGhhcyB0aGVzZSB1bmV4cGVjdGVkIGVsZW1lbnRzOiA0NixcbiIKKyAg
ICAgICAgICAgICJhbmQgZG9lc24ndCBoYXZlIHRoZXNlIGV4cGVjdGVkIGVsZW1lbnRzOiA1IiwK
KyAgICAgICAgICAgIEV4cGxhaW4obSwgdGVzdF9zZXQpKTsKK30KKworLy8gVGVzdHMgZHVwbGlj
YXRlZCB2YWx1ZSAtLSBleHBlY3Qgbm8gZXhwbGFuYXRpb24uCitUWVBFRF9URVNUKENvbnRhaW5l
ckVxVGVzdCwgRHVwbGljYXRlRGlmZmVyZW5jZSkgeworICBzdGF0aWMgY29uc3QgaW50IHZhbHNb
XSA9IHsxLCAxLCAyLCAzLCA1LCA4fTsKKyAgc3RhdGljIGNvbnN0IGludCB0ZXN0X3ZhbHNbXSA9
IHsxLCAyLCAzLCA1LCA4fTsKKyAgVHlwZVBhcmFtIG15X3NldCh2YWxzLCB2YWxzICsgNik7Cisg
IFR5cGVQYXJhbSB0ZXN0X3NldCh0ZXN0X3ZhbHMsIHRlc3RfdmFscyArIDUpOworICBjb25zdCBN
YXRjaGVyPGNvbnN0IFR5cGVQYXJhbSY+IG0gPSBDb250YWluZXJFcShteV9zZXQpOworICAvLyBE
ZXBlbmRpbmcgb24gdGhlIGNvbnRhaW5lciwgbWF0Y2ggbWF5IGJlIHRydWUgb3IgZmFsc2UKKyAg
Ly8gQnV0IGluIGFueSBjYXNlIHRoZXJlIHNob3VsZCBiZSBubyBleHBsYW5hdGlvbi4KKyAgRVhQ
RUNUX0VRKCIiLCBFeHBsYWluKG0sIHRlc3Rfc2V0KSk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hB
U19UWVBFRF9URVNUCisKKy8vIFRlc3RzIHRoYXQgbXV0bGlwbGUgbWlzc2luZyB2YWx1ZXMgYXJl
IHJlcG9ydGVkLgorLy8gVXNpbmcganVzdCB2ZWN0b3IgaGVyZSwgc28gb3JkZXIgaXMgcHJlZGlj
YXRibGUuCitURVNUKENvbnRhaW5lckVxRXh0cmFUZXN0LCBNdWx0aXBsZVZhbHVlc01pc3Npbmcp
IHsKKyAgc3RhdGljIGNvbnN0IGludCB2YWxzW10gPSB7MSwgMSwgMiwgMywgNSwgOH07CisgIHN0
YXRpYyBjb25zdCBpbnQgdGVzdF92YWxzW10gPSB7MiwgMSwgNX07CisgIHZlY3RvcjxpbnQ+IG15
X3NldCh2YWxzLCB2YWxzICsgNik7CisgIHZlY3RvcjxpbnQ+IHRlc3Rfc2V0KHRlc3RfdmFscywg
dGVzdF92YWxzICsgMyk7CisgIGNvbnN0IE1hdGNoZXI8dmVjdG9yPGludD4gPiBtID0gQ29udGFp
bmVyRXEobXlfc2V0KTsKKyAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyh0ZXN0X3NldCkpOworICBF
WFBFQ1RfRVEoIndoaWNoIGRvZXNuJ3QgaGF2ZSB0aGVzZSBleHBlY3RlZCBlbGVtZW50czogMywg
OCIsCisgICAgICAgICAgICBFeHBsYWluKG0sIHRlc3Rfc2V0KSk7Cit9CisKKy8vIFRlc3RzIHRo
YXQgYWRkZWQgdmFsdWVzIGFyZSByZXBvcnRlZC4KKy8vIFVzaW5nIGp1c3QgdmVjdG9yIGhlcmUs
IHNvIG9yZGVyIGlzIHByZWRpY2F0YmxlLgorVEVTVChDb250YWluZXJFcUV4dHJhVGVzdCwgTXVs
dGlwbGVWYWx1ZXNBZGRlZCkgeworICBzdGF0aWMgY29uc3QgaW50IHZhbHNbXSA9IHsxLCAxLCAy
LCAzLCA1LCA4fTsKKyAgc3RhdGljIGNvbnN0IGludCB0ZXN0X3ZhbHNbXSA9IHsxLCAyLCA5Miwg
MywgNSwgOCwgNDZ9OworICBsaXN0PHNpemVfdD4gbXlfc2V0KHZhbHMsIHZhbHMgKyA2KTsKKyAg
bGlzdDxzaXplX3Q+IHRlc3Rfc2V0KHRlc3RfdmFscywgdGVzdF92YWxzICsgNyk7CisgIGNvbnN0
IE1hdGNoZXI8Y29uc3QgbGlzdDxzaXplX3Q+Jj4gbSA9IENvbnRhaW5lckVxKG15X3NldCk7Cisg
IEVYUEVDVF9GQUxTRShtLk1hdGNoZXModGVzdF9zZXQpKTsKKyAgRVhQRUNUX0VRKCJ3aGljaCBo
YXMgdGhlc2UgdW5leHBlY3RlZCBlbGVtZW50czogOTIsIDQ2IiwKKyAgICAgICAgICAgIEV4cGxh
aW4obSwgdGVzdF9zZXQpKTsKK30KKworLy8gVGVzdHMgdGhhdCBhZGRlZCBhbmQgbWlzc2luZyB2
YWx1ZXMgYXJlIHJlcG9ydGVkIHRvZ2V0aGVyLgorVEVTVChDb250YWluZXJFcUV4dHJhVGVzdCwg
TXVsdGlwbGVWYWx1ZXNBZGRlZEFuZFJlbW92ZWQpIHsKKyAgc3RhdGljIGNvbnN0IGludCB2YWxz
W10gPSB7MSwgMSwgMiwgMywgNSwgOH07CisgIHN0YXRpYyBjb25zdCBpbnQgdGVzdF92YWxzW10g
PSB7MSwgMiwgMywgOTIsIDQ2fTsKKyAgbGlzdDxzaXplX3Q+IG15X3NldCh2YWxzLCB2YWxzICsg
Nik7CisgIGxpc3Q8c2l6ZV90PiB0ZXN0X3NldCh0ZXN0X3ZhbHMsIHRlc3RfdmFscyArIDUpOwor
ICBjb25zdCBNYXRjaGVyPGNvbnN0IGxpc3Q8c2l6ZV90PiA+IG0gPSBDb250YWluZXJFcShteV9z
ZXQpOworICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKHRlc3Rfc2V0KSk7CisgIEVYUEVDVF9FUSgi
d2hpY2ggaGFzIHRoZXNlIHVuZXhwZWN0ZWQgZWxlbWVudHM6IDkyLCA0NixcbiIKKyAgICAgICAg
ICAgICJhbmQgZG9lc24ndCBoYXZlIHRoZXNlIGV4cGVjdGVkIGVsZW1lbnRzOiA1LCA4IiwKKyAg
ICAgICAgICAgIEV4cGxhaW4obSwgdGVzdF9zZXQpKTsKK30KKworLy8gVGVzdHMgdG8gc2VlIHRo
YXQgZHVwbGljYXRlIGVsZW1lbnRzIGFyZSBkZXRlY3RlZCwKKy8vIGJ1dCAoYXMgYWJvdmUpIG5v
dCByZXBvcnRlZCBpbiB0aGUgZXhwbGFuYXRpb24uCitURVNUKENvbnRhaW5lckVxRXh0cmFUZXN0
LCBNdWx0aVNldE9mSW50RHVwbGljYXRlRGlmZmVyZW5jZSkgeworICBzdGF0aWMgY29uc3QgaW50
IHZhbHNbXSA9IHsxLCAxLCAyLCAzLCA1LCA4fTsKKyAgc3RhdGljIGNvbnN0IGludCB0ZXN0X3Zh
bHNbXSA9IHsxLCAyLCAzLCA1LCA4fTsKKyAgdmVjdG9yPGludD4gbXlfc2V0KHZhbHMsIHZhbHMg
KyA2KTsKKyAgdmVjdG9yPGludD4gdGVzdF9zZXQodGVzdF92YWxzLCB0ZXN0X3ZhbHMgKyA1KTsK
KyAgY29uc3QgTWF0Y2hlcjx2ZWN0b3I8aW50PiA+IG0gPSBDb250YWluZXJFcShteV9zZXQpOwor
ICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMobXlfc2V0KSk7CisgIEVYUEVDVF9GQUxTRShtLk1hdGNo
ZXModGVzdF9zZXQpKTsKKyAgLy8gVGhlcmUgaXMgbm90aGluZyB0byByZXBvcnQgd2hlbiBib3Ro
IHNldHMgY29udGFpbiBhbGwgdGhlIHNhbWUgdmFsdWVzLgorICBFWFBFQ1RfRVEoIiIsIEV4cGxh
aW4obSwgdGVzdF9zZXQpKTsKK30KKworLy8gVGVzdHMgdGhhdCBDb250YWluZXJFcSB3b3JrcyBm
b3Igbm9uLXRyaXZpYWwgYXNzb2NpYXRpdmUgY29udGFpbmVycywKKy8vIGxpa2UgbWFwcy4KK1RF
U1QoQ29udGFpbmVyRXFFeHRyYVRlc3QsIFdvcmtzRm9yTWFwcykgeworICBtYXA8aW50LCBzdGQ6
OnN0cmluZz4gbXlfbWFwOworICBteV9tYXBbMF0gPSAiYSI7CisgIG15X21hcFsxXSA9ICJiIjsK
KworICBtYXA8aW50LCBzdGQ6OnN0cmluZz4gdGVzdF9tYXA7CisgIHRlc3RfbWFwWzBdID0gImFh
IjsKKyAgdGVzdF9tYXBbMV0gPSAiYiI7CisKKyAgY29uc3QgTWF0Y2hlcjxjb25zdCBtYXA8aW50
LCBzdGQ6OnN0cmluZz4mPiBtID0gQ29udGFpbmVyRXEobXlfbWFwKTsKKyAgRVhQRUNUX1RSVUUo
bS5NYXRjaGVzKG15X21hcCkpOworICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKHRlc3RfbWFwKSk7
CisKKyAgRVhQRUNUX0VRKCJ3aGljaCBoYXMgdGhlc2UgdW5leHBlY3RlZCBlbGVtZW50czogKDAs
IFwiYWFcIiksXG4iCisgICAgICAgICAgICAiYW5kIGRvZXNuJ3QgaGF2ZSB0aGVzZSBleHBlY3Rl
ZCBlbGVtZW50czogKDAsIFwiYVwiKSIsCisgICAgICAgICAgICBFeHBsYWluKG0sIHRlc3RfbWFw
KSk7Cit9CisKK1RFU1QoQ29udGFpbmVyRXFFeHRyYVRlc3QsIFdvcmtzRm9yTmF0aXZlQXJyYXkp
IHsKKyAgaW50IGExW10gPSB7MSwgMiwgM307CisgIGludCBhMltdID0gezEsIDIsIDN9OworICBp
bnQgYltdID0gezEsIDIsIDR9OworCisgIEVYUEVDVF9USEFUKGExLCBDb250YWluZXJFcShhMikp
OworICBFWFBFQ1RfVEhBVChhMSwgTm90KENvbnRhaW5lckVxKGIpKSk7Cit9CisKK1RFU1QoQ29u
dGFpbmVyRXFFeHRyYVRlc3QsIFdvcmtzRm9yVHdvRGltZW5zaW9uYWxOYXRpdmVBcnJheSkgewor
ICBjb25zdCBjaGFyIGExW11bM10gPSB7ImhpIiwgImxvIn07CisgIGNvbnN0IGNoYXIgYTJbXVsz
XSA9IHsiaGkiLCAibG8ifTsKKyAgY29uc3QgY2hhciBiW11bM10gPSB7ImxvIiwgImhpIn07CisK
KyAgLy8gVGVzdHMgdXNpbmcgQ29udGFpbmVyRXEoKSBpbiB0aGUgZmlyc3QgZGltZW5zaW9uLgor
ICBFWFBFQ1RfVEhBVChhMSwgQ29udGFpbmVyRXEoYTIpKTsKKyAgRVhQRUNUX1RIQVQoYTEsIE5v
dChDb250YWluZXJFcShiKSkpOworCisgIC8vIFRlc3RzIHVzaW5nIENvbnRhaW5lckVxKCkgaW4g
dGhlIHNlY29uZCBkaW1lbnNpb24uCisgIEVYUEVDVF9USEFUKGExLCBFbGVtZW50c0FyZShDb250
YWluZXJFcShhMlswXSksIENvbnRhaW5lckVxKGEyWzFdKSkpOworICBFWFBFQ1RfVEhBVChhMSwg
RWxlbWVudHNBcmUoTm90KENvbnRhaW5lckVxKGJbMF0pKSwgQ29udGFpbmVyRXEoYTJbMV0pKSk7
Cit9CisKK1RFU1QoQ29udGFpbmVyRXFFeHRyYVRlc3QsIFdvcmtzRm9yTmF0aXZlQXJyYXlBc1R1
cGxlKSB7CisgIGNvbnN0IGludCBhMVtdID0gezEsIDIsIDN9OworICBjb25zdCBpbnQgYTJbXSA9
IHsxLCAyLCAzfTsKKyAgY29uc3QgaW50IGJbXSA9IHsxLCAyLCAzLCA0fTsKKworICBjb25zdCBp
bnQqIGNvbnN0IHAxID0gYTE7CisgIEVYUEVDVF9USEFUKG1ha2VfdHVwbGUocDEsIDMpLCBDb250
YWluZXJFcShhMikpOworICBFWFBFQ1RfVEhBVChtYWtlX3R1cGxlKHAxLCAzKSwgTm90KENvbnRh
aW5lckVxKGIpKSk7CisKKyAgY29uc3QgaW50IGNbXSA9IHsxLCAzLCAyfTsKKyAgRVhQRUNUX1RI
QVQobWFrZV90dXBsZShwMSwgMyksIE5vdChDb250YWluZXJFcShjKSkpOworfQorCitURVNUKENv
bnRhaW5lckVxRXh0cmFUZXN0LCBDb3BpZXNOYXRpdmVBcnJheVBhcmFtZXRlcikgeworICBzdGQ6
OnN0cmluZyBhMVtdWzNdID0geworICAgIHsiaGkiLCAiaGVsbG8iLCAiY2lhbyJ9LAorICAgIHsi
YnllIiwgInNlZSB5b3UiLCAiY2lhbyJ9CisgIH07CisKKyAgc3RkOjpzdHJpbmcgYTJbXVszXSA9
IHsKKyAgICB7ImhpIiwgImhlbGxvIiwgImNpYW8ifSwKKyAgICB7ImJ5ZSIsICJzZWUgeW91Iiwg
ImNpYW8ifQorICB9OworCisgIGNvbnN0IE1hdGNoZXI8Y29uc3Qgc3RkOjpzdHJpbmcoJilbMl1b
M10+IG0gPSBDb250YWluZXJFcShhMik7CisgIEVYUEVDVF9USEFUKGExLCBtKTsKKworICBhMlsw
XVswXSA9ICJoYSI7CisgIEVYUEVDVF9USEFUKGExLCBtKTsKK30KKworVEVTVChXaGVuU29ydGVk
QnlUZXN0LCBXb3Jrc0ZvckVtcHR5Q29udGFpbmVyKSB7CisgIGNvbnN0IHZlY3RvcjxpbnQ+IG51
bWJlcnM7CisgIEVYUEVDVF9USEFUKG51bWJlcnMsIFdoZW5Tb3J0ZWRCeShsZXNzPGludD4oKSwg
RWxlbWVudHNBcmUoKSkpOworICBFWFBFQ1RfVEhBVChudW1iZXJzLCBOb3QoV2hlblNvcnRlZEJ5
KGxlc3M8aW50PigpLCBFbGVtZW50c0FyZSgxKSkpKTsKK30KKworVEVTVChXaGVuU29ydGVkQnlU
ZXN0LCBXb3Jrc0Zvck5vbkVtcHR5Q29udGFpbmVyKSB7CisgIHZlY3Rvcjx1bnNpZ25lZD4gbnVt
YmVyczsKKyAgbnVtYmVycy5wdXNoX2JhY2soMyk7CisgIG51bWJlcnMucHVzaF9iYWNrKDEpOwor
ICBudW1iZXJzLnB1c2hfYmFjaygyKTsKKyAgbnVtYmVycy5wdXNoX2JhY2soMik7CisgIEVYUEVD
VF9USEFUKG51bWJlcnMsIFdoZW5Tb3J0ZWRCeShncmVhdGVyPHVuc2lnbmVkPigpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWxlbWVudHNBcmUoMywgMiwgMiwgMSkpKTsK
KyAgRVhQRUNUX1RIQVQobnVtYmVycywgTm90KFdoZW5Tb3J0ZWRCeShncmVhdGVyPHVuc2lnbmVk
PigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVsZW1lbnRzQXJl
KDEsIDIsIDIsIDMpKSkpOworfQorCitURVNUKFdoZW5Tb3J0ZWRCeVRlc3QsIFdvcmtzRm9yTm9u
VmVjdG9yQ29udGFpbmVyKSB7CisgIGxpc3Q8c3RkOjpzdHJpbmc+IHdvcmRzOworICB3b3Jkcy5w
dXNoX2JhY2soInNheSIpOworICB3b3Jkcy5wdXNoX2JhY2soImhlbGxvIik7CisgIHdvcmRzLnB1
c2hfYmFjaygid29ybGQiKTsKKyAgRVhQRUNUX1RIQVQod29yZHMsIFdoZW5Tb3J0ZWRCeShsZXNz
PHN0ZDo6c3RyaW5nPigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVsZW1l
bnRzQXJlKCJoZWxsbyIsICJzYXkiLCAid29ybGQiKSkpOworICBFWFBFQ1RfVEhBVCh3b3Jkcywg
Tm90KFdoZW5Tb3J0ZWRCeShsZXNzPHN0ZDo6c3RyaW5nPigpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFbGVtZW50c0FyZSgic2F5IiwgImhlbGxvIiwgIndvcmxkIikp
KSk7Cit9CisKK1RFU1QoV2hlblNvcnRlZEJ5VGVzdCwgV29ya3NGb3JOYXRpdmVBcnJheSkgewor
ICBjb25zdCBpbnQgbnVtYmVyc1tdID0gezEsIDMsIDIsIDR9OworICBjb25zdCBpbnQgc29ydGVk
X251bWJlcnNbXSA9IHsxLCAyLCAzLCA0fTsKKyAgRVhQRUNUX1RIQVQobnVtYmVycywgV2hlblNv
cnRlZEJ5KGxlc3M8aW50PigpLCBFbGVtZW50c0FyZSgxLCAyLCAzLCA0KSkpOworICBFWFBFQ1Rf
VEhBVChudW1iZXJzLCBXaGVuU29ydGVkQnkobGVzczxpbnQ+KCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFbGVtZW50c0FyZUFycmF5KHNvcnRlZF9udW1iZXJzKSkpOwor
ICBFWFBFQ1RfVEhBVChudW1iZXJzLCBOb3QoV2hlblNvcnRlZEJ5KGxlc3M8aW50PigpLCBFbGVt
ZW50c0FyZSgxLCAzLCAyLCA0KSkpKTsKK30KKworVEVTVChXaGVuU29ydGVkQnlUZXN0LCBDYW5E
ZXNjcmliZVNlbGYpIHsKKyAgY29uc3QgTWF0Y2hlcjx2ZWN0b3I8aW50PiA+IG0gPSBXaGVuU29y
dGVkQnkobGVzczxpbnQ+KCksIEVsZW1lbnRzQXJlKDEsIDIpKTsKKyAgRVhQRUNUX0VRKCIod2hl
biBzb3J0ZWQpIGhhcyAyIGVsZW1lbnRzIHdoZXJlXG4iCisgICAgICAgICAgICAiZWxlbWVudCAj
MCBpcyBlcXVhbCB0byAxLFxuIgorICAgICAgICAgICAgImVsZW1lbnQgIzEgaXMgZXF1YWwgdG8g
MiIsCisgICAgICAgICAgICBEZXNjcmliZShtKSk7CisgIEVYUEVDVF9FUSgiKHdoZW4gc29ydGVk
KSBkb2Vzbid0IGhhdmUgMiBlbGVtZW50cywgb3JcbiIKKyAgICAgICAgICAgICJlbGVtZW50ICMw
IGlzbid0IGVxdWFsIHRvIDEsIG9yXG4iCisgICAgICAgICAgICAiZWxlbWVudCAjMSBpc24ndCBl
cXVhbCB0byAyIiwKKyAgICAgICAgICAgIERlc2NyaWJlTmVnYXRpb24obSkpOworfQorCitURVNU
KFdoZW5Tb3J0ZWRCeVRlc3QsIEV4cGxhaW5zTWF0Y2hSZXN1bHQpIHsKKyAgY29uc3QgaW50IGFb
XSA9IHsyLCAxfTsKKyAgRVhQRUNUX0VRKCJ3aGljaCBpcyB7IDEsIDIgfSB3aGVuIHNvcnRlZCwg
d2hvc2UgZWxlbWVudCAjMCBkb2Vzbid0IG1hdGNoIiwKKyAgICAgICAgICAgIEV4cGxhaW4oV2hl
blNvcnRlZEJ5KGxlc3M8aW50PigpLCBFbGVtZW50c0FyZSgyLCAzKSksIGEpKTsKKyAgRVhQRUNU
X0VRKCJ3aGljaCBpcyB7IDEsIDIgfSB3aGVuIHNvcnRlZCIsCisgICAgICAgICAgICBFeHBsYWlu
KFdoZW5Tb3J0ZWRCeShsZXNzPGludD4oKSwgRWxlbWVudHNBcmUoMSwgMikpLCBhKSk7Cit9CisK
Ky8vIFdoZW5Tb3J0ZWQoKSBpcyBhIHNpbXBsZSB3cmFwcGVyIG9uIFdoZW5Tb3J0ZWRCeSgpLiAg
SGVuY2Ugd2UgZG9uJ3QKKy8vIG5lZWQgdG8gdGVzdCBpdCBhcyBleGhhdXN0aXZlbHkgYXMgd2Ug
dGVzdCB0aGUgbGF0dGVyLgorCitURVNUKFdoZW5Tb3J0ZWRUZXN0LCBXb3Jrc0ZvckVtcHR5Q29u
dGFpbmVyKSB7CisgIGNvbnN0IHZlY3RvcjxpbnQ+IG51bWJlcnM7CisgIEVYUEVDVF9USEFUKG51
bWJlcnMsIFdoZW5Tb3J0ZWQoRWxlbWVudHNBcmUoKSkpOworICBFWFBFQ1RfVEhBVChudW1iZXJz
LCBOb3QoV2hlblNvcnRlZChFbGVtZW50c0FyZSgxKSkpKTsKK30KKworVEVTVChXaGVuU29ydGVk
VGVzdCwgV29ya3NGb3JOb25FbXB0eUNvbnRhaW5lcikgeworICBsaXN0PHN0ZDo6c3RyaW5nPiB3
b3JkczsKKyAgd29yZHMucHVzaF9iYWNrKCIzIik7CisgIHdvcmRzLnB1c2hfYmFjaygiMSIpOwor
ICB3b3Jkcy5wdXNoX2JhY2soIjIiKTsKKyAgd29yZHMucHVzaF9iYWNrKCIyIik7CisgIEVYUEVD
VF9USEFUKHdvcmRzLCBXaGVuU29ydGVkKEVsZW1lbnRzQXJlKCIxIiwgIjIiLCAiMiIsICIzIikp
KTsKKyAgRVhQRUNUX1RIQVQod29yZHMsIE5vdChXaGVuU29ydGVkKEVsZW1lbnRzQXJlKCIzIiwg
IjEiLCAiMiIsICIyIikpKSk7Cit9CisKK1RFU1QoV2hlblNvcnRlZFRlc3QsIFdvcmtzRm9yTWFw
VHlwZXMpIHsKKyAgbWFwPHN0ZDo6c3RyaW5nLCBpbnQ+IHdvcmRfY291bnRzOworICB3b3JkX2Nv
dW50c1siYW5kIl0gPSAxOworICB3b3JkX2NvdW50c1sidGhlIl0gPSAxOworICB3b3JkX2NvdW50
c1siYnVmZmFsbyJdID0gMjsKKyAgRVhQRUNUX1RIQVQod29yZF9jb3VudHMsCisgICAgICAgICAg
ICAgIFdoZW5Tb3J0ZWQoRWxlbWVudHNBcmUoUGFpcigiYW5kIiwgMSksIFBhaXIoImJ1ZmZhbG8i
LCAyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWlyKCJ0aGUiLCAx
KSkpKTsKKyAgRVhQRUNUX1RIQVQod29yZF9jb3VudHMsCisgICAgICAgICAgICAgIE5vdChXaGVu
U29ydGVkKEVsZW1lbnRzQXJlKFBhaXIoImFuZCIsIDEpLCBQYWlyKCJ0aGUiLCAxKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFpcigiYnVmZmFsbyIsIDIpKSkp
KTsKK30KKworVEVTVChXaGVuU29ydGVkVGVzdCwgV29ya3NGb3JNdWx0aU1hcFR5cGVzKSB7Cisg
ICAgbXVsdGltYXA8aW50LCBpbnQ+IGlmaWI7CisgICAgaWZpYi5pbnNlcnQobWFrZV9wYWlyKDgs
IDYpKTsKKyAgICBpZmliLmluc2VydChtYWtlX3BhaXIoMiwgMykpOworICAgIGlmaWIuaW5zZXJ0
KG1ha2VfcGFpcigxLCAxKSk7CisgICAgaWZpYi5pbnNlcnQobWFrZV9wYWlyKDMsIDQpKTsKKyAg
ICBpZmliLmluc2VydChtYWtlX3BhaXIoMSwgMikpOworICAgIGlmaWIuaW5zZXJ0KG1ha2VfcGFp
cig1LCA1KSk7CisgICAgRVhQRUNUX1RIQVQoaWZpYiwgV2hlblNvcnRlZChFbGVtZW50c0FyZShQ
YWlyKDEsIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UGFpcigxLCAyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFBhaXIoMiwgMyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQYWlyKDMsIDQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUGFpcig1LCA1KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBhaXIoOCwgNikpKSk7CisgICAgRVhQRUNUX1RIQVQoaWZpYiwgTm90KFdoZW5Tb3J0ZWQo
RWxlbWVudHNBcmUoUGFpcig4LCA2KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQYWlyKDIsIDMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBhaXIoMSwgMSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFpcigzLCA0KSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWlyKDEsIDIpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhaXIoNSwgNSkpKSkpOworfQor
CitURVNUKFdoZW5Tb3J0ZWRUZXN0LCBXb3Jrc0ZvclBvbHltb3JwaGljTWF0Y2hlcikgeworICAg
IHN0ZDo6ZGVxdWU8aW50PiBkOworICAgIGQucHVzaF9iYWNrKDIpOworICAgIGQucHVzaF9iYWNr
KDEpOworICAgIEVYUEVDVF9USEFUKGQsIFdoZW5Tb3J0ZWQoRWxlbWVudHNBcmUoMSwgMikpKTsK
KyAgICBFWFBFQ1RfVEhBVChkLCBOb3QoV2hlblNvcnRlZChFbGVtZW50c0FyZSgyLCAxKSkpKTsK
K30KKworVEVTVChXaGVuU29ydGVkVGVzdCwgV29ya3NGb3JWZWN0b3JDb25zdFJlZk1hdGNoZXIp
IHsKKyAgICBzdGQ6OmRlcXVlPGludD4gZDsKKyAgICBkLnB1c2hfYmFjaygyKTsKKyAgICBkLnB1
c2hfYmFjaygxKTsKKyAgICBNYXRjaGVyPGNvbnN0IHN0ZDo6dmVjdG9yPGludD4mPiB2ZWN0b3Jf
bWF0Y2ggPSBFbGVtZW50c0FyZSgxLCAyKTsKKyAgICBFWFBFQ1RfVEhBVChkLCBXaGVuU29ydGVk
KHZlY3Rvcl9tYXRjaCkpOworICAgIE1hdGNoZXI8Y29uc3Qgc3RkOjp2ZWN0b3I8aW50PiY+IG5v
dF92ZWN0b3JfbWF0Y2ggPSBFbGVtZW50c0FyZSgyLCAxKTsKKyAgICBFWFBFQ1RfVEhBVChkLCBO
b3QoV2hlblNvcnRlZChub3RfdmVjdG9yX21hdGNoKSkpOworfQorCisvLyBEZWxpYmVyYXRlbHkg
YmFyZSBwc2V1ZG8tY29udGFpbmVyLgorLy8gT2ZmZXJzIG9ubHkgYmVnaW4oKSBhbmQgZW5kKCkg
YWNjZXNzb3JzLCB5aWVsZGluZyBJbnB1dEl0ZXJhdG9yLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CitjbGFzcyBTdHJlYW1saWtlIHsKKyBwcml2YXRlOgorICBjbGFzcyBDb25zdEl0ZXI7CisgcHVi
bGljOgorICB0eXBlZGVmIENvbnN0SXRlciBjb25zdF9pdGVyYXRvcjsKKyAgdHlwZWRlZiBUIHZh
bHVlX3R5cGU7CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEluSXRlcj4KKyAgU3RyZWFtbGlrZShJ
bkl0ZXIgZmlyc3QsIEluSXRlciBsYXN0KSA6IHJlbWFpbmRlcl8oZmlyc3QsIGxhc3QpIHt9CisK
KyAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7CisgICAgcmV0dXJuIGNvbnN0X2l0ZXJh
dG9yKHRoaXMsIHJlbWFpbmRlcl8uYmVnaW4oKSk7CisgIH0KKyAgY29uc3RfaXRlcmF0b3IgZW5k
KCkgY29uc3QgeworICAgIHJldHVybiBjb25zdF9pdGVyYXRvcih0aGlzLCByZW1haW5kZXJfLmVu
ZCgpKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgY2xhc3MgQ29uc3RJdGVyIDogcHVibGljIHN0ZDo6
aXRlcmF0b3I8c3RkOjppbnB1dF9pdGVyYXRvcl90YWcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhbHVlX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHB0cmRpZmZfdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgdmFsdWVfdHlwZSosCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlX3R5cGUmPiB7CisgICBwdWJsaWM6CisgICAgQ29u
c3RJdGVyKGNvbnN0IFN0cmVhbWxpa2UqIHMsCisgICAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6
bGlzdDx2YWx1ZV90eXBlPjo6aXRlcmF0b3IgcG9zKQorICAgICAgICA6IHNfKHMpLCBwb3NfKHBv
cykge30KKworICAgIGNvbnN0IHZhbHVlX3R5cGUmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJu
ICpwb3NfOyB9CisgICAgY29uc3QgdmFsdWVfdHlwZSogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0
dXJuICYqcG9zXzsgfQorICAgIENvbnN0SXRlciYgb3BlcmF0b3IrKygpIHsKKyAgICAgIHNfLT5y
ZW1haW5kZXJfLmVyYXNlKHBvc18rKyk7CisgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisg
ICAgLy8gKml0ZXIrKyBpcyByZXF1aXJlZCB0byB3b3JrIChzZWUgc3RkOjppc3RyZWFtYnVmX2l0
ZXJhdG9yKS4KKyAgICAvLyAodm9pZClpdGVyKysgaXMgYWxzbyByZXF1aXJlZCB0byB3b3JrLgor
ICAgIGNsYXNzIFBvc3RJbmNyUHJveHkgeworICAgICBwdWJsaWM6CisgICAgICBleHBsaWNpdCBQ
b3N0SW5jclByb3h5KGNvbnN0IHZhbHVlX3R5cGUmIHZhbHVlKSA6IHZhbHVlXyh2YWx1ZSkge30K
KyAgICAgIHZhbHVlX3R5cGUgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gdmFsdWVfOyB9Cisg
ICAgIHByaXZhdGU6CisgICAgICB2YWx1ZV90eXBlIHZhbHVlXzsKKyAgICB9OworICAgIFBvc3RJ
bmNyUHJveHkgb3BlcmF0b3IrKyhpbnQpIHsKKyAgICAgIFBvc3RJbmNyUHJveHkgcHJveHkoKip0
aGlzKTsKKyAgICAgICsrKCp0aGlzKTsKKyAgICAgIHJldHVybiBwcm94eTsKKyAgICB9CisKKyAg
ICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvbnN0SXRlciYgYSwgY29uc3QgQ29uc3RJ
dGVyJiBiKSB7CisgICAgICByZXR1cm4gYS5zXyA9PSBiLnNfICYmIGEucG9zXyA9PSBiLnBvc187
CisgICAgfQorICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgQ29uc3RJdGVyJiBhLCBj
b25zdCBDb25zdEl0ZXImIGIpIHsKKyAgICAgIHJldHVybiAhKGEgPT0gYik7CisgICAgfQorCisg
ICBwcml2YXRlOgorICAgIGNvbnN0IFN0cmVhbWxpa2UqIHNfOworICAgIHR5cGVuYW1lIHN0ZDo6
bGlzdDx2YWx1ZV90eXBlPjo6aXRlcmF0b3IgcG9zXzsKKyAgfTsKKworICBmcmllbmQgc3RkOjpv
c3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IFN0cmVhbWxpa2UmIHMp
IHsKKyAgICBvcyA8PCAiWyI7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6Omxpc3Q8dmFsdWVf
dHlwZT46OmNvbnN0X2l0ZXJhdG9yIEl0ZXI7CisgICAgY29uc3QgY2hhciogc2VwID0gIiI7Cisg
ICAgZm9yIChJdGVyIGl0ID0gcy5yZW1haW5kZXJfLmJlZ2luKCk7IGl0ICE9IHMucmVtYWluZGVy
Xy5lbmQoKTsgKytpdCkgeworICAgICAgb3MgPDwgc2VwIDw8ICppdDsKKyAgICAgIHNlcCA9ICIs
IjsKKyAgICB9CisgICAgb3MgPDwgIl0iOworICAgIHJldHVybiBvczsKKyAgfQorCisgIG11dGFi
bGUgc3RkOjpsaXN0PHZhbHVlX3R5cGU+IHJlbWFpbmRlcl87ICAvLyBtb2RpZmllZCBieSBpdGVy
YXRpb24KK307CisKK1RFU1QoU3RyZWFtbGlrZVRlc3QsIEl0ZXJhdGlvbikgeworICBjb25zdCBp
bnQgYVs1XSA9IHsyLCAxLCA0LCA1LCAzfTsKKyAgU3RyZWFtbGlrZTxpbnQ+IHMoYSwgYSArIDUp
OworICBTdHJlYW1saWtlPGludD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcy5iZWdpbigpOworICBj
b25zdCBpbnQqIGlwID0gYTsKKyAgd2hpbGUgKGl0ICE9IHMuZW5kKCkpIHsKKyAgICBTQ09QRURf
VFJBQ0UoaXAgLSBhKTsKKyAgICBFWFBFQ1RfRVEoKmlwKyssICppdCsrKTsKKyAgfQorfQorCisj
aWYgR1RFU1RfSEFTX1NURF9GT1JXQVJEX0xJU1RfCitURVNUKEJlZ2luRW5kRGlzdGFuY2VJc1Rl
c3QsIFdvcmtzV2l0aEZvcndhcmRMaXN0KSB7CisgIHN0ZDo6Zm9yd2FyZF9saXN0PGludD4gY29u
dGFpbmVyOworICBFWFBFQ1RfVEhBVChjb250YWluZXIsIEJlZ2luRW5kRGlzdGFuY2VJcygwKSk7
CisgIEVYUEVDVF9USEFUKGNvbnRhaW5lciwgTm90KEJlZ2luRW5kRGlzdGFuY2VJcygxKSkpOwor
ICBjb250YWluZXIucHVzaF9mcm9udCgwKTsKKyAgRVhQRUNUX1RIQVQoY29udGFpbmVyLCBOb3Qo
QmVnaW5FbmREaXN0YW5jZUlzKDApKSk7CisgIEVYUEVDVF9USEFUKGNvbnRhaW5lciwgQmVnaW5F
bmREaXN0YW5jZUlzKDEpKTsKKyAgY29udGFpbmVyLnB1c2hfZnJvbnQoMCk7CisgIEVYUEVDVF9U
SEFUKGNvbnRhaW5lciwgTm90KEJlZ2luRW5kRGlzdGFuY2VJcygwKSkpOworICBFWFBFQ1RfVEhB
VChjb250YWluZXIsIEJlZ2luRW5kRGlzdGFuY2VJcygyKSk7Cit9CisjZW5kaWYgIC8vIEdURVNU
X0hBU19TVERfRk9SV0FSRF9MSVNUXworCitURVNUKEJlZ2luRW5kRGlzdGFuY2VJc1Rlc3QsIFdv
cmtzV2l0aE5vblN0ZExpc3QpIHsKKyAgY29uc3QgaW50IGFbNV0gPSB7MSwgMiwgMywgNCwgNX07
CisgIFN0cmVhbWxpa2U8aW50PiBzKGEsIGEgKyA1KTsKKyAgRVhQRUNUX1RIQVQocywgQmVnaW5F
bmREaXN0YW5jZUlzKDUpKTsKK30KKworVEVTVChCZWdpbkVuZERpc3RhbmNlSXNUZXN0LCBDYW5E
ZXNjcmliZVNlbGYpIHsKKyAgTWF0Y2hlcjx2ZWN0b3I8aW50PiA+IG0gPSBCZWdpbkVuZERpc3Rh
bmNlSXMoMik7CisgIEVYUEVDVF9FUSgiZGlzdGFuY2UgYmV0d2VlbiBiZWdpbigpIGFuZCBlbmQo
KSBpcyBlcXVhbCB0byAyIiwgRGVzY3JpYmUobSkpOworICBFWFBFQ1RfRVEoImRpc3RhbmNlIGJl
dHdlZW4gYmVnaW4oKSBhbmQgZW5kKCkgaXNuJ3QgZXF1YWwgdG8gMiIsCisgICAgICAgICAgICBE
ZXNjcmliZU5lZ2F0aW9uKG0pKTsKK30KKworVEVTVChCZWdpbkVuZERpc3RhbmNlSXNUZXN0LCBF
eHBsYWluc1Jlc3VsdCkgeworICBNYXRjaGVyPHZlY3RvcjxpbnQ+ID4gbTEgPSBCZWdpbkVuZERp
c3RhbmNlSXMoMik7CisgIE1hdGNoZXI8dmVjdG9yPGludD4gPiBtMiA9IEJlZ2luRW5kRGlzdGFu
Y2VJcyhMdCgyKSk7CisgIE1hdGNoZXI8dmVjdG9yPGludD4gPiBtMyA9IEJlZ2luRW5kRGlzdGFu
Y2VJcyhBbnlPZigwLCAzKSk7CisgIE1hdGNoZXI8dmVjdG9yPGludD4gPiBtNCA9IEJlZ2luRW5k
RGlzdGFuY2VJcyhHcmVhdGVyVGhhbigxKSk7CisgIHZlY3RvcjxpbnQ+IGNvbnRhaW5lcjsKKyAg
RVhQRUNUX0VRKCJ3aG9zZSBkaXN0YW5jZSBiZXR3ZWVuIGJlZ2luKCkgYW5kIGVuZCgpIDAgZG9l
c24ndCBtYXRjaCIsCisgICAgICAgICAgICBFeHBsYWluKG0xLCBjb250YWluZXIpKTsKKyAgRVhQ
RUNUX0VRKCJ3aG9zZSBkaXN0YW5jZSBiZXR3ZWVuIGJlZ2luKCkgYW5kIGVuZCgpIDAgbWF0Y2hl
cyIsCisgICAgICAgICAgICBFeHBsYWluKG0yLCBjb250YWluZXIpKTsKKyAgRVhQRUNUX0VRKCJ3
aG9zZSBkaXN0YW5jZSBiZXR3ZWVuIGJlZ2luKCkgYW5kIGVuZCgpIDAgbWF0Y2hlcyIsCisgICAg
ICAgICAgICBFeHBsYWluKG0zLCBjb250YWluZXIpKTsKKyAgRVhQRUNUX0VRKAorICAgICAgIndo
b3NlIGRpc3RhbmNlIGJldHdlZW4gYmVnaW4oKSBhbmQgZW5kKCkgMCBkb2Vzbid0IG1hdGNoLCB3
aGljaCBpcyAxICIKKyAgICAgICJsZXNzIHRoYW4gMSIsCisgICAgICBFeHBsYWluKG00LCBjb250
YWluZXIpKTsKKyAgY29udGFpbmVyLnB1c2hfYmFjaygwKTsKKyAgY29udGFpbmVyLnB1c2hfYmFj
aygwKTsKKyAgRVhQRUNUX0VRKCJ3aG9zZSBkaXN0YW5jZSBiZXR3ZWVuIGJlZ2luKCkgYW5kIGVu
ZCgpIDIgbWF0Y2hlcyIsCisgICAgICAgICAgICBFeHBsYWluKG0xLCBjb250YWluZXIpKTsKKyAg
RVhQRUNUX0VRKCJ3aG9zZSBkaXN0YW5jZSBiZXR3ZWVuIGJlZ2luKCkgYW5kIGVuZCgpIDIgZG9l
c24ndCBtYXRjaCIsCisgICAgICAgICAgICBFeHBsYWluKG0yLCBjb250YWluZXIpKTsKKyAgRVhQ
RUNUX0VRKCJ3aG9zZSBkaXN0YW5jZSBiZXR3ZWVuIGJlZ2luKCkgYW5kIGVuZCgpIDIgZG9lc24n
dCBtYXRjaCIsCisgICAgICAgICAgICBFeHBsYWluKG0zLCBjb250YWluZXIpKTsKKyAgRVhQRUNU
X0VRKAorICAgICAgIndob3NlIGRpc3RhbmNlIGJldHdlZW4gYmVnaW4oKSBhbmQgZW5kKCkgMiBt
YXRjaGVzLCB3aGljaCBpcyAxIG1vcmUgIgorICAgICAgInRoYW4gMSIsCisgICAgICBFeHBsYWlu
KG00LCBjb250YWluZXIpKTsKK30KKworVEVTVChXaGVuU29ydGVkVGVzdCwgV29ya3NGb3JTdHJl
YW1saWtlKSB7CisgIC8vIFN0cmVhbWxpa2UgJ2NvbnRhaW5lcicgcHJvdmlkZXMgb25seSBtaW5p
bWFsIGl0ZXJhdG9yIHN1cHBvcnQuCisgIC8vIEl0cyBpdGVyYXRvcnMgYXJlIHRhZ2dlZCB3aXRo
IGlucHV0X2l0ZXJhdG9yX3RhZy4KKyAgY29uc3QgaW50IGFbNV0gPSB7MiwgMSwgNCwgNSwgM307
CisgIFN0cmVhbWxpa2U8aW50PiBzKGEsIGEgKyBHVEVTVF9BUlJBWV9TSVpFXyhhKSk7CisgIEVY
UEVDVF9USEFUKHMsIFdoZW5Tb3J0ZWQoRWxlbWVudHNBcmUoMSwgMiwgMywgNCwgNSkpKTsKKyAg
RVhQRUNUX1RIQVQocywgTm90KFdoZW5Tb3J0ZWQoRWxlbWVudHNBcmUoMiwgMSwgNCwgNSwgMykp
KSk7Cit9CisKK1RFU1QoV2hlblNvcnRlZFRlc3QsIFdvcmtzRm9yVmVjdG9yQ29uc3RSZWZNYXRj
aGVyT25TdHJlYW1saWtlKSB7CisgIGNvbnN0IGludCBhW10gPSB7MiwgMSwgNCwgNSwgM307Cisg
IFN0cmVhbWxpa2U8aW50PiBzKGEsIGEgKyBHVEVTVF9BUlJBWV9TSVpFXyhhKSk7CisgIE1hdGNo
ZXI8Y29uc3Qgc3RkOjp2ZWN0b3I8aW50PiY+IHZlY3Rvcl9tYXRjaCA9IEVsZW1lbnRzQXJlKDEs
IDIsIDMsIDQsIDUpOworICBFWFBFQ1RfVEhBVChzLCBXaGVuU29ydGVkKHZlY3Rvcl9tYXRjaCkp
OworICBFWFBFQ1RfVEhBVChzLCBOb3QoV2hlblNvcnRlZChFbGVtZW50c0FyZSgyLCAxLCA0LCA1
LCAzKSkpKTsKK30KKworLy8gVGVzdHMgdXNpbmcgRWxlbWVudHNBcmUoKSBhbmQgRWxlbWVudHNB
cmVBcnJheSgpIHdpdGggc3RyZWFtLWxpa2UKKy8vICJjb250YWluZXJzIi4KKworVEVTVChFbGVt
ZW5zQXJlU3RyZWFtVGVzdCwgV29ya3NGb3JTdHJlYW1saWtlKSB7CisgIGNvbnN0IGludCBhWzVd
ID0gezEsIDIsIDMsIDQsIDV9OworICBTdHJlYW1saWtlPGludD4gcyhhLCBhICsgR1RFU1RfQVJS
QVlfU0laRV8oYSkpOworICBFWFBFQ1RfVEhBVChzLCBFbGVtZW50c0FyZSgxLCAyLCAzLCA0LCA1
KSk7CisgIEVYUEVDVF9USEFUKHMsIE5vdChFbGVtZW50c0FyZSgyLCAxLCA0LCA1LCAzKSkpOwor
fQorCitURVNUKEVsZW1lbnNBcmVBcnJheVN0cmVhbVRlc3QsIFdvcmtzRm9yU3RyZWFtbGlrZSkg
eworICBjb25zdCBpbnQgYVs1XSA9IHsxLCAyLCAzLCA0LCA1fTsKKyAgU3RyZWFtbGlrZTxpbnQ+
IHMoYSwgYSArIEdURVNUX0FSUkFZX1NJWkVfKGEpKTsKKworICB2ZWN0b3I8aW50PiBleHBlY3Rl
ZDsKKyAgZXhwZWN0ZWQucHVzaF9iYWNrKDEpOworICBleHBlY3RlZC5wdXNoX2JhY2soMik7Cisg
IGV4cGVjdGVkLnB1c2hfYmFjaygzKTsKKyAgZXhwZWN0ZWQucHVzaF9iYWNrKDQpOworICBleHBl
Y3RlZC5wdXNoX2JhY2soNSk7CisgIEVYUEVDVF9USEFUKHMsIEVsZW1lbnRzQXJlQXJyYXkoZXhw
ZWN0ZWQpKTsKKworICBleHBlY3RlZFszXSA9IDA7CisgIEVYUEVDVF9USEFUKHMsIE5vdChFbGVt
ZW50c0FyZUFycmF5KGV4cGVjdGVkKSkpOworfQorCitURVNUKEVsZW1lbnRzQXJlVGVzdCwgV29y
a3NXaXRoVW5jb3B5YWJsZSkgeworICBVbmNvcHlhYmxlIG9ianNbMl07CisgIG9ianNbMF0uc2V0
X3ZhbHVlKC0zKTsKKyAgb2Jqc1sxXS5zZXRfdmFsdWUoMSk7CisgIEVYUEVDVF9USEFUKG9ianMs
IEVsZW1lbnRzQXJlKFVuY29weWFibGVJcygtMyksIFRydWx5KFZhbHVlSXNQb3NpdGl2ZSkpKTsK
K30KKworVEVTVChFbGVtZW50c0FyZVRlc3QsIFRha2VzU3RsQ29udGFpbmVyKSB7CisgIGNvbnN0
IGludCBhY3R1YWxbXSA9IHszLCAxLCAyfTsKKworICA6OnN0ZDo6bGlzdDxpbnQ+IGV4cGVjdGVk
OworICBleHBlY3RlZC5wdXNoX2JhY2soMyk7CisgIGV4cGVjdGVkLnB1c2hfYmFjaygxKTsKKyAg
ZXhwZWN0ZWQucHVzaF9iYWNrKDIpOworICBFWFBFQ1RfVEhBVChhY3R1YWwsIEVsZW1lbnRzQXJl
QXJyYXkoZXhwZWN0ZWQpKTsKKworICBleHBlY3RlZC5wdXNoX2JhY2soNCk7CisgIEVYUEVDVF9U
SEFUKGFjdHVhbCwgTm90KEVsZW1lbnRzQXJlQXJyYXkoZXhwZWN0ZWQpKSk7Cit9CisKKy8vIFRl
c3RzIGZvciBVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KCkKKworVEVTVChVbm9yZGVyZWRFbGVt
ZW50c0FyZUFycmF5VGVzdCwgU3VjY2VlZHNXaGVuRXhwZWN0ZWQpIHsKKyAgY29uc3QgaW50IGFb
XSA9IHswLCAxLCAyLCAzLCA0fTsKKyAgc3RkOjp2ZWN0b3I8aW50PiBzKGEsIGEgKyBHVEVTVF9B
UlJBWV9TSVpFXyhhKSk7CisgIGRvIHsKKyAgICBTdHJpbmdNYXRjaFJlc3VsdExpc3RlbmVyIGxp
c3RlbmVyOworICAgIEVYUEVDVF9UUlVFKEV4cGxhaW5NYXRjaFJlc3VsdChVbm9yZGVyZWRFbGVt
ZW50c0FyZUFycmF5KGEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCAm
bGlzdGVuZXIpKSA8PCBsaXN0ZW5lci5zdHIoKTsKKyAgfSB3aGlsZSAoc3RkOjpuZXh0X3Blcm11
dGF0aW9uKHMuYmVnaW4oKSwgcy5lbmQoKSkpOworfQorCitURVNUKFVub3JkZXJlZEVsZW1lbnRz
QXJlQXJyYXlUZXN0LCBWZWN0b3JCb29sKSB7CisgIGNvbnN0IGJvb2wgYVtdID0gezAsIDEsIDAs
IDEsIDF9OworICBjb25zdCBib29sIGJbXSA9IHsxLCAwLCAxLCAxLCAwfTsKKyAgc3RkOjp2ZWN0
b3I8Ym9vbD4gZXhwZWN0ZWQoYSwgYSArIEdURVNUX0FSUkFZX1NJWkVfKGEpKTsKKyAgc3RkOjp2
ZWN0b3I8Ym9vbD4gYWN0dWFsKGIsIGIgKyBHVEVTVF9BUlJBWV9TSVpFXyhiKSk7CisgIFN0cmlu
Z01hdGNoUmVzdWx0TGlzdGVuZXIgbGlzdGVuZXI7CisgIEVYUEVDVF9UUlVFKEV4cGxhaW5NYXRj
aFJlc3VsdChVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KGV4cGVjdGVkKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbCwgJmxpc3RlbmVyKSkgPDwgbGlzdGVuZXIuc3Ry
KCk7Cit9CisKK1RFU1QoVW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheVRlc3QsIFdvcmtzRm9yU3Ry
ZWFtbGlrZSkgeworICAvLyBTdHJlYW1saWtlICdjb250YWluZXInIHByb3ZpZGVzIG9ubHkgbWlu
aW1hbCBpdGVyYXRvciBzdXBwb3J0LgorICAvLyBJdHMgaXRlcmF0b3JzIGFyZSB0YWdnZWQgd2l0
aCBpbnB1dF9pdGVyYXRvcl90YWcsIGFuZCBpdCBoYXMgbm8KKyAgLy8gc2l6ZSgpIG9yIGVtcHR5
KCkgbWV0aG9kcy4KKyAgY29uc3QgaW50IGFbNV0gPSB7MiwgMSwgNCwgNSwgM307CisgIFN0cmVh
bWxpa2U8aW50PiBzKGEsIGEgKyBHVEVTVF9BUlJBWV9TSVpFXyhhKSk7CisKKyAgOjpzdGQ6OnZl
Y3RvcjxpbnQ+IGV4cGVjdGVkOworICBleHBlY3RlZC5wdXNoX2JhY2soMSk7CisgIGV4cGVjdGVk
LnB1c2hfYmFjaygyKTsKKyAgZXhwZWN0ZWQucHVzaF9iYWNrKDMpOworICBleHBlY3RlZC5wdXNo
X2JhY2soNCk7CisgIGV4cGVjdGVkLnB1c2hfYmFjayg1KTsKKyAgRVhQRUNUX1RIQVQocywgVW5v
cmRlcmVkRWxlbWVudHNBcmVBcnJheShleHBlY3RlZCkpOworCisgIGV4cGVjdGVkLnB1c2hfYmFj
ayg2KTsKKyAgRVhQRUNUX1RIQVQocywgTm90KFVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkoZXhw
ZWN0ZWQpKSk7Cit9CisKK1RFU1QoVW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheVRlc3QsIFRha2Vz
U3RsQ29udGFpbmVyKSB7CisgIGNvbnN0IGludCBhY3R1YWxbXSA9IHszLCAxLCAyfTsKKworICA6
OnN0ZDo6bGlzdDxpbnQ+IGV4cGVjdGVkOworICBleHBlY3RlZC5wdXNoX2JhY2soMSk7CisgIGV4
cGVjdGVkLnB1c2hfYmFjaygyKTsKKyAgZXhwZWN0ZWQucHVzaF9iYWNrKDMpOworICBFWFBFQ1Rf
VEhBVChhY3R1YWwsIFVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkoZXhwZWN0ZWQpKTsKKworICBl
eHBlY3RlZC5wdXNoX2JhY2soNCk7CisgIEVYUEVDVF9USEFUKGFjdHVhbCwgTm90KFVub3JkZXJl
ZEVsZW1lbnRzQXJlQXJyYXkoZXhwZWN0ZWQpKSk7Cit9CisKKyNpZiBHVEVTVF9IQVNfU1REX0lO
SVRJQUxJWkVSX0xJU1RfCisKK1RFU1QoVW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheVRlc3QsIFRh
a2VzSW5pdGlhbGl6ZXJMaXN0KSB7CisgIGNvbnN0IGludCBhWzVdID0gezIsIDEsIDQsIDUsIDN9
OworICBFWFBFQ1RfVEhBVChhLCBVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHsxLCAyLCAzLCA0
LCA1fSkpOworICBFWFBFQ1RfVEhBVChhLCBOb3QoVW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSh7
MSwgMiwgMywgNCwgNn0pKSk7Cit9CisKK1RFU1QoVW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheVRl
c3QsIFRha2VzSW5pdGlhbGl6ZXJMaXN0T2ZDU3RyaW5ncykgeworICBjb25zdCBzdGQ6OnN0cmlu
ZyBhWzVdID0geyJhIiwgImIiLCAiYyIsICJkIiwgImUifTsKKyAgRVhQRUNUX1RIQVQoYSwgVW5v
cmRlcmVkRWxlbWVudHNBcmVBcnJheSh7ImEiLCAiYiIsICJjIiwgImQiLCAiZSJ9KSk7CisgIEVY
UEVDVF9USEFUKGEsIE5vdChVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHsiYSIsICJiIiwgImMi
LCAiZCIsICJlZiJ9KSkpOworfQorCitURVNUKFVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXlUZXN0
LCBUYWtlc0luaXRpYWxpemVyTGlzdE9mU2FtZVR5cGVkTWF0Y2hlcnMpIHsKKyAgY29uc3QgaW50
IGFbNV0gPSB7MiwgMSwgNCwgNSwgM307CisgIEVYUEVDVF9USEFUKGEsIFVub3JkZXJlZEVsZW1l
bnRzQXJlQXJyYXkoCisgICAgICB7RXEoMSksIEVxKDIpLCBFcSgzKSwgRXEoNCksIEVxKDUpfSkp
OworICBFWFBFQ1RfVEhBVChhLCBOb3QoVW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSgKKyAgICAg
IHtFcSgxKSwgRXEoMiksIEVxKDMpLCBFcSg0KSwgRXEoNil9KSkpOworfQorCitURVNUKFVub3Jk
ZXJlZEVsZW1lbnRzQXJlQXJyYXlUZXN0LAorICAgICBUYWtlc0luaXRpYWxpemVyTGlzdE9mRGlm
ZmVyZW50VHlwZWRNYXRjaGVycykgeworICBjb25zdCBpbnQgYVs1XSA9IHsyLCAxLCA0LCA1LCAz
fTsKKyAgLy8gVGhlIGNvbXBpbGVyIGNhbm5vdCBpbmZlciB0aGUgdHlwZSBvZiB0aGUgaW5pdGlh
bGl6ZXIgbGlzdCBpZiBpdHMKKyAgLy8gZWxlbWVudHMgaGF2ZSBkaWZmZXJlbnQgdHlwZXMuICBX
ZSBtdXN0IGV4cGxpY2l0bHkgc3BlY2lmeSB0aGUKKyAgLy8gdW5pZmllZCBlbGVtZW50IHR5cGUg
aW4gdGhpcyBjYXNlLgorICBFWFBFQ1RfVEhBVChhLCBVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5
PE1hdGNoZXI8aW50PiA+KAorICAgICAge0VxKDEpLCBOZSgtMiksIEdlKDMpLCBMZSg0KSwgRXEo
NSl9KSk7CisgIEVYUEVDVF9USEFUKGEsIE5vdChVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5PE1h
dGNoZXI8aW50PiA+KAorICAgICAge0VxKDEpLCBOZSgtMiksIEdlKDMpLCBMZSg0KSwgRXEoNil9
KSkpOworfQorCisjZW5kaWYgIC8vIEdURVNUX0hBU19TVERfSU5JVElBTElaRVJfTElTVF8KKwor
Y2xhc3MgVW5vcmRlcmVkRWxlbWVudHNBcmVUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qgewor
IHByb3RlY3RlZDoKKyAgdHlwZWRlZiBzdGQ6OnZlY3RvcjxpbnQ+IEludFZlYzsKK307CisKK1RF
U1RfRihVbm9yZGVyZWRFbGVtZW50c0FyZVRlc3QsIFdvcmtzV2l0aFVuY29weWFibGUpIHsKKyAg
VW5jb3B5YWJsZSBvYmpzWzJdOworICBvYmpzWzBdLnNldF92YWx1ZSgtMyk7CisgIG9ianNbMV0u
c2V0X3ZhbHVlKDEpOworICBFWFBFQ1RfVEhBVChvYmpzLAorICAgICAgICAgICAgICBVbm9yZGVy
ZWRFbGVtZW50c0FyZShUcnVseShWYWx1ZUlzUG9zaXRpdmUpLCBVbmNvcHlhYmxlSXMoLTMpKSk7
Cit9CisKK1RFU1RfRihVbm9yZGVyZWRFbGVtZW50c0FyZVRlc3QsIFN1Y2NlZWRzV2hlbkV4cGVj
dGVkKSB7CisgIGNvbnN0IGludCBhW10gPSB7MSwgMiwgM307CisgIHN0ZDo6dmVjdG9yPGludD4g
cyhhLCBhICsgR1RFU1RfQVJSQVlfU0laRV8oYSkpOworICBkbyB7CisgICAgU3RyaW5nTWF0Y2hS
ZXN1bHRMaXN0ZW5lciBsaXN0ZW5lcjsKKyAgICBFWFBFQ1RfVFJVRShFeHBsYWluTWF0Y2hSZXN1
bHQoVW5vcmRlcmVkRWxlbWVudHNBcmUoMSwgMiwgMyksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHMsICZsaXN0ZW5lcikpIDw8IGxpc3RlbmVyLnN0cigpOworICB9IHdoaWxl
IChzdGQ6Om5leHRfcGVybXV0YXRpb24ocy5iZWdpbigpLCBzLmVuZCgpKSk7Cit9CisKK1RFU1Rf
RihVbm9yZGVyZWRFbGVtZW50c0FyZVRlc3QsIEZhaWxzV2hlbkFuRWxlbWVudE1hdGNoZXNOb01h
dGNoZXIpIHsKKyAgY29uc3QgaW50IGFbXSA9IHsxLCAyLCAzfTsKKyAgc3RkOjp2ZWN0b3I8aW50
PiBzKGEsIGEgKyBHVEVTVF9BUlJBWV9TSVpFXyhhKSk7CisgIHN0ZDo6dmVjdG9yPE1hdGNoZXI8
aW50PiA+IG12OworICBtdi5wdXNoX2JhY2soMSk7CisgIG12LnB1c2hfYmFjaygyKTsKKyAgbXYu
cHVzaF9iYWNrKDIpOworICAvLyBUaGUgZWxlbWVudCB3aXRoIHZhbHVlICczJyBtYXRjaGVzIG5v
dGhpbmc6IGZhaWwgZmFzdC4KKyAgU3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lciBsaXN0ZW5lcjsK
KyAgRVhQRUNUX0ZBTFNFKEV4cGxhaW5NYXRjaFJlc3VsdChVbm9yZGVyZWRFbGVtZW50c0FyZUFy
cmF5KG12KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCAmbGlzdGVuZXIp
KSA8PCBsaXN0ZW5lci5zdHIoKTsKK30KKworVEVTVF9GKFVub3JkZXJlZEVsZW1lbnRzQXJlVGVz
dCwgV29ya3NGb3JTdHJlYW1saWtlKSB7CisgIC8vIFN0cmVhbWxpa2UgJ2NvbnRhaW5lcicgcHJv
dmlkZXMgb25seSBtaW5pbWFsIGl0ZXJhdG9yIHN1cHBvcnQuCisgIC8vIEl0cyBpdGVyYXRvcnMg
YXJlIHRhZ2dlZCB3aXRoIGlucHV0X2l0ZXJhdG9yX3RhZywgYW5kIGl0IGhhcyBubworICAvLyBz
aXplKCkgb3IgZW1wdHkoKSBtZXRob2RzLgorICBjb25zdCBpbnQgYVs1XSA9IHsyLCAxLCA0LCA1
LCAzfTsKKyAgU3RyZWFtbGlrZTxpbnQ+IHMoYSwgYSArIEdURVNUX0FSUkFZX1NJWkVfKGEpKTsK
KworICBFWFBFQ1RfVEhBVChzLCBVbm9yZGVyZWRFbGVtZW50c0FyZSgxLCAyLCAzLCA0LCA1KSk7
CisgIEVYUEVDVF9USEFUKHMsIE5vdChVbm9yZGVyZWRFbGVtZW50c0FyZSgyLCAyLCAzLCA0LCA1
KSkpOworfQorCisvLyBPbmUgbmFpdmUgaW1wbGVtZW50YXRpb24gb2YgdGhlIG1hdGNoZXIgcnVu
cyBpbiBPKE4hKSB0aW1lLCB3aGljaCBpcyB0b28KKy8vIHNsb3cgZm9yIG1hbnkgcmVhbC13b3Js
ZCBpbnB1dHMuIFRoaXMgdGVzdCBzaG93cyB0aGF0IG91ciBtYXRjaGVyIGNhbiBtYXRjaAorLy8g
MTAwIGlucHV0cyB2ZXJ5IHF1aWNrbHkgKGEgZmV3IG1pbGxpc2Vjb25kcykuICBBbiBPKDEwMCEp
IGlzIDEwXjE1OAorLy8gaXRlcmF0aW9ucyBhbmQgb2J2aW91c2x5IGVmZmVjdGl2ZWx5IGluY29t
cHV0YWJsZS4KKy8vIFsgUlVOICAgICAgXSBVbm9yZGVyZWRFbGVtZW50c0FyZVRlc3QuUGVyZm9y
bWFuY2UKKy8vIFsgICAgICAgT0sgXSBVbm9yZGVyZWRFbGVtZW50c0FyZVRlc3QuUGVyZm9ybWFu
Y2UgKDQgbXMpCitURVNUX0YoVW5vcmRlcmVkRWxlbWVudHNBcmVUZXN0LCBQZXJmb3JtYW5jZSkg
eworICBzdGQ6OnZlY3RvcjxpbnQ+IHM7CisgIHN0ZDo6dmVjdG9yPE1hdGNoZXI8aW50PiA+IG12
OworICBmb3IgKGludCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgcy5wdXNoX2JhY2soaSk7
CisgICAgbXYucHVzaF9iYWNrKF8pOworICB9CisgIG12WzUwXSA9IEVxKDApOworICBTdHJpbmdN
YXRjaFJlc3VsdExpc3RlbmVyIGxpc3RlbmVyOworICBFWFBFQ1RfVFJVRShFeHBsYWluTWF0Y2hS
ZXN1bHQoVW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheShtdiksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzLCAmbGlzdGVuZXIpKSA8PCBsaXN0ZW5lci5zdHIoKTsKK30KKworLy8g
QW5vdGhlciB2YXJpYW50IG9mICdQZXJmb3JtYW5jZScgd2l0aCBzaW1pbGFyIGV4cGVjdGF0aW9u
cy4KKy8vIFsgUlVOICAgICAgXSBVbm9yZGVyZWRFbGVtZW50c0FyZVRlc3QuUGVyZm9ybWFuY2VI
YWxmU3RyaWN0CisvLyBbICAgICAgIE9LIF0gVW5vcmRlcmVkRWxlbWVudHNBcmVUZXN0LlBlcmZv
cm1hbmNlSGFsZlN0cmljdCAoNCBtcykKK1RFU1RfRihVbm9yZGVyZWRFbGVtZW50c0FyZVRlc3Qs
IFBlcmZvcm1hbmNlSGFsZlN0cmljdCkgeworICBzdGQ6OnZlY3RvcjxpbnQ+IHM7CisgIHN0ZDo6
dmVjdG9yPE1hdGNoZXI8aW50PiA+IG12OworICBmb3IgKGludCBpID0gMDsgaSA8IDEwMDsgKytp
KSB7CisgICAgcy5wdXNoX2JhY2soaSk7CisgICAgaWYgKGkgJiAxKSB7CisgICAgICBtdi5wdXNo
X2JhY2soXyk7CisgICAgfSBlbHNlIHsKKyAgICAgIG12LnB1c2hfYmFjayhpKTsKKyAgICB9Cisg
IH0KKyAgU3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lciBsaXN0ZW5lcjsKKyAgRVhQRUNUX1RSVUUo
RXhwbGFpbk1hdGNoUmVzdWx0KFVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkobXYpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgJmxpc3RlbmVyKSkgPDwgbGlzdGVuZXIuc3Ry
KCk7Cit9CisKK1RFU1RfRihVbm9yZGVyZWRFbGVtZW50c0FyZVRlc3QsIEZhaWxNZXNzYWdlQ291
bnRXcm9uZykgeworICBzdGQ6OnZlY3RvcjxpbnQ+IHY7CisgIHYucHVzaF9iYWNrKDQpOworICBT
dHJpbmdNYXRjaFJlc3VsdExpc3RlbmVyIGxpc3RlbmVyOworICBFWFBFQ1RfRkFMU0UoRXhwbGFp
bk1hdGNoUmVzdWx0KFVub3JkZXJlZEVsZW1lbnRzQXJlKDEsIDIsIDMpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHYsICZsaXN0ZW5lcikpIDw8IGxpc3RlbmVyLnN0cigpOwor
ICBFWFBFQ1RfVEhBVChsaXN0ZW5lci5zdHIoKSwgRXEoIndoaWNoIGhhcyAxIGVsZW1lbnQiKSk7
Cit9CisKK1RFU1RfRihVbm9yZGVyZWRFbGVtZW50c0FyZVRlc3QsIEZhaWxNZXNzYWdlQ291bnRX
cm9uZ1plcm8pIHsKKyAgc3RkOjp2ZWN0b3I8aW50PiB2OworICBTdHJpbmdNYXRjaFJlc3VsdExp
c3RlbmVyIGxpc3RlbmVyOworICBFWFBFQ1RfRkFMU0UoRXhwbGFpbk1hdGNoUmVzdWx0KFVub3Jk
ZXJlZEVsZW1lbnRzQXJlKDEsIDIsIDMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHYsICZsaXN0ZW5lcikpIDw8IGxpc3RlbmVyLnN0cigpOworICBFWFBFQ1RfVEhBVChsaXN0
ZW5lci5zdHIoKSwgRXEoIiIpKTsKK30KKworVEVTVF9GKFVub3JkZXJlZEVsZW1lbnRzQXJlVGVz
dCwgRmFpbE1lc3NhZ2VVbm1hdGNoZWRNYXRjaGVycykgeworICBzdGQ6OnZlY3RvcjxpbnQ+IHY7
CisgIHYucHVzaF9iYWNrKDEpOworICB2LnB1c2hfYmFjaygxKTsKKyAgU3RyaW5nTWF0Y2hSZXN1
bHRMaXN0ZW5lciBsaXN0ZW5lcjsKKyAgRVhQRUNUX0ZBTFNFKEV4cGxhaW5NYXRjaFJlc3VsdChV
bm9yZGVyZWRFbGVtZW50c0FyZSgxLCAyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2LCAmbGlzdGVuZXIpKSA8PCBsaXN0ZW5lci5zdHIoKTsKKyAgRVhQRUNUX1RIQVQoCisg
ICAgICBsaXN0ZW5lci5zdHIoKSwKKyAgICAgIEVxKCJ3aGVyZSB0aGUgZm9sbG93aW5nIG1hdGNo
ZXJzIGRvbid0IG1hdGNoIGFueSBlbGVtZW50czpcbiIKKyAgICAgICAgICJtYXRjaGVyICMxOiBp
cyBlcXVhbCB0byAyIikpOworfQorCitURVNUX0YoVW5vcmRlcmVkRWxlbWVudHNBcmVUZXN0LCBG
YWlsTWVzc2FnZVVubWF0Y2hlZEVsZW1lbnRzKSB7CisgIHN0ZDo6dmVjdG9yPGludD4gdjsKKyAg
di5wdXNoX2JhY2soMSk7CisgIHYucHVzaF9iYWNrKDIpOworICBTdHJpbmdNYXRjaFJlc3VsdExp
c3RlbmVyIGxpc3RlbmVyOworICBFWFBFQ1RfRkFMU0UoRXhwbGFpbk1hdGNoUmVzdWx0KFVub3Jk
ZXJlZEVsZW1lbnRzQXJlKDEsIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHYsICZsaXN0ZW5lcikpIDw8IGxpc3RlbmVyLnN0cigpOworICBFWFBFQ1RfVEhBVCgKKyAgICAg
IGxpc3RlbmVyLnN0cigpLAorICAgICAgRXEoIndoZXJlIHRoZSBmb2xsb3dpbmcgZWxlbWVudHMg
ZG9uJ3QgbWF0Y2ggYW55IG1hdGNoZXJzOlxuIgorICAgICAgICAgImVsZW1lbnQgIzE6IDIiKSk7
Cit9CisKK1RFU1RfRihVbm9yZGVyZWRFbGVtZW50c0FyZVRlc3QsIEZhaWxNZXNzYWdlVW5tYXRj
aGVkTWF0Y2hlckFuZEVsZW1lbnQpIHsKKyAgc3RkOjp2ZWN0b3I8aW50PiB2OworICB2LnB1c2hf
YmFjaygyKTsKKyAgdi5wdXNoX2JhY2soMyk7CisgIFN0cmluZ01hdGNoUmVzdWx0TGlzdGVuZXIg
bGlzdGVuZXI7CisgIEVYUEVDVF9GQUxTRShFeHBsYWluTWF0Y2hSZXN1bHQoVW5vcmRlcmVkRWxl
bWVudHNBcmUoMSwgMiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiwgJmxp
c3RlbmVyKSkgPDwgbGlzdGVuZXIuc3RyKCk7CisgIEVYUEVDVF9USEFUKAorICAgICAgbGlzdGVu
ZXIuc3RyKCksCisgICAgICBFcSgid2hlcmUiCisgICAgICAgICAiIHRoZSBmb2xsb3dpbmcgbWF0
Y2hlcnMgZG9uJ3QgbWF0Y2ggYW55IGVsZW1lbnRzOlxuIgorICAgICAgICAgIm1hdGNoZXIgIzA6
IGlzIGVxdWFsIHRvIDFcbiIKKyAgICAgICAgICJhbmQiCisgICAgICAgICAiIHdoZXJlIgorICAg
ICAgICAgIiB0aGUgZm9sbG93aW5nIGVsZW1lbnRzIGRvbid0IG1hdGNoIGFueSBtYXRjaGVyczpc
biIKKyAgICAgICAgICJlbGVtZW50ICMxOiAzIikpOworfQorCisvLyBUZXN0IGhlbHBlciBmb3Ig
Zm9ybWF0dGluZyBlbGVtZW50LCBtYXRjaGVyIGluZGV4IHBhaXJzIGluIGV4cGVjdGF0aW9ucy4K
K3N0YXRpYyBzdGQ6OnN0cmluZyBFTVN0cmluZyhpbnQgZWxlbWVudCwgaW50IG1hdGNoZXIpIHsK
KyAgc3RyaW5nc3RyZWFtIHNzOworICBzcyA8PCAiKGVsZW1lbnQgIyIgPDwgZWxlbWVudCA8PCAi
LCBtYXRjaGVyICMiIDw8IG1hdGNoZXIgPDwgIikiOworICByZXR1cm4gc3Muc3RyKCk7Cit9CisK
K1RFU1RfRihVbm9yZGVyZWRFbGVtZW50c0FyZVRlc3QsIEZhaWxNZXNzYWdlSW1wZXJmZWN0TWF0
Y2hPbmx5KSB7CisgIC8vIEEgc2l0dWF0aW9uIHdoZXJlIGFsbCBlbGVtZW50cyBhbmQgbWF0Y2hl
cnMgaGF2ZSBhIG1hdGNoCisgIC8vIGFzc29jaWF0ZWQgd2l0aCB0aGVtLCBidXQgdGhlIG1heCBt
YXRjaGluZyBpcyBub3QgcGVyZmVjdC4KKyAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHY7Cisg
IHYucHVzaF9iYWNrKCJhIik7CisgIHYucHVzaF9iYWNrKCJiIik7CisgIHYucHVzaF9iYWNrKCJj
Iik7CisgIFN0cmluZ01hdGNoUmVzdWx0TGlzdGVuZXIgbGlzdGVuZXI7CisgIEVYUEVDVF9GQUxT
RShFeHBsYWluTWF0Y2hSZXN1bHQoCisgICAgICBVbm9yZGVyZWRFbGVtZW50c0FyZSgiYSIsICJh
IiwgQW55T2YoImIiLCAiYyIpKSwgdiwgJmxpc3RlbmVyKSkKKyAgICAgIDw8IGxpc3RlbmVyLnN0
cigpOworCisgIHN0ZDo6c3RyaW5nIHByZWZpeCA9CisgICAgICAid2hlcmUgbm8gcGVybXV0YXRp
b24gb2YgdGhlIGVsZW1lbnRzIGNhbiBzYXRpc2Z5IGFsbCBtYXRjaGVycywgIgorICAgICAgImFu
ZCB0aGUgY2xvc2VzdCBtYXRjaCBpcyAyIG9mIDMgbWF0Y2hlcnMgd2l0aCB0aGUgIgorICAgICAg
InBhaXJpbmdzOlxuIjsKKworICAvLyBXZSBoYXZlIHRvIGJlIGEgYml0IGxvb3NlIGhlcmUsIGJl
Y2F1c2UgdGhlcmUgYXJlIDQgdmFsaWQgbWF4IG1hdGNoZXMuCisgIEVYUEVDVF9USEFUKAorICAg
ICAgbGlzdGVuZXIuc3RyKCksCisgICAgICBBbnlPZihwcmVmaXggKyAie1xuICAiICsgRU1TdHJp
bmcoMCwgMCkgKworICAgICAgICAgICAgICAgICAgICAgIixcbiAgIiArIEVNU3RyaW5nKDEsIDIp
ICsgIlxufSIsCisgICAgICAgICAgICBwcmVmaXggKyAie1xuICAiICsgRU1TdHJpbmcoMCwgMSkg
KworICAgICAgICAgICAgICAgICAgICAgIixcbiAgIiArIEVNU3RyaW5nKDEsIDIpICsgIlxufSIs
CisgICAgICAgICAgICBwcmVmaXggKyAie1xuICAiICsgRU1TdHJpbmcoMCwgMCkgKworICAgICAg
ICAgICAgICAgICAgICAgIixcbiAgIiArIEVNU3RyaW5nKDIsIDIpICsgIlxufSIsCisgICAgICAg
ICAgICBwcmVmaXggKyAie1xuICAiICsgRU1TdHJpbmcoMCwgMSkgKworICAgICAgICAgICAgICAg
ICAgICAgIixcbiAgIiArIEVNU3RyaW5nKDIsIDIpICsgIlxufSIpKTsKK30KKworVEVTVF9GKFVu
b3JkZXJlZEVsZW1lbnRzQXJlVGVzdCwgRGVzY3JpYmUpIHsKKyAgRVhQRUNUX1RIQVQoRGVzY3Jp
YmU8SW50VmVjPihVbm9yZGVyZWRFbGVtZW50c0FyZSgpKSwKKyAgICAgICAgICAgICAgRXEoImlz
IGVtcHR5IikpOworICBFWFBFQ1RfVEhBVCgKKyAgICAgIERlc2NyaWJlPEludFZlYz4oVW5vcmRl
cmVkRWxlbWVudHNBcmUoMzQ1KSksCisgICAgICBFcSgiaGFzIDEgZWxlbWVudCBhbmQgdGhhdCBl
bGVtZW50IGlzIGVxdWFsIHRvIDM0NSIpKTsKKyAgRVhQRUNUX1RIQVQoCisgICAgICBEZXNjcmli
ZTxJbnRWZWM+KFVub3JkZXJlZEVsZW1lbnRzQXJlKDExMSwgMjIyLCAzMzMpKSwKKyAgICAgIEVx
KCJoYXMgMyBlbGVtZW50cyBhbmQgdGhlcmUgZXhpc3RzIHNvbWUgcGVybXV0YXRpb24gIgorICAg
ICAgICAgIm9mIGVsZW1lbnRzIHN1Y2ggdGhhdDpcbiIKKyAgICAgICAgICIgLSBlbGVtZW50ICMw
IGlzIGVxdWFsIHRvIDExMSwgYW5kXG4iCisgICAgICAgICAiIC0gZWxlbWVudCAjMSBpcyBlcXVh
bCB0byAyMjIsIGFuZFxuIgorICAgICAgICAgIiAtIGVsZW1lbnQgIzIgaXMgZXF1YWwgdG8gMzMz
IikpOworfQorCitURVNUX0YoVW5vcmRlcmVkRWxlbWVudHNBcmVUZXN0LCBEZXNjcmliZU5lZ2F0
aW9uKSB7CisgIEVYUEVDVF9USEFUKERlc2NyaWJlTmVnYXRpb248SW50VmVjPihVbm9yZGVyZWRF
bGVtZW50c0FyZSgpKSwKKyAgICAgICAgICAgICAgRXEoImlzbid0IGVtcHR5IikpOworICBFWFBF
Q1RfVEhBVCgKKyAgICAgIERlc2NyaWJlTmVnYXRpb248SW50VmVjPihVbm9yZGVyZWRFbGVtZW50
c0FyZSgzNDUpKSwKKyAgICAgIEVxKCJkb2Vzbid0IGhhdmUgMSBlbGVtZW50LCBvciBoYXMgMSBl
bGVtZW50IHRoYXQgaXNuJ3QgZXF1YWwgdG8gMzQ1IikpOworICBFWFBFQ1RfVEhBVCgKKyAgICAg
IERlc2NyaWJlTmVnYXRpb248SW50VmVjPihVbm9yZGVyZWRFbGVtZW50c0FyZSgxMjMsIDIzNCwg
MzQ1KSksCisgICAgICBFcSgiZG9lc24ndCBoYXZlIDMgZWxlbWVudHMsIG9yIHRoZXJlIGV4aXN0
cyBubyBwZXJtdXRhdGlvbiAiCisgICAgICAgICAib2YgZWxlbWVudHMgc3VjaCB0aGF0OlxuIgor
ICAgICAgICAgIiAtIGVsZW1lbnQgIzAgaXMgZXF1YWwgdG8gMTIzLCBhbmRcbiIKKyAgICAgICAg
ICIgLSBlbGVtZW50ICMxIGlzIGVxdWFsIHRvIDIzNCwgYW5kXG4iCisgICAgICAgICAiIC0gZWxl
bWVudCAjMiBpcyBlcXVhbCB0byAzNDUiKSk7Cit9CisKK25hbWVzcGFjZSB7CisKKy8vIFVzZWQg
YXMgYSBjaGVjayBvbiB0aGUgbW9yZSBjb21wbGV4IG1heCBmbG93IG1ldGhvZCB1c2VkIGluIHRo
ZQorLy8gcmVhbCB0ZXN0aW5nOjppbnRlcm5hbDo6RmluZE1heEJpcGFydGl0ZU1hdGNoaW5nLiBU
aGlzIG1ldGhvZCBpcworLy8gY29tcGF0aWJsZSBidXQgcnVucyBpbiB3b3JzdC1jYXNlIGZhY3Rv
cmlhbCB0aW1lLCBzbyB3ZSBvbmx5CisvLyB1c2UgaXQgaW4gdGVzdGluZyBmb3Igc21hbGwgcHJv
YmxlbSBzaXplcy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBHcmFwaD4KK2NsYXNzIEJhY2t0cmFja2lu
Z01heEJQTVN0YXRlIHsKKyBwdWJsaWM6CisgIC8vIERvZXMgbm90IHRha2Ugb3duZXJzaGlwIG9m
ICdnJy4KKyAgZXhwbGljaXQgQmFja3RyYWNraW5nTWF4QlBNU3RhdGUoY29uc3QgR3JhcGgqIGcp
IDogZ3JhcGhfKGcpIHsgfQorCisgIEVsZW1lbnRNYXRjaGVyUGFpcnMgQ29tcHV0ZSgpIHsKKyAg
ICBpZiAoZ3JhcGhfLT5MaHNTaXplKCkgPT0gMCB8fCBncmFwaF8tPlJoc1NpemUoKSA9PSAwKSB7
CisgICAgICByZXR1cm4gYmVzdF9zb19mYXJfOworICAgIH0KKyAgICBsaHNfdXNlZF8uYXNzaWdu
KGdyYXBoXy0+TGhzU2l6ZSgpLCBrVW51c2VkKTsKKyAgICByaHNfdXNlZF8uYXNzaWduKGdyYXBo
Xy0+UmhzU2l6ZSgpLCBrVW51c2VkKTsKKyAgICBmb3IgKHNpemVfdCBpcmhzID0gMDsgaXJocyA8
IGdyYXBoXy0+UmhzU2l6ZSgpOyArK2lyaHMpIHsKKyAgICAgIG1hdGNoZXNfLmNsZWFyKCk7Cisg
ICAgICBSZWN1cnNlSW50byhpcmhzKTsKKyAgICAgIGlmIChiZXN0X3NvX2Zhcl8uc2l6ZSgpID09
IGdyYXBoXy0+UmhzU2l6ZSgpKQorICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIGJl
c3Rfc29fZmFyXzsKKyAgfQorCisgcHJpdmF0ZToKKyAgc3RhdGljIGNvbnN0IHNpemVfdCBrVW51
c2VkID0gc3RhdGljX2Nhc3Q8c2l6ZV90PigtMSk7CisKKyAgdm9pZCBQdXNoTWF0Y2goc2l6ZV90
IGxocywgc2l6ZV90IHJocykgeworICAgIG1hdGNoZXNfLnB1c2hfYmFjayhFbGVtZW50TWF0Y2hl
clBhaXIobGhzLCByaHMpKTsKKyAgICBsaHNfdXNlZF9bbGhzXSA9IHJoczsKKyAgICByaHNfdXNl
ZF9bcmhzXSA9IGxoczsKKyAgICBpZiAobWF0Y2hlc18uc2l6ZSgpID4gYmVzdF9zb19mYXJfLnNp
emUoKSkgeworICAgICAgYmVzdF9zb19mYXJfID0gbWF0Y2hlc187CisgICAgfQorICB9CisKKyAg
dm9pZCBQb3BNYXRjaCgpIHsKKyAgICBjb25zdCBFbGVtZW50TWF0Y2hlclBhaXImIGJhY2sgPSBt
YXRjaGVzXy5iYWNrKCk7CisgICAgbGhzX3VzZWRfW2JhY2suZmlyc3RdID0ga1VudXNlZDsKKyAg
ICByaHNfdXNlZF9bYmFjay5zZWNvbmRdID0ga1VudXNlZDsKKyAgICBtYXRjaGVzXy5wb3BfYmFj
aygpOworICB9CisKKyAgYm9vbCBSZWN1cnNlSW50byhzaXplX3QgaXJocykgeworICAgIGlmIChy
aHNfdXNlZF9baXJoc10gIT0ga1VudXNlZCkgeworICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
ICAgIGZvciAoc2l6ZV90IGlsaHMgPSAwOyBpbGhzIDwgZ3JhcGhfLT5MaHNTaXplKCk7ICsraWxo
cykgeworICAgICAgaWYgKGxoc191c2VkX1tpbGhzXSAhPSBrVW51c2VkKSB7CisgICAgICAgIGNv
bnRpbnVlOworICAgICAgfQorICAgICAgaWYgKCFncmFwaF8tPkhhc0VkZ2UoaWxocywgaXJocykp
IHsKKyAgICAgICAgY29udGludWU7CisgICAgICB9CisgICAgICBQdXNoTWF0Y2goaWxocywgaXJo
cyk7CisgICAgICBpZiAoYmVzdF9zb19mYXJfLnNpemUoKSA9PSBncmFwaF8tPlJoc1NpemUoKSkg
eworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAgICBmb3IgKHNpemVfdCBtaSA9
IGlyaHMgKyAxOyBtaSA8IGdyYXBoXy0+UmhzU2l6ZSgpOyArK21pKSB7CisgICAgICAgIGlmICgh
UmVjdXJzZUludG8obWkpKSByZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAgICBQb3BNYXRjaCgp
OworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorCisgIGNvbnN0IEdyYXBoKiBncmFwaF87
ICAvLyBub3Qgb3duZWQKKyAgc3RkOjp2ZWN0b3I8c2l6ZV90PiBsaHNfdXNlZF87CisgIHN0ZDo6
dmVjdG9yPHNpemVfdD4gcmhzX3VzZWRfOworICBFbGVtZW50TWF0Y2hlclBhaXJzIG1hdGNoZXNf
OworICBFbGVtZW50TWF0Y2hlclBhaXJzIGJlc3Rfc29fZmFyXzsKK307CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBHcmFwaD4KK2NvbnN0IHNpemVfdCBCYWNrdHJhY2tpbmdNYXhCUE1TdGF0ZTxHcmFw
aD46OmtVbnVzZWQ7CisKK30gIC8vIG5hbWVzcGFjZQorCisvLyBJbXBsZW1lbnQgYSBzaW1wbGUg
YmFja3RyYWNraW5nIGFsZ29yaXRobSB0byBkZXRlcm1pbmUgaWYgaXQgaXMgcG9zc2libGUKKy8v
IHRvIGZpbmQgb25lIGVsZW1lbnQgcGVyIG1hdGNoZXIsIHdpdGhvdXQgcmV1c2luZyBlbGVtZW50
cy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBHcmFwaD4KK0VsZW1lbnRNYXRjaGVyUGFpcnMKK0ZpbmRC
YWNrdHJhY2tpbmdNYXhCUE0oY29uc3QgR3JhcGgmIGcpIHsKKyAgcmV0dXJuIEJhY2t0cmFja2lu
Z01heEJQTVN0YXRlPEdyYXBoPigmZykuQ29tcHV0ZSgpOworfQorCitjbGFzcyBCYWNrdHJhY2tp
bmdCUE1UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7IH07CisKKy8vIFRlc3RzIHRoZSBN
YXhCaXBhcnRpdGVNYXRjaGluZyBhbGdvcml0aG0gd2l0aCBzcXVhcmUgbWF0cmljZXMuCisvLyBU
aGUgc2luZ2xlIGludCBwYXJhbSBpcyB0aGUgIyBvZiBub2RlcyBvbiBlYWNoIG9mIHRoZSBsZWZ0
IGFuZCByaWdodCBzaWRlcy4KK2NsYXNzIEJpcGFydGl0ZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5n
OjpUZXN0V2l0aFBhcmFtPGludD4geyB9OworCisvLyBWZXJpZnkgYWxsIG1hdGNoIGdyYXBocyB1
cCB0byBzb21lIG1vZGVyYXRlIG51bWJlciBvZiBlZGdlcy4KK1RFU1RfUChCaXBhcnRpdGVUZXN0
LCBFeGhhdXN0aXZlKSB7CisgIGludCBub2RlcyA9IEdldFBhcmFtKCk7CisgIE1hdGNoTWF0cml4
IGdyYXBoKG5vZGVzLCBub2Rlcyk7CisgIGRvIHsKKyAgICBFbGVtZW50TWF0Y2hlclBhaXJzIG1h
dGNoZXMgPQorICAgICAgICBpbnRlcm5hbDo6RmluZE1heEJpcGFydGl0ZU1hdGNoaW5nKGdyYXBo
KTsKKyAgICBFWFBFQ1RfRVEoRmluZEJhY2t0cmFja2luZ01heEJQTShncmFwaCkuc2l6ZSgpLCBt
YXRjaGVzLnNpemUoKSkKKyAgICAgICAgPDwgImdyYXBoOiAiIDw8IGdyYXBoLkRlYnVnU3RyaW5n
KCk7CisgICAgLy8gQ2hlY2sgdGhhdCBhbGwgZWxlbWVudHMgb2YgbWF0Y2hlcyBhcmUgaW4gdGhl
IGdyYXBoLgorICAgIC8vIENoZWNrIHRoYXQgZWxlbWVudHMgb2YgZmlyc3QgYW5kIHNlY29uZCBh
cmUgdW5pcXVlLgorICAgIHN0ZDo6dmVjdG9yPGJvb2w+IHNlZW5fZWxlbWVudChncmFwaC5MaHNT
aXplKCkpOworICAgIHN0ZDo6dmVjdG9yPGJvb2w+IHNlZW5fbWF0Y2hlcihncmFwaC5SaHNTaXpl
KCkpOworICAgIFNDT1BFRF9UUkFDRShQcmludFRvU3RyaW5nKG1hdGNoZXMpKTsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1hdGNoZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgIHNpemVfdCBp
bGhzID0gbWF0Y2hlc1tpXS5maXJzdDsKKyAgICAgIHNpemVfdCBpcmhzID0gbWF0Y2hlc1tpXS5z
ZWNvbmQ7CisgICAgICBFWFBFQ1RfVFJVRShncmFwaC5IYXNFZGdlKGlsaHMsIGlyaHMpKTsKKyAg
ICAgIEVYUEVDVF9GQUxTRShzZWVuX2VsZW1lbnRbaWxoc10pOworICAgICAgRVhQRUNUX0ZBTFNF
KHNlZW5fbWF0Y2hlcltpcmhzXSk7CisgICAgICBzZWVuX2VsZW1lbnRbaWxoc10gPSB0cnVlOwor
ICAgICAgc2Vlbl9tYXRjaGVyW2lyaHNdID0gdHJ1ZTsKKyAgICB9CisgIH0gd2hpbGUgKGdyYXBo
Lk5leHRHcmFwaCgpKTsKK30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoQWxsR3JhcGhzLCBC
aXBhcnRpdGVUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpSYW5nZSgw
LCA1KSk7CisKKy8vIFBhcmFtZXRlcml6ZWQgYnkgYSBwYWlyIGludGVycHJldGVkIGFzIChMaHNT
aXplLCBSaHNTaXplKS4KK2NsYXNzIEJpcGFydGl0ZU5vblNxdWFyZVRlc3QKKyAgICA6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08c3RkOjpwYWlyPHNpemVfdCwgc2l6ZV90PiA+IHsK
K307CisKK1RFU1RfRihCaXBhcnRpdGVOb25TcXVhcmVUZXN0LCBTaW1wbGVCYWNrdHJhY2tpbmcp
IHsKKyAgLy8gICAuLi4uLi4uCisgIC8vIDA6LS0tLS1cIDoKKyAgLy8gMTotLS1cIHwgOgorICAv
LyAyOi0tLVwgfCA6CisgIC8vIDM6LVwgfCB8IDoKKyAgLy8gIDouLi4uLi4uOgorICAvLyAgICAw
IDEgMgorICBNYXRjaE1hdHJpeCBnKDQsIDMpOworICBzdGF0aWMgY29uc3QgaW50IGtFZGdlc1td
WzJdID0ge3swLCAyfSwgezEsIDF9LCB7MiwgMX0sIHszLCAwfX07CisgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgR1RFU1RfQVJSQVlfU0laRV8oa0VkZ2VzKTsgKytpKSB7CisgICAgZy5TZXRFZGdl
KGtFZGdlc1tpXVswXSwga0VkZ2VzW2ldWzFdLCB0cnVlKTsKKyAgfQorICBFWFBFQ1RfVEhBVChG
aW5kQmFja3RyYWNraW5nTWF4QlBNKGcpLAorICAgICAgICAgICAgICBFbGVtZW50c0FyZShQYWly
KDMsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICBQYWlyKEFueU9mKDEsIDIpLCAxKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgUGFpcigwLCAyKSkpIDw8IGcuRGVidWdTdHJpbmco
KTsKK30KKworLy8gVmVyaWZ5IGEgZmV3IG5vbnNxdWFyZSBtYXRyaWNlcy4KK1RFU1RfUChCaXBh
cnRpdGVOb25TcXVhcmVUZXN0LCBFeGhhdXN0aXZlKSB7CisgIHNpemVfdCBubGhzID0gR2V0UGFy
YW0oKS5maXJzdDsKKyAgc2l6ZV90IG5yaHMgPSBHZXRQYXJhbSgpLnNlY29uZDsKKyAgTWF0Y2hN
YXRyaXggZ3JhcGgobmxocywgbnJocyk7CisgIGRvIHsKKyAgICBFWFBFQ1RfRVEoRmluZEJhY2t0
cmFja2luZ01heEJQTShncmFwaCkuc2l6ZSgpLAorICAgICAgICAgICAgICBpbnRlcm5hbDo6Rmlu
ZE1heEJpcGFydGl0ZU1hdGNoaW5nKGdyYXBoKS5zaXplKCkpCisgICAgICAgIDw8ICJncmFwaDog
IiA8PCBncmFwaC5EZWJ1Z1N0cmluZygpCisgICAgICAgIDw8ICJcbmJhY2t0cmFja2luZzogIgor
ICAgICAgICA8PCBQcmludFRvU3RyaW5nKEZpbmRCYWNrdHJhY2tpbmdNYXhCUE0oZ3JhcGgpKQor
ICAgICAgICA8PCAiXG5tYXggZmxvdzogIgorICAgICAgICA8PCBQcmludFRvU3RyaW5nKGludGVy
bmFsOjpGaW5kTWF4QmlwYXJ0aXRlTWF0Y2hpbmcoZ3JhcGgpKTsKKyAgfSB3aGlsZSAoZ3JhcGgu
TmV4dEdyYXBoKCkpOworfQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChBbGxHcmFwaHMsIEJp
cGFydGl0ZU5vblNxdWFyZVRlc3QsCisgICAgdGVzdGluZzo6VmFsdWVzKAorICAgICAgICBzdGQ6
Om1ha2VfcGFpcigxLCAyKSwKKyAgICAgICAgc3RkOjptYWtlX3BhaXIoMiwgMSksCisgICAgICAg
IHN0ZDo6bWFrZV9wYWlyKDMsIDIpLAorICAgICAgICBzdGQ6Om1ha2VfcGFpcigyLCAzKSwKKyAg
ICAgICAgc3RkOjptYWtlX3BhaXIoNCwgMSksCisgICAgICAgIHN0ZDo6bWFrZV9wYWlyKDEsIDQp
LAorICAgICAgICBzdGQ6Om1ha2VfcGFpcig0LCAzKSwKKyAgICAgICAgc3RkOjptYWtlX3BhaXIo
MywgNCkpKTsKKworY2xhc3MgQmlwYXJ0aXRlUmFuZG9tVGVzdAorICAgIDogcHVibGljIDo6dGVz
dGluZzo6VGVzdFdpdGhQYXJhbTxzdGQ6OnBhaXI8aW50LCBpbnQ+ID4geworfTsKKworLy8gVmVy
aWZpZXMgYSBsYXJnZSBzYW1wbGUgb2YgbGFyZ2VyIGdyYXBocy4KK1RFU1RfUChCaXBhcnRpdGVS
YW5kb21UZXN0LCBMYXJnZXJOZXRzKSB7CisgIGludCBub2RlcyA9IEdldFBhcmFtKCkuZmlyc3Q7
CisgIGludCBpdGVycyA9IEdldFBhcmFtKCkuc2Vjb25kOworICBNYXRjaE1hdHJpeCBncmFwaChu
b2Rlcywgbm9kZXMpOworCisgIHRlc3Rpbmc6OmludGVybmFsOjpJbnQzMiBzZWVkID0gR1RFU1Rf
RkxBRyhyYW5kb21fc2VlZCk7CisgIGlmIChzZWVkID09IDApIHsKKyAgICBzZWVkID0gc3RhdGlj
X2Nhc3Q8dGVzdGluZzo6aW50ZXJuYWw6OkludDMyPih0aW1lKE5VTEwpKTsKKyAgfQorCisgIGZv
ciAoOyBpdGVycyA+IDA7IC0taXRlcnMsICsrc2VlZCkgeworICAgIHNyYW5kKHN0YXRpY19jYXN0
PGludD4oc2VlZCkpOworICAgIGdyYXBoLlJhbmRvbWl6ZSgpOworICAgIEVYUEVDVF9FUShGaW5k
QmFja3RyYWNraW5nTWF4QlBNKGdyYXBoKS5zaXplKCksCisgICAgICAgICAgICAgIGludGVybmFs
OjpGaW5kTWF4QmlwYXJ0aXRlTWF0Y2hpbmcoZ3JhcGgpLnNpemUoKSkKKyAgICAgICAgPDwgIiBn
cmFwaDogIiA8PCBncmFwaC5EZWJ1Z1N0cmluZygpCisgICAgICAgIDw8ICJcblRvIHJlcHJvZHVj
ZSB0aGUgZmFpbHVyZSwgcmVydW4gdGhlIHRlc3Qgd2l0aCB0aGUgZmxhZyIKKyAgICAgICAgICAg
IiAtLSIgPDwgR1RFU1RfRkxBR19QUkVGSVhfIDw8ICJyYW5kb21fc2VlZD0iIDw8IHNlZWQ7Cisg
IH0KK30KKworLy8gVGVzdCBhcmd1bWVudCBpcyBhIHN0ZDo6cGFpcjxpbnQsIGludD4gcmVwcmVz
ZW50aW5nIChub2RlcywgaXRlcnMpLgorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2FtcGxlcywg
QmlwYXJ0aXRlUmFuZG9tVGVzdCwKKyAgICB0ZXN0aW5nOjpWYWx1ZXMoCisgICAgICAgIHN0ZDo6
bWFrZV9wYWlyKDUsIDEwMDAwKSwKKyAgICAgICAgc3RkOjptYWtlX3BhaXIoNiwgNTAwMCksCisg
ICAgICAgIHN0ZDo6bWFrZV9wYWlyKDcsIDIwMDApLAorICAgICAgICBzdGQ6Om1ha2VfcGFpcig4
LCA1MDApLAorICAgICAgICBzdGQ6Om1ha2VfcGFpcig5LCAxMDApKSk7CisKKy8vIFRlc3RzIElz
UmVhZGFibGVUeXBlTmFtZSgpLgorCitURVNUKElzUmVhZGFibGVUeXBlTmFtZVRlc3QsIFJldHVy
bnNUcnVlRm9yU2hvcnROYW1lcykgeworICBFWFBFQ1RfVFJVRShJc1JlYWRhYmxlVHlwZU5hbWUo
ImludCIpKTsKKyAgRVhQRUNUX1RSVUUoSXNSZWFkYWJsZVR5cGVOYW1lKCJjb25zdCB1bnNpZ25l
ZCBjaGFyKiIpKTsKKyAgRVhQRUNUX1RSVUUoSXNSZWFkYWJsZVR5cGVOYW1lKCJNeU1hcDxpbnQs
IHZvaWQqPiIpKTsKKyAgRVhQRUNUX1RSVUUoSXNSZWFkYWJsZVR5cGVOYW1lKCJ2b2lkICgqKShp
bnQsIGJvb2wpIikpOworfQorCitURVNUKElzUmVhZGFibGVUeXBlTmFtZVRlc3QsIFJldHVybnNU
cnVlRm9yTG9uZ05vblRlbXBsYXRlTm9uRnVuY3Rpb25OYW1lcykgeworICBFWFBFQ1RfVFJVRShJ
c1JlYWRhYmxlVHlwZU5hbWUoIm15X2xvbmdfbmFtZXNwYWNlOjpNeUNsYXNzTmFtZSIpKTsKKyAg
RVhQRUNUX1RSVUUoSXNSZWFkYWJsZVR5cGVOYW1lKCJpbnQgWzVdWzZdWzddWzhdWzldWzEwXVsx
MV0iKSk7CisgIEVYUEVDVF9UUlVFKElzUmVhZGFibGVUeXBlTmFtZSgibXlfbmFtZXNwYWNlOjpN
eU91dGVyQ2xhc3M6Ok15SW5uZXJDbGFzcyIpKTsKK30KKworVEVTVChJc1JlYWRhYmxlVHlwZU5h
bWVUZXN0LCBSZXR1cm5zRmFsc2VGb3JMb25nVGVtcGxhdGVOYW1lcykgeworICBFWFBFQ1RfRkFM
U0UoCisgICAgICBJc1JlYWRhYmxlVHlwZU5hbWUoImJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNo
YXJfdHJhaXRzPGNoYXI+ID4iKSk7CisgIEVYUEVDVF9GQUxTRShJc1JlYWRhYmxlVHlwZU5hbWUo
InN0ZDo6dmVjdG9yPGludCwgc3RkOjphbGxvY190cmFpdHM8aW50PiA+IikpOworfQorCitURVNU
KElzUmVhZGFibGVUeXBlTmFtZVRlc3QsIFJldHVybnNGYWxzZUZvckxvbmdGdW5jdGlvblR5cGVO
YW1lcykgeworICBFWFBFQ1RfRkFMU0UoSXNSZWFkYWJsZVR5cGVOYW1lKCJ2b2lkICgmKShpbnQs
IGJvb2wsIGNoYXIsIGZsb2F0KSIpKTsKK30KKworLy8gVGVzdHMgSm9pbkFzVHVwbGUoKS4KKwor
VEVTVChKb2luQXNUdXBsZVRlc3QsIEpvaW5zRW1wdHlUdXBsZSkgeworICBFWFBFQ1RfRVEoIiIs
IEpvaW5Bc1R1cGxlKFN0cmluZ3MoKSkpOworfQorCitURVNUKEpvaW5Bc1R1cGxlVGVzdCwgSm9p
bnNPbmVUdXBsZSkgeworICBjb25zdCBjaGFyKiBmaWVsZHNbXSA9IHsiMSJ9OworICBFWFBFQ1Rf
RVEoIjEiLCBKb2luQXNUdXBsZShTdHJpbmdzKGZpZWxkcywgZmllbGRzICsgMSkpKTsKK30KKwor
VEVTVChKb2luQXNUdXBsZVRlc3QsIEpvaW5zVHdvVHVwbGUpIHsKKyAgY29uc3QgY2hhciogZmll
bGRzW10gPSB7IjEiLCAiYSJ9OworICBFWFBFQ1RfRVEoIigxLCBhKSIsIEpvaW5Bc1R1cGxlKFN0
cmluZ3MoZmllbGRzLCBmaWVsZHMgKyAyKSkpOworfQorCitURVNUKEpvaW5Bc1R1cGxlVGVzdCwg
Sm9pbnNUZW5UdXBsZSkgeworICBjb25zdCBjaGFyKiBmaWVsZHNbXSA9IHsiMSIsICIyIiwgIjMi
LCAiNCIsICI1IiwgIjYiLCAiNyIsICI4IiwgIjkiLCAiMTAifTsKKyAgRVhQRUNUX0VRKCIoMSwg
MiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTApIiwKKyAgICAgICAgICAgIEpvaW5Bc1R1cGxlKFN0
cmluZ3MoZmllbGRzLCBmaWVsZHMgKyAxMCkpKTsKK30KKworLy8gVGVzdHMgRm9ybWF0TWF0Y2hl
ckRlc2NyaXB0aW9uKCkuCisKK1RFU1QoRm9ybWF0TWF0Y2hlckRlc2NyaXB0aW9uVGVzdCwgV29y
a3NGb3JFbXB0eURlc2NyaXB0aW9uKSB7CisgIEVYUEVDVF9FUSgiaXMgZXZlbiIsCisgICAgICAg
ICAgICBGb3JtYXRNYXRjaGVyRGVzY3JpcHRpb24oZmFsc2UsICJJc0V2ZW4iLCBTdHJpbmdzKCkp
KTsKKyAgRVhQRUNUX0VRKCJub3QgKGlzIGV2ZW4pIiwKKyAgICAgICAgICAgIEZvcm1hdE1hdGNo
ZXJEZXNjcmlwdGlvbih0cnVlLCAiSXNFdmVuIiwgU3RyaW5ncygpKSk7CisKKyAgY29uc3QgY2hh
ciogcGFyYW1zW10gPSB7IjUifTsKKyAgRVhQRUNUX0VRKCJlcXVhbHMgNSIsCisgICAgICAgICAg
ICBGb3JtYXRNYXRjaGVyRGVzY3JpcHRpb24oZmFsc2UsICJFcXVhbHMiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ3MocGFyYW1zLCBwYXJhbXMgKyAxKSkpOwor
CisgIGNvbnN0IGNoYXIqIHBhcmFtczJbXSA9IHsiNSIsICI4In07CisgIEVYUEVDVF9FUSgiaXMg
aW4gcmFuZ2UgKDUsIDgpIiwKKyAgICAgICAgICAgIEZvcm1hdE1hdGNoZXJEZXNjcmlwdGlvbihm
YWxzZSwgIklzSW5SYW5nZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U3RyaW5ncyhwYXJhbXMyLCBwYXJhbXMyICsgMikpKTsKK30KKworLy8gVGVzdHMgUG9seW1vcnBo
aWNNYXRjaGVyOjptdXRhYmxlX2ltcGwoKS4KK1RFU1QoUG9seW1vcnBoaWNNYXRjaGVyVGVzdCwg
Q2FuQWNjZXNzTXV0YWJsZUltcGwpIHsKKyAgUG9seW1vcnBoaWNNYXRjaGVyPERpdmlzaWJsZUJ5
SW1wbD4gbShEaXZpc2libGVCeUltcGwoNDIpKTsKKyAgRGl2aXNpYmxlQnlJbXBsJiBpbXBsID0g
bS5tdXRhYmxlX2ltcGwoKTsKKyAgRVhQRUNUX0VRKDQyLCBpbXBsLmRpdmlkZXIoKSk7CisKKyAg
aW1wbC5zZXRfZGl2aWRlcigwKTsKKyAgRVhQRUNUX0VRKDAsIG0ubXV0YWJsZV9pbXBsKCkuZGl2
aWRlcigpKTsKK30KKworLy8gVGVzdHMgUG9seW1vcnBoaWNNYXRjaGVyOjppbXBsKCkuCitURVNU
KFBvbHltb3JwaGljTWF0Y2hlclRlc3QsIENhbkFjY2Vzc0ltcGwpIHsKKyAgY29uc3QgUG9seW1v
cnBoaWNNYXRjaGVyPERpdmlzaWJsZUJ5SW1wbD4gbShEaXZpc2libGVCeUltcGwoNDIpKTsKKyAg
Y29uc3QgRGl2aXNpYmxlQnlJbXBsJiBpbXBsID0gbS5pbXBsKCk7CisgIEVYUEVDVF9FUSg0Miwg
aW1wbC5kaXZpZGVyKCkpOworfQorCitURVNUKE1hdGNoZXJUdXBsZVRlc3QsIEV4cGxhaW5zTWF0
Y2hGYWlsdXJlKSB7CisgIHN0cmluZ3N0cmVhbSBzczE7CisgIEV4cGxhaW5NYXRjaEZhaWx1cmVU
dXBsZVRvKG1ha2VfdHVwbGUoTWF0Y2hlcjxjaGFyPihFcSgnYScpKSwgR3JlYXRlclRoYW4oNSkp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWtlX3R1cGxlKCdhJywgMTApLCAmc3Mx
KTsKKyAgRVhQRUNUX0VRKCIiLCBzczEuc3RyKCkpOyAgLy8gU3VjY2Vzc2Z1bCBtYXRjaC4KKwor
ICBzdHJpbmdzdHJlYW0gc3MyOworICBFeHBsYWluTWF0Y2hGYWlsdXJlVHVwbGVUbyhtYWtlX3R1
cGxlKEdyZWF0ZXJUaGFuKDUpLCBNYXRjaGVyPGNoYXI+KEVxKCdhJykpKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWFrZV90dXBsZSgyLCAnYicpLCAmc3MyKTsKKyAgRVhQRUNUX0VR
KCIgIEV4cGVjdGVkIGFyZyAjMDogaXMgPiA1XG4iCisgICAgICAgICAgICAiICAgICAgICAgICBB
Y3R1YWw6IDIsIHdoaWNoIGlzIDMgbGVzcyB0aGFuIDVcbiIKKyAgICAgICAgICAgICIgIEV4cGVj
dGVkIGFyZyAjMTogaXMgZXF1YWwgdG8gJ2EnICg5NywgMHg2MSlcbiIKKyAgICAgICAgICAgICIg
ICAgICAgICAgIEFjdHVhbDogJ2InICg5OCwgMHg2MilcbiIsCisgICAgICAgICAgICBzczIuc3Ry
KCkpOyAgLy8gRmFpbGVkIG1hdGNoIHdoZXJlIGJvdGggYXJndW1lbnRzIG5lZWQgZXhwbGFuYXRp
b24uCisKKyAgc3RyaW5nc3RyZWFtIHNzMzsKKyAgRXhwbGFpbk1hdGNoRmFpbHVyZVR1cGxlVG8o
bWFrZV90dXBsZShHcmVhdGVyVGhhbig1KSwgTWF0Y2hlcjxjaGFyPihFcSgnYScpKSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1ha2VfdHVwbGUoMiwgJ2EnKSwgJnNzMyk7CisgIEVY
UEVDVF9FUSgiICBFeHBlY3RlZCBhcmcgIzA6IGlzID4gNVxuIgorICAgICAgICAgICAgIiAgICAg
ICAgICAgQWN0dWFsOiAyLCB3aGljaCBpcyAzIGxlc3MgdGhhbiA1XG4iLAorICAgICAgICAgICAg
c3MzLnN0cigpKTsgIC8vIEZhaWxlZCBtYXRjaCB3aGVyZSBvbmx5IG9uZSBhcmd1bWVudCBuZWVk
cworICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGV4cGxhbmF0aW9uLgorfQorCisvLyBUZXN0
cyBFYWNoKCkuCisKK1RFU1QoRWFjaFRlc3QsIEV4cGxhaW5zTWF0Y2hSZXN1bHRDb3JyZWN0bHkp
IHsKKyAgc2V0PGludD4gYTsgIC8vIGVtcHR5CisKKyAgTWF0Y2hlcjxzZXQ8aW50PiA+IG0gPSBF
YWNoKDIpOworICBFWFBFQ1RfRVEoIiIsIEV4cGxhaW4obSwgYSkpOworCisgIE1hdGNoZXI8Y29u
c3QgaW50KCYpWzFdPiBuID0gRWFjaCgxKTsgIC8vIE5PTElOVAorCisgIGNvbnN0IGludCBiWzFd
ID0gezF9OworICBFWFBFQ1RfRVEoIiIsIEV4cGxhaW4obiwgYikpOworCisgIG4gPSBFYWNoKDMp
OworICBFWFBFQ1RfRVEoIndob3NlIGVsZW1lbnQgIzAgZG9lc24ndCBtYXRjaCIsIEV4cGxhaW4o
biwgYikpOworCisgIGEuaW5zZXJ0KDEpOworICBhLmluc2VydCgyKTsKKyAgYS5pbnNlcnQoMyk7
CisgIG0gPSBFYWNoKEdyZWF0ZXJUaGFuKDApKTsKKyAgRVhQRUNUX0VRKCIiLCBFeHBsYWluKG0s
IGEpKTsKKworICBtID0gRWFjaChHcmVhdGVyVGhhbigxMCkpOworICBFWFBFQ1RfRVEoIndob3Nl
IGVsZW1lbnQgIzAgZG9lc24ndCBtYXRjaCwgd2hpY2ggaXMgOSBsZXNzIHRoYW4gMTAiLAorICAg
ICAgICAgICAgRXhwbGFpbihtLCBhKSk7Cit9CisKK1RFU1QoRWFjaFRlc3QsIERlc2NyaWJlc0l0
c2VsZkNvcnJlY3RseSkgeworICBNYXRjaGVyPHZlY3RvcjxpbnQ+ID4gbSA9IEVhY2goMSk7Cisg
IEVYUEVDVF9FUSgib25seSBjb250YWlucyBlbGVtZW50cyB0aGF0IGlzIGVxdWFsIHRvIDEiLCBE
ZXNjcmliZShtKSk7CisKKyAgTWF0Y2hlcjx2ZWN0b3I8aW50PiA+IG0yID0gTm90KG0pOworICBF
WFBFQ1RfRVEoImNvbnRhaW5zIHNvbWUgZWxlbWVudCB0aGF0IGlzbid0IGVxdWFsIHRvIDEiLCBE
ZXNjcmliZShtMikpOworfQorCitURVNUKEVhY2hUZXN0LCBNYXRjaGVzVmVjdG9yV2hlbkFsbEVs
ZW1lbnRzTWF0Y2gpIHsKKyAgdmVjdG9yPGludD4gc29tZV92ZWN0b3I7CisgIEVYUEVDVF9USEFU
KHNvbWVfdmVjdG9yLCBFYWNoKDEpKTsKKyAgc29tZV92ZWN0b3IucHVzaF9iYWNrKDMpOworICBF
WFBFQ1RfVEhBVChzb21lX3ZlY3RvciwgTm90KEVhY2goMSkpKTsKKyAgRVhQRUNUX1RIQVQoc29t
ZV92ZWN0b3IsIEVhY2goMykpOworICBzb21lX3ZlY3Rvci5wdXNoX2JhY2soMSk7CisgIHNvbWVf
dmVjdG9yLnB1c2hfYmFjaygyKTsKKyAgRVhQRUNUX1RIQVQoc29tZV92ZWN0b3IsIE5vdChFYWNo
KDMpKSk7CisgIEVYUEVDVF9USEFUKHNvbWVfdmVjdG9yLCBFYWNoKEx0KDMuNSkpKTsKKworICB2
ZWN0b3I8c3RkOjpzdHJpbmc+IGFub3RoZXJfdmVjdG9yOworICBhbm90aGVyX3ZlY3Rvci5wdXNo
X2JhY2soImZlZSIpOworICBFWFBFQ1RfVEhBVChhbm90aGVyX3ZlY3RvciwgRWFjaChzdGQ6OnN0
cmluZygiZmVlIikpKTsKKyAgYW5vdGhlcl92ZWN0b3IucHVzaF9iYWNrKCJmaWUiKTsKKyAgYW5v
dGhlcl92ZWN0b3IucHVzaF9iYWNrKCJmb2UiKTsKKyAgYW5vdGhlcl92ZWN0b3IucHVzaF9iYWNr
KCJmdW0iKTsKKyAgRVhQRUNUX1RIQVQoYW5vdGhlcl92ZWN0b3IsIE5vdChFYWNoKHN0ZDo6c3Ry
aW5nKCJmZWUiKSkpKTsKK30KKworVEVTVChFYWNoVGVzdCwgTWF0Y2hlc01hcFdoZW5BbGxFbGVt
ZW50c01hdGNoKSB7CisgIG1hcDxjb25zdCBjaGFyKiwgaW50PiBteV9tYXA7CisgIGNvbnN0IGNo
YXIqIGJhciA9ICJhIHN0cmluZyI7CisgIG15X21hcFtiYXJdID0gMjsKKyAgRVhQRUNUX1RIQVQo
bXlfbWFwLCBFYWNoKG1ha2VfcGFpcihiYXIsIDIpKSk7CisKKyAgbWFwPHN0ZDo6c3RyaW5nLCBp
bnQ+IGFub3RoZXJfbWFwOworICBFWFBFQ1RfVEhBVChhbm90aGVyX21hcCwgRWFjaChtYWtlX3Bh
aXIoc3RkOjpzdHJpbmcoImZlZSIpLCAxKSkpOworICBhbm90aGVyX21hcFsiZmVlIl0gPSAxOwor
ICBFWFBFQ1RfVEhBVChhbm90aGVyX21hcCwgRWFjaChtYWtlX3BhaXIoc3RkOjpzdHJpbmcoImZl
ZSIpLCAxKSkpOworICBhbm90aGVyX21hcFsiZmllIl0gPSAyOworICBhbm90aGVyX21hcFsiZm9l
Il0gPSAzOworICBhbm90aGVyX21hcFsiZnVtIl0gPSA0OworICBFWFBFQ1RfVEhBVChhbm90aGVy
X21hcCwgTm90KEVhY2gobWFrZV9wYWlyKHN0ZDo6c3RyaW5nKCJmZWUiKSwgMSkpKSk7CisgIEVY
UEVDVF9USEFUKGFub3RoZXJfbWFwLCBOb3QoRWFjaChtYWtlX3BhaXIoc3RkOjpzdHJpbmcoImZ1
bSIpLCAxKSkpKTsKKyAgRVhQRUNUX1RIQVQoYW5vdGhlcl9tYXAsIEVhY2goUGFpcihfLCBHdCgw
KSkpKTsKK30KKworVEVTVChFYWNoVGVzdCwgQWNjZXB0c01hdGNoZXIpIHsKKyAgY29uc3QgaW50
IGFbXSA9IHsxLCAyLCAzfTsKKyAgRVhQRUNUX1RIQVQoYSwgRWFjaChHdCgwKSkpOworICBFWFBF
Q1RfVEhBVChhLCBOb3QoRWFjaChHdCgxKSkpKTsKK30KKworVEVTVChFYWNoVGVzdCwgV29ya3NG
b3JOYXRpdmVBcnJheUFzVHVwbGUpIHsKKyAgY29uc3QgaW50IGFbXSA9IHsxLCAyfTsKKyAgY29u
c3QgaW50KiBjb25zdCBwb2ludGVyID0gYTsKKyAgRVhQRUNUX1RIQVQobWFrZV90dXBsZShwb2lu
dGVyLCAyKSwgRWFjaChHdCgwKSkpOworICBFWFBFQ1RfVEhBVChtYWtlX3R1cGxlKHBvaW50ZXIs
IDIpLCBOb3QoRWFjaChHdCgxKSkpKTsKK30KKworLy8gRm9yIHRlc3RpbmcgUG9pbnR3aXNlKCku
CitjbGFzcyBJc0hhbGZPZk1hdGNoZXIgeworIHB1YmxpYzoKKyAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQxLCB0eXBlbmFtZSBUMj4KKyAgYm9vbCBNYXRjaEFuZEV4cGxhaW4oY29uc3QgdHVwbGU8VDEs
IFQyPiYgYV9wYWlyLAorICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVy
KiBsaXN0ZW5lcikgY29uc3QgeworICAgIGlmIChnZXQ8MD4oYV9wYWlyKSA9PSBnZXQ8MT4oYV9w
YWlyKS8yKSB7CisgICAgICAqbGlzdGVuZXIgPDwgIndoZXJlIHRoZSBzZWNvbmQgaXMgIiA8PCBn
ZXQ8MT4oYV9wYWlyKTsKKyAgICAgIHJldHVybiB0cnVlOworICAgIH0gZWxzZSB7CisgICAgICAq
bGlzdGVuZXIgPDwgIndoZXJlIHRoZSBzZWNvbmQvMiBpcyAiIDw8IGdldDwxPihhX3BhaXIpLzI7
CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICB9CisKKyAgdm9pZCBEZXNjcmliZVRvKG9z
dHJlYW0qIG9zKSBjb25zdCB7CisgICAgKm9zIDw8ICJhcmUgYSBwYWlyIHdoZXJlIHRoZSBmaXJz
dCBpcyBoYWxmIG9mIHRoZSBzZWNvbmQiOworICB9CisKKyAgdm9pZCBEZXNjcmliZU5lZ2F0aW9u
VG8ob3N0cmVhbSogb3MpIGNvbnN0IHsKKyAgICAqb3MgPDwgImFyZSBhIHBhaXIgd2hlcmUgdGhl
IGZpcnN0IGlzbid0IGhhbGYgb2YgdGhlIHNlY29uZCI7CisgIH0KK307CisKK1BvbHltb3JwaGlj
TWF0Y2hlcjxJc0hhbGZPZk1hdGNoZXI+IElzSGFsZk9mKCkgeworICByZXR1cm4gTWFrZVBvbHlt
b3JwaGljTWF0Y2hlcihJc0hhbGZPZk1hdGNoZXIoKSk7Cit9CisKK1RFU1QoUG9pbnR3aXNlVGVz
dCwgRGVzY3JpYmVzU2VsZikgeworICB2ZWN0b3I8aW50PiByaHM7CisgIHJocy5wdXNoX2JhY2so
MSk7CisgIHJocy5wdXNoX2JhY2soMik7CisgIHJocy5wdXNoX2JhY2soMyk7CisgIGNvbnN0IE1h
dGNoZXI8Y29uc3QgdmVjdG9yPGludD4mPiBtID0gUG9pbnR3aXNlKElzSGFsZk9mKCksIHJocyk7
CisgIEVYUEVDVF9FUSgiY29udGFpbnMgMyB2YWx1ZXMsIHdoZXJlIGVhY2ggdmFsdWUgYW5kIGl0
cyBjb3JyZXNwb25kaW5nIHZhbHVlICIKKyAgICAgICAgICAgICJpbiB7IDEsIDIsIDMgfSBhcmUg
YSBwYWlyIHdoZXJlIHRoZSBmaXJzdCBpcyBoYWxmIG9mIHRoZSBzZWNvbmQiLAorICAgICAgICAg
ICAgRGVzY3JpYmUobSkpOworICBFWFBFQ1RfRVEoImRvZXNuJ3QgY29udGFpbiBleGFjdGx5IDMg
dmFsdWVzLCBvciBjb250YWlucyBhIHZhbHVlIHggYXQgc29tZSAiCisgICAgICAgICAgICAiaW5k
ZXggaSB3aGVyZSB4IGFuZCB0aGUgaS10aCB2YWx1ZSBvZiB7IDEsIDIsIDMgfSBhcmUgYSBwYWly
ICIKKyAgICAgICAgICAgICJ3aGVyZSB0aGUgZmlyc3QgaXNuJ3QgaGFsZiBvZiB0aGUgc2Vjb25k
IiwKKyAgICAgICAgICAgIERlc2NyaWJlTmVnYXRpb24obSkpOworfQorCitURVNUKFBvaW50d2lz
ZVRlc3QsIE1ha2VzQ29weU9mUmhzKSB7CisgIGxpc3Q8c2lnbmVkIGNoYXI+IHJoczsKKyAgcmhz
LnB1c2hfYmFjaygyKTsKKyAgcmhzLnB1c2hfYmFjayg0KTsKKworICBpbnQgbGhzW10gPSB7MSwg
Mn07CisgIGNvbnN0IE1hdGNoZXI8Y29uc3QgaW50ICgmKVsyXT4gbSA9IFBvaW50d2lzZShJc0hh
bGZPZigpLCByaHMpOworICBFWFBFQ1RfVEhBVChsaHMsIG0pOworCisgIC8vIENoYW5naW5nIHJo
cyBub3cgc2hvdWxkbid0IGFmZmVjdCBtLCB3aGljaCBtYWRlIGEgY29weSBvZiByaHMuCisgIHJo
cy5wdXNoX2JhY2soNik7CisgIEVYUEVDVF9USEFUKGxocywgbSk7Cit9CisKK1RFU1QoUG9pbnR3
aXNlVGVzdCwgV29ya3NGb3JMaHNOYXRpdmVBcnJheSkgeworICBjb25zdCBpbnQgbGhzW10gPSB7
MSwgMiwgM307CisgIHZlY3RvcjxpbnQ+IHJoczsKKyAgcmhzLnB1c2hfYmFjaygyKTsKKyAgcmhz
LnB1c2hfYmFjayg0KTsKKyAgcmhzLnB1c2hfYmFjayg2KTsKKyAgRVhQRUNUX1RIQVQobGhzLCBQ
b2ludHdpc2UoTHQoKSwgcmhzKSk7CisgIEVYUEVDVF9USEFUKGxocywgTm90KFBvaW50d2lzZShH
dCgpLCByaHMpKSk7Cit9CisKK1RFU1QoUG9pbnR3aXNlVGVzdCwgV29ya3NGb3JSaHNOYXRpdmVB
cnJheSkgeworICBjb25zdCBpbnQgcmhzW10gPSB7MSwgMiwgM307CisgIHZlY3RvcjxpbnQ+IGxo
czsKKyAgbGhzLnB1c2hfYmFjaygyKTsKKyAgbGhzLnB1c2hfYmFjayg0KTsKKyAgbGhzLnB1c2hf
YmFjayg2KTsKKyAgRVhQRUNUX1RIQVQobGhzLCBQb2ludHdpc2UoR3QoKSwgcmhzKSk7CisgIEVY
UEVDVF9USEFUKGxocywgTm90KFBvaW50d2lzZShMdCgpLCByaHMpKSk7Cit9CisKKyNpZiBHVEVT
VF9IQVNfU1REX0lOSVRJQUxJWkVSX0xJU1RfCisKK1RFU1QoUG9pbnR3aXNlVGVzdCwgV29ya3NG
b3JSaHNJbml0aWFsaXplckxpc3QpIHsKKyAgY29uc3QgdmVjdG9yPGludD4gbGhzezIsIDQsIDZ9
OworICBFWFBFQ1RfVEhBVChsaHMsIFBvaW50d2lzZShHdCgpLCB7MSwgMiwgM30pKTsKKyAgRVhQ
RUNUX1RIQVQobGhzLCBOb3QoUG9pbnR3aXNlKEx0KCksIHszLCAzLCA3fSkpKTsKK30KKworI2Vu
ZGlmICAvLyBHVEVTVF9IQVNfU1REX0lOSVRJQUxJWkVSX0xJU1RfCisKK1RFU1QoUG9pbnR3aXNl
VGVzdCwgUmVqZWN0c1dyb25nU2l6ZSkgeworICBjb25zdCBkb3VibGUgbGhzWzJdID0gezEsIDJ9
OworICBjb25zdCBpbnQgcmhzWzFdID0gezB9OworICBFWFBFQ1RfVEhBVChsaHMsIE5vdChQb2lu
dHdpc2UoR3QoKSwgcmhzKSkpOworICBFWFBFQ1RfRVEoIndoaWNoIGNvbnRhaW5zIDIgdmFsdWVz
IiwKKyAgICAgICAgICAgIEV4cGxhaW4oUG9pbnR3aXNlKEd0KCksIHJocyksIGxocykpOworCisg
IGNvbnN0IGludCByaHMyWzNdID0gezAsIDEsIDJ9OworICBFWFBFQ1RfVEhBVChsaHMsIE5vdChQ
b2ludHdpc2UoR3QoKSwgcmhzMikpKTsKK30KKworVEVTVChQb2ludHdpc2VUZXN0LCBSZWplY3Rz
V3JvbmdDb250ZW50KSB7CisgIGNvbnN0IGRvdWJsZSBsaHNbM10gPSB7MSwgMiwgM307CisgIGNv
bnN0IGludCByaHNbM10gPSB7MiwgNiwgNH07CisgIEVYUEVDVF9USEFUKGxocywgTm90KFBvaW50
d2lzZShJc0hhbGZPZigpLCByaHMpKSk7CisgIEVYUEVDVF9FUSgid2hlcmUgdGhlIHZhbHVlIHBh
aXIgKDIsIDYpIGF0IGluZGV4ICMxIGRvbid0IG1hdGNoLCAiCisgICAgICAgICAgICAid2hlcmUg
dGhlIHNlY29uZC8yIGlzIDMiLAorICAgICAgICAgICAgRXhwbGFpbihQb2ludHdpc2UoSXNIYWxm
T2YoKSwgcmhzKSwgbGhzKSk7Cit9CisKK1RFU1QoUG9pbnR3aXNlVGVzdCwgQWNjZXB0c0NvcnJl
Y3RDb250ZW50KSB7CisgIGNvbnN0IGRvdWJsZSBsaHNbM10gPSB7MSwgMiwgM307CisgIGNvbnN0
IGludCByaHNbM10gPSB7MiwgNCwgNn07CisgIEVYUEVDVF9USEFUKGxocywgUG9pbnR3aXNlKElz
SGFsZk9mKCksIHJocykpOworICBFWFBFQ1RfRVEoIiIsIEV4cGxhaW4oUG9pbnR3aXNlKElzSGFs
Zk9mKCksIHJocyksIGxocykpOworfQorCitURVNUKFBvaW50d2lzZVRlc3QsIEFsbG93c01vbm9t
b3JwaGljSW5uZXJNYXRjaGVyKSB7CisgIGNvbnN0IGRvdWJsZSBsaHNbM10gPSB7MSwgMiwgM307
CisgIGNvbnN0IGludCByaHNbM10gPSB7MiwgNCwgNn07CisgIGNvbnN0IE1hdGNoZXI8dHVwbGU8
Y29uc3QgZG91YmxlJiwgY29uc3QgaW50Jj4gPiBtMSA9IElzSGFsZk9mKCk7CisgIEVYUEVDVF9U
SEFUKGxocywgUG9pbnR3aXNlKG0xLCByaHMpKTsKKyAgRVhQRUNUX0VRKCIiLCBFeHBsYWluKFBv
aW50d2lzZShtMSwgcmhzKSwgbGhzKSk7CisKKyAgLy8gVGhpcyB0eXBlIHdvcmtzIGFzIGEgdHVw
bGU8Y29uc3QgZG91YmxlJiwgY29uc3QgaW50Jj4gY2FuIGJlCisgIC8vIGltcGxpY2l0bHkgY2Fz
dCB0byB0dXBsZTxkb3VibGUsIGludD4uCisgIGNvbnN0IE1hdGNoZXI8dHVwbGU8ZG91YmxlLCBp
bnQ+ID4gbTIgPSBJc0hhbGZPZigpOworICBFWFBFQ1RfVEhBVChsaHMsIFBvaW50d2lzZShtMiwg
cmhzKSk7CisgIEVYUEVDVF9FUSgiIiwgRXhwbGFpbihQb2ludHdpc2UobTIsIHJocyksIGxocykp
OworfQorCitURVNUKFVub3JkZXJlZFBvaW50d2lzZVRlc3QsIERlc2NyaWJlc1NlbGYpIHsKKyAg
dmVjdG9yPGludD4gcmhzOworICByaHMucHVzaF9iYWNrKDEpOworICByaHMucHVzaF9iYWNrKDIp
OworICByaHMucHVzaF9iYWNrKDMpOworICBjb25zdCBNYXRjaGVyPGNvbnN0IHZlY3RvcjxpbnQ+
Jj4gbSA9IFVub3JkZXJlZFBvaW50d2lzZShJc0hhbGZPZigpLCByaHMpOworICBFWFBFQ1RfRVEo
CisgICAgICAiaGFzIDMgZWxlbWVudHMgYW5kIHRoZXJlIGV4aXN0cyBzb21lIHBlcm11dGF0aW9u
IG9mIGVsZW1lbnRzIHN1Y2ggIgorICAgICAgInRoYXQ6XG4iCisgICAgICAiIC0gZWxlbWVudCAj
MCBhbmQgMSBhcmUgYSBwYWlyIHdoZXJlIHRoZSBmaXJzdCBpcyBoYWxmIG9mIHRoZSBzZWNvbmQs
ICIKKyAgICAgICJhbmRcbiIKKyAgICAgICIgLSBlbGVtZW50ICMxIGFuZCAyIGFyZSBhIHBhaXIg
d2hlcmUgdGhlIGZpcnN0IGlzIGhhbGYgb2YgdGhlIHNlY29uZCwgIgorICAgICAgImFuZFxuIgor
ICAgICAgIiAtIGVsZW1lbnQgIzIgYW5kIDMgYXJlIGEgcGFpciB3aGVyZSB0aGUgZmlyc3QgaXMg
aGFsZiBvZiB0aGUgc2Vjb25kIiwKKyAgICAgIERlc2NyaWJlKG0pKTsKKyAgRVhQRUNUX0VRKAor
ICAgICAgImRvZXNuJ3QgaGF2ZSAzIGVsZW1lbnRzLCBvciB0aGVyZSBleGlzdHMgbm8gcGVybXV0
YXRpb24gb2YgZWxlbWVudHMgIgorICAgICAgInN1Y2ggdGhhdDpcbiIKKyAgICAgICIgLSBlbGVt
ZW50ICMwIGFuZCAxIGFyZSBhIHBhaXIgd2hlcmUgdGhlIGZpcnN0IGlzIGhhbGYgb2YgdGhlIHNl
Y29uZCwgIgorICAgICAgImFuZFxuIgorICAgICAgIiAtIGVsZW1lbnQgIzEgYW5kIDIgYXJlIGEg
cGFpciB3aGVyZSB0aGUgZmlyc3QgaXMgaGFsZiBvZiB0aGUgc2Vjb25kLCAiCisgICAgICAiYW5k
XG4iCisgICAgICAiIC0gZWxlbWVudCAjMiBhbmQgMyBhcmUgYSBwYWlyIHdoZXJlIHRoZSBmaXJz
dCBpcyBoYWxmIG9mIHRoZSBzZWNvbmQiLAorICAgICAgRGVzY3JpYmVOZWdhdGlvbihtKSk7Cit9
CisKK1RFU1QoVW5vcmRlcmVkUG9pbnR3aXNlVGVzdCwgTWFrZXNDb3B5T2ZSaHMpIHsKKyAgbGlz
dDxzaWduZWQgY2hhcj4gcmhzOworICByaHMucHVzaF9iYWNrKDIpOworICByaHMucHVzaF9iYWNr
KDQpOworCisgIGludCBsaHNbXSA9IHsyLCAxfTsKKyAgY29uc3QgTWF0Y2hlcjxjb25zdCBpbnQg
KCYpWzJdPiBtID0gVW5vcmRlcmVkUG9pbnR3aXNlKElzSGFsZk9mKCksIHJocyk7CisgIEVYUEVD
VF9USEFUKGxocywgbSk7CisKKyAgLy8gQ2hhbmdpbmcgcmhzIG5vdyBzaG91bGRuJ3QgYWZmZWN0
IG0sIHdoaWNoIG1hZGUgYSBjb3B5IG9mIHJocy4KKyAgcmhzLnB1c2hfYmFjayg2KTsKKyAgRVhQ
RUNUX1RIQVQobGhzLCBtKTsKK30KKworVEVTVChVbm9yZGVyZWRQb2ludHdpc2VUZXN0LCBXb3Jr
c0Zvckxoc05hdGl2ZUFycmF5KSB7CisgIGNvbnN0IGludCBsaHNbXSA9IHsxLCAyLCAzfTsKKyAg
dmVjdG9yPGludD4gcmhzOworICByaHMucHVzaF9iYWNrKDQpOworICByaHMucHVzaF9iYWNrKDYp
OworICByaHMucHVzaF9iYWNrKDIpOworICBFWFBFQ1RfVEhBVChsaHMsIFVub3JkZXJlZFBvaW50
d2lzZShMdCgpLCByaHMpKTsKKyAgRVhQRUNUX1RIQVQobGhzLCBOb3QoVW5vcmRlcmVkUG9pbnR3
aXNlKEd0KCksIHJocykpKTsKK30KKworVEVTVChVbm9yZGVyZWRQb2ludHdpc2VUZXN0LCBXb3Jr
c0ZvclJoc05hdGl2ZUFycmF5KSB7CisgIGNvbnN0IGludCByaHNbXSA9IHsxLCAyLCAzfTsKKyAg
dmVjdG9yPGludD4gbGhzOworICBsaHMucHVzaF9iYWNrKDQpOworICBsaHMucHVzaF9iYWNrKDIp
OworICBsaHMucHVzaF9iYWNrKDYpOworICBFWFBFQ1RfVEhBVChsaHMsIFVub3JkZXJlZFBvaW50
d2lzZShHdCgpLCByaHMpKTsKKyAgRVhQRUNUX1RIQVQobGhzLCBOb3QoVW5vcmRlcmVkUG9pbnR3
aXNlKEx0KCksIHJocykpKTsKK30KKworI2lmIEdURVNUX0hBU19TVERfSU5JVElBTElaRVJfTElT
VF8KKworVEVTVChVbm9yZGVyZWRQb2ludHdpc2VUZXN0LCBXb3Jrc0ZvclJoc0luaXRpYWxpemVy
TGlzdCkgeworICBjb25zdCB2ZWN0b3I8aW50PiBsaHN7MiwgNCwgNn07CisgIEVYUEVDVF9USEFU
KGxocywgVW5vcmRlcmVkUG9pbnR3aXNlKEd0KCksIHs1LCAxLCAzfSkpOworICBFWFBFQ1RfVEhB
VChsaHMsIE5vdChVbm9yZGVyZWRQb2ludHdpc2UoTHQoKSwgezEsIDEsIDd9KSkpOworfQorCisj
ZW5kaWYgIC8vIEdURVNUX0hBU19TVERfSU5JVElBTElaRVJfTElTVF8KKworVEVTVChVbm9yZGVy
ZWRQb2ludHdpc2VUZXN0LCBSZWplY3RzV3JvbmdTaXplKSB7CisgIGNvbnN0IGRvdWJsZSBsaHNb
Ml0gPSB7MSwgMn07CisgIGNvbnN0IGludCByaHNbMV0gPSB7MH07CisgIEVYUEVDVF9USEFUKGxo
cywgTm90KFVub3JkZXJlZFBvaW50d2lzZShHdCgpLCByaHMpKSk7CisgIEVYUEVDVF9FUSgid2hp
Y2ggaGFzIDIgZWxlbWVudHMiLAorICAgICAgICAgICAgRXhwbGFpbihVbm9yZGVyZWRQb2ludHdp
c2UoR3QoKSwgcmhzKSwgbGhzKSk7CisKKyAgY29uc3QgaW50IHJoczJbM10gPSB7MCwgMSwgMn07
CisgIEVYUEVDVF9USEFUKGxocywgTm90KFVub3JkZXJlZFBvaW50d2lzZShHdCgpLCByaHMyKSkp
OworfQorCitURVNUKFVub3JkZXJlZFBvaW50d2lzZVRlc3QsIFJlamVjdHNXcm9uZ0NvbnRlbnQp
IHsKKyAgY29uc3QgZG91YmxlIGxoc1szXSA9IHsxLCAyLCAzfTsKKyAgY29uc3QgaW50IHJoc1sz
XSA9IHsyLCA2LCA2fTsKKyAgRVhQRUNUX1RIQVQobGhzLCBOb3QoVW5vcmRlcmVkUG9pbnR3aXNl
KElzSGFsZk9mKCksIHJocykpKTsKKyAgRVhQRUNUX0VRKCJ3aGVyZSB0aGUgZm9sbG93aW5nIGVs
ZW1lbnRzIGRvbid0IG1hdGNoIGFueSBtYXRjaGVyczpcbiIKKyAgICAgICAgICAgICJlbGVtZW50
ICMxOiAyIiwKKyAgICAgICAgICAgIEV4cGxhaW4oVW5vcmRlcmVkUG9pbnR3aXNlKElzSGFsZk9m
KCksIHJocyksIGxocykpOworfQorCitURVNUKFVub3JkZXJlZFBvaW50d2lzZVRlc3QsIEFjY2Vw
dHNDb3JyZWN0Q29udGVudEluU2FtZU9yZGVyKSB7CisgIGNvbnN0IGRvdWJsZSBsaHNbM10gPSB7
MSwgMiwgM307CisgIGNvbnN0IGludCByaHNbM10gPSB7MiwgNCwgNn07CisgIEVYUEVDVF9USEFU
KGxocywgVW5vcmRlcmVkUG9pbnR3aXNlKElzSGFsZk9mKCksIHJocykpOworfQorCitURVNUKFVu
b3JkZXJlZFBvaW50d2lzZVRlc3QsIEFjY2VwdHNDb3JyZWN0Q29udGVudEluRGlmZmVyZW50T3Jk
ZXIpIHsKKyAgY29uc3QgZG91YmxlIGxoc1szXSA9IHsxLCAyLCAzfTsKKyAgY29uc3QgaW50IHJo
c1szXSA9IHs2LCA0LCAyfTsKKyAgRVhQRUNUX1RIQVQobGhzLCBVbm9yZGVyZWRQb2ludHdpc2Uo
SXNIYWxmT2YoKSwgcmhzKSk7Cit9CisKK1RFU1QoVW5vcmRlcmVkUG9pbnR3aXNlVGVzdCwgQWxs
b3dzTW9ub21vcnBoaWNJbm5lck1hdGNoZXIpIHsKKyAgY29uc3QgZG91YmxlIGxoc1szXSA9IHsx
LCAyLCAzfTsKKyAgY29uc3QgaW50IHJoc1szXSA9IHs0LCA2LCAyfTsKKyAgY29uc3QgTWF0Y2hl
cjx0dXBsZTxjb25zdCBkb3VibGUmLCBjb25zdCBpbnQmPiA+IG0xID0gSXNIYWxmT2YoKTsKKyAg
RVhQRUNUX1RIQVQobGhzLCBVbm9yZGVyZWRQb2ludHdpc2UobTEsIHJocykpOworCisgIC8vIFRo
aXMgdHlwZSB3b3JrcyBhcyBhIHR1cGxlPGNvbnN0IGRvdWJsZSYsIGNvbnN0IGludCY+IGNhbiBi
ZQorICAvLyBpbXBsaWNpdGx5IGNhc3QgdG8gdHVwbGU8ZG91YmxlLCBpbnQ+LgorICBjb25zdCBN
YXRjaGVyPHR1cGxlPGRvdWJsZSwgaW50PiA+IG0yID0gSXNIYWxmT2YoKTsKKyAgRVhQRUNUX1RI
QVQobGhzLCBVbm9yZGVyZWRQb2ludHdpc2UobTIsIHJocykpOworfQorCit9ICAvLyBuYW1lc3Bh
Y2UgZ21vY2tfbWF0Y2hlcnNfdGVzdAorfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2stbW9yZS1hY3Rpb25zX3Rlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
bW9jay90ZXN0L2dtb2NrLW1vcmUtYWN0aW9uc190ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1ZTI4ZWFl
ODkzMWM4NTg0M2NiZWQ1YTY3OWQwY2Q1ZmNiMDIxNzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xlbW9jay90ZXN0L2dtb2NrLW1vcmUtYWN0aW9uc190ZXN0LmNjCkBAIC0wLDAgKzEsNzExIEBA
CisvLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8v
IGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisv
LyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gQXV0
aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorCisvLyBHb29nbGUgTW9jayAtIGEg
ZnJhbWV3b3JrIGZvciB3cml0aW5nIEMrKyBtb2NrIGNsYXNzZXMuCisvLworLy8gVGhpcyBmaWxl
IHRlc3RzIHRoZSBidWlsdC1pbiBhY3Rpb25zIGluIGdtb2NrLW1vcmUtYWN0aW9ucy5oLgorCisj
aW5jbHVkZSAiZ21vY2svZ21vY2stbW9yZS1hY3Rpb25zLmgiCisKKyNpbmNsdWRlIDxmdW5jdGlv
bmFsPgorI2luY2x1ZGUgPHNzdHJlYW0+CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgImdt
b2NrL2dtb2NrLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJndGVzdC9p
bnRlcm5hbC9ndGVzdC1saW5rZWRfcHRyLmgiCisKK25hbWVzcGFjZSB0ZXN0aW5nIHsKK25hbWVz
cGFjZSBnbW9ja19tb3JlX2FjdGlvbnNfdGVzdCB7CisKK3VzaW5nIDo6c3RkOjpwbHVzOwordXNp
bmcgOjpzdGQ6OnN0cmluZzsKK3VzaW5nIHRlc3Rpbmc6OmdldDsKK3VzaW5nIHRlc3Rpbmc6Om1h
a2VfdHVwbGU7Cit1c2luZyB0ZXN0aW5nOjp0dXBsZTsKK3VzaW5nIHRlc3Rpbmc6OnR1cGxlX2Vs
ZW1lbnQ7Cit1c2luZyB0ZXN0aW5nOjpfOwordXNpbmcgdGVzdGluZzo6QWN0aW9uOwordXNpbmcg
dGVzdGluZzo6QWN0aW9uSW50ZXJmYWNlOwordXNpbmcgdGVzdGluZzo6RGVsZXRlQXJnOwordXNp
bmcgdGVzdGluZzo6SW52b2tlOwordXNpbmcgdGVzdGluZzo6UmV0dXJuOwordXNpbmcgdGVzdGlu
Zzo6UmV0dXJuQXJnOwordXNpbmcgdGVzdGluZzo6UmV0dXJuUG9pbnRlZTsKK3VzaW5nIHRlc3Rp
bmc6OlNhdmVBcmc7Cit1c2luZyB0ZXN0aW5nOjpTYXZlQXJnUG9pbnRlZTsKK3VzaW5nIHRlc3Rp
bmc6OlNldEFyZ1JlZmVyZWU7Cit1c2luZyB0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE7Cit1
c2luZyB0ZXN0aW5nOjpVbnVzZWQ7Cit1c2luZyB0ZXN0aW5nOjpXaXRoQXJnOwordXNpbmcgdGVz
dGluZzo6V2l0aG91dEFyZ3M7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6bGlua2VkX3B0cjsK
KworLy8gRm9yIHN1cHByZXNzaW5nIGNvbXBpbGVyIHdhcm5pbmdzIG9uIGNvbnZlcnNpb24gcG9z
c2libHkgbG9zaW5nIHByZWNpc2lvbi4KK2lubGluZSBzaG9ydCBTaG9ydChzaG9ydCBuKSB7IHJl
dHVybiBuOyB9ICAvLyBOT0xJTlQKK2lubGluZSBjaGFyIENoYXIoY2hhciBjaCkgeyByZXR1cm4g
Y2g7IH0KKworLy8gU2FtcGxlIGZ1bmN0aW9ucyBhbmQgZnVuY3RvcnMgZm9yIHRlc3RpbmcgSW52
b2tlKCkgYW5kIGV0Yy4KK2ludCBOdWxsYXJ5KCkgeyByZXR1cm4gMTsgfQorCitjbGFzcyBOdWxs
YXJ5RnVuY3RvciB7CisgcHVibGljOgorICBpbnQgb3BlcmF0b3IoKSgpIHsgcmV0dXJuIDI7IH0K
K307CisKK2Jvb2wgZ19kb25lID0gZmFsc2U7Cit2b2lkIFZvaWROdWxsYXJ5KCkgeyBnX2RvbmUg
PSB0cnVlOyB9CisKK2NsYXNzIFZvaWROdWxsYXJ5RnVuY3RvciB7CisgcHVibGljOgorICB2b2lk
IG9wZXJhdG9yKCkoKSB7IGdfZG9uZSA9IHRydWU7IH0KK307CisKK2Jvb2wgVW5hcnkoaW50IHgp
IHsgcmV0dXJuIHggPCAwOyB9CisKK2NvbnN0IGNoYXIqIFBsdXMxKGNvbnN0IGNoYXIqIHMpIHsg
cmV0dXJuIHMgKyAxOyB9CisKK3ZvaWQgVm9pZFVuYXJ5KGludCAvKiBuICovKSB7IGdfZG9uZSA9
IHRydWU7IH0KKworYm9vbCBCeUNvbnN0UmVmKGNvbnN0IHN0ZDo6c3RyaW5nJiBzKSB7IHJldHVy
biBzID09ICJIaSI7IH0KKworY29uc3QgZG91YmxlIGdfZG91YmxlID0gMDsKK2Jvb2wgUmVmZXJl
bmNlc0dsb2JhbERvdWJsZShjb25zdCBkb3VibGUmIHgpIHsgcmV0dXJuICZ4ID09ICZnX2RvdWJs
ZTsgfQorCitzdGQ6OnN0cmluZyBCeU5vbkNvbnN0UmVmKHN0ZDo6c3RyaW5nJiBzKSB7IHJldHVy
biBzICs9ICIrIjsgfSAgLy8gTk9MSU5UCisKK3N0cnVjdCBVbmFyeUZ1bmN0b3IgeworICBpbnQg
b3BlcmF0b3IoKShib29sIHgpIHsgcmV0dXJuIHggPyAxIDogLTE7IH0KK307CisKK2NvbnN0IGNo
YXIqIEJpbmFyeShjb25zdCBjaGFyKiBpbnB1dCwgc2hvcnQgbikgeyByZXR1cm4gaW5wdXQgKyBu
OyB9ICAvLyBOT0xJTlQKKwordm9pZCBWb2lkQmluYXJ5KGludCwgY2hhcikgeyBnX2RvbmUgPSB0
cnVlOyB9CisKK2ludCBUZXJuYXJ5KGludCB4LCBjaGFyIHksIHNob3J0IHopIHsgcmV0dXJuIHgg
KyB5ICsgejsgfSAgLy8gTk9MSU5UCisKK3ZvaWQgVm9pZFRlcm5hcnkoaW50LCBjaGFyLCBib29s
KSB7IGdfZG9uZSA9IHRydWU7IH0KKworaW50IFN1bU9mNChpbnQgYSwgaW50IGIsIGludCBjLCBp
bnQgZCkgeyByZXR1cm4gYSArIGIgKyBjICsgZDsgfQorCitpbnQgU3VtT2ZGaXJzdDIoaW50IGEs
IGludCBiLCBVbnVzZWQsIFVudXNlZCkgeyByZXR1cm4gYSArIGI7IH0KKwordm9pZCBWb2lkRnVu
Y3Rpb25XaXRoRm91ckFyZ3VtZW50cyhjaGFyLCBpbnQsIGZsb2F0LCBkb3VibGUpIHsgZ19kb25l
ID0gdHJ1ZTsgfQorCitzdGQ6OnN0cmluZyBDb25jYXQ0KGNvbnN0IGNoYXIqIHMxLCBjb25zdCBj
aGFyKiBzMiwgY29uc3QgY2hhciogczMsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IHM0KSB7CisgIHJldHVybiBzdGQ6OnN0cmluZyhzMSkgKyBzMiArIHMzICsgczQ7Cit9CisKK2lu
dCBTdW1PZjUoaW50IGEsIGludCBiLCBpbnQgYywgaW50IGQsIGludCBlKSB7IHJldHVybiBhICsg
YiArIGMgKyBkICsgZTsgfQorCitzdHJ1Y3QgU3VtT2Y1RnVuY3RvciB7CisgIGludCBvcGVyYXRv
cigpKGludCBhLCBpbnQgYiwgaW50IGMsIGludCBkLCBpbnQgZSkgeworICAgIHJldHVybiBhICsg
YiArIGMgKyBkICsgZTsKKyAgfQorfTsKKworc3RkOjpzdHJpbmcgQ29uY2F0NShjb25zdCBjaGFy
KiBzMSwgY29uc3QgY2hhciogczIsIGNvbnN0IGNoYXIqIHMzLAorICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBzNCwgY29uc3QgY2hhciogczUpIHsKKyAgcmV0dXJuIHN0ZDo6c3RyaW5n
KHMxKSArIHMyICsgczMgKyBzNCArIHM1OworfQorCitpbnQgU3VtT2Y2KGludCBhLCBpbnQgYiwg
aW50IGMsIGludCBkLCBpbnQgZSwgaW50IGYpIHsKKyAgcmV0dXJuIGEgKyBiICsgYyArIGQgKyBl
ICsgZjsKK30KKworc3RydWN0IFN1bU9mNkZ1bmN0b3IgeworICBpbnQgb3BlcmF0b3IoKShpbnQg
YSwgaW50IGIsIGludCBjLCBpbnQgZCwgaW50IGUsIGludCBmKSB7CisgICAgcmV0dXJuIGEgKyBi
ICsgYyArIGQgKyBlICsgZjsKKyAgfQorfTsKKworc3RkOjpzdHJpbmcgQ29uY2F0Nihjb25zdCBj
aGFyKiBzMSwgY29uc3QgY2hhciogczIsIGNvbnN0IGNoYXIqIHMzLAorICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBzNCwgY29uc3QgY2hhciogczUsIGNvbnN0IGNoYXIqIHM2KSB7Cisg
IHJldHVybiBzdGQ6OnN0cmluZyhzMSkgKyBzMiArIHMzICsgczQgKyBzNSArIHM2OworfQorCitz
dGQ6OnN0cmluZyBDb25jYXQ3KGNvbnN0IGNoYXIqIHMxLCBjb25zdCBjaGFyKiBzMiwgY29uc3Qg
Y2hhciogczMsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHM0LCBjb25zdCBjaGFy
KiBzNSwgY29uc3QgY2hhciogczYsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHM3
KSB7CisgIHJldHVybiBzdGQ6OnN0cmluZyhzMSkgKyBzMiArIHMzICsgczQgKyBzNSArIHM2ICsg
czc7Cit9CisKK3N0ZDo6c3RyaW5nIENvbmNhdDgoY29uc3QgY2hhciogczEsIGNvbnN0IGNoYXIq
IHMyLCBjb25zdCBjaGFyKiBzMywKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczQs
IGNvbnN0IGNoYXIqIHM1LCBjb25zdCBjaGFyKiBzNiwKKyAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogczcsIGNvbnN0IGNoYXIqIHM4KSB7CisgIHJldHVybiBzdGQ6OnN0cmluZyhzMSkg
KyBzMiArIHMzICsgczQgKyBzNSArIHM2ICsgczcgKyBzODsKK30KKworc3RkOjpzdHJpbmcgQ29u
Y2F0OShjb25zdCBjaGFyKiBzMSwgY29uc3QgY2hhciogczIsIGNvbnN0IGNoYXIqIHMzLAorICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzNCwgY29uc3QgY2hhciogczUsIGNvbnN0IGNo
YXIqIHM2LAorICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzNywgY29uc3QgY2hhciog
czgsIGNvbnN0IGNoYXIqIHM5KSB7CisgIHJldHVybiBzdGQ6OnN0cmluZyhzMSkgKyBzMiArIHMz
ICsgczQgKyBzNSArIHM2ICsgczcgKyBzOCArIHM5OworfQorCitzdGQ6OnN0cmluZyBDb25jYXQx
MChjb25zdCBjaGFyKiBzMSwgY29uc3QgY2hhciogczIsIGNvbnN0IGNoYXIqIHMzLAorICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogczQsIGNvbnN0IGNoYXIqIHM1LCBjb25zdCBjaGFy
KiBzNiwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHM3LCBjb25zdCBjaGFyKiBz
OCwgY29uc3QgY2hhciogczksCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzMTAp
IHsKKyAgcmV0dXJuIHN0ZDo6c3RyaW5nKHMxKSArIHMyICsgczMgKyBzNCArIHM1ICsgczYgKyBz
NyArIHM4ICsgczkgKyBzMTA7Cit9CisKK2NsYXNzIEZvbyB7CisgcHVibGljOgorICBGb28oKSA6
IHZhbHVlXygxMjMpIHt9CisKKyAgaW50IE51bGxhcnkoKSBjb25zdCB7IHJldHVybiB2YWx1ZV87
IH0KKworICBzaG9ydCBVbmFyeShsb25nIHgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PHNob3J0Pih2
YWx1ZV8gKyB4KTsgfSAgLy8gTk9MSU5UCisKKyAgc3RkOjpzdHJpbmcgQmluYXJ5KGNvbnN0IHN0
ZDo6c3RyaW5nJiBzdHIsIGNoYXIgYykgY29uc3QgeyByZXR1cm4gc3RyICsgYzsgfQorCisgIGlu
dCBUZXJuYXJ5KGludCB4LCBib29sIHksIGNoYXIgeikgeyByZXR1cm4gdmFsdWVfICsgeCArIHkq
ejsgfQorCisgIGludCBTdW1PZjQoaW50IGEsIGludCBiLCBpbnQgYywgaW50IGQpIGNvbnN0IHsK
KyAgICByZXR1cm4gYSArIGIgKyBjICsgZCArIHZhbHVlXzsKKyAgfQorCisgIGludCBTdW1PZkxh
c3QyKFVudXNlZCwgVW51c2VkLCBpbnQgYSwgaW50IGIpIGNvbnN0IHsgcmV0dXJuIGEgKyBiOyB9
CisKKyAgaW50IFN1bU9mNShpbnQgYSwgaW50IGIsIGludCBjLCBpbnQgZCwgaW50IGUpIHsgcmV0
dXJuIGEgKyBiICsgYyArIGQgKyBlOyB9CisKKyAgaW50IFN1bU9mNihpbnQgYSwgaW50IGIsIGlu
dCBjLCBpbnQgZCwgaW50IGUsIGludCBmKSB7CisgICAgcmV0dXJuIGEgKyBiICsgYyArIGQgKyBl
ICsgZjsKKyAgfQorCisgIHN0ZDo6c3RyaW5nIENvbmNhdDcoY29uc3QgY2hhciogczEsIGNvbnN0
IGNoYXIqIHMyLCBjb25zdCBjaGFyKiBzMywKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBzNCwgY29uc3QgY2hhciogczUsIGNvbnN0IGNoYXIqIHM2LAorICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIHM3KSB7CisgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKHMxKSArIHMy
ICsgczMgKyBzNCArIHM1ICsgczYgKyBzNzsKKyAgfQorCisgIHN0ZDo6c3RyaW5nIENvbmNhdDgo
Y29uc3QgY2hhciogczEsIGNvbnN0IGNoYXIqIHMyLCBjb25zdCBjaGFyKiBzMywKKyAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzNCwgY29uc3QgY2hhciogczUsIGNvbnN0IGNoYXIq
IHM2LAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHM3LCBjb25zdCBjaGFyKiBz
OCkgeworICAgIHJldHVybiBzdGQ6OnN0cmluZyhzMSkgKyBzMiArIHMzICsgczQgKyBzNSArIHM2
ICsgczcgKyBzODsKKyAgfQorCisgIHN0ZDo6c3RyaW5nIENvbmNhdDkoY29uc3QgY2hhciogczEs
IGNvbnN0IGNoYXIqIHMyLCBjb25zdCBjaGFyKiBzMywKKyAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiBzNCwgY29uc3QgY2hhciogczUsIGNvbnN0IGNoYXIqIHM2LAorICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHM3LCBjb25zdCBjaGFyKiBzOCwgY29uc3QgY2hhciog
czkpIHsKKyAgICByZXR1cm4gc3RkOjpzdHJpbmcoczEpICsgczIgKyBzMyArIHM0ICsgczUgKyBz
NiArIHM3ICsgczggKyBzOTsKKyAgfQorCisgIHN0ZDo6c3RyaW5nIENvbmNhdDEwKGNvbnN0IGNo
YXIqIHMxLCBjb25zdCBjaGFyKiBzMiwgY29uc3QgY2hhciogczMsCisgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIHM0LCBjb25zdCBjaGFyKiBzNSwgY29uc3QgY2hhciogczYsCisg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHM3LCBjb25zdCBjaGFyKiBzOCwgY29u
c3QgY2hhciogczksCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHMxMCkgewor
ICAgIHJldHVybiBzdGQ6OnN0cmluZyhzMSkgKyBzMiArIHMzICsgczQgKyBzNSArIHM2ICsgczcg
KyBzOCArIHM5ICsgczEwOworICB9CisKKyBwcml2YXRlOgorICBpbnQgdmFsdWVfOworfTsKKwor
Ly8gVGVzdHMgdXNpbmcgSW52b2tlKCkgd2l0aCBhIG51bGxhcnkgZnVuY3Rpb24uCitURVNUKElu
dm9rZVRlc3QsIE51bGxhcnkpIHsKKyAgQWN0aW9uPGludCgpPiBhID0gSW52b2tlKE51bGxhcnkp
OyAgLy8gTk9MSU5UCisgIEVYUEVDVF9FUSgxLCBhLlBlcmZvcm0obWFrZV90dXBsZSgpKSk7Cit9
CisKKy8vIFRlc3RzIHVzaW5nIEludm9rZSgpIHdpdGggYSB1bmFyeSBmdW5jdGlvbi4KK1RFU1Qo
SW52b2tlVGVzdCwgVW5hcnkpIHsKKyAgQWN0aW9uPGJvb2woaW50KT4gYSA9IEludm9rZShVbmFy
eSk7ICAvLyBOT0xJTlQKKyAgRVhQRUNUX0ZBTFNFKGEuUGVyZm9ybShtYWtlX3R1cGxlKDEpKSk7
CisgIEVYUEVDVF9UUlVFKGEuUGVyZm9ybShtYWtlX3R1cGxlKC0xKSkpOworfQorCisvLyBUZXN0
cyB1c2luZyBJbnZva2UoKSB3aXRoIGEgYmluYXJ5IGZ1bmN0aW9uLgorVEVTVChJbnZva2VUZXN0
LCBCaW5hcnkpIHsKKyAgQWN0aW9uPGNvbnN0IGNoYXIqKGNvbnN0IGNoYXIqLCBzaG9ydCk+IGEg
PSBJbnZva2UoQmluYXJ5KTsgIC8vIE5PTElOVAorICBjb25zdCBjaGFyKiBwID0gIkhlbGxvIjsK
KyAgRVhQRUNUX0VRKHAgKyAyLCBhLlBlcmZvcm0obWFrZV90dXBsZShwLCBTaG9ydCgyKSkpKTsK
K30KKworLy8gVGVzdHMgdXNpbmcgSW52b2tlKCkgd2l0aCBhIHRlcm5hcnkgZnVuY3Rpb24uCitU
RVNUKEludm9rZVRlc3QsIFRlcm5hcnkpIHsKKyAgQWN0aW9uPGludChpbnQsIGNoYXIsIHNob3J0
KT4gYSA9IEludm9rZShUZXJuYXJ5KTsgIC8vIE5PTElOVAorICBFWFBFQ1RfRVEoNiwgYS5QZXJm
b3JtKG1ha2VfdHVwbGUoMSwgJ1wyJywgU2hvcnQoMykpKSk7Cit9CisKKy8vIFRlc3RzIHVzaW5n
IEludm9rZSgpIHdpdGggYSA0LWFyZ3VtZW50IGZ1bmN0aW9uLgorVEVTVChJbnZva2VUZXN0LCBG
dW5jdGlvblRoYXRUYWtlczRBcmd1bWVudHMpIHsKKyAgQWN0aW9uPGludChpbnQsIGludCwgaW50
LCBpbnQpPiBhID0gSW52b2tlKFN1bU9mNCk7ICAvLyBOT0xJTlQKKyAgRVhQRUNUX0VRKDEyMzQs
IGEuUGVyZm9ybShtYWtlX3R1cGxlKDEwMDAsIDIwMCwgMzAsIDQpKSk7Cit9CisKKy8vIFRlc3Rz
IHVzaW5nIEludm9rZSgpIHdpdGggYSA1LWFyZ3VtZW50IGZ1bmN0aW9uLgorVEVTVChJbnZva2VU
ZXN0LCBGdW5jdGlvblRoYXRUYWtlczVBcmd1bWVudHMpIHsKKyAgQWN0aW9uPGludChpbnQsIGlu
dCwgaW50LCBpbnQsIGludCk+IGEgPSBJbnZva2UoU3VtT2Y1KTsgIC8vIE5PTElOVAorICBFWFBF
Q1RfRVEoMTIzNDUsIGEuUGVyZm9ybShtYWtlX3R1cGxlKDEwMDAwLCAyMDAwLCAzMDAsIDQwLCA1
KSkpOworfQorCisvLyBUZXN0cyB1c2luZyBJbnZva2UoKSB3aXRoIGEgNi1hcmd1bWVudCBmdW5j
dGlvbi4KK1RFU1QoSW52b2tlVGVzdCwgRnVuY3Rpb25UaGF0VGFrZXM2QXJndW1lbnRzKSB7Cisg
IEFjdGlvbjxpbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCk+IGEgPSBJbnZva2UoU3Vt
T2Y2KTsgIC8vIE5PTElOVAorICBFWFBFQ1RfRVEoMTIzNDU2LCBhLlBlcmZvcm0obWFrZV90dXBs
ZSgxMDAwMDAsIDIwMDAwLCAzMDAwLCA0MDAsIDUwLCA2KSkpOworfQorCisvLyBBIGhlbHBlciB0
aGF0IHR1cm5zIHRoZSB0eXBlIG9mIGEgQy1zdHJpbmcgbGl0ZXJhbCBmcm9tIGNvbnN0CisvLyBj
aGFyW05dIHRvIGNvbnN0IGNoYXIqLgoraW5saW5lIGNvbnN0IGNoYXIqIENoYXJQdHIoY29uc3Qg
Y2hhciogcykgeyByZXR1cm4gczsgfQorCisvLyBUZXN0cyB1c2luZyBJbnZva2UoKSB3aXRoIGEg
Ny1hcmd1bWVudCBmdW5jdGlvbi4KK1RFU1QoSW52b2tlVGVzdCwgRnVuY3Rpb25UaGF0VGFrZXM3
QXJndW1lbnRzKSB7CisgIEFjdGlvbjxzdGQ6OnN0cmluZyhjb25zdCBjaGFyKiwgY29uc3QgY2hh
ciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciopPgorICAgICAgYSA9IEludm9rZShDb25j
YXQ3KTsKKyAgRVhQRUNUX0VRKCIxMjM0NTY3IiwKKyAgICAgICAgICAgIGEuUGVyZm9ybShtYWtl
X3R1cGxlKENoYXJQdHIoIjEiKSwgQ2hhclB0cigiMiIpLCBDaGFyUHRyKCIzIiksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFyUHRyKCI0IiksIENoYXJQdHIoIjUiKSwgQ2hh
clB0cigiNiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hhclB0cigiNyIp
KSkpOworfQorCisvLyBUZXN0cyB1c2luZyBJbnZva2UoKSB3aXRoIGEgOC1hcmd1bWVudCBmdW5j
dGlvbi4KK1RFU1QoSW52b2tlVGVzdCwgRnVuY3Rpb25UaGF0VGFrZXM4QXJndW1lbnRzKSB7Cisg
IEFjdGlvbjxzdGQ6OnN0cmluZyhjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIq
LCBjb25zdCBjaGFyKiwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqLCBjb25zdCBj
aGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKT4KKyAgICAgIGEgPSBJbnZva2UoQ29uY2F0
OCk7CisgIEVYUEVDVF9FUSgiMTIzNDU2NzgiLAorICAgICAgICAgICAgYS5QZXJmb3JtKG1ha2Vf
dHVwbGUoQ2hhclB0cigiMSIpLCBDaGFyUHRyKCIyIiksIENoYXJQdHIoIjMiKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJQdHIoIjQiKSwgQ2hhclB0cigiNSIpLCBDaGFy
UHRyKCI2IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFyUHRyKCI3Iiks
IENoYXJQdHIoIjgiKSkpKTsKK30KKworLy8gVGVzdHMgdXNpbmcgSW52b2tlKCkgd2l0aCBhIDkt
YXJndW1lbnQgZnVuY3Rpb24uCitURVNUKEludm9rZVRlc3QsIEZ1bmN0aW9uVGhhdFRha2VzOUFy
Z3VtZW50cykgeworICBBY3Rpb248c3RkOjpzdHJpbmcoY29uc3QgY2hhciosIGNvbnN0IGNoYXIq
LCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwKKyAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqKT4KKyAgICAgIGEgPSBJbnZva2UoQ29uY2F0OSk7CisgIEVY
UEVDVF9FUSgiMTIzNDU2Nzg5IiwKKyAgICAgICAgICAgIGEuUGVyZm9ybShtYWtlX3R1cGxlKENo
YXJQdHIoIjEiKSwgQ2hhclB0cigiMiIpLCBDaGFyUHRyKCIzIiksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDaGFyUHRyKCI0IiksIENoYXJQdHIoIjUiKSwgQ2hhclB0cigiNiIp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hhclB0cigiNyIpLCBDaGFyUHRy
KCI4IiksIENoYXJQdHIoIjkiKSkpKTsKK30KKworLy8gVGVzdHMgdXNpbmcgSW52b2tlKCkgd2l0
aCBhIDEwLWFyZ3VtZW50IGZ1bmN0aW9uLgorVEVTVChJbnZva2VUZXN0LCBGdW5jdGlvblRoYXRU
YWtlczEwQXJndW1lbnRzKSB7CisgIEFjdGlvbjxzdGQ6OnN0cmluZyhjb25zdCBjaGFyKiwgY29u
c3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwKKyAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLAorICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKT4KKyAgICAgIGEgPSBJ
bnZva2UoQ29uY2F0MTApOworICBFWFBFQ1RfRVEoIjEyMzQ1Njc4OTAiLAorICAgICAgICAgICAg
YS5QZXJmb3JtKG1ha2VfdHVwbGUoQ2hhclB0cigiMSIpLCBDaGFyUHRyKCIyIiksIENoYXJQdHIo
IjMiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJQdHIoIjQiKSwgQ2hh
clB0cigiNSIpLCBDaGFyUHRyKCI2IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDaGFyUHRyKCI3IiksIENoYXJQdHIoIjgiKSwgQ2hhclB0cigiOSIpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ2hhclB0cigiMCIpKSkpOworfQorCisvLyBUZXN0cyB1c2lu
ZyBJbnZva2UoKSB3aXRoIGZ1bmN0aW9ucyB3aXRoIHBhcmFtZXRlcnMgZGVjbGFyZWQgYXMgVW51
c2VkLgorVEVTVChJbnZva2VUZXN0LCBGdW5jdGlvbldpdGhVbnVzZWRQYXJhbWV0ZXJzKSB7Cisg
IEFjdGlvbjxpbnQoaW50LCBpbnQsIGRvdWJsZSwgY29uc3Qgc3RyaW5nJik+IGExID0KKyAgICAg
IEludm9rZShTdW1PZkZpcnN0Mik7CisgIHN0cmluZyBzKCJoaSIpOworICBFWFBFQ1RfRVEoMTIs
IGExLlBlcmZvcm0oCisgICAgdHVwbGU8aW50LCBpbnQsIGRvdWJsZSwgY29uc3Qgc3RyaW5nJj4o
MTAsIDIsIDUuNiwgcykpKTsKKworICBBY3Rpb248aW50KGludCwgaW50LCBib29sLCBpbnQqKT4g
YTIgPQorICAgICAgSW52b2tlKFN1bU9mRmlyc3QyKTsKKyAgRVhQRUNUX0VRKDIzLCBhMi5QZXJm
b3JtKG1ha2VfdHVwbGUoMjAsIDMsIHRydWUsIHN0YXRpY19jYXN0PGludCo+KE5VTEwpKSkpOwor
fQorCisvLyBUZXN0cyB1c2luZyBJbnZva2UoKSB3aXRoIG1ldGhvZHMgd2l0aCBwYXJhbWV0ZXJz
IGRlY2xhcmVkIGFzIFVudXNlZC4KK1RFU1QoSW52b2tlVGVzdCwgTWV0aG9kV2l0aFVudXNlZFBh
cmFtZXRlcnMpIHsKKyAgRm9vIGZvbzsKKyAgQWN0aW9uPGludChzdGQ6OnN0cmluZywgYm9vbCwg
aW50LCBpbnQpPiBhMSA9IEludm9rZSgmZm9vLCAmRm9vOjpTdW1PZkxhc3QyKTsKKyAgRVhQRUNU
X0VRKDEyLCBhMS5QZXJmb3JtKG1ha2VfdHVwbGUoQ2hhclB0cigiaGkiKSwgdHJ1ZSwgMTAsIDIp
KSk7CisKKyAgQWN0aW9uPGludChjaGFyLCBkb3VibGUsIGludCwgaW50KT4gYTIgPQorICAgICAg
SW52b2tlKCZmb28sICZGb286OlN1bU9mTGFzdDIpOworICBFWFBFQ1RfRVEoMjMsIGEyLlBlcmZv
cm0obWFrZV90dXBsZSgnYScsIDIuNSwgMjAsIDMpKSk7Cit9CisKKy8vIFRlc3RzIHVzaW5nIElu
dm9rZSgpIHdpdGggYSBmdW5jdG9yLgorVEVTVChJbnZva2VUZXN0LCBGdW5jdG9yKSB7CisgIEFj
dGlvbjxsb25nKGxvbmcsIGludCk+IGEgPSBJbnZva2UocGx1czxsb25nPigpKTsgIC8vIE5PTElO
VAorICBFWFBFQ1RfRVEoM0wsIGEuUGVyZm9ybShtYWtlX3R1cGxlKDEsIDIpKSk7Cit9CisKKy8v
IFRlc3RzIHVzaW5nIEludm9rZShmKSBhcyBhbiBhY3Rpb24gb2YgYSBjb21wYXRpYmxlIHR5cGUu
CitURVNUKEludm9rZVRlc3QsIEZ1bmN0aW9uV2l0aENvbXBhdGlibGVUeXBlKSB7CisgIEFjdGlv
bjxsb25nKGludCwgc2hvcnQsIGNoYXIsIGJvb2wpPiBhID0gSW52b2tlKFN1bU9mNCk7ICAvLyBO
T0xJTlQKKyAgRVhQRUNUX0VRKDQzMjEsIGEuUGVyZm9ybShtYWtlX3R1cGxlKDQwMDAsIFNob3J0
KDMwMCksIENoYXIoMjApLCB0cnVlKSkpOworfQorCisvLyBUZXN0cyB1c2luZyBJbnZva2UoKSB3
aXRoIGFuIG9iamVjdCBwb2ludGVyIGFuZCBhIG1ldGhvZCBwb2ludGVyLgorCisvLyBUZXN0cyB1
c2luZyBJbnZva2UoKSB3aXRoIGEgbnVsbGFyeSBtZXRob2QuCitURVNUKEludm9rZU1ldGhvZFRl
c3QsIE51bGxhcnkpIHsKKyAgRm9vIGZvbzsKKyAgQWN0aW9uPGludCgpPiBhID0gSW52b2tlKCZm
b28sICZGb286Ok51bGxhcnkpOyAgLy8gTk9MSU5UCisgIEVYUEVDVF9FUSgxMjMsIGEuUGVyZm9y
bShtYWtlX3R1cGxlKCkpKTsKK30KKworLy8gVGVzdHMgdXNpbmcgSW52b2tlKCkgd2l0aCBhIHVu
YXJ5IG1ldGhvZC4KK1RFU1QoSW52b2tlTWV0aG9kVGVzdCwgVW5hcnkpIHsKKyAgRm9vIGZvbzsK
KyAgQWN0aW9uPHNob3J0KGxvbmcpPiBhID0gSW52b2tlKCZmb28sICZGb286OlVuYXJ5KTsgIC8v
IE5PTElOVAorICBFWFBFQ1RfRVEoNDEyMywgYS5QZXJmb3JtKG1ha2VfdHVwbGUoNDAwMCkpKTsK
K30KKworLy8gVGVzdHMgdXNpbmcgSW52b2tlKCkgd2l0aCBhIGJpbmFyeSBtZXRob2QuCitURVNU
KEludm9rZU1ldGhvZFRlc3QsIEJpbmFyeSkgeworICBGb28gZm9vOworICBBY3Rpb248c3RyaW5n
KGNvbnN0IHN0cmluZyYsIGNoYXIpPiBhID0gSW52b2tlKCZmb28sICZGb286OkJpbmFyeSk7Cisg
IHN0cmluZyBzKCJIZWxsIik7CisgIEVYUEVDVF9FUSgiSGVsbG8iLCBhLlBlcmZvcm0oCisgICAg
ICB0dXBsZTxjb25zdCBzdHJpbmcmLCBjaGFyPihzLCAnbycpKSk7Cit9CisKKy8vIFRlc3RzIHVz
aW5nIEludm9rZSgpIHdpdGggYSB0ZXJuYXJ5IG1ldGhvZC4KK1RFU1QoSW52b2tlTWV0aG9kVGVz
dCwgVGVybmFyeSkgeworICBGb28gZm9vOworICBBY3Rpb248aW50KGludCwgYm9vbCwgY2hhcik+
IGEgPSBJbnZva2UoJmZvbywgJkZvbzo6VGVybmFyeSk7ICAvLyBOT0xJTlQKKyAgRVhQRUNUX0VR
KDExMjQsIGEuUGVyZm9ybShtYWtlX3R1cGxlKDEwMDAsIHRydWUsIENoYXIoMSkpKSk7Cit9CisK
Ky8vIFRlc3RzIHVzaW5nIEludm9rZSgpIHdpdGggYSA0LWFyZ3VtZW50IG1ldGhvZC4KK1RFU1Qo
SW52b2tlTWV0aG9kVGVzdCwgTWV0aG9kVGhhdFRha2VzNEFyZ3VtZW50cykgeworICBGb28gZm9v
OworICBBY3Rpb248aW50KGludCwgaW50LCBpbnQsIGludCk+IGEgPSBJbnZva2UoJmZvbywgJkZv
bzo6U3VtT2Y0KTsgIC8vIE5PTElOVAorICBFWFBFQ1RfRVEoMTM1NywgYS5QZXJmb3JtKG1ha2Vf
dHVwbGUoMTAwMCwgMjAwLCAzMCwgNCkpKTsKK30KKworLy8gVGVzdHMgdXNpbmcgSW52b2tlKCkg
d2l0aCBhIDUtYXJndW1lbnQgbWV0aG9kLgorVEVTVChJbnZva2VNZXRob2RUZXN0LCBNZXRob2RU
aGF0VGFrZXM1QXJndW1lbnRzKSB7CisgIEZvbyBmb287CisgIEFjdGlvbjxpbnQoaW50LCBpbnQs
IGludCwgaW50LCBpbnQpPiBhID0gSW52b2tlKCZmb28sICZGb286OlN1bU9mNSk7ICAvLyBOT0xJ
TlQKKyAgRVhQRUNUX0VRKDEyMzQ1LCBhLlBlcmZvcm0obWFrZV90dXBsZSgxMDAwMCwgMjAwMCwg
MzAwLCA0MCwgNSkpKTsKK30KKworLy8gVGVzdHMgdXNpbmcgSW52b2tlKCkgd2l0aCBhIDYtYXJn
dW1lbnQgbWV0aG9kLgorVEVTVChJbnZva2VNZXRob2RUZXN0LCBNZXRob2RUaGF0VGFrZXM2QXJn
dW1lbnRzKSB7CisgIEZvbyBmb287CisgIEFjdGlvbjxpbnQoaW50LCBpbnQsIGludCwgaW50LCBp
bnQsIGludCk+IGEgPSAgLy8gTk9MSU5UCisgICAgICBJbnZva2UoJmZvbywgJkZvbzo6U3VtT2Y2
KTsKKyAgRVhQRUNUX0VRKDEyMzQ1NiwgYS5QZXJmb3JtKG1ha2VfdHVwbGUoMTAwMDAwLCAyMDAw
MCwgMzAwMCwgNDAwLCA1MCwgNikpKTsKK30KKworLy8gVGVzdHMgdXNpbmcgSW52b2tlKCkgd2l0
aCBhIDctYXJndW1lbnQgbWV0aG9kLgorVEVTVChJbnZva2VNZXRob2RUZXN0LCBNZXRob2RUaGF0
VGFrZXM3QXJndW1lbnRzKSB7CisgIEZvbyBmb287CisgIEFjdGlvbjxzdGQ6OnN0cmluZyhjb25z
dCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwKKyAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciopPgorICAg
ICAgYSA9IEludm9rZSgmZm9vLCAmRm9vOjpDb25jYXQ3KTsKKyAgRVhQRUNUX0VRKCIxMjM0NTY3
IiwKKyAgICAgICAgICAgIGEuUGVyZm9ybShtYWtlX3R1cGxlKENoYXJQdHIoIjEiKSwgQ2hhclB0
cigiMiIpLCBDaGFyUHRyKCIzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
aGFyUHRyKCI0IiksIENoYXJQdHIoIjUiKSwgQ2hhclB0cigiNiIpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ2hhclB0cigiNyIpKSkpOworfQorCisvLyBUZXN0cyB1c2luZyBJ
bnZva2UoKSB3aXRoIGEgOC1hcmd1bWVudCBtZXRob2QuCitURVNUKEludm9rZU1ldGhvZFRlc3Qs
IE1ldGhvZFRoYXRUYWtlczhBcmd1bWVudHMpIHsKKyAgRm9vIGZvbzsKKyAgQWN0aW9uPHN0ZDo6
c3RyaW5nKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIq
LAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBj
aGFyKiwgY29uc3QgY2hhciopPgorICAgICAgYSA9IEludm9rZSgmZm9vLCAmRm9vOjpDb25jYXQ4
KTsKKyAgRVhQRUNUX0VRKCIxMjM0NTY3OCIsCisgICAgICAgICAgICBhLlBlcmZvcm0obWFrZV90
dXBsZShDaGFyUHRyKCIxIiksIENoYXJQdHIoIjIiKSwgQ2hhclB0cigiMyIpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ2hhclB0cigiNCIpLCBDaGFyUHRyKCI1IiksIENoYXJQ
dHIoIjYiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJQdHIoIjciKSwg
Q2hhclB0cigiOCIpKSkpOworfQorCisvLyBUZXN0cyB1c2luZyBJbnZva2UoKSB3aXRoIGEgOS1h
cmd1bWVudCBtZXRob2QuCitURVNUKEludm9rZU1ldGhvZFRlc3QsIE1ldGhvZFRoYXRUYWtlczlB
cmd1bWVudHMpIHsKKyAgRm9vIGZvbzsKKyAgQWN0aW9uPHN0ZDo6c3RyaW5nKGNvbnN0IGNoYXIq
LCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLAorICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhcios
CisgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKik+CisgICAgICBhID0gSW52b2tlKCZm
b28sICZGb286OkNvbmNhdDkpOworICBFWFBFQ1RfRVEoIjEyMzQ1Njc4OSIsCisgICAgICAgICAg
ICBhLlBlcmZvcm0obWFrZV90dXBsZShDaGFyUHRyKCIxIiksIENoYXJQdHIoIjIiKSwgQ2hhclB0
cigiMyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hhclB0cigiNCIpLCBD
aGFyUHRyKCI1IiksIENoYXJQdHIoIjYiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENoYXJQdHIoIjciKSwgQ2hhclB0cigiOCIpLCBDaGFyUHRyKCI5IikpKSk7Cit9CisKKy8v
IFRlc3RzIHVzaW5nIEludm9rZSgpIHdpdGggYSAxMC1hcmd1bWVudCBtZXRob2QuCitURVNUKElu
dm9rZU1ldGhvZFRlc3QsIE1ldGhvZFRoYXRUYWtlczEwQXJndW1lbnRzKSB7CisgIEZvbyBmb287
CisgIEFjdGlvbjxzdGQ6OnN0cmluZyhjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNo
YXIqLCBjb25zdCBjaGFyKiwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqLCBjb25z
dCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLAorICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciosIGNvbnN0IGNoYXIqKT4KKyAgICAgIGEgPSBJbnZva2UoJmZvbywgJkZvbzo6
Q29uY2F0MTApOworICBFWFBFQ1RfRVEoIjEyMzQ1Njc4OTAiLAorICAgICAgICAgICAgYS5QZXJm
b3JtKG1ha2VfdHVwbGUoQ2hhclB0cigiMSIpLCBDaGFyUHRyKCIyIiksIENoYXJQdHIoIjMiKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJQdHIoIjQiKSwgQ2hhclB0cigi
NSIpLCBDaGFyUHRyKCI2IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFy
UHRyKCI3IiksIENoYXJQdHIoIjgiKSwgQ2hhclB0cigiOSIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ2hhclB0cigiMCIpKSkpOworfQorCisvLyBUZXN0cyB1c2luZyBJbnZv
a2UoZikgYXMgYW4gYWN0aW9uIG9mIGEgY29tcGF0aWJsZSB0eXBlLgorVEVTVChJbnZva2VNZXRo
b2RUZXN0LCBNZXRob2RXaXRoQ29tcGF0aWJsZVR5cGUpIHsKKyAgRm9vIGZvbzsKKyAgQWN0aW9u
PGxvbmcoaW50LCBzaG9ydCwgY2hhciwgYm9vbCk+IGEgPSAgLy8gTk9MSU5UCisgICAgICBJbnZv
a2UoJmZvbywgJkZvbzo6U3VtT2Y0KTsKKyAgRVhQRUNUX0VRKDQ0NDQsIGEuUGVyZm9ybShtYWtl
X3R1cGxlKDQwMDAsIFNob3J0KDMwMCksIENoYXIoMjApLCB0cnVlKSkpOworfQorCisvLyBUZXN0
cyB1c2luZyBXaXRob3V0QXJncyB3aXRoIGFuIGFjdGlvbiB0aGF0IHRha2VzIG5vIGFyZ3VtZW50
LgorVEVTVChXaXRob3V0QXJnc1Rlc3QsIE5vQXJnKSB7CisgIEFjdGlvbjxpbnQoaW50IG4pPiBh
ID0gV2l0aG91dEFyZ3MoSW52b2tlKE51bGxhcnkpKTsgIC8vIE5PTElOVAorICBFWFBFQ1RfRVEo
MSwgYS5QZXJmb3JtKG1ha2VfdHVwbGUoMikpKTsKK30KKworLy8gVGVzdHMgdXNpbmcgV2l0aEFy
ZyB3aXRoIGFuIGFjdGlvbiB0aGF0IHRha2VzIDEgYXJndW1lbnQuCitURVNUKFdpdGhBcmdUZXN0
LCBPbmVBcmcpIHsKKyAgQWN0aW9uPGJvb2woZG91YmxlIHgsIGludCBuKT4gYiA9IFdpdGhBcmc8
MT4oSW52b2tlKFVuYXJ5KSk7ICAvLyBOT0xJTlQKKyAgRVhQRUNUX1RSVUUoYi5QZXJmb3JtKG1h
a2VfdHVwbGUoMS41LCAtMSkpKTsKKyAgRVhQRUNUX0ZBTFNFKGIuUGVyZm9ybShtYWtlX3R1cGxl
KDEuNSwgMSkpKTsKK30KKworVEVTVChSZXR1cm5BcmdBY3Rpb25UZXN0LCBXb3Jrc0Zvck9uZUFy
Z0ludEFyZzApIHsKKyAgY29uc3QgQWN0aW9uPGludChpbnQpPiBhID0gUmV0dXJuQXJnPDA+KCk7
CisgIEVYUEVDVF9FUSg1LCBhLlBlcmZvcm0obWFrZV90dXBsZSg1KSkpOworfQorCitURVNUKFJl
dHVybkFyZ0FjdGlvblRlc3QsIFdvcmtzRm9yTXVsdGlBcmdCb29sQXJnMCkgeworICBjb25zdCBB
Y3Rpb248Ym9vbChib29sLCBib29sLCBib29sKT4gYSA9IFJldHVybkFyZzwwPigpOworICBFWFBF
Q1RfVFJVRShhLlBlcmZvcm0obWFrZV90dXBsZSh0cnVlLCBmYWxzZSwgZmFsc2UpKSk7Cit9CisK
K1RFU1QoUmV0dXJuQXJnQWN0aW9uVGVzdCwgV29ya3NGb3JNdWx0aUFyZ1N0cmluZ0FyZzIpIHsK
KyAgY29uc3QgQWN0aW9uPHN0ZDo6c3RyaW5nKGludCwgaW50LCBzdGQ6OnN0cmluZywgaW50KT4g
YSA9IFJldHVybkFyZzwyPigpOworICBFWFBFQ1RfRVEoInNldmVuIiwgYS5QZXJmb3JtKG1ha2Vf
dHVwbGUoNSwgNiwgc3RkOjpzdHJpbmcoInNldmVuIiksIDgpKSk7Cit9CisKK1RFU1QoU2F2ZUFy
Z0FjdGlvblRlc3QsIFdvcmtzRm9yU2FtZVR5cGUpIHsKKyAgaW50IHJlc3VsdCA9IDA7CisgIGNv
bnN0IEFjdGlvbjx2b2lkKGludCBuKT4gYTEgPSBTYXZlQXJnPDA+KCZyZXN1bHQpOworICBhMS5Q
ZXJmb3JtKG1ha2VfdHVwbGUoNSkpOworICBFWFBFQ1RfRVEoNSwgcmVzdWx0KTsKK30KKworVEVT
VChTYXZlQXJnQWN0aW9uVGVzdCwgV29ya3NGb3JDb21wYXRpYmxlVHlwZSkgeworICBpbnQgcmVz
dWx0ID0gMDsKKyAgY29uc3QgQWN0aW9uPHZvaWQoYm9vbCwgY2hhcik+IGExID0gU2F2ZUFyZzwx
PigmcmVzdWx0KTsKKyAgYTEuUGVyZm9ybShtYWtlX3R1cGxlKHRydWUsICdhJykpOworICBFWFBF
Q1RfRVEoJ2EnLCByZXN1bHQpOworfQorCitURVNUKFNhdmVBcmdQb2ludGVlQWN0aW9uVGVzdCwg
V29ya3NGb3JTYW1lVHlwZSkgeworICBpbnQgcmVzdWx0ID0gMDsKKyAgY29uc3QgaW50IHZhbHVl
ID0gNTsKKyAgY29uc3QgQWN0aW9uPHZvaWQoY29uc3QgaW50Kik+IGExID0gU2F2ZUFyZ1BvaW50
ZWU8MD4oJnJlc3VsdCk7CisgIGExLlBlcmZvcm0obWFrZV90dXBsZSgmdmFsdWUpKTsKKyAgRVhQ
RUNUX0VRKDUsIHJlc3VsdCk7Cit9CisKK1RFU1QoU2F2ZUFyZ1BvaW50ZWVBY3Rpb25UZXN0LCBX
b3Jrc0ZvckNvbXBhdGlibGVUeXBlKSB7CisgIGludCByZXN1bHQgPSAwOworICBjaGFyIHZhbHVl
ID0gJ2EnOworICBjb25zdCBBY3Rpb248dm9pZChib29sLCBjaGFyKik+IGExID0gU2F2ZUFyZ1Bv
aW50ZWU8MT4oJnJlc3VsdCk7CisgIGExLlBlcmZvcm0obWFrZV90dXBsZSh0cnVlLCAmdmFsdWUp
KTsKKyAgRVhQRUNUX0VRKCdhJywgcmVzdWx0KTsKK30KKworVEVTVChTYXZlQXJnUG9pbnRlZUFj
dGlvblRlc3QsIFdvcmtzRm9yTGlua2VkUHRyKSB7CisgIGludCByZXN1bHQgPSAwOworICBsaW5r
ZWRfcHRyPGludD4gdmFsdWUobmV3IGludCg1KSk7CisgIGNvbnN0IEFjdGlvbjx2b2lkKGxpbmtl
ZF9wdHI8aW50Pik+IGExID0gU2F2ZUFyZ1BvaW50ZWU8MD4oJnJlc3VsdCk7CisgIGExLlBlcmZv
cm0obWFrZV90dXBsZSh2YWx1ZSkpOworICBFWFBFQ1RfRVEoNSwgcmVzdWx0KTsKK30KKworVEVT
VChTZXRBcmdSZWZlcmVlQWN0aW9uVGVzdCwgV29ya3NGb3JTYW1lVHlwZSkgeworICBpbnQgdmFs
dWUgPSAwOworICBjb25zdCBBY3Rpb248dm9pZChpbnQmKT4gYTEgPSBTZXRBcmdSZWZlcmVlPDA+
KDEpOworICBhMS5QZXJmb3JtKHR1cGxlPGludCY+KHZhbHVlKSk7CisgIEVYUEVDVF9FUSgxLCB2
YWx1ZSk7Cit9CisKK1RFU1QoU2V0QXJnUmVmZXJlZUFjdGlvblRlc3QsIFdvcmtzRm9yQ29tcGF0
aWJsZVR5cGUpIHsKKyAgaW50IHZhbHVlID0gMDsKKyAgY29uc3QgQWN0aW9uPHZvaWQoaW50LCBp
bnQmKT4gYTEgPSBTZXRBcmdSZWZlcmVlPDE+KCdhJyk7CisgIGExLlBlcmZvcm0odHVwbGU8aW50
LCBpbnQmPigwLCB2YWx1ZSkpOworICBFWFBFQ1RfRVEoJ2EnLCB2YWx1ZSk7Cit9CisKK1RFU1Qo
U2V0QXJnUmVmZXJlZUFjdGlvblRlc3QsIFdvcmtzV2l0aEV4dHJhQXJndW1lbnRzKSB7CisgIGlu
dCB2YWx1ZSA9IDA7CisgIGNvbnN0IEFjdGlvbjx2b2lkKGJvb2wsIGludCwgaW50JiwgY29uc3Qg
Y2hhciopPiBhMSA9IFNldEFyZ1JlZmVyZWU8Mj4oJ2EnKTsKKyAgYTEuUGVyZm9ybSh0dXBsZTxi
b29sLCBpbnQsIGludCYsIGNvbnN0IGNoYXIqPih0cnVlLCAwLCB2YWx1ZSwgImhpIikpOworICBF
WFBFQ1RfRVEoJ2EnLCB2YWx1ZSk7Cit9CisKKy8vIEEgY2xhc3MgdGhhdCBjYW4gYmUgdXNlZCB0
byB2ZXJpZnkgdGhhdCBpdHMgZGVzdHJ1Y3RvciBpcyBjYWxsZWQ6IGl0IHdpbGwgc2V0CisvLyB0
aGUgYm9vbCBwcm92aWRlZCB0byB0aGUgY29uc3RydWN0b3IgdG8gdHJ1ZSB3aGVuIGRlc3Ryb3ll
ZC4KK2NsYXNzIERlbGV0aW9uVGVzdGVyIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IERlbGV0aW9u
VGVzdGVyKGJvb2wqIGlzX2RlbGV0ZWQpCisgICAgOiBpc19kZWxldGVkXyhpc19kZWxldGVkKSB7
CisgICAgLy8gTWFrZSBzdXJlIHRoZSBiaXQgaXMgc2V0IHRvIGZhbHNlLgorICAgICppc19kZWxl
dGVkXyA9IGZhbHNlOworICB9CisKKyAgfkRlbGV0aW9uVGVzdGVyKCkgeworICAgICppc19kZWxl
dGVkXyA9IHRydWU7CisgIH0KKworIHByaXZhdGU6CisgIGJvb2wqIGlzX2RlbGV0ZWRfOworfTsK
KworVEVTVChEZWxldGVBcmdBY3Rpb25UZXN0LCBPbmVBcmcpIHsKKyAgYm9vbCBpc19kZWxldGVk
ID0gZmFsc2U7CisgIERlbGV0aW9uVGVzdGVyKiB0ID0gbmV3IERlbGV0aW9uVGVzdGVyKCZpc19k
ZWxldGVkKTsKKyAgY29uc3QgQWN0aW9uPHZvaWQoRGVsZXRpb25UZXN0ZXIqKT4gYTEgPSBEZWxl
dGVBcmc8MD4oKTsgICAgICAvLyBOT0xJTlQKKyAgRVhQRUNUX0ZBTFNFKGlzX2RlbGV0ZWQpOwor
ICBhMS5QZXJmb3JtKG1ha2VfdHVwbGUodCkpOworICBFWFBFQ1RfVFJVRShpc19kZWxldGVkKTsK
K30KKworVEVTVChEZWxldGVBcmdBY3Rpb25UZXN0LCBUZW5BcmdzKSB7CisgIGJvb2wgaXNfZGVs
ZXRlZCA9IGZhbHNlOworICBEZWxldGlvblRlc3RlciogdCA9IG5ldyBEZWxldGlvblRlc3Rlcigm
aXNfZGVsZXRlZCk7CisgIGNvbnN0IEFjdGlvbjx2b2lkKGJvb2wsIGludCwgaW50LCBjb25zdCBj
aGFyKiwgYm9vbCwKKyAgICAgICAgICAgICAgICAgICAgaW50LCBpbnQsIGludCwgaW50LCBEZWxl
dGlvblRlc3RlciopPiBhMSA9IERlbGV0ZUFyZzw5PigpOworICBFWFBFQ1RfRkFMU0UoaXNfZGVs
ZXRlZCk7CisgIGExLlBlcmZvcm0obWFrZV90dXBsZSh0cnVlLCA1LCA2LCBDaGFyUHRyKCJoaSIp
LCBmYWxzZSwgNywgOCwgOSwgMTAsIHQpKTsKKyAgRVhQRUNUX1RSVUUoaXNfZGVsZXRlZCk7Cit9
CisKKyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUworCitURVNUKFRocm93QWN0aW9uVGVzdCwgVGhy
b3dzR2l2ZW5FeGNlcHRpb25JblZvaWRGdW5jdGlvbikgeworICBjb25zdCBBY3Rpb248dm9pZChp
bnQgbik+IGEgPSBUaHJvdygnYScpOworICBFWFBFQ1RfVEhST1coYS5QZXJmb3JtKG1ha2VfdHVw
bGUoMCkpLCBjaGFyKTsKK30KKworY2xhc3MgTXlFeGNlcHRpb24ge307CisKK1RFU1QoVGhyb3dB
Y3Rpb25UZXN0LCBUaHJvd3NHaXZlbkV4Y2VwdGlvbkluTm9uVm9pZEZ1bmN0aW9uKSB7CisgIGNv
bnN0IEFjdGlvbjxkb3VibGUoY2hhciBjaCk+IGEgPSBUaHJvdyhNeUV4Y2VwdGlvbigpKTsKKyAg
RVhQRUNUX1RIUk9XKGEuUGVyZm9ybShtYWtlX3R1cGxlKCcwJykpLCBNeUV4Y2VwdGlvbik7Cit9
CisKK1RFU1QoVGhyb3dBY3Rpb25UZXN0LCBUaHJvd3NHaXZlbkV4Y2VwdGlvbkluTnVsbGFyeUZ1
bmN0aW9uKSB7CisgIGNvbnN0IEFjdGlvbjxkb3VibGUoKT4gYSA9IFRocm93KE15RXhjZXB0aW9u
KCkpOworICBFWFBFQ1RfVEhST1coYS5QZXJmb3JtKG1ha2VfdHVwbGUoKSksIE15RXhjZXB0aW9u
KTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9IQVNfRVhDRVBUSU9OUworCisvLyBUZXN0cyB0aGF0
IFNldEFycmF5QXJndW1lbnQ8Tj4oZmlyc3QsIGxhc3QpIHNldHMgdGhlIGVsZW1lbnRzIG9mIHRo
ZSBhcnJheQorLy8gcG9pbnRlZCB0byBieSB0aGUgTi10aCAoMC1iYXNlZCkgYXJndW1lbnQgdG8g
dmFsdWVzIGluIHJhbmdlIFtmaXJzdCwgbGFzdCkuCitURVNUKFNldEFycmF5QXJndW1lbnRUZXN0
LCBTZXRzVGhlTnRoQXJyYXkpIHsKKyAgdHlwZWRlZiB2b2lkIE15RnVuY3Rpb24oYm9vbCwgaW50
KiwgY2hhciopOworICBpbnQgbnVtYmVyc1tdID0geyAxLCAyLCAzIH07CisgIEFjdGlvbjxNeUZ1
bmN0aW9uPiBhID0gU2V0QXJyYXlBcmd1bWVudDwxPihudW1iZXJzLCBudW1iZXJzICsgMyk7CisK
KyAgaW50IG5bNF0gPSB7fTsKKyAgaW50KiBwbiA9IG47CisgIGNoYXIgY2hbNF0gPSB7fTsKKyAg
Y2hhciogcGNoID0gY2g7CisgIGEuUGVyZm9ybShtYWtlX3R1cGxlKHRydWUsIHBuLCBwY2gpKTsK
KyAgRVhQRUNUX0VRKDEsIG5bMF0pOworICBFWFBFQ1RfRVEoMiwgblsxXSk7CisgIEVYUEVDVF9F
USgzLCBuWzJdKTsKKyAgRVhQRUNUX0VRKDAsIG5bM10pOworICBFWFBFQ1RfRVEoJ1wwJywgY2hb
MF0pOworICBFWFBFQ1RfRVEoJ1wwJywgY2hbMV0pOworICBFWFBFQ1RfRVEoJ1wwJywgY2hbMl0p
OworICBFWFBFQ1RfRVEoJ1wwJywgY2hbM10pOworCisgIC8vIFRlc3RzIGZpcnN0IGFuZCBsYXN0
IGFyZSBpdGVyYXRvcnMuCisgIHN0ZDo6c3RyaW5nIGxldHRlcnMgPSAiYWJjIjsKKyAgYSA9IFNl
dEFycmF5QXJndW1lbnQ8Mj4obGV0dGVycy5iZWdpbigpLCBsZXR0ZXJzLmVuZCgpKTsKKyAgc3Rk
OjpmaWxsX24obiwgNCwgMCk7CisgIHN0ZDo6ZmlsbF9uKGNoLCA0LCAnXDAnKTsKKyAgYS5QZXJm
b3JtKG1ha2VfdHVwbGUodHJ1ZSwgcG4sIHBjaCkpOworICBFWFBFQ1RfRVEoMCwgblswXSk7Cisg
IEVYUEVDVF9FUSgwLCBuWzFdKTsKKyAgRVhQRUNUX0VRKDAsIG5bMl0pOworICBFWFBFQ1RfRVEo
MCwgblszXSk7CisgIEVYUEVDVF9FUSgnYScsIGNoWzBdKTsKKyAgRVhQRUNUX0VRKCdiJywgY2hb
MV0pOworICBFWFBFQ1RfRVEoJ2MnLCBjaFsyXSk7CisgIEVYUEVDVF9FUSgnXDAnLCBjaFszXSk7
Cit9CisKKy8vIFRlc3RzIFNldEFycmF5QXJndW1lbnQ8Tj4oZmlyc3QsIGxhc3QpIHdoZXJlIGZp
cnN0ID09IGxhc3QuCitURVNUKFNldEFycmF5QXJndW1lbnRUZXN0LCBTZXRzVGhlTnRoQXJyYXlX
aXRoRW1wdHlSYW5nZSkgeworICB0eXBlZGVmIHZvaWQgTXlGdW5jdGlvbihib29sLCBpbnQqKTsK
KyAgaW50IG51bWJlcnNbXSA9IHsgMSwgMiwgMyB9OworICBBY3Rpb248TXlGdW5jdGlvbj4gYSA9
IFNldEFycmF5QXJndW1lbnQ8MT4obnVtYmVycywgbnVtYmVycyk7CisKKyAgaW50IG5bNF0gPSB7
fTsKKyAgaW50KiBwbiA9IG47CisgIGEuUGVyZm9ybShtYWtlX3R1cGxlKHRydWUsIHBuKSk7Cisg
IEVYUEVDVF9FUSgwLCBuWzBdKTsKKyAgRVhQRUNUX0VRKDAsIG5bMV0pOworICBFWFBFQ1RfRVEo
MCwgblsyXSk7CisgIEVYUEVDVF9FUSgwLCBuWzNdKTsKK30KKworLy8gVGVzdHMgU2V0QXJyYXlB
cmd1bWVudDxOPihmaXJzdCwgbGFzdCkgd2hlcmUgKmZpcnN0IGlzIGNvbnZlcnRpYmxlCisvLyAo
YnV0IG5vdCBlcXVhbCkgdG8gdGhlIGFyZ3VtZW50IHR5cGUuCitURVNUKFNldEFycmF5QXJndW1l
bnRUZXN0LCBTZXRzVGhlTnRoQXJyYXlXaXRoQ29udmVydGlibGVUeXBlKSB7CisgIHR5cGVkZWYg
dm9pZCBNeUZ1bmN0aW9uKGJvb2wsIGludCopOworICBjaGFyIGNoYXJzW10gPSB7IDk3LCA5OCwg
OTkgfTsKKyAgQWN0aW9uPE15RnVuY3Rpb24+IGEgPSBTZXRBcnJheUFyZ3VtZW50PDE+KGNoYXJz
LCBjaGFycyArIDMpOworCisgIGludCBjb2Rlc1s0XSA9IHsgMTExLCAyMjIsIDMzMywgNDQ0IH07
CisgIGludCogcGNvZGVzID0gY29kZXM7CisgIGEuUGVyZm9ybShtYWtlX3R1cGxlKHRydWUsIHBj
b2RlcykpOworICBFWFBFQ1RfRVEoOTcsIGNvZGVzWzBdKTsKKyAgRVhQRUNUX0VRKDk4LCBjb2Rl
c1sxXSk7CisgIEVYUEVDVF9FUSg5OSwgY29kZXNbMl0pOworICBFWFBFQ1RfRVEoNDQ0LCBjb2Rl
c1szXSk7Cit9CisKKy8vIFRlc3QgU2V0QXJyYXlBcmd1bWVudDxOPihmaXJzdCwgbGFzdCkgd2l0
aCBpdGVyYXRvciBhcyBhcmd1bWVudC4KK1RFU1QoU2V0QXJyYXlBcmd1bWVudFRlc3QsIFNldHNU
aGVOdGhBcnJheVdpdGhJdGVyYXRvckFyZ3VtZW50KSB7CisgIHR5cGVkZWYgdm9pZCBNeUZ1bmN0
aW9uKGJvb2wsIHN0ZDo6YmFja19pbnNlcnRfaXRlcmF0b3I8c3RkOjpzdHJpbmc+KTsKKyAgc3Rk
OjpzdHJpbmcgbGV0dGVycyA9ICJhYmMiOworICBBY3Rpb248TXlGdW5jdGlvbj4gYSA9IFNldEFy
cmF5QXJndW1lbnQ8MT4obGV0dGVycy5iZWdpbigpLCBsZXR0ZXJzLmVuZCgpKTsKKworICBzdGQ6
OnN0cmluZyBzOworICBhLlBlcmZvcm0obWFrZV90dXBsZSh0cnVlLCBiYWNrX2luc2VydGVyKHMp
KSk7CisgIEVYUEVDVF9FUShsZXR0ZXJzLCBzKTsKK30KKworVEVTVChSZXR1cm5Qb2ludGVlVGVz
dCwgV29ya3MpIHsKKyAgaW50IG4gPSA0MjsKKyAgY29uc3QgQWN0aW9uPGludCgpPiBhID0gUmV0
dXJuUG9pbnRlZSgmbik7CisgIEVYUEVDVF9FUSg0MiwgYS5QZXJmb3JtKG1ha2VfdHVwbGUoKSkp
OworCisgIG4gPSA0MzsKKyAgRVhQRUNUX0VRKDQzLCBhLlBlcmZvcm0obWFrZV90dXBsZSgpKSk7
Cit9CisKK30gIC8vIG5hbWVzcGFjZSBnbW9ja19nZW5lcmF0ZWRfYWN0aW9uc190ZXN0Cit9ICAv
LyBuYW1lc3BhY2UgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9jay1u
aWNlLXN0cmljdF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9jay1uaWNlLXN0cmljdF90
ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjVkNmNjYzRmMTAwZjRjNjQxMDE4OWE1YzgwYzY3YzZiMzIwNTNi
MDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2NrLW5pY2Utc3RyaWN0
X3Rlc3QuY2MKQEAgLTAsMCArMSw0MjMgQEAKKy8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5j
LgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8g
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKy8vCisvLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBX
YW4pCisKKyNpbmNsdWRlICJnbW9jay9nbW9jay1nZW5lcmF0ZWQtbmljZS1zdHJpY3QuaCIKKwor
I2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlICJnbW9jay9nbW9jay5oIgorI2luY2x1ZGUgImd0
ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiCisKKy8vIFRoaXMgbXVz
dCBub3QgYmUgZGVmaW5lZCBpbnNpZGUgdGhlIDo6dGVzdGluZyBuYW1lc3BhY2UsIG9yIGl0IHdp
bGwKKy8vIGNsYXNoIHdpdGggOjp0ZXN0aW5nOjpNb2NrLgorY2xhc3MgTW9jayB7CisgcHVibGlj
OgorICBNb2NrKCkge30KKworICBNT0NLX01FVEhPRDAoRG9UaGlzLCB2b2lkKCkpOworCisgcHJp
dmF0ZToKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhNb2NrKTsKK307CisKK25h
bWVzcGFjZSB0ZXN0aW5nIHsKK25hbWVzcGFjZSBnbW9ja19uaWNlX3N0cmljdF90ZXN0IHsKKwor
dXNpbmcgdGVzdGluZzo6R01PQ0tfRkxBRyh2ZXJib3NlKTsKK3VzaW5nIHRlc3Rpbmc6Okhhc1N1
YnN0cjsKK3VzaW5nIHRlc3Rpbmc6Ok5hZ2d5TW9jazsKK3VzaW5nIHRlc3Rpbmc6Ok5pY2VNb2Nr
OwordXNpbmcgdGVzdGluZzo6U3RyaWN0TW9jazsKKworI2lmIEdURVNUX0hBU19TVFJFQU1fUkVE
SVJFQ1RJT04KK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpDYXB0dXJlU3Rkb3V0OwordXNpbmcg
dGVzdGluZzo6aW50ZXJuYWw6OkdldENhcHR1cmVkU3Rkb3V0OworI2VuZGlmCisKKy8vIERlZmlu
ZXMgc29tZSBtb2NrIGNsYXNzZXMgbmVlZGVkIGJ5IHRoZSB0ZXN0cy4KKworY2xhc3MgRm9vIHsK
KyBwdWJsaWM6CisgIHZpcnR1YWwgfkZvbygpIHt9CisKKyAgdmlydHVhbCB2b2lkIERvVGhpcygp
ID0gMDsKKyAgdmlydHVhbCBpbnQgRG9UaGF0KGJvb2wgZmxhZykgPSAwOworfTsKKworY2xhc3Mg
TW9ja0ZvbyA6IHB1YmxpYyBGb28geworIHB1YmxpYzoKKyAgTW9ja0ZvbygpIHt9CisgIHZvaWQg
RGVsZXRlKCkgeyBkZWxldGUgdGhpczsgfQorCisgIE1PQ0tfTUVUSE9EMChEb1RoaXMsIHZvaWQo
KSk7CisgIE1PQ0tfTUVUSE9EMShEb1RoYXQsIGludChib29sIGZsYWcpKTsKKworIHByaXZhdGU6
CisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oTW9ja0Zvbyk7Cit9OworCitjbGFz
cyBNb2NrQmFyIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IE1vY2tCYXIoY29uc3Qgc3RkOjpzdHJp
bmcmIHMpIDogc3RyXyhzKSB7fQorCisgIE1vY2tCYXIoY2hhciBhMSwgY2hhciBhMiwgc3RkOjpz
dHJpbmcgYTMsIHN0ZDo6c3RyaW5nIGE0LCBpbnQgYTUsIGludCBhNiwKKyAgICAgICAgICBjb25z
dCBzdGQ6OnN0cmluZyYgYTcsIGNvbnN0IHN0ZDo6c3RyaW5nJiBhOCwgYm9vbCBhOSwgYm9vbCBh
MTApIHsKKyAgICBzdHJfID0gc3RkOjpzdHJpbmcoKSArIGExICsgYTIgKyBhMyArIGE0ICsgc3Rh
dGljX2Nhc3Q8Y2hhcj4oYTUpICsKKyAgICAgICAgc3RhdGljX2Nhc3Q8Y2hhcj4oYTYpICsgYTcg
KyBhOCArIChhOSA/ICdUJyA6ICdGJykgKyAoYTEwID8gJ1QnIDogJ0YnKTsKKyAgfQorCisgIHZp
cnR1YWwgfk1vY2tCYXIoKSB7fQorCisgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIoKSBjb25zdCB7
IHJldHVybiBzdHJfOyB9CisKKyAgTU9DS19NRVRIT0QwKFRoaXMsIGludCgpKTsKKyAgTU9DS19N
RVRIT0QyKFRoYXQsIHN0ZDo6c3RyaW5nKGludCwgYm9vbCkpOworCisgcHJpdmF0ZToKKyAgc3Rk
OjpzdHJpbmcgc3RyXzsKKworICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKE1vY2tC
YXIpOworfTsKKworI2lmIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KKworLy8gVGVzdHMg
dGhhdCBhIHJhdyBtb2NrIGdlbmVyYXRlcyB3YXJuaW5ncyBmb3IgdW5pbnRlcmVzdGluZyBjYWxs
cy4KK1RFU1QoUmF3TW9ja1Rlc3QsIFdhcm5pbmdGb3JVbmludGVyZXN0aW5nQ2FsbCkgeworICBj
b25zdCBzdGQ6OnN0cmluZyBzYXZlZF9mbGFnID0gR01PQ0tfRkxBRyh2ZXJib3NlKTsKKyAgR01P
Q0tfRkxBRyh2ZXJib3NlKSA9ICJ3YXJuaW5nIjsKKworICBNb2NrRm9vIHJhd19mb287CisKKyAg
Q2FwdHVyZVN0ZG91dCgpOworICByYXdfZm9vLkRvVGhpcygpOworICByYXdfZm9vLkRvVGhhdCh0
cnVlKTsKKyAgRVhQRUNUX1RIQVQoR2V0Q2FwdHVyZWRTdGRvdXQoKSwKKyAgICAgICAgICAgICAg
SGFzU3Vic3RyKCJVbmludGVyZXN0aW5nIG1vY2sgZnVuY3Rpb24gY2FsbCIpKTsKKworICBHTU9D
S19GTEFHKHZlcmJvc2UpID0gc2F2ZWRfZmxhZzsKK30KKworLy8gVGVzdHMgdGhhdCBhIHJhdyBt
b2NrIGdlbmVyYXRlcyB3YXJuaW5ncyBmb3IgdW5pbnRlcmVzdGluZyBjYWxscworLy8gdGhhdCBk
ZWxldGUgdGhlIG1vY2sgb2JqZWN0LgorVEVTVChSYXdNb2NrVGVzdCwgV2FybmluZ0ZvclVuaW50
ZXJlc3RpbmdDYWxsQWZ0ZXJEZWF0aCkgeworICBjb25zdCBzdGQ6OnN0cmluZyBzYXZlZF9mbGFn
ID0gR01PQ0tfRkxBRyh2ZXJib3NlKTsKKyAgR01PQ0tfRkxBRyh2ZXJib3NlKSA9ICJ3YXJuaW5n
IjsKKworICBNb2NrRm9vKiBjb25zdCByYXdfZm9vID0gbmV3IE1vY2tGb287CisKKyAgT05fQ0FM
TCgqcmF3X2ZvbywgRG9UaGlzKCkpCisgICAgICAuV2lsbEJ5RGVmYXVsdChJbnZva2UocmF3X2Zv
bywgJk1vY2tGb286OkRlbGV0ZSkpOworCisgIENhcHR1cmVTdGRvdXQoKTsKKyAgcmF3X2Zvby0+
RG9UaGlzKCk7CisgIEVYUEVDVF9USEFUKEdldENhcHR1cmVkU3Rkb3V0KCksCisgICAgICAgICAg
ICAgIEhhc1N1YnN0cigiVW5pbnRlcmVzdGluZyBtb2NrIGZ1bmN0aW9uIGNhbGwiKSk7CisKKyAg
R01PQ0tfRkxBRyh2ZXJib3NlKSA9IHNhdmVkX2ZsYWc7Cit9CisKKy8vIFRlc3RzIHRoYXQgYSBy
YXcgbW9jayBnZW5lcmF0ZXMgaW5mb3JtYXRpb25hbCBsb2dzIGZvcgorLy8gdW5pbnRlcmVzdGlu
ZyBjYWxscy4KK1RFU1QoUmF3TW9ja1Rlc3QsIEluZm9Gb3JVbmludGVyZXN0aW5nQ2FsbCkgewor
ICBNb2NrRm9vIHJhd19mb287CisKKyAgY29uc3Qgc3RkOjpzdHJpbmcgc2F2ZWRfZmxhZyA9IEdN
T0NLX0ZMQUcodmVyYm9zZSk7CisgIEdNT0NLX0ZMQUcodmVyYm9zZSkgPSAiaW5mbyI7CisgIENh
cHR1cmVTdGRvdXQoKTsKKyAgcmF3X2Zvby5Eb1RoaXMoKTsKKyAgRVhQRUNUX1RIQVQoR2V0Q2Fw
dHVyZWRTdGRvdXQoKSwKKyAgICAgICAgICAgICAgSGFzU3Vic3RyKCJVbmludGVyZXN0aW5nIG1v
Y2sgZnVuY3Rpb24gY2FsbCIpKTsKKworICBHTU9DS19GTEFHKHZlcmJvc2UpID0gc2F2ZWRfZmxh
ZzsKK30KKworLy8gVGVzdHMgdGhhdCBhIG5pY2UgbW9jayBnZW5lcmF0ZXMgbm8gd2FybmluZyBm
b3IgdW5pbnRlcmVzdGluZyBjYWxscy4KK1RFU1QoTmljZU1vY2tUZXN0LCBOb1dhcm5pbmdGb3JV
bmludGVyZXN0aW5nQ2FsbCkgeworICBOaWNlTW9jazxNb2NrRm9vPiBuaWNlX2ZvbzsKKworICBD
YXB0dXJlU3Rkb3V0KCk7CisgIG5pY2VfZm9vLkRvVGhpcygpOworICBuaWNlX2Zvby5Eb1RoYXQo
dHJ1ZSk7CisgIEVYUEVDVF9FUSgiIiwgR2V0Q2FwdHVyZWRTdGRvdXQoKSk7Cit9CisKKy8vIFRl
c3RzIHRoYXQgYSBuaWNlIG1vY2sgZ2VuZXJhdGVzIG5vIHdhcm5pbmcgZm9yIHVuaW50ZXJlc3Rp
bmcgY2FsbHMKKy8vIHRoYXQgZGVsZXRlIHRoZSBtb2NrIG9iamVjdC4KK1RFU1QoTmljZU1vY2tU
ZXN0LCBOb1dhcm5pbmdGb3JVbmludGVyZXN0aW5nQ2FsbEFmdGVyRGVhdGgpIHsKKyAgTmljZU1v
Y2s8TW9ja0Zvbz4qIGNvbnN0IG5pY2VfZm9vID0gbmV3IE5pY2VNb2NrPE1vY2tGb28+OworCisg
IE9OX0NBTEwoKm5pY2VfZm9vLCBEb1RoaXMoKSkKKyAgICAgIC5XaWxsQnlEZWZhdWx0KEludm9r
ZShuaWNlX2ZvbywgJk1vY2tGb286OkRlbGV0ZSkpOworCisgIENhcHR1cmVTdGRvdXQoKTsKKyAg
bmljZV9mb28tPkRvVGhpcygpOworICBFWFBFQ1RfRVEoIiIsIEdldENhcHR1cmVkU3Rkb3V0KCkp
OworfQorCisvLyBUZXN0cyB0aGF0IGEgbmljZSBtb2NrIGdlbmVyYXRlcyBpbmZvcm1hdGlvbmFs
IGxvZ3MgZm9yCisvLyB1bmludGVyZXN0aW5nIGNhbGxzLgorVEVTVChOaWNlTW9ja1Rlc3QsIElu
Zm9Gb3JVbmludGVyZXN0aW5nQ2FsbCkgeworICBOaWNlTW9jazxNb2NrRm9vPiBuaWNlX2ZvbzsK
KworICBjb25zdCBzdGQ6OnN0cmluZyBzYXZlZF9mbGFnID0gR01PQ0tfRkxBRyh2ZXJib3NlKTsK
KyAgR01PQ0tfRkxBRyh2ZXJib3NlKSA9ICJpbmZvIjsKKyAgQ2FwdHVyZVN0ZG91dCgpOworICBu
aWNlX2Zvby5Eb1RoaXMoKTsKKyAgRVhQRUNUX1RIQVQoR2V0Q2FwdHVyZWRTdGRvdXQoKSwKKyAg
ICAgICAgICAgICAgSGFzU3Vic3RyKCJVbmludGVyZXN0aW5nIG1vY2sgZnVuY3Rpb24gY2FsbCIp
KTsKKworICBHTU9DS19GTEFHKHZlcmJvc2UpID0gc2F2ZWRfZmxhZzsKK30KKworI2VuZGlmICAv
LyBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OCisKKy8vIFRlc3RzIHRoYXQgYSBuaWNlIG1v
Y2sgYWxsb3dzIGV4cGVjdGVkIGNhbGxzLgorVEVTVChOaWNlTW9ja1Rlc3QsIEFsbG93c0V4cGVj
dGVkQ2FsbCkgeworICBOaWNlTW9jazxNb2NrRm9vPiBuaWNlX2ZvbzsKKworICBFWFBFQ1RfQ0FM
TChuaWNlX2ZvbywgRG9UaGlzKCkpOworICBuaWNlX2Zvby5Eb1RoaXMoKTsKK30KKworLy8gVGVz
dHMgdGhhdCBhbiB1bmV4cGVjdGVkIGNhbGwgb24gYSBuaWNlIG1vY2sgZmFpbHMuCitURVNUKE5p
Y2VNb2NrVGVzdCwgVW5leHBlY3RlZENhbGxGYWlscykgeworICBOaWNlTW9jazxNb2NrRm9vPiBu
aWNlX2ZvbzsKKworICBFWFBFQ1RfQ0FMTChuaWNlX2ZvbywgRG9UaGlzKCkpLlRpbWVzKDApOwor
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShuaWNlX2Zvby5Eb1RoaXMoKSwgImNhbGxlZCBtb3Jl
IHRpbWVzIHRoYW4gZXhwZWN0ZWQiKTsKK30KKworLy8gVGVzdHMgdGhhdCBOaWNlTW9jayB3b3Jr
cyB3aXRoIGEgbW9jayBjbGFzcyB0aGF0IGhhcyBhIG5vbi1kZWZhdWx0CisvLyBjb25zdHJ1Y3Rv
ci4KK1RFU1QoTmljZU1vY2tUZXN0LCBOb25EZWZhdWx0Q29uc3RydWN0b3IpIHsKKyAgTmljZU1v
Y2s8TW9ja0Jhcj4gbmljZV9iYXIoImhpIik7CisgIEVYUEVDVF9FUSgiaGkiLCBuaWNlX2Jhci5z
dHIoKSk7CisKKyAgbmljZV9iYXIuVGhpcygpOworICBuaWNlX2Jhci5UaGF0KDUsIHRydWUpOwor
fQorCisvLyBUZXN0cyB0aGF0IE5pY2VNb2NrIHdvcmtzIHdpdGggYSBtb2NrIGNsYXNzIHRoYXQg
aGFzIGEgMTAtYXJ5CisvLyBub24tZGVmYXVsdCBjb25zdHJ1Y3Rvci4KK1RFU1QoTmljZU1vY2tU
ZXN0LCBOb25EZWZhdWx0Q29uc3RydWN0b3IxMCkgeworICBOaWNlTW9jazxNb2NrQmFyPiBuaWNl
X2JhcignYScsICdiJywgImMiLCAiZCIsICdlJywgJ2YnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiZyIsICJoIiwgdHJ1ZSwgZmFsc2UpOworICBFWFBFQ1RfRVEoImFiY2RlZmdoVEYi
LCBuaWNlX2Jhci5zdHIoKSk7CisKKyAgbmljZV9iYXIuVGhpcygpOworICBuaWNlX2Jhci5UaGF0
KDUsIHRydWUpOworfQorCisjaWYgIUdURVNUX09TX1NZTUJJQU4gJiYgIUdURVNUX09TX1dJTkRP
V1NfTU9CSUxFCisvLyBUZXN0cyB0aGF0IE5pY2VNb2NrPE1vY2s+IGNvbXBpbGVzIHdoZXJlIE1v
Y2sgaXMgYSB1c2VyLWRlZmluZWQKKy8vIGNsYXNzIChhcyBvcHBvc2VkIHRvIDo6dGVzdGluZzo6
TW9jaykuICBXZSBoYWQgdG8gd29yayBhcm91bmQgYW4KKy8vIE1TVkMgOC4wIGJ1ZyB0aGF0IGNh
dXNlZCB0aGUgc3ltYm9sIE1vY2sgdXNlZCBpbiB0aGUgZGVmaW5pdGlvbiBvZgorLy8gTmljZU1v
Y2sgdG8gYmUgbG9va2VkIHVwIGluIHRoZSB3cm9uZyBjb250ZXh0LCBhbmQgdGhpcyB0ZXN0Cisv
LyBlbnN1cmVzIHRoYXQgb3VyIGZpeCB3b3Jrcy4KKy8vCisvLyBXZSBoYXZlIHRvIHNraXAgdGhp
cyB0ZXN0IG9uIFN5bWJpYW4gYW5kIFdpbmRvd3MgTW9iaWxlLCBhcyBpdAorLy8gY2F1c2VzIHRo
ZSBwcm9ncmFtIHRvIGNyYXNoIHRoZXJlLCBmb3IgcmVhc29ucyB1bmNsZWFyIHRvIHVzIHlldC4K
K1RFU1QoTmljZU1vY2tUZXN0LCBBY2NlcHRzQ2xhc3NOYW1lZE1vY2spIHsKKyAgTmljZU1vY2s8
IDo6TW9jaz4gbmljZTsKKyAgRVhQRUNUX0NBTEwobmljZSwgRG9UaGlzKCkpOworICBuaWNlLkRv
VGhpcygpOworfQorI2VuZGlmICAvLyAhR1RFU1RfT1NfU1lNQklBTiAmJiAhR1RFU1RfT1NfV0lO
RE9XU19NT0JJTEUKKworI2lmIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KKworLy8gVGVz
dHMgdGhhdCBhIG5hZ2d5IG1vY2sgZ2VuZXJhdGVzIHdhcm5pbmdzIGZvciB1bmludGVyZXN0aW5n
IGNhbGxzLgorVEVTVChOYWdneU1vY2tUZXN0LCBXYXJuaW5nRm9yVW5pbnRlcmVzdGluZ0NhbGwp
IHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgc2F2ZWRfZmxhZyA9IEdNT0NLX0ZMQUcodmVyYm9zZSk7
CisgIEdNT0NLX0ZMQUcodmVyYm9zZSkgPSAid2FybmluZyI7CisKKyAgTmFnZ3lNb2NrPE1vY2tG
b28+IG5hZ2d5X2ZvbzsKKworICBDYXB0dXJlU3Rkb3V0KCk7CisgIG5hZ2d5X2Zvby5Eb1RoaXMo
KTsKKyAgbmFnZ3lfZm9vLkRvVGhhdCh0cnVlKTsKKyAgRVhQRUNUX1RIQVQoR2V0Q2FwdHVyZWRT
dGRvdXQoKSwKKyAgICAgICAgICAgICAgSGFzU3Vic3RyKCJVbmludGVyZXN0aW5nIG1vY2sgZnVu
Y3Rpb24gY2FsbCIpKTsKKworICBHTU9DS19GTEFHKHZlcmJvc2UpID0gc2F2ZWRfZmxhZzsKK30K
KworLy8gVGVzdHMgdGhhdCBhIG5hZ2d5IG1vY2sgZ2VuZXJhdGVzIGEgd2FybmluZyBmb3IgYW4g
dW5pbnRlcmVzdGluZyBjYWxsCisvLyB0aGF0IGRlbGV0ZXMgdGhlIG1vY2sgb2JqZWN0LgorVEVT
VChOYWdneU1vY2tUZXN0LCBXYXJuaW5nRm9yVW5pbnRlcmVzdGluZ0NhbGxBZnRlckRlYXRoKSB7
CisgIGNvbnN0IHN0ZDo6c3RyaW5nIHNhdmVkX2ZsYWcgPSBHTU9DS19GTEFHKHZlcmJvc2UpOwor
ICBHTU9DS19GTEFHKHZlcmJvc2UpID0gIndhcm5pbmciOworCisgIE5hZ2d5TW9jazxNb2NrRm9v
PiogY29uc3QgbmFnZ3lfZm9vID0gbmV3IE5hZ2d5TW9jazxNb2NrRm9vPjsKKworICBPTl9DQUxM
KCpuYWdneV9mb28sIERvVGhpcygpKQorICAgICAgLldpbGxCeURlZmF1bHQoSW52b2tlKG5hZ2d5
X2ZvbywgJk1vY2tGb286OkRlbGV0ZSkpOworCisgIENhcHR1cmVTdGRvdXQoKTsKKyAgbmFnZ3lf
Zm9vLT5Eb1RoaXMoKTsKKyAgRVhQRUNUX1RIQVQoR2V0Q2FwdHVyZWRTdGRvdXQoKSwKKyAgICAg
ICAgICAgICAgSGFzU3Vic3RyKCJVbmludGVyZXN0aW5nIG1vY2sgZnVuY3Rpb24gY2FsbCIpKTsK
KworICBHTU9DS19GTEFHKHZlcmJvc2UpID0gc2F2ZWRfZmxhZzsKK30KKworI2VuZGlmICAvLyBH
VEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OCisKKy8vIFRlc3RzIHRoYXQgYSBuYWdneSBtb2Nr
IGFsbG93cyBleHBlY3RlZCBjYWxscy4KK1RFU1QoTmFnZ3lNb2NrVGVzdCwgQWxsb3dzRXhwZWN0
ZWRDYWxsKSB7CisgIE5hZ2d5TW9jazxNb2NrRm9vPiBuYWdneV9mb287CisKKyAgRVhQRUNUX0NB
TEwobmFnZ3lfZm9vLCBEb1RoaXMoKSk7CisgIG5hZ2d5X2Zvby5Eb1RoaXMoKTsKK30KKworLy8g
VGVzdHMgdGhhdCBhbiB1bmV4cGVjdGVkIGNhbGwgb24gYSBuYWdneSBtb2NrIGZhaWxzLgorVEVT
VChOYWdneU1vY2tUZXN0LCBVbmV4cGVjdGVkQ2FsbEZhaWxzKSB7CisgIE5hZ2d5TW9jazxNb2Nr
Rm9vPiBuYWdneV9mb287CisKKyAgRVhQRUNUX0NBTEwobmFnZ3lfZm9vLCBEb1RoaXMoKSkuVGlt
ZXMoMCk7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKG5hZ2d5X2Zvby5Eb1RoaXMoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgImNhbGxlZCBtb3JlIHRpbWVzIHRoYW4gZXhwZWN0ZWQi
KTsKK30KKworLy8gVGVzdHMgdGhhdCBOYWdneU1vY2sgd29ya3Mgd2l0aCBhIG1vY2sgY2xhc3Mg
dGhhdCBoYXMgYSBub24tZGVmYXVsdAorLy8gY29uc3RydWN0b3IuCitURVNUKE5hZ2d5TW9ja1Rl
c3QsIE5vbkRlZmF1bHRDb25zdHJ1Y3RvcikgeworICBOYWdneU1vY2s8TW9ja0Jhcj4gbmFnZ3lf
YmFyKCJoaSIpOworICBFWFBFQ1RfRVEoImhpIiwgbmFnZ3lfYmFyLnN0cigpKTsKKworICBuYWdn
eV9iYXIuVGhpcygpOworICBuYWdneV9iYXIuVGhhdCg1LCB0cnVlKTsKK30KKworLy8gVGVzdHMg
dGhhdCBOYWdneU1vY2sgd29ya3Mgd2l0aCBhIG1vY2sgY2xhc3MgdGhhdCBoYXMgYSAxMC1hcnkK
Ky8vIG5vbi1kZWZhdWx0IGNvbnN0cnVjdG9yLgorVEVTVChOYWdneU1vY2tUZXN0LCBOb25EZWZh
dWx0Q29uc3RydWN0b3IxMCkgeworICBOYWdneU1vY2s8TW9ja0Jhcj4gbmFnZ3lfYmFyKCcwJywg
JzEnLCAiMiIsICIzIiwgJzQnLCAnNScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IjYiLCAiNyIsIHRydWUsIGZhbHNlKTsKKyAgRVhQRUNUX0VRKCIwMTIzNDU2N1RGIiwgbmFnZ3lf
YmFyLnN0cigpKTsKKworICBuYWdneV9iYXIuVGhpcygpOworICBuYWdneV9iYXIuVGhhdCg1LCB0
cnVlKTsKK30KKworI2lmICFHVEVTVF9PU19TWU1CSUFOICYmICFHVEVTVF9PU19XSU5ET1dTX01P
QklMRQorLy8gVGVzdHMgdGhhdCBOYWdneU1vY2s8TW9jaz4gY29tcGlsZXMgd2hlcmUgTW9jayBp
cyBhIHVzZXItZGVmaW5lZAorLy8gY2xhc3MgKGFzIG9wcG9zZWQgdG8gOjp0ZXN0aW5nOjpNb2Nr
KS4gIFdlIGhhZCB0byB3b3JrIGFyb3VuZCBhbgorLy8gTVNWQyA4LjAgYnVnIHRoYXQgY2F1c2Vk
IHRoZSBzeW1ib2wgTW9jayB1c2VkIGluIHRoZSBkZWZpbml0aW9uIG9mCisvLyBOYWdneU1vY2sg
dG8gYmUgbG9va2VkIHVwIGluIHRoZSB3cm9uZyBjb250ZXh0LCBhbmQgdGhpcyB0ZXN0CisvLyBl
bnN1cmVzIHRoYXQgb3VyIGZpeCB3b3Jrcy4KKy8vCisvLyBXZSBoYXZlIHRvIHNraXAgdGhpcyB0
ZXN0IG9uIFN5bWJpYW4gYW5kIFdpbmRvd3MgTW9iaWxlLCBhcyBpdAorLy8gY2F1c2VzIHRoZSBw
cm9ncmFtIHRvIGNyYXNoIHRoZXJlLCBmb3IgcmVhc29ucyB1bmNsZWFyIHRvIHVzIHlldC4KK1RF
U1QoTmFnZ3lNb2NrVGVzdCwgQWNjZXB0c0NsYXNzTmFtZWRNb2NrKSB7CisgIE5hZ2d5TW9jazwg
OjpNb2NrPiBuYWdneTsKKyAgRVhQRUNUX0NBTEwobmFnZ3ksIERvVGhpcygpKTsKKyAgbmFnZ3ku
RG9UaGlzKCk7Cit9CisjZW5kaWYgIC8vICFHVEVTVF9PU19TWU1CSUFOICYmICFHVEVTVF9PU19X
SU5ET1dTX01PQklMRQorCisvLyBUZXN0cyB0aGF0IGEgc3RyaWN0IG1vY2sgYWxsb3dzIGV4cGVj
dGVkIGNhbGxzLgorVEVTVChTdHJpY3RNb2NrVGVzdCwgQWxsb3dzRXhwZWN0ZWRDYWxsKSB7Cisg
IFN0cmljdE1vY2s8TW9ja0Zvbz4gc3RyaWN0X2ZvbzsKKworICBFWFBFQ1RfQ0FMTChzdHJpY3Rf
Zm9vLCBEb1RoaXMoKSk7CisgIHN0cmljdF9mb28uRG9UaGlzKCk7Cit9CisKKy8vIFRlc3RzIHRo
YXQgYW4gdW5leHBlY3RlZCBjYWxsIG9uIGEgc3RyaWN0IG1vY2sgZmFpbHMuCitURVNUKFN0cmlj
dE1vY2tUZXN0LCBVbmV4cGVjdGVkQ2FsbEZhaWxzKSB7CisgIFN0cmljdE1vY2s8TW9ja0Zvbz4g
c3RyaWN0X2ZvbzsKKworICBFWFBFQ1RfQ0FMTChzdHJpY3RfZm9vLCBEb1RoaXMoKSkuVGltZXMo
MCk7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHN0cmljdF9mb28uRG9UaGlzKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICJjYWxsZWQgbW9yZSB0aW1lcyB0aGFuIGV4cGVjdGVkIik7
Cit9CisKKy8vIFRlc3RzIHRoYXQgYW4gdW5pbnRlcmVzdGluZyBjYWxsIG9uIGEgc3RyaWN0IG1v
Y2sgZmFpbHMuCitURVNUKFN0cmljdE1vY2tUZXN0LCBVbmludGVyZXN0aW5nQ2FsbEZhaWxzKSB7
CisgIFN0cmljdE1vY2s8TW9ja0Zvbz4gc3RyaWN0X2ZvbzsKKworICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRShzdHJpY3RfZm9vLkRvVGhpcygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAi
VW5pbnRlcmVzdGluZyBtb2NrIGZ1bmN0aW9uIGNhbGwiKTsKK30KKworLy8gVGVzdHMgdGhhdCBh
biB1bmludGVyZXN0aW5nIGNhbGwgb24gYSBzdHJpY3QgbW9jayBmYWlscywgZXZlbiBpZgorLy8g
dGhlIGNhbGwgZGVsZXRlcyB0aGUgbW9jayBvYmplY3QuCitURVNUKFN0cmljdE1vY2tUZXN0LCBV
bmludGVyZXN0aW5nQ2FsbEZhaWxzQWZ0ZXJEZWF0aCkgeworICBTdHJpY3RNb2NrPE1vY2tGb28+
KiBjb25zdCBzdHJpY3RfZm9vID0gbmV3IFN0cmljdE1vY2s8TW9ja0Zvbz47CisKKyAgT05fQ0FM
TCgqc3RyaWN0X2ZvbywgRG9UaGlzKCkpCisgICAgICAuV2lsbEJ5RGVmYXVsdChJbnZva2Uoc3Ry
aWN0X2ZvbywgJk1vY2tGb286OkRlbGV0ZSkpOworCisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KHN0cmljdF9mb28tPkRvVGhpcygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5pbnRl
cmVzdGluZyBtb2NrIGZ1bmN0aW9uIGNhbGwiKTsKK30KKworLy8gVGVzdHMgdGhhdCBTdHJpY3RN
b2NrIHdvcmtzIHdpdGggYSBtb2NrIGNsYXNzIHRoYXQgaGFzIGEKKy8vIG5vbi1kZWZhdWx0IGNv
bnN0cnVjdG9yLgorVEVTVChTdHJpY3RNb2NrVGVzdCwgTm9uRGVmYXVsdENvbnN0cnVjdG9yKSB7
CisgIFN0cmljdE1vY2s8TW9ja0Jhcj4gc3RyaWN0X2JhcigiaGkiKTsKKyAgRVhQRUNUX0VRKCJo
aSIsIHN0cmljdF9iYXIuc3RyKCkpOworCisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHN0cmlj
dF9iYXIuVGhhdCg1LCB0cnVlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlVuaW50ZXJl
c3RpbmcgbW9jayBmdW5jdGlvbiBjYWxsIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgU3RyaWN0TW9j
ayB3b3JrcyB3aXRoIGEgbW9jayBjbGFzcyB0aGF0IGhhcyBhIDEwLWFyeQorLy8gbm9uLWRlZmF1
bHQgY29uc3RydWN0b3IuCitURVNUKFN0cmljdE1vY2tUZXN0LCBOb25EZWZhdWx0Q29uc3RydWN0
b3IxMCkgeworICBTdHJpY3RNb2NrPE1vY2tCYXI+IHN0cmljdF9iYXIoJ2EnLCAnYicsICJjIiwg
ImQiLCAnZScsICdmJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnIiwgImgi
LCB0cnVlLCBmYWxzZSk7CisgIEVYUEVDVF9FUSgiYWJjZGVmZ2hURiIsIHN0cmljdF9iYXIuc3Ry
KCkpOworCisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHN0cmljdF9iYXIuVGhhdCg1LCB0cnVl
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlVuaW50ZXJlc3RpbmcgbW9jayBmdW5jdGlv
biBjYWxsIik7Cit9CisKKyNpZiAhR1RFU1RfT1NfU1lNQklBTiAmJiAhR1RFU1RfT1NfV0lORE9X
U19NT0JJTEUKKy8vIFRlc3RzIHRoYXQgU3RyaWN0TW9jazxNb2NrPiBjb21waWxlcyB3aGVyZSBN
b2NrIGlzIGEgdXNlci1kZWZpbmVkCisvLyBjbGFzcyAoYXMgb3Bwb3NlZCB0byA6OnRlc3Rpbmc6
Ok1vY2spLiAgV2UgaGFkIHRvIHdvcmsgYXJvdW5kIGFuCisvLyBNU1ZDIDguMCBidWcgdGhhdCBj
YXVzZWQgdGhlIHN5bWJvbCBNb2NrIHVzZWQgaW4gdGhlIGRlZmluaXRpb24gb2YKKy8vIFN0cmlj
dE1vY2sgdG8gYmUgbG9va2VkIHVwIGluIHRoZSB3cm9uZyBjb250ZXh0LCBhbmQgdGhpcyB0ZXN0
CisvLyBlbnN1cmVzIHRoYXQgb3VyIGZpeCB3b3Jrcy4KKy8vCisvLyBXZSBoYXZlIHRvIHNraXAg
dGhpcyB0ZXN0IG9uIFN5bWJpYW4gYW5kIFdpbmRvd3MgTW9iaWxlLCBhcyBpdAorLy8gY2F1c2Vz
IHRoZSBwcm9ncmFtIHRvIGNyYXNoIHRoZXJlLCBmb3IgcmVhc29ucyB1bmNsZWFyIHRvIHVzIHll
dC4KK1RFU1QoU3RyaWN0TW9ja1Rlc3QsIEFjY2VwdHNDbGFzc05hbWVkTW9jaykgeworICBTdHJp
Y3RNb2NrPCA6Ok1vY2s+IHN0cmljdDsKKyAgRVhQRUNUX0NBTEwoc3RyaWN0LCBEb1RoaXMoKSk7
CisgIHN0cmljdC5Eb1RoaXMoKTsKK30KKyNlbmRpZiAgLy8gIUdURVNUX09TX1NZTUJJQU4gJiYg
IUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisKK30gIC8vIG5hbWVzcGFjZSBnbW9ja19uaWNlX3N0
cmljdF90ZXN0Cit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1v
Y2svdGVzdC9nbW9jay1wb3J0X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2NrLXBvcnRf
dGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kNmE4ZDQ0NDY2YjIwMTJiODM2YWZlMmRiZGJmYWE2NmRlYTgx
ZWJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9jay1wb3J0X3Rlc3Qu
Y2MKQEAgLTAsMCArMSw0MyBAQAorLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCisvLyBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
Ly8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
Ly8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
Ky8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorLy8KKy8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKKwor
Ly8gR29vZ2xlIE1vY2sgLSBhIGZyYW1ld29yayBmb3Igd3JpdGluZyBDKysgbW9jayBjbGFzc2Vz
LgorLy8KKy8vIFRoaXMgZmlsZSB0ZXN0cyB0aGUgaW50ZXJuYWwgY3Jvc3MtcGxhdGZvcm0gc3Vw
cG9ydCB1dGlsaXRpZXMuCisKKyNpbmNsdWRlICJnbW9jay9pbnRlcm5hbC9nbW9jay1wb3J0Lmgi
CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworLy8gTk9URTogaWYgdGhpcyBmaWxlIGlzIGxl
ZnQgd2l0aG91dCB0ZXN0cyBmb3Igc29tZSByZWFzb24sIHB1dCBhIGR1bW15CisvLyB0ZXN0IGhl
cmUgdG8gbWFrZSByZWZlcmVuY2VzIHRvIHN5bWJvbHMgaW4gdGhlIGd0ZXN0IGxpYnJhcnkgYW5k
IGF2b2lkCisvLyAndW5kZWZpbmVkIHN5bWJvbCcgbGlua2VyIGVycm9ycyBpbiBnbW9ja19tYWlu
OgorCitURVNUKER1bW15VGVzdCwgRHVtbXkpIHt9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90
ZXN0L2dtb2NrLXNwZWMtYnVpbGRlcnNfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2st
c3BlYy1idWlsZGVyc190ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4OWUwNzA5ODQzZTBjYjE4M2VhYjFi
YWI3OGQwZTRlNTUyNDY2ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dt
b2NrLXNwZWMtYnVpbGRlcnNfdGVzdC5jYwpAQCAtMCwwICsxLDI2NDMgQEAKKy8vIENvcHlyaWdo
dCAyMDA3LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8g
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9u
LgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8g
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
Ky8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBBdXRob3I6IHdhbkBnb29n
bGUuY29tIChaaGFueW9uZyBXYW4pCisKKy8vIEdvb2dsZSBNb2NrIC0gYSBmcmFtZXdvcmsgZm9y
IHdyaXRpbmcgQysrIG1vY2sgY2xhc3Nlcy4KKy8vCisvLyBUaGlzIGZpbGUgdGVzdHMgdGhlIHNw
ZWMgYnVpbGRlciBzeW50YXguCisKKyNpbmNsdWRlICJnbW9jay9nbW9jay1zcGVjLWJ1aWxkZXJz
LmgiCisKKyNpbmNsdWRlIDxvc3RyZWFtPiAgLy8gTk9MSU5UCisjaW5jbHVkZSA8c3N0cmVhbT4K
KyNpbmNsdWRlIDxzdHJpbmc+CisKKyNpbmNsdWRlICJnbW9jay9nbW9jay5oIgorI2luY2x1ZGUg
Imdtb2NrL2ludGVybmFsL2dtb2NrLXBvcnQuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgor
I2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXNwaS5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0
ZXN0LXBvcnQuaCIKKworbmFtZXNwYWNlIHRlc3RpbmcgeworbmFtZXNwYWNlIGludGVybmFsIHsK
KworLy8gSGVscGVyIGNsYXNzIGZvciB0ZXN0aW5nIHRoZSBFeHBlY3RhdGlvbiBjbGFzcyB0ZW1w
bGF0ZS4KK2NsYXNzIEV4cGVjdGF0aW9uVGVzdGVyIHsKKyBwdWJsaWM6CisgIC8vIFNldHMgdGhl
IGNhbGwgY291bnQgb2YgdGhlIGdpdmVuIGV4cGVjdGF0aW9uIHRvIHRoZSBnaXZlbiBudW1iZXIu
CisgIHZvaWQgU2V0Q2FsbENvdW50KGludCBuLCBFeHBlY3RhdGlvbkJhc2UqIGV4cCkgeworICAg
IGV4cC0+Y2FsbF9jb3VudF8gPSBuOworICB9Cit9OworCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJu
YWwKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCisKK25hbWVzcGFjZSB7CisKK3VzaW5nIHRlc3Rp
bmc6Ol87Cit1c2luZyB0ZXN0aW5nOjpBbnlOdW1iZXI7Cit1c2luZyB0ZXN0aW5nOjpBdExlYXN0
OwordXNpbmcgdGVzdGluZzo6QXRNb3N0OwordXNpbmcgdGVzdGluZzo6QmV0d2VlbjsKK3VzaW5n
IHRlc3Rpbmc6OkNhcmRpbmFsaXR5OwordXNpbmcgdGVzdGluZzo6Q2FyZGluYWxpdHlJbnRlcmZh
Y2U7Cit1c2luZyB0ZXN0aW5nOjpDb250YWluc1JlZ2V4OwordXNpbmcgdGVzdGluZzo6Q29uc3Q7
Cit1c2luZyB0ZXN0aW5nOjpEb0FsbDsKK3VzaW5nIHRlc3Rpbmc6OkRvRGVmYXVsdDsKK3VzaW5n
IHRlc3Rpbmc6OkVxOwordXNpbmcgdGVzdGluZzo6RXhwZWN0YXRpb247Cit1c2luZyB0ZXN0aW5n
OjpFeHBlY3RhdGlvblNldDsKK3VzaW5nIHRlc3Rpbmc6OkdNT0NLX0ZMQUcodmVyYm9zZSk7Cit1
c2luZyB0ZXN0aW5nOjpHdDsKK3VzaW5nIHRlc3Rpbmc6OkluU2VxdWVuY2U7Cit1c2luZyB0ZXN0
aW5nOjpJbnZva2U7Cit1c2luZyB0ZXN0aW5nOjpJbnZva2VXaXRob3V0QXJnczsKK3VzaW5nIHRl
c3Rpbmc6OklzTm90U3Vic3RyaW5nOwordXNpbmcgdGVzdGluZzo6SXNTdWJzdHJpbmc7Cit1c2lu
ZyB0ZXN0aW5nOjpMdDsKK3VzaW5nIHRlc3Rpbmc6Ok1lc3NhZ2U7Cit1c2luZyB0ZXN0aW5nOjpN
b2NrOwordXNpbmcgdGVzdGluZzo6TmFnZ3lNb2NrOwordXNpbmcgdGVzdGluZzo6TmU7Cit1c2lu
ZyB0ZXN0aW5nOjpSZXR1cm47Cit1c2luZyB0ZXN0aW5nOjpTZXF1ZW5jZTsKK3VzaW5nIHRlc3Rp
bmc6OlNldEFyZ1BvaW50ZWU7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6RXhwZWN0YXRpb25U
ZXN0ZXI7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Rm9ybWF0RmlsZUxvY2F0aW9uOwordXNp
bmcgdGVzdGluZzo6aW50ZXJuYWw6OmtFcnJvclZlcmJvc2l0eTsKK3VzaW5nIHRlc3Rpbmc6Omlu
dGVybmFsOjprSW5mb1ZlcmJvc2l0eTsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjprV2Fybmlu
Z1ZlcmJvc2l0eTsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpsaW5rZWRfcHRyOworCisjaWYg
R1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgordXNpbmcgdGVzdGluZzo6SGFzU3Vic3RyOwor
dXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkNhcHR1cmVTdGRvdXQ7Cit1c2luZyB0ZXN0aW5nOjpp
bnRlcm5hbDo6R2V0Q2FwdHVyZWRTdGRvdXQ7CisjZW5kaWYKKworY2xhc3MgSW5jb21wbGV0ZTsK
KworY2xhc3MgTW9ja0luY29tcGxldGUgeworIHB1YmxpYzoKKyAgLy8gVGhpcyBsaW5lIHZlcmlm
aWVzIHRoYXQgYSBtb2NrIG1ldGhvZCBjYW4gdGFrZSBhIGJ5LXJlZmVyZW5jZQorICAvLyBhcmd1
bWVudCBvZiBhbiBpbmNvbXBsZXRlIHR5cGUuCisgIE1PQ0tfTUVUSE9EMShCeVJlZkZ1bmMsIHZv
aWQoY29uc3QgSW5jb21wbGV0ZSYgeCkpOworfTsKKworLy8gVGVsbHMgR29vZ2xlIE1vY2sgaG93
IHRvIHByaW50IGEgdmFsdWUgb2YgdHlwZSBJbmNvbXBsZXRlLgordm9pZCBQcmludFRvKGNvbnN0
IEluY29tcGxldGUmIHgsIDo6c3RkOjpvc3RyZWFtKiBvcyk7CisKK1RFU1QoTW9ja01ldGhvZFRl
c3QsIENhbkluc3RhbnRpYXRlV2l0aEluY29tcGxldGVBcmdUeXBlKSB7CisgIC8vIEV2ZW4gdGhv
dWdoIHRoaXMgbW9jayBjbGFzcyBjb250YWlucyBhIG1vY2sgbWV0aG9kIHRoYXQgdGFrZXMKKyAg
Ly8gYnktcmVmZXJlbmNlIGFuIGFyZ3VtZW50IHdob3NlIHR5cGUgaXMgaW5jb21wbGV0ZSwgd2Ug
Y2FuIHN0aWxsCisgIC8vIHVzZSB0aGUgbW9jaywgYXMgbG9uZyBhcyBHb29nbGUgTW9jayBrbm93
cyBob3cgdG8gcHJpbnQgdGhlCisgIC8vIGFyZ3VtZW50LgorICBNb2NrSW5jb21wbGV0ZSBpbmNv
bXBsZXRlOworICBFWFBFQ1RfQ0FMTChpbmNvbXBsZXRlLCBCeVJlZkZ1bmMoXykpCisgICAgICAu
VGltZXMoQW55TnVtYmVyKCkpOworfQorCisvLyBUaGUgZGVmaW5pdGlvbiBvZiB0aGUgcHJpbnRl
ciBmb3IgdGhlIGFyZ3VtZW50IHR5cGUgZG9lc24ndCBoYXZlIHRvCisvLyBiZSB2aXNpYmxlIHdo
ZXJlIHRoZSBtb2NrIGlzIHVzZWQuCit2b2lkIFByaW50VG8oY29uc3QgSW5jb21wbGV0ZSYgLyog
eCAqLywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICpvcyA8PCAiaW5jb21wbGV0ZSI7Cit9CisK
K2NsYXNzIFJlc3VsdCB7fTsKKworLy8gQSB0eXBlIHRoYXQncyBub3QgZGVmYXVsdCBjb25zdHJ1
Y3RpYmxlLgorY2xhc3MgTm9uRGVmYXVsdENvbnN0cnVjdGlibGUgeworIHB1YmxpYzoKKyAgZXhw
bGljaXQgTm9uRGVmYXVsdENvbnN0cnVjdGlibGUoaW50IC8qIGR1bW15ICovKSB7fQorfTsKKwor
Y2xhc3MgTW9ja0EgeworIHB1YmxpYzoKKyAgTW9ja0EoKSB7fQorCisgIE1PQ0tfTUVUSE9EMShE
b0EsIHZvaWQoaW50IG4pKTsKKyAgTU9DS19NRVRIT0QxKFJldHVyblJlc3VsdCwgUmVzdWx0KGlu
dCBuKSk7CisgIE1PQ0tfTUVUSE9EMChSZXR1cm5Ob25EZWZhdWx0Q29uc3RydWN0aWJsZSwgTm9u
RGVmYXVsdENvbnN0cnVjdGlibGUoKSk7CisgIE1PQ0tfTUVUSE9EMihCaW5hcnksIGJvb2woaW50
IHgsIGludCB5KSk7CisgIE1PQ0tfTUVUSE9EMihSZXR1cm5JbnQsIGludChpbnQgeCwgaW50IHkp
KTsKKworIHByaXZhdGU6CisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oTW9ja0Ep
OworfTsKKworY2xhc3MgTW9ja0IgeworIHB1YmxpYzoKKyAgTW9ja0IoKSB7fQorCisgIE1PQ0tf
Q09OU1RfTUVUSE9EMChEb0IsIGludCgpKTsgIC8vIE5PTElOVAorICBNT0NLX01FVEhPRDEoRG9C
LCBpbnQoaW50IG4pKTsgIC8vIE5PTElOVAorCisgcHJpdmF0ZToKKyAgR1RFU1RfRElTQUxMT1df
Q09QWV9BTkRfQVNTSUdOXyhNb2NrQik7Cit9OworCitjbGFzcyBSZWZlcmVuY2VIb2xkaW5nTW9j
ayB7CisgcHVibGljOgorICBSZWZlcmVuY2VIb2xkaW5nTW9jaygpIHt9CisKKyAgTU9DS19NRVRI
T0QxKEFjY2VwdFJlZmVyZW5jZSwgdm9pZChsaW5rZWRfcHRyPE1vY2tBPiopKTsKKworIHByaXZh
dGU6CisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oUmVmZXJlbmNlSG9sZGluZ01v
Y2spOworfTsKKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfQ0FMTCBhbmQgT05fQ0FMTCBjb21waWxl
IGluIGEgcHJlc2VuY2Ugb2YgbWFjcm8KKy8vIHJlZGVmaW5pbmcgYSBtb2NrIG1ldGhvZCBuYW1l
LiBUaGlzIGNvdWxkIGhhcHBlbiwgZm9yIGV4YW1wbGUsIHdoZW4KKy8vIHRoZSB0ZXN0ZWQgY29k
ZSAjaW5jbHVkZXMgV2luMzIgQVBJIGhlYWRlcnMgd2hpY2ggZGVmaW5lIG1hbnkgQVBJcworLy8g
YXMgbWFjcm9zLCBlLmcuICNkZWZpbmUgVGV4dE91dCBUZXh0T3V0Vy4KKworI2RlZmluZSBNZXRo
b2QgTWV0aG9kVworCitjbGFzcyBDQyB7CisgcHVibGljOgorICB2aXJ0dWFsIH5DQygpIHt9Cisg
IHZpcnR1YWwgaW50IE1ldGhvZCgpID0gMDsKK307CitjbGFzcyBNb2NrQ0MgOiBwdWJsaWMgQ0Mg
eworIHB1YmxpYzoKKyAgTW9ja0NDKCkge30KKworICBNT0NLX01FVEhPRDAoTWV0aG9kLCBpbnQo
KSk7CisKKyBwcml2YXRlOgorICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKE1vY2tD
Qyk7Cit9OworCisvLyBUZXN0cyB0aGF0IGEgbWV0aG9kIHdpdGggZXhwYW5kZWQgbmFtZSBjb21w
aWxlcy4KK1RFU1QoT25DYWxsU3ludGF4VGVzdCwgQ29tcGlsZXNXaXRoTWV0aG9kTmFtZUV4cGFu
ZGVkRnJvbU1hY3JvKSB7CisgIE1vY2tDQyBjYzsKKyAgT05fQ0FMTChjYywgTWV0aG9kKCkpOwor
fQorCisvLyBUZXN0cyB0aGF0IHRoZSBtZXRob2Qgd2l0aCBleHBhbmRlZCBuYW1lIG5vdCBvbmx5
IGNvbXBpbGVzIGJ1dCBydW5zCisvLyBhbmQgcmV0dXJucyBhIGNvcnJlY3QgdmFsdWUsIHRvby4K
K1RFU1QoT25DYWxsU3ludGF4VGVzdCwgV29ya3NXaXRoTWV0aG9kTmFtZUV4cGFuZGVkRnJvbU1h
Y3JvKSB7CisgIE1vY2tDQyBjYzsKKyAgT05fQ0FMTChjYywgTWV0aG9kKCkpLldpbGxCeURlZmF1
bHQoUmV0dXJuKDQyKSk7CisgIEVYUEVDVF9FUSg0MiwgY2MuTWV0aG9kKCkpOworfQorCisvLyBU
ZXN0cyB0aGF0IGEgbWV0aG9kIHdpdGggZXhwYW5kZWQgbmFtZSBjb21waWxlcy4KK1RFU1QoRXhw
ZWN0Q2FsbFN5bnRheFRlc3QsIENvbXBpbGVzV2l0aE1ldGhvZE5hbWVFeHBhbmRlZEZyb21NYWNy
bykgeworICBNb2NrQ0MgY2M7CisgIEVYUEVDVF9DQUxMKGNjLCBNZXRob2QoKSk7CisgIGNjLk1l
dGhvZCgpOworfQorCisvLyBUZXN0cyB0aGF0IGl0IHdvcmtzLCB0b28uCitURVNUKEV4cGVjdENh
bGxTeW50YXhUZXN0LCBXb3Jrc1dpdGhNZXRob2ROYW1lRXhwYW5kZWRGcm9tTWFjcm8pIHsKKyAg
TW9ja0NDIGNjOworICBFWFBFQ1RfQ0FMTChjYywgTWV0aG9kKCkpLldpbGxPbmNlKFJldHVybig0
MikpOworICBFWFBFQ1RfRVEoNDIsIGNjLk1ldGhvZCgpKTsKK30KKworI3VuZGVmIE1ldGhvZCAg
Ly8gRG9uZSB3aXRoIG1hY3JvIHJlZGVmaW5pdGlvbiB0ZXN0cy4KKworLy8gVGVzdHMgdGhhdCBP
Tl9DQUxMIGV2YWx1YXRlcyBpdHMgYXJndW1lbnRzIGV4YWN0bHkgb25jZSBhcyBwcm9taXNlZAor
Ly8gYnkgR29vZ2xlIE1vY2suCitURVNUKE9uQ2FsbFN5bnRheFRlc3QsIEV2YWx1YXRlc0ZpcnN0
QXJndW1lbnRPbmNlKSB7CisgIE1vY2tBIGE7CisgIE1vY2tBKiBwYSA9ICZhOworCisgIE9OX0NB
TEwoKnBhKyssIERvQShfKSk7CisgIEVYUEVDVF9FUSgmYSArIDEsIHBhKTsKK30KKworVEVTVChP
bkNhbGxTeW50YXhUZXN0LCBFdmFsdWF0ZXNTZWNvbmRBcmd1bWVudE9uY2UpIHsKKyAgTW9ja0Eg
YTsKKyAgaW50IG4gPSAwOworCisgIE9OX0NBTEwoYSwgRG9BKG4rKykpOworICBFWFBFQ1RfRVEo
MSwgbik7Cit9CisKKy8vIFRlc3RzIHRoYXQgdGhlIHN5bnRheCBvZiBPTl9DQUxMKCkgaXMgZW5m
b3JjZWQgYXQgcnVuIHRpbWUuCisKK1RFU1QoT25DYWxsU3ludGF4VGVzdCwgV2l0aElzT3B0aW9u
YWwpIHsKKyAgTW9ja0EgYTsKKworICBPTl9DQUxMKGEsIERvQSg1KSkKKyAgICAgIC5XaWxsQnlE
ZWZhdWx0KFJldHVybigpKTsKKyAgT05fQ0FMTChhLCBEb0EoXykpCisgICAgICAuV2l0aChfKQor
ICAgICAgLldpbGxCeURlZmF1bHQoUmV0dXJuKCkpOworfQorCitURVNUKE9uQ2FsbFN5bnRheFRl
c3QsIFdpdGhDYW5BcHBlYXJBdE1vc3RPbmNlKSB7CisgIE1vY2tBIGE7CisKKyAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAgT05fQ0FMTChhLCBSZXR1cm5SZXN1bHQo
XykpCisgICAgICAgIC5XaXRoKF8pCisgICAgICAgIC5XaXRoKF8pCisgICAgICAgIC5XaWxsQnlE
ZWZhdWx0KFJldHVybihSZXN1bHQoKSkpOworICB9LCAiLldpdGgoKSBjYW5ub3QgYXBwZWFyIG1v
cmUgdGhhbiBvbmNlIGluIGFuIE9OX0NBTEwoKSIpOworfQorCitURVNUKE9uQ2FsbFN5bnRheFRl
c3QsIFdpbGxCeURlZmF1bHRJc01hbmRhdG9yeSkgeworICBNb2NrQSBhOworCisgIEVYUEVDVF9E
RUFUSF9JRl9TVVBQT1JURUQoeworICAgIE9OX0NBTEwoYSwgRG9BKDUpKTsKKyAgICBhLkRvQSg1
KTsKKyAgfSwgIiIpOworfQorCitURVNUKE9uQ2FsbFN5bnRheFRlc3QsIFdpbGxCeURlZmF1bHRD
YW5BcHBlYXJBdE1vc3RPbmNlKSB7CisgIE1vY2tBIGE7CisKKyAgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoeyAgLy8gTk9MSU5UCisgICAgT05fQ0FMTChhLCBEb0EoNSkpCisgICAgICAgIC5XaWxs
QnlEZWZhdWx0KFJldHVybigpKQorICAgICAgICAuV2lsbEJ5RGVmYXVsdChSZXR1cm4oKSk7Cisg
IH0sICIuV2lsbEJ5RGVmYXVsdCgpIG11c3QgYXBwZWFyIGV4YWN0bHkgb25jZSBpbiBhbiBPTl9D
QUxMKCkiKTsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfQ0FMTCBldmFsdWF0ZXMgaXRzIGFy
Z3VtZW50cyBleGFjdGx5IG9uY2UgYXMKKy8vIHByb21pc2VkIGJ5IEdvb2dsZSBNb2NrLgorVEVT
VChFeHBlY3RDYWxsU3ludGF4VGVzdCwgRXZhbHVhdGVzRmlyc3RBcmd1bWVudE9uY2UpIHsKKyAg
TW9ja0EgYTsKKyAgTW9ja0EqIHBhID0gJmE7CisKKyAgRVhQRUNUX0NBTEwoKnBhKyssIERvQShf
KSk7CisgIGEuRG9BKDApOworICBFWFBFQ1RfRVEoJmEgKyAxLCBwYSk7Cit9CisKK1RFU1QoRXhw
ZWN0Q2FsbFN5bnRheFRlc3QsIEV2YWx1YXRlc1NlY29uZEFyZ3VtZW50T25jZSkgeworICBNb2Nr
QSBhOworICBpbnQgbiA9IDA7CisKKyAgRVhQRUNUX0NBTEwoYSwgRG9BKG4rKykpOworICBhLkRv
QSgwKTsKKyAgRVhQRUNUX0VRKDEsIG4pOworfQorCisvLyBUZXN0cyB0aGF0IHRoZSBzeW50YXgg
b2YgRVhQRUNUX0NBTEwoKSBpcyBlbmZvcmNlZCBhdCBydW4gdGltZS4KKworVEVTVChFeHBlY3RD
YWxsU3ludGF4VGVzdCwgV2l0aElzT3B0aW9uYWwpIHsKKyAgTW9ja0EgYTsKKworICBFWFBFQ1Rf
Q0FMTChhLCBEb0EoNSkpCisgICAgICAuVGltZXMoMCk7CisgIEVYUEVDVF9DQUxMKGEsIERvQSg2
KSkKKyAgICAgIC5XaXRoKF8pCisgICAgICAuVGltZXMoMCk7Cit9CisKK1RFU1QoRXhwZWN0Q2Fs
bFN5bnRheFRlc3QsIFdpdGhDYW5BcHBlYXJBdE1vc3RPbmNlKSB7CisgIE1vY2tBIGE7CisKKyAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAgRVhQRUNUX0NBTEwoYSwg
RG9BKDYpKQorICAgICAgICAuV2l0aChfKQorICAgICAgICAuV2l0aChfKTsKKyAgfSwgIi5XaXRo
KCkgY2Fubm90IGFwcGVhciBtb3JlIHRoYW4gb25jZSBpbiBhbiBFWFBFQ1RfQ0FMTCgpIik7CisK
KyAgYS5Eb0EoNik7Cit9CisKK1RFU1QoRXhwZWN0Q2FsbFN5bnRheFRlc3QsIFdpdGhNdXN0QmVG
aXJzdENsYXVzZSkgeworICBNb2NrQSBhOworCisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsg
IC8vIE5PTElOVAorICAgIEVYUEVDVF9DQUxMKGEsIERvQSgxKSkKKyAgICAgICAgLlRpbWVzKDEp
CisgICAgICAgIC5XaXRoKF8pOworICB9LCAiLldpdGgoKSBtdXN0IGJlIHRoZSBmaXJzdCBjbGF1
c2UgaW4gYW4gRVhQRUNUX0NBTEwoKSIpOworCisgIGEuRG9BKDEpOworCisgIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEVYUEVDVF9DQUxMKGEsIERvQSgyKSkKKyAg
ICAgICAgLldpbGxPbmNlKFJldHVybigpKQorICAgICAgICAuV2l0aChfKTsKKyAgfSwgIi5XaXRo
KCkgbXVzdCBiZSB0aGUgZmlyc3QgY2xhdXNlIGluIGFuIEVYUEVDVF9DQUxMKCkiKTsKKworICBh
LkRvQSgyKTsKK30KKworVEVTVChFeHBlY3RDYWxsU3ludGF4VGVzdCwgVGltZXNDYW5CZUluZmVy
cmVkKSB7CisgIE1vY2tBIGE7CisKKyAgRVhQRUNUX0NBTEwoYSwgRG9BKDEpKQorICAgICAgLldp
bGxPbmNlKFJldHVybigpKTsKKworICBFWFBFQ1RfQ0FMTChhLCBEb0EoMikpCisgICAgICAuV2ls
bE9uY2UoUmV0dXJuKCkpCisgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKCkpOworCisgIGEu
RG9BKDEpOworICBhLkRvQSgyKTsKKyAgYS5Eb0EoMik7Cit9CisKK1RFU1QoRXhwZWN0Q2FsbFN5
bnRheFRlc3QsIFRpbWVzQ2FuQXBwZWFyQXRNb3N0T25jZSkgeworICBNb2NrQSBhOworCisgIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEVYUEVDVF9DQUxMKGEsIERv
QSgxKSkKKyAgICAgICAgLlRpbWVzKDEpCisgICAgICAgIC5UaW1lcygyKTsKKyAgfSwgIi5UaW1l
cygpIGNhbm5vdCBhcHBlYXIgbW9yZSB0aGFuIG9uY2UgaW4gYW4gRVhQRUNUX0NBTEwoKSIpOwor
CisgIGEuRG9BKDEpOworICBhLkRvQSgxKTsKK30KKworVEVTVChFeHBlY3RDYWxsU3ludGF4VGVz
dCwgVGltZXNNdXN0QmVCZWZvcmVJblNlcXVlbmNlKSB7CisgIE1vY2tBIGE7CisgIFNlcXVlbmNl
IHM7CisKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAgRVhQRUNU
X0NBTEwoYSwgRG9BKDEpKQorICAgICAgICAuSW5TZXF1ZW5jZShzKQorICAgICAgICAuVGltZXMo
MSk7CisgIH0sICIuVGltZXMoKSBjYW5ub3QgYXBwZWFyIGFmdGVyICIpOworCisgIGEuRG9BKDEp
OworfQorCitURVNUKEV4cGVjdENhbGxTeW50YXhUZXN0LCBJblNlcXVlbmNlSXNPcHRpb25hbCkg
eworICBNb2NrQSBhOworICBTZXF1ZW5jZSBzOworCisgIEVYUEVDVF9DQUxMKGEsIERvQSgxKSk7
CisgIEVYUEVDVF9DQUxMKGEsIERvQSgyKSkKKyAgICAgIC5JblNlcXVlbmNlKHMpOworCisgIGEu
RG9BKDEpOworICBhLkRvQSgyKTsKK30KKworVEVTVChFeHBlY3RDYWxsU3ludGF4VGVzdCwgSW5T
ZXF1ZW5jZUNhbkFwcGVhck11bHRpcGxlVGltZXMpIHsKKyAgTW9ja0EgYTsKKyAgU2VxdWVuY2Ug
czEsIHMyOworCisgIEVYUEVDVF9DQUxMKGEsIERvQSgxKSkKKyAgICAgIC5JblNlcXVlbmNlKHMx
LCBzMikKKyAgICAgIC5JblNlcXVlbmNlKHMxKTsKKworICBhLkRvQSgxKTsKK30KKworVEVTVChF
eHBlY3RDYWxsU3ludGF4VGVzdCwgSW5TZXF1ZW5jZU11c3RCZUJlZm9yZUFmdGVyKSB7CisgIE1v
Y2tBIGE7CisgIFNlcXVlbmNlIHM7CisKKyAgRXhwZWN0YXRpb24gZSA9IEVYUEVDVF9DQUxMKGEs
IERvQSgxKSkKKyAgICAgIC5UaW1lcyhBbnlOdW1iZXIoKSk7CisgIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEVYUEVDVF9DQUxMKGEsIERvQSgyKSkKKyAgICAgICAg
LkFmdGVyKGUpCisgICAgICAgIC5JblNlcXVlbmNlKHMpOworICB9LCAiLkluU2VxdWVuY2UoKSBj
YW5ub3QgYXBwZWFyIGFmdGVyICIpOworCisgIGEuRG9BKDIpOworfQorCitURVNUKEV4cGVjdENh
bGxTeW50YXhUZXN0LCBJblNlcXVlbmNlTXVzdEJlQmVmb3JlV2lsbE9uY2UpIHsKKyAgTW9ja0Eg
YTsKKyAgU2VxdWVuY2UgczsKKworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJ
TlQKKyAgICBFWFBFQ1RfQ0FMTChhLCBEb0EoMSkpCisgICAgICAgIC5XaWxsT25jZShSZXR1cm4o
KSkKKyAgICAgICAgLkluU2VxdWVuY2Uocyk7CisgIH0sICIuSW5TZXF1ZW5jZSgpIGNhbm5vdCBh
cHBlYXIgYWZ0ZXIgIik7CisKKyAgYS5Eb0EoMSk7Cit9CisKK1RFU1QoRXhwZWN0Q2FsbFN5bnRh
eFRlc3QsIEFmdGVyTXVzdEJlQmVmb3JlV2lsbE9uY2UpIHsKKyAgTW9ja0EgYTsKKworICBFeHBl
Y3RhdGlvbiBlID0gRVhQRUNUX0NBTEwoYSwgRG9BKDEpKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoeworICAgIEVYUEVDVF9DQUxMKGEsIERvQSgyKSkKKyAgICAgICAgLldpbGxPbmNlKFJl
dHVybigpKQorICAgICAgICAuQWZ0ZXIoZSk7CisgIH0sICIuQWZ0ZXIoKSBjYW5ub3QgYXBwZWFy
IGFmdGVyICIpOworCisgIGEuRG9BKDEpOworICBhLkRvQSgyKTsKK30KKworVEVTVChFeHBlY3RD
YWxsU3ludGF4VGVzdCwgV2lsbElzT3B0aW9uYWwpIHsKKyAgTW9ja0EgYTsKKworICBFWFBFQ1Rf
Q0FMTChhLCBEb0EoMSkpOworICBFWFBFQ1RfQ0FMTChhLCBEb0EoMikpCisgICAgICAuV2lsbE9u
Y2UoUmV0dXJuKCkpOworCisgIGEuRG9BKDEpOworICBhLkRvQSgyKTsKK30KKworVEVTVChFeHBl
Y3RDYWxsU3ludGF4VGVzdCwgV2lsbENhbkFwcGVhck11bHRpcGxlVGltZXMpIHsKKyAgTW9ja0Eg
YTsKKworICBFWFBFQ1RfQ0FMTChhLCBEb0EoMSkpCisgICAgICAuVGltZXMoQW55TnVtYmVyKCkp
CisgICAgICAuV2lsbE9uY2UoUmV0dXJuKCkpCisgICAgICAuV2lsbE9uY2UoUmV0dXJuKCkpCisg
ICAgICAuV2lsbE9uY2UoUmV0dXJuKCkpOworfQorCitURVNUKEV4cGVjdENhbGxTeW50YXhUZXN0
LCBXaWxsTXVzdEJlQmVmb3JlV2lsbFJlcGVhdGVkbHkpIHsKKyAgTW9ja0EgYTsKKworICBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBFWFBFQ1RfQ0FMTChhLCBEb0Eo
MSkpCisgICAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oKSkKKyAgICAgICAgLldpbGxPbmNl
KFJldHVybigpKTsKKyAgfSwgIi5XaWxsT25jZSgpIGNhbm5vdCBhcHBlYXIgYWZ0ZXIgIik7CisK
KyAgYS5Eb0EoMSk7Cit9CisKK1RFU1QoRXhwZWN0Q2FsbFN5bnRheFRlc3QsIFdpbGxSZXBlYXRl
ZGx5SXNPcHRpb25hbCkgeworICBNb2NrQSBhOworCisgIEVYUEVDVF9DQUxMKGEsIERvQSgxKSkK
KyAgICAgIC5XaWxsT25jZShSZXR1cm4oKSk7CisgIEVYUEVDVF9DQUxMKGEsIERvQSgyKSkKKyAg
ICAgIC5XaWxsT25jZShSZXR1cm4oKSkKKyAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oKSk7
CisKKyAgYS5Eb0EoMSk7CisgIGEuRG9BKDIpOworICBhLkRvQSgyKTsKK30KKworVEVTVChFeHBl
Y3RDYWxsU3ludGF4VGVzdCwgV2lsbFJlcGVhdGVkbHlDYW5ub3RBcHBlYXJNdWx0aXBsZVRpbWVz
KSB7CisgIE1vY2tBIGE7CisKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5U
CisgICAgRVhQRUNUX0NBTEwoYSwgRG9BKDEpKQorICAgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0
dXJuKCkpCisgICAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oKSk7CisgIH0sICIuV2lsbFJl
cGVhdGVkbHkoKSBjYW5ub3QgYXBwZWFyIG1vcmUgdGhhbiBvbmNlIGluIGFuICIKKyAgICAgIkVY
UEVDVF9DQUxMKCkiKTsKK30KKworVEVTVChFeHBlY3RDYWxsU3ludGF4VGVzdCwgV2lsbFJlcGVh
dGVkbHlNdXN0QmVCZWZvcmVSZXRpcmVzT25TYXR1cmF0aW9uKSB7CisgIE1vY2tBIGE7CisKKyAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAgRVhQRUNUX0NBTEwoYSwg
RG9BKDEpKQorICAgICAgICAuUmV0aXJlc09uU2F0dXJhdGlvbigpCisgICAgICAgIC5XaWxsUmVw
ZWF0ZWRseShSZXR1cm4oKSk7CisgIH0sICIuV2lsbFJlcGVhdGVkbHkoKSBjYW5ub3QgYXBwZWFy
IGFmdGVyICIpOworfQorCitURVNUKEV4cGVjdENhbGxTeW50YXhUZXN0LCBSZXRpcmVzT25TYXR1
cmF0aW9uSXNPcHRpb25hbCkgeworICBNb2NrQSBhOworCisgIEVYUEVDVF9DQUxMKGEsIERvQSgx
KSk7CisgIEVYUEVDVF9DQUxMKGEsIERvQSgxKSkKKyAgICAgIC5SZXRpcmVzT25TYXR1cmF0aW9u
KCk7CisKKyAgYS5Eb0EoMSk7CisgIGEuRG9BKDEpOworfQorCitURVNUKEV4cGVjdENhbGxTeW50
YXhUZXN0LCBSZXRpcmVzT25TYXR1cmF0aW9uQ2Fubm90QXBwZWFyTXVsdGlwbGVUaW1lcykgewor
ICBNb2NrQSBhOworCisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAg
IEVYUEVDVF9DQUxMKGEsIERvQSgxKSkKKyAgICAgICAgLlJldGlyZXNPblNhdHVyYXRpb24oKQor
ICAgICAgICAuUmV0aXJlc09uU2F0dXJhdGlvbigpOworICB9LCAiLlJldGlyZXNPblNhdHVyYXRp
b24oKSBjYW5ub3QgYXBwZWFyIG1vcmUgdGhhbiBvbmNlIik7CisKKyAgYS5Eb0EoMSk7Cit9CisK
K1RFU1QoRXhwZWN0Q2FsbFN5bnRheFRlc3QsIERlZmF1bHRDYXJkaW5hbGl0eUlzT25jZSkgewor
ICB7CisgICAgTW9ja0EgYTsKKyAgICBFWFBFQ1RfQ0FMTChhLCBEb0EoMSkpOworICAgIGEuRG9B
KDEpOworICB9CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIE1v
Y2tBIGE7CisgICAgRVhQRUNUX0NBTEwoYSwgRG9BKDEpKTsKKyAgfSwgInRvIGJlIGNhbGxlZCBv
bmNlIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIE1vY2tB
IGE7CisgICAgRVhQRUNUX0NBTEwoYSwgRG9BKDEpKTsKKyAgICBhLkRvQSgxKTsKKyAgICBhLkRv
QSgxKTsKKyAgfSwgInRvIGJlIGNhbGxlZCBvbmNlIik7Cit9CisKKyNpZiBHVEVTVF9IQVNfU1RS
RUFNX1JFRElSRUNUSU9OCisKKy8vIFRlc3RzIHRoYXQgR29vZ2xlIE1vY2sgZG9lc24ndCBwcmlu
dCBhIHdhcm5pbmcgd2hlbiB0aGUgbnVtYmVyIG9mCisvLyBXaWxsT25jZSgpIGlzIGFkZXF1YXRl
LgorVEVTVChFeHBlY3RDYWxsU3ludGF4VGVzdCwgRG9lc05vdFdhcm5PbkFkZXF1YXRlQWN0aW9u
Q291bnQpIHsKKyAgQ2FwdHVyZVN0ZG91dCgpOworICB7CisgICAgTW9ja0IgYjsKKworICAgIC8v
IEl0J3MgYWx3YXlzIGZpbmUgdG8gb21pdCBXaWxsT25jZSgpIGVudGlyZWx5LgorICAgIEVYUEVD
VF9DQUxMKGIsIERvQigpKQorICAgICAgICAuVGltZXMoMCk7CisgICAgRVhQRUNUX0NBTEwoYiwg
RG9CKDEpKQorICAgICAgICAuVGltZXMoQXRNb3N0KDEpKTsKKyAgICBFWFBFQ1RfQ0FMTChiLCBE
b0IoMikpCisgICAgICAgIC5UaW1lcygxKQorICAgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJu
KDEpKTsKKworICAgIC8vIEl0J3MgZmluZSBmb3IgdGhlIG51bWJlciBvZiBXaWxsT25jZSgpcyB0
byBlcXVhbCB0aGUgdXBwZXIgYm91bmQuCisgICAgRVhQRUNUX0NBTEwoYiwgRG9CKDMpKQorICAg
ICAgICAuVGltZXMoQmV0d2VlbigxLCAyKSkKKyAgICAgICAgLldpbGxPbmNlKFJldHVybigxKSkK
KyAgICAgICAgLldpbGxPbmNlKFJldHVybigyKSk7CisKKyAgICAvLyBJdCdzIGZpbmUgZm9yIHRo
ZSBudW1iZXIgb2YgV2lsbE9uY2UoKXMgdG8gYmUgc21hbGxlciB0aGFuIHRoZQorICAgIC8vIHVw
cGVyIGJvdW5kIHdoZW4gdGhlcmUgaXMgYSBXaWxsUmVwZWF0ZWRseSgpLgorICAgIEVYUEVDVF9D
QUxMKGIsIERvQig0KSkKKyAgICAgICAgLlRpbWVzKEF0TW9zdCgzKSkKKyAgICAgICAgLldpbGxP
bmNlKFJldHVybigxKSkKKyAgICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybigyKSk7CisKKyAg
ICAvLyBTYXRpc2ZpZXMgdGhlIGFib3ZlIGV4cGVjdGF0aW9ucy4KKyAgICBiLkRvQigyKTsKKyAg
ICBiLkRvQigzKTsKKyAgfQorICBFWFBFQ1RfU1RSRVEoIiIsIEdldENhcHR1cmVkU3Rkb3V0KCku
Y19zdHIoKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgR29vZ2xlIE1vY2sgd2FybnMgb24gaGF2aW5n
IHRvbyBtYW55IGFjdGlvbnMgaW4gYW4KKy8vIGV4cGVjdGF0aW9uIGNvbXBhcmVkIHRvIGl0cyBj
YXJkaW5hbGl0eS4KK1RFU1QoRXhwZWN0Q2FsbFN5bnRheFRlc3QsIFdhcm5zT25Ub29NYW55QWN0
aW9ucykgeworICBDYXB0dXJlU3Rkb3V0KCk7CisgIHsKKyAgICBNb2NrQiBiOworCisgICAgLy8g
V2FybnMgd2hlbiB0aGUgbnVtYmVyIG9mIFdpbGxPbmNlKClzIGlzIGxhcmdlciB0aGFuIHRoZSB1
cHBlciBib3VuZC4KKyAgICBFWFBFQ1RfQ0FMTChiLCBEb0IoKSkKKyAgICAgICAgLlRpbWVzKDAp
CisgICAgICAgIC5XaWxsT25jZShSZXR1cm4oMSkpOyAgLy8gIzEKKyAgICBFWFBFQ1RfQ0FMTChi
LCBEb0IoKSkKKyAgICAgICAgLlRpbWVzKEF0TW9zdCgxKSkKKyAgICAgICAgLldpbGxPbmNlKFJl
dHVybigxKSkKKyAgICAgICAgLldpbGxPbmNlKFJldHVybigyKSk7ICAvLyAjMgorICAgIEVYUEVD
VF9DQUxMKGIsIERvQigxKSkKKyAgICAgICAgLlRpbWVzKDEpCisgICAgICAgIC5XaWxsT25jZShS
ZXR1cm4oMSkpCisgICAgICAgIC5XaWxsT25jZShSZXR1cm4oMikpCisgICAgICAgIC5SZXRpcmVz
T25TYXR1cmF0aW9uKCk7ICAvLyAjMworCisgICAgLy8gV2FybnMgd2hlbiB0aGUgbnVtYmVyIG9m
IFdpbGxPbmNlKClzIGVxdWFscyB0aGUgdXBwZXIgYm91bmQgYW5kCisgICAgLy8gdGhlcmUgaXMg
YSBXaWxsUmVwZWF0ZWRseSgpLgorICAgIEVYUEVDVF9DQUxMKGIsIERvQigpKQorICAgICAgICAu
VGltZXMoMCkKKyAgICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybigxKSk7ICAvLyAjNAorICAg
IEVYUEVDVF9DQUxMKGIsIERvQigyKSkKKyAgICAgICAgLlRpbWVzKDEpCisgICAgICAgIC5XaWxs
T25jZShSZXR1cm4oMSkpCisgICAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oMikpOyAgLy8g
IzUKKworICAgIC8vIFNhdGlzZmllcyB0aGUgYWJvdmUgZXhwZWN0YXRpb25zLgorICAgIGIuRG9C
KDEpOworICAgIGIuRG9CKDIpOworICB9CisgIGNvbnN0IHN0ZDo6c3RyaW5nIG91dHB1dCA9IEdl
dENhcHR1cmVkU3Rkb3V0KCk7CisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoCisgICAgICBJc1N1YnN0
cmluZywKKyAgICAgICJUb28gbWFueSBhY3Rpb25zIHNwZWNpZmllZCBpbiBFWFBFQ1RfQ0FMTChi
LCBEb0IoKSkuLi5cbiIKKyAgICAgICJFeHBlY3RlZCB0byBiZSBuZXZlciBjYWxsZWQsIGJ1dCBo
YXMgMSBXaWxsT25jZSgpLiIsCisgICAgICBvdXRwdXQpOyAgLy8gIzEKKyAgRVhQRUNUX1BSRURf
Rk9STUFUMigKKyAgICAgIElzU3Vic3RyaW5nLAorICAgICAgIlRvbyBtYW55IGFjdGlvbnMgc3Bl
Y2lmaWVkIGluIEVYUEVDVF9DQUxMKGIsIERvQigpKS4uLlxuIgorICAgICAgIkV4cGVjdGVkIHRv
IGJlIGNhbGxlZCBhdCBtb3N0IG9uY2UsICIKKyAgICAgICJidXQgaGFzIDIgV2lsbE9uY2UoKXMu
IiwKKyAgICAgIG91dHB1dCk7ICAvLyAjMgorICBFWFBFQ1RfUFJFRF9GT1JNQVQyKAorICAgICAg
SXNTdWJzdHJpbmcsCisgICAgICAiVG9vIG1hbnkgYWN0aW9ucyBzcGVjaWZpZWQgaW4gRVhQRUNU
X0NBTEwoYiwgRG9CKDEpKS4uLlxuIgorICAgICAgIkV4cGVjdGVkIHRvIGJlIGNhbGxlZCBvbmNl
LCBidXQgaGFzIDIgV2lsbE9uY2UoKXMuIiwKKyAgICAgIG91dHB1dCk7ICAvLyAjMworICBFWFBF
Q1RfUFJFRF9GT1JNQVQyKAorICAgICAgSXNTdWJzdHJpbmcsCisgICAgICAiVG9vIG1hbnkgYWN0
aW9ucyBzcGVjaWZpZWQgaW4gRVhQRUNUX0NBTEwoYiwgRG9CKCkpLi4uXG4iCisgICAgICAiRXhw
ZWN0ZWQgdG8gYmUgbmV2ZXIgY2FsbGVkLCBidXQgaGFzIDAgV2lsbE9uY2UoKXMgIgorICAgICAg
ImFuZCBhIFdpbGxSZXBlYXRlZGx5KCkuIiwKKyAgICAgIG91dHB1dCk7ICAvLyAjNAorICBFWFBF
Q1RfUFJFRF9GT1JNQVQyKAorICAgICAgSXNTdWJzdHJpbmcsCisgICAgICAiVG9vIG1hbnkgYWN0
aW9ucyBzcGVjaWZpZWQgaW4gRVhQRUNUX0NBTEwoYiwgRG9CKDIpKS4uLlxuIgorICAgICAgIkV4
cGVjdGVkIHRvIGJlIGNhbGxlZCBvbmNlLCBidXQgaGFzIDEgV2lsbE9uY2UoKSAiCisgICAgICAi
YW5kIGEgV2lsbFJlcGVhdGVkbHkoKS4iLAorICAgICAgb3V0cHV0KTsgIC8vICM1Cit9CisKKy8v
IFRlc3RzIHRoYXQgR29vZ2xlIE1vY2sgd2FybnMgb24gaGF2aW5nIHRvbyBmZXcgYWN0aW9ucyBp
biBhbgorLy8gZXhwZWN0YXRpb24gY29tcGFyZWQgdG8gaXRzIGNhcmRpbmFsaXR5LgorVEVTVChF
eHBlY3RDYWxsU3ludGF4VGVzdCwgV2FybnNPblRvb0Zld0FjdGlvbnMpIHsKKyAgTW9ja0IgYjsK
KworICBFWFBFQ1RfQ0FMTChiLCBEb0IoKSkKKyAgICAgIC5UaW1lcyhCZXR3ZWVuKDIsIDMpKQor
ICAgICAgLldpbGxPbmNlKFJldHVybigxKSk7CisKKyAgQ2FwdHVyZVN0ZG91dCgpOworICBiLkRv
QigpOworICBjb25zdCBzdGQ6OnN0cmluZyBvdXRwdXQgPSBHZXRDYXB0dXJlZFN0ZG91dCgpOwor
ICBFWFBFQ1RfUFJFRF9GT1JNQVQyKAorICAgICAgSXNTdWJzdHJpbmcsCisgICAgICAiVG9vIGZl
dyBhY3Rpb25zIHNwZWNpZmllZCBpbiBFWFBFQ1RfQ0FMTChiLCBEb0IoKSkuLi5cbiIKKyAgICAg
ICJFeHBlY3RlZCB0byBiZSBjYWxsZWQgYmV0d2VlbiAyIGFuZCAzIHRpbWVzLCAiCisgICAgICAi
YnV0IGhhcyBvbmx5IDEgV2lsbE9uY2UoKS4iLAorICAgICAgb3V0cHV0KTsKKyAgYi5Eb0IoKTsK
K30KKworI2VuZGlmICAvLyBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OCisKKy8vIFRlc3Rz
IHRoZSBzZW1hbnRpY3Mgb2YgT05fQ0FMTCgpLgorCisvLyBUZXN0cyB0aGF0IHRoZSBidWlsdC1p
biBkZWZhdWx0IGFjdGlvbiBpcyB0YWtlbiB3aGVuIG5vIE9OX0NBTEwoKQorLy8gaXMgc3BlY2lm
aWVkLgorVEVTVChPbkNhbGxUZXN0LCBUYWtlc0J1aWx0SW5EZWZhdWx0QWN0aW9uV2hlbk5vT25D
YWxsKSB7CisgIE1vY2tCIGI7CisgIEVYUEVDVF9DQUxMKGIsIERvQigpKTsKKworICBFWFBFQ1Rf
RVEoMCwgYi5Eb0IoKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgdGhlIGJ1aWx0LWluIGRlZmF1bHQg
YWN0aW9uIGlzIHRha2VuIHdoZW4gbm8gT05fQ0FMTCgpCisvLyBtYXRjaGVzIHRoZSBpbnZvY2F0
aW9uLgorVEVTVChPbkNhbGxUZXN0LCBUYWtlc0J1aWx0SW5EZWZhdWx0QWN0aW9uV2hlbk5vT25D
YWxsTWF0Y2hlcykgeworICBNb2NrQiBiOworICBPTl9DQUxMKGIsIERvQigxKSkKKyAgICAgIC5X
aWxsQnlEZWZhdWx0KFJldHVybigxKSk7CisgIEVYUEVDVF9DQUxMKGIsIERvQihfKSk7CisKKyAg
RVhQRUNUX0VRKDAsIGIuRG9CKDIpKTsKK30KKworLy8gVGVzdHMgdGhhdCB0aGUgbGFzdCBtYXRj
aGluZyBPTl9DQUxMKCkgYWN0aW9uIGlzIHRha2VuLgorVEVTVChPbkNhbGxUZXN0LCBQaWNrc0xh
c3RNYXRjaGluZ09uQ2FsbCkgeworICBNb2NrQiBiOworICBPTl9DQUxMKGIsIERvQihfKSkKKyAg
ICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybigzKSk7CisgIE9OX0NBTEwoYiwgRG9CKDIpKQorICAg
ICAgLldpbGxCeURlZmF1bHQoUmV0dXJuKDIpKTsKKyAgT05fQ0FMTChiLCBEb0IoMSkpCisgICAg
ICAuV2lsbEJ5RGVmYXVsdChSZXR1cm4oMSkpOworICBFWFBFQ1RfQ0FMTChiLCBEb0IoXykpOwor
CisgIEVYUEVDVF9FUSgyLCBiLkRvQigyKSk7Cit9CisKKy8vIFRlc3RzIHRoZSBzZW1hbnRpY3Mg
b2YgRVhQRUNUX0NBTEwoKS4KKworLy8gVGVzdHMgdGhhdCBhbnkgY2FsbCBpcyBhbGxvd2VkIHdo
ZW4gbm8gRVhQRUNUX0NBTEwoKSBpcyBzcGVjaWZpZWQuCitURVNUKEV4cGVjdENhbGxUZXN0LCBB
bGxvd3NBbnlDYWxsV2hlbk5vU3BlYykgeworICBNb2NrQiBiOworICBFWFBFQ1RfQ0FMTChiLCBE
b0IoKSk7CisgIC8vIFRoZXJlIGlzIG5vIGV4cGVjdGF0aW9uIG9uIERvQihpbnQpLgorCisgIGIu
RG9CKCk7CisKKyAgLy8gRG9CKGludCkgY2FuIGJlIGNhbGxlZCBhbnkgbnVtYmVyIG9mIHRpbWVz
LgorICBiLkRvQigxKTsKKyAgYi5Eb0IoMik7Cit9CisKKy8vIFRlc3RzIHRoYXQgdGhlIGxhc3Qg
bWF0Y2hpbmcgRVhQRUNUX0NBTEwoKSBmaXJlcy4KK1RFU1QoRXhwZWN0Q2FsbFRlc3QsIFBpY2tz
TGFzdE1hdGNoaW5nRXhwZWN0Q2FsbCkgeworICBNb2NrQiBiOworICBFWFBFQ1RfQ0FMTChiLCBE
b0IoXykpCisgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKDIpKTsKKyAgRVhQRUNUX0NBTEwo
YiwgRG9CKDEpKQorICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybigxKSk7CisKKyAgRVhQRUNU
X0VRKDEsIGIuRG9CKDEpKTsKK30KKworLy8gVGVzdHMgbG93ZXItYm91bmQgdmlvbGF0aW9uLgor
VEVTVChFeHBlY3RDYWxsVGVzdCwgQ2F0Y2hlc1Rvb0Zld0NhbGxzKSB7CisgIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIE1vY2tCIGI7CisgICAgRVhQRUNUX0NBTEwo
YiwgRG9CKDUpKQorICAgICAgICAuVGltZXMoQXRMZWFzdCgyKSk7CisKKyAgICBiLkRvQig1KTsK
KyAgfSwgIkFjdHVhbCBmdW5jdGlvbiBjYWxsIGNvdW50IGRvZXNuJ3QgbWF0Y2ggRVhQRUNUX0NB
TEwoYiwgRG9CKDUpKS4uLlxuIgorICAgICAiICAgICAgICAgRXhwZWN0ZWQ6IHRvIGJlIGNhbGxl
ZCBhdCBsZWFzdCB0d2ljZVxuIgorICAgICAiICAgICAgICAgICBBY3R1YWw6IGNhbGxlZCBvbmNl
IC0gdW5zYXRpc2ZpZWQgYW5kIGFjdGl2ZSIpOworfQorCisvLyBUZXN0cyB0aGF0IHRoZSBjYXJk
aW5hbGl0eSBjYW4gYmUgaW5mZXJyZWQgd2hlbiBubyBUaW1lcyguLi4pIGlzCisvLyBzcGVjaWZp
ZWQuCitURVNUKEV4cGVjdENhbGxUZXN0LCBJbmZlcnNDYXJkaW5hbGl0eVdoZW5UaGVyZUlzTm9X
aWxsUmVwZWF0ZWRseSkgeworICB7CisgICAgTW9ja0IgYjsKKyAgICBFWFBFQ1RfQ0FMTChiLCBE
b0IoKSkKKyAgICAgICAgLldpbGxPbmNlKFJldHVybigxKSkKKyAgICAgICAgLldpbGxPbmNlKFJl
dHVybigyKSk7CisKKyAgICBFWFBFQ1RfRVEoMSwgYi5Eb0IoKSk7CisgICAgRVhQRUNUX0VRKDIs
IGIuRG9CKCkpOworICB9CisKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5U
CisgICAgTW9ja0IgYjsKKyAgICBFWFBFQ1RfQ0FMTChiLCBEb0IoKSkKKyAgICAgICAgLldpbGxP
bmNlKFJldHVybigxKSkKKyAgICAgICAgLldpbGxPbmNlKFJldHVybigyKSk7CisKKyAgICBFWFBF
Q1RfRVEoMSwgYi5Eb0IoKSk7CisgIH0sICJ0byBiZSBjYWxsZWQgdHdpY2UiKTsKKworICB7ICAv
LyBOT0xJTlQKKyAgICBNb2NrQiBiOworICAgIEVYUEVDVF9DQUxMKGIsIERvQigpKQorICAgICAg
ICAuV2lsbE9uY2UoUmV0dXJuKDEpKQorICAgICAgICAuV2lsbE9uY2UoUmV0dXJuKDIpKTsKKwor
ICAgIEVYUEVDVF9FUSgxLCBiLkRvQigpKTsKKyAgICBFWFBFQ1RfRVEoMiwgYi5Eb0IoKSk7Cisg
ICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoYi5Eb0IoKSwgInRvIGJlIGNhbGxlZCB0d2ljZSIp
OworICB9Cit9CisKK1RFU1QoRXhwZWN0Q2FsbFRlc3QsIEluZmVyc0NhcmRpbmFsaXR5MVdoZW5U
aGVyZUlzV2lsbFJlcGVhdGVkbHkpIHsKKyAgeworICAgIE1vY2tCIGI7CisgICAgRVhQRUNUX0NB
TEwoYiwgRG9CKCkpCisgICAgICAgIC5XaWxsT25jZShSZXR1cm4oMSkpCisgICAgICAgIC5XaWxs
UmVwZWF0ZWRseShSZXR1cm4oMikpOworCisgICAgRVhQRUNUX0VRKDEsIGIuRG9CKCkpOworICB9
CisKKyAgeyAgLy8gTk9MSU5UCisgICAgTW9ja0IgYjsKKyAgICBFWFBFQ1RfQ0FMTChiLCBEb0Io
KSkKKyAgICAgICAgLldpbGxPbmNlKFJldHVybigxKSkKKyAgICAgICAgLldpbGxSZXBlYXRlZGx5
KFJldHVybigyKSk7CisKKyAgICBFWFBFQ1RfRVEoMSwgYi5Eb0IoKSk7CisgICAgRVhQRUNUX0VR
KDIsIGIuRG9CKCkpOworICAgIEVYUEVDVF9FUSgyLCBiLkRvQigpKTsKKyAgfQorCisgIEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIE1vY2tCIGI7CisgICAgRVhQRUNU
X0NBTEwoYiwgRG9CKCkpCisgICAgICAgIC5XaWxsT25jZShSZXR1cm4oMSkpCisgICAgICAgIC5X
aWxsUmVwZWF0ZWRseShSZXR1cm4oMikpOworICB9LCAidG8gYmUgY2FsbGVkIGF0IGxlYXN0IG9u
Y2UiKTsKK30KKworLy8gVGVzdHMgdGhhdCB0aGUgbi10aCBhY3Rpb24gaXMgdGFrZW4gZm9yIHRo
ZSBuLXRoIG1hdGNoaW5nCisvLyBpbnZvY2F0aW9uLgorVEVTVChFeHBlY3RDYWxsVGVzdCwgTnRo
TWF0Y2hUYWtlc050aEFjdGlvbikgeworICBNb2NrQiBiOworICBFWFBFQ1RfQ0FMTChiLCBEb0Io
KSkKKyAgICAgIC5XaWxsT25jZShSZXR1cm4oMSkpCisgICAgICAuV2lsbE9uY2UoUmV0dXJuKDIp
KQorICAgICAgLldpbGxPbmNlKFJldHVybigzKSk7CisKKyAgRVhQRUNUX0VRKDEsIGIuRG9CKCkp
OworICBFWFBFQ1RfRVEoMiwgYi5Eb0IoKSk7CisgIEVYUEVDVF9FUSgzLCBiLkRvQigpKTsKK30K
KworLy8gVGVzdHMgdGhhdCB0aGUgV2lsbFJlcGVhdGVkbHkoKSBhY3Rpb24gaXMgdGFrZW4gd2hl
biB0aGUgV2lsbE9uY2UoLi4uKQorLy8gbGlzdCBpcyBleGhhdXN0ZWQuCitURVNUKEV4cGVjdENh
bGxUZXN0LCBUYWtlc1JlcGVhdGVkQWN0aW9uV2hlbldpbGxMaXN0SXNFeGhhdXN0ZWQpIHsKKyAg
TW9ja0IgYjsKKyAgRVhQRUNUX0NBTEwoYiwgRG9CKCkpCisgICAgICAuV2lsbE9uY2UoUmV0dXJu
KDEpKQorICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybigyKSk7CisKKyAgRVhQRUNUX0VRKDEs
IGIuRG9CKCkpOworICBFWFBFQ1RfRVEoMiwgYi5Eb0IoKSk7CisgIEVYUEVDVF9FUSgyLCBiLkRv
QigpKTsKK30KKworI2lmIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KKworLy8gVGVzdHMg
dGhhdCB0aGUgZGVmYXVsdCBhY3Rpb24gaXMgdGFrZW4gd2hlbiB0aGUgV2lsbE9uY2UoLi4uKSBs
aXN0IGlzCisvLyBleGhhdXN0ZWQgYW5kIHRoZXJlIGlzIG5vIFdpbGxSZXBlYXRlZGx5KCkuCitU
RVNUKEV4cGVjdENhbGxUZXN0LCBUYWtlc0RlZmF1bHRBY3Rpb25XaGVuV2lsbExpc3RJc0V4aGF1
c3RlZCkgeworICBNb2NrQiBiOworICBFWFBFQ1RfQ0FMTChiLCBEb0IoXykpCisgICAgICAuVGlt
ZXMoMSk7CisgIEVYUEVDVF9DQUxMKGIsIERvQigpKQorICAgICAgLlRpbWVzKEFueU51bWJlcigp
KQorICAgICAgLldpbGxPbmNlKFJldHVybigxKSkKKyAgICAgIC5XaWxsT25jZShSZXR1cm4oMikp
OworCisgIENhcHR1cmVTdGRvdXQoKTsKKyAgRVhQRUNUX0VRKDAsIGIuRG9CKDEpKTsgIC8vIFNo
b3VsZG4ndCBnZW5lcmF0ZSBhIHdhcm5pbmcgYXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBleHBlY3RhdGlvbiBoYXMgbm8gYWN0aW9uIGNsYXVzZSBhdCBhbGwuCisgIEVYUEVD
VF9FUSgxLCBiLkRvQigpKTsKKyAgRVhQRUNUX0VRKDIsIGIuRG9CKCkpOworICBjb25zdCBzdGQ6
OnN0cmluZyBvdXRwdXQxID0gR2V0Q2FwdHVyZWRTdGRvdXQoKTsKKyAgRVhQRUNUX1NUUkVRKCIi
LCBvdXRwdXQxLmNfc3RyKCkpOworCisgIENhcHR1cmVTdGRvdXQoKTsKKyAgRVhQRUNUX0VRKDAs
IGIuRG9CKCkpOworICBFWFBFQ1RfRVEoMCwgYi5Eb0IoKSk7CisgIGNvbnN0IHN0ZDo6c3RyaW5n
IG91dHB1dDIgPSBHZXRDYXB0dXJlZFN0ZG91dCgpOworICBFWFBFQ1RfVEhBVChvdXRwdXQyLmNf
c3RyKCksCisgICAgICAgICAgICAgIEhhc1N1YnN0cigiQWN0aW9ucyByYW4gb3V0IGluIEVYUEVD
VF9DQUxMKGIsIERvQigpKS4uLlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIkNhbGxlZCAz
IHRpbWVzLCBidXQgb25seSAyIFdpbGxPbmNlKClzIGFyZSBzcGVjaWZpZWQiCisgICAgICAgICAg
ICAgICAgICAgICAgICAiIC0gcmV0dXJuaW5nIGRlZmF1bHQgdmFsdWUuIikpOworICBFWFBFQ1Rf
VEhBVChvdXRwdXQyLmNfc3RyKCksCisgICAgICAgICAgICAgIEhhc1N1YnN0cigiQWN0aW9ucyBy
YW4gb3V0IGluIEVYUEVDVF9DQUxMKGIsIERvQigpKS4uLlxuIgorICAgICAgICAgICAgICAgICAg
ICAgICAgIkNhbGxlZCA0IHRpbWVzLCBidXQgb25seSAyIFdpbGxPbmNlKClzIGFyZSBzcGVjaWZp
ZWQiCisgICAgICAgICAgICAgICAgICAgICAgICAiIC0gcmV0dXJuaW5nIGRlZmF1bHQgdmFsdWUu
IikpOworfQorCitURVNUKEZ1bmN0aW9uTW9ja2VyTWVzc2FnZVRlc3QsIFJlcG9ydHNFeHBlY3RD
YWxsTG9jYXRpb25Gb3JFeGhhdXNlZEFjdGlvbnMpIHsKKyAgTW9ja0IgYjsKKyAgc3RkOjpzdHJp
bmcgZXhwZWN0X2NhbGxfbG9jYXRpb24gPSBGb3JtYXRGaWxlTG9jYXRpb24oX19GSUxFX18sIF9f
TElORV9fICsgMSk7CisgIEVYUEVDVF9DQUxMKGIsIERvQigpKS5UaW1lcyhBbnlOdW1iZXIoKSku
V2lsbE9uY2UoUmV0dXJuKDEpKTsKKworICBFWFBFQ1RfRVEoMSwgYi5Eb0IoKSk7CisKKyAgQ2Fw
dHVyZVN0ZG91dCgpOworICBFWFBFQ1RfRVEoMCwgYi5Eb0IoKSk7CisgIGNvbnN0IHN0ZDo6c3Ry
aW5nIG91dHB1dCA9IEdldENhcHR1cmVkU3Rkb3V0KCk7CisgIC8vIFRoZSB3YXJuaW5nIG1lc3Nh
Z2Ugc2hvdWxkIGNvbnRhaW4gdGhlIGNhbGwgbG9jYXRpb24uCisgIEVYUEVDVF9QUkVEX0ZPUk1B
VDIoSXNTdWJzdHJpbmcsIGV4cGVjdF9jYWxsX2xvY2F0aW9uLCBvdXRwdXQpOworfQorCitURVNU
KEZ1bmN0aW9uTW9ja2VyTWVzc2FnZVRlc3QsCisgICAgIFJlcG9ydHNEZWZhdWx0QWN0aW9uTG9j
YXRpb25PZlVuaW50ZXJlc3RpbmdDYWxsc0Zvck5hZ2d5TW9jaykgeworICBzdGQ6OnN0cmluZyBv
bl9jYWxsX2xvY2F0aW9uOworICBDYXB0dXJlU3Rkb3V0KCk7CisgIHsKKyAgICBOYWdneU1vY2s8
TW9ja0I+IGI7CisgICAgb25fY2FsbF9sb2NhdGlvbiA9IEZvcm1hdEZpbGVMb2NhdGlvbihfX0ZJ
TEVfXywgX19MSU5FX18gKyAxKTsKKyAgICBPTl9DQUxMKGIsIERvQihfKSkuV2lsbEJ5RGVmYXVs
dChSZXR1cm4oMCkpOworICAgIGIuRG9CKDApOworICB9CisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIo
SXNTdWJzdHJpbmcsIG9uX2NhbGxfbG9jYXRpb24sIEdldENhcHR1cmVkU3Rkb3V0KCkpOworfQor
CisjZW5kaWYgIC8vIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KKworLy8gVGVzdHMgdGhh
dCBhbiB1bmludGVyZXN0aW5nIGNhbGwgcGVyZm9ybXMgdGhlIGRlZmF1bHQgYWN0aW9uLgorVEVT
VChVbmludGVyZXN0aW5nQ2FsbFRlc3QsIERvZXNEZWZhdWx0QWN0aW9uKSB7CisgIC8vIFdoZW4g
dGhlcmUgaXMgYW4gT05fQ0FMTCgpIHN0YXRlbWVudCwgdGhlIGFjdGlvbiBzcGVjaWZpZWQgYnkg
aXQKKyAgLy8gc2hvdWxkIGJlIHRha2VuLgorICBNb2NrQSBhOworICBPTl9DQUxMKGEsIEJpbmFy
eShfLCBfKSkKKyAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybih0cnVlKSk7CisgIEVYUEVDVF9U
UlVFKGEuQmluYXJ5KDEsIDIpKTsKKworICAvLyBXaGVuIHRoZXJlIGlzIG5vIE9OX0NBTEwoKSwg
dGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSByZXR1cm4gdHlwZQorICAvLyBzaG91bGQgYmUgcmV0
dXJuZWQuCisgIE1vY2tCIGI7CisgIEVYUEVDVF9FUSgwLCBiLkRvQigpKTsKK30KKworLy8gVGVz
dHMgdGhhdCBhbiB1bmV4cGVjdGVkIGNhbGwgcGVyZm9ybXMgdGhlIGRlZmF1bHQgYWN0aW9uLgor
VEVTVChVbmV4cGVjdGVkQ2FsbFRlc3QsIERvZXNEZWZhdWx0QWN0aW9uKSB7CisgIC8vIFdoZW4g
dGhlcmUgaXMgYW4gT05fQ0FMTCgpIHN0YXRlbWVudCwgdGhlIGFjdGlvbiBzcGVjaWZpZWQgYnkg
aXQKKyAgLy8gc2hvdWxkIGJlIHRha2VuLgorICBNb2NrQSBhOworICBPTl9DQUxMKGEsIEJpbmFy
eShfLCBfKSkKKyAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybih0cnVlKSk7CisgIEVYUEVDVF9D
QUxMKGEsIEJpbmFyeSgwLCAwKSk7CisgIGEuQmluYXJ5KDAsIDApOworICBib29sIHJlc3VsdCA9
IGZhbHNlOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShyZXN1bHQgPSBhLkJpbmFyeSgxLCAy
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlVuZXhwZWN0ZWQgbW9jayBmdW5jdGlvbiBj
YWxsIik7CisgIEVYUEVDVF9UUlVFKHJlc3VsdCk7CisKKyAgLy8gV2hlbiB0aGVyZSBpcyBubyBP
Tl9DQUxMKCksIHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgcmV0dXJuIHR5cGUKKyAgLy8gc2hv
dWxkIGJlIHJldHVybmVkLgorICBNb2NrQiBiOworICBFWFBFQ1RfQ0FMTChiLCBEb0IoMCkpCisg
ICAgICAuVGltZXMoMCk7CisgIGludCBuID0gLTE7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KG4gPSBiLkRvQigxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlVuZXhwZWN0ZWQgbW9j
ayBmdW5jdGlvbiBjYWxsIik7CisgIEVYUEVDVF9FUSgwLCBuKTsKK30KKworLy8gVGVzdHMgdGhh
dCB3aGVuIGFuIHVuZXhwZWN0ZWQgdm9pZCBmdW5jdGlvbiBnZW5lcmF0ZXMgdGhlIHJpZ2h0Cisv
LyBmYWlsdXJlIG1lc3NhZ2UuCitURVNUKFVuZXhwZWN0ZWRDYWxsVGVzdCwgR2VuZXJhdGVzRmFp
bHVyZUZvclZvaWRGdW5jdGlvbikgeworICAvLyBGaXJzdCwgdGVzdHMgdGhlIG1lc3NhZ2Ugd2hl
biB0aGVyZSBpcyBvbmx5IG9uZSBFWFBFQ1RfQ0FMTCgpLgorICBNb2NrQSBhMTsKKyAgRVhQRUNU
X0NBTEwoYTEsIERvQSgxKSk7CisgIGExLkRvQSgxKTsKKyAgLy8gSWRlYWxseSB3ZSBzaG91bGQg
bWF0Y2ggdGhlIGZhaWx1cmUgbWVzc2FnZSBhZ2FpbnN0IGEgcmVnZXgsIGJ1dAorICAvLyBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRSBkb2Vzbid0IHN1cHBvcnQgdGhhdCwgc28gd2UgdGVzdCBmb3IK
KyAgLy8gbXVsdGlwbGUgc3ViLXN0cmluZ3MgaW5zdGVhZC4KKyAgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoCisgICAgICBhMS5Eb0EoOSksCisgICAgICAiVW5leHBlY3RlZCBtb2NrIGZ1bmN0aW9u
IGNhbGwgLSByZXR1cm5pbmcgZGlyZWN0bHkuXG4iCisgICAgICAiICAgIEZ1bmN0aW9uIGNhbGw6
IERvQSg5KVxuIgorICAgICAgIkdvb2dsZSBNb2NrIHRyaWVkIHRoZSBmb2xsb3dpbmcgMSBleHBl
Y3RhdGlvbiwgYnV0IGl0IGRpZG4ndCBtYXRjaDoiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoCisgICAgICBhMS5Eb0EoOSksCisgICAgICAiICBFeHBlY3RlZCBhcmcgIzA6IGlzIGVxdWFs
IHRvIDFcbiIKKyAgICAgICIgICAgICAgICAgIEFjdHVhbDogOVxuIgorICAgICAgIiAgICAgICAg
IEV4cGVjdGVkOiB0byBiZSBjYWxsZWQgb25jZVxuIgorICAgICAgIiAgICAgICAgICAgQWN0dWFs
OiBjYWxsZWQgb25jZSAtIHNhdHVyYXRlZCBhbmQgYWN0aXZlIik7CisKKyAgLy8gTmV4dCwgdGVz
dHMgdGhlIG1lc3NhZ2Ugd2hlbiB0aGVyZSBhcmUgbW9yZSB0aGFuIG9uZSBFWFBFQ1RfQ0FMTCgp
LgorICBNb2NrQSBhMjsKKyAgRVhQRUNUX0NBTEwoYTIsIERvQSgxKSk7CisgIEVYUEVDVF9DQUxM
KGEyLCBEb0EoMykpOworICBhMi5Eb0EoMSk7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKAor
ICAgICAgYTIuRG9BKDIpLAorICAgICAgIlVuZXhwZWN0ZWQgbW9jayBmdW5jdGlvbiBjYWxsIC0g
cmV0dXJuaW5nIGRpcmVjdGx5LlxuIgorICAgICAgIiAgICBGdW5jdGlvbiBjYWxsOiBEb0EoMilc
biIKKyAgICAgICJHb29nbGUgTW9jayB0cmllZCB0aGUgZm9sbG93aW5nIDIgZXhwZWN0YXRpb25z
LCBidXQgbm9uZSBtYXRjaGVkOiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgKKyAgICAg
IGEyLkRvQSgyKSwKKyAgICAgICJ0cmllZCBleHBlY3RhdGlvbiAjMDogRVhQRUNUX0NBTEwoYTIs
IERvQSgxKSkuLi5cbiIKKyAgICAgICIgIEV4cGVjdGVkIGFyZyAjMDogaXMgZXF1YWwgdG8gMVxu
IgorICAgICAgIiAgICAgICAgICAgQWN0dWFsOiAyXG4iCisgICAgICAiICAgICAgICAgRXhwZWN0
ZWQ6IHRvIGJlIGNhbGxlZCBvbmNlXG4iCisgICAgICAiICAgICAgICAgICBBY3R1YWw6IGNhbGxl
ZCBvbmNlIC0gc2F0dXJhdGVkIGFuZCBhY3RpdmUiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoCisgICAgICBhMi5Eb0EoMiksCisgICAgICAidHJpZWQgZXhwZWN0YXRpb24gIzE6IEVYUEVD
VF9DQUxMKGEyLCBEb0EoMykpLi4uXG4iCisgICAgICAiICBFeHBlY3RlZCBhcmcgIzA6IGlzIGVx
dWFsIHRvIDNcbiIKKyAgICAgICIgICAgICAgICAgIEFjdHVhbDogMlxuIgorICAgICAgIiAgICAg
ICAgIEV4cGVjdGVkOiB0byBiZSBjYWxsZWQgb25jZVxuIgorICAgICAgIiAgICAgICAgICAgQWN0
dWFsOiBuZXZlciBjYWxsZWQgLSB1bnNhdGlzZmllZCBhbmQgYWN0aXZlIik7CisgIGEyLkRvQSgz
KTsKK30KKworLy8gVGVzdHMgdGhhdCBhbiB1bmV4cGVjdGVkIG5vbi12b2lkIGZ1bmN0aW9uIGdl
bmVyYXRlcyB0aGUgcmlnaHQKKy8vIGZhaWx1cmUgbWVzc2FnZS4KK1RFU1QoVW5leHBlY3RlZENh
bGxUZXN0LCBHZW5lYXJ0ZXNGYWlsdXJlRm9yTm9uVm9pZEZ1bmN0aW9uKSB7CisgIE1vY2tCIGIx
OworICBFWFBFQ1RfQ0FMTChiMSwgRG9CKDEpKTsKKyAgYjEuRG9CKDEpOworICBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRSgKKyAgICAgIGIxLkRvQigyKSwKKyAgICAgICJVbmV4cGVjdGVkIG1vY2sg
ZnVuY3Rpb24gY2FsbCAtIHJldHVybmluZyBkZWZhdWx0IHZhbHVlLlxuIgorICAgICAgIiAgICBG
dW5jdGlvbiBjYWxsOiBEb0IoMilcbiIKKyAgICAgICIgICAgICAgICAgUmV0dXJuczogMFxuIgor
ICAgICAgIkdvb2dsZSBNb2NrIHRyaWVkIHRoZSBmb2xsb3dpbmcgMSBleHBlY3RhdGlvbiwgYnV0
IGl0IGRpZG4ndCBtYXRjaDoiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoCisgICAgICBi
MS5Eb0IoMiksCisgICAgICAiICBFeHBlY3RlZCBhcmcgIzA6IGlzIGVxdWFsIHRvIDFcbiIKKyAg
ICAgICIgICAgICAgICAgIEFjdHVhbDogMlxuIgorICAgICAgIiAgICAgICAgIEV4cGVjdGVkOiB0
byBiZSBjYWxsZWQgb25jZVxuIgorICAgICAgIiAgICAgICAgICAgQWN0dWFsOiBjYWxsZWQgb25j
ZSAtIHNhdHVyYXRlZCBhbmQgYWN0aXZlIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgR29vZ2xlIE1v
Y2sgZXhwbGFpbnMgdGhhdCBhbiByZXRpcmVkIGV4cGVjdGF0aW9uIGRvZXNuJ3QKKy8vIG1hdGNo
IHRoZSBjYWxsLgorVEVTVChVbmV4cGVjdGVkQ2FsbFRlc3QsIFJldGlyZWRFeHBlY3RhdGlvbikg
eworICBNb2NrQiBiOworICBFWFBFQ1RfQ0FMTChiLCBEb0IoMSkpCisgICAgICAuUmV0aXJlc09u
U2F0dXJhdGlvbigpOworCisgIGIuRG9CKDEpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgK
KyAgICAgIGIuRG9CKDEpLAorICAgICAgIiAgICAgICAgIEV4cGVjdGVkOiB0aGUgZXhwZWN0YXRp
b24gaXMgYWN0aXZlXG4iCisgICAgICAiICAgICAgICAgICBBY3R1YWw6IGl0IGlzIHJldGlyZWQi
KTsKK30KKworLy8gVGVzdHMgdGhhdCBHb29nbGUgTW9jayBleHBsYWlucyB0aGF0IGFuIGV4cGVj
dGF0aW9uIHRoYXQgZG9lc24ndAorLy8gbWF0Y2ggdGhlIGFyZ3VtZW50cyBkb2Vzbid0IG1hdGNo
IHRoZSBjYWxsLgorVEVTVChVbmV4cGVjdGVkQ2FsbFRlc3QsIFVubWF0Y2hlZEFyZ3VtZW50cykg
eworICBNb2NrQiBiOworICBFWFBFQ1RfQ0FMTChiLCBEb0IoMSkpOworCisgIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKAorICAgICAgYi5Eb0IoMiksCisgICAgICAiICBFeHBlY3RlZCBhcmcgIzA6
IGlzIGVxdWFsIHRvIDFcbiIKKyAgICAgICIgICAgICAgICAgIEFjdHVhbDogMlxuIik7CisgIGIu
RG9CKDEpOworfQorCisvLyBUZXN0cyB0aGF0IEdvb2dsZSBNb2NrIGV4cGxhaW5zIHRoYXQgYW4g
ZXhwZWN0YXRpb24gd2l0aAorLy8gdW5zYXRpc2ZpZWQgcHJlLXJlcXVpc2l0ZXMgZG9lc24ndCBt
YXRjaCB0aGUgY2FsbC4KK1RFU1QoVW5leHBlY3RlZENhbGxUZXN0LCBVbnNhdGlzaWZpZWRQcmVy
ZXF1aXNpdGVzKSB7CisgIFNlcXVlbmNlIHMxLCBzMjsKKyAgTW9ja0IgYjsKKyAgRVhQRUNUX0NB
TEwoYiwgRG9CKDEpKQorICAgICAgLkluU2VxdWVuY2UoczEpOworICBFWFBFQ1RfQ0FMTChiLCBE
b0IoMikpCisgICAgICAuVGltZXMoQW55TnVtYmVyKCkpCisgICAgICAuSW5TZXF1ZW5jZShzMSk7
CisgIEVYUEVDVF9DQUxMKGIsIERvQigzKSkKKyAgICAgIC5JblNlcXVlbmNlKHMyKTsKKyAgRVhQ
RUNUX0NBTEwoYiwgRG9CKDQpKQorICAgICAgLkluU2VxdWVuY2UoczEsIHMyKTsKKworICA6OnRl
c3Rpbmc6OlRlc3RQYXJ0UmVzdWx0QXJyYXkgZmFpbHVyZXM7CisgIHsKKyAgICA6OnRlc3Rpbmc6
OlNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyIHJlcG9ydGVyKCZmYWlsdXJlcyk7Cisg
ICAgYi5Eb0IoNCk7CisgICAgLy8gTm93ICdmYWlsdXJlcycgY29udGFpbnMgdGhlIEdvb2dsZSBU
ZXN0IGZhaWx1cmVzIGdlbmVyYXRlZCBieQorICAgIC8vIHRoZSBhYm92ZSBzdGF0ZW1lbnQuCisg
IH0KKworICAvLyBUaGVyZSBzaG91bGQgYmUgb25lIG5vbi1mYXRhbCBmYWlsdXJlLgorICBBU1NF
UlRfRVEoMSwgZmFpbHVyZXMuc2l6ZSgpKTsKKyAgY29uc3QgOjp0ZXN0aW5nOjpUZXN0UGFydFJl
c3VsdCYgciA9IGZhaWx1cmVzLkdldFRlc3RQYXJ0UmVzdWx0KDApOworICBFWFBFQ1RfRVEoOjp0
ZXN0aW5nOjpUZXN0UGFydFJlc3VsdDo6a05vbkZhdGFsRmFpbHVyZSwgci50eXBlKCkpOworCisg
IC8vIFZlcmlmaWVzIHRoYXQgdGhlIGZhaWx1cmUgbWVzc2FnZSBjb250YWlucyB0aGUgdHdvIHVu
c2F0aXNmaWVkCisgIC8vIHByZS1yZXF1aXNpdGVzIGJ1dCBub3QgdGhlIHNhdGlzZmllZCBvbmUu
CisjaWYgR1RFU1RfVVNFU19QQ1JFCisgIEVYUEVDVF9USEFUKHIubWVzc2FnZSgpLCBDb250YWlu
c1JlZ2V4KAorICAgICAgLy8gUENSRSBoYXMgdHJvdWJsZSB1c2luZyAoLnxcbikgdG8gbWF0Y2gg
YW55IGNoYXJhY3RlciwgYnV0CisgICAgICAvLyBzdXBwb3J0cyB0aGUgKD9zKSBwcmVmaXggZm9y
IHVzaW5nIC4gdG8gbWF0Y2ggYW55IGNoYXJhY3Rlci4KKyAgICAgICIoP3MpdGhlIGZvbGxvd2lu
ZyBpbW1lZGlhdGUgcHJlLXJlcXVpc2l0ZXMgYXJlIG5vdCBzYXRpc2ZpZWQ6XG4iCisgICAgICAi
Lio6IHByZS1yZXF1aXNpdGUgIzBcbiIKKyAgICAgICIuKjogcHJlLXJlcXVpc2l0ZSAjMSIpKTsK
KyNlbGlmIEdURVNUX1VTRVNfUE9TSVhfUkUKKyAgRVhQRUNUX1RIQVQoci5tZXNzYWdlKCksIENv
bnRhaW5zUmVnZXgoCisgICAgICAvLyBQT1NJWCBSRSBkb2Vzbid0IHVuZGVyc3RhbmQgdGhlICg/
cykgcHJlZml4LCBidXQgaGFzIG5vIHRyb3VibGUKKyAgICAgIC8vIHdpdGggKC58XG4pLgorICAg
ICAgInRoZSBmb2xsb3dpbmcgaW1tZWRpYXRlIHByZS1yZXF1aXNpdGVzIGFyZSBub3Qgc2F0aXNm
aWVkOlxuIgorICAgICAgIigufFxuKSo6IHByZS1yZXF1aXNpdGUgIzBcbiIKKyAgICAgICIoLnxc
bikqOiBwcmUtcmVxdWlzaXRlICMxIikpOworI2Vsc2UKKyAgLy8gV2UgY2FuIG9ubHkgdXNlIEdv
b2dsZSBUZXN0J3Mgb3duIHNpbXBsZSByZWdleC4KKyAgRVhQRUNUX1RIQVQoci5tZXNzYWdlKCks
IENvbnRhaW5zUmVnZXgoCisgICAgICAidGhlIGZvbGxvd2luZyBpbW1lZGlhdGUgcHJlLXJlcXVp
c2l0ZXMgYXJlIG5vdCBzYXRpc2ZpZWQ6IikpOworICBFWFBFQ1RfVEhBVChyLm1lc3NhZ2UoKSwg
Q29udGFpbnNSZWdleCgiOiBwcmUtcmVxdWlzaXRlICMwIikpOworICBFWFBFQ1RfVEhBVChyLm1l
c3NhZ2UoKSwgQ29udGFpbnNSZWdleCgiOiBwcmUtcmVxdWlzaXRlICMxIikpOworI2VuZGlmICAv
LyBHVEVTVF9VU0VTX1BDUkUKKworICBiLkRvQigxKTsKKyAgYi5Eb0IoMyk7CisgIGIuRG9CKDQp
OworfQorCitURVNUKFVuZGVmaW5lZFJldHVyblZhbHVlVGVzdCwKKyAgICAgUmV0dXJuVmFsdWVJ
c01hbmRhdG9yeVdoZW5Ob3REZWZhdWx0Q29uc3RydWN0aWJsZSkgeworICBNb2NrQSBhOworICAv
LyBUT0RPKHdhbkBnb29nbGUuY29tKTogV2Ugc2hvdWxkIHJlYWxseSB2ZXJpZnkgdGhlIG91dHB1
dCBtZXNzYWdlLAorICAvLyBidXQgd2UgY2Fubm90IHlldCBkdWUgdG8gdGhhdCBFWFBFQ1RfREVB
VEggb25seSBjYXB0dXJlcyBzdGRlcnIKKyAgLy8gd2hpbGUgR29vZ2xlIE1vY2sgbG9ncyB0byBz
dGRvdXQuCisjaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKKyAgRVhQRUNUX0FOWV9USFJPVyhhLlJl
dHVybk5vbkRlZmF1bHRDb25zdHJ1Y3RpYmxlKCkpOworI2Vsc2UKKyAgRVhQRUNUX0RFQVRIX0lG
X1NVUFBPUlRFRChhLlJldHVybk5vbkRlZmF1bHRDb25zdHJ1Y3RpYmxlKCksICIiKTsKKyNlbmRp
ZgorfQorCisvLyBUZXN0cyB0aGF0IGFuIGV4Y2Vzc2l2ZSBjYWxsIChvbmUgd2hvc2UgYXJndW1l
bnRzIG1hdGNoIHRoZQorLy8gbWF0Y2hlcnMgYnV0IGlzIGNhbGxlZCB0b28gbWFueSB0aW1lcykg
cGVyZm9ybXMgdGhlIGRlZmF1bHQgYWN0aW9uLgorVEVTVChFeGNlc3NpdmVDYWxsVGVzdCwgRG9l
c0RlZmF1bHRBY3Rpb24pIHsKKyAgLy8gV2hlbiB0aGVyZSBpcyBhbiBPTl9DQUxMKCkgc3RhdGVt
ZW50LCB0aGUgYWN0aW9uIHNwZWNpZmllZCBieSBpdAorICAvLyBzaG91bGQgYmUgdGFrZW4uCisg
IE1vY2tBIGE7CisgIE9OX0NBTEwoYSwgQmluYXJ5KF8sIF8pKQorICAgICAgLldpbGxCeURlZmF1
bHQoUmV0dXJuKHRydWUpKTsKKyAgRVhQRUNUX0NBTEwoYSwgQmluYXJ5KDAsIDApKTsKKyAgYS5C
aW5hcnkoMCwgMCk7CisgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CisgIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKHJlc3VsdCA9IGEuQmluYXJ5KDAsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAiTW9jayBmdW5jdGlvbiBjYWxsZWQgbW9yZSB0aW1lcyB0aGFuIGV4cGVjdGVkIik7CisgIEVY
UEVDVF9UUlVFKHJlc3VsdCk7CisKKyAgLy8gV2hlbiB0aGVyZSBpcyBubyBPTl9DQUxMKCksIHRo
ZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgcmV0dXJuIHR5cGUKKyAgLy8gc2hvdWxkIGJlIHJldHVy
bmVkLgorICBNb2NrQiBiOworICBFWFBFQ1RfQ0FMTChiLCBEb0IoMCkpCisgICAgICAuVGltZXMo
MCk7CisgIGludCBuID0gLTE7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKG4gPSBiLkRvQigw
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vY2sgZnVuY3Rpb24gY2FsbGVkIG1vcmUg
dGltZXMgdGhhbiBleHBlY3RlZCIpOworICBFWFBFQ1RfRVEoMCwgbik7Cit9CisKKy8vIFRlc3Rz
IHRoYXQgd2hlbiBhIHZvaWQgZnVuY3Rpb24gaXMgY2FsbGVkIHRvbyBtYW55IHRpbWVzLAorLy8g
dGhlIGZhaWx1cmUgbWVzc2FnZSBjb250YWlucyB0aGUgYXJndW1lbnQgdmFsdWVzLgorVEVTVChF
eGNlc3NpdmVDYWxsVGVzdCwgR2VuZXJhdGVzRmFpbHVyZUZvclZvaWRGdW5jdGlvbikgeworICBN
b2NrQSBhOworICBFWFBFQ1RfQ0FMTChhLCBEb0EoXykpCisgICAgICAuVGltZXMoMCk7CisgIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKAorICAgICAgYS5Eb0EoOSksCisgICAgICAiTW9jayBmdW5j
dGlvbiBjYWxsZWQgbW9yZSB0aW1lcyB0aGFuIGV4cGVjdGVkIC0gcmV0dXJuaW5nIGRpcmVjdGx5
LlxuIgorICAgICAgIiAgICBGdW5jdGlvbiBjYWxsOiBEb0EoOSlcbiIKKyAgICAgICIgICAgICAg
ICBFeHBlY3RlZDogdG8gYmUgbmV2ZXIgY2FsbGVkXG4iCisgICAgICAiICAgICAgICAgICBBY3R1
YWw6IGNhbGxlZCBvbmNlIC0gb3Zlci1zYXR1cmF0ZWQgYW5kIGFjdGl2ZSIpOworfQorCisvLyBU
ZXN0cyB0aGF0IHdoZW4gYSBub24tdm9pZCBmdW5jdGlvbiBpcyBjYWxsZWQgdG9vIG1hbnkgdGlt
ZXMsIHRoZQorLy8gZmFpbHVyZSBtZXNzYWdlIGNvbnRhaW5zIHRoZSBhcmd1bWVudCB2YWx1ZXMg
YW5kIHRoZSByZXR1cm4gdmFsdWUuCitURVNUKEV4Y2Vzc2l2ZUNhbGxUZXN0LCBHZW5lcmF0ZXNG
YWlsdXJlRm9yTm9uVm9pZEZ1bmN0aW9uKSB7CisgIE1vY2tCIGI7CisgIEVYUEVDVF9DQUxMKGIs
IERvQihfKSk7CisgIGIuRG9CKDEpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgKKyAgICAg
IGIuRG9CKDIpLAorICAgICAgIk1vY2sgZnVuY3Rpb24gY2FsbGVkIG1vcmUgdGltZXMgdGhhbiBl
eHBlY3RlZCAtICIKKyAgICAgICJyZXR1cm5pbmcgZGVmYXVsdCB2YWx1ZS5cbiIKKyAgICAgICIg
ICAgRnVuY3Rpb24gY2FsbDogRG9CKDIpXG4iCisgICAgICAiICAgICAgICAgIFJldHVybnM6IDBc
biIKKyAgICAgICIgICAgICAgICBFeHBlY3RlZDogdG8gYmUgY2FsbGVkIG9uY2VcbiIKKyAgICAg
ICIgICAgICAgICAgIEFjdHVhbDogY2FsbGVkIHR3aWNlIC0gb3Zlci1zYXR1cmF0ZWQgYW5kIGFj
dGl2ZSIpOworfQorCisvLyBUZXN0cyB1c2luZyBzZXF1ZW5jZXMuCisKK1RFU1QoSW5TZXF1ZW5j
ZVRlc3QsIEFsbEV4cGVjdGF0aW9uSW5TY29wZUFyZUluU2VxdWVuY2UpIHsKKyAgTW9ja0EgYTsK
KyAgeworICAgIEluU2VxdWVuY2UgZHVtbXk7CisKKyAgICBFWFBFQ1RfQ0FMTChhLCBEb0EoMSkp
OworICAgIEVYUEVDVF9DQUxMKGEsIERvQSgyKSk7CisgIH0KKworICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBhLkRvQSgyKTsKKyAgfSwgIlVuZXhwZWN0ZWQgbW9j
ayBmdW5jdGlvbiBjYWxsIik7CisKKyAgYS5Eb0EoMSk7CisgIGEuRG9BKDIpOworfQorCitURVNU
KEluU2VxdWVuY2VUZXN0LCBOZXN0ZWRJblNlcXVlbmNlKSB7CisgIE1vY2tBIGE7CisgIHsKKyAg
ICBJblNlcXVlbmNlIGR1bW15OworCisgICAgRVhQRUNUX0NBTEwoYSwgRG9BKDEpKTsKKyAgICB7
CisgICAgICBJblNlcXVlbmNlIGR1bW15MjsKKworICAgICAgRVhQRUNUX0NBTEwoYSwgRG9BKDIp
KTsKKyAgICAgIEVYUEVDVF9DQUxMKGEsIERvQSgzKSk7CisgICAgfQorICB9CisKKyAgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAgYS5Eb0EoMSk7CisgICAgYS5Eb0Eo
Myk7CisgIH0sICJVbmV4cGVjdGVkIG1vY2sgZnVuY3Rpb24gY2FsbCIpOworCisgIGEuRG9BKDIp
OworICBhLkRvQSgzKTsKK30KKworVEVTVChJblNlcXVlbmNlVGVzdCwgRXhwZWN0YXRpb25zT3V0
T2ZTY29wZUFyZU5vdEFmZmVjdGVkKSB7CisgIE1vY2tBIGE7CisgIHsKKyAgICBJblNlcXVlbmNl
IGR1bW15OworCisgICAgRVhQRUNUX0NBTEwoYSwgRG9BKDEpKTsKKyAgICBFWFBFQ1RfQ0FMTChh
LCBEb0EoMikpOworICB9CisgIEVYUEVDVF9DQUxMKGEsIERvQSgzKSk7CisKKyAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAgYS5Eb0EoMik7CisgIH0sICJVbmV4cGVj
dGVkIG1vY2sgZnVuY3Rpb24gY2FsbCIpOworCisgIGEuRG9BKDMpOworICBhLkRvQSgxKTsKKyAg
YS5Eb0EoMik7Cit9CisKKy8vIFRlc3RzIHRoYXQgYW55IG9yZGVyIGlzIGFsbG93ZWQgd2hlbiBu
byBzZXF1ZW5jZSBpcyB1c2VkLgorVEVTVChTZXF1ZW5jZVRlc3QsIEFueU9yZGVySXNPa0J5RGVm
YXVsdCkgeworICB7CisgICAgTW9ja0EgYTsKKyAgICBNb2NrQiBiOworCisgICAgRVhQRUNUX0NB
TEwoYSwgRG9BKDEpKTsKKyAgICBFWFBFQ1RfQ0FMTChiLCBEb0IoKSkKKyAgICAgICAgLlRpbWVz
KEFueU51bWJlcigpKTsKKworICAgIGEuRG9BKDEpOworICAgIGIuRG9CKCk7CisgIH0KKworICB7
ICAvLyBOT0xJTlQKKyAgICBNb2NrQSBhOworICAgIE1vY2tCIGI7CisKKyAgICBFWFBFQ1RfQ0FM
TChhLCBEb0EoMSkpOworICAgIEVYUEVDVF9DQUxMKGIsIERvQigpKQorICAgICAgICAuVGltZXMo
QW55TnVtYmVyKCkpOworCisgICAgYi5Eb0IoKTsKKyAgICBhLkRvQSgxKTsKKyAgfQorfQorCisv
LyBUZXN0cyB0aGF0IHRoZSBjYWxscyBtdXN0IGJlIGluIHN0cmljdCBvcmRlciB3aGVuIGEgY29t
cGxldGUgb3JkZXIKKy8vIGlzIHNwZWNpZmllZC4KK1RFU1QoU2VxdWVuY2VUZXN0LCBDYWxsc011
c3RCZUluU3RyaWN0T3JkZXJXaGVuU2FpZFNvMSkgeworICBNb2NrQSBhOworICBPTl9DQUxMKGEs
IFJldHVyblJlc3VsdChfKSkKKyAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybihSZXN1bHQoKSkp
OworCisgIFNlcXVlbmNlIHM7CisgIEVYUEVDVF9DQUxMKGEsIFJldHVyblJlc3VsdCgxKSkKKyAg
ICAgIC5JblNlcXVlbmNlKHMpOworICBFWFBFQ1RfQ0FMTChhLCBSZXR1cm5SZXN1bHQoMikpCisg
ICAgICAuSW5TZXF1ZW5jZShzKTsKKyAgRVhQRUNUX0NBTEwoYSwgUmV0dXJuUmVzdWx0KDMpKQor
ICAgICAgLkluU2VxdWVuY2Uocyk7CisKKyAgYS5SZXR1cm5SZXN1bHQoMSk7CisKKyAgLy8gTWF5
IG9ubHkgYmUgY2FsbGVkIGFmdGVyIGEuUmV0dXJuUmVzdWx0KDIpLgorICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRShhLlJldHVyblJlc3VsdCgzKSwgIlVuZXhwZWN0ZWQgbW9jayBmdW5jdGlvbiBj
YWxsIik7CisKKyAgYS5SZXR1cm5SZXN1bHQoMik7CisgIGEuUmV0dXJuUmVzdWx0KDMpOworfQor
CisvLyBUZXN0cyB0aGF0IHRoZSBjYWxscyBtdXN0IGJlIGluIHN0cmljdCBvcmRlciB3aGVuIGEg
Y29tcGxldGUgb3JkZXIKKy8vIGlzIHNwZWNpZmllZC4KK1RFU1QoU2VxdWVuY2VUZXN0LCBDYWxs
c011c3RCZUluU3RyaWN0T3JkZXJXaGVuU2FpZFNvMikgeworICBNb2NrQSBhOworICBPTl9DQUxM
KGEsIFJldHVyblJlc3VsdChfKSkKKyAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybihSZXN1bHQo
KSkpOworCisgIFNlcXVlbmNlIHM7CisgIEVYUEVDVF9DQUxMKGEsIFJldHVyblJlc3VsdCgxKSkK
KyAgICAgIC5JblNlcXVlbmNlKHMpOworICBFWFBFQ1RfQ0FMTChhLCBSZXR1cm5SZXN1bHQoMikp
CisgICAgICAuSW5TZXF1ZW5jZShzKTsKKworICAvLyBNYXkgb25seSBiZSBjYWxsZWQgYWZ0ZXIg
YS5SZXR1cm5SZXN1bHQoMSkuCisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKGEuUmV0dXJuUmVz
dWx0KDIpLCAiVW5leHBlY3RlZCBtb2NrIGZ1bmN0aW9uIGNhbGwiKTsKKworICBhLlJldHVyblJl
c3VsdCgxKTsKKyAgYS5SZXR1cm5SZXN1bHQoMik7Cit9CisKKy8vIFRlc3RzIHNwZWNpZnlpbmcg
YSBEQUcgdXNpbmcgbXVsdGlwbGUgc2VxdWVuY2VzLgorY2xhc3MgUGFydGlhbE9yZGVyVGVzdCA6
IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIFBhcnRpYWxPcmRlclRlc3Qo
KSB7CisgICAgT05fQ0FMTChhXywgUmV0dXJuUmVzdWx0KF8pKQorICAgICAgICAuV2lsbEJ5RGVm
YXVsdChSZXR1cm4oUmVzdWx0KCkpKTsKKworICAgIC8vIFNwZWNpZmllcyB0aGlzIHBhcnRpYWwg
b3JkZXJpbmc6CisgICAgLy8KKyAgICAvLyBhLlJldHVyblJlc3VsdCgxKSA9PT4KKyAgICAvLyAg
ICAgICAgICAgICAgICAgICAgICAgYS5SZXR1cm5SZXN1bHQoMikgKiBuICA9PT4gIGEuUmV0dXJu
UmVzdWx0KDMpCisgICAgLy8gYi5Eb0IoKSAqIDIgICAgICAgPT0+CisgICAgU2VxdWVuY2UgeCwg
eTsKKyAgICBFWFBFQ1RfQ0FMTChhXywgUmV0dXJuUmVzdWx0KDEpKQorICAgICAgICAuSW5TZXF1
ZW5jZSh4KTsKKyAgICBFWFBFQ1RfQ0FMTChiXywgRG9CKCkpCisgICAgICAgIC5UaW1lcygyKQor
ICAgICAgICAuSW5TZXF1ZW5jZSh5KTsKKyAgICBFWFBFQ1RfQ0FMTChhXywgUmV0dXJuUmVzdWx0
KDIpKQorICAgICAgICAuVGltZXMoQW55TnVtYmVyKCkpCisgICAgICAgIC5JblNlcXVlbmNlKHgs
IHkpOworICAgIEVYUEVDVF9DQUxMKGFfLCBSZXR1cm5SZXN1bHQoMykpCisgICAgICAgIC5JblNl
cXVlbmNlKHgpOworICB9CisKKyAgTW9ja0EgYV87CisgIE1vY2tCIGJfOworfTsKKworVEVTVF9G
KFBhcnRpYWxPcmRlclRlc3QsIENhbGxzTXVzdENvbmZvcm1Ub1NwZWNpZmllZERhZzEpIHsKKyAg
YV8uUmV0dXJuUmVzdWx0KDEpOworICBiXy5Eb0IoKTsKKworICAvLyBNYXkgb25seSBiZSBjYWxs
ZWQgYWZ0ZXIgdGhlIHNlY29uZCBEb0IoKS4KKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoYV8u
UmV0dXJuUmVzdWx0KDIpLCAiVW5leHBlY3RlZCBtb2NrIGZ1bmN0aW9uIGNhbGwiKTsKKworICBi
Xy5Eb0IoKTsKKyAgYV8uUmV0dXJuUmVzdWx0KDMpOworfQorCitURVNUX0YoUGFydGlhbE9yZGVy
VGVzdCwgQ2FsbHNNdXN0Q29uZm9ybVRvU3BlY2lmaWVkRGFnMikgeworICAvLyBNYXkgb25seSBi
ZSBjYWxsZWQgYWZ0ZXIgUmV0dXJuUmVzdWx0KDEpLgorICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RShhXy5SZXR1cm5SZXN1bHQoMiksICJVbmV4cGVjdGVkIG1vY2sgZnVuY3Rpb24gY2FsbCIpOwor
CisgIGFfLlJldHVyblJlc3VsdCgxKTsKKyAgYl8uRG9CKCk7CisgIGJfLkRvQigpOworICBhXy5S
ZXR1cm5SZXN1bHQoMyk7Cit9CisKK1RFU1RfRihQYXJ0aWFsT3JkZXJUZXN0LCBDYWxsc011c3RD
b25mb3JtVG9TcGVjaWZpZWREYWczKSB7CisgIC8vIE1heSBvbmx5IGJlIGNhbGxlZCBsYXN0Lgor
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShhXy5SZXR1cm5SZXN1bHQoMyksICJVbmV4cGVjdGVk
IG1vY2sgZnVuY3Rpb24gY2FsbCIpOworCisgIGFfLlJldHVyblJlc3VsdCgxKTsKKyAgYl8uRG9C
KCk7CisgIGJfLkRvQigpOworICBhXy5SZXR1cm5SZXN1bHQoMyk7Cit9CisKK1RFU1RfRihQYXJ0
aWFsT3JkZXJUZXN0LCBDYWxsc011c3RDb25mb3JtVG9TcGVjaWZpZWREYWc0KSB7CisgIGFfLlJl
dHVyblJlc3VsdCgxKTsKKyAgYl8uRG9CKCk7CisgIGJfLkRvQigpOworICBhXy5SZXR1cm5SZXN1
bHQoMyk7CisKKyAgLy8gTWF5IG9ubHkgYmUgY2FsbGVkIGJlZm9yZSBSZXR1cm5SZXN1bHQoMyku
CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKGFfLlJldHVyblJlc3VsdCgyKSwgIlVuZXhwZWN0
ZWQgbW9jayBmdW5jdGlvbiBjYWxsIik7Cit9CisKK1RFU1QoU2VxdWVuY2VUZXN0LCBSZXRpcmVt
ZW50KSB7CisgIE1vY2tBIGE7CisgIFNlcXVlbmNlIHM7CisKKyAgRVhQRUNUX0NBTEwoYSwgRG9B
KDEpKQorICAgICAgLkluU2VxdWVuY2Uocyk7CisgIEVYUEVDVF9DQUxMKGEsIERvQShfKSkKKyAg
ICAgIC5JblNlcXVlbmNlKHMpCisgICAgICAuUmV0aXJlc09uU2F0dXJhdGlvbigpOworICBFWFBF
Q1RfQ0FMTChhLCBEb0EoMSkpCisgICAgICAuSW5TZXF1ZW5jZShzKTsKKworICBhLkRvQSgxKTsK
KyAgYS5Eb0EoMik7CisgIGEuRG9BKDEpOworfQorCisvLyBUZXN0cyBFeHBlY3RhdGlvbi4KKwor
VEVTVChFeHBlY3RhdGlvblRlc3QsIENvbnN0cnV0b3JzV29yaykgeworICBNb2NrQSBhOworICBF
eHBlY3RhdGlvbiBlMTsgIC8vIERlZmF1bHQgY3Rvci4KKworICAvLyBDdG9yIGZyb20gdmFyaW91
cyBmb3JtcyBvZiBFWFBFQ1RfQ0FMTC4KKyAgRXhwZWN0YXRpb24gZTIgPSBFWFBFQ1RfQ0FMTChh
LCBEb0EoMikpOworICBFeHBlY3RhdGlvbiBlMyA9IEVYUEVDVF9DQUxMKGEsIERvQSgzKSkuV2l0
aChfKTsKKyAgeworICAgIFNlcXVlbmNlIHM7CisgICAgRXhwZWN0YXRpb24gZTQgPSBFWFBFQ1Rf
Q0FMTChhLCBEb0EoNCkpLlRpbWVzKDEpOworICAgIEV4cGVjdGF0aW9uIGU1ID0gRVhQRUNUX0NB
TEwoYSwgRG9BKDUpKS5JblNlcXVlbmNlKHMpOworICB9CisgIEV4cGVjdGF0aW9uIGU2ID0gRVhQ
RUNUX0NBTEwoYSwgRG9BKDYpKS5BZnRlcihlMik7CisgIEV4cGVjdGF0aW9uIGU3ID0gRVhQRUNU
X0NBTEwoYSwgRG9BKDcpKS5XaWxsT25jZShSZXR1cm4oKSk7CisgIEV4cGVjdGF0aW9uIGU4ID0g
RVhQRUNUX0NBTEwoYSwgRG9BKDgpKS5XaWxsUmVwZWF0ZWRseShSZXR1cm4oKSk7CisgIEV4cGVj
dGF0aW9uIGU5ID0gRVhQRUNUX0NBTEwoYSwgRG9BKDkpKS5SZXRpcmVzT25TYXR1cmF0aW9uKCk7
CisKKyAgRXhwZWN0YXRpb24gZTEwID0gZTI7ICAvLyBDb3B5IGN0b3IuCisKKyAgRVhQRUNUX1RI
QVQoZTEsIE5lKGUyKSk7CisgIEVYUEVDVF9USEFUKGUyLCBFcShlMTApKTsKKworICBhLkRvQSgy
KTsKKyAgYS5Eb0EoMyk7CisgIGEuRG9BKDQpOworICBhLkRvQSg1KTsKKyAgYS5Eb0EoNik7Cisg
IGEuRG9BKDcpOworICBhLkRvQSg4KTsKKyAgYS5Eb0EoOSk7Cit9CisKK1RFU1QoRXhwZWN0YXRp
b25UZXN0LCBBc3NpZ25tZW50V29ya3MpIHsKKyAgTW9ja0EgYTsKKyAgRXhwZWN0YXRpb24gZTE7
CisgIEV4cGVjdGF0aW9uIGUyID0gRVhQRUNUX0NBTEwoYSwgRG9BKDEpKTsKKworICBFWFBFQ1Rf
VEhBVChlMSwgTmUoZTIpKTsKKworICBlMSA9IGUyOworICBFWFBFQ1RfVEhBVChlMSwgRXEoZTIp
KTsKKworICBhLkRvQSgxKTsKK30KKworLy8gVGVzdHMgRXhwZWN0YXRpb25TZXQuCisKK1RFU1Qo
RXhwZWN0YXRpb25TZXRUZXN0LCBNZW1iZXJUeXBlc0FyZUNvcnJlY3QpIHsKKyAgOjp0ZXN0aW5n
OjpTdGF0aWNBc3NlcnRUeXBlRXE8RXhwZWN0YXRpb24sIEV4cGVjdGF0aW9uU2V0Ojp2YWx1ZV90
eXBlPigpOworfQorCitURVNUKEV4cGVjdGF0aW9uU2V0VGVzdCwgQ29uc3RydWN0b3JzV29yaykg
eworICBNb2NrQSBhOworCisgIEV4cGVjdGF0aW9uIGUxOworICBjb25zdCBFeHBlY3RhdGlvbiBl
MjsKKyAgRXhwZWN0YXRpb25TZXQgZXMxOyAgLy8gRGVmYXVsdCBjdG9yLgorICBFeHBlY3RhdGlv
blNldCBlczIgPSBFWFBFQ1RfQ0FMTChhLCBEb0EoMSkpOyAgLy8gQ3RvciBmcm9tIEVYUEVDVF9D
QUxMLgorICBFeHBlY3RhdGlvblNldCBlczMgPSBlMTsgIC8vIEN0b3IgZnJvbSBFeHBlY3RhdGlv
bi4KKyAgRXhwZWN0YXRpb25TZXQgZXM0KGUxKTsgICAvLyBDdG9yIGZyb20gRXhwZWN0YXRpb247
IGFsdGVybmF0aXZlIHN5bnRheC4KKyAgRXhwZWN0YXRpb25TZXQgZXM1ID0gZTI7ICAvLyBDdG9y
IGZyb20gY29uc3QgRXhwZWN0YXRpb24uCisgIEV4cGVjdGF0aW9uU2V0IGVzNihlMik7ICAgLy8g
Q3RvciBmcm9tIGNvbnN0IEV4cGVjdGF0aW9uOyBhbHRlcm5hdGl2ZSBzeW50YXguCisgIEV4cGVj
dGF0aW9uU2V0IGVzNyA9IGVzMjsgIC8vIENvcHkgY3Rvci4KKworICBFWFBFQ1RfRVEoMCwgZXMx
LnNpemUoKSk7CisgIEVYUEVDVF9FUSgxLCBlczIuc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKDEsIGVz
My5zaXplKCkpOworICBFWFBFQ1RfRVEoMSwgZXM0LnNpemUoKSk7CisgIEVYUEVDVF9FUSgxLCBl
czUuc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKDEsIGVzNi5zaXplKCkpOworICBFWFBFQ1RfRVEoMSwg
ZXM3LnNpemUoKSk7CisKKyAgRVhQRUNUX1RIQVQoZXMzLCBOZShlczIpKTsKKyAgRVhQRUNUX1RI
QVQoZXM0LCBFcShlczMpKTsKKyAgRVhQRUNUX1RIQVQoZXM1LCBFcShlczQpKTsKKyAgRVhQRUNU
X1RIQVQoZXM2LCBFcShlczUpKTsKKyAgRVhQRUNUX1RIQVQoZXM3LCBFcShlczIpKTsKKyAgYS5E
b0EoMSk7Cit9CisKK1RFU1QoRXhwZWN0YXRpb25TZXRUZXN0LCBBc3NpZ25tZW50V29ya3MpIHsK
KyAgRXhwZWN0YXRpb25TZXQgZXMxOworICBFeHBlY3RhdGlvblNldCBlczIgPSBFeHBlY3RhdGlv
bigpOworCisgIGVzMSA9IGVzMjsKKyAgRVhQRUNUX0VRKDEsIGVzMS5zaXplKCkpOworICBFWFBF
Q1RfVEhBVCgqKGVzMS5iZWdpbigpKSwgRXEoRXhwZWN0YXRpb24oKSkpOworICBFWFBFQ1RfVEhB
VChlczEsIEVxKGVzMikpOworfQorCitURVNUKEV4cGVjdGF0aW9uU2V0VGVzdCwgSW5zZXJ0aW9u
V29ya3MpIHsKKyAgRXhwZWN0YXRpb25TZXQgZXMxOworICBFeHBlY3RhdGlvbiBlMTsKKyAgZXMx
ICs9IGUxOworICBFWFBFQ1RfRVEoMSwgZXMxLnNpemUoKSk7CisgIEVYUEVDVF9USEFUKCooZXMx
LmJlZ2luKCkpLCBFcShlMSkpOworCisgIE1vY2tBIGE7CisgIEV4cGVjdGF0aW9uIGUyID0gRVhQ
RUNUX0NBTEwoYSwgRG9BKDEpKTsKKyAgZXMxICs9IGUyOworICBFWFBFQ1RfRVEoMiwgZXMxLnNp
emUoKSk7CisKKyAgRXhwZWN0YXRpb25TZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0MSA9IGVzMS5iZWdp
bigpOworICBFeHBlY3RhdGlvblNldDo6Y29uc3RfaXRlcmF0b3IgaXQyID0gaXQxOworICArK2l0
MjsKKyAgRVhQRUNUX1RSVUUoKml0MSA9PSBlMSB8fCAqaXQyID09IGUxKTsgIC8vIGUxIG11c3Qg
YmUgaW4gdGhlIHNldC4KKyAgRVhQRUNUX1RSVUUoKml0MSA9PSBlMiB8fCAqaXQyID09IGUyKTsg
IC8vIGUyIG11c3QgYmUgaW4gdGhlIHNldCB0b28uCisgIGEuRG9BKDEpOworfQorCitURVNUKEV4
cGVjdGF0aW9uU2V0VGVzdCwgU2l6ZVdvcmtzKSB7CisgIEV4cGVjdGF0aW9uU2V0IGVzOworICBF
WFBFQ1RfRVEoMCwgZXMuc2l6ZSgpKTsKKworICBlcyArPSBFeHBlY3RhdGlvbigpOworICBFWFBF
Q1RfRVEoMSwgZXMuc2l6ZSgpKTsKKworICBNb2NrQSBhOworICBlcyArPSBFWFBFQ1RfQ0FMTChh
LCBEb0EoMSkpOworICBFWFBFQ1RfRVEoMiwgZXMuc2l6ZSgpKTsKKworICBhLkRvQSgxKTsKK30K
KworVEVTVChFeHBlY3RhdGlvblNldFRlc3QsIElzRW51bWVyYWJsZSkgeworICBFeHBlY3RhdGlv
blNldCBlczsKKyAgRVhQRUNUX1RSVUUoZXMuYmVnaW4oKSA9PSBlcy5lbmQoKSk7CisKKyAgZXMg
Kz0gRXhwZWN0YXRpb24oKTsKKyAgRXhwZWN0YXRpb25TZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
ZXMuYmVnaW4oKTsKKyAgRVhQRUNUX1RSVUUoaXQgIT0gZXMuZW5kKCkpOworICBFWFBFQ1RfVEhB
VCgqaXQsIEVxKEV4cGVjdGF0aW9uKCkpKTsKKyAgKytpdDsKKyAgRVhQRUNUX1RSVUUoaXQ9PSBl
cy5lbmQoKSk7Cit9CisKKy8vIFRlc3RzIHRoZSAuQWZ0ZXIoKSBjbGF1c2UuCisKK1RFU1QoQWZ0
ZXJUZXN0LCBTdWNjZWVkc1doZW5QYXJ0aWFsT3JkZXJJc1NhdGlzZmllZCkgeworICBNb2NrQSBh
OworICBFeHBlY3RhdGlvblNldCBlczsKKyAgZXMgKz0gRVhQRUNUX0NBTEwoYSwgRG9BKDEpKTsK
KyAgZXMgKz0gRVhQRUNUX0NBTEwoYSwgRG9BKDIpKTsKKyAgRVhQRUNUX0NBTEwoYSwgRG9BKDMp
KQorICAgICAgLkFmdGVyKGVzKTsKKworICBhLkRvQSgxKTsKKyAgYS5Eb0EoMik7CisgIGEuRG9B
KDMpOworfQorCitURVNUKEFmdGVyVGVzdCwgU3VjY2VlZHNXaGVuVG90YWxPcmRlcklzU2F0aXNm
aWVkKSB7CisgIE1vY2tBIGE7CisgIE1vY2tCIGI7CisgIC8vIFRoZSBmb2xsb3dpbmcgYWxzbyB2
ZXJpZmllcyB0aGF0IGNvbnN0IEV4cGVjdGF0aW9uIG9iamVjdHMgd29yaworICAvLyB0b28uICBE
byBub3QgcmVtb3ZlIHRoZSBjb25zdCBtb2RpZmllcnMuCisgIGNvbnN0IEV4cGVjdGF0aW9uIGUx
ID0gRVhQRUNUX0NBTEwoYSwgRG9BKDEpKTsKKyAgY29uc3QgRXhwZWN0YXRpb24gZTIgPSBFWFBF
Q1RfQ0FMTChiLCBEb0IoKSkKKyAgICAgIC5UaW1lcygyKQorICAgICAgLkFmdGVyKGUxKTsKKyAg
RVhQRUNUX0NBTEwoYSwgRG9BKDIpKS5BZnRlcihlMik7CisKKyAgYS5Eb0EoMSk7CisgIGIuRG9C
KCk7CisgIGIuRG9CKCk7CisgIGEuRG9BKDIpOworfQorCisvLyBDYWxscyBtdXN0IGJlIGluIHN0
cmljdCBvcmRlciB3aGVuIHNwZWNpZmllZCBzbyB1c2luZyAuQWZ0ZXIoKS4KK1RFU1QoQWZ0ZXJU
ZXN0LCBDYWxsc011c3RCZUluU3RyaWN0T3JkZXJXaGVuU3BlY2lmaWVkU28xKSB7CisgIE1vY2tB
IGE7CisgIE1vY2tCIGI7CisKKyAgLy8gRGVmaW5lIG9yZGVyaW5nOgorICAvLyAgIGEuRG9BKDEp
ID09PiBiLkRvQigpID09PiBhLkRvQSgyKQorICBFeHBlY3RhdGlvbiBlMSA9IEVYUEVDVF9DQUxM
KGEsIERvQSgxKSk7CisgIEV4cGVjdGF0aW9uIGUyID0gRVhQRUNUX0NBTEwoYiwgRG9CKCkpCisg
ICAgICAuQWZ0ZXIoZTEpOworICBFWFBFQ1RfQ0FMTChhLCBEb0EoMikpCisgICAgICAuQWZ0ZXIo
ZTIpOworCisgIGEuRG9BKDEpOworCisgIC8vIE1heSBvbmx5IGJlIGNhbGxlZCBhZnRlciBEb0Io
KS4KKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoYS5Eb0EoMiksICJVbmV4cGVjdGVkIG1vY2sg
ZnVuY3Rpb24gY2FsbCIpOworCisgIGIuRG9CKCk7CisgIGEuRG9BKDIpOworfQorCisvLyBDYWxs
cyBtdXN0IGJlIGluIHN0cmljdCBvcmRlciB3aGVuIHNwZWNpZmllZCBzbyB1c2luZyAuQWZ0ZXIo
KS4KK1RFU1QoQWZ0ZXJUZXN0LCBDYWxsc011c3RCZUluU3RyaWN0T3JkZXJXaGVuU3BlY2lmaWVk
U28yKSB7CisgIE1vY2tBIGE7CisgIE1vY2tCIGI7CisKKyAgLy8gRGVmaW5lIG9yZGVyaW5nOgor
ICAvLyAgIGEuRG9BKDEpID09PiBiLkRvQigpICogMiA9PT4gYS5Eb0EoMikKKyAgRXhwZWN0YXRp
b24gZTEgPSBFWFBFQ1RfQ0FMTChhLCBEb0EoMSkpOworICBFeHBlY3RhdGlvbiBlMiA9IEVYUEVD
VF9DQUxMKGIsIERvQigpKQorICAgICAgLlRpbWVzKDIpCisgICAgICAuQWZ0ZXIoZTEpOworICBF
WFBFQ1RfQ0FMTChhLCBEb0EoMikpCisgICAgICAuQWZ0ZXIoZTIpOworCisgIGEuRG9BKDEpOwor
ICBiLkRvQigpOworCisgIC8vIE1heSBvbmx5IGJlIGNhbGxlZCBhZnRlciB0aGUgc2Vjb25kIERv
QigpLgorICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShhLkRvQSgyKSwgIlVuZXhwZWN0ZWQgbW9j
ayBmdW5jdGlvbiBjYWxsIik7CisKKyAgYi5Eb0IoKTsKKyAgYS5Eb0EoMik7Cit9CisKKy8vIENh
bGxzIG11c3Qgc2F0aXNmeSB0aGUgcGFydGlhbCBvcmRlciB3aGVuIHNwZWNpZmllZCBzby4KK1RF
U1QoQWZ0ZXJUZXN0LCBDYWxsc011c3RTYXRpc2Z5UGFydGlhbE9yZGVyV2hlblNwZWNpZmllZFNv
KSB7CisgIE1vY2tBIGE7CisgIE9OX0NBTEwoYSwgUmV0dXJuUmVzdWx0KF8pKQorICAgICAgLldp
bGxCeURlZmF1bHQoUmV0dXJuKFJlc3VsdCgpKSk7CisKKyAgLy8gRGVmaW5lIG9yZGVyaW5nOgor
ICAvLyAgIGEuRG9BKDEpID09PgorICAvLyAgIGEuRG9BKDIpID09PiBhLlJldHVyblJlc3VsdCgz
KQorICBFeHBlY3RhdGlvbiBlID0gRVhQRUNUX0NBTEwoYSwgRG9BKDEpKTsKKyAgY29uc3QgRXhw
ZWN0YXRpb25TZXQgZXMgPSBFWFBFQ1RfQ0FMTChhLCBEb0EoMikpOworICBFWFBFQ1RfQ0FMTChh
LCBSZXR1cm5SZXN1bHQoMykpCisgICAgICAuQWZ0ZXIoZSwgZXMpOworCisgIC8vIE1heSBvbmx5
IGJlIGNhbGxlZCBsYXN0LgorICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShhLlJldHVyblJlc3Vs
dCgzKSwgIlVuZXhwZWN0ZWQgbW9jayBmdW5jdGlvbiBjYWxsIik7CisKKyAgYS5Eb0EoMik7Cisg
IGEuRG9BKDEpOworICBhLlJldHVyblJlc3VsdCgzKTsKK30KKworLy8gQ2FsbHMgbXVzdCBzYXRp
c2Z5IHRoZSBwYXJ0aWFsIG9yZGVyIHdoZW4gc3BlY2lmaWVkIHNvLgorVEVTVChBZnRlclRlc3Qs
IENhbGxzTXVzdFNhdGlzZnlQYXJ0aWFsT3JkZXJXaGVuU3BlY2lmaWVkU28yKSB7CisgIE1vY2tB
IGE7CisKKyAgLy8gRGVmaW5lIG9yZGVyaW5nOgorICAvLyAgIGEuRG9BKDEpID09PgorICAvLyAg
IGEuRG9BKDIpID09PiBhLkRvQSgzKQorICBFeHBlY3RhdGlvbiBlID0gRVhQRUNUX0NBTEwoYSwg
RG9BKDEpKTsKKyAgY29uc3QgRXhwZWN0YXRpb25TZXQgZXMgPSBFWFBFQ1RfQ0FMTChhLCBEb0Eo
MikpOworICBFWFBFQ1RfQ0FMTChhLCBEb0EoMykpCisgICAgICAuQWZ0ZXIoZSwgZXMpOworCisg
IGEuRG9BKDIpOworCisgIC8vIE1heSBvbmx5IGJlIGNhbGxlZCBsYXN0LgorICBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRShhLkRvQSgzKSwgIlVuZXhwZWN0ZWQgbW9jayBmdW5jdGlvbiBjYWxsIik7
CisKKyAgYS5Eb0EoMSk7CisgIGEuRG9BKDMpOworfQorCisvLyAuQWZ0ZXIoKSBjYW4gYmUgY29t
YmluZWQgd2l0aCAuSW5TZXF1ZW5jZSgpLgorVEVTVChBZnRlclRlc3QsIENhbkJlVXNlZFdpdGhJ
blNlcXVlbmNlKSB7CisgIE1vY2tBIGE7CisgIFNlcXVlbmNlIHM7CisgIEV4cGVjdGF0aW9uIGUg
PSBFWFBFQ1RfQ0FMTChhLCBEb0EoMSkpOworICBFWFBFQ1RfQ0FMTChhLCBEb0EoMikpLkluU2Vx
dWVuY2Uocyk7CisgIEVYUEVDVF9DQUxMKGEsIERvQSgzKSkKKyAgICAgIC5JblNlcXVlbmNlKHMp
CisgICAgICAuQWZ0ZXIoZSk7CisKKyAgYS5Eb0EoMSk7CisKKyAgLy8gTWF5IG9ubHkgYmUgYWZ0
ZXIgRG9BKDIpLgorICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShhLkRvQSgzKSwgIlVuZXhwZWN0
ZWQgbW9jayBmdW5jdGlvbiBjYWxsIik7CisKKyAgYS5Eb0EoMik7CisgIGEuRG9BKDMpOworfQor
CisvLyAuQWZ0ZXIoKSBjYW4gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzLgorVEVTVChBZnRlclRl
c3QsIENhbkJlQ2FsbGVkTWFueVRpbWVzKSB7CisgIE1vY2tBIGE7CisgIEV4cGVjdGF0aW9uIGUx
ID0gRVhQRUNUX0NBTEwoYSwgRG9BKDEpKTsKKyAgRXhwZWN0YXRpb24gZTIgPSBFWFBFQ1RfQ0FM
TChhLCBEb0EoMikpOworICBFeHBlY3RhdGlvbiBlMyA9IEVYUEVDVF9DQUxMKGEsIERvQSgzKSk7
CisgIEVYUEVDVF9DQUxMKGEsIERvQSg0KSkKKyAgICAgIC5BZnRlcihlMSkKKyAgICAgIC5BZnRl
cihlMikKKyAgICAgIC5BZnRlcihlMyk7CisKKyAgYS5Eb0EoMyk7CisgIGEuRG9BKDEpOworICBh
LkRvQSgyKTsKKyAgYS5Eb0EoNCk7Cit9CisKKy8vIC5BZnRlcigpIGFjY2VwdHMgdXAgdG8gNSBh
cmd1bWVudHMuCitURVNUKEFmdGVyVGVzdCwgQWNjZXB0c1VwVG9GaXZlQXJndW1lbnRzKSB7Cisg
IE1vY2tBIGE7CisgIEV4cGVjdGF0aW9uIGUxID0gRVhQRUNUX0NBTEwoYSwgRG9BKDEpKTsKKyAg
RXhwZWN0YXRpb24gZTIgPSBFWFBFQ1RfQ0FMTChhLCBEb0EoMikpOworICBFeHBlY3RhdGlvbiBl
MyA9IEVYUEVDVF9DQUxMKGEsIERvQSgzKSk7CisgIEV4cGVjdGF0aW9uU2V0IGVzMSA9IEVYUEVD
VF9DQUxMKGEsIERvQSg0KSk7CisgIEV4cGVjdGF0aW9uU2V0IGVzMiA9IEVYUEVDVF9DQUxMKGEs
IERvQSg1KSk7CisgIEVYUEVDVF9DQUxMKGEsIERvQSg2KSkKKyAgICAgIC5BZnRlcihlMSwgZTIs
IGUzLCBlczEsIGVzMik7CisKKyAgYS5Eb0EoNSk7CisgIGEuRG9BKDIpOworICBhLkRvQSg0KTsK
KyAgYS5Eb0EoMSk7CisgIGEuRG9BKDMpOworICBhLkRvQSg2KTsKK30KKworLy8gLkFmdGVyKCkg
YWxsb3dzIGlucHV0IHRvIGNvbnRhaW4gZHVwbGljYXRlZCBFeHBlY3RhdGlvbnMuCitURVNUKEFm
dGVyVGVzdCwgQWNjZXB0c0R1cGxpY2F0ZWRJbnB1dCkgeworICBNb2NrQSBhOworICBPTl9DQUxM
KGEsIFJldHVyblJlc3VsdChfKSkKKyAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybihSZXN1bHQo
KSkpOworCisgIC8vIERlZmluZSBvcmRlcmluZzoKKyAgLy8gICBEb0EoMSkgPT0+CisgIC8vICAg
RG9BKDIpID09PiBSZXR1cm5SZXN1bHQoMykKKyAgRXhwZWN0YXRpb24gZTEgPSBFWFBFQ1RfQ0FM
TChhLCBEb0EoMSkpOworICBFeHBlY3RhdGlvbiBlMiA9IEVYUEVDVF9DQUxMKGEsIERvQSgyKSk7
CisgIEV4cGVjdGF0aW9uU2V0IGVzOworICBlcyArPSBlMTsKKyAgZXMgKz0gZTI7CisgIEVYUEVD
VF9DQUxMKGEsIFJldHVyblJlc3VsdCgzKSkKKyAgICAgIC5BZnRlcihlMSwgZTIsIGVzLCBlMSk7
CisKKyAgYS5Eb0EoMSk7CisKKyAgLy8gTWF5IG9ubHkgYmUgYWZ0ZXIgRG9BKDIpLgorICBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRShhLlJldHVyblJlc3VsdCgzKSwgIlVuZXhwZWN0ZWQgbW9jayBm
dW5jdGlvbiBjYWxsIik7CisKKyAgYS5Eb0EoMik7CisgIGEuUmV0dXJuUmVzdWx0KDMpOworfQor
CisvLyBBbiBFeHBlY3RhdGlvbiBhZGRlZCB0byBhbiBFeHBlY3RhdGlvblNldCBhZnRlciBpdCBo
YXMgYmVlbiB1c2VkIGluCisvLyBhbiAuQWZ0ZXIoKSBoYXMgbm8gZWZmZWN0LgorVEVTVChBZnRl
clRlc3QsIENoYW5nZXNUb0V4cGVjdGF0aW9uU2V0SGF2ZU5vRWZmZWN0QWZ0ZXJ3YXJkcykgewor
ICBNb2NrQSBhOworICBFeHBlY3RhdGlvblNldCBlczEgPSBFWFBFQ1RfQ0FMTChhLCBEb0EoMSkp
OworICBFeHBlY3RhdGlvbiBlMiA9IEVYUEVDVF9DQUxMKGEsIERvQSgyKSk7CisgIEVYUEVDVF9D
QUxMKGEsIERvQSgzKSkKKyAgICAgIC5BZnRlcihlczEpOworICBlczEgKz0gZTI7CisKKyAgYS5E
b0EoMSk7CisgIGEuRG9BKDMpOworICBhLkRvQSgyKTsKK30KKworLy8gVGVzdHMgdGhhdCBHb29n
bGUgTW9jayBjb3JyZWN0bHkgaGFuZGxlcyBjYWxscyB0byBtb2NrIGZ1bmN0aW9ucworLy8gYWZ0
ZXIgYSBtb2NrIG9iamVjdCBvd25pbmcgb25lIG9mIHRoZWlyIHByZS1yZXF1aXNpdGVzIGhhcyBk
aWVkLgorCisvLyBUZXN0cyB0aGF0IGNhbGxzIHRoYXQgc2F0aXNmeSB0aGUgb3JpZ2luYWwgc3Bl
YyBhcmUgc3VjY2Vzc2Z1bC4KK1RFU1QoRGVsZXRpbmdNb2NrRWFybHlUZXN0LCBTdWNjZXNzMSkg
eworICBNb2NrQiogY29uc3QgYjEgPSBuZXcgTW9ja0I7CisgIE1vY2tBKiBjb25zdCBhID0gbmV3
IE1vY2tBOworICBNb2NrQiogY29uc3QgYjIgPSBuZXcgTW9ja0I7CisKKyAgeworICAgIEluU2Vx
dWVuY2UgZHVtbXk7CisgICAgRVhQRUNUX0NBTEwoKmIxLCBEb0IoXykpCisgICAgICAgIC5XaWxs
T25jZShSZXR1cm4oMSkpOworICAgIEVYUEVDVF9DQUxMKCphLCBCaW5hcnkoXywgXykpCisgICAg
ICAgIC5UaW1lcyhBbnlOdW1iZXIoKSkKKyAgICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybih0
cnVlKSk7CisgICAgRVhQRUNUX0NBTEwoKmIyLCBEb0IoXykpCisgICAgICAgIC5UaW1lcyhBbnlO
dW1iZXIoKSkKKyAgICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybigyKSk7CisgIH0KKworICBF
WFBFQ1RfRVEoMSwgYjEtPkRvQigxKSk7CisgIGRlbGV0ZSBiMTsKKyAgLy8gYSdzIHByZS1yZXF1
aXNpdGUgaGFzIGRpZWQuCisgIEVYUEVDVF9UUlVFKGEtPkJpbmFyeSgwLCAxKSk7CisgIGRlbGV0
ZSBiMjsKKyAgLy8gYSdzIHN1Y2Nlc3NvciBoYXMgZGllZC4KKyAgRVhQRUNUX1RSVUUoYS0+Qmlu
YXJ5KDEsIDIpKTsKKyAgZGVsZXRlIGE7Cit9CisKKy8vIFRlc3RzIHRoYXQgY2FsbHMgdGhhdCBz
YXRpc2Z5IHRoZSBvcmlnaW5hbCBzcGVjIGFyZSBzdWNjZXNzZnVsLgorVEVTVChEZWxldGluZ01v
Y2tFYXJseVRlc3QsIFN1Y2Nlc3MyKSB7CisgIE1vY2tCKiBjb25zdCBiMSA9IG5ldyBNb2NrQjsK
KyAgTW9ja0EqIGNvbnN0IGEgPSBuZXcgTW9ja0E7CisgIE1vY2tCKiBjb25zdCBiMiA9IG5ldyBN
b2NrQjsKKworICB7CisgICAgSW5TZXF1ZW5jZSBkdW1teTsKKyAgICBFWFBFQ1RfQ0FMTCgqYjEs
IERvQihfKSkKKyAgICAgICAgLldpbGxPbmNlKFJldHVybigxKSk7CisgICAgRVhQRUNUX0NBTEwo
KmEsIEJpbmFyeShfLCBfKSkKKyAgICAgICAgLlRpbWVzKEFueU51bWJlcigpKTsKKyAgICBFWFBF
Q1RfQ0FMTCgqYjIsIERvQihfKSkKKyAgICAgICAgLlRpbWVzKEFueU51bWJlcigpKQorICAgICAg
ICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKDIpKTsKKyAgfQorCisgIGRlbGV0ZSBhOyAgLy8gYSBp
cyB0cml2aWFsbHkgc2F0aXNmaWVkLgorICBFWFBFQ1RfRVEoMSwgYjEtPkRvQigxKSk7CisgIEVY
UEVDVF9FUSgyLCBiMi0+RG9CKDIpKTsKKyAgZGVsZXRlIGIxOworICBkZWxldGUgYjI7Cit9CisK
Ky8vIFRlc3RzIHRoYXQgaXQncyBPSyB0byBkZWxldGUgYSBtb2NrIG9iamVjdCBpdHNlbGYgaW4g
aXRzIGFjdGlvbi4KKworLy8gU3VwcHJlc3NlcyB3YXJuaW5nIG9uIHVucmVmZXJlbmNlZCBmb3Jt
YWwgcGFyYW1ldGVyIGluIE1TVkMgd2l0aAorLy8gLVc0LgorI2lmZGVmIF9NU0NfVkVSCisjIHBy
YWdtYSB3YXJuaW5nKHB1c2gpCisjIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEwMCkKKyNlbmRp
ZgorCitBQ1RJT05fUChEZWxldGUsIHB0cikgeyBkZWxldGUgcHRyOyB9CisKKyNpZmRlZiBfTVND
X1ZFUgorIyBwcmFnbWEgd2FybmluZyhwb3ApCisjZW5kaWYKKworVEVTVChEZWxldGluZ01vY2tF
YXJseVRlc3QsIENhbkRlbGV0ZVNlbGZJbkFjdGlvblJldHVybmluZ1ZvaWQpIHsKKyAgTW9ja0Eq
IGNvbnN0IGEgPSBuZXcgTW9ja0E7CisgIEVYUEVDVF9DQUxMKCphLCBEb0EoXykpLldpbGxPbmNl
KERlbGV0ZShhKSk7CisgIGEtPkRvQSg0Mik7ICAvLyBUaGlzIHdpbGwgY2F1c2UgYSB0byBiZSBk
ZWxldGVkLgorfQorCitURVNUKERlbGV0aW5nTW9ja0Vhcmx5VGVzdCwgQ2FuRGVsZXRlU2VsZklu
QWN0aW9uUmV0dXJuaW5nVmFsdWUpIHsKKyAgTW9ja0EqIGNvbnN0IGEgPSBuZXcgTW9ja0E7Cisg
IEVYUEVDVF9DQUxMKCphLCBSZXR1cm5SZXN1bHQoXykpCisgICAgICAuV2lsbE9uY2UoRG9BbGwo
RGVsZXRlKGEpLCBSZXR1cm4oUmVzdWx0KCkpKSk7CisgIGEtPlJldHVyblJlc3VsdCg0Mik7ICAv
LyBUaGlzIHdpbGwgY2F1c2UgYSB0byBiZSBkZWxldGVkLgorfQorCisvLyBUZXN0cyB0aGF0IGNh
bGxzIHRoYXQgdmlvbGF0ZSB0aGUgb3JpZ2luYWwgc3BlYyB5aWVsZCBmYWlsdXJlcy4KK1RFU1Qo
RGVsZXRpbmdNb2NrRWFybHlUZXN0LCBGYWlsdXJlMSkgeworICBNb2NrQiogY29uc3QgYjEgPSBu
ZXcgTW9ja0I7CisgIE1vY2tBKiBjb25zdCBhID0gbmV3IE1vY2tBOworICBNb2NrQiogY29uc3Qg
YjIgPSBuZXcgTW9ja0I7CisKKyAgeworICAgIEluU2VxdWVuY2UgZHVtbXk7CisgICAgRVhQRUNU
X0NBTEwoKmIxLCBEb0IoXykpCisgICAgICAgIC5XaWxsT25jZShSZXR1cm4oMSkpOworICAgIEVY
UEVDVF9DQUxMKCphLCBCaW5hcnkoXywgXykpCisgICAgICAgIC5UaW1lcyhBbnlOdW1iZXIoKSk7
CisgICAgRVhQRUNUX0NBTEwoKmIyLCBEb0IoXykpCisgICAgICAgIC5UaW1lcyhBbnlOdW1iZXIo
KSkKKyAgICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybigyKSk7CisgIH0KKworICBkZWxldGUg
YTsgIC8vIGEgaXMgdHJpdmlhbGx5IHNhdGlzZmllZC4KKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoeworICAgIGIyLT5Eb0IoMik7CisgIH0sICJVbmV4cGVjdGVkIG1vY2sgZnVuY3Rpb24gY2Fs
bCIpOworICBFWFBFQ1RfRVEoMSwgYjEtPkRvQigxKSk7CisgIGRlbGV0ZSBiMTsKKyAgZGVsZXRl
IGIyOworfQorCisvLyBUZXN0cyB0aGF0IGNhbGxzIHRoYXQgdmlvbGF0ZSB0aGUgb3JpZ2luYWwg
c3BlYyB5aWVsZCBmYWlsdXJlcy4KK1RFU1QoRGVsZXRpbmdNb2NrRWFybHlUZXN0LCBGYWlsdXJl
MikgeworICBNb2NrQiogY29uc3QgYjEgPSBuZXcgTW9ja0I7CisgIE1vY2tBKiBjb25zdCBhID0g
bmV3IE1vY2tBOworICBNb2NrQiogY29uc3QgYjIgPSBuZXcgTW9ja0I7CisKKyAgeworICAgIElu
U2VxdWVuY2UgZHVtbXk7CisgICAgRVhQRUNUX0NBTEwoKmIxLCBEb0IoXykpOworICAgIEVYUEVD
VF9DQUxMKCphLCBCaW5hcnkoXywgXykpCisgICAgICAgIC5UaW1lcyhBbnlOdW1iZXIoKSk7Cisg
ICAgRVhQRUNUX0NBTEwoKmIyLCBEb0IoXykpCisgICAgICAgIC5UaW1lcyhBbnlOdW1iZXIoKSk7
CisgIH0KKworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShkZWxldGUgYjEsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICJBY3R1YWw6IG5ldmVyIGNhbGxlZCIpOworICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRShhLT5CaW5hcnkoMCwgMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICJV
bmV4cGVjdGVkIG1vY2sgZnVuY3Rpb24gY2FsbCIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RShiMi0+RG9CKDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5leHBlY3RlZCBtb2Nr
IGZ1bmN0aW9uIGNhbGwiKTsKKyAgZGVsZXRlIGE7CisgIGRlbGV0ZSBiMjsKK30KKworY2xhc3Mg
RXZlbk51bWJlckNhcmRpbmFsaXR5IDogcHVibGljIENhcmRpbmFsaXR5SW50ZXJmYWNlIHsKKyBw
dWJsaWM6CisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgY2FsbF9jb3VudCBjYWxscyB3aWxsIHNhdGlz
ZnkgdGhpcyBjYXJkaW5hbGl0eS4KKyAgdmlydHVhbCBib29sIElzU2F0aXNmaWVkQnlDYWxsQ291
bnQoaW50IGNhbGxfY291bnQpIGNvbnN0IHsKKyAgICByZXR1cm4gY2FsbF9jb3VudCAlIDIgPT0g
MDsKKyAgfQorCisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgY2FsbF9jb3VudCBjYWxscyB3aWxsIHNh
dHVyYXRlIHRoaXMgY2FyZGluYWxpdHkuCisgIHZpcnR1YWwgYm9vbCBJc1NhdHVyYXRlZEJ5Q2Fs
bENvdW50KGludCAvKiBjYWxsX2NvdW50ICovKSBjb25zdCB7CisgICAgcmV0dXJuIGZhbHNlOwor
ICB9CisKKyAgLy8gRGVzY3JpYmVzIHNlbGYgdG8gYW4gb3N0cmVhbS4KKyAgdmlydHVhbCB2b2lk
IERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7CisgICAgKm9zIDw8ICJjYWxs
ZWQgZXZlbiBudW1iZXIgb2YgdGltZXMiOworICB9Cit9OworCitDYXJkaW5hbGl0eSBFdmVuTnVt
YmVyKCkgeworICByZXR1cm4gQ2FyZGluYWxpdHkobmV3IEV2ZW5OdW1iZXJDYXJkaW5hbGl0eSk7
Cit9CisKK1RFU1QoRXhwZWN0YXRpb25CYXNlVGVzdCwKKyAgICAgQWxsUHJlcmVxdWlzaXRlc0Fy
ZVNhdGlzZmllZFdvcmtzRm9yTm9uTW9ub3RvbmljQ2FyZGluYWxpdHkpIHsKKyAgTW9ja0EqIGEg
PSBuZXcgTW9ja0E7CisgIFNlcXVlbmNlIHM7CisKKyAgRVhQRUNUX0NBTEwoKmEsIERvQSgxKSkK
KyAgICAgIC5UaW1lcyhFdmVuTnVtYmVyKCkpCisgICAgICAuSW5TZXF1ZW5jZShzKTsKKyAgRVhQ
RUNUX0NBTEwoKmEsIERvQSgyKSkKKyAgICAgIC5UaW1lcyhBbnlOdW1iZXIoKSkKKyAgICAgIC5J
blNlcXVlbmNlKHMpOworICBFWFBFQ1RfQ0FMTCgqYSwgRG9BKDMpKQorICAgICAgLlRpbWVzKEFu
eU51bWJlcigpKTsKKworICBhLT5Eb0EoMyk7CisgIGEtPkRvQSgxKTsKKyAgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoYS0+RG9BKDIpLCAiVW5leHBlY3RlZCBtb2NrIGZ1bmN0aW9uIGNhbGwiKTsK
KyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoZGVsZXRlIGEsICJ0byBiZSBjYWxsZWQgZXZlbiBu
dW1iZXIgb2YgdGltZXMiKTsKK30KKworLy8gVGhlIGZvbGxvd2luZyB0ZXN0cyB2ZXJpZnkgdGhl
IG1lc3NhZ2UgZ2VuZXJhdGVkIHdoZW4gYSBtb2NrCisvLyBmdW5jdGlvbiBpcyBjYWxsZWQuCisK
K3N0cnVjdCBQcmludGFibGUgeworfTsKKworaW5saW5lIHZvaWQgb3BlcmF0b3I8PCg6OnN0ZDo6
b3N0cmVhbSYgb3MsIGNvbnN0IFByaW50YWJsZSYpIHsKKyAgb3MgPDwgIlByaW50YWJsZSI7Cit9
CisKK3N0cnVjdCBVbnByaW50YWJsZSB7CisgIFVucHJpbnRhYmxlKCkgOiB2YWx1ZSgwKSB7fQor
ICBpbnQgdmFsdWU7Cit9OworCitjbGFzcyBNb2NrQyB7CisgcHVibGljOgorICBNb2NrQygpIHt9
CisKKyAgTU9DS19NRVRIT0Q2KFZvaWRNZXRob2QsIHZvaWQoYm9vbCBjb25kLCBpbnQgbiwgc3Rk
OjpzdHJpbmcgcywgdm9pZCogcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgUHJpbnRhYmxlJiB4LCBVbnByaW50YWJsZSB5KSk7CisgIE1PQ0tfTUVUSE9EMChOb25Wb2lk
TWV0aG9kLCBpbnQoKSk7ICAvLyBOT0xJTlQKKworIHByaXZhdGU6CisgIEdURVNUX0RJU0FMTE9X
X0NPUFlfQU5EX0FTU0lHTl8oTW9ja0MpOworfTsKKworY2xhc3MgVmVyYm9zZUZsYWdQcmVzZXJ2
aW5nRml4dHVyZSA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIFZlcmJv
c2VGbGFnUHJlc2VydmluZ0ZpeHR1cmUoKQorICAgICAgOiBzYXZlZF92ZXJib3NlX2ZsYWdfKEdN
T0NLX0ZMQUcodmVyYm9zZSkpIHt9CisKKyAgflZlcmJvc2VGbGFnUHJlc2VydmluZ0ZpeHR1cmUo
KSB7IEdNT0NLX0ZMQUcodmVyYm9zZSkgPSBzYXZlZF92ZXJib3NlX2ZsYWdfOyB9CisKKyBwcml2
YXRlOgorICBjb25zdCBzdGQ6OnN0cmluZyBzYXZlZF92ZXJib3NlX2ZsYWdfOworCisgIEdURVNU
X0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVmVyYm9zZUZsYWdQcmVzZXJ2aW5nRml4dHVyZSk7
Cit9OworCisjaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgorCisvLyBUZXN0cyB0aGF0
IGFuIHVuaW50ZXJlc3RpbmcgbW9jayBmdW5jdGlvbiBjYWxsIG9uIGEgbmFnZ3kgbW9jaworLy8g
Z2VuZXJhdGVzIGEgd2FybmluZyB3aXRob3V0IHRoZSBzdGFjayB0cmFjZSB3aGVuCisvLyAtLWdt
b2NrX3ZlcmJvc2U9d2FybmluZyBpcyBzcGVjaWZpZWQuCitURVNUKEZ1bmN0aW9uQ2FsbE1lc3Nh
Z2VUZXN0LAorICAgICBVbmludGVyZXN0aW5nQ2FsbE9uTmFnZ3lNb2NrR2VuZXJhdGVzTm9TdGFj
a1RyYWNlV2hlblZlcmJvc2VXYXJuaW5nKSB7CisgIEdNT0NLX0ZMQUcodmVyYm9zZSkgPSBrV2Fy
bmluZ1ZlcmJvc2l0eTsKKyAgTmFnZ3lNb2NrPE1vY2tDPiBjOworICBDYXB0dXJlU3Rkb3V0KCk7
CisgIGMuVm9pZE1ldGhvZChmYWxzZSwgNSwgIkhpIiwgTlVMTCwgUHJpbnRhYmxlKCksIFVucHJp
bnRhYmxlKCkpOworICBjb25zdCBzdGQ6OnN0cmluZyBvdXRwdXQgPSBHZXRDYXB0dXJlZFN0ZG91
dCgpOworICBFWFBFQ1RfUFJFRF9GT1JNQVQyKElzU3Vic3RyaW5nLCAiR01PQ0sgV0FSTklORyIs
IG91dHB1dCk7CisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoSXNOb3RTdWJzdHJpbmcsICJTdGFjayB0
cmFjZToiLCBvdXRwdXQpOworfQorCisvLyBUZXN0cyB0aGF0IGFuIHVuaW50ZXJlc3RpbmcgbW9j
ayBmdW5jdGlvbiBjYWxsIG9uIGEgbmFnZ3kgbW9jaworLy8gZ2VuZXJhdGVzIGEgd2FybmluZyBj
b250YWluaW5nIHRoZSBzdGFjayB0cmFjZSB3aGVuCisvLyAtLWdtb2NrX3ZlcmJvc2U9aW5mbyBp
cyBzcGVjaWZpZWQuCitURVNUKEZ1bmN0aW9uQ2FsbE1lc3NhZ2VUZXN0LAorICAgICBVbmludGVy
ZXN0aW5nQ2FsbE9uTmFnZ3lNb2NrR2VuZXJhdGVzRnlpV2l0aFN0YWNrVHJhY2VXaGVuVmVyYm9z
ZUluZm8pIHsKKyAgR01PQ0tfRkxBRyh2ZXJib3NlKSA9IGtJbmZvVmVyYm9zaXR5OworICBOYWdn
eU1vY2s8TW9ja0M+IGM7CisgIENhcHR1cmVTdGRvdXQoKTsKKyAgYy5Wb2lkTWV0aG9kKGZhbHNl
LCA1LCAiSGkiLCBOVUxMLCBQcmludGFibGUoKSwgVW5wcmludGFibGUoKSk7CisgIGNvbnN0IHN0
ZDo6c3RyaW5nIG91dHB1dCA9IEdldENhcHR1cmVkU3Rkb3V0KCk7CisgIEVYUEVDVF9QUkVEX0ZP
Uk1BVDIoSXNTdWJzdHJpbmcsICJHTU9DSyBXQVJOSU5HIiwgb3V0cHV0KTsKKyAgRVhQRUNUX1BS
RURfRk9STUFUMihJc1N1YnN0cmluZywgIlN0YWNrIHRyYWNlOiIsIG91dHB1dCk7CisKKyMgaWZu
ZGVmIE5ERUJVRworCisgIC8vIFdlIGNoZWNrIHRoZSBzdGFjayB0cmFjZSBjb250ZW50IGluIGRi
Zy1tb2RlIG9ubHksIGFzIG9wdC1tb2RlCisgIC8vIG1heSBpbmxpbmUgdGhlIGNhbGwgd2UgYXJl
IGludGVyZXN0ZWQgaW4gc2VlaW5nLgorCisgIC8vIFZlcmlmaWVzIHRoYXQgYSB2b2lkIG1vY2sg
ZnVuY3Rpb24ncyBuYW1lIGFwcGVhcnMgaW4gdGhlIHN0YWNrCisgIC8vIHRyYWNlLgorICBFWFBF
Q1RfUFJFRF9GT1JNQVQyKElzU3Vic3RyaW5nLCAiVm9pZE1ldGhvZCgiLCBvdXRwdXQpOworCisg
IC8vIFZlcmlmaWVzIHRoYXQgYSBub24tdm9pZCBtb2NrIGZ1bmN0aW9uJ3MgbmFtZSBhcHBlYXJz
IGluIHRoZQorICAvLyBzdGFjayB0cmFjZS4KKyAgQ2FwdHVyZVN0ZG91dCgpOworICBjLk5vblZv
aWRNZXRob2QoKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgb3V0cHV0MiA9IEdldENhcHR1cmVkU3Rk
b3V0KCk7CisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoSXNTdWJzdHJpbmcsICJOb25Wb2lkTWV0aG9k
KCIsIG91dHB1dDIpOworCisjIGVuZGlmICAvLyBOREVCVUcKK30KKworLy8gVGVzdHMgdGhhdCBh
biB1bmludGVyZXN0aW5nIG1vY2sgZnVuY3Rpb24gY2FsbCBvbiBhIG5hZ2d5IG1vY2sKKy8vIGNh
dXNlcyB0aGUgZnVuY3Rpb24gYXJndW1lbnRzIGFuZCByZXR1cm4gdmFsdWUgdG8gYmUgcHJpbnRl
ZC4KK1RFU1QoRnVuY3Rpb25DYWxsTWVzc2FnZVRlc3QsCisgICAgIFVuaW50ZXJlc3RpbmdDYWxs
T25OYWdneU1vY2tQcmludHNBcmd1bWVudHNBbmRSZXR1cm5WYWx1ZSkgeworICAvLyBBIG5vbi12
b2lkIG1vY2sgZnVuY3Rpb24uCisgIE5hZ2d5TW9jazxNb2NrQj4gYjsKKyAgQ2FwdHVyZVN0ZG91
dCgpOworICBiLkRvQigpOworICBjb25zdCBzdGQ6OnN0cmluZyBvdXRwdXQxID0gR2V0Q2FwdHVy
ZWRTdGRvdXQoKTsKKyAgRVhQRUNUX1BSRURfRk9STUFUMigKKyAgICAgIElzU3Vic3RyaW5nLAor
ICAgICAgIlVuaW50ZXJlc3RpbmcgbW9jayBmdW5jdGlvbiBjYWxsIC0gcmV0dXJuaW5nIGRlZmF1
bHQgdmFsdWUuXG4iCisgICAgICAiICAgIEZ1bmN0aW9uIGNhbGw6IERvQigpXG4iCisgICAgICAi
ICAgICAgICAgIFJldHVybnM6IDBcbiIsIG91dHB1dDEuY19zdHIoKSk7CisgIC8vIE1ha2VzIHN1
cmUgdGhlIHJldHVybiB2YWx1ZSBpcyBwcmludGVkLgorCisgIC8vIEEgdm9pZCBtb2NrIGZ1bmN0
aW9uLgorICBOYWdneU1vY2s8TW9ja0M+IGM7CisgIENhcHR1cmVTdGRvdXQoKTsKKyAgYy5Wb2lk
TWV0aG9kKGZhbHNlLCA1LCAiSGkiLCBOVUxMLCBQcmludGFibGUoKSwgVW5wcmludGFibGUoKSk7
CisgIGNvbnN0IHN0ZDo6c3RyaW5nIG91dHB1dDIgPSBHZXRDYXB0dXJlZFN0ZG91dCgpOworICBF
WFBFQ1RfVEhBVChvdXRwdXQyLmNfc3RyKCksCisgICAgICAgICAgICAgIENvbnRhaW5zUmVnZXgo
CisgICAgICAgICAgICAgICAgICAiVW5pbnRlcmVzdGluZyBtb2NrIGZ1bmN0aW9uIGNhbGwgLSBy
ZXR1cm5pbmcgZGlyZWN0bHlcXC5cbiIKKyAgICAgICAgICAgICAgICAgICIgICAgRnVuY3Rpb24g
Y2FsbDogVm9pZE1ldGhvZCIKKyAgICAgICAgICAgICAgICAgICJcXChmYWxzZSwgNSwgXCJIaVwi
LCBOVUxMLCBALisgIgorICAgICAgICAgICAgICAgICAgIlByaW50YWJsZSwgNC1ieXRlIG9iamVj
dCA8MDAtMDAgMDAtMDA+XFwpIikpOworICAvLyBBIHZvaWQgZnVuY3Rpb24gaGFzIG5vIHJldHVy
biB2YWx1ZSB0byBwcmludC4KK30KKworLy8gVGVzdHMgaG93IHRoZSAtLWdtb2NrX3ZlcmJvc2Ug
ZmxhZyBhZmZlY3RzIEdvb2dsZSBNb2NrJ3Mgb3V0cHV0LgorCitjbGFzcyBHTW9ja1ZlcmJvc2VG
bGFnVGVzdCA6IHB1YmxpYyBWZXJib3NlRmxhZ1ByZXNlcnZpbmdGaXh0dXJlIHsKKyBwdWJsaWM6
CisgIC8vIFZlcmlmaWVzIHRoYXQgdGhlIGdpdmVuIEdvb2dsZSBNb2NrIG91dHB1dCBpcyBjb3Jy
ZWN0LiAgKFdoZW4KKyAgLy8gc2hvdWxkX3ByaW50IGlzIHRydWUsIHRoZSBvdXRwdXQgc2hvdWxk
IG1hdGNoIHRoZSBnaXZlbiByZWdleCBhbmQKKyAgLy8gY29udGFpbiB0aGUgZ2l2ZW4gZnVuY3Rp
b24gbmFtZSBpbiB0aGUgc3RhY2sgdHJhY2UuICBXaGVuIGl0J3MKKyAgLy8gZmFsc2UsIHRoZSBv
dXRwdXQgc2hvdWxkIGJlIGVtcHR5LikKKyAgdm9pZCBWZXJpZnlPdXRwdXQoY29uc3Qgc3RkOjpz
dHJpbmcmIG91dHB1dCwgYm9vbCBzaG91bGRfcHJpbnQsCisgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiBleHBlY3RlZF9zdWJzdHJpbmcsCisgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiBmdW5jdGlvbl9uYW1lKSB7CisgICAgaWYgKHNob3VsZF9wcmlu
dCkgeworICAgICAgRVhQRUNUX1RIQVQob3V0cHV0LmNfc3RyKCksIEhhc1N1YnN0cihleHBlY3Rl
ZF9zdWJzdHJpbmcpKTsKKyMgaWZuZGVmIE5ERUJVRworICAgICAgLy8gV2UgY2hlY2sgdGhlIHN0
YWNrIHRyYWNlIGNvbnRlbnQgaW4gZGJnLW1vZGUgb25seSwgYXMgb3B0LW1vZGUKKyAgICAgIC8v
IG1heSBpbmxpbmUgdGhlIGNhbGwgd2UgYXJlIGludGVyZXN0ZWQgaW4gc2VlaW5nLgorICAgICAg
RVhQRUNUX1RIQVQob3V0cHV0LmNfc3RyKCksIEhhc1N1YnN0cihmdW5jdGlvbl9uYW1lKSk7Cisj
IGVsc2UKKyAgICAgIC8vIFN1cHByZXNzZXMgJ3VudXNlZCBmdW5jdGlvbiBwYXJhbWV0ZXInIHdh
cm5pbmdzLgorICAgICAgc3RhdGljX2Nhc3Q8dm9pZD4oZnVuY3Rpb25fbmFtZSk7CisjIGVuZGlm
ICAvLyBOREVCVUcKKyAgICB9IGVsc2UgeworICAgICAgRVhQRUNUX1NUUkVRKCIiLCBvdXRwdXQu
Y19zdHIoKSk7CisgICAgfQorICB9CisKKyAgLy8gVGVzdHMgaG93IHRoZSBmbGFnIGFmZmVjdHMg
ZXhwZWN0ZWQgY2FsbHMuCisgIHZvaWQgVGVzdEV4cGVjdGVkQ2FsbChib29sIHNob3VsZF9wcmlu
dCkgeworICAgIE1vY2tBIGE7CisgICAgRVhQRUNUX0NBTEwoYSwgRG9BKDUpKTsKKyAgICBFWFBF
Q1RfQ0FMTChhLCBCaW5hcnkoXywgMSkpCisgICAgICAgIC5XaWxsT25jZShSZXR1cm4odHJ1ZSkp
OworCisgICAgLy8gQSB2b2lkLXJldHVybmluZyBmdW5jdGlvbi4KKyAgICBDYXB0dXJlU3Rkb3V0
KCk7CisgICAgYS5Eb0EoNSk7CisgICAgVmVyaWZ5T3V0cHV0KAorICAgICAgICBHZXRDYXB0dXJl
ZFN0ZG91dCgpLAorICAgICAgICBzaG91bGRfcHJpbnQsCisgICAgICAgICJNb2NrIGZ1bmN0aW9u
IGNhbGwgbWF0Y2hlcyBFWFBFQ1RfQ0FMTChhLCBEb0EoNSkpLi4uXG4iCisgICAgICAgICIgICAg
RnVuY3Rpb24gY2FsbDogRG9BKDUpXG4iCisgICAgICAgICJTdGFjayB0cmFjZTpcbiIsCisgICAg
ICAgICJEb0EiKTsKKworICAgIC8vIEEgbm9uLXZvaWQtcmV0dXJuaW5nIGZ1bmN0aW9uLgorICAg
IENhcHR1cmVTdGRvdXQoKTsKKyAgICBhLkJpbmFyeSgyLCAxKTsKKyAgICBWZXJpZnlPdXRwdXQo
CisgICAgICAgIEdldENhcHR1cmVkU3Rkb3V0KCksCisgICAgICAgIHNob3VsZF9wcmludCwKKyAg
ICAgICAgIk1vY2sgZnVuY3Rpb24gY2FsbCBtYXRjaGVzIEVYUEVDVF9DQUxMKGEsIEJpbmFyeShf
LCAxKSkuLi5cbiIKKyAgICAgICAgIiAgICBGdW5jdGlvbiBjYWxsOiBCaW5hcnkoMiwgMSlcbiIK
KyAgICAgICAgIiAgICAgICAgICBSZXR1cm5zOiB0cnVlXG4iCisgICAgICAgICJTdGFjayB0cmFj
ZTpcbiIsCisgICAgICAgICJCaW5hcnkiKTsKKyAgfQorCisgIC8vIFRlc3RzIGhvdyB0aGUgZmxh
ZyBhZmZlY3RzIHVuaW50ZXJlc3RpbmcgY2FsbHMgb24gYSBuYWdneSBtb2NrLgorICB2b2lkIFRl
c3RVbmludGVyZXN0aW5nQ2FsbE9uTmFnZ3lNb2NrKGJvb2wgc2hvdWxkX3ByaW50KSB7CisgICAg
TmFnZ3lNb2NrPE1vY2tBPiBhOworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIG5vdGUgPQorICAgICAg
ICAiTk9URTogWW91IGNhbiBzYWZlbHkgaWdub3JlIHRoZSBhYm92ZSB3YXJuaW5nIHVubGVzcyB0
aGlzICIKKyAgICAgICAgImNhbGwgc2hvdWxkIG5vdCBoYXBwZW4uICBEbyBub3Qgc3VwcHJlc3Mg
aXQgYnkgYmxpbmRseSBhZGRpbmcgIgorICAgICAgICAiYW4gRVhQRUNUX0NBTEwoKSBpZiB5b3Ug
ZG9uJ3QgbWVhbiB0byBlbmZvcmNlIHRoZSBjYWxsLiAgIgorICAgICAgICAiU2VlIGh0dHBzOi8v
Z2l0aHViLmNvbS9nb29nbGUvZ29vZ2xldGVzdC9ibG9iL21hc3Rlci9nb29nbGVtb2NrL2RvY3Mv
Q29va0Jvb2subWQjIgorICAgICAgICAia25vd2luZy13aGVuLXRvLWV4cGVjdCBmb3IgZGV0YWls
cy4iOworCisgICAgLy8gQSB2b2lkLXJldHVybmluZyBmdW5jdGlvbi4KKyAgICBDYXB0dXJlU3Rk
b3V0KCk7CisgICAgYS5Eb0EoNSk7CisgICAgVmVyaWZ5T3V0cHV0KAorICAgICAgICBHZXRDYXB0
dXJlZFN0ZG91dCgpLAorICAgICAgICBzaG91bGRfcHJpbnQsCisgICAgICAgICJcbkdNT0NLIFdB
Uk5JTkc6XG4iCisgICAgICAgICJVbmludGVyZXN0aW5nIG1vY2sgZnVuY3Rpb24gY2FsbCAtIHJl
dHVybmluZyBkaXJlY3RseS5cbiIKKyAgICAgICAgIiAgICBGdW5jdGlvbiBjYWxsOiBEb0EoNSlc
biIgKworICAgICAgICBub3RlLAorICAgICAgICAiRG9BIik7CisKKyAgICAvLyBBIG5vbi12b2lk
LXJldHVybmluZyBmdW5jdGlvbi4KKyAgICBDYXB0dXJlU3Rkb3V0KCk7CisgICAgYS5CaW5hcnko
MiwgMSk7CisgICAgVmVyaWZ5T3V0cHV0KAorICAgICAgICBHZXRDYXB0dXJlZFN0ZG91dCgpLAor
ICAgICAgICBzaG91bGRfcHJpbnQsCisgICAgICAgICJcbkdNT0NLIFdBUk5JTkc6XG4iCisgICAg
ICAgICJVbmludGVyZXN0aW5nIG1vY2sgZnVuY3Rpb24gY2FsbCAtIHJldHVybmluZyBkZWZhdWx0
IHZhbHVlLlxuIgorICAgICAgICAiICAgIEZ1bmN0aW9uIGNhbGw6IEJpbmFyeSgyLCAxKVxuIgor
ICAgICAgICAiICAgICAgICAgIFJldHVybnM6IGZhbHNlXG4iICsKKyAgICAgICAgbm90ZSwKKyAg
ICAgICAgIkJpbmFyeSIpOworICB9Cit9OworCisvLyBUZXN0cyB0aGF0IC0tZ21vY2tfdmVyYm9z
ZT1pbmZvIGNhdXNlcyBib3RoIGV4cGVjdGVkIGFuZAorLy8gdW5pbnRlcmVzdGluZyBjYWxscyB0
byBiZSByZXBvcnRlZC4KK1RFU1RfRihHTW9ja1ZlcmJvc2VGbGFnVGVzdCwgSW5mbykgeworICBH
TU9DS19GTEFHKHZlcmJvc2UpID0ga0luZm9WZXJib3NpdHk7CisgIFRlc3RFeHBlY3RlZENhbGwo
dHJ1ZSk7CisgIFRlc3RVbmludGVyZXN0aW5nQ2FsbE9uTmFnZ3lNb2NrKHRydWUpOworfQorCisv
LyBUZXN0cyB0aGF0IC0tZ21vY2tfdmVyYm9zZT13YXJuaW5nIGNhdXNlcyB1bmludGVyZXN0aW5n
IGNhbGxzIHRvIGJlCisvLyByZXBvcnRlZC4KK1RFU1RfRihHTW9ja1ZlcmJvc2VGbGFnVGVzdCwg
V2FybmluZykgeworICBHTU9DS19GTEFHKHZlcmJvc2UpID0ga1dhcm5pbmdWZXJib3NpdHk7Cisg
IFRlc3RFeHBlY3RlZENhbGwoZmFsc2UpOworICBUZXN0VW5pbnRlcmVzdGluZ0NhbGxPbk5hZ2d5
TW9jayh0cnVlKTsKK30KKworLy8gVGVzdHMgdGhhdCAtLWdtb2NrX3ZlcmJvc2U9d2FybmluZyBj
YXVzZXMgbmVpdGhlciBleHBlY3RlZCBub3IKKy8vIHVuaW50ZXJlc3RpbmcgY2FsbHMgdG8gYmUg
cmVwb3J0ZWQuCitURVNUX0YoR01vY2tWZXJib3NlRmxhZ1Rlc3QsIEVycm9yKSB7CisgIEdNT0NL
X0ZMQUcodmVyYm9zZSkgPSBrRXJyb3JWZXJib3NpdHk7CisgIFRlc3RFeHBlY3RlZENhbGwoZmFs
c2UpOworICBUZXN0VW5pbnRlcmVzdGluZ0NhbGxPbk5hZ2d5TW9jayhmYWxzZSk7Cit9CisKKy8v
IFRlc3RzIHRoYXQgLS1nbW9ja192ZXJib3NlPVNPTUVfSU5WQUxJRF9WQUxVRSBoYXMgdGhlIHNh
bWUgZWZmZWN0CisvLyBhcyAtLWdtb2NrX3ZlcmJvc2U9d2FybmluZy4KK1RFU1RfRihHTW9ja1Zl
cmJvc2VGbGFnVGVzdCwgSW52YWxpZEZsYWdJc1RyZWF0ZWRBc1dhcm5pbmcpIHsKKyAgR01PQ0tf
RkxBRyh2ZXJib3NlKSA9ICJpbnZhbGlkIjsgIC8vIFRyZWF0ZWQgYXMgIndhcm5pbmciLgorICBU
ZXN0RXhwZWN0ZWRDYWxsKGZhbHNlKTsKKyAgVGVzdFVuaW50ZXJlc3RpbmdDYWxsT25OYWdneU1v
Y2sodHJ1ZSk7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgor
CisvLyBBIGhlbHBlciBjbGFzcyB0aGF0IGdlbmVyYXRlcyBhIGZhaWx1cmUgd2hlbiBwcmludGVk
LiAgV2UgdXNlIGl0IHRvCisvLyBlbnN1cmUgdGhhdCBHb29nbGUgTW9jayBkb2Vzbid0IHByaW50
IGEgdmFsdWUgKGV2ZW4gdG8gYW4gaW50ZXJuYWwKKy8vIGJ1ZmZlcikgd2hlbiBpdCBpcyBub3Qg
c3VwcG9zZWQgdG8gZG8gc28uCitjbGFzcyBQcmludE1lTm90IHt9OworCit2b2lkIFByaW50VG8o
UHJpbnRNZU5vdCAvKiBkdW1teSAqLywgOjpzdGQ6Om9zdHJlYW0qIC8qIG9zICovKSB7CisgIEFE
RF9GQUlMVVJFKCkgPDwgIkdvb2dsZSBNb2NrIGlzIHByaW50aW5nIGEgdmFsdWUgdGhhdCBzaG91
bGRuJ3QgYmUgIgorICAgICAgICAgICAgICAgIDw8ICJwcmludGVkIGV2ZW4gdG8gYW4gaW50ZXJu
YWwgYnVmZmVyLiI7Cit9CisKK2NsYXNzIExvZ1Rlc3RIZWxwZXIgeworIHB1YmxpYzoKKyAgTG9n
VGVzdEhlbHBlcigpIHt9CisKKyAgTU9DS19NRVRIT0QxKEZvbywgUHJpbnRNZU5vdChQcmludE1l
Tm90KSk7CisKKyBwcml2YXRlOgorICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKExv
Z1Rlc3RIZWxwZXIpOworfTsKKworY2xhc3MgR01vY2tMb2dUZXN0IDogcHVibGljIFZlcmJvc2VG
bGFnUHJlc2VydmluZ0ZpeHR1cmUgeworIHByb3RlY3RlZDoKKyAgTG9nVGVzdEhlbHBlciBoZWxw
ZXJfOworfTsKKworVEVTVF9GKEdNb2NrTG9nVGVzdCwgRG9lc05vdFByaW50R29vZENhbGxJbnRl
cm5hbGx5SWZWZXJib3NpdHlJc1dhcm5pbmcpIHsKKyAgR01PQ0tfRkxBRyh2ZXJib3NlKSA9IGtX
YXJuaW5nVmVyYm9zaXR5OworICBFWFBFQ1RfQ0FMTChoZWxwZXJfLCBGb28oXykpCisgICAgICAu
V2lsbE9uY2UoUmV0dXJuKFByaW50TWVOb3QoKSkpOworICBoZWxwZXJfLkZvbyhQcmludE1lTm90
KCkpOyAgLy8gVGhpcyBpcyBhbiBleHBlY3RlZCBjYWxsLgorfQorCitURVNUX0YoR01vY2tMb2dU
ZXN0LCBEb2VzTm90UHJpbnRHb29kQ2FsbEludGVybmFsbHlJZlZlcmJvc2l0eUlzRXJyb3IpIHsK
KyAgR01PQ0tfRkxBRyh2ZXJib3NlKSA9IGtFcnJvclZlcmJvc2l0eTsKKyAgRVhQRUNUX0NBTEwo
aGVscGVyXywgRm9vKF8pKQorICAgICAgLldpbGxPbmNlKFJldHVybihQcmludE1lTm90KCkpKTsK
KyAgaGVscGVyXy5Gb28oUHJpbnRNZU5vdCgpKTsgIC8vIFRoaXMgaXMgYW4gZXhwZWN0ZWQgY2Fs
bC4KK30KKworVEVTVF9GKEdNb2NrTG9nVGVzdCwgRG9lc05vdFByaW50V2FybmluZ0ludGVybmFs
bHlJZlZlcmJvc2l0eUlzRXJyb3IpIHsKKyAgR01PQ0tfRkxBRyh2ZXJib3NlKSA9IGtFcnJvclZl
cmJvc2l0eTsKKyAgT05fQ0FMTChoZWxwZXJfLCBGb28oXykpCisgICAgICAuV2lsbEJ5RGVmYXVs
dChSZXR1cm4oUHJpbnRNZU5vdCgpKSk7CisgIGhlbHBlcl8uRm9vKFByaW50TWVOb3QoKSk7ICAv
LyBUaGlzIHNob3VsZCBnZW5lcmF0ZSBhIHdhcm5pbmcuCit9CisKKy8vIFRlc3RzIE1vY2s6OkFs
bG93TGVhaygpLgorCitURVNUKEFsbG93TGVha1Rlc3QsIEFsbG93c0xlYWtpbmdVbnVzZWRNb2Nr
T2JqZWN0KSB7CisgIE1vY2tBKiBhID0gbmV3IE1vY2tBOworICBNb2NrOjpBbGxvd0xlYWsoYSk7
Cit9CisKK1RFU1QoQWxsb3dMZWFrVGVzdCwgQ2FuQmVDYWxsZWRCZWZvcmVPbkNhbGwpIHsKKyAg
TW9ja0EqIGEgPSBuZXcgTW9ja0E7CisgIE1vY2s6OkFsbG93TGVhayhhKTsKKyAgT05fQ0FMTCgq
YSwgRG9BKF8pKS5XaWxsQnlEZWZhdWx0KFJldHVybigpKTsKKyAgYS0+RG9BKDApOworfQorCitU
RVNUKEFsbG93TGVha1Rlc3QsIENhbkJlQ2FsbGVkQWZ0ZXJPbkNhbGwpIHsKKyAgTW9ja0EqIGEg
PSBuZXcgTW9ja0E7CisgIE9OX0NBTEwoKmEsIERvQShfKSkuV2lsbEJ5RGVmYXVsdChSZXR1cm4o
KSk7CisgIE1vY2s6OkFsbG93TGVhayhhKTsKK30KKworVEVTVChBbGxvd0xlYWtUZXN0LCBDYW5C
ZUNhbGxlZEJlZm9yZUV4cGVjdENhbGwpIHsKKyAgTW9ja0EqIGEgPSBuZXcgTW9ja0E7CisgIE1v
Y2s6OkFsbG93TGVhayhhKTsKKyAgRVhQRUNUX0NBTEwoKmEsIERvQShfKSk7CisgIGEtPkRvQSgw
KTsKK30KKworVEVTVChBbGxvd0xlYWtUZXN0LCBDYW5CZUNhbGxlZEFmdGVyRXhwZWN0Q2FsbCkg
eworICBNb2NrQSogYSA9IG5ldyBNb2NrQTsKKyAgRVhQRUNUX0NBTEwoKmEsIERvQShfKSkuVGlt
ZXMoQW55TnVtYmVyKCkpOworICBNb2NrOjpBbGxvd0xlYWsoYSk7Cit9CisKK1RFU1QoQWxsb3dM
ZWFrVGVzdCwgV29ya3NXaGVuQm90aE9uQ2FsbEFuZEV4cGVjdENhbGxBcmVQcmVzZW50KSB7Cisg
IE1vY2tBKiBhID0gbmV3IE1vY2tBOworICBPTl9DQUxMKCphLCBEb0EoXykpLldpbGxCeURlZmF1
bHQoUmV0dXJuKCkpOworICBFWFBFQ1RfQ0FMTCgqYSwgRG9BKF8pKS5UaW1lcyhBbnlOdW1iZXIo
KSk7CisgIE1vY2s6OkFsbG93TGVhayhhKTsKK30KKworLy8gVGVzdHMgdGhhdCB3ZSBjYW4gdmVy
aWZ5IGFuZCBjbGVhciBhIG1vY2sgb2JqZWN0J3MgZXhwZWN0YXRpb25zCisvLyB3aGVuIG5vbmUg
b2YgaXRzIG1ldGhvZHMgaGFzIGV4cGVjdGF0aW9ucy4KK1RFU1QoVmVyaWZ5QW5kQ2xlYXJFeHBl
Y3RhdGlvbnNUZXN0LCBOb01ldGhvZEhhc0V4cGVjdGF0aW9ucykgeworICBNb2NrQiBiOworICBB
U1NFUlRfVFJVRShNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmYikpOworCisgIC8v
IFRoZXJlIHNob3VsZCBiZSBubyBleHBlY3RhdGlvbnMgb24gdGhlIG1ldGhvZHMgbm93LCBzbyB3
ZSBjYW4KKyAgLy8gZnJlZWx5IGNhbGwgdGhlbS4KKyAgRVhQRUNUX0VRKDAsIGIuRG9CKCkpOwor
ICBFWFBFQ1RfRVEoMCwgYi5Eb0IoMSkpOworfQorCisvLyBUZXN0cyB0aGF0IHdlIGNhbiB2ZXJp
ZnkgYW5kIGNsZWFyIGEgbW9jayBvYmplY3QncyBleHBlY3RhdGlvbnMKKy8vIHdoZW4gc29tZSwg
YnV0IG5vdCBhbGwsIG9mIGl0cyBtZXRob2RzIGhhdmUgZXhwZWN0YXRpb25zICphbmQqIHRoZQor
Ly8gdmVyaWZpY2F0aW9uIHN1Y2NlZWRzLgorVEVTVChWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9u
c1Rlc3QsIFNvbWVNZXRob2RzSGF2ZUV4cGVjdGF0aW9uc0FuZFN1Y2NlZWQpIHsKKyAgTW9ja0Ig
YjsKKyAgRVhQRUNUX0NBTEwoYiwgRG9CKCkpCisgICAgICAuV2lsbE9uY2UoUmV0dXJuKDEpKTsK
KyAgYi5Eb0IoKTsKKyAgQVNTRVJUX1RSVUUoTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlv
bnMoJmIpKTsKKworICAvLyBUaGVyZSBzaG91bGQgYmUgbm8gZXhwZWN0YXRpb25zIG9uIHRoZSBt
ZXRob2RzIG5vdywgc28gd2UgY2FuCisgIC8vIGZyZWVseSBjYWxsIHRoZW0uCisgIEVYUEVDVF9F
USgwLCBiLkRvQigpKTsKKyAgRVhQRUNUX0VRKDAsIGIuRG9CKDEpKTsKK30KKworLy8gVGVzdHMg
dGhhdCB3ZSBjYW4gdmVyaWZ5IGFuZCBjbGVhciBhIG1vY2sgb2JqZWN0J3MgZXhwZWN0YXRpb25z
CisvLyB3aGVuIHNvbWUsIGJ1dCBub3QgYWxsLCBvZiBpdHMgbWV0aG9kcyBoYXZlIGV4cGVjdGF0
aW9ucyAqYW5kKiB0aGUKKy8vIHZlcmlmaWNhdGlvbiBmYWlscy4KK1RFU1QoVmVyaWZ5QW5kQ2xl
YXJFeHBlY3RhdGlvbnNUZXN0LCBTb21lTWV0aG9kc0hhdmVFeHBlY3RhdGlvbnNBbmRGYWlsKSB7
CisgIE1vY2tCIGI7CisgIEVYUEVDVF9DQUxMKGIsIERvQigpKQorICAgICAgLldpbGxPbmNlKFJl
dHVybigxKSk7CisgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUocmVzdWx0ID0gTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJmIpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAiQWN0dWFsOiBuZXZlciBjYWxsZWQiKTsKKyAgQVNTRVJUX0ZB
TFNFKHJlc3VsdCk7CisKKyAgLy8gVGhlcmUgc2hvdWxkIGJlIG5vIGV4cGVjdGF0aW9ucyBvbiB0
aGUgbWV0aG9kcyBub3csIHNvIHdlIGNhbgorICAvLyBmcmVlbHkgY2FsbCB0aGVtLgorICBFWFBF
Q1RfRVEoMCwgYi5Eb0IoKSk7CisgIEVYUEVDVF9FUSgwLCBiLkRvQigxKSk7Cit9CisKKy8vIFRl
c3RzIHRoYXQgd2UgY2FuIHZlcmlmeSBhbmQgY2xlYXIgYSBtb2NrIG9iamVjdCdzIGV4cGVjdGF0
aW9ucworLy8gd2hlbiBhbGwgb2YgaXRzIG1ldGhvZHMgaGF2ZSBleHBlY3RhdGlvbnMuCitURVNU
KFZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zVGVzdCwgQWxsTWV0aG9kc0hhdmVFeHBlY3RhdGlv
bnMpIHsKKyAgTW9ja0IgYjsKKyAgRVhQRUNUX0NBTEwoYiwgRG9CKCkpCisgICAgICAuV2lsbE9u
Y2UoUmV0dXJuKDEpKTsKKyAgRVhQRUNUX0NBTEwoYiwgRG9CKF8pKQorICAgICAgLldpbGxPbmNl
KFJldHVybigyKSk7CisgIGIuRG9CKCk7CisgIGIuRG9CKDEpOworICBBU1NFUlRfVFJVRShNb2Nr
OjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmYikpOworCisgIC8vIFRoZXJlIHNob3VsZCBi
ZSBubyBleHBlY3RhdGlvbnMgb24gdGhlIG1ldGhvZHMgbm93LCBzbyB3ZSBjYW4KKyAgLy8gZnJl
ZWx5IGNhbGwgdGhlbS4KKyAgRVhQRUNUX0VRKDAsIGIuRG9CKCkpOworICBFWFBFQ1RfRVEoMCwg
Yi5Eb0IoMSkpOworfQorCisvLyBUZXN0cyB0aGF0IHdlIGNhbiB2ZXJpZnkgYW5kIGNsZWFyIGEg
bW9jayBvYmplY3QncyBleHBlY3RhdGlvbnMKKy8vIHdoZW4gYSBtZXRob2QgaGFzIG1vcmUgdGhh
biBvbmUgZXhwZWN0YXRpb24uCitURVNUKFZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zVGVzdCwg
QU1ldGhvZEhhc01hbnlFeHBlY3RhdGlvbnMpIHsKKyAgTW9ja0IgYjsKKyAgRVhQRUNUX0NBTEwo
YiwgRG9CKDApKQorICAgICAgLldpbGxPbmNlKFJldHVybigxKSk7CisgIEVYUEVDVF9DQUxMKGIs
IERvQihfKSkKKyAgICAgIC5XaWxsT25jZShSZXR1cm4oMikpOworICBiLkRvQigxKTsKKyAgYm9v
bCByZXN1bHQgPSB0cnVlOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShyZXN1bHQgPSBNb2Nr
OjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmYiksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICJBY3R1YWw6IG5ldmVyIGNhbGxlZCIpOworICBBU1NFUlRfRkFMU0UocmVzdWx0KTsKKwor
ICAvLyBUaGVyZSBzaG91bGQgYmUgbm8gZXhwZWN0YXRpb25zIG9uIHRoZSBtZXRob2RzIG5vdywg
c28gd2UgY2FuCisgIC8vIGZyZWVseSBjYWxsIHRoZW0uCisgIEVYUEVDVF9FUSgwLCBiLkRvQigp
KTsKKyAgRVhQRUNUX0VRKDAsIGIuRG9CKDEpKTsKK30KKworLy8gVGVzdHMgdGhhdCB3ZSBjYW4g
Y2FsbCBWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygpIG9uIHRoZSBzYW1lCisvLyBtb2NrIG9i
amVjdCBtdWx0aXBsZSB0aW1lcy4KK1RFU1QoVmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnNUZXN0
LCBDYW5DYWxsTWFueVRpbWVzKSB7CisgIE1vY2tCIGI7CisgIEVYUEVDVF9DQUxMKGIsIERvQigp
KTsKKyAgYi5Eb0IoKTsKKyAgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJmIpOwor
CisgIEVYUEVDVF9DQUxMKGIsIERvQihfKSkKKyAgICAgIC5XaWxsT25jZShSZXR1cm4oMSkpOwor
ICBiLkRvQigxKTsKKyAgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJmIpOworICBN
b2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmYik7CisKKyAgLy8gVGhlcmUgc2hvdWxk
IGJlIG5vIGV4cGVjdGF0aW9ucyBvbiB0aGUgbWV0aG9kcyBub3csIHNvIHdlIGNhbgorICAvLyBm
cmVlbHkgY2FsbCB0aGVtLgorICBFWFBFQ1RfRVEoMCwgYi5Eb0IoKSk7CisgIEVYUEVDVF9FUSgw
LCBiLkRvQigxKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgd2UgY2FuIGNsZWFyIGEgbW9jayBvYmpl
Y3QncyBkZWZhdWx0IGFjdGlvbnMgd2hlbiBub25lCisvLyBvZiBpdHMgbWV0aG9kcyBoYXMgZGVm
YXVsdCBhY3Rpb25zLgorVEVTVChWZXJpZnlBbmRDbGVhclRlc3QsIE5vTWV0aG9kSGFzRGVmYXVs
dEFjdGlvbnMpIHsKKyAgTW9ja0IgYjsKKyAgLy8gSWYgdGhpcyBjcmFzaGVzIG9yIGdlbmVyYXRl
cyBhIGZhaWx1cmUsIHRoZSB0ZXN0IHdpbGwgY2F0Y2ggaXQuCisgIE1vY2s6OlZlcmlmeUFuZENs
ZWFyKCZiKTsKKyAgRVhQRUNUX0VRKDAsIGIuRG9CKCkpOworfQorCisvLyBUZXN0cyB0aGF0IHdl
IGNhbiBjbGVhciBhIG1vY2sgb2JqZWN0J3MgZGVmYXVsdCBhY3Rpb25zIHdoZW4gc29tZSwKKy8v
IGJ1dCBub3QgYWxsIG9mIGl0cyBtZXRob2RzIGhhdmUgZGVmYXVsdCBhY3Rpb25zLgorVEVTVChW
ZXJpZnlBbmRDbGVhclRlc3QsIFNvbWVNZXRob2RzSGF2ZURlZmF1bHRBY3Rpb25zKSB7CisgIE1v
Y2tCIGI7CisgIE9OX0NBTEwoYiwgRG9CKCkpCisgICAgICAuV2lsbEJ5RGVmYXVsdChSZXR1cm4o
MSkpOworCisgIE1vY2s6OlZlcmlmeUFuZENsZWFyKCZiKTsKKworICAvLyBWZXJpZmllcyB0aGF0
IHRoZSBkZWZhdWx0IGFjdGlvbiBvZiBpbnQgRG9CKCkgd2FzIHJlbW92ZWQuCisgIEVYUEVDVF9F
USgwLCBiLkRvQigpKTsKK30KKworLy8gVGVzdHMgdGhhdCB3ZSBjYW4gY2xlYXIgYSBtb2NrIG9i
amVjdCdzIGRlZmF1bHQgYWN0aW9ucyB3aGVuIGFsbCBvZgorLy8gaXRzIG1ldGhvZHMgaGF2ZSBk
ZWZhdWx0IGFjdGlvbnMuCitURVNUKFZlcmlmeUFuZENsZWFyVGVzdCwgQWxsTWV0aG9kc0hhdmVE
ZWZhdWx0QWN0aW9ucykgeworICBNb2NrQiBiOworICBPTl9DQUxMKGIsIERvQigpKQorICAgICAg
LldpbGxCeURlZmF1bHQoUmV0dXJuKDEpKTsKKyAgT05fQ0FMTChiLCBEb0IoXykpCisgICAgICAu
V2lsbEJ5RGVmYXVsdChSZXR1cm4oMikpOworCisgIE1vY2s6OlZlcmlmeUFuZENsZWFyKCZiKTsK
KworICAvLyBWZXJpZmllcyB0aGF0IHRoZSBkZWZhdWx0IGFjdGlvbiBvZiBpbnQgRG9CKCkgd2Fz
IHJlbW92ZWQuCisgIEVYUEVDVF9FUSgwLCBiLkRvQigpKTsKKworICAvLyBWZXJpZmllcyB0aGF0
IHRoZSBkZWZhdWx0IGFjdGlvbiBvZiBpbnQgRG9CKGludCkgd2FzIHJlbW92ZWQuCisgIEVYUEVD
VF9FUSgwLCBiLkRvQigwKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgd2UgY2FuIGNsZWFyIGEgbW9j
ayBvYmplY3QncyBkZWZhdWx0IGFjdGlvbnMgd2hlbiBhCisvLyBtZXRob2QgaGFzIG1vcmUgdGhh
biBvbmUgT05fQ0FMTCgpIHNldCBvbiBpdC4KK1RFU1QoVmVyaWZ5QW5kQ2xlYXJUZXN0LCBBTWV0
aG9kSGFzTWFueURlZmF1bHRBY3Rpb25zKSB7CisgIE1vY2tCIGI7CisgIE9OX0NBTEwoYiwgRG9C
KDApKQorICAgICAgLldpbGxCeURlZmF1bHQoUmV0dXJuKDEpKTsKKyAgT05fQ0FMTChiLCBEb0Io
XykpCisgICAgICAuV2lsbEJ5RGVmYXVsdChSZXR1cm4oMikpOworCisgIE1vY2s6OlZlcmlmeUFu
ZENsZWFyKCZiKTsKKworICAvLyBWZXJpZmllcyB0aGF0IHRoZSBkZWZhdWx0IGFjdGlvbnMgKHRo
ZXJlIGFyZSB0d28pIG9mIGludCBEb0IoaW50KQorICAvLyB3ZXJlIHJlbW92ZWQuCisgIEVYUEVD
VF9FUSgwLCBiLkRvQigwKSk7CisgIEVYUEVDVF9FUSgwLCBiLkRvQigxKSk7Cit9CisKKy8vIFRl
c3RzIHRoYXQgd2UgY2FuIGNhbGwgVmVyaWZ5QW5kQ2xlYXIoKSBvbiBhIG1vY2sgb2JqZWN0IG11
bHRpcGxlCisvLyB0aW1lcy4KK1RFU1QoVmVyaWZ5QW5kQ2xlYXJUZXN0LCBDYW5DYWxsTWFueVRp
bWVzKSB7CisgIE1vY2tCIGI7CisgIE9OX0NBTEwoYiwgRG9CKCkpCisgICAgICAuV2lsbEJ5RGVm
YXVsdChSZXR1cm4oMSkpOworICBNb2NrOjpWZXJpZnlBbmRDbGVhcigmYik7CisgIE1vY2s6OlZl
cmlmeUFuZENsZWFyKCZiKTsKKworICBPTl9DQUxMKGIsIERvQihfKSkKKyAgICAgIC5XaWxsQnlE
ZWZhdWx0KFJldHVybigxKSk7CisgIE1vY2s6OlZlcmlmeUFuZENsZWFyKCZiKTsKKworICBFWFBF
Q1RfRVEoMCwgYi5Eb0IoKSk7CisgIEVYUEVDVF9FUSgwLCBiLkRvQigxKSk7Cit9CisKKy8vIFRl
c3RzIHRoYXQgVmVyaWZ5QW5kQ2xlYXIoKSB3b3JrcyB3aGVuIHRoZSB2ZXJpZmljYXRpb24gc3Vj
Y2VlZHMuCitURVNUKFZlcmlmeUFuZENsZWFyVGVzdCwgU3VjY2VzcykgeworICBNb2NrQiBiOwor
ICBPTl9DQUxMKGIsIERvQigpKQorICAgICAgLldpbGxCeURlZmF1bHQoUmV0dXJuKDEpKTsKKyAg
RVhQRUNUX0NBTEwoYiwgRG9CKDEpKQorICAgICAgLldpbGxPbmNlKFJldHVybigyKSk7CisKKyAg
Yi5Eb0IoKTsKKyAgYi5Eb0IoMSk7CisgIEFTU0VSVF9UUlVFKE1vY2s6OlZlcmlmeUFuZENsZWFy
KCZiKSk7CisKKyAgLy8gVGhlcmUgc2hvdWxkIGJlIG5vIGV4cGVjdGF0aW9ucyBvbiB0aGUgbWV0
aG9kcyBub3csIHNvIHdlIGNhbgorICAvLyBmcmVlbHkgY2FsbCB0aGVtLgorICBFWFBFQ1RfRVEo
MCwgYi5Eb0IoKSk7CisgIEVYUEVDVF9FUSgwLCBiLkRvQigxKSk7Cit9CisKKy8vIFRlc3RzIHRo
YXQgVmVyaWZ5QW5kQ2xlYXIoKSB3b3JrcyB3aGVuIHRoZSB2ZXJpZmljYXRpb24gZmFpbHMuCitU
RVNUKFZlcmlmeUFuZENsZWFyVGVzdCwgRmFpbHVyZSkgeworICBNb2NrQiBiOworICBPTl9DQUxM
KGIsIERvQihfKSkKKyAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybigxKSk7CisgIEVYUEVDVF9D
QUxMKGIsIERvQigpKQorICAgICAgLldpbGxPbmNlKFJldHVybigyKSk7CisKKyAgYi5Eb0IoMSk7
CisgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUocmVzdWx0
ID0gTW9jazo6VmVyaWZ5QW5kQ2xlYXIoJmIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAi
QWN0dWFsOiBuZXZlciBjYWxsZWQiKTsKKyAgQVNTRVJUX0ZBTFNFKHJlc3VsdCk7CisKKyAgLy8g
VGhlcmUgc2hvdWxkIGJlIG5vIGV4cGVjdGF0aW9ucyBvbiB0aGUgbWV0aG9kcyBub3csIHNvIHdl
IGNhbgorICAvLyBmcmVlbHkgY2FsbCB0aGVtLgorICBFWFBFQ1RfRVEoMCwgYi5Eb0IoKSk7Cisg
IEVYUEVDVF9FUSgwLCBiLkRvQigxKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgVmVyaWZ5QW5kQ2xl
YXIoKSB3b3JrcyB3aGVuIHRoZSBkZWZhdWx0IGFjdGlvbnMgYW5kCisvLyBleHBlY3RhdGlvbnMg
YXJlIHNldCBvbiBhIGNvbnN0IG1vY2sgb2JqZWN0LgorVEVTVChWZXJpZnlBbmRDbGVhclRlc3Qs
IENvbnN0KSB7CisgIE1vY2tCIGI7CisgIE9OX0NBTEwoQ29uc3QoYiksIERvQigpKQorICAgICAg
LldpbGxCeURlZmF1bHQoUmV0dXJuKDEpKTsKKworICBFWFBFQ1RfQ0FMTChDb25zdChiKSwgRG9C
KCkpCisgICAgICAuV2lsbE9uY2UoRG9EZWZhdWx0KCkpCisgICAgICAuV2lsbE9uY2UoUmV0dXJu
KDIpKTsKKworICBiLkRvQigpOworICBiLkRvQigpOworICBBU1NFUlRfVFJVRShNb2NrOjpWZXJp
ZnlBbmRDbGVhcigmYikpOworCisgIC8vIFRoZXJlIHNob3VsZCBiZSBubyBleHBlY3RhdGlvbnMg
b24gdGhlIG1ldGhvZHMgbm93LCBzbyB3ZSBjYW4KKyAgLy8gZnJlZWx5IGNhbGwgdGhlbS4KKyAg
RVhQRUNUX0VRKDAsIGIuRG9CKCkpOworICBFWFBFQ1RfRVEoMCwgYi5Eb0IoMSkpOworfQorCisv
LyBUZXN0cyB0aGF0IHdlIGNhbiBzZXQgZGVmYXVsdCBhY3Rpb25zIGFuZCBleHBlY3RhdGlvbnMg
b24gYSBtb2NrCisvLyBvYmplY3QgYWZ0ZXIgVmVyaWZ5QW5kQ2xlYXIoKSBoYXMgYmVlbiBjYWxs
ZWQgb24gaXQuCitURVNUKFZlcmlmeUFuZENsZWFyVGVzdCwgQ2FuU2V0RGVmYXVsdEFjdGlvbnNB
bmRFeHBlY3RhdGlvbnNBZnRlcndhcmRzKSB7CisgIE1vY2tCIGI7CisgIE9OX0NBTEwoYiwgRG9C
KCkpCisgICAgICAuV2lsbEJ5RGVmYXVsdChSZXR1cm4oMSkpOworICBFWFBFQ1RfQ0FMTChiLCBE
b0IoXykpCisgICAgICAuV2lsbE9uY2UoUmV0dXJuKDIpKTsKKyAgYi5Eb0IoMSk7CisKKyAgTW9j
azo6VmVyaWZ5QW5kQ2xlYXIoJmIpOworCisgIEVYUEVDVF9DQUxMKGIsIERvQigpKQorICAgICAg
LldpbGxPbmNlKFJldHVybigzKSk7CisgIE9OX0NBTEwoYiwgRG9CKF8pKQorICAgICAgLldpbGxC
eURlZmF1bHQoUmV0dXJuKDQpKTsKKworICBFWFBFQ1RfRVEoMywgYi5Eb0IoKSk7CisgIEVYUEVD
VF9FUSg0LCBiLkRvQigxKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgY2FsbGluZyBWZXJpZnlBbmRD
bGVhcigpIG9uIG9uZSBtb2NrIG9iamVjdCBkb2VzIG5vdAorLy8gYWZmZWN0IG90aGVyIG1vY2sg
b2JqZWN0cyAoZWl0aGVyIG9mIHRoZSBzYW1lIHR5cGUgb3Igbm90KS4KK1RFU1QoVmVyaWZ5QW5k
Q2xlYXJUZXN0LCBEb2VzTm90QWZmZWN0T3RoZXJNb2NrT2JqZWN0cykgeworICBNb2NrQSBhOwor
ICBNb2NrQiBiMTsKKyAgTW9ja0IgYjI7CisKKyAgT05fQ0FMTChhLCBCaW5hcnkoXywgXykpCisg
ICAgICAuV2lsbEJ5RGVmYXVsdChSZXR1cm4odHJ1ZSkpOworICBFWFBFQ1RfQ0FMTChhLCBCaW5h
cnkoXywgXykpCisgICAgICAuV2lsbE9uY2UoRG9EZWZhdWx0KCkpCisgICAgICAuV2lsbE9uY2Uo
UmV0dXJuKGZhbHNlKSk7CisKKyAgT05fQ0FMTChiMSwgRG9CKCkpCisgICAgICAuV2lsbEJ5RGVm
YXVsdChSZXR1cm4oMSkpOworICBFWFBFQ1RfQ0FMTChiMSwgRG9CKF8pKQorICAgICAgLldpbGxP
bmNlKFJldHVybigyKSk7CisKKyAgT05fQ0FMTChiMiwgRG9CKCkpCisgICAgICAuV2lsbEJ5RGVm
YXVsdChSZXR1cm4oMykpOworICBFWFBFQ1RfQ0FMTChiMiwgRG9CKF8pKTsKKworICBiMi5Eb0Io
MCk7CisgIE1vY2s6OlZlcmlmeUFuZENsZWFyKCZiMik7CisKKyAgLy8gVmVyaWZpZXMgdGhhdCB0
aGUgZGVmYXVsdCBhY3Rpb25zIGFuZCBleHBlY3RhdGlvbnMgb2YgYSBhbmQgYjEKKyAgLy8gYXJl
IHN0aWxsIGluIGVmZmVjdC4KKyAgRVhQRUNUX1RSVUUoYS5CaW5hcnkoMCwgMCkpOworICBFWFBF
Q1RfRkFMU0UoYS5CaW5hcnkoMCwgMCkpOworCisgIEVYUEVDVF9FUSgxLCBiMS5Eb0IoKSk7Cisg
IEVYUEVDVF9FUSgyLCBiMS5Eb0IoMCkpOworfQorCitURVNUKFZlcmlmeUFuZENsZWFyVGVzdCwK
KyAgICAgRGVzdHJveWluZ0NoYWluZWRNb2Nrc0RvZXNOb3REZWFkbG9ja1Rocm91Z2hFeHBlY3Rh
dGlvbnMpIHsKKyAgbGlua2VkX3B0cjxNb2NrQT4gYShuZXcgTW9ja0EpOworICBSZWZlcmVuY2VI
b2xkaW5nTW9jayB0ZXN0X21vY2s7CisKKyAgLy8gRVhQRUNUX0NBTEwgc3RvcmVzIGEgcmVmZXJl
bmNlIHRvIGEgaW5zaWRlIHRlc3RfbW9jay4KKyAgRVhQRUNUX0NBTEwodGVzdF9tb2NrLCBBY2Nl
cHRSZWZlcmVuY2UoXykpCisgICAgICAuV2lsbFJlcGVhdGVkbHkoU2V0QXJnUG9pbnRlZTwwPihh
KSk7CisKKyAgLy8gVGhyb3cgYXdheSB0aGUgcmVmZXJlbmNlIHRvIHRoZSBtb2NrIHRoYXQgd2Ug
aGF2ZSBpbiBhLiBBZnRlciB0aGlzLCB0aGUKKyAgLy8gb25seSByZWZlcmVuY2UgdG8gaXQgaXMg
c3RvcmVkIGJ5IHRlc3RfbW9jay4KKyAgYS5yZXNldCgpOworCisgIC8vIFdoZW4gdGVzdF9tb2Nr
IGdvZXMgb3V0IG9mIHNjb3BlLCBpdCBkZXN0cm95cyB0aGUgbGFzdCByZW1haW5pbmcgcmVmZXJl
bmNlCisgIC8vIHRvIHRoZSBtb2NrIG9iamVjdCBvcmlnaW5hbGx5IHBvaW50ZWQgdG8gYnkgYS4g
VGhpcyB3aWxsIGNhdXNlIHRoZSBNb2NrQQorICAvLyBkZXN0cnVjdG9yIHRvIGJlIGNhbGxlZCBm
cm9tIGluc2lkZSB0aGUgUmVmZXJlbmNlSG9sZGluZ01vY2sgZGVzdHJ1Y3Rvci4KKyAgLy8gVGhl
IHN0YXRlIG9mIGFsbCBtb2NrcyBpcyBwcm90ZWN0ZWQgYnkgYSBzaW5nbGUgZ2xvYmFsIGxvY2ss
IGJ1dCB0aGVyZQorICAvLyBzaG91bGQgYmUgbm8gZGVhZGxvY2suCit9CisKK1RFU1QoVmVyaWZ5
QW5kQ2xlYXJUZXN0LAorICAgICBEZXN0cm95aW5nQ2hhaW5lZE1vY2tzRG9lc05vdERlYWRsb2Nr
VGhyb3VnaERlZmF1bHRBY3Rpb24pIHsKKyAgbGlua2VkX3B0cjxNb2NrQT4gYShuZXcgTW9ja0Ep
OworICBSZWZlcmVuY2VIb2xkaW5nTW9jayB0ZXN0X21vY2s7CisKKyAgLy8gT05fQ0FMTCBzdG9y
ZXMgYSByZWZlcmVuY2UgdG8gYSBpbnNpZGUgdGVzdF9tb2NrLgorICBPTl9DQUxMKHRlc3RfbW9j
aywgQWNjZXB0UmVmZXJlbmNlKF8pKQorICAgICAgLldpbGxCeURlZmF1bHQoU2V0QXJnUG9pbnRl
ZTwwPihhKSk7CisKKyAgLy8gVGhyb3cgYXdheSB0aGUgcmVmZXJlbmNlIHRvIHRoZSBtb2NrIHRo
YXQgd2UgaGF2ZSBpbiBhLiBBZnRlciB0aGlzLCB0aGUKKyAgLy8gb25seSByZWZlcmVuY2UgdG8g
aXQgaXMgc3RvcmVkIGJ5IHRlc3RfbW9jay4KKyAgYS5yZXNldCgpOworCisgIC8vIFdoZW4gdGVz
dF9tb2NrIGdvZXMgb3V0IG9mIHNjb3BlLCBpdCBkZXN0cm95cyB0aGUgbGFzdCByZW1haW5pbmcg
cmVmZXJlbmNlCisgIC8vIHRvIHRoZSBtb2NrIG9iamVjdCBvcmlnaW5hbGx5IHBvaW50ZWQgdG8g
YnkgYS4gVGhpcyB3aWxsIGNhdXNlIHRoZSBNb2NrQQorICAvLyBkZXN0cnVjdG9yIHRvIGJlIGNh
bGxlZCBmcm9tIGluc2lkZSB0aGUgUmVmZXJlbmNlSG9sZGluZ01vY2sgZGVzdHJ1Y3Rvci4KKyAg
Ly8gVGhlIHN0YXRlIG9mIGFsbCBtb2NrcyBpcyBwcm90ZWN0ZWQgYnkgYSBzaW5nbGUgZ2xvYmFs
IGxvY2ssIGJ1dCB0aGVyZQorICAvLyBzaG91bGQgYmUgbm8gZGVhZGxvY2suCit9CisKKy8vIFRl
c3RzIHRoYXQgYSBtb2NrIGZ1bmN0aW9uJ3MgYWN0aW9uIGNhbiBjYWxsIGEgbW9jayBmdW5jdGlv
bgorLy8gKGVpdGhlciB0aGUgc2FtZSBmdW5jdGlvbiBvciBhIGRpZmZlcmVudCBvbmUpIGVpdGhl
ciBhcyBhbiBleHBsaWNpdAorLy8gYWN0aW9uIG9yIGFzIGEgZGVmYXVsdCBhY3Rpb24gd2l0aG91
dCBjYXVzaW5nIGEgZGVhZCBsb2NrLiAgSXQKKy8vIHZlcmlmaWVzIHRoYXQgdGhlIGFjdGlvbiBp
cyBub3QgcGVyZm9ybWVkIGluc2lkZSB0aGUgY3JpdGljYWwKKy8vIHNlY3Rpb24uCitURVNUKFN5
bmNocm9uaXphdGlvblRlc3QsIENhbkNhbGxNb2NrTWV0aG9kSW5BY3Rpb24pIHsKKyAgTW9ja0Eg
YTsKKyAgTW9ja0MgYzsKKyAgT05fQ0FMTChhLCBEb0EoXykpCisgICAgICAuV2lsbEJ5RGVmYXVs
dChJZ25vcmVSZXN1bHQoSW52b2tlV2l0aG91dEFyZ3MoJmMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJk1vY2tDOjpOb25Wb2lkTWV0aG9kKSkp
OworICBFWFBFQ1RfQ0FMTChhLCBEb0EoMSkpOworICBFWFBFQ1RfQ0FMTChhLCBEb0EoMSkpCisg
ICAgICAuV2lsbE9uY2UoSW52b2tlKCZhLCAmTW9ja0E6OkRvQSkpCisgICAgICAuUmV0aXJlc09u
U2F0dXJhdGlvbigpOworICBFWFBFQ1RfQ0FMTChjLCBOb25Wb2lkTWV0aG9kKCkpOworCisgIGEu
RG9BKDEpOworICAvLyBUaGlzIHdpbGwgbWF0Y2ggdGhlIHNlY29uZCBFWFBFQ1RfQ0FMTCgpIGFu
ZCB0cmlnZ2VyIGFub3RoZXIgYS5Eb0EoMSksCisgIC8vIHdoaWNoIHdpbGwgaW4gdHVybiBtYXRj
aCB0aGUgZmlyc3QgRVhQRUNUX0NBTEwoKSBhbmQgdHJpZ2dlciBhIGNhbGwgdG8KKyAgLy8gYy5O
b25Wb2lkTWV0aG9kKCkgdGhhdCB3YXMgc3BlY2lmaWVkIGJ5IHRoZSBPTl9DQUxMKCkgc2luY2Ug
dGhlIGZpcnN0CisgIC8vIEVYUEVDVF9DQUxMKCkgZGlkIG5vdCBzcGVjaWZ5IGFuIGFjdGlvbi4K
K30KKworfSAgLy8gbmFtZXNwYWNlCisKKy8vIEFsbG93cyB0aGUgdXNlciB0byBkZWZpbmUgaGlz
IG93biBtYWluIGFuZCB0aGVuIGludm9rZSBnbW9ja19tYWluCisvLyBmcm9tIGl0LiBUaGlzIG1p
Z2h0IGJlIG5lY2Vzc2FyeSBvbiBzb21lIHBsYXRmb3JtcyB3aGljaCByZXF1aXJlCisvLyBzcGVj
aWZpYyBzZXR1cCBhbmQgdGVhcmRvd24uCisjaWYgR01PQ0tfUkVOQU1FX01BSU4KK2ludCBnbW9j
a19tYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgeworI2Vsc2UKK2ludCBtYWluKGludCBhcmdj
LCBjaGFyICoqYXJndikgeworI2VuZGlmICAvLyBHTU9DS19SRU5BTUVfTUFJTgorICB0ZXN0aW5n
OjpJbml0R29vZ2xlTW9jaygmYXJnYywgYXJndik7CisKKyAgLy8gRW5zdXJlcyB0aGF0IHRoZSB0
ZXN0cyBwYXNzIG5vIG1hdHRlciB3aGF0IHZhbHVlIG9mCisgIC8vIC0tZ21vY2tfY2F0Y2hfbGVh
a2VkX21vY2tzIGFuZCAtLWdtb2NrX3ZlcmJvc2UgdGhlIHVzZXIgc3BlY2lmaWVzLgorICB0ZXN0
aW5nOjpHTU9DS19GTEFHKGNhdGNoX2xlYWtlZF9tb2NrcykgPSB0cnVlOworICB0ZXN0aW5nOjpH
TU9DS19GTEFHKHZlcmJvc2UpID0gdGVzdGluZzo6aW50ZXJuYWw6OmtXYXJuaW5nVmVyYm9zaXR5
OworCisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9j
ay90ZXN0L2dtb2NrX2FsbF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9ja19hbGxfdGVz
dC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41NmQ2YzQ5Y2NjNTM4YjU2M2ZkYjcxZDk5ZWRkMjVlN2FmMGY4ZDc4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9ja19hbGxfdGVzdC5jYwpA
QCAtMCwwICsxLDUxIEBACisvLyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KKy8vIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBt
ZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
Ly8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8g
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisvLworLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorLy8KKy8v
IFRlc3RzIGZvciBHb29nbGUgQysrIE1vY2tpbmcgRnJhbWV3b3JrIChHb29nbGUgTW9jaykKKy8v
CisvLyBTb21lIHVzZXJzIHVzZSBhIGJ1aWxkIHN5c3RlbSB0aGF0IEdvb2dsZSBNb2NrIGRvZXNu
J3Qgc3VwcG9ydCBkaXJlY3RseSwKKy8vIHlldCB0aGV5IHN0aWxsIHdhbnQgdG8gYnVpbGQgYW5k
IHJ1biBHb29nbGUgTW9jaydzIG93biB0ZXN0cy4gIFRoaXMgZmlsZQorLy8gaW5jbHVkZXMgbW9z
dCBzdWNoIHRlc3RzLCBtYWtpbmcgaXQgZWFzaWVyIGZvciB0aGVzZSB1c2VycyB0byBtYWludGFp
bgorLy8gdGhlaXIgYnVpbGQgc2NyaXB0cyAodGhleSBqdXN0IG5lZWQgdG8gYnVpbGQgdGhpcyBm
aWxlLCBldmVuIHRob3VnaCB0aGUKKy8vIGJlbG93IGxpc3Qgb2YgYWN0dWFsICpfdGVzdC5jYyBm
aWxlcyBtaWdodCBjaGFuZ2UpLgorI2luY2x1ZGUgInRlc3QvZ21vY2stYWN0aW9uc190ZXN0LmNj
IgorI2luY2x1ZGUgInRlc3QvZ21vY2stY2FyZGluYWxpdGllc190ZXN0LmNjIgorI2luY2x1ZGUg
InRlc3QvZ21vY2stZ2VuZXJhdGVkLWFjdGlvbnNfdGVzdC5jYyIKKyNpbmNsdWRlICJ0ZXN0L2dt
b2NrLWdlbmVyYXRlZC1mdW5jdGlvbi1tb2NrZXJzX3Rlc3QuY2MiCisjaW5jbHVkZSAidGVzdC9n
bW9jay1nZW5lcmF0ZWQtaW50ZXJuYWwtdXRpbHNfdGVzdC5jYyIKKyNpbmNsdWRlICJ0ZXN0L2dt
b2NrLWdlbmVyYXRlZC1tYXRjaGVyc190ZXN0LmNjIgorI2luY2x1ZGUgInRlc3QvZ21vY2staW50
ZXJuYWwtdXRpbHNfdGVzdC5jYyIKKyNpbmNsdWRlICJ0ZXN0L2dtb2NrLW1hdGNoZXJzX3Rlc3Qu
Y2MiCisjaW5jbHVkZSAidGVzdC9nbW9jay1tb3JlLWFjdGlvbnNfdGVzdC5jYyIKKyNpbmNsdWRl
ICJ0ZXN0L2dtb2NrLW5pY2Utc3RyaWN0X3Rlc3QuY2MiCisjaW5jbHVkZSAidGVzdC9nbW9jay1w
b3J0X3Rlc3QuY2MiCisjaW5jbHVkZSAidGVzdC9nbW9jay1zcGVjLWJ1aWxkZXJzX3Rlc3QuY2Mi
CisjaW5jbHVkZSAidGVzdC9nbW9ja190ZXN0LmNjIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2sv
dGVzdC9nbW9ja19leF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9ja19leF90ZXN0LmNj
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjNhZmVkODZhYjk2NjVlMTJjZGI3MmZjMGJiNTc3MGIyMDU2MjhkNzQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2NrX2V4X3Rlc3QuY2MKQEAgLTAs
MCArMSw4MSBAQAorLy8gQ29weXJpZ2h0IDIwMTMsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0Ogor
Ly8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisv
LyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisv
LyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
Ly8KKy8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKworLy8gVGVzdHMg
R29vZ2xlIE1vY2sncyBmdW5jdGlvbmFsaXR5IHRoYXQgZGVwZW5kcyBvbiBleGNlcHRpb25zLgor
CisjaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCitu
YW1lc3BhY2UgeworCit1c2luZyB0ZXN0aW5nOjpIYXNTdWJzdHI7Cit1c2luZyB0ZXN0aW5nOjpp
bnRlcm5hbDo6R29vZ2xlVGVzdEZhaWx1cmVFeGNlcHRpb247CisKKy8vIEEgdHlwZSB0aGF0IGNh
bm5vdCBiZSBkZWZhdWx0IGNvbnN0cnVjdGVkLgorY2xhc3MgTm9uRGVmYXVsdENvbnN0cnVjdGli
bGUgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgTm9uRGVmYXVsdENvbnN0cnVjdGlibGUoaW50IC8q
IGR1bW15ICovKSB7fQorfTsKKworY2xhc3MgTW9ja0ZvbyB7CisgcHVibGljOgorICAvLyBBIG1v
Y2sgbWV0aG9kIHRoYXQgcmV0dXJucyBhIHVzZXItZGVmaW5lZCB0eXBlLiAgR29vZ2xlIE1vY2sK
KyAgLy8gZG9lc24ndCBrbm93IHdoYXQgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoaXMgdHlwZSBp
cy4KKyAgTU9DS19NRVRIT0QwKEdldE5vbkRlZmF1bHRDb25zdHJ1Y3RpYmxlLCBOb25EZWZhdWx0
Q29uc3RydWN0aWJsZSgpKTsKK307CisKKyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUworCitURVNU
KERlZmF1bHRWYWx1ZVRlc3QsIFRocm93c1J1bnRpbWVFcnJvcldoZW5Ob0RlZmF1bHRWYWx1ZSkg
eworICBNb2NrRm9vIG1vY2s7CisgIHRyeSB7CisgICAgLy8gTm8gZXhwZWN0YXRpb24gaXMgc2V0
IG9uIHRoaXMgbWV0aG9kLCBzbyBHb29nbGUgTW9jayBtdXN0CisgICAgLy8gcmV0dXJuIHRoZSBk
ZWZhdWx0IHZhbHVlLiAgSG93ZXZlciwgc2luY2UgR29vZ2xlIE1vY2sga25vd3MKKyAgICAvLyBu
b3RoaW5nIGFib3V0IHRoZSByZXR1cm4gdHlwZSwgaXQgZG9lc24ndCBrbm93IHdoYXQgdG8gcmV0
dXJuLAorICAgIC8vIGFuZCBoYXMgdG8gdGhyb3cgKHdoZW4gZXhjZXB0aW9ucyBhcmUgZW5hYmxl
ZCkgb3IgYWJvcnQKKyAgICAvLyAob3RoZXJ3aXNlKS4KKyAgICBtb2NrLkdldE5vbkRlZmF1bHRD
b25zdHJ1Y3RpYmxlKCk7CisgICAgRkFJTCgpIDw8ICJHZXROb25EZWZhdWx0Q29uc3RydWN0aWJs
ZSgpJ3MgcmV0dXJuIHR5cGUgaGFzIG5vIGRlZmF1bHQgIgorICAgICAgICAgICA8PCAidmFsdWUs
IHNvIEdvb2dsZSBNb2NrIHNob3VsZCBoYXZlIHRocm93bi4iOworICB9IGNhdGNoIChjb25zdCBH
b29nbGVUZXN0RmFpbHVyZUV4Y2VwdGlvbiYgLyogdW51c2VkICovKSB7CisgICAgRkFJTCgpIDw8
ICJHb29nbGUgVGVzdCBkb2VzIG5vdCB0cnkgdG8gY2F0Y2ggYW4gZXhjZXB0aW9uIG9mIHR5cGUg
IgorICAgICAgICAgICA8PCAiR29vZ2xlVGVzdEZhaWx1cmVFeGNlcHRpb24sIHdoaWNoIGlzIHVz
ZWQgZm9yIHJlcG9ydGluZyAiCisgICAgICAgICAgIDw8ICJhIGZhaWx1cmUgdG8gb3RoZXIgdGVz
dGluZyBmcmFtZXdvcmtzLiAgR29vZ2xlIE1vY2sgc2hvdWxkICIKKyAgICAgICAgICAgPDwgIm5v
dCB0aHJvdyBhIEdvb2dsZVRlc3RGYWlsdXJlRXhjZXB0aW9uIGFzIGl0IHdpbGwga2lsbCB0aGUg
IgorICAgICAgICAgICA8PCAiZW50aXJlIHRlc3QgcHJvZ3JhbSBpbnN0ZWFkIG9mIGp1c3QgdGhl
IGN1cnJlbnQgVEVTVC4iOworICB9IGNhdGNoIChjb25zdCBzdGQ6OmV4Y2VwdGlvbiYgZXgpIHsK
KyAgICBFWFBFQ1RfVEhBVChleC53aGF0KCksIEhhc1N1YnN0cigiaGFzIG5vIGRlZmF1bHQgdmFs
dWUiKSk7CisgIH0KK30KKworI2VuZGlmCisKK30gIC8vIHVubmFtZWQgbmFtZXNwYWNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2NrX2xlYWtfdGVzdC5weSBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2Nr
L3Rlc3QvZ21vY2tfbGVha190ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5NzY4MGNlMWFlYjExMTc4MmY4
NWFmOGEzYjRhZDU3MDRhYTkxMTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0
L2dtb2NrX2xlYWtfdGVzdC5weQpAQCAtMCwwICsxLDEwOCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0
aG9uCisjCisjIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJp
YnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiVGVzdHMgdGhhdCBsZWFrZWQgbW9jayBvYmpl
Y3RzIGNhbiBiZSBjYXVnaHQgYmUgR29vZ2xlIE1vY2suIiIiCisKK19fYXV0aG9yX18gPSAnd2Fu
QGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCisKKworaW1wb3J0IGdtb2NrX3Rlc3RfdXRpbHMK
KworCitQUk9HUkFNX1BBVEggPSBnbW9ja190ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0
aCgnZ21vY2tfbGVha190ZXN0XycpCitURVNUX1dJVEhfRVhQRUNUX0NBTEwgPSBbUFJPR1JBTV9Q
QVRILCAnLS1ndGVzdF9maWx0ZXI9KkV4cGVjdENhbGwqJ10KK1RFU1RfV0lUSF9PTl9DQUxMID0g
W1BST0dSQU1fUEFUSCwgJy0tZ3Rlc3RfZmlsdGVyPSpPbkNhbGwqJ10KK1RFU1RfTVVMVElQTEVf
TEVBS1MgPSBbUFJPR1JBTV9QQVRILCAnLS1ndGVzdF9maWx0ZXI9Kk11bHRpcGxlTGVha2VkKidd
CisKK2Vudmlyb24gPSBnbW9ja190ZXN0X3V0aWxzLmVudmlyb24KK1NldEVudlZhciA9IGdtb2Nr
X3Rlc3RfdXRpbHMuU2V0RW52VmFyCisKKyMgVGVzdHMgaW4gdGhpcyBmaWxlIHJ1biBhIEdvb2ds
ZS1UZXN0LWJhc2VkIHRlc3QgcHJvZ3JhbSBhbmQgZXhwZWN0IGl0CisjIHRvIHRlcm1pbmF0ZSBw
cmVtYXR1cmVseS4gIFRoZXJlZm9yZSB0aGV5IGFyZSBpbmNvbXBhdGlibGUgd2l0aAorIyB0aGUg
cHJlbWF0dXJlLWV4aXQtZmlsZSBwcm90b2NvbCBieSBkZXNpZ24uICBVbnNldCB0aGUKKyMgcHJl
bWF0dXJlLWV4aXQgZmlsZXBhdGggdG8gcHJldmVudCBHb29nbGUgVGVzdCBmcm9tIGNyZWF0aW5n
CisjIHRoZSBmaWxlLgorU2V0RW52VmFyKGdtb2NrX3Rlc3RfdXRpbHMuUFJFTUFUVVJFX0VYSVRf
RklMRV9FTlZfVkFSLCBOb25lKQorCisKK2NsYXNzIEdNb2NrTGVha1Rlc3QoZ21vY2tfdGVzdF91
dGlscy5UZXN0Q2FzZSk6CisKKyAgZGVmIHRlc3RDYXRjaGVzTGVha2VkTW9ja0J5RGVmYXVsdChz
ZWxmKToKKyAgICBzZWxmLmFzc2VydE5vdEVxdWFsKAorICAgICAgICAwLAorICAgICAgICBnbW9j
a190ZXN0X3V0aWxzLlN1YnByb2Nlc3MoVEVTVF9XSVRIX0VYUEVDVF9DQUxMLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PWVudmlyb24pLmV4aXRfY29kZSkKKyAgICBz
ZWxmLmFzc2VydE5vdEVxdWFsKAorICAgICAgICAwLAorICAgICAgICBnbW9ja190ZXN0X3V0aWxz
LlN1YnByb2Nlc3MoVEVTVF9XSVRIX09OX0NBTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbnY9ZW52aXJvbikuZXhpdF9jb2RlKQorCisgIGRlZiB0ZXN0RG9lc05vdENh
dGNoTGVha2VkTW9ja1doZW5EaXNhYmxlZChzZWxmKToKKyAgICBzZWxmLmFzc2VydEVxdWFscygK
KyAgICAgICAgMCwKKyAgICAgICAgZ21vY2tfdGVzdF91dGlscy5TdWJwcm9jZXNzKFRFU1RfV0lU
SF9FWFBFQ1RfQ0FMTCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJy0t
Z21vY2tfY2F0Y2hfbGVha2VkX21vY2tzPTAnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVudj1lbnZpcm9uKS5leGl0X2NvZGUpCisgICAgc2VsZi5hc3NlcnRFcXVhbHMo
CisgICAgICAgIDAsCisgICAgICAgIGdtb2NrX3Rlc3RfdXRpbHMuU3VicHJvY2VzcyhURVNUX1dJ
VEhfT05fQ0FMTCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJy0tZ21v
Y2tfY2F0Y2hfbGVha2VkX21vY2tzPTAnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVudj1lbnZpcm9uKS5leGl0X2NvZGUpCisKKyAgZGVmIHRlc3RDYXRjaGVzTGVha2Vk
TW9ja1doZW5FbmFibGVkKHNlbGYpOgorICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoCisgICAgICAg
IDAsCisgICAgICAgIGdtb2NrX3Rlc3RfdXRpbHMuU3VicHJvY2VzcyhURVNUX1dJVEhfRVhQRUNU
X0NBTEwgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyctLWdtb2NrX2Nh
dGNoX2xlYWtlZF9tb2NrcyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZW52PWVudmlyb24pLmV4aXRfY29kZSkKKyAgICBzZWxmLmFzc2VydE5vdEVxdWFsKAorICAgICAg
ICAwLAorICAgICAgICBnbW9ja190ZXN0X3V0aWxzLlN1YnByb2Nlc3MoVEVTVF9XSVRIX09OX0NB
TEwgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyctLWdtb2NrX2NhdGNo
X2xlYWtlZF9tb2NrcyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52
PWVudmlyb24pLmV4aXRfY29kZSkKKworICBkZWYgdGVzdENhdGNoZXNMZWFrZWRNb2NrV2hlbkVu
YWJsZWRXaXRoRXhwbGljdEZsYWdWYWx1ZShzZWxmKToKKyAgICBzZWxmLmFzc2VydE5vdEVxdWFs
KAorICAgICAgICAwLAorICAgICAgICBnbW9ja190ZXN0X3V0aWxzLlN1YnByb2Nlc3MoVEVTVF9X
SVRIX0VYUEVDVF9DQUxMICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsn
LS1nbW9ja19jYXRjaF9sZWFrZWRfbW9ja3M9MSddLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZW52PWVudmlyb24pLmV4aXRfY29kZSkKKworICBkZWYgdGVzdENhdGNoZXNN
dWx0aXBsZUxlYWtlZE1vY2tzKHNlbGYpOgorICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoCisgICAg
ICAgIDAsCisgICAgICAgIGdtb2NrX3Rlc3RfdXRpbHMuU3VicHJvY2VzcyhURVNUX01VTFRJUExF
X0xFQUtTICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnLS1nbW9ja19j
YXRjaF9sZWFrZWRfbW9ja3MnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVudj1lbnZpcm9uKS5leGl0X2NvZGUpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoK
KyAgZ21vY2tfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3Qv
Z21vY2tfbGVha190ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2tfbGVha190ZXN0Xy5j
YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xZDI3ZDIyZjYyZDdhODdiNWVhZDgzZDI2ZWYxOTFkMjEwODY1OTcwCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9ja19sZWFrX3Rlc3RfLmNjCkBA
IC0wLDAgKzEsMTAwIEBACisvLyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KKy8vIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBt
ZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
Ly8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8g
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisvLworLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorCisvLyBH
b29nbGUgTW9jayAtIGEgZnJhbWV3b3JrIGZvciB3cml0aW5nIEMrKyBtb2NrIGNsYXNzZXMuCisv
LworLy8gVGhpcyBwcm9ncmFtIGlzIGZvciB2ZXJpZnlpbmcgdGhhdCBhIGxlYWtlZCBtb2NrIG9i
amVjdCBjYW4gYmUKKy8vIGNhdWdodCBieSBHb29nbGUgTW9jaydzIGxlYWsgZGV0ZWN0b3IuCisK
KyNpbmNsdWRlICJnbW9jay9nbW9jay5oIgorCituYW1lc3BhY2UgeworCit1c2luZyA6OnRlc3Rp
bmc6OlJldHVybjsKKworY2xhc3MgRm9vSW50ZXJmYWNlIHsKKyBwdWJsaWM6CisgIHZpcnR1YWwg
fkZvb0ludGVyZmFjZSgpIHt9CisgIHZpcnR1YWwgdm9pZCBEb1RoaXMoKSA9IDA7Cit9OworCitj
bGFzcyBNb2NrRm9vIDogcHVibGljIEZvb0ludGVyZmFjZSB7CisgcHVibGljOgorICBNb2NrRm9v
KCkge30KKworICBNT0NLX01FVEhPRDAoRG9UaGlzLCB2b2lkKCkpOworCisgcHJpdmF0ZToKKyAg
R1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhNb2NrRm9vKTsKK307CisKK1RFU1QoTGVh
a1Rlc3QsIExlYWtlZE1vY2tXaXRoRXhwZWN0Q2FsbENhdXNlc0ZhaWx1cmVXaGVuTGVha0NoZWNr
aW5nSXNFbmFibGVkKSB7CisgIE1vY2tGb28qIGZvbyA9IG5ldyBNb2NrRm9vOworCisgIEVYUEVD
VF9DQUxMKCpmb28sIERvVGhpcygpKTsKKyAgZm9vLT5Eb1RoaXMoKTsKKworICAvLyBJbiBvcmRl
ciB0byB0ZXN0IHRoZSBsZWFrIGRldGVjdG9yLCB3ZSBkZWxpYmVyYXRlbHkgbGVhayBmb28uCisK
KyAgLy8gTWFrZXMgc3VyZSBHb29nbGUgTW9jaydzIGxlYWsgZGV0ZWN0b3IgY2FuIGNoYW5nZSB0
aGUgZXhpdCBjb2RlCisgIC8vIHRvIDEgZXZlbiB3aGVuIHRoZSBjb2RlIGlzIGFscmVhZHkgZXhp
dGluZyB3aXRoIDAuCisgIGV4aXQoMCk7Cit9CisKK1RFU1QoTGVha1Rlc3QsIExlYWtlZE1vY2tX
aXRoT25DYWxsQ2F1c2VzRmFpbHVyZVdoZW5MZWFrQ2hlY2tpbmdJc0VuYWJsZWQpIHsKKyAgTW9j
a0ZvbyogZm9vID0gbmV3IE1vY2tGb287CisKKyAgT05fQ0FMTCgqZm9vLCBEb1RoaXMoKSkuV2ls
bEJ5RGVmYXVsdChSZXR1cm4oKSk7CisKKyAgLy8gSW4gb3JkZXIgdG8gdGVzdCB0aGUgbGVhayBk
ZXRlY3Rvciwgd2UgZGVsaWJlcmF0ZWx5IGxlYWsgZm9vLgorCisgIC8vIE1ha2VzIHN1cmUgR29v
Z2xlIE1vY2sncyBsZWFrIGRldGVjdG9yIGNhbiBjaGFuZ2UgdGhlIGV4aXQgY29kZQorICAvLyB0
byAxIGV2ZW4gd2hlbiB0aGUgY29kZSBpcyBhbHJlYWR5IGV4aXRpbmcgd2l0aCAwLgorICBleGl0
KDApOworfQorCitURVNUKExlYWtUZXN0LCBDYXRjaGVzTXVsdGlwbGVMZWFrZWRNb2NrT2JqZWN0
cykgeworICBNb2NrRm9vKiBmb28xID0gbmV3IE1vY2tGb287CisgIE1vY2tGb28qIGZvbzIgPSBu
ZXcgTW9ja0ZvbzsKKworICBPTl9DQUxMKCpmb28xLCBEb1RoaXMoKSkuV2lsbEJ5RGVmYXVsdChS
ZXR1cm4oKSk7CisgIEVYUEVDVF9DQUxMKCpmb28yLCBEb1RoaXMoKSk7CisgIGZvbzItPkRvVGhp
cygpOworCisgIC8vIEluIG9yZGVyIHRvIHRlc3QgdGhlIGxlYWsgZGV0ZWN0b3IsIHdlIGRlbGli
ZXJhdGVseSBsZWFrIGZvbzEgYW5kCisgIC8vIGZvbzIuCisKKyAgLy8gTWFrZXMgc3VyZSBHb29n
bGUgTW9jaydzIGxlYWsgZGV0ZWN0b3IgY2FuIGNoYW5nZSB0aGUgZXhpdCBjb2RlCisgIC8vIHRv
IDEgZXZlbiB3aGVuIHRoZSBjb2RlIGlzIGFscmVhZHkgZXhpdGluZyB3aXRoIDAuCisgIGV4aXQo
MCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9n
bW9ja19saW5rMl90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9ja19saW5rMl90ZXN0LmNj
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRjMzEwYzNkODM0MmEwMWRjMWZmZGU3NTkwYWYyNDM0ZjRiY2NmZGQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2NrX2xpbmsyX3Rlc3QuY2MKQEAg
LTAsMCArMSw0MCBAQAorLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0
OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8v
CisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorLy8KKy8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiksIHZsYWRsQGdv
b2dsZS5jb20gKFZsYWQgTG9zZXYpCisKKy8vIEdvb2dsZSBNb2NrIC0gYSBmcmFtZXdvcmsgZm9y
IHdyaXRpbmcgQysrIG1vY2sgY2xhc3Nlcy4KKy8vCisvLyBUaGlzIGZpbGUgaXMgZm9yIHZlcmlm
eWluZyB0aGF0IHZhcmlvdXMgR29vZ2xlIE1vY2sgY29uc3RydWN0cyBkbyBub3QKKy8vIHByb2R1
Y2UgbGlua2VyIGVycm9ycyB3aGVuIGluc3RhbnRpYXRlZCBpbiBkaWZmZXJlbnQgdHJhbnNsYXRp
b24gdW5pdHMuCisvLyBQbGVhc2Ugc2VlIGdtb2NrX2xpbmtfdGVzdC5oIGZvciBkZXRhaWxzLgor
CisjZGVmaW5lIExpbmtUZXN0IExpbmtUZXN0MgorCisjaW5jbHVkZSAgInRlc3QvZ21vY2tfbGlu
a190ZXN0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2NrX2xpbmtfdGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2tfbGlua190ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxZTk3
ZDEwY2EzYWU4MTY5NzA1ZDBjZGI5OTZhNDY3OGZiOWMwZTIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xlbW9jay90ZXN0L2dtb2NrX2xpbmtfdGVzdC5jYwpAQCAtMCwwICsxLDQwIEBACisvLyBD
b3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLwor
Ly8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3Ry
aWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8v
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gQXV0aG9yOiB3
YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKSwgdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3Nl
dikKKworLy8gR29vZ2xlIE1vY2sgLSBhIGZyYW1ld29yayBmb3Igd3JpdGluZyBDKysgbW9jayBj
bGFzc2VzLgorLy8KKy8vIFRoaXMgZmlsZSBpcyBmb3IgdmVyaWZ5aW5nIHRoYXQgdmFyaW91cyBH
b29nbGUgTW9jayBjb25zdHJ1Y3RzIGRvIG5vdAorLy8gcHJvZHVjZSBsaW5rZXIgZXJyb3JzIHdo
ZW4gaW5zdGFudGlhdGVkIGluIGRpZmZlcmVudCB0cmFuc2xhdGlvbiB1bml0cy4KKy8vIFBsZWFz
ZSBzZWUgZ21vY2tfbGlua190ZXN0LmggZm9yIGRldGFpbHMuCisKKyNkZWZpbmUgTGlua1Rlc3Qg
TGlua1Rlc3QxCisKKyNpbmNsdWRlICAidGVzdC9nbW9ja19saW5rX3Rlc3QuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2tfbGlua190ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0
L2dtb2NrX2xpbmtfdGVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmNTVmNWJkN2Y0ZmYyOGYwYTk1NGM4ZDdi
ODY2OTY1OGVkZWZhZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2Nr
X2xpbmtfdGVzdC5oCkBAIC0wLDAgKzEsNjY5IEBACisvLyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xl
IEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
Ky8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gQXV0aG9yOiB2bGFkbEBnb29nbGUuY29tIChWbGFk
IExvc2V2KQorCisvLyBHb29nbGUgTW9jayAtIGEgZnJhbWV3b3JrIGZvciB3cml0aW5nIEMrKyBt
b2NrIGNsYXNzZXMuCisvLworLy8gVGhpcyBmaWxlIHRlc3RzIHRoYXQ6CisvLyBhLiBBIGhlYWRl
ciBmaWxlIGRlZmluaW5nIGEgbW9jayBjbGFzcyBjYW4gYmUgaW5jbHVkZWQgaW4gbXVsdGlwbGUK
Ky8vICAgIHRyYW5zbGF0aW9uIHVuaXRzIHdpdGhvdXQgY2F1c2luZyBhIGxpbmsgZXJyb3IuCisv
LyBiLiBBY3Rpb25zIGFuZCBtYXRjaGVycyBjYW4gYmUgaW5zdGFudGlhdGVkIHdpdGggaWRlbnRp
Y2FsIHRlbXBsYXRlCisvLyAgICBhcmd1bWVudHMgaW4gZGlmZmVyZW50IHRyYW5zbGF0aW9uIHVu
aXRzIHdpdGhvdXQgY2F1c2luZyBsaW5rCisvLyAgICBlcnJvcnMuCisvLyAgICBUaGUgZm9sbG93
aW5nIGNvbnN0cnVjdHMgYXJlIGN1cnJlbnRseSB0ZXN0ZWQ6CisvLyAgICBBY3Rpb25zOgorLy8g
ICAgICBSZXR1cm4oKQorLy8gICAgICBSZXR1cm4odmFsdWUpCisvLyAgICAgIFJldHVybk51bGwK
Ky8vICAgICAgUmV0dXJuUmVmCisvLyAgICAgIEFzc2lnbgorLy8gICAgICBTZXRBcmdQb2ludGVl
CisvLyAgICAgIFNldEFycmF5QXJndW1lbnQKKy8vICAgICAgU2V0RXJybm9BbmRSZXR1cm4KKy8v
ICAgICAgSW52b2tlKGZ1bmN0aW9uKQorLy8gICAgICBJbnZva2Uob2JqZWN0LCBtZXRob2QpCisv
LyAgICAgIEludm9rZVdpdGhvdXRBcmdzKGZ1bmN0aW9uKQorLy8gICAgICBJbnZva2VXaXRob3V0
QXJncyhvYmplY3QsIG1ldGhvZCkKKy8vICAgICAgSW52b2tlQXJndW1lbnQKKy8vICAgICAgV2l0
aEFyZworLy8gICAgICBXaXRoQXJncworLy8gICAgICBXaXRob3V0QXJncworLy8gICAgICBEb0Fs
bAorLy8gICAgICBEb0RlZmF1bHQKKy8vICAgICAgSWdub3JlUmVzdWx0CisvLyAgICAgIFRocm93
CisvLyAgICAgIEFDVElPTigpLWdlbmVyYXRlZAorLy8gICAgICBBQ1RJT05fUCgpLWdlbmVyYXRl
ZAorLy8gICAgICBBQ1RJT05fUDIoKS1nZW5lcmF0ZWQKKy8vICAgIE1hdGNoZXJzOgorLy8gICAg
ICBfCisvLyAgICAgIEEKKy8vICAgICAgQW4KKy8vICAgICAgRXEKKy8vICAgICAgR3QsIEx0LCBH
ZSwgTGUsIE5lCisvLyAgICAgIE5vdE51bGwKKy8vICAgICAgUmVmCisvLyAgICAgIFR5cGVkRXEK
Ky8vICAgICAgRG91YmxlRXEKKy8vICAgICAgRmxvYXRFcQorLy8gICAgICBOYW5TZW5zaXRpdmVE
b3VibGVFcQorLy8gICAgICBOYW5TZW5zaXRpdmVGbG9hdEVxCisvLyAgICAgIENvbnRhaW5zUmVn
ZXgKKy8vICAgICAgTWF0Y2hlc1JlZ2V4CisvLyAgICAgIEVuZHNXaXRoCisvLyAgICAgIEhhc1N1
YnN0cgorLy8gICAgICBTdGFydHNXaXRoCisvLyAgICAgIFN0ckNhc2VFcQorLy8gICAgICBTdHJD
YXNlTmUKKy8vICAgICAgU3RyRXEKKy8vICAgICAgU3RyTmUKKy8vICAgICAgRWxlbWVudHNBcmUK
Ky8vICAgICAgRWxlbWVudHNBcmVBcnJheQorLy8gICAgICBDb250YWluZXJFcQorLy8gICAgICBG
aWVsZAorLy8gICAgICBQcm9wZXJ0eQorLy8gICAgICBSZXN1bHRPZihmdW5jdGlvbikKKy8vICAg
ICAgUG9pbnRlZQorLy8gICAgICBUcnVseShwcmVkaWNhdGUpCisvLyAgICAgIEFsbE9mCisvLyAg
ICAgIEFueU9mCisvLyAgICAgIE5vdAorLy8gICAgICBNYXRjaGVyQ2FzdDxUPgorLy8KKy8vICBQ
bGVhc2Ugbm90ZTogdGhpcyB0ZXN0IGRvZXMgbm90IHZlcmlmeSB0aGUgZnVuY3Rpb25pbmcgb2Yg
dGhlc2UKKy8vICBjb25zdHJ1Y3RzLCBvbmx5IHRoYXQgdGhlIHByb2dyYW1zIHVzaW5nIHRoZW0g
d2lsbCBsaW5rIHN1Y2Nlc3NmdWxseS4KKy8vCisvLyBJbXBsZW1lbnRhdGlvbiBub3RlOgorLy8g
VGhpcyB0ZXN0IHJlcXVpcmVzIGlkZW50aWNhbCBkZWZpbml0aW9ucyBvZiBJbnRlcmZhY2UgYW5k
IE1vY2sgdG8gYmUKKy8vIGluY2x1ZGVkIGluIGRpZmZlcmVudCB0cmFuc2xhdGlvbiB1bml0cy4g
IFdlIGFjaGlldmUgdGhpcyBieSB3cml0aW5nCisvLyB0aGVtIGluIHRoaXMgaGVhZGVyIGFuZCAj
aW5jbHVkaW5nIGl0IGluIGdtb2NrX2xpbmtfdGVzdC5jYyBhbmQKKy8vIGdtb2NrX2xpbmsyX3Rl
c3QuY2MuICBCZWNhdXNlIHRoZSBzeW1ib2xzIGdlbmVyYXRlZCBieSB0aGUgY29tcGlsZXIgZm9y
CisvLyB0aG9zZSBjb25zdHJ1Y3RzIG11c3QgYmUgaWRlbnRpY2FsIGluIGJvdGggdHJhbnNsYXRp
b24gdW5pdHMsCisvLyBkZWZpbml0aW9ucyBvZiBJbnRlcmZhY2UgYW5kIE1vY2sgdGVzdHMgTVVT
VCBiZSBrZXB0IGluIHRoZSBTQU1FCisvLyBOT04tQU5PTllNT1VTIG5hbWVzcGFjZSBpbiB0aGlz
IGZpbGUuICBUaGUgdGVzdCBmaXh0dXJlIGNsYXNzIExpbmtUZXN0CisvLyBpcyBkZWZpbmVkIGFz
IExpbmtUZXN0MSBpbiBnbW9ja19saW5rX3Rlc3QuY2MgYW5kIGFzIExpbmtUZXN0MiBpbgorLy8g
Z21vY2tfbGluazJfdGVzdC5jYyB0byBhdm9pZCBwcm9kdWNpbmcgbGlua2VyIGVycm9ycy4KKwor
I2lmbmRlZiBHTU9DS19URVNUX0dNT0NLX0xJTktfVEVTVF9IXworI2RlZmluZSBHTU9DS19URVNU
X0dNT0NLX0xJTktfVEVTVF9IXworCisjaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKKworI2lmICFH
VEVTVF9PU19XSU5ET1dTX01PQklMRQorIyBpbmNsdWRlIDxlcnJuby5oPgorI2VuZGlmCisKKyNp
bmNsdWRlICJnbW9jay9pbnRlcm5hbC9nbW9jay1wb3J0LmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rl
c3QuaCIKKyNpbmNsdWRlIDxpb3N0cmVhbT4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKK3VzaW5nIHRl
c3Rpbmc6Ol87Cit1c2luZyB0ZXN0aW5nOjpBOwordXNpbmcgdGVzdGluZzo6QWxsT2Y7Cit1c2lu
ZyB0ZXN0aW5nOjpBbnlPZjsKK3VzaW5nIHRlc3Rpbmc6OkFzc2lnbjsKK3VzaW5nIHRlc3Rpbmc6
OkNvbnRhaW5lckVxOwordXNpbmcgdGVzdGluZzo6RG9BbGw7Cit1c2luZyB0ZXN0aW5nOjpEb0Rl
ZmF1bHQ7Cit1c2luZyB0ZXN0aW5nOjpEb3VibGVFcTsKK3VzaW5nIHRlc3Rpbmc6OkVsZW1lbnRz
QXJlOwordXNpbmcgdGVzdGluZzo6RWxlbWVudHNBcmVBcnJheTsKK3VzaW5nIHRlc3Rpbmc6OkVu
ZHNXaXRoOwordXNpbmcgdGVzdGluZzo6RXE7Cit1c2luZyB0ZXN0aW5nOjpGaWVsZDsKK3VzaW5n
IHRlc3Rpbmc6OkZsb2F0RXE7Cit1c2luZyB0ZXN0aW5nOjpHZTsKK3VzaW5nIHRlc3Rpbmc6Okd0
OwordXNpbmcgdGVzdGluZzo6SGFzU3Vic3RyOwordXNpbmcgdGVzdGluZzo6SWdub3JlUmVzdWx0
OwordXNpbmcgdGVzdGluZzo6SW52b2tlOwordXNpbmcgdGVzdGluZzo6SW52b2tlQXJndW1lbnQ7
Cit1c2luZyB0ZXN0aW5nOjpJbnZva2VXaXRob3V0QXJnczsKK3VzaW5nIHRlc3Rpbmc6OklzTnVs
bDsKK3VzaW5nIHRlc3Rpbmc6OkxlOwordXNpbmcgdGVzdGluZzo6THQ7Cit1c2luZyB0ZXN0aW5n
OjpNYXRjaGVyOwordXNpbmcgdGVzdGluZzo6TWF0Y2hlckNhc3Q7Cit1c2luZyB0ZXN0aW5nOjpO
YW5TZW5zaXRpdmVEb3VibGVFcTsKK3VzaW5nIHRlc3Rpbmc6Ok5hblNlbnNpdGl2ZUZsb2F0RXE7
Cit1c2luZyB0ZXN0aW5nOjpOZTsKK3VzaW5nIHRlc3Rpbmc6Ok5vdDsKK3VzaW5nIHRlc3Rpbmc6
Ok5vdE51bGw7Cit1c2luZyB0ZXN0aW5nOjpQb2ludGVlOwordXNpbmcgdGVzdGluZzo6UHJvcGVy
dHk7Cit1c2luZyB0ZXN0aW5nOjpSZWY7Cit1c2luZyB0ZXN0aW5nOjpSZXN1bHRPZjsKK3VzaW5n
IHRlc3Rpbmc6OlJldHVybjsKK3VzaW5nIHRlc3Rpbmc6OlJldHVybk51bGw7Cit1c2luZyB0ZXN0
aW5nOjpSZXR1cm5SZWY7Cit1c2luZyB0ZXN0aW5nOjpTZXRBcmdQb2ludGVlOwordXNpbmcgdGVz
dGluZzo6U2V0QXJyYXlBcmd1bWVudDsKK3VzaW5nIHRlc3Rpbmc6OlN0YXJ0c1dpdGg7Cit1c2lu
ZyB0ZXN0aW5nOjpTdHJDYXNlRXE7Cit1c2luZyB0ZXN0aW5nOjpTdHJDYXNlTmU7Cit1c2luZyB0
ZXN0aW5nOjpTdHJFcTsKK3VzaW5nIHRlc3Rpbmc6OlN0ck5lOwordXNpbmcgdGVzdGluZzo6VHJ1
bHk7Cit1c2luZyB0ZXN0aW5nOjpUeXBlZEVxOwordXNpbmcgdGVzdGluZzo6V2l0aEFyZzsKK3Vz
aW5nIHRlc3Rpbmc6OldpdGhBcmdzOwordXNpbmcgdGVzdGluZzo6V2l0aG91dEFyZ3M7CisKKyNp
ZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKK3VzaW5nIHRlc3Rpbmc6OlNldEVycm5vQW5kUmV0
dXJuOworI2VuZGlmCisKKyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwordXNpbmcgdGVzdGluZzo6
VGhyb3c7CisjZW5kaWYKKwordXNpbmcgdGVzdGluZzo6Q29udGFpbnNSZWdleDsKK3VzaW5nIHRl
c3Rpbmc6Ok1hdGNoZXNSZWdleDsKKworY2xhc3MgSW50ZXJmYWNlIHsKKyBwdWJsaWM6CisgIHZp
cnR1YWwgfkludGVyZmFjZSgpIHt9CisgIHZpcnR1YWwgdm9pZCBWb2lkRnJvbVN0cmluZyhjaGFy
KiBzdHIpID0gMDsKKyAgdmlydHVhbCBjaGFyKiBTdHJpbmdGcm9tU3RyaW5nKGNoYXIqIHN0cikg
PSAwOworICB2aXJ0dWFsIGludCBJbnRGcm9tU3RyaW5nKGNoYXIqIHN0cikgPSAwOworICB2aXJ0
dWFsIGludCYgSW50UmVmRnJvbVN0cmluZyhjaGFyKiBzdHIpID0gMDsKKyAgdmlydHVhbCB2b2lk
IFZvaWRGcm9tRnVuYyh2b2lkKCpmdW5jKShjaGFyKiBzdHIpKSA9IDA7CisgIHZpcnR1YWwgdm9p
ZCBWb2lkRnJvbUludFJlZihpbnQmIG4pID0gMDsgIC8vIE5PTElOVAorICB2aXJ0dWFsIHZvaWQg
Vm9pZEZyb21GbG9hdChmbG9hdCBuKSA9IDA7CisgIHZpcnR1YWwgdm9pZCBWb2lkRnJvbURvdWJs
ZShkb3VibGUgbikgPSAwOworICB2aXJ0dWFsIHZvaWQgVm9pZEZyb21WZWN0b3IoY29uc3Qgc3Rk
Ojp2ZWN0b3I8aW50PiYgdikgPSAwOworfTsKKworY2xhc3MgTW9jazogcHVibGljIEludGVyZmFj
ZSB7CisgcHVibGljOgorICBNb2NrKCkge30KKworICBNT0NLX01FVEhPRDEoVm9pZEZyb21TdHJp
bmcsIHZvaWQoY2hhciogc3RyKSk7CisgIE1PQ0tfTUVUSE9EMShTdHJpbmdGcm9tU3RyaW5nLCBj
aGFyKihjaGFyKiBzdHIpKTsKKyAgTU9DS19NRVRIT0QxKEludEZyb21TdHJpbmcsIGludChjaGFy
KiBzdHIpKTsKKyAgTU9DS19NRVRIT0QxKEludFJlZkZyb21TdHJpbmcsIGludCYoY2hhciogc3Ry
KSk7CisgIE1PQ0tfTUVUSE9EMShWb2lkRnJvbUZ1bmMsIHZvaWQodm9pZCgqZnVuYykoY2hhciog
c3RyKSkpOworICBNT0NLX01FVEhPRDEoVm9pZEZyb21JbnRSZWYsIHZvaWQoaW50JiBuKSk7ICAv
LyBOT0xJTlQKKyAgTU9DS19NRVRIT0QxKFZvaWRGcm9tRmxvYXQsIHZvaWQoZmxvYXQgbikpOwor
ICBNT0NLX01FVEhPRDEoVm9pZEZyb21Eb3VibGUsIHZvaWQoZG91YmxlIG4pKTsKKyAgTU9DS19N
RVRIT0QxKFZvaWRGcm9tVmVjdG9yLCB2b2lkKGNvbnN0IHN0ZDo6dmVjdG9yPGludD4mIHYpKTsK
KworIHByaXZhdGU6CisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oTW9jayk7Cit9
OworCitjbGFzcyBJbnZva2VIZWxwZXIgeworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgU3RhdGlj
Vm9pZEZyb21Wb2lkKCkge30KKyAgdm9pZCBWb2lkRnJvbVZvaWQoKSB7fQorICBzdGF0aWMgdm9p
ZCBTdGF0aWNWb2lkRnJvbVN0cmluZyhjaGFyKiAvKiBzdHIgKi8pIHt9CisgIHZvaWQgVm9pZEZy
b21TdHJpbmcoY2hhciogLyogc3RyICovKSB7fQorICBzdGF0aWMgaW50IFN0YXRpY0ludEZyb21T
dHJpbmcoY2hhciogLyogc3RyICovKSB7IHJldHVybiAxOyB9CisgIHN0YXRpYyBib29sIFN0YXRp
Y0Jvb2xGcm9tU3RyaW5nKGNvbnN0IGNoYXIqIC8qIHN0ciAqLykgeyByZXR1cm4gdHJ1ZTsgfQor
fTsKKworY2xhc3MgRmllbGRIZWxwZXIgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgRmllbGRIZWxw
ZXIoaW50IGFfZmllbGQpIDogZmllbGRfKGFfZmllbGQpIHt9CisgIGludCBmaWVsZCgpIGNvbnN0
IHsgcmV0dXJuIGZpZWxkXzsgfQorICBpbnQgZmllbGRfOyAgLy8gTk9MSU5UIC0tIG5lZWQgZXh0
ZXJuYWwgYWNjZXNzIHRvIGZpZWxkXyB0byB0ZXN0CisgICAgICAgICAgICAgICAvLyAgICAgICAg
ICAgdGhlIEZpZWxkIG1hdGNoZXIuCit9OworCisvLyBUZXN0cyB0aGUgbGlua2FnZSBvZiB0aGUg
UmV0dXJuVm9pZCBhY3Rpb24uCitURVNUKExpbmtUZXN0LCBUZXN0UmV0dXJuVm9pZCkgeworICBN
b2NrIG1vY2s7CisKKyAgRVhQRUNUX0NBTEwobW9jaywgVm9pZEZyb21TdHJpbmcoXykpLldpbGxP
bmNlKFJldHVybigpKTsKKyAgbW9jay5Wb2lkRnJvbVN0cmluZyhOVUxMKTsKK30KKworLy8gVGVz
dHMgdGhlIGxpbmthZ2Ugb2YgdGhlIFJldHVybiBhY3Rpb24uCitURVNUKExpbmtUZXN0LCBUZXN0
UmV0dXJuKSB7CisgIE1vY2sgbW9jazsKKyAgY2hhciBjaCA9ICd4JzsKKworICBFWFBFQ1RfQ0FM
TChtb2NrLCBTdHJpbmdGcm9tU3RyaW5nKF8pKS5XaWxsT25jZShSZXR1cm4oJmNoKSk7CisgIG1v
Y2suU3RyaW5nRnJvbVN0cmluZyhOVUxMKTsKK30KKworLy8gVGVzdHMgdGhlIGxpbmthZ2Ugb2Yg
dGhlIFJldHVybk51bGwgYWN0aW9uLgorVEVTVChMaW5rVGVzdCwgVGVzdFJldHVybk51bGwpIHsK
KyAgTW9jayBtb2NrOworCisgIEVYUEVDVF9DQUxMKG1vY2ssIFZvaWRGcm9tU3RyaW5nKF8pKS5X
aWxsT25jZShSZXR1cm4oKSk7CisgIG1vY2suVm9pZEZyb21TdHJpbmcoTlVMTCk7Cit9CisKKy8v
IFRlc3RzIHRoZSBsaW5rYWdlIG9mIHRoZSBSZXR1cm5SZWYgYWN0aW9uLgorVEVTVChMaW5rVGVz
dCwgVGVzdFJldHVyblJlZikgeworICBNb2NrIG1vY2s7CisgIGludCBuID0gNDI7CisKKyAgRVhQ
RUNUX0NBTEwobW9jaywgSW50UmVmRnJvbVN0cmluZyhfKSkuV2lsbE9uY2UoUmV0dXJuUmVmKG4p
KTsKKyAgbW9jay5JbnRSZWZGcm9tU3RyaW5nKE5VTEwpOworfQorCisvLyBUZXN0cyB0aGUgbGlu
a2FnZSBvZiB0aGUgQXNzaWduIGFjdGlvbi4KK1RFU1QoTGlua1Rlc3QsIFRlc3RBc3NpZ24pIHsK
KyAgTW9jayBtb2NrOworICBjaGFyIGNoID0gJ3gnOworCisgIEVYUEVDVF9DQUxMKG1vY2ssIFZv
aWRGcm9tU3RyaW5nKF8pKS5XaWxsT25jZShBc3NpZ24oJmNoLCAneScpKTsKKyAgbW9jay5Wb2lk
RnJvbVN0cmluZyhOVUxMKTsKK30KKworLy8gVGVzdHMgdGhlIGxpbmthZ2Ugb2YgdGhlIFNldEFy
Z1BvaW50ZWUgYWN0aW9uLgorVEVTVChMaW5rVGVzdCwgVGVzdFNldEFyZ1BvaW50ZWUpIHsKKyAg
TW9jayBtb2NrOworICBjaGFyIGNoID0gJ3gnOworCisgIEVYUEVDVF9DQUxMKG1vY2ssIFZvaWRG
cm9tU3RyaW5nKF8pKS5XaWxsT25jZShTZXRBcmdQb2ludGVlPDA+KCd5JykpOworICBtb2NrLlZv
aWRGcm9tU3RyaW5nKCZjaCk7Cit9CisKKy8vIFRlc3RzIHRoZSBsaW5rYWdlIG9mIHRoZSBTZXRB
cnJheUFyZ3VtZW50IGFjdGlvbi4KK1RFU1QoTGlua1Rlc3QsIFRlc3RTZXRBcnJheUFyZ3VtZW50
KSB7CisgIE1vY2sgbW9jazsKKyAgY2hhciBjaCA9ICd4JzsKKyAgY2hhciBjaDIgPSAneSc7CisK
KyAgRVhQRUNUX0NBTEwobW9jaywgVm9pZEZyb21TdHJpbmcoXykpLldpbGxPbmNlKFNldEFycmF5
QXJndW1lbnQ8MD4oJmNoMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNoMiArIDEpKTsKKyAgbW9jay5Wb2lkRnJv
bVN0cmluZygmY2gpOworfQorCisjaWYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisKKy8vIFRl
c3RzIHRoZSBsaW5rYWdlIG9mIHRoZSBTZXRFcnJub0FuZFJldHVybiBhY3Rpb24uCitURVNUKExp
bmtUZXN0LCBUZXN0U2V0RXJybm9BbmRSZXR1cm4pIHsKKyAgTW9jayBtb2NrOworCisgIGludCBz
YXZlZF9lcnJubyA9IGVycm5vOworICBFWFBFQ1RfQ0FMTChtb2NrLCBJbnRGcm9tU3RyaW5nKF8p
KS5XaWxsT25jZShTZXRFcnJub0FuZFJldHVybigxLCAtMSkpOworICBtb2NrLkludEZyb21TdHJp
bmcoTlVMTCk7CisgIGVycm5vID0gc2F2ZWRfZXJybm87Cit9CisKKyNlbmRpZiAgLy8gIUdURVNU
X09TX1dJTkRPV1NfTU9CSUxFCisKKy8vIFRlc3RzIHRoZSBsaW5rYWdlIG9mIHRoZSBJbnZva2Uo
ZnVuY3Rpb24pIGFuZCBJbnZva2Uob2JqZWN0LCBtZXRob2QpIGFjdGlvbnMuCitURVNUKExpbmtU
ZXN0LCBUZXN0SW52b2tlKSB7CisgIE1vY2sgbW9jazsKKyAgSW52b2tlSGVscGVyIHRlc3RfaW52
b2tlX2hlbHBlcjsKKworICBFWFBFQ1RfQ0FMTChtb2NrLCBWb2lkRnJvbVN0cmluZyhfKSkKKyAg
ICAgIC5XaWxsT25jZShJbnZva2UoJkludm9rZUhlbHBlcjo6U3RhdGljVm9pZEZyb21TdHJpbmcp
KQorICAgICAgLldpbGxPbmNlKEludm9rZSgmdGVzdF9pbnZva2VfaGVscGVyLCAmSW52b2tlSGVs
cGVyOjpWb2lkRnJvbVN0cmluZykpOworICBtb2NrLlZvaWRGcm9tU3RyaW5nKE5VTEwpOworICBt
b2NrLlZvaWRGcm9tU3RyaW5nKE5VTEwpOworfQorCisvLyBUZXN0cyB0aGUgbGlua2FnZSBvZiB0
aGUgSW52b2tlV2l0aG91dEFyZ3MgYWN0aW9uLgorVEVTVChMaW5rVGVzdCwgVGVzdEludm9rZVdp
dGhvdXRBcmdzKSB7CisgIE1vY2sgbW9jazsKKyAgSW52b2tlSGVscGVyIHRlc3RfaW52b2tlX2hl
bHBlcjsKKworICBFWFBFQ1RfQ0FMTChtb2NrLCBWb2lkRnJvbVN0cmluZyhfKSkKKyAgICAgIC5X
aWxsT25jZShJbnZva2VXaXRob3V0QXJncygmSW52b2tlSGVscGVyOjpTdGF0aWNWb2lkRnJvbVZv
aWQpKQorICAgICAgLldpbGxPbmNlKEludm9rZVdpdGhvdXRBcmdzKCZ0ZXN0X2ludm9rZV9oZWxw
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkludm9rZUhlbHBlcjo6Vm9p
ZEZyb21Wb2lkKSk7CisgIG1vY2suVm9pZEZyb21TdHJpbmcoTlVMTCk7CisgIG1vY2suVm9pZEZy
b21TdHJpbmcoTlVMTCk7Cit9CisKKy8vIFRlc3RzIHRoZSBsaW5rYWdlIG9mIHRoZSBJbnZva2VB
cmd1bWVudCBhY3Rpb24uCitURVNUKExpbmtUZXN0LCBUZXN0SW52b2tlQXJndW1lbnQpIHsKKyAg
TW9jayBtb2NrOworICBjaGFyIGNoID0gJ3gnOworCisgIEVYUEVDVF9DQUxMKG1vY2ssIFZvaWRG
cm9tRnVuYyhfKSkuV2lsbE9uY2UoSW52b2tlQXJndW1lbnQ8MD4oJmNoKSk7CisgIG1vY2suVm9p
ZEZyb21GdW5jKEludm9rZUhlbHBlcjo6U3RhdGljVm9pZEZyb21TdHJpbmcpOworfQorCisvLyBU
ZXN0cyB0aGUgbGlua2FnZSBvZiB0aGUgV2l0aEFyZyBhY3Rpb24uCitURVNUKExpbmtUZXN0LCBU
ZXN0V2l0aEFyZykgeworICBNb2NrIG1vY2s7CisKKyAgRVhQRUNUX0NBTEwobW9jaywgVm9pZEZy
b21TdHJpbmcoXykpCisgICAgICAuV2lsbE9uY2UoV2l0aEFyZzwwPihJbnZva2UoJkludm9rZUhl
bHBlcjo6U3RhdGljVm9pZEZyb21TdHJpbmcpKSk7CisgIG1vY2suVm9pZEZyb21TdHJpbmcoTlVM
TCk7Cit9CisKKy8vIFRlc3RzIHRoZSBsaW5rYWdlIG9mIHRoZSBXaXRoQXJncyBhY3Rpb24uCitU
RVNUKExpbmtUZXN0LCBUZXN0V2l0aEFyZ3MpIHsKKyAgTW9jayBtb2NrOworCisgIEVYUEVDVF9D
QUxMKG1vY2ssIFZvaWRGcm9tU3RyaW5nKF8pKQorICAgICAgLldpbGxPbmNlKFdpdGhBcmdzPDA+
KEludm9rZSgmSW52b2tlSGVscGVyOjpTdGF0aWNWb2lkRnJvbVN0cmluZykpKTsKKyAgbW9jay5W
b2lkRnJvbVN0cmluZyhOVUxMKTsKK30KKworLy8gVGVzdHMgdGhlIGxpbmthZ2Ugb2YgdGhlIFdp
dGhvdXRBcmdzIGFjdGlvbi4KK1RFU1QoTGlua1Rlc3QsIFRlc3RXaXRob3V0QXJncykgeworICBN
b2NrIG1vY2s7CisKKyAgRVhQRUNUX0NBTEwobW9jaywgVm9pZEZyb21TdHJpbmcoXykpLldpbGxP
bmNlKFdpdGhvdXRBcmdzKFJldHVybigpKSk7CisgIG1vY2suVm9pZEZyb21TdHJpbmcoTlVMTCk7
Cit9CisKKy8vIFRlc3RzIHRoZSBsaW5rYWdlIG9mIHRoZSBEb0FsbCBhY3Rpb24uCitURVNUKExp
bmtUZXN0LCBUZXN0RG9BbGwpIHsKKyAgTW9jayBtb2NrOworICBjaGFyIGNoID0gJ3gnOworCisg
IEVYUEVDVF9DQUxMKG1vY2ssIFZvaWRGcm9tU3RyaW5nKF8pKQorICAgICAgLldpbGxPbmNlKERv
QWxsKFNldEFyZ1BvaW50ZWU8MD4oJ3knKSwgUmV0dXJuKCkpKTsKKyAgbW9jay5Wb2lkRnJvbVN0
cmluZygmY2gpOworfQorCisvLyBUZXN0cyB0aGUgbGlua2FnZSBvZiB0aGUgRG9EZWZhdWx0IGFj
dGlvbi4KK1RFU1QoTGlua1Rlc3QsIFRlc3REb0RlZmF1bHQpIHsKKyAgTW9jayBtb2NrOworICBj
aGFyIGNoID0gJ3gnOworCisgIE9OX0NBTEwobW9jaywgVm9pZEZyb21TdHJpbmcoXykpLldpbGxC
eURlZmF1bHQoUmV0dXJuKCkpOworICBFWFBFQ1RfQ0FMTChtb2NrLCBWb2lkRnJvbVN0cmluZyhf
KSkuV2lsbE9uY2UoRG9EZWZhdWx0KCkpOworICBtb2NrLlZvaWRGcm9tU3RyaW5nKCZjaCk7Cit9
CisKKy8vIFRlc3RzIHRoZSBsaW5rYWdlIG9mIHRoZSBJZ25vcmVSZXN1bHQgYWN0aW9uLgorVEVT
VChMaW5rVGVzdCwgVGVzdElnbm9yZVJlc3VsdCkgeworICBNb2NrIG1vY2s7CisKKyAgRVhQRUNU
X0NBTEwobW9jaywgVm9pZEZyb21TdHJpbmcoXykpLldpbGxPbmNlKElnbm9yZVJlc3VsdChSZXR1
cm4oNDIpKSk7CisgIG1vY2suVm9pZEZyb21TdHJpbmcoTlVMTCk7Cit9CisKKyNpZiBHVEVTVF9I
QVNfRVhDRVBUSU9OUworLy8gVGVzdHMgdGhlIGxpbmthZ2Ugb2YgdGhlIFRocm93IGFjdGlvbi4K
K1RFU1QoTGlua1Rlc3QsIFRlc3RUaHJvdykgeworICBNb2NrIG1vY2s7CisKKyAgRVhQRUNUX0NB
TEwobW9jaywgVm9pZEZyb21TdHJpbmcoXykpLldpbGxPbmNlKFRocm93KDQyKSk7CisgIEVYUEVD
VF9USFJPVyhtb2NrLlZvaWRGcm9tU3RyaW5nKE5VTEwpLCBpbnQpOworfQorI2VuZGlmICAvLyBH
VEVTVF9IQVNfRVhDRVBUSU9OUworCisvLyBUaGUgQUNUSU9OKigpIG1hY3JvcyB0cmlnZ2VyIHdh
cm5pbmcgQzQxMDAgKHVucmVmZXJlbmNlZCBmb3JtYWwKKy8vIHBhcmFtZXRlcikgaW4gTVNWQyB3
aXRoIC1XNC4gIFVuZm9ydHVuYXRlbHkgdGhleSBjYW5ub3QgYmUgZml4ZWQgaW4KKy8vIHRoZSBt
YWNybyBkZWZpbml0aW9uLCBhcyB0aGUgd2FybmluZ3MgYXJlIGdlbmVyYXRlZCB3aGVuIHRoZSBt
YWNybworLy8gaXMgZXhwYW5kZWQgYW5kIG1hY3JvIGV4cGFuc2lvbiBjYW5ub3QgY29udGFpbiAj
cHJhZ21hLiAgVGhlcmVmb3JlCisvLyB3ZSBzdXBwcmVzcyB0aGVtIGhlcmUuCisjaWZkZWYgX01T
Q19WRVIKKyMgcHJhZ21hIHdhcm5pbmcocHVzaCkKKyMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0
MTAwKQorI2VuZGlmCisKKy8vIFRlc3RzIHRoZSBsaW5rYWdlIG9mIGFjdGlvbnMgY3JlYXRlZCB1
c2luZyBBQ1RJT04gbWFjcm8uCituYW1lc3BhY2UgeworQUNUSU9OKFJldHVybjEpIHsgcmV0dXJu
IDE7IH0KK30KKworVEVTVChMaW5rVGVzdCwgVGVzdEFjdGlvbk1hY3JvKSB7CisgIE1vY2sgbW9j
azsKKworICBFWFBFQ1RfQ0FMTChtb2NrLCBJbnRGcm9tU3RyaW5nKF8pKS5XaWxsT25jZShSZXR1
cm4xKCkpOworICBtb2NrLkludEZyb21TdHJpbmcoTlVMTCk7Cit9CisKKy8vIFRlc3RzIHRoZSBs
aW5rYWdlIG9mIGFjdGlvbnMgY3JlYXRlZCB1c2luZyBBQ1RJT05fUCBtYWNyby4KK25hbWVzcGFj
ZSB7CitBQ1RJT05fUChSZXR1cm5Bcmd1bWVudCwgcmV0X3ZhbHVlKSB7IHJldHVybiByZXRfdmFs
dWU7IH0KK30KKworVEVTVChMaW5rVGVzdCwgVGVzdEFjdGlvblBNYWNybykgeworICBNb2NrIG1v
Y2s7CisKKyAgRVhQRUNUX0NBTEwobW9jaywgSW50RnJvbVN0cmluZyhfKSkuV2lsbE9uY2UoUmV0
dXJuQXJndW1lbnQoNDIpKTsKKyAgbW9jay5JbnRGcm9tU3RyaW5nKE5VTEwpOworfQorCisvLyBU
ZXN0cyB0aGUgbGlua2FnZSBvZiBhY3Rpb25zIGNyZWF0ZWQgdXNpbmcgQUNUSU9OX1AyIG1hY3Jv
LgorbmFtZXNwYWNlIHsKK0FDVElPTl9QMihSZXR1cm5FcXVhbHNFaXRoZXJPZiwgZmlyc3QsIHNl
Y29uZCkgeworICByZXR1cm4gYXJnMCA9PSBmaXJzdCB8fCBhcmcwID09IHNlY29uZDsKK30KK30K
KworI2lmZGVmIF9NU0NfVkVSCisjIHByYWdtYSB3YXJuaW5nKHBvcCkKKyNlbmRpZgorCitURVNU
KExpbmtUZXN0LCBUZXN0QWN0aW9uUDJNYWNybykgeworICBNb2NrIG1vY2s7CisgIGNoYXIgY2gg
PSAneCc7CisKKyAgRVhQRUNUX0NBTEwobW9jaywgSW50RnJvbVN0cmluZyhfKSkKKyAgICAgIC5X
aWxsT25jZShSZXR1cm5FcXVhbHNFaXRoZXJPZigib25lIiwgInR3byIpKTsKKyAgbW9jay5JbnRG
cm9tU3RyaW5nKCZjaCk7Cit9CisKKy8vIFRlc3RzIHRoZSBsaW5rYWdlIG9mIHRoZSAiXyIgbWF0
Y2hlci4KK1RFU1QoTGlua1Rlc3QsIFRlc3RNYXRjaGVyQW55dGhpbmcpIHsKKyAgTW9jayBtb2Nr
OworCisgIE9OX0NBTEwobW9jaywgVm9pZEZyb21TdHJpbmcoXykpLldpbGxCeURlZmF1bHQoUmV0
dXJuKCkpOworfQorCisvLyBUZXN0cyB0aGUgbGlua2FnZSBvZiB0aGUgQSBtYXRjaGVyLgorVEVT
VChMaW5rVGVzdCwgVGVzdE1hdGNoZXJBKSB7CisgIE1vY2sgbW9jazsKKworICBPTl9DQUxMKG1v
Y2ssIFZvaWRGcm9tU3RyaW5nKEE8Y2hhcio+KCkpKS5XaWxsQnlEZWZhdWx0KFJldHVybigpKTsK
K30KKworLy8gVGVzdHMgdGhlIGxpbmthZ2Ugb2YgdGhlIEVxIGFuZCB0aGUgImJhcmUgdmFsdWUi
IG1hdGNoZXIuCitURVNUKExpbmtUZXN0LCBUZXN0TWF0Y2hlcnNFcSkgeworICBNb2NrIG1vY2s7
CisgIGNvbnN0IGNoYXIqIHAgPSAieCI7CisKKyAgT05fQ0FMTChtb2NrLCBWb2lkRnJvbVN0cmlu
ZyhFcShwKSkpLldpbGxCeURlZmF1bHQoUmV0dXJuKCkpOworICBPTl9DQUxMKG1vY2ssIFZvaWRG
cm9tU3RyaW5nKGNvbnN0X2Nhc3Q8Y2hhcio+KCJ5IikpKQorICAgICAgLldpbGxCeURlZmF1bHQo
UmV0dXJuKCkpOworfQorCisvLyBUZXN0cyB0aGUgbGlua2FnZSBvZiB0aGUgTHQsIEd0LCBMZSwg
R2UsIGFuZCBOZSBtYXRjaGVycy4KK1RFU1QoTGlua1Rlc3QsIFRlc3RNYXRjaGVyc1JlbGF0aW9u
cykgeworICBNb2NrIG1vY2s7CisKKyAgT05fQ0FMTChtb2NrLCBWb2lkRnJvbUZsb2F0KEx0KDEu
MGYpKSkuV2lsbEJ5RGVmYXVsdChSZXR1cm4oKSk7CisgIE9OX0NBTEwobW9jaywgVm9pZEZyb21G
bG9hdChHdCgxLjBmKSkpLldpbGxCeURlZmF1bHQoUmV0dXJuKCkpOworICBPTl9DQUxMKG1vY2ss
IFZvaWRGcm9tRmxvYXQoTGUoMS4wZikpKS5XaWxsQnlEZWZhdWx0KFJldHVybigpKTsKKyAgT05f
Q0FMTChtb2NrLCBWb2lkRnJvbUZsb2F0KEdlKDEuMGYpKSkuV2lsbEJ5RGVmYXVsdChSZXR1cm4o
KSk7CisgIE9OX0NBTEwobW9jaywgVm9pZEZyb21GbG9hdChOZSgxLjBmKSkpLldpbGxCeURlZmF1
bHQoUmV0dXJuKCkpOworfQorCisvLyBUZXN0cyB0aGUgbGlua2FnZSBvZiB0aGUgTm90TnVsbCBt
YXRjaGVyLgorVEVTVChMaW5rVGVzdCwgVGVzdE1hdGNoZXJOb3ROdWxsKSB7CisgIE1vY2sgbW9j
azsKKworICBPTl9DQUxMKG1vY2ssIFZvaWRGcm9tU3RyaW5nKE5vdE51bGwoKSkpLldpbGxCeURl
ZmF1bHQoUmV0dXJuKCkpOworfQorCisvLyBUZXN0cyB0aGUgbGlua2FnZSBvZiB0aGUgSXNOdWxs
IG1hdGNoZXIuCitURVNUKExpbmtUZXN0LCBUZXN0TWF0Y2hlcklzTnVsbCkgeworICBNb2NrIG1v
Y2s7CisKKyAgT05fQ0FMTChtb2NrLCBWb2lkRnJvbVN0cmluZyhJc051bGwoKSkpLldpbGxCeURl
ZmF1bHQoUmV0dXJuKCkpOworfQorCisvLyBUZXN0cyB0aGUgbGlua2FnZSBvZiB0aGUgUmVmIG1h
dGNoZXIuCitURVNUKExpbmtUZXN0LCBUZXN0TWF0Y2hlclJlZikgeworICBNb2NrIG1vY2s7Cisg
IGludCBhID0gMDsKKworICBPTl9DQUxMKG1vY2ssIFZvaWRGcm9tSW50UmVmKFJlZihhKSkpLldp
bGxCeURlZmF1bHQoUmV0dXJuKCkpOworfQorCisvLyBUZXN0cyB0aGUgbGlua2FnZSBvZiB0aGUg
VHlwZWRFcSBtYXRjaGVyLgorVEVTVChMaW5rVGVzdCwgVGVzdE1hdGNoZXJUeXBlZEVxKSB7Cisg
IE1vY2sgbW9jazsKKyAgbG9uZyBhID0gMDsKKworICBPTl9DQUxMKG1vY2ssIFZvaWRGcm9tSW50
UmVmKFR5cGVkRXE8aW50Jj4oYSkpKS5XaWxsQnlEZWZhdWx0KFJldHVybigpKTsKK30KKworLy8g
VGVzdHMgdGhlIGxpbmthZ2Ugb2YgdGhlIEZsb2F0RXEsIERvdWJsZUVxLCBOYW5TZW5zaXRpdmVG
bG9hdEVxIGFuZAorLy8gTmFuU2Vuc2l0aXZlRG91YmxlRXEgbWF0Y2hlcnMuCitURVNUKExpbmtU
ZXN0LCBUZXN0TWF0Y2hlcnNGbG9hdGluZ1BvaW50KSB7CisgIE1vY2sgbW9jazsKKyAgZmxvYXQg
YSA9IDA7CisKKyAgT05fQ0FMTChtb2NrLCBWb2lkRnJvbUZsb2F0KEZsb2F0RXEoYSkpKS5XaWxs
QnlEZWZhdWx0KFJldHVybigpKTsKKyAgT05fQ0FMTChtb2NrLCBWb2lkRnJvbURvdWJsZShEb3Vi
bGVFcShhKSkpLldpbGxCeURlZmF1bHQoUmV0dXJuKCkpOworICBPTl9DQUxMKG1vY2ssIFZvaWRG
cm9tRmxvYXQoTmFuU2Vuc2l0aXZlRmxvYXRFcShhKSkpLldpbGxCeURlZmF1bHQoUmV0dXJuKCkp
OworICBPTl9DQUxMKG1vY2ssIFZvaWRGcm9tRG91YmxlKE5hblNlbnNpdGl2ZURvdWJsZUVxKGEp
KSkKKyAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybigpKTsKK30KKworLy8gVGVzdHMgdGhlIGxp
bmthZ2Ugb2YgdGhlIENvbnRhaW5zUmVnZXggbWF0Y2hlci4KK1RFU1QoTGlua1Rlc3QsIFRlc3RN
YXRjaGVyQ29udGFpbnNSZWdleCkgeworICBNb2NrIG1vY2s7CisKKyAgT05fQ0FMTChtb2NrLCBW
b2lkRnJvbVN0cmluZyhDb250YWluc1JlZ2V4KCIuKiIpKSkuV2lsbEJ5RGVmYXVsdChSZXR1cm4o
KSk7Cit9CisKKy8vIFRlc3RzIHRoZSBsaW5rYWdlIG9mIHRoZSBNYXRjaGVzUmVnZXggbWF0Y2hl
ci4KK1RFU1QoTGlua1Rlc3QsIFRlc3RNYXRjaGVyTWF0Y2hlc1JlZ2V4KSB7CisgIE1vY2sgbW9j
azsKKworICBPTl9DQUxMKG1vY2ssIFZvaWRGcm9tU3RyaW5nKE1hdGNoZXNSZWdleCgiLioiKSkp
LldpbGxCeURlZmF1bHQoUmV0dXJuKCkpOworfQorCisvLyBUZXN0cyB0aGUgbGlua2FnZSBvZiB0
aGUgU3RhcnRzV2l0aCwgRW5kc1dpdGgsIGFuZCBIYXNTdWJzdHIgbWF0Y2hlcnMuCitURVNUKExp
bmtUZXN0LCBUZXN0TWF0Y2hlcnNTdWJzdHJpbmdzKSB7CisgIE1vY2sgbW9jazsKKworICBPTl9D
QUxMKG1vY2ssIFZvaWRGcm9tU3RyaW5nKFN0YXJ0c1dpdGgoImEiKSkpLldpbGxCeURlZmF1bHQo
UmV0dXJuKCkpOworICBPTl9DQUxMKG1vY2ssIFZvaWRGcm9tU3RyaW5nKEVuZHNXaXRoKCJjIikp
KS5XaWxsQnlEZWZhdWx0KFJldHVybigpKTsKKyAgT05fQ0FMTChtb2NrLCBWb2lkRnJvbVN0cmlu
ZyhIYXNTdWJzdHIoImIiKSkpLldpbGxCeURlZmF1bHQoUmV0dXJuKCkpOworfQorCisvLyBUZXN0
cyB0aGUgbGlua2FnZSBvZiB0aGUgU3RyRXEsIFN0ck5lLCBTdHJDYXNlRXEsIGFuZCBTdHJDYXNl
TmUgbWF0Y2hlcnMuCitURVNUKExpbmtUZXN0LCBUZXN0TWF0Y2hlcnNTdHJpbmdFcXVhbGl0eSkg
eworICBNb2NrIG1vY2s7CisgIE9OX0NBTEwobW9jaywgVm9pZEZyb21TdHJpbmcoU3RyRXEoImEi
KSkpLldpbGxCeURlZmF1bHQoUmV0dXJuKCkpOworICBPTl9DQUxMKG1vY2ssIFZvaWRGcm9tU3Ry
aW5nKFN0ck5lKCJhIikpKS5XaWxsQnlEZWZhdWx0KFJldHVybigpKTsKKyAgT05fQ0FMTChtb2Nr
LCBWb2lkRnJvbVN0cmluZyhTdHJDYXNlRXEoImEiKSkpLldpbGxCeURlZmF1bHQoUmV0dXJuKCkp
OworICBPTl9DQUxMKG1vY2ssIFZvaWRGcm9tU3RyaW5nKFN0ckNhc2VOZSgiYSIpKSkuV2lsbEJ5
RGVmYXVsdChSZXR1cm4oKSk7Cit9CisKKy8vIFRlc3RzIHRoZSBsaW5rYWdlIG9mIHRoZSBFbGVt
ZW50c0FyZSBtYXRjaGVyLgorVEVTVChMaW5rVGVzdCwgVGVzdE1hdGNoZXJFbGVtZW50c0FyZSkg
eworICBNb2NrIG1vY2s7CisKKyAgT05fQ0FMTChtb2NrLCBWb2lkRnJvbVZlY3RvcihFbGVtZW50
c0FyZSgnYScsIF8pKSkuV2lsbEJ5RGVmYXVsdChSZXR1cm4oKSk7Cit9CisKKy8vIFRlc3RzIHRo
ZSBsaW5rYWdlIG9mIHRoZSBFbGVtZW50c0FyZUFycmF5IG1hdGNoZXIuCitURVNUKExpbmtUZXN0
LCBUZXN0TWF0Y2hlckVsZW1lbnRzQXJlQXJyYXkpIHsKKyAgTW9jayBtb2NrOworICBjaGFyIGFy
cltdID0geyAnYScsICdiJyB9OworCisgIE9OX0NBTEwobW9jaywgVm9pZEZyb21WZWN0b3IoRWxl
bWVudHNBcmVBcnJheShhcnIpKSkuV2lsbEJ5RGVmYXVsdChSZXR1cm4oKSk7Cit9CisKKy8vIFRl
c3RzIHRoZSBsaW5rYWdlIG9mIHRoZSBDb250YWluZXJFcSBtYXRjaGVyLgorVEVTVChMaW5rVGVz
dCwgVGVzdE1hdGNoZXJDb250YWluZXJFcSkgeworICBNb2NrIG1vY2s7CisgIHN0ZDo6dmVjdG9y
PGludD4gdjsKKworICBPTl9DQUxMKG1vY2ssIFZvaWRGcm9tVmVjdG9yKENvbnRhaW5lckVxKHYp
KSkuV2lsbEJ5RGVmYXVsdChSZXR1cm4oKSk7Cit9CisKKy8vIFRlc3RzIHRoZSBsaW5rYWdlIG9m
IHRoZSBGaWVsZCBtYXRjaGVyLgorVEVTVChMaW5rVGVzdCwgVGVzdE1hdGNoZXJGaWVsZCkgewor
ICBGaWVsZEhlbHBlciBoZWxwZXIoMCk7CisKKyAgTWF0Y2hlcjxjb25zdCBGaWVsZEhlbHBlciY+
IG0gPSBGaWVsZCgmRmllbGRIZWxwZXI6OmZpZWxkXywgRXEoMCkpOworICBFWFBFQ1RfVFJVRSht
Lk1hdGNoZXMoaGVscGVyKSk7CisKKyAgTWF0Y2hlcjxjb25zdCBGaWVsZEhlbHBlcio+IG0yID0g
RmllbGQoJkZpZWxkSGVscGVyOjpmaWVsZF8sIEVxKDApKTsKKyAgRVhQRUNUX1RSVUUobTIuTWF0
Y2hlcygmaGVscGVyKSk7Cit9CisKKy8vIFRlc3RzIHRoZSBsaW5rYWdlIG9mIHRoZSBQcm9wZXJ0
eSBtYXRjaGVyLgorVEVTVChMaW5rVGVzdCwgVGVzdE1hdGNoZXJQcm9wZXJ0eSkgeworICBGaWVs
ZEhlbHBlciBoZWxwZXIoMCk7CisKKyAgTWF0Y2hlcjxjb25zdCBGaWVsZEhlbHBlciY+IG0gPSBQ
cm9wZXJ0eSgmRmllbGRIZWxwZXI6OmZpZWxkLCBFcSgwKSk7CisgIEVYUEVDVF9UUlVFKG0uTWF0
Y2hlcyhoZWxwZXIpKTsKKworICBNYXRjaGVyPGNvbnN0IEZpZWxkSGVscGVyKj4gbTIgPSBQcm9w
ZXJ0eSgmRmllbGRIZWxwZXI6OmZpZWxkLCBFcSgwKSk7CisgIEVYUEVDVF9UUlVFKG0yLk1hdGNo
ZXMoJmhlbHBlcikpOworfQorCisvLyBUZXN0cyB0aGUgbGlua2FnZSBvZiB0aGUgUmVzdWx0T2Yg
bWF0Y2hlci4KK1RFU1QoTGlua1Rlc3QsIFRlc3RNYXRjaGVyUmVzdWx0T2YpIHsKKyAgTWF0Y2hl
cjxjaGFyKj4gbSA9IFJlc3VsdE9mKCZJbnZva2VIZWxwZXI6OlN0YXRpY0ludEZyb21TdHJpbmcs
IEVxKDEpKTsKKyAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKE5VTEwpKTsKK30KKworLy8gVGVzdHMg
dGhlIGxpbmthZ2Ugb2YgdGhlIFJlc3VsdE9mIG1hdGNoZXIuCitURVNUKExpbmtUZXN0LCBUZXN0
TWF0Y2hlclBvaW50ZWUpIHsKKyAgaW50IG4gPSAxOworCisgIE1hdGNoZXI8aW50Kj4gbSA9IFBv
aW50ZWUoRXEoMSkpOworICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoJm4pKTsKK30KKworLy8gVGVz
dHMgdGhlIGxpbmthZ2Ugb2YgdGhlIFRydWx5IG1hdGNoZXIuCitURVNUKExpbmtUZXN0LCBUZXN0
TWF0Y2hlclRydWx5KSB7CisgIE1hdGNoZXI8Y29uc3QgY2hhcio+IG0gPSBUcnVseSgmSW52b2tl
SGVscGVyOjpTdGF0aWNCb29sRnJvbVN0cmluZyk7CisgIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhO
VUxMKSk7Cit9CisKKy8vIFRlc3RzIHRoZSBsaW5rYWdlIG9mIHRoZSBBbGxPZiBtYXRjaGVyLgor
VEVTVChMaW5rVGVzdCwgVGVzdE1hdGNoZXJBbGxPZikgeworICBNYXRjaGVyPGludD4gbSA9IEFs
bE9mKF8sIEVxKDEpKTsKKyAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKDEpKTsKK30KKworLy8gVGVz
dHMgdGhlIGxpbmthZ2Ugb2YgdGhlIEFueU9mIG1hdGNoZXIuCitURVNUKExpbmtUZXN0LCBUZXN0
TWF0Y2hlckFueU9mKSB7CisgIE1hdGNoZXI8aW50PiBtID0gQW55T2YoXywgRXEoMSkpOworICBF
WFBFQ1RfVFJVRShtLk1hdGNoZXMoMSkpOworfQorCisvLyBUZXN0cyB0aGUgbGlua2FnZSBvZiB0
aGUgTm90IG1hdGNoZXIuCitURVNUKExpbmtUZXN0LCBUZXN0TWF0Y2hlck5vdCkgeworICBNYXRj
aGVyPGludD4gbSA9IE5vdChfKTsKKyAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcygxKSk7Cit9CisK
Ky8vIFRlc3RzIHRoZSBsaW5rYWdlIG9mIHRoZSBNYXRjaGVyQ2FzdDxUPigpIGZ1bmN0aW9uLgor
VEVTVChMaW5rVGVzdCwgVGVzdE1hdGNoZXJDYXN0KSB7CisgIE1hdGNoZXI8Y29uc3QgY2hhcio+
IG0gPSBNYXRjaGVyQ2FzdDxjb25zdCBjaGFyKj4oXyk7CisgIEVYUEVDVF9UUlVFKG0uTWF0Y2hl
cyhOVUxMKSk7Cit9CisKKyNlbmRpZiAgLy8gR01PQ0tfVEVTVF9HTU9DS19MSU5LX1RFU1RfSF8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2tfb3V0cHV0X3Rlc3QucHkgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xlbW9jay90ZXN0L2dtb2NrX291dHB1dF90ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVjZWQ4YTgxZjIz
MDgzODFhODMwNGQzMGFkMDVkZGNhYjliOGI2ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
bW9jay90ZXN0L2dtb2NrX291dHB1dF90ZXN0LnB5CkBAIC0wLDAgKzEsMTgwIEBACisjIS91c3Iv
YmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCisjIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoK
KyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJUZXN0cyB0aGUgdGV4dCBv
dXRwdXQgb2YgR29vZ2xlIEMrKyBNb2NraW5nIEZyYW1ld29yay4KKworU1lOT1BTSVMKKyAgICAg
ICBnbW9ja19vdXRwdXRfdGVzdC5weSAtLWJ1aWxkX2Rpcj1CVUlMRC9ESVIgLS1nZW5nb2xkZW4K
KyAgICAgICAgICMgd2hlcmUgQlVJTEQvRElSIGNvbnRhaW5zIHRoZSBidWlsdCBnbW9ja19vdXRw
dXRfdGVzdF8gZmlsZS4KKyAgICAgICBnbW9ja19vdXRwdXRfdGVzdC5weSAtLWdlbmdvbGRlbgor
ICAgICAgIGdtb2NrX291dHB1dF90ZXN0LnB5CisiIiIKKworX19hdXRob3JfXyA9ICd3YW5AZ29v
Z2xlLmNvbSAoWmhhbnlvbmcgV2FuKScKKworaW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBz
eXMKKworaW1wb3J0IGdtb2NrX3Rlc3RfdXRpbHMKKworCisjIFRoZSBmbGFnIGZvciBnZW5lcmF0
aW5nIHRoZSBnb2xkZW4gZmlsZQorR0VOR09MREVOX0ZMQUcgPSAnLS1nZW5nb2xkZW4nCisKK1BS
T0dSQU1fUEFUSCA9IGdtb2NrX3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKCdnbW9j
a19vdXRwdXRfdGVzdF8nKQorQ09NTUFORCA9IFtQUk9HUkFNX1BBVEgsICctLWd0ZXN0X3N0YWNr
X3RyYWNlX2RlcHRoPTAnLCAnLS1ndGVzdF9wcmludF90aW1lPTAnXQorR09MREVOX05BTUUgPSAn
Z21vY2tfb3V0cHV0X3Rlc3RfZ29sZGVuLnR4dCcKK0dPTERFTl9QQVRIID0gb3MucGF0aC5qb2lu
KGdtb2NrX3Rlc3RfdXRpbHMuR2V0U291cmNlRGlyKCksIEdPTERFTl9OQU1FKQorCisKK2RlZiBU
b1VuaXhMaW5lRW5kaW5nKHMpOgorICAiIiJDaGFuZ2VzIGFsbCBXaW5kb3dzL01hYyBsaW5lIGVu
ZGluZ3MgaW4gcyB0byBVTklYIGxpbmUgZW5kaW5ncy4iIiIKKworICByZXR1cm4gcy5yZXBsYWNl
KCdcclxuJywgJ1xuJykucmVwbGFjZSgnXHInLCAnXG4nKQorCisKK2RlZiBSZW1vdmVSZXBvcnRI
ZWFkZXJBbmRGb290ZXIob3V0cHV0KToKKyAgIiIiUmVtb3ZlcyBHb29nbGUgVGVzdCByZXN1bHQg
cmVwb3J0J3MgaGVhZGVyIGFuZCBmb290ZXIgZnJvbSB0aGUgb3V0cHV0LiIiIgorCisgIG91dHB1
dCA9IHJlLnN1YihyJy4qZ3Rlc3RfbWFpbi4qXG4nLCAnJywgb3V0cHV0KQorICBvdXRwdXQgPSBy
ZS5zdWIocidcWy4qXGQrIHRlc3RzLipcbicsICcnLCBvdXRwdXQpCisgIG91dHB1dCA9IHJlLnN1
YihyJ1xbLiogdGVzdCBlbnZpcm9ubWVudCAuKlxuJywgJycsIG91dHB1dCkKKyAgb3V0cHV0ID0g
cmUuc3ViKHInXFs9K1xdIFxkKyB0ZXN0cyAuKiByYW4uKicsICcnLCBvdXRwdXQpCisgIG91dHB1
dCA9IHJlLnN1YihyJy4qIEZBSUxFRCBURVNUU1xuJywgJycsIG91dHB1dCkKKyAgcmV0dXJuIG91
dHB1dAorCisKK2RlZiBSZW1vdmVMb2NhdGlvbnMob3V0cHV0KToKKyAgIiIiUmVtb3ZlcyBhbGwg
ZmlsZSBsb2NhdGlvbiBpbmZvIGZyb20gYSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0Lgor
CisgIEFyZ3M6CisgICAgICAgb3V0cHV0OiAgdGhlIG91dHB1dCBvZiBhIEdvb2dsZSBUZXN0IHBy
b2dyYW0uCisKKyAgUmV0dXJuczoKKyAgICAgICBvdXRwdXQgd2l0aCBhbGwgZmlsZSBsb2NhdGlv
biBpbmZvIChpbiB0aGUgZm9ybSBvZgorICAgICAgICdESVJFQ1RPUlkvRklMRV9OQU1FOkxJTkVf
TlVNQkVSOiAnb3IKKyAgICAgICAnRElSRUNUT1JZXFxGSUxFX05BTUUoTElORV9OVU1CRVIpOiAn
KSByZXBsYWNlZCBieQorICAgICAgICdGSUxFOiM6ICcuCisgICIiIgorCisgIHJldHVybiByZS5z
dWIocicuKlsvXFxdKC4rKShcOlxkK3xcKFxkK1wpKVw6JywgJ0ZJTEU6IzonLCBvdXRwdXQpCisK
KworZGVmIE5vcm1hbGl6ZUVycm9yTWFya2VyKG91dHB1dCk6CisgICIiIk5vcm1hbGl6ZXMgdGhl
IGVycm9yIG1hcmtlciwgd2hpY2ggaXMgZGlmZmVyZW50IG9uIFdpbmRvd3MgdnMgb24gTGludXgu
IiIiCisKKyAgcmV0dXJuIHJlLnN1YihyJyBlcnJvcjogJywgJyBGYWlsdXJlXG4nLCBvdXRwdXQp
CisKKworZGVmIFJlbW92ZU1lbW9yeUFkZHJlc3NlcyhvdXRwdXQpOgorICAiIiJSZW1vdmVzIG1l
bW9yeSBhZGRyZXNzZXMgZnJvbSB0aGUgdGVzdCBvdXRwdXQuIiIiCisKKyAgcmV0dXJuIHJlLnN1
YihyJ0BcdysnLCAnQDB4IycsIG91dHB1dCkKKworCitkZWYgUmVtb3ZlVGVzdE5hbWVzT2ZMZWFr
ZWRNb2NrcyhvdXRwdXQpOgorICAiIiJSZW1vdmVzIHRoZSB0ZXN0IG5hbWVzIG9mIGxlYWtlZCBt
b2NrIG9iamVjdHMgZnJvbSB0aGUgdGVzdCBvdXRwdXQuIiIiCisKKyAgcmV0dXJuIHJlLnN1Yihy
J1wodXNlZCBpbiB0ZXN0IC4rXCkgJywgJycsIG91dHB1dCkKKworCitkZWYgR2V0TGVha3lUZXN0
cyhvdXRwdXQpOgorICAiIiJSZXR1cm5zIGEgbGlzdCBvZiB0ZXN0IG5hbWVzIHRoYXQgbGVhayBt
b2NrIG9iamVjdHMuIiIiCisKKyAgIyBmaW5kYWxsKCkgcmV0dXJucyBhIGxpc3Qgb2YgYWxsIG1h
dGNoZXMgb2YgdGhlIHJlZ2V4IGluIG91dHB1dC4KKyAgIyBGb3IgZXhhbXBsZSwgaWYgJyh1c2Vk
IGluIHRlc3QgRm9vVGVzdC5CYXIpJyBpcyBpbiBvdXRwdXQsIHRoZQorICAjIGxpc3Qgd2lsbCBj
b250YWluICdGb29UZXN0LkJhcicuCisgIHJldHVybiByZS5maW5kYWxsKHInXCh1c2VkIGluIHRl
c3QgKC4rKVwpJywgb3V0cHV0KQorCisKK2RlZiBHZXROb3JtYWxpemVkT3V0cHV0QW5kTGVha3lU
ZXN0cyhvdXRwdXQpOgorICAiIiJOb3JtYWxpemVzIHRoZSBvdXRwdXQgb2YgZ21vY2tfb3V0cHV0
X3Rlc3RfLgorCisgIEFyZ3M6CisgICAgb3V0cHV0OiBUaGUgdGVzdCBvdXRwdXQuCisKKyAgUmV0
dXJuczoKKyAgICBBIHR1cGxlICh0aGUgbm9ybWFsaXplZCB0ZXN0IG91dHB1dCwgdGhlIGxpc3Qg
b2YgdGVzdCBuYW1lcyB0aGF0IGhhdmUKKyAgICBsZWFrZWQgbW9ja3MpLgorICAiIiIKKworICBv
dXRwdXQgPSBUb1VuaXhMaW5lRW5kaW5nKG91dHB1dCkKKyAgb3V0cHV0ID0gUmVtb3ZlUmVwb3J0
SGVhZGVyQW5kRm9vdGVyKG91dHB1dCkKKyAgb3V0cHV0ID0gTm9ybWFsaXplRXJyb3JNYXJrZXIo
b3V0cHV0KQorICBvdXRwdXQgPSBSZW1vdmVMb2NhdGlvbnMob3V0cHV0KQorICBvdXRwdXQgPSBS
ZW1vdmVNZW1vcnlBZGRyZXNzZXMob3V0cHV0KQorICByZXR1cm4gKFJlbW92ZVRlc3ROYW1lc09m
TGVha2VkTW9ja3Mob3V0cHV0KSwgR2V0TGVha3lUZXN0cyhvdXRwdXQpKQorCisKK2RlZiBHZXRT
aGVsbENvbW1hbmRPdXRwdXQoY21kKToKKyAgIiIiUnVucyBhIGNvbW1hbmQgaW4gYSBzdWItcHJv
Y2VzcywgYW5kIHJldHVybnMgaXRzIFNURE9VVCBpbiBhIHN0cmluZy4iIiIKKworICByZXR1cm4g
Z21vY2tfdGVzdF91dGlscy5TdWJwcm9jZXNzKGNtZCwgY2FwdHVyZV9zdGRlcnI9RmFsc2UpLm91
dHB1dAorCisKK2RlZiBHZXROb3JtYWxpemVkQ29tbWFuZE91dHB1dEFuZExlYWt5VGVzdHMoY21k
KToKKyAgIiIiUnVucyBhIGNvbW1hbmQgYW5kIHJldHVybnMgaXRzIG5vcm1hbGl6ZWQgb3V0cHV0
IGFuZCBhIGxpc3Qgb2YgbGVha3kgdGVzdHMuCisKKyAgQXJnczoKKyAgICBjbWQ6ICB0aGUgc2hl
bGwgY29tbWFuZC4KKyAgIiIiCisKKyAgIyBEaXNhYmxlcyBleGNlcHRpb24gcG9wLXVwcyBvbiBX
aW5kb3dzLgorICBvcy5lbnZpcm9uWydHVEVTVF9DQVRDSF9FWENFUFRJT05TJ10gPSAnMScKKyAg
cmV0dXJuIEdldE5vcm1hbGl6ZWRPdXRwdXRBbmRMZWFreVRlc3RzKEdldFNoZWxsQ29tbWFuZE91
dHB1dChjbWQpKQorCisKK2NsYXNzIEdNb2NrT3V0cHV0VGVzdChnbW9ja190ZXN0X3V0aWxzLlRl
c3RDYXNlKToKKyAgZGVmIHRlc3RPdXRwdXQoc2VsZik6CisgICAgKG91dHB1dCwgbGVha3lfdGVz
dHMpID0gR2V0Tm9ybWFsaXplZENvbW1hbmRPdXRwdXRBbmRMZWFreVRlc3RzKENPTU1BTkQpCisg
ICAgZ29sZGVuX2ZpbGUgPSBvcGVuKEdPTERFTl9QQVRILCAncmInKQorICAgIGdvbGRlbiA9IGdv
bGRlbl9maWxlLnJlYWQoKQorICAgIGdvbGRlbl9maWxlLmNsb3NlKCkKKworICAgICMgVGhlIG5v
cm1hbGl6ZWQgb3V0cHV0IHNob3VsZCBtYXRjaCB0aGUgZ29sZGVuIGZpbGUuCisgICAgc2VsZi5h
c3NlcnRFcXVhbHMoZ29sZGVuLCBvdXRwdXQpCisKKyAgICAjIFRoZSByYXcgb3V0cHV0IHNob3Vs
ZCBjb250YWluIDIgbGVha2VkIG1vY2sgb2JqZWN0IGVycm9ycyBmb3IKKyAgICAjIHRlc3QgR01v
Y2tPdXRwdXRUZXN0LkNhdGNoZXNMZWFrZWRNb2Nrcy4KKyAgICBzZWxmLmFzc2VydEVxdWFscyhb
J0dNb2NrT3V0cHV0VGVzdC5DYXRjaGVzTGVha2VkTW9ja3MnLAorICAgICAgICAgICAgICAgICAg
ICAgICAnR01vY2tPdXRwdXRUZXN0LkNhdGNoZXNMZWFrZWRNb2NrcyddLAorICAgICAgICAgICAg
ICAgICAgICAgIGxlYWt5X3Rlc3RzKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Cisg
IGlmIHN5cy5hcmd2WzE6XSA9PSBbR0VOR09MREVOX0ZMQUddOgorICAgIChvdXRwdXQsIF8pID0g
R2V0Tm9ybWFsaXplZENvbW1hbmRPdXRwdXRBbmRMZWFreVRlc3RzKENPTU1BTkQpCisgICAgZ29s
ZGVuX2ZpbGUgPSBvcGVuKEdPTERFTl9QQVRILCAnd2InKQorICAgIGdvbGRlbl9maWxlLndyaXRl
KG91dHB1dCkKKyAgICBnb2xkZW5fZmlsZS5jbG9zZSgpCisgIGVsc2U6CisgICAgZ21vY2tfdGVz
dF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2tfb3V0cHV0
X3Rlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9ja19vdXRwdXRfdGVzdF8uY2MKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDRjYmEzNDJhZGY5ZDY2NzE2ZDc4ZDcwZjU1NWVmMWI1YTliNGMxMwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2tfb3V0cHV0X3Rlc3RfLmNjCkBAIC0wLDAg
KzEsMjkxIEBACisvLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6Cisv
LworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8v
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8v
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisv
LworLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorCisvLyBUZXN0cyBH
b29nbGUgTW9jaydzIG91dHB1dCBpbiB2YXJpb3VzIHNjZW5hcmlvcy4gIFRoaXMgZW5zdXJlcyB0
aGF0CisvLyBHb29nbGUgTW9jaydzIG1lc3NhZ2VzIGFyZSByZWFkYWJsZSBhbmQgdXNlZnVsLgor
CisjaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVk
ZSA8c3RyaW5nPgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKwordXNpbmcgdGVzdGluZzo6
XzsKK3VzaW5nIHRlc3Rpbmc6OkFueU51bWJlcjsKK3VzaW5nIHRlc3Rpbmc6OkdlOwordXNpbmcg
dGVzdGluZzo6SW5TZXF1ZW5jZTsKK3VzaW5nIHRlc3Rpbmc6Ok5hZ2d5TW9jazsKK3VzaW5nIHRl
c3Rpbmc6OlJlZjsKK3VzaW5nIHRlc3Rpbmc6OlJldHVybjsKK3VzaW5nIHRlc3Rpbmc6OlNlcXVl
bmNlOworCitjbGFzcyBNb2NrRm9vIHsKKyBwdWJsaWM6CisgIE1vY2tGb28oKSB7fQorCisgIE1P
Q0tfTUVUSE9EMyhCYXIsIGNoYXIoY29uc3Qgc3RkOjpzdHJpbmcmIHMsIGludCBpLCBkb3VibGUg
eCkpOworICBNT0NLX01FVEhPRDIoQmFyMiwgYm9vbChpbnQgeCwgaW50IHkpKTsKKyAgTU9DS19N
RVRIT0QyKEJhcjMsIHZvaWQoaW50IHgsIGludCB5KSk7CisKKyBwcml2YXRlOgorICBHVEVTVF9E
SVNBTExPV19DT1BZX0FORF9BU1NJR05fKE1vY2tGb28pOworfTsKKworY2xhc3MgR01vY2tPdXRw
dXRUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgTmFnZ3lNb2Nr
PE1vY2tGb28+IGZvb187Cit9OworCitURVNUX0YoR01vY2tPdXRwdXRUZXN0LCBFeHBlY3RlZENh
bGwpIHsKKyAgdGVzdGluZzo6R01PQ0tfRkxBRyh2ZXJib3NlKSA9ICJpbmZvIjsKKworICBFWFBF
Q1RfQ0FMTChmb29fLCBCYXIyKDAsIF8pKTsKKyAgZm9vXy5CYXIyKDAsIDApOyAgLy8gRXhwZWN0
ZWQgY2FsbAorCisgIHRlc3Rpbmc6OkdNT0NLX0ZMQUcodmVyYm9zZSkgPSAid2FybmluZyI7Cit9
CisKK1RFU1RfRihHTW9ja091dHB1dFRlc3QsIEV4cGVjdGVkQ2FsbFRvVm9pZEZ1bmN0aW9uKSB7
CisgIHRlc3Rpbmc6OkdNT0NLX0ZMQUcodmVyYm9zZSkgPSAiaW5mbyI7CisKKyAgRVhQRUNUX0NB
TEwoZm9vXywgQmFyMygwLCBfKSk7CisgIGZvb18uQmFyMygwLCAwKTsgIC8vIEV4cGVjdGVkIGNh
bGwKKworICB0ZXN0aW5nOjpHTU9DS19GTEFHKHZlcmJvc2UpID0gIndhcm5pbmciOworfQorCitU
RVNUX0YoR01vY2tPdXRwdXRUZXN0LCBFeHBsaWNpdEFjdGlvbnNSdW5PdXQpIHsKKyAgRVhQRUNU
X0NBTEwoZm9vXywgQmFyMihfLCBfKSkKKyAgICAgIC5UaW1lcygyKQorICAgICAgLldpbGxPbmNl
KFJldHVybihmYWxzZSkpOworICBmb29fLkJhcjIoMiwgMik7CisgIGZvb18uQmFyMigxLCAxKTsg
IC8vIEV4cGxpY2l0IGFjdGlvbnMgaW4gRVhQRUNUX0NBTEwgcnVuIG91dC4KK30KKworVEVTVF9G
KEdNb2NrT3V0cHV0VGVzdCwgVW5leHBlY3RlZENhbGwpIHsKKyAgRVhQRUNUX0NBTEwoZm9vXywg
QmFyMigwLCBfKSk7CisKKyAgZm9vXy5CYXIyKDEsIDApOyAgLy8gVW5leHBlY3RlZCBjYWxsCisg
IGZvb18uQmFyMigwLCAwKTsgIC8vIEV4cGVjdGVkIGNhbGwKK30KKworVEVTVF9GKEdNb2NrT3V0
cHV0VGVzdCwgVW5leHBlY3RlZENhbGxUb1ZvaWRGdW5jdGlvbikgeworICBFWFBFQ1RfQ0FMTChm
b29fLCBCYXIzKDAsIF8pKTsKKworICBmb29fLkJhcjMoMSwgMCk7ICAvLyBVbmV4cGVjdGVkIGNh
bGwKKyAgZm9vXy5CYXIzKDAsIDApOyAgLy8gRXhwZWN0ZWQgY2FsbAorfQorCitURVNUX0YoR01v
Y2tPdXRwdXRUZXN0LCBFeGNlc3NpdmVDYWxsKSB7CisgIEVYUEVDVF9DQUxMKGZvb18sIEJhcjIo
MCwgXykpOworCisgIGZvb18uQmFyMigwLCAwKTsgIC8vIEV4cGVjdGVkIGNhbGwKKyAgZm9vXy5C
YXIyKDAsIDEpOyAgLy8gRXhjZXNzaXZlIGNhbGwKK30KKworVEVTVF9GKEdNb2NrT3V0cHV0VGVz
dCwgRXhjZXNzaXZlQ2FsbFRvVm9pZEZ1bmN0aW9uKSB7CisgIEVYUEVDVF9DQUxMKGZvb18sIEJh
cjMoMCwgXykpOworCisgIGZvb18uQmFyMygwLCAwKTsgIC8vIEV4cGVjdGVkIGNhbGwKKyAgZm9v
Xy5CYXIzKDAsIDEpOyAgLy8gRXhjZXNzaXZlIGNhbGwKK30KKworVEVTVF9GKEdNb2NrT3V0cHV0
VGVzdCwgVW5pbnRlcmVzdGluZ0NhbGwpIHsKKyAgZm9vXy5CYXIyKDAsIDEpOyAgLy8gVW5pbnRl
cmVzdGluZyBjYWxsCit9CisKK1RFU1RfRihHTW9ja091dHB1dFRlc3QsIFVuaW50ZXJlc3RpbmdD
YWxsVG9Wb2lkRnVuY3Rpb24pIHsKKyAgZm9vXy5CYXIzKDAsIDEpOyAgLy8gVW5pbnRlcmVzdGlu
ZyBjYWxsCit9CisKK1RFU1RfRihHTW9ja091dHB1dFRlc3QsIFJldGlyZWRFeHBlY3RhdGlvbikg
eworICBFWFBFQ1RfQ0FMTChmb29fLCBCYXIyKF8sIF8pKQorICAgICAgLlJldGlyZXNPblNhdHVy
YXRpb24oKTsKKyAgRVhQRUNUX0NBTEwoZm9vXywgQmFyMigwLCAwKSk7CisKKyAgZm9vXy5CYXIy
KDEsIDEpOworICBmb29fLkJhcjIoMSwgMSk7ICAvLyBNYXRjaGVzIGEgcmV0aXJlZCBleHBlY3Rh
dGlvbgorICBmb29fLkJhcjIoMCwgMCk7Cit9CisKK1RFU1RfRihHTW9ja091dHB1dFRlc3QsIFVu
c2F0aXNmaWVkUHJlcmVxdWlzaXRlKSB7CisgIHsKKyAgICBJblNlcXVlbmNlIHM7CisgICAgRVhQ
RUNUX0NBTEwoZm9vXywgQmFyKF8sIDAsIF8pKTsKKyAgICBFWFBFQ1RfQ0FMTChmb29fLCBCYXIy
KDAsIDApKTsKKyAgICBFWFBFQ1RfQ0FMTChmb29fLCBCYXIyKDEsIF8pKTsKKyAgfQorCisgIGZv
b18uQmFyMigxLCAwKTsgIC8vIEhhcyBvbmUgaW1tZWRpYXRlIHVuc2F0aXNmaWVkIHByZS1yZXF1
aXNpdGUKKyAgZm9vXy5CYXIoIkhpIiwgMCwgMCk7CisgIGZvb18uQmFyMigwLCAwKTsKKyAgZm9v
Xy5CYXIyKDEsIDApOworfQorCitURVNUX0YoR01vY2tPdXRwdXRUZXN0LCBVbnNhdGlzZmllZFBy
ZXJlcXVpc2l0ZXMpIHsKKyAgU2VxdWVuY2UgczEsIHMyOworCisgIEVYUEVDVF9DQUxMKGZvb18s
IEJhcihfLCAwLCBfKSkKKyAgICAgIC5JblNlcXVlbmNlKHMxKTsKKyAgRVhQRUNUX0NBTEwoZm9v
XywgQmFyMigwLCAwKSkKKyAgICAgIC5JblNlcXVlbmNlKHMyKTsKKyAgRVhQRUNUX0NBTEwoZm9v
XywgQmFyMigxLCBfKSkKKyAgICAgIC5JblNlcXVlbmNlKHMxLCBzMik7CisKKyAgZm9vXy5CYXIy
KDEsIDApOyAgLy8gSGFzIHR3byBpbW1lZGlhdGUgdW5zYXRpc2ZpZWQgcHJlLXJlcXVpc2l0ZXMK
KyAgZm9vXy5CYXIoIkhpIiwgMCwgMCk7CisgIGZvb18uQmFyMigwLCAwKTsKKyAgZm9vXy5CYXIy
KDEsIDApOworfQorCitURVNUX0YoR01vY2tPdXRwdXRUZXN0LCBVbnNhdGlzZmllZFdpdGgpIHsK
KyAgRVhQRUNUX0NBTEwoZm9vXywgQmFyMihfLCBfKSkuV2l0aChHZSgpKTsKK30KKworVEVTVF9G
KEdNb2NrT3V0cHV0VGVzdCwgVW5zYXRpc2ZpZWRFeHBlY3RhdGlvbikgeworICBFWFBFQ1RfQ0FM
TChmb29fLCBCYXIoXywgXywgXykpOworICBFWFBFQ1RfQ0FMTChmb29fLCBCYXIyKDAsIF8pKQor
ICAgICAgLlRpbWVzKDIpOworCisgIGZvb18uQmFyMigwLCAxKTsKK30KKworVEVTVF9GKEdNb2Nr
T3V0cHV0VGVzdCwgTWlzbWF0Y2hBcmd1bWVudHMpIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgcyA9
ICJIaSI7CisgIEVYUEVDVF9DQUxMKGZvb18sIEJhcihSZWYocyksIF8sIEdlKDApKSk7CisKKyAg
Zm9vXy5CYXIoIkhvIiwgMCwgLTAuMSk7ICAvLyBNaXNtYXRjaCBhcmd1bWVudHMKKyAgZm9vXy5C
YXIocywgMCwgMCk7Cit9CisKK1RFU1RfRihHTW9ja091dHB1dFRlc3QsIE1pc21hdGNoV2l0aCkg
eworICBFWFBFQ1RfQ0FMTChmb29fLCBCYXIyKEdlKDIpLCBHZSgxKSkpCisgICAgICAuV2l0aChH
ZSgpKTsKKworICBmb29fLkJhcjIoMiwgMyk7ICAvLyBNaXNtYXRjaCBXaXRoKCkKKyAgZm9vXy5C
YXIyKDIsIDEpOworfQorCitURVNUX0YoR01vY2tPdXRwdXRUZXN0LCBNaXNtYXRjaEFyZ3VtZW50
c0FuZFdpdGgpIHsKKyAgRVhQRUNUX0NBTEwoZm9vXywgQmFyMihHZSgyKSwgR2UoMSkpKQorICAg
ICAgLldpdGgoR2UoKSk7CisKKyAgZm9vXy5CYXIyKDEsIDMpOyAgLy8gTWlzbWF0Y2ggYXJndW1l
bnRzIGFuZCBtaXNtYXRjaCBXaXRoKCkKKyAgZm9vXy5CYXIyKDIsIDEpOworfQorCitURVNUX0Yo
R01vY2tPdXRwdXRUZXN0LCBVbmV4cGVjdGVkQ2FsbFdpdGhEZWZhdWx0QWN0aW9uKSB7CisgIE9O
X0NBTEwoZm9vXywgQmFyMihfLCBfKSkKKyAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybih0cnVl
KSk7ICAgLy8gRGVmYXVsdCBhY3Rpb24gIzEKKyAgT05fQ0FMTChmb29fLCBCYXIyKDEsIF8pKQor
ICAgICAgLldpbGxCeURlZmF1bHQoUmV0dXJuKGZhbHNlKSk7ICAvLyBEZWZhdWx0IGFjdGlvbiAj
MgorCisgIEVYUEVDVF9DQUxMKGZvb18sIEJhcjIoMiwgMikpOworICBmb29fLkJhcjIoMSwgMCk7
ICAvLyBVbmV4cGVjdGVkIGNhbGwsIHRha2VzIGRlZmF1bHQgYWN0aW9uICMyLgorICBmb29fLkJh
cjIoMCwgMCk7ICAvLyBVbmV4cGVjdGVkIGNhbGwsIHRha2VzIGRlZmF1bHQgYWN0aW9uICMxLgor
ICBmb29fLkJhcjIoMiwgMik7ICAvLyBFeHBlY3RlZCBjYWxsLgorfQorCitURVNUX0YoR01vY2tP
dXRwdXRUZXN0LCBFeGNlc3NpdmVDYWxsV2l0aERlZmF1bHRBY3Rpb24pIHsKKyAgT05fQ0FMTChm
b29fLCBCYXIyKF8sIF8pKQorICAgICAgLldpbGxCeURlZmF1bHQoUmV0dXJuKHRydWUpKTsgICAv
LyBEZWZhdWx0IGFjdGlvbiAjMQorICBPTl9DQUxMKGZvb18sIEJhcjIoMSwgXykpCisgICAgICAu
V2lsbEJ5RGVmYXVsdChSZXR1cm4oZmFsc2UpKTsgIC8vIERlZmF1bHQgYWN0aW9uICMyCisKKyAg
RVhQRUNUX0NBTEwoZm9vXywgQmFyMigyLCAyKSk7CisgIEVYUEVDVF9DQUxMKGZvb18sIEJhcjIo
MSwgMSkpOworCisgIGZvb18uQmFyMigyLCAyKTsgIC8vIEV4cGVjdGVkIGNhbGwuCisgIGZvb18u
QmFyMigyLCAyKTsgIC8vIEV4Y2Vzc2l2ZSBjYWxsLCB0YWtlcyBkZWZhdWx0IGFjdGlvbiAjMS4K
KyAgZm9vXy5CYXIyKDEsIDEpOyAgLy8gRXhwZWN0ZWQgY2FsbC4KKyAgZm9vXy5CYXIyKDEsIDEp
OyAgLy8gRXhjZXNzaXZlIGNhbGwsIHRha2VzIGRlZmF1bHQgYWN0aW9uICMyLgorfQorCitURVNU
X0YoR01vY2tPdXRwdXRUZXN0LCBVbmludGVyZXN0aW5nQ2FsbFdpdGhEZWZhdWx0QWN0aW9uKSB7
CisgIE9OX0NBTEwoZm9vXywgQmFyMihfLCBfKSkKKyAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVy
bih0cnVlKSk7ICAgLy8gRGVmYXVsdCBhY3Rpb24gIzEKKyAgT05fQ0FMTChmb29fLCBCYXIyKDEs
IF8pKQorICAgICAgLldpbGxCeURlZmF1bHQoUmV0dXJuKGZhbHNlKSk7ICAvLyBEZWZhdWx0IGFj
dGlvbiAjMgorCisgIGZvb18uQmFyMigyLCAyKTsgIC8vIFVuaW50ZXJlc3RpbmcgY2FsbCwgdGFr
ZXMgZGVmYXVsdCBhY3Rpb24gIzEuCisgIGZvb18uQmFyMigxLCAxKTsgIC8vIFVuaW50ZXJlc3Rp
bmcgY2FsbCwgdGFrZXMgZGVmYXVsdCBhY3Rpb24gIzIuCit9CisKK1RFU1RfRihHTW9ja091dHB1
dFRlc3QsIEV4cGxpY2l0QWN0aW9uc1J1bk91dFdpdGhEZWZhdWx0QWN0aW9uKSB7CisgIE9OX0NB
TEwoZm9vXywgQmFyMihfLCBfKSkKKyAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybih0cnVlKSk7
ICAgLy8gRGVmYXVsdCBhY3Rpb24gIzEKKworICBFWFBFQ1RfQ0FMTChmb29fLCBCYXIyKF8sIF8p
KQorICAgICAgLlRpbWVzKDIpCisgICAgICAuV2lsbE9uY2UoUmV0dXJuKGZhbHNlKSk7CisgIGZv
b18uQmFyMigyLCAyKTsKKyAgZm9vXy5CYXIyKDEsIDEpOyAgLy8gRXhwbGljaXQgYWN0aW9ucyBp
biBFWFBFQ1RfQ0FMTCBydW4gb3V0LgorfQorCitURVNUX0YoR01vY2tPdXRwdXRUZXN0LCBDYXRj
aGVzTGVha2VkTW9ja3MpIHsKKyAgTW9ja0ZvbyogZm9vMSA9IG5ldyBNb2NrRm9vOworICBNb2Nr
Rm9vKiBmb28yID0gbmV3IE1vY2tGb287CisKKyAgLy8gSW52b2tlcyBPTl9DQUxMIG9uIGZvbzEu
CisgIE9OX0NBTEwoKmZvbzEsIEJhcihfLCBfLCBfKSkuV2lsbEJ5RGVmYXVsdChSZXR1cm4oJ2En
KSk7CisKKyAgLy8gSW52b2tlcyBFWFBFQ1RfQ0FMTCBvbiBmb28yLgorICBFWFBFQ1RfQ0FMTCgq
Zm9vMiwgQmFyMihfLCBfKSk7CisgIEVYUEVDVF9DQUxMKCpmb28yLCBCYXIyKDEsIF8pKTsKKyAg
RVhQRUNUX0NBTEwoKmZvbzIsIEJhcjMoXywgXykpLlRpbWVzKEFueU51bWJlcigpKTsKKyAgZm9v
Mi0+QmFyMigyLCAxKTsKKyAgZm9vMi0+QmFyMigxLCAxKTsKKworICAvLyBCb3RoIGZvbzEgYW5k
IGZvbzIgYXJlIGRlbGliZXJhdGVseSBsZWFrZWQuCit9CisKK3ZvaWQgVGVzdENhdGNoZXNMZWFr
ZWRNb2Nrc0luQWRIb2NUZXN0cygpIHsKKyAgTW9ja0ZvbyogZm9vID0gbmV3IE1vY2tGb287CisK
KyAgLy8gSW52b2tlcyBFWFBFQ1RfQ0FMTCBvbiBmb28uCisgIEVYUEVDVF9DQUxMKCpmb28sIEJh
cjIoXywgXykpOworICBmb28tPkJhcjIoMiwgMSk7CisKKyAgLy8gZm9vIGlzIGRlbGliZXJhdGVs
eSBsZWFrZWQuCit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgeworICB0ZXN0
aW5nOjpJbml0R29vZ2xlTW9jaygmYXJnYywgYXJndik7CisKKyAgLy8gRW5zdXJlcyB0aGF0IHRo
ZSB0ZXN0cyBwYXNzIG5vIG1hdHRlciB3aGF0IHZhbHVlIG9mCisgIC8vIC0tZ21vY2tfY2F0Y2hf
bGVha2VkX21vY2tzIGFuZCAtLWdtb2NrX3ZlcmJvc2UgdGhlIHVzZXIgc3BlY2lmaWVzLgorICB0
ZXN0aW5nOjpHTU9DS19GTEFHKGNhdGNoX2xlYWtlZF9tb2NrcykgPSB0cnVlOworICB0ZXN0aW5n
OjpHTU9DS19GTEFHKHZlcmJvc2UpID0gIndhcm5pbmciOworCisgIFRlc3RDYXRjaGVzTGVha2Vk
TW9ja3NJbkFkSG9jVGVzdHMoKTsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2tfb3V0cHV0X3Rlc3RfZ29sZGVuLnR4dCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGVtb2NrL3Rlc3QvZ21vY2tfb3V0cHV0X3Rlc3RfZ29sZGVuLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ODlkNWVlYjAzNzUzYmFmZDcyYjI0NDlhODQzNTM2ZjVjYTIxMGZjCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9ja19vdXRwdXRfdGVzdF9nb2xkZW4udHh0CkBAIC0wLDAg
KzEsMzEwIEBACitbIFJVTiAgICAgIF0gR01vY2tPdXRwdXRUZXN0LkV4cGVjdGVkQ2FsbAorCitG
SUxFOiM6IEVYUEVDVF9DQUxMKGZvb18sIEJhcjIoMCwgXykpIGludm9rZWQKK1N0YWNrIHRyYWNl
OgorCitGSUxFOiM6IE1vY2sgZnVuY3Rpb24gY2FsbCBtYXRjaGVzIEVYUEVDVF9DQUxMKGZvb18s
IEJhcjIoMCwgXykpLi4uCisgICAgRnVuY3Rpb24gY2FsbDogQmFyMigwLCAwKQorICAgICAgICAg
IFJldHVybnM6IGZhbHNlCitTdGFjayB0cmFjZToKK1sgICAgICAgT0sgXSBHTW9ja091dHB1dFRl
c3QuRXhwZWN0ZWRDYWxsCitbIFJVTiAgICAgIF0gR01vY2tPdXRwdXRUZXN0LkV4cGVjdGVkQ2Fs
bFRvVm9pZEZ1bmN0aW9uCisKK0ZJTEU6IzogRVhQRUNUX0NBTEwoZm9vXywgQmFyMygwLCBfKSkg
aW52b2tlZAorU3RhY2sgdHJhY2U6CisKK0ZJTEU6IzogTW9jayBmdW5jdGlvbiBjYWxsIG1hdGNo
ZXMgRVhQRUNUX0NBTEwoZm9vXywgQmFyMygwLCBfKSkuLi4KKyAgICBGdW5jdGlvbiBjYWxsOiBC
YXIzKDAsIDApCitTdGFjayB0cmFjZToKK1sgICAgICAgT0sgXSBHTW9ja091dHB1dFRlc3QuRXhw
ZWN0ZWRDYWxsVG9Wb2lkRnVuY3Rpb24KK1sgUlVOICAgICAgXSBHTW9ja091dHB1dFRlc3QuRXhw
bGljaXRBY3Rpb25zUnVuT3V0CisKK0dNT0NLIFdBUk5JTkc6CitGSUxFOiM6IFRvbyBmZXcgYWN0
aW9ucyBzcGVjaWZpZWQgaW4gRVhQRUNUX0NBTEwoZm9vXywgQmFyMihfLCBfKSkuLi4KK0V4cGVj
dGVkIHRvIGJlIGNhbGxlZCB0d2ljZSwgYnV0IGhhcyBvbmx5IDEgV2lsbE9uY2UoKS4KK0dNT0NL
IFdBUk5JTkc6CitGSUxFOiM6IEFjdGlvbnMgcmFuIG91dCBpbiBFWFBFQ1RfQ0FMTChmb29fLCBC
YXIyKF8sIF8pKS4uLgorQ2FsbGVkIDIgdGltZXMsIGJ1dCBvbmx5IDEgV2lsbE9uY2UoKSBpcyBz
cGVjaWZpZWQgLSByZXR1cm5pbmcgZGVmYXVsdCB2YWx1ZS4KK1N0YWNrIHRyYWNlOgorWyAgICAg
ICBPSyBdIEdNb2NrT3V0cHV0VGVzdC5FeHBsaWNpdEFjdGlvbnNSdW5PdXQKK1sgUlVOICAgICAg
XSBHTW9ja091dHB1dFRlc3QuVW5leHBlY3RlZENhbGwKK3Vua25vd24gZmlsZTogRmFpbHVyZQor
CitVbmV4cGVjdGVkIG1vY2sgZnVuY3Rpb24gY2FsbCAtIHJldHVybmluZyBkZWZhdWx0IHZhbHVl
LgorICAgIEZ1bmN0aW9uIGNhbGw6IEJhcjIoMSwgMCkKKyAgICAgICAgICBSZXR1cm5zOiBmYWxz
ZQorR29vZ2xlIE1vY2sgdHJpZWQgdGhlIGZvbGxvd2luZyAxIGV4cGVjdGF0aW9uLCBidXQgaXQg
ZGlkbid0IG1hdGNoOgorCitGSUxFOiM6IEVYUEVDVF9DQUxMKGZvb18sIEJhcjIoMCwgXykpLi4u
CisgIEV4cGVjdGVkIGFyZyAjMDogaXMgZXF1YWwgdG8gMAorICAgICAgICAgICBBY3R1YWw6IDEK
KyAgICAgICAgIEV4cGVjdGVkOiB0byBiZSBjYWxsZWQgb25jZQorICAgICAgICAgICBBY3R1YWw6
IG5ldmVyIGNhbGxlZCAtIHVuc2F0aXNmaWVkIGFuZCBhY3RpdmUKK1sgIEZBSUxFRCAgXSBHTW9j
a091dHB1dFRlc3QuVW5leHBlY3RlZENhbGwKK1sgUlVOICAgICAgXSBHTW9ja091dHB1dFRlc3Qu
VW5leHBlY3RlZENhbGxUb1ZvaWRGdW5jdGlvbgordW5rbm93biBmaWxlOiBGYWlsdXJlCisKK1Vu
ZXhwZWN0ZWQgbW9jayBmdW5jdGlvbiBjYWxsIC0gcmV0dXJuaW5nIGRpcmVjdGx5LgorICAgIEZ1
bmN0aW9uIGNhbGw6IEJhcjMoMSwgMCkKK0dvb2dsZSBNb2NrIHRyaWVkIHRoZSBmb2xsb3dpbmcg
MSBleHBlY3RhdGlvbiwgYnV0IGl0IGRpZG4ndCBtYXRjaDoKKworRklMRTojOiBFWFBFQ1RfQ0FM
TChmb29fLCBCYXIzKDAsIF8pKS4uLgorICBFeHBlY3RlZCBhcmcgIzA6IGlzIGVxdWFsIHRvIDAK
KyAgICAgICAgICAgQWN0dWFsOiAxCisgICAgICAgICBFeHBlY3RlZDogdG8gYmUgY2FsbGVkIG9u
Y2UKKyAgICAgICAgICAgQWN0dWFsOiBuZXZlciBjYWxsZWQgLSB1bnNhdGlzZmllZCBhbmQgYWN0
aXZlCitbICBGQUlMRUQgIF0gR01vY2tPdXRwdXRUZXN0LlVuZXhwZWN0ZWRDYWxsVG9Wb2lkRnVu
Y3Rpb24KK1sgUlVOICAgICAgXSBHTW9ja091dHB1dFRlc3QuRXhjZXNzaXZlQ2FsbAorRklMRToj
OiBGYWlsdXJlCitNb2NrIGZ1bmN0aW9uIGNhbGxlZCBtb3JlIHRpbWVzIHRoYW4gZXhwZWN0ZWQg
LSByZXR1cm5pbmcgZGVmYXVsdCB2YWx1ZS4KKyAgICBGdW5jdGlvbiBjYWxsOiBCYXIyKDAsIDEp
CisgICAgICAgICAgUmV0dXJuczogZmFsc2UKKyAgICAgICAgIEV4cGVjdGVkOiB0byBiZSBjYWxs
ZWQgb25jZQorICAgICAgICAgICBBY3R1YWw6IGNhbGxlZCB0d2ljZSAtIG92ZXItc2F0dXJhdGVk
IGFuZCBhY3RpdmUKK1sgIEZBSUxFRCAgXSBHTW9ja091dHB1dFRlc3QuRXhjZXNzaXZlQ2FsbAor
WyBSVU4gICAgICBdIEdNb2NrT3V0cHV0VGVzdC5FeGNlc3NpdmVDYWxsVG9Wb2lkRnVuY3Rpb24K
K0ZJTEU6IzogRmFpbHVyZQorTW9jayBmdW5jdGlvbiBjYWxsZWQgbW9yZSB0aW1lcyB0aGFuIGV4
cGVjdGVkIC0gcmV0dXJuaW5nIGRpcmVjdGx5LgorICAgIEZ1bmN0aW9uIGNhbGw6IEJhcjMoMCwg
MSkKKyAgICAgICAgIEV4cGVjdGVkOiB0byBiZSBjYWxsZWQgb25jZQorICAgICAgICAgICBBY3R1
YWw6IGNhbGxlZCB0d2ljZSAtIG92ZXItc2F0dXJhdGVkIGFuZCBhY3RpdmUKK1sgIEZBSUxFRCAg
XSBHTW9ja091dHB1dFRlc3QuRXhjZXNzaXZlQ2FsbFRvVm9pZEZ1bmN0aW9uCitbIFJVTiAgICAg
IF0gR01vY2tPdXRwdXRUZXN0LlVuaW50ZXJlc3RpbmdDYWxsCisKK0dNT0NLIFdBUk5JTkc6CitV
bmludGVyZXN0aW5nIG1vY2sgZnVuY3Rpb24gY2FsbCAtIHJldHVybmluZyBkZWZhdWx0IHZhbHVl
LgorICAgIEZ1bmN0aW9uIGNhbGw6IEJhcjIoMCwgMSkKKyAgICAgICAgICBSZXR1cm5zOiBmYWxz
ZQorTk9URTogWW91IGNhbiBzYWZlbHkgaWdub3JlIHRoZSBhYm92ZSB3YXJuaW5nIHVubGVzcyB0
aGlzIGNhbGwgc2hvdWxkIG5vdCBoYXBwZW4uICBEbyBub3Qgc3VwcHJlc3MgaXQgYnkgYmxpbmRs
eSBhZGRpbmcgYW4gRVhQRUNUX0NBTEwoKSBpZiB5b3UgZG9uJ3QgbWVhbiB0byBlbmZvcmNlIHRo
ZSBjYWxsLiAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xldGVzdC9ibG9iL21h
c3Rlci9nb29nbGVtb2NrL2RvY3MvQ29va0Jvb2subWQja25vd2luZy13aGVuLXRvLWV4cGVjdCBm
b3IgZGV0YWlscy4KK1sgICAgICAgT0sgXSBHTW9ja091dHB1dFRlc3QuVW5pbnRlcmVzdGluZ0Nh
bGwKK1sgUlVOICAgICAgXSBHTW9ja091dHB1dFRlc3QuVW5pbnRlcmVzdGluZ0NhbGxUb1ZvaWRG
dW5jdGlvbgorCitHTU9DSyBXQVJOSU5HOgorVW5pbnRlcmVzdGluZyBtb2NrIGZ1bmN0aW9uIGNh
bGwgLSByZXR1cm5pbmcgZGlyZWN0bHkuCisgICAgRnVuY3Rpb24gY2FsbDogQmFyMygwLCAxKQor
Tk9URTogWW91IGNhbiBzYWZlbHkgaWdub3JlIHRoZSBhYm92ZSB3YXJuaW5nIHVubGVzcyB0aGlz
IGNhbGwgc2hvdWxkIG5vdCBoYXBwZW4uICBEbyBub3Qgc3VwcHJlc3MgaXQgYnkgYmxpbmRseSBh
ZGRpbmcgYW4gRVhQRUNUX0NBTEwoKSBpZiB5b3UgZG9uJ3QgbWVhbiB0byBlbmZvcmNlIHRoZSBj
YWxsLiAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xldGVzdC9ibG9iL21hc3Rl
ci9nb29nbGVtb2NrL2RvY3MvQ29va0Jvb2subWQja25vd2luZy13aGVuLXRvLWV4cGVjdCBmb3Ig
ZGV0YWlscy4KK1sgICAgICAgT0sgXSBHTW9ja091dHB1dFRlc3QuVW5pbnRlcmVzdGluZ0NhbGxU
b1ZvaWRGdW5jdGlvbgorWyBSVU4gICAgICBdIEdNb2NrT3V0cHV0VGVzdC5SZXRpcmVkRXhwZWN0
YXRpb24KK3Vua25vd24gZmlsZTogRmFpbHVyZQorCitVbmV4cGVjdGVkIG1vY2sgZnVuY3Rpb24g
Y2FsbCAtIHJldHVybmluZyBkZWZhdWx0IHZhbHVlLgorICAgIEZ1bmN0aW9uIGNhbGw6IEJhcjIo
MSwgMSkKKyAgICAgICAgICBSZXR1cm5zOiBmYWxzZQorR29vZ2xlIE1vY2sgdHJpZWQgdGhlIGZv
bGxvd2luZyAyIGV4cGVjdGF0aW9ucywgYnV0IG5vbmUgbWF0Y2hlZDoKKworRklMRTojOiB0cmll
ZCBleHBlY3RhdGlvbiAjMDogRVhQRUNUX0NBTEwoZm9vXywgQmFyMihfLCBfKSkuLi4KKyAgICAg
ICAgIEV4cGVjdGVkOiB0aGUgZXhwZWN0YXRpb24gaXMgYWN0aXZlCisgICAgICAgICAgIEFjdHVh
bDogaXQgaXMgcmV0aXJlZAorICAgICAgICAgRXhwZWN0ZWQ6IHRvIGJlIGNhbGxlZCBvbmNlCisg
ICAgICAgICAgIEFjdHVhbDogY2FsbGVkIG9uY2UgLSBzYXR1cmF0ZWQgYW5kIHJldGlyZWQKK0ZJ
TEU6IzogdHJpZWQgZXhwZWN0YXRpb24gIzE6IEVYUEVDVF9DQUxMKGZvb18sIEJhcjIoMCwgMCkp
Li4uCisgIEV4cGVjdGVkIGFyZyAjMDogaXMgZXF1YWwgdG8gMAorICAgICAgICAgICBBY3R1YWw6
IDEKKyAgRXhwZWN0ZWQgYXJnICMxOiBpcyBlcXVhbCB0byAwCisgICAgICAgICAgIEFjdHVhbDog
MQorICAgICAgICAgRXhwZWN0ZWQ6IHRvIGJlIGNhbGxlZCBvbmNlCisgICAgICAgICAgIEFjdHVh
bDogbmV2ZXIgY2FsbGVkIC0gdW5zYXRpc2ZpZWQgYW5kIGFjdGl2ZQorWyAgRkFJTEVEICBdIEdN
b2NrT3V0cHV0VGVzdC5SZXRpcmVkRXhwZWN0YXRpb24KK1sgUlVOICAgICAgXSBHTW9ja091dHB1
dFRlc3QuVW5zYXRpc2ZpZWRQcmVyZXF1aXNpdGUKK3Vua25vd24gZmlsZTogRmFpbHVyZQorCitV
bmV4cGVjdGVkIG1vY2sgZnVuY3Rpb24gY2FsbCAtIHJldHVybmluZyBkZWZhdWx0IHZhbHVlLgor
ICAgIEZ1bmN0aW9uIGNhbGw6IEJhcjIoMSwgMCkKKyAgICAgICAgICBSZXR1cm5zOiBmYWxzZQor
R29vZ2xlIE1vY2sgdHJpZWQgdGhlIGZvbGxvd2luZyAyIGV4cGVjdGF0aW9ucywgYnV0IG5vbmUg
bWF0Y2hlZDoKKworRklMRTojOiB0cmllZCBleHBlY3RhdGlvbiAjMDogRVhQRUNUX0NBTEwoZm9v
XywgQmFyMigwLCAwKSkuLi4KKyAgRXhwZWN0ZWQgYXJnICMwOiBpcyBlcXVhbCB0byAwCisgICAg
ICAgICAgIEFjdHVhbDogMQorICAgICAgICAgRXhwZWN0ZWQ6IHRvIGJlIGNhbGxlZCBvbmNlCisg
ICAgICAgICAgIEFjdHVhbDogbmV2ZXIgY2FsbGVkIC0gdW5zYXRpc2ZpZWQgYW5kIGFjdGl2ZQor
RklMRTojOiB0cmllZCBleHBlY3RhdGlvbiAjMTogRVhQRUNUX0NBTEwoZm9vXywgQmFyMigxLCBf
KSkuLi4KKyAgICAgICAgIEV4cGVjdGVkOiBhbGwgcHJlLXJlcXVpc2l0ZXMgYXJlIHNhdGlzZmll
ZAorICAgICAgICAgICBBY3R1YWw6IHRoZSBmb2xsb3dpbmcgaW1tZWRpYXRlIHByZS1yZXF1aXNp
dGVzIGFyZSBub3Qgc2F0aXNmaWVkOgorRklMRTojOiBwcmUtcmVxdWlzaXRlICMwCisgICAgICAg
ICAgICAgICAgICAgKGVuZCBvZiBwcmUtcmVxdWlzaXRlcykKKyAgICAgICAgIEV4cGVjdGVkOiB0
byBiZSBjYWxsZWQgb25jZQorICAgICAgICAgICBBY3R1YWw6IG5ldmVyIGNhbGxlZCAtIHVuc2F0
aXNmaWVkIGFuZCBhY3RpdmUKK1sgIEZBSUxFRCAgXSBHTW9ja091dHB1dFRlc3QuVW5zYXRpc2Zp
ZWRQcmVyZXF1aXNpdGUKK1sgUlVOICAgICAgXSBHTW9ja091dHB1dFRlc3QuVW5zYXRpc2ZpZWRQ
cmVyZXF1aXNpdGVzCit1bmtub3duIGZpbGU6IEZhaWx1cmUKKworVW5leHBlY3RlZCBtb2NrIGZ1
bmN0aW9uIGNhbGwgLSByZXR1cm5pbmcgZGVmYXVsdCB2YWx1ZS4KKyAgICBGdW5jdGlvbiBjYWxs
OiBCYXIyKDEsIDApCisgICAgICAgICAgUmV0dXJuczogZmFsc2UKK0dvb2dsZSBNb2NrIHRyaWVk
IHRoZSBmb2xsb3dpbmcgMiBleHBlY3RhdGlvbnMsIGJ1dCBub25lIG1hdGNoZWQ6CisKK0ZJTEU6
IzogdHJpZWQgZXhwZWN0YXRpb24gIzA6IEVYUEVDVF9DQUxMKGZvb18sIEJhcjIoMCwgMCkpLi4u
CisgIEV4cGVjdGVkIGFyZyAjMDogaXMgZXF1YWwgdG8gMAorICAgICAgICAgICBBY3R1YWw6IDEK
KyAgICAgICAgIEV4cGVjdGVkOiB0byBiZSBjYWxsZWQgb25jZQorICAgICAgICAgICBBY3R1YWw6
IG5ldmVyIGNhbGxlZCAtIHVuc2F0aXNmaWVkIGFuZCBhY3RpdmUKK0ZJTEU6IzogdHJpZWQgZXhw
ZWN0YXRpb24gIzE6IEVYUEVDVF9DQUxMKGZvb18sIEJhcjIoMSwgXykpLi4uCisgICAgICAgICBF
eHBlY3RlZDogYWxsIHByZS1yZXF1aXNpdGVzIGFyZSBzYXRpc2ZpZWQKKyAgICAgICAgICAgQWN0
dWFsOiB0aGUgZm9sbG93aW5nIGltbWVkaWF0ZSBwcmUtcmVxdWlzaXRlcyBhcmUgbm90IHNhdGlz
ZmllZDoKK0ZJTEU6IzogcHJlLXJlcXVpc2l0ZSAjMAorRklMRTojOiBwcmUtcmVxdWlzaXRlICMx
CisgICAgICAgICAgICAgICAgICAgKGVuZCBvZiBwcmUtcmVxdWlzaXRlcykKKyAgICAgICAgIEV4
cGVjdGVkOiB0byBiZSBjYWxsZWQgb25jZQorICAgICAgICAgICBBY3R1YWw6IG5ldmVyIGNhbGxl
ZCAtIHVuc2F0aXNmaWVkIGFuZCBhY3RpdmUKK1sgIEZBSUxFRCAgXSBHTW9ja091dHB1dFRlc3Qu
VW5zYXRpc2ZpZWRQcmVyZXF1aXNpdGVzCitbIFJVTiAgICAgIF0gR01vY2tPdXRwdXRUZXN0LlVu
c2F0aXNmaWVkV2l0aAorRklMRTojOiBGYWlsdXJlCitBY3R1YWwgZnVuY3Rpb24gY2FsbCBjb3Vu
dCBkb2Vzbid0IG1hdGNoIEVYUEVDVF9DQUxMKGZvb18sIEJhcjIoXywgXykpLi4uCisgICAgRXhw
ZWN0ZWQgYXJnczogYXJlIGEgcGFpciB3aGVyZSB0aGUgZmlyc3QgPj0gdGhlIHNlY29uZAorICAg
ICAgICAgRXhwZWN0ZWQ6IHRvIGJlIGNhbGxlZCBvbmNlCisgICAgICAgICAgIEFjdHVhbDogbmV2
ZXIgY2FsbGVkIC0gdW5zYXRpc2ZpZWQgYW5kIGFjdGl2ZQorWyAgRkFJTEVEICBdIEdNb2NrT3V0
cHV0VGVzdC5VbnNhdGlzZmllZFdpdGgKK1sgUlVOICAgICAgXSBHTW9ja091dHB1dFRlc3QuVW5z
YXRpc2ZpZWRFeHBlY3RhdGlvbgorRklMRTojOiBGYWlsdXJlCitBY3R1YWwgZnVuY3Rpb24gY2Fs
bCBjb3VudCBkb2Vzbid0IG1hdGNoIEVYUEVDVF9DQUxMKGZvb18sIEJhcjIoMCwgXykpLi4uCisg
ICAgICAgICBFeHBlY3RlZDogdG8gYmUgY2FsbGVkIHR3aWNlCisgICAgICAgICAgIEFjdHVhbDog
Y2FsbGVkIG9uY2UgLSB1bnNhdGlzZmllZCBhbmQgYWN0aXZlCitGSUxFOiM6IEZhaWx1cmUKK0Fj
dHVhbCBmdW5jdGlvbiBjYWxsIGNvdW50IGRvZXNuJ3QgbWF0Y2ggRVhQRUNUX0NBTEwoZm9vXywg
QmFyKF8sIF8sIF8pKS4uLgorICAgICAgICAgRXhwZWN0ZWQ6IHRvIGJlIGNhbGxlZCBvbmNlCisg
ICAgICAgICAgIEFjdHVhbDogbmV2ZXIgY2FsbGVkIC0gdW5zYXRpc2ZpZWQgYW5kIGFjdGl2ZQor
WyAgRkFJTEVEICBdIEdNb2NrT3V0cHV0VGVzdC5VbnNhdGlzZmllZEV4cGVjdGF0aW9uCitbIFJV
TiAgICAgIF0gR01vY2tPdXRwdXRUZXN0Lk1pc21hdGNoQXJndW1lbnRzCit1bmtub3duIGZpbGU6
IEZhaWx1cmUKKworVW5leHBlY3RlZCBtb2NrIGZ1bmN0aW9uIGNhbGwgLSByZXR1cm5pbmcgZGVm
YXVsdCB2YWx1ZS4KKyAgICBGdW5jdGlvbiBjYWxsOiBCYXIoQDB4IyAiSG8iLCAwLCAtMC4xKQor
ICAgICAgICAgIFJldHVybnM6ICdcMCcKK0dvb2dsZSBNb2NrIHRyaWVkIHRoZSBmb2xsb3dpbmcg
MSBleHBlY3RhdGlvbiwgYnV0IGl0IGRpZG4ndCBtYXRjaDoKKworRklMRTojOiBFWFBFQ1RfQ0FM
TChmb29fLCBCYXIoUmVmKHMpLCBfLCBHZSgwKSkpLi4uCisgIEV4cGVjdGVkIGFyZyAjMDogcmVm
ZXJlbmNlcyB0aGUgdmFyaWFibGUgQDB4IyAiSGkiCisgICAgICAgICAgIEFjdHVhbDogIkhvIiwg
d2hpY2ggaXMgbG9jYXRlZCBAMHgjCisgIEV4cGVjdGVkIGFyZyAjMjogaXMgPj0gMAorICAgICAg
ICAgICBBY3R1YWw6IC0wLjEKKyAgICAgICAgIEV4cGVjdGVkOiB0byBiZSBjYWxsZWQgb25jZQor
ICAgICAgICAgICBBY3R1YWw6IG5ldmVyIGNhbGxlZCAtIHVuc2F0aXNmaWVkIGFuZCBhY3RpdmUK
K1sgIEZBSUxFRCAgXSBHTW9ja091dHB1dFRlc3QuTWlzbWF0Y2hBcmd1bWVudHMKK1sgUlVOICAg
ICAgXSBHTW9ja091dHB1dFRlc3QuTWlzbWF0Y2hXaXRoCit1bmtub3duIGZpbGU6IEZhaWx1cmUK
KworVW5leHBlY3RlZCBtb2NrIGZ1bmN0aW9uIGNhbGwgLSByZXR1cm5pbmcgZGVmYXVsdCB2YWx1
ZS4KKyAgICBGdW5jdGlvbiBjYWxsOiBCYXIyKDIsIDMpCisgICAgICAgICAgUmV0dXJuczogZmFs
c2UKK0dvb2dsZSBNb2NrIHRyaWVkIHRoZSBmb2xsb3dpbmcgMSBleHBlY3RhdGlvbiwgYnV0IGl0
IGRpZG4ndCBtYXRjaDoKKworRklMRTojOiBFWFBFQ1RfQ0FMTChmb29fLCBCYXIyKEdlKDIpLCBH
ZSgxKSkpLi4uCisgICAgRXhwZWN0ZWQgYXJnczogYXJlIGEgcGFpciB3aGVyZSB0aGUgZmlyc3Qg
Pj0gdGhlIHNlY29uZAorICAgICAgICAgICBBY3R1YWw6IGRvbid0IG1hdGNoCisgICAgICAgICBF
eHBlY3RlZDogdG8gYmUgY2FsbGVkIG9uY2UKKyAgICAgICAgICAgQWN0dWFsOiBuZXZlciBjYWxs
ZWQgLSB1bnNhdGlzZmllZCBhbmQgYWN0aXZlCitbICBGQUlMRUQgIF0gR01vY2tPdXRwdXRUZXN0
Lk1pc21hdGNoV2l0aAorWyBSVU4gICAgICBdIEdNb2NrT3V0cHV0VGVzdC5NaXNtYXRjaEFyZ3Vt
ZW50c0FuZFdpdGgKK3Vua25vd24gZmlsZTogRmFpbHVyZQorCitVbmV4cGVjdGVkIG1vY2sgZnVu
Y3Rpb24gY2FsbCAtIHJldHVybmluZyBkZWZhdWx0IHZhbHVlLgorICAgIEZ1bmN0aW9uIGNhbGw6
IEJhcjIoMSwgMykKKyAgICAgICAgICBSZXR1cm5zOiBmYWxzZQorR29vZ2xlIE1vY2sgdHJpZWQg
dGhlIGZvbGxvd2luZyAxIGV4cGVjdGF0aW9uLCBidXQgaXQgZGlkbid0IG1hdGNoOgorCitGSUxF
OiM6IEVYUEVDVF9DQUxMKGZvb18sIEJhcjIoR2UoMiksIEdlKDEpKSkuLi4KKyAgRXhwZWN0ZWQg
YXJnICMwOiBpcyA+PSAyCisgICAgICAgICAgIEFjdHVhbDogMQorICAgIEV4cGVjdGVkIGFyZ3M6
IGFyZSBhIHBhaXIgd2hlcmUgdGhlIGZpcnN0ID49IHRoZSBzZWNvbmQKKyAgICAgICAgICAgQWN0
dWFsOiBkb24ndCBtYXRjaAorICAgICAgICAgRXhwZWN0ZWQ6IHRvIGJlIGNhbGxlZCBvbmNlCisg
ICAgICAgICAgIEFjdHVhbDogbmV2ZXIgY2FsbGVkIC0gdW5zYXRpc2ZpZWQgYW5kIGFjdGl2ZQor
WyAgRkFJTEVEICBdIEdNb2NrT3V0cHV0VGVzdC5NaXNtYXRjaEFyZ3VtZW50c0FuZFdpdGgKK1sg
UlVOICAgICAgXSBHTW9ja091dHB1dFRlc3QuVW5leHBlY3RlZENhbGxXaXRoRGVmYXVsdEFjdGlv
bgordW5rbm93biBmaWxlOiBGYWlsdXJlCisKK1VuZXhwZWN0ZWQgbW9jayBmdW5jdGlvbiBjYWxs
IC0gdGFraW5nIGRlZmF1bHQgYWN0aW9uIHNwZWNpZmllZCBhdDoKK0ZJTEU6IzoKKyAgICBGdW5j
dGlvbiBjYWxsOiBCYXIyKDEsIDApCisgICAgICAgICAgUmV0dXJuczogZmFsc2UKK0dvb2dsZSBN
b2NrIHRyaWVkIHRoZSBmb2xsb3dpbmcgMSBleHBlY3RhdGlvbiwgYnV0IGl0IGRpZG4ndCBtYXRj
aDoKKworRklMRTojOiBFWFBFQ1RfQ0FMTChmb29fLCBCYXIyKDIsIDIpKS4uLgorICBFeHBlY3Rl
ZCBhcmcgIzA6IGlzIGVxdWFsIHRvIDIKKyAgICAgICAgICAgQWN0dWFsOiAxCisgIEV4cGVjdGVk
IGFyZyAjMTogaXMgZXF1YWwgdG8gMgorICAgICAgICAgICBBY3R1YWw6IDAKKyAgICAgICAgIEV4
cGVjdGVkOiB0byBiZSBjYWxsZWQgb25jZQorICAgICAgICAgICBBY3R1YWw6IG5ldmVyIGNhbGxl
ZCAtIHVuc2F0aXNmaWVkIGFuZCBhY3RpdmUKK3Vua25vd24gZmlsZTogRmFpbHVyZQorCitVbmV4
cGVjdGVkIG1vY2sgZnVuY3Rpb24gY2FsbCAtIHRha2luZyBkZWZhdWx0IGFjdGlvbiBzcGVjaWZp
ZWQgYXQ6CitGSUxFOiM6CisgICAgRnVuY3Rpb24gY2FsbDogQmFyMigwLCAwKQorICAgICAgICAg
IFJldHVybnM6IHRydWUKK0dvb2dsZSBNb2NrIHRyaWVkIHRoZSBmb2xsb3dpbmcgMSBleHBlY3Rh
dGlvbiwgYnV0IGl0IGRpZG4ndCBtYXRjaDoKKworRklMRTojOiBFWFBFQ1RfQ0FMTChmb29fLCBC
YXIyKDIsIDIpKS4uLgorICBFeHBlY3RlZCBhcmcgIzA6IGlzIGVxdWFsIHRvIDIKKyAgICAgICAg
ICAgQWN0dWFsOiAwCisgIEV4cGVjdGVkIGFyZyAjMTogaXMgZXF1YWwgdG8gMgorICAgICAgICAg
ICBBY3R1YWw6IDAKKyAgICAgICAgIEV4cGVjdGVkOiB0byBiZSBjYWxsZWQgb25jZQorICAgICAg
ICAgICBBY3R1YWw6IG5ldmVyIGNhbGxlZCAtIHVuc2F0aXNmaWVkIGFuZCBhY3RpdmUKK1sgIEZB
SUxFRCAgXSBHTW9ja091dHB1dFRlc3QuVW5leHBlY3RlZENhbGxXaXRoRGVmYXVsdEFjdGlvbgor
WyBSVU4gICAgICBdIEdNb2NrT3V0cHV0VGVzdC5FeGNlc3NpdmVDYWxsV2l0aERlZmF1bHRBY3Rp
b24KK0ZJTEU6IzogRmFpbHVyZQorTW9jayBmdW5jdGlvbiBjYWxsZWQgbW9yZSB0aW1lcyB0aGFu
IGV4cGVjdGVkIC0gdGFraW5nIGRlZmF1bHQgYWN0aW9uIHNwZWNpZmllZCBhdDoKK0ZJTEU6IzoK
KyAgICBGdW5jdGlvbiBjYWxsOiBCYXIyKDIsIDIpCisgICAgICAgICAgUmV0dXJuczogdHJ1ZQor
ICAgICAgICAgRXhwZWN0ZWQ6IHRvIGJlIGNhbGxlZCBvbmNlCisgICAgICAgICAgIEFjdHVhbDog
Y2FsbGVkIHR3aWNlIC0gb3Zlci1zYXR1cmF0ZWQgYW5kIGFjdGl2ZQorRklMRTojOiBGYWlsdXJl
CitNb2NrIGZ1bmN0aW9uIGNhbGxlZCBtb3JlIHRpbWVzIHRoYW4gZXhwZWN0ZWQgLSB0YWtpbmcg
ZGVmYXVsdCBhY3Rpb24gc3BlY2lmaWVkIGF0OgorRklMRTojOgorICAgIEZ1bmN0aW9uIGNhbGw6
IEJhcjIoMSwgMSkKKyAgICAgICAgICBSZXR1cm5zOiBmYWxzZQorICAgICAgICAgRXhwZWN0ZWQ6
IHRvIGJlIGNhbGxlZCBvbmNlCisgICAgICAgICAgIEFjdHVhbDogY2FsbGVkIHR3aWNlIC0gb3Zl
ci1zYXR1cmF0ZWQgYW5kIGFjdGl2ZQorWyAgRkFJTEVEICBdIEdNb2NrT3V0cHV0VGVzdC5FeGNl
c3NpdmVDYWxsV2l0aERlZmF1bHRBY3Rpb24KK1sgUlVOICAgICAgXSBHTW9ja091dHB1dFRlc3Qu
VW5pbnRlcmVzdGluZ0NhbGxXaXRoRGVmYXVsdEFjdGlvbgorCitHTU9DSyBXQVJOSU5HOgorVW5p
bnRlcmVzdGluZyBtb2NrIGZ1bmN0aW9uIGNhbGwgLSB0YWtpbmcgZGVmYXVsdCBhY3Rpb24gc3Bl
Y2lmaWVkIGF0OgorRklMRTojOgorICAgIEZ1bmN0aW9uIGNhbGw6IEJhcjIoMiwgMikKKyAgICAg
ICAgICBSZXR1cm5zOiB0cnVlCitOT1RFOiBZb3UgY2FuIHNhZmVseSBpZ25vcmUgdGhlIGFib3Zl
IHdhcm5pbmcgdW5sZXNzIHRoaXMgY2FsbCBzaG91bGQgbm90IGhhcHBlbi4gIERvIG5vdCBzdXBw
cmVzcyBpdCBieSBibGluZGx5IGFkZGluZyBhbiBFWFBFQ1RfQ0FMTCgpIGlmIHlvdSBkb24ndCBt
ZWFuIHRvIGVuZm9yY2UgdGhlIGNhbGwuICBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9n
b29nbGV0ZXN0L2Jsb2IvbWFzdGVyL2dvb2dsZW1vY2svZG9jcy9Db29rQm9vay5tZCNrbm93aW5n
LXdoZW4tdG8tZXhwZWN0IGZvciBkZXRhaWxzLgorCitHTU9DSyBXQVJOSU5HOgorVW5pbnRlcmVz
dGluZyBtb2NrIGZ1bmN0aW9uIGNhbGwgLSB0YWtpbmcgZGVmYXVsdCBhY3Rpb24gc3BlY2lmaWVk
IGF0OgorRklMRTojOgorICAgIEZ1bmN0aW9uIGNhbGw6IEJhcjIoMSwgMSkKKyAgICAgICAgICBS
ZXR1cm5zOiBmYWxzZQorTk9URTogWW91IGNhbiBzYWZlbHkgaWdub3JlIHRoZSBhYm92ZSB3YXJu
aW5nIHVubGVzcyB0aGlzIGNhbGwgc2hvdWxkIG5vdCBoYXBwZW4uICBEbyBub3Qgc3VwcHJlc3Mg
aXQgYnkgYmxpbmRseSBhZGRpbmcgYW4gRVhQRUNUX0NBTEwoKSBpZiB5b3UgZG9uJ3QgbWVhbiB0
byBlbmZvcmNlIHRoZSBjYWxsLiAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xl
dGVzdC9ibG9iL21hc3Rlci9nb29nbGVtb2NrL2RvY3MvQ29va0Jvb2subWQja25vd2luZy13aGVu
LXRvLWV4cGVjdCBmb3IgZGV0YWlscy4KK1sgICAgICAgT0sgXSBHTW9ja091dHB1dFRlc3QuVW5p
bnRlcmVzdGluZ0NhbGxXaXRoRGVmYXVsdEFjdGlvbgorWyBSVU4gICAgICBdIEdNb2NrT3V0cHV0
VGVzdC5FeHBsaWNpdEFjdGlvbnNSdW5PdXRXaXRoRGVmYXVsdEFjdGlvbgorCitHTU9DSyBXQVJO
SU5HOgorRklMRTojOiBUb28gZmV3IGFjdGlvbnMgc3BlY2lmaWVkIGluIEVYUEVDVF9DQUxMKGZv
b18sIEJhcjIoXywgXykpLi4uCitFeHBlY3RlZCB0byBiZSBjYWxsZWQgdHdpY2UsIGJ1dCBoYXMg
b25seSAxIFdpbGxPbmNlKCkuCitHTU9DSyBXQVJOSU5HOgorRklMRTojOiBBY3Rpb25zIHJhbiBv
dXQgaW4gRVhQRUNUX0NBTEwoZm9vXywgQmFyMihfLCBfKSkuLi4KK0NhbGxlZCAyIHRpbWVzLCBi
dXQgb25seSAxIFdpbGxPbmNlKCkgaXMgc3BlY2lmaWVkIC0gdGFraW5nIGRlZmF1bHQgYWN0aW9u
IHNwZWNpZmllZCBhdDoKK0ZJTEU6IzoKK1N0YWNrIHRyYWNlOgorWyAgICAgICBPSyBdIEdNb2Nr
T3V0cHV0VGVzdC5FeHBsaWNpdEFjdGlvbnNSdW5PdXRXaXRoRGVmYXVsdEFjdGlvbgorWyBSVU4g
ICAgICBdIEdNb2NrT3V0cHV0VGVzdC5DYXRjaGVzTGVha2VkTW9ja3MKK1sgICAgICAgT0sgXSBH
TW9ja091dHB1dFRlc3QuQ2F0Y2hlc0xlYWtlZE1vY2tzCitbICBGQUlMRUQgIF0gR01vY2tPdXRw
dXRUZXN0LlVuZXhwZWN0ZWRDYWxsCitbICBGQUlMRUQgIF0gR01vY2tPdXRwdXRUZXN0LlVuZXhw
ZWN0ZWRDYWxsVG9Wb2lkRnVuY3Rpb24KK1sgIEZBSUxFRCAgXSBHTW9ja091dHB1dFRlc3QuRXhj
ZXNzaXZlQ2FsbAorWyAgRkFJTEVEICBdIEdNb2NrT3V0cHV0VGVzdC5FeGNlc3NpdmVDYWxsVG9W
b2lkRnVuY3Rpb24KK1sgIEZBSUxFRCAgXSBHTW9ja091dHB1dFRlc3QuUmV0aXJlZEV4cGVjdGF0
aW9uCitbICBGQUlMRUQgIF0gR01vY2tPdXRwdXRUZXN0LlVuc2F0aXNmaWVkUHJlcmVxdWlzaXRl
CitbICBGQUlMRUQgIF0gR01vY2tPdXRwdXRUZXN0LlVuc2F0aXNmaWVkUHJlcmVxdWlzaXRlcwor
WyAgRkFJTEVEICBdIEdNb2NrT3V0cHV0VGVzdC5VbnNhdGlzZmllZFdpdGgKK1sgIEZBSUxFRCAg
XSBHTW9ja091dHB1dFRlc3QuVW5zYXRpc2ZpZWRFeHBlY3RhdGlvbgorWyAgRkFJTEVEICBdIEdN
b2NrT3V0cHV0VGVzdC5NaXNtYXRjaEFyZ3VtZW50cworWyAgRkFJTEVEICBdIEdNb2NrT3V0cHV0
VGVzdC5NaXNtYXRjaFdpdGgKK1sgIEZBSUxFRCAgXSBHTW9ja091dHB1dFRlc3QuTWlzbWF0Y2hB
cmd1bWVudHNBbmRXaXRoCitbICBGQUlMRUQgIF0gR01vY2tPdXRwdXRUZXN0LlVuZXhwZWN0ZWRD
YWxsV2l0aERlZmF1bHRBY3Rpb24KK1sgIEZBSUxFRCAgXSBHTW9ja091dHB1dFRlc3QuRXhjZXNz
aXZlQ2FsbFdpdGhEZWZhdWx0QWN0aW9uCisKKworRklMRTojOiBFUlJPUjogdGhpcyBtb2NrIG9i
amVjdCBzaG91bGQgYmUgZGVsZXRlZCBidXQgbmV2ZXIgaXMuIEl0cyBhZGRyZXNzIGlzIEAweCMu
CitGSUxFOiM6IEVSUk9SOiB0aGlzIG1vY2sgb2JqZWN0IHNob3VsZCBiZSBkZWxldGVkIGJ1dCBu
ZXZlciBpcy4gSXRzIGFkZHJlc3MgaXMgQDB4Iy4KK0ZJTEU6IzogRVJST1I6IHRoaXMgbW9jayBv
YmplY3Qgc2hvdWxkIGJlIGRlbGV0ZWQgYnV0IG5ldmVyIGlzLiBJdHMgYWRkcmVzcyBpcyBAMHgj
LgorRVJST1I6IDMgbGVha2VkIG1vY2sgb2JqZWN0cyBmb3VuZCBhdCBwcm9ncmFtIGV4aXQuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2NrX3N0cmVzc190ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZW1vY2svdGVzdC9nbW9ja19zdHJlc3NfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMTZiYWRkYThlZWMz
ZTk3MDY2ZDVlNWRjOGUxOGJkNDJlMjFlOGNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1v
Y2svdGVzdC9nbW9ja19zdHJlc3NfdGVzdC5jYwpAQCAtMCwwICsxLDMyMiBAQAorLy8gQ29weXJp
Z2h0IDIwMDcsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisv
LyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRp
b24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisv
LyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEF1dGhvcjogd2FuQGdv
b2dsZS5jb20gKFpoYW55b25nIFdhbikKKworLy8gVGVzdHMgdGhhdCBHb29nbGUgTW9jayBjb25z
dHJ1Y3RzIGNhbiBiZSB1c2VkIGluIGEgbGFyZ2UgbnVtYmVyIG9mCisvLyB0aHJlYWRzIGNvbmN1
cnJlbnRseS4KKworI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rl
c3QuaCIKKworbmFtZXNwYWNlIHRlc3RpbmcgeworbmFtZXNwYWNlIHsKKworLy8gRnJvbSA8Z3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oPi4KK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlRo
cmVhZFdpdGhQYXJhbTsKKworLy8gVGhlIG1heGltdW0gbnVtYmVyIG9mIHRlc3QgdGhyZWFkcyAo
bm90IGluY2x1ZGluZyBoZWxwZXIgdGhyZWFkcykKKy8vIHRvIGNyZWF0ZS4KK2NvbnN0IGludCBr
TWF4VGVzdFRocmVhZHMgPSA1MDsKKworLy8gSG93IG1hbnkgdGltZXMgdG8gcmVwZWF0IGEgdGFz
ayBpbiBhIHRlc3QgdGhyZWFkLgorY29uc3QgaW50IGtSZXBlYXQgPSA1MDsKKworY2xhc3MgTW9j
a0ZvbyB7CisgcHVibGljOgorICBNT0NLX01FVEhPRDEoQmFyLCBpbnQoaW50IG4pKTsgIC8vIE5P
TElOVAorICBNT0NLX01FVEhPRDIoQmF6LCBjaGFyKGNvbnN0IGNoYXIqIHMxLCBjb25zdCBzdGQ6
OnN0cmluZyYgczIpKTsgIC8vIE5PTElOVAorfTsKKworLy8gSGVscGVyIGZvciB3YWl0aW5nIGZv
ciB0aGUgZ2l2ZW4gdGhyZWFkIHRvIGZpbmlzaCBhbmQgdGhlbiBkZWxldGluZyBpdC4KK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPgordm9pZCBKb2luQW5kRGVsZXRlKFRocmVhZFdpdGhQYXJhbTxUPiog
dCkgeworICB0LT5Kb2luKCk7CisgIGRlbGV0ZSB0OworfQorCit1c2luZyBpbnRlcm5hbDo6bGlu
a2VkX3B0cjsKKworLy8gSGVscGVyIGNsYXNzZXMgZm9yIHRlc3RpbmcgdXNpbmcgbGlua2VkX3B0
ciBjb25jdXJyZW50bHkuCisKK2NsYXNzIEJhc2UgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgQmFz
ZShpbnQgYV94KSA6IHhfKGFfeCkge30KKyAgdmlydHVhbCB+QmFzZSgpIHt9CisgIGludCB4KCkg
Y29uc3QgeyByZXR1cm4geF87IH0KKyBwcml2YXRlOgorICBpbnQgeF87Cit9OworCitjbGFzcyBE
ZXJpdmVkMSA6IHB1YmxpYyBCYXNlIHsKKyBwdWJsaWM6CisgIERlcml2ZWQxKGludCBhX3gsIGlu
dCBhX3kpIDogQmFzZShhX3gpLCB5XyhhX3kpIHt9CisgIGludCB5KCkgY29uc3QgeyByZXR1cm4g
eV87IH0KKyBwcml2YXRlOgorICBpbnQgeV87Cit9OworCitjbGFzcyBEZXJpdmVkMiA6IHB1Ymxp
YyBCYXNlIHsKKyBwdWJsaWM6CisgIERlcml2ZWQyKGludCBhX3gsIGludCBhX3opIDogQmFzZShh
X3gpLCB6XyhhX3opIHt9CisgIGludCB6KCkgY29uc3QgeyByZXR1cm4gel87IH0KKyBwcml2YXRl
OgorICBpbnQgel87Cit9OworCitsaW5rZWRfcHRyPERlcml2ZWQxPiBwb2ludGVyMShuZXcgRGVy
aXZlZDEoMSwgMikpOworbGlua2VkX3B0cjxEZXJpdmVkMj4gcG9pbnRlcjIobmV3IERlcml2ZWQy
KDMsIDQpKTsKKworc3RydWN0IER1bW15IHt9OworCisvLyBUZXN0cyB0aGF0IHdlIGNhbiBjb3B5
IGZyb20gYSBsaW5rZWRfcHRyIGFuZCByZWFkIGl0IGNvbmN1cnJlbnRseS4KK3ZvaWQgVGVzdENv
bmN1cnJlbnRDb3B5QW5kUmVhZExpbmtlZFB0cihEdW1teSAvKiBkdW1teSAqLykgeworICAvLyBS
ZWFkcyBwb2ludGVyMSBhbmQgcG9pbnRlcjIgd2hpbGUgdGhleSBhcmUgYmVpbmcgY29waWVkIGZy
b20gaW4KKyAgLy8gYW5vdGhlciB0aHJlYWQuCisgIEVYUEVDVF9FUSgxLCBwb2ludGVyMS0+eCgp
KTsKKyAgRVhQRUNUX0VRKDIsIHBvaW50ZXIxLT55KCkpOworICBFWFBFQ1RfRVEoMywgcG9pbnRl
cjItPngoKSk7CisgIEVYUEVDVF9FUSg0LCBwb2ludGVyMi0+eigpKTsKKworICAvLyBDb3BpZXMg
ZnJvbSBwb2ludGVyMS4KKyAgbGlua2VkX3B0cjxEZXJpdmVkMT4gcDEocG9pbnRlcjEpOworICBF
WFBFQ1RfRVEoMSwgcDEtPngoKSk7CisgIEVYUEVDVF9FUSgyLCBwMS0+eSgpKTsKKworICAvLyBB
c3NpZ25zIGZyb20gcG9pbnRlcjIgd2hlcmUgdGhlIExIUyB3YXMgZW1wdHkuCisgIGxpbmtlZF9w
dHI8QmFzZT4gcDI7CisgIHAyID0gcG9pbnRlcjE7CisgIEVYUEVDVF9FUSgxLCBwMi0+eCgpKTsK
KworICAvLyBBc3NpZ25zIGZyb20gcG9pbnRlcjIgd2hlcmUgdGhlIExIUyB3YXMgbm90IGVtcHR5
LgorICBwMiA9IHBvaW50ZXIyOworICBFWFBFQ1RfRVEoMywgcDItPngoKSk7Cit9CisKK2NvbnN0
IGxpbmtlZF9wdHI8RGVyaXZlZDE+IHAwKG5ldyBEZXJpdmVkMSgxLCAyKSk7CisKKy8vIFRlc3Rz
IHRoYXQgd2UgY2FuIGNvbmN1cnJlbnRseSBtb2RpZnkgdHdvIGxpbmtlZF9wdHJzIHRoYXQgcG9p
bnQgdG8KKy8vIHRoZSBzYW1lIG9iamVjdC4KK3ZvaWQgVGVzdENvbmN1cnJlbnRXcml0ZVRvRXF1
YWxMaW5rZWRQdHIoRHVtbXkgLyogZHVtbXkgKi8pIHsKKyAgLy8gcDEgYW5kIHAyIHBvaW50IHRv
IHRoZSBzYW1lLCBzaGFyZWQgdGhpbmcuICBPbmUgdGhyZWFkIHJlc2V0cyBwMS4KKyAgLy8gQW5v
dGhlciB0aHJlYWQgYXNzaWducyB0byBwMi4gIFRoaXMgd2lsbCBjYXVzZSB0aGUgc2FtZQorICAv
LyB1bmRlcmx5aW5nICJyaW5nIiB0byBiZSB1cGRhdGVkIGNvbmN1cnJlbnRseS4KKyAgbGlua2Vk
X3B0cjxEZXJpdmVkMT4gcDEocDApOworICBsaW5rZWRfcHRyPERlcml2ZWQxPiBwMihwMCk7CisK
KyAgRVhQRUNUX0VRKDEsIHAxLT54KCkpOworICBFWFBFQ1RfRVEoMiwgcDEtPnkoKSk7CisKKyAg
RVhQRUNUX0VRKDEsIHAyLT54KCkpOworICBFWFBFQ1RfRVEoMiwgcDItPnkoKSk7CisKKyAgcDEu
cmVzZXQoKTsKKyAgcDIgPSBwMDsKKworICBFWFBFQ1RfRVEoMSwgcDItPngoKSk7CisgIEVYUEVD
VF9FUSgyLCBwMi0+eSgpKTsKK30KKworLy8gVGVzdHMgdGhhdCBkaWZmZXJlbnQgbW9jayBvYmpl
Y3RzIGNhbiBiZSB1c2VkIGluIHRoZWlyIHJlc3BlY3RpdmUKKy8vIHRocmVhZHMuICBUaGlzIHNo
b3VsZCBnZW5lcmF0ZSBubyBHb29nbGUgVGVzdCBmYWlsdXJlLgordm9pZCBUZXN0Q29uY3VycmVu
dE1vY2tPYmplY3RzKER1bW15IC8qIGR1bW15ICovKSB7CisgIC8vIENyZWF0ZXMgYSBtb2NrIGFu
ZCBkb2VzIHNvbWUgdHlwaWNhbCBvcGVyYXRpb25zIG9uIGl0LgorICBNb2NrRm9vIGZvbzsKKyAg
T05fQ0FMTChmb28sIEJhcihfKSkKKyAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybigxKSk7Cisg
IE9OX0NBTEwoZm9vLCBCYXooXywgXykpCisgICAgICAuV2lsbEJ5RGVmYXVsdChSZXR1cm4oJ2In
KSk7CisgIE9OX0NBTEwoZm9vLCBCYXooXywgInlvdSIpKQorICAgICAgLldpbGxCeURlZmF1bHQo
UmV0dXJuKCdhJykpOworCisgIEVYUEVDVF9DQUxMKGZvbywgQmFyKDApKQorICAgICAgLlRpbWVz
KEF0TW9zdCgzKSk7CisgIEVYUEVDVF9DQUxMKGZvbywgQmF6KF8sIF8pKTsKKyAgRVhQRUNUX0NB
TEwoZm9vLCBCYXooImhpIiwgInlvdSIpKQorICAgICAgLldpbGxPbmNlKFJldHVybigneicpKQor
ICAgICAgLldpbGxSZXBlYXRlZGx5KERvRGVmYXVsdCgpKTsKKworICBFWFBFQ1RfRVEoMSwgZm9v
LkJhcigwKSk7CisgIEVYUEVDVF9FUSgxLCBmb28uQmFyKDApKTsKKyAgRVhQRUNUX0VRKCd6Jywg
Zm9vLkJheigiaGkiLCAieW91IikpOworICBFWFBFQ1RfRVEoJ2EnLCBmb28uQmF6KCJoaSIsICJ5
b3UiKSk7CisgIEVYUEVDVF9FUSgnYicsIGZvby5CYXooImhpIiwgIm1lIikpOworfQorCisvLyBU
ZXN0cyBpbnZva2luZyBtZXRob2RzIG9mIHRoZSBzYW1lIG1vY2sgb2JqZWN0IGluIG11bHRpcGxl
IHRocmVhZHMuCisKK3N0cnVjdCBIZWxwZXIxUGFyYW0geworICBNb2NrRm9vKiBtb2NrX2ZvbzsK
KyAgaW50KiBjb3VudDsKK307CisKK3ZvaWQgSGVscGVyMShIZWxwZXIxUGFyYW0gcGFyYW0pIHsK
KyAgZm9yIChpbnQgaSA9IDA7IGkgPCBrUmVwZWF0OyBpKyspIHsKKyAgICBjb25zdCBjaGFyIGNo
ID0gcGFyYW0ubW9ja19mb28tPkJheigiYSIsICJiIik7CisgICAgaWYgKGNoID09ICdhJykgewor
ICAgICAgLy8gSXQgd2FzIGFuIGV4cGVjdGVkIGNhbGwuCisgICAgICAoKnBhcmFtLmNvdW50KSsr
OworICAgIH0gZWxzZSB7CisgICAgICAvLyBJdCB3YXMgYW4gZXhjZXNzaXZlIGNhbGwuCisgICAg
ICBFWFBFQ1RfRVEoJ1wwJywgY2gpOworICAgIH0KKworICAgIC8vIEFuIHVuZXhwZWN0ZWQgY2Fs
bC4KKyAgICBFWFBFQ1RfRVEoJ1wwJywgcGFyYW0ubW9ja19mb28tPkJheigieCIsICJ5IikpIDw8
ICJFeHBlY3RlZCBmYWlsdXJlLiI7CisKKyAgICAvLyBBbiB1bmludGVyZXN0aW5nIGNhbGwuCisg
ICAgRVhQRUNUX0VRKDEsIHBhcmFtLm1vY2tfZm9vLT5CYXIoNSkpOworICB9Cit9CisKKy8vIFRo
aXMgc2hvdWxkIGdlbmVyYXRlIDMqa1JlcGVhdCArIDEgZmFpbHVyZXMgaW4gdG90YWwuCit2b2lk
IFRlc3RDb25jdXJyZW50Q2FsbHNPblNhbWVPYmplY3QoRHVtbXkgLyogZHVtbXkgKi8pIHsKKyAg
TW9ja0ZvbyBmb287CisKKyAgT05fQ0FMTChmb28sIEJhcihfKSkKKyAgICAgIC5XaWxsQnlEZWZh
dWx0KFJldHVybigxKSk7CisgIEVYUEVDVF9DQUxMKGZvbywgQmF6KF8sICJiIikpCisgICAgICAu
VGltZXMoa1JlcGVhdCkKKyAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oJ2EnKSk7CisgIEVY
UEVDVF9DQUxMKGZvbywgQmF6KF8sICJjIikpOyAgLy8gRXhwZWN0ZWQgdG8gYmUgdW5zYXRpc2Zp
ZWQuCisKKyAgLy8gVGhpcyBjaHVuayBvZiBjb2RlIHNob3VsZCBnZW5lcmF0ZSBrUmVwZWF0IGZh
aWx1cmVzIGFib3V0CisgIC8vIGV4Y2Vzc2l2ZSBjYWxscywgYW5kIDIqa1JlcGVhdCBmYWlsdXJl
cyBhYm91dCB1bmV4cGVjdGVkIGNhbGxzLgorICBpbnQgY291bnQxID0gMDsKKyAgY29uc3QgSGVs
cGVyMVBhcmFtIHBhcmFtID0geyAmZm9vLCAmY291bnQxIH07CisgIFRocmVhZFdpdGhQYXJhbTxI
ZWxwZXIxUGFyYW0+KiBjb25zdCB0ID0KKyAgICAgIG5ldyBUaHJlYWRXaXRoUGFyYW08SGVscGVy
MVBhcmFtPihIZWxwZXIxLCBwYXJhbSwgTlVMTCk7CisKKyAgaW50IGNvdW50MiA9IDA7CisgIGNv
bnN0IEhlbHBlcjFQYXJhbSBwYXJhbTIgPSB7ICZmb28sICZjb3VudDIgfTsKKyAgSGVscGVyMShw
YXJhbTIpOworICBKb2luQW5kRGVsZXRlKHQpOworCisgIEVYUEVDVF9FUShrUmVwZWF0LCBjb3Vu
dDEgKyBjb3VudDIpOworCisgIC8vIGZvbydzIGRlc3RydWN0b3Igc2hvdWxkIGdlbmVyYXRlIG9u
ZSBmYWlsdXJlIGFib3V0IHVuc2F0aXNmaWVkCisgIC8vIGV4cGVjdGF0aW9uLgorfQorCisvLyBU
ZXN0cyB1c2luZyB0aGUgc2FtZSBtb2NrIG9iamVjdCBpbiBtdWx0aXBsZSB0aHJlYWRzIHdoZW4g
dGhlCisvLyBleHBlY3RhdGlvbnMgYXJlIHBhcnRpYWxseSBvcmRlcmVkLgorCit2b2lkIEhlbHBl
cjIoTW9ja0ZvbyogZm9vKSB7CisgIGZvciAoaW50IGkgPSAwOyBpIDwga1JlcGVhdDsgaSsrKSB7
CisgICAgZm9vLT5CYXIoMik7CisgICAgZm9vLT5CYXIoMyk7CisgIH0KK30KKworLy8gVGhpcyBz
aG91bGQgZ2VuZXJhdGUgbm8gR29vZ2xlIFRlc3QgZmFpbHVyZXMuCit2b2lkIFRlc3RQYXJ0aWFs
bHlPcmRlcmVkRXhwZWN0YXRpb25zV2l0aFRocmVhZHMoRHVtbXkgLyogZHVtbXkgKi8pIHsKKyAg
TW9ja0ZvbyBmb287CisgIFNlcXVlbmNlIHMxLCBzMjsKKworICB7CisgICAgSW5TZXF1ZW5jZSBk
dW1teTsKKyAgICBFWFBFQ1RfQ0FMTChmb28sIEJhcigwKSk7CisgICAgRVhQRUNUX0NBTEwoZm9v
LCBCYXIoMSkpCisgICAgICAgIC5JblNlcXVlbmNlKHMxLCBzMik7CisgIH0KKworICBFWFBFQ1Rf
Q0FMTChmb28sIEJhcigyKSkKKyAgICAgIC5UaW1lcygyKmtSZXBlYXQpCisgICAgICAuSW5TZXF1
ZW5jZShzMSkKKyAgICAgIC5SZXRpcmVzT25TYXR1cmF0aW9uKCk7CisgIEVYUEVDVF9DQUxMKGZv
bywgQmFyKDMpKQorICAgICAgLlRpbWVzKDIqa1JlcGVhdCkKKyAgICAgIC5JblNlcXVlbmNlKHMy
KTsKKworICB7CisgICAgSW5TZXF1ZW5jZSBkdW1teTsKKyAgICBFWFBFQ1RfQ0FMTChmb28sIEJh
cigyKSkKKyAgICAgICAgLkluU2VxdWVuY2UoczEsIHMyKTsKKyAgICBFWFBFQ1RfQ0FMTChmb28s
IEJhcig0KSk7CisgIH0KKworICBmb28uQmFyKDApOworICBmb28uQmFyKDEpOworCisgIFRocmVh
ZFdpdGhQYXJhbTxNb2NrRm9vKj4qIGNvbnN0IHQgPQorICAgICAgbmV3IFRocmVhZFdpdGhQYXJh
bTxNb2NrRm9vKj4oSGVscGVyMiwgJmZvbywgTlVMTCk7CisgIEhlbHBlcjIoJmZvbyk7CisgIEpv
aW5BbmREZWxldGUodCk7CisKKyAgZm9vLkJhcigyKTsKKyAgZm9vLkJhcig0KTsKK30KKworLy8g
VGVzdHMgdXNpbmcgR29vZ2xlIE1vY2sgY29uc3RydWN0cyBpbiBtYW55IHRocmVhZHMgY29uY3Vy
cmVudGx5LgorVEVTVChTdHJlc3NUZXN0LCBDYW5Vc2VHTW9ja1dpdGhUaHJlYWRzKSB7CisgIHZv
aWQgKCp0ZXN0X3JvdXRpbmVzW10pKER1bW15IGR1bW15KSA9IHsKKyAgICAmVGVzdENvbmN1cnJl
bnRDb3B5QW5kUmVhZExpbmtlZFB0ciwKKyAgICAmVGVzdENvbmN1cnJlbnRXcml0ZVRvRXF1YWxM
aW5rZWRQdHIsCisgICAgJlRlc3RDb25jdXJyZW50TW9ja09iamVjdHMsCisgICAgJlRlc3RDb25j
dXJyZW50Q2FsbHNPblNhbWVPYmplY3QsCisgICAgJlRlc3RQYXJ0aWFsbHlPcmRlcmVkRXhwZWN0
YXRpb25zV2l0aFRocmVhZHMsCisgIH07CisKKyAgY29uc3QgaW50IGtSb3V0aW5lcyA9IHNpemVv
Zih0ZXN0X3JvdXRpbmVzKS9zaXplb2YodGVzdF9yb3V0aW5lc1swXSk7CisgIGNvbnN0IGludCBr
Q29waWVzT2ZFYWNoUm91dGluZSA9IGtNYXhUZXN0VGhyZWFkcyAvIGtSb3V0aW5lczsKKyAgY29u
c3QgaW50IGtUZXN0VGhyZWFkcyA9IGtDb3BpZXNPZkVhY2hSb3V0aW5lICoga1JvdXRpbmVzOwor
ICBUaHJlYWRXaXRoUGFyYW08RHVtbXk+KiB0aHJlYWRzW2tUZXN0VGhyZWFkc10gPSB7fTsKKyAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBrVGVzdFRocmVhZHM7IGkrKykgeworICAgIC8vIENyZWF0ZXMg
YSB0aHJlYWQgdG8gcnVuIHRoZSB0ZXN0IGZ1bmN0aW9uLgorICAgIHRocmVhZHNbaV0gPQorICAg
ICAgICBuZXcgVGhyZWFkV2l0aFBhcmFtPER1bW15Pih0ZXN0X3JvdXRpbmVzW2kgJSBrUm91dGlu
ZXNdLCBEdW1teSgpLCBOVUxMKTsKKyAgICBHVEVTVF9MT0dfKElORk8pIDw8ICJUaHJlYWQgIyIg
PDwgaSA8PCAiIHJ1bm5pbmcgLiAuIC4iOworICB9CisKKyAgLy8gQXQgdGhpcyBwb2ludCwgd2Ug
aGF2ZSBtYW55IHRocmVhZHMgcnVubmluZy4KKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBrVGVzdFRo
cmVhZHM7IGkrKykgeworICAgIEpvaW5BbmREZWxldGUodGhyZWFkc1tpXSk7CisgIH0KKworICAv
LyBFbnN1cmVzIHRoYXQgdGhlIGNvcnJlY3QgbnVtYmVyIG9mIGZhaWx1cmVzIGhhdmUgYmVlbiBy
ZXBvcnRlZC4KKyAgY29uc3QgVGVzdEluZm8qIGNvbnN0IGluZm8gPSBVbml0VGVzdDo6R2V0SW5z
dGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKTsKKyAgY29uc3QgVGVzdFJlc3VsdCYgcmVzdWx0
ID0gKmluZm8tPnJlc3VsdCgpOworICBjb25zdCBpbnQga0V4cGVjdGVkRmFpbHVyZXMgPSAoMypr
UmVwZWF0ICsgMSkqa0NvcGllc09mRWFjaFJvdXRpbmU7CisgIEdURVNUX0NIRUNLXyhrRXhwZWN0
ZWRGYWlsdXJlcyA9PSByZXN1bHQudG90YWxfcGFydF9jb3VudCgpKQorICAgICAgPDwgIkV4cGVj
dGVkICIgPDwga0V4cGVjdGVkRmFpbHVyZXMgPDwgIiBmYWlsdXJlcywgYnV0IGdvdCAiCisgICAg
ICA8PCByZXN1bHQudG90YWxfcGFydF9jb3VudCgpOworfQorCit9ICAvLyBuYW1lc3BhY2UKK30g
IC8vIG5hbWVzcGFjZSB0ZXN0aW5nCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikg
eworICB0ZXN0aW5nOjpJbml0R29vZ2xlTW9jaygmYXJnYywgYXJndik7CisKKyAgY29uc3QgaW50
IGV4aXRfY29kZSA9IFJVTl9BTExfVEVTVFMoKTsgIC8vIEV4cGVjdGVkIHRvIGZhaWwuCisgIEdU
RVNUX0NIRUNLXyhleGl0X2NvZGUgIT0gMCkgPDwgIlJVTl9BTExfVEVTVFMoKSBkaWQgbm90IGZh
aWwgYXMgZXhwZWN0ZWQiOworCisgIHByaW50ZigiXG5QQVNTXG4iKTsKKyAgcmV0dXJuIDA7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2NrX3Rlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9j
ay90ZXN0L2dtb2NrX3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDhkMGM1N2IxNmYzNDdkYzVjOGI1Nzk5
ZGUzODkwOTU4N2IyZTA1NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21v
Y2tfdGVzdC5jYwpAQCAtMCwwICsxLDIyMCBAQAorLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJ
bmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisv
LyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25n
IFdhbikKKworLy8gR29vZ2xlIE1vY2sgLSBhIGZyYW1ld29yayBmb3Igd3JpdGluZyBDKysgbW9j
ayBjbGFzc2VzLgorLy8KKy8vIFRoaXMgZmlsZSB0ZXN0cyBjb2RlIGluIGdtb2NrLmNjLgorCisj
aW5jbHVkZSAiZ21vY2svZ21vY2suaCIKKworI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlICJn
dGVzdC9ndGVzdC5oIgorCisjaWYgIWRlZmluZWQoR1RFU1RfQ1VTVE9NX0lOSVRfR09PR0xFX1RF
U1RfRlVOQ1RJT05fKQorCit1c2luZyB0ZXN0aW5nOjpHTU9DS19GTEFHKHZlcmJvc2UpOwordXNp
bmcgdGVzdGluZzo6SW5pdEdvb2dsZU1vY2s7CisKKy8vIFZlcmlmaWVzIHRoYXQgY2FsbGluZyBJ
bml0R29vZ2xlTW9jaygpIG9uIGFyZ3YgcmVzdWx0cyBpbiBuZXdfYXJndiwKKy8vIGFuZCB0aGUg
Z21vY2tfdmVyYm9zZSBmbGFnJ3MgdmFsdWUgaXMgc2V0IHRvIGV4cGVjdGVkX2dtb2NrX3ZlcmJv
c2UuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhciwgaW50IE0sIGludCBOPgordm9pZCBUZXN0SW5p
dEdvb2dsZU1vY2soY29uc3QgQ2hhciogKCZhcmd2KVtNXSwgY29uc3QgQ2hhciogKCZuZXdfYXJn
dilbTl0sCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCA6OnN0ZDo6c3RyaW5nJiBleHBl
Y3RlZF9nbW9ja192ZXJib3NlKSB7CisgIGNvbnN0IDo6c3RkOjpzdHJpbmcgb2xkX3ZlcmJvc2Ug
PSBHTU9DS19GTEFHKHZlcmJvc2UpOworCisgIGludCBhcmdjID0gTTsKKyAgSW5pdEdvb2dsZU1v
Y2soJmFyZ2MsIGNvbnN0X2Nhc3Q8Q2hhcioqPihhcmd2KSk7CisgIEFTU0VSVF9FUShOLCBhcmdj
KSA8PCAiVGhlIG5ldyBhcmd2IGhhcyB3cm9uZyBudW1iZXIgb2YgZWxlbWVudHMuIjsKKworICBm
b3IgKGludCBpID0gMDsgaSA8IE47IGkrKykgeworICAgIEVYUEVDVF9TVFJFUShuZXdfYXJndltp
XSwgYXJndltpXSk7CisgIH0KKworICBFWFBFQ1RfRVEoZXhwZWN0ZWRfZ21vY2tfdmVyYm9zZSwg
R01PQ0tfRkxBRyh2ZXJib3NlKS5jX3N0cigpKTsKKyAgR01PQ0tfRkxBRyh2ZXJib3NlKSA9IG9s
ZF92ZXJib3NlOyAgLy8gUmVzdG9yZXMgdGhlIGdtb2NrX3ZlcmJvc2UgZmxhZy4KK30KKworVEVT
VChJbml0R29vZ2xlTW9ja1Rlc3QsIFBhcnNlc0ludmFsaWRDb21tYW5kTGluZSkgeworICBjb25z
dCBjaGFyKiBhcmd2W10gPSB7CisgICAgTlVMTAorICB9OworCisgIGNvbnN0IGNoYXIqIG5ld19h
cmd2W10gPSB7CisgICAgTlVMTAorICB9OworCisgIFRlc3RJbml0R29vZ2xlTW9jayhhcmd2LCBu
ZXdfYXJndiwgR01PQ0tfRkxBRyh2ZXJib3NlKSk7Cit9CisKK1RFU1QoSW5pdEdvb2dsZU1vY2tU
ZXN0LCBQYXJzZXNFbXB0eUNvbW1hbmRMaW5lKSB7CisgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsK
KyAgICAiZm9vLmV4ZSIsCisgICAgTlVMTAorICB9OworCisgIGNvbnN0IGNoYXIqIG5ld19hcmd2
W10gPSB7CisgICAgImZvby5leGUiLAorICAgIE5VTEwKKyAgfTsKKworICBUZXN0SW5pdEdvb2ds
ZU1vY2soYXJndiwgbmV3X2FyZ3YsIEdNT0NLX0ZMQUcodmVyYm9zZSkpOworfQorCitURVNUKElu
aXRHb29nbGVNb2NrVGVzdCwgUGFyc2VzU2luZ2xlRmxhZykgeworICBjb25zdCBjaGFyKiBhcmd2
W10gPSB7CisgICAgImZvby5leGUiLAorICAgICItLWdtb2NrX3ZlcmJvc2U9aW5mbyIsCisgICAg
TlVMTAorICB9OworCisgIGNvbnN0IGNoYXIqIG5ld19hcmd2W10gPSB7CisgICAgImZvby5leGUi
LAorICAgIE5VTEwKKyAgfTsKKworICBUZXN0SW5pdEdvb2dsZU1vY2soYXJndiwgbmV3X2FyZ3Ys
ICJpbmZvIik7Cit9CisKK1RFU1QoSW5pdEdvb2dsZU1vY2tUZXN0LCBQYXJzZXNVbnJlY29nbml6
ZWRGbGFnKSB7CisgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKKyAgICAiZm9vLmV4ZSIsCisgICAg
Ii0tbm9uX2dtb2NrX2ZsYWc9YmxhaCIsCisgICAgTlVMTAorICB9OworCisgIGNvbnN0IGNoYXIq
IG5ld19hcmd2W10gPSB7CisgICAgImZvby5leGUiLAorICAgICItLW5vbl9nbW9ja19mbGFnPWJs
YWgiLAorICAgIE5VTEwKKyAgfTsKKworICBUZXN0SW5pdEdvb2dsZU1vY2soYXJndiwgbmV3X2Fy
Z3YsIEdNT0NLX0ZMQUcodmVyYm9zZSkpOworfQorCitURVNUKEluaXRHb29nbGVNb2NrVGVzdCwg
UGFyc2VzR29vZ2xlTW9ja0ZsYWdBbmRVbnJlY29nbml6ZWRGbGFnKSB7CisgIGNvbnN0IGNoYXIq
IGFyZ3ZbXSA9IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgIi0tbm9uX2dtb2NrX2ZsYWc9YmxhaCIs
CisgICAgIi0tZ21vY2tfdmVyYm9zZT1lcnJvciIsCisgICAgTlVMTAorICB9OworCisgIGNvbnN0
IGNoYXIqIG5ld19hcmd2W10gPSB7CisgICAgImZvby5leGUiLAorICAgICItLW5vbl9nbW9ja19m
bGFnPWJsYWgiLAorICAgIE5VTEwKKyAgfTsKKworICBUZXN0SW5pdEdvb2dsZU1vY2soYXJndiwg
bmV3X2FyZ3YsICJlcnJvciIpOworfQorCitURVNUKFdpZGVJbml0R29vZ2xlTW9ja1Rlc3QsIFBh
cnNlc0ludmFsaWRDb21tYW5kTGluZSkgeworICBjb25zdCB3Y2hhcl90KiBhcmd2W10gPSB7Cisg
ICAgTlVMTAorICB9OworCisgIGNvbnN0IHdjaGFyX3QqIG5ld19hcmd2W10gPSB7CisgICAgTlVM
TAorICB9OworCisgIFRlc3RJbml0R29vZ2xlTW9jayhhcmd2LCBuZXdfYXJndiwgR01PQ0tfRkxB
Ryh2ZXJib3NlKSk7Cit9CisKK1RFU1QoV2lkZUluaXRHb29nbGVNb2NrVGVzdCwgUGFyc2VzRW1w
dHlDb21tYW5kTGluZSkgeworICBjb25zdCB3Y2hhcl90KiBhcmd2W10gPSB7CisgICAgTCJmb28u
ZXhlIiwKKyAgICBOVUxMCisgIH07CisKKyAgY29uc3Qgd2NoYXJfdCogbmV3X2FyZ3ZbXSA9IHsK
KyAgICBMImZvby5leGUiLAorICAgIE5VTEwKKyAgfTsKKworICBUZXN0SW5pdEdvb2dsZU1vY2so
YXJndiwgbmV3X2FyZ3YsIEdNT0NLX0ZMQUcodmVyYm9zZSkpOworfQorCitURVNUKFdpZGVJbml0
R29vZ2xlTW9ja1Rlc3QsIFBhcnNlc1NpbmdsZUZsYWcpIHsKKyAgY29uc3Qgd2NoYXJfdCogYXJn
dltdID0geworICAgIEwiZm9vLmV4ZSIsCisgICAgTCItLWdtb2NrX3ZlcmJvc2U9aW5mbyIsCisg
ICAgTlVMTAorICB9OworCisgIGNvbnN0IHdjaGFyX3QqIG5ld19hcmd2W10gPSB7CisgICAgTCJm
b28uZXhlIiwKKyAgICBOVUxMCisgIH07CisKKyAgVGVzdEluaXRHb29nbGVNb2NrKGFyZ3YsIG5l
d19hcmd2LCAiaW5mbyIpOworfQorCitURVNUKFdpZGVJbml0R29vZ2xlTW9ja1Rlc3QsIFBhcnNl
c1VucmVjb2duaXplZEZsYWcpIHsKKyAgY29uc3Qgd2NoYXJfdCogYXJndltdID0geworICAgIEwi
Zm9vLmV4ZSIsCisgICAgTCItLW5vbl9nbW9ja19mbGFnPWJsYWgiLAorICAgIE5VTEwKKyAgfTsK
KworICBjb25zdCB3Y2hhcl90KiBuZXdfYXJndltdID0geworICAgIEwiZm9vLmV4ZSIsCisgICAg
TCItLW5vbl9nbW9ja19mbGFnPWJsYWgiLAorICAgIE5VTEwKKyAgfTsKKworICBUZXN0SW5pdEdv
b2dsZU1vY2soYXJndiwgbmV3X2FyZ3YsIEdNT0NLX0ZMQUcodmVyYm9zZSkpOworfQorCitURVNU
KFdpZGVJbml0R29vZ2xlTW9ja1Rlc3QsIFBhcnNlc0dvb2dsZU1vY2tGbGFnQW5kVW5yZWNvZ25p
emVkRmxhZykgeworICBjb25zdCB3Y2hhcl90KiBhcmd2W10gPSB7CisgICAgTCJmb28uZXhlIiwK
KyAgICBMIi0tbm9uX2dtb2NrX2ZsYWc9YmxhaCIsCisgICAgTCItLWdtb2NrX3ZlcmJvc2U9ZXJy
b3IiLAorICAgIE5VTEwKKyAgfTsKKworICBjb25zdCB3Y2hhcl90KiBuZXdfYXJndltdID0gewor
ICAgIEwiZm9vLmV4ZSIsCisgICAgTCItLW5vbl9nbW9ja19mbGFnPWJsYWgiLAorICAgIE5VTEwK
KyAgfTsKKworICBUZXN0SW5pdEdvb2dsZU1vY2soYXJndiwgbmV3X2FyZ3YsICJlcnJvciIpOwor
fQorCisjZW5kaWYgIC8vICFkZWZpbmVkKEdURVNUX0NVU1RPTV9JTklUX0dPT0dMRV9URVNUX0ZV
TkNUSU9OXykKKworLy8gTWFrZXMgc3VyZSBHb29nbGUgTW9jayBmbGFncyBjYW4gYmUgYWNjZXNz
ZWQgaW4gY29kZS4KK1RFU1QoRmxhZ1Rlc3QsIElzQWNjZXNzaWJsZUluQ29kZSkgeworICBib29s
IGR1bW15ID0gdGVzdGluZzo6R01PQ0tfRkxBRyhjYXRjaF9sZWFrZWRfbW9ja3MpICYmCisgICAg
ICB0ZXN0aW5nOjpHTU9DS19GTEFHKHZlcmJvc2UpID09ICIiOworICAodm9pZClkdW1teTsgIC8v
IEF2b2lkcyB0aGUgInVudXNlZCBsb2NhbCB2YXJpYWJsZSIgd2FybmluZy4KK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2tfdGVzdF91dGlscy5weSBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rl
c3QvZ21vY2tfdGVzdF91dGlscy5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMGUzZDNkNDQ2ODU2MDA0MzhhY2Zi
ZWY0MTRmZjQ4MmJiZDFiZGIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9n
bW9ja190ZXN0X3V0aWxzLnB5CkBAIC0wLDAgKzEsMTEyIEBACisjIS91c3IvYmluL2VudiBweXRo
b24KKyMKKyMgQ29weXJpZ2h0IDIwMDYsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmli
dXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJVbml0IHRlc3QgdXRpbGl0aWVzIGZvciBHb29n
bGUgQysrIE1vY2tpbmcgRnJhbWV3b3JrLiIiIgorCitfX2F1dGhvcl9fID0gJ3dhbkBnb29nbGUu
Y29tIChaaGFueW9uZyBXYW4pJworCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKKworCisjIERldGVy
bWluZXMgcGF0aCB0byBndGVzdF90ZXN0X3V0aWxzIGFuZCBpbXBvcnRzIGl0LgorU0NSSVBUX0RJ
UiA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykgb3IgJy4nCisKKyMgaXNkaXIgcmVzb2x2ZXMg
c3ltYm9saWMgbGlua3MuCitndGVzdF90ZXN0c191dGlsX2RpciA9IG9zLnBhdGguam9pbihTQ1JJ
UFRfRElSLCAnLi4vZ3Rlc3QvdGVzdCcpCitpZiBvcy5wYXRoLmlzZGlyKGd0ZXN0X3Rlc3RzX3V0
aWxfZGlyKToKKyAgR1RFU1RfVEVTVFNfVVRJTF9ESVIgPSBndGVzdF90ZXN0c191dGlsX2Rpcgor
ZWxzZToKKyAgR1RFU1RfVEVTVFNfVVRJTF9ESVIgPSBvcy5wYXRoLmpvaW4oU0NSSVBUX0RJUiwg
Jy4uLy4uL2d0ZXN0L3Rlc3QnKQorCitzeXMucGF0aC5hcHBlbmQoR1RFU1RfVEVTVFNfVVRJTF9E
SVIpCitpbXBvcnQgZ3Rlc3RfdGVzdF91dGlscyAgIyBweWxpbnQ6IGRpc2FibGUtbXNnPUM2MjA0
CisKKworZGVmIEdldFNvdXJjZURpcigpOgorICAiIiJSZXR1cm5zIHRoZSBhYnNvbHV0ZSBwYXRo
IG9mIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIC5weSBmaWxlcyBhcmUuIiIiCisKKyAgcmV0dXJu
IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0U291cmNlRGlyKCkKKworCitkZWYgR2V0VGVzdEV4ZWN1dGFi
bGVQYXRoKGV4ZWN1dGFibGVfbmFtZSk6CisgICIiIlJldHVybnMgdGhlIGFic29sdXRlIHBhdGgg
b2YgdGhlIHRlc3QgYmluYXJ5IGdpdmVuIGl0cyBuYW1lLgorCisgIFRoZSBmdW5jdGlvbiB3aWxs
IHByaW50IGEgbWVzc2FnZSBhbmQgYWJvcnQgdGhlIHByb2dyYW0gaWYgdGhlIHJlc3VsdGluZyBm
aWxlCisgIGRvZXNuJ3QgZXhpc3QuCisKKyAgQXJnczoKKyAgICBleGVjdXRhYmxlX25hbWU6IG5h
bWUgb2YgdGhlIHRlc3QgYmluYXJ5IHRoYXQgdGhlIHRlc3Qgc2NyaXB0IHJ1bnMuCisKKyAgUmV0
dXJuczoKKyAgICBUaGUgYWJzb2x1dGUgcGF0aCBvZiB0aGUgdGVzdCBiaW5hcnkuCisgICIiIgor
CisgIHJldHVybiBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aChleGVjdXRh
YmxlX25hbWUpCisKKworZGVmIEdldEV4aXRTdGF0dXMoZXhpdF9jb2RlKToKKyAgIiIiUmV0dXJu
cyB0aGUgYXJndW1lbnQgdG8gZXhpdCgpLCBvciAtMSBpZiBleGl0KCkgd2Fzbid0IGNhbGxlZC4K
KworICBBcmdzOgorICAgIGV4aXRfY29kZTogdGhlIHJlc3VsdCB2YWx1ZSBvZiBvcy5zeXN0ZW0o
Y29tbWFuZCkuCisgICIiIgorCisgIGlmIG9zLm5hbWUgPT0gJ250JzoKKyAgICAjIE9uIFdpbmRv
d3MsIG9zLldFWElUU1RBVFVTKCkgZG9lc24ndCB3b3JrIGFuZCBvcy5zeXN0ZW0oKSByZXR1cm5z
CisgICAgIyB0aGUgYXJndW1lbnQgdG8gZXhpdCgpIGRpcmVjdGx5LgorICAgIHJldHVybiBleGl0
X2NvZGUKKyAgZWxzZToKKyAgICAjIE9uIFVuaXgsIG9zLldFWElUU1RBVFVTKCkgbXVzdCBiZSB1
c2VkIHRvIGV4dHJhY3QgdGhlIGV4aXQgc3RhdHVzCisgICAgIyBmcm9tIHRoZSByZXN1bHQgb2Yg
b3Muc3lzdGVtKCkuCisgICAgaWYgb3MuV0lGRVhJVEVEKGV4aXRfY29kZSk6CisgICAgICByZXR1
cm4gb3MuV0VYSVRTVEFUVVMoZXhpdF9jb2RlKQorICAgIGVsc2U6CisgICAgICByZXR1cm4gLTEK
KworCisjIFN1cHByZXNzZXMgdGhlICJJbnZhbGlkIGNvbnN0IG5hbWUiIGxpbnQgY29tcGxhaW50
CisjIHB5bGludDogZGlzYWJsZS1tc2c9QzY0MDkKKworIyBFeHBvc2VzIHV0aWxpdGllcyBmcm9t
IGd0ZXN0X3Rlc3RfdXRpbHMuCitTdWJwcm9jZXNzID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9j
ZXNzCitUZXN0Q2FzZSA9IGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UKK2Vudmlyb24gPSBndGVz
dF90ZXN0X3V0aWxzLmVudmlyb24KK1NldEVudlZhciA9IGd0ZXN0X3Rlc3RfdXRpbHMuU2V0RW52
VmFyCitQUkVNQVRVUkVfRVhJVF9GSUxFX0VOVl9WQVIgPSBndGVzdF90ZXN0X3V0aWxzLlBSRU1B
VFVSRV9FWElUX0ZJTEVfRU5WX1ZBUgorCisjIHB5bGludDogZW5hYmxlLW1zZz1DNjQwOQorCisK
K2RlZiBNYWluKCk6CisgICIiIlJ1bnMgdGhlIHVuaXQgdGVzdC4iIiIKKworICBndGVzdF90ZXN0
X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvLmdpdGlnbm9yZSBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGV0ZXN0Ly5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGI3YmU0YjkxYjcwMWRiOWYzZjg5ODkxZTBi
ZGIxMjc5ZmIxNTNiNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0Ly5naXRpZ25vcmUK
QEAgLTAsMCArMSwyIEBACisjIHB5dGhvbgorKi5weWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0
L0NIQU5HRVMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9DSEFOR0VTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1NTIxMzI0MjEyYzkx
Mjg3ZDkyNDRkNDRiYWIzMDZkYjY2NGJhZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVz
dC9DSEFOR0VTCkBAIC0wLDAgKzEsMTU3IEBACitDaGFuZ2VzIGZvciAxLjcuMDoKKworKiBOZXcg
ZmVhdHVyZTogZGVhdGggdGVzdHMgYXJlIHN1cHBvcnRlZCBvbiBPcGVuQlNEIGFuZCBpbiBpT1MK
KyAgc2ltdWxhdG9yIG5vdy4KKyogTmV3IGZlYXR1cmU6IEdvb2dsZSBUZXN0IG5vdyBpbXBsZW1l
bnRzIGEgcHJvdG9jb2wgdG8gYWxsb3cKKyAgYSB0ZXN0IHJ1bm5lciB0byBkZXRlY3QgdGhhdCBh
IHRlc3QgcHJvZ3JhbSBoYXMgZXhpdGVkCisgIHByZW1hdHVyZWx5IGFuZCByZXBvcnQgaXQgYXMg
YSBmYWlsdXJlIChiZWZvcmUgaXQgd291bGQgYmUKKyAgZmFsc2VseSByZXBvcnRlZCBhcyBhIHN1
Y2Nlc3MgaWYgdGhlIGV4aXQgY29kZSBpcyAwKS4KKyogTmV3IGZlYXR1cmU6IFRlc3Q6OlJlY29y
ZFByb3BlcnR5KCkgY2FuIG5vdyBiZSB1c2VkIG91dHNpZGUgb2YgdGhlCisgIGxpZmVzcGFuIG9m
IGEgdGVzdCBtZXRob2QsIGluIHdoaWNoIGNhc2UgaXQgd2lsbCBiZSBhdHRyaWJ1dGVkIHRvCisg
IHRoZSBjdXJyZW50IHRlc3QgY2FzZSBvciB0aGUgdGVzdCBwcm9ncmFtIGluIHRoZSBYTUwgcmVw
b3J0LgorKiBOZXcgZmVhdHVyZSAocG90ZW50aWFsbHkgYnJlYWtpbmcpOiAtLWd0ZXN0X2xpc3Rf
dGVzdHMgbm93IHByaW50cworICB0aGUgdHlwZSBwYXJhbWV0ZXJzIGFuZCB2YWx1ZSBwYXJhbWV0
ZXJzIGZvciBlYWNoIHRlc3QuCisqIEltcHJvdmVtZW50OiBjaGFyIHBvaW50ZXJzIGFuZCBjaGFy
IGFycmF5cyBhcmUgbm93IGVzY2FwZWQgcHJvcGVybHkKKyAgaW4gZmFpbHVyZSBtZXNzYWdlcy4K
KyogSW1wcm92ZW1lbnQ6IGZhaWx1cmUgc3VtbWFyeSBpbiBYTUwgcmVwb3J0cyBub3cgaW5jbHVk
ZXMgZmlsZSBhbmQKKyAgbGluZSBpbmZvcm1hdGlvbi4KKyogSW1wcm92ZW1lbnQ6IHRoZSA8dGVz
dHN1aXRlcz4gWE1MIGVsZW1lbnQgbm93IGhhcyBhIHRpbWVzdGFtcCBhdHRyaWJ1dGUuCisqIElt
cHJvdmVtZW50OiBXaGVuIC0tZ3Rlc3RfZmlsdGVyIGlzIHNwZWNpZmllZCwgWE1MIHJlcG9ydCBu
b3cgZG9lc24ndAorICBjb250YWluIGluZm9ybWF0aW9uIGFib3V0IHRlc3RzIHRoYXQgYXJlIGZp
bHRlcmVkIG91dC4KKyogRml4ZWQgdGhlIGJ1ZyB3aGVyZSBsb25nIC0tZ3Rlc3RfZmlsdGVyIGZs
YWcgdmFsdWVzIGFyZSB0cnVuY2F0ZWQgaW4KKyAgZGVhdGggdGVzdHMuCisqIFBvdGVudGlhbGx5
IGJyZWFraW5nIGNoYW5nZTogUlVOX0FMTF9URVNUUygpIGlzIG5vdyBpbXBsZW1lbnRlZCBhcyBh
CisgIGZ1bmN0aW9uIGluc3RlYWQgb2YgYSBtYWNybyBpbiBvcmRlciB0byB3b3JrIGJldHRlciB3
aXRoIENsYW5nLgorKiBDb21wYXRpYmlsaXR5IGZpeGVzIHdpdGggQysrIDExIGFuZCB2YXJpb3Vz
IHBsYXRmb3Jtcy4KKyogQnVnL3dhcm5pbmcgZml4ZXMuCisKK0NoYW5nZXMgZm9yIDEuNi4wOgor
CisqIE5ldyBmZWF0dXJlOiBBRERfRkFJTFVSRV9BVCgpIGZvciByZXBvcnRpbmcgYSB0ZXN0IGZh
aWx1cmUgYXQgdGhlCisgIGdpdmVuIHNvdXJjZSBsb2NhdGlvbiAtLSB1c2VmdWwgZm9yIHdyaXRp
bmcgdGVzdGluZyB1dGlsaXRpZXMuCisqIE5ldyBmZWF0dXJlOiB0aGUgdW5pdmVyc2FsIHZhbHVl
IHByaW50ZXIgaXMgbW92ZWQgZnJvbSBHb29nbGUgTW9jaworICB0byBHb29nbGUgVGVzdC4KKyog
TmV3IGZlYXR1cmU6IHR5cGUgcGFyYW1ldGVycyBhbmQgdmFsdWUgcGFyYW1ldGVycyBhcmUgcmVw
b3J0ZWQgaW4KKyAgdGhlIFhNTCByZXBvcnQgbm93LgorKiBBIGd0ZXN0X2Rpc2FibGVfcHRocmVh
ZHMgQ01ha2Ugb3B0aW9uLgorKiBDb2xvcmVkIG91dHB1dCB3b3JrcyBpbiBHTlUgU2NyZWVuIHNl
c3Npb25zIG5vdy4KKyogUGFyYW1ldGVycyBvZiB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGFy
ZSBub3cgcHJpbnRlZCBpbiB0aGUKKyAgdGV4dHVhbCBvdXRwdXQuCisqIEZhaWx1cmVzIGZyb20g
YWQgaG9jIHRlc3QgYXNzZXJ0aW9ucyBydW4gYmVmb3JlIFJVTl9BTExfVEVTVFMoKSBhcmUKKyAg
bm93IGNvcnJlY3RseSByZXBvcnRlZC4KKyogQXJndW1lbnRzIG9mIEFTU0VSVF9YWSBhbmQgRVhQ
RUNUX1hZIG5vIGxvbmdlciBuZWVkIHRvIHN1cHBvcnQgPDwgdG8KKyAgb3N0cmVhbS4KKyogTW9y
ZSBjb21wbGV0ZSBoYW5kbGluZyBvZiBleGNlcHRpb25zLgorKiBHVEVTVF9BU1NFUlRfWFkgY2Fu
IGJlIHVzZWQgaW5zdGVhZCBvZiBBU1NFUlRfWFkgaW4gY2FzZSB0aGUgbGF0dGVyCisgIG5hbWUg
aXMgYWxyZWFkeSB1c2VkIGJ5IGFub3RoZXIgbGlicmFyeS4KKyogLS1ndGVzdF9jYXRjaF9leGNl
cHRpb25zIGlzIG5vdyB0cnVlIGJ5IGRlZmF1bHQsIGFsbG93aW5nIGEgdGVzdAorICBwcm9ncmFt
IHRvIGNvbnRpbnVlIGFmdGVyIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24uCisqIFZhbHVlLXBhcmFt
ZXRlcml6ZWQgdGVzdCBmaXh0dXJlcyBjYW4gbm93IGRlcml2ZSBmcm9tIFRlc3QgYW5kCisgIFdp
dGhQYXJhbUludGVyZmFjZTxUPiBzZXBhcmF0ZWx5LCBlYXNpbmcgY29udmVyc2lvbiBvZiBsZWdh
Y3kgdGVzdHMuCisqIERlYXRoIHRlc3QgbWVzc2FnZXMgYXJlIGNsZWFybHkgbWFya2VkIHRvIG1h
a2UgdGhlbSBtb3JlCisgIGRpc3Rpbmd1aXNoYWJsZSBmcm9tIG90aGVyIG1lc3NhZ2VzLgorKiBD
b21wYXRpYmlsaXR5IGZpeGVzIGZvciBBbmRyb2lkLCBHb29nbGUgTmF0aXZlIENsaWVudCwgTWlu
R1csIEhQIFVYLAorICBQb3dlclBDLCBMdWNpZCBhdXRvdG9vbHMsIGxpYkNTdGQsIFN1biBDKyss
IEJvcmxhbmQgQysrIEJ1aWxkZXIgKENvZGUgR2VhciksCisgIElCTSBYTCBDKysgKFZpc3VhbCBB
Z2UgQysrKSwgYW5kIEMrKzB4LgorKiBCdWcgZml4ZXMgYW5kIGltcGxlbWVudGF0aW9uIGNsZWFu
LXVwcy4KKyogUG90ZW50aWFsbHkgaW5jb21wYXRpYmxlIGNoYW5nZXM6IGRpc2FibGVzIHRoZSBo
YXJtZnVsICdtYWtlIGluc3RhbGwnCisgIGNvbW1hbmQgaW4gYXV0b3Rvb2xzLgorCitDaGFuZ2Vz
IGZvciAxLjUuMDoKKworICogTmV3IGZlYXR1cmU6IGFzc2VydGlvbnMgY2FuIGJlIHNhZmVseSBj
YWxsZWQgaW4gbXVsdGlwbGUgdGhyZWFkcworICAgd2hlcmUgdGhlIHB0aHJlYWRzIGxpYnJhcnkg
aXMgYXZhaWxhYmxlLgorICogTmV3IGZlYXR1cmU6IHByZWRpY2F0ZXMgdXNlZCBpbnNpZGUgRVhQ
RUNUX1RSVUUoKSBhbmQgZnJpZW5kcworICAgY2FuIG5vdyBnZW5lcmF0ZSBjdXN0b20gZmFpbHVy
ZSBtZXNzYWdlcy4KKyAqIE5ldyBmZWF0dXJlOiBHb29nbGUgVGVzdCBjYW4gbm93IGJlIGNvbXBp
bGVkIGFzIGEgRExMLgorICogTmV3IGZlYXR1cmU6IGZ1c2VkIHNvdXJjZSBmaWxlcyBhcmUgaW5j
bHVkZWQuCisgKiBOZXcgZmVhdHVyZTogcHJpbnRzIGhlbHAgd2hlbiBlbmNvdW50ZXJpbmcgdW5y
ZWNvZ25pemVkIEdvb2dsZSBUZXN0IGZsYWdzLgorICogRXhwZXJpbWVudGFsIGZlYXR1cmU6IENN
YWtlIGJ1aWxkIHNjcmlwdCAocmVxdWlyZXMgQ01ha2UgMi42LjQrKS4KKyAqIEV4cGVyaW1lbnRh
bCBmZWF0dXJlOiB0aGUgUHVtcCBzY3JpcHQgZm9yIG1ldGEgcHJvZ3JhbW1pbmcuCisgKiBkb3Vi
bGUgdmFsdWVzIHN0cmVhbWVkIHRvIGFuIGFzc2VydGlvbiBhcmUgcHJpbnRlZCB3aXRoIGVub3Vn
aCBwcmVjaXNpb24KKyAgIHRvIGRpZmZlcmVudGlhdGUgYW55IHR3byBkaWZmZXJlbnQgdmFsdWVz
LgorICogR29vZ2xlIFRlc3Qgbm93IHdvcmtzIG9uIFNvbGFyaXMgYW5kIEFJWC4KKyAqIEJ1aWxk
IGFuZCB0ZXN0IHNjcmlwdCBpbXByb3ZlbWVudHMuCisgKiBCdWcgZml4ZXMgYW5kIGltcGxlbWVu
dGF0aW9uIGNsZWFuLXVwcy4KKworIFBvdGVudGlhbGx5IGJyZWFraW5nIGNoYW5nZXM6CisKKyAq
IFN0b3BwZWQgc3VwcG9ydGluZyBWQysrIDcuMSB3aXRoIGV4Y2VwdGlvbnMgZGlzYWJsZWQuCisg
KiBEcm9wcGVkIHN1cHBvcnQgZm9yICdtYWtlIGluc3RhbGwnLgorCitDaGFuZ2VzIGZvciAxLjQu
MDoKKworICogTmV3IGZlYXR1cmU6IHRoZSBldmVudCBsaXN0ZW5lciBBUEkKKyAqIE5ldyBmZWF0
dXJlOiB0ZXN0IHNodWZmbGluZworICogTmV3IGZlYXR1cmU6IHRoZSBYTUwgcmVwb3J0IGZvcm1h
dCBpcyBjbG9zZXIgdG8ganVuaXRyZXBvcnQgYW5kIGNhbgorICAgYmUgcGFyc2VkIGJ5IEh1ZHNv
biBub3cuCisgKiBOZXcgZmVhdHVyZTogd2hlbiBhIHRlc3QgcnVucyB1bmRlciBWaXN1YWwgU3R1
ZGlvLCBpdHMgZmFpbHVyZXMgYXJlCisgICBpbnRlZ3JhdGVkIGluIHRoZSBJREUuCisgKiBOZXcg
ZmVhdHVyZTogL01EKGQpIHZlcnNpb25zIG9mIFZDKysgcHJvamVjdHMuCisgKiBOZXcgZmVhdHVy
ZTogZWxhcHNlZCB0aW1lIGZvciB0aGUgdGVzdHMgaXMgcHJpbnRlZCBieSBkZWZhdWx0LgorICog
TmV3IGZlYXR1cmU6IGNvbWVzIHdpdGggYSBUUjEgdHVwbGUgaW1wbGVtZW50YXRpb24gc3VjaCB0
aGF0IEJvb3N0CisgICBpcyBubyBsb25nZXIgbmVlZGVkIGZvciBDb21iaW5lKCkuCisgKiBOZXcg
ZmVhdHVyZTogRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCBtYWNybyBhbmQgZnJpZW5kcy4KKyAq
IE5ldyBmZWF0dXJlOiB0aGUgWGNvZGUgcHJvamVjdCBjYW4gbm93IHByb2R1Y2Ugc3RhdGljIGd0
ZXN0CisgICBsaWJyYXJpZXMgaW4gYWRkaXRpb24gdG8gYSBmcmFtZXdvcmsuCisgKiBDb21wYXRp
YmlsaXR5IGZpeGVzIGZvciBTb2xhcmlzLCBDeWd3aW4sIG1pbkdXLCBXaW5kb3dzIE1vYmlsZSwK
KyAgIFN5bWJpYW4sIGdjYywgYW5kIEMrK0J1aWxkZXIuCisgKiBCdWcgZml4ZXMgYW5kIGltcGxl
bWVudGF0aW9uIGNsZWFuLXVwcy4KKworQ2hhbmdlcyBmb3IgMS4zLjA6CisKKyAqIE5ldyBmZWF0
dXJlOiBkZWF0aCB0ZXN0cyBvbiBXaW5kb3dzLCBDeWd3aW4sIGFuZCBNYWMuCisgKiBOZXcgZmVh
dHVyZTogYWJpbGl0eSB0byB1c2UgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBpbiBvdGhlciB0ZXN0
aW5nCisgICBmcmFtZXdvcmtzLgorICogTmV3IGZlYXR1cmU6IGFiaWxpdHkgdG8gcnVuIGRpc2Fi
bGVkIHRlc3QgdmlhCisgICAtLWd0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzLgorICogTmV3
IGZlYXR1cmU6IHRoZSAtLWhlbHAgZmxhZyBmb3IgcHJpbnRpbmcgdGhlIHVzYWdlLgorICogTmV3
IGZlYXR1cmU6IGFjY2VzcyB0byBHb29nbGUgVGVzdCBmbGFnIHZhbHVlcyBpbiB1c2VyIGNvZGUu
CisgKiBOZXcgZmVhdHVyZTogYSBzY3JpcHQgdGhhdCBwYWNrcyBHb29nbGUgVGVzdCBpbnRvIG9u
ZSAuaCBhbmQgb25lCisgICAuY2MgZmlsZSBmb3IgZWFzeSBkZXBsb3ltZW50LgorICogTmV3IGZl
YXR1cmU6IHN1cHBvcnQgZm9yIGRpc3RyaWJ1dGluZyB0ZXN0IGZ1bmN0aW9ucyB0byBtdWx0aXBs
ZQorICAgbWFjaGluZXMgKHJlcXVpcmVzIHN1cHBvcnQgZnJvbSB0aGUgdGVzdCBydW5uZXIpLgor
ICogQnVnIGZpeGVzIGFuZCBpbXBsZW1lbnRhdGlvbiBjbGVhbi11cHMuCisKK0NoYW5nZXMgZm9y
IDEuMi4xOgorCisgKiBDb21wYXRpYmlsaXR5IGZpeGVzIGZvciBMaW51eCBJQS02NCBhbmQgSUJN
IHovT1MuCisgKiBBZGRlZCBzdXBwb3J0IGZvciB1c2luZyBCb29zdCBhbmQgb3RoZXIgVFIxIGlt
cGxlbWVudGF0aW9ucy4KKyAqIENoYW5nZXMgdG8gdGhlIGJ1aWxkIHNjcmlwdHMgdG8gc3VwcG9y
dCB1cGNvbWluZyByZWxlYXNlIG9mIEdvb2dsZSBDKysKKyAgIE1vY2tpbmcgRnJhbWV3b3JrLgor
ICogQWRkZWQgTWFrZWZpbGUgdG8gdGhlIGRpc3RyaWJ1dGlvbiBwYWNrYWdlLgorICogSW1wcm92
ZWQgYnVpbGQgaW5zdHJ1Y3Rpb25zIGluIFJFQURNRS4KKworQ2hhbmdlcyBmb3IgMS4yLjA6CisK
KyAqIE5ldyBmZWF0dXJlOiB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgorICogTmV3IGZlYXR1
cmU6IHRoZSBBU1NFUlQvRVhQRUNUXyhOT04pRkFUQUxfRkFJTFVSRShfT05fQUxMX1RIUkVBRFMp
CisgICBtYWNyb3MuCisgKiBDaGFuZ2VkIHRoZSBYTUwgcmVwb3J0IGZvcm1hdCB0byBtYXRjaCBK
VW5pdC9BbnQncy4KKyAqIEFkZGVkIHRlc3RzIHRvIHRoZSBYY29kZSBwcm9qZWN0LgorICogQWRk
ZWQgc2NvbnMvU0NvbnNjcmlwdCBmb3IgYnVpbGRpbmcgd2l0aCBTQ29ucy4KKyAqIEFkZGVkIHNy
Yy9ndGVzdC1hbGwuY2MgZm9yIGJ1aWxkaW5nIEdvb2dsZSBUZXN0IGZyb20gYSBzaW5nbGUgZmls
ZS4KKyAqIEZpeGVkIGNvbXBhdGliaWxpdHkgd2l0aCBTb2xhcmlzIGFuZCB6L09TLgorICogRW5h
YmxlZCBydW5uaW5nIFB5dGhvbiB0ZXN0cyBvbiBzeXN0ZW1zIHdpdGggcHl0aG9uIDIuMyBpbnN0
YWxsZWQsCisgICBlLmcuIE1hYyBPUyBYIDEwLjQuCisgKiBCdWcgZml4ZXMuCisKK0NoYW5nZXMg
Zm9yIDEuMS4wOgorCisgKiBOZXcgZmVhdHVyZTogdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgor
ICogTmV3IGZlYXR1cmU6IGV4Y2VwdGlvbiBhc3NlcnRpb25zLgorICogTmV3IGZlYXR1cmU6IHBy
aW50aW5nIGVsYXBzZWQgdGltZSBvZiB0ZXN0cy4KKyAqIEltcHJvdmVkIHRoZSByb2J1c3RuZXNz
IG9mIGRlYXRoIHRlc3RzLgorICogQWRkZWQgYW4gWGNvZGUgcHJvamVjdCBhbmQgc2FtcGxlcy4K
KyAqIEFkanVzdGVkIHRoZSBvdXRwdXQgZm9ybWF0IG9uIFdpbmRvd3MgdG8gYmUgdW5kZXJzdGFu
ZGFibGUgYnkgVmlzdWFsIFN0dWRpby4KKyAqIE1pbm9yIGJ1ZyBmaXhlcy4KKworQ2hhbmdlcyBm
b3IgMS4wLjE6CisKKyAqIEFkZGVkIHByb2plY3QgZmlsZXMgZm9yIFZpc3VhbCBTdHVkaW8gNy4x
LgorICogRml4ZWQgaXNzdWVzIHdpdGggY29tcGlsaW5nIG9uIE1hYyBPUyBYLgorICogRml4ZWQg
aXNzdWVzIHdpdGggY29tcGlsaW5nIG9uIEN5Z3dpbi4KKworQ2hhbmdlcyBmb3IgMS4wLjA6CisK
KyAqIEluaXRpYWwgT3BlbiBTb3VyY2UgcmVsZWFzZSBvZiBHb29nbGUgVGVzdApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZXRlc3QvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9DTWFrZUxpc3RzLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zNmQwYTllY2MyOTg3ZjhmNzIxYWI2NjJmMDFlZWYyNDliY2M1Y2Y3Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvQ01ha2VMaXN0cy50eHQKQEAgLTAsMCArMSwy
ODYgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBDTWFrZSBidWlsZCBzY3JpcHQgZm9yIEdvb2dsZSBU
ZXN0LgorIworIyBUbyBydW4gdGhlIHRlc3RzIGZvciBHb29nbGUgVGVzdCBpdHNlbGYgb24gTGlu
dXgsIHVzZSAnbWFrZSB0ZXN0JyBvcgorIyBjdGVzdC4gIFlvdSBjYW4gc2VsZWN0IHdoaWNoIHRl
c3RzIHRvIHJ1biB1c2luZyAnY3Rlc3QgLVIgcmVnZXgnLgorIyBGb3IgbW9yZSBvcHRpb25zLCBy
dW4gJ2N0ZXN0IC0taGVscCcuCisKKyMgQlVJTERfU0hBUkVEX0xJQlMgaXMgYSBzdGFuZGFyZCBD
TWFrZSB2YXJpYWJsZSwgYnV0IHdlIGRlY2xhcmUgaXQgaGVyZSB0bworIyBtYWtlIGl0IHByb21p
bmVudCBpbiB0aGUgR1VJLgorb3B0aW9uKEJVSUxEX1NIQVJFRF9MSUJTICJCdWlsZCBzaGFyZWQg
bGlicmFyaWVzIChETExzKS4iIE9GRikKKworIyBXaGVuIG90aGVyIGxpYnJhcmllcyBhcmUgdXNp
bmcgYSBzaGFyZWQgdmVyc2lvbiBvZiBydW50aW1lIGxpYnJhcmllcywKKyMgR29vZ2xlIFRlc3Qg
YWxzbyBoYXMgdG8gdXNlIG9uZS4KK29wdGlvbigKKyAgZ3Rlc3RfZm9yY2Vfc2hhcmVkX2NydAor
ICAiVXNlIHNoYXJlZCAoRExMKSBydW4tdGltZSBsaWIgZXZlbiB3aGVuIEdvb2dsZSBUZXN0IGlz
IGJ1aWx0IGFzIHN0YXRpYyBsaWIuIgorICBPRkYpCisKK29wdGlvbihndGVzdF9idWlsZF90ZXN0
cyAiQnVpbGQgYWxsIG9mIGd0ZXN0J3Mgb3duIHRlc3RzLiIgT0ZGKQorCitvcHRpb24oZ3Rlc3Rf
YnVpbGRfc2FtcGxlcyAiQnVpbGQgZ3Rlc3QncyBzYW1wbGUgcHJvZ3JhbXMuIiBPRkYpCisKK29w
dGlvbihndGVzdF9kaXNhYmxlX3B0aHJlYWRzICJEaXNhYmxlIHVzZXMgb2YgcHRocmVhZHMgaW4g
Z3Rlc3QuIiBPRkYpCisKK29wdGlvbigKKyAgZ3Rlc3RfaGlkZV9pbnRlcm5hbF9zeW1ib2xzCisg
ICJCdWlsZCBndGVzdCB3aXRoIGludGVybmFsIHN5bWJvbHMgaGlkZGVuIGluIHNoYXJlZCBsaWJy
YXJpZXMuIgorICBPRkYpCisKKyMgRGVmaW5lcyBwcmVfcHJvamVjdF9zZXRfdXBfaGVybWV0aWNf
YnVpbGQoKSBhbmQgc2V0X3VwX2hlcm1ldGljX2J1aWxkKCkuCitpbmNsdWRlKGNtYWtlL2hlcm1l
dGljX2J1aWxkLmNtYWtlIE9QVElPTkFMKQorCitpZiAoQ09NTUFORCBwcmVfcHJvamVjdF9zZXRf
dXBfaGVybWV0aWNfYnVpbGQpCisgIHByZV9wcm9qZWN0X3NldF91cF9oZXJtZXRpY19idWlsZCgp
CitlbmRpZigpCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBQcm9qZWN0LXdpZGUgc2V0dGluZ3MK
KworIyBOYW1lIG9mIHRoZSBwcm9qZWN0LgorIworIyBDTWFrZSBmaWxlcyBpbiB0aGlzIHByb2pl
Y3QgY2FuIHJlZmVyIHRvIHRoZSByb290IHNvdXJjZSBkaXJlY3RvcnkKKyMgYXMgJHtndGVzdF9T
T1VSQ0VfRElSfSBhbmQgdG8gdGhlIHJvb3QgYmluYXJ5IGRpcmVjdG9yeSBhcworIyAke2d0ZXN0
X0JJTkFSWV9ESVJ9LgorIyBMYW5ndWFnZSAiQyIgaXMgcmVxdWlyZWQgZm9yIGZpbmRfcGFja2Fn
ZShUaHJlYWRzKS4KK3Byb2plY3QoZ3Rlc3QgQ1hYIEMpCitjbWFrZV9taW5pbXVtX3JlcXVpcmVk
KFZFUlNJT04gMi42LjQpCisKK2lmIChDT01NQU5EIHNldF91cF9oZXJtZXRpY19idWlsZCkKKyAg
c2V0X3VwX2hlcm1ldGljX2J1aWxkKCkKK2VuZGlmKCkKKworaWYgKGd0ZXN0X2hpZGVfaW50ZXJu
YWxfc3ltYm9scykKKyAgc2V0KENNQUtFX0NYWF9WSVNJQklMSVRZX1BSRVNFVCBoaWRkZW4pCisg
IHNldChDTUFLRV9WSVNJQklMSVRZX0lOTElORVNfSElEREVOIDEpCitlbmRpZigpCisKKyMgRGVm
aW5lIGhlbHBlciBmdW5jdGlvbnMgYW5kIG1hY3JvcyB1c2VkIGJ5IEdvb2dsZSBUZXN0LgoraW5j
bHVkZShjbWFrZS9pbnRlcm5hbF91dGlscy5jbWFrZSkKKworY29uZmlnX2NvbXBpbGVyX2FuZF9s
aW5rZXIoKSAgIyBEZWZpbmVkIGluIGludGVybmFsX3V0aWxzLmNtYWtlLgorCisjIFdoZXJlIEdv
b2dsZSBUZXN0J3MgLmggZmlsZXMgY2FuIGJlIGZvdW5kLgoraW5jbHVkZV9kaXJlY3RvcmllcygK
KyAgJHtndGVzdF9TT1VSQ0VfRElSfS9pbmNsdWRlCisgICR7Z3Rlc3RfU09VUkNFX0RJUn0pCisK
KyMgV2hlcmUgR29vZ2xlIFRlc3QncyBsaWJyYXJpZXMgY2FuIGJlIGZvdW5kLgorbGlua19kaXJl
Y3Rvcmllcygke2d0ZXN0X0JJTkFSWV9ESVJ9L3NyYykKKworIyBTdW1tYXJ5IG9mIHR1cGxlIHN1
cHBvcnQgZm9yIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvOgorIyBDb21waWxlciAgICB2ZXJzaW9u
KE1TKSAgdmVyc2lvbihjbWFrZSkgIFN1cHBvcnQKKyMgLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0g
IC0tLS0tLS0tLS0tLS0tICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyA8PSBWUyAy
MDEwICA8PSAxMCAgICAgICAgPD0gMTYwMCAgICAgICAgIFVzZSBHb29nbGUgVGVzdHMncyBvd24g
dHVwbGUuCisjIFZTIDIwMTIgICAgIDExICAgICAgICAgICAxNzAwICAgICAgICAgICAgc3RkOjp0
cjE6OnR1cGxlICsgX1ZBUklBRElDX01BWD0xMAorIyBWUyAyMDEzICAgICAxMiAgICAgICAgICAg
MTgwMCAgICAgICAgICAgIHN0ZDo6dHIxOjp0dXBsZQoraWYgKE1TVkMgQU5EIE1TVkNfVkVSU0lP
TiBFUVVBTCAxNzAwKQorICBhZGRfZGVmaW5pdGlvbnMoL0QgX1ZBUklBRElDX01BWD0xMCkKK2Vu
ZGlmKCkKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIERlZmluZXMgdGhlIGd0ZXN0ICYgZ3Rlc3Rf
bWFpbiBsaWJyYXJpZXMuICBVc2VyIHRlc3RzIHNob3VsZCBsaW5rCisjIHdpdGggb25lIG9mIHRo
ZW0uCisKKyMgR29vZ2xlIFRlc3QgbGlicmFyaWVzLiAgV2UgYnVpbGQgdGhlbSB1c2luZyBtb3Jl
IHN0cmljdCB3YXJuaW5ncyB0aGFuIHdoYXQKKyMgYXJlIHVzZWQgZm9yIG90aGVyIHRhcmdldHMs
IHRvIGVuc3VyZSB0aGF0IGd0ZXN0IGNhbiBiZSBjb21waWxlZCBieSBhIHVzZXIKKyMgYWdncmVz
c2l2ZSBhYm91dCB3YXJuaW5ncy4KK2N4eF9saWJyYXJ5KGd0ZXN0ICIke2N4eF9zdHJpY3R9IiBz
cmMvZ3Rlc3QtYWxsLmNjKQorY3h4X2xpYnJhcnkoZ3Rlc3RfbWFpbiAiJHtjeHhfc3RyaWN0fSIg
c3JjL2d0ZXN0X21haW4uY2MpCit0YXJnZXRfbGlua19saWJyYXJpZXMoZ3Rlc3RfbWFpbiBndGVz
dCkKKworIyBJZiB0aGUgQ01ha2UgdmVyc2lvbiBzdXBwb3J0cyBpdCwgYXR0YWNoIGhlYWRlciBk
aXJlY3RvcnkgaW5mb3JtYXRpb24KKyMgdG8gdGhlIHRhcmdldHMgZm9yIHdoZW4gd2UgYXJlIHBh
cnQgb2YgYSBwYXJlbnQgYnVpbGQgKGllIGJlaW5nIHB1bGxlZAorIyBpbiB2aWEgYWRkX3N1YmRp
cmVjdG9yeSgpIHJhdGhlciB0aGFuIGJlaW5nIGEgc3RhbmRhbG9uZSBidWlsZCkuCitpZiAoREVG
SU5FRCBDTUFLRV9WRVJTSU9OIEFORCBOT1QgIiR7Q01BS0VfVkVSU0lPTn0iIFZFUlNJT05fTEVT
UyAiMi44LjExIikKKyAgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMoZ3Rlc3QgICAgICBJTlRF
UkZBQ0UgIiR7Z3Rlc3RfU09VUkNFX0RJUn0vaW5jbHVkZSIpCisgIHRhcmdldF9pbmNsdWRlX2Rp
cmVjdG9yaWVzKGd0ZXN0X21haW4gSU5URVJGQUNFICIke2d0ZXN0X1NPVVJDRV9ESVJ9L2luY2x1
ZGUiKQorZW5kaWYoKQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgSW5zdGFsbCBydWxlcworaW5z
dGFsbChUQVJHRVRTIGd0ZXN0IGd0ZXN0X21haW4KKyAgREVTVElOQVRJT04gbGliKQoraW5zdGFs
bChESVJFQ1RPUlkgJHtndGVzdF9TT1VSQ0VfRElSfS9pbmNsdWRlL2d0ZXN0CisgIERFU1RJTkFU
SU9OIGluY2x1ZGUpCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBTYW1wbGVzIG9uIGhvdyB0byBs
aW5rIHVzZXIgdGVzdHMgd2l0aCBndGVzdCBvciBndGVzdF9tYWluLgorIworIyBUaGV5IGFyZSBu
b3QgYnVpbHQgYnkgZGVmYXVsdC4gIFRvIGJ1aWxkIHRoZW0sIHNldCB0aGUKKyMgZ3Rlc3RfYnVp
bGRfc2FtcGxlcyBvcHRpb24gdG8gT04uICBZb3UgY2FuIGRvIGl0IGJ5IHJ1bm5pbmcgY2NtYWtl
CisjIG9yIHNwZWNpZnlpbmcgdGhlIC1EZ3Rlc3RfYnVpbGRfc2FtcGxlcz1PTiBmbGFnIHdoZW4g
cnVubmluZyBjbWFrZS4KKworaWYgKGd0ZXN0X2J1aWxkX3NhbXBsZXMpCisgIGN4eF9leGVjdXRh
YmxlKHNhbXBsZTFfdW5pdHRlc3Qgc2FtcGxlcyBndGVzdF9tYWluIHNhbXBsZXMvc2FtcGxlMS5j
YykKKyAgY3h4X2V4ZWN1dGFibGUoc2FtcGxlMl91bml0dGVzdCBzYW1wbGVzIGd0ZXN0X21haW4g
c2FtcGxlcy9zYW1wbGUyLmNjKQorICBjeHhfZXhlY3V0YWJsZShzYW1wbGUzX3VuaXR0ZXN0IHNh
bXBsZXMgZ3Rlc3RfbWFpbikKKyAgY3h4X2V4ZWN1dGFibGUoc2FtcGxlNF91bml0dGVzdCBzYW1w
bGVzIGd0ZXN0X21haW4gc2FtcGxlcy9zYW1wbGU0LmNjKQorICBjeHhfZXhlY3V0YWJsZShzYW1w
bGU1X3VuaXR0ZXN0IHNhbXBsZXMgZ3Rlc3RfbWFpbiBzYW1wbGVzL3NhbXBsZTEuY2MpCisgIGN4
eF9leGVjdXRhYmxlKHNhbXBsZTZfdW5pdHRlc3Qgc2FtcGxlcyBndGVzdF9tYWluKQorICBjeHhf
ZXhlY3V0YWJsZShzYW1wbGU3X3VuaXR0ZXN0IHNhbXBsZXMgZ3Rlc3RfbWFpbikKKyAgY3h4X2V4
ZWN1dGFibGUoc2FtcGxlOF91bml0dGVzdCBzYW1wbGVzIGd0ZXN0X21haW4pCisgIGN4eF9leGVj
dXRhYmxlKHNhbXBsZTlfdW5pdHRlc3Qgc2FtcGxlcyBndGVzdCkKKyAgY3h4X2V4ZWN1dGFibGUo
c2FtcGxlMTBfdW5pdHRlc3Qgc2FtcGxlcyBndGVzdCkKK2VuZGlmKCkKKworIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjCisjCisjIEdvb2dsZSBUZXN0J3Mgb3duIHRlc3RzLgorIworIyBZb3UgY2FuIHNraXAgdGhp
cyBzZWN0aW9uIGlmIHlvdSBhcmVuJ3QgaW50ZXJlc3RlZCBpbiB0ZXN0aW5nCisjIEdvb2dsZSBU
ZXN0IGl0c2VsZi4KKyMKKyMgVGhlIHRlc3RzIGFyZSBub3QgYnVpbHQgYnkgZGVmYXVsdC4gIFRv
IGJ1aWxkIHRoZW0sIHNldCB0aGUKKyMgZ3Rlc3RfYnVpbGRfdGVzdHMgb3B0aW9uIHRvIE9OLiAg
WW91IGNhbiBkbyBpdCBieSBydW5uaW5nIGNjbWFrZQorIyBvciBzcGVjaWZ5aW5nIHRoZSAtRGd0
ZXN0X2J1aWxkX3Rlc3RzPU9OIGZsYWcgd2hlbiBydW5uaW5nIGNtYWtlLgorCitpZiAoZ3Rlc3Rf
YnVpbGRfdGVzdHMpCisgICMgVGhpcyBtdXN0IGJlIHNldCBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
Zm9yIHRoZSB0ZXN0cyB0byBiZSBydW4gYnkKKyAgIyAnbWFrZSB0ZXN0JyBvciBjdGVzdC4KKyAg
ZW5hYmxlX3Rlc3RpbmcoKQorCisgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICAjIEMrKyB0ZXN0cyBidWlsdCB3aXRoIHN0YW5k
YXJkIGNvbXBpbGVyIGZsYWdzLgorCisgIGN4eF90ZXN0KGd0ZXN0LWRlYXRoLXRlc3RfdGVzdCBn
dGVzdF9tYWluKQorICBjeHhfdGVzdChndGVzdF9lbnZpcm9ubWVudF90ZXN0IGd0ZXN0KQorICBj
eHhfdGVzdChndGVzdC1maWxlcGF0aF90ZXN0IGd0ZXN0X21haW4pCisgIGN4eF90ZXN0KGd0ZXN0
LWxpbmtlZF9wdHJfdGVzdCBndGVzdF9tYWluKQorICBjeHhfdGVzdChndGVzdC1saXN0ZW5lcl90
ZXN0IGd0ZXN0X21haW4pCisgIGN4eF90ZXN0KGd0ZXN0X21haW5fdW5pdHRlc3QgZ3Rlc3RfbWFp
bikKKyAgY3h4X3Rlc3QoZ3Rlc3QtbWVzc2FnZV90ZXN0IGd0ZXN0X21haW4pCisgIGN4eF90ZXN0
KGd0ZXN0X25vX3Rlc3RfdW5pdHRlc3QgZ3Rlc3QpCisgIGN4eF90ZXN0KGd0ZXN0LW9wdGlvbnNf
dGVzdCBndGVzdF9tYWluKQorICBjeHhfdGVzdChndGVzdC1wYXJhbS10ZXN0X3Rlc3QgZ3Rlc3QK
KyAgICB0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QyX3Rlc3QuY2MpCisgIGN4eF90ZXN0KGd0ZXN0LXBv
cnRfdGVzdCBndGVzdF9tYWluKQorICBjeHhfdGVzdChndGVzdF9wcmVkX2ltcGxfdW5pdHRlc3Qg
Z3Rlc3RfbWFpbikKKyAgY3h4X3Rlc3QoZ3Rlc3RfcHJlbWF0dXJlX2V4aXRfdGVzdCBndGVzdAor
ICAgIHRlc3QvZ3Rlc3RfcHJlbWF0dXJlX2V4aXRfdGVzdC5jYykKKyAgY3h4X3Rlc3QoZ3Rlc3Qt
cHJpbnRlcnNfdGVzdCBndGVzdF9tYWluKQorICBjeHhfdGVzdChndGVzdF9wcm9kX3Rlc3QgZ3Rl
c3RfbWFpbgorICAgIHRlc3QvcHJvZHVjdGlvbi5jYykKKyAgY3h4X3Rlc3QoZ3Rlc3RfcmVwZWF0
X3Rlc3QgZ3Rlc3QpCisgIGN4eF90ZXN0KGd0ZXN0X3NvbGVfaGVhZGVyX3Rlc3QgZ3Rlc3RfbWFp
bikKKyAgY3h4X3Rlc3QoZ3Rlc3Rfc3RyZXNzX3Rlc3QgZ3Rlc3QpCisgIGN4eF90ZXN0KGd0ZXN0
LXRlc3QtcGFydF90ZXN0IGd0ZXN0X21haW4pCisgIGN4eF90ZXN0KGd0ZXN0X3Rocm93X29uX2Zh
aWx1cmVfZXhfdGVzdCBndGVzdCkKKyAgY3h4X3Rlc3QoZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0IGd0
ZXN0X21haW4KKyAgICB0ZXN0L2d0ZXN0LXR5cGVkLXRlc3QyX3Rlc3QuY2MpCisgIGN4eF90ZXN0
KGd0ZXN0X3VuaXR0ZXN0IGd0ZXN0X21haW4pCisgIGN4eF90ZXN0KGd0ZXN0LXVuaXR0ZXN0LWFw
aV90ZXN0IGd0ZXN0KQorCisgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICAjIEMrKyB0ZXN0cyBidWlsdCB3aXRoIG5vbi1zdGFu
ZGFyZCBjb21waWxlciBmbGFncy4KKworICAjIE1TVkMgNy4xIGRvZXMgbm90IHN1cHBvcnQgU1RM
IHdpdGggZXhjZXB0aW9ucyBkaXNhYmxlZC4KKyAgaWYgKE5PVCBNU1ZDIE9SIE1TVkNfVkVSU0lP
TiBHUkVBVEVSIDEzMTApCisgICAgY3h4X2xpYnJhcnkoZ3Rlc3Rfbm9fZXhjZXB0aW9uICIke2N4
eF9ub19leGNlcHRpb259IgorICAgICAgc3JjL2d0ZXN0LWFsbC5jYykKKyAgICBjeHhfbGlicmFy
eShndGVzdF9tYWluX25vX2V4Y2VwdGlvbiAiJHtjeHhfbm9fZXhjZXB0aW9ufSIKKyAgICAgIHNy
Yy9ndGVzdC1hbGwuY2Mgc3JjL2d0ZXN0X21haW4uY2MpCisgIGVuZGlmKCkKKyAgY3h4X2xpYnJh
cnkoZ3Rlc3RfbWFpbl9ub19ydHRpICIke2N4eF9ub19ydHRpfSIKKyAgICBzcmMvZ3Rlc3QtYWxs
LmNjIHNyYy9ndGVzdF9tYWluLmNjKQorCisgIGN4eF90ZXN0X3dpdGhfZmxhZ3MoZ3Rlc3QtZGVh
dGgtdGVzdF9leF9ub2NhdGNoX3Rlc3QKKyAgICAiJHtjeHhfZXhjZXB0aW9ufSAtREdURVNUX0VO
QUJMRV9DQVRDSF9FWENFUFRJT05TXz0wIgorICAgIGd0ZXN0IHRlc3QvZ3Rlc3QtZGVhdGgtdGVz
dF9leF90ZXN0LmNjKQorICBjeHhfdGVzdF93aXRoX2ZsYWdzKGd0ZXN0LWRlYXRoLXRlc3RfZXhf
Y2F0Y2hfdGVzdAorICAgICIke2N4eF9leGNlcHRpb259IC1ER1RFU1RfRU5BQkxFX0NBVENIX0VY
Q0VQVElPTlNfPTEiCisgICAgZ3Rlc3QgdGVzdC9ndGVzdC1kZWF0aC10ZXN0X2V4X3Rlc3QuY2Mp
CisKKyAgY3h4X3Rlc3Rfd2l0aF9mbGFncyhndGVzdF9ub19ydHRpX3VuaXR0ZXN0ICIke2N4eF9u
b19ydHRpfSIKKyAgICBndGVzdF9tYWluX25vX3J0dGkgdGVzdC9ndGVzdF91bml0dGVzdC5jYykK
KworICBjeHhfc2hhcmVkX2xpYnJhcnkoZ3Rlc3RfZGxsICIke2N4eF9kZWZhdWx0fSIKKyAgICBz
cmMvZ3Rlc3QtYWxsLmNjIHNyYy9ndGVzdF9tYWluLmNjKQorCisgIGN4eF9leGVjdXRhYmxlX3dp
dGhfZmxhZ3MoZ3Rlc3RfZGxsX3Rlc3RfICIke2N4eF9kZWZhdWx0fSIKKyAgICBndGVzdF9kbGwg
dGVzdC9ndGVzdF9hbGxfdGVzdC5jYykKKyAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKGd0ZXN0X2Rs
bF90ZXN0XworICAgICAgICAgICAgICAgICAgICAgICAgUFJPUEVSVElFUworICAgICAgICAgICAg
ICAgICAgICAgICAgQ09NUElMRV9ERUZJTklUSU9OUyAiR1RFU1RfTElOS0VEX0FTX1NIQVJFRF9M
SUJSQVJZPTEiKQorCisgIGlmIChOT1QgTVNWQyBPUiBNU1ZDX1ZFUlNJT04gTEVTUyAxNjAwKSAg
IyAxNjAwIGlzIFZpc3VhbCBTdHVkaW8gMjAxMC4KKyAgICAjIFZpc3VhbCBTdHVkaW8gMjAxMCwg
MjAxMiwgYW5kIDIwMTMgZGVmaW5lIHN5bWJvbHMgaW4gc3RkOjp0cjEgdGhhdAorICAgICMgY29u
ZmxpY3Qgd2l0aCBvdXIgb3duIGRlZmluaXRpb25zLiBUaGVyZWZvcmUgdXNpbmcgb3VyIG93biB0
dXBsZSBkb2VzIG5vdAorICAgICMgd29yayBvbiB0aG9zZSBjb21waWxlcnMuCisgICAgY3h4X2xp
YnJhcnkoZ3Rlc3RfbWFpbl91c2Vfb3duX3R1cGxlICIke2N4eF91c2Vfb3duX3R1cGxlfSIKKyAg
ICAgIHNyYy9ndGVzdC1hbGwuY2Mgc3JjL2d0ZXN0X21haW4uY2MpCisKKyAgICBjeHhfdGVzdF93
aXRoX2ZsYWdzKGd0ZXN0LXR1cGxlX3Rlc3QgIiR7Y3h4X3VzZV9vd25fdHVwbGV9IgorICAgICAg
Z3Rlc3RfbWFpbl91c2Vfb3duX3R1cGxlIHRlc3QvZ3Rlc3QtdHVwbGVfdGVzdC5jYykKKworICAg
IGN4eF90ZXN0X3dpdGhfZmxhZ3MoZ3Rlc3RfdXNlX293bl90dXBsZV90ZXN0ICIke2N4eF91c2Vf
b3duX3R1cGxlfSIKKyAgICAgIGd0ZXN0X21haW5fdXNlX293bl90dXBsZQorICAgICAgdGVzdC9n
dGVzdC1wYXJhbS10ZXN0X3Rlc3QuY2MgdGVzdC9ndGVzdC1wYXJhbS10ZXN0Ml90ZXN0LmNjKQor
ICBlbmRpZigpCisKKyAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjCisgICMgUHl0aG9uIHRlc3RzLgorCisgIGN4eF9leGVjdXRhYmxl
KGd0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3RfIHRlc3QgZ3Rlc3QpCisgIHB5X3Rlc3Qo
Z3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdCkKKworICAjIFZpc3VhbCBTdHVkaW8gLk5F
VCAyMDAzIGRvZXMgbm90IHN1cHBvcnQgU1RMIHdpdGggZXhjZXB0aW9ucyBkaXNhYmxlZC4KKyAg
aWYgKE5PVCBNU1ZDIE9SIE1TVkNfVkVSU0lPTiBHUkVBVEVSIDEzMTApICAjIDEzMTAgaXMgVmlz
dWFsIFN0dWRpbyAuTkVUIDIwMDMKKyAgICBjeHhfZXhlY3V0YWJsZV93aXRoX2ZsYWdzKAorICAg
ICAgZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9uc19ub19leF90ZXN0XworICAgICAgIiR7Y3h4X25vX2V4
Y2VwdGlvbn0iCisgICAgICBndGVzdF9tYWluX25vX2V4Y2VwdGlvbgorICAgICAgdGVzdC9ndGVz
dF9jYXRjaF9leGNlcHRpb25zX3Rlc3RfLmNjKQorICBlbmRpZigpCisKKyAgY3h4X2V4ZWN1dGFi
bGVfd2l0aF9mbGFncygKKyAgICBndGVzdF9jYXRjaF9leGNlcHRpb25zX2V4X3Rlc3RfCisgICAg
IiR7Y3h4X2V4Y2VwdGlvbn0iCisgICAgZ3Rlc3RfbWFpbgorICAgIHRlc3QvZ3Rlc3RfY2F0Y2hf
ZXhjZXB0aW9uc190ZXN0Xy5jYykKKyAgcHlfdGVzdChndGVzdF9jYXRjaF9leGNlcHRpb25zX3Rl
c3QpCisKKyAgY3h4X2V4ZWN1dGFibGUoZ3Rlc3RfY29sb3JfdGVzdF8gdGVzdCBndGVzdCkKKyAg
cHlfdGVzdChndGVzdF9jb2xvcl90ZXN0KQorCisgIGN4eF9leGVjdXRhYmxlKGd0ZXN0X2Vudl92
YXJfdGVzdF8gdGVzdCBndGVzdCkKKyAgcHlfdGVzdChndGVzdF9lbnZfdmFyX3Rlc3QpCisKKyAg
Y3h4X2V4ZWN1dGFibGUoZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0XyB0ZXN0IGd0ZXN0KQorICBweV90
ZXN0KGd0ZXN0X2ZpbHRlcl91bml0dGVzdCkKKworICBjeHhfZXhlY3V0YWJsZShndGVzdF9oZWxw
X3Rlc3RfIHRlc3QgZ3Rlc3RfbWFpbikKKyAgcHlfdGVzdChndGVzdF9oZWxwX3Rlc3QpCisKKyAg
Y3h4X2V4ZWN1dGFibGUoZ3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdF8gdGVzdCBndGVzdCkKKyAg
cHlfdGVzdChndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0KQorCisgIGN4eF9leGVjdXRhYmxlKGd0
ZXN0X291dHB1dF90ZXN0XyB0ZXN0IGd0ZXN0KQorICBweV90ZXN0KGd0ZXN0X291dHB1dF90ZXN0
KQorCisgIGN4eF9leGVjdXRhYmxlKGd0ZXN0X3NodWZmbGVfdGVzdF8gdGVzdCBndGVzdCkKKyAg
cHlfdGVzdChndGVzdF9zaHVmZmxlX3Rlc3QpCisKKyAgIyBNU1ZDIDcuMSBkb2VzIG5vdCBzdXBw
b3J0IFNUTCB3aXRoIGV4Y2VwdGlvbnMgZGlzYWJsZWQuCisgIGlmIChOT1QgTVNWQyBPUiBNU1ZD
X1ZFUlNJT04gR1JFQVRFUiAxMzEwKQorICAgIGN4eF9leGVjdXRhYmxlKGd0ZXN0X3Rocm93X29u
X2ZhaWx1cmVfdGVzdF8gdGVzdCBndGVzdF9ub19leGNlcHRpb24pCisgICAgc2V0X3RhcmdldF9w
cm9wZXJ0aWVzKGd0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdF8KKyAgICAgIFBST1BFUlRJRVMK
KyAgICAgIENPTVBJTEVfRkxBR1MgIiR7Y3h4X25vX2V4Y2VwdGlvbn0iKQorICAgIHB5X3Rlc3Qo
Z3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90ZXN0KQorICBlbmRpZigpCisKKyAgY3h4X2V4ZWN1dGFi
bGUoZ3Rlc3RfdW5pbml0aWFsaXplZF90ZXN0XyB0ZXN0IGd0ZXN0KQorICBweV90ZXN0KGd0ZXN0
X3VuaW5pdGlhbGl6ZWRfdGVzdCkKKworICBjeHhfZXhlY3V0YWJsZShndGVzdF94bWxfb3V0Zmls
ZTFfdGVzdF8gdGVzdCBndGVzdF9tYWluKQorICBjeHhfZXhlY3V0YWJsZShndGVzdF94bWxfb3V0
ZmlsZTJfdGVzdF8gdGVzdCBndGVzdF9tYWluKQorICBweV90ZXN0KGd0ZXN0X3htbF9vdXRmaWxl
c190ZXN0KQorCisgIGN4eF9leGVjdXRhYmxlKGd0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfIHRl
c3QgZ3Rlc3QpCisgIHB5X3Rlc3QoZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdCkKK2VuZGlmKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L0NPTlRSSUJVVE9SUyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L0NPTlRS
SUJVVE9SUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mZWFlMmZjMDQ0MTBkYzMwOGU0NjRhYTI1NmZlMWYyZDMxZWRj
OTg4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvQ09OVFJJQlVUT1JTCkBAIC0wLDAg
KzEsMzcgQEAKKyMgVGhpcyBmaWxlIGNvbnRhaW5zIGEgbGlzdCBvZiBwZW9wbGUgd2hvJ3ZlIG1h
ZGUgbm9uLXRyaXZpYWwKKyMgY29udHJpYnV0aW9uIHRvIHRoZSBHb29nbGUgQysrIFRlc3Rpbmcg
RnJhbWV3b3JrIHByb2plY3QuICBQZW9wbGUKKyMgd2hvIGNvbW1pdCBjb2RlIHRvIHRoZSBwcm9q
ZWN0IGFyZSBlbmNvdXJhZ2VkIHRvIGFkZCB0aGVpciBuYW1lcworIyBoZXJlLiAgUGxlYXNlIGtl
ZXAgdGhlIGxpc3Qgc29ydGVkIGJ5IGZpcnN0IG5hbWVzLgorCitBamF5IEpvc2hpIDxqYWpAZ29v
Z2xlLmNvbT4KK0JhbMOhenMgRMOhbiA8YmFsYXpzLmRhbkBnbWFpbC5jb20+CitCaGFyYXQgTWVk
aXJhdHRhIDxiaGFyYXRAbWVuYWx0by5jb20+CitDaGFuZGxlciBDYXJydXRoIDxjaGFuZGxlcmNA
Z29vZ2xlLmNvbT4KK0NocmlzIFByaW5jZSA8Y3ByaW5jZUBnb29nbGUuY29tPgorQ2hyaXMgVGF5
bG9yIDx0YXlsb3JjQGdvb2dsZS5jb20+CitEYW4gRWdub3IgPGVnbm9yQGdvb2dsZS5jb20+CitF
cmljIFJvbWFuIDxlcm9tYW5AY2hyb21pdW0ub3JnPgorSGFkeSBaYWxlayA8aGFkeS56YWxla0Bn
bWFpbC5jb20+CitKZWZmcmV5IFlhc3NraW4gPGp5YXNza2luQGdvb2dsZS5jb20+CitKw7NpIFNp
Z3Vyw7Bzc29uIDxqb2lAZ29vZ2xlLmNvbT4KK0tlaXIgTWllcmxlIDxtaWVybGVAZ21haWwuY29t
PgorS2VpdGggUmF5IDxrZWl0aC5yYXlAZ21haWwuY29tPgorS2VudG9uIFZhcmRhIDxrZW50b25A
Z29vZ2xlLmNvbT4KK01hbnVlbCBLbGltZWsgPGtsaW1la0Bnb29nbGUuY29tPgorTWFya3VzIEhl
dWxlIDxtYXJrdXMuaGV1bGVAZ21haWwuY29tPgorTWlrYSBSYWVudG8gPG1pa2llQGlraS5maT4K
K01pa2zDs3MgRmF6ZWthcyA8bWZhemVrYXNAc3plbWFmb3IuY29tPgorUGFzaSBWYWxtaW5lbiA8
cGFzaS52YWxtaW5lbkBnbWFpbC5jb20+CitQYXRyaWNrIEhhbm5hIDxwaGFubmFAZ29vZ2xlLmNv
bT4KK1BhdHJpY2sgUmlsZXkgPHBmckBnb29nbGUuY29tPgorUGV0ZXIgS2FtaW5za2kgPHBpb3Ry
a0Bnb29nbGUuY29tPgorUHJlc3RvbiBKYWNrc29uIDxwcmVzdG9uLmEuamFja3NvbkBnbWFpbC5j
b20+CitSYWluZXIgS2xhZmZlbmJvZWNrIDxyYWluZXIua2xhZmZlbmJvZWNrQGR5bmF0cmFjZS5j
b20+CitSdXNzIENveCA8cnNjQGdvb2dsZS5jb20+CitSdXNzIFJ1ZmVyIDxydXNzQHBlbnRhZC5j
b20+CitTZWFuIE1jYWZlZSA8ZWVmYWNtQGdtYWlsLmNvbT4KK1NpZ3Vyw7B1ciDDgXNnZWlyc3Nv
biA8c2lnZ2lAZ29vZ2xlLmNvbT4KK1RyYWN5IEJpYWxpayA8dHJhY3lAcGVudGFkLmNvbT4KK1Zh
ZGltIEJlcm1hbiA8dmFkaW1iQGdvb2dsZS5jb20+CitWbGFkIExvc2V2IDx2bGFkbEBnb29nbGUu
Y29tPgorWmhhbnlvbmcgV2FuIDx3YW5AZ29vZ2xlLmNvbT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0
ZXN0L0xJQ0VOU0UgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9MSUNFTlNFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5NDFhMTFmOGNl
OTQzODkxNjBiNDU4OTI3YTI5YmEyMTc1NDI4MTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC9MSUNFTlNFCkBAIC0wLDAgKzEsMjggQEAKK0NvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5j
LgorQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cittb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCittZXQ6
CisKKyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Citub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCitjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCitpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCitkaXN0cmli
dXRpb24uCisgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCitjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQordGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKworVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKK0xJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKK09XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCitE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKK1RIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyhJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGV0ZXN0L01ha2VmaWxlLmFtIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvTWFrZWZpbGUuYW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjk3OTdlNGU5ZGU0ZTFkNWU1ZjkzYmJhMTQyODhkZTg3ZjYyMzk0NgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L01ha2VmaWxlLmFtCkBAIC0wLDAgKzEsMzEwIEBA
CisjIEF1dG9tYWtlIGZpbGUKKworQUNMT0NBTF9BTUZMQUdTID0gLUkgbTQKKworIyBOb25zdGFu
ZGFyZCBwYWNrYWdlIGZpbGVzIGZvciBkaXN0cmlidXRpb24KK0VYVFJBX0RJU1QgPSBcCisgIENI
QU5HRVMgXAorICBDT05UUklCVVRPUlMgXAorICBMSUNFTlNFIFwKKyAgaW5jbHVkZS9ndGVzdC9n
dGVzdC1wYXJhbS10ZXN0LmgucHVtcCBcCisgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qt
cGFyYW0tdXRpbC1nZW5lcmF0ZWQuaC5wdW1wIFwKKyAgaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9n
dGVzdC10dXBsZS5oLnB1bXAgXAorICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR5cGUt
dXRpbC5oLnB1bXAgXAorICBtYWtlL01ha2VmaWxlIFwKKyAgc2NyaXB0cy9mdXNlX2d0ZXN0X2Zp
bGVzLnB5IFwKKyAgc2NyaXB0cy9nZW5fZ3Rlc3RfcHJlZF9pbXBsLnB5IFwKKyAgc2NyaXB0cy9w
dW1wLnB5IFwKKyAgc2NyaXB0cy90ZXN0L01ha2VmaWxlCisKKyMgZ3Rlc3Qgc291cmNlIGZpbGVz
IHRoYXQgd2UgZG9uJ3QgY29tcGlsZSBkaXJlY3RseS4gIFRoZXkgYXJlCisjICNpbmNsdWRlZCBi
eSBndGVzdC1hbGwuY2MuCitHVEVTVF9TUkMgPSBcCisgIHNyYy9ndGVzdC1kZWF0aC10ZXN0LmNj
IFwKKyAgc3JjL2d0ZXN0LWZpbGVwYXRoLmNjIFwKKyAgc3JjL2d0ZXN0LWludGVybmFsLWlubC5o
IFwKKyAgc3JjL2d0ZXN0LXBvcnQuY2MgXAorICBzcmMvZ3Rlc3QtcHJpbnRlcnMuY2MgXAorICBz
cmMvZ3Rlc3QtdGVzdC1wYXJ0LmNjIFwKKyAgc3JjL2d0ZXN0LXR5cGVkLXRlc3QuY2MgXAorICBz
cmMvZ3Rlc3QuY2MKKworRVhUUkFfRElTVCArPSAkKEdURVNUX1NSQykKKworIyBTYW1wbGUgZmls
ZXMgdGhhdCB3ZSBkb24ndCBjb21waWxlLgorRVhUUkFfRElTVCArPSBcCisgIHNhbXBsZXMvcHJp
bWVfdGFibGVzLmggXAorICBzYW1wbGVzL3NhbXBsZTJfdW5pdHRlc3QuY2MgXAorICBzYW1wbGVz
L3NhbXBsZTNfdW5pdHRlc3QuY2MgXAorICBzYW1wbGVzL3NhbXBsZTRfdW5pdHRlc3QuY2MgXAor
ICBzYW1wbGVzL3NhbXBsZTVfdW5pdHRlc3QuY2MgXAorICBzYW1wbGVzL3NhbXBsZTZfdW5pdHRl
c3QuY2MgXAorICBzYW1wbGVzL3NhbXBsZTdfdW5pdHRlc3QuY2MgXAorICBzYW1wbGVzL3NhbXBs
ZThfdW5pdHRlc3QuY2MgXAorICBzYW1wbGVzL3NhbXBsZTlfdW5pdHRlc3QuY2MKKworIyBDKysg
dGVzdCBmaWxlcyB0aGF0IHdlIGRvbid0IGNvbXBpbGUgZGlyZWN0bHkuCitFWFRSQV9ESVNUICs9
IFwKKyAgdGVzdC9ndGVzdC1kZWF0aC10ZXN0X2V4X3Rlc3QuY2MgXAorICB0ZXN0L2d0ZXN0LWRl
YXRoLXRlc3RfdGVzdC5jYyBcCisgIHRlc3QvZ3Rlc3QtZmlsZXBhdGhfdGVzdC5jYyBcCisgIHRl
c3QvZ3Rlc3QtbGlua2VkX3B0cl90ZXN0LmNjIFwKKyAgdGVzdC9ndGVzdC1saXN0ZW5lcl90ZXN0
LmNjIFwKKyAgdGVzdC9ndGVzdC1tZXNzYWdlX3Rlc3QuY2MgXAorICB0ZXN0L2d0ZXN0LW9wdGlv
bnNfdGVzdC5jYyBcCisgIHRlc3QvZ3Rlc3QtcGFyYW0tdGVzdDJfdGVzdC5jYyBcCisgIHRlc3Qv
Z3Rlc3QtcGFyYW0tdGVzdDJfdGVzdC5jYyBcCisgIHRlc3QvZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0
LmNjIFwKKyAgdGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rlc3QuY2MgXAorICB0ZXN0L2d0ZXN0LXBh
cmFtLXRlc3RfdGVzdC5oIFwKKyAgdGVzdC9ndGVzdC1wb3J0X3Rlc3QuY2MgXAorICB0ZXN0L2d0
ZXN0X3ByZW1hdHVyZV9leGl0X3Rlc3QuY2MgXAorICB0ZXN0L2d0ZXN0LXByaW50ZXJzX3Rlc3Qu
Y2MgXAorICB0ZXN0L2d0ZXN0LXRlc3QtcGFydF90ZXN0LmNjIFwKKyAgdGVzdC9ndGVzdC10dXBs
ZV90ZXN0LmNjIFwKKyAgdGVzdC9ndGVzdC10eXBlZC10ZXN0Ml90ZXN0LmNjIFwKKyAgdGVzdC9n
dGVzdC10eXBlZC10ZXN0X3Rlc3QuY2MgXAorICB0ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5o
IFwKKyAgdGVzdC9ndGVzdC11bml0dGVzdC1hcGlfdGVzdC5jYyBcCisgIHRlc3QvZ3Rlc3RfYnJl
YWtfb25fZmFpbHVyZV91bml0dGVzdF8uY2MgXAorICB0ZXN0L2d0ZXN0X2NhdGNoX2V4Y2VwdGlv
bnNfdGVzdF8uY2MgXAorICB0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3RfLmNjIFwKKyAgdGVzdC9ndGVz
dF9lbnZfdmFyX3Rlc3RfLmNjIFwKKyAgdGVzdC9ndGVzdF9lbnZpcm9ubWVudF90ZXN0LmNjIFwK
KyAgdGVzdC9ndGVzdF9maWx0ZXJfdW5pdHRlc3RfLmNjIFwKKyAgdGVzdC9ndGVzdF9oZWxwX3Rl
c3RfLmNjIFwKKyAgdGVzdC9ndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0Xy5jYyBcCisgIHRlc3Qv
Z3Rlc3RfbWFpbl91bml0dGVzdC5jYyBcCisgIHRlc3QvZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdC5j
YyBcCisgIHRlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjIFwKKyAgdGVzdC9ndGVzdF9wcmVkX2lt
cGxfdW5pdHRlc3QuY2MgXAorICB0ZXN0L2d0ZXN0X3Byb2RfdGVzdC5jYyBcCisgIHRlc3QvZ3Rl
c3RfcmVwZWF0X3Rlc3QuY2MgXAorICB0ZXN0L2d0ZXN0X3NodWZmbGVfdGVzdF8uY2MgXAorICB0
ZXN0L2d0ZXN0X3NvbGVfaGVhZGVyX3Rlc3QuY2MgXAorICB0ZXN0L2d0ZXN0X3N0cmVzc190ZXN0
LmNjIFwKKyAgdGVzdC9ndGVzdF90aHJvd19vbl9mYWlsdXJlX2V4X3Rlc3QuY2MgXAorICB0ZXN0
L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdF8uY2MgXAorICB0ZXN0L2d0ZXN0X3VuaW5pdGlh
bGl6ZWRfdGVzdF8uY2MgXAorICB0ZXN0L2d0ZXN0X3VuaXR0ZXN0LmNjIFwKKyAgdGVzdC9ndGVz
dF91bml0dGVzdC5jYyBcCisgIHRlc3QvZ3Rlc3RfeG1sX291dGZpbGUxX3Rlc3RfLmNjIFwKKyAg
dGVzdC9ndGVzdF94bWxfb3V0ZmlsZTJfdGVzdF8uY2MgXAorICB0ZXN0L2d0ZXN0X3htbF9vdXRw
dXRfdW5pdHRlc3RfLmNjIFwKKyAgdGVzdC9wcm9kdWN0aW9uLmNjIFwKKyAgdGVzdC9wcm9kdWN0
aW9uLmgKKworIyBQeXRob24gdGVzdHMgdGhhdCB3ZSBkb24ndCBydW4uCitFWFRSQV9ESVNUICs9
IFwKKyAgdGVzdC9ndGVzdF9icmVha19vbl9mYWlsdXJlX3VuaXR0ZXN0LnB5IFwKKyAgdGVzdC9n
dGVzdF9jYXRjaF9leGNlcHRpb25zX3Rlc3QucHkgXAorICB0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3Qu
cHkgXAorICB0ZXN0L2d0ZXN0X2Vudl92YXJfdGVzdC5weSBcCisgIHRlc3QvZ3Rlc3RfZmlsdGVy
X3VuaXR0ZXN0LnB5IFwKKyAgdGVzdC9ndGVzdF9oZWxwX3Rlc3QucHkgXAorICB0ZXN0L2d0ZXN0
X2xpc3RfdGVzdHNfdW5pdHRlc3QucHkgXAorICB0ZXN0L2d0ZXN0X291dHB1dF90ZXN0LnB5IFwK
KyAgdGVzdC9ndGVzdF9vdXRwdXRfdGVzdF9nb2xkZW5fbGluLnR4dCBcCisgIHRlc3QvZ3Rlc3Rf
c2h1ZmZsZV90ZXN0LnB5IFwKKyAgdGVzdC9ndGVzdF90ZXN0X3V0aWxzLnB5IFwKKyAgdGVzdC9n
dGVzdF90aHJvd19vbl9mYWlsdXJlX3Rlc3QucHkgXAorICB0ZXN0L2d0ZXN0X3VuaW5pdGlhbGl6
ZWRfdGVzdC5weSBcCisgIHRlc3QvZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3QucHkgXAorICB0ZXN0
L2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3QucHkgXAorICB0ZXN0L2d0ZXN0X3htbF90ZXN0X3V0
aWxzLnB5CisKKyMgQ01ha2Ugc2NyaXB0CitFWFRSQV9ESVNUICs9IFwKKyAgQ01ha2VMaXN0cy50
eHQgXAorICBjbWFrZS9pbnRlcm5hbF91dGlscy5jbWFrZQorCisjIE1TVkMgcHJvamVjdCBmaWxl
cworRVhUUkFfRElTVCArPSBcCisgIG1zdmMvZ3Rlc3QtbWQuc2xuIFwKKyAgbXN2Yy9ndGVzdC1t
ZC52Y3Byb2ogXAorICBtc3ZjL2d0ZXN0LnNsbiBcCisgIG1zdmMvZ3Rlc3QudmNwcm9qIFwKKyAg
bXN2Yy9ndGVzdF9tYWluLW1kLnZjcHJvaiBcCisgIG1zdmMvZ3Rlc3RfbWFpbi52Y3Byb2ogXAor
ICBtc3ZjL2d0ZXN0X3Byb2RfdGVzdC1tZC52Y3Byb2ogXAorICBtc3ZjL2d0ZXN0X3Byb2RfdGVz
dC52Y3Byb2ogXAorICBtc3ZjL2d0ZXN0X3VuaXR0ZXN0LW1kLnZjcHJvaiBcCisgIG1zdmMvZ3Rl
c3RfdW5pdHRlc3QudmNwcm9qCisKKyMgeGNvZGUgcHJvamVjdCBmaWxlcworRVhUUkFfRElTVCAr
PSBcCisgIHhjb2RlL0NvbmZpZy9EZWJ1Z1Byb2plY3QueGNjb25maWcgXAorICB4Y29kZS9Db25m
aWcvRnJhbWV3b3JrVGFyZ2V0LnhjY29uZmlnIFwKKyAgeGNvZGUvQ29uZmlnL0dlbmVyYWwueGNj
b25maWcgXAorICB4Y29kZS9Db25maWcvUmVsZWFzZVByb2plY3QueGNjb25maWcgXAorICB4Y29k
ZS9Db25maWcvU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZpZyBcCisgIHhjb2RlL0NvbmZpZy9U
ZXN0VGFyZ2V0LnhjY29uZmlnIFwKKyAgeGNvZGUvUmVzb3VyY2VzL0luZm8ucGxpc3QgXAorICB4
Y29kZS9TY3JpcHRzL3J1bnRlc3RzLnNoIFwKKyAgeGNvZGUvU2NyaXB0cy92ZXJzaW9uZ2VuZXJh
dGUucHkgXAorICB4Y29kZS9ndGVzdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisKKyMgeGNv
ZGUgc2FtcGxlIGZpbGVzCitFWFRSQV9ESVNUICs9IFwKKyAgeGNvZGUvU2FtcGxlcy9GcmFtZXdv
cmtTYW1wbGUvSW5mby5wbGlzdCBcCisgIHhjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL1dp
ZGdldEZyYW1ld29yay54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIFwKKyAgeGNvZGUvU2FtcGxl
cy9GcmFtZXdvcmtTYW1wbGUvcnVudGVzdHMuc2ggXAorICB4Y29kZS9TYW1wbGVzL0ZyYW1ld29y
a1NhbXBsZS93aWRnZXQuY2MgXAorICB4Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS93aWRn
ZXQuaCBcCisgIHhjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL3dpZGdldF90ZXN0LmNjCisK
KyMgQysrQnVpbGRlciBwcm9qZWN0IGZpbGVzCitFWFRSQV9ESVNUICs9IFwKKyAgY29kZWdlYXIv
Z3Rlc3QuY2Jwcm9qIFwKKyAgY29kZWdlYXIvZ3Rlc3QuZ3JvdXBwcm9qIFwKKyAgY29kZWdlYXIv
Z3Rlc3RfYWxsLmNjIFwKKyAgY29kZWdlYXIvZ3Rlc3RfbGluay5jYyBcCisgIGNvZGVnZWFyL2d0
ZXN0X21haW4uY2Jwcm9qIFwKKyAgY29kZWdlYXIvZ3Rlc3RfdW5pdHRlc3QuY2Jwcm9qCisKKyMg
RGlzdHJpYnV0ZSBhbmQgaW5zdGFsbCBNNCBtYWNybworbTRkYXRhZGlyID0gJChkYXRhZGlyKS9h
Y2xvY2FsCittNGRhdGFfREFUQSA9IG00L2d0ZXN0Lm00CitFWFRSQV9ESVNUICs9ICQobTRkYXRh
X0RBVEEpCisKKyMgV2UgZGVmaW5lIHRoZSBnbG9iYWwgQU1fQ1BQRkxBR1MgYXMgZXZlcnl0aGlu
ZyB3ZSBjb21waWxlIGluY2x1ZGVzIGZyb20gdGhlc2UKKyMgZGlyZWN0b3JpZXMuCitBTV9DUFBG
TEFHUyA9IC1JJChzcmNkaXIpIC1JJChzcmNkaXIpL2luY2x1ZGUKKworIyBNb2RpZmllcyBjb21w
aWxlciBhbmQgbGlua2VyIGZsYWdzIGZvciBwdGhyZWFkcyBjb21wYXRpYmlsaXR5LgoraWYgSEFW
RV9QVEhSRUFEUworICBBTV9DWFhGTEFHUyA9IEBQVEhSRUFEX0NGTEFHU0AgLURHVEVTVF9IQVNf
UFRIUkVBRD0xCisgIEFNX0xJQlMgPSBAUFRIUkVBRF9MSUJTQAorZWxzZQorICBBTV9DWFhGTEFH
UyA9IC1ER1RFU1RfSEFTX1BUSFJFQUQ9MAorZW5kaWYKKworIyBCdWlsZCBydWxlcyBmb3IgbGli
cmFyaWVzLgorbGliX0xUTElCUkFSSUVTID0gbGliL2xpYmd0ZXN0LmxhIGxpYi9saWJndGVzdF9t
YWluLmxhCisKK2xpYl9saWJndGVzdF9sYV9TT1VSQ0VTID0gc3JjL2d0ZXN0LWFsbC5jYworCitw
a2dpbmNsdWRlX0hFQURFUlMgPSBcCisgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5o
IFwKKyAgaW5jbHVkZS9ndGVzdC9ndGVzdC1tZXNzYWdlLmggXAorICBpbmNsdWRlL2d0ZXN0L2d0
ZXN0LXBhcmFtLXRlc3QuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcHJpbnRlcnMuaCBcCisg
IGluY2x1ZGUvZ3Rlc3QvZ3Rlc3Qtc3BpLmggXAorICBpbmNsdWRlL2d0ZXN0L2d0ZXN0LXRlc3Qt
cGFydC5oIFwKKyAgaW5jbHVkZS9ndGVzdC9ndGVzdC10eXBlZC10ZXN0LmggXAorICBpbmNsdWRl
L2d0ZXN0L2d0ZXN0LmggXAorICBpbmNsdWRlL2d0ZXN0L2d0ZXN0X3ByZWRfaW1wbC5oIFwKKyAg
aW5jbHVkZS9ndGVzdC9ndGVzdF9wcm9kLmgKKworcGtnaW5jbHVkZV9pbnRlcm5hbGRpciA9ICQo
cGtnaW5jbHVkZWRpcikvaW50ZXJuYWwKK3BrZ2luY2x1ZGVfaW50ZXJuYWxfSEVBREVSUyA9IFwK
KyAgaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1kZWF0aC10ZXN0LWludGVybmFsLmggXAor
ICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmggXAorICBpbmNsdWRlL2d0
ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmggXAorICBpbmNsdWRlL2d0ZXN0L2ludGVybmFs
L2d0ZXN0LWxpbmtlZF9wdHIuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFy
YW0tdXRpbC1nZW5lcmF0ZWQuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFy
YW0tdXRpbC5oIFwKKyAgaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmggXAorICBp
bmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQtYXJjaC5oIFwKKyAgaW5jbHVkZS9ndGVz
dC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtdHVwbGUuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgg
XAorICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC5oIFwKKyAgaW5jbHVkZS9n
dGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QtcG9ydC5oIFwKKyAgaW5jbHVkZS9ndGVzdC9pbnRl
cm5hbC9jdXN0b20vZ3Rlc3QtcHJpbnRlcnMuaAorCitsaWJfbGliZ3Rlc3RfbWFpbl9sYV9TT1VS
Q0VTID0gc3JjL2d0ZXN0X21haW4uY2MKK2xpYl9saWJndGVzdF9tYWluX2xhX0xJQkFERCA9IGxp
Yi9saWJndGVzdC5sYQorCisjIEJ1bGlkIHJ1bGVzIGZvciBzYW1wbGVzIGFuZCB0ZXN0cy4gQXV0
b21ha2UncyBuYW1pbmcgZm9yIHNvbWUgb2YKKyMgdGhlc2UgdmFyaWFibGVzIGlzbid0IHRlcnJp
Ymx5IG9idmlvdXMsIHNvIHRoaXMgaXMgYSBicmllZgorIyByZWZlcmVuY2U6CisjCisjIFRFU1RT
IC0tIFByb2dyYW1zIHJ1biBhdXRvbWF0aWNhbGx5IGJ5ICJtYWtlIGNoZWNrIgorIyBjaGVja19Q
Uk9HUkFNUyAtLSBQcm9ncmFtcyBidWlsdCBieSAibWFrZSBjaGVjayIgYnV0IG5vdCBuZWNlc3Nh
cmlseSBydW4KKworbm9pbnN0X0xUTElCUkFSSUVTID0gc2FtcGxlcy9saWJzYW1wbGVzLmxhCisK
K3NhbXBsZXNfbGlic2FtcGxlc19sYV9TT1VSQ0VTID0gXAorICBzYW1wbGVzL3NhbXBsZTEuY2Mg
XAorICBzYW1wbGVzL3NhbXBsZTEuaCBcCisgIHNhbXBsZXMvc2FtcGxlMi5jYyBcCisgIHNhbXBs
ZXMvc2FtcGxlMi5oIFwKKyAgc2FtcGxlcy9zYW1wbGUzLWlubC5oIFwKKyAgc2FtcGxlcy9zYW1w
bGU0LmNjIFwKKyAgc2FtcGxlcy9zYW1wbGU0LmgKKworVEVTVFM9CitURVNUU19FTlZJUk9OTUVO
VCA9IEdURVNUX1NPVVJDRV9ESVI9IiQoc3JjZGlyKS90ZXN0IiBcCisgICAgICAgICAgICAgICAg
ICAgIEdURVNUX0JVSUxEX0RJUj0iJCh0b3BfYnVpbGRkaXIpL3Rlc3QiCitjaGVja19QUk9HUkFN
Uz0KKworIyBBIHNpbXBsZSBzYW1wbGUgb24gdXNpbmcgZ3Rlc3QuCitURVNUUyArPSBzYW1wbGVz
L3NhbXBsZTFfdW5pdHRlc3QKK2NoZWNrX1BST0dSQU1TICs9IHNhbXBsZXMvc2FtcGxlMV91bml0
dGVzdAorc2FtcGxlc19zYW1wbGUxX3VuaXR0ZXN0X1NPVVJDRVMgPSBzYW1wbGVzL3NhbXBsZTFf
dW5pdHRlc3QuY2MKK3NhbXBsZXNfc2FtcGxlMV91bml0dGVzdF9MREFERCA9IGxpYi9saWJndGVz
dF9tYWluLmxhIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYi9saWJndGVz
dC5sYSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVzL2xpYnNhbXBs
ZXMubGEKKworIyBBbm90aGVyIHNhbXBsZS4gIEl0IGFsc28gdmVyaWZpZXMgdGhhdCBsaWJndGVz
dCB3b3Jrcy4KK1RFU1RTICs9IHNhbXBsZXMvc2FtcGxlMTBfdW5pdHRlc3QKK2NoZWNrX1BST0dS
QU1TICs9IHNhbXBsZXMvc2FtcGxlMTBfdW5pdHRlc3QKK3NhbXBsZXNfc2FtcGxlMTBfdW5pdHRl
c3RfU09VUkNFUyA9IHNhbXBsZXMvc2FtcGxlMTBfdW5pdHRlc3QuY2MKK3NhbXBsZXNfc2FtcGxl
MTBfdW5pdHRlc3RfTERBREQgPSBsaWIvbGliZ3Rlc3QubGEKKworIyBUaGlzIHRlc3RzIG1vc3Qg
Y29uc3RydWN0cyBvZiBndGVzdCBhbmQgdmVyaWZpZXMgdGhhdCBsaWJndGVzdF9tYWluCisjIGFu
ZCBsaWJndGVzdCB3b3JrLgorVEVTVFMgKz0gdGVzdC9ndGVzdF9hbGxfdGVzdAorY2hlY2tfUFJP
R1JBTVMgKz0gdGVzdC9ndGVzdF9hbGxfdGVzdAordGVzdF9ndGVzdF9hbGxfdGVzdF9TT1VSQ0VT
ID0gdGVzdC9ndGVzdF9hbGxfdGVzdC5jYwordGVzdF9ndGVzdF9hbGxfdGVzdF9MREFERCA9IGxp
Yi9saWJndGVzdF9tYWluLmxhIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWIvbGli
Z3Rlc3QubGEKKworIyBUZXN0cyB0aGF0IGZ1c2VkIGd0ZXN0IGZpbGVzIGNvbXBpbGUgYW5kIHdv
cmsuCitGVVNFRF9HVEVTVF9TUkMgPSBcCisgIGZ1c2VkLXNyYy9ndGVzdC9ndGVzdC1hbGwuY2Mg
XAorICBmdXNlZC1zcmMvZ3Rlc3QvZ3Rlc3QuaCBcCisgIGZ1c2VkLXNyYy9ndGVzdC9ndGVzdF9t
YWluLmNjCisKK2lmIEhBVkVfUFlUSE9OCitURVNUUyArPSB0ZXN0L2Z1c2VkX2d0ZXN0X3Rlc3QK
K2NoZWNrX1BST0dSQU1TICs9IHRlc3QvZnVzZWRfZ3Rlc3RfdGVzdAordGVzdF9mdXNlZF9ndGVz
dF90ZXN0X1NPVVJDRVMgPSAkKEZVU0VEX0dURVNUX1NSQykgXAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzYW1wbGVzL3NhbXBsZTEuY2Mgc2FtcGxlcy9zYW1wbGUxX3VuaXR0ZXN0
LmNjCit0ZXN0X2Z1c2VkX2d0ZXN0X3Rlc3RfQ1BQRkxBR1MgPSAtSSIkKHNyY2RpcikvZnVzZWQt
c3JjIgorCisjIEJ1aWxkIHJ1bGVzIGZvciBwdXR0aW5nIGZ1c2VkIEdvb2dsZSBUZXN0IGZpbGVz
IGludG8gdGhlIGRpc3RyaWJ1dGlvbgorIyBwYWNrYWdlLiBUaGUgdXNlciBjYW4gYWxzbyBjcmVh
dGUgdGhvc2UgZmlsZXMgYnkgbWFudWFsbHkgcnVubmluZworIyBzY3JpcHRzL2Z1c2VfZ3Rlc3Rf
ZmlsZXMucHkuCiskKHRlc3RfZnVzZWRfZ3Rlc3RfdGVzdF9TT1VSQ0VTKTogZnVzZWQtZ3Rlc3QK
KworZnVzZWQtZ3Rlc3Q6ICQocGtnaW5jbHVkZV9IRUFERVJTKSAkKHBrZ2luY2x1ZGVfaW50ZXJu
YWxfSEVBREVSUykgXAorICAgICAgICAgICAgICQoR1RFU1RfU1JDKSBzcmMvZ3Rlc3QtYWxsLmNj
IHNyYy9ndGVzdF9tYWluLmNjIFwKKyAgICAgICAgICAgICBzY3JpcHRzL2Z1c2VfZ3Rlc3RfZmls
ZXMucHkKKwlta2RpciAtcCAiJChzcmNkaXIpL2Z1c2VkLXNyYyIKKwljaG1vZCAtUiB1K3cgIiQo
c3JjZGlyKS9mdXNlZC1zcmMiCisJcm0gLWYgIiQoc3JjZGlyKS9mdXNlZC1zcmMvZ3Rlc3QvZ3Rl
c3QtYWxsLmNjIgorCXJtIC1mICIkKHNyY2RpcikvZnVzZWQtc3JjL2d0ZXN0L2d0ZXN0LmgiCisJ
IiQoc3JjZGlyKS9zY3JpcHRzL2Z1c2VfZ3Rlc3RfZmlsZXMucHkiICIkKHNyY2RpcikvZnVzZWQt
c3JjIgorCWNwIC1mICIkKHNyY2Rpcikvc3JjL2d0ZXN0X21haW4uY2MiICIkKHNyY2RpcikvZnVz
ZWQtc3JjL2d0ZXN0LyIKKworbWFpbnRhaW5lci1jbGVhbi1sb2NhbDoKKwlybSAtcmYgIiQoc3Jj
ZGlyKS9mdXNlZC1zcmMiCitlbmRpZgorCisjIERlYXRoIHRlc3RzIG1heSBwcm9kdWNlIGNvcmUg
ZHVtcHMgaW4gdGhlIGJ1aWxkIGRpcmVjdG9yeS4gSW4gY2FzZQorIyB0aGlzIGhhcHBlbnMsIGNs
ZWFuIHRoZW0gdG8ga2VlcCBkaXN0Y2xlYW5jaGVjayBoYXBweS4KK0NMRUFORklMRVMgPSBjb3Jl
CisKKyMgRGlzYWJsZXMgJ21ha2UgaW5zdGFsbCcgYXMgaW5zdGFsbGluZyBhIGNvbXBpbGVkIHZl
cnNpb24gb2YgR29vZ2xlCisjIFRlc3QgY2FuIGxlYWQgdG8gdW5kZWZpbmVkIGJlaGF2aW9yIGR1
ZSB0byB2aW9sYXRpb24gb2YgdGhlCisjIE9uZS1EZWZpbml0aW9uIFJ1bGUuCisKK2luc3RhbGwt
ZXhlYy1sb2NhbDoKKwllY2hvICInbWFrZSBpbnN0YWxsJyBpcyBkYW5nZXJvdXMgYW5kIG5vdCBz
dXBwb3J0ZWQuIEluc3RlYWQsIHNlZSBSRUFETUUgZm9yIGhvdyB0byBpbnRlZ3JhdGUgR29vZ2xl
IFRlc3QgaW50byB5b3VyIGJ1aWxkIHN5c3RlbS4iCisJZmFsc2UKKworaW5zdGFsbC1kYXRhLWxv
Y2FsOgorCWVjaG8gIidtYWtlIGluc3RhbGwnIGlzIGRhbmdlcm91cyBhbmQgbm90IHN1cHBvcnRl
ZC4gSW5zdGVhZCwgc2VlIFJFQURNRSBmb3IgaG93IHRvIGludGVncmF0ZSBHb29nbGUgVGVzdCBp
bnRvIHlvdXIgYnVpbGQgc3lzdGVtLiIKKwlmYWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
UkVBRE1FLm1kIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvUkVBRE1FLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhMzQ3NGMwMmI0
NmFjZGVhMDRhYTVmOWM0NGQ3ODc5N2E2ODU5MmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC9SRUFETUUubWQKQEAgLTAsMCArMSwzODMgQEAKKworIyMjIEdlbmVyaWMgQnVpbGQgSW5z
dHJ1Y3Rpb25zICMjIworCisjIyMjIFNldHVwICMjIyMKKworVG8gYnVpbGQgR29vZ2xlIFRlc3Qg
YW5kIHlvdXIgdGVzdHMgdGhhdCB1c2UgaXQsIHlvdSBuZWVkIHRvIHRlbGwgeW91cgorYnVpbGQg
c3lzdGVtIHdoZXJlIHRvIGZpbmQgaXRzIGhlYWRlcnMgYW5kIHNvdXJjZSBmaWxlcy4gIFRoZSBl
eGFjdAord2F5IHRvIGRvIGl0IGRlcGVuZHMgb24gd2hpY2ggYnVpbGQgc3lzdGVtIHlvdSB1c2Us
IGFuZCBpcyB1c3VhbGx5CitzdHJhaWdodGZvcndhcmQuCisKKyMjIyMgQnVpbGQgIyMjIworCitT
dXBwb3NlIHlvdSBwdXQgR29vZ2xlIFRlc3QgaW4gZGlyZWN0b3J5IGAke0dURVNUX0RJUn1gLiAg
VG8gYnVpbGQgaXQsCitjcmVhdGUgYSBsaWJyYXJ5IGJ1aWxkIHRhcmdldCAob3IgYSBwcm9qZWN0
IGFzIGNhbGxlZCBieSBWaXN1YWwgU3R1ZGlvCithbmQgWGNvZGUpIHRvIGNvbXBpbGUKKworICAg
ICR7R1RFU1RfRElSfS9zcmMvZ3Rlc3QtYWxsLmNjCisKK3dpdGggYCR7R1RFU1RfRElSfS9pbmNs
dWRlYCBpbiB0aGUgc3lzdGVtIGhlYWRlciBzZWFyY2ggcGF0aCBhbmQgYCR7R1RFU1RfRElSfWAK
K2luIHRoZSBub3JtYWwgaGVhZGVyIHNlYXJjaCBwYXRoLiAgQXNzdW1pbmcgYSBMaW51eC1saWtl
IHN5c3RlbSBhbmQgZ2NjLAorc29tZXRoaW5nIGxpa2UgdGhlIGZvbGxvd2luZyB3aWxsIGRvOgor
CisgICAgZysrIC1pc3lzdGVtICR7R1RFU1RfRElSfS9pbmNsdWRlIC1JJHtHVEVTVF9ESVJ9IFwK
KyAgICAgICAgLXB0aHJlYWQgLWMgJHtHVEVTVF9ESVJ9L3NyYy9ndGVzdC1hbGwuY2MKKyAgICBh
ciAtcnYgbGliZ3Rlc3QuYSBndGVzdC1hbGwubworCisoV2UgbmVlZCBgLXB0aHJlYWRgIGFzIEdv
b2dsZSBUZXN0IHVzZXMgdGhyZWFkcy4pCisKK05leHQsIHlvdSBzaG91bGQgY29tcGlsZSB5b3Vy
IHRlc3Qgc291cmNlIGZpbGUgd2l0aAorYCR7R1RFU1RfRElSfS9pbmNsdWRlYCBpbiB0aGUgc3lz
dGVtIGhlYWRlciBzZWFyY2ggcGF0aCwgYW5kIGxpbmsgaXQKK3dpdGggZ3Rlc3QgYW5kIGFueSBv
dGhlciBuZWNlc3NhcnkgbGlicmFyaWVzOgorCisgICAgZysrIC1pc3lzdGVtICR7R1RFU1RfRElS
fS9pbmNsdWRlIC1wdGhyZWFkIHBhdGgvdG8veW91cl90ZXN0LmNjIGxpYmd0ZXN0LmEgXAorICAg
ICAgICAtbyB5b3VyX3Rlc3QKKworQXMgYW4gZXhhbXBsZSwgdGhlIG1ha2UvIGRpcmVjdG9yeSBj
b250YWlucyBhIE1ha2VmaWxlIHRoYXQgeW91IGNhbgordXNlIHRvIGJ1aWxkIEdvb2dsZSBUZXN0
IG9uIHN5c3RlbXMgd2hlcmUgR05VIG1ha2UgaXMgYXZhaWxhYmxlCisoZS5nLiBMaW51eCwgTWFj
IE9TIFgsIGFuZCBDeWd3aW4pLiAgSXQgZG9lc24ndCB0cnkgdG8gYnVpbGQgR29vZ2xlCitUZXN0
J3Mgb3duIHRlc3RzLiAgSW5zdGVhZCwgaXQganVzdCBidWlsZHMgdGhlIEdvb2dsZSBUZXN0IGxp
YnJhcnkgYW5kCithIHNhbXBsZSB0ZXN0LiAgWW91IGNhbiB1c2UgaXQgYXMgYSBzdGFydGluZyBw
b2ludCBmb3IgeW91ciBvd24gYnVpbGQKK3NjcmlwdC4KKworSWYgdGhlIGRlZmF1bHQgc2V0dGlu
Z3MgYXJlIGNvcnJlY3QgZm9yIHlvdXIgZW52aXJvbm1lbnQsIHRoZQorZm9sbG93aW5nIGNvbW1h
bmRzIHNob3VsZCBzdWNjZWVkOgorCisgICAgY2QgJHtHVEVTVF9ESVJ9L21ha2UKKyAgICBtYWtl
CisgICAgLi9zYW1wbGUxX3VuaXR0ZXN0CisKK0lmIHlvdSBzZWUgZXJyb3JzLCB0cnkgdG8gdHdl
YWsgdGhlIGNvbnRlbnRzIG9mIGBtYWtlL01ha2VmaWxlYCB0byBtYWtlCit0aGVtIGdvIGF3YXku
ICBUaGVyZSBhcmUgaW5zdHJ1Y3Rpb25zIGluIGBtYWtlL01ha2VmaWxlYCBvbiBob3cgdG8gZG8K
K2l0LgorCisjIyMgVXNpbmcgQ01ha2UgIyMjCisKK0dvb2dsZSBUZXN0IGNvbWVzIHdpdGggYSBD
TWFrZSBidWlsZCBzY3JpcHQgKAorW0NNYWtlTGlzdHMudHh0XShDTWFrZUxpc3RzLnR4dCkpIHRo
YXQgY2FuIGJlIHVzZWQgb24gYSB3aWRlIHJhbmdlIG9mIHBsYXRmb3JtcyAoIkMiIHN0YW5kcyBm
b3IKK2Nyb3NzLXBsYXRmb3JtLikuIElmIHlvdSBkb24ndCBoYXZlIENNYWtlIGluc3RhbGxlZCBh
bHJlYWR5LCB5b3UgY2FuCitkb3dubG9hZCBpdCBmb3IgZnJlZSBmcm9tIDxodHRwOi8vd3d3LmNt
YWtlLm9yZy8+LgorCitDTWFrZSB3b3JrcyBieSBnZW5lcmF0aW5nIG5hdGl2ZSBtYWtlZmlsZXMg
b3IgYnVpbGQgcHJvamVjdHMgdGhhdCBjYW4KK2JlIHVzZWQgaW4gdGhlIGNvbXBpbGVyIGVudmly
b25tZW50IG9mIHlvdXIgY2hvaWNlLiAgWW91IGNhbiBlaXRoZXIKK2J1aWxkIEdvb2dsZSBUZXN0
IGFzIGEgc3RhbmRhbG9uZSBwcm9qZWN0IG9yIGl0IGNhbiBiZSBpbmNvcnBvcmF0ZWQKK2ludG8g
YW4gZXhpc3RpbmcgQ01ha2UgYnVpbGQgZm9yIGFub3RoZXIgcHJvamVjdC4KKworIyMjIyBTdGFu
ZGFsb25lIENNYWtlIFByb2plY3QgIyMjIworCitXaGVuIGJ1aWxkaW5nIEdvb2dsZSBUZXN0IGFz
IGEgc3RhbmRhbG9uZSBwcm9qZWN0LCB0aGUgdHlwaWNhbAord29ya2Zsb3cgc3RhcnRzIHdpdGg6
CisKKyAgICBta2RpciBteWJ1aWxkICAgICAgICMgQ3JlYXRlIGEgZGlyZWN0b3J5IHRvIGhvbGQg
dGhlIGJ1aWxkIG91dHB1dC4KKyAgICBjZCBteWJ1aWxkCisgICAgY21ha2UgJHtHVEVTVF9ESVJ9
ICAjIEdlbmVyYXRlIG5hdGl2ZSBidWlsZCBzY3JpcHRzLgorCitJZiB5b3Ugd2FudCB0byBidWls
ZCBHb29nbGUgVGVzdCdzIHNhbXBsZXMsIHlvdSBzaG91bGQgcmVwbGFjZSB0aGUKK2xhc3QgY29t
bWFuZCB3aXRoCisKKyAgICBjbWFrZSAtRGd0ZXN0X2J1aWxkX3NhbXBsZXM9T04gJHtHVEVTVF9E
SVJ9CisKK0lmIHlvdSBhcmUgb24gYSBcKm5peCBzeXN0ZW0sIHlvdSBzaG91bGQgbm93IHNlZSBh
IE1ha2VmaWxlIGluIHRoZQorY3VycmVudCBkaXJlY3RvcnkuICBKdXN0IHR5cGUgJ21ha2UnIHRv
IGJ1aWxkIGd0ZXN0LgorCitJZiB5b3UgdXNlIFdpbmRvd3MgYW5kIGhhdmUgVmlzdWFsIFN0dWRp
byBpbnN0YWxsZWQsIGEgYGd0ZXN0LnNsbmAgZmlsZQorYW5kIHNldmVyYWwgYC52Y3Byb2pgIGZp
bGVzIHdpbGwgYmUgY3JlYXRlZC4gIFlvdSBjYW4gdGhlbiBidWlsZCB0aGVtCit1c2luZyBWaXN1
YWwgU3R1ZGlvLgorCitPbiBNYWMgT1MgWCB3aXRoIFhjb2RlIGluc3RhbGxlZCwgYSBgLnhjb2Rl
cHJvamAgZmlsZSB3aWxsIGJlIGdlbmVyYXRlZC4KKworIyMjIyBJbmNvcnBvcmF0aW5nIEludG8g
QW4gRXhpc3RpbmcgQ01ha2UgUHJvamVjdCAjIyMjCisKK0lmIHlvdSB3YW50IHRvIHVzZSBndGVz
dCBpbiBhIHByb2plY3Qgd2hpY2ggYWxyZWFkeSB1c2VzIENNYWtlLCB0aGVuIGEKK21vcmUgcm9i
dXN0IGFuZCBmbGV4aWJsZSBhcHByb2FjaCBpcyB0byBidWlsZCBndGVzdCBhcyBwYXJ0IG9mIHRo
YXQKK3Byb2plY3QgZGlyZWN0bHkuIFRoaXMgaXMgZG9uZSBieSBtYWtpbmcgdGhlIEdvb2dsZVRl
c3Qgc291cmNlIGNvZGUKK2F2YWlsYWJsZSB0byB0aGUgbWFpbiBidWlsZCBhbmQgYWRkaW5nIGl0
IHVzaW5nIENNYWtlJ3MKK2BhZGRfc3ViZGlyZWN0b3J5KClgIGNvbW1hbmQuIFRoaXMgaGFzIHRo
ZSBzaWduaWZpY2FudCBhZHZhbnRhZ2UgdGhhdAordGhlIHNhbWUgY29tcGlsZXIgYW5kIGxpbmtl
ciBzZXR0aW5ncyBhcmUgdXNlZCBiZXR3ZWVuIGd0ZXN0IGFuZCB0aGUKK3Jlc3Qgb2YgeW91ciBw
cm9qZWN0LCBzbyBpc3N1ZXMgYXNzb2NpYXRlZCB3aXRoIHVzaW5nIGluY29tcGF0aWJsZQorbGli
cmFyaWVzIChlZyBkZWJ1Zy9yZWxlYXNlKSwgZXRjLiBhcmUgYXZvaWRlZC4gVGhpcyBpcyBwYXJ0
aWN1bGFybHkKK3VzZWZ1bCBvbiBXaW5kb3dzLiBNYWtpbmcgR29vZ2xlVGVzdCdzIHNvdXJjZSBj
b2RlIGF2YWlsYWJsZSB0byB0aGUKK21haW4gYnVpbGQgY2FuIGJlIGRvbmUgYSBmZXcgZGlmZmVy
ZW50IHdheXM6CisKKyogRG93bmxvYWQgdGhlIEdvb2dsZVRlc3Qgc291cmNlIGNvZGUgbWFudWFs
bHkgYW5kIHBsYWNlIGl0IGF0IGEKKyAga25vd24gbG9jYXRpb24uIFRoaXMgaXMgdGhlIGxlYXN0
IGZsZXhpYmxlIGFwcHJvYWNoIGFuZCBjYW4gbWFrZQorICBpdCBtb3JlIGRpZmZpY3VsdCB0byB1
c2Ugd2l0aCBjb250aW51b3VzIGludGVncmF0aW9uIHN5c3RlbXMsIGV0Yy4KKyogRW1iZWQgdGhl
IEdvb2dsZVRlc3Qgc291cmNlIGNvZGUgYXMgYSBkaXJlY3QgY29weSBpbiB0aGUgbWFpbgorICBw
cm9qZWN0J3Mgc291cmNlIHRyZWUuIFRoaXMgaXMgb2Z0ZW4gdGhlIHNpbXBsZXN0IGFwcHJvYWNo
LCBidXQgaXMKKyAgYWxzbyB0aGUgaGFyZGVzdCB0byBrZWVwIHVwIHRvIGRhdGUuIFNvbWUgb3Jn
YW5pemF0aW9ucyBtYXkgbm90CisgIHBlcm1pdCB0aGlzIG1ldGhvZC4KKyogQWRkIEdvb2dsZVRl
c3QgYXMgYSBnaXQgc3VibW9kdWxlIG9yIGVxdWl2YWxlbnQuIFRoaXMgbWF5IG5vdAorICBhbHdh
eXMgYmUgcG9zc2libGUgb3IgYXBwcm9wcmlhdGUuIEdpdCBzdWJtb2R1bGVzLCBmb3IgZXhhbXBs
ZSwKKyAgaGF2ZSB0aGVpciBvd24gc2V0IG9mIGFkdmFudGFnZXMgYW5kIGRyYXdiYWNrcy4KKyog
VXNlIENNYWtlIHRvIGRvd25sb2FkIEdvb2dsZVRlc3QgYXMgcGFydCBvZiB0aGUgYnVpbGQncyBj
b25maWd1cmUKKyAgc3RlcC4gVGhpcyBpcyBqdXN0IGEgbGl0dGxlIG1vcmUgY29tcGxleCwgYnV0
IGRvZXNuJ3QgaGF2ZSB0aGUKKyAgbGltaXRhdGlvbnMgb2YgdGhlIG90aGVyIG1ldGhvZHMuCisK
K1RoZSBsYXN0IG9mIHRoZSBhYm92ZSBtZXRob2RzIGlzIGltcGxlbWVudGVkIHdpdGggYSBzbWFs
bCBwaWVjZQorb2YgQ01ha2UgY29kZSBpbiBhIHNlcGFyYXRlIGZpbGUgKGUuZy4gYENNYWtlTGlz
dHMudHh0LmluYCkgd2hpY2gKK2lzIGNvcGllZCB0byB0aGUgYnVpbGQgYXJlYSBhbmQgdGhlbiBp
bnZva2VkIGFzIGEgc3ViLWJ1aWxkCitfZHVyaW5nIHRoZSBDTWFrZSBzdGFnZV8uIFRoYXQgZGly
ZWN0b3J5IGlzIHRoZW4gcHVsbGVkIGludG8gdGhlCittYWluIGJ1aWxkIHdpdGggYGFkZF9zdWJk
aXJlY3RvcnkoKWAuIEZvciBleGFtcGxlOgorCitOZXcgZmlsZSBgQ01ha2VMaXN0cy50eHQuaW5g
OgorCisgICAgY21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9OIDIuOC4yKQorIAorICAgIHBy
b2plY3QoZ29vZ2xldGVzdC1kb3dubG9hZCBOT05FKQorIAorICAgIGluY2x1ZGUoRXh0ZXJuYWxQ
cm9qZWN0KQorICAgIEV4dGVybmFsUHJvamVjdF9BZGQoZ29vZ2xldGVzdAorICAgICAgR0lUX1JF
UE9TSVRPUlkgICAgaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0LmdpdAorICAg
ICAgR0lUX1RBRyAgICAgICAgICAgbWFzdGVyCisgICAgICBTT1VSQ0VfRElSICAgICAgICAiJHtD
TUFLRV9CSU5BUllfRElSfS9nb29nbGV0ZXN0LXNyYyIKKyAgICAgIEJJTkFSWV9ESVIgICAgICAg
ICIke0NNQUtFX0JJTkFSWV9ESVJ9L2dvb2dsZXRlc3QtYnVpbGQiCisgICAgICBDT05GSUdVUkVf
Q09NTUFORCAiIgorICAgICAgQlVJTERfQ09NTUFORCAgICAgIiIKKyAgICAgIElOU1RBTExfQ09N
TUFORCAgICIiCisgICAgICBURVNUX0NPTU1BTkQgICAgICAiIgorICAgICkKKyAgICAKK0V4aXN0
aW5nIGJ1aWxkJ3MgYENNYWtlTGlzdHMudHh0YDoKKworICAgICMgRG93bmxvYWQgYW5kIHVucGFj
ayBnb29nbGV0ZXN0IGF0IGNvbmZpZ3VyZSB0aW1lCisgICAgY29uZmlndXJlX2ZpbGUoQ01ha2VM
aXN0cy50eHQuaW4gZ29vZ2xldGVzdC1kb3dubG9hZC9DTWFrZUxpc3RzLnR4dCkKKyAgICBleGVj
dXRlX3Byb2Nlc3MoQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1HICIke0NNQUtFX0dFTkVSQVRP
Un0iIC4KKyAgICAgIFJFU1VMVF9WQVJJQUJMRSByZXN1bHQKKyAgICAgIFdPUktJTkdfRElSRUNU
T1JZICR7Q01BS0VfQklOQVJZX0RJUn0vZ29vZ2xldGVzdC1kb3dubG9hZCApCisgICAgaWYocmVz
dWx0KQorICAgICAgbWVzc2FnZShGQVRBTF9FUlJPUiAiQ01ha2Ugc3RlcCBmb3IgZ29vZ2xldGVz
dCBmYWlsZWQ6ICR7cmVzdWx0fSIpCisgICAgZW5kaWYoKQorICAgIGV4ZWN1dGVfcHJvY2VzcyhD
T01NQU5EICR7Q01BS0VfQ09NTUFORH0gLS1idWlsZCAuCisgICAgICBSRVNVTFRfVkFSSUFCTEUg
cmVzdWx0CisgICAgICBXT1JLSU5HX0RJUkVDVE9SWSAke0NNQUtFX0JJTkFSWV9ESVJ9L2dvb2ds
ZXRlc3QtZG93bmxvYWQgKQorICAgIGlmKHJlc3VsdCkKKyAgICAgIG1lc3NhZ2UoRkFUQUxfRVJS
T1IgIkJ1aWxkIHN0ZXAgZm9yIGdvb2dsZXRlc3QgZmFpbGVkOiAke3Jlc3VsdH0iKQorICAgIGVu
ZGlmKCkKKworICAgICMgUHJldmVudCBvdmVycmlkaW5nIHRoZSBwYXJlbnQgcHJvamVjdCdzIGNv
bXBpbGVyL2xpbmtlcgorICAgICMgc2V0dGluZ3Mgb24gV2luZG93cworICAgIHNldChndGVzdF9m
b3JjZV9zaGFyZWRfY3J0IE9OIENBQ0hFIEJPT0wgIiIgRk9SQ0UpCisgICAgCisgICAgIyBBZGQg
Z29vZ2xldGVzdCBkaXJlY3RseSB0byBvdXIgYnVpbGQuIFRoaXMgZGVmaW5lcworICAgICMgdGhl
IGd0ZXN0IGFuZCBndGVzdF9tYWluIHRhcmdldHMuCisgICAgYWRkX3N1YmRpcmVjdG9yeSgke0NN
QUtFX0JJTkFSWV9ESVJ9L2dvb2dsZXRlc3Qtc3JjCisgICAgICAgICAgICAgICAgICAgICAke0NN
QUtFX0JJTkFSWV9ESVJ9L2dvb2dsZXRlc3QtYnVpbGQpCisKKyAgICAjIFRoZSBndGVzdC9ndGVz
dF9tYWluIHRhcmdldHMgY2FycnkgaGVhZGVyIHNlYXJjaCBwYXRoCisgICAgIyBkZXBlbmRlbmNp
ZXMgYXV0b21hdGljYWxseSB3aGVuIHVzaW5nIENNYWtlIDIuOC4xMSBvcgorICAgICMgbGF0ZXIu
IE90aGVyd2lzZSB3ZSBoYXZlIHRvIGFkZCB0aGVtIGhlcmUgb3Vyc2VsdmVzLgorICAgIGlmIChD
TUFLRV9WRVJTSU9OIFZFUlNJT05fTEVTUyAyLjguMTEpCisgICAgICBpbmNsdWRlX2RpcmVjdG9y
aWVzKCIke2d0ZXN0X1NPVVJDRV9ESVJ9L2luY2x1ZGUiKQorICAgIGVuZGlmKCkKKworICAgICMg
Tm93IHNpbXBseSBsaW5rIGFnYWluc3QgZ3Rlc3Qgb3IgZ3Rlc3RfbWFpbiBhcyBuZWVkZWQuIEVn
CisgICAgYWRkX2V4ZWN1dGFibGUoZXhhbXBsZSBleGFtcGxlLmNwcCkKKyAgICB0YXJnZXRfbGlu
a19saWJyYXJpZXMoZXhhbXBsZSBndGVzdF9tYWluKQorICAgIGFkZF90ZXN0KE5BTUUgZXhhbXBs
ZV90ZXN0IENPTU1BTkQgZXhhbXBsZSkKKworTm90ZSB0aGF0IHRoaXMgYXBwcm9hY2ggcmVxdWly
ZXMgQ01ha2UgMi44LjIgb3IgbGF0ZXIgZHVlIHRvCitpdHMgdXNlIG9mIHRoZSBgRXh0ZXJuYWxQ
cm9qZWN0X0FkZCgpYCBjb21tYW5kLiBUaGUgYWJvdmUKK3RlY2huaXF1ZSBpcyBkaXNjdXNzZWQg
aW4gbW9yZSBkZXRhaWwgaW4gCitbdGhpcyBzZXBhcmF0ZSBhcnRpY2xlXShodHRwOi8vY3Jhc2Np
dC5jb20vMjAxNS8wNy8yNS9jbWFrZS1ndGVzdC8pCit3aGljaCBhbHNvIGNvbnRhaW5zIGEgbGlu
ayB0byBhIGZ1bGx5IGdlbmVyYWxpemVkIGltcGxlbWVudGF0aW9uCitvZiB0aGUgdGVjaG5pcXVl
LgorCisKKyMjIyBMZWdhY3kgQnVpbGQgU2NyaXB0cyAjIyMKKworQmVmb3JlIHNldHRsaW5nIG9u
IENNYWtlLCB3ZSBoYXZlIGJlZW4gcHJvdmlkaW5nIGhhbmQtbWFpbnRhaW5lZCBidWlsZAorcHJv
amVjdHMvc2NyaXB0cyBmb3IgVmlzdWFsIFN0dWRpbywgWGNvZGUsIGFuZCBBdXRvdG9vbHMuICBX
aGlsZSB3ZQorY29udGludWUgdG8gcHJvdmlkZSB0aGVtIGZvciBjb252ZW5pZW5jZSwgdGhleSBh
cmUgbm90IGFjdGl2ZWx5CittYWludGFpbmVkIGFueSBtb3JlLiAgV2UgaGlnaGx5IHJlY29tbWVu
ZCB0aGF0IHlvdSBmb2xsb3cgdGhlCitpbnN0cnVjdGlvbnMgaW4gdGhlIGFib3ZlIHNlY3Rpb25z
IHRvIGludGVncmF0ZSBHb29nbGUgVGVzdAord2l0aCB5b3VyIGV4aXN0aW5nIGJ1aWxkIHN5c3Rl
bS4KKworSWYgeW91IHN0aWxsIG5lZWQgdG8gdXNlIHRoZSBsZWdhY3kgYnVpbGQgc2NyaXB0cywg
aGVyZSdzIGhvdzoKKworVGhlIG1zdmNcIGZvbGRlciBjb250YWlucyB0d28gc29sdXRpb25zIHdp
dGggVmlzdWFsIEMrKyBwcm9qZWN0cy4KK09wZW4gdGhlIGBndGVzdC5zbG5gIG9yIGBndGVzdC1t
ZC5zbG5gIGZpbGUgdXNpbmcgVmlzdWFsIFN0dWRpbywgYW5kIHlvdQorYXJlIHJlYWR5IHRvIGJ1
aWxkIEdvb2dsZSBUZXN0IHRoZSBzYW1lIHdheSB5b3UgYnVpbGQgYW55IFZpc3VhbAorU3R1ZGlv
IHByb2plY3QuICBGaWxlcyB0aGF0IGhhdmUgbmFtZXMgZW5kaW5nIHdpdGggLW1kIHVzZSBETEwK
K3ZlcnNpb25zIG9mIE1pY3Jvc29mdCBydW50aW1lIGxpYnJhcmllcyAodGhlIC9NRCBvciB0aGUg
L01EZCBjb21waWxlcgorb3B0aW9uKS4gIEZpbGVzIHdpdGhvdXQgdGhhdCBzdWZmaXggdXNlIHN0
YXRpYyB2ZXJzaW9ucyBvZiB0aGUgcnVudGltZQorbGlicmFyaWVzICh0aGUgL01UIG9yIHRoZSAv
TVRkIG9wdGlvbikuICBQbGVhc2Ugbm90ZSB0aGF0IG9uZSBtdXN0IHVzZQordGhlIHNhbWUgb3B0
aW9uIHRvIGNvbXBpbGUgYm90aCBndGVzdCBhbmQgdGhlIHRlc3QgY29kZS4gIElmIHlvdSB1c2UK
K1Zpc3VhbCBTdHVkaW8gMjAwNSBvciBhYm92ZSwgd2UgcmVjb21tZW5kIHRoZSAtbWQgdmVyc2lv
biBhcyAvTUQgaXMKK3RoZSBkZWZhdWx0IGZvciBuZXcgcHJvamVjdHMgaW4gdGhlc2UgdmVyc2lv
bnMgb2YgVmlzdWFsIFN0dWRpby4KKworT24gTWFjIE9TIFgsIG9wZW4gdGhlIGBndGVzdC54Y29k
ZXByb2pgIGluIHRoZSBgeGNvZGUvYCBmb2xkZXIgdXNpbmcKK1hjb2RlLiAgQnVpbGQgdGhlICJn
dGVzdCIgdGFyZ2V0LiAgVGhlIHVuaXZlcnNhbCBiaW5hcnkgZnJhbWV3b3JrIHdpbGwKK2VuZCB1
cCBpbiB5b3VyIHNlbGVjdGVkIGJ1aWxkIGRpcmVjdG9yeSAoc2VsZWN0ZWQgaW4gdGhlIFhjb2Rl
CisiUHJlZmVyZW5jZXMuLi4iIC0+ICJCdWlsZGluZyIgcGFuZSBhbmQgZGVmYXVsdHMgdG8geGNv
ZGUvYnVpbGQpLgorQWx0ZXJuYXRpdmVseSwgYXQgdGhlIGNvbW1hbmQgbGluZSwgZW50ZXI6CisK
KyAgICB4Y29kZWJ1aWxkCisKK1RoaXMgd2lsbCBidWlsZCB0aGUgIlJlbGVhc2UiIGNvbmZpZ3Vy
YXRpb24gb2YgZ3Rlc3QuZnJhbWV3b3JrIGluIHlvdXIKK2RlZmF1bHQgYnVpbGQgbG9jYXRpb24u
ICBTZWUgdGhlICJ4Y29kZWJ1aWxkIiBtYW4gcGFnZSBmb3IgbW9yZQoraW5mb3JtYXRpb24gYWJv
dXQgYnVpbGRpbmcgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb25zIGFuZCBidWlsZGluZyBpbgorZGlm
ZmVyZW50IGxvY2F0aW9ucy4KKworSWYgeW91IHdpc2ggdG8gdXNlIHRoZSBHb29nbGUgVGVzdCBY
Y29kZSBwcm9qZWN0IHdpdGggWGNvZGUgNC54IGFuZAorYWJvdmUsIHlvdSBuZWVkIHRvIGVpdGhl
cjoKKworICogdXBkYXRlIHRoZSBTREsgY29uZmlndXJhdGlvbiBvcHRpb25zIGluIHhjb2RlL0Nv
bmZpZy9HZW5lcmFsLnhjb25maWcuCisgICBDb21tZW50IG9wdGlvbnMgYFNES1JPT1RgLCBgTUFD
T1NfREVQTE9ZTUVOVF9UQVJHRVRgLCBhbmQgYEdDQ19WRVJTSU9OYC4gSWYKKyAgIHlvdSBjaG9v
c2UgdGhpcyByb3V0ZSB5b3UgbG9zZSB0aGUgYWJpbGl0eSB0byB0YXJnZXQgZWFybGllciB2ZXJz
aW9ucworICAgb2YgTWFjT1MgWC4KKyAqIEluc3RhbGwgYW4gU0RLIGZvciBhbiBlYXJsaWVyIHZl
cnNpb24uIFRoaXMgZG9lc24ndCBhcHBlYXIgdG8gYmUKKyAgIHN1cHBvcnRlZCBieSBBcHBsZSwg
YnV0IGhhcyBiZWVuIHJlcG9ydGVkIHRvIHdvcmsKKyAgIChodHRwOi8vc3RhY2tvdmVyZmxvdy5j
b20vcXVlc3Rpb25zLzUzNzg1MTgpLgorCisjIyMgVHdlYWtpbmcgR29vZ2xlIFRlc3QgIyMjCisK
K0dvb2dsZSBUZXN0IGNhbiBiZSB1c2VkIGluIGRpdmVyc2UgZW52aXJvbm1lbnRzLiAgVGhlIGRl
ZmF1bHQKK2NvbmZpZ3VyYXRpb24gbWF5IG5vdCB3b3JrIChvciBtYXkgbm90IHdvcmsgd2VsbCkg
b3V0IG9mIHRoZSBib3ggaW4KK3NvbWUgZW52aXJvbm1lbnRzLiAgSG93ZXZlciwgeW91IGNhbiBl
YXNpbHkgdHdlYWsgR29vZ2xlIFRlc3QgYnkKK2RlZmluaW5nIGNvbnRyb2wgbWFjcm9zIG9uIHRo
ZSBjb21waWxlciBjb21tYW5kIGxpbmUuICBHZW5lcmFsbHksCit0aGVzZSBtYWNyb3MgYXJlIG5h
bWVkIGxpa2UgYEdURVNUX1hZWmAgYW5kIHlvdSBkZWZpbmUgdGhlbSB0byBlaXRoZXIgMQorb3Ig
MCB0byBlbmFibGUgb3IgZGlzYWJsZSBhIGNlcnRhaW4gZmVhdHVyZS4KKworV2UgbGlzdCB0aGUg
bW9zdCBmcmVxdWVudGx5IHVzZWQgbWFjcm9zIGJlbG93LiAgRm9yIGEgY29tcGxldGUgbGlzdCwK
K3NlZSBmaWxlIFtpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaF0oaW5jbHVkZS9n
dGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgpLgorCisjIyMgQ2hvb3NpbmcgYSBUUjEgVHVwbGUg
TGlicmFyeSAjIyMKKworU29tZSBHb29nbGUgVGVzdCBmZWF0dXJlcyByZXF1aXJlIHRoZSBDKysg
VGVjaG5pY2FsIFJlcG9ydCAxIChUUjEpCit0dXBsZSBsaWJyYXJ5LCB3aGljaCBpcyBub3QgeWV0
IGF2YWlsYWJsZSB3aXRoIGFsbCBjb21waWxlcnMuICBUaGUKK2dvb2QgbmV3cyBpcyB0aGF0IEdv
b2dsZSBUZXN0IGltcGxlbWVudHMgYSBzdWJzZXQgb2YgVFIxIHR1cGxlIHRoYXQncworZW5vdWdo
IGZvciBpdHMgb3duIG5lZWQsIGFuZCB3aWxsIGF1dG9tYXRpY2FsbHkgdXNlIHRoaXMgd2hlbiB0
aGUKK2NvbXBpbGVyIGRvZXNuJ3QgcHJvdmlkZSBUUjEgdHVwbGUuCisKK1VzdWFsbHkgeW91IGRv
bid0IG5lZWQgdG8gY2FyZSBhYm91dCB3aGljaCB0dXBsZSBsaWJyYXJ5IEdvb2dsZSBUZXN0Cit1
c2VzLiAgSG93ZXZlciwgaWYgeW91ciBwcm9qZWN0IGFscmVhZHkgdXNlcyBUUjEgdHVwbGUsIHlv
dSBuZWVkIHRvCit0ZWxsIEdvb2dsZSBUZXN0IHRvIHVzZSB0aGUgc2FtZSBUUjEgdHVwbGUgbGli
cmFyeSB0aGUgcmVzdCBvZiB5b3VyCitwcm9qZWN0IHVzZXMsIG9yIHRoZSB0d28gdHVwbGUgaW1w
bGVtZW50YXRpb25zIHdpbGwgY2xhc2guICBUbyBkbwordGhhdCwgYWRkCisKKyAgICAtREdURVNU
X1VTRV9PV05fVFIxX1RVUExFPTAKKwordG8gdGhlIGNvbXBpbGVyIGZsYWdzIHdoaWxlIGNvbXBp
bGluZyBHb29nbGUgVGVzdCBhbmQgeW91ciB0ZXN0cy4gIElmCit5b3Ugd2FudCB0byBmb3JjZSBH
b29nbGUgVGVzdCB0byB1c2UgaXRzIG93biB0dXBsZSBsaWJyYXJ5LCBqdXN0IGFkZAorCisgICAg
LURHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRT0xCisKK3RvIHRoZSBjb21waWxlciBmbGFncyBpbnN0
ZWFkLgorCitJZiB5b3UgZG9uJ3Qgd2FudCBHb29nbGUgVGVzdCB0byB1c2UgdHVwbGUgYXQgYWxs
LCBhZGQKKworICAgIC1ER1RFU1RfSEFTX1RSMV9UVVBMRT0wCisKK2FuZCBhbGwgZmVhdHVyZXMg
dXNpbmcgdHVwbGUgd2lsbCBiZSBkaXNhYmxlZC4KKworIyMjIE11bHRpLXRocmVhZGVkIFRlc3Rz
ICMjIworCitHb29nbGUgVGVzdCBpcyB0aHJlYWQtc2FmZSB3aGVyZSB0aGUgcHRocmVhZCBsaWJy
YXJ5IGlzIGF2YWlsYWJsZS4KK0FmdGVyIGAjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCJgLCB5b3Ug
Y2FuIGNoZWNrIHRoZSBgR1RFU1RfSVNfVEhSRUFEU0FGRWAKK21hY3JvIHRvIHNlZSB3aGV0aGVy
IHRoaXMgaXMgdGhlIGNhc2UgKHllcyBpZiB0aGUgbWFjcm8gaXMgYCNkZWZpbmVkYCB0bworMSwg
bm8gaWYgaXQncyB1bmRlZmluZWQuKS4KKworSWYgR29vZ2xlIFRlc3QgZG9lc24ndCBjb3JyZWN0
bHkgZGV0ZWN0IHdoZXRoZXIgcHRocmVhZCBpcyBhdmFpbGFibGUKK2luIHlvdXIgZW52aXJvbm1l
bnQsIHlvdSBjYW4gZm9yY2UgaXQgd2l0aAorCisgICAgLURHVEVTVF9IQVNfUFRIUkVBRD0xCisK
K29yCisKKyAgICAtREdURVNUX0hBU19QVEhSRUFEPTAKKworV2hlbiBHb29nbGUgVGVzdCB1c2Vz
IHB0aHJlYWQsIHlvdSBtYXkgbmVlZCB0byBhZGQgZmxhZ3MgdG8geW91cgorY29tcGlsZXIgYW5k
L29yIGxpbmtlciB0byBzZWxlY3QgdGhlIHB0aHJlYWQgbGlicmFyeSwgb3IgeW91J2xsIGdldAor
bGluayBlcnJvcnMuICBJZiB5b3UgdXNlIHRoZSBDTWFrZSBzY3JpcHQgb3IgdGhlIGRlcHJlY2F0
ZWQgQXV0b3Rvb2xzCitzY3JpcHQsIHRoaXMgaXMgdGFrZW4gY2FyZSBvZiBmb3IgeW91LiAgSWYg
eW91IHVzZSB5b3VyIG93biBidWlsZAorc2NyaXB0LCB5b3UnbGwgbmVlZCB0byByZWFkIHlvdXIg
Y29tcGlsZXIgYW5kIGxpbmtlcidzIG1hbnVhbCB0bworZmlndXJlIG91dCB3aGF0IGZsYWdzIHRv
IGFkZC4KKworIyMjIEFzIGEgU2hhcmVkIExpYnJhcnkgKERMTCkgIyMjCisKK0dvb2dsZSBUZXN0
IGlzIGNvbXBhY3QsIHNvIG1vc3QgdXNlcnMgY2FuIGJ1aWxkIGFuZCBsaW5rIGl0IGFzIGEKK3N0
YXRpYyBsaWJyYXJ5IGZvciB0aGUgc2ltcGxpY2l0eS4gIFlvdSBjYW4gY2hvb3NlIHRvIHVzZSBH
b29nbGUgVGVzdAorYXMgYSBzaGFyZWQgbGlicmFyeSAoa25vd24gYXMgYSBETEwgb24gV2luZG93
cykgaWYgeW91IHByZWZlci4KKworVG8gY29tcGlsZSAqZ3Rlc3QqIGFzIGEgc2hhcmVkIGxpYnJh
cnksIGFkZAorCisgICAgLURHVEVTVF9DUkVBVEVfU0hBUkVEX0xJQlJBUlk9MQorCit0byB0aGUg
Y29tcGlsZXIgZmxhZ3MuICBZb3UnbGwgYWxzbyBuZWVkIHRvIHRlbGwgdGhlIGxpbmtlciB0byBw
cm9kdWNlCithIHNoYXJlZCBsaWJyYXJ5IGluc3RlYWQgLSBjb25zdWx0IHlvdXIgbGlua2VyJ3Mg
bWFudWFsIGZvciBob3cgdG8gZG8KK2l0LgorCitUbyBjb21waWxlIHlvdXIgKnRlc3RzKiB0aGF0
IHVzZSB0aGUgZ3Rlc3Qgc2hhcmVkIGxpYnJhcnksIGFkZAorCisgICAgLURHVEVTVF9MSU5LRURf
QVNfU0hBUkVEX0xJQlJBUlk9MQorCit0byB0aGUgY29tcGlsZXIgZmxhZ3MuCisKK05vdGU6IHdo
aWxlIHRoZSBhYm92ZSBzdGVwcyBhcmVuJ3QgdGVjaG5pY2FsbHkgbmVjZXNzYXJ5IHRvZGF5IHdo
ZW4KK3VzaW5nIHNvbWUgY29tcGlsZXJzIChlLmcuIEdDQyksIHRoZXkgbWF5IGJlY29tZSBuZWNl
c3NhcnkgaW4gdGhlCitmdXR1cmUsIGlmIHdlIGRlY2lkZSB0byBpbXByb3ZlIHRoZSBzcGVlZCBv
ZiBsb2FkaW5nIHRoZSBsaWJyYXJ5IChzZWUKKzxodHRwOi8vZ2NjLmdudS5vcmcvd2lraS9WaXNp
YmlsaXR5PiBmb3IgZGV0YWlscykuICBUaGVyZWZvcmUgeW91IGFyZQorcmVjb21tZW5kZWQgdG8g
YWx3YXlzIGFkZCB0aGUgYWJvdmUgZmxhZ3Mgd2hlbiB1c2luZyBHb29nbGUgVGVzdCBhcyBhCitz
aGFyZWQgbGlicmFyeS4gIE90aGVyd2lzZSBhIGZ1dHVyZSByZWxlYXNlIG9mIEdvb2dsZSBUZXN0
IG1heSBicmVhaworeW91ciBidWlsZCBzY3JpcHQuCisKKyMjIyBBdm9pZGluZyBNYWNybyBOYW1l
IENsYXNoZXMgIyMjCisKK0luIEMrKywgbWFjcm9zIGRvbid0IG9iZXkgbmFtZXNwYWNlcy4gIFRo
ZXJlZm9yZSB0d28gbGlicmFyaWVzIHRoYXQKK2JvdGggZGVmaW5lIGEgbWFjcm8gb2YgdGhlIHNh
bWUgbmFtZSB3aWxsIGNsYXNoIGlmIHlvdSBgI2luY2x1ZGVgIGJvdGgKK2RlZmluaXRpb25zLiAg
SW4gY2FzZSBhIEdvb2dsZSBUZXN0IG1hY3JvIGNsYXNoZXMgd2l0aCBhbm90aGVyCitsaWJyYXJ5
LCB5b3UgY2FuIGZvcmNlIEdvb2dsZSBUZXN0IHRvIHJlbmFtZSBpdHMgbWFjcm8gdG8gYXZvaWQg
dGhlCitjb25mbGljdC4KKworU3BlY2lmaWNhbGx5LCBpZiBib3RoIEdvb2dsZSBUZXN0IGFuZCBz
b21lIG90aGVyIGNvZGUgZGVmaW5lIG1hY3JvCitGT08sIHlvdSBjYW4gYWRkCisKKyAgICAtREdU
RVNUX0RPTlRfREVGSU5FX0ZPTz0xCisKK3RvIHRoZSBjb21waWxlciBmbGFncyB0byB0ZWxsIEdv
b2dsZSBUZXN0IHRvIGNoYW5nZSB0aGUgbWFjcm8ncyBuYW1lCitmcm9tIGBGT09gIHRvIGBHVEVT
VF9GT09gLiAgQ3VycmVudGx5IGBGT09gIGNhbiBiZSBgRkFJTGAsIGBTVUNDRUVEYCwKK29yIGBU
RVNUYC4gIEZvciBleGFtcGxlLCB3aXRoIGAtREdURVNUX0RPTlRfREVGSU5FX1RFU1Q9MWAsIHlv
dSdsbAorbmVlZCB0byB3cml0ZQorCisgICAgR1RFU1RfVEVTVChTb21lVGVzdCwgRG9lc1RoaXMp
IHsgLi4uIH0KKworaW5zdGVhZCBvZgorCisgICAgVEVTVChTb21lVGVzdCwgRG9lc1RoaXMpIHsg
Li4uIH0KKworaW4gb3JkZXIgdG8gZGVmaW5lIGEgdGVzdC4KKworIyMgRGV2ZWxvcGluZyBHb29n
bGUgVGVzdCAjIworCitUaGlzIHNlY3Rpb24gZGlzY3Vzc2VzIGhvdyB0byBtYWtlIHlvdXIgb3du
IGNoYW5nZXMgdG8gR29vZ2xlIFRlc3QuCisKKyMjIyBUZXN0aW5nIEdvb2dsZSBUZXN0IEl0c2Vs
ZiAjIyMKKworVG8gbWFrZSBzdXJlIHlvdXIgY2hhbmdlcyB3b3JrIGFzIGludGVuZGVkIGFuZCBk
b24ndCBicmVhayBleGlzdGluZworZnVuY3Rpb25hbGl0eSwgeW91J2xsIHdhbnQgdG8gY29tcGls
ZSBhbmQgcnVuIEdvb2dsZSBUZXN0J3Mgb3duIHRlc3RzLgorRm9yIHRoYXQgeW91IGNhbiB1c2Ug
Q01ha2U6CisKKyAgICBta2RpciBteWJ1aWxkCisgICAgY2QgbXlidWlsZAorICAgIGNtYWtlIC1E
Z3Rlc3RfYnVpbGRfdGVzdHM9T04gJHtHVEVTVF9ESVJ9CisKK01ha2Ugc3VyZSB5b3UgaGF2ZSBQ
eXRob24gaW5zdGFsbGVkLCBhcyBzb21lIG9mIEdvb2dsZSBUZXN0J3MgdGVzdHMKK2FyZSB3cml0
dGVuIGluIFB5dGhvbi4gIElmIHRoZSBjbWFrZSBjb21tYW5kIGNvbXBsYWlucyBhYm91dCBub3Qg
YmVpbmcKK2FibGUgdG8gZmluZCBQeXRob24gKGBDb3VsZCBOT1QgZmluZCBQeXRob25JbnRlcnAg
KG1pc3Npbmc6CitQWVRIT05fRVhFQ1VUQUJMRSlgKSwgdHJ5IHRlbGxpbmcgaXQgZXhwbGljaXRs
eSB3aGVyZSB5b3VyIFB5dGhvbgorZXhlY3V0YWJsZSBjYW4gYmUgZm91bmQ6CisKKyAgICBjbWFr
ZSAtRFBZVEhPTl9FWEVDVVRBQkxFPXBhdGgvdG8vcHl0aG9uIC1EZ3Rlc3RfYnVpbGRfdGVzdHM9
T04gJHtHVEVTVF9ESVJ9CisKK05leHQsIHlvdSBjYW4gYnVpbGQgR29vZ2xlIFRlc3QgYW5kIGFs
bCBvZiBpdHMgb3duIHRlc3RzLiAgT24gXCpuaXgsCit0aGlzIGlzIHVzdWFsbHkgZG9uZSBieSAn
bWFrZScuICBUbyBydW4gdGhlIHRlc3RzLCBkbworCisgICAgbWFrZSB0ZXN0CisKK0FsbCB0ZXN0
cyBzaG91bGQgcGFzcy4KKworTm9ybWFsbHkgeW91IGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQg
cmVnZW5lcmF0aW5nIHRoZSBzb3VyY2UgZmlsZXMsCit1bmxlc3MgeW91IG5lZWQgdG8gbW9kaWZ5
IHRoZW0uICBJbiB0aGF0IGNhc2UsIHlvdSBzaG91bGQgbW9kaWZ5IHRoZQorY29ycmVzcG9uZGlu
ZyAucHVtcCBmaWxlcyBpbnN0ZWFkIGFuZCBydW4gdGhlIHB1bXAucHkgUHl0aG9uIHNjcmlwdCB0
bworcmVnZW5lcmF0ZSB0aGVtLiAgWW91IGNhbiBmaW5kIHB1bXAucHkgaW4gdGhlIFtzY3JpcHRz
L10oc2NyaXB0cy8pIGRpcmVjdG9yeS4KK1JlYWQgdGhlIFtQdW1wIG1hbnVhbF0oZG9jcy9QdW1w
TWFudWFsLm1kKSBmb3IgaG93IHRvIHVzZSBpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2Nt
YWtlL2ludGVybmFsX3V0aWxzLmNtYWtlIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvY21ha2UvaW50ZXJuYWxfdXRp
bHMuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODg3OGRjMWE5NTkyMjEyMDI0NWE3NjAxMDczNmQ3ZGI3NzEy
MWE4OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2NtYWtlL2ludGVybmFsX3V0aWxz
LmNtYWtlCkBAIC0wLDAgKzEsMjU2IEBACisjIERlZmluZXMgZnVuY3Rpb25zIGFuZCBtYWNyb3Mg
dXNlZnVsIGZvciBidWlsZGluZyBHb29nbGUgVGVzdCBhbmQKKyMgR29vZ2xlIE1vY2suCisjCisj
IE5vdGU6CisjCisjIC0gVGhpcyBmaWxlIHdpbGwgYmUgcnVuIHR3aWNlIHdoZW4gYnVpbGRpbmcg
R29vZ2xlIE1vY2sgKG9uY2UgdmlhCisjICAgR29vZ2xlIFRlc3QncyBDTWFrZUxpc3RzLnR4dCwg
YW5kIG9uY2UgdmlhIEdvb2dsZSBNb2NrJ3MpLgorIyAgIFRoZXJlZm9yZSBpdCBzaG91bGRuJ3Qg
aGF2ZSBhbnkgc2lkZSBlZmZlY3RzIG90aGVyIHRoYW4gZGVmaW5pbmcKKyMgICB0aGUgZnVuY3Rp
b25zIGFuZCBtYWNyb3MuCisjCisjIC0gVGhlIGZ1bmN0aW9ucy9tYWNyb3MgZGVmaW5lZCBpbiB0
aGlzIGZpbGUgbWF5IGRlcGVuZCBvbiBHb29nbGUKKyMgICBUZXN0IGFuZCBHb29nbGUgTW9jaydz
IG9wdGlvbigpIGRlZmluaXRpb25zLCBhbmQgdGh1cyBtdXN0IGJlCisjICAgY2FsbGVkICphZnRl
ciogdGhlIG9wdGlvbnMgaGF2ZSBiZWVuIGRlZmluZWQuCisKKyMgVHdlYWtzIENNYWtlJ3MgZGVm
YXVsdCBjb21waWxlci9saW5rZXIgc2V0dGluZ3MgdG8gc3VpdCBHb29nbGUgVGVzdCdzIG5lZWRz
LgorIworIyBUaGlzIG11c3QgYmUgYSBtYWNybygpLCBhcyBpbnNpZGUgYSBmdW5jdGlvbiBzdHJp
bmcoKSBjYW4gb25seQorIyB1cGRhdGUgdmFyaWFibGVzIGluIHRoZSBmdW5jdGlvbiBzY29wZS4K
K21hY3JvKGZpeF9kZWZhdWx0X2NvbXBpbGVyX3NldHRpbmdzXykKKyAgaWYgKE1TVkMpCisgICAg
IyBGb3IgTVNWQywgQ01ha2Ugc2V0cyBjZXJ0YWluIGZsYWdzIHRvIGRlZmF1bHRzIHdlIHdhbnQg
dG8gb3ZlcnJpZGUuCisgICAgIyBUaGlzIHJlcGxhY2VtZW50IGNvZGUgaXMgdGFrZW4gZnJvbSBz
YW1wbGUgaW4gdGhlIENNYWtlIFdpa2kgYXQKKyAgICAjIGh0dHA6Ly93d3cuY21ha2Uub3JnL1dp
a2kvQ01ha2VfRkFRI0R5bmFtaWNfUmVwbGFjZS4KKyAgICBmb3JlYWNoIChmbGFnX3ZhcgorICAg
ICAgICAgICAgIENNQUtFX0NYWF9GTEFHUyBDTUFLRV9DWFhfRkxBR1NfREVCVUcgQ01BS0VfQ1hY
X0ZMQUdTX1JFTEVBU0UKKyAgICAgICAgICAgICBDTUFLRV9DWFhfRkxBR1NfTUlOU0laRVJFTCBD
TUFLRV9DWFhfRkxBR1NfUkVMV0lUSERFQklORk8pCisgICAgICBpZiAoTk9UIEJVSUxEX1NIQVJF
RF9MSUJTIEFORCBOT1QgZ3Rlc3RfZm9yY2Vfc2hhcmVkX2NydCkKKyAgICAgICAgIyBXaGVuIEdv
b2dsZSBUZXN0IGlzIGJ1aWx0IGFzIGEgc2hhcmVkIGxpYnJhcnksIGl0IHNob3VsZCBhbHNvIHVz
ZQorICAgICAgICAjIHNoYXJlZCBydW50aW1lIGxpYnJhcmllcy4gIE90aGVyd2lzZSwgaXQgbWF5
IGVuZCB1cCB3aXRoIG11bHRpcGxlCisgICAgICAgICMgY29waWVzIG9mIHJ1bnRpbWUgbGlicmFy
eSBkYXRhIGluIGRpZmZlcmVudCBtb2R1bGVzLCByZXN1bHRpbmcgaW4KKyAgICAgICAgIyBoYXJk
LXRvLWZpbmQgY3Jhc2hlcy4gV2hlbiBpdCBpcyBidWlsdCBhcyBhIHN0YXRpYyBsaWJyYXJ5LCBp
dCBpcworICAgICAgICAjIHByZWZlcmFibGUgdG8gdXNlIENSVCBhcyBzdGF0aWMgbGlicmFyaWVz
LCBhcyB3ZSBkb24ndCBoYXZlIHRvIHJlbHkKKyAgICAgICAgIyBvbiBDUlQgRExMcyBiZWluZyBh
dmFpbGFibGUuIENNYWtlIGFsd2F5cyBkZWZhdWx0cyB0byB1c2luZyBzaGFyZWQKKyAgICAgICAg
IyBDUlQgbGlicmFyaWVzLCBzbyB3ZSBvdmVycmlkZSB0aGF0IGRlZmF1bHQgaGVyZS4KKyAgICAg
ICAgc3RyaW5nKFJFUExBQ0UgIi9NRCIgIi1NVCIgJHtmbGFnX3Zhcn0gIiR7JHtmbGFnX3Zhcn19
IikKKyAgICAgIGVuZGlmKCkKKworICAgICAgIyBXZSBwcmVmZXIgbW9yZSBzdHJpY3Qgd2Fybmlu
ZyBjaGVja2luZyBmb3IgYnVpbGRpbmcgR29vZ2xlIFRlc3QuCisgICAgICAjIFJlcGxhY2VzIC9X
MyB3aXRoIC9XNCBpbiBkZWZhdWx0cy4KKyAgICAgIHN0cmluZyhSRVBMQUNFICIvVzMiICIvVzQi
ICR7ZmxhZ192YXJ9ICIkeyR7ZmxhZ192YXJ9fSIpCisgICAgZW5kZm9yZWFjaCgpCisgIGVuZGlm
KCkKK2VuZG1hY3JvKCkKKworIyBEZWZpbmVzIHRoZSBjb21waWxlci9saW5rZXIgZmxhZ3MgdXNl
ZCB0byBidWlsZCBHb29nbGUgVGVzdCBhbmQKKyMgR29vZ2xlIE1vY2suICBZb3UgY2FuIHR3ZWFr
IHRoZXNlIGRlZmluaXRpb25zIHRvIHN1aXQgeW91ciBuZWVkLiAgQQorIyB2YXJpYWJsZSdzIHZh
bHVlIGlzIGVtcHR5IGJlZm9yZSBpdCdzIGV4cGxpY2l0bHkgYXNzaWduZWQgdG8uCittYWNybyhj
b25maWdfY29tcGlsZXJfYW5kX2xpbmtlcikKKyAgIyBOb3RlOiBwdGhyZWFkcyBvbiBNaW5HVyBp
cyBub3Qgc3VwcG9ydGVkLCBldmVuIGlmIGF2YWlsYWJsZQorICAjIGluc3RlYWQsIHdlIHVzZSB3
aW5kb3dzIHRocmVhZGluZyBwcmltaXRpdmVzCisgIGlmIChOT1QgZ3Rlc3RfZGlzYWJsZV9wdGhy
ZWFkcyBBTkQgTk9UIE1JTkdXKQorICAgICMgRGVmaW5lcyBDTUFLRV9VU0VfUFRIUkVBRFNfSU5J
VCBhbmQgQ01BS0VfVEhSRUFEX0xJQlNfSU5JVC4KKyAgICBmaW5kX3BhY2thZ2UoVGhyZWFkcykK
KyAgZW5kaWYoKQorCisgIGZpeF9kZWZhdWx0X2NvbXBpbGVyX3NldHRpbmdzXygpCisgIGlmIChN
U1ZDKQorICAgICMgTmV3bGluZXMgaW5zaWRlIGZsYWdzIHZhcmlhYmxlcyBicmVhayBDTWFrZSdz
IE5NYWtlIGdlbmVyYXRvci4KKyAgICAjIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IEFkZCAtUlRD
cyBhbmQgLVJUQ3UgdG8gZGVidWcgYnVpbGRzLgorICAgIHNldChjeHhfYmFzZV9mbGFncyAiLUdT
IC1XNCAtV1ggLXdkNDI1MSAtd2Q0Mjc1IC1ub2xvZ28gLUogLVppIikKKyAgICBpZiAoTVNWQ19W
RVJTSU9OIExFU1MgMTQwMCkgICMgMTQwMCBpcyBWaXN1YWwgU3R1ZGlvIDIwMDUKKyAgICAgICMg
U3VwcHJlc3Mgc3B1cmlvdXMgd2FybmluZ3MgTVNWQyA3LjEgc29tZXRpbWVzIGlzc3Vlcy4KKyAg
ICAgICMgRm9yY2luZyB2YWx1ZSB0byBib29sLgorICAgICAgc2V0KGN4eF9iYXNlX2ZsYWdzICIk
e2N4eF9iYXNlX2ZsYWdzfSAtd2Q0ODAwIikKKyAgICAgICMgQ29weSBjb25zdHJ1Y3RvciBhbmQg
YXNzaWdubWVudCBvcGVyYXRvciBjb3VsZCBub3QgYmUgZ2VuZXJhdGVkLgorICAgICAgc2V0KGN4
eF9iYXNlX2ZsYWdzICIke2N4eF9iYXNlX2ZsYWdzfSAtd2Q0NTExIC13ZDQ1MTIiKQorICAgICAg
IyBDb21wYXRpYmlsaXR5IHdhcm5pbmdzIG5vdCBhcHBsaWNhYmxlIHRvIEdvb2dsZSBUZXN0Lgor
ICAgICAgIyBSZXNvbHZlZCBvdmVybG9hZCB3YXMgZm91bmQgYnkgYXJndW1lbnQtZGVwZW5kZW50
IGxvb2t1cC4KKyAgICAgIHNldChjeHhfYmFzZV9mbGFncyAiJHtjeHhfYmFzZV9mbGFnc30gLXdk
NDY3NSIpCisgICAgZW5kaWYoKQorICAgIGlmIChNU1ZDX1ZFUlNJT04gTEVTUyAxNTAwKSAgIyAx
NTAwIGlzIFZpc3VhbCBTdHVkaW8gMjAwOAorICAgICAgIyBDb25kaXRpb25hbCBleHByZXNzaW9u
IGlzIGNvbnN0YW50LgorICAgICAgIyBXaGVuIGNvbXBpbGluZyB3aXRoIC9XNCwgd2UgZ2V0IHNl
dmVyYWwgaW5zdGFuY2VzIG9mIEM0MTI3CisgICAgICAjIChDb25kaXRpb25hbCBleHByZXNzaW9u
IGlzIGNvbnN0YW50KS4gSW4gb3VyIGNvZGUsIHdlIGRpc2FibGUgdGhhdAorICAgICAgIyB3YXJu
aW5nIG9uIGEgY2FzZS1ieS1jYXNlIGJhc2lzLiBIb3dldmVyLCBvbiBWaXN1YWwgU3R1ZGlvIDIw
MDUsCisgICAgICAjIHRoZSB3YXJuaW5nIGZpcmVzIG9uIHN0ZDo6bGlzdC4gVGhlcmVmb3JlIG9u
IHRoYXQgY29tcGlsZXIgYW5kIGVhcmxpZXIsCisgICAgICAjIHdlIGRpc2FibGUgdGhlIHdhcm5p
bmcgcHJvamVjdC13aWRlLgorICAgICAgc2V0KGN4eF9iYXNlX2ZsYWdzICIke2N4eF9iYXNlX2Zs
YWdzfSAtd2Q0MTI3IikKKyAgICBlbmRpZigpCisgICAgaWYgKE5PVCAoTVNWQ19WRVJTSU9OIExF
U1MgMTcwMCkpICAjIDE3MDAgaXMgVmlzdWFsIFN0dWRpbyAyMDEyLgorICAgICAgIyBTdXBwcmVz
cyAidW5yZWFjaGFibGUgY29kZSIgd2FybmluZyBvbiBWUyAyMDEyIGFuZCBsYXRlci4KKyAgICAg
ICMgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zMjMyNjY5IGV4cGxhaW5zIHRo
ZSBpc3N1ZS4KKyAgICAgIHNldChjeHhfYmFzZV9mbGFncyAiJHtjeHhfYmFzZV9mbGFnc30gLXdk
NDcwMiIpCisgICAgZW5kaWYoKQorICAgIGlmIChOT1QgKE1TVkNfVkVSU0lPTiBHUkVBVEVSIDE5
MDApKSAgIyAxOTAwIGlzIFZpc3VhbCBTdHVkaW8gMjAxNQorICAgICAgIyBCaWdPYmogcmVxdWly
ZWQgZm9yIHRlc3RzLgorICAgICAgc2V0KGN4eF9iYXNlX2ZsYWdzICIke2N4eF9iYXNlX2ZsYWdz
fSAtYmlnb2JqIikKKyAgICBlbmRpZigpCisKKyAgICBzZXQoY3h4X2Jhc2VfZmxhZ3MgIiR7Y3h4
X2Jhc2VfZmxhZ3N9IC1EX1VOSUNPREUgLURVTklDT0RFIC1EV0lOMzIgLURfV0lOMzIiKQorICAg
IHNldChjeHhfYmFzZV9mbGFncyAiJHtjeHhfYmFzZV9mbGFnc30gLURTVFJJQ1QgLURXSU4zMl9M
RUFOX0FORF9NRUFOIikKKyAgICBzZXQoY3h4X2V4Y2VwdGlvbl9mbGFncyAiLUVIc2MgLURfSEFT
X0VYQ0VQVElPTlM9MSIpCisgICAgc2V0KGN4eF9ub19leGNlcHRpb25fZmxhZ3MgIi1EX0hBU19F
WENFUFRJT05TPTAiKQorICAgIHNldChjeHhfbm9fcnR0aV9mbGFncyAiLUdSLSIpCisgIGVsc2Vp
ZiAoQ01BS0VfQ09NUElMRVJfSVNfR05VQ1hYKQorICAgIHNldChjeHhfYmFzZV9mbGFncyAiLVdh
bGwgLVdzaGFkb3ciKQorICAgIHNldChjeHhfZXhjZXB0aW9uX2ZsYWdzICItZmV4Y2VwdGlvbnMi
KQorICAgIHNldChjeHhfbm9fZXhjZXB0aW9uX2ZsYWdzICItZm5vLWV4Y2VwdGlvbnMiKQorICAg
ICMgVW50aWwgdmVyc2lvbiA0LjMuMiwgR0NDIGRvZXNuJ3QgZGVmaW5lIGEgbWFjcm8gdG8gaW5k
aWNhdGUKKyAgICAjIHdoZXRoZXIgUlRUSSBpcyBlbmFibGVkLiAgVGhlcmVmb3JlIHdlIGRlZmlu
ZSBHVEVTVF9IQVNfUlRUSQorICAgICMgZXhwbGljaXRseS4KKyAgICBzZXQoY3h4X25vX3J0dGlf
ZmxhZ3MgIi1mbm8tcnR0aSAtREdURVNUX0hBU19SVFRJPTAiKQorICAgIHNldChjeHhfc3RyaWN0
X2ZsYWdzCisgICAgICAiLVdleHRyYSAtV25vLXVudXNlZC1wYXJhbWV0ZXIgLVduby1taXNzaW5n
LWZpZWxkLWluaXRpYWxpemVycyIpCisgIGVsc2VpZiAoQ01BS0VfQ1hYX0NPTVBJTEVSX0lEIFNU
UkVRVUFMICJTdW5Qcm8iKQorICAgIHNldChjeHhfZXhjZXB0aW9uX2ZsYWdzICItZmVhdHVyZXM9
ZXhjZXB0IikKKyAgICAjIFN1biBQcm8gZG9lc24ndCBwcm92aWRlIG1hY3JvcyB0byBpbmRpY2F0
ZSB3aGV0aGVyIGV4Y2VwdGlvbnMgYW5kCisgICAgIyBSVFRJIGFyZSBlbmFibGVkLCBzbyB3ZSBk
ZWZpbmUgR1RFU1RfSEFTXyogZXhwbGljaXRseS4KKyAgICBzZXQoY3h4X25vX2V4Y2VwdGlvbl9m
bGFncyAiLWZlYXR1cmVzPW5vJWV4Y2VwdCAtREdURVNUX0hBU19FWENFUFRJT05TPTAiKQorICAg
IHNldChjeHhfbm9fcnR0aV9mbGFncyAiLWZlYXR1cmVzPW5vJXJ0dGkgLURHVEVTVF9IQVNfUlRU
ST0wIikKKyAgZWxzZWlmIChDTUFLRV9DWFhfQ09NUElMRVJfSUQgU1RSRVFVQUwgIlZpc3VhbEFn
ZSIgT1IKKyAgICAgIENNQUtFX0NYWF9DT01QSUxFUl9JRCBTVFJFUVVBTCAiWEwiKQorICAgICMg
Q01ha2UgMi44IGNoYW5nZXMgVmlzdWFsIEFnZSdzIGNvbXBpbGVyIElEIHRvICJYTCIuCisgICAg
c2V0KGN4eF9leGNlcHRpb25fZmxhZ3MgIi1xZWgiKQorICAgIHNldChjeHhfbm9fZXhjZXB0aW9u
X2ZsYWdzICItcW5vZWgiKQorICAgICMgVW50aWwgdmVyc2lvbiA5LjAsIFZpc3VhbCBBZ2UgZG9l
c24ndCBkZWZpbmUgYSBtYWNybyB0byBpbmRpY2F0ZQorICAgICMgd2hldGhlciBSVFRJIGlzIGVu
YWJsZWQuICBUaGVyZWZvcmUgd2UgZGVmaW5lIEdURVNUX0hBU19SVFRJCisgICAgIyBleHBsaWNp
dGx5LgorICAgIHNldChjeHhfbm9fcnR0aV9mbGFncyAiLXFub3J0dGkgLURHVEVTVF9IQVNfUlRU
ST0wIikKKyAgZWxzZWlmIChDTUFLRV9DWFhfQ09NUElMRVJfSUQgU1RSRVFVQUwgIkhQIikKKyAg
ICBzZXQoY3h4X2Jhc2VfZmxhZ3MgIi1BQSAtbXQiKQorICAgIHNldChjeHhfZXhjZXB0aW9uX2Zs
YWdzICItREdURVNUX0hBU19FWENFUFRJT05TPTEiKQorICAgIHNldChjeHhfbm9fZXhjZXB0aW9u
X2ZsYWdzICIrbm9laCAtREdURVNUX0hBU19FWENFUFRJT05TPTAiKQorICAgICMgUlRUSSBjYW4g
bm90IGJlIGRpc2FibGVkIGluIEhQIGFDQyBjb21waWxlci4KKyAgICBzZXQoY3h4X25vX3J0dGlf
ZmxhZ3MgIiIpCisgIGVuZGlmKCkKKworICBpZiAoQ01BS0VfVVNFX1BUSFJFQURTX0lOSVQpICAj
IFRoZSBwdGhyZWFkcyBsaWJyYXJ5IGlzIGF2YWlsYWJsZSBhbmQgYWxsb3dlZC4KKyAgICBzZXQo
Y3h4X2Jhc2VfZmxhZ3MgIiR7Y3h4X2Jhc2VfZmxhZ3N9IC1ER1RFU1RfSEFTX1BUSFJFQUQ9MSIp
CisgIGVsc2UoKQorICAgIHNldChjeHhfYmFzZV9mbGFncyAiJHtjeHhfYmFzZV9mbGFnc30gLURH
VEVTVF9IQVNfUFRIUkVBRD0wIikKKyAgZW5kaWYoKQorCisgICMgRm9yIGJ1aWxkaW5nIGd0ZXN0
J3Mgb3duIHRlc3RzIGFuZCBzYW1wbGVzLgorICBzZXQoY3h4X2V4Y2VwdGlvbiAiJHtDTUFLRV9D
WFhfRkxBR1N9ICR7Y3h4X2Jhc2VfZmxhZ3N9ICR7Y3h4X2V4Y2VwdGlvbl9mbGFnc30iKQorICBz
ZXQoY3h4X25vX2V4Y2VwdGlvbgorICAgICIke0NNQUtFX0NYWF9GTEFHU30gJHtjeHhfYmFzZV9m
bGFnc30gJHtjeHhfbm9fZXhjZXB0aW9uX2ZsYWdzfSIpCisgIHNldChjeHhfZGVmYXVsdCAiJHtj
eHhfZXhjZXB0aW9ufSIpCisgIHNldChjeHhfbm9fcnR0aSAiJHtjeHhfZGVmYXVsdH0gJHtjeHhf
bm9fcnR0aV9mbGFnc30iKQorICBzZXQoY3h4X3VzZV9vd25fdHVwbGUgIiR7Y3h4X2RlZmF1bHR9
IC1ER1RFU1RfVVNFX09XTl9UUjFfVFVQTEU9MSIpCisKKyAgIyBGb3IgYnVpbGRpbmcgdGhlIGd0
ZXN0IGxpYnJhcmllcy4KKyAgc2V0KGN4eF9zdHJpY3QgIiR7Y3h4X2RlZmF1bHR9ICR7Y3h4X3N0
cmljdF9mbGFnc30iKQorZW5kbWFjcm8oKQorCisjIERlZmluZXMgdGhlIGd0ZXN0ICYgZ3Rlc3Rf
bWFpbiBsaWJyYXJpZXMuICBVc2VyIHRlc3RzIHNob3VsZCBsaW5rCisjIHdpdGggb25lIG9mIHRo
ZW0uCitmdW5jdGlvbihjeHhfbGlicmFyeV93aXRoX3R5cGUgbmFtZSB0eXBlIGN4eF9mbGFncykK
KyAgIyB0eXBlIGNhbiBiZSBlaXRoZXIgU1RBVElDIG9yIFNIQVJFRCB0byBkZW5vdGUgYSBzdGF0
aWMgb3Igc2hhcmVkIGxpYnJhcnkuCisgICMgQVJHTiByZWZlcnMgdG8gYWRkaXRpb25hbCBhcmd1
bWVudHMgYWZ0ZXIgJ2N4eF9mbGFncycuCisgIGFkZF9saWJyYXJ5KCR7bmFtZX0gJHt0eXBlfSAk
e0FSR059KQorICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoJHtuYW1lfQorICAgIFBST1BFUlRJRVMK
KyAgICBDT01QSUxFX0ZMQUdTICIke2N4eF9mbGFnc30iKQorICBpZiAoQlVJTERfU0hBUkVEX0xJ
QlMgT1IgdHlwZSBTVFJFUVVBTCAiU0hBUkVEIikKKyAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMo
JHtuYW1lfQorICAgICAgUFJPUEVSVElFUworICAgICAgQ09NUElMRV9ERUZJTklUSU9OUyAiR1RF
U1RfQ1JFQVRFX1NIQVJFRF9MSUJSQVJZPTEiKQorICBlbmRpZigpCisgIGlmIChDTUFLRV9VU0Vf
UFRIUkVBRFNfSU5JVCkKKyAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoJHtuYW1lfSAke0NNQUtF
X1RIUkVBRF9MSUJTX0lOSVR9KQorICBlbmRpZigpCitlbmRmdW5jdGlvbigpCisKKyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIworIworIyBIZWxwZXIgZnVuY3Rpb25zIGZvciBjcmVhdGluZyBidWlsZCB0YXJnZXRz
LgorCitmdW5jdGlvbihjeHhfc2hhcmVkX2xpYnJhcnkgbmFtZSBjeHhfZmxhZ3MpCisgIGN4eF9s
aWJyYXJ5X3dpdGhfdHlwZSgke25hbWV9IFNIQVJFRCAiJHtjeHhfZmxhZ3N9IiAke0FSR059KQor
ZW5kZnVuY3Rpb24oKQorCitmdW5jdGlvbihjeHhfbGlicmFyeSBuYW1lIGN4eF9mbGFncykKKyAg
Y3h4X2xpYnJhcnlfd2l0aF90eXBlKCR7bmFtZX0gIiIgIiR7Y3h4X2ZsYWdzfSIgJHtBUkdOfSkK
K2VuZGZ1bmN0aW9uKCkKKworIyBjeHhfZXhlY3V0YWJsZV93aXRoX2ZsYWdzKG5hbWUgY3h4X2Zs
YWdzIGxpYnMgc3Jjcy4uLikKKyMKKyMgY3JlYXRlcyBhIG5hbWVkIEMrKyBleGVjdXRhYmxlIHRo
YXQgZGVwZW5kcyBvbiB0aGUgZ2l2ZW4gbGlicmFyaWVzIGFuZAorIyBpcyBidWlsdCBmcm9tIHRo
ZSBnaXZlbiBzb3VyY2UgZmlsZXMgd2l0aCB0aGUgZ2l2ZW4gY29tcGlsZXIgZmxhZ3MuCitmdW5j
dGlvbihjeHhfZXhlY3V0YWJsZV93aXRoX2ZsYWdzIG5hbWUgY3h4X2ZsYWdzIGxpYnMpCisgIGFk
ZF9leGVjdXRhYmxlKCR7bmFtZX0gJHtBUkdOfSkKKyAgaWYgKGN4eF9mbGFncykKKyAgICBzZXRf
dGFyZ2V0X3Byb3BlcnRpZXMoJHtuYW1lfQorICAgICAgUFJPUEVSVElFUworICAgICAgQ09NUElM
RV9GTEFHUyAiJHtjeHhfZmxhZ3N9IikKKyAgZW5kaWYoKQorICBpZiAoQlVJTERfU0hBUkVEX0xJ
QlMpCisgICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKCR7bmFtZX0KKyAgICAgIFBST1BFUlRJRVMK
KyAgICAgIENPTVBJTEVfREVGSU5JVElPTlMgIkdURVNUX0xJTktFRF9BU19TSEFSRURfTElCUkFS
WT0xIikKKyAgZW5kaWYoKQorICAjIFRvIHN1cHBvcnQgbWl4aW5nIGxpbmtpbmcgaW4gc3RhdGlj
IGFuZCBkeW5hbWljIGxpYnJhcmllcywgbGluayBlYWNoCisgICMgbGlicmFyeSBpbiB3aXRoIGFu
IGV4dHJhIGNhbGwgdG8gdGFyZ2V0X2xpbmtfbGlicmFyaWVzLgorICBmb3JlYWNoIChsaWIgIiR7
bGlic30iKQorICAgIHRhcmdldF9saW5rX2xpYnJhcmllcygke25hbWV9ICR7bGlifSkKKyAgZW5k
Zm9yZWFjaCgpCitlbmRmdW5jdGlvbigpCisKKyMgY3h4X2V4ZWN1dGFibGUobmFtZSBkaXIgbGli
IHNyY3MuLi4pCisjCisjIGNyZWF0ZXMgYSBuYW1lZCB0YXJnZXQgdGhhdCBkZXBlbmRzIG9uIHRo
ZSBnaXZlbiBsaWJzIGFuZCBpcyBidWlsdAorIyBmcm9tIHRoZSBnaXZlbiBzb3VyY2UgZmlsZXMu
ICBkaXIvbmFtZS5jYyBpcyBpbXBsaWNpdGx5IGluY2x1ZGVkIGluCisjIHRoZSBzb3VyY2UgZmls
ZSBsaXN0LgorZnVuY3Rpb24oY3h4X2V4ZWN1dGFibGUgbmFtZSBkaXIgbGlicykKKyAgY3h4X2V4
ZWN1dGFibGVfd2l0aF9mbGFncygKKyAgICAke25hbWV9ICIke2N4eF9kZWZhdWx0fSIgIiR7bGli
c30iICIke2Rpcn0vJHtuYW1lfS5jYyIgJHtBUkdOfSkKK2VuZGZ1bmN0aW9uKCkKKworIyBTZXRz
IFBZVEhPTklOVEVSUF9GT1VORCBhbmQgUFlUSE9OX0VYRUNVVEFCTEUuCitmaW5kX3BhY2thZ2Uo
UHl0aG9uSW50ZXJwKQorCisjIGN4eF90ZXN0X3dpdGhfZmxhZ3MobmFtZSBjeHhfZmxhZ3MgbGli
cyBzcmNzLi4uKQorIworIyBjcmVhdGVzIGEgbmFtZWQgQysrIHRlc3QgdGhhdCBkZXBlbmRzIG9u
IHRoZSBnaXZlbiBsaWJzIGFuZCBpcyBidWlsdAorIyBmcm9tIHRoZSBnaXZlbiBzb3VyY2UgZmls
ZXMgd2l0aCB0aGUgZ2l2ZW4gY29tcGlsZXIgZmxhZ3MuCitmdW5jdGlvbihjeHhfdGVzdF93aXRo
X2ZsYWdzIG5hbWUgY3h4X2ZsYWdzIGxpYnMpCisgIGN4eF9leGVjdXRhYmxlX3dpdGhfZmxhZ3Mo
JHtuYW1lfSAiJHtjeHhfZmxhZ3N9IiAiJHtsaWJzfSIgJHtBUkdOfSkKKyAgYWRkX3Rlc3QoJHtu
YW1lfSAke25hbWV9KQorZW5kZnVuY3Rpb24oKQorCisjIGN4eF90ZXN0KG5hbWUgbGlicyBzcmNz
Li4uKQorIworIyBjcmVhdGVzIGEgbmFtZWQgdGVzdCB0YXJnZXQgdGhhdCBkZXBlbmRzIG9uIHRo
ZSBnaXZlbiBsaWJzIGFuZCBpcworIyBidWlsdCBmcm9tIHRoZSBnaXZlbiBzb3VyY2UgZmlsZXMu
ICBVbmxpa2UgY3h4X3Rlc3Rfd2l0aF9mbGFncywKKyMgdGVzdC9uYW1lLmNjIGlzIGFscmVhZHkg
aW1wbGljaXRseSBpbmNsdWRlZCBpbiB0aGUgc291cmNlIGZpbGUgbGlzdC4KK2Z1bmN0aW9uKGN4
eF90ZXN0IG5hbWUgbGlicykKKyAgY3h4X3Rlc3Rfd2l0aF9mbGFncygiJHtuYW1lfSIgIiR7Y3h4
X2RlZmF1bHR9IiAiJHtsaWJzfSIKKyAgICAidGVzdC8ke25hbWV9LmNjIiAke0FSR059KQorZW5k
ZnVuY3Rpb24oKQorCisjIHB5X3Rlc3QobmFtZSkKKyMKKyMgY3JlYXRlcyBhIFB5dGhvbiB0ZXN0
IHdpdGggdGhlIGdpdmVuIG5hbWUgd2hvc2UgbWFpbiBtb2R1bGUgaXMgaW4KKyMgdGVzdC9uYW1l
LnB5LiAgSXQgZG9lcyBub3RoaW5nIGlmIFB5dGhvbiBpcyBub3QgaW5zdGFsbGVkLgorZnVuY3Rp
b24ocHlfdGVzdCBuYW1lKQorICAjIFdlIGFyZSBub3Qgc3VwcG9ydGluZyBQeXRob24gdGVzdHMg
b24gTGludXggeWV0IGFzIHRoZXkgY29uc2lkZXIKKyAgIyBhbGwgTGludXggZW52aXJvbm1lbnRz
IHRvIGJlIGdvb2dsZTMgYW5kIHRyeSB0byB1c2UgZ29vZ2xlMyBmZWF0dXJlcy4KKyAgaWYgKFBZ
VEhPTklOVEVSUF9GT1VORCkKKyAgICAjICR7Q01BS0VfQklOQVJZX0RJUn0gaXMga25vd24gYXQg
Y29uZmlndXJhdGlvbiB0aW1lLCBzbyB3ZSBjYW4KKyAgICAjIGRpcmVjdGx5IGJpbmQgaXQgZnJv
bSBjbWFrZS4gJHtDVEVTVF9DT05GSUdVUkFUSU9OX1RZUEV9IGlzIGtub3duCisgICAgIyBvbmx5
IGF0IGN0ZXN0IHJ1bnRpbWUgKGJ5IGNhbGxpbmcgY3Rlc3QgLWMgPENvbmZpZ3VyYXRpb24+KSwg
c28KKyAgICAjIHdlIGhhdmUgdG8gZXNjYXBlICQgdG8gZGVsYXkgdmFyaWFibGUgc3Vic3RpdHV0
aW9uIGhlcmUuCisgICAgaWYgKCR7Q01BS0VfTUFKT1JfVkVSU0lPTn0uJHtDTUFLRV9NSU5PUl9W
RVJTSU9OfSBHUkVBVEVSIDMuMSkKKyAgICAgIGFkZF90ZXN0KAorICAgICAgICBOQU1FICR7bmFt
ZX0KKyAgICAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0NNQUtFX0NVUlJFTlRf
U09VUkNFX0RJUn0vdGVzdC8ke25hbWV9LnB5CisgICAgICAgICAgICAtLWJ1aWxkX2Rpcj0ke0NN
QUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vJDxDT05GSUdVUkFUSU9OPikKKyAgICBlbHNlICgke0NN
QUtFX01BSk9SX1ZFUlNJT059LiR7Q01BS0VfTUlOT1JfVkVSU0lPTn0gR1JFQVRFUiAzLjEpCisg
ICAgICBhZGRfdGVzdCgKKyAgICAgICAgJHtuYW1lfQorICAgICAgICAke1BZVEhPTl9FWEVDVVRB
QkxFfSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vdGVzdC8ke25hbWV9LnB5CisgICAgICAg
ICAgLS1idWlsZF9kaXI9JHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L1wke0NURVNUX0NPTkZJ
R1VSQVRJT05fVFlQRX0pCisgICAgZW5kaWYgKCR7Q01BS0VfTUFKT1JfVkVSU0lPTn0uJHtDTUFL
RV9NSU5PUl9WRVJTSU9OfSBHUkVBVEVSIDMuMSkKKyAgZW5kaWYoKQorZW5kZnVuY3Rpb24oKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvY29kZWdlYXIvZ3Rlc3QuY2Jwcm9qIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRl
c3QvY29kZWdlYXIvZ3Rlc3QuY2Jwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1YzMwNTRiODUxZGFiNGQ4ZmU2
OGM1NjNkOTU1MjY2ODMxODI0YzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9jb2Rl
Z2Vhci9ndGVzdC5jYnByb2oKQEAgLTAsMCArMSwxMzggQEAKK++7vzw/eG1sIHZlcnNpb249IjEu
MCIgZW5jb2Rpbmc9InV0Zi04Ij8+DQorPFByb2plY3QgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1p
Y3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+DQorICA8UHJvcGVydHlHcm91cD4N
CisgICAgPFByb2plY3RHdWlkPntiY2EzN2E3Mi01YjA3LTQ2Y2YtYjQ0ZS04OWY4ZTA2NDUxYTJ9
PC9Qcm9qZWN0R3VpZD4NCisgICAgPENvbmZpZyBDb25kaXRpb249IickKENvbmZpZyknPT0nJyI+
UmVsZWFzZTwvQ29uZmlnPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAg
Q29uZGl0aW9uPSInJChDb25maWcpJz09J0Jhc2UnIG9yICckKEJhc2UpJyE9JyciPg0KKyAgICA8
QmFzZT50cnVlPC9CYXNlPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAg
Q29uZGl0aW9uPSInJChDb25maWcpJz09J0RlYnVnJyBvciAnJChDZmdfMSknIT0nJyI+DQorICAg
IDxCYXNlPnRydWU8L0Jhc2U+DQorICAgIDxDZmdfMT50cnVlPC9DZmdfMT4NCisgICAgPENmZ1Bh
cmVudD5CYXNlPC9DZmdQYXJlbnQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlH
cm91cCBDb25kaXRpb249IickKENvbmZpZyknPT0nUmVsZWFzZScgb3IgJyQoQ2ZnXzIpJyE9Jyci
Pg0KKyAgICA8QmFzZT50cnVlPC9CYXNlPg0KKyAgICA8Q2ZnXzI+dHJ1ZTwvQ2ZnXzI+DQorICAg
IDxDZmdQYXJlbnQ+QmFzZTwvQ2ZnUGFyZW50Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFBy
b3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChCYXNlKSchPScnIj4NCisgICAgPEJDQ19PcHRpbWl6
ZUZvclNwZWVkPnRydWU8L0JDQ19PcHRpbWl6ZUZvclNwZWVkPg0KKyAgICA8T3V0cHV0RXh0Pmxp
YjwvT3V0cHV0RXh0Pg0KKyAgICA8RENDX0NCdWlsZGVyT3V0cHV0PkpQSE5FPC9EQ0NfQ0J1aWxk
ZXJPdXRwdXQ+DQorICAgIDxEZWZpbmVzPk5PX1NUUklDVDwvRGVmaW5lcz4NCisgICAgPER5bmFt
aWNSVEw+dHJ1ZTwvRHluYW1pY1JUTD4NCisgICAgPFVzZVBhY2thZ2VzPnRydWU8L1VzZVBhY2th
Z2VzPg0KKyAgICA8UHJvamVjdFR5cGU+Q3BwU3RhdGljTGlicmFyeTwvUHJvamVjdFR5cGU+DQor
ICAgIDxCQ0NfQ1BQQ29tcGlsZUFsd2F5cz50cnVlPC9CQ0NfQ1BQQ29tcGlsZUFsd2F5cz4NCisg
ICAgPFBhY2thZ2VJbXBvcnRzPnJ0bC5icGk7dmNsLmJwaTtiY2JpZS5icGk7dmNseC5icGk7dmNs
YWN0bmJhbmQuYnBpO3htbHJ0bC5icGk7YmNic21wLmJwaTtkYnJ0bC5icGk7dmNsZGIuYnBpO2Jk
ZXJ0bC5icGk7dmNsZGJ4LmJwaTtkc25hcC5icGk7ZHNuYXBjb24uYnBpO3ZjbGliLmJwaTtpYnhw
cmVzcy5icGk7YWRvcnRsLmJwaTtkYnhjZHMuYnBpO2RiZXhwcmVzcy5icGk7RGJ4Q29tbW9uRHJp
dmVyLmJwaTt3ZWJzbmFwLmJwaTt2Y2xpZS5icGk7d2ViZHNuYXAuYnBpO2luZXQuYnBpO2luZXRk
YmJkZS5icGk7aW5ldGRieHByZXNzLmJwaTtzb2FwcnRsLmJwaTtSYXZlNzVWQ0wuYnBpO3RlZVVJ
LmJwaTt0ZWUuYnBpO3RlZWRiLmJwaTtJbmR5Q29yZS5icGk7SW5keVN5c3RlbS5icGk7SW5keVBy
b3RvY29scy5icGk7SW50cmF3ZWJEQl85MF8xMDAuYnBpO0ludHJhd2ViXzkwXzEwMC5icGk7ZGNs
WmlwRm9yZ2VkMTEuYnBpO3ZjbFppcEZvcmdlZDExLmJwaTtHUjMyX0JEUzIwMDYuYnBpO0dSMzJf
RFNHTl9CRFMyMDA2LmJwaTtKY2wuYnBpO0pjbFZjbC5icGk7SnZDb3JlRDExUi5icGk7SnZTeXN0
ZW1EMTFSLmJwaTtKdlN0ZEN0cmxzRDExUi5icGk7SnZBcHBGcm1EMTFSLmJwaTtKdkJhbmRzRDEx
Ui5icGk7SnZEQkQxMVIuYnBpO0p2RGxnc0QxMVIuYnBpO0p2QkRFRDExUi5icGk7SnZDbXBEMTFS
LmJwaTtKdkNyeXB0RDExUi5icGk7SnZDdHJsc0QxMVIuYnBpO0p2Q3VzdG9tRDExUi5icGk7SnZE
b2NraW5nRDExUi5icGk7SnZEb3ROZXRDdHJsc0QxMVIuYnBpO0p2RURJRDExUi5icGk7SnZHbG9i
dXNEMTFSLmJwaTtKdkhNSUQxMVIuYnBpO0p2SW50ZXJwcmV0ZXJEMTFSLmJwaTtKdkphbnNEMTFS
LmJwaTtKdk1hbmFnZWRUaHJlYWRzRDExUi5icGk7SnZNTUQxMVIuYnBpO0p2TmV0RDExUi5icGk7
SnZQYWdlQ29tcHNEMTFSLmJwaTtKdlBsdWdpbkQxMVIuYnBpO0p2UHJpbnRQcmV2aWV3RDExUi5i
cGk7SnZSdW50aW1lRGVzaWduRDExUi5icGk7SnZUaW1lRnJhbWV3b3JrRDExUi5icGk7SnZWYWxp
ZGF0b3JzRDExUi5icGk7SnZXaXphcmREMTFSLmJwaTtKdlhQQ3RybHNEMTFSLmJwaTtWY2xTbXAu
YnBpO0NFeGNlcHRpb25FeHBlcnQxMS5icGk8L1BhY2thZ2VJbXBvcnRzPg0KKyAgICA8QkNDX3dw
YXI+ZmFsc2U8L0JDQ193cGFyPg0KKyAgICA8SW5jbHVkZVBhdGg+JChCRFMpXGluY2x1ZGU7JChC
RFMpXGluY2x1ZGVcZGlua3Vtd2FyZTskKEJEUylcaW5jbHVkZVx2Y2w7Li5cc3JjOy4uXGluY2x1
ZGU7Li48L0luY2x1ZGVQYXRoPg0KKyAgICA8QWxsUGFja2FnZUxpYnM+cnRsLmxpYjt2Y2wubGli
PC9BbGxQYWNrYWdlTGlicz4NCisgICAgPFRMSUJfUGFnZVNpemU+MzI8L1RMSUJfUGFnZVNpemU+
DQorICAgIDxJTElOS19MaWJyYXJ5UGF0aD4kKEJEUylcbGliOyQoQkRTKVxsaWJcb2JqOyQoQkRT
KVxsaWJccHNkazwvSUxJTktfTGlicmFyeVBhdGg+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8
UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENmZ18xKSchPScnIj4NCisgICAgPEJDQ19PcHRp
bWl6ZUZvclNwZWVkPmZhbHNlPC9CQ0NfT3B0aW1pemVGb3JTcGVlZD4NCisgICAgPERDQ19PcHRp
bWl6ZT5mYWxzZTwvRENDX09wdGltaXplPg0KKyAgICA8RENDX0RlYnVnSW5mb0luRXhlPnRydWU8
L0RDQ19EZWJ1Z0luZm9JbkV4ZT4NCisgICAgPERlZmluZXM+X0RFQlVHOyQoRGVmaW5lcyk8L0Rl
ZmluZXM+DQorICAgIDxJTElOS19GdWxsRGVidWdJbmZvPnRydWU8L0lMSU5LX0Z1bGxEZWJ1Z0lu
Zm8+DQorICAgIDxCQ0NfSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+ZmFsc2U8L0JDQ19JbmxpbmVG
dW5jdGlvbkV4cGFuc2lvbj4NCisgICAgPElMSU5LX0Rpc2FibGVJbmNyZW1lbnRhbExpbmtpbmc+
dHJ1ZTwvSUxJTktfRGlzYWJsZUluY3JlbWVudGFsTGlua2luZz4NCisgICAgPEJDQ19Vc2VSZWdp
c3RlclZhcmlhYmxlcz5Ob25lPC9CQ0NfVXNlUmVnaXN0ZXJWYXJpYWJsZXM+DQorICAgIDxEQ0Nf
RGVmaW5lPkRFQlVHPC9EQ0NfRGVmaW5lPg0KKyAgICA8QkNDX0RlYnVnTGluZU51bWJlcnM+dHJ1
ZTwvQkNDX0RlYnVnTGluZU51bWJlcnM+DQorICAgIDxJbnRlcm1lZGlhdGVPdXRwdXREaXI+RGVi
dWc8L0ludGVybWVkaWF0ZU91dHB1dERpcj4NCisgICAgPFRBU01fRGlzcGxheVNvdXJjZUxpbmVz
PnRydWU8L1RBU01fRGlzcGxheVNvdXJjZUxpbmVzPg0KKyAgICA8QkNDX1N0YWNrRnJhbWVzPnRy
dWU8L0JDQ19TdGFja0ZyYW1lcz4NCisgICAgPEJDQ19EaXNhYmxlT3B0aW1pemF0aW9ucz50cnVl
PC9CQ0NfRGlzYWJsZU9wdGltaXphdGlvbnM+DQorICAgIDxJTElOS19MaWJyYXJ5UGF0aD4kKEJE
UylcbGliXGRlYnVnOyQoSUxJTktfTGlicmFyeVBhdGgpPC9JTElOS19MaWJyYXJ5UGF0aD4NCisg
ICAgPFRBU01fRGVidWdnaW5nPkZ1bGw8L1RBU01fRGVidWdnaW5nPg0KKyAgICA8QkNDX1NvdXJj
ZURlYnVnZ2luZ09uPnRydWU8L0JDQ19Tb3VyY2VEZWJ1Z2dpbmdPbj4NCisgIDwvUHJvcGVydHlH
cm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ2ZnXzIpJyE9JyciPg0KKyAg
ICA8RGVmaW5lcz5OREVCVUc7JChEZWZpbmVzKTwvRGVmaW5lcz4NCisgICAgPEludGVybWVkaWF0
ZU91dHB1dERpcj5SZWxlYXNlPC9JbnRlcm1lZGlhdGVPdXRwdXREaXI+DQorICAgIDxJTElOS19M
aWJyYXJ5UGF0aD4kKEJEUylcbGliXHJlbGVhc2U7JChJTElOS19MaWJyYXJ5UGF0aCk8L0lMSU5L
X0xpYnJhcnlQYXRoPg0KKyAgICA8VEFTTV9EZWJ1Z2dpbmc+Tm9uZTwvVEFTTV9EZWJ1Z2dpbmc+
DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvamVjdEV4dGVuc2lvbnM+DQorICAgIDxCb3Js
YW5kLlBlcnNvbmFsaXR5PkNQbHVzUGx1c0J1aWxkZXIuUGVyc29uYWxpdHk8L0JvcmxhbmQuUGVy
c29uYWxpdHk+DQorICAgIDxCb3JsYW5kLlByb2plY3RUeXBlPkNwcFN0YXRpY0xpYnJhcnk8L0Jv
cmxhbmQuUHJvamVjdFR5cGU+DQorICAgIDxCb3JsYW5kUHJvamVjdD4NCis8Qm9ybGFuZFByb2pl
Y3Q+PENQbHVzUGx1c0J1aWxkZXIuUGVyc29uYWxpdHk+PFZlcnNpb25JbmZvPjxWZXJzaW9uSW5m
byBOYW1lPSJJbmNsdWRlVmVySW5mbyI+RmFsc2U8L1ZlcnNpb25JbmZvPjxWZXJzaW9uSW5mbyBO
YW1lPSJBdXRvSW5jQnVpbGQiPkZhbHNlPC9WZXJzaW9uSW5mbz48VmVyc2lvbkluZm8gTmFtZT0i
TWFqb3JWZXIiPjE8L1ZlcnNpb25JbmZvPjxWZXJzaW9uSW5mbyBOYW1lPSJNaW5vclZlciI+MDwv
VmVyc2lvbkluZm8+PFZlcnNpb25JbmZvIE5hbWU9IlJlbGVhc2UiPjA8L1ZlcnNpb25JbmZvPjxW
ZXJzaW9uSW5mbyBOYW1lPSJCdWlsZCI+MDwvVmVyc2lvbkluZm8+PFZlcnNpb25JbmZvIE5hbWU9
IkRlYnVnIj5GYWxzZTwvVmVyc2lvbkluZm8+PFZlcnNpb25JbmZvIE5hbWU9IlByZVJlbGVhc2Ui
PkZhbHNlPC9WZXJzaW9uSW5mbz48VmVyc2lvbkluZm8gTmFtZT0iU3BlY2lhbCI+RmFsc2U8L1Zl
cnNpb25JbmZvPjxWZXJzaW9uSW5mbyBOYW1lPSJQcml2YXRlIj5GYWxzZTwvVmVyc2lvbkluZm8+
PFZlcnNpb25JbmZvIE5hbWU9IkRMTCI+RmFsc2U8L1ZlcnNpb25JbmZvPjxWZXJzaW9uSW5mbyBO
YW1lPSJMb2NhbGUiPjEwMzM8L1ZlcnNpb25JbmZvPjxWZXJzaW9uSW5mbyBOYW1lPSJDb2RlUGFn
ZSI+MTI1MjwvVmVyc2lvbkluZm8+PC9WZXJzaW9uSW5mbz48VmVyc2lvbkluZm9LZXlzPjxWZXJz
aW9uSW5mb0tleXMgTmFtZT0iQ29tcGFueU5hbWUiPjwvVmVyc2lvbkluZm9LZXlzPjxWZXJzaW9u
SW5mb0tleXMgTmFtZT0iRmlsZURlc2NyaXB0aW9uIj48L1ZlcnNpb25JbmZvS2V5cz48VmVyc2lv
bkluZm9LZXlzIE5hbWU9IkZpbGVWZXJzaW9uIj4xLjAuMC4wPC9WZXJzaW9uSW5mb0tleXM+PFZl
cnNpb25JbmZvS2V5cyBOYW1lPSJJbnRlcm5hbE5hbWUiPjwvVmVyc2lvbkluZm9LZXlzPjxWZXJz
aW9uSW5mb0tleXMgTmFtZT0iTGVnYWxDb3B5cmlnaHQiPjwvVmVyc2lvbkluZm9LZXlzPjxWZXJz
aW9uSW5mb0tleXMgTmFtZT0iTGVnYWxUcmFkZW1hcmtzIj48L1ZlcnNpb25JbmZvS2V5cz48VmVy
c2lvbkluZm9LZXlzIE5hbWU9Ik9yaWdpbmFsRmlsZW5hbWUiPjwvVmVyc2lvbkluZm9LZXlzPjxW
ZXJzaW9uSW5mb0tleXMgTmFtZT0iUHJvZHVjdE5hbWUiPjwvVmVyc2lvbkluZm9LZXlzPjxWZXJz
aW9uSW5mb0tleXMgTmFtZT0iUHJvZHVjdFZlcnNpb24iPjEuMC4wLjA8L1ZlcnNpb25JbmZvS2V5
cz48VmVyc2lvbkluZm9LZXlzIE5hbWU9IkNvbW1lbnRzIj48L1ZlcnNpb25JbmZvS2V5cz48L1Zl
cnNpb25JbmZvS2V5cz48RGVidWdnaW5nPjxEZWJ1Z2dpbmcgTmFtZT0iRGVidWdTb3VyY2VEaXJz
Ij48L0RlYnVnZ2luZz48L0RlYnVnZ2luZz48UGFyYW1ldGVycz48UGFyYW1ldGVycyBOYW1lPSJS
dW5QYXJhbXMiPjwvUGFyYW1ldGVycz48UGFyYW1ldGVycyBOYW1lPSJMYXVuY2hlciI+PC9QYXJh
bWV0ZXJzPjxQYXJhbWV0ZXJzIE5hbWU9IlVzZUxhdW5jaGVyIj5GYWxzZTwvUGFyYW1ldGVycz48
UGFyYW1ldGVycyBOYW1lPSJEZWJ1Z0NXRCI+PC9QYXJhbWV0ZXJzPjxQYXJhbWV0ZXJzIE5hbWU9
Ikhvc3RBcHBsaWNhdGlvbiI+PC9QYXJhbWV0ZXJzPjxQYXJhbWV0ZXJzIE5hbWU9IlJlbW90ZUhv
c3QiPjwvUGFyYW1ldGVycz48UGFyYW1ldGVycyBOYW1lPSJSZW1vdGVQYXRoIj48L1BhcmFtZXRl
cnM+PFBhcmFtZXRlcnMgTmFtZT0iUmVtb3RlUGFyYW1zIj48L1BhcmFtZXRlcnM+PFBhcmFtZXRl
cnMgTmFtZT0iUmVtb3RlTGF1bmNoZXIiPjwvUGFyYW1ldGVycz48UGFyYW1ldGVycyBOYW1lPSJV
c2VSZW1vdGVMYXVuY2hlciI+RmFsc2U8L1BhcmFtZXRlcnM+PFBhcmFtZXRlcnMgTmFtZT0iUmVt
b3RlQ1dEIj48L1BhcmFtZXRlcnM+PFBhcmFtZXRlcnMgTmFtZT0iUmVtb3RlRGVidWciPkZhbHNl
PC9QYXJhbWV0ZXJzPjxQYXJhbWV0ZXJzIE5hbWU9IkRlYnVnIFN5bWJvbHMgU2VhcmNoIFBhdGgi
PjwvUGFyYW1ldGVycz48UGFyYW1ldGVycyBOYW1lPSJMb2FkQWxsU3ltYm9scyI+VHJ1ZTwvUGFy
YW1ldGVycz48UGFyYW1ldGVycyBOYW1lPSJMb2FkVW5zcGVjaWZpZWRTeW1ib2xzIj5GYWxzZTwv
UGFyYW1ldGVycz48L1BhcmFtZXRlcnM+PEV4Y2x1ZGVkX1BhY2thZ2VzPg0KKyAgICAgIA0KKyAg
ICAgIA0KKyAgICAgIDxFeGNsdWRlZF9QYWNrYWdlcyBOYW1lPSIkKEJEUylcYmluXGJjYm9mZmlj
ZTJrMTAwLmJwbCI+Q29kZUdlYXIgQysrQnVpbGRlciBPZmZpY2UgMjAwMCBTZXJ2ZXJzIFBhY2th
Z2U8L0V4Y2x1ZGVkX1BhY2thZ2VzPg0KKyAgICAgIDxFeGNsdWRlZF9QYWNrYWdlcyBOYW1lPSIk
KEJEUylcYmluXGJjYm9mZmljZXhwMTAwLmJwbCI+Q29kZUdlYXIgQysrQnVpbGRlciBPZmZpY2Ug
WFAgU2VydmVycyBQYWNrYWdlPC9FeGNsdWRlZF9QYWNrYWdlcz4NCisgICAgPC9FeGNsdWRlZF9Q
YWNrYWdlcz48TGlua2VyPjxMaW5rZXIgTmFtZT0iTGliUHJlZml4Ij48L0xpbmtlcj48TGlua2Vy
IE5hbWU9IkxpYlN1ZmZpeCI+PC9MaW5rZXI+PExpbmtlciBOYW1lPSJMaWJWZXJzaW9uIj48L0xp
bmtlcj48L0xpbmtlcj48UHJvamVjdFByb3BlcnRpZXM+PFByb2plY3RQcm9wZXJ0aWVzIE5hbWU9
IkF1dG9TaG93RGVwcyI+RmFsc2U8L1Byb2plY3RQcm9wZXJ0aWVzPjxQcm9qZWN0UHJvcGVydGll
cyBOYW1lPSJNYW5hZ2VQYXRocyI+VHJ1ZTwvUHJvamVjdFByb3BlcnRpZXM+PFByb2plY3RQcm9w
ZXJ0aWVzIE5hbWU9IlZlcmlmeVBhY2thZ2VzIj5UcnVlPC9Qcm9qZWN0UHJvcGVydGllcz48L1By
b2plY3RQcm9wZXJ0aWVzPjxIaXN0b3J5TGlzdHNfaGxJbmNsdWRlUGF0aD48SGlzdG9yeUxpc3Rz
X2hsSW5jbHVkZVBhdGggTmFtZT0iQ291bnQiPjM8L0hpc3RvcnlMaXN0c19obEluY2x1ZGVQYXRo
PjxIaXN0b3J5TGlzdHNfaGxJbmNsdWRlUGF0aCBOYW1lPSJJdGVtMCI+JChCRFMpXGluY2x1ZGU7
JChCRFMpXGluY2x1ZGVcZGlua3Vtd2FyZTskKEJEUylcaW5jbHVkZVx2Y2w7Li5cc3JjOy4uXGlu
Y2x1ZGU7Li48L0hpc3RvcnlMaXN0c19obEluY2x1ZGVQYXRoPjxIaXN0b3J5TGlzdHNfaGxJbmNs
dWRlUGF0aCBOYW1lPSJJdGVtMSI+JChCRFMpXGluY2x1ZGU7JChCRFMpXGluY2x1ZGVcZGlua3Vt
d2FyZTskKEJEUylcaW5jbHVkZVx2Y2w7Li5cc3JjOy4uXGluY2x1ZGU7Li48L0hpc3RvcnlMaXN0
c19obEluY2x1ZGVQYXRoPjxIaXN0b3J5TGlzdHNfaGxJbmNsdWRlUGF0aCBOYW1lPSJJdGVtMiI+
JChCRFMpXGluY2x1ZGU7JChCRFMpXGluY2x1ZGVcZGlua3Vtd2FyZTskKEJEUylcaW5jbHVkZVx2
Y2w7Li5cc3JjOy4uXHNyYzsuLlxpbmNsdWRlPC9IaXN0b3J5TGlzdHNfaGxJbmNsdWRlUGF0aD48
L0hpc3RvcnlMaXN0c19obEluY2x1ZGVQYXRoPjxIaXN0b3J5TGlzdHNfaGxJTElOS19MaWJyYXJ5
UGF0aD48SGlzdG9yeUxpc3RzX2hsSUxJTktfTGlicmFyeVBhdGggTmFtZT0iQ291bnQiPjE8L0hp
c3RvcnlMaXN0c19obElMSU5LX0xpYnJhcnlQYXRoPjxIaXN0b3J5TGlzdHNfaGxJTElOS19MaWJy
YXJ5UGF0aCBOYW1lPSJJdGVtMCI+JChCRFMpXGxpYjskKEJEUylcbGliXG9iajskKEJEUylcbGli
XHBzZGs8L0hpc3RvcnlMaXN0c19obElMSU5LX0xpYnJhcnlQYXRoPjwvSGlzdG9yeUxpc3RzX2hs
SUxJTktfTGlicmFyeVBhdGg+PEhpc3RvcnlMaXN0c19obERlZmluZXM+PEhpc3RvcnlMaXN0c19o
bERlZmluZXMgTmFtZT0iQ291bnQiPjE8L0hpc3RvcnlMaXN0c19obERlZmluZXM+PEhpc3RvcnlM
aXN0c19obERlZmluZXMgTmFtZT0iSXRlbTAiPk5PX1NUUklDVDwvSGlzdG9yeUxpc3RzX2hsRGVm
aW5lcz48L0hpc3RvcnlMaXN0c19obERlZmluZXM+PEhpc3RvcnlMaXN0c19obFRMSUJfUGFnZVNp
emU+PEhpc3RvcnlMaXN0c19obFRMSUJfUGFnZVNpemUgTmFtZT0iQ291bnQiPjE8L0hpc3RvcnlM
aXN0c19obFRMSUJfUGFnZVNpemU+PEhpc3RvcnlMaXN0c19obFRMSUJfUGFnZVNpemUgTmFtZT0i
SXRlbTAiPjMyPC9IaXN0b3J5TGlzdHNfaGxUTElCX1BhZ2VTaXplPjxIaXN0b3J5TGlzdHNfaGxU
TElCX1BhZ2VTaXplIE5hbWU9Ikl0ZW0xIj4xNjwvSGlzdG9yeUxpc3RzX2hsVExJQl9QYWdlU2l6
ZT48L0hpc3RvcnlMaXN0c19obFRMSUJfUGFnZVNpemU+PC9DUGx1c1BsdXNCdWlsZGVyLlBlcnNv
bmFsaXR5PjwvQm9ybGFuZFByb2plY3Q+PC9Cb3JsYW5kUHJvamVjdD4NCisgIDwvUHJvamVjdEV4
dGVuc2lvbnM+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoTVNCdWlsZEJpblBhdGgpXEJvcmxhbmQu
Q3BwLlRhcmdldHMiIC8+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Tm9uZSBJbmNsdWRlPSIuLlxp
bmNsdWRlXGd0ZXN0XGd0ZXN0LWRlYXRoLXRlc3QuaCI+DQorICAgICAgPEJ1aWxkT3JkZXI+Mzwv
QnVpbGRPcmRlcj4NCisgICAgPC9Ob25lPg0KKyAgICA8Tm9uZSBJbmNsdWRlPSIuLlxpbmNsdWRl
XGd0ZXN0XGd0ZXN0LW1lc3NhZ2UuaCI+DQorICAgICAgPEJ1aWxkT3JkZXI+NDwvQnVpbGRPcmRl
cj4NCisgICAgPC9Ob25lPg0KKyAgICA8Tm9uZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGd0
ZXN0LXBhcmFtLXRlc3QuaCI+DQorICAgICAgPEJ1aWxkT3JkZXI+NTwvQnVpbGRPcmRlcj4NCisg
ICAgPC9Ob25lPg0KKyAgICA8Tm9uZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGd0ZXN0LXNw
aS5oIj4NCisgICAgICA8QnVpbGRPcmRlcj42PC9CdWlsZE9yZGVyPg0KKyAgICA8L05vbmU+DQor
ICAgIDxOb25lIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3QtdGVzdC1wYXJ0LmgiPg0K
KyAgICAgIDxCdWlsZE9yZGVyPjc8L0J1aWxkT3JkZXI+DQorICAgIDwvTm9uZT4NCisgICAgPE5v
bmUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxndGVzdC10eXBlZC10ZXN0LmgiPg0KKyAgICAg
IDxCdWlsZE9yZGVyPjg8L0J1aWxkT3JkZXI+DQorICAgIDwvTm9uZT4NCisgICAgPE5vbmUgSW5j
bHVkZT0iLi5caW5jbHVkZVxndGVzdFxndGVzdC5oIj4NCisgICAgICA8QnVpbGRPcmRlcj4wPC9C
dWlsZE9yZGVyPg0KKyAgICA8L05vbmU+DQorICAgIDxOb25lIEluY2x1ZGU9Ii4uXGluY2x1ZGVc
Z3Rlc3RcZ3Rlc3RfcHJlZF9pbXBsLmgiPg0KKyAgICAgIDxCdWlsZE9yZGVyPjE8L0J1aWxkT3Jk
ZXI+DQorICAgIDwvTm9uZT4NCisgICAgPE5vbmUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxn
dGVzdF9wcm9kLmgiPg0KKyAgICAgIDxCdWlsZE9yZGVyPjI8L0J1aWxkT3JkZXI+DQorICAgIDwv
Tm9uZT4NCisgICAgPE5vbmUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxpbnRlcm5hbFxndGVz
dC1kZWF0aC10ZXN0LWludGVybmFsLmgiPg0KKyAgICAgIDxCdWlsZE9yZGVyPjk8L0J1aWxkT3Jk
ZXI+DQorICAgIDwvTm9uZT4NCisgICAgPE5vbmUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxp
bnRlcm5hbFxndGVzdC1maWxlcGF0aC5oIj4NCisgICAgICA8QnVpbGRPcmRlcj4xMDwvQnVpbGRP
cmRlcj4NCisgICAgPC9Ob25lPg0KKyAgICA8Tm9uZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0
XGludGVybmFsXGd0ZXN0LWludGVybmFsLmgiPg0KKyAgICAgIDxCdWlsZE9yZGVyPjExPC9CdWls
ZE9yZGVyPg0KKyAgICA8L05vbmU+DQorICAgIDxOb25lIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rl
c3RcaW50ZXJuYWxcZ3Rlc3QtbGlua2VkX3B0ci5oIj4NCisgICAgICA8QnVpbGRPcmRlcj4xMjwv
QnVpbGRPcmRlcj4NCisgICAgPC9Ob25lPg0KKyAgICA8Tm9uZSBJbmNsdWRlPSIuLlxpbmNsdWRl
XGd0ZXN0XGludGVybmFsXGd0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmgiPg0KKyAgICAgIDxC
dWlsZE9yZGVyPjE0PC9CdWlsZE9yZGVyPg0KKyAgICA8L05vbmU+DQorICAgIDxOb25lIEluY2x1
ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcaW50ZXJuYWxcZ3Rlc3QtcGFyYW0tdXRpbC5oIj4NCisgICAg
ICA8QnVpbGRPcmRlcj4xMzwvQnVpbGRPcmRlcj4NCisgICAgPC9Ob25lPg0KKyAgICA8Tm9uZSBJ
bmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGludGVybmFsXGd0ZXN0LXBvcnQuaCI+DQorICAgICAg
PEJ1aWxkT3JkZXI+MTU8L0J1aWxkT3JkZXI+DQorICAgIDwvTm9uZT4NCisgICAgPE5vbmUgSW5j
bHVkZT0iLi5caW5jbHVkZVxndGVzdFxpbnRlcm5hbFxndGVzdC1zdHJpbmcuaCI+DQorICAgICAg
PEJ1aWxkT3JkZXI+MTY8L0J1aWxkT3JkZXI+DQorICAgIDwvTm9uZT4NCisgICAgPE5vbmUgSW5j
bHVkZT0iLi5caW5jbHVkZVxndGVzdFxpbnRlcm5hbFxndGVzdC10eXBlLXV0aWwuaCI+DQorICAg
ICAgPEJ1aWxkT3JkZXI+MTc8L0J1aWxkT3JkZXI+DQorICAgIDwvTm9uZT4NCisgICAgPENwcENv
bXBpbGUgSW5jbHVkZT0iZ3Rlc3RfYWxsLmNjIj4NCisgICAgICA8QnVpbGRPcmRlcj4xODwvQnVp
bGRPcmRlcj4NCisgICAgPC9DcHBDb21waWxlPg0KKyAgICA8QnVpbGRDb25maWd1cmF0aW9uIElu
Y2x1ZGU9IkRlYnVnIj4NCisgICAgICA8S2V5PkNmZ18xPC9LZXk+DQorICAgIDwvQnVpbGRDb25m
aWd1cmF0aW9uPg0KKyAgICA8QnVpbGRDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2UiPg0K
KyAgICAgIDxLZXk+Q2ZnXzI8L0tleT4NCisgICAgPC9CdWlsZENvbmZpZ3VyYXRpb24+DQorICA8
L0l0ZW1Hcm91cD4NCis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3QvY29kZWdlYXIvZ3Rlc3QuZ3JvdXBwcm9qIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRl
c3QvY29kZWdlYXIvZ3Rlc3QuZ3JvdXBwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhZjMxY2FiNjQwYmI0NTQw
ODEyZjg4ZjZmYTBmYWNjNmYwMTBkYjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9j
b2RlZ2Vhci9ndGVzdC5ncm91cHByb2oKQEAgLTAsMCArMSw1NCBAQAor77u/PFByb2plY3QgeG1s
bnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+
DQorICA8UHJvcGVydHlHcm91cD4NCisgICAgPFByb2plY3RHdWlkPntjMWQ5MjNlMC02Y2JhLTQz
MzItOWI2Zi0zNDIwYWNiZjUwOTF9PC9Qcm9qZWN0R3VpZD4NCisgIDwvUHJvcGVydHlHcm91cD4N
CisgIDxJdGVtR3JvdXAgLz4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxQcm9qZWN0cyBJbmNsdWRl
PSJndGVzdC5jYnByb2oiIC8+DQorICAgIDxQcm9qZWN0cyBJbmNsdWRlPSJndGVzdF9tYWluLmNi
cHJvaiIgLz4NCisgICAgPFByb2plY3RzIEluY2x1ZGU9Imd0ZXN0X3VuaXR0ZXN0LmNicHJvaiIg
Lz4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPFByb2plY3RFeHRlbnNpb25zPg0KKyAgICA8Qm9ybGFu
ZC5QZXJzb25hbGl0eT5EZWZhdWx0LlBlcnNvbmFsaXR5PC9Cb3JsYW5kLlBlcnNvbmFsaXR5Pg0K
KyAgICA8Qm9ybGFuZC5Qcm9qZWN0VHlwZSAvPg0KKyAgICA8Qm9ybGFuZFByb2plY3Q+DQorPEJv
cmxhbmRQcm9qZWN0IHhtbG5zPSIiPjxEZWZhdWx0LlBlcnNvbmFsaXR5PjwvRGVmYXVsdC5QZXJz
b25hbGl0eT48L0JvcmxhbmRQcm9qZWN0PjwvQm9ybGFuZFByb2plY3Q+DQorICA8L1Byb2plY3RF
eHRlbnNpb25zPg0KKyAgPFRhcmdldCBOYW1lPSJndGVzdCI+DQorICAgIDxNU0J1aWxkIFByb2pl
Y3RzPSJndGVzdC5jYnByb2oiIFRhcmdldHM9IiIgLz4NCisgIDwvVGFyZ2V0Pg0KKyAgPFRhcmdl
dCBOYW1lPSJndGVzdDpDbGVhbiI+DQorICAgIDxNU0J1aWxkIFByb2plY3RzPSJndGVzdC5jYnBy
b2oiIFRhcmdldHM9IkNsZWFuIiAvPg0KKyAgPC9UYXJnZXQ+DQorICA8VGFyZ2V0IE5hbWU9Imd0
ZXN0Ok1ha2UiPg0KKyAgICA8TVNCdWlsZCBQcm9qZWN0cz0iZ3Rlc3QuY2Jwcm9qIiBUYXJnZXRz
PSJNYWtlIiAvPg0KKyAgPC9UYXJnZXQ+DQorICA8VGFyZ2V0IE5hbWU9Imd0ZXN0X21haW4iPg0K
KyAgICA8TVNCdWlsZCBQcm9qZWN0cz0iZ3Rlc3RfbWFpbi5jYnByb2oiIFRhcmdldHM9IiIgLz4N
CisgIDwvVGFyZ2V0Pg0KKyAgPFRhcmdldCBOYW1lPSJndGVzdF9tYWluOkNsZWFuIj4NCisgICAg
PE1TQnVpbGQgUHJvamVjdHM9Imd0ZXN0X21haW4uY2Jwcm9qIiBUYXJnZXRzPSJDbGVhbiIgLz4N
CisgIDwvVGFyZ2V0Pg0KKyAgPFRhcmdldCBOYW1lPSJndGVzdF9tYWluOk1ha2UiPg0KKyAgICA8
TVNCdWlsZCBQcm9qZWN0cz0iZ3Rlc3RfbWFpbi5jYnByb2oiIFRhcmdldHM9Ik1ha2UiIC8+DQor
ICA8L1RhcmdldD4NCisgIDxUYXJnZXQgTmFtZT0iZ3Rlc3RfdW5pdHRlc3QiPg0KKyAgICA8TVNC
dWlsZCBQcm9qZWN0cz0iZ3Rlc3RfdW5pdHRlc3QuY2Jwcm9qIiBUYXJnZXRzPSIiIC8+DQorICA8
L1RhcmdldD4NCisgIDxUYXJnZXQgTmFtZT0iZ3Rlc3RfdW5pdHRlc3Q6Q2xlYW4iPg0KKyAgICA8
TVNCdWlsZCBQcm9qZWN0cz0iZ3Rlc3RfdW5pdHRlc3QuY2Jwcm9qIiBUYXJnZXRzPSJDbGVhbiIg
Lz4NCisgIDwvVGFyZ2V0Pg0KKyAgPFRhcmdldCBOYW1lPSJndGVzdF91bml0dGVzdDpNYWtlIj4N
CisgICAgPE1TQnVpbGQgUHJvamVjdHM9Imd0ZXN0X3VuaXR0ZXN0LmNicHJvaiIgVGFyZ2V0cz0i
TWFrZSIgLz4NCisgIDwvVGFyZ2V0Pg0KKyAgPFRhcmdldCBOYW1lPSJCdWlsZCI+DQorICAgIDxD
YWxsVGFyZ2V0IFRhcmdldHM9Imd0ZXN0O2d0ZXN0X21haW47Z3Rlc3RfdW5pdHRlc3QiIC8+DQor
ICA8L1RhcmdldD4NCisgIDxUYXJnZXQgTmFtZT0iQ2xlYW4iPg0KKyAgICA8Q2FsbFRhcmdldCBU
YXJnZXRzPSJndGVzdDpDbGVhbjtndGVzdF9tYWluOkNsZWFuO2d0ZXN0X3VuaXR0ZXN0OkNsZWFu
IiAvPg0KKyAgPC9UYXJnZXQ+DQorICA8VGFyZ2V0IE5hbWU9Ik1ha2UiPg0KKyAgICA8Q2FsbFRh
cmdldCBUYXJnZXRzPSJndGVzdDpNYWtlO2d0ZXN0X21haW46TWFrZTtndGVzdF91bml0dGVzdDpN
YWtlIiAvPg0KKyAgPC9UYXJnZXQ+DQorICA8SW1wb3J0IENvbmRpdGlvbj0iRXhpc3RzKCckKE1T
QnVpbGRCaW5QYXRoKVxCb3JsYW5kLkdyb3VwLlRhcmdldHMnKSIgUHJvamVjdD0iJChNU0J1aWxk
QmluUGF0aClcQm9ybGFuZC5Hcm91cC5UYXJnZXRzIiAvPg0KKzwvUHJvamVjdD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9jb2RlZ2Vhci9ndGVz
dF9hbGwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9jb2RlZ2Vhci9ndGVzdF9hbGwuY2MKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTIxYjJkODBlODNlYzdjZDBmZGY3ZGM2NzEyNzJkYzU0ZjZlOWYwZAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGV0ZXN0L2NvZGVnZWFyL2d0ZXN0X2FsbC5jYwpAQCAtMCwwICsxLDM4IEBACisv
LyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4NCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLg0K
Ky8vDQorLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0DQorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQ0KKy8vIG1ldDoNCisvLw0KKy8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0DQorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUNCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyDQorLy8g
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQ0KKy8vIGRpc3RyaWJ1dGlvbi4NCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzDQorLy8gY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20NCisvLyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KKy8v
DQorLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUw0KKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UDQorLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SDQorLy8gQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQNCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwNCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UDQorLy8gTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
DQorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZDQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVA0KKy8vIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KKy8v
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuDQorLy8NCisvLyBBdXRob3I6IEpvc2ggS2VsbGV5IChqb3Noa2VsQGdtYWls
LmNvbSkNCisvLw0KKy8vIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0
KQ0KKy8vDQorLy8gQysrQnVpbGRlcidzIElERSBjYW5ub3QgYnVpbGQgYSBzdGF0aWMgbGlicmFy
eSBmcm9tIGZpbGVzIHdpdGggaHlwaGVucw0KKy8vIGluIHRoZWlyIG5hbWUuICBTZWUgaHR0cDov
L3FjLmNvZGVnZWFyLmNvbS93Yy9xY21haW4uYXNweD9kPTcwOTc3IC4NCisvLyBUaGlzIGZpbGUg
c2VydmVzIGFzIGEgd29ya2Fyb3VuZC4NCisNCisjaW5jbHVkZSAic3JjL2d0ZXN0LWFsbC5jYyIN
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9jb2RlZ2Vhci9ndGVzdF9saW5rLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZXRlc3QvY29kZWdlYXIvZ3Rlc3RfbGluay5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MThlY2NkMTliN2RhZmEz
MmI1MjkzODBiNzA5MjM4YzllM2EzNjJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
Y29kZWdlYXIvZ3Rlc3RfbGluay5jYwpAQCAtMCwwICsxLDQwIEBACisvLyBDb3B5cmlnaHQgMjAw
OSwgR29vZ2xlIEluYy4NCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vDQorLy8gUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0DQorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQ0KKy8vIG1ldDoNCisvLw0KKy8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQor
Ly8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLg0KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUNCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyDQorLy8gaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQ0KKy8vIGRpc3Ry
aWJ1dGlvbi4NCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzDQorLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20NCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KKy8vDQorLy8gVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
Uw0KKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UDQorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SDQorLy8gQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQNCisvLyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwNCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UDQorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsDQorLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZDQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVA0KKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KKy8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQor
Ly8NCisvLyBBdXRob3I6IEpvc2ggS2VsbGV5IChqb3Noa2VsQGdtYWlsLmNvbSkNCisvLw0KKy8v
IEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQ0KKy8vDQorLy8gTGlu
a3MgZ3Rlc3QubGliIGFuZCBndGVzdF9tYWluLmxpYiBpbnRvIHRoZSBjdXJyZW50IHByb2plY3Qg
aW4gQysrQnVpbGRlci4NCisvLyBUaGlzIG1lYW5zIHRoYXQgdGhlc2UgbGlicmFyaWVzIGNhbid0
IGJlIHJlbmFtZWQsIGJ1dCBpdCdzIHRoZSBvbmx5IHdheSB0bw0KKy8vIGVuc3VyZSB0aGF0IERl
YnVnIHZlcnN1cyBSZWxlYXNlIHRlc3QgYnVpbGRzIGFyZSBsaW5rZWQgYWdhaW5zdCB0aGUNCisv
LyBhcHByb3ByaWF0ZSBEZWJ1ZyBvciBSZWxlYXNlIGJ1aWxkIG9mIHRoZSBsaWJyYXJpZXMuDQor
DQorI3ByYWdtYSBsaW5rICJndGVzdC5saWIiDQorI3ByYWdtYSBsaW5rICJndGVzdF9tYWluLmxp
YiINCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9jb2RlZ2Vhci9ndGVzdF9tYWluLmNicHJvaiBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L2NvZGVnZWFyL2d0ZXN0X21haW4uY2Jwcm9qCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3NmNl
MTM5OGZmMzkzMzMzMzc3MjVmNDQ2NmRhNTYzZTk4MzM1ODEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xldGVzdC9jb2RlZ2Vhci9ndGVzdF9tYWluLmNicHJvagpAQCAtMCwwICsxLDgyIEBACivv
u788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pg0KKzxQcm9qZWN0IHhtbG5z
PSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPg0K
KyAgPFByb3BlcnR5R3JvdXA+DQorICAgIDxQcm9qZWN0R3VpZD57YmNhMzdhNzItNWIwNy00NmNm
LWI0NGUtODlmOGUwNjQ1MWEyfTwvUHJvamVjdEd1aWQ+DQorICAgIDxDb25maWcgQ29uZGl0aW9u
PSInJChDb25maWcpJz09JyciPlJlbGVhc2U8L0NvbmZpZz4NCisgIDwvUHJvcGVydHlHcm91cD4N
CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlnKSc9PSdCYXNlJyBvciAnJChC
YXNlKSchPScnIj4NCisgICAgPEJhc2U+dHJ1ZTwvQmFzZT4NCisgIDwvUHJvcGVydHlHcm91cD4N
CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlnKSc9PSdEZWJ1Zycgb3IgJyQo
Q2ZnXzEpJyE9JyciPg0KKyAgICA8QmFzZT50cnVlPC9CYXNlPg0KKyAgICA8Q2ZnXzE+dHJ1ZTwv
Q2ZnXzE+DQorICAgIDxDZmdQYXJlbnQ+QmFzZTwvQ2ZnUGFyZW50Pg0KKyAgPC9Qcm9wZXJ0eUdy
b3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWcpJz09J1JlbGVhc2Un
IG9yICckKENmZ18yKSchPScnIj4NCisgICAgPEJhc2U+dHJ1ZTwvQmFzZT4NCisgICAgPENmZ18y
PnRydWU8L0NmZ18yPg0KKyAgICA8Q2ZnUGFyZW50PkJhc2U8L0NmZ1BhcmVudD4NCisgIDwvUHJv
cGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQmFzZSknIT0nJyI+
DQorICAgIDxCQ0NfT3B0aW1pemVGb3JTcGVlZD50cnVlPC9CQ0NfT3B0aW1pemVGb3JTcGVlZD4N
CisgICAgPE91dHB1dEV4dD5saWI8L091dHB1dEV4dD4NCisgICAgPERDQ19DQnVpbGRlck91dHB1
dD5KUEhORTwvRENDX0NCdWlsZGVyT3V0cHV0Pg0KKyAgICA8RGVmaW5lcz5OT19TVFJJQ1Q8L0Rl
ZmluZXM+DQorICAgIDxEeW5hbWljUlRMPnRydWU8L0R5bmFtaWNSVEw+DQorICAgIDxVc2VQYWNr
YWdlcz50cnVlPC9Vc2VQYWNrYWdlcz4NCisgICAgPFByb2plY3RUeXBlPkNwcFN0YXRpY0xpYnJh
cnk8L1Byb2plY3RUeXBlPg0KKyAgICA8QkNDX0NQUENvbXBpbGVBbHdheXM+dHJ1ZTwvQkNDX0NQ
UENvbXBpbGVBbHdheXM+DQorICAgIDxQYWNrYWdlSW1wb3J0cz5ydGwuYnBpO3ZjbC5icGk7YmNi
aWUuYnBpO3ZjbHguYnBpO3ZjbGFjdG5iYW5kLmJwaTt4bWxydGwuYnBpO2JjYnNtcC5icGk7ZGJy
dGwuYnBpO3ZjbGRiLmJwaTtiZGVydGwuYnBpO3ZjbGRieC5icGk7ZHNuYXAuYnBpO2RzbmFwY29u
LmJwaTt2Y2xpYi5icGk7aWJ4cHJlc3MuYnBpO2Fkb3J0bC5icGk7ZGJ4Y2RzLmJwaTtkYmV4cHJl
c3MuYnBpO0RieENvbW1vbkRyaXZlci5icGk7d2Vic25hcC5icGk7dmNsaWUuYnBpO3dlYmRzbmFw
LmJwaTtpbmV0LmJwaTtpbmV0ZGJiZGUuYnBpO2luZXRkYnhwcmVzcy5icGk7c29hcHJ0bC5icGk7
UmF2ZTc1VkNMLmJwaTt0ZWVVSS5icGk7dGVlLmJwaTt0ZWVkYi5icGk7SW5keUNvcmUuYnBpO0lu
ZHlTeXN0ZW0uYnBpO0luZHlQcm90b2NvbHMuYnBpO0ludHJhd2ViREJfOTBfMTAwLmJwaTtJbnRy
YXdlYl85MF8xMDAuYnBpO2RjbFppcEZvcmdlZDExLmJwaTt2Y2xaaXBGb3JnZWQxMS5icGk7R1Iz
Ml9CRFMyMDA2LmJwaTtHUjMyX0RTR05fQkRTMjAwNi5icGk7SmNsLmJwaTtKY2xWY2wuYnBpO0p2
Q29yZUQxMVIuYnBpO0p2U3lzdGVtRDExUi5icGk7SnZTdGRDdHJsc0QxMVIuYnBpO0p2QXBwRnJt
RDExUi5icGk7SnZCYW5kc0QxMVIuYnBpO0p2REJEMTFSLmJwaTtKdkRsZ3NEMTFSLmJwaTtKdkJE
RUQxMVIuYnBpO0p2Q21wRDExUi5icGk7SnZDcnlwdEQxMVIuYnBpO0p2Q3RybHNEMTFSLmJwaTtK
dkN1c3RvbUQxMVIuYnBpO0p2RG9ja2luZ0QxMVIuYnBpO0p2RG90TmV0Q3RybHNEMTFSLmJwaTtK
dkVESUQxMVIuYnBpO0p2R2xvYnVzRDExUi5icGk7SnZITUlEMTFSLmJwaTtKdkludGVycHJldGVy
RDExUi5icGk7SnZKYW5zRDExUi5icGk7SnZNYW5hZ2VkVGhyZWFkc0QxMVIuYnBpO0p2TU1EMTFS
LmJwaTtKdk5ldEQxMVIuYnBpO0p2UGFnZUNvbXBzRDExUi5icGk7SnZQbHVnaW5EMTFSLmJwaTtK
dlByaW50UHJldmlld0QxMVIuYnBpO0p2UnVudGltZURlc2lnbkQxMVIuYnBpO0p2VGltZUZyYW1l
d29ya0QxMVIuYnBpO0p2VmFsaWRhdG9yc0QxMVIuYnBpO0p2V2l6YXJkRDExUi5icGk7SnZYUEN0
cmxzRDExUi5icGk7VmNsU21wLmJwaTtDRXhjZXB0aW9uRXhwZXJ0MTEuYnBpPC9QYWNrYWdlSW1w
b3J0cz4NCisgICAgPEJDQ193cGFyPmZhbHNlPC9CQ0Nfd3Bhcj4NCisgICAgPEluY2x1ZGVQYXRo
PiQoQkRTKVxpbmNsdWRlOyQoQkRTKVxpbmNsdWRlXGRpbmt1bXdhcmU7JChCRFMpXGluY2x1ZGVc
dmNsOy4uXHNyYzsuLlxpbmNsdWRlOy4uPC9JbmNsdWRlUGF0aD4NCisgICAgPEFsbFBhY2thZ2VM
aWJzPnJ0bC5saWI7dmNsLmxpYjwvQWxsUGFja2FnZUxpYnM+DQorICAgIDxUTElCX1BhZ2VTaXpl
PjMyPC9UTElCX1BhZ2VTaXplPg0KKyAgICA8SUxJTktfTGlicmFyeVBhdGg+JChCRFMpXGxpYjsk
KEJEUylcbGliXG9iajskKEJEUylcbGliXHBzZGs8L0lMSU5LX0xpYnJhcnlQYXRoPg0KKyAgPC9Q
cm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDZmdfMSknIT0n
JyI+DQorICAgIDxCQ0NfT3B0aW1pemVGb3JTcGVlZD5mYWxzZTwvQkNDX09wdGltaXplRm9yU3Bl
ZWQ+DQorICAgIDxEQ0NfT3B0aW1pemU+ZmFsc2U8L0RDQ19PcHRpbWl6ZT4NCisgICAgPERDQ19E
ZWJ1Z0luZm9JbkV4ZT50cnVlPC9EQ0NfRGVidWdJbmZvSW5FeGU+DQorICAgIDxEZWZpbmVzPl9E
RUJVRzskKERlZmluZXMpPC9EZWZpbmVzPg0KKyAgICA8SUxJTktfRnVsbERlYnVnSW5mbz50cnVl
PC9JTElOS19GdWxsRGVidWdJbmZvPg0KKyAgICA8QkNDX0lubGluZUZ1bmN0aW9uRXhwYW5zaW9u
PmZhbHNlPC9CQ0NfSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+DQorICAgIDxJTElOS19EaXNhYmxl
SW5jcmVtZW50YWxMaW5raW5nPnRydWU8L0lMSU5LX0Rpc2FibGVJbmNyZW1lbnRhbExpbmtpbmc+
DQorICAgIDxCQ0NfVXNlUmVnaXN0ZXJWYXJpYWJsZXM+Tm9uZTwvQkNDX1VzZVJlZ2lzdGVyVmFy
aWFibGVzPg0KKyAgICA8RENDX0RlZmluZT5ERUJVRzwvRENDX0RlZmluZT4NCisgICAgPEJDQ19E
ZWJ1Z0xpbmVOdW1iZXJzPnRydWU8L0JDQ19EZWJ1Z0xpbmVOdW1iZXJzPg0KKyAgICA8SW50ZXJt
ZWRpYXRlT3V0cHV0RGlyPkRlYnVnPC9JbnRlcm1lZGlhdGVPdXRwdXREaXI+DQorICAgIDxUQVNN
X0Rpc3BsYXlTb3VyY2VMaW5lcz50cnVlPC9UQVNNX0Rpc3BsYXlTb3VyY2VMaW5lcz4NCisgICAg
PEJDQ19TdGFja0ZyYW1lcz50cnVlPC9CQ0NfU3RhY2tGcmFtZXM+DQorICAgIDxCQ0NfRGlzYWJs
ZU9wdGltaXphdGlvbnM+dHJ1ZTwvQkNDX0Rpc2FibGVPcHRpbWl6YXRpb25zPg0KKyAgICA8SUxJ
TktfTGlicmFyeVBhdGg+JChCRFMpXGxpYlxkZWJ1ZzskKElMSU5LX0xpYnJhcnlQYXRoKTwvSUxJ
TktfTGlicmFyeVBhdGg+DQorICAgIDxUQVNNX0RlYnVnZ2luZz5GdWxsPC9UQVNNX0RlYnVnZ2lu
Zz4NCisgICAgPEJDQ19Tb3VyY2VEZWJ1Z2dpbmdPbj50cnVlPC9CQ0NfU291cmNlRGVidWdnaW5n
T24+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249Iick
KENmZ18yKSchPScnIj4NCisgICAgPERlZmluZXM+TkRFQlVHOyQoRGVmaW5lcyk8L0RlZmluZXM+
DQorICAgIDxJbnRlcm1lZGlhdGVPdXRwdXREaXI+UmVsZWFzZTwvSW50ZXJtZWRpYXRlT3V0cHV0
RGlyPg0KKyAgICA8SUxJTktfTGlicmFyeVBhdGg+JChCRFMpXGxpYlxyZWxlYXNlOyQoSUxJTktf
TGlicmFyeVBhdGgpPC9JTElOS19MaWJyYXJ5UGF0aD4NCisgICAgPFRBU01fRGVidWdnaW5nPk5v
bmU8L1RBU01fRGVidWdnaW5nPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb2plY3RFeHRl
bnNpb25zPg0KKyAgICA8Qm9ybGFuZC5QZXJzb25hbGl0eT5DUGx1c1BsdXNCdWlsZGVyLlBlcnNv
bmFsaXR5PC9Cb3JsYW5kLlBlcnNvbmFsaXR5Pg0KKyAgICA8Qm9ybGFuZC5Qcm9qZWN0VHlwZT5D
cHBTdGF0aWNMaWJyYXJ5PC9Cb3JsYW5kLlByb2plY3RUeXBlPg0KKyAgICA8Qm9ybGFuZFByb2pl
Y3Q+DQorPEJvcmxhbmRQcm9qZWN0PjxDUGx1c1BsdXNCdWlsZGVyLlBlcnNvbmFsaXR5PjxWZXJz
aW9uSW5mbz48VmVyc2lvbkluZm8gTmFtZT0iSW5jbHVkZVZlckluZm8iPkZhbHNlPC9WZXJzaW9u
SW5mbz48VmVyc2lvbkluZm8gTmFtZT0iQXV0b0luY0J1aWxkIj5GYWxzZTwvVmVyc2lvbkluZm8+
PFZlcnNpb25JbmZvIE5hbWU9Ik1ham9yVmVyIj4xPC9WZXJzaW9uSW5mbz48VmVyc2lvbkluZm8g
TmFtZT0iTWlub3JWZXIiPjA8L1ZlcnNpb25JbmZvPjxWZXJzaW9uSW5mbyBOYW1lPSJSZWxlYXNl
Ij4wPC9WZXJzaW9uSW5mbz48VmVyc2lvbkluZm8gTmFtZT0iQnVpbGQiPjA8L1ZlcnNpb25JbmZv
PjxWZXJzaW9uSW5mbyBOYW1lPSJEZWJ1ZyI+RmFsc2U8L1ZlcnNpb25JbmZvPjxWZXJzaW9uSW5m
byBOYW1lPSJQcmVSZWxlYXNlIj5GYWxzZTwvVmVyc2lvbkluZm8+PFZlcnNpb25JbmZvIE5hbWU9
IlNwZWNpYWwiPkZhbHNlPC9WZXJzaW9uSW5mbz48VmVyc2lvbkluZm8gTmFtZT0iUHJpdmF0ZSI+
RmFsc2U8L1ZlcnNpb25JbmZvPjxWZXJzaW9uSW5mbyBOYW1lPSJETEwiPkZhbHNlPC9WZXJzaW9u
SW5mbz48VmVyc2lvbkluZm8gTmFtZT0iTG9jYWxlIj4xMDMzPC9WZXJzaW9uSW5mbz48VmVyc2lv
bkluZm8gTmFtZT0iQ29kZVBhZ2UiPjEyNTI8L1ZlcnNpb25JbmZvPjwvVmVyc2lvbkluZm8+PFZl
cnNpb25JbmZvS2V5cz48VmVyc2lvbkluZm9LZXlzIE5hbWU9IkNvbXBhbnlOYW1lIj48L1ZlcnNp
b25JbmZvS2V5cz48VmVyc2lvbkluZm9LZXlzIE5hbWU9IkZpbGVEZXNjcmlwdGlvbiI+PC9WZXJz
aW9uSW5mb0tleXM+PFZlcnNpb25JbmZvS2V5cyBOYW1lPSJGaWxlVmVyc2lvbiI+MS4wLjAuMDwv
VmVyc2lvbkluZm9LZXlzPjxWZXJzaW9uSW5mb0tleXMgTmFtZT0iSW50ZXJuYWxOYW1lIj48L1Zl
cnNpb25JbmZvS2V5cz48VmVyc2lvbkluZm9LZXlzIE5hbWU9IkxlZ2FsQ29weXJpZ2h0Ij48L1Zl
cnNpb25JbmZvS2V5cz48VmVyc2lvbkluZm9LZXlzIE5hbWU9IkxlZ2FsVHJhZGVtYXJrcyI+PC9W
ZXJzaW9uSW5mb0tleXM+PFZlcnNpb25JbmZvS2V5cyBOYW1lPSJPcmlnaW5hbEZpbGVuYW1lIj48
L1ZlcnNpb25JbmZvS2V5cz48VmVyc2lvbkluZm9LZXlzIE5hbWU9IlByb2R1Y3ROYW1lIj48L1Zl
cnNpb25JbmZvS2V5cz48VmVyc2lvbkluZm9LZXlzIE5hbWU9IlByb2R1Y3RWZXJzaW9uIj4xLjAu
MC4wPC9WZXJzaW9uSW5mb0tleXM+PFZlcnNpb25JbmZvS2V5cyBOYW1lPSJDb21tZW50cyI+PC9W
ZXJzaW9uSW5mb0tleXM+PC9WZXJzaW9uSW5mb0tleXM+PERlYnVnZ2luZz48RGVidWdnaW5nIE5h
bWU9IkRlYnVnU291cmNlRGlycyI+PC9EZWJ1Z2dpbmc+PC9EZWJ1Z2dpbmc+PFBhcmFtZXRlcnM+
PFBhcmFtZXRlcnMgTmFtZT0iUnVuUGFyYW1zIj48L1BhcmFtZXRlcnM+PFBhcmFtZXRlcnMgTmFt
ZT0iTGF1bmNoZXIiPjwvUGFyYW1ldGVycz48UGFyYW1ldGVycyBOYW1lPSJVc2VMYXVuY2hlciI+
RmFsc2U8L1BhcmFtZXRlcnM+PFBhcmFtZXRlcnMgTmFtZT0iRGVidWdDV0QiPjwvUGFyYW1ldGVy
cz48UGFyYW1ldGVycyBOYW1lPSJIb3N0QXBwbGljYXRpb24iPjwvUGFyYW1ldGVycz48UGFyYW1l
dGVycyBOYW1lPSJSZW1vdGVIb3N0Ij48L1BhcmFtZXRlcnM+PFBhcmFtZXRlcnMgTmFtZT0iUmVt
b3RlUGF0aCI+PC9QYXJhbWV0ZXJzPjxQYXJhbWV0ZXJzIE5hbWU9IlJlbW90ZVBhcmFtcyI+PC9Q
YXJhbWV0ZXJzPjxQYXJhbWV0ZXJzIE5hbWU9IlJlbW90ZUxhdW5jaGVyIj48L1BhcmFtZXRlcnM+
PFBhcmFtZXRlcnMgTmFtZT0iVXNlUmVtb3RlTGF1bmNoZXIiPkZhbHNlPC9QYXJhbWV0ZXJzPjxQ
YXJhbWV0ZXJzIE5hbWU9IlJlbW90ZUNXRCI+PC9QYXJhbWV0ZXJzPjxQYXJhbWV0ZXJzIE5hbWU9
IlJlbW90ZURlYnVnIj5GYWxzZTwvUGFyYW1ldGVycz48UGFyYW1ldGVycyBOYW1lPSJEZWJ1ZyBT
eW1ib2xzIFNlYXJjaCBQYXRoIj48L1BhcmFtZXRlcnM+PFBhcmFtZXRlcnMgTmFtZT0iTG9hZEFs
bFN5bWJvbHMiPlRydWU8L1BhcmFtZXRlcnM+PFBhcmFtZXRlcnMgTmFtZT0iTG9hZFVuc3BlY2lm
aWVkU3ltYm9scyI+RmFsc2U8L1BhcmFtZXRlcnM+PC9QYXJhbWV0ZXJzPjxFeGNsdWRlZF9QYWNr
YWdlcz4NCisgICAgICA8RXhjbHVkZWRfUGFja2FnZXMgTmFtZT0iJChCRFMpXGJpblxiY2JvZmZp
Y2UyazEwMC5icGwiPkNvZGVHZWFyIEMrK0J1aWxkZXIgT2ZmaWNlIDIwMDAgU2VydmVycyBQYWNr
YWdlPC9FeGNsdWRlZF9QYWNrYWdlcz4NCisgICAgICA8RXhjbHVkZWRfUGFja2FnZXMgTmFtZT0i
JChCRFMpXGJpblxiY2JvZmZpY2V4cDEwMC5icGwiPkNvZGVHZWFyIEMrK0J1aWxkZXIgT2ZmaWNl
IFhQIFNlcnZlcnMgUGFja2FnZTwvRXhjbHVkZWRfUGFja2FnZXM+DQorICAgIDwvRXhjbHVkZWRf
UGFja2FnZXM+PExpbmtlcj48TGlua2VyIE5hbWU9IkxpYlByZWZpeCI+PC9MaW5rZXI+PExpbmtl
ciBOYW1lPSJMaWJTdWZmaXgiPjwvTGlua2VyPjxMaW5rZXIgTmFtZT0iTGliVmVyc2lvbiI+PC9M
aW5rZXI+PC9MaW5rZXI+PFByb2plY3RQcm9wZXJ0aWVzPjxQcm9qZWN0UHJvcGVydGllcyBOYW1l
PSJBdXRvU2hvd0RlcHMiPkZhbHNlPC9Qcm9qZWN0UHJvcGVydGllcz48UHJvamVjdFByb3BlcnRp
ZXMgTmFtZT0iTWFuYWdlUGF0aHMiPlRydWU8L1Byb2plY3RQcm9wZXJ0aWVzPjxQcm9qZWN0UHJv
cGVydGllcyBOYW1lPSJWZXJpZnlQYWNrYWdlcyI+VHJ1ZTwvUHJvamVjdFByb3BlcnRpZXM+PC9Q
cm9qZWN0UHJvcGVydGllcz48SGlzdG9yeUxpc3RzX2hsSW5jbHVkZVBhdGg+PEhpc3RvcnlMaXN0
c19obEluY2x1ZGVQYXRoIE5hbWU9IkNvdW50Ij4zPC9IaXN0b3J5TGlzdHNfaGxJbmNsdWRlUGF0
aD48SGlzdG9yeUxpc3RzX2hsSW5jbHVkZVBhdGggTmFtZT0iSXRlbTAiPiQoQkRTKVxpbmNsdWRl
OyQoQkRTKVxpbmNsdWRlXGRpbmt1bXdhcmU7JChCRFMpXGluY2x1ZGVcdmNsOy4uXHNyYzsuLlxp
bmNsdWRlOy4uPC9IaXN0b3J5TGlzdHNfaGxJbmNsdWRlUGF0aD48SGlzdG9yeUxpc3RzX2hsSW5j
bHVkZVBhdGggTmFtZT0iSXRlbTEiPiQoQkRTKVxpbmNsdWRlOyQoQkRTKVxpbmNsdWRlXGRpbmt1
bXdhcmU7JChCRFMpXGluY2x1ZGVcdmNsOy4uXHNyYzsuLlxpbmNsdWRlOy4uPC9IaXN0b3J5TGlz
dHNfaGxJbmNsdWRlUGF0aD48SGlzdG9yeUxpc3RzX2hsSW5jbHVkZVBhdGggTmFtZT0iSXRlbTIi
PiQoQkRTKVxpbmNsdWRlOyQoQkRTKVxpbmNsdWRlXGRpbmt1bXdhcmU7JChCRFMpXGluY2x1ZGVc
dmNsOy4uXHNyYzsuLlxzcmM7Li5caW5jbHVkZTwvSGlzdG9yeUxpc3RzX2hsSW5jbHVkZVBhdGg+
PC9IaXN0b3J5TGlzdHNfaGxJbmNsdWRlUGF0aD48SGlzdG9yeUxpc3RzX2hsSUxJTktfTGlicmFy
eVBhdGg+PEhpc3RvcnlMaXN0c19obElMSU5LX0xpYnJhcnlQYXRoIE5hbWU9IkNvdW50Ij4xPC9I
aXN0b3J5TGlzdHNfaGxJTElOS19MaWJyYXJ5UGF0aD48SGlzdG9yeUxpc3RzX2hsSUxJTktfTGli
cmFyeVBhdGggTmFtZT0iSXRlbTAiPiQoQkRTKVxsaWI7JChCRFMpXGxpYlxvYmo7JChCRFMpXGxp
Ylxwc2RrPC9IaXN0b3J5TGlzdHNfaGxJTElOS19MaWJyYXJ5UGF0aD48L0hpc3RvcnlMaXN0c19o
bElMSU5LX0xpYnJhcnlQYXRoPjxIaXN0b3J5TGlzdHNfaGxEZWZpbmVzPjxIaXN0b3J5TGlzdHNf
aGxEZWZpbmVzIE5hbWU9IkNvdW50Ij4xPC9IaXN0b3J5TGlzdHNfaGxEZWZpbmVzPjxIaXN0b3J5
TGlzdHNfaGxEZWZpbmVzIE5hbWU9Ikl0ZW0wIj5OT19TVFJJQ1Q8L0hpc3RvcnlMaXN0c19obERl
ZmluZXM+PC9IaXN0b3J5TGlzdHNfaGxEZWZpbmVzPjxIaXN0b3J5TGlzdHNfaGxUTElCX1BhZ2VT
aXplPjxIaXN0b3J5TGlzdHNfaGxUTElCX1BhZ2VTaXplIE5hbWU9IkNvdW50Ij4xPC9IaXN0b3J5
TGlzdHNfaGxUTElCX1BhZ2VTaXplPjxIaXN0b3J5TGlzdHNfaGxUTElCX1BhZ2VTaXplIE5hbWU9
Ikl0ZW0wIj4zMjwvSGlzdG9yeUxpc3RzX2hsVExJQl9QYWdlU2l6ZT48SGlzdG9yeUxpc3RzX2hs
VExJQl9QYWdlU2l6ZSBOYW1lPSJJdGVtMSI+MTY8L0hpc3RvcnlMaXN0c19obFRMSUJfUGFnZVNp
emU+PC9IaXN0b3J5TGlzdHNfaGxUTElCX1BhZ2VTaXplPjwvQ1BsdXNQbHVzQnVpbGRlci5QZXJz
b25hbGl0eT48L0JvcmxhbmRQcm9qZWN0PjwvQm9ybGFuZFByb2plY3Q+DQorICA8L1Byb2plY3RF
eHRlbnNpb25zPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKE1TQnVpbGRCaW5QYXRoKVxCb3JsYW5k
LkNwcC5UYXJnZXRzIiAvPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPENwcENvbXBpbGUgSW5jbHVk
ZT0iLi5cc3JjXGd0ZXN0X21haW4uY2MiPg0KKyAgICAgIDxCdWlsZE9yZGVyPjA8L0J1aWxkT3Jk
ZXI+DQorICAgIDwvQ3BwQ29tcGlsZT4NCisgICAgPEJ1aWxkQ29uZmlndXJhdGlvbiBJbmNsdWRl
PSJEZWJ1ZyI+DQorICAgICAgPEtleT5DZmdfMTwvS2V5Pg0KKyAgICA8L0J1aWxkQ29uZmlndXJh
dGlvbj4NCisgICAgPEJ1aWxkQ29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlIj4NCisgICAg
ICA8S2V5PkNmZ18yPC9LZXk+DQorICAgIDwvQnVpbGRDb25maWd1cmF0aW9uPg0KKyAgPC9JdGVt
R3JvdXA+DQorPC9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2NvZGVnZWFyL2d0
ZXN0X3VuaXR0ZXN0LmNicHJvaiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2NvZGVnZWFyL2d0ZXN0X3VuaXR0ZXN0
LmNicHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kYzVkYjhlNGRhNTk0NTdmYzhlZmFhMmQ2Y2NlYTg3YzZiODRk
YmQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvY29kZWdlYXIvZ3Rlc3RfdW5pdHRl
c3QuY2Jwcm9qCkBAIC0wLDAgKzEsODggQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rp
bmc9InV0Zi04Ij8+DQorPFByb2plY3QgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5j
b20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+DQorICA8UHJvcGVydHlHcm91cD4NCisgICAgPFBy
b2plY3RHdWlkPntlZWE2MzM5My01YWM1LTRiOWMtODkwOS1kNzVmZWYyZGFhNDF9PC9Qcm9qZWN0
R3VpZD4NCisgICAgPENvbmZpZyBDb25kaXRpb249IickKENvbmZpZyknPT0nJyI+UmVsZWFzZTwv
Q29uZmlnPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9u
PSInJChDb25maWcpJz09J0Jhc2UnIG9yICckKEJhc2UpJyE9JyciPg0KKyAgICA8QmFzZT50cnVl
PC9CYXNlPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9u
PSInJChDb25maWcpJz09J0RlYnVnJyBvciAnJChDZmdfMSknIT0nJyI+DQorICAgIDxCYXNlPnRy
dWU8L0Jhc2U+DQorICAgIDxDZmdfMT50cnVlPC9DZmdfMT4NCisgICAgPENmZ1BhcmVudD5CYXNl
PC9DZmdQYXJlbnQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25k
aXRpb249IickKENvbmZpZyknPT0nUmVsZWFzZScgb3IgJyQoQ2ZnXzIpJyE9JyciPg0KKyAgICA8
QmFzZT50cnVlPC9CYXNlPg0KKyAgICA8Q2ZnXzI+dHJ1ZTwvQ2ZnXzI+DQorICAgIDxDZmdQYXJl
bnQ+QmFzZTwvQ2ZnUGFyZW50Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3Jv
dXAgQ29uZGl0aW9uPSInJChCYXNlKSchPScnIj4NCisgICAgPE91dHB1dEV4dD5leGU8L091dHB1
dEV4dD4NCisgICAgPEJDQ19PcHRpbWl6ZUZvclNwZWVkPnRydWU8L0JDQ19PcHRpbWl6ZUZvclNw
ZWVkPg0KKyAgICA8RGVmaW5lcz5OT19TVFJJQ1Q8L0RlZmluZXM+DQorICAgIDxEQ0NfQ0J1aWxk
ZXJPdXRwdXQ+SlBITkU8L0RDQ19DQnVpbGRlck91dHB1dD4NCisgICAgPER5bmFtaWNSVEw+dHJ1
ZTwvRHluYW1pY1JUTD4NCisgICAgPElMSU5LX09iamVjdFNlYXJjaFBhdGg+Li5cdGVzdDwvSUxJ
TktfT2JqZWN0U2VhcmNoUGF0aD4NCisgICAgPFVzZVBhY2thZ2VzPnRydWU8L1VzZVBhY2thZ2Vz
Pg0KKyAgICA8UHJvamVjdFR5cGU+Q3BwQ29uc29sZUFwcGxpY2F0aW9uPC9Qcm9qZWN0VHlwZT4N
CisgICAgPE5vVkNMPnRydWU8L05vVkNMPg0KKyAgICA8QkNDX0NQUENvbXBpbGVBbHdheXM+dHJ1
ZTwvQkNDX0NQUENvbXBpbGVBbHdheXM+DQorICAgIDxQYWNrYWdlSW1wb3J0cz5ydGwuYnBpO3Zj
bC5icGk7YmNiaWUuYnBpO3ZjbHguYnBpO3ZjbGFjdG5iYW5kLmJwaTt4bWxydGwuYnBpO2JjYnNt
cC5icGk7ZGJydGwuYnBpO3ZjbGRiLmJwaTtiZGVydGwuYnBpO3ZjbGRieC5icGk7ZHNuYXAuYnBp
O2RzbmFwY29uLmJwaTt2Y2xpYi5icGk7aWJ4cHJlc3MuYnBpO2Fkb3J0bC5icGk7ZGJ4Y2RzLmJw
aTtkYmV4cHJlc3MuYnBpO0RieENvbW1vbkRyaXZlci5icGk7d2Vic25hcC5icGk7dmNsaWUuYnBp
O3dlYmRzbmFwLmJwaTtpbmV0LmJwaTtpbmV0ZGJiZGUuYnBpO2luZXRkYnhwcmVzcy5icGk7c29h
cHJ0bC5icGk7UmF2ZTc1VkNMLmJwaTt0ZWVVSS5icGk7dGVlLmJwaTt0ZWVkYi5icGk7SW5keUNv
cmUuYnBpO0luZHlTeXN0ZW0uYnBpO0luZHlQcm90b2NvbHMuYnBpO0ludHJhd2ViREJfOTBfMTAw
LmJwaTtJbnRyYXdlYl85MF8xMDAuYnBpO0pjbC5icGk7SmNsVmNsLmJwaTtKdkNvcmVEMTFSLmJw
aTtKdlN5c3RlbUQxMVIuYnBpO0p2U3RkQ3RybHNEMTFSLmJwaTtKdkFwcEZybUQxMVIuYnBpO0p2
QmFuZHNEMTFSLmJwaTtKdkRCRDExUi5icGk7SnZEbGdzRDExUi5icGk7SnZCREVEMTFSLmJwaTtK
dkNtcEQxMVIuYnBpO0p2Q3J5cHREMTFSLmJwaTtKdkN0cmxzRDExUi5icGk7SnZDdXN0b21EMTFS
LmJwaTtKdkRvY2tpbmdEMTFSLmJwaTtKdkRvdE5ldEN0cmxzRDExUi5icGk7SnZFRElEMTFSLmJw
aTtKdkdsb2J1c0QxMVIuYnBpO0p2SE1JRDExUi5icGk7SnZJbnRlcnByZXRlckQxMVIuYnBpO0p2
SmFuc0QxMVIuYnBpO0p2TWFuYWdlZFRocmVhZHNEMTFSLmJwaTtKdk1NRDExUi5icGk7SnZOZXRE
MTFSLmJwaTtKdlBhZ2VDb21wc0QxMVIuYnBpO0p2UGx1Z2luRDExUi5icGk7SnZQcmludFByZXZp
ZXdEMTFSLmJwaTtKdlJ1bnRpbWVEZXNpZ25EMTFSLmJwaTtKdlRpbWVGcmFtZXdvcmtEMTFSLmJw
aTtKdlZhbGlkYXRvcnNEMTFSLmJwaTtKdldpemFyZEQxMVIuYnBpO0p2WFBDdHJsc0QxMVIuYnBp
O1ZjbFNtcC5icGk8L1BhY2thZ2VJbXBvcnRzPg0KKyAgICA8QkNDX3dwYXI+ZmFsc2U8L0JDQ193
cGFyPg0KKyAgICA8SW5jbHVkZVBhdGg+JChCRFMpXGluY2x1ZGU7JChCRFMpXGluY2x1ZGVcZGlu
a3Vtd2FyZTskKEJEUylcaW5jbHVkZVx2Y2w7Li5caW5jbHVkZTsuLlx0ZXN0Oy4uPC9JbmNsdWRl
UGF0aD4NCisgICAgPElMSU5LX0xpYnJhcnlQYXRoPiQoQkRTKVxsaWI7JChCRFMpXGxpYlxvYmo7
JChCRFMpXGxpYlxwc2RrOy4uXHRlc3Q8L0lMSU5LX0xpYnJhcnlQYXRoPg0KKyAgICA8TXVsdGl0
aHJlYWRlZD50cnVlPC9NdWx0aXRocmVhZGVkPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFBy
b3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDZmdfMSknIT0nJyI+DQorICAgIDxCQ0NfT3B0aW1p
emVGb3JTcGVlZD5mYWxzZTwvQkNDX09wdGltaXplRm9yU3BlZWQ+DQorICAgIDxEQ0NfT3B0aW1p
emU+ZmFsc2U8L0RDQ19PcHRpbWl6ZT4NCisgICAgPERDQ19EZWJ1Z0luZm9JbkV4ZT50cnVlPC9E
Q0NfRGVidWdJbmZvSW5FeGU+DQorICAgIDxEZWZpbmVzPl9ERUJVRzskKERlZmluZXMpPC9EZWZp
bmVzPg0KKyAgICA8SUxJTktfRnVsbERlYnVnSW5mbz50cnVlPC9JTElOS19GdWxsRGVidWdJbmZv
Pg0KKyAgICA8QkNDX0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPmZhbHNlPC9CQ0NfSW5saW5lRnVu
Y3Rpb25FeHBhbnNpb24+DQorICAgIDxJTElOS19EaXNhYmxlSW5jcmVtZW50YWxMaW5raW5nPnRy
dWU8L0lMSU5LX0Rpc2FibGVJbmNyZW1lbnRhbExpbmtpbmc+DQorICAgIDxCQ0NfVXNlUmVnaXN0
ZXJWYXJpYWJsZXM+Tm9uZTwvQkNDX1VzZVJlZ2lzdGVyVmFyaWFibGVzPg0KKyAgICA8RENDX0Rl
ZmluZT5ERUJVRzwvRENDX0RlZmluZT4NCisgICAgPEJDQ19EZWJ1Z0xpbmVOdW1iZXJzPnRydWU8
L0JDQ19EZWJ1Z0xpbmVOdW1iZXJzPg0KKyAgICA8SW50ZXJtZWRpYXRlT3V0cHV0RGlyPkRlYnVn
PC9JbnRlcm1lZGlhdGVPdXRwdXREaXI+DQorICAgIDxUQVNNX0Rpc3BsYXlTb3VyY2VMaW5lcz50
cnVlPC9UQVNNX0Rpc3BsYXlTb3VyY2VMaW5lcz4NCisgICAgPEJDQ19TdGFja0ZyYW1lcz50cnVl
PC9CQ0NfU3RhY2tGcmFtZXM+DQorICAgIDxCQ0NfRGlzYWJsZU9wdGltaXphdGlvbnM+dHJ1ZTwv
QkNDX0Rpc2FibGVPcHRpbWl6YXRpb25zPg0KKyAgICA8SUxJTktfTGlicmFyeVBhdGg+JChCRFMp
XGxpYlxkZWJ1ZzskKElMSU5LX0xpYnJhcnlQYXRoKTwvSUxJTktfTGlicmFyeVBhdGg+DQorICAg
IDxUQVNNX0RlYnVnZ2luZz5GdWxsPC9UQVNNX0RlYnVnZ2luZz4NCisgICAgPEJDQ19Tb3VyY2VE
ZWJ1Z2dpbmdPbj50cnVlPC9CQ0NfU291cmNlRGVidWdnaW5nT24+DQorICA8L1Byb3BlcnR5R3Jv
dXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENmZ18yKSchPScnIj4NCisgICAg
PERlZmluZXM+TkRFQlVHOyQoRGVmaW5lcyk8L0RlZmluZXM+DQorICAgIDxJbnRlcm1lZGlhdGVP
dXRwdXREaXI+UmVsZWFzZTwvSW50ZXJtZWRpYXRlT3V0cHV0RGlyPg0KKyAgICA8SUxJTktfTGli
cmFyeVBhdGg+JChCRFMpXGxpYlxyZWxlYXNlOyQoSUxJTktfTGlicmFyeVBhdGgpPC9JTElOS19M
aWJyYXJ5UGF0aD4NCisgICAgPFRBU01fRGVidWdnaW5nPk5vbmU8L1RBU01fRGVidWdnaW5nPg0K
KyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb2plY3RFeHRlbnNpb25zPg0KKyAgICA8Qm9ybGFu
ZC5QZXJzb25hbGl0eT5DUGx1c1BsdXNCdWlsZGVyLlBlcnNvbmFsaXR5PC9Cb3JsYW5kLlBlcnNv
bmFsaXR5Pg0KKyAgICA8Qm9ybGFuZC5Qcm9qZWN0VHlwZT5DcHBDb25zb2xlQXBwbGljYXRpb248
L0JvcmxhbmQuUHJvamVjdFR5cGU+DQorICAgIDxCb3JsYW5kUHJvamVjdD4NCis8Qm9ybGFuZFBy
b2plY3Q+PENQbHVzUGx1c0J1aWxkZXIuUGVyc29uYWxpdHk+PFZlcnNpb25JbmZvPjxWZXJzaW9u
SW5mbyBOYW1lPSJJbmNsdWRlVmVySW5mbyI+RmFsc2U8L1ZlcnNpb25JbmZvPjxWZXJzaW9uSW5m
byBOYW1lPSJBdXRvSW5jQnVpbGQiPkZhbHNlPC9WZXJzaW9uSW5mbz48VmVyc2lvbkluZm8gTmFt
ZT0iTWFqb3JWZXIiPjE8L1ZlcnNpb25JbmZvPjxWZXJzaW9uSW5mbyBOYW1lPSJNaW5vclZlciI+
MDwvVmVyc2lvbkluZm8+PFZlcnNpb25JbmZvIE5hbWU9IlJlbGVhc2UiPjA8L1ZlcnNpb25JbmZv
PjxWZXJzaW9uSW5mbyBOYW1lPSJCdWlsZCI+MDwvVmVyc2lvbkluZm8+PFZlcnNpb25JbmZvIE5h
bWU9IkRlYnVnIj5GYWxzZTwvVmVyc2lvbkluZm8+PFZlcnNpb25JbmZvIE5hbWU9IlByZVJlbGVh
c2UiPkZhbHNlPC9WZXJzaW9uSW5mbz48VmVyc2lvbkluZm8gTmFtZT0iU3BlY2lhbCI+RmFsc2U8
L1ZlcnNpb25JbmZvPjxWZXJzaW9uSW5mbyBOYW1lPSJQcml2YXRlIj5GYWxzZTwvVmVyc2lvbklu
Zm8+PFZlcnNpb25JbmZvIE5hbWU9IkRMTCI+RmFsc2U8L1ZlcnNpb25JbmZvPjxWZXJzaW9uSW5m
byBOYW1lPSJMb2NhbGUiPjEwMzM8L1ZlcnNpb25JbmZvPjxWZXJzaW9uSW5mbyBOYW1lPSJDb2Rl
UGFnZSI+MTI1MjwvVmVyc2lvbkluZm8+PC9WZXJzaW9uSW5mbz48VmVyc2lvbkluZm9LZXlzPjxW
ZXJzaW9uSW5mb0tleXMgTmFtZT0iQ29tcGFueU5hbWUiPjwvVmVyc2lvbkluZm9LZXlzPjxWZXJz
aW9uSW5mb0tleXMgTmFtZT0iRmlsZURlc2NyaXB0aW9uIj48L1ZlcnNpb25JbmZvS2V5cz48VmVy
c2lvbkluZm9LZXlzIE5hbWU9IkZpbGVWZXJzaW9uIj4xLjAuMC4wPC9WZXJzaW9uSW5mb0tleXM+
PFZlcnNpb25JbmZvS2V5cyBOYW1lPSJJbnRlcm5hbE5hbWUiPjwvVmVyc2lvbkluZm9LZXlzPjxW
ZXJzaW9uSW5mb0tleXMgTmFtZT0iTGVnYWxDb3B5cmlnaHQiPjwvVmVyc2lvbkluZm9LZXlzPjxW
ZXJzaW9uSW5mb0tleXMgTmFtZT0iTGVnYWxUcmFkZW1hcmtzIj48L1ZlcnNpb25JbmZvS2V5cz48
VmVyc2lvbkluZm9LZXlzIE5hbWU9Ik9yaWdpbmFsRmlsZW5hbWUiPjwvVmVyc2lvbkluZm9LZXlz
PjxWZXJzaW9uSW5mb0tleXMgTmFtZT0iUHJvZHVjdE5hbWUiPjwvVmVyc2lvbkluZm9LZXlzPjxW
ZXJzaW9uSW5mb0tleXMgTmFtZT0iUHJvZHVjdFZlcnNpb24iPjEuMC4wLjA8L1ZlcnNpb25JbmZv
S2V5cz48VmVyc2lvbkluZm9LZXlzIE5hbWU9IkNvbW1lbnRzIj48L1ZlcnNpb25JbmZvS2V5cz48
L1ZlcnNpb25JbmZvS2V5cz48RGVidWdnaW5nPjxEZWJ1Z2dpbmcgTmFtZT0iRGVidWdTb3VyY2VE
aXJzIj48L0RlYnVnZ2luZz48L0RlYnVnZ2luZz48UGFyYW1ldGVycz48UGFyYW1ldGVycyBOYW1l
PSJSdW5QYXJhbXMiPjwvUGFyYW1ldGVycz48UGFyYW1ldGVycyBOYW1lPSJMYXVuY2hlciI+PC9Q
YXJhbWV0ZXJzPjxQYXJhbWV0ZXJzIE5hbWU9IlVzZUxhdW5jaGVyIj5GYWxzZTwvUGFyYW1ldGVy
cz48UGFyYW1ldGVycyBOYW1lPSJEZWJ1Z0NXRCI+PC9QYXJhbWV0ZXJzPjxQYXJhbWV0ZXJzIE5h
bWU9Ikhvc3RBcHBsaWNhdGlvbiI+PC9QYXJhbWV0ZXJzPjxQYXJhbWV0ZXJzIE5hbWU9IlJlbW90
ZUhvc3QiPjwvUGFyYW1ldGVycz48UGFyYW1ldGVycyBOYW1lPSJSZW1vdGVQYXRoIj48L1BhcmFt
ZXRlcnM+PFBhcmFtZXRlcnMgTmFtZT0iUmVtb3RlUGFyYW1zIj48L1BhcmFtZXRlcnM+PFBhcmFt
ZXRlcnMgTmFtZT0iUmVtb3RlTGF1bmNoZXIiPjwvUGFyYW1ldGVycz48UGFyYW1ldGVycyBOYW1l
PSJVc2VSZW1vdGVMYXVuY2hlciI+RmFsc2U8L1BhcmFtZXRlcnM+PFBhcmFtZXRlcnMgTmFtZT0i
UmVtb3RlQ1dEIj48L1BhcmFtZXRlcnM+PFBhcmFtZXRlcnMgTmFtZT0iUmVtb3RlRGVidWciPkZh
bHNlPC9QYXJhbWV0ZXJzPjxQYXJhbWV0ZXJzIE5hbWU9IkRlYnVnIFN5bWJvbHMgU2VhcmNoIFBh
dGgiPjwvUGFyYW1ldGVycz48UGFyYW1ldGVycyBOYW1lPSJMb2FkQWxsU3ltYm9scyI+VHJ1ZTwv
UGFyYW1ldGVycz48UGFyYW1ldGVycyBOYW1lPSJMb2FkVW5zcGVjaWZpZWRTeW1ib2xzIj5GYWxz
ZTwvUGFyYW1ldGVycz48L1BhcmFtZXRlcnM+PEV4Y2x1ZGVkX1BhY2thZ2VzPg0KKyAgICAgIA0K
KyAgICAgIA0KKyAgICAgIDxFeGNsdWRlZF9QYWNrYWdlcyBOYW1lPSIkKEJEUylcYmluXGJjYm9m
ZmljZTJrMTAwLmJwbCI+Q29kZUdlYXIgQysrQnVpbGRlciBPZmZpY2UgMjAwMCBTZXJ2ZXJzIFBh
Y2thZ2U8L0V4Y2x1ZGVkX1BhY2thZ2VzPg0KKyAgICAgIDxFeGNsdWRlZF9QYWNrYWdlcyBOYW1l
PSIkKEJEUylcYmluXGJjYm9mZmljZXhwMTAwLmJwbCI+Q29kZUdlYXIgQysrQnVpbGRlciBPZmZp
Y2UgWFAgU2VydmVycyBQYWNrYWdlPC9FeGNsdWRlZF9QYWNrYWdlcz4NCisgICAgPC9FeGNsdWRl
ZF9QYWNrYWdlcz48TGlua2VyPjxMaW5rZXIgTmFtZT0iTGliUHJlZml4Ij48L0xpbmtlcj48TGlu
a2VyIE5hbWU9IkxpYlN1ZmZpeCI+PC9MaW5rZXI+PExpbmtlciBOYW1lPSJMaWJWZXJzaW9uIj48
L0xpbmtlcj48L0xpbmtlcj48UHJvamVjdFByb3BlcnRpZXM+PFByb2plY3RQcm9wZXJ0aWVzIE5h
bWU9IkF1dG9TaG93RGVwcyI+RmFsc2U8L1Byb2plY3RQcm9wZXJ0aWVzPjxQcm9qZWN0UHJvcGVy
dGllcyBOYW1lPSJNYW5hZ2VQYXRocyI+VHJ1ZTwvUHJvamVjdFByb3BlcnRpZXM+PFByb2plY3RQ
cm9wZXJ0aWVzIE5hbWU9IlZlcmlmeVBhY2thZ2VzIj5UcnVlPC9Qcm9qZWN0UHJvcGVydGllcz48
L1Byb2plY3RQcm9wZXJ0aWVzPjxIaXN0b3J5TGlzdHNfaGxJbmNsdWRlUGF0aD48SGlzdG9yeUxp
c3RzX2hsSW5jbHVkZVBhdGggTmFtZT0iQ291bnQiPjM8L0hpc3RvcnlMaXN0c19obEluY2x1ZGVQ
YXRoPjxIaXN0b3J5TGlzdHNfaGxJbmNsdWRlUGF0aCBOYW1lPSJJdGVtMCI+JChCRFMpXGluY2x1
ZGU7JChCRFMpXGluY2x1ZGVcZGlua3Vtd2FyZTskKEJEUylcaW5jbHVkZVx2Y2w7Li5caW5jbHVk
ZTsuLlx0ZXN0Oy4uPC9IaXN0b3J5TGlzdHNfaGxJbmNsdWRlUGF0aD48SGlzdG9yeUxpc3RzX2hs
SW5jbHVkZVBhdGggTmFtZT0iSXRlbTEiPiQoQkRTKVxpbmNsdWRlOyQoQkRTKVxpbmNsdWRlXGRp
bmt1bXdhcmU7JChCRFMpXGluY2x1ZGVcdmNsOy4uXGluY2x1ZGU7Li5cdGVzdDwvSGlzdG9yeUxp
c3RzX2hsSW5jbHVkZVBhdGg+PEhpc3RvcnlMaXN0c19obEluY2x1ZGVQYXRoIE5hbWU9Ikl0ZW0y
Ij4kKEJEUylcaW5jbHVkZTskKEJEUylcaW5jbHVkZVxkaW5rdW13YXJlOyQoQkRTKVxpbmNsdWRl
XHZjbDsuLlxpbmNsdWRlPC9IaXN0b3J5TGlzdHNfaGxJbmNsdWRlUGF0aD48L0hpc3RvcnlMaXN0
c19obEluY2x1ZGVQYXRoPjxIaXN0b3J5TGlzdHNfaGxJTElOS19MaWJyYXJ5UGF0aD48SGlzdG9y
eUxpc3RzX2hsSUxJTktfTGlicmFyeVBhdGggTmFtZT0iQ291bnQiPjE8L0hpc3RvcnlMaXN0c19o
bElMSU5LX0xpYnJhcnlQYXRoPjxIaXN0b3J5TGlzdHNfaGxJTElOS19MaWJyYXJ5UGF0aCBOYW1l
PSJJdGVtMCI+JChCRFMpXGxpYjskKEJEUylcbGliXG9iajskKEJEUylcbGliXHBzZGs7Li5cdGVz
dDwvSGlzdG9yeUxpc3RzX2hsSUxJTktfTGlicmFyeVBhdGg+PEhpc3RvcnlMaXN0c19obElMSU5L
X0xpYnJhcnlQYXRoIE5hbWU9Ikl0ZW0xIj4kKEJEUylcbGliOyQoQkRTKVxsaWJcb2JqOyQoQkRT
KVxsaWJccHNkazsuLlx0ZXN0PC9IaXN0b3J5TGlzdHNfaGxJTElOS19MaWJyYXJ5UGF0aD48SGlz
dG9yeUxpc3RzX2hsSUxJTktfTGlicmFyeVBhdGggTmFtZT0iSXRlbTIiPiQoQkRTKVxsaWI7JChC
RFMpXGxpYlxvYmo7JChCRFMpXGxpYlxwc2RrOyQoT1VUUFVURElSKTsuLlx0ZXN0PC9IaXN0b3J5
TGlzdHNfaGxJTElOS19MaWJyYXJ5UGF0aD48L0hpc3RvcnlMaXN0c19obElMSU5LX0xpYnJhcnlQ
YXRoPjxIaXN0b3J5TGlzdHNfaGxEZWZpbmVzPjxIaXN0b3J5TGlzdHNfaGxEZWZpbmVzIE5hbWU9
IkNvdW50Ij4yPC9IaXN0b3J5TGlzdHNfaGxEZWZpbmVzPjxIaXN0b3J5TGlzdHNfaGxEZWZpbmVz
IE5hbWU9Ikl0ZW0wIj5OT19TVFJJQ1Q8L0hpc3RvcnlMaXN0c19obERlZmluZXM+PEhpc3RvcnlM
aXN0c19obERlZmluZXMgTmFtZT0iSXRlbTEiPlNUUklDVDwvSGlzdG9yeUxpc3RzX2hsRGVmaW5l
cz48L0hpc3RvcnlMaXN0c19obERlZmluZXM+PC9DUGx1c1BsdXNCdWlsZGVyLlBlcnNvbmFsaXR5
PjwvQm9ybGFuZFByb2plY3Q+PC9Cb3JsYW5kUHJvamVjdD4NCisgIDwvUHJvamVjdEV4dGVuc2lv
bnM+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoTVNCdWlsZEJpblBhdGgpXEJvcmxhbmQuQ3BwLlRh
cmdldHMiIC8+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Q3BwQ29tcGlsZSBJbmNsdWRlPSIuLlx0
ZXN0XGd0ZXN0X3VuaXR0ZXN0LmNjIj4NCisgICAgICA8QnVpbGRPcmRlcj4wPC9CdWlsZE9yZGVy
Pg0KKyAgICA8L0NwcENvbXBpbGU+DQorICAgIDxDcHBDb21waWxlIEluY2x1ZGU9Imd0ZXN0X2xp
bmsuY2MiPg0KKyAgICAgIDxCdWlsZE9yZGVyPjE8L0J1aWxkT3JkZXI+DQorICAgIDwvQ3BwQ29t
cGlsZT4NCisgICAgPEJ1aWxkQ29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1ZyI+DQorICAgICAg
PEtleT5DZmdfMTwvS2V5Pg0KKyAgICA8L0J1aWxkQ29uZmlndXJhdGlvbj4NCisgICAgPEJ1aWxk
Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlIj4NCisgICAgICA8S2V5PkNmZ18yPC9LZXk+
DQorICAgIDwvQnVpbGRDb25maWd1cmF0aW9uPg0KKyAgPC9JdGVtR3JvdXA+DQorPC9Qcm9qZWN0
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2Nv
bmZpZ3VyZS5hYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2NvbmZpZ3VyZS5hYwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYzU5MmUx
NTgzMDJlZDY5MzMzZGI1MGY3NTUxN2VlYmY4ODY0N2YwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZXRlc3QvY29uZmlndXJlLmFjCkBAIC0wLDAgKzEsNjggQEAKK200X2luY2x1ZGUobTQvYWN4
X3B0aHJlYWQubTQpCisKKyMgQXQgdGhpcyBwb2ludCwgdGhlIFhjb2RlIHByb2plY3QgYXNzdW1l
cyB0aGUgdmVyc2lvbiBzdHJpbmcgd2lsbCBiZSB0aHJlZQorIyBpbnRlZ2VycyBzZXBhcmF0ZWQg
YnkgcGVyaW9kcyBhbmQgc3Vycm91bmRlZCBieSBzcXVhcmUgYnJhY2tldHMgKGUuZy4KKyMgIlsx
LjAuMV0iKS4gSXQgYWxzbyBhc3VtZXMgdGhhdCB0aGVyZSB3b24ndCBiZSBhbnkgY2xvc2luZyBw
YXJlbnRoZXNpcworIyBiZXR3ZWVuICJBQ19JTklUKCIgYW5kIHRoZSBjbG9zaW5nICIpIiBpbmNs
dWRpbmcgY29tbWVudHMgYW5kIHN0cmluZ3MuCitBQ19JTklUKFtHb29nbGUgQysrIFRlc3Rpbmcg
RnJhbWV3b3JrXSwKKyAgICAgICAgWzEuNy4wXSwKKyAgICAgICAgW2dvb2dsZXRlc3RmcmFtZXdv
cmtAZ29vZ2xlZ3JvdXBzLmNvbV0sCisgICAgICAgIFtndGVzdF0pCisKKyMgUHJvdmlkZSB2YXJp
b3VzIG9wdGlvbnMgdG8gaW5pdGlhbGl6ZSB0aGUgQXV0b2NvbmYgYW5kIGNvbmZpZ3VyZSBwcm9j
ZXNzZXMuCitBQ19QUkVSRVEoWzIuNTldKQorQUNfQ09ORklHX1NSQ0RJUihbLi9MSUNFTlNFXSkK
K0FDX0NPTkZJR19NQUNST19ESVIoW200XSkKK0FDX0NPTkZJR19BVVhfRElSKFtidWlsZC1hdXhd
KQorQUNfQ09ORklHX0hFQURFUlMoW2J1aWxkLWF1eC9jb25maWcuaF0pCitBQ19DT05GSUdfRklM
RVMoW01ha2VmaWxlXSkKK0FDX0NPTkZJR19GSUxFUyhbc2NyaXB0cy9ndGVzdC1jb25maWddLCBb
Y2htb2QgK3ggc2NyaXB0cy9ndGVzdC1jb25maWddKQorCisjIEluaXRpYWxpemUgQXV0b21ha2Ug
d2l0aCB2YXJpb3VzIG9wdGlvbnMuIFdlIHJlcXVpcmUgYXQgbGVhc3QgdjEuOSwgcHJldmVudAor
IyBwZWRhbnRpYyBjb21wbGFpbnRzIGFib3V0IHBhY2thZ2UgZmlsZXMsIGFuZCBlbmFibGUgdmFy
aW91cyBkaXN0cmlidXRpb24KKyMgdGFyZ2V0cy4KK0FNX0lOSVRfQVVUT01BS0UoWzEuOSBkaXN0
LWJ6aXAyIGRpc3QtemlwIGZvcmVpZ24gc3ViZGlyLW9iamVjdHNdKQorCisjIENoZWNrIGZvciBw
cm9ncmFtcyB1c2VkIGluIGJ1aWxkaW5nIEdvb2dsZSBUZXN0LgorQUNfUFJPR19DQworQUNfUFJP
R19DWFgKK0FDX0xBTkcoW0MrK10pCitBQ19QUk9HX0xJQlRPT0wKKworIyBUT0RPKGNoYW5kbGVy
Y0Bnb29nbGUuY29tKTogQ3VycmVudGx5IHdlIGFyZW4ndCBydW5uaW5nIHRoZSBQeXRob24gdGVz
dHMKKyMgYWdhaW5zdCB0aGUgaW50ZXJwcmV0ZXIgZGV0ZWN0ZWQgYnkgQU1fUEFUSF9QWVRIT04s
IGFuZCBzbyB3ZSBjb25kaXRpb24KKyMgSEFWRV9QWVRIT04gYnkgcmVxdWlyaW5nICJweXRob24i
IHRvIGJlIGluIHRoZSBQQVRILCBhbmQgdGhhdCBpbnRlcnByZXRlcidzCisjIHZlcnNpb24gdG8g
YmUgPj0gMi4zLiBUaGlzIHdpbGwgYWxsb3cgdGhlIHNjcmlwdHMgdG8gdXNlIGEgIi91c3IvYmlu
L2VudiIKKyMgaGFzaGJhbmcuCitQWVRIT049ICAjIFdlICpkbyBub3QqIGFsbG93IHRoZSB1c2Vy
IHRvIHNwZWNpZnkgYSBweXRob24gaW50ZXJwcmV0ZXIKK0FDX1BBVEhfUFJPRyhbUFlUSE9OXSxb
cHl0aG9uXSxbOl0pCitBU19JRihbdGVzdCAiJFBZVEhPTiIgIT0gIjoiXSwKKyAgICAgIFtBTV9Q
WVRIT05fQ0hFQ0tfVkVSU0lPTihbJFBZVEhPTl0sWzIuM10sWzpdLFtQWVRIT049IjoiXSldKQor
QU1fQ09ORElUSU9OQUwoW0hBVkVfUFlUSE9OXSxbdGVzdCAiJFBZVEhPTiIgIT0gIjoiXSkKKwor
IyBDb25maWd1cmUgcHRocmVhZHMuCitBQ19BUkdfV0lUSChbcHRocmVhZHNdLAorICAgICAgICAg
ICAgW0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtcHRocmVhZHNdLAorICAgICAgICAgICAgICAgW3Vz
ZSBwdGhyZWFkcyAoZGVmYXVsdCBpcyB5ZXMpXSldLAorICAgICAgICAgICAgW3dpdGhfcHRocmVh
ZHM9JHdpdGh2YWxdLAorICAgICAgICAgICAgW3dpdGhfcHRocmVhZHM9Y2hlY2tdKQorCitoYXZl
X3B0aHJlYWRzPW5vCitBU19JRihbdGVzdCAieCR3aXRoX3B0aHJlYWRzIiAhPSAieG5vIl0sCisg
ICAgICBbQUNYX1BUSFJFQUQoCisgICAgICAgIFtdLAorICAgICAgICBbQVNfSUYoW3Rlc3QgIngk
d2l0aF9wdGhyZWFkcyIgIT0gInhjaGVjayJdLAorICAgICAgICAgICAgICAgW0FDX01TR19GQUlM
VVJFKAorICAgICAgICAgICAgICAgICBbLS13aXRoLXB0aHJlYWRzIHdhcyBzcGVjaWZpZWQsIGJ1
dCB1bmFibGUgdG8gYmUgdXNlZF0pXSldKQorICAgICAgIGhhdmVfcHRocmVhZHM9IiRhY3hfcHRo
cmVhZF9vayJdKQorQU1fQ09ORElUSU9OQUwoW0hBVkVfUFRIUkVBRFNdLFt0ZXN0ICJ4JGhhdmVf
cHRocmVhZHMiID0gInh5ZXMiXSkKK0FDX1NVQlNUKFBUSFJFQURfQ0ZMQUdTKQorQUNfU1VCU1Qo
UFRIUkVBRF9MSUJTKQorCisjIFRPRE8oY2hhbmRsZXJjQGdvb2dsZS5jb20pIENoZWNrIGZvciB0
aGUgbmVjZXNzYXJ5IHN5c3RlbSBoZWFkZXJzLgorCisjIFRPRE8oY2hhbmRsZXJjQGdvb2dsZS5j
b20pIENoZWNrIHRoZSB0eXBlcywgc3RydWN0dXJlcywgYW5kIG90aGVyIGNvbXBpbGVyCisjIGFu
ZCBhcmNoaXRlY3R1cmUgY2hhcmFjdGVyaXN0aWNzLgorCisjIE91dHB1dCB0aGUgZ2VuZXJhdGVk
IGZpbGVzLiBObyBmdXJ0aGVyIGF1dG9jb25mIG1hY3JvcyBtYXkgYmUgdXNlZC4KK0FDX09VVFBV
VApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9BZHZhbmNlZEd1aWRlLm1kIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZXRlc3QvZG9jcy9BZHZhbmNlZEd1aWRlLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkzYTY1MjAwZGFkYjBhM2Jk
ODFkNjI5OWI4MDBmYTM4OTA4ZjZmOWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9k
b2NzL0FkdmFuY2VkR3VpZGUubWQKQEAgLTAsMCArMSwyMTgyIEBACisKKworTm93IHRoYXQgeW91
IGhhdmUgcmVhZCBbUHJpbWVyXShQcmltZXIubWQpIGFuZCBsZWFybmVkIGhvdyB0byB3cml0ZSB0
ZXN0cwordXNpbmcgR29vZ2xlIFRlc3QsIGl0J3MgdGltZSB0byBsZWFybiBzb21lIG5ldyB0cmlj
a3MuIFRoaXMgZG9jdW1lbnQKK3dpbGwgc2hvdyB5b3UgbW9yZSBhc3NlcnRpb25zIGFzIHdlbGwg
YXMgaG93IHRvIGNvbnN0cnVjdCBjb21wbGV4CitmYWlsdXJlIG1lc3NhZ2VzLCBwcm9wYWdhdGUg
ZmF0YWwgZmFpbHVyZXMsIHJldXNlIGFuZCBzcGVlZCB1cCB5b3VyCit0ZXN0IGZpeHR1cmVzLCBh
bmQgdXNlIHZhcmlvdXMgZmxhZ3Mgd2l0aCB5b3VyIHRlc3RzLgorCisjIE1vcmUgQXNzZXJ0aW9u
cyAjCisKK1RoaXMgc2VjdGlvbiBjb3ZlcnMgc29tZSBsZXNzIGZyZXF1ZW50bHkgdXNlZCwgYnV0
IHN0aWxsIHNpZ25pZmljYW50LAorYXNzZXJ0aW9ucy4KKworIyMgRXhwbGljaXQgU3VjY2VzcyBh
bmQgRmFpbHVyZSAjIworCitUaGVzZSB0aHJlZSBhc3NlcnRpb25zIGRvIG5vdCBhY3R1YWxseSB0
ZXN0IGEgdmFsdWUgb3IgZXhwcmVzc2lvbi4gSW5zdGVhZCwKK3RoZXkgZ2VuZXJhdGUgYSBzdWNj
ZXNzIG9yIGZhaWx1cmUgZGlyZWN0bHkuIExpa2UgdGhlIG1hY3JvcyB0aGF0IGFjdHVhbGx5Citw
ZXJmb3JtIGEgdGVzdCwgeW91IG1heSBzdHJlYW0gYSBjdXN0b20gZmFpbHVyZSBtZXNzYWdlIGlu
dG8gdGhlIHRoZW0uCisKK3wgYFNVQ0NFRUQoKTtgIHwKK3w6LS0tLS0tLS0tLS0tLXwKKworR2Vu
ZXJhdGVzIGEgc3VjY2Vzcy4gVGhpcyBkb2VzIE5PVCBtYWtlIHRoZSBvdmVyYWxsIHRlc3Qgc3Vj
Y2VlZC4gQSB0ZXN0IGlzCitjb25zaWRlcmVkIHN1Y2Nlc3NmdWwgb25seSBpZiBub25lIG9mIGl0
cyBhc3NlcnRpb25zIGZhaWwgZHVyaW5nIGl0cyBleGVjdXRpb24uCisKK05vdGU6IGBTVUNDRUVE
KClgIGlzIHB1cmVseSBkb2N1bWVudGFyeSBhbmQgY3VycmVudGx5IGRvZXNuJ3QgZ2VuZXJhdGUg
YW55Cit1c2VyLXZpc2libGUgb3V0cHV0LiBIb3dldmVyLCB3ZSBtYXkgYWRkIGBTVUNDRUVEKClg
IG1lc3NhZ2VzIHRvIEdvb2dsZSBUZXN0J3MKK291dHB1dCBpbiB0aGUgZnV0dXJlLgorCit8IGBG
QUlMKCk7YCAgfCBgQUREX0ZBSUxVUkUoKTtgIHwgYEFERF9GQUlMVVJFX0FUKCJgX2ZpbGVcX3Bh
dGhfYCIsIGBfbGluZVxfbnVtYmVyX2ApO2AgfAorfDotLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0t
LS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLXwKKworYEZBSUwoKWAgZ2VuZXJhdGVzIGEgZmF0YWwgZmFpbHVyZSwgd2hpbGUgYEFERF9G
QUlMVVJFKClgIGFuZCBgQUREX0ZBSUxVUkVfQVQoKWAgZ2VuZXJhdGUgYSBub25mYXRhbAorZmFp
bHVyZS4gVGhlc2UgYXJlIHVzZWZ1bCB3aGVuIGNvbnRyb2wgZmxvdywgcmF0aGVyIHRoYW4gYSBC
b29sZWFuIGV4cHJlc3Npb24sCitkZXRlcmVtaW5lcyB0aGUgdGVzdCdzIHN1Y2Nlc3Mgb3IgZmFp
bHVyZS4gRm9yIGV4YW1wbGUsIHlvdSBtaWdodCB3YW50IHRvIHdyaXRlCitzb21ldGhpbmcgbGlr
ZToKKworYGBgCitzd2l0Y2goZXhwcmVzc2lvbikgeworICBjYXNlIDE6IC4uLiBzb21lIGNoZWNr
cyAuLi4KKyAgY2FzZSAyOiAuLi4gc29tZSBvdGhlciBjaGVja3MKKyAgLi4uCisgIGRlZmF1bHQ6
IEZBSUwoKSA8PCAiV2Ugc2hvdWxkbid0IGdldCBoZXJlLiI7Cit9CitgYGAKKworTm90ZTogeW91
IGNhbiBvbmx5IHVzZSBgRkFJTCgpYCBpbiBmdW5jdGlvbnMgdGhhdCByZXR1cm4gYHZvaWRgLiBT
ZWUgdGhlIFtBc3NlcnRpb24gUGxhY2VtZW50IHNlY3Rpb25dKCNhc3NlcnRpb24tcGxhY2VtZW50
KSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dz
LCBNYWMuCisKKyMjIEV4Y2VwdGlvbiBBc3NlcnRpb25zICMjCisKK1RoZXNlIGFyZSBmb3IgdmVy
aWZ5aW5nIHRoYXQgYSBwaWVjZSBvZiBjb2RlIHRocm93cyAob3IgZG9lcyBub3QKK3Rocm93KSBh
biBleGNlcHRpb24gb2YgdGhlIGdpdmVuIHR5cGU6CisKK3wgKipGYXRhbCBhc3NlcnRpb24qKiB8
ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0tLS0tLS0t
LS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8IGBBU1NF
UlRfVEhST1coYF9zdGF0ZW1lbnRfLCBfZXhjZXB0aW9uXF90eXBlX2ApO2AgIHwgYEVYUEVDVF9U
SFJPVyhgX3N0YXRlbWVudF8sIF9leGNlcHRpb25cX3R5cGVfYCk7YCAgfCBfc3RhdGVtZW50XyB0
aHJvd3MgYW4gZXhjZXB0aW9uIG9mIHRoZSBnaXZlbiB0eXBlICB8Cit8IGBBU1NFUlRfQU5ZX1RI
Uk9XKGBfc3RhdGVtZW50X2ApO2AgICAgICAgICAgICAgICAgfCBgRVhQRUNUX0FOWV9USFJPVyhg
X3N0YXRlbWVudF9gKTtgICAgICAgICAgICAgICAgIHwgX3N0YXRlbWVudF8gdGhyb3dzIGFuIGV4
Y2VwdGlvbiBvZiBhbnkgdHlwZSAgICAgICAgfAorfCBgQVNTRVJUX05PX1RIUk9XKGBfc3RhdGVt
ZW50X2ApO2AgICAgICAgICAgICAgICAgIHwgYEVYUEVDVF9OT19USFJPVyhgX3N0YXRlbWVudF9g
KTtgICAgICAgICAgICAgICAgICB8IF9zdGF0ZW1lbnRfIGRvZXNuJ3QgdGhyb3cgYW55IGV4Y2Vw
dGlvbiAgICAgICAgICAgIHwKKworRXhhbXBsZXM6CisKK2BgYAorQVNTRVJUX1RIUk9XKEZvbyg1
KSwgYmFyX2V4Y2VwdGlvbik7CisKK0VYUEVDVF9OT19USFJPVyh7CisgIGludCBuID0gNTsKKyAg
QmFyKCZuKTsKK30pOworYGBgCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFj
OyBzaW5jZSB2ZXJzaW9uIDEuMS4wLgorCisjIyBQcmVkaWNhdGUgQXNzZXJ0aW9ucyBmb3IgQmV0
dGVyIEVycm9yIE1lc3NhZ2VzICMjCisKK0V2ZW4gdGhvdWdoIEdvb2dsZSBUZXN0IGhhcyBhIHJp
Y2ggc2V0IG9mIGFzc2VydGlvbnMsIHRoZXkgY2FuIG5ldmVyIGJlCitjb21wbGV0ZSwgYXMgaXQn
cyBpbXBvc3NpYmxlIChub3IgYSBnb29kIGlkZWEpIHRvIGFudGljaXBhdGUgYWxsIHRoZSBzY2Vu
YXJpb3MKK2EgdXNlciBtaWdodCBydW4gaW50by4gVGhlcmVmb3JlLCBzb21ldGltZXMgYSB1c2Vy
IGhhcyB0byB1c2UgYEVYUEVDVF9UUlVFKClgCit0byBjaGVjayBhIGNvbXBsZXggZXhwcmVzc2lv
biwgZm9yIGxhY2sgb2YgYSBiZXR0ZXIgbWFjcm8uIFRoaXMgaGFzIHRoZSBwcm9ibGVtCitvZiBu
b3Qgc2hvd2luZyB5b3UgdGhlIHZhbHVlcyBvZiB0aGUgcGFydHMgb2YgdGhlIGV4cHJlc3Npb24s
IG1ha2luZyBpdCBoYXJkIHRvCit1bmRlcnN0YW5kIHdoYXQgd2VudCB3cm9uZy4gQXMgYSB3b3Jr
YXJvdW5kLCBzb21lIHVzZXJzIGNob29zZSB0byBjb25zdHJ1Y3QgdGhlCitmYWlsdXJlIG1lc3Nh
Z2UgYnkgdGhlbXNlbHZlcywgc3RyZWFtaW5nIGl0IGludG8gYEVYUEVDVF9UUlVFKClgLiBIb3dl
dmVyLCB0aGlzCitpcyBhd2t3YXJkIGVzcGVjaWFsbHkgd2hlbiB0aGUgZXhwcmVzc2lvbiBoYXMg
c2lkZS1lZmZlY3RzIG9yIGlzIGV4cGVuc2l2ZSB0bworZXZhbHVhdGUuCisKK0dvb2dsZSBUZXN0
IGdpdmVzIHlvdSB0aHJlZSBkaWZmZXJlbnQgb3B0aW9ucyB0byBzb2x2ZSB0aGlzIHByb2JsZW06
CisKKyMjIyBVc2luZyBhbiBFeGlzdGluZyBCb29sZWFuIEZ1bmN0aW9uICMjIworCitJZiB5b3Ug
YWxyZWFkeSBoYXZlIGEgZnVuY3Rpb24gb3IgYSBmdW5jdG9yIHRoYXQgcmV0dXJucyBgYm9vbGAg
KG9yIGEgdHlwZQordGhhdCBjYW4gYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gYGJvb2xgKSwg
eW91IGNhbiB1c2UgaXQgaW4gYSBfcHJlZGljYXRlCithc3NlcnRpb25fIHRvIGdldCB0aGUgZnVu
Y3Rpb24gYXJndW1lbnRzIHByaW50ZWQgZm9yIGZyZWU6CisKK3wgKipGYXRhbCBhc3NlcnRpb24q
KiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0tLS0t
LS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8IGBB
U1NFUlRfUFJFRDEoYF9wcmVkMSwgdmFsMV9gKTtgICAgICAgIHwgYEVYUEVDVF9QUkVEMShgX3By
ZWQxLCB2YWwxX2ApO2AgfCBfcHJlZDEodmFsMSlfIHJldHVybnMgdHJ1ZSB8Cit8IGBBU1NFUlRf
UFJFRDIoYF9wcmVkMiwgdmFsMSwgdmFsMl9gKTtgIHwgYEVYUEVDVF9QUkVEMihgX3ByZWQyLCB2
YWwxLCB2YWwyX2ApO2AgfCAgX3ByZWQyKHZhbDEsIHZhbDIpXyByZXR1cm5zIHRydWUgfAorfCAg
Li4uICAgICAgICAgICAgICAgIHwgLi4uICAgICAgICAgICAgICAgICAgICB8IC4uLiAgICAgICAg
ICB8CisKK0luIHRoZSBhYm92ZSwgX3ByZWRuXyBpcyBhbiBfbl8tYXJ5IHByZWRpY2F0ZSBmdW5j
dGlvbiBvciBmdW5jdG9yLCB3aGVyZQorX3ZhbDFfLCBfdmFsMl8sIC4uLiwgYW5kIF92YWxuXyBh
cmUgaXRzIGFyZ3VtZW50cy4gVGhlIGFzc2VydGlvbiBzdWNjZWVkcworaWYgdGhlIHByZWRpY2F0
ZSByZXR1cm5zIGB0cnVlYCB3aGVuIGFwcGxpZWQgdG8gdGhlIGdpdmVuIGFyZ3VtZW50cywgYW5k
IGZhaWxzCitvdGhlcndpc2UuIFdoZW4gdGhlIGFzc2VydGlvbiBmYWlscywgaXQgcHJpbnRzIHRo
ZSB2YWx1ZSBvZiBlYWNoIGFyZ3VtZW50LiBJbgorZWl0aGVyIGNhc2UsIHRoZSBhcmd1bWVudHMg
YXJlIGV2YWx1YXRlZCBleGFjdGx5IG9uY2UuCisKK0hlcmUncyBhbiBleGFtcGxlLiBHaXZlbgor
CitgYGAKKy8vIFJldHVybnMgdHJ1ZSBpZmYgbSBhbmQgbiBoYXZlIG5vIGNvbW1vbiBkaXZpc29y
cyBleGNlcHQgMS4KK2Jvb2wgTXV0dWFsbHlQcmltZShpbnQgbSwgaW50IG4pIHsgLi4uIH0KK2Nv
bnN0IGludCBhID0gMzsKK2NvbnN0IGludCBiID0gNDsKK2NvbnN0IGludCBjID0gMTA7CitgYGAK
KwordGhlIGFzc2VydGlvbiBgRVhQRUNUX1BSRUQyKE11dHVhbGx5UHJpbWUsIGEsIGIpO2Agd2ls
bCBzdWNjZWVkLCB3aGlsZSB0aGUKK2Fzc2VydGlvbiBgRVhQRUNUX1BSRUQyKE11dHVhbGx5UHJp
bWUsIGIsIGMpO2Agd2lsbCBmYWlsIHdpdGggdGhlIG1lc3NhZ2UKKworPHByZT4KKyFNdXR1YWxs
eVByaW1lKGIsIGMpIGlzIGZhbHNlLCB3aGVyZTxicj4KK2IgaXMgNDxicj4KK2MgaXMgMTA8YnI+
Cis8L3ByZT4KKworKipOb3RlczoqKgorCisgIDEuIElmIHlvdSBzZWUgYSBjb21waWxlciBlcnJv
ciAibm8gbWF0Y2hpbmcgZnVuY3Rpb24gdG8gY2FsbCIgd2hlbiB1c2luZyBgQVNTRVJUX1BSRUQq
YCBvciBgRVhQRUNUX1BSRUQqYCwgcGxlYXNlIHNlZSBbdGhpcyBGQVFdKEZBUS5tZCN0aGUtY29t
cGlsZXItY29tcGxhaW5zLW5vLW1hdGNoaW5nLWZ1bmN0aW9uLXRvLWNhbGwtd2hlbi1pLXVzZS1h
c3NlcnRfcHJlZG4taG93LWRvLWktZml4LWl0KSBmb3IgaG93IHRvIHJlc29sdmUgaXQuCisgIDEu
IEN1cnJlbnRseSB3ZSBvbmx5IHByb3ZpZGUgcHJlZGljYXRlIGFzc2VydGlvbnMgb2YgYXJpdHkg
PD0gNS4gSWYgeW91IG5lZWQgYSBoaWdoZXItYXJpdHkgYXNzZXJ0aW9uLCBsZXQgdXMga25vdy4K
KworX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMKKworIyMjIFVzaW5nIGEgRnVu
Y3Rpb24gVGhhdCBSZXR1cm5zIGFuIEFzc2VydGlvblJlc3VsdCAjIyMKKworV2hpbGUgYEVYUEVD
VF9QUkVEKigpYCBhbmQgZnJpZW5kcyBhcmUgaGFuZHkgZm9yIGEgcXVpY2sgam9iLCB0aGUKK3N5
bnRheCBpcyBub3Qgc2F0aXNmYWN0b3J5OiB5b3UgaGF2ZSB0byB1c2UgZGlmZmVyZW50IG1hY3Jv
cyBmb3IKK2RpZmZlcmVudCBhcml0aWVzLCBhbmQgaXQgZmVlbHMgbW9yZSBsaWtlIExpc3AgdGhh
biBDKysuICBUaGUKK2A6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdGAgY2xhc3Mgc29sdmVzIHRo
aXMgcHJvYmxlbS4KKworQW4gYEFzc2VydGlvblJlc3VsdGAgb2JqZWN0IHJlcHJlc2VudHMgdGhl
IHJlc3VsdCBvZiBhbiBhc3NlcnRpb24KKyh3aGV0aGVyIGl0J3MgYSBzdWNjZXNzIG9yIGEgZmFp
bHVyZSwgYW5kIGFuIGFzc29jaWF0ZWQgbWVzc2FnZSkuICBZb3UKK2NhbiBjcmVhdGUgYW4gYEFz
c2VydGlvblJlc3VsdGAgdXNpbmcgb25lIG9mIHRoZXNlIGZhY3RvcnkKK2Z1bmN0aW9uczoKKwor
YGBgCituYW1lc3BhY2UgdGVzdGluZyB7CisKKy8vIFJldHVybnMgYW4gQXNzZXJ0aW9uUmVzdWx0
IG9iamVjdCB0byBpbmRpY2F0ZSB0aGF0IGFuIGFzc2VydGlvbiBoYXMKKy8vIHN1Y2NlZWRlZC4K
K0Fzc2VydGlvblJlc3VsdCBBc3NlcnRpb25TdWNjZXNzKCk7CisKKy8vIFJldHVybnMgYW4gQXNz
ZXJ0aW9uUmVzdWx0IG9iamVjdCB0byBpbmRpY2F0ZSB0aGF0IGFuIGFzc2VydGlvbiBoYXMKKy8v
IGZhaWxlZC4KK0Fzc2VydGlvblJlc3VsdCBBc3NlcnRpb25GYWlsdXJlKCk7CisKK30KK2BgYAor
CitZb3UgY2FuIHRoZW4gdXNlIHRoZSBgPDxgIG9wZXJhdG9yIHRvIHN0cmVhbSBtZXNzYWdlcyB0
byB0aGUKK2BBc3NlcnRpb25SZXN1bHRgIG9iamVjdC4KKworVG8gcHJvdmlkZSBtb3JlIHJlYWRh
YmxlIG1lc3NhZ2VzIGluIEJvb2xlYW4gYXNzZXJ0aW9ucworKGUuZy4gYEVYUEVDVF9UUlVFKClg
KSwgd3JpdGUgYSBwcmVkaWNhdGUgZnVuY3Rpb24gdGhhdCByZXR1cm5zCitgQXNzZXJ0aW9uUmVz
dWx0YCBpbnN0ZWFkIG9mIGBib29sYC4gRm9yIGV4YW1wbGUsIGlmIHlvdSBkZWZpbmUKK2BJc0V2
ZW4oKWAgYXM6CisKK2BgYAorOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgSXNFdmVuKGludCBu
KSB7CisgIGlmICgobiAlIDIpID09IDApCisgICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9u
U3VjY2VzcygpOworICBlbHNlCisgICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVy
ZSgpIDw8IG4gPDwgIiBpcyBvZGQiOworfQorYGBgCisKK2luc3RlYWQgb2Y6CisKK2BgYAorYm9v
bCBJc0V2ZW4oaW50IG4pIHsKKyAgcmV0dXJuIChuICUgMikgPT0gMDsKK30KK2BgYAorCit0aGUg
ZmFpbGVkIGFzc2VydGlvbiBgRVhQRUNUX1RSVUUoSXNFdmVuKEZpYig0KSkpYCB3aWxsIHByaW50
OgorCis8cHJlPgorVmFsdWUgb2Y6IElzRXZlbihGaWIoNCkpPGJyPgorQWN0dWFsOiBmYWxzZSAo
KjMgaXMgb2RkKik8YnI+CitFeHBlY3RlZDogdHJ1ZTxicj4KKzwvcHJlPgorCitpbnN0ZWFkIG9m
IGEgbW9yZSBvcGFxdWUKKworPHByZT4KK1ZhbHVlIG9mOiBJc0V2ZW4oRmliKDQpKTxicj4KK0Fj
dHVhbDogZmFsc2U8YnI+CitFeHBlY3RlZDogdHJ1ZTxicj4KKzwvcHJlPgorCitJZiB5b3Ugd2Fu
dCBpbmZvcm1hdGl2ZSBtZXNzYWdlcyBpbiBgRVhQRUNUX0ZBTFNFYCBhbmQgYEFTU0VSVF9GQUxT
RWAKK2FzIHdlbGwsIGFuZCBhcmUgZmluZSB3aXRoIG1ha2luZyB0aGUgcHJlZGljYXRlIHNsb3dl
ciBpbiB0aGUgc3VjY2VzcworY2FzZSwgeW91IGNhbiBzdXBwbHkgYSBzdWNjZXNzIG1lc3NhZ2U6
CisKK2BgYAorOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgSXNFdmVuKGludCBuKSB7CisgIGlm
ICgobiAlIDIpID09IDApCisgICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uU3VjY2Vzcygp
IDw8IG4gPDwgIiBpcyBldmVuIjsKKyAgZWxzZQorICAgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2Vy
dGlvbkZhaWx1cmUoKSA8PCBuIDw8ICIgaXMgb2RkIjsKK30KK2BgYAorCitUaGVuIHRoZSBzdGF0
ZW1lbnQgYEVYUEVDVF9GQUxTRShJc0V2ZW4oRmliKDYpKSlgIHdpbGwgcHJpbnQKKworPHByZT4K
K1ZhbHVlIG9mOiBJc0V2ZW4oRmliKDYpKTxicj4KK0FjdHVhbDogdHJ1ZSAoOCBpcyBldmVuKTxi
cj4KK0V4cGVjdGVkOiBmYWxzZTxicj4KKzwvcHJlPgorCitfQXZhaWxhYmlsaXR5XzogTGludXgs
IFdpbmRvd3MsIE1hYzsgc2luY2UgdmVyc2lvbiAxLjQuMS4KKworIyMjIFVzaW5nIGEgUHJlZGlj
YXRlLUZvcm1hdHRlciAjIyMKKworSWYgeW91IGZpbmQgdGhlIGRlZmF1bHQgbWVzc2FnZSBnZW5l
cmF0ZWQgYnkgYChBU1NFUlR8RVhQRUNUKV9QUkVEKmAgYW5kCitgKEFTU0VSVHxFWFBFQ1QpXyhU
UlVFfEZBTFNFKWAgdW5zYXRpc2ZhY3RvcnksIG9yIHNvbWUgYXJndW1lbnRzIHRvIHlvdXIKK3By
ZWRpY2F0ZSBkbyBub3Qgc3VwcG9ydCBzdHJlYW1pbmcgdG8gYG9zdHJlYW1gLCB5b3UgY2FuIGlu
c3RlYWQgdXNlIHRoZQorZm9sbG93aW5nIF9wcmVkaWNhdGUtZm9ybWF0dGVyIGFzc2VydGlvbnNf
IHRvIF9mdWxseV8gY3VzdG9taXplIGhvdyB0aGUKK21lc3NhZ2UgaXMgZm9ybWF0dGVkOgorCit8
ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmll
cyoqIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDot
LS0tLS0tLS0tLS0tfAorfCBgQVNTRVJUX1BSRURfRk9STUFUMShgX3ByZWRcX2Zvcm1hdDEsIHZh
bDFfYCk7YCAgICAgICAgfCBgRVhQRUNUX1BSRURfRk9STUFUMShgX3ByZWRcX2Zvcm1hdDEsIHZh
bDFfYCk7YCB8IF9wcmVkXF9mb3JtYXQxKHZhbDEpXyBpcyBzdWNjZXNzZnVsIHwKK3wgYEFTU0VS
VF9QUkVEX0ZPUk1BVDIoYF9wcmVkXF9mb3JtYXQyLCB2YWwxLCB2YWwyX2ApO2AgfCBgRVhQRUNU
X1BSRURfRk9STUFUMihgX3ByZWRcX2Zvcm1hdDIsIHZhbDEsIHZhbDJfYCk7YCB8IF9wcmVkXF9m
b3JtYXQyKHZhbDEsIHZhbDIpXyBpcyBzdWNjZXNzZnVsIHwKK3wgYC4uLmAgICAgICAgICAgICAg
ICB8IGAuLi5gICAgICAgICAgICAgICAgICAgfCBgLi4uYCAgICAgICAgfAorCitUaGUgZGlmZmVy
ZW5jZSBiZXR3ZWVuIHRoaXMgYW5kIHRoZSBwcmV2aW91cyB0d28gZ3JvdXBzIG9mIG1hY3JvcyBp
cyB0aGF0IGluc3RlYWQgb2YKK2EgcHJlZGljYXRlLCBgKEFTU0VSVHxFWFBFQ1QpX1BSRURfRk9S
TUFUKmAgdGFrZSBhIF9wcmVkaWNhdGUtZm9ybWF0dGVyXworKF9wcmVkXF9mb3JtYXRuXyksIHdo
aWNoIGlzIGEgZnVuY3Rpb24gb3IgZnVuY3RvciB3aXRoIHRoZSBzaWduYXR1cmU6CisKK2A6OnRl
c3Rpbmc6OkFzc2VydGlvblJlc3VsdCBQcmVkaWNhdGVGb3JtYXR0ZXJuKGNvbnN0IGNoYXIqIGBf
ZXhwcjFfYCwgY29uc3QgY2hhciogYF9leHByMl9gLCAuLi4gY29uc3QgY2hhciogYF9leHBybl9g
LCBUMSBgX3ZhbDFfYCwgVDIgYF92YWwyX2AsIC4uLiBUbiBgX3ZhbG5fYCk7YAorCit3aGVyZSBf
dmFsMV8sIF92YWwyXywgLi4uLCBhbmQgX3ZhbG5fIGFyZSB0aGUgdmFsdWVzIG9mIHRoZSBwcmVk
aWNhdGUKK2FyZ3VtZW50cywgYW5kIF9leHByMV8sIF9leHByMl8sIC4uLiwgYW5kIF9leHBybl8g
YXJlIHRoZSBjb3JyZXNwb25kaW5nCitleHByZXNzaW9ucyBhcyB0aGV5IGFwcGVhciBpbiB0aGUg
c291cmNlIGNvZGUuIFRoZSB0eXBlcyBgVDFgLCBgVDJgLCAuLi4sIGFuZAorYFRuYCBjYW4gYmUg
ZWl0aGVyIHZhbHVlIHR5cGVzIG9yIHJlZmVyZW5jZSB0eXBlcy4gRm9yIGV4YW1wbGUsIGlmIGFu
Cithcmd1bWVudCBoYXMgdHlwZSBgRm9vYCwgeW91IGNhbiBkZWNsYXJlIGl0IGFzIGVpdGhlciBg
Rm9vYCBvciBgY29uc3QgRm9vJmAsCit3aGljaGV2ZXIgaXMgYXBwcm9wcmlhdGUuCisKK0EgcHJl
ZGljYXRlLWZvcm1hdHRlciByZXR1cm5zIGEgYDo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0YCBv
YmplY3QgdG8gaW5kaWNhdGUKK3doZXRoZXIgdGhlIGFzc2VydGlvbiBoYXMgc3VjY2VlZGVkIG9y
IG5vdC4gVGhlIG9ubHkgd2F5IHRvIGNyZWF0ZSBzdWNoIGFuCitvYmplY3QgaXMgdG8gY2FsbCBv
bmUgb2YgdGhlc2UgZmFjdG9yeSBmdW5jdGlvbnM6CisKK0FzIGFuIGV4YW1wbGUsIGxldCdzIGlt
cHJvdmUgdGhlIGZhaWx1cmUgbWVzc2FnZSBpbiB0aGUgcHJldmlvdXMgZXhhbXBsZSwgd2hpY2gg
dXNlcyBgRVhQRUNUX1BSRUQyKClgOgorCitgYGAKKy8vIFJldHVybnMgdGhlIHNtYWxsZXN0IHBy
aW1lIGNvbW1vbiBkaXZpc29yIG9mIG0gYW5kIG4sCisvLyBvciAxIHdoZW4gbSBhbmQgbiBhcmUg
bXV0dWFsbHkgcHJpbWUuCitpbnQgU21hbGxlc3RQcmltZUNvbW1vbkRpdmlzb3IoaW50IG0sIGlu
dCBuKSB7IC4uLiB9CisKKy8vIEEgcHJlZGljYXRlLWZvcm1hdHRlciBmb3IgYXNzZXJ0aW5nIHRo
YXQgdHdvIGludGVnZXJzIGFyZSBtdXR1YWxseSBwcmltZS4KKzo6dGVzdGluZzo6QXNzZXJ0aW9u
UmVzdWx0IEFzc2VydE11dHVhbGx5UHJpbWUoY29uc3QgY2hhciogbV9leHByLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBuX2V4cHIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbikgewor
ICBpZiAoTXV0dWFsbHlQcmltZShtLCBuKSkKKyAgICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRp
b25TdWNjZXNzKCk7CisKKyAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpCisg
ICAgICA8PCBtX2V4cHIgPDwgIiBhbmQgIiA8PCBuX2V4cHIgPDwgIiAoIiA8PCBtIDw8ICIgYW5k
ICIgPDwgbgorICAgICAgPDwgIikgYXJlIG5vdCBtdXR1YWxseSBwcmltZSwgIiA8PCAiYXMgdGhl
eSBoYXZlIGEgY29tbW9uIGRpdmlzb3IgIgorICAgICAgPDwgU21hbGxlc3RQcmltZUNvbW1vbkRp
dmlzb3IobSwgbik7Cit9CitgYGAKKworV2l0aCB0aGlzIHByZWRpY2F0ZS1mb3JtYXR0ZXIsIHdl
IGNhbiB1c2UKKworYGBgCitFWFBFQ1RfUFJFRF9GT1JNQVQyKEFzc2VydE11dHVhbGx5UHJpbWUs
IGIsIGMpOworYGBgCisKK3RvIGdlbmVyYXRlIHRoZSBtZXNzYWdlCisKKzxwcmU+CitiIGFuZCBj
ICg0IGFuZCAxMCkgYXJlIG5vdCBtdXR1YWxseSBwcmltZSwgYXMgdGhleSBoYXZlIGEgY29tbW9u
IGRpdmlzb3IgMi48YnI+Cis8L3ByZT4KKworQXMgeW91IG1heSBoYXZlIHJlYWxpemVkLCBtYW55
IG9mIHRoZSBhc3NlcnRpb25zIHdlIGludHJvZHVjZWQgZWFybGllciBhcmUKK3NwZWNpYWwgY2Fz
ZXMgb2YgYChFWFBFQ1R8QVNTRVJUKV9QUkVEX0ZPUk1BVCpgLiBJbiBmYWN0LCBtb3N0IG9mIHRo
ZW0gYXJlCitpbmRlZWQgZGVmaW5lZCB1c2luZyBgKEVYUEVDVHxBU1NFUlQpX1BSRURfRk9STUFU
KmAuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgorCisKKyMjIEZsb2F0
aW5nLVBvaW50IENvbXBhcmlzb24gIyMKKworQ29tcGFyaW5nIGZsb2F0aW5nLXBvaW50IG51bWJl
cnMgaXMgdHJpY2t5LiBEdWUgdG8gcm91bmQtb2ZmIGVycm9ycywgaXQgaXMKK3ZlcnkgdW5saWtl
bHkgdGhhdCB0d28gZmxvYXRpbmctcG9pbnRzIHdpbGwgbWF0Y2ggZXhhY3RseS4gVGhlcmVmb3Jl
LAorYEFTU0VSVF9FUWAgJ3MgbmFpdmUgY29tcGFyaXNvbiB1c3VhbGx5IGRvZXNuJ3Qgd29yay4g
QW5kIHNpbmNlIGZsb2F0aW5nLXBvaW50cworY2FuIGhhdmUgYSB3aWRlIHZhbHVlIHJhbmdlLCBu
byBzaW5nbGUgZml4ZWQgZXJyb3IgYm91bmQgd29ya3MuIEl0J3MgYmV0dGVyIHRvCitjb21wYXJl
IGJ5IGEgZml4ZWQgcmVsYXRpdmUgZXJyb3IgYm91bmQsIGV4Y2VwdCBmb3IgdmFsdWVzIGNsb3Nl
IHRvIDAgZHVlIHRvCit0aGUgbG9zcyBvZiBwcmVjaXNpb24gdGhlcmUuCisKK0luIGdlbmVyYWws
IGZvciBmbG9hdGluZy1wb2ludCBjb21wYXJpc29uIHRvIG1ha2Ugc2Vuc2UsIHRoZSB1c2VyIG5l
ZWRzIHRvCitjYXJlZnVsbHkgY2hvb3NlIHRoZSBlcnJvciBib3VuZC4gSWYgdGhleSBkb24ndCB3
YW50IG9yIGNhcmUgdG8sIGNvbXBhcmluZyBpbgordGVybXMgb2YgVW5pdHMgaW4gdGhlIExhc3Qg
UGxhY2UgKFVMUHMpIGlzIGEgZ29vZCBkZWZhdWx0LCBhbmQgR29vZ2xlIFRlc3QKK3Byb3ZpZGVz
IGFzc2VydGlvbnMgdG8gZG8gdGhpcy4gRnVsbCBkZXRhaWxzIGFib3V0IFVMUHMgYXJlIHF1aXRl
IGxvbmc7IGlmIHlvdQord2FudCB0byBsZWFybiBtb3JlLCBzZWUKK1t0aGlzIGFydGljbGUgb24g
ZmxvYXQgY29tcGFyaXNvbl0oaHR0cDovL3d3dy5jeWdudXMtc29mdHdhcmUuY29tL3BhcGVycy9j
b21wYXJpbmdmbG9hdHMvY29tcGFyaW5nZmxvYXRzLmh0bSkuCisKKyMjIyBGbG9hdGluZy1Qb2lu
dCBNYWNyb3MgIyMjCisKK3wgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0
aW9uKiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8IGBBU1NFUlRfRkxPQVRfRVEoYF92YWwx
LCB2YWwyX2ApO2AgIHwgYEVYUEVDVF9GTE9BVF9FUShgX3ZhbDEsIHZhbDJfYCk7YCB8IHRoZSB0
d28gYGZsb2F0YCB2YWx1ZXMgYXJlIGFsbW9zdCBlcXVhbCB8Cit8IGBBU1NFUlRfRE9VQkxFX0VR
KGBfdmFsMSwgdmFsMl9gKTtgIHwgYEVYUEVDVF9ET1VCTEVfRVEoYF92YWwxLCB2YWwyX2ApO2Ag
fCB0aGUgdHdvIGBkb3VibGVgIHZhbHVlcyBhcmUgYWxtb3N0IGVxdWFsIHwKKworQnkgImFsbW9z
dCBlcXVhbCIsIHdlIG1lYW4gdGhlIHR3byB2YWx1ZXMgYXJlIHdpdGhpbiA0IFVMUCdzIGZyb20g
ZWFjaAorb3RoZXIuCisKK1RoZSBmb2xsb3dpbmcgYXNzZXJ0aW9ucyBhbGxvdyB5b3UgdG8gY2hv
b3NlIHRoZSBhY2NlcHRhYmxlIGVycm9yIGJvdW5kOgorCit8ICoqRmF0YWwgYXNzZXJ0aW9uKiog
fCAqKk5vbmZhdGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6LS0tLS0tLS0tLS0t
LS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAorfCBgQVNT
RVJUX05FQVIoYF92YWwxLCB2YWwyLCBhYnNcX2Vycm9yX2ApO2AgfCBgRVhQRUNUX05FQVJgXyh2
YWwxLCB2YWwyLCBhYnNcX2Vycm9yX2ApO2AgfCB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIF92YWwx
XyBhbmQgX3ZhbDJfIGRvZXNuJ3QgZXhjZWVkIHRoZSBnaXZlbiBhYnNvbHV0ZSBlcnJvciB8CisK
K19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMgRmxvYXRpbmctUG9p
bnQgUHJlZGljYXRlLUZvcm1hdCBGdW5jdGlvbnMgIyMjCisKK1NvbWUgZmxvYXRpbmctcG9pbnQg
b3BlcmF0aW9ucyBhcmUgdXNlZnVsLCBidXQgbm90IHRoYXQgb2Z0ZW4gdXNlZC4gSW4gb3JkZXIK
K3RvIGF2b2lkIGFuIGV4cGxvc2lvbiBvZiBuZXcgbWFjcm9zLCB3ZSBwcm92aWRlIHRoZW0gYXMg
cHJlZGljYXRlLWZvcm1hdAorZnVuY3Rpb25zIHRoYXQgY2FuIGJlIHVzZWQgaW4gcHJlZGljYXRl
IGFzc2VydGlvbiBtYWNyb3MgKGUuZy4KK2BFWFBFQ1RfUFJFRF9GT1JNQVQyYCwgZXRjKS4KKwor
YGBgCitFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6RmxvYXRMRSwgdmFsMSwgdmFsMik7
CitFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6RG91YmxlTEUsIHZhbDEsIHZhbDIpOwor
YGBgCisKK1ZlcmlmaWVzIHRoYXQgX3ZhbDFfIGlzIGxlc3MgdGhhbiwgb3IgYWxtb3N0IGVxdWFs
IHRvLCBfdmFsMl8uIFlvdSBjYW4KK3JlcGxhY2UgYEVYUEVDVF9QUkVEX0ZPUk1BVDJgIGluIHRo
ZSBhYm92ZSB0YWJsZSB3aXRoIGBBU1NFUlRfUFJFRF9GT1JNQVQyYC4KKworX0F2YWlsYWJpbGl0
eV86IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIFdpbmRvd3MgSFJFU1VMVCBhc3NlcnRpb25z
ICMjCisKK1RoZXNlIGFzc2VydGlvbnMgdGVzdCBmb3IgYEhSRVNVTFRgIHN1Y2Nlc3Mgb3IgZmFp
bHVyZS4KKworfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8
ICoqVmVyaWZpZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKK3wgYEFTU0VSVF9IUkVTVUxUX1NVQ0NFRURFRChgX2V4
cHJlc3Npb25fYCk7YCB8IGBFWFBFQ1RfSFJFU1VMVF9TVUNDRUVERUQoYF9leHByZXNzaW9uX2Ap
O2AgfCBfZXhwcmVzc2lvbl8gaXMgYSBzdWNjZXNzIGBIUkVTVUxUYCB8Cit8IGBBU1NFUlRfSFJF
U1VMVF9GQUlMRUQoYF9leHByZXNzaW9uX2ApO2AgICAgfCBgRVhQRUNUX0hSRVNVTFRfRkFJTEVE
KGBfZXhwcmVzc2lvbl9gKTtgICAgIHwgX2V4cHJlc3Npb25fIGlzIGEgZmFpbHVyZSBgSFJFU1VM
VGAgfAorCitUaGUgZ2VuZXJhdGVkIG91dHB1dCBjb250YWlucyB0aGUgaHVtYW4tcmVhZGFibGUg
ZXJyb3IgbWVzc2FnZQorYXNzb2NpYXRlZCB3aXRoIHRoZSBgSFJFU1VMVGAgY29kZSByZXR1cm5l
ZCBieSBfZXhwcmVzc2lvbl8uCisKK1lvdSBtaWdodCB1c2UgdGhlbSBsaWtlIHRoaXM6CisKK2Bg
YAorQ0NvbVB0ciBzaGVsbDsKK0FTU0VSVF9IUkVTVUxUX1NVQ0NFRURFRChzaGVsbC5Db0NyZWF0
ZUluc3RhbmNlKEwiU2hlbGwuQXBwbGljYXRpb24iKSk7CitDQ29tVmFyaWFudCBlbXB0eTsKK0FT
U0VSVF9IUkVTVUxUX1NVQ0NFRURFRChzaGVsbC0+U2hlbGxFeGVjdXRlKENDb21CU1RSKHVybCks
IGVtcHR5LCBlbXB0eSwgZW1wdHksIGVtcHR5KSk7CitgYGAKKworX0F2YWlsYWJpbGl0eV86IFdp
bmRvd3MuCisKKyMjIFR5cGUgQXNzZXJ0aW9ucyAjIworCitZb3UgY2FuIGNhbGwgdGhlIGZ1bmN0
aW9uCitgYGAKKzo6dGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxPFQxLCBUMj4oKTsKK2BgYAor
dG8gYXNzZXJ0IHRoYXQgdHlwZXMgYFQxYCBhbmQgYFQyYCBhcmUgdGhlIHNhbWUuICBUaGUgZnVu
Y3Rpb24gZG9lcworbm90aGluZyBpZiB0aGUgYXNzZXJ0aW9uIGlzIHNhdGlzZmllZC4gIElmIHRo
ZSB0eXBlcyBhcmUgZGlmZmVyZW50LAordGhlIGZ1bmN0aW9uIGNhbGwgd2lsbCBmYWlsIHRvIGNv
bXBpbGUsIGFuZCB0aGUgY29tcGlsZXIgZXJyb3IgbWVzc2FnZQord2lsbCBsaWtlbHkgKGRlcGVu
ZGluZyBvbiB0aGUgY29tcGlsZXIpIHNob3cgeW91IHRoZSBhY3R1YWwgdmFsdWVzIG9mCitgVDFg
IGFuZCBgVDJgLiAgVGhpcyBpcyBtYWlubHkgdXNlZnVsIGluc2lkZSB0ZW1wbGF0ZSBjb2RlLgor
CitfQ2F2ZWF0Ol8gV2hlbiB1c2VkIGluc2lkZSBhIG1lbWJlciBmdW5jdGlvbiBvZiBhIGNsYXNz
IHRlbXBsYXRlIG9yIGEKK2Z1bmN0aW9uIHRlbXBsYXRlLCBgU3RhdGljQXNzZXJ0VHlwZUVxPFQx
LCBUMj4oKWAgaXMgZWZmZWN0aXZlIF9vbmx5IGlmXwordGhlIGZ1bmN0aW9uIGlzIGluc3RhbnRp
YXRlZC4gIEZvciBleGFtcGxlLCBnaXZlbjoKK2BgYAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNs
YXNzIEZvbyB7CisgcHVibGljOgorICB2b2lkIEJhcigpIHsgOjp0ZXN0aW5nOjpTdGF0aWNBc3Nl
cnRUeXBlRXE8aW50LCBUPigpOyB9Cit9OworYGBgCit0aGUgY29kZToKK2BgYAordm9pZCBUZXN0
MSgpIHsgRm9vPGJvb2w+IGZvbzsgfQorYGBgCit3aWxsIF9ub3RfIGdlbmVyYXRlIGEgY29tcGls
ZXIgZXJyb3IsIGFzIGBGb288Ym9vbD46OkJhcigpYCBpcyBuZXZlcgorYWN0dWFsbHkgaW5zdGFu
dGlhdGVkLiAgSW5zdGVhZCwgeW91IG5lZWQ6CitgYGAKK3ZvaWQgVGVzdDIoKSB7IEZvbzxib29s
PiBmb287IGZvby5CYXIoKTsgfQorYGBgCit0byBjYXVzZSBhIGNvbXBpbGVyIGVycm9yLgorCitf
QXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYzsgc2luY2UgdmVyc2lvbiAxLjMuMC4K
KworIyMgQXNzZXJ0aW9uIFBsYWNlbWVudCAjIworCitZb3UgY2FuIHVzZSBhc3NlcnRpb25zIGlu
IGFueSBDKysgZnVuY3Rpb24uIEluIHBhcnRpY3VsYXIsIGl0IGRvZXNuJ3QKK2hhdmUgdG8gYmUg
YSBtZXRob2Qgb2YgdGhlIHRlc3QgZml4dHVyZSBjbGFzcy4gVGhlIG9uZSBjb25zdHJhaW50IGlz
Cit0aGF0IGFzc2VydGlvbnMgdGhhdCBnZW5lcmF0ZSBhIGZhdGFsIGZhaWx1cmUgKGBGQUlMKmAg
YW5kIGBBU1NFUlRfKmApCitjYW4gb25seSBiZSB1c2VkIGluIHZvaWQtcmV0dXJuaW5nIGZ1bmN0
aW9ucy4gVGhpcyBpcyBhIGNvbnNlcXVlbmNlIG9mCitHb29nbGUgVGVzdCBub3QgdXNpbmcgZXhj
ZXB0aW9ucy4gQnkgcGxhY2luZyBpdCBpbiBhIG5vbi12b2lkIGZ1bmN0aW9uCit5b3UnbGwgZ2V0
IGEgY29uZnVzaW5nIGNvbXBpbGUgZXJyb3IgbGlrZQorYCJlcnJvcjogdm9pZCB2YWx1ZSBub3Qg
aWdub3JlZCBhcyBpdCBvdWdodCB0byBiZSJgLgorCitJZiB5b3UgbmVlZCB0byB1c2UgYXNzZXJ0
aW9ucyBpbiBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBub24tdm9pZCwgb25lIG9wdGlvbgoraXMg
dG8gbWFrZSB0aGUgZnVuY3Rpb24gcmV0dXJuIHRoZSB2YWx1ZSBpbiBhbiBvdXQgcGFyYW1ldGVy
IGluc3RlYWQuIEZvcgorZXhhbXBsZSwgeW91IGNhbiByZXdyaXRlIGBUMiBGb28oVDEgeClgIHRv
IGB2b2lkIEZvbyhUMSB4LCBUMiogcmVzdWx0KWAuIFlvdQorbmVlZCB0byBtYWtlIHN1cmUgdGhh
dCBgKnJlc3VsdGAgY29udGFpbnMgc29tZSBzZW5zaWJsZSB2YWx1ZSBldmVuIHdoZW4gdGhlCitm
dW5jdGlvbiByZXR1cm5zIHByZW1hdHVyZWx5LiBBcyB0aGUgZnVuY3Rpb24gbm93IHJldHVybnMg
YHZvaWRgLCB5b3UgY2FuIHVzZQorYW55IGFzc2VydGlvbiBpbnNpZGUgb2YgaXQuCisKK0lmIGNo
YW5naW5nIHRoZSBmdW5jdGlvbidzIHR5cGUgaXMgbm90IGFuIG9wdGlvbiwgeW91IHNob3VsZCBq
dXN0IHVzZQorYXNzZXJ0aW9ucyB0aGF0IGdlbmVyYXRlIG5vbi1mYXRhbCBmYWlsdXJlcywgc3Vj
aCBhcyBgQUREX0ZBSUxVUkUqYCBhbmQKK2BFWFBFQ1RfKmAuCisKK19Ob3RlXzogQ29uc3RydWN0
b3JzIGFuZCBkZXN0cnVjdG9ycyBhcmUgbm90IGNvbnNpZGVyZWQgdm9pZC1yZXR1cm5pbmcKK2Z1
bmN0aW9ucywgYWNjb3JkaW5nIHRvIHRoZSBDKysgbGFuZ3VhZ2Ugc3BlY2lmaWNhdGlvbiwgYW5k
IHNvIHlvdSBtYXkgbm90IHVzZQorZmF0YWwgYXNzZXJ0aW9ucyBpbiB0aGVtLiBZb3UnbGwgZ2V0
IGEgY29tcGlsYXRpb24gZXJyb3IgaWYgeW91IHRyeS4gQSBzaW1wbGUKK3dvcmthcm91bmQgaXMg
dG8gdHJhbnNmZXIgdGhlIGVudGlyZSBib2R5IG9mIHRoZSBjb25zdHJ1Y3RvciBvciBkZXN0cnVj
dG9yIHRvIGEKK3ByaXZhdGUgdm9pZC1yZXR1cm5pbmcgbWV0aG9kLiBIb3dldmVyLCB5b3Ugc2hv
dWxkIGJlIGF3YXJlIHRoYXQgYSBmYXRhbAorYXNzZXJ0aW9uIGZhaWx1cmUgaW4gYSBjb25zdHJ1
Y3RvciBkb2VzIG5vdCB0ZXJtaW5hdGUgdGhlIGN1cnJlbnQgdGVzdCwgYXMgeW91cgoraW50dWl0
aW9uIG1pZ2h0IHN1Z2dlc3Q7IGl0IG1lcmVseSByZXR1cm5zIGZyb20gdGhlIGNvbnN0cnVjdG9y
IGVhcmx5LCBwb3NzaWJseQorbGVhdmluZyB5b3VyIG9iamVjdCBpbiBhIHBhcnRpYWxseS1jb25z
dHJ1Y3RlZCBzdGF0ZS4gTGlrZXdpc2UsIGEgZmF0YWwKK2Fzc2VydGlvbiBmYWlsdXJlIGluIGEg
ZGVzdHJ1Y3RvciBtYXkgbGVhdmUgeW91ciBvYmplY3QgaW4gYQorcGFydGlhbGx5LWRlc3RydWN0
ZWQgc3RhdGUuIFVzZSBhc3NlcnRpb25zIGNhcmVmdWxseSBpbiB0aGVzZSBzaXR1YXRpb25zIQor
CisjIFRlYWNoaW5nIEdvb2dsZSBUZXN0IEhvdyB0byBQcmludCBZb3VyIFZhbHVlcyAjCisKK1do
ZW4gYSB0ZXN0IGFzc2VydGlvbiBzdWNoIGFzIGBFWFBFQ1RfRVFgIGZhaWxzLCBHb29nbGUgVGVz
dCBwcmludHMgdGhlCithcmd1bWVudCB2YWx1ZXMgdG8gaGVscCB5b3UgZGVidWcuICBJdCBkb2Vz
IHRoaXMgdXNpbmcgYQordXNlci1leHRlbnNpYmxlIHZhbHVlIHByaW50ZXIuCisKK1RoaXMgcHJp
bnRlciBrbm93cyBob3cgdG8gcHJpbnQgYnVpbHQtaW4gQysrIHR5cGVzLCBuYXRpdmUgYXJyYXlz
LCBTVEwKK2NvbnRhaW5lcnMsIGFuZCBhbnkgdHlwZSB0aGF0IHN1cHBvcnRzIHRoZSBgPDxgIG9w
ZXJhdG9yLiAgRm9yIG90aGVyCit0eXBlcywgaXQgcHJpbnRzIHRoZSByYXcgYnl0ZXMgaW4gdGhl
IHZhbHVlIGFuZCBob3BlcyB0aGF0IHlvdSB0aGUKK3VzZXIgY2FuIGZpZ3VyZSBpdCBvdXQuCisK
K0FzIG1lbnRpb25lZCBlYXJsaWVyLCB0aGUgcHJpbnRlciBpcyBfZXh0ZW5zaWJsZV8uICBUaGF0
IG1lYW5zCit5b3UgY2FuIHRlYWNoIGl0IHRvIGRvIGEgYmV0dGVyIGpvYiBhdCBwcmludGluZyB5
b3VyIHBhcnRpY3VsYXIgdHlwZQordGhhbiB0byBkdW1wIHRoZSBieXRlcy4gIFRvIGRvIHRoYXQs
IGRlZmluZSBgPDxgIGZvciB5b3VyIHR5cGU6CisKK2BgYAorI2luY2x1ZGUgPGlvc3RyZWFtPgor
CituYW1lc3BhY2UgZm9vIHsKKworY2xhc3MgQmFyIHsgLi4uIH07ICAvLyBXZSB3YW50IEdvb2ds
ZSBUZXN0IHRvIGJlIGFibGUgdG8gcHJpbnQgaW5zdGFuY2VzIG9mIHRoaXMuCisKKy8vIEl0J3Mg
aW1wb3J0YW50IHRoYXQgdGhlIDw8IG9wZXJhdG9yIGlzIGRlZmluZWQgaW4gdGhlIFNBTUUKKy8v
IG5hbWVzcGFjZSB0aGF0IGRlZmluZXMgQmFyLiAgQysrJ3MgbG9vay11cCBydWxlcyByZWx5IG9u
IHRoYXQuCis6OnN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PCg6OnN0ZDo6b3N0cmVhbSYgb3MsIGNv
bnN0IEJhciYgYmFyKSB7CisgIHJldHVybiBvcyA8PCBiYXIuRGVidWdTdHJpbmcoKTsgIC8vIHdo
YXRldmVyIG5lZWRlZCB0byBwcmludCBiYXIgdG8gb3MKK30KKworfSAgLy8gbmFtZXNwYWNlIGZv
bworYGBgCisKK1NvbWV0aW1lcywgdGhpcyBtaWdodCBub3QgYmUgYW4gb3B0aW9uOiB5b3VyIHRl
YW0gbWF5IGNvbnNpZGVyIGl0IGJhZAorc3R5bGUgdG8gaGF2ZSBhIGA8PGAgb3BlcmF0b3IgZm9y
IGBCYXJgLCBvciBgQmFyYCBtYXkgYWxyZWFkeSBoYXZlIGEKK2A8PGAgb3BlcmF0b3IgdGhhdCBk
b2Vzbid0IGRvIHdoYXQgeW91IHdhbnQgKGFuZCB5b3UgY2Fubm90IGNoYW5nZQoraXQpLiAgSWYg
c28sIHlvdSBjYW4gaW5zdGVhZCBkZWZpbmUgYSBgUHJpbnRUbygpYCBmdW5jdGlvbiBsaWtlIHRo
aXM6CisKK2BgYAorI2luY2x1ZGUgPGlvc3RyZWFtPgorCituYW1lc3BhY2UgZm9vIHsKKworY2xh
c3MgQmFyIHsgLi4uIH07CisKKy8vIEl0J3MgaW1wb3J0YW50IHRoYXQgUHJpbnRUbygpIGlzIGRl
ZmluZWQgaW4gdGhlIFNBTUUKKy8vIG5hbWVzcGFjZSB0aGF0IGRlZmluZXMgQmFyLiAgQysrJ3Mg
bG9vay11cCBydWxlcyByZWx5IG9uIHRoYXQuCit2b2lkIFByaW50VG8oY29uc3QgQmFyJiBiYXIs
IDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAqb3MgPDwgYmFyLkRlYnVnU3RyaW5nKCk7ICAvLyB3
aGF0ZXZlciBuZWVkZWQgdG8gcHJpbnQgYmFyIHRvIG9zCit9CisKK30gIC8vIG5hbWVzcGFjZSBm
b28KK2BgYAorCitJZiB5b3UgaGF2ZSBkZWZpbmVkIGJvdGggYDw8YCBhbmQgYFByaW50VG8oKWAs
IHRoZSBsYXR0ZXIgd2lsbCBiZSB1c2VkCit3aGVuIEdvb2dsZSBUZXN0IGlzIGNvbmNlcm5lZC4g
IFRoaXMgYWxsb3dzIHlvdSB0byBjdXN0b21pemUgaG93IHRoZSB2YWx1ZQorYXBwZWFycyBpbiBH
b29nbGUgVGVzdCdzIG91dHB1dCB3aXRob3V0IGFmZmVjdGluZyBjb2RlIHRoYXQgcmVsaWVzIG9u
IHRoZQorYmVoYXZpb3Igb2YgaXRzIGA8PGAgb3BlcmF0b3IuCisKK0lmIHlvdSB3YW50IHRvIHBy
aW50IGEgdmFsdWUgYHhgIHVzaW5nIEdvb2dsZSBUZXN0J3MgdmFsdWUgcHJpbnRlcgoreW91cnNl
bGYsIGp1c3QgY2FsbCBgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKGBfeF9gKWAsIHdoaWNoCity
ZXR1cm5zIGFuIGBzdGQ6OnN0cmluZ2A6CisKK2BgYAordmVjdG9yPHBhaXI8QmFyLCBpbnQ+ID4g
YmFyX2ludHMgPSBHZXRCYXJJbnRWZWN0b3IoKTsKKworRVhQRUNUX1RSVUUoSXNDb3JyZWN0QmFy
SW50VmVjdG9yKGJhcl9pbnRzKSkKKyAgICA8PCAiYmFyX2ludHMgPSAiIDw8IDo6dGVzdGluZzo6
UHJpbnRUb1N0cmluZyhiYXJfaW50cyk7CitgYGAKKworIyBEZWF0aCBUZXN0cyAjCisKK0luIG1h
bnkgYXBwbGljYXRpb25zLCB0aGVyZSBhcmUgYXNzZXJ0aW9ucyB0aGF0IGNhbiBjYXVzZSBhcHBs
aWNhdGlvbiBmYWlsdXJlCitpZiBhIGNvbmRpdGlvbiBpcyBub3QgbWV0LiBUaGVzZSBzYW5pdHkg
Y2hlY2tzLCB3aGljaCBlbnN1cmUgdGhhdCB0aGUgcHJvZ3JhbQoraXMgaW4gYSBrbm93biBnb29k
IHN0YXRlLCBhcmUgdGhlcmUgdG8gZmFpbCBhdCB0aGUgZWFybGllc3QgcG9zc2libGUgdGltZSBh
ZnRlcgorc29tZSBwcm9ncmFtIHN0YXRlIGlzIGNvcnJ1cHRlZC4gSWYgdGhlIGFzc2VydGlvbiBj
aGVja3MgdGhlIHdyb25nIGNvbmRpdGlvbiwKK3RoZW4gdGhlIHByb2dyYW0gbWF5IHByb2NlZWQg
aW4gYW4gZXJyb25lb3VzIHN0YXRlLCB3aGljaCBjb3VsZCBsZWFkIHRvIG1lbW9yeQorY29ycnVw
dGlvbiwgc2VjdXJpdHkgaG9sZXMsIG9yIHdvcnNlLiBIZW5jZSBpdCBpcyB2aXRhbGx5IGltcG9y
dGFudCB0byB0ZXN0Cit0aGF0IHN1Y2ggYXNzZXJ0aW9uIHN0YXRlbWVudHMgd29yayBhcyBleHBl
Y3RlZC4KKworU2luY2UgdGhlc2UgcHJlY29uZGl0aW9uIGNoZWNrcyBjYXVzZSB0aGUgcHJvY2Vz
c2VzIHRvIGRpZSwgd2UgY2FsbCBzdWNoIHRlc3RzCitfZGVhdGggdGVzdHNfLiBNb3JlIGdlbmVy
YWxseSwgYW55IHRlc3QgdGhhdCBjaGVja3MgdGhhdCBhIHByb2dyYW0gdGVybWluYXRlcworKGV4
Y2VwdCBieSB0aHJvd2luZyBhbiBleGNlcHRpb24pIGluIGFuIGV4cGVjdGVkIGZhc2hpb24gaXMg
YWxzbyBhIGRlYXRoIHRlc3QuCisKK05vdGUgdGhhdCBpZiBhIHBpZWNlIG9mIGNvZGUgdGhyb3dz
IGFuIGV4Y2VwdGlvbiwgd2UgZG9uJ3QgY29uc2lkZXIgaXQgImRlYXRoIgorZm9yIHRoZSBwdXJw
b3NlIG9mIGRlYXRoIHRlc3RzLCBhcyB0aGUgY2FsbGVyIG9mIHRoZSBjb2RlIGNvdWxkIGNhdGNo
IHRoZSBleGNlcHRpb24KK2FuZCBhdm9pZCB0aGUgY3Jhc2guIElmIHlvdSB3YW50IHRvIHZlcmlm
eSBleGNlcHRpb25zIHRocm93biBieSB5b3VyIGNvZGUsCitzZWUgW0V4Y2VwdGlvbiBBc3NlcnRp
b25zXSgjZXhjZXB0aW9uLWFzc2VydGlvbnMpLgorCitJZiB5b3Ugd2FudCB0byB0ZXN0IGBFWFBF
Q1RfKigpL0FTU0VSVF8qKClgIGZhaWx1cmVzIGluIHlvdXIgdGVzdCBjb2RlLCBzZWUgW0NhdGNo
aW5nIEZhaWx1cmVzXSgjY2F0Y2hpbmctZmFpbHVyZXMpLgorCisjIyBIb3cgdG8gV3JpdGUgYSBE
ZWF0aCBUZXN0ICMjCisKK0dvb2dsZSBUZXN0IGhhcyB0aGUgZm9sbG93aW5nIG1hY3JvcyB0byBz
dXBwb3J0IGRlYXRoIHRlc3RzOgorCit8ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFs
IGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAorfCBgQVNTRVJUX0RFQVRIKGBf
c3RhdGVtZW50LCByZWdleF9gKTtgIHwgYEVYUEVDVF9ERUFUSChgX3N0YXRlbWVudCwgcmVnZXhf
YCk7YCB8IF9zdGF0ZW1lbnRfIGNyYXNoZXMgd2l0aCB0aGUgZ2l2ZW4gZXJyb3IgfAorfCBgQVNT
RVJUX0RFQVRIX0lGX1NVUFBPUlRFRChgX3N0YXRlbWVudCwgcmVnZXhfYCk7YCB8IGBFWFBFQ1Rf
REVBVEhfSUZfU1VQUE9SVEVEKGBfc3RhdGVtZW50LCByZWdleF9gKTtgIHwgaWYgZGVhdGggdGVz
dHMgYXJlIHN1cHBvcnRlZCwgdmVyaWZpZXMgdGhhdCBfc3RhdGVtZW50XyBjcmFzaGVzIHdpdGgg
dGhlIGdpdmVuIGVycm9yOyBvdGhlcndpc2UgdmVyaWZpZXMgbm90aGluZyB8Cit8IGBBU1NFUlRf
RVhJVChgX3N0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleF9gKTtgIHwgYEVYUEVDVF9FWElUKGBf
c3RhdGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4X2ApO2AgfF9zdGF0ZW1lbnRfIGV4aXRzIHdpdGgg
dGhlIGdpdmVuIGVycm9yIGFuZCBpdHMgZXhpdCBjb2RlIG1hdGNoZXMgX3ByZWRpY2F0ZV8gfAor
Cit3aGVyZSBfc3RhdGVtZW50XyBpcyBhIHN0YXRlbWVudCB0aGF0IGlzIGV4cGVjdGVkIHRvIGNh
dXNlIHRoZSBwcm9jZXNzIHRvCitkaWUsIF9wcmVkaWNhdGVfIGlzIGEgZnVuY3Rpb24gb3IgZnVu
Y3Rpb24gb2JqZWN0IHRoYXQgZXZhbHVhdGVzIGFuIGludGVnZXIKK2V4aXQgc3RhdHVzLCBhbmQg
X3JlZ2V4XyBpcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiB0aGF0IHRoZSBzdGRlcnIgb3V0cHV0IG9m
Citfc3RhdGVtZW50XyBpcyBleHBlY3RlZCB0byBtYXRjaC4gTm90ZSB0aGF0IF9zdGF0ZW1lbnRf
IGNhbiBiZSBfYW55IHZhbGlkCitzdGF0ZW1lbnRfIChpbmNsdWRpbmcgX2NvbXBvdW5kIHN0YXRl
bWVudF8pIGFuZCBkb2Vzbid0IGhhdmUgdG8gYmUgYW4KK2V4cHJlc3Npb24uCisKK0FzIHVzdWFs
LCB0aGUgYEFTU0VSVGAgdmFyaWFudHMgYWJvcnQgdGhlIGN1cnJlbnQgdGVzdCBmdW5jdGlvbiwg
d2hpbGUgdGhlCitgRVhQRUNUYCB2YXJpYW50cyBkbyBub3QuCisKKyoqTm90ZToqKiBXZSB1c2Ug
dGhlIHdvcmQgImNyYXNoIiBoZXJlIHRvIG1lYW4gdGhhdCB0aGUgcHJvY2VzcwordGVybWluYXRl
cyB3aXRoIGEgX25vbi16ZXJvXyBleGl0IHN0YXR1cyBjb2RlLiAgVGhlcmUgYXJlIHR3bworcG9z
c2liaWxpdGllczogZWl0aGVyIHRoZSBwcm9jZXNzIGhhcyBjYWxsZWQgYGV4aXQoKWAgb3IgYF9l
eGl0KClgCit3aXRoIGEgbm9uLXplcm8gdmFsdWUsIG9yIGl0IG1heSBiZSBraWxsZWQgYnkgYSBz
aWduYWwuCisKK1RoaXMgbWVhbnMgdGhhdCBpZiBfc3RhdGVtZW50XyB0ZXJtaW5hdGVzIHRoZSBw
cm9jZXNzIHdpdGggYSAwIGV4aXQKK2NvZGUsIGl0IGlzIF9ub3RfIGNvbnNpZGVyZWQgYSBjcmFz
aCBieSBgRVhQRUNUX0RFQVRIYC4gIFVzZQorYEVYUEVDVF9FWElUYCBpbnN0ZWFkIGlmIHRoaXMg
aXMgdGhlIGNhc2UsIG9yIGlmIHlvdSB3YW50IHRvIHJlc3RyaWN0Cit0aGUgZXhpdCBjb2RlIG1v
cmUgcHJlY2lzZWx5LgorCitBIHByZWRpY2F0ZSBoZXJlIG11c3QgYWNjZXB0IGFuIGBpbnRgIGFu
ZCByZXR1cm4gYSBgYm9vbGAuIFRoZSBkZWF0aCB0ZXN0CitzdWNjZWVkcyBvbmx5IGlmIHRoZSBw
cmVkaWNhdGUgcmV0dXJucyBgdHJ1ZWAuIEdvb2dsZSBUZXN0IGRlZmluZXMgYSBmZXcKK3ByZWRp
Y2F0ZXMgdGhhdCBoYW5kbGUgdGhlIG1vc3QgY29tbW9uIGNhc2VzOgorCitgYGAKKzo6dGVzdGlu
Zzo6RXhpdGVkV2l0aENvZGUoZXhpdF9jb2RlKQorYGBgCisKK1RoaXMgZXhwcmVzc2lvbiBpcyBg
dHJ1ZWAgaWYgdGhlIHByb2dyYW0gZXhpdGVkIG5vcm1hbGx5IHdpdGggdGhlIGdpdmVuIGV4aXQK
K2NvZGUuCisKK2BgYAorOjp0ZXN0aW5nOjpLaWxsZWRCeVNpZ25hbChzaWduYWxfbnVtYmVyKSAg
Ly8gTm90IGF2YWlsYWJsZSBvbiBXaW5kb3dzLgorYGBgCisKK1RoaXMgZXhwcmVzc2lvbiBpcyBg
dHJ1ZWAgaWYgdGhlIHByb2dyYW0gd2FzIGtpbGxlZCBieSB0aGUgZ2l2ZW4gc2lnbmFsLgorCitU
aGUgYCpfREVBVEhgIG1hY3JvcyBhcmUgY29udmVuaWVudCB3cmFwcGVycyBmb3IgYCpfRVhJVGAg
dGhhdCB1c2UgYSBwcmVkaWNhdGUKK3RoYXQgdmVyaWZpZXMgdGhlIHByb2Nlc3MnIGV4aXQgY29k
ZSBpcyBub24temVyby4KKworTm90ZSB0aGF0IGEgZGVhdGggdGVzdCBvbmx5IGNhcmVzIGFib3V0
IHRocmVlIHRoaW5nczoKKworICAxLiBkb2VzIF9zdGF0ZW1lbnRfIGFib3J0IG9yIGV4aXQgdGhl
IHByb2Nlc3M/CisgIDEuIChpbiB0aGUgY2FzZSBvZiBgQVNTRVJUX0VYSVRgIGFuZCBgRVhQRUNU
X0VYSVRgKSBkb2VzIHRoZSBleGl0IHN0YXR1cyBzYXRpc2Z5IF9wcmVkaWNhdGVfPyAgT3IgKGlu
IHRoZSBjYXNlIG9mIGBBU1NFUlRfREVBVEhgIGFuZCBgRVhQRUNUX0RFQVRIYCkgaXMgdGhlIGV4
aXQgc3RhdHVzIG5vbi16ZXJvPyAgQW5kCisgIDEuIGRvZXMgdGhlIHN0ZGVyciBvdXRwdXQgbWF0
Y2ggX3JlZ2V4Xz8KKworSW4gcGFydGljdWxhciwgaWYgX3N0YXRlbWVudF8gZ2VuZXJhdGVzIGFu
IGBBU1NFUlRfKmAgb3IgYEVYUEVDVF8qYCBmYWlsdXJlLCBpdCB3aWxsICoqbm90KiogY2F1c2Ug
dGhlIGRlYXRoIHRlc3QgdG8gZmFpbCwgYXMgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBkb24ndCBh
Ym9ydCB0aGUgcHJvY2Vzcy4KKworVG8gd3JpdGUgYSBkZWF0aCB0ZXN0LCBzaW1wbHkgdXNlIG9u
ZSBvZiB0aGUgYWJvdmUgbWFjcm9zIGluc2lkZSB5b3VyIHRlc3QKK2Z1bmN0aW9uLiBGb3IgZXhh
bXBsZSwKKworYGBgCitURVNUKE15RGVhdGhUZXN0LCBGb28pIHsKKyAgLy8gVGhpcyBkZWF0aCB0
ZXN0IHVzZXMgYSBjb21wb3VuZCBzdGF0ZW1lbnQuCisgIEFTU0VSVF9ERUFUSCh7IGludCBuID0g
NTsgRm9vKCZuKTsgfSwgIkVycm9yIG9uIGxpbmUgLiogb2YgRm9vKCkiKTsKK30KK1RFU1QoTXlE
ZWF0aFRlc3QsIE5vcm1hbEV4aXQpIHsKKyAgRVhQRUNUX0VYSVQoTm9ybWFsRXhpdCgpLCA6OnRl
c3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDApLCAiU3VjY2VzcyIpOworfQorVEVTVChNeURlYXRoVGVz
dCwgS2lsbE15c2VsZikgeworICBFWFBFQ1RfRVhJVChLaWxsTXlzZWxmKCksIDo6dGVzdGluZzo6
S2lsbGVkQnlTaWduYWwoU0lHS0lMTCksICJTZW5kaW5nIG15c2VsZiB1bmJsb2NrYWJsZSBzaWdu
YWwiKTsKK30KK2BgYAorCit2ZXJpZmllcyB0aGF0OgorCisgICogY2FsbGluZyBgRm9vKDUpYCBj
YXVzZXMgdGhlIHByb2Nlc3MgdG8gZGllIHdpdGggdGhlIGdpdmVuIGVycm9yIG1lc3NhZ2UsCisg
ICogY2FsbGluZyBgTm9ybWFsRXhpdCgpYCBjYXVzZXMgdGhlIHByb2Nlc3MgdG8gcHJpbnQgYCJT
dWNjZXNzImAgdG8gc3RkZXJyIGFuZCBleGl0IHdpdGggZXhpdCBjb2RlIDAsIGFuZAorICAqIGNh
bGxpbmcgYEtpbGxNeXNlbGYoKWAga2lsbHMgdGhlIHByb2Nlc3Mgd2l0aCBzaWduYWwgYFNJR0tJ
TExgLgorCitUaGUgdGVzdCBmdW5jdGlvbiBib2R5IG1heSBjb250YWluIG90aGVyIGFzc2VydGlv
bnMgYW5kIHN0YXRlbWVudHMgYXMgd2VsbCwgaWYKK25lY2Vzc2FyeS4KKworX0ltcG9ydGFudDpf
IFdlIHN0cm9uZ2x5IHJlY29tbWVuZCB5b3UgdG8gZm9sbG93IHRoZSBjb252ZW50aW9uIG9mIG5h
bWluZyB5b3VyCit0ZXN0IGNhc2UgKG5vdCB0ZXN0KSBgKkRlYXRoVGVzdGAgd2hlbiBpdCBjb250
YWlucyBhIGRlYXRoIHRlc3QsIGFzCitkZW1vbnN0cmF0ZWQgaW4gdGhlIGFib3ZlIGV4YW1wbGUu
IFRoZSBgRGVhdGggVGVzdHMgQW5kIFRocmVhZHNgIHNlY3Rpb24gYmVsb3cKK2V4cGxhaW5zIHdo
eS4KKworSWYgYSB0ZXN0IGZpeHR1cmUgY2xhc3MgaXMgc2hhcmVkIGJ5IG5vcm1hbCB0ZXN0cyBh
bmQgZGVhdGggdGVzdHMsIHlvdQorY2FuIHVzZSB0eXBlZGVmIHRvIGludHJvZHVjZSBhbiBhbGlh
cyBmb3IgdGhlIGZpeHR1cmUgY2xhc3MgYW5kIGF2b2lkCitkdXBsaWNhdGluZyBpdHMgY29kZToK
K2BgYAorY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeyAuLi4gfTsKKwor
dHlwZWRlZiBGb29UZXN0IEZvb0RlYXRoVGVzdDsKKworVEVTVF9GKEZvb1Rlc3QsIERvZXNUaGlz
KSB7CisgIC8vIG5vcm1hbCB0ZXN0Cit9CisKK1RFU1RfRihGb29EZWF0aFRlc3QsIERvZXNUaGF0
KSB7CisgIC8vIGRlYXRoIHRlc3QKK30KK2BgYAorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdp
bmRvd3MgKHJlcXVpcmVzIE1TVkMgOC4wIG9yIGFib3ZlKSwgQ3lnd2luLCBhbmQgTWFjICh0aGUg
bGF0dGVyIHRocmVlIGFyZSBzdXBwb3J0ZWQgc2luY2UgdjEuMy4wKS4gIGAoQVNTRVJUfEVYUEVD
VClfREVBVEhfSUZfU1VQUE9SVEVEYCBhcmUgbmV3IGluIHYxLjQuMC4KKworIyMgUmVndWxhciBF
eHByZXNzaW9uIFN5bnRheCAjIworCitPbiBQT1NJWCBzeXN0ZW1zIChlLmcuIExpbnV4LCBDeWd3
aW4sIGFuZCBNYWMpLCBHb29nbGUgVGVzdCB1c2VzIHRoZQorW1BPU0lYIGV4dGVuZGVkIHJlZ3Vs
YXIgZXhwcmVzc2lvbl0oaHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvMDA5Njk1
Mzk5L2Jhc2VkZWZzL3hiZF9jaGFwMDkuaHRtbCN0YWdfMDlfMDQpCitzeW50YXggaW4gZGVhdGgg
dGVzdHMuIFRvIGxlYXJuIGFib3V0IHRoaXMgc3ludGF4LCB5b3UgbWF5IHdhbnQgdG8gcmVhZCB0
aGlzIFtXaWtpcGVkaWEgZW50cnldKGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVndWxh
cl9leHByZXNzaW9uI1BPU0lYX0V4dGVuZGVkX1JlZ3VsYXJfRXhwcmVzc2lvbnMpLgorCitPbiBX
aW5kb3dzLCBHb29nbGUgVGVzdCB1c2VzIGl0cyBvd24gc2ltcGxlIHJlZ3VsYXIgZXhwcmVzc2lv
bgoraW1wbGVtZW50YXRpb24uIEl0IGxhY2tzIG1hbnkgZmVhdHVyZXMgeW91IGNhbiBmaW5kIGlu
IFBPU0lYIGV4dGVuZGVkCityZWd1bGFyIGV4cHJlc3Npb25zLiAgRm9yIGV4YW1wbGUsIHdlIGRv
bid0IHN1cHBvcnQgdW5pb24gKGAieHx5ImApLAorZ3JvdXBpbmcgKGAiKHh5KSJgKSwgYnJhY2tl
dHMgKGAiW3h5XSJgKSwgYW5kIHJlcGV0aXRpb24gY291bnQKKyhgInh7NSw3fSJgKSwgYW1vbmcg
b3RoZXJzLiBCZWxvdyBpcyB3aGF0IHdlIGRvIHN1cHBvcnQgKExldHRlciBgQWAgZGVub3RlcyBh
CitsaXRlcmFsIGNoYXJhY3RlciwgcGVyaW9kIChgLmApLCBvciBhIHNpbmdsZSBgXFxgIGVzY2Fw
ZSBzZXF1ZW5jZTsgYHhgCithbmQgYHlgIGRlbm90ZSByZWd1bGFyIGV4cHJlc3Npb25zLik6CisK
K3wgYGNgIHwgbWF0Y2hlcyBhbnkgbGl0ZXJhbCBjaGFyYWN0ZXIgYGNgIHwKK3w6LS0tLXw6LS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKK3wgYFxcZGAgfCBtYXRjaGVzIGFueSBk
ZWNpbWFsIGRpZ2l0ICAgICAgICAgfAorfCBgXFxEYCB8IG1hdGNoZXMgYW55IGNoYXJhY3RlciB0
aGF0J3Mgbm90IGEgZGVjaW1hbCBkaWdpdCB8Cit8IGBcXGZgIHwgbWF0Y2hlcyBgXGZgICAgICAg
ICAgICAgICAgICAgICAgIHwKK3wgYFxcbmAgfCBtYXRjaGVzIGBcbmAgICAgICAgICAgICAgICAg
ICAgICAgfAorfCBgXFxyYCB8IG1hdGNoZXMgYFxyYCAgICAgICAgICAgICAgICAgICAgICB8Cit8
IGBcXHNgIHwgbWF0Y2hlcyBhbnkgQVNDSUkgd2hpdGVzcGFjZSwgaW5jbHVkaW5nIGBcbmAgfAor
fCBgXFxTYCB8IG1hdGNoZXMgYW55IGNoYXJhY3RlciB0aGF0J3Mgbm90IGEgd2hpdGVzcGFjZSB8
Cit8IGBcXHRgIHwgbWF0Y2hlcyBgXHRgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYFxcdmAg
fCBtYXRjaGVzIGBcdmAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgXFx3YCB8IG1hdGNoZXMg
YW55IGxldHRlciwgYF9gLCBvciBkZWNpbWFsIGRpZ2l0IHwKK3wgYFxcV2AgfCBtYXRjaGVzIGFu
eSBjaGFyYWN0ZXIgdGhhdCBgXFx3YCBkb2Vzbid0IG1hdGNoIHwKK3wgYFxcY2AgfCBtYXRjaGVz
IGFueSBsaXRlcmFsIGNoYXJhY3RlciBgY2AsIHdoaWNoIG11c3QgYmUgYSBwdW5jdHVhdGlvbiB8
Cit8IGBcXC5gIHwgbWF0Y2hlcyB0aGUgYC5gIGNoYXJhY3RlciAgICAgICAgIHwKK3wgYC5gIHwg
bWF0Y2hlcyBhbnkgc2luZ2xlIGNoYXJhY3RlciBleGNlcHQgYFxuYCB8Cit8IGBBP2AgfCBtYXRj
aGVzIDAgb3IgMSBvY2N1cnJlbmNlcyBvZiBgQWAgfAorfCBgQSpgIHwgbWF0Y2hlcyAwIG9yIG1h
bnkgb2NjdXJyZW5jZXMgb2YgYEFgIHwKK3wgYEErYCB8IG1hdGNoZXMgMSBvciBtYW55IG9jY3Vy
cmVuY2VzIG9mIGBBYCB8Cit8IGBeYCB8IG1hdGNoZXMgdGhlIGJlZ2lubmluZyBvZiBhIHN0cmlu
ZyAobm90IHRoYXQgb2YgZWFjaCBsaW5lKSB8Cit8IGAkYCB8IG1hdGNoZXMgdGhlIGVuZCBvZiBh
IHN0cmluZyAobm90IHRoYXQgb2YgZWFjaCBsaW5lKSB8Cit8IGB4eWAgfCBtYXRjaGVzIGB4YCBm
b2xsb3dlZCBieSBgeWAgICAgICAgfAorCitUbyBoZWxwIHlvdSBkZXRlcm1pbmUgd2hpY2ggY2Fw
YWJpbGl0eSBpcyBhdmFpbGFibGUgb24geW91ciBzeXN0ZW0sCitHb29nbGUgVGVzdCBkZWZpbmVz
IG1hY3JvIGBHVEVTVF9VU0VTX1BPU0lYX1JFPTFgIHdoZW4gaXQgdXNlcyBQT1NJWAorZXh0ZW5k
ZWQgcmVndWxhciBleHByZXNzaW9ucywgb3IgYEdURVNUX1VTRVNfU0lNUExFX1JFPTFgIHdoZW4g
aXQgdXNlcwordGhlIHNpbXBsZSB2ZXJzaW9uLiAgSWYgeW91IHdhbnQgeW91ciBkZWF0aCB0ZXN0
cyB0byB3b3JrIGluIGJvdGgKK2Nhc2VzLCB5b3UgY2FuIGVpdGhlciBgI2lmYCBvbiB0aGVzZSBt
YWNyb3Mgb3IgdXNlIHRoZSBtb3JlIGxpbWl0ZWQKK3N5bnRheCBvbmx5LgorCisjIyBIb3cgSXQg
V29ya3MgIyMKKworVW5kZXIgdGhlIGhvb2QsIGBBU1NFUlRfRVhJVCgpYCBzcGF3bnMgYSBuZXcg
cHJvY2VzcyBhbmQgZXhlY3V0ZXMgdGhlCitkZWF0aCB0ZXN0IHN0YXRlbWVudCBpbiB0aGF0IHBy
b2Nlc3MuIFRoZSBkZXRhaWxzIG9mIG9mIGhvdyBwcmVjaXNlbHkKK3RoYXQgaGFwcGVucyBkZXBl
bmQgb24gdGhlIHBsYXRmb3JtIGFuZCB0aGUgdmFyaWFibGUKK2A6OnRlc3Rpbmc6OkdURVNUX0ZM
QUcoZGVhdGhfdGVzdF9zdHlsZSlgICh3aGljaCBpcyBpbml0aWFsaXplZCBmcm9tIHRoZQorY29t
bWFuZC1saW5lIGZsYWcgYC0tZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZWApLgorCisgICogT24gUE9T
SVggc3lzdGVtcywgYGZvcmsoKWAgKG9yIGBjbG9uZSgpYCBvbiBMaW51eCkgaXMgdXNlZCB0byBz
cGF3biB0aGUgY2hpbGQsIGFmdGVyIHdoaWNoOgorICAgICogSWYgdGhlIHZhcmlhYmxlJ3MgdmFs
dWUgaXMgYCJmYXN0ImAsIHRoZSBkZWF0aCB0ZXN0IHN0YXRlbWVudCBpcyBpbW1lZGlhdGVseSBl
eGVjdXRlZC4KKyAgICAqIElmIHRoZSB2YXJpYWJsZSdzIHZhbHVlIGlzIGAidGhyZWFkc2FmZSJg
LCB0aGUgY2hpbGQgcHJvY2VzcyByZS1leGVjdXRlcyB0aGUgdW5pdCB0ZXN0IGJpbmFyeSBqdXN0
IGFzIGl0IHdhcyBvcmlnaW5hbGx5IGludm9rZWQsIGJ1dCB3aXRoIHNvbWUgZXh0cmEgZmxhZ3Mg
dG8gY2F1c2UganVzdCB0aGUgc2luZ2xlIGRlYXRoIHRlc3QgdW5kZXIgY29uc2lkZXJhdGlvbiB0
byBiZSBydW4uCisgICogT24gV2luZG93cywgdGhlIGNoaWxkIGlzIHNwYXduZWQgdXNpbmcgdGhl
IGBDcmVhdGVQcm9jZXNzKClgIEFQSSwgYW5kIHJlLWV4ZWN1dGVzIHRoZSBiaW5hcnkgdG8gY2F1
c2UganVzdCB0aGUgc2luZ2xlIGRlYXRoIHRlc3QgdW5kZXIgY29uc2lkZXJhdGlvbiB0byBiZSBy
dW4gLSBtdWNoIGxpa2UgdGhlIGB0aHJlYWRzYWZlYCBtb2RlIG9uIFBPU0lYLgorCitPdGhlciB2
YWx1ZXMgZm9yIHRoZSB2YXJpYWJsZSBhcmUgaWxsZWdhbCBhbmQgd2lsbCBjYXVzZSB0aGUgZGVh
dGggdGVzdCB0bworZmFpbC4gQ3VycmVudGx5LCB0aGUgZmxhZydzIGRlZmF1bHQgdmFsdWUgaXMg
YCJmYXN0ImAuIEhvd2V2ZXIsIHdlIHJlc2VydmUgdGhlCityaWdodCB0byBjaGFuZ2UgaXQgaW4g
dGhlIGZ1dHVyZS4gVGhlcmVmb3JlLCB5b3VyIHRlc3RzIHNob3VsZCBub3QgZGVwZW5kIG9uCit0
aGlzLgorCitJbiBlaXRoZXIgY2FzZSwgdGhlIHBhcmVudCBwcm9jZXNzIHdhaXRzIGZvciB0aGUg
Y2hpbGQgcHJvY2VzcyB0byBjb21wbGV0ZSwgYW5kIGNoZWNrcyB0aGF0CisKKyAgMS4gdGhlIGNo
aWxkJ3MgZXhpdCBzdGF0dXMgc2F0aXNmaWVzIHRoZSBwcmVkaWNhdGUsIGFuZAorICAxLiB0aGUg
Y2hpbGQncyBzdGRlcnIgbWF0Y2hlcyB0aGUgcmVndWxhciBleHByZXNzaW9uLgorCitJZiB0aGUg
ZGVhdGggdGVzdCBzdGF0ZW1lbnQgcnVucyB0byBjb21wbGV0aW9uIHdpdGhvdXQgZHlpbmcsIHRo
ZSBjaGlsZAorcHJvY2VzcyB3aWxsIG5vbmV0aGVsZXNzIHRlcm1pbmF0ZSwgYW5kIHRoZSBhc3Nl
cnRpb24gZmFpbHMuCisKKyMjIERlYXRoIFRlc3RzIEFuZCBUaHJlYWRzICMjCisKK1RoZSByZWFz
b24gZm9yIHRoZSB0d28gZGVhdGggdGVzdCBzdHlsZXMgaGFzIHRvIGRvIHdpdGggdGhyZWFkIHNh
ZmV0eS4gRHVlIHRvCit3ZWxsLWtub3duIHByb2JsZW1zIHdpdGggZm9ya2luZyBpbiB0aGUgcHJl
c2VuY2Ugb2YgdGhyZWFkcywgZGVhdGggdGVzdHMgc2hvdWxkCitiZSBydW4gaW4gYSBzaW5nbGUt
dGhyZWFkZWQgY29udGV4dC4gU29tZXRpbWVzLCBob3dldmVyLCBpdCBpc24ndCBmZWFzaWJsZSB0
bworYXJyYW5nZSB0aGF0IGtpbmQgb2YgZW52aXJvbm1lbnQuIEZvciBleGFtcGxlLCBzdGF0aWNh
bGx5LWluaXRpYWxpemVkIG1vZHVsZXMKK21heSBzdGFydCB0aHJlYWRzIGJlZm9yZSBtYWluIGlz
IGV2ZXIgcmVhY2hlZC4gT25jZSB0aHJlYWRzIGhhdmUgYmVlbiBjcmVhdGVkLAoraXQgbWF5IGJl
IGRpZmZpY3VsdCBvciBpbXBvc3NpYmxlIHRvIGNsZWFuIHRoZW0gdXAuCisKK0dvb2dsZSBUZXN0
IGhhcyB0aHJlZSBmZWF0dXJlcyBpbnRlbmRlZCB0byByYWlzZSBhd2FyZW5lc3Mgb2YgdGhyZWFk
aW5nIGlzc3Vlcy4KKworICAxLiBBIHdhcm5pbmcgaXMgZW1pdHRlZCBpZiBtdWx0aXBsZSB0aHJl
YWRzIGFyZSBydW5uaW5nIHdoZW4gYSBkZWF0aCB0ZXN0IGlzIGVuY291bnRlcmVkLgorICAxLiBU
ZXN0IGNhc2VzIHdpdGggYSBuYW1lIGVuZGluZyBpbiAiRGVhdGhUZXN0IiBhcmUgcnVuIGJlZm9y
ZSBhbGwgb3RoZXIgdGVzdHMuCisgIDEuIEl0IHVzZXMgYGNsb25lKClgIGluc3RlYWQgb2YgYGZv
cmsoKWAgdG8gc3Bhd24gdGhlIGNoaWxkIHByb2Nlc3Mgb24gTGludXggKGBjbG9uZSgpYCBpcyBu
b3QgYXZhaWxhYmxlIG9uIEN5Z3dpbiBhbmQgTWFjKSwgYXMgYGZvcmsoKWAgaXMgbW9yZSBsaWtl
bHkgdG8gY2F1c2UgdGhlIGNoaWxkIHRvIGhhbmcgd2hlbiB0aGUgcGFyZW50IHByb2Nlc3MgaGFz
IG11bHRpcGxlIHRocmVhZHMuCisKK0l0J3MgcGVyZmVjdGx5IGZpbmUgdG8gY3JlYXRlIHRocmVh
ZHMgaW5zaWRlIGEgZGVhdGggdGVzdCBzdGF0ZW1lbnQ7IHRoZXkgYXJlCitleGVjdXRlZCBpbiBh
IHNlcGFyYXRlIHByb2Nlc3MgYW5kIGNhbm5vdCBhZmZlY3QgdGhlIHBhcmVudC4KKworIyMgRGVh
dGggVGVzdCBTdHlsZXMgIyMKKworVGhlICJ0aHJlYWRzYWZlIiBkZWF0aCB0ZXN0IHN0eWxlIHdh
cyBpbnRyb2R1Y2VkIGluIG9yZGVyIHRvIGhlbHAgbWl0aWdhdGUgdGhlCityaXNrcyBvZiB0ZXN0
aW5nIGluIGEgcG9zc2libHkgbXVsdGl0aHJlYWRlZCBlbnZpcm9ubWVudC4gSXQgdHJhZGVzIGlu
Y3JlYXNlZAordGVzdCBleGVjdXRpb24gdGltZSAocG90ZW50aWFsbHkgZHJhbWF0aWNhbGx5IHNv
KSBmb3IgaW1wcm92ZWQgdGhyZWFkIHNhZmV0eS4KK1dlIHN1Z2dlc3QgdXNpbmcgdGhlIGZhc3Rl
ciwgZGVmYXVsdCAiZmFzdCIgc3R5bGUgdW5sZXNzIHlvdXIgdGVzdCBoYXMgc3BlY2lmaWMKK3By
b2JsZW1zIHdpdGggaXQuCisKK1lvdSBjYW4gY2hvb3NlIGEgcGFydGljdWxhciBzdHlsZSBvZiBk
ZWF0aCB0ZXN0cyBieSBzZXR0aW5nIHRoZSBmbGFnCitwcm9ncmFtbWF0aWNhbGx5OgorCitgYGAK
Kzo6dGVzdGluZzo6RkxBR1NfZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZSA9ICJ0aHJlYWRzYWZlIjsK
K2BgYAorCitZb3UgY2FuIGRvIHRoaXMgaW4gYG1haW4oKWAgdG8gc2V0IHRoZSBzdHlsZSBmb3Ig
YWxsIGRlYXRoIHRlc3RzIGluIHRoZQorYmluYXJ5LCBvciBpbiBpbmRpdmlkdWFsIHRlc3RzLiBS
ZWNhbGwgdGhhdCBmbGFncyBhcmUgc2F2ZWQgYmVmb3JlIHJ1bm5pbmcgZWFjaAordGVzdCBhbmQg
cmVzdG9yZWQgYWZ0ZXJ3YXJkcywgc28geW91IG5lZWQgbm90IGRvIHRoYXQgeW91cnNlbGYuIEZv
ciBleGFtcGxlOgorCitgYGAKK1RFU1QoTXlEZWF0aFRlc3QsIFRlc3RPbmUpIHsKKyAgOjp0ZXN0
aW5nOjpGTEFHU19ndGVzdF9kZWF0aF90ZXN0X3N0eWxlID0gInRocmVhZHNhZmUiOworICAvLyBU
aGlzIHRlc3QgaXMgcnVuIGluIHRoZSAidGhyZWFkc2FmZSIgc3R5bGU6CisgIEFTU0VSVF9ERUFU
SChUaGlzU2hvdWxkRGllKCksICIiKTsKK30KKworVEVTVChNeURlYXRoVGVzdCwgVGVzdFR3bykg
eworICAvLyBUaGlzIHRlc3QgaXMgcnVuIGluIHRoZSAiZmFzdCIgc3R5bGU6CisgIEFTU0VSVF9E
RUFUSChUaGlzU2hvdWxkRGllKCksICIiKTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIq
KiBhcmd2KSB7CisgIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworICA6
OnRlc3Rpbmc6OkZMQUdTX2d0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGUgPSAiZmFzdCI7CisgIHJldHVy
biBSVU5fQUxMX1RFU1RTKCk7Cit9CitgYGAKKworIyMgQ2F2ZWF0cyAjIworCitUaGUgX3N0YXRl
bWVudF8gYXJndW1lbnQgb2YgYEFTU0VSVF9FWElUKClgIGNhbiBiZSBhbnkgdmFsaWQgQysrIHN0
YXRlbWVudC4KK0lmIGl0IGxlYXZlcyB0aGUgY3VycmVudCBmdW5jdGlvbiB2aWEgYSBgcmV0dXJu
YCBzdGF0ZW1lbnQgb3IgYnkgdGhyb3dpbmcgYW4gZXhjZXB0aW9uLAordGhlIGRlYXRoIHRlc3Qg
aXMgY29uc2lkZXJlZCB0byBoYXZlIGZhaWxlZC4gIFNvbWUgR29vZ2xlIFRlc3QgbWFjcm9zIG1h
eSByZXR1cm4KK2Zyb20gdGhlIGN1cnJlbnQgZnVuY3Rpb24gKGUuZy4gYEFTU0VSVF9UUlVFKClg
KSwgc28gYmUgc3VyZSB0byBhdm9pZCB0aGVtIGluIF9zdGF0ZW1lbnRfLgorCitTaW5jZSBfc3Rh
dGVtZW50XyBydW5zIGluIHRoZSBjaGlsZCBwcm9jZXNzLCBhbnkgaW4tbWVtb3J5IHNpZGUgZWZm
ZWN0IChlLmcuCittb2RpZnlpbmcgYSB2YXJpYWJsZSwgcmVsZWFzaW5nIG1lbW9yeSwgZXRjKSBp
dCBjYXVzZXMgd2lsbCBfbm90XyBiZSBvYnNlcnZhYmxlCitpbiB0aGUgcGFyZW50IHByb2Nlc3Mu
IEluIHBhcnRpY3VsYXIsIGlmIHlvdSByZWxlYXNlIG1lbW9yeSBpbiBhIGRlYXRoIHRlc3QsCit5
b3VyIHByb2dyYW0gd2lsbCBmYWlsIHRoZSBoZWFwIGNoZWNrIGFzIHRoZSBwYXJlbnQgcHJvY2Vz
cyB3aWxsIG5ldmVyIHNlZSB0aGUKK21lbW9yeSByZWNsYWltZWQuIFRvIHNvbHZlIHRoaXMgcHJv
YmxlbSwgeW91IGNhbgorCisgIDEuIHRyeSBub3QgdG8gZnJlZSBtZW1vcnkgaW4gYSBkZWF0aCB0
ZXN0OworICAxLiBmcmVlIHRoZSBtZW1vcnkgYWdhaW4gaW4gdGhlIHBhcmVudCBwcm9jZXNzOyBv
cgorICAxLiBkbyBub3QgdXNlIHRoZSBoZWFwIGNoZWNrZXIgaW4geW91ciBwcm9ncmFtLgorCitE
dWUgdG8gYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLCB5b3UgY2Fubm90IHBsYWNlIG11bHRpcGxl
IGRlYXRoIHRlc3QKK2Fzc2VydGlvbnMgb24gdGhlIHNhbWUgbGluZTsgb3RoZXJ3aXNlLCBjb21w
aWxhdGlvbiB3aWxsIGZhaWwgd2l0aCBhbiB1bm9idmlvdXMKK2Vycm9yIG1lc3NhZ2UuCisKK0Rl
c3BpdGUgdGhlIGltcHJvdmVkIHRocmVhZCBzYWZldHkgYWZmb3JkZWQgYnkgdGhlICJ0aHJlYWRz
YWZlIiBzdHlsZSBvZiBkZWF0aAordGVzdCwgdGhyZWFkIHByb2JsZW1zIHN1Y2ggYXMgZGVhZGxv
Y2sgYXJlIHN0aWxsIHBvc3NpYmxlIGluIHRoZSBwcmVzZW5jZSBvZgoraGFuZGxlcnMgcmVnaXN0
ZXJlZCB3aXRoIGBwdGhyZWFkX2F0Zm9yaygzKWAuCisKKyMgVXNpbmcgQXNzZXJ0aW9ucyBpbiBT
dWItcm91dGluZXMgIworCisjIyBBZGRpbmcgVHJhY2VzIHRvIEFzc2VydGlvbnMgIyMKKworSWYg
YSB0ZXN0IHN1Yi1yb3V0aW5lIGlzIGNhbGxlZCBmcm9tIHNldmVyYWwgcGxhY2VzLCB3aGVuIGFu
IGFzc2VydGlvbgoraW5zaWRlIGl0IGZhaWxzLCBpdCBjYW4gYmUgaGFyZCB0byB0ZWxsIHdoaWNo
IGludm9jYXRpb24gb2YgdGhlCitzdWItcm91dGluZSB0aGUgZmFpbHVyZSBpcyBmcm9tLiAgWW91
IGNhbiBhbGxldmlhdGUgdGhpcyBwcm9ibGVtIHVzaW5nCitleHRyYSBsb2dnaW5nIG9yIGN1c3Rv
bSBmYWlsdXJlIG1lc3NhZ2VzLCBidXQgdGhhdCB1c3VhbGx5IGNsdXR0ZXJzIHVwCit5b3VyIHRl
c3RzLiBBIGJldHRlciBzb2x1dGlvbiBpcyB0byB1c2UgdGhlIGBTQ09QRURfVFJBQ0VgIG1hY3Jv
OgorCit8IGBTQ09QRURfVFJBQ0UoYF9tZXNzYWdlX2ApO2AgfAorfDotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLXwKKword2hlcmUgX21lc3NhZ2VfIGNhbiBiZSBhbnl0aGluZyBzdHJlYW1h
YmxlIHRvIGBzdGQ6Om9zdHJlYW1gLiBUaGlzCittYWNybyB3aWxsIGNhdXNlIHRoZSBjdXJyZW50
IGZpbGUgbmFtZSwgbGluZSBudW1iZXIsIGFuZCB0aGUgZ2l2ZW4KK21lc3NhZ2UgdG8gYmUgYWRk
ZWQgaW4gZXZlcnkgZmFpbHVyZSBtZXNzYWdlLiBUaGUgZWZmZWN0IHdpbGwgYmUKK3VuZG9uZSB3
aGVuIHRoZSBjb250cm9sIGxlYXZlcyB0aGUgY3VycmVudCBsZXhpY2FsIHNjb3BlLgorCitGb3Ig
ZXhhbXBsZSwKKworYGBgCisxMDogdm9pZCBTdWIxKGludCBuKSB7CisxMTogICBFWFBFQ1RfRVEo
MSwgQmFyKG4pKTsKKzEyOiAgIEVYUEVDVF9FUSgyLCBCYXIobiArIDEpKTsKKzEzOiB9CisxNDoK
KzE1OiBURVNUKEZvb1Rlc3QsIEJhcikgeworMTY6ICAgeworMTc6ICAgICBTQ09QRURfVFJBQ0Uo
IkEiKTsgIC8vIFRoaXMgdHJhY2UgcG9pbnQgd2lsbCBiZSBpbmNsdWRlZCBpbgorMTg6ICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGV2ZXJ5IGZhaWx1cmUgaW4gdGhpcyBzY29wZS4KKzE5OiAg
ICAgU3ViMSgxKTsKKzIwOiAgIH0KKzIxOiAgIC8vIE5vdyBpdCB3b24ndC4KKzIyOiAgIFN1YjEo
OSk7CisyMzogfQorYGBgCisKK2NvdWxkIHJlc3VsdCBpbiBtZXNzYWdlcyBsaWtlIHRoZXNlOgor
CitgYGAKK3BhdGgvdG8vZm9vX3Rlc3QuY2M6MTE6IEZhaWx1cmUKK1ZhbHVlIG9mOiBCYXIobikK
K0V4cGVjdGVkOiAxCisgIEFjdHVhbDogMgorICAgVHJhY2U6CitwYXRoL3RvL2Zvb190ZXN0LmNj
OjE3OiBBCisKK3BhdGgvdG8vZm9vX3Rlc3QuY2M6MTI6IEZhaWx1cmUKK1ZhbHVlIG9mOiBCYXIo
biArIDEpCitFeHBlY3RlZDogMgorICBBY3R1YWw6IDMKK2BgYAorCitXaXRob3V0IHRoZSB0cmFj
ZSwgaXQgd291bGQndmUgYmVlbiBkaWZmaWN1bHQgdG8ga25vdyB3aGljaCBpbnZvY2F0aW9uCitv
ZiBgU3ViMSgpYCB0aGUgdHdvIGZhaWx1cmVzIGNvbWUgZnJvbSByZXNwZWN0aXZlbHkuIChZb3Ug
Y291bGQgYWRkIGFuCitleHRyYSBtZXNzYWdlIHRvIGVhY2ggYXNzZXJ0aW9uIGluIGBTdWIxKClg
IHRvIGluZGljYXRlIHRoZSB2YWx1ZSBvZgorYG5gLCBidXQgdGhhdCdzIHRlZGlvdXMuKQorCitT
b21lIHRpcHMgb24gdXNpbmcgYFNDT1BFRF9UUkFDRWA6CisKKyAgMS4gV2l0aCBhIHN1aXRhYmxl
IG1lc3NhZ2UsIGl0J3Mgb2Z0ZW4gZW5vdWdoIHRvIHVzZSBgU0NPUEVEX1RSQUNFYCBhdCB0aGUg
YmVnaW5uaW5nIG9mIGEgc3ViLXJvdXRpbmUsIGluc3RlYWQgb2YgYXQgZWFjaCBjYWxsIHNpdGUu
CisgIDEuIFdoZW4gY2FsbGluZyBzdWItcm91dGluZXMgaW5zaWRlIGEgbG9vcCwgbWFrZSB0aGUg
bG9vcCBpdGVyYXRvciBwYXJ0IG9mIHRoZSBtZXNzYWdlIGluIGBTQ09QRURfVFJBQ0VgIHN1Y2gg
dGhhdCB5b3UgY2FuIGtub3cgd2hpY2ggaXRlcmF0aW9uIHRoZSBmYWlsdXJlIGlzIGZyb20uCisg
IDEuIFNvbWV0aW1lcyB0aGUgbGluZSBudW1iZXIgb2YgdGhlIHRyYWNlIHBvaW50IGlzIGVub3Vn
aCBmb3IgaWRlbnRpZnlpbmcgdGhlIHBhcnRpY3VsYXIgaW52b2NhdGlvbiBvZiBhIHN1Yi1yb3V0
aW5lLiBJbiB0aGlzIGNhc2UsIHlvdSBkb24ndCBoYXZlIHRvIGNob29zZSBhIHVuaXF1ZSBtZXNz
YWdlIGZvciBgU0NPUEVEX1RSQUNFYC4gWW91IGNhbiBzaW1wbHkgdXNlIGAiImAuCisgIDEuIFlv
dSBjYW4gdXNlIGBTQ09QRURfVFJBQ0VgIGluIGFuIGlubmVyIHNjb3BlIHdoZW4gdGhlcmUgaXMg
b25lIGluIHRoZSBvdXRlciBzY29wZS4gSW4gdGhpcyBjYXNlLCBhbGwgYWN0aXZlIHRyYWNlIHBv
aW50cyB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBmYWlsdXJlIG1lc3NhZ2VzLCBpbiByZXZlcnNl
IG9yZGVyIHRoZXkgYXJlIGVuY291bnRlcmVkLgorICAxLiBUaGUgdHJhY2UgZHVtcCBpcyBjbGlj
a2FibGUgaW4gRW1hY3MnIGNvbXBpbGF0aW9uIGJ1ZmZlciAtIGhpdCByZXR1cm4gb24gYSBsaW5l
IG51bWJlciBhbmQgeW91J2xsIGJlIHRha2VuIHRvIHRoYXQgbGluZSBpbiB0aGUgc291cmNlIGZp
bGUhCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyBQcm9wYWdh
dGluZyBGYXRhbCBGYWlsdXJlcyAjIworCitBIGNvbW1vbiBwaXRmYWxsIHdoZW4gdXNpbmcgYEFT
U0VSVF8qYCBhbmQgYEZBSUwqYCBpcyBub3QgdW5kZXJzdGFuZGluZyB0aGF0Cit3aGVuIHRoZXkg
ZmFpbCB0aGV5IG9ubHkgYWJvcnQgdGhlIF9jdXJyZW50IGZ1bmN0aW9uXywgbm90IHRoZSBlbnRp
cmUgdGVzdC4gRm9yCitleGFtcGxlLCB0aGUgZm9sbG93aW5nIHRlc3Qgd2lsbCBzZWdmYXVsdDoK
K2BgYAordm9pZCBTdWJyb3V0aW5lKCkgeworICAvLyBHZW5lcmF0ZXMgYSBmYXRhbCBmYWlsdXJl
IGFuZCBhYm9ydHMgdGhlIGN1cnJlbnQgZnVuY3Rpb24uCisgIEFTU0VSVF9FUSgxLCAyKTsKKyAg
Ly8gVGhlIGZvbGxvd2luZyB3b24ndCBiZSBleGVjdXRlZC4KKyAgLi4uCit9CisKK1RFU1QoRm9v
VGVzdCwgQmFyKSB7CisgIFN1YnJvdXRpbmUoKTsKKyAgLy8gVGhlIGludGVuZGVkIGJlaGF2aW9y
IGlzIGZvciB0aGUgZmF0YWwgZmFpbHVyZQorICAvLyBpbiBTdWJyb3V0aW5lKCkgdG8gYWJvcnQg
dGhlIGVudGlyZSB0ZXN0LgorICAvLyBUaGUgYWN0dWFsIGJlaGF2aW9yOiB0aGUgZnVuY3Rpb24g
Z29lcyBvbiBhZnRlciBTdWJyb3V0aW5lKCkgcmV0dXJucy4KKyAgaW50KiBwID0gTlVMTDsKKyAg
KnAgPSAzOyAvLyBTZWdmYXVsdCEKK30KK2BgYAorCitTaW5jZSB3ZSBkb24ndCB1c2UgZXhjZXB0
aW9ucywgaXQgaXMgdGVjaG5pY2FsbHkgaW1wb3NzaWJsZSB0bworaW1wbGVtZW50IHRoZSBpbnRl
bmRlZCBiZWhhdmlvciBoZXJlLiAgVG8gYWxsZXZpYXRlIHRoaXMsIEdvb2dsZSBUZXN0Citwcm92
aWRlcyB0d28gc29sdXRpb25zLiAgWW91IGNvdWxkIHVzZSBlaXRoZXIgdGhlCitgKEFTU0VSVHxF
WFBFQ1QpX05PX0ZBVEFMX0ZBSUxVUkVgIGFzc2VydGlvbnMgb3IgdGhlCitgSGFzRmF0YWxGYWls
dXJlKClgIGZ1bmN0aW9uLiAgVGhleSBhcmUgZGVzY3JpYmVkIGluIHRoZSBmb2xsb3dpbmcgdHdv
CitzdWJzZWN0aW9ucy4KKworIyMjIEFzc2VydGluZyBvbiBTdWJyb3V0aW5lcyAjIyMKKworQXMg
c2hvd24gYWJvdmUsIGlmIHlvdXIgdGVzdCBjYWxscyBhIHN1YnJvdXRpbmUgdGhhdCBoYXMgYW4g
YEFTU0VSVF8qYAorZmFpbHVyZSBpbiBpdCwgdGhlIHRlc3Qgd2lsbCBjb250aW51ZSBhZnRlciB0
aGUgc3Vicm91dGluZQorcmV0dXJucy4gVGhpcyBtYXkgbm90IGJlIHdoYXQgeW91IHdhbnQuCisK
K09mdGVuIHBlb3BsZSB3YW50IGZhdGFsIGZhaWx1cmVzIHRvIHByb3BhZ2F0ZSBsaWtlIGV4Y2Vw
dGlvbnMuICBGb3IKK3RoYXQgR29vZ2xlIFRlc3Qgb2ZmZXJzIHRoZSBmb2xsb3dpbmcgbWFjcm9z
OgorCit8ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFzc2VydGlvbioqIHwgKipW
ZXJpZmllcyoqIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tfDotLS0tLS0tLS0tLS0tfAorfCBgQVNTRVJUX05PX0ZBVEFMX0ZBSUxVUkUoYF9zdGF0ZW1l
bnRfYCk7YCB8IGBFWFBFQ1RfTk9fRkFUQUxfRkFJTFVSRShgX3N0YXRlbWVudF9gKTtgIHwgX3N0
YXRlbWVudF8gZG9lc24ndCBnZW5lcmF0ZSBhbnkgbmV3IGZhdGFsIGZhaWx1cmVzIGluIHRoZSBj
dXJyZW50IHRocmVhZC4gfAorCitPbmx5IGZhaWx1cmVzIGluIHRoZSB0aHJlYWQgdGhhdCBleGVj
dXRlcyB0aGUgYXNzZXJ0aW9uIGFyZSBjaGVja2VkIHRvCitkZXRlcm1pbmUgdGhlIHJlc3VsdCBv
ZiB0aGlzIHR5cGUgb2YgYXNzZXJ0aW9ucy4gIElmIF9zdGF0ZW1lbnRfCitjcmVhdGVzIG5ldyB0
aHJlYWRzLCBmYWlsdXJlcyBpbiB0aGVzZSB0aHJlYWRzIGFyZSBpZ25vcmVkLgorCitFeGFtcGxl
czoKKworYGBgCitBU1NFUlRfTk9fRkFUQUxfRkFJTFVSRShGb28oKSk7CisKK2ludCBpOworRVhQ
RUNUX05PX0ZBVEFMX0ZBSUxVUkUoeworICBpID0gQmFyKCk7Cit9KTsKK2BgYAorCitfQXZhaWxh
YmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4gQXNzZXJ0aW9ucyBmcm9tIG11bHRpcGxlIHRo
cmVhZHMKK2FyZSBjdXJyZW50bHkgbm90IHN1cHBvcnRlZC4KKworIyMjIENoZWNraW5nIGZvciBG
YWlsdXJlcyBpbiB0aGUgQ3VycmVudCBUZXN0ICMjIworCitgSGFzRmF0YWxGYWlsdXJlKClgIGlu
IHRoZSBgOjp0ZXN0aW5nOjpUZXN0YCBjbGFzcyByZXR1cm5zIGB0cnVlYCBpZiBhbgorYXNzZXJ0
aW9uIGluIHRoZSBjdXJyZW50IHRlc3QgaGFzIHN1ZmZlcmVkIGEgZmF0YWwgZmFpbHVyZS4gVGhp
cworYWxsb3dzIGZ1bmN0aW9ucyB0byBjYXRjaCBmYXRhbCBmYWlsdXJlcyBpbiBhIHN1Yi1yb3V0
aW5lIGFuZCByZXR1cm4KK2Vhcmx5LgorCitgYGAKK2NsYXNzIFRlc3QgeworIHB1YmxpYzoKKyAg
Li4uCisgIHN0YXRpYyBib29sIEhhc0ZhdGFsRmFpbHVyZSgpOworfTsKK2BgYAorCitUaGUgdHlw
aWNhbCB1c2FnZSwgd2hpY2ggYmFzaWNhbGx5IHNpbXVsYXRlcyB0aGUgYmVoYXZpb3Igb2YgYSB0
aHJvd24KK2V4Y2VwdGlvbiwgaXM6CisKK2BgYAorVEVTVChGb29UZXN0LCBCYXIpIHsKKyAgU3Vi
cm91dGluZSgpOworICAvLyBBYm9ydHMgaWYgU3Vicm91dGluZSgpIGhhZCBhIGZhdGFsIGZhaWx1
cmUuCisgIGlmIChIYXNGYXRhbEZhaWx1cmUoKSkKKyAgICByZXR1cm47CisgIC8vIFRoZSBmb2xs
b3dpbmcgd29uJ3QgYmUgZXhlY3V0ZWQuCisgIC4uLgorfQorYGBgCisKK0lmIGBIYXNGYXRhbEZh
aWx1cmUoKWAgaXMgdXNlZCBvdXRzaWRlIG9mIGBURVNUKClgICwgYFRFU1RfRigpYCAsIG9yIGEg
dGVzdAorZml4dHVyZSwgeW91IG11c3QgYWRkIHRoZSBgOjp0ZXN0aW5nOjpUZXN0OjpgIHByZWZp
eCwgYXMgaW46CisKK2BgYAoraWYgKDo6dGVzdGluZzo6VGVzdDo6SGFzRmF0YWxGYWlsdXJlKCkp
CisgIHJldHVybjsKK2BgYAorCitTaW1pbGFybHksIGBIYXNOb25mYXRhbEZhaWx1cmUoKWAgcmV0
dXJucyBgdHJ1ZWAgaWYgdGhlIGN1cnJlbnQgdGVzdAoraGFzIGF0IGxlYXN0IG9uZSBub24tZmF0
YWwgZmFpbHVyZSwgYW5kIGBIYXNGYWlsdXJlKClgIHJldHVybnMgYHRydWVgCitpZiB0aGUgY3Vy
cmVudCB0ZXN0IGhhcyBhdCBsZWFzdCBvbmUgZmFpbHVyZSBvZiBlaXRoZXIga2luZC4KKworX0F2
YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuICBgSGFzTm9uZmF0YWxGYWlsdXJlKClg
IGFuZAorYEhhc0ZhaWx1cmUoKWAgYXJlIGF2YWlsYWJsZSBzaW5jZSB2ZXJzaW9uIDEuNC4wLgor
CisjIExvZ2dpbmcgQWRkaXRpb25hbCBJbmZvcm1hdGlvbiAjCisKK0luIHlvdXIgdGVzdCBjb2Rl
LCB5b3UgY2FuIGNhbGwgYFJlY29yZFByb3BlcnR5KCJrZXkiLCB2YWx1ZSlgIHRvIGxvZworYWRk
aXRpb25hbCBpbmZvcm1hdGlvbiwgd2hlcmUgYHZhbHVlYCBjYW4gYmUgZWl0aGVyIGEgc3RyaW5n
IG9yIGFuIGBpbnRgLiBUaGUgX2xhc3RfIHZhbHVlIHJlY29yZGVkIGZvciBhIGtleSB3aWxsIGJl
IGVtaXR0ZWQgdG8gdGhlIFhNTCBvdXRwdXQKK2lmIHlvdSBzcGVjaWZ5IG9uZS4gRm9yIGV4YW1w
bGUsIHRoZSB0ZXN0CisKK2BgYAorVEVTVF9GKFdpZGdldFVzYWdlVGVzdCwgTWluQW5kTWF4V2lk
Z2V0cykgeworICBSZWNvcmRQcm9wZXJ0eSgiTWF4aW11bVdpZGdldHMiLCBDb21wdXRlTWF4VXNh
Z2UoKSk7CisgIFJlY29yZFByb3BlcnR5KCJNaW5pbXVtV2lkZ2V0cyIsIENvbXB1dGVNaW5Vc2Fn
ZSgpKTsKK30KK2BgYAorCit3aWxsIG91dHB1dCBYTUwgbGlrZSB0aGlzOgorCitgYGAKKy4uLgor
ICA8dGVzdGNhc2UgbmFtZT0iTWluQW5kTWF4V2lkZ2V0cyIgc3RhdHVzPSJydW4iIHRpbWU9IjYi
IGNsYXNzbmFtZT0iV2lkZ2V0VXNhZ2VUZXN0IgorICAgICAgICAgICAgTWF4aW11bVdpZGdldHM9
IjEyIgorICAgICAgICAgICAgTWluaW11bVdpZGdldHM9IjkiIC8+CisuLi4KK2BgYAorCitfTm90
ZV86CisgICogYFJlY29yZFByb3BlcnR5KClgIGlzIGEgc3RhdGljIG1lbWJlciBvZiB0aGUgYFRl
c3RgIGNsYXNzLiBUaGVyZWZvcmUgaXQgbmVlZHMgdG8gYmUgcHJlZml4ZWQgd2l0aCBgOjp0ZXN0
aW5nOjpUZXN0OjpgIGlmIHVzZWQgb3V0c2lkZSBvZiB0aGUgYFRFU1RgIGJvZHkgYW5kIHRoZSB0
ZXN0IGZpeHR1cmUgY2xhc3MuCisgICogYGtleWAgbXVzdCBiZSBhIHZhbGlkIFhNTCBhdHRyaWJ1
dGUgbmFtZSwgYW5kIGNhbm5vdCBjb25mbGljdCB3aXRoIHRoZSBvbmVzIGFscmVhZHkgdXNlZCBi
eSBHb29nbGUgVGVzdCAoYG5hbWVgLCBgc3RhdHVzYCwgYHRpbWVgLCBgY2xhc3NuYW1lYCwgYHR5
cGVfcGFyYW1gLCBhbmQgYHZhbHVlX3BhcmFtYCkuCisgICogQ2FsbGluZyBgUmVjb3JkUHJvcGVy
dHkoKWAgb3V0c2lkZSBvZiB0aGUgbGlmZXNwYW4gb2YgYSB0ZXN0IGlzIGFsbG93ZWQuIElmIGl0
J3MgY2FsbGVkIG91dHNpZGUgb2YgYSB0ZXN0IGJ1dCBiZXR3ZWVuIGEgdGVzdCBjYXNlJ3MgYFNl
dFVwVGVzdENhc2UoKWAgYW5kIGBUZWFyRG93blRlc3RDYXNlKClgIG1ldGhvZHMsIGl0IHdpbGwg
YmUgYXR0cmlidXRlZCB0byB0aGUgWE1MIGVsZW1lbnQgZm9yIHRoZSB0ZXN0IGNhc2UuIElmIGl0
J3MgY2FsbGVkIG91dHNpZGUgb2YgYWxsIHRlc3QgY2FzZXMgKGUuZy4gaW4gYSB0ZXN0IGVudmly
b25tZW50KSwgaXQgd2lsbCBiZSBhdHRyaWJ1dGVkIHRvIHRoZSB0b3AtbGV2ZWwgWE1MIGVsZW1l
bnQuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIFNoYXJpbmcg
UmVzb3VyY2VzIEJldHdlZW4gVGVzdHMgaW4gdGhlIFNhbWUgVGVzdCBDYXNlICMKKworCisKK0dv
b2dsZSBUZXN0IGNyZWF0ZXMgYSBuZXcgdGVzdCBmaXh0dXJlIG9iamVjdCBmb3IgZWFjaCB0ZXN0
IGluIG9yZGVyIHRvIG1ha2UKK3Rlc3RzIGluZGVwZW5kZW50IGFuZCBlYXNpZXIgdG8gZGVidWcu
IEhvd2V2ZXIsIHNvbWV0aW1lcyB0ZXN0cyB1c2UgcmVzb3VyY2VzCit0aGF0IGFyZSBleHBlbnNp
dmUgdG8gc2V0IHVwLCBtYWtpbmcgdGhlIG9uZS1jb3B5LXBlci10ZXN0IG1vZGVsIHByb2hpYml0
aXZlbHkKK2V4cGVuc2l2ZS4KKworSWYgdGhlIHRlc3RzIGRvbid0IGNoYW5nZSB0aGUgcmVzb3Vy
Y2UsIHRoZXJlJ3Mgbm8gaGFybSBpbiB0aGVtIHNoYXJpbmcgYQorc2luZ2xlIHJlc291cmNlIGNv
cHkuIFNvLCBpbiBhZGRpdGlvbiB0byBwZXItdGVzdCBzZXQtdXAvdGVhci1kb3duLCBHb29nbGUg
VGVzdAorYWxzbyBzdXBwb3J0cyBwZXItdGVzdC1jYXNlIHNldC11cC90ZWFyLWRvd24uIFRvIHVz
ZSBpdDoKKworICAxLiBJbiB5b3VyIHRlc3QgZml4dHVyZSBjbGFzcyAoc2F5IGBGb29UZXN0YCAp
LCBkZWZpbmUgYXMgYHN0YXRpY2Agc29tZSBtZW1iZXIgdmFyaWFibGVzIHRvIGhvbGQgdGhlIHNo
YXJlZCByZXNvdXJjZXMuCisgIDEuIEluIHRoZSBzYW1lIHRlc3QgZml4dHVyZSBjbGFzcywgZGVm
aW5lIGEgYHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKWAgZnVuY3Rpb24gKHJlbWVtYmVyIG5v
dCB0byBzcGVsbCBpdCBhcyAqKmBTZXR1cFRlc3RDYXNlYCoqIHdpdGggYSBzbWFsbCBgdWAhKSB0
byBzZXQgdXAgdGhlIHNoYXJlZCByZXNvdXJjZXMgYW5kIGEgYHN0YXRpYyB2b2lkIFRlYXJEb3du
VGVzdENhc2UoKWAgZnVuY3Rpb24gdG8gdGVhciB0aGVtIGRvd24uCisKK1RoYXQncyBpdCEgR29v
Z2xlIFRlc3QgYXV0b21hdGljYWxseSBjYWxscyBgU2V0VXBUZXN0Q2FzZSgpYCBiZWZvcmUgcnVu
bmluZyB0aGUKK19maXJzdCB0ZXN0XyBpbiB0aGUgYEZvb1Rlc3RgIHRlc3QgY2FzZSAoaS5lLiBi
ZWZvcmUgY3JlYXRpbmcgdGhlIGZpcnN0CitgRm9vVGVzdGAgb2JqZWN0KSwgYW5kIGNhbGxzIGBU
ZWFyRG93blRlc3RDYXNlKClgIGFmdGVyIHJ1bm5pbmcgdGhlIF9sYXN0IHRlc3RfCitpbiBpdCAo
aS5lLiBhZnRlciBkZWxldGluZyB0aGUgbGFzdCBgRm9vVGVzdGAgb2JqZWN0KS4gSW4gYmV0d2Vl
biwgdGhlIHRlc3RzCitjYW4gdXNlIHRoZSBzaGFyZWQgcmVzb3VyY2VzLgorCitSZW1lbWJlciB0
aGF0IHRoZSB0ZXN0IG9yZGVyIGlzIHVuZGVmaW5lZCwgc28geW91ciBjb2RlIGNhbid0IGRlcGVu
ZCBvbiBhIHRlc3QKK3ByZWNlZGluZyBvciBmb2xsb3dpbmcgYW5vdGhlci4gQWxzbywgdGhlIHRl
c3RzIG11c3QgZWl0aGVyIG5vdCBtb2RpZnkgdGhlCitzdGF0ZSBvZiBhbnkgc2hhcmVkIHJlc291
cmNlLCBvciwgaWYgdGhleSBkbyBtb2RpZnkgdGhlIHN0YXRlLCB0aGV5IG11c3QKK3Jlc3RvcmUg
dGhlIHN0YXRlIHRvIGl0cyBvcmlnaW5hbCB2YWx1ZSBiZWZvcmUgcGFzc2luZyBjb250cm9sIHRv
IHRoZSBuZXh0Cit0ZXN0LgorCitIZXJlJ3MgYW4gZXhhbXBsZSBvZiBwZXItdGVzdC1jYXNlIHNl
dC11cCBhbmQgdGVhci1kb3duOgorYGBgCitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGlu
Zzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICAvLyBQZXItdGVzdC1jYXNlIHNldC11cC4KKyAgLy8g
Q2FsbGVkIGJlZm9yZSB0aGUgZmlyc3QgdGVzdCBpbiB0aGlzIHRlc3QgY2FzZS4KKyAgLy8gQ2Fu
IGJlIG9taXR0ZWQgaWYgbm90IG5lZWRlZC4KKyAgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgp
IHsKKyAgICBzaGFyZWRfcmVzb3VyY2VfID0gbmV3IC4uLjsKKyAgfQorCisgIC8vIFBlci10ZXN0
LWNhc2UgdGVhci1kb3duLgorICAvLyBDYWxsZWQgYWZ0ZXIgdGhlIGxhc3QgdGVzdCBpbiB0aGlz
IHRlc3QgY2FzZS4KKyAgLy8gQ2FuIGJlIG9taXR0ZWQgaWYgbm90IG5lZWRlZC4KKyAgc3RhdGlj
IHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKKyAgICBkZWxldGUgc2hhcmVkX3Jlc291cmNlXzsK
KyAgICBzaGFyZWRfcmVzb3VyY2VfID0gTlVMTDsKKyAgfQorCisgIC8vIFlvdSBjYW4gZGVmaW5l
IHBlci10ZXN0IHNldC11cCBhbmQgdGVhci1kb3duIGxvZ2ljIGFzIHVzdWFsLgorICB2aXJ0dWFs
IHZvaWQgU2V0VXAoKSB7IC4uLiB9CisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsgLi4uIH0K
KworICAvLyBTb21lIGV4cGVuc2l2ZSByZXNvdXJjZSBzaGFyZWQgYnkgYWxsIHRlc3RzLgorICBz
dGF0aWMgVCogc2hhcmVkX3Jlc291cmNlXzsKK307CisKK1QqIEZvb1Rlc3Q6OnNoYXJlZF9yZXNv
dXJjZV8gPSBOVUxMOworCitURVNUX0YoRm9vVGVzdCwgVGVzdDEpIHsKKyAgLi4uIHlvdSBjYW4g
cmVmZXIgdG8gc2hhcmVkX3Jlc291cmNlIGhlcmUgLi4uCit9CitURVNUX0YoRm9vVGVzdCwgVGVz
dDIpIHsKKyAgLi4uIHlvdSBjYW4gcmVmZXIgdG8gc2hhcmVkX3Jlc291cmNlIGhlcmUgLi4uCit9
CitgYGAKKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMgR2xvYmFs
IFNldC1VcCBhbmQgVGVhci1Eb3duICMKKworSnVzdCBhcyB5b3UgY2FuIGRvIHNldC11cCBhbmQg
dGVhci1kb3duIGF0IHRoZSB0ZXN0IGxldmVsIGFuZCB0aGUgdGVzdCBjYXNlCitsZXZlbCwgeW91
IGNhbiBhbHNvIGRvIGl0IGF0IHRoZSB0ZXN0IHByb2dyYW0gbGV2ZWwuIEhlcmUncyBob3cuCisK
K0ZpcnN0LCB5b3Ugc3ViY2xhc3MgdGhlIGA6OnRlc3Rpbmc6OkVudmlyb25tZW50YCBjbGFzcyB0
byBkZWZpbmUgYSB0ZXN0CitlbnZpcm9ubWVudCwgd2hpY2gga25vd3MgaG93IHRvIHNldC11cCBh
bmQgdGVhci1kb3duOgorCitgYGAKK2NsYXNzIEVudmlyb25tZW50IHsKKyBwdWJsaWM6CisgIHZp
cnR1YWwgfkVudmlyb25tZW50KCkge30KKyAgLy8gT3ZlcnJpZGUgdGhpcyB0byBkZWZpbmUgaG93
IHRvIHNldCB1cCB0aGUgZW52aXJvbm1lbnQuCisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHt9Cisg
IC8vIE92ZXJyaWRlIHRoaXMgdG8gZGVmaW5lIGhvdyB0byB0ZWFyIGRvd24gdGhlIGVudmlyb25t
ZW50LgorICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7fQorfTsKK2BgYAorCitUaGVuLCB5b3Ug
cmVnaXN0ZXIgYW4gaW5zdGFuY2Ugb2YgeW91ciBlbnZpcm9ubWVudCBjbGFzcyB3aXRoIEdvb2ds
ZSBUZXN0IGJ5CitjYWxsaW5nIHRoZSBgOjp0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1l
bnQoKWAgZnVuY3Rpb246CisKK2BgYAorRW52aXJvbm1lbnQqIEFkZEdsb2JhbFRlc3RFbnZpcm9u
bWVudChFbnZpcm9ubWVudCogZW52KTsKK2BgYAorCitOb3csIHdoZW4gYFJVTl9BTExfVEVTVFMo
KWAgaXMgY2FsbGVkLCBpdCBmaXJzdCBjYWxscyB0aGUgYFNldFVwKClgIG1ldGhvZCBvZgordGhl
IGVudmlyb25tZW50IG9iamVjdCwgdGhlbiBydW5zIHRoZSB0ZXN0cyBpZiB0aGVyZSB3YXMgbm8g
ZmF0YWwgZmFpbHVyZXMsIGFuZAorZmluYWxseSBjYWxscyBgVGVhckRvd24oKWAgb2YgdGhlIGVu
dmlyb25tZW50IG9iamVjdC4KKworSXQncyBPSyB0byByZWdpc3RlciBtdWx0aXBsZSBlbnZpcm9u
bWVudCBvYmplY3RzLiBJbiB0aGlzIGNhc2UsIHRoZWlyIGBTZXRVcCgpYAord2lsbCBiZSBjYWxs
ZWQgaW4gdGhlIG9yZGVyIHRoZXkgYXJlIHJlZ2lzdGVyZWQsIGFuZCB0aGVpciBgVGVhckRvd24o
KWAgd2lsbCBiZQorY2FsbGVkIGluIHRoZSByZXZlcnNlIG9yZGVyLgorCitOb3RlIHRoYXQgR29v
Z2xlIFRlc3QgdGFrZXMgb3duZXJzaGlwIG9mIHRoZSByZWdpc3RlcmVkIGVudmlyb25tZW50IG9i
amVjdHMuCitUaGVyZWZvcmUgKipkbyBub3QgZGVsZXRlIHRoZW0qKiBieSB5b3Vyc2VsZi4KKwor
WW91IHNob3VsZCBjYWxsIGBBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoKWAgYmVmb3JlIGBSVU5f
QUxMX1RFU1RTKClgIGlzCitjYWxsZWQsIHByb2JhYmx5IGluIGBtYWluKClgLiBJZiB5b3UgdXNl
IGBndGVzdF9tYWluYCwgeW91IG5lZWQgdG8gICAgICBjYWxsCit0aGlzIGJlZm9yZSBgbWFpbigp
YCBzdGFydHMgZm9yIGl0IHRvIHRha2UgZWZmZWN0LiBPbmUgd2F5IHRvIGRvIHRoaXMgaXMgdG8K
K2RlZmluZSBhIGdsb2JhbCB2YXJpYWJsZSBsaWtlIHRoaXM6CisKK2BgYAorOjp0ZXN0aW5nOjpF
bnZpcm9ubWVudCogY29uc3QgZm9vX2VudiA9IDo6dGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmly
b25tZW50KG5ldyBGb29FbnZpcm9ubWVudCk7CitgYGAKKworSG93ZXZlciwgd2Ugc3Ryb25nbHkg
cmVjb21tZW5kIHlvdSB0byB3cml0ZSB5b3VyIG93biBgbWFpbigpYCBhbmQgY2FsbAorYEFkZEds
b2JhbFRlc3RFbnZpcm9ubWVudCgpYCB0aGVyZSwgYXMgcmVseWluZyBvbiBpbml0aWFsaXphdGlv
biBvZiBnbG9iYWwKK3ZhcmlhYmxlcyBtYWtlcyB0aGUgY29kZSBoYXJkZXIgdG8gcmVhZCBhbmQg
bWF5IGNhdXNlIHByb2JsZW1zIHdoZW4geW91CityZWdpc3RlciBtdWx0aXBsZSBlbnZpcm9ubWVu
dHMgZnJvbSBkaWZmZXJlbnQgdHJhbnNsYXRpb24gdW5pdHMgYW5kIHRoZQorZW52aXJvbm1lbnRz
IGhhdmUgZGVwZW5kZW5jaWVzIGFtb25nIHRoZW0gKHJlbWVtYmVyIHRoYXQgdGhlIGNvbXBpbGVy
IGRvZXNuJ3QKK2d1YXJhbnRlZSB0aGUgb3JkZXIgaW4gd2hpY2ggZ2xvYmFsIHZhcmlhYmxlcyBm
cm9tIGRpZmZlcmVudCB0cmFuc2xhdGlvbiB1bml0cworYXJlIGluaXRpYWxpemVkKS4KKworX0F2
YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKworIyBWYWx1ZSBQYXJhbWV0ZXJp
emVkIFRlc3RzICMKKworX1ZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHNfIGFsbG93IHlvdSB0byB0
ZXN0IHlvdXIgY29kZSB3aXRoIGRpZmZlcmVudAorcGFyYW1ldGVycyB3aXRob3V0IHdyaXRpbmcg
bXVsdGlwbGUgY29waWVzIG9mIHRoZSBzYW1lIHRlc3QuCisKK1N1cHBvc2UgeW91IHdyaXRlIGEg
dGVzdCBmb3IgeW91ciBjb2RlIGFuZCB0aGVuIHJlYWxpemUgdGhhdCB5b3VyIGNvZGUgaXMgYWZm
ZWN0ZWQgYnkgYSBwcmVzZW5jZSBvZiBhIEJvb2xlYW4gY29tbWFuZCBsaW5lIGZsYWcuCisKK2Bg
YAorVEVTVChNeUNvZGVUZXN0LCBUZXN0Rm9vKSB7CisgIC8vIEEgY29kZSB0byB0ZXN0IGZvbygp
LgorfQorYGBgCisKK1VzdWFsbHkgcGVvcGxlIGZhY3RvciB0aGVpciB0ZXN0IGNvZGUgaW50byBh
IGZ1bmN0aW9uIHdpdGggYSBCb29sZWFuIHBhcmFtZXRlciBpbiBzdWNoIHNpdHVhdGlvbnMuIFRo
ZSBmdW5jdGlvbiBzZXRzIHRoZSBmbGFnLCB0aGVuIGV4ZWN1dGVzIHRoZSB0ZXN0aW5nIGNvZGUu
CisKK2BgYAordm9pZCBUZXN0Rm9vSGVscGVyKGJvb2wgZmxhZ192YWx1ZSkgeworICBmbGFnID0g
ZmxhZ192YWx1ZTsKKyAgLy8gQSBjb2RlIHRvIHRlc3QgZm9vKCkuCit9CisKK1RFU1QoTXlDb2Rl
VGVzdCwgVGVzdEZvbykgeworICBUZXN0Rm9vSGVscGVyKGZhbHNlKTsKKyAgVGVzdEZvb0hlbHBl
cih0cnVlKTsKK30KK2BgYAorCitCdXQgdGhpcyBzZXR1cCBoYXMgc2VyaW91cyBkcmF3YmFja3Mu
IEZpcnN0LCB3aGVuIGEgdGVzdCBhc3NlcnRpb24gZmFpbHMgaW4geW91ciB0ZXN0cywgaXQgYmVj
b21lcyB1bmNsZWFyIHdoYXQgdmFsdWUgb2YgdGhlIHBhcmFtZXRlciBjYXVzZWQgaXQgdG8gZmFp
bC4gWW91IGNhbiBzdHJlYW0gYSBjbGFyaWZ5aW5nIG1lc3NhZ2UgaW50byB5b3VyIGBFWFBFQ1Rg
L2BBU1NFUlRgIHN0YXRlbWVudHMsIGJ1dCBpdCB5b3UnbGwgaGF2ZSB0byBkbyBpdCB3aXRoIGFs
bCBvZiB0aGVtLiBTZWNvbmQsIHlvdSBoYXZlIHRvIGFkZCBvbmUgc3VjaCBoZWxwZXIgZnVuY3Rp
b24gcGVyIHRlc3QuIFdoYXQgaWYgeW91IGhhdmUgdGVuIHRlc3RzPyBUd2VudHk/IEEgaHVuZHJl
ZD8KKworVmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyB3aWxsIGxldCB5b3Ugd3JpdGUgeW91ciB0
ZXN0IG9ubHkgb25jZSBhbmQgdGhlbiBlYXNpbHkgaW5zdGFudGlhdGUgYW5kIHJ1biBpdCB3aXRo
IGFuIGFyYml0cmFyeSBudW1iZXIgb2YgcGFyYW1ldGVyIHZhbHVlcy4KKworSGVyZSBhcmUgc29t
ZSBvdGhlciBzaXR1YXRpb25zIHdoZW4gdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBjb21lIGhh
bmR5OgorCisgICogWW91IHdhbnQgdG8gdGVzdCBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb25zIG9m
IGFuIE9PIGludGVyZmFjZS4KKyAgKiBZb3Ugd2FudCB0byB0ZXN0IHlvdXIgY29kZSBvdmVyIHZh
cmlvdXMgaW5wdXRzIChhLmsuYS4gZGF0YS1kcml2ZW4gdGVzdGluZykuIFRoaXMgZmVhdHVyZSBp
cyBlYXN5IHRvIGFidXNlLCBzbyBwbGVhc2UgZXhlcmNpc2UgeW91ciBnb29kIHNlbnNlIHdoZW4g
ZG9pbmcgaXQhCisKKyMjIEhvdyB0byBXcml0ZSBWYWx1ZS1QYXJhbWV0ZXJpemVkIFRlc3RzICMj
CisKK1RvIHdyaXRlIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMsIGZpcnN0IHlvdSBzaG91bGQg
ZGVmaW5lIGEgZml4dHVyZQorY2xhc3MuICBJdCBtdXN0IGJlIGRlcml2ZWQgZnJvbSBib3RoIGA6
OnRlc3Rpbmc6OlRlc3RgIGFuZAorYDo6dGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPFQ+YCAo
dGhlIGxhdHRlciBpcyBhIHB1cmUgaW50ZXJmYWNlKSwKK3doZXJlIGBUYCBpcyB0aGUgdHlwZSBv
ZiB5b3VyIHBhcmFtZXRlciB2YWx1ZXMuICBGb3IgY29udmVuaWVuY2UsIHlvdQorY2FuIGp1c3Qg
ZGVyaXZlIHRoZSBmaXh0dXJlIGNsYXNzIGZyb20gYDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxU
PmAsCit3aGljaCBpdHNlbGYgaXMgZGVyaXZlZCBmcm9tIGJvdGggYDo6dGVzdGluZzo6VGVzdGAg
YW5kCitgOjp0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8VD5gLiBgVGAgY2FuIGJlIGFueSBj
b3B5YWJsZSB0eXBlLiBJZgoraXQncyBhIHJhdyBwb2ludGVyLCB5b3UgYXJlIHJlc3BvbnNpYmxl
IGZvciBtYW5hZ2luZyB0aGUgbGlmZXNwYW4gb2YKK3RoZSBwb2ludGVkIHZhbHVlcy4KKworYGBg
CitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxjb25zdCBj
aGFyKj4geworICAvLyBZb3UgY2FuIGltcGxlbWVudCBhbGwgdGhlIHVzdWFsIGZpeHR1cmUgY2xh
c3MgbWVtYmVycyBoZXJlLgorICAvLyBUbyBhY2Nlc3MgdGhlIHRlc3QgcGFyYW1ldGVyLCBjYWxs
IEdldFBhcmFtKCkgZnJvbSBjbGFzcworICAvLyBUZXN0V2l0aFBhcmFtPFQ+LgorfTsKKworLy8g
T3IsIHdoZW4geW91IHdhbnQgdG8gYWRkIHBhcmFtZXRlcnMgdG8gYSBwcmUtZXhpc3RpbmcgZml4
dHVyZSBjbGFzczoKK2NsYXNzIEJhc2VUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7Cisg
IC4uLgorfTsKK2NsYXNzIEJhclRlc3QgOiBwdWJsaWMgQmFzZVRlc3QsCisgICAgICAgICAgICAg
ICAgcHVibGljIDo6dGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPGNvbnN0IGNoYXIqPiB7Cisg
IC4uLgorfTsKK2BgYAorCitUaGVuLCB1c2UgdGhlIGBURVNUX1BgIG1hY3JvIHRvIGRlZmluZSBh
cyBtYW55IHRlc3QgcGF0dGVybnMgdXNpbmcKK3RoaXMgZml4dHVyZSBhcyB5b3Ugd2FudC4gIFRo
ZSBgX1BgIHN1ZmZpeCBpcyBmb3IgInBhcmFtZXRlcml6ZWQiIG9yCisicGF0dGVybiIsIHdoaWNo
ZXZlciB5b3UgcHJlZmVyIHRvIHRoaW5rLgorCitgYGAKK1RFU1RfUChGb29UZXN0LCBEb2VzQmxh
aCkgeworICAvLyBJbnNpZGUgYSB0ZXN0LCBhY2Nlc3MgdGhlIHRlc3QgcGFyYW1ldGVyIHdpdGgg
dGhlIEdldFBhcmFtKCkgbWV0aG9kCisgIC8vIG9mIHRoZSBUZXN0V2l0aFBhcmFtPFQ+IGNsYXNz
OgorICBFWFBFQ1RfVFJVRShmb28uQmxhaChHZXRQYXJhbSgpKSk7CisgIC4uLgorfQorCitURVNU
X1AoRm9vVGVzdCwgSGFzQmxhaEJsYWgpIHsKKyAgLi4uCit9CitgYGAKKworRmluYWxseSwgeW91
IGNhbiB1c2UgYElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QYCB0byBpbnN0YW50aWF0ZSB0aGUgdGVz
dAorY2FzZSB3aXRoIGFueSBzZXQgb2YgcGFyYW1ldGVycyB5b3Ugd2FudC4gR29vZ2xlIFRlc3Qg
ZGVmaW5lcyBhIG51bWJlciBvZgorZnVuY3Rpb25zIGZvciBnZW5lcmF0aW5nIHRlc3QgcGFyYW1l
dGVycy4gVGhleSByZXR1cm4gd2hhdCB3ZSBjYWxsCisoc3VycHJpc2UhKSBfcGFyYW1ldGVyIGdl
bmVyYXRvcnNfLiBIZXJlIGlzIGEgc3VtbWFyeSBvZiB0aGVtLAord2hpY2ggYXJlIGFsbCBpbiB0
aGUgYHRlc3RpbmdgIG5hbWVzcGFjZToKKworfCBgUmFuZ2UoYmVnaW4sIGVuZFssIHN0ZXBdKWAg
fCBZaWVsZHMgdmFsdWVzIGB7YmVnaW4sIGJlZ2luK3N0ZXAsIGJlZ2luK3N0ZXArc3RlcCwgLi4u
fWAuIFRoZSB2YWx1ZXMgZG8gbm90IGluY2x1ZGUgYGVuZGAuIGBzdGVwYCBkZWZhdWx0cyB0byAx
LiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKK3wgYFZhbHVlcyh2MSwgdjIs
IC4uLiwgdk4pYCAgIHwgWWllbGRzIHZhbHVlcyBge3YxLCB2MiwgLi4uLCB2Tn1gLiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAorfCBgVmFsdWVzSW4oY29udGFpbmVyKWAgYW5kIGBWYWx1ZXNJbihi
ZWdpbiwgZW5kKWAgfCBZaWVsZHMgdmFsdWVzIGZyb20gYSBDLXN0eWxlIGFycmF5LCBhbiBTVEwt
c3R5bGUgY29udGFpbmVyLCBvciBhbiBpdGVyYXRvciByYW5nZSBgW2JlZ2luLCBlbmQpYC4gYGNv
bnRhaW5lcmAsIGBiZWdpbmAsIGFuZCBgZW5kYCBjYW4gYmUgZXhwcmVzc2lvbnMgd2hvc2UgdmFs
dWVzIGFyZSBkZXRlcm1pbmVkIGF0IHJ1biB0aW1lLiAgfAorfCBgQm9vbCgpYCAgICAgICAgICAg
ICAgICAgICAgfCBZaWVsZHMgc2VxdWVuY2UgYHtmYWxzZSwgdHJ1ZX1gLiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8Cit8IGBDb21iaW5lKGcxLCBnMiwgLi4uLCBnTilgICB8IFlpZWxkcyBhbGwg
Y29tYmluYXRpb25zICh0aGUgQ2FydGVzaWFuIHByb2R1Y3QgZm9yIHRoZSBtYXRoIHNhdnZ5KSBv
ZiB0aGUgdmFsdWVzIGdlbmVyYXRlZCBieSB0aGUgYE5gIGdlbmVyYXRvcnMuIFRoaXMgaXMgb25s
eSBhdmFpbGFibGUgaWYgeW91ciBzeXN0ZW0gcHJvdmlkZXMgdGhlIGA8dHIxL3R1cGxlPmAgaGVh
ZGVyLiBJZiB5b3UgYXJlIHN1cmUgeW91ciBzeXN0ZW0gZG9lcywgYW5kIEdvb2dsZSBUZXN0IGRp
c2FncmVlcywgeW91IGNhbiBvdmVycmlkZSBpdCBieSBkZWZpbmluZyBgR1RFU1RfSEFTX1RSMV9U
VVBMRT0xYC4gU2VlIGNvbW1lbnRzIGluIFtpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBv
cnQuaF0oLi4vaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgpIGZvciBtb3JlIGlu
Zm9ybWF0aW9uLiB8CisKK0ZvciBtb3JlIGRldGFpbHMsIHNlZSB0aGUgY29tbWVudHMgYXQgdGhl
IGRlZmluaXRpb25zIG9mIHRoZXNlIGZ1bmN0aW9ucyBpbiB0aGUgW3NvdXJjZSBjb2RlXSguLi9p
bmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaCkuCisKK1RoZSBmb2xsb3dpbmcgc3RhdGVt
ZW50IHdpbGwgaW5zdGFudGlhdGUgdGVzdHMgZnJvbSB0aGUgYEZvb1Rlc3RgIHRlc3QgY2FzZQor
ZWFjaCB3aXRoIHBhcmFtZXRlciB2YWx1ZXMgYCJtZWVueSJgLCBgIm1pbnkiYCwgYW5kIGAibW9l
ImAuCisKK2BgYAorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoSW5zdGFudGlhdGlvbk5hbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICBGb29UZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAg
Ojp0ZXN0aW5nOjpWYWx1ZXMoIm1lZW55IiwgIm1pbnkiLCAibW9lIikpOworYGBgCisKK1RvIGRp
c3Rpbmd1aXNoIGRpZmZlcmVudCBpbnN0YW5jZXMgb2YgdGhlIHBhdHRlcm4gKHllcywgeW91IGNh
bgoraW5zdGFudGlhdGUgaXQgbW9yZSB0aGFuIG9uY2UpLCB0aGUgZmlyc3QgYXJndW1lbnQgdG8K
K2BJTlNUQU5USUFURV9URVNUX0NBU0VfUGAgaXMgYSBwcmVmaXggdGhhdCB3aWxsIGJlIGFkZGVk
IHRvIHRoZSBhY3R1YWwKK3Rlc3QgY2FzZSBuYW1lLiBSZW1lbWJlciB0byBwaWNrIHVuaXF1ZSBw
cmVmaXhlcyBmb3IgZGlmZmVyZW50CitpbnN0YW50aWF0aW9ucy4gVGhlIHRlc3RzIGZyb20gdGhl
IGluc3RhbnRpYXRpb24gYWJvdmUgd2lsbCBoYXZlIHRoZXNlCituYW1lczoKKworICAqIGBJbnN0
YW50aWF0aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzBgIGZvciBgIm1lZW55ImAKKyAgKiBgSW5z
dGFudGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8xYCBmb3IgYCJtaW55ImAKKyAgKiBgSW5z
dGFudGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8yYCBmb3IgYCJtb2UiYAorICAqIGBJbnN0
YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0JsYWhCbGFoLzBgIGZvciBgIm1lZW55ImAKKyAgKiBg
SW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8xYCBmb3IgYCJtaW55ImAKKyAg
KiBgSW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8yYCBmb3IgYCJtb2UiYAor
CitZb3UgY2FuIHVzZSB0aGVzZSBuYW1lcyBpbiBbLS1ndGVzdFxfZmlsdGVyXSgjcnVubmluZy1h
LXN1YnNldC1vZi10aGUtdGVzdHMpLgorCitUaGlzIHN0YXRlbWVudCB3aWxsIGluc3RhbnRpYXRl
IGFsbCB0ZXN0cyBmcm9tIGBGb29UZXN0YCBhZ2FpbiwgZWFjaAord2l0aCBwYXJhbWV0ZXIgdmFs
dWVzIGAiY2F0ImAgYW5kIGAiZG9nImA6CisKK2BgYAorY29uc3QgY2hhciogcGV0c1tdID0geyJj
YXQiLCAiZG9nIn07CitJTlNUQU5USUFURV9URVNUX0NBU0VfUChBbm90aGVySW5zdGFudGlhdGlv
bk5hbWUsIEZvb1Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlZhbHVl
c0luKHBldHMpKTsKK2BgYAorCitUaGUgdGVzdHMgZnJvbSB0aGUgaW5zdGFudGlhdGlvbiBhYm92
ZSB3aWxsIGhhdmUgdGhlc2UgbmFtZXM6CisKKyAgKiBgQW5vdGhlckluc3RhbnRpYXRpb25OYW1l
L0Zvb1Rlc3QuRG9lc0JsYWgvMGAgZm9yIGAiY2F0ImAKKyAgKiBgQW5vdGhlckluc3RhbnRpYXRp
b25OYW1lL0Zvb1Rlc3QuRG9lc0JsYWgvMWAgZm9yIGAiZG9nImAKKyAgKiBgQW5vdGhlckluc3Rh
bnRpYXRpb25OYW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgvMGAgZm9yIGAiY2F0ImAKKyAgKiBgQW5v
dGhlckluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgvMWAgZm9yIGAiZG9nImAK
KworUGxlYXNlIG5vdGUgdGhhdCBgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1BgIHdpbGwgaW5zdGFu
dGlhdGUgX2FsbF8KK3Rlc3RzIGluIHRoZSBnaXZlbiB0ZXN0IGNhc2UsIHdoZXRoZXIgdGhlaXIg
ZGVmaW5pdGlvbnMgY29tZSBiZWZvcmUgb3IKK19hZnRlcl8gdGhlIGBJTlNUQU5USUFURV9URVNU
X0NBU0VfUGAgc3RhdGVtZW50LgorCitZb3UgY2FuIHNlZQorW3RoZXNlXSguLi9zYW1wbGVzL3Nh
bXBsZTdfdW5pdHRlc3QuY2MpCitbZmlsZXNdKC4uL3NhbXBsZXMvc2FtcGxlOF91bml0dGVzdC5j
YykgZm9yIG1vcmUgZXhhbXBsZXMuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cyAo
cmVxdWlyZXMgTVNWQyA4LjAgb3IgYWJvdmUpLCBNYWM7IHNpbmNlIHZlcnNpb24gMS4yLjAuCisK
KyMjIENyZWF0aW5nIFZhbHVlLVBhcmFtZXRlcml6ZWQgQWJzdHJhY3QgVGVzdHMgIyMKKworSW4g
dGhlIGFib3ZlLCB3ZSBkZWZpbmUgYW5kIGluc3RhbnRpYXRlIGBGb29UZXN0YCBpbiB0aGUgc2Ft
ZSBzb3VyY2UKK2ZpbGUuIFNvbWV0aW1lcyB5b3UgbWF5IHdhbnQgdG8gZGVmaW5lIHZhbHVlLXBh
cmFtZXRlcml6ZWQgdGVzdHMgaW4gYQorbGlicmFyeSBhbmQgbGV0IG90aGVyIHBlb3BsZSBpbnN0
YW50aWF0ZSB0aGVtIGxhdGVyLiBUaGlzIHBhdHRlcm4gaXMKK2tub3duIGFzIDxpPmFic3RyYWN0
IHRlc3RzPC9pPi4gQXMgYW4gZXhhbXBsZSBvZiBpdHMgYXBwbGljYXRpb24sIHdoZW4geW91Cith
cmUgZGVzaWduaW5nIGFuIGludGVyZmFjZSB5b3UgY2FuIHdyaXRlIGEgc3RhbmRhcmQgc3VpdGUg
b2YgYWJzdHJhY3QKK3Rlc3RzIChwZXJoYXBzIHVzaW5nIGEgZmFjdG9yeSBmdW5jdGlvbiBhcyB0
aGUgdGVzdCBwYXJhbWV0ZXIpIHRoYXQKK2FsbCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGludGVy
ZmFjZSBhcmUgZXhwZWN0ZWQgdG8gcGFzcy4gV2hlbgorc29tZW9uZSBpbXBsZW1lbnRzIHRoZSBp
bnRlcmZhY2UsIGhlIGNhbiBpbnN0YW50aWF0ZSB5b3VyIHN1aXRlIHRvIGdldAorYWxsIHRoZSBp
bnRlcmZhY2UtY29uZm9ybWFuY2UgdGVzdHMgZm9yIGZyZWUuCisKK1RvIGRlZmluZSBhYnN0cmFj
dCB0ZXN0cywgeW91IHNob3VsZCBvcmdhbml6ZSB5b3VyIGNvZGUgbGlrZSB0aGlzOgorCisgIDEu
IFB1dCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgcGFyYW1ldGVyaXplZCB0ZXN0IGZpeHR1cmUgY2xh
c3MgKGUuZy4gYEZvb1Rlc3RgKSBpbiBhIGhlYWRlciBmaWxlLCBzYXkgYGZvb19wYXJhbV90ZXN0
LmhgLiBUaGluayBvZiB0aGlzIGFzIF9kZWNsYXJpbmdfIHlvdXIgYWJzdHJhY3QgdGVzdHMuCisg
IDEuIFB1dCB0aGUgYFRFU1RfUGAgZGVmaW5pdGlvbnMgaW4gYGZvb19wYXJhbV90ZXN0LmNjYCwg
d2hpY2ggaW5jbHVkZXMgYGZvb19wYXJhbV90ZXN0LmhgLiBUaGluayBvZiB0aGlzIGFzIF9pbXBs
ZW1lbnRpbmdfIHlvdXIgYWJzdHJhY3QgdGVzdHMuCisKK09uY2UgdGhleSBhcmUgZGVmaW5lZCwg
eW91IGNhbiBpbnN0YW50aWF0ZSB0aGVtIGJ5IGluY2x1ZGluZworYGZvb19wYXJhbV90ZXN0Lmhg
LCBpbnZva2luZyBgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoKWAsIGFuZCBsaW5raW5nCit3aXRo
IGBmb29fcGFyYW1fdGVzdC5jY2AuIFlvdSBjYW4gaW5zdGFudGlhdGUgdGhlIHNhbWUgYWJzdHJh
Y3QgdGVzdAorY2FzZSBtdWx0aXBsZSB0aW1lcywgcG9zc2libHkgaW4gZGlmZmVyZW50IHNvdXJj
ZSBmaWxlcy4KKworIyBUeXBlZCBUZXN0cyAjCisKK1N1cHBvc2UgeW91IGhhdmUgbXVsdGlwbGUg
aW1wbGVtZW50YXRpb25zIG9mIHRoZSBzYW1lIGludGVyZmFjZSBhbmQKK3dhbnQgdG8gbWFrZSBz
dXJlIHRoYXQgYWxsIG9mIHRoZW0gc2F0aXNmeSBzb21lIGNvbW1vbiByZXF1aXJlbWVudHMuCitP
ciwgeW91IG1heSBoYXZlIGRlZmluZWQgc2V2ZXJhbCB0eXBlcyB0aGF0IGFyZSBzdXBwb3NlZCB0
byBjb25mb3JtIHRvCit0aGUgc2FtZSAiY29uY2VwdCIgYW5kIHlvdSB3YW50IHRvIHZlcmlmeSBp
dC4gIEluIGJvdGggY2FzZXMsIHlvdSB3YW50Cit0aGUgc2FtZSB0ZXN0IGxvZ2ljIHJlcGVhdGVk
IGZvciBkaWZmZXJlbnQgdHlwZXMuCisKK1doaWxlIHlvdSBjYW4gd3JpdGUgb25lIGBURVNUYCBv
ciBgVEVTVF9GYCBmb3IgZWFjaCB0eXBlIHlvdSB3YW50IHRvCit0ZXN0IChhbmQgeW91IG1heSBl
dmVuIGZhY3RvciB0aGUgdGVzdCBsb2dpYyBpbnRvIGEgZnVuY3Rpb24gdGVtcGxhdGUKK3RoYXQg
eW91IGludm9rZSBmcm9tIHRoZSBgVEVTVGApLCBpdCdzIHRlZGlvdXMgYW5kIGRvZXNuJ3Qgc2Nh
bGU6CitpZiB5b3Ugd2FudCBfbV8gdGVzdHMgb3ZlciBfbl8gdHlwZXMsIHlvdSdsbCBlbmQgdXAg
d3JpdGluZyBfbVwqbl8KK2BURVNUYHMuCisKK19UeXBlZCB0ZXN0c18gYWxsb3cgeW91IHRvIHJl
cGVhdCB0aGUgc2FtZSB0ZXN0IGxvZ2ljIG92ZXIgYSBsaXN0IG9mCit0eXBlcy4gIFlvdSBvbmx5
IG5lZWQgdG8gd3JpdGUgdGhlIHRlc3QgbG9naWMgb25jZSwgYWx0aG91Z2ggeW91IG11c3QKK2tu
b3cgdGhlIHR5cGUgbGlzdCB3aGVuIHdyaXRpbmcgdHlwZWQgdGVzdHMuICBIZXJlJ3MgaG93IHlv
dSBkbyBpdDoKKworRmlyc3QsIGRlZmluZSBhIGZpeHR1cmUgY2xhc3MgdGVtcGxhdGUuICBJdCBz
aG91bGQgYmUgcGFyYW1ldGVyaXplZAorYnkgYSB0eXBlLiAgUmVtZW1iZXIgdG8gZGVyaXZlIGl0
IGZyb20gYDo6dGVzdGluZzo6VGVzdGA6CisKK2BgYAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citj
bGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHVibGljOgorICAuLi4K
KyAgdHlwZWRlZiBzdGQ6Omxpc3Q8VD4gTGlzdDsKKyAgc3RhdGljIFQgc2hhcmVkXzsKKyAgVCB2
YWx1ZV87Cit9OworYGBgCisKK05leHQsIGFzc29jaWF0ZSBhIGxpc3Qgb2YgdHlwZXMgd2l0aCB0
aGUgdGVzdCBjYXNlLCB3aGljaCB3aWxsIGJlCityZXBlYXRlZCBmb3IgZWFjaCB0eXBlIGluIHRo
ZSBsaXN0OgorCitgYGAKK3R5cGVkZWYgOjp0ZXN0aW5nOjpUeXBlczxjaGFyLCBpbnQsIHVuc2ln
bmVkIGludD4gTXlUeXBlczsKK1RZUEVEX1RFU1RfQ0FTRShGb29UZXN0LCBNeVR5cGVzKTsKK2Bg
YAorCitUaGUgYHR5cGVkZWZgIGlzIG5lY2Vzc2FyeSBmb3IgdGhlIGBUWVBFRF9URVNUX0NBU0Vg
IG1hY3JvIHRvIHBhcnNlCitjb3JyZWN0bHkuICBPdGhlcndpc2UgdGhlIGNvbXBpbGVyIHdpbGwg
dGhpbmsgdGhhdCBlYWNoIGNvbW1hIGluIHRoZQordHlwZSBsaXN0IGludHJvZHVjZXMgYSBuZXcg
bWFjcm8gYXJndW1lbnQuCisKK1RoZW4sIHVzZSBgVFlQRURfVEVTVCgpYCBpbnN0ZWFkIG9mIGBU
RVNUX0YoKWAgdG8gZGVmaW5lIGEgdHlwZWQgdGVzdAorZm9yIHRoaXMgdGVzdCBjYXNlLiAgWW91
IGNhbiByZXBlYXQgdGhpcyBhcyBtYW55IHRpbWVzIGFzIHlvdSB3YW50OgorCitgYGAKK1RZUEVE
X1RFU1QoRm9vVGVzdCwgRG9lc0JsYWgpIHsKKyAgLy8gSW5zaWRlIGEgdGVzdCwgcmVmZXIgdG8g
dGhlIHNwZWNpYWwgbmFtZSBUeXBlUGFyYW0gdG8gZ2V0IHRoZSB0eXBlCisgIC8vIHBhcmFtZXRl
ci4gIFNpbmNlIHdlIGFyZSBpbnNpZGUgYSBkZXJpdmVkIGNsYXNzIHRlbXBsYXRlLCBDKysgcmVx
dWlyZXMKKyAgLy8gdXMgdG8gdmlzaXQgdGhlIG1lbWJlcnMgb2YgRm9vVGVzdCB2aWEgJ3RoaXMn
LgorICBUeXBlUGFyYW0gbiA9IHRoaXMtPnZhbHVlXzsKKworICAvLyBUbyB2aXNpdCBzdGF0aWMg
bWVtYmVycyBvZiB0aGUgZml4dHVyZSwgYWRkIHRoZSAnVGVzdEZpeHR1cmU6OicKKyAgLy8gcHJl
Zml4LgorICBuICs9IFRlc3RGaXh0dXJlOjpzaGFyZWRfOworCisgIC8vIFRvIHJlZmVyIHRvIHR5
cGVkZWZzIGluIHRoZSBmaXh0dXJlLCBhZGQgdGhlICd0eXBlbmFtZSBUZXN0Rml4dHVyZTo6Jwor
ICAvLyBwcmVmaXguICBUaGUgJ3R5cGVuYW1lJyBpcyByZXF1aXJlZCB0byBzYXRpc2Z5IHRoZSBj
b21waWxlci4KKyAgdHlwZW5hbWUgVGVzdEZpeHR1cmU6Okxpc3QgdmFsdWVzOworICB2YWx1ZXMu
cHVzaF9iYWNrKG4pOworICAuLi4KK30KKworVFlQRURfVEVTVChGb29UZXN0LCBIYXNQcm9wZXJ0
eUEpIHsgLi4uIH0KK2BgYAorCitZb3UgY2FuIHNlZSBgc2FtcGxlcy9zYW1wbGU2X3VuaXR0ZXN0
LmNjYCBmb3IgYSBjb21wbGV0ZSBleGFtcGxlLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdp
bmRvd3MgKHJlcXVpcmVzIE1TVkMgOC4wIG9yIGFib3ZlKSwgTWFjOworc2luY2UgdmVyc2lvbiAx
LjEuMC4KKworIyBUeXBlLVBhcmFtZXRlcml6ZWQgVGVzdHMgIworCitfVHlwZS1wYXJhbWV0ZXJp
emVkIHRlc3RzXyBhcmUgbGlrZSB0eXBlZCB0ZXN0cywgZXhjZXB0IHRoYXQgdGhleQorZG9uJ3Qg
cmVxdWlyZSB5b3UgdG8ga25vdyB0aGUgbGlzdCBvZiB0eXBlcyBhaGVhZCBvZiB0aW1lLiAgSW5z
dGVhZCwKK3lvdSBjYW4gZGVmaW5lIHRoZSB0ZXN0IGxvZ2ljIGZpcnN0IGFuZCBpbnN0YW50aWF0
ZSBpdCB3aXRoIGRpZmZlcmVudAordHlwZSBsaXN0cyBsYXRlci4gIFlvdSBjYW4gZXZlbiBpbnN0
YW50aWF0ZSBpdCBtb3JlIHRoYW4gb25jZSBpbiB0aGUKK3NhbWUgcHJvZ3JhbS4KKworSWYgeW91
IGFyZSBkZXNpZ25pbmcgYW4gaW50ZXJmYWNlIG9yIGNvbmNlcHQsIHlvdSBjYW4gZGVmaW5lIGEg
c3VpdGUKK29mIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cyB0byB2ZXJpZnkgcHJvcGVydGllcyB0
aGF0IGFueSB2YWxpZAoraW1wbGVtZW50YXRpb24gb2YgdGhlIGludGVyZmFjZS9jb25jZXB0IHNo
b3VsZCBoYXZlLiAgVGhlbiwgdGhlIGF1dGhvcgorb2YgZWFjaCBpbXBsZW1lbnRhdGlvbiBjYW4g
anVzdCBpbnN0YW50aWF0ZSB0aGUgdGVzdCBzdWl0ZSB3aXRoIGhpcwordHlwZSB0byB2ZXJpZnkg
dGhhdCBpdCBjb25mb3JtcyB0byB0aGUgcmVxdWlyZW1lbnRzLCB3aXRob3V0IGhhdmluZyB0bwor
d3JpdGUgc2ltaWxhciB0ZXN0cyByZXBlYXRlZGx5LiAgSGVyZSdzIGFuIGV4YW1wbGU6CisKK0Zp
cnN0LCBkZWZpbmUgYSBmaXh0dXJlIGNsYXNzIHRlbXBsYXRlLCBhcyB3ZSBkaWQgd2l0aCB0eXBl
ZCB0ZXN0czoKKworYGBgCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIEZvb1Rlc3QgOiBw
dWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyAgLi4uCit9OworYGBgCisKK05leHQsIGRlY2xhcmUg
dGhhdCB5b3Ugd2lsbCBkZWZpbmUgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlOgorCitg
YGAKK1RZUEVEX1RFU1RfQ0FTRV9QKEZvb1Rlc3QpOworYGBgCisKK1RoZSBgX1BgIHN1ZmZpeCBp
cyBmb3IgInBhcmFtZXRlcml6ZWQiIG9yICJwYXR0ZXJuIiwgd2hpY2hldmVyIHlvdQorcHJlZmVy
IHRvIHRoaW5rLgorCitUaGVuLCB1c2UgYFRZUEVEX1RFU1RfUCgpYCB0byBkZWZpbmUgYSB0eXBl
LXBhcmFtZXRlcml6ZWQgdGVzdC4gIFlvdQorY2FuIHJlcGVhdCB0aGlzIGFzIG1hbnkgdGltZXMg
YXMgeW91IHdhbnQ6CisKK2BgYAorVFlQRURfVEVTVF9QKEZvb1Rlc3QsIERvZXNCbGFoKSB7Cisg
IC8vIEluc2lkZSBhIHRlc3QsIHJlZmVyIHRvIFR5cGVQYXJhbSB0byBnZXQgdGhlIHR5cGUgcGFy
YW1ldGVyLgorICBUeXBlUGFyYW0gbiA9IDA7CisgIC4uLgorfQorCitUWVBFRF9URVNUX1AoRm9v
VGVzdCwgSGFzUHJvcGVydHlBKSB7IC4uLiB9CitgYGAKKworTm93IHRoZSB0cmlja3kgcGFydDog
eW91IG5lZWQgdG8gcmVnaXN0ZXIgYWxsIHRlc3QgcGF0dGVybnMgdXNpbmcgdGhlCitgUkVHSVNU
RVJfVFlQRURfVEVTVF9DQVNFX1BgIG1hY3JvIGJlZm9yZSB5b3UgY2FuIGluc3RhbnRpYXRlIHRo
ZW0uCitUaGUgZmlyc3QgYXJndW1lbnQgb2YgdGhlIG1hY3JvIGlzIHRoZSB0ZXN0IGNhc2UgbmFt
ZTsgdGhlIHJlc3QgYXJlCit0aGUgbmFtZXMgb2YgdGhlIHRlc3RzIGluIHRoaXMgdGVzdCBjYXNl
OgorCitgYGAKK1JFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKEZvb1Rlc3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEb2VzQmxhaCwgSGFzUHJvcGVydHlBKTsKK2BgYAorCitGaW5hbGx5
LCB5b3UgYXJlIGZyZWUgdG8gaW5zdGFudGlhdGUgdGhlIHBhdHRlcm4gd2l0aCB0aGUgdHlwZXMg
eW91Cit3YW50LiAgSWYgeW91IHB1dCB0aGUgYWJvdmUgY29kZSBpbiBhIGhlYWRlciBmaWxlLCB5
b3UgY2FuIGAjaW5jbHVkZWAKK2l0IGluIG11bHRpcGxlIEMrKyBzb3VyY2UgZmlsZXMgYW5kIGlu
c3RhbnRpYXRlIGl0IG11bHRpcGxlIHRpbWVzLgorCitgYGAKK3R5cGVkZWYgOjp0ZXN0aW5nOjpU
eXBlczxjaGFyLCBpbnQsIHVuc2lnbmVkIGludD4gTXlUeXBlczsKK0lOU1RBTlRJQVRFX1RZUEVE
X1RFU1RfQ0FTRV9QKE15LCBGb29UZXN0LCBNeVR5cGVzKTsKK2BgYAorCitUbyBkaXN0aW5ndWlz
aCBkaWZmZXJlbnQgaW5zdGFuY2VzIG9mIHRoZSBwYXR0ZXJuLCB0aGUgZmlyc3QgYXJndW1lbnQK
K3RvIHRoZSBgSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1BgIG1hY3JvIGlzIGEgcHJlZml4
IHRoYXQgd2lsbCBiZQorYWRkZWQgdG8gdGhlIGFjdHVhbCB0ZXN0IGNhc2UgbmFtZS4gIFJlbWVt
YmVyIHRvIHBpY2sgdW5pcXVlIHByZWZpeGVzCitmb3IgZGlmZmVyZW50IGluc3RhbmNlcy4KKwor
SW4gdGhlIHNwZWNpYWwgY2FzZSB3aGVyZSB0aGUgdHlwZSBsaXN0IGNvbnRhaW5zIG9ubHkgb25l
IHR5cGUsIHlvdQorY2FuIHdyaXRlIHRoYXQgdHlwZSBkaXJlY3RseSB3aXRob3V0IGA6OnRlc3Rp
bmc6OlR5cGVzPC4uLj5gLCBsaWtlIHRoaXM6CisKK2BgYAorSU5TVEFOVElBVEVfVFlQRURfVEVT
VF9DQVNFX1AoTXksIEZvb1Rlc3QsIGludCk7CitgYGAKKworWW91IGNhbiBzZWUgYHNhbXBsZXMv
c2FtcGxlNl91bml0dGVzdC5jY2AgZm9yIGEgY29tcGxldGUgZXhhbXBsZS4KKworX0F2YWlsYWJp
bGl0eTpfIExpbnV4LCBXaW5kb3dzIChyZXF1aXJlcyBNU1ZDIDguMCBvciBhYm92ZSksIE1hYzsK
K3NpbmNlIHZlcnNpb24gMS4xLjAuCisKKyMgVGVzdGluZyBQcml2YXRlIENvZGUgIworCitJZiB5
b3UgY2hhbmdlIHlvdXIgc29mdHdhcmUncyBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiwgeW91ciB0
ZXN0cyBzaG91bGQgbm90CiticmVhayBhcyBsb25nIGFzIHRoZSBjaGFuZ2UgaXMgbm90IG9ic2Vy
dmFibGUgYnkgdXNlcnMuIFRoZXJlZm9yZSwgcGVyIHRoZQorX2JsYWNrLWJveCB0ZXN0aW5nIHBy
aW5jaXBsZV8sIG1vc3Qgb2YgdGhlIHRpbWUgeW91IHNob3VsZCB0ZXN0IHlvdXIgY29kZQordGhy
b3VnaCBpdHMgcHVibGljIGludGVyZmFjZXMuCisKK0lmIHlvdSBzdGlsbCBmaW5kIHlvdXJzZWxm
IG5lZWRpbmcgdG8gdGVzdCBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBjb2RlLAorY29uc2lkZXIg
aWYgdGhlcmUncyBhIGJldHRlciBkZXNpZ24gdGhhdCB3b3VsZG4ndCByZXF1aXJlIHlvdSB0byBk
byBzby4gSWYgeW91CithYnNvbHV0ZWx5IGhhdmUgdG8gdGVzdCBub24tcHVibGljIGludGVyZmFj
ZSBjb2RlIHRob3VnaCwgeW91IGNhbi4gVGhlcmUgYXJlCit0d28gY2FzZXMgdG8gY29uc2lkZXI6
CisKKyAgKiBTdGF0aWMgZnVuY3Rpb25zIChfbm90XyB0aGUgc2FtZSBhcyBzdGF0aWMgbWVtYmVy
IGZ1bmN0aW9ucyEpIG9yIHVubmFtZWQgbmFtZXNwYWNlcywgYW5kCisgICogUHJpdmF0ZSBvciBw
cm90ZWN0ZWQgY2xhc3MgbWVtYmVycworCisjIyBTdGF0aWMgRnVuY3Rpb25zICMjCisKK0JvdGgg
c3RhdGljIGZ1bmN0aW9ucyBhbmQgZGVmaW5pdGlvbnMvZGVjbGFyYXRpb25zIGluIGFuIHVubmFt
ZWQgbmFtZXNwYWNlIGFyZQorb25seSB2aXNpYmxlIHdpdGhpbiB0aGUgc2FtZSB0cmFuc2xhdGlv
biB1bml0LiBUbyB0ZXN0IHRoZW0sIHlvdSBjYW4gYCNpbmNsdWRlYAordGhlIGVudGlyZSBgLmNj
YCBmaWxlIGJlaW5nIHRlc3RlZCBpbiB5b3VyIGAqX3Rlc3QuY2NgIGZpbGUuIChgI2luY2x1ZGVg
aW5nIGAuY2NgCitmaWxlcyBpcyBub3QgYSBnb29kIHdheSB0byByZXVzZSBjb2RlIC0geW91IHNo
b3VsZCBub3QgZG8gdGhpcyBpbiBwcm9kdWN0aW9uCitjb2RlISkKKworSG93ZXZlciwgYSBiZXR0
ZXIgYXBwcm9hY2ggaXMgdG8gbW92ZSB0aGUgcHJpdmF0ZSBjb2RlIGludG8gdGhlCitgZm9vOjpp
bnRlcm5hbGAgbmFtZXNwYWNlLCB3aGVyZSBgZm9vYCBpcyB0aGUgbmFtZXNwYWNlIHlvdXIgcHJv
amVjdCBub3JtYWxseQordXNlcywgYW5kIHB1dCB0aGUgcHJpdmF0ZSBkZWNsYXJhdGlvbnMgaW4g
YSBgKi1pbnRlcm5hbC5oYCBmaWxlLiBZb3VyCitwcm9kdWN0aW9uIGAuY2NgIGZpbGVzIGFuZCB5
b3VyIHRlc3RzIGFyZSBhbGxvd2VkIHRvIGluY2x1ZGUgdGhpcyBpbnRlcm5hbAoraGVhZGVyLCBi
dXQgeW91ciBjbGllbnRzIGFyZSBub3QuIFRoaXMgd2F5LCB5b3UgY2FuIGZ1bGx5IHRlc3QgeW91
ciBpbnRlcm5hbAoraW1wbGVtZW50YXRpb24gd2l0aG91dCBsZWFraW5nIGl0IHRvIHlvdXIgY2xp
ZW50cy4KKworIyMgUHJpdmF0ZSBDbGFzcyBNZW1iZXJzICMjCisKK1ByaXZhdGUgY2xhc3MgbWVt
YmVycyBhcmUgb25seSBhY2Nlc3NpYmxlIGZyb20gd2l0aGluIHRoZSBjbGFzcyBvciBieSBmcmll
bmRzLgorVG8gYWNjZXNzIGEgY2xhc3MnIHByaXZhdGUgbWVtYmVycywgeW91IGNhbiBkZWNsYXJl
IHlvdXIgdGVzdCBmaXh0dXJlIGFzIGEKK2ZyaWVuZCB0byB0aGUgY2xhc3MgYW5kIGRlZmluZSBh
Y2Nlc3NvcnMgaW4geW91ciBmaXh0dXJlLiBUZXN0cyB1c2luZyB0aGUKK2ZpeHR1cmUgY2FuIHRo
ZW4gYWNjZXNzIHRoZSBwcml2YXRlIG1lbWJlcnMgb2YgeW91ciBwcm9kdWN0aW9uIGNsYXNzIHZp
YSB0aGUKK2FjY2Vzc29ycyBpbiB0aGUgZml4dHVyZS4gTm90ZSB0aGF0IGV2ZW4gdGhvdWdoIHlv
dXIgZml4dHVyZSBpcyBhIGZyaWVuZCB0bworeW91ciBwcm9kdWN0aW9uIGNsYXNzLCB5b3VyIHRl
c3RzIGFyZSBub3QgYXV0b21hdGljYWxseSBmcmllbmRzIHRvIGl0LCBhcyB0aGV5CithcmUgdGVj
aG5pY2FsbHkgZGVmaW5lZCBpbiBzdWItY2xhc3NlcyBvZiB0aGUgZml4dHVyZS4KKworQW5vdGhl
ciB3YXkgdG8gdGVzdCBwcml2YXRlIG1lbWJlcnMgaXMgdG8gcmVmYWN0b3IgdGhlbSBpbnRvIGFu
IGltcGxlbWVudGF0aW9uCitjbGFzcywgd2hpY2ggaXMgdGhlbiBkZWNsYXJlZCBpbiBhIGAqLWlu
dGVybmFsLmhgIGZpbGUuIFlvdXIgY2xpZW50cyBhcmVuJ3QKK2FsbG93ZWQgdG8gaW5jbHVkZSB0
aGlzIGhlYWRlciBidXQgeW91ciB0ZXN0cyBjYW4uIFN1Y2ggaXMgY2FsbGVkIHRoZSBQaW1wbAor
KFByaXZhdGUgSW1wbGVtZW50YXRpb24pIGlkaW9tLgorCitPciwgeW91IGNhbiBkZWNsYXJlIGFu
IGluZGl2aWR1YWwgdGVzdCBhcyBhIGZyaWVuZCBvZiB5b3VyIGNsYXNzIGJ5IGFkZGluZyB0aGlz
CitsaW5lIGluIHRoZSBjbGFzcyBib2R5OgorCitgYGAKK0ZSSUVORF9URVNUKFRlc3RDYXNlTmFt
ZSwgVGVzdE5hbWUpOworYGBgCisKK0ZvciBleGFtcGxlLAorYGBgCisvLyBmb28uaAorI2luY2x1
ZGUgImd0ZXN0L2d0ZXN0X3Byb2QuaCIKKworLy8gRGVmaW5lcyBGUklFTkRfVEVTVC4KK2NsYXNz
IEZvbyB7CisgIC4uLgorIHByaXZhdGU6CisgIEZSSUVORF9URVNUKEZvb1Rlc3QsIEJhclJldHVy
bnNaZXJvT25OdWxsKTsKKyAgaW50IEJhcih2b2lkKiB4KTsKK307CisKKy8vIGZvb190ZXN0LmNj
CisuLi4KK1RFU1QoRm9vVGVzdCwgQmFyUmV0dXJuc1plcm9Pbk51bGwpIHsKKyAgRm9vIGZvbzsK
KyAgRVhQRUNUX0VRKDAsIGZvby5CYXIoTlVMTCkpOworICAvLyBVc2VzIEZvbydzIHByaXZhdGUg
bWVtYmVyIEJhcigpLgorfQorYGBgCisKK1BheSBzcGVjaWFsIGF0dGVudGlvbiB3aGVuIHlvdXIg
Y2xhc3MgaXMgZGVmaW5lZCBpbiBhIG5hbWVzcGFjZSwgYXMgeW91IHNob3VsZAorZGVmaW5lIHlv
dXIgdGVzdCBmaXh0dXJlcyBhbmQgdGVzdHMgaW4gdGhlIHNhbWUgbmFtZXNwYWNlIGlmIHlvdSB3
YW50IHRoZW0gdG8KK2JlIGZyaWVuZHMgb2YgeW91ciBjbGFzcy4gRm9yIGV4YW1wbGUsIGlmIHRo
ZSBjb2RlIHRvIGJlIHRlc3RlZCBsb29rcyBsaWtlOgorCitgYGAKK25hbWVzcGFjZSBteV9uYW1l
c3BhY2UgeworCitjbGFzcyBGb28geworICBmcmllbmQgY2xhc3MgRm9vVGVzdDsKKyAgRlJJRU5E
X1RFU1QoRm9vVGVzdCwgQmFyKTsKKyAgRlJJRU5EX1RFU1QoRm9vVGVzdCwgQmF6KTsKKyAgLi4u
CisgIGRlZmluaXRpb24gb2YgdGhlIGNsYXNzIEZvbworICAuLi4KK307CisKK30gIC8vIG5hbWVz
cGFjZSBteV9uYW1lc3BhY2UKK2BgYAorCitZb3VyIHRlc3QgY29kZSBzaG91bGQgYmUgc29tZXRo
aW5nIGxpa2U6CisKK2BgYAorbmFtZXNwYWNlIG15X25hbWVzcGFjZSB7CitjbGFzcyBGb29UZXN0
IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICAuLi4KK307CisKK1RF
U1RfRihGb29UZXN0LCBCYXIpIHsgLi4uIH0KK1RFU1RfRihGb29UZXN0LCBCYXopIHsgLi4uIH0K
KworfSAgLy8gbmFtZXNwYWNlIG15X25hbWVzcGFjZQorYGBgCisKKyMgQ2F0Y2hpbmcgRmFpbHVy
ZXMgIworCitJZiB5b3UgYXJlIGJ1aWxkaW5nIGEgdGVzdGluZyB1dGlsaXR5IG9uIHRvcCBvZiBH
b29nbGUgVGVzdCwgeW91J2xsCit3YW50IHRvIHRlc3QgeW91ciB1dGlsaXR5LiAgV2hhdCBmcmFt
ZXdvcmsgd291bGQgeW91IHVzZSB0byB0ZXN0IGl0PworR29vZ2xlIFRlc3QsIG9mIGNvdXJzZS4K
KworVGhlIGNoYWxsZW5nZSBpcyB0byB2ZXJpZnkgdGhhdCB5b3VyIHRlc3RpbmcgdXRpbGl0eSBy
ZXBvcnRzIGZhaWx1cmVzCitjb3JyZWN0bHkuICBJbiBmcmFtZXdvcmtzIHRoYXQgcmVwb3J0IGEg
ZmFpbHVyZSBieSB0aHJvd2luZyBhbgorZXhjZXB0aW9uLCB5b3UgY291bGQgY2F0Y2ggdGhlIGV4
Y2VwdGlvbiBhbmQgYXNzZXJ0IG9uIGl0LiAgQnV0IEdvb2dsZQorVGVzdCBkb2Vzbid0IHVzZSBl
eGNlcHRpb25zLCBzbyBob3cgZG8gd2UgdGVzdCB0aGF0IGEgcGllY2Ugb2YgY29kZQorZ2VuZXJh
dGVzIGFuIGV4cGVjdGVkIGZhaWx1cmU/CisKK2AiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiYCBjb250YWlu
cyBzb21lIGNvbnN0cnVjdHMgdG8gZG8gdGhpcy4gIEFmdGVyIAorYCNpbmNsdWRlYGluZyB0aGlz
IGhlYWRlciwgeW91IGNhbiB1c2UKKworfCBgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoYF9zdGF0ZW1l
bnQsIHN1YnN0cmluZ19gKTtgIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS18CisKK3RvIGFzc2VydCB0aGF0IF9zdGF0ZW1lbnRfIGdlbmVyYXRl
cyBhIGZhdGFsIChlLmcuIGBBU1NFUlRfKmApIGZhaWx1cmUKK3dob3NlIG1lc3NhZ2UgY29udGFp
bnMgdGhlIGdpdmVuIF9zdWJzdHJpbmdfLCBvciB1c2UKKworfCBgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoYF9zdGF0ZW1lbnQsIHN1YnN0cmluZ19gKTtgIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisKK2lmIHlvdSBhcmUgZXhwZWN0
aW5nIGEgbm9uLWZhdGFsIChlLmcuIGBFWFBFQ1RfKmApIGZhaWx1cmUuCisKK0ZvciB0ZWNobmlj
YWwgcmVhc29ucywgdGhlcmUgYXJlIHNvbWUgY2F2ZWF0czoKKworICAxLiBZb3UgY2Fubm90IHN0
cmVhbSBhIGZhaWx1cmUgbWVzc2FnZSB0byBlaXRoZXIgbWFjcm8uCisgIDEuIF9zdGF0ZW1lbnRf
IGluIGBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpYCBjYW5ub3QgcmVmZXJlbmNlIGxvY2FsIG5vbi1z
dGF0aWMgdmFyaWFibGVzIG9yIG5vbi1zdGF0aWMgbWVtYmVycyBvZiBgdGhpc2Agb2JqZWN0Lgor
ICAxLiBfc3RhdGVtZW50XyBpbiBgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKWAgY2Fubm90IHJldHVy
biBhIHZhbHVlLgorCitfTm90ZTpfIEdvb2dsZSBUZXN0IGlzIGRlc2lnbmVkIHdpdGggdGhyZWFk
cyBpbiBtaW5kLiBPbmNlIHRoZQorc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgaW4gYCJndGVz
dC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiYCBoYXZlCitiZWVuIGltcGxlbWVudGVkLCBHb29nbGUg
VGVzdCB3aWxsIGJlY29tZSB0aHJlYWQtc2FmZSwgbWVhbmluZyB0aGF0Cit5b3UgY2FuIHRoZW4g
dXNlIGFzc2VydGlvbnMgaW4gbXVsdGlwbGUgdGhyZWFkcyBjb25jdXJyZW50bHkuIEJlZm9yZQor
dGhhdCwgaG93ZXZlciwgR29vZ2xlIFRlc3Qgb25seSBzdXBwb3J0cyBzaW5nbGUtdGhyZWFkZWQg
dXNhZ2UuIE9uY2UKK3RocmVhZC1zYWZlLCBgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKWAgYW5kIGBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpYAord2lsbCBjYXB0dXJlIGZhaWx1cmVzIGluIHRoZSBj
dXJyZW50IHRocmVhZCBvbmx5LiBJZiBfc3RhdGVtZW50XworY3JlYXRlcyBuZXcgdGhyZWFkcywg
ZmFpbHVyZXMgaW4gdGhlc2UgdGhyZWFkcyB3aWxsIGJlIGlnbm9yZWQuIElmCit5b3Ugd2FudCB0
byBjYXB0dXJlIGZhaWx1cmVzIGZyb20gYWxsIHRocmVhZHMgaW5zdGVhZCwgeW91IHNob3VsZCB1
c2UKK3RoZSBmb2xsb3dpbmcgbWFjcm9zOgorCit8IGBFWFBFQ1RfRkFUQUxfRkFJTFVSRV9PTl9B
TExfVEhSRUFEUyhgX3N0YXRlbWVudCwgc3Vic3RyaW5nX2ApO2AgfAorfDotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKK3wg
YEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTKGBfc3RhdGVtZW50LCBzdWJz
dHJpbmdfYCk7YCB8CisKKyMgR2V0dGluZyB0aGUgQ3VycmVudCBUZXN0J3MgTmFtZSAjCisKK1Nv
bWV0aW1lcyBhIGZ1bmN0aW9uIG1heSBuZWVkIHRvIGtub3cgdGhlIG5hbWUgb2YgdGhlIGN1cnJl
bnRseSBydW5uaW5nIHRlc3QuCitGb3IgZXhhbXBsZSwgeW91IG1heSBiZSB1c2luZyB0aGUgYFNl
dFVwKClgIG1ldGhvZCBvZiB5b3VyIHRlc3QgZml4dHVyZSB0byBzZXQKK3RoZSBnb2xkZW4gZmls
ZSBuYW1lIGJhc2VkIG9uIHdoaWNoIHRlc3QgaXMgcnVubmluZy4gVGhlIGA6OnRlc3Rpbmc6OlRl
c3RJbmZvYAorY2xhc3MgaGFzIHRoaXMgaW5mb3JtYXRpb246CisKK2BgYAorbmFtZXNwYWNlIHRl
c3RpbmcgeworCitjbGFzcyBUZXN0SW5mbyB7CisgcHVibGljOgorICAvLyBSZXR1cm5zIHRoZSB0
ZXN0IGNhc2UgbmFtZSBhbmQgdGhlIHRlc3QgbmFtZSwgcmVzcGVjdGl2ZWx5LgorICAvLworICAv
LyBEbyBOT1QgZGVsZXRlIG9yIGZyZWUgdGhlIHJldHVybiB2YWx1ZSAtIGl0J3MgbWFuYWdlZCBi
eSB0aGUKKyAgLy8gVGVzdEluZm8gY2xhc3MuCisgIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1l
KCkgY29uc3Q7CisgIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdDsKK307CisKK30gIC8vIG5hbWVz
cGFjZSB0ZXN0aW5nCitgYGAKKworCis+IFRvIG9idGFpbiBhIGBUZXN0SW5mb2Agb2JqZWN0IGZv
ciB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdGVzdCwgY2FsbAorYGN1cnJlbnRfdGVzdF9pbmZvKClg
IG9uIHRoZSBgVW5pdFRlc3RgIHNpbmdsZXRvbiBvYmplY3Q6CisKK2BgYAorLy8gR2V0cyBpbmZv
cm1hdGlvbiBhYm91dCB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdGVzdC4KKy8vIERvIE5PVCBkZWxl
dGUgdGhlIHJldHVybmVkIG9iamVjdCAtIGl0J3MgbWFuYWdlZCBieSB0aGUgVW5pdFRlc3QgY2xh
c3MuCitjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCB0ZXN0X2luZm8gPQorICA6OnRl
c3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rlc3RfaW5mbygpOworcHJp
bnRmKCJXZSBhcmUgaW4gdGVzdCAlcyBvZiB0ZXN0IGNhc2UgJXMuXG4iLAorICAgICAgIHRlc3Rf
aW5mby0+bmFtZSgpLCB0ZXN0X2luZm8tPnRlc3RfY2FzZV9uYW1lKCkpOworYGBgCisKK2BjdXJy
ZW50X3Rlc3RfaW5mbygpYCByZXR1cm5zIGEgbnVsbCBwb2ludGVyIGlmIG5vIHRlc3QgaXMgcnVu
bmluZy4gSW4KK3BhcnRpY3VsYXIsIHlvdSBjYW5ub3QgZmluZCB0aGUgdGVzdCBjYXNlIG5hbWUg
aW4gYFRlc3RDYXNlU2V0VXAoKWAsCitgVGVzdENhc2VUZWFyRG93bigpYCAod2hlcmUgeW91IGtu
b3cgdGhlIHRlc3QgY2FzZSBuYW1lIGltcGxpY2l0bHkpLCBvcgorZnVuY3Rpb25zIGNhbGxlZCBm
cm9tIHRoZW0uCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLgorCisjIEV4
dGVuZGluZyBHb29nbGUgVGVzdCBieSBIYW5kbGluZyBUZXN0IEV2ZW50cyAjCisKK0dvb2dsZSBU
ZXN0IHByb3ZpZGVzIGFuIDxiPmV2ZW50IGxpc3RlbmVyIEFQSTwvYj4gdG8gbGV0IHlvdSByZWNl
aXZlCitub3RpZmljYXRpb25zIGFib3V0IHRoZSBwcm9ncmVzcyBvZiBhIHRlc3QgcHJvZ3JhbSBh
bmQgdGVzdAorZmFpbHVyZXMuIFRoZSBldmVudHMgeW91IGNhbiBsaXN0ZW4gdG8gaW5jbHVkZSB0
aGUgc3RhcnQgYW5kIGVuZCBvZgordGhlIHRlc3QgcHJvZ3JhbSwgYSB0ZXN0IGNhc2UsIG9yIGEg
dGVzdCBtZXRob2QsIGFtb25nIG90aGVycy4gWW91IG1heQordXNlIHRoaXMgQVBJIHRvIGF1Z21l
bnQgb3IgcmVwbGFjZSB0aGUgc3RhbmRhcmQgY29uc29sZSBvdXRwdXQsCityZXBsYWNlIHRoZSBY
TUwgb3V0cHV0LCBvciBwcm92aWRlIGEgY29tcGxldGVseSBkaWZmZXJlbnQgZm9ybSBvZgorb3V0
cHV0LCBzdWNoIGFzIGEgR1VJIG9yIGEgZGF0YWJhc2UuIFlvdSBjYW4gYWxzbyB1c2UgdGVzdCBl
dmVudHMgYXMKK2NoZWNrcG9pbnRzIHRvIGltcGxlbWVudCBhIHJlc291cmNlIGxlYWsgY2hlY2tl
ciwgZm9yIGV4YW1wbGUuCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjOyBz
aW5jZSB2MS40LjAuCisKKyMjIERlZmluaW5nIEV2ZW50IExpc3RlbmVycyAjIworCitUbyBkZWZp
bmUgYSBldmVudCBsaXN0ZW5lciwgeW91IHN1YmNsYXNzIGVpdGhlcgorW3Rlc3Rpbmc6OlRlc3RF
dmVudExpc3RlbmVyXSguLi9pbmNsdWRlL2d0ZXN0L2d0ZXN0LmgjTDk5MSkKK29yIFt0ZXN0aW5n
OjpFbXB0eVRlc3RFdmVudExpc3RlbmVyXSguLi9pbmNsdWRlL2d0ZXN0L2d0ZXN0LmgjTDEwNDQp
LgorVGhlIGZvcm1lciBpcyBhbiAoYWJzdHJhY3QpIGludGVyZmFjZSwgd2hlcmUgPGk+ZWFjaCBw
dXJlIHZpcnR1YWwgbWV0aG9kPGJyPgorY2FuIGJlIG92ZXJyaWRkZW4gdG8gaGFuZGxlIGEgdGVz
dCBldmVudDwvaT4gKEZvciBleGFtcGxlLCB3aGVuIGEgdGVzdAorc3RhcnRzLCB0aGUgYE9uVGVz
dFN0YXJ0KClgIG1ldGhvZCB3aWxsIGJlIGNhbGxlZC4pLiBUaGUgbGF0dGVyIHByb3ZpZGVzCith
biBlbXB0eSBpbXBsZW1lbnRhdGlvbiBvZiBhbGwgbWV0aG9kcyBpbiB0aGUgaW50ZXJmYWNlLCBz
dWNoIHRoYXQgYQorc3ViY2xhc3Mgb25seSBuZWVkcyB0byBvdmVycmlkZSB0aGUgbWV0aG9kcyBp
dCBjYXJlcyBhYm91dC4KKworV2hlbiBhbiBldmVudCBpcyBmaXJlZCwgaXRzIGNvbnRleHQgaXMg
cGFzc2VkIHRvIHRoZSBoYW5kbGVyIGZ1bmN0aW9uCithcyBhbiBhcmd1bWVudC4gVGhlIGZvbGxv
d2luZyBhcmd1bWVudCB0eXBlcyBhcmUgdXNlZDoKKyAgKiBbVW5pdFRlc3RdKC4uL2luY2x1ZGUv
Z3Rlc3QvZ3Rlc3QuaCNMMTE1MSkgcmVmbGVjdHMgdGhlIHN0YXRlIG9mIHRoZSBlbnRpcmUgdGVz
dCBwcm9ncmFtLAorICAqIFtUZXN0Q2FzZV0oLi4vaW5jbHVkZS9ndGVzdC9ndGVzdC5oI0w3Nzgp
IGhhcyBpbmZvcm1hdGlvbiBhYm91dCBhIHRlc3QgY2FzZSwgd2hpY2ggY2FuIGNvbnRhaW4gb25l
IG9yIG1vcmUgdGVzdHMsCisgICogW1Rlc3RJbmZvXSguLi9pbmNsdWRlL2d0ZXN0L2d0ZXN0Lmgj
TDY0NCkgY29udGFpbnMgdGhlIHN0YXRlIG9mIGEgdGVzdCwgYW5kCisgICogW1Rlc3RQYXJ0UmVz
dWx0XSguLi9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXRlc3QtcGFydC5oI0w0NykgcmVwcmVzZW50cyB0
aGUgcmVzdWx0IG9mIGEgdGVzdCBhc3NlcnRpb24uCisKK0FuIGV2ZW50IGhhbmRsZXIgZnVuY3Rp
b24gY2FuIGV4YW1pbmUgdGhlIGFyZ3VtZW50IGl0IHJlY2VpdmVzIHRvIGZpbmQKK291dCBpbnRl
cmVzdGluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZXZlbnQgYW5kIHRoZSB0ZXN0IHByb2dyYW0n
cworc3RhdGUuICBIZXJlJ3MgYW4gZXhhbXBsZToKKworYGBgCisgIGNsYXNzIE1pbmltYWxpc3RQ
cmludGVyIDogcHVibGljIDo6dGVzdGluZzo6RW1wdHlUZXN0RXZlbnRMaXN0ZW5lciB7CisgICAg
Ly8gQ2FsbGVkIGJlZm9yZSBhIHRlc3Qgc3RhcnRzLgorICAgIHZpcnR1YWwgdm9pZCBPblRlc3RT
dGFydChjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvJiB0ZXN0X2luZm8pIHsKKyAgICAgIHByaW50
ZigiKioqIFRlc3QgJXMuJXMgc3RhcnRpbmcuXG4iLAorICAgICAgICAgICAgIHRlc3RfaW5mby50
ZXN0X2Nhc2VfbmFtZSgpLCB0ZXN0X2luZm8ubmFtZSgpKTsKKyAgICB9CisKKyAgICAvLyBDYWxs
ZWQgYWZ0ZXIgYSBmYWlsZWQgYXNzZXJ0aW9uIG9yIGEgU1VDQ0VFRCgpIGludm9jYXRpb24uCisg
ICAgdmlydHVhbCB2b2lkIE9uVGVzdFBhcnRSZXN1bHQoCisgICAgICAgIGNvbnN0IDo6dGVzdGlu
Zzo6VGVzdFBhcnRSZXN1bHQmIHRlc3RfcGFydF9yZXN1bHQpIHsKKyAgICAgIHByaW50ZigiJXMg
aW4gJXM6JWRcbiVzXG4iLAorICAgICAgICAgICAgIHRlc3RfcGFydF9yZXN1bHQuZmFpbGVkKCkg
PyAiKioqIEZhaWx1cmUiIDogIlN1Y2Nlc3MiLAorICAgICAgICAgICAgIHRlc3RfcGFydF9yZXN1
bHQuZmlsZV9uYW1lKCksCisgICAgICAgICAgICAgdGVzdF9wYXJ0X3Jlc3VsdC5saW5lX251bWJl
cigpLAorICAgICAgICAgICAgIHRlc3RfcGFydF9yZXN1bHQuc3VtbWFyeSgpKTsKKyAgICB9CisK
KyAgICAvLyBDYWxsZWQgYWZ0ZXIgYSB0ZXN0IGVuZHMuCisgICAgdmlydHVhbCB2b2lkIE9uVGVz
dEVuZChjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvJiB0ZXN0X2luZm8pIHsKKyAgICAgIHByaW50
ZigiKioqIFRlc3QgJXMuJXMgZW5kaW5nLlxuIiwKKyAgICAgICAgICAgICB0ZXN0X2luZm8udGVz
dF9jYXNlX25hbWUoKSwgdGVzdF9pbmZvLm5hbWUoKSk7CisgICAgfQorICB9OworYGBgCisKKyMj
IFVzaW5nIEV2ZW50IExpc3RlbmVycyAjIworCitUbyB1c2UgdGhlIGV2ZW50IGxpc3RlbmVyIHlv
dSBoYXZlIGRlZmluZWQsIGFkZCBhbiBpbnN0YW5jZSBvZiBpdCB0bwordGhlIEdvb2dsZSBUZXN0
IGV2ZW50IGxpc3RlbmVyIGxpc3QgKHJlcHJlc2VudGVkIGJ5IGNsYXNzCitbVGVzdEV2ZW50TGlz
dGVuZXJzXSguLi9pbmNsdWRlL2d0ZXN0L2d0ZXN0LmgjTDEwNjQpCistIG5vdGUgdGhlICJzIiBh
dCB0aGUgZW5kIG9mIHRoZSBuYW1lKSBpbiB5b3VyCitgbWFpbigpYCBmdW5jdGlvbiwgYmVmb3Jl
IGNhbGxpbmcgYFJVTl9BTExfVEVTVFMoKWA6CitgYGAKK2ludCBtYWluKGludCBhcmdjLCBjaGFy
KiogYXJndikgeworICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKyAg
Ly8gR2V0cyBob2xkIG9mIHRoZSBldmVudCBsaXN0ZW5lciBsaXN0LgorICA6OnRlc3Rpbmc6OlRl
c3RFdmVudExpc3RlbmVycyYgbGlzdGVuZXJzID0KKyAgICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6
OkdldEluc3RhbmNlKCktPmxpc3RlbmVycygpOworICAvLyBBZGRzIGEgbGlzdGVuZXIgdG8gdGhl
IGVuZC4gIEdvb2dsZSBUZXN0IHRha2VzIHRoZSBvd25lcnNoaXAuCisgIGxpc3RlbmVycy5BcHBl
bmQobmV3IE1pbmltYWxpc3RQcmludGVyKTsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30K
K2BgYAorCitUaGVyZSdzIG9ubHkgb25lIHByb2JsZW06IHRoZSBkZWZhdWx0IHRlc3QgcmVzdWx0
IHByaW50ZXIgaXMgc3RpbGwgaW4KK2VmZmVjdCwgc28gaXRzIG91dHB1dCB3aWxsIG1pbmdsZSB3
aXRoIHRoZSBvdXRwdXQgZnJvbSB5b3VyIG1pbmltYWxpc3QKK3ByaW50ZXIuIFRvIHN1cHByZXNz
IHRoZSBkZWZhdWx0IHByaW50ZXIsIGp1c3QgcmVsZWFzZSBpdCBmcm9tIHRoZQorZXZlbnQgbGlz
dGVuZXIgbGlzdCBhbmQgZGVsZXRlIGl0LiBZb3UgY2FuIGRvIHNvIGJ5IGFkZGluZyBvbmUgbGlu
ZToKK2BgYAorICAuLi4KKyAgZGVsZXRlIGxpc3RlbmVycy5SZWxlYXNlKGxpc3RlbmVycy5kZWZh
dWx0X3Jlc3VsdF9wcmludGVyKCkpOworICBsaXN0ZW5lcnMuQXBwZW5kKG5ldyBNaW5pbWFsaXN0
UHJpbnRlcik7CisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7CitgYGAKKworTm93LCBzaXQgYmFj
ayBhbmQgZW5qb3kgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBvdXRwdXQgZnJvbSB5b3VyCit0ZXN0
cy4gRm9yIG1vcmUgZGV0YWlscywgeW91IGNhbiByZWFkIHRoaXMKK1tzYW1wbGVdKC4uL3NhbXBs
ZXMvc2FtcGxlOV91bml0dGVzdC5jYykuCisKK1lvdSBtYXkgYXBwZW5kIG1vcmUgdGhhbiBvbmUg
bGlzdGVuZXIgdG8gdGhlIGxpc3QuIFdoZW4gYW4gYE9uKlN0YXJ0KClgCitvciBgT25UZXN0UGFy
dFJlc3VsdCgpYCBldmVudCBpcyBmaXJlZCwgdGhlIGxpc3RlbmVycyB3aWxsIHJlY2VpdmUgaXQg
aW4KK3RoZSBvcmRlciB0aGV5IGFwcGVhciBpbiB0aGUgbGlzdCAoc2luY2UgbmV3IGxpc3RlbmVy
cyBhcmUgYWRkZWQgdG8KK3RoZSBlbmQgb2YgdGhlIGxpc3QsIHRoZSBkZWZhdWx0IHRleHQgcHJp
bnRlciBhbmQgdGhlIGRlZmF1bHQgWE1MCitnZW5lcmF0b3Igd2lsbCByZWNlaXZlIHRoZSBldmVu
dCBmaXJzdCkuIEFuIGBPbipFbmQoKWAgZXZlbnQgd2lsbCBiZQorcmVjZWl2ZWQgYnkgdGhlIGxp
c3RlbmVycyBpbiB0aGUgX3JldmVyc2VfIG9yZGVyLiBUaGlzIGFsbG93cyBvdXRwdXQgYnkKK2xp
c3RlbmVycyBhZGRlZCBsYXRlciB0byBiZSBmcmFtZWQgYnkgb3V0cHV0IGZyb20gbGlzdGVuZXJz
IGFkZGVkCitlYXJsaWVyLgorCisjIyBHZW5lcmF0aW5nIEZhaWx1cmVzIGluIExpc3RlbmVycyAj
IworCitZb3UgbWF5IHVzZSBmYWlsdXJlLXJhaXNpbmcgbWFjcm9zIChgRVhQRUNUXyooKWAsIGBB
U1NFUlRfKigpYCwKK2BGQUlMKClgLCBldGMpIHdoZW4gcHJvY2Vzc2luZyBhbiBldmVudC4gVGhl
cmUgYXJlIHNvbWUgcmVzdHJpY3Rpb25zOgorCisgIDEuIFlvdSBjYW5ub3QgZ2VuZXJhdGUgYW55
IGZhaWx1cmUgaW4gYE9uVGVzdFBhcnRSZXN1bHQoKWAgKG90aGVyd2lzZSBpdCB3aWxsIGNhdXNl
IGBPblRlc3RQYXJ0UmVzdWx0KClgIHRvIGJlIGNhbGxlZCByZWN1cnNpdmVseSkuCisgIDEuIEEg
bGlzdGVuZXIgdGhhdCBoYW5kbGVzIGBPblRlc3RQYXJ0UmVzdWx0KClgIGlzIG5vdCBhbGxvd2Vk
IHRvIGdlbmVyYXRlIGFueSBmYWlsdXJlLgorCitXaGVuIHlvdSBhZGQgbGlzdGVuZXJzIHRvIHRo
ZSBsaXN0ZW5lciBsaXN0LCB5b3Ugc2hvdWxkIHB1dCBsaXN0ZW5lcnMKK3RoYXQgaGFuZGxlIGBP
blRlc3RQYXJ0UmVzdWx0KClgIF9iZWZvcmVfIGxpc3RlbmVycyB0aGF0IGNhbiBnZW5lcmF0ZQor
ZmFpbHVyZXMuIFRoaXMgZW5zdXJlcyB0aGF0IGZhaWx1cmVzIGdlbmVyYXRlZCBieSB0aGUgbGF0
dGVyIGFyZQorYXR0cmlidXRlZCB0byB0aGUgcmlnaHQgdGVzdCBieSB0aGUgZm9ybWVyLgorCitX
ZSBoYXZlIGEgc2FtcGxlIG9mIGZhaWx1cmUtcmFpc2luZyBsaXN0ZW5lcgorW2hlcmVdKC4uL3Nh
bXBsZXMvc2FtcGxlMTBfdW5pdHRlc3QuY2MpLgorCisjIFJ1bm5pbmcgVGVzdCBQcm9ncmFtczog
QWR2YW5jZWQgT3B0aW9ucyAjCisKK0dvb2dsZSBUZXN0IHRlc3QgcHJvZ3JhbXMgYXJlIG9yZGlu
YXJ5IGV4ZWN1dGFibGVzLiBPbmNlIGJ1aWx0LCB5b3UgY2FuIHJ1bgordGhlbSBkaXJlY3RseSBh
bmQgYWZmZWN0IHRoZWlyIGJlaGF2aW9yIHZpYSB0aGUgZm9sbG93aW5nIGVudmlyb25tZW50IHZh
cmlhYmxlcworYW5kL29yIGNvbW1hbmQgbGluZSBmbGFncy4gRm9yIHRoZSBmbGFncyB0byB3b3Jr
LCB5b3VyIHByb2dyYW1zIG11c3QgY2FsbAorYDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoKWAg
YmVmb3JlIGNhbGxpbmcgYFJVTl9BTExfVEVTVFMoKWAuCisKK1RvIHNlZSBhIGxpc3Qgb2Ygc3Vw
cG9ydGVkIGZsYWdzIGFuZCB0aGVpciB1c2FnZSwgcGxlYXNlIHJ1biB5b3VyIHRlc3QKK3Byb2dy
YW0gd2l0aCB0aGUgYC0taGVscGAgZmxhZy4gIFlvdSBjYW4gYWxzbyB1c2UgYC1oYCwgYC0/YCwg
b3IgYC8/YAorZm9yIHNob3J0LiAgVGhpcyBmZWF0dXJlIGlzIGFkZGVkIGluIHZlcnNpb24gMS4z
LjAuCisKK0lmIGFuIG9wdGlvbiBpcyBzcGVjaWZpZWQgYm90aCBieSBhbiBlbnZpcm9ubWVudCB2
YXJpYWJsZSBhbmQgYnkgYQorZmxhZywgdGhlIGxhdHRlciB0YWtlcyBwcmVjZWRlbmNlLiAgTW9z
dCBvZiB0aGUgb3B0aW9ucyBjYW4gYWxzbyBiZQorc2V0L3JlYWQgaW4gY29kZTogdG8gYWNjZXNz
IHRoZSB2YWx1ZSBvZiBjb21tYW5kIGxpbmUgZmxhZworYC0tZ3Rlc3RfZm9vYCwgd3JpdGUgYDo6
dGVzdGluZzo6R1RFU1RfRkxBRyhmb28pYC4gIEEgY29tbW9uIHBhdHRlcm4gaXMKK3RvIHNldCB0
aGUgdmFsdWUgb2YgYSBmbGFnIGJlZm9yZSBjYWxsaW5nIGA6OnRlc3Rpbmc6OkluaXRHb29nbGVU
ZXN0KClgCit0byBjaGFuZ2UgdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlIGZsYWc6CitgYGAKK2lu
dCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgeworICAvLyBEaXNhYmxlcyBlbGFwc2VkIHRp
bWUgYnkgZGVmYXVsdC4KKyAgOjp0ZXN0aW5nOjpHVEVTVF9GTEFHKHByaW50X3RpbWUpID0gZmFs
c2U7CisKKyAgLy8gVGhpcyBhbGxvd3MgdGhlIHVzZXIgdG8gb3ZlcnJpZGUgdGhlIGZsYWcgb24g
dGhlIGNvbW1hbmQgbGluZS4KKyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJn
dik7CisKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KK2BgYAorCisjIyBTZWxlY3Rpbmcg
VGVzdHMgIyMKKworVGhpcyBzZWN0aW9uIHNob3dzIHZhcmlvdXMgb3B0aW9ucyBmb3IgY2hvb3Np
bmcgd2hpY2ggdGVzdHMgdG8gcnVuLgorCisjIyMgTGlzdGluZyBUZXN0IE5hbWVzICMjIworCitT
b21ldGltZXMgaXQgaXMgbmVjZXNzYXJ5IHRvIGxpc3QgdGhlIGF2YWlsYWJsZSB0ZXN0cyBpbiBh
IHByb2dyYW0gYmVmb3JlCitydW5uaW5nIHRoZW0gc28gdGhhdCBhIGZpbHRlciBtYXkgYmUgYXBw
bGllZCBpZiBuZWVkZWQuIEluY2x1ZGluZyB0aGUgZmxhZworYC0tZ3Rlc3RfbGlzdF90ZXN0c2Ag
b3ZlcnJpZGVzIGFsbCBvdGhlciBmbGFncyBhbmQgbGlzdHMgdGVzdHMgaW4gdGhlIGZvbGxvd2lu
ZworZm9ybWF0OgorYGBgCitUZXN0Q2FzZTEuCisgIFRlc3ROYW1lMQorICBUZXN0TmFtZTIKK1Rl
c3RDYXNlMi4KKyAgVGVzdE5hbWUKK2BgYAorCitOb25lIG9mIHRoZSB0ZXN0cyBsaXN0ZWQgYXJl
IGFjdHVhbGx5IHJ1biBpZiB0aGUgZmxhZyBpcyBwcm92aWRlZC4gVGhlcmUgaXMgbm8KK2NvcnJl
c3BvbmRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGUgZm9yIHRoaXMgZmxhZy4KKworX0F2YWlsYWJp
bGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBSdW5uaW5nIGEgU3Vic2V0IG9mIHRo
ZSBUZXN0cyAjIyMKKworQnkgZGVmYXVsdCwgYSBHb29nbGUgVGVzdCBwcm9ncmFtIHJ1bnMgYWxs
IHRlc3RzIHRoZSB1c2VyIGhhcyBkZWZpbmVkLgorU29tZXRpbWVzLCB5b3Ugd2FudCB0byBydW4g
b25seSBhIHN1YnNldCBvZiB0aGUgdGVzdHMgKGUuZy4gZm9yIGRlYnVnZ2luZyBvcgorcXVpY2ts
eSB2ZXJpZnlpbmcgYSBjaGFuZ2UpLiBJZiB5b3Ugc2V0IHRoZSBgR1RFU1RfRklMVEVSYCBlbnZp
cm9ubWVudCB2YXJpYWJsZQorb3IgdGhlIGAtLWd0ZXN0X2ZpbHRlcmAgZmxhZyB0byBhIGZpbHRl
ciBzdHJpbmcsIEdvb2dsZSBUZXN0IHdpbGwgb25seSBydW4gdGhlCit0ZXN0cyB3aG9zZSBmdWxs
IG5hbWVzIChpbiB0aGUgZm9ybSBvZiBgVGVzdENhc2VOYW1lLlRlc3ROYW1lYCkgbWF0Y2ggdGhl
CitmaWx0ZXIuCisKK1RoZSBmb3JtYXQgb2YgYSBmaWx0ZXIgaXMgYSAnYDpgJy1zZXBhcmF0ZWQg
bGlzdCBvZiB3aWxkY2FyZCBwYXR0ZXJucyAoY2FsbGVkCit0aGUgcG9zaXRpdmUgcGF0dGVybnMp
IG9wdGlvbmFsbHkgZm9sbG93ZWQgYnkgYSAnYC1gJyBhbmQgYW5vdGhlcgorJ2A6YCctc2VwYXJh
dGVkIHBhdHRlcm4gbGlzdCAoY2FsbGVkIHRoZSBuZWdhdGl2ZSBwYXR0ZXJucykuIEEgdGVzdCBt
YXRjaGVzIHRoZQorZmlsdGVyIGlmIGFuZCBvbmx5IGlmIGl0IG1hdGNoZXMgYW55IG9mIHRoZSBw
b3NpdGl2ZSBwYXR0ZXJucyBidXQgZG9lcyBub3QKK21hdGNoIGFueSBvZiB0aGUgbmVnYXRpdmUg
cGF0dGVybnMuCisKK0EgcGF0dGVybiBtYXkgY29udGFpbiBgJyonYCAobWF0Y2hlcyBhbnkgc3Ry
aW5nKSBvciBgJz8nYCAobWF0Y2hlcyBhbnkgc2luZ2xlCitjaGFyYWN0ZXIpLiBGb3IgY29udmVu
aWVuY2UsIHRoZSBmaWx0ZXIgYCcqLU5lZ2F0aXZlUGF0dGVybnMnYCBjYW4gYmUgYWxzbword3Jp
dHRlbiBhcyBgJy1OZWdhdGl2ZVBhdHRlcm5zJ2AuCisKK0ZvciBleGFtcGxlOgorCisgICogYC4v
Zm9vX3Rlc3RgIEhhcyBubyBmbGFnLCBhbmQgdGh1cyBydW5zIGFsbCBpdHMgdGVzdHMuCisgICog
YC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9KmAgQWxzbyBydW5zIGV2ZXJ5dGhpbmcsIGR1ZSB0
byB0aGUgc2luZ2xlIG1hdGNoLWV2ZXJ5dGhpbmcgYCpgIHZhbHVlLgorICAqIGAuL2Zvb190ZXN0
IC0tZ3Rlc3RfZmlsdGVyPUZvb1Rlc3QuKmAgUnVucyBldmVyeXRoaW5nIGluIHRlc3QgY2FzZSBg
Rm9vVGVzdGAuCisgICogYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9Kk51bGwqOipDb25zdHJ1
Y3RvcipgIFJ1bnMgYW55IHRlc3Qgd2hvc2UgZnVsbCBuYW1lIGNvbnRhaW5zIGVpdGhlciBgIk51
bGwiYCBvciBgIkNvbnN0cnVjdG9yImAuCisgICogYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9
LSpEZWF0aFRlc3QuKmAgUnVucyBhbGwgbm9uLWRlYXRoIHRlc3RzLgorICAqIGAuL2Zvb190ZXN0
IC0tZ3Rlc3RfZmlsdGVyPUZvb1Rlc3QuKi1Gb29UZXN0LkJhcmAgUnVucyBldmVyeXRoaW5nIGlu
IHRlc3QgY2FzZSBgRm9vVGVzdGAgZXhjZXB0IGBGb29UZXN0LkJhcmAuCisKK19BdmFpbGFiaWxp
dHk6XyBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMgVGVtcG9yYXJpbHkgRGlzYWJsaW5nIFRl
c3RzICMjIworCitJZiB5b3UgaGF2ZSBhIGJyb2tlbiB0ZXN0IHRoYXQgeW91IGNhbm5vdCBmaXgg
cmlnaHQgYXdheSwgeW91IGNhbiBhZGQgdGhlCitgRElTQUJMRURfYCBwcmVmaXggdG8gaXRzIG5h
bWUuIFRoaXMgd2lsbCBleGNsdWRlIGl0IGZyb20gZXhlY3V0aW9uLiBUaGlzIGlzCitiZXR0ZXIg
dGhhbiBjb21tZW50aW5nIG91dCB0aGUgY29kZSBvciB1c2luZyBgI2lmIDBgLCBhcyBkaXNhYmxl
ZCB0ZXN0cyBhcmUKK3N0aWxsIGNvbXBpbGVkIChhbmQgdGh1cyB3b24ndCByb3QpLgorCitJZiB5
b3UgbmVlZCB0byBkaXNhYmxlIGFsbCB0ZXN0cyBpbiBhIHRlc3QgY2FzZSwgeW91IGNhbiBlaXRo
ZXIgYWRkIGBESVNBQkxFRF9gCit0byB0aGUgZnJvbnQgb2YgdGhlIG5hbWUgb2YgZWFjaCB0ZXN0
LCBvciBhbHRlcm5hdGl2ZWx5IGFkZCBpdCB0byB0aGUgZnJvbnQgb2YKK3RoZSB0ZXN0IGNhc2Ug
bmFtZS4KKworRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgdGVzdHMgd29uJ3QgYmUgcnVuIGJ5
IEdvb2dsZSBUZXN0LCBldmVuIHRob3VnaCB0aGV5Cit3aWxsIHN0aWxsIGJlIGNvbXBpbGVkOgor
CitgYGAKKy8vIFRlc3RzIHRoYXQgRm9vIGRvZXMgQWJjLgorVEVTVChGb29UZXN0LCBESVNBQkxF
RF9Eb2VzQWJjKSB7IC4uLiB9CisKK2NsYXNzIERJU0FCTEVEX0JhclRlc3QgOiBwdWJsaWMgOjp0
ZXN0aW5nOjpUZXN0IHsgLi4uIH07CisKKy8vIFRlc3RzIHRoYXQgQmFyIGRvZXMgWHl6LgorVEVT
VF9GKERJU0FCTEVEX0JhclRlc3QsIERvZXNYeXopIHsgLi4uIH0KK2BgYAorCitfTm90ZTpfIFRo
aXMgZmVhdHVyZSBzaG91bGQgb25seSBiZSB1c2VkIGZvciB0ZW1wb3JhcnkgcGFpbi1yZWxpZWYu
IFlvdSBzdGlsbAoraGF2ZSB0byBmaXggdGhlIGRpc2FibGVkIHRlc3RzIGF0IGEgbGF0ZXIgZGF0
ZS4gQXMgYSByZW1pbmRlciwgR29vZ2xlIFRlc3Qgd2lsbAorcHJpbnQgYSBiYW5uZXIgd2Fybmlu
ZyB5b3UgaWYgYSB0ZXN0IHByb2dyYW0gY29udGFpbnMgYW55IGRpc2FibGVkIHRlc3RzLgorCitf
VGlwOl8gWW91IGNhbiBlYXNpbHkgY291bnQgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0cyB5
b3UgaGF2ZQordXNpbmcgYGdyZXBgLiBUaGlzIG51bWJlciBjYW4gYmUgdXNlZCBhcyBhIG1ldHJp
YyBmb3IgaW1wcm92aW5nIHlvdXIKK3Rlc3QgcXVhbGl0eS4KKworX0F2YWlsYWJpbGl0eTpfIExp
bnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBUZW1wb3JhcmlseSBFbmFibGluZyBEaXNhYmxlZCBU
ZXN0cyAjIyMKKworVG8gaW5jbHVkZSBbZGlzYWJsZWQgdGVzdHNdKCN0ZW1wb3JhcmlseS1kaXNh
YmxpbmctdGVzdHMpIGluIHRlc3QKK2V4ZWN1dGlvbiwganVzdCBpbnZva2UgdGhlIHRlc3QgcHJv
Z3JhbSB3aXRoIHRoZQorYC0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHNgIGZsYWcgb3Ig
c2V0IHRoZQorYEdURVNUX0FMU09fUlVOX0RJU0FCTEVEX1RFU1RTYCBlbnZpcm9ubWVudCB2YXJp
YWJsZSB0byBhIHZhbHVlIG90aGVyCit0aGFuIGAwYC4gIFlvdSBjYW4gY29tYmluZSB0aGlzIHdp
dGggdGhlCitbLS1ndGVzdFxfZmlsdGVyXSgjcnVubmluZy1hLXN1YnNldC1vZi10aGUtdGVzdHMp
IGZsYWcgdG8gZnVydGhlciBzZWxlY3QKK3doaWNoIGRpc2FibGVkIHRlc3RzIHRvIHJ1bi4KKwor
X0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHZlcnNpb24gMS4zLjAu
CisKKyMjIFJlcGVhdGluZyB0aGUgVGVzdHMgIyMKKworT25jZSBpbiBhIHdoaWxlIHlvdSdsbCBy
dW4gaW50byBhIHRlc3Qgd2hvc2UgcmVzdWx0IGlzIGhpdC1vci1taXNzLiBQZXJoYXBzIGl0Cit3
aWxsIGZhaWwgb25seSAxJSBvZiB0aGUgdGltZSwgbWFraW5nIGl0IHJhdGhlciBoYXJkIHRvIHJl
cHJvZHVjZSB0aGUgYnVnIHVuZGVyCithIGRlYnVnZ2VyLiBUaGlzIGNhbiBiZSBhIG1ham9yIHNv
dXJjZSBvZiBmcnVzdHJhdGlvbi4KKworVGhlIGAtLWd0ZXN0X3JlcGVhdGAgZmxhZyBhbGxvd3Mg
eW91IHRvIHJlcGVhdCBhbGwgKG9yIHNlbGVjdGVkKSB0ZXN0IG1ldGhvZHMKK2luIGEgcHJvZ3Jh
bSBtYW55IHRpbWVzLiBIb3BlZnVsbHksIGEgZmxha3kgdGVzdCB3aWxsIGV2ZW50dWFsbHkgZmFp
bCBhbmQgZ2l2ZQoreW91IGEgY2hhbmNlIHRvIGRlYnVnLiBIZXJlJ3MgaG93IHRvIHVzZSBpdDoK
KworfCBgJCBmb29fdGVzdCAtLWd0ZXN0X3JlcGVhdD0xMDAwYCB8IFJlcGVhdCBmb29cX3Rlc3Qg
MTAwMCB0aW1lcyBhbmQgZG9uJ3Qgc3RvcCBhdCBmYWlsdXJlcy4gfAorfDotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorfCBgJCBmb29fdGVzdCAtLWd0ZXN0X3JlcGVhdD0tMWAg
ICB8IEEgbmVnYXRpdmUgY291bnQgbWVhbnMgcmVwZWF0aW5nIGZvcmV2ZXIuICAgICAgICAgICAg
ICAgfAorfCBgJCBmb29fdGVzdCAtLWd0ZXN0X3JlcGVhdD0xMDAwIC0tZ3Rlc3RfYnJlYWtfb25f
ZmFpbHVyZWAgfCBSZXBlYXQgZm9vXF90ZXN0IDEwMDAgdGltZXMsIHN0b3BwaW5nIGF0IHRoZSBm
aXJzdCBmYWlsdXJlLiBUaGlzIGlzIGVzcGVjaWFsbHkgdXNlZnVsIHdoZW4gcnVubmluZyB1bmRl
ciBhIGRlYnVnZ2VyOiB3aGVuIHRoZSB0ZXN0ZmFpbHMsIGl0IHdpbGwgZHJvcCBpbnRvIHRoZSBk
ZWJ1Z2dlciBhbmQgeW91IGNhbiB0aGVuIGluc3BlY3QgdmFyaWFibGVzIGFuZCBzdGFja3MuIHwK
K3wgYCQgZm9vX3Rlc3QgLS1ndGVzdF9yZXBlYXQ9MTAwMCAtLWd0ZXN0X2ZpbHRlcj1Gb29CYXJg
IHwgUmVwZWF0IHRoZSB0ZXN0cyB3aG9zZSBuYW1lIG1hdGNoZXMgdGhlIGZpbHRlciAxMDAwIHRp
bWVzLiB8CisKK0lmIHlvdXIgdGVzdCBwcm9ncmFtIGNvbnRhaW5zIGdsb2JhbCBzZXQtdXAvdGVh
ci1kb3duIGNvZGUgcmVnaXN0ZXJlZAordXNpbmcgYEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudCgp
YCwgaXQgd2lsbCBiZSByZXBlYXRlZCBpbiBlYWNoCitpdGVyYXRpb24gYXMgd2VsbCwgYXMgdGhl
IGZsYWtpbmVzcyBtYXkgYmUgaW4gaXQuIFlvdSBjYW4gYWxzbyBzcGVjaWZ5Cit0aGUgcmVwZWF0
IGNvdW50IGJ5IHNldHRpbmcgdGhlIGBHVEVTVF9SRVBFQVRgIGVudmlyb25tZW50IHZhcmlhYmxl
LgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMgU2h1ZmZsaW5n
IHRoZSBUZXN0cyAjIworCitZb3UgY2FuIHNwZWNpZnkgdGhlIGAtLWd0ZXN0X3NodWZmbGVgIGZs
YWcgKG9yIHNldCB0aGUgYEdURVNUX1NIVUZGTEVgCitlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBg
MWApIHRvIHJ1biB0aGUgdGVzdHMgaW4gYSBwcm9ncmFtIGluIGEgcmFuZG9tCitvcmRlci4gVGhp
cyBoZWxwcyB0byByZXZlYWwgYmFkIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRlc3RzLgorCitCeSBk
ZWZhdWx0LCBHb29nbGUgVGVzdCB1c2VzIGEgcmFuZG9tIHNlZWQgY2FsY3VsYXRlZCBmcm9tIHRo
ZSBjdXJyZW50Cit0aW1lLiBUaGVyZWZvcmUgeW91J2xsIGdldCBhIGRpZmZlcmVudCBvcmRlciBl
dmVyeSB0aW1lLiBUaGUgY29uc29sZQorb3V0cHV0IGluY2x1ZGVzIHRoZSByYW5kb20gc2VlZCB2
YWx1ZSwgc3VjaCB0aGF0IHlvdSBjYW4gcmVwcm9kdWNlIGFuCitvcmRlci1yZWxhdGVkIHRlc3Qg
ZmFpbHVyZSBsYXRlci4gVG8gc3BlY2lmeSB0aGUgcmFuZG9tIHNlZWQKK2V4cGxpY2l0bHksIHVz
ZSB0aGUgYC0tZ3Rlc3RfcmFuZG9tX3NlZWQ9U0VFRGAgZmxhZyAob3Igc2V0IHRoZQorYEdURVNU
X1JBTkRPTV9TRUVEYCBlbnZpcm9ubWVudCB2YXJpYWJsZSksIHdoZXJlIGBTRUVEYCBpcyBhbiBp
bnRlZ2VyCitiZXR3ZWVuIDAgYW5kIDk5OTk5LiBUaGUgc2VlZCB2YWx1ZSAwIGlzIHNwZWNpYWw6
IGl0IHRlbGxzIEdvb2dsZSBUZXN0Cit0byBkbyB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiBjYWxj
dWxhdGluZyB0aGUgc2VlZCBmcm9tIHRoZSBjdXJyZW50Cit0aW1lLgorCitJZiB5b3UgY29tYmlu
ZSB0aGlzIHdpdGggYC0tZ3Rlc3RfcmVwZWF0PU5gLCBHb29nbGUgVGVzdCB3aWxsIHBpY2sgYQor
ZGlmZmVyZW50IHJhbmRvbSBzZWVkIGFuZCByZS1zaHVmZmxlIHRoZSB0ZXN0cyBpbiBlYWNoIGl0
ZXJhdGlvbi4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHYx
LjQuMC4KKworIyMgQ29udHJvbGxpbmcgVGVzdCBPdXRwdXQgIyMKKworVGhpcyBzZWN0aW9uIHRl
YWNoZXMgaG93IHRvIHR3ZWFrIHRoZSB3YXkgdGVzdCByZXN1bHRzIGFyZSByZXBvcnRlZC4KKwor
IyMjIENvbG9yZWQgVGVybWluYWwgT3V0cHV0ICMjIworCitHb29nbGUgVGVzdCBjYW4gdXNlIGNv
bG9ycyBpbiBpdHMgdGVybWluYWwgb3V0cHV0IHRvIG1ha2UgaXQgZWFzaWVyIHRvIHNwb3QKK3Ro
ZSBzZXBhcmF0aW9uIGJldHdlZW4gdGVzdHMsIGFuZCB3aGV0aGVyIHRlc3RzIHBhc3NlZC4KKwor
WW91IGNhbiBzZXQgdGhlIEdURVNUXF9DT0xPUiBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciBzZXQg
dGhlIGAtLWd0ZXN0X2NvbG9yYAorY29tbWFuZCBsaW5lIGZsYWcgdG8gYHllc2AsIGBub2AsIG9y
IGBhdXRvYCAodGhlIGRlZmF1bHQpIHRvIGVuYWJsZSBjb2xvcnMsCitkaXNhYmxlIGNvbG9ycywg
b3IgbGV0IEdvb2dsZSBUZXN0IGRlY2lkZS4gV2hlbiB0aGUgdmFsdWUgaXMgYGF1dG9gLCBHb29n
bGUKK1Rlc3Qgd2lsbCB1c2UgY29sb3JzIGlmIGFuZCBvbmx5IGlmIHRoZSBvdXRwdXQgZ29lcyB0
byBhIHRlcm1pbmFsIGFuZCAob24KK25vbi1XaW5kb3dzIHBsYXRmb3JtcykgdGhlIGBURVJNYCBl
bnZpcm9ubWVudCB2YXJpYWJsZSBpcyBzZXQgdG8gYHh0ZXJtYCBvcgorYHh0ZXJtLWNvbG9yYC4K
KworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBTdXBwcmVzc2lu
ZyB0aGUgRWxhcHNlZCBUaW1lICMjIworCitCeSBkZWZhdWx0LCBHb29nbGUgVGVzdCBwcmludHMg
dGhlIHRpbWUgaXQgdGFrZXMgdG8gcnVuIGVhY2ggdGVzdC4gIFRvCitzdXBwcmVzcyB0aGF0LCBy
dW4gdGhlIHRlc3QgcHJvZ3JhbSB3aXRoIHRoZSBgLS1ndGVzdF9wcmludF90aW1lPTBgCitjb21t
YW5kIGxpbmUgZmxhZy4gIFNldHRpbmcgdGhlIGBHVEVTVF9QUklOVF9USU1FYCBlbnZpcm9ubWVu
dAordmFyaWFibGUgdG8gYDBgIGhhcyB0aGUgc2FtZSBlZmZlY3QuCisKK19BdmFpbGFiaWxpdHk6
XyBMaW51eCwgV2luZG93cywgTWFjLiAgKEluIEdvb2dsZSBUZXN0IDEuMy4wIGFuZCBsb3dlciwK
K3RoZSBkZWZhdWx0IGJlaGF2aW9yIGlzIHRoYXQgdGhlIGVsYXBzZWQgdGltZSBpcyAqKm5vdCoq
IHByaW50ZWQuKQorCisjIyMgR2VuZXJhdGluZyBhbiBYTUwgUmVwb3J0ICMjIworCitHb29nbGUg
VGVzdCBjYW4gZW1pdCBhIGRldGFpbGVkIFhNTCByZXBvcnQgdG8gYSBmaWxlIGluIGFkZGl0aW9u
IHRvIGl0cyBub3JtYWwKK3RleHR1YWwgb3V0cHV0LiBUaGUgcmVwb3J0IGNvbnRhaW5zIHRoZSBk
dXJhdGlvbiBvZiBlYWNoIHRlc3QsIGFuZCB0aHVzIGNhbgoraGVscCB5b3UgaWRlbnRpZnkgc2xv
dyB0ZXN0cy4KKworVG8gZ2VuZXJhdGUgdGhlIFhNTCByZXBvcnQsIHNldCB0aGUgYEdURVNUX09V
VFBVVGAgZW52aXJvbm1lbnQgdmFyaWFibGUgb3IgdGhlCitgLS1ndGVzdF9vdXRwdXRgIGZsYWcg
dG8gdGhlIHN0cmluZyBgInhtbDpfcGF0aF90b19vdXRwdXRfZmlsZV8iYCwgd2hpY2ggd2lsbAor
Y3JlYXRlIHRoZSBmaWxlIGF0IHRoZSBnaXZlbiBsb2NhdGlvbi4gWW91IGNhbiBhbHNvIGp1c3Qg
dXNlIHRoZSBzdHJpbmcKK2AieG1sImAsIGluIHdoaWNoIGNhc2UgdGhlIG91dHB1dCBjYW4gYmUg
Zm91bmQgaW4gdGhlIGB0ZXN0X2RldGFpbC54bWxgIGZpbGUgaW4KK3RoZSBjdXJyZW50IGRpcmVj
dG9yeS4KKworSWYgeW91IHNwZWNpZnkgYSBkaXJlY3RvcnkgKGZvciBleGFtcGxlLCBgInhtbDpv
dXRwdXQvZGlyZWN0b3J5LyJgIG9uIExpbnV4IG9yCitgInhtbDpvdXRwdXRcZGlyZWN0b3J5XCJg
IG9uIFdpbmRvd3MpLCBHb29nbGUgVGVzdCB3aWxsIGNyZWF0ZSB0aGUgWE1MIGZpbGUgaW4KK3Ro
YXQgZGlyZWN0b3J5LCBuYW1lZCBhZnRlciB0aGUgdGVzdCBleGVjdXRhYmxlIChlLmcuIGBmb29f
dGVzdC54bWxgIGZvciB0ZXN0Citwcm9ncmFtIGBmb29fdGVzdGAgb3IgYGZvb190ZXN0LmV4ZWAp
LiBJZiB0aGUgZmlsZSBhbHJlYWR5IGV4aXN0cyAocGVyaGFwcyBsZWZ0CitvdmVyIGZyb20gYSBw
cmV2aW91cyBydW4pLCBHb29nbGUgVGVzdCB3aWxsIHBpY2sgYSBkaWZmZXJlbnQgbmFtZSAoZS5n
LgorYGZvb190ZXN0XzEueG1sYCkgdG8gYXZvaWQgb3ZlcndyaXRpbmcgaXQuCisKK1RoZSByZXBv
cnQgdXNlcyB0aGUgZm9ybWF0IGRlc2NyaWJlZCBoZXJlLiAgSXQgaXMgYmFzZWQgb24gdGhlCitg
anVuaXRyZXBvcnRgIEFudCB0YXNrIGFuZCBjYW4gYmUgcGFyc2VkIGJ5IHBvcHVsYXIgY29udGlu
dW91cyBidWlsZAorc3lzdGVtcyBsaWtlIFtIdWRzb25dKGh0dHBzOi8vaHVkc29uLmRldi5qYXZh
Lm5ldC8pLiBTaW5jZSB0aGF0IGZvcm1hdAord2FzIG9yaWdpbmFsbHkgaW50ZW5kZWQgZm9yIEph
dmEsIGEgbGl0dGxlIGludGVycHJldGF0aW9uIGlzIHJlcXVpcmVkCit0byBtYWtlIGl0IGFwcGx5
IHRvIEdvb2dsZSBUZXN0IHRlc3RzLCBhcyBzaG93biBoZXJlOgorCitgYGAKKzx0ZXN0c3VpdGVz
IG5hbWU9IkFsbFRlc3RzIiAuLi4+CisgIDx0ZXN0c3VpdGUgbmFtZT0idGVzdF9jYXNlX25hbWUi
IC4uLj4KKyAgICA8dGVzdGNhc2UgbmFtZT0idGVzdF9uYW1lIiAuLi4+CisgICAgICA8ZmFpbHVy
ZSBtZXNzYWdlPSIuLi4iLz4KKyAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9Ii4uLiIvPgorICAgICAg
PGZhaWx1cmUgbWVzc2FnZT0iLi4uIi8+CisgICAgPC90ZXN0Y2FzZT4KKyAgPC90ZXN0c3VpdGU+
Cis8L3Rlc3RzdWl0ZXM+CitgYGAKKworICAqIFRoZSByb290IGA8dGVzdHN1aXRlcz5gIGVsZW1l
bnQgY29ycmVzcG9uZHMgdG8gdGhlIGVudGlyZSB0ZXN0IHByb2dyYW0uCisgICogYDx0ZXN0c3Vp
dGU+YCBlbGVtZW50cyBjb3JyZXNwb25kIHRvIEdvb2dsZSBUZXN0IHRlc3QgY2FzZXMuCisgICog
YDx0ZXN0Y2FzZT5gIGVsZW1lbnRzIGNvcnJlc3BvbmQgdG8gR29vZ2xlIFRlc3QgdGVzdCBmdW5j
dGlvbnMuCisKK0ZvciBpbnN0YW5jZSwgdGhlIGZvbGxvd2luZyBwcm9ncmFtCisKK2BgYAorVEVT
VChNYXRoVGVzdCwgQWRkaXRpb24pIHsgLi4uIH0KK1RFU1QoTWF0aFRlc3QsIFN1YnRyYWN0aW9u
KSB7IC4uLiB9CitURVNUKExvZ2ljVGVzdCwgTm9uQ29udHJhZGljdGlvbikgeyAuLi4gfQorYGBg
CisKK2NvdWxkIGdlbmVyYXRlIHRoaXMgcmVwb3J0OgorCitgYGAKKzw/eG1sIHZlcnNpb249IjEu
MCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8dGVzdHN1aXRlcyB0ZXN0cz0iMyIgZmFpbHVyZXM9IjEi
IGVycm9ycz0iMCIgdGltZT0iMzUiIG5hbWU9IkFsbFRlc3RzIj4KKyAgPHRlc3RzdWl0ZSBuYW1l
PSJNYXRoVGVzdCIgdGVzdHM9IjIiIGZhaWx1cmVzPSIxIiBlcnJvcnM9IjAiIHRpbWU9IjE1Ij4K
KyAgICA8dGVzdGNhc2UgbmFtZT0iQWRkaXRpb24iIHN0YXR1cz0icnVuIiB0aW1lPSI3IiBjbGFz
c25hbWU9IiI+CisgICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJWYWx1ZSBvZjogYWRkKDEsIDEpJiN4
MEE7IEFjdHVhbDogMyYjeDBBO0V4cGVjdGVkOiAyIiB0eXBlPSIiLz4KKyAgICAgIDxmYWlsdXJl
IG1lc3NhZ2U9IlZhbHVlIG9mOiBhZGQoMSwgLTEpJiN4MEE7IEFjdHVhbDogMSYjeDBBO0V4cGVj
dGVkOiAwIiB0eXBlPSIiLz4KKyAgICA8L3Rlc3RjYXNlPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJT
dWJ0cmFjdGlvbiIgc3RhdHVzPSJydW4iIHRpbWU9IjUiIGNsYXNzbmFtZT0iIj4KKyAgICA8L3Rl
c3RjYXNlPgorICA8L3Rlc3RzdWl0ZT4KKyAgPHRlc3RzdWl0ZSBuYW1lPSJMb2dpY1Rlc3QiIHRl
c3RzPSIxIiBmYWlsdXJlcz0iMCIgZXJyb3JzPSIwIiB0aW1lPSI1Ij4KKyAgICA8dGVzdGNhc2Ug
bmFtZT0iTm9uQ29udHJhZGljdGlvbiIgc3RhdHVzPSJydW4iIHRpbWU9IjUiIGNsYXNzbmFtZT0i
Ij4KKyAgICA8L3Rlc3RjYXNlPgorICA8L3Rlc3RzdWl0ZT4KKzwvdGVzdHN1aXRlcz4KK2BgYAor
CitUaGluZ3MgdG8gbm90ZToKKworICAqIFRoZSBgdGVzdHNgIGF0dHJpYnV0ZSBvZiBhIGA8dGVz
dHN1aXRlcz5gIG9yIGA8dGVzdHN1aXRlPmAgZWxlbWVudCB0ZWxscyBob3cgbWFueSB0ZXN0IGZ1
bmN0aW9ucyB0aGUgR29vZ2xlIFRlc3QgcHJvZ3JhbSBvciB0ZXN0IGNhc2UgY29udGFpbnMsIHdo
aWxlIHRoZSBgZmFpbHVyZXNgIGF0dHJpYnV0ZSB0ZWxscyBob3cgbWFueSBvZiB0aGVtIGZhaWxl
ZC4KKyAgKiBUaGUgYHRpbWVgIGF0dHJpYnV0ZSBleHByZXNzZXMgdGhlIGR1cmF0aW9uIG9mIHRo
ZSB0ZXN0LCB0ZXN0IGNhc2UsIG9yIGVudGlyZSB0ZXN0IHByb2dyYW0gaW4gbWlsbGlzZWNvbmRz
LgorICAqIEVhY2ggYDxmYWlsdXJlPmAgZWxlbWVudCBjb3JyZXNwb25kcyB0byBhIHNpbmdsZSBm
YWlsZWQgR29vZ2xlIFRlc3QgYXNzZXJ0aW9uLgorICAqIFNvbWUgSlVuaXQgY29uY2VwdHMgZG9u
J3QgYXBwbHkgdG8gR29vZ2xlIFRlc3QsIHlldCB3ZSBoYXZlIHRvIGNvbmZvcm0gdG8gdGhlIERU
RC4gVGhlcmVmb3JlIHlvdSdsbCBzZWUgc29tZSBkdW1teSBlbGVtZW50cyBhbmQgYXR0cmlidXRl
cyBpbiB0aGUgcmVwb3J0LiBZb3UgY2FuIHNhZmVseSBpZ25vcmUgdGhlc2UgcGFydHMuCisKK19B
dmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyBDb250cm9sbGluZyBIb3cg
RmFpbHVyZXMgQXJlIFJlcG9ydGVkICMjCisKKyMjIyBUdXJuaW5nIEFzc2VydGlvbiBGYWlsdXJl
cyBpbnRvIEJyZWFrLVBvaW50cyAjIyMKKworV2hlbiBydW5uaW5nIHRlc3QgcHJvZ3JhbXMgdW5k
ZXIgYSBkZWJ1Z2dlciwgaXQncyB2ZXJ5IGNvbnZlbmllbnQgaWYgdGhlCitkZWJ1Z2dlciBjYW4g
Y2F0Y2ggYW4gYXNzZXJ0aW9uIGZhaWx1cmUgYW5kIGF1dG9tYXRpY2FsbHkgZHJvcCBpbnRvIGlu
dGVyYWN0aXZlCittb2RlLiBHb29nbGUgVGVzdCdzIF9icmVhay1vbi1mYWlsdXJlXyBtb2RlIHN1
cHBvcnRzIHRoaXMgYmVoYXZpb3IuCisKK1RvIGVuYWJsZSBpdCwgc2V0IHRoZSBgR1RFU1RfQlJF
QUtfT05fRkFJTFVSRWAgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYSB2YWx1ZQorb3RoZXIgdGhh
biBgMGAgLiBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHVzZSB0aGUgYC0tZ3Rlc3RfYnJlYWtfb25f
ZmFpbHVyZWAKK2NvbW1hbmQgbGluZSBmbGFnLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdp
bmRvd3MsIE1hYy4KKworIyMjIERpc2FibGluZyBDYXRjaGluZyBUZXN0LVRocm93biBFeGNlcHRp
b25zICMjIworCitHb29nbGUgVGVzdCBjYW4gYmUgdXNlZCBlaXRoZXIgd2l0aCBvciB3aXRob3V0
IGV4Y2VwdGlvbnMgZW5hYmxlZC4gIElmCithIHRlc3QgdGhyb3dzIGEgQysrIGV4Y2VwdGlvbiBv
ciAob24gV2luZG93cykgYSBzdHJ1Y3R1cmVkIGV4Y2VwdGlvbgorKFNFSCksIGJ5IGRlZmF1bHQg
R29vZ2xlIFRlc3QgY2F0Y2hlcyBpdCwgcmVwb3J0cyBpdCBhcyBhIHRlc3QKK2ZhaWx1cmUsIGFu
ZCBjb250aW51ZXMgd2l0aCB0aGUgbmV4dCB0ZXN0IG1ldGhvZC4gIFRoaXMgbWF4aW1pemVzIHRo
ZQorY292ZXJhZ2Ugb2YgYSB0ZXN0IHJ1bi4gIEFsc28sIG9uIFdpbmRvd3MgYW4gdW5jYXVnaHQg
ZXhjZXB0aW9uIHdpbGwKK2NhdXNlIGEgcG9wLXVwIHdpbmRvdywgc28gY2F0Y2hpbmcgdGhlIGV4
Y2VwdGlvbnMgYWxsb3dzIHlvdSB0byBydW4KK3RoZSB0ZXN0cyBhdXRvbWF0aWNhbGx5LgorCitX
aGVuIGRlYnVnZ2luZyB0aGUgdGVzdCBmYWlsdXJlcywgaG93ZXZlciwgeW91IG1heSBpbnN0ZWFk
IHdhbnQgdGhlCitleGNlcHRpb25zIHRvIGJlIGhhbmRsZWQgYnkgdGhlIGRlYnVnZ2VyLCBzdWNo
IHRoYXQgeW91IGNhbiBleGFtaW5lCit0aGUgY2FsbCBzdGFjayB3aGVuIGFuIGV4Y2VwdGlvbiBp
cyB0aHJvd24uICBUbyBhY2hpZXZlIHRoYXQsIHNldCB0aGUKK2BHVEVTVF9DQVRDSF9FWENFUFRJ
T05TYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBgMGAsIG9yIHVzZSB0aGUKK2AtLWd0ZXN0X2Nh
dGNoX2V4Y2VwdGlvbnM9MGAgZmxhZyB3aGVuIHJ1bm5pbmcgdGhlIHRlc3RzLgorCisqKkF2YWls
YWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMgTGV0dGluZyBBbm90aGVyIFRl
c3RpbmcgRnJhbWV3b3JrIERyaXZlICMjIworCitJZiB5b3Ugd29yayBvbiBhIHByb2plY3QgdGhh
dCBoYXMgYWxyZWFkeSBiZWVuIHVzaW5nIGFub3RoZXIgdGVzdGluZworZnJhbWV3b3JrIGFuZCBp
cyBub3QgcmVhZHkgdG8gY29tcGxldGVseSBzd2l0Y2ggdG8gR29vZ2xlIFRlc3QgeWV0LAoreW91
IGNhbiBnZXQgbXVjaCBvZiBHb29nbGUgVGVzdCdzIGJlbmVmaXQgYnkgdXNpbmcgaXRzIGFzc2Vy
dGlvbnMgaW4KK3lvdXIgZXhpc3RpbmcgdGVzdHMuICBKdXN0IGNoYW5nZSB5b3VyIGBtYWluKClg
IGZ1bmN0aW9uIHRvIGxvb2sKK2xpa2U6CisKK2BgYAorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0Lmgi
CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgeworICA6OnRlc3Rpbmc6OkdURVNU
X0ZMQUcodGhyb3dfb25fZmFpbHVyZSkgPSB0cnVlOworICAvLyBJbXBvcnRhbnQ6IEdvb2dsZSBU
ZXN0IG11c3QgYmUgaW5pdGlhbGl6ZWQuCisgIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFy
Z2MsIGFyZ3YpOworCisgIC4uLiB3aGF0ZXZlciB5b3VyIGV4aXN0aW5nIHRlc3RpbmcgZnJhbWV3
b3JrIHJlcXVpcmVzIC4uLgorfQorYGBgCisKK1dpdGggdGhhdCwgeW91IGNhbiB1c2UgR29vZ2xl
IFRlc3QgYXNzZXJ0aW9ucyBpbiBhZGRpdGlvbiB0byB0aGUKK25hdGl2ZSBhc3NlcnRpb25zIHlv
dXIgdGVzdGluZyBmcmFtZXdvcmsgcHJvdmlkZXMsIGZvciBleGFtcGxlOgorCitgYGAKK3ZvaWQg
VGVzdEZvb0RvZXNCYXIoKSB7CisgIEZvbyBmb287CisgIEVYUEVDVF9MRShmb28uQmFyKDEpLCAx
MDApOyAgICAgLy8gQSBHb29nbGUgVGVzdCBhc3NlcnRpb24uCisgIENQUFVOSVRfQVNTRVJUKGZv
by5Jc0VtcHR5KCkpOyAgLy8gQSBuYXRpdmUgYXNzZXJ0aW9uLgorfQorYGBgCisKK0lmIGEgR29v
Z2xlIFRlc3QgYXNzZXJ0aW9uIGZhaWxzLCBpdCB3aWxsIHByaW50IGFuIGVycm9yIG1lc3NhZ2Ug
YW5kCit0aHJvdyBhbiBleGNlcHRpb24sIHdoaWNoIHdpbGwgYmUgdHJlYXRlZCBhcyBhIGZhaWx1
cmUgYnkgeW91ciBob3N0Cit0ZXN0aW5nIGZyYW1ld29yay4gIElmIHlvdSBjb21waWxlIHlvdXIg
Y29kZSB3aXRoIGV4Y2VwdGlvbnMgZGlzYWJsZWQsCithIGZhaWxlZCBHb29nbGUgVGVzdCBhc3Nl
cnRpb24gd2lsbCBpbnN0ZWFkIGV4aXQgeW91ciBwcm9ncmFtIHdpdGggYQorbm9uLXplcm8gY29k
ZSwgd2hpY2ggd2lsbCBhbHNvIHNpZ25hbCBhIHRlc3QgZmFpbHVyZSB0byB5b3VyIHRlc3QKK3J1
bm5lci4KKworSWYgeW91IGRvbid0IHdyaXRlIGA6OnRlc3Rpbmc6OkdURVNUX0ZMQUcodGhyb3df
b25fZmFpbHVyZSkgPSB0cnVlO2AgaW4KK3lvdXIgYG1haW4oKWAsIHlvdSBjYW4gYWx0ZXJuYXRp
dmVseSBlbmFibGUgdGhpcyBmZWF0dXJlIGJ5IHNwZWNpZnlpbmcKK3RoZSBgLS1ndGVzdF90aHJv
d19vbl9mYWlsdXJlYCBmbGFnIG9uIHRoZSBjb21tYW5kLWxpbmUgb3Igc2V0dGluZyB0aGUKK2BH
VEVTVF9USFJPV19PTl9GQUlMVVJFYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBhIG5vbi16ZXJv
IHZhbHVlLgorCitEZWF0aCB0ZXN0cyBhcmUgX25vdF8gc3VwcG9ydGVkIHdoZW4gb3RoZXIgdGVz
dCBmcmFtZXdvcmsgaXMgdXNlZCB0byBvcmdhbml6ZSB0ZXN0cy4KKworX0F2YWlsYWJpbGl0eTpf
IExpbnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHYxLjMuMC4KKworIyMgRGlzdHJpYnV0aW5nIFRl
c3QgRnVuY3Rpb25zIHRvIE11bHRpcGxlIE1hY2hpbmVzICMjCisKK0lmIHlvdSBoYXZlIG1vcmUg
dGhhbiBvbmUgbWFjaGluZSB5b3UgY2FuIHVzZSB0byBydW4gYSB0ZXN0IHByb2dyYW0sCit5b3Ug
bWlnaHQgd2FudCB0byBydW4gdGhlIHRlc3QgZnVuY3Rpb25zIGluIHBhcmFsbGVsIGFuZCBnZXQg
dGhlCityZXN1bHQgZmFzdGVyLiAgV2UgY2FsbCB0aGlzIHRlY2huaXF1ZSBfc2hhcmRpbmdfLCB3
aGVyZSBlYWNoIG1hY2hpbmUKK2lzIGNhbGxlZCBhIF9zaGFyZF8uCisKK0dvb2dsZSBUZXN0IGlz
IGNvbXBhdGlibGUgd2l0aCB0ZXN0IHNoYXJkaW5nLiAgVG8gdGFrZSBhZHZhbnRhZ2Ugb2YKK3Ro
aXMgZmVhdHVyZSwgeW91ciB0ZXN0IHJ1bm5lciAobm90IHBhcnQgb2YgR29vZ2xlIFRlc3QpIG5l
ZWRzIHRvIGRvCit0aGUgZm9sbG93aW5nOgorCisgIDEuIEFsbG9jYXRlIGEgbnVtYmVyIG9mIG1h
Y2hpbmVzIChzaGFyZHMpIHRvIHJ1biB0aGUgdGVzdHMuCisgIDEuIE9uIGVhY2ggc2hhcmQsIHNl
dCB0aGUgYEdURVNUX1RPVEFMX1NIQVJEU2AgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gdGhlIHRv
dGFsIG51bWJlciBvZiBzaGFyZHMuICBJdCBtdXN0IGJlIHRoZSBzYW1lIGZvciBhbGwgc2hhcmRz
LgorICAxLiBPbiBlYWNoIHNoYXJkLCBzZXQgdGhlIGBHVEVTVF9TSEFSRF9JTkRFWGAgZW52aXJv
bm1lbnQgdmFyaWFibGUgdG8gdGhlIGluZGV4IG9mIHRoZSBzaGFyZC4gIERpZmZlcmVudCBzaGFy
ZHMgbXVzdCBiZSBhc3NpZ25lZCBkaWZmZXJlbnQgaW5kaWNlcywgd2hpY2ggbXVzdCBiZSBpbiB0
aGUgcmFuZ2UgYFswLCBHVEVTVF9UT1RBTF9TSEFSRFMgLSAxXWAuCisgIDEuIFJ1biB0aGUgc2Ft
ZSB0ZXN0IHByb2dyYW0gb24gYWxsIHNoYXJkcy4gIFdoZW4gR29vZ2xlIFRlc3Qgc2VlcyB0aGUg
YWJvdmUgdHdvIGVudmlyb25tZW50IHZhcmlhYmxlcywgaXQgd2lsbCBzZWxlY3QgYSBzdWJzZXQg
b2YgdGhlIHRlc3QgZnVuY3Rpb25zIHRvIHJ1bi4gIEFjcm9zcyBhbGwgc2hhcmRzLCBlYWNoIHRl
c3QgZnVuY3Rpb24gaW4gdGhlIHByb2dyYW0gd2lsbCBiZSBydW4gZXhhY3RseSBvbmNlLgorICAx
LiBXYWl0IGZvciBhbGwgc2hhcmRzIHRvIGZpbmlzaCwgdGhlbiBjb2xsZWN0IGFuZCByZXBvcnQg
dGhlIHJlc3VsdHMuCisKK1lvdXIgcHJvamVjdCBtYXkgaGF2ZSB0ZXN0cyB0aGF0IHdlcmUgd3Jp
dHRlbiB3aXRob3V0IEdvb2dsZSBUZXN0IGFuZAordGh1cyBkb24ndCB1bmRlcnN0YW5kIHRoaXMg
cHJvdG9jb2wuICBJbiBvcmRlciBmb3IgeW91ciB0ZXN0IHJ1bm5lciB0bworZmlndXJlIG91dCB3
aGljaCB0ZXN0IHN1cHBvcnRzIHNoYXJkaW5nLCBpdCBjYW4gc2V0IHRoZSBlbnZpcm9ubWVudAor
dmFyaWFibGUgYEdURVNUX1NIQVJEX1NUQVRVU19GSUxFYCB0byBhIG5vbi1leGlzdGVudCBmaWxl
IHBhdGguICBJZiBhCit0ZXN0IHByb2dyYW0gc3VwcG9ydHMgc2hhcmRpbmcsIGl0IHdpbGwgY3Jl
YXRlIHRoaXMgZmlsZSB0bworYWNrbm93bGVkZ2UgdGhlIGZhY3QgKHRoZSBhY3R1YWwgY29udGVu
dHMgb2YgdGhlIGZpbGUgYXJlIG5vdAoraW1wb3J0YW50IGF0IHRoaXMgdGltZTsgYWx0aG91Z2gg
d2UgbWF5IHN0aWNrIHNvbWUgdXNlZnVsIGluZm9ybWF0aW9uCitpbiBpdCBpbiB0aGUgZnV0dXJl
Lik7IG90aGVyd2lzZSBpdCB3aWxsIG5vdCBjcmVhdGUgaXQuCisKK0hlcmUncyBhbiBleGFtcGxl
IHRvIG1ha2UgaXQgY2xlYXIuICBTdXBwb3NlIHlvdSBoYXZlIGEgdGVzdCBwcm9ncmFtCitgZm9v
X3Rlc3RgIHRoYXQgY29udGFpbnMgdGhlIGZvbGxvd2luZyA1IHRlc3QgZnVuY3Rpb25zOgorYGBg
CitURVNUKEEsIFYpCitURVNUKEEsIFcpCitURVNUKEIsIFgpCitURVNUKEIsIFkpCitURVNUKEIs
IFopCitgYGAKK2FuZCB5b3UgaGF2ZSAzIG1hY2hpbmVzIGF0IHlvdXIgZGlzcG9zYWwuICBUbyBy
dW4gdGhlIHRlc3QgZnVuY3Rpb25zIGluCitwYXJhbGxlbCwgeW91IHdvdWxkIHNldCBgR1RFU1Rf
VE9UQUxfU0hBUkRTYCB0byAzIG9uIGFsbCBtYWNoaW5lcywgYW5kCitzZXQgYEdURVNUX1NIQVJE
X0lOREVYYCB0byAwLCAxLCBhbmQgMiBvbiB0aGUgbWFjaGluZXMgcmVzcGVjdGl2ZWx5LgorVGhl
biB5b3Ugd291bGQgcnVuIHRoZSBzYW1lIGBmb29fdGVzdGAgb24gZWFjaCBtYWNoaW5lLgorCitH
b29nbGUgVGVzdCByZXNlcnZlcyB0aGUgcmlnaHQgdG8gY2hhbmdlIGhvdyB0aGUgd29yayBpcyBk
aXN0cmlidXRlZAorYWNyb3NzIHRoZSBzaGFyZHMsIGJ1dCBoZXJlJ3Mgb25lIHBvc3NpYmxlIHNj
ZW5hcmlvOgorCisgICogTWFjaGluZSAjMCBydW5zIGBBLlZgIGFuZCBgQi5YYC4KKyAgKiBNYWNo
aW5lICMxIHJ1bnMgYEEuV2AgYW5kIGBCLllgLgorICAqIE1hY2hpbmUgIzIgcnVucyBgQi5aYC4K
KworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHZlcnNpb24gMS4z
LjAuCisKKyMgRnVzaW5nIEdvb2dsZSBUZXN0IFNvdXJjZSBGaWxlcyAjCisKK0dvb2dsZSBUZXN0
J3MgaW1wbGVtZW50YXRpb24gY29uc2lzdHMgb2YgfjMwIGZpbGVzIChleGNsdWRpbmcgaXRzIG93
bgordGVzdHMpLiAgU29tZXRpbWVzIHlvdSBtYXkgd2FudCB0aGVtIHRvIGJlIHBhY2thZ2VkIHVw
IGluIHR3byBmaWxlcyAoYQorYC5oYCBhbmQgYSBgLmNjYCkgaW5zdGVhZCwgc3VjaCB0aGF0IHlv
dSBjYW4gZWFzaWx5IGNvcHkgdGhlbSB0byBhIG5ldworbWFjaGluZSBhbmQgc3RhcnQgaGFja2lu
ZyB0aGVyZS4gIEZvciB0aGlzIHdlIHByb3ZpZGUgYW4gZXhwZXJpbWVudGFsCitQeXRob24gc2Ny
aXB0IGBmdXNlX2d0ZXN0X2ZpbGVzLnB5YCBpbiB0aGUgYHNjcmlwdHMvYCBkaXJlY3RvcnkgKHNp
bmNlIHJlbGVhc2UgMS4zLjApLgorQXNzdW1pbmcgeW91IGhhdmUgUHl0aG9uIDIuNCBvciBhYm92
ZSBpbnN0YWxsZWQgb24geW91ciBtYWNoaW5lLCBqdXN0CitnbyB0byB0aGF0IGRpcmVjdG9yeSBh
bmQgcnVuCitgYGAKK3B5dGhvbiBmdXNlX2d0ZXN0X2ZpbGVzLnB5IE9VVFBVVF9ESVIKK2BgYAor
CithbmQgeW91IHNob3VsZCBzZWUgYW4gYE9VVFBVVF9ESVJgIGRpcmVjdG9yeSBiZWluZyBjcmVh
dGVkIHdpdGggZmlsZXMKK2BndGVzdC9ndGVzdC5oYCBhbmQgYGd0ZXN0L2d0ZXN0LWFsbC5jY2Ag
aW4gaXQuICBUaGVzZSBmaWxlcyBjb250YWluCitldmVyeXRoaW5nIHlvdSBuZWVkIHRvIHVzZSBH
b29nbGUgVGVzdC4gIEp1c3QgY29weSB0aGVtIHRvIGFueXdoZXJlCit5b3Ugd2FudCBhbmQgeW91
IGFyZSByZWFkeSB0byB3cml0ZSB0ZXN0cy4gIFlvdSBjYW4gdXNlIHRoZQorW3NjcmlwdHMvdGVz
dC9NYWtlZmlsZV0oLi4vc2NyaXB0cy90ZXN0L01ha2VmaWxlKQorZmlsZSBhcyBhbiBleGFtcGxl
IG9uIGhvdyB0byBjb21waWxlIHlvdXIgdGVzdHMgYWdhaW5zdCB0aGVtLgorCisjIFdoZXJlIHRv
IEdvIGZyb20gSGVyZSAjCisKK0NvbmdyYXR1bGF0aW9ucyEgWW91J3ZlIG5vdyBsZWFybmVkIG1v
cmUgYWR2YW5jZWQgR29vZ2xlIFRlc3QgdG9vbHMgYW5kIGFyZQorcmVhZHkgdG8gdGFja2xlIG1v
cmUgY29tcGxleCB0ZXN0aW5nIHRhc2tzLiBJZiB5b3Ugd2FudCB0byBkaXZlIGV2ZW4gZGVlcGVy
LCB5b3UKK2NhbiByZWFkIHRoZSBbRnJlcXVlbnRseS1Bc2tlZCBRdWVzdGlvbnNdKEZBUS5tZCku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL0Rldkd1aWRlLm1kIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
ZG9jcy9EZXZHdWlkZS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNjQ2N2EzMjc3MWY1M2M0YTliOTVhNmFhMTM0
ZWRkZTNmYWRmNjM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9EZXZHdWlk
ZS5tZApAQCAtMCwwICsxLDEyNiBAQAorCisKK0lmIHlvdSBhcmUgaW50ZXJlc3RlZCBpbiB1bmRl
cnN0YW5kaW5nIHRoZSBpbnRlcm5hbHMgb2YgR29vZ2xlIFRlc3QsCitidWlsZGluZyBmcm9tIHNv
dXJjZSwgb3IgY29udHJpYnV0aW5nIGlkZWFzIG9yIG1vZGlmaWNhdGlvbnMgdG8gdGhlCitwcm9q
ZWN0LCB0aGVuIHRoaXMgZG9jdW1lbnQgaXMgZm9yIHlvdS4KKworIyBJbnRyb2R1Y3Rpb24gIwor
CitGaXJzdCwgbGV0J3MgZ2l2ZSB5b3Ugc29tZSBiYWNrZ3JvdW5kIG9mIHRoZSBwcm9qZWN0Lgor
CisjIyBMaWNlbnNpbmcgIyMKKworQWxsIEdvb2dsZSBUZXN0IHNvdXJjZSBhbmQgcHJlLWJ1aWx0
IHBhY2thZ2VzIGFyZSBwcm92aWRlZCB1bmRlciB0aGUgW05ldyBCU0QgTGljZW5zZV0oaHR0cDov
L3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHApLgorCisjIyBUaGUg
R29vZ2xlIFRlc3QgQ29tbXVuaXR5ICMjCisKK1RoZSBHb29nbGUgVGVzdCBjb21tdW5pdHkgZXhp
c3RzIHByaW1hcmlseSB0aHJvdWdoIHRoZSBbZGlzY3Vzc2lvbiBncm91cF0oaHR0cDovL2dyb3Vw
cy5nb29nbGUuY29tL2dyb3VwL2dvb2dsZXRlc3RmcmFtZXdvcmspIGFuZCB0aGUgR2l0SHViIHJl
cG9zaXRvcnkuCitZb3UgYXJlIGRlZmluaXRlbHkgZW5jb3VyYWdlZCB0byBjb250cmlidXRlIHRv
IHRoZQorZGlzY3Vzc2lvbiBhbmQgeW91IGNhbiBhbHNvIGhlbHAgdXMgdG8ga2VlcCB0aGUgZWZm
ZWN0aXZlbmVzcyBvZiB0aGUKK2dyb3VwIGhpZ2ggYnkgZm9sbG93aW5nIGFuZCBwcm9tb3Rpbmcg
dGhlIGd1aWRlbGluZXMgbGlzdGVkIGhlcmUuCisKKyMjIyBQbGVhc2UgQmUgRnJpZW5kbHkgIyMj
CisKK1Nob3dpbmcgY291cnRlc3kgYW5kIHJlc3BlY3QgdG8gb3RoZXJzIGlzIGEgdml0YWwgcGFy
dCBvZiB0aGUgR29vZ2xlCitjdWx0dXJlLCBhbmQgd2Ugc3Ryb25nbHkgZW5jb3VyYWdlIGV2ZXJ5
b25lIHBhcnRpY2lwYXRpbmcgaW4gR29vZ2xlCitUZXN0IGRldmVsb3BtZW50IHRvIGpvaW4gdXMg
aW4gYWNjZXB0aW5nIG5vdGhpbmcgbGVzcy4gT2YgY291cnNlLAorYmVpbmcgY291cnRlb3VzIGlz
IG5vdCB0aGUgc2FtZSBhcyBmYWlsaW5nIHRvIGNvbnN0cnVjdGl2ZWx5IGRpc2FncmVlCit3aXRo
IGVhY2ggb3RoZXIsIGJ1dCBpdCBkb2VzIG1lYW4gdGhhdCB3ZSBzaG91bGQgYmUgcmVzcGVjdGZ1
bCBvZiBlYWNoCitvdGhlciB3aGVuIGVudW1lcmF0aW5nIHRoZSA0MiB0ZWNobmljYWwgcmVhc29u
cyB0aGF0IGEgcGFydGljdWxhcgorcHJvcG9zYWwgbWF5IG5vdCBiZSB0aGUgYmVzdCBjaG9pY2Uu
IFRoZXJlJ3MgbmV2ZXIgYSByZWFzb24gdG8gYmUKK2FudGFnb25pc3RpYyBvciBkaXNtaXNzaXZl
IHRvd2FyZCBhbnlvbmUgd2hvIGlzIHNpbmNlcmVseSB0cnlpbmcgdG8KK2NvbnRyaWJ1dGUgdG8g
YSBkaXNjdXNzaW9uLgorCitTdXJlLCBDKysgdGVzdGluZyBpcyBzZXJpb3VzIGJ1c2luZXNzIGFu
ZCBhbGwgdGhhdCwgYnV0IGl0J3MgYWxzbworYSBsb3Qgb2YgZnVuLiBMZXQncyBrZWVwIGl0IHRo
YXQgd2F5LiBMZXQncyBzdHJpdmUgdG8gYmUgb25lIG9mIHRoZQorZnJpZW5kbGllc3QgY29tbXVu
aXRpZXMgaW4gYWxsIG9mIG9wZW4gc291cmNlLgorCitBcyBhbHdheXMsIGRpc2N1c3MgR29vZ2xl
IFRlc3QgaW4gdGhlIG9mZmljaWFsIEdvb2dsZVRlc3QgZGlzY3Vzc2lvbiBncm91cC4KK1lvdSBk
b24ndCBoYXZlIHRvIGFjdHVhbGx5IHN1Ym1pdCBjb2RlIGluIG9yZGVyIHRvIHNpZ24gdXAuIFlv
dXIgcGFydGljaXBhdGlvbgoraXRzZWxmIGlzIGEgdmFsdWFibGUgY29udHJpYnV0aW9uLgorCisj
IFdvcmtpbmcgd2l0aCB0aGUgQ29kZSAjCisKK0lmIHlvdSB3YW50IHRvIGdldCB5b3VyIGhhbmRz
IGRpcnR5IHdpdGggdGhlIGNvZGUgaW5zaWRlIEdvb2dsZSBUZXN0LAordGhpcyBpcyB0aGUgc2Vj
dGlvbiBmb3IgeW91LgorCisjIyBDb21waWxpbmcgZnJvbSBTb3VyY2UgIyMKKworT25jZSB5b3Ug
Y2hlY2sgb3V0IHRoZSBjb2RlLCB5b3UgY2FuIGZpbmQgaW5zdHJ1Y3Rpb25zIG9uIGhvdyB0bwor
Y29tcGlsZSBpdCBpbiB0aGUgW1JFQURNRV0oLi4vUkVBRE1FLm1kKSBmaWxlLgorCisjIyBUZXN0
aW5nICMjCisKK0EgdGVzdGluZyBmcmFtZXdvcmsgaXMgb2Ygbm8gZ29vZCBpZiBpdHNlbGYgaXMg
bm90IHRob3JvdWdobHkgdGVzdGVkLgorVGVzdHMgc2hvdWxkIGJlIHdyaXR0ZW4gZm9yIGFueSBu
ZXcgY29kZSwgYW5kIGNoYW5nZXMgc2hvdWxkIGJlCit2ZXJpZmllZCB0byBub3QgYnJlYWsgZXhp
c3RpbmcgdGVzdHMgYmVmb3JlIHRoZXkgYXJlIHN1Ym1pdHRlZCBmb3IKK3Jldmlldy4gVG8gcGVy
Zm9ybSB0aGUgdGVzdHMsIGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGluCitbUkVBRE1FXSguLi9S
RUFETUUubWQpIGFuZCB2ZXJpZnkgdGhhdCB0aGVyZSBhcmUgbm8gZmFpbHVyZXMuCisKKyMgQ29u
dHJpYnV0aW5nIENvZGUgIworCitXZSBhcmUgZXhjaXRlZCB0aGF0IEdvb2dsZSBUZXN0IGlzIG5v
dyBvcGVuIHNvdXJjZSwgYW5kIGhvcGUgdG8gZ2V0CitncmVhdCBwYXRjaGVzIGZyb20gdGhlIGNv
bW11bml0eS4gQmVmb3JlIHlvdSBmaXJlIHVwIHlvdXIgZmF2b3JpdGUgSURFCithbmQgYmVnaW4g
aGFtbWVyaW5nIGF3YXkgYXQgdGhhdCBuZXcgZmVhdHVyZSwgdGhvdWdoLCBwbGVhc2UgdGFrZSB0
aGUKK3RpbWUgdG8gcmVhZCB0aGlzIHNlY3Rpb24gYW5kIHVuZGVyc3RhbmQgdGhlIHByb2Nlc3Mu
IFdoaWxlIGl0IHNlZW1zCityaWdvcm91cywgd2Ugd2FudCB0byBrZWVwIGEgaGlnaCBzdGFuZGFy
ZCBvZiBxdWFsaXR5IGluIHRoZSBjb2RlCitiYXNlLgorCisjIyBDb250cmlidXRvciBMaWNlbnNl
IEFncmVlbWVudHMgIyMKKworWW91IG11c3Qgc2lnbiBhIENvbnRyaWJ1dG9yIExpY2Vuc2UgQWdy
ZWVtZW50IChDTEEpIGJlZm9yZSB3ZSBjYW4KK2FjY2VwdCBhbnkgY29kZS4gIFRoZSBDTEEgcHJv
dGVjdHMgeW91IGFuZCB1cy4KKworICAqIElmIHlvdSBhcmUgYW4gaW5kaXZpZHVhbCB3cml0aW5n
IG9yaWdpbmFsIHNvdXJjZSBjb2RlIGFuZCB5b3UncmUgc3VyZSB5b3Ugb3duIHRoZSBpbnRlbGxl
Y3R1YWwgcHJvcGVydHksIHRoZW4geW91J2xsIG5lZWQgdG8gc2lnbiBhbiBbaW5kaXZpZHVhbCBD
TEFdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vbGVnYWwvaW5kaXZpZHVhbC1jbGEtdjEuMC5odG1s
KS4KKyAgKiBJZiB5b3Ugd29yayBmb3IgYSBjb21wYW55IHRoYXQgd2FudHMgdG8gYWxsb3cgeW91
IHRvIGNvbnRyaWJ1dGUgeW91ciB3b3JrIHRvIEdvb2dsZSBUZXN0LCB0aGVuIHlvdSdsbCBuZWVk
IHRvIHNpZ24gYSBbY29ycG9yYXRlIENMQV0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9sZWdhbC9j
b3Jwb3JhdGUtY2xhLXYxLjAuaHRtbCkuCisKK0ZvbGxvdyBlaXRoZXIgb2YgdGhlIHR3byBsaW5r
cyBhYm92ZSB0byBhY2Nlc3MgdGhlIGFwcHJvcHJpYXRlIENMQSBhbmQKK2luc3RydWN0aW9ucyBm
b3IgaG93IHRvIHNpZ24gYW5kIHJldHVybiBpdC4KKworIyMgQ29kaW5nIFN0eWxlICMjCisKK1Rv
IGtlZXAgdGhlIHNvdXJjZSBjb25zaXN0ZW50LCByZWFkYWJsZSwgZGlmZmFibGUgYW5kIGVhc3kg
dG8gbWVyZ2UsCit3ZSB1c2UgYSBmYWlybHkgcmlnaWQgY29kaW5nIHN0eWxlLCBhcyBkZWZpbmVk
IGJ5IHRoZSBbZ29vZ2xlLXN0eWxlZ3VpZGVdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29n
bGUtc3R5bGVndWlkZS8pIHByb2plY3QuICBBbGwgcGF0Y2hlcyB3aWxsIGJlIGV4cGVjdGVkCit0
byBjb25mb3JtIHRvIHRoZSBzdHlsZSBvdXRsaW5lZCBbaGVyZV0oaHR0cDovL2dvb2dsZS1zdHls
ZWd1aWRlLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9jcHBndWlkZS54bWwpLgorCisjIyBVcGRh
dGluZyBHZW5lcmF0ZWQgQ29kZSAjIworCitTb21lIG9mIEdvb2dsZSBUZXN0J3Mgc291cmNlIGZp
bGVzIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFB1bXAgdG9vbCAoYQorUHl0aG9uIHNjcmlwdCkuICBJ
ZiB5b3UgbmVlZCB0byB1cGRhdGUgc3VjaCBmaWxlcywgcGxlYXNlIG1vZGlmeSB0aGUKK3NvdXJj
ZSAoYGZvby5oLnB1bXBgKSBhbmQgcmUtZ2VuZXJhdGUgdGhlIEMrKyBmaWxlIHVzaW5nIFB1bXAu
ICBZb3UKK2NhbiByZWFkIHRoZSBQdW1wTWFudWFsIGZvciBkZXRhaWxzLgorCisjIyBTdWJtaXR0
aW5nIFBhdGNoZXMgIyMKKworUGxlYXNlIGRvIHN1Ym1pdCBjb2RlLiBIZXJlJ3Mgd2hhdCB5b3Ug
bmVlZCB0byBkbzoKKworICAxLiBBIHN1Ym1pc3Npb24gc2hvdWxkIGJlIGEgc2V0IG9mIGNoYW5n
ZXMgdGhhdCBhZGRyZXNzZXMgb25lIGlzc3VlIGluIHRoZSBbaXNzdWUgdHJhY2tlcl0oaHR0cHM6
Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0L2lzc3VlcykuIFBsZWFzZSBkb24ndCBtaXgg
bW9yZSB0aGFuIG9uZSBsb2dpY2FsIGNoYW5nZSBwZXIgc3VibWl0dGFsLCBiZWNhdXNlIGl0IG1h
a2VzIHRoZSBoaXN0b3J5IGhhcmQgdG8gZm9sbG93LiBJZiB5b3Ugd2FudCB0byBtYWtlIGEgY2hh
bmdlIHRoYXQgZG9lc24ndCBoYXZlIGEgY29ycmVzcG9uZGluZyBpc3N1ZSBpbiB0aGUgaXNzdWUg
dHJhY2tlciwgcGxlYXNlIGNyZWF0ZSBvbmUuCisgIDEuIEFsc28sIGNvb3JkaW5hdGUgd2l0aCB0
ZWFtIG1lbWJlcnMgdGhhdCBhcmUgbGlzdGVkIG9uIHRoZSBpc3N1ZSBpbiBxdWVzdGlvbi4gVGhp
cyBlbnN1cmVzIHRoYXQgd29yayBpc24ndCBiZWluZyBkdXBsaWNhdGVkIGFuZCBjb21tdW5pY2F0
aW5nIHlvdXIgcGxhbiBlYXJseSBhbHNvIGdlbmVyYWxseSBsZWFkcyB0byBiZXR0ZXIgcGF0Y2hl
cy4KKyAgMS4gRW5zdXJlIHRoYXQgeW91ciBjb2RlIGFkaGVyZXMgdG8gdGhlIFtHb29nbGUgVGVz
dCBzb3VyY2UgY29kZSBzdHlsZV0oI0NvZGluZ19TdHlsZS5tZCkuCisgIDEuIEVuc3VyZSB0aGF0
IHRoZXJlIGFyZSB1bml0IHRlc3RzIGZvciB5b3VyIGNvZGUuCisgIDEuIFNpZ24gYSBDb250cmli
dXRvciBMaWNlbnNlIEFncmVlbWVudC4KKyAgMS4gQ3JlYXRlIGEgUHVsbCBSZXF1ZXN0IGluIHRo
ZSB1c3VhbCB3YXkuCisKKyMjIEdvb2dsZSBUZXN0IENvbW1pdHRlcnMgIyMKKworVGhlIGN1cnJl
bnQgbWVtYmVycyBvZiB0aGUgR29vZ2xlIFRlc3QgZW5naW5lZXJpbmcgdGVhbSBhcmUgdGhlIG9u
bHkKK2NvbW1pdHRlcnMgYXQgcHJlc2VudC4gSW4gdGhlIGdyZWF0IHRyYWRpdGlvbiBvZiBlYXRp
bmcgb25lJ3Mgb3duCitkb2dmb29kLCB3ZSB3aWxsIGJlIHJlcXVpcmluZyBlYWNoIG5ldyBHb29n
bGUgVGVzdCBlbmdpbmVlcmluZyB0ZWFtCittZW1iZXIgdG8gZWFybiB0aGUgcmlnaHQgdG8gYmVj
b21lIGEgY29tbWl0dGVyIGJ5IGZvbGxvd2luZyB0aGUKK3Byb2NlZHVyZXMgaW4gdGhpcyBkb2N1
bWVudCwgd3JpdGluZyBjb25zaXN0ZW50bHkgZ3JlYXQgY29kZSwgYW5kCitkZW1vbnN0cmF0aW5n
IHJlcGVhdGVkbHkgdGhhdCBoZSBvciBzaGUgdHJ1bHkgZ2V0cyB0aGUgemVuIG9mIEdvb2dsZQor
VGVzdC4KKworIyBSZWxlYXNlIFByb2Nlc3MgIworCitXZSBmb2xsb3cgYSB0eXBpY2FsIHJlbGVh
c2UgcHJvY2VzczoKKworICAxLiBBIHJlbGVhc2UgYnJhbmNoIG5hbWVkIGByZWxlYXNlLVguWWAg
aXMgY3JlYXRlZC4KKyAgMS4gQnVncyBhcmUgZml4ZWQgYW5kIGZlYXR1cmVzIGFyZSBhZGRlZCBp
biB0cnVuazsgdGhvc2UgaW5kaXZpZHVhbCBwYXRjaGVzIGFyZSBtZXJnZWQgaW50byB0aGUgcmVs
ZWFzZSBicmFuY2ggdW50aWwgaXQncyBzdGFibGUuCisgIDEuIEFuIGluZGl2aWR1YWwgcG9pbnQg
cmVsZWFzZSAodGhlIGBaYCBpbiBgWC5ZLlpgKSBpcyBtYWRlIGJ5IGNyZWF0aW5nIGEgdGFnIGZy
b20gdGhlIGJyYW5jaC4KKyAgMS4gUmVwZWF0IHN0ZXBzIDIgYW5kIDMgdGhyb3VnaG91dCBvbmUg
cmVsZWFzZSBjeWNsZSAoYXMgZGV0ZXJtaW5lZCBieSBmZWF0dXJlcyBvciB0aW1lKS4KKyAgMS4g
R28gYmFjayB0byBzdGVwIDEgdG8gY3JlYXRlIGFub3RoZXIgcmVsZWFzZSBicmFuY2ggYW5kIHNv
IG9uLgorCistLS0KKworVGhpcyBwYWdlIGlzIGJhc2VkIG9uIHRoZSBbTWFraW5nIEdXVCBCZXR0
ZXJdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vd2VidG9vbGtpdC9tYWtpbmdnd3RiZXR0ZXIuaHRt
bCkgZ3VpZGUgZnJvbSB0aGUgW0dvb2dsZSBXZWIgVG9vbGtpdF0oaHR0cDovL2NvZGUuZ29vZ2xl
LmNvbS93ZWJ0b29sa2l0LykgcHJvamVjdC4gIEV4Y2VwdCBhcyBvdGhlcndpc2UgW25vdGVkXSho
dHRwOi8vY29kZS5nb29nbGUuY29tL3BvbGljaWVzLmh0bWwjcmVzdHJpY3Rpb25zKSwgdGhlIGNv
bnRlbnQgb2YgdGhpcyBwYWdlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBbQ3JlYXRpdmUgQ29tbW9u
cyBBdHRyaWJ1dGlvbiAyLjUgTGljZW5zZV0oaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGlj
ZW5zZXMvYnkvMi41LykuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL0RvY3VtZW50YXRp
b24ubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL0RvY3VtZW50YXRpb24ubWQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGNh
MWFhYzc1OTkzNzJlMGQ5NTE5YTIxMGMzMzRhZWIzOTMwNjFjMAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L2RvY3MvRG9jdW1lbnRhdGlvbi5tZApAQCAtMCwwICsxLDE0IEBACitUaGlz
IHBhZ2UgbGlzdHMgYWxsIGRvY3VtZW50YXRpb24gd2lraSBwYWdlcyBmb3IgR29vZ2xlIFRlc3Qg
KioodGhlIFNWTiB0cnVuayB2ZXJzaW9uKSoqCistLSAqKmlmIHlvdSB1c2UgYSByZWxlYXNlZCB2
ZXJzaW9uIG9mIEdvb2dsZSBUZXN0LCBwbGVhc2UgcmVhZCB0aGUKK2RvY3VtZW50YXRpb24gZm9y
IHRoYXQgc3BlY2lmaWMgdmVyc2lvbiBpbnN0ZWFkLioqCisKKyAgKiBbUHJpbWVyXShQcmltZXIu
bWQpIC0tIHN0YXJ0IGhlcmUgaWYgeW91IGFyZSBuZXcgdG8gR29vZ2xlIFRlc3QuCisgICogW1Nh
bXBsZXNdKFNhbXBsZXMubWQpIC0tIGxlYXJuIGZyb20gZXhhbXBsZXMuCisgICogW0FkdmFuY2Vk
R3VpZGVdKEFkdmFuY2VkR3VpZGUubWQpIC0tIGxlYXJuIG1vcmUgYWJvdXQgR29vZ2xlIFRlc3Qu
CisgICogW1hjb2RlR3VpZGVdKFhjb2RlR3VpZGUubWQpIC0tIGhvdyB0byB1c2UgR29vZ2xlIFRl
c3QgaW4gWGNvZGUgb24gTWFjLgorICAqIFtGcmVxdWVudGx5LUFza2VkIFF1ZXN0aW9uc10oRkFR
Lm1kKSAtLSBjaGVjayBoZXJlIGJlZm9yZSBhc2tpbmcgYSBxdWVzdGlvbiBvbiB0aGUgbWFpbGlu
ZyBsaXN0LgorCitUbyBjb250cmlidXRlIGNvZGUgdG8gR29vZ2xlIFRlc3QsIHJlYWQ6CisKKyAg
KiBbRGV2R3VpZGVdKERldkd1aWRlLm1kKSAtLSByZWFkIHRoaXMgX2JlZm9yZV8gd3JpdGluZyB5
b3VyIGZpcnN0IHBhdGNoLgorICAqIFtQdW1wTWFudWFsXShQdW1wTWFudWFsLm1kKSAtLSBob3cg
d2UgZ2VuZXJhdGUgc29tZSBvZiBHb29nbGUgVGVzdCdzIHNvdXJjZSBmaWxlcy4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL0ZBUS5tZCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L2RvY3MvRkFRLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmZDZjYjcyMzhhMTliN2E3MWE0
YTk1YTYzYmU5M2UxOTIxNDUyZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2Nz
L0ZBUS5tZApAQCAtMCwwICsxLDEwODcgQEAKKworCitJZiB5b3UgY2Fubm90IGZpbmQgdGhlIGFu
c3dlciB0byB5b3VyIHF1ZXN0aW9uIGhlcmUsIGFuZCB5b3UgaGF2ZSByZWFkCitbUHJpbWVyXShQ
cmltZXIubWQpIGFuZCBbQWR2YW5jZWRHdWlkZV0oQWR2YW5jZWRHdWlkZS5tZCksIHNlbmQgaXQg
dG8KK2dvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBzLmNvbS4KKworIyMgV2h5IHNob3Vs
ZCBJIHVzZSBHb29nbGUgVGVzdCBpbnN0ZWFkIG9mIG15IGZhdm9yaXRlIEMrKyB0ZXN0aW5nIGZy
YW1ld29yaz8gIyMKKworRmlyc3QsIGxldCB1cyBzYXkgY2xlYXJseSB0aGF0IHdlIGRvbid0IHdh
bnQgdG8gZ2V0IGludG8gdGhlIGRlYmF0ZSBvZgord2hpY2ggQysrIHRlc3RpbmcgZnJhbWV3b3Jr
IGlzICoqdGhlIGJlc3QqKi4gIFRoZXJlIGV4aXN0IG1hbnkgZmluZQorZnJhbWV3b3JrcyBmb3Ig
d3JpdGluZyBDKysgdGVzdHMsIGFuZCB3ZSBoYXZlIHRyZW1lbmRvdXMgcmVzcGVjdCBmb3IKK3Ro
ZSBkZXZlbG9wZXJzIGFuZCB1c2VycyBvZiB0aGVtLiAgV2UgZG9uJ3QgdGhpbmsgdGhlcmUgaXMg
KG9yIHdpbGwKK2JlKSBhIHNpbmdsZSBiZXN0IGZyYW1ld29yayAtIHlvdSBoYXZlIHRvIHBpY2sg
dGhlIHJpZ2h0IHRvb2wgZm9yIHRoZQorcGFydGljdWxhciB0YXNrIHlvdSBhcmUgdGFja2xpbmcu
CisKK1dlIGNyZWF0ZWQgR29vZ2xlIFRlc3QgYmVjYXVzZSB3ZSBjb3VsZG4ndCBmaW5kIHRoZSBy
aWdodCBjb21iaW5hdGlvbgorb2YgZmVhdHVyZXMgYW5kIGNvbnZlbmllbmNlcyBpbiBhbiBleGlz
dGluZyBmcmFtZXdvcmsgdG8gc2F0aXNmeSBfb3VyXworbmVlZHMuICBUaGUgZm9sbG93aW5nIGlz
IGEgbGlzdCBvZiB0aGluZ3MgdGhhdCBfd2VfIGxpa2UgYWJvdXQgR29vZ2xlCitUZXN0LiAgV2Ug
ZG9uJ3QgY2xhaW0gdGhlbSB0byBiZSB1bmlxdWUgdG8gR29vZ2xlIFRlc3QgLSByYXRoZXIsIHRo
ZQorY29tYmluYXRpb24gb2YgdGhlbSBtYWtlcyBHb29nbGUgVGVzdCB0aGUgY2hvaWNlIGZvciB1
cy4gIFdlIGhvcGUgdGhpcworbGlzdCBjYW4gaGVscCB5b3UgZGVjaWRlIHdoZXRoZXIgaXQgaXMg
Zm9yIHlvdSB0b28uCisKKyAgKiBHb29nbGUgVGVzdCBpcyBkZXNpZ25lZCB0byBiZSBwb3J0YWJs
ZTogaXQgZG9lc24ndCByZXF1aXJlIGV4Y2VwdGlvbnMgb3IgUlRUSTsgaXQgd29ya3MgYXJvdW5k
IHZhcmlvdXMgYnVncyBpbiB2YXJpb3VzIGNvbXBpbGVycyBhbmQgZW52aXJvbm1lbnRzOyBldGMu
ICBBcyBhIHJlc3VsdCwgaXQgd29ya3Mgb24gTGludXgsIE1hYyBPUyBYLCBXaW5kb3dzIGFuZCBz
ZXZlcmFsIGVtYmVkZGVkIG9wZXJhdGluZyBzeXN0ZW1zLgorICAqIE5vbmZhdGFsIGFzc2VydGlv
bnMgKGBFWFBFQ1RfKmApIGhhdmUgcHJvdmVuIHRvIGJlIGdyZWF0IHRpbWUgc2F2ZXJzLCBhcyB0
aGV5IGFsbG93IGEgdGVzdCB0byByZXBvcnQgbXVsdGlwbGUgZmFpbHVyZXMgaW4gYSBzaW5nbGUg
ZWRpdC1jb21waWxlLXRlc3QgY3ljbGUuCisgICogSXQncyBlYXN5IHRvIHdyaXRlIGFzc2VydGlv
bnMgdGhhdCBnZW5lcmF0ZSBpbmZvcm1hdGl2ZSBtZXNzYWdlczogeW91IGp1c3QgdXNlIHRoZSBz
dHJlYW0gc3ludGF4IHRvIGFwcGVuZCBhbnkgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiwgZS5nLiBg
QVNTRVJUX0VRKDUsIEZvbyhpKSkgPDwgIiB3aGVyZSBpID0gIiA8PCBpO2AuICBJdCBkb2Vzbid0
IHJlcXVpcmUgYSBuZXcgc2V0IG9mIG1hY3JvcyBvciBzcGVjaWFsIGZ1bmN0aW9ucy4KKyAgKiBH
b29nbGUgVGVzdCBhdXRvbWF0aWNhbGx5IGRldGVjdHMgeW91ciB0ZXN0cyBhbmQgZG9lc24ndCBy
ZXF1aXJlIHlvdSB0byBlbnVtZXJhdGUgdGhlbSBpbiBvcmRlciB0byBydW4gdGhlbS4KKyAgKiBE
ZWF0aCB0ZXN0cyBhcmUgcHJldHR5IGhhbmR5IGZvciBlbnN1cmluZyB0aGF0IHlvdXIgYXNzZXJ0
cyBpbiBwcm9kdWN0aW9uIGNvZGUgYXJlIHRyaWdnZXJlZCBieSB0aGUgcmlnaHQgY29uZGl0aW9u
cy4KKyAgKiBgU0NPUEVEX1RSQUNFYCBoZWxwcyB5b3UgdW5kZXJzdGFuZCB0aGUgY29udGV4dCBv
ZiBhbiBhc3NlcnRpb24gZmFpbHVyZSB3aGVuIGl0IGNvbWVzIGZyb20gaW5zaWRlIGEgc3ViLXJv
dXRpbmUgb3IgbG9vcC4KKyAgKiBZb3UgY2FuIGRlY2lkZSB3aGljaCB0ZXN0cyB0byBydW4gdXNp
bmcgbmFtZSBwYXR0ZXJucy4gIFRoaXMgc2F2ZXMgdGltZSB3aGVuIHlvdSB3YW50IHRvIHF1aWNr
bHkgcmVwcm9kdWNlIGEgdGVzdCBmYWlsdXJlLgorICAqIEdvb2dsZSBUZXN0IGNhbiBnZW5lcmF0
ZSBYTUwgdGVzdCByZXN1bHQgcmVwb3J0cyB0aGF0IGNhbiBiZSBwYXJzZWQgYnkgcG9wdWxhciBj
b250aW51b3VzIGJ1aWxkIHN5c3RlbSBsaWtlIEh1ZHNvbi4KKyAgKiBTaW1wbGUgdGhpbmdzIGFy
ZSBlYXN5IGluIEdvb2dsZSBUZXN0LCB3aGlsZSBoYXJkIHRoaW5ncyBhcmUgcG9zc2libGU6IGlu
IGFkZGl0aW9uIHRvIGFkdmFuY2VkIGZlYXR1cmVzIGxpa2UgW2dsb2JhbCB0ZXN0IGVudmlyb25t
ZW50c10oQWR2YW5jZWRHdWlkZS5tZCNnbG9iYWwtc2V0LXVwLWFuZC10ZWFyLWRvd24pIGFuZCB0
ZXN0cyBwYXJhbWV0ZXJpemVkIGJ5IFt2YWx1ZXNdKEFkdmFuY2VkR3VpZGUubWQjdmFsdWUtcGFy
YW1ldGVyaXplZC10ZXN0cykgb3IgW3R5cGVzXShkb2NzL0FkdmFuY2VkR3VpZGUubWQjdHlwZWQt
dGVzdHMpLCBHb29nbGUgVGVzdCBzdXBwb3J0cyB2YXJpb3VzIHdheXMgZm9yIHRoZSB1c2VyIHRv
IGV4dGVuZCB0aGUgZnJhbWV3b3JrIC0tIGlmIEdvb2dsZSBUZXN0IGRvZXNuJ3QgZG8gc29tZXRo
aW5nIG91dCBvZiB0aGUgYm94LCBjaGFuY2VzIGFyZSB0aGF0IGEgdXNlciBjYW4gaW1wbGVtZW50
IHRoZSBmZWF0dXJlIHVzaW5nIEdvb2dsZSBUZXN0J3MgcHVibGljIEFQSSwgd2l0aG91dCBjaGFu
Z2luZyBHb29nbGUgVGVzdCBpdHNlbGYuICBJbiBwYXJ0aWN1bGFyLCB5b3UgY2FuOgorICAgICog
ZXhwYW5kIHlvdXIgdGVzdGluZyB2b2NhYnVsYXJ5IGJ5IGRlZmluaW5nIFtjdXN0b20gcHJlZGlj
YXRlc10oQWR2YW5jZWRHdWlkZS5tZCNwcmVkaWNhdGUtYXNzZXJ0aW9ucy1mb3ItYmV0dGVyLWVy
cm9yLW1lc3NhZ2VzKSwKKyAgICAqIHRlYWNoIEdvb2dsZSBUZXN0IGhvdyB0byBbcHJpbnQgeW91
ciB0eXBlc10oQWR2YW5jZWRHdWlkZS5tZCN0ZWFjaGluZy1nb29nbGUtdGVzdC1ob3ctdG8tcHJp
bnQteW91ci12YWx1ZXMpLAorICAgICogZGVmaW5lIHlvdXIgb3duIHRlc3RpbmcgbWFjcm9zIG9y
IHV0aWxpdGllcyBhbmQgdmVyaWZ5IHRoZW0gdXNpbmcgR29vZ2xlIFRlc3QncyBbU2VydmljZSBQ
cm92aWRlciBJbnRlcmZhY2VdKEFkdmFuY2VkR3VpZGUubWQjY2F0Y2hpbmctZmFpbHVyZXMpLCBh
bmQKKyAgICAqIHJlZmxlY3Qgb24gdGhlIHRlc3QgY2FzZXMgb3IgY2hhbmdlIHRoZSB0ZXN0IG91
dHB1dCBmb3JtYXQgYnkgaW50ZXJjZXB0aW5nIHRoZSBbdGVzdCBldmVudHNdKEFkdmFuY2VkR3Vp
ZGUubWQjZXh0ZW5kaW5nLWdvb2dsZS10ZXN0LWJ5LWhhbmRsaW5nLXRlc3QtZXZlbnRzKS4KKwor
IyMgSSdtIGdldHRpbmcgd2FybmluZ3Mgd2hlbiBjb21waWxpbmcgR29vZ2xlIFRlc3QuICBXb3Vs
ZCB5b3UgZml4IHRoZW0/ICMjCisKK1dlIHN0cml2ZSB0byBtaW5pbWl6ZSBjb21waWxlciB3YXJu
aW5ncyBHb29nbGUgVGVzdCBnZW5lcmF0ZXMuICBCZWZvcmUgcmVsZWFzaW5nIGEgbmV3IHZlcnNp
b24sIHdlIHRlc3QgdG8gbWFrZSBzdXJlIHRoYXQgaXQgZG9lc24ndCBnZW5lcmF0ZSB3YXJuaW5n
cyB3aGVuIGNvbXBpbGVkIHVzaW5nIGl0cyBDTWFrZSBzY3JpcHQgb24gV2luZG93cywgTGludXgs
IGFuZCBNYWMgT1MuCisKK1VuZm9ydHVuYXRlbHksIHRoaXMgZG9lc24ndCBtZWFuIHlvdSBhcmUg
Z3VhcmFudGVlZCB0byBzZWUgbm8gd2FybmluZ3Mgd2hlbiBjb21waWxpbmcgR29vZ2xlIFRlc3Qg
aW4geW91ciBlbnZpcm9ubWVudDoKKworICAqIFlvdSBtYXkgYmUgdXNpbmcgYSBkaWZmZXJlbnQg
Y29tcGlsZXIgYXMgd2UgdXNlLCBvciBhIGRpZmZlcmVudCB2ZXJzaW9uIG9mIHRoZSBzYW1lIGNv
bXBpbGVyLiAgV2UgY2Fubm90IHBvc3NpYmx5IHRlc3QgZm9yIGFsbCBjb21waWxlcnMuCisgICog
WW91IG1heSBiZSBjb21waWxpbmcgb24gYSBkaWZmZXJlbnQgcGxhdGZvcm0gYXMgd2UgZG8uCisg
ICogWW91ciBwcm9qZWN0IG1heSBiZSB1c2luZyBkaWZmZXJlbnQgY29tcGlsZXIgZmxhZ3MgYXMg
d2UgZG8uCisKK0l0IGlzIG5vdCBhbHdheXMgcG9zc2libGUgdG8gbWFrZSBHb29nbGUgVGVzdCB3
YXJuaW5nLWZyZWUgZm9yIGV2ZXJ5b25lLiAgT3IsIGl0IG1heSBub3QgYmUgZGVzaXJhYmxlIGlm
IHRoZSB3YXJuaW5nIGlzIHJhcmVseSBlbmFibGVkIGFuZCBmaXhpbmcgdGhlIHZpb2xhdGlvbnMg
bWFrZXMgdGhlIGNvZGUgbW9yZSBjb21wbGV4LgorCitJZiB5b3Ugc2VlIHdhcm5pbmdzIHdoZW4g
Y29tcGlsaW5nIEdvb2dsZSBUZXN0LCB3ZSBzdWdnZXN0IHRoYXQgeW91IHVzZSB0aGUgYC1pc3lz
dGVtYCBmbGFnIChhc3N1bWluZyB5b3VyIGFyZSB1c2luZyBHQ0MpIHRvIG1hcmsgR29vZ2xlIFRl
c3QgaGVhZGVycyBhcyBzeXN0ZW0gaGVhZGVycy4gIFRoYXQnbGwgc3VwcHJlc3Mgd2FybmluZ3Mg
ZnJvbSBHb29nbGUgVGVzdCBoZWFkZXJzLgorCisjIyBXaHkgc2hvdWxkIG5vdCB0ZXN0IGNhc2Ug
bmFtZXMgYW5kIHRlc3QgbmFtZXMgY29udGFpbiB1bmRlcnNjb3JlPyAjIworCitVbmRlcnNjb3Jl
IChgX2ApIGlzIHNwZWNpYWwsIGFzIEMrKyByZXNlcnZlcyB0aGUgZm9sbG93aW5nIHRvIGJlIHVz
ZWQgYnkKK3RoZSBjb21waWxlciBhbmQgdGhlIHN0YW5kYXJkIGxpYnJhcnk6CisKKyAgMS4gYW55
IGlkZW50aWZpZXIgdGhhdCBzdGFydHMgd2l0aCBhbiBgX2AgZm9sbG93ZWQgYnkgYW4gdXBwZXIt
Y2FzZSBsZXR0ZXIsIGFuZAorICAxLiBhbnkgaWRlbnRpZmllciB0aGF0IGNvbnRhaW5lcnMgdHdv
IGNvbnNlY3V0aXZlIHVuZGVyc2NvcmVzIChpLmUuIGBfX2ApIF9hbnl3aGVyZV8gaW4gaXRzIG5h
bWUuCisKK1VzZXIgY29kZSBpcyBfcHJvaGliaXRlZF8gZnJvbSB1c2luZyBzdWNoIGlkZW50aWZp
ZXJzLgorCitOb3cgbGV0J3MgbG9vayBhdCB3aGF0IHRoaXMgbWVhbnMgZm9yIGBURVNUYCBhbmQg
YFRFU1RfRmAuCisKK0N1cnJlbnRseSBgVEVTVChUZXN0Q2FzZU5hbWUsIFRlc3ROYW1lKWAgZ2Vu
ZXJhdGVzIGEgY2xhc3MgbmFtZWQKK2BUZXN0Q2FzZU5hbWVfVGVzdE5hbWVfVGVzdGAuICBXaGF0
IGhhcHBlbnMgaWYgYFRlc3RDYXNlTmFtZWAgb3IgYFRlc3ROYW1lYAorY29udGFpbnMgYF9gPwor
CisgIDEuIElmIGBUZXN0Q2FzZU5hbWVgIHN0YXJ0cyB3aXRoIGFuIGBfYCBmb2xsb3dlZCBieSBh
biB1cHBlci1jYXNlIGxldHRlciAoc2F5LCBgX0Zvb2ApLCB3ZSBlbmQgdXAgd2l0aCBgX0Zvb19U
ZXN0TmFtZV9UZXN0YCwgd2hpY2ggaXMgcmVzZXJ2ZWQgYW5kIHRodXMgaW52YWxpZC4KKyAgMS4g
SWYgYFRlc3RDYXNlTmFtZWAgZW5kcyB3aXRoIGFuIGBfYCAoc2F5LCBgRm9vX2ApLCB3ZSBnZXQg
YEZvb19fVGVzdE5hbWVfVGVzdGAsIHdoaWNoIGlzIGludmFsaWQuCisgIDEuIElmIGBUZXN0TmFt
ZWAgc3RhcnRzIHdpdGggYW4gYF9gIChzYXksIGBfQmFyYCksIHdlIGdldCBgVGVzdENhc2VOYW1l
X19CYXJfVGVzdGAsIHdoaWNoIGlzIGludmFsaWQuCisgIDEuIElmIGBUZXN0TmFtZWAgZW5kcyB3
aXRoIGFuIGBfYCAoc2F5LCBgQmFyX2ApLCB3ZSBnZXQgYFRlc3RDYXNlTmFtZV9CYXJfX1Rlc3Rg
LCB3aGljaCBpcyBpbnZhbGlkLgorCitTbyBjbGVhcmx5IGBUZXN0Q2FzZU5hbWVgIGFuZCBgVGVz
dE5hbWVgIGNhbm5vdCBzdGFydCBvciBlbmQgd2l0aCBgX2AKKyhBY3R1YWxseSwgYFRlc3RDYXNl
TmFtZWAgY2FuIHN0YXJ0IHdpdGggYF9gIC0tIGFzIGxvbmcgYXMgdGhlIGBfYCBpc24ndAorZm9s
bG93ZWQgYnkgYW4gdXBwZXItY2FzZSBsZXR0ZXIuICBCdXQgdGhhdCdzIGdldHRpbmcgY29tcGxp
Y2F0ZWQuICBTbworZm9yIHNpbXBsaWNpdHkgd2UganVzdCBzYXkgdGhhdCBpdCBjYW5ub3Qgc3Rh
cnQgd2l0aCBgX2AuKS4KKworSXQgbWF5IHNlZW0gZmluZSBmb3IgYFRlc3RDYXNlTmFtZWAgYW5k
IGBUZXN0TmFtZWAgdG8gY29udGFpbiBgX2AgaW4gdGhlCittaWRkbGUuICBIb3dldmVyLCBjb25z
aWRlciB0aGlzOgorYGBgIGNwcAorVEVTVChUaW1lLCBGbGllc19MaWtlX0FuX0Fycm93KSB7IC4u
LiB9CitURVNUKFRpbWVfRmxpZXMsIExpa2VfQW5fQXJyb3cpIHsgLi4uIH0KK2BgYAorCitOb3cs
IHRoZSB0d28gYFRFU1RgcyB3aWxsIGJvdGggZ2VuZXJhdGUgdGhlIHNhbWUgY2xhc3MKKyhgVGlt
ZV9GaWxlc19MaWtlX0FuX0Fycm93X1Rlc3RgKS4gIFRoYXQncyBub3QgZ29vZC4KKworU28gZm9y
IHNpbXBsaWNpdHksIHdlIGp1c3QgYXNrIHRoZSB1c2VycyB0byBhdm9pZCBgX2AgaW4gYFRlc3RD
YXNlTmFtZWAKK2FuZCBgVGVzdE5hbWVgLiAgVGhlIHJ1bGUgaXMgbW9yZSBjb25zdHJhaW5pbmcg
dGhhbiBuZWNlc3NhcnksIGJ1dCBpdCdzCitzaW1wbGUgYW5kIGVhc3kgdG8gcmVtZW1iZXIuICBJ
dCBhbHNvIGdpdmVzIEdvb2dsZSBUZXN0IHNvbWUgd2lnZ2xlCityb29tIGluIGNhc2UgaXRzIGlt
cGxlbWVudGF0aW9uIG5lZWRzIHRvIGNoYW5nZSBpbiB0aGUgZnV0dXJlLgorCitJZiB5b3Ugdmlv
bGF0ZSB0aGUgcnVsZSwgdGhlcmUgbWF5IG5vdCBiZSBpbW1lZGlhdGVseSBjb25zZXF1ZW5jZXMs
CitidXQgeW91ciB0ZXN0IG1heSAoanVzdCBtYXkpIGJyZWFrIHdpdGggYSBuZXcgY29tcGlsZXIg
KG9yIGEgbmV3Cit2ZXJzaW9uIG9mIHRoZSBjb21waWxlciB5b3UgYXJlIHVzaW5nKSBvciB3aXRo
IGEgbmV3IHZlcnNpb24gb2YgR29vZ2xlCitUZXN0LiAgVGhlcmVmb3JlIGl0J3MgYmVzdCB0byBm
b2xsb3cgdGhlIHJ1bGUuCisKKyMjIFdoeSBpcyBpdCBub3QgcmVjb21tZW5kZWQgdG8gaW5zdGFs
bCBhIHByZS1jb21waWxlZCBjb3B5IG9mIEdvb2dsZSBUZXN0IChmb3IgZXhhbXBsZSwgaW50byAv
dXNyL2xvY2FsKT8gIyMKKworSW4gdGhlIGVhcmx5IGRheXMsIHdlIHNhaWQgdGhhdCB5b3UgY291
bGQgaW5zdGFsbAorY29tcGlsZWQgR29vZ2xlIFRlc3QgbGlicmFyaWVzIG9uIGAqYG5peCBzeXN0
ZW1zIHVzaW5nIGBtYWtlIGluc3RhbGxgLgorVGhlbiBldmVyeSB1c2VyIG9mIHlvdXIgbWFjaGlu
ZSBjYW4gd3JpdGUgdGVzdHMgd2l0aG91dAorcmVjb21waWxpbmcgR29vZ2xlIFRlc3QuCisKK1Ro
aXMgc2VlbWVkIGxpa2UgYSBnb29kIGlkZWEsIGJ1dCBpdCBoYXMgYQorZ290LWNoYTogZXZlcnkg
dXNlciBuZWVkcyB0byBjb21waWxlIGhpcyB0ZXN0cyB1c2luZyB0aGUgX3NhbWVfIGNvbXBpbGVy
CitmbGFncyB1c2VkIHRvIGNvbXBpbGUgdGhlIGluc3RhbGxlZCBHb29nbGUgVGVzdCBsaWJyYXJp
ZXM7IG90aGVyd2lzZQoraGUgbWF5IHJ1biBpbnRvIHVuZGVmaW5lZCBiZWhhdmlvcnMgKGkuZS4g
dGhlIHRlc3RzIGNhbiBiZWhhdmUKK3N0cmFuZ2VseSBhbmQgbWF5IGV2ZW4gY3Jhc2ggZm9yIG5v
IG9idmlvdXMgcmVhc29ucykuCisKK1doeT8gIEJlY2F1c2UgQysrIGhhcyB0aGlzIHRoaW5nIGNh
bGxlZCB0aGUgT25lLURlZmluaXRpb24gUnVsZTogaWYKK3R3byBDKysgc291cmNlIGZpbGVzIGNv
bnRhaW4gZGlmZmVyZW50IGRlZmluaXRpb25zIG9mIHRoZSBzYW1lCitjbGFzcy9mdW5jdGlvbi92
YXJpYWJsZSwgYW5kIHlvdSBsaW5rIHRoZW0gdG9nZXRoZXIsIHlvdSB2aW9sYXRlIHRoZQorcnVs
ZS4gIFRoZSBsaW5rZXIgbWF5IG9yIG1heSBub3QgY2F0Y2ggdGhlIGVycm9yIChpbiBtYW55IGNh
c2VzIGl0J3MKK25vdCByZXF1aXJlZCBieSB0aGUgQysrIHN0YW5kYXJkIHRvIGNhdGNoIHRoZSB2
aW9sYXRpb24pLiAgSWYgaXQKK2RvZXNuJ3QsIHlvdSBnZXQgc3RyYW5nZSBydW4tdGltZSBiZWhh
dmlvcnMgdGhhdCBhcmUgdW5leHBlY3RlZCBhbmQKK2hhcmQgdG8gZGVidWcuCisKK0lmIHlvdSBj
b21waWxlIEdvb2dsZSBUZXN0IGFuZCB5b3VyIHRlc3QgY29kZSB1c2luZyBkaWZmZXJlbnQgY29t
cGlsZXIKK2ZsYWdzLCB0aGV5IG1heSBzZWUgZGlmZmVyZW50IGRlZmluaXRpb25zIG9mIHRoZSBz
YW1lCitjbGFzcy9mdW5jdGlvbi92YXJpYWJsZSAoZS5nLiBkdWUgdG8gdGhlIHVzZSBvZiBgI2lm
YCBpbiBHb29nbGUgVGVzdCkuCitUaGVyZWZvcmUsIGZvciB5b3VyIHNhbml0eSwgd2UgcmVjb21t
ZW5kIHRvIGF2b2lkIGluc3RhbGxpbmcgcHJlLWNvbXBpbGVkCitHb29nbGUgVGVzdCBsaWJyYXJp
ZXMuICBJbnN0ZWFkLCBlYWNoIHByb2plY3Qgc2hvdWxkIGNvbXBpbGUKK0dvb2dsZSBUZXN0IGl0
c2VsZiBzdWNoIHRoYXQgaXQgY2FuIGJlIHN1cmUgdGhhdCB0aGUgc2FtZSBmbGFncyBhcmUKK3Vz
ZWQgZm9yIGJvdGggR29vZ2xlIFRlc3QgYW5kIHRoZSB0ZXN0cy4KKworIyMgSG93IGRvIEkgZ2Vu
ZXJhdGUgNjQtYml0IGJpbmFyaWVzIG9uIFdpbmRvd3MgKHVzaW5nIFZpc3VhbCBTdHVkaW8gMjAw
OCk/ICMjCisKKyhBbnN3ZXJlZCBieSBUcmV2b3IgUm9iaW5zb24pCisKK0xvYWQgdGhlIHN1cHBs
aWVkIFZpc3VhbCBTdHVkaW8gc29sdXRpb24gZmlsZSwgZWl0aGVyIGBtc3ZjXGd0ZXN0LW1kLnNs
bmAgb3IKK2Btc3ZjXGd0ZXN0LnNsbmAuIEdvIHRocm91Z2ggdGhlIG1pZ3JhdGlvbiB3aXphcmQg
dG8gbWlncmF0ZSB0aGUKK3NvbHV0aW9uIGFuZCBwcm9qZWN0IGZpbGVzIHRvIFZpc3VhbCBTdHVk
aW8gMjAwOC4gU2VsZWN0CitgQ29uZmlndXJhdGlvbiBNYW5hZ2VyLi4uYCBmcm9tIHRoZSBgQnVp
bGRgIG1lbnUuIFNlbGVjdCBgPE5ldy4uLj5gIGZyb20KK3RoZSBgQWN0aXZlIHNvbHV0aW9uIHBs
YXRmb3JtYCBkcm9wZG93bi4gIFNlbGVjdCBgeDY0YCBmcm9tIHRoZSBuZXcKK3BsYXRmb3JtIGRy
b3Bkb3duLCBsZWF2ZSBgQ29weSBzZXR0aW5ncyBmcm9tYCBzZXQgdG8gYFdpbjMyYCBhbmQKK2BD
cmVhdGUgbmV3IHByb2plY3QgcGxhdGZvcm1zYCBjaGVja2VkLCB0aGVuIGNsaWNrIGBPS2AuIFlv
dSBub3cgaGF2ZQorYFdpbjMyYCBhbmQgYHg2NGAgcGxhdGZvcm0gY29uZmlndXJhdGlvbnMsIHNl
bGVjdGFibGUgZnJvbSB0aGUKK2BTdGFuZGFyZGAgdG9vbGJhciwgd2hpY2ggYWxsb3cgeW91IHRv
IHRvZ2dsZSBiZXR3ZWVuIGJ1aWxkaW5nIDMyLWJpdCBvcgorNjQtYml0IGJpbmFyaWVzIChvciBi
b3RoIGF0IG9uY2UgdXNpbmcgQmF0Y2ggQnVpbGQpLgorCitJbiBvcmRlciB0byBwcmV2ZW50IGJ1
aWxkIG91dHB1dCBmaWxlcyBmcm9tIG92ZXJ3cml0aW5nIG9uZSBhbm90aGVyLAoreW91J2xsIG5l
ZWQgdG8gY2hhbmdlIHRoZSBgSW50ZXJtZWRpYXRlIERpcmVjdG9yeWAgc2V0dGluZ3MgZm9yIHRo
ZQorbmV3bHkgY3JlYXRlZCBwbGF0Zm9ybSBjb25maWd1cmF0aW9uIGFjcm9zcyBhbGwgdGhlIHBy
b2plY3RzLiBUbyBkbwordGhpcywgbXVsdGktc2VsZWN0IChlLmcuIHVzaW5nIHNoaWZ0LWNsaWNr
KSBhbGwgcHJvamVjdHMgKGJ1dCBub3QgdGhlCitzb2x1dGlvbikgaW4gdGhlIGBTb2x1dGlvbiBF
eHBsb3JlcmAuIFJpZ2h0LWNsaWNrIG9uZSBvZiB0aGVtIGFuZAorc2VsZWN0IGBQcm9wZXJ0aWVz
YC4gSW4gdGhlIGxlZnQgcGFuZSwgc2VsZWN0IGBDb25maWd1cmF0aW9uIFByb3BlcnRpZXNgLAor
YW5kIGZyb20gdGhlIGBDb25maWd1cmF0aW9uYCBkcm9wZG93biwgc2VsZWN0IGBBbGwgQ29uZmln
dXJhdGlvbnNgLgorTWFrZSBzdXJlIHRoZSBzZWxlY3RlZCBwbGF0Zm9ybSBpcyBgeDY0YC4gRm9y
IHRoZQorYEludGVybWVkaWF0ZSBEaXJlY3RvcnlgIHNldHRpbmcsIGNoYW5nZSB0aGUgdmFsdWUg
ZnJvbQorYCQoUGxhdGZvcm1OYW1lKVwkKENvbmZpZ3VyYXRpb25OYW1lKWAgdG8KK2AkKE91dERp
cilcJChQcm9qZWN0TmFtZSlgLiBDbGljayBgT0tgIGFuZCB0aGVuIGJ1aWxkIHRoZQorc29sdXRp
b24uIFdoZW4gdGhlIGJ1aWxkIGlzIGNvbXBsZXRlLCB0aGUgNjQtYml0IGJpbmFyaWVzIHdpbGwg
YmUgaW4KK3RoZSBgbXN2Y1x4NjRcRGVidWdgIGRpcmVjdG9yeS4KKworIyMgQ2FuIEkgdXNlIEdv
b2dsZSBUZXN0IG9uIE1pbkdXPyAjIworCitXZSBoYXZlbid0IHRlc3RlZCB0aGlzIG91cnNlbHZl
cywgYnV0IFBlciBBYnJhaGFtc2VuIHJlcG9ydGVkIHRoYXQgaGUKK3dhcyBhYmxlIHRvIGNvbXBp
bGUgYW5kIGluc3RhbGwgR29vZ2xlIFRlc3Qgc3VjY2Vzc2Z1bGx5IHdoZW4gdXNpbmcKK01pbkdX
IGZyb20gQ3lnd2luLiAgWW91J2xsIG5lZWQgdG8gY29uZmlndXJlIGl0IHdpdGg6CisKK2BQQVRI
L1RPL2NvbmZpZ3VyZSBDQz0iZ2NjIC1tbm8tY3lnd2luIiBDWFg9ImcrKyAtbW5vLWN5Z3dpbiJg
CisKK1lvdSBzaG91bGQgYmUgYWJsZSB0byByZXBsYWNlIHRoZSBgLW1uby1jeWd3aW5gIG9wdGlv
biB3aXRoIGRpcmVjdCBsaW5rcwordG8gdGhlIHJlYWwgTWluR1cgYmluYXJpZXMsIGJ1dCB3ZSBo
YXZlbid0IHRyaWVkIHRoYXQuCisKK0NhdmVhdHM6CisKKyAgKiBUaGVyZSBhcmUgbWFueSB3YXJu
aW5ncyB3aGVuIGNvbXBpbGluZy4KKyAgKiBgbWFrZSBjaGVja2Agd2lsbCBwcm9kdWNlIHNvbWUg
ZXJyb3JzIGFzIG5vdCBhbGwgdGVzdHMgZm9yIEdvb2dsZSBUZXN0IGl0c2VsZiBhcmUgY29tcGF0
aWJsZSB3aXRoIE1pbkdXLgorCitXZSBhbHNvIGhhdmUgcmVwb3J0cyBvbiBzdWNjZXNzZnVsIGNy
b3NzIGNvbXBpbGF0aW9uIG9mIEdvb2dsZSBUZXN0CitNaW5HVyBiaW5hcmllcyBvbiBMaW51eCB1
c2luZworW3RoZXNlIGluc3RydWN0aW9uc10oaHR0cDovL3dpa2kud3h3aWRnZXRzLm9yZy9Dcm9z
cy1Db21waWxpbmdfVW5kZXJfTGludXgjQ3Jvc3MtY29tcGlsaW5nX3VuZGVyX0xpbnV4X2Zvcl9N
U19XaW5kb3dzKQorb24gdGhlIFd4V2lkZ2V0cyBzaXRlLgorCitQbGVhc2UgY29udGFjdCBgZ29v
Z2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tYCBpZiB5b3UgYXJlCitpbnRlcmVzdGVk
IGluIGltcHJvdmluZyB0aGUgc3VwcG9ydCBmb3IgTWluR1cuCisKKyMjIFdoeSBkb2VzIEdvb2ds
ZSBUZXN0IHN1cHBvcnQgRVhQRUNUXF9FUShOVUxMLCBwdHIpIGFuZCBBU1NFUlRcX0VRKE5VTEws
IHB0cikgYnV0IG5vdCBFWFBFQ1RcX05FKE5VTEwsIHB0cikgYW5kIEFTU0VSVFxfTkUoTlVMTCwg
cHRyKT8gIyMKKworRHVlIHRvIHNvbWUgcGVjdWxpYXJpdHkgb2YgQysrLCBpdCByZXF1aXJlcyBz
b21lIG5vbi10cml2aWFsIHRlbXBsYXRlCittZXRhIHByb2dyYW1taW5nIHRyaWNrcyB0byBzdXBw
b3J0IHVzaW5nIGBOVUxMYCBhcyBhbiBhcmd1bWVudCBvZiB0aGUKK2BFWFBFQ1RfWFgoKWAgYW5k
IGBBU1NFUlRfWFgoKWAgbWFjcm9zLiBUaGVyZWZvcmUgd2Ugb25seSBkbyBpdCB3aGVyZQoraXQn
cyBtb3N0IG5lZWRlZCAob3RoZXJ3aXNlIHdlIG1ha2UgdGhlIGltcGxlbWVudGF0aW9uIG9mIEdv
b2dsZSBUZXN0CitoYXJkZXIgdG8gbWFpbnRhaW4gYW5kIG1vcmUgZXJyb3ItcHJvbmUgdGhhbiBu
ZWNlc3NhcnkpLgorCitUaGUgYEVYUEVDVF9FUSgpYCBtYWNybyB0YWtlcyB0aGUgX2V4cGVjdGVk
XyB2YWx1ZSBhcyBpdHMgZmlyc3QKK2FyZ3VtZW50IGFuZCB0aGUgX2FjdHVhbF8gdmFsdWUgYXMg
dGhlIHNlY29uZC4gSXQncyByZWFzb25hYmxlIHRoYXQKK3NvbWVvbmUgd2FudHMgdG8gd3JpdGUg
YEVYUEVDVF9FUShOVUxMLCBzb21lX2V4cHJlc3Npb24pYCwgYW5kIHRoaXMKK2luZGVlZCB3YXMg
cmVxdWVzdGVkIHNldmVyYWwgdGltZXMuIFRoZXJlZm9yZSB3ZSBpbXBsZW1lbnRlZCBpdC4KKwor
VGhlIG5lZWQgZm9yIGBFWFBFQ1RfTkUoTlVMTCwgcHRyKWAgaXNuJ3QgbmVhcmx5IGFzIHN0cm9u
Zy4gV2hlbiB0aGUKK2Fzc2VydGlvbiBmYWlscywgeW91IGFscmVhZHkga25vdyB0aGF0IGBwdHJg
IG11c3QgYmUgYE5VTExgLCBzbyBpdAorZG9lc24ndCBhZGQgYW55IGluZm9ybWF0aW9uIHRvIHBy
aW50IHB0ciBpbiB0aGlzIGNhc2UuIFRoYXQgbWVhbnMKK2BFWFBFQ1RfVFJVRShwdHIgIT0gTlVM
TClgIHdvcmtzIGp1c3QgYXMgd2VsbC4KKworSWYgd2Ugd2VyZSB0byBzdXBwb3J0IGBFWFBFQ1Rf
TkUoTlVMTCwgcHRyKWAsIGZvciBjb25zaXN0ZW5jeSB3ZSdsbAoraGF2ZSB0byBzdXBwb3J0IGBF
WFBFQ1RfTkUocHRyLCBOVUxMKWAgYXMgd2VsbCwgYXMgdW5saWtlIGBFWFBFQ1RfRVFgLAord2Ug
ZG9uJ3QgaGF2ZSBhIGNvbnZlbnRpb24gb24gdGhlIG9yZGVyIG9mIHRoZSB0d28gYXJndW1lbnRz
IGZvcgorYEVYUEVDVF9ORWAuIFRoaXMgbWVhbnMgdXNpbmcgdGhlIHRlbXBsYXRlIG1ldGEgcHJv
Z3JhbW1pbmcgdHJpY2tzCit0d2ljZSBpbiB0aGUgaW1wbGVtZW50YXRpb24sIG1ha2luZyBpdCBl
dmVuIGhhcmRlciB0byB1bmRlcnN0YW5kIGFuZAorbWFpbnRhaW4uIFdlIGJlbGlldmUgdGhlIGJl
bmVmaXQgZG9lc24ndCBqdXN0aWZ5IHRoZSBjb3N0LgorCitGaW5hbGx5LCB3aXRoIHRoZSBncm93
dGggb2YgR29vZ2xlIE1vY2sncyBbbWF0Y2hlcl0oLi4vLi4vZ29vZ2xlbW9jay9kb2NzL0Nvb2tC
b29rLm1kI3VzaW5nLW1hdGNoZXJzLWluLWdvb2dsZS10ZXN0LWFzc2VydGlvbnMpIGxpYnJhcnks
IHdlIGFyZQorZW5jb3VyYWdpbmcgcGVvcGxlIHRvIHVzZSB0aGUgdW5pZmllZCBgRVhQRUNUX1RI
QVQodmFsdWUsIG1hdGNoZXIpYAorc3ludGF4IG1vcmUgb2Z0ZW4gaW4gdGVzdHMuIE9uZSBzaWdu
aWZpY2FudCBhZHZhbnRhZ2Ugb2YgdGhlIG1hdGNoZXIKK2FwcHJvYWNoIGlzIHRoYXQgbWF0Y2hl
cnMgY2FuIGJlIGVhc2lseSBjb21iaW5lZCB0byBmb3JtIG5ldyBtYXRjaGVycywKK3doaWxlIHRo
ZSBgRVhQRUNUX05FYCwgZXRjLCBtYWNyb3MgY2Fubm90IGJlIGVhc2lseQorY29tYmluZWQuIFRo
ZXJlZm9yZSB3ZSB3YW50IHRvIGludmVzdCBtb3JlIGluIHRoZSBtYXRjaGVycyB0aGFuIGluIHRo
ZQorYEVYUEVDVF9YWCgpYCBtYWNyb3MuCisKKyMjIERvZXMgR29vZ2xlIFRlc3Qgc3VwcG9ydCBy
dW5uaW5nIHRlc3RzIGluIHBhcmFsbGVsPyAjIworCitUZXN0IHJ1bm5lcnMgdGVuZCB0byBiZSB0
aWdodGx5IGNvdXBsZWQgd2l0aCB0aGUgYnVpbGQvdGVzdAorZW52aXJvbm1lbnQsIGFuZCBHb29n
bGUgVGVzdCBkb2Vzbid0IHRyeSB0byBzb2x2ZSB0aGUgcHJvYmxlbSBvZgorcnVubmluZyB0ZXN0
cyBpbiBwYXJhbGxlbC4gIEluc3RlYWQsIHdlIHRyaWVkIHRvIG1ha2UgR29vZ2xlIFRlc3Qgd29y
aworbmljZWx5IHdpdGggdGVzdCBydW5uZXJzLiAgRm9yIGV4YW1wbGUsIEdvb2dsZSBUZXN0J3Mg
WE1MIHJlcG9ydAorY29udGFpbnMgdGhlIHRpbWUgc3BlbnQgb24gZWFjaCB0ZXN0LCBhbmQgaXRz
IGBndGVzdF9saXN0X3Rlc3RzYCBhbmQKK2BndGVzdF9maWx0ZXJgIGZsYWdzIGNhbiBiZSB1c2Vk
IGZvciBzcGxpdHRpbmcgdGhlIGV4ZWN1dGlvbiBvZiB0ZXN0CittZXRob2RzIGludG8gbXVsdGlw
bGUgcHJvY2Vzc2VzLiAgVGhlc2UgZnVuY3Rpb25hbGl0aWVzIGNhbiBoZWxwIHRoZQordGVzdCBy
dW5uZXIgcnVuIHRoZSB0ZXN0cyBpbiBwYXJhbGxlbC4KKworIyMgV2h5IGRvbid0IEdvb2dsZSBU
ZXN0IHJ1biB0aGUgdGVzdHMgaW4gZGlmZmVyZW50IHRocmVhZHMgdG8gc3BlZWQgdGhpbmdzIHVw
PyAjIworCitJdCdzIGRpZmZpY3VsdCB0byB3cml0ZSB0aHJlYWQtc2FmZSBjb2RlLiAgTW9zdCB0
ZXN0cyBhcmUgbm90IHdyaXR0ZW4KK3dpdGggdGhyZWFkLXNhZmV0eSBpbiBtaW5kLCBhbmQgdGh1
cyBtYXkgbm90IHdvcmsgY29ycmVjdGx5IGluIGEKK211bHRpLXRocmVhZGVkIHNldHRpbmcuCisK
K0lmIHlvdSB0aGluayBhYm91dCBpdCwgaXQncyBhbHJlYWR5IGhhcmQgdG8gbWFrZSB5b3VyIGNv
ZGUgd29yayB3aGVuCit5b3Uga25vdyB3aGF0IG90aGVyIHRocmVhZHMgYXJlIGRvaW5nLiAgSXQn
cyBtdWNoIGhhcmRlciwgYW5kCitzb21ldGltZXMgZXZlbiBpbXBvc3NpYmxlLCB0byBtYWtlIHlv
dXIgY29kZSB3b3JrIHdoZW4geW91IGRvbid0IGtub3cKK3doYXQgb3RoZXIgdGhyZWFkcyBhcmUg
ZG9pbmcgKHJlbWVtYmVyIHRoYXQgdGVzdCBtZXRob2RzIGNhbiBiZSBhZGRlZCwKK2RlbGV0ZWQs
IG9yIG1vZGlmaWVkIGFmdGVyIHlvdXIgdGVzdCB3YXMgd3JpdHRlbikuICBJZiB5b3Ugd2FudCB0
byBydW4KK3RoZSB0ZXN0cyBpbiBwYXJhbGxlbCwgeW91J2QgYmV0dGVyIHJ1biB0aGVtIGluIGRp
ZmZlcmVudCBwcm9jZXNzZXMuCisKKyMjIFdoeSBhcmVuJ3QgR29vZ2xlIFRlc3QgYXNzZXJ0aW9u
cyBpbXBsZW1lbnRlZCB1c2luZyBleGNlcHRpb25zPyAjIworCitPdXIgb3JpZ2luYWwgbW90aXZh
dGlvbiB3YXMgdG8gYmUgYWJsZSB0byB1c2UgR29vZ2xlIFRlc3QgaW4gcHJvamVjdHMKK3RoYXQg
ZGlzYWJsZSBleGNlcHRpb25zLiAgTGF0ZXIgd2UgcmVhbGl6ZWQgc29tZSBhZGRpdGlvbmFsIGJl
bmVmaXRzCitvZiB0aGlzIGFwcHJvYWNoOgorCisgIDEuIFRocm93aW5nIGluIGEgZGVzdHJ1Y3Rv
ciBpcyB1bmRlZmluZWQgYmVoYXZpb3IgaW4gQysrLiAgTm90IHVzaW5nIGV4Y2VwdGlvbnMgbWVh
bnMgR29vZ2xlIFRlc3QncyBhc3NlcnRpb25zIGFyZSBzYWZlIHRvIHVzZSBpbiBkZXN0cnVjdG9y
cy4KKyAgMS4gVGhlIGBFWFBFQ1RfKmAgZmFtaWx5IG9mIG1hY3JvcyB3aWxsIGNvbnRpbnVlIGV2
ZW4gYWZ0ZXIgYSBmYWlsdXJlLCBhbGxvd2luZyBtdWx0aXBsZSBmYWlsdXJlcyBpbiBhIGBURVNU
YCB0byBiZSByZXBvcnRlZCBpbiBhIHNpbmdsZSBydW4uIFRoaXMgaXMgYSBwb3B1bGFyIGZlYXR1
cmUsIGFzIGluIEMrKyB0aGUgZWRpdC1jb21waWxlLXRlc3QgY3ljbGUgaXMgdXN1YWxseSBxdWl0
ZSBsb25nIGFuZCBiZWluZyBhYmxlIHRvIGZpeGluZyBtb3JlIHRoYW4gb25lIHRoaW5nIGF0IGEg
dGltZSBpcyBhIGJsZXNzaW5nLgorICAxLiBJZiBhc3NlcnRpb25zIGFyZSBpbXBsZW1lbnRlZCB1
c2luZyBleGNlcHRpb25zLCBhIHRlc3QgbWF5IGZhbHNlbHkgaWdub3JlIGEgZmFpbHVyZSBpZiBp
dCdzIGNhdWdodCBieSB1c2VyIGNvZGU6CitgYGAgY3BwCit0cnkgeyAuLi4gQVNTRVJUX1RSVUUo
Li4uKSAuLi4gfQorY2F0Y2ggKC4uLikgeyAuLi4gfQorYGBgCitUaGUgYWJvdmUgY29kZSB3aWxs
IHBhc3MgZXZlbiBpZiB0aGUgYEFTU0VSVF9UUlVFYCB0aHJvd3MuICBXaGlsZSBpdCdzIHVubGlr
ZWx5IGZvciBzb21lb25lIHRvIHdyaXRlIHRoaXMgaW4gYSB0ZXN0LCBpdCdzIHBvc3NpYmxlIHRv
IHJ1biBpbnRvIHRoaXMgcGF0dGVybiB3aGVuIHlvdSB3cml0ZSBhc3NlcnRpb25zIGluIGNhbGxi
YWNrcyB0aGF0IGFyZSBjYWxsZWQgYnkgdGhlIGNvZGUgdW5kZXIgdGVzdC4KKworVGhlIGRvd25z
aWRlIG9mIG5vdCB1c2luZyBleGNlcHRpb25zIGlzIHRoYXQgYEFTU0VSVF8qYCAoaW1wbGVtZW50
ZWQKK3VzaW5nIGByZXR1cm5gKSB3aWxsIG9ubHkgYWJvcnQgdGhlIGN1cnJlbnQgZnVuY3Rpb24s
IG5vdCB0aGUgY3VycmVudAorYFRFU1RgLgorCisjIyBXaHkgZG8gd2UgdXNlIHR3byBkaWZmZXJl
bnQgbWFjcm9zIGZvciB0ZXN0cyB3aXRoIGFuZCB3aXRob3V0IGZpeHR1cmVzPyAjIworCitVbmZv
cnR1bmF0ZWx5LCBDKysncyBtYWNybyBzeXN0ZW0gZG9lc24ndCBhbGxvdyB1cyB0byB1c2UgdGhl
IHNhbWUKK21hY3JvIGZvciBib3RoIGNhc2VzLiAgT25lIHBvc3NpYmlsaXR5IGlzIHRvIHByb3Zp
ZGUgb25seSBvbmUgbWFjcm8KK2ZvciB0ZXN0cyB3aXRoIGZpeHR1cmVzLCBhbmQgcmVxdWlyZSB0
aGUgdXNlciB0byBkZWZpbmUgYW4gZW1wdHkKK2ZpeHR1cmUgc29tZXRpbWVzOgorCitgYGAgY3Bw
CitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7fTsKKworVEVTVF9GKEZv
b1Rlc3QsIERvZXNUaGlzKSB7IC4uLiB9CitgYGAKK29yCitgYGAgY3BwCit0eXBlZGVmIDo6dGVz
dGluZzo6VGVzdCBGb29UZXN0OworCitURVNUX0YoRm9vVGVzdCwgRG9lc1RoYXQpIHsgLi4uIH0K
K2BgYAorCitZZXQsIG1hbnkgcGVvcGxlIHRoaW5rIHRoaXMgaXMgb25lIGxpbmUgdG9vIG1hbnku
IDotKSBPdXIgZ29hbCB3YXMgdG8KK21ha2UgaXQgcmVhbGx5IGVhc3kgdG8gd3JpdGUgdGVzdHMs
IHNvIHdlIHRyaWVkIHRvIG1ha2Ugc2ltcGxlIHRlc3RzCit0cml2aWFsIHRvIGNyZWF0ZS4gIFRo
YXQgbWVhbnMgdXNpbmcgYSBzZXBhcmF0ZSBtYWNybyBmb3Igc3VjaCB0ZXN0cy4KKworV2UgdGhp
bmsgbmVpdGhlciBhcHByb2FjaCBpcyBpZGVhbCwgeWV0IGVpdGhlciBvZiB0aGVtIGlzIHJlYXNv
bmFibGUuCitJbiB0aGUgZW5kLCBpdCBwcm9iYWJseSBkb2Vzbid0IG1hdHRlciBtdWNoIGVpdGhl
ciB3YXkuCisKKyMjIFdoeSBkb24ndCB3ZSB1c2Ugc3RydWN0cyBhcyB0ZXN0IGZpeHR1cmVzPyAj
IworCitXZSBsaWtlIHRvIHVzZSBzdHJ1Y3RzIG9ubHkgd2hlbiByZXByZXNlbnRpbmcgcGFzc2l2
ZSBkYXRhLiAgVGhpcworZGlzdGluY3Rpb24gYmV0d2VlbiBzdHJ1Y3RzIGFuZCBjbGFzc2VzIGlz
IGdvb2QgZm9yIGRvY3VtZW50aW5nIHRoZQoraW50ZW50IG9mIHRoZSBjb2RlJ3MgYXV0aG9yLiAg
U2luY2UgdGVzdCBmaXh0dXJlcyBoYXZlIGxvZ2ljIGxpa2UKK2BTZXRVcCgpYCBhbmQgYFRlYXJE
b3duKClgLCB0aGV5IGFyZSBiZXR0ZXIgZGVmaW5lZCBhcyBjbGFzc2VzLgorCisjIyBXaHkgYXJl
IGRlYXRoIHRlc3RzIGltcGxlbWVudGVkIGFzIGFzc2VydGlvbnMgaW5zdGVhZCBvZiB1c2luZyBh
IHRlc3QgcnVubmVyPyAjIworCitPdXIgZ29hbCB3YXMgdG8gbWFrZSBkZWF0aCB0ZXN0cyBhcyBj
b252ZW5pZW50IGZvciBhIHVzZXIgYXMgQysrCitwb3NzaWJseSBhbGxvd3MuICBJbiBwYXJ0aWN1
bGFyOgorCisgICogVGhlIHJ1bm5lci1zdHlsZSByZXF1aXJlcyB0byBzcGxpdCB0aGUgaW5mb3Jt
YXRpb24gaW50byB0d28gcGllY2VzOiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZGVhdGggdGVzdCBp
dHNlbGYsIGFuZCB0aGUgc3BlY2lmaWNhdGlvbiBmb3IgdGhlIHJ1bm5lciBvbiBob3cgdG8gcnVu
IHRoZSBkZWF0aCB0ZXN0IGFuZCB3aGF0IHRvIGV4cGVjdC4gIFRoZSBkZWF0aCB0ZXN0IHdvdWxk
IGJlIHdyaXR0ZW4gaW4gQysrLCB3aGlsZSB0aGUgcnVubmVyIHNwZWMgbWF5IG9yIG1heSBub3Qg
YmUuICBBIHVzZXIgbmVlZHMgdG8gY2FyZWZ1bGx5IGtlZXAgdGhlIHR3byBpbiBzeW5jLiBgQVNT
RVJUX0RFQVRIKHN0YXRlbWVudCwgZXhwZWN0ZWRfbWVzc2FnZSlgIHNwZWNpZmllcyBhbGwgbmVj
ZXNzYXJ5IGluZm9ybWF0aW9uIGluIG9uZSBwbGFjZSwgaW4gb25lIGxhbmd1YWdlLCB3aXRob3V0
IGJvaWxlcnBsYXRlIGNvZGUuIEl0IGlzIHZlcnkgZGVjbGFyYXRpdmUuCisgICogYEFTU0VSVF9E
RUFUSGAgaGFzIGEgc2ltaWxhciBzeW50YXggYW5kIGVycm9yLXJlcG9ydGluZyBzZW1hbnRpY3Mg
YXMgb3RoZXIgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucywgYW5kIHRodXMgaXMgZWFzeSB0byBsZWFy
bi4KKyAgKiBgQVNTRVJUX0RFQVRIYCBjYW4gYmUgbWl4ZWQgd2l0aCBvdGhlciBhc3NlcnRpb25z
IGFuZCBvdGhlciBsb2dpYyBhdCB5b3VyIHdpbGwuICBZb3UgYXJlIG5vdCBsaW1pdGVkIHRvIG9u
ZSBkZWF0aCB0ZXN0IHBlciB0ZXN0IG1ldGhvZC4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gd3JpdGUg
c29tZXRoaW5nIGxpa2U6CitgYGAgY3BwCisgICAgaWYgKEZvb0NvbmRpdGlvbigpKSB7CisgICAg
ICBBU1NFUlRfREVBVEgoQmFyKCksICJibGFoIik7CisgICAgfSBlbHNlIHsKKyAgICAgIEFTU0VS
VF9FUSg1LCBCYXIoKSk7CisgICAgfQorYGBgCitJZiB5b3UgcHJlZmVyIG9uZSBkZWF0aCB0ZXN0
IHBlciB0ZXN0IG1ldGhvZCwgeW91IGNhbiB3cml0ZSB5b3VyIHRlc3RzIGluIHRoYXQgc3R5bGUg
dG9vLCBidXQgd2UgZG9uJ3Qgd2FudCB0byBpbXBvc2UgdGhhdCBvbiB0aGUgdXNlcnMuICBUaGUg
ZmV3ZXIgYXJ0aWZpY2lhbCBsaW1pdGF0aW9ucyB0aGUgYmV0dGVyLgorICAqIGBBU1NFUlRfREVB
VEhgIGNhbiByZWZlcmVuY2UgbG9jYWwgdmFyaWFibGVzIGluIHRoZSBjdXJyZW50IGZ1bmN0aW9u
LCBhbmQgeW91IGNhbiBkZWNpZGUgaG93IG1hbnkgZGVhdGggdGVzdHMgeW91IHdhbnQgYmFzZWQg
b24gcnVuLXRpbWUgaW5mb3JtYXRpb24uICBGb3IgZXhhbXBsZSwKK2BgYCBjcHAKKyAgICBjb25z
dCBpbnQgY291bnQgPSBHZXRDb3VudCgpOyAgLy8gT25seSBrbm93biBhdCBydW4gdGltZS4KKyAg
ICBmb3IgKGludCBpID0gMTsgaSA8PSBjb3VudDsgaSsrKSB7CisgICAgICBBU1NFUlRfREVBVEgo
eworICAgICAgICBkb3VibGUqIGJ1ZmZlciA9IG5ldyBkb3VibGVbaV07CisgICAgICAgIC4uLiBp
bml0aWFsaXplcyBidWZmZXIgLi4uCisgICAgICAgIEZvbyhidWZmZXIsIGkpCisgICAgICB9LCAi
YmxhaCBibGFoIik7CisgICAgfQorYGBgCitUaGUgcnVubmVyLWJhc2VkIGFwcHJvYWNoIHRlbmRz
IHRvIGJlIG1vcmUgc3RhdGljIGFuZCBsZXNzIGZsZXhpYmxlLCBvciByZXF1aXJlcyBtb3JlIHVz
ZXIgZWZmb3J0IHRvIGdldCB0aGlzIGtpbmQgb2YgZmxleGliaWxpdHkuCisKK0Fub3RoZXIgaW50
ZXJlc3RpbmcgdGhpbmcgYWJvdXQgYEFTU0VSVF9ERUFUSGAgaXMgdGhhdCBpdCBjYWxscyBgZm9y
aygpYAordG8gY3JlYXRlIGEgY2hpbGQgcHJvY2VzcyB0byBydW4gdGhlIGRlYXRoIHRlc3QuICBU
aGlzIGlzIGxpZ2h0ZW5pbmcKK2Zhc3QsIGFzIGBmb3JrKClgIHVzZXMgY29weS1vbi13cml0ZSBw
YWdlcyBhbmQgaW5jdXJzIGFsbW9zdCB6ZXJvCitvdmVyaGVhZCwgYW5kIHRoZSBjaGlsZCBwcm9j
ZXNzIHN0YXJ0cyBmcm9tIHRoZSB1c2VyLXN1cHBsaWVkCitzdGF0ZW1lbnQgZGlyZWN0bHksIHNr
aXBwaW5nIGFsbCBnbG9iYWwgYW5kIGxvY2FsIGluaXRpYWxpemF0aW9uIGFuZAorYW55IGNvZGUg
bGVhZGluZyB0byB0aGUgZ2l2ZW4gc3RhdGVtZW50LiAgSWYgeW91IGxhdW5jaCB0aGUgY2hpbGQK
K3Byb2Nlc3MgZnJvbSBzY3JhdGNoLCBpdCBjYW4gdGFrZSBzZWNvbmRzIGp1c3QgdG8gbG9hZCBl
dmVyeXRoaW5nIGFuZAorc3RhcnQgcnVubmluZyBpZiB0aGUgdGVzdCBsaW5rcyB0byBtYW55IGxp
YnJhcmllcyBkeW5hbWljYWxseS4KKworIyMgTXkgZGVhdGggdGVzdCBtb2RpZmllcyBzb21lIHN0
YXRlLCBidXQgdGhlIGNoYW5nZSBzZWVtcyBsb3N0IGFmdGVyIHRoZSBkZWF0aCB0ZXN0IGZpbmlz
aGVzLiBXaHk/ICMjCisKK0RlYXRoIHRlc3RzIChgRVhQRUNUX0RFQVRIYCwgZXRjKSBhcmUgZXhl
Y3V0ZWQgaW4gYSBzdWItcHJvY2VzcyBzLnQuIHRoZQorZXhwZWN0ZWQgY3Jhc2ggd29uJ3Qga2ls
bCB0aGUgdGVzdCBwcm9ncmFtIChpLmUuIHRoZSBwYXJlbnQgcHJvY2VzcykuIEFzIGEKK3Jlc3Vs
dCwgYW55IGluLW1lbW9yeSBzaWRlIGVmZmVjdHMgdGhleSBpbmN1ciBhcmUgb2JzZXJ2YWJsZSBp
biB0aGVpcgorcmVzcGVjdGl2ZSBzdWItcHJvY2Vzc2VzLCBidXQgbm90IGluIHRoZSBwYXJlbnQg
cHJvY2Vzcy4gWW91IGNhbiB0aGluayBvZiB0aGVtCithcyBydW5uaW5nIGluIGEgcGFyYWxsZWwg
dW5pdmVyc2UsIG1vcmUgb3IgbGVzcy4KKworIyMgVGhlIGNvbXBpbGVyIGNvbXBsYWlucyBhYm91
dCAidW5kZWZpbmVkIHJlZmVyZW5jZXMiIHRvIHNvbWUgc3RhdGljIGNvbnN0IG1lbWJlciB2YXJp
YWJsZXMsIGJ1dCBJIGRpZCBkZWZpbmUgdGhlbSBpbiB0aGUgY2xhc3MgYm9keS4gV2hhdCdzIHdy
b25nPyAjIworCitJZiB5b3VyIGNsYXNzIGhhcyBhIHN0YXRpYyBkYXRhIG1lbWJlcjoKKworYGBg
IGNwcAorLy8gZm9vLmgKK2NsYXNzIEZvbyB7CisgIC4uLgorICBzdGF0aWMgY29uc3QgaW50IGtC
YXIgPSAxMDA7Cit9OworYGBgCisKK1lvdSBhbHNvIG5lZWQgdG8gZGVmaW5lIGl0IF9vdXRzaWRl
XyBvZiB0aGUgY2xhc3MgYm9keSBpbiBgZm9vLmNjYDoKKworYGBgIGNwcAorY29uc3QgaW50IEZv
bzo6a0JhcjsgIC8vIE5vIGluaXRpYWxpemVyIGhlcmUuCitgYGAKKworT3RoZXJ3aXNlIHlvdXIg
Y29kZSBpcyAqKmludmFsaWQgQysrKiosIGFuZCBtYXkgYnJlYWsgaW4gdW5leHBlY3RlZCB3YXlz
LiBJbgorcGFydGljdWxhciwgdXNpbmcgaXQgaW4gR29vZ2xlIFRlc3QgY29tcGFyaXNvbiBhc3Nl
cnRpb25zIChgRVhQRUNUX0VRYCwgZXRjKQord2lsbCBnZW5lcmF0ZSBhbiAidW5kZWZpbmVkIHJl
ZmVyZW5jZSIgbGlua2VyIGVycm9yLgorCisjIyBJIGhhdmUgYW4gaW50ZXJmYWNlIHRoYXQgaGFz
IHNldmVyYWwgaW1wbGVtZW50YXRpb25zLiBDYW4gSSB3cml0ZSBhIHNldCBvZiB0ZXN0cyBvbmNl
IGFuZCByZXBlYXQgdGhlbSBvdmVyIGFsbCB0aGUgaW1wbGVtZW50YXRpb25zPyAjIworCitHb29n
bGUgVGVzdCBkb2Vzbid0IHlldCBoYXZlIGdvb2Qgc3VwcG9ydCBmb3IgdGhpcyBraW5kIG9mIHRl
c3RzLCBvcgorZGF0YS1kcml2ZW4gdGVzdHMgaW4gZ2VuZXJhbC4gV2UgaG9wZSB0byBiZSBhYmxl
IHRvIG1ha2UgaW1wcm92ZW1lbnRzIGluIHRoaXMKK2FyZWEgc29vbi4KKworIyMgQ2FuIEkgZGVy
aXZlIGEgdGVzdCBmaXh0dXJlIGZyb20gYW5vdGhlcj8gIyMKKworWWVzLgorCitFYWNoIHRlc3Qg
Zml4dHVyZSBoYXMgYSBjb3JyZXNwb25kaW5nIGFuZCBzYW1lIG5hbWVkIHRlc3QgY2FzZS4gVGhp
cyBtZWFucyBvbmx5CitvbmUgdGVzdCBjYXNlIGNhbiB1c2UgYSBwYXJ0aWN1bGFyIGZpeHR1cmUu
IFNvbWV0aW1lcywgaG93ZXZlciwgbXVsdGlwbGUgdGVzdAorY2FzZXMgbWF5IHdhbnQgdG8gdXNl
IHRoZSBzYW1lIG9yIHNsaWdodGx5IGRpZmZlcmVudCBmaXh0dXJlcy4gRm9yIGV4YW1wbGUsIHlv
dQorbWF5IHdhbnQgdG8gbWFrZSBzdXJlIHRoYXQgYWxsIG9mIGEgR1VJIGxpYnJhcnkncyB0ZXN0
IGNhc2VzIGRvbid0IGxlYWsKK2ltcG9ydGFudCBzeXN0ZW0gcmVzb3VyY2VzIGxpa2UgZm9udHMg
YW5kIGJydXNoZXMuCisKK0luIEdvb2dsZSBUZXN0LCB5b3Ugc2hhcmUgYSBmaXh0dXJlIGFtb25n
IHRlc3QgY2FzZXMgYnkgcHV0dGluZyB0aGUgc2hhcmVkCitsb2dpYyBpbiBhIGJhc2UgdGVzdCBm
aXh0dXJlLCB0aGVuIGRlcml2aW5nIGZyb20gdGhhdCBiYXNlIGEgc2VwYXJhdGUgZml4dHVyZQor
Zm9yIGVhY2ggdGVzdCBjYXNlIHRoYXQgd2FudHMgdG8gdXNlIHRoaXMgY29tbW9uIGxvZ2ljLiBZ
b3UgdGhlbiB1c2UgYFRFU1RfRigpYAordG8gd3JpdGUgdGVzdHMgdXNpbmcgZWFjaCBkZXJpdmVk
IGZpeHR1cmUuCisKK1R5cGljYWxseSwgeW91ciBjb2RlIGxvb2tzIGxpa2UgdGhpczoKKworYGBg
IGNwcAorLy8gRGVmaW5lcyBhIGJhc2UgdGVzdCBmaXh0dXJlLgorY2xhc3MgQmFzZVRlc3QgOiBw
dWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyAgcHJvdGVjdGVkOgorICAgLi4uCit9OworCisvLyBE
ZXJpdmVzIGEgZml4dHVyZSBGb29UZXN0IGZyb20gQmFzZVRlc3QuCitjbGFzcyBGb29UZXN0IDog
cHVibGljIEJhc2VUZXN0IHsKKyAgcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgp
IHsKKyAgICAgIEJhc2VUZXN0OjpTZXRVcCgpOyAgLy8gU2V0cyB1cCB0aGUgYmFzZSBmaXh0dXJl
IGZpcnN0LgorICAgICAgLi4uIGFkZGl0aW9uYWwgc2V0LXVwIHdvcmsgLi4uCisgICAgfQorICAg
IHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICAgIC4uLiBjbGVhbi11cCB3b3JrIGZvciBG
b29UZXN0IC4uLgorICAgICAgQmFzZVRlc3Q6OlRlYXJEb3duKCk7ICAvLyBSZW1lbWJlciB0byB0
ZWFyIGRvd24gdGhlIGJhc2UgZml4dHVyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBhZnRlciBjbGVhbmluZyB1cCBGb29UZXN0IQorICAgIH0KKyAgICAuLi4gZnVuY3Rpb25zIGFu
ZCB2YXJpYWJsZXMgZm9yIEZvb1Rlc3QgLi4uCit9OworCisvLyBUZXN0cyB0aGF0IHVzZSB0aGUg
Zml4dHVyZSBGb29UZXN0LgorVEVTVF9GKEZvb1Rlc3QsIEJhcikgeyAuLi4gfQorVEVTVF9GKEZv
b1Rlc3QsIEJheikgeyAuLi4gfQorCisuLi4gYWRkaXRpb25hbCBmaXh0dXJlcyBkZXJpdmVkIGZy
b20gQmFzZVRlc3QgLi4uCitgYGAKKworSWYgbmVjZXNzYXJ5LCB5b3UgY2FuIGNvbnRpbnVlIHRv
IGRlcml2ZSB0ZXN0IGZpeHR1cmVzIGZyb20gYSBkZXJpdmVkIGZpeHR1cmUuCitHb29nbGUgVGVz
dCBoYXMgbm8gbGltaXQgb24gaG93IGRlZXAgdGhlIGhpZXJhcmNoeSBjYW4gYmUuCisKK0ZvciBh
IGNvbXBsZXRlIGV4YW1wbGUgdXNpbmcgZGVyaXZlZCB0ZXN0IGZpeHR1cmVzLCBzZWUKK1tzYW1w
bGU1XSguLi9zYW1wbGVzL3NhbXBsZTVfdW5pdHRlc3QuY2MpLgorCisjIyBNeSBjb21waWxlciBj
b21wbGFpbnMgInZvaWQgdmFsdWUgbm90IGlnbm9yZWQgYXMgaXQgb3VnaHQgdG8gYmUuIiBXaGF0
IGRvZXMgdGhpcyBtZWFuPyAjIworCitZb3UncmUgcHJvYmFibHkgdXNpbmcgYW4gYEFTU0VSVF8q
KClgIGluIGEgZnVuY3Rpb24gdGhhdCBkb2Vzbid0IHJldHVybiBgdm9pZGAuCitgQVNTRVJUXyoo
KWAgY2FuIG9ubHkgYmUgdXNlZCBpbiBgdm9pZGAgZnVuY3Rpb25zLgorCisjIyBNeSBkZWF0aCB0
ZXN0IGhhbmdzIChvciBzZWctZmF1bHRzKS4gSG93IGRvIEkgZml4IGl0PyAjIworCitJbiBHb29n
bGUgVGVzdCwgZGVhdGggdGVzdHMgYXJlIHJ1biBpbiBhIGNoaWxkIHByb2Nlc3MgYW5kIHRoZSB3
YXkgdGhleSB3b3JrIGlzCitkZWxpY2F0ZS4gVG8gd3JpdGUgZGVhdGggdGVzdHMgeW91IHJlYWxs
eSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXkgd29yay4KK1BsZWFzZSBtYWtlIHN1cmUgeW91
IGhhdmUgcmVhZCB0aGlzLgorCitJbiBwYXJ0aWN1bGFyLCBkZWF0aCB0ZXN0cyBkb24ndCBsaWtl
IGhhdmluZyBtdWx0aXBsZSB0aHJlYWRzIGluIHRoZSBwYXJlbnQKK3Byb2Nlc3MuIFNvIHRoZSBm
aXJzdCB0aGluZyB5b3UgY2FuIHRyeSBpcyB0byBlbGltaW5hdGUgY3JlYXRpbmcgdGhyZWFkcwor
b3V0c2lkZSBvZiBgRVhQRUNUX0RFQVRIKClgLgorCitTb21ldGltZXMgdGhpcyBpcyBpbXBvc3Np
YmxlIGFzIHNvbWUgbGlicmFyeSB5b3UgbXVzdCB1c2UgbWF5IGJlIGNyZWF0aW5nCit0aHJlYWRz
IGJlZm9yZSBgbWFpbigpYCBpcyBldmVuIHJlYWNoZWQuIEluIHRoaXMgY2FzZSwgeW91IGNhbiB0
cnkgdG8gbWluaW1pemUKK3RoZSBjaGFuY2Ugb2YgY29uZmxpY3RzIGJ5IGVpdGhlciBtb3Zpbmcg
YXMgbWFueSBhY3Rpdml0aWVzIGFzIHBvc3NpYmxlIGluc2lkZQorYEVYUEVDVF9ERUFUSCgpYCAo
aW4gdGhlIGV4dHJlbWUgY2FzZSwgeW91IHdhbnQgdG8gbW92ZSBldmVyeXRoaW5nIGluc2lkZSks
IG9yCitsZWF2aW5nIGFzIGZldyB0aGluZ3MgYXMgcG9zc2libGUgaW4gaXQuIEFsc28sIHlvdSBj
YW4gdHJ5IHRvIHNldCB0aGUgZGVhdGgKK3Rlc3Qgc3R5bGUgdG8gYCJ0aHJlYWRzYWZlImAsIHdo
aWNoIGlzIHNhZmVyIGJ1dCBzbG93ZXIsIGFuZCBzZWUgaWYgaXQgaGVscHMuCisKK0lmIHlvdSBn
byB3aXRoIHRocmVhZC1zYWZlIGRlYXRoIHRlc3RzLCByZW1lbWJlciB0aGF0IHRoZXkgcmVydW4g
dGhlIHRlc3QKK3Byb2dyYW0gZnJvbSB0aGUgYmVnaW5uaW5nIGluIHRoZSBjaGlsZCBwcm9jZXNz
LiBUaGVyZWZvcmUgbWFrZSBzdXJlIHlvdXIKK3Byb2dyYW0gY2FuIHJ1biBzaWRlLWJ5LXNpZGUg
d2l0aCBpdHNlbGYgYW5kIGlzIGRldGVybWluaXN0aWMuCisKK0luIHRoZSBlbmQsIHRoaXMgYm9p
bHMgZG93biB0byBnb29kIGNvbmN1cnJlbnQgcHJvZ3JhbW1pbmcuIFlvdSBoYXZlIHRvIG1ha2UK
K3N1cmUgdGhhdCB0aGVyZSBpcyBubyByYWNlIGNvbmRpdGlvbnMgb3IgZGVhZCBsb2NrcyBpbiB5
b3VyIHByb2dyYW0uIE5vIHNpbHZlcgorYnVsbGV0IC0gc29ycnkhCisKKyMjIFNob3VsZCBJIHVz
ZSB0aGUgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciBvZiB0aGUgdGVzdCBmaXh0dXJlIG9yIHRoZSBz
ZXQtdXAvdGVhci1kb3duIGZ1bmN0aW9uPyAjIworCitUaGUgZmlyc3QgdGhpbmcgdG8gcmVtZW1i
ZXIgaXMgdGhhdCBHb29nbGUgVGVzdCBkb2VzIG5vdCByZXVzZSB0aGUKK3NhbWUgdGVzdCBmaXh0
dXJlIG9iamVjdCBhY3Jvc3MgbXVsdGlwbGUgdGVzdHMuIEZvciBlYWNoIGBURVNUX0ZgLAorR29v
Z2xlIFRlc3Qgd2lsbCBjcmVhdGUgYSBmcmVzaCB0ZXN0IGZpeHR1cmUgb2JqZWN0LCBfaW1tZWRp
YXRlbHlfCitjYWxsIGBTZXRVcCgpYCwgcnVuIHRoZSB0ZXN0IGJvZHksIGNhbGwgYFRlYXJEb3du
KClgLCBhbmQgdGhlbgorX2ltbWVkaWF0ZWx5XyBkZWxldGUgdGhlIHRlc3QgZml4dHVyZSBvYmpl
Y3QuCisKK1doZW4geW91IG5lZWQgdG8gd3JpdGUgcGVyLXRlc3Qgc2V0LXVwIGFuZCB0ZWFyLWRv
d24gbG9naWMsIHlvdSBoYXZlCit0aGUgY2hvaWNlIGJldHdlZW4gdXNpbmcgdGhlIHRlc3QgZml4
dHVyZSBjb25zdHJ1Y3Rvci9kZXN0cnVjdG9yIG9yCitgU2V0VXAoKS9UZWFyRG93bigpYC4gVGhl
IGZvcm1lciBpcyB1c3VhbGx5IHByZWZlcnJlZCwgYXMgaXQgaGFzIHRoZQorZm9sbG93aW5nIGJl
bmVmaXRzOgorCisgICogQnkgaW5pdGlhbGl6aW5nIGEgbWVtYmVyIHZhcmlhYmxlIGluIHRoZSBj
b25zdHJ1Y3Rvciwgd2UgaGF2ZSB0aGUgb3B0aW9uIHRvIG1ha2UgaXQgYGNvbnN0YCwgd2hpY2gg
aGVscHMgcHJldmVudCBhY2NpZGVudGFsIGNoYW5nZXMgdG8gaXRzIHZhbHVlIGFuZCBtYWtlcyB0
aGUgdGVzdHMgbW9yZSBvYnZpb3VzbHkgY29ycmVjdC4KKyAgKiBJbiBjYXNlIHdlIG5lZWQgdG8g
c3ViY2xhc3MgdGhlIHRlc3QgZml4dHVyZSBjbGFzcywgdGhlIHN1YmNsYXNzJyBjb25zdHJ1Y3Rv
ciBpcyBndWFyYW50ZWVkIHRvIGNhbGwgdGhlIGJhc2UgY2xhc3MnIGNvbnN0cnVjdG9yIGZpcnN0
LCBhbmQgdGhlIHN1YmNsYXNzJyBkZXN0cnVjdG9yIGlzIGd1YXJhbnRlZWQgdG8gY2FsbCB0aGUg
YmFzZSBjbGFzcycgZGVzdHJ1Y3RvciBhZnRlcndhcmQuIFdpdGggYFNldFVwKCkvVGVhckRvd24o
KWAsIGEgc3ViY2xhc3MgbWF5IG1ha2UgdGhlIG1pc3Rha2Ugb2YgZm9yZ2V0dGluZyB0byBjYWxs
IHRoZSBiYXNlIGNsYXNzJyBgU2V0VXAoKS9UZWFyRG93bigpYCBvciBjYWxsIHRoZW0gYXQgdGhl
IHdyb25nIG1vbWVudC4KKworWW91IG1heSBzdGlsbCB3YW50IHRvIHVzZSBgU2V0VXAoKS9UZWFy
RG93bigpYCBpbiB0aGUgZm9sbG93aW5nIHJhcmUgY2FzZXM6CisgICogSWYgdGhlIHRlYXItZG93
biBvcGVyYXRpb24gY291bGQgdGhyb3cgYW4gZXhjZXB0aW9uLCB5b3UgbXVzdCB1c2UgYFRlYXJE
b3duKClgIGFzIG9wcG9zZWQgdG8gdGhlIGRlc3RydWN0b3IsIGFzIHRocm93aW5nIGluIGEgZGVz
dHJ1Y3RvciBsZWFkcyB0byB1bmRlZmluZWQgYmVoYXZpb3IgYW5kIHVzdWFsbHkgd2lsbCBraWxs
IHlvdXIgcHJvZ3JhbSByaWdodCBhd2F5LiBOb3RlIHRoYXQgbWFueSBzdGFuZGFyZCBsaWJyYXJp
ZXMgKGxpa2UgU1RMKSBtYXkgdGhyb3cgd2hlbiBleGNlcHRpb25zIGFyZSBlbmFibGVkIGluIHRo
ZSBjb21waWxlci4gVGhlcmVmb3JlIHlvdSBzaG91bGQgcHJlZmVyIGBUZWFyRG93bigpYCBpZiB5
b3Ugd2FudCB0byB3cml0ZSBwb3J0YWJsZSB0ZXN0cyB0aGF0IHdvcmsgd2l0aCBvciB3aXRob3V0
IGV4Y2VwdGlvbnMuCisgICogVGhlIGFzc2VydGlvbiBtYWNyb3MgdGhyb3cgYW4gZXhjZXB0aW9u
IHdoZW4gZmxhZyBgLS1ndGVzdF90aHJvd19vbl9mYWlsdXJlYCBpcyBzcGVjaWZpZWQuIFRoZXJl
Zm9yZSwgeW91IHNob3VsZG4ndCB1c2UgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBpbiBhIGRlc3Ry
dWN0b3IgaWYgeW91IHBsYW4gdG8gcnVuIHlvdXIgdGVzdHMgd2l0aCB0aGlzIGZsYWcuCisgICog
SW4gYSBjb25zdHJ1Y3RvciBvciBkZXN0cnVjdG9yLCB5b3UgY2Fubm90IG1ha2UgYSB2aXJ0dWFs
IGZ1bmN0aW9uIGNhbGwgb24gdGhpcyBvYmplY3QuIChZb3UgY2FuIGNhbGwgYSBtZXRob2QgZGVj
bGFyZWQgYXMgdmlydHVhbCwgYnV0IGl0IHdpbGwgYmUgc3RhdGljYWxseSBib3VuZC4pIFRoZXJl
Zm9yZSwgaWYgeW91IG5lZWQgdG8gY2FsbCBhIG1ldGhvZCB0aGF0IHdpbGwgYmUgb3ZlcnJpZGVu
IGluIGEgZGVyaXZlZCBjbGFzcywgeW91IGhhdmUgdG8gdXNlIGBTZXRVcCgpL1RlYXJEb3duKClg
LgorCisjIyBUaGUgY29tcGlsZXIgY29tcGxhaW5zICJubyBtYXRjaGluZyBmdW5jdGlvbiB0byBj
YWxsIiB3aGVuIEkgdXNlIEFTU0VSVFxfUFJFRG4uIEhvdyBkbyBJIGZpeCBpdD8gIyMKKworSWYg
dGhlIHByZWRpY2F0ZSBmdW5jdGlvbiB5b3UgdXNlIGluIGBBU1NFUlRfUFJFRCpgIG9yIGBFWFBF
Q1RfUFJFRCpgIGlzCitvdmVybG9hZGVkIG9yIGEgdGVtcGxhdGUsIHRoZSBjb21waWxlciB3aWxs
IGhhdmUgdHJvdWJsZSBmaWd1cmluZyBvdXQgd2hpY2gKK292ZXJsb2FkZWQgdmVyc2lvbiBpdCBz
aG91bGQgdXNlLiBgQVNTRVJUX1BSRURfRk9STUFUKmAgYW5kCitgRVhQRUNUX1BSRURfRk9STUFU
KmAgZG9uJ3QgaGF2ZSB0aGlzIHByb2JsZW0uCisKK0lmIHlvdSBzZWUgdGhpcyBlcnJvciwgeW91
IG1pZ2h0IHdhbnQgdG8gc3dpdGNoIHRvCitgKEFTU0VSVHxFWFBFQ1QpX1BSRURfRk9STUFUKmAs
IHdoaWNoIHdpbGwgYWxzbyBnaXZlIHlvdSBhIGJldHRlciBmYWlsdXJlCittZXNzYWdlLiBJZiwg
aG93ZXZlciwgdGhhdCBpcyBub3QgYW4gb3B0aW9uLCB5b3UgY2FuIHJlc29sdmUgdGhlIHByb2Js
ZW0gYnkKK2V4cGxpY2l0bHkgdGVsbGluZyB0aGUgY29tcGlsZXIgd2hpY2ggdmVyc2lvbiB0byBw
aWNrLgorCitGb3IgZXhhbXBsZSwgc3VwcG9zZSB5b3UgaGF2ZQorCitgYGAgY3BwCitib29sIElz
UG9zaXRpdmUoaW50IG4pIHsKKyAgcmV0dXJuIG4gPiAwOworfQorYm9vbCBJc1Bvc2l0aXZlKGRv
dWJsZSB4KSB7CisgIHJldHVybiB4ID4gMDsKK30KK2BgYAorCit5b3Ugd2lsbCBnZXQgYSBjb21w
aWxlciBlcnJvciBpZiB5b3Ugd3JpdGUKKworYGBgIGNwcAorRVhQRUNUX1BSRUQxKElzUG9zaXRp
dmUsIDUpOworYGBgCisKK0hvd2V2ZXIsIHRoaXMgd2lsbCB3b3JrOgorCitgYGAgY3BwCitFWFBF
Q1RfUFJFRDEoKnN0YXRpY19jYXN0PGJvb2wgKCopKGludCk+KihJc1Bvc2l0aXZlKSwgNSk7Citg
YGAKKworKFRoZSBzdHVmZiBpbnNpZGUgdGhlIGFuZ2xlZCBicmFja2V0cyBmb3IgdGhlIGBzdGF0
aWNfY2FzdGAgb3BlcmF0b3IgaXMgdGhlCit0eXBlIG9mIHRoZSBmdW5jdGlvbiBwb2ludGVyIGZv
ciB0aGUgYGludGAtdmVyc2lvbiBvZiBgSXNQb3NpdGl2ZSgpYC4pCisKK0FzIGFub3RoZXIgZXhh
bXBsZSwgd2hlbiB5b3UgaGF2ZSBhIHRlbXBsYXRlIGZ1bmN0aW9uCisKK2BgYCBjcHAKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPgorYm9vbCBJc05lZ2F0aXZlKFQgeCkgeworICByZXR1cm4geCA8IDA7
Cit9CitgYGAKKworeW91IGNhbiB1c2UgaXQgaW4gYSBwcmVkaWNhdGUgYXNzZXJ0aW9uIGxpa2Ug
dGhpczoKKworYGBgIGNwcAorQVNTRVJUX1BSRUQxKElzTmVnYXRpdmUqPGludD4qLCAtNSk7Citg
YGAKKworVGhpbmdzIGFyZSBtb3JlIGludGVyZXN0aW5nIGlmIHlvdXIgdGVtcGxhdGUgaGFzIG1v
cmUgdGhhbiBvbmUgcGFyYW1ldGVycy4gVGhlCitmb2xsb3dpbmcgd29uJ3QgY29tcGlsZToKKwor
YGBgIGNwcAorQVNTRVJUX1BSRUQyKCpHcmVhdGVyVGhhbjxpbnQsIGludD4qLCA1LCAwKTsKK2Bg
YAorCisKK2FzIHRoZSBDKysgcHJlLXByb2Nlc3NvciB0aGlua3MgeW91IGFyZSBnaXZpbmcgYEFT
U0VSVF9QUkVEMmAgNCBhcmd1bWVudHMsCit3aGljaCBpcyBvbmUgbW9yZSB0aGFuIGV4cGVjdGVk
LiBUaGUgd29ya2Fyb3VuZCBpcyB0byB3cmFwIHRoZSBwcmVkaWNhdGUKK2Z1bmN0aW9uIGluIHBh
cmVudGhlc2VzOgorCitgYGAgY3BwCitBU1NFUlRfUFJFRDIoKihHcmVhdGVyVGhhbjxpbnQsIGlu
dD4pKiwgNSwgMCk7CitgYGAKKworCisjIyBNeSBjb21waWxlciBjb21wbGFpbnMgYWJvdXQgImln
bm9yaW5nIHJldHVybiB2YWx1ZSIgd2hlbiBJIGNhbGwgUlVOXF9BTExcX1RFU1RTKCkuIFdoeT8g
IyMKKworU29tZSBwZW9wbGUgaGFkIGJlZW4gaWdub3JpbmcgdGhlIHJldHVybiB2YWx1ZSBvZiBg
UlVOX0FMTF9URVNUUygpYC4gVGhhdCBpcywKK2luc3RlYWQgb2YKKworYGBgIGNwcAorcmV0dXJu
IFJVTl9BTExfVEVTVFMoKTsKK2BgYAorCit0aGV5IHdyaXRlCisKK2BgYCBjcHAKK1JVTl9BTExf
VEVTVFMoKTsKK2BgYAorCitUaGlzIGlzIHdyb25nIGFuZCBkYW5nZXJvdXMuIEEgdGVzdCBydW5u
ZXIgbmVlZHMgdG8gc2VlIHRoZSByZXR1cm4gdmFsdWUgb2YKK2BSVU5fQUxMX1RFU1RTKClgIGlu
IG9yZGVyIHRvIGRldGVybWluZSBpZiBhIHRlc3QgaGFzIHBhc3NlZC4gSWYgeW91ciBgbWFpbigp
YAorZnVuY3Rpb24gaWdub3JlcyBpdCwgeW91ciB0ZXN0IHdpbGwgYmUgY29uc2lkZXJlZCBzdWNj
ZXNzZnVsIGV2ZW4gaWYgaXQgaGFzIGEKK0dvb2dsZSBUZXN0IGFzc2VydGlvbiBmYWlsdXJlLiBW
ZXJ5IGJhZC4KKworVG8gaGVscCB0aGUgdXNlcnMgYXZvaWQgdGhpcyBkYW5nZXJvdXMgYnVnLCB0
aGUgaW1wbGVtZW50YXRpb24gb2YKK2BSVU5fQUxMX1RFU1RTKClgIGNhdXNlcyBnY2MgdG8gcmFp
c2UgdGhpcyB3YXJuaW5nLCB3aGVuIHRoZSByZXR1cm4gdmFsdWUgaXMKK2lnbm9yZWQuIElmIHlv
dSBzZWUgdGhpcyB3YXJuaW5nLCB0aGUgZml4IGlzIHNpbXBsZToganVzdCBtYWtlIHN1cmUgaXRz
IHZhbHVlCitpcyB1c2VkIGFzIHRoZSByZXR1cm4gdmFsdWUgb2YgYG1haW4oKWAuCisKKyMjIE15
IGNvbXBpbGVyIGNvbXBsYWlucyB0aGF0IGEgY29uc3RydWN0b3IgKG9yIGRlc3RydWN0b3IpIGNh
bm5vdCByZXR1cm4gYSB2YWx1ZS4gV2hhdCdzIGdvaW5nIG9uPyAjIworCitEdWUgdG8gYSBwZWN1
bGlhcml0eSBvZiBDKyssIGluIG9yZGVyIHRvIHN1cHBvcnQgdGhlIHN5bnRheCBmb3Igc3RyZWFt
aW5nCittZXNzYWdlcyB0byBhbiBgQVNTRVJUXypgLCBlLmcuCisKK2BgYCBjcHAKK0FTU0VSVF9F
USgxLCBGb28oKSkgPDwgImJsYWggYmxhaCIgPDwgZm9vOworYGBgCisKK3dlIGhhZCB0byBnaXZl
IHVwIHVzaW5nIGBBU1NFUlQqYCBhbmQgYEZBSUwqYCAoYnV0IG5vdCBgRVhQRUNUKmAgYW5kCitg
QUREX0ZBSUxVUkUqYCkgaW4gY29uc3RydWN0b3JzIGFuZCBkZXN0cnVjdG9ycy4gVGhlIHdvcmth
cm91bmQgaXMgdG8gbW92ZSB0aGUKK2NvbnRlbnQgb2YgeW91ciBjb25zdHJ1Y3Rvci9kZXN0cnVj
dG9yIHRvIGEgcHJpdmF0ZSB2b2lkIG1lbWJlciBmdW5jdGlvbiwgb3IKK3N3aXRjaCB0byBgRVhQ
RUNUXyooKWAgaWYgdGhhdCB3b3Jrcy4gVGhpcyBzZWN0aW9uIGluIHRoZSB1c2VyJ3MgZ3VpZGUg
ZXhwbGFpbnMKK2l0LgorCisjIyBNeSBzZXQtdXAgZnVuY3Rpb24gaXMgbm90IGNhbGxlZC4gV2h5
PyAjIworCitDKysgaXMgY2FzZS1zZW5zaXRpdmUuIEl0IHNob3VsZCBiZSBzcGVsbGVkIGFzIGBT
ZXRVcCgpYC4gIERpZCB5b3UKK3NwZWxsIGl0IGFzIGBTZXR1cCgpYD8KKworU2ltaWxhcmx5LCBz
b21ldGltZXMgcGVvcGxlIHNwZWxsIGBTZXRVcFRlc3RDYXNlKClgIGFzIGBTZXR1cFRlc3RDYXNl
KClgIGFuZAord29uZGVyIHdoeSBpdCdzIG5ldmVyIGNhbGxlZC4KKworIyMgSG93IGRvIEkganVt
cCB0byB0aGUgbGluZSBvZiBhIGZhaWx1cmUgaW4gRW1hY3MgZGlyZWN0bHk/ICMjCisKK0dvb2ds
ZSBUZXN0J3MgZmFpbHVyZSBtZXNzYWdlIGZvcm1hdCBpcyB1bmRlcnN0b29kIGJ5IEVtYWNzIGFu
ZCBtYW55IG90aGVyCitJREVzLCBsaWtlIGFjbWUgYW5kIFhDb2RlLiBJZiBhIEdvb2dsZSBUZXN0
IG1lc3NhZ2UgaXMgaW4gYSBjb21waWxhdGlvbiBidWZmZXIKK2luIEVtYWNzLCB0aGVuIGl0J3Mg
Y2xpY2thYmxlLiBZb3UgY2FuIG5vdyBoaXQgYGVudGVyYCBvbiBhIG1lc3NhZ2UgdG8ganVtcCB0
bwordGhlIGNvcnJlc3BvbmRpbmcgc291cmNlIGNvZGUsIG9yIHVzZSBgQy14IGBgIHRvIGp1bXAg
dG8gdGhlIG5leHQgZmFpbHVyZS4KKworIyMgSSBoYXZlIHNldmVyYWwgdGVzdCBjYXNlcyB3aGlj
aCBzaGFyZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUgbG9naWMsIGRvIEkgaGF2ZSB0byBkZWZpbmUg
YSBuZXcgdGVzdCBmaXh0dXJlIGNsYXNzIGZvciBlYWNoIG9mIHRoZW0/IFRoaXMgc2VlbXMgcHJl
dHR5IHRlZGlvdXMuICMjCisKK1lvdSBkb24ndCBoYXZlIHRvLiBJbnN0ZWFkIG9mCisKK2BgYCBj
cHAKK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgQmFzZVRlc3Qge307CisKK1RFU1RfRihGb29UZXN0
LCBBYmMpIHsgLi4uIH0KK1RFU1RfRihGb29UZXN0LCBEZWYpIHsgLi4uIH0KKworY2xhc3MgQmFy
VGVzdCA6IHB1YmxpYyBCYXNlVGVzdCB7fTsKKworVEVTVF9GKEJhclRlc3QsIEFiYykgeyAuLi4g
fQorVEVTVF9GKEJhclRlc3QsIERlZikgeyAuLi4gfQorYGBgCisKK3lvdSBjYW4gc2ltcGx5IGB0
eXBlZGVmYCB0aGUgdGVzdCBmaXh0dXJlczoKK2BgYCBjcHAKK3R5cGVkZWYgQmFzZVRlc3QgRm9v
VGVzdDsKKworVEVTVF9GKEZvb1Rlc3QsIEFiYykgeyAuLi4gfQorVEVTVF9GKEZvb1Rlc3QsIERl
ZikgeyAuLi4gfQorCit0eXBlZGVmIEJhc2VUZXN0IEJhclRlc3Q7CisKK1RFU1RfRihCYXJUZXN0
LCBBYmMpIHsgLi4uIH0KK1RFU1RfRihCYXJUZXN0LCBEZWYpIHsgLi4uIH0KK2BgYAorCisjIyBU
aGUgR29vZ2xlIFRlc3Qgb3V0cHV0IGlzIGJ1cmllZCBpbiBhIHdob2xlIGJ1bmNoIG9mIGxvZyBt
ZXNzYWdlcy4gV2hhdCBkbyBJIGRvPyAjIworCitUaGUgR29vZ2xlIFRlc3Qgb3V0cHV0IGlzIG1l
YW50IHRvIGJlIGEgY29uY2lzZSBhbmQgaHVtYW4tZnJpZW5kbHkgcmVwb3J0LiBJZgoreW91ciB0
ZXN0IGdlbmVyYXRlcyB0ZXh0dWFsIG91dHB1dCBpdHNlbGYsIGl0IHdpbGwgbWl4IHdpdGggdGhl
IEdvb2dsZSBUZXN0CitvdXRwdXQsIG1ha2luZyBpdCBoYXJkIHRvIHJlYWQuIEhvd2V2ZXIsIHRo
ZXJlIGlzIGFuIGVhc3kgc29sdXRpb24gdG8gdGhpcworcHJvYmxlbS4KKworU2luY2UgbW9zdCBs
b2cgbWVzc2FnZXMgZ28gdG8gc3RkZXJyLCB3ZSBkZWNpZGVkIHRvIGxldCBHb29nbGUgVGVzdCBv
dXRwdXQgZ28KK3RvIHN0ZG91dC4gVGhpcyB3YXksIHlvdSBjYW4gZWFzaWx5IHNlcGFyYXRlIHRo
ZSB0d28gdXNpbmcgcmVkaXJlY3Rpb24uIEZvcgorZXhhbXBsZToKK2BgYAorLi9teV90ZXN0ID4g
Z29vZ2xldGVzdF9vdXRwdXQudHh0CitgYGAKKworIyMgV2h5IHNob3VsZCBJIHByZWZlciB0ZXN0
IGZpeHR1cmVzIG92ZXIgZ2xvYmFsIHZhcmlhYmxlcz8gIyMKKworVGhlcmUgYXJlIHNldmVyYWwg
Z29vZCByZWFzb25zOgorICAxLiBJdCdzIGxpa2VseSB5b3VyIHRlc3QgbmVlZHMgdG8gY2hhbmdl
IHRoZSBzdGF0ZXMgb2YgaXRzIGdsb2JhbCB2YXJpYWJsZXMuIFRoaXMgbWFrZXMgaXQgZGlmZmlj
dWx0IHRvIGtlZXAgc2lkZSBlZmZlY3RzIGZyb20gZXNjYXBpbmcgb25lIHRlc3QgYW5kIGNvbnRh
bWluYXRpbmcgb3RoZXJzLCBtYWtpbmcgZGVidWdnaW5nIGRpZmZpY3VsdC4gQnkgdXNpbmcgZml4
dHVyZXMsIGVhY2ggdGVzdCBoYXMgYSBmcmVzaCBzZXQgb2YgdmFyaWFibGVzIHRoYXQncyBkaWZm
ZXJlbnQgKGJ1dCB3aXRoIHRoZSBzYW1lIG5hbWVzKS4gVGh1cywgdGVzdHMgYXJlIGtlcHQgaW5k
ZXBlbmRlbnQgb2YgZWFjaCBvdGhlci4KKyAgMS4gR2xvYmFsIHZhcmlhYmxlcyBwb2xsdXRlIHRo
ZSBnbG9iYWwgbmFtZXNwYWNlLgorICAxLiBUZXN0IGZpeHR1cmVzIGNhbiBiZSByZXVzZWQgdmlh
IHN1YmNsYXNzaW5nLCB3aGljaCBjYW5ub3QgYmUgZG9uZSBlYXNpbHkgd2l0aCBnbG9iYWwgdmFy
aWFibGVzLiBUaGlzIGlzIHVzZWZ1bCBpZiBtYW55IHRlc3QgY2FzZXMgaGF2ZSBzb21ldGhpbmcg
aW4gY29tbW9uLgorCisjIyBIb3cgZG8gSSB0ZXN0IHByaXZhdGUgY2xhc3MgbWVtYmVycyB3aXRo
b3V0IHdyaXRpbmcgRlJJRU5EXF9URVNUKClzPyAjIworCitZb3Ugc2hvdWxkIHRyeSB0byB3cml0
ZSB0ZXN0YWJsZSBjb2RlLCB3aGljaCBtZWFucyBjbGFzc2VzIHNob3VsZCBiZSBlYXNpbHkKK3Rl
c3RlZCBmcm9tIHRoZWlyIHB1YmxpYyBpbnRlcmZhY2UuIE9uZSB3YXkgdG8gYWNoaWV2ZSB0aGlz
IGlzIHRoZSBQaW1wbCBpZGlvbToKK3lvdSBtb3ZlIGFsbCBwcml2YXRlIG1lbWJlcnMgb2YgYSBj
bGFzcyBpbnRvIGEgaGVscGVyIGNsYXNzLCBhbmQgbWFrZSBhbGwKK21lbWJlcnMgb2YgdGhlIGhl
bHBlciBjbGFzcyBwdWJsaWMuCisKK1lvdSBoYXZlIHNldmVyYWwgb3RoZXIgb3B0aW9ucyB0aGF0
IGRvbid0IHJlcXVpcmUgdXNpbmcgYEZSSUVORF9URVNUYDoKKyAgKiBXcml0ZSB0aGUgdGVzdHMg
YXMgbWVtYmVycyBvZiB0aGUgZml4dHVyZSBjbGFzczoKK2BgYCBjcHAKK2NsYXNzIEZvbyB7Cisg
IGZyaWVuZCBjbGFzcyBGb29UZXN0OworICAuLi4KK307CisKK2NsYXNzIEZvb1Rlc3QgOiBwdWJs
aWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIC4uLgorICB2b2lkIFRlc3QxKCkg
ey4uLn0gLy8gVGhpcyBhY2Nlc3NlcyBwcml2YXRlIG1lbWJlcnMgb2YgY2xhc3MgRm9vLgorICB2
b2lkIFRlc3QyKCkgey4uLn0gLy8gU28gZG9lcyB0aGlzIG9uZS4KK307CisKK1RFU1RfRihGb29U
ZXN0LCBUZXN0MSkgeworICBUZXN0MSgpOworfQorCitURVNUX0YoRm9vVGVzdCwgVGVzdDIpIHsK
KyAgVGVzdDIoKTsKK30KK2BgYAorICAqIEluIHRoZSBmaXh0dXJlIGNsYXNzLCB3cml0ZSBhY2Nl
c3NvcnMgZm9yIHRoZSB0ZXN0ZWQgY2xhc3MnIHByaXZhdGUgbWVtYmVycywgdGhlbiB1c2UgdGhl
IGFjY2Vzc29ycyBpbiB5b3VyIHRlc3RzOgorYGBgIGNwcAorY2xhc3MgRm9vIHsKKyAgZnJpZW5k
IGNsYXNzIEZvb1Rlc3Q7CisgIC4uLgorfTsKKworY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRl
c3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgLi4uCisgIFQxIGdldF9wcml2YXRlX21lbWJl
cjEoRm9vKiBvYmopIHsKKyAgICByZXR1cm4gb2JqLT5wcml2YXRlX21lbWJlcjFfOworICB9Cit9
OworCitURVNUX0YoRm9vVGVzdCwgVGVzdDEpIHsKKyAgLi4uCisgIGdldF9wcml2YXRlX21lbWJl
cjEoeCkKKyAgLi4uCit9CitgYGAKKyAgKiBJZiB0aGUgbWV0aG9kcyBhcmUgZGVjbGFyZWQgKipw
cm90ZWN0ZWQqKiwgeW91IGNhbiBjaGFuZ2UgdGhlaXIgYWNjZXNzIGxldmVsIGluIGEgdGVzdC1v
bmx5IHN1YmNsYXNzOgorYGBgIGNwcAorY2xhc3MgWW91ckNsYXNzIHsKKyAgLi4uCisgcHJvdGVj
dGVkOiAvLyBwcm90ZWN0ZWQgYWNjZXNzIGZvciB0ZXN0YWJpbGl0eS4KKyAgaW50IERvU29tZXRo
aW5nUmV0dXJuaW5nSW50KCk7CisgIC4uLgorfTsKKworLy8gaW4gdGhlIHlvdXJfY2xhc3NfdGVz
dC5jYyBmaWxlOgorY2xhc3MgVGVzdGFibGVZb3VyQ2xhc3MgOiBwdWJsaWMgWW91ckNsYXNzIHsK
KyAgLi4uCisgcHVibGljOiB1c2luZyBZb3VyQ2xhc3M6OkRvU29tZXRoaW5nUmV0dXJuaW5nSW50
OyAvLyBjaGFuZ2VzIGFjY2VzcyByaWdodHMKKyAgLi4uCit9OworCitURVNUX0YoWW91ckNsYXNz
VGVzdCwgRG9Tb21ldGhpbmdUZXN0KSB7CisgIFRlc3RhYmxlWW91ckNsYXNzIG9iajsKKyAgYXNz
ZXJ0RXF1YWxzKGV4cGVjdGVkX3ZhbHVlLCBvYmouRG9Tb21ldGhpbmdSZXR1cm5pbmdJbnQoKSk7
Cit9CitgYGAKKworIyMgSG93IGRvIEkgdGVzdCBwcml2YXRlIGNsYXNzIHN0YXRpYyBtZW1iZXJz
IHdpdGhvdXQgd3JpdGluZyBGUklFTkRcX1RFU1QoKXM/ICMjCisKK1dlIGZpbmQgcHJpdmF0ZSBz
dGF0aWMgbWV0aG9kcyBjbHV0dGVyIHRoZSBoZWFkZXIgZmlsZS4gIFRoZXkgYXJlCitpbXBsZW1l
bnRhdGlvbiBkZXRhaWxzIGFuZCBpZGVhbGx5IHNob3VsZCBiZSBrZXB0IG91dCBvZiBhIC5oLiBT
byBvZnRlbiBJIG1ha2UKK3RoZW0gZnJlZSBmdW5jdGlvbnMgaW5zdGVhZC4KKworSW5zdGVhZCBv
ZjoKK2BgYCBjcHAKKy8vIGZvby5oCitjbGFzcyBGb28geworICAuLi4KKyBwcml2YXRlOgorICBz
dGF0aWMgYm9vbCBGdW5jKGludCBuKTsKK307CisKKy8vIGZvby5jYworYm9vbCBGb286OkZ1bmMo
aW50IG4pIHsgLi4uIH0KKworLy8gZm9vX3Rlc3QuY2MKK0VYUEVDVF9UUlVFKEZvbzo6RnVuYygx
MjM0NSkpOworYGBgCisKK1lvdSBwcm9iYWJseSBzaG91bGQgYmV0dGVyIHdyaXRlOgorYGBgIGNw
cAorLy8gZm9vLmgKK2NsYXNzIEZvbyB7CisgIC4uLgorfTsKKworLy8gZm9vLmNjCituYW1lc3Bh
Y2UgaW50ZXJuYWwgeworICBib29sIEZ1bmMoaW50IG4pIHsgLi4uIH0KK30KKworLy8gZm9vX3Rl
c3QuY2MKK25hbWVzcGFjZSBpbnRlcm5hbCB7CisgIGJvb2wgRnVuYyhpbnQgbik7Cit9CisKK0VY
UEVDVF9UUlVFKGludGVybmFsOjpGdW5jKDEyMzQ1KSk7CitgYGAKKworIyMgSSB3b3VsZCBsaWtl
IHRvIHJ1biBhIHRlc3Qgc2V2ZXJhbCB0aW1lcyB3aXRoIGRpZmZlcmVudCBwYXJhbWV0ZXJzLiBE
byBJIG5lZWQgdG8gd3JpdGUgc2V2ZXJhbCBzaW1pbGFyIGNvcGllcyBvZiBpdD8gIyMKKworTm8u
IFlvdSBjYW4gdXNlIGEgZmVhdHVyZSBjYWxsZWQgW3ZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHNd
KEFkdmFuY2VkR3VpZGUubWQjVmFsdWVfUGFyYW1ldGVyaXplZF9UZXN0cykgd2hpY2gKK2xldHMg
eW91IHJlcGVhdCB5b3VyIHRlc3RzIHdpdGggZGlmZmVyZW50IHBhcmFtZXRlcnMsIHdpdGhvdXQg
ZGVmaW5pbmcgaXQgbW9yZSB0aGFuIG9uY2UuCisKKyMjIEhvdyBkbyBJIHRlc3QgYSBmaWxlIHRo
YXQgZGVmaW5lcyBtYWluKCk/ICMjCisKK1RvIHRlc3QgYSBgZm9vLmNjYCBmaWxlLCB5b3UgbmVl
ZCB0byBjb21waWxlIGFuZCBsaW5rIGl0IGludG8geW91ciB1bml0IHRlc3QKK3Byb2dyYW0uIEhv
d2V2ZXIsIHdoZW4gdGhlIGZpbGUgY29udGFpbnMgYSBkZWZpbml0aW9uIGZvciB0aGUgYG1haW4o
KWAKK2Z1bmN0aW9uLCBpdCB3aWxsIGNsYXNoIHdpdGggdGhlIGBtYWluKClgIG9mIHlvdXIgdW5p
dCB0ZXN0LCBhbmQgd2lsbCByZXN1bHQgaW4KK2EgYnVpbGQgZXJyb3IuCisKK1RoZSByaWdodCBz
b2x1dGlvbiBpcyB0byBzcGxpdCBpdCBpbnRvIHRocmVlIGZpbGVzOgorICAxLiBgZm9vLmhgIHdo
aWNoIGNvbnRhaW5zIHRoZSBkZWNsYXJhdGlvbnMsCisgIDEuIGBmb28uY2NgIHdoaWNoIGNvbnRh
aW5zIHRoZSBkZWZpbml0aW9ucyBleGNlcHQgYG1haW4oKWAsIGFuZAorICAxLiBgZm9vX21haW4u
Y2NgIHdoaWNoIGNvbnRhaW5zIG5vdGhpbmcgYnV0IHRoZSBkZWZpbml0aW9uIG9mIGBtYWluKClg
LgorCitUaGVuIGBmb28uY2NgIGNhbiBiZSBlYXNpbHkgdGVzdGVkLgorCitJZiB5b3UgYXJlIGFk
ZGluZyB0ZXN0cyB0byBhbiBleGlzdGluZyBmaWxlIGFuZCBkb24ndCB3YW50IGFuIGludHJ1c2l2
ZSBjaGFuZ2UKK2xpa2UgdGhpcywgdGhlcmUgaXMgYSBoYWNrOiBqdXN0IGluY2x1ZGUgdGhlIGVu
dGlyZSBgZm9vLmNjYCBmaWxlIGluIHlvdXIgdW5pdAordGVzdC4gRm9yIGV4YW1wbGU6CitgYGAg
Y3BwCisvLyBGaWxlIGZvb191bml0dGVzdC5jYworCisvLyBUaGUgaGVhZGVycyBzZWN0aW9uCisu
Li4KKworLy8gUmVuYW1lcyBtYWluKCkgaW4gZm9vLmNjIHRvIG1ha2Ugcm9vbSBmb3IgdGhlIHVu
aXQgdGVzdCBtYWluKCkKKyNkZWZpbmUgbWFpbiBGb29NYWluCisKKyNpbmNsdWRlICJhL2IvZm9v
LmNjIgorCisvLyBUaGUgdGVzdHMgc3RhcnQgaGVyZS4KKy4uLgorYGBgCisKKworSG93ZXZlciwg
cGxlYXNlIHJlbWVtYmVyIHRoaXMgaXMgYSBoYWNrIGFuZCBzaG91bGQgb25seSBiZSB1c2VkIGFz
IHRoZSBsYXN0CityZXNvcnQuCisKKyMjIFdoYXQgY2FuIHRoZSBzdGF0ZW1lbnQgYXJndW1lbnQg
aW4gQVNTRVJUXF9ERUFUSCgpIGJlPyAjIworCitgQVNTRVJUX0RFQVRIKF9zdGF0ZW1lbnRfLCBf
cmVnZXhfKWAgKG9yIGFueSBkZWF0aCBhc3NlcnRpb24gbWFjcm8pIGNhbiBiZSB1c2VkCit3aGVy
ZXZlciBgX3N0YXRlbWVudF9gIGlzIHZhbGlkLiBTbyBiYXNpY2FsbHkgYF9zdGF0ZW1lbnRfYCBj
YW4gYmUgYW55IEMrKworc3RhdGVtZW50IHRoYXQgbWFrZXMgc2Vuc2UgaW4gdGhlIGN1cnJlbnQg
Y29udGV4dC4gSW4gcGFydGljdWxhciwgaXQgY2FuCityZWZlcmVuY2UgZ2xvYmFsIGFuZC9vciBs
b2NhbCB2YXJpYWJsZXMsIGFuZCBjYW4gYmU6CisgICogYSBzaW1wbGUgZnVuY3Rpb24gY2FsbCAo
b2Z0ZW4gdGhlIGNhc2UpLAorICAqIGEgY29tcGxleCBleHByZXNzaW9uLCBvcgorICAqIGEgY29t
cG91bmQgc3RhdGVtZW50LgorCitTb21lIGV4YW1wbGVzIGFyZSBzaG93biBoZXJlOgorCitgYGAg
Y3BwCisvLyBBIGRlYXRoIHRlc3QgY2FuIGJlIGEgc2ltcGxlIGZ1bmN0aW9uIGNhbGwuCitURVNU
KE15RGVhdGhUZXN0LCBGdW5jdGlvbkNhbGwpIHsKKyAgQVNTRVJUX0RFQVRIKFh5eig1KSwgIlh5
eiBmYWlsZWQiKTsKK30KKworLy8gT3IgYSBjb21wbGV4IGV4cHJlc3Npb24gdGhhdCByZWZlcmVu
Y2VzIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zLgorVEVTVChNeURlYXRoVGVzdCwgQ29tcGxleEV4
cHJlc3Npb24pIHsKKyAgY29uc3QgYm9vbCBjID0gQ29uZGl0aW9uKCk7CisgIEFTU0VSVF9ERUFU
SCgoYyA/IEZ1bmMxKDApIDogb2JqZWN0Mi5NZXRob2QoInRlc3QiKSksCisgICAgICAgICAgICAg
ICAiKEZ1bmMxfE1ldGhvZCkgZmFpbGVkIik7Cit9CisKKy8vIERlYXRoIGFzc2VydGlvbnMgY2Fu
IGJlIHVzZWQgYW55IHdoZXJlIGluIGEgZnVuY3Rpb24uIEluCisvLyBwYXJ0aWN1bGFyLCB0aGV5
IGNhbiBiZSBpbnNpZGUgYSBsb29wLgorVEVTVChNeURlYXRoVGVzdCwgSW5zaWRlTG9vcCkgewor
ICAvLyBWZXJpZmllcyB0aGF0IEZvbygwKSwgRm9vKDEpLCAuLi4sIGFuZCBGb28oNCkgYWxsIGRp
ZS4KKyAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBpKyspIHsKKyAgICBFWFBFQ1RfREVBVEhfTShG
b28oaSksICJGb28gaGFzIFxcZCsgZXJyb3JzIiwKKyAgICAgICAgICAgICAgICAgICA6OnRlc3Rp
bmc6Ok1lc3NhZ2UoKSA8PCAid2hlcmUgaSBpcyAiIDw8IGkpOworICB9Cit9CisKKy8vIEEgZGVh
dGggYXNzZXJ0aW9uIGNhbiBjb250YWluIGEgY29tcG91bmQgc3RhdGVtZW50LgorVEVTVChNeURl
YXRoVGVzdCwgQ29tcG91bmRTdGF0ZW1lbnQpIHsKKyAgLy8gVmVyaWZpZXMgdGhhdCBhdCBsZWFz
ZSBvbmUgb2YgQmFyKDApLCBCYXIoMSksIC4uLiwgYW5kCisgIC8vIEJhcig0KSBkaWVzLgorICBB
U1NFUlRfREVBVEgoeworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgaSsrKSB7CisgICAgICBC
YXIoaSk7CisgICAgfQorICB9LAorICAiQmFyIGhhcyBcXGQrIGVycm9ycyIpO30KK2BgYAorCitg
Z29vZ2xldGVzdF91bml0dGVzdC5jY2AgY29udGFpbnMgbW9yZSBleGFtcGxlcyBpZiB5b3UgYXJl
IGludGVyZXN0ZWQuCisKKyMjIFdoYXQgc3ludGF4IGRvZXMgdGhlIHJlZ3VsYXIgZXhwcmVzc2lv
biBpbiBBU1NFUlRcX0RFQVRIIHVzZT8gIyMKKworT24gUE9TSVggc3lzdGVtcywgR29vZ2xlIFRl
c3QgdXNlcyB0aGUgUE9TSVggRXh0ZW5kZWQgcmVndWxhcgorZXhwcmVzc2lvbiBzeW50YXgKKyho
dHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JlZ3VsYXJfZXhwcmVzc2lvbiNQT1NJWF9FeHRl
bmRlZF9SZWd1bGFyX0V4cHJlc3Npb25zKS4KK09uIFdpbmRvd3MsIGl0IHVzZXMgYSBsaW1pdGVk
IHZhcmlhbnQgb2YgcmVndWxhciBleHByZXNzaW9uCitzeW50YXguIEZvciBtb3JlIGRldGFpbHMs
IHNlZSB0aGUKK1tyZWd1bGFyIGV4cHJlc3Npb24gc3ludGF4XShBZHZhbmNlZEd1aWRlLm1kI1Jl
Z3VsYXJfRXhwcmVzc2lvbl9TeW50YXgpLgorCisjIyBJIGhhdmUgYSBmaXh0dXJlIGNsYXNzIEZv
bywgYnV0IFRFU1RcX0YoRm9vLCBCYXIpIGdpdmVzIG1lIGVycm9yICJubyBtYXRjaGluZyBmdW5j
dGlvbiBmb3IgY2FsbCB0byBGb286OkZvbygpIi4gV2h5PyAjIworCitHb29nbGUgVGVzdCBuZWVk
cyB0byBiZSBhYmxlIHRvIGNyZWF0ZSBvYmplY3RzIG9mIHlvdXIgdGVzdCBmaXh0dXJlIGNsYXNz
LCBzbworaXQgbXVzdCBoYXZlIGEgZGVmYXVsdCBjb25zdHJ1Y3Rvci4gTm9ybWFsbHkgdGhlIGNv
bXBpbGVyIHdpbGwgZGVmaW5lIG9uZSBmb3IKK3lvdS4gSG93ZXZlciwgdGhlcmUgYXJlIGNhc2Vz
IHdoZXJlIHlvdSBoYXZlIHRvIGRlZmluZSB5b3VyIG93bjoKKyAgKiBJZiB5b3UgZXhwbGljaXRs
eSBkZWNsYXJlIGEgbm9uLWRlZmF1bHQgY29uc3RydWN0b3IgZm9yIGNsYXNzIGBGb29gLCB0aGVu
IHlvdSBuZWVkIHRvIGRlZmluZSBhIGRlZmF1bHQgY29uc3RydWN0b3IsIGV2ZW4gaWYgaXQgd291
bGQgYmUgZW1wdHkuCisgICogSWYgYEZvb2AgaGFzIGEgY29uc3Qgbm9uLXN0YXRpYyBkYXRhIG1l
bWJlciwgdGhlbiB5b3UgaGF2ZSB0byBkZWZpbmUgdGhlIGRlZmF1bHQgY29uc3RydWN0b3IgX2Fu
ZF8gaW5pdGlhbGl6ZSB0aGUgY29uc3QgbWVtYmVyIGluIHRoZSBpbml0aWFsaXplciBsaXN0IG9m
IHRoZSBjb25zdHJ1Y3Rvci4gKEVhcmx5IHZlcnNpb25zIG9mIGBnY2NgIGRvZXNuJ3QgZm9yY2Ug
eW91IHRvIGluaXRpYWxpemUgdGhlIGNvbnN0IG1lbWJlci4gSXQncyBhIGJ1ZyB0aGF0IGhhcyBi
ZWVuIGZpeGVkIGluIGBnY2MgNGAuKQorCisjIyBXaHkgZG9lcyBBU1NFUlRcX0RFQVRIIGNvbXBs
YWluIGFib3V0IHByZXZpb3VzIHRocmVhZHMgdGhhdCB3ZXJlIGFscmVhZHkgam9pbmVkPyAjIwor
CitXaXRoIHRoZSBMaW51eCBwdGhyZWFkIGxpYnJhcnksIHRoZXJlIGlzIG5vIHR1cm5pbmcgYmFj
ayBvbmNlIHlvdSBjcm9zcyB0aGUKK2xpbmUgZnJvbSBzaW5nbGUgdGhyZWFkIHRvIG11bHRpcGxl
IHRocmVhZHMuIFRoZSBmaXJzdCB0aW1lIHlvdSBjcmVhdGUgYQordGhyZWFkLCBhIG1hbmFnZXIg
dGhyZWFkIGlzIGNyZWF0ZWQgaW4gYWRkaXRpb24sIHNvIHlvdSBnZXQgMywgbm90IDIsIHRocmVh
ZHMuCitMYXRlciB3aGVuIHRoZSB0aHJlYWQgeW91IGNyZWF0ZSBqb2lucyB0aGUgbWFpbiB0aHJl
YWQsIHRoZSB0aHJlYWQgY291bnQKK2RlY3JlbWVudHMgYnkgMSwgYnV0IHRoZSBtYW5hZ2VyIHRo
cmVhZCB3aWxsIG5ldmVyIGJlIGtpbGxlZCwgc28geW91IHN0aWxsIGhhdmUKKzIgdGhyZWFkcywg
d2hpY2ggbWVhbnMgeW91IGNhbm5vdCBzYWZlbHkgcnVuIGEgZGVhdGggdGVzdC4KKworVGhlIG5l
dyBOUFRMIHRocmVhZCBsaWJyYXJ5IGRvZXNuJ3Qgc3VmZmVyIGZyb20gdGhpcyBwcm9ibGVtLCBh
cyBpdCBkb2Vzbid0CitjcmVhdGUgYSBtYW5hZ2VyIHRocmVhZC4gSG93ZXZlciwgaWYgeW91IGRv
bid0IGNvbnRyb2wgd2hpY2ggbWFjaGluZSB5b3VyIHRlc3QKK3J1bnMgb24sIHlvdSBzaG91bGRu
J3QgZGVwZW5kIG9uIHRoaXMuCisKKyMjIFdoeSBkb2VzIEdvb2dsZSBUZXN0IHJlcXVpcmUgdGhl
IGVudGlyZSB0ZXN0IGNhc2UsIGluc3RlYWQgb2YgaW5kaXZpZHVhbCB0ZXN0cywgdG8gYmUgbmFt
ZWQgRk9PRGVhdGhUZXN0IHdoZW4gaXQgdXNlcyBBU1NFUlRcX0RFQVRIPyAjIworCitHb29nbGUg
VGVzdCBkb2VzIG5vdCBpbnRlcmxlYXZlIHRlc3RzIGZyb20gZGlmZmVyZW50IHRlc3QgY2FzZXMu
IFRoYXQgaXMsIGl0CitydW5zIGFsbCB0ZXN0cyBpbiBvbmUgdGVzdCBjYXNlIGZpcnN0LCBhbmQg
dGhlbiBydW5zIGFsbCB0ZXN0cyBpbiB0aGUgbmV4dCB0ZXN0CitjYXNlLCBhbmQgc28gb24uIEdv
b2dsZSBUZXN0IGRvZXMgdGhpcyBiZWNhdXNlIGl0IG5lZWRzIHRvIHNldCB1cCBhIHRlc3QgY2Fz
ZQorYmVmb3JlIHRoZSBmaXJzdCB0ZXN0IGluIGl0IGlzIHJ1biwgYW5kIHRlYXIgaXQgZG93biBh
ZnRlcndvcmRzLiBTcGxpdHRpbmcgdXAKK3RoZSB0ZXN0IGNhc2Ugd291bGQgcmVxdWlyZSBtdWx0
aXBsZSBzZXQtdXAgYW5kIHRlYXItZG93biBwcm9jZXNzZXMsIHdoaWNoIGlzCitpbmVmZmljaWVu
dCBhbmQgbWFrZXMgdGhlIHNlbWFudGljcyB1bmNsZWFuLgorCitJZiB3ZSB3ZXJlIHRvIGRldGVy
bWluZSB0aGUgb3JkZXIgb2YgdGVzdHMgYmFzZWQgb24gdGVzdCBuYW1lIGluc3RlYWQgb2YgdGVz
dAorY2FzZSBuYW1lLCB0aGVuIHdlIHdvdWxkIGhhdmUgYSBwcm9ibGVtIHdpdGggdGhlIGZvbGxv
d2luZyBzaXR1YXRpb246CisKK2BgYCBjcHAKK1RFU1RfRihGb29UZXN0LCBBYmNEZWF0aFRlc3Qp
IHsgLi4uIH0KK1RFU1RfRihGb29UZXN0LCBVdncpIHsgLi4uIH0KKworVEVTVF9GKEJhclRlc3Qs
IERlZkRlYXRoVGVzdCkgeyAuLi4gfQorVEVTVF9GKEJhclRlc3QsIFh5eikgeyAuLi4gfQorYGBg
CisKK1NpbmNlIGBGb29UZXN0LkFiY0RlYXRoVGVzdGAgbmVlZHMgdG8gcnVuIGJlZm9yZSBgQmFy
VGVzdC5YeXpgLCBhbmQgd2UgZG9uJ3QKK2ludGVybGVhdmUgdGVzdHMgZnJvbSBkaWZmZXJlbnQg
dGVzdCBjYXNlcywgd2UgbmVlZCB0byBydW4gYWxsIHRlc3RzIGluIHRoZQorYEZvb1Rlc3RgIGNh
c2UgYmVmb3JlIHJ1bm5pbmcgYW55IHRlc3QgaW4gdGhlIGBCYXJUZXN0YCBjYXNlLiBUaGlzIGNv
bnRyYWRpY3RzCit3aXRoIHRoZSByZXF1aXJlbWVudCB0byBydW4gYEJhclRlc3QuRGVmRGVhdGhU
ZXN0YCBiZWZvcmUgYEZvb1Rlc3QuVXZ3YC4KKworIyMgQnV0IEkgZG9uJ3QgbGlrZSBjYWxsaW5n
IG15IGVudGlyZSB0ZXN0IGNhc2UgRk9PRGVhdGhUZXN0IHdoZW4gaXQgY29udGFpbnMgYm90aCBk
ZWF0aCB0ZXN0cyBhbmQgbm9uLWRlYXRoIHRlc3RzLiBXaGF0IGRvIEkgZG8/ICMjCisKK1lvdSBk
b24ndCBoYXZlIHRvLCBidXQgaWYgeW91IGxpa2UsIHlvdSBtYXkgc3BsaXQgdXAgdGhlIHRlc3Qg
Y2FzZSBpbnRvCitgRm9vVGVzdGAgYW5kIGBGb29EZWF0aFRlc3RgLCB3aGVyZSB0aGUgbmFtZXMg
bWFrZSBpdCBjbGVhciB0aGF0IHRoZXkgYXJlCityZWxhdGVkOgorCitgYGAgY3BwCitjbGFzcyBG
b29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7IC4uLiB9OworCitURVNUX0YoRm9vVGVz
dCwgQWJjKSB7IC4uLiB9CitURVNUX0YoRm9vVGVzdCwgRGVmKSB7IC4uLiB9CisKK3R5cGVkZWYg
Rm9vVGVzdCBGb29EZWF0aFRlc3Q7CisKK1RFU1RfRihGb29EZWF0aFRlc3QsIFV2dykgeyAuLi4g
RVhQRUNUX0RFQVRIKC4uLikgLi4uIH0KK1RFU1RfRihGb29EZWF0aFRlc3QsIFh5eikgeyAuLi4g
QVNTRVJUX0RFQVRIKC4uLikgLi4uIH0KK2BgYAorCisjIyBUaGUgY29tcGlsZXIgY29tcGxhaW5z
IGFib3V0ICJubyBtYXRjaCBmb3IgJ29wZXJhdG9yPDwnIiB3aGVuIEkgdXNlIGFuIGFzc2VydGlv
bi4gV2hhdCBnaXZlcz8gIyMKKworSWYgeW91IHVzZSBhIHVzZXItZGVmaW5lZCB0eXBlIGBGb29U
eXBlYCBpbiBhbiBhc3NlcnRpb24sIHlvdSBtdXN0IG1ha2Ugc3VyZQordGhlcmUgaXMgYW4gYHN0
ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mLCBjb25zdCBGb29UeXBlJilgIGZ1
bmN0aW9uCitkZWZpbmVkIHN1Y2ggdGhhdCB3ZSBjYW4gcHJpbnQgYSB2YWx1ZSBvZiBgRm9vVHlw
ZWAuCisKK0luIGFkZGl0aW9uLCBpZiBgRm9vVHlwZWAgaXMgZGVjbGFyZWQgaW4gYSBuYW1lIHNw
YWNlLCB0aGUgYDw8YCBvcGVyYXRvciBhbHNvCituZWVkcyB0byBiZSBkZWZpbmVkIGluIHRoZSBf
c2FtZV8gbmFtZSBzcGFjZS4KKworIyMgSG93IGRvIEkgc3VwcHJlc3MgdGhlIG1lbW9yeSBsZWFr
IG1lc3NhZ2VzIG9uIFdpbmRvd3M/ICMjCisKK1NpbmNlIHRoZSBzdGF0aWNhbGx5IGluaXRpYWxp
emVkIEdvb2dsZSBUZXN0IHNpbmdsZXRvbiByZXF1aXJlcyBhbGxvY2F0aW9ucyBvbgordGhlIGhl
YXAsIHRoZSBWaXN1YWwgQysrIG1lbW9yeSBsZWFrIGRldGVjdG9yIHdpbGwgcmVwb3J0IG1lbW9y
eSBsZWFrcyBhdCB0aGUKK2VuZCBvZiB0aGUgcHJvZ3JhbSBydW4uIFRoZSBlYXNpZXN0IHdheSB0
byBhdm9pZCB0aGlzIGlzIHRvIHVzZSB0aGUKK2BfQ3J0TWVtQ2hlY2twb2ludGAgYW5kIGBfQ3J0
TWVtRHVtcEFsbE9iamVjdHNTaW5jZWAgY2FsbHMgdG8gbm90IHJlcG9ydCBhbnkKK3N0YXRpY2Fs
bHkgaW5pdGlhbGl6ZWQgaGVhcCBvYmplY3RzLiBTZWUgTVNETiBmb3IgbW9yZSBkZXRhaWxzIGFu
ZCBhZGRpdGlvbmFsCitoZWFwIGNoZWNrL2RlYnVnIHJvdXRpbmVzLgorCisjIyBJIGFtIGJ1aWxk
aW5nIG15IHByb2plY3Qgd2l0aCBHb29nbGUgVGVzdCBpbiBWaXN1YWwgU3R1ZGlvIGFuZCBhbGwg
SSdtIGdldHRpbmcgaXMgYSBidW5jaCBvZiBsaW5rZXIgZXJyb3JzIChvciB3YXJuaW5ncykuIEhl
bHAhICMjCisKK1lvdSBtYXkgZ2V0IGEgbnVtYmVyIG9mIHRoZSBmb2xsb3dpbmcgbGlua2VyIGVy
cm9yIG9yIHdhcm5pbmdzIGlmIHlvdQorYXR0ZW1wdCB0byBsaW5rIHlvdXIgdGVzdCBwcm9qZWN0
IHdpdGggdGhlIEdvb2dsZSBUZXN0IGxpYnJhcnkgd2hlbgoreW91ciBwcm9qZWN0IGFuZCB0aGUg
YXJlIG5vdCBidWlsdCB1c2luZyB0aGUgc2FtZSBjb21waWxlciBzZXR0aW5ncy4KKworICAqIExO
SzIwMDU6IHN5bWJvbCBhbHJlYWR5IGRlZmluZWQgaW4gb2JqZWN0CisgICogTE5LNDIxNzogbG9j
YWxseSBkZWZpbmVkIHN5bWJvbCAnc3ltYm9sJyBpbXBvcnRlZCBpbiBmdW5jdGlvbiAnZnVuY3Rp
b24nCisgICogTE5LNDA0OTogbG9jYWxseSBkZWZpbmVkIHN5bWJvbCAnc3ltYm9sJyBpbXBvcnRl
ZAorCitUaGUgR29vZ2xlIFRlc3QgcHJvamVjdCAoZ3Rlc3QudmNwcm9qKSBoYXMgdGhlIFJ1bnRp
bWUgTGlicmFyeSBvcHRpb24KK3NldCB0byAvTVQgKHVzZSBtdWx0aS10aHJlYWRlZCBzdGF0aWMg
bGlicmFyaWVzLCAvTVRkIGZvciBkZWJ1ZykuIElmCit5b3VyIHByb2plY3QgdXNlcyBzb21ldGhp
bmcgZWxzZSwgZm9yIGV4YW1wbGUgL01EICh1c2UgbXVsdGktdGhyZWFkZWQKK0RMTHMsIC9NRGQg
Zm9yIGRlYnVnKSwgeW91IG5lZWQgdG8gY2hhbmdlIHRoZSBzZXR0aW5nIGluIHRoZSBHb29nbGUK
K1Rlc3QgcHJvamVjdCB0byBtYXRjaCB5b3VyIHByb2plY3Qncy4KKworVG8gdXBkYXRlIHRoaXMg
c2V0dGluZyBvcGVuIHRoZSBwcm9qZWN0IHByb3BlcnRpZXMgaW4gdGhlIFZpc3VhbAorU3R1ZGlv
IElERSB0aGVuIHNlbGVjdCB0aGUgYnJhbmNoIENvbmZpZ3VyYXRpb24gUHJvcGVydGllcyB8IEMv
QysrIHwKK0NvZGUgR2VuZXJhdGlvbiBhbmQgY2hhbmdlIHRoZSBvcHRpb24gIlJ1bnRpbWUgTGli
cmFyeSIuICBZb3UgbWF5IGFsc28gdHJ5Cit1c2luZyBndGVzdC1tZC52Y3Byb2ogaW5zdGVhZCBv
ZiBndGVzdC52Y3Byb2ouCisKKyMjIEkgcHV0IG15IHRlc3RzIGluIGEgbGlicmFyeSBhbmQgR29v
Z2xlIFRlc3QgZG9lc24ndCBydW4gdGhlbS4gV2hhdCdzIGhhcHBlbmluZz8gIyMKK0hhdmUgeW91
IHJlYWQgYQorW3dhcm5pbmddKFByaW1lci5tZCNpbXBvcnRhbnQtbm90ZS1mb3ItdmlzdWFsLWMt
dXNlcnMpIG9uCit0aGUgR29vZ2xlIFRlc3QgUHJpbWVyIHBhZ2U/CisKKyMjIEkgd2FudCB0byB1
c2UgR29vZ2xlIFRlc3Qgd2l0aCBWaXN1YWwgU3R1ZGlvIGJ1dCBkb24ndCBrbm93IHdoZXJlIHRv
IHN0YXJ0LiAjIworTWFueSBwZW9wbGUgYXJlIGluIHlvdXIgcG9zaXRpb24gYW5kIG9uZSBvZiB0
aGUgcG9zdGVkIGhpcyBzb2x1dGlvbiB0bworb3VyIG1haWxpbmcgbGlzdC4KKworIyMgSSBhbSBz
ZWVpbmcgY29tcGlsZSBlcnJvcnMgbWVudGlvbmluZyBzdGQ6OnR5cGVcX3RyYWl0cyB3aGVuIEkg
dHJ5IHRvIHVzZSBHb29nbGUgVGVzdCBvbiBTb2xhcmlzLiAjIworR29vZ2xlIFRlc3QgdXNlcyBw
YXJ0cyBvZiB0aGUgc3RhbmRhcmQgQysrIGxpYnJhcnkgdGhhdCBTdW5TdHVkaW8gZG9lcyBub3Qg
c3VwcG9ydC4KK091ciB1c2VycyByZXBvcnRlZCBzdWNjZXNzIHVzaW5nIGFsdGVybmF0aXZlIGlt
cGxlbWVudGF0aW9ucy4gVHJ5IHJ1bm5pbmcgdGhlIGJ1aWxkIGFmdGVyIHJ1bmluZyB0aGlzIGNv
bW1hZDoKKworYGV4cG9ydCBDQz1jYyBDWFg9Q0MgQ1hYRkxBR1M9Jy1saWJyYXJ5PXN0bHBvcnQ0
J2AKKworIyMgSG93IGNhbiBteSBjb2RlIGRldGVjdCBpZiBpdCBpcyBydW5uaW5nIGluIGEgdGVz
dD8gIyMKKworSWYgeW91IHdyaXRlIGNvZGUgdGhhdCBzbmlmZnMgd2hldGhlciBpdCdzIHJ1bm5p
bmcgaW4gYSB0ZXN0IGFuZCBkb2VzCitkaWZmZXJlbnQgdGhpbmdzIGFjY29yZGluZ2x5LCB5b3Ug
YXJlIGxlYWtpbmcgdGVzdC1vbmx5IGxvZ2ljIGludG8KK3Byb2R1Y3Rpb24gY29kZSBhbmQgdGhl
cmUgaXMgbm8gZWFzeSB3YXkgdG8gZW5zdXJlIHRoYXQgdGhlIHRlc3Qtb25seQorY29kZSBwYXRo
cyBhcmVuJ3QgcnVuIGJ5IG1pc3Rha2UgaW4gcHJvZHVjdGlvbi4gIFN1Y2ggY2xldmVybmVzcyBh
bHNvCitsZWFkcyB0bworW0hlaXNlbmJ1Z3NdKGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kv
VW51c3VhbF9zb2Z0d2FyZV9idWcjSGVpc2VuYnVnKS4KK1RoZXJlZm9yZSB3ZSBzdHJvbmdseSBh
ZHZpc2UgYWdhaW5zdCB0aGUgcHJhY3RpY2UsIGFuZCBHb29nbGUgVGVzdCBkb2Vzbid0Citwcm92
aWRlIGEgd2F5IHRvIGRvIGl0LgorCitJbiBnZW5lcmFsLCB0aGUgcmVjb21tZW5kZWQgd2F5IHRv
IGNhdXNlIHRoZSBjb2RlIHRvIGJlaGF2ZQorZGlmZmVyZW50bHkgdW5kZXIgdGVzdCBpcyBbZGVw
ZW5kZW5jeSBpbmplY3Rpb25dKGh0dHA6Ly9qYW1lc3Nob3JlLmNvbS9CbG9nL0RlcGVuZGVuY3kt
SW5qZWN0aW9uLURlbXlzdGlmaWVkLmh0bWwpLgorWW91IGNhbiBpbmplY3QgZGlmZmVyZW50IGZ1
bmN0aW9uYWxpdHkgZnJvbSB0aGUgdGVzdCBhbmQgZnJvbSB0aGUKK3Byb2R1Y3Rpb24gY29kZS4g
IFNpbmNlIHlvdXIgcHJvZHVjdGlvbiBjb2RlIGRvZXNuJ3QgbGluayBpbiB0aGUKK2Zvci10ZXN0
IGxvZ2ljIGF0IGFsbCwgdGhlcmUgaXMgbm8gZGFuZ2VyIGluIGFjY2lkZW50YWxseSBydW5uaW5n
IGl0LgorCitIb3dldmVyLCBpZiB5b3UgX3JlYWxseV8sIF9yZWFsbHlfLCBfcmVhbGx5XyBoYXZl
IG5vIGNob2ljZSwgYW5kIGlmCit5b3UgZm9sbG93IHRoZSBydWxlIG9mIGVuZGluZyB5b3VyIHRl
c3QgcHJvZ3JhbSBuYW1lcyB3aXRoIGBfdGVzdGAsCit5b3UgY2FuIHVzZSB0aGUgX2hvcnJpYmxl
XyBoYWNrIG9mIHNuaWZmaW5nIHlvdXIgZXhlY3V0YWJsZSBuYW1lCisoYGFyZ3ZbMF1gIGluIGBt
YWluKClgKSB0byBrbm93IHdoZXRoZXIgdGhlIGNvZGUgaXMgdW5kZXIgdGVzdC4KKworIyMgR29v
Z2xlIFRlc3QgZGVmaW5lcyBhIG1hY3JvIHRoYXQgY2xhc2hlcyB3aXRoIG9uZSBkZWZpbmVkIGJ5
IGFub3RoZXIgbGlicmFyeS4gSG93IGRvIEkgZGVhbCB3aXRoIHRoYXQ/ICMjCisKK0luIEMrKywg
bWFjcm9zIGRvbid0IG9iZXkgbmFtZXNwYWNlcy4gIFRoZXJlZm9yZSB0d28gbGlicmFyaWVzIHRo
YXQKK2JvdGggZGVmaW5lIGEgbWFjcm8gb2YgdGhlIHNhbWUgbmFtZSB3aWxsIGNsYXNoIGlmIHlv
dSBgI2luY2x1ZGVgIGJvdGgKK2RlZmluaXRpb25zLiAgSW4gY2FzZSBhIEdvb2dsZSBUZXN0IG1h
Y3JvIGNsYXNoZXMgd2l0aCBhbm90aGVyCitsaWJyYXJ5LCB5b3UgY2FuIGZvcmNlIEdvb2dsZSBU
ZXN0IHRvIHJlbmFtZSBpdHMgbWFjcm8gdG8gYXZvaWQgdGhlCitjb25mbGljdC4KKworU3BlY2lm
aWNhbGx5LCBpZiBib3RoIEdvb2dsZSBUZXN0IGFuZCBzb21lIG90aGVyIGNvZGUgZGVmaW5lIG1h
Y3JvCitgRk9PYCwgeW91IGNhbiBhZGQKK2BgYAorICAtREdURVNUX0RPTlRfREVGSU5FX0ZPTz0x
CitgYGAKK3RvIHRoZSBjb21waWxlciBmbGFncyB0byB0ZWxsIEdvb2dsZSBUZXN0IHRvIGNoYW5n
ZSB0aGUgbWFjcm8ncyBuYW1lCitmcm9tIGBGT09gIHRvIGBHVEVTVF9GT09gLiBGb3IgZXhhbXBs
ZSwgd2l0aCBgLURHVEVTVF9ET05UX0RFRklORV9URVNUPTFgLCB5b3UnbGwgbmVlZCB0byB3cml0
ZQorYGBgIGNwcAorICBHVEVTVF9URVNUKFNvbWVUZXN0LCBEb2VzVGhpcykgeyAuLi4gfQorYGBg
CitpbnN0ZWFkIG9mCitgYGAgY3BwCisgIFRFU1QoU29tZVRlc3QsIERvZXNUaGlzKSB7IC4uLiB9
CitgYGAKK2luIG9yZGVyIHRvIGRlZmluZSBhIHRlc3QuCisKK0N1cnJlbnRseSwgdGhlIGZvbGxv
d2luZyBgVEVTVGAsIGBGQUlMYCwgYFNVQ0NFRURgLCBhbmQgdGhlIGJhc2ljIGNvbXBhcmlzb24g
YXNzZXJ0aW9uIG1hY3JvcyBjYW4gaGF2ZSBhbHRlcm5hdGl2ZSBuYW1lcy4gWW91IGNhbiBzZWUg
dGhlIGZ1bGwgbGlzdCBvZiBjb3ZlcmVkIG1hY3JvcyBbaGVyZV0oaHR0cDovL3d3dy5nb29nbGUu
Y29tL2NvZGVzZWFyY2g/cT1pZishR1RFU1RfRE9OVF9ERUZJTkVfXHclMkIrcGFja2FnZTpodHRw
Oi8vZ29vZ2xldGVzdFwuZ29vZ2xlY29kZVwuY29tK2ZpbGU6L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3Qu
aCkuIE1vcmUgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIHRoZSAiQXZvaWRpbmcgTWFjcm8g
TmFtZSBDbGFzaGVzIiBzZWN0aW9uIG9mIHRoZSBSRUFETUUgZmlsZS4KKworCisjIyBJcyBpdCBP
SyBpZiBJIGhhdmUgdHdvIHNlcGFyYXRlIGBURVNUKEZvbywgQmFyKWAgdGVzdCBtZXRob2RzIGRl
ZmluZWQgaW4gZGlmZmVyZW50IG5hbWVzcGFjZXM/ICMjCisKK1llcy4KKworVGhlIHJ1bGUgaXMg
KiphbGwgdGVzdCBtZXRob2RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2Ft
ZSBmaXh0dXJlIGNsYXNzKiouIFRoaXMgbWVhbnMgdGhhdCB0aGUgZm9sbG93aW5nIGlzICoqYWxs
b3dlZCoqIGJlY2F1c2UgYm90aCB0ZXN0cyB1c2UgdGhlIHNhbWUgZml4dHVyZSBjbGFzcyAoYDo6
dGVzdGluZzo6VGVzdGApLgorCitgYGAgY3BwCituYW1lc3BhY2UgZm9vIHsKK1RFU1QoQ29vbFRl
c3QsIERvU29tZXRoaW5nKSB7CisgIFNVQ0NFRUQoKTsKK30KK30gIC8vIG5hbWVzcGFjZSBmb28K
KworbmFtZXNwYWNlIGJhciB7CitURVNUKENvb2xUZXN0LCBEb1NvbWV0aGluZykgeworICBTVUND
RUVEKCk7Cit9Cit9ICAvLyBuYW1lc3BhY2UgZm9vCitgYGAKKworSG93ZXZlciwgdGhlIGZvbGxv
d2luZyBjb2RlIGlzICoqbm90IGFsbG93ZWQqKiBhbmQgd2lsbCBwcm9kdWNlIGEgcnVudGltZSBl
cnJvciBmcm9tIEdvb2dsZSBUZXN0IGJlY2F1c2UgdGhlIHRlc3QgbWV0aG9kcyBhcmUgdXNpbmcg
ZGlmZmVyZW50IHRlc3QgZml4dHVyZSBjbGFzc2VzIHdpdGggdGhlIHNhbWUgdGVzdCBjYXNlIG5h
bWUuCisKK2BgYCBjcHAKK25hbWVzcGFjZSBmb28geworY2xhc3MgQ29vbFRlc3QgOiBwdWJsaWMg
Ojp0ZXN0aW5nOjpUZXN0IHt9OyAgLy8gRml4dHVyZSBmb286OkNvb2xUZXN0CitURVNUX0YoQ29v
bFRlc3QsIERvU29tZXRoaW5nKSB7CisgIFNVQ0NFRUQoKTsKK30KK30gIC8vIG5hbWVzcGFjZSBm
b28KKworbmFtZXNwYWNlIGJhciB7CitjbGFzcyBDb29sVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6
OlRlc3Qge307ICAvLyBGaXh0dXJlOiBiYXI6OkNvb2xUZXN0CitURVNUX0YoQ29vbFRlc3QsIERv
U29tZXRoaW5nKSB7CisgIFNVQ0NFRUQoKTsKK30KK30gIC8vIG5hbWVzcGFjZSBmb28KK2BgYAor
CisjIyBIb3cgZG8gSSBidWlsZCBHb29nbGUgVGVzdGluZyBGcmFtZXdvcmsgd2l0aCBYY29kZSA0
PyAjIworCitJZiB5b3UgdHJ5IHRvIGJ1aWxkIEdvb2dsZSBUZXN0J3MgWGNvZGUgcHJvamVjdCB3
aXRoIFhjb2RlIDQuMCBvciBsYXRlciwgeW91IG1heSBlbmNvdW50ZXIgYW4gZXJyb3IgbWVzc2Fn
ZSB0aGF0IGxvb2tzIGxpa2UKKyJNaXNzaW5nIFNESyBpbiB0YXJnZXQgZ3Rlc3RcX2ZyYW1ld29y
azogL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayIuIFRoYXQgbWVhbnMgdGhhdCBYY29k
ZSBkb2VzIG5vdCBzdXBwb3J0IHRoZSBTREsgdGhlIHByb2plY3QgaXMgdGFyZ2V0aW5nLiBTZWUg
dGhlIFhjb2RlIHNlY3Rpb24gaW4gdGhlIFtSRUFETUVdKC4uL1JFQURNRS5tZCkgZmlsZSBvbiBo
b3cgdG8gcmVzb2x2ZSB0aGlzLgorCisjIyBNeSBxdWVzdGlvbiBpcyBub3QgY292ZXJlZCBpbiB5
b3VyIEZBUSEgIyMKKworSWYgeW91IGNhbm5vdCBmaW5kIHRoZSBhbnN3ZXIgdG8geW91ciBxdWVz
dGlvbiBpbiB0aGlzIEZBUSwgdGhlcmUgYXJlCitzb21lIG90aGVyIHJlc291cmNlcyB5b3UgY2Fu
IHVzZToKKworICAxLiByZWFkIG90aGVyIFt3aWtpIHBhZ2VzXSguLi9kb2NzKSwKKyAgMS4gc2Vh
cmNoIHRoZSBtYWlsaW5nIGxpc3QgW2FyY2hpdmVdKGh0dHBzOi8vZ3JvdXBzLmdvb2dsZS5jb20v
Zm9ydW0vIyFmb3J1bS9nb29nbGV0ZXN0ZnJhbWV3b3JrKSwKKyAgMS4gYXNrIGl0IG9uIFtnb29n
bGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb21dKG1haWx0bzpnb29nbGV0ZXN0ZnJhbWV3
b3JrQGdvb2dsZWdyb3Vwcy5jb20pIGFuZCBzb21lb25lIHdpbGwgYW5zd2VyIGl0ICh0byBwcmV2
ZW50IHNwYW0sIHdlIHJlcXVpcmUgeW91IHRvIGpvaW4gdGhlIFtkaXNjdXNzaW9uIGdyb3VwXSho
dHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXAvZ29vZ2xldGVzdGZyYW1ld29yaykgYmVmb3Jl
IHlvdSBjYW4gcG9zdC4pLgorCitQbGVhc2Ugbm90ZSB0aGF0IGNyZWF0aW5nIGFuIGlzc3VlIGlu
IHRoZQorW2lzc3VlIHRyYWNrZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xldGVz
dC9pc3N1ZXMpIGlzIF9ub3RfCithIGdvb2Qgd2F5IHRvIGdldCB5b3VyIGFuc3dlciwgYXMgaXQg
aXMgbW9uaXRvcmVkIGluZnJlcXVlbnRseSBieSBhCit2ZXJ5IHNtYWxsIG51bWJlciBvZiBwZW9w
bGUuCisKK1doZW4gYXNraW5nIGEgcXVlc3Rpb24sIGl0J3MgaGVscGZ1bCB0byBwcm92aWRlIGFz
IG11Y2ggb2YgdGhlCitmb2xsb3dpbmcgaW5mb3JtYXRpb24gYXMgcG9zc2libGUgKHBlb3BsZSBj
YW5ub3QgaGVscCB5b3UgaWYgdGhlcmUncworbm90IGVub3VnaCBpbmZvcm1hdGlvbiBpbiB5b3Vy
IHF1ZXN0aW9uKToKKworICAqIHRoZSB2ZXJzaW9uIChvciB0aGUgY29tbWl0IGhhc2ggaWYgeW91
IGNoZWNrIG91dCBmcm9tIEdpdCBkaXJlY3RseSkgb2YgR29vZ2xlIFRlc3QgeW91IHVzZSAoR29v
Z2xlIFRlc3QgaXMgdW5kZXIgYWN0aXZlIGRldmVsb3BtZW50LCBzbyBpdCdzIHBvc3NpYmxlIHRo
YXQgeW91ciBwcm9ibGVtIGhhcyBiZWVuIHNvbHZlZCBpbiBhIGxhdGVyIHZlcnNpb24pLAorICAq
IHlvdXIgb3BlcmF0aW5nIHN5c3RlbSwKKyAgKiB0aGUgbmFtZSBhbmQgdmVyc2lvbiBvZiB5b3Vy
IGNvbXBpbGVyLAorICAqIHRoZSBjb21wbGV0ZSBjb21tYW5kIGxpbmUgZmxhZ3MgeW91IGdpdmUg
dG8geW91ciBjb21waWxlciwKKyAgKiB0aGUgY29tcGxldGUgY29tcGlsZXIgZXJyb3IgbWVzc2Fn
ZXMgKGlmIHRoZSBxdWVzdGlvbiBpcyBhYm91dCBjb21waWxhdGlvbiksCisgICogdGhlIF9hY3R1
YWxfIGNvZGUgKGlkZWFsbHksIGEgbWluaW1hbCBidXQgY29tcGxldGUgcHJvZ3JhbSkgdGhhdCBo
YXMgdGhlIHByb2JsZW0geW91IGVuY291bnRlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2Rv
Y3MvUHJpbWVyLm1kIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9QcmltZXIubWQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDc0
YzFkMmFiNjMyMTkzMjAyZjViZmE3OTllYmQ2NDJkMGEzMDhhOAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L2RvY3MvUHJpbWVyLm1kCkBAIC0wLDAgKzEsNTAyIEBACisKKworIyBJbnRy
b2R1Y3Rpb246IFdoeSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrPyAjCisKK19Hb29nbGUg
QysrIFRlc3RpbmcgRnJhbWV3b3JrXyBoZWxwcyB5b3Ugd3JpdGUgYmV0dGVyIEMrKyB0ZXN0cy4K
KworTm8gbWF0dGVyIHdoZXRoZXIgeW91IHdvcmsgb24gTGludXgsIFdpbmRvd3MsIG9yIGEgTWFj
LCBpZiB5b3Ugd3JpdGUgQysrIGNvZGUsCitHb29nbGUgVGVzdCBjYW4gaGVscCB5b3UuCisKK1Nv
IHdoYXQgbWFrZXMgYSBnb29kIHRlc3QsIGFuZCBob3cgZG9lcyBHb29nbGUgQysrIFRlc3Rpbmcg
RnJhbWV3b3JrIGZpdCBpbj8gV2UgYmVsaWV2ZToKKyAgMS4gVGVzdHMgc2hvdWxkIGJlIF9pbmRl
cGVuZGVudF8gYW5kIF9yZXBlYXRhYmxlXy4gSXQncyBhIHBhaW4gdG8gZGVidWcgYSB0ZXN0IHRo
YXQgc3VjY2VlZHMgb3IgZmFpbHMgYXMgYSByZXN1bHQgb2Ygb3RoZXIgdGVzdHMuICBHb29nbGUg
QysrIFRlc3RpbmcgRnJhbWV3b3JrIGlzb2xhdGVzIHRoZSB0ZXN0cyBieSBydW5uaW5nIGVhY2gg
b2YgdGhlbSBvbiBhIGRpZmZlcmVudCBvYmplY3QuIFdoZW4gYSB0ZXN0IGZhaWxzLCBHb29nbGUg
QysrIFRlc3RpbmcgRnJhbWV3b3JrIGFsbG93cyB5b3UgdG8gcnVuIGl0IGluIGlzb2xhdGlvbiBm
b3IgcXVpY2sgZGVidWdnaW5nLgorICAxLiBUZXN0cyBzaG91bGQgYmUgd2VsbCBfb3JnYW5pemVk
XyBhbmQgcmVmbGVjdCB0aGUgc3RydWN0dXJlIG9mIHRoZSB0ZXN0ZWQgY29kZS4gIEdvb2dsZSBD
KysgVGVzdGluZyBGcmFtZXdvcmsgZ3JvdXBzIHJlbGF0ZWQgdGVzdHMgaW50byB0ZXN0IGNhc2Vz
IHRoYXQgY2FuIHNoYXJlIGRhdGEgYW5kIHN1YnJvdXRpbmVzLiBUaGlzIGNvbW1vbiBwYXR0ZXJu
IGlzIGVhc3kgdG8gcmVjb2duaXplIGFuZCBtYWtlcyB0ZXN0cyBlYXN5IHRvIG1haW50YWluLiBT
dWNoIGNvbnNpc3RlbmN5IGlzIGVzcGVjaWFsbHkgaGVscGZ1bCB3aGVuIHBlb3BsZSBzd2l0Y2gg
cHJvamVjdHMgYW5kIHN0YXJ0IHRvIHdvcmsgb24gYSBuZXcgY29kZSBiYXNlLgorICAxLiBUZXN0
cyBzaG91bGQgYmUgX3BvcnRhYmxlXyBhbmQgX3JldXNhYmxlXy4gVGhlIG9wZW4tc291cmNlIGNv
bW11bml0eSBoYXMgYSBsb3Qgb2YgY29kZSB0aGF0IGlzIHBsYXRmb3JtLW5ldXRyYWwsIGl0cyB0
ZXN0cyBzaG91bGQgYWxzbyBiZSBwbGF0Zm9ybS1uZXV0cmFsLiAgR29vZ2xlIEMrKyBUZXN0aW5n
IEZyYW1ld29yayB3b3JrcyBvbiBkaWZmZXJlbnQgT1Nlcywgd2l0aCBkaWZmZXJlbnQgY29tcGls
ZXJzIChnY2MsIE1TVkMsIGFuZCBvdGhlcnMpLCB3aXRoIG9yIHdpdGhvdXQgZXhjZXB0aW9ucywg
c28gR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayB0ZXN0cyBjYW4gZWFzaWx5IHdvcmsgd2l0
aCBhIHZhcmlldHkgb2YgY29uZmlndXJhdGlvbnMuICAoTm90ZSB0aGF0IHRoZSBjdXJyZW50IHJl
bGVhc2Ugb25seSBjb250YWlucyBidWlsZCBzY3JpcHRzIGZvciBMaW51eCAtIHdlIGFyZSBhY3Rp
dmVseSB3b3JraW5nIG9uIHNjcmlwdHMgZm9yIG90aGVyIHBsYXRmb3Jtcy4pCisgIDEuIFdoZW4g
dGVzdHMgZmFpbCwgdGhleSBzaG91bGQgcHJvdmlkZSBhcyBtdWNoIF9pbmZvcm1hdGlvbl8gYWJv
dXQgdGhlIHByb2JsZW0gYXMgcG9zc2libGUuIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsg
ZG9lc24ndCBzdG9wIGF0IHRoZSBmaXJzdCB0ZXN0IGZhaWx1cmUuIEluc3RlYWQsIGl0IG9ubHkg
c3RvcHMgdGhlIGN1cnJlbnQgdGVzdCBhbmQgY29udGludWVzIHdpdGggdGhlIG5leHQuIFlvdSBj
YW4gYWxzbyBzZXQgdXAgdGVzdHMgdGhhdCByZXBvcnQgbm9uLWZhdGFsIGZhaWx1cmVzIGFmdGVy
IHdoaWNoIHRoZSBjdXJyZW50IHRlc3QgY29udGludWVzLiBUaHVzLCB5b3UgY2FuIGRldGVjdCBh
bmQgZml4IG11bHRpcGxlIGJ1Z3MgaW4gYSBzaW5nbGUgcnVuLWVkaXQtY29tcGlsZSBjeWNsZS4K
KyAgMS4gVGhlIHRlc3RpbmcgZnJhbWV3b3JrIHNob3VsZCBsaWJlcmF0ZSB0ZXN0IHdyaXRlcnMg
ZnJvbSBob3VzZWtlZXBpbmcgY2hvcmVzIGFuZCBsZXQgdGhlbSBmb2N1cyBvbiB0aGUgdGVzdCBf
Y29udGVudF8uICBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIGF1dG9tYXRpY2FsbHkga2Vl
cHMgdHJhY2sgb2YgYWxsIHRlc3RzIGRlZmluZWQsIGFuZCBkb2Vzbid0IHJlcXVpcmUgdGhlIHVz
ZXIgdG8gZW51bWVyYXRlIHRoZW0gaW4gb3JkZXIgdG8gcnVuIHRoZW0uCisgIDEuIFRlc3RzIHNo
b3VsZCBiZSBfZmFzdF8uIFdpdGggR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yaywgeW91IGNh
biByZXVzZSBzaGFyZWQgcmVzb3VyY2VzIGFjcm9zcyB0ZXN0cyBhbmQgcGF5IGZvciB0aGUgc2V0
LXVwL3RlYXItZG93biBvbmx5IG9uY2UsIHdpdGhvdXQgbWFraW5nIHRlc3RzIGRlcGVuZCBvbiBl
YWNoIG90aGVyLgorCitTaW5jZSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIGlzIGJhc2Vk
IG9uIHRoZSBwb3B1bGFyIHhVbml0CithcmNoaXRlY3R1cmUsIHlvdSdsbCBmZWVsIHJpZ2h0IGF0
IGhvbWUgaWYgeW91J3ZlIHVzZWQgSlVuaXQgb3IgUHlVbml0IGJlZm9yZS4KK0lmIG5vdCwgaXQg
d2lsbCB0YWtlIHlvdSBhYm91dCAxMCBtaW51dGVzIHRvIGxlYXJuIHRoZSBiYXNpY3MgYW5kIGdl
dCBzdGFydGVkLgorU28gbGV0J3MgZ28hCisKK19Ob3RlOl8gV2Ugc29tZXRpbWVzIHJlZmVyIHRv
IEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgaW5mb3JtYWxseQorYXMgX0dvb2dsZSBUZXN0
Xy4KKworIyBTZXR0aW5nIHVwIGEgTmV3IFRlc3QgUHJvamVjdCAjCisKK1RvIHdyaXRlIGEgdGVz
dCBwcm9ncmFtIHVzaW5nIEdvb2dsZSBUZXN0LCB5b3UgbmVlZCB0byBjb21waWxlIEdvb2dsZQor
VGVzdCBpbnRvIGEgbGlicmFyeSBhbmQgbGluayB5b3VyIHRlc3Qgd2l0aCBpdC4gIFdlIHByb3Zp
ZGUgYnVpbGQKK2ZpbGVzIGZvciBzb21lIHBvcHVsYXIgYnVpbGQgc3lzdGVtczogYG1zdmMvYCBm
b3IgVmlzdWFsIFN0dWRpbywKK2B4Y29kZS9gIGZvciBNYWMgWGNvZGUsIGBtYWtlL2AgZm9yIEdO
VSBtYWtlLCBgY29kZWdlYXIvYCBmb3IgQm9ybGFuZAorQysrIEJ1aWxkZXIsIGFuZCB0aGUgYXV0
b3Rvb2xzIHNjcmlwdCAoZGVwcmVjYXRlZCkgYW5kCitgQ01ha2VMaXN0cy50eHRgIGZvciBDTWFr
ZSAocmVjb21tZW5kZWQpIGluIHRoZSBHb29nbGUgVGVzdCByb290CitkaXJlY3RvcnkuICBJZiB5
b3VyIGJ1aWxkIHN5c3RlbSBpcyBub3Qgb24gdGhpcyBsaXN0LCB5b3UgY2FuIHRha2UgYQorbG9v
ayBhdCBgbWFrZS9NYWtlZmlsZWAgdG8gbGVhcm4gaG93IEdvb2dsZSBUZXN0IHNob3VsZCBiZSBj
b21waWxlZAorKGJhc2ljYWxseSB5b3Ugd2FudCB0byBjb21waWxlIGBzcmMvZ3Rlc3QtYWxsLmNj
YCB3aXRoIGBHVEVTVF9ST09UYAorYW5kIGBHVEVTVF9ST09UL2luY2x1ZGVgIGluIHRoZSBoZWFk
ZXIgc2VhcmNoIHBhdGgsIHdoZXJlIGBHVEVTVF9ST09UYAoraXMgdGhlIEdvb2dsZSBUZXN0IHJv
b3QgZGlyZWN0b3J5KS4KKworT25jZSB5b3UgYXJlIGFibGUgdG8gY29tcGlsZSB0aGUgR29vZ2xl
IFRlc3QgbGlicmFyeSwgeW91IHNob3VsZAorY3JlYXRlIGEgcHJvamVjdCBvciBidWlsZCB0YXJn
ZXQgZm9yIHlvdXIgdGVzdCBwcm9ncmFtLiAgTWFrZSBzdXJlIHlvdQoraGF2ZSBgR1RFU1RfUk9P
VC9pbmNsdWRlYCBpbiB0aGUgaGVhZGVyIHNlYXJjaCBwYXRoIHNvIHRoYXQgdGhlCitjb21waWxl
ciBjYW4gZmluZCBgImd0ZXN0L2d0ZXN0LmgiYCB3aGVuIGNvbXBpbGluZyB5b3VyIHRlc3QuICBT
ZXQgdXAKK3lvdXIgdGVzdCBwcm9qZWN0IHRvIGxpbmsgd2l0aCB0aGUgR29vZ2xlIFRlc3QgbGli
cmFyeSAoZm9yIGV4YW1wbGUsCitpbiBWaXN1YWwgU3R1ZGlvLCB0aGlzIGlzIGRvbmUgYnkgYWRk
aW5nIGEgZGVwZW5kZW5jeSBvbgorYGd0ZXN0LnZjcHJvamApLgorCitJZiB5b3Ugc3RpbGwgaGF2
ZSBxdWVzdGlvbnMsIHRha2UgYSBsb29rIGF0IGhvdyBHb29nbGUgVGVzdCdzIG93bgordGVzdHMg
YXJlIGJ1aWx0IGFuZCB1c2UgdGhlbSBhcyBleGFtcGxlcy4KKworIyBCYXNpYyBDb25jZXB0cyAj
CisKK1doZW4gdXNpbmcgR29vZ2xlIFRlc3QsIHlvdSBzdGFydCBieSB3cml0aW5nIF9hc3NlcnRp
b25zXywgd2hpY2ggYXJlIHN0YXRlbWVudHMKK3RoYXQgY2hlY2sgd2hldGhlciBhIGNvbmRpdGlv
biBpcyB0cnVlLiBBbiBhc3NlcnRpb24ncyByZXN1bHQgY2FuIGJlIF9zdWNjZXNzXywKK19ub25m
YXRhbCBmYWlsdXJlXywgb3IgX2ZhdGFsIGZhaWx1cmVfLiBJZiBhIGZhdGFsIGZhaWx1cmUgb2Nj
dXJzLCBpdCBhYm9ydHMKK3RoZSBjdXJyZW50IGZ1bmN0aW9uOyBvdGhlcndpc2UgdGhlIHByb2dy
YW0gY29udGludWVzIG5vcm1hbGx5LgorCitfVGVzdHNfIHVzZSBhc3NlcnRpb25zIHRvIHZlcmlm
eSB0aGUgdGVzdGVkIGNvZGUncyBiZWhhdmlvci4gSWYgYSB0ZXN0IGNyYXNoZXMKK29yIGhhcyBh
IGZhaWxlZCBhc3NlcnRpb24sIHRoZW4gaXQgX2ZhaWxzXzsgb3RoZXJ3aXNlIGl0IF9zdWNjZWVk
c18uCisKK0EgX3Rlc3QgY2FzZV8gY29udGFpbnMgb25lIG9yIG1hbnkgdGVzdHMuIFlvdSBzaG91
bGQgZ3JvdXAgeW91ciB0ZXN0cyBpbnRvIHRlc3QKK2Nhc2VzIHRoYXQgcmVmbGVjdCB0aGUgc3Ry
dWN0dXJlIG9mIHRoZSB0ZXN0ZWQgY29kZS4gV2hlbiBtdWx0aXBsZSB0ZXN0cyBpbiBhCit0ZXN0
IGNhc2UgbmVlZCB0byBzaGFyZSBjb21tb24gb2JqZWN0cyBhbmQgc3Vicm91dGluZXMsIHlvdSBj
YW4gcHV0IHRoZW0gaW50byBhCitfdGVzdCBmaXh0dXJlXyBjbGFzcy4KKworQSBfdGVzdCBwcm9n
cmFtXyBjYW4gY29udGFpbiBtdWx0aXBsZSB0ZXN0IGNhc2VzLgorCitXZSdsbCBub3cgZXhwbGFp
biBob3cgdG8gd3JpdGUgYSB0ZXN0IHByb2dyYW0sIHN0YXJ0aW5nIGF0IHRoZSBpbmRpdmlkdWFs
Cithc3NlcnRpb24gbGV2ZWwgYW5kIGJ1aWxkaW5nIHVwIHRvIHRlc3RzIGFuZCB0ZXN0IGNhc2Vz
LgorCisjIEFzc2VydGlvbnMgIworCitHb29nbGUgVGVzdCBhc3NlcnRpb25zIGFyZSBtYWNyb3Mg
dGhhdCByZXNlbWJsZSBmdW5jdGlvbiBjYWxscy4gWW91IHRlc3QgYQorY2xhc3Mgb3IgZnVuY3Rp
b24gYnkgbWFraW5nIGFzc2VydGlvbnMgYWJvdXQgaXRzIGJlaGF2aW9yLiBXaGVuIGFuIGFzc2Vy
dGlvbgorZmFpbHMsIEdvb2dsZSBUZXN0IHByaW50cyB0aGUgYXNzZXJ0aW9uJ3Mgc291cmNlIGZp
bGUgYW5kIGxpbmUgbnVtYmVyIGxvY2F0aW9uLAorYWxvbmcgd2l0aCBhIGZhaWx1cmUgbWVzc2Fn
ZS4gWW91IG1heSBhbHNvIHN1cHBseSBhIGN1c3RvbSBmYWlsdXJlIG1lc3NhZ2UKK3doaWNoIHdp
bGwgYmUgYXBwZW5kZWQgdG8gR29vZ2xlIFRlc3QncyBtZXNzYWdlLgorCitUaGUgYXNzZXJ0aW9u
cyBjb21lIGluIHBhaXJzIHRoYXQgdGVzdCB0aGUgc2FtZSB0aGluZyBidXQgaGF2ZSBkaWZmZXJl
bnQKK2VmZmVjdHMgb24gdGhlIGN1cnJlbnQgZnVuY3Rpb24uIGBBU1NFUlRfKmAgdmVyc2lvbnMg
Z2VuZXJhdGUgZmF0YWwgZmFpbHVyZXMKK3doZW4gdGhleSBmYWlsLCBhbmQgKiphYm9ydCB0aGUg
Y3VycmVudCBmdW5jdGlvbioqLiBgRVhQRUNUXypgIHZlcnNpb25zIGdlbmVyYXRlCitub25mYXRh
bCBmYWlsdXJlcywgd2hpY2ggZG9uJ3QgYWJvcnQgdGhlIGN1cnJlbnQgZnVuY3Rpb24uIFVzdWFs
bHkgYEVYUEVDVF8qYAorYXJlIHByZWZlcnJlZCwgYXMgdGhleSBhbGxvdyBtb3JlIHRoYW4gb25l
IGZhaWx1cmVzIHRvIGJlIHJlcG9ydGVkIGluIGEgdGVzdC4KK0hvd2V2ZXIsIHlvdSBzaG91bGQg
dXNlIGBBU1NFUlRfKmAgaWYgaXQgZG9lc24ndCBtYWtlIHNlbnNlIHRvIGNvbnRpbnVlIHdoZW4K
K3RoZSBhc3NlcnRpb24gaW4gcXVlc3Rpb24gZmFpbHMuCisKK1NpbmNlIGEgZmFpbGVkIGBBU1NF
UlRfKmAgcmV0dXJucyBmcm9tIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGltbWVkaWF0ZWx5LAorcG9z
c2libHkgc2tpcHBpbmcgY2xlYW4tdXAgY29kZSB0aGF0IGNvbWVzIGFmdGVyIGl0LCBpdCBtYXkg
Y2F1c2UgYSBzcGFjZSBsZWFrLgorRGVwZW5kaW5nIG9uIHRoZSBuYXR1cmUgb2YgdGhlIGxlYWss
IGl0IG1heSBvciBtYXkgbm90IGJlIHdvcnRoIGZpeGluZyAtIHNvCitrZWVwIHRoaXMgaW4gbWlu
ZCBpZiB5b3UgZ2V0IGEgaGVhcCBjaGVja2VyIGVycm9yIGluIGFkZGl0aW9uIHRvIGFzc2VydGlv
bgorZXJyb3JzLgorCitUbyBwcm92aWRlIGEgY3VzdG9tIGZhaWx1cmUgbWVzc2FnZSwgc2ltcGx5
IHN0cmVhbSBpdCBpbnRvIHRoZSBtYWNybyB1c2luZyB0aGUKK2A8PGAgb3BlcmF0b3IsIG9yIGEg
c2VxdWVuY2Ugb2Ygc3VjaCBvcGVyYXRvcnMuIEFuIGV4YW1wbGU6CitgYGAKK0FTU0VSVF9FUSh4
LnNpemUoKSwgeS5zaXplKCkpIDw8ICJWZWN0b3JzIHggYW5kIHkgYXJlIG9mIHVuZXF1YWwgbGVu
Z3RoIjsKKworZm9yIChpbnQgaSA9IDA7IGkgPCB4LnNpemUoKTsgKytpKSB7CisgIEVYUEVDVF9F
USh4W2ldLCB5W2ldKSA8PCAiVmVjdG9ycyB4IGFuZCB5IGRpZmZlciBhdCBpbmRleCAiIDw8IGk7
Cit9CitgYGAKKworQW55dGhpbmcgdGhhdCBjYW4gYmUgc3RyZWFtZWQgdG8gYW4gYG9zdHJlYW1g
IGNhbiBiZSBzdHJlYW1lZCB0byBhbiBhc3NlcnRpb24KK21hY3JvLS1pbiBwYXJ0aWN1bGFyLCBD
IHN0cmluZ3MgYW5kIGBzdHJpbmdgIG9iamVjdHMuIElmIGEgd2lkZSBzdHJpbmcKKyhgd2NoYXJf
dCpgLCBgVENIQVIqYCBpbiBgVU5JQ09ERWAgbW9kZSBvbiBXaW5kb3dzLCBvciBgc3RkOjp3c3Ry
aW5nYCkgaXMKK3N0cmVhbWVkIHRvIGFuIGFzc2VydGlvbiwgaXQgd2lsbCBiZSB0cmFuc2xhdGVk
IHRvIFVURi04IHdoZW4gcHJpbnRlZC4KKworIyMgQmFzaWMgQXNzZXJ0aW9ucyAjIworCitUaGVz
ZSBhc3NlcnRpb25zIGRvIGJhc2ljIHRydWUvZmFsc2UgY29uZGl0aW9uIHRlc3RpbmcuCisKK3wg
KipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVz
KiogfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0t
LS0tLS0tLS0tLS18Cit8IGBBU1NFUlRfVFJVRShgX2NvbmRpdGlvbl9gKWA7ICB8IGBFWFBFQ1Rf
VFJVRShgX2NvbmRpdGlvbl9gKWA7ICAgfCBfY29uZGl0aW9uXyBpcyB0cnVlIHwKK3wgYEFTU0VS
VF9GQUxTRShgX2NvbmRpdGlvbl9gKWA7IHwgYEVYUEVDVF9GQUxTRShgX2NvbmRpdGlvbl9gKWA7
ICB8IF9jb25kaXRpb25fIGlzIGZhbHNlIHwKKworUmVtZW1iZXIsIHdoZW4gdGhleSBmYWlsLCBg
QVNTRVJUXypgIHlpZWxkcyBhIGZhdGFsIGZhaWx1cmUgYW5kCityZXR1cm5zIGZyb20gdGhlIGN1
cnJlbnQgZnVuY3Rpb24sIHdoaWxlIGBFWFBFQ1RfKmAgeWllbGRzIGEgbm9uZmF0YWwKK2ZhaWx1
cmUsIGFsbG93aW5nIHRoZSBmdW5jdGlvbiB0byBjb250aW51ZSBydW5uaW5nLiBJbiBlaXRoZXIg
Y2FzZSwgYW4KK2Fzc2VydGlvbiBmYWlsdXJlIG1lYW5zIGl0cyBjb250YWluaW5nIHRlc3QgZmFp
bHMuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyBCaW5hcnkg
Q29tcGFyaXNvbiAjIworCitUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGFzc2VydGlvbnMgdGhhdCBj
b21wYXJlIHR3byB2YWx1ZXMuCisKK3wgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwg
YXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8YEFTU0VSVF9FUShgX3ZhbDFf
YCwgYF92YWwyX2ApO2B8YEVYUEVDVF9FUShgX3ZhbDFfYCwgYF92YWwyX2ApO2B8IF92YWwxXyBg
PT1gIF92YWwyXyB8Cit8YEFTU0VSVF9ORShgX3ZhbDFfYCwgYF92YWwyX2ApO2B8YEVYUEVDVF9O
RShgX3ZhbDFfYCwgYF92YWwyX2ApO2B8IF92YWwxXyBgIT1gIF92YWwyXyB8Cit8YEFTU0VSVF9M
VChgX3ZhbDFfYCwgYF92YWwyX2ApO2B8YEVYUEVDVF9MVChgX3ZhbDFfYCwgYF92YWwyX2ApO2B8
IF92YWwxXyBgPGAgX3ZhbDJfIHwKK3xgQVNTRVJUX0xFKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YHxg
RVhQRUNUX0xFKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YHwgX3ZhbDFfIGA8PWAgX3ZhbDJfIHwKK3xg
QVNTRVJUX0dUKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YHxgRVhQRUNUX0dUKGBfdmFsMV9gLCBgX3Zh
bDJfYCk7YHwgX3ZhbDFfIGA+YCBfdmFsMl8gfAorfGBBU1NFUlRfR0UoYF92YWwxX2AsIGBfdmFs
Ml9gKTtgfGBFWFBFQ1RfR0UoYF92YWwxX2AsIGBfdmFsMl9gKTtgfCBfdmFsMV8gYD49YCBfdmFs
Ml8gfAorCitJbiB0aGUgZXZlbnQgb2YgYSBmYWlsdXJlLCBHb29nbGUgVGVzdCBwcmludHMgYm90
aCBfdmFsMV8gYW5kIF92YWwyXy4KKworVmFsdWUgYXJndW1lbnRzIG11c3QgYmUgY29tcGFyYWJs
ZSBieSB0aGUgYXNzZXJ0aW9uJ3MgY29tcGFyaXNvbgorb3BlcmF0b3Igb3IgeW91J2xsIGdldCBh
IGNvbXBpbGVyIGVycm9yLiAgV2UgdXNlZCB0byByZXF1aXJlIHRoZQorYXJndW1lbnRzIHRvIHN1
cHBvcnQgdGhlIGA8PGAgb3BlcmF0b3IgZm9yIHN0cmVhbWluZyB0byBhbiBgb3N0cmVhbWAsCiti
dXQgaXQncyBubyBsb25nZXIgbmVjZXNzYXJ5IHNpbmNlIHYxLjYuMCAoaWYgYDw8YCBpcyBzdXBw
b3J0ZWQsIGl0Cit3aWxsIGJlIGNhbGxlZCB0byBwcmludCB0aGUgYXJndW1lbnRzIHdoZW4gdGhl
IGFzc2VydGlvbiBmYWlsczsKK290aGVyd2lzZSBHb29nbGUgVGVzdCB3aWxsIGF0dGVtcHQgdG8g
cHJpbnQgdGhlbSBpbiB0aGUgYmVzdCB3YXkgaXQKK2Nhbi4gRm9yIG1vcmUgZGV0YWlscyBhbmQg
aG93IHRvIGN1c3RvbWl6ZSB0aGUgcHJpbnRpbmcgb2YgdGhlCithcmd1bWVudHMsIHNlZSB0aGlz
IEdvb2dsZSBNb2NrIFtyZWNpcGVdKC4uLy4uL2dvb2dsZW1vY2svZG9jcy9Db29rQm9vay5tZCN0
ZWFjaGluZy1nb29nbGUtbW9jay1ob3ctdG8tcHJpbnQteW91ci12YWx1ZXMpLikuCisKK1RoZXNl
IGFzc2VydGlvbnMgY2FuIHdvcmsgd2l0aCBhIHVzZXItZGVmaW5lZCB0eXBlLCBidXQgb25seSBp
ZiB5b3UgZGVmaW5lIHRoZQorY29ycmVzcG9uZGluZyBjb21wYXJpc29uIG9wZXJhdG9yIChlLmcu
IGA9PWAsIGA8YCwgZXRjKS4gIElmIHRoZSBjb3JyZXNwb25kaW5nCitvcGVyYXRvciBpcyBkZWZp
bmVkLCBwcmVmZXIgdXNpbmcgdGhlIGBBU1NFUlRfKigpYCBtYWNyb3MgYmVjYXVzZSB0aGV5IHdp
bGwKK3ByaW50IG91dCBub3Qgb25seSB0aGUgcmVzdWx0IG9mIHRoZSBjb21wYXJpc29uLCBidXQg
dGhlIHR3byBvcGVyYW5kcyBhcyB3ZWxsLgorCitBcmd1bWVudHMgYXJlIGFsd2F5cyBldmFsdWF0
ZWQgZXhhY3RseSBvbmNlLiBUaGVyZWZvcmUsIGl0J3MgT0sgZm9yIHRoZQorYXJndW1lbnRzIHRv
IGhhdmUgc2lkZSBlZmZlY3RzLiBIb3dldmVyLCBhcyB3aXRoIGFueSBvcmRpbmFyeSBDL0MrKyBm
dW5jdGlvbiwKK3RoZSBhcmd1bWVudHMnIGV2YWx1YXRpb24gb3JkZXIgaXMgdW5kZWZpbmVkIChp
LmUuIHRoZSBjb21waWxlciBpcyBmcmVlIHRvCitjaG9vc2UgYW55IG9yZGVyKSBhbmQgeW91ciBj
b2RlIHNob3VsZCBub3QgZGVwZW5kIG9uIGFueSBwYXJ0aWN1bGFyIGFyZ3VtZW50CitldmFsdWF0
aW9uIG9yZGVyLgorCitgQVNTRVJUX0VRKClgIGRvZXMgcG9pbnRlciBlcXVhbGl0eSBvbiBwb2lu
dGVycy4gSWYgdXNlZCBvbiB0d28gQyBzdHJpbmdzLCBpdAordGVzdHMgaWYgdGhleSBhcmUgaW4g
dGhlIHNhbWUgbWVtb3J5IGxvY2F0aW9uLCBub3QgaWYgdGhleSBoYXZlIHRoZSBzYW1lIHZhbHVl
LgorVGhlcmVmb3JlLCBpZiB5b3Ugd2FudCB0byBjb21wYXJlIEMgc3RyaW5ncyAoZS5nLiBgY29u
c3QgY2hhcipgKSBieSB2YWx1ZSwgdXNlCitgQVNTRVJUX1NUUkVRKClgICwgd2hpY2ggd2lsbCBi
ZSBkZXNjcmliZWQgbGF0ZXIgb24uIEluIHBhcnRpY3VsYXIsIHRvIGFzc2VydAordGhhdCBhIEMg
c3RyaW5nIGlzIGBOVUxMYCwgdXNlIGBBU1NFUlRfU1RSRVEoTlVMTCwgY19zdHJpbmcpYCAuIEhv
d2V2ZXIsIHRvCitjb21wYXJlIHR3byBgc3RyaW5nYCBvYmplY3RzLCB5b3Ugc2hvdWxkIHVzZSBg
QVNTRVJUX0VRYC4KKworTWFjcm9zIGluIHRoaXMgc2VjdGlvbiB3b3JrIHdpdGggYm90aCBuYXJy
b3cgYW5kIHdpZGUgc3RyaW5nIG9iamVjdHMgKGBzdHJpbmdgCithbmQgYHdzdHJpbmdgKS4KKwor
X0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKK19IaXN0b3JpY2FsIG5vdGVf
OiBCZWZvcmUgRmVicnVhcnkgMjAxNiBgKl9FUWAgaGFkIGEgY29udmVudGlvbiBvZiBjYWxsaW5n
IGl0IGFzCitgQVNTRVJUX0VRKGV4cGVjdGVkLCBhY3R1YWwpYCwgc28gbG90cyBvZiBleGlzdGlu
ZyBjb2RlIHVzZXMgdGhpcyBvcmRlci4KK05vdyBgKl9FUWAgdHJlYXRzIGJvdGggcGFyYW1ldGVy
cyBpbiB0aGUgc2FtZSB3YXkuCisKKyMjIFN0cmluZyBDb21wYXJpc29uICMjCisKK1RoZSBhc3Nl
cnRpb25zIGluIHRoaXMgZ3JvdXAgY29tcGFyZSB0d28gKipDIHN0cmluZ3MqKi4gSWYgeW91IHdh
bnQgdG8gY29tcGFyZQordHdvIGBzdHJpbmdgIG9iamVjdHMsIHVzZSBgRVhQRUNUX0VRYCwgYEVY
UEVDVF9ORWAsIGFuZCBldGMgaW5zdGVhZC4KKworfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipO
b25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0t
LS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKK3wgYEFTU0VSVF9T
VFJFUShgX3N0cjFfYCwgYF9zdHIyX2ApO2AgICAgfCBgRVhQRUNUX1NUUkVRKGBfc3RyMV9gLCBg
X3N0cl8yYCk7YCAgICAgfCB0aGUgdHdvIEMgc3RyaW5ncyBoYXZlIHRoZSBzYW1lIGNvbnRlbnQg
fAorfCBgQVNTRVJUX1NUUk5FKGBfc3RyMV9gLCBgX3N0cjJfYCk7YCAgICB8IGBFWFBFQ1RfU1RS
TkUoYF9zdHIxX2AsIGBfc3RyMl9gKTtgICAgICB8IHRoZSB0d28gQyBzdHJpbmdzIGhhdmUgZGlm
ZmVyZW50IGNvbnRlbnQgfAorfCBgQVNTRVJUX1NUUkNBU0VFUShgX3N0cjFfYCwgYF9zdHIyX2Ap
O2B8IGBFWFBFQ1RfU1RSQ0FTRUVRKGBfc3RyMV9gLCBgX3N0cjJfYCk7YCB8IHRoZSB0d28gQyBz
dHJpbmdzIGhhdmUgdGhlIHNhbWUgY29udGVudCwgaWdub3JpbmcgY2FzZSB8Cit8IGBBU1NFUlRf
U1RSQ0FTRU5FKGBfc3RyMV9gLCBgX3N0cjJfYCk7YHwgYEVYUEVDVF9TVFJDQVNFTkUoYF9zdHIx
X2AsIGBfc3RyMl9gKTtgIHwgdGhlIHR3byBDIHN0cmluZ3MgaGF2ZSBkaWZmZXJlbnQgY29udGVu
dCwgaWdub3JpbmcgY2FzZSB8CisKK05vdGUgdGhhdCAiQ0FTRSIgaW4gYW4gYXNzZXJ0aW9uIG5h
bWUgbWVhbnMgdGhhdCBjYXNlIGlzIGlnbm9yZWQuCisKK2AqU1RSRVEqYCBhbmQgYCpTVFJORSpg
IGFsc28gYWNjZXB0IHdpZGUgQyBzdHJpbmdzIChgd2NoYXJfdCpgKS4gSWYgYQorY29tcGFyaXNv
biBvZiB0d28gd2lkZSBzdHJpbmdzIGZhaWxzLCB0aGVpciB2YWx1ZXMgd2lsbCBiZSBwcmludGVk
IGFzIFVURi04CituYXJyb3cgc3RyaW5ncy4KKworQSBgTlVMTGAgcG9pbnRlciBhbmQgYW4gZW1w
dHkgc3RyaW5nIGFyZSBjb25zaWRlcmVkIF9kaWZmZXJlbnRfLgorCitfQXZhaWxhYmlsaXR5Xzog
TGludXgsIFdpbmRvd3MsIE1hYy4KKworU2VlIGFsc286IEZvciBtb3JlIHN0cmluZyBjb21wYXJp
c29uIHRyaWNrcyAoc3Vic3RyaW5nLCBwcmVmaXgsIHN1ZmZpeCwgYW5kCityZWd1bGFyIGV4cHJl
c3Npb24gbWF0Y2hpbmcsIGZvciBleGFtcGxlKSwgc2VlIHRoZSBbQWR2YW5jZWQgR29vZ2xlIFRl
c3QgR3VpZGVdKEFkdmFuY2VkR3VpZGUubWQpLgorCisjIFNpbXBsZSBUZXN0cyAjCisKK1RvIGNy
ZWF0ZSBhIHRlc3Q6CisgIDEuIFVzZSB0aGUgYFRFU1QoKWAgbWFjcm8gdG8gZGVmaW5lIGFuZCBu
YW1lIGEgdGVzdCBmdW5jdGlvbiwgVGhlc2UgYXJlIG9yZGluYXJ5IEMrKyBmdW5jdGlvbnMgdGhh
dCBkb24ndCByZXR1cm4gYSB2YWx1ZS4KKyAgMS4gSW4gdGhpcyBmdW5jdGlvbiwgYWxvbmcgd2l0
aCBhbnkgdmFsaWQgQysrIHN0YXRlbWVudHMgeW91IHdhbnQgdG8gaW5jbHVkZSwgdXNlIHRoZSB2
YXJpb3VzIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgdG8gY2hlY2sgdmFsdWVzLgorICAxLiBUaGUg
dGVzdCdzIHJlc3VsdCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBhc3NlcnRpb25zOyBpZiBhbnkgYXNz
ZXJ0aW9uIGluIHRoZSB0ZXN0IGZhaWxzIChlaXRoZXIgZmF0YWxseSBvciBub24tZmF0YWxseSks
IG9yIGlmIHRoZSB0ZXN0IGNyYXNoZXMsIHRoZSBlbnRpcmUgdGVzdCBmYWlscy4gT3RoZXJ3aXNl
LCBpdCBzdWNjZWVkcy4KKworYGBgCitURVNUKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIHsK
KyAuLi4gdGVzdCBib2R5IC4uLgorfQorYGBgCisKKworYFRFU1QoKWAgYXJndW1lbnRzIGdvIGZy
b20gZ2VuZXJhbCB0byBzcGVjaWZpYy4gVGhlIF9maXJzdF8gYXJndW1lbnQgaXMgdGhlCituYW1l
IG9mIHRoZSB0ZXN0IGNhc2UsIGFuZCB0aGUgX3NlY29uZF8gYXJndW1lbnQgaXMgdGhlIHRlc3Qn
cyBuYW1lIHdpdGhpbiB0aGUKK3Rlc3QgY2FzZS4gQm90aCBuYW1lcyBtdXN0IGJlIHZhbGlkIEMr
KyBpZGVudGlmaWVycywgYW5kIHRoZXkgc2hvdWxkIG5vdCBjb250YWluIHVuZGVyc2NvcmUgKGBf
YCkuIEEgdGVzdCdzIF9mdWxsIG5hbWVfIGNvbnNpc3RzIG9mIGl0cyBjb250YWluaW5nIHRlc3Qg
Y2FzZSBhbmQgaXRzCitpbmRpdmlkdWFsIG5hbWUuIFRlc3RzIGZyb20gZGlmZmVyZW50IHRlc3Qg
Y2FzZXMgY2FuIGhhdmUgdGhlIHNhbWUgaW5kaXZpZHVhbAorbmFtZS4KKworRm9yIGV4YW1wbGUs
IGxldCdzIHRha2UgYSBzaW1wbGUgaW50ZWdlciBmdW5jdGlvbjoKK2BgYAoraW50IEZhY3Rvcmlh
bChpbnQgbik7IC8vIFJldHVybnMgdGhlIGZhY3RvcmlhbCBvZiBuCitgYGAKKworQSB0ZXN0IGNh
c2UgZm9yIHRoaXMgZnVuY3Rpb24gbWlnaHQgbG9vayBsaWtlOgorYGBgCisvLyBUZXN0cyBmYWN0
b3JpYWwgb2YgMC4KK1RFU1QoRmFjdG9yaWFsVGVzdCwgSGFuZGxlc1plcm9JbnB1dCkgeworICBF
WFBFQ1RfRVEoMSwgRmFjdG9yaWFsKDApKTsKK30KKworLy8gVGVzdHMgZmFjdG9yaWFsIG9mIHBv
c2l0aXZlIG51bWJlcnMuCitURVNUKEZhY3RvcmlhbFRlc3QsIEhhbmRsZXNQb3NpdGl2ZUlucHV0
KSB7CisgIEVYUEVDVF9FUSgxLCBGYWN0b3JpYWwoMSkpOworICBFWFBFQ1RfRVEoMiwgRmFjdG9y
aWFsKDIpKTsKKyAgRVhQRUNUX0VRKDYsIEZhY3RvcmlhbCgzKSk7CisgIEVYUEVDVF9FUSg0MDMy
MCwgRmFjdG9yaWFsKDgpKTsKK30KK2BgYAorCitHb29nbGUgVGVzdCBncm91cHMgdGhlIHRlc3Qg
cmVzdWx0cyBieSB0ZXN0IGNhc2VzLCBzbyBsb2dpY2FsbHktcmVsYXRlZCB0ZXN0cworc2hvdWxk
IGJlIGluIHRoZSBzYW1lIHRlc3QgY2FzZTsgaW4gb3RoZXIgd29yZHMsIHRoZSBmaXJzdCBhcmd1
bWVudCB0byB0aGVpcgorYFRFU1QoKWAgc2hvdWxkIGJlIHRoZSBzYW1lLiBJbiB0aGUgYWJvdmUg
ZXhhbXBsZSwgd2UgaGF2ZSB0d28gdGVzdHMsCitgSGFuZGxlc1plcm9JbnB1dGAgYW5kIGBIYW5k
bGVzUG9zaXRpdmVJbnB1dGAsIHRoYXQgYmVsb25nIHRvIHRoZSBzYW1lIHRlc3QKK2Nhc2UgYEZh
Y3RvcmlhbFRlc3RgLgorCitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KKwor
IyBUZXN0IEZpeHR1cmVzOiBVc2luZyB0aGUgU2FtZSBEYXRhIENvbmZpZ3VyYXRpb24gZm9yIE11
bHRpcGxlIFRlc3RzICMKKworSWYgeW91IGZpbmQgeW91cnNlbGYgd3JpdGluZyB0d28gb3IgbW9y
ZSB0ZXN0cyB0aGF0IG9wZXJhdGUgb24gc2ltaWxhciBkYXRhLAoreW91IGNhbiB1c2UgYSBfdGVz
dCBmaXh0dXJlXy4gSXQgYWxsb3dzIHlvdSB0byByZXVzZSB0aGUgc2FtZSBjb25maWd1cmF0aW9u
IG9mCitvYmplY3RzIGZvciBzZXZlcmFsIGRpZmZlcmVudCB0ZXN0cy4KKworVG8gY3JlYXRlIGEg
Zml4dHVyZSwganVzdDoKKyAgMS4gRGVyaXZlIGEgY2xhc3MgZnJvbSBgOjp0ZXN0aW5nOjpUZXN0
YCAuIFN0YXJ0IGl0cyBib2R5IHdpdGggYHByb3RlY3RlZDpgIG9yIGBwdWJsaWM6YCBhcyB3ZSds
bCB3YW50IHRvIGFjY2VzcyBmaXh0dXJlIG1lbWJlcnMgZnJvbSBzdWItY2xhc3Nlcy4KKyAgMS4g
SW5zaWRlIHRoZSBjbGFzcywgZGVjbGFyZSBhbnkgb2JqZWN0cyB5b3UgcGxhbiB0byB1c2UuCisg
IDEuIElmIG5lY2Vzc2FyeSwgd3JpdGUgYSBkZWZhdWx0IGNvbnN0cnVjdG9yIG9yIGBTZXRVcCgp
YCBmdW5jdGlvbiB0byBwcmVwYXJlIHRoZSBvYmplY3RzIGZvciBlYWNoIHRlc3QuIEEgY29tbW9u
IG1pc3Rha2UgaXMgdG8gc3BlbGwgYFNldFVwKClgIGFzIGBTZXR1cCgpYCB3aXRoIGEgc21hbGwg
YHVgIC0gZG9uJ3QgbGV0IHRoYXQgaGFwcGVuIHRvIHlvdS4KKyAgMS4gSWYgbmVjZXNzYXJ5LCB3
cml0ZSBhIGRlc3RydWN0b3Igb3IgYFRlYXJEb3duKClgIGZ1bmN0aW9uIHRvIHJlbGVhc2UgYW55
IHJlc291cmNlcyB5b3UgYWxsb2NhdGVkIGluIGBTZXRVcCgpYCAuIFRvIGxlYXJuIHdoZW4geW91
IHNob3VsZCB1c2UgdGhlIGNvbnN0cnVjdG9yL2Rlc3RydWN0b3IgYW5kIHdoZW4geW91IHNob3Vs
ZCB1c2UgYFNldFVwKCkvVGVhckRvd24oKWAsIHJlYWQgdGhpcyBbRkFRIGVudHJ5XShGQVEubWQj
c2hvdWxkLWktdXNlLXRoZS1jb25zdHJ1Y3RvcmRlc3RydWN0b3Itb2YtdGhlLXRlc3QtZml4dHVy
ZS1vci10aGUtc2V0LXVwdGVhci1kb3duLWZ1bmN0aW9uKS4KKyAgMS4gSWYgbmVlZGVkLCBkZWZp
bmUgc3Vicm91dGluZXMgZm9yIHlvdXIgdGVzdHMgdG8gc2hhcmUuCisKK1doZW4gdXNpbmcgYSBm
aXh0dXJlLCB1c2UgYFRFU1RfRigpYCBpbnN0ZWFkIG9mIGBURVNUKClgIGFzIGl0IGFsbG93cyB5
b3UgdG8KK2FjY2VzcyBvYmplY3RzIGFuZCBzdWJyb3V0aW5lcyBpbiB0aGUgdGVzdCBmaXh0dXJl
OgorYGBgCitURVNUX0YodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkgeworIC4uLiB0ZXN0IGJv
ZHkgLi4uCit9CitgYGAKKworTGlrZSBgVEVTVCgpYCwgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIHRo
ZSB0ZXN0IGNhc2UgbmFtZSwgYnV0IGZvciBgVEVTVF9GKClgCit0aGlzIG11c3QgYmUgdGhlIG5h
bWUgb2YgdGhlIHRlc3QgZml4dHVyZSBjbGFzcy4gWW91J3ZlIHByb2JhYmx5IGd1ZXNzZWQ6IGBf
RmAKK2lzIGZvciBmaXh0dXJlLgorCitVbmZvcnR1bmF0ZWx5LCB0aGUgQysrIG1hY3JvIHN5c3Rl
bSBkb2VzIG5vdCBhbGxvdyB1cyB0byBjcmVhdGUgYSBzaW5nbGUgbWFjcm8KK3RoYXQgY2FuIGhh
bmRsZSBib3RoIHR5cGVzIG9mIHRlc3RzLiBVc2luZyB0aGUgd3JvbmcgbWFjcm8gY2F1c2VzIGEg
Y29tcGlsZXIKK2Vycm9yLgorCitBbHNvLCB5b3UgbXVzdCBmaXJzdCBkZWZpbmUgYSB0ZXN0IGZp
eHR1cmUgY2xhc3MgYmVmb3JlIHVzaW5nIGl0IGluIGEKK2BURVNUX0YoKWAsIG9yIHlvdSdsbCBn
ZXQgdGhlIGNvbXBpbGVyIGVycm9yICJgdmlydHVhbCBvdXRzaWRlIGNsYXNzCitkZWNsYXJhdGlv
bmAiLgorCitGb3IgZWFjaCB0ZXN0IGRlZmluZWQgd2l0aCBgVEVTVF9GKClgLCBHb29nbGUgVGVz
dCB3aWxsOgorICAxLiBDcmVhdGUgYSBfZnJlc2hfIHRlc3QgZml4dHVyZSBhdCBydW50aW1lCisg
IDEuIEltbWVkaWF0ZWx5IGluaXRpYWxpemUgaXQgdmlhIGBTZXRVcCgpYCAsCisgIDEuIFJ1biB0
aGUgdGVzdAorICAxLiBDbGVhbiB1cCBieSBjYWxsaW5nIGBUZWFyRG93bigpYAorICAxLiBEZWxl
dGUgdGhlIHRlc3QgZml4dHVyZS4gIE5vdGUgdGhhdCBkaWZmZXJlbnQgdGVzdHMgaW4gdGhlIHNh
bWUgdGVzdCBjYXNlIGhhdmUgZGlmZmVyZW50IHRlc3QgZml4dHVyZSBvYmplY3RzLCBhbmQgR29v
Z2xlIFRlc3QgYWx3YXlzIGRlbGV0ZXMgYSB0ZXN0IGZpeHR1cmUgYmVmb3JlIGl0IGNyZWF0ZXMg
dGhlIG5leHQgb25lLiBHb29nbGUgVGVzdCBkb2VzIG5vdCByZXVzZSB0aGUgc2FtZSB0ZXN0IGZp
eHR1cmUgZm9yIG11bHRpcGxlIHRlc3RzLiBBbnkgY2hhbmdlcyBvbmUgdGVzdCBtYWtlcyB0byB0
aGUgZml4dHVyZSBkbyBub3QgYWZmZWN0IG90aGVyIHRlc3RzLgorCitBcyBhbiBleGFtcGxlLCBs
ZXQncyB3cml0ZSB0ZXN0cyBmb3IgYSBGSUZPIHF1ZXVlIGNsYXNzIG5hbWVkIGBRdWV1ZWAsIHdo
aWNoCitoYXMgdGhlIGZvbGxvd2luZyBpbnRlcmZhY2U6CitgYGAKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBFPiAvLyBFIGlzIHRoZSBlbGVtZW50IHR5cGUuCitjbGFzcyBRdWV1ZSB7CisgcHVibGljOgor
ICBRdWV1ZSgpOworICB2b2lkIEVucXVldWUoY29uc3QgRSYgZWxlbWVudCk7CisgIEUqIERlcXVl
dWUoKTsgLy8gUmV0dXJucyBOVUxMIGlmIHRoZSBxdWV1ZSBpcyBlbXB0eS4KKyAgc2l6ZV90IHNp
emUoKSBjb25zdDsKKyAgLi4uCit9OworYGBgCisKK0ZpcnN0LCBkZWZpbmUgYSBmaXh0dXJlIGNs
YXNzLiBCeSBjb252ZW50aW9uLCB5b3Ugc2hvdWxkIGdpdmUgaXQgdGhlIG5hbWUKK2BGb29UZXN0
YCB3aGVyZSBgRm9vYCBpcyB0aGUgY2xhc3MgYmVpbmcgdGVzdGVkLgorYGBgCitjbGFzcyBRdWV1
ZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHZpcnR1YWwg
dm9pZCBTZXRVcCgpIHsKKyAgICBxMV8uRW5xdWV1ZSgxKTsKKyAgICBxMl8uRW5xdWV1ZSgyKTsK
KyAgICBxMl8uRW5xdWV1ZSgzKTsKKyAgfQorCisgIC8vIHZpcnR1YWwgdm9pZCBUZWFyRG93bigp
IHt9CisKKyAgUXVldWU8aW50PiBxMF87CisgIFF1ZXVlPGludD4gcTFfOworICBRdWV1ZTxpbnQ+
IHEyXzsKK307CitgYGAKKworSW4gdGhpcyBjYXNlLCBgVGVhckRvd24oKWAgaXMgbm90IG5lZWRl
ZCBzaW5jZSB3ZSBkb24ndCBoYXZlIHRvIGNsZWFuIHVwIGFmdGVyCitlYWNoIHRlc3QsIG90aGVy
IHRoYW4gd2hhdCdzIGFscmVhZHkgZG9uZSBieSB0aGUgZGVzdHJ1Y3Rvci4KKworTm93IHdlJ2xs
IHdyaXRlIHRlc3RzIHVzaW5nIGBURVNUX0YoKWAgYW5kIHRoaXMgZml4dHVyZS4KK2BgYAorVEVT
VF9GKFF1ZXVlVGVzdCwgSXNFbXB0eUluaXRpYWxseSkgeworICBFWFBFQ1RfRVEoMCwgcTBfLnNp
emUoKSk7Cit9CisKK1RFU1RfRihRdWV1ZVRlc3QsIERlcXVldWVXb3JrcykgeworICBpbnQqIG4g
PSBxMF8uRGVxdWV1ZSgpOworICBFWFBFQ1RfRVEoTlVMTCwgbik7CisKKyAgbiA9IHExXy5EZXF1
ZXVlKCk7CisgIEFTU0VSVF9UUlVFKG4gIT0gTlVMTCk7CisgIEVYUEVDVF9FUSgxLCAqbik7Cisg
IEVYUEVDVF9FUSgwLCBxMV8uc2l6ZSgpKTsKKyAgZGVsZXRlIG47CisKKyAgbiA9IHEyXy5EZXF1
ZXVlKCk7CisgIEFTU0VSVF9UUlVFKG4gIT0gTlVMTCk7CisgIEVYUEVDVF9FUSgyLCAqbik7Cisg
IEVYUEVDVF9FUSgxLCBxMl8uc2l6ZSgpKTsKKyAgZGVsZXRlIG47Cit9CitgYGAKKworVGhlIGFi
b3ZlIHVzZXMgYm90aCBgQVNTRVJUXypgIGFuZCBgRVhQRUNUXypgIGFzc2VydGlvbnMuIFRoZSBy
dWxlIG9mIHRodW1iIGlzCit0byB1c2UgYEVYUEVDVF8qYCB3aGVuIHlvdSB3YW50IHRoZSB0ZXN0
IHRvIGNvbnRpbnVlIHRvIHJldmVhbCBtb3JlIGVycm9ycworYWZ0ZXIgdGhlIGFzc2VydGlvbiBm
YWlsdXJlLCBhbmQgdXNlIGBBU1NFUlRfKmAgd2hlbiBjb250aW51aW5nIGFmdGVyIGZhaWx1cmUK
K2RvZXNuJ3QgbWFrZSBzZW5zZS4gRm9yIGV4YW1wbGUsIHRoZSBzZWNvbmQgYXNzZXJ0aW9uIGlu
IHRoZSBgRGVxdWV1ZWAgdGVzdCBpcworYEFTU0VSVF9UUlVFKG4gIT0gTlVMTClgLCBhcyB3ZSBu
ZWVkIHRvIGRlcmVmZXJlbmNlIHRoZSBwb2ludGVyIGBuYCBsYXRlciwKK3doaWNoIHdvdWxkIGxl
YWQgdG8gYSBzZWdmYXVsdCB3aGVuIGBuYCBpcyBgTlVMTGAuCisKK1doZW4gdGhlc2UgdGVzdHMg
cnVuLCB0aGUgZm9sbG93aW5nIGhhcHBlbnM6CisgIDEuIEdvb2dsZSBUZXN0IGNvbnN0cnVjdHMg
YSBgUXVldWVUZXN0YCBvYmplY3QgKGxldCdzIGNhbGwgaXQgYHQxYCApLgorICAxLiBgdDEuU2V0
VXAoKWAgaW5pdGlhbGl6ZXMgYHQxYCAuCisgIDEuIFRoZSBmaXJzdCB0ZXN0ICggYElzRW1wdHlJ
bml0aWFsbHlgICkgcnVucyBvbiBgdDFgIC4KKyAgMS4gYHQxLlRlYXJEb3duKClgIGNsZWFucyB1
cCBhZnRlciB0aGUgdGVzdCBmaW5pc2hlcy4KKyAgMS4gYHQxYCBpcyBkZXN0cnVjdGVkLgorICAx
LiBUaGUgYWJvdmUgc3RlcHMgYXJlIHJlcGVhdGVkIG9uIGFub3RoZXIgYFF1ZXVlVGVzdGAgb2Jq
ZWN0LCB0aGlzIHRpbWUgcnVubmluZyB0aGUgYERlcXVldWVXb3Jrc2AgdGVzdC4KKworX0F2YWls
YWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKK19Ob3RlXzogR29vZ2xlIFRlc3QgYXV0
b21hdGljYWxseSBzYXZlcyBhbGwgX0dvb2dsZSBUZXN0XyBmbGFncyB3aGVuIGEgdGVzdAorb2Jq
ZWN0IGlzIGNvbnN0cnVjdGVkLCBhbmQgcmVzdG9yZXMgdGhlbSB3aGVuIGl0IGlzIGRlc3RydWN0
ZWQuCisKKyMgSW52b2tpbmcgdGhlIFRlc3RzICMKKworYFRFU1QoKWAgYW5kIGBURVNUX0YoKWAg
aW1wbGljaXRseSByZWdpc3RlciB0aGVpciB0ZXN0cyB3aXRoIEdvb2dsZSBUZXN0LiBTbywgdW5s
aWtlIHdpdGggbWFueSBvdGhlciBDKysgdGVzdGluZyBmcmFtZXdvcmtzLCB5b3UgZG9uJ3QgaGF2
ZSB0byByZS1saXN0IGFsbCB5b3VyIGRlZmluZWQgdGVzdHMgaW4gb3JkZXIgdG8gcnVuIHRoZW0u
CisKK0FmdGVyIGRlZmluaW5nIHlvdXIgdGVzdHMsIHlvdSBjYW4gcnVuIHRoZW0gd2l0aCBgUlVO
X0FMTF9URVNUUygpYCAsIHdoaWNoIHJldHVybnMgYDBgIGlmIGFsbCB0aGUgdGVzdHMgYXJlIHN1
Y2Nlc3NmdWwsIG9yIGAxYCBvdGhlcndpc2UuIE5vdGUgdGhhdCBgUlVOX0FMTF9URVNUUygpYCBy
dW5zIF9hbGwgdGVzdHNfIGluIHlvdXIgbGluayB1bml0IC0tIHRoZXkgY2FuIGJlIGZyb20gZGlm
ZmVyZW50IHRlc3QgY2FzZXMsIG9yIGV2ZW4gZGlmZmVyZW50IHNvdXJjZSBmaWxlcy4KKworV2hl
biBpbnZva2VkLCB0aGUgYFJVTl9BTExfVEVTVFMoKWAgbWFjcm86CisgIDEuIFNhdmVzIHRoZSBz
dGF0ZSBvZiBhbGwgIEdvb2dsZSBUZXN0IGZsYWdzLgorICAxLiBDcmVhdGVzIGEgdGVzdCBmaXh0
dXJlIG9iamVjdCBmb3IgdGhlIGZpcnN0IHRlc3QuCisgIDEuIEluaXRpYWxpemVzIGl0IHZpYSBg
U2V0VXAoKWAuCisgIDEuIFJ1bnMgdGhlIHRlc3Qgb24gdGhlIGZpeHR1cmUgb2JqZWN0LgorICAx
LiBDbGVhbnMgdXAgdGhlIGZpeHR1cmUgdmlhIGBUZWFyRG93bigpYC4KKyAgMS4gRGVsZXRlcyB0
aGUgZml4dHVyZS4KKyAgMS4gUmVzdG9yZXMgdGhlIHN0YXRlIG9mIGFsbCBHb29nbGUgVGVzdCBm
bGFncy4KKyAgMS4gUmVwZWF0cyB0aGUgYWJvdmUgc3RlcHMgZm9yIHRoZSBuZXh0IHRlc3QsIHVu
dGlsIGFsbCB0ZXN0cyBoYXZlIHJ1bi4KKworSW4gYWRkaXRpb24sIGlmIHRoZSB0ZXh0IGZpeHR1
cmUncyBjb25zdHJ1Y3RvciBnZW5lcmF0ZXMgYSBmYXRhbCBmYWlsdXJlIGluCitzdGVwIDIsIHRo
ZXJlIGlzIG5vIHBvaW50IGZvciBzdGVwIDMgLSA1IGFuZCB0aGV5IGFyZSB0aHVzIHNraXBwZWQu
IFNpbWlsYXJseSwKK2lmIHN0ZXAgMyBnZW5lcmF0ZXMgYSBmYXRhbCBmYWlsdXJlLCBzdGVwIDQg
d2lsbCBiZSBza2lwcGVkLgorCitfSW1wb3J0YW50XzogWW91IG11c3Qgbm90IGlnbm9yZSB0aGUg
cmV0dXJuIHZhbHVlIG9mIGBSVU5fQUxMX1RFU1RTKClgLCBvciBgZ2NjYAord2lsbCBnaXZlIHlv
dSBhIGNvbXBpbGVyIGVycm9yLiBUaGUgcmF0aW9uYWxlIGZvciB0aGlzIGRlc2lnbiBpcyB0aGF0
IHRoZQorYXV0b21hdGVkIHRlc3Rpbmcgc2VydmljZSBkZXRlcm1pbmVzIHdoZXRoZXIgYSB0ZXN0
IGhhcyBwYXNzZWQgYmFzZWQgb24gaXRzCitleGl0IGNvZGUsIG5vdCBvbiBpdHMgc3Rkb3V0L3N0
ZGVyciBvdXRwdXQ7IHRodXMgeW91ciBgbWFpbigpYCBmdW5jdGlvbiBtdXN0CityZXR1cm4gdGhl
IHZhbHVlIG9mIGBSVU5fQUxMX1RFU1RTKClgLgorCitBbHNvLCB5b3Ugc2hvdWxkIGNhbGwgYFJV
Tl9BTExfVEVTVFMoKWAgb25seSAqKm9uY2UqKi4gQ2FsbGluZyBpdCBtb3JlIHRoYW4gb25jZQor
Y29uZmxpY3RzIHdpdGggc29tZSBhZHZhbmNlZCBHb29nbGUgVGVzdCBmZWF0dXJlcyAoZS5nLiB0
aHJlYWQtc2FmZSBkZWF0aAordGVzdHMpIGFuZCB0aHVzIGlzIG5vdCBzdXBwb3J0ZWQuCisKK19B
dmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIFdyaXRpbmcgdGhlIG1haW4o
KSBGdW5jdGlvbiAjCisKK1lvdSBjYW4gc3RhcnQgZnJvbSB0aGlzIGJvaWxlcnBsYXRlOgorYGBg
CisjaW5jbHVkZSAidGhpcy9wYWNrYWdlL2Zvby5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0Lmgi
CisKK25hbWVzcGFjZSB7CisKKy8vIFRoZSBmaXh0dXJlIGZvciB0ZXN0aW5nIGNsYXNzIEZvby4K
K2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6Cisg
IC8vIFlvdSBjYW4gcmVtb3ZlIGFueSBvciBhbGwgb2YgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMg
aWYgaXRzIGJvZHkKKyAgLy8gaXMgZW1wdHkuCisKKyAgRm9vVGVzdCgpIHsKKyAgICAvLyBZb3Ug
Y2FuIGRvIHNldC11cCB3b3JrIGZvciBlYWNoIHRlc3QgaGVyZS4KKyAgfQorCisgIHZpcnR1YWwg
fkZvb1Rlc3QoKSB7CisgICAgLy8gWW91IGNhbiBkbyBjbGVhbi11cCB3b3JrIHRoYXQgZG9lc24n
dCB0aHJvdyBleGNlcHRpb25zIGhlcmUuCisgIH0KKworICAvLyBJZiB0aGUgY29uc3RydWN0b3Ig
YW5kIGRlc3RydWN0b3IgYXJlIG5vdCBlbm91Z2ggZm9yIHNldHRpbmcgdXAKKyAgLy8gYW5kIGNs
ZWFuaW5nIHVwIGVhY2ggdGVzdCwgeW91IGNhbiBkZWZpbmUgdGhlIGZvbGxvd2luZyBtZXRob2Rz
OgorCisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICAvLyBDb2RlIGhlcmUgd2lsbCBiZSBj
YWxsZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGNvbnN0cnVjdG9yIChyaWdodAorICAgIC8vIGJl
Zm9yZSBlYWNoIHRlc3QpLgorICB9CisKKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAg
IC8vIENvZGUgaGVyZSB3aWxsIGJlIGNhbGxlZCBpbW1lZGlhdGVseSBhZnRlciBlYWNoIHRlc3Qg
KHJpZ2h0CisgICAgLy8gYmVmb3JlIHRoZSBkZXN0cnVjdG9yKS4KKyAgfQorCisgIC8vIE9iamVj
dHMgZGVjbGFyZWQgaGVyZSBjYW4gYmUgdXNlZCBieSBhbGwgdGVzdHMgaW4gdGhlIHRlc3QgY2Fz
ZSBmb3IgRm9vLgorfTsKKworLy8gVGVzdHMgdGhhdCB0aGUgRm9vOjpCYXIoKSBtZXRob2QgZG9l
cyBBYmMuCitURVNUX0YoRm9vVGVzdCwgTWV0aG9kQmFyRG9lc0FiYykgeworICBjb25zdCBzdHJp
bmcgaW5wdXRfZmlsZXBhdGggPSAidGhpcy9wYWNrYWdlL3Rlc3RkYXRhL215aW5wdXRmaWxlLmRh
dCI7CisgIGNvbnN0IHN0cmluZyBvdXRwdXRfZmlsZXBhdGggPSAidGhpcy9wYWNrYWdlL3Rlc3Rk
YXRhL215b3V0cHV0ZmlsZS5kYXQiOworICBGb28gZjsKKyAgRVhQRUNUX0VRKDAsIGYuQmFyKGlu
cHV0X2ZpbGVwYXRoLCBvdXRwdXRfZmlsZXBhdGgpKTsKK30KKworLy8gVGVzdHMgdGhhdCBGb28g
ZG9lcyBYeXouCitURVNUX0YoRm9vVGVzdCwgRG9lc1h5eikgeworICAvLyBFeGVyY2lzZXMgdGhl
IFh5eiBmZWF0dXJlIG9mIEZvby4KK30KKworfSAgLy8gbmFtZXNwYWNlCisKK2ludCBtYWluKGlu
dCBhcmdjLCBjaGFyICoqYXJndikgeworICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdj
LCBhcmd2KTsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KK2BgYAorCitUaGUgYDo6dGVz
dGluZzo6SW5pdEdvb2dsZVRlc3QoKWAgZnVuY3Rpb24gcGFyc2VzIHRoZSBjb21tYW5kIGxpbmUg
Zm9yIEdvb2dsZQorVGVzdCBmbGFncywgYW5kIHJlbW92ZXMgYWxsIHJlY29nbml6ZWQgZmxhZ3Mu
IFRoaXMgYWxsb3dzIHRoZSB1c2VyIHRvIGNvbnRyb2wgYQordGVzdCBwcm9ncmFtJ3MgYmVoYXZp
b3IgdmlhIHZhcmlvdXMgZmxhZ3MsIHdoaWNoIHdlJ2xsIGNvdmVyIGluIFtBZHZhbmNlZEd1aWRl
XShBZHZhbmNlZEd1aWRlLm1kKS4KK1lvdSBtdXN0IGNhbGwgdGhpcyBmdW5jdGlvbiBiZWZvcmUg
Y2FsbGluZyBgUlVOX0FMTF9URVNUUygpYCwgb3IgdGhlIGZsYWdzCit3b24ndCBiZSBwcm9wZXJs
eSBpbml0aWFsaXplZC4KKworT24gV2luZG93cywgYEluaXRHb29nbGVUZXN0KClgIGFsc28gd29y
a3Mgd2l0aCB3aWRlIHN0cmluZ3MsIHNvIGl0IGNhbiBiZSB1c2VkCitpbiBwcm9ncmFtcyBjb21w
aWxlZCBpbiBgVU5JQ09ERWAgbW9kZSBhcyB3ZWxsLgorCitCdXQgbWF5YmUgeW91IHRoaW5rIHRo
YXQgd3JpdGluZyBhbGwgdGhvc2UgbWFpbigpIGZ1bmN0aW9ucyBpcyB0b28gbXVjaCB3b3JrPyBX
ZSBhZ3JlZSB3aXRoIHlvdSBjb21wbGV0ZWx5IGFuZCB0aGF0J3Mgd2h5IEdvb2dsZSBUZXN0IHBy
b3ZpZGVzIGEgYmFzaWMgaW1wbGVtZW50YXRpb24gb2YgbWFpbigpLiBJZiBpdCBmaXRzIHlvdXIg
bmVlZHMsIHRoZW4ganVzdCBsaW5rIHlvdXIgdGVzdCB3aXRoIGd0ZXN0XF9tYWluIGxpYnJhcnkg
YW5kIHlvdSBhcmUgZ29vZCB0byBnby4KKworIyMgSW1wb3J0YW50IG5vdGUgZm9yIFZpc3VhbCBD
KysgdXNlcnMgIyMKK0lmIHlvdSBwdXQgeW91ciB0ZXN0cyBpbnRvIGEgbGlicmFyeSBhbmQgeW91
ciBgbWFpbigpYCBmdW5jdGlvbiBpcyBpbiBhIGRpZmZlcmVudCBsaWJyYXJ5IG9yIGluIHlvdXIg
LmV4ZSBmaWxlLCB0aG9zZSB0ZXN0cyB3aWxsIG5vdCBydW4uIFRoZSByZWFzb24gaXMgYSBbYnVn
XShodHRwczovL2Nvbm5lY3QubWljcm9zb2Z0LmNvbS9mZWVkYmFjay92aWV3ZmVlZGJhY2suYXNw
eD9GZWVkYmFja0lEPTI0NDQxMCZzaXRlaWQ9MjEwKSBpbiBWaXN1YWwgQysrLiBXaGVuIHlvdSBk
ZWZpbmUgeW91ciB0ZXN0cywgR29vZ2xlIFRlc3QgY3JlYXRlcyBjZXJ0YWluIHN0YXRpYyBvYmpl
Y3RzIHRvIHJlZ2lzdGVyIHRoZW0uIFRoZXNlIG9iamVjdHMgYXJlIG5vdCByZWZlcmVuY2VkIGZy
b20gZWxzZXdoZXJlIGJ1dCB0aGVpciBjb25zdHJ1Y3RvcnMgYXJlIHN0aWxsIHN1cHBvc2VkIHRv
IHJ1bi4gV2hlbiBWaXN1YWwgQysrIGxpbmtlciBzZWVzIHRoYXQgbm90aGluZyBpbiB0aGUgbGli
cmFyeSBpcyByZWZlcmVuY2VkIGZyb20gb3RoZXIgcGxhY2VzIGl0IHRocm93cyB0aGUgbGlicmFy
eSBvdXQuIFlvdSBoYXZlIHRvIHJlZmVyZW5jZSB5b3VyIGxpYnJhcnkgd2l0aCB0ZXN0cyBmcm9t
IHlvdXIgbWFpbiBwcm9ncmFtIHRvIGtlZXAgdGhlIGxpbmtlciBmcm9tIGRpc2NhcmRpbmcgaXQu
IEhlcmUgaXMgaG93IHRvIGRvIGl0LiBTb21ld2hlcmUgaW4geW91ciBsaWJyYXJ5IGNvZGUgZGVj
bGFyZSBhIGZ1bmN0aW9uOgorYGBgCitfX2RlY2xzcGVjKGRsbGV4cG9ydCkgaW50IFB1bGxJbk15
TGlicmFyeSgpIHsgcmV0dXJuIDA7IH0KK2BgYAorSWYgeW91IHB1dCB5b3VyIHRlc3RzIGluIGEg
c3RhdGljIGxpYnJhcnkgKG5vdCBETEwpIHRoZW4gYF9fZGVjbHNwZWMoZGxsZXhwb3J0KWAgaXMg
bm90IHJlcXVpcmVkLiBOb3csIGluIHlvdXIgbWFpbiBwcm9ncmFtLCB3cml0ZSBhIGNvZGUgdGhh
dCBpbnZva2VzIHRoYXQgZnVuY3Rpb246CitgYGAKK2ludCBQdWxsSW5NeUxpYnJhcnkoKTsKK3N0
YXRpYyBpbnQgZHVtbXkgPSBQdWxsSW5NeUxpYnJhcnkoKTsKK2BgYAorVGhpcyB3aWxsIGtlZXAg
eW91ciB0ZXN0cyByZWZlcmVuY2VkIGFuZCB3aWxsIG1ha2UgdGhlbSByZWdpc3RlciB0aGVtc2Vs
dmVzIGF0IHN0YXJ0dXAuCisKK0luIGFkZGl0aW9uLCBpZiB5b3UgZGVmaW5lIHlvdXIgdGVzdHMg
aW4gYSBzdGF0aWMgbGlicmFyeSwgYWRkIGAvT1BUOk5PUkVGYCB0byB5b3VyIG1haW4gcHJvZ3Jh
bSBsaW5rZXIgb3B0aW9ucy4gSWYgeW91IHVzZSBNU1ZDKysgSURFLCBnbyB0byB5b3VyIC5leGUg
cHJvamVjdCBwcm9wZXJ0aWVzL0NvbmZpZ3VyYXRpb24gUHJvcGVydGllcy9MaW5rZXIvT3B0aW1p
emF0aW9uIGFuZCBzZXQgUmVmZXJlbmNlcyBzZXR0aW5nIHRvIGBLZWVwIFVucmVmZXJlbmNlZCBE
YXRhICgvT1BUOk5PUkVGKWAuIFRoaXMgd2lsbCBrZWVwIFZpc3VhbCBDKysgbGlua2VyIGZyb20g
ZGlzY2FyZGluZyBpbmRpdmlkdWFsIHN5bWJvbHMgZ2VuZXJhdGVkIGJ5IHlvdXIgdGVzdHMgZnJv
bSB0aGUgZmluYWwgZXhlY3V0YWJsZS4KKworVGhlcmUgaXMgb25lIG1vcmUgcGl0ZmFsbCwgdGhv
dWdoLiBJZiB5b3UgdXNlIEdvb2dsZSBUZXN0IGFzIGEgc3RhdGljIGxpYnJhcnkgKHRoYXQncyBo
b3cgaXQgaXMgZGVmaW5lZCBpbiBndGVzdC52Y3Byb2opIHlvdXIgdGVzdHMgbXVzdCBhbHNvIHJl
c2lkZSBpbiBhIHN0YXRpYyBsaWJyYXJ5LiBJZiB5b3UgaGF2ZSB0byBoYXZlIHRoZW0gaW4gYSBE
TEwsIHlvdSBfbXVzdF8gY2hhbmdlIEdvb2dsZSBUZXN0IHRvIGJ1aWxkIGludG8gYSBETEwgYXMg
d2VsbC4gT3RoZXJ3aXNlIHlvdXIgdGVzdHMgd2lsbCBub3QgcnVuIGNvcnJlY3RseSBvciB3aWxs
IG5vdCBydW4gYXQgYWxsLiBUaGUgZ2VuZXJhbCBjb25jbHVzaW9uIGhlcmUgaXM6IG1ha2UgeW91
ciBsaWZlIGVhc2llciAtIGRvIG5vdCB3cml0ZSB5b3VyIHRlc3RzIGluIGxpYnJhcmllcyEKKwor
IyBXaGVyZSB0byBHbyBmcm9tIEhlcmUgIworCitDb25ncmF0dWxhdGlvbnMhIFlvdSd2ZSBsZWFy
bmVkIHRoZSBHb29nbGUgVGVzdCBiYXNpY3MuIFlvdSBjYW4gc3RhcnQgd3JpdGluZworYW5kIHJ1
bm5pbmcgR29vZ2xlIFRlc3QgdGVzdHMsIHJlYWQgc29tZSBbc2FtcGxlc10oU2FtcGxlcy5tZCks
IG9yIGNvbnRpbnVlIHdpdGgKK1tBZHZhbmNlZEd1aWRlXShBZHZhbmNlZEd1aWRlLm1kKSwgd2hp
Y2ggZGVzY3JpYmVzIG1hbnkgbW9yZSB1c2VmdWwgR29vZ2xlIFRlc3QgZmVhdHVyZXMuCisKKyMg
S25vd24gTGltaXRhdGlvbnMgIworCitHb29nbGUgVGVzdCBpcyBkZXNpZ25lZCB0byBiZSB0aHJl
YWQtc2FmZS4gIFRoZSBpbXBsZW1lbnRhdGlvbiBpcwordGhyZWFkLXNhZmUgb24gc3lzdGVtcyB3
aGVyZSB0aGUgYHB0aHJlYWRzYCBsaWJyYXJ5IGlzIGF2YWlsYWJsZS4gIEl0CitpcyBjdXJyZW50
bHkgX3Vuc2FmZV8gdG8gdXNlIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgZnJvbSB0d28gdGhyZWFk
cworY29uY3VycmVudGx5IG9uIG90aGVyIHN5c3RlbXMgKGUuZy4gV2luZG93cykuICBJbiBtb3N0
IHRlc3RzIHRoaXMgaXMKK25vdCBhbiBpc3N1ZSBhcyB1c3VhbGx5IHRoZSBhc3NlcnRpb25zIGFy
ZSBkb25lIGluIHRoZSBtYWluIHRocmVhZC4gSWYKK3lvdSB3YW50IHRvIGhlbHAsIHlvdSBjYW4g
dm9sdW50ZWVyIHRvIGltcGxlbWVudCB0aGUgbmVjZXNzYXJ5CitzeW5jaHJvbml6YXRpb24gcHJp
bWl0aXZlcyBpbiBgZ3Rlc3QtcG9ydC5oYCBmb3IgeW91ciBwbGF0Zm9ybS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L2RvY3MvUHVtcE1hbnVhbC5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvUHVtcE1h
bnVhbC5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44MTg0ZjE1M2NhMmVjYWQ3YzY1Y2I1OGMyN2ZiMzFiZDcyMzc1
ZmVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9QdW1wTWFudWFsLm1kCkBA
IC0wLDAgKzEsMTc3IEBACisKKworPGI+UDwvYj51bXAgaXMgPGI+VTwvYj5zZWZ1bCBmb3IgPGI+
TTwvYj5ldGEgPGI+UDwvYj5yb2dyYW1taW5nLgorCisjIFRoZSBQcm9ibGVtICMKKworVGVtcGxh
dGUgYW5kIG1hY3JvIGxpYnJhcmllcyBvZnRlbiBuZWVkIHRvIGRlZmluZSBtYW55IGNsYXNzZXMs
CitmdW5jdGlvbnMsIG9yIG1hY3JvcyB0aGF0IHZhcnkgb25seSAob3IgYWxtb3N0IG9ubHkpIGlu
IHRoZSBudW1iZXIgb2YKK2FyZ3VtZW50cyB0aGV5IHRha2UuIEl0J3MgYSBsb3Qgb2YgcmVwZXRp
dGl2ZSwgbWVjaGFuaWNhbCwgYW5kCitlcnJvci1wcm9uZSB3b3JrLgorCitWYXJpYWRpYyB0ZW1w
bGF0ZXMgYW5kIHZhcmlhZGljIG1hY3JvcyBjYW4gYWxsZXZpYXRlIHRoZSBwcm9ibGVtLgorSG93
ZXZlciwgd2hpbGUgYm90aCBhcmUgYmVpbmcgY29uc2lkZXJlZCBieSB0aGUgQysrIGNvbW1pdHRl
ZSwgbmVpdGhlcgoraXMgaW4gdGhlIHN0YW5kYXJkIHlldCBvciB3aWRlbHkgc3VwcG9ydGVkIGJ5
IGNvbXBpbGVycy4gIFRodXMgdGhleQorYXJlIG9mdGVuIG5vdCBhIGdvb2QgY2hvaWNlLCBlc3Bl
Y2lhbGx5IHdoZW4geW91ciBjb2RlIG5lZWRzIHRvIGJlCitwb3J0YWJsZS4gQW5kIHRoZWlyIGNh
cGFiaWxpdGllcyBhcmUgc3RpbGwgbGltaXRlZC4KKworQXMgYSByZXN1bHQsIGF1dGhvcnMgb2Yg
c3VjaCBsaWJyYXJpZXMgb2Z0ZW4gaGF2ZSB0byB3cml0ZSBzY3JpcHRzIHRvCitnZW5lcmF0ZSB0
aGVpciBpbXBsZW1lbnRhdGlvbi4gSG93ZXZlciwgb3VyIGV4cGVyaWVuY2UgaXMgdGhhdCBpdCdz
Cit0ZWRpb3VzIHRvIHdyaXRlIHN1Y2ggc2NyaXB0cywgd2hpY2ggdGVuZCB0byByZWZsZWN0IHRo
ZSBzdHJ1Y3R1cmUgb2YKK3RoZSBnZW5lcmF0ZWQgY29kZSBwb29ybHkgYW5kIGFyZSBvZnRlbiBo
YXJkIHRvIHJlYWQgYW5kIGVkaXQuIEZvcgorZXhhbXBsZSwgYSBzbWFsbCBjaGFuZ2UgbmVlZGVk
IGluIHRoZSBnZW5lcmF0ZWQgY29kZSBtYXkgcmVxdWlyZSBzb21lCitub24taW50dWl0aXZlLCBu
b24tdHJpdmlhbCBjaGFuZ2VzIGluIHRoZSBzY3JpcHQuIFRoaXMgaXMgZXNwZWNpYWxseQorcGFp
bmZ1bCB3aGVuIGV4cGVyaW1lbnRpbmcgd2l0aCB0aGUgY29kZS4KKworIyBPdXIgU29sdXRpb24g
IworCitQdW1wIChmb3IgUHVtcCBpcyBVc2VmdWwgZm9yIE1ldGEgUHJvZ3JhbW1pbmcsIFByZXR0
eSBVc2VmdWwgZm9yIE1ldGEKK1Byb2dyYW1taW5nLCBvciBQcmFjdGljYWwgVXRpbGl0eSBmb3Ig
TWV0YSBQcm9ncmFtbWluZywgd2hpY2hldmVyIHlvdQorcHJlZmVyKSBpcyBhIHNpbXBsZSBtZXRh
LXByb2dyYW1taW5nIHRvb2wgZm9yIEMrKy4gVGhlIGlkZWEgaXMgdGhhdCBhCitwcm9ncmFtbWVy
IHdyaXRlcyBhIGBmb28ucHVtcGAgZmlsZSB3aGljaCBjb250YWlucyBDKysgY29kZSBwbHVzIG1l
dGEKK2NvZGUgdGhhdCBtYW5pcHVsYXRlcyB0aGUgQysrIGNvZGUuIFRoZSBtZXRhIGNvZGUgY2Fu
IGhhbmRsZQoraXRlcmF0aW9ucyBvdmVyIGEgcmFuZ2UsIG5lc3RlZCBpdGVyYXRpb25zLCBsb2Nh
bCBtZXRhIHZhcmlhYmxlCitkZWZpbml0aW9ucywgc2ltcGxlIGFyaXRobWV0aWMsIGFuZCBjb25k
aXRpb25hbCBleHByZXNzaW9ucy4gWW91IGNhbgordmlldyBpdCBhcyBhIHNtYWxsIERvbWFpbi1T
cGVjaWZpYyBMYW5ndWFnZS4gVGhlIG1ldGEgbGFuZ3VhZ2UgaXMKK2Rlc2lnbmVkIHRvIGJlIG5v
bi1pbnRydXNpdmUgKHMudC4gaXQgd29uJ3QgY29uZnVzZSBFbWFjcycgQysrIG1vZGUsCitmb3Ig
ZXhhbXBsZSkgYW5kIGNvbmNpc2UsIG1ha2luZyBQdW1wIGNvZGUgaW50dWl0aXZlIGFuZCBlYXN5
IHRvCittYWludGFpbi4KKworIyMgSGlnaGxpZ2h0cyAjIworCisgICogVGhlIGltcGxlbWVudGF0
aW9uIGlzIGluIGEgc2luZ2xlIFB5dGhvbiBzY3JpcHQgYW5kIHRodXMgdWx0cmEgcG9ydGFibGU6
IG5vIGJ1aWxkIG9yIGluc3RhbGxhdGlvbiBpcyBuZWVkZWQgYW5kIGl0IHdvcmtzIGNyb3NzIHBs
YXRmb3Jtcy4KKyAgKiBQdW1wIHRyaWVzIHRvIGJlIHNtYXJ0IHdpdGggcmVzcGVjdCB0byBbR29v
Z2xlJ3Mgc3R5bGUgZ3VpZGVdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGUtc3R5bGVn
dWlkZS8pOiBpdCBicmVha3MgbG9uZyBsaW5lcyAoZWFzeSB0byBoYXZlIHdoZW4gdGhleSBhcmUg
Z2VuZXJhdGVkKSBhdCBhY2NlcHRhYmxlIHBsYWNlcyB0byBmaXQgd2l0aGluIDgwIGNvbHVtbnMg
YW5kIGluZGVudCB0aGUgY29udGludWF0aW9uIGxpbmVzIGNvcnJlY3RseS4KKyAgKiBUaGUgZm9y
bWF0IGlzIGh1bWFuLXJlYWRhYmxlIGFuZCBtb3JlIGNvbmNpc2UgdGhhbiBYTUwuCisgICogVGhl
IGZvcm1hdCB3b3JrcyByZWxhdGl2ZWx5IHdlbGwgd2l0aCBFbWFjcycgQysrIG1vZGUuCisKKyMj
IEV4YW1wbGVzICMjCisKK1RoZSBmb2xsb3dpbmcgUHVtcCBjb2RlICh3aGVyZSBtZXRhIGtleXdv
cmRzIHN0YXJ0IHdpdGggYCRgLCBgW1tgIGFuZCBgXV1gIGFyZSBtZXRhIGJyYWNrZXRzLCBhbmQg
YCQkYCBzdGFydHMgYSBtZXRhIGNvbW1lbnQgdGhhdCBlbmRzIHdpdGggdGhlIGxpbmUpOgorCitg
YGAKKyR2YXIgbiA9IDMgICAgICQkIERlZmluZXMgYSBtZXRhIHZhcmlhYmxlIG4uCiskcmFuZ2Ug
aSAwLi5uICAkJCBEZWNsYXJlcyB0aGUgcmFuZ2Ugb2YgbWV0YSBpdGVyYXRvciBpIChpbmNsdXNp
dmUpLgorJGZvciBpIFtbCisgICAgICAgICAgICAgICAkJCBNZXRhIGxvb3AuCisvLyBGb28kaSBk
b2VzIGJsYWggZm9yICRpLWFyeSBwcmVkaWNhdGVzLgorJHJhbmdlIGogMS4uaQordGVtcGxhdGUg
PHNpemVfdCBOICRmb3IgaiBbWywgdHlwZW5hbWUgQSRqXV0+CitjbGFzcyBGb28kaSB7CiskaWYg
aSA9PSAwIFtbCisgIGJsYWggYTsKK11dICRlbGlmIGkgPD0gMiBbWworICBibGFoIGI7CitdXSAk
ZWxzZSBbWworICBibGFoIGM7CitdXQorfTsKKworXV0KK2BgYAorCit3aWxsIGJlIHRyYW5zbGF0
ZWQgYnkgdGhlIFB1bXAgY29tcGlsZXIgdG86CisKK2BgYAorLy8gRm9vMCBkb2VzIGJsYWggZm9y
IDAtYXJ5IHByZWRpY2F0ZXMuCit0ZW1wbGF0ZSA8c2l6ZV90IE4+CitjbGFzcyBGb28wIHsKKyAg
YmxhaCBhOworfTsKKworLy8gRm9vMSBkb2VzIGJsYWggZm9yIDEtYXJ5IHByZWRpY2F0ZXMuCit0
ZW1wbGF0ZSA8c2l6ZV90IE4sIHR5cGVuYW1lIEExPgorY2xhc3MgRm9vMSB7CisgIGJsYWggYjsK
K307CisKKy8vIEZvbzIgZG9lcyBibGFoIGZvciAyLWFyeSBwcmVkaWNhdGVzLgordGVtcGxhdGUg
PHNpemVfdCBOLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTI+CitjbGFzcyBGb28yIHsKKyAgYmxh
aCBiOworfTsKKworLy8gRm9vMyBkb2VzIGJsYWggZm9yIDMtYXJ5IHByZWRpY2F0ZXMuCit0ZW1w
bGF0ZSA8c2l6ZV90IE4sIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTM+Citj
bGFzcyBGb28zIHsKKyAgYmxhaCBjOworfTsKK2BgYAorCitJbiBhbm90aGVyIGV4YW1wbGUsCisK
K2BgYAorJHJhbmdlIGkgMS4ubgorRnVuYygkZm9yIGkgKyBbW2EkaV1dKTsKKyQkIFRoZSB0ZXh0
IGJldHdlZW4gaSBhbmQgW1sgaXMgdGhlIHNlcGFyYXRvciBiZXR3ZWVuIGl0ZXJhdGlvbnMuCitg
YGAKKword2lsbCBnZW5lcmF0ZSBvbmUgb2YgdGhlIGZvbGxvd2luZyBsaW5lcyAod2l0aG91dCB0
aGUgY29tbWVudHMpLCBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIGBuYDoKKworYGBgCitGdW5j
KCk7ICAgICAgICAgICAgICAvLyBJZiBuIGlzIDAuCitGdW5jKGExKTsgICAgICAgICAgICAvLyBJ
ZiBuIGlzIDEuCitGdW5jKGExICsgYTIpOyAgICAgICAvLyBJZiBuIGlzIDIuCitGdW5jKGExICsg
YTIgKyBhMyk7ICAvLyBJZiBuIGlzIDMuCisvLyBBbmQgc28gb24uLi4KK2BgYAorCisjIyBDb25z
dHJ1Y3RzICMjCisKK1dlIHN1cHBvcnQgdGhlIGZvbGxvd2luZyBtZXRhIHByb2dyYW1taW5nIGNv
bnN0cnVjdHM6CisKK3wgYCR2YXIgaWQgPSBleHBgIHwgRGVmaW5lcyBhIG5hbWVkIGNvbnN0YW50
IHZhbHVlLiBgJGlkYCBpcyB2YWxpZCB1dGlsIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgbWV0YSBs
ZXhpY2FsIGJsb2NrLiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tfAorfCBgJHJhbmdlIGlkIGV4cC4uZXhwYCB8IFNldHMgdGhlIHJh
bmdlIG9mIGFuIGl0ZXJhdGlvbiB2YXJpYWJsZSwgd2hpY2ggY2FuIGJlIHJldXNlZCBpbiBtdWx0
aXBsZSBsb29wcyBsYXRlci4gICAgICAgICAgfAorfCBgJGZvciBpZCBzZXAgW1sgY29kZSBdXWAg
fCBJdGVyYXRpb24uIFRoZSByYW5nZSBvZiBgaWRgIG11c3QgaGF2ZSBiZWVuIGRlZmluZWQgZWFy
bGllci4gYCRpZGAgaXMgdmFsaWQgaW4gYGNvZGVgLiAgICAgICAgIHwKK3wgYCQoJClgICAgICAg
ICAgIHwgR2VuZXJhdGVzIGEgc2luZ2xlIGAkYCBjaGFyYWN0ZXIuICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8IGAkaWRgICAg
ICAgICAgICB8IFZhbHVlIG9mIHRoZSBuYW1lZCBjb25zdGFudCBvciBpdGVyYXRpb24gdmFyaWFi
bGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgJChl
eHApYCAgICAgICAgfCBWYWx1ZSBvZiB0aGUgZXhwcmVzc2lvbi4gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wg
YCRpZiBleHAgW1sgY29kZSBdXSBlbHNlX2JyYW5jaGAgfCBDb25kaXRpb25hbC4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwKK3wgYFtbIGNvZGUgXV1gICAgIHwgTWV0YSBsZXhpY2FsIGJsb2Nr
LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8Cit8IGBjcHBfY29kZWAgICAgICB8IFJhdyBDKysgY29kZS4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgJCQgY29tbWVudGAgICAgfCBNZXRhIGNvbW1l
bnQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKworKipOb3RlOioqIFRvIGdpdmUgdGhlIHVz
ZXIgc29tZSBmcmVlZG9tIGluIGZvcm1hdHRpbmcgdGhlIFB1bXAgc291cmNlCitjb2RlLCBQdW1w
IGlnbm9yZXMgYSBuZXctbGluZSBjaGFyYWN0ZXIgaWYgaXQncyByaWdodCBhZnRlciBgJGZvciBm
b29gCitvciBuZXh0IHRvIGBbW2Agb3IgYF1dYC4gV2l0aG91dCB0aGlzIHJ1bGUgeW91J2xsIG9m
dGVuIGJlIGZvcmNlZCB0byB3cml0ZQordmVyeSBsb25nIGxpbmVzIHRvIGdldCB0aGUgZGVzaXJl
ZCBvdXRwdXQuIFRoZXJlZm9yZSBzb21ldGltZXMgeW91IG1heQorbmVlZCB0byBpbnNlcnQgYW4g
ZXh0cmEgbmV3LWxpbmUgaW4gc3VjaCBwbGFjZXMgZm9yIGEgbmV3LWxpbmUgdG8gc2hvdwordXAg
aW4geW91ciBvdXRwdXQuCisKKyMjIEdyYW1tYXIgIyMKKworYGBgCitjb2RlIDo6PSBhdG9taWNf
Y29kZSoKK2F0b21pY19jb2RlIDo6PSAkdmFyIGlkID0gZXhwCisgICAgfCAkdmFyIGlkID0gW1sg
Y29kZSBdXQorICAgIHwgJHJhbmdlIGlkIGV4cC4uZXhwCisgICAgfCAkZm9yIGlkIHNlcCBbWyBj
b2RlIF1dCisgICAgfCAkKCQpCisgICAgfCAkaWQKKyAgICB8ICQoZXhwKQorICAgIHwgJGlmIGV4
cCBbWyBjb2RlIF1dIGVsc2VfYnJhbmNoCisgICAgfCBbWyBjb2RlIF1dCisgICAgfCBjcHBfY29k
ZQorc2VwIDo6PSBjcHBfY29kZSB8IGVtcHR5X3N0cmluZworZWxzZV9icmFuY2ggOjo9ICRlbHNl
IFtbIGNvZGUgXV0KKyAgICB8ICRlbGlmIGV4cCBbWyBjb2RlIF1dIGVsc2VfYnJhbmNoCisgICAg
fCBlbXB0eV9zdHJpbmcKK2V4cCA6Oj0gc2ltcGxlX2V4cHJlc3Npb25faW5fUHl0aG9uX3N5bnRh
eAorYGBgCisKKyMjIENvZGUgIyMKKworWW91IGNhbiBmaW5kIHRoZSBzb3VyY2UgY29kZSBvZiBQ
dW1wIGluIFtzY3JpcHRzL3B1bXAucHldKC4uL3NjcmlwdHMvcHVtcC5weSkuIEl0IGlzIHN0aWxs
Cit2ZXJ5IHVucG9saXNoZWQgYW5kIGxhY2tzIGF1dG9tYXRlZCB0ZXN0cywgYWx0aG91Z2ggaXQg
aGFzIGJlZW4KK3N1Y2Nlc3NmdWxseSB1c2VkIG1hbnkgdGltZXMuIElmIHlvdSBmaW5kIGEgY2hh
bmNlIHRvIHVzZSBpdCBpbiB5b3VyCitwcm9qZWN0LCBwbGVhc2UgbGV0IHVzIGtub3cgd2hhdCB5
b3UgdGhpbmshICBXZSBhbHNvIHdlbGNvbWUgaGVscCBvbgoraW1wcm92aW5nIFB1bXAuCisKKyMj
IFJlYWwgRXhhbXBsZXMgIyMKKworWW91IGNhbiBmaW5kIHJlYWwtd29ybGQgYXBwbGljYXRpb25z
IG9mIFB1bXAgaW4gW0dvb2dsZSBUZXN0XShodHRwOi8vd3d3Lmdvb2dsZS5jb20vY29kZXNlYXJj
aD9xPWZpbGUlM0FcLnB1bXAlMjQrcGFja2FnZSUzQWh0dHAlM0ElMkYlMkZnb29nbGV0ZXN0XC5n
b29nbGVjb2RlXC5jb20pIGFuZCBbR29vZ2xlIE1vY2tdKGh0dHA6Ly93d3cuZ29vZ2xlLmNvbS9j
b2Rlc2VhcmNoP3E9ZmlsZSUzQVwucHVtcCUyNCtwYWNrYWdlJTNBaHR0cCUzQSUyRiUyRmdvb2ds
ZW1vY2tcLmdvb2dsZWNvZGVcLmNvbSkuICBUaGUgc291cmNlIGZpbGUgYGZvby5oLnB1bXBgIGdl
bmVyYXRlcyBgZm9vLmhgLgorCisjIyBUaXBzICMjCisKKyAgKiBJZiBhIG1ldGEgdmFyaWFibGUg
aXMgZm9sbG93ZWQgYnkgYSBsZXR0ZXIgb3IgZGlnaXQsIHlvdSBjYW4gc2VwYXJhdGUgdGhlbSB1
c2luZyBgW1tdXWAsIHdoaWNoIGluc2VydHMgYW4gZW1wdHkgc3RyaW5nLiBGb3IgZXhhbXBsZSBg
Rm9vJGpbW11dSGVscGVyYCBnZW5lcmF0ZSBgRm9vMUhlbHBlcmAgd2hlbiBgamAgaXMgMS4KKyAg
KiBUbyBhdm9pZCBleHRyYS1sb25nIFB1bXAgc291cmNlIGxpbmVzLCB5b3UgY2FuIGJyZWFrIGEg
bGluZSBhbnl3aGVyZSB5b3Ugd2FudCBieSBpbnNlcnRpbmcgYFtbXV1gIGZvbGxvd2VkIGJ5IGEg
bmV3IGxpbmUuIFNpbmNlIGFueSBuZXctbGluZSBjaGFyYWN0ZXIgbmV4dCB0byBgW1tgIG9yIGBd
XWAgaXMgaWdub3JlZCwgdGhlIGdlbmVyYXRlZCBjb2RlIHdvbid0IGNvbnRhaW4gdGhpcyBuZXcg
bGluZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvU2FtcGxlcy5tZCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0
ZXN0L2RvY3MvU2FtcGxlcy5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMjFkMjAwNTY3MzU0NTdmNmY0OWFlY2M2
MTIxOWRhZDIyNjEyYmYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9TYW1w
bGVzLm1kCkBAIC0wLDAgKzEsMTQgQEAKK0lmIHlvdSdyZSBsaWtlIHVzLCB5b3UnZCBsaWtlIHRv
IGxvb2sgYXQgc29tZSBHb29nbGUgVGVzdCBzYW1wbGUgY29kZS4gIFRoZQorW3NhbXBsZXMgZm9s
ZGVyXSguLi9zYW1wbGVzKSBoYXMgYSBudW1iZXIgb2Ygd2VsbC1jb21tZW50ZWQgc2FtcGxlcyBz
aG93aW5nIGhvdyB0byB1c2UgYQordmFyaWV0eSBvZiBHb29nbGUgVGVzdCBmZWF0dXJlcy4KKwor
ICAqIFtTYW1wbGUgIzFdKC4uL3NhbXBsZXMvc2FtcGxlMV91bml0dGVzdC5jYykgc2hvd3MgdGhl
IGJhc2ljIHN0ZXBzIG9mIHVzaW5nIEdvb2dsZSBUZXN0IHRvIHRlc3QgQysrIGZ1bmN0aW9ucy4K
KyAgKiBbU2FtcGxlICMyXSguLi9zYW1wbGVzL3NhbXBsZTJfdW5pdHRlc3QuY2MpIHNob3dzIGEg
bW9yZSBjb21wbGV4IHVuaXQgdGVzdCBmb3IgYSBjbGFzcyB3aXRoIG11bHRpcGxlIG1lbWJlciBm
dW5jdGlvbnMuCisgICogW1NhbXBsZSAjM10oLi4vc2FtcGxlcy9zYW1wbGUzX3VuaXR0ZXN0LmNj
KSB1c2VzIGEgdGVzdCBmaXh0dXJlLgorICAqIFtTYW1wbGUgIzRdKC4uL3NhbXBsZXMvc2FtcGxl
NF91bml0dGVzdC5jYykgaXMgYW5vdGhlciBiYXNpYyBleGFtcGxlIG9mIHVzaW5nIEdvb2dsZSBU
ZXN0LgorICAqIFtTYW1wbGUgIzVdKC4uL3NhbXBsZXMvc2FtcGxlNV91bml0dGVzdC5jYykgdGVh
Y2hlcyBob3cgdG8gcmV1c2UgYSB0ZXN0IGZpeHR1cmUgaW4gbXVsdGlwbGUgdGVzdCBjYXNlcyBi
eSBkZXJpdmluZyBzdWItZml4dHVyZXMgZnJvbSBpdC4KKyAgKiBbU2FtcGxlICM2XSguLi9zYW1w
bGVzL3NhbXBsZTZfdW5pdHRlc3QuY2MpIGRlbW9uc3RyYXRlcyB0eXBlLXBhcmFtZXRlcml6ZWQg
dGVzdHMuCisgICogW1NhbXBsZSAjN10oLi4vc2FtcGxlcy9zYW1wbGU3X3VuaXR0ZXN0LmNjKSB0
ZWFjaGVzIHRoZSBiYXNpY3Mgb2YgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KKyAgKiBbU2Ft
cGxlICM4XSguLi9zYW1wbGVzL3NhbXBsZThfdW5pdHRlc3QuY2MpIHNob3dzIHVzaW5nIGBDb21i
aW5lKClgIGluIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMuCisgICogW1NhbXBsZSAjOV0oLi4v
c2FtcGxlcy9zYW1wbGU5X3VuaXR0ZXN0LmNjKSBzaG93cyB1c2Ugb2YgdGhlIGxpc3RlbmVyIEFQ
SSB0byBtb2RpZnkgR29vZ2xlIFRlc3QncyBjb25zb2xlIG91dHB1dCBhbmQgdGhlIHVzZSBvZiBp
dHMgcmVmbGVjdGlvbiBBUEkgdG8gaW5zcGVjdCB0ZXN0IHJlc3VsdHMuCisgICogW1NhbXBsZSAj
MTBdKC4uL3NhbXBsZXMvc2FtcGxlMTBfdW5pdHRlc3QuY2MpIHNob3dzIHVzZSBvZiB0aGUgbGlz
dGVuZXIgQVBJIHRvIGltcGxlbWVudCBhIHByaW1pdGl2ZSBtZW1vcnkgbGVhayBjaGVja2VyLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9WMV81X0FkdmFuY2VkR3VpZGUubWQgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xldGVzdC9kb2NzL1YxXzVfQWR2YW5jZWRHdWlkZS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNGUxOWMyNmZk
ZmYyMTlhNWQ4Mzk1OWY3NWQzMTYxODk1MTBiMDQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZXRlc3QvZG9jcy9WMV81X0FkdmFuY2VkR3VpZGUubWQKQEAgLTAsMCArMSwyMDk2IEBACisKKwor
Tm93IHRoYXQgeW91IGhhdmUgcmVhZCBbUHJpbWVyXShWMV81X1ByaW1lci5tZCkgYW5kIGxlYXJu
ZWQgaG93IHRvIHdyaXRlIHRlc3RzCit1c2luZyBHb29nbGUgVGVzdCwgaXQncyB0aW1lIHRvIGxl
YXJuIHNvbWUgbmV3IHRyaWNrcy4gVGhpcyBkb2N1bWVudAord2lsbCBzaG93IHlvdSBtb3JlIGFz
c2VydGlvbnMgYXMgd2VsbCBhcyBob3cgdG8gY29uc3RydWN0IGNvbXBsZXgKK2ZhaWx1cmUgbWVz
c2FnZXMsIHByb3BhZ2F0ZSBmYXRhbCBmYWlsdXJlcywgcmV1c2UgYW5kIHNwZWVkIHVwIHlvdXIK
K3Rlc3QgZml4dHVyZXMsIGFuZCB1c2UgdmFyaW91cyBmbGFncyB3aXRoIHlvdXIgdGVzdHMuCisK
KyMgTW9yZSBBc3NlcnRpb25zICMKKworVGhpcyBzZWN0aW9uIGNvdmVycyBzb21lIGxlc3MgZnJl
cXVlbnRseSB1c2VkLCBidXQgc3RpbGwgc2lnbmlmaWNhbnQsCithc3NlcnRpb25zLgorCisjIyBF
eHBsaWNpdCBTdWNjZXNzIGFuZCBGYWlsdXJlICMjCisKK1RoZXNlIHRocmVlIGFzc2VydGlvbnMg
ZG8gbm90IGFjdHVhbGx5IHRlc3QgYSB2YWx1ZSBvciBleHByZXNzaW9uLiBJbnN0ZWFkLAordGhl
eSBnZW5lcmF0ZSBhIHN1Y2Nlc3Mgb3IgZmFpbHVyZSBkaXJlY3RseS4gTGlrZSB0aGUgbWFjcm9z
IHRoYXQgYWN0dWFsbHkKK3BlcmZvcm0gYSB0ZXN0LCB5b3UgbWF5IHN0cmVhbSBhIGN1c3RvbSBm
YWlsdXJlIG1lc3NhZ2UgaW50byB0aGUgdGhlbS4KKworfCBgU1VDQ0VFRCgpO2AgfAorfDotLS0t
LS0tLS0tLS0tfAorCitHZW5lcmF0ZXMgYSBzdWNjZXNzLiBUaGlzIGRvZXMgTk9UIG1ha2UgdGhl
IG92ZXJhbGwgdGVzdCBzdWNjZWVkLiBBIHRlc3QgaXMKK2NvbnNpZGVyZWQgc3VjY2Vzc2Z1bCBv
bmx5IGlmIG5vbmUgb2YgaXRzIGFzc2VydGlvbnMgZmFpbCBkdXJpbmcgaXRzIGV4ZWN1dGlvbi4K
KworTm90ZTogYFNVQ0NFRUQoKWAgaXMgcHVyZWx5IGRvY3VtZW50YXJ5IGFuZCBjdXJyZW50bHkg
ZG9lc24ndCBnZW5lcmF0ZSBhbnkKK3VzZXItdmlzaWJsZSBvdXRwdXQuIEhvd2V2ZXIsIHdlIG1h
eSBhZGQgYFNVQ0NFRUQoKWAgbWVzc2FnZXMgdG8gR29vZ2xlIFRlc3Qncworb3V0cHV0IGluIHRo
ZSBmdXR1cmUuCisKK3wgYEZBSUwoKTtgICB8IGBBRERfRkFJTFVSRSgpO2AgfAorfDotLS0tLS0t
LS0tLXw6LS0tLS0tLS0tLS0tLS0tLS18CisKK2BGQUlMKmAgZ2VuZXJhdGVzIGEgZmF0YWwgZmFp
bHVyZSB3aGlsZSBgQUREX0ZBSUxVUkUqYCBnZW5lcmF0ZXMgYSBub25mYXRhbAorZmFpbHVyZS4g
VGhlc2UgYXJlIHVzZWZ1bCB3aGVuIGNvbnRyb2wgZmxvdywgcmF0aGVyIHRoYW4gYSBCb29sZWFu
IGV4cHJlc3Npb24sCitkZXRlcmVtaW5lcyB0aGUgdGVzdCdzIHN1Y2Nlc3Mgb3IgZmFpbHVyZS4g
Rm9yIGV4YW1wbGUsIHlvdSBtaWdodCB3YW50IHRvIHdyaXRlCitzb21ldGhpbmcgbGlrZToKKwor
YGBgCitzd2l0Y2goZXhwcmVzc2lvbikgeworICBjYXNlIDE6IC4uLiBzb21lIGNoZWNrcyAuLi4K
KyAgY2FzZSAyOiAuLi4gc29tZSBvdGhlciBjaGVja3MKKyAgLi4uCisgIGRlZmF1bHQ6IEZBSUwo
KSA8PCAiV2Ugc2hvdWxkbid0IGdldCBoZXJlLiI7Cit9CitgYGAKKworX0F2YWlsYWJpbGl0eV86
IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIEV4Y2VwdGlvbiBBc3NlcnRpb25zICMjCisKK1Ro
ZXNlIGFyZSBmb3IgdmVyaWZ5aW5nIHRoYXQgYSBwaWVjZSBvZiBjb2RlIHRocm93cyAob3IgZG9l
cyBub3QKK3Rocm93KSBhbiBleGNlcHRpb24gb2YgdGhlIGdpdmVuIHR5cGU6CisKK3wgKipGYXRh
bCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAor
fDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0t
LS0tLS18Cit8IGBBU1NFUlRfVEhST1coYF9zdGF0ZW1lbnRfLCBfZXhjZXB0aW9uXF90eXBlX2Ap
O2AgIHwgYEVYUEVDVF9USFJPVyhgX3N0YXRlbWVudF8sIF9leGNlcHRpb25cX3R5cGVfYCk7YCAg
fCBfc3RhdGVtZW50XyB0aHJvd3MgYW4gZXhjZXB0aW9uIG9mIHRoZSBnaXZlbiB0eXBlICB8Cit8
IGBBU1NFUlRfQU5ZX1RIUk9XKGBfc3RhdGVtZW50X2ApO2AgICAgICAgICAgICAgICAgfCBgRVhQ
RUNUX0FOWV9USFJPVyhgX3N0YXRlbWVudF9gKTtgICAgICAgICAgICAgICAgIHwgX3N0YXRlbWVu
dF8gdGhyb3dzIGFuIGV4Y2VwdGlvbiBvZiBhbnkgdHlwZSAgICAgICAgfAorfCBgQVNTRVJUX05P
X1RIUk9XKGBfc3RhdGVtZW50X2ApO2AgICAgICAgICAgICAgICAgIHwgYEVYUEVDVF9OT19USFJP
VyhgX3N0YXRlbWVudF9gKTtgICAgICAgICAgICAgICAgICB8IF9zdGF0ZW1lbnRfIGRvZXNuJ3Qg
dGhyb3cgYW55IGV4Y2VwdGlvbiAgICAgICAgICAgIHwKKworRXhhbXBsZXM6CisKK2BgYAorQVNT
RVJUX1RIUk9XKEZvbyg1KSwgYmFyX2V4Y2VwdGlvbik7CisKK0VYUEVDVF9OT19USFJPVyh7Cisg
IGludCBuID0gNTsKKyAgQmFyKCZuKTsKK30pOworYGBgCisKK19BdmFpbGFiaWxpdHlfOiBMaW51
eCwgV2luZG93cywgTWFjOyBzaW5jZSB2ZXJzaW9uIDEuMS4wLgorCisjIyBQcmVkaWNhdGUgQXNz
ZXJ0aW9ucyBmb3IgQmV0dGVyIEVycm9yIE1lc3NhZ2VzICMjCisKK0V2ZW4gdGhvdWdoIEdvb2ds
ZSBUZXN0IGhhcyBhIHJpY2ggc2V0IG9mIGFzc2VydGlvbnMsIHRoZXkgY2FuIG5ldmVyIGJlCitj
b21wbGV0ZSwgYXMgaXQncyBpbXBvc3NpYmxlIChub3IgYSBnb29kIGlkZWEpIHRvIGFudGljaXBh
dGUgYWxsIHRoZSBzY2VuYXJpb3MKK2EgdXNlciBtaWdodCBydW4gaW50by4gVGhlcmVmb3JlLCBz
b21ldGltZXMgYSB1c2VyIGhhcyB0byB1c2UgYEVYUEVDVF9UUlVFKClgCit0byBjaGVjayBhIGNv
bXBsZXggZXhwcmVzc2lvbiwgZm9yIGxhY2sgb2YgYSBiZXR0ZXIgbWFjcm8uIFRoaXMgaGFzIHRo
ZSBwcm9ibGVtCitvZiBub3Qgc2hvd2luZyB5b3UgdGhlIHZhbHVlcyBvZiB0aGUgcGFydHMgb2Yg
dGhlIGV4cHJlc3Npb24sIG1ha2luZyBpdCBoYXJkIHRvCit1bmRlcnN0YW5kIHdoYXQgd2VudCB3
cm9uZy4gQXMgYSB3b3JrYXJvdW5kLCBzb21lIHVzZXJzIGNob29zZSB0byBjb25zdHJ1Y3QgdGhl
CitmYWlsdXJlIG1lc3NhZ2UgYnkgdGhlbXNlbHZlcywgc3RyZWFtaW5nIGl0IGludG8gYEVYUEVD
VF9UUlVFKClgLiBIb3dldmVyLCB0aGlzCitpcyBhd2t3YXJkIGVzcGVjaWFsbHkgd2hlbiB0aGUg
ZXhwcmVzc2lvbiBoYXMgc2lkZS1lZmZlY3RzIG9yIGlzIGV4cGVuc2l2ZSB0bworZXZhbHVhdGUu
CisKK0dvb2dsZSBUZXN0IGdpdmVzIHlvdSB0aHJlZSBkaWZmZXJlbnQgb3B0aW9ucyB0byBzb2x2
ZSB0aGlzIHByb2JsZW06CisKKyMjIyBVc2luZyBhbiBFeGlzdGluZyBCb29sZWFuIEZ1bmN0aW9u
ICMjIworCitJZiB5b3UgYWxyZWFkeSBoYXZlIGEgZnVuY3Rpb24gb3IgYSBmdW5jdG9yIHRoYXQg
cmV0dXJucyBgYm9vbGAgKG9yIGEgdHlwZQordGhhdCBjYW4gYmUgaW1wbGljaXRseSBjb252ZXJ0
ZWQgdG8gYGJvb2xgKSwgeW91IGNhbiB1c2UgaXQgaW4gYSBfcHJlZGljYXRlCithc3NlcnRpb25f
IHRvIGdldCB0aGUgZnVuY3Rpb24gYXJndW1lbnRzIHByaW50ZWQgZm9yIGZyZWU6CisKK3wgKipG
YXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiog
fAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0t
LS0tLS0tLS18Cit8IGBBU1NFUlRfUFJFRDEoYF9wcmVkMSwgdmFsMV9gKTtgICAgICAgIHwgYEVY
UEVDVF9QUkVEMShgX3ByZWQxLCB2YWwxX2ApO2AgfCBfcHJlZDEodmFsMSlfIHJldHVybnMgdHJ1
ZSB8Cit8IGBBU1NFUlRfUFJFRDIoYF9wcmVkMiwgdmFsMSwgdmFsMl9gKTtgIHwgYEVYUEVDVF9Q
UkVEMihgX3ByZWQyLCB2YWwxLCB2YWwyX2ApO2AgfCAgX3ByZWQyKHZhbDEsIHZhbDIpXyByZXR1
cm5zIHRydWUgfAorfCAgLi4uICAgICAgICAgICAgICAgIHwgLi4uICAgICAgICAgICAgICAgICAg
ICB8IC4uLiAgICAgICAgICB8CisKK0luIHRoZSBhYm92ZSwgX3ByZWRuXyBpcyBhbiBfbl8tYXJ5
IHByZWRpY2F0ZSBmdW5jdGlvbiBvciBmdW5jdG9yLCB3aGVyZQorX3ZhbDFfLCBfdmFsMl8sIC4u
LiwgYW5kIF92YWxuXyBhcmUgaXRzIGFyZ3VtZW50cy4gVGhlIGFzc2VydGlvbiBzdWNjZWVkcwor
aWYgdGhlIHByZWRpY2F0ZSByZXR1cm5zIGB0cnVlYCB3aGVuIGFwcGxpZWQgdG8gdGhlIGdpdmVu
IGFyZ3VtZW50cywgYW5kIGZhaWxzCitvdGhlcndpc2UuIFdoZW4gdGhlIGFzc2VydGlvbiBmYWls
cywgaXQgcHJpbnRzIHRoZSB2YWx1ZSBvZiBlYWNoIGFyZ3VtZW50LiBJbgorZWl0aGVyIGNhc2Us
IHRoZSBhcmd1bWVudHMgYXJlIGV2YWx1YXRlZCBleGFjdGx5IG9uY2UuCisKK0hlcmUncyBhbiBl
eGFtcGxlLiBHaXZlbgorCitgYGAKKy8vIFJldHVybnMgdHJ1ZSBpZmYgbSBhbmQgbiBoYXZlIG5v
IGNvbW1vbiBkaXZpc29ycyBleGNlcHQgMS4KK2Jvb2wgTXV0dWFsbHlQcmltZShpbnQgbSwgaW50
IG4pIHsgLi4uIH0KK2NvbnN0IGludCBhID0gMzsKK2NvbnN0IGludCBiID0gNDsKK2NvbnN0IGlu
dCBjID0gMTA7CitgYGAKKwordGhlIGFzc2VydGlvbiBgRVhQRUNUX1BSRUQyKE11dHVhbGx5UHJp
bWUsIGEsIGIpO2Agd2lsbCBzdWNjZWVkLCB3aGlsZSB0aGUKK2Fzc2VydGlvbiBgRVhQRUNUX1BS
RUQyKE11dHVhbGx5UHJpbWUsIGIsIGMpO2Agd2lsbCBmYWlsIHdpdGggdGhlIG1lc3NhZ2UKKwor
PHByZT4KKyFNdXR1YWxseVByaW1lKGIsIGMpIGlzIGZhbHNlLCB3aGVyZTxicj4KK2IgaXMgNDxi
cj4KK2MgaXMgMTA8YnI+Cis8L3ByZT4KKworKipOb3RlczoqKgorCisgIDEuIElmIHlvdSBzZWUg
YSBjb21waWxlciBlcnJvciAibm8gbWF0Y2hpbmcgZnVuY3Rpb24gdG8gY2FsbCIgd2hlbiB1c2lu
ZyBgQVNTRVJUX1BSRUQqYCBvciBgRVhQRUNUX1BSRUQqYCwgcGxlYXNlIHNlZSBbdGhpc10oVjFf
NV9GQVEubWQjdGhlLWNvbXBpbGVyLWNvbXBsYWlucy1hYm91dC11bmRlZmluZWQtcmVmZXJlbmNl
cy10by1zb21lLXN0YXRpYy1jb25zdC1tZW1iZXItdmFyaWFibGVzLWJ1dC1pLWRpZC1kZWZpbmUt
dGhlbS1pbi10aGUtY2xhc3MtYm9keS13aGF0cy13cm9uZykgZm9yIGhvdyB0byByZXNvbHZlIGl0
LgorICAxLiBDdXJyZW50bHkgd2Ugb25seSBwcm92aWRlIHByZWRpY2F0ZSBhc3NlcnRpb25zIG9m
IGFyaXR5IDw9IDUuIElmIHlvdSBuZWVkIGEgaGlnaGVyLWFyaXR5IGFzc2VydGlvbiwgbGV0IHVz
IGtub3cuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjCisKKyMjIyBVc2lu
ZyBhIEZ1bmN0aW9uIFRoYXQgUmV0dXJucyBhbiBBc3NlcnRpb25SZXN1bHQgIyMjCisKK1doaWxl
IGBFWFBFQ1RfUFJFRCooKWAgYW5kIGZyaWVuZHMgYXJlIGhhbmR5IGZvciBhIHF1aWNrIGpvYiwg
dGhlCitzeW50YXggaXMgbm90IHNhdGlzZmFjdG9yeTogeW91IGhhdmUgdG8gdXNlIGRpZmZlcmVu
dCBtYWNyb3MgZm9yCitkaWZmZXJlbnQgYXJpdGllcywgYW5kIGl0IGZlZWxzIG1vcmUgbGlrZSBM
aXNwIHRoYW4gQysrLiAgVGhlCitgOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHRgIGNsYXNzIHNv
bHZlcyB0aGlzIHByb2JsZW0uCisKK0FuIGBBc3NlcnRpb25SZXN1bHRgIG9iamVjdCByZXByZXNl
bnRzIHRoZSByZXN1bHQgb2YgYW4gYXNzZXJ0aW9uCisod2hldGhlciBpdCdzIGEgc3VjY2VzcyBv
ciBhIGZhaWx1cmUsIGFuZCBhbiBhc3NvY2lhdGVkIG1lc3NhZ2UpLiAgWW91CitjYW4gY3JlYXRl
IGFuIGBBc3NlcnRpb25SZXN1bHRgIHVzaW5nIG9uZSBvZiB0aGVzZSBmYWN0b3J5CitmdW5jdGlv
bnM6CisKK2BgYAorbmFtZXNwYWNlIHRlc3RpbmcgeworCisvLyBSZXR1cm5zIGFuIEFzc2VydGlv
blJlc3VsdCBvYmplY3QgdG8gaW5kaWNhdGUgdGhhdCBhbiBhc3NlcnRpb24gaGFzCisvLyBzdWNj
ZWVkZWQuCitBc3NlcnRpb25SZXN1bHQgQXNzZXJ0aW9uU3VjY2VzcygpOworCisvLyBSZXR1cm5z
IGFuIEFzc2VydGlvblJlc3VsdCBvYmplY3QgdG8gaW5kaWNhdGUgdGhhdCBhbiBhc3NlcnRpb24g
aGFzCisvLyBmYWlsZWQuCitBc3NlcnRpb25SZXN1bHQgQXNzZXJ0aW9uRmFpbHVyZSgpOworCit9
CitgYGAKKworWW91IGNhbiB0aGVuIHVzZSB0aGUgYDw8YCBvcGVyYXRvciB0byBzdHJlYW0gbWVz
c2FnZXMgdG8gdGhlCitgQXNzZXJ0aW9uUmVzdWx0YCBvYmplY3QuCisKK1RvIHByb3ZpZGUgbW9y
ZSByZWFkYWJsZSBtZXNzYWdlcyBpbiBCb29sZWFuIGFzc2VydGlvbnMKKyhlLmcuIGBFWFBFQ1Rf
VFJVRSgpYCksIHdyaXRlIGEgcHJlZGljYXRlIGZ1bmN0aW9uIHRoYXQgcmV0dXJucworYEFzc2Vy
dGlvblJlc3VsdGAgaW5zdGVhZCBvZiBgYm9vbGAuIEZvciBleGFtcGxlLCBpZiB5b3UgZGVmaW5l
CitgSXNFdmVuKClgIGFzOgorCitgYGAKKzo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IElzRXZl
bihpbnQgbikgeworICBpZiAoKG4gJSAyKSA9PSAwKQorICAgIHJldHVybiA6OnRlc3Rpbmc6OkFz
c2VydGlvblN1Y2Nlc3MoKTsKKyAgZWxzZQorICAgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlv
bkZhaWx1cmUoKSA8PCBuIDw8ICIgaXMgb2RkIjsKK30KK2BgYAorCitpbnN0ZWFkIG9mOgorCitg
YGAKK2Jvb2wgSXNFdmVuKGludCBuKSB7CisgIHJldHVybiAobiAlIDIpID09IDA7Cit9CitgYGAK
KwordGhlIGZhaWxlZCBhc3NlcnRpb24gYEVYUEVDVF9UUlVFKElzRXZlbihGaWIoNCkpKWAgd2ls
bCBwcmludDoKKworPHByZT4KK1ZhbHVlIG9mOiAhSXNFdmVuKEZpYig0KSk8YnI+CitBY3R1YWw6
IGZhbHNlICgqMyBpcyBvZGQqKTxicj4KK0V4cGVjdGVkOiB0cnVlPGJyPgorPC9wcmU+CisKK2lu
c3RlYWQgb2YgYSBtb3JlIG9wYXF1ZQorCis8cHJlPgorVmFsdWUgb2Y6ICFJc0V2ZW4oRmliKDQp
KTxicj4KK0FjdHVhbDogZmFsc2U8YnI+CitFeHBlY3RlZDogdHJ1ZTxicj4KKzwvcHJlPgorCitJ
ZiB5b3Ugd2FudCBpbmZvcm1hdGl2ZSBtZXNzYWdlcyBpbiBgRVhQRUNUX0ZBTFNFYCBhbmQgYEFT
U0VSVF9GQUxTRWAKK2FzIHdlbGwsIGFuZCBhcmUgZmluZSB3aXRoIG1ha2luZyB0aGUgcHJlZGlj
YXRlIHNsb3dlciBpbiB0aGUgc3VjY2VzcworY2FzZSwgeW91IGNhbiBzdXBwbHkgYSBzdWNjZXNz
IG1lc3NhZ2U6CisKK2BgYAorOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgSXNFdmVuKGludCBu
KSB7CisgIGlmICgobiAlIDIpID09IDApCisgICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9u
U3VjY2VzcygpIDw8IG4gPDwgIiBpcyBldmVuIjsKKyAgZWxzZQorICAgIHJldHVybiA6OnRlc3Rp
bmc6OkFzc2VydGlvbkZhaWx1cmUoKSA8PCBuIDw8ICIgaXMgb2RkIjsKK30KK2BgYAorCitUaGVu
IHRoZSBzdGF0ZW1lbnQgYEVYUEVDVF9GQUxTRShJc0V2ZW4oRmliKDYpKSlgIHdpbGwgcHJpbnQK
KworPHByZT4KK1ZhbHVlIG9mOiAhSXNFdmVuKEZpYig2KSk8YnI+CitBY3R1YWw6IHRydWUgKDgg
aXMgZXZlbik8YnI+CitFeHBlY3RlZDogZmFsc2U8YnI+Cis8L3ByZT4KKworX0F2YWlsYWJpbGl0
eV86IExpbnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHZlcnNpb24gMS40LjEuCisKKyMjIyBVc2lu
ZyBhIFByZWRpY2F0ZS1Gb3JtYXR0ZXIgIyMjCisKK0lmIHlvdSBmaW5kIHRoZSBkZWZhdWx0IG1l
c3NhZ2UgZ2VuZXJhdGVkIGJ5IGAoQVNTRVJUfEVYUEVDVClfUFJFRCpgIGFuZAorYChBU1NFUlR8
RVhQRUNUKV8oVFJVRXxGQUxTRSlgIHVuc2F0aXNmYWN0b3J5LCBvciBzb21lIGFyZ3VtZW50cyB0
byB5b3VyCitwcmVkaWNhdGUgZG8gbm90IHN1cHBvcnQgc3RyZWFtaW5nIHRvIGBvc3RyZWFtYCwg
eW91IGNhbiBpbnN0ZWFkIHVzZSB0aGUKK2ZvbGxvd2luZyBfcHJlZGljYXRlLWZvcm1hdHRlciBh
c3NlcnRpb25zXyB0byBfZnVsbHlfIGN1c3RvbWl6ZSBob3cgdGhlCittZXNzYWdlIGlzIGZvcm1h
dHRlZDoKKworfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8
ICoqVmVyaWZpZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKK3wgYEFTU0VSVF9QUkVEX0ZPUk1BVDEoYF9wcmVkXF9m
b3JtYXQxLCB2YWwxX2ApO2AgICAgICAgIHwgYEVYUEVDVF9QUkVEX0ZPUk1BVDEoYF9wcmVkXF9m
b3JtYXQxLCB2YWwxX2ApOyB8IF9wcmVkXF9mb3JtYXQxKHZhbDEpXyBpcyBzdWNjZXNzZnVsIHwK
K3wgYEFTU0VSVF9QUkVEX0ZPUk1BVDIoYF9wcmVkXF9mb3JtYXQyLCB2YWwxLCB2YWwyX2ApO2Ag
fCBgRVhQRUNUX1BSRURfRk9STUFUMihgX3ByZWRcX2Zvcm1hdDIsIHZhbDEsIHZhbDJfYCk7YCB8
IF9wcmVkXF9mb3JtYXQyKHZhbDEsIHZhbDIpXyBpcyBzdWNjZXNzZnVsIHwKK3wgYC4uLmAgICAg
ICAgICAgICAgICB8IGAuLi5gICAgICAgICAgICAgICAgICAgfCBgLi4uYCAgICAgICAgfAorCitU
aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgYW5kIHRoZSBwcmV2aW91cyB0d28gZ3JvdXBzIG9m
IG1hY3JvcyBpcyB0aGF0IGluc3RlYWQgb2YKK2EgcHJlZGljYXRlLCBgKEFTU0VSVHxFWFBFQ1Qp
X1BSRURfRk9STUFUKmAgdGFrZSBhIF9wcmVkaWNhdGUtZm9ybWF0dGVyXworKF9wcmVkXF9mb3Jt
YXRuXyksIHdoaWNoIGlzIGEgZnVuY3Rpb24gb3IgZnVuY3RvciB3aXRoIHRoZSBzaWduYXR1cmU6
CisKK2A6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBQcmVkaWNhdGVGb3JtYXR0ZXJuKGNvbnN0
IGNoYXIqIGBfZXhwcjFfYCwgY29uc3QgY2hhciogYF9leHByMl9gLCAuLi4gY29uc3QgY2hhciog
YF9leHBybl9gLCBUMSBgX3ZhbDFfYCwgVDIgYF92YWwyX2AsIC4uLiBUbiBgX3ZhbG5fYCk7YAor
Cit3aGVyZSBfdmFsMV8sIF92YWwyXywgLi4uLCBhbmQgX3ZhbG5fIGFyZSB0aGUgdmFsdWVzIG9m
IHRoZSBwcmVkaWNhdGUKK2FyZ3VtZW50cywgYW5kIF9leHByMV8sIF9leHByMl8sIC4uLiwgYW5k
IF9leHBybl8gYXJlIHRoZSBjb3JyZXNwb25kaW5nCitleHByZXNzaW9ucyBhcyB0aGV5IGFwcGVh
ciBpbiB0aGUgc291cmNlIGNvZGUuIFRoZSB0eXBlcyBgVDFgLCBgVDJgLCAuLi4sIGFuZAorYFRu
YCBjYW4gYmUgZWl0aGVyIHZhbHVlIHR5cGVzIG9yIHJlZmVyZW5jZSB0eXBlcy4gRm9yIGV4YW1w
bGUsIGlmIGFuCithcmd1bWVudCBoYXMgdHlwZSBgRm9vYCwgeW91IGNhbiBkZWNsYXJlIGl0IGFz
IGVpdGhlciBgRm9vYCBvciBgY29uc3QgRm9vJmAsCit3aGljaGV2ZXIgaXMgYXBwcm9wcmlhdGUu
CisKK0EgcHJlZGljYXRlLWZvcm1hdHRlciByZXR1cm5zIGEgYDo6dGVzdGluZzo6QXNzZXJ0aW9u
UmVzdWx0YCBvYmplY3QgdG8gaW5kaWNhdGUKK3doZXRoZXIgdGhlIGFzc2VydGlvbiBoYXMgc3Vj
Y2VlZGVkIG9yIG5vdC4gVGhlIG9ubHkgd2F5IHRvIGNyZWF0ZSBzdWNoIGFuCitvYmplY3QgaXMg
dG8gY2FsbCBvbmUgb2YgdGhlc2UgZmFjdG9yeSBmdW5jdGlvbnM6CisKK0FzIGFuIGV4YW1wbGUs
IGxldCdzIGltcHJvdmUgdGhlIGZhaWx1cmUgbWVzc2FnZSBpbiB0aGUgcHJldmlvdXMgZXhhbXBs
ZSwgd2hpY2ggdXNlcyBgRVhQRUNUX1BSRUQyKClgOgorCitgYGAKKy8vIFJldHVybnMgdGhlIHNt
YWxsZXN0IHByaW1lIGNvbW1vbiBkaXZpc29yIG9mIG0gYW5kIG4sCisvLyBvciAxIHdoZW4gbSBh
bmQgbiBhcmUgbXV0dWFsbHkgcHJpbWUuCitpbnQgU21hbGxlc3RQcmltZUNvbW1vbkRpdmlzb3Io
aW50IG0sIGludCBuKSB7IC4uLiB9CisKKy8vIEEgcHJlZGljYXRlLWZvcm1hdHRlciBmb3IgYXNz
ZXJ0aW5nIHRoYXQgdHdvIGludGVnZXJzIGFyZSBtdXR1YWxseSBwcmltZS4KKzo6dGVzdGluZzo6
QXNzZXJ0aW9uUmVzdWx0IEFzc2VydE11dHVhbGx5UHJpbWUoY29uc3QgY2hhciogbV9leHByLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBuX2V4cHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgbikgeworICBpZiAoTXV0dWFsbHlQcmltZShtLCBuKSkKKyAgICByZXR1cm4gOjp0ZXN0aW5n
OjpBc3NlcnRpb25TdWNjZXNzKCk7CisKKyAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uRmFp
bHVyZSgpCisgICAgICA8PCBtX2V4cHIgPDwgIiBhbmQgIiA8PCBuX2V4cHIgPDwgIiAoIiA8PCBt
IDw8ICIgYW5kICIgPDwgbgorICAgICAgPDwgIikgYXJlIG5vdCBtdXR1YWxseSBwcmltZSwgIiA8
PCAiYXMgdGhleSBoYXZlIGEgY29tbW9uIGRpdmlzb3IgIgorICAgICAgPDwgU21hbGxlc3RQcmlt
ZUNvbW1vbkRpdmlzb3IobSwgbik7Cit9CitgYGAKKworV2l0aCB0aGlzIHByZWRpY2F0ZS1mb3Jt
YXR0ZXIsIHdlIGNhbiB1c2UKKworYGBgCitFWFBFQ1RfUFJFRF9GT1JNQVQyKEFzc2VydE11dHVh
bGx5UHJpbWUsIGIsIGMpOworYGBgCisKK3RvIGdlbmVyYXRlIHRoZSBtZXNzYWdlCisKKzxwcmU+
CitiIGFuZCBjICg0IGFuZCAxMCkgYXJlIG5vdCBtdXR1YWxseSBwcmltZSwgYXMgdGhleSBoYXZl
IGEgY29tbW9uIGRpdmlzb3IgMi48YnI+Cis8L3ByZT4KKworQXMgeW91IG1heSBoYXZlIHJlYWxp
emVkLCBtYW55IG9mIHRoZSBhc3NlcnRpb25zIHdlIGludHJvZHVjZWQgZWFybGllciBhcmUKK3Nw
ZWNpYWwgY2FzZXMgb2YgYChFWFBFQ1R8QVNTRVJUKV9QUkVEX0ZPUk1BVCpgLiBJbiBmYWN0LCBt
b3N0IG9mIHRoZW0gYXJlCitpbmRlZWQgZGVmaW5lZCB1c2luZyBgKEVYUEVDVHxBU1NFUlQpX1BS
RURfRk9STUFUKmAuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgorCisK
KyMjIEZsb2F0aW5nLVBvaW50IENvbXBhcmlzb24gIyMKKworQ29tcGFyaW5nIGZsb2F0aW5nLXBv
aW50IG51bWJlcnMgaXMgdHJpY2t5LiBEdWUgdG8gcm91bmQtb2ZmIGVycm9ycywgaXQgaXMKK3Zl
cnkgdW5saWtlbHkgdGhhdCB0d28gZmxvYXRpbmctcG9pbnRzIHdpbGwgbWF0Y2ggZXhhY3RseS4g
VGhlcmVmb3JlLAorYEFTU0VSVF9FUWAgJ3MgbmFpdmUgY29tcGFyaXNvbiB1c3VhbGx5IGRvZXNu
J3Qgd29yay4gQW5kIHNpbmNlIGZsb2F0aW5nLXBvaW50cworY2FuIGhhdmUgYSB3aWRlIHZhbHVl
IHJhbmdlLCBubyBzaW5nbGUgZml4ZWQgZXJyb3IgYm91bmQgd29ya3MuIEl0J3MgYmV0dGVyIHRv
Citjb21wYXJlIGJ5IGEgZml4ZWQgcmVsYXRpdmUgZXJyb3IgYm91bmQsIGV4Y2VwdCBmb3IgdmFs
dWVzIGNsb3NlIHRvIDAgZHVlIHRvCit0aGUgbG9zcyBvZiBwcmVjaXNpb24gdGhlcmUuCisKK0lu
IGdlbmVyYWwsIGZvciBmbG9hdGluZy1wb2ludCBjb21wYXJpc29uIHRvIG1ha2Ugc2Vuc2UsIHRo
ZSB1c2VyIG5lZWRzIHRvCitjYXJlZnVsbHkgY2hvb3NlIHRoZSBlcnJvciBib3VuZC4gSWYgdGhl
eSBkb24ndCB3YW50IG9yIGNhcmUgdG8sIGNvbXBhcmluZyBpbgordGVybXMgb2YgVW5pdHMgaW4g
dGhlIExhc3QgUGxhY2UgKFVMUHMpIGlzIGEgZ29vZCBkZWZhdWx0LCBhbmQgR29vZ2xlIFRlc3QK
K3Byb3ZpZGVzIGFzc2VydGlvbnMgdG8gZG8gdGhpcy4gRnVsbCBkZXRhaWxzIGFib3V0IFVMUHMg
YXJlIHF1aXRlIGxvbmc7IGlmIHlvdQord2FudCB0byBsZWFybiBtb3JlLCBzZWUKK1t0aGlzIGFy
dGljbGUgb24gZmxvYXQgY29tcGFyaXNvbl0oaHR0cDovL3d3dy5jeWdudXMtc29mdHdhcmUuY29t
L3BhcGVycy9jb21wYXJpbmdmbG9hdHMvY29tcGFyaW5nZmxvYXRzLmh0bSkuCisKKyMjIyBGbG9h
dGluZy1Qb2ludCBNYWNyb3MgIyMjCisKK3wgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0
YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8IGBBU1NFUlRfRkxPQVRf
RVEoYF9leHBlY3RlZCwgYWN0dWFsX2ApO2AgIHwgYEVYUEVDVF9GTE9BVF9FUShgX2V4cGVjdGVk
LCBhY3R1YWxfYCk7YCB8IHRoZSB0d28gYGZsb2F0YCB2YWx1ZXMgYXJlIGFsbW9zdCBlcXVhbCB8
Cit8IGBBU1NFUlRfRE9VQkxFX0VRKGBfZXhwZWN0ZWQsIGFjdHVhbF9gKTtgIHwgYEVYUEVDVF9E
T1VCTEVfRVEoYF9leHBlY3RlZCwgYWN0dWFsX2ApO2AgfCB0aGUgdHdvIGBkb3VibGVgIHZhbHVl
cyBhcmUgYWxtb3N0IGVxdWFsIHwKKworQnkgImFsbW9zdCBlcXVhbCIsIHdlIG1lYW4gdGhlIHR3
byB2YWx1ZXMgYXJlIHdpdGhpbiA0IFVMUCdzIGZyb20gZWFjaAorb3RoZXIuCisKK1RoZSBmb2xs
b3dpbmcgYXNzZXJ0aW9ucyBhbGxvdyB5b3UgdG8gY2hvb3NlIHRoZSBhY2NlcHRhYmxlIGVycm9y
IGJvdW5kOgorCit8ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFzc2VydGlvbioq
IHwgKipWZXJpZmllcyoqIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAorfCBgQVNTRVJUX05FQVIoYF92YWwxLCB2YWwyLCBh
YnNcX2Vycm9yX2ApO2AgfCBgRVhQRUNUX05FQVJgXyh2YWwxLCB2YWwyLCBhYnNcX2Vycm9yX2Ap
O2AgfCB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIF92YWwxXyBhbmQgX3ZhbDJfIGRvZXNuJ3QgZXhj
ZWVkIHRoZSBnaXZlbiBhYnNvbHV0ZSBlcnJvciB8CisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwg
V2luZG93cywgTWFjLgorCisjIyMgRmxvYXRpbmctUG9pbnQgUHJlZGljYXRlLUZvcm1hdCBGdW5j
dGlvbnMgIyMjCisKK1NvbWUgZmxvYXRpbmctcG9pbnQgb3BlcmF0aW9ucyBhcmUgdXNlZnVsLCBi
dXQgbm90IHRoYXQgb2Z0ZW4gdXNlZC4gSW4gb3JkZXIKK3RvIGF2b2lkIGFuIGV4cGxvc2lvbiBv
ZiBuZXcgbWFjcm9zLCB3ZSBwcm92aWRlIHRoZW0gYXMgcHJlZGljYXRlLWZvcm1hdAorZnVuY3Rp
b25zIHRoYXQgY2FuIGJlIHVzZWQgaW4gcHJlZGljYXRlIGFzc2VydGlvbiBtYWNyb3MgKGUuZy4K
K2BFWFBFQ1RfUFJFRF9GT1JNQVQyYCwgZXRjKS4KKworYGBgCitFWFBFQ1RfUFJFRF9GT1JNQVQy
KDo6dGVzdGluZzo6RmxvYXRMRSwgdmFsMSwgdmFsMik7CitFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6
dGVzdGluZzo6RG91YmxlTEUsIHZhbDEsIHZhbDIpOworYGBgCisKK1ZlcmlmaWVzIHRoYXQgX3Zh
bDFfIGlzIGxlc3MgdGhhbiwgb3IgYWxtb3N0IGVxdWFsIHRvLCBfdmFsMl8uIFlvdSBjYW4KK3Jl
cGxhY2UgYEVYUEVDVF9QUkVEX0ZPUk1BVDJgIGluIHRoZSBhYm92ZSB0YWJsZSB3aXRoIGBBU1NF
UlRfUFJFRF9GT1JNQVQyYC4KKworX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMu
CisKKyMjIFdpbmRvd3MgSFJFU1VMVCBhc3NlcnRpb25zICMjCisKK1RoZXNlIGFzc2VydGlvbnMg
dGVzdCBmb3IgYEhSRVNVTFRgIHN1Y2Nlc3Mgb3IgZmFpbHVyZS4KKworfCAqKkZhdGFsIGFzc2Vy
dGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8Cit8Oi0tLS0t
LS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwK
K3wgYEFTU0VSVF9IUkVTVUxUX1NVQ0NFRURFRChgX2V4cHJlc3Npb25fYCk7YCB8IGBFWFBFQ1Rf
SFJFU1VMVF9TVUNDRUVERUQoYF9leHByZXNzaW9uX2ApO2AgfCBfZXhwcmVzc2lvbl8gaXMgYSBz
dWNjZXNzIGBIUkVTVUxUYCB8Cit8IGBBU1NFUlRfSFJFU1VMVF9GQUlMRUQoYF9leHByZXNzaW9u
X2ApO2AgICAgfCBgRVhQRUNUX0hSRVNVTFRfRkFJTEVEKGBfZXhwcmVzc2lvbl9gKTtgICAgIHwg
X2V4cHJlc3Npb25fIGlzIGEgZmFpbHVyZSBgSFJFU1VMVGAgfAorCitUaGUgZ2VuZXJhdGVkIG91
dHB1dCBjb250YWlucyB0aGUgaHVtYW4tcmVhZGFibGUgZXJyb3IgbWVzc2FnZQorYXNzb2NpYXRl
ZCB3aXRoIHRoZSBgSFJFU1VMVGAgY29kZSByZXR1cm5lZCBieSBfZXhwcmVzc2lvbl8uCisKK1lv
dSBtaWdodCB1c2UgdGhlbSBsaWtlIHRoaXM6CisKK2BgYAorQ0NvbVB0ciBzaGVsbDsKK0FTU0VS
VF9IUkVTVUxUX1NVQ0NFRURFRChzaGVsbC5Db0NyZWF0ZUluc3RhbmNlKEwiU2hlbGwuQXBwbGlj
YXRpb24iKSk7CitDQ29tVmFyaWFudCBlbXB0eTsKK0FTU0VSVF9IUkVTVUxUX1NVQ0NFRURFRChz
aGVsbC0+U2hlbGxFeGVjdXRlKENDb21CU1RSKHVybCksIGVtcHR5LCBlbXB0eSwgZW1wdHksIGVt
cHR5KSk7CitgYGAKKworX0F2YWlsYWJpbGl0eV86IFdpbmRvd3MuCisKKyMjIFR5cGUgQXNzZXJ0
aW9ucyAjIworCitZb3UgY2FuIGNhbGwgdGhlIGZ1bmN0aW9uCitgYGAKKzo6dGVzdGluZzo6U3Rh
dGljQXNzZXJ0VHlwZUVxPFQxLCBUMj4oKTsKK2BgYAordG8gYXNzZXJ0IHRoYXQgdHlwZXMgYFQx
YCBhbmQgYFQyYCBhcmUgdGhlIHNhbWUuICBUaGUgZnVuY3Rpb24gZG9lcworbm90aGluZyBpZiB0
aGUgYXNzZXJ0aW9uIGlzIHNhdGlzZmllZC4gIElmIHRoZSB0eXBlcyBhcmUgZGlmZmVyZW50LAor
dGhlIGZ1bmN0aW9uIGNhbGwgd2lsbCBmYWlsIHRvIGNvbXBpbGUsIGFuZCB0aGUgY29tcGlsZXIg
ZXJyb3IgbWVzc2FnZQord2lsbCBsaWtlbHkgKGRlcGVuZGluZyBvbiB0aGUgY29tcGlsZXIpIHNo
b3cgeW91IHRoZSBhY3R1YWwgdmFsdWVzIG9mCitgVDFgIGFuZCBgVDJgLiAgVGhpcyBpcyBtYWlu
bHkgdXNlZnVsIGluc2lkZSB0ZW1wbGF0ZSBjb2RlLgorCitfQ2F2ZWF0Ol8gV2hlbiB1c2VkIGlu
c2lkZSBhIG1lbWJlciBmdW5jdGlvbiBvZiBhIGNsYXNzIHRlbXBsYXRlIG9yIGEKK2Z1bmN0aW9u
IHRlbXBsYXRlLCBgU3RhdGljQXNzZXJ0VHlwZUVxPFQxLCBUMj4oKWAgaXMgZWZmZWN0aXZlIF9v
bmx5IGlmXwordGhlIGZ1bmN0aW9uIGlzIGluc3RhbnRpYXRlZC4gIEZvciBleGFtcGxlLCBnaXZl
bjoKK2BgYAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbyB7CisgcHVibGljOgorICB2
b2lkIEJhcigpIHsgOjp0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE8aW50LCBUPigpOyB9Cit9
OworYGBgCit0aGUgY29kZToKK2BgYAordm9pZCBUZXN0MSgpIHsgRm9vPGJvb2w+IGZvbzsgfQor
YGBgCit3aWxsIF9ub3RfIGdlbmVyYXRlIGEgY29tcGlsZXIgZXJyb3IsIGFzIGBGb288Ym9vbD46
OkJhcigpYCBpcyBuZXZlcgorYWN0dWFsbHkgaW5zdGFudGlhdGVkLiAgSW5zdGVhZCwgeW91IG5l
ZWQ6CitgYGAKK3ZvaWQgVGVzdDIoKSB7IEZvbzxib29sPiBmb287IGZvby5CYXIoKTsgfQorYGBg
Cit0byBjYXVzZSBhIGNvbXBpbGVyIGVycm9yLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdp
bmRvd3MsIE1hYzsgc2luY2UgdmVyc2lvbiAxLjMuMC4KKworIyMgQXNzZXJ0aW9uIFBsYWNlbWVu
dCAjIworCitZb3UgY2FuIHVzZSBhc3NlcnRpb25zIGluIGFueSBDKysgZnVuY3Rpb24uIEluIHBh
cnRpY3VsYXIsIGl0IGRvZXNuJ3QKK2hhdmUgdG8gYmUgYSBtZXRob2Qgb2YgdGhlIHRlc3QgZml4
dHVyZSBjbGFzcy4gVGhlIG9uZSBjb25zdHJhaW50IGlzCit0aGF0IGFzc2VydGlvbnMgdGhhdCBn
ZW5lcmF0ZSBhIGZhdGFsIGZhaWx1cmUgKGBGQUlMKmAgYW5kIGBBU1NFUlRfKmApCitjYW4gb25s
eSBiZSB1c2VkIGluIHZvaWQtcmV0dXJuaW5nIGZ1bmN0aW9ucy4gVGhpcyBpcyBhIGNvbnNlcXVl
bmNlIG9mCitHb29nbGUgVGVzdCBub3QgdXNpbmcgZXhjZXB0aW9ucy4gQnkgcGxhY2luZyBpdCBp
biBhIG5vbi12b2lkIGZ1bmN0aW9uCit5b3UnbGwgZ2V0IGEgY29uZnVzaW5nIGNvbXBpbGUgZXJy
b3IgbGlrZQorYCJlcnJvcjogdm9pZCB2YWx1ZSBub3QgaWdub3JlZCBhcyBpdCBvdWdodCB0byBi
ZSJgLgorCitJZiB5b3UgbmVlZCB0byB1c2UgYXNzZXJ0aW9ucyBpbiBhIGZ1bmN0aW9uIHRoYXQg
cmV0dXJucyBub24tdm9pZCwgb25lIG9wdGlvbgoraXMgdG8gbWFrZSB0aGUgZnVuY3Rpb24gcmV0
dXJuIHRoZSB2YWx1ZSBpbiBhbiBvdXQgcGFyYW1ldGVyIGluc3RlYWQuIEZvcgorZXhhbXBsZSwg
eW91IGNhbiByZXdyaXRlIGBUMiBGb28oVDEgeClgIHRvIGB2b2lkIEZvbyhUMSB4LCBUMiogcmVz
dWx0KWAuIFlvdQorbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBgKnJlc3VsdGAgY29udGFpbnMgc29t
ZSBzZW5zaWJsZSB2YWx1ZSBldmVuIHdoZW4gdGhlCitmdW5jdGlvbiByZXR1cm5zIHByZW1hdHVy
ZWx5LiBBcyB0aGUgZnVuY3Rpb24gbm93IHJldHVybnMgYHZvaWRgLCB5b3UgY2FuIHVzZQorYW55
IGFzc2VydGlvbiBpbnNpZGUgb2YgaXQuCisKK0lmIGNoYW5naW5nIHRoZSBmdW5jdGlvbidzIHR5
cGUgaXMgbm90IGFuIG9wdGlvbiwgeW91IHNob3VsZCBqdXN0IHVzZQorYXNzZXJ0aW9ucyB0aGF0
IGdlbmVyYXRlIG5vbi1mYXRhbCBmYWlsdXJlcywgc3VjaCBhcyBgQUREX0ZBSUxVUkUqYCBhbmQK
K2BFWFBFQ1RfKmAuCisKK19Ob3RlXzogQ29uc3RydWN0b3JzIGFuZCBkZXN0cnVjdG9ycyBhcmUg
bm90IGNvbnNpZGVyZWQgdm9pZC1yZXR1cm5pbmcKK2Z1bmN0aW9ucywgYWNjb3JkaW5nIHRvIHRo
ZSBDKysgbGFuZ3VhZ2Ugc3BlY2lmaWNhdGlvbiwgYW5kIHNvIHlvdSBtYXkgbm90IHVzZQorZmF0
YWwgYXNzZXJ0aW9ucyBpbiB0aGVtLiBZb3UnbGwgZ2V0IGEgY29tcGlsYXRpb24gZXJyb3IgaWYg
eW91IHRyeS4gQSBzaW1wbGUKK3dvcmthcm91bmQgaXMgdG8gdHJhbnNmZXIgdGhlIGVudGlyZSBi
b2R5IG9mIHRoZSBjb25zdHJ1Y3RvciBvciBkZXN0cnVjdG9yIHRvIGEKK3ByaXZhdGUgdm9pZC1y
ZXR1cm5pbmcgbWV0aG9kLiBIb3dldmVyLCB5b3Ugc2hvdWxkIGJlIGF3YXJlIHRoYXQgYSBmYXRh
bAorYXNzZXJ0aW9uIGZhaWx1cmUgaW4gYSBjb25zdHJ1Y3RvciBkb2VzIG5vdCB0ZXJtaW5hdGUg
dGhlIGN1cnJlbnQgdGVzdCwgYXMgeW91cgoraW50dWl0aW9uIG1pZ2h0IHN1Z2dlc3Q7IGl0IG1l
cmVseSByZXR1cm5zIGZyb20gdGhlIGNvbnN0cnVjdG9yIGVhcmx5LCBwb3NzaWJseQorbGVhdmlu
ZyB5b3VyIG9iamVjdCBpbiBhIHBhcnRpYWxseS1jb25zdHJ1Y3RlZCBzdGF0ZS4gTGlrZXdpc2Us
IGEgZmF0YWwKK2Fzc2VydGlvbiBmYWlsdXJlIGluIGEgZGVzdHJ1Y3RvciBtYXkgbGVhdmUgeW91
ciBvYmplY3QgaW4gYQorcGFydGlhbGx5LWRlc3RydWN0ZWQgc3RhdGUuIFVzZSBhc3NlcnRpb25z
IGNhcmVmdWxseSBpbiB0aGVzZSBzaXR1YXRpb25zIQorCisjIERlYXRoIFRlc3RzICMKKworSW4g
bWFueSBhcHBsaWNhdGlvbnMsIHRoZXJlIGFyZSBhc3NlcnRpb25zIHRoYXQgY2FuIGNhdXNlIGFw
cGxpY2F0aW9uIGZhaWx1cmUKK2lmIGEgY29uZGl0aW9uIGlzIG5vdCBtZXQuIFRoZXNlIHNhbml0
eSBjaGVja3MsIHdoaWNoIGVuc3VyZSB0aGF0IHRoZSBwcm9ncmFtCitpcyBpbiBhIGtub3duIGdv
b2Qgc3RhdGUsIGFyZSB0aGVyZSB0byBmYWlsIGF0IHRoZSBlYXJsaWVzdCBwb3NzaWJsZSB0aW1l
IGFmdGVyCitzb21lIHByb2dyYW0gc3RhdGUgaXMgY29ycnVwdGVkLiBJZiB0aGUgYXNzZXJ0aW9u
IGNoZWNrcyB0aGUgd3JvbmcgY29uZGl0aW9uLAordGhlbiB0aGUgcHJvZ3JhbSBtYXkgcHJvY2Vl
ZCBpbiBhbiBlcnJvbmVvdXMgc3RhdGUsIHdoaWNoIGNvdWxkIGxlYWQgdG8gbWVtb3J5Citjb3Jy
dXB0aW9uLCBzZWN1cml0eSBob2xlcywgb3Igd29yc2UuIEhlbmNlIGl0IGlzIHZpdGFsbHkgaW1w
b3J0YW50IHRvIHRlc3QKK3RoYXQgc3VjaCBhc3NlcnRpb24gc3RhdGVtZW50cyB3b3JrIGFzIGV4
cGVjdGVkLgorCitTaW5jZSB0aGVzZSBwcmVjb25kaXRpb24gY2hlY2tzIGNhdXNlIHRoZSBwcm9j
ZXNzZXMgdG8gZGllLCB3ZSBjYWxsIHN1Y2ggdGVzdHMKK19kZWF0aCB0ZXN0c18uIE1vcmUgZ2Vu
ZXJhbGx5LCBhbnkgdGVzdCB0aGF0IGNoZWNrcyB0aGF0IGEgcHJvZ3JhbSB0ZXJtaW5hdGVzCitp
biBhbiBleHBlY3RlZCBmYXNoaW9uIGlzIGFsc28gYSBkZWF0aCB0ZXN0LgorCitJZiB5b3Ugd2Fu
dCB0byB0ZXN0IGBFWFBFQ1RfKigpL0FTU0VSVF8qKClgIGZhaWx1cmVzIGluIHlvdXIgdGVzdCBj
b2RlLCBzZWUgW0NhdGNoaW5nIEZhaWx1cmVzXSgjY2F0Y2hpbmctZmFpbHVyZXMpLgorCisjIyBI
b3cgdG8gV3JpdGUgYSBEZWF0aCBUZXN0ICMjCisKK0dvb2dsZSBUZXN0IGhhcyB0aGUgZm9sbG93
aW5nIG1hY3JvcyB0byBzdXBwb3J0IGRlYXRoIHRlc3RzOgorCit8ICoqRmF0YWwgYXNzZXJ0aW9u
KiogfCAqKk5vbmZhdGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6LS0tLS0tLS0t
LS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAorfCBg
QVNTRVJUX0RFQVRIKGBfc3RhdGVtZW50LCByZWdleF9gKTsgfCBgRVhQRUNUX0RFQVRIKGBfc3Rh
dGVtZW50LCByZWdleF9gKTsgfCBfc3RhdGVtZW50XyBjcmFzaGVzIHdpdGggdGhlIGdpdmVuIGVy
cm9yIHwKK3wgYEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQoYF9zdGF0ZW1lbnQsIHJlZ2V4X2Ap
OyB8IGBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKGBfc3RhdGVtZW50LCByZWdleF9gKTsgfCBp
ZiBkZWF0aCB0ZXN0cyBhcmUgc3VwcG9ydGVkLCB2ZXJpZmllcyB0aGF0IF9zdGF0ZW1lbnRfIGNy
YXNoZXMgd2l0aCB0aGUgZ2l2ZW4gZXJyb3I7IG90aGVyd2lzZSB2ZXJpZmllcyBub3RoaW5nIHwK
K3wgYEFTU0VSVF9FWElUKGBfc3RhdGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4X2ApOyB8IGBFWFBF
Q1RfRVhJVChgX3N0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleF9gKTsgfF9zdGF0ZW1lbnRfIGV4
aXRzIHdpdGggdGhlIGdpdmVuIGVycm9yIGFuZCBpdHMgZXhpdCBjb2RlIG1hdGNoZXMgX3ByZWRp
Y2F0ZV8gfAorCit3aGVyZSBfc3RhdGVtZW50XyBpcyBhIHN0YXRlbWVudCB0aGF0IGlzIGV4cGVj
dGVkIHRvIGNhdXNlIHRoZSBwcm9jZXNzIHRvCitkaWUsIF9wcmVkaWNhdGVfIGlzIGEgZnVuY3Rp
b24gb3IgZnVuY3Rpb24gb2JqZWN0IHRoYXQgZXZhbHVhdGVzIGFuIGludGVnZXIKK2V4aXQgc3Rh
dHVzLCBhbmQgX3JlZ2V4XyBpcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiB0aGF0IHRoZSBzdGRlcnIg
b3V0cHV0IG9mCitfc3RhdGVtZW50XyBpcyBleHBlY3RlZCB0byBtYXRjaC4gTm90ZSB0aGF0IF9z
dGF0ZW1lbnRfIGNhbiBiZSBfYW55IHZhbGlkCitzdGF0ZW1lbnRfIChpbmNsdWRpbmcgX2NvbXBv
dW5kIHN0YXRlbWVudF8pIGFuZCBkb2Vzbid0IGhhdmUgdG8gYmUgYW4KK2V4cHJlc3Npb24uCisK
K0FzIHVzdWFsLCB0aGUgYEFTU0VSVGAgdmFyaWFudHMgYWJvcnQgdGhlIGN1cnJlbnQgdGVzdCBm
dW5jdGlvbiwgd2hpbGUgdGhlCitgRVhQRUNUYCB2YXJpYW50cyBkbyBub3QuCisKKyoqTm90ZToq
KiBXZSB1c2UgdGhlIHdvcmQgImNyYXNoIiBoZXJlIHRvIG1lYW4gdGhhdCB0aGUgcHJvY2Vzcwor
dGVybWluYXRlcyB3aXRoIGEgX25vbi16ZXJvXyBleGl0IHN0YXR1cyBjb2RlLiAgVGhlcmUgYXJl
IHR3bworcG9zc2liaWxpdGllczogZWl0aGVyIHRoZSBwcm9jZXNzIGhhcyBjYWxsZWQgYGV4aXQo
KWAgb3IgYF9leGl0KClgCit3aXRoIGEgbm9uLXplcm8gdmFsdWUsIG9yIGl0IG1heSBiZSBraWxs
ZWQgYnkgYSBzaWduYWwuCisKK1RoaXMgbWVhbnMgdGhhdCBpZiBfc3RhdGVtZW50XyB0ZXJtaW5h
dGVzIHRoZSBwcm9jZXNzIHdpdGggYSAwIGV4aXQKK2NvZGUsIGl0IGlzIF9ub3RfIGNvbnNpZGVy
ZWQgYSBjcmFzaCBieSBgRVhQRUNUX0RFQVRIYC4gIFVzZQorYEVYUEVDVF9FWElUYCBpbnN0ZWFk
IGlmIHRoaXMgaXMgdGhlIGNhc2UsIG9yIGlmIHlvdSB3YW50IHRvIHJlc3RyaWN0Cit0aGUgZXhp
dCBjb2RlIG1vcmUgcHJlY2lzZWx5LgorCitBIHByZWRpY2F0ZSBoZXJlIG11c3QgYWNjZXB0IGFu
IGBpbnRgIGFuZCByZXR1cm4gYSBgYm9vbGAuIFRoZSBkZWF0aCB0ZXN0CitzdWNjZWVkcyBvbmx5
IGlmIHRoZSBwcmVkaWNhdGUgcmV0dXJucyBgdHJ1ZWAuIEdvb2dsZSBUZXN0IGRlZmluZXMgYSBm
ZXcKK3ByZWRpY2F0ZXMgdGhhdCBoYW5kbGUgdGhlIG1vc3QgY29tbW9uIGNhc2VzOgorCitgYGAK
Kzo6dGVzdGluZzo6RXhpdGVkV2l0aENvZGUoZXhpdF9jb2RlKQorYGBgCisKK1RoaXMgZXhwcmVz
c2lvbiBpcyBgdHJ1ZWAgaWYgdGhlIHByb2dyYW0gZXhpdGVkIG5vcm1hbGx5IHdpdGggdGhlIGdp
dmVuIGV4aXQKK2NvZGUuCisKK2BgYAorOjp0ZXN0aW5nOjpLaWxsZWRCeVNpZ25hbChzaWduYWxf
bnVtYmVyKSAgLy8gTm90IGF2YWlsYWJsZSBvbiBXaW5kb3dzLgorYGBgCisKK1RoaXMgZXhwcmVz
c2lvbiBpcyBgdHJ1ZWAgaWYgdGhlIHByb2dyYW0gd2FzIGtpbGxlZCBieSB0aGUgZ2l2ZW4gc2ln
bmFsLgorCitUaGUgYCpfREVBVEhgIG1hY3JvcyBhcmUgY29udmVuaWVudCB3cmFwcGVycyBmb3Ig
YCpfRVhJVGAgdGhhdCB1c2UgYSBwcmVkaWNhdGUKK3RoYXQgdmVyaWZpZXMgdGhlIHByb2Nlc3Mn
IGV4aXQgY29kZSBpcyBub24temVyby4KKworTm90ZSB0aGF0IGEgZGVhdGggdGVzdCBvbmx5IGNh
cmVzIGFib3V0IHRocmVlIHRoaW5nczoKKworICAxLiBkb2VzIF9zdGF0ZW1lbnRfIGFib3J0IG9y
IGV4aXQgdGhlIHByb2Nlc3M/CisgIDEuIChpbiB0aGUgY2FzZSBvZiBgQVNTRVJUX0VYSVRgIGFu
ZCBgRVhQRUNUX0VYSVRgKSBkb2VzIHRoZSBleGl0IHN0YXR1cyBzYXRpc2Z5IF9wcmVkaWNhdGVf
PyAgT3IgKGluIHRoZSBjYXNlIG9mIGBBU1NFUlRfREVBVEhgIGFuZCBgRVhQRUNUX0RFQVRIYCkg
aXMgdGhlIGV4aXQgc3RhdHVzIG5vbi16ZXJvPyAgQW5kCisgIDEuIGRvZXMgdGhlIHN0ZGVyciBv
dXRwdXQgbWF0Y2ggX3JlZ2V4Xz8KKworSW4gcGFydGljdWxhciwgaWYgX3N0YXRlbWVudF8gZ2Vu
ZXJhdGVzIGFuIGBBU1NFUlRfKmAgb3IgYEVYUEVDVF8qYCBmYWlsdXJlLCBpdCB3aWxsICoqbm90
KiogY2F1c2UgdGhlIGRlYXRoIHRlc3QgdG8gZmFpbCwgYXMgR29vZ2xlIFRlc3QgYXNzZXJ0aW9u
cyBkb24ndCBhYm9ydCB0aGUgcHJvY2Vzcy4KKworVG8gd3JpdGUgYSBkZWF0aCB0ZXN0LCBzaW1w
bHkgdXNlIG9uZSBvZiB0aGUgYWJvdmUgbWFjcm9zIGluc2lkZSB5b3VyIHRlc3QKK2Z1bmN0aW9u
LiBGb3IgZXhhbXBsZSwKKworYGBgCitURVNUKE15KkRlYXRoVGVzdCosIEZvbykgeworICAvLyBU
aGlzIGRlYXRoIHRlc3QgdXNlcyBhIGNvbXBvdW5kIHN0YXRlbWVudC4KKyAgQVNTRVJUX0RFQVRI
KHsgaW50IG4gPSA1OyBGb28oJm4pOyB9LCAiRXJyb3Igb24gbGluZSAuKiBvZiBGb28oKSIpOwor
fQorVEVTVChNeURlYXRoVGVzdCwgTm9ybWFsRXhpdCkgeworICBFWFBFQ1RfRVhJVChOb3JtYWxF
eGl0KCksIDo6dGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMCksICJTdWNjZXNzIik7Cit9CitURVNU
KE15RGVhdGhUZXN0LCBLaWxsTXlzZWxmKSB7CisgIEVYUEVDVF9FWElUKEtpbGxNeXNlbGYoKSwg
Ojp0ZXN0aW5nOjpLaWxsZWRCeVNpZ25hbChTSUdLSUxMKSwgIlNlbmRpbmcgbXlzZWxmIHVuYmxv
Y2thYmxlIHNpZ25hbCIpOworfQorYGBgCisKK3ZlcmlmaWVzIHRoYXQ6CisKKyAgKiBjYWxsaW5n
IGBGb28oNSlgIGNhdXNlcyB0aGUgcHJvY2VzcyB0byBkaWUgd2l0aCB0aGUgZ2l2ZW4gZXJyb3Ig
bWVzc2FnZSwKKyAgKiBjYWxsaW5nIGBOb3JtYWxFeGl0KClgIGNhdXNlcyB0aGUgcHJvY2VzcyB0
byBwcmludCBgIlN1Y2Nlc3MiYCB0byBzdGRlcnIgYW5kIGV4aXQgd2l0aCBleGl0IGNvZGUgMCwg
YW5kCisgICogY2FsbGluZyBgS2lsbE15c2VsZigpYCBraWxscyB0aGUgcHJvY2VzcyB3aXRoIHNp
Z25hbCBgU0lHS0lMTGAuCisKK1RoZSB0ZXN0IGZ1bmN0aW9uIGJvZHkgbWF5IGNvbnRhaW4gb3Ro
ZXIgYXNzZXJ0aW9ucyBhbmQgc3RhdGVtZW50cyBhcyB3ZWxsLCBpZgorbmVjZXNzYXJ5LgorCitf
SW1wb3J0YW50Ol8gV2Ugc3Ryb25nbHkgcmVjb21tZW5kIHlvdSB0byBmb2xsb3cgdGhlIGNvbnZl
bnRpb24gb2YgbmFtaW5nIHlvdXIKK3Rlc3QgY2FzZSAobm90IHRlc3QpIGAqRGVhdGhUZXN0YCB3
aGVuIGl0IGNvbnRhaW5zIGEgZGVhdGggdGVzdCwgYXMKK2RlbW9uc3RyYXRlZCBpbiB0aGUgYWJv
dmUgZXhhbXBsZS4gVGhlIGBEZWF0aCBUZXN0cyBBbmQgVGhyZWFkc2Agc2VjdGlvbiBiZWxvdwor
ZXhwbGFpbnMgd2h5LgorCitJZiBhIHRlc3QgZml4dHVyZSBjbGFzcyBpcyBzaGFyZWQgYnkgbm9y
bWFsIHRlc3RzIGFuZCBkZWF0aCB0ZXN0cywgeW91CitjYW4gdXNlIHR5cGVkZWYgdG8gaW50cm9k
dWNlIGFuIGFsaWFzIGZvciB0aGUgZml4dHVyZSBjbGFzcyBhbmQgYXZvaWQKK2R1cGxpY2F0aW5n
IGl0cyBjb2RlOgorYGBgCitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7
IC4uLiB9OworCit0eXBlZGVmIEZvb1Rlc3QgRm9vRGVhdGhUZXN0OworCitURVNUX0YoRm9vVGVz
dCwgRG9lc1RoaXMpIHsKKyAgLy8gbm9ybWFsIHRlc3QKK30KKworVEVTVF9GKEZvb0RlYXRoVGVz
dCwgRG9lc1RoYXQpIHsKKyAgLy8gZGVhdGggdGVzdAorfQorYGBgCisKK19BdmFpbGFiaWxpdHk6
XyBMaW51eCwgV2luZG93cyAocmVxdWlyZXMgTVNWQyA4LjAgb3IgYWJvdmUpLCBDeWd3aW4sIGFu
ZCBNYWMgKHRoZSBsYXR0ZXIgdGhyZWUgYXJlIHN1cHBvcnRlZCBzaW5jZSB2MS4zLjApLiAgYChB
U1NFUlR8RVhQRUNUKV9ERUFUSF9JRl9TVVBQT1JURURgIGFyZSBuZXcgaW4gdjEuNC4wLgorCisj
IyBSZWd1bGFyIEV4cHJlc3Npb24gU3ludGF4ICMjCisKK09uIFBPU0lYIHN5c3RlbXMgKGUuZy4g
TGludXgsIEN5Z3dpbiwgYW5kIE1hYyksIEdvb2dsZSBUZXN0IHVzZXMgdGhlCitbUE9TSVggZXh0
ZW5kZWQgcmVndWxhciBleHByZXNzaW9uXShodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb25saW5l
cHVicy8wMDk2OTUzOTkvYmFzZWRlZnMveGJkX2NoYXAwOS5odG1sI3RhZ18wOV8wNCkKK3N5bnRh
eCBpbiBkZWF0aCB0ZXN0cy4gVG8gbGVhcm4gYWJvdXQgdGhpcyBzeW50YXgsIHlvdSBtYXkgd2Fu
dCB0byByZWFkIHRoaXMgW1dpa2lwZWRpYSBlbnRyeV0oaHR0cDovL2VuLndpa2lwZWRpYS5vcmcv
d2lraS9SZWd1bGFyX2V4cHJlc3Npb24jUE9TSVhfRXh0ZW5kZWRfUmVndWxhcl9FeHByZXNzaW9u
cykuCisKK09uIFdpbmRvd3MsIEdvb2dsZSBUZXN0IHVzZXMgaXRzIG93biBzaW1wbGUgcmVndWxh
ciBleHByZXNzaW9uCitpbXBsZW1lbnRhdGlvbi4gSXQgbGFja3MgbWFueSBmZWF0dXJlcyB5b3Ug
Y2FuIGZpbmQgaW4gUE9TSVggZXh0ZW5kZWQKK3JlZ3VsYXIgZXhwcmVzc2lvbnMuICBGb3IgZXhh
bXBsZSwgd2UgZG9uJ3Qgc3VwcG9ydCB1bmlvbiAoYCJ4fHkiYCksCitncm91cGluZyAoYCIoeHkp
ImApLCBicmFja2V0cyAoYCJbeHldImApLCBhbmQgcmVwZXRpdGlvbiBjb3VudAorKGAieHs1LDd9
ImApLCBhbW9uZyBvdGhlcnMuIEJlbG93IGlzIHdoYXQgd2UgZG8gc3VwcG9ydCAoYEFgIGRlbm90
ZXMgYQorbGl0ZXJhbCBjaGFyYWN0ZXIsIHBlcmlvZCAoYC5gKSwgb3IgYSBzaW5nbGUgYFxcYCBl
c2NhcGUgc2VxdWVuY2U7IGB4YAorYW5kIGB5YCBkZW5vdGUgcmVndWxhciBleHByZXNzaW9ucy4p
OgorCit8IGBjYCB8IG1hdGNoZXMgYW55IGxpdGVyYWwgY2hhcmFjdGVyIGBjYCB8Cit8Oi0tLS18
Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Cit8IGBcXGRgIHwgbWF0Y2hlcyBh
bnkgZGVjaW1hbCBkaWdpdCAgICAgICAgIHwKK3wgYFxcRGAgfCBtYXRjaGVzIGFueSBjaGFyYWN0
ZXIgdGhhdCdzIG5vdCBhIGRlY2ltYWwgZGlnaXQgfAorfCBgXFxmYCB8IG1hdGNoZXMgYFxmYCAg
ICAgICAgICAgICAgICAgICAgICB8Cit8IGBcXG5gIHwgbWF0Y2hlcyBgXG5gICAgICAgICAgICAg
ICAgICAgICAgIHwKK3wgYFxccmAgfCBtYXRjaGVzIGBccmAgICAgICAgICAgICAgICAgICAgICAg
fAorfCBgXFxzYCB8IG1hdGNoZXMgYW55IEFTQ0lJIHdoaXRlc3BhY2UsIGluY2x1ZGluZyBgXG5g
IHwKK3wgYFxcU2AgfCBtYXRjaGVzIGFueSBjaGFyYWN0ZXIgdGhhdCdzIG5vdCBhIHdoaXRlc3Bh
Y2UgfAorfCBgXFx0YCB8IG1hdGNoZXMgYFx0YCAgICAgICAgICAgICAgICAgICAgICB8Cit8IGBc
XHZgIHwgbWF0Y2hlcyBgXHZgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYFxcd2AgfCBtYXRj
aGVzIGFueSBsZXR0ZXIsIGBfYCwgb3IgZGVjaW1hbCBkaWdpdCB8Cit8IGBcXFdgIHwgbWF0Y2hl
cyBhbnkgY2hhcmFjdGVyIHRoYXQgYFxcd2AgZG9lc24ndCBtYXRjaCB8Cit8IGBcXGNgIHwgbWF0
Y2hlcyBhbnkgbGl0ZXJhbCBjaGFyYWN0ZXIgYGNgLCB3aGljaCBtdXN0IGJlIGEgcHVuY3R1YXRp
b24gfAorfCBgLmAgfCBtYXRjaGVzIGFueSBzaW5nbGUgY2hhcmFjdGVyIGV4Y2VwdCBgXG5gIHwK
K3wgYEE/YCB8IG1hdGNoZXMgMCBvciAxIG9jY3VycmVuY2VzIG9mIGBBYCB8Cit8IGBBKmAgfCBt
YXRjaGVzIDAgb3IgbWFueSBvY2N1cnJlbmNlcyBvZiBgQWAgfAorfCBgQStgIHwgbWF0Y2hlcyAx
IG9yIG1hbnkgb2NjdXJyZW5jZXMgb2YgYEFgIHwKK3wgYF5gIHwgbWF0Y2hlcyB0aGUgYmVnaW5u
aW5nIG9mIGEgc3RyaW5nIChub3QgdGhhdCBvZiBlYWNoIGxpbmUpIHwKK3wgYCRgIHwgbWF0Y2hl
cyB0aGUgZW5kIG9mIGEgc3RyaW5nIChub3QgdGhhdCBvZiBlYWNoIGxpbmUpIHwKK3wgYHh5YCB8
IG1hdGNoZXMgYHhgIGZvbGxvd2VkIGJ5IGB5YCAgICAgICB8CisKK1RvIGhlbHAgeW91IGRldGVy
bWluZSB3aGljaCBjYXBhYmlsaXR5IGlzIGF2YWlsYWJsZSBvbiB5b3VyIHN5c3RlbSwKK0dvb2ds
ZSBUZXN0IGRlZmluZXMgbWFjcm8gYEdURVNUX1VTRVNfUE9TSVhfUkU9MWAgd2hlbiBpdCB1c2Vz
IFBPU0lYCitleHRlbmRlZCByZWd1bGFyIGV4cHJlc3Npb25zLCBvciBgR1RFU1RfVVNFU19TSU1Q
TEVfUkU9MWAgd2hlbiBpdCB1c2VzCit0aGUgc2ltcGxlIHZlcnNpb24uICBJZiB5b3Ugd2FudCB5
b3VyIGRlYXRoIHRlc3RzIHRvIHdvcmsgaW4gYm90aAorY2FzZXMsIHlvdSBjYW4gZWl0aGVyIGAj
aWZgIG9uIHRoZXNlIG1hY3JvcyBvciB1c2UgdGhlIG1vcmUgbGltaXRlZAorc3ludGF4IG9ubHku
CisKKyMjIEhvdyBJdCBXb3JrcyAjIworCitVbmRlciB0aGUgaG9vZCwgYEFTU0VSVF9FWElUKClg
IHNwYXducyBhIG5ldyBwcm9jZXNzIGFuZCBleGVjdXRlcyB0aGUKK2RlYXRoIHRlc3Qgc3RhdGVt
ZW50IGluIHRoYXQgcHJvY2Vzcy4gVGhlIGRldGFpbHMgb2Ygb2YgaG93IHByZWNpc2VseQordGhh
dCBoYXBwZW5zIGRlcGVuZCBvbiB0aGUgcGxhdGZvcm0gYW5kIHRoZSB2YXJpYWJsZQorYDo6dGVz
dGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKWAgKHdoaWNoIGlzIGluaXRpYWxpemVk
IGZyb20gdGhlCitjb21tYW5kLWxpbmUgZmxhZyBgLS1ndGVzdF9kZWF0aF90ZXN0X3N0eWxlYCku
CisKKyAgKiBPbiBQT1NJWCBzeXN0ZW1zLCBgZm9yaygpYCAob3IgYGNsb25lKClgIG9uIExpbnV4
KSBpcyB1c2VkIHRvIHNwYXduIHRoZSBjaGlsZCwgYWZ0ZXIgd2hpY2g6CisgICAgKiBJZiB0aGUg
dmFyaWFibGUncyB2YWx1ZSBpcyBgImZhc3QiYCwgdGhlIGRlYXRoIHRlc3Qgc3RhdGVtZW50IGlz
IGltbWVkaWF0ZWx5IGV4ZWN1dGVkLgorICAgICogSWYgdGhlIHZhcmlhYmxlJ3MgdmFsdWUgaXMg
YCJ0aHJlYWRzYWZlImAsIHRoZSBjaGlsZCBwcm9jZXNzIHJlLWV4ZWN1dGVzIHRoZSB1bml0IHRl
c3QgYmluYXJ5IGp1c3QgYXMgaXQgd2FzIG9yaWdpbmFsbHkgaW52b2tlZCwgYnV0IHdpdGggc29t
ZSBleHRyYSBmbGFncyB0byBjYXVzZSBqdXN0IHRoZSBzaW5nbGUgZGVhdGggdGVzdCB1bmRlciBj
b25zaWRlcmF0aW9uIHRvIGJlIHJ1bi4KKyAgKiBPbiBXaW5kb3dzLCB0aGUgY2hpbGQgaXMgc3Bh
d25lZCB1c2luZyB0aGUgYENyZWF0ZVByb2Nlc3MoKWAgQVBJLCBhbmQgcmUtZXhlY3V0ZXMgdGhl
IGJpbmFyeSB0byBjYXVzZSBqdXN0IHRoZSBzaW5nbGUgZGVhdGggdGVzdCB1bmRlciBjb25zaWRl
cmF0aW9uIHRvIGJlIHJ1biAtIG11Y2ggbGlrZSB0aGUgYHRocmVhZHNhZmVgIG1vZGUgb24gUE9T
SVguCisKK090aGVyIHZhbHVlcyBmb3IgdGhlIHZhcmlhYmxlIGFyZSBpbGxlZ2FsIGFuZCB3aWxs
IGNhdXNlIHRoZSBkZWF0aCB0ZXN0IHRvCitmYWlsLiBDdXJyZW50bHksIHRoZSBmbGFnJ3MgZGVm
YXVsdCB2YWx1ZSBpcyBgImZhc3QiYC4gSG93ZXZlciwgd2UgcmVzZXJ2ZSB0aGUKK3JpZ2h0IHRv
IGNoYW5nZSBpdCBpbiB0aGUgZnV0dXJlLiBUaGVyZWZvcmUsIHlvdXIgdGVzdHMgc2hvdWxkIG5v
dCBkZXBlbmQgb24KK3RoaXMuCisKK0luIGVpdGhlciBjYXNlLCB0aGUgcGFyZW50IHByb2Nlc3Mg
d2FpdHMgZm9yIHRoZSBjaGlsZCBwcm9jZXNzIHRvIGNvbXBsZXRlLCBhbmQgY2hlY2tzIHRoYXQK
KworICAxLiB0aGUgY2hpbGQncyBleGl0IHN0YXR1cyBzYXRpc2ZpZXMgdGhlIHByZWRpY2F0ZSwg
YW5kCisgIDEuIHRoZSBjaGlsZCdzIHN0ZGVyciBtYXRjaGVzIHRoZSByZWd1bGFyIGV4cHJlc3Np
b24uCisKK0lmIHRoZSBkZWF0aCB0ZXN0IHN0YXRlbWVudCBydW5zIHRvIGNvbXBsZXRpb24gd2l0
aG91dCBkeWluZywgdGhlIGNoaWxkCitwcm9jZXNzIHdpbGwgbm9uZXRoZWxlc3MgdGVybWluYXRl
LCBhbmQgdGhlIGFzc2VydGlvbiBmYWlscy4KKworIyMgRGVhdGggVGVzdHMgQW5kIFRocmVhZHMg
IyMKKworVGhlIHJlYXNvbiBmb3IgdGhlIHR3byBkZWF0aCB0ZXN0IHN0eWxlcyBoYXMgdG8gZG8g
d2l0aCB0aHJlYWQgc2FmZXR5LiBEdWUgdG8KK3dlbGwta25vd24gcHJvYmxlbXMgd2l0aCBmb3Jr
aW5nIGluIHRoZSBwcmVzZW5jZSBvZiB0aHJlYWRzLCBkZWF0aCB0ZXN0cyBzaG91bGQKK2JlIHJ1
biBpbiBhIHNpbmdsZS10aHJlYWRlZCBjb250ZXh0LiBTb21ldGltZXMsIGhvd2V2ZXIsIGl0IGlz
bid0IGZlYXNpYmxlIHRvCithcnJhbmdlIHRoYXQga2luZCBvZiBlbnZpcm9ubWVudC4gRm9yIGV4
YW1wbGUsIHN0YXRpY2FsbHktaW5pdGlhbGl6ZWQgbW9kdWxlcworbWF5IHN0YXJ0IHRocmVhZHMg
YmVmb3JlIG1haW4gaXMgZXZlciByZWFjaGVkLiBPbmNlIHRocmVhZHMgaGF2ZSBiZWVuIGNyZWF0
ZWQsCitpdCBtYXkgYmUgZGlmZmljdWx0IG9yIGltcG9zc2libGUgdG8gY2xlYW4gdGhlbSB1cC4K
KworR29vZ2xlIFRlc3QgaGFzIHRocmVlIGZlYXR1cmVzIGludGVuZGVkIHRvIHJhaXNlIGF3YXJl
bmVzcyBvZiB0aHJlYWRpbmcgaXNzdWVzLgorCisgIDEuIEEgd2FybmluZyBpcyBlbWl0dGVkIGlm
IG11bHRpcGxlIHRocmVhZHMgYXJlIHJ1bm5pbmcgd2hlbiBhIGRlYXRoIHRlc3QgaXMgZW5jb3Vu
dGVyZWQuCisgIDEuIFRlc3QgY2FzZXMgd2l0aCBhIG5hbWUgZW5kaW5nIGluICJEZWF0aFRlc3Qi
IGFyZSBydW4gYmVmb3JlIGFsbCBvdGhlciB0ZXN0cy4KKyAgMS4gSXQgdXNlcyBgY2xvbmUoKWAg
aW5zdGVhZCBvZiBgZm9yaygpYCB0byBzcGF3biB0aGUgY2hpbGQgcHJvY2VzcyBvbiBMaW51eCAo
YGNsb25lKClgIGlzIG5vdCBhdmFpbGFibGUgb24gQ3lnd2luIGFuZCBNYWMpLCBhcyBgZm9yaygp
YCBpcyBtb3JlIGxpa2VseSB0byBjYXVzZSB0aGUgY2hpbGQgdG8gaGFuZyB3aGVuIHRoZSBwYXJl
bnQgcHJvY2VzcyBoYXMgbXVsdGlwbGUgdGhyZWFkcy4KKworSXQncyBwZXJmZWN0bHkgZmluZSB0
byBjcmVhdGUgdGhyZWFkcyBpbnNpZGUgYSBkZWF0aCB0ZXN0IHN0YXRlbWVudDsgdGhleSBhcmUK
K2V4ZWN1dGVkIGluIGEgc2VwYXJhdGUgcHJvY2VzcyBhbmQgY2Fubm90IGFmZmVjdCB0aGUgcGFy
ZW50LgorCisjIyBEZWF0aCBUZXN0IFN0eWxlcyAjIworCitUaGUgInRocmVhZHNhZmUiIGRlYXRo
IHRlc3Qgc3R5bGUgd2FzIGludHJvZHVjZWQgaW4gb3JkZXIgdG8gaGVscCBtaXRpZ2F0ZSB0aGUK
K3Jpc2tzIG9mIHRlc3RpbmcgaW4gYSBwb3NzaWJseSBtdWx0aXRocmVhZGVkIGVudmlyb25tZW50
LiBJdCB0cmFkZXMgaW5jcmVhc2VkCit0ZXN0IGV4ZWN1dGlvbiB0aW1lIChwb3RlbnRpYWxseSBk
cmFtYXRpY2FsbHkgc28pIGZvciBpbXByb3ZlZCB0aHJlYWQgc2FmZXR5LgorV2Ugc3VnZ2VzdCB1
c2luZyB0aGUgZmFzdGVyLCBkZWZhdWx0ICJmYXN0IiBzdHlsZSB1bmxlc3MgeW91ciB0ZXN0IGhh
cyBzcGVjaWZpYworcHJvYmxlbXMgd2l0aCBpdC4KKworWW91IGNhbiBjaG9vc2UgYSBwYXJ0aWN1
bGFyIHN0eWxlIG9mIGRlYXRoIHRlc3RzIGJ5IHNldHRpbmcgdGhlIGZsYWcKK3Byb2dyYW1tYXRp
Y2FsbHk6CisKK2BgYAorOjp0ZXN0aW5nOjpGTEFHU19ndGVzdF9kZWF0aF90ZXN0X3N0eWxlID0g
InRocmVhZHNhZmUiOworYGBgCisKK1lvdSBjYW4gZG8gdGhpcyBpbiBgbWFpbigpYCB0byBzZXQg
dGhlIHN0eWxlIGZvciBhbGwgZGVhdGggdGVzdHMgaW4gdGhlCitiaW5hcnksIG9yIGluIGluZGl2
aWR1YWwgdGVzdHMuIFJlY2FsbCB0aGF0IGZsYWdzIGFyZSBzYXZlZCBiZWZvcmUgcnVubmluZyBl
YWNoCit0ZXN0IGFuZCByZXN0b3JlZCBhZnRlcndhcmRzLCBzbyB5b3UgbmVlZCBub3QgZG8gdGhh
dCB5b3Vyc2VsZi4gRm9yIGV4YW1wbGU6CisKK2BgYAorVEVTVChNeURlYXRoVGVzdCwgVGVzdE9u
ZSkgeworICA6OnRlc3Rpbmc6OkZMQUdTX2d0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGUgPSAidGhyZWFk
c2FmZSI7CisgIC8vIFRoaXMgdGVzdCBpcyBydW4gaW4gdGhlICJ0aHJlYWRzYWZlIiBzdHlsZToK
KyAgQVNTRVJUX0RFQVRIKFRoaXNTaG91bGREaWUoKSwgIiIpOworfQorCitURVNUKE15RGVhdGhU
ZXN0LCBUZXN0VHdvKSB7CisgIC8vIFRoaXMgdGVzdCBpcyBydW4gaW4gdGhlICJmYXN0IiBzdHls
ZToKKyAgQVNTRVJUX0RFQVRIKFRoaXNTaG91bGREaWUoKSwgIiIpOworfQorCitpbnQgbWFpbihp
bnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKKyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJn
YywgYXJndik7CisgIDo6dGVzdGluZzo6RkxBR1NfZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZSA9ICJm
YXN0IjsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KK2BgYAorCisjIyBDYXZlYXRzICMj
CisKK1RoZSBfc3RhdGVtZW50XyBhcmd1bWVudCBvZiBgQVNTRVJUX0VYSVQoKWAgY2FuIGJlIGFu
eSB2YWxpZCBDKysgc3RhdGVtZW50CitleGNlcHQgdGhhdCBpdCBjYW4gbm90IHJldHVybiBmcm9t
IHRoZSBjdXJyZW50IGZ1bmN0aW9uLiBUaGlzIG1lYW5zCitfc3RhdGVtZW50XyBzaG91bGQgbm90
IGNvbnRhaW4gYHJldHVybmAgb3IgYSBtYWNybyB0aGF0IG1pZ2h0IHJldHVybiAoZS5nLgorYEFT
U0VSVF9UUlVFKClgICkuIElmIF9zdGF0ZW1lbnRfIHJldHVybnMgYmVmb3JlIGl0IGNyYXNoZXMs
IEdvb2dsZSBUZXN0IHdpbGwKK3ByaW50IGFuIGVycm9yIG1lc3NhZ2UsIGFuZCB0aGUgdGVzdCB3
aWxsIGZhaWwuCisKK1NpbmNlIF9zdGF0ZW1lbnRfIHJ1bnMgaW4gdGhlIGNoaWxkIHByb2Nlc3Ms
IGFueSBpbi1tZW1vcnkgc2lkZSBlZmZlY3QgKGUuZy4KK21vZGlmeWluZyBhIHZhcmlhYmxlLCBy
ZWxlYXNpbmcgbWVtb3J5LCBldGMpIGl0IGNhdXNlcyB3aWxsIF9ub3RfIGJlIG9ic2VydmFibGUK
K2luIHRoZSBwYXJlbnQgcHJvY2Vzcy4gSW4gcGFydGljdWxhciwgaWYgeW91IHJlbGVhc2UgbWVt
b3J5IGluIGEgZGVhdGggdGVzdCwKK3lvdXIgcHJvZ3JhbSB3aWxsIGZhaWwgdGhlIGhlYXAgY2hl
Y2sgYXMgdGhlIHBhcmVudCBwcm9jZXNzIHdpbGwgbmV2ZXIgc2VlIHRoZQorbWVtb3J5IHJlY2xh
aW1lZC4gVG8gc29sdmUgdGhpcyBwcm9ibGVtLCB5b3UgY2FuCisKKyAgMS4gdHJ5IG5vdCB0byBm
cmVlIG1lbW9yeSBpbiBhIGRlYXRoIHRlc3Q7CisgIDEuIGZyZWUgdGhlIG1lbW9yeSBhZ2FpbiBp
biB0aGUgcGFyZW50IHByb2Nlc3M7IG9yCisgIDEuIGRvIG5vdCB1c2UgdGhlIGhlYXAgY2hlY2tl
ciBpbiB5b3VyIHByb2dyYW0uCisKK0R1ZSB0byBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwsIHlv
dSBjYW5ub3QgcGxhY2UgbXVsdGlwbGUgZGVhdGggdGVzdAorYXNzZXJ0aW9ucyBvbiB0aGUgc2Ft
ZSBsaW5lOyBvdGhlcndpc2UsIGNvbXBpbGF0aW9uIHdpbGwgZmFpbCB3aXRoIGFuIHVub2J2aW91
cworZXJyb3IgbWVzc2FnZS4KKworRGVzcGl0ZSB0aGUgaW1wcm92ZWQgdGhyZWFkIHNhZmV0eSBh
ZmZvcmRlZCBieSB0aGUgInRocmVhZHNhZmUiIHN0eWxlIG9mIGRlYXRoCit0ZXN0LCB0aHJlYWQg
cHJvYmxlbXMgc3VjaCBhcyBkZWFkbG9jayBhcmUgc3RpbGwgcG9zc2libGUgaW4gdGhlIHByZXNl
bmNlIG9mCitoYW5kbGVycyByZWdpc3RlcmVkIHdpdGggYHB0aHJlYWRfYXRmb3JrKDMpYC4KKwor
IyBVc2luZyBBc3NlcnRpb25zIGluIFN1Yi1yb3V0aW5lcyAjCisKKyMjIEFkZGluZyBUcmFjZXMg
dG8gQXNzZXJ0aW9ucyAjIworCitJZiBhIHRlc3Qgc3ViLXJvdXRpbmUgaXMgY2FsbGVkIGZyb20g
c2V2ZXJhbCBwbGFjZXMsIHdoZW4gYW4gYXNzZXJ0aW9uCitpbnNpZGUgaXQgZmFpbHMsIGl0IGNh
biBiZSBoYXJkIHRvIHRlbGwgd2hpY2ggaW52b2NhdGlvbiBvZiB0aGUKK3N1Yi1yb3V0aW5lIHRo
ZSBmYWlsdXJlIGlzIGZyb20uICBZb3UgY2FuIGFsbGV2aWF0ZSB0aGlzIHByb2JsZW0gdXNpbmcK
K2V4dHJhIGxvZ2dpbmcgb3IgY3VzdG9tIGZhaWx1cmUgbWVzc2FnZXMsIGJ1dCB0aGF0IHVzdWFs
bHkgY2x1dHRlcnMgdXAKK3lvdXIgdGVzdHMuIEEgYmV0dGVyIHNvbHV0aW9uIGlzIHRvIHVzZSB0
aGUgYFNDT1BFRF9UUkFDRWAgbWFjcm86CisKK3wgYFNDT1BFRF9UUkFDRShgX21lc3NhZ2VfYCk7
YCB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorCit3aGVyZSBfbWVzc2FnZV8g
Y2FuIGJlIGFueXRoaW5nIHN0cmVhbWFibGUgdG8gYHN0ZDo6b3N0cmVhbWAuIFRoaXMKK21hY3Jv
IHdpbGwgY2F1c2UgdGhlIGN1cnJlbnQgZmlsZSBuYW1lLCBsaW5lIG51bWJlciwgYW5kIHRoZSBn
aXZlbgorbWVzc2FnZSB0byBiZSBhZGRlZCBpbiBldmVyeSBmYWlsdXJlIG1lc3NhZ2UuIFRoZSBl
ZmZlY3Qgd2lsbCBiZQordW5kb25lIHdoZW4gdGhlIGNvbnRyb2wgbGVhdmVzIHRoZSBjdXJyZW50
IGxleGljYWwgc2NvcGUuCisKK0ZvciBleGFtcGxlLAorCitgYGAKKzEwOiB2b2lkIFN1YjEoaW50
IG4pIHsKKzExOiAgIEVYUEVDVF9FUSgxLCBCYXIobikpOworMTI6ICAgRVhQRUNUX0VRKDIsIEJh
cihuICsgMSkpOworMTM6IH0KKzE0OgorMTU6IFRFU1QoRm9vVGVzdCwgQmFyKSB7CisxNjogICB7
CisxNzogICAgIFNDT1BFRF9UUkFDRSgiQSIpOyAgLy8gVGhpcyB0cmFjZSBwb2ludCB3aWxsIGJl
IGluY2x1ZGVkIGluCisxODogICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXZlcnkgZmFpbHVy
ZSBpbiB0aGlzIHNjb3BlLgorMTk6ICAgICBTdWIxKDEpOworMjA6ICAgfQorMjE6ICAgLy8gTm93
IGl0IHdvbid0LgorMjI6ICAgU3ViMSg5KTsKKzIzOiB9CitgYGAKKworY291bGQgcmVzdWx0IGlu
IG1lc3NhZ2VzIGxpa2UgdGhlc2U6CisKK2BgYAorcGF0aC90by9mb29fdGVzdC5jYzoxMTogRmFp
bHVyZQorVmFsdWUgb2Y6IEJhcihuKQorRXhwZWN0ZWQ6IDEKKyAgQWN0dWFsOiAyCisgICBUcmFj
ZToKK3BhdGgvdG8vZm9vX3Rlc3QuY2M6MTc6IEEKKworcGF0aC90by9mb29fdGVzdC5jYzoxMjog
RmFpbHVyZQorVmFsdWUgb2Y6IEJhcihuICsgMSkKK0V4cGVjdGVkOiAyCisgIEFjdHVhbDogMwor
YGBgCisKK1dpdGhvdXQgdGhlIHRyYWNlLCBpdCB3b3VsZCd2ZSBiZWVuIGRpZmZpY3VsdCB0byBr
bm93IHdoaWNoIGludm9jYXRpb24KK29mIGBTdWIxKClgIHRoZSB0d28gZmFpbHVyZXMgY29tZSBm
cm9tIHJlc3BlY3RpdmVseS4gKFlvdSBjb3VsZCBhZGQgYW4KK2V4dHJhIG1lc3NhZ2UgdG8gZWFj
aCBhc3NlcnRpb24gaW4gYFN1YjEoKWAgdG8gaW5kaWNhdGUgdGhlIHZhbHVlIG9mCitgbmAsIGJ1
dCB0aGF0J3MgdGVkaW91cy4pCisKK1NvbWUgdGlwcyBvbiB1c2luZyBgU0NPUEVEX1RSQUNFYDoK
KworICAxLiBXaXRoIGEgc3VpdGFibGUgbWVzc2FnZSwgaXQncyBvZnRlbiBlbm91Z2ggdG8gdXNl
IGBTQ09QRURfVFJBQ0VgIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBzdWItcm91dGluZSwgaW5zdGVh
ZCBvZiBhdCBlYWNoIGNhbGwgc2l0ZS4KKyAgMS4gV2hlbiBjYWxsaW5nIHN1Yi1yb3V0aW5lcyBp
bnNpZGUgYSBsb29wLCBtYWtlIHRoZSBsb29wIGl0ZXJhdG9yIHBhcnQgb2YgdGhlIG1lc3NhZ2Ug
aW4gYFNDT1BFRF9UUkFDRWAgc3VjaCB0aGF0IHlvdSBjYW4ga25vdyB3aGljaCBpdGVyYXRpb24g
dGhlIGZhaWx1cmUgaXMgZnJvbS4KKyAgMS4gU29tZXRpbWVzIHRoZSBsaW5lIG51bWJlciBvZiB0
aGUgdHJhY2UgcG9pbnQgaXMgZW5vdWdoIGZvciBpZGVudGlmeWluZyB0aGUgcGFydGljdWxhciBp
bnZvY2F0aW9uIG9mIGEgc3ViLXJvdXRpbmUuIEluIHRoaXMgY2FzZSwgeW91IGRvbid0IGhhdmUg
dG8gY2hvb3NlIGEgdW5pcXVlIG1lc3NhZ2UgZm9yIGBTQ09QRURfVFJBQ0VgLiBZb3UgY2FuIHNp
bXBseSB1c2UgYCIiYC4KKyAgMS4gWW91IGNhbiB1c2UgYFNDT1BFRF9UUkFDRWAgaW4gYW4gaW5u
ZXIgc2NvcGUgd2hlbiB0aGVyZSBpcyBvbmUgaW4gdGhlIG91dGVyIHNjb3BlLiBJbiB0aGlzIGNh
c2UsIGFsbCBhY3RpdmUgdHJhY2UgcG9pbnRzIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIGZhaWx1
cmUgbWVzc2FnZXMsIGluIHJldmVyc2Ugb3JkZXIgdGhleSBhcmUgZW5jb3VudGVyZWQuCisgIDEu
IFRoZSB0cmFjZSBkdW1wIGlzIGNsaWNrYWJsZSBpbiBFbWFjcycgY29tcGlsYXRpb24gYnVmZmVy
IC0gaGl0IHJldHVybiBvbiBhIGxpbmUgbnVtYmVyIGFuZCB5b3UnbGwgYmUgdGFrZW4gdG8gdGhh
dCBsaW5lIGluIHRoZSBzb3VyY2UgZmlsZSEKKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5k
b3dzLCBNYWMuCisKKyMjIFByb3BhZ2F0aW5nIEZhdGFsIEZhaWx1cmVzICMjCisKK0EgY29tbW9u
IHBpdGZhbGwgd2hlbiB1c2luZyBgQVNTRVJUXypgIGFuZCBgRkFJTCpgIGlzIG5vdCB1bmRlcnN0
YW5kaW5nIHRoYXQKK3doZW4gdGhleSBmYWlsIHRoZXkgb25seSBhYm9ydCB0aGUgX2N1cnJlbnQg
ZnVuY3Rpb25fLCBub3QgdGhlIGVudGlyZSB0ZXN0LiBGb3IKK2V4YW1wbGUsIHRoZSBmb2xsb3dp
bmcgdGVzdCB3aWxsIHNlZ2ZhdWx0OgorYGBgCit2b2lkIFN1YnJvdXRpbmUoKSB7CisgIC8vIEdl
bmVyYXRlcyBhIGZhdGFsIGZhaWx1cmUgYW5kIGFib3J0cyB0aGUgY3VycmVudCBmdW5jdGlvbi4K
KyAgQVNTRVJUX0VRKDEsIDIpOworICAvLyBUaGUgZm9sbG93aW5nIHdvbid0IGJlIGV4ZWN1dGVk
LgorICAuLi4KK30KKworVEVTVChGb29UZXN0LCBCYXIpIHsKKyAgU3Vicm91dGluZSgpOworICAv
LyBUaGUgaW50ZW5kZWQgYmVoYXZpb3IgaXMgZm9yIHRoZSBmYXRhbCBmYWlsdXJlCisgIC8vIGlu
IFN1YnJvdXRpbmUoKSB0byBhYm9ydCB0aGUgZW50aXJlIHRlc3QuCisgIC8vIFRoZSBhY3R1YWwg
YmVoYXZpb3I6IHRoZSBmdW5jdGlvbiBnb2VzIG9uIGFmdGVyIFN1YnJvdXRpbmUoKSByZXR1cm5z
LgorICBpbnQqIHAgPSBOVUxMOworICAqcCA9IDM7IC8vIFNlZ2ZhdWx0IQorfQorYGBgCisKK1Np
bmNlIHdlIGRvbid0IHVzZSBleGNlcHRpb25zLCBpdCBpcyB0ZWNobmljYWxseSBpbXBvc3NpYmxl
IHRvCitpbXBsZW1lbnQgdGhlIGludGVuZGVkIGJlaGF2aW9yIGhlcmUuICBUbyBhbGxldmlhdGUg
dGhpcywgR29vZ2xlIFRlc3QKK3Byb3ZpZGVzIHR3byBzb2x1dGlvbnMuICBZb3UgY291bGQgdXNl
IGVpdGhlciB0aGUKK2AoQVNTRVJUfEVYUEVDVClfTk9fRkFUQUxfRkFJTFVSRWAgYXNzZXJ0aW9u
cyBvciB0aGUKK2BIYXNGYXRhbEZhaWx1cmUoKWAgZnVuY3Rpb24uICBUaGV5IGFyZSBkZXNjcmli
ZWQgaW4gdGhlIGZvbGxvd2luZyB0d28KK3N1YnNlY3Rpb25zLgorCisKKworIyMjIEFzc2VydGlu
ZyBvbiBTdWJyb3V0aW5lcyAjIyMKKworQXMgc2hvd24gYWJvdmUsIGlmIHlvdXIgdGVzdCBjYWxs
cyBhIHN1YnJvdXRpbmUgdGhhdCBoYXMgYW4gYEFTU0VSVF8qYAorZmFpbHVyZSBpbiBpdCwgdGhl
IHRlc3Qgd2lsbCBjb250aW51ZSBhZnRlciB0aGUgc3Vicm91dGluZQorcmV0dXJucy4gVGhpcyBt
YXkgbm90IGJlIHdoYXQgeW91IHdhbnQuCisKK09mdGVuIHBlb3BsZSB3YW50IGZhdGFsIGZhaWx1
cmVzIHRvIHByb3BhZ2F0ZSBsaWtlIGV4Y2VwdGlvbnMuICBGb3IKK3RoYXQgR29vZ2xlIFRlc3Qg
b2ZmZXJzIHRoZSBmb2xsb3dpbmcgbWFjcm9zOgorCit8ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAq
Kk5vbmZhdGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6LS0tLS0tLS0tLS0tLS0t
LS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAorfCBgQVNTRVJU
X05PX0ZBVEFMX0ZBSUxVUkUoYF9zdGF0ZW1lbnRfYCk7YCB8IGBFWFBFQ1RfTk9fRkFUQUxfRkFJ
TFVSRShgX3N0YXRlbWVudF9gKTtgIHwgX3N0YXRlbWVudF8gZG9lc24ndCBnZW5lcmF0ZSBhbnkg
bmV3IGZhdGFsIGZhaWx1cmVzIGluIHRoZSBjdXJyZW50IHRocmVhZC4gfAorCitPbmx5IGZhaWx1
cmVzIGluIHRoZSB0aHJlYWQgdGhhdCBleGVjdXRlcyB0aGUgYXNzZXJ0aW9uIGFyZSBjaGVja2Vk
IHRvCitkZXRlcm1pbmUgdGhlIHJlc3VsdCBvZiB0aGlzIHR5cGUgb2YgYXNzZXJ0aW9ucy4gIElm
IF9zdGF0ZW1lbnRfCitjcmVhdGVzIG5ldyB0aHJlYWRzLCBmYWlsdXJlcyBpbiB0aGVzZSB0aHJl
YWRzIGFyZSBpZ25vcmVkLgorCitFeGFtcGxlczoKKworYGBgCitBU1NFUlRfTk9fRkFUQUxfRkFJ
TFVSRShGb28oKSk7CisKK2ludCBpOworRVhQRUNUX05PX0ZBVEFMX0ZBSUxVUkUoeworICBpID0g
QmFyKCk7Cit9KTsKK2BgYAorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4g
QXNzZXJ0aW9ucyBmcm9tIG11bHRpcGxlIHRocmVhZHMKK2FyZSBjdXJyZW50bHkgbm90IHN1cHBv
cnRlZC4KKworIyMjIENoZWNraW5nIGZvciBGYWlsdXJlcyBpbiB0aGUgQ3VycmVudCBUZXN0ICMj
IworCitgSGFzRmF0YWxGYWlsdXJlKClgIGluIHRoZSBgOjp0ZXN0aW5nOjpUZXN0YCBjbGFzcyBy
ZXR1cm5zIGB0cnVlYCBpZiBhbgorYXNzZXJ0aW9uIGluIHRoZSBjdXJyZW50IHRlc3QgaGFzIHN1
ZmZlcmVkIGEgZmF0YWwgZmFpbHVyZS4gVGhpcworYWxsb3dzIGZ1bmN0aW9ucyB0byBjYXRjaCBm
YXRhbCBmYWlsdXJlcyBpbiBhIHN1Yi1yb3V0aW5lIGFuZCByZXR1cm4KK2Vhcmx5LgorCitgYGAK
K2NsYXNzIFRlc3QgeworIHB1YmxpYzoKKyAgLi4uCisgIHN0YXRpYyBib29sIEhhc0ZhdGFsRmFp
bHVyZSgpOworfTsKK2BgYAorCitUaGUgdHlwaWNhbCB1c2FnZSwgd2hpY2ggYmFzaWNhbGx5IHNp
bXVsYXRlcyB0aGUgYmVoYXZpb3Igb2YgYSB0aHJvd24KK2V4Y2VwdGlvbiwgaXM6CisKK2BgYAor
VEVTVChGb29UZXN0LCBCYXIpIHsKKyAgU3Vicm91dGluZSgpOworICAvLyBBYm9ydHMgaWYgU3Vi
cm91dGluZSgpIGhhZCBhIGZhdGFsIGZhaWx1cmUuCisgIGlmIChIYXNGYXRhbEZhaWx1cmUoKSkK
KyAgICByZXR1cm47CisgIC8vIFRoZSBmb2xsb3dpbmcgd29uJ3QgYmUgZXhlY3V0ZWQuCisgIC4u
LgorfQorYGBgCisKK0lmIGBIYXNGYXRhbEZhaWx1cmUoKWAgaXMgdXNlZCBvdXRzaWRlIG9mIGBU
RVNUKClgICwgYFRFU1RfRigpYCAsIG9yIGEgdGVzdAorZml4dHVyZSwgeW91IG11c3QgYWRkIHRo
ZSBgOjp0ZXN0aW5nOjpUZXN0OjpgIHByZWZpeCwgYXMgaW46CisKK2BgYAoraWYgKDo6dGVzdGlu
Zzo6VGVzdDo6SGFzRmF0YWxGYWlsdXJlKCkpCisgIHJldHVybjsKK2BgYAorCitTaW1pbGFybHks
IGBIYXNOb25mYXRhbEZhaWx1cmUoKWAgcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGN1cnJlbnQgdGVz
dAoraGFzIGF0IGxlYXN0IG9uZSBub24tZmF0YWwgZmFpbHVyZSwgYW5kIGBIYXNGYWlsdXJlKClg
IHJldHVybnMgYHRydWVgCitpZiB0aGUgY3VycmVudCB0ZXN0IGhhcyBhdCBsZWFzdCBvbmUgZmFp
bHVyZSBvZiBlaXRoZXIga2luZC4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBN
YWMuICBgSGFzTm9uZmF0YWxGYWlsdXJlKClgIGFuZAorYEhhc0ZhaWx1cmUoKWAgYXJlIGF2YWls
YWJsZSBzaW5jZSB2ZXJzaW9uIDEuNC4wLgorCisjIExvZ2dpbmcgQWRkaXRpb25hbCBJbmZvcm1h
dGlvbiAjCisKK0luIHlvdXIgdGVzdCBjb2RlLCB5b3UgY2FuIGNhbGwgYFJlY29yZFByb3BlcnR5
KCJrZXkiLCB2YWx1ZSlgIHRvIGxvZworYWRkaXRpb25hbCBpbmZvcm1hdGlvbiwgd2hlcmUgYHZh
bHVlYCBjYW4gYmUgZWl0aGVyIGEgQyBzdHJpbmcgb3IgYSAzMi1iaXQKK2ludGVnZXIuIFRoZSBf
bGFzdF8gdmFsdWUgcmVjb3JkZWQgZm9yIGEga2V5IHdpbGwgYmUgZW1pdHRlZCB0byB0aGUgWE1M
IG91dHB1dAoraWYgeW91IHNwZWNpZnkgb25lLiBGb3IgZXhhbXBsZSwgdGhlIHRlc3QKKworYGBg
CitURVNUX0YoV2lkZ2V0VXNhZ2VUZXN0LCBNaW5BbmRNYXhXaWRnZXRzKSB7CisgIFJlY29yZFBy
b3BlcnR5KCJNYXhpbXVtV2lkZ2V0cyIsIENvbXB1dGVNYXhVc2FnZSgpKTsKKyAgUmVjb3JkUHJv
cGVydHkoIk1pbmltdW1XaWRnZXRzIiwgQ29tcHV0ZU1pblVzYWdlKCkpOworfQorYGBgCisKK3dp
bGwgb3V0cHV0IFhNTCBsaWtlIHRoaXM6CisKK2BgYAorLi4uCisgIDx0ZXN0Y2FzZSBuYW1lPSJN
aW5BbmRNYXhXaWRnZXRzIiBzdGF0dXM9InJ1biIgdGltZT0iNiIgY2xhc3NuYW1lPSJXaWRnZXRV
c2FnZVRlc3QiCisgICAgICAgICAgICBNYXhpbXVtV2lkZ2V0cz0iMTIiCisgICAgICAgICAgICBN
aW5pbXVtV2lkZ2V0cz0iOSIgLz4KKy4uLgorYGBgCisKK19Ob3RlXzoKKyAgKiBgUmVjb3JkUHJv
cGVydHkoKWAgaXMgYSBzdGF0aWMgbWVtYmVyIG9mIHRoZSBgVGVzdGAgY2xhc3MuIFRoZXJlZm9y
ZSBpdCBuZWVkcyB0byBiZSBwcmVmaXhlZCB3aXRoIGA6OnRlc3Rpbmc6OlRlc3Q6OmAgaWYgdXNl
ZCBvdXRzaWRlIG9mIHRoZSBgVEVTVGAgYm9keSBhbmQgdGhlIHRlc3QgZml4dHVyZSBjbGFzcy4K
KyAgKiBga2V5YCBtdXN0IGJlIGEgdmFsaWQgWE1MIGF0dHJpYnV0ZSBuYW1lLCBhbmQgY2Fubm90
IGNvbmZsaWN0IHdpdGggdGhlIG9uZXMgYWxyZWFkeSB1c2VkIGJ5IEdvb2dsZSBUZXN0IChgbmFt
ZWAsIGBzdGF0dXNgLCAgICAgYHRpbWVgLCBhbmQgYGNsYXNzbmFtZWApLgorCitfQXZhaWxhYmls
aXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyBTaGFyaW5nIFJlc291cmNlcyBCZXR3ZWVu
IFRlc3RzIGluIHRoZSBTYW1lIFRlc3QgQ2FzZSAjCisKKworCitHb29nbGUgVGVzdCBjcmVhdGVz
IGEgbmV3IHRlc3QgZml4dHVyZSBvYmplY3QgZm9yIGVhY2ggdGVzdCBpbiBvcmRlciB0byBtYWtl
Cit0ZXN0cyBpbmRlcGVuZGVudCBhbmQgZWFzaWVyIHRvIGRlYnVnLiBIb3dldmVyLCBzb21ldGlt
ZXMgdGVzdHMgdXNlIHJlc291cmNlcwordGhhdCBhcmUgZXhwZW5zaXZlIHRvIHNldCB1cCwgbWFr
aW5nIHRoZSBvbmUtY29weS1wZXItdGVzdCBtb2RlbCBwcm9oaWJpdGl2ZWx5CitleHBlbnNpdmUu
CisKK0lmIHRoZSB0ZXN0cyBkb24ndCBjaGFuZ2UgdGhlIHJlc291cmNlLCB0aGVyZSdzIG5vIGhh
cm0gaW4gdGhlbSBzaGFyaW5nIGEKK3NpbmdsZSByZXNvdXJjZSBjb3B5LiBTbywgaW4gYWRkaXRp
b24gdG8gcGVyLXRlc3Qgc2V0LXVwL3RlYXItZG93biwgR29vZ2xlIFRlc3QKK2Fsc28gc3VwcG9y
dHMgcGVyLXRlc3QtY2FzZSBzZXQtdXAvdGVhci1kb3duLiBUbyB1c2UgaXQ6CisKKyAgMS4gSW4g
eW91ciB0ZXN0IGZpeHR1cmUgY2xhc3MgKHNheSBgRm9vVGVzdGAgKSwgZGVmaW5lIGFzIGBzdGF0
aWNgIHNvbWUgbWVtYmVyIHZhcmlhYmxlcyB0byBob2xkIHRoZSBzaGFyZWQgcmVzb3VyY2VzLgor
ICAxLiBJbiB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUgY2xhc3MsIGRlZmluZSBhIGBzdGF0aWMgdm9p
ZCBTZXRVcFRlc3RDYXNlKClgIGZ1bmN0aW9uIChyZW1lbWJlciBub3QgdG8gc3BlbGwgaXQgYXMg
KipgU2V0dXBUZXN0Q2FzZWAqKiB3aXRoIGEgc21hbGwgYHVgISkgdG8gc2V0IHVwIHRoZSBzaGFy
ZWQgcmVzb3VyY2VzIGFuZCBhIGBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKClgIGZ1bmN0
aW9uIHRvIHRlYXIgdGhlbSBkb3duLgorCitUaGF0J3MgaXQhIEdvb2dsZSBUZXN0IGF1dG9tYXRp
Y2FsbHkgY2FsbHMgYFNldFVwVGVzdENhc2UoKWAgYmVmb3JlIHJ1bm5pbmcgdGhlCitfZmlyc3Qg
dGVzdF8gaW4gdGhlIGBGb29UZXN0YCB0ZXN0IGNhc2UgKGkuZS4gYmVmb3JlIGNyZWF0aW5nIHRo
ZSBmaXJzdAorYEZvb1Rlc3RgIG9iamVjdCksIGFuZCBjYWxscyBgVGVhckRvd25UZXN0Q2FzZSgp
YCBhZnRlciBydW5uaW5nIHRoZSBfbGFzdCB0ZXN0XworaW4gaXQgKGkuZS4gYWZ0ZXIgZGVsZXRp
bmcgdGhlIGxhc3QgYEZvb1Rlc3RgIG9iamVjdCkuIEluIGJldHdlZW4sIHRoZSB0ZXN0cworY2Fu
IHVzZSB0aGUgc2hhcmVkIHJlc291cmNlcy4KKworUmVtZW1iZXIgdGhhdCB0aGUgdGVzdCBvcmRl
ciBpcyB1bmRlZmluZWQsIHNvIHlvdXIgY29kZSBjYW4ndCBkZXBlbmQgb24gYSB0ZXN0CitwcmVj
ZWRpbmcgb3IgZm9sbG93aW5nIGFub3RoZXIuIEFsc28sIHRoZSB0ZXN0cyBtdXN0IGVpdGhlciBu
b3QgbW9kaWZ5IHRoZQorc3RhdGUgb2YgYW55IHNoYXJlZCByZXNvdXJjZSwgb3IsIGlmIHRoZXkg
ZG8gbW9kaWZ5IHRoZSBzdGF0ZSwgdGhleSBtdXN0CityZXN0b3JlIHRoZSBzdGF0ZSB0byBpdHMg
b3JpZ2luYWwgdmFsdWUgYmVmb3JlIHBhc3NpbmcgY29udHJvbCB0byB0aGUgbmV4dAordGVzdC4K
KworSGVyZSdzIGFuIGV4YW1wbGUgb2YgcGVyLXRlc3QtY2FzZSBzZXQtdXAgYW5kIHRlYXItZG93
bjoKK2BgYAorY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHByb3Rl
Y3RlZDoKKyAgLy8gUGVyLXRlc3QtY2FzZSBzZXQtdXAuCisgIC8vIENhbGxlZCBiZWZvcmUgdGhl
IGZpcnN0IHRlc3QgaW4gdGhpcyB0ZXN0IGNhc2UuCisgIC8vIENhbiBiZSBvbWl0dGVkIGlmIG5v
dCBuZWVkZWQuCisgIHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7CisgICAgc2hhcmVkX3Jl
c291cmNlXyA9IG5ldyAuLi47CisgIH0KKworICAvLyBQZXItdGVzdC1jYXNlIHRlYXItZG93bi4K
KyAgLy8gQ2FsbGVkIGFmdGVyIHRoZSBsYXN0IHRlc3QgaW4gdGhpcyB0ZXN0IGNhc2UuCisgIC8v
IENhbiBiZSBvbWl0dGVkIGlmIG5vdCBuZWVkZWQuCisgIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVz
dENhc2UoKSB7CisgICAgZGVsZXRlIHNoYXJlZF9yZXNvdXJjZV87CisgICAgc2hhcmVkX3Jlc291
cmNlXyA9IE5VTEw7CisgIH0KKworICAvLyBZb3UgY2FuIGRlZmluZSBwZXItdGVzdCBzZXQtdXAg
YW5kIHRlYXItZG93biBsb2dpYyBhcyB1c3VhbC4KKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeyAu
Li4gfQorICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7IC4uLiB9CisKKyAgLy8gU29tZSBleHBl
bnNpdmUgcmVzb3VyY2Ugc2hhcmVkIGJ5IGFsbCB0ZXN0cy4KKyAgc3RhdGljIFQqIHNoYXJlZF9y
ZXNvdXJjZV87Cit9OworCitUKiBGb29UZXN0OjpzaGFyZWRfcmVzb3VyY2VfID0gTlVMTDsKKwor
VEVTVF9GKEZvb1Rlc3QsIFRlc3QxKSB7CisgIC4uLiB5b3UgY2FuIHJlZmVyIHRvIHNoYXJlZF9y
ZXNvdXJjZSBoZXJlIC4uLgorfQorVEVTVF9GKEZvb1Rlc3QsIFRlc3QyKSB7CisgIC4uLiB5b3Ug
Y2FuIHJlZmVyIHRvIHNoYXJlZF9yZXNvdXJjZSBoZXJlIC4uLgorfQorYGBgCisKK19BdmFpbGFi
aWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLgorCisjIEdsb2JhbCBTZXQtVXAgYW5kIFRlYXIt
RG93biAjCisKK0p1c3QgYXMgeW91IGNhbiBkbyBzZXQtdXAgYW5kIHRlYXItZG93biBhdCB0aGUg
dGVzdCBsZXZlbCBhbmQgdGhlIHRlc3QgY2FzZQorbGV2ZWwsIHlvdSBjYW4gYWxzbyBkbyBpdCBh
dCB0aGUgdGVzdCBwcm9ncmFtIGxldmVsLiBIZXJlJ3MgaG93LgorCitGaXJzdCwgeW91IHN1YmNs
YXNzIHRoZSBgOjp0ZXN0aW5nOjpFbnZpcm9ubWVudGAgY2xhc3MgdG8gZGVmaW5lIGEgdGVzdAor
ZW52aXJvbm1lbnQsIHdoaWNoIGtub3dzIGhvdyB0byBzZXQtdXAgYW5kIHRlYXItZG93bjoKKwor
YGBgCitjbGFzcyBFbnZpcm9ubWVudCB7CisgcHVibGljOgorICB2aXJ0dWFsIH5FbnZpcm9ubWVu
dCgpIHt9CisgIC8vIE92ZXJyaWRlIHRoaXMgdG8gZGVmaW5lIGhvdyB0byBzZXQgdXAgdGhlIGVu
dmlyb25tZW50LgorICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7fQorICAvLyBPdmVycmlkZSB0aGlz
IHRvIGRlZmluZSBob3cgdG8gdGVhciBkb3duIHRoZSBlbnZpcm9ubWVudC4KKyAgdmlydHVhbCB2
b2lkIFRlYXJEb3duKCkge30KK307CitgYGAKKworVGhlbiwgeW91IHJlZ2lzdGVyIGFuIGluc3Rh
bmNlIG9mIHlvdXIgZW52aXJvbm1lbnQgY2xhc3Mgd2l0aCBHb29nbGUgVGVzdCBieQorY2FsbGlu
ZyB0aGUgYDo6dGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50KClgIGZ1bmN0aW9uOgor
CitgYGAKK0Vudmlyb25tZW50KiBBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoRW52aXJvbm1lbnQq
IGVudik7CitgYGAKKworTm93LCB3aGVuIGBSVU5fQUxMX1RFU1RTKClgIGlzIGNhbGxlZCwgaXQg
Zmlyc3QgY2FsbHMgdGhlIGBTZXRVcCgpYCBtZXRob2Qgb2YKK3RoZSBlbnZpcm9ubWVudCBvYmpl
Y3QsIHRoZW4gcnVucyB0aGUgdGVzdHMgaWYgdGhlcmUgd2FzIG5vIGZhdGFsIGZhaWx1cmVzLCBh
bmQKK2ZpbmFsbHkgY2FsbHMgYFRlYXJEb3duKClgIG9mIHRoZSBlbnZpcm9ubWVudCBvYmplY3Qu
CisKK0l0J3MgT0sgdG8gcmVnaXN0ZXIgbXVsdGlwbGUgZW52aXJvbm1lbnQgb2JqZWN0cy4gSW4g
dGhpcyBjYXNlLCB0aGVpciBgU2V0VXAoKWAKK3dpbGwgYmUgY2FsbGVkIGluIHRoZSBvcmRlciB0
aGV5IGFyZSByZWdpc3RlcmVkLCBhbmQgdGhlaXIgYFRlYXJEb3duKClgIHdpbGwgYmUKK2NhbGxl
ZCBpbiB0aGUgcmV2ZXJzZSBvcmRlci4KKworTm90ZSB0aGF0IEdvb2dsZSBUZXN0IHRha2VzIG93
bmVyc2hpcCBvZiB0aGUgcmVnaXN0ZXJlZCBlbnZpcm9ubWVudCBvYmplY3RzLgorVGhlcmVmb3Jl
ICoqZG8gbm90IGRlbGV0ZSB0aGVtKiogYnkgeW91cnNlbGYuCisKK1lvdSBzaG91bGQgY2FsbCBg
QWRkR2xvYmFsVGVzdEVudmlyb25tZW50KClgIGJlZm9yZSBgUlVOX0FMTF9URVNUUygpYCBpcwor
Y2FsbGVkLCBwcm9iYWJseSBpbiBgbWFpbigpYC4gSWYgeW91IHVzZSBgZ3Rlc3RfbWFpbmAsIHlv
dSBuZWVkIHRvICAgICAgY2FsbAordGhpcyBiZWZvcmUgYG1haW4oKWAgc3RhcnRzIGZvciBpdCB0
byB0YWtlIGVmZmVjdC4gT25lIHdheSB0byBkbyB0aGlzIGlzIHRvCitkZWZpbmUgYSBnbG9iYWwg
dmFyaWFibGUgbGlrZSB0aGlzOgorCitgYGAKKzo6dGVzdGluZzo6RW52aXJvbm1lbnQqIGNvbnN0
IGZvb19lbnYgPSA6OnRlc3Rpbmc6OkFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChuZXcgRm9vRW52
aXJvbm1lbnQpOworYGBgCisKK0hvd2V2ZXIsIHdlIHN0cm9uZ2x5IHJlY29tbWVuZCB5b3UgdG8g
d3JpdGUgeW91ciBvd24gYG1haW4oKWAgYW5kIGNhbGwKK2BBZGRHbG9iYWxUZXN0RW52aXJvbm1l
bnQoKWAgdGhlcmUsIGFzIHJlbHlpbmcgb24gaW5pdGlhbGl6YXRpb24gb2YgZ2xvYmFsCit2YXJp
YWJsZXMgbWFrZXMgdGhlIGNvZGUgaGFyZGVyIHRvIHJlYWQgYW5kIG1heSBjYXVzZSBwcm9ibGVt
cyB3aGVuIHlvdQorcmVnaXN0ZXIgbXVsdGlwbGUgZW52aXJvbm1lbnRzIGZyb20gZGlmZmVyZW50
IHRyYW5zbGF0aW9uIHVuaXRzIGFuZCB0aGUKK2Vudmlyb25tZW50cyBoYXZlIGRlcGVuZGVuY2ll
cyBhbW9uZyB0aGVtIChyZW1lbWJlciB0aGF0IHRoZSBjb21waWxlciBkb2Vzbid0CitndWFyYW50
ZWUgdGhlIG9yZGVyIGluIHdoaWNoIGdsb2JhbCB2YXJpYWJsZXMgZnJvbSBkaWZmZXJlbnQgdHJh
bnNsYXRpb24gdW5pdHMKK2FyZSBpbml0aWFsaXplZCkuCisKK19BdmFpbGFiaWxpdHk6XyBMaW51
eCwgV2luZG93cywgTWFjLgorCisKKyMgVmFsdWUgUGFyYW1ldGVyaXplZCBUZXN0cyAjCisKK19W
YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzXyBhbGxvdyB5b3UgdG8gdGVzdCB5b3VyIGNvZGUgd2l0
aCBkaWZmZXJlbnQKK3BhcmFtZXRlcnMgd2l0aG91dCB3cml0aW5nIG11bHRpcGxlIGNvcGllcyBv
ZiB0aGUgc2FtZSB0ZXN0LgorCitTdXBwb3NlIHlvdSB3cml0ZSBhIHRlc3QgZm9yIHlvdXIgY29k
ZSBhbmQgdGhlbiByZWFsaXplIHRoYXQgeW91ciBjb2RlIGlzIGFmZmVjdGVkIGJ5IGEgcHJlc2Vu
Y2Ugb2YgYSBCb29sZWFuIGNvbW1hbmQgbGluZSBmbGFnLgorCitgYGAKK1RFU1QoTXlDb2RlVGVz
dCwgVGVzdEZvbykgeworICAvLyBBIGNvZGUgdG8gdGVzdCBmb28oKS4KK30KK2BgYAorCitVc3Vh
bGx5IHBlb3BsZSBmYWN0b3IgdGhlaXIgdGVzdCBjb2RlIGludG8gYSBmdW5jdGlvbiB3aXRoIGEg
Qm9vbGVhbiBwYXJhbWV0ZXIgaW4gc3VjaCBzaXR1YXRpb25zLiBUaGUgZnVuY3Rpb24gc2V0cyB0
aGUgZmxhZywgdGhlbiBleGVjdXRlcyB0aGUgdGVzdGluZyBjb2RlLgorCitgYGAKK3ZvaWQgVGVz
dEZvb0hlbHBlcihib29sIGZsYWdfdmFsdWUpIHsKKyAgZmxhZyA9IGZsYWdfdmFsdWU7CisgIC8v
IEEgY29kZSB0byB0ZXN0IGZvbygpLgorfQorCitURVNUKE15Q29kZVRlc3QsIFRlc3RGb29vKSB7
CisgIFRlc3RGb29IZWxwZXIoZmFsc2UpOworICBUZXN0Rm9vSGVscGVyKHRydWUpOworfQorYGBg
CisKK0J1dCB0aGlzIHNldHVwIGhhcyBzZXJpb3VzIGRyYXdiYWNrcy4gRmlyc3QsIHdoZW4gYSB0
ZXN0IGFzc2VydGlvbiBmYWlscyBpbiB5b3VyIHRlc3RzLCBpdCBiZWNvbWVzIHVuY2xlYXIgd2hh
dCB2YWx1ZSBvZiB0aGUgcGFyYW1ldGVyIGNhdXNlZCBpdCB0byBmYWlsLiBZb3UgY2FuIHN0cmVh
bSBhIGNsYXJpZnlpbmcgbWVzc2FnZSBpbnRvIHlvdXIgYEVYUEVDVGAvYEFTU0VSVGAgc3RhdGVt
ZW50cywgYnV0IGl0IHlvdSdsbCBoYXZlIHRvIGRvIGl0IHdpdGggYWxsIG9mIHRoZW0uIFNlY29u
ZCwgeW91IGhhdmUgdG8gYWRkIG9uZSBzdWNoIGhlbHBlciBmdW5jdGlvbiBwZXIgdGVzdC4gV2hh
dCBpZiB5b3UgaGF2ZSB0ZW4gdGVzdHM/IFR3ZW50eT8gQSBodW5kcmVkPworCitWYWx1ZS1wYXJh
bWV0ZXJpemVkIHRlc3RzIHdpbGwgbGV0IHlvdSB3cml0ZSB5b3VyIHRlc3Qgb25seSBvbmNlIGFu
ZCB0aGVuIGVhc2lseSBpbnN0YW50aWF0ZSBhbmQgcnVuIGl0IHdpdGggYW4gYXJiaXRyYXJ5IG51
bWJlciBvZiBwYXJhbWV0ZXIgdmFsdWVzLgorCitIZXJlIGFyZSBzb21lIG90aGVyIHNpdHVhdGlv
bnMgd2hlbiB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGNvbWUgaGFuZHk6CisKKyAgKiBZb3Ug
d2FuIHRvIHRlc3QgZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucyBvZiBhbiBPTyBpbnRlcmZhY2Uu
CisgICogWW91IHdhbnQgdG8gdGVzdCB5b3VyIGNvZGUgb3ZlciB2YXJpb3VzIGlucHV0cyAoYS5r
LmEuIGRhdGEtZHJpdmVuIHRlc3RpbmcpLiBUaGlzIGZlYXR1cmUgaXMgZWFzeSB0byBhYnVzZSwg
c28gcGxlYXNlIGV4ZXJjaXNlIHlvdXIgZ29vZCBzZW5zZSB3aGVuIGRvaW5nIGl0IQorCisjIyBI
b3cgdG8gV3JpdGUgVmFsdWUtUGFyYW1ldGVyaXplZCBUZXN0cyAjIworCitUbyB3cml0ZSB2YWx1
ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLCBmaXJzdCB5b3Ugc2hvdWxkIGRlZmluZSBhIGZpeHR1cmUK
K2NsYXNzLiBJdCBtdXN0IGJlIGRlcml2ZWQgZnJvbSBgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFt
PFQ+YCwgd2hlcmUgYFRgCitpcyB0aGUgdHlwZSBvZiB5b3VyIHBhcmFtZXRlciB2YWx1ZXMuIGBU
ZXN0V2l0aFBhcmFtPFQ+YCBpcyBpdHNlbGYKK2Rlcml2ZWQgZnJvbSBgOjp0ZXN0aW5nOjpUZXN0
YC4gYFRgIGNhbiBiZSBhbnkgY29weWFibGUgdHlwZS4gSWYgaXQncworYSByYXcgcG9pbnRlciwg
eW91IGFyZSByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlIGxpZmVzcGFuIG9mIHRoZQorcG9p
bnRlZCB2YWx1ZXMuCisKK2BgYAorY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRl
c3RXaXRoUGFyYW08Y29uc3QgY2hhcio+IHsKKyAgLy8gWW91IGNhbiBpbXBsZW1lbnQgYWxsIHRo
ZSB1c3VhbCBmaXh0dXJlIGNsYXNzIG1lbWJlcnMgaGVyZS4KKyAgLy8gVG8gYWNjZXNzIHRoZSB0
ZXN0IHBhcmFtZXRlciwgY2FsbCBHZXRQYXJhbSgpIGZyb20gY2xhc3MKKyAgLy8gVGVzdFdpdGhQ
YXJhbTxUPi4KK307CitgYGAKKworVGhlbiwgdXNlIHRoZSBgVEVTVF9QYCBtYWNybyB0byBkZWZp
bmUgYXMgbWFueSB0ZXN0IHBhdHRlcm5zIHVzaW5nCit0aGlzIGZpeHR1cmUgYXMgeW91IHdhbnQu
ICBUaGUgYF9QYCBzdWZmaXggaXMgZm9yICJwYXJhbWV0ZXJpemVkIiBvcgorInBhdHRlcm4iLCB3
aGljaGV2ZXIgeW91IHByZWZlciB0byB0aGluay4KKworYGBgCitURVNUX1AoRm9vVGVzdCwgRG9l
c0JsYWgpIHsKKyAgLy8gSW5zaWRlIGEgdGVzdCwgYWNjZXNzIHRoZSB0ZXN0IHBhcmFtZXRlciB3
aXRoIHRoZSBHZXRQYXJhbSgpIG1ldGhvZAorICAvLyBvZiB0aGUgVGVzdFdpdGhQYXJhbTxUPiBj
bGFzczoKKyAgRVhQRUNUX1RSVUUoZm9vLkJsYWgoR2V0UGFyYW0oKSkpOworICAuLi4KK30KKwor
VEVTVF9QKEZvb1Rlc3QsIEhhc0JsYWhCbGFoKSB7CisgIC4uLgorfQorYGBgCisKK0ZpbmFsbHks
IHlvdSBjYW4gdXNlIGBJTlNUQU5USUFURV9URVNUX0NBU0VfUGAgdG8gaW5zdGFudGlhdGUgdGhl
IHRlc3QKK2Nhc2Ugd2l0aCBhbnkgc2V0IG9mIHBhcmFtZXRlcnMgeW91IHdhbnQuIEdvb2dsZSBU
ZXN0IGRlZmluZXMgYSBudW1iZXIgb2YKK2Z1bmN0aW9ucyBmb3IgZ2VuZXJhdGluZyB0ZXN0IHBh
cmFtZXRlcnMuIFRoZXkgcmV0dXJuIHdoYXQgd2UgY2FsbAorKHN1cnByaXNlISkgX3BhcmFtZXRl
ciBnZW5lcmF0b3JzXy4gSGVyZSBpcyBhIHN1bW1hcnkgb2YgdGhlbSwKK3doaWNoIGFyZSBhbGwg
aW4gdGhlIGB0ZXN0aW5nYCBuYW1lc3BhY2U6CisKK3wgYFJhbmdlKGJlZ2luLCBlbmRbLCBzdGVw
XSlgIHwgWWllbGRzIHZhbHVlcyBge2JlZ2luLCBiZWdpbitzdGVwLCBiZWdpbitzdGVwK3N0ZXAs
IC4uLn1gLiBUaGUgdmFsdWVzIGRvIG5vdCBpbmNsdWRlIGBlbmRgLiBgc3RlcGAgZGVmYXVsdHMg
dG8gMS4gfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Cit8IGBWYWx1ZXModjEs
IHYyLCAuLi4sIHZOKWAgICB8IFlpZWxkcyB2YWx1ZXMgYHt2MSwgdjIsIC4uLiwgdk59YC4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwKK3wgYFZhbHVlc0luKGNvbnRhaW5lcilgIGFuZCBgVmFsdWVz
SW4oYmVnaW4sIGVuZClgIHwgWWllbGRzIHZhbHVlcyBmcm9tIGEgQy1zdHlsZSBhcnJheSwgYW4g
U1RMLXN0eWxlIGNvbnRhaW5lciwgb3IgYW4gaXRlcmF0b3IgcmFuZ2UgYFtiZWdpbiwgZW5kKWAu
ICAgICAgICAgICAgICAgICAgfAorfCBgQm9vbCgpYCAgICAgICAgICAgICAgICAgICAgfCBZaWVs
ZHMgc2VxdWVuY2UgYHtmYWxzZSwgdHJ1ZX1gLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8
IGBDb21iaW5lKGcxLCBnMiwgLi4uLCBnTilgICB8IFlpZWxkcyBhbGwgY29tYmluYXRpb25zICh0
aGUgQ2FydGVzaWFuIHByb2R1Y3QgZm9yIHRoZSBtYXRoIHNhdnZ5KSBvZiB0aGUgdmFsdWVzIGdl
bmVyYXRlZCBieSB0aGUgYE5gIGdlbmVyYXRvcnMuIFRoaXMgaXMgb25seSBhdmFpbGFibGUgaWYg
eW91ciBzeXN0ZW0gcHJvdmlkZXMgdGhlIGA8dHIxL3R1cGxlPmAgaGVhZGVyLiBJZiB5b3UgYXJl
IHN1cmUgeW91ciBzeXN0ZW0gZG9lcywgYW5kIEdvb2dsZSBUZXN0IGRpc2FncmVlcywgeW91IGNh
biBvdmVycmlkZSBpdCBieSBkZWZpbmluZyBgR1RFU1RfSEFTX1RSMV9UVVBMRT0xYC4gU2VlIGNv
bW1lbnRzIGluIFtpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaF0oLi4vaW5jbHVk
ZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgpIGZvciBtb3JlIGluZm9ybWF0aW9uLiB8CisK
K0ZvciBtb3JlIGRldGFpbHMsIHNlZSB0aGUgY29tbWVudHMgYXQgdGhlIGRlZmluaXRpb25zIG9m
IHRoZXNlIGZ1bmN0aW9ucyBpbiB0aGUgW3NvdXJjZSBjb2RlXSguLi9pbmNsdWRlL2d0ZXN0L2d0
ZXN0LXBhcmFtLXRlc3QuaCkuCisKK1RoZSBmb2xsb3dpbmcgc3RhdGVtZW50IHdpbGwgaW5zdGFu
dGlhdGUgdGVzdHMgZnJvbSB0aGUgYEZvb1Rlc3RgIHRlc3QgY2FzZQorZWFjaCB3aXRoIHBhcmFt
ZXRlciB2YWx1ZXMgYCJtZWVueSJgLCBgIm1pbnkiYCwgYW5kIGAibW9lImAuCisKK2BgYAorSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1AoSW5zdGFudGlhdGlvbk5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICBGb29UZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpWYWx1
ZXMoIm1lZW55IiwgIm1pbnkiLCAibW9lIikpOworYGBgCisKK1RvIGRpc3Rpbmd1aXNoIGRpZmZl
cmVudCBpbnN0YW5jZXMgb2YgdGhlIHBhdHRlcm4gKHllcywgeW91IGNhbgoraW5zdGFudGlhdGUg
aXQgbW9yZSB0aGFuIG9uY2UpLCB0aGUgZmlyc3QgYXJndW1lbnQgdG8KK2BJTlNUQU5USUFURV9U
RVNUX0NBU0VfUGAgaXMgYSBwcmVmaXggdGhhdCB3aWxsIGJlIGFkZGVkIHRvIHRoZSBhY3R1YWwK
K3Rlc3QgY2FzZSBuYW1lLiBSZW1lbWJlciB0byBwaWNrIHVuaXF1ZSBwcmVmaXhlcyBmb3IgZGlm
ZmVyZW50CitpbnN0YW50aWF0aW9ucy4gVGhlIHRlc3RzIGZyb20gdGhlIGluc3RhbnRpYXRpb24g
YWJvdmUgd2lsbCBoYXZlIHRoZXNlCituYW1lczoKKworICAqIGBJbnN0YW50aWF0aW9uTmFtZS9G
b29UZXN0LkRvZXNCbGFoLzBgIGZvciBgIm1lZW55ImAKKyAgKiBgSW5zdGFudGlhdGlvbk5hbWUv
Rm9vVGVzdC5Eb2VzQmxhaC8xYCBmb3IgYCJtaW55ImAKKyAgKiBgSW5zdGFudGlhdGlvbk5hbWUv
Rm9vVGVzdC5Eb2VzQmxhaC8yYCBmb3IgYCJtb2UiYAorICAqIGBJbnN0YW50aWF0aW9uTmFtZS9G
b29UZXN0Lkhhc0JsYWhCbGFoLzBgIGZvciBgIm1lZW55ImAKKyAgKiBgSW5zdGFudGlhdGlvbk5h
bWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8xYCBmb3IgYCJtaW55ImAKKyAgKiBgSW5zdGFudGlhdGlv
bk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8yYCBmb3IgYCJtb2UiYAorCitZb3UgY2FuIHVzZSB0
aGVzZSBuYW1lcyBpbiBbLS1ndGVzdFwtZmlsdGVyXSgjcnVubmluZy1hLXN1YnNldC1vZi10aGUt
dGVzdHMpLgorCitUaGlzIHN0YXRlbWVudCB3aWxsIGluc3RhbnRpYXRlIGFsbCB0ZXN0cyBmcm9t
IGBGb29UZXN0YCBhZ2FpbiwgZWFjaAord2l0aCBwYXJhbWV0ZXIgdmFsdWVzIGAiY2F0ImAgYW5k
IGAiZG9nImA6CisKK2BgYAorY29uc3QgY2hhciogcGV0c1tdID0geyJjYXQiLCAiZG9nIn07CitJ
TlNUQU5USUFURV9URVNUX0NBU0VfUChBbm90aGVySW5zdGFudGlhdGlvbk5hbWUsIEZvb1Rlc3Qs
CisgICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlc0luKHBldHMpKTsKK2Bg
YAorCitUaGUgdGVzdHMgZnJvbSB0aGUgaW5zdGFudGlhdGlvbiBhYm92ZSB3aWxsIGhhdmUgdGhl
c2UgbmFtZXM6CisKKyAgKiBgQW5vdGhlckluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuRG9lc0Js
YWgvMGAgZm9yIGAiY2F0ImAKKyAgKiBgQW5vdGhlckluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3Qu
RG9lc0JsYWgvMWAgZm9yIGAiZG9nImAKKyAgKiBgQW5vdGhlckluc3RhbnRpYXRpb25OYW1lL0Zv
b1Rlc3QuSGFzQmxhaEJsYWgvMGAgZm9yIGAiY2F0ImAKKyAgKiBgQW5vdGhlckluc3RhbnRpYXRp
b25OYW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgvMWAgZm9yIGAiZG9nImAKKworUGxlYXNlIG5vdGUg
dGhhdCBgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1BgIHdpbGwgaW5zdGFudGlhdGUgX2FsbF8KK3Rl
c3RzIGluIHRoZSBnaXZlbiB0ZXN0IGNhc2UsIHdoZXRoZXIgdGhlaXIgZGVmaW5pdGlvbnMgY29t
ZSBiZWZvcmUgb3IKK19hZnRlcl8gdGhlIGBJTlNUQU5USUFURV9URVNUX0NBU0VfUGAgc3RhdGVt
ZW50LgorCitZb3UgY2FuIHNlZQorW3RoZXNlXSguLi9zYW1wbGVzL3NhbXBsZTdfdW5pdHRlc3Qu
Y2MpCitbZmlsZXNdKC4uL3NhbXBsZXMvc2FtcGxlOF91bml0dGVzdC5jYykgZm9yIG1vcmUgZXhh
bXBsZXMuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cyAocmVxdWlyZXMgTVNWQyA4
LjAgb3IgYWJvdmUpLCBNYWM7IHNpbmNlIHZlcnNpb24gMS4yLjAuCisKKyMjIENyZWF0aW5nIFZh
bHVlLVBhcmFtZXRlcml6ZWQgQWJzdHJhY3QgVGVzdHMgIyMKKworSW4gdGhlIGFib3ZlLCB3ZSBk
ZWZpbmUgYW5kIGluc3RhbnRpYXRlIGBGb29UZXN0YCBpbiB0aGUgc2FtZSBzb3VyY2UKK2ZpbGUu
IFNvbWV0aW1lcyB5b3UgbWF5IHdhbnQgdG8gZGVmaW5lIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVz
dHMgaW4gYQorbGlicmFyeSBhbmQgbGV0IG90aGVyIHBlb3BsZSBpbnN0YW50aWF0ZSB0aGVtIGxh
dGVyLiBUaGlzIHBhdHRlcm4gaXMKK2tub3duIGFzIDxpPmFic3RyYWN0IHRlc3RzPC9pPi4gQXMg
YW4gZXhhbXBsZSBvZiBpdHMgYXBwbGljYXRpb24sIHdoZW4geW91CithcmUgZGVzaWduaW5nIGFu
IGludGVyZmFjZSB5b3UgY2FuIHdyaXRlIGEgc3RhbmRhcmQgc3VpdGUgb2YgYWJzdHJhY3QKK3Rl
c3RzIChwZXJoYXBzIHVzaW5nIGEgZmFjdG9yeSBmdW5jdGlvbiBhcyB0aGUgdGVzdCBwYXJhbWV0
ZXIpIHRoYXQKK2FsbCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGludGVyZmFjZSBhcmUgZXhwZWN0
ZWQgdG8gcGFzcy4gV2hlbgorc29tZW9uZSBpbXBsZW1lbnRzIHRoZSBpbnRlcmZhY2UsIGhlIGNh
biBpbnN0YW50aWF0ZSB5b3VyIHN1aXRlIHRvIGdldAorYWxsIHRoZSBpbnRlcmZhY2UtY29uZm9y
bWFuY2UgdGVzdHMgZm9yIGZyZWUuCisKK1RvIGRlZmluZSBhYnN0cmFjdCB0ZXN0cywgeW91IHNo
b3VsZCBvcmdhbml6ZSB5b3VyIGNvZGUgbGlrZSB0aGlzOgorCisgIDEuIFB1dCB0aGUgZGVmaW5p
dGlvbiBvZiB0aGUgcGFyYW1ldGVyaXplZCB0ZXN0IGZpeHR1cmUgY2xhc3MgKGUuZy4gYEZvb1Rl
c3RgKSBpbiBhIGhlYWRlciBmaWxlLCBzYXkgYGZvb19wYXJhbV90ZXN0LmhgLiBUaGluayBvZiB0
aGlzIGFzIF9kZWNsYXJpbmdfIHlvdXIgYWJzdHJhY3QgdGVzdHMuCisgIDEuIFB1dCB0aGUgYFRF
U1RfUGAgZGVmaW5pdGlvbnMgaW4gYGZvb19wYXJhbV90ZXN0LmNjYCwgd2hpY2ggaW5jbHVkZXMg
YGZvb19wYXJhbV90ZXN0LmhgLiBUaGluayBvZiB0aGlzIGFzIF9pbXBsZW1lbnRpbmdfIHlvdXIg
YWJzdHJhY3QgdGVzdHMuCisKK09uY2UgdGhleSBhcmUgZGVmaW5lZCwgeW91IGNhbiBpbnN0YW50
aWF0ZSB0aGVtIGJ5IGluY2x1ZGluZworYGZvb19wYXJhbV90ZXN0LmhgLCBpbnZva2luZyBgSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1AoKWAsIGFuZCBsaW5raW5nCit3aXRoIGBmb29fcGFyYW1fdGVz
dC5jY2AuIFlvdSBjYW4gaW5zdGFudGlhdGUgdGhlIHNhbWUgYWJzdHJhY3QgdGVzdAorY2FzZSBt
dWx0aXBsZSB0aW1lcywgcG9zc2libHkgaW4gZGlmZmVyZW50IHNvdXJjZSBmaWxlcy4KKworIyBU
eXBlZCBUZXN0cyAjCisKK1N1cHBvc2UgeW91IGhhdmUgbXVsdGlwbGUgaW1wbGVtZW50YXRpb25z
IG9mIHRoZSBzYW1lIGludGVyZmFjZSBhbmQKK3dhbnQgdG8gbWFrZSBzdXJlIHRoYXQgYWxsIG9m
IHRoZW0gc2F0aXNmeSBzb21lIGNvbW1vbiByZXF1aXJlbWVudHMuCitPciwgeW91IG1heSBoYXZl
IGRlZmluZWQgc2V2ZXJhbCB0eXBlcyB0aGF0IGFyZSBzdXBwb3NlZCB0byBjb25mb3JtIHRvCit0
aGUgc2FtZSAiY29uY2VwdCIgYW5kIHlvdSB3YW50IHRvIHZlcmlmeSBpdC4gIEluIGJvdGggY2Fz
ZXMsIHlvdSB3YW50Cit0aGUgc2FtZSB0ZXN0IGxvZ2ljIHJlcGVhdGVkIGZvciBkaWZmZXJlbnQg
dHlwZXMuCisKK1doaWxlIHlvdSBjYW4gd3JpdGUgb25lIGBURVNUYCBvciBgVEVTVF9GYCBmb3Ig
ZWFjaCB0eXBlIHlvdSB3YW50IHRvCit0ZXN0IChhbmQgeW91IG1heSBldmVuIGZhY3RvciB0aGUg
dGVzdCBsb2dpYyBpbnRvIGEgZnVuY3Rpb24gdGVtcGxhdGUKK3RoYXQgeW91IGludm9rZSBmcm9t
IHRoZSBgVEVTVGApLCBpdCdzIHRlZGlvdXMgYW5kIGRvZXNuJ3Qgc2NhbGU6CitpZiB5b3Ugd2Fu
dCBfbV8gdGVzdHMgb3ZlciBfbl8gdHlwZXMsIHlvdSdsbCBlbmQgdXAgd3JpdGluZyBfbVwqbl8K
K2BURVNUYHMuCisKK19UeXBlZCB0ZXN0c18gYWxsb3cgeW91IHRvIHJlcGVhdCB0aGUgc2FtZSB0
ZXN0IGxvZ2ljIG92ZXIgYSBsaXN0IG9mCit0eXBlcy4gIFlvdSBvbmx5IG5lZWQgdG8gd3JpdGUg
dGhlIHRlc3QgbG9naWMgb25jZSwgYWx0aG91Z2ggeW91IG11c3QKK2tub3cgdGhlIHR5cGUgbGlz
dCB3aGVuIHdyaXRpbmcgdHlwZWQgdGVzdHMuICBIZXJlJ3MgaG93IHlvdSBkbyBpdDoKKworRmly
c3QsIGRlZmluZSBhIGZpeHR1cmUgY2xhc3MgdGVtcGxhdGUuICBJdCBzaG91bGQgYmUgcGFyYW1l
dGVyaXplZAorYnkgYSB0eXBlLiAgUmVtZW1iZXIgdG8gZGVyaXZlIGl0IGZyb20gYDo6dGVzdGlu
Zzo6VGVzdGA6CisKK2BgYAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBGb29UZXN0IDog
cHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHVibGljOgorICAuLi4KKyAgdHlwZWRlZiBzdGQ6
Omxpc3Q8VD4gTGlzdDsKKyAgc3RhdGljIFQgc2hhcmVkXzsKKyAgVCB2YWx1ZV87Cit9OworYGBg
CisKK05leHQsIGFzc29jaWF0ZSBhIGxpc3Qgb2YgdHlwZXMgd2l0aCB0aGUgdGVzdCBjYXNlLCB3
aGljaCB3aWxsIGJlCityZXBlYXRlZCBmb3IgZWFjaCB0eXBlIGluIHRoZSBsaXN0OgorCitgYGAK
K3R5cGVkZWYgOjp0ZXN0aW5nOjpUeXBlczxjaGFyLCBpbnQsIHVuc2lnbmVkIGludD4gTXlUeXBl
czsKK1RZUEVEX1RFU1RfQ0FTRShGb29UZXN0LCBNeVR5cGVzKTsKK2BgYAorCitUaGUgYHR5cGVk
ZWZgIGlzIG5lY2Vzc2FyeSBmb3IgdGhlIGBUWVBFRF9URVNUX0NBU0VgIG1hY3JvIHRvIHBhcnNl
Citjb3JyZWN0bHkuICBPdGhlcndpc2UgdGhlIGNvbXBpbGVyIHdpbGwgdGhpbmsgdGhhdCBlYWNo
IGNvbW1hIGluIHRoZQordHlwZSBsaXN0IGludHJvZHVjZXMgYSBuZXcgbWFjcm8gYXJndW1lbnQu
CisKK1RoZW4sIHVzZSBgVFlQRURfVEVTVCgpYCBpbnN0ZWFkIG9mIGBURVNUX0YoKWAgdG8gZGVm
aW5lIGEgdHlwZWQgdGVzdAorZm9yIHRoaXMgdGVzdCBjYXNlLiAgWW91IGNhbiByZXBlYXQgdGhp
cyBhcyBtYW55IHRpbWVzIGFzIHlvdSB3YW50OgorCitgYGAKK1RZUEVEX1RFU1QoRm9vVGVzdCwg
RG9lc0JsYWgpIHsKKyAgLy8gSW5zaWRlIGEgdGVzdCwgcmVmZXIgdG8gdGhlIHNwZWNpYWwgbmFt
ZSBUeXBlUGFyYW0gdG8gZ2V0IHRoZSB0eXBlCisgIC8vIHBhcmFtZXRlci4gIFNpbmNlIHdlIGFy
ZSBpbnNpZGUgYSBkZXJpdmVkIGNsYXNzIHRlbXBsYXRlLCBDKysgcmVxdWlyZXMKKyAgLy8gdXMg
dG8gdmlzaXQgdGhlIG1lbWJlcnMgb2YgRm9vVGVzdCB2aWEgJ3RoaXMnLgorICBUeXBlUGFyYW0g
biA9IHRoaXMtPnZhbHVlXzsKKworICAvLyBUbyB2aXNpdCBzdGF0aWMgbWVtYmVycyBvZiB0aGUg
Zml4dHVyZSwgYWRkIHRoZSAnVGVzdEZpeHR1cmU6OicKKyAgLy8gcHJlZml4LgorICBuICs9IFRl
c3RGaXh0dXJlOjpzaGFyZWRfOworCisgIC8vIFRvIHJlZmVyIHRvIHR5cGVkZWZzIGluIHRoZSBm
aXh0dXJlLCBhZGQgdGhlICd0eXBlbmFtZSBUZXN0Rml4dHVyZTo6JworICAvLyBwcmVmaXguICBU
aGUgJ3R5cGVuYW1lJyBpcyByZXF1aXJlZCB0byBzYXRpc2Z5IHRoZSBjb21waWxlci4KKyAgdHlw
ZW5hbWUgVGVzdEZpeHR1cmU6Okxpc3QgdmFsdWVzOworICB2YWx1ZXMucHVzaF9iYWNrKG4pOwor
ICAuLi4KK30KKworVFlQRURfVEVTVChGb29UZXN0LCBIYXNQcm9wZXJ0eUEpIHsgLi4uIH0KK2Bg
YAorCitZb3UgY2FuIHNlZSBgc2FtcGxlcy9zYW1wbGU2X3VuaXR0ZXN0LmNjYCBmb3IgYSBjb21w
bGV0ZSBleGFtcGxlLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MgKHJlcXVpcmVz
IE1TVkMgOC4wIG9yIGFib3ZlKSwgTWFjOworc2luY2UgdmVyc2lvbiAxLjEuMC4KKworIyBUeXBl
LVBhcmFtZXRlcml6ZWQgVGVzdHMgIworCitfVHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzXyBhcmUg
bGlrZSB0eXBlZCB0ZXN0cywgZXhjZXB0IHRoYXQgdGhleQorZG9uJ3QgcmVxdWlyZSB5b3UgdG8g
a25vdyB0aGUgbGlzdCBvZiB0eXBlcyBhaGVhZCBvZiB0aW1lLiAgSW5zdGVhZCwKK3lvdSBjYW4g
ZGVmaW5lIHRoZSB0ZXN0IGxvZ2ljIGZpcnN0IGFuZCBpbnN0YW50aWF0ZSBpdCB3aXRoIGRpZmZl
cmVudAordHlwZSBsaXN0cyBsYXRlci4gIFlvdSBjYW4gZXZlbiBpbnN0YW50aWF0ZSBpdCBtb3Jl
IHRoYW4gb25jZSBpbiB0aGUKK3NhbWUgcHJvZ3JhbS4KKworSWYgeW91IGFyZSBkZXNpZ25pbmcg
YW4gaW50ZXJmYWNlIG9yIGNvbmNlcHQsIHlvdSBjYW4gZGVmaW5lIGEgc3VpdGUKK29mIHR5cGUt
cGFyYW1ldGVyaXplZCB0ZXN0cyB0byB2ZXJpZnkgcHJvcGVydGllcyB0aGF0IGFueSB2YWxpZAor
aW1wbGVtZW50YXRpb24gb2YgdGhlIGludGVyZmFjZS9jb25jZXB0IHNob3VsZCBoYXZlLiAgVGhl
biwgdGhlIGF1dGhvcgorb2YgZWFjaCBpbXBsZW1lbnRhdGlvbiBjYW4ganVzdCBpbnN0YW50aWF0
ZSB0aGUgdGVzdCBzdWl0ZSB3aXRoIGhpcwordHlwZSB0byB2ZXJpZnkgdGhhdCBpdCBjb25mb3Jt
cyB0byB0aGUgcmVxdWlyZW1lbnRzLCB3aXRob3V0IGhhdmluZyB0bword3JpdGUgc2ltaWxhciB0
ZXN0cyByZXBlYXRlZGx5LiAgSGVyZSdzIGFuIGV4YW1wbGU6CisKK0ZpcnN0LCBkZWZpbmUgYSBm
aXh0dXJlIGNsYXNzIHRlbXBsYXRlLCBhcyB3ZSBkaWQgd2l0aCB0eXBlZCB0ZXN0czoKKworYGBg
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5n
OjpUZXN0IHsKKyAgLi4uCit9OworYGBgCisKK05leHQsIGRlY2xhcmUgdGhhdCB5b3Ugd2lsbCBk
ZWZpbmUgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlOgorCitgYGAKK1RZUEVEX1RFU1Rf
Q0FTRV9QKEZvb1Rlc3QpOworYGBgCisKK1RoZSBgX1BgIHN1ZmZpeCBpcyBmb3IgInBhcmFtZXRl
cml6ZWQiIG9yICJwYXR0ZXJuIiwgd2hpY2hldmVyIHlvdQorcHJlZmVyIHRvIHRoaW5rLgorCitU
aGVuLCB1c2UgYFRZUEVEX1RFU1RfUCgpYCB0byBkZWZpbmUgYSB0eXBlLXBhcmFtZXRlcml6ZWQg
dGVzdC4gIFlvdQorY2FuIHJlcGVhdCB0aGlzIGFzIG1hbnkgdGltZXMgYXMgeW91IHdhbnQ6CisK
K2BgYAorVFlQRURfVEVTVF9QKEZvb1Rlc3QsIERvZXNCbGFoKSB7CisgIC8vIEluc2lkZSBhIHRl
c3QsIHJlZmVyIHRvIFR5cGVQYXJhbSB0byBnZXQgdGhlIHR5cGUgcGFyYW1ldGVyLgorICBUeXBl
UGFyYW0gbiA9IDA7CisgIC4uLgorfQorCitUWVBFRF9URVNUX1AoRm9vVGVzdCwgSGFzUHJvcGVy
dHlBKSB7IC4uLiB9CitgYGAKKworTm93IHRoZSB0cmlja3kgcGFydDogeW91IG5lZWQgdG8gcmVn
aXN0ZXIgYWxsIHRlc3QgcGF0dGVybnMgdXNpbmcgdGhlCitgUkVHSVNURVJfVFlQRURfVEVTVF9D
QVNFX1BgIG1hY3JvIGJlZm9yZSB5b3UgY2FuIGluc3RhbnRpYXRlIHRoZW0uCitUaGUgZmlyc3Qg
YXJndW1lbnQgb2YgdGhlIG1hY3JvIGlzIHRoZSB0ZXN0IGNhc2UgbmFtZTsgdGhlIHJlc3QgYXJl
Cit0aGUgbmFtZXMgb2YgdGhlIHRlc3RzIGluIHRoaXMgdGVzdCBjYXNlOgorCitgYGAKK1JFR0lT
VEVSX1RZUEVEX1RFU1RfQ0FTRV9QKEZvb1Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEb2VzQmxhaCwgSGFzUHJvcGVydHlBKTsKK2BgYAorCitGaW5hbGx5LCB5b3UgYXJlIGZyZWUg
dG8gaW5zdGFudGlhdGUgdGhlIHBhdHRlcm4gd2l0aCB0aGUgdHlwZXMgeW91Cit3YW50LiAgSWYg
eW91IHB1dCB0aGUgYWJvdmUgY29kZSBpbiBhIGhlYWRlciBmaWxlLCB5b3UgY2FuIGAjaW5jbHVk
ZWAKK2l0IGluIG11bHRpcGxlIEMrKyBzb3VyY2UgZmlsZXMgYW5kIGluc3RhbnRpYXRlIGl0IG11
bHRpcGxlIHRpbWVzLgorCitgYGAKK3R5cGVkZWYgOjp0ZXN0aW5nOjpUeXBlczxjaGFyLCBpbnQs
IHVuc2lnbmVkIGludD4gTXlUeXBlczsKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15
LCBGb29UZXN0LCBNeVR5cGVzKTsKK2BgYAorCitUbyBkaXN0aW5ndWlzaCBkaWZmZXJlbnQgaW5z
dGFuY2VzIG9mIHRoZSBwYXR0ZXJuLCB0aGUgZmlyc3QgYXJndW1lbnQKK3RvIHRoZSBgSU5TVEFO
VElBVEVfVFlQRURfVEVTVF9DQVNFX1BgIG1hY3JvIGlzIGEgcHJlZml4IHRoYXQgd2lsbCBiZQor
YWRkZWQgdG8gdGhlIGFjdHVhbCB0ZXN0IGNhc2UgbmFtZS4gIFJlbWVtYmVyIHRvIHBpY2sgdW5p
cXVlIHByZWZpeGVzCitmb3IgZGlmZmVyZW50IGluc3RhbmNlcy4KKworSW4gdGhlIHNwZWNpYWwg
Y2FzZSB3aGVyZSB0aGUgdHlwZSBsaXN0IGNvbnRhaW5zIG9ubHkgb25lIHR5cGUsIHlvdQorY2Fu
IHdyaXRlIHRoYXQgdHlwZSBkaXJlY3RseSB3aXRob3V0IGA6OnRlc3Rpbmc6OlR5cGVzPC4uLj5g
LCBsaWtlIHRoaXM6CisKK2BgYAorSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZv
b1Rlc3QsIGludCk7CitgYGAKKworWW91IGNhbiBzZWUgYHNhbXBsZXMvc2FtcGxlNl91bml0dGVz
dC5jY2AgZm9yIGEgY29tcGxldGUgZXhhbXBsZS4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBX
aW5kb3dzIChyZXF1aXJlcyBNU1ZDIDguMCBvciBhYm92ZSksIE1hYzsKK3NpbmNlIHZlcnNpb24g
MS4xLjAuCisKKyMgVGVzdGluZyBQcml2YXRlIENvZGUgIworCitJZiB5b3UgY2hhbmdlIHlvdXIg
c29mdHdhcmUncyBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiwgeW91ciB0ZXN0cyBzaG91bGQgbm90
CiticmVhayBhcyBsb25nIGFzIHRoZSBjaGFuZ2UgaXMgbm90IG9ic2VydmFibGUgYnkgdXNlcnMu
IFRoZXJlZm9yZSwgcGVyIHRoZQorX2JsYWNrLWJveCB0ZXN0aW5nIHByaW5jaXBsZV8sIG1vc3Qg
b2YgdGhlIHRpbWUgeW91IHNob3VsZCB0ZXN0IHlvdXIgY29kZQordGhyb3VnaCBpdHMgcHVibGlj
IGludGVyZmFjZXMuCisKK0lmIHlvdSBzdGlsbCBmaW5kIHlvdXJzZWxmIG5lZWRpbmcgdG8gdGVz
dCBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBjb2RlLAorY29uc2lkZXIgaWYgdGhlcmUncyBhIGJl
dHRlciBkZXNpZ24gdGhhdCB3b3VsZG4ndCByZXF1aXJlIHlvdSB0byBkbyBzby4gSWYgeW91Cith
YnNvbHV0ZWx5IGhhdmUgdG8gdGVzdCBub24tcHVibGljIGludGVyZmFjZSBjb2RlIHRob3VnaCwg
eW91IGNhbi4gVGhlcmUgYXJlCit0d28gY2FzZXMgdG8gY29uc2lkZXI6CisKKyAgKiBTdGF0aWMg
ZnVuY3Rpb25zIChfbm90XyB0aGUgc2FtZSBhcyBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9ucyEpIG9y
IHVubmFtZWQgbmFtZXNwYWNlcywgYW5kCisgICogUHJpdmF0ZSBvciBwcm90ZWN0ZWQgY2xhc3Mg
bWVtYmVycworCisjIyBTdGF0aWMgRnVuY3Rpb25zICMjCisKK0JvdGggc3RhdGljIGZ1bmN0aW9u
cyBhbmQgZGVmaW5pdGlvbnMvZGVjbGFyYXRpb25zIGluIGFuIHVubmFtZWQgbmFtZXNwYWNlIGFy
ZQorb25seSB2aXNpYmxlIHdpdGhpbiB0aGUgc2FtZSB0cmFuc2xhdGlvbiB1bml0LiBUbyB0ZXN0
IHRoZW0sIHlvdSBjYW4gYCNpbmNsdWRlYAordGhlIGVudGlyZSBgLmNjYCBmaWxlIGJlaW5nIHRl
c3RlZCBpbiB5b3VyIGAqX3Rlc3QuY2NgIGZpbGUuIChgI2luY2x1ZGVgaW5nIGAuY2NgCitmaWxl
cyBpcyBub3QgYSBnb29kIHdheSB0byByZXVzZSBjb2RlIC0geW91IHNob3VsZCBub3QgZG8gdGhp
cyBpbiBwcm9kdWN0aW9uCitjb2RlISkKKworSG93ZXZlciwgYSBiZXR0ZXIgYXBwcm9hY2ggaXMg
dG8gbW92ZSB0aGUgcHJpdmF0ZSBjb2RlIGludG8gdGhlCitgZm9vOjppbnRlcm5hbGAgbmFtZXNw
YWNlLCB3aGVyZSBgZm9vYCBpcyB0aGUgbmFtZXNwYWNlIHlvdXIgcHJvamVjdCBub3JtYWxseQor
dXNlcywgYW5kIHB1dCB0aGUgcHJpdmF0ZSBkZWNsYXJhdGlvbnMgaW4gYSBgKi1pbnRlcm5hbC5o
YCBmaWxlLiBZb3VyCitwcm9kdWN0aW9uIGAuY2NgIGZpbGVzIGFuZCB5b3VyIHRlc3RzIGFyZSBh
bGxvd2VkIHRvIGluY2x1ZGUgdGhpcyBpbnRlcm5hbAoraGVhZGVyLCBidXQgeW91ciBjbGllbnRz
IGFyZSBub3QuIFRoaXMgd2F5LCB5b3UgY2FuIGZ1bGx5IHRlc3QgeW91ciBpbnRlcm5hbAoraW1w
bGVtZW50YXRpb24gd2l0aG91dCBsZWFraW5nIGl0IHRvIHlvdXIgY2xpZW50cy4KKworIyMgUHJp
dmF0ZSBDbGFzcyBNZW1iZXJzICMjCisKK1ByaXZhdGUgY2xhc3MgbWVtYmVycyBhcmUgb25seSBh
Y2Nlc3NpYmxlIGZyb20gd2l0aGluIHRoZSBjbGFzcyBvciBieSBmcmllbmRzLgorVG8gYWNjZXNz
IGEgY2xhc3MnIHByaXZhdGUgbWVtYmVycywgeW91IGNhbiBkZWNsYXJlIHlvdXIgdGVzdCBmaXh0
dXJlIGFzIGEKK2ZyaWVuZCB0byB0aGUgY2xhc3MgYW5kIGRlZmluZSBhY2Nlc3NvcnMgaW4geW91
ciBmaXh0dXJlLiBUZXN0cyB1c2luZyB0aGUKK2ZpeHR1cmUgY2FuIHRoZW4gYWNjZXNzIHRoZSBw
cml2YXRlIG1lbWJlcnMgb2YgeW91ciBwcm9kdWN0aW9uIGNsYXNzIHZpYSB0aGUKK2FjY2Vzc29y
cyBpbiB0aGUgZml4dHVyZS4gTm90ZSB0aGF0IGV2ZW4gdGhvdWdoIHlvdXIgZml4dHVyZSBpcyBh
IGZyaWVuZCB0bworeW91ciBwcm9kdWN0aW9uIGNsYXNzLCB5b3VyIHRlc3RzIGFyZSBub3QgYXV0
b21hdGljYWxseSBmcmllbmRzIHRvIGl0LCBhcyB0aGV5CithcmUgdGVjaG5pY2FsbHkgZGVmaW5l
ZCBpbiBzdWItY2xhc3NlcyBvZiB0aGUgZml4dHVyZS4KKworQW5vdGhlciB3YXkgdG8gdGVzdCBw
cml2YXRlIG1lbWJlcnMgaXMgdG8gcmVmYWN0b3IgdGhlbSBpbnRvIGFuIGltcGxlbWVudGF0aW9u
CitjbGFzcywgd2hpY2ggaXMgdGhlbiBkZWNsYXJlZCBpbiBhIGAqLWludGVybmFsLmhgIGZpbGUu
IFlvdXIgY2xpZW50cyBhcmVuJ3QKK2FsbG93ZWQgdG8gaW5jbHVkZSB0aGlzIGhlYWRlciBidXQg
eW91ciB0ZXN0cyBjYW4uIFN1Y2ggaXMgY2FsbGVkIHRoZSBQaW1wbAorKFByaXZhdGUgSW1wbGVt
ZW50YXRpb24pIGlkaW9tLgorCitPciwgeW91IGNhbiBkZWNsYXJlIGFuIGluZGl2aWR1YWwgdGVz
dCBhcyBhIGZyaWVuZCBvZiB5b3VyIGNsYXNzIGJ5IGFkZGluZyB0aGlzCitsaW5lIGluIHRoZSBj
bGFzcyBib2R5OgorCitgYGAKK0ZSSUVORF9URVNUKFRlc3RDYXNlTmFtZSwgVGVzdE5hbWUpOwor
YGBgCisKK0ZvciBleGFtcGxlLAorYGBgCisvLyBmb28uaAorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
X3Byb2QuaD4KKworLy8gRGVmaW5lcyBGUklFTkRfVEVTVC4KK2NsYXNzIEZvbyB7CisgIC4uLgor
IHByaXZhdGU6CisgIEZSSUVORF9URVNUKEZvb1Rlc3QsIEJhclJldHVybnNaZXJvT25OdWxsKTsK
KyAgaW50IEJhcih2b2lkKiB4KTsKK307CisKKy8vIGZvb190ZXN0LmNjCisuLi4KK1RFU1QoRm9v
VGVzdCwgQmFyUmV0dXJuc1plcm9Pbk51bGwpIHsKKyAgRm9vIGZvbzsKKyAgRVhQRUNUX0VRKDAs
IGZvby5CYXIoTlVMTCkpOworICAvLyBVc2VzIEZvbydzIHByaXZhdGUgbWVtYmVyIEJhcigpLgor
fQorYGBgCisKK1BheSBzcGVjaWFsIGF0dGVudGlvbiB3aGVuIHlvdXIgY2xhc3MgaXMgZGVmaW5l
ZCBpbiBhIG5hbWVzcGFjZSwgYXMgeW91IHNob3VsZAorZGVmaW5lIHlvdXIgdGVzdCBmaXh0dXJl
cyBhbmQgdGVzdHMgaW4gdGhlIHNhbWUgbmFtZXNwYWNlIGlmIHlvdSB3YW50IHRoZW0gdG8KK2Jl
IGZyaWVuZHMgb2YgeW91ciBjbGFzcy4gRm9yIGV4YW1wbGUsIGlmIHRoZSBjb2RlIHRvIGJlIHRl
c3RlZCBsb29rcyBsaWtlOgorCitgYGAKK25hbWVzcGFjZSBteV9uYW1lc3BhY2UgeworCitjbGFz
cyBGb28geworICBmcmllbmQgY2xhc3MgRm9vVGVzdDsKKyAgRlJJRU5EX1RFU1QoRm9vVGVzdCwg
QmFyKTsKKyAgRlJJRU5EX1RFU1QoRm9vVGVzdCwgQmF6KTsKKyAgLi4uCisgIGRlZmluaXRpb24g
b2YgdGhlIGNsYXNzIEZvbworICAuLi4KK307CisKK30gIC8vIG5hbWVzcGFjZSBteV9uYW1lc3Bh
Y2UKK2BgYAorCitZb3VyIHRlc3QgY29kZSBzaG91bGQgYmUgc29tZXRoaW5nIGxpa2U6CisKK2Bg
YAorbmFtZXNwYWNlIG15X25hbWVzcGFjZSB7CitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVz
dGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICAuLi4KK307CisKK1RFU1RfRihGb29UZXN0LCBC
YXIpIHsgLi4uIH0KK1RFU1RfRihGb29UZXN0LCBCYXopIHsgLi4uIH0KKworfSAgLy8gbmFtZXNw
YWNlIG15X25hbWVzcGFjZQorYGBgCisKKyMgQ2F0Y2hpbmcgRmFpbHVyZXMgIworCitJZiB5b3Ug
YXJlIGJ1aWxkaW5nIGEgdGVzdGluZyB1dGlsaXR5IG9uIHRvcCBvZiBHb29nbGUgVGVzdCwgeW91
J2xsCit3YW50IHRvIHRlc3QgeW91ciB1dGlsaXR5LiAgV2hhdCBmcmFtZXdvcmsgd291bGQgeW91
IHVzZSB0byB0ZXN0IGl0PworR29vZ2xlIFRlc3QsIG9mIGNvdXJzZS4KKworVGhlIGNoYWxsZW5n
ZSBpcyB0byB2ZXJpZnkgdGhhdCB5b3VyIHRlc3RpbmcgdXRpbGl0eSByZXBvcnRzIGZhaWx1cmVz
Citjb3JyZWN0bHkuICBJbiBmcmFtZXdvcmtzIHRoYXQgcmVwb3J0IGEgZmFpbHVyZSBieSB0aHJv
d2luZyBhbgorZXhjZXB0aW9uLCB5b3UgY291bGQgY2F0Y2ggdGhlIGV4Y2VwdGlvbiBhbmQgYXNz
ZXJ0IG9uIGl0LiAgQnV0IEdvb2dsZQorVGVzdCBkb2Vzbid0IHVzZSBleGNlcHRpb25zLCBzbyBo
b3cgZG8gd2UgdGVzdCB0aGF0IGEgcGllY2Ugb2YgY29kZQorZ2VuZXJhdGVzIGFuIGV4cGVjdGVk
IGZhaWx1cmU/CisKK2A8Z3Rlc3QvZ3Rlc3Qtc3BpLmg+YCBjb250YWlucyBzb21lIGNvbnN0cnVj
dHMgdG8gZG8gdGhpcy4gIEFmdGVyCitgI2luY2x1ZGVgaW5nIHRoaXMgaGVhZGVyLCB5b3UgY2Fu
IHVzZQorCit8IGBFWFBFQ1RfRkFUQUxfRkFJTFVSRShgX3N0YXRlbWVudCwgc3Vic3RyaW5nX2Ap
O2AgfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LXwKKwordG8gYXNzZXJ0IHRoYXQgX3N0YXRlbWVudF8gZ2VuZXJhdGVzIGEgZmF0YWwgKGUuZy4g
YEFTU0VSVF8qYCkgZmFpbHVyZQord2hvc2UgbWVzc2FnZSBjb250YWlucyB0aGUgZ2l2ZW4gX3N1
YnN0cmluZ18sIG9yIHVzZQorCit8IGBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShgX3N0YXRlbWVu
dCwgc3Vic3RyaW5nX2ApO2AgfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLXwKKworaWYgeW91IGFyZSBleHBlY3RpbmcgYSBub24tZmF0YWwg
KGUuZy4gYEVYUEVDVF8qYCkgZmFpbHVyZS4KKworRm9yIHRlY2huaWNhbCByZWFzb25zLCB0aGVy
ZSBhcmUgc29tZSBjYXZlYXRzOgorCisgIDEuIFlvdSBjYW5ub3Qgc3RyZWFtIGEgZmFpbHVyZSBt
ZXNzYWdlIHRvIGVpdGhlciBtYWNyby4KKyAgMS4gX3N0YXRlbWVudF8gaW4gYEVYUEVDVF9GQVRB
TF9GQUlMVVJFKClgIGNhbm5vdCByZWZlcmVuY2UgbG9jYWwgbm9uLXN0YXRpYyB2YXJpYWJsZXMg
b3Igbm9uLXN0YXRpYyBtZW1iZXJzIG9mIGB0aGlzYCBvYmplY3QuCisgIDEuIF9zdGF0ZW1lbnRf
IGluIGBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpYCBjYW5ub3QgcmV0dXJuIGEgdmFsdWUuCisKK19O
b3RlOl8gR29vZ2xlIFRlc3QgaXMgZGVzaWduZWQgd2l0aCB0aHJlYWRzIGluIG1pbmQuICBPbmNl
IHRoZQorc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgaW4gYDxndGVzdC9pbnRlcm5hbC9ndGVz
dC1wb3J0Lmg+YCBoYXZlCitiZWVuIGltcGxlbWVudGVkLCBHb29nbGUgVGVzdCB3aWxsIGJlY29t
ZSB0aHJlYWQtc2FmZSwgbWVhbmluZyB0aGF0Cit5b3UgY2FuIHRoZW4gdXNlIGFzc2VydGlvbnMg
aW4gbXVsdGlwbGUgdGhyZWFkcyBjb25jdXJyZW50bHkuICBCZWZvcmUKKwordGhhdCwgaG93ZXZl
ciwgR29vZ2xlIFRlc3Qgb25seSBzdXBwb3J0cyBzaW5nbGUtdGhyZWFkZWQgdXNhZ2UuICBPbmNl
Cit0aHJlYWQtc2FmZSwgYEVYUEVDVF9GQVRBTF9GQUlMVVJFKClgIGFuZCBgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoKWAKK3dpbGwgY2FwdHVyZSBmYWlsdXJlcyBpbiB0aGUgY3VycmVudCB0aHJl
YWQgb25seS4gSWYgX3N0YXRlbWVudF8KK2NyZWF0ZXMgbmV3IHRocmVhZHMsIGZhaWx1cmVzIGlu
IHRoZXNlIHRocmVhZHMgd2lsbCBiZSBpZ25vcmVkLiAgSWYKK3lvdSB3YW50IHRvIGNhcHR1cmUg
ZmFpbHVyZXMgZnJvbSBhbGwgdGhyZWFkcyBpbnN0ZWFkLCB5b3Ugc2hvdWxkIHVzZQordGhlIGZv
bGxvd2luZyBtYWNyb3M6CisKK3wgYEVYUEVDVF9GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURT
KGBfc3RhdGVtZW50LCBzdWJzdHJpbmdfYCk7YCB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorfCBgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoYF9zdGF0ZW1lbnQsIHN1YnN0cmluZ19gKTtg
IHwKKworIyBHZXR0aW5nIHRoZSBDdXJyZW50IFRlc3QncyBOYW1lICMKKworU29tZXRpbWVzIGEg
ZnVuY3Rpb24gbWF5IG5lZWQgdG8ga25vdyB0aGUgbmFtZSBvZiB0aGUgY3VycmVudGx5IHJ1bm5p
bmcgdGVzdC4KK0ZvciBleGFtcGxlLCB5b3UgbWF5IGJlIHVzaW5nIHRoZSBgU2V0VXAoKWAgbWV0
aG9kIG9mIHlvdXIgdGVzdCBmaXh0dXJlIHRvIHNldAordGhlIGdvbGRlbiBmaWxlIG5hbWUgYmFz
ZWQgb24gd2hpY2ggdGVzdCBpcyBydW5uaW5nLiBUaGUgYDo6dGVzdGluZzo6VGVzdEluZm9gCitj
bGFzcyBoYXMgdGhpcyBpbmZvcm1hdGlvbjoKKworYGBgCituYW1lc3BhY2UgdGVzdGluZyB7CisK
K2NsYXNzIFRlc3RJbmZvIHsKKyBwdWJsaWM6CisgIC8vIFJldHVybnMgdGhlIHRlc3QgY2FzZSBu
YW1lIGFuZCB0aGUgdGVzdCBuYW1lLCByZXNwZWN0aXZlbHkuCisgIC8vCisgIC8vIERvIE5PVCBk
ZWxldGUgb3IgZnJlZSB0aGUgcmV0dXJuIHZhbHVlIC0gaXQncyBtYW5hZ2VkIGJ5IHRoZQorICAv
LyBUZXN0SW5mbyBjbGFzcy4KKyAgY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUoKSBjb25zdDsK
KyAgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0OworfTsKKworfSAgLy8gbmFtZXNwYWNlIHRlc3Rp
bmcKK2BgYAorCisKKz4gVG8gb2J0YWluIGEgYFRlc3RJbmZvYCBvYmplY3QgZm9yIHRoZSBjdXJy
ZW50bHkgcnVubmluZyB0ZXN0LCBjYWxsCitgY3VycmVudF90ZXN0X2luZm8oKWAgb24gdGhlIGBV
bml0VGVzdGAgc2luZ2xldG9uIG9iamVjdDoKKworYGBgCisvLyBHZXRzIGluZm9ybWF0aW9uIGFi
b3V0IHRoZSBjdXJyZW50bHkgcnVubmluZyB0ZXN0LgorLy8gRG8gTk9UIGRlbGV0ZSB0aGUgcmV0
dXJuZWQgb2JqZWN0IC0gaXQncyBtYW5hZ2VkIGJ5IHRoZSBVbml0VGVzdCBjbGFzcy4KK2NvbnN0
IDo6dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9CisgIDo6dGVzdGluZzo6VW5p
dFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7CitwcmludGYoIldlIGFy
ZSBpbiB0ZXN0ICVzIG9mIHRlc3QgY2FzZSAlcy5cbiIsCisgICAgICAgdGVzdF9pbmZvLT5uYW1l
KCksIHRlc3RfaW5mby0+dGVzdF9jYXNlX25hbWUoKSk7CitgYGAKKworYGN1cnJlbnRfdGVzdF9p
bmZvKClgIHJldHVybnMgYSBudWxsIHBvaW50ZXIgaWYgbm8gdGVzdCBpcyBydW5uaW5nLiBJbgor
cGFydGljdWxhciwgeW91IGNhbm5vdCBmaW5kIHRoZSB0ZXN0IGNhc2UgbmFtZSBpbiBgVGVzdENh
c2VTZXRVcCgpYCwKK2BUZXN0Q2FzZVRlYXJEb3duKClgICh3aGVyZSB5b3Uga25vdyB0aGUgdGVz
dCBjYXNlIG5hbWUgaW1wbGljaXRseSksIG9yCitmdW5jdGlvbnMgY2FsbGVkIGZyb20gdGhlbS4K
KworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMgRXh0ZW5kaW5nIEdv
b2dsZSBUZXN0IGJ5IEhhbmRsaW5nIFRlc3QgRXZlbnRzICMKKworR29vZ2xlIFRlc3QgcHJvdmlk
ZXMgYW4gPGI+ZXZlbnQgbGlzdGVuZXIgQVBJPC9iPiB0byBsZXQgeW91IHJlY2VpdmUKK25vdGlm
aWNhdGlvbnMgYWJvdXQgdGhlIHByb2dyZXNzIG9mIGEgdGVzdCBwcm9ncmFtIGFuZCB0ZXN0Citm
YWlsdXJlcy4gVGhlIGV2ZW50cyB5b3UgY2FuIGxpc3RlbiB0byBpbmNsdWRlIHRoZSBzdGFydCBh
bmQgZW5kIG9mCit0aGUgdGVzdCBwcm9ncmFtLCBhIHRlc3QgY2FzZSwgb3IgYSB0ZXN0IG1ldGhv
ZCwgYW1vbmcgb3RoZXJzLiBZb3UgbWF5Cit1c2UgdGhpcyBBUEkgdG8gYXVnbWVudCBvciByZXBs
YWNlIHRoZSBzdGFuZGFyZCBjb25zb2xlIG91dHB1dCwKK3JlcGxhY2UgdGhlIFhNTCBvdXRwdXQs
IG9yIHByb3ZpZGUgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBmb3JtIG9mCitvdXRwdXQsIHN1Y2gg
YXMgYSBHVUkgb3IgYSBkYXRhYmFzZS4gWW91IGNhbiBhbHNvIHVzZSB0ZXN0IGV2ZW50cyBhcwor
Y2hlY2twb2ludHMgdG8gaW1wbGVtZW50IGEgcmVzb3VyY2UgbGVhayBjaGVja2VyLCBmb3IgZXhh
bXBsZS4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHYxLjQu
MC4KKworIyMgRGVmaW5pbmcgRXZlbnQgTGlzdGVuZXJzICMjCisKK1RvIGRlZmluZSBhIGV2ZW50
IGxpc3RlbmVyLCB5b3Ugc3ViY2xhc3MgZWl0aGVyCitbdGVzdGluZzo6VGVzdEV2ZW50TGlzdGVu
ZXJdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCNMODU1KQorb3IgW3Rlc3Rpbmc6OkVtcHR5VGVz
dEV2ZW50TGlzdGVuZXJdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCNMOTA1KS4KK1RoZSBmb3Jt
ZXIgaXMgYW4gKGFic3RyYWN0KSBpbnRlcmZhY2UsIHdoZXJlIDxpPmVhY2ggcHVyZSB2aXJ0dWFs
IG1ldGhvZDxicj4KK2NhbiBiZSBvdmVycmlkZGVuIHRvIGhhbmRsZSBhIHRlc3QgZXZlbnQ8L2k+
IChGb3IgZXhhbXBsZSwgd2hlbiBhIHRlc3QKK3N0YXJ0cywgdGhlIGBPblRlc3RTdGFydCgpYCBt
ZXRob2Qgd2lsbCBiZSBjYWxsZWQuKS4gVGhlIGxhdHRlciBwcm92aWRlcworYW4gZW1wdHkgaW1w
bGVtZW50YXRpb24gb2YgYWxsIG1ldGhvZHMgaW4gdGhlIGludGVyZmFjZSwgc3VjaCB0aGF0IGEK
K3N1YmNsYXNzIG9ubHkgbmVlZHMgdG8gb3ZlcnJpZGUgdGhlIG1ldGhvZHMgaXQgY2FyZXMgYWJv
dXQuCisKK1doZW4gYW4gZXZlbnQgaXMgZmlyZWQsIGl0cyBjb250ZXh0IGlzIHBhc3NlZCB0byB0
aGUgaGFuZGxlciBmdW5jdGlvbgorYXMgYW4gYXJndW1lbnQuIFRoZSBmb2xsb3dpbmcgYXJndW1l
bnQgdHlwZXMgYXJlIHVzZWQ6CisgICogW1VuaXRUZXN0XSguLi9pbmNsdWRlL2d0ZXN0L2d0ZXN0
LmgjTDEwMDcpIHJlZmxlY3RzIHRoZSBzdGF0ZSBvZiB0aGUgZW50aXJlIHRlc3QgcHJvZ3JhbSwK
KyAgKiBbVGVzdENhc2VdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCNMNjg5KSBoYXMgaW5mb3Jt
YXRpb24gYWJvdXQgYSB0ZXN0IGNhc2UsIHdoaWNoIGNhbiBjb250YWluIG9uZSBvciBtb3JlIHRl
c3RzLAorICAqIFtUZXN0SW5mb10oLi4vaW5jbHVkZS9ndGVzdC9ndGVzdC5oI0w1OTkpIGNvbnRh
aW5zIHRoZSBzdGF0ZSBvZiBhIHRlc3QsIGFuZAorICAqIFtUZXN0UGFydFJlc3VsdF0oLi4vaW5j
bHVkZS9ndGVzdC9ndGVzdC10ZXN0LXBhcnQuaCNMNDIpIHJlcHJlc2VudHMgdGhlIHJlc3VsdCBv
ZiBhIHRlc3QgYXNzZXJ0aW9uLgorCitBbiBldmVudCBoYW5kbGVyIGZ1bmN0aW9uIGNhbiBleGFt
aW5lIHRoZSBhcmd1bWVudCBpdCByZWNlaXZlcyB0byBmaW5kCitvdXQgaW50ZXJlc3RpbmcgaW5m
b3JtYXRpb24gYWJvdXQgdGhlIGV2ZW50IGFuZCB0aGUgdGVzdCBwcm9ncmFtJ3MKK3N0YXRlLiAg
SGVyZSdzIGFuIGV4YW1wbGU6CisKK2BgYAorICBjbGFzcyBNaW5pbWFsaXN0UHJpbnRlciA6IHB1
YmxpYyA6OnRlc3Rpbmc6OkVtcHR5VGVzdEV2ZW50TGlzdGVuZXIgeworICAgIC8vIENhbGxlZCBi
ZWZvcmUgYSB0ZXN0IHN0YXJ0cy4KKyAgICB2aXJ0dWFsIHZvaWQgT25UZXN0U3RhcnQoY29uc3Qg
Ojp0ZXN0aW5nOjpUZXN0SW5mbyYgdGVzdF9pbmZvKSB7CisgICAgICBwcmludGYoIioqKiBUZXN0
ICVzLiVzIHN0YXJ0aW5nLlxuIiwKKyAgICAgICAgICAgICB0ZXN0X2luZm8udGVzdF9jYXNlX25h
bWUoKSwgdGVzdF9pbmZvLm5hbWUoKSk7CisgICAgfQorCisgICAgLy8gQ2FsbGVkIGFmdGVyIGEg
ZmFpbGVkIGFzc2VydGlvbiBvciBhIFNVQ0NFU1MoKS4KKyAgICB2aXJ0dWFsIHZvaWQgT25UZXN0
UGFydFJlc3VsdCgKKyAgICAgICAgY29uc3QgOjp0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdCYgdGVz
dF9wYXJ0X3Jlc3VsdCkgeworICAgICAgcHJpbnRmKCIlcyBpbiAlczolZFxuJXNcbiIsCisgICAg
ICAgICAgICAgdGVzdF9wYXJ0X3Jlc3VsdC5mYWlsZWQoKSA/ICIqKiogRmFpbHVyZSIgOiAiU3Vj
Y2VzcyIsCisgICAgICAgICAgICAgdGVzdF9wYXJ0X3Jlc3VsdC5maWxlX25hbWUoKSwKKyAgICAg
ICAgICAgICB0ZXN0X3BhcnRfcmVzdWx0LmxpbmVfbnVtYmVyKCksCisgICAgICAgICAgICAgdGVz
dF9wYXJ0X3Jlc3VsdC5zdW1tYXJ5KCkpOworICAgIH0KKworICAgIC8vIENhbGxlZCBhZnRlciBh
IHRlc3QgZW5kcy4KKyAgICB2aXJ0dWFsIHZvaWQgT25UZXN0RW5kKGNvbnN0IDo6dGVzdGluZzo6
VGVzdEluZm8mIHRlc3RfaW5mbykgeworICAgICAgcHJpbnRmKCIqKiogVGVzdCAlcy4lcyBlbmRp
bmcuXG4iLAorICAgICAgICAgICAgIHRlc3RfaW5mby50ZXN0X2Nhc2VfbmFtZSgpLCB0ZXN0X2lu
Zm8ubmFtZSgpKTsKKyAgICB9CisgIH07CitgYGAKKworIyMgVXNpbmcgRXZlbnQgTGlzdGVuZXJz
ICMjCisKK1RvIHVzZSB0aGUgZXZlbnQgbGlzdGVuZXIgeW91IGhhdmUgZGVmaW5lZCwgYWRkIGFu
IGluc3RhbmNlIG9mIGl0IHRvCit0aGUgR29vZ2xlIFRlc3QgZXZlbnQgbGlzdGVuZXIgbGlzdCAo
cmVwcmVzZW50ZWQgYnkgY2xhc3MKK1tUZXN0RXZlbnRMaXN0ZW5lcnNdKC4uL2luY2x1ZGUvZ3Rl
c3QvZ3Rlc3QuaCNMOTI5KQorLSBub3RlIHRoZSAicyIgYXQgdGhlIGVuZCBvZiB0aGUgbmFtZSkg
aW4geW91cgorYG1haW4oKWAgZnVuY3Rpb24sIGJlZm9yZSBjYWxsaW5nIGBSVU5fQUxMX1RFU1RT
KClgOgorYGBgCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKKyAgOjp0ZXN0aW5n
OjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisgIC8vIEdldHMgaG9sZCBvZiB0aGUgZXZl
bnQgbGlzdGVuZXIgbGlzdC4KKyAgOjp0ZXN0aW5nOjpUZXN0RXZlbnRMaXN0ZW5lcnMmIGxpc3Rl
bmVycyA9CisgICAgICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5saXN0ZW5l
cnMoKTsKKyAgLy8gQWRkcyBhIGxpc3RlbmVyIHRvIHRoZSBlbmQuICBHb29nbGUgVGVzdCB0YWtl
cyB0aGUgb3duZXJzaGlwLgorICBsaXN0ZW5lcnMuQXBwZW5kKG5ldyBNaW5pbWFsaXN0UHJpbnRl
cik7CisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CitgYGAKKworVGhlcmUncyBvbmx5IG9u
ZSBwcm9ibGVtOiB0aGUgZGVmYXVsdCB0ZXN0IHJlc3VsdCBwcmludGVyIGlzIHN0aWxsIGluCitl
ZmZlY3QsIHNvIGl0cyBvdXRwdXQgd2lsbCBtaW5nbGUgd2l0aCB0aGUgb3V0cHV0IGZyb20geW91
ciBtaW5pbWFsaXN0CitwcmludGVyLiBUbyBzdXBwcmVzcyB0aGUgZGVmYXVsdCBwcmludGVyLCBq
dXN0IHJlbGVhc2UgaXQgZnJvbSB0aGUKK2V2ZW50IGxpc3RlbmVyIGxpc3QgYW5kIGRlbGV0ZSBp
dC4gWW91IGNhbiBkbyBzbyBieSBhZGRpbmcgb25lIGxpbmU6CitgYGAKKyAgLi4uCisgIGRlbGV0
ZSBsaXN0ZW5lcnMuUmVsZWFzZShsaXN0ZW5lcnMuZGVmYXVsdF9yZXN1bHRfcHJpbnRlcigpKTsK
KyAgbGlzdGVuZXJzLkFwcGVuZChuZXcgTWluaW1hbGlzdFByaW50ZXIpOworICByZXR1cm4gUlVO
X0FMTF9URVNUUygpOworYGBgCisKK05vdywgc2l0IGJhY2sgYW5kIGVuam95IGEgY29tcGxldGVs
eSBkaWZmZXJlbnQgb3V0cHV0IGZyb20geW91cgordGVzdHMuIEZvciBtb3JlIGRldGFpbHMsIHlv
dSBjYW4gcmVhZCB0aGlzCitbc2FtcGxlXSguLi9zYW1wbGVzL3NhbXBsZTlfdW5pdHRlc3QuY2Mp
LgorCitZb3UgbWF5IGFwcGVuZCBtb3JlIHRoYW4gb25lIGxpc3RlbmVyIHRvIHRoZSBsaXN0LiBX
aGVuIGFuIGBPbipTdGFydCgpYAorb3IgYE9uVGVzdFBhcnRSZXN1bHQoKWAgZXZlbnQgaXMgZmly
ZWQsIHRoZSBsaXN0ZW5lcnMgd2lsbCByZWNlaXZlIGl0IGluCit0aGUgb3JkZXIgdGhleSBhcHBl
YXIgaW4gdGhlIGxpc3QgKHNpbmNlIG5ldyBsaXN0ZW5lcnMgYXJlIGFkZGVkIHRvCit0aGUgZW5k
IG9mIHRoZSBsaXN0LCB0aGUgZGVmYXVsdCB0ZXh0IHByaW50ZXIgYW5kIHRoZSBkZWZhdWx0IFhN
TAorZ2VuZXJhdG9yIHdpbGwgcmVjZWl2ZSB0aGUgZXZlbnQgZmlyc3QpLiBBbiBgT24qRW5kKClg
IGV2ZW50IHdpbGwgYmUKK3JlY2VpdmVkIGJ5IHRoZSBsaXN0ZW5lcnMgaW4gdGhlIF9yZXZlcnNl
XyBvcmRlci4gVGhpcyBhbGxvd3Mgb3V0cHV0IGJ5CitsaXN0ZW5lcnMgYWRkZWQgbGF0ZXIgdG8g
YmUgZnJhbWVkIGJ5IG91dHB1dCBmcm9tIGxpc3RlbmVycyBhZGRlZAorZWFybGllci4KKworIyMg
R2VuZXJhdGluZyBGYWlsdXJlcyBpbiBMaXN0ZW5lcnMgIyMKKworWW91IG1heSB1c2UgZmFpbHVy
ZS1yYWlzaW5nIG1hY3JvcyAoYEVYUEVDVF8qKClgLCBgQVNTRVJUXyooKWAsCitgRkFJTCgpYCwg
ZXRjKSB3aGVuIHByb2Nlc3NpbmcgYW4gZXZlbnQuIFRoZXJlIGFyZSBzb21lIHJlc3RyaWN0aW9u
czoKKworICAxLiBZb3UgY2Fubm90IGdlbmVyYXRlIGFueSBmYWlsdXJlIGluIGBPblRlc3RQYXJ0
UmVzdWx0KClgIChvdGhlcndpc2UgaXQgd2lsbCBjYXVzZSBgT25UZXN0UGFydFJlc3VsdCgpYCB0
byBiZSBjYWxsZWQgcmVjdXJzaXZlbHkpLgorICAxLiBBIGxpc3RlbmVyIHRoYXQgaGFuZGxlcyBg
T25UZXN0UGFydFJlc3VsdCgpYCBpcyBub3QgYWxsb3dlZCB0byBnZW5lcmF0ZSBhbnkgZmFpbHVy
ZS4KKworV2hlbiB5b3UgYWRkIGxpc3RlbmVycyB0byB0aGUgbGlzdGVuZXIgbGlzdCwgeW91IHNo
b3VsZCBwdXQgbGlzdGVuZXJzCit0aGF0IGhhbmRsZSBgT25UZXN0UGFydFJlc3VsdCgpYCBfYmVm
b3JlXyBsaXN0ZW5lcnMgdGhhdCBjYW4gZ2VuZXJhdGUKK2ZhaWx1cmVzLiBUaGlzIGVuc3VyZXMg
dGhhdCBmYWlsdXJlcyBnZW5lcmF0ZWQgYnkgdGhlIGxhdHRlciBhcmUKK2F0dHJpYnV0ZWQgdG8g
dGhlIHJpZ2h0IHRlc3QgYnkgdGhlIGZvcm1lci4KKworV2UgaGF2ZSBhIHNhbXBsZSBvZiBmYWls
dXJlLXJhaXNpbmcgbGlzdGVuZXIKK1toZXJlXSguLi9zYW1wbGVzL3NhbXBsZTEwX3VuaXR0ZXN0
LmNjKS4KKworIyBSdW5uaW5nIFRlc3QgUHJvZ3JhbXM6IEFkdmFuY2VkIE9wdGlvbnMgIworCitH
b29nbGUgVGVzdCB0ZXN0IHByb2dyYW1zIGFyZSBvcmRpbmFyeSBleGVjdXRhYmxlcy4gT25jZSBi
dWlsdCwgeW91IGNhbiBydW4KK3RoZW0gZGlyZWN0bHkgYW5kIGFmZmVjdCB0aGVpciBiZWhhdmlv
ciB2aWEgdGhlIGZvbGxvd2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMKK2FuZC9vciBjb21tYW5k
IGxpbmUgZmxhZ3MuIEZvciB0aGUgZmxhZ3MgdG8gd29yaywgeW91ciBwcm9ncmFtcyBtdXN0IGNh
bGwKK2A6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KClgIGJlZm9yZSBjYWxsaW5nIGBSVU5fQUxM
X1RFU1RTKClgLgorCitUbyBzZWUgYSBsaXN0IG9mIHN1cHBvcnRlZCBmbGFncyBhbmQgdGhlaXIg
dXNhZ2UsIHBsZWFzZSBydW4geW91ciB0ZXN0Citwcm9ncmFtIHdpdGggdGhlIGAtLWhlbHBgIGZs
YWcuICBZb3UgY2FuIGFsc28gdXNlIGAtaGAsIGAtP2AsIG9yIGAvP2AKK2ZvciBzaG9ydC4gIFRo
aXMgZmVhdHVyZSBpcyBhZGRlZCBpbiB2ZXJzaW9uIDEuMy4wLgorCitJZiBhbiBvcHRpb24gaXMg
c3BlY2lmaWVkIGJvdGggYnkgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgYW5kIGJ5IGEKK2ZsYWcs
IHRoZSBsYXR0ZXIgdGFrZXMgcHJlY2VkZW5jZS4gIE1vc3Qgb2YgdGhlIG9wdGlvbnMgY2FuIGFs
c28gYmUKK3NldC9yZWFkIGluIGNvZGU6IHRvIGFjY2VzcyB0aGUgdmFsdWUgb2YgY29tbWFuZCBs
aW5lIGZsYWcKK2AtLWd0ZXN0X2Zvb2AsIHdyaXRlIGA6OnRlc3Rpbmc6OkdURVNUX0ZMQUcoZm9v
KWAuICBBIGNvbW1vbiBwYXR0ZXJuIGlzCit0byBzZXQgdGhlIHZhbHVlIG9mIGEgZmxhZyBiZWZv
cmUgY2FsbGluZyBgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgpYAordG8gY2hhbmdlIHRoZSBk
ZWZhdWx0IHZhbHVlIG9mIHRoZSBmbGFnOgorYGBgCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpIHsKKyAgLy8gRGlzYWJsZXMgZWxhcHNlZCB0aW1lIGJ5IGRlZmF1bHQuCisgIDo6dGVz
dGluZzo6R1RFU1RfRkxBRyhwcmludF90aW1lKSA9IGZhbHNlOworCisgIC8vIFRoaXMgYWxsb3dz
IHRoZSB1c2VyIHRvIG92ZXJyaWRlIHRoZSBmbGFnIG9uIHRoZSBjb21tYW5kIGxpbmUuCisgIDo6
dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworCisgIHJldHVybiBSVU5fQUxM
X1RFU1RTKCk7Cit9CitgYGAKKworIyMgU2VsZWN0aW5nIFRlc3RzICMjCisKK1RoaXMgc2VjdGlv
biBzaG93cyB2YXJpb3VzIG9wdGlvbnMgZm9yIGNob29zaW5nIHdoaWNoIHRlc3RzIHRvIHJ1bi4K
KworIyMjIExpc3RpbmcgVGVzdCBOYW1lcyAjIyMKKworU29tZXRpbWVzIGl0IGlzIG5lY2Vzc2Fy
eSB0byBsaXN0IHRoZSBhdmFpbGFibGUgdGVzdHMgaW4gYSBwcm9ncmFtIGJlZm9yZQorcnVubmlu
ZyB0aGVtIHNvIHRoYXQgYSBmaWx0ZXIgbWF5IGJlIGFwcGxpZWQgaWYgbmVlZGVkLiBJbmNsdWRp
bmcgdGhlIGZsYWcKK2AtLWd0ZXN0X2xpc3RfdGVzdHNgIG92ZXJyaWRlcyBhbGwgb3RoZXIgZmxh
Z3MgYW5kIGxpc3RzIHRlc3RzIGluIHRoZSBmb2xsb3dpbmcKK2Zvcm1hdDoKK2BgYAorVGVzdENh
c2UxLgorICBUZXN0TmFtZTEKKyAgVGVzdE5hbWUyCitUZXN0Q2FzZTIuCisgIFRlc3ROYW1lCitg
YGAKKworTm9uZSBvZiB0aGUgdGVzdHMgbGlzdGVkIGFyZSBhY3R1YWxseSBydW4gaWYgdGhlIGZs
YWcgaXMgcHJvdmlkZWQuIFRoZXJlIGlzIG5vCitjb3JyZXNwb25kaW5nIGVudmlyb25tZW50IHZh
cmlhYmxlIGZvciB0aGlzIGZsYWcuCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywg
TWFjLgorCisjIyMgUnVubmluZyBhIFN1YnNldCBvZiB0aGUgVGVzdHMgIyMjCisKK0J5IGRlZmF1
bHQsIGEgR29vZ2xlIFRlc3QgcHJvZ3JhbSBydW5zIGFsbCB0ZXN0cyB0aGUgdXNlciBoYXMgZGVm
aW5lZC4KK1NvbWV0aW1lcywgeW91IHdhbnQgdG8gcnVuIG9ubHkgYSBzdWJzZXQgb2YgdGhlIHRl
c3RzIChlLmcuIGZvciBkZWJ1Z2dpbmcgb3IKK3F1aWNrbHkgdmVyaWZ5aW5nIGEgY2hhbmdlKS4g
SWYgeW91IHNldCB0aGUgYEdURVNUX0ZJTFRFUmAgZW52aXJvbm1lbnQgdmFyaWFibGUKK29yIHRo
ZSBgLS1ndGVzdF9maWx0ZXJgIGZsYWcgdG8gYSBmaWx0ZXIgc3RyaW5nLCBHb29nbGUgVGVzdCB3
aWxsIG9ubHkgcnVuIHRoZQordGVzdHMgd2hvc2UgZnVsbCBuYW1lcyAoaW4gdGhlIGZvcm0gb2Yg
YFRlc3RDYXNlTmFtZS5UZXN0TmFtZWApIG1hdGNoIHRoZQorZmlsdGVyLgorCitUaGUgZm9ybWF0
IG9mIGEgZmlsdGVyIGlzIGEgJ2A6YCctc2VwYXJhdGVkIGxpc3Qgb2Ygd2lsZGNhcmQgcGF0dGVy
bnMgKGNhbGxlZAordGhlIHBvc2l0aXZlIHBhdHRlcm5zKSBvcHRpb25hbGx5IGZvbGxvd2VkIGJ5
IGEgJ2AtYCcgYW5kIGFub3RoZXIKKydgOmAnLXNlcGFyYXRlZCBwYXR0ZXJuIGxpc3QgKGNhbGxl
ZCB0aGUgbmVnYXRpdmUgcGF0dGVybnMpLiBBIHRlc3QgbWF0Y2hlcyB0aGUKK2ZpbHRlciBpZiBh
bmQgb25seSBpZiBpdCBtYXRjaGVzIGFueSBvZiB0aGUgcG9zaXRpdmUgcGF0dGVybnMgYnV0IGRv
ZXMgbm90CittYXRjaCBhbnkgb2YgdGhlIG5lZ2F0aXZlIHBhdHRlcm5zLgorCitBIHBhdHRlcm4g
bWF5IGNvbnRhaW4gYCcqJ2AgKG1hdGNoZXMgYW55IHN0cmluZykgb3IgYCc/J2AgKG1hdGNoZXMg
YW55IHNpbmdsZQorY2hhcmFjdGVyKS4gRm9yIGNvbnZlbmllbmNlLCB0aGUgZmlsdGVyIGAnKi1O
ZWdhdGl2ZVBhdHRlcm5zJ2AgY2FuIGJlIGFsc28KK3dyaXR0ZW4gYXMgYCctTmVnYXRpdmVQYXR0
ZXJucydgLgorCitGb3IgZXhhbXBsZToKKworICAqIGAuL2Zvb190ZXN0YCBIYXMgbm8gZmxhZywg
YW5kIHRodXMgcnVucyBhbGwgaXRzIHRlc3RzLgorICAqIGAuL2Zvb190ZXN0IC0tZ3Rlc3RfZmls
dGVyPSpgIEFsc28gcnVucyBldmVyeXRoaW5nLCBkdWUgdG8gdGhlIHNpbmdsZSBtYXRjaC1ldmVy
eXRoaW5nIGAqYCB2YWx1ZS4KKyAgKiBgLi9mb29fdGVzdCAtLWd0ZXN0X2ZpbHRlcj1Gb29UZXN0
LipgIFJ1bnMgZXZlcnl0aGluZyBpbiB0ZXN0IGNhc2UgYEZvb1Rlc3RgLgorICAqIGAuL2Zvb190
ZXN0IC0tZ3Rlc3RfZmlsdGVyPSpOdWxsKjoqQ29uc3RydWN0b3IqYCBSdW5zIGFueSB0ZXN0IHdo
b3NlIGZ1bGwgbmFtZSBjb250YWlucyBlaXRoZXIgYCJOdWxsImAgb3IgYCJDb25zdHJ1Y3RvciJg
LgorICAqIGAuL2Zvb190ZXN0IC0tZ3Rlc3RfZmlsdGVyPS0qRGVhdGhUZXN0LipgIFJ1bnMgYWxs
IG5vbi1kZWF0aCB0ZXN0cy4KKyAgKiBgLi9mb29fdGVzdCAtLWd0ZXN0X2ZpbHRlcj1Gb29UZXN0
LiotRm9vVGVzdC5CYXJgIFJ1bnMgZXZlcnl0aGluZyBpbiB0ZXN0IGNhc2UgYEZvb1Rlc3RgIGV4
Y2VwdCBgRm9vVGVzdC5CYXJgLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1h
Yy4KKworIyMjIFRlbXBvcmFyaWx5IERpc2FibGluZyBUZXN0cyAjIyMKKworSWYgeW91IGhhdmUg
YSBicm9rZW4gdGVzdCB0aGF0IHlvdSBjYW5ub3QgZml4IHJpZ2h0IGF3YXksIHlvdSBjYW4gYWRk
IHRoZQorYERJU0FCTEVEX2AgcHJlZml4IHRvIGl0cyBuYW1lLiBUaGlzIHdpbGwgZXhjbHVkZSBp
dCBmcm9tIGV4ZWN1dGlvbi4gVGhpcyBpcworYmV0dGVyIHRoYW4gY29tbWVudGluZyBvdXQgdGhl
IGNvZGUgb3IgdXNpbmcgYCNpZiAwYCwgYXMgZGlzYWJsZWQgdGVzdHMgYXJlCitzdGlsbCBjb21w
aWxlZCAoYW5kIHRodXMgd29uJ3Qgcm90KS4KKworSWYgeW91IG5lZWQgdG8gZGlzYWJsZSBhbGwg
dGVzdHMgaW4gYSB0ZXN0IGNhc2UsIHlvdSBjYW4gZWl0aGVyIGFkZCBgRElTQUJMRURfYAordG8g
dGhlIGZyb250IG9mIHRoZSBuYW1lIG9mIGVhY2ggdGVzdCwgb3IgYWx0ZXJuYXRpdmVseSBhZGQg
aXQgdG8gdGhlIGZyb250IG9mCit0aGUgdGVzdCBjYXNlIG5hbWUuCisKK0ZvciBleGFtcGxlLCB0
aGUgZm9sbG93aW5nIHRlc3RzIHdvbid0IGJlIHJ1biBieSBHb29nbGUgVGVzdCwgZXZlbiB0aG91
Z2ggdGhleQord2lsbCBzdGlsbCBiZSBjb21waWxlZDoKKworYGBgCisvLyBUZXN0cyB0aGF0IEZv
byBkb2VzIEFiYy4KK1RFU1QoRm9vVGVzdCwgRElTQUJMRURfRG9lc0FiYykgeyAuLi4gfQorCitj
bGFzcyBESVNBQkxFRF9CYXJUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7IC4uLiB9Owor
CisvLyBUZXN0cyB0aGF0IEJhciBkb2VzIFh5ei4KK1RFU1RfRihESVNBQkxFRF9CYXJUZXN0LCBE
b2VzWHl6KSB7IC4uLiB9CitgYGAKKworX05vdGU6XyBUaGlzIGZlYXR1cmUgc2hvdWxkIG9ubHkg
YmUgdXNlZCBmb3IgdGVtcG9yYXJ5IHBhaW4tcmVsaWVmLiBZb3Ugc3RpbGwKK2hhdmUgdG8gZml4
IHRoZSBkaXNhYmxlZCB0ZXN0cyBhdCBhIGxhdGVyIGRhdGUuIEFzIGEgcmVtaW5kZXIsIEdvb2ds
ZSBUZXN0IHdpbGwKK3ByaW50IGEgYmFubmVyIHdhcm5pbmcgeW91IGlmIGEgdGVzdCBwcm9ncmFt
IGNvbnRhaW5zIGFueSBkaXNhYmxlZCB0ZXN0cy4KKworX1RpcDpfIFlvdSBjYW4gZWFzaWx5IGNv
dW50IHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMgeW91IGhhdmUKK3VzaW5nIGBncmVwYC4g
VGhpcyBudW1iZXIgY2FuIGJlIHVzZWQgYXMgYSBtZXRyaWMgZm9yIGltcHJvdmluZyB5b3VyCit0
ZXN0IHF1YWxpdHkuCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLgorCisj
IyMgVGVtcG9yYXJpbHkgRW5hYmxpbmcgRGlzYWJsZWQgVGVzdHMgIyMjCisKK1RvIGluY2x1ZGUg
W2Rpc2FibGVkIHRlc3RzXSgjdGVtcG9yYXJpbHktZGlzYWJsaW5nLXRlc3RzKSBpbiB0ZXN0Citl
eGVjdXRpb24sIGp1c3QgaW52b2tlIHRoZSB0ZXN0IHByb2dyYW0gd2l0aCB0aGUKK2AtLWd0ZXN0
X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzYCBmbGFnIG9yIHNldCB0aGUKK2BHVEVTVF9BTFNPX1JV
Tl9ESVNBQkxFRF9URVNUU2AgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYSB2YWx1ZSBvdGhlcgor
dGhhbiBgMGAuICBZb3UgY2FuIGNvbWJpbmUgdGhpcyB3aXRoIHRoZQorWy0tZ3Rlc3RcX2ZpbHRl
cl0oI3J1bm5pbmctYS1zdWJzZXQtb2YtdGhlLXRlc3RzKSBmbGFnIHRvIGZ1cnRoZXIgc2VsZWN0
Cit3aGljaCBkaXNhYmxlZCB0ZXN0cyB0byBydW4uCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwg
V2luZG93cywgTWFjOyBzaW5jZSB2ZXJzaW9uIDEuMy4wLgorCisjIyBSZXBlYXRpbmcgdGhlIFRl
c3RzICMjCisKK09uY2UgaW4gYSB3aGlsZSB5b3UnbGwgcnVuIGludG8gYSB0ZXN0IHdob3NlIHJl
c3VsdCBpcyBoaXQtb3ItbWlzcy4gUGVyaGFwcyBpdAord2lsbCBmYWlsIG9ubHkgMSUgb2YgdGhl
IHRpbWUsIG1ha2luZyBpdCByYXRoZXIgaGFyZCB0byByZXByb2R1Y2UgdGhlIGJ1ZyB1bmRlcgor
YSBkZWJ1Z2dlci4gVGhpcyBjYW4gYmUgYSBtYWpvciBzb3VyY2Ugb2YgZnJ1c3RyYXRpb24uCisK
K1RoZSBgLS1ndGVzdF9yZXBlYXRgIGZsYWcgYWxsb3dzIHlvdSB0byByZXBlYXQgYWxsIChvciBz
ZWxlY3RlZCkgdGVzdCBtZXRob2RzCitpbiBhIHByb2dyYW0gbWFueSB0aW1lcy4gSG9wZWZ1bGx5
LCBhIGZsYWt5IHRlc3Qgd2lsbCBldmVudHVhbGx5IGZhaWwgYW5kIGdpdmUKK3lvdSBhIGNoYW5j
ZSB0byBkZWJ1Zy4gSGVyZSdzIGhvdyB0byB1c2UgaXQ6CisKK3wgYCQgZm9vX3Rlc3QgLS1ndGVz
dF9yZXBlYXQ9MTAwMGAgfCBSZXBlYXQgZm9vXF90ZXN0IDEwMDAgdGltZXMgYW5kIGRvbid0IHN0
b3AgYXQgZmFpbHVyZXMuIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwK
K3wgYCQgZm9vX3Rlc3QgLS1ndGVzdF9yZXBlYXQ9LTFgICAgfCBBIG5lZ2F0aXZlIGNvdW50IG1l
YW5zIHJlcGVhdGluZyBmb3JldmVyLiAgICAgICAgICAgICAgIHwKK3wgYCQgZm9vX3Rlc3QgLS1n
dGVzdF9yZXBlYXQ9MTAwMCAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmVgIHwgUmVwZWF0IGZvb1xf
dGVzdCAxMDAwIHRpbWVzLCBzdG9wcGluZyBhdCB0aGUgZmlyc3QgZmFpbHVyZS4gVGhpcyBpcyBl
c3BlY2lhbGx5IHVzZWZ1bCB3aGVuIHJ1bm5pbmcgdW5kZXIgYSBkZWJ1Z2dlcjogd2hlbiB0aGUg
dGVzdGZhaWxzLCBpdCB3aWxsIGRyb3AgaW50byB0aGUgZGVidWdnZXIgYW5kIHlvdSBjYW4gdGhl
biBpbnNwZWN0IHZhcmlhYmxlcyBhbmQgc3RhY2tzLiB8Cit8IGAkIGZvb190ZXN0IC0tZ3Rlc3Rf
cmVwZWF0PTEwMDAgLS1ndGVzdF9maWx0ZXI9Rm9vQmFyYCB8IFJlcGVhdCB0aGUgdGVzdHMgd2hv
c2UgbmFtZSBtYXRjaGVzIHRoZSBmaWx0ZXIgMTAwMCB0aW1lcy4gfAorCitJZiB5b3VyIHRlc3Qg
cHJvZ3JhbSBjb250YWlucyBnbG9iYWwgc2V0LXVwL3RlYXItZG93biBjb2RlIHJlZ2lzdGVyZWQK
K3VzaW5nIGBBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoKWAsIGl0IHdpbGwgYmUgcmVwZWF0ZWQg
aW4gZWFjaAoraXRlcmF0aW9uIGFzIHdlbGwsIGFzIHRoZSBmbGFraW5lc3MgbWF5IGJlIGluIGl0
LiBZb3UgY2FuIGFsc28gc3BlY2lmeQordGhlIHJlcGVhdCBjb3VudCBieSBzZXR0aW5nIHRoZSBg
R1RFU1RfUkVQRUFUYCBlbnZpcm9ubWVudCB2YXJpYWJsZS4KKworX0F2YWlsYWJpbGl0eTpfIExp
bnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIFNodWZmbGluZyB0aGUgVGVzdHMgIyMKKworWW91IGNh
biBzcGVjaWZ5IHRoZSBgLS1ndGVzdF9zaHVmZmxlYCBmbGFnIChvciBzZXQgdGhlIGBHVEVTVF9T
SFVGRkxFYAorZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYDFgKSB0byBydW4gdGhlIHRlc3RzIGlu
IGEgcHJvZ3JhbSBpbiBhIHJhbmRvbQorb3JkZXIuIFRoaXMgaGVscHMgdG8gcmV2ZWFsIGJhZCBk
ZXBlbmRlbmNpZXMgYmV0d2VlbiB0ZXN0cy4KKworQnkgZGVmYXVsdCwgR29vZ2xlIFRlc3QgdXNl
cyBhIHJhbmRvbSBzZWVkIGNhbGN1bGF0ZWQgZnJvbSB0aGUgY3VycmVudAordGltZS4gVGhlcmVm
b3JlIHlvdSdsbCBnZXQgYSBkaWZmZXJlbnQgb3JkZXIgZXZlcnkgdGltZS4gVGhlIGNvbnNvbGUK
K291dHB1dCBpbmNsdWRlcyB0aGUgcmFuZG9tIHNlZWQgdmFsdWUsIHN1Y2ggdGhhdCB5b3UgY2Fu
IHJlcHJvZHVjZSBhbgorb3JkZXItcmVsYXRlZCB0ZXN0IGZhaWx1cmUgbGF0ZXIuIFRvIHNwZWNp
ZnkgdGhlIHJhbmRvbSBzZWVkCitleHBsaWNpdGx5LCB1c2UgdGhlIGAtLWd0ZXN0X3JhbmRvbV9z
ZWVkPVNFRURgIGZsYWcgKG9yIHNldCB0aGUKK2BHVEVTVF9SQU5ET01fU0VFRGAgZW52aXJvbm1l
bnQgdmFyaWFibGUpLCB3aGVyZSBgU0VFRGAgaXMgYW4gaW50ZWdlcgorYmV0d2VlbiAwIGFuZCA5
OTk5OS4gVGhlIHNlZWQgdmFsdWUgMCBpcyBzcGVjaWFsOiBpdCB0ZWxscyBHb29nbGUgVGVzdAor
dG8gZG8gdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgY2FsY3VsYXRpbmcgdGhlIHNlZWQgZnJvbSB0
aGUgY3VycmVudAordGltZS4KKworSWYgeW91IGNvbWJpbmUgdGhpcyB3aXRoIGAtLWd0ZXN0X3Jl
cGVhdD1OYCwgR29vZ2xlIFRlc3Qgd2lsbCBwaWNrIGEKK2RpZmZlcmVudCByYW5kb20gc2VlZCBh
bmQgcmUtc2h1ZmZsZSB0aGUgdGVzdHMgaW4gZWFjaCBpdGVyYXRpb24uCisKK19BdmFpbGFiaWxp
dHk6XyBMaW51eCwgV2luZG93cywgTWFjOyBzaW5jZSB2MS40LjAuCisKKyMjIENvbnRyb2xsaW5n
IFRlc3QgT3V0cHV0ICMjCisKK1RoaXMgc2VjdGlvbiB0ZWFjaGVzIGhvdyB0byB0d2VhayB0aGUg
d2F5IHRlc3QgcmVzdWx0cyBhcmUgcmVwb3J0ZWQuCisKKyMjIyBDb2xvcmVkIFRlcm1pbmFsIE91
dHB1dCAjIyMKKworR29vZ2xlIFRlc3QgY2FuIHVzZSBjb2xvcnMgaW4gaXRzIHRlcm1pbmFsIG91
dHB1dCB0byBtYWtlIGl0IGVhc2llciB0byBzcG90Cit0aGUgc2VwYXJhdGlvbiBiZXR3ZWVuIHRl
c3RzLCBhbmQgd2hldGhlciB0ZXN0cyBwYXNzZWQuCisKK1lvdSBjYW4gc2V0IHRoZSBHVEVTVFxf
Q09MT1IgZW52aXJvbm1lbnQgdmFyaWFibGUgb3Igc2V0IHRoZSBgLS1ndGVzdF9jb2xvcmAKK2Nv
bW1hbmQgbGluZSBmbGFnIHRvIGB5ZXNgLCBgbm9gLCBvciBgYXV0b2AgKHRoZSBkZWZhdWx0KSB0
byBlbmFibGUgY29sb3JzLAorZGlzYWJsZSBjb2xvcnMsIG9yIGxldCBHb29nbGUgVGVzdCBkZWNp
ZGUuIFdoZW4gdGhlIHZhbHVlIGlzIGBhdXRvYCwgR29vZ2xlCitUZXN0IHdpbGwgdXNlIGNvbG9y
cyBpZiBhbmQgb25seSBpZiB0aGUgb3V0cHV0IGdvZXMgdG8gYSB0ZXJtaW5hbCBhbmQgKG9uCitu
b24tV2luZG93cyBwbGF0Zm9ybXMpIHRoZSBgVEVSTWAgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMg
c2V0IHRvIGB4dGVybWAgb3IKK2B4dGVybS1jb2xvcmAuCisKK19BdmFpbGFiaWxpdHk6XyBMaW51
eCwgV2luZG93cywgTWFjLgorCisjIyMgU3VwcHJlc3NpbmcgdGhlIEVsYXBzZWQgVGltZSAjIyMK
KworQnkgZGVmYXVsdCwgR29vZ2xlIFRlc3QgcHJpbnRzIHRoZSB0aW1lIGl0IHRha2VzIHRvIHJ1
biBlYWNoIHRlc3QuICBUbworc3VwcHJlc3MgdGhhdCwgcnVuIHRoZSB0ZXN0IHByb2dyYW0gd2l0
aCB0aGUgYC0tZ3Rlc3RfcHJpbnRfdGltZT0wYAorY29tbWFuZCBsaW5lIGZsYWcuICBTZXR0aW5n
IHRoZSBgR1RFU1RfUFJJTlRfVElNRWAgZW52aXJvbm1lbnQKK3ZhcmlhYmxlIHRvIGAwYCBoYXMg
dGhlIHNhbWUgZWZmZWN0LgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4g
IChJbiBHb29nbGUgVGVzdCAxLjMuMCBhbmQgbG93ZXIsCit0aGUgZGVmYXVsdCBiZWhhdmlvciBp
cyB0aGF0IHRoZSBlbGFwc2VkIHRpbWUgaXMgKipub3QqKiBwcmludGVkLikKKworIyMjIEdlbmVy
YXRpbmcgYW4gWE1MIFJlcG9ydCAjIyMKKworR29vZ2xlIFRlc3QgY2FuIGVtaXQgYSBkZXRhaWxl
ZCBYTUwgcmVwb3J0IHRvIGEgZmlsZSBpbiBhZGRpdGlvbiB0byBpdHMgbm9ybWFsCit0ZXh0dWFs
IG91dHB1dC4gVGhlIHJlcG9ydCBjb250YWlucyB0aGUgZHVyYXRpb24gb2YgZWFjaCB0ZXN0LCBh
bmQgdGh1cyBjYW4KK2hlbHAgeW91IGlkZW50aWZ5IHNsb3cgdGVzdHMuCisKK1RvIGdlbmVyYXRl
IHRoZSBYTUwgcmVwb3J0LCBzZXQgdGhlIGBHVEVTVF9PVVRQVVRgIGVudmlyb25tZW50IHZhcmlh
YmxlIG9yIHRoZQorYC0tZ3Rlc3Rfb3V0cHV0YCBmbGFnIHRvIHRoZSBzdHJpbmcgYCJ4bWw6X3Bh
dGhfdG9fb3V0cHV0X2ZpbGVfImAsIHdoaWNoIHdpbGwKK2NyZWF0ZSB0aGUgZmlsZSBhdCB0aGUg
Z2l2ZW4gbG9jYXRpb24uIFlvdSBjYW4gYWxzbyBqdXN0IHVzZSB0aGUgc3RyaW5nCitgInhtbCJg
LCBpbiB3aGljaCBjYXNlIHRoZSBvdXRwdXQgY2FuIGJlIGZvdW5kIGluIHRoZSBgdGVzdF9kZXRh
aWwueG1sYCBmaWxlIGluCit0aGUgY3VycmVudCBkaXJlY3RvcnkuCisKK0lmIHlvdSBzcGVjaWZ5
IGEgZGlyZWN0b3J5IChmb3IgZXhhbXBsZSwgYCJ4bWw6b3V0cHV0L2RpcmVjdG9yeS8iYCBvbiBM
aW51eCBvcgorYCJ4bWw6b3V0cHV0XGRpcmVjdG9yeVwiYCBvbiBXaW5kb3dzKSwgR29vZ2xlIFRl
c3Qgd2lsbCBjcmVhdGUgdGhlIFhNTCBmaWxlIGluCit0aGF0IGRpcmVjdG9yeSwgbmFtZWQgYWZ0
ZXIgdGhlIHRlc3QgZXhlY3V0YWJsZSAoZS5nLiBgZm9vX3Rlc3QueG1sYCBmb3IgdGVzdAorcHJv
Z3JhbSBgZm9vX3Rlc3RgIG9yIGBmb29fdGVzdC5leGVgKS4gSWYgdGhlIGZpbGUgYWxyZWFkeSBl
eGlzdHMgKHBlcmhhcHMgbGVmdAorb3ZlciBmcm9tIGEgcHJldmlvdXMgcnVuKSwgR29vZ2xlIFRl
c3Qgd2lsbCBwaWNrIGEgZGlmZmVyZW50IG5hbWUgKGUuZy4KK2Bmb29fdGVzdF8xLnhtbGApIHRv
IGF2b2lkIG92ZXJ3cml0aW5nIGl0LgorCitUaGUgcmVwb3J0IHVzZXMgdGhlIGZvcm1hdCBkZXNj
cmliZWQgaGVyZS4gIEl0IGlzIGJhc2VkIG9uIHRoZQorYGp1bml0cmVwb3J0YCBBbnQgdGFzayBh
bmQgY2FuIGJlIHBhcnNlZCBieSBwb3B1bGFyIGNvbnRpbnVvdXMgYnVpbGQKK3N5c3RlbXMgbGlr
ZSBbSHVkc29uXShodHRwczovL2h1ZHNvbi5kZXYuamF2YS5uZXQvKS4gU2luY2UgdGhhdCBmb3Jt
YXQKK3dhcyBvcmlnaW5hbGx5IGludGVuZGVkIGZvciBKYXZhLCBhIGxpdHRsZSBpbnRlcnByZXRh
dGlvbiBpcyByZXF1aXJlZAordG8gbWFrZSBpdCBhcHBseSB0byBHb29nbGUgVGVzdCB0ZXN0cywg
YXMgc2hvd24gaGVyZToKKworYGBgCis8dGVzdHN1aXRlcyBuYW1lPSJBbGxUZXN0cyIgLi4uPgor
ICA8dGVzdHN1aXRlIG5hbWU9InRlc3RfY2FzZV9uYW1lIiAuLi4+CisgICAgPHRlc3RjYXNlIG5h
bWU9InRlc3RfbmFtZSIgLi4uPgorICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iLi4uIi8+CisgICAg
ICA8ZmFpbHVyZSBtZXNzYWdlPSIuLi4iLz4KKyAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9Ii4uLiIv
PgorICAgIDwvdGVzdGNhc2U+CisgIDwvdGVzdHN1aXRlPgorPC90ZXN0c3VpdGVzPgorYGBgCisK
KyAgKiBUaGUgcm9vdCBgPHRlc3RzdWl0ZXM+YCBlbGVtZW50IGNvcnJlc3BvbmRzIHRvIHRoZSBl
bnRpcmUgdGVzdCBwcm9ncmFtLgorICAqIGA8dGVzdHN1aXRlPmAgZWxlbWVudHMgY29ycmVzcG9u
ZCB0byBHb29nbGUgVGVzdCB0ZXN0IGNhc2VzLgorICAqIGA8dGVzdGNhc2U+YCBlbGVtZW50cyBj
b3JyZXNwb25kIHRvIEdvb2dsZSBUZXN0IHRlc3QgZnVuY3Rpb25zLgorCitGb3IgaW5zdGFuY2Us
IHRoZSBmb2xsb3dpbmcgcHJvZ3JhbQorCitgYGAKK1RFU1QoTWF0aFRlc3QsIEFkZGl0aW9uKSB7
IC4uLiB9CitURVNUKE1hdGhUZXN0LCBTdWJ0cmFjdGlvbikgeyAuLi4gfQorVEVTVChMb2dpY1Rl
c3QsIE5vbkNvbnRyYWRpY3Rpb24pIHsgLi4uIH0KK2BgYAorCitjb3VsZCBnZW5lcmF0ZSB0aGlz
IHJlcG9ydDoKKworYGBgCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pgor
PHRlc3RzdWl0ZXMgdGVzdHM9IjMiIGZhaWx1cmVzPSIxIiBlcnJvcnM9IjAiIHRpbWU9IjM1IiBu
YW1lPSJBbGxUZXN0cyI+CisgIDx0ZXN0c3VpdGUgbmFtZT0iTWF0aFRlc3QiIHRlc3RzPSIyIiBm
YWlsdXJlcz0iMSIqIGVycm9ycz0iMCIgdGltZT0iMTUiPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJB
ZGRpdGlvbiIgc3RhdHVzPSJydW4iIHRpbWU9IjciIGNsYXNzbmFtZT0iIj4KKyAgICAgIDxmYWls
dXJlIG1lc3NhZ2U9IlZhbHVlIG9mOiBhZGQoMSwgMSkmI3gwQTsgQWN0dWFsOiAzJiN4MEE7RXhw
ZWN0ZWQ6IDIiIHR5cGU9IiIvPgorICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iVmFsdWUgb2Y6IGFk
ZCgxLCAtMSkmI3gwQTsgQWN0dWFsOiAxJiN4MEE7RXhwZWN0ZWQ6IDAiIHR5cGU9IiIvPgorICAg
IDwvdGVzdGNhc2U+CisgICAgPHRlc3RjYXNlIG5hbWU9IlN1YnRyYWN0aW9uIiBzdGF0dXM9InJ1
biIgdGltZT0iNSIgY2xhc3NuYW1lPSIiPgorICAgIDwvdGVzdGNhc2U+CisgIDwvdGVzdHN1aXRl
PgorICA8dGVzdHN1aXRlIG5hbWU9IkxvZ2ljVGVzdCIgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBl
cnJvcnM9IjAiIHRpbWU9IjUiPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJOb25Db250cmFkaWN0aW9u
IiBzdGF0dXM9InJ1biIgdGltZT0iNSIgY2xhc3NuYW1lPSIiPgorICAgIDwvdGVzdGNhc2U+Cisg
IDwvdGVzdHN1aXRlPgorPC90ZXN0c3VpdGVzPgorYGBgCisKK1RoaW5ncyB0byBub3RlOgorCisg
ICogVGhlIGB0ZXN0c2AgYXR0cmlidXRlIG9mIGEgYDx0ZXN0c3VpdGVzPmAgb3IgYDx0ZXN0c3Vp
dGU+YCBlbGVtZW50IHRlbGxzIGhvdyBtYW55IHRlc3QgZnVuY3Rpb25zIHRoZSBHb29nbGUgVGVz
dCBwcm9ncmFtIG9yIHRlc3QgY2FzZSBjb250YWlucywgd2hpbGUgdGhlIGBmYWlsdXJlc2AgYXR0
cmlidXRlIHRlbGxzIGhvdyBtYW55IG9mIHRoZW0gZmFpbGVkLgorICAqIFRoZSBgdGltZWAgYXR0
cmlidXRlIGV4cHJlc3NlcyB0aGUgZHVyYXRpb24gb2YgdGhlIHRlc3QsIHRlc3QgY2FzZSwgb3Ig
ZW50aXJlIHRlc3QgcHJvZ3JhbSBpbiBtaWxsaXNlY29uZHMuCisgICogRWFjaCBgPGZhaWx1cmU+
YCBlbGVtZW50IGNvcnJlc3BvbmRzIHRvIGEgc2luZ2xlIGZhaWxlZCBHb29nbGUgVGVzdCBhc3Nl
cnRpb24uCisgICogU29tZSBKVW5pdCBjb25jZXB0cyBkb24ndCBhcHBseSB0byBHb29nbGUgVGVz
dCwgeWV0IHdlIGhhdmUgdG8gY29uZm9ybSB0byB0aGUgRFRELiBUaGVyZWZvcmUgeW91J2xsIHNl
ZSBzb21lIGR1bW15IGVsZW1lbnRzIGFuZCBhdHRyaWJ1dGVzIGluIHRoZSByZXBvcnQuIFlvdSBj
YW4gc2FmZWx5IGlnbm9yZSB0aGVzZSBwYXJ0cy4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBX
aW5kb3dzLCBNYWMuCisKKyMjIENvbnRyb2xsaW5nIEhvdyBGYWlsdXJlcyBBcmUgUmVwb3J0ZWQg
IyMKKworIyMjIFR1cm5pbmcgQXNzZXJ0aW9uIEZhaWx1cmVzIGludG8gQnJlYWstUG9pbnRzICMj
IworCitXaGVuIHJ1bm5pbmcgdGVzdCBwcm9ncmFtcyB1bmRlciBhIGRlYnVnZ2VyLCBpdCdzIHZl
cnkgY29udmVuaWVudCBpZiB0aGUKK2RlYnVnZ2VyIGNhbiBjYXRjaCBhbiBhc3NlcnRpb24gZmFp
bHVyZSBhbmQgYXV0b21hdGljYWxseSBkcm9wIGludG8gaW50ZXJhY3RpdmUKK21vZGUuIEdvb2ds
ZSBUZXN0J3MgX2JyZWFrLW9uLWZhaWx1cmVfIG1vZGUgc3VwcG9ydHMgdGhpcyBiZWhhdmlvci4K
KworVG8gZW5hYmxlIGl0LCBzZXQgdGhlIGBHVEVTVF9CUkVBS19PTl9GQUlMVVJFYCBlbnZpcm9u
bWVudCB2YXJpYWJsZSB0byBhIHZhbHVlCitvdGhlciB0aGFuIGAwYCAuIEFsdGVybmF0aXZlbHks
IHlvdSBjYW4gdXNlIHRoZSBgLS1ndGVzdF9icmVha19vbl9mYWlsdXJlYAorY29tbWFuZCBsaW5l
IGZsYWcuCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMgU3Vw
cHJlc3NpbmcgUG9wLXVwcyBDYXVzZWQgYnkgRXhjZXB0aW9ucyAjIyMKKworT24gV2luZG93cywg
R29vZ2xlIFRlc3QgbWF5IGJlIHVzZWQgd2l0aCBleGNlcHRpb25zIGVuYWJsZWQuIEV2ZW4gd2hl
bgorZXhjZXB0aW9ucyBhcmUgZGlzYWJsZWQsIGFuIGFwcGxpY2F0aW9uIGNhbiBzdGlsbCB0aHJv
dyBzdHJ1Y3R1cmVkIGV4Y2VwdGlvbnMKKyhTRUgncykuIElmIGEgdGVzdCB0aHJvd3MgYW4gZXhj
ZXB0aW9uLCBieSBkZWZhdWx0IEdvb2dsZSBUZXN0IGRvZXNuJ3QgdHJ5IHRvCitjYXRjaCBpdC4g
SW5zdGVhZCwgeW91J2xsIHNlZSBhIHBvcC11cCBkaWFsb2csIGF0IHdoaWNoIHBvaW50IHlvdSBj
YW4gYXR0YWNoCit0aGUgcHJvY2VzcyB0byBhIGRlYnVnZ2VyIGFuZCBlYXNpbHkgZmluZCBvdXQg
d2hhdCB3ZW50IHdyb25nLgorCitIb3dldmVyLCBpZiB5b3UgZG9uJ3Qgd2FudCB0byBzZWUgdGhl
IHBvcC11cHMgKGZvciBleGFtcGxlLCBpZiB5b3UgcnVuIHRoZQordGVzdHMgaW4gYSBiYXRjaCBq
b2IpLCBzZXQgdGhlIGBHVEVTVF9DQVRDSF9FWENFUFRJT05TYCBlbnZpcm9ubWVudCB2YXJpYWJs
ZSB0bworYSBub24tIGAwYCB2YWx1ZSwgb3IgdXNlIHRoZSBgLS1ndGVzdF9jYXRjaF9leGNlcHRp
b25zYCBmbGFnLiBHb29nbGUgVGVzdCBub3cKK2NhdGNoZXMgYWxsIHRlc3QtdGhyb3duIGV4Y2Vw
dGlvbnMgYW5kIGxvZ3MgdGhlbSBhcyBmYWlsdXJlcy4KKworX0F2YWlsYWJpbGl0eTpfIFdpbmRv
d3MuIGBHVEVTVF9DQVRDSF9FWENFUFRJT05TYCBhbmQKK2AtLWd0ZXN0X2NhdGNoX2V4Y2VwdGlv
bnNgIGhhdmUgbm8gZWZmZWN0IG9uIEdvb2dsZSBUZXN0J3MgYmVoYXZpb3Igb24gTGludXggb3IK
K01hYywgZXZlbiBpZiBleGNlcHRpb25zIGFyZSBlbmFibGVkLiBJdCBpcyBwb3NzaWJsZSB0byBh
ZGQgc3VwcG9ydCBmb3IgY2F0Y2hpbmcKK2V4Y2VwdGlvbnMgb24gdGhlc2UgcGxhdGZvcm1zLCBi
dXQgaXQgaXMgbm90IGltcGxlbWVudGVkIHlldC4KKworIyMjIExldHRpbmcgQW5vdGhlciBUZXN0
aW5nIEZyYW1ld29yayBEcml2ZSAjIyMKKworSWYgeW91IHdvcmsgb24gYSBwcm9qZWN0IHRoYXQg
aGFzIGFscmVhZHkgYmVlbiB1c2luZyBhbm90aGVyIHRlc3RpbmcKK2ZyYW1ld29yayBhbmQgaXMg
bm90IHJlYWR5IHRvIGNvbXBsZXRlbHkgc3dpdGNoIHRvIEdvb2dsZSBUZXN0IHlldCwKK3lvdSBj
YW4gZ2V0IG11Y2ggb2YgR29vZ2xlIFRlc3QncyBiZW5lZml0IGJ5IHVzaW5nIGl0cyBhc3NlcnRp
b25zIGluCit5b3VyIGV4aXN0aW5nIHRlc3RzLiAgSnVzdCBjaGFuZ2UgeW91ciBgbWFpbigpYCBm
dW5jdGlvbiB0byBsb29rCitsaWtlOgorCitgYGAKKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgor
CitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKKyAgOjp0ZXN0aW5nOjpHVEVTVF9G
TEFHKHRocm93X29uX2ZhaWx1cmUpID0gdHJ1ZTsKKyAgLy8gSW1wb3J0YW50OiBHb29nbGUgVGVz
dCBtdXN0IGJlIGluaXRpYWxpemVkLgorICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdj
LCBhcmd2KTsKKworICAuLi4gd2hhdGV2ZXIgeW91ciBleGlzdGluZyB0ZXN0aW5nIGZyYW1ld29y
ayByZXF1aXJlcyAuLi4KK30KK2BgYAorCitXaXRoIHRoYXQsIHlvdSBjYW4gdXNlIEdvb2dsZSBU
ZXN0IGFzc2VydGlvbnMgaW4gYWRkaXRpb24gdG8gdGhlCituYXRpdmUgYXNzZXJ0aW9ucyB5b3Vy
IHRlc3RpbmcgZnJhbWV3b3JrIHByb3ZpZGVzLCBmb3IgZXhhbXBsZToKKworYGBgCit2b2lkIFRl
c3RGb29Eb2VzQmFyKCkgeworICBGb28gZm9vOworICBFWFBFQ1RfTEUoZm9vLkJhcigxKSwgMTAw
KTsgICAgIC8vIEEgR29vZ2xlIFRlc3QgYXNzZXJ0aW9uLgorICBDUFBVTklUX0FTU0VSVChmb28u
SXNFbXB0eSgpKTsgIC8vIEEgbmF0aXZlIGFzc2VydGlvbi4KK30KK2BgYAorCitJZiBhIEdvb2ds
ZSBUZXN0IGFzc2VydGlvbiBmYWlscywgaXQgd2lsbCBwcmludCBhbiBlcnJvciBtZXNzYWdlIGFu
ZAordGhyb3cgYW4gZXhjZXB0aW9uLCB3aGljaCB3aWxsIGJlIHRyZWF0ZWQgYXMgYSBmYWlsdXJl
IGJ5IHlvdXIgaG9zdAordGVzdGluZyBmcmFtZXdvcmsuICBJZiB5b3UgY29tcGlsZSB5b3VyIGNv
ZGUgd2l0aCBleGNlcHRpb25zIGRpc2FibGVkLAorYSBmYWlsZWQgR29vZ2xlIFRlc3QgYXNzZXJ0
aW9uIHdpbGwgaW5zdGVhZCBleGl0IHlvdXIgcHJvZ3JhbSB3aXRoIGEKK25vbi16ZXJvIGNvZGUs
IHdoaWNoIHdpbGwgYWxzbyBzaWduYWwgYSB0ZXN0IGZhaWx1cmUgdG8geW91ciB0ZXN0CitydW5u
ZXIuCisKK0lmIHlvdSBkb24ndCB3cml0ZSBgOjp0ZXN0aW5nOjpHVEVTVF9GTEFHKHRocm93X29u
X2ZhaWx1cmUpID0gdHJ1ZTtgIGluCit5b3VyIGBtYWluKClgLCB5b3UgY2FuIGFsdGVybmF0aXZl
bHkgZW5hYmxlIHRoaXMgZmVhdHVyZSBieSBzcGVjaWZ5aW5nCit0aGUgYC0tZ3Rlc3RfdGhyb3df
b25fZmFpbHVyZWAgZmxhZyBvbiB0aGUgY29tbWFuZC1saW5lIG9yIHNldHRpbmcgdGhlCitgR1RF
U1RfVEhST1dfT05fRkFJTFVSRWAgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYSBub24temVybyB2
YWx1ZS4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHYxLjMu
MC4KKworIyMgRGlzdHJpYnV0aW5nIFRlc3QgRnVuY3Rpb25zIHRvIE11bHRpcGxlIE1hY2hpbmVz
ICMjCisKK0lmIHlvdSBoYXZlIG1vcmUgdGhhbiBvbmUgbWFjaGluZSB5b3UgY2FuIHVzZSB0byBy
dW4gYSB0ZXN0IHByb2dyYW0sCit5b3UgbWlnaHQgd2FudCB0byBydW4gdGhlIHRlc3QgZnVuY3Rp
b25zIGluIHBhcmFsbGVsIGFuZCBnZXQgdGhlCityZXN1bHQgZmFzdGVyLiAgV2UgY2FsbCB0aGlz
IHRlY2huaXF1ZSBfc2hhcmRpbmdfLCB3aGVyZSBlYWNoIG1hY2hpbmUKK2lzIGNhbGxlZCBhIF9z
aGFyZF8uCisKK0dvb2dsZSBUZXN0IGlzIGNvbXBhdGlibGUgd2l0aCB0ZXN0IHNoYXJkaW5nLiAg
VG8gdGFrZSBhZHZhbnRhZ2Ugb2YKK3RoaXMgZmVhdHVyZSwgeW91ciB0ZXN0IHJ1bm5lciAobm90
IHBhcnQgb2YgR29vZ2xlIFRlc3QpIG5lZWRzIHRvIGRvCit0aGUgZm9sbG93aW5nOgorCisgIDEu
IEFsbG9jYXRlIGEgbnVtYmVyIG9mIG1hY2hpbmVzIChzaGFyZHMpIHRvIHJ1biB0aGUgdGVzdHMu
CisgIDEuIE9uIGVhY2ggc2hhcmQsIHNldCB0aGUgYEdURVNUX1RPVEFMX1NIQVJEU2AgZW52aXJv
bm1lbnQgdmFyaWFibGUgdG8gdGhlIHRvdGFsIG51bWJlciBvZiBzaGFyZHMuICBJdCBtdXN0IGJl
IHRoZSBzYW1lIGZvciBhbGwgc2hhcmRzLgorICAxLiBPbiBlYWNoIHNoYXJkLCBzZXQgdGhlIGBH
VEVTVF9TSEFSRF9JTkRFWGAgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gdGhlIGluZGV4IG9mIHRo
ZSBzaGFyZC4gIERpZmZlcmVudCBzaGFyZHMgbXVzdCBiZSBhc3NpZ25lZCBkaWZmZXJlbnQgaW5k
aWNlcywgd2hpY2ggbXVzdCBiZSBpbiB0aGUgcmFuZ2UgYFswLCBHVEVTVF9UT1RBTF9TSEFSRFMg
LSAxXWAuCisgIDEuIFJ1biB0aGUgc2FtZSB0ZXN0IHByb2dyYW0gb24gYWxsIHNoYXJkcy4gIFdo
ZW4gR29vZ2xlIFRlc3Qgc2VlcyB0aGUgYWJvdmUgdHdvIGVudmlyb25tZW50IHZhcmlhYmxlcywg
aXQgd2lsbCBzZWxlY3QgYSBzdWJzZXQgb2YgdGhlIHRlc3QgZnVuY3Rpb25zIHRvIHJ1bi4gIEFj
cm9zcyBhbGwgc2hhcmRzLCBlYWNoIHRlc3QgZnVuY3Rpb24gaW4gdGhlIHByb2dyYW0gd2lsbCBi
ZSBydW4gZXhhY3RseSBvbmNlLgorICAxLiBXYWl0IGZvciBhbGwgc2hhcmRzIHRvIGZpbmlzaCwg
dGhlbiBjb2xsZWN0IGFuZCByZXBvcnQgdGhlIHJlc3VsdHMuCisKK1lvdXIgcHJvamVjdCBtYXkg
aGF2ZSB0ZXN0cyB0aGF0IHdlcmUgd3JpdHRlbiB3aXRob3V0IEdvb2dsZSBUZXN0IGFuZAordGh1
cyBkb24ndCB1bmRlcnN0YW5kIHRoaXMgcHJvdG9jb2wuICBJbiBvcmRlciBmb3IgeW91ciB0ZXN0
IHJ1bm5lciB0bworZmlndXJlIG91dCB3aGljaCB0ZXN0IHN1cHBvcnRzIHNoYXJkaW5nLCBpdCBj
YW4gc2V0IHRoZSBlbnZpcm9ubWVudAordmFyaWFibGUgYEdURVNUX1NIQVJEX1NUQVRVU19GSUxF
YCB0byBhIG5vbi1leGlzdGVudCBmaWxlIHBhdGguICBJZiBhCit0ZXN0IHByb2dyYW0gc3VwcG9y
dHMgc2hhcmRpbmcsIGl0IHdpbGwgY3JlYXRlIHRoaXMgZmlsZSB0bworYWNrbm93bGVkZ2UgdGhl
IGZhY3QgKHRoZSBhY3R1YWwgY29udGVudHMgb2YgdGhlIGZpbGUgYXJlIG5vdAoraW1wb3J0YW50
IGF0IHRoaXMgdGltZTsgYWx0aG91Z2ggd2UgbWF5IHN0aWNrIHNvbWUgdXNlZnVsIGluZm9ybWF0
aW9uCitpbiBpdCBpbiB0aGUgZnV0dXJlLik7IG90aGVyd2lzZSBpdCB3aWxsIG5vdCBjcmVhdGUg
aXQuCisKK0hlcmUncyBhbiBleGFtcGxlIHRvIG1ha2UgaXQgY2xlYXIuICBTdXBwb3NlIHlvdSBo
YXZlIGEgdGVzdCBwcm9ncmFtCitgZm9vX3Rlc3RgIHRoYXQgY29udGFpbnMgdGhlIGZvbGxvd2lu
ZyA1IHRlc3QgZnVuY3Rpb25zOgorYGBgCitURVNUKEEsIFYpCitURVNUKEEsIFcpCitURVNUKEIs
IFgpCitURVNUKEIsIFkpCitURVNUKEIsIFopCitgYGAKK2FuZCB5b3UgaGF2ZSAzIG1hY2hpbmVz
IGF0IHlvdXIgZGlzcG9zYWwuICBUbyBydW4gdGhlIHRlc3QgZnVuY3Rpb25zIGluCitwYXJhbGxl
bCwgeW91IHdvdWxkIHNldCBgR1RFU1RfVE9UQUxfU0hBUkRTYCB0byAzIG9uIGFsbCBtYWNoaW5l
cywgYW5kCitzZXQgYEdURVNUX1NIQVJEX0lOREVYYCB0byAwLCAxLCBhbmQgMiBvbiB0aGUgbWFj
aGluZXMgcmVzcGVjdGl2ZWx5LgorVGhlbiB5b3Ugd291bGQgcnVuIHRoZSBzYW1lIGBmb29fdGVz
dGAgb24gZWFjaCBtYWNoaW5lLgorCitHb29nbGUgVGVzdCByZXNlcnZlcyB0aGUgcmlnaHQgdG8g
Y2hhbmdlIGhvdyB0aGUgd29yayBpcyBkaXN0cmlidXRlZAorYWNyb3NzIHRoZSBzaGFyZHMsIGJ1
dCBoZXJlJ3Mgb25lIHBvc3NpYmxlIHNjZW5hcmlvOgorCisgICogTWFjaGluZSAjMCBydW5zIGBB
LlZgIGFuZCBgQi5YYC4KKyAgKiBNYWNoaW5lICMxIHJ1bnMgYEEuV2AgYW5kIGBCLllgLgorICAq
IE1hY2hpbmUgIzIgcnVucyBgQi5aYC4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dz
LCBNYWM7IHNpbmNlIHZlcnNpb24gMS4zLjAuCisKKyMgRnVzaW5nIEdvb2dsZSBUZXN0IFNvdXJj
ZSBGaWxlcyAjCisKK0dvb2dsZSBUZXN0J3MgaW1wbGVtZW50YXRpb24gY29uc2lzdHMgb2YgfjMw
IGZpbGVzIChleGNsdWRpbmcgaXRzIG93bgordGVzdHMpLiAgU29tZXRpbWVzIHlvdSBtYXkgd2Fu
dCB0aGVtIHRvIGJlIHBhY2thZ2VkIHVwIGluIHR3byBmaWxlcyAoYQorYC5oYCBhbmQgYSBgLmNj
YCkgaW5zdGVhZCwgc3VjaCB0aGF0IHlvdSBjYW4gZWFzaWx5IGNvcHkgdGhlbSB0byBhIG5ldwor
bWFjaGluZSBhbmQgc3RhcnQgaGFja2luZyB0aGVyZS4gIEZvciB0aGlzIHdlIHByb3ZpZGUgYW4g
ZXhwZXJpbWVudGFsCitQeXRob24gc2NyaXB0IGBmdXNlX2d0ZXN0X2ZpbGVzLnB5YCBpbiB0aGUg
YHNjcmlwdHMvYCBkaXJlY3RvcnkgKHNpbmNlIHJlbGVhc2UgMS4zLjApLgorQXNzdW1pbmcgeW91
IGhhdmUgUHl0aG9uIDIuNCBvciBhYm92ZSBpbnN0YWxsZWQgb24geW91ciBtYWNoaW5lLCBqdXN0
CitnbyB0byB0aGF0IGRpcmVjdG9yeSBhbmQgcnVuCitgYGAKK3B5dGhvbiBmdXNlX2d0ZXN0X2Zp
bGVzLnB5IE9VVFBVVF9ESVIKK2BgYAorCithbmQgeW91IHNob3VsZCBzZWUgYW4gYE9VVFBVVF9E
SVJgIGRpcmVjdG9yeSBiZWluZyBjcmVhdGVkIHdpdGggZmlsZXMKK2BndGVzdC9ndGVzdC5oYCBh
bmQgYGd0ZXN0L2d0ZXN0LWFsbC5jY2AgaW4gaXQuICBUaGVzZSBmaWxlcyBjb250YWluCitldmVy
eXRoaW5nIHlvdSBuZWVkIHRvIHVzZSBHb29nbGUgVGVzdC4gIEp1c3QgY29weSB0aGVtIHRvIGFu
eXdoZXJlCit5b3Ugd2FudCBhbmQgeW91IGFyZSByZWFkeSB0byB3cml0ZSB0ZXN0cy4gIFlvdSBj
YW4gdXNlIHRoZQorW3NjcnB0cy90ZXN0L01ha2VmaWxlXSguLi9zY3JpcHRzL3Rlc3QvTWFrZWZp
bGUpCitmaWxlIGFzIGFuIGV4YW1wbGUgb24gaG93IHRvIGNvbXBpbGUgeW91ciB0ZXN0cyBhZ2Fp
bnN0IHRoZW0uCisKKyMgV2hlcmUgdG8gR28gZnJvbSBIZXJlICMKKworQ29uZ3JhdHVsYXRpb25z
ISBZb3UndmUgbm93IGxlYXJuZWQgbW9yZSBhZHZhbmNlZCBHb29nbGUgVGVzdCB0b29scyBhbmQg
YXJlCityZWFkeSB0byB0YWNrbGUgbW9yZSBjb21wbGV4IHRlc3RpbmcgdGFza3MuIElmIHlvdSB3
YW50IHRvIGRpdmUgZXZlbiBkZWVwZXIsIHlvdQorY2FuIHJlYWQgdGhlIFtGQVFdKFYxXzVfRkFR
Lm1kKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfNV9Eb2N1bWVudGF0aW9uLm1k
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZXRlc3QvZG9jcy9WMV81X0RvY3VtZW50YXRpb24ubWQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDZi
YmEyZWM4NmU2YzZhNDgxYmRiZWFhNWFmMWNmZGJlZTNhZmEyMAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L2RvY3MvVjFfNV9Eb2N1bWVudGF0aW9uLm1kCkBAIC0wLDAgKzEsMTIgQEAK
K1RoaXMgcGFnZSBsaXN0cyBhbGwgb2ZmaWNpYWwgZG9jdW1lbnRhdGlvbiB3aWtpIHBhZ2VzIGZv
ciBHb29nbGUgVGVzdCAqKjEuNS4wKiogLS0gKippZiB5b3UgdXNlIGEgZGlmZmVyZW50IHZlcnNp
b24gb2YgR29vZ2xlIFRlc3QsIG1ha2Ugc3VyZSB0byByZWFkIHRoZSBkb2N1bWVudGF0aW9uIGZv
ciB0aGF0IHZlcnNpb24gaW5zdGVhZC4qKgorCisgICogW1ByaW1lcl0oVjFfNV9QcmltZXIubWQp
IC0tIHN0YXJ0IGhlcmUgaWYgeW91IGFyZSBuZXcgdG8gR29vZ2xlIFRlc3QuCisgICogW1NhbXBs
ZXNdKFNhbXBsZXMubWQpIC0tIGxlYXJuIGZyb20gZXhhbXBsZXMuCisgICogW0FkdmFuY2VkR3Vp
ZGVdKFYxXzVfQWR2YW5jZWRHdWlkZS5tZCkgLS0gbGVhcm4gbW9yZSBhYm91dCBHb29nbGUgVGVz
dC4KKyAgKiBbWGNvZGVHdWlkZV0oVjFfNV9YY29kZUd1aWRlLm1kKSAtLSBob3cgdG8gdXNlIEdv
b2dsZSBUZXN0IGluIFhjb2RlIG9uIE1hYy4KKyAgKiBbRnJlcXVlbnRseS1Bc2tlZCBRdWVzdGlv
bnNdKFYxXzVfRkFRLm1kKSAtLSBjaGVjayBoZXJlIGJlZm9yZSBhc2tpbmcgYSBxdWVzdGlvbiBv
biB0aGUgbWFpbGluZyBsaXN0LgorCitUbyBjb250cmlidXRlIGNvZGUgdG8gR29vZ2xlIFRlc3Qs
IHJlYWQ6CisKKyAgKiBEZXZHdWlkZSAtLSByZWFkIHRoaXMgX2JlZm9yZV8gd3JpdGluZyB5b3Vy
IGZpcnN0IHBhdGNoLgorICAqIFtQdW1wTWFudWFsXShWMV81X1B1bXBNYW51YWwubWQpIC0tIGhv
dyB3ZSBnZW5lcmF0ZSBzb21lIG9mIEdvb2dsZSBUZXN0J3Mgc291cmNlIGZpbGVzLgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfNV9G
QVEubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1YxXzVfRkFRLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4NzBhZmYw
MDA3ZjJjNmEyYzUzZmZhYzIxYmUwYWUwNTFkMjQzZWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xldGVzdC9kb2NzL1YxXzVfRkFRLm1kCkBAIC0wLDAgKzEsODg2IEBACisKKworSWYgeW91IGNh
bm5vdCBmaW5kIHRoZSBhbnN3ZXIgdG8geW91ciBxdWVzdGlvbiBoZXJlLCBhbmQgeW91IGhhdmUg
cmVhZAorW1ByaW1lcl0oVjFfNV9QcmltZXIubWQpIGFuZCBbQWR2YW5jZWRHdWlkZV0oVjFfNV9B
ZHZhbmNlZEd1aWRlLm1kKSwgc2VuZCBpdCB0bworZ29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVn
cm91cHMuY29tLgorCisjIyBXaHkgc2hvdWxkIEkgdXNlIEdvb2dsZSBUZXN0IGluc3RlYWQgb2Yg
bXkgZmF2b3JpdGUgQysrIHRlc3RpbmcgZnJhbWV3b3JrPyAjIworCitGaXJzdCwgbGV0J3Mgc2F5
IGNsZWFybHkgdGhhdCB3ZSBkb24ndCB3YW50IHRvIGdldCBpbnRvIHRoZSBkZWJhdGUgb2YKK3do
aWNoIEMrKyB0ZXN0aW5nIGZyYW1ld29yayBpcyAqKnRoZSBiZXN0KiouICBUaGVyZSBleGlzdCBt
YW55IGZpbmUKK2ZyYW1ld29ya3MgZm9yIHdyaXRpbmcgQysrIHRlc3RzLCBhbmQgd2UgaGF2ZSB0
cmVtZW5kb3VzIHJlc3BlY3QgZm9yCit0aGUgZGV2ZWxvcGVycyBhbmQgdXNlcnMgb2YgdGhlbS4g
IFdlIGRvbid0IHRoaW5rIHRoZXJlIGlzIChvciB3aWxsCitiZSkgYSBzaW5nbGUgYmVzdCBmcmFt
ZXdvcmsgLSB5b3UgaGF2ZSB0byBwaWNrIHRoZSByaWdodCB0b29sIGZvciB0aGUKK3BhcnRpY3Vs
YXIgdGFzayB5b3UgYXJlIHRhY2tsaW5nLgorCitXZSBjcmVhdGVkIEdvb2dsZSBUZXN0IGJlY2F1
c2Ugd2UgY291bGRuJ3QgZmluZCB0aGUgcmlnaHQgY29tYmluYXRpb24KK29mIGZlYXR1cmVzIGFu
ZCBjb252ZW5pZW5jZXMgaW4gYW4gZXhpc3RpbmcgZnJhbWV3b3JrIHRvIHNhdGlzZnkgX291cl8K
K25lZWRzLiAgVGhlIGZvbGxvd2luZyBpcyBhIGxpc3Qgb2YgdGhpbmdzIHRoYXQgX3dlXyBsaWtl
IGFib3V0IEdvb2dsZQorVGVzdC4gIFdlIGRvbid0IGNsYWltIHRoZW0gdG8gYmUgdW5pcXVlIHRv
IEdvb2dsZSBUZXN0IC0gcmF0aGVyLCB0aGUKK2NvbWJpbmF0aW9uIG9mIHRoZW0gbWFrZXMgR29v
Z2xlIFRlc3QgdGhlIGNob2ljZSBmb3IgdXMuICBXZSBob3BlIHRoaXMKK2xpc3QgY2FuIGhlbHAg
eW91IGRlY2lkZSB3aGV0aGVyIGl0IGlzIGZvciB5b3UgdG9vLgorCisgICogR29vZ2xlIFRlc3Qg
aXMgZGVzaWduZWQgdG8gYmUgcG9ydGFibGUuICBJdCB3b3JrcyB3aGVyZSBtYW55IFNUTCB0eXBl
cyAoZS5nLiBgc3RkOjpzdHJpbmdgIGFuZCBgc3RkOjp2ZWN0b3JgKSBkb24ndCBjb21waWxlLiAg
SXQgZG9lc24ndCByZXF1aXJlIGV4Y2VwdGlvbnMgb3IgUlRUSS4gIEFzIGEgcmVzdWx0LCBpdCBy
dW5zIG9uIExpbnV4LCBNYWMgT1MgWCwgV2luZG93cyBhbmQgc2V2ZXJhbCBlbWJlZGRlZCBvcGVy
YXRpbmcgc3lzdGVtcy4KKyAgKiBOb25mYXRhbCBhc3NlcnRpb25zIChgRVhQRUNUXypgKSBoYXZl
IHByb3ZlbiB0byBiZSBncmVhdCB0aW1lIHNhdmVycywgYXMgdGhleSBhbGxvdyBhIHRlc3QgdG8g
cmVwb3J0IG11bHRpcGxlIGZhaWx1cmVzIGluIGEgc2luZ2xlIGVkaXQtY29tcGlsZS10ZXN0IGN5
Y2xlLgorICAqIEl0J3MgZWFzeSB0byB3cml0ZSBhc3NlcnRpb25zIHRoYXQgZ2VuZXJhdGUgaW5m
b3JtYXRpdmUgbWVzc2FnZXM6IHlvdSBqdXN0IHVzZSB0aGUgc3RyZWFtIHN5bnRheCB0byBhcHBl
bmQgYW55IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24sIGUuZy4gYEFTU0VSVF9FUSg1LCBGb28oaSkp
IDw8ICIgd2hlcmUgaSA9ICIgPDwgaTtgLiAgSXQgZG9lc24ndCByZXF1aXJlIGEgbmV3IHNldCBv
ZiBtYWNyb3Mgb3Igc3BlY2lhbCBmdW5jdGlvbnMuCisgICogR29vZ2xlIFRlc3QgYXV0b21hdGlj
YWxseSBkZXRlY3RzIHlvdXIgdGVzdHMgYW5kIGRvZXNuJ3QgcmVxdWlyZSB5b3UgdG8gZW51bWVy
YXRlIHRoZW0gaW4gb3JkZXIgdG8gcnVuIHRoZW0uCisgICogTm8gZnJhbWV3b3JrIGNhbiBhbnRp
Y2lwYXRlIGFsbCB5b3VyIG5lZWRzLCBzbyBHb29nbGUgVGVzdCBwcm92aWRlcyBgRVhQRUNUX1BS
RUQqYCB0byBtYWtlIGl0IGVhc3kgdG8gZXh0ZW5kIHlvdXIgYXNzZXJ0aW9uIHZvY2FidWxhcnku
ICBGb3IgYSBuaWNlciBzeW50YXgsIHlvdSBjYW4gZGVmaW5lIHlvdXIgb3duIGFzc2VydGlvbiBt
YWNyb3MgdHJpdmlhbGx5IGluIHRlcm1zIG9mIGBFWFBFQ1RfUFJFRCpgLgorICAqIERlYXRoIHRl
c3RzIGFyZSBwcmV0dHkgaGFuZHkgZm9yIGVuc3VyaW5nIHRoYXQgeW91ciBhc3NlcnRzIGluIHBy
b2R1Y3Rpb24gY29kZSBhcmUgdHJpZ2dlcmVkIGJ5IHRoZSByaWdodCBjb25kaXRpb25zLgorICAq
IGBTQ09QRURfVFJBQ0VgIGhlbHBzIHlvdSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIGFuIGFz
c2VydGlvbiBmYWlsdXJlIHdoZW4gaXQgY29tZXMgZnJvbSBpbnNpZGUgYSBzdWItcm91dGluZSBv
ciBsb29wLgorICAqIFlvdSBjYW4gZGVjaWRlIHdoaWNoIHRlc3RzIHRvIHJ1biB1c2luZyBuYW1l
IHBhdHRlcm5zLiAgVGhpcyBzYXZlcyB0aW1lIHdoZW4geW91IHdhbnQgdG8gcXVpY2tseSByZXBy
b2R1Y2UgYSB0ZXN0IGZhaWx1cmUuCisKKyMjIEhvdyBkbyBJIGdlbmVyYXRlIDY0LWJpdCBiaW5h
cmllcyBvbiBXaW5kb3dzICh1c2luZyBWaXN1YWwgU3R1ZGlvIDIwMDgpPyAjIworCisoQW5zd2Vy
ZWQgYnkgVHJldm9yIFJvYmluc29uKQorCitMb2FkIHRoZSBzdXBwbGllZCBWaXN1YWwgU3R1ZGlv
IHNvbHV0aW9uIGZpbGUsIGVpdGhlciBgbXN2Y1xndGVzdC1tZC5zbG5gIG9yCitgbXN2Y1xndGVz
dC5zbG5gLiBHbyB0aHJvdWdoIHRoZSBtaWdyYXRpb24gd2l6YXJkIHRvIG1pZ3JhdGUgdGhlCitz
b2x1dGlvbiBhbmQgcHJvamVjdCBmaWxlcyB0byBWaXN1YWwgU3R1ZGlvIDIwMDguIFNlbGVjdAor
YENvbmZpZ3VyYXRpb24gTWFuYWdlci4uLmAgZnJvbSB0aGUgYEJ1aWxkYCBtZW51LiBTZWxlY3Qg
YDxOZXcuLi4+YCBmcm9tCit0aGUgYEFjdGl2ZSBzb2x1dGlvbiBwbGF0Zm9ybWAgZHJvcGRvd24u
ICBTZWxlY3QgYHg2NGAgZnJvbSB0aGUgbmV3CitwbGF0Zm9ybSBkcm9wZG93biwgbGVhdmUgYENv
cHkgc2V0dGluZ3MgZnJvbWAgc2V0IHRvIGBXaW4zMmAgYW5kCitgQ3JlYXRlIG5ldyBwcm9qZWN0
IHBsYXRmb3Jtc2AgY2hlY2tlZCwgdGhlbiBjbGljayBgT0tgLiBZb3Ugbm93IGhhdmUKK2BXaW4z
MmAgYW5kIGB4NjRgIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb25zLCBzZWxlY3RhYmxlIGZyb20gdGhl
CitgU3RhbmRhcmRgIHRvb2xiYXIsIHdoaWNoIGFsbG93IHlvdSB0byB0b2dnbGUgYmV0d2VlbiBi
dWlsZGluZyAzMi1iaXQgb3IKKzY0LWJpdCBiaW5hcmllcyAob3IgYm90aCBhdCBvbmNlIHVzaW5n
IEJhdGNoIEJ1aWxkKS4KKworSW4gb3JkZXIgdG8gcHJldmVudCBidWlsZCBvdXRwdXQgZmlsZXMg
ZnJvbSBvdmVyd3JpdGluZyBvbmUgYW5vdGhlciwKK3lvdSdsbCBuZWVkIHRvIGNoYW5nZSB0aGUg
YEludGVybWVkaWF0ZSBEaXJlY3RvcnlgIHNldHRpbmdzIGZvciB0aGUKK25ld2x5IGNyZWF0ZWQg
cGxhdGZvcm0gY29uZmlndXJhdGlvbiBhY3Jvc3MgYWxsIHRoZSBwcm9qZWN0cy4gVG8gZG8KK3Ro
aXMsIG11bHRpLXNlbGVjdCAoZS5nLiB1c2luZyBzaGlmdC1jbGljaykgYWxsIHByb2plY3RzIChi
dXQgbm90IHRoZQorc29sdXRpb24pIGluIHRoZSBgU29sdXRpb24gRXhwbG9yZXJgLiBSaWdodC1j
bGljayBvbmUgb2YgdGhlbSBhbmQKK3NlbGVjdCBgUHJvcGVydGllc2AuIEluIHRoZSBsZWZ0IHBh
bmUsIHNlbGVjdCBgQ29uZmlndXJhdGlvbiBQcm9wZXJ0aWVzYCwKK2FuZCBmcm9tIHRoZSBgQ29u
ZmlndXJhdGlvbmAgZHJvcGRvd24sIHNlbGVjdCBgQWxsIENvbmZpZ3VyYXRpb25zYC4KK01ha2Ug
c3VyZSB0aGUgc2VsZWN0ZWQgcGxhdGZvcm0gaXMgYHg2NGAuIEZvciB0aGUKK2BJbnRlcm1lZGlh
dGUgRGlyZWN0b3J5YCBzZXR0aW5nLCBjaGFuZ2UgdGhlIHZhbHVlIGZyb20KK2AkKFBsYXRmb3Jt
TmFtZSlcJChDb25maWd1cmF0aW9uTmFtZSlgIHRvCitgJChPdXREaXIpXCQoUHJvamVjdE5hbWUp
YC4gQ2xpY2sgYE9LYCBhbmQgdGhlbiBidWlsZCB0aGUKK3NvbHV0aW9uLiBXaGVuIHRoZSBidWls
ZCBpcyBjb21wbGV0ZSwgdGhlIDY0LWJpdCBiaW5hcmllcyB3aWxsIGJlIGluCit0aGUgYG1zdmNc
eDY0XERlYnVnYCBkaXJlY3RvcnkuCisKKyMjIENhbiBJIHVzZSBHb29nbGUgVGVzdCBvbiBNaW5H
Vz8gIyMKKworV2UgaGF2ZW4ndCB0ZXN0ZWQgdGhpcyBvdXJzZWx2ZXMsIGJ1dCBQZXIgQWJyYWhh
bXNlbiByZXBvcnRlZCB0aGF0IGhlCit3YXMgYWJsZSB0byBjb21waWxlIGFuZCBpbnN0YWxsIEdv
b2dsZSBUZXN0IHN1Y2Nlc3NmdWxseSB3aGVuIHVzaW5nCitNaW5HVyBmcm9tIEN5Z3dpbi4gIFlv
dSdsbCBuZWVkIHRvIGNvbmZpZ3VyZSBpdCB3aXRoOgorCitgUEFUSC9UTy9jb25maWd1cmUgQ0M9
ImdjYyAtbW5vLWN5Z3dpbiIgQ1hYPSJnKysgLW1uby1jeWd3aW4iYAorCitZb3Ugc2hvdWxkIGJl
IGFibGUgdG8gcmVwbGFjZSB0aGUgYC1tbm8tY3lnd2luYCBvcHRpb24gd2l0aCBkaXJlY3QgbGlu
a3MKK3RvIHRoZSByZWFsIE1pbkdXIGJpbmFyaWVzLCBidXQgd2UgaGF2ZW4ndCB0cmllZCB0aGF0
LgorCitDYXZlYXRzOgorCisgICogVGhlcmUgYXJlIG1hbnkgd2FybmluZ3Mgd2hlbiBjb21waWxp
bmcuCisgICogYG1ha2UgY2hlY2tgIHdpbGwgcHJvZHVjZSBzb21lIGVycm9ycyBhcyBub3QgYWxs
IHRlc3RzIGZvciBHb29nbGUgVGVzdCBpdHNlbGYgYXJlIGNvbXBhdGlibGUgd2l0aCBNaW5HVy4K
KworV2UgYWxzbyBoYXZlIHJlcG9ydHMgb24gc3VjY2Vzc2Z1bCBjcm9zcyBjb21waWxhdGlvbiBv
ZiBHb29nbGUgVGVzdCBNaW5HVyBiaW5hcmllcyBvbiBMaW51eCB1c2luZyBbdGhlc2UgaW5zdHJ1
Y3Rpb25zXShodHRwOi8vd2lraS53eHdpZGdldHMub3JnL0Nyb3NzLUNvbXBpbGluZ19VbmRlcl9M
aW51eCNDcm9zcy1jb21waWxpbmdfdW5kZXJfTGludXhfZm9yX01TX1dpbmRvd3MpIG9uIHRoZSBX
eFdpZGdldHMgc2l0ZS4KKworUGxlYXNlIGNvbnRhY3QgYGdvb2dsZXRlc3RmcmFtZXdvcmtAZ29v
Z2xlZ3JvdXBzLmNvbWAgaWYgeW91IGFyZQoraW50ZXJlc3RlZCBpbiBpbXByb3ZpbmcgdGhlIHN1
cHBvcnQgZm9yIE1pbkdXLgorCisjIyBXaHkgZG9lcyBHb29nbGUgVGVzdCBzdXBwb3J0IEVYUEVD
VFxfRVEoTlVMTCwgcHRyKSBhbmQgQVNTRVJUXF9FUShOVUxMLCBwdHIpIGJ1dCBub3QgRVhQRUNU
XF9ORShOVUxMLCBwdHIpIGFuZCBBU1NFUlRcX05FKE5VTEwsIHB0cik/ICMjCisKK0R1ZSB0byBz
b21lIHBlY3VsaWFyaXR5IG9mIEMrKywgaXQgcmVxdWlyZXMgc29tZSBub24tdHJpdmlhbCB0ZW1w
bGF0ZQorbWV0YSBwcm9ncmFtbWluZyB0cmlja3MgdG8gc3VwcG9ydCB1c2luZyBgTlVMTGAgYXMg
YW4gYXJndW1lbnQgb2YgdGhlCitgRVhQRUNUX1hYKClgIGFuZCBgQVNTRVJUX1hYKClgIG1hY3Jv
cy4gVGhlcmVmb3JlIHdlIG9ubHkgZG8gaXQgd2hlcmUKK2l0J3MgbW9zdCBuZWVkZWQgKG90aGVy
d2lzZSB3ZSBtYWtlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBHb29nbGUgVGVzdAoraGFyZGVyIHRv
IG1haW50YWluIGFuZCBtb3JlIGVycm9yLXByb25lIHRoYW4gbmVjZXNzYXJ5KS4KKworVGhlIGBF
WFBFQ1RfRVEoKWAgbWFjcm8gdGFrZXMgdGhlIF9leHBlY3RlZF8gdmFsdWUgYXMgaXRzIGZpcnN0
Cithcmd1bWVudCBhbmQgdGhlIF9hY3R1YWxfIHZhbHVlIGFzIHRoZSBzZWNvbmQuIEl0J3MgcmVh
c29uYWJsZSB0aGF0Citzb21lb25lIHdhbnRzIHRvIHdyaXRlIGBFWFBFQ1RfRVEoTlVMTCwgc29t
ZV9leHByZXNzaW9uKWAsIGFuZCB0aGlzCitpbmRlZWQgd2FzIHJlcXVlc3RlZCBzZXZlcmFsIHRp
bWVzLiBUaGVyZWZvcmUgd2UgaW1wbGVtZW50ZWQgaXQuCisKK1RoZSBuZWVkIGZvciBgRVhQRUNU
X05FKE5VTEwsIHB0cilgIGlzbid0IG5lYXJseSBhcyBzdHJvbmcuIFdoZW4gdGhlCithc3NlcnRp
b24gZmFpbHMsIHlvdSBhbHJlYWR5IGtub3cgdGhhdCBgcHRyYCBtdXN0IGJlIGBOVUxMYCwgc28g
aXQKK2RvZXNuJ3QgYWRkIGFueSBpbmZvcm1hdGlvbiB0byBwcmludCBwdHIgaW4gdGhpcyBjYXNl
LiBUaGF0IG1lYW5zCitgRVhQRUNUX1RSVUUocHRyICEgTlVMTClgIHdvcmtzIGp1c3QgYXMgd2Vs
bC4KKworSWYgd2Ugd2VyZSB0byBzdXBwb3J0IGBFWFBFQ1RfTkUoTlVMTCwgcHRyKWAsIGZvciBj
b25zaXN0ZW5jeSB3ZSdsbAoraGF2ZSB0byBzdXBwb3J0IGBFWFBFQ1RfTkUocHRyLCBOVUxMKWAg
YXMgd2VsbCwgYXMgdW5saWtlIGBFWFBFQ1RfRVFgLAord2UgZG9uJ3QgaGF2ZSBhIGNvbnZlbnRp
b24gb24gdGhlIG9yZGVyIG9mIHRoZSB0d28gYXJndW1lbnRzIGZvcgorYEVYUEVDVF9ORWAuIFRo
aXMgbWVhbnMgdXNpbmcgdGhlIHRlbXBsYXRlIG1ldGEgcHJvZ3JhbW1pbmcgdHJpY2tzCit0d2lj
ZSBpbiB0aGUgaW1wbGVtZW50YXRpb24sIG1ha2luZyBpdCBldmVuIGhhcmRlciB0byB1bmRlcnN0
YW5kIGFuZAorbWFpbnRhaW4uIFdlIGJlbGlldmUgdGhlIGJlbmVmaXQgZG9lc24ndCBqdXN0aWZ5
IHRoZSBjb3N0LgorCitGaW5hbGx5LCB3aXRoIHRoZSBncm93dGggb2YgR29vZ2xlIE1vY2sncyBb
bWF0Y2hlcl0oLi4vLi4vQ29va0Jvb2subWQjdXNpbmctbWF0Y2hlcnMtaW4tZ29vZ2xlLXRlc3Qt
YXNzZXJ0aW9ucykgbGlicmFyeSwgd2UgYXJlCitlbmNvdXJhZ2luZyBwZW9wbGUgdG8gdXNlIHRo
ZSB1bmlmaWVkIGBFWFBFQ1RfVEhBVCh2YWx1ZSwgbWF0Y2hlcilgCitzeW50YXggbW9yZSBvZnRl
biBpbiB0ZXN0cy4gT25lIHNpZ25pZmljYW50IGFkdmFudGFnZSBvZiB0aGUgbWF0Y2hlcgorYXBw
cm9hY2ggaXMgdGhhdCBtYXRjaGVycyBjYW4gYmUgZWFzaWx5IGNvbWJpbmVkIHRvIGZvcm0gbmV3
IG1hdGNoZXJzLAord2hpbGUgdGhlIGBFWFBFQ1RfTkVgLCBldGMsIG1hY3JvcyBjYW5ub3QgYmUg
ZWFzaWx5Citjb21iaW5lZC4gVGhlcmVmb3JlIHdlIHdhbnQgdG8gaW52ZXN0IG1vcmUgaW4gdGhl
IG1hdGNoZXJzIHRoYW4gaW4gdGhlCitgRVhQRUNUX1hYKClgIG1hY3Jvcy4KKworIyMgRG9lcyBH
b29nbGUgVGVzdCBzdXBwb3J0IHJ1bm5pbmcgdGVzdHMgaW4gcGFyYWxsZWw/ICMjCisKK1Rlc3Qg
cnVubmVycyB0ZW5kIHRvIGJlIHRpZ2h0bHkgY291cGxlZCB3aXRoIHRoZSBidWlsZC90ZXN0Citl
bnZpcm9ubWVudCwgYW5kIEdvb2dsZSBUZXN0IGRvZXNuJ3QgdHJ5IHRvIHNvbHZlIHRoZSBwcm9i
bGVtIG9mCitydW5uaW5nIHRlc3RzIGluIHBhcmFsbGVsLiAgSW5zdGVhZCwgd2UgdHJpZWQgdG8g
bWFrZSBHb29nbGUgVGVzdCB3b3JrCituaWNlbHkgd2l0aCB0ZXN0IHJ1bm5lcnMuICBGb3IgZXhh
bXBsZSwgR29vZ2xlIFRlc3QncyBYTUwgcmVwb3J0Citjb250YWlucyB0aGUgdGltZSBzcGVudCBv
biBlYWNoIHRlc3QsIGFuZCBpdHMgYGd0ZXN0X2xpc3RfdGVzdHNgIGFuZAorYGd0ZXN0X2ZpbHRl
cmAgZmxhZ3MgY2FuIGJlIHVzZWQgZm9yIHNwbGl0dGluZyB0aGUgZXhlY3V0aW9uIG9mIHRlc3QK
K21ldGhvZHMgaW50byBtdWx0aXBsZSBwcm9jZXNzZXMuICBUaGVzZSBmdW5jdGlvbmFsaXRpZXMg
Y2FuIGhlbHAgdGhlCit0ZXN0IHJ1bm5lciBydW4gdGhlIHRlc3RzIGluIHBhcmFsbGVsLgorCisj
IyBXaHkgZG9uJ3QgR29vZ2xlIFRlc3QgcnVuIHRoZSB0ZXN0cyBpbiBkaWZmZXJlbnQgdGhyZWFk
cyB0byBzcGVlZCB0aGluZ3MgdXA/ICMjCisKK0l0J3MgZGlmZmljdWx0IHRvIHdyaXRlIHRocmVh
ZC1zYWZlIGNvZGUuICBNb3N0IHRlc3RzIGFyZSBub3Qgd3JpdHRlbgord2l0aCB0aHJlYWQtc2Fm
ZXR5IGluIG1pbmQsIGFuZCB0aHVzIG1heSBub3Qgd29yayBjb3JyZWN0bHkgaW4gYQorbXVsdGkt
dGhyZWFkZWQgc2V0dGluZy4KKworSWYgeW91IHRoaW5rIGFib3V0IGl0LCBpdCdzIGFscmVhZHkg
aGFyZCB0byBtYWtlIHlvdXIgY29kZSB3b3JrIHdoZW4KK3lvdSBrbm93IHdoYXQgb3RoZXIgdGhy
ZWFkcyBhcmUgZG9pbmcuICBJdCdzIG11Y2ggaGFyZGVyLCBhbmQKK3NvbWV0aW1lcyBldmVuIGlt
cG9zc2libGUsIHRvIG1ha2UgeW91ciBjb2RlIHdvcmsgd2hlbiB5b3UgZG9uJ3Qga25vdword2hh
dCBvdGhlciB0aHJlYWRzIGFyZSBkb2luZyAocmVtZW1iZXIgdGhhdCB0ZXN0IG1ldGhvZHMgY2Fu
IGJlIGFkZGVkLAorZGVsZXRlZCwgb3IgbW9kaWZpZWQgYWZ0ZXIgeW91ciB0ZXN0IHdhcyB3cml0
dGVuKS4gIElmIHlvdSB3YW50IHRvIHJ1bgordGhlIHRlc3RzIGluIHBhcmFsbGVsLCB5b3UnZCBi
ZXR0ZXIgcnVuIHRoZW0gaW4gZGlmZmVyZW50IHByb2Nlc3Nlcy4KKworIyMgV2h5IGFyZW4ndCBH
b29nbGUgVGVzdCBhc3NlcnRpb25zIGltcGxlbWVudGVkIHVzaW5nIGV4Y2VwdGlvbnM/ICMjCisK
K091ciBvcmlnaW5hbCBtb3RpdmF0aW9uIHdhcyB0byBiZSBhYmxlIHRvIHVzZSBHb29nbGUgVGVz
dCBpbiBwcm9qZWN0cwordGhhdCBkaXNhYmxlIGV4Y2VwdGlvbnMuICBMYXRlciB3ZSByZWFsaXpl
ZCBzb21lIGFkZGl0aW9uYWwgYmVuZWZpdHMKK29mIHRoaXMgYXBwcm9hY2g6CisKKyAgMS4gVGhy
b3dpbmcgaW4gYSBkZXN0cnVjdG9yIGlzIHVuZGVmaW5lZCBiZWhhdmlvciBpbiBDKysuICBOb3Qg
dXNpbmcgZXhjZXB0aW9ucyBtZWFucyBHb29nbGUgVGVzdCdzIGFzc2VydGlvbnMgYXJlIHNhZmUg
dG8gdXNlIGluIGRlc3RydWN0b3JzLgorICAxLiBUaGUgYEVYUEVDVF8qYCBmYW1pbHkgb2YgbWFj
cm9zIHdpbGwgY29udGludWUgZXZlbiBhZnRlciBhIGZhaWx1cmUsIGFsbG93aW5nIG11bHRpcGxl
IGZhaWx1cmVzIGluIGEgYFRFU1RgIHRvIGJlIHJlcG9ydGVkIGluIGEgc2luZ2xlIHJ1bi4gVGhp
cyBpcyBhIHBvcHVsYXIgZmVhdHVyZSwgYXMgaW4gQysrIHRoZSBlZGl0LWNvbXBpbGUtdGVzdCBj
eWNsZSBpcyB1c3VhbGx5IHF1aXRlIGxvbmcgYW5kIGJlaW5nIGFibGUgdG8gZml4aW5nIG1vcmUg
dGhhbiBvbmUgdGhpbmcgYXQgYSB0aW1lIGlzIGEgYmxlc3NpbmcuCisgIDEuIElmIGFzc2VydGlv
bnMgYXJlIGltcGxlbWVudGVkIHVzaW5nIGV4Y2VwdGlvbnMsIGEgdGVzdCBtYXkgZmFsc2VseSBp
Z25vcmUgYSBmYWlsdXJlIGlmIGl0J3MgY2F1Z2h0IGJ5IHVzZXIgY29kZToKK2BgYAordHJ5IHsg
Li4uIEFTU0VSVF9UUlVFKC4uLikgLi4uIH0KK2NhdGNoICguLi4pIHsgLi4uIH0KK2BgYAorVGhl
IGFib3ZlIGNvZGUgd2lsbCBwYXNzIGV2ZW4gaWYgdGhlIGBBU1NFUlRfVFJVRWAgdGhyb3dzLiAg
V2hpbGUgaXQncyB1bmxpa2VseSBmb3Igc29tZW9uZSB0byB3cml0ZSB0aGlzIGluIGEgdGVzdCwg
aXQncyBwb3NzaWJsZSB0byBydW4gaW50byB0aGlzIHBhdHRlcm4gd2hlbiB5b3Ugd3JpdGUgYXNz
ZXJ0aW9ucyBpbiBjYWxsYmFja3MgdGhhdCBhcmUgY2FsbGVkIGJ5IHRoZSBjb2RlIHVuZGVyIHRl
c3QuCisKK1RoZSBkb3duc2lkZSBvZiBub3QgdXNpbmcgZXhjZXB0aW9ucyBpcyB0aGF0IGBBU1NF
UlRfKmAgKGltcGxlbWVudGVkCit1c2luZyBgcmV0dXJuYCkgd2lsbCBvbmx5IGFib3J0IHRoZSBj
dXJyZW50IGZ1bmN0aW9uLCBub3QgdGhlIGN1cnJlbnQKK2BURVNUYC4KKworIyMgV2h5IGRvIHdl
IHVzZSB0d28gZGlmZmVyZW50IG1hY3JvcyBmb3IgdGVzdHMgd2l0aCBhbmQgd2l0aG91dCBmaXh0
dXJlcz8gIyMKKworVW5mb3J0dW5hdGVseSwgQysrJ3MgbWFjcm8gc3lzdGVtIGRvZXNuJ3QgYWxs
b3cgdXMgdG8gdXNlIHRoZSBzYW1lCittYWNybyBmb3IgYm90aCBjYXNlcy4gIE9uZSBwb3NzaWJp
bGl0eSBpcyB0byBwcm92aWRlIG9ubHkgb25lIG1hY3JvCitmb3IgdGVzdHMgd2l0aCBmaXh0dXJl
cywgYW5kIHJlcXVpcmUgdGhlIHVzZXIgdG8gZGVmaW5lIGFuIGVtcHR5CitmaXh0dXJlIHNvbWV0
aW1lczoKKworYGBgCitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7fTsK
KworVEVTVF9GKEZvb1Rlc3QsIERvZXNUaGlzKSB7IC4uLiB9CitgYGAKK29yCitgYGAKK3R5cGVk
ZWYgOjp0ZXN0aW5nOjpUZXN0IEZvb1Rlc3Q7CisKK1RFU1RfRihGb29UZXN0LCBEb2VzVGhhdCkg
eyAuLi4gfQorYGBgCisKK1lldCwgbWFueSBwZW9wbGUgdGhpbmsgdGhpcyBpcyBvbmUgbGluZSB0
b28gbWFueS4gOi0pIE91ciBnb2FsIHdhcyB0bworbWFrZSBpdCByZWFsbHkgZWFzeSB0byB3cml0
ZSB0ZXN0cywgc28gd2UgdHJpZWQgdG8gbWFrZSBzaW1wbGUgdGVzdHMKK3RyaXZpYWwgdG8gY3Jl
YXRlLiAgVGhhdCBtZWFucyB1c2luZyBhIHNlcGFyYXRlIG1hY3JvIGZvciBzdWNoIHRlc3RzLgor
CitXZSB0aGluayBuZWl0aGVyIGFwcHJvYWNoIGlzIGlkZWFsLCB5ZXQgZWl0aGVyIG9mIHRoZW0g
aXMgcmVhc29uYWJsZS4KK0luIHRoZSBlbmQsIGl0IHByb2JhYmx5IGRvZXNuJ3QgbWF0dGVyIG11
Y2ggZWl0aGVyIHdheS4KKworIyMgV2h5IGRvbid0IHdlIHVzZSBzdHJ1Y3RzIGFzIHRlc3QgZml4
dHVyZXM/ICMjCisKK1dlIGxpa2UgdG8gdXNlIHN0cnVjdHMgb25seSB3aGVuIHJlcHJlc2VudGlu
ZyBwYXNzaXZlIGRhdGEuICBUaGlzCitkaXN0aW5jdGlvbiBiZXR3ZWVuIHN0cnVjdHMgYW5kIGNs
YXNzZXMgaXMgZ29vZCBmb3IgZG9jdW1lbnRpbmcgdGhlCitpbnRlbnQgb2YgdGhlIGNvZGUncyBh
dXRob3IuICBTaW5jZSB0ZXN0IGZpeHR1cmVzIGhhdmUgbG9naWMgbGlrZQorYFNldFVwKClgIGFu
ZCBgVGVhckRvd24oKWAsIHRoZXkgYXJlIGJldHRlciBkZWZpbmVkIGFzIGNsYXNzZXMuCisKKyMj
IFdoeSBhcmUgZGVhdGggdGVzdHMgaW1wbGVtZW50ZWQgYXMgYXNzZXJ0aW9ucyBpbnN0ZWFkIG9m
IHVzaW5nIGEgdGVzdCBydW5uZXI/ICMjCisKK091ciBnb2FsIHdhcyB0byBtYWtlIGRlYXRoIHRl
c3RzIGFzIGNvbnZlbmllbnQgZm9yIGEgdXNlciBhcyBDKysKK3Bvc3NpYmx5IGFsbG93cy4gIElu
IHBhcnRpY3VsYXI6CisKKyAgKiBUaGUgcnVubmVyLXN0eWxlIHJlcXVpcmVzIHRvIHNwbGl0IHRo
ZSBpbmZvcm1hdGlvbiBpbnRvIHR3byBwaWVjZXM6IHRoZSBkZWZpbml0aW9uIG9mIHRoZSBkZWF0
aCB0ZXN0IGl0c2VsZiwgYW5kIHRoZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgcnVubmVyIG9uIGhv
dyB0byBydW4gdGhlIGRlYXRoIHRlc3QgYW5kIHdoYXQgdG8gZXhwZWN0LiAgVGhlIGRlYXRoIHRl
c3Qgd291bGQgYmUgd3JpdHRlbiBpbiBDKyssIHdoaWxlIHRoZSBydW5uZXIgc3BlYyBtYXkgb3Ig
bWF5IG5vdCBiZS4gIEEgdXNlciBuZWVkcyB0byBjYXJlZnVsbHkga2VlcCB0aGUgdHdvIGluIHN5
bmMuIGBBU1NFUlRfREVBVEgoc3RhdGVtZW50LCBleHBlY3RlZF9tZXNzYWdlKWAgc3BlY2lmaWVz
IGFsbCBuZWNlc3NhcnkgaW5mb3JtYXRpb24gaW4gb25lIHBsYWNlLCBpbiBvbmUgbGFuZ3VhZ2Us
IHdpdGhvdXQgYm9pbGVycGxhdGUgY29kZS4gSXQgaXMgdmVyeSBkZWNsYXJhdGl2ZS4KKyAgKiBg
QVNTRVJUX0RFQVRIYCBoYXMgYSBzaW1pbGFyIHN5bnRheCBhbmQgZXJyb3ItcmVwb3J0aW5nIHNl
bWFudGljcyBhcyBvdGhlciBHb29nbGUgVGVzdCBhc3NlcnRpb25zLCBhbmQgdGh1cyBpcyBlYXN5
IHRvIGxlYXJuLgorICAqIGBBU1NFUlRfREVBVEhgIGNhbiBiZSBtaXhlZCB3aXRoIG90aGVyIGFz
c2VydGlvbnMgYW5kIG90aGVyIGxvZ2ljIGF0IHlvdXIgd2lsbC4gIFlvdSBhcmUgbm90IGxpbWl0
ZWQgdG8gb25lIGRlYXRoIHRlc3QgcGVyIHRlc3QgbWV0aG9kLiBGb3IgZXhhbXBsZSwgeW91IGNh
biB3cml0ZSBzb21ldGhpbmcgbGlrZToKK2BgYAorICAgIGlmIChGb29Db25kaXRpb24oKSkgewor
ICAgICAgQVNTRVJUX0RFQVRIKEJhcigpLCAiYmxhaCIpOworICAgIH0gZWxzZSB7CisgICAgICBB
U1NFUlRfRVEoNSwgQmFyKCkpOworICAgIH0KK2BgYAorSWYgeW91IHByZWZlciBvbmUgZGVhdGgg
dGVzdCBwZXIgdGVzdCBtZXRob2QsIHlvdSBjYW4gd3JpdGUgeW91ciB0ZXN0cyBpbiB0aGF0IHN0
eWxlIHRvbywgYnV0IHdlIGRvbid0IHdhbnQgdG8gaW1wb3NlIHRoYXQgb24gdGhlIHVzZXJzLiAg
VGhlIGZld2VyIGFydGlmaWNpYWwgbGltaXRhdGlvbnMgdGhlIGJldHRlci4KKyAgKiBgQVNTRVJU
X0RFQVRIYCBjYW4gcmVmZXJlbmNlIGxvY2FsIHZhcmlhYmxlcyBpbiB0aGUgY3VycmVudCBmdW5j
dGlvbiwgYW5kIHlvdSBjYW4gZGVjaWRlIGhvdyBtYW55IGRlYXRoIHRlc3RzIHlvdSB3YW50IGJh
c2VkIG9uIHJ1bi10aW1lIGluZm9ybWF0aW9uLiAgRm9yIGV4YW1wbGUsCitgYGAKKyAgICBjb25z
dCBpbnQgY291bnQgPSBHZXRDb3VudCgpOyAgLy8gT25seSBrbm93biBhdCBydW4gdGltZS4KKyAg
ICBmb3IgKGludCBpID0gMTsgaSA8PSBjb3VudDsgaSsrKSB7CisgICAgICBBU1NFUlRfREVBVEgo
eworICAgICAgICBkb3VibGUqIGJ1ZmZlciA9IG5ldyBkb3VibGVbaV07CisgICAgICAgIC4uLiBp
bml0aWFsaXplcyBidWZmZXIgLi4uCisgICAgICAgIEZvbyhidWZmZXIsIGkpCisgICAgICB9LCAi
YmxhaCBibGFoIik7CisgICAgfQorYGBgCitUaGUgcnVubmVyLWJhc2VkIGFwcHJvYWNoIHRlbmRz
IHRvIGJlIG1vcmUgc3RhdGljIGFuZCBsZXNzIGZsZXhpYmxlLCBvciByZXF1aXJlcyBtb3JlIHVz
ZXIgZWZmb3J0IHRvIGdldCB0aGlzIGtpbmQgb2YgZmxleGliaWxpdHkuCisKK0Fub3RoZXIgaW50
ZXJlc3RpbmcgdGhpbmcgYWJvdXQgYEFTU0VSVF9ERUFUSGAgaXMgdGhhdCBpdCBjYWxscyBgZm9y
aygpYAordG8gY3JlYXRlIGEgY2hpbGQgcHJvY2VzcyB0byBydW4gdGhlIGRlYXRoIHRlc3QuICBU
aGlzIGlzIGxpZ2h0ZW5pbmcKK2Zhc3QsIGFzIGBmb3JrKClgIHVzZXMgY29weS1vbi13cml0ZSBw
YWdlcyBhbmQgaW5jdXJzIGFsbW9zdCB6ZXJvCitvdmVyaGVhZCwgYW5kIHRoZSBjaGlsZCBwcm9j
ZXNzIHN0YXJ0cyBmcm9tIHRoZSB1c2VyLXN1cHBsaWVkCitzdGF0ZW1lbnQgZGlyZWN0bHksIHNr
aXBwaW5nIGFsbCBnbG9iYWwgYW5kIGxvY2FsIGluaXRpYWxpemF0aW9uIGFuZAorYW55IGNvZGUg
bGVhZGluZyB0byB0aGUgZ2l2ZW4gc3RhdGVtZW50LiAgSWYgeW91IGxhdW5jaCB0aGUgY2hpbGQK
K3Byb2Nlc3MgZnJvbSBzY3JhdGNoLCBpdCBjYW4gdGFrZSBzZWNvbmRzIGp1c3QgdG8gbG9hZCBl
dmVyeXRoaW5nIGFuZAorc3RhcnQgcnVubmluZyBpZiB0aGUgdGVzdCBsaW5rcyB0byBtYW55IGxp
YnJhcmllcyBkeW5hbWljYWxseS4KKworIyMgTXkgZGVhdGggdGVzdCBtb2RpZmllcyBzb21lIHN0
YXRlLCBidXQgdGhlIGNoYW5nZSBzZWVtcyBsb3N0IGFmdGVyIHRoZSBkZWF0aCB0ZXN0IGZpbmlz
aGVzLiBXaHk/ICMjCisKK0RlYXRoIHRlc3RzIChgRVhQRUNUX0RFQVRIYCwgZXRjKSBhcmUgZXhl
Y3V0ZWQgaW4gYSBzdWItcHJvY2VzcyBzLnQuIHRoZQorZXhwZWN0ZWQgY3Jhc2ggd29uJ3Qga2ls
bCB0aGUgdGVzdCBwcm9ncmFtIChpLmUuIHRoZSBwYXJlbnQgcHJvY2VzcykuIEFzIGEKK3Jlc3Vs
dCwgYW55IGluLW1lbW9yeSBzaWRlIGVmZmVjdHMgdGhleSBpbmN1ciBhcmUgb2JzZXJ2YWJsZSBp
biB0aGVpcgorcmVzcGVjdGl2ZSBzdWItcHJvY2Vzc2VzLCBidXQgbm90IGluIHRoZSBwYXJlbnQg
cHJvY2Vzcy4gWW91IGNhbiB0aGluayBvZiB0aGVtCithcyBydW5uaW5nIGluIGEgcGFyYWxsZWwg
dW5pdmVyc2UsIG1vcmUgb3IgbGVzcy4KKworIyMgVGhlIGNvbXBpbGVyIGNvbXBsYWlucyBhYm91
dCAidW5kZWZpbmVkIHJlZmVyZW5jZXMiIHRvIHNvbWUgc3RhdGljIGNvbnN0IG1lbWJlciB2YXJp
YWJsZXMsIGJ1dCBJIGRpZCBkZWZpbmUgdGhlbSBpbiB0aGUgY2xhc3MgYm9keS4gV2hhdCdzIHdy
b25nPyAjIworCitJZiB5b3VyIGNsYXNzIGhhcyBhIHN0YXRpYyBkYXRhIG1lbWJlcjoKKworYGBg
CisvLyBmb28uaAorY2xhc3MgRm9vIHsKKyAgLi4uCisgIHN0YXRpYyBjb25zdCBpbnQga0JhciA9
IDEwMDsKK307CitgYGAKKworWW91IGFsc28gbmVlZCB0byBkZWZpbmUgaXQgX291dHNpZGVfIG9m
IHRoZSBjbGFzcyBib2R5IGluIGBmb28uY2NgOgorCitgYGAKK2NvbnN0IGludCBGb286OmtCYXI7
ICAvLyBObyBpbml0aWFsaXplciBoZXJlLgorYGBgCisKK090aGVyd2lzZSB5b3VyIGNvZGUgaXMg
KippbnZhbGlkIEMrKyoqLCBhbmQgbWF5IGJyZWFrIGluIHVuZXhwZWN0ZWQgd2F5cy4gSW4KK3Bh
cnRpY3VsYXIsIHVzaW5nIGl0IGluIEdvb2dsZSBUZXN0IGNvbXBhcmlzb24gYXNzZXJ0aW9ucyAo
YEVYUEVDVF9FUWAsIGV0YykKK3dpbGwgZ2VuZXJhdGUgYW4gInVuZGVmaW5lZCByZWZlcmVuY2Ui
IGxpbmtlciBlcnJvci4KKworIyMgSSBoYXZlIGFuIGludGVyZmFjZSB0aGF0IGhhcyBzZXZlcmFs
IGltcGxlbWVudGF0aW9ucy4gQ2FuIEkgd3JpdGUgYSBzZXQgb2YgdGVzdHMgb25jZSBhbmQgcmVw
ZWF0IHRoZW0gb3ZlciBhbGwgdGhlIGltcGxlbWVudGF0aW9ucz8gIyMKKworR29vZ2xlIFRlc3Qg
ZG9lc24ndCB5ZXQgaGF2ZSBnb29kIHN1cHBvcnQgZm9yIHRoaXMga2luZCBvZiB0ZXN0cywgb3IK
K2RhdGEtZHJpdmVuIHRlc3RzIGluIGdlbmVyYWwuIFdlIGhvcGUgdG8gYmUgYWJsZSB0byBtYWtl
IGltcHJvdmVtZW50cyBpbiB0aGlzCithcmVhIHNvb24uCisKKyMjIENhbiBJIGRlcml2ZSBhIHRl
c3QgZml4dHVyZSBmcm9tIGFub3RoZXI/ICMjCisKK1llcy4KKworRWFjaCB0ZXN0IGZpeHR1cmUg
aGFzIGEgY29ycmVzcG9uZGluZyBhbmQgc2FtZSBuYW1lZCB0ZXN0IGNhc2UuIFRoaXMgbWVhbnMg
b25seQorb25lIHRlc3QgY2FzZSBjYW4gdXNlIGEgcGFydGljdWxhciBmaXh0dXJlLiBTb21ldGlt
ZXMsIGhvd2V2ZXIsIG11bHRpcGxlIHRlc3QKK2Nhc2VzIG1heSB3YW50IHRvIHVzZSB0aGUgc2Ft
ZSBvciBzbGlnaHRseSBkaWZmZXJlbnQgZml4dHVyZXMuIEZvciBleGFtcGxlLCB5b3UKK21heSB3
YW50IHRvIG1ha2Ugc3VyZSB0aGF0IGFsbCBvZiBhIEdVSSBsaWJyYXJ5J3MgdGVzdCBjYXNlcyBk
b24ndCBsZWFrCitpbXBvcnRhbnQgc3lzdGVtIHJlc291cmNlcyBsaWtlIGZvbnRzIGFuZCBicnVz
aGVzLgorCitJbiBHb29nbGUgVGVzdCwgeW91IHNoYXJlIGEgZml4dHVyZSBhbW9uZyB0ZXN0IGNh
c2VzIGJ5IHB1dHRpbmcgdGhlIHNoYXJlZAorbG9naWMgaW4gYSBiYXNlIHRlc3QgZml4dHVyZSwg
dGhlbiBkZXJpdmluZyBmcm9tIHRoYXQgYmFzZSBhIHNlcGFyYXRlIGZpeHR1cmUKK2ZvciBlYWNo
IHRlc3QgY2FzZSB0aGF0IHdhbnRzIHRvIHVzZSB0aGlzIGNvbW1vbiBsb2dpYy4gWW91IHRoZW4g
dXNlIGBURVNUX0YoKWAKK3RvIHdyaXRlIHRlc3RzIHVzaW5nIGVhY2ggZGVyaXZlZCBmaXh0dXJl
LgorCitUeXBpY2FsbHksIHlvdXIgY29kZSBsb29rcyBsaWtlIHRoaXM6CisKK2BgYAorLy8gRGVm
aW5lcyBhIGJhc2UgdGVzdCBmaXh0dXJlLgorY2xhc3MgQmFzZVRlc3QgOiBwdWJsaWMgOjp0ZXN0
aW5nOjpUZXN0IHsKKyAgcHJvdGVjdGVkOgorICAgLi4uCit9OworCisvLyBEZXJpdmVzIGEgZml4
dHVyZSBGb29UZXN0IGZyb20gQmFzZVRlc3QuCitjbGFzcyBGb29UZXN0IDogcHVibGljIEJhc2VU
ZXN0IHsKKyAgcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICAgIEJh
c2VUZXN0OjpTZXRVcCgpOyAgLy8gU2V0cyB1cCB0aGUgYmFzZSBmaXh0dXJlIGZpcnN0LgorICAg
ICAgLi4uIGFkZGl0aW9uYWwgc2V0LXVwIHdvcmsgLi4uCisgICAgfQorICAgIHZpcnR1YWwgdm9p
ZCBUZWFyRG93bigpIHsKKyAgICAgIC4uLiBjbGVhbi11cCB3b3JrIGZvciBGb29UZXN0IC4uLgor
ICAgICAgQmFzZVRlc3Q6OlRlYXJEb3duKCk7ICAvLyBSZW1lbWJlciB0byB0ZWFyIGRvd24gdGhl
IGJhc2UgZml4dHVyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhZnRlciBjbGVh
bmluZyB1cCBGb29UZXN0IQorICAgIH0KKyAgICAuLi4gZnVuY3Rpb25zIGFuZCB2YXJpYWJsZXMg
Zm9yIEZvb1Rlc3QgLi4uCit9OworCisvLyBUZXN0cyB0aGF0IHVzZSB0aGUgZml4dHVyZSBGb29U
ZXN0LgorVEVTVF9GKEZvb1Rlc3QsIEJhcikgeyAuLi4gfQorVEVTVF9GKEZvb1Rlc3QsIEJheikg
eyAuLi4gfQorCisuLi4gYWRkaXRpb25hbCBmaXh0dXJlcyBkZXJpdmVkIGZyb20gQmFzZVRlc3Qg
Li4uCitgYGAKKworSWYgbmVjZXNzYXJ5LCB5b3UgY2FuIGNvbnRpbnVlIHRvIGRlcml2ZSB0ZXN0
IGZpeHR1cmVzIGZyb20gYSBkZXJpdmVkIGZpeHR1cmUuCitHb29nbGUgVGVzdCBoYXMgbm8gbGlt
aXQgb24gaG93IGRlZXAgdGhlIGhpZXJhcmNoeSBjYW4gYmUuCisKK0ZvciBhIGNvbXBsZXRlIGV4
YW1wbGUgdXNpbmcgZGVyaXZlZCB0ZXN0IGZpeHR1cmVzLCBzZWUKK2BzYW1wbGVzL3NhbXBsZTVf
dW5pdHRlc3QuY2NgLgorCisjIyBNeSBjb21waWxlciBjb21wbGFpbnMgInZvaWQgdmFsdWUgbm90
IGlnbm9yZWQgYXMgaXQgb3VnaHQgdG8gYmUuIiBXaGF0IGRvZXMgdGhpcyBtZWFuPyAjIworCitZ
b3UncmUgcHJvYmFibHkgdXNpbmcgYW4gYEFTU0VSVF8qKClgIGluIGEgZnVuY3Rpb24gdGhhdCBk
b2Vzbid0IHJldHVybiBgdm9pZGAuCitgQVNTRVJUXyooKWAgY2FuIG9ubHkgYmUgdXNlZCBpbiBg
dm9pZGAgZnVuY3Rpb25zLgorCisjIyBNeSBkZWF0aCB0ZXN0IGhhbmdzIChvciBzZWctZmF1bHRz
KS4gSG93IGRvIEkgZml4IGl0PyAjIworCitJbiBHb29nbGUgVGVzdCwgZGVhdGggdGVzdHMgYXJl
IHJ1biBpbiBhIGNoaWxkIHByb2Nlc3MgYW5kIHRoZSB3YXkgdGhleSB3b3JrIGlzCitkZWxpY2F0
ZS4gVG8gd3JpdGUgZGVhdGggdGVzdHMgeW91IHJlYWxseSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93
IHRoZXkgd29yay4KK1BsZWFzZSBtYWtlIHN1cmUgeW91IGhhdmUgcmVhZCB0aGlzLgorCitJbiBw
YXJ0aWN1bGFyLCBkZWF0aCB0ZXN0cyBkb24ndCBsaWtlIGhhdmluZyBtdWx0aXBsZSB0aHJlYWRz
IGluIHRoZSBwYXJlbnQKK3Byb2Nlc3MuIFNvIHRoZSBmaXJzdCB0aGluZyB5b3UgY2FuIHRyeSBp
cyB0byBlbGltaW5hdGUgY3JlYXRpbmcgdGhyZWFkcworb3V0c2lkZSBvZiBgRVhQRUNUX0RFQVRI
KClgLgorCitTb21ldGltZXMgdGhpcyBpcyBpbXBvc3NpYmxlIGFzIHNvbWUgbGlicmFyeSB5b3Ug
bXVzdCB1c2UgbWF5IGJlIGNyZWF0aW5nCit0aHJlYWRzIGJlZm9yZSBgbWFpbigpYCBpcyBldmVu
IHJlYWNoZWQuIEluIHRoaXMgY2FzZSwgeW91IGNhbiB0cnkgdG8gbWluaW1pemUKK3RoZSBjaGFu
Y2Ugb2YgY29uZmxpY3RzIGJ5IGVpdGhlciBtb3ZpbmcgYXMgbWFueSBhY3Rpdml0aWVzIGFzIHBv
c3NpYmxlIGluc2lkZQorYEVYUEVDVF9ERUFUSCgpYCAoaW4gdGhlIGV4dHJlbWUgY2FzZSwgeW91
IHdhbnQgdG8gbW92ZSBldmVyeXRoaW5nIGluc2lkZSksIG9yCitsZWF2aW5nIGFzIGZldyB0aGlu
Z3MgYXMgcG9zc2libGUgaW4gaXQuIEFsc28sIHlvdSBjYW4gdHJ5IHRvIHNldCB0aGUgZGVhdGgK
K3Rlc3Qgc3R5bGUgdG8gYCJ0aHJlYWRzYWZlImAsIHdoaWNoIGlzIHNhZmVyIGJ1dCBzbG93ZXIs
IGFuZCBzZWUgaWYgaXQgaGVscHMuCisKK0lmIHlvdSBnbyB3aXRoIHRocmVhZC1zYWZlIGRlYXRo
IHRlc3RzLCByZW1lbWJlciB0aGF0IHRoZXkgcmVydW4gdGhlIHRlc3QKK3Byb2dyYW0gZnJvbSB0
aGUgYmVnaW5uaW5nIGluIHRoZSBjaGlsZCBwcm9jZXNzLiBUaGVyZWZvcmUgbWFrZSBzdXJlIHlv
dXIKK3Byb2dyYW0gY2FuIHJ1biBzaWRlLWJ5LXNpZGUgd2l0aCBpdHNlbGYgYW5kIGlzIGRldGVy
bWluaXN0aWMuCisKK0luIHRoZSBlbmQsIHRoaXMgYm9pbHMgZG93biB0byBnb29kIGNvbmN1cnJl
bnQgcHJvZ3JhbW1pbmcuIFlvdSBoYXZlIHRvIG1ha2UKK3N1cmUgdGhhdCB0aGVyZSBpcyBubyBy
YWNlIGNvbmRpdGlvbnMgb3IgZGVhZCBsb2NrcyBpbiB5b3VyIHByb2dyYW0uIE5vIHNpbHZlcgor
YnVsbGV0IC0gc29ycnkhCisKKyMjIFNob3VsZCBJIHVzZSB0aGUgY29uc3RydWN0b3IvZGVzdHJ1
Y3RvciBvZiB0aGUgdGVzdCBmaXh0dXJlIG9yIHRoZSBzZXQtdXAvdGVhci1kb3duIGZ1bmN0aW9u
PyAjIworCitUaGUgZmlyc3QgdGhpbmcgdG8gcmVtZW1iZXIgaXMgdGhhdCBHb29nbGUgVGVzdCBk
b2VzIG5vdCByZXVzZSB0aGUKK3NhbWUgdGVzdCBmaXh0dXJlIG9iamVjdCBhY3Jvc3MgbXVsdGlw
bGUgdGVzdHMuIEZvciBlYWNoIGBURVNUX0ZgLAorR29vZ2xlIFRlc3Qgd2lsbCBjcmVhdGUgYSBm
cmVzaCB0ZXN0IGZpeHR1cmUgb2JqZWN0LCBfaW1tZWRpYXRlbHlfCitjYWxsIGBTZXRVcCgpYCwg
cnVuIHRoZSB0ZXN0LCBjYWxsIGBUZWFyRG93bigpYCwgYW5kIHRoZW4KK19pbW1lZGlhdGVseV8g
ZGVsZXRlIHRoZSB0ZXN0IGZpeHR1cmUgb2JqZWN0LiBUaGVyZWZvcmUsIHRoZXJlIGlzIG5vCitu
ZWVkIHRvIHdyaXRlIGEgYFNldFVwKClgIG9yIGBUZWFyRG93bigpYCBmdW5jdGlvbiBpZiB0aGUg
Y29uc3RydWN0b3IKK29yIGRlc3RydWN0b3IgYWxyZWFkeSBkb2VzIHRoZSBqb2IuCisKK1lvdSBt
YXkgc3RpbGwgd2FudCB0byB1c2UgYFNldFVwKCkvVGVhckRvd24oKWAgaW4gdGhlIGZvbGxvd2lu
ZyBjYXNlczoKKyAgKiBJZiB0aGUgdGVhci1kb3duIG9wZXJhdGlvbiBjb3VsZCB0aHJvdyBhbiBl
eGNlcHRpb24sIHlvdSBtdXN0IHVzZSBgVGVhckRvd24oKWAgYXMgb3Bwb3NlZCB0byB0aGUgZGVz
dHJ1Y3RvciwgYXMgdGhyb3dpbmcgaW4gYSBkZXN0cnVjdG9yIGxlYWRzIHRvIHVuZGVmaW5lZCBi
ZWhhdmlvciBhbmQgdXN1YWxseSB3aWxsIGtpbGwgeW91ciBwcm9ncmFtIHJpZ2h0IGF3YXkuIE5v
dGUgdGhhdCBtYW55IHN0YW5kYXJkIGxpYnJhcmllcyAobGlrZSBTVEwpIG1heSB0aHJvdyB3aGVu
IGV4Y2VwdGlvbnMgYXJlIGVuYWJsZWQgaW4gdGhlIGNvbXBpbGVyLiBUaGVyZWZvcmUgeW91IHNo
b3VsZCBwcmVmZXIgYFRlYXJEb3duKClgIGlmIHlvdSB3YW50IHRvIHdyaXRlIHBvcnRhYmxlIHRl
c3RzIHRoYXQgd29yayB3aXRoIG9yIHdpdGhvdXQgZXhjZXB0aW9ucy4KKyAgKiBUaGUgR29vZ2xl
IFRlc3QgdGVhbSBpcyBjb25zaWRlcmluZyBtYWtpbmcgdGhlIGFzc2VydGlvbiBtYWNyb3MgdGhy
b3cgb24gcGxhdGZvcm1zIHdoZXJlIGV4Y2VwdGlvbnMgYXJlIGVuYWJsZWQgKGUuZy4gV2luZG93
cywgTWFjIE9TLCBhbmQgTGludXggY2xpZW50LXNpZGUpLCB3aGljaCB3aWxsIGVsaW1pbmF0ZSB0
aGUgbmVlZCBmb3IgdGhlIHVzZXIgdG8gcHJvcGFnYXRlIGZhaWx1cmVzIGZyb20gYSBzdWJyb3V0
aW5lIHRvIGl0cyBjYWxsZXIuIFRoZXJlZm9yZSwgeW91IHNob3VsZG4ndCB1c2UgR29vZ2xlIFRl
c3QgYXNzZXJ0aW9ucyBpbiBhIGRlc3RydWN0b3IgaWYgeW91ciBjb2RlIGNvdWxkIHJ1biBvbiBz
dWNoIGEgcGxhdGZvcm0uCisgICogSW4gYSBjb25zdHJ1Y3RvciBvciBkZXN0cnVjdG9yLCB5b3Ug
Y2Fubm90IG1ha2UgYSB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGwgb24gdGhpcyBvYmplY3QuIChZb3Ug
Y2FuIGNhbGwgYSBtZXRob2QgZGVjbGFyZWQgYXMgdmlydHVhbCwgYnV0IGl0IHdpbGwgYmUgc3Rh
dGljYWxseSBib3VuZC4pIFRoZXJlZm9yZSwgaWYgeW91IG5lZWQgdG8gY2FsbCBhIG1ldGhvZCB0
aGF0IHdpbGwgYmUgb3ZlcnJpZGVuIGluIGEgZGVyaXZlZCBjbGFzcywgeW91IGhhdmUgdG8gdXNl
IGBTZXRVcCgpL1RlYXJEb3duKClgLgorCisjIyBUaGUgY29tcGlsZXIgY29tcGxhaW5zICJubyBt
YXRjaGluZyBmdW5jdGlvbiB0byBjYWxsIiB3aGVuIEkgdXNlIEFTU0VSVFxfUFJFRG4uIEhvdyBk
byBJIGZpeCBpdD8gIyMKKworSWYgdGhlIHByZWRpY2F0ZSBmdW5jdGlvbiB5b3UgdXNlIGluIGBB
U1NFUlRfUFJFRCpgIG9yIGBFWFBFQ1RfUFJFRCpgIGlzCitvdmVybG9hZGVkIG9yIGEgdGVtcGxh
dGUsIHRoZSBjb21waWxlciB3aWxsIGhhdmUgdHJvdWJsZSBmaWd1cmluZyBvdXQgd2hpY2gKK292
ZXJsb2FkZWQgdmVyc2lvbiBpdCBzaG91bGQgdXNlLiBgQVNTRVJUX1BSRURfRk9STUFUKmAgYW5k
CitgRVhQRUNUX1BSRURfRk9STUFUKmAgZG9uJ3QgaGF2ZSB0aGlzIHByb2JsZW0uCisKK0lmIHlv
dSBzZWUgdGhpcyBlcnJvciwgeW91IG1pZ2h0IHdhbnQgdG8gc3dpdGNoIHRvCitgKEFTU0VSVHxF
WFBFQ1QpX1BSRURfRk9STUFUKmAsIHdoaWNoIHdpbGwgYWxzbyBnaXZlIHlvdSBhIGJldHRlciBm
YWlsdXJlCittZXNzYWdlLiBJZiwgaG93ZXZlciwgdGhhdCBpcyBub3QgYW4gb3B0aW9uLCB5b3Ug
Y2FuIHJlc29sdmUgdGhlIHByb2JsZW0gYnkKK2V4cGxpY2l0bHkgdGVsbGluZyB0aGUgY29tcGls
ZXIgd2hpY2ggdmVyc2lvbiB0byBwaWNrLgorCitGb3IgZXhhbXBsZSwgc3VwcG9zZSB5b3UgaGF2
ZQorCitgYGAKK2Jvb2wgSXNQb3NpdGl2ZShpbnQgbikgeworICByZXR1cm4gbiA+IDA7Cit9Citi
b29sIElzUG9zaXRpdmUoZG91YmxlIHgpIHsKKyAgcmV0dXJuIHggPiAwOworfQorYGBgCisKK3lv
dSB3aWxsIGdldCBhIGNvbXBpbGVyIGVycm9yIGlmIHlvdSB3cml0ZQorCitgYGAKK0VYUEVDVF9Q
UkVEMShJc1Bvc2l0aXZlLCA1KTsKK2BgYAorCitIb3dldmVyLCB0aGlzIHdpbGwgd29yazoKKwor
YGBgCitFWFBFQ1RfUFJFRDEoKnN0YXRpY19jYXN0PGJvb2wgKCopKGludCk+KihJc1Bvc2l0aXZl
KSwgNSk7CitgYGAKKworKFRoZSBzdHVmZiBpbnNpZGUgdGhlIGFuZ2xlZCBicmFja2V0cyBmb3Ig
dGhlIGBzdGF0aWNfY2FzdGAgb3BlcmF0b3IgaXMgdGhlCit0eXBlIG9mIHRoZSBmdW5jdGlvbiBw
b2ludGVyIGZvciB0aGUgYGludGAtdmVyc2lvbiBvZiBgSXNQb3NpdGl2ZSgpYC4pCisKK0FzIGFu
b3RoZXIgZXhhbXBsZSwgd2hlbiB5b3UgaGF2ZSBhIHRlbXBsYXRlIGZ1bmN0aW9uCisKK2BgYAor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citib29sIElzTmVnYXRpdmUoVCB4KSB7CisgIHJldHVybiB4
IDwgMDsKK30KK2BgYAorCit5b3UgY2FuIHVzZSBpdCBpbiBhIHByZWRpY2F0ZSBhc3NlcnRpb24g
bGlrZSB0aGlzOgorCitgYGAKK0FTU0VSVF9QUkVEMShJc05lZ2F0aXZlKjxpbnQ+KiwgLTUpOwor
YGBgCisKK1RoaW5ncyBhcmUgbW9yZSBpbnRlcmVzdGluZyBpZiB5b3VyIHRlbXBsYXRlIGhhcyBt
b3JlIHRoYW4gb25lIHBhcmFtZXRlcnMuIFRoZQorZm9sbG93aW5nIHdvbid0IGNvbXBpbGU6CisK
K2BgYAorQVNTRVJUX1BSRUQyKCpHcmVhdGVyVGhhbjxpbnQsIGludD4qLCA1LCAwKTsKK2BgYAor
CisKK2FzIHRoZSBDKysgcHJlLXByb2Nlc3NvciB0aGlua3MgeW91IGFyZSBnaXZpbmcgYEFTU0VS
VF9QUkVEMmAgNCBhcmd1bWVudHMsCit3aGljaCBpcyBvbmUgbW9yZSB0aGFuIGV4cGVjdGVkLiBU
aGUgd29ya2Fyb3VuZCBpcyB0byB3cmFwIHRoZSBwcmVkaWNhdGUKK2Z1bmN0aW9uIGluIHBhcmVu
dGhlc2VzOgorCitgYGAKK0FTU0VSVF9QUkVEMigqKEdyZWF0ZXJUaGFuPGludCwgaW50PikqLCA1
LCAwKTsKK2BgYAorCisKKyMjIE15IGNvbXBpbGVyIGNvbXBsYWlucyBhYm91dCAiaWdub3Jpbmcg
cmV0dXJuIHZhbHVlIiB3aGVuIEkgY2FsbCBSVU5cX0FMTFxfVEVTVFMoKS4gV2h5PyAjIworCitT
b21lIHBlb3BsZSBoYWQgYmVlbiBpZ25vcmluZyB0aGUgcmV0dXJuIHZhbHVlIG9mIGBSVU5fQUxM
X1RFU1RTKClgLiBUaGF0IGlzLAoraW5zdGVhZCBvZgorCitgYGAKK3JldHVybiBSVU5fQUxMX1RF
U1RTKCk7CitgYGAKKwordGhleSB3cml0ZQorCitgYGAKK1JVTl9BTExfVEVTVFMoKTsKK2BgYAor
CitUaGlzIGlzIHdyb25nIGFuZCBkYW5nZXJvdXMuIEEgdGVzdCBydW5uZXIgbmVlZHMgdG8gc2Vl
IHRoZSByZXR1cm4gdmFsdWUgb2YKK2BSVU5fQUxMX1RFU1RTKClgIGluIG9yZGVyIHRvIGRldGVy
bWluZSBpZiBhIHRlc3QgaGFzIHBhc3NlZC4gSWYgeW91ciBgbWFpbigpYAorZnVuY3Rpb24gaWdu
b3JlcyBpdCwgeW91ciB0ZXN0IHdpbGwgYmUgY29uc2lkZXJlZCBzdWNjZXNzZnVsIGV2ZW4gaWYg
aXQgaGFzIGEKK0dvb2dsZSBUZXN0IGFzc2VydGlvbiBmYWlsdXJlLiBWZXJ5IGJhZC4KKworVG8g
aGVscCB0aGUgdXNlcnMgYXZvaWQgdGhpcyBkYW5nZXJvdXMgYnVnLCB0aGUgaW1wbGVtZW50YXRp
b24gb2YKK2BSVU5fQUxMX1RFU1RTKClgIGNhdXNlcyBnY2MgdG8gcmFpc2UgdGhpcyB3YXJuaW5n
LCB3aGVuIHRoZSByZXR1cm4gdmFsdWUgaXMKK2lnbm9yZWQuIElmIHlvdSBzZWUgdGhpcyB3YXJu
aW5nLCB0aGUgZml4IGlzIHNpbXBsZToganVzdCBtYWtlIHN1cmUgaXRzIHZhbHVlCitpcyB1c2Vk
IGFzIHRoZSByZXR1cm4gdmFsdWUgb2YgYG1haW4oKWAuCisKKyMjIE15IGNvbXBpbGVyIGNvbXBs
YWlucyB0aGF0IGEgY29uc3RydWN0b3IgKG9yIGRlc3RydWN0b3IpIGNhbm5vdCByZXR1cm4gYSB2
YWx1ZS4gV2hhdCdzIGdvaW5nIG9uPyAjIworCitEdWUgdG8gYSBwZWN1bGlhcml0eSBvZiBDKyss
IGluIG9yZGVyIHRvIHN1cHBvcnQgdGhlIHN5bnRheCBmb3Igc3RyZWFtaW5nCittZXNzYWdlcyB0
byBhbiBgQVNTRVJUXypgLCBlLmcuCisKK2BgYAorQVNTRVJUX0VRKDEsIEZvbygpKSA8PCAiYmxh
aCBibGFoIiA8PCBmb287CitgYGAKKword2UgaGFkIHRvIGdpdmUgdXAgdXNpbmcgYEFTU0VSVCpg
IGFuZCBgRkFJTCpgIChidXQgbm90IGBFWFBFQ1QqYCBhbmQKK2BBRERfRkFJTFVSRSpgKSBpbiBj
b25zdHJ1Y3RvcnMgYW5kIGRlc3RydWN0b3JzLiBUaGUgd29ya2Fyb3VuZCBpcyB0byBtb3ZlIHRo
ZQorY29udGVudCBvZiB5b3VyIGNvbnN0cnVjdG9yL2Rlc3RydWN0b3IgdG8gYSBwcml2YXRlIHZv
aWQgbWVtYmVyIGZ1bmN0aW9uLCBvcgorc3dpdGNoIHRvIGBFWFBFQ1RfKigpYCBpZiB0aGF0IHdv
cmtzLiBUaGlzIHNlY3Rpb24gaW4gdGhlIHVzZXIncyBndWlkZSBleHBsYWlucworaXQuCisKKyMj
IE15IHNldC11cCBmdW5jdGlvbiBpcyBub3QgY2FsbGVkLiBXaHk/ICMjCisKK0MrKyBpcyBjYXNl
LXNlbnNpdGl2ZS4gSXQgc2hvdWxkIGJlIHNwZWxsZWQgYXMgYFNldFVwKClgLiAgRGlkIHlvdQor
c3BlbGwgaXQgYXMgYFNldHVwKClgPworCitTaW1pbGFybHksIHNvbWV0aW1lcyBwZW9wbGUgc3Bl
bGwgYFNldFVwVGVzdENhc2UoKWAgYXMgYFNldHVwVGVzdENhc2UoKWAgYW5kCit3b25kZXIgd2h5
IGl0J3MgbmV2ZXIgY2FsbGVkLgorCisjIyBIb3cgZG8gSSBqdW1wIHRvIHRoZSBsaW5lIG9mIGEg
ZmFpbHVyZSBpbiBFbWFjcyBkaXJlY3RseT8gIyMKKworR29vZ2xlIFRlc3QncyBmYWlsdXJlIG1l
c3NhZ2UgZm9ybWF0IGlzIHVuZGVyc3Rvb2QgYnkgRW1hY3MgYW5kIG1hbnkgb3RoZXIKK0lERXMs
IGxpa2UgYWNtZSBhbmQgWENvZGUuIElmIGEgR29vZ2xlIFRlc3QgbWVzc2FnZSBpcyBpbiBhIGNv
bXBpbGF0aW9uIGJ1ZmZlcgoraW4gRW1hY3MsIHRoZW4gaXQncyBjbGlja2FibGUuIFlvdSBjYW4g
bm93IGhpdCBgZW50ZXJgIG9uIGEgbWVzc2FnZSB0byBqdW1wIHRvCit0aGUgY29ycmVzcG9uZGlu
ZyBzb3VyY2UgY29kZSwgb3IgdXNlIGBDLXggYGAgdG8ganVtcCB0byB0aGUgbmV4dCBmYWlsdXJl
LgorCisjIyBJIGhhdmUgc2V2ZXJhbCB0ZXN0IGNhc2VzIHdoaWNoIHNoYXJlIHRoZSBzYW1lIHRl
c3QgZml4dHVyZSBsb2dpYywgZG8gSSBoYXZlIHRvIGRlZmluZSBhIG5ldyB0ZXN0IGZpeHR1cmUg
Y2xhc3MgZm9yIGVhY2ggb2YgdGhlbT8gVGhpcyBzZWVtcyBwcmV0dHkgdGVkaW91cy4gIyMKKwor
WW91IGRvbid0IGhhdmUgdG8uIEluc3RlYWQgb2YKKworYGBgCitjbGFzcyBGb29UZXN0IDogcHVi
bGljIEJhc2VUZXN0IHt9OworCitURVNUX0YoRm9vVGVzdCwgQWJjKSB7IC4uLiB9CitURVNUX0Yo
Rm9vVGVzdCwgRGVmKSB7IC4uLiB9CisKK2NsYXNzIEJhclRlc3QgOiBwdWJsaWMgQmFzZVRlc3Qg
e307CisKK1RFU1RfRihCYXJUZXN0LCBBYmMpIHsgLi4uIH0KK1RFU1RfRihCYXJUZXN0LCBEZWYp
IHsgLi4uIH0KK2BgYAorCit5b3UgY2FuIHNpbXBseSBgdHlwZWRlZmAgdGhlIHRlc3QgZml4dHVy
ZXM6CitgYGAKK3R5cGVkZWYgQmFzZVRlc3QgRm9vVGVzdDsKKworVEVTVF9GKEZvb1Rlc3QsIEFi
YykgeyAuLi4gfQorVEVTVF9GKEZvb1Rlc3QsIERlZikgeyAuLi4gfQorCit0eXBlZGVmIEJhc2VU
ZXN0IEJhclRlc3Q7CisKK1RFU1RfRihCYXJUZXN0LCBBYmMpIHsgLi4uIH0KK1RFU1RfRihCYXJU
ZXN0LCBEZWYpIHsgLi4uIH0KK2BgYAorCisjIyBUaGUgR29vZ2xlIFRlc3Qgb3V0cHV0IGlzIGJ1
cmllZCBpbiBhIHdob2xlIGJ1bmNoIG9mIGxvZyBtZXNzYWdlcy4gV2hhdCBkbyBJIGRvPyAjIwor
CitUaGUgR29vZ2xlIFRlc3Qgb3V0cHV0IGlzIG1lYW50IHRvIGJlIGEgY29uY2lzZSBhbmQgaHVt
YW4tZnJpZW5kbHkgcmVwb3J0LiBJZgoreW91ciB0ZXN0IGdlbmVyYXRlcyB0ZXh0dWFsIG91dHB1
dCBpdHNlbGYsIGl0IHdpbGwgbWl4IHdpdGggdGhlIEdvb2dsZSBUZXN0CitvdXRwdXQsIG1ha2lu
ZyBpdCBoYXJkIHRvIHJlYWQuIEhvd2V2ZXIsIHRoZXJlIGlzIGFuIGVhc3kgc29sdXRpb24gdG8g
dGhpcworcHJvYmxlbS4KKworU2luY2UgbW9zdCBsb2cgbWVzc2FnZXMgZ28gdG8gc3RkZXJyLCB3
ZSBkZWNpZGVkIHRvIGxldCBHb29nbGUgVGVzdCBvdXRwdXQgZ28KK3RvIHN0ZG91dC4gVGhpcyB3
YXksIHlvdSBjYW4gZWFzaWx5IHNlcGFyYXRlIHRoZSB0d28gdXNpbmcgcmVkaXJlY3Rpb24uIEZv
cgorZXhhbXBsZToKK2BgYAorLi9teV90ZXN0ID4gZ29vZ2xldGVzdF9vdXRwdXQudHh0CitgYGAK
KworIyMgV2h5IHNob3VsZCBJIHByZWZlciB0ZXN0IGZpeHR1cmVzIG92ZXIgZ2xvYmFsIHZhcmlh
Ymxlcz8gIyMKKworVGhlcmUgYXJlIHNldmVyYWwgZ29vZCByZWFzb25zOgorICAxLiBJdCdzIGxp
a2VseSB5b3VyIHRlc3QgbmVlZHMgdG8gY2hhbmdlIHRoZSBzdGF0ZXMgb2YgaXRzIGdsb2JhbCB2
YXJpYWJsZXMuIFRoaXMgbWFrZXMgaXQgZGlmZmljdWx0IHRvIGtlZXAgc2lkZSBlZmZlY3RzIGZy
b20gZXNjYXBpbmcgb25lIHRlc3QgYW5kIGNvbnRhbWluYXRpbmcgb3RoZXJzLCBtYWtpbmcgZGVi
dWdnaW5nIGRpZmZpY3VsdC4gQnkgdXNpbmcgZml4dHVyZXMsIGVhY2ggdGVzdCBoYXMgYSBmcmVz
aCBzZXQgb2YgdmFyaWFibGVzIHRoYXQncyBkaWZmZXJlbnQgKGJ1dCB3aXRoIHRoZSBzYW1lIG5h
bWVzKS4gVGh1cywgdGVzdHMgYXJlIGtlcHQgaW5kZXBlbmRlbnQgb2YgZWFjaCBvdGhlci4KKyAg
MS4gR2xvYmFsIHZhcmlhYmxlcyBwb2xsdXRlIHRoZSBnbG9iYWwgbmFtZXNwYWNlLgorICAxLiBU
ZXN0IGZpeHR1cmVzIGNhbiBiZSByZXVzZWQgdmlhIHN1YmNsYXNzaW5nLCB3aGljaCBjYW5ub3Qg
YmUgZG9uZSBlYXNpbHkgd2l0aCBnbG9iYWwgdmFyaWFibGVzLiBUaGlzIGlzIHVzZWZ1bCBpZiBt
YW55IHRlc3QgY2FzZXMgaGF2ZSBzb21ldGhpbmcgaW4gY29tbW9uLgorCisjIyBIb3cgZG8gSSB0
ZXN0IHByaXZhdGUgY2xhc3MgbWVtYmVycyB3aXRob3V0IHdyaXRpbmcgRlJJRU5EXF9URVNUKClz
PyAjIworCitZb3Ugc2hvdWxkIHRyeSB0byB3cml0ZSB0ZXN0YWJsZSBjb2RlLCB3aGljaCBtZWFu
cyBjbGFzc2VzIHNob3VsZCBiZSBlYXNpbHkKK3Rlc3RlZCBmcm9tIHRoZWlyIHB1YmxpYyBpbnRl
cmZhY2UuIE9uZSB3YXkgdG8gYWNoaWV2ZSB0aGlzIGlzIHRoZSBQaW1wbCBpZGlvbToKK3lvdSBt
b3ZlIGFsbCBwcml2YXRlIG1lbWJlcnMgb2YgYSBjbGFzcyBpbnRvIGEgaGVscGVyIGNsYXNzLCBh
bmQgbWFrZSBhbGwKK21lbWJlcnMgb2YgdGhlIGhlbHBlciBjbGFzcyBwdWJsaWMuCisKK1lvdSBo
YXZlIHNldmVyYWwgb3RoZXIgb3B0aW9ucyB0aGF0IGRvbid0IHJlcXVpcmUgdXNpbmcgYEZSSUVO
RF9URVNUYDoKKyAgKiBXcml0ZSB0aGUgdGVzdHMgYXMgbWVtYmVycyBvZiB0aGUgZml4dHVyZSBj
bGFzczoKK2BgYAorY2xhc3MgRm9vIHsKKyAgZnJpZW5kIGNsYXNzIEZvb1Rlc3Q7CisgIC4uLgor
fTsKKworY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3Rl
ZDoKKyAgLi4uCisgIHZvaWQgVGVzdDEoKSB7Li4ufSAvLyBUaGlzIGFjY2Vzc2VzIHByaXZhdGUg
bWVtYmVycyBvZiBjbGFzcyBGb28uCisgIHZvaWQgVGVzdDIoKSB7Li4ufSAvLyBTbyBkb2VzIHRo
aXMgb25lLgorfTsKKworVEVTVF9GKEZvb1Rlc3QsIFRlc3QxKSB7CisgIFRlc3QxKCk7Cit9CisK
K1RFU1RfRihGb29UZXN0LCBUZXN0MikgeworICBUZXN0MigpOworfQorYGBgCisgICogSW4gdGhl
IGZpeHR1cmUgY2xhc3MsIHdyaXRlIGFjY2Vzc29ycyBmb3IgdGhlIHRlc3RlZCBjbGFzcycgcHJp
dmF0ZSBtZW1iZXJzLCB0aGVuIHVzZSB0aGUgYWNjZXNzb3JzIGluIHlvdXIgdGVzdHM6CitgYGAK
K2NsYXNzIEZvbyB7CisgIGZyaWVuZCBjbGFzcyBGb29UZXN0OworICAuLi4KK307CisKK2NsYXNz
IEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIC4uLgor
ICBUMSBnZXRfcHJpdmF0ZV9tZW1iZXIxKEZvbyogb2JqKSB7CisgICAgcmV0dXJuIG9iai0+cHJp
dmF0ZV9tZW1iZXIxXzsKKyAgfQorfTsKKworVEVTVF9GKEZvb1Rlc3QsIFRlc3QxKSB7CisgIC4u
LgorICBnZXRfcHJpdmF0ZV9tZW1iZXIxKHgpCisgIC4uLgorfQorYGBgCisgICogSWYgdGhlIG1l
dGhvZHMgYXJlIGRlY2xhcmVkICoqcHJvdGVjdGVkKiosIHlvdSBjYW4gY2hhbmdlIHRoZWlyIGFj
Y2VzcyBsZXZlbCBpbiBhIHRlc3Qtb25seSBzdWJjbGFzczoKK2BgYAorY2xhc3MgWW91ckNsYXNz
IHsKKyAgLi4uCisgcHJvdGVjdGVkOiAvLyBwcm90ZWN0ZWQgYWNjZXNzIGZvciB0ZXN0YWJpbGl0
eS4KKyAgaW50IERvU29tZXRoaW5nUmV0dXJuaW5nSW50KCk7CisgIC4uLgorfTsKKworLy8gaW4g
dGhlIHlvdXJfY2xhc3NfdGVzdC5jYyBmaWxlOgorY2xhc3MgVGVzdGFibGVZb3VyQ2xhc3MgOiBw
dWJsaWMgWW91ckNsYXNzIHsKKyAgLi4uCisgcHVibGljOiB1c2luZyBZb3VyQ2xhc3M6OkRvU29t
ZXRoaW5nUmV0dXJuaW5nSW50OyAvLyBjaGFuZ2VzIGFjY2VzcyByaWdodHMKKyAgLi4uCit9Owor
CitURVNUX0YoWW91ckNsYXNzVGVzdCwgRG9Tb21ldGhpbmdUZXN0KSB7CisgIFRlc3RhYmxlWW91
ckNsYXNzIG9iajsKKyAgYXNzZXJ0RXF1YWxzKGV4cGVjdGVkX3ZhbHVlLCBvYmouRG9Tb21ldGhp
bmdSZXR1cm5pbmdJbnQoKSk7Cit9CitgYGAKKworIyMgSG93IGRvIEkgdGVzdCBwcml2YXRlIGNs
YXNzIHN0YXRpYyBtZW1iZXJzIHdpdGhvdXQgd3JpdGluZyBGUklFTkRcX1RFU1QoKXM/ICMjCisK
K1dlIGZpbmQgcHJpdmF0ZSBzdGF0aWMgbWV0aG9kcyBjbHV0dGVyIHRoZSBoZWFkZXIgZmlsZS4g
IFRoZXkgYXJlCitpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGFuZCBpZGVhbGx5IHNob3VsZCBiZSBr
ZXB0IG91dCBvZiBhIC5oLiBTbyBvZnRlbiBJIG1ha2UKK3RoZW0gZnJlZSBmdW5jdGlvbnMgaW5z
dGVhZC4KKworSW5zdGVhZCBvZjoKK2BgYAorLy8gZm9vLmgKK2NsYXNzIEZvbyB7CisgIC4uLgor
IHByaXZhdGU6CisgIHN0YXRpYyBib29sIEZ1bmMoaW50IG4pOworfTsKKworLy8gZm9vLmNjCiti
b29sIEZvbzo6RnVuYyhpbnQgbikgeyAuLi4gfQorCisvLyBmb29fdGVzdC5jYworRVhQRUNUX1RS
VUUoRm9vOjpGdW5jKDEyMzQ1KSk7CitgYGAKKworWW91IHByb2JhYmx5IHNob3VsZCBiZXR0ZXIg
d3JpdGU6CitgYGAKKy8vIGZvby5oCitjbGFzcyBGb28geworICAuLi4KK307CisKKy8vIGZvby5j
YworbmFtZXNwYWNlIGludGVybmFsIHsKKyAgYm9vbCBGdW5jKGludCBuKSB7IC4uLiB9Cit9CisK
Ky8vIGZvb190ZXN0LmNjCituYW1lc3BhY2UgaW50ZXJuYWwgeworICBib29sIEZ1bmMoaW50IG4p
OworfQorCitFWFBFQ1RfVFJVRShpbnRlcm5hbDo6RnVuYygxMjM0NSkpOworYGBgCisKKyMjIEkg
d291bGQgbGlrZSB0byBydW4gYSB0ZXN0IHNldmVyYWwgdGltZXMgd2l0aCBkaWZmZXJlbnQgcGFy
YW1ldGVycy4gRG8gSSBuZWVkIHRvIHdyaXRlIHNldmVyYWwgc2ltaWxhciBjb3BpZXMgb2YgaXQ/
ICMjCisKK05vLiBZb3UgY2FuIHVzZSBhIGZlYXR1cmUgY2FsbGVkIFt2YWx1ZS1wYXJhbWV0ZXJp
emVkIHRlc3RzXShWMV81X0FkdmFuY2VkR3VpZGUubWQjVmFsdWVfUGFyYW1ldGVyaXplZF9UZXN0
cykgd2hpY2gKK2xldHMgeW91IHJlcGVhdCB5b3VyIHRlc3RzIHdpdGggZGlmZmVyZW50IHBhcmFt
ZXRlcnMsIHdpdGhvdXQgZGVmaW5pbmcgaXQgbW9yZSB0aGFuIG9uY2UuCisKKyMjIEhvdyBkbyBJ
IHRlc3QgYSBmaWxlIHRoYXQgZGVmaW5lcyBtYWluKCk/ICMjCisKK1RvIHRlc3QgYSBgZm9vLmNj
YCBmaWxlLCB5b3UgbmVlZCB0byBjb21waWxlIGFuZCBsaW5rIGl0IGludG8geW91ciB1bml0IHRl
c3QKK3Byb2dyYW0uIEhvd2V2ZXIsIHdoZW4gdGhlIGZpbGUgY29udGFpbnMgYSBkZWZpbml0aW9u
IGZvciB0aGUgYG1haW4oKWAKK2Z1bmN0aW9uLCBpdCB3aWxsIGNsYXNoIHdpdGggdGhlIGBtYWlu
KClgIG9mIHlvdXIgdW5pdCB0ZXN0LCBhbmQgd2lsbCByZXN1bHQgaW4KK2EgYnVpbGQgZXJyb3Iu
CisKK1RoZSByaWdodCBzb2x1dGlvbiBpcyB0byBzcGxpdCBpdCBpbnRvIHRocmVlIGZpbGVzOgor
ICAxLiBgZm9vLmhgIHdoaWNoIGNvbnRhaW5zIHRoZSBkZWNsYXJhdGlvbnMsCisgIDEuIGBmb28u
Y2NgIHdoaWNoIGNvbnRhaW5zIHRoZSBkZWZpbml0aW9ucyBleGNlcHQgYG1haW4oKWAsIGFuZAor
ICAxLiBgZm9vX21haW4uY2NgIHdoaWNoIGNvbnRhaW5zIG5vdGhpbmcgYnV0IHRoZSBkZWZpbml0
aW9uIG9mIGBtYWluKClgLgorCitUaGVuIGBmb28uY2NgIGNhbiBiZSBlYXNpbHkgdGVzdGVkLgor
CitJZiB5b3UgYXJlIGFkZGluZyB0ZXN0cyB0byBhbiBleGlzdGluZyBmaWxlIGFuZCBkb24ndCB3
YW50IGFuIGludHJ1c2l2ZSBjaGFuZ2UKK2xpa2UgdGhpcywgdGhlcmUgaXMgYSBoYWNrOiBqdXN0
IGluY2x1ZGUgdGhlIGVudGlyZSBgZm9vLmNjYCBmaWxlIGluIHlvdXIgdW5pdAordGVzdC4gRm9y
IGV4YW1wbGU6CitgYGAKKy8vIEZpbGUgZm9vX3VuaXR0ZXN0LmNjCisKKy8vIFRoZSBoZWFkZXJz
IHNlY3Rpb24KKy4uLgorCisvLyBSZW5hbWVzIG1haW4oKSBpbiBmb28uY2MgdG8gbWFrZSByb29t
IGZvciB0aGUgdW5pdCB0ZXN0IG1haW4oKQorI2RlZmluZSBtYWluIEZvb01haW4KKworI2luY2x1
ZGUgImEvYi9mb28uY2MiCisKKy8vIFRoZSB0ZXN0cyBzdGFydCBoZXJlLgorLi4uCitgYGAKKwor
CitIb3dldmVyLCBwbGVhc2UgcmVtZW1iZXIgdGhpcyBpcyBhIGhhY2sgYW5kIHNob3VsZCBvbmx5
IGJlIHVzZWQgYXMgdGhlIGxhc3QKK3Jlc29ydC4KKworIyMgV2hhdCBjYW4gdGhlIHN0YXRlbWVu
dCBhcmd1bWVudCBpbiBBU1NFUlRcX0RFQVRIKCkgYmU/ICMjCisKK2BBU1NFUlRfREVBVEgoX3N0
YXRlbWVudF8sIF9yZWdleF8pYCAob3IgYW55IGRlYXRoIGFzc2VydGlvbiBtYWNybykgY2FuIGJl
IHVzZWQKK3doZXJldmVyIGBfc3RhdGVtZW50X2AgaXMgdmFsaWQuIFNvIGJhc2ljYWxseSBgX3N0
YXRlbWVudF9gIGNhbiBiZSBhbnkgQysrCitzdGF0ZW1lbnQgdGhhdCBtYWtlcyBzZW5zZSBpbiB0
aGUgY3VycmVudCBjb250ZXh0LiBJbiBwYXJ0aWN1bGFyLCBpdCBjYW4KK3JlZmVyZW5jZSBnbG9i
YWwgYW5kL29yIGxvY2FsIHZhcmlhYmxlcywgYW5kIGNhbiBiZToKKyAgKiBhIHNpbXBsZSBmdW5j
dGlvbiBjYWxsIChvZnRlbiB0aGUgY2FzZSksCisgICogYSBjb21wbGV4IGV4cHJlc3Npb24sIG9y
CisgICogYSBjb21wb3VuZCBzdGF0ZW1lbnQuCisKKz4gU29tZSBleGFtcGxlcyBhcmUgc2hvd24g
aGVyZToKKworYGBgCisvLyBBIGRlYXRoIHRlc3QgY2FuIGJlIGEgc2ltcGxlIGZ1bmN0aW9uIGNh
bGwuCitURVNUKE15RGVhdGhUZXN0LCBGdW5jdGlvbkNhbGwpIHsKKyAgQVNTRVJUX0RFQVRIKFh5
eig1KSwgIlh5eiBmYWlsZWQiKTsKK30KKworLy8gT3IgYSBjb21wbGV4IGV4cHJlc3Npb24gdGhh
dCByZWZlcmVuY2VzIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zLgorVEVTVChNeURlYXRoVGVzdCwg
Q29tcGxleEV4cHJlc3Npb24pIHsKKyAgY29uc3QgYm9vbCBjID0gQ29uZGl0aW9uKCk7CisgIEFT
U0VSVF9ERUFUSCgoYyA/IEZ1bmMxKDApIDogb2JqZWN0Mi5NZXRob2QoInRlc3QiKSksCisgICAg
ICAgICAgICAgICAiKEZ1bmMxfE1ldGhvZCkgZmFpbGVkIik7Cit9CisKKy8vIERlYXRoIGFzc2Vy
dGlvbnMgY2FuIGJlIHVzZWQgYW55IHdoZXJlIGluIGEgZnVuY3Rpb24uIEluCisvLyBwYXJ0aWN1
bGFyLCB0aGV5IGNhbiBiZSBpbnNpZGUgYSBsb29wLgorVEVTVChNeURlYXRoVGVzdCwgSW5zaWRl
TG9vcCkgeworICAvLyBWZXJpZmllcyB0aGF0IEZvbygwKSwgRm9vKDEpLCAuLi4sIGFuZCBGb28o
NCkgYWxsIGRpZS4KKyAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBpKyspIHsKKyAgICBFWFBFQ1Rf
REVBVEhfTShGb28oaSksICJGb28gaGFzIFxcZCsgZXJyb3JzIiwKKyAgICAgICAgICAgICAgICAg
ICA6OnRlc3Rpbmc6Ok1lc3NhZ2UoKSA8PCAid2hlcmUgaSBpcyAiIDw8IGkpOworICB9Cit9CisK
Ky8vIEEgZGVhdGggYXNzZXJ0aW9uIGNhbiBjb250YWluIGEgY29tcG91bmQgc3RhdGVtZW50Lgor
VEVTVChNeURlYXRoVGVzdCwgQ29tcG91bmRTdGF0ZW1lbnQpIHsKKyAgLy8gVmVyaWZpZXMgdGhh
dCBhdCBsZWFzZSBvbmUgb2YgQmFyKDApLCBCYXIoMSksIC4uLiwgYW5kCisgIC8vIEJhcig0KSBk
aWVzLgorICBBU1NFUlRfREVBVEgoeworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgaSsrKSB7
CisgICAgICBCYXIoaSk7CisgICAgfQorICB9LAorICAiQmFyIGhhcyBcXGQrIGVycm9ycyIpO30K
K2BgYAorCitgZ29vZ2xldGVzdF91bml0dGVzdC5jY2AgY29udGFpbnMgbW9yZSBleGFtcGxlcyBp
ZiB5b3UgYXJlIGludGVyZXN0ZWQuCisKKyMjIFdoYXQgc3ludGF4IGRvZXMgdGhlIHJlZ3VsYXIg
ZXhwcmVzc2lvbiBpbiBBU1NFUlRcX0RFQVRIIHVzZT8gIyMKKworT24gUE9TSVggc3lzdGVtcywg
R29vZ2xlIFRlc3QgdXNlcyB0aGUgUE9TSVggRXh0ZW5kZWQgcmVndWxhcgorZXhwcmVzc2lvbiBz
eW50YXgKKyhodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JlZ3VsYXJfZXhwcmVzc2lvbiNQ
T1NJWF9FeHRlbmRlZF9SZWd1bGFyX0V4cHJlc3Npb25zKS4gT24KK1dpbmRvd3MsIGl0IHVzZXMg
YSBsaW1pdGVkIHZhcmlhbnQgb2YgcmVndWxhciBleHByZXNzaW9uIHN5bnRheC4gRm9yCittb3Jl
IGRldGFpbHMsIHNlZSB0aGUgW3JlZ3VsYXIgZXhwcmVzc2lvbiBzeW50YXhdKFYxXzVfQWR2YW5j
ZWRHdWlkZS5tZCNSZWd1bGFyX0V4cHJlc3Npb25fU3ludGF4KS4KKworIyMgSSBoYXZlIGEgZml4
dHVyZSBjbGFzcyBGb28sIGJ1dCBURVNUXF9GKEZvbywgQmFyKSBnaXZlcyBtZSBlcnJvciAibm8g
bWF0Y2hpbmcgZnVuY3Rpb24gZm9yIGNhbGwgdG8gRm9vOjpGb28oKSIuIFdoeT8gIyMKKworR29v
Z2xlIFRlc3QgbmVlZHMgdG8gYmUgYWJsZSB0byBjcmVhdGUgb2JqZWN0cyBvZiB5b3VyIHRlc3Qg
Zml4dHVyZSBjbGFzcywgc28KK2l0IG11c3QgaGF2ZSBhIGRlZmF1bHQgY29uc3RydWN0b3IuIE5v
cm1hbGx5IHRoZSBjb21waWxlciB3aWxsIGRlZmluZSBvbmUgZm9yCit5b3UuIEhvd2V2ZXIsIHRo
ZXJlIGFyZSBjYXNlcyB3aGVyZSB5b3UgaGF2ZSB0byBkZWZpbmUgeW91ciBvd246CisgICogSWYg
eW91IGV4cGxpY2l0bHkgZGVjbGFyZSBhIG5vbi1kZWZhdWx0IGNvbnN0cnVjdG9yIGZvciBjbGFz
cyBgRm9vYCwgdGhlbiB5b3UgbmVlZCB0byBkZWZpbmUgYSBkZWZhdWx0IGNvbnN0cnVjdG9yLCBl
dmVuIGlmIGl0IHdvdWxkIGJlIGVtcHR5LgorICAqIElmIGBGb29gIGhhcyBhIGNvbnN0IG5vbi1z
dGF0aWMgZGF0YSBtZW1iZXIsIHRoZW4geW91IGhhdmUgdG8gZGVmaW5lIHRoZSBkZWZhdWx0IGNv
bnN0cnVjdG9yIF9hbmRfIGluaXRpYWxpemUgdGhlIGNvbnN0IG1lbWJlciBpbiB0aGUgaW5pdGlh
bGl6ZXIgbGlzdCBvZiB0aGUgY29uc3RydWN0b3IuIChFYXJseSB2ZXJzaW9ucyBvZiBgZ2NjYCBk
b2Vzbid0IGZvcmNlIHlvdSB0byBpbml0aWFsaXplIHRoZSBjb25zdCBtZW1iZXIuIEl0J3MgYSBi
dWcgdGhhdCBoYXMgYmVlbiBmaXhlZCBpbiBgZ2NjIDRgLikKKworIyMgV2h5IGRvZXMgQVNTRVJU
XF9ERUFUSCBjb21wbGFpbiBhYm91dCBwcmV2aW91cyB0aHJlYWRzIHRoYXQgd2VyZSBhbHJlYWR5
IGpvaW5lZD8gIyMKKworV2l0aCB0aGUgTGludXggcHRocmVhZCBsaWJyYXJ5LCB0aGVyZSBpcyBu
byB0dXJuaW5nIGJhY2sgb25jZSB5b3UgY3Jvc3MgdGhlCitsaW5lIGZyb20gc2luZ2xlIHRocmVh
ZCB0byBtdWx0aXBsZSB0aHJlYWRzLiBUaGUgZmlyc3QgdGltZSB5b3UgY3JlYXRlIGEKK3RocmVh
ZCwgYSBtYW5hZ2VyIHRocmVhZCBpcyBjcmVhdGVkIGluIGFkZGl0aW9uLCBzbyB5b3UgZ2V0IDMs
IG5vdCAyLCB0aHJlYWRzLgorTGF0ZXIgd2hlbiB0aGUgdGhyZWFkIHlvdSBjcmVhdGUgam9pbnMg
dGhlIG1haW4gdGhyZWFkLCB0aGUgdGhyZWFkIGNvdW50CitkZWNyZW1lbnRzIGJ5IDEsIGJ1dCB0
aGUgbWFuYWdlciB0aHJlYWQgd2lsbCBuZXZlciBiZSBraWxsZWQsIHNvIHlvdSBzdGlsbCBoYXZl
CisyIHRocmVhZHMsIHdoaWNoIG1lYW5zIHlvdSBjYW5ub3Qgc2FmZWx5IHJ1biBhIGRlYXRoIHRl
c3QuCisKK1RoZSBuZXcgTlBUTCB0aHJlYWQgbGlicmFyeSBkb2Vzbid0IHN1ZmZlciBmcm9tIHRo
aXMgcHJvYmxlbSwgYXMgaXQgZG9lc24ndAorY3JlYXRlIGEgbWFuYWdlciB0aHJlYWQuIEhvd2V2
ZXIsIGlmIHlvdSBkb24ndCBjb250cm9sIHdoaWNoIG1hY2hpbmUgeW91ciB0ZXN0CitydW5zIG9u
LCB5b3Ugc2hvdWxkbid0IGRlcGVuZCBvbiB0aGlzLgorCisjIyBXaHkgZG9lcyBHb29nbGUgVGVz
dCByZXF1aXJlIHRoZSBlbnRpcmUgdGVzdCBjYXNlLCBpbnN0ZWFkIG9mIGluZGl2aWR1YWwgdGVz
dHMsIHRvIGJlIG5hbWVkIEZPT0RlYXRoVGVzdCB3aGVuIGl0IHVzZXMgQVNTRVJUXF9ERUFUSD8g
IyMKKworR29vZ2xlIFRlc3QgZG9lcyBub3QgaW50ZXJsZWF2ZSB0ZXN0cyBmcm9tIGRpZmZlcmVu
dCB0ZXN0IGNhc2VzLiBUaGF0IGlzLCBpdAorcnVucyBhbGwgdGVzdHMgaW4gb25lIHRlc3QgY2Fz
ZSBmaXJzdCwgYW5kIHRoZW4gcnVucyBhbGwgdGVzdHMgaW4gdGhlIG5leHQgdGVzdAorY2FzZSwg
YW5kIHNvIG9uLiBHb29nbGUgVGVzdCBkb2VzIHRoaXMgYmVjYXVzZSBpdCBuZWVkcyB0byBzZXQg
dXAgYSB0ZXN0IGNhc2UKK2JlZm9yZSB0aGUgZmlyc3QgdGVzdCBpbiBpdCBpcyBydW4sIGFuZCB0
ZWFyIGl0IGRvd24gYWZ0ZXJ3b3Jkcy4gU3BsaXR0aW5nIHVwCit0aGUgdGVzdCBjYXNlIHdvdWxk
IHJlcXVpcmUgbXVsdGlwbGUgc2V0LXVwIGFuZCB0ZWFyLWRvd24gcHJvY2Vzc2VzLCB3aGljaCBp
cworaW5lZmZpY2llbnQgYW5kIG1ha2VzIHRoZSBzZW1hbnRpY3MgdW5jbGVhbi4KKworSWYgd2Ug
d2VyZSB0byBkZXRlcm1pbmUgdGhlIG9yZGVyIG9mIHRlc3RzIGJhc2VkIG9uIHRlc3QgbmFtZSBp
bnN0ZWFkIG9mIHRlc3QKK2Nhc2UgbmFtZSwgdGhlbiB3ZSB3b3VsZCBoYXZlIGEgcHJvYmxlbSB3
aXRoIHRoZSBmb2xsb3dpbmcgc2l0dWF0aW9uOgorCitgYGAKK1RFU1RfRihGb29UZXN0LCBBYmNE
ZWF0aFRlc3QpIHsgLi4uIH0KK1RFU1RfRihGb29UZXN0LCBVdncpIHsgLi4uIH0KKworVEVTVF9G
KEJhclRlc3QsIERlZkRlYXRoVGVzdCkgeyAuLi4gfQorVEVTVF9GKEJhclRlc3QsIFh5eikgeyAu
Li4gfQorYGBgCisKK1NpbmNlIGBGb29UZXN0LkFiY0RlYXRoVGVzdGAgbmVlZHMgdG8gcnVuIGJl
Zm9yZSBgQmFyVGVzdC5YeXpgLCBhbmQgd2UgZG9uJ3QKK2ludGVybGVhdmUgdGVzdHMgZnJvbSBk
aWZmZXJlbnQgdGVzdCBjYXNlcywgd2UgbmVlZCB0byBydW4gYWxsIHRlc3RzIGluIHRoZQorYEZv
b1Rlc3RgIGNhc2UgYmVmb3JlIHJ1bm5pbmcgYW55IHRlc3QgaW4gdGhlIGBCYXJUZXN0YCBjYXNl
LiBUaGlzIGNvbnRyYWRpY3RzCit3aXRoIHRoZSByZXF1aXJlbWVudCB0byBydW4gYEJhclRlc3Qu
RGVmRGVhdGhUZXN0YCBiZWZvcmUgYEZvb1Rlc3QuVXZ3YC4KKworIyMgQnV0IEkgZG9uJ3QgbGlr
ZSBjYWxsaW5nIG15IGVudGlyZSB0ZXN0IGNhc2UgRk9PRGVhdGhUZXN0IHdoZW4gaXQgY29udGFp
bnMgYm90aCBkZWF0aCB0ZXN0cyBhbmQgbm9uLWRlYXRoIHRlc3RzLiBXaGF0IGRvIEkgZG8/ICMj
CisKK1lvdSBkb24ndCBoYXZlIHRvLCBidXQgaWYgeW91IGxpa2UsIHlvdSBtYXkgc3BsaXQgdXAg
dGhlIHRlc3QgY2FzZSBpbnRvCitgRm9vVGVzdGAgYW5kIGBGb29EZWF0aFRlc3RgLCB3aGVyZSB0
aGUgbmFtZXMgbWFrZSBpdCBjbGVhciB0aGF0IHRoZXkgYXJlCityZWxhdGVkOgorCitgYGAKK2Ns
YXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsgLi4uIH07CisKK1RFU1RfRihG
b29UZXN0LCBBYmMpIHsgLi4uIH0KK1RFU1RfRihGb29UZXN0LCBEZWYpIHsgLi4uIH0KKwordHlw
ZWRlZiBGb29UZXN0IEZvb0RlYXRoVGVzdDsKKworVEVTVF9GKEZvb0RlYXRoVGVzdCwgVXZ3KSB7
IC4uLiBFWFBFQ1RfREVBVEgoLi4uKSAuLi4gfQorVEVTVF9GKEZvb0RlYXRoVGVzdCwgWHl6KSB7
IC4uLiBBU1NFUlRfREVBVEgoLi4uKSAuLi4gfQorYGBgCisKKyMjIFRoZSBjb21waWxlciBjb21w
bGFpbnMgYWJvdXQgIm5vIG1hdGNoIGZvciAnb3BlcmF0b3I8PCciIHdoZW4gSSB1c2UgYW4gYXNz
ZXJ0aW9uLiBXaGF0IGdpdmVzPyAjIworCitJZiB5b3UgdXNlIGEgdXNlci1kZWZpbmVkIHR5cGUg
YEZvb1R5cGVgIGluIGFuIGFzc2VydGlvbiwgeW91IG11c3QgbWFrZSBzdXJlCit0aGVyZSBpcyBh
biBgc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYsIGNvbnN0IEZvb1R5cGUm
KWAgZnVuY3Rpb24KK2RlZmluZWQgc3VjaCB0aGF0IHdlIGNhbiBwcmludCBhIHZhbHVlIG9mIGBG
b29UeXBlYC4KKworSW4gYWRkaXRpb24sIGlmIGBGb29UeXBlYCBpcyBkZWNsYXJlZCBpbiBhIG5h
bWUgc3BhY2UsIHRoZSBgPDxgIG9wZXJhdG9yIGFsc28KK25lZWRzIHRvIGJlIGRlZmluZWQgaW4g
dGhlIF9zYW1lXyBuYW1lIHNwYWNlLgorCisjIyBIb3cgZG8gSSBzdXBwcmVzcyB0aGUgbWVtb3J5
IGxlYWsgbWVzc2FnZXMgb24gV2luZG93cz8gIyMKKworU2luY2UgdGhlIHN0YXRpY2FsbHkgaW5p
dGlhbGl6ZWQgR29vZ2xlIFRlc3Qgc2luZ2xldG9uIHJlcXVpcmVzIGFsbG9jYXRpb25zIG9uCit0
aGUgaGVhcCwgdGhlIFZpc3VhbCBDKysgbWVtb3J5IGxlYWsgZGV0ZWN0b3Igd2lsbCByZXBvcnQg
bWVtb3J5IGxlYWtzIGF0IHRoZQorZW5kIG9mIHRoZSBwcm9ncmFtIHJ1bi4gVGhlIGVhc2llc3Qg
d2F5IHRvIGF2b2lkIHRoaXMgaXMgdG8gdXNlIHRoZQorYF9DcnRNZW1DaGVja3BvaW50YCBhbmQg
YF9DcnRNZW1EdW1wQWxsT2JqZWN0c1NpbmNlYCBjYWxscyB0byBub3QgcmVwb3J0IGFueQorc3Rh
dGljYWxseSBpbml0aWFsaXplZCBoZWFwIG9iamVjdHMuIFNlZSBNU0ROIGZvciBtb3JlIGRldGFp
bHMgYW5kIGFkZGl0aW9uYWwKK2hlYXAgY2hlY2svZGVidWcgcm91dGluZXMuCisKKyMjIEkgYW0g
YnVpbGRpbmcgbXkgcHJvamVjdCB3aXRoIEdvb2dsZSBUZXN0IGluIFZpc3VhbCBTdHVkaW8gYW5k
IGFsbCBJJ20gZ2V0dGluZyBpcyBhIGJ1bmNoIG9mIGxpbmtlciBlcnJvcnMgKG9yIHdhcm5pbmdz
KS4gSGVscCEgIyMKKworWW91IG1heSBnZXQgYSBudW1iZXIgb2YgdGhlIGZvbGxvd2luZyBsaW5r
ZXIgZXJyb3Igb3Igd2FybmluZ3MgaWYgeW91CithdHRlbXB0IHRvIGxpbmsgeW91ciB0ZXN0IHBy
b2plY3Qgd2l0aCB0aGUgR29vZ2xlIFRlc3QgbGlicmFyeSB3aGVuCit5b3VyIHByb2plY3QgYW5k
IHRoZSBhcmUgbm90IGJ1aWx0IHVzaW5nIHRoZSBzYW1lIGNvbXBpbGVyIHNldHRpbmdzLgorCisg
ICogTE5LMjAwNTogc3ltYm9sIGFscmVhZHkgZGVmaW5lZCBpbiBvYmplY3QKKyAgKiBMTks0MjE3
OiBsb2NhbGx5IGRlZmluZWQgc3ltYm9sICdzeW1ib2wnIGltcG9ydGVkIGluIGZ1bmN0aW9uICdm
dW5jdGlvbicKKyAgKiBMTks0MDQ5OiBsb2NhbGx5IGRlZmluZWQgc3ltYm9sICdzeW1ib2wnIGlt
cG9ydGVkCisKK1RoZSBHb29nbGUgVGVzdCBwcm9qZWN0IChndGVzdC52Y3Byb2opIGhhcyB0aGUg
UnVudGltZSBMaWJyYXJ5IG9wdGlvbgorc2V0IHRvIC9NVCAodXNlIG11bHRpLXRocmVhZGVkIHN0
YXRpYyBsaWJyYXJpZXMsIC9NVGQgZm9yIGRlYnVnKS4gSWYKK3lvdXIgcHJvamVjdCB1c2VzIHNv
bWV0aGluZyBlbHNlLCBmb3IgZXhhbXBsZSAvTUQgKHVzZSBtdWx0aS10aHJlYWRlZAorRExMcywg
L01EZCBmb3IgZGVidWcpLCB5b3UgbmVlZCB0byBjaGFuZ2UgdGhlIHNldHRpbmcgaW4gdGhlIEdv
b2dsZQorVGVzdCBwcm9qZWN0IHRvIG1hdGNoIHlvdXIgcHJvamVjdCdzLgorCitUbyB1cGRhdGUg
dGhpcyBzZXR0aW5nIG9wZW4gdGhlIHByb2plY3QgcHJvcGVydGllcyBpbiB0aGUgVmlzdWFsCitT
dHVkaW8gSURFIHRoZW4gc2VsZWN0IHRoZSBicmFuY2ggQ29uZmlndXJhdGlvbiBQcm9wZXJ0aWVz
IHwgQy9DKysgfAorQ29kZSBHZW5lcmF0aW9uIGFuZCBjaGFuZ2UgdGhlIG9wdGlvbiAiUnVudGlt
ZSBMaWJyYXJ5Ii4gIFlvdSBtYXkgYWxzbyB0cnkKK3VzaW5nIGd0ZXN0LW1kLnZjcHJvaiBpbnN0
ZWFkIG9mIGd0ZXN0LnZjcHJvai4KKworIyMgSSBwdXQgbXkgdGVzdHMgaW4gYSBsaWJyYXJ5IGFu
ZCBHb29nbGUgVGVzdCBkb2Vzbid0IHJ1biB0aGVtLiBXaGF0J3MgaGFwcGVuaW5nPyAjIworSGF2
ZSB5b3UgcmVhZCBhCitbd2FybmluZ10oVjFfNV9QcmltZXIubWQjaW1wb3J0YW50LW5vdGUtZm9y
LXZpc3VhbC1jLXVzZXJzKSBvbgordGhlIEdvb2dsZSBUZXN0IFByaW1lciBwYWdlPworCisjIyBJ
IHdhbnQgdG8gdXNlIEdvb2dsZSBUZXN0IHdpdGggVmlzdWFsIFN0dWRpbyBidXQgZG9uJ3Qga25v
dyB3aGVyZSB0byBzdGFydC4gIyMKK01hbnkgcGVvcGxlIGFyZSBpbiB5b3VyIHBvc2l0aW9uIGFu
ZCBvbmUgb2YgdGhlIHBvc3RlZCBoaXMgc29sdXRpb24gdG8KK291ciBtYWlsaW5nIGxpc3QuIEhl
cmUgaXMgaGlzIGxpbms6CitodHRwOi8vaGFzc2FuamFtaWxhaG1hZC5ibG9nc3BvdC5jb20vMjAw
OS8wNy9ndGVzdC1zdGFydGVycy1oZWxwLmh0bWwuCisKKyMjIE15IHF1ZXN0aW9uIGlzIG5vdCBj
b3ZlcmVkIGluIHlvdXIgRkFRISAjIworCitJZiB5b3UgY2Fubm90IGZpbmQgdGhlIGFuc3dlciB0
byB5b3VyIHF1ZXN0aW9uIGluIHRoaXMgRkFRLCB0aGVyZSBhcmUKK3NvbWUgb3RoZXIgcmVzb3Vy
Y2VzIHlvdSBjYW4gdXNlOgorCisgIDEuIHJlYWQgb3RoZXIgW3dpa2kgcGFnZXNdKGh0dHA6Ly9j
b2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0L3cvbGlzdCksCisgIDEuIHNlYXJjaCB0aGUgbWFp
bGluZyBsaXN0IFthcmNoaXZlXShodHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXAvZ29vZ2xl
dGVzdGZyYW1ld29yay90b3BpY3MpLAorICAxLiBhc2sgaXQgb24gW2dvb2dsZXRlc3RmcmFtZXdv
cmtAZ29vZ2xlZ3JvdXBzLmNvbV0obWFpbHRvOmdvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3Jv
dXBzLmNvbSkgYW5kIHNvbWVvbmUgd2lsbCBhbnN3ZXIgaXQgKHRvIHByZXZlbnQgc3BhbSwgd2Ug
cmVxdWlyZSB5b3UgdG8gam9pbiB0aGUgW2Rpc2N1c3Npb24gZ3JvdXBdKGh0dHA6Ly9ncm91cHMu
Z29vZ2xlLmNvbS9ncm91cC9nb29nbGV0ZXN0ZnJhbWV3b3JrKSBiZWZvcmUgeW91IGNhbiBwb3N0
LikuCisKK1BsZWFzZSBub3RlIHRoYXQgY3JlYXRpbmcgYW4gaXNzdWUgaW4gdGhlCitbaXNzdWUg
dHJhY2tlcl0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRlc3QvaXNzdWVzL2xpc3Qp
IGlzIF9ub3RfCithIGdvb2Qgd2F5IHRvIGdldCB5b3VyIGFuc3dlciwgYXMgaXQgaXMgbW9uaXRv
cmVkIGluZnJlcXVlbnRseSBieSBhCit2ZXJ5IHNtYWxsIG51bWJlciBvZiBwZW9wbGUuCisKK1do
ZW4gYXNraW5nIGEgcXVlc3Rpb24sIGl0J3MgaGVscGZ1bCB0byBwcm92aWRlIGFzIG11Y2ggb2Yg
dGhlCitmb2xsb3dpbmcgaW5mb3JtYXRpb24gYXMgcG9zc2libGUgKHBlb3BsZSBjYW5ub3QgaGVs
cCB5b3UgaWYgdGhlcmUncworbm90IGVub3VnaCBpbmZvcm1hdGlvbiBpbiB5b3VyIHF1ZXN0aW9u
KToKKworICAqIHRoZSB2ZXJzaW9uIChvciB0aGUgcmV2aXNpb24gbnVtYmVyIGlmIHlvdSBjaGVj
ayBvdXQgZnJvbSBTVk4gZGlyZWN0bHkpIG9mIEdvb2dsZSBUZXN0IHlvdSB1c2UgKEdvb2dsZSBU
ZXN0IGlzIHVuZGVyIGFjdGl2ZSBkZXZlbG9wbWVudCwgc28gaXQncyBwb3NzaWJsZSB0aGF0IHlv
dXIgcHJvYmxlbSBoYXMgYmVlbiBzb2x2ZWQgaW4gYSBsYXRlciB2ZXJzaW9uKSwKKyAgKiB5b3Vy
IG9wZXJhdGluZyBzeXN0ZW0sCisgICogdGhlIG5hbWUgYW5kIHZlcnNpb24gb2YgeW91ciBjb21w
aWxlciwKKyAgKiB0aGUgY29tcGxldGUgY29tbWFuZCBsaW5lIGZsYWdzIHlvdSBnaXZlIHRvIHlv
dXIgY29tcGlsZXIsCisgICogdGhlIGNvbXBsZXRlIGNvbXBpbGVyIGVycm9yIG1lc3NhZ2VzIChp
ZiB0aGUgcXVlc3Rpb24gaXMgYWJvdXQgY29tcGlsYXRpb24pLAorICAqIHRoZSBfYWN0dWFsXyBj
b2RlIChpZGVhbGx5LCBhIG1pbmltYWwgYnV0IGNvbXBsZXRlIHByb2dyYW0pIHRoYXQgaGFzIHRo
ZSBwcm9ibGVtIHlvdSBlbmNvdW50ZXIu75yBCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2Nz
L1YxXzVfUHJpbWVyLm1kIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9WMV81X1ByaW1lci5tZApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42OTYwZDJjZTRjMzQ0ZmQzOTIzMTdiZGIwMzlmZDRiM2IxOGNjNDA0Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9WMV81X1ByaW1lci5tZApAQCAtMCwwICsxLDQ5NyBA
QAorCisKKyMgSW50cm9kdWN0aW9uOiBXaHkgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yaz8g
IworCitfR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29ya18gaGVscHMgeW91IHdyaXRlIGJldHRl
ciBDKysgdGVzdHMuCisKK05vIG1hdHRlciB3aGV0aGVyIHlvdSB3b3JrIG9uIExpbnV4LCBXaW5k
b3dzLCBvciBhIE1hYywgaWYgeW91IHdyaXRlIEMrKyBjb2RlLAorR29vZ2xlIFRlc3QgY2FuIGhl
bHAgeW91LgorCitTbyB3aGF0IG1ha2VzIGEgZ29vZCB0ZXN0LCBhbmQgaG93IGRvZXMgR29vZ2xl
IEMrKyBUZXN0aW5nIEZyYW1ld29yayBmaXQgaW4/IFdlIGJlbGlldmU6CisgIDEuIFRlc3RzIHNo
b3VsZCBiZSBfaW5kZXBlbmRlbnRfIGFuZCBfcmVwZWF0YWJsZV8uIEl0J3MgYSBwYWluIHRvIGRl
YnVnIGEgdGVzdCB0aGF0IHN1Y2NlZWRzIG9yIGZhaWxzIGFzIGEgcmVzdWx0IG9mIG90aGVyIHRl
c3RzLiAgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayBpc29sYXRlcyB0aGUgdGVzdHMgYnkg
cnVubmluZyBlYWNoIG9mIHRoZW0gb24gYSBkaWZmZXJlbnQgb2JqZWN0LiBXaGVuIGEgdGVzdCBm
YWlscywgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayBhbGxvd3MgeW91IHRvIHJ1biBpdCBp
biBpc29sYXRpb24gZm9yIHF1aWNrIGRlYnVnZ2luZy4KKyAgMS4gVGVzdHMgc2hvdWxkIGJlIHdl
bGwgX29yZ2FuaXplZF8gYW5kIHJlZmxlY3QgdGhlIHN0cnVjdHVyZSBvZiB0aGUgdGVzdGVkIGNv
ZGUuICBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIGdyb3VwcyByZWxhdGVkIHRlc3RzIGlu
dG8gdGVzdCBjYXNlcyB0aGF0IGNhbiBzaGFyZSBkYXRhIGFuZCBzdWJyb3V0aW5lcy4gVGhpcyBj
b21tb24gcGF0dGVybiBpcyBlYXN5IHRvIHJlY29nbml6ZSBhbmQgbWFrZXMgdGVzdHMgZWFzeSB0
byBtYWludGFpbi4gU3VjaCBjb25zaXN0ZW5jeSBpcyBlc3BlY2lhbGx5IGhlbHBmdWwgd2hlbiBw
ZW9wbGUgc3dpdGNoIHByb2plY3RzIGFuZCBzdGFydCB0byB3b3JrIG9uIGEgbmV3IGNvZGUgYmFz
ZS4KKyAgMS4gVGVzdHMgc2hvdWxkIGJlIF9wb3J0YWJsZV8gYW5kIF9yZXVzYWJsZV8uIFRoZSBv
cGVuLXNvdXJjZSBjb21tdW5pdHkgaGFzIGEgbG90IG9mIGNvZGUgdGhhdCBpcyBwbGF0Zm9ybS1u
ZXV0cmFsLCBpdHMgdGVzdHMgc2hvdWxkIGFsc28gYmUgcGxhdGZvcm0tbmV1dHJhbC4gIEdvb2ds
ZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgd29ya3Mgb24gZGlmZmVyZW50IE9TZXMsIHdpdGggZGlm
ZmVyZW50IGNvbXBpbGVycyAoZ2NjLCBNU1ZDLCBhbmQgb3RoZXJzKSwgd2l0aCBvciB3aXRob3V0
IGV4Y2VwdGlvbnMsIHNvIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgdGVzdHMgY2FuIGVh
c2lseSB3b3JrIHdpdGggYSB2YXJpZXR5IG9mIGNvbmZpZ3VyYXRpb25zLiAgKE5vdGUgdGhhdCB0
aGUgY3VycmVudCByZWxlYXNlIG9ubHkgY29udGFpbnMgYnVpbGQgc2NyaXB0cyBmb3IgTGludXgg
LSB3ZSBhcmUgYWN0aXZlbHkgd29ya2luZyBvbiBzY3JpcHRzIGZvciBvdGhlciBwbGF0Zm9ybXMu
KQorICAxLiBXaGVuIHRlc3RzIGZhaWwsIHRoZXkgc2hvdWxkIHByb3ZpZGUgYXMgbXVjaCBfaW5m
b3JtYXRpb25fIGFib3V0IHRoZSBwcm9ibGVtIGFzIHBvc3NpYmxlLiBHb29nbGUgQysrIFRlc3Rp
bmcgRnJhbWV3b3JrIGRvZXNuJ3Qgc3RvcCBhdCB0aGUgZmlyc3QgdGVzdCBmYWlsdXJlLiBJbnN0
ZWFkLCBpdCBvbmx5IHN0b3BzIHRoZSBjdXJyZW50IHRlc3QgYW5kIGNvbnRpbnVlcyB3aXRoIHRo
ZSBuZXh0LiBZb3UgY2FuIGFsc28gc2V0IHVwIHRlc3RzIHRoYXQgcmVwb3J0IG5vbi1mYXRhbCBm
YWlsdXJlcyBhZnRlciB3aGljaCB0aGUgY3VycmVudCB0ZXN0IGNvbnRpbnVlcy4gVGh1cywgeW91
IGNhbiBkZXRlY3QgYW5kIGZpeCBtdWx0aXBsZSBidWdzIGluIGEgc2luZ2xlIHJ1bi1lZGl0LWNv
bXBpbGUgY3ljbGUuCisgIDEuIFRoZSB0ZXN0aW5nIGZyYW1ld29yayBzaG91bGQgbGliZXJhdGUg
dGVzdCB3cml0ZXJzIGZyb20gaG91c2VrZWVwaW5nIGNob3JlcyBhbmQgbGV0IHRoZW0gZm9jdXMg
b24gdGhlIHRlc3QgX2NvbnRlbnRfLiAgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayBhdXRv
bWF0aWNhbGx5IGtlZXBzIHRyYWNrIG9mIGFsbCB0ZXN0cyBkZWZpbmVkLCBhbmQgZG9lc24ndCBy
ZXF1aXJlIHRoZSB1c2VyIHRvIGVudW1lcmF0ZSB0aGVtIGluIG9yZGVyIHRvIHJ1biB0aGVtLgor
ICAxLiBUZXN0cyBzaG91bGQgYmUgX2Zhc3RfLiBXaXRoIEdvb2dsZSBDKysgVGVzdGluZyBGcmFt
ZXdvcmssIHlvdSBjYW4gcmV1c2Ugc2hhcmVkIHJlc291cmNlcyBhY3Jvc3MgdGVzdHMgYW5kIHBh
eSBmb3IgdGhlIHNldC11cC90ZWFyLWRvd24gb25seSBvbmNlLCB3aXRob3V0IG1ha2luZyB0ZXN0
cyBkZXBlbmQgb24gZWFjaCBvdGhlci4KKworU2luY2UgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1l
d29yayBpcyBiYXNlZCBvbiB0aGUgcG9wdWxhciB4VW5pdAorYXJjaGl0ZWN0dXJlLCB5b3UnbGwg
ZmVlbCByaWdodCBhdCBob21lIGlmIHlvdSd2ZSB1c2VkIEpVbml0IG9yIFB5VW5pdCBiZWZvcmUu
CitJZiBub3QsIGl0IHdpbGwgdGFrZSB5b3UgYWJvdXQgMTAgbWludXRlcyB0byBsZWFybiB0aGUg
YmFzaWNzIGFuZCBnZXQgc3RhcnRlZC4KK1NvIGxldCdzIGdvIQorCitfTm90ZTpfIFdlIHNvbWV0
aW1lcyByZWZlciB0byBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIGluZm9ybWFsbHkKK2Fz
IF9Hb29nbGUgVGVzdF8uCisKKyMgU2V0dGluZyB1cCBhIE5ldyBUZXN0IFByb2plY3QgIworCitU
byB3cml0ZSBhIHRlc3QgcHJvZ3JhbSB1c2luZyBHb29nbGUgVGVzdCwgeW91IG5lZWQgdG8gY29t
cGlsZSBHb29nbGUKK1Rlc3QgaW50byBhIGxpYnJhcnkgYW5kIGxpbmsgeW91ciB0ZXN0IHdpdGgg
aXQuICBXZSBwcm92aWRlIGJ1aWxkCitmaWxlcyBmb3Igc29tZSBwb3B1bGFyIGJ1aWxkIHN5c3Rl
bXMgKGBtc3ZjL2AgZm9yIFZpc3VhbCBTdHVkaW8sCitgeGNvZGUvYCBmb3IgTWFjIFhjb2RlLCBg
bWFrZS9gIGZvciBHTlUgbWFrZSwgYGNvZGVnZWFyL2AgZm9yIEJvcmxhbmQKK0MrKyBCdWlsZGVy
LCBhbmQgdGhlIGF1dG90b29scyBzY3JpcHQgaW4gdGhlCitHb29nbGUgVGVzdCByb290IGRpcmVj
dG9yeSkuICBJZiB5b3VyIGJ1aWxkIHN5c3RlbSBpcyBub3Qgb24gdGhpcworbGlzdCwgeW91IGNh
biB0YWtlIGEgbG9vayBhdCBgbWFrZS9NYWtlZmlsZWAgdG8gbGVhcm4gaG93IEdvb2dsZSBUZXN0
CitzaG91bGQgYmUgY29tcGlsZWQgKGJhc2ljYWxseSB5b3Ugd2FudCB0byBjb21waWxlIGBzcmMv
Z3Rlc3QtYWxsLmNjYAord2l0aCBgR1RFU1RfUk9PVGAgYW5kIGBHVEVTVF9ST09UL2luY2x1ZGVg
IGluIHRoZSBoZWFkZXIgc2VhcmNoIHBhdGgsCit3aGVyZSBgR1RFU1RfUk9PVGAgaXMgdGhlIEdv
b2dsZSBUZXN0IHJvb3QgZGlyZWN0b3J5KS4KKworT25jZSB5b3UgYXJlIGFibGUgdG8gY29tcGls
ZSB0aGUgR29vZ2xlIFRlc3QgbGlicmFyeSwgeW91IHNob3VsZAorY3JlYXRlIGEgcHJvamVjdCBv
ciBidWlsZCB0YXJnZXQgZm9yIHlvdXIgdGVzdCBwcm9ncmFtLiAgTWFrZSBzdXJlIHlvdQoraGF2
ZSBgR1RFU1RfUk9PVC9pbmNsdWRlYCBpbiB0aGUgaGVhZGVyIHNlYXJjaCBwYXRoIHNvIHRoYXQg
dGhlCitjb21waWxlciBjYW4gZmluZCBgPGd0ZXN0L2d0ZXN0Lmg+YCB3aGVuIGNvbXBpbGluZyB5
b3VyIHRlc3QuICBTZXQgdXAKK3lvdXIgdGVzdCBwcm9qZWN0IHRvIGxpbmsgd2l0aCB0aGUgR29v
Z2xlIFRlc3QgbGlicmFyeSAoZm9yIGV4YW1wbGUsCitpbiBWaXN1YWwgU3R1ZGlvLCB0aGlzIGlz
IGRvbmUgYnkgYWRkaW5nIGEgZGVwZW5kZW5jeSBvbgorYGd0ZXN0LnZjcHJvamApLgorCitJZiB5
b3Ugc3RpbGwgaGF2ZSBxdWVzdGlvbnMsIHRha2UgYSBsb29rIGF0IGhvdyBHb29nbGUgVGVzdCdz
IG93bgordGVzdHMgYXJlIGJ1aWx0IGFuZCB1c2UgdGhlbSBhcyBleGFtcGxlcy4KKworIyBCYXNp
YyBDb25jZXB0cyAjCisKK1doZW4gdXNpbmcgR29vZ2xlIFRlc3QsIHlvdSBzdGFydCBieSB3cml0
aW5nIF9hc3NlcnRpb25zXywgd2hpY2ggYXJlIHN0YXRlbWVudHMKK3RoYXQgY2hlY2sgd2hldGhl
ciBhIGNvbmRpdGlvbiBpcyB0cnVlLiBBbiBhc3NlcnRpb24ncyByZXN1bHQgY2FuIGJlIF9zdWNj
ZXNzXywKK19ub25mYXRhbCBmYWlsdXJlXywgb3IgX2ZhdGFsIGZhaWx1cmVfLiBJZiBhIGZhdGFs
IGZhaWx1cmUgb2NjdXJzLCBpdCBhYm9ydHMKK3RoZSBjdXJyZW50IGZ1bmN0aW9uOyBvdGhlcndp
c2UgdGhlIHByb2dyYW0gY29udGludWVzIG5vcm1hbGx5LgorCitfVGVzdHNfIHVzZSBhc3NlcnRp
b25zIHRvIHZlcmlmeSB0aGUgdGVzdGVkIGNvZGUncyBiZWhhdmlvci4gSWYgYSB0ZXN0IGNyYXNo
ZXMKK29yIGhhcyBhIGZhaWxlZCBhc3NlcnRpb24sIHRoZW4gaXQgX2ZhaWxzXzsgb3RoZXJ3aXNl
IGl0IF9zdWNjZWVkc18uCisKK0EgX3Rlc3QgY2FzZV8gY29udGFpbnMgb25lIG9yIG1hbnkgdGVz
dHMuIFlvdSBzaG91bGQgZ3JvdXAgeW91ciB0ZXN0cyBpbnRvIHRlc3QKK2Nhc2VzIHRoYXQgcmVm
bGVjdCB0aGUgc3RydWN0dXJlIG9mIHRoZSB0ZXN0ZWQgY29kZS4gV2hlbiBtdWx0aXBsZSB0ZXN0
cyBpbiBhCit0ZXN0IGNhc2UgbmVlZCB0byBzaGFyZSBjb21tb24gb2JqZWN0cyBhbmQgc3Vicm91
dGluZXMsIHlvdSBjYW4gcHV0IHRoZW0gaW50byBhCitfdGVzdCBmaXh0dXJlXyBjbGFzcy4KKwor
QSBfdGVzdCBwcm9ncmFtXyBjYW4gY29udGFpbiBtdWx0aXBsZSB0ZXN0IGNhc2VzLgorCitXZSds
bCBub3cgZXhwbGFpbiBob3cgdG8gd3JpdGUgYSB0ZXN0IHByb2dyYW0sIHN0YXJ0aW5nIGF0IHRo
ZSBpbmRpdmlkdWFsCithc3NlcnRpb24gbGV2ZWwgYW5kIGJ1aWxkaW5nIHVwIHRvIHRlc3RzIGFu
ZCB0ZXN0IGNhc2VzLgorCisjIEFzc2VydGlvbnMgIworCitHb29nbGUgVGVzdCBhc3NlcnRpb25z
IGFyZSBtYWNyb3MgdGhhdCByZXNlbWJsZSBmdW5jdGlvbiBjYWxscy4gWW91IHRlc3QgYQorY2xh
c3Mgb3IgZnVuY3Rpb24gYnkgbWFraW5nIGFzc2VydGlvbnMgYWJvdXQgaXRzIGJlaGF2aW9yLiBX
aGVuIGFuIGFzc2VydGlvbgorZmFpbHMsIEdvb2dsZSBUZXN0IHByaW50cyB0aGUgYXNzZXJ0aW9u
J3Mgc291cmNlIGZpbGUgYW5kIGxpbmUgbnVtYmVyIGxvY2F0aW9uLAorYWxvbmcgd2l0aCBhIGZh
aWx1cmUgbWVzc2FnZS4gWW91IG1heSBhbHNvIHN1cHBseSBhIGN1c3RvbSBmYWlsdXJlIG1lc3Nh
Z2UKK3doaWNoIHdpbGwgYmUgYXBwZW5kZWQgdG8gR29vZ2xlIFRlc3QncyBtZXNzYWdlLgorCitU
aGUgYXNzZXJ0aW9ucyBjb21lIGluIHBhaXJzIHRoYXQgdGVzdCB0aGUgc2FtZSB0aGluZyBidXQg
aGF2ZSBkaWZmZXJlbnQKK2VmZmVjdHMgb24gdGhlIGN1cnJlbnQgZnVuY3Rpb24uIGBBU1NFUlRf
KmAgdmVyc2lvbnMgZ2VuZXJhdGUgZmF0YWwgZmFpbHVyZXMKK3doZW4gdGhleSBmYWlsLCBhbmQg
KiphYm9ydCB0aGUgY3VycmVudCBmdW5jdGlvbioqLiBgRVhQRUNUXypgIHZlcnNpb25zIGdlbmVy
YXRlCitub25mYXRhbCBmYWlsdXJlcywgd2hpY2ggZG9uJ3QgYWJvcnQgdGhlIGN1cnJlbnQgZnVu
Y3Rpb24uIFVzdWFsbHkgYEVYUEVDVF8qYAorYXJlIHByZWZlcnJlZCwgYXMgdGhleSBhbGxvdyBt
b3JlIHRoYW4gb25lIGZhaWx1cmVzIHRvIGJlIHJlcG9ydGVkIGluIGEgdGVzdC4KK0hvd2V2ZXIs
IHlvdSBzaG91bGQgdXNlIGBBU1NFUlRfKmAgaWYgaXQgZG9lc24ndCBtYWtlIHNlbnNlIHRvIGNv
bnRpbnVlIHdoZW4KK3RoZSBhc3NlcnRpb24gaW4gcXVlc3Rpb24gZmFpbHMuCisKK1NpbmNlIGEg
ZmFpbGVkIGBBU1NFUlRfKmAgcmV0dXJucyBmcm9tIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGltbWVk
aWF0ZWx5LAorcG9zc2libHkgc2tpcHBpbmcgY2xlYW4tdXAgY29kZSB0aGF0IGNvbWVzIGFmdGVy
IGl0LCBpdCBtYXkgY2F1c2UgYSBzcGFjZSBsZWFrLgorRGVwZW5kaW5nIG9uIHRoZSBuYXR1cmUg
b2YgdGhlIGxlYWssIGl0IG1heSBvciBtYXkgbm90IGJlIHdvcnRoIGZpeGluZyAtIHNvCitrZWVw
IHRoaXMgaW4gbWluZCBpZiB5b3UgZ2V0IGEgaGVhcCBjaGVja2VyIGVycm9yIGluIGFkZGl0aW9u
IHRvIGFzc2VydGlvbgorZXJyb3JzLgorCitUbyBwcm92aWRlIGEgY3VzdG9tIGZhaWx1cmUgbWVz
c2FnZSwgc2ltcGx5IHN0cmVhbSBpdCBpbnRvIHRoZSBtYWNybyB1c2luZyB0aGUKK2A8PGAgb3Bl
cmF0b3IsIG9yIGEgc2VxdWVuY2Ugb2Ygc3VjaCBvcGVyYXRvcnMuIEFuIGV4YW1wbGU6CitgYGAK
K0FTU0VSVF9FUSh4LnNpemUoKSwgeS5zaXplKCkpIDw8ICJWZWN0b3JzIHggYW5kIHkgYXJlIG9m
IHVuZXF1YWwgbGVuZ3RoIjsKKworZm9yIChpbnQgaSA9IDA7IGkgPCB4LnNpemUoKTsgKytpKSB7
CisgIEVYUEVDVF9FUSh4W2ldLCB5W2ldKSA8PCAiVmVjdG9ycyB4IGFuZCB5IGRpZmZlciBhdCBp
bmRleCAiIDw8IGk7Cit9CitgYGAKKworQW55dGhpbmcgdGhhdCBjYW4gYmUgc3RyZWFtZWQgdG8g
YW4gYG9zdHJlYW1gIGNhbiBiZSBzdHJlYW1lZCB0byBhbiBhc3NlcnRpb24KK21hY3JvLS1pbiBw
YXJ0aWN1bGFyLCBDIHN0cmluZ3MgYW5kIGBzdHJpbmdgIG9iamVjdHMuIElmIGEgd2lkZSBzdHJp
bmcKKyhgd2NoYXJfdCpgLCBgVENIQVIqYCBpbiBgVU5JQ09ERWAgbW9kZSBvbiBXaW5kb3dzLCBv
ciBgc3RkOjp3c3RyaW5nYCkgaXMKK3N0cmVhbWVkIHRvIGFuIGFzc2VydGlvbiwgaXQgd2lsbCBi
ZSB0cmFuc2xhdGVkIHRvIFVURi04IHdoZW4gcHJpbnRlZC4KKworIyMgQmFzaWMgQXNzZXJ0aW9u
cyAjIworCitUaGVzZSBhc3NlcnRpb25zIGRvIGJhc2ljIHRydWUvZmFsc2UgY29uZGl0aW9uIHRl
c3RpbmcuCit8ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFzc2VydGlvbioqIHwg
KipWZXJpZmllcyoqIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tfDotLS0tLS0tLS0tLS0tfAorfCBgQVNTRVJUX1RSVUUoYF9jb25kaXRpb25fYClgOyAg
fCBgRVhQRUNUX1RSVUUoYF9jb25kaXRpb25fYClgOyAgIHwgX2NvbmRpdGlvbl8gaXMgdHJ1ZSB8
Cit8IGBBU1NFUlRfRkFMU0UoYF9jb25kaXRpb25fYClgOyB8IGBFWFBFQ1RfRkFMU0UoYF9jb25k
aXRpb25fYClgOyAgfCBfY29uZGl0aW9uXyBpcyBmYWxzZSB8CisKK1JlbWVtYmVyLCB3aGVuIHRo
ZXkgZmFpbCwgYEFTU0VSVF8qYCB5aWVsZHMgYSBmYXRhbCBmYWlsdXJlIGFuZAorcmV0dXJucyBm
cm9tIHRoZSBjdXJyZW50IGZ1bmN0aW9uLCB3aGlsZSBgRVhQRUNUXypgIHlpZWxkcyBhIG5vbmZh
dGFsCitmYWlsdXJlLCBhbGxvd2luZyB0aGUgZnVuY3Rpb24gdG8gY29udGludWUgcnVubmluZy4g
SW4gZWl0aGVyIGNhc2UsIGFuCithc3NlcnRpb24gZmFpbHVyZSBtZWFucyBpdHMgY29udGFpbmlu
ZyB0ZXN0IGZhaWxzLgorCitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KKwor
IyMgQmluYXJ5IENvbXBhcmlzb24gIyMKKworVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBhc3NlcnRp
b25zIHRoYXQgY29tcGFyZSB0d28gdmFsdWVzLgorCit8ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAq
Kk5vbmZhdGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6LS0tLS0tLS0tLS0tLS0t
LS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAorfGBBU1NFUlRf
RVEoYF9leHBlY3RlZF9gLCBgX2FjdHVhbF9gKTtgfGBFWFBFQ1RfRVEoYF9leHBlY3RlZF9gLCBg
X2FjdHVhbF9gKTtgfCBfZXhwZWN0ZWRfIGA9PWAgX2FjdHVhbF8gfAorfGBBU1NFUlRfTkUoYF92
YWwxX2AsIGBfdmFsMl9gKTtgICAgICAgfGBFWFBFQ1RfTkUoYF92YWwxX2AsIGBfdmFsMl9gKTtg
ICAgICAgfCBfdmFsMV8gYCE9YCBfdmFsMl8gfAorfGBBU1NFUlRfTFQoYF92YWwxX2AsIGBfdmFs
Ml9gKTtgICAgICAgfGBFWFBFQ1RfTFQoYF92YWwxX2AsIGBfdmFsMl9gKTtgICAgICAgfCBfdmFs
MV8gYDxgIF92YWwyXyB8Cit8YEFTU0VSVF9MRShgX3ZhbDFfYCwgYF92YWwyX2ApO2AgICAgICB8
YEVYUEVDVF9MRShgX3ZhbDFfYCwgYF92YWwyX2ApO2AgICAgICB8IF92YWwxXyBgPD1gIF92YWwy
XyB8Cit8YEFTU0VSVF9HVChgX3ZhbDFfYCwgYF92YWwyX2ApO2AgICAgICB8YEVYUEVDVF9HVChg
X3ZhbDFfYCwgYF92YWwyX2ApO2AgICAgICB8IF92YWwxXyBgPmAgX3ZhbDJfIHwKK3xgQVNTRVJU
X0dFKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAgIHxgRVhQRUNUX0dFKGBfdmFsMV9gLCBgX3Zh
bDJfYCk7YCAgICAgIHwgX3ZhbDFfIGA+PWAgX3ZhbDJfIHwKKworSW4gdGhlIGV2ZW50IG9mIGEg
ZmFpbHVyZSwgR29vZ2xlIFRlc3QgcHJpbnRzIGJvdGggX3ZhbDFfIGFuZCBfdmFsMl8KKy4gSW4g
YEFTU0VSVF9FUSpgIGFuZCBgRVhQRUNUX0VRKmAgKGFuZCBhbGwgb3RoZXIgZXF1YWxpdHkgYXNz
ZXJ0aW9ucword2UnbGwgaW50cm9kdWNlIGxhdGVyKSwgeW91IHNob3VsZCBwdXQgdGhlIGV4cHJl
c3Npb24geW91IHdhbnQgdG8gdGVzdAoraW4gdGhlIHBvc2l0aW9uIG9mIF9hY3R1YWxfLCBhbmQg
cHV0IGl0cyBleHBlY3RlZCB2YWx1ZSBpbiBfZXhwZWN0ZWRfLAorYXMgR29vZ2xlIFRlc3QncyBm
YWlsdXJlIG1lc3NhZ2VzIGFyZSBvcHRpbWl6ZWQgZm9yIHRoaXMgY29udmVudGlvbi4KKworVmFs
dWUgYXJndW1lbnRzIG11c3QgYmUgY29tcGFyYWJsZSBieSB0aGUgYXNzZXJ0aW9uJ3MgY29tcGFy
aXNvbiBvcGVyYXRvciBvcgoreW91J2xsIGdldCBhIGNvbXBpbGVyIGVycm9yLiBWYWx1ZXMgbXVz
dCBhbHNvIHN1cHBvcnQgdGhlIGA8PGAgb3BlcmF0b3IgZm9yCitzdHJlYW1pbmcgdG8gYW4gYG9z
dHJlYW1gLiBBbGwgYnVpbHQtaW4gdHlwZXMgc3VwcG9ydCB0aGlzLgorCitUaGVzZSBhc3NlcnRp
b25zIGNhbiB3b3JrIHdpdGggYSB1c2VyLWRlZmluZWQgdHlwZSwgYnV0IG9ubHkgaWYgeW91IGRl
ZmluZSB0aGUKK2NvcnJlc3BvbmRpbmcgY29tcGFyaXNvbiBvcGVyYXRvciAoZS5nLiBgPT1gLCBg
PGAsIGV0YykuICBJZiB0aGUgY29ycmVzcG9uZGluZworb3BlcmF0b3IgaXMgZGVmaW5lZCwgcHJl
ZmVyIHVzaW5nIHRoZSBgQVNTRVJUXyooKWAgbWFjcm9zIGJlY2F1c2UgdGhleSB3aWxsCitwcmlu
dCBvdXQgbm90IG9ubHkgdGhlIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbiwgYnV0IHRoZSB0d28g
b3BlcmFuZHMgYXMgd2VsbC4KKworQXJndW1lbnRzIGFyZSBhbHdheXMgZXZhbHVhdGVkIGV4YWN0
bHkgb25jZS4gVGhlcmVmb3JlLCBpdCdzIE9LIGZvciB0aGUKK2FyZ3VtZW50cyB0byBoYXZlIHNp
ZGUgZWZmZWN0cy4gSG93ZXZlciwgYXMgd2l0aCBhbnkgb3JkaW5hcnkgQy9DKysgZnVuY3Rpb24s
Cit0aGUgYXJndW1lbnRzJyBldmFsdWF0aW9uIG9yZGVyIGlzIHVuZGVmaW5lZCAoaS5lLiB0aGUg
Y29tcGlsZXIgaXMgZnJlZSB0bworY2hvb3NlIGFueSBvcmRlcikgYW5kIHlvdXIgY29kZSBzaG91
bGQgbm90IGRlcGVuZCBvbiBhbnkgcGFydGljdWxhciBhcmd1bWVudAorZXZhbHVhdGlvbiBvcmRl
ci4KKworYEFTU0VSVF9FUSgpYCBkb2VzIHBvaW50ZXIgZXF1YWxpdHkgb24gcG9pbnRlcnMuIElm
IHVzZWQgb24gdHdvIEMgc3RyaW5ncywgaXQKK3Rlc3RzIGlmIHRoZXkgYXJlIGluIHRoZSBzYW1l
IG1lbW9yeSBsb2NhdGlvbiwgbm90IGlmIHRoZXkgaGF2ZSB0aGUgc2FtZSB2YWx1ZS4KK1RoZXJl
Zm9yZSwgaWYgeW91IHdhbnQgdG8gY29tcGFyZSBDIHN0cmluZ3MgKGUuZy4gYGNvbnN0IGNoYXIq
YCkgYnkgdmFsdWUsIHVzZQorYEFTU0VSVF9TVFJFUSgpYCAsIHdoaWNoIHdpbGwgYmUgZGVzY3Jp
YmVkIGxhdGVyIG9uLiBJbiBwYXJ0aWN1bGFyLCB0byBhc3NlcnQKK3RoYXQgYSBDIHN0cmluZyBp
cyBgTlVMTGAsIHVzZSBgQVNTRVJUX1NUUkVRKE5VTEwsIGNfc3RyaW5nKWAgLiBIb3dldmVyLCB0
bworY29tcGFyZSB0d28gYHN0cmluZ2Agb2JqZWN0cywgeW91IHNob3VsZCB1c2UgYEFTU0VSVF9F
UWAuCisKK01hY3JvcyBpbiB0aGlzIHNlY3Rpb24gd29yayB3aXRoIGJvdGggbmFycm93IGFuZCB3
aWRlIHN0cmluZyBvYmplY3RzIChgc3RyaW5nYAorYW5kIGB3c3RyaW5nYCkuCisKK19BdmFpbGFi
aWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyBTdHJpbmcgQ29tcGFyaXNvbiAjIwor
CitUaGUgYXNzZXJ0aW9ucyBpbiB0aGlzIGdyb3VwIGNvbXBhcmUgdHdvICoqQyBzdHJpbmdzKiou
IElmIHlvdSB3YW50IHRvIGNvbXBhcmUKK3R3byBgc3RyaW5nYCBvYmplY3RzLCB1c2UgYEVYUEVD
VF9FUWAsIGBFWFBFQ1RfTkVgLCBhbmQgZXRjIGluc3RlYWQuCisKK3wgKipGYXRhbCBhc3NlcnRp
b24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0t
LS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8
IGBBU1NFUlRfU1RSRVEoYF9leHBlY3RlZFxfc3RyX2AsIGBfYWN0dWFsXF9zdHJfYCk7YCAgICB8
IGBFWFBFQ1RfU1RSRVEoYF9leHBlY3RlZFxfc3RyX2AsIGBfYWN0dWFsXF9zdHJfYCk7YCAgICAg
fCB0aGUgdHdvIEMgc3RyaW5ncyBoYXZlIHRoZSBzYW1lIGNvbnRlbnQgfAorfCBgQVNTRVJUX1NU
Uk5FKGBfc3RyMV9gLCBgX3N0cjJfYCk7YCAgICB8IGBFWFBFQ1RfU1RSTkUoYF9zdHIxX2AsIGBf
c3RyMl9gKTtgICAgICB8IHRoZSB0d28gQyBzdHJpbmdzIGhhdmUgZGlmZmVyZW50IGNvbnRlbnQg
fAorfCBgQVNTRVJUX1NUUkNBU0VFUShgX2V4cGVjdGVkXF9zdHJfYCwgYF9hY3R1YWxcX3N0cl9g
KTtgfCBgRVhQRUNUX1NUUkNBU0VFUShgX2V4cGVjdGVkXF9zdHJfYCwgYF9hY3R1YWxcX3N0cl9g
KTtgIHwgdGhlIHR3byBDIHN0cmluZ3MgaGF2ZSB0aGUgc2FtZSBjb250ZW50LCBpZ25vcmluZyBj
YXNlIHwKK3wgYEFTU0VSVF9TVFJDQVNFTkUoYF9zdHIxX2AsIGBfc3RyMl9gKTtgfCBgRVhQRUNU
X1NUUkNBU0VORShgX3N0cjFfYCwgYF9zdHIyX2ApO2AgfCB0aGUgdHdvIEMgc3RyaW5ncyBoYXZl
IGRpZmZlcmVudCBjb250ZW50LCBpZ25vcmluZyBjYXNlIHwKKworTm90ZSB0aGF0ICJDQVNFIiBp
biBhbiBhc3NlcnRpb24gbmFtZSBtZWFucyB0aGF0IGNhc2UgaXMgaWdub3JlZC4KKworYCpTVFJF
USpgIGFuZCBgKlNUUk5FKmAgYWxzbyBhY2NlcHQgd2lkZSBDIHN0cmluZ3MgKGB3Y2hhcl90KmAp
LiBJZiBhCitjb21wYXJpc29uIG9mIHR3byB3aWRlIHN0cmluZ3MgZmFpbHMsIHRoZWlyIHZhbHVl
cyB3aWxsIGJlIHByaW50ZWQgYXMgVVRGLTgKK25hcnJvdyBzdHJpbmdzLgorCitBIGBOVUxMYCBw
b2ludGVyIGFuZCBhbiBlbXB0eSBzdHJpbmcgYXJlIGNvbnNpZGVyZWQgX2RpZmZlcmVudF8uCisK
K19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgorCitTZWUgYWxzbzogRm9yIG1v
cmUgc3RyaW5nIGNvbXBhcmlzb24gdHJpY2tzIChzdWJzdHJpbmcsIHByZWZpeCwgc3VmZml4LCBh
bmQKK3JlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaGluZywgZm9yIGV4YW1wbGUpLCBzZWUgdGhlIFtB
ZHZhbmNlZEd1aWRlIEFkdmFuY2VkCitHb29nbGUgVGVzdCBHdWlkZV0uCisKKyMgU2ltcGxlIFRl
c3RzICMKKworVG8gY3JlYXRlIGEgdGVzdDoKKyAgMS4gVXNlIHRoZSBgVEVTVCgpYCBtYWNybyB0
byBkZWZpbmUgYW5kIG5hbWUgYSB0ZXN0IGZ1bmN0aW9uLCBUaGVzZSBhcmUgb3JkaW5hcnkgQysr
IGZ1bmN0aW9ucyB0aGF0IGRvbid0IHJldHVybiBhIHZhbHVlLgorICAxLiBJbiB0aGlzIGZ1bmN0
aW9uLCBhbG9uZyB3aXRoIGFueSB2YWxpZCBDKysgc3RhdGVtZW50cyB5b3Ugd2FudCB0byBpbmNs
dWRlLCB1c2UgdGhlIHZhcmlvdXMgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyB0byBjaGVjayB2YWx1
ZXMuCisgIDEuIFRoZSB0ZXN0J3MgcmVzdWx0IGlzIGRldGVybWluZWQgYnkgdGhlIGFzc2VydGlv
bnM7IGlmIGFueSBhc3NlcnRpb24gaW4gdGhlIHRlc3QgZmFpbHMgKGVpdGhlciBmYXRhbGx5IG9y
IG5vbi1mYXRhbGx5KSwgb3IgaWYgdGhlIHRlc3QgY3Jhc2hlcywgdGhlIGVudGlyZSB0ZXN0IGZh
aWxzLiBPdGhlcndpc2UsIGl0IHN1Y2NlZWRzLgorCitgYGAKK1RFU1QodGVzdF9jYXNlX25hbWUs
IHRlc3RfbmFtZSkgeworIC4uLiB0ZXN0IGJvZHkgLi4uCit9CitgYGAKKworCitgVEVTVCgpYCBh
cmd1bWVudHMgZ28gZnJvbSBnZW5lcmFsIHRvIHNwZWNpZmljLiBUaGUgX2ZpcnN0XyBhcmd1bWVu
dCBpcyB0aGUKK25hbWUgb2YgdGhlIHRlc3QgY2FzZSwgYW5kIHRoZSBfc2Vjb25kXyBhcmd1bWVu
dCBpcyB0aGUgdGVzdCdzIG5hbWUgd2l0aGluIHRoZQordGVzdCBjYXNlLiBSZW1lbWJlciB0aGF0
IGEgdGVzdCBjYXNlIGNhbiBjb250YWluIGFueSBudW1iZXIgb2YgaW5kaXZpZHVhbAordGVzdHMu
IEEgdGVzdCdzIF9mdWxsIG5hbWVfIGNvbnNpc3RzIG9mIGl0cyBjb250YWluaW5nIHRlc3QgY2Fz
ZSBhbmQgaXRzCitpbmRpdmlkdWFsIG5hbWUuIFRlc3RzIGZyb20gZGlmZmVyZW50IHRlc3QgY2Fz
ZXMgY2FuIGhhdmUgdGhlIHNhbWUgaW5kaXZpZHVhbAorbmFtZS4KKworRm9yIGV4YW1wbGUsIGxl
dCdzIHRha2UgYSBzaW1wbGUgaW50ZWdlciBmdW5jdGlvbjoKK2BgYAoraW50IEZhY3RvcmlhbChp
bnQgbik7IC8vIFJldHVybnMgdGhlIGZhY3RvcmlhbCBvZiBuCitgYGAKKworQSB0ZXN0IGNhc2Ug
Zm9yIHRoaXMgZnVuY3Rpb24gbWlnaHQgbG9vayBsaWtlOgorYGBgCisvLyBUZXN0cyBmYWN0b3Jp
YWwgb2YgMC4KK1RFU1QoRmFjdG9yaWFsVGVzdCwgSGFuZGxlc1plcm9JbnB1dCkgeworICBFWFBF
Q1RfRVEoMSwgRmFjdG9yaWFsKDApKTsKK30KKworLy8gVGVzdHMgZmFjdG9yaWFsIG9mIHBvc2l0
aXZlIG51bWJlcnMuCitURVNUKEZhY3RvcmlhbFRlc3QsIEhhbmRsZXNQb3NpdGl2ZUlucHV0KSB7
CisgIEVYUEVDVF9FUSgxLCBGYWN0b3JpYWwoMSkpOworICBFWFBFQ1RfRVEoMiwgRmFjdG9yaWFs
KDIpKTsKKyAgRVhQRUNUX0VRKDYsIEZhY3RvcmlhbCgzKSk7CisgIEVYUEVDVF9FUSg0MDMyMCwg
RmFjdG9yaWFsKDgpKTsKK30KK2BgYAorCitHb29nbGUgVGVzdCBncm91cHMgdGhlIHRlc3QgcmVz
dWx0cyBieSB0ZXN0IGNhc2VzLCBzbyBsb2dpY2FsbHktcmVsYXRlZCB0ZXN0cworc2hvdWxkIGJl
IGluIHRoZSBzYW1lIHRlc3QgY2FzZTsgaW4gb3RoZXIgd29yZHMsIHRoZSBmaXJzdCBhcmd1bWVu
dCB0byB0aGVpcgorYFRFU1QoKWAgc2hvdWxkIGJlIHRoZSBzYW1lLiBJbiB0aGUgYWJvdmUgZXhh
bXBsZSwgd2UgaGF2ZSB0d28gdGVzdHMsCitgSGFuZGxlc1plcm9JbnB1dGAgYW5kIGBIYW5kbGVz
UG9zaXRpdmVJbnB1dGAsIHRoYXQgYmVsb25nIHRvIHRoZSBzYW1lIHRlc3QKK2Nhc2UgYEZhY3Rv
cmlhbFRlc3RgLgorCitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyBU
ZXN0IEZpeHR1cmVzOiBVc2luZyB0aGUgU2FtZSBEYXRhIENvbmZpZ3VyYXRpb24gZm9yIE11bHRp
cGxlIFRlc3RzICMKKworSWYgeW91IGZpbmQgeW91cnNlbGYgd3JpdGluZyB0d28gb3IgbW9yZSB0
ZXN0cyB0aGF0IG9wZXJhdGUgb24gc2ltaWxhciBkYXRhLAoreW91IGNhbiB1c2UgYSBfdGVzdCBm
aXh0dXJlXy4gSXQgYWxsb3dzIHlvdSB0byByZXVzZSB0aGUgc2FtZSBjb25maWd1cmF0aW9uIG9m
CitvYmplY3RzIGZvciBzZXZlcmFsIGRpZmZlcmVudCB0ZXN0cy4KKworVG8gY3JlYXRlIGEgZml4
dHVyZSwganVzdDoKKyAgMS4gRGVyaXZlIGEgY2xhc3MgZnJvbSBgOjp0ZXN0aW5nOjpUZXN0YCAu
IFN0YXJ0IGl0cyBib2R5IHdpdGggYHByb3RlY3RlZDpgIG9yIGBwdWJsaWM6YCBhcyB3ZSdsbCB3
YW50IHRvIGFjY2VzcyBmaXh0dXJlIG1lbWJlcnMgZnJvbSBzdWItY2xhc3Nlcy4KKyAgMS4gSW5z
aWRlIHRoZSBjbGFzcywgZGVjbGFyZSBhbnkgb2JqZWN0cyB5b3UgcGxhbiB0byB1c2UuCisgIDEu
IElmIG5lY2Vzc2FyeSwgd3JpdGUgYSBkZWZhdWx0IGNvbnN0cnVjdG9yIG9yIGBTZXRVcCgpYCBm
dW5jdGlvbiB0byBwcmVwYXJlIHRoZSBvYmplY3RzIGZvciBlYWNoIHRlc3QuIEEgY29tbW9uIG1p
c3Rha2UgaXMgdG8gc3BlbGwgYFNldFVwKClgIGFzIGBTZXR1cCgpYCB3aXRoIGEgc21hbGwgYHVg
IC0gZG9uJ3QgbGV0IHRoYXQgaGFwcGVuIHRvIHlvdS4KKyAgMS4gSWYgbmVjZXNzYXJ5LCB3cml0
ZSBhIGRlc3RydWN0b3Igb3IgYFRlYXJEb3duKClgIGZ1bmN0aW9uIHRvIHJlbGVhc2UgYW55IHJl
c291cmNlcyB5b3UgYWxsb2NhdGVkIGluIGBTZXRVcCgpYCAuIFRvIGxlYXJuIHdoZW4geW91IHNo
b3VsZCB1c2UgdGhlIGNvbnN0cnVjdG9yL2Rlc3RydWN0b3IgYW5kIHdoZW4geW91IHNob3VsZCB1
c2UgYFNldFVwKCkvVGVhckRvd24oKWAsIHJlYWQgdGhpcyBbRkFRIGVudHJ5XShWMV81X0ZBUS5t
ZCNzaG91bGQtaS11c2UtdGhlLWNvbnN0cnVjdG9yZGVzdHJ1Y3Rvci1vZi10aGUtdGVzdC1maXh0
dXJlLW9yLXRoZS1zZXQtdXB0ZWFyLWRvd24tZnVuY3Rpb24pLgorICAxLiBJZiBuZWVkZWQsIGRl
ZmluZSBzdWJyb3V0aW5lcyBmb3IgeW91ciB0ZXN0cyB0byBzaGFyZS4KKworV2hlbiB1c2luZyBh
IGZpeHR1cmUsIHVzZSBgVEVTVF9GKClgIGluc3RlYWQgb2YgYFRFU1QoKWAgYXMgaXQgYWxsb3dz
IHlvdSB0bworYWNjZXNzIG9iamVjdHMgYW5kIHN1YnJvdXRpbmVzIGluIHRoZSB0ZXN0IGZpeHR1
cmU6CitgYGAKK1RFU1RfRih0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSB7CisgLi4uIHRlc3Qg
Ym9keSAuLi4KK30KK2BgYAorCitMaWtlIGBURVNUKClgLCB0aGUgZmlyc3QgYXJndW1lbnQgaXMg
dGhlIHRlc3QgY2FzZSBuYW1lLCBidXQgZm9yIGBURVNUX0YoKWAKK3RoaXMgbXVzdCBiZSB0aGUg
bmFtZSBvZiB0aGUgdGVzdCBmaXh0dXJlIGNsYXNzLiBZb3UndmUgcHJvYmFibHkgZ3Vlc3NlZDog
YF9GYAoraXMgZm9yIGZpeHR1cmUuCisKK1VuZm9ydHVuYXRlbHksIHRoZSBDKysgbWFjcm8gc3lz
dGVtIGRvZXMgbm90IGFsbG93IHVzIHRvIGNyZWF0ZSBhIHNpbmdsZSBtYWNybwordGhhdCBjYW4g
aGFuZGxlIGJvdGggdHlwZXMgb2YgdGVzdHMuIFVzaW5nIHRoZSB3cm9uZyBtYWNybyBjYXVzZXMg
YSBjb21waWxlcgorZXJyb3IuCisKK0Fsc28sIHlvdSBtdXN0IGZpcnN0IGRlZmluZSBhIHRlc3Qg
Zml4dHVyZSBjbGFzcyBiZWZvcmUgdXNpbmcgaXQgaW4gYQorYFRFU1RfRigpYCwgb3IgeW91J2xs
IGdldCB0aGUgY29tcGlsZXIgZXJyb3IgImB2aXJ0dWFsIG91dHNpZGUgY2xhc3MKK2RlY2xhcmF0
aW9uYCIuCisKK0ZvciBlYWNoIHRlc3QgZGVmaW5lZCB3aXRoIGBURVNUX0YoKWAsIEdvb2dsZSBU
ZXN0IHdpbGw6CisgIDEuIENyZWF0ZSBhIF9mcmVzaF8gdGVzdCBmaXh0dXJlIGF0IHJ1bnRpbWUK
KyAgMS4gSW1tZWRpYXRlbHkgaW5pdGlhbGl6ZSBpdCB2aWEgYFNldFVwKClgICwKKyAgMS4gUnVu
IHRoZSB0ZXN0CisgIDEuIENsZWFuIHVwIGJ5IGNhbGxpbmcgYFRlYXJEb3duKClgCisgIDEuIERl
bGV0ZSB0aGUgdGVzdCBmaXh0dXJlLiAgTm90ZSB0aGF0IGRpZmZlcmVudCB0ZXN0cyBpbiB0aGUg
c2FtZSB0ZXN0IGNhc2UgaGF2ZSBkaWZmZXJlbnQgdGVzdCBmaXh0dXJlIG9iamVjdHMsIGFuZCBH
b29nbGUgVGVzdCBhbHdheXMgZGVsZXRlcyBhIHRlc3QgZml4dHVyZSBiZWZvcmUgaXQgY3JlYXRl
cyB0aGUgbmV4dCBvbmUuIEdvb2dsZSBUZXN0IGRvZXMgbm90IHJldXNlIHRoZSBzYW1lIHRlc3Qg
Zml4dHVyZSBmb3IgbXVsdGlwbGUgdGVzdHMuIEFueSBjaGFuZ2VzIG9uZSB0ZXN0IG1ha2VzIHRv
IHRoZSBmaXh0dXJlIGRvIG5vdCBhZmZlY3Qgb3RoZXIgdGVzdHMuCisKK0FzIGFuIGV4YW1wbGUs
IGxldCdzIHdyaXRlIHRlc3RzIGZvciBhIEZJRk8gcXVldWUgY2xhc3MgbmFtZWQgYFF1ZXVlYCwg
d2hpY2gKK2hhcyB0aGUgZm9sbG93aW5nIGludGVyZmFjZToKK2BgYAordGVtcGxhdGUgPHR5cGVu
YW1lIEU+IC8vIEUgaXMgdGhlIGVsZW1lbnQgdHlwZS4KK2NsYXNzIFF1ZXVlIHsKKyBwdWJsaWM6
CisgIFF1ZXVlKCk7CisgIHZvaWQgRW5xdWV1ZShjb25zdCBFJiBlbGVtZW50KTsKKyAgRSogRGVx
dWV1ZSgpOyAvLyBSZXR1cm5zIE5VTEwgaWYgdGhlIHF1ZXVlIGlzIGVtcHR5LgorICBzaXplX3Qg
c2l6ZSgpIGNvbnN0OworICAuLi4KK307CitgYGAKKworRmlyc3QsIGRlZmluZSBhIGZpeHR1cmUg
Y2xhc3MuIEJ5IGNvbnZlbnRpb24sIHlvdSBzaG91bGQgZ2l2ZSBpdCB0aGUgbmFtZQorYEZvb1Rl
c3RgIHdoZXJlIGBGb29gIGlzIHRoZSBjbGFzcyBiZWluZyB0ZXN0ZWQuCitgYGAKK2NsYXNzIFF1
ZXVlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgdmlydHVh
bCB2b2lkIFNldFVwKCkgeworICAgIHExXy5FbnF1ZXVlKDEpOworICAgIHEyXy5FbnF1ZXVlKDIp
OworICAgIHEyXy5FbnF1ZXVlKDMpOworICB9CisKKyAgLy8gdmlydHVhbCB2b2lkIFRlYXJEb3du
KCkge30KKworICBRdWV1ZTxpbnQ+IHEwXzsKKyAgUXVldWU8aW50PiBxMV87CisgIFF1ZXVlPGlu
dD4gcTJfOworfTsKK2BgYAorCitJbiB0aGlzIGNhc2UsIGBUZWFyRG93bigpYCBpcyBub3QgbmVl
ZGVkIHNpbmNlIHdlIGRvbid0IGhhdmUgdG8gY2xlYW4gdXAgYWZ0ZXIKK2VhY2ggdGVzdCwgb3Ro
ZXIgdGhhbiB3aGF0J3MgYWxyZWFkeSBkb25lIGJ5IHRoZSBkZXN0cnVjdG9yLgorCitOb3cgd2Un
bGwgd3JpdGUgdGVzdHMgdXNpbmcgYFRFU1RfRigpYCBhbmQgdGhpcyBmaXh0dXJlLgorYGBgCitU
RVNUX0YoUXVldWVUZXN0LCBJc0VtcHR5SW5pdGlhbGx5KSB7CisgIEVYUEVDVF9FUSgwLCBxMF8u
c2l6ZSgpKTsKK30KKworVEVTVF9GKFF1ZXVlVGVzdCwgRGVxdWV1ZVdvcmtzKSB7CisgIGludCog
biA9IHEwXy5EZXF1ZXVlKCk7CisgIEVYUEVDVF9FUShOVUxMLCBuKTsKKworICBuID0gcTFfLkRl
cXVldWUoKTsKKyAgQVNTRVJUX1RSVUUobiAhPSBOVUxMKTsKKyAgRVhQRUNUX0VRKDEsICpuKTsK
KyAgRVhQRUNUX0VRKDAsIHExXy5zaXplKCkpOworICBkZWxldGUgbjsKKworICBuID0gcTJfLkRl
cXVldWUoKTsKKyAgQVNTRVJUX1RSVUUobiAhPSBOVUxMKTsKKyAgRVhQRUNUX0VRKDIsICpuKTsK
KyAgRVhQRUNUX0VRKDEsIHEyXy5zaXplKCkpOworICBkZWxldGUgbjsKK30KK2BgYAorCitUaGUg
YWJvdmUgdXNlcyBib3RoIGBBU1NFUlRfKmAgYW5kIGBFWFBFQ1RfKmAgYXNzZXJ0aW9ucy4gVGhl
IHJ1bGUgb2YgdGh1bWIgaXMKK3RvIHVzZSBgRVhQRUNUXypgIHdoZW4geW91IHdhbnQgdGhlIHRl
c3QgdG8gY29udGludWUgdG8gcmV2ZWFsIG1vcmUgZXJyb3JzCithZnRlciB0aGUgYXNzZXJ0aW9u
IGZhaWx1cmUsIGFuZCB1c2UgYEFTU0VSVF8qYCB3aGVuIGNvbnRpbnVpbmcgYWZ0ZXIgZmFpbHVy
ZQorZG9lc24ndCBtYWtlIHNlbnNlLiBGb3IgZXhhbXBsZSwgdGhlIHNlY29uZCBhc3NlcnRpb24g
aW4gdGhlIGBEZXF1ZXVlYCB0ZXN0IGlzCitgQVNTRVJUX1RSVUUobiAhPSBOVUxMKWAsIGFzIHdl
IG5lZWQgdG8gZGVyZWZlcmVuY2UgdGhlIHBvaW50ZXIgYG5gIGxhdGVyLAord2hpY2ggd291bGQg
bGVhZCB0byBhIHNlZ2ZhdWx0IHdoZW4gYG5gIGlzIGBOVUxMYC4KKworV2hlbiB0aGVzZSB0ZXN0
cyBydW4sIHRoZSBmb2xsb3dpbmcgaGFwcGVuczoKKyAgMS4gR29vZ2xlIFRlc3QgY29uc3RydWN0
cyBhIGBRdWV1ZVRlc3RgIG9iamVjdCAobGV0J3MgY2FsbCBpdCBgdDFgICkuCisgIDEuIGB0MS5T
ZXRVcCgpYCBpbml0aWFsaXplcyBgdDFgIC4KKyAgMS4gVGhlIGZpcnN0IHRlc3QgKCBgSXNFbXB0
eUluaXRpYWxseWAgKSBydW5zIG9uIGB0MWAgLgorICAxLiBgdDEuVGVhckRvd24oKWAgY2xlYW5z
IHVwIGFmdGVyIHRoZSB0ZXN0IGZpbmlzaGVzLgorICAxLiBgdDFgIGlzIGRlc3RydWN0ZWQuCisg
IDEuIFRoZSBhYm92ZSBzdGVwcyBhcmUgcmVwZWF0ZWQgb24gYW5vdGhlciBgUXVldWVUZXN0YCBv
YmplY3QsIHRoaXMgdGltZSBydW5uaW5nIHRoZSBgRGVxdWV1ZVdvcmtzYCB0ZXN0LgorCitfQXZh
aWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KKworX05vdGVfOiBHb29nbGUgVGVzdCBh
dXRvbWF0aWNhbGx5IHNhdmVzIGFsbCBfR29vZ2xlIFRlc3RfIGZsYWdzIHdoZW4gYSB0ZXN0Citv
YmplY3QgaXMgY29uc3RydWN0ZWQsIGFuZCByZXN0b3JlcyB0aGVtIHdoZW4gaXQgaXMgZGVzdHJ1
Y3RlZC4KKworIyBJbnZva2luZyB0aGUgVGVzdHMgIworCitgVEVTVCgpYCBhbmQgYFRFU1RfRigp
YCBpbXBsaWNpdGx5IHJlZ2lzdGVyIHRoZWlyIHRlc3RzIHdpdGggR29vZ2xlIFRlc3QuIFNvLCB1
bmxpa2Ugd2l0aCBtYW55IG90aGVyIEMrKyB0ZXN0aW5nIGZyYW1ld29ya3MsIHlvdSBkb24ndCBo
YXZlIHRvIHJlLWxpc3QgYWxsIHlvdXIgZGVmaW5lZCB0ZXN0cyBpbiBvcmRlciB0byBydW4gdGhl
bS4KKworQWZ0ZXIgZGVmaW5pbmcgeW91ciB0ZXN0cywgeW91IGNhbiBydW4gdGhlbSB3aXRoIGBS
VU5fQUxMX1RFU1RTKClgICwgd2hpY2ggcmV0dXJucyBgMGAgaWYgYWxsIHRoZSB0ZXN0cyBhcmUg
c3VjY2Vzc2Z1bCwgb3IgYDFgIG90aGVyd2lzZS4gTm90ZSB0aGF0IGBSVU5fQUxMX1RFU1RTKClg
IHJ1bnMgX2FsbCB0ZXN0c18gaW4geW91ciBsaW5rIHVuaXQgLS0gdGhleSBjYW4gYmUgZnJvbSBk
aWZmZXJlbnQgdGVzdCBjYXNlcywgb3IgZXZlbiBkaWZmZXJlbnQgc291cmNlIGZpbGVzLgorCitX
aGVuIGludm9rZWQsIHRoZSBgUlVOX0FMTF9URVNUUygpYCBtYWNybzoKKyAgMS4gU2F2ZXMgdGhl
IHN0YXRlIG9mIGFsbCAgR29vZ2xlIFRlc3QgZmxhZ3MuCisgIDEuIENyZWF0ZXMgYSB0ZXN0IGZp
eHR1cmUgb2JqZWN0IGZvciB0aGUgZmlyc3QgdGVzdC4KKyAgMS4gSW5pdGlhbGl6ZXMgaXQgdmlh
IGBTZXRVcCgpYC4KKyAgMS4gUnVucyB0aGUgdGVzdCBvbiB0aGUgZml4dHVyZSBvYmplY3QuCisg
IDEuIENsZWFucyB1cCB0aGUgZml4dHVyZSB2aWEgYFRlYXJEb3duKClgLgorICAxLiBEZWxldGVz
IHRoZSBmaXh0dXJlLgorICAxLiBSZXN0b3JlcyB0aGUgc3RhdGUgb2YgYWxsIEdvb2dsZSBUZXN0
IGZsYWdzLgorICAxLiBSZXBlYXRzIHRoZSBhYm92ZSBzdGVwcyBmb3IgdGhlIG5leHQgdGVzdCwg
dW50aWwgYWxsIHRlc3RzIGhhdmUgcnVuLgorCitJbiBhZGRpdGlvbiwgaWYgdGhlIHRleHQgZml4
dHVyZSdzIGNvbnN0cnVjdG9yIGdlbmVyYXRlcyBhIGZhdGFsIGZhaWx1cmUgaW4KK3N0ZXAgMiwg
dGhlcmUgaXMgbm8gcG9pbnQgZm9yIHN0ZXAgMyAtIDUgYW5kIHRoZXkgYXJlIHRodXMgc2tpcHBl
ZC4gU2ltaWxhcmx5LAoraWYgc3RlcCAzIGdlbmVyYXRlcyBhIGZhdGFsIGZhaWx1cmUsIHN0ZXAg
NCB3aWxsIGJlIHNraXBwZWQuCisKK19JbXBvcnRhbnRfOiBZb3UgbXVzdCBub3QgaWdub3JlIHRo
ZSByZXR1cm4gdmFsdWUgb2YgYFJVTl9BTExfVEVTVFMoKWAsIG9yIGBnY2NgCit3aWxsIGdpdmUg
eW91IGEgY29tcGlsZXIgZXJyb3IuIFRoZSByYXRpb25hbGUgZm9yIHRoaXMgZGVzaWduIGlzIHRo
YXQgdGhlCithdXRvbWF0ZWQgdGVzdGluZyBzZXJ2aWNlIGRldGVybWluZXMgd2hldGhlciBhIHRl
c3QgaGFzIHBhc3NlZCBiYXNlZCBvbiBpdHMKK2V4aXQgY29kZSwgbm90IG9uIGl0cyBzdGRvdXQv
c3RkZXJyIG91dHB1dDsgdGh1cyB5b3VyIGBtYWluKClgIGZ1bmN0aW9uIG11c3QKK3JldHVybiB0
aGUgdmFsdWUgb2YgYFJVTl9BTExfVEVTVFMoKWAuCisKK0Fsc28sIHlvdSBzaG91bGQgY2FsbCBg
UlVOX0FMTF9URVNUUygpYCBvbmx5ICoqb25jZSoqLiBDYWxsaW5nIGl0IG1vcmUgdGhhbiBvbmNl
Citjb25mbGljdHMgd2l0aCBzb21lIGFkdmFuY2VkIEdvb2dsZSBUZXN0IGZlYXR1cmVzIChlLmcu
IHRocmVhZC1zYWZlIGRlYXRoCit0ZXN0cykgYW5kIHRodXMgaXMgbm90IHN1cHBvcnRlZC4KKwor
X0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMgV3JpdGluZyB0aGUgbWFp
bigpIEZ1bmN0aW9uICMKKworWW91IGNhbiBzdGFydCBmcm9tIHRoaXMgYm9pbGVycGxhdGU6Citg
YGAKKyNpbmNsdWRlICJ0aGlzL3BhY2thZ2UvZm9vLmgiCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qu
aD4KKworbmFtZXNwYWNlIHsKKworLy8gVGhlIGZpeHR1cmUgZm9yIHRlc3RpbmcgY2xhc3MgRm9v
LgorY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoK
KyAgLy8gWW91IGNhbiByZW1vdmUgYW55IG9yIGFsbCBvZiB0aGUgZm9sbG93aW5nIGZ1bmN0aW9u
cyBpZiBpdHMgYm9keQorICAvLyBpcyBlbXB0eS4KKworICBGb29UZXN0KCkgeworICAgIC8vIFlv
dSBjYW4gZG8gc2V0LXVwIHdvcmsgZm9yIGVhY2ggdGVzdCBoZXJlLgorICB9CisKKyAgdmlydHVh
bCB+Rm9vVGVzdCgpIHsKKyAgICAvLyBZb3UgY2FuIGRvIGNsZWFuLXVwIHdvcmsgdGhhdCBkb2Vz
bid0IHRocm93IGV4Y2VwdGlvbnMgaGVyZS4KKyAgfQorCisgIC8vIElmIHRoZSBjb25zdHJ1Y3Rv
ciBhbmQgZGVzdHJ1Y3RvciBhcmUgbm90IGVub3VnaCBmb3Igc2V0dGluZyB1cAorICAvLyBhbmQg
Y2xlYW5pbmcgdXAgZWFjaCB0ZXN0LCB5b3UgY2FuIGRlZmluZSB0aGUgZm9sbG93aW5nIG1ldGhv
ZHM6CisKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeworICAgIC8vIENvZGUgaGVyZSB3aWxsIGJl
IGNhbGxlZCBpbW1lZGlhdGVseSBhZnRlciB0aGUgY29uc3RydWN0b3IgKHJpZ2h0CisgICAgLy8g
YmVmb3JlIGVhY2ggdGVzdCkuCisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Cisg
ICAgLy8gQ29kZSBoZXJlIHdpbGwgYmUgY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIGVhY2ggdGVz
dCAocmlnaHQKKyAgICAvLyBiZWZvcmUgdGhlIGRlc3RydWN0b3IpLgorICB9CisKKyAgLy8gT2Jq
ZWN0cyBkZWNsYXJlZCBoZXJlIGNhbiBiZSB1c2VkIGJ5IGFsbCB0ZXN0cyBpbiB0aGUgdGVzdCBj
YXNlIGZvciBGb28uCit9OworCisvLyBUZXN0cyB0aGF0IHRoZSBGb286OkJhcigpIG1ldGhvZCBk
b2VzIEFiYy4KK1RFU1RfRihGb29UZXN0LCBNZXRob2RCYXJEb2VzQWJjKSB7CisgIGNvbnN0IHN0
cmluZyBpbnB1dF9maWxlcGF0aCA9ICJ0aGlzL3BhY2thZ2UvdGVzdGRhdGEvbXlpbnB1dGZpbGUu
ZGF0IjsKKyAgY29uc3Qgc3RyaW5nIG91dHB1dF9maWxlcGF0aCA9ICJ0aGlzL3BhY2thZ2UvdGVz
dGRhdGEvbXlvdXRwdXRmaWxlLmRhdCI7CisgIEZvbyBmOworICBFWFBFQ1RfRVEoMCwgZi5CYXIo
aW5wdXRfZmlsZXBhdGgsIG91dHB1dF9maWxlcGF0aCkpOworfQorCisvLyBUZXN0cyB0aGF0IEZv
byBkb2VzIFh5ei4KK1RFU1RfRihGb29UZXN0LCBEb2VzWHl6KSB7CisgIC8vIEV4ZXJjaXNlcyB0
aGUgWHl6IGZlYXR1cmUgb2YgRm9vLgorfQorCit9ICAvLyBuYW1lc3BhY2UKKworaW50IG1haW4o
aW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CisgIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFy
Z2MsIGFyZ3YpOworICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworfQorYGBgCisKK1RoZSBgOjp0
ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgpYCBmdW5jdGlvbiBwYXJzZXMgdGhlIGNvbW1hbmQgbGlu
ZSBmb3IgR29vZ2xlCitUZXN0IGZsYWdzLCBhbmQgcmVtb3ZlcyBhbGwgcmVjb2duaXplZCBmbGFn
cy4gVGhpcyBhbGxvd3MgdGhlIHVzZXIgdG8gY29udHJvbCBhCit0ZXN0IHByb2dyYW0ncyBiZWhh
dmlvciB2aWEgdmFyaW91cyBmbGFncywgd2hpY2ggd2UnbGwgY292ZXIgaW4gW0FkdmFuY2VkR3Vp
ZGVdKFYxXzVfQWR2YW5jZWRHdWlkZS5tZCkuCitZb3UgbXVzdCBjYWxsIHRoaXMgZnVuY3Rpb24g
YmVmb3JlIGNhbGxpbmcgYFJVTl9BTExfVEVTVFMoKWAsIG9yIHRoZSBmbGFncword29uJ3QgYmUg
cHJvcGVybHkgaW5pdGlhbGl6ZWQuCisKK09uIFdpbmRvd3MsIGBJbml0R29vZ2xlVGVzdCgpYCBh
bHNvIHdvcmtzIHdpdGggd2lkZSBzdHJpbmdzLCBzbyBpdCBjYW4gYmUgdXNlZAoraW4gcHJvZ3Jh
bXMgY29tcGlsZWQgaW4gYFVOSUNPREVgIG1vZGUgYXMgd2VsbC4KKworQnV0IG1heWJlIHlvdSB0
aGluayB0aGF0IHdyaXRpbmcgYWxsIHRob3NlIG1haW4oKSBmdW5jdGlvbnMgaXMgdG9vIG11Y2gg
d29yaz8gV2UgYWdyZWUgd2l0aCB5b3UgY29tcGxldGVseSBhbmQgdGhhdCdzIHdoeSBHb29nbGUg
VGVzdCBwcm92aWRlcyBhIGJhc2ljIGltcGxlbWVudGF0aW9uIG9mIG1haW4oKS4gSWYgaXQgZml0
cyB5b3VyIG5lZWRzLCB0aGVuIGp1c3QgbGluayB5b3VyIHRlc3Qgd2l0aCBndGVzdFxfbWFpbiBs
aWJyYXJ5IGFuZCB5b3UgYXJlIGdvb2QgdG8gZ28uCisKKyMjIEltcG9ydGFudCBub3RlIGZvciBW
aXN1YWwgQysrIHVzZXJzICMjCitJZiB5b3UgcHV0IHlvdXIgdGVzdHMgaW50byBhIGxpYnJhcnkg
YW5kIHlvdXIgYG1haW4oKWAgZnVuY3Rpb24gaXMgaW4gYSBkaWZmZXJlbnQgbGlicmFyeSBvciBp
biB5b3VyIC5leGUgZmlsZSwgdGhvc2UgdGVzdHMgd2lsbCBub3QgcnVuLiBUaGUgcmVhc29uIGlz
IGEgW2J1Z10oaHR0cHM6Ly9jb25uZWN0Lm1pY3Jvc29mdC5jb20vZmVlZGJhY2svdmlld2ZlZWRi
YWNrLmFzcHg/RmVlZGJhY2tJRD0yNDQ0MTAmc2l0ZWlkPTIxMCkgaW4gVmlzdWFsIEMrKy4gV2hl
biB5b3UgZGVmaW5lIHlvdXIgdGVzdHMsIEdvb2dsZSBUZXN0IGNyZWF0ZXMgY2VydGFpbiBzdGF0
aWMgb2JqZWN0cyB0byByZWdpc3RlciB0aGVtLiBUaGVzZSBvYmplY3RzIGFyZSBub3QgcmVmZXJl
bmNlZCBmcm9tIGVsc2V3aGVyZSBidXQgdGhlaXIgY29uc3RydWN0b3JzIGFyZSBzdGlsbCBzdXBw
b3NlZCB0byBydW4uIFdoZW4gVmlzdWFsIEMrKyBsaW5rZXIgc2VlcyB0aGF0IG5vdGhpbmcgaW4g
dGhlIGxpYnJhcnkgaXMgcmVmZXJlbmNlZCBmcm9tIG90aGVyIHBsYWNlcyBpdCB0aHJvd3MgdGhl
IGxpYnJhcnkgb3V0LiBZb3UgaGF2ZSB0byByZWZlcmVuY2UgeW91ciBsaWJyYXJ5IHdpdGggdGVz
dHMgZnJvbSB5b3VyIG1haW4gcHJvZ3JhbSB0byBrZWVwIHRoZSBsaW5rZXIgZnJvbSBkaXNjYXJk
aW5nIGl0LiBIZXJlIGlzIGhvdyB0byBkbyBpdC4gU29tZXdoZXJlIGluIHlvdXIgbGlicmFyeSBj
b2RlIGRlY2xhcmUgYSBmdW5jdGlvbjoKK2BgYAorX19kZWNsc3BlYyhkbGxleHBvcnQpIGludCBQ
dWxsSW5NeUxpYnJhcnkoKSB7IHJldHVybiAwOyB9CitgYGAKK0lmIHlvdSBwdXQgeW91ciB0ZXN0
cyBpbiBhIHN0YXRpYyBsaWJyYXJ5IChub3QgRExMKSB0aGVuIGBfX2RlY2xzcGVjKGRsbGV4cG9y
dClgIGlzIG5vdCByZXF1aXJlZC4gTm93LCBpbiB5b3VyIG1haW4gcHJvZ3JhbSwgd3JpdGUgYSBj
b2RlIHRoYXQgaW52b2tlcyB0aGF0IGZ1bmN0aW9uOgorYGBgCitpbnQgUHVsbEluTXlMaWJyYXJ5
KCk7CitzdGF0aWMgaW50IGR1bW15ID0gUHVsbEluTXlMaWJyYXJ5KCk7CitgYGAKK1RoaXMgd2ls
bCBrZWVwIHlvdXIgdGVzdHMgcmVmZXJlbmNlZCBhbmQgd2lsbCBtYWtlIHRoZW0gcmVnaXN0ZXIg
dGhlbXNlbHZlcyBhdCBzdGFydHVwLgorCitJbiBhZGRpdGlvbiwgaWYgeW91IGRlZmluZSB5b3Vy
IHRlc3RzIGluIGEgc3RhdGljIGxpYnJhcnksIGFkZCBgL09QVDpOT1JFRmAgdG8geW91ciBtYWlu
IHByb2dyYW0gbGlua2VyIG9wdGlvbnMuIElmIHlvdSB1c2UgTVNWQysrIElERSwgZ28gdG8geW91
ciAuZXhlIHByb2plY3QgcHJvcGVydGllcy9Db25maWd1cmF0aW9uIFByb3BlcnRpZXMvTGlua2Vy
L09wdGltaXphdGlvbiBhbmQgc2V0IFJlZmVyZW5jZXMgc2V0dGluZyB0byBgS2VlcCBVbnJlZmVy
ZW5jZWQgRGF0YSAoL09QVDpOT1JFRilgLiBUaGlzIHdpbGwga2VlcCBWaXN1YWwgQysrIGxpbmtl
ciBmcm9tIGRpc2NhcmRpbmcgaW5kaXZpZHVhbCBzeW1ib2xzIGdlbmVyYXRlZCBieSB5b3VyIHRl
c3RzIGZyb20gdGhlIGZpbmFsIGV4ZWN1dGFibGUuCisKK1RoZXJlIGlzIG9uZSBtb3JlIHBpdGZh
bGwsIHRob3VnaC4gSWYgeW91IHVzZSBHb29nbGUgVGVzdCBhcyBhIHN0YXRpYyBsaWJyYXJ5ICh0
aGF0J3MgaG93IGl0IGlzIGRlZmluZWQgaW4gZ3Rlc3QudmNwcm9qKSB5b3VyIHRlc3RzIG11c3Qg
YWxzbyByZXNpZGUgaW4gYSBzdGF0aWMgbGlicmFyeS4gSWYgeW91IGhhdmUgdG8gaGF2ZSB0aGVt
IGluIGEgRExMLCB5b3UgX211c3RfIGNoYW5nZSBHb29nbGUgVGVzdCB0byBidWlsZCBpbnRvIGEg
RExMIGFzIHdlbGwuIE90aGVyd2lzZSB5b3VyIHRlc3RzIHdpbGwgbm90IHJ1biBjb3JyZWN0bHkg
b3Igd2lsbCBub3QgcnVuIGF0IGFsbC4gVGhlIGdlbmVyYWwgY29uY2x1c2lvbiBoZXJlIGlzOiBt
YWtlIHlvdXIgbGlmZSBlYXNpZXIgLSBkbyBub3Qgd3JpdGUgeW91ciB0ZXN0cyBpbiBsaWJyYXJp
ZXMhCisKKyMgV2hlcmUgdG8gR28gZnJvbSBIZXJlICMKKworQ29uZ3JhdHVsYXRpb25zISBZb3Un
dmUgbGVhcm5lZCB0aGUgR29vZ2xlIFRlc3QgYmFzaWNzLiBZb3UgY2FuIHN0YXJ0IHdyaXRpbmcK
K2FuZCBydW5uaW5nIEdvb2dsZSBUZXN0IHRlc3RzLCByZWFkIHNvbWUgW3NhbXBsZXNdKFNhbXBs
ZXMubWQpLCBvciBjb250aW51ZSB3aXRoCitbQWR2YW5jZWRHdWlkZV0oVjFfNV9BZHZhbmNlZEd1
aWRlLm1kKSwgd2hpY2ggZGVzY3JpYmVzIG1hbnkgbW9yZSB1c2VmdWwgR29vZ2xlIFRlc3QgZmVh
dHVyZXMuCisKKyMgS25vd24gTGltaXRhdGlvbnMgIworCitHb29nbGUgVGVzdCBpcyBkZXNpZ25l
ZCB0byBiZSB0aHJlYWQtc2FmZS4gIFRoZSBpbXBsZW1lbnRhdGlvbiBpcwordGhyZWFkLXNhZmUg
b24gc3lzdGVtcyB3aGVyZSB0aGUgYHB0aHJlYWRzYCBsaWJyYXJ5IGlzIGF2YWlsYWJsZS4gIEl0
CitpcyBjdXJyZW50bHkgX3Vuc2FmZV8gdG8gdXNlIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgZnJv
bSB0d28gdGhyZWFkcworY29uY3VycmVudGx5IG9uIG90aGVyIHN5c3RlbXMgKGUuZy4gV2luZG93
cykuICBJbiBtb3N0IHRlc3RzIHRoaXMgaXMKK25vdCBhbiBpc3N1ZSBhcyB1c3VhbGx5IHRoZSBh
c3NlcnRpb25zIGFyZSBkb25lIGluIHRoZSBtYWluIHRocmVhZC4gSWYKK3lvdSB3YW50IHRvIGhl
bHAsIHlvdSBjYW4gdm9sdW50ZWVyIHRvIGltcGxlbWVudCB0aGUgbmVjZXNzYXJ5CitzeW5jaHJv
bml6YXRpb24gcHJpbWl0aXZlcyBpbiBgZ3Rlc3QtcG9ydC5oYCBmb3IgeW91ciBwbGF0Zm9ybS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfNV9QdW1wTWFudWFsLm1kIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZXRlc3QvZG9jcy9WMV81X1B1bXBNYW51YWwubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTU3MTA3ODlkZGQxZWVh
NWVmNWU3OTNjYTM1MGU1MmUwNDU1NmE1NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0
L2RvY3MvVjFfNV9QdW1wTWFudWFsLm1kCkBAIC0wLDAgKzEsMTc3IEBACisKKworPGI+UDwvYj51
bXAgaXMgPGI+VTwvYj5zZWZ1bCBmb3IgPGI+TTwvYj5ldGEgPGI+UDwvYj5yb2dyYW1taW5nLgor
CisjIFRoZSBQcm9ibGVtICMKKworVGVtcGxhdGUgYW5kIG1hY3JvIGxpYnJhcmllcyBvZnRlbiBu
ZWVkIHRvIGRlZmluZSBtYW55IGNsYXNzZXMsCitmdW5jdGlvbnMsIG9yIG1hY3JvcyB0aGF0IHZh
cnkgb25seSAob3IgYWxtb3N0IG9ubHkpIGluIHRoZSBudW1iZXIgb2YKK2FyZ3VtZW50cyB0aGV5
IHRha2UuIEl0J3MgYSBsb3Qgb2YgcmVwZXRpdGl2ZSwgbWVjaGFuaWNhbCwgYW5kCitlcnJvci1w
cm9uZSB3b3JrLgorCitWYXJpYWRpYyB0ZW1wbGF0ZXMgYW5kIHZhcmlhZGljIG1hY3JvcyBjYW4g
YWxsZXZpYXRlIHRoZSBwcm9ibGVtLgorSG93ZXZlciwgd2hpbGUgYm90aCBhcmUgYmVpbmcgY29u
c2lkZXJlZCBieSB0aGUgQysrIGNvbW1pdHRlZSwgbmVpdGhlcgoraXMgaW4gdGhlIHN0YW5kYXJk
IHlldCBvciB3aWRlbHkgc3VwcG9ydGVkIGJ5IGNvbXBpbGVycy4gIFRodXMgdGhleQorYXJlIG9m
dGVuIG5vdCBhIGdvb2QgY2hvaWNlLCBlc3BlY2lhbGx5IHdoZW4geW91ciBjb2RlIG5lZWRzIHRv
IGJlCitwb3J0YWJsZS4gQW5kIHRoZWlyIGNhcGFiaWxpdGllcyBhcmUgc3RpbGwgbGltaXRlZC4K
KworQXMgYSByZXN1bHQsIGF1dGhvcnMgb2Ygc3VjaCBsaWJyYXJpZXMgb2Z0ZW4gaGF2ZSB0byB3
cml0ZSBzY3JpcHRzIHRvCitnZW5lcmF0ZSB0aGVpciBpbXBsZW1lbnRhdGlvbi4gSG93ZXZlciwg
b3VyIGV4cGVyaWVuY2UgaXMgdGhhdCBpdCdzCit0ZWRpb3VzIHRvIHdyaXRlIHN1Y2ggc2NyaXB0
cywgd2hpY2ggdGVuZCB0byByZWZsZWN0IHRoZSBzdHJ1Y3R1cmUgb2YKK3RoZSBnZW5lcmF0ZWQg
Y29kZSBwb29ybHkgYW5kIGFyZSBvZnRlbiBoYXJkIHRvIHJlYWQgYW5kIGVkaXQuIEZvcgorZXhh
bXBsZSwgYSBzbWFsbCBjaGFuZ2UgbmVlZGVkIGluIHRoZSBnZW5lcmF0ZWQgY29kZSBtYXkgcmVx
dWlyZSBzb21lCitub24taW50dWl0aXZlLCBub24tdHJpdmlhbCBjaGFuZ2VzIGluIHRoZSBzY3Jp
cHQuIFRoaXMgaXMgZXNwZWNpYWxseQorcGFpbmZ1bCB3aGVuIGV4cGVyaW1lbnRpbmcgd2l0aCB0
aGUgY29kZS4KKworIyBPdXIgU29sdXRpb24gIworCitQdW1wIChmb3IgUHVtcCBpcyBVc2VmdWwg
Zm9yIE1ldGEgUHJvZ3JhbW1pbmcsIFByZXR0eSBVc2VmdWwgZm9yIE1ldGEKK1Byb2dyYW1taW5n
LCBvciBQcmFjdGljYWwgVXRpbGl0eSBmb3IgTWV0YSBQcm9ncmFtbWluZywgd2hpY2hldmVyIHlv
dQorcHJlZmVyKSBpcyBhIHNpbXBsZSBtZXRhLXByb2dyYW1taW5nIHRvb2wgZm9yIEMrKy4gVGhl
IGlkZWEgaXMgdGhhdCBhCitwcm9ncmFtbWVyIHdyaXRlcyBhIGBmb28ucHVtcGAgZmlsZSB3aGlj
aCBjb250YWlucyBDKysgY29kZSBwbHVzIG1ldGEKK2NvZGUgdGhhdCBtYW5pcHVsYXRlcyB0aGUg
QysrIGNvZGUuIFRoZSBtZXRhIGNvZGUgY2FuIGhhbmRsZQoraXRlcmF0aW9ucyBvdmVyIGEgcmFu
Z2UsIG5lc3RlZCBpdGVyYXRpb25zLCBsb2NhbCBtZXRhIHZhcmlhYmxlCitkZWZpbml0aW9ucywg
c2ltcGxlIGFyaXRobWV0aWMsIGFuZCBjb25kaXRpb25hbCBleHByZXNzaW9ucy4gWW91IGNhbgor
dmlldyBpdCBhcyBhIHNtYWxsIERvbWFpbi1TcGVjaWZpYyBMYW5ndWFnZS4gVGhlIG1ldGEgbGFu
Z3VhZ2UgaXMKK2Rlc2lnbmVkIHRvIGJlIG5vbi1pbnRydXNpdmUgKHMudC4gaXQgd29uJ3QgY29u
ZnVzZSBFbWFjcycgQysrIG1vZGUsCitmb3IgZXhhbXBsZSkgYW5kIGNvbmNpc2UsIG1ha2luZyBQ
dW1wIGNvZGUgaW50dWl0aXZlIGFuZCBlYXN5IHRvCittYWludGFpbi4KKworIyMgSGlnaGxpZ2h0
cyAjIworCisgICogVGhlIGltcGxlbWVudGF0aW9uIGlzIGluIGEgc2luZ2xlIFB5dGhvbiBzY3Jp
cHQgYW5kIHRodXMgdWx0cmEgcG9ydGFibGU6IG5vIGJ1aWxkIG9yIGluc3RhbGxhdGlvbiBpcyBu
ZWVkZWQgYW5kIGl0IHdvcmtzIGNyb3NzIHBsYXRmb3Jtcy4KKyAgKiBQdW1wIHRyaWVzIHRvIGJl
IHNtYXJ0IHdpdGggcmVzcGVjdCB0byBbR29vZ2xlJ3Mgc3R5bGUgZ3VpZGVdKGh0dHA6Ly9jb2Rl
Lmdvb2dsZS5jb20vcC9nb29nbGUtc3R5bGVndWlkZS8pOiBpdCBicmVha3MgbG9uZyBsaW5lcyAo
ZWFzeSB0byBoYXZlIHdoZW4gdGhleSBhcmUgZ2VuZXJhdGVkKSBhdCBhY2NlcHRhYmxlIHBsYWNl
cyB0byBmaXQgd2l0aGluIDgwIGNvbHVtbnMgYW5kIGluZGVudCB0aGUgY29udGludWF0aW9uIGxp
bmVzIGNvcnJlY3RseS4KKyAgKiBUaGUgZm9ybWF0IGlzIGh1bWFuLXJlYWRhYmxlIGFuZCBtb3Jl
IGNvbmNpc2UgdGhhbiBYTUwuCisgICogVGhlIGZvcm1hdCB3b3JrcyByZWxhdGl2ZWx5IHdlbGwg
d2l0aCBFbWFjcycgQysrIG1vZGUuCisKKyMjIEV4YW1wbGVzICMjCisKK1RoZSBmb2xsb3dpbmcg
UHVtcCBjb2RlICh3aGVyZSBtZXRhIGtleXdvcmRzIHN0YXJ0IHdpdGggYCRgLCBgW1tgIGFuZCBg
XV1gIGFyZSBtZXRhIGJyYWNrZXRzLCBhbmQgYCQkYCBzdGFydHMgYSBtZXRhIGNvbW1lbnQgdGhh
dCBlbmRzIHdpdGggdGhlIGxpbmUpOgorCitgYGAKKyR2YXIgbiA9IDMgICAgICQkIERlZmluZXMg
YSBtZXRhIHZhcmlhYmxlIG4uCiskcmFuZ2UgaSAwLi5uICAkJCBEZWNsYXJlcyB0aGUgcmFuZ2Ug
b2YgbWV0YSBpdGVyYXRvciBpIChpbmNsdXNpdmUpLgorJGZvciBpIFtbCisgICAgICAgICAgICAg
ICAkJCBNZXRhIGxvb3AuCisvLyBGb28kaSBkb2VzIGJsYWggZm9yICRpLWFyeSBwcmVkaWNhdGVz
LgorJHJhbmdlIGogMS4uaQordGVtcGxhdGUgPHNpemVfdCBOICRmb3IgaiBbWywgdHlwZW5hbWUg
QSRqXV0+CitjbGFzcyBGb28kaSB7CiskaWYgaSA9PSAwIFtbCisgIGJsYWggYTsKK11dICRlbGlm
IGkgPD0gMiBbWworICBibGFoIGI7CitdXSAkZWxzZSBbWworICBibGFoIGM7CitdXQorfTsKKwor
XV0KK2BgYAorCit3aWxsIGJlIHRyYW5zbGF0ZWQgYnkgdGhlIFB1bXAgY29tcGlsZXIgdG86CisK
K2BgYAorLy8gRm9vMCBkb2VzIGJsYWggZm9yIDAtYXJ5IHByZWRpY2F0ZXMuCit0ZW1wbGF0ZSA8
c2l6ZV90IE4+CitjbGFzcyBGb28wIHsKKyAgYmxhaCBhOworfTsKKworLy8gRm9vMSBkb2VzIGJs
YWggZm9yIDEtYXJ5IHByZWRpY2F0ZXMuCit0ZW1wbGF0ZSA8c2l6ZV90IE4sIHR5cGVuYW1lIEEx
PgorY2xhc3MgRm9vMSB7CisgIGJsYWggYjsKK307CisKKy8vIEZvbzIgZG9lcyBibGFoIGZvciAy
LWFyeSBwcmVkaWNhdGVzLgordGVtcGxhdGUgPHNpemVfdCBOLCB0eXBlbmFtZSBBMSwgdHlwZW5h
bWUgQTI+CitjbGFzcyBGb28yIHsKKyAgYmxhaCBiOworfTsKKworLy8gRm9vMyBkb2VzIGJsYWgg
Zm9yIDMtYXJ5IHByZWRpY2F0ZXMuCit0ZW1wbGF0ZSA8c2l6ZV90IE4sIHR5cGVuYW1lIEExLCB0
eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTM+CitjbGFzcyBGb28zIHsKKyAgYmxhaCBjOworfTsKK2Bg
YAorCitJbiBhbm90aGVyIGV4YW1wbGUsCisKK2BgYAorJHJhbmdlIGkgMS4ubgorRnVuYygkZm9y
IGkgKyBbW2EkaV1dKTsKKyQkIFRoZSB0ZXh0IGJldHdlZW4gaSBhbmQgW1sgaXMgdGhlIHNlcGFy
YXRvciBiZXR3ZWVuIGl0ZXJhdGlvbnMuCitgYGAKKword2lsbCBnZW5lcmF0ZSBvbmUgb2YgdGhl
IGZvbGxvd2luZyBsaW5lcyAod2l0aG91dCB0aGUgY29tbWVudHMpLCBkZXBlbmRpbmcgb24gdGhl
IHZhbHVlIG9mIGBuYDoKKworYGBgCitGdW5jKCk7ICAgICAgICAgICAgICAvLyBJZiBuIGlzIDAu
CitGdW5jKGExKTsgICAgICAgICAgICAvLyBJZiBuIGlzIDEuCitGdW5jKGExICsgYTIpOyAgICAg
ICAvLyBJZiBuIGlzIDIuCitGdW5jKGExICsgYTIgKyBhMyk7ICAvLyBJZiBuIGlzIDMuCisvLyBB
bmQgc28gb24uLi4KK2BgYAorCisjIyBDb25zdHJ1Y3RzICMjCisKK1dlIHN1cHBvcnQgdGhlIGZv
bGxvd2luZyBtZXRhIHByb2dyYW1taW5nIGNvbnN0cnVjdHM6CisKK3wgYCR2YXIgaWQgPSBleHBg
IHwgRGVmaW5lcyBhIG5hbWVkIGNvbnN0YW50IHZhbHVlLiBgJGlkYCBpcyB2YWxpZCB1dGlsIHRo
ZSBlbmQgb2YgdGhlIGN1cnJlbnQgbWV0YSBsZXhpY2FsIGJsb2NrLiB8Cit8Oi0tLS0tLS0tLS0t
LS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorfCAkcmFuZ2Ug
aWQgZXhwLi5leHAgfCBTZXRzIHRoZSByYW5nZSBvZiBhbiBpdGVyYXRpb24gdmFyaWFibGUsIHdo
aWNoIGNhbiBiZSByZXVzZWQgaW4gbXVsdGlwbGUgbG9vcHMgbGF0ZXIuICAgICAgICAgIHwKK3wg
JGZvciBpZCBzZXAgW1tjb2RlIF0oLm1kKV0gfCBJdGVyYXRpb24uIFRoZSByYW5nZSBvZiBgaWRg
IG11c3QgaGF2ZSBiZWVuIGRlZmluZWQgZWFybGllci4gYCRpZGAgaXMgdmFsaWQgaW4gYGNvZGVg
LiAgICAgICAgIHwKK3wgYCQoJClgICAgICAgICAgIHwgR2VuZXJhdGVzIGEgc2luZ2xlIGAkYCBj
aGFyYWN0ZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8Cit8IGAkaWRgICAgICAgICAgICB8IFZhbHVlIG9mIHRoZSBuYW1lZCBj
b25zdGFudCBvciBpdGVyYXRpb24gdmFyaWFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfAorfCBgJChleHApYCAgICAgICAgfCBWYWx1ZSBvZiB0aGUgZXhw
cmVzc2lvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYCRpZiBleHAgW1sgY29kZSBdXSBlbHNlX2JyYW5j
aGAgfCBDb25kaXRpb25hbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYFtbIGNvZGUg
XV1gICAgIHwgTWV0YSBsZXhpY2FsIGJsb2NrLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8IGBjcHBf
Y29kZWAgICAgICB8IFJhdyBDKysgY29kZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCBg
JCQgY29tbWVudGAgICAgfCBNZXRhIGNvbW1lbnQuICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK
KworKipOb3RlOioqIFRvIGdpdmUgdGhlIHVzZXIgc29tZSBmcmVlZG9tIGluIGZvcm1hdHRpbmcg
dGhlIFB1bXAgc291cmNlCitjb2RlLCBQdW1wIGlnbm9yZXMgYSBuZXctbGluZSBjaGFyYWN0ZXIg
aWYgaXQncyByaWdodCBhZnRlciBgJGZvciBmb29gCitvciBuZXh0IHRvIGBbW2Agb3IgYF1dYC4g
V2l0aG91dCB0aGlzIHJ1bGUgeW91J2xsIG9mdGVuIGJlIGZvcmNlZCB0byB3cml0ZQordmVyeSBs
b25nIGxpbmVzIHRvIGdldCB0aGUgZGVzaXJlZCBvdXRwdXQuIFRoZXJlZm9yZSBzb21ldGltZXMg
eW91IG1heQorbmVlZCB0byBpbnNlcnQgYW4gZXh0cmEgbmV3LWxpbmUgaW4gc3VjaCBwbGFjZXMg
Zm9yIGEgbmV3LWxpbmUgdG8gc2hvdwordXAgaW4geW91ciBvdXRwdXQuCisKKyMjIEdyYW1tYXIg
IyMKKworYGBgCitjb2RlIDo6PSBhdG9taWNfY29kZSoKK2F0b21pY19jb2RlIDo6PSAkdmFyIGlk
ID0gZXhwCisgICAgfCAkdmFyIGlkID0gW1sgY29kZSBdXQorICAgIHwgJHJhbmdlIGlkIGV4cC4u
ZXhwCisgICAgfCAkZm9yIGlkIHNlcCBbWyBjb2RlIF1dCisgICAgfCAkKCQpCisgICAgfCAkaWQK
KyAgICB8ICQoZXhwKQorICAgIHwgJGlmIGV4cCBbWyBjb2RlIF1dIGVsc2VfYnJhbmNoCisgICAg
fCBbWyBjb2RlIF1dCisgICAgfCBjcHBfY29kZQorc2VwIDo6PSBjcHBfY29kZSB8IGVtcHR5X3N0
cmluZworZWxzZV9icmFuY2ggOjo9ICRlbHNlIFtbIGNvZGUgXV0KKyAgICB8ICRlbGlmIGV4cCBb
WyBjb2RlIF1dIGVsc2VfYnJhbmNoCisgICAgfCBlbXB0eV9zdHJpbmcKK2V4cCA6Oj0gc2ltcGxl
X2V4cHJlc3Npb25faW5fUHl0aG9uX3N5bnRheAorYGBgCisKKyMjIENvZGUgIyMKKworWW91IGNh
biBmaW5kIHRoZSBzb3VyY2UgY29kZSBvZiBQdW1wIGluIFtzY3JpcHRzL3B1bXAucHldKGh0dHA6
Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0L3NvdXJjZS9icm93c2UvdHJ1bmsvc2NyaXB0
cy9wdW1wLnB5KS4gSXQgaXMgc3RpbGwKK3ZlcnkgdW5wb2xpc2hlZCBhbmQgbGFja3MgYXV0b21h
dGVkIHRlc3RzLCBhbHRob3VnaCBpdCBoYXMgYmVlbgorc3VjY2Vzc2Z1bGx5IHVzZWQgbWFueSB0
aW1lcy4gSWYgeW91IGZpbmQgYSBjaGFuY2UgdG8gdXNlIGl0IGluIHlvdXIKK3Byb2plY3QsIHBs
ZWFzZSBsZXQgdXMga25vdyB3aGF0IHlvdSB0aGluayEgIFdlIGFsc28gd2VsY29tZSBoZWxwIG9u
CitpbXByb3ZpbmcgUHVtcC4KKworIyMgUmVhbCBFeGFtcGxlcyAjIworCitZb3UgY2FuIGZpbmQg
cmVhbC13b3JsZCBhcHBsaWNhdGlvbnMgb2YgUHVtcCBpbiBbR29vZ2xlIFRlc3RdKGh0dHA6Ly93
d3cuZ29vZ2xlLmNvbS9jb2Rlc2VhcmNoP3E9ZmlsZSUzQVwucHVtcCUyNCtwYWNrYWdlJTNBaHR0
cCUzQSUyRiUyRmdvb2dsZXRlc3RcLmdvb2dsZWNvZGVcLmNvbSkgYW5kIFtHb29nbGUgTW9ja10o
aHR0cDovL3d3dy5nb29nbGUuY29tL2NvZGVzZWFyY2g/cT1maWxlJTNBXC5wdW1wJTI0K3BhY2th
Z2UlM0FodHRwJTNBJTJGJTJGZ29vZ2xlbW9ja1wuZ29vZ2xlY29kZVwuY29tKS4gIFRoZSBzb3Vy
Y2UgZmlsZSBgZm9vLmgucHVtcGAgZ2VuZXJhdGVzIGBmb28uaGAuCisKKyMjIFRpcHMgIyMKKwor
ICAqIElmIGEgbWV0YSB2YXJpYWJsZSBpcyBmb2xsb3dlZCBieSBhIGxldHRlciBvciBkaWdpdCwg
eW91IGNhbiBzZXBhcmF0ZSB0aGVtIHVzaW5nIGBbW11dYCwgd2hpY2ggaW5zZXJ0cyBhbiBlbXB0
eSBzdHJpbmcuIEZvciBleGFtcGxlIGBGb28kaltbXV1IZWxwZXJgIGdlbmVyYXRlIGBGb28xSGVs
cGVyYCB3aGVuIGBqYCBpcyAxLgorICAqIFRvIGF2b2lkIGV4dHJhLWxvbmcgUHVtcCBzb3VyY2Ug
bGluZXMsIHlvdSBjYW4gYnJlYWsgYSBsaW5lIGFueXdoZXJlIHlvdSB3YW50IGJ5IGluc2VydGlu
ZyBgW1tdXWAgZm9sbG93ZWQgYnkgYSBuZXcgbGluZS4gU2luY2UgYW55IG5ldy1saW5lIGNoYXJh
Y3RlciBuZXh0IHRvIGBbW2Agb3IgYF1dYCBpcyBpZ25vcmVkLCB0aGUgZ2VuZXJhdGVkIGNvZGUg
d29uJ3QgY29udGFpbiB0aGlzIG5ldyBsaW5lLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfNV9YY29kZUd1aWRlLm1kIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZXRlc3QvZG9jcy9WMV81X1hjb2RlR3VpZGUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmYyNGJmNTFiZmM0NTQx
MmY2NThiZGRkNTNhMzMyZTE0OWQ3NzMwOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0
L2RvY3MvVjFfNV9YY29kZUd1aWRlLm1kCkBAIC0wLDAgKzEsOTMgQEAKKworCitUaGlzIGd1aWRl
IHdpbGwgZXhwbGFpbiBob3cgdG8gdXNlIHRoZSBHb29nbGUgVGVzdGluZyBGcmFtZXdvcmsgaW4g
eW91ciBYY29kZSBwcm9qZWN0cyBvbiBNYWMgT1MgWC4gVGhpcyB0dXRvcmlhbCBiZWdpbnMgYnkg
cXVpY2tseSBleHBsYWluaW5nIHdoYXQgdG8gZG8gZm9yIGV4cGVyaWVuY2VkIHVzZXJzLiBBZnRl
ciB0aGUgcXVpY2sgc3RhcnQsIHRoZSBndWlkZSBnb2VzIHByb3ZpZGVzIGFkZGl0aW9uYWwgZXhw
bGFuYXRpb24gYWJvdXQgZWFjaCBzdGVwLgorCisjIFF1aWNrIFN0YXJ0ICMKKworSGVyZSBpcyB0
aGUgcXVpY2sgZ3VpZGUgZm9yIHVzaW5nIEdvb2dsZSBUZXN0IGluIHlvdXIgWGNvZGUgcHJvamVj
dC4KKworICAxLiBEb3dubG9hZCB0aGUgc291cmNlIGZyb20gdGhlIFt3ZWJzaXRlXShodHRwOi8v
Y29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdCkgdXNpbmcgdGhpcyBjb21tYW5kOiBgc3ZuIGNo
ZWNrb3V0IGh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay8gZ29vZ2xl
dGVzdC1yZWFkLW9ubHlgCisgIDEuIE9wZW4gdXAgdGhlIGBndGVzdC54Y29kZXByb2pgIGluIHRo
ZSBgZ29vZ2xldGVzdC1yZWFkLW9ubHkveGNvZGUvYCBkaXJlY3RvcnkgYW5kIGJ1aWxkIHRoZSBn
dGVzdC5mcmFtZXdvcmsuCisgIDEuIENyZWF0ZSBhIG5ldyAiU2hlbGwgVG9vbCIgdGFyZ2V0IGlu
IHlvdXIgWGNvZGUgcHJvamVjdCBjYWxsZWQgc29tZXRoaW5nIGxpa2UgIlVuaXRUZXN0cyIKKyAg
MS4gQWRkIHRoZSBndGVzdC5mcmFtZXdvcmsgdG8geW91ciBwcm9qZWN0IGFuZCBhZGQgaXQgdG8g
dGhlICJMaW5rIEJpbmFyeSB3aXRoIExpYnJhcmllcyIgYnVpbGQgcGhhc2Ugb2YgIlVuaXRUZXN0
cyIKKyAgMS4gQWRkIHlvdXIgdW5pdCB0ZXN0IHNvdXJjZSBjb2RlIHRvIHRoZSAiQ29tcGlsZSBT
b3VyY2VzIiBidWlsZCBwaGFzZSBvZiAiVW5pdFRlc3RzIgorICAxLiBFZGl0IHRoZSAiVW5pdFRl
c3RzIiBleGVjdXRhYmxlIGFuZCBhZGQgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZWQgIkRZ
TERcX0ZSQU1FV09SS1xfUEFUSCIgd2l0aCBhIHZhbHVlIGVxdWFsIHRvIHRoZSBwYXRoIHRvIHRo
ZSBmcmFtZXdvcmsgY29udGFpbmluZyB0aGUgZ3Rlc3QuZnJhbWV3b3JrIHJlbGF0aXZlIHRvIHRo
ZSBjb21waWxlZCBleGVjdXRhYmxlLgorICAxLiBCdWlsZCBhbmQgR28KKworVGhlIGZvbGxvd2lu
ZyBzZWN0aW9ucyBmdXJ0aGVyIGV4cGxhaW4gZWFjaCBvZiB0aGUgc3RlcHMgbGlzdGVkIGFib3Zl
IGluIGRlcHRoLCBkZXNjcmliaW5nIGluIG1vcmUgZGV0YWlsIGhvdyB0byBjb21wbGV0ZSBpdCBp
bmNsdWRpbmcgc29tZSB2YXJpYXRpb25zLgorCisjIEdldCB0aGUgU291cmNlICMKKworQ3VycmVu
dGx5LCB0aGUgZ3Rlc3QuZnJhbWV3b3JrIGRpc2N1c3NlZCBoZXJlIGlzbid0IGF2YWlsYWJsZSBp
biBhIHRhZ2dlZCByZWxlYXNlIG9mIEdvb2dsZSBUZXN0LCBpdCBpcyBvbmx5IGF2YWlsYWJsZSBp
biB0aGUgdHJ1bmsuIEFzIGV4cGxhaW5lZCBhdCB0aGUgR29vZ2xlIFRlc3QgW3NpdGVdKGh0dHA6
Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0L3NvdXJjZS9jaGVja291dCI+c3ZuKSwgeW91
IGNhbiBnZXQgdGhlIGNvZGUgZnJvbSBhbm9ueW1vdXMgU1ZOIHdpdGggdGhpcyBjb21tYW5kOgor
CitgYGAKK3N2biBjaGVja291dCBodHRwOi8vZ29vZ2xldGVzdC5nb29nbGVjb2RlLmNvbS9zdm4v
dHJ1bmsvIGdvb2dsZXRlc3QtcmVhZC1vbmx5CitgYGAKKworQWx0ZXJuYXRpdmVseSwgaWYgeW91
IGFyZSB3b3JraW5nIHdpdGggU3VidmVyc2lvbiBpbiB5b3VyIG93biBjb2RlIGJhc2UsIHlvdSBj
YW4gYWRkIEdvb2dsZSBUZXN0IGFzIGFuIGV4dGVybmFsIGRlcGVuZGVuY3kgdG8geW91ciBvd24g
U3VidmVyc2lvbiByZXBvc2l0b3J5LiBCeSBmb2xsb3dpbmcgdGhpcyBhcHByb2FjaCwgZXZlcnlv
bmUgdGhhdCBjaGVja3Mgb3V0IHlvdXIgc3ZuIHJlcG9zaXRvcnkgd2lsbCBhbHNvIHJlY2VpdmUg
YSBjb3B5IG9mIEdvb2dsZSBUZXN0IChhIHNwZWNpZmljIHZlcnNpb24sIGlmIHlvdSB3aXNoKSB3
aXRob3V0IGhhdmluZyB0byBjaGVjayBpdCBvdXQgZXhwbGljaXRseS4gVGhpcyBtYWtlcyB0aGUg
c2V0IHVwIG9mIHlvdXIgcHJvamVjdCBzaW1wbGVyIGFuZCByZWR1Y2VzIHRoZSBjb3BpZWQgY29k
ZSBpbiB0aGUgcmVwb3NpdG9yeS4KKworVG8gdXNlIGBzdm46ZXh0ZXJuYWxzYCwgZGVjaWRlIHdo
ZXJlIHlvdSB3b3VsZCBsaWtlIHRvIGhhdmUgdGhlIGV4dGVybmFsIHNvdXJjZSByZXNpZGUuIFlv
dSBtaWdodCBjaG9vc2UgdG8gcHV0IHRoZSBleHRlcm5hbCBzb3VyY2UgaW5zaWRlIHRoZSB0cnVu
aywgYmVjYXVzZSB5b3Ugd2FudCBpdCB0byBiZSBwYXJ0IG9mIHRoZSBicmFuY2ggd2hlbiB5b3Ug
bWFrZSBhIHJlbGVhc2UuIEhvd2V2ZXIsIGtlZXBpbmcgaXQgb3V0c2lkZSB0aGUgdHJ1bmsgaW4g
YSB2ZXJzaW9uLXRhZ2dlZCBkaXJlY3RvcnkgY2FsbGVkIHNvbWV0aGluZyBsaWtlIGB0aGlyZC1w
YXJ0eS9nb29nbGV0ZXN0LzEuMC4xYCwgaXMgYW5vdGhlciBvcHRpb24uIE9uY2UgdGhlIGxvY2F0
aW9uIGlzIGVzdGFibGlzaGVkLCB1c2UgYHN2biBwcm9wZWRpdCBzdm46ZXh0ZXJuYWxzIF9kaXJl
Y3RvcnlfYCB0byBzZXQgdGhlIHN2bjpleHRlcm5hbHMgcHJvcGVydHkgb24gYSBkaXJlY3Rvcnkg
aW4geW91ciByZXBvc2l0b3J5LiBUaGlzIGRpcmVjdG9yeSB3b24ndCBjb250YWluIHRoZSBjb2Rl
LCBidXQgYmUgaXRzIHZlcnNpb25lZCBwYXJlbnQgZGlyZWN0b3J5LgorCitUaGUgY29tbWFuZCBg
c3ZuIHByb3BlZGl0YCB3aWxsIGJyaW5nIHVwIHlvdXIgU3VidmVyc2lvbiBlZGl0b3IsIG1ha2lu
ZyBlZGl0aW5nIHRoZSBsb25nLCAocG90ZW50aWFsbHkgbXVsdGktbGluZSkgcHJvcGVydHkgc2lt
cGxlci4gVGhpcyBzYW1lIG1ldGhvZCBjYW4gYmUgdXNlZCB0byBjaGVjayBvdXQgYSB0YWdnZWQg
YnJhbmNoLCBieSB1c2luZyB0aGUgYXBwcm9wcmlhdGUgVVJMIChlLmcuIGBodHRwOi8vZ29vZ2xl
dGVzdC5nb29nbGVjb2RlLmNvbS9zdm4vdGFncy9yZWxlYXNlLTEuMC4xYCkuIEFkZGl0aW9uYWxs
eSwgdGhlIHN2bjpleHRlcm5hbHMgcHJvcGVydHkgYWxsb3dzIHRoZSBzcGVjaWZpY2F0aW9uIG9m
IGEgcGFydGljdWxhciByZXZpc2lvbiBvZiB0aGUgdHJ1bmsgd2l0aCB0aGUgYC1yXyMjX2Agb3B0
aW9uIChlLmcuIGBleHRlcm5hbHMvc3JjL2dvb2dsZXRlc3QgLXI2MCBodHRwOi8vZ29vZ2xldGVz
dC5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmtgKS4KKworSGVyZSBpcyBhbiBleGFtcGxlIG9mIHVz
aW5nIHRoZSBzdm46ZXh0ZXJuYWxzIHByb3BlcnRpZXMgb24gYSB0cnVuayAocmVhZCB2aWEgYHN2
biBwcm9wZ2V0YCkgb2YgYSBwcm9qZWN0LiBUaGlzIHZhbHVlIGNoZWNrcyBvdXQgYSBjb3B5IG9m
IEdvb2dsZSBUZXN0IGludG8gdGhlIGB0cnVuay9leHRlcm5hbHMvc3JjL2dvb2dsZXRlc3QvYCBk
aXJlY3RvcnkuCisKK2BgYAorW0NvbXB1dGVyOnN2bl0gdXNlciQgc3ZuIHByb3BnZXQgc3ZuOmV4
dGVybmFscyB0cnVuaworZXh0ZXJuYWxzL3NyYy9nb29nbGV0ZXN0IGh0dHA6Ly9nb29nbGV0ZXN0
Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVuaworYGBgCisKKyMgQWRkIHRoZSBGcmFtZXdvcmsgdG8g
WW91ciBQcm9qZWN0ICMKKworVGhlIG5leHQgc3RlcCBpcyB0byBidWlsZCBhbmQgYWRkIHRoZSBn
dGVzdC5mcmFtZXdvcmsgdG8geW91ciBvd24gcHJvamVjdC4gVGhpcyBndWlkZSBkZXNjcmliZXMg
dHdvIGNvbW1vbiB3YXlzIGJlbG93LgorCisgICogKipPcHRpb24gMSoqIC0tLSBUaGUgc2ltcGxl
c3Qgd2F5IHRvIGFkZCBHb29nbGUgVGVzdCB0byB5b3VyIG93biBwcm9qZWN0LCBpcyB0byBvcGVu
IGd0ZXN0Lnhjb2RlcHJvaiAoZm91bmQgaW4gdGhlIHhjb2RlLyBkaXJlY3Rvcnkgb2YgdGhlIEdv
b2dsZSBUZXN0IHRydW5rKSBhbmQgYnVpbGQgdGhlIGZyYW1ld29yayBtYW51YWxseS4gVGhlbiwg
YWRkIHRoZSBidWlsdCBmcmFtZXdvcmsgaW50byB5b3VyIHByb2plY3QgdXNpbmcgdGhlICJBZGQt
PkV4aXN0aW5nIEZyYW1ld29yay4uLiIgZnJvbSB0aGUgY29udGV4dCBtZW51IG9yICJQcm9qZWN0
LT5BZGQuLi4iIGZyb20gdGhlIG1haW4gbWVudS4gVGhlIGd0ZXN0LmZyYW1ld29yayBpcyByZWxv
Y2F0YWJsZSBhbmQgY29udGFpbnMgdGhlIGhlYWRlcnMgYW5kIG9iamVjdCBjb2RlIHRoYXQgeW91
J2xsIG5lZWQgdG8gbWFrZSB0ZXN0cy4gVGhpcyBtZXRob2QgcmVxdWlyZXMgcmVidWlsZGluZyBl
dmVyeSB0aW1lIHlvdSB1cGdyYWRlIEdvb2dsZSBUZXN0IGluIHlvdXIgcHJvamVjdC4KKyAgKiAq
Kk9wdGlvbiAyKiogLS0tIElmIHlvdSBhcmUgZ29pbmcgdG8gYmUgbGl2aW5nIG9mZiB0aGUgdHJ1
bmsgb2YgR29vZ2xlIFRlc3QsIGluY29ycG9yYXRpbmcgaXRzIGxhdGVzdCBmZWF0dXJlcyBpbnRv
IHlvdXIgdW5pdCB0ZXN0cyAob3IgYXJlIGEgR29vZ2xlIFRlc3QgZGV2ZWxvcGVyIHlvdXJzZWxm
KS4gWW91J2xsIHdhbnQgdG8gcmVidWlsZCB0aGUgZnJhbWV3b3JrIGV2ZXJ5IHRpbWUgdGhlIHNv
dXJjZSB1cGRhdGVzLiB0byBkbyB0aGlzLCB5b3UnbGwgbmVlZCB0byBhZGQgdGhlIGd0ZXN0Lnhj
b2RlcHJvaiBmaWxlLCBub3QgdGhlIGZyYW1ld29yayBpdHNlbGYsIHRvIHlvdXIgb3duIFhjb2Rl
IHByb2plY3QuIFRoZW4sIGZyb20gdGhlIGJ1aWxkIHByb2R1Y3RzIHRoYXQgYXJlIHJldmVhbGVk
IGJ5IHRoZSBwcm9qZWN0J3MgZGlzY2xvc3VyZSB0cmlhbmdsZSwgeW91IGNhbiBmaW5kIHRoZSBn
dGVzdC5mcmFtZXdvcmssIHdoaWNoIGNhbiBiZSBhZGRlZCB0byB5b3VyIHRhcmdldHMgKGRpc2N1
c3NlZCBiZWxvdykuCisKKyMgTWFrZSBhIFRlc3QgVGFyZ2V0ICMKKworVG8gc3RhcnQgd3JpdGlu
ZyB0ZXN0cywgbWFrZSBhIG5ldyAiU2hlbGwgVG9vbCIgdGFyZ2V0LiBUaGlzIHRhcmdldCB0ZW1w
bGF0ZSBpcyBhdmFpbGFibGUgdW5kZXIgQlNELCBDb2NvYSwgb3IgQ2FyYm9uLiBBZGQgeW91ciB1
bml0IHRlc3Qgc291cmNlIGNvZGUgdG8gdGhlICJDb21waWxlIFNvdXJjZXMiIGJ1aWxkIHBoYXNl
IG9mIHRoZSB0YXJnZXQuCisKK05leHQsIHlvdSdsbCB3YW50IHRvIGFkZCBndGVzdC5mcmFtZXdv
cmsgaW4gdHdvIGRpZmZlcmVudCB3YXlzLCBkZXBlbmRpbmcgdXBvbiB3aGljaCBvcHRpb24geW91
IGNob3NlIGFib3ZlLgorCisgICogKipPcHRpb24gMSoqIC0tLSBEdXJpbmcgY29tcGlsYXRpb24s
IFhjb2RlIHdpbGwgbmVlZCB0byBrbm93IHRoYXQgeW91IGFyZSBsaW5raW5nIGFnYWluc3QgdGhl
IGd0ZXN0LmZyYW1ld29yay4gQWRkIHRoZSBndGVzdC5mcmFtZXdvcmsgdG8gdGhlICJMaW5rIEJp
bmFyeSB3aXRoIExpYnJhcmllcyIgYnVpbGQgcGhhc2Ugb2YgeW91ciB0ZXN0IHRhcmdldC4gVGhp
cyB3aWxsIGluY2x1ZGUgdGhlIEdvb2dsZSBUZXN0IGhlYWRlcnMgaW4geW91ciBoZWFkZXIgc2Vh
cmNoIHBhdGgsIGFuZCB3aWxsIHRlbGwgdGhlIGxpbmtlciB3aGVyZSB0byBmaW5kIHRoZSBsaWJy
YXJ5LgorICAqICoqT3B0aW9uIDIqKiAtLS0gSWYgeW91ciB3b3JraW5nIG91dCBvZiB0aGUgdHJ1
bmssIHlvdSdsbCBhbHNvIHdhbnQgdG8gYWRkIGd0ZXN0LmZyYW1ld29yayB0byB5b3VyICJMaW5r
IEJpbmFyeSB3aXRoIExpYnJhcmllcyIgYnVpbGQgcGhhc2Ugb2YgeW91ciB0ZXN0IHRhcmdldC4g
SW4gYWRkaXRpb24sIHlvdSdsbCAgd2FudCB0byBhZGQgdGhlIGd0ZXN0LmZyYW1ld29yayBhcyBh
IGRlcGVuZGVuY3kgdG8geW91ciB1bml0IHRlc3QgdGFyZ2V0LiBUaGlzIHdheSwgWGNvZGUgd2ls
bCBtYWtlIHN1cmUgdGhhdCBndGVzdC5mcmFtZXdvcmsgaXMgdXAgdG8gZGF0ZSwgZXZlcnkgdGlt
ZSB5b3VyIGJ1aWxkIHlvdXIgdGFyZ2V0LiBGaW5hbGx5LCBpZiB5b3UgZG9uJ3Qgc2hhcmUgYnVp
bGQgZGlyZWN0b3JpZXMgd2l0aCBHb29nbGUgVGVzdCwgeW91J2xsIGhhdmUgdG8gY29weSB0aGUg
Z3Rlc3QuZnJhbWV3b3JrIGludG8geW91ciBvd24gYnVpbGQgcHJvZHVjdHMgZGlyZWN0b3J5IHVz
aW5nIGEgIlJ1biBTY3JpcHQiIGJ1aWxkIHBoYXNlLgorCisjIFNldCBVcCB0aGUgRXhlY3V0YWJs
ZSBSdW4gRW52aXJvbm1lbnQgIworCitTaW5jZSB0aGUgdW5pdCB0ZXN0IGV4ZWN1dGFibGUgaXMg
YSBzaGVsbCB0b29sLCBpdCBkb2Vzbid0IGhhdmUgYSBidW5kbGUgd2l0aCBhIGBDb250ZW50cy9G
cmFtZXdvcmtzYCBkaXJlY3RvcnksIGluIHdoaWNoIHRvIHBsYWNlIGd0ZXN0LmZyYW1ld29yay4g
SW5zdGVhZCwgdGhlIGR5bmFtaWMgbGlua2VyIG11c3QgYmUgdG9sZCBhdCBydW50aW1lIHRvIHNl
YXJjaCBmb3IgdGhlIGZyYW1ld29yayBpbiBhbm90aGVyIGxvY2F0aW9uLiBUaGlzIGNhbiBiZSBh
Y2NvbXBsaXNoZWQgYnkgc2V0dGluZyB0aGUgIkRZTERcX0ZSQU1FV09SS1xfUEFUSCIgZW52aXJv
bm1lbnQgdmFyaWFibGUgaW4gdGhlICJFZGl0IEFjdGl2ZSBFeGVjdXRhYmxlIC4uLiIgQXJndW1l
bnRzIHRhYiwgdW5kZXIgIlZhcmlhYmxlcyB0byBiZSBzZXQgaW4gdGhlIGVudmlyb25tZW50OiIu
IFRoZSBwYXRoIGZvciB0aGlzIHZhbHVlIGlzIHRoZSBwYXRoIChyZWxhdGl2ZSBvciBhYnNvbHV0
ZSkgb2YgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBndGVzdC5mcmFtZXdvcmsuCisKK0lm
IHlvdSBoYXZlbid0IHNldCB1cCB0aGUgRFlMRFxfRlJBTUVXT1JLXF9QQVRILCBjb3JyZWN0bHks
IHlvdSBtaWdodCBnZXQgYSBtZXNzYWdlIGxpa2UgdGhpczoKKworYGBgCitbU2Vzc2lvbiBzdGFy
dGVkIGF0IDIwMDgtMDgtMTUgMDY6MjM6NTcgLTA2MDAuXQorICBkeWxkOiBMaWJyYXJ5IG5vdCBs
b2FkZWQ6IEBsb2FkZXJfcGF0aC8uLi9GcmFtZXdvcmtzL2d0ZXN0LmZyYW1ld29yay9WZXJzaW9u
cy9BL2d0ZXN0CisgICAgUmVmZXJlbmNlZCBmcm9tOiAvVXNlcnMvdXNlcm5hbWUvRG9jdW1lbnRz
L1NhbmRib3gvZ3Rlc3RTYW1wbGUvYnVpbGQvRGVidWcvV2lkZ2V0RnJhbWV3b3JrVGVzdAorICAg
IFJlYXNvbjogaW1hZ2Ugbm90IGZvdW5kCitgYGAKKworVG8gY29ycmVjdCB0aGlzIHByb2JsZW0s
IGdvdCB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGV4ZWN1dGFibGUgbmFtZWQgaW4g
IlJlZmVyZW5jZWQgZnJvbToiIHZhbHVlIGluIHRoZSBlcnJvciBtZXNzYWdlIGFib3ZlLiBUaGVu
LCB3aXRoIHRoZSB0ZXJtaW5hbCBpbiB0aGlzIGxvY2F0aW9uLCBmaW5kIHRoZSByZWxhdGl2ZSBw
YXRoIHRvIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZ3Rlc3QuZnJhbWV3b3JrLiBUaGF0
IGlzIHRoZSB2YWx1ZSB5b3UnbGwgbmVlZCB0byBzZXQgYXMgdGhlIERZTERcX0ZSQU1FV09SS1xf
UEFUSC4KKworIyBCdWlsZCBhbmQgR28gIworCitOb3csIHdoZW4geW91IGNsaWNrICJCdWlsZCBh
bmQgR28iLCB0aGUgdGVzdCB3aWxsIGJlIGV4ZWN1dGVkLiBEdW1waW5nIG91dCBzb21ldGhpbmcg
bGlrZSB0aGlzOgorCitgYGAKK1tTZXNzaW9uIHN0YXJ0ZWQgYXQgMjAwOC0wOC0wNiAwNjozNjox
MyAtMDYwMC5dCitbPT09PT09PT09PV0gUnVubmluZyAyIHRlc3RzIGZyb20gMSB0ZXN0IGNhc2Uu
CitbLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0LXVwLgorWy0tLS0tLS0t
LS1dIDIgdGVzdHMgZnJvbSBXaWRnZXRJbml0aWFsaXplclRlc3QKK1sgUlVOICAgICAgXSBXaWRn
ZXRJbml0aWFsaXplclRlc3QuVGVzdENvbnN0cnVjdG9yCitbICAgICAgIE9LIF0gV2lkZ2V0SW5p
dGlhbGl6ZXJUZXN0LlRlc3RDb25zdHJ1Y3RvcgorWyBSVU4gICAgICBdIFdpZGdldEluaXRpYWxp
emVyVGVzdC5UZXN0Q29udmVyc2lvbgorWyAgICAgICBPSyBdIFdpZGdldEluaXRpYWxpemVyVGVz
dC5UZXN0Q29udmVyc2lvbgorWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHRl
YXItZG93bgorWz09PT09PT09PT1dIDIgdGVzdHMgZnJvbSAxIHRlc3QgY2FzZSByYW4uCitbICBQ
QVNTRUQgIF0gMiB0ZXN0cy4KKworVGhlIERlYnVnZ2VyIGhhcyBleGl0ZWQgd2l0aCBzdGF0dXMg
MC4gIAorYGBgCisKKyMgU3VtbWFyeSAjCisKK1VuaXQgdGVzdGluZyBpcyBhIHZhbHVhYmxlIHdh
eSB0byBlbnN1cmUgeW91ciBkYXRhIG1vZGVsIHN0YXlzIHZhbGlkIGV2ZW4gZHVyaW5nIHJhcGlk
IGRldmVsb3BtZW50IG9yIHJlZmFjdG9yaW5nLiBUaGUgR29vZ2xlIFRlc3RpbmcgRnJhbWV3b3Jr
IGlzIGEgZ3JlYXQgdW5pdCB0ZXN0aW5nIGZyYW1ld29yayBmb3IgQyBhbmQgQysrIHdoaWNoIGlu
dGVncmF0ZXMgd2VsbCB3aXRoIGFuIFhjb2RlIGRldmVsb3BtZW50IGVudmlyb25tZW50LgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFf
Nl9BZHZhbmNlZEd1aWRlLm1kIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9WMV82X0FkdmFuY2VkR3VpZGUu
bWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzg4NjRiMTY2N2MxYzQwNzMzMDA5ZDFhMTcwY2MxYWJiMTAwODc4OQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfNl9BZHZhbmNlZEd1aWRlLm1k
CkBAIC0wLDAgKzEsMjE3OCBAQAorCisKK05vdyB0aGF0IHlvdSBoYXZlIHJlYWQgW1ByaW1lcl0o
VjFfNl9QcmltZXIubWQpIGFuZCBsZWFybmVkIGhvdyB0byB3cml0ZSB0ZXN0cwordXNpbmcgR29v
Z2xlIFRlc3QsIGl0J3MgdGltZSB0byBsZWFybiBzb21lIG5ldyB0cmlja3MuIFRoaXMgZG9jdW1l
bnQKK3dpbGwgc2hvdyB5b3UgbW9yZSBhc3NlcnRpb25zIGFzIHdlbGwgYXMgaG93IHRvIGNvbnN0
cnVjdCBjb21wbGV4CitmYWlsdXJlIG1lc3NhZ2VzLCBwcm9wYWdhdGUgZmF0YWwgZmFpbHVyZXMs
IHJldXNlIGFuZCBzcGVlZCB1cCB5b3VyCit0ZXN0IGZpeHR1cmVzLCBhbmQgdXNlIHZhcmlvdXMg
ZmxhZ3Mgd2l0aCB5b3VyIHRlc3RzLgorCisjIE1vcmUgQXNzZXJ0aW9ucyAjCisKK1RoaXMgc2Vj
dGlvbiBjb3ZlcnMgc29tZSBsZXNzIGZyZXF1ZW50bHkgdXNlZCwgYnV0IHN0aWxsIHNpZ25pZmlj
YW50LAorYXNzZXJ0aW9ucy4KKworIyMgRXhwbGljaXQgU3VjY2VzcyBhbmQgRmFpbHVyZSAjIwor
CitUaGVzZSB0aHJlZSBhc3NlcnRpb25zIGRvIG5vdCBhY3R1YWxseSB0ZXN0IGEgdmFsdWUgb3Ig
ZXhwcmVzc2lvbi4gSW5zdGVhZCwKK3RoZXkgZ2VuZXJhdGUgYSBzdWNjZXNzIG9yIGZhaWx1cmUg
ZGlyZWN0bHkuIExpa2UgdGhlIG1hY3JvcyB0aGF0IGFjdHVhbGx5CitwZXJmb3JtIGEgdGVzdCwg
eW91IG1heSBzdHJlYW0gYSBjdXN0b20gZmFpbHVyZSBtZXNzYWdlIGludG8gdGhlIHRoZW0uCisK
K3wgYFNVQ0NFRUQoKTtgIHwKK3w6LS0tLS0tLS0tLS0tLXwKKworR2VuZXJhdGVzIGEgc3VjY2Vz
cy4gVGhpcyBkb2VzIE5PVCBtYWtlIHRoZSBvdmVyYWxsIHRlc3Qgc3VjY2VlZC4gQSB0ZXN0IGlz
Citjb25zaWRlcmVkIHN1Y2Nlc3NmdWwgb25seSBpZiBub25lIG9mIGl0cyBhc3NlcnRpb25zIGZh
aWwgZHVyaW5nIGl0cyBleGVjdXRpb24uCisKK05vdGU6IGBTVUNDRUVEKClgIGlzIHB1cmVseSBk
b2N1bWVudGFyeSBhbmQgY3VycmVudGx5IGRvZXNuJ3QgZ2VuZXJhdGUgYW55Cit1c2VyLXZpc2li
bGUgb3V0cHV0LiBIb3dldmVyLCB3ZSBtYXkgYWRkIGBTVUNDRUVEKClgIG1lc3NhZ2VzIHRvIEdv
b2dsZSBUZXN0J3MKK291dHB1dCBpbiB0aGUgZnV0dXJlLgorCit8IGBGQUlMKCk7YCAgfCBgQURE
X0ZBSUxVUkUoKTtgIHwgYEFERF9GQUlMVVJFX0FUKCJgX2ZpbGVcX3BhdGhfYCIsIGBfbGluZVxf
bnVtYmVyX2ApO2AgfAorfDotLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKKworYEZBSUwo
KWAgZ2VuZXJhdGVzIGEgZmF0YWwgZmFpbHVyZSwgd2hpbGUgYEFERF9GQUlMVVJFKClgIGFuZCBg
QUREX0ZBSUxVUkVfQVQoKWAgZ2VuZXJhdGUgYSBub25mYXRhbAorZmFpbHVyZS4gVGhlc2UgYXJl
IHVzZWZ1bCB3aGVuIGNvbnRyb2wgZmxvdywgcmF0aGVyIHRoYW4gYSBCb29sZWFuIGV4cHJlc3Np
b24sCitkZXRlcmVtaW5lcyB0aGUgdGVzdCdzIHN1Y2Nlc3Mgb3IgZmFpbHVyZS4gRm9yIGV4YW1w
bGUsIHlvdSBtaWdodCB3YW50IHRvIHdyaXRlCitzb21ldGhpbmcgbGlrZToKKworYGBgCitzd2l0
Y2goZXhwcmVzc2lvbikgeworICBjYXNlIDE6IC4uLiBzb21lIGNoZWNrcyAuLi4KKyAgY2FzZSAy
OiAuLi4gc29tZSBvdGhlciBjaGVja3MKKyAgLi4uCisgIGRlZmF1bHQ6IEZBSUwoKSA8PCAiV2Ug
c2hvdWxkbid0IGdldCBoZXJlLiI7Cit9CitgYGAKKworX0F2YWlsYWJpbGl0eV86IExpbnV4LCBX
aW5kb3dzLCBNYWMuCisKKyMjIEV4Y2VwdGlvbiBBc3NlcnRpb25zICMjCisKK1RoZXNlIGFyZSBm
b3IgdmVyaWZ5aW5nIHRoYXQgYSBwaWVjZSBvZiBjb2RlIHRocm93cyAob3IgZG9lcyBub3QKK3Ro
cm93KSBhbiBleGNlcHRpb24gb2YgdGhlIGdpdmVuIHR5cGU6CisKK3wgKipGYXRhbCBhc3NlcnRp
b24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0t
LS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8
IGBBU1NFUlRfVEhST1coYF9zdGF0ZW1lbnRfLCBfZXhjZXB0aW9uXF90eXBlX2ApO2AgIHwgYEVY
UEVDVF9USFJPVyhgX3N0YXRlbWVudF8sIF9leGNlcHRpb25cX3R5cGVfYCk7YCAgfCBfc3RhdGVt
ZW50XyB0aHJvd3MgYW4gZXhjZXB0aW9uIG9mIHRoZSBnaXZlbiB0eXBlICB8Cit8IGBBU1NFUlRf
QU5ZX1RIUk9XKGBfc3RhdGVtZW50X2ApO2AgICAgICAgICAgICAgICAgfCBgRVhQRUNUX0FOWV9U
SFJPVyhgX3N0YXRlbWVudF9gKTtgICAgICAgICAgICAgICAgIHwgX3N0YXRlbWVudF8gdGhyb3dz
IGFuIGV4Y2VwdGlvbiBvZiBhbnkgdHlwZSAgICAgICAgfAorfCBgQVNTRVJUX05PX1RIUk9XKGBf
c3RhdGVtZW50X2ApO2AgICAgICAgICAgICAgICAgIHwgYEVYUEVDVF9OT19USFJPVyhgX3N0YXRl
bWVudF9gKTtgICAgICAgICAgICAgICAgICB8IF9zdGF0ZW1lbnRfIGRvZXNuJ3QgdGhyb3cgYW55
IGV4Y2VwdGlvbiAgICAgICAgICAgIHwKKworRXhhbXBsZXM6CisKK2BgYAorQVNTRVJUX1RIUk9X
KEZvbyg1KSwgYmFyX2V4Y2VwdGlvbik7CisKK0VYUEVDVF9OT19USFJPVyh7CisgIGludCBuID0g
NTsKKyAgQmFyKCZuKTsKK30pOworYGBgCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93
cywgTWFjOyBzaW5jZSB2ZXJzaW9uIDEuMS4wLgorCisjIyBQcmVkaWNhdGUgQXNzZXJ0aW9ucyBm
b3IgQmV0dGVyIEVycm9yIE1lc3NhZ2VzICMjCisKK0V2ZW4gdGhvdWdoIEdvb2dsZSBUZXN0IGhh
cyBhIHJpY2ggc2V0IG9mIGFzc2VydGlvbnMsIHRoZXkgY2FuIG5ldmVyIGJlCitjb21wbGV0ZSwg
YXMgaXQncyBpbXBvc3NpYmxlIChub3IgYSBnb29kIGlkZWEpIHRvIGFudGljaXBhdGUgYWxsIHRo
ZSBzY2VuYXJpb3MKK2EgdXNlciBtaWdodCBydW4gaW50by4gVGhlcmVmb3JlLCBzb21ldGltZXMg
YSB1c2VyIGhhcyB0byB1c2UgYEVYUEVDVF9UUlVFKClgCit0byBjaGVjayBhIGNvbXBsZXggZXhw
cmVzc2lvbiwgZm9yIGxhY2sgb2YgYSBiZXR0ZXIgbWFjcm8uIFRoaXMgaGFzIHRoZSBwcm9ibGVt
CitvZiBub3Qgc2hvd2luZyB5b3UgdGhlIHZhbHVlcyBvZiB0aGUgcGFydHMgb2YgdGhlIGV4cHJl
c3Npb24sIG1ha2luZyBpdCBoYXJkIHRvCit1bmRlcnN0YW5kIHdoYXQgd2VudCB3cm9uZy4gQXMg
YSB3b3JrYXJvdW5kLCBzb21lIHVzZXJzIGNob29zZSB0byBjb25zdHJ1Y3QgdGhlCitmYWlsdXJl
IG1lc3NhZ2UgYnkgdGhlbXNlbHZlcywgc3RyZWFtaW5nIGl0IGludG8gYEVYUEVDVF9UUlVFKClg
LiBIb3dldmVyLCB0aGlzCitpcyBhd2t3YXJkIGVzcGVjaWFsbHkgd2hlbiB0aGUgZXhwcmVzc2lv
biBoYXMgc2lkZS1lZmZlY3RzIG9yIGlzIGV4cGVuc2l2ZSB0bworZXZhbHVhdGUuCisKK0dvb2ds
ZSBUZXN0IGdpdmVzIHlvdSB0aHJlZSBkaWZmZXJlbnQgb3B0aW9ucyB0byBzb2x2ZSB0aGlzIHBy
b2JsZW06CisKKyMjIyBVc2luZyBhbiBFeGlzdGluZyBCb29sZWFuIEZ1bmN0aW9uICMjIworCitJ
ZiB5b3UgYWxyZWFkeSBoYXZlIGEgZnVuY3Rpb24gb3IgYSBmdW5jdG9yIHRoYXQgcmV0dXJucyBg
Ym9vbGAgKG9yIGEgdHlwZQordGhhdCBjYW4gYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gYGJv
b2xgKSwgeW91IGNhbiB1c2UgaXQgaW4gYSBfcHJlZGljYXRlCithc3NlcnRpb25fIHRvIGdldCB0
aGUgZnVuY3Rpb24gYXJndW1lbnRzIHByaW50ZWQgZm9yIGZyZWU6CisKK3wgKipGYXRhbCBhc3Nl
cnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0t
LS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18
Cit8IGBBU1NFUlRfUFJFRDEoYF9wcmVkMSwgdmFsMV9gKTtgICAgICAgIHwgYEVYUEVDVF9QUkVE
MShgX3ByZWQxLCB2YWwxX2ApO2AgfCBfcHJlZDEodmFsMSlfIHJldHVybnMgdHJ1ZSB8Cit8IGBB
U1NFUlRfUFJFRDIoYF9wcmVkMiwgdmFsMSwgdmFsMl9gKTtgIHwgYEVYUEVDVF9QUkVEMihgX3By
ZWQyLCB2YWwxLCB2YWwyX2ApO2AgfCAgX3ByZWQyKHZhbDEsIHZhbDIpXyByZXR1cm5zIHRydWUg
fAorfCAgLi4uICAgICAgICAgICAgICAgIHwgLi4uICAgICAgICAgICAgICAgICAgICB8IC4uLiAg
ICAgICAgICB8CisKK0luIHRoZSBhYm92ZSwgX3ByZWRuXyBpcyBhbiBfbl8tYXJ5IHByZWRpY2F0
ZSBmdW5jdGlvbiBvciBmdW5jdG9yLCB3aGVyZQorX3ZhbDFfLCBfdmFsMl8sIC4uLiwgYW5kIF92
YWxuXyBhcmUgaXRzIGFyZ3VtZW50cy4gVGhlIGFzc2VydGlvbiBzdWNjZWVkcworaWYgdGhlIHBy
ZWRpY2F0ZSByZXR1cm5zIGB0cnVlYCB3aGVuIGFwcGxpZWQgdG8gdGhlIGdpdmVuIGFyZ3VtZW50
cywgYW5kIGZhaWxzCitvdGhlcndpc2UuIFdoZW4gdGhlIGFzc2VydGlvbiBmYWlscywgaXQgcHJp
bnRzIHRoZSB2YWx1ZSBvZiBlYWNoIGFyZ3VtZW50LiBJbgorZWl0aGVyIGNhc2UsIHRoZSBhcmd1
bWVudHMgYXJlIGV2YWx1YXRlZCBleGFjdGx5IG9uY2UuCisKK0hlcmUncyBhbiBleGFtcGxlLiBH
aXZlbgorCitgYGAKKy8vIFJldHVybnMgdHJ1ZSBpZmYgbSBhbmQgbiBoYXZlIG5vIGNvbW1vbiBk
aXZpc29ycyBleGNlcHQgMS4KK2Jvb2wgTXV0dWFsbHlQcmltZShpbnQgbSwgaW50IG4pIHsgLi4u
IH0KK2NvbnN0IGludCBhID0gMzsKK2NvbnN0IGludCBiID0gNDsKK2NvbnN0IGludCBjID0gMTA7
CitgYGAKKwordGhlIGFzc2VydGlvbiBgRVhQRUNUX1BSRUQyKE11dHVhbGx5UHJpbWUsIGEsIGIp
O2Agd2lsbCBzdWNjZWVkLCB3aGlsZSB0aGUKK2Fzc2VydGlvbiBgRVhQRUNUX1BSRUQyKE11dHVh
bGx5UHJpbWUsIGIsIGMpO2Agd2lsbCBmYWlsIHdpdGggdGhlIG1lc3NhZ2UKKworPHByZT4KKyFN
dXR1YWxseVByaW1lKGIsIGMpIGlzIGZhbHNlLCB3aGVyZTxicj4KK2IgaXMgNDxicj4KK2MgaXMg
MTA8YnI+Cis8L3ByZT4KKworKipOb3RlczoqKgorCisgIDEuIElmIHlvdSBzZWUgYSBjb21waWxl
ciBlcnJvciAibm8gbWF0Y2hpbmcgZnVuY3Rpb24gdG8gY2FsbCIgd2hlbiB1c2luZyBgQVNTRVJU
X1BSRUQqYCBvciBgRVhQRUNUX1BSRUQqYCwgcGxlYXNlIHNlZSBbdGhpc10odjFfNl9GQVEubWQj
aXRoZS1jb21waWxlci1jb21wbGFpbnMtYWJvdXQtdW5kZWZpbmVkLXJlZmVyZW5jZXMtdG8tc29t
ZS1zdGF0aWMtY29uc3QtbWVtYmVyLXZhcmlhYmxlcy1idXQtaS1kaWQtZGVmaW5lLXRoZW0taW4t
dGhlLWNsYXNzLWJvZHktd2hhdHMtd3JvbmcpIGZvciBob3cgdG8gcmVzb2x2ZSBpdC4KKyAgMS4g
Q3VycmVudGx5IHdlIG9ubHkgcHJvdmlkZSBwcmVkaWNhdGUgYXNzZXJ0aW9ucyBvZiBhcml0eSA8
PSA1LiBJZiB5b3UgbmVlZCBhIGhpZ2hlci1hcml0eSBhc3NlcnRpb24sIGxldCB1cyBrbm93Lgor
CitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYworCisjIyMgVXNpbmcgYSBGdW5j
dGlvbiBUaGF0IFJldHVybnMgYW4gQXNzZXJ0aW9uUmVzdWx0ICMjIworCitXaGlsZSBgRVhQRUNU
X1BSRUQqKClgIGFuZCBmcmllbmRzIGFyZSBoYW5keSBmb3IgYSBxdWljayBqb2IsIHRoZQorc3lu
dGF4IGlzIG5vdCBzYXRpc2ZhY3Rvcnk6IHlvdSBoYXZlIHRvIHVzZSBkaWZmZXJlbnQgbWFjcm9z
IGZvcgorZGlmZmVyZW50IGFyaXRpZXMsIGFuZCBpdCBmZWVscyBtb3JlIGxpa2UgTGlzcCB0aGFu
IEMrKy4gIFRoZQorYDo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0YCBjbGFzcyBzb2x2ZXMgdGhp
cyBwcm9ibGVtLgorCitBbiBgQXNzZXJ0aW9uUmVzdWx0YCBvYmplY3QgcmVwcmVzZW50cyB0aGUg
cmVzdWx0IG9mIGFuIGFzc2VydGlvbgorKHdoZXRoZXIgaXQncyBhIHN1Y2Nlc3Mgb3IgYSBmYWls
dXJlLCBhbmQgYW4gYXNzb2NpYXRlZCBtZXNzYWdlKS4gIFlvdQorY2FuIGNyZWF0ZSBhbiBgQXNz
ZXJ0aW9uUmVzdWx0YCB1c2luZyBvbmUgb2YgdGhlc2UgZmFjdG9yeQorZnVuY3Rpb25zOgorCitg
YGAKK25hbWVzcGFjZSB0ZXN0aW5nIHsKKworLy8gUmV0dXJucyBhbiBBc3NlcnRpb25SZXN1bHQg
b2JqZWN0IHRvIGluZGljYXRlIHRoYXQgYW4gYXNzZXJ0aW9uIGhhcworLy8gc3VjY2VlZGVkLgor
QXNzZXJ0aW9uUmVzdWx0IEFzc2VydGlvblN1Y2Nlc3MoKTsKKworLy8gUmV0dXJucyBhbiBBc3Nl
cnRpb25SZXN1bHQgb2JqZWN0IHRvIGluZGljYXRlIHRoYXQgYW4gYXNzZXJ0aW9uIGhhcworLy8g
ZmFpbGVkLgorQXNzZXJ0aW9uUmVzdWx0IEFzc2VydGlvbkZhaWx1cmUoKTsKKworfQorYGBgCisK
K1lvdSBjYW4gdGhlbiB1c2UgdGhlIGA8PGAgb3BlcmF0b3IgdG8gc3RyZWFtIG1lc3NhZ2VzIHRv
IHRoZQorYEFzc2VydGlvblJlc3VsdGAgb2JqZWN0LgorCitUbyBwcm92aWRlIG1vcmUgcmVhZGFi
bGUgbWVzc2FnZXMgaW4gQm9vbGVhbiBhc3NlcnRpb25zCisoZS5nLiBgRVhQRUNUX1RSVUUoKWAp
LCB3cml0ZSBhIHByZWRpY2F0ZSBmdW5jdGlvbiB0aGF0IHJldHVybnMKK2BBc3NlcnRpb25SZXN1
bHRgIGluc3RlYWQgb2YgYGJvb2xgLiBGb3IgZXhhbXBsZSwgaWYgeW91IGRlZmluZQorYElzRXZl
bigpYCBhczoKKworYGBgCis6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBJc0V2ZW4oaW50IG4p
IHsKKyAgaWYgKChuICUgMikgPT0gMCkKKyAgICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25T
dWNjZXNzKCk7CisgIGVsc2UKKyAgICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJl
KCkgPDwgbiA8PCAiIGlzIG9kZCI7Cit9CitgYGAKKworaW5zdGVhZCBvZjoKKworYGBgCitib29s
IElzRXZlbihpbnQgbikgeworICByZXR1cm4gKG4gJSAyKSA9PSAwOworfQorYGBgCisKK3RoZSBm
YWlsZWQgYXNzZXJ0aW9uIGBFWFBFQ1RfVFJVRShJc0V2ZW4oRmliKDQpKSlgIHdpbGwgcHJpbnQ6
CisKKzxwcmU+CitWYWx1ZSBvZjogIUlzRXZlbihGaWIoNCkpPGJyPgorQWN0dWFsOiBmYWxzZSAo
KjMgaXMgb2RkKik8YnI+CitFeHBlY3RlZDogdHJ1ZTxicj4KKzwvcHJlPgorCitpbnN0ZWFkIG9m
IGEgbW9yZSBvcGFxdWUKKworPHByZT4KK1ZhbHVlIG9mOiAhSXNFdmVuKEZpYig0KSk8YnI+CitB
Y3R1YWw6IGZhbHNlPGJyPgorRXhwZWN0ZWQ6IHRydWU8YnI+Cis8L3ByZT4KKworSWYgeW91IHdh
bnQgaW5mb3JtYXRpdmUgbWVzc2FnZXMgaW4gYEVYUEVDVF9GQUxTRWAgYW5kIGBBU1NFUlRfRkFM
U0VgCithcyB3ZWxsLCBhbmQgYXJlIGZpbmUgd2l0aCBtYWtpbmcgdGhlIHByZWRpY2F0ZSBzbG93
ZXIgaW4gdGhlIHN1Y2Nlc3MKK2Nhc2UsIHlvdSBjYW4gc3VwcGx5IGEgc3VjY2VzcyBtZXNzYWdl
OgorCitgYGAKKzo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IElzRXZlbihpbnQgbikgeworICBp
ZiAoKG4gJSAyKSA9PSAwKQorICAgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3Mo
KSA8PCBuIDw8ICIgaXMgZXZlbiI7CisgIGVsc2UKKyAgICByZXR1cm4gOjp0ZXN0aW5nOjpBc3Nl
cnRpb25GYWlsdXJlKCkgPDwgbiA8PCAiIGlzIG9kZCI7Cit9CitgYGAKKworVGhlbiB0aGUgc3Rh
dGVtZW50IGBFWFBFQ1RfRkFMU0UoSXNFdmVuKEZpYig2KSkpYCB3aWxsIHByaW50CisKKzxwcmU+
CitWYWx1ZSBvZjogIUlzRXZlbihGaWIoNikpPGJyPgorQWN0dWFsOiB0cnVlICg4IGlzIGV2ZW4p
PGJyPgorRXhwZWN0ZWQ6IGZhbHNlPGJyPgorPC9wcmU+CisKK19BdmFpbGFiaWxpdHlfOiBMaW51
eCwgV2luZG93cywgTWFjOyBzaW5jZSB2ZXJzaW9uIDEuNC4xLgorCisjIyMgVXNpbmcgYSBQcmVk
aWNhdGUtRm9ybWF0dGVyICMjIworCitJZiB5b3UgZmluZCB0aGUgZGVmYXVsdCBtZXNzYWdlIGdl
bmVyYXRlZCBieSBgKEFTU0VSVHxFWFBFQ1QpX1BSRUQqYCBhbmQKK2AoQVNTRVJUfEVYUEVDVClf
KFRSVUV8RkFMU0UpYCB1bnNhdGlzZmFjdG9yeSwgb3Igc29tZSBhcmd1bWVudHMgdG8geW91cgor
cHJlZGljYXRlIGRvIG5vdCBzdXBwb3J0IHN0cmVhbWluZyB0byBgb3N0cmVhbWAsIHlvdSBjYW4g
aW5zdGVhZCB1c2UgdGhlCitmb2xsb3dpbmcgX3ByZWRpY2F0ZS1mb3JtYXR0ZXIgYXNzZXJ0aW9u
c18gdG8gX2Z1bGx5XyBjdXN0b21pemUgaG93IHRoZQorbWVzc2FnZSBpcyBmb3JtYXR0ZWQ6CisK
K3wgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlm
aWVzKiogfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18
Oi0tLS0tLS0tLS0tLS18Cit8IGBBU1NFUlRfUFJFRF9GT1JNQVQxKGBfcHJlZFxfZm9ybWF0MSwg
dmFsMV9gKTtgICAgICAgICB8IGBFWFBFQ1RfUFJFRF9GT1JNQVQxKGBfcHJlZFxfZm9ybWF0MSwg
dmFsMV9gKTsgfCBfcHJlZFxfZm9ybWF0MSh2YWwxKV8gaXMgc3VjY2Vzc2Z1bCB8Cit8IGBBU1NF
UlRfUFJFRF9GT1JNQVQyKGBfcHJlZFxfZm9ybWF0MiwgdmFsMSwgdmFsMl9gKTtgIHwgYEVYUEVD
VF9QUkVEX0ZPUk1BVDIoYF9wcmVkXF9mb3JtYXQyLCB2YWwxLCB2YWwyX2ApO2AgfCBfcHJlZFxf
Zm9ybWF0Mih2YWwxLCB2YWwyKV8gaXMgc3VjY2Vzc2Z1bCB8Cit8IGAuLi5gICAgICAgICAgICAg
ICAgfCBgLi4uYCAgICAgICAgICAgICAgICAgIHwgYC4uLmAgICAgICAgIHwKKworVGhlIGRpZmZl
cmVuY2UgYmV0d2VlbiB0aGlzIGFuZCB0aGUgcHJldmlvdXMgdHdvIGdyb3VwcyBvZiBtYWNyb3Mg
aXMgdGhhdCBpbnN0ZWFkIG9mCithIHByZWRpY2F0ZSwgYChBU1NFUlR8RVhQRUNUKV9QUkVEX0ZP
Uk1BVCpgIHRha2UgYSBfcHJlZGljYXRlLWZvcm1hdHRlcl8KKyhfcHJlZFxfZm9ybWF0bl8pLCB3
aGljaCBpcyBhIGZ1bmN0aW9uIG9yIGZ1bmN0b3Igd2l0aCB0aGUgc2lnbmF0dXJlOgorCitgOjp0
ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgUHJlZGljYXRlRm9ybWF0dGVybihjb25zdCBjaGFyKiBg
X2V4cHIxX2AsIGNvbnN0IGNoYXIqIGBfZXhwcjJfYCwgLi4uIGNvbnN0IGNoYXIqIGBfZXhwcm5f
YCwgVDEgYF92YWwxX2AsIFQyIGBfdmFsMl9gLCAuLi4gVG4gYF92YWxuX2ApO2AKKword2hlcmUg
X3ZhbDFfLCBfdmFsMl8sIC4uLiwgYW5kIF92YWxuXyBhcmUgdGhlIHZhbHVlcyBvZiB0aGUgcHJl
ZGljYXRlCithcmd1bWVudHMsIGFuZCBfZXhwcjFfLCBfZXhwcjJfLCAuLi4sIGFuZCBfZXhwcm5f
IGFyZSB0aGUgY29ycmVzcG9uZGluZworZXhwcmVzc2lvbnMgYXMgdGhleSBhcHBlYXIgaW4gdGhl
IHNvdXJjZSBjb2RlLiBUaGUgdHlwZXMgYFQxYCwgYFQyYCwgLi4uLCBhbmQKK2BUbmAgY2FuIGJl
IGVpdGhlciB2YWx1ZSB0eXBlcyBvciByZWZlcmVuY2UgdHlwZXMuIEZvciBleGFtcGxlLCBpZiBh
bgorYXJndW1lbnQgaGFzIHR5cGUgYEZvb2AsIHlvdSBjYW4gZGVjbGFyZSBpdCBhcyBlaXRoZXIg
YEZvb2Agb3IgYGNvbnN0IEZvbyZgLAord2hpY2hldmVyIGlzIGFwcHJvcHJpYXRlLgorCitBIHBy
ZWRpY2F0ZS1mb3JtYXR0ZXIgcmV0dXJucyBhIGA6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdGAg
b2JqZWN0IHRvIGluZGljYXRlCit3aGV0aGVyIHRoZSBhc3NlcnRpb24gaGFzIHN1Y2NlZWRlZCBv
ciBub3QuIFRoZSBvbmx5IHdheSB0byBjcmVhdGUgc3VjaCBhbgorb2JqZWN0IGlzIHRvIGNhbGwg
b25lIG9mIHRoZXNlIGZhY3RvcnkgZnVuY3Rpb25zOgorCitBcyBhbiBleGFtcGxlLCBsZXQncyBp
bXByb3ZlIHRoZSBmYWlsdXJlIG1lc3NhZ2UgaW4gdGhlIHByZXZpb3VzIGV4YW1wbGUsIHdoaWNo
IHVzZXMgYEVYUEVDVF9QUkVEMigpYDoKKworYGBgCisvLyBSZXR1cm5zIHRoZSBzbWFsbGVzdCBw
cmltZSBjb21tb24gZGl2aXNvciBvZiBtIGFuZCBuLAorLy8gb3IgMSB3aGVuIG0gYW5kIG4gYXJl
IG11dHVhbGx5IHByaW1lLgoraW50IFNtYWxsZXN0UHJpbWVDb21tb25EaXZpc29yKGludCBtLCBp
bnQgbikgeyAuLi4gfQorCisvLyBBIHByZWRpY2F0ZS1mb3JtYXR0ZXIgZm9yIGFzc2VydGluZyB0
aGF0IHR3byBpbnRlZ2VycyBhcmUgbXV0dWFsbHkgcHJpbWUuCis6OnRlc3Rpbmc6OkFzc2VydGlv
blJlc3VsdCBBc3NlcnRNdXR1YWxseVByaW1lKGNvbnN0IGNoYXIqIG1fZXhwciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbl9leHBy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG4pIHsK
KyAgaWYgKE11dHVhbGx5UHJpbWUobSwgbikpCisgICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0
aW9uU3VjY2VzcygpOworCisgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKQor
ICAgICAgPDwgbV9leHByIDw8ICIgYW5kICIgPDwgbl9leHByIDw8ICIgKCIgPDwgbSA8PCAiIGFu
ZCAiIDw8IG4KKyAgICAgIDw8ICIpIGFyZSBub3QgbXV0dWFsbHkgcHJpbWUsICIgPDwgImFzIHRo
ZXkgaGF2ZSBhIGNvbW1vbiBkaXZpc29yICIKKyAgICAgIDw8IFNtYWxsZXN0UHJpbWVDb21tb25E
aXZpc29yKG0sIG4pOworfQorYGBgCisKK1dpdGggdGhpcyBwcmVkaWNhdGUtZm9ybWF0dGVyLCB3
ZSBjYW4gdXNlCisKK2BgYAorRVhQRUNUX1BSRURfRk9STUFUMihBc3NlcnRNdXR1YWxseVByaW1l
LCBiLCBjKTsKK2BgYAorCit0byBnZW5lcmF0ZSB0aGUgbWVzc2FnZQorCis8cHJlPgorYiBhbmQg
YyAoNCBhbmQgMTApIGFyZSBub3QgbXV0dWFsbHkgcHJpbWUsIGFzIHRoZXkgaGF2ZSBhIGNvbW1v
biBkaXZpc29yIDIuPGJyPgorPC9wcmU+CisKK0FzIHlvdSBtYXkgaGF2ZSByZWFsaXplZCwgbWFu
eSBvZiB0aGUgYXNzZXJ0aW9ucyB3ZSBpbnRyb2R1Y2VkIGVhcmxpZXIgYXJlCitzcGVjaWFsIGNh
c2VzIG9mIGAoRVhQRUNUfEFTU0VSVClfUFJFRF9GT1JNQVQqYC4gSW4gZmFjdCwgbW9zdCBvZiB0
aGVtIGFyZQoraW5kZWVkIGRlZmluZWQgdXNpbmcgYChFWFBFQ1R8QVNTRVJUKV9QUkVEX0ZPUk1B
VCpgLgorCitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KKworCisjIyBGbG9h
dGluZy1Qb2ludCBDb21wYXJpc29uICMjCisKK0NvbXBhcmluZyBmbG9hdGluZy1wb2ludCBudW1i
ZXJzIGlzIHRyaWNreS4gRHVlIHRvIHJvdW5kLW9mZiBlcnJvcnMsIGl0IGlzCit2ZXJ5IHVubGlr
ZWx5IHRoYXQgdHdvIGZsb2F0aW5nLXBvaW50cyB3aWxsIG1hdGNoIGV4YWN0bHkuIFRoZXJlZm9y
ZSwKK2BBU1NFUlRfRVFgICdzIG5haXZlIGNvbXBhcmlzb24gdXN1YWxseSBkb2Vzbid0IHdvcmsu
IEFuZCBzaW5jZSBmbG9hdGluZy1wb2ludHMKK2NhbiBoYXZlIGEgd2lkZSB2YWx1ZSByYW5nZSwg
bm8gc2luZ2xlIGZpeGVkIGVycm9yIGJvdW5kIHdvcmtzLiBJdCdzIGJldHRlciB0bworY29tcGFy
ZSBieSBhIGZpeGVkIHJlbGF0aXZlIGVycm9yIGJvdW5kLCBleGNlcHQgZm9yIHZhbHVlcyBjbG9z
ZSB0byAwIGR1ZSB0bwordGhlIGxvc3Mgb2YgcHJlY2lzaW9uIHRoZXJlLgorCitJbiBnZW5lcmFs
LCBmb3IgZmxvYXRpbmctcG9pbnQgY29tcGFyaXNvbiB0byBtYWtlIHNlbnNlLCB0aGUgdXNlciBu
ZWVkcyB0bworY2FyZWZ1bGx5IGNob29zZSB0aGUgZXJyb3IgYm91bmQuIElmIHRoZXkgZG9uJ3Qg
d2FudCBvciBjYXJlIHRvLCBjb21wYXJpbmcgaW4KK3Rlcm1zIG9mIFVuaXRzIGluIHRoZSBMYXN0
IFBsYWNlIChVTFBzKSBpcyBhIGdvb2QgZGVmYXVsdCwgYW5kIEdvb2dsZSBUZXN0Citwcm92aWRl
cyBhc3NlcnRpb25zIHRvIGRvIHRoaXMuIEZ1bGwgZGV0YWlscyBhYm91dCBVTFBzIGFyZSBxdWl0
ZSBsb25nOyBpZiB5b3UKK3dhbnQgdG8gbGVhcm4gbW9yZSwgc2VlCitbdGhpcyBhcnRpY2xlIG9u
IGZsb2F0IGNvbXBhcmlzb25dKGh0dHA6Ly93d3cuY3lnbnVzLXNvZnR3YXJlLmNvbS9wYXBlcnMv
Y29tcGFyaW5nZmxvYXRzL2NvbXBhcmluZ2Zsb2F0cy5odG0pLgorCisjIyMgRmxvYXRpbmctUG9p
bnQgTWFjcm9zICMjIworCit8ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFzc2Vy
dGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAorfCBgQVNTRVJUX0ZMT0FUX0VRKGBfZXhw
ZWN0ZWQsIGFjdHVhbF9gKTtgICB8IGBFWFBFQ1RfRkxPQVRfRVEoYF9leHBlY3RlZCwgYWN0dWFs
X2ApO2AgfCB0aGUgdHdvIGBmbG9hdGAgdmFsdWVzIGFyZSBhbG1vc3QgZXF1YWwgfAorfCBgQVNT
RVJUX0RPVUJMRV9FUShgX2V4cGVjdGVkLCBhY3R1YWxfYCk7YCB8IGBFWFBFQ1RfRE9VQkxFX0VR
KGBfZXhwZWN0ZWQsIGFjdHVhbF9gKTtgIHwgdGhlIHR3byBgZG91YmxlYCB2YWx1ZXMgYXJlIGFs
bW9zdCBlcXVhbCB8CisKK0J5ICJhbG1vc3QgZXF1YWwiLCB3ZSBtZWFuIHRoZSB0d28gdmFsdWVz
IGFyZSB3aXRoaW4gNCBVTFAncyBmcm9tIGVhY2gKK290aGVyLgorCitUaGUgZm9sbG93aW5nIGFz
c2VydGlvbnMgYWxsb3cgeW91IHRvIGNob29zZSB0aGUgYWNjZXB0YWJsZSBlcnJvciBib3VuZDoK
KworfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVy
aWZpZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LXw6LS0tLS0tLS0tLS0tLXwKK3wgYEFTU0VSVF9ORUFSKGBfdmFsMSwgdmFsMiwgYWJzXF9lcnJv
cl9gKTtgIHwgYEVYUEVDVF9ORUFSYF8odmFsMSwgdmFsMiwgYWJzXF9lcnJvcl9gKTtgIHwgdGhl
IGRpZmZlcmVuY2UgYmV0d2VlbiBfdmFsMV8gYW5kIF92YWwyXyBkb2Vzbid0IGV4Y2VlZCB0aGUg
Z2l2ZW4gYWJzb2x1dGUgZXJyb3IgfAorCitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3Ms
IE1hYy4KKworIyMjIEZsb2F0aW5nLVBvaW50IFByZWRpY2F0ZS1Gb3JtYXQgRnVuY3Rpb25zICMj
IworCitTb21lIGZsb2F0aW5nLXBvaW50IG9wZXJhdGlvbnMgYXJlIHVzZWZ1bCwgYnV0IG5vdCB0
aGF0IG9mdGVuIHVzZWQuIEluIG9yZGVyCit0byBhdm9pZCBhbiBleHBsb3Npb24gb2YgbmV3IG1h
Y3Jvcywgd2UgcHJvdmlkZSB0aGVtIGFzIHByZWRpY2F0ZS1mb3JtYXQKK2Z1bmN0aW9ucyB0aGF0
IGNhbiBiZSB1c2VkIGluIHByZWRpY2F0ZSBhc3NlcnRpb24gbWFjcm9zIChlLmcuCitgRVhQRUNU
X1BSRURfRk9STUFUMmAsIGV0YykuCisKK2BgYAorRVhQRUNUX1BSRURfRk9STUFUMig6OnRlc3Rp
bmc6OkZsb2F0TEUsIHZhbDEsIHZhbDIpOworRVhQRUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6
OkRvdWJsZUxFLCB2YWwxLCB2YWwyKTsKK2BgYAorCitWZXJpZmllcyB0aGF0IF92YWwxXyBpcyBs
ZXNzIHRoYW4sIG9yIGFsbW9zdCBlcXVhbCB0bywgX3ZhbDJfLiBZb3UgY2FuCityZXBsYWNlIGBF
WFBFQ1RfUFJFRF9GT1JNQVQyYCBpbiB0aGUgYWJvdmUgdGFibGUgd2l0aCBgQVNTRVJUX1BSRURf
Rk9STUFUMmAuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyBX
aW5kb3dzIEhSRVNVTFQgYXNzZXJ0aW9ucyAjIworCitUaGVzZSBhc3NlcnRpb25zIHRlc3QgZm9y
IGBIUkVTVUxUYCBzdWNjZXNzIG9yIGZhaWx1cmUuCisKK3wgKipGYXRhbCBhc3NlcnRpb24qKiB8
ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0tLS0tLS0t
LS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8IGBBU1NF
UlRfSFJFU1VMVF9TVUNDRUVERUQoYF9leHByZXNzaW9uX2ApO2AgfCBgRVhQRUNUX0hSRVNVTFRf
U1VDQ0VFREVEKGBfZXhwcmVzc2lvbl9gKTtgIHwgX2V4cHJlc3Npb25fIGlzIGEgc3VjY2VzcyBg
SFJFU1VMVGAgfAorfCBgQVNTRVJUX0hSRVNVTFRfRkFJTEVEKGBfZXhwcmVzc2lvbl9gKTtgICAg
IHwgYEVYUEVDVF9IUkVTVUxUX0ZBSUxFRChgX2V4cHJlc3Npb25fYCk7YCAgICB8IF9leHByZXNz
aW9uXyBpcyBhIGZhaWx1cmUgYEhSRVNVTFRgIHwKKworVGhlIGdlbmVyYXRlZCBvdXRwdXQgY29u
dGFpbnMgdGhlIGh1bWFuLXJlYWRhYmxlIGVycm9yIG1lc3NhZ2UKK2Fzc29jaWF0ZWQgd2l0aCB0
aGUgYEhSRVNVTFRgIGNvZGUgcmV0dXJuZWQgYnkgX2V4cHJlc3Npb25fLgorCitZb3UgbWlnaHQg
dXNlIHRoZW0gbGlrZSB0aGlzOgorCitgYGAKK0NDb21QdHIgc2hlbGw7CitBU1NFUlRfSFJFU1VM
VF9TVUNDRUVERUQoc2hlbGwuQ29DcmVhdGVJbnN0YW5jZShMIlNoZWxsLkFwcGxpY2F0aW9uIikp
OworQ0NvbVZhcmlhbnQgZW1wdHk7CitBU1NFUlRfSFJFU1VMVF9TVUNDRUVERUQoc2hlbGwtPlNo
ZWxsRXhlY3V0ZShDQ29tQlNUUih1cmwpLCBlbXB0eSwgZW1wdHksIGVtcHR5LCBlbXB0eSkpOwor
YGBgCisKK19BdmFpbGFiaWxpdHlfOiBXaW5kb3dzLgorCisjIyBUeXBlIEFzc2VydGlvbnMgIyMK
KworWW91IGNhbiBjYWxsIHRoZSBmdW5jdGlvbgorYGBgCis6OnRlc3Rpbmc6OlN0YXRpY0Fzc2Vy
dFR5cGVFcTxUMSwgVDI+KCk7CitgYGAKK3RvIGFzc2VydCB0aGF0IHR5cGVzIGBUMWAgYW5kIGBU
MmAgYXJlIHRoZSBzYW1lLiAgVGhlIGZ1bmN0aW9uIGRvZXMKK25vdGhpbmcgaWYgdGhlIGFzc2Vy
dGlvbiBpcyBzYXRpc2ZpZWQuICBJZiB0aGUgdHlwZXMgYXJlIGRpZmZlcmVudCwKK3RoZSBmdW5j
dGlvbiBjYWxsIHdpbGwgZmFpbCB0byBjb21waWxlLCBhbmQgdGhlIGNvbXBpbGVyIGVycm9yIG1l
c3NhZ2UKK3dpbGwgbGlrZWx5IChkZXBlbmRpbmcgb24gdGhlIGNvbXBpbGVyKSBzaG93IHlvdSB0
aGUgYWN0dWFsIHZhbHVlcyBvZgorYFQxYCBhbmQgYFQyYC4gIFRoaXMgaXMgbWFpbmx5IHVzZWZ1
bCBpbnNpZGUgdGVtcGxhdGUgY29kZS4KKworX0NhdmVhdDpfIFdoZW4gdXNlZCBpbnNpZGUgYSBt
ZW1iZXIgZnVuY3Rpb24gb2YgYSBjbGFzcyB0ZW1wbGF0ZSBvciBhCitmdW5jdGlvbiB0ZW1wbGF0
ZSwgYFN0YXRpY0Fzc2VydFR5cGVFcTxUMSwgVDI+KClgIGlzIGVmZmVjdGl2ZSBfb25seSBpZl8K
K3RoZSBmdW5jdGlvbiBpcyBpbnN0YW50aWF0ZWQuICBGb3IgZXhhbXBsZSwgZ2l2ZW46CitgYGAK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBGb28geworIHB1YmxpYzoKKyAgdm9pZCBCYXIo
KSB7IDo6dGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxPGludCwgVD4oKTsgfQorfTsKK2BgYAor
dGhlIGNvZGU6CitgYGAKK3ZvaWQgVGVzdDEoKSB7IEZvbzxib29sPiBmb287IH0KK2BgYAord2ls
bCBfbm90XyBnZW5lcmF0ZSBhIGNvbXBpbGVyIGVycm9yLCBhcyBgRm9vPGJvb2w+OjpCYXIoKWAg
aXMgbmV2ZXIKK2FjdHVhbGx5IGluc3RhbnRpYXRlZC4gIEluc3RlYWQsIHlvdSBuZWVkOgorYGBg
Cit2b2lkIFRlc3QyKCkgeyBGb288Ym9vbD4gZm9vOyBmb28uQmFyKCk7IH0KK2BgYAordG8gY2F1
c2UgYSBjb21waWxlciBlcnJvci4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBN
YWM7IHNpbmNlIHZlcnNpb24gMS4zLjAuCisKKyMjIEFzc2VydGlvbiBQbGFjZW1lbnQgIyMKKwor
WW91IGNhbiB1c2UgYXNzZXJ0aW9ucyBpbiBhbnkgQysrIGZ1bmN0aW9uLiBJbiBwYXJ0aWN1bGFy
LCBpdCBkb2Vzbid0CitoYXZlIHRvIGJlIGEgbWV0aG9kIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2xh
c3MuIFRoZSBvbmUgY29uc3RyYWludCBpcwordGhhdCBhc3NlcnRpb25zIHRoYXQgZ2VuZXJhdGUg
YSBmYXRhbCBmYWlsdXJlIChgRkFJTCpgIGFuZCBgQVNTRVJUXypgKQorY2FuIG9ubHkgYmUgdXNl
ZCBpbiB2b2lkLXJldHVybmluZyBmdW5jdGlvbnMuIFRoaXMgaXMgYSBjb25zZXF1ZW5jZSBvZgor
R29vZ2xlIFRlc3Qgbm90IHVzaW5nIGV4Y2VwdGlvbnMuIEJ5IHBsYWNpbmcgaXQgaW4gYSBub24t
dm9pZCBmdW5jdGlvbgoreW91J2xsIGdldCBhIGNvbmZ1c2luZyBjb21waWxlIGVycm9yIGxpa2UK
K2AiZXJyb3I6IHZvaWQgdmFsdWUgbm90IGlnbm9yZWQgYXMgaXQgb3VnaHQgdG8gYmUiYC4KKwor
SWYgeW91IG5lZWQgdG8gdXNlIGFzc2VydGlvbnMgaW4gYSBmdW5jdGlvbiB0aGF0IHJldHVybnMg
bm9uLXZvaWQsIG9uZSBvcHRpb24KK2lzIHRvIG1ha2UgdGhlIGZ1bmN0aW9uIHJldHVybiB0aGUg
dmFsdWUgaW4gYW4gb3V0IHBhcmFtZXRlciBpbnN0ZWFkLiBGb3IKK2V4YW1wbGUsIHlvdSBjYW4g
cmV3cml0ZSBgVDIgRm9vKFQxIHgpYCB0byBgdm9pZCBGb28oVDEgeCwgVDIqIHJlc3VsdClgLiBZ
b3UKK25lZWQgdG8gbWFrZSBzdXJlIHRoYXQgYCpyZXN1bHRgIGNvbnRhaW5zIHNvbWUgc2Vuc2li
bGUgdmFsdWUgZXZlbiB3aGVuIHRoZQorZnVuY3Rpb24gcmV0dXJucyBwcmVtYXR1cmVseS4gQXMg
dGhlIGZ1bmN0aW9uIG5vdyByZXR1cm5zIGB2b2lkYCwgeW91IGNhbiB1c2UKK2FueSBhc3NlcnRp
b24gaW5zaWRlIG9mIGl0LgorCitJZiBjaGFuZ2luZyB0aGUgZnVuY3Rpb24ncyB0eXBlIGlzIG5v
dCBhbiBvcHRpb24sIHlvdSBzaG91bGQganVzdCB1c2UKK2Fzc2VydGlvbnMgdGhhdCBnZW5lcmF0
ZSBub24tZmF0YWwgZmFpbHVyZXMsIHN1Y2ggYXMgYEFERF9GQUlMVVJFKmAgYW5kCitgRVhQRUNU
XypgLgorCitfTm90ZV86IENvbnN0cnVjdG9ycyBhbmQgZGVzdHJ1Y3RvcnMgYXJlIG5vdCBjb25z
aWRlcmVkIHZvaWQtcmV0dXJuaW5nCitmdW5jdGlvbnMsIGFjY29yZGluZyB0byB0aGUgQysrIGxh
bmd1YWdlIHNwZWNpZmljYXRpb24sIGFuZCBzbyB5b3UgbWF5IG5vdCB1c2UKK2ZhdGFsIGFzc2Vy
dGlvbnMgaW4gdGhlbS4gWW91J2xsIGdldCBhIGNvbXBpbGF0aW9uIGVycm9yIGlmIHlvdSB0cnku
IEEgc2ltcGxlCit3b3JrYXJvdW5kIGlzIHRvIHRyYW5zZmVyIHRoZSBlbnRpcmUgYm9keSBvZiB0
aGUgY29uc3RydWN0b3Igb3IgZGVzdHJ1Y3RvciB0byBhCitwcml2YXRlIHZvaWQtcmV0dXJuaW5n
IG1ldGhvZC4gSG93ZXZlciwgeW91IHNob3VsZCBiZSBhd2FyZSB0aGF0IGEgZmF0YWwKK2Fzc2Vy
dGlvbiBmYWlsdXJlIGluIGEgY29uc3RydWN0b3IgZG9lcyBub3QgdGVybWluYXRlIHRoZSBjdXJy
ZW50IHRlc3QsIGFzIHlvdXIKK2ludHVpdGlvbiBtaWdodCBzdWdnZXN0OyBpdCBtZXJlbHkgcmV0
dXJucyBmcm9tIHRoZSBjb25zdHJ1Y3RvciBlYXJseSwgcG9zc2libHkKK2xlYXZpbmcgeW91ciBv
YmplY3QgaW4gYSBwYXJ0aWFsbHktY29uc3RydWN0ZWQgc3RhdGUuIExpa2V3aXNlLCBhIGZhdGFs
Cithc3NlcnRpb24gZmFpbHVyZSBpbiBhIGRlc3RydWN0b3IgbWF5IGxlYXZlIHlvdXIgb2JqZWN0
IGluIGEKK3BhcnRpYWxseS1kZXN0cnVjdGVkIHN0YXRlLiBVc2UgYXNzZXJ0aW9ucyBjYXJlZnVs
bHkgaW4gdGhlc2Ugc2l0dWF0aW9ucyEKKworIyBUZWFjaGluZyBHb29nbGUgVGVzdCBIb3cgdG8g
UHJpbnQgWW91ciBWYWx1ZXMgIworCitXaGVuIGEgdGVzdCBhc3NlcnRpb24gc3VjaCBhcyBgRVhQ
RUNUX0VRYCBmYWlscywgR29vZ2xlIFRlc3QgcHJpbnRzIHRoZQorYXJndW1lbnQgdmFsdWVzIHRv
IGhlbHAgeW91IGRlYnVnLiAgSXQgZG9lcyB0aGlzIHVzaW5nIGEKK3VzZXItZXh0ZW5zaWJsZSB2
YWx1ZSBwcmludGVyLgorCitUaGlzIHByaW50ZXIga25vd3MgaG93IHRvIHByaW50IGJ1aWx0LWlu
IEMrKyB0eXBlcywgbmF0aXZlIGFycmF5cywgU1RMCitjb250YWluZXJzLCBhbmQgYW55IHR5cGUg
dGhhdCBzdXBwb3J0cyB0aGUgYDw8YCBvcGVyYXRvci4gIEZvciBvdGhlcgordHlwZXMsIGl0IHBy
aW50cyB0aGUgcmF3IGJ5dGVzIGluIHRoZSB2YWx1ZSBhbmQgaG9wZXMgdGhhdCB5b3UgdGhlCit1
c2VyIGNhbiBmaWd1cmUgaXQgb3V0LgorCitBcyBtZW50aW9uZWQgZWFybGllciwgdGhlIHByaW50
ZXIgaXMgX2V4dGVuc2libGVfLiAgVGhhdCBtZWFucworeW91IGNhbiB0ZWFjaCBpdCB0byBkbyBh
IGJldHRlciBqb2IgYXQgcHJpbnRpbmcgeW91ciBwYXJ0aWN1bGFyIHR5cGUKK3RoYW4gdG8gZHVt
cCB0aGUgYnl0ZXMuICBUbyBkbyB0aGF0LCBkZWZpbmUgYDw8YCBmb3IgeW91ciB0eXBlOgorCitg
YGAKKyNpbmNsdWRlIDxpb3N0cmVhbT4KKworbmFtZXNwYWNlIGZvbyB7CisKK2NsYXNzIEJhciB7
IC4uLiB9OyAgLy8gV2Ugd2FudCBHb29nbGUgVGVzdCB0byBiZSBhYmxlIHRvIHByaW50IGluc3Rh
bmNlcyBvZiB0aGlzLgorCisvLyBJdCdzIGltcG9ydGFudCB0aGF0IHRoZSA8PCBvcGVyYXRvciBp
cyBkZWZpbmVkIGluIHRoZSBTQU1FCisvLyBuYW1lc3BhY2UgdGhhdCBkZWZpbmVzIEJhci4gIEMr
KydzIGxvb2stdXAgcnVsZXMgcmVseSBvbiB0aGF0LgorOjpzdGQ6Om9zdHJlYW0mIG9wZXJhdG9y
PDwoOjpzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBCYXImIGJhcikgeworICByZXR1cm4gb3MgPDwg
YmFyLkRlYnVnU3RyaW5nKCk7ICAvLyB3aGF0ZXZlciBuZWVkZWQgdG8gcHJpbnQgYmFyIHRvIG9z
Cit9CisKK30gIC8vIG5hbWVzcGFjZSBmb28KK2BgYAorCitTb21ldGltZXMsIHRoaXMgbWlnaHQg
bm90IGJlIGFuIG9wdGlvbjogeW91ciB0ZWFtIG1heSBjb25zaWRlciBpdCBiYWQKK3N0eWxlIHRv
IGhhdmUgYSBgPDxgIG9wZXJhdG9yIGZvciBgQmFyYCwgb3IgYEJhcmAgbWF5IGFscmVhZHkgaGF2
ZSBhCitgPDxgIG9wZXJhdG9yIHRoYXQgZG9lc24ndCBkbyB3aGF0IHlvdSB3YW50IChhbmQgeW91
IGNhbm5vdCBjaGFuZ2UKK2l0KS4gIElmIHNvLCB5b3UgY2FuIGluc3RlYWQgZGVmaW5lIGEgYFBy
aW50VG8oKWAgZnVuY3Rpb24gbGlrZSB0aGlzOgorCitgYGAKKyNpbmNsdWRlIDxpb3N0cmVhbT4K
KworbmFtZXNwYWNlIGZvbyB7CisKK2NsYXNzIEJhciB7IC4uLiB9OworCisvLyBJdCdzIGltcG9y
dGFudCB0aGF0IFByaW50VG8oKSBpcyBkZWZpbmVkIGluIHRoZSBTQU1FCisvLyBuYW1lc3BhY2Ug
dGhhdCBkZWZpbmVzIEJhci4gIEMrKydzIGxvb2stdXAgcnVsZXMgcmVseSBvbiB0aGF0Lgordm9p
ZCBQcmludFRvKGNvbnN0IEJhciYgYmFyLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgKm9zIDw8
IGJhci5EZWJ1Z1N0cmluZygpOyAgLy8gd2hhdGV2ZXIgbmVlZGVkIHRvIHByaW50IGJhciB0byBv
cworfQorCit9ICAvLyBuYW1lc3BhY2UgZm9vCitgYGAKKworSWYgeW91IGhhdmUgZGVmaW5lZCBi
b3RoIGA8PGAgYW5kIGBQcmludFRvKClgLCB0aGUgbGF0dGVyIHdpbGwgYmUgdXNlZAord2hlbiBH
b29nbGUgVGVzdCBpcyBjb25jZXJuZWQuICBUaGlzIGFsbG93cyB5b3UgdG8gY3VzdG9taXplIGhv
dyB0aGUgdmFsdWUKK2FwcGVhcnMgaW4gR29vZ2xlIFRlc3QncyBvdXRwdXQgd2l0aG91dCBhZmZl
Y3RpbmcgY29kZSB0aGF0IHJlbGllcyBvbiB0aGUKK2JlaGF2aW9yIG9mIGl0cyBgPDxgIG9wZXJh
dG9yLgorCitJZiB5b3Ugd2FudCB0byBwcmludCBhIHZhbHVlIGB4YCB1c2luZyBHb29nbGUgVGVz
dCdzIHZhbHVlIHByaW50ZXIKK3lvdXJzZWxmLCBqdXN0IGNhbGwgYDo6dGVzdGluZzo6UHJpbnRU
b1N0cmluZyhgX3hfYClgLCB3aGljaAorcmV0dXJucyBhbiBgc3RkOjpzdHJpbmdgOgorCitgYGAK
K3ZlY3RvcjxwYWlyPEJhciwgaW50PiA+IGJhcl9pbnRzID0gR2V0QmFySW50VmVjdG9yKCk7CisK
K0VYUEVDVF9UUlVFKElzQ29ycmVjdEJhckludFZlY3RvcihiYXJfaW50cykpCisgICAgPDwgImJh
cl9pbnRzID0gIiA8PCA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcoYmFyX2ludHMpOworYGBgCisK
KyMgRGVhdGggVGVzdHMgIworCitJbiBtYW55IGFwcGxpY2F0aW9ucywgdGhlcmUgYXJlIGFzc2Vy
dGlvbnMgdGhhdCBjYW4gY2F1c2UgYXBwbGljYXRpb24gZmFpbHVyZQoraWYgYSBjb25kaXRpb24g
aXMgbm90IG1ldC4gVGhlc2Ugc2FuaXR5IGNoZWNrcywgd2hpY2ggZW5zdXJlIHRoYXQgdGhlIHBy
b2dyYW0KK2lzIGluIGEga25vd24gZ29vZCBzdGF0ZSwgYXJlIHRoZXJlIHRvIGZhaWwgYXQgdGhl
IGVhcmxpZXN0IHBvc3NpYmxlIHRpbWUgYWZ0ZXIKK3NvbWUgcHJvZ3JhbSBzdGF0ZSBpcyBjb3Jy
dXB0ZWQuIElmIHRoZSBhc3NlcnRpb24gY2hlY2tzIHRoZSB3cm9uZyBjb25kaXRpb24sCit0aGVu
IHRoZSBwcm9ncmFtIG1heSBwcm9jZWVkIGluIGFuIGVycm9uZW91cyBzdGF0ZSwgd2hpY2ggY291
bGQgbGVhZCB0byBtZW1vcnkKK2NvcnJ1cHRpb24sIHNlY3VyaXR5IGhvbGVzLCBvciB3b3JzZS4g
SGVuY2UgaXQgaXMgdml0YWxseSBpbXBvcnRhbnQgdG8gdGVzdAordGhhdCBzdWNoIGFzc2VydGlv
biBzdGF0ZW1lbnRzIHdvcmsgYXMgZXhwZWN0ZWQuCisKK1NpbmNlIHRoZXNlIHByZWNvbmRpdGlv
biBjaGVja3MgY2F1c2UgdGhlIHByb2Nlc3NlcyB0byBkaWUsIHdlIGNhbGwgc3VjaCB0ZXN0cwor
X2RlYXRoIHRlc3RzXy4gTW9yZSBnZW5lcmFsbHksIGFueSB0ZXN0IHRoYXQgY2hlY2tzIHRoYXQg
YSBwcm9ncmFtIHRlcm1pbmF0ZXMKKyhleGNlcHQgYnkgdGhyb3dpbmcgYW4gZXhjZXB0aW9uKSBp
biBhbiBleHBlY3RlZCBmYXNoaW9uIGlzIGFsc28gYSBkZWF0aCB0ZXN0LgorCitOb3RlIHRoYXQg
aWYgYSBwaWVjZSBvZiBjb2RlIHRocm93cyBhbiBleGNlcHRpb24sIHdlIGRvbid0IGNvbnNpZGVy
IGl0ICJkZWF0aCIKK2ZvciB0aGUgcHVycG9zZSBvZiBkZWF0aCB0ZXN0cywgYXMgdGhlIGNhbGxl
ciBvZiB0aGUgY29kZSBjb3VsZCBjYXRjaCB0aGUgZXhjZXB0aW9uCithbmQgYXZvaWQgdGhlIGNy
YXNoLiBJZiB5b3Ugd2FudCB0byB2ZXJpZnkgZXhjZXB0aW9ucyB0aHJvd24gYnkgeW91ciBjb2Rl
LAorc2VlIFtFeGNlcHRpb24gQXNzZXJ0aW9uc10oI2V4Y2VwdGlvbi1hc3NlcnRpb25zKS4KKwor
SWYgeW91IHdhbnQgdG8gdGVzdCBgRVhQRUNUXyooKS9BU1NFUlRfKigpYCBmYWlsdXJlcyBpbiB5
b3VyIHRlc3QgY29kZSwgc2VlIFtDYXRjaGluZyBGYWlsdXJlc10oI2NhdGNoaW5nLWZhaWx1cmVz
KS4KKworIyMgSG93IHRvIFdyaXRlIGEgRGVhdGggVGVzdCAjIworCitHb29nbGUgVGVzdCBoYXMg
dGhlIGZvbGxvd2luZyBtYWNyb3MgdG8gc3VwcG9ydCBkZWF0aCB0ZXN0czoKKworfCAqKkZhdGFs
IGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8Cit8
Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0t
LS0tLXwKK3wgYEFTU0VSVF9ERUFUSChgX3N0YXRlbWVudCwgcmVnZXhfYCk7IHwgYEVYUEVDVF9E
RUFUSChgX3N0YXRlbWVudCwgcmVnZXhfYCk7IHwgX3N0YXRlbWVudF8gY3Jhc2hlcyB3aXRoIHRo
ZSBnaXZlbiBlcnJvciB8Cit8IGBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKGBfc3RhdGVtZW50
LCByZWdleF9gKTsgfCBgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChgX3N0YXRlbWVudCwgcmVn
ZXhfYCk7IHwgaWYgZGVhdGggdGVzdHMgYXJlIHN1cHBvcnRlZCwgdmVyaWZpZXMgdGhhdCBfc3Rh
dGVtZW50XyBjcmFzaGVzIHdpdGggdGhlIGdpdmVuIGVycm9yOyBvdGhlcndpc2UgdmVyaWZpZXMg
bm90aGluZyB8Cit8IGBBU1NFUlRfRVhJVChgX3N0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleF9g
KTsgfCBgRVhQRUNUX0VYSVQoYF9zdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXhfYCk7IHxfc3Rh
dGVtZW50XyBleGl0cyB3aXRoIHRoZSBnaXZlbiBlcnJvciBhbmQgaXRzIGV4aXQgY29kZSBtYXRj
aGVzIF9wcmVkaWNhdGVfIHwKKword2hlcmUgX3N0YXRlbWVudF8gaXMgYSBzdGF0ZW1lbnQgdGhh
dCBpcyBleHBlY3RlZCB0byBjYXVzZSB0aGUgcHJvY2VzcyB0bworZGllLCBfcHJlZGljYXRlXyBp
cyBhIGZ1bmN0aW9uIG9yIGZ1bmN0aW9uIG9iamVjdCB0aGF0IGV2YWx1YXRlcyBhbiBpbnRlZ2Vy
CitleGl0IHN0YXR1cywgYW5kIF9yZWdleF8gaXMgYSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCB0
aGUgc3RkZXJyIG91dHB1dCBvZgorX3N0YXRlbWVudF8gaXMgZXhwZWN0ZWQgdG8gbWF0Y2guIE5v
dGUgdGhhdCBfc3RhdGVtZW50XyBjYW4gYmUgX2FueSB2YWxpZAorc3RhdGVtZW50XyAoaW5jbHVk
aW5nIF9jb21wb3VuZCBzdGF0ZW1lbnRfKSBhbmQgZG9lc24ndCBoYXZlIHRvIGJlIGFuCitleHBy
ZXNzaW9uLgorCitBcyB1c3VhbCwgdGhlIGBBU1NFUlRgIHZhcmlhbnRzIGFib3J0IHRoZSBjdXJy
ZW50IHRlc3QgZnVuY3Rpb24sIHdoaWxlIHRoZQorYEVYUEVDVGAgdmFyaWFudHMgZG8gbm90Lgor
CisqKk5vdGU6KiogV2UgdXNlIHRoZSB3b3JkICJjcmFzaCIgaGVyZSB0byBtZWFuIHRoYXQgdGhl
IHByb2Nlc3MKK3Rlcm1pbmF0ZXMgd2l0aCBhIF9ub24temVyb18gZXhpdCBzdGF0dXMgY29kZS4g
IFRoZXJlIGFyZSB0d28KK3Bvc3NpYmlsaXRpZXM6IGVpdGhlciB0aGUgcHJvY2VzcyBoYXMgY2Fs
bGVkIGBleGl0KClgIG9yIGBfZXhpdCgpYAord2l0aCBhIG5vbi16ZXJvIHZhbHVlLCBvciBpdCBt
YXkgYmUga2lsbGVkIGJ5IGEgc2lnbmFsLgorCitUaGlzIG1lYW5zIHRoYXQgaWYgX3N0YXRlbWVu
dF8gdGVybWluYXRlcyB0aGUgcHJvY2VzcyB3aXRoIGEgMCBleGl0Citjb2RlLCBpdCBpcyBfbm90
XyBjb25zaWRlcmVkIGEgY3Jhc2ggYnkgYEVYUEVDVF9ERUFUSGAuICBVc2UKK2BFWFBFQ1RfRVhJ
VGAgaW5zdGVhZCBpZiB0aGlzIGlzIHRoZSBjYXNlLCBvciBpZiB5b3Ugd2FudCB0byByZXN0cmlj
dAordGhlIGV4aXQgY29kZSBtb3JlIHByZWNpc2VseS4KKworQSBwcmVkaWNhdGUgaGVyZSBtdXN0
IGFjY2VwdCBhbiBgaW50YCBhbmQgcmV0dXJuIGEgYGJvb2xgLiBUaGUgZGVhdGggdGVzdAorc3Vj
Y2VlZHMgb25seSBpZiB0aGUgcHJlZGljYXRlIHJldHVybnMgYHRydWVgLiBHb29nbGUgVGVzdCBk
ZWZpbmVzIGEgZmV3CitwcmVkaWNhdGVzIHRoYXQgaGFuZGxlIHRoZSBtb3N0IGNvbW1vbiBjYXNl
czoKKworYGBgCis6OnRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKGV4aXRfY29kZSkKK2BgYAorCitU
aGlzIGV4cHJlc3Npb24gaXMgYHRydWVgIGlmIHRoZSBwcm9ncmFtIGV4aXRlZCBub3JtYWxseSB3
aXRoIHRoZSBnaXZlbiBleGl0Citjb2RlLgorCitgYGAKKzo6dGVzdGluZzo6S2lsbGVkQnlTaWdu
YWwoc2lnbmFsX251bWJlcikgIC8vIE5vdCBhdmFpbGFibGUgb24gV2luZG93cy4KK2BgYAorCitU
aGlzIGV4cHJlc3Npb24gaXMgYHRydWVgIGlmIHRoZSBwcm9ncmFtIHdhcyBraWxsZWQgYnkgdGhl
IGdpdmVuIHNpZ25hbC4KKworVGhlIGAqX0RFQVRIYCBtYWNyb3MgYXJlIGNvbnZlbmllbnQgd3Jh
cHBlcnMgZm9yIGAqX0VYSVRgIHRoYXQgdXNlIGEgcHJlZGljYXRlCit0aGF0IHZlcmlmaWVzIHRo
ZSBwcm9jZXNzJyBleGl0IGNvZGUgaXMgbm9uLXplcm8uCisKK05vdGUgdGhhdCBhIGRlYXRoIHRl
c3Qgb25seSBjYXJlcyBhYm91dCB0aHJlZSB0aGluZ3M6CisKKyAgMS4gZG9lcyBfc3RhdGVtZW50
XyBhYm9ydCBvciBleGl0IHRoZSBwcm9jZXNzPworICAxLiAoaW4gdGhlIGNhc2Ugb2YgYEFTU0VS
VF9FWElUYCBhbmQgYEVYUEVDVF9FWElUYCkgZG9lcyB0aGUgZXhpdCBzdGF0dXMgc2F0aXNmeSBf
cHJlZGljYXRlXz8gIE9yIChpbiB0aGUgY2FzZSBvZiBgQVNTRVJUX0RFQVRIYCBhbmQgYEVYUEVD
VF9ERUFUSGApIGlzIHRoZSBleGl0IHN0YXR1cyBub24temVybz8gIEFuZAorICAxLiBkb2VzIHRo
ZSBzdGRlcnIgb3V0cHV0IG1hdGNoIF9yZWdleF8/CisKK0luIHBhcnRpY3VsYXIsIGlmIF9zdGF0
ZW1lbnRfIGdlbmVyYXRlcyBhbiBgQVNTRVJUXypgIG9yIGBFWFBFQ1RfKmAgZmFpbHVyZSwgaXQg
d2lsbCAqKm5vdCoqIGNhdXNlIHRoZSBkZWF0aCB0ZXN0IHRvIGZhaWwsIGFzIEdvb2dsZSBUZXN0
IGFzc2VydGlvbnMgZG9uJ3QgYWJvcnQgdGhlIHByb2Nlc3MuCisKK1RvIHdyaXRlIGEgZGVhdGgg
dGVzdCwgc2ltcGx5IHVzZSBvbmUgb2YgdGhlIGFib3ZlIG1hY3JvcyBpbnNpZGUgeW91ciB0ZXN0
CitmdW5jdGlvbi4gRm9yIGV4YW1wbGUsCisKK2BgYAorVEVTVChNeSpEZWF0aFRlc3QqLCBGb28p
IHsKKyAgLy8gVGhpcyBkZWF0aCB0ZXN0IHVzZXMgYSBjb21wb3VuZCBzdGF0ZW1lbnQuCisgIEFT
U0VSVF9ERUFUSCh7IGludCBuID0gNTsgRm9vKCZuKTsgfSwgIkVycm9yIG9uIGxpbmUgLiogb2Yg
Rm9vKCkiKTsKK30KK1RFU1QoTXlEZWF0aFRlc3QsIE5vcm1hbEV4aXQpIHsKKyAgRVhQRUNUX0VY
SVQoTm9ybWFsRXhpdCgpLCA6OnRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDApLCAiU3VjY2VzcyIp
OworfQorVEVTVChNeURlYXRoVGVzdCwgS2lsbE15c2VsZikgeworICBFWFBFQ1RfRVhJVChLaWxs
TXlzZWxmKCksIDo6dGVzdGluZzo6S2lsbGVkQnlTaWduYWwoU0lHS0lMTCksICJTZW5kaW5nIG15
c2VsZiB1bmJsb2NrYWJsZSBzaWduYWwiKTsKK30KK2BgYAorCit2ZXJpZmllcyB0aGF0OgorCisg
ICogY2FsbGluZyBgRm9vKDUpYCBjYXVzZXMgdGhlIHByb2Nlc3MgdG8gZGllIHdpdGggdGhlIGdp
dmVuIGVycm9yIG1lc3NhZ2UsCisgICogY2FsbGluZyBgTm9ybWFsRXhpdCgpYCBjYXVzZXMgdGhl
IHByb2Nlc3MgdG8gcHJpbnQgYCJTdWNjZXNzImAgdG8gc3RkZXJyIGFuZCBleGl0IHdpdGggZXhp
dCBjb2RlIDAsIGFuZAorICAqIGNhbGxpbmcgYEtpbGxNeXNlbGYoKWAga2lsbHMgdGhlIHByb2Nl
c3Mgd2l0aCBzaWduYWwgYFNJR0tJTExgLgorCitUaGUgdGVzdCBmdW5jdGlvbiBib2R5IG1heSBj
b250YWluIG90aGVyIGFzc2VydGlvbnMgYW5kIHN0YXRlbWVudHMgYXMgd2VsbCwgaWYKK25lY2Vz
c2FyeS4KKworX0ltcG9ydGFudDpfIFdlIHN0cm9uZ2x5IHJlY29tbWVuZCB5b3UgdG8gZm9sbG93
IHRoZSBjb252ZW50aW9uIG9mIG5hbWluZyB5b3VyCit0ZXN0IGNhc2UgKG5vdCB0ZXN0KSBgKkRl
YXRoVGVzdGAgd2hlbiBpdCBjb250YWlucyBhIGRlYXRoIHRlc3QsIGFzCitkZW1vbnN0cmF0ZWQg
aW4gdGhlIGFib3ZlIGV4YW1wbGUuIFRoZSBgRGVhdGggVGVzdHMgQW5kIFRocmVhZHNgIHNlY3Rp
b24gYmVsb3cKK2V4cGxhaW5zIHdoeS4KKworSWYgYSB0ZXN0IGZpeHR1cmUgY2xhc3MgaXMgc2hh
cmVkIGJ5IG5vcm1hbCB0ZXN0cyBhbmQgZGVhdGggdGVzdHMsIHlvdQorY2FuIHVzZSB0eXBlZGVm
IHRvIGludHJvZHVjZSBhbiBhbGlhcyBmb3IgdGhlIGZpeHR1cmUgY2xhc3MgYW5kIGF2b2lkCitk
dXBsaWNhdGluZyBpdHMgY29kZToKK2BgYAorY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rp
bmc6OlRlc3QgeyAuLi4gfTsKKwordHlwZWRlZiBGb29UZXN0IEZvb0RlYXRoVGVzdDsKKworVEVT
VF9GKEZvb1Rlc3QsIERvZXNUaGlzKSB7CisgIC8vIG5vcm1hbCB0ZXN0Cit9CisKK1RFU1RfRihG
b29EZWF0aFRlc3QsIERvZXNUaGF0KSB7CisgIC8vIGRlYXRoIHRlc3QKK30KK2BgYAorCitfQXZh
aWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MgKHJlcXVpcmVzIE1TVkMgOC4wIG9yIGFib3ZlKSwg
Q3lnd2luLCBhbmQgTWFjICh0aGUgbGF0dGVyIHRocmVlIGFyZSBzdXBwb3J0ZWQgc2luY2UgdjEu
My4wKS4gIGAoQVNTRVJUfEVYUEVDVClfREVBVEhfSUZfU1VQUE9SVEVEYCBhcmUgbmV3IGluIHYx
LjQuMC4KKworIyMgUmVndWxhciBFeHByZXNzaW9uIFN5bnRheCAjIworCitPbiBQT1NJWCBzeXN0
ZW1zIChlLmcuIExpbnV4LCBDeWd3aW4sIGFuZCBNYWMpLCBHb29nbGUgVGVzdCB1c2VzIHRoZQor
W1BPU0lYIGV4dGVuZGVkIHJlZ3VsYXIgZXhwcmVzc2lvbl0oaHR0cDovL3d3dy5vcGVuZ3JvdXAu
b3JnL29ubGluZXB1YnMvMDA5Njk1Mzk5L2Jhc2VkZWZzL3hiZF9jaGFwMDkuaHRtbCN0YWdfMDlf
MDQpCitzeW50YXggaW4gZGVhdGggdGVzdHMuIFRvIGxlYXJuIGFib3V0IHRoaXMgc3ludGF4LCB5
b3UgbWF5IHdhbnQgdG8gcmVhZCB0aGlzIFtXaWtpcGVkaWEgZW50cnldKGh0dHA6Ly9lbi53aWtp
cGVkaWEub3JnL3dpa2kvUmVndWxhcl9leHByZXNzaW9uI1BPU0lYX0V4dGVuZGVkX1JlZ3VsYXJf
RXhwcmVzc2lvbnMpLgorCitPbiBXaW5kb3dzLCBHb29nbGUgVGVzdCB1c2VzIGl0cyBvd24gc2lt
cGxlIHJlZ3VsYXIgZXhwcmVzc2lvbgoraW1wbGVtZW50YXRpb24uIEl0IGxhY2tzIG1hbnkgZmVh
dHVyZXMgeW91IGNhbiBmaW5kIGluIFBPU0lYIGV4dGVuZGVkCityZWd1bGFyIGV4cHJlc3Npb25z
LiAgRm9yIGV4YW1wbGUsIHdlIGRvbid0IHN1cHBvcnQgdW5pb24gKGAieHx5ImApLAorZ3JvdXBp
bmcgKGAiKHh5KSJgKSwgYnJhY2tldHMgKGAiW3h5XSJgKSwgYW5kIHJlcGV0aXRpb24gY291bnQK
KyhgInh7NSw3fSJgKSwgYW1vbmcgb3RoZXJzLiBCZWxvdyBpcyB3aGF0IHdlIGRvIHN1cHBvcnQg
KGBBYCBkZW5vdGVzIGEKK2xpdGVyYWwgY2hhcmFjdGVyLCBwZXJpb2QgKGAuYCksIG9yIGEgc2lu
Z2xlIGBcXGAgZXNjYXBlIHNlcXVlbmNlOyBgeGAKK2FuZCBgeWAgZGVub3RlIHJlZ3VsYXIgZXhw
cmVzc2lvbnMuKToKKworfCBgY2AgfCBtYXRjaGVzIGFueSBsaXRlcmFsIGNoYXJhY3RlciBgY2Ag
fAorfDotLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorfCBgXFxkYCB8
IG1hdGNoZXMgYW55IGRlY2ltYWwgZGlnaXQgICAgICAgICB8Cit8IGBcXERgIHwgbWF0Y2hlcyBh
bnkgY2hhcmFjdGVyIHRoYXQncyBub3QgYSBkZWNpbWFsIGRpZ2l0IHwKK3wgYFxcZmAgfCBtYXRj
aGVzIGBcZmAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgXFxuYCB8IG1hdGNoZXMgYFxuYCAg
ICAgICAgICAgICAgICAgICAgICB8Cit8IGBcXHJgIHwgbWF0Y2hlcyBgXHJgICAgICAgICAgICAg
ICAgICAgICAgIHwKK3wgYFxcc2AgfCBtYXRjaGVzIGFueSBBU0NJSSB3aGl0ZXNwYWNlLCBpbmNs
dWRpbmcgYFxuYCB8Cit8IGBcXFNgIHwgbWF0Y2hlcyBhbnkgY2hhcmFjdGVyIHRoYXQncyBub3Qg
YSB3aGl0ZXNwYWNlIHwKK3wgYFxcdGAgfCBtYXRjaGVzIGBcdGAgICAgICAgICAgICAgICAgICAg
ICAgfAorfCBgXFx2YCB8IG1hdGNoZXMgYFx2YCAgICAgICAgICAgICAgICAgICAgICB8Cit8IGBc
XHdgIHwgbWF0Y2hlcyBhbnkgbGV0dGVyLCBgX2AsIG9yIGRlY2ltYWwgZGlnaXQgfAorfCBgXFxX
YCB8IG1hdGNoZXMgYW55IGNoYXJhY3RlciB0aGF0IGBcXHdgIGRvZXNuJ3QgbWF0Y2ggfAorfCBg
XFxjYCB8IG1hdGNoZXMgYW55IGxpdGVyYWwgY2hhcmFjdGVyIGBjYCwgd2hpY2ggbXVzdCBiZSBh
IHB1bmN0dWF0aW9uIHwKK3wgYC5gIHwgbWF0Y2hlcyBhbnkgc2luZ2xlIGNoYXJhY3RlciBleGNl
cHQgYFxuYCB8Cit8IGBBP2AgfCBtYXRjaGVzIDAgb3IgMSBvY2N1cnJlbmNlcyBvZiBgQWAgfAor
fCBgQSpgIHwgbWF0Y2hlcyAwIG9yIG1hbnkgb2NjdXJyZW5jZXMgb2YgYEFgIHwKK3wgYEErYCB8
IG1hdGNoZXMgMSBvciBtYW55IG9jY3VycmVuY2VzIG9mIGBBYCB8Cit8IGBeYCB8IG1hdGNoZXMg
dGhlIGJlZ2lubmluZyBvZiBhIHN0cmluZyAobm90IHRoYXQgb2YgZWFjaCBsaW5lKSB8Cit8IGAk
YCB8IG1hdGNoZXMgdGhlIGVuZCBvZiBhIHN0cmluZyAobm90IHRoYXQgb2YgZWFjaCBsaW5lKSB8
Cit8IGB4eWAgfCBtYXRjaGVzIGB4YCBmb2xsb3dlZCBieSBgeWAgICAgICAgfAorCitUbyBoZWxw
IHlvdSBkZXRlcm1pbmUgd2hpY2ggY2FwYWJpbGl0eSBpcyBhdmFpbGFibGUgb24geW91ciBzeXN0
ZW0sCitHb29nbGUgVGVzdCBkZWZpbmVzIG1hY3JvIGBHVEVTVF9VU0VTX1BPU0lYX1JFPTFgIHdo
ZW4gaXQgdXNlcyBQT1NJWAorZXh0ZW5kZWQgcmVndWxhciBleHByZXNzaW9ucywgb3IgYEdURVNU
X1VTRVNfU0lNUExFX1JFPTFgIHdoZW4gaXQgdXNlcwordGhlIHNpbXBsZSB2ZXJzaW9uLiAgSWYg
eW91IHdhbnQgeW91ciBkZWF0aCB0ZXN0cyB0byB3b3JrIGluIGJvdGgKK2Nhc2VzLCB5b3UgY2Fu
IGVpdGhlciBgI2lmYCBvbiB0aGVzZSBtYWNyb3Mgb3IgdXNlIHRoZSBtb3JlIGxpbWl0ZWQKK3N5
bnRheCBvbmx5LgorCisjIyBIb3cgSXQgV29ya3MgIyMKKworVW5kZXIgdGhlIGhvb2QsIGBBU1NF
UlRfRVhJVCgpYCBzcGF3bnMgYSBuZXcgcHJvY2VzcyBhbmQgZXhlY3V0ZXMgdGhlCitkZWF0aCB0
ZXN0IHN0YXRlbWVudCBpbiB0aGF0IHByb2Nlc3MuIFRoZSBkZXRhaWxzIG9mIG9mIGhvdyBwcmVj
aXNlbHkKK3RoYXQgaGFwcGVucyBkZXBlbmQgb24gdGhlIHBsYXRmb3JtIGFuZCB0aGUgdmFyaWFi
bGUKK2A6OnRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSlgICh3aGljaCBpcyBp
bml0aWFsaXplZCBmcm9tIHRoZQorY29tbWFuZC1saW5lIGZsYWcgYC0tZ3Rlc3RfZGVhdGhfdGVz
dF9zdHlsZWApLgorCisgICogT24gUE9TSVggc3lzdGVtcywgYGZvcmsoKWAgKG9yIGBjbG9uZSgp
YCBvbiBMaW51eCkgaXMgdXNlZCB0byBzcGF3biB0aGUgY2hpbGQsIGFmdGVyIHdoaWNoOgorICAg
ICogSWYgdGhlIHZhcmlhYmxlJ3MgdmFsdWUgaXMgYCJmYXN0ImAsIHRoZSBkZWF0aCB0ZXN0IHN0
YXRlbWVudCBpcyBpbW1lZGlhdGVseSBleGVjdXRlZC4KKyAgICAqIElmIHRoZSB2YXJpYWJsZSdz
IHZhbHVlIGlzIGAidGhyZWFkc2FmZSJgLCB0aGUgY2hpbGQgcHJvY2VzcyByZS1leGVjdXRlcyB0
aGUgdW5pdCB0ZXN0IGJpbmFyeSBqdXN0IGFzIGl0IHdhcyBvcmlnaW5hbGx5IGludm9rZWQsIGJ1
dCB3aXRoIHNvbWUgZXh0cmEgZmxhZ3MgdG8gY2F1c2UganVzdCB0aGUgc2luZ2xlIGRlYXRoIHRl
c3QgdW5kZXIgY29uc2lkZXJhdGlvbiB0byBiZSBydW4uCisgICogT24gV2luZG93cywgdGhlIGNo
aWxkIGlzIHNwYXduZWQgdXNpbmcgdGhlIGBDcmVhdGVQcm9jZXNzKClgIEFQSSwgYW5kIHJlLWV4
ZWN1dGVzIHRoZSBiaW5hcnkgdG8gY2F1c2UganVzdCB0aGUgc2luZ2xlIGRlYXRoIHRlc3QgdW5k
ZXIgY29uc2lkZXJhdGlvbiB0byBiZSBydW4gLSBtdWNoIGxpa2UgdGhlIGB0aHJlYWRzYWZlYCBt
b2RlIG9uIFBPU0lYLgorCitPdGhlciB2YWx1ZXMgZm9yIHRoZSB2YXJpYWJsZSBhcmUgaWxsZWdh
bCBhbmQgd2lsbCBjYXVzZSB0aGUgZGVhdGggdGVzdCB0bworZmFpbC4gQ3VycmVudGx5LCB0aGUg
ZmxhZydzIGRlZmF1bHQgdmFsdWUgaXMgYCJmYXN0ImAuIEhvd2V2ZXIsIHdlIHJlc2VydmUgdGhl
CityaWdodCB0byBjaGFuZ2UgaXQgaW4gdGhlIGZ1dHVyZS4gVGhlcmVmb3JlLCB5b3VyIHRlc3Rz
IHNob3VsZCBub3QgZGVwZW5kIG9uCit0aGlzLgorCitJbiBlaXRoZXIgY2FzZSwgdGhlIHBhcmVu
dCBwcm9jZXNzIHdhaXRzIGZvciB0aGUgY2hpbGQgcHJvY2VzcyB0byBjb21wbGV0ZSwgYW5kIGNo
ZWNrcyB0aGF0CisKKyAgMS4gdGhlIGNoaWxkJ3MgZXhpdCBzdGF0dXMgc2F0aXNmaWVzIHRoZSBw
cmVkaWNhdGUsIGFuZAorICAxLiB0aGUgY2hpbGQncyBzdGRlcnIgbWF0Y2hlcyB0aGUgcmVndWxh
ciBleHByZXNzaW9uLgorCitJZiB0aGUgZGVhdGggdGVzdCBzdGF0ZW1lbnQgcnVucyB0byBjb21w
bGV0aW9uIHdpdGhvdXQgZHlpbmcsIHRoZSBjaGlsZAorcHJvY2VzcyB3aWxsIG5vbmV0aGVsZXNz
IHRlcm1pbmF0ZSwgYW5kIHRoZSBhc3NlcnRpb24gZmFpbHMuCisKKyMjIERlYXRoIFRlc3RzIEFu
ZCBUaHJlYWRzICMjCisKK1RoZSByZWFzb24gZm9yIHRoZSB0d28gZGVhdGggdGVzdCBzdHlsZXMg
aGFzIHRvIGRvIHdpdGggdGhyZWFkIHNhZmV0eS4gRHVlIHRvCit3ZWxsLWtub3duIHByb2JsZW1z
IHdpdGggZm9ya2luZyBpbiB0aGUgcHJlc2VuY2Ugb2YgdGhyZWFkcywgZGVhdGggdGVzdHMgc2hv
dWxkCitiZSBydW4gaW4gYSBzaW5nbGUtdGhyZWFkZWQgY29udGV4dC4gU29tZXRpbWVzLCBob3dl
dmVyLCBpdCBpc24ndCBmZWFzaWJsZSB0bworYXJyYW5nZSB0aGF0IGtpbmQgb2YgZW52aXJvbm1l
bnQuIEZvciBleGFtcGxlLCBzdGF0aWNhbGx5LWluaXRpYWxpemVkIG1vZHVsZXMKK21heSBzdGFy
dCB0aHJlYWRzIGJlZm9yZSBtYWluIGlzIGV2ZXIgcmVhY2hlZC4gT25jZSB0aHJlYWRzIGhhdmUg
YmVlbiBjcmVhdGVkLAoraXQgbWF5IGJlIGRpZmZpY3VsdCBvciBpbXBvc3NpYmxlIHRvIGNsZWFu
IHRoZW0gdXAuCisKK0dvb2dsZSBUZXN0IGhhcyB0aHJlZSBmZWF0dXJlcyBpbnRlbmRlZCB0byBy
YWlzZSBhd2FyZW5lc3Mgb2YgdGhyZWFkaW5nIGlzc3Vlcy4KKworICAxLiBBIHdhcm5pbmcgaXMg
ZW1pdHRlZCBpZiBtdWx0aXBsZSB0aHJlYWRzIGFyZSBydW5uaW5nIHdoZW4gYSBkZWF0aCB0ZXN0
IGlzIGVuY291bnRlcmVkLgorICAxLiBUZXN0IGNhc2VzIHdpdGggYSBuYW1lIGVuZGluZyBpbiAi
RGVhdGhUZXN0IiBhcmUgcnVuIGJlZm9yZSBhbGwgb3RoZXIgdGVzdHMuCisgIDEuIEl0IHVzZXMg
YGNsb25lKClgIGluc3RlYWQgb2YgYGZvcmsoKWAgdG8gc3Bhd24gdGhlIGNoaWxkIHByb2Nlc3Mg
b24gTGludXggKGBjbG9uZSgpYCBpcyBub3QgYXZhaWxhYmxlIG9uIEN5Z3dpbiBhbmQgTWFjKSwg
YXMgYGZvcmsoKWAgaXMgbW9yZSBsaWtlbHkgdG8gY2F1c2UgdGhlIGNoaWxkIHRvIGhhbmcgd2hl
biB0aGUgcGFyZW50IHByb2Nlc3MgaGFzIG11bHRpcGxlIHRocmVhZHMuCisKK0l0J3MgcGVyZmVj
dGx5IGZpbmUgdG8gY3JlYXRlIHRocmVhZHMgaW5zaWRlIGEgZGVhdGggdGVzdCBzdGF0ZW1lbnQ7
IHRoZXkgYXJlCitleGVjdXRlZCBpbiBhIHNlcGFyYXRlIHByb2Nlc3MgYW5kIGNhbm5vdCBhZmZl
Y3QgdGhlIHBhcmVudC4KKworIyMgRGVhdGggVGVzdCBTdHlsZXMgIyMKKworVGhlICJ0aHJlYWRz
YWZlIiBkZWF0aCB0ZXN0IHN0eWxlIHdhcyBpbnRyb2R1Y2VkIGluIG9yZGVyIHRvIGhlbHAgbWl0
aWdhdGUgdGhlCityaXNrcyBvZiB0ZXN0aW5nIGluIGEgcG9zc2libHkgbXVsdGl0aHJlYWRlZCBl
bnZpcm9ubWVudC4gSXQgdHJhZGVzIGluY3JlYXNlZAordGVzdCBleGVjdXRpb24gdGltZSAocG90
ZW50aWFsbHkgZHJhbWF0aWNhbGx5IHNvKSBmb3IgaW1wcm92ZWQgdGhyZWFkIHNhZmV0eS4KK1dl
IHN1Z2dlc3QgdXNpbmcgdGhlIGZhc3RlciwgZGVmYXVsdCAiZmFzdCIgc3R5bGUgdW5sZXNzIHlv
dXIgdGVzdCBoYXMgc3BlY2lmaWMKK3Byb2JsZW1zIHdpdGggaXQuCisKK1lvdSBjYW4gY2hvb3Nl
IGEgcGFydGljdWxhciBzdHlsZSBvZiBkZWF0aCB0ZXN0cyBieSBzZXR0aW5nIHRoZSBmbGFnCitw
cm9ncmFtbWF0aWNhbGx5OgorCitgYGAKKzo6dGVzdGluZzo6RkxBR1NfZ3Rlc3RfZGVhdGhfdGVz
dF9zdHlsZSA9ICJ0aHJlYWRzYWZlIjsKK2BgYAorCitZb3UgY2FuIGRvIHRoaXMgaW4gYG1haW4o
KWAgdG8gc2V0IHRoZSBzdHlsZSBmb3IgYWxsIGRlYXRoIHRlc3RzIGluIHRoZQorYmluYXJ5LCBv
ciBpbiBpbmRpdmlkdWFsIHRlc3RzLiBSZWNhbGwgdGhhdCBmbGFncyBhcmUgc2F2ZWQgYmVmb3Jl
IHJ1bm5pbmcgZWFjaAordGVzdCBhbmQgcmVzdG9yZWQgYWZ0ZXJ3YXJkcywgc28geW91IG5lZWQg
bm90IGRvIHRoYXQgeW91cnNlbGYuIEZvciBleGFtcGxlOgorCitgYGAKK1RFU1QoTXlEZWF0aFRl
c3QsIFRlc3RPbmUpIHsKKyAgOjp0ZXN0aW5nOjpGTEFHU19ndGVzdF9kZWF0aF90ZXN0X3N0eWxl
ID0gInRocmVhZHNhZmUiOworICAvLyBUaGlzIHRlc3QgaXMgcnVuIGluIHRoZSAidGhyZWFkc2Fm
ZSIgc3R5bGU6CisgIEFTU0VSVF9ERUFUSChUaGlzU2hvdWxkRGllKCksICIiKTsKK30KKworVEVT
VChNeURlYXRoVGVzdCwgVGVzdFR3bykgeworICAvLyBUaGlzIHRlc3QgaXMgcnVuIGluIHRoZSAi
ZmFzdCIgc3R5bGU6CisgIEFTU0VSVF9ERUFUSChUaGlzU2hvdWxkRGllKCksICIiKTsKK30KKwor
aW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CisgIDo6dGVzdGluZzo6SW5pdEdvb2ds
ZVRlc3QoJmFyZ2MsIGFyZ3YpOworICA6OnRlc3Rpbmc6OkZMQUdTX2d0ZXN0X2RlYXRoX3Rlc3Rf
c3R5bGUgPSAiZmFzdCI7CisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CitgYGAKKworIyMg
Q2F2ZWF0cyAjIworCitUaGUgX3N0YXRlbWVudF8gYXJndW1lbnQgb2YgYEFTU0VSVF9FWElUKClg
IGNhbiBiZSBhbnkgdmFsaWQgQysrIHN0YXRlbWVudC4KK0lmIGl0IGxlYXZlcyB0aGUgY3VycmVu
dCBmdW5jdGlvbiB2aWEgYSBgcmV0dXJuYCBzdGF0ZW1lbnQgb3IgYnkgdGhyb3dpbmcgYW4gZXhj
ZXB0aW9uLAordGhlIGRlYXRoIHRlc3QgaXMgY29uc2lkZXJlZCB0byBoYXZlIGZhaWxlZC4gIFNv
bWUgR29vZ2xlIFRlc3QgbWFjcm9zIG1heSByZXR1cm4KK2Zyb20gdGhlIGN1cnJlbnQgZnVuY3Rp
b24gKGUuZy4gYEFTU0VSVF9UUlVFKClgKSwgc28gYmUgc3VyZSB0byBhdm9pZCB0aGVtIGluIF9z
dGF0ZW1lbnRfLgorCitTaW5jZSBfc3RhdGVtZW50XyBydW5zIGluIHRoZSBjaGlsZCBwcm9jZXNz
LCBhbnkgaW4tbWVtb3J5IHNpZGUgZWZmZWN0IChlLmcuCittb2RpZnlpbmcgYSB2YXJpYWJsZSwg
cmVsZWFzaW5nIG1lbW9yeSwgZXRjKSBpdCBjYXVzZXMgd2lsbCBfbm90XyBiZSBvYnNlcnZhYmxl
CitpbiB0aGUgcGFyZW50IHByb2Nlc3MuIEluIHBhcnRpY3VsYXIsIGlmIHlvdSByZWxlYXNlIG1l
bW9yeSBpbiBhIGRlYXRoIHRlc3QsCit5b3VyIHByb2dyYW0gd2lsbCBmYWlsIHRoZSBoZWFwIGNo
ZWNrIGFzIHRoZSBwYXJlbnQgcHJvY2VzcyB3aWxsIG5ldmVyIHNlZSB0aGUKK21lbW9yeSByZWNs
YWltZWQuIFRvIHNvbHZlIHRoaXMgcHJvYmxlbSwgeW91IGNhbgorCisgIDEuIHRyeSBub3QgdG8g
ZnJlZSBtZW1vcnkgaW4gYSBkZWF0aCB0ZXN0OworICAxLiBmcmVlIHRoZSBtZW1vcnkgYWdhaW4g
aW4gdGhlIHBhcmVudCBwcm9jZXNzOyBvcgorICAxLiBkbyBub3QgdXNlIHRoZSBoZWFwIGNoZWNr
ZXIgaW4geW91ciBwcm9ncmFtLgorCitEdWUgdG8gYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLCB5
b3UgY2Fubm90IHBsYWNlIG11bHRpcGxlIGRlYXRoIHRlc3QKK2Fzc2VydGlvbnMgb24gdGhlIHNh
bWUgbGluZTsgb3RoZXJ3aXNlLCBjb21waWxhdGlvbiB3aWxsIGZhaWwgd2l0aCBhbiB1bm9idmlv
dXMKK2Vycm9yIG1lc3NhZ2UuCisKK0Rlc3BpdGUgdGhlIGltcHJvdmVkIHRocmVhZCBzYWZldHkg
YWZmb3JkZWQgYnkgdGhlICJ0aHJlYWRzYWZlIiBzdHlsZSBvZiBkZWF0aAordGVzdCwgdGhyZWFk
IHByb2JsZW1zIHN1Y2ggYXMgZGVhZGxvY2sgYXJlIHN0aWxsIHBvc3NpYmxlIGluIHRoZSBwcmVz
ZW5jZSBvZgoraGFuZGxlcnMgcmVnaXN0ZXJlZCB3aXRoIGBwdGhyZWFkX2F0Zm9yaygzKWAuCisK
KyMgVXNpbmcgQXNzZXJ0aW9ucyBpbiBTdWItcm91dGluZXMgIworCisjIyBBZGRpbmcgVHJhY2Vz
IHRvIEFzc2VydGlvbnMgIyMKKworSWYgYSB0ZXN0IHN1Yi1yb3V0aW5lIGlzIGNhbGxlZCBmcm9t
IHNldmVyYWwgcGxhY2VzLCB3aGVuIGFuIGFzc2VydGlvbgoraW5zaWRlIGl0IGZhaWxzLCBpdCBj
YW4gYmUgaGFyZCB0byB0ZWxsIHdoaWNoIGludm9jYXRpb24gb2YgdGhlCitzdWItcm91dGluZSB0
aGUgZmFpbHVyZSBpcyBmcm9tLiAgWW91IGNhbiBhbGxldmlhdGUgdGhpcyBwcm9ibGVtIHVzaW5n
CitleHRyYSBsb2dnaW5nIG9yIGN1c3RvbSBmYWlsdXJlIG1lc3NhZ2VzLCBidXQgdGhhdCB1c3Vh
bGx5IGNsdXR0ZXJzIHVwCit5b3VyIHRlc3RzLiBBIGJldHRlciBzb2x1dGlvbiBpcyB0byB1c2Ug
dGhlIGBTQ09QRURfVFJBQ0VgIG1hY3JvOgorCit8IGBTQ09QRURfVFJBQ0UoYF9tZXNzYWdlX2Ap
O2AgfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKKword2hlcmUgX21lc3NhZ2Vf
IGNhbiBiZSBhbnl0aGluZyBzdHJlYW1hYmxlIHRvIGBzdGQ6Om9zdHJlYW1gLiBUaGlzCittYWNy
byB3aWxsIGNhdXNlIHRoZSBjdXJyZW50IGZpbGUgbmFtZSwgbGluZSBudW1iZXIsIGFuZCB0aGUg
Z2l2ZW4KK21lc3NhZ2UgdG8gYmUgYWRkZWQgaW4gZXZlcnkgZmFpbHVyZSBtZXNzYWdlLiBUaGUg
ZWZmZWN0IHdpbGwgYmUKK3VuZG9uZSB3aGVuIHRoZSBjb250cm9sIGxlYXZlcyB0aGUgY3VycmVu
dCBsZXhpY2FsIHNjb3BlLgorCitGb3IgZXhhbXBsZSwKKworYGBgCisxMDogdm9pZCBTdWIxKGlu
dCBuKSB7CisxMTogICBFWFBFQ1RfRVEoMSwgQmFyKG4pKTsKKzEyOiAgIEVYUEVDVF9FUSgyLCBC
YXIobiArIDEpKTsKKzEzOiB9CisxNDoKKzE1OiBURVNUKEZvb1Rlc3QsIEJhcikgeworMTY6ICAg
eworMTc6ICAgICBTQ09QRURfVFJBQ0UoIkEiKTsgIC8vIFRoaXMgdHJhY2UgcG9pbnQgd2lsbCBi
ZSBpbmNsdWRlZCBpbgorMTg6ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGV2ZXJ5IGZhaWx1
cmUgaW4gdGhpcyBzY29wZS4KKzE5OiAgICAgU3ViMSgxKTsKKzIwOiAgIH0KKzIxOiAgIC8vIE5v
dyBpdCB3b24ndC4KKzIyOiAgIFN1YjEoOSk7CisyMzogfQorYGBgCisKK2NvdWxkIHJlc3VsdCBp
biBtZXNzYWdlcyBsaWtlIHRoZXNlOgorCitgYGAKK3BhdGgvdG8vZm9vX3Rlc3QuY2M6MTE6IEZh
aWx1cmUKK1ZhbHVlIG9mOiBCYXIobikKK0V4cGVjdGVkOiAxCisgIEFjdHVhbDogMgorICAgVHJh
Y2U6CitwYXRoL3RvL2Zvb190ZXN0LmNjOjE3OiBBCisKK3BhdGgvdG8vZm9vX3Rlc3QuY2M6MTI6
IEZhaWx1cmUKK1ZhbHVlIG9mOiBCYXIobiArIDEpCitFeHBlY3RlZDogMgorICBBY3R1YWw6IDMK
K2BgYAorCitXaXRob3V0IHRoZSB0cmFjZSwgaXQgd291bGQndmUgYmVlbiBkaWZmaWN1bHQgdG8g
a25vdyB3aGljaCBpbnZvY2F0aW9uCitvZiBgU3ViMSgpYCB0aGUgdHdvIGZhaWx1cmVzIGNvbWUg
ZnJvbSByZXNwZWN0aXZlbHkuIChZb3UgY291bGQgYWRkIGFuCitleHRyYSBtZXNzYWdlIHRvIGVh
Y2ggYXNzZXJ0aW9uIGluIGBTdWIxKClgIHRvIGluZGljYXRlIHRoZSB2YWx1ZSBvZgorYG5gLCBi
dXQgdGhhdCdzIHRlZGlvdXMuKQorCitTb21lIHRpcHMgb24gdXNpbmcgYFNDT1BFRF9UUkFDRWA6
CisKKyAgMS4gV2l0aCBhIHN1aXRhYmxlIG1lc3NhZ2UsIGl0J3Mgb2Z0ZW4gZW5vdWdoIHRvIHVz
ZSBgU0NPUEVEX1RSQUNFYCBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgc3ViLXJvdXRpbmUsIGluc3Rl
YWQgb2YgYXQgZWFjaCBjYWxsIHNpdGUuCisgIDEuIFdoZW4gY2FsbGluZyBzdWItcm91dGluZXMg
aW5zaWRlIGEgbG9vcCwgbWFrZSB0aGUgbG9vcCBpdGVyYXRvciBwYXJ0IG9mIHRoZSBtZXNzYWdl
IGluIGBTQ09QRURfVFJBQ0VgIHN1Y2ggdGhhdCB5b3UgY2FuIGtub3cgd2hpY2ggaXRlcmF0aW9u
IHRoZSBmYWlsdXJlIGlzIGZyb20uCisgIDEuIFNvbWV0aW1lcyB0aGUgbGluZSBudW1iZXIgb2Yg
dGhlIHRyYWNlIHBvaW50IGlzIGVub3VnaCBmb3IgaWRlbnRpZnlpbmcgdGhlIHBhcnRpY3VsYXIg
aW52b2NhdGlvbiBvZiBhIHN1Yi1yb3V0aW5lLiBJbiB0aGlzIGNhc2UsIHlvdSBkb24ndCBoYXZl
IHRvIGNob29zZSBhIHVuaXF1ZSBtZXNzYWdlIGZvciBgU0NPUEVEX1RSQUNFYC4gWW91IGNhbiBz
aW1wbHkgdXNlIGAiImAuCisgIDEuIFlvdSBjYW4gdXNlIGBTQ09QRURfVFJBQ0VgIGluIGFuIGlu
bmVyIHNjb3BlIHdoZW4gdGhlcmUgaXMgb25lIGluIHRoZSBvdXRlciBzY29wZS4gSW4gdGhpcyBj
YXNlLCBhbGwgYWN0aXZlIHRyYWNlIHBvaW50cyB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBmYWls
dXJlIG1lc3NhZ2VzLCBpbiByZXZlcnNlIG9yZGVyIHRoZXkgYXJlIGVuY291bnRlcmVkLgorICAx
LiBUaGUgdHJhY2UgZHVtcCBpcyBjbGlja2FibGUgaW4gRW1hY3MnIGNvbXBpbGF0aW9uIGJ1ZmZl
ciAtIGhpdCByZXR1cm4gb24gYSBsaW5lIG51bWJlciBhbmQgeW91J2xsIGJlIHRha2VuIHRvIHRo
YXQgbGluZSBpbiB0aGUgc291cmNlIGZpbGUhCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2lu
ZG93cywgTWFjLgorCisjIyBQcm9wYWdhdGluZyBGYXRhbCBGYWlsdXJlcyAjIworCitBIGNvbW1v
biBwaXRmYWxsIHdoZW4gdXNpbmcgYEFTU0VSVF8qYCBhbmQgYEZBSUwqYCBpcyBub3QgdW5kZXJz
dGFuZGluZyB0aGF0Cit3aGVuIHRoZXkgZmFpbCB0aGV5IG9ubHkgYWJvcnQgdGhlIF9jdXJyZW50
IGZ1bmN0aW9uXywgbm90IHRoZSBlbnRpcmUgdGVzdC4gRm9yCitleGFtcGxlLCB0aGUgZm9sbG93
aW5nIHRlc3Qgd2lsbCBzZWdmYXVsdDoKK2BgYAordm9pZCBTdWJyb3V0aW5lKCkgeworICAvLyBH
ZW5lcmF0ZXMgYSBmYXRhbCBmYWlsdXJlIGFuZCBhYm9ydHMgdGhlIGN1cnJlbnQgZnVuY3Rpb24u
CisgIEFTU0VSVF9FUSgxLCAyKTsKKyAgLy8gVGhlIGZvbGxvd2luZyB3b24ndCBiZSBleGVjdXRl
ZC4KKyAgLi4uCit9CisKK1RFU1QoRm9vVGVzdCwgQmFyKSB7CisgIFN1YnJvdXRpbmUoKTsKKyAg
Ly8gVGhlIGludGVuZGVkIGJlaGF2aW9yIGlzIGZvciB0aGUgZmF0YWwgZmFpbHVyZQorICAvLyBp
biBTdWJyb3V0aW5lKCkgdG8gYWJvcnQgdGhlIGVudGlyZSB0ZXN0LgorICAvLyBUaGUgYWN0dWFs
IGJlaGF2aW9yOiB0aGUgZnVuY3Rpb24gZ29lcyBvbiBhZnRlciBTdWJyb3V0aW5lKCkgcmV0dXJu
cy4KKyAgaW50KiBwID0gTlVMTDsKKyAgKnAgPSAzOyAvLyBTZWdmYXVsdCEKK30KK2BgYAorCitT
aW5jZSB3ZSBkb24ndCB1c2UgZXhjZXB0aW9ucywgaXQgaXMgdGVjaG5pY2FsbHkgaW1wb3NzaWJs
ZSB0bworaW1wbGVtZW50IHRoZSBpbnRlbmRlZCBiZWhhdmlvciBoZXJlLiAgVG8gYWxsZXZpYXRl
IHRoaXMsIEdvb2dsZSBUZXN0Citwcm92aWRlcyB0d28gc29sdXRpb25zLiAgWW91IGNvdWxkIHVz
ZSBlaXRoZXIgdGhlCitgKEFTU0VSVHxFWFBFQ1QpX05PX0ZBVEFMX0ZBSUxVUkVgIGFzc2VydGlv
bnMgb3IgdGhlCitgSGFzRmF0YWxGYWlsdXJlKClgIGZ1bmN0aW9uLiAgVGhleSBhcmUgZGVzY3Jp
YmVkIGluIHRoZSBmb2xsb3dpbmcgdHdvCitzdWJzZWN0aW9ucy4KKworIyMjIEFzc2VydGluZyBv
biBTdWJyb3V0aW5lcyAjIyMKKworQXMgc2hvd24gYWJvdmUsIGlmIHlvdXIgdGVzdCBjYWxscyBh
IHN1YnJvdXRpbmUgdGhhdCBoYXMgYW4gYEFTU0VSVF8qYAorZmFpbHVyZSBpbiBpdCwgdGhlIHRl
c3Qgd2lsbCBjb250aW51ZSBhZnRlciB0aGUgc3Vicm91dGluZQorcmV0dXJucy4gVGhpcyBtYXkg
bm90IGJlIHdoYXQgeW91IHdhbnQuCisKK09mdGVuIHBlb3BsZSB3YW50IGZhdGFsIGZhaWx1cmVz
IHRvIHByb3BhZ2F0ZSBsaWtlIGV4Y2VwdGlvbnMuICBGb3IKK3RoYXQgR29vZ2xlIFRlc3Qgb2Zm
ZXJzIHRoZSBmb2xsb3dpbmcgbWFjcm9zOgorCit8ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5v
bmZhdGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0t
LS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAorfCBgQVNTRVJUX05P
X0ZBVEFMX0ZBSUxVUkUoYF9zdGF0ZW1lbnRfYCk7YCB8IGBFWFBFQ1RfTk9fRkFUQUxfRkFJTFVS
RShgX3N0YXRlbWVudF9gKTtgIHwgX3N0YXRlbWVudF8gZG9lc24ndCBnZW5lcmF0ZSBhbnkgbmV3
IGZhdGFsIGZhaWx1cmVzIGluIHRoZSBjdXJyZW50IHRocmVhZC4gfAorCitPbmx5IGZhaWx1cmVz
IGluIHRoZSB0aHJlYWQgdGhhdCBleGVjdXRlcyB0aGUgYXNzZXJ0aW9uIGFyZSBjaGVja2VkIHRv
CitkZXRlcm1pbmUgdGhlIHJlc3VsdCBvZiB0aGlzIHR5cGUgb2YgYXNzZXJ0aW9ucy4gIElmIF9z
dGF0ZW1lbnRfCitjcmVhdGVzIG5ldyB0aHJlYWRzLCBmYWlsdXJlcyBpbiB0aGVzZSB0aHJlYWRz
IGFyZSBpZ25vcmVkLgorCitFeGFtcGxlczoKKworYGBgCitBU1NFUlRfTk9fRkFUQUxfRkFJTFVS
RShGb28oKSk7CisKK2ludCBpOworRVhQRUNUX05PX0ZBVEFMX0ZBSUxVUkUoeworICBpID0gQmFy
KCk7Cit9KTsKK2BgYAorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4gQXNz
ZXJ0aW9ucyBmcm9tIG11bHRpcGxlIHRocmVhZHMKK2FyZSBjdXJyZW50bHkgbm90IHN1cHBvcnRl
ZC4KKworIyMjIENoZWNraW5nIGZvciBGYWlsdXJlcyBpbiB0aGUgQ3VycmVudCBUZXN0ICMjIwor
CitgSGFzRmF0YWxGYWlsdXJlKClgIGluIHRoZSBgOjp0ZXN0aW5nOjpUZXN0YCBjbGFzcyByZXR1
cm5zIGB0cnVlYCBpZiBhbgorYXNzZXJ0aW9uIGluIHRoZSBjdXJyZW50IHRlc3QgaGFzIHN1ZmZl
cmVkIGEgZmF0YWwgZmFpbHVyZS4gVGhpcworYWxsb3dzIGZ1bmN0aW9ucyB0byBjYXRjaCBmYXRh
bCBmYWlsdXJlcyBpbiBhIHN1Yi1yb3V0aW5lIGFuZCByZXR1cm4KK2Vhcmx5LgorCitgYGAKK2Ns
YXNzIFRlc3QgeworIHB1YmxpYzoKKyAgLi4uCisgIHN0YXRpYyBib29sIEhhc0ZhdGFsRmFpbHVy
ZSgpOworfTsKK2BgYAorCitUaGUgdHlwaWNhbCB1c2FnZSwgd2hpY2ggYmFzaWNhbGx5IHNpbXVs
YXRlcyB0aGUgYmVoYXZpb3Igb2YgYSB0aHJvd24KK2V4Y2VwdGlvbiwgaXM6CisKK2BgYAorVEVT
VChGb29UZXN0LCBCYXIpIHsKKyAgU3Vicm91dGluZSgpOworICAvLyBBYm9ydHMgaWYgU3Vicm91
dGluZSgpIGhhZCBhIGZhdGFsIGZhaWx1cmUuCisgIGlmIChIYXNGYXRhbEZhaWx1cmUoKSkKKyAg
ICByZXR1cm47CisgIC8vIFRoZSBmb2xsb3dpbmcgd29uJ3QgYmUgZXhlY3V0ZWQuCisgIC4uLgor
fQorYGBgCisKK0lmIGBIYXNGYXRhbEZhaWx1cmUoKWAgaXMgdXNlZCBvdXRzaWRlIG9mIGBURVNU
KClgICwgYFRFU1RfRigpYCAsIG9yIGEgdGVzdAorZml4dHVyZSwgeW91IG11c3QgYWRkIHRoZSBg
Ojp0ZXN0aW5nOjpUZXN0OjpgIHByZWZpeCwgYXMgaW46CisKK2BgYAoraWYgKDo6dGVzdGluZzo6
VGVzdDo6SGFzRmF0YWxGYWlsdXJlKCkpCisgIHJldHVybjsKK2BgYAorCitTaW1pbGFybHksIGBI
YXNOb25mYXRhbEZhaWx1cmUoKWAgcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGN1cnJlbnQgdGVzdAor
aGFzIGF0IGxlYXN0IG9uZSBub24tZmF0YWwgZmFpbHVyZSwgYW5kIGBIYXNGYWlsdXJlKClgIHJl
dHVybnMgYHRydWVgCitpZiB0aGUgY3VycmVudCB0ZXN0IGhhcyBhdCBsZWFzdCBvbmUgZmFpbHVy
ZSBvZiBlaXRoZXIga2luZC4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMu
ICBgSGFzTm9uZmF0YWxGYWlsdXJlKClgIGFuZAorYEhhc0ZhaWx1cmUoKWAgYXJlIGF2YWlsYWJs
ZSBzaW5jZSB2ZXJzaW9uIDEuNC4wLgorCisjIExvZ2dpbmcgQWRkaXRpb25hbCBJbmZvcm1hdGlv
biAjCisKK0luIHlvdXIgdGVzdCBjb2RlLCB5b3UgY2FuIGNhbGwgYFJlY29yZFByb3BlcnR5KCJr
ZXkiLCB2YWx1ZSlgIHRvIGxvZworYWRkaXRpb25hbCBpbmZvcm1hdGlvbiwgd2hlcmUgYHZhbHVl
YCBjYW4gYmUgZWl0aGVyIGEgQyBzdHJpbmcgb3IgYSAzMi1iaXQKK2ludGVnZXIuIFRoZSBfbGFz
dF8gdmFsdWUgcmVjb3JkZWQgZm9yIGEga2V5IHdpbGwgYmUgZW1pdHRlZCB0byB0aGUgWE1MIG91
dHB1dAoraWYgeW91IHNwZWNpZnkgb25lLiBGb3IgZXhhbXBsZSwgdGhlIHRlc3QKKworYGBgCitU
RVNUX0YoV2lkZ2V0VXNhZ2VUZXN0LCBNaW5BbmRNYXhXaWRnZXRzKSB7CisgIFJlY29yZFByb3Bl
cnR5KCJNYXhpbXVtV2lkZ2V0cyIsIENvbXB1dGVNYXhVc2FnZSgpKTsKKyAgUmVjb3JkUHJvcGVy
dHkoIk1pbmltdW1XaWRnZXRzIiwgQ29tcHV0ZU1pblVzYWdlKCkpOworfQorYGBgCisKK3dpbGwg
b3V0cHV0IFhNTCBsaWtlIHRoaXM6CisKK2BgYAorLi4uCisgIDx0ZXN0Y2FzZSBuYW1lPSJNaW5B
bmRNYXhXaWRnZXRzIiBzdGF0dXM9InJ1biIgdGltZT0iNiIgY2xhc3NuYW1lPSJXaWRnZXRVc2Fn
ZVRlc3QiCisgICAgICAgICAgICBNYXhpbXVtV2lkZ2V0cz0iMTIiCisgICAgICAgICAgICBNaW5p
bXVtV2lkZ2V0cz0iOSIgLz4KKy4uLgorYGBgCisKK19Ob3RlXzoKKyAgKiBgUmVjb3JkUHJvcGVy
dHkoKWAgaXMgYSBzdGF0aWMgbWVtYmVyIG9mIHRoZSBgVGVzdGAgY2xhc3MuIFRoZXJlZm9yZSBp
dCBuZWVkcyB0byBiZSBwcmVmaXhlZCB3aXRoIGA6OnRlc3Rpbmc6OlRlc3Q6OmAgaWYgdXNlZCBv
dXRzaWRlIG9mIHRoZSBgVEVTVGAgYm9keSBhbmQgdGhlIHRlc3QgZml4dHVyZSBjbGFzcy4KKyAg
KiBga2V5YCBtdXN0IGJlIGEgdmFsaWQgWE1MIGF0dHJpYnV0ZSBuYW1lLCBhbmQgY2Fubm90IGNv
bmZsaWN0IHdpdGggdGhlIG9uZXMgYWxyZWFkeSB1c2VkIGJ5IEdvb2dsZSBUZXN0IChgbmFtZWAs
IGBzdGF0dXNgLCAgICAgYHRpbWVgLCBhbmQgYGNsYXNzbmFtZWApLgorCitfQXZhaWxhYmlsaXR5
XzogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyBTaGFyaW5nIFJlc291cmNlcyBCZXR3ZWVuIFRl
c3RzIGluIHRoZSBTYW1lIFRlc3QgQ2FzZSAjCisKKworCitHb29nbGUgVGVzdCBjcmVhdGVzIGEg
bmV3IHRlc3QgZml4dHVyZSBvYmplY3QgZm9yIGVhY2ggdGVzdCBpbiBvcmRlciB0byBtYWtlCit0
ZXN0cyBpbmRlcGVuZGVudCBhbmQgZWFzaWVyIHRvIGRlYnVnLiBIb3dldmVyLCBzb21ldGltZXMg
dGVzdHMgdXNlIHJlc291cmNlcwordGhhdCBhcmUgZXhwZW5zaXZlIHRvIHNldCB1cCwgbWFraW5n
IHRoZSBvbmUtY29weS1wZXItdGVzdCBtb2RlbCBwcm9oaWJpdGl2ZWx5CitleHBlbnNpdmUuCisK
K0lmIHRoZSB0ZXN0cyBkb24ndCBjaGFuZ2UgdGhlIHJlc291cmNlLCB0aGVyZSdzIG5vIGhhcm0g
aW4gdGhlbSBzaGFyaW5nIGEKK3NpbmdsZSByZXNvdXJjZSBjb3B5LiBTbywgaW4gYWRkaXRpb24g
dG8gcGVyLXRlc3Qgc2V0LXVwL3RlYXItZG93biwgR29vZ2xlIFRlc3QKK2Fsc28gc3VwcG9ydHMg
cGVyLXRlc3QtY2FzZSBzZXQtdXAvdGVhci1kb3duLiBUbyB1c2UgaXQ6CisKKyAgMS4gSW4geW91
ciB0ZXN0IGZpeHR1cmUgY2xhc3MgKHNheSBgRm9vVGVzdGAgKSwgZGVmaW5lIGFzIGBzdGF0aWNg
IHNvbWUgbWVtYmVyIHZhcmlhYmxlcyB0byBob2xkIHRoZSBzaGFyZWQgcmVzb3VyY2VzLgorICAx
LiBJbiB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUgY2xhc3MsIGRlZmluZSBhIGBzdGF0aWMgdm9pZCBT
ZXRVcFRlc3RDYXNlKClgIGZ1bmN0aW9uIChyZW1lbWJlciBub3QgdG8gc3BlbGwgaXQgYXMgKipg
U2V0dXBUZXN0Q2FzZWAqKiB3aXRoIGEgc21hbGwgYHVgISkgdG8gc2V0IHVwIHRoZSBzaGFyZWQg
cmVzb3VyY2VzIGFuZCBhIGBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKClgIGZ1bmN0aW9u
IHRvIHRlYXIgdGhlbSBkb3duLgorCitUaGF0J3MgaXQhIEdvb2dsZSBUZXN0IGF1dG9tYXRpY2Fs
bHkgY2FsbHMgYFNldFVwVGVzdENhc2UoKWAgYmVmb3JlIHJ1bm5pbmcgdGhlCitfZmlyc3QgdGVz
dF8gaW4gdGhlIGBGb29UZXN0YCB0ZXN0IGNhc2UgKGkuZS4gYmVmb3JlIGNyZWF0aW5nIHRoZSBm
aXJzdAorYEZvb1Rlc3RgIG9iamVjdCksIGFuZCBjYWxscyBgVGVhckRvd25UZXN0Q2FzZSgpYCBh
ZnRlciBydW5uaW5nIHRoZSBfbGFzdCB0ZXN0XworaW4gaXQgKGkuZS4gYWZ0ZXIgZGVsZXRpbmcg
dGhlIGxhc3QgYEZvb1Rlc3RgIG9iamVjdCkuIEluIGJldHdlZW4sIHRoZSB0ZXN0cworY2FuIHVz
ZSB0aGUgc2hhcmVkIHJlc291cmNlcy4KKworUmVtZW1iZXIgdGhhdCB0aGUgdGVzdCBvcmRlciBp
cyB1bmRlZmluZWQsIHNvIHlvdXIgY29kZSBjYW4ndCBkZXBlbmQgb24gYSB0ZXN0CitwcmVjZWRp
bmcgb3IgZm9sbG93aW5nIGFub3RoZXIuIEFsc28sIHRoZSB0ZXN0cyBtdXN0IGVpdGhlciBub3Qg
bW9kaWZ5IHRoZQorc3RhdGUgb2YgYW55IHNoYXJlZCByZXNvdXJjZSwgb3IsIGlmIHRoZXkgZG8g
bW9kaWZ5IHRoZSBzdGF0ZSwgdGhleSBtdXN0CityZXN0b3JlIHRoZSBzdGF0ZSB0byBpdHMgb3Jp
Z2luYWwgdmFsdWUgYmVmb3JlIHBhc3NpbmcgY29udHJvbCB0byB0aGUgbmV4dAordGVzdC4KKwor
SGVyZSdzIGFuIGV4YW1wbGUgb2YgcGVyLXRlc3QtY2FzZSBzZXQtdXAgYW5kIHRlYXItZG93bjoK
K2BgYAorY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3Rl
ZDoKKyAgLy8gUGVyLXRlc3QtY2FzZSBzZXQtdXAuCisgIC8vIENhbGxlZCBiZWZvcmUgdGhlIGZp
cnN0IHRlc3QgaW4gdGhpcyB0ZXN0IGNhc2UuCisgIC8vIENhbiBiZSBvbWl0dGVkIGlmIG5vdCBu
ZWVkZWQuCisgIHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7CisgICAgc2hhcmVkX3Jlc291
cmNlXyA9IG5ldyAuLi47CisgIH0KKworICAvLyBQZXItdGVzdC1jYXNlIHRlYXItZG93bi4KKyAg
Ly8gQ2FsbGVkIGFmdGVyIHRoZSBsYXN0IHRlc3QgaW4gdGhpcyB0ZXN0IGNhc2UuCisgIC8vIENh
biBiZSBvbWl0dGVkIGlmIG5vdCBuZWVkZWQuCisgIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENh
c2UoKSB7CisgICAgZGVsZXRlIHNoYXJlZF9yZXNvdXJjZV87CisgICAgc2hhcmVkX3Jlc291cmNl
XyA9IE5VTEw7CisgIH0KKworICAvLyBZb3UgY2FuIGRlZmluZSBwZXItdGVzdCBzZXQtdXAgYW5k
IHRlYXItZG93biBsb2dpYyBhcyB1c3VhbC4KKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeyAuLi4g
fQorICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7IC4uLiB9CisKKyAgLy8gU29tZSBleHBlbnNp
dmUgcmVzb3VyY2Ugc2hhcmVkIGJ5IGFsbCB0ZXN0cy4KKyAgc3RhdGljIFQqIHNoYXJlZF9yZXNv
dXJjZV87Cit9OworCitUKiBGb29UZXN0OjpzaGFyZWRfcmVzb3VyY2VfID0gTlVMTDsKKworVEVT
VF9GKEZvb1Rlc3QsIFRlc3QxKSB7CisgIC4uLiB5b3UgY2FuIHJlZmVyIHRvIHNoYXJlZF9yZXNv
dXJjZSBoZXJlIC4uLgorfQorVEVTVF9GKEZvb1Rlc3QsIFRlc3QyKSB7CisgIC4uLiB5b3UgY2Fu
IHJlZmVyIHRvIHNoYXJlZF9yZXNvdXJjZSBoZXJlIC4uLgorfQorYGBgCisKK19BdmFpbGFiaWxp
dHk6XyBMaW51eCwgV2luZG93cywgTWFjLgorCisjIEdsb2JhbCBTZXQtVXAgYW5kIFRlYXItRG93
biAjCisKK0p1c3QgYXMgeW91IGNhbiBkbyBzZXQtdXAgYW5kIHRlYXItZG93biBhdCB0aGUgdGVz
dCBsZXZlbCBhbmQgdGhlIHRlc3QgY2FzZQorbGV2ZWwsIHlvdSBjYW4gYWxzbyBkbyBpdCBhdCB0
aGUgdGVzdCBwcm9ncmFtIGxldmVsLiBIZXJlJ3MgaG93LgorCitGaXJzdCwgeW91IHN1YmNsYXNz
IHRoZSBgOjp0ZXN0aW5nOjpFbnZpcm9ubWVudGAgY2xhc3MgdG8gZGVmaW5lIGEgdGVzdAorZW52
aXJvbm1lbnQsIHdoaWNoIGtub3dzIGhvdyB0byBzZXQtdXAgYW5kIHRlYXItZG93bjoKKworYGBg
CitjbGFzcyBFbnZpcm9ubWVudCB7CisgcHVibGljOgorICB2aXJ0dWFsIH5FbnZpcm9ubWVudCgp
IHt9CisgIC8vIE92ZXJyaWRlIHRoaXMgdG8gZGVmaW5lIGhvdyB0byBzZXQgdXAgdGhlIGVudmly
b25tZW50LgorICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7fQorICAvLyBPdmVycmlkZSB0aGlzIHRv
IGRlZmluZSBob3cgdG8gdGVhciBkb3duIHRoZSBlbnZpcm9ubWVudC4KKyAgdmlydHVhbCB2b2lk
IFRlYXJEb3duKCkge30KK307CitgYGAKKworVGhlbiwgeW91IHJlZ2lzdGVyIGFuIGluc3RhbmNl
IG9mIHlvdXIgZW52aXJvbm1lbnQgY2xhc3Mgd2l0aCBHb29nbGUgVGVzdCBieQorY2FsbGluZyB0
aGUgYDo6dGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50KClgIGZ1bmN0aW9uOgorCitg
YGAKK0Vudmlyb25tZW50KiBBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoRW52aXJvbm1lbnQqIGVu
dik7CitgYGAKKworTm93LCB3aGVuIGBSVU5fQUxMX1RFU1RTKClgIGlzIGNhbGxlZCwgaXQgZmly
c3QgY2FsbHMgdGhlIGBTZXRVcCgpYCBtZXRob2Qgb2YKK3RoZSBlbnZpcm9ubWVudCBvYmplY3Qs
IHRoZW4gcnVucyB0aGUgdGVzdHMgaWYgdGhlcmUgd2FzIG5vIGZhdGFsIGZhaWx1cmVzLCBhbmQK
K2ZpbmFsbHkgY2FsbHMgYFRlYXJEb3duKClgIG9mIHRoZSBlbnZpcm9ubWVudCBvYmplY3QuCisK
K0l0J3MgT0sgdG8gcmVnaXN0ZXIgbXVsdGlwbGUgZW52aXJvbm1lbnQgb2JqZWN0cy4gSW4gdGhp
cyBjYXNlLCB0aGVpciBgU2V0VXAoKWAKK3dpbGwgYmUgY2FsbGVkIGluIHRoZSBvcmRlciB0aGV5
IGFyZSByZWdpc3RlcmVkLCBhbmQgdGhlaXIgYFRlYXJEb3duKClgIHdpbGwgYmUKK2NhbGxlZCBp
biB0aGUgcmV2ZXJzZSBvcmRlci4KKworTm90ZSB0aGF0IEdvb2dsZSBUZXN0IHRha2VzIG93bmVy
c2hpcCBvZiB0aGUgcmVnaXN0ZXJlZCBlbnZpcm9ubWVudCBvYmplY3RzLgorVGhlcmVmb3JlICoq
ZG8gbm90IGRlbGV0ZSB0aGVtKiogYnkgeW91cnNlbGYuCisKK1lvdSBzaG91bGQgY2FsbCBgQWRk
R2xvYmFsVGVzdEVudmlyb25tZW50KClgIGJlZm9yZSBgUlVOX0FMTF9URVNUUygpYCBpcworY2Fs
bGVkLCBwcm9iYWJseSBpbiBgbWFpbigpYC4gSWYgeW91IHVzZSBgZ3Rlc3RfbWFpbmAsIHlvdSBu
ZWVkIHRvICAgICAgY2FsbAordGhpcyBiZWZvcmUgYG1haW4oKWAgc3RhcnRzIGZvciBpdCB0byB0
YWtlIGVmZmVjdC4gT25lIHdheSB0byBkbyB0aGlzIGlzIHRvCitkZWZpbmUgYSBnbG9iYWwgdmFy
aWFibGUgbGlrZSB0aGlzOgorCitgYGAKKzo6dGVzdGluZzo6RW52aXJvbm1lbnQqIGNvbnN0IGZv
b19lbnYgPSA6OnRlc3Rpbmc6OkFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChuZXcgRm9vRW52aXJv
bm1lbnQpOworYGBgCisKK0hvd2V2ZXIsIHdlIHN0cm9uZ2x5IHJlY29tbWVuZCB5b3UgdG8gd3Jp
dGUgeW91ciBvd24gYG1haW4oKWAgYW5kIGNhbGwKK2BBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQo
KWAgdGhlcmUsIGFzIHJlbHlpbmcgb24gaW5pdGlhbGl6YXRpb24gb2YgZ2xvYmFsCit2YXJpYWJs
ZXMgbWFrZXMgdGhlIGNvZGUgaGFyZGVyIHRvIHJlYWQgYW5kIG1heSBjYXVzZSBwcm9ibGVtcyB3
aGVuIHlvdQorcmVnaXN0ZXIgbXVsdGlwbGUgZW52aXJvbm1lbnRzIGZyb20gZGlmZmVyZW50IHRy
YW5zbGF0aW9uIHVuaXRzIGFuZCB0aGUKK2Vudmlyb25tZW50cyBoYXZlIGRlcGVuZGVuY2llcyBh
bW9uZyB0aGVtIChyZW1lbWJlciB0aGF0IHRoZSBjb21waWxlciBkb2Vzbid0CitndWFyYW50ZWUg
dGhlIG9yZGVyIGluIHdoaWNoIGdsb2JhbCB2YXJpYWJsZXMgZnJvbSBkaWZmZXJlbnQgdHJhbnNs
YXRpb24gdW5pdHMKK2FyZSBpbml0aWFsaXplZCkuCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwg
V2luZG93cywgTWFjLgorCisKKyMgVmFsdWUgUGFyYW1ldGVyaXplZCBUZXN0cyAjCisKK19WYWx1
ZS1wYXJhbWV0ZXJpemVkIHRlc3RzXyBhbGxvdyB5b3UgdG8gdGVzdCB5b3VyIGNvZGUgd2l0aCBk
aWZmZXJlbnQKK3BhcmFtZXRlcnMgd2l0aG91dCB3cml0aW5nIG11bHRpcGxlIGNvcGllcyBvZiB0
aGUgc2FtZSB0ZXN0LgorCitTdXBwb3NlIHlvdSB3cml0ZSBhIHRlc3QgZm9yIHlvdXIgY29kZSBh
bmQgdGhlbiByZWFsaXplIHRoYXQgeW91ciBjb2RlIGlzIGFmZmVjdGVkIGJ5IGEgcHJlc2VuY2Ug
b2YgYSBCb29sZWFuIGNvbW1hbmQgbGluZSBmbGFnLgorCitgYGAKK1RFU1QoTXlDb2RlVGVzdCwg
VGVzdEZvbykgeworICAvLyBBIGNvZGUgdG8gdGVzdCBmb28oKS4KK30KK2BgYAorCitVc3VhbGx5
IHBlb3BsZSBmYWN0b3IgdGhlaXIgdGVzdCBjb2RlIGludG8gYSBmdW5jdGlvbiB3aXRoIGEgQm9v
bGVhbiBwYXJhbWV0ZXIgaW4gc3VjaCBzaXR1YXRpb25zLiBUaGUgZnVuY3Rpb24gc2V0cyB0aGUg
ZmxhZywgdGhlbiBleGVjdXRlcyB0aGUgdGVzdGluZyBjb2RlLgorCitgYGAKK3ZvaWQgVGVzdEZv
b0hlbHBlcihib29sIGZsYWdfdmFsdWUpIHsKKyAgZmxhZyA9IGZsYWdfdmFsdWU7CisgIC8vIEEg
Y29kZSB0byB0ZXN0IGZvbygpLgorfQorCitURVNUKE15Q29kZVRlc3QsIFRlc3RGb29vKSB7Cisg
IFRlc3RGb29IZWxwZXIoZmFsc2UpOworICBUZXN0Rm9vSGVscGVyKHRydWUpOworfQorYGBgCisK
K0J1dCB0aGlzIHNldHVwIGhhcyBzZXJpb3VzIGRyYXdiYWNrcy4gRmlyc3QsIHdoZW4gYSB0ZXN0
IGFzc2VydGlvbiBmYWlscyBpbiB5b3VyIHRlc3RzLCBpdCBiZWNvbWVzIHVuY2xlYXIgd2hhdCB2
YWx1ZSBvZiB0aGUgcGFyYW1ldGVyIGNhdXNlZCBpdCB0byBmYWlsLiBZb3UgY2FuIHN0cmVhbSBh
IGNsYXJpZnlpbmcgbWVzc2FnZSBpbnRvIHlvdXIgYEVYUEVDVGAvYEFTU0VSVGAgc3RhdGVtZW50
cywgYnV0IGl0IHlvdSdsbCBoYXZlIHRvIGRvIGl0IHdpdGggYWxsIG9mIHRoZW0uIFNlY29uZCwg
eW91IGhhdmUgdG8gYWRkIG9uZSBzdWNoIGhlbHBlciBmdW5jdGlvbiBwZXIgdGVzdC4gV2hhdCBp
ZiB5b3UgaGF2ZSB0ZW4gdGVzdHM/IFR3ZW50eT8gQSBodW5kcmVkPworCitWYWx1ZS1wYXJhbWV0
ZXJpemVkIHRlc3RzIHdpbGwgbGV0IHlvdSB3cml0ZSB5b3VyIHRlc3Qgb25seSBvbmNlIGFuZCB0
aGVuIGVhc2lseSBpbnN0YW50aWF0ZSBhbmQgcnVuIGl0IHdpdGggYW4gYXJiaXRyYXJ5IG51bWJl
ciBvZiBwYXJhbWV0ZXIgdmFsdWVzLgorCitIZXJlIGFyZSBzb21lIG90aGVyIHNpdHVhdGlvbnMg
d2hlbiB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGNvbWUgaGFuZHk6CisKKyAgKiBZb3Ugd2Fu
dCB0byB0ZXN0IGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnMgb2YgYW4gT08gaW50ZXJmYWNlLgor
ICAqIFlvdSB3YW50IHRvIHRlc3QgeW91ciBjb2RlIG92ZXIgdmFyaW91cyBpbnB1dHMgKGEuay5h
LiBkYXRhLWRyaXZlbiB0ZXN0aW5nKS4gVGhpcyBmZWF0dXJlIGlzIGVhc3kgdG8gYWJ1c2UsIHNv
IHBsZWFzZSBleGVyY2lzZSB5b3VyIGdvb2Qgc2Vuc2Ugd2hlbiBkb2luZyBpdCEKKworIyMgSG93
IHRvIFdyaXRlIFZhbHVlLVBhcmFtZXRlcml6ZWQgVGVzdHMgIyMKKworVG8gd3JpdGUgdmFsdWUt
cGFyYW1ldGVyaXplZCB0ZXN0cywgZmlyc3QgeW91IHNob3VsZCBkZWZpbmUgYSBmaXh0dXJlCitj
bGFzcy4gIEl0IG11c3QgYmUgZGVyaXZlZCBmcm9tIGJvdGggYDo6dGVzdGluZzo6VGVzdGAgYW5k
CitgOjp0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8VD5gICh0aGUgbGF0dGVyIGlzIGEgcHVy
ZSBpbnRlcmZhY2UpLAord2hlcmUgYFRgIGlzIHRoZSB0eXBlIG9mIHlvdXIgcGFyYW1ldGVyIHZh
bHVlcy4gIEZvciBjb252ZW5pZW5jZSwgeW91CitjYW4ganVzdCBkZXJpdmUgdGhlIGZpeHR1cmUg
Y2xhc3MgZnJvbSBgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPFQ+YCwKK3doaWNoIGl0c2VsZiBp
cyBkZXJpdmVkIGZyb20gYm90aCBgOjp0ZXN0aW5nOjpUZXN0YCBhbmQKK2A6OnRlc3Rpbmc6Oldp
dGhQYXJhbUludGVyZmFjZTxUPmAuIGBUYCBjYW4gYmUgYW55IGNvcHlhYmxlIHR5cGUuIElmCitp
dCdzIGEgcmF3IHBvaW50ZXIsIHlvdSBhcmUgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZSBs
aWZlc3BhbiBvZgordGhlIHBvaW50ZWQgdmFsdWVzLgorCitgYGAKK2NsYXNzIEZvb1Rlc3QgOiBw
dWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGNvbnN0IGNoYXIqPiB7CisgIC8vIFlvdSBj
YW4gaW1wbGVtZW50IGFsbCB0aGUgdXN1YWwgZml4dHVyZSBjbGFzcyBtZW1iZXJzIGhlcmUuCisg
IC8vIFRvIGFjY2VzcyB0aGUgdGVzdCBwYXJhbWV0ZXIsIGNhbGwgR2V0UGFyYW0oKSBmcm9tIGNs
YXNzCisgIC8vIFRlc3RXaXRoUGFyYW08VD4uCit9OworCisvLyBPciwgd2hlbiB5b3Ugd2FudCB0
byBhZGQgcGFyYW1ldGVycyB0byBhIHByZS1leGlzdGluZyBmaXh0dXJlIGNsYXNzOgorY2xhc3Mg
QmFzZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyAgLi4uCit9OworY2xhc3MgQmFy
VGVzdCA6IHB1YmxpYyBCYXNlVGVzdCwKKyAgICAgICAgICAgICAgICBwdWJsaWMgOjp0ZXN0aW5n
OjpXaXRoUGFyYW1JbnRlcmZhY2U8Y29uc3QgY2hhcio+IHsKKyAgLi4uCit9OworYGBgCisKK1Ro
ZW4sIHVzZSB0aGUgYFRFU1RfUGAgbWFjcm8gdG8gZGVmaW5lIGFzIG1hbnkgdGVzdCBwYXR0ZXJu
cyB1c2luZwordGhpcyBmaXh0dXJlIGFzIHlvdSB3YW50LiAgVGhlIGBfUGAgc3VmZml4IGlzIGZv
ciAicGFyYW1ldGVyaXplZCIgb3IKKyJwYXR0ZXJuIiwgd2hpY2hldmVyIHlvdSBwcmVmZXIgdG8g
dGhpbmsuCisKK2BgYAorVEVTVF9QKEZvb1Rlc3QsIERvZXNCbGFoKSB7CisgIC8vIEluc2lkZSBh
IHRlc3QsIGFjY2VzcyB0aGUgdGVzdCBwYXJhbWV0ZXIgd2l0aCB0aGUgR2V0UGFyYW0oKSBtZXRo
b2QKKyAgLy8gb2YgdGhlIFRlc3RXaXRoUGFyYW08VD4gY2xhc3M6CisgIEVYUEVDVF9UUlVFKGZv
by5CbGFoKEdldFBhcmFtKCkpKTsKKyAgLi4uCit9CisKK1RFU1RfUChGb29UZXN0LCBIYXNCbGFo
QmxhaCkgeworICAuLi4KK30KK2BgYAorCitGaW5hbGx5LCB5b3UgY2FuIHVzZSBgSU5TVEFOVElB
VEVfVEVTVF9DQVNFX1BgIHRvIGluc3RhbnRpYXRlIHRoZSB0ZXN0CitjYXNlIHdpdGggYW55IHNl
dCBvZiBwYXJhbWV0ZXJzIHlvdSB3YW50LiBHb29nbGUgVGVzdCBkZWZpbmVzIGEgbnVtYmVyIG9m
CitmdW5jdGlvbnMgZm9yIGdlbmVyYXRpbmcgdGVzdCBwYXJhbWV0ZXJzLiBUaGV5IHJldHVybiB3
aGF0IHdlIGNhbGwKKyhzdXJwcmlzZSEpIF9wYXJhbWV0ZXIgZ2VuZXJhdG9yc18uIEhlcmUgaXMg
YSBzdW1tYXJ5IG9mIHRoZW0sCit3aGljaCBhcmUgYWxsIGluIHRoZSBgdGVzdGluZ2AgbmFtZXNw
YWNlOgorCit8IGBSYW5nZShiZWdpbiwgZW5kWywgc3RlcF0pYCB8IFlpZWxkcyB2YWx1ZXMgYHti
ZWdpbiwgYmVnaW4rc3RlcCwgYmVnaW4rc3RlcCtzdGVwLCAuLi59YC4gVGhlIHZhbHVlcyBkbyBu
b3QgaW5jbHVkZSBgZW5kYC4gYHN0ZXBgIGRlZmF1bHRzIHRvIDEuIHwKK3w6LS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tfAorfCBgVmFsdWVzKHYxLCB2MiwgLi4uLCB2TilgICAgfCBZaWVs
ZHMgdmFsdWVzIGB7djEsIHYyLCAuLi4sIHZOfWAuICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8
IGBWYWx1ZXNJbihjb250YWluZXIpYCBhbmQgYFZhbHVlc0luKGJlZ2luLCBlbmQpYCB8IFlpZWxk
cyB2YWx1ZXMgZnJvbSBhIEMtc3R5bGUgYXJyYXksIGFuIFNUTC1zdHlsZSBjb250YWluZXIsIG9y
IGFuIGl0ZXJhdG9yIHJhbmdlIGBbYmVnaW4sIGVuZClgLiBgY29udGFpbmVyYCwgYGJlZ2luYCwg
YW5kIGBlbmRgIGNhbiBiZSBleHByZXNzaW9ucyB3aG9zZSB2YWx1ZXMgYXJlIGRldGVybWluZWQg
YXQgcnVuIHRpbWUuICB8Cit8IGBCb29sKClgICAgICAgICAgICAgICAgICAgICB8IFlpZWxkcyBz
ZXF1ZW5jZSBge2ZhbHNlLCB0cnVlfWAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYENv
bWJpbmUoZzEsIGcyLCAuLi4sIGdOKWAgIHwgWWllbGRzIGFsbCBjb21iaW5hdGlvbnMgKHRoZSBD
YXJ0ZXNpYW4gcHJvZHVjdCBmb3IgdGhlIG1hdGggc2F2dnkpIG9mIHRoZSB2YWx1ZXMgZ2VuZXJh
dGVkIGJ5IHRoZSBgTmAgZ2VuZXJhdG9ycy4gVGhpcyBpcyBvbmx5IGF2YWlsYWJsZSBpZiB5b3Vy
IHN5c3RlbSBwcm92aWRlcyB0aGUgYDx0cjEvdHVwbGU+YCBoZWFkZXIuIElmIHlvdSBhcmUgc3Vy
ZSB5b3VyIHN5c3RlbSBkb2VzLCBhbmQgR29vZ2xlIFRlc3QgZGlzYWdyZWVzLCB5b3UgY2FuIG92
ZXJyaWRlIGl0IGJ5IGRlZmluaW5nIGBHVEVTVF9IQVNfVFIxX1RVUExFPTFgLiBTZWUgY29tbWVu
dHMgaW4gW2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oXSguLi9pbmNsdWRlL2d0
ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCkgZm9yIG1vcmUgaW5mb3JtYXRpb24uIHwKKworRm9y
IG1vcmUgZGV0YWlscywgc2VlIHRoZSBjb21tZW50cyBhdCB0aGUgZGVmaW5pdGlvbnMgb2YgdGhl
c2UgZnVuY3Rpb25zIGluIHRoZSBbc291cmNlIGNvZGVdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3Qt
cGFyYW0tdGVzdC5oKS4KKworVGhlIGZvbGxvd2luZyBzdGF0ZW1lbnQgd2lsbCBpbnN0YW50aWF0
ZSB0ZXN0cyBmcm9tIHRoZSBgRm9vVGVzdGAgdGVzdCBjYXNlCitlYWNoIHdpdGggcGFyYW1ldGVy
IHZhbHVlcyBgIm1lZW55ImAsIGAibWlueSJgLCBhbmQgYCJtb2UiYC4KKworYGBgCitJTlNUQU5U
SUFURV9URVNUX0NBU0VfUChJbnN0YW50aWF0aW9uTmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEZvb1Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlcygi
bWVlbnkiLCAibWlueSIsICJtb2UiKSk7CitgYGAKKworVG8gZGlzdGluZ3Vpc2ggZGlmZmVyZW50
IGluc3RhbmNlcyBvZiB0aGUgcGF0dGVybiAoeWVzLCB5b3UgY2FuCitpbnN0YW50aWF0ZSBpdCBt
b3JlIHRoYW4gb25jZSksIHRoZSBmaXJzdCBhcmd1bWVudCB0bworYElOU1RBTlRJQVRFX1RFU1Rf
Q0FTRV9QYCBpcyBhIHByZWZpeCB0aGF0IHdpbGwgYmUgYWRkZWQgdG8gdGhlIGFjdHVhbAordGVz
dCBjYXNlIG5hbWUuIFJlbWVtYmVyIHRvIHBpY2sgdW5pcXVlIHByZWZpeGVzIGZvciBkaWZmZXJl
bnQKK2luc3RhbnRpYXRpb25zLiBUaGUgdGVzdHMgZnJvbSB0aGUgaW5zdGFudGlhdGlvbiBhYm92
ZSB3aWxsIGhhdmUgdGhlc2UKK25hbWVzOgorCisgICogYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rl
c3QuRG9lc0JsYWgvMGAgZm9yIGAibWVlbnkiYAorICAqIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29U
ZXN0LkRvZXNCbGFoLzFgIGZvciBgIm1pbnkiYAorICAqIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29U
ZXN0LkRvZXNCbGFoLzJgIGZvciBgIm1vZSJgCisgICogYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rl
c3QuSGFzQmxhaEJsYWgvMGAgZm9yIGAibWVlbnkiYAorICAqIGBJbnN0YW50aWF0aW9uTmFtZS9G
b29UZXN0Lkhhc0JsYWhCbGFoLzFgIGZvciBgIm1pbnkiYAorICAqIGBJbnN0YW50aWF0aW9uTmFt
ZS9Gb29UZXN0Lkhhc0JsYWhCbGFoLzJgIGZvciBgIm1vZSJgCisKK1lvdSBjYW4gdXNlIHRoZXNl
IG5hbWVzIGluIFstLWd0ZXN0XC1maWx0ZXJdKCNydW5uaW5nLWEtc3Vic2V0LW9mLXRoZS10ZXN0
cykuCisKK1RoaXMgc3RhdGVtZW50IHdpbGwgaW5zdGFudGlhdGUgYWxsIHRlc3RzIGZyb20gYEZv
b1Rlc3RgIGFnYWluLCBlYWNoCit3aXRoIHBhcmFtZXRlciB2YWx1ZXMgYCJjYXQiYCBhbmQgYCJk
b2ciYDoKKworYGBgCitjb25zdCBjaGFyKiBwZXRzW10gPSB7ImNhdCIsICJkb2cifTsKK0lOU1RB
TlRJQVRFX1RFU1RfQ0FTRV9QKEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZSwgRm9vVGVzdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6VmFsdWVzSW4ocGV0cykpOworYGBgCisK
K1RoZSB0ZXN0cyBmcm9tIHRoZSBpbnN0YW50aWF0aW9uIGFib3ZlIHdpbGwgaGF2ZSB0aGVzZSBu
YW1lczoKKworICAqIGBBbm90aGVySW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8w
YCBmb3IgYCJjYXQiYAorICAqIGBBbm90aGVySW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2Vz
QmxhaC8xYCBmb3IgYCJkb2ciYAorICAqIGBBbm90aGVySW5zdGFudGlhdGlvbk5hbWUvRm9vVGVz
dC5IYXNCbGFoQmxhaC8wYCBmb3IgYCJjYXQiYAorICAqIGBBbm90aGVySW5zdGFudGlhdGlvbk5h
bWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8xYCBmb3IgYCJkb2ciYAorCitQbGVhc2Ugbm90ZSB0aGF0
IGBJTlNUQU5USUFURV9URVNUX0NBU0VfUGAgd2lsbCBpbnN0YW50aWF0ZSBfYWxsXwordGVzdHMg
aW4gdGhlIGdpdmVuIHRlc3QgY2FzZSwgd2hldGhlciB0aGVpciBkZWZpbml0aW9ucyBjb21lIGJl
Zm9yZSBvcgorX2FmdGVyXyB0aGUgYElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QYCBzdGF0ZW1lbnQu
CisKK1lvdSBjYW4gc2VlCitbdGhlc2VdKC4uL3NhbXBsZXMvc2FtcGxlN191bml0dGVzdC5jYykK
K1tmaWxlc10oLi4vc2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNjKSBmb3IgbW9yZSBleGFtcGxl
cy4KKworX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzIChyZXF1aXJlcyBNU1ZDIDguMCBv
ciBhYm92ZSksIE1hYzsgc2luY2UgdmVyc2lvbiAxLjIuMC4KKworIyMgQ3JlYXRpbmcgVmFsdWUt
UGFyYW1ldGVyaXplZCBBYnN0cmFjdCBUZXN0cyAjIworCitJbiB0aGUgYWJvdmUsIHdlIGRlZmlu
ZSBhbmQgaW5zdGFudGlhdGUgYEZvb1Rlc3RgIGluIHRoZSBzYW1lIHNvdXJjZQorZmlsZS4gU29t
ZXRpbWVzIHlvdSBtYXkgd2FudCB0byBkZWZpbmUgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBp
biBhCitsaWJyYXJ5IGFuZCBsZXQgb3RoZXIgcGVvcGxlIGluc3RhbnRpYXRlIHRoZW0gbGF0ZXIu
IFRoaXMgcGF0dGVybiBpcwora25vd24gYXMgPGk+YWJzdHJhY3QgdGVzdHM8L2k+LiBBcyBhbiBl
eGFtcGxlIG9mIGl0cyBhcHBsaWNhdGlvbiwgd2hlbiB5b3UKK2FyZSBkZXNpZ25pbmcgYW4gaW50
ZXJmYWNlIHlvdSBjYW4gd3JpdGUgYSBzdGFuZGFyZCBzdWl0ZSBvZiBhYnN0cmFjdAordGVzdHMg
KHBlcmhhcHMgdXNpbmcgYSBmYWN0b3J5IGZ1bmN0aW9uIGFzIHRoZSB0ZXN0IHBhcmFtZXRlcikg
dGhhdAorYWxsIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgaW50ZXJmYWNlIGFyZSBleHBlY3RlZCB0
byBwYXNzLiBXaGVuCitzb21lb25lIGltcGxlbWVudHMgdGhlIGludGVyZmFjZSwgaGUgY2FuIGlu
c3RhbnRpYXRlIHlvdXIgc3VpdGUgdG8gZ2V0CithbGwgdGhlIGludGVyZmFjZS1jb25mb3JtYW5j
ZSB0ZXN0cyBmb3IgZnJlZS4KKworVG8gZGVmaW5lIGFic3RyYWN0IHRlc3RzLCB5b3Ugc2hvdWxk
IG9yZ2FuaXplIHlvdXIgY29kZSBsaWtlIHRoaXM6CisKKyAgMS4gUHV0IHRoZSBkZWZpbml0aW9u
IG9mIHRoZSBwYXJhbWV0ZXJpemVkIHRlc3QgZml4dHVyZSBjbGFzcyAoZS5nLiBgRm9vVGVzdGAp
IGluIGEgaGVhZGVyIGZpbGUsIHNheSBgZm9vX3BhcmFtX3Rlc3QuaGAuIFRoaW5rIG9mIHRoaXMg
YXMgX2RlY2xhcmluZ18geW91ciBhYnN0cmFjdCB0ZXN0cy4KKyAgMS4gUHV0IHRoZSBgVEVTVF9Q
YCBkZWZpbml0aW9ucyBpbiBgZm9vX3BhcmFtX3Rlc3QuY2NgLCB3aGljaCBpbmNsdWRlcyBgZm9v
X3BhcmFtX3Rlc3QuaGAuIFRoaW5rIG9mIHRoaXMgYXMgX2ltcGxlbWVudGluZ18geW91ciBhYnN0
cmFjdCB0ZXN0cy4KKworT25jZSB0aGV5IGFyZSBkZWZpbmVkLCB5b3UgY2FuIGluc3RhbnRpYXRl
IHRoZW0gYnkgaW5jbHVkaW5nCitgZm9vX3BhcmFtX3Rlc3QuaGAsIGludm9raW5nIGBJTlNUQU5U
SUFURV9URVNUX0NBU0VfUCgpYCwgYW5kIGxpbmtpbmcKK3dpdGggYGZvb19wYXJhbV90ZXN0LmNj
YC4gWW91IGNhbiBpbnN0YW50aWF0ZSB0aGUgc2FtZSBhYnN0cmFjdCB0ZXN0CitjYXNlIG11bHRp
cGxlIHRpbWVzLCBwb3NzaWJseSBpbiBkaWZmZXJlbnQgc291cmNlIGZpbGVzLgorCisjIFR5cGVk
IFRlc3RzICMKKworU3VwcG9zZSB5b3UgaGF2ZSBtdWx0aXBsZSBpbXBsZW1lbnRhdGlvbnMgb2Yg
dGhlIHNhbWUgaW50ZXJmYWNlIGFuZAord2FudCB0byBtYWtlIHN1cmUgdGhhdCBhbGwgb2YgdGhl
bSBzYXRpc2Z5IHNvbWUgY29tbW9uIHJlcXVpcmVtZW50cy4KK09yLCB5b3UgbWF5IGhhdmUgZGVm
aW5lZCBzZXZlcmFsIHR5cGVzIHRoYXQgYXJlIHN1cHBvc2VkIHRvIGNvbmZvcm0gdG8KK3RoZSBz
YW1lICJjb25jZXB0IiBhbmQgeW91IHdhbnQgdG8gdmVyaWZ5IGl0LiAgSW4gYm90aCBjYXNlcywg
eW91IHdhbnQKK3RoZSBzYW1lIHRlc3QgbG9naWMgcmVwZWF0ZWQgZm9yIGRpZmZlcmVudCB0eXBl
cy4KKworV2hpbGUgeW91IGNhbiB3cml0ZSBvbmUgYFRFU1RgIG9yIGBURVNUX0ZgIGZvciBlYWNo
IHR5cGUgeW91IHdhbnQgdG8KK3Rlc3QgKGFuZCB5b3UgbWF5IGV2ZW4gZmFjdG9yIHRoZSB0ZXN0
IGxvZ2ljIGludG8gYSBmdW5jdGlvbiB0ZW1wbGF0ZQordGhhdCB5b3UgaW52b2tlIGZyb20gdGhl
IGBURVNUYCksIGl0J3MgdGVkaW91cyBhbmQgZG9lc24ndCBzY2FsZToKK2lmIHlvdSB3YW50IF9t
XyB0ZXN0cyBvdmVyIF9uXyB0eXBlcywgeW91J2xsIGVuZCB1cCB3cml0aW5nIF9tXCpuXworYFRF
U1Rgcy4KKworX1R5cGVkIHRlc3RzXyBhbGxvdyB5b3UgdG8gcmVwZWF0IHRoZSBzYW1lIHRlc3Qg
bG9naWMgb3ZlciBhIGxpc3Qgb2YKK3R5cGVzLiAgWW91IG9ubHkgbmVlZCB0byB3cml0ZSB0aGUg
dGVzdCBsb2dpYyBvbmNlLCBhbHRob3VnaCB5b3UgbXVzdAora25vdyB0aGUgdHlwZSBsaXN0IHdo
ZW4gd3JpdGluZyB0eXBlZCB0ZXN0cy4gIEhlcmUncyBob3cgeW91IGRvIGl0OgorCitGaXJzdCwg
ZGVmaW5lIGEgZml4dHVyZSBjbGFzcyB0ZW1wbGF0ZS4gIEl0IHNob3VsZCBiZSBwYXJhbWV0ZXJp
emVkCitieSBhIHR5cGUuICBSZW1lbWJlciB0byBkZXJpdmUgaXQgZnJvbSBgOjp0ZXN0aW5nOjpU
ZXN0YDoKKworYGBgCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIEZvb1Rlc3QgOiBwdWJs
aWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyBwdWJsaWM6CisgIC4uLgorICB0eXBlZGVmIHN0ZDo6bGlz
dDxUPiBMaXN0OworICBzdGF0aWMgVCBzaGFyZWRfOworICBUIHZhbHVlXzsKK307CitgYGAKKwor
TmV4dCwgYXNzb2NpYXRlIGEgbGlzdCBvZiB0eXBlcyB3aXRoIHRoZSB0ZXN0IGNhc2UsIHdoaWNo
IHdpbGwgYmUKK3JlcGVhdGVkIGZvciBlYWNoIHR5cGUgaW4gdGhlIGxpc3Q6CisKK2BgYAordHlw
ZWRlZiA6OnRlc3Rpbmc6OlR5cGVzPGNoYXIsIGludCwgdW5zaWduZWQgaW50PiBNeVR5cGVzOwor
VFlQRURfVEVTVF9DQVNFKEZvb1Rlc3QsIE15VHlwZXMpOworYGBgCisKK1RoZSBgdHlwZWRlZmAg
aXMgbmVjZXNzYXJ5IGZvciB0aGUgYFRZUEVEX1RFU1RfQ0FTRWAgbWFjcm8gdG8gcGFyc2UKK2Nv
cnJlY3RseS4gIE90aGVyd2lzZSB0aGUgY29tcGlsZXIgd2lsbCB0aGluayB0aGF0IGVhY2ggY29t
bWEgaW4gdGhlCit0eXBlIGxpc3QgaW50cm9kdWNlcyBhIG5ldyBtYWNybyBhcmd1bWVudC4KKwor
VGhlbiwgdXNlIGBUWVBFRF9URVNUKClgIGluc3RlYWQgb2YgYFRFU1RfRigpYCB0byBkZWZpbmUg
YSB0eXBlZCB0ZXN0Citmb3IgdGhpcyB0ZXN0IGNhc2UuICBZb3UgY2FuIHJlcGVhdCB0aGlzIGFz
IG1hbnkgdGltZXMgYXMgeW91IHdhbnQ6CisKK2BgYAorVFlQRURfVEVTVChGb29UZXN0LCBEb2Vz
QmxhaCkgeworICAvLyBJbnNpZGUgYSB0ZXN0LCByZWZlciB0byB0aGUgc3BlY2lhbCBuYW1lIFR5
cGVQYXJhbSB0byBnZXQgdGhlIHR5cGUKKyAgLy8gcGFyYW1ldGVyLiAgU2luY2Ugd2UgYXJlIGlu
c2lkZSBhIGRlcml2ZWQgY2xhc3MgdGVtcGxhdGUsIEMrKyByZXF1aXJlcworICAvLyB1cyB0byB2
aXNpdCB0aGUgbWVtYmVycyBvZiBGb29UZXN0IHZpYSAndGhpcycuCisgIFR5cGVQYXJhbSBuID0g
dGhpcy0+dmFsdWVfOworCisgIC8vIFRvIHZpc2l0IHN0YXRpYyBtZW1iZXJzIG9mIHRoZSBmaXh0
dXJlLCBhZGQgdGhlICdUZXN0Rml4dHVyZTo6JworICAvLyBwcmVmaXguCisgIG4gKz0gVGVzdEZp
eHR1cmU6OnNoYXJlZF87CisKKyAgLy8gVG8gcmVmZXIgdG8gdHlwZWRlZnMgaW4gdGhlIGZpeHR1
cmUsIGFkZCB0aGUgJ3R5cGVuYW1lIFRlc3RGaXh0dXJlOjonCisgIC8vIHByZWZpeC4gIFRoZSAn
dHlwZW5hbWUnIGlzIHJlcXVpcmVkIHRvIHNhdGlzZnkgdGhlIGNvbXBpbGVyLgorICB0eXBlbmFt
ZSBUZXN0Rml4dHVyZTo6TGlzdCB2YWx1ZXM7CisgIHZhbHVlcy5wdXNoX2JhY2sobik7CisgIC4u
LgorfQorCitUWVBFRF9URVNUKEZvb1Rlc3QsIEhhc1Byb3BlcnR5QSkgeyAuLi4gfQorYGBgCisK
K1lvdSBjYW4gc2VlIGBzYW1wbGVzL3NhbXBsZTZfdW5pdHRlc3QuY2NgIGZvciBhIGNvbXBsZXRl
IGV4YW1wbGUuCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cyAocmVxdWlyZXMgTVNW
QyA4LjAgb3IgYWJvdmUpLCBNYWM7CitzaW5jZSB2ZXJzaW9uIDEuMS4wLgorCisjIFR5cGUtUGFy
YW1ldGVyaXplZCBUZXN0cyAjCisKK19UeXBlLXBhcmFtZXRlcml6ZWQgdGVzdHNfIGFyZSBsaWtl
IHR5cGVkIHRlc3RzLCBleGNlcHQgdGhhdCB0aGV5Citkb24ndCByZXF1aXJlIHlvdSB0byBrbm93
IHRoZSBsaXN0IG9mIHR5cGVzIGFoZWFkIG9mIHRpbWUuICBJbnN0ZWFkLAoreW91IGNhbiBkZWZp
bmUgdGhlIHRlc3QgbG9naWMgZmlyc3QgYW5kIGluc3RhbnRpYXRlIGl0IHdpdGggZGlmZmVyZW50
Cit0eXBlIGxpc3RzIGxhdGVyLiAgWW91IGNhbiBldmVuIGluc3RhbnRpYXRlIGl0IG1vcmUgdGhh
biBvbmNlIGluIHRoZQorc2FtZSBwcm9ncmFtLgorCitJZiB5b3UgYXJlIGRlc2lnbmluZyBhbiBp
bnRlcmZhY2Ugb3IgY29uY2VwdCwgeW91IGNhbiBkZWZpbmUgYSBzdWl0ZQorb2YgdHlwZS1wYXJh
bWV0ZXJpemVkIHRlc3RzIHRvIHZlcmlmeSBwcm9wZXJ0aWVzIHRoYXQgYW55IHZhbGlkCitpbXBs
ZW1lbnRhdGlvbiBvZiB0aGUgaW50ZXJmYWNlL2NvbmNlcHQgc2hvdWxkIGhhdmUuICBUaGVuLCB0
aGUgYXV0aG9yCitvZiBlYWNoIGltcGxlbWVudGF0aW9uIGNhbiBqdXN0IGluc3RhbnRpYXRlIHRo
ZSB0ZXN0IHN1aXRlIHdpdGggaGlzCit0eXBlIHRvIHZlcmlmeSB0aGF0IGl0IGNvbmZvcm1zIHRv
IHRoZSByZXF1aXJlbWVudHMsIHdpdGhvdXQgaGF2aW5nIHRvCit3cml0ZSBzaW1pbGFyIHRlc3Rz
IHJlcGVhdGVkbHkuICBIZXJlJ3MgYW4gZXhhbXBsZToKKworRmlyc3QsIGRlZmluZSBhIGZpeHR1
cmUgY2xhc3MgdGVtcGxhdGUsIGFzIHdlIGRpZCB3aXRoIHR5cGVkIHRlc3RzOgorCitgYGAKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRl
c3QgeworICAuLi4KK307CitgYGAKKworTmV4dCwgZGVjbGFyZSB0aGF0IHlvdSB3aWxsIGRlZmlu
ZSBhIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0IGNhc2U6CisKK2BgYAorVFlQRURfVEVTVF9DQVNF
X1AoRm9vVGVzdCk7CitgYGAKKworVGhlIGBfUGAgc3VmZml4IGlzIGZvciAicGFyYW1ldGVyaXpl
ZCIgb3IgInBhdHRlcm4iLCB3aGljaGV2ZXIgeW91CitwcmVmZXIgdG8gdGhpbmsuCisKK1RoZW4s
IHVzZSBgVFlQRURfVEVTVF9QKClgIHRvIGRlZmluZSBhIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0
LiAgWW91CitjYW4gcmVwZWF0IHRoaXMgYXMgbWFueSB0aW1lcyBhcyB5b3Ugd2FudDoKKworYGBg
CitUWVBFRF9URVNUX1AoRm9vVGVzdCwgRG9lc0JsYWgpIHsKKyAgLy8gSW5zaWRlIGEgdGVzdCwg
cmVmZXIgdG8gVHlwZVBhcmFtIHRvIGdldCB0aGUgdHlwZSBwYXJhbWV0ZXIuCisgIFR5cGVQYXJh
bSBuID0gMDsKKyAgLi4uCit9CisKK1RZUEVEX1RFU1RfUChGb29UZXN0LCBIYXNQcm9wZXJ0eUEp
IHsgLi4uIH0KK2BgYAorCitOb3cgdGhlIHRyaWNreSBwYXJ0OiB5b3UgbmVlZCB0byByZWdpc3Rl
ciBhbGwgdGVzdCBwYXR0ZXJucyB1c2luZyB0aGUKK2BSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0Vf
UGAgbWFjcm8gYmVmb3JlIHlvdSBjYW4gaW5zdGFudGlhdGUgdGhlbS4KK1RoZSBmaXJzdCBhcmd1
bWVudCBvZiB0aGUgbWFjcm8gaXMgdGhlIHRlc3QgY2FzZSBuYW1lOyB0aGUgcmVzdCBhcmUKK3Ro
ZSBuYW1lcyBvZiB0aGUgdGVzdHMgaW4gdGhpcyB0ZXN0IGNhc2U6CisKK2BgYAorUkVHSVNURVJf
VFlQRURfVEVTVF9DQVNFX1AoRm9vVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIERv
ZXNCbGFoLCBIYXNQcm9wZXJ0eUEpOworYGBgCisKK0ZpbmFsbHksIHlvdSBhcmUgZnJlZSB0byBp
bnN0YW50aWF0ZSB0aGUgcGF0dGVybiB3aXRoIHRoZSB0eXBlcyB5b3UKK3dhbnQuICBJZiB5b3Ug
cHV0IHRoZSBhYm92ZSBjb2RlIGluIGEgaGVhZGVyIGZpbGUsIHlvdSBjYW4gYCNpbmNsdWRlYAor
aXQgaW4gbXVsdGlwbGUgQysrIHNvdXJjZSBmaWxlcyBhbmQgaW5zdGFudGlhdGUgaXQgbXVsdGlw
bGUgdGltZXMuCisKK2BgYAordHlwZWRlZiA6OnRlc3Rpbmc6OlR5cGVzPGNoYXIsIGludCwgdW5z
aWduZWQgaW50PiBNeVR5cGVzOworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZv
b1Rlc3QsIE15VHlwZXMpOworYGBgCisKK1RvIGRpc3Rpbmd1aXNoIGRpZmZlcmVudCBpbnN0YW5j
ZXMgb2YgdGhlIHBhdHRlcm4sIHRoZSBmaXJzdCBhcmd1bWVudAordG8gdGhlIGBJTlNUQU5USUFU
RV9UWVBFRF9URVNUX0NBU0VfUGAgbWFjcm8gaXMgYSBwcmVmaXggdGhhdCB3aWxsIGJlCithZGRl
ZCB0byB0aGUgYWN0dWFsIHRlc3QgY2FzZSBuYW1lLiAgUmVtZW1iZXIgdG8gcGljayB1bmlxdWUg
cHJlZml4ZXMKK2ZvciBkaWZmZXJlbnQgaW5zdGFuY2VzLgorCitJbiB0aGUgc3BlY2lhbCBjYXNl
IHdoZXJlIHRoZSB0eXBlIGxpc3QgY29udGFpbnMgb25seSBvbmUgdHlwZSwgeW91CitjYW4gd3Jp
dGUgdGhhdCB0eXBlIGRpcmVjdGx5IHdpdGhvdXQgYDo6dGVzdGluZzo6VHlwZXM8Li4uPmAsIGxp
a2UgdGhpczoKKworYGBgCitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVz
dCwgaW50KTsKK2BgYAorCitZb3UgY2FuIHNlZSBgc2FtcGxlcy9zYW1wbGU2X3VuaXR0ZXN0LmNj
YCBmb3IgYSBjb21wbGV0ZSBleGFtcGxlLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRv
d3MgKHJlcXVpcmVzIE1TVkMgOC4wIG9yIGFib3ZlKSwgTWFjOworc2luY2UgdmVyc2lvbiAxLjEu
MC4KKworIyBUZXN0aW5nIFByaXZhdGUgQ29kZSAjCisKK0lmIHlvdSBjaGFuZ2UgeW91ciBzb2Z0
d2FyZSdzIGludGVybmFsIGltcGxlbWVudGF0aW9uLCB5b3VyIHRlc3RzIHNob3VsZCBub3QKK2Jy
ZWFrIGFzIGxvbmcgYXMgdGhlIGNoYW5nZSBpcyBub3Qgb2JzZXJ2YWJsZSBieSB1c2Vycy4gVGhl
cmVmb3JlLCBwZXIgdGhlCitfYmxhY2stYm94IHRlc3RpbmcgcHJpbmNpcGxlXywgbW9zdCBvZiB0
aGUgdGltZSB5b3Ugc2hvdWxkIHRlc3QgeW91ciBjb2RlCit0aHJvdWdoIGl0cyBwdWJsaWMgaW50
ZXJmYWNlcy4KKworSWYgeW91IHN0aWxsIGZpbmQgeW91cnNlbGYgbmVlZGluZyB0byB0ZXN0IGlu
dGVybmFsIGltcGxlbWVudGF0aW9uIGNvZGUsCitjb25zaWRlciBpZiB0aGVyZSdzIGEgYmV0dGVy
IGRlc2lnbiB0aGF0IHdvdWxkbid0IHJlcXVpcmUgeW91IHRvIGRvIHNvLiBJZiB5b3UKK2Fic29s
dXRlbHkgaGF2ZSB0byB0ZXN0IG5vbi1wdWJsaWMgaW50ZXJmYWNlIGNvZGUgdGhvdWdoLCB5b3Ug
Y2FuLiBUaGVyZSBhcmUKK3R3byBjYXNlcyB0byBjb25zaWRlcjoKKworICAqIFN0YXRpYyBmdW5j
dGlvbnMgKF9ub3RfIHRoZSBzYW1lIGFzIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb25zISkgb3IgdW5u
YW1lZCBuYW1lc3BhY2VzLCBhbmQKKyAgKiBQcml2YXRlIG9yIHByb3RlY3RlZCBjbGFzcyBtZW1i
ZXJzCisKKyMjIFN0YXRpYyBGdW5jdGlvbnMgIyMKKworQm90aCBzdGF0aWMgZnVuY3Rpb25zIGFu
ZCBkZWZpbml0aW9ucy9kZWNsYXJhdGlvbnMgaW4gYW4gdW5uYW1lZCBuYW1lc3BhY2UgYXJlCitv
bmx5IHZpc2libGUgd2l0aGluIHRoZSBzYW1lIHRyYW5zbGF0aW9uIHVuaXQuIFRvIHRlc3QgdGhl
bSwgeW91IGNhbiBgI2luY2x1ZGVgCit0aGUgZW50aXJlIGAuY2NgIGZpbGUgYmVpbmcgdGVzdGVk
IGluIHlvdXIgYCpfdGVzdC5jY2AgZmlsZS4gKGAjaW5jbHVkZWBpbmcgYC5jY2AKK2ZpbGVzIGlz
IG5vdCBhIGdvb2Qgd2F5IHRvIHJldXNlIGNvZGUgLSB5b3Ugc2hvdWxkIG5vdCBkbyB0aGlzIGlu
IHByb2R1Y3Rpb24KK2NvZGUhKQorCitIb3dldmVyLCBhIGJldHRlciBhcHByb2FjaCBpcyB0byBt
b3ZlIHRoZSBwcml2YXRlIGNvZGUgaW50byB0aGUKK2Bmb286OmludGVybmFsYCBuYW1lc3BhY2Us
IHdoZXJlIGBmb29gIGlzIHRoZSBuYW1lc3BhY2UgeW91ciBwcm9qZWN0IG5vcm1hbGx5Cit1c2Vz
LCBhbmQgcHV0IHRoZSBwcml2YXRlIGRlY2xhcmF0aW9ucyBpbiBhIGAqLWludGVybmFsLmhgIGZp
bGUuIFlvdXIKK3Byb2R1Y3Rpb24gYC5jY2AgZmlsZXMgYW5kIHlvdXIgdGVzdHMgYXJlIGFsbG93
ZWQgdG8gaW5jbHVkZSB0aGlzIGludGVybmFsCitoZWFkZXIsIGJ1dCB5b3VyIGNsaWVudHMgYXJl
IG5vdC4gVGhpcyB3YXksIHlvdSBjYW4gZnVsbHkgdGVzdCB5b3VyIGludGVybmFsCitpbXBsZW1l
bnRhdGlvbiB3aXRob3V0IGxlYWtpbmcgaXQgdG8geW91ciBjbGllbnRzLgorCisjIyBQcml2YXRl
IENsYXNzIE1lbWJlcnMgIyMKKworUHJpdmF0ZSBjbGFzcyBtZW1iZXJzIGFyZSBvbmx5IGFjY2Vz
c2libGUgZnJvbSB3aXRoaW4gdGhlIGNsYXNzIG9yIGJ5IGZyaWVuZHMuCitUbyBhY2Nlc3MgYSBj
bGFzcycgcHJpdmF0ZSBtZW1iZXJzLCB5b3UgY2FuIGRlY2xhcmUgeW91ciB0ZXN0IGZpeHR1cmUg
YXMgYQorZnJpZW5kIHRvIHRoZSBjbGFzcyBhbmQgZGVmaW5lIGFjY2Vzc29ycyBpbiB5b3VyIGZp
eHR1cmUuIFRlc3RzIHVzaW5nIHRoZQorZml4dHVyZSBjYW4gdGhlbiBhY2Nlc3MgdGhlIHByaXZh
dGUgbWVtYmVycyBvZiB5b3VyIHByb2R1Y3Rpb24gY2xhc3MgdmlhIHRoZQorYWNjZXNzb3JzIGlu
IHRoZSBmaXh0dXJlLiBOb3RlIHRoYXQgZXZlbiB0aG91Z2ggeW91ciBmaXh0dXJlIGlzIGEgZnJp
ZW5kIHRvCit5b3VyIHByb2R1Y3Rpb24gY2xhc3MsIHlvdXIgdGVzdHMgYXJlIG5vdCBhdXRvbWF0
aWNhbGx5IGZyaWVuZHMgdG8gaXQsIGFzIHRoZXkKK2FyZSB0ZWNobmljYWxseSBkZWZpbmVkIGlu
IHN1Yi1jbGFzc2VzIG9mIHRoZSBmaXh0dXJlLgorCitBbm90aGVyIHdheSB0byB0ZXN0IHByaXZh
dGUgbWVtYmVycyBpcyB0byByZWZhY3RvciB0aGVtIGludG8gYW4gaW1wbGVtZW50YXRpb24KK2Ns
YXNzLCB3aGljaCBpcyB0aGVuIGRlY2xhcmVkIGluIGEgYCotaW50ZXJuYWwuaGAgZmlsZS4gWW91
ciBjbGllbnRzIGFyZW4ndAorYWxsb3dlZCB0byBpbmNsdWRlIHRoaXMgaGVhZGVyIGJ1dCB5b3Vy
IHRlc3RzIGNhbi4gU3VjaCBpcyBjYWxsZWQgdGhlIFBpbXBsCisoUHJpdmF0ZSBJbXBsZW1lbnRh
dGlvbikgaWRpb20uCisKK09yLCB5b3UgY2FuIGRlY2xhcmUgYW4gaW5kaXZpZHVhbCB0ZXN0IGFz
IGEgZnJpZW5kIG9mIHlvdXIgY2xhc3MgYnkgYWRkaW5nIHRoaXMKK2xpbmUgaW4gdGhlIGNsYXNz
IGJvZHk6CisKK2BgYAorRlJJRU5EX1RFU1QoVGVzdENhc2VOYW1lLCBUZXN0TmFtZSk7CitgYGAK
KworRm9yIGV4YW1wbGUsCitgYGAKKy8vIGZvby5oCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3RfcHJv
ZC5oIgorCisvLyBEZWZpbmVzIEZSSUVORF9URVNULgorY2xhc3MgRm9vIHsKKyAgLi4uCisgcHJp
dmF0ZToKKyAgRlJJRU5EX1RFU1QoRm9vVGVzdCwgQmFyUmV0dXJuc1plcm9Pbk51bGwpOworICBp
bnQgQmFyKHZvaWQqIHgpOworfTsKKworLy8gZm9vX3Rlc3QuY2MKKy4uLgorVEVTVChGb29UZXN0
LCBCYXJSZXR1cm5zWmVyb09uTnVsbCkgeworICBGb28gZm9vOworICBFWFBFQ1RfRVEoMCwgZm9v
LkJhcihOVUxMKSk7CisgIC8vIFVzZXMgRm9vJ3MgcHJpdmF0ZSBtZW1iZXIgQmFyKCkuCit9Citg
YGAKKworUGF5IHNwZWNpYWwgYXR0ZW50aW9uIHdoZW4geW91ciBjbGFzcyBpcyBkZWZpbmVkIGlu
IGEgbmFtZXNwYWNlLCBhcyB5b3Ugc2hvdWxkCitkZWZpbmUgeW91ciB0ZXN0IGZpeHR1cmVzIGFu
ZCB0ZXN0cyBpbiB0aGUgc2FtZSBuYW1lc3BhY2UgaWYgeW91IHdhbnQgdGhlbSB0bworYmUgZnJp
ZW5kcyBvZiB5b3VyIGNsYXNzLiBGb3IgZXhhbXBsZSwgaWYgdGhlIGNvZGUgdG8gYmUgdGVzdGVk
IGxvb2tzIGxpa2U6CisKK2BgYAorbmFtZXNwYWNlIG15X25hbWVzcGFjZSB7CisKK2NsYXNzIEZv
byB7CisgIGZyaWVuZCBjbGFzcyBGb29UZXN0OworICBGUklFTkRfVEVTVChGb29UZXN0LCBCYXIp
OworICBGUklFTkRfVEVTVChGb29UZXN0LCBCYXopOworICAuLi4KKyAgZGVmaW5pdGlvbiBvZiB0
aGUgY2xhc3MgRm9vCisgIC4uLgorfTsKKworfSAgLy8gbmFtZXNwYWNlIG15X25hbWVzcGFjZQor
YGBgCisKK1lvdXIgdGVzdCBjb2RlIHNob3VsZCBiZSBzb21ldGhpbmcgbGlrZToKKworYGBgCitu
YW1lc3BhY2UgbXlfbmFtZXNwYWNlIHsKK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5n
OjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIC4uLgorfTsKKworVEVTVF9GKEZvb1Rlc3QsIEJhcikg
eyAuLi4gfQorVEVTVF9GKEZvb1Rlc3QsIEJheikgeyAuLi4gfQorCit9ICAvLyBuYW1lc3BhY2Ug
bXlfbmFtZXNwYWNlCitgYGAKKworIyBDYXRjaGluZyBGYWlsdXJlcyAjCisKK0lmIHlvdSBhcmUg
YnVpbGRpbmcgYSB0ZXN0aW5nIHV0aWxpdHkgb24gdG9wIG9mIEdvb2dsZSBUZXN0LCB5b3UnbGwK
K3dhbnQgdG8gdGVzdCB5b3VyIHV0aWxpdHkuICBXaGF0IGZyYW1ld29yayB3b3VsZCB5b3UgdXNl
IHRvIHRlc3QgaXQ/CitHb29nbGUgVGVzdCwgb2YgY291cnNlLgorCitUaGUgY2hhbGxlbmdlIGlz
IHRvIHZlcmlmeSB0aGF0IHlvdXIgdGVzdGluZyB1dGlsaXR5IHJlcG9ydHMgZmFpbHVyZXMKK2Nv
cnJlY3RseS4gIEluIGZyYW1ld29ya3MgdGhhdCByZXBvcnQgYSBmYWlsdXJlIGJ5IHRocm93aW5n
IGFuCitleGNlcHRpb24sIHlvdSBjb3VsZCBjYXRjaCB0aGUgZXhjZXB0aW9uIGFuZCBhc3NlcnQg
b24gaXQuICBCdXQgR29vZ2xlCitUZXN0IGRvZXNuJ3QgdXNlIGV4Y2VwdGlvbnMsIHNvIGhvdyBk
byB3ZSB0ZXN0IHRoYXQgYSBwaWVjZSBvZiBjb2RlCitnZW5lcmF0ZXMgYW4gZXhwZWN0ZWQgZmFp
bHVyZT8KKworYCJndGVzdC9ndGVzdC1zcGkuaCJgIGNvbnRhaW5zIHNvbWUgY29uc3RydWN0cyB0
byBkbyB0aGlzLiAgQWZ0ZXIKK2AjaW5jbHVkZWBpbmcgdGhpcyBoZWFkZXIsIHlvdSBjYW4gdXNl
CisKK3wgYEVYUEVDVF9GQVRBTF9GQUlMVVJFKGBfc3RhdGVtZW50LCBzdWJzdHJpbmdfYCk7YCB8
Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAor
Cit0byBhc3NlcnQgdGhhdCBfc3RhdGVtZW50XyBnZW5lcmF0ZXMgYSBmYXRhbCAoZS5nLiBgQVNT
RVJUXypgKSBmYWlsdXJlCit3aG9zZSBtZXNzYWdlIGNvbnRhaW5zIHRoZSBnaXZlbiBfc3Vic3Ry
aW5nXywgb3IgdXNlCisKK3wgYEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKGBfc3RhdGVtZW50LCBz
dWJzdHJpbmdfYCk7YCB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tfAorCitpZiB5b3UgYXJlIGV4cGVjdGluZyBhIG5vbi1mYXRhbCAoZS5n
LiBgRVhQRUNUXypgKSBmYWlsdXJlLgorCitGb3IgdGVjaG5pY2FsIHJlYXNvbnMsIHRoZXJlIGFy
ZSBzb21lIGNhdmVhdHM6CisKKyAgMS4gWW91IGNhbm5vdCBzdHJlYW0gYSBmYWlsdXJlIG1lc3Nh
Z2UgdG8gZWl0aGVyIG1hY3JvLgorICAxLiBfc3RhdGVtZW50XyBpbiBgRVhQRUNUX0ZBVEFMX0ZB
SUxVUkUoKWAgY2Fubm90IHJlZmVyZW5jZSBsb2NhbCBub24tc3RhdGljIHZhcmlhYmxlcyBvciBu
b24tc3RhdGljIG1lbWJlcnMgb2YgYHRoaXNgIG9iamVjdC4KKyAgMS4gX3N0YXRlbWVudF8gaW4g
YEVYUEVDVF9GQVRBTF9GQUlMVVJFKClgIGNhbm5vdCByZXR1cm4gYSB2YWx1ZS4KKworX05vdGU6
XyBHb29nbGUgVGVzdCBpcyBkZXNpZ25lZCB3aXRoIHRocmVhZHMgaW4gbWluZC4gIE9uY2UgdGhl
CitzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcyBpbiBgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBv
cnQuaCJgIGhhdmUKK2JlZW4gaW1wbGVtZW50ZWQsIEdvb2dsZSBUZXN0IHdpbGwgYmVjb21lIHRo
cmVhZC1zYWZlLCBtZWFuaW5nIHRoYXQKK3lvdSBjYW4gdGhlbiB1c2UgYXNzZXJ0aW9ucyBpbiBt
dWx0aXBsZSB0aHJlYWRzIGNvbmN1cnJlbnRseS4gIEJlZm9yZQorCit0aGF0LCBob3dldmVyLCBH
b29nbGUgVGVzdCBvbmx5IHN1cHBvcnRzIHNpbmdsZS10aHJlYWRlZCB1c2FnZS4gIE9uY2UKK3Ro
cmVhZC1zYWZlLCBgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKWAgYW5kIGBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRSgpYAord2lsbCBjYXB0dXJlIGZhaWx1cmVzIGluIHRoZSBjdXJyZW50IHRocmVhZCBv
bmx5LiBJZiBfc3RhdGVtZW50XworY3JlYXRlcyBuZXcgdGhyZWFkcywgZmFpbHVyZXMgaW4gdGhl
c2UgdGhyZWFkcyB3aWxsIGJlIGlnbm9yZWQuICBJZgoreW91IHdhbnQgdG8gY2FwdHVyZSBmYWls
dXJlcyBmcm9tIGFsbCB0aHJlYWRzIGluc3RlYWQsIHlvdSBzaG91bGQgdXNlCit0aGUgZm9sbG93
aW5nIG1hY3JvczoKKworfCBgRVhQRUNUX0ZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoYF9z
dGF0ZW1lbnQsIHN1YnN0cmluZ19gKTtgIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Cit8IGBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUyhgX3N0YXRlbWVudCwgc3Vic3RyaW5nX2ApO2AgfAor
CisjIEdldHRpbmcgdGhlIEN1cnJlbnQgVGVzdCdzIE5hbWUgIworCitTb21ldGltZXMgYSBmdW5j
dGlvbiBtYXkgbmVlZCB0byBrbm93IHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50bHkgcnVubmluZyB0
ZXN0LgorRm9yIGV4YW1wbGUsIHlvdSBtYXkgYmUgdXNpbmcgdGhlIGBTZXRVcCgpYCBtZXRob2Qg
b2YgeW91ciB0ZXN0IGZpeHR1cmUgdG8gc2V0Cit0aGUgZ29sZGVuIGZpbGUgbmFtZSBiYXNlZCBv
biB3aGljaCB0ZXN0IGlzIHJ1bm5pbmcuIFRoZSBgOjp0ZXN0aW5nOjpUZXN0SW5mb2AKK2NsYXNz
IGhhcyB0aGlzIGluZm9ybWF0aW9uOgorCitgYGAKK25hbWVzcGFjZSB0ZXN0aW5nIHsKKworY2xh
c3MgVGVzdEluZm8geworIHB1YmxpYzoKKyAgLy8gUmV0dXJucyB0aGUgdGVzdCBjYXNlIG5hbWUg
YW5kIHRoZSB0ZXN0IG5hbWUsIHJlc3BlY3RpdmVseS4KKyAgLy8KKyAgLy8gRG8gTk9UIGRlbGV0
ZSBvciBmcmVlIHRoZSByZXR1cm4gdmFsdWUgLSBpdCdzIG1hbmFnZWQgYnkgdGhlCisgIC8vIFRl
c3RJbmZvIGNsYXNzLgorICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSgpIGNvbnN0OworICBj
b25zdCBjaGFyKiBuYW1lKCkgY29uc3Q7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwor
YGBgCisKKworPiBUbyBvYnRhaW4gYSBgVGVzdEluZm9gIG9iamVjdCBmb3IgdGhlIGN1cnJlbnRs
eSBydW5uaW5nIHRlc3QsIGNhbGwKK2BjdXJyZW50X3Rlc3RfaW5mbygpYCBvbiB0aGUgYFVuaXRU
ZXN0YCBzaW5nbGV0b24gb2JqZWN0OgorCitgYGAKKy8vIEdldHMgaW5mb3JtYXRpb24gYWJvdXQg
dGhlIGN1cnJlbnRseSBydW5uaW5nIHRlc3QuCisvLyBEbyBOT1QgZGVsZXRlIHRoZSByZXR1cm5l
ZCBvYmplY3QgLSBpdCdzIG1hbmFnZWQgYnkgdGhlIFVuaXRUZXN0IGNsYXNzLgorY29uc3QgOjp0
ZXN0aW5nOjpUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0KKyAgOjp0ZXN0aW5nOjpVbml0VGVz
dDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKTsKK3ByaW50ZigiV2UgYXJlIGlu
IHRlc3QgJXMgb2YgdGVzdCBjYXNlICVzLlxuIiwKKyAgICAgICB0ZXN0X2luZm8tPm5hbWUoKSwg
dGVzdF9pbmZvLT50ZXN0X2Nhc2VfbmFtZSgpKTsKK2BgYAorCitgY3VycmVudF90ZXN0X2luZm8o
KWAgcmV0dXJucyBhIG51bGwgcG9pbnRlciBpZiBubyB0ZXN0IGlzIHJ1bm5pbmcuIEluCitwYXJ0
aWN1bGFyLCB5b3UgY2Fubm90IGZpbmQgdGhlIHRlc3QgY2FzZSBuYW1lIGluIGBUZXN0Q2FzZVNl
dFVwKClgLAorYFRlc3RDYXNlVGVhckRvd24oKWAgKHdoZXJlIHlvdSBrbm93IHRoZSB0ZXN0IGNh
c2UgbmFtZSBpbXBsaWNpdGx5KSwgb3IKK2Z1bmN0aW9ucyBjYWxsZWQgZnJvbSB0aGVtLgorCitf
QXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyBFeHRlbmRpbmcgR29vZ2xl
IFRlc3QgYnkgSGFuZGxpbmcgVGVzdCBFdmVudHMgIworCitHb29nbGUgVGVzdCBwcm92aWRlcyBh
biA8Yj5ldmVudCBsaXN0ZW5lciBBUEk8L2I+IHRvIGxldCB5b3UgcmVjZWl2ZQorbm90aWZpY2F0
aW9ucyBhYm91dCB0aGUgcHJvZ3Jlc3Mgb2YgYSB0ZXN0IHByb2dyYW0gYW5kIHRlc3QKK2ZhaWx1
cmVzLiBUaGUgZXZlbnRzIHlvdSBjYW4gbGlzdGVuIHRvIGluY2x1ZGUgdGhlIHN0YXJ0IGFuZCBl
bmQgb2YKK3RoZSB0ZXN0IHByb2dyYW0sIGEgdGVzdCBjYXNlLCBvciBhIHRlc3QgbWV0aG9kLCBh
bW9uZyBvdGhlcnMuIFlvdSBtYXkKK3VzZSB0aGlzIEFQSSB0byBhdWdtZW50IG9yIHJlcGxhY2Ug
dGhlIHN0YW5kYXJkIGNvbnNvbGUgb3V0cHV0LAorcmVwbGFjZSB0aGUgWE1MIG91dHB1dCwgb3Ig
cHJvdmlkZSBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IGZvcm0gb2YKK291dHB1dCwgc3VjaCBhcyBh
IEdVSSBvciBhIGRhdGFiYXNlLiBZb3UgY2FuIGFsc28gdXNlIHRlc3QgZXZlbnRzIGFzCitjaGVj
a3BvaW50cyB0byBpbXBsZW1lbnQgYSByZXNvdXJjZSBsZWFrIGNoZWNrZXIsIGZvciBleGFtcGxl
LgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYzsgc2luY2UgdjEuNC4wLgor
CisjIyBEZWZpbmluZyBFdmVudCBMaXN0ZW5lcnMgIyMKKworVG8gZGVmaW5lIGEgZXZlbnQgbGlz
dGVuZXIsIHlvdSBzdWJjbGFzcyBlaXRoZXIKK1t0ZXN0aW5nOjpUZXN0RXZlbnRMaXN0ZW5lcl0o
Li4vaW5jbHVkZS9ndGVzdC9ndGVzdC5oI0w4NTUpCitvciBbdGVzdGluZzo6RW1wdHlUZXN0RXZl
bnRMaXN0ZW5lcl0oLi4vaW5jbHVkZS9ndGVzdC9ndGVzdC5oI0w5MDUpLgorVGhlIGZvcm1lciBp
cyBhbiAoYWJzdHJhY3QpIGludGVyZmFjZSwgd2hlcmUgPGk+ZWFjaCBwdXJlIHZpcnR1YWwgbWV0
aG9kPGJyPgorY2FuIGJlIG92ZXJyaWRkZW4gdG8gaGFuZGxlIGEgdGVzdCBldmVudDwvaT4gKEZv
ciBleGFtcGxlLCB3aGVuIGEgdGVzdAorc3RhcnRzLCB0aGUgYE9uVGVzdFN0YXJ0KClgIG1ldGhv
ZCB3aWxsIGJlIGNhbGxlZC4pLiBUaGUgbGF0dGVyIHByb3ZpZGVzCithbiBlbXB0eSBpbXBsZW1l
bnRhdGlvbiBvZiBhbGwgbWV0aG9kcyBpbiB0aGUgaW50ZXJmYWNlLCBzdWNoIHRoYXQgYQorc3Vi
Y2xhc3Mgb25seSBuZWVkcyB0byBvdmVycmlkZSB0aGUgbWV0aG9kcyBpdCBjYXJlcyBhYm91dC4K
KworV2hlbiBhbiBldmVudCBpcyBmaXJlZCwgaXRzIGNvbnRleHQgaXMgcGFzc2VkIHRvIHRoZSBo
YW5kbGVyIGZ1bmN0aW9uCithcyBhbiBhcmd1bWVudC4gVGhlIGZvbGxvd2luZyBhcmd1bWVudCB0
eXBlcyBhcmUgdXNlZDoKKyAgKiBbVW5pdFRlc3RdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCNM
MTAwNykgcmVmbGVjdHMgdGhlIHN0YXRlIG9mIHRoZSBlbnRpcmUgdGVzdCBwcm9ncmFtLAorICAq
IFtUZXN0Q2FzZV0oLi4vaW5jbHVkZS9ndGVzdC9ndGVzdC5oI0w2ODkpIGhhcyBpbmZvcm1hdGlv
biBhYm91dCBhIHRlc3QgY2FzZSwgd2hpY2ggY2FuIGNvbnRhaW4gb25lIG9yIG1vcmUgdGVzdHMs
CisgICogW1Rlc3RJbmZvXSguLi9pbmNsdWRlL2d0ZXN0L2d0ZXN0LmgjTDU5OSkgY29udGFpbnMg
dGhlIHN0YXRlIG9mIGEgdGVzdCwgYW5kCisgICogW1Rlc3RQYXJ0UmVzdWx0XSguLi9pbmNsdWRl
L2d0ZXN0L2d0ZXN0LXRlc3QtcGFydC5oI0w0MikgcmVwcmVzZW50cyB0aGUgcmVzdWx0IG9mIGEg
dGVzdCBhc3NlcnRpb24uCisKK0FuIGV2ZW50IGhhbmRsZXIgZnVuY3Rpb24gY2FuIGV4YW1pbmUg
dGhlIGFyZ3VtZW50IGl0IHJlY2VpdmVzIHRvIGZpbmQKK291dCBpbnRlcmVzdGluZyBpbmZvcm1h
dGlvbiBhYm91dCB0aGUgZXZlbnQgYW5kIHRoZSB0ZXN0IHByb2dyYW0ncworc3RhdGUuICBIZXJl
J3MgYW4gZXhhbXBsZToKKworYGBgCisgIGNsYXNzIE1pbmltYWxpc3RQcmludGVyIDogcHVibGlj
IDo6dGVzdGluZzo6RW1wdHlUZXN0RXZlbnRMaXN0ZW5lciB7CisgICAgLy8gQ2FsbGVkIGJlZm9y
ZSBhIHRlc3Qgc3RhcnRzLgorICAgIHZpcnR1YWwgdm9pZCBPblRlc3RTdGFydChjb25zdCA6OnRl
c3Rpbmc6OlRlc3RJbmZvJiB0ZXN0X2luZm8pIHsKKyAgICAgIHByaW50ZigiKioqIFRlc3QgJXMu
JXMgc3RhcnRpbmcuXG4iLAorICAgICAgICAgICAgIHRlc3RfaW5mby50ZXN0X2Nhc2VfbmFtZSgp
LCB0ZXN0X2luZm8ubmFtZSgpKTsKKyAgICB9CisKKyAgICAvLyBDYWxsZWQgYWZ0ZXIgYSBmYWls
ZWQgYXNzZXJ0aW9uIG9yIGEgU1VDQ0VFRCgpIGludm9jYXRpb24uCisgICAgdmlydHVhbCB2b2lk
IE9uVGVzdFBhcnRSZXN1bHQoCisgICAgICAgIGNvbnN0IDo6dGVzdGluZzo6VGVzdFBhcnRSZXN1
bHQmIHRlc3RfcGFydF9yZXN1bHQpIHsKKyAgICAgIHByaW50ZigiJXMgaW4gJXM6JWRcbiVzXG4i
LAorICAgICAgICAgICAgIHRlc3RfcGFydF9yZXN1bHQuZmFpbGVkKCkgPyAiKioqIEZhaWx1cmUi
IDogIlN1Y2Nlc3MiLAorICAgICAgICAgICAgIHRlc3RfcGFydF9yZXN1bHQuZmlsZV9uYW1lKCks
CisgICAgICAgICAgICAgdGVzdF9wYXJ0X3Jlc3VsdC5saW5lX251bWJlcigpLAorICAgICAgICAg
ICAgIHRlc3RfcGFydF9yZXN1bHQuc3VtbWFyeSgpKTsKKyAgICB9CisKKyAgICAvLyBDYWxsZWQg
YWZ0ZXIgYSB0ZXN0IGVuZHMuCisgICAgdmlydHVhbCB2b2lkIE9uVGVzdEVuZChjb25zdCA6OnRl
c3Rpbmc6OlRlc3RJbmZvJiB0ZXN0X2luZm8pIHsKKyAgICAgIHByaW50ZigiKioqIFRlc3QgJXMu
JXMgZW5kaW5nLlxuIiwKKyAgICAgICAgICAgICB0ZXN0X2luZm8udGVzdF9jYXNlX25hbWUoKSwg
dGVzdF9pbmZvLm5hbWUoKSk7CisgICAgfQorICB9OworYGBgCisKKyMjIFVzaW5nIEV2ZW50IExp
c3RlbmVycyAjIworCitUbyB1c2UgdGhlIGV2ZW50IGxpc3RlbmVyIHlvdSBoYXZlIGRlZmluZWQs
IGFkZCBhbiBpbnN0YW5jZSBvZiBpdCB0bwordGhlIEdvb2dsZSBUZXN0IGV2ZW50IGxpc3RlbmVy
IGxpc3QgKHJlcHJlc2VudGVkIGJ5IGNsYXNzCitbVGVzdEV2ZW50TGlzdGVuZXJzXSguLi9pbmNs
dWRlL2d0ZXN0L2d0ZXN0LmgjTDkyOSkKKy0gbm90ZSB0aGUgInMiIGF0IHRoZSBlbmQgb2YgdGhl
IG5hbWUpIGluIHlvdXIKK2BtYWluKClgIGZ1bmN0aW9uLCBiZWZvcmUgY2FsbGluZyBgUlVOX0FM
TF9URVNUUygpYDoKK2BgYAoraW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CisgIDo6
dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworICAvLyBHZXRzIGhvbGQgb2Yg
dGhlIGV2ZW50IGxpc3RlbmVyIGxpc3QuCisgIDo6dGVzdGluZzo6VGVzdEV2ZW50TGlzdGVuZXJz
JiBsaXN0ZW5lcnMgPQorICAgICAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+
bGlzdGVuZXJzKCk7CisgIC8vIEFkZHMgYSBsaXN0ZW5lciB0byB0aGUgZW5kLiAgR29vZ2xlIFRl
c3QgdGFrZXMgdGhlIG93bmVyc2hpcC4KKyAgbGlzdGVuZXJzLkFwcGVuZChuZXcgTWluaW1hbGlz
dFByaW50ZXIpOworICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworfQorYGBgCisKK1RoZXJlJ3Mg
b25seSBvbmUgcHJvYmxlbTogdGhlIGRlZmF1bHQgdGVzdCByZXN1bHQgcHJpbnRlciBpcyBzdGls
bCBpbgorZWZmZWN0LCBzbyBpdHMgb3V0cHV0IHdpbGwgbWluZ2xlIHdpdGggdGhlIG91dHB1dCBm
cm9tIHlvdXIgbWluaW1hbGlzdAorcHJpbnRlci4gVG8gc3VwcHJlc3MgdGhlIGRlZmF1bHQgcHJp
bnRlciwganVzdCByZWxlYXNlIGl0IGZyb20gdGhlCitldmVudCBsaXN0ZW5lciBsaXN0IGFuZCBk
ZWxldGUgaXQuIFlvdSBjYW4gZG8gc28gYnkgYWRkaW5nIG9uZSBsaW5lOgorYGBgCisgIC4uLgor
ICBkZWxldGUgbGlzdGVuZXJzLlJlbGVhc2UobGlzdGVuZXJzLmRlZmF1bHRfcmVzdWx0X3ByaW50
ZXIoKSk7CisgIGxpc3RlbmVycy5BcHBlbmQobmV3IE1pbmltYWxpc3RQcmludGVyKTsKKyAgcmV0
dXJuIFJVTl9BTExfVEVTVFMoKTsKK2BgYAorCitOb3csIHNpdCBiYWNrIGFuZCBlbmpveSBhIGNv
bXBsZXRlbHkgZGlmZmVyZW50IG91dHB1dCBmcm9tIHlvdXIKK3Rlc3RzLiBGb3IgbW9yZSBkZXRh
aWxzLCB5b3UgY2FuIHJlYWQgdGhpcworW3NhbXBsZV0oLi4vc2FtcGxlcy9zYW1wbGU5X3VuaXR0
ZXN0LmNjKS4KKworWW91IG1heSBhcHBlbmQgbW9yZSB0aGFuIG9uZSBsaXN0ZW5lciB0byB0aGUg
bGlzdC4gV2hlbiBhbiBgT24qU3RhcnQoKWAKK29yIGBPblRlc3RQYXJ0UmVzdWx0KClgIGV2ZW50
IGlzIGZpcmVkLCB0aGUgbGlzdGVuZXJzIHdpbGwgcmVjZWl2ZSBpdCBpbgordGhlIG9yZGVyIHRo
ZXkgYXBwZWFyIGluIHRoZSBsaXN0IChzaW5jZSBuZXcgbGlzdGVuZXJzIGFyZSBhZGRlZCB0bwor
dGhlIGVuZCBvZiB0aGUgbGlzdCwgdGhlIGRlZmF1bHQgdGV4dCBwcmludGVyIGFuZCB0aGUgZGVm
YXVsdCBYTUwKK2dlbmVyYXRvciB3aWxsIHJlY2VpdmUgdGhlIGV2ZW50IGZpcnN0KS4gQW4gYE9u
KkVuZCgpYCBldmVudCB3aWxsIGJlCityZWNlaXZlZCBieSB0aGUgbGlzdGVuZXJzIGluIHRoZSBf
cmV2ZXJzZV8gb3JkZXIuIFRoaXMgYWxsb3dzIG91dHB1dCBieQorbGlzdGVuZXJzIGFkZGVkIGxh
dGVyIHRvIGJlIGZyYW1lZCBieSBvdXRwdXQgZnJvbSBsaXN0ZW5lcnMgYWRkZWQKK2VhcmxpZXIu
CisKKyMjIEdlbmVyYXRpbmcgRmFpbHVyZXMgaW4gTGlzdGVuZXJzICMjCisKK1lvdSBtYXkgdXNl
IGZhaWx1cmUtcmFpc2luZyBtYWNyb3MgKGBFWFBFQ1RfKigpYCwgYEFTU0VSVF8qKClgLAorYEZB
SUwoKWAsIGV0Yykgd2hlbiBwcm9jZXNzaW5nIGFuIGV2ZW50LiBUaGVyZSBhcmUgc29tZSByZXN0
cmljdGlvbnM6CisKKyAgMS4gWW91IGNhbm5vdCBnZW5lcmF0ZSBhbnkgZmFpbHVyZSBpbiBgT25U
ZXN0UGFydFJlc3VsdCgpYCAob3RoZXJ3aXNlIGl0IHdpbGwgY2F1c2UgYE9uVGVzdFBhcnRSZXN1
bHQoKWAgdG8gYmUgY2FsbGVkIHJlY3Vyc2l2ZWx5KS4KKyAgMS4gQSBsaXN0ZW5lciB0aGF0IGhh
bmRsZXMgYE9uVGVzdFBhcnRSZXN1bHQoKWAgaXMgbm90IGFsbG93ZWQgdG8gZ2VuZXJhdGUgYW55
IGZhaWx1cmUuCisKK1doZW4geW91IGFkZCBsaXN0ZW5lcnMgdG8gdGhlIGxpc3RlbmVyIGxpc3Qs
IHlvdSBzaG91bGQgcHV0IGxpc3RlbmVycwordGhhdCBoYW5kbGUgYE9uVGVzdFBhcnRSZXN1bHQo
KWAgX2JlZm9yZV8gbGlzdGVuZXJzIHRoYXQgY2FuIGdlbmVyYXRlCitmYWlsdXJlcy4gVGhpcyBl
bnN1cmVzIHRoYXQgZmFpbHVyZXMgZ2VuZXJhdGVkIGJ5IHRoZSBsYXR0ZXIgYXJlCithdHRyaWJ1
dGVkIHRvIHRoZSByaWdodCB0ZXN0IGJ5IHRoZSBmb3JtZXIuCisKK1dlIGhhdmUgYSBzYW1wbGUg
b2YgZmFpbHVyZS1yYWlzaW5nIGxpc3RlbmVyCitbaGVyZV0oLi4vc2FtcGxlcy9zYW1wbGUxMF91
bml0dGVzdC5jYykuCisKKyMgUnVubmluZyBUZXN0IFByb2dyYW1zOiBBZHZhbmNlZCBPcHRpb25z
ICMKKworR29vZ2xlIFRlc3QgdGVzdCBwcm9ncmFtcyBhcmUgb3JkaW5hcnkgZXhlY3V0YWJsZXMu
IE9uY2UgYnVpbHQsIHlvdSBjYW4gcnVuCit0aGVtIGRpcmVjdGx5IGFuZCBhZmZlY3QgdGhlaXIg
YmVoYXZpb3IgdmlhIHRoZSBmb2xsb3dpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzCithbmQvb3Ig
Y29tbWFuZCBsaW5lIGZsYWdzLiBGb3IgdGhlIGZsYWdzIHRvIHdvcmssIHlvdXIgcHJvZ3JhbXMg
bXVzdCBjYWxsCitgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgpYCBiZWZvcmUgY2FsbGluZyBg
UlVOX0FMTF9URVNUUygpYC4KKworVG8gc2VlIGEgbGlzdCBvZiBzdXBwb3J0ZWQgZmxhZ3MgYW5k
IHRoZWlyIHVzYWdlLCBwbGVhc2UgcnVuIHlvdXIgdGVzdAorcHJvZ3JhbSB3aXRoIHRoZSBgLS1o
ZWxwYCBmbGFnLiAgWW91IGNhbiBhbHNvIHVzZSBgLWhgLCBgLT9gLCBvciBgLz9gCitmb3Igc2hv
cnQuICBUaGlzIGZlYXR1cmUgaXMgYWRkZWQgaW4gdmVyc2lvbiAxLjMuMC4KKworSWYgYW4gb3B0
aW9uIGlzIHNwZWNpZmllZCBib3RoIGJ5IGFuIGVudmlyb25tZW50IHZhcmlhYmxlIGFuZCBieSBh
CitmbGFnLCB0aGUgbGF0dGVyIHRha2VzIHByZWNlZGVuY2UuICBNb3N0IG9mIHRoZSBvcHRpb25z
IGNhbiBhbHNvIGJlCitzZXQvcmVhZCBpbiBjb2RlOiB0byBhY2Nlc3MgdGhlIHZhbHVlIG9mIGNv
bW1hbmQgbGluZSBmbGFnCitgLS1ndGVzdF9mb29gLCB3cml0ZSBgOjp0ZXN0aW5nOjpHVEVTVF9G
TEFHKGZvbylgLiAgQSBjb21tb24gcGF0dGVybiBpcwordG8gc2V0IHRoZSB2YWx1ZSBvZiBhIGZs
YWcgYmVmb3JlIGNhbGxpbmcgYDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoKWAKK3RvIGNoYW5n
ZSB0aGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgZmxhZzoKK2BgYAoraW50IG1haW4oaW50IGFyZ2Ms
IGNoYXIqKiBhcmd2KSB7CisgIC8vIERpc2FibGVzIGVsYXBzZWQgdGltZSBieSBkZWZhdWx0Lgor
ICA6OnRlc3Rpbmc6OkdURVNUX0ZMQUcocHJpbnRfdGltZSkgPSBmYWxzZTsKKworICAvLyBUaGlz
IGFsbG93cyB0aGUgdXNlciB0byBvdmVycmlkZSB0aGUgZmxhZyBvbiB0aGUgY29tbWFuZCBsaW5l
LgorICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKworICByZXR1cm4g
UlVOX0FMTF9URVNUUygpOworfQorYGBgCisKKyMjIFNlbGVjdGluZyBUZXN0cyAjIworCitUaGlz
IHNlY3Rpb24gc2hvd3MgdmFyaW91cyBvcHRpb25zIGZvciBjaG9vc2luZyB3aGljaCB0ZXN0cyB0
byBydW4uCisKKyMjIyBMaXN0aW5nIFRlc3QgTmFtZXMgIyMjCisKK1NvbWV0aW1lcyBpdCBpcyBu
ZWNlc3NhcnkgdG8gbGlzdCB0aGUgYXZhaWxhYmxlIHRlc3RzIGluIGEgcHJvZ3JhbSBiZWZvcmUK
K3J1bm5pbmcgdGhlbSBzbyB0aGF0IGEgZmlsdGVyIG1heSBiZSBhcHBsaWVkIGlmIG5lZWRlZC4g
SW5jbHVkaW5nIHRoZSBmbGFnCitgLS1ndGVzdF9saXN0X3Rlc3RzYCBvdmVycmlkZXMgYWxsIG90
aGVyIGZsYWdzIGFuZCBsaXN0cyB0ZXN0cyBpbiB0aGUgZm9sbG93aW5nCitmb3JtYXQ6CitgYGAK
K1Rlc3RDYXNlMS4KKyAgVGVzdE5hbWUxCisgIFRlc3ROYW1lMgorVGVzdENhc2UyLgorICBUZXN0
TmFtZQorYGBgCisKK05vbmUgb2YgdGhlIHRlc3RzIGxpc3RlZCBhcmUgYWN0dWFsbHkgcnVuIGlm
IHRoZSBmbGFnIGlzIHByb3ZpZGVkLiBUaGVyZSBpcyBubworY29ycmVzcG9uZGluZyBlbnZpcm9u
bWVudCB2YXJpYWJsZSBmb3IgdGhpcyBmbGFnLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdp
bmRvd3MsIE1hYy4KKworIyMjIFJ1bm5pbmcgYSBTdWJzZXQgb2YgdGhlIFRlc3RzICMjIworCitC
eSBkZWZhdWx0LCBhIEdvb2dsZSBUZXN0IHByb2dyYW0gcnVucyBhbGwgdGVzdHMgdGhlIHVzZXIg
aGFzIGRlZmluZWQuCitTb21ldGltZXMsIHlvdSB3YW50IHRvIHJ1biBvbmx5IGEgc3Vic2V0IG9m
IHRoZSB0ZXN0cyAoZS5nLiBmb3IgZGVidWdnaW5nIG9yCitxdWlja2x5IHZlcmlmeWluZyBhIGNo
YW5nZSkuIElmIHlvdSBzZXQgdGhlIGBHVEVTVF9GSUxURVJgIGVudmlyb25tZW50IHZhcmlhYmxl
CitvciB0aGUgYC0tZ3Rlc3RfZmlsdGVyYCBmbGFnIHRvIGEgZmlsdGVyIHN0cmluZywgR29vZ2xl
IFRlc3Qgd2lsbCBvbmx5IHJ1biB0aGUKK3Rlc3RzIHdob3NlIGZ1bGwgbmFtZXMgKGluIHRoZSBm
b3JtIG9mIGBUZXN0Q2FzZU5hbWUuVGVzdE5hbWVgKSBtYXRjaCB0aGUKK2ZpbHRlci4KKworVGhl
IGZvcm1hdCBvZiBhIGZpbHRlciBpcyBhICdgOmAnLXNlcGFyYXRlZCBsaXN0IG9mIHdpbGRjYXJk
IHBhdHRlcm5zIChjYWxsZWQKK3RoZSBwb3NpdGl2ZSBwYXR0ZXJucykgb3B0aW9uYWxseSBmb2xs
b3dlZCBieSBhICdgLWAnIGFuZCBhbm90aGVyCisnYDpgJy1zZXBhcmF0ZWQgcGF0dGVybiBsaXN0
IChjYWxsZWQgdGhlIG5lZ2F0aXZlIHBhdHRlcm5zKS4gQSB0ZXN0IG1hdGNoZXMgdGhlCitmaWx0
ZXIgaWYgYW5kIG9ubHkgaWYgaXQgbWF0Y2hlcyBhbnkgb2YgdGhlIHBvc2l0aXZlIHBhdHRlcm5z
IGJ1dCBkb2VzIG5vdAorbWF0Y2ggYW55IG9mIHRoZSBuZWdhdGl2ZSBwYXR0ZXJucy4KKworQSBw
YXR0ZXJuIG1heSBjb250YWluIGAnKidgIChtYXRjaGVzIGFueSBzdHJpbmcpIG9yIGAnPydgICht
YXRjaGVzIGFueSBzaW5nbGUKK2NoYXJhY3RlcikuIEZvciBjb252ZW5pZW5jZSwgdGhlIGZpbHRl
ciBgJyotTmVnYXRpdmVQYXR0ZXJucydgIGNhbiBiZSBhbHNvCit3cml0dGVuIGFzIGAnLU5lZ2F0
aXZlUGF0dGVybnMnYC4KKworRm9yIGV4YW1wbGU6CisKKyAgKiBgLi9mb29fdGVzdGAgSGFzIG5v
IGZsYWcsIGFuZCB0aHVzIHJ1bnMgYWxsIGl0cyB0ZXN0cy4KKyAgKiBgLi9mb29fdGVzdCAtLWd0
ZXN0X2ZpbHRlcj0qYCBBbHNvIHJ1bnMgZXZlcnl0aGluZywgZHVlIHRvIHRoZSBzaW5nbGUgbWF0
Y2gtZXZlcnl0aGluZyBgKmAgdmFsdWUuCisgICogYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9
Rm9vVGVzdC4qYCBSdW5zIGV2ZXJ5dGhpbmcgaW4gdGVzdCBjYXNlIGBGb29UZXN0YC4KKyAgKiBg
Li9mb29fdGVzdCAtLWd0ZXN0X2ZpbHRlcj0qTnVsbCo6KkNvbnN0cnVjdG9yKmAgUnVucyBhbnkg
dGVzdCB3aG9zZSBmdWxsIG5hbWUgY29udGFpbnMgZWl0aGVyIGAiTnVsbCJgIG9yIGAiQ29uc3Ry
dWN0b3IiYC4KKyAgKiBgLi9mb29fdGVzdCAtLWd0ZXN0X2ZpbHRlcj0tKkRlYXRoVGVzdC4qYCBS
dW5zIGFsbCBub24tZGVhdGggdGVzdHMuCisgICogYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9
Rm9vVGVzdC4qLUZvb1Rlc3QuQmFyYCBSdW5zIGV2ZXJ5dGhpbmcgaW4gdGVzdCBjYXNlIGBGb29U
ZXN0YCBleGNlcHQgYEZvb1Rlc3QuQmFyYC4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5k
b3dzLCBNYWMuCisKKyMjIyBUZW1wb3JhcmlseSBEaXNhYmxpbmcgVGVzdHMgIyMjCisKK0lmIHlv
dSBoYXZlIGEgYnJva2VuIHRlc3QgdGhhdCB5b3UgY2Fubm90IGZpeCByaWdodCBhd2F5LCB5b3Ug
Y2FuIGFkZCB0aGUKK2BESVNBQkxFRF9gIHByZWZpeCB0byBpdHMgbmFtZS4gVGhpcyB3aWxsIGV4
Y2x1ZGUgaXQgZnJvbSBleGVjdXRpb24uIFRoaXMgaXMKK2JldHRlciB0aGFuIGNvbW1lbnRpbmcg
b3V0IHRoZSBjb2RlIG9yIHVzaW5nIGAjaWYgMGAsIGFzIGRpc2FibGVkIHRlc3RzIGFyZQorc3Rp
bGwgY29tcGlsZWQgKGFuZCB0aHVzIHdvbid0IHJvdCkuCisKK0lmIHlvdSBuZWVkIHRvIGRpc2Fi
bGUgYWxsIHRlc3RzIGluIGEgdGVzdCBjYXNlLCB5b3UgY2FuIGVpdGhlciBhZGQgYERJU0FCTEVE
X2AKK3RvIHRoZSBmcm9udCBvZiB0aGUgbmFtZSBvZiBlYWNoIHRlc3QsIG9yIGFsdGVybmF0aXZl
bHkgYWRkIGl0IHRvIHRoZSBmcm9udCBvZgordGhlIHRlc3QgY2FzZSBuYW1lLgorCitGb3IgZXhh
bXBsZSwgdGhlIGZvbGxvd2luZyB0ZXN0cyB3b24ndCBiZSBydW4gYnkgR29vZ2xlIFRlc3QsIGV2
ZW4gdGhvdWdoIHRoZXkKK3dpbGwgc3RpbGwgYmUgY29tcGlsZWQ6CisKK2BgYAorLy8gVGVzdHMg
dGhhdCBGb28gZG9lcyBBYmMuCitURVNUKEZvb1Rlc3QsIERJU0FCTEVEX0RvZXNBYmMpIHsgLi4u
IH0KKworY2xhc3MgRElTQUJMRURfQmFyVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeyAu
Li4gfTsKKworLy8gVGVzdHMgdGhhdCBCYXIgZG9lcyBYeXouCitURVNUX0YoRElTQUJMRURfQmFy
VGVzdCwgRG9lc1h5eikgeyAuLi4gfQorYGBgCisKK19Ob3RlOl8gVGhpcyBmZWF0dXJlIHNob3Vs
ZCBvbmx5IGJlIHVzZWQgZm9yIHRlbXBvcmFyeSBwYWluLXJlbGllZi4gWW91IHN0aWxsCitoYXZl
IHRvIGZpeCB0aGUgZGlzYWJsZWQgdGVzdHMgYXQgYSBsYXRlciBkYXRlLiBBcyBhIHJlbWluZGVy
LCBHb29nbGUgVGVzdCB3aWxsCitwcmludCBhIGJhbm5lciB3YXJuaW5nIHlvdSBpZiBhIHRlc3Qg
cHJvZ3JhbSBjb250YWlucyBhbnkgZGlzYWJsZWQgdGVzdHMuCisKK19UaXA6XyBZb3UgY2FuIGVh
c2lseSBjb3VudCB0aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRlc3RzIHlvdSBoYXZlCit1c2luZyBg
Z3JlcGAuIFRoaXMgbnVtYmVyIGNhbiBiZSB1c2VkIGFzIGEgbWV0cmljIGZvciBpbXByb3Zpbmcg
eW91cgordGVzdCBxdWFsaXR5LgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1h
Yy4KKworIyMjIFRlbXBvcmFyaWx5IEVuYWJsaW5nIERpc2FibGVkIFRlc3RzICMjIworCitUbyBp
bmNsdWRlIFtkaXNhYmxlZCB0ZXN0c10oI3RlbXBvcmFyaWx5LWRpc2FibGluZy10ZXN0cykgaW4g
dGVzdAorZXhlY3V0aW9uLCBqdXN0IGludm9rZSB0aGUgdGVzdCBwcm9ncmFtIHdpdGggdGhlCitg
LS1ndGVzdF9hbHNvX3J1bl9kaXNhYmxlZF90ZXN0c2AgZmxhZyBvciBzZXQgdGhlCitgR1RFU1Rf
QUxTT19SVU5fRElTQUJMRURfVEVTVFNgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGEgdmFsdWUg
b3RoZXIKK3RoYW4gYDBgLiAgWW91IGNhbiBjb21iaW5lIHRoaXMgd2l0aCB0aGUKK1stLWd0ZXN0
XC1maWx0ZXJdKCNydW5uaW5nLWEtc3Vic2V0LW9mLXRoZV90ZXN0cykgZmxhZyB0byBmdXJ0aGVy
IHNlbGVjdAord2hpY2ggZGlzYWJsZWQgdGVzdHMgdG8gcnVuLgorCitfQXZhaWxhYmlsaXR5Ol8g
TGludXgsIFdpbmRvd3MsIE1hYzsgc2luY2UgdmVyc2lvbiAxLjMuMC4KKworIyMgUmVwZWF0aW5n
IHRoZSBUZXN0cyAjIworCitPbmNlIGluIGEgd2hpbGUgeW91J2xsIHJ1biBpbnRvIGEgdGVzdCB3
aG9zZSByZXN1bHQgaXMgaGl0LW9yLW1pc3MuIFBlcmhhcHMgaXQKK3dpbGwgZmFpbCBvbmx5IDEl
IG9mIHRoZSB0aW1lLCBtYWtpbmcgaXQgcmF0aGVyIGhhcmQgdG8gcmVwcm9kdWNlIHRoZSBidWcg
dW5kZXIKK2EgZGVidWdnZXIuIFRoaXMgY2FuIGJlIGEgbWFqb3Igc291cmNlIG9mIGZydXN0cmF0
aW9uLgorCitUaGUgYC0tZ3Rlc3RfcmVwZWF0YCBmbGFnIGFsbG93cyB5b3UgdG8gcmVwZWF0IGFs
bCAob3Igc2VsZWN0ZWQpIHRlc3QgbWV0aG9kcworaW4gYSBwcm9ncmFtIG1hbnkgdGltZXMuIEhv
cGVmdWxseSwgYSBmbGFreSB0ZXN0IHdpbGwgZXZlbnR1YWxseSBmYWlsIGFuZCBnaXZlCit5b3Ug
YSBjaGFuY2UgdG8gZGVidWcuIEhlcmUncyBob3cgdG8gdXNlIGl0OgorCit8IGAkIGZvb190ZXN0
IC0tZ3Rlc3RfcmVwZWF0PTEwMDBgIHwgUmVwZWF0IGZvb1xfdGVzdCAxMDAwIHRpbWVzIGFuZCBk
b24ndCBzdG9wIGF0IGZhaWx1cmVzLiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS18Cit8IGAkIGZvb190ZXN0IC0tZ3Rlc3RfcmVwZWF0PS0xYCAgIHwgQSBuZWdhdGl2ZSBj
b3VudCBtZWFucyByZXBlYXRpbmcgZm9yZXZlci4gICAgICAgICAgICAgICB8Cit8IGAkIGZvb190
ZXN0IC0tZ3Rlc3RfcmVwZWF0PTEwMDAgLS1ndGVzdF9icmVha19vbl9mYWlsdXJlYCB8IFJlcGVh
dCBmb29cX3Rlc3QgMTAwMCB0aW1lcywgc3RvcHBpbmcgYXQgdGhlIGZpcnN0IGZhaWx1cmUuIFRo
aXMgaXMgZXNwZWNpYWxseSB1c2VmdWwgd2hlbiBydW5uaW5nIHVuZGVyIGEgZGVidWdnZXI6IHdo
ZW4gdGhlIHRlc3RmYWlscywgaXQgd2lsbCBkcm9wIGludG8gdGhlIGRlYnVnZ2VyIGFuZCB5b3Ug
Y2FuIHRoZW4gaW5zcGVjdCB2YXJpYWJsZXMgYW5kIHN0YWNrcy4gfAorfCBgJCBmb29fdGVzdCAt
LWd0ZXN0X3JlcGVhdD0xMDAwIC0tZ3Rlc3RfZmlsdGVyPUZvb0JhcmAgfCBSZXBlYXQgdGhlIHRl
c3RzIHdob3NlIG5hbWUgbWF0Y2hlcyB0aGUgZmlsdGVyIDEwMDAgdGltZXMuIHwKKworSWYgeW91
ciB0ZXN0IHByb2dyYW0gY29udGFpbnMgZ2xvYmFsIHNldC11cC90ZWFyLWRvd24gY29kZSByZWdp
c3RlcmVkCit1c2luZyBgQWRkR2xvYmFsVGVzdEVudmlyb25tZW50KClgLCBpdCB3aWxsIGJlIHJl
cGVhdGVkIGluIGVhY2gKK2l0ZXJhdGlvbiBhcyB3ZWxsLCBhcyB0aGUgZmxha2luZXNzIG1heSBi
ZSBpbiBpdC4gWW91IGNhbiBhbHNvIHNwZWNpZnkKK3RoZSByZXBlYXQgY291bnQgYnkgc2V0dGlu
ZyB0aGUgYEdURVNUX1JFUEVBVGAgZW52aXJvbm1lbnQgdmFyaWFibGUuCisKK19BdmFpbGFiaWxp
dHk6XyBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyBTaHVmZmxpbmcgdGhlIFRlc3RzICMjCisK
K1lvdSBjYW4gc3BlY2lmeSB0aGUgYC0tZ3Rlc3Rfc2h1ZmZsZWAgZmxhZyAob3Igc2V0IHRoZSBg
R1RFU1RfU0hVRkZMRWAKK2Vudmlyb25tZW50IHZhcmlhYmxlIHRvIGAxYCkgdG8gcnVuIHRoZSB0
ZXN0cyBpbiBhIHByb2dyYW0gaW4gYSByYW5kb20KK29yZGVyLiBUaGlzIGhlbHBzIHRvIHJldmVh
bCBiYWQgZGVwZW5kZW5jaWVzIGJldHdlZW4gdGVzdHMuCisKK0J5IGRlZmF1bHQsIEdvb2dsZSBU
ZXN0IHVzZXMgYSByYW5kb20gc2VlZCBjYWxjdWxhdGVkIGZyb20gdGhlIGN1cnJlbnQKK3RpbWUu
IFRoZXJlZm9yZSB5b3UnbGwgZ2V0IGEgZGlmZmVyZW50IG9yZGVyIGV2ZXJ5IHRpbWUuIFRoZSBj
b25zb2xlCitvdXRwdXQgaW5jbHVkZXMgdGhlIHJhbmRvbSBzZWVkIHZhbHVlLCBzdWNoIHRoYXQg
eW91IGNhbiByZXByb2R1Y2UgYW4KK29yZGVyLXJlbGF0ZWQgdGVzdCBmYWlsdXJlIGxhdGVyLiBU
byBzcGVjaWZ5IHRoZSByYW5kb20gc2VlZAorZXhwbGljaXRseSwgdXNlIHRoZSBgLS1ndGVzdF9y
YW5kb21fc2VlZD1TRUVEYCBmbGFnIChvciBzZXQgdGhlCitgR1RFU1RfUkFORE9NX1NFRURgIGVu
dmlyb25tZW50IHZhcmlhYmxlKSwgd2hlcmUgYFNFRURgIGlzIGFuIGludGVnZXIKK2JldHdlZW4g
MCBhbmQgOTk5OTkuIFRoZSBzZWVkIHZhbHVlIDAgaXMgc3BlY2lhbDogaXQgdGVsbHMgR29vZ2xl
IFRlc3QKK3RvIGRvIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIGNhbGN1bGF0aW5nIHRoZSBzZWVk
IGZyb20gdGhlIGN1cnJlbnQKK3RpbWUuCisKK0lmIHlvdSBjb21iaW5lIHRoaXMgd2l0aCBgLS1n
dGVzdF9yZXBlYXQ9TmAsIEdvb2dsZSBUZXN0IHdpbGwgcGljayBhCitkaWZmZXJlbnQgcmFuZG9t
IHNlZWQgYW5kIHJlLXNodWZmbGUgdGhlIHRlc3RzIGluIGVhY2ggaXRlcmF0aW9uLgorCitfQXZh
aWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYzsgc2luY2UgdjEuNC4wLgorCisjIyBDb250
cm9sbGluZyBUZXN0IE91dHB1dCAjIworCitUaGlzIHNlY3Rpb24gdGVhY2hlcyBob3cgdG8gdHdl
YWsgdGhlIHdheSB0ZXN0IHJlc3VsdHMgYXJlIHJlcG9ydGVkLgorCisjIyMgQ29sb3JlZCBUZXJt
aW5hbCBPdXRwdXQgIyMjCisKK0dvb2dsZSBUZXN0IGNhbiB1c2UgY29sb3JzIGluIGl0cyB0ZXJt
aW5hbCBvdXRwdXQgdG8gbWFrZSBpdCBlYXNpZXIgdG8gc3BvdAordGhlIHNlcGFyYXRpb24gYmV0
d2VlbiB0ZXN0cywgYW5kIHdoZXRoZXIgdGVzdHMgcGFzc2VkLgorCitZb3UgY2FuIHNldCB0aGUg
R1RFU1RcX0NPTE9SIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIHNldCB0aGUgYC0tZ3Rlc3RfY29s
b3JgCitjb21tYW5kIGxpbmUgZmxhZyB0byBgeWVzYCwgYG5vYCwgb3IgYGF1dG9gICh0aGUgZGVm
YXVsdCkgdG8gZW5hYmxlIGNvbG9ycywKK2Rpc2FibGUgY29sb3JzLCBvciBsZXQgR29vZ2xlIFRl
c3QgZGVjaWRlLiBXaGVuIHRoZSB2YWx1ZSBpcyBgYXV0b2AsIEdvb2dsZQorVGVzdCB3aWxsIHVz
ZSBjb2xvcnMgaWYgYW5kIG9ubHkgaWYgdGhlIG91dHB1dCBnb2VzIHRvIGEgdGVybWluYWwgYW5k
IChvbgorbm9uLVdpbmRvd3MgcGxhdGZvcm1zKSB0aGUgYFRFUk1gIGVudmlyb25tZW50IHZhcmlh
YmxlIGlzIHNldCB0byBgeHRlcm1gIG9yCitgeHRlcm0tY29sb3JgLgorCitfQXZhaWxhYmlsaXR5
Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIFN1cHByZXNzaW5nIHRoZSBFbGFwc2VkIFRp
bWUgIyMjCisKK0J5IGRlZmF1bHQsIEdvb2dsZSBUZXN0IHByaW50cyB0aGUgdGltZSBpdCB0YWtl
cyB0byBydW4gZWFjaCB0ZXN0LiAgVG8KK3N1cHByZXNzIHRoYXQsIHJ1biB0aGUgdGVzdCBwcm9n
cmFtIHdpdGggdGhlIGAtLWd0ZXN0X3ByaW50X3RpbWU9MGAKK2NvbW1hbmQgbGluZSBmbGFnLiAg
U2V0dGluZyB0aGUgYEdURVNUX1BSSU5UX1RJTUVgIGVudmlyb25tZW50Cit2YXJpYWJsZSB0byBg
MGAgaGFzIHRoZSBzYW1lIGVmZmVjdC4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dz
LCBNYWMuICAoSW4gR29vZ2xlIFRlc3QgMS4zLjAgYW5kIGxvd2VyLAordGhlIGRlZmF1bHQgYmVo
YXZpb3IgaXMgdGhhdCB0aGUgZWxhcHNlZCB0aW1lIGlzICoqbm90KiogcHJpbnRlZC4pCisKKyMj
IyBHZW5lcmF0aW5nIGFuIFhNTCBSZXBvcnQgIyMjCisKK0dvb2dsZSBUZXN0IGNhbiBlbWl0IGEg
ZGV0YWlsZWQgWE1MIHJlcG9ydCB0byBhIGZpbGUgaW4gYWRkaXRpb24gdG8gaXRzIG5vcm1hbAor
dGV4dHVhbCBvdXRwdXQuIFRoZSByZXBvcnQgY29udGFpbnMgdGhlIGR1cmF0aW9uIG9mIGVhY2gg
dGVzdCwgYW5kIHRodXMgY2FuCitoZWxwIHlvdSBpZGVudGlmeSBzbG93IHRlc3RzLgorCitUbyBn
ZW5lcmF0ZSB0aGUgWE1MIHJlcG9ydCwgc2V0IHRoZSBgR1RFU1RfT1VUUFVUYCBlbnZpcm9ubWVu
dCB2YXJpYWJsZSBvciB0aGUKK2AtLWd0ZXN0X291dHB1dGAgZmxhZyB0byB0aGUgc3RyaW5nIGAi
eG1sOl9wYXRoX3RvX291dHB1dF9maWxlXyJgLCB3aGljaCB3aWxsCitjcmVhdGUgdGhlIGZpbGUg
YXQgdGhlIGdpdmVuIGxvY2F0aW9uLiBZb3UgY2FuIGFsc28ganVzdCB1c2UgdGhlIHN0cmluZwor
YCJ4bWwiYCwgaW4gd2hpY2ggY2FzZSB0aGUgb3V0cHV0IGNhbiBiZSBmb3VuZCBpbiB0aGUgYHRl
c3RfZGV0YWlsLnhtbGAgZmlsZSBpbgordGhlIGN1cnJlbnQgZGlyZWN0b3J5LgorCitJZiB5b3Ug
c3BlY2lmeSBhIGRpcmVjdG9yeSAoZm9yIGV4YW1wbGUsIGAieG1sOm91dHB1dC9kaXJlY3Rvcnkv
ImAgb24gTGludXggb3IKK2AieG1sOm91dHB1dFxkaXJlY3RvcnlcImAgb24gV2luZG93cyksIEdv
b2dsZSBUZXN0IHdpbGwgY3JlYXRlIHRoZSBYTUwgZmlsZSBpbgordGhhdCBkaXJlY3RvcnksIG5h
bWVkIGFmdGVyIHRoZSB0ZXN0IGV4ZWN1dGFibGUgKGUuZy4gYGZvb190ZXN0LnhtbGAgZm9yIHRl
c3QKK3Byb2dyYW0gYGZvb190ZXN0YCBvciBgZm9vX3Rlc3QuZXhlYCkuIElmIHRoZSBmaWxlIGFs
cmVhZHkgZXhpc3RzIChwZXJoYXBzIGxlZnQKK292ZXIgZnJvbSBhIHByZXZpb3VzIHJ1biksIEdv
b2dsZSBUZXN0IHdpbGwgcGljayBhIGRpZmZlcmVudCBuYW1lIChlLmcuCitgZm9vX3Rlc3RfMS54
bWxgKSB0byBhdm9pZCBvdmVyd3JpdGluZyBpdC4KKworVGhlIHJlcG9ydCB1c2VzIHRoZSBmb3Jt
YXQgZGVzY3JpYmVkIGhlcmUuICBJdCBpcyBiYXNlZCBvbiB0aGUKK2BqdW5pdHJlcG9ydGAgQW50
IHRhc2sgYW5kIGNhbiBiZSBwYXJzZWQgYnkgcG9wdWxhciBjb250aW51b3VzIGJ1aWxkCitzeXN0
ZW1zIGxpa2UgW0h1ZHNvbl0oaHR0cHM6Ly9odWRzb24uZGV2LmphdmEubmV0LykuIFNpbmNlIHRo
YXQgZm9ybWF0Cit3YXMgb3JpZ2luYWxseSBpbnRlbmRlZCBmb3IgSmF2YSwgYSBsaXR0bGUgaW50
ZXJwcmV0YXRpb24gaXMgcmVxdWlyZWQKK3RvIG1ha2UgaXQgYXBwbHkgdG8gR29vZ2xlIFRlc3Qg
dGVzdHMsIGFzIHNob3duIGhlcmU6CisKK2BgYAorPHRlc3RzdWl0ZXMgbmFtZT0iQWxsVGVzdHMi
IC4uLj4KKyAgPHRlc3RzdWl0ZSBuYW1lPSJ0ZXN0X2Nhc2VfbmFtZSIgLi4uPgorICAgIDx0ZXN0
Y2FzZSBuYW1lPSJ0ZXN0X25hbWUiIC4uLj4KKyAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9Ii4uLiIv
PgorICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iLi4uIi8+CisgICAgICA8ZmFpbHVyZSBtZXNzYWdl
PSIuLi4iLz4KKyAgICA8L3Rlc3RjYXNlPgorICA8L3Rlc3RzdWl0ZT4KKzwvdGVzdHN1aXRlcz4K
K2BgYAorCisgICogVGhlIHJvb3QgYDx0ZXN0c3VpdGVzPmAgZWxlbWVudCBjb3JyZXNwb25kcyB0
byB0aGUgZW50aXJlIHRlc3QgcHJvZ3JhbS4KKyAgKiBgPHRlc3RzdWl0ZT5gIGVsZW1lbnRzIGNv
cnJlc3BvbmQgdG8gR29vZ2xlIFRlc3QgdGVzdCBjYXNlcy4KKyAgKiBgPHRlc3RjYXNlPmAgZWxl
bWVudHMgY29ycmVzcG9uZCB0byBHb29nbGUgVGVzdCB0ZXN0IGZ1bmN0aW9ucy4KKworRm9yIGlu
c3RhbmNlLCB0aGUgZm9sbG93aW5nIHByb2dyYW0KKworYGBgCitURVNUKE1hdGhUZXN0LCBBZGRp
dGlvbikgeyAuLi4gfQorVEVTVChNYXRoVGVzdCwgU3VidHJhY3Rpb24pIHsgLi4uIH0KK1RFU1Qo
TG9naWNUZXN0LCBOb25Db250cmFkaWN0aW9uKSB7IC4uLiB9CitgYGAKKworY291bGQgZ2VuZXJh
dGUgdGhpcyByZXBvcnQ6CisKK2BgYAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRG
LTgiPz4KKzx0ZXN0c3VpdGVzIHRlc3RzPSIzIiBmYWlsdXJlcz0iMSIgZXJyb3JzPSIwIiB0aW1l
PSIzNSIgbmFtZT0iQWxsVGVzdHMiPgorICA8dGVzdHN1aXRlIG5hbWU9Ik1hdGhUZXN0IiB0ZXN0
cz0iMiIgZmFpbHVyZXM9IjEiIGVycm9ycz0iMCIgdGltZT0iMTUiPgorICAgIDx0ZXN0Y2FzZSBu
YW1lPSJBZGRpdGlvbiIgc3RhdHVzPSJydW4iIHRpbWU9IjciIGNsYXNzbmFtZT0iIj4KKyAgICAg
IDxmYWlsdXJlIG1lc3NhZ2U9IlZhbHVlIG9mOiBhZGQoMSwgMSkmI3gwQTsgQWN0dWFsOiAzJiN4
MEE7RXhwZWN0ZWQ6IDIiIHR5cGU9IiIvPgorICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iVmFsdWUg
b2Y6IGFkZCgxLCAtMSkmI3gwQTsgQWN0dWFsOiAxJiN4MEE7RXhwZWN0ZWQ6IDAiIHR5cGU9IiIv
PgorICAgIDwvdGVzdGNhc2U+CisgICAgPHRlc3RjYXNlIG5hbWU9IlN1YnRyYWN0aW9uIiBzdGF0
dXM9InJ1biIgdGltZT0iNSIgY2xhc3NuYW1lPSIiPgorICAgIDwvdGVzdGNhc2U+CisgIDwvdGVz
dHN1aXRlPgorICA8dGVzdHN1aXRlIG5hbWU9IkxvZ2ljVGVzdCIgdGVzdHM9IjEiIGZhaWx1cmVz
PSIwIiBlcnJvcnM9IjAiIHRpbWU9IjUiPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJOb25Db250cmFk
aWN0aW9uIiBzdGF0dXM9InJ1biIgdGltZT0iNSIgY2xhc3NuYW1lPSIiPgorICAgIDwvdGVzdGNh
c2U+CisgIDwvdGVzdHN1aXRlPgorPC90ZXN0c3VpdGVzPgorYGBgCisKK1RoaW5ncyB0byBub3Rl
OgorCisgICogVGhlIGB0ZXN0c2AgYXR0cmlidXRlIG9mIGEgYDx0ZXN0c3VpdGVzPmAgb3IgYDx0
ZXN0c3VpdGU+YCBlbGVtZW50IHRlbGxzIGhvdyBtYW55IHRlc3QgZnVuY3Rpb25zIHRoZSBHb29n
bGUgVGVzdCBwcm9ncmFtIG9yIHRlc3QgY2FzZSBjb250YWlucywgd2hpbGUgdGhlIGBmYWlsdXJl
c2AgYXR0cmlidXRlIHRlbGxzIGhvdyBtYW55IG9mIHRoZW0gZmFpbGVkLgorICAqIFRoZSBgdGlt
ZWAgYXR0cmlidXRlIGV4cHJlc3NlcyB0aGUgZHVyYXRpb24gb2YgdGhlIHRlc3QsIHRlc3QgY2Fz
ZSwgb3IgZW50aXJlIHRlc3QgcHJvZ3JhbSBpbiBtaWxsaXNlY29uZHMuCisgICogRWFjaCBgPGZh
aWx1cmU+YCBlbGVtZW50IGNvcnJlc3BvbmRzIHRvIGEgc2luZ2xlIGZhaWxlZCBHb29nbGUgVGVz
dCBhc3NlcnRpb24uCisgICogU29tZSBKVW5pdCBjb25jZXB0cyBkb24ndCBhcHBseSB0byBHb29n
bGUgVGVzdCwgeWV0IHdlIGhhdmUgdG8gY29uZm9ybSB0byB0aGUgRFRELiBUaGVyZWZvcmUgeW91
J2xsIHNlZSBzb21lIGR1bW15IGVsZW1lbnRzIGFuZCBhdHRyaWJ1dGVzIGluIHRoZSByZXBvcnQu
IFlvdSBjYW4gc2FmZWx5IGlnbm9yZSB0aGVzZSBwYXJ0cy4KKworX0F2YWlsYWJpbGl0eTpfIExp
bnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIENvbnRyb2xsaW5nIEhvdyBGYWlsdXJlcyBBcmUgUmVw
b3J0ZWQgIyMKKworIyMjIFR1cm5pbmcgQXNzZXJ0aW9uIEZhaWx1cmVzIGludG8gQnJlYWstUG9p
bnRzICMjIworCitXaGVuIHJ1bm5pbmcgdGVzdCBwcm9ncmFtcyB1bmRlciBhIGRlYnVnZ2VyLCBp
dCdzIHZlcnkgY29udmVuaWVudCBpZiB0aGUKK2RlYnVnZ2VyIGNhbiBjYXRjaCBhbiBhc3NlcnRp
b24gZmFpbHVyZSBhbmQgYXV0b21hdGljYWxseSBkcm9wIGludG8gaW50ZXJhY3RpdmUKK21vZGUu
IEdvb2dsZSBUZXN0J3MgX2JyZWFrLW9uLWZhaWx1cmVfIG1vZGUgc3VwcG9ydHMgdGhpcyBiZWhh
dmlvci4KKworVG8gZW5hYmxlIGl0LCBzZXQgdGhlIGBHVEVTVF9CUkVBS19PTl9GQUlMVVJFYCBl
bnZpcm9ubWVudCB2YXJpYWJsZSB0byBhIHZhbHVlCitvdGhlciB0aGFuIGAwYCAuIEFsdGVybmF0
aXZlbHksIHlvdSBjYW4gdXNlIHRoZSBgLS1ndGVzdF9icmVha19vbl9mYWlsdXJlYAorY29tbWFu
ZCBsaW5lIGZsYWcuCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLgorCisj
IyMgRGlzYWJsaW5nIENhdGNoaW5nIFRlc3QtVGhyb3duIEV4Y2VwdGlvbnMgIyMjCisKK0dvb2ds
ZSBUZXN0IGNhbiBiZSB1c2VkIGVpdGhlciB3aXRoIG9yIHdpdGhvdXQgZXhjZXB0aW9ucyBlbmFi
bGVkLiAgSWYKK2EgdGVzdCB0aHJvd3MgYSBDKysgZXhjZXB0aW9uIG9yIChvbiBXaW5kb3dzKSBh
IHN0cnVjdHVyZWQgZXhjZXB0aW9uCisoU0VIKSwgYnkgZGVmYXVsdCBHb29nbGUgVGVzdCBjYXRj
aGVzIGl0LCByZXBvcnRzIGl0IGFzIGEgdGVzdAorZmFpbHVyZSwgYW5kIGNvbnRpbnVlcyB3aXRo
IHRoZSBuZXh0IHRlc3QgbWV0aG9kLiAgVGhpcyBtYXhpbWl6ZXMgdGhlCitjb3ZlcmFnZSBvZiBh
IHRlc3QgcnVuLiAgQWxzbywgb24gV2luZG93cyBhbiB1bmNhdWdodCBleGNlcHRpb24gd2lsbAor
Y2F1c2UgYSBwb3AtdXAgd2luZG93LCBzbyBjYXRjaGluZyB0aGUgZXhjZXB0aW9ucyBhbGxvd3Mg
eW91IHRvIHJ1bgordGhlIHRlc3RzIGF1dG9tYXRpY2FsbHkuCisKK1doZW4gZGVidWdnaW5nIHRo
ZSB0ZXN0IGZhaWx1cmVzLCBob3dldmVyLCB5b3UgbWF5IGluc3RlYWQgd2FudCB0aGUKK2V4Y2Vw
dGlvbnMgdG8gYmUgaGFuZGxlZCBieSB0aGUgZGVidWdnZXIsIHN1Y2ggdGhhdCB5b3UgY2FuIGV4
YW1pbmUKK3RoZSBjYWxsIHN0YWNrIHdoZW4gYW4gZXhjZXB0aW9uIGlzIHRocm93bi4gIFRvIGFj
aGlldmUgdGhhdCwgc2V0IHRoZQorYEdURVNUX0NBVENIX0VYQ0VQVElPTlNgIGVudmlyb25tZW50
IHZhcmlhYmxlIHRvIGAwYCwgb3IgdXNlIHRoZQorYC0tZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9ucz0w
YCBmbGFnIHdoZW4gcnVubmluZyB0aGUgdGVzdHMuCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4
LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBMZXR0aW5nIEFub3RoZXIgVGVzdGluZyBGcmFtZXdvcmsg
RHJpdmUgIyMjCisKK0lmIHlvdSB3b3JrIG9uIGEgcHJvamVjdCB0aGF0IGhhcyBhbHJlYWR5IGJl
ZW4gdXNpbmcgYW5vdGhlciB0ZXN0aW5nCitmcmFtZXdvcmsgYW5kIGlzIG5vdCByZWFkeSB0byBj
b21wbGV0ZWx5IHN3aXRjaCB0byBHb29nbGUgVGVzdCB5ZXQsCit5b3UgY2FuIGdldCBtdWNoIG9m
IEdvb2dsZSBUZXN0J3MgYmVuZWZpdCBieSB1c2luZyBpdHMgYXNzZXJ0aW9ucyBpbgoreW91ciBl
eGlzdGluZyB0ZXN0cy4gIEp1c3QgY2hhbmdlIHlvdXIgYG1haW4oKWAgZnVuY3Rpb24gdG8gbG9v
aworbGlrZToKKworYGBgCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworaW50IG1haW4oaW50
IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CisgIDo6dGVzdGluZzo6R1RFU1RfRkxBRyh0aHJvd19vbl9m
YWlsdXJlKSA9IHRydWU7CisgIC8vIEltcG9ydGFudDogR29vZ2xlIFRlc3QgbXVzdCBiZSBpbml0
aWFsaXplZC4KKyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisKKyAg
Li4uIHdoYXRldmVyIHlvdXIgZXhpc3RpbmcgdGVzdGluZyBmcmFtZXdvcmsgcmVxdWlyZXMgLi4u
Cit9CitgYGAKKworV2l0aCB0aGF0LCB5b3UgY2FuIHVzZSBHb29nbGUgVGVzdCBhc3NlcnRpb25z
IGluIGFkZGl0aW9uIHRvIHRoZQorbmF0aXZlIGFzc2VydGlvbnMgeW91ciB0ZXN0aW5nIGZyYW1l
d29yayBwcm92aWRlcywgZm9yIGV4YW1wbGU6CisKK2BgYAordm9pZCBUZXN0Rm9vRG9lc0Jhcigp
IHsKKyAgRm9vIGZvbzsKKyAgRVhQRUNUX0xFKGZvby5CYXIoMSksIDEwMCk7ICAgICAvLyBBIEdv
b2dsZSBUZXN0IGFzc2VydGlvbi4KKyAgQ1BQVU5JVF9BU1NFUlQoZm9vLklzRW1wdHkoKSk7ICAv
LyBBIG5hdGl2ZSBhc3NlcnRpb24uCit9CitgYGAKKworSWYgYSBHb29nbGUgVGVzdCBhc3NlcnRp
b24gZmFpbHMsIGl0IHdpbGwgcHJpbnQgYW4gZXJyb3IgbWVzc2FnZSBhbmQKK3Rocm93IGFuIGV4
Y2VwdGlvbiwgd2hpY2ggd2lsbCBiZSB0cmVhdGVkIGFzIGEgZmFpbHVyZSBieSB5b3VyIGhvc3QK
K3Rlc3RpbmcgZnJhbWV3b3JrLiAgSWYgeW91IGNvbXBpbGUgeW91ciBjb2RlIHdpdGggZXhjZXB0
aW9ucyBkaXNhYmxlZCwKK2EgZmFpbGVkIEdvb2dsZSBUZXN0IGFzc2VydGlvbiB3aWxsIGluc3Rl
YWQgZXhpdCB5b3VyIHByb2dyYW0gd2l0aCBhCitub24temVybyBjb2RlLCB3aGljaCB3aWxsIGFs
c28gc2lnbmFsIGEgdGVzdCBmYWlsdXJlIHRvIHlvdXIgdGVzdAorcnVubmVyLgorCitJZiB5b3Ug
ZG9uJ3Qgd3JpdGUgYDo6dGVzdGluZzo6R1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSA9IHRy
dWU7YCBpbgoreW91ciBgbWFpbigpYCwgeW91IGNhbiBhbHRlcm5hdGl2ZWx5IGVuYWJsZSB0aGlz
IGZlYXR1cmUgYnkgc3BlY2lmeWluZwordGhlIGAtLWd0ZXN0X3Rocm93X29uX2ZhaWx1cmVgIGZs
YWcgb24gdGhlIGNvbW1hbmQtbGluZSBvciBzZXR0aW5nIHRoZQorYEdURVNUX1RIUk9XX09OX0ZB
SUxVUkVgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGEgbm9uLXplcm8gdmFsdWUuCisKK19BdmFp
bGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjOyBzaW5jZSB2MS4zLjAuCisKKyMjIERpc3Ry
aWJ1dGluZyBUZXN0IEZ1bmN0aW9ucyB0byBNdWx0aXBsZSBNYWNoaW5lcyAjIworCitJZiB5b3Ug
aGF2ZSBtb3JlIHRoYW4gb25lIG1hY2hpbmUgeW91IGNhbiB1c2UgdG8gcnVuIGEgdGVzdCBwcm9n
cmFtLAoreW91IG1pZ2h0IHdhbnQgdG8gcnVuIHRoZSB0ZXN0IGZ1bmN0aW9ucyBpbiBwYXJhbGxl
bCBhbmQgZ2V0IHRoZQorcmVzdWx0IGZhc3Rlci4gIFdlIGNhbGwgdGhpcyB0ZWNobmlxdWUgX3No
YXJkaW5nXywgd2hlcmUgZWFjaCBtYWNoaW5lCitpcyBjYWxsZWQgYSBfc2hhcmRfLgorCitHb29n
bGUgVGVzdCBpcyBjb21wYXRpYmxlIHdpdGggdGVzdCBzaGFyZGluZy4gIFRvIHRha2UgYWR2YW50
YWdlIG9mCit0aGlzIGZlYXR1cmUsIHlvdXIgdGVzdCBydW5uZXIgKG5vdCBwYXJ0IG9mIEdvb2ds
ZSBUZXN0KSBuZWVkcyB0byBkbwordGhlIGZvbGxvd2luZzoKKworICAxLiBBbGxvY2F0ZSBhIG51
bWJlciBvZiBtYWNoaW5lcyAoc2hhcmRzKSB0byBydW4gdGhlIHRlc3RzLgorICAxLiBPbiBlYWNo
IHNoYXJkLCBzZXQgdGhlIGBHVEVTVF9UT1RBTF9TSEFSRFNgIGVudmlyb25tZW50IHZhcmlhYmxl
IHRvIHRoZSB0b3RhbCBudW1iZXIgb2Ygc2hhcmRzLiAgSXQgbXVzdCBiZSB0aGUgc2FtZSBmb3Ig
YWxsIHNoYXJkcy4KKyAgMS4gT24gZWFjaCBzaGFyZCwgc2V0IHRoZSBgR1RFU1RfU0hBUkRfSU5E
RVhgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHRoZSBpbmRleCBvZiB0aGUgc2hhcmQuICBEaWZm
ZXJlbnQgc2hhcmRzIG11c3QgYmUgYXNzaWduZWQgZGlmZmVyZW50IGluZGljZXMsIHdoaWNoIG11
c3QgYmUgaW4gdGhlIHJhbmdlIGBbMCwgR1RFU1RfVE9UQUxfU0hBUkRTIC0gMV1gLgorICAxLiBS
dW4gdGhlIHNhbWUgdGVzdCBwcm9ncmFtIG9uIGFsbCBzaGFyZHMuICBXaGVuIEdvb2dsZSBUZXN0
IHNlZXMgdGhlIGFib3ZlIHR3byBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIGl0IHdpbGwgc2VsZWN0
IGEgc3Vic2V0IG9mIHRoZSB0ZXN0IGZ1bmN0aW9ucyB0byBydW4uICBBY3Jvc3MgYWxsIHNoYXJk
cywgZWFjaCB0ZXN0IGZ1bmN0aW9uIGluIHRoZSBwcm9ncmFtIHdpbGwgYmUgcnVuIGV4YWN0bHkg
b25jZS4KKyAgMS4gV2FpdCBmb3IgYWxsIHNoYXJkcyB0byBmaW5pc2gsIHRoZW4gY29sbGVjdCBh
bmQgcmVwb3J0IHRoZSByZXN1bHRzLgorCitZb3VyIHByb2plY3QgbWF5IGhhdmUgdGVzdHMgdGhh
dCB3ZXJlIHdyaXR0ZW4gd2l0aG91dCBHb29nbGUgVGVzdCBhbmQKK3RodXMgZG9uJ3QgdW5kZXJz
dGFuZCB0aGlzIHByb3RvY29sLiAgSW4gb3JkZXIgZm9yIHlvdXIgdGVzdCBydW5uZXIgdG8KK2Zp
Z3VyZSBvdXQgd2hpY2ggdGVzdCBzdXBwb3J0cyBzaGFyZGluZywgaXQgY2FuIHNldCB0aGUgZW52
aXJvbm1lbnQKK3ZhcmlhYmxlIGBHVEVTVF9TSEFSRF9TVEFUVVNfRklMRWAgdG8gYSBub24tZXhp
c3RlbnQgZmlsZSBwYXRoLiAgSWYgYQordGVzdCBwcm9ncmFtIHN1cHBvcnRzIHNoYXJkaW5nLCBp
dCB3aWxsIGNyZWF0ZSB0aGlzIGZpbGUgdG8KK2Fja25vd2xlZGdlIHRoZSBmYWN0ICh0aGUgYWN0
dWFsIGNvbnRlbnRzIG9mIHRoZSBmaWxlIGFyZSBub3QKK2ltcG9ydGFudCBhdCB0aGlzIHRpbWU7
IGFsdGhvdWdoIHdlIG1heSBzdGljayBzb21lIHVzZWZ1bCBpbmZvcm1hdGlvbgoraW4gaXQgaW4g
dGhlIGZ1dHVyZS4pOyBvdGhlcndpc2UgaXQgd2lsbCBub3QgY3JlYXRlIGl0LgorCitIZXJlJ3Mg
YW4gZXhhbXBsZSB0byBtYWtlIGl0IGNsZWFyLiAgU3VwcG9zZSB5b3UgaGF2ZSBhIHRlc3QgcHJv
Z3JhbQorYGZvb190ZXN0YCB0aGF0IGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgNSB0ZXN0IGZ1bmN0
aW9uczoKK2BgYAorVEVTVChBLCBWKQorVEVTVChBLCBXKQorVEVTVChCLCBYKQorVEVTVChCLCBZ
KQorVEVTVChCLCBaKQorYGBgCithbmQgeW91IGhhdmUgMyBtYWNoaW5lcyBhdCB5b3VyIGRpc3Bv
c2FsLiAgVG8gcnVuIHRoZSB0ZXN0IGZ1bmN0aW9ucyBpbgorcGFyYWxsZWwsIHlvdSB3b3VsZCBz
ZXQgYEdURVNUX1RPVEFMX1NIQVJEU2AgdG8gMyBvbiBhbGwgbWFjaGluZXMsIGFuZAorc2V0IGBH
VEVTVF9TSEFSRF9JTkRFWGAgdG8gMCwgMSwgYW5kIDIgb24gdGhlIG1hY2hpbmVzIHJlc3BlY3Rp
dmVseS4KK1RoZW4geW91IHdvdWxkIHJ1biB0aGUgc2FtZSBgZm9vX3Rlc3RgIG9uIGVhY2ggbWFj
aGluZS4KKworR29vZ2xlIFRlc3QgcmVzZXJ2ZXMgdGhlIHJpZ2h0IHRvIGNoYW5nZSBob3cgdGhl
IHdvcmsgaXMgZGlzdHJpYnV0ZWQKK2Fjcm9zcyB0aGUgc2hhcmRzLCBidXQgaGVyZSdzIG9uZSBw
b3NzaWJsZSBzY2VuYXJpbzoKKworICAqIE1hY2hpbmUgIzAgcnVucyBgQS5WYCBhbmQgYEIuWGAu
CisgICogTWFjaGluZSAjMSBydW5zIGBBLldgIGFuZCBgQi5ZYC4KKyAgKiBNYWNoaW5lICMyIHJ1
bnMgYEIuWmAuCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjOyBzaW5jZSB2
ZXJzaW9uIDEuMy4wLgorCisjIEZ1c2luZyBHb29nbGUgVGVzdCBTb3VyY2UgRmlsZXMgIworCitH
b29nbGUgVGVzdCdzIGltcGxlbWVudGF0aW9uIGNvbnNpc3RzIG9mIH4zMCBmaWxlcyAoZXhjbHVk
aW5nIGl0cyBvd24KK3Rlc3RzKS4gIFNvbWV0aW1lcyB5b3UgbWF5IHdhbnQgdGhlbSB0byBiZSBw
YWNrYWdlZCB1cCBpbiB0d28gZmlsZXMgKGEKK2AuaGAgYW5kIGEgYC5jY2ApIGluc3RlYWQsIHN1
Y2ggdGhhdCB5b3UgY2FuIGVhc2lseSBjb3B5IHRoZW0gdG8gYSBuZXcKK21hY2hpbmUgYW5kIHN0
YXJ0IGhhY2tpbmcgdGhlcmUuICBGb3IgdGhpcyB3ZSBwcm92aWRlIGFuIGV4cGVyaW1lbnRhbAor
UHl0aG9uIHNjcmlwdCBgZnVzZV9ndGVzdF9maWxlcy5weWAgaW4gdGhlIGBzY3JpcHRzL2AgZGly
ZWN0b3J5IChzaW5jZSByZWxlYXNlIDEuMy4wKS4KK0Fzc3VtaW5nIHlvdSBoYXZlIFB5dGhvbiAy
LjQgb3IgYWJvdmUgaW5zdGFsbGVkIG9uIHlvdXIgbWFjaGluZSwganVzdAorZ28gdG8gdGhhdCBk
aXJlY3RvcnkgYW5kIHJ1bgorYGBgCitweXRob24gZnVzZV9ndGVzdF9maWxlcy5weSBPVVRQVVRf
RElSCitgYGAKKworYW5kIHlvdSBzaG91bGQgc2VlIGFuIGBPVVRQVVRfRElSYCBkaXJlY3Rvcnkg
YmVpbmcgY3JlYXRlZCB3aXRoIGZpbGVzCitgZ3Rlc3QvZ3Rlc3QuaGAgYW5kIGBndGVzdC9ndGVz
dC1hbGwuY2NgIGluIGl0LiAgVGhlc2UgZmlsZXMgY29udGFpbgorZXZlcnl0aGluZyB5b3UgbmVl
ZCB0byB1c2UgR29vZ2xlIFRlc3QuICBKdXN0IGNvcHkgdGhlbSB0byBhbnl3aGVyZQoreW91IHdh
bnQgYW5kIHlvdSBhcmUgcmVhZHkgdG8gd3JpdGUgdGVzdHMuICBZb3UgY2FuIHVzZSB0aGUKK1tz
Y3JpcHRzL3Rlc3QvTWFrZWZpbGVdKC4uL3NjcmlwdHMvdGVzdC9NYWtlZmlsZSkKK2ZpbGUgYXMg
YW4gZXhhbXBsZSBvbiBob3cgdG8gY29tcGlsZSB5b3VyIHRlc3RzIGFnYWluc3QgdGhlbS4KKwor
IyBXaGVyZSB0byBHbyBmcm9tIEhlcmUgIworCitDb25ncmF0dWxhdGlvbnMhIFlvdSd2ZSBub3cg
bGVhcm5lZCBtb3JlIGFkdmFuY2VkIEdvb2dsZSBUZXN0IHRvb2xzIGFuZCBhcmUKK3JlYWR5IHRv
IHRhY2tsZSBtb3JlIGNvbXBsZXggdGVzdGluZyB0YXNrcy4gSWYgeW91IHdhbnQgdG8gZGl2ZSBl
dmVuIGRlZXBlciwgeW91CitjYW4gcmVhZCB0aGUgW0ZyZXF1ZW50bHktQXNrZWQgUXVlc3Rpb25z
XShWMV82X0ZBUS5tZCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1YxXzZfRG9jdW1l
bnRhdGlvbi5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfNl9Eb2N1bWVudGF0aW9uLm1kCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmNhOTI0NjYwYTNkYzA2MDNmODEzNzQzODk4Y2NkNmMzYzkyMDc5NzUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1YxXzZfRG9jdW1lbnRhdGlvbi5tZApAQCAtMCww
ICsxLDE0IEBACitUaGlzIHBhZ2UgbGlzdHMgYWxsIGRvY3VtZW50YXRpb24gd2lraSBwYWdlcyBm
b3IgR29vZ2xlIFRlc3QgKioxLjYqKgorLS0gKippZiB5b3UgdXNlIGEgcmVsZWFzZWQgdmVyc2lv
biBvZiBHb29nbGUgVGVzdCwgcGxlYXNlIHJlYWQgdGhlCitkb2N1bWVudGF0aW9uIGZvciB0aGF0
IHNwZWNpZmljIHZlcnNpb24gaW5zdGVhZC4qKgorCisgICogW1ByaW1lcl0oVjFfNl9QcmltZXIu
bWQpIC0tIHN0YXJ0IGhlcmUgaWYgeW91IGFyZSBuZXcgdG8gR29vZ2xlIFRlc3QuCisgICogW1Nh
bXBsZXNdKFYxXzZfU2FtcGxlcy5tZCkgLS0gbGVhcm4gZnJvbSBleGFtcGxlcy4KKyAgKiBbQWR2
YW5jZWRHdWlkZV0oVjFfNl9BZHZhbmNlZEd1aWRlLm1kKSAtLSBsZWFybiBtb3JlIGFib3V0IEdv
b2dsZSBUZXN0LgorICAqIFtYY29kZUd1aWRlXShWMV82X1hjb2RlR3VpZGUubWQpIC0tIGhvdyB0
byB1c2UgR29vZ2xlIFRlc3QgaW4gWGNvZGUgb24gTWFjLgorICAqIFtGcmVxdWVudGx5LUFza2Vk
IFF1ZXN0aW9uc10oVjFfNl9GQVEubWQpIC0tIGNoZWNrIGhlcmUgYmVmb3JlIGFza2luZyBhIHF1
ZXN0aW9uIG9uIHRoZSBtYWlsaW5nIGxpc3QuCisKK1RvIGNvbnRyaWJ1dGUgY29kZSB0byBHb29n
bGUgVGVzdCwgcmVhZDoKKworICAqIFtEZXZHdWlkZV0oRGV2R3VpZGUubWQpIC0tIHJlYWQgdGhp
cyBfYmVmb3JlXyB3cml0aW5nIHlvdXIgZmlyc3QgcGF0Y2guCisgICogW1B1bXBNYW51YWxdKFYx
XzZfUHVtcE1hbnVhbC5tZCkgLS0gaG93IHdlIGdlbmVyYXRlIHNvbWUgb2YgR29vZ2xlIFRlc3Qn
cyBzb3VyY2UgZmlsZXMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZXRlc3QvZG9jcy9WMV82X0ZBUS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfNl9GQVEu
bWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMmI3Zjc4NDA3NzIyZTFlNWU3YTg2YzY3MTM1OThlNTc5NjA3Yjc4MQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfNl9GQVEubWQKQEAgLTAsMCAr
MSwxMDM4IEBACisKKworSWYgeW91IGNhbm5vdCBmaW5kIHRoZSBhbnN3ZXIgdG8geW91ciBxdWVz
dGlvbiBoZXJlLCBhbmQgeW91IGhhdmUgcmVhZAorW1ByaW1lcl0oVjFfNl9QcmltZXIubWQpIGFu
ZCBbQWR2YW5jZWRHdWlkZV0oVjFfNl9BZHZhbmNlZEd1aWRlLm1kKSwgc2VuZCBpdCB0bworZ29v
Z2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tLgorCisjIyBXaHkgc2hvdWxkIEkgdXNl
IEdvb2dsZSBUZXN0IGluc3RlYWQgb2YgbXkgZmF2b3JpdGUgQysrIHRlc3RpbmcgZnJhbWV3b3Jr
PyAjIworCitGaXJzdCwgbGV0IHVzIHNheSBjbGVhcmx5IHRoYXQgd2UgZG9uJ3Qgd2FudCB0byBn
ZXQgaW50byB0aGUgZGViYXRlIG9mCit3aGljaCBDKysgdGVzdGluZyBmcmFtZXdvcmsgaXMgKip0
aGUgYmVzdCoqLiAgVGhlcmUgZXhpc3QgbWFueSBmaW5lCitmcmFtZXdvcmtzIGZvciB3cml0aW5n
IEMrKyB0ZXN0cywgYW5kIHdlIGhhdmUgdHJlbWVuZG91cyByZXNwZWN0IGZvcgordGhlIGRldmVs
b3BlcnMgYW5kIHVzZXJzIG9mIHRoZW0uICBXZSBkb24ndCB0aGluayB0aGVyZSBpcyAob3Igd2ls
bAorYmUpIGEgc2luZ2xlIGJlc3QgZnJhbWV3b3JrIC0geW91IGhhdmUgdG8gcGljayB0aGUgcmln
aHQgdG9vbCBmb3IgdGhlCitwYXJ0aWN1bGFyIHRhc2sgeW91IGFyZSB0YWNrbGluZy4KKworV2Ug
Y3JlYXRlZCBHb29nbGUgVGVzdCBiZWNhdXNlIHdlIGNvdWxkbid0IGZpbmQgdGhlIHJpZ2h0IGNv
bWJpbmF0aW9uCitvZiBmZWF0dXJlcyBhbmQgY29udmVuaWVuY2VzIGluIGFuIGV4aXN0aW5nIGZy
YW1ld29yayB0byBzYXRpc2Z5IF9vdXJfCituZWVkcy4gIFRoZSBmb2xsb3dpbmcgaXMgYSBsaXN0
IG9mIHRoaW5ncyB0aGF0IF93ZV8gbGlrZSBhYm91dCBHb29nbGUKK1Rlc3QuICBXZSBkb24ndCBj
bGFpbSB0aGVtIHRvIGJlIHVuaXF1ZSB0byBHb29nbGUgVGVzdCAtIHJhdGhlciwgdGhlCitjb21i
aW5hdGlvbiBvZiB0aGVtIG1ha2VzIEdvb2dsZSBUZXN0IHRoZSBjaG9pY2UgZm9yIHVzLiAgV2Ug
aG9wZSB0aGlzCitsaXN0IGNhbiBoZWxwIHlvdSBkZWNpZGUgd2hldGhlciBpdCBpcyBmb3IgeW91
IHRvby4KKworICAqIEdvb2dsZSBUZXN0IGlzIGRlc2lnbmVkIHRvIGJlIHBvcnRhYmxlOiBpdCBk
b2Vzbid0IHJlcXVpcmUgZXhjZXB0aW9ucyBvciBSVFRJOyBpdCB3b3JrcyBhcm91bmQgdmFyaW91
cyBidWdzIGluIHZhcmlvdXMgY29tcGlsZXJzIGFuZCBlbnZpcm9ubWVudHM7IGV0Yy4gIEFzIGEg
cmVzdWx0LCBpdCB3b3JrcyBvbiBMaW51eCwgTWFjIE9TIFgsIFdpbmRvd3MgYW5kIHNldmVyYWwg
ZW1iZWRkZWQgb3BlcmF0aW5nIHN5c3RlbXMuCisgICogTm9uZmF0YWwgYXNzZXJ0aW9ucyAoYEVY
UEVDVF8qYCkgaGF2ZSBwcm92ZW4gdG8gYmUgZ3JlYXQgdGltZSBzYXZlcnMsIGFzIHRoZXkgYWxs
b3cgYSB0ZXN0IHRvIHJlcG9ydCBtdWx0aXBsZSBmYWlsdXJlcyBpbiBhIHNpbmdsZSBlZGl0LWNv
bXBpbGUtdGVzdCBjeWNsZS4KKyAgKiBJdCdzIGVhc3kgdG8gd3JpdGUgYXNzZXJ0aW9ucyB0aGF0
IGdlbmVyYXRlIGluZm9ybWF0aXZlIG1lc3NhZ2VzOiB5b3UganVzdCB1c2UgdGhlIHN0cmVhbSBz
eW50YXggdG8gYXBwZW5kIGFueSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLCBlLmcuIGBBU1NFUlRf
RVEoNSwgRm9vKGkpKSA8PCAiIHdoZXJlIGkgPSAiIDw8IGk7YC4gIEl0IGRvZXNuJ3QgcmVxdWly
ZSBhIG5ldyBzZXQgb2YgbWFjcm9zIG9yIHNwZWNpYWwgZnVuY3Rpb25zLgorICAqIEdvb2dsZSBU
ZXN0IGF1dG9tYXRpY2FsbHkgZGV0ZWN0cyB5b3VyIHRlc3RzIGFuZCBkb2Vzbid0IHJlcXVpcmUg
eW91IHRvIGVudW1lcmF0ZSB0aGVtIGluIG9yZGVyIHRvIHJ1biB0aGVtLgorICAqIERlYXRoIHRl
c3RzIGFyZSBwcmV0dHkgaGFuZHkgZm9yIGVuc3VyaW5nIHRoYXQgeW91ciBhc3NlcnRzIGluIHBy
b2R1Y3Rpb24gY29kZSBhcmUgdHJpZ2dlcmVkIGJ5IHRoZSByaWdodCBjb25kaXRpb25zLgorICAq
IGBTQ09QRURfVFJBQ0VgIGhlbHBzIHlvdSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIGFuIGFz
c2VydGlvbiBmYWlsdXJlIHdoZW4gaXQgY29tZXMgZnJvbSBpbnNpZGUgYSBzdWItcm91dGluZSBv
ciBsb29wLgorICAqIFlvdSBjYW4gZGVjaWRlIHdoaWNoIHRlc3RzIHRvIHJ1biB1c2luZyBuYW1l
IHBhdHRlcm5zLiAgVGhpcyBzYXZlcyB0aW1lIHdoZW4geW91IHdhbnQgdG8gcXVpY2tseSByZXBy
b2R1Y2UgYSB0ZXN0IGZhaWx1cmUuCisgICogR29vZ2xlIFRlc3QgY2FuIGdlbmVyYXRlIFhNTCB0
ZXN0IHJlc3VsdCByZXBvcnRzIHRoYXQgY2FuIGJlIHBhcnNlZCBieSBwb3B1bGFyIGNvbnRpbnVv
dXMgYnVpbGQgc3lzdGVtIGxpa2UgSHVkc29uLgorICAqIFNpbXBsZSB0aGluZ3MgYXJlIGVhc3kg
aW4gR29vZ2xlIFRlc3QsIHdoaWxlIGhhcmQgdGhpbmdzIGFyZSBwb3NzaWJsZTogaW4gYWRkaXRp
b24gdG8gYWR2YW5jZWQgZmVhdHVyZXMgbGlrZSBbZ2xvYmFsIHRlc3QgZW52aXJvbm1lbnRzXShW
MV82X0FkdmFuY2VkR3VpZGUubWQjR2xvYmFsX1NldC1VcF9hbmRfVGVhci1Eb3duKSBhbmQgdGVz
dHMgcGFyYW1ldGVyaXplZCBieSBbdmFsdWVzXShWMV82X0FkdmFuY2VkR3VpZGUubWQjdmFsdWUt
cGFyYW1ldGVyaXplZC10ZXN0cykgb3IgW3R5cGVzXShWMV82X0FkdmFuY2VkR3VpZGUubWQjdHlw
ZWQtdGVzdHMpLCBHb29nbGUgVGVzdCBzdXBwb3J0cyB2YXJpb3VzIHdheXMgZm9yIHRoZSB1c2Vy
IHRvIGV4dGVuZCB0aGUgZnJhbWV3b3JrIC0tIGlmIEdvb2dsZSBUZXN0IGRvZXNuJ3QgZG8gc29t
ZXRoaW5nIG91dCBvZiB0aGUgYm94LCBjaGFuY2VzIGFyZSB0aGF0IGEgdXNlciBjYW4gaW1wbGVt
ZW50IHRoZSBmZWF0dXJlIHVzaW5nIEdvb2dsZSBUZXN0J3MgcHVibGljIEFQSSwgd2l0aG91dCBj
aGFuZ2luZyBHb29nbGUgVGVzdCBpdHNlbGYuICBJbiBwYXJ0aWN1bGFyLCB5b3UgY2FuOgorICAg
ICogZXhwYW5kIHlvdXIgdGVzdGluZyB2b2NhYnVsYXJ5IGJ5IGRlZmluaW5nIFtjdXN0b20gcHJl
ZGljYXRlc10oVjFfNl9BZHZhbmNlZEd1aWRlLm1kI3ByZWRpY2F0ZS1hc3NlcnRpb25zLWZvci1i
ZXR0ZXItZXJyb3ItbWVzc2FnZXMpLAorICAgICogdGVhY2ggR29vZ2xlIFRlc3QgaG93IHRvIFtw
cmludCB5b3VyIHR5cGVzXShWMV82X0FkdmFuY2VkR3VpZGUubWQjdGVhY2hpbmctZ29vZ2xlLXRl
c3QtaG93LXRvLXByaW50LXlvdXItdmFsdWVzKSwKKyAgICAqIGRlZmluZSB5b3VyIG93biB0ZXN0
aW5nIG1hY3JvcyBvciB1dGlsaXRpZXMgYW5kIHZlcmlmeSB0aGVtIHVzaW5nIEdvb2dsZSBUZXN0
J3MgW1NlcnZpY2UgUHJvdmlkZXIgSW50ZXJmYWNlXShWMV82X0FkdmFuY2VkR3VpZGUubWQjY2F0
Y2hpbmctZmFpbHVyZXMpLCBhbmQKKyAgICAqIHJlZmxlY3Qgb24gdGhlIHRlc3QgY2FzZXMgb3Ig
Y2hhbmdlIHRoZSB0ZXN0IG91dHB1dCBmb3JtYXQgYnkgaW50ZXJjZXB0aW5nIHRoZSBbdGVzdCBl
dmVudHNdKFYxXzZfQWR2YW5jZWRHdWlkZS5tZCNleHRlbmRpbmctZ29vZ2xlLXRlc3QtYnktaGFu
ZGxpbmctdGVzdC1ldmVudHMpLgorCisjIyBJJ20gZ2V0dGluZyB3YXJuaW5ncyB3aGVuIGNvbXBp
bGluZyBHb29nbGUgVGVzdC4gIFdvdWxkIHlvdSBmaXggdGhlbT8gIyMKKworV2Ugc3RyaXZlIHRv
IG1pbmltaXplIGNvbXBpbGVyIHdhcm5pbmdzIEdvb2dsZSBUZXN0IGdlbmVyYXRlcy4gIEJlZm9y
ZSByZWxlYXNpbmcgYSBuZXcgdmVyc2lvbiwgd2UgdGVzdCB0byBtYWtlIHN1cmUgdGhhdCBpdCBk
b2Vzbid0IGdlbmVyYXRlIHdhcm5pbmdzIHdoZW4gY29tcGlsZWQgdXNpbmcgaXRzIENNYWtlIHNj
cmlwdCBvbiBXaW5kb3dzLCBMaW51eCwgYW5kIE1hYyBPUy4KKworVW5mb3J0dW5hdGVseSwgdGhp
cyBkb2Vzbid0IG1lYW4geW91IGFyZSBndWFyYW50ZWVkIHRvIHNlZSBubyB3YXJuaW5ncyB3aGVu
IGNvbXBpbGluZyBHb29nbGUgVGVzdCBpbiB5b3VyIGVudmlyb25tZW50OgorCisgICogWW91IG1h
eSBiZSB1c2luZyBhIGRpZmZlcmVudCBjb21waWxlciBhcyB3ZSB1c2UsIG9yIGEgZGlmZmVyZW50
IHZlcnNpb24gb2YgdGhlIHNhbWUgY29tcGlsZXIuICBXZSBjYW5ub3QgcG9zc2libHkgdGVzdCBm
b3IgYWxsIGNvbXBpbGVycy4KKyAgKiBZb3UgbWF5IGJlIGNvbXBpbGluZyBvbiBhIGRpZmZlcmVu
dCBwbGF0Zm9ybSBhcyB3ZSBkby4KKyAgKiBZb3VyIHByb2plY3QgbWF5IGJlIHVzaW5nIGRpZmZl
cmVudCBjb21waWxlciBmbGFncyBhcyB3ZSBkby4KKworSXQgaXMgbm90IGFsd2F5cyBwb3NzaWJs
ZSB0byBtYWtlIEdvb2dsZSBUZXN0IHdhcm5pbmctZnJlZSBmb3IgZXZlcnlvbmUuICBPciwgaXQg
bWF5IG5vdCBiZSBkZXNpcmFibGUgaWYgdGhlIHdhcm5pbmcgaXMgcmFyZWx5IGVuYWJsZWQgYW5k
IGZpeGluZyB0aGUgdmlvbGF0aW9ucyBtYWtlcyB0aGUgY29kZSBtb3JlIGNvbXBsZXguCisKK0lm
IHlvdSBzZWUgd2FybmluZ3Mgd2hlbiBjb21waWxpbmcgR29vZ2xlIFRlc3QsIHdlIHN1Z2dlc3Qg
dGhhdCB5b3UgdXNlIHRoZSBgLWlzeXN0ZW1gIGZsYWcgKGFzc3VtaW5nIHlvdXIgYXJlIHVzaW5n
IEdDQykgdG8gbWFyayBHb29nbGUgVGVzdCBoZWFkZXJzIGFzIHN5c3RlbSBoZWFkZXJzLiAgVGhh
dCdsbCBzdXBwcmVzcyB3YXJuaW5ncyBmcm9tIEdvb2dsZSBUZXN0IGhlYWRlcnMuCisKKyMjIFdo
eSBzaG91bGQgbm90IHRlc3QgY2FzZSBuYW1lcyBhbmQgdGVzdCBuYW1lcyBjb250YWluIHVuZGVy
c2NvcmU/ICMjCisKK1VuZGVyc2NvcmUgKGBfYCkgaXMgc3BlY2lhbCwgYXMgQysrIHJlc2VydmVz
IHRoZSBmb2xsb3dpbmcgdG8gYmUgdXNlZCBieQordGhlIGNvbXBpbGVyIGFuZCB0aGUgc3RhbmRh
cmQgbGlicmFyeToKKworICAxLiBhbnkgaWRlbnRpZmllciB0aGF0IHN0YXJ0cyB3aXRoIGFuIGBf
YCBmb2xsb3dlZCBieSBhbiB1cHBlci1jYXNlIGxldHRlciwgYW5kCisgIDEuIGFueSBpZGVudGlm
aWVyIHRoYXQgY29udGFpbmVycyB0d28gY29uc2VjdXRpdmUgdW5kZXJzY29yZXMgKGkuZS4gYF9f
YCkgX2FueXdoZXJlXyBpbiBpdHMgbmFtZS4KKworVXNlciBjb2RlIGlzIF9wcm9oaWJpdGVkXyBm
cm9tIHVzaW5nIHN1Y2ggaWRlbnRpZmllcnMuCisKK05vdyBsZXQncyBsb29rIGF0IHdoYXQgdGhp
cyBtZWFucyBmb3IgYFRFU1RgIGFuZCBgVEVTVF9GYC4KKworQ3VycmVudGx5IGBURVNUKFRlc3RD
YXNlTmFtZSwgVGVzdE5hbWUpYCBnZW5lcmF0ZXMgYSBjbGFzcyBuYW1lZAorYFRlc3RDYXNlTmFt
ZV9UZXN0TmFtZV9UZXN0YC4gIFdoYXQgaGFwcGVucyBpZiBgVGVzdENhc2VOYW1lYCBvciBgVGVz
dE5hbWVgCitjb250YWlucyBgX2A/CisKKyAgMS4gSWYgYFRlc3RDYXNlTmFtZWAgc3RhcnRzIHdp
dGggYW4gYF9gIGZvbGxvd2VkIGJ5IGFuIHVwcGVyLWNhc2UgbGV0dGVyIChzYXksIGBfRm9vYCks
IHdlIGVuZCB1cCB3aXRoIGBfRm9vX1Rlc3ROYW1lX1Rlc3RgLCB3aGljaCBpcyByZXNlcnZlZCBh
bmQgdGh1cyBpbnZhbGlkLgorICAxLiBJZiBgVGVzdENhc2VOYW1lYCBlbmRzIHdpdGggYW4gYF9g
IChzYXksIGBGb29fYCksIHdlIGdldCBgRm9vX19UZXN0TmFtZV9UZXN0YCwgd2hpY2ggaXMgaW52
YWxpZC4KKyAgMS4gSWYgYFRlc3ROYW1lYCBzdGFydHMgd2l0aCBhbiBgX2AgKHNheSwgYF9CYXJg
KSwgd2UgZ2V0IGBUZXN0Q2FzZU5hbWVfX0Jhcl9UZXN0YCwgd2hpY2ggaXMgaW52YWxpZC4KKyAg
MS4gSWYgYFRlc3ROYW1lYCBlbmRzIHdpdGggYW4gYF9gIChzYXksIGBCYXJfYCksIHdlIGdldCBg
VGVzdENhc2VOYW1lX0Jhcl9fVGVzdGAsIHdoaWNoIGlzIGludmFsaWQuCisKK1NvIGNsZWFybHkg
YFRlc3RDYXNlTmFtZWAgYW5kIGBUZXN0TmFtZWAgY2Fubm90IHN0YXJ0IG9yIGVuZCB3aXRoIGBf
YAorKEFjdHVhbGx5LCBgVGVzdENhc2VOYW1lYCBjYW4gc3RhcnQgd2l0aCBgX2AgLS0gYXMgbG9u
ZyBhcyB0aGUgYF9gIGlzbid0Citmb2xsb3dlZCBieSBhbiB1cHBlci1jYXNlIGxldHRlci4gIEJ1
dCB0aGF0J3MgZ2V0dGluZyBjb21wbGljYXRlZC4gIFNvCitmb3Igc2ltcGxpY2l0eSB3ZSBqdXN0
IHNheSB0aGF0IGl0IGNhbm5vdCBzdGFydCB3aXRoIGBfYC4pLgorCitJdCBtYXkgc2VlbSBmaW5l
IGZvciBgVGVzdENhc2VOYW1lYCBhbmQgYFRlc3ROYW1lYCB0byBjb250YWluIGBfYCBpbiB0aGUK
K21pZGRsZS4gIEhvd2V2ZXIsIGNvbnNpZGVyIHRoaXM6CitgYGAKK1RFU1QoVGltZSwgRmxpZXNf
TGlrZV9Bbl9BcnJvdykgeyAuLi4gfQorVEVTVChUaW1lX0ZsaWVzLCBMaWtlX0FuX0Fycm93KSB7
IC4uLiB9CitgYGAKKworTm93LCB0aGUgdHdvIGBURVNUYHMgd2lsbCBib3RoIGdlbmVyYXRlIHRo
ZSBzYW1lIGNsYXNzCisoYFRpbWVfRmlsZXNfTGlrZV9Bbl9BcnJvd19UZXN0YCkuICBUaGF0J3Mg
bm90IGdvb2QuCisKK1NvIGZvciBzaW1wbGljaXR5LCB3ZSBqdXN0IGFzayB0aGUgdXNlcnMgdG8g
YXZvaWQgYF9gIGluIGBUZXN0Q2FzZU5hbWVgCithbmQgYFRlc3ROYW1lYC4gIFRoZSBydWxlIGlz
IG1vcmUgY29uc3RyYWluaW5nIHRoYW4gbmVjZXNzYXJ5LCBidXQgaXQncworc2ltcGxlIGFuZCBl
YXN5IHRvIHJlbWVtYmVyLiAgSXQgYWxzbyBnaXZlcyBHb29nbGUgVGVzdCBzb21lIHdpZ2dsZQor
cm9vbSBpbiBjYXNlIGl0cyBpbXBsZW1lbnRhdGlvbiBuZWVkcyB0byBjaGFuZ2UgaW4gdGhlIGZ1
dHVyZS4KKworSWYgeW91IHZpb2xhdGUgdGhlIHJ1bGUsIHRoZXJlIG1heSBub3QgYmUgaW1tZWRp
YXRlbHkgY29uc2VxdWVuY2VzLAorYnV0IHlvdXIgdGVzdCBtYXkgKGp1c3QgbWF5KSBicmVhayB3
aXRoIGEgbmV3IGNvbXBpbGVyIChvciBhIG5ldwordmVyc2lvbiBvZiB0aGUgY29tcGlsZXIgeW91
IGFyZSB1c2luZykgb3Igd2l0aCBhIG5ldyB2ZXJzaW9uIG9mIEdvb2dsZQorVGVzdC4gIFRoZXJl
Zm9yZSBpdCdzIGJlc3QgdG8gZm9sbG93IHRoZSBydWxlLgorCisjIyBXaHkgaXMgaXQgbm90IHJl
Y29tbWVuZGVkIHRvIGluc3RhbGwgYSBwcmUtY29tcGlsZWQgY29weSBvZiBHb29nbGUgVGVzdCAo
Zm9yIGV4YW1wbGUsIGludG8gL3Vzci9sb2NhbCk/ICMjCisKK0luIHRoZSBlYXJseSBkYXlzLCB3
ZSBzYWlkIHRoYXQgeW91IGNvdWxkIGluc3RhbGwKK2NvbXBpbGVkIEdvb2dsZSBUZXN0IGxpYnJh
cmllcyBvbiBgKmBuaXggc3lzdGVtcyB1c2luZyBgbWFrZSBpbnN0YWxsYC4KK1RoZW4gZXZlcnkg
dXNlciBvZiB5b3VyIG1hY2hpbmUgY2FuIHdyaXRlIHRlc3RzIHdpdGhvdXQKK3JlY29tcGlsaW5n
IEdvb2dsZSBUZXN0LgorCitUaGlzIHNlZW1lZCBsaWtlIGEgZ29vZCBpZGVhLCBidXQgaXQgaGFz
IGEKK2dvdC1jaGE6IGV2ZXJ5IHVzZXIgbmVlZHMgdG8gY29tcGlsZSBoaXMgdGVzdHMgdXNpbmcg
dGhlIF9zYW1lXyBjb21waWxlcgorZmxhZ3MgdXNlZCB0byBjb21waWxlIHRoZSBpbnN0YWxsZWQg
R29vZ2xlIFRlc3QgbGlicmFyaWVzOyBvdGhlcndpc2UKK2hlIG1heSBydW4gaW50byB1bmRlZmlu
ZWQgYmVoYXZpb3JzIChpLmUuIHRoZSB0ZXN0cyBjYW4gYmVoYXZlCitzdHJhbmdlbHkgYW5kIG1h
eSBldmVuIGNyYXNoIGZvciBubyBvYnZpb3VzIHJlYXNvbnMpLgorCitXaHk/ICBCZWNhdXNlIEMr
KyBoYXMgdGhpcyB0aGluZyBjYWxsZWQgdGhlIE9uZS1EZWZpbml0aW9uIFJ1bGU6IGlmCit0d28g
QysrIHNvdXJjZSBmaWxlcyBjb250YWluIGRpZmZlcmVudCBkZWZpbml0aW9ucyBvZiB0aGUgc2Ft
ZQorY2xhc3MvZnVuY3Rpb24vdmFyaWFibGUsIGFuZCB5b3UgbGluayB0aGVtIHRvZ2V0aGVyLCB5
b3UgdmlvbGF0ZSB0aGUKK3J1bGUuICBUaGUgbGlua2VyIG1heSBvciBtYXkgbm90IGNhdGNoIHRo
ZSBlcnJvciAoaW4gbWFueSBjYXNlcyBpdCdzCitub3QgcmVxdWlyZWQgYnkgdGhlIEMrKyBzdGFu
ZGFyZCB0byBjYXRjaCB0aGUgdmlvbGF0aW9uKS4gIElmIGl0Citkb2Vzbid0LCB5b3UgZ2V0IHN0
cmFuZ2UgcnVuLXRpbWUgYmVoYXZpb3JzIHRoYXQgYXJlIHVuZXhwZWN0ZWQgYW5kCitoYXJkIHRv
IGRlYnVnLgorCitJZiB5b3UgY29tcGlsZSBHb29nbGUgVGVzdCBhbmQgeW91ciB0ZXN0IGNvZGUg
dXNpbmcgZGlmZmVyZW50IGNvbXBpbGVyCitmbGFncywgdGhleSBtYXkgc2VlIGRpZmZlcmVudCBk
ZWZpbml0aW9ucyBvZiB0aGUgc2FtZQorY2xhc3MvZnVuY3Rpb24vdmFyaWFibGUgKGUuZy4gZHVl
IHRvIHRoZSB1c2Ugb2YgYCNpZmAgaW4gR29vZ2xlIFRlc3QpLgorVGhlcmVmb3JlLCBmb3IgeW91
ciBzYW5pdHksIHdlIHJlY29tbWVuZCB0byBhdm9pZCBpbnN0YWxsaW5nIHByZS1jb21waWxlZAor
R29vZ2xlIFRlc3QgbGlicmFyaWVzLiAgSW5zdGVhZCwgZWFjaCBwcm9qZWN0IHNob3VsZCBjb21w
aWxlCitHb29nbGUgVGVzdCBpdHNlbGYgc3VjaCB0aGF0IGl0IGNhbiBiZSBzdXJlIHRoYXQgdGhl
IHNhbWUgZmxhZ3MgYXJlCit1c2VkIGZvciBib3RoIEdvb2dsZSBUZXN0IGFuZCB0aGUgdGVzdHMu
CisKKyMjIEhvdyBkbyBJIGdlbmVyYXRlIDY0LWJpdCBiaW5hcmllcyBvbiBXaW5kb3dzICh1c2lu
ZyBWaXN1YWwgU3R1ZGlvIDIwMDgpPyAjIworCisoQW5zd2VyZWQgYnkgVHJldm9yIFJvYmluc29u
KQorCitMb2FkIHRoZSBzdXBwbGllZCBWaXN1YWwgU3R1ZGlvIHNvbHV0aW9uIGZpbGUsIGVpdGhl
ciBgbXN2Y1xndGVzdC1tZC5zbG5gIG9yCitgbXN2Y1xndGVzdC5zbG5gLiBHbyB0aHJvdWdoIHRo
ZSBtaWdyYXRpb24gd2l6YXJkIHRvIG1pZ3JhdGUgdGhlCitzb2x1dGlvbiBhbmQgcHJvamVjdCBm
aWxlcyB0byBWaXN1YWwgU3R1ZGlvIDIwMDguIFNlbGVjdAorYENvbmZpZ3VyYXRpb24gTWFuYWdl
ci4uLmAgZnJvbSB0aGUgYEJ1aWxkYCBtZW51LiBTZWxlY3QgYDxOZXcuLi4+YCBmcm9tCit0aGUg
YEFjdGl2ZSBzb2x1dGlvbiBwbGF0Zm9ybWAgZHJvcGRvd24uICBTZWxlY3QgYHg2NGAgZnJvbSB0
aGUgbmV3CitwbGF0Zm9ybSBkcm9wZG93biwgbGVhdmUgYENvcHkgc2V0dGluZ3MgZnJvbWAgc2V0
IHRvIGBXaW4zMmAgYW5kCitgQ3JlYXRlIG5ldyBwcm9qZWN0IHBsYXRmb3Jtc2AgY2hlY2tlZCwg
dGhlbiBjbGljayBgT0tgLiBZb3Ugbm93IGhhdmUKK2BXaW4zMmAgYW5kIGB4NjRgIHBsYXRmb3Jt
IGNvbmZpZ3VyYXRpb25zLCBzZWxlY3RhYmxlIGZyb20gdGhlCitgU3RhbmRhcmRgIHRvb2xiYXIs
IHdoaWNoIGFsbG93IHlvdSB0byB0b2dnbGUgYmV0d2VlbiBidWlsZGluZyAzMi1iaXQgb3IKKzY0
LWJpdCBiaW5hcmllcyAob3IgYm90aCBhdCBvbmNlIHVzaW5nIEJhdGNoIEJ1aWxkKS4KKworSW4g
b3JkZXIgdG8gcHJldmVudCBidWlsZCBvdXRwdXQgZmlsZXMgZnJvbSBvdmVyd3JpdGluZyBvbmUg
YW5vdGhlciwKK3lvdSdsbCBuZWVkIHRvIGNoYW5nZSB0aGUgYEludGVybWVkaWF0ZSBEaXJlY3Rv
cnlgIHNldHRpbmdzIGZvciB0aGUKK25ld2x5IGNyZWF0ZWQgcGxhdGZvcm0gY29uZmlndXJhdGlv
biBhY3Jvc3MgYWxsIHRoZSBwcm9qZWN0cy4gVG8gZG8KK3RoaXMsIG11bHRpLXNlbGVjdCAoZS5n
LiB1c2luZyBzaGlmdC1jbGljaykgYWxsIHByb2plY3RzIChidXQgbm90IHRoZQorc29sdXRpb24p
IGluIHRoZSBgU29sdXRpb24gRXhwbG9yZXJgLiBSaWdodC1jbGljayBvbmUgb2YgdGhlbSBhbmQK
K3NlbGVjdCBgUHJvcGVydGllc2AuIEluIHRoZSBsZWZ0IHBhbmUsIHNlbGVjdCBgQ29uZmlndXJh
dGlvbiBQcm9wZXJ0aWVzYCwKK2FuZCBmcm9tIHRoZSBgQ29uZmlndXJhdGlvbmAgZHJvcGRvd24s
IHNlbGVjdCBgQWxsIENvbmZpZ3VyYXRpb25zYC4KK01ha2Ugc3VyZSB0aGUgc2VsZWN0ZWQgcGxh
dGZvcm0gaXMgYHg2NGAuIEZvciB0aGUKK2BJbnRlcm1lZGlhdGUgRGlyZWN0b3J5YCBzZXR0aW5n
LCBjaGFuZ2UgdGhlIHZhbHVlIGZyb20KK2AkKFBsYXRmb3JtTmFtZSlcJChDb25maWd1cmF0aW9u
TmFtZSlgIHRvCitgJChPdXREaXIpXCQoUHJvamVjdE5hbWUpYC4gQ2xpY2sgYE9LYCBhbmQgdGhl
biBidWlsZCB0aGUKK3NvbHV0aW9uLiBXaGVuIHRoZSBidWlsZCBpcyBjb21wbGV0ZSwgdGhlIDY0
LWJpdCBiaW5hcmllcyB3aWxsIGJlIGluCit0aGUgYG1zdmNceDY0XERlYnVnYCBkaXJlY3Rvcnku
CisKKyMjIENhbiBJIHVzZSBHb29nbGUgVGVzdCBvbiBNaW5HVz8gIyMKKworV2UgaGF2ZW4ndCB0
ZXN0ZWQgdGhpcyBvdXJzZWx2ZXMsIGJ1dCBQZXIgQWJyYWhhbXNlbiByZXBvcnRlZCB0aGF0IGhl
Cit3YXMgYWJsZSB0byBjb21waWxlIGFuZCBpbnN0YWxsIEdvb2dsZSBUZXN0IHN1Y2Nlc3NmdWxs
eSB3aGVuIHVzaW5nCitNaW5HVyBmcm9tIEN5Z3dpbi4gIFlvdSdsbCBuZWVkIHRvIGNvbmZpZ3Vy
ZSBpdCB3aXRoOgorCitgUEFUSC9UTy9jb25maWd1cmUgQ0M9ImdjYyAtbW5vLWN5Z3dpbiIgQ1hY
PSJnKysgLW1uby1jeWd3aW4iYAorCitZb3Ugc2hvdWxkIGJlIGFibGUgdG8gcmVwbGFjZSB0aGUg
YC1tbm8tY3lnd2luYCBvcHRpb24gd2l0aCBkaXJlY3QgbGlua3MKK3RvIHRoZSByZWFsIE1pbkdX
IGJpbmFyaWVzLCBidXQgd2UgaGF2ZW4ndCB0cmllZCB0aGF0LgorCitDYXZlYXRzOgorCisgICog
VGhlcmUgYXJlIG1hbnkgd2FybmluZ3Mgd2hlbiBjb21waWxpbmcuCisgICogYG1ha2UgY2hlY2tg
IHdpbGwgcHJvZHVjZSBzb21lIGVycm9ycyBhcyBub3QgYWxsIHRlc3RzIGZvciBHb29nbGUgVGVz
dCBpdHNlbGYgYXJlIGNvbXBhdGlibGUgd2l0aCBNaW5HVy4KKworV2UgYWxzbyBoYXZlIHJlcG9y
dHMgb24gc3VjY2Vzc2Z1bCBjcm9zcyBjb21waWxhdGlvbiBvZiBHb29nbGUgVGVzdAorTWluR1cg
YmluYXJpZXMgb24gTGludXggdXNpbmcKK1t0aGVzZSBpbnN0cnVjdGlvbnNdKGh0dHA6Ly93aWtp
Lnd4d2lkZ2V0cy5vcmcvQ3Jvc3MtQ29tcGlsaW5nX1VuZGVyX0xpbnV4I0Nyb3NzLWNvbXBpbGlu
Z191bmRlcl9MaW51eF9mb3JfTVNfV2luZG93cykKK29uIHRoZSBXeFdpZGdldHMgc2l0ZS4KKwor
UGxlYXNlIGNvbnRhY3QgYGdvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBzLmNvbWAgaWYg
eW91IGFyZQoraW50ZXJlc3RlZCBpbiBpbXByb3ZpbmcgdGhlIHN1cHBvcnQgZm9yIE1pbkdXLgor
CisjIyBXaHkgZG9lcyBHb29nbGUgVGVzdCBzdXBwb3J0IEVYUEVDVFxfRVEoTlVMTCwgcHRyKSBh
bmQgQVNTRVJUXF9FUShOVUxMLCBwdHIpIGJ1dCBub3QgRVhQRUNUXF9ORShOVUxMLCBwdHIpIGFu
ZCBBU1NFUlRcX05FKE5VTEwsIHB0cik/ICMjCisKK0R1ZSB0byBzb21lIHBlY3VsaWFyaXR5IG9m
IEMrKywgaXQgcmVxdWlyZXMgc29tZSBub24tdHJpdmlhbCB0ZW1wbGF0ZQorbWV0YSBwcm9ncmFt
bWluZyB0cmlja3MgdG8gc3VwcG9ydCB1c2luZyBgTlVMTGAgYXMgYW4gYXJndW1lbnQgb2YgdGhl
CitgRVhQRUNUX1hYKClgIGFuZCBgQVNTRVJUX1hYKClgIG1hY3Jvcy4gVGhlcmVmb3JlIHdlIG9u
bHkgZG8gaXQgd2hlcmUKK2l0J3MgbW9zdCBuZWVkZWQgKG90aGVyd2lzZSB3ZSBtYWtlIHRoZSBp
bXBsZW1lbnRhdGlvbiBvZiBHb29nbGUgVGVzdAoraGFyZGVyIHRvIG1haW50YWluIGFuZCBtb3Jl
IGVycm9yLXByb25lIHRoYW4gbmVjZXNzYXJ5KS4KKworVGhlIGBFWFBFQ1RfRVEoKWAgbWFjcm8g
dGFrZXMgdGhlIF9leHBlY3RlZF8gdmFsdWUgYXMgaXRzIGZpcnN0Cithcmd1bWVudCBhbmQgdGhl
IF9hY3R1YWxfIHZhbHVlIGFzIHRoZSBzZWNvbmQuIEl0J3MgcmVhc29uYWJsZSB0aGF0Citzb21l
b25lIHdhbnRzIHRvIHdyaXRlIGBFWFBFQ1RfRVEoTlVMTCwgc29tZV9leHByZXNzaW9uKWAsIGFu
ZCB0aGlzCitpbmRlZWQgd2FzIHJlcXVlc3RlZCBzZXZlcmFsIHRpbWVzLiBUaGVyZWZvcmUgd2Ug
aW1wbGVtZW50ZWQgaXQuCisKK1RoZSBuZWVkIGZvciBgRVhQRUNUX05FKE5VTEwsIHB0cilgIGlz
bid0IG5lYXJseSBhcyBzdHJvbmcuIFdoZW4gdGhlCithc3NlcnRpb24gZmFpbHMsIHlvdSBhbHJl
YWR5IGtub3cgdGhhdCBgcHRyYCBtdXN0IGJlIGBOVUxMYCwgc28gaXQKK2RvZXNuJ3QgYWRkIGFu
eSBpbmZvcm1hdGlvbiB0byBwcmludCBwdHIgaW4gdGhpcyBjYXNlLiBUaGF0IG1lYW5zCitgRVhQ
RUNUX1RSVUUocHRyICEgTlVMTClgIHdvcmtzIGp1c3QgYXMgd2VsbC4KKworSWYgd2Ugd2VyZSB0
byBzdXBwb3J0IGBFWFBFQ1RfTkUoTlVMTCwgcHRyKWAsIGZvciBjb25zaXN0ZW5jeSB3ZSdsbAor
aGF2ZSB0byBzdXBwb3J0IGBFWFBFQ1RfTkUocHRyLCBOVUxMKWAgYXMgd2VsbCwgYXMgdW5saWtl
IGBFWFBFQ1RfRVFgLAord2UgZG9uJ3QgaGF2ZSBhIGNvbnZlbnRpb24gb24gdGhlIG9yZGVyIG9m
IHRoZSB0d28gYXJndW1lbnRzIGZvcgorYEVYUEVDVF9ORWAuIFRoaXMgbWVhbnMgdXNpbmcgdGhl
IHRlbXBsYXRlIG1ldGEgcHJvZ3JhbW1pbmcgdHJpY2tzCit0d2ljZSBpbiB0aGUgaW1wbGVtZW50
YXRpb24sIG1ha2luZyBpdCBldmVuIGhhcmRlciB0byB1bmRlcnN0YW5kIGFuZAorbWFpbnRhaW4u
IFdlIGJlbGlldmUgdGhlIGJlbmVmaXQgZG9lc24ndCBqdXN0aWZ5IHRoZSBjb3N0LgorCitGaW5h
bGx5LCB3aXRoIHRoZSBncm93dGggb2YgR29vZ2xlIE1vY2sncyBbbWF0Y2hlcl0oLi4vLi4vQ29v
a0Jvb2subWQjdXNpbmctbWF0Y2hlcnMtaW4tZ29vZ2xlLXRlc3QtYXNzZXJ0aW9ucykgbGlicmFy
eSwgd2UgYXJlCitlbmNvdXJhZ2luZyBwZW9wbGUgdG8gdXNlIHRoZSB1bmlmaWVkIGBFWFBFQ1Rf
VEhBVCh2YWx1ZSwgbWF0Y2hlcilgCitzeW50YXggbW9yZSBvZnRlbiBpbiB0ZXN0cy4gT25lIHNp
Z25pZmljYW50IGFkdmFudGFnZSBvZiB0aGUgbWF0Y2hlcgorYXBwcm9hY2ggaXMgdGhhdCBtYXRj
aGVycyBjYW4gYmUgZWFzaWx5IGNvbWJpbmVkIHRvIGZvcm0gbmV3IG1hdGNoZXJzLAord2hpbGUg
dGhlIGBFWFBFQ1RfTkVgLCBldGMsIG1hY3JvcyBjYW5ub3QgYmUgZWFzaWx5Citjb21iaW5lZC4g
VGhlcmVmb3JlIHdlIHdhbnQgdG8gaW52ZXN0IG1vcmUgaW4gdGhlIG1hdGNoZXJzIHRoYW4gaW4g
dGhlCitgRVhQRUNUX1hYKClgIG1hY3Jvcy4KKworIyMgRG9lcyBHb29nbGUgVGVzdCBzdXBwb3J0
IHJ1bm5pbmcgdGVzdHMgaW4gcGFyYWxsZWw/ICMjCisKK1Rlc3QgcnVubmVycyB0ZW5kIHRvIGJl
IHRpZ2h0bHkgY291cGxlZCB3aXRoIHRoZSBidWlsZC90ZXN0CitlbnZpcm9ubWVudCwgYW5kIEdv
b2dsZSBUZXN0IGRvZXNuJ3QgdHJ5IHRvIHNvbHZlIHRoZSBwcm9ibGVtIG9mCitydW5uaW5nIHRl
c3RzIGluIHBhcmFsbGVsLiAgSW5zdGVhZCwgd2UgdHJpZWQgdG8gbWFrZSBHb29nbGUgVGVzdCB3
b3JrCituaWNlbHkgd2l0aCB0ZXN0IHJ1bm5lcnMuICBGb3IgZXhhbXBsZSwgR29vZ2xlIFRlc3Qn
cyBYTUwgcmVwb3J0Citjb250YWlucyB0aGUgdGltZSBzcGVudCBvbiBlYWNoIHRlc3QsIGFuZCBp
dHMgYGd0ZXN0X2xpc3RfdGVzdHNgIGFuZAorYGd0ZXN0X2ZpbHRlcmAgZmxhZ3MgY2FuIGJlIHVz
ZWQgZm9yIHNwbGl0dGluZyB0aGUgZXhlY3V0aW9uIG9mIHRlc3QKK21ldGhvZHMgaW50byBtdWx0
aXBsZSBwcm9jZXNzZXMuICBUaGVzZSBmdW5jdGlvbmFsaXRpZXMgY2FuIGhlbHAgdGhlCit0ZXN0
IHJ1bm5lciBydW4gdGhlIHRlc3RzIGluIHBhcmFsbGVsLgorCisjIyBXaHkgZG9uJ3QgR29vZ2xl
IFRlc3QgcnVuIHRoZSB0ZXN0cyBpbiBkaWZmZXJlbnQgdGhyZWFkcyB0byBzcGVlZCB0aGluZ3Mg
dXA/ICMjCisKK0l0J3MgZGlmZmljdWx0IHRvIHdyaXRlIHRocmVhZC1zYWZlIGNvZGUuICBNb3N0
IHRlc3RzIGFyZSBub3Qgd3JpdHRlbgord2l0aCB0aHJlYWQtc2FmZXR5IGluIG1pbmQsIGFuZCB0
aHVzIG1heSBub3Qgd29yayBjb3JyZWN0bHkgaW4gYQorbXVsdGktdGhyZWFkZWQgc2V0dGluZy4K
KworSWYgeW91IHRoaW5rIGFib3V0IGl0LCBpdCdzIGFscmVhZHkgaGFyZCB0byBtYWtlIHlvdXIg
Y29kZSB3b3JrIHdoZW4KK3lvdSBrbm93IHdoYXQgb3RoZXIgdGhyZWFkcyBhcmUgZG9pbmcuICBJ
dCdzIG11Y2ggaGFyZGVyLCBhbmQKK3NvbWV0aW1lcyBldmVuIGltcG9zc2libGUsIHRvIG1ha2Ug
eW91ciBjb2RlIHdvcmsgd2hlbiB5b3UgZG9uJ3Qga25vdword2hhdCBvdGhlciB0aHJlYWRzIGFy
ZSBkb2luZyAocmVtZW1iZXIgdGhhdCB0ZXN0IG1ldGhvZHMgY2FuIGJlIGFkZGVkLAorZGVsZXRl
ZCwgb3IgbW9kaWZpZWQgYWZ0ZXIgeW91ciB0ZXN0IHdhcyB3cml0dGVuKS4gIElmIHlvdSB3YW50
IHRvIHJ1bgordGhlIHRlc3RzIGluIHBhcmFsbGVsLCB5b3UnZCBiZXR0ZXIgcnVuIHRoZW0gaW4g
ZGlmZmVyZW50IHByb2Nlc3Nlcy4KKworIyMgV2h5IGFyZW4ndCBHb29nbGUgVGVzdCBhc3NlcnRp
b25zIGltcGxlbWVudGVkIHVzaW5nIGV4Y2VwdGlvbnM/ICMjCisKK091ciBvcmlnaW5hbCBtb3Rp
dmF0aW9uIHdhcyB0byBiZSBhYmxlIHRvIHVzZSBHb29nbGUgVGVzdCBpbiBwcm9qZWN0cwordGhh
dCBkaXNhYmxlIGV4Y2VwdGlvbnMuICBMYXRlciB3ZSByZWFsaXplZCBzb21lIGFkZGl0aW9uYWwg
YmVuZWZpdHMKK29mIHRoaXMgYXBwcm9hY2g6CisKKyAgMS4gVGhyb3dpbmcgaW4gYSBkZXN0cnVj
dG9yIGlzIHVuZGVmaW5lZCBiZWhhdmlvciBpbiBDKysuICBOb3QgdXNpbmcgZXhjZXB0aW9ucyBt
ZWFucyBHb29nbGUgVGVzdCdzIGFzc2VydGlvbnMgYXJlIHNhZmUgdG8gdXNlIGluIGRlc3RydWN0
b3JzLgorICAxLiBUaGUgYEVYUEVDVF8qYCBmYW1pbHkgb2YgbWFjcm9zIHdpbGwgY29udGludWUg
ZXZlbiBhZnRlciBhIGZhaWx1cmUsIGFsbG93aW5nIG11bHRpcGxlIGZhaWx1cmVzIGluIGEgYFRF
U1RgIHRvIGJlIHJlcG9ydGVkIGluIGEgc2luZ2xlIHJ1bi4gVGhpcyBpcyBhIHBvcHVsYXIgZmVh
dHVyZSwgYXMgaW4gQysrIHRoZSBlZGl0LWNvbXBpbGUtdGVzdCBjeWNsZSBpcyB1c3VhbGx5IHF1
aXRlIGxvbmcgYW5kIGJlaW5nIGFibGUgdG8gZml4aW5nIG1vcmUgdGhhbiBvbmUgdGhpbmcgYXQg
YSB0aW1lIGlzIGEgYmxlc3NpbmcuCisgIDEuIElmIGFzc2VydGlvbnMgYXJlIGltcGxlbWVudGVk
IHVzaW5nIGV4Y2VwdGlvbnMsIGEgdGVzdCBtYXkgZmFsc2VseSBpZ25vcmUgYSBmYWlsdXJlIGlm
IGl0J3MgY2F1Z2h0IGJ5IHVzZXIgY29kZToKK2BgYAordHJ5IHsgLi4uIEFTU0VSVF9UUlVFKC4u
LikgLi4uIH0KK2NhdGNoICguLi4pIHsgLi4uIH0KK2BgYAorVGhlIGFib3ZlIGNvZGUgd2lsbCBw
YXNzIGV2ZW4gaWYgdGhlIGBBU1NFUlRfVFJVRWAgdGhyb3dzLiAgV2hpbGUgaXQncyB1bmxpa2Vs
eSBmb3Igc29tZW9uZSB0byB3cml0ZSB0aGlzIGluIGEgdGVzdCwgaXQncyBwb3NzaWJsZSB0byBy
dW4gaW50byB0aGlzIHBhdHRlcm4gd2hlbiB5b3Ugd3JpdGUgYXNzZXJ0aW9ucyBpbiBjYWxsYmFj
a3MgdGhhdCBhcmUgY2FsbGVkIGJ5IHRoZSBjb2RlIHVuZGVyIHRlc3QuCisKK1RoZSBkb3duc2lk
ZSBvZiBub3QgdXNpbmcgZXhjZXB0aW9ucyBpcyB0aGF0IGBBU1NFUlRfKmAgKGltcGxlbWVudGVk
Cit1c2luZyBgcmV0dXJuYCkgd2lsbCBvbmx5IGFib3J0IHRoZSBjdXJyZW50IGZ1bmN0aW9uLCBu
b3QgdGhlIGN1cnJlbnQKK2BURVNUYC4KKworIyMgV2h5IGRvIHdlIHVzZSB0d28gZGlmZmVyZW50
IG1hY3JvcyBmb3IgdGVzdHMgd2l0aCBhbmQgd2l0aG91dCBmaXh0dXJlcz8gIyMKKworVW5mb3J0
dW5hdGVseSwgQysrJ3MgbWFjcm8gc3lzdGVtIGRvZXNuJ3QgYWxsb3cgdXMgdG8gdXNlIHRoZSBz
YW1lCittYWNybyBmb3IgYm90aCBjYXNlcy4gIE9uZSBwb3NzaWJpbGl0eSBpcyB0byBwcm92aWRl
IG9ubHkgb25lIG1hY3JvCitmb3IgdGVzdHMgd2l0aCBmaXh0dXJlcywgYW5kIHJlcXVpcmUgdGhl
IHVzZXIgdG8gZGVmaW5lIGFuIGVtcHR5CitmaXh0dXJlIHNvbWV0aW1lczoKKworYGBgCitjbGFz
cyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7fTsKKworVEVTVF9GKEZvb1Rlc3Qs
IERvZXNUaGlzKSB7IC4uLiB9CitgYGAKK29yCitgYGAKK3R5cGVkZWYgOjp0ZXN0aW5nOjpUZXN0
IEZvb1Rlc3Q7CisKK1RFU1RfRihGb29UZXN0LCBEb2VzVGhhdCkgeyAuLi4gfQorYGBgCisKK1ll
dCwgbWFueSBwZW9wbGUgdGhpbmsgdGhpcyBpcyBvbmUgbGluZSB0b28gbWFueS4gOi0pIE91ciBn
b2FsIHdhcyB0bworbWFrZSBpdCByZWFsbHkgZWFzeSB0byB3cml0ZSB0ZXN0cywgc28gd2UgdHJp
ZWQgdG8gbWFrZSBzaW1wbGUgdGVzdHMKK3RyaXZpYWwgdG8gY3JlYXRlLiAgVGhhdCBtZWFucyB1
c2luZyBhIHNlcGFyYXRlIG1hY3JvIGZvciBzdWNoIHRlc3RzLgorCitXZSB0aGluayBuZWl0aGVy
IGFwcHJvYWNoIGlzIGlkZWFsLCB5ZXQgZWl0aGVyIG9mIHRoZW0gaXMgcmVhc29uYWJsZS4KK0lu
IHRoZSBlbmQsIGl0IHByb2JhYmx5IGRvZXNuJ3QgbWF0dGVyIG11Y2ggZWl0aGVyIHdheS4KKwor
IyMgV2h5IGRvbid0IHdlIHVzZSBzdHJ1Y3RzIGFzIHRlc3QgZml4dHVyZXM/ICMjCisKK1dlIGxp
a2UgdG8gdXNlIHN0cnVjdHMgb25seSB3aGVuIHJlcHJlc2VudGluZyBwYXNzaXZlIGRhdGEuICBU
aGlzCitkaXN0aW5jdGlvbiBiZXR3ZWVuIHN0cnVjdHMgYW5kIGNsYXNzZXMgaXMgZ29vZCBmb3Ig
ZG9jdW1lbnRpbmcgdGhlCitpbnRlbnQgb2YgdGhlIGNvZGUncyBhdXRob3IuICBTaW5jZSB0ZXN0
IGZpeHR1cmVzIGhhdmUgbG9naWMgbGlrZQorYFNldFVwKClgIGFuZCBgVGVhckRvd24oKWAsIHRo
ZXkgYXJlIGJldHRlciBkZWZpbmVkIGFzIGNsYXNzZXMuCisKKyMjIFdoeSBhcmUgZGVhdGggdGVz
dHMgaW1wbGVtZW50ZWQgYXMgYXNzZXJ0aW9ucyBpbnN0ZWFkIG9mIHVzaW5nIGEgdGVzdCBydW5u
ZXI/ICMjCisKK091ciBnb2FsIHdhcyB0byBtYWtlIGRlYXRoIHRlc3RzIGFzIGNvbnZlbmllbnQg
Zm9yIGEgdXNlciBhcyBDKysKK3Bvc3NpYmx5IGFsbG93cy4gIEluIHBhcnRpY3VsYXI6CisKKyAg
KiBUaGUgcnVubmVyLXN0eWxlIHJlcXVpcmVzIHRvIHNwbGl0IHRoZSBpbmZvcm1hdGlvbiBpbnRv
IHR3byBwaWVjZXM6IHRoZSBkZWZpbml0aW9uIG9mIHRoZSBkZWF0aCB0ZXN0IGl0c2VsZiwgYW5k
IHRoZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgcnVubmVyIG9uIGhvdyB0byBydW4gdGhlIGRlYXRo
IHRlc3QgYW5kIHdoYXQgdG8gZXhwZWN0LiAgVGhlIGRlYXRoIHRlc3Qgd291bGQgYmUgd3JpdHRl
biBpbiBDKyssIHdoaWxlIHRoZSBydW5uZXIgc3BlYyBtYXkgb3IgbWF5IG5vdCBiZS4gIEEgdXNl
ciBuZWVkcyB0byBjYXJlZnVsbHkga2VlcCB0aGUgdHdvIGluIHN5bmMuIGBBU1NFUlRfREVBVEgo
c3RhdGVtZW50LCBleHBlY3RlZF9tZXNzYWdlKWAgc3BlY2lmaWVzIGFsbCBuZWNlc3NhcnkgaW5m
b3JtYXRpb24gaW4gb25lIHBsYWNlLCBpbiBvbmUgbGFuZ3VhZ2UsIHdpdGhvdXQgYm9pbGVycGxh
dGUgY29kZS4gSXQgaXMgdmVyeSBkZWNsYXJhdGl2ZS4KKyAgKiBgQVNTRVJUX0RFQVRIYCBoYXMg
YSBzaW1pbGFyIHN5bnRheCBhbmQgZXJyb3ItcmVwb3J0aW5nIHNlbWFudGljcyBhcyBvdGhlciBH
b29nbGUgVGVzdCBhc3NlcnRpb25zLCBhbmQgdGh1cyBpcyBlYXN5IHRvIGxlYXJuLgorICAqIGBB
U1NFUlRfREVBVEhgIGNhbiBiZSBtaXhlZCB3aXRoIG90aGVyIGFzc2VydGlvbnMgYW5kIG90aGVy
IGxvZ2ljIGF0IHlvdXIgd2lsbC4gIFlvdSBhcmUgbm90IGxpbWl0ZWQgdG8gb25lIGRlYXRoIHRl
c3QgcGVyIHRlc3QgbWV0aG9kLiBGb3IgZXhhbXBsZSwgeW91IGNhbiB3cml0ZSBzb21ldGhpbmcg
bGlrZToKK2BgYAorICAgIGlmIChGb29Db25kaXRpb24oKSkgeworICAgICAgQVNTRVJUX0RFQVRI
KEJhcigpLCAiYmxhaCIpOworICAgIH0gZWxzZSB7CisgICAgICBBU1NFUlRfRVEoNSwgQmFyKCkp
OworICAgIH0KK2BgYAorSWYgeW91IHByZWZlciBvbmUgZGVhdGggdGVzdCBwZXIgdGVzdCBtZXRo
b2QsIHlvdSBjYW4gd3JpdGUgeW91ciB0ZXN0cyBpbiB0aGF0IHN0eWxlIHRvbywgYnV0IHdlIGRv
bid0IHdhbnQgdG8gaW1wb3NlIHRoYXQgb24gdGhlIHVzZXJzLiAgVGhlIGZld2VyIGFydGlmaWNp
YWwgbGltaXRhdGlvbnMgdGhlIGJldHRlci4KKyAgKiBgQVNTRVJUX0RFQVRIYCBjYW4gcmVmZXJl
bmNlIGxvY2FsIHZhcmlhYmxlcyBpbiB0aGUgY3VycmVudCBmdW5jdGlvbiwgYW5kIHlvdSBjYW4g
ZGVjaWRlIGhvdyBtYW55IGRlYXRoIHRlc3RzIHlvdSB3YW50IGJhc2VkIG9uIHJ1bi10aW1lIGlu
Zm9ybWF0aW9uLiAgRm9yIGV4YW1wbGUsCitgYGAKKyAgICBjb25zdCBpbnQgY291bnQgPSBHZXRD
b3VudCgpOyAgLy8gT25seSBrbm93biBhdCBydW4gdGltZS4KKyAgICBmb3IgKGludCBpID0gMTsg
aSA8PSBjb3VudDsgaSsrKSB7CisgICAgICBBU1NFUlRfREVBVEgoeworICAgICAgICBkb3VibGUq
IGJ1ZmZlciA9IG5ldyBkb3VibGVbaV07CisgICAgICAgIC4uLiBpbml0aWFsaXplcyBidWZmZXIg
Li4uCisgICAgICAgIEZvbyhidWZmZXIsIGkpCisgICAgICB9LCAiYmxhaCBibGFoIik7CisgICAg
fQorYGBgCitUaGUgcnVubmVyLWJhc2VkIGFwcHJvYWNoIHRlbmRzIHRvIGJlIG1vcmUgc3RhdGlj
IGFuZCBsZXNzIGZsZXhpYmxlLCBvciByZXF1aXJlcyBtb3JlIHVzZXIgZWZmb3J0IHRvIGdldCB0
aGlzIGtpbmQgb2YgZmxleGliaWxpdHkuCisKK0Fub3RoZXIgaW50ZXJlc3RpbmcgdGhpbmcgYWJv
dXQgYEFTU0VSVF9ERUFUSGAgaXMgdGhhdCBpdCBjYWxscyBgZm9yaygpYAordG8gY3JlYXRlIGEg
Y2hpbGQgcHJvY2VzcyB0byBydW4gdGhlIGRlYXRoIHRlc3QuICBUaGlzIGlzIGxpZ2h0ZW5pbmcK
K2Zhc3QsIGFzIGBmb3JrKClgIHVzZXMgY29weS1vbi13cml0ZSBwYWdlcyBhbmQgaW5jdXJzIGFs
bW9zdCB6ZXJvCitvdmVyaGVhZCwgYW5kIHRoZSBjaGlsZCBwcm9jZXNzIHN0YXJ0cyBmcm9tIHRo
ZSB1c2VyLXN1cHBsaWVkCitzdGF0ZW1lbnQgZGlyZWN0bHksIHNraXBwaW5nIGFsbCBnbG9iYWwg
YW5kIGxvY2FsIGluaXRpYWxpemF0aW9uIGFuZAorYW55IGNvZGUgbGVhZGluZyB0byB0aGUgZ2l2
ZW4gc3RhdGVtZW50LiAgSWYgeW91IGxhdW5jaCB0aGUgY2hpbGQKK3Byb2Nlc3MgZnJvbSBzY3Jh
dGNoLCBpdCBjYW4gdGFrZSBzZWNvbmRzIGp1c3QgdG8gbG9hZCBldmVyeXRoaW5nIGFuZAorc3Rh
cnQgcnVubmluZyBpZiB0aGUgdGVzdCBsaW5rcyB0byBtYW55IGxpYnJhcmllcyBkeW5hbWljYWxs
eS4KKworIyMgTXkgZGVhdGggdGVzdCBtb2RpZmllcyBzb21lIHN0YXRlLCBidXQgdGhlIGNoYW5n
ZSBzZWVtcyBsb3N0IGFmdGVyIHRoZSBkZWF0aCB0ZXN0IGZpbmlzaGVzLiBXaHk/ICMjCisKK0Rl
YXRoIHRlc3RzIChgRVhQRUNUX0RFQVRIYCwgZXRjKSBhcmUgZXhlY3V0ZWQgaW4gYSBzdWItcHJv
Y2VzcyBzLnQuIHRoZQorZXhwZWN0ZWQgY3Jhc2ggd29uJ3Qga2lsbCB0aGUgdGVzdCBwcm9ncmFt
IChpLmUuIHRoZSBwYXJlbnQgcHJvY2VzcykuIEFzIGEKK3Jlc3VsdCwgYW55IGluLW1lbW9yeSBz
aWRlIGVmZmVjdHMgdGhleSBpbmN1ciBhcmUgb2JzZXJ2YWJsZSBpbiB0aGVpcgorcmVzcGVjdGl2
ZSBzdWItcHJvY2Vzc2VzLCBidXQgbm90IGluIHRoZSBwYXJlbnQgcHJvY2Vzcy4gWW91IGNhbiB0
aGluayBvZiB0aGVtCithcyBydW5uaW5nIGluIGEgcGFyYWxsZWwgdW5pdmVyc2UsIG1vcmUgb3Ig
bGVzcy4KKworIyMgVGhlIGNvbXBpbGVyIGNvbXBsYWlucyBhYm91dCAidW5kZWZpbmVkIHJlZmVy
ZW5jZXMiIHRvIHNvbWUgc3RhdGljIGNvbnN0IG1lbWJlciB2YXJpYWJsZXMsIGJ1dCBJIGRpZCBk
ZWZpbmUgdGhlbSBpbiB0aGUgY2xhc3MgYm9keS4gV2hhdCdzIHdyb25nPyAjIworCitJZiB5b3Vy
IGNsYXNzIGhhcyBhIHN0YXRpYyBkYXRhIG1lbWJlcjoKKworYGBgCisvLyBmb28uaAorY2xhc3Mg
Rm9vIHsKKyAgLi4uCisgIHN0YXRpYyBjb25zdCBpbnQga0JhciA9IDEwMDsKK307CitgYGAKKwor
WW91IGFsc28gbmVlZCB0byBkZWZpbmUgaXQgX291dHNpZGVfIG9mIHRoZSBjbGFzcyBib2R5IGlu
IGBmb28uY2NgOgorCitgYGAKK2NvbnN0IGludCBGb286OmtCYXI7ICAvLyBObyBpbml0aWFsaXpl
ciBoZXJlLgorYGBgCisKK090aGVyd2lzZSB5b3VyIGNvZGUgaXMgKippbnZhbGlkIEMrKyoqLCBh
bmQgbWF5IGJyZWFrIGluIHVuZXhwZWN0ZWQgd2F5cy4gSW4KK3BhcnRpY3VsYXIsIHVzaW5nIGl0
IGluIEdvb2dsZSBUZXN0IGNvbXBhcmlzb24gYXNzZXJ0aW9ucyAoYEVYUEVDVF9FUWAsIGV0YykK
K3dpbGwgZ2VuZXJhdGUgYW4gInVuZGVmaW5lZCByZWZlcmVuY2UiIGxpbmtlciBlcnJvci4KKwor
IyMgSSBoYXZlIGFuIGludGVyZmFjZSB0aGF0IGhhcyBzZXZlcmFsIGltcGxlbWVudGF0aW9ucy4g
Q2FuIEkgd3JpdGUgYSBzZXQgb2YgdGVzdHMgb25jZSBhbmQgcmVwZWF0IHRoZW0gb3ZlciBhbGwg
dGhlIGltcGxlbWVudGF0aW9ucz8gIyMKKworR29vZ2xlIFRlc3QgZG9lc24ndCB5ZXQgaGF2ZSBn
b29kIHN1cHBvcnQgZm9yIHRoaXMga2luZCBvZiB0ZXN0cywgb3IKK2RhdGEtZHJpdmVuIHRlc3Rz
IGluIGdlbmVyYWwuIFdlIGhvcGUgdG8gYmUgYWJsZSB0byBtYWtlIGltcHJvdmVtZW50cyBpbiB0
aGlzCithcmVhIHNvb24uCisKKyMjIENhbiBJIGRlcml2ZSBhIHRlc3QgZml4dHVyZSBmcm9tIGFu
b3RoZXI/ICMjCisKK1llcy4KKworRWFjaCB0ZXN0IGZpeHR1cmUgaGFzIGEgY29ycmVzcG9uZGlu
ZyBhbmQgc2FtZSBuYW1lZCB0ZXN0IGNhc2UuIFRoaXMgbWVhbnMgb25seQorb25lIHRlc3QgY2Fz
ZSBjYW4gdXNlIGEgcGFydGljdWxhciBmaXh0dXJlLiBTb21ldGltZXMsIGhvd2V2ZXIsIG11bHRp
cGxlIHRlc3QKK2Nhc2VzIG1heSB3YW50IHRvIHVzZSB0aGUgc2FtZSBvciBzbGlnaHRseSBkaWZm
ZXJlbnQgZml4dHVyZXMuIEZvciBleGFtcGxlLCB5b3UKK21heSB3YW50IHRvIG1ha2Ugc3VyZSB0
aGF0IGFsbCBvZiBhIEdVSSBsaWJyYXJ5J3MgdGVzdCBjYXNlcyBkb24ndCBsZWFrCitpbXBvcnRh
bnQgc3lzdGVtIHJlc291cmNlcyBsaWtlIGZvbnRzIGFuZCBicnVzaGVzLgorCitJbiBHb29nbGUg
VGVzdCwgeW91IHNoYXJlIGEgZml4dHVyZSBhbW9uZyB0ZXN0IGNhc2VzIGJ5IHB1dHRpbmcgdGhl
IHNoYXJlZAorbG9naWMgaW4gYSBiYXNlIHRlc3QgZml4dHVyZSwgdGhlbiBkZXJpdmluZyBmcm9t
IHRoYXQgYmFzZSBhIHNlcGFyYXRlIGZpeHR1cmUKK2ZvciBlYWNoIHRlc3QgY2FzZSB0aGF0IHdh
bnRzIHRvIHVzZSB0aGlzIGNvbW1vbiBsb2dpYy4gWW91IHRoZW4gdXNlIGBURVNUX0YoKWAKK3Rv
IHdyaXRlIHRlc3RzIHVzaW5nIGVhY2ggZGVyaXZlZCBmaXh0dXJlLgorCitUeXBpY2FsbHksIHlv
dXIgY29kZSBsb29rcyBsaWtlIHRoaXM6CisKK2BgYAorLy8gRGVmaW5lcyBhIGJhc2UgdGVzdCBm
aXh0dXJlLgorY2xhc3MgQmFzZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyAgcHJv
dGVjdGVkOgorICAgLi4uCit9OworCisvLyBEZXJpdmVzIGEgZml4dHVyZSBGb29UZXN0IGZyb20g
QmFzZVRlc3QuCitjbGFzcyBGb29UZXN0IDogcHVibGljIEJhc2VUZXN0IHsKKyAgcHJvdGVjdGVk
OgorICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICAgIEJhc2VUZXN0OjpTZXRVcCgpOyAg
Ly8gU2V0cyB1cCB0aGUgYmFzZSBmaXh0dXJlIGZpcnN0LgorICAgICAgLi4uIGFkZGl0aW9uYWwg
c2V0LXVwIHdvcmsgLi4uCisgICAgfQorICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAg
ICAgIC4uLiBjbGVhbi11cCB3b3JrIGZvciBGb29UZXN0IC4uLgorICAgICAgQmFzZVRlc3Q6OlRl
YXJEb3duKCk7ICAvLyBSZW1lbWJlciB0byB0ZWFyIGRvd24gdGhlIGJhc2UgZml4dHVyZQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhZnRlciBjbGVhbmluZyB1cCBGb29UZXN0IQor
ICAgIH0KKyAgICAuLi4gZnVuY3Rpb25zIGFuZCB2YXJpYWJsZXMgZm9yIEZvb1Rlc3QgLi4uCit9
OworCisvLyBUZXN0cyB0aGF0IHVzZSB0aGUgZml4dHVyZSBGb29UZXN0LgorVEVTVF9GKEZvb1Rl
c3QsIEJhcikgeyAuLi4gfQorVEVTVF9GKEZvb1Rlc3QsIEJheikgeyAuLi4gfQorCisuLi4gYWRk
aXRpb25hbCBmaXh0dXJlcyBkZXJpdmVkIGZyb20gQmFzZVRlc3QgLi4uCitgYGAKKworSWYgbmVj
ZXNzYXJ5LCB5b3UgY2FuIGNvbnRpbnVlIHRvIGRlcml2ZSB0ZXN0IGZpeHR1cmVzIGZyb20gYSBk
ZXJpdmVkIGZpeHR1cmUuCitHb29nbGUgVGVzdCBoYXMgbm8gbGltaXQgb24gaG93IGRlZXAgdGhl
IGhpZXJhcmNoeSBjYW4gYmUuCisKK0ZvciBhIGNvbXBsZXRlIGV4YW1wbGUgdXNpbmcgZGVyaXZl
ZCB0ZXN0IGZpeHR1cmVzLCBzZWUKK1tzYW1wbGU1XSguLi9zYW1wbGVzL3NhbXBsZTVfdW5pdHRl
c3QuY2MpLgorCisjIyBNeSBjb21waWxlciBjb21wbGFpbnMgInZvaWQgdmFsdWUgbm90IGlnbm9y
ZWQgYXMgaXQgb3VnaHQgdG8gYmUuIiBXaGF0IGRvZXMgdGhpcyBtZWFuPyAjIworCitZb3UncmUg
cHJvYmFibHkgdXNpbmcgYW4gYEFTU0VSVF8qKClgIGluIGEgZnVuY3Rpb24gdGhhdCBkb2Vzbid0
IHJldHVybiBgdm9pZGAuCitgQVNTRVJUXyooKWAgY2FuIG9ubHkgYmUgdXNlZCBpbiBgdm9pZGAg
ZnVuY3Rpb25zLgorCisjIyBNeSBkZWF0aCB0ZXN0IGhhbmdzIChvciBzZWctZmF1bHRzKS4gSG93
IGRvIEkgZml4IGl0PyAjIworCitJbiBHb29nbGUgVGVzdCwgZGVhdGggdGVzdHMgYXJlIHJ1biBp
biBhIGNoaWxkIHByb2Nlc3MgYW5kIHRoZSB3YXkgdGhleSB3b3JrIGlzCitkZWxpY2F0ZS4gVG8g
d3JpdGUgZGVhdGggdGVzdHMgeW91IHJlYWxseSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXkg
d29yay4KK1BsZWFzZSBtYWtlIHN1cmUgeW91IGhhdmUgcmVhZCB0aGlzLgorCitJbiBwYXJ0aWN1
bGFyLCBkZWF0aCB0ZXN0cyBkb24ndCBsaWtlIGhhdmluZyBtdWx0aXBsZSB0aHJlYWRzIGluIHRo
ZSBwYXJlbnQKK3Byb2Nlc3MuIFNvIHRoZSBmaXJzdCB0aGluZyB5b3UgY2FuIHRyeSBpcyB0byBl
bGltaW5hdGUgY3JlYXRpbmcgdGhyZWFkcworb3V0c2lkZSBvZiBgRVhQRUNUX0RFQVRIKClgLgor
CitTb21ldGltZXMgdGhpcyBpcyBpbXBvc3NpYmxlIGFzIHNvbWUgbGlicmFyeSB5b3UgbXVzdCB1
c2UgbWF5IGJlIGNyZWF0aW5nCit0aHJlYWRzIGJlZm9yZSBgbWFpbigpYCBpcyBldmVuIHJlYWNo
ZWQuIEluIHRoaXMgY2FzZSwgeW91IGNhbiB0cnkgdG8gbWluaW1pemUKK3RoZSBjaGFuY2Ugb2Yg
Y29uZmxpY3RzIGJ5IGVpdGhlciBtb3ZpbmcgYXMgbWFueSBhY3Rpdml0aWVzIGFzIHBvc3NpYmxl
IGluc2lkZQorYEVYUEVDVF9ERUFUSCgpYCAoaW4gdGhlIGV4dHJlbWUgY2FzZSwgeW91IHdhbnQg
dG8gbW92ZSBldmVyeXRoaW5nIGluc2lkZSksIG9yCitsZWF2aW5nIGFzIGZldyB0aGluZ3MgYXMg
cG9zc2libGUgaW4gaXQuIEFsc28sIHlvdSBjYW4gdHJ5IHRvIHNldCB0aGUgZGVhdGgKK3Rlc3Qg
c3R5bGUgdG8gYCJ0aHJlYWRzYWZlImAsIHdoaWNoIGlzIHNhZmVyIGJ1dCBzbG93ZXIsIGFuZCBz
ZWUgaWYgaXQgaGVscHMuCisKK0lmIHlvdSBnbyB3aXRoIHRocmVhZC1zYWZlIGRlYXRoIHRlc3Rz
LCByZW1lbWJlciB0aGF0IHRoZXkgcmVydW4gdGhlIHRlc3QKK3Byb2dyYW0gZnJvbSB0aGUgYmVn
aW5uaW5nIGluIHRoZSBjaGlsZCBwcm9jZXNzLiBUaGVyZWZvcmUgbWFrZSBzdXJlIHlvdXIKK3By
b2dyYW0gY2FuIHJ1biBzaWRlLWJ5LXNpZGUgd2l0aCBpdHNlbGYgYW5kIGlzIGRldGVybWluaXN0
aWMuCisKK0luIHRoZSBlbmQsIHRoaXMgYm9pbHMgZG93biB0byBnb29kIGNvbmN1cnJlbnQgcHJv
Z3JhbW1pbmcuIFlvdSBoYXZlIHRvIG1ha2UKK3N1cmUgdGhhdCB0aGVyZSBpcyBubyByYWNlIGNv
bmRpdGlvbnMgb3IgZGVhZCBsb2NrcyBpbiB5b3VyIHByb2dyYW0uIE5vIHNpbHZlcgorYnVsbGV0
IC0gc29ycnkhCisKKyMjIFNob3VsZCBJIHVzZSB0aGUgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciBv
ZiB0aGUgdGVzdCBmaXh0dXJlIG9yIHRoZSBzZXQtdXAvdGVhci1kb3duIGZ1bmN0aW9uPyAjIwor
CitUaGUgZmlyc3QgdGhpbmcgdG8gcmVtZW1iZXIgaXMgdGhhdCBHb29nbGUgVGVzdCBkb2VzIG5v
dCByZXVzZSB0aGUKK3NhbWUgdGVzdCBmaXh0dXJlIG9iamVjdCBhY3Jvc3MgbXVsdGlwbGUgdGVz
dHMuIEZvciBlYWNoIGBURVNUX0ZgLAorR29vZ2xlIFRlc3Qgd2lsbCBjcmVhdGUgYSBmcmVzaCB0
ZXN0IGZpeHR1cmUgb2JqZWN0LCBfaW1tZWRpYXRlbHlfCitjYWxsIGBTZXRVcCgpYCwgcnVuIHRo
ZSB0ZXN0LCBjYWxsIGBUZWFyRG93bigpYCwgYW5kIHRoZW4KK19pbW1lZGlhdGVseV8gZGVsZXRl
IHRoZSB0ZXN0IGZpeHR1cmUgb2JqZWN0LiBUaGVyZWZvcmUsIHRoZXJlIGlzIG5vCituZWVkIHRv
IHdyaXRlIGEgYFNldFVwKClgIG9yIGBUZWFyRG93bigpYCBmdW5jdGlvbiBpZiB0aGUgY29uc3Ry
dWN0b3IKK29yIGRlc3RydWN0b3IgYWxyZWFkeSBkb2VzIHRoZSBqb2IuCisKK1lvdSBtYXkgc3Rp
bGwgd2FudCB0byB1c2UgYFNldFVwKCkvVGVhckRvd24oKWAgaW4gdGhlIGZvbGxvd2luZyBjYXNl
czoKKyAgKiBJZiB0aGUgdGVhci1kb3duIG9wZXJhdGlvbiBjb3VsZCB0aHJvdyBhbiBleGNlcHRp
b24sIHlvdSBtdXN0IHVzZSBgVGVhckRvd24oKWAgYXMgb3Bwb3NlZCB0byB0aGUgZGVzdHJ1Y3Rv
ciwgYXMgdGhyb3dpbmcgaW4gYSBkZXN0cnVjdG9yIGxlYWRzIHRvIHVuZGVmaW5lZCBiZWhhdmlv
ciBhbmQgdXN1YWxseSB3aWxsIGtpbGwgeW91ciBwcm9ncmFtIHJpZ2h0IGF3YXkuIE5vdGUgdGhh
dCBtYW55IHN0YW5kYXJkIGxpYnJhcmllcyAobGlrZSBTVEwpIG1heSB0aHJvdyB3aGVuIGV4Y2Vw
dGlvbnMgYXJlIGVuYWJsZWQgaW4gdGhlIGNvbXBpbGVyLiBUaGVyZWZvcmUgeW91IHNob3VsZCBw
cmVmZXIgYFRlYXJEb3duKClgIGlmIHlvdSB3YW50IHRvIHdyaXRlIHBvcnRhYmxlIHRlc3RzIHRo
YXQgd29yayB3aXRoIG9yIHdpdGhvdXQgZXhjZXB0aW9ucy4KKyAgKiBUaGUgR29vZ2xlIFRlc3Qg
dGVhbSBpcyBjb25zaWRlcmluZyBtYWtpbmcgdGhlIGFzc2VydGlvbiBtYWNyb3MgdGhyb3cgb24g
cGxhdGZvcm1zIHdoZXJlIGV4Y2VwdGlvbnMgYXJlIGVuYWJsZWQgKGUuZy4gV2luZG93cywgTWFj
IE9TLCBhbmQgTGludXggY2xpZW50LXNpZGUpLCB3aGljaCB3aWxsIGVsaW1pbmF0ZSB0aGUgbmVl
ZCBmb3IgdGhlIHVzZXIgdG8gcHJvcGFnYXRlIGZhaWx1cmVzIGZyb20gYSBzdWJyb3V0aW5lIHRv
IGl0cyBjYWxsZXIuIFRoZXJlZm9yZSwgeW91IHNob3VsZG4ndCB1c2UgR29vZ2xlIFRlc3QgYXNz
ZXJ0aW9ucyBpbiBhIGRlc3RydWN0b3IgaWYgeW91ciBjb2RlIGNvdWxkIHJ1biBvbiBzdWNoIGEg
cGxhdGZvcm0uCisgICogSW4gYSBjb25zdHJ1Y3RvciBvciBkZXN0cnVjdG9yLCB5b3UgY2Fubm90
IG1ha2UgYSB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGwgb24gdGhpcyBvYmplY3QuIChZb3UgY2FuIGNh
bGwgYSBtZXRob2QgZGVjbGFyZWQgYXMgdmlydHVhbCwgYnV0IGl0IHdpbGwgYmUgc3RhdGljYWxs
eSBib3VuZC4pIFRoZXJlZm9yZSwgaWYgeW91IG5lZWQgdG8gY2FsbCBhIG1ldGhvZCB0aGF0IHdp
bGwgYmUgb3ZlcnJpZGVuIGluIGEgZGVyaXZlZCBjbGFzcywgeW91IGhhdmUgdG8gdXNlIGBTZXRV
cCgpL1RlYXJEb3duKClgLgorCisjIyBUaGUgY29tcGlsZXIgY29tcGxhaW5zICJubyBtYXRjaGlu
ZyBmdW5jdGlvbiB0byBjYWxsIiB3aGVuIEkgdXNlIEFTU0VSVFxfUFJFRG4uIEhvdyBkbyBJIGZp
eCBpdD8gIyMKKworSWYgdGhlIHByZWRpY2F0ZSBmdW5jdGlvbiB5b3UgdXNlIGluIGBBU1NFUlRf
UFJFRCpgIG9yIGBFWFBFQ1RfUFJFRCpgIGlzCitvdmVybG9hZGVkIG9yIGEgdGVtcGxhdGUsIHRo
ZSBjb21waWxlciB3aWxsIGhhdmUgdHJvdWJsZSBmaWd1cmluZyBvdXQgd2hpY2gKK292ZXJsb2Fk
ZWQgdmVyc2lvbiBpdCBzaG91bGQgdXNlLiBgQVNTRVJUX1BSRURfRk9STUFUKmAgYW5kCitgRVhQ
RUNUX1BSRURfRk9STUFUKmAgZG9uJ3QgaGF2ZSB0aGlzIHByb2JsZW0uCisKK0lmIHlvdSBzZWUg
dGhpcyBlcnJvciwgeW91IG1pZ2h0IHdhbnQgdG8gc3dpdGNoIHRvCitgKEFTU0VSVHxFWFBFQ1Qp
X1BSRURfRk9STUFUKmAsIHdoaWNoIHdpbGwgYWxzbyBnaXZlIHlvdSBhIGJldHRlciBmYWlsdXJl
CittZXNzYWdlLiBJZiwgaG93ZXZlciwgdGhhdCBpcyBub3QgYW4gb3B0aW9uLCB5b3UgY2FuIHJl
c29sdmUgdGhlIHByb2JsZW0gYnkKK2V4cGxpY2l0bHkgdGVsbGluZyB0aGUgY29tcGlsZXIgd2hp
Y2ggdmVyc2lvbiB0byBwaWNrLgorCitGb3IgZXhhbXBsZSwgc3VwcG9zZSB5b3UgaGF2ZQorCitg
YGAKK2Jvb2wgSXNQb3NpdGl2ZShpbnQgbikgeworICByZXR1cm4gbiA+IDA7Cit9Citib29sIElz
UG9zaXRpdmUoZG91YmxlIHgpIHsKKyAgcmV0dXJuIHggPiAwOworfQorYGBgCisKK3lvdSB3aWxs
IGdldCBhIGNvbXBpbGVyIGVycm9yIGlmIHlvdSB3cml0ZQorCitgYGAKK0VYUEVDVF9QUkVEMShJ
c1Bvc2l0aXZlLCA1KTsKK2BgYAorCitIb3dldmVyLCB0aGlzIHdpbGwgd29yazoKKworYGBgCitF
WFBFQ1RfUFJFRDEoKnN0YXRpY19jYXN0PGJvb2wgKCopKGludCk+KihJc1Bvc2l0aXZlKSwgNSk7
CitgYGAKKworKFRoZSBzdHVmZiBpbnNpZGUgdGhlIGFuZ2xlZCBicmFja2V0cyBmb3IgdGhlIGBz
dGF0aWNfY2FzdGAgb3BlcmF0b3IgaXMgdGhlCit0eXBlIG9mIHRoZSBmdW5jdGlvbiBwb2ludGVy
IGZvciB0aGUgYGludGAtdmVyc2lvbiBvZiBgSXNQb3NpdGl2ZSgpYC4pCisKK0FzIGFub3RoZXIg
ZXhhbXBsZSwgd2hlbiB5b3UgaGF2ZSBhIHRlbXBsYXRlIGZ1bmN0aW9uCisKK2BgYAordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Citib29sIElzTmVnYXRpdmUoVCB4KSB7CisgIHJldHVybiB4IDwgMDsK
K30KK2BgYAorCit5b3UgY2FuIHVzZSBpdCBpbiBhIHByZWRpY2F0ZSBhc3NlcnRpb24gbGlrZSB0
aGlzOgorCitgYGAKK0FTU0VSVF9QUkVEMShJc05lZ2F0aXZlKjxpbnQ+KiwgLTUpOworYGBgCisK
K1RoaW5ncyBhcmUgbW9yZSBpbnRlcmVzdGluZyBpZiB5b3VyIHRlbXBsYXRlIGhhcyBtb3JlIHRo
YW4gb25lIHBhcmFtZXRlcnMuIFRoZQorZm9sbG93aW5nIHdvbid0IGNvbXBpbGU6CisKK2BgYAor
QVNTRVJUX1BSRUQyKCpHcmVhdGVyVGhhbjxpbnQsIGludD4qLCA1LCAwKTsKK2BgYAorCisKK2Fz
IHRoZSBDKysgcHJlLXByb2Nlc3NvciB0aGlua3MgeW91IGFyZSBnaXZpbmcgYEFTU0VSVF9QUkVE
MmAgNCBhcmd1bWVudHMsCit3aGljaCBpcyBvbmUgbW9yZSB0aGFuIGV4cGVjdGVkLiBUaGUgd29y
a2Fyb3VuZCBpcyB0byB3cmFwIHRoZSBwcmVkaWNhdGUKK2Z1bmN0aW9uIGluIHBhcmVudGhlc2Vz
OgorCitgYGAKK0FTU0VSVF9QUkVEMigqKEdyZWF0ZXJUaGFuPGludCwgaW50PikqLCA1LCAwKTsK
K2BgYAorCisKKyMjIE15IGNvbXBpbGVyIGNvbXBsYWlucyBhYm91dCAiaWdub3JpbmcgcmV0dXJu
IHZhbHVlIiB3aGVuIEkgY2FsbCBSVU5cX0FMTFxfVEVTVFMoKS4gV2h5PyAjIworCitTb21lIHBl
b3BsZSBoYWQgYmVlbiBpZ25vcmluZyB0aGUgcmV0dXJuIHZhbHVlIG9mIGBSVU5fQUxMX1RFU1RT
KClgLiBUaGF0IGlzLAoraW5zdGVhZCBvZgorCitgYGAKK3JldHVybiBSVU5fQUxMX1RFU1RTKCk7
CitgYGAKKwordGhleSB3cml0ZQorCitgYGAKK1JVTl9BTExfVEVTVFMoKTsKK2BgYAorCitUaGlz
IGlzIHdyb25nIGFuZCBkYW5nZXJvdXMuIEEgdGVzdCBydW5uZXIgbmVlZHMgdG8gc2VlIHRoZSBy
ZXR1cm4gdmFsdWUgb2YKK2BSVU5fQUxMX1RFU1RTKClgIGluIG9yZGVyIHRvIGRldGVybWluZSBp
ZiBhIHRlc3QgaGFzIHBhc3NlZC4gSWYgeW91ciBgbWFpbigpYAorZnVuY3Rpb24gaWdub3JlcyBp
dCwgeW91ciB0ZXN0IHdpbGwgYmUgY29uc2lkZXJlZCBzdWNjZXNzZnVsIGV2ZW4gaWYgaXQgaGFz
IGEKK0dvb2dsZSBUZXN0IGFzc2VydGlvbiBmYWlsdXJlLiBWZXJ5IGJhZC4KKworVG8gaGVscCB0
aGUgdXNlcnMgYXZvaWQgdGhpcyBkYW5nZXJvdXMgYnVnLCB0aGUgaW1wbGVtZW50YXRpb24gb2YK
K2BSVU5fQUxMX1RFU1RTKClgIGNhdXNlcyBnY2MgdG8gcmFpc2UgdGhpcyB3YXJuaW5nLCB3aGVu
IHRoZSByZXR1cm4gdmFsdWUgaXMKK2lnbm9yZWQuIElmIHlvdSBzZWUgdGhpcyB3YXJuaW5nLCB0
aGUgZml4IGlzIHNpbXBsZToganVzdCBtYWtlIHN1cmUgaXRzIHZhbHVlCitpcyB1c2VkIGFzIHRo
ZSByZXR1cm4gdmFsdWUgb2YgYG1haW4oKWAuCisKKyMjIE15IGNvbXBpbGVyIGNvbXBsYWlucyB0
aGF0IGEgY29uc3RydWN0b3IgKG9yIGRlc3RydWN0b3IpIGNhbm5vdCByZXR1cm4gYSB2YWx1ZS4g
V2hhdCdzIGdvaW5nIG9uPyAjIworCitEdWUgdG8gYSBwZWN1bGlhcml0eSBvZiBDKyssIGluIG9y
ZGVyIHRvIHN1cHBvcnQgdGhlIHN5bnRheCBmb3Igc3RyZWFtaW5nCittZXNzYWdlcyB0byBhbiBg
QVNTRVJUXypgLCBlLmcuCisKK2BgYAorQVNTRVJUX0VRKDEsIEZvbygpKSA8PCAiYmxhaCBibGFo
IiA8PCBmb287CitgYGAKKword2UgaGFkIHRvIGdpdmUgdXAgdXNpbmcgYEFTU0VSVCpgIGFuZCBg
RkFJTCpgIChidXQgbm90IGBFWFBFQ1QqYCBhbmQKK2BBRERfRkFJTFVSRSpgKSBpbiBjb25zdHJ1
Y3RvcnMgYW5kIGRlc3RydWN0b3JzLiBUaGUgd29ya2Fyb3VuZCBpcyB0byBtb3ZlIHRoZQorY29u
dGVudCBvZiB5b3VyIGNvbnN0cnVjdG9yL2Rlc3RydWN0b3IgdG8gYSBwcml2YXRlIHZvaWQgbWVt
YmVyIGZ1bmN0aW9uLCBvcgorc3dpdGNoIHRvIGBFWFBFQ1RfKigpYCBpZiB0aGF0IHdvcmtzLiBU
aGlzIHNlY3Rpb24gaW4gdGhlIHVzZXIncyBndWlkZSBleHBsYWlucworaXQuCisKKyMjIE15IHNl
dC11cCBmdW5jdGlvbiBpcyBub3QgY2FsbGVkLiBXaHk/ICMjCisKK0MrKyBpcyBjYXNlLXNlbnNp
dGl2ZS4gSXQgc2hvdWxkIGJlIHNwZWxsZWQgYXMgYFNldFVwKClgLiAgRGlkIHlvdQorc3BlbGwg
aXQgYXMgYFNldHVwKClgPworCitTaW1pbGFybHksIHNvbWV0aW1lcyBwZW9wbGUgc3BlbGwgYFNl
dFVwVGVzdENhc2UoKWAgYXMgYFNldHVwVGVzdENhc2UoKWAgYW5kCit3b25kZXIgd2h5IGl0J3Mg
bmV2ZXIgY2FsbGVkLgorCisjIyBIb3cgZG8gSSBqdW1wIHRvIHRoZSBsaW5lIG9mIGEgZmFpbHVy
ZSBpbiBFbWFjcyBkaXJlY3RseT8gIyMKKworR29vZ2xlIFRlc3QncyBmYWlsdXJlIG1lc3NhZ2Ug
Zm9ybWF0IGlzIHVuZGVyc3Rvb2QgYnkgRW1hY3MgYW5kIG1hbnkgb3RoZXIKK0lERXMsIGxpa2Ug
YWNtZSBhbmQgWENvZGUuIElmIGEgR29vZ2xlIFRlc3QgbWVzc2FnZSBpcyBpbiBhIGNvbXBpbGF0
aW9uIGJ1ZmZlcgoraW4gRW1hY3MsIHRoZW4gaXQncyBjbGlja2FibGUuIFlvdSBjYW4gbm93IGhp
dCBgZW50ZXJgIG9uIGEgbWVzc2FnZSB0byBqdW1wIHRvCit0aGUgY29ycmVzcG9uZGluZyBzb3Vy
Y2UgY29kZSwgb3IgdXNlIGBDLXggYGAgdG8ganVtcCB0byB0aGUgbmV4dCBmYWlsdXJlLgorCisj
IyBJIGhhdmUgc2V2ZXJhbCB0ZXN0IGNhc2VzIHdoaWNoIHNoYXJlIHRoZSBzYW1lIHRlc3QgZml4
dHVyZSBsb2dpYywgZG8gSSBoYXZlIHRvIGRlZmluZSBhIG5ldyB0ZXN0IGZpeHR1cmUgY2xhc3Mg
Zm9yIGVhY2ggb2YgdGhlbT8gVGhpcyBzZWVtcyBwcmV0dHkgdGVkaW91cy4gIyMKKworWW91IGRv
bid0IGhhdmUgdG8uIEluc3RlYWQgb2YKKworYGBgCitjbGFzcyBGb29UZXN0IDogcHVibGljIEJh
c2VUZXN0IHt9OworCitURVNUX0YoRm9vVGVzdCwgQWJjKSB7IC4uLiB9CitURVNUX0YoRm9vVGVz
dCwgRGVmKSB7IC4uLiB9CisKK2NsYXNzIEJhclRlc3QgOiBwdWJsaWMgQmFzZVRlc3Qge307CisK
K1RFU1RfRihCYXJUZXN0LCBBYmMpIHsgLi4uIH0KK1RFU1RfRihCYXJUZXN0LCBEZWYpIHsgLi4u
IH0KK2BgYAorCit5b3UgY2FuIHNpbXBseSBgdHlwZWRlZmAgdGhlIHRlc3QgZml4dHVyZXM6Citg
YGAKK3R5cGVkZWYgQmFzZVRlc3QgRm9vVGVzdDsKKworVEVTVF9GKEZvb1Rlc3QsIEFiYykgeyAu
Li4gfQorVEVTVF9GKEZvb1Rlc3QsIERlZikgeyAuLi4gfQorCit0eXBlZGVmIEJhc2VUZXN0IEJh
clRlc3Q7CisKK1RFU1RfRihCYXJUZXN0LCBBYmMpIHsgLi4uIH0KK1RFU1RfRihCYXJUZXN0LCBE
ZWYpIHsgLi4uIH0KK2BgYAorCisjIyBUaGUgR29vZ2xlIFRlc3Qgb3V0cHV0IGlzIGJ1cmllZCBp
biBhIHdob2xlIGJ1bmNoIG9mIGxvZyBtZXNzYWdlcy4gV2hhdCBkbyBJIGRvPyAjIworCitUaGUg
R29vZ2xlIFRlc3Qgb3V0cHV0IGlzIG1lYW50IHRvIGJlIGEgY29uY2lzZSBhbmQgaHVtYW4tZnJp
ZW5kbHkgcmVwb3J0LiBJZgoreW91ciB0ZXN0IGdlbmVyYXRlcyB0ZXh0dWFsIG91dHB1dCBpdHNl
bGYsIGl0IHdpbGwgbWl4IHdpdGggdGhlIEdvb2dsZSBUZXN0CitvdXRwdXQsIG1ha2luZyBpdCBo
YXJkIHRvIHJlYWQuIEhvd2V2ZXIsIHRoZXJlIGlzIGFuIGVhc3kgc29sdXRpb24gdG8gdGhpcwor
cHJvYmxlbS4KKworU2luY2UgbW9zdCBsb2cgbWVzc2FnZXMgZ28gdG8gc3RkZXJyLCB3ZSBkZWNp
ZGVkIHRvIGxldCBHb29nbGUgVGVzdCBvdXRwdXQgZ28KK3RvIHN0ZG91dC4gVGhpcyB3YXksIHlv
dSBjYW4gZWFzaWx5IHNlcGFyYXRlIHRoZSB0d28gdXNpbmcgcmVkaXJlY3Rpb24uIEZvcgorZXhh
bXBsZToKK2BgYAorLi9teV90ZXN0ID4gZ29vZ2xldGVzdF9vdXRwdXQudHh0CitgYGAKKworIyMg
V2h5IHNob3VsZCBJIHByZWZlciB0ZXN0IGZpeHR1cmVzIG92ZXIgZ2xvYmFsIHZhcmlhYmxlcz8g
IyMKKworVGhlcmUgYXJlIHNldmVyYWwgZ29vZCByZWFzb25zOgorICAxLiBJdCdzIGxpa2VseSB5
b3VyIHRlc3QgbmVlZHMgdG8gY2hhbmdlIHRoZSBzdGF0ZXMgb2YgaXRzIGdsb2JhbCB2YXJpYWJs
ZXMuIFRoaXMgbWFrZXMgaXQgZGlmZmljdWx0IHRvIGtlZXAgc2lkZSBlZmZlY3RzIGZyb20gZXNj
YXBpbmcgb25lIHRlc3QgYW5kIGNvbnRhbWluYXRpbmcgb3RoZXJzLCBtYWtpbmcgZGVidWdnaW5n
IGRpZmZpY3VsdC4gQnkgdXNpbmcgZml4dHVyZXMsIGVhY2ggdGVzdCBoYXMgYSBmcmVzaCBzZXQg
b2YgdmFyaWFibGVzIHRoYXQncyBkaWZmZXJlbnQgKGJ1dCB3aXRoIHRoZSBzYW1lIG5hbWVzKS4g
VGh1cywgdGVzdHMgYXJlIGtlcHQgaW5kZXBlbmRlbnQgb2YgZWFjaCBvdGhlci4KKyAgMS4gR2xv
YmFsIHZhcmlhYmxlcyBwb2xsdXRlIHRoZSBnbG9iYWwgbmFtZXNwYWNlLgorICAxLiBUZXN0IGZp
eHR1cmVzIGNhbiBiZSByZXVzZWQgdmlhIHN1YmNsYXNzaW5nLCB3aGljaCBjYW5ub3QgYmUgZG9u
ZSBlYXNpbHkgd2l0aCBnbG9iYWwgdmFyaWFibGVzLiBUaGlzIGlzIHVzZWZ1bCBpZiBtYW55IHRl
c3QgY2FzZXMgaGF2ZSBzb21ldGhpbmcgaW4gY29tbW9uLgorCisjIyBIb3cgZG8gSSB0ZXN0IHBy
aXZhdGUgY2xhc3MgbWVtYmVycyB3aXRob3V0IHdyaXRpbmcgRlJJRU5EXF9URVNUKClzPyAjIwor
CitZb3Ugc2hvdWxkIHRyeSB0byB3cml0ZSB0ZXN0YWJsZSBjb2RlLCB3aGljaCBtZWFucyBjbGFz
c2VzIHNob3VsZCBiZSBlYXNpbHkKK3Rlc3RlZCBmcm9tIHRoZWlyIHB1YmxpYyBpbnRlcmZhY2Uu
IE9uZSB3YXkgdG8gYWNoaWV2ZSB0aGlzIGlzIHRoZSBQaW1wbCBpZGlvbToKK3lvdSBtb3ZlIGFs
bCBwcml2YXRlIG1lbWJlcnMgb2YgYSBjbGFzcyBpbnRvIGEgaGVscGVyIGNsYXNzLCBhbmQgbWFr
ZSBhbGwKK21lbWJlcnMgb2YgdGhlIGhlbHBlciBjbGFzcyBwdWJsaWMuCisKK1lvdSBoYXZlIHNl
dmVyYWwgb3RoZXIgb3B0aW9ucyB0aGF0IGRvbid0IHJlcXVpcmUgdXNpbmcgYEZSSUVORF9URVNU
YDoKKyAgKiBXcml0ZSB0aGUgdGVzdHMgYXMgbWVtYmVycyBvZiB0aGUgZml4dHVyZSBjbGFzczoK
K2BgYAorY2xhc3MgRm9vIHsKKyAgZnJpZW5kIGNsYXNzIEZvb1Rlc3Q7CisgIC4uLgorfTsKKwor
Y2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAg
Li4uCisgIHZvaWQgVGVzdDEoKSB7Li4ufSAvLyBUaGlzIGFjY2Vzc2VzIHByaXZhdGUgbWVtYmVy
cyBvZiBjbGFzcyBGb28uCisgIHZvaWQgVGVzdDIoKSB7Li4ufSAvLyBTbyBkb2VzIHRoaXMgb25l
LgorfTsKKworVEVTVF9GKEZvb1Rlc3QsIFRlc3QxKSB7CisgIFRlc3QxKCk7Cit9CisKK1RFU1Rf
RihGb29UZXN0LCBUZXN0MikgeworICBUZXN0MigpOworfQorYGBgCisgICogSW4gdGhlIGZpeHR1
cmUgY2xhc3MsIHdyaXRlIGFjY2Vzc29ycyBmb3IgdGhlIHRlc3RlZCBjbGFzcycgcHJpdmF0ZSBt
ZW1iZXJzLCB0aGVuIHVzZSB0aGUgYWNjZXNzb3JzIGluIHlvdXIgdGVzdHM6CitgYGAKK2NsYXNz
IEZvbyB7CisgIGZyaWVuZCBjbGFzcyBGb29UZXN0OworICAuLi4KK307CisKK2NsYXNzIEZvb1Rl
c3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIC4uLgorICBUMSBn
ZXRfcHJpdmF0ZV9tZW1iZXIxKEZvbyogb2JqKSB7CisgICAgcmV0dXJuIG9iai0+cHJpdmF0ZV9t
ZW1iZXIxXzsKKyAgfQorfTsKKworVEVTVF9GKEZvb1Rlc3QsIFRlc3QxKSB7CisgIC4uLgorICBn
ZXRfcHJpdmF0ZV9tZW1iZXIxKHgpCisgIC4uLgorfQorYGBgCisgICogSWYgdGhlIG1ldGhvZHMg
YXJlIGRlY2xhcmVkICoqcHJvdGVjdGVkKiosIHlvdSBjYW4gY2hhbmdlIHRoZWlyIGFjY2VzcyBs
ZXZlbCBpbiBhIHRlc3Qtb25seSBzdWJjbGFzczoKK2BgYAorY2xhc3MgWW91ckNsYXNzIHsKKyAg
Li4uCisgcHJvdGVjdGVkOiAvLyBwcm90ZWN0ZWQgYWNjZXNzIGZvciB0ZXN0YWJpbGl0eS4KKyAg
aW50IERvU29tZXRoaW5nUmV0dXJuaW5nSW50KCk7CisgIC4uLgorfTsKKworLy8gaW4gdGhlIHlv
dXJfY2xhc3NfdGVzdC5jYyBmaWxlOgorY2xhc3MgVGVzdGFibGVZb3VyQ2xhc3MgOiBwdWJsaWMg
WW91ckNsYXNzIHsKKyAgLi4uCisgcHVibGljOiB1c2luZyBZb3VyQ2xhc3M6OkRvU29tZXRoaW5n
UmV0dXJuaW5nSW50OyAvLyBjaGFuZ2VzIGFjY2VzcyByaWdodHMKKyAgLi4uCit9OworCitURVNU
X0YoWW91ckNsYXNzVGVzdCwgRG9Tb21ldGhpbmdUZXN0KSB7CisgIFRlc3RhYmxlWW91ckNsYXNz
IG9iajsKKyAgYXNzZXJ0RXF1YWxzKGV4cGVjdGVkX3ZhbHVlLCBvYmouRG9Tb21ldGhpbmdSZXR1
cm5pbmdJbnQoKSk7Cit9CitgYGAKKworIyMgSG93IGRvIEkgdGVzdCBwcml2YXRlIGNsYXNzIHN0
YXRpYyBtZW1iZXJzIHdpdGhvdXQgd3JpdGluZyBGUklFTkRcX1RFU1QoKXM/ICMjCisKK1dlIGZp
bmQgcHJpdmF0ZSBzdGF0aWMgbWV0aG9kcyBjbHV0dGVyIHRoZSBoZWFkZXIgZmlsZS4gIFRoZXkg
YXJlCitpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGFuZCBpZGVhbGx5IHNob3VsZCBiZSBrZXB0IG91
dCBvZiBhIC5oLiBTbyBvZnRlbiBJIG1ha2UKK3RoZW0gZnJlZSBmdW5jdGlvbnMgaW5zdGVhZC4K
KworSW5zdGVhZCBvZjoKK2BgYAorLy8gZm9vLmgKK2NsYXNzIEZvbyB7CisgIC4uLgorIHByaXZh
dGU6CisgIHN0YXRpYyBib29sIEZ1bmMoaW50IG4pOworfTsKKworLy8gZm9vLmNjCitib29sIEZv
bzo6RnVuYyhpbnQgbikgeyAuLi4gfQorCisvLyBmb29fdGVzdC5jYworRVhQRUNUX1RSVUUoRm9v
OjpGdW5jKDEyMzQ1KSk7CitgYGAKKworWW91IHByb2JhYmx5IHNob3VsZCBiZXR0ZXIgd3JpdGU6
CitgYGAKKy8vIGZvby5oCitjbGFzcyBGb28geworICAuLi4KK307CisKKy8vIGZvby5jYworbmFt
ZXNwYWNlIGludGVybmFsIHsKKyAgYm9vbCBGdW5jKGludCBuKSB7IC4uLiB9Cit9CisKKy8vIGZv
b190ZXN0LmNjCituYW1lc3BhY2UgaW50ZXJuYWwgeworICBib29sIEZ1bmMoaW50IG4pOworfQor
CitFWFBFQ1RfVFJVRShpbnRlcm5hbDo6RnVuYygxMjM0NSkpOworYGBgCisKKyMjIEkgd291bGQg
bGlrZSB0byBydW4gYSB0ZXN0IHNldmVyYWwgdGltZXMgd2l0aCBkaWZmZXJlbnQgcGFyYW1ldGVy
cy4gRG8gSSBuZWVkIHRvIHdyaXRlIHNldmVyYWwgc2ltaWxhciBjb3BpZXMgb2YgaXQ/ICMjCisK
K05vLiBZb3UgY2FuIHVzZSBhIGZlYXR1cmUgY2FsbGVkIFt2YWx1ZS1wYXJhbWV0ZXJpemVkIHRl
c3RzXShWMV82X0FkdmFuY2VkR3VpZGUubWQjVmFsdWVfUGFyYW1ldGVyaXplZF9UZXN0cykgd2hp
Y2gKK2xldHMgeW91IHJlcGVhdCB5b3VyIHRlc3RzIHdpdGggZGlmZmVyZW50IHBhcmFtZXRlcnMs
IHdpdGhvdXQgZGVmaW5pbmcgaXQgbW9yZSB0aGFuIG9uY2UuCisKKyMjIEhvdyBkbyBJIHRlc3Qg
YSBmaWxlIHRoYXQgZGVmaW5lcyBtYWluKCk/ICMjCisKK1RvIHRlc3QgYSBgZm9vLmNjYCBmaWxl
LCB5b3UgbmVlZCB0byBjb21waWxlIGFuZCBsaW5rIGl0IGludG8geW91ciB1bml0IHRlc3QKK3By
b2dyYW0uIEhvd2V2ZXIsIHdoZW4gdGhlIGZpbGUgY29udGFpbnMgYSBkZWZpbml0aW9uIGZvciB0
aGUgYG1haW4oKWAKK2Z1bmN0aW9uLCBpdCB3aWxsIGNsYXNoIHdpdGggdGhlIGBtYWluKClgIG9m
IHlvdXIgdW5pdCB0ZXN0LCBhbmQgd2lsbCByZXN1bHQgaW4KK2EgYnVpbGQgZXJyb3IuCisKK1Ro
ZSByaWdodCBzb2x1dGlvbiBpcyB0byBzcGxpdCBpdCBpbnRvIHRocmVlIGZpbGVzOgorICAxLiBg
Zm9vLmhgIHdoaWNoIGNvbnRhaW5zIHRoZSBkZWNsYXJhdGlvbnMsCisgIDEuIGBmb28uY2NgIHdo
aWNoIGNvbnRhaW5zIHRoZSBkZWZpbml0aW9ucyBleGNlcHQgYG1haW4oKWAsIGFuZAorICAxLiBg
Zm9vX21haW4uY2NgIHdoaWNoIGNvbnRhaW5zIG5vdGhpbmcgYnV0IHRoZSBkZWZpbml0aW9uIG9m
IGBtYWluKClgLgorCitUaGVuIGBmb28uY2NgIGNhbiBiZSBlYXNpbHkgdGVzdGVkLgorCitJZiB5
b3UgYXJlIGFkZGluZyB0ZXN0cyB0byBhbiBleGlzdGluZyBmaWxlIGFuZCBkb24ndCB3YW50IGFu
IGludHJ1c2l2ZSBjaGFuZ2UKK2xpa2UgdGhpcywgdGhlcmUgaXMgYSBoYWNrOiBqdXN0IGluY2x1
ZGUgdGhlIGVudGlyZSBgZm9vLmNjYCBmaWxlIGluIHlvdXIgdW5pdAordGVzdC4gRm9yIGV4YW1w
bGU6CitgYGAKKy8vIEZpbGUgZm9vX3VuaXR0ZXN0LmNjCisKKy8vIFRoZSBoZWFkZXJzIHNlY3Rp
b24KKy4uLgorCisvLyBSZW5hbWVzIG1haW4oKSBpbiBmb28uY2MgdG8gbWFrZSByb29tIGZvciB0
aGUgdW5pdCB0ZXN0IG1haW4oKQorI2RlZmluZSBtYWluIEZvb01haW4KKworI2luY2x1ZGUgImEv
Yi9mb28uY2MiCisKKy8vIFRoZSB0ZXN0cyBzdGFydCBoZXJlLgorLi4uCitgYGAKKworCitIb3dl
dmVyLCBwbGVhc2UgcmVtZW1iZXIgdGhpcyBpcyBhIGhhY2sgYW5kIHNob3VsZCBvbmx5IGJlIHVz
ZWQgYXMgdGhlIGxhc3QKK3Jlc29ydC4KKworIyMgV2hhdCBjYW4gdGhlIHN0YXRlbWVudCBhcmd1
bWVudCBpbiBBU1NFUlRcX0RFQVRIKCkgYmU/ICMjCisKK2BBU1NFUlRfREVBVEgoX3N0YXRlbWVu
dF8sIF9yZWdleF8pYCAob3IgYW55IGRlYXRoIGFzc2VydGlvbiBtYWNybykgY2FuIGJlIHVzZWQK
K3doZXJldmVyIGBfc3RhdGVtZW50X2AgaXMgdmFsaWQuIFNvIGJhc2ljYWxseSBgX3N0YXRlbWVu
dF9gIGNhbiBiZSBhbnkgQysrCitzdGF0ZW1lbnQgdGhhdCBtYWtlcyBzZW5zZSBpbiB0aGUgY3Vy
cmVudCBjb250ZXh0LiBJbiBwYXJ0aWN1bGFyLCBpdCBjYW4KK3JlZmVyZW5jZSBnbG9iYWwgYW5k
L29yIGxvY2FsIHZhcmlhYmxlcywgYW5kIGNhbiBiZToKKyAgKiBhIHNpbXBsZSBmdW5jdGlvbiBj
YWxsIChvZnRlbiB0aGUgY2FzZSksCisgICogYSBjb21wbGV4IGV4cHJlc3Npb24sIG9yCisgICog
YSBjb21wb3VuZCBzdGF0ZW1lbnQuCisKKz4gU29tZSBleGFtcGxlcyBhcmUgc2hvd24gaGVyZToK
KworYGBgCisvLyBBIGRlYXRoIHRlc3QgY2FuIGJlIGEgc2ltcGxlIGZ1bmN0aW9uIGNhbGwuCitU
RVNUKE15RGVhdGhUZXN0LCBGdW5jdGlvbkNhbGwpIHsKKyAgQVNTRVJUX0RFQVRIKFh5eig1KSwg
Ilh5eiBmYWlsZWQiKTsKK30KKworLy8gT3IgYSBjb21wbGV4IGV4cHJlc3Npb24gdGhhdCByZWZl
cmVuY2VzIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zLgorVEVTVChNeURlYXRoVGVzdCwgQ29tcGxl
eEV4cHJlc3Npb24pIHsKKyAgY29uc3QgYm9vbCBjID0gQ29uZGl0aW9uKCk7CisgIEFTU0VSVF9E
RUFUSCgoYyA/IEZ1bmMxKDApIDogb2JqZWN0Mi5NZXRob2QoInRlc3QiKSksCisgICAgICAgICAg
ICAgICAiKEZ1bmMxfE1ldGhvZCkgZmFpbGVkIik7Cit9CisKKy8vIERlYXRoIGFzc2VydGlvbnMg
Y2FuIGJlIHVzZWQgYW55IHdoZXJlIGluIGEgZnVuY3Rpb24uIEluCisvLyBwYXJ0aWN1bGFyLCB0
aGV5IGNhbiBiZSBpbnNpZGUgYSBsb29wLgorVEVTVChNeURlYXRoVGVzdCwgSW5zaWRlTG9vcCkg
eworICAvLyBWZXJpZmllcyB0aGF0IEZvbygwKSwgRm9vKDEpLCAuLi4sIGFuZCBGb28oNCkgYWxs
IGRpZS4KKyAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBpKyspIHsKKyAgICBFWFBFQ1RfREVBVEhf
TShGb28oaSksICJGb28gaGFzIFxcZCsgZXJyb3JzIiwKKyAgICAgICAgICAgICAgICAgICA6OnRl
c3Rpbmc6Ok1lc3NhZ2UoKSA8PCAid2hlcmUgaSBpcyAiIDw8IGkpOworICB9Cit9CisKKy8vIEEg
ZGVhdGggYXNzZXJ0aW9uIGNhbiBjb250YWluIGEgY29tcG91bmQgc3RhdGVtZW50LgorVEVTVChN
eURlYXRoVGVzdCwgQ29tcG91bmRTdGF0ZW1lbnQpIHsKKyAgLy8gVmVyaWZpZXMgdGhhdCBhdCBs
ZWFzZSBvbmUgb2YgQmFyKDApLCBCYXIoMSksIC4uLiwgYW5kCisgIC8vIEJhcig0KSBkaWVzLgor
ICBBU1NFUlRfREVBVEgoeworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgaSsrKSB7CisgICAg
ICBCYXIoaSk7CisgICAgfQorICB9LAorICAiQmFyIGhhcyBcXGQrIGVycm9ycyIpO30KK2BgYAor
CitgZ29vZ2xldGVzdF91bml0dGVzdC5jY2AgY29udGFpbnMgbW9yZSBleGFtcGxlcyBpZiB5b3Ug
YXJlIGludGVyZXN0ZWQuCisKKyMjIFdoYXQgc3ludGF4IGRvZXMgdGhlIHJlZ3VsYXIgZXhwcmVz
c2lvbiBpbiBBU1NFUlRcX0RFQVRIIHVzZT8gIyMKKworT24gUE9TSVggc3lzdGVtcywgR29vZ2xl
IFRlc3QgdXNlcyB0aGUgUE9TSVggRXh0ZW5kZWQgcmVndWxhcgorZXhwcmVzc2lvbiBzeW50YXgK
KyhodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JlZ3VsYXJfZXhwcmVzc2lvbiNQT1NJWF9F
eHRlbmRlZF9SZWd1bGFyX0V4cHJlc3Npb25zKS4KK09uIFdpbmRvd3MsIGl0IHVzZXMgYSBsaW1p
dGVkIHZhcmlhbnQgb2YgcmVndWxhciBleHByZXNzaW9uCitzeW50YXguIEZvciBtb3JlIGRldGFp
bHMsIHNlZSB0aGUKK1tyZWd1bGFyIGV4cHJlc3Npb24gc3ludGF4XShWMV82X0FkdmFuY2VkR3Vp
ZGUubWQjUmVndWxhcl9FeHByZXNzaW9uX1N5bnRheCkuCisKKyMjIEkgaGF2ZSBhIGZpeHR1cmUg
Y2xhc3MgRm9vLCBidXQgVEVTVFxfRihGb28sIEJhcikgZ2l2ZXMgbWUgZXJyb3IgIm5vIG1hdGNo
aW5nIGZ1bmN0aW9uIGZvciBjYWxsIHRvIEZvbzo6Rm9vKCkiLiBXaHk/ICMjCisKK0dvb2dsZSBU
ZXN0IG5lZWRzIHRvIGJlIGFibGUgdG8gY3JlYXRlIG9iamVjdHMgb2YgeW91ciB0ZXN0IGZpeHR1
cmUgY2xhc3MsIHNvCitpdCBtdXN0IGhhdmUgYSBkZWZhdWx0IGNvbnN0cnVjdG9yLiBOb3JtYWxs
eSB0aGUgY29tcGlsZXIgd2lsbCBkZWZpbmUgb25lIGZvcgoreW91LiBIb3dldmVyLCB0aGVyZSBh
cmUgY2FzZXMgd2hlcmUgeW91IGhhdmUgdG8gZGVmaW5lIHlvdXIgb3duOgorICAqIElmIHlvdSBl
eHBsaWNpdGx5IGRlY2xhcmUgYSBub24tZGVmYXVsdCBjb25zdHJ1Y3RvciBmb3IgY2xhc3MgYEZv
b2AsIHRoZW4geW91IG5lZWQgdG8gZGVmaW5lIGEgZGVmYXVsdCBjb25zdHJ1Y3RvciwgZXZlbiBp
ZiBpdCB3b3VsZCBiZSBlbXB0eS4KKyAgKiBJZiBgRm9vYCBoYXMgYSBjb25zdCBub24tc3RhdGlj
IGRhdGEgbWVtYmVyLCB0aGVuIHlvdSBoYXZlIHRvIGRlZmluZSB0aGUgZGVmYXVsdCBjb25zdHJ1
Y3RvciBfYW5kXyBpbml0aWFsaXplIHRoZSBjb25zdCBtZW1iZXIgaW4gdGhlIGluaXRpYWxpemVy
IGxpc3Qgb2YgdGhlIGNvbnN0cnVjdG9yLiAoRWFybHkgdmVyc2lvbnMgb2YgYGdjY2AgZG9lc24n
dCBmb3JjZSB5b3UgdG8gaW5pdGlhbGl6ZSB0aGUgY29uc3QgbWVtYmVyLiBJdCdzIGEgYnVnIHRo
YXQgaGFzIGJlZW4gZml4ZWQgaW4gYGdjYyA0YC4pCisKKyMjIFdoeSBkb2VzIEFTU0VSVFxfREVB
VEggY29tcGxhaW4gYWJvdXQgcHJldmlvdXMgdGhyZWFkcyB0aGF0IHdlcmUgYWxyZWFkeSBqb2lu
ZWQ/ICMjCisKK1dpdGggdGhlIExpbnV4IHB0aHJlYWQgbGlicmFyeSwgdGhlcmUgaXMgbm8gdHVy
bmluZyBiYWNrIG9uY2UgeW91IGNyb3NzIHRoZQorbGluZSBmcm9tIHNpbmdsZSB0aHJlYWQgdG8g
bXVsdGlwbGUgdGhyZWFkcy4gVGhlIGZpcnN0IHRpbWUgeW91IGNyZWF0ZSBhCit0aHJlYWQsIGEg
bWFuYWdlciB0aHJlYWQgaXMgY3JlYXRlZCBpbiBhZGRpdGlvbiwgc28geW91IGdldCAzLCBub3Qg
MiwgdGhyZWFkcy4KK0xhdGVyIHdoZW4gdGhlIHRocmVhZCB5b3UgY3JlYXRlIGpvaW5zIHRoZSBt
YWluIHRocmVhZCwgdGhlIHRocmVhZCBjb3VudAorZGVjcmVtZW50cyBieSAxLCBidXQgdGhlIG1h
bmFnZXIgdGhyZWFkIHdpbGwgbmV2ZXIgYmUga2lsbGVkLCBzbyB5b3Ugc3RpbGwgaGF2ZQorMiB0
aHJlYWRzLCB3aGljaCBtZWFucyB5b3UgY2Fubm90IHNhZmVseSBydW4gYSBkZWF0aCB0ZXN0Lgor
CitUaGUgbmV3IE5QVEwgdGhyZWFkIGxpYnJhcnkgZG9lc24ndCBzdWZmZXIgZnJvbSB0aGlzIHBy
b2JsZW0sIGFzIGl0IGRvZXNuJ3QKK2NyZWF0ZSBhIG1hbmFnZXIgdGhyZWFkLiBIb3dldmVyLCBp
ZiB5b3UgZG9uJ3QgY29udHJvbCB3aGljaCBtYWNoaW5lIHlvdXIgdGVzdAorcnVucyBvbiwgeW91
IHNob3VsZG4ndCBkZXBlbmQgb24gdGhpcy4KKworIyMgV2h5IGRvZXMgR29vZ2xlIFRlc3QgcmVx
dWlyZSB0aGUgZW50aXJlIHRlc3QgY2FzZSwgaW5zdGVhZCBvZiBpbmRpdmlkdWFsIHRlc3RzLCB0
byBiZSBuYW1lZCBGT09EZWF0aFRlc3Qgd2hlbiBpdCB1c2VzIEFTU0VSVFxfREVBVEg/ICMjCisK
K0dvb2dsZSBUZXN0IGRvZXMgbm90IGludGVybGVhdmUgdGVzdHMgZnJvbSBkaWZmZXJlbnQgdGVz
dCBjYXNlcy4gVGhhdCBpcywgaXQKK3J1bnMgYWxsIHRlc3RzIGluIG9uZSB0ZXN0IGNhc2UgZmly
c3QsIGFuZCB0aGVuIHJ1bnMgYWxsIHRlc3RzIGluIHRoZSBuZXh0IHRlc3QKK2Nhc2UsIGFuZCBz
byBvbi4gR29vZ2xlIFRlc3QgZG9lcyB0aGlzIGJlY2F1c2UgaXQgbmVlZHMgdG8gc2V0IHVwIGEg
dGVzdCBjYXNlCitiZWZvcmUgdGhlIGZpcnN0IHRlc3QgaW4gaXQgaXMgcnVuLCBhbmQgdGVhciBp
dCBkb3duIGFmdGVyd29yZHMuIFNwbGl0dGluZyB1cAordGhlIHRlc3QgY2FzZSB3b3VsZCByZXF1
aXJlIG11bHRpcGxlIHNldC11cCBhbmQgdGVhci1kb3duIHByb2Nlc3Nlcywgd2hpY2ggaXMKK2lu
ZWZmaWNpZW50IGFuZCBtYWtlcyB0aGUgc2VtYW50aWNzIHVuY2xlYW4uCisKK0lmIHdlIHdlcmUg
dG8gZGV0ZXJtaW5lIHRoZSBvcmRlciBvZiB0ZXN0cyBiYXNlZCBvbiB0ZXN0IG5hbWUgaW5zdGVh
ZCBvZiB0ZXN0CitjYXNlIG5hbWUsIHRoZW4gd2Ugd291bGQgaGF2ZSBhIHByb2JsZW0gd2l0aCB0
aGUgZm9sbG93aW5nIHNpdHVhdGlvbjoKKworYGBgCitURVNUX0YoRm9vVGVzdCwgQWJjRGVhdGhU
ZXN0KSB7IC4uLiB9CitURVNUX0YoRm9vVGVzdCwgVXZ3KSB7IC4uLiB9CisKK1RFU1RfRihCYXJU
ZXN0LCBEZWZEZWF0aFRlc3QpIHsgLi4uIH0KK1RFU1RfRihCYXJUZXN0LCBYeXopIHsgLi4uIH0K
K2BgYAorCitTaW5jZSBgRm9vVGVzdC5BYmNEZWF0aFRlc3RgIG5lZWRzIHRvIHJ1biBiZWZvcmUg
YEJhclRlc3QuWHl6YCwgYW5kIHdlIGRvbid0CitpbnRlcmxlYXZlIHRlc3RzIGZyb20gZGlmZmVy
ZW50IHRlc3QgY2FzZXMsIHdlIG5lZWQgdG8gcnVuIGFsbCB0ZXN0cyBpbiB0aGUKK2BGb29UZXN0
YCBjYXNlIGJlZm9yZSBydW5uaW5nIGFueSB0ZXN0IGluIHRoZSBgQmFyVGVzdGAgY2FzZS4gVGhp
cyBjb250cmFkaWN0cword2l0aCB0aGUgcmVxdWlyZW1lbnQgdG8gcnVuIGBCYXJUZXN0LkRlZkRl
YXRoVGVzdGAgYmVmb3JlIGBGb29UZXN0LlV2d2AuCisKKyMjIEJ1dCBJIGRvbid0IGxpa2UgY2Fs
bGluZyBteSBlbnRpcmUgdGVzdCBjYXNlIEZPT0RlYXRoVGVzdCB3aGVuIGl0IGNvbnRhaW5zIGJv
dGggZGVhdGggdGVzdHMgYW5kIG5vbi1kZWF0aCB0ZXN0cy4gV2hhdCBkbyBJIGRvPyAjIworCitZ
b3UgZG9uJ3QgaGF2ZSB0bywgYnV0IGlmIHlvdSBsaWtlLCB5b3UgbWF5IHNwbGl0IHVwIHRoZSB0
ZXN0IGNhc2UgaW50bworYEZvb1Rlc3RgIGFuZCBgRm9vRGVhdGhUZXN0YCwgd2hlcmUgdGhlIG5h
bWVzIG1ha2UgaXQgY2xlYXIgdGhhdCB0aGV5IGFyZQorcmVsYXRlZDoKKworYGBgCitjbGFzcyBG
b29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7IC4uLiB9OworCitURVNUX0YoRm9vVGVz
dCwgQWJjKSB7IC4uLiB9CitURVNUX0YoRm9vVGVzdCwgRGVmKSB7IC4uLiB9CisKK3R5cGVkZWYg
Rm9vVGVzdCBGb29EZWF0aFRlc3Q7CisKK1RFU1RfRihGb29EZWF0aFRlc3QsIFV2dykgeyAuLi4g
RVhQRUNUX0RFQVRIKC4uLikgLi4uIH0KK1RFU1RfRihGb29EZWF0aFRlc3QsIFh5eikgeyAuLi4g
QVNTRVJUX0RFQVRIKC4uLikgLi4uIH0KK2BgYAorCisjIyBUaGUgY29tcGlsZXIgY29tcGxhaW5z
IGFib3V0ICJubyBtYXRjaCBmb3IgJ29wZXJhdG9yPDwnIiB3aGVuIEkgdXNlIGFuIGFzc2VydGlv
bi4gV2hhdCBnaXZlcz8gIyMKKworSWYgeW91IHVzZSBhIHVzZXItZGVmaW5lZCB0eXBlIGBGb29U
eXBlYCBpbiBhbiBhc3NlcnRpb24sIHlvdSBtdXN0IG1ha2Ugc3VyZQordGhlcmUgaXMgYW4gYHN0
ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mLCBjb25zdCBGb29UeXBlJilgIGZ1
bmN0aW9uCitkZWZpbmVkIHN1Y2ggdGhhdCB3ZSBjYW4gcHJpbnQgYSB2YWx1ZSBvZiBgRm9vVHlw
ZWAuCisKK0luIGFkZGl0aW9uLCBpZiBgRm9vVHlwZWAgaXMgZGVjbGFyZWQgaW4gYSBuYW1lIHNw
YWNlLCB0aGUgYDw8YCBvcGVyYXRvciBhbHNvCituZWVkcyB0byBiZSBkZWZpbmVkIGluIHRoZSBf
c2FtZV8gbmFtZSBzcGFjZS4KKworIyMgSG93IGRvIEkgc3VwcHJlc3MgdGhlIG1lbW9yeSBsZWFr
IG1lc3NhZ2VzIG9uIFdpbmRvd3M/ICMjCisKK1NpbmNlIHRoZSBzdGF0aWNhbGx5IGluaXRpYWxp
emVkIEdvb2dsZSBUZXN0IHNpbmdsZXRvbiByZXF1aXJlcyBhbGxvY2F0aW9ucyBvbgordGhlIGhl
YXAsIHRoZSBWaXN1YWwgQysrIG1lbW9yeSBsZWFrIGRldGVjdG9yIHdpbGwgcmVwb3J0IG1lbW9y
eSBsZWFrcyBhdCB0aGUKK2VuZCBvZiB0aGUgcHJvZ3JhbSBydW4uIFRoZSBlYXNpZXN0IHdheSB0
byBhdm9pZCB0aGlzIGlzIHRvIHVzZSB0aGUKK2BfQ3J0TWVtQ2hlY2twb2ludGAgYW5kIGBfQ3J0
TWVtRHVtcEFsbE9iamVjdHNTaW5jZWAgY2FsbHMgdG8gbm90IHJlcG9ydCBhbnkKK3N0YXRpY2Fs
bHkgaW5pdGlhbGl6ZWQgaGVhcCBvYmplY3RzLiBTZWUgTVNETiBmb3IgbW9yZSBkZXRhaWxzIGFu
ZCBhZGRpdGlvbmFsCitoZWFwIGNoZWNrL2RlYnVnIHJvdXRpbmVzLgorCisjIyBJIGFtIGJ1aWxk
aW5nIG15IHByb2plY3Qgd2l0aCBHb29nbGUgVGVzdCBpbiBWaXN1YWwgU3R1ZGlvIGFuZCBhbGwg
SSdtIGdldHRpbmcgaXMgYSBidW5jaCBvZiBsaW5rZXIgZXJyb3JzIChvciB3YXJuaW5ncykuIEhl
bHAhICMjCisKK1lvdSBtYXkgZ2V0IGEgbnVtYmVyIG9mIHRoZSBmb2xsb3dpbmcgbGlua2VyIGVy
cm9yIG9yIHdhcm5pbmdzIGlmIHlvdQorYXR0ZW1wdCB0byBsaW5rIHlvdXIgdGVzdCBwcm9qZWN0
IHdpdGggdGhlIEdvb2dsZSBUZXN0IGxpYnJhcnkgd2hlbgoreW91ciBwcm9qZWN0IGFuZCB0aGUg
YXJlIG5vdCBidWlsdCB1c2luZyB0aGUgc2FtZSBjb21waWxlciBzZXR0aW5ncy4KKworICAqIExO
SzIwMDU6IHN5bWJvbCBhbHJlYWR5IGRlZmluZWQgaW4gb2JqZWN0CisgICogTE5LNDIxNzogbG9j
YWxseSBkZWZpbmVkIHN5bWJvbCAnc3ltYm9sJyBpbXBvcnRlZCBpbiBmdW5jdGlvbiAnZnVuY3Rp
b24nCisgICogTE5LNDA0OTogbG9jYWxseSBkZWZpbmVkIHN5bWJvbCAnc3ltYm9sJyBpbXBvcnRl
ZAorCitUaGUgR29vZ2xlIFRlc3QgcHJvamVjdCAoZ3Rlc3QudmNwcm9qKSBoYXMgdGhlIFJ1bnRp
bWUgTGlicmFyeSBvcHRpb24KK3NldCB0byAvTVQgKHVzZSBtdWx0aS10aHJlYWRlZCBzdGF0aWMg
bGlicmFyaWVzLCAvTVRkIGZvciBkZWJ1ZykuIElmCit5b3VyIHByb2plY3QgdXNlcyBzb21ldGhp
bmcgZWxzZSwgZm9yIGV4YW1wbGUgL01EICh1c2UgbXVsdGktdGhyZWFkZWQKK0RMTHMsIC9NRGQg
Zm9yIGRlYnVnKSwgeW91IG5lZWQgdG8gY2hhbmdlIHRoZSBzZXR0aW5nIGluIHRoZSBHb29nbGUK
K1Rlc3QgcHJvamVjdCB0byBtYXRjaCB5b3VyIHByb2plY3Qncy4KKworVG8gdXBkYXRlIHRoaXMg
c2V0dGluZyBvcGVuIHRoZSBwcm9qZWN0IHByb3BlcnRpZXMgaW4gdGhlIFZpc3VhbAorU3R1ZGlv
IElERSB0aGVuIHNlbGVjdCB0aGUgYnJhbmNoIENvbmZpZ3VyYXRpb24gUHJvcGVydGllcyB8IEMv
QysrIHwKK0NvZGUgR2VuZXJhdGlvbiBhbmQgY2hhbmdlIHRoZSBvcHRpb24gIlJ1bnRpbWUgTGli
cmFyeSIuICBZb3UgbWF5IGFsc28gdHJ5Cit1c2luZyBndGVzdC1tZC52Y3Byb2ogaW5zdGVhZCBv
ZiBndGVzdC52Y3Byb2ouCisKKyMjIEkgcHV0IG15IHRlc3RzIGluIGEgbGlicmFyeSBhbmQgR29v
Z2xlIFRlc3QgZG9lc24ndCBydW4gdGhlbS4gV2hhdCdzIGhhcHBlbmluZz8gIyMKK0hhdmUgeW91
IHJlYWQgYQorW3dhcm5pbmddKFYxXzZfUHJpbWVyLm1kI2ltcG9ydGFudC1ub3RlLWZvci12aXN1
YWwtYy11c2Vycykgb24KK3RoZSBHb29nbGUgVGVzdCBQcmltZXIgcGFnZT8KKworIyMgSSB3YW50
IHRvIHVzZSBHb29nbGUgVGVzdCB3aXRoIFZpc3VhbCBTdHVkaW8gYnV0IGRvbid0IGtub3cgd2hl
cmUgdG8gc3RhcnQuICMjCitNYW55IHBlb3BsZSBhcmUgaW4geW91ciBwb3NpdGlvbiBhbmQgb25l
IG9mIHRoZSBwb3N0ZWQgaGlzIHNvbHV0aW9uIHRvCitvdXIgbWFpbGluZyBsaXN0LiBIZXJlIGlz
IGhpcyBsaW5rOgoraHR0cDovL2hhc3NhbmphbWlsYWhtYWQuYmxvZ3Nwb3QuY29tLzIwMDkvMDcv
Z3Rlc3Qtc3RhcnRlcnMtaGVscC5odG1sLgorCisjIyBJIGFtIHNlZWluZyBjb21waWxlIGVycm9y
cyBtZW50aW9uaW5nIHN0ZDo6dHlwZVxfdHJhaXRzIHdoZW4gSSB0cnkgdG8gdXNlIEdvb2dsZSBU
ZXN0IG9uIFNvbGFyaXMuICMjCitHb29nbGUgVGVzdCB1c2VzIHBhcnRzIG9mIHRoZSBzdGFuZGFy
ZCBDKysgbGlicmFyeSB0aGF0IFN1blN0dWRpbyBkb2VzIG5vdCBzdXBwb3J0LgorT3VyIHVzZXJz
IHJlcG9ydGVkIHN1Y2Nlc3MgdXNpbmcgYWx0ZXJuYXRpdmUgaW1wbGVtZW50YXRpb25zLiBUcnkg
cnVubmluZyB0aGUgYnVpbGQgYWZ0ZXIgcnVuaW5nIHRoaXMgY29tbWFkOgorCitgZXhwb3J0IEND
PWNjIENYWD1DQyBDWFhGTEFHUz0nLWxpYnJhcnk9c3RscG9ydDQnYAorCisjIyBIb3cgY2FuIG15
IGNvZGUgZGV0ZWN0IGlmIGl0IGlzIHJ1bm5pbmcgaW4gYSB0ZXN0PyAjIworCitJZiB5b3Ugd3Jp
dGUgY29kZSB0aGF0IHNuaWZmcyB3aGV0aGVyIGl0J3MgcnVubmluZyBpbiBhIHRlc3QgYW5kIGRv
ZXMKK2RpZmZlcmVudCB0aGluZ3MgYWNjb3JkaW5nbHksIHlvdSBhcmUgbGVha2luZyB0ZXN0LW9u
bHkgbG9naWMgaW50bworcHJvZHVjdGlvbiBjb2RlIGFuZCB0aGVyZSBpcyBubyBlYXN5IHdheSB0
byBlbnN1cmUgdGhhdCB0aGUgdGVzdC1vbmx5Citjb2RlIHBhdGhzIGFyZW4ndCBydW4gYnkgbWlz
dGFrZSBpbiBwcm9kdWN0aW9uLiAgU3VjaCBjbGV2ZXJuZXNzIGFsc28KK2xlYWRzIHRvCitbSGVp
c2VuYnVnc10oaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9VbnVzdWFsX3NvZnR3YXJlX2J1
ZyNIZWlzZW5idWcpLgorVGhlcmVmb3JlIHdlIHN0cm9uZ2x5IGFkdmlzZSBhZ2FpbnN0IHRoZSBw
cmFjdGljZSwgYW5kIEdvb2dsZSBUZXN0IGRvZXNuJ3QKK3Byb3ZpZGUgYSB3YXkgdG8gZG8gaXQu
CisKK0luIGdlbmVyYWwsIHRoZSByZWNvbW1lbmRlZCB3YXkgdG8gY2F1c2UgdGhlIGNvZGUgdG8g
YmVoYXZlCitkaWZmZXJlbnRseSB1bmRlciB0ZXN0IGlzIFtkZXBlbmRlbmN5IGluamVjdGlvbl0o
aHR0cDovL2phbWVzc2hvcmUuY29tL0Jsb2cvRGVwZW5kZW5jeS1JbmplY3Rpb24tRGVteXN0aWZp
ZWQuaHRtbCkuCitZb3UgY2FuIGluamVjdCBkaWZmZXJlbnQgZnVuY3Rpb25hbGl0eSBmcm9tIHRo
ZSB0ZXN0IGFuZCBmcm9tIHRoZQorcHJvZHVjdGlvbiBjb2RlLiAgU2luY2UgeW91ciBwcm9kdWN0
aW9uIGNvZGUgZG9lc24ndCBsaW5rIGluIHRoZQorZm9yLXRlc3QgbG9naWMgYXQgYWxsLCB0aGVy
ZSBpcyBubyBkYW5nZXIgaW4gYWNjaWRlbnRhbGx5IHJ1bm5pbmcgaXQuCisKK0hvd2V2ZXIsIGlm
IHlvdSBfcmVhbGx5XywgX3JlYWxseV8sIF9yZWFsbHlfIGhhdmUgbm8gY2hvaWNlLCBhbmQgaWYK
K3lvdSBmb2xsb3cgdGhlIHJ1bGUgb2YgZW5kaW5nIHlvdXIgdGVzdCBwcm9ncmFtIG5hbWVzIHdp
dGggYF90ZXN0YCwKK3lvdSBjYW4gdXNlIHRoZSBfaG9ycmlibGVfIGhhY2sgb2Ygc25pZmZpbmcg
eW91ciBleGVjdXRhYmxlIG5hbWUKKyhgYXJndlswXWAgaW4gYG1haW4oKWApIHRvIGtub3cgd2hl
dGhlciB0aGUgY29kZSBpcyB1bmRlciB0ZXN0LgorCisjIyBHb29nbGUgVGVzdCBkZWZpbmVzIGEg
bWFjcm8gdGhhdCBjbGFzaGVzIHdpdGggb25lIGRlZmluZWQgYnkgYW5vdGhlciBsaWJyYXJ5LiBI
b3cgZG8gSSBkZWFsIHdpdGggdGhhdD8gIyMKKworSW4gQysrLCBtYWNyb3MgZG9uJ3Qgb2JleSBu
YW1lc3BhY2VzLiAgVGhlcmVmb3JlIHR3byBsaWJyYXJpZXMgdGhhdAorYm90aCBkZWZpbmUgYSBt
YWNybyBvZiB0aGUgc2FtZSBuYW1lIHdpbGwgY2xhc2ggaWYgeW91IGAjaW5jbHVkZWAgYm90aAor
ZGVmaW5pdGlvbnMuICBJbiBjYXNlIGEgR29vZ2xlIFRlc3QgbWFjcm8gY2xhc2hlcyB3aXRoIGFu
b3RoZXIKK2xpYnJhcnksIHlvdSBjYW4gZm9yY2UgR29vZ2xlIFRlc3QgdG8gcmVuYW1lIGl0cyBt
YWNybyB0byBhdm9pZCB0aGUKK2NvbmZsaWN0LgorCitTcGVjaWZpY2FsbHksIGlmIGJvdGggR29v
Z2xlIFRlc3QgYW5kIHNvbWUgb3RoZXIgY29kZSBkZWZpbmUgbWFjcm8KK2BGT09gLCB5b3UgY2Fu
IGFkZAorYGBgCisgIC1ER1RFU1RfRE9OVF9ERUZJTkVfRk9PPTEKK2BgYAordG8gdGhlIGNvbXBp
bGVyIGZsYWdzIHRvIHRlbGwgR29vZ2xlIFRlc3QgdG8gY2hhbmdlIHRoZSBtYWNybydzIG5hbWUK
K2Zyb20gYEZPT2AgdG8gYEdURVNUX0ZPT2AuIEZvciBleGFtcGxlLCB3aXRoIGAtREdURVNUX0RP
TlRfREVGSU5FX1RFU1Q9MWAsIHlvdSdsbCBuZWVkIHRvIHdyaXRlCitgYGAKKyAgR1RFU1RfVEVT
VChTb21lVGVzdCwgRG9lc1RoaXMpIHsgLi4uIH0KK2BgYAoraW5zdGVhZCBvZgorYGBgCisgIFRF
U1QoU29tZVRlc3QsIERvZXNUaGlzKSB7IC4uLiB9CitgYGAKK2luIG9yZGVyIHRvIGRlZmluZSBh
IHRlc3QuCisKK0N1cnJlbnRseSwgdGhlIGZvbGxvd2luZyBgVEVTVGAsIGBGQUlMYCwgYFNVQ0NF
RURgLCBhbmQgdGhlIGJhc2ljIGNvbXBhcmlzb24gYXNzZXJ0aW9uIG1hY3JvcyBjYW4gaGF2ZSBh
bHRlcm5hdGl2ZSBuYW1lcy4gWW91IGNhbiBzZWUgdGhlIGZ1bGwgbGlzdCBvZiBjb3ZlcmVkIG1h
Y3JvcyBbaGVyZV0oaHR0cDovL3d3dy5nb29nbGUuY29tL2NvZGVzZWFyY2g/cT1pZishR1RFU1Rf
RE9OVF9ERUZJTkVfXHclMkIrcGFja2FnZTpodHRwOi8vZ29vZ2xldGVzdFwuZ29vZ2xlY29kZVwu
Y29tK2ZpbGU6L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCkuIE1vcmUgaW5mb3JtYXRpb24gY2FuIGJl
IGZvdW5kIGluIHRoZSAiQXZvaWRpbmcgTWFjcm8gTmFtZSBDbGFzaGVzIiBzZWN0aW9uIG9mIHRo
ZSBSRUFETUUgZmlsZS4KKworIyMgTXkgcXVlc3Rpb24gaXMgbm90IGNvdmVyZWQgaW4geW91ciBG
QVEhICMjCisKK0lmIHlvdSBjYW5ub3QgZmluZCB0aGUgYW5zd2VyIHRvIHlvdXIgcXVlc3Rpb24g
aW4gdGhpcyBGQVEsIHRoZXJlIGFyZQorc29tZSBvdGhlciByZXNvdXJjZXMgeW91IGNhbiB1c2U6
CisKKyAgMS4gcmVhZCBvdGhlciBbd2lraSBwYWdlc10oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9w
L2dvb2dsZXRlc3Qvdy9saXN0KSwKKyAgMS4gc2VhcmNoIHRoZSBtYWlsaW5nIGxpc3QgW2FyY2hp
dmVdKGh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9ncm91cC9nb29nbGV0ZXN0ZnJhbWV3b3JrL3Rv
cGljcyksCisgIDEuIGFzayBpdCBvbiBbZ29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMu
Y29tXShtYWlsdG86Z29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tKSBhbmQgc29t
ZW9uZSB3aWxsIGFuc3dlciBpdCAodG8gcHJldmVudCBzcGFtLCB3ZSByZXF1aXJlIHlvdSB0byBq
b2luIHRoZSBbZGlzY3Vzc2lvbiBncm91cF0oaHR0cDovL2dyb3Vwcy5nb29nbGUuY29tL2dyb3Vw
L2dvb2dsZXRlc3RmcmFtZXdvcmspIGJlZm9yZSB5b3UgY2FuIHBvc3QuKS4KKworUGxlYXNlIG5v
dGUgdGhhdCBjcmVhdGluZyBhbiBpc3N1ZSBpbiB0aGUKK1tpc3N1ZSB0cmFja2VyXShodHRwOi8v
Y29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC9pc3N1ZXMvbGlzdCkgaXMgX25vdF8KK2EgZ29v
ZCB3YXkgdG8gZ2V0IHlvdXIgYW5zd2VyLCBhcyBpdCBpcyBtb25pdG9yZWQgaW5mcmVxdWVudGx5
IGJ5IGEKK3Zlcnkgc21hbGwgbnVtYmVyIG9mIHBlb3BsZS4KKworV2hlbiBhc2tpbmcgYSBxdWVz
dGlvbiwgaXQncyBoZWxwZnVsIHRvIHByb3ZpZGUgYXMgbXVjaCBvZiB0aGUKK2ZvbGxvd2luZyBp
bmZvcm1hdGlvbiBhcyBwb3NzaWJsZSAocGVvcGxlIGNhbm5vdCBoZWxwIHlvdSBpZiB0aGVyZSdz
Citub3QgZW5vdWdoIGluZm9ybWF0aW9uIGluIHlvdXIgcXVlc3Rpb24pOgorCisgICogdGhlIHZl
cnNpb24gKG9yIHRoZSByZXZpc2lvbiBudW1iZXIgaWYgeW91IGNoZWNrIG91dCBmcm9tIFNWTiBk
aXJlY3RseSkgb2YgR29vZ2xlIFRlc3QgeW91IHVzZSAoR29vZ2xlIFRlc3QgaXMgdW5kZXIgYWN0
aXZlIGRldmVsb3BtZW50LCBzbyBpdCdzIHBvc3NpYmxlIHRoYXQgeW91ciBwcm9ibGVtIGhhcyBi
ZWVuIHNvbHZlZCBpbiBhIGxhdGVyIHZlcnNpb24pLAorICAqIHlvdXIgb3BlcmF0aW5nIHN5c3Rl
bSwKKyAgKiB0aGUgbmFtZSBhbmQgdmVyc2lvbiBvZiB5b3VyIGNvbXBpbGVyLAorICAqIHRoZSBj
b21wbGV0ZSBjb21tYW5kIGxpbmUgZmxhZ3MgeW91IGdpdmUgdG8geW91ciBjb21waWxlciwKKyAg
KiB0aGUgY29tcGxldGUgY29tcGlsZXIgZXJyb3IgbWVzc2FnZXMgKGlmIHRoZSBxdWVzdGlvbiBp
cyBhYm91dCBjb21waWxhdGlvbiksCisgICogdGhlIF9hY3R1YWxfIGNvZGUgKGlkZWFsbHksIGEg
bWluaW1hbCBidXQgY29tcGxldGUgcHJvZ3JhbSkgdGhhdCBoYXMgdGhlIHByb2JsZW0geW91IGVu
Y291bnRlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfNl9QcmltZXIubWQgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xldGVzdC9kb2NzL1YxXzZfUHJpbWVyLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkODQwZWY0NWI5Y2E1
N2YxNWIwOTc0NGYzYjgwYWExN2YwOTY0NmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVz
dC9kb2NzL1YxXzZfUHJpbWVyLm1kCkBAIC0wLDAgKzEsNTAxIEBACisKKworIyBJbnRyb2R1Y3Rp
b246IFdoeSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrPyAjCisKK19Hb29nbGUgQysrIFRl
c3RpbmcgRnJhbWV3b3JrXyBoZWxwcyB5b3Ugd3JpdGUgYmV0dGVyIEMrKyB0ZXN0cy4KKworTm8g
bWF0dGVyIHdoZXRoZXIgeW91IHdvcmsgb24gTGludXgsIFdpbmRvd3MsIG9yIGEgTWFjLCBpZiB5
b3Ugd3JpdGUgQysrIGNvZGUsCitHb29nbGUgVGVzdCBjYW4gaGVscCB5b3UuCisKK1NvIHdoYXQg
bWFrZXMgYSBnb29kIHRlc3QsIGFuZCBob3cgZG9lcyBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3
b3JrIGZpdCBpbj8gV2UgYmVsaWV2ZToKKyAgMS4gVGVzdHMgc2hvdWxkIGJlIF9pbmRlcGVuZGVu
dF8gYW5kIF9yZXBlYXRhYmxlXy4gSXQncyBhIHBhaW4gdG8gZGVidWcgYSB0ZXN0IHRoYXQgc3Vj
Y2VlZHMgb3IgZmFpbHMgYXMgYSByZXN1bHQgb2Ygb3RoZXIgdGVzdHMuICBHb29nbGUgQysrIFRl
c3RpbmcgRnJhbWV3b3JrIGlzb2xhdGVzIHRoZSB0ZXN0cyBieSBydW5uaW5nIGVhY2ggb2YgdGhl
bSBvbiBhIGRpZmZlcmVudCBvYmplY3QuIFdoZW4gYSB0ZXN0IGZhaWxzLCBHb29nbGUgQysrIFRl
c3RpbmcgRnJhbWV3b3JrIGFsbG93cyB5b3UgdG8gcnVuIGl0IGluIGlzb2xhdGlvbiBmb3IgcXVp
Y2sgZGVidWdnaW5nLgorICAxLiBUZXN0cyBzaG91bGQgYmUgd2VsbCBfb3JnYW5pemVkXyBhbmQg
cmVmbGVjdCB0aGUgc3RydWN0dXJlIG9mIHRoZSB0ZXN0ZWQgY29kZS4gIEdvb2dsZSBDKysgVGVz
dGluZyBGcmFtZXdvcmsgZ3JvdXBzIHJlbGF0ZWQgdGVzdHMgaW50byB0ZXN0IGNhc2VzIHRoYXQg
Y2FuIHNoYXJlIGRhdGEgYW5kIHN1YnJvdXRpbmVzLiBUaGlzIGNvbW1vbiBwYXR0ZXJuIGlzIGVh
c3kgdG8gcmVjb2duaXplIGFuZCBtYWtlcyB0ZXN0cyBlYXN5IHRvIG1haW50YWluLiBTdWNoIGNv
bnNpc3RlbmN5IGlzIGVzcGVjaWFsbHkgaGVscGZ1bCB3aGVuIHBlb3BsZSBzd2l0Y2ggcHJvamVj
dHMgYW5kIHN0YXJ0IHRvIHdvcmsgb24gYSBuZXcgY29kZSBiYXNlLgorICAxLiBUZXN0cyBzaG91
bGQgYmUgX3BvcnRhYmxlXyBhbmQgX3JldXNhYmxlXy4gVGhlIG9wZW4tc291cmNlIGNvbW11bml0
eSBoYXMgYSBsb3Qgb2YgY29kZSB0aGF0IGlzIHBsYXRmb3JtLW5ldXRyYWwsIGl0cyB0ZXN0cyBz
aG91bGQgYWxzbyBiZSBwbGF0Zm9ybS1uZXV0cmFsLiAgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1l
d29yayB3b3JrcyBvbiBkaWZmZXJlbnQgT1Nlcywgd2l0aCBkaWZmZXJlbnQgY29tcGlsZXJzIChn
Y2MsIE1TVkMsIGFuZCBvdGhlcnMpLCB3aXRoIG9yIHdpdGhvdXQgZXhjZXB0aW9ucywgc28gR29v
Z2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayB0ZXN0cyBjYW4gZWFzaWx5IHdvcmsgd2l0aCBhIHZh
cmlldHkgb2YgY29uZmlndXJhdGlvbnMuICAoTm90ZSB0aGF0IHRoZSBjdXJyZW50IHJlbGVhc2Ug
b25seSBjb250YWlucyBidWlsZCBzY3JpcHRzIGZvciBMaW51eCAtIHdlIGFyZSBhY3RpdmVseSB3
b3JraW5nIG9uIHNjcmlwdHMgZm9yIG90aGVyIHBsYXRmb3Jtcy4pCisgIDEuIFdoZW4gdGVzdHMg
ZmFpbCwgdGhleSBzaG91bGQgcHJvdmlkZSBhcyBtdWNoIF9pbmZvcm1hdGlvbl8gYWJvdXQgdGhl
IHByb2JsZW0gYXMgcG9zc2libGUuIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgZG9lc24n
dCBzdG9wIGF0IHRoZSBmaXJzdCB0ZXN0IGZhaWx1cmUuIEluc3RlYWQsIGl0IG9ubHkgc3RvcHMg
dGhlIGN1cnJlbnQgdGVzdCBhbmQgY29udGludWVzIHdpdGggdGhlIG5leHQuIFlvdSBjYW4gYWxz
byBzZXQgdXAgdGVzdHMgdGhhdCByZXBvcnQgbm9uLWZhdGFsIGZhaWx1cmVzIGFmdGVyIHdoaWNo
IHRoZSBjdXJyZW50IHRlc3QgY29udGludWVzLiBUaHVzLCB5b3UgY2FuIGRldGVjdCBhbmQgZml4
IG11bHRpcGxlIGJ1Z3MgaW4gYSBzaW5nbGUgcnVuLWVkaXQtY29tcGlsZSBjeWNsZS4KKyAgMS4g
VGhlIHRlc3RpbmcgZnJhbWV3b3JrIHNob3VsZCBsaWJlcmF0ZSB0ZXN0IHdyaXRlcnMgZnJvbSBo
b3VzZWtlZXBpbmcgY2hvcmVzIGFuZCBsZXQgdGhlbSBmb2N1cyBvbiB0aGUgdGVzdCBfY29udGVu
dF8uICBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIGF1dG9tYXRpY2FsbHkga2VlcHMgdHJh
Y2sgb2YgYWxsIHRlc3RzIGRlZmluZWQsIGFuZCBkb2Vzbid0IHJlcXVpcmUgdGhlIHVzZXIgdG8g
ZW51bWVyYXRlIHRoZW0gaW4gb3JkZXIgdG8gcnVuIHRoZW0uCisgIDEuIFRlc3RzIHNob3VsZCBi
ZSBfZmFzdF8uIFdpdGggR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yaywgeW91IGNhbiByZXVz
ZSBzaGFyZWQgcmVzb3VyY2VzIGFjcm9zcyB0ZXN0cyBhbmQgcGF5IGZvciB0aGUgc2V0LXVwL3Rl
YXItZG93biBvbmx5IG9uY2UsIHdpdGhvdXQgbWFraW5nIHRlc3RzIGRlcGVuZCBvbiBlYWNoIG90
aGVyLgorCitTaW5jZSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIGlzIGJhc2VkIG9uIHRo
ZSBwb3B1bGFyIHhVbml0CithcmNoaXRlY3R1cmUsIHlvdSdsbCBmZWVsIHJpZ2h0IGF0IGhvbWUg
aWYgeW91J3ZlIHVzZWQgSlVuaXQgb3IgUHlVbml0IGJlZm9yZS4KK0lmIG5vdCwgaXQgd2lsbCB0
YWtlIHlvdSBhYm91dCAxMCBtaW51dGVzIHRvIGxlYXJuIHRoZSBiYXNpY3MgYW5kIGdldCBzdGFy
dGVkLgorU28gbGV0J3MgZ28hCisKK19Ob3RlOl8gV2Ugc29tZXRpbWVzIHJlZmVyIHRvIEdvb2ds
ZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgaW5mb3JtYWxseQorYXMgX0dvb2dsZSBUZXN0Xy4KKwor
IyBTZXR0aW5nIHVwIGEgTmV3IFRlc3QgUHJvamVjdCAjCisKK1RvIHdyaXRlIGEgdGVzdCBwcm9n
cmFtIHVzaW5nIEdvb2dsZSBUZXN0LCB5b3UgbmVlZCB0byBjb21waWxlIEdvb2dsZQorVGVzdCBp
bnRvIGEgbGlicmFyeSBhbmQgbGluayB5b3VyIHRlc3Qgd2l0aCBpdC4gIFdlIHByb3ZpZGUgYnVp
bGQKK2ZpbGVzIGZvciBzb21lIHBvcHVsYXIgYnVpbGQgc3lzdGVtczogYG1zdmMvYCBmb3IgVmlz
dWFsIFN0dWRpbywKK2B4Y29kZS9gIGZvciBNYWMgWGNvZGUsIGBtYWtlL2AgZm9yIEdOVSBtYWtl
LCBgY29kZWdlYXIvYCBmb3IgQm9ybGFuZAorQysrIEJ1aWxkZXIsIGFuZCB0aGUgYXV0b3Rvb2xz
IHNjcmlwdCAoZGVwcmVjYXRlZCkgYW5kCitgQ01ha2VMaXN0cy50eHRgIGZvciBDTWFrZSAocmVj
b21tZW5kZWQpIGluIHRoZSBHb29nbGUgVGVzdCByb290CitkaXJlY3RvcnkuICBJZiB5b3VyIGJ1
aWxkIHN5c3RlbSBpcyBub3Qgb24gdGhpcyBsaXN0LCB5b3UgY2FuIHRha2UgYQorbG9vayBhdCBg
bWFrZS9NYWtlZmlsZWAgdG8gbGVhcm4gaG93IEdvb2dsZSBUZXN0IHNob3VsZCBiZSBjb21waWxl
ZAorKGJhc2ljYWxseSB5b3Ugd2FudCB0byBjb21waWxlIGBzcmMvZ3Rlc3QtYWxsLmNjYCB3aXRo
IGBHVEVTVF9ST09UYAorYW5kIGBHVEVTVF9ST09UL2luY2x1ZGVgIGluIHRoZSBoZWFkZXIgc2Vh
cmNoIHBhdGgsIHdoZXJlIGBHVEVTVF9ST09UYAoraXMgdGhlIEdvb2dsZSBUZXN0IHJvb3QgZGly
ZWN0b3J5KS4KKworT25jZSB5b3UgYXJlIGFibGUgdG8gY29tcGlsZSB0aGUgR29vZ2xlIFRlc3Qg
bGlicmFyeSwgeW91IHNob3VsZAorY3JlYXRlIGEgcHJvamVjdCBvciBidWlsZCB0YXJnZXQgZm9y
IHlvdXIgdGVzdCBwcm9ncmFtLiAgTWFrZSBzdXJlIHlvdQoraGF2ZSBgR1RFU1RfUk9PVC9pbmNs
dWRlYCBpbiB0aGUgaGVhZGVyIHNlYXJjaCBwYXRoIHNvIHRoYXQgdGhlCitjb21waWxlciBjYW4g
ZmluZCBgImd0ZXN0L2d0ZXN0LmgiYCB3aGVuIGNvbXBpbGluZyB5b3VyIHRlc3QuICBTZXQgdXAK
K3lvdXIgdGVzdCBwcm9qZWN0IHRvIGxpbmsgd2l0aCB0aGUgR29vZ2xlIFRlc3QgbGlicmFyeSAo
Zm9yIGV4YW1wbGUsCitpbiBWaXN1YWwgU3R1ZGlvLCB0aGlzIGlzIGRvbmUgYnkgYWRkaW5nIGEg
ZGVwZW5kZW5jeSBvbgorYGd0ZXN0LnZjcHJvamApLgorCitJZiB5b3Ugc3RpbGwgaGF2ZSBxdWVz
dGlvbnMsIHRha2UgYSBsb29rIGF0IGhvdyBHb29nbGUgVGVzdCdzIG93bgordGVzdHMgYXJlIGJ1
aWx0IGFuZCB1c2UgdGhlbSBhcyBleGFtcGxlcy4KKworIyBCYXNpYyBDb25jZXB0cyAjCisKK1do
ZW4gdXNpbmcgR29vZ2xlIFRlc3QsIHlvdSBzdGFydCBieSB3cml0aW5nIF9hc3NlcnRpb25zXywg
d2hpY2ggYXJlIHN0YXRlbWVudHMKK3RoYXQgY2hlY2sgd2hldGhlciBhIGNvbmRpdGlvbiBpcyB0
cnVlLiBBbiBhc3NlcnRpb24ncyByZXN1bHQgY2FuIGJlIF9zdWNjZXNzXywKK19ub25mYXRhbCBm
YWlsdXJlXywgb3IgX2ZhdGFsIGZhaWx1cmVfLiBJZiBhIGZhdGFsIGZhaWx1cmUgb2NjdXJzLCBp
dCBhYm9ydHMKK3RoZSBjdXJyZW50IGZ1bmN0aW9uOyBvdGhlcndpc2UgdGhlIHByb2dyYW0gY29u
dGludWVzIG5vcm1hbGx5LgorCitfVGVzdHNfIHVzZSBhc3NlcnRpb25zIHRvIHZlcmlmeSB0aGUg
dGVzdGVkIGNvZGUncyBiZWhhdmlvci4gSWYgYSB0ZXN0IGNyYXNoZXMKK29yIGhhcyBhIGZhaWxl
ZCBhc3NlcnRpb24sIHRoZW4gaXQgX2ZhaWxzXzsgb3RoZXJ3aXNlIGl0IF9zdWNjZWVkc18uCisK
K0EgX3Rlc3QgY2FzZV8gY29udGFpbnMgb25lIG9yIG1hbnkgdGVzdHMuIFlvdSBzaG91bGQgZ3Jv
dXAgeW91ciB0ZXN0cyBpbnRvIHRlc3QKK2Nhc2VzIHRoYXQgcmVmbGVjdCB0aGUgc3RydWN0dXJl
IG9mIHRoZSB0ZXN0ZWQgY29kZS4gV2hlbiBtdWx0aXBsZSB0ZXN0cyBpbiBhCit0ZXN0IGNhc2Ug
bmVlZCB0byBzaGFyZSBjb21tb24gb2JqZWN0cyBhbmQgc3Vicm91dGluZXMsIHlvdSBjYW4gcHV0
IHRoZW0gaW50byBhCitfdGVzdCBmaXh0dXJlXyBjbGFzcy4KKworQSBfdGVzdCBwcm9ncmFtXyBj
YW4gY29udGFpbiBtdWx0aXBsZSB0ZXN0IGNhc2VzLgorCitXZSdsbCBub3cgZXhwbGFpbiBob3cg
dG8gd3JpdGUgYSB0ZXN0IHByb2dyYW0sIHN0YXJ0aW5nIGF0IHRoZSBpbmRpdmlkdWFsCithc3Nl
cnRpb24gbGV2ZWwgYW5kIGJ1aWxkaW5nIHVwIHRvIHRlc3RzIGFuZCB0ZXN0IGNhc2VzLgorCisj
IEFzc2VydGlvbnMgIworCitHb29nbGUgVGVzdCBhc3NlcnRpb25zIGFyZSBtYWNyb3MgdGhhdCBy
ZXNlbWJsZSBmdW5jdGlvbiBjYWxscy4gWW91IHRlc3QgYQorY2xhc3Mgb3IgZnVuY3Rpb24gYnkg
bWFraW5nIGFzc2VydGlvbnMgYWJvdXQgaXRzIGJlaGF2aW9yLiBXaGVuIGFuIGFzc2VydGlvbgor
ZmFpbHMsIEdvb2dsZSBUZXN0IHByaW50cyB0aGUgYXNzZXJ0aW9uJ3Mgc291cmNlIGZpbGUgYW5k
IGxpbmUgbnVtYmVyIGxvY2F0aW9uLAorYWxvbmcgd2l0aCBhIGZhaWx1cmUgbWVzc2FnZS4gWW91
IG1heSBhbHNvIHN1cHBseSBhIGN1c3RvbSBmYWlsdXJlIG1lc3NhZ2UKK3doaWNoIHdpbGwgYmUg
YXBwZW5kZWQgdG8gR29vZ2xlIFRlc3QncyBtZXNzYWdlLgorCitUaGUgYXNzZXJ0aW9ucyBjb21l
IGluIHBhaXJzIHRoYXQgdGVzdCB0aGUgc2FtZSB0aGluZyBidXQgaGF2ZSBkaWZmZXJlbnQKK2Vm
ZmVjdHMgb24gdGhlIGN1cnJlbnQgZnVuY3Rpb24uIGBBU1NFUlRfKmAgdmVyc2lvbnMgZ2VuZXJh
dGUgZmF0YWwgZmFpbHVyZXMKK3doZW4gdGhleSBmYWlsLCBhbmQgKiphYm9ydCB0aGUgY3VycmVu
dCBmdW5jdGlvbioqLiBgRVhQRUNUXypgIHZlcnNpb25zIGdlbmVyYXRlCitub25mYXRhbCBmYWls
dXJlcywgd2hpY2ggZG9uJ3QgYWJvcnQgdGhlIGN1cnJlbnQgZnVuY3Rpb24uIFVzdWFsbHkgYEVY
UEVDVF8qYAorYXJlIHByZWZlcnJlZCwgYXMgdGhleSBhbGxvdyBtb3JlIHRoYW4gb25lIGZhaWx1
cmVzIHRvIGJlIHJlcG9ydGVkIGluIGEgdGVzdC4KK0hvd2V2ZXIsIHlvdSBzaG91bGQgdXNlIGBB
U1NFUlRfKmAgaWYgaXQgZG9lc24ndCBtYWtlIHNlbnNlIHRvIGNvbnRpbnVlIHdoZW4KK3RoZSBh
c3NlcnRpb24gaW4gcXVlc3Rpb24gZmFpbHMuCisKK1NpbmNlIGEgZmFpbGVkIGBBU1NFUlRfKmAg
cmV0dXJucyBmcm9tIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGltbWVkaWF0ZWx5LAorcG9zc2libHkg
c2tpcHBpbmcgY2xlYW4tdXAgY29kZSB0aGF0IGNvbWVzIGFmdGVyIGl0LCBpdCBtYXkgY2F1c2Ug
YSBzcGFjZSBsZWFrLgorRGVwZW5kaW5nIG9uIHRoZSBuYXR1cmUgb2YgdGhlIGxlYWssIGl0IG1h
eSBvciBtYXkgbm90IGJlIHdvcnRoIGZpeGluZyAtIHNvCitrZWVwIHRoaXMgaW4gbWluZCBpZiB5
b3UgZ2V0IGEgaGVhcCBjaGVja2VyIGVycm9yIGluIGFkZGl0aW9uIHRvIGFzc2VydGlvbgorZXJy
b3JzLgorCitUbyBwcm92aWRlIGEgY3VzdG9tIGZhaWx1cmUgbWVzc2FnZSwgc2ltcGx5IHN0cmVh
bSBpdCBpbnRvIHRoZSBtYWNybyB1c2luZyB0aGUKK2A8PGAgb3BlcmF0b3IsIG9yIGEgc2VxdWVu
Y2Ugb2Ygc3VjaCBvcGVyYXRvcnMuIEFuIGV4YW1wbGU6CitgYGAKK0FTU0VSVF9FUSh4LnNpemUo
KSwgeS5zaXplKCkpIDw8ICJWZWN0b3JzIHggYW5kIHkgYXJlIG9mIHVuZXF1YWwgbGVuZ3RoIjsK
KworZm9yIChpbnQgaSA9IDA7IGkgPCB4LnNpemUoKTsgKytpKSB7CisgIEVYUEVDVF9FUSh4W2ld
LCB5W2ldKSA8PCAiVmVjdG9ycyB4IGFuZCB5IGRpZmZlciBhdCBpbmRleCAiIDw8IGk7Cit9Citg
YGAKKworQW55dGhpbmcgdGhhdCBjYW4gYmUgc3RyZWFtZWQgdG8gYW4gYG9zdHJlYW1gIGNhbiBi
ZSBzdHJlYW1lZCB0byBhbiBhc3NlcnRpb24KK21hY3JvLS1pbiBwYXJ0aWN1bGFyLCBDIHN0cmlu
Z3MgYW5kIGBzdHJpbmdgIG9iamVjdHMuIElmIGEgd2lkZSBzdHJpbmcKKyhgd2NoYXJfdCpgLCBg
VENIQVIqYCBpbiBgVU5JQ09ERWAgbW9kZSBvbiBXaW5kb3dzLCBvciBgc3RkOjp3c3RyaW5nYCkg
aXMKK3N0cmVhbWVkIHRvIGFuIGFzc2VydGlvbiwgaXQgd2lsbCBiZSB0cmFuc2xhdGVkIHRvIFVU
Ri04IHdoZW4gcHJpbnRlZC4KKworIyMgQmFzaWMgQXNzZXJ0aW9ucyAjIworCitUaGVzZSBhc3Nl
cnRpb25zIGRvIGJhc2ljIHRydWUvZmFsc2UgY29uZGl0aW9uIHRlc3RpbmcuCit8ICoqRmF0YWwg
YXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6
LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0t
LS0tfAorfCBgQVNTRVJUX1RSVUUoYF9jb25kaXRpb25fYClgOyAgfCBgRVhQRUNUX1RSVUUoYF9j
b25kaXRpb25fYClgOyAgIHwgX2NvbmRpdGlvbl8gaXMgdHJ1ZSB8Cit8IGBBU1NFUlRfRkFMU0Uo
YF9jb25kaXRpb25fYClgOyB8IGBFWFBFQ1RfRkFMU0UoYF9jb25kaXRpb25fYClgOyAgfCBfY29u
ZGl0aW9uXyBpcyBmYWxzZSB8CisKK1JlbWVtYmVyLCB3aGVuIHRoZXkgZmFpbCwgYEFTU0VSVF8q
YCB5aWVsZHMgYSBmYXRhbCBmYWlsdXJlIGFuZAorcmV0dXJucyBmcm9tIHRoZSBjdXJyZW50IGZ1
bmN0aW9uLCB3aGlsZSBgRVhQRUNUXypgIHlpZWxkcyBhIG5vbmZhdGFsCitmYWlsdXJlLCBhbGxv
d2luZyB0aGUgZnVuY3Rpb24gdG8gY29udGludWUgcnVubmluZy4gSW4gZWl0aGVyIGNhc2UsIGFu
Cithc3NlcnRpb24gZmFpbHVyZSBtZWFucyBpdHMgY29udGFpbmluZyB0ZXN0IGZhaWxzLgorCitf
QXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMgQmluYXJ5IENvbXBhcmlz
b24gIyMKKworVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBhc3NlcnRpb25zIHRoYXQgY29tcGFyZSB0
d28gdmFsdWVzLgorCit8ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFzc2VydGlv
bioqIHwgKipWZXJpZmllcyoqIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAorfGBBU1NFUlRfRVEoYF9leHBlY3RlZF9gLCBg
X2FjdHVhbF9gKTtgfGBFWFBFQ1RfRVEoYF9leHBlY3RlZF9gLCBgX2FjdHVhbF9gKTtgfCBfZXhw
ZWN0ZWRfIGA9PWAgX2FjdHVhbF8gfAorfGBBU1NFUlRfTkUoYF92YWwxX2AsIGBfdmFsMl9gKTtg
ICAgICAgfGBFWFBFQ1RfTkUoYF92YWwxX2AsIGBfdmFsMl9gKTtgICAgICAgfCBfdmFsMV8gYCE9
YCBfdmFsMl8gfAorfGBBU1NFUlRfTFQoYF92YWwxX2AsIGBfdmFsMl9gKTtgICAgICAgfGBFWFBF
Q1RfTFQoYF92YWwxX2AsIGBfdmFsMl9gKTtgICAgICAgfCBfdmFsMV8gYDxgIF92YWwyXyB8Cit8
YEFTU0VSVF9MRShgX3ZhbDFfYCwgYF92YWwyX2ApO2AgICAgICB8YEVYUEVDVF9MRShgX3ZhbDFf
YCwgYF92YWwyX2ApO2AgICAgICB8IF92YWwxXyBgPD1gIF92YWwyXyB8Cit8YEFTU0VSVF9HVChg
X3ZhbDFfYCwgYF92YWwyX2ApO2AgICAgICB8YEVYUEVDVF9HVChgX3ZhbDFfYCwgYF92YWwyX2Ap
O2AgICAgICB8IF92YWwxXyBgPmAgX3ZhbDJfIHwKK3xgQVNTRVJUX0dFKGBfdmFsMV9gLCBgX3Zh
bDJfYCk7YCAgICAgIHxgRVhQRUNUX0dFKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAgIHwgX3Zh
bDFfIGA+PWAgX3ZhbDJfIHwKKworSW4gdGhlIGV2ZW50IG9mIGEgZmFpbHVyZSwgR29vZ2xlIFRl
c3QgcHJpbnRzIGJvdGggX3ZhbDFfIGFuZCBfdmFsMl8KKy4gSW4gYEFTU0VSVF9FUSpgIGFuZCBg
RVhQRUNUX0VRKmAgKGFuZCBhbGwgb3RoZXIgZXF1YWxpdHkgYXNzZXJ0aW9ucword2UnbGwgaW50
cm9kdWNlIGxhdGVyKSwgeW91IHNob3VsZCBwdXQgdGhlIGV4cHJlc3Npb24geW91IHdhbnQgdG8g
dGVzdAoraW4gdGhlIHBvc2l0aW9uIG9mIF9hY3R1YWxfLCBhbmQgcHV0IGl0cyBleHBlY3RlZCB2
YWx1ZSBpbiBfZXhwZWN0ZWRfLAorYXMgR29vZ2xlIFRlc3QncyBmYWlsdXJlIG1lc3NhZ2VzIGFy
ZSBvcHRpbWl6ZWQgZm9yIHRoaXMgY29udmVudGlvbi4KKworVmFsdWUgYXJndW1lbnRzIG11c3Qg
YmUgY29tcGFyYWJsZSBieSB0aGUgYXNzZXJ0aW9uJ3MgY29tcGFyaXNvbgorb3BlcmF0b3Igb3Ig
eW91J2xsIGdldCBhIGNvbXBpbGVyIGVycm9yLiAgV2UgdXNlZCB0byByZXF1aXJlIHRoZQorYXJn
dW1lbnRzIHRvIHN1cHBvcnQgdGhlIGA8PGAgb3BlcmF0b3IgZm9yIHN0cmVhbWluZyB0byBhbiBg
b3N0cmVhbWAsCitidXQgaXQncyBubyBsb25nZXIgbmVjZXNzYXJ5IHNpbmNlIHYxLjYuMCAoaWYg
YDw8YCBpcyBzdXBwb3J0ZWQsIGl0Cit3aWxsIGJlIGNhbGxlZCB0byBwcmludCB0aGUgYXJndW1l
bnRzIHdoZW4gdGhlIGFzc2VydGlvbiBmYWlsczsKK290aGVyd2lzZSBHb29nbGUgVGVzdCB3aWxs
IGF0dGVtcHQgdG8gcHJpbnQgdGhlbSBpbiB0aGUgYmVzdCB3YXkgaXQKK2Nhbi4gRm9yIG1vcmUg
ZGV0YWlscyBhbmQgaG93IHRvIGN1c3RvbWl6ZSB0aGUgcHJpbnRpbmcgb2YgdGhlCithcmd1bWVu
dHMsIHNlZSB0aGlzIEdvb2dsZSBNb2NrIFtyZWNpcGVdKC4uLy4uL2dvb2dsZW1vY2svZG9jcy9D
b29rQm9vay5tZCN0ZWFjaGluZy1nb29nbGUtbW9jay1ob3ctdG8tcHJpbnQteW91ci12YWx1ZXMp
LikuCisKK1RoZXNlIGFzc2VydGlvbnMgY2FuIHdvcmsgd2l0aCBhIHVzZXItZGVmaW5lZCB0eXBl
LCBidXQgb25seSBpZiB5b3UgZGVmaW5lIHRoZQorY29ycmVzcG9uZGluZyBjb21wYXJpc29uIG9w
ZXJhdG9yIChlLmcuIGA9PWAsIGA8YCwgZXRjKS4gIElmIHRoZSBjb3JyZXNwb25kaW5nCitvcGVy
YXRvciBpcyBkZWZpbmVkLCBwcmVmZXIgdXNpbmcgdGhlIGBBU1NFUlRfKigpYCBtYWNyb3MgYmVj
YXVzZSB0aGV5IHdpbGwKK3ByaW50IG91dCBub3Qgb25seSB0aGUgcmVzdWx0IG9mIHRoZSBjb21w
YXJpc29uLCBidXQgdGhlIHR3byBvcGVyYW5kcyBhcyB3ZWxsLgorCitBcmd1bWVudHMgYXJlIGFs
d2F5cyBldmFsdWF0ZWQgZXhhY3RseSBvbmNlLiBUaGVyZWZvcmUsIGl0J3MgT0sgZm9yIHRoZQor
YXJndW1lbnRzIHRvIGhhdmUgc2lkZSBlZmZlY3RzLiBIb3dldmVyLCBhcyB3aXRoIGFueSBvcmRp
bmFyeSBDL0MrKyBmdW5jdGlvbiwKK3RoZSBhcmd1bWVudHMnIGV2YWx1YXRpb24gb3JkZXIgaXMg
dW5kZWZpbmVkIChpLmUuIHRoZSBjb21waWxlciBpcyBmcmVlIHRvCitjaG9vc2UgYW55IG9yZGVy
KSBhbmQgeW91ciBjb2RlIHNob3VsZCBub3QgZGVwZW5kIG9uIGFueSBwYXJ0aWN1bGFyIGFyZ3Vt
ZW50CitldmFsdWF0aW9uIG9yZGVyLgorCitgQVNTRVJUX0VRKClgIGRvZXMgcG9pbnRlciBlcXVh
bGl0eSBvbiBwb2ludGVycy4gSWYgdXNlZCBvbiB0d28gQyBzdHJpbmdzLCBpdAordGVzdHMgaWYg
dGhleSBhcmUgaW4gdGhlIHNhbWUgbWVtb3J5IGxvY2F0aW9uLCBub3QgaWYgdGhleSBoYXZlIHRo
ZSBzYW1lIHZhbHVlLgorVGhlcmVmb3JlLCBpZiB5b3Ugd2FudCB0byBjb21wYXJlIEMgc3RyaW5n
cyAoZS5nLiBgY29uc3QgY2hhcipgKSBieSB2YWx1ZSwgdXNlCitgQVNTRVJUX1NUUkVRKClgICwg
d2hpY2ggd2lsbCBiZSBkZXNjcmliZWQgbGF0ZXIgb24uIEluIHBhcnRpY3VsYXIsIHRvIGFzc2Vy
dAordGhhdCBhIEMgc3RyaW5nIGlzIGBOVUxMYCwgdXNlIGBBU1NFUlRfU1RSRVEoTlVMTCwgY19z
dHJpbmcpYCAuIEhvd2V2ZXIsIHRvCitjb21wYXJlIHR3byBgc3RyaW5nYCBvYmplY3RzLCB5b3Ug
c2hvdWxkIHVzZSBgQVNTRVJUX0VRYC4KKworTWFjcm9zIGluIHRoaXMgc2VjdGlvbiB3b3JrIHdp
dGggYm90aCBuYXJyb3cgYW5kIHdpZGUgc3RyaW5nIG9iamVjdHMgKGBzdHJpbmdgCithbmQgYHdz
dHJpbmdgKS4KKworX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIFN0
cmluZyBDb21wYXJpc29uICMjCisKK1RoZSBhc3NlcnRpb25zIGluIHRoaXMgZ3JvdXAgY29tcGFy
ZSB0d28gKipDIHN0cmluZ3MqKi4gSWYgeW91IHdhbnQgdG8gY29tcGFyZQordHdvIGBzdHJpbmdg
IG9iamVjdHMsIHVzZSBgRVhQRUNUX0VRYCwgYEVYUEVDVF9ORWAsIGFuZCBldGMgaW5zdGVhZC4K
KworfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVy
aWZpZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LXw6LS0tLS0tLS0tLS0tLXwKK3wgYEFTU0VSVF9TVFJFUShgX2V4cGVjdGVkXF9zdHJfYCwgYF9h
Y3R1YWxcX3N0cl9gKTtgICAgIHwgYEVYUEVDVF9TVFJFUShgX2V4cGVjdGVkXF9zdHJfYCwgYF9h
Y3R1YWxcX3N0cl9gKTtgICAgICB8IHRoZSB0d28gQyBzdHJpbmdzIGhhdmUgdGhlIHNhbWUgY29u
dGVudCB8Cit8IGBBU1NFUlRfU1RSTkUoYF9zdHIxX2AsIGBfc3RyMl9gKTtgICAgIHwgYEVYUEVD
VF9TVFJORShgX3N0cjFfYCwgYF9zdHIyX2ApO2AgICAgIHwgdGhlIHR3byBDIHN0cmluZ3MgaGF2
ZSBkaWZmZXJlbnQgY29udGVudCB8Cit8IGBBU1NFUlRfU1RSQ0FTRUVRKGBfZXhwZWN0ZWRcX3N0
cl9gLCBgX2FjdHVhbFxfc3RyX2ApO2B8IGBFWFBFQ1RfU1RSQ0FTRUVRKGBfZXhwZWN0ZWRcX3N0
cl9gLCBgX2FjdHVhbFxfc3RyX2ApO2AgfCB0aGUgdHdvIEMgc3RyaW5ncyBoYXZlIHRoZSBzYW1l
IGNvbnRlbnQsIGlnbm9yaW5nIGNhc2UgfAorfCBgQVNTRVJUX1NUUkNBU0VORShgX3N0cjFfYCwg
YF9zdHIyX2ApO2B8IGBFWFBFQ1RfU1RSQ0FTRU5FKGBfc3RyMV9gLCBgX3N0cjJfYCk7YCB8IHRo
ZSB0d28gQyBzdHJpbmdzIGhhdmUgZGlmZmVyZW50IGNvbnRlbnQsIGlnbm9yaW5nIGNhc2UgfAor
CitOb3RlIHRoYXQgIkNBU0UiIGluIGFuIGFzc2VydGlvbiBuYW1lIG1lYW5zIHRoYXQgY2FzZSBp
cyBpZ25vcmVkLgorCitgKlNUUkVRKmAgYW5kIGAqU1RSTkUqYCBhbHNvIGFjY2VwdCB3aWRlIEMg
c3RyaW5ncyAoYHdjaGFyX3QqYCkuIElmIGEKK2NvbXBhcmlzb24gb2YgdHdvIHdpZGUgc3RyaW5n
cyBmYWlscywgdGhlaXIgdmFsdWVzIHdpbGwgYmUgcHJpbnRlZCBhcyBVVEYtOAorbmFycm93IHN0
cmluZ3MuCisKK0EgYE5VTExgIHBvaW50ZXIgYW5kIGFuIGVtcHR5IHN0cmluZyBhcmUgY29uc2lk
ZXJlZCBfZGlmZmVyZW50Xy4KKworX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMu
CisKK1NlZSBhbHNvOiBGb3IgbW9yZSBzdHJpbmcgY29tcGFyaXNvbiB0cmlja3MgKHN1YnN0cmlu
ZywgcHJlZml4LCBzdWZmaXgsIGFuZAorcmVndWxhciBleHByZXNzaW9uIG1hdGNoaW5nLCBmb3Ig
ZXhhbXBsZSksIHNlZSB0aGUgW0FkdmFuY2VkIEdvb2dsZSBUZXN0IEd1aWRlXShWMV82X0FkdmFu
Y2VkR3VpZGUubWQpLgorCisjIFNpbXBsZSBUZXN0cyAjCisKK1RvIGNyZWF0ZSBhIHRlc3Q6Cisg
IDEuIFVzZSB0aGUgYFRFU1QoKWAgbWFjcm8gdG8gZGVmaW5lIGFuZCBuYW1lIGEgdGVzdCBmdW5j
dGlvbiwgVGhlc2UgYXJlIG9yZGluYXJ5IEMrKyBmdW5jdGlvbnMgdGhhdCBkb24ndCByZXR1cm4g
YSB2YWx1ZS4KKyAgMS4gSW4gdGhpcyBmdW5jdGlvbiwgYWxvbmcgd2l0aCBhbnkgdmFsaWQgQysr
IHN0YXRlbWVudHMgeW91IHdhbnQgdG8gaW5jbHVkZSwgdXNlIHRoZSB2YXJpb3VzIEdvb2dsZSBU
ZXN0IGFzc2VydGlvbnMgdG8gY2hlY2sgdmFsdWVzLgorICAxLiBUaGUgdGVzdCdzIHJlc3VsdCBp
cyBkZXRlcm1pbmVkIGJ5IHRoZSBhc3NlcnRpb25zOyBpZiBhbnkgYXNzZXJ0aW9uIGluIHRoZSB0
ZXN0IGZhaWxzIChlaXRoZXIgZmF0YWxseSBvciBub24tZmF0YWxseSksIG9yIGlmIHRoZSB0ZXN0
IGNyYXNoZXMsIHRoZSBlbnRpcmUgdGVzdCBmYWlscy4gT3RoZXJ3aXNlLCBpdCBzdWNjZWVkcy4K
KworYGBgCitURVNUKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIHsKKyAuLi4gdGVzdCBib2R5
IC4uLgorfQorYGBgCisKKworYFRFU1QoKWAgYXJndW1lbnRzIGdvIGZyb20gZ2VuZXJhbCB0byBz
cGVjaWZpYy4gVGhlIF9maXJzdF8gYXJndW1lbnQgaXMgdGhlCituYW1lIG9mIHRoZSB0ZXN0IGNh
c2UsIGFuZCB0aGUgX3NlY29uZF8gYXJndW1lbnQgaXMgdGhlIHRlc3QncyBuYW1lIHdpdGhpbiB0
aGUKK3Rlc3QgY2FzZS4gQm90aCBuYW1lcyBtdXN0IGJlIHZhbGlkIEMrKyBpZGVudGlmaWVycywg
YW5kIHRoZXkgc2hvdWxkIG5vdCBjb250YWluIHVuZGVyc2NvcmUgKGBfYCkuIEEgdGVzdCdzIF9m
dWxsIG5hbWVfIGNvbnNpc3RzIG9mIGl0cyBjb250YWluaW5nIHRlc3QgY2FzZSBhbmQgaXRzCitp
bmRpdmlkdWFsIG5hbWUuIFRlc3RzIGZyb20gZGlmZmVyZW50IHRlc3QgY2FzZXMgY2FuIGhhdmUg
dGhlIHNhbWUgaW5kaXZpZHVhbAorbmFtZS4KKworRm9yIGV4YW1wbGUsIGxldCdzIHRha2UgYSBz
aW1wbGUgaW50ZWdlciBmdW5jdGlvbjoKK2BgYAoraW50IEZhY3RvcmlhbChpbnQgbik7IC8vIFJl
dHVybnMgdGhlIGZhY3RvcmlhbCBvZiBuCitgYGAKKworQSB0ZXN0IGNhc2UgZm9yIHRoaXMgZnVu
Y3Rpb24gbWlnaHQgbG9vayBsaWtlOgorYGBgCisvLyBUZXN0cyBmYWN0b3JpYWwgb2YgMC4KK1RF
U1QoRmFjdG9yaWFsVGVzdCwgSGFuZGxlc1plcm9JbnB1dCkgeworICBFWFBFQ1RfRVEoMSwgRmFj
dG9yaWFsKDApKTsKK30KKworLy8gVGVzdHMgZmFjdG9yaWFsIG9mIHBvc2l0aXZlIG51bWJlcnMu
CitURVNUKEZhY3RvcmlhbFRlc3QsIEhhbmRsZXNQb3NpdGl2ZUlucHV0KSB7CisgIEVYUEVDVF9F
USgxLCBGYWN0b3JpYWwoMSkpOworICBFWFBFQ1RfRVEoMiwgRmFjdG9yaWFsKDIpKTsKKyAgRVhQ
RUNUX0VRKDYsIEZhY3RvcmlhbCgzKSk7CisgIEVYUEVDVF9FUSg0MDMyMCwgRmFjdG9yaWFsKDgp
KTsKK30KK2BgYAorCitHb29nbGUgVGVzdCBncm91cHMgdGhlIHRlc3QgcmVzdWx0cyBieSB0ZXN0
IGNhc2VzLCBzbyBsb2dpY2FsbHktcmVsYXRlZCB0ZXN0cworc2hvdWxkIGJlIGluIHRoZSBzYW1l
IHRlc3QgY2FzZTsgaW4gb3RoZXIgd29yZHMsIHRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGVpcgor
YFRFU1QoKWAgc2hvdWxkIGJlIHRoZSBzYW1lLiBJbiB0aGUgYWJvdmUgZXhhbXBsZSwgd2UgaGF2
ZSB0d28gdGVzdHMsCitgSGFuZGxlc1plcm9JbnB1dGAgYW5kIGBIYW5kbGVzUG9zaXRpdmVJbnB1
dGAsIHRoYXQgYmVsb25nIHRvIHRoZSBzYW1lIHRlc3QKK2Nhc2UgYEZhY3RvcmlhbFRlc3RgLgor
CitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyBUZXN0IEZpeHR1cmVz
OiBVc2luZyB0aGUgU2FtZSBEYXRhIENvbmZpZ3VyYXRpb24gZm9yIE11bHRpcGxlIFRlc3RzICMK
KworSWYgeW91IGZpbmQgeW91cnNlbGYgd3JpdGluZyB0d28gb3IgbW9yZSB0ZXN0cyB0aGF0IG9w
ZXJhdGUgb24gc2ltaWxhciBkYXRhLAoreW91IGNhbiB1c2UgYSBfdGVzdCBmaXh0dXJlXy4gSXQg
YWxsb3dzIHlvdSB0byByZXVzZSB0aGUgc2FtZSBjb25maWd1cmF0aW9uIG9mCitvYmplY3RzIGZv
ciBzZXZlcmFsIGRpZmZlcmVudCB0ZXN0cy4KKworVG8gY3JlYXRlIGEgZml4dHVyZSwganVzdDoK
KyAgMS4gRGVyaXZlIGEgY2xhc3MgZnJvbSBgOjp0ZXN0aW5nOjpUZXN0YCAuIFN0YXJ0IGl0cyBi
b2R5IHdpdGggYHByb3RlY3RlZDpgIG9yIGBwdWJsaWM6YCBhcyB3ZSdsbCB3YW50IHRvIGFjY2Vz
cyBmaXh0dXJlIG1lbWJlcnMgZnJvbSBzdWItY2xhc3Nlcy4KKyAgMS4gSW5zaWRlIHRoZSBjbGFz
cywgZGVjbGFyZSBhbnkgb2JqZWN0cyB5b3UgcGxhbiB0byB1c2UuCisgIDEuIElmIG5lY2Vzc2Fy
eSwgd3JpdGUgYSBkZWZhdWx0IGNvbnN0cnVjdG9yIG9yIGBTZXRVcCgpYCBmdW5jdGlvbiB0byBw
cmVwYXJlIHRoZSBvYmplY3RzIGZvciBlYWNoIHRlc3QuIEEgY29tbW9uIG1pc3Rha2UgaXMgdG8g
c3BlbGwgYFNldFVwKClgIGFzIGBTZXR1cCgpYCB3aXRoIGEgc21hbGwgYHVgIC0gZG9uJ3QgbGV0
IHRoYXQgaGFwcGVuIHRvIHlvdS4KKyAgMS4gSWYgbmVjZXNzYXJ5LCB3cml0ZSBhIGRlc3RydWN0
b3Igb3IgYFRlYXJEb3duKClgIGZ1bmN0aW9uIHRvIHJlbGVhc2UgYW55IHJlc291cmNlcyB5b3Ug
YWxsb2NhdGVkIGluIGBTZXRVcCgpYCAuIFRvIGxlYXJuIHdoZW4geW91IHNob3VsZCB1c2UgdGhl
IGNvbnN0cnVjdG9yL2Rlc3RydWN0b3IgYW5kIHdoZW4geW91IHNob3VsZCB1c2UgYFNldFVwKCkv
VGVhckRvd24oKWAsIHJlYWQgdGhpcyBbRkFRIGVudHJ5XShWMV82X0ZBUS5tZCNzaG91bGQtaS11
c2UtdGhlLWNvbnN0cnVjdG9yZGVzdHJ1Y3Rvci1vZi10aGUtdGVzdC1maXh0dXJlLW9yLXRoZS1z
ZXQtdXB0ZWFyLWRvd24tZnVuY3Rpb24pLgorICAxLiBJZiBuZWVkZWQsIGRlZmluZSBzdWJyb3V0
aW5lcyBmb3IgeW91ciB0ZXN0cyB0byBzaGFyZS4KKworV2hlbiB1c2luZyBhIGZpeHR1cmUsIHVz
ZSBgVEVTVF9GKClgIGluc3RlYWQgb2YgYFRFU1QoKWAgYXMgaXQgYWxsb3dzIHlvdSB0bworYWNj
ZXNzIG9iamVjdHMgYW5kIHN1YnJvdXRpbmVzIGluIHRoZSB0ZXN0IGZpeHR1cmU6CitgYGAKK1RF
U1RfRih0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSB7CisgLi4uIHRlc3QgYm9keSAuLi4KK30K
K2BgYAorCitMaWtlIGBURVNUKClgLCB0aGUgZmlyc3QgYXJndW1lbnQgaXMgdGhlIHRlc3QgY2Fz
ZSBuYW1lLCBidXQgZm9yIGBURVNUX0YoKWAKK3RoaXMgbXVzdCBiZSB0aGUgbmFtZSBvZiB0aGUg
dGVzdCBmaXh0dXJlIGNsYXNzLiBZb3UndmUgcHJvYmFibHkgZ3Vlc3NlZDogYF9GYAoraXMgZm9y
IGZpeHR1cmUuCisKK1VuZm9ydHVuYXRlbHksIHRoZSBDKysgbWFjcm8gc3lzdGVtIGRvZXMgbm90
IGFsbG93IHVzIHRvIGNyZWF0ZSBhIHNpbmdsZSBtYWNybwordGhhdCBjYW4gaGFuZGxlIGJvdGgg
dHlwZXMgb2YgdGVzdHMuIFVzaW5nIHRoZSB3cm9uZyBtYWNybyBjYXVzZXMgYSBjb21waWxlcgor
ZXJyb3IuCisKK0Fsc28sIHlvdSBtdXN0IGZpcnN0IGRlZmluZSBhIHRlc3QgZml4dHVyZSBjbGFz
cyBiZWZvcmUgdXNpbmcgaXQgaW4gYQorYFRFU1RfRigpYCwgb3IgeW91J2xsIGdldCB0aGUgY29t
cGlsZXIgZXJyb3IgImB2aXJ0dWFsIG91dHNpZGUgY2xhc3MKK2RlY2xhcmF0aW9uYCIuCisKK0Zv
ciBlYWNoIHRlc3QgZGVmaW5lZCB3aXRoIGBURVNUX0YoKWAsIEdvb2dsZSBUZXN0IHdpbGw6Cisg
IDEuIENyZWF0ZSBhIF9mcmVzaF8gdGVzdCBmaXh0dXJlIGF0IHJ1bnRpbWUKKyAgMS4gSW1tZWRp
YXRlbHkgaW5pdGlhbGl6ZSBpdCB2aWEgYFNldFVwKClgICwKKyAgMS4gUnVuIHRoZSB0ZXN0Cisg
IDEuIENsZWFuIHVwIGJ5IGNhbGxpbmcgYFRlYXJEb3duKClgCisgIDEuIERlbGV0ZSB0aGUgdGVz
dCBmaXh0dXJlLiAgTm90ZSB0aGF0IGRpZmZlcmVudCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNh
c2UgaGF2ZSBkaWZmZXJlbnQgdGVzdCBmaXh0dXJlIG9iamVjdHMsIGFuZCBHb29nbGUgVGVzdCBh
bHdheXMgZGVsZXRlcyBhIHRlc3QgZml4dHVyZSBiZWZvcmUgaXQgY3JlYXRlcyB0aGUgbmV4dCBv
bmUuIEdvb2dsZSBUZXN0IGRvZXMgbm90IHJldXNlIHRoZSBzYW1lIHRlc3QgZml4dHVyZSBmb3Ig
bXVsdGlwbGUgdGVzdHMuIEFueSBjaGFuZ2VzIG9uZSB0ZXN0IG1ha2VzIHRvIHRoZSBmaXh0dXJl
IGRvIG5vdCBhZmZlY3Qgb3RoZXIgdGVzdHMuCisKK0FzIGFuIGV4YW1wbGUsIGxldCdzIHdyaXRl
IHRlc3RzIGZvciBhIEZJRk8gcXVldWUgY2xhc3MgbmFtZWQgYFF1ZXVlYCwgd2hpY2gKK2hhcyB0
aGUgZm9sbG93aW5nIGludGVyZmFjZToKK2BgYAordGVtcGxhdGUgPHR5cGVuYW1lIEU+IC8vIEUg
aXMgdGhlIGVsZW1lbnQgdHlwZS4KK2NsYXNzIFF1ZXVlIHsKKyBwdWJsaWM6CisgIFF1ZXVlKCk7
CisgIHZvaWQgRW5xdWV1ZShjb25zdCBFJiBlbGVtZW50KTsKKyAgRSogRGVxdWV1ZSgpOyAvLyBS
ZXR1cm5zIE5VTEwgaWYgdGhlIHF1ZXVlIGlzIGVtcHR5LgorICBzaXplX3Qgc2l6ZSgpIGNvbnN0
OworICAuLi4KK307CitgYGAKKworRmlyc3QsIGRlZmluZSBhIGZpeHR1cmUgY2xhc3MuIEJ5IGNv
bnZlbnRpb24sIHlvdSBzaG91bGQgZ2l2ZSBpdCB0aGUgbmFtZQorYEZvb1Rlc3RgIHdoZXJlIGBG
b29gIGlzIHRoZSBjbGFzcyBiZWluZyB0ZXN0ZWQuCitgYGAKK2NsYXNzIFF1ZXVlVGVzdCA6IHB1
YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgdmlydHVhbCB2b2lkIFNldFVw
KCkgeworICAgIHExXy5FbnF1ZXVlKDEpOworICAgIHEyXy5FbnF1ZXVlKDIpOworICAgIHEyXy5F
bnF1ZXVlKDMpOworICB9CisKKyAgLy8gdmlydHVhbCB2b2lkIFRlYXJEb3duKCkge30KKworICBR
dWV1ZTxpbnQ+IHEwXzsKKyAgUXVldWU8aW50PiBxMV87CisgIFF1ZXVlPGludD4gcTJfOworfTsK
K2BgYAorCitJbiB0aGlzIGNhc2UsIGBUZWFyRG93bigpYCBpcyBub3QgbmVlZGVkIHNpbmNlIHdl
IGRvbid0IGhhdmUgdG8gY2xlYW4gdXAgYWZ0ZXIKK2VhY2ggdGVzdCwgb3RoZXIgdGhhbiB3aGF0
J3MgYWxyZWFkeSBkb25lIGJ5IHRoZSBkZXN0cnVjdG9yLgorCitOb3cgd2UnbGwgd3JpdGUgdGVz
dHMgdXNpbmcgYFRFU1RfRigpYCBhbmQgdGhpcyBmaXh0dXJlLgorYGBgCitURVNUX0YoUXVldWVU
ZXN0LCBJc0VtcHR5SW5pdGlhbGx5KSB7CisgIEVYUEVDVF9FUSgwLCBxMF8uc2l6ZSgpKTsKK30K
KworVEVTVF9GKFF1ZXVlVGVzdCwgRGVxdWV1ZVdvcmtzKSB7CisgIGludCogbiA9IHEwXy5EZXF1
ZXVlKCk7CisgIEVYUEVDVF9FUShOVUxMLCBuKTsKKworICBuID0gcTFfLkRlcXVldWUoKTsKKyAg
QVNTRVJUX1RSVUUobiAhPSBOVUxMKTsKKyAgRVhQRUNUX0VRKDEsICpuKTsKKyAgRVhQRUNUX0VR
KDAsIHExXy5zaXplKCkpOworICBkZWxldGUgbjsKKworICBuID0gcTJfLkRlcXVldWUoKTsKKyAg
QVNTRVJUX1RSVUUobiAhPSBOVUxMKTsKKyAgRVhQRUNUX0VRKDIsICpuKTsKKyAgRVhQRUNUX0VR
KDEsIHEyXy5zaXplKCkpOworICBkZWxldGUgbjsKK30KK2BgYAorCitUaGUgYWJvdmUgdXNlcyBi
b3RoIGBBU1NFUlRfKmAgYW5kIGBFWFBFQ1RfKmAgYXNzZXJ0aW9ucy4gVGhlIHJ1bGUgb2YgdGh1
bWIgaXMKK3RvIHVzZSBgRVhQRUNUXypgIHdoZW4geW91IHdhbnQgdGhlIHRlc3QgdG8gY29udGlu
dWUgdG8gcmV2ZWFsIG1vcmUgZXJyb3JzCithZnRlciB0aGUgYXNzZXJ0aW9uIGZhaWx1cmUsIGFu
ZCB1c2UgYEFTU0VSVF8qYCB3aGVuIGNvbnRpbnVpbmcgYWZ0ZXIgZmFpbHVyZQorZG9lc24ndCBt
YWtlIHNlbnNlLiBGb3IgZXhhbXBsZSwgdGhlIHNlY29uZCBhc3NlcnRpb24gaW4gdGhlIGBEZXF1
ZXVlYCB0ZXN0IGlzCitgQVNTRVJUX1RSVUUobiAhPSBOVUxMKWAsIGFzIHdlIG5lZWQgdG8gZGVy
ZWZlcmVuY2UgdGhlIHBvaW50ZXIgYG5gIGxhdGVyLAord2hpY2ggd291bGQgbGVhZCB0byBhIHNl
Z2ZhdWx0IHdoZW4gYG5gIGlzIGBOVUxMYC4KKworV2hlbiB0aGVzZSB0ZXN0cyBydW4sIHRoZSBm
b2xsb3dpbmcgaGFwcGVuczoKKyAgMS4gR29vZ2xlIFRlc3QgY29uc3RydWN0cyBhIGBRdWV1ZVRl
c3RgIG9iamVjdCAobGV0J3MgY2FsbCBpdCBgdDFgICkuCisgIDEuIGB0MS5TZXRVcCgpYCBpbml0
aWFsaXplcyBgdDFgIC4KKyAgMS4gVGhlIGZpcnN0IHRlc3QgKCBgSXNFbXB0eUluaXRpYWxseWAg
KSBydW5zIG9uIGB0MWAgLgorICAxLiBgdDEuVGVhckRvd24oKWAgY2xlYW5zIHVwIGFmdGVyIHRo
ZSB0ZXN0IGZpbmlzaGVzLgorICAxLiBgdDFgIGlzIGRlc3RydWN0ZWQuCisgIDEuIFRoZSBhYm92
ZSBzdGVwcyBhcmUgcmVwZWF0ZWQgb24gYW5vdGhlciBgUXVldWVUZXN0YCBvYmplY3QsIHRoaXMg
dGltZSBydW5uaW5nIHRoZSBgRGVxdWV1ZVdvcmtzYCB0ZXN0LgorCitfQXZhaWxhYmlsaXR5Xzog
TGludXgsIFdpbmRvd3MsIE1hYy4KKworX05vdGVfOiBHb29nbGUgVGVzdCBhdXRvbWF0aWNhbGx5
IHNhdmVzIGFsbCBfR29vZ2xlIFRlc3RfIGZsYWdzIHdoZW4gYSB0ZXN0CitvYmplY3QgaXMgY29u
c3RydWN0ZWQsIGFuZCByZXN0b3JlcyB0aGVtIHdoZW4gaXQgaXMgZGVzdHJ1Y3RlZC4KKworIyBJ
bnZva2luZyB0aGUgVGVzdHMgIworCitgVEVTVCgpYCBhbmQgYFRFU1RfRigpYCBpbXBsaWNpdGx5
IHJlZ2lzdGVyIHRoZWlyIHRlc3RzIHdpdGggR29vZ2xlIFRlc3QuIFNvLCB1bmxpa2Ugd2l0aCBt
YW55IG90aGVyIEMrKyB0ZXN0aW5nIGZyYW1ld29ya3MsIHlvdSBkb24ndCBoYXZlIHRvIHJlLWxp
c3QgYWxsIHlvdXIgZGVmaW5lZCB0ZXN0cyBpbiBvcmRlciB0byBydW4gdGhlbS4KKworQWZ0ZXIg
ZGVmaW5pbmcgeW91ciB0ZXN0cywgeW91IGNhbiBydW4gdGhlbSB3aXRoIGBSVU5fQUxMX1RFU1RT
KClgICwgd2hpY2ggcmV0dXJucyBgMGAgaWYgYWxsIHRoZSB0ZXN0cyBhcmUgc3VjY2Vzc2Z1bCwg
b3IgYDFgIG90aGVyd2lzZS4gTm90ZSB0aGF0IGBSVU5fQUxMX1RFU1RTKClgIHJ1bnMgX2FsbCB0
ZXN0c18gaW4geW91ciBsaW5rIHVuaXQgLS0gdGhleSBjYW4gYmUgZnJvbSBkaWZmZXJlbnQgdGVz
dCBjYXNlcywgb3IgZXZlbiBkaWZmZXJlbnQgc291cmNlIGZpbGVzLgorCitXaGVuIGludm9rZWQs
IHRoZSBgUlVOX0FMTF9URVNUUygpYCBtYWNybzoKKyAgMS4gU2F2ZXMgdGhlIHN0YXRlIG9mIGFs
bCAgR29vZ2xlIFRlc3QgZmxhZ3MuCisgIDEuIENyZWF0ZXMgYSB0ZXN0IGZpeHR1cmUgb2JqZWN0
IGZvciB0aGUgZmlyc3QgdGVzdC4KKyAgMS4gSW5pdGlhbGl6ZXMgaXQgdmlhIGBTZXRVcCgpYC4K
KyAgMS4gUnVucyB0aGUgdGVzdCBvbiB0aGUgZml4dHVyZSBvYmplY3QuCisgIDEuIENsZWFucyB1
cCB0aGUgZml4dHVyZSB2aWEgYFRlYXJEb3duKClgLgorICAxLiBEZWxldGVzIHRoZSBmaXh0dXJl
LgorICAxLiBSZXN0b3JlcyB0aGUgc3RhdGUgb2YgYWxsIEdvb2dsZSBUZXN0IGZsYWdzLgorICAx
LiBSZXBlYXRzIHRoZSBhYm92ZSBzdGVwcyBmb3IgdGhlIG5leHQgdGVzdCwgdW50aWwgYWxsIHRl
c3RzIGhhdmUgcnVuLgorCitJbiBhZGRpdGlvbiwgaWYgdGhlIHRleHQgZml4dHVyZSdzIGNvbnN0
cnVjdG9yIGdlbmVyYXRlcyBhIGZhdGFsIGZhaWx1cmUgaW4KK3N0ZXAgMiwgdGhlcmUgaXMgbm8g
cG9pbnQgZm9yIHN0ZXAgMyAtIDUgYW5kIHRoZXkgYXJlIHRodXMgc2tpcHBlZC4gU2ltaWxhcmx5
LAoraWYgc3RlcCAzIGdlbmVyYXRlcyBhIGZhdGFsIGZhaWx1cmUsIHN0ZXAgNCB3aWxsIGJlIHNr
aXBwZWQuCisKK19JbXBvcnRhbnRfOiBZb3UgbXVzdCBub3QgaWdub3JlIHRoZSByZXR1cm4gdmFs
dWUgb2YgYFJVTl9BTExfVEVTVFMoKWAsIG9yIGBnY2NgCit3aWxsIGdpdmUgeW91IGEgY29tcGls
ZXIgZXJyb3IuIFRoZSByYXRpb25hbGUgZm9yIHRoaXMgZGVzaWduIGlzIHRoYXQgdGhlCithdXRv
bWF0ZWQgdGVzdGluZyBzZXJ2aWNlIGRldGVybWluZXMgd2hldGhlciBhIHRlc3QgaGFzIHBhc3Nl
ZCBiYXNlZCBvbiBpdHMKK2V4aXQgY29kZSwgbm90IG9uIGl0cyBzdGRvdXQvc3RkZXJyIG91dHB1
dDsgdGh1cyB5b3VyIGBtYWluKClgIGZ1bmN0aW9uIG11c3QKK3JldHVybiB0aGUgdmFsdWUgb2Yg
YFJVTl9BTExfVEVTVFMoKWAuCisKK0Fsc28sIHlvdSBzaG91bGQgY2FsbCBgUlVOX0FMTF9URVNU
UygpYCBvbmx5ICoqb25jZSoqLiBDYWxsaW5nIGl0IG1vcmUgdGhhbiBvbmNlCitjb25mbGljdHMg
d2l0aCBzb21lIGFkdmFuY2VkIEdvb2dsZSBUZXN0IGZlYXR1cmVzIChlLmcuIHRocmVhZC1zYWZl
IGRlYXRoCit0ZXN0cykgYW5kIHRodXMgaXMgbm90IHN1cHBvcnRlZC4KKworX0F2YWlsYWJpbGl0
eV86IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMgV3JpdGluZyB0aGUgbWFpbigpIEZ1bmN0aW9u
ICMKKworWW91IGNhbiBzdGFydCBmcm9tIHRoaXMgYm9pbGVycGxhdGU6CitgYGAKKyNpbmNsdWRl
ICJ0aGlzL3BhY2thZ2UvZm9vLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNw
YWNlIHsKKworLy8gVGhlIGZpeHR1cmUgZm9yIHRlc3RpbmcgY2xhc3MgRm9vLgorY2xhc3MgRm9v
VGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgLy8gWW91IGNh
biByZW1vdmUgYW55IG9yIGFsbCBvZiB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBpZiBpdHMgYm9k
eQorICAvLyBpcyBlbXB0eS4KKworICBGb29UZXN0KCkgeworICAgIC8vIFlvdSBjYW4gZG8gc2V0
LXVwIHdvcmsgZm9yIGVhY2ggdGVzdCBoZXJlLgorICB9CisKKyAgdmlydHVhbCB+Rm9vVGVzdCgp
IHsKKyAgICAvLyBZb3UgY2FuIGRvIGNsZWFuLXVwIHdvcmsgdGhhdCBkb2Vzbid0IHRocm93IGV4
Y2VwdGlvbnMgaGVyZS4KKyAgfQorCisgIC8vIElmIHRoZSBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1
Y3RvciBhcmUgbm90IGVub3VnaCBmb3Igc2V0dGluZyB1cAorICAvLyBhbmQgY2xlYW5pbmcgdXAg
ZWFjaCB0ZXN0LCB5b3UgY2FuIGRlZmluZSB0aGUgZm9sbG93aW5nIG1ldGhvZHM6CisKKyAgdmly
dHVhbCB2b2lkIFNldFVwKCkgeworICAgIC8vIENvZGUgaGVyZSB3aWxsIGJlIGNhbGxlZCBpbW1l
ZGlhdGVseSBhZnRlciB0aGUgY29uc3RydWN0b3IgKHJpZ2h0CisgICAgLy8gYmVmb3JlIGVhY2gg
dGVzdCkuCisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgLy8gQ29kZSBo
ZXJlIHdpbGwgYmUgY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIGVhY2ggdGVzdCAocmlnaHQKKyAg
ICAvLyBiZWZvcmUgdGhlIGRlc3RydWN0b3IpLgorICB9CisKKyAgLy8gT2JqZWN0cyBkZWNsYXJl
ZCBoZXJlIGNhbiBiZSB1c2VkIGJ5IGFsbCB0ZXN0cyBpbiB0aGUgdGVzdCBjYXNlIGZvciBGb28u
Cit9OworCisvLyBUZXN0cyB0aGF0IHRoZSBGb286OkJhcigpIG1ldGhvZCBkb2VzIEFiYy4KK1RF
U1RfRihGb29UZXN0LCBNZXRob2RCYXJEb2VzQWJjKSB7CisgIGNvbnN0IHN0cmluZyBpbnB1dF9m
aWxlcGF0aCA9ICJ0aGlzL3BhY2thZ2UvdGVzdGRhdGEvbXlpbnB1dGZpbGUuZGF0IjsKKyAgY29u
c3Qgc3RyaW5nIG91dHB1dF9maWxlcGF0aCA9ICJ0aGlzL3BhY2thZ2UvdGVzdGRhdGEvbXlvdXRw
dXRmaWxlLmRhdCI7CisgIEZvbyBmOworICBFWFBFQ1RfRVEoMCwgZi5CYXIoaW5wdXRfZmlsZXBh
dGgsIG91dHB1dF9maWxlcGF0aCkpOworfQorCisvLyBUZXN0cyB0aGF0IEZvbyBkb2VzIFh5ei4K
K1RFU1RfRihGb29UZXN0LCBEb2VzWHl6KSB7CisgIC8vIEV4ZXJjaXNlcyB0aGUgWHl6IGZlYXR1
cmUgb2YgRm9vLgorfQorCit9ICAvLyBuYW1lc3BhY2UKKworaW50IG1haW4oaW50IGFyZ2MsIGNo
YXIgKiphcmd2KSB7CisgIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwor
ICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworfQorYGBgCisKK1RoZSBgOjp0ZXN0aW5nOjpJbml0
R29vZ2xlVGVzdCgpYCBmdW5jdGlvbiBwYXJzZXMgdGhlIGNvbW1hbmQgbGluZSBmb3IgR29vZ2xl
CitUZXN0IGZsYWdzLCBhbmQgcmVtb3ZlcyBhbGwgcmVjb2duaXplZCBmbGFncy4gVGhpcyBhbGxv
d3MgdGhlIHVzZXIgdG8gY29udHJvbCBhCit0ZXN0IHByb2dyYW0ncyBiZWhhdmlvciB2aWEgdmFy
aW91cyBmbGFncywgd2hpY2ggd2UnbGwgY292ZXIgaW4gW0FkdmFuY2VkR3VpZGVdKFYxXzZfQWR2
YW5jZWRHdWlkZS5tZCkuCitZb3UgbXVzdCBjYWxsIHRoaXMgZnVuY3Rpb24gYmVmb3JlIGNhbGxp
bmcgYFJVTl9BTExfVEVTVFMoKWAsIG9yIHRoZSBmbGFncword29uJ3QgYmUgcHJvcGVybHkgaW5p
dGlhbGl6ZWQuCisKK09uIFdpbmRvd3MsIGBJbml0R29vZ2xlVGVzdCgpYCBhbHNvIHdvcmtzIHdp
dGggd2lkZSBzdHJpbmdzLCBzbyBpdCBjYW4gYmUgdXNlZAoraW4gcHJvZ3JhbXMgY29tcGlsZWQg
aW4gYFVOSUNPREVgIG1vZGUgYXMgd2VsbC4KKworQnV0IG1heWJlIHlvdSB0aGluayB0aGF0IHdy
aXRpbmcgYWxsIHRob3NlIG1haW4oKSBmdW5jdGlvbnMgaXMgdG9vIG11Y2ggd29yaz8gV2UgYWdy
ZWUgd2l0aCB5b3UgY29tcGxldGVseSBhbmQgdGhhdCdzIHdoeSBHb29nbGUgVGVzdCBwcm92aWRl
cyBhIGJhc2ljIGltcGxlbWVudGF0aW9uIG9mIG1haW4oKS4gSWYgaXQgZml0cyB5b3VyIG5lZWRz
LCB0aGVuIGp1c3QgbGluayB5b3VyIHRlc3Qgd2l0aCBndGVzdFxfbWFpbiBsaWJyYXJ5IGFuZCB5
b3UgYXJlIGdvb2QgdG8gZ28uCisKKyMjIEltcG9ydGFudCBub3RlIGZvciBWaXN1YWwgQysrIHVz
ZXJzICMjCitJZiB5b3UgcHV0IHlvdXIgdGVzdHMgaW50byBhIGxpYnJhcnkgYW5kIHlvdXIgYG1h
aW4oKWAgZnVuY3Rpb24gaXMgaW4gYSBkaWZmZXJlbnQgbGlicmFyeSBvciBpbiB5b3VyIC5leGUg
ZmlsZSwgdGhvc2UgdGVzdHMgd2lsbCBub3QgcnVuLiBUaGUgcmVhc29uIGlzIGEgW2J1Z10oaHR0
cHM6Ly9jb25uZWN0Lm1pY3Jvc29mdC5jb20vZmVlZGJhY2svdmlld2ZlZWRiYWNrLmFzcHg/RmVl
ZGJhY2tJRD0yNDQ0MTAmc2l0ZWlkPTIxMCkgaW4gVmlzdWFsIEMrKy4gV2hlbiB5b3UgZGVmaW5l
IHlvdXIgdGVzdHMsIEdvb2dsZSBUZXN0IGNyZWF0ZXMgY2VydGFpbiBzdGF0aWMgb2JqZWN0cyB0
byByZWdpc3RlciB0aGVtLiBUaGVzZSBvYmplY3RzIGFyZSBub3QgcmVmZXJlbmNlZCBmcm9tIGVs
c2V3aGVyZSBidXQgdGhlaXIgY29uc3RydWN0b3JzIGFyZSBzdGlsbCBzdXBwb3NlZCB0byBydW4u
IFdoZW4gVmlzdWFsIEMrKyBsaW5rZXIgc2VlcyB0aGF0IG5vdGhpbmcgaW4gdGhlIGxpYnJhcnkg
aXMgcmVmZXJlbmNlZCBmcm9tIG90aGVyIHBsYWNlcyBpdCB0aHJvd3MgdGhlIGxpYnJhcnkgb3V0
LiBZb3UgaGF2ZSB0byByZWZlcmVuY2UgeW91ciBsaWJyYXJ5IHdpdGggdGVzdHMgZnJvbSB5b3Vy
IG1haW4gcHJvZ3JhbSB0byBrZWVwIHRoZSBsaW5rZXIgZnJvbSBkaXNjYXJkaW5nIGl0LiBIZXJl
IGlzIGhvdyB0byBkbyBpdC4gU29tZXdoZXJlIGluIHlvdXIgbGlicmFyeSBjb2RlIGRlY2xhcmUg
YSBmdW5jdGlvbjoKK2BgYAorX19kZWNsc3BlYyhkbGxleHBvcnQpIGludCBQdWxsSW5NeUxpYnJh
cnkoKSB7IHJldHVybiAwOyB9CitgYGAKK0lmIHlvdSBwdXQgeW91ciB0ZXN0cyBpbiBhIHN0YXRp
YyBsaWJyYXJ5IChub3QgRExMKSB0aGVuIGBfX2RlY2xzcGVjKGRsbGV4cG9ydClgIGlzIG5vdCBy
ZXF1aXJlZC4gTm93LCBpbiB5b3VyIG1haW4gcHJvZ3JhbSwgd3JpdGUgYSBjb2RlIHRoYXQgaW52
b2tlcyB0aGF0IGZ1bmN0aW9uOgorYGBgCitpbnQgUHVsbEluTXlMaWJyYXJ5KCk7CitzdGF0aWMg
aW50IGR1bW15ID0gUHVsbEluTXlMaWJyYXJ5KCk7CitgYGAKK1RoaXMgd2lsbCBrZWVwIHlvdXIg
dGVzdHMgcmVmZXJlbmNlZCBhbmQgd2lsbCBtYWtlIHRoZW0gcmVnaXN0ZXIgdGhlbXNlbHZlcyBh
dCBzdGFydHVwLgorCitJbiBhZGRpdGlvbiwgaWYgeW91IGRlZmluZSB5b3VyIHRlc3RzIGluIGEg
c3RhdGljIGxpYnJhcnksIGFkZCBgL09QVDpOT1JFRmAgdG8geW91ciBtYWluIHByb2dyYW0gbGlu
a2VyIG9wdGlvbnMuIElmIHlvdSB1c2UgTVNWQysrIElERSwgZ28gdG8geW91ciAuZXhlIHByb2pl
Y3QgcHJvcGVydGllcy9Db25maWd1cmF0aW9uIFByb3BlcnRpZXMvTGlua2VyL09wdGltaXphdGlv
biBhbmQgc2V0IFJlZmVyZW5jZXMgc2V0dGluZyB0byBgS2VlcCBVbnJlZmVyZW5jZWQgRGF0YSAo
L09QVDpOT1JFRilgLiBUaGlzIHdpbGwga2VlcCBWaXN1YWwgQysrIGxpbmtlciBmcm9tIGRpc2Nh
cmRpbmcgaW5kaXZpZHVhbCBzeW1ib2xzIGdlbmVyYXRlZCBieSB5b3VyIHRlc3RzIGZyb20gdGhl
IGZpbmFsIGV4ZWN1dGFibGUuCisKK1RoZXJlIGlzIG9uZSBtb3JlIHBpdGZhbGwsIHRob3VnaC4g
SWYgeW91IHVzZSBHb29nbGUgVGVzdCBhcyBhIHN0YXRpYyBsaWJyYXJ5ICh0aGF0J3MgaG93IGl0
IGlzIGRlZmluZWQgaW4gZ3Rlc3QudmNwcm9qKSB5b3VyIHRlc3RzIG11c3QgYWxzbyByZXNpZGUg
aW4gYSBzdGF0aWMgbGlicmFyeS4gSWYgeW91IGhhdmUgdG8gaGF2ZSB0aGVtIGluIGEgRExMLCB5
b3UgX211c3RfIGNoYW5nZSBHb29nbGUgVGVzdCB0byBidWlsZCBpbnRvIGEgRExMIGFzIHdlbGwu
IE90aGVyd2lzZSB5b3VyIHRlc3RzIHdpbGwgbm90IHJ1biBjb3JyZWN0bHkgb3Igd2lsbCBub3Qg
cnVuIGF0IGFsbC4gVGhlIGdlbmVyYWwgY29uY2x1c2lvbiBoZXJlIGlzOiBtYWtlIHlvdXIgbGlm
ZSBlYXNpZXIgLSBkbyBub3Qgd3JpdGUgeW91ciB0ZXN0cyBpbiBsaWJyYXJpZXMhCisKKyMgV2hl
cmUgdG8gR28gZnJvbSBIZXJlICMKKworQ29uZ3JhdHVsYXRpb25zISBZb3UndmUgbGVhcm5lZCB0
aGUgR29vZ2xlIFRlc3QgYmFzaWNzLiBZb3UgY2FuIHN0YXJ0IHdyaXRpbmcKK2FuZCBydW5uaW5n
IEdvb2dsZSBUZXN0IHRlc3RzLCByZWFkIHNvbWUgW3NhbXBsZXNdKFYxXzZfU2FtcGxlcy5tZCks
IG9yIGNvbnRpbnVlIHdpdGgKK1tBZHZhbmNlZEd1aWRlXShWMV82X0FkdmFuY2VkR3VpZGUubWQp
LCB3aGljaCBkZXNjcmliZXMgbWFueSBtb3JlIHVzZWZ1bCBHb29nbGUgVGVzdCBmZWF0dXJlcy4K
KworIyBLbm93biBMaW1pdGF0aW9ucyAjCisKK0dvb2dsZSBUZXN0IGlzIGRlc2lnbmVkIHRvIGJl
IHRocmVhZC1zYWZlLiAgVGhlIGltcGxlbWVudGF0aW9uIGlzCit0aHJlYWQtc2FmZSBvbiBzeXN0
ZW1zIHdoZXJlIHRoZSBgcHRocmVhZHNgIGxpYnJhcnkgaXMgYXZhaWxhYmxlLiAgSXQKK2lzIGN1
cnJlbnRseSBfdW5zYWZlXyB0byB1c2UgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBmcm9tIHR3byB0
aHJlYWRzCitjb25jdXJyZW50bHkgb24gb3RoZXIgc3lzdGVtcyAoZS5nLiBXaW5kb3dzKS4gIElu
IG1vc3QgdGVzdHMgdGhpcyBpcworbm90IGFuIGlzc3VlIGFzIHVzdWFsbHkgdGhlIGFzc2VydGlv
bnMgYXJlIGRvbmUgaW4gdGhlIG1haW4gdGhyZWFkLiBJZgoreW91IHdhbnQgdG8gaGVscCwgeW91
IGNhbiB2b2x1bnRlZXIgdG8gaW1wbGVtZW50IHRoZSBuZWNlc3NhcnkKK3N5bmNocm9uaXphdGlv
biBwcmltaXRpdmVzIGluIGBndGVzdC1wb3J0LmhgIGZvciB5b3VyIHBsYXRmb3JtLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9WMV82X1B1bXBNYW51YWwubWQgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9k
b2NzL1YxXzZfUHVtcE1hbnVhbC5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MTg0ZjE1M2NhMmVjYWQ3YzY1Y2I1
OGMyN2ZiMzFiZDcyMzc1ZmVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9W
MV82X1B1bXBNYW51YWwubWQKQEAgLTAsMCArMSwxNzcgQEAKKworCis8Yj5QPC9iPnVtcCBpcyA8
Yj5VPC9iPnNlZnVsIGZvciA8Yj5NPC9iPmV0YSA8Yj5QPC9iPnJvZ3JhbW1pbmcuCisKKyMgVGhl
IFByb2JsZW0gIworCitUZW1wbGF0ZSBhbmQgbWFjcm8gbGlicmFyaWVzIG9mdGVuIG5lZWQgdG8g
ZGVmaW5lIG1hbnkgY2xhc3NlcywKK2Z1bmN0aW9ucywgb3IgbWFjcm9zIHRoYXQgdmFyeSBvbmx5
IChvciBhbG1vc3Qgb25seSkgaW4gdGhlIG51bWJlciBvZgorYXJndW1lbnRzIHRoZXkgdGFrZS4g
SXQncyBhIGxvdCBvZiByZXBldGl0aXZlLCBtZWNoYW5pY2FsLCBhbmQKK2Vycm9yLXByb25lIHdv
cmsuCisKK1ZhcmlhZGljIHRlbXBsYXRlcyBhbmQgdmFyaWFkaWMgbWFjcm9zIGNhbiBhbGxldmlh
dGUgdGhlIHByb2JsZW0uCitIb3dldmVyLCB3aGlsZSBib3RoIGFyZSBiZWluZyBjb25zaWRlcmVk
IGJ5IHRoZSBDKysgY29tbWl0dGVlLCBuZWl0aGVyCitpcyBpbiB0aGUgc3RhbmRhcmQgeWV0IG9y
IHdpZGVseSBzdXBwb3J0ZWQgYnkgY29tcGlsZXJzLiAgVGh1cyB0aGV5CithcmUgb2Z0ZW4gbm90
IGEgZ29vZCBjaG9pY2UsIGVzcGVjaWFsbHkgd2hlbiB5b3VyIGNvZGUgbmVlZHMgdG8gYmUKK3Bv
cnRhYmxlLiBBbmQgdGhlaXIgY2FwYWJpbGl0aWVzIGFyZSBzdGlsbCBsaW1pdGVkLgorCitBcyBh
IHJlc3VsdCwgYXV0aG9ycyBvZiBzdWNoIGxpYnJhcmllcyBvZnRlbiBoYXZlIHRvIHdyaXRlIHNj
cmlwdHMgdG8KK2dlbmVyYXRlIHRoZWlyIGltcGxlbWVudGF0aW9uLiBIb3dldmVyLCBvdXIgZXhw
ZXJpZW5jZSBpcyB0aGF0IGl0J3MKK3RlZGlvdXMgdG8gd3JpdGUgc3VjaCBzY3JpcHRzLCB3aGlj
aCB0ZW5kIHRvIHJlZmxlY3QgdGhlIHN0cnVjdHVyZSBvZgordGhlIGdlbmVyYXRlZCBjb2RlIHBv
b3JseSBhbmQgYXJlIG9mdGVuIGhhcmQgdG8gcmVhZCBhbmQgZWRpdC4gRm9yCitleGFtcGxlLCBh
IHNtYWxsIGNoYW5nZSBuZWVkZWQgaW4gdGhlIGdlbmVyYXRlZCBjb2RlIG1heSByZXF1aXJlIHNv
bWUKK25vbi1pbnR1aXRpdmUsIG5vbi10cml2aWFsIGNoYW5nZXMgaW4gdGhlIHNjcmlwdC4gVGhp
cyBpcyBlc3BlY2lhbGx5CitwYWluZnVsIHdoZW4gZXhwZXJpbWVudGluZyB3aXRoIHRoZSBjb2Rl
LgorCisjIE91ciBTb2x1dGlvbiAjCisKK1B1bXAgKGZvciBQdW1wIGlzIFVzZWZ1bCBmb3IgTWV0
YSBQcm9ncmFtbWluZywgUHJldHR5IFVzZWZ1bCBmb3IgTWV0YQorUHJvZ3JhbW1pbmcsIG9yIFBy
YWN0aWNhbCBVdGlsaXR5IGZvciBNZXRhIFByb2dyYW1taW5nLCB3aGljaGV2ZXIgeW91CitwcmVm
ZXIpIGlzIGEgc2ltcGxlIG1ldGEtcHJvZ3JhbW1pbmcgdG9vbCBmb3IgQysrLiBUaGUgaWRlYSBp
cyB0aGF0IGEKK3Byb2dyYW1tZXIgd3JpdGVzIGEgYGZvby5wdW1wYCBmaWxlIHdoaWNoIGNvbnRh
aW5zIEMrKyBjb2RlIHBsdXMgbWV0YQorY29kZSB0aGF0IG1hbmlwdWxhdGVzIHRoZSBDKysgY29k
ZS4gVGhlIG1ldGEgY29kZSBjYW4gaGFuZGxlCitpdGVyYXRpb25zIG92ZXIgYSByYW5nZSwgbmVz
dGVkIGl0ZXJhdGlvbnMsIGxvY2FsIG1ldGEgdmFyaWFibGUKK2RlZmluaXRpb25zLCBzaW1wbGUg
YXJpdGhtZXRpYywgYW5kIGNvbmRpdGlvbmFsIGV4cHJlc3Npb25zLiBZb3UgY2FuCit2aWV3IGl0
IGFzIGEgc21hbGwgRG9tYWluLVNwZWNpZmljIExhbmd1YWdlLiBUaGUgbWV0YSBsYW5ndWFnZSBp
cworZGVzaWduZWQgdG8gYmUgbm9uLWludHJ1c2l2ZSAocy50LiBpdCB3b24ndCBjb25mdXNlIEVt
YWNzJyBDKysgbW9kZSwKK2ZvciBleGFtcGxlKSBhbmQgY29uY2lzZSwgbWFraW5nIFB1bXAgY29k
ZSBpbnR1aXRpdmUgYW5kIGVhc3kgdG8KK21haW50YWluLgorCisjIyBIaWdobGlnaHRzICMjCisK
KyAgKiBUaGUgaW1wbGVtZW50YXRpb24gaXMgaW4gYSBzaW5nbGUgUHl0aG9uIHNjcmlwdCBhbmQg
dGh1cyB1bHRyYSBwb3J0YWJsZTogbm8gYnVpbGQgb3IgaW5zdGFsbGF0aW9uIGlzIG5lZWRlZCBh
bmQgaXQgd29ya3MgY3Jvc3MgcGxhdGZvcm1zLgorICAqIFB1bXAgdHJpZXMgdG8gYmUgc21hcnQg
d2l0aCByZXNwZWN0IHRvIFtHb29nbGUncyBzdHlsZSBndWlkZV0oaHR0cDovL2NvZGUuZ29vZ2xl
LmNvbS9wL2dvb2dsZS1zdHlsZWd1aWRlLyk6IGl0IGJyZWFrcyBsb25nIGxpbmVzIChlYXN5IHRv
IGhhdmUgd2hlbiB0aGV5IGFyZSBnZW5lcmF0ZWQpIGF0IGFjY2VwdGFibGUgcGxhY2VzIHRvIGZp
dCB3aXRoaW4gODAgY29sdW1ucyBhbmQgaW5kZW50IHRoZSBjb250aW51YXRpb24gbGluZXMgY29y
cmVjdGx5LgorICAqIFRoZSBmb3JtYXQgaXMgaHVtYW4tcmVhZGFibGUgYW5kIG1vcmUgY29uY2lz
ZSB0aGFuIFhNTC4KKyAgKiBUaGUgZm9ybWF0IHdvcmtzIHJlbGF0aXZlbHkgd2VsbCB3aXRoIEVt
YWNzJyBDKysgbW9kZS4KKworIyMgRXhhbXBsZXMgIyMKKworVGhlIGZvbGxvd2luZyBQdW1wIGNv
ZGUgKHdoZXJlIG1ldGEga2V5d29yZHMgc3RhcnQgd2l0aCBgJGAsIGBbW2AgYW5kIGBdXWAgYXJl
IG1ldGEgYnJhY2tldHMsIGFuZCBgJCRgIHN0YXJ0cyBhIG1ldGEgY29tbWVudCB0aGF0IGVuZHMg
d2l0aCB0aGUgbGluZSk6CisKK2BgYAorJHZhciBuID0gMyAgICAgJCQgRGVmaW5lcyBhIG1ldGEg
dmFyaWFibGUgbi4KKyRyYW5nZSBpIDAuLm4gICQkIERlY2xhcmVzIHRoZSByYW5nZSBvZiBtZXRh
IGl0ZXJhdG9yIGkgKGluY2x1c2l2ZSkuCiskZm9yIGkgW1sKKyAgICAgICAgICAgICAgICQkIE1l
dGEgbG9vcC4KKy8vIEZvbyRpIGRvZXMgYmxhaCBmb3IgJGktYXJ5IHByZWRpY2F0ZXMuCiskcmFu
Z2UgaiAxLi5pCit0ZW1wbGF0ZSA8c2l6ZV90IE4gJGZvciBqIFtbLCB0eXBlbmFtZSBBJGpdXT4K
K2NsYXNzIEZvbyRpIHsKKyRpZiBpID09IDAgW1sKKyAgYmxhaCBhOworXV0gJGVsaWYgaSA8PSAy
IFtbCisgIGJsYWggYjsKK11dICRlbHNlIFtbCisgIGJsYWggYzsKK11dCit9OworCitdXQorYGBg
CisKK3dpbGwgYmUgdHJhbnNsYXRlZCBieSB0aGUgUHVtcCBjb21waWxlciB0bzoKKworYGBgCisv
LyBGb28wIGRvZXMgYmxhaCBmb3IgMC1hcnkgcHJlZGljYXRlcy4KK3RlbXBsYXRlIDxzaXplX3Qg
Tj4KK2NsYXNzIEZvbzAgeworICBibGFoIGE7Cit9OworCisvLyBGb28xIGRvZXMgYmxhaCBmb3Ig
MS1hcnkgcHJlZGljYXRlcy4KK3RlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgQTE+CitjbGFz
cyBGb28xIHsKKyAgYmxhaCBiOworfTsKKworLy8gRm9vMiBkb2VzIGJsYWggZm9yIDItYXJ5IHBy
ZWRpY2F0ZXMuCit0ZW1wbGF0ZSA8c2l6ZV90IE4sIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMj4K
K2NsYXNzIEZvbzIgeworICBibGFoIGI7Cit9OworCisvLyBGb28zIGRvZXMgYmxhaCBmb3IgMy1h
cnkgcHJlZGljYXRlcy4KK3RlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgQTEsIHR5cGVuYW1l
IEEyLCB0eXBlbmFtZSBBMz4KK2NsYXNzIEZvbzMgeworICBibGFoIGM7Cit9OworYGBgCisKK0lu
IGFub3RoZXIgZXhhbXBsZSwKKworYGBgCiskcmFuZ2UgaSAxLi5uCitGdW5jKCRmb3IgaSArIFtb
YSRpXV0pOworJCQgVGhlIHRleHQgYmV0d2VlbiBpIGFuZCBbWyBpcyB0aGUgc2VwYXJhdG9yIGJl
dHdlZW4gaXRlcmF0aW9ucy4KK2BgYAorCit3aWxsIGdlbmVyYXRlIG9uZSBvZiB0aGUgZm9sbG93
aW5nIGxpbmVzICh3aXRob3V0IHRoZSBjb21tZW50cyksIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUg
b2YgYG5gOgorCitgYGAKK0Z1bmMoKTsgICAgICAgICAgICAgIC8vIElmIG4gaXMgMC4KK0Z1bmMo
YTEpOyAgICAgICAgICAgIC8vIElmIG4gaXMgMS4KK0Z1bmMoYTEgKyBhMik7ICAgICAgIC8vIElm
IG4gaXMgMi4KK0Z1bmMoYTEgKyBhMiArIGEzKTsgIC8vIElmIG4gaXMgMy4KKy8vIEFuZCBzbyBv
bi4uLgorYGBgCisKKyMjIENvbnN0cnVjdHMgIyMKKworV2Ugc3VwcG9ydCB0aGUgZm9sbG93aW5n
IG1ldGEgcHJvZ3JhbW1pbmcgY29uc3RydWN0czoKKworfCBgJHZhciBpZCA9IGV4cGAgfCBEZWZp
bmVzIGEgbmFtZWQgY29uc3RhbnQgdmFsdWUuIGAkaWRgIGlzIHZhbGlkIHV0aWwgdGhlIGVuZCBv
ZiB0aGUgY3VycmVudCBtZXRhIGxleGljYWwgYmxvY2suIHwKK3w6LS0tLS0tLS0tLS0tLS0tLXw6
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Cit8IGAkcmFuZ2UgaWQgZXhw
Li5leHBgIHwgU2V0cyB0aGUgcmFuZ2Ugb2YgYW4gaXRlcmF0aW9uIHZhcmlhYmxlLCB3aGljaCBj
YW4gYmUgcmV1c2VkIGluIG11bHRpcGxlIGxvb3BzIGxhdGVyLiAgICAgICAgICB8Cit8IGAkZm9y
IGlkIHNlcCBbWyBjb2RlIF1dYCB8IEl0ZXJhdGlvbi4gVGhlIHJhbmdlIG9mIGBpZGAgbXVzdCBo
YXZlIGJlZW4gZGVmaW5lZCBlYXJsaWVyLiBgJGlkYCBpcyB2YWxpZCBpbiBgY29kZWAuICAgICAg
ICAgfAorfCBgJCgkKWAgICAgICAgICAgfCBHZW5lcmF0ZXMgYSBzaW5nbGUgYCRgIGNoYXJhY3Rl
ci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwKK3wgYCRpZGAgICAgICAgICAgIHwgVmFsdWUgb2YgdGhlIG5hbWVkIGNvbnN0YW50
IG9yIGl0ZXJhdGlvbiB2YXJpYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8Cit8IGAkKGV4cClgICAgICAgICB8IFZhbHVlIG9mIHRoZSBleHByZXNzaW9u
LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAorfCBgJGlmIGV4cCBbWyBjb2RlIF1dIGVsc2VfYnJhbmNoYCB8IENv
bmRpdGlvbmFsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgW1sgY29kZSBdXWAgICAg
fCBNZXRhIGxleGljYWwgYmxvY2suICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYGNwcF9jb2RlYCAg
ICAgIHwgUmF3IEMrKyBjb2RlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8IGAkJCBjb21t
ZW50YCAgICB8IE1ldGEgY29tbWVudC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorCisqKk5v
dGU6KiogVG8gZ2l2ZSB0aGUgdXNlciBzb21lIGZyZWVkb20gaW4gZm9ybWF0dGluZyB0aGUgUHVt
cCBzb3VyY2UKK2NvZGUsIFB1bXAgaWdub3JlcyBhIG5ldy1saW5lIGNoYXJhY3RlciBpZiBpdCdz
IHJpZ2h0IGFmdGVyIGAkZm9yIGZvb2AKK29yIG5leHQgdG8gYFtbYCBvciBgXV1gLiBXaXRob3V0
IHRoaXMgcnVsZSB5b3UnbGwgb2Z0ZW4gYmUgZm9yY2VkIHRvIHdyaXRlCit2ZXJ5IGxvbmcgbGlu
ZXMgdG8gZ2V0IHRoZSBkZXNpcmVkIG91dHB1dC4gVGhlcmVmb3JlIHNvbWV0aW1lcyB5b3UgbWF5
CituZWVkIHRvIGluc2VydCBhbiBleHRyYSBuZXctbGluZSBpbiBzdWNoIHBsYWNlcyBmb3IgYSBu
ZXctbGluZSB0byBzaG93Cit1cCBpbiB5b3VyIG91dHB1dC4KKworIyMgR3JhbW1hciAjIworCitg
YGAKK2NvZGUgOjo9IGF0b21pY19jb2RlKgorYXRvbWljX2NvZGUgOjo9ICR2YXIgaWQgPSBleHAK
KyAgICB8ICR2YXIgaWQgPSBbWyBjb2RlIF1dCisgICAgfCAkcmFuZ2UgaWQgZXhwLi5leHAKKyAg
ICB8ICRmb3IgaWQgc2VwIFtbIGNvZGUgXV0KKyAgICB8ICQoJCkKKyAgICB8ICRpZAorICAgIHwg
JChleHApCisgICAgfCAkaWYgZXhwIFtbIGNvZGUgXV0gZWxzZV9icmFuY2gKKyAgICB8IFtbIGNv
ZGUgXV0KKyAgICB8IGNwcF9jb2RlCitzZXAgOjo9IGNwcF9jb2RlIHwgZW1wdHlfc3RyaW5nCitl
bHNlX2JyYW5jaCA6Oj0gJGVsc2UgW1sgY29kZSBdXQorICAgIHwgJGVsaWYgZXhwIFtbIGNvZGUg
XV0gZWxzZV9icmFuY2gKKyAgICB8IGVtcHR5X3N0cmluZworZXhwIDo6PSBzaW1wbGVfZXhwcmVz
c2lvbl9pbl9QeXRob25fc3ludGF4CitgYGAKKworIyMgQ29kZSAjIworCitZb3UgY2FuIGZpbmQg
dGhlIHNvdXJjZSBjb2RlIG9mIFB1bXAgaW4gW3NjcmlwdHMvcHVtcC5weV0oLi4vc2NyaXB0cy9w
dW1wLnB5KS4gSXQgaXMgc3RpbGwKK3ZlcnkgdW5wb2xpc2hlZCBhbmQgbGFja3MgYXV0b21hdGVk
IHRlc3RzLCBhbHRob3VnaCBpdCBoYXMgYmVlbgorc3VjY2Vzc2Z1bGx5IHVzZWQgbWFueSB0aW1l
cy4gSWYgeW91IGZpbmQgYSBjaGFuY2UgdG8gdXNlIGl0IGluIHlvdXIKK3Byb2plY3QsIHBsZWFz
ZSBsZXQgdXMga25vdyB3aGF0IHlvdSB0aGluayEgIFdlIGFsc28gd2VsY29tZSBoZWxwIG9uCitp
bXByb3ZpbmcgUHVtcC4KKworIyMgUmVhbCBFeGFtcGxlcyAjIworCitZb3UgY2FuIGZpbmQgcmVh
bC13b3JsZCBhcHBsaWNhdGlvbnMgb2YgUHVtcCBpbiBbR29vZ2xlIFRlc3RdKGh0dHA6Ly93d3cu
Z29vZ2xlLmNvbS9jb2Rlc2VhcmNoP3E9ZmlsZSUzQVwucHVtcCUyNCtwYWNrYWdlJTNBaHR0cCUz
QSUyRiUyRmdvb2dsZXRlc3RcLmdvb2dsZWNvZGVcLmNvbSkgYW5kIFtHb29nbGUgTW9ja10oaHR0
cDovL3d3dy5nb29nbGUuY29tL2NvZGVzZWFyY2g/cT1maWxlJTNBXC5wdW1wJTI0K3BhY2thZ2Ul
M0FodHRwJTNBJTJGJTJGZ29vZ2xlbW9ja1wuZ29vZ2xlY29kZVwuY29tKS4gIFRoZSBzb3VyY2Ug
ZmlsZSBgZm9vLmgucHVtcGAgZ2VuZXJhdGVzIGBmb28uaGAuCisKKyMjIFRpcHMgIyMKKworICAq
IElmIGEgbWV0YSB2YXJpYWJsZSBpcyBmb2xsb3dlZCBieSBhIGxldHRlciBvciBkaWdpdCwgeW91
IGNhbiBzZXBhcmF0ZSB0aGVtIHVzaW5nIGBbW11dYCwgd2hpY2ggaW5zZXJ0cyBhbiBlbXB0eSBz
dHJpbmcuIEZvciBleGFtcGxlIGBGb28kaltbXV1IZWxwZXJgIGdlbmVyYXRlIGBGb28xSGVscGVy
YCB3aGVuIGBqYCBpcyAxLgorICAqIFRvIGF2b2lkIGV4dHJhLWxvbmcgUHVtcCBzb3VyY2UgbGlu
ZXMsIHlvdSBjYW4gYnJlYWsgYSBsaW5lIGFueXdoZXJlIHlvdSB3YW50IGJ5IGluc2VydGluZyBg
W1tdXWAgZm9sbG93ZWQgYnkgYSBuZXcgbGluZS4gU2luY2UgYW55IG5ldy1saW5lIGNoYXJhY3Rl
ciBuZXh0IHRvIGBbW2Agb3IgYF1dYCBpcyBpZ25vcmVkLCB0aGUgZ2VuZXJhdGVkIGNvZGUgd29u
J3QgY29udGFpbiB0aGlzIG5ldyBsaW5lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9W
MV82X1NhbXBsZXMubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1YxXzZfU2FtcGxlcy5tZApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mMjFkMjAwNTY3MzU0NTdmNmY0OWFlY2M2MTIxOWRhZDIyNjEyYmYxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9WMV82X1NhbXBsZXMubWQKQEAgLTAsMCArMSwxNCBA
QAorSWYgeW91J3JlIGxpa2UgdXMsIHlvdSdkIGxpa2UgdG8gbG9vayBhdCBzb21lIEdvb2dsZSBU
ZXN0IHNhbXBsZSBjb2RlLiAgVGhlCitbc2FtcGxlcyBmb2xkZXJdKC4uL3NhbXBsZXMpIGhhcyBh
IG51bWJlciBvZiB3ZWxsLWNvbW1lbnRlZCBzYW1wbGVzIHNob3dpbmcgaG93IHRvIHVzZSBhCit2
YXJpZXR5IG9mIEdvb2dsZSBUZXN0IGZlYXR1cmVzLgorCisgICogW1NhbXBsZSAjMV0oLi4vc2Ft
cGxlcy9zYW1wbGUxX3VuaXR0ZXN0LmNjKSBzaG93cyB0aGUgYmFzaWMgc3RlcHMgb2YgdXNpbmcg
R29vZ2xlIFRlc3QgdG8gdGVzdCBDKysgZnVuY3Rpb25zLgorICAqIFtTYW1wbGUgIzJdKC4uL3Nh
bXBsZXMvc2FtcGxlMl91bml0dGVzdC5jYykgc2hvd3MgYSBtb3JlIGNvbXBsZXggdW5pdCB0ZXN0
IGZvciBhIGNsYXNzIHdpdGggbXVsdGlwbGUgbWVtYmVyIGZ1bmN0aW9ucy4KKyAgKiBbU2FtcGxl
ICMzXSguLi9zYW1wbGVzL3NhbXBsZTNfdW5pdHRlc3QuY2MpIHVzZXMgYSB0ZXN0IGZpeHR1cmUu
CisgICogW1NhbXBsZSAjNF0oLi4vc2FtcGxlcy9zYW1wbGU0X3VuaXR0ZXN0LmNjKSBpcyBhbm90
aGVyIGJhc2ljIGV4YW1wbGUgb2YgdXNpbmcgR29vZ2xlIFRlc3QuCisgICogW1NhbXBsZSAjNV0o
Li4vc2FtcGxlcy9zYW1wbGU1X3VuaXR0ZXN0LmNjKSB0ZWFjaGVzIGhvdyB0byByZXVzZSBhIHRl
c3QgZml4dHVyZSBpbiBtdWx0aXBsZSB0ZXN0IGNhc2VzIGJ5IGRlcml2aW5nIHN1Yi1maXh0dXJl
cyBmcm9tIGl0LgorICAqIFtTYW1wbGUgIzZdKC4uL3NhbXBsZXMvc2FtcGxlNl91bml0dGVzdC5j
YykgZGVtb25zdHJhdGVzIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KKyAgKiBbU2FtcGxlICM3
XSguLi9zYW1wbGVzL3NhbXBsZTdfdW5pdHRlc3QuY2MpIHRlYWNoZXMgdGhlIGJhc2ljcyBvZiB2
YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgorICAqIFtTYW1wbGUgIzhdKC4uL3NhbXBsZXMvc2Ft
cGxlOF91bml0dGVzdC5jYykgc2hvd3MgdXNpbmcgYENvbWJpbmUoKWAgaW4gdmFsdWUtcGFyYW1l
dGVyaXplZCB0ZXN0cy4KKyAgKiBbU2FtcGxlICM5XSguLi9zYW1wbGVzL3NhbXBsZTlfdW5pdHRl
c3QuY2MpIHNob3dzIHVzZSBvZiB0aGUgbGlzdGVuZXIgQVBJIHRvIG1vZGlmeSBHb29nbGUgVGVz
dCdzIGNvbnNvbGUgb3V0cHV0IGFuZCB0aGUgdXNlIG9mIGl0cyByZWZsZWN0aW9uIEFQSSB0byBp
bnNwZWN0IHRlc3QgcmVzdWx0cy4KKyAgKiBbU2FtcGxlICMxMF0oLi4vc2FtcGxlcy9zYW1wbGUx
MF91bml0dGVzdC5jYykgc2hvd3MgdXNlIG9mIHRoZSBsaXN0ZW5lciBBUEkgdG8gaW1wbGVtZW50
IGEgcHJpbWl0aXZlIG1lbW9yeSBsZWFrIGNoZWNrZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVz
dC9kb2NzL1YxXzZfWGNvZGVHdWlkZS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfNl9YY29kZUd1
aWRlLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmJmMjRiZjUxYmZjNDU0MTJmNjU4YmRkZDUzYTMzMmUxNDlkNzcz
MDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1YxXzZfWGNvZGVHdWlkZS5t
ZApAQCAtMCwwICsxLDkzIEBACisKKworVGhpcyBndWlkZSB3aWxsIGV4cGxhaW4gaG93IHRvIHVz
ZSB0aGUgR29vZ2xlIFRlc3RpbmcgRnJhbWV3b3JrIGluIHlvdXIgWGNvZGUgcHJvamVjdHMgb24g
TWFjIE9TIFguIFRoaXMgdHV0b3JpYWwgYmVnaW5zIGJ5IHF1aWNrbHkgZXhwbGFpbmluZyB3aGF0
IHRvIGRvIGZvciBleHBlcmllbmNlZCB1c2Vycy4gQWZ0ZXIgdGhlIHF1aWNrIHN0YXJ0LCB0aGUg
Z3VpZGUgZ29lcyBwcm92aWRlcyBhZGRpdGlvbmFsIGV4cGxhbmF0aW9uIGFib3V0IGVhY2ggc3Rl
cC4KKworIyBRdWljayBTdGFydCAjCisKK0hlcmUgaXMgdGhlIHF1aWNrIGd1aWRlIGZvciB1c2lu
ZyBHb29nbGUgVGVzdCBpbiB5b3VyIFhjb2RlIHByb2plY3QuCisKKyAgMS4gRG93bmxvYWQgdGhl
IHNvdXJjZSBmcm9tIHRoZSBbd2Vic2l0ZV0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2ds
ZXRlc3QpIHVzaW5nIHRoaXMgY29tbWFuZDogYHN2biBjaGVja291dCBodHRwOi8vZ29vZ2xldGVz
dC5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmsvIGdvb2dsZXRlc3QtcmVhZC1vbmx5YAorICAxLiBP
cGVuIHVwIHRoZSBgZ3Rlc3QueGNvZGVwcm9qYCBpbiB0aGUgYGdvb2dsZXRlc3QtcmVhZC1vbmx5
L3hjb2RlL2AgZGlyZWN0b3J5IGFuZCBidWlsZCB0aGUgZ3Rlc3QuZnJhbWV3b3JrLgorICAxLiBD
cmVhdGUgYSBuZXcgIlNoZWxsIFRvb2wiIHRhcmdldCBpbiB5b3VyIFhjb2RlIHByb2plY3QgY2Fs
bGVkIHNvbWV0aGluZyBsaWtlICJVbml0VGVzdHMiCisgIDEuIEFkZCB0aGUgZ3Rlc3QuZnJhbWV3
b3JrIHRvIHlvdXIgcHJvamVjdCBhbmQgYWRkIGl0IHRvIHRoZSAiTGluayBCaW5hcnkgd2l0aCBM
aWJyYXJpZXMiIGJ1aWxkIHBoYXNlIG9mICJVbml0VGVzdHMiCisgIDEuIEFkZCB5b3VyIHVuaXQg
dGVzdCBzb3VyY2UgY29kZSB0byB0aGUgIkNvbXBpbGUgU291cmNlcyIgYnVpbGQgcGhhc2Ugb2Yg
IlVuaXRUZXN0cyIKKyAgMS4gRWRpdCB0aGUgIlVuaXRUZXN0cyIgZXhlY3V0YWJsZSBhbmQgYWRk
IGFuIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWVkICJEWUxEXF9GUkFNRVdPUktcX1BBVEgiIHdp
dGggYSB2YWx1ZSBlcXVhbCB0byB0aGUgcGF0aCB0byB0aGUgZnJhbWV3b3JrIGNvbnRhaW5pbmcg
dGhlIGd0ZXN0LmZyYW1ld29yayByZWxhdGl2ZSB0byB0aGUgY29tcGlsZWQgZXhlY3V0YWJsZS4K
KyAgMS4gQnVpbGQgYW5kIEdvCisKK1RoZSBmb2xsb3dpbmcgc2VjdGlvbnMgZnVydGhlciBleHBs
YWluIGVhY2ggb2YgdGhlIHN0ZXBzIGxpc3RlZCBhYm92ZSBpbiBkZXB0aCwgZGVzY3JpYmluZyBp
biBtb3JlIGRldGFpbCBob3cgdG8gY29tcGxldGUgaXQgaW5jbHVkaW5nIHNvbWUgdmFyaWF0aW9u
cy4KKworIyBHZXQgdGhlIFNvdXJjZSAjCisKK0N1cnJlbnRseSwgdGhlIGd0ZXN0LmZyYW1ld29y
ayBkaXNjdXNzZWQgaGVyZSBpc24ndCBhdmFpbGFibGUgaW4gYSB0YWdnZWQgcmVsZWFzZSBvZiBH
b29nbGUgVGVzdCwgaXQgaXMgb25seSBhdmFpbGFibGUgaW4gdGhlIHRydW5rLiBBcyBleHBsYWlu
ZWQgYXQgdGhlIEdvb2dsZSBUZXN0IFtzaXRlXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29v
Z2xldGVzdC9zb3VyY2UvY2hlY2tvdXQiPnN2biksIHlvdSBjYW4gZ2V0IHRoZSBjb2RlIGZyb20g
YW5vbnltb3VzIFNWTiB3aXRoIHRoaXMgY29tbWFuZDoKKworYGBgCitzdm4gY2hlY2tvdXQgaHR0
cDovL2dvb2dsZXRlc3QuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rLyBnb29nbGV0ZXN0LXJlYWQt
b25seQorYGBgCisKK0FsdGVybmF0aXZlbHksIGlmIHlvdSBhcmUgd29ya2luZyB3aXRoIFN1YnZl
cnNpb24gaW4geW91ciBvd24gY29kZSBiYXNlLCB5b3UgY2FuIGFkZCBHb29nbGUgVGVzdCBhcyBh
biBleHRlcm5hbCBkZXBlbmRlbmN5IHRvIHlvdXIgb3duIFN1YnZlcnNpb24gcmVwb3NpdG9yeS4g
QnkgZm9sbG93aW5nIHRoaXMgYXBwcm9hY2gsIGV2ZXJ5b25lIHRoYXQgY2hlY2tzIG91dCB5b3Vy
IHN2biByZXBvc2l0b3J5IHdpbGwgYWxzbyByZWNlaXZlIGEgY29weSBvZiBHb29nbGUgVGVzdCAo
YSBzcGVjaWZpYyB2ZXJzaW9uLCBpZiB5b3Ugd2lzaCkgd2l0aG91dCBoYXZpbmcgdG8gY2hlY2sg
aXQgb3V0IGV4cGxpY2l0bHkuIFRoaXMgbWFrZXMgdGhlIHNldCB1cCBvZiB5b3VyIHByb2plY3Qg
c2ltcGxlciBhbmQgcmVkdWNlcyB0aGUgY29waWVkIGNvZGUgaW4gdGhlIHJlcG9zaXRvcnkuCisK
K1RvIHVzZSBgc3ZuOmV4dGVybmFsc2AsIGRlY2lkZSB3aGVyZSB5b3Ugd291bGQgbGlrZSB0byBo
YXZlIHRoZSBleHRlcm5hbCBzb3VyY2UgcmVzaWRlLiBZb3UgbWlnaHQgY2hvb3NlIHRvIHB1dCB0
aGUgZXh0ZXJuYWwgc291cmNlIGluc2lkZSB0aGUgdHJ1bmssIGJlY2F1c2UgeW91IHdhbnQgaXQg
dG8gYmUgcGFydCBvZiB0aGUgYnJhbmNoIHdoZW4geW91IG1ha2UgYSByZWxlYXNlLiBIb3dldmVy
LCBrZWVwaW5nIGl0IG91dHNpZGUgdGhlIHRydW5rIGluIGEgdmVyc2lvbi10YWdnZWQgZGlyZWN0
b3J5IGNhbGxlZCBzb21ldGhpbmcgbGlrZSBgdGhpcmQtcGFydHkvZ29vZ2xldGVzdC8xLjAuMWAs
IGlzIGFub3RoZXIgb3B0aW9uLiBPbmNlIHRoZSBsb2NhdGlvbiBpcyBlc3RhYmxpc2hlZCwgdXNl
IGBzdm4gcHJvcGVkaXQgc3ZuOmV4dGVybmFscyBfZGlyZWN0b3J5X2AgdG8gc2V0IHRoZSBzdm46
ZXh0ZXJuYWxzIHByb3BlcnR5IG9uIGEgZGlyZWN0b3J5IGluIHlvdXIgcmVwb3NpdG9yeS4gVGhp
cyBkaXJlY3Rvcnkgd29uJ3QgY29udGFpbiB0aGUgY29kZSwgYnV0IGJlIGl0cyB2ZXJzaW9uZWQg
cGFyZW50IGRpcmVjdG9yeS4KKworVGhlIGNvbW1hbmQgYHN2biBwcm9wZWRpdGAgd2lsbCBicmlu
ZyB1cCB5b3VyIFN1YnZlcnNpb24gZWRpdG9yLCBtYWtpbmcgZWRpdGluZyB0aGUgbG9uZywgKHBv
dGVudGlhbGx5IG11bHRpLWxpbmUpIHByb3BlcnR5IHNpbXBsZXIuIFRoaXMgc2FtZSBtZXRob2Qg
Y2FuIGJlIHVzZWQgdG8gY2hlY2sgb3V0IGEgdGFnZ2VkIGJyYW5jaCwgYnkgdXNpbmcgdGhlIGFw
cHJvcHJpYXRlIFVSTCAoZS5nLiBgaHR0cDovL2dvb2dsZXRlc3QuZ29vZ2xlY29kZS5jb20vc3Zu
L3RhZ3MvcmVsZWFzZS0xLjAuMWApLiBBZGRpdGlvbmFsbHksIHRoZSBzdm46ZXh0ZXJuYWxzIHBy
b3BlcnR5IGFsbG93cyB0aGUgc3BlY2lmaWNhdGlvbiBvZiBhIHBhcnRpY3VsYXIgcmV2aXNpb24g
b2YgdGhlIHRydW5rIHdpdGggdGhlIGAtcl8jI19gIG9wdGlvbiAoZS5nLiBgZXh0ZXJuYWxzL3Ny
Yy9nb29nbGV0ZXN0IC1yNjAgaHR0cDovL2dvb2dsZXRlc3QuZ29vZ2xlY29kZS5jb20vc3ZuL3Ry
dW5rYCkuCisKK0hlcmUgaXMgYW4gZXhhbXBsZSBvZiB1c2luZyB0aGUgc3ZuOmV4dGVybmFscyBw
cm9wZXJ0aWVzIG9uIGEgdHJ1bmsgKHJlYWQgdmlhIGBzdm4gcHJvcGdldGApIG9mIGEgcHJvamVj
dC4gVGhpcyB2YWx1ZSBjaGVja3Mgb3V0IGEgY29weSBvZiBHb29nbGUgVGVzdCBpbnRvIHRoZSBg
dHJ1bmsvZXh0ZXJuYWxzL3NyYy9nb29nbGV0ZXN0L2AgZGlyZWN0b3J5LgorCitgYGAKK1tDb21w
dXRlcjpzdm5dIHVzZXIkIHN2biBwcm9wZ2V0IHN2bjpleHRlcm5hbHMgdHJ1bmsKK2V4dGVybmFs
cy9zcmMvZ29vZ2xldGVzdCBodHRwOi8vZ29vZ2xldGVzdC5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1
bmsKK2BgYAorCisjIEFkZCB0aGUgRnJhbWV3b3JrIHRvIFlvdXIgUHJvamVjdCAjCisKK1RoZSBu
ZXh0IHN0ZXAgaXMgdG8gYnVpbGQgYW5kIGFkZCB0aGUgZ3Rlc3QuZnJhbWV3b3JrIHRvIHlvdXIg
b3duIHByb2plY3QuIFRoaXMgZ3VpZGUgZGVzY3JpYmVzIHR3byBjb21tb24gd2F5cyBiZWxvdy4K
KworICAqICoqT3B0aW9uIDEqKiAtLS0gVGhlIHNpbXBsZXN0IHdheSB0byBhZGQgR29vZ2xlIFRl
c3QgdG8geW91ciBvd24gcHJvamVjdCwgaXMgdG8gb3BlbiBndGVzdC54Y29kZXByb2ogKGZvdW5k
IGluIHRoZSB4Y29kZS8gZGlyZWN0b3J5IG9mIHRoZSBHb29nbGUgVGVzdCB0cnVuaykgYW5kIGJ1
aWxkIHRoZSBmcmFtZXdvcmsgbWFudWFsbHkuIFRoZW4sIGFkZCB0aGUgYnVpbHQgZnJhbWV3b3Jr
IGludG8geW91ciBwcm9qZWN0IHVzaW5nIHRoZSAiQWRkLT5FeGlzdGluZyBGcmFtZXdvcmsuLi4i
IGZyb20gdGhlIGNvbnRleHQgbWVudSBvciAiUHJvamVjdC0+QWRkLi4uIiBmcm9tIHRoZSBtYWlu
IG1lbnUuIFRoZSBndGVzdC5mcmFtZXdvcmsgaXMgcmVsb2NhdGFibGUgYW5kIGNvbnRhaW5zIHRo
ZSBoZWFkZXJzIGFuZCBvYmplY3QgY29kZSB0aGF0IHlvdSdsbCBuZWVkIHRvIG1ha2UgdGVzdHMu
IFRoaXMgbWV0aG9kIHJlcXVpcmVzIHJlYnVpbGRpbmcgZXZlcnkgdGltZSB5b3UgdXBncmFkZSBH
b29nbGUgVGVzdCBpbiB5b3VyIHByb2plY3QuCisgICogKipPcHRpb24gMioqIC0tLSBJZiB5b3Ug
YXJlIGdvaW5nIHRvIGJlIGxpdmluZyBvZmYgdGhlIHRydW5rIG9mIEdvb2dsZSBUZXN0LCBpbmNv
cnBvcmF0aW5nIGl0cyBsYXRlc3QgZmVhdHVyZXMgaW50byB5b3VyIHVuaXQgdGVzdHMgKG9yIGFy
ZSBhIEdvb2dsZSBUZXN0IGRldmVsb3BlciB5b3Vyc2VsZikuIFlvdSdsbCB3YW50IHRvIHJlYnVp
bGQgdGhlIGZyYW1ld29yayBldmVyeSB0aW1lIHRoZSBzb3VyY2UgdXBkYXRlcy4gdG8gZG8gdGhp
cywgeW91J2xsIG5lZWQgdG8gYWRkIHRoZSBndGVzdC54Y29kZXByb2ogZmlsZSwgbm90IHRoZSBm
cmFtZXdvcmsgaXRzZWxmLCB0byB5b3VyIG93biBYY29kZSBwcm9qZWN0LiBUaGVuLCBmcm9tIHRo
ZSBidWlsZCBwcm9kdWN0cyB0aGF0IGFyZSByZXZlYWxlZCBieSB0aGUgcHJvamVjdCdzIGRpc2Ns
b3N1cmUgdHJpYW5nbGUsIHlvdSBjYW4gZmluZCB0aGUgZ3Rlc3QuZnJhbWV3b3JrLCB3aGljaCBj
YW4gYmUgYWRkZWQgdG8geW91ciB0YXJnZXRzIChkaXNjdXNzZWQgYmVsb3cpLgorCisjIE1ha2Ug
YSBUZXN0IFRhcmdldCAjCisKK1RvIHN0YXJ0IHdyaXRpbmcgdGVzdHMsIG1ha2UgYSBuZXcgIlNo
ZWxsIFRvb2wiIHRhcmdldC4gVGhpcyB0YXJnZXQgdGVtcGxhdGUgaXMgYXZhaWxhYmxlIHVuZGVy
IEJTRCwgQ29jb2EsIG9yIENhcmJvbi4gQWRkIHlvdXIgdW5pdCB0ZXN0IHNvdXJjZSBjb2RlIHRv
IHRoZSAiQ29tcGlsZSBTb3VyY2VzIiBidWlsZCBwaGFzZSBvZiB0aGUgdGFyZ2V0LgorCitOZXh0
LCB5b3UnbGwgd2FudCB0byBhZGQgZ3Rlc3QuZnJhbWV3b3JrIGluIHR3byBkaWZmZXJlbnQgd2F5
cywgZGVwZW5kaW5nIHVwb24gd2hpY2ggb3B0aW9uIHlvdSBjaG9zZSBhYm92ZS4KKworICAqICoq
T3B0aW9uIDEqKiAtLS0gRHVyaW5nIGNvbXBpbGF0aW9uLCBYY29kZSB3aWxsIG5lZWQgdG8ga25v
dyB0aGF0IHlvdSBhcmUgbGlua2luZyBhZ2FpbnN0IHRoZSBndGVzdC5mcmFtZXdvcmsuIEFkZCB0
aGUgZ3Rlc3QuZnJhbWV3b3JrIHRvIHRoZSAiTGluayBCaW5hcnkgd2l0aCBMaWJyYXJpZXMiIGJ1
aWxkIHBoYXNlIG9mIHlvdXIgdGVzdCB0YXJnZXQuIFRoaXMgd2lsbCBpbmNsdWRlIHRoZSBHb29n
bGUgVGVzdCBoZWFkZXJzIGluIHlvdXIgaGVhZGVyIHNlYXJjaCBwYXRoLCBhbmQgd2lsbCB0ZWxs
IHRoZSBsaW5rZXIgd2hlcmUgdG8gZmluZCB0aGUgbGlicmFyeS4KKyAgKiAqKk9wdGlvbiAyKiog
LS0tIElmIHlvdXIgd29ya2luZyBvdXQgb2YgdGhlIHRydW5rLCB5b3UnbGwgYWxzbyB3YW50IHRv
IGFkZCBndGVzdC5mcmFtZXdvcmsgdG8geW91ciAiTGluayBCaW5hcnkgd2l0aCBMaWJyYXJpZXMi
IGJ1aWxkIHBoYXNlIG9mIHlvdXIgdGVzdCB0YXJnZXQuIEluIGFkZGl0aW9uLCB5b3UnbGwgIHdh
bnQgdG8gYWRkIHRoZSBndGVzdC5mcmFtZXdvcmsgYXMgYSBkZXBlbmRlbmN5IHRvIHlvdXIgdW5p
dCB0ZXN0IHRhcmdldC4gVGhpcyB3YXksIFhjb2RlIHdpbGwgbWFrZSBzdXJlIHRoYXQgZ3Rlc3Qu
ZnJhbWV3b3JrIGlzIHVwIHRvIGRhdGUsIGV2ZXJ5IHRpbWUgeW91ciBidWlsZCB5b3VyIHRhcmdl
dC4gRmluYWxseSwgaWYgeW91IGRvbid0IHNoYXJlIGJ1aWxkIGRpcmVjdG9yaWVzIHdpdGggR29v
Z2xlIFRlc3QsIHlvdSdsbCBoYXZlIHRvIGNvcHkgdGhlIGd0ZXN0LmZyYW1ld29yayBpbnRvIHlv
dXIgb3duIGJ1aWxkIHByb2R1Y3RzIGRpcmVjdG9yeSB1c2luZyBhICJSdW4gU2NyaXB0IiBidWls
ZCBwaGFzZS4KKworIyBTZXQgVXAgdGhlIEV4ZWN1dGFibGUgUnVuIEVudmlyb25tZW50ICMKKwor
U2luY2UgdGhlIHVuaXQgdGVzdCBleGVjdXRhYmxlIGlzIGEgc2hlbGwgdG9vbCwgaXQgZG9lc24n
dCBoYXZlIGEgYnVuZGxlIHdpdGggYSBgQ29udGVudHMvRnJhbWV3b3Jrc2AgZGlyZWN0b3J5LCBp
biB3aGljaCB0byBwbGFjZSBndGVzdC5mcmFtZXdvcmsuIEluc3RlYWQsIHRoZSBkeW5hbWljIGxp
bmtlciBtdXN0IGJlIHRvbGQgYXQgcnVudGltZSB0byBzZWFyY2ggZm9yIHRoZSBmcmFtZXdvcmsg
aW4gYW5vdGhlciBsb2NhdGlvbi4gVGhpcyBjYW4gYmUgYWNjb21wbGlzaGVkIGJ5IHNldHRpbmcg
dGhlICJEWUxEXF9GUkFNRVdPUktcX1BBVEgiIGVudmlyb25tZW50IHZhcmlhYmxlIGluIHRoZSAi
RWRpdCBBY3RpdmUgRXhlY3V0YWJsZSAuLi4iIEFyZ3VtZW50cyB0YWIsIHVuZGVyICJWYXJpYWJs
ZXMgdG8gYmUgc2V0IGluIHRoZSBlbnZpcm9ubWVudDoiLiBUaGUgcGF0aCBmb3IgdGhpcyB2YWx1
ZSBpcyB0aGUgcGF0aCAocmVsYXRpdmUgb3IgYWJzb2x1dGUpIG9mIHRoZSBkaXJlY3RvcnkgY29u
dGFpbmluZyB0aGUgZ3Rlc3QuZnJhbWV3b3JrLgorCitJZiB5b3UgaGF2ZW4ndCBzZXQgdXAgdGhl
IERZTERcX0ZSQU1FV09SS1xfUEFUSCwgY29ycmVjdGx5LCB5b3UgbWlnaHQgZ2V0IGEgbWVzc2Fn
ZSBsaWtlIHRoaXM6CisKK2BgYAorW1Nlc3Npb24gc3RhcnRlZCBhdCAyMDA4LTA4LTE1IDA2OjIz
OjU3IC0wNjAwLl0KKyAgZHlsZDogTGlicmFyeSBub3QgbG9hZGVkOiBAbG9hZGVyX3BhdGgvLi4v
RnJhbWV3b3Jrcy9ndGVzdC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9ndGVzdAorICAgIFJlZmVyZW5j
ZWQgZnJvbTogL1VzZXJzL3VzZXJuYW1lL0RvY3VtZW50cy9TYW5kYm94L2d0ZXN0U2FtcGxlL2J1
aWxkL0RlYnVnL1dpZGdldEZyYW1ld29ya1Rlc3QKKyAgICBSZWFzb246IGltYWdlIG5vdCBmb3Vu
ZAorYGBgCisKK1RvIGNvcnJlY3QgdGhpcyBwcm9ibGVtLCBnb3QgdG8gdGhlIGRpcmVjdG9yeSBj
b250YWluaW5nIHRoZSBleGVjdXRhYmxlIG5hbWVkIGluICJSZWZlcmVuY2VkIGZyb206IiB2YWx1
ZSBpbiB0aGUgZXJyb3IgbWVzc2FnZSBhYm92ZS4gVGhlbiwgd2l0aCB0aGUgdGVybWluYWwgaW4g
dGhpcyBsb2NhdGlvbiwgZmluZCB0aGUgcmVsYXRpdmUgcGF0aCB0byB0aGUgZGlyZWN0b3J5IGNv
bnRhaW5pbmcgdGhlIGd0ZXN0LmZyYW1ld29yay4gVGhhdCBpcyB0aGUgdmFsdWUgeW91J2xsIG5l
ZWQgdG8gc2V0IGFzIHRoZSBEWUxEXF9GUkFNRVdPUktcX1BBVEguCisKKyMgQnVpbGQgYW5kIEdv
ICMKKworTm93LCB3aGVuIHlvdSBjbGljayAiQnVpbGQgYW5kIEdvIiwgdGhlIHRlc3Qgd2lsbCBi
ZSBleGVjdXRlZC4gRHVtcGluZyBvdXQgc29tZXRoaW5nIGxpa2UgdGhpczoKKworYGBgCitbU2Vz
c2lvbiBzdGFydGVkIGF0IDIwMDgtMDgtMDYgMDY6MzY6MTMgLTA2MDAuXQorWz09PT09PT09PT1d
IFJ1bm5pbmcgMiB0ZXN0cyBmcm9tIDEgdGVzdCBjYXNlLgorWy0tLS0tLS0tLS1dIEdsb2JhbCB0
ZXN0IGVudmlyb25tZW50IHNldC11cC4KK1stLS0tLS0tLS0tXSAyIHRlc3RzIGZyb20gV2lkZ2V0
SW5pdGlhbGl6ZXJUZXN0CitbIFJVTiAgICAgIF0gV2lkZ2V0SW5pdGlhbGl6ZXJUZXN0LlRlc3RD
b25zdHJ1Y3RvcgorWyAgICAgICBPSyBdIFdpZGdldEluaXRpYWxpemVyVGVzdC5UZXN0Q29uc3Ry
dWN0b3IKK1sgUlVOICAgICAgXSBXaWRnZXRJbml0aWFsaXplclRlc3QuVGVzdENvbnZlcnNpb24K
K1sgICAgICAgT0sgXSBXaWRnZXRJbml0aWFsaXplclRlc3QuVGVzdENvbnZlcnNpb24KK1stLS0t
LS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCB0ZWFyLWRvd24KK1s9PT09PT09PT09XSAy
IHRlc3RzIGZyb20gMSB0ZXN0IGNhc2UgcmFuLgorWyAgUEFTU0VEICBdIDIgdGVzdHMuCisKK1Ro
ZSBEZWJ1Z2dlciBoYXMgZXhpdGVkIHdpdGggc3RhdHVzIDAuICAKK2BgYAorCisjIFN1bW1hcnkg
IworCitVbml0IHRlc3RpbmcgaXMgYSB2YWx1YWJsZSB3YXkgdG8gZW5zdXJlIHlvdXIgZGF0YSBt
b2RlbCBzdGF5cyB2YWxpZCBldmVuIGR1cmluZyByYXBpZCBkZXZlbG9wbWVudCBvciByZWZhY3Rv
cmluZy4gVGhlIEdvb2dsZSBUZXN0aW5nIEZyYW1ld29yayBpcyBhIGdyZWF0IHVuaXQgdGVzdGlu
ZyBmcmFtZXdvcmsgZm9yIEMgYW5kIEMrKyB3aGljaCBpbnRlZ3JhdGVzIHdlbGwgd2l0aCBhbiBY
Y29kZSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1YxXzdfQWR2YW5jZWRHdWlkZS5tZCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGV0ZXN0L2RvY3MvVjFfN19BZHZhbmNlZEd1aWRlLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkNGFmOGYz
NjZhYTZhY2E4MTQ0MGRiZDY2NTliNTRiZWFlMzE5OWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xldGVzdC9kb2NzL1YxXzdfQWR2YW5jZWRHdWlkZS5tZApAQCAtMCwwICsxLDIxODEgQEAKKwor
CitOb3cgdGhhdCB5b3UgaGF2ZSByZWFkIFtQcmltZXJdKFYxXzdfUHJpbWVyLm1kKSBhbmQgbGVh
cm5lZCBob3cgdG8gd3JpdGUgdGVzdHMKK3VzaW5nIEdvb2dsZSBUZXN0LCBpdCdzIHRpbWUgdG8g
bGVhcm4gc29tZSBuZXcgdHJpY2tzLiBUaGlzIGRvY3VtZW50Cit3aWxsIHNob3cgeW91IG1vcmUg
YXNzZXJ0aW9ucyBhcyB3ZWxsIGFzIGhvdyB0byBjb25zdHJ1Y3QgY29tcGxleAorZmFpbHVyZSBt
ZXNzYWdlcywgcHJvcGFnYXRlIGZhdGFsIGZhaWx1cmVzLCByZXVzZSBhbmQgc3BlZWQgdXAgeW91
cgordGVzdCBmaXh0dXJlcywgYW5kIHVzZSB2YXJpb3VzIGZsYWdzIHdpdGggeW91ciB0ZXN0cy4K
KworIyBNb3JlIEFzc2VydGlvbnMgIworCitUaGlzIHNlY3Rpb24gY292ZXJzIHNvbWUgbGVzcyBm
cmVxdWVudGx5IHVzZWQsIGJ1dCBzdGlsbCBzaWduaWZpY2FudCwKK2Fzc2VydGlvbnMuCisKKyMj
IEV4cGxpY2l0IFN1Y2Nlc3MgYW5kIEZhaWx1cmUgIyMKKworVGhlc2UgdGhyZWUgYXNzZXJ0aW9u
cyBkbyBub3QgYWN0dWFsbHkgdGVzdCBhIHZhbHVlIG9yIGV4cHJlc3Npb24uIEluc3RlYWQsCit0
aGV5IGdlbmVyYXRlIGEgc3VjY2VzcyBvciBmYWlsdXJlIGRpcmVjdGx5LiBMaWtlIHRoZSBtYWNy
b3MgdGhhdCBhY3R1YWxseQorcGVyZm9ybSBhIHRlc3QsIHlvdSBtYXkgc3RyZWFtIGEgY3VzdG9t
IGZhaWx1cmUgbWVzc2FnZSBpbnRvIHRoZSB0aGVtLgorCit8IGBTVUNDRUVEKCk7YCB8Cit8Oi0t
LS0tLS0tLS0tLS18CisKK0dlbmVyYXRlcyBhIHN1Y2Nlc3MuIFRoaXMgZG9lcyBOT1QgbWFrZSB0
aGUgb3ZlcmFsbCB0ZXN0IHN1Y2NlZWQuIEEgdGVzdCBpcworY29uc2lkZXJlZCBzdWNjZXNzZnVs
IG9ubHkgaWYgbm9uZSBvZiBpdHMgYXNzZXJ0aW9ucyBmYWlsIGR1cmluZyBpdHMgZXhlY3V0aW9u
LgorCitOb3RlOiBgU1VDQ0VFRCgpYCBpcyBwdXJlbHkgZG9jdW1lbnRhcnkgYW5kIGN1cnJlbnRs
eSBkb2Vzbid0IGdlbmVyYXRlIGFueQordXNlci12aXNpYmxlIG91dHB1dC4gSG93ZXZlciwgd2Ug
bWF5IGFkZCBgU1VDQ0VFRCgpYCBtZXNzYWdlcyB0byBHb29nbGUgVGVzdCdzCitvdXRwdXQgaW4g
dGhlIGZ1dHVyZS4KKworfCBgRkFJTCgpO2AgIHwgYEFERF9GQUlMVVJFKCk7YCB8IGBBRERfRkFJ
TFVSRV9BVCgiYF9maWxlXF9wYXRoX2AiLCBgX2xpbmVcX251bWJlcl9gKTtgIHwKK3w6LS0tLS0t
LS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisKK2BGQUlMKClgIGdlbmVyYXRlcyBhIGZhdGFsIGZh
aWx1cmUsIHdoaWxlIGBBRERfRkFJTFVSRSgpYCBhbmQgYEFERF9GQUlMVVJFX0FUKClgIGdlbmVy
YXRlIGEgbm9uZmF0YWwKK2ZhaWx1cmUuIFRoZXNlIGFyZSB1c2VmdWwgd2hlbiBjb250cm9sIGZs
b3csIHJhdGhlciB0aGFuIGEgQm9vbGVhbiBleHByZXNzaW9uLAorZGV0ZXJlbWluZXMgdGhlIHRl
c3QncyBzdWNjZXNzIG9yIGZhaWx1cmUuIEZvciBleGFtcGxlLCB5b3UgbWlnaHQgd2FudCB0byB3
cml0ZQorc29tZXRoaW5nIGxpa2U6CisKK2BgYAorc3dpdGNoKGV4cHJlc3Npb24pIHsKKyAgY2Fz
ZSAxOiAuLi4gc29tZSBjaGVja3MgLi4uCisgIGNhc2UgMjogLi4uIHNvbWUgb3RoZXIgY2hlY2tz
CisgIC4uLgorICBkZWZhdWx0OiBGQUlMKCkgPDwgIldlIHNob3VsZG4ndCBnZXQgaGVyZS4iOwor
fQorYGBgCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyBFeGNl
cHRpb24gQXNzZXJ0aW9ucyAjIworCitUaGVzZSBhcmUgZm9yIHZlcmlmeWluZyB0aGF0IGEgcGll
Y2Ugb2YgY29kZSB0aHJvd3MgKG9yIGRvZXMgbm90Cit0aHJvdykgYW4gZXhjZXB0aW9uIG9mIHRo
ZSBnaXZlbiB0eXBlOgorCit8ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFzc2Vy
dGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAorfCBgQVNTRVJUX1RIUk9XKGBfc3RhdGVt
ZW50XywgX2V4Y2VwdGlvblxfdHlwZV9gKTtgICB8IGBFWFBFQ1RfVEhST1coYF9zdGF0ZW1lbnRf
LCBfZXhjZXB0aW9uXF90eXBlX2ApO2AgIHwgX3N0YXRlbWVudF8gdGhyb3dzIGFuIGV4Y2VwdGlv
biBvZiB0aGUgZ2l2ZW4gdHlwZSAgfAorfCBgQVNTRVJUX0FOWV9USFJPVyhgX3N0YXRlbWVudF9g
KTtgICAgICAgICAgICAgICAgIHwgYEVYUEVDVF9BTllfVEhST1coYF9zdGF0ZW1lbnRfYCk7YCAg
ICAgICAgICAgICAgICB8IF9zdGF0ZW1lbnRfIHRocm93cyBhbiBleGNlcHRpb24gb2YgYW55IHR5
cGUgICAgICAgIHwKK3wgYEFTU0VSVF9OT19USFJPVyhgX3N0YXRlbWVudF9gKTtgICAgICAgICAg
ICAgICAgICB8IGBFWFBFQ1RfTk9fVEhST1coYF9zdGF0ZW1lbnRfYCk7YCAgICAgICAgICAgICAg
ICAgfCBfc3RhdGVtZW50XyBkb2Vzbid0IHRocm93IGFueSBleGNlcHRpb24gICAgICAgICAgICB8
CisKK0V4YW1wbGVzOgorCitgYGAKK0FTU0VSVF9USFJPVyhGb28oNSksIGJhcl9leGNlcHRpb24p
OworCitFWFBFQ1RfTk9fVEhST1coeworICBpbnQgbiA9IDU7CisgIEJhcigmbik7Cit9KTsKK2Bg
YAorCitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYzsgc2luY2UgdmVyc2lvbiAx
LjEuMC4KKworIyMgUHJlZGljYXRlIEFzc2VydGlvbnMgZm9yIEJldHRlciBFcnJvciBNZXNzYWdl
cyAjIworCitFdmVuIHRob3VnaCBHb29nbGUgVGVzdCBoYXMgYSByaWNoIHNldCBvZiBhc3NlcnRp
b25zLCB0aGV5IGNhbiBuZXZlciBiZQorY29tcGxldGUsIGFzIGl0J3MgaW1wb3NzaWJsZSAobm9y
IGEgZ29vZCBpZGVhKSB0byBhbnRpY2lwYXRlIGFsbCB0aGUgc2NlbmFyaW9zCithIHVzZXIgbWln
aHQgcnVuIGludG8uIFRoZXJlZm9yZSwgc29tZXRpbWVzIGEgdXNlciBoYXMgdG8gdXNlIGBFWFBF
Q1RfVFJVRSgpYAordG8gY2hlY2sgYSBjb21wbGV4IGV4cHJlc3Npb24sIGZvciBsYWNrIG9mIGEg
YmV0dGVyIG1hY3JvLiBUaGlzIGhhcyB0aGUgcHJvYmxlbQorb2Ygbm90IHNob3dpbmcgeW91IHRo
ZSB2YWx1ZXMgb2YgdGhlIHBhcnRzIG9mIHRoZSBleHByZXNzaW9uLCBtYWtpbmcgaXQgaGFyZCB0
bwordW5kZXJzdGFuZCB3aGF0IHdlbnQgd3JvbmcuIEFzIGEgd29ya2Fyb3VuZCwgc29tZSB1c2Vy
cyBjaG9vc2UgdG8gY29uc3RydWN0IHRoZQorZmFpbHVyZSBtZXNzYWdlIGJ5IHRoZW1zZWx2ZXMs
IHN0cmVhbWluZyBpdCBpbnRvIGBFWFBFQ1RfVFJVRSgpYC4gSG93ZXZlciwgdGhpcworaXMgYXdr
d2FyZCBlc3BlY2lhbGx5IHdoZW4gdGhlIGV4cHJlc3Npb24gaGFzIHNpZGUtZWZmZWN0cyBvciBp
cyBleHBlbnNpdmUgdG8KK2V2YWx1YXRlLgorCitHb29nbGUgVGVzdCBnaXZlcyB5b3UgdGhyZWUg
ZGlmZmVyZW50IG9wdGlvbnMgdG8gc29sdmUgdGhpcyBwcm9ibGVtOgorCisjIyMgVXNpbmcgYW4g
RXhpc3RpbmcgQm9vbGVhbiBGdW5jdGlvbiAjIyMKKworSWYgeW91IGFscmVhZHkgaGF2ZSBhIGZ1
bmN0aW9uIG9yIGEgZnVuY3RvciB0aGF0IHJldHVybnMgYGJvb2xgIChvciBhIHR5cGUKK3RoYXQg
Y2FuIGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRvIGBib29sYCksIHlvdSBjYW4gdXNlIGl0IGlu
IGEgX3ByZWRpY2F0ZQorYXNzZXJ0aW9uXyB0byBnZXQgdGhlIGZ1bmN0aW9uIGFyZ3VtZW50cyBw
cmludGVkIGZvciBmcmVlOgorCit8ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFz
c2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAorfCBgQVNTRVJUX1BSRUQxKGBfcHJl
ZDEsIHZhbDFfYCk7YCAgICAgICB8IGBFWFBFQ1RfUFJFRDEoYF9wcmVkMSwgdmFsMV9gKTtgIHwg
X3ByZWQxKHZhbDEpXyByZXR1cm5zIHRydWUgfAorfCBgQVNTRVJUX1BSRUQyKGBfcHJlZDIsIHZh
bDEsIHZhbDJfYCk7YCB8IGBFWFBFQ1RfUFJFRDIoYF9wcmVkMiwgdmFsMSwgdmFsMl9gKTtgIHwg
IF9wcmVkMih2YWwxLCB2YWwyKV8gcmV0dXJucyB0cnVlIHwKK3wgIC4uLiAgICAgICAgICAgICAg
ICB8IC4uLiAgICAgICAgICAgICAgICAgICAgfCAuLi4gICAgICAgICAgfAorCitJbiB0aGUgYWJv
dmUsIF9wcmVkbl8gaXMgYW4gX25fLWFyeSBwcmVkaWNhdGUgZnVuY3Rpb24gb3IgZnVuY3Rvciwg
d2hlcmUKK192YWwxXywgX3ZhbDJfLCAuLi4sIGFuZCBfdmFsbl8gYXJlIGl0cyBhcmd1bWVudHMu
IFRoZSBhc3NlcnRpb24gc3VjY2VlZHMKK2lmIHRoZSBwcmVkaWNhdGUgcmV0dXJucyBgdHJ1ZWAg
d2hlbiBhcHBsaWVkIHRvIHRoZSBnaXZlbiBhcmd1bWVudHMsIGFuZCBmYWlscworb3RoZXJ3aXNl
LiBXaGVuIHRoZSBhc3NlcnRpb24gZmFpbHMsIGl0IHByaW50cyB0aGUgdmFsdWUgb2YgZWFjaCBh
cmd1bWVudC4gSW4KK2VpdGhlciBjYXNlLCB0aGUgYXJndW1lbnRzIGFyZSBldmFsdWF0ZWQgZXhh
Y3RseSBvbmNlLgorCitIZXJlJ3MgYW4gZXhhbXBsZS4gR2l2ZW4KKworYGBgCisvLyBSZXR1cm5z
IHRydWUgaWZmIG0gYW5kIG4gaGF2ZSBubyBjb21tb24gZGl2aXNvcnMgZXhjZXB0IDEuCitib29s
IE11dHVhbGx5UHJpbWUoaW50IG0sIGludCBuKSB7IC4uLiB9Citjb25zdCBpbnQgYSA9IDM7Citj
b25zdCBpbnQgYiA9IDQ7Citjb25zdCBpbnQgYyA9IDEwOworYGBgCisKK3RoZSBhc3NlcnRpb24g
YEVYUEVDVF9QUkVEMihNdXR1YWxseVByaW1lLCBhLCBiKTtgIHdpbGwgc3VjY2VlZCwgd2hpbGUg
dGhlCithc3NlcnRpb24gYEVYUEVDVF9QUkVEMihNdXR1YWxseVByaW1lLCBiLCBjKTtgIHdpbGwg
ZmFpbCB3aXRoIHRoZSBtZXNzYWdlCisKKzxwcmU+CishTXV0dWFsbHlQcmltZShiLCBjKSBpcyBm
YWxzZSwgd2hlcmU8YnI+CitiIGlzIDQ8YnI+CitjIGlzIDEwPGJyPgorPC9wcmU+CisKKyoqTm90
ZXM6KioKKworICAxLiBJZiB5b3Ugc2VlIGEgY29tcGlsZXIgZXJyb3IgIm5vIG1hdGNoaW5nIGZ1
bmN0aW9uIHRvIGNhbGwiIHdoZW4gdXNpbmcgYEFTU0VSVF9QUkVEKmAgb3IgYEVYUEVDVF9QUkVE
KmAsIHBsZWFzZSBzZWUgW3RoaXNdKFYxXzdfRkFRLm1kI3RoZS1jb21waWxlci1jb21wbGFpbnMt
YWJvdXQtdW5kZWZpbmVkLXJlZmVyZW5jZXMtdG8tc29tZS1zdGF0aWMtY29uc3QtbWVtYmVyLXZh
cmlhYmxlcy1idXQtaS1kaWQtZGVmaW5lLXRoZW0taW4tdGhlLWNsYXNzLWJvZHktd2hhdHMtd3Jv
bmcpIGZvciBob3cgdG8gcmVzb2x2ZSBpdC4KKyAgMS4gQ3VycmVudGx5IHdlIG9ubHkgcHJvdmlk
ZSBwcmVkaWNhdGUgYXNzZXJ0aW9ucyBvZiBhcml0eSA8PSA1LiBJZiB5b3UgbmVlZCBhIGhpZ2hl
ci1hcml0eSBhc3NlcnRpb24sIGxldCB1cyBrbm93LgorCitfQXZhaWxhYmlsaXR5XzogTGludXgs
IFdpbmRvd3MsIE1hYworCisjIyMgVXNpbmcgYSBGdW5jdGlvbiBUaGF0IFJldHVybnMgYW4gQXNz
ZXJ0aW9uUmVzdWx0ICMjIworCitXaGlsZSBgRVhQRUNUX1BSRUQqKClgIGFuZCBmcmllbmRzIGFy
ZSBoYW5keSBmb3IgYSBxdWljayBqb2IsIHRoZQorc3ludGF4IGlzIG5vdCBzYXRpc2ZhY3Rvcnk6
IHlvdSBoYXZlIHRvIHVzZSBkaWZmZXJlbnQgbWFjcm9zIGZvcgorZGlmZmVyZW50IGFyaXRpZXMs
IGFuZCBpdCBmZWVscyBtb3JlIGxpa2UgTGlzcCB0aGFuIEMrKy4gIFRoZQorYDo6dGVzdGluZzo6
QXNzZXJ0aW9uUmVzdWx0YCBjbGFzcyBzb2x2ZXMgdGhpcyBwcm9ibGVtLgorCitBbiBgQXNzZXJ0
aW9uUmVzdWx0YCBvYmplY3QgcmVwcmVzZW50cyB0aGUgcmVzdWx0IG9mIGFuIGFzc2VydGlvbgor
KHdoZXRoZXIgaXQncyBhIHN1Y2Nlc3Mgb3IgYSBmYWlsdXJlLCBhbmQgYW4gYXNzb2NpYXRlZCBt
ZXNzYWdlKS4gIFlvdQorY2FuIGNyZWF0ZSBhbiBgQXNzZXJ0aW9uUmVzdWx0YCB1c2luZyBvbmUg
b2YgdGhlc2UgZmFjdG9yeQorZnVuY3Rpb25zOgorCitgYGAKK25hbWVzcGFjZSB0ZXN0aW5nIHsK
KworLy8gUmV0dXJucyBhbiBBc3NlcnRpb25SZXN1bHQgb2JqZWN0IHRvIGluZGljYXRlIHRoYXQg
YW4gYXNzZXJ0aW9uIGhhcworLy8gc3VjY2VlZGVkLgorQXNzZXJ0aW9uUmVzdWx0IEFzc2VydGlv
blN1Y2Nlc3MoKTsKKworLy8gUmV0dXJucyBhbiBBc3NlcnRpb25SZXN1bHQgb2JqZWN0IHRvIGlu
ZGljYXRlIHRoYXQgYW4gYXNzZXJ0aW9uIGhhcworLy8gZmFpbGVkLgorQXNzZXJ0aW9uUmVzdWx0
IEFzc2VydGlvbkZhaWx1cmUoKTsKKworfQorYGBgCisKK1lvdSBjYW4gdGhlbiB1c2UgdGhlIGA8
PGAgb3BlcmF0b3IgdG8gc3RyZWFtIG1lc3NhZ2VzIHRvIHRoZQorYEFzc2VydGlvblJlc3VsdGAg
b2JqZWN0LgorCitUbyBwcm92aWRlIG1vcmUgcmVhZGFibGUgbWVzc2FnZXMgaW4gQm9vbGVhbiBh
c3NlcnRpb25zCisoZS5nLiBgRVhQRUNUX1RSVUUoKWApLCB3cml0ZSBhIHByZWRpY2F0ZSBmdW5j
dGlvbiB0aGF0IHJldHVybnMKK2BBc3NlcnRpb25SZXN1bHRgIGluc3RlYWQgb2YgYGJvb2xgLiBG
b3IgZXhhbXBsZSwgaWYgeW91IGRlZmluZQorYElzRXZlbigpYCBhczoKKworYGBgCis6OnRlc3Rp
bmc6OkFzc2VydGlvblJlc3VsdCBJc0V2ZW4oaW50IG4pIHsKKyAgaWYgKChuICUgMikgPT0gMCkK
KyAgICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7CisgIGVsc2UKKyAgICBy
ZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkgPDwgbiA8PCAiIGlzIG9kZCI7Cit9
CitgYGAKKworaW5zdGVhZCBvZjoKKworYGBgCitib29sIElzRXZlbihpbnQgbikgeworICByZXR1
cm4gKG4gJSAyKSA9PSAwOworfQorYGBgCisKK3RoZSBmYWlsZWQgYXNzZXJ0aW9uIGBFWFBFQ1Rf
VFJVRShJc0V2ZW4oRmliKDQpKSlgIHdpbGwgcHJpbnQ6CisKKzxwcmU+CitWYWx1ZSBvZjogSXNF
dmVuKEZpYig0KSk8YnI+CitBY3R1YWw6IGZhbHNlICgqMyBpcyBvZGQqKTxicj4KK0V4cGVjdGVk
OiB0cnVlPGJyPgorPC9wcmU+CisKK2luc3RlYWQgb2YgYSBtb3JlIG9wYXF1ZQorCis8cHJlPgor
VmFsdWUgb2Y6IElzRXZlbihGaWIoNCkpPGJyPgorQWN0dWFsOiBmYWxzZTxicj4KK0V4cGVjdGVk
OiB0cnVlPGJyPgorPC9wcmU+CisKK0lmIHlvdSB3YW50IGluZm9ybWF0aXZlIG1lc3NhZ2VzIGlu
IGBFWFBFQ1RfRkFMU0VgIGFuZCBgQVNTRVJUX0ZBTFNFYAorYXMgd2VsbCwgYW5kIGFyZSBmaW5l
IHdpdGggbWFraW5nIHRoZSBwcmVkaWNhdGUgc2xvd2VyIGluIHRoZSBzdWNjZXNzCitjYXNlLCB5
b3UgY2FuIHN1cHBseSBhIHN1Y2Nlc3MgbWVzc2FnZToKKworYGBgCis6OnRlc3Rpbmc6OkFzc2Vy
dGlvblJlc3VsdCBJc0V2ZW4oaW50IG4pIHsKKyAgaWYgKChuICUgMikgPT0gMCkKKyAgICByZXR1
cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCkgPDwgbiA8PCAiIGlzIGV2ZW4iOworICBl
bHNlCisgICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpIDw8IG4gPDwgIiBp
cyBvZGQiOworfQorYGBgCisKK1RoZW4gdGhlIHN0YXRlbWVudCBgRVhQRUNUX0ZBTFNFKElzRXZl
bihGaWIoNikpKWAgd2lsbCBwcmludAorCis8cHJlPgorVmFsdWUgb2Y6IElzRXZlbihGaWIoNikp
PGJyPgorQWN0dWFsOiB0cnVlICg4IGlzIGV2ZW4pPGJyPgorRXhwZWN0ZWQ6IGZhbHNlPGJyPgor
PC9wcmU+CisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjOyBzaW5jZSB2ZXJz
aW9uIDEuNC4xLgorCisjIyMgVXNpbmcgYSBQcmVkaWNhdGUtRm9ybWF0dGVyICMjIworCitJZiB5
b3UgZmluZCB0aGUgZGVmYXVsdCBtZXNzYWdlIGdlbmVyYXRlZCBieSBgKEFTU0VSVHxFWFBFQ1Qp
X1BSRUQqYCBhbmQKK2AoQVNTRVJUfEVYUEVDVClfKFRSVUV8RkFMU0UpYCB1bnNhdGlzZmFjdG9y
eSwgb3Igc29tZSBhcmd1bWVudHMgdG8geW91cgorcHJlZGljYXRlIGRvIG5vdCBzdXBwb3J0IHN0
cmVhbWluZyB0byBgb3N0cmVhbWAsIHlvdSBjYW4gaW5zdGVhZCB1c2UgdGhlCitmb2xsb3dpbmcg
X3ByZWRpY2F0ZS1mb3JtYXR0ZXIgYXNzZXJ0aW9uc18gdG8gX2Z1bGx5XyBjdXN0b21pemUgaG93
IHRoZQorbWVzc2FnZSBpcyBmb3JtYXR0ZWQ6CisKK3wgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoq
Tm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0tLS0tLS0tLS0t
LS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8IGBBU1NFUlRf
UFJFRF9GT1JNQVQxKGBfcHJlZFxfZm9ybWF0MSwgdmFsMV9gKTtgICAgICAgICB8IGBFWFBFQ1Rf
UFJFRF9GT1JNQVQxKGBfcHJlZFxfZm9ybWF0MSwgdmFsMV9gKTsgfCBfcHJlZFxfZm9ybWF0MSh2
YWwxKV8gaXMgc3VjY2Vzc2Z1bCB8Cit8IGBBU1NFUlRfUFJFRF9GT1JNQVQyKGBfcHJlZFxfZm9y
bWF0MiwgdmFsMSwgdmFsMl9gKTtgIHwgYEVYUEVDVF9QUkVEX0ZPUk1BVDIoYF9wcmVkXF9mb3Jt
YXQyLCB2YWwxLCB2YWwyX2ApO2AgfCBfcHJlZFxfZm9ybWF0Mih2YWwxLCB2YWwyKV8gaXMgc3Vj
Y2Vzc2Z1bCB8Cit8IGAuLi5gICAgICAgICAgICAgICAgfCBgLi4uYCAgICAgICAgICAgICAgICAg
IHwgYC4uLmAgICAgICAgIHwKKworVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGlzIGFuZCB0aGUg
cHJldmlvdXMgdHdvIGdyb3VwcyBvZiBtYWNyb3MgaXMgdGhhdCBpbnN0ZWFkIG9mCithIHByZWRp
Y2F0ZSwgYChBU1NFUlR8RVhQRUNUKV9QUkVEX0ZPUk1BVCpgIHRha2UgYSBfcHJlZGljYXRlLWZv
cm1hdHRlcl8KKyhfcHJlZFxfZm9ybWF0bl8pLCB3aGljaCBpcyBhIGZ1bmN0aW9uIG9yIGZ1bmN0
b3Igd2l0aCB0aGUgc2lnbmF0dXJlOgorCitgOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgUHJl
ZGljYXRlRm9ybWF0dGVybihjb25zdCBjaGFyKiBgX2V4cHIxX2AsIGNvbnN0IGNoYXIqIGBfZXhw
cjJfYCwgLi4uIGNvbnN0IGNoYXIqIGBfZXhwcm5fYCwgVDEgYF92YWwxX2AsIFQyIGBfdmFsMl9g
LCAuLi4gVG4gYF92YWxuX2ApO2AKKword2hlcmUgX3ZhbDFfLCBfdmFsMl8sIC4uLiwgYW5kIF92
YWxuXyBhcmUgdGhlIHZhbHVlcyBvZiB0aGUgcHJlZGljYXRlCithcmd1bWVudHMsIGFuZCBfZXhw
cjFfLCBfZXhwcjJfLCAuLi4sIGFuZCBfZXhwcm5fIGFyZSB0aGUgY29ycmVzcG9uZGluZworZXhw
cmVzc2lvbnMgYXMgdGhleSBhcHBlYXIgaW4gdGhlIHNvdXJjZSBjb2RlLiBUaGUgdHlwZXMgYFQx
YCwgYFQyYCwgLi4uLCBhbmQKK2BUbmAgY2FuIGJlIGVpdGhlciB2YWx1ZSB0eXBlcyBvciByZWZl
cmVuY2UgdHlwZXMuIEZvciBleGFtcGxlLCBpZiBhbgorYXJndW1lbnQgaGFzIHR5cGUgYEZvb2As
IHlvdSBjYW4gZGVjbGFyZSBpdCBhcyBlaXRoZXIgYEZvb2Agb3IgYGNvbnN0IEZvbyZgLAord2hp
Y2hldmVyIGlzIGFwcHJvcHJpYXRlLgorCitBIHByZWRpY2F0ZS1mb3JtYXR0ZXIgcmV0dXJucyBh
IGA6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdGAgb2JqZWN0IHRvIGluZGljYXRlCit3aGV0aGVy
IHRoZSBhc3NlcnRpb24gaGFzIHN1Y2NlZWRlZCBvciBub3QuIFRoZSBvbmx5IHdheSB0byBjcmVh
dGUgc3VjaCBhbgorb2JqZWN0IGlzIHRvIGNhbGwgb25lIG9mIHRoZXNlIGZhY3RvcnkgZnVuY3Rp
b25zOgorCitBcyBhbiBleGFtcGxlLCBsZXQncyBpbXByb3ZlIHRoZSBmYWlsdXJlIG1lc3NhZ2Ug
aW4gdGhlIHByZXZpb3VzIGV4YW1wbGUsIHdoaWNoIHVzZXMgYEVYUEVDVF9QUkVEMigpYDoKKwor
YGBgCisvLyBSZXR1cm5zIHRoZSBzbWFsbGVzdCBwcmltZSBjb21tb24gZGl2aXNvciBvZiBtIGFu
ZCBuLAorLy8gb3IgMSB3aGVuIG0gYW5kIG4gYXJlIG11dHVhbGx5IHByaW1lLgoraW50IFNtYWxs
ZXN0UHJpbWVDb21tb25EaXZpc29yKGludCBtLCBpbnQgbikgeyAuLi4gfQorCisvLyBBIHByZWRp
Y2F0ZS1mb3JtYXR0ZXIgZm9yIGFzc2VydGluZyB0aGF0IHR3byBpbnRlZ2VycyBhcmUgbXV0dWFs
bHkgcHJpbWUuCis6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBBc3NlcnRNdXR1YWxseVByaW1l
KGNvbnN0IGNoYXIqIG1fZXhwciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogbl9leHByLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IG4pIHsKKyAgaWYgKE11dHVhbGx5UHJpbWUobSwgbikp
CisgICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uU3VjY2VzcygpOworCisgIHJldHVybiA6
OnRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKQorICAgICAgPDwgbV9leHByIDw8ICIgYW5kICIg
PDwgbl9leHByIDw8ICIgKCIgPDwgbSA8PCAiIGFuZCAiIDw8IG4KKyAgICAgIDw8ICIpIGFyZSBu
b3QgbXV0dWFsbHkgcHJpbWUsICIgPDwgImFzIHRoZXkgaGF2ZSBhIGNvbW1vbiBkaXZpc29yICIK
KyAgICAgIDw8IFNtYWxsZXN0UHJpbWVDb21tb25EaXZpc29yKG0sIG4pOworfQorYGBgCisKK1dp
dGggdGhpcyBwcmVkaWNhdGUtZm9ybWF0dGVyLCB3ZSBjYW4gdXNlCisKK2BgYAorRVhQRUNUX1BS
RURfRk9STUFUMihBc3NlcnRNdXR1YWxseVByaW1lLCBiLCBjKTsKK2BgYAorCit0byBnZW5lcmF0
ZSB0aGUgbWVzc2FnZQorCis8cHJlPgorYiBhbmQgYyAoNCBhbmQgMTApIGFyZSBub3QgbXV0dWFs
bHkgcHJpbWUsIGFzIHRoZXkgaGF2ZSBhIGNvbW1vbiBkaXZpc29yIDIuPGJyPgorPC9wcmU+CisK
K0FzIHlvdSBtYXkgaGF2ZSByZWFsaXplZCwgbWFueSBvZiB0aGUgYXNzZXJ0aW9ucyB3ZSBpbnRy
b2R1Y2VkIGVhcmxpZXIgYXJlCitzcGVjaWFsIGNhc2VzIG9mIGAoRVhQRUNUfEFTU0VSVClfUFJF
RF9GT1JNQVQqYC4gSW4gZmFjdCwgbW9zdCBvZiB0aGVtIGFyZQoraW5kZWVkIGRlZmluZWQgdXNp
bmcgYChFWFBFQ1R8QVNTRVJUKV9QUkVEX0ZPUk1BVCpgLgorCitfQXZhaWxhYmlsaXR5XzogTGlu
dXgsIFdpbmRvd3MsIE1hYy4KKworCisjIyBGbG9hdGluZy1Qb2ludCBDb21wYXJpc29uICMjCisK
K0NvbXBhcmluZyBmbG9hdGluZy1wb2ludCBudW1iZXJzIGlzIHRyaWNreS4gRHVlIHRvIHJvdW5k
LW9mZiBlcnJvcnMsIGl0IGlzCit2ZXJ5IHVubGlrZWx5IHRoYXQgdHdvIGZsb2F0aW5nLXBvaW50
cyB3aWxsIG1hdGNoIGV4YWN0bHkuIFRoZXJlZm9yZSwKK2BBU1NFUlRfRVFgICdzIG5haXZlIGNv
bXBhcmlzb24gdXN1YWxseSBkb2Vzbid0IHdvcmsuIEFuZCBzaW5jZSBmbG9hdGluZy1wb2ludHMK
K2NhbiBoYXZlIGEgd2lkZSB2YWx1ZSByYW5nZSwgbm8gc2luZ2xlIGZpeGVkIGVycm9yIGJvdW5k
IHdvcmtzLiBJdCdzIGJldHRlciB0bworY29tcGFyZSBieSBhIGZpeGVkIHJlbGF0aXZlIGVycm9y
IGJvdW5kLCBleGNlcHQgZm9yIHZhbHVlcyBjbG9zZSB0byAwIGR1ZSB0bwordGhlIGxvc3Mgb2Yg
cHJlY2lzaW9uIHRoZXJlLgorCitJbiBnZW5lcmFsLCBmb3IgZmxvYXRpbmctcG9pbnQgY29tcGFy
aXNvbiB0byBtYWtlIHNlbnNlLCB0aGUgdXNlciBuZWVkcyB0bworY2FyZWZ1bGx5IGNob29zZSB0
aGUgZXJyb3IgYm91bmQuIElmIHRoZXkgZG9uJ3Qgd2FudCBvciBjYXJlIHRvLCBjb21wYXJpbmcg
aW4KK3Rlcm1zIG9mIFVuaXRzIGluIHRoZSBMYXN0IFBsYWNlIChVTFBzKSBpcyBhIGdvb2QgZGVm
YXVsdCwgYW5kIEdvb2dsZSBUZXN0Citwcm92aWRlcyBhc3NlcnRpb25zIHRvIGRvIHRoaXMuIEZ1
bGwgZGV0YWlscyBhYm91dCBVTFBzIGFyZSBxdWl0ZSBsb25nOyBpZiB5b3UKK3dhbnQgdG8gbGVh
cm4gbW9yZSwgc2VlCitbdGhpcyBhcnRpY2xlIG9uIGZsb2F0IGNvbXBhcmlzb25dKGh0dHA6Ly93
d3cuY3lnbnVzLXNvZnR3YXJlLmNvbS9wYXBlcnMvY29tcGFyaW5nZmxvYXRzL2NvbXBhcmluZ2Zs
b2F0cy5odG0pLgorCisjIyMgRmxvYXRpbmctUG9pbnQgTWFjcm9zICMjIworCit8ICoqRmF0YWwg
YXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6
LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0t
LS0tfAorfCBgQVNTRVJUX0ZMT0FUX0VRKGBfZXhwZWN0ZWQsIGFjdHVhbF9gKTtgICB8IGBFWFBF
Q1RfRkxPQVRfRVEoYF9leHBlY3RlZCwgYWN0dWFsX2ApO2AgfCB0aGUgdHdvIGBmbG9hdGAgdmFs
dWVzIGFyZSBhbG1vc3QgZXF1YWwgfAorfCBgQVNTRVJUX0RPVUJMRV9FUShgX2V4cGVjdGVkLCBh
Y3R1YWxfYCk7YCB8IGBFWFBFQ1RfRE9VQkxFX0VRKGBfZXhwZWN0ZWQsIGFjdHVhbF9gKTtgIHwg
dGhlIHR3byBgZG91YmxlYCB2YWx1ZXMgYXJlIGFsbW9zdCBlcXVhbCB8CisKK0J5ICJhbG1vc3Qg
ZXF1YWwiLCB3ZSBtZWFuIHRoZSB0d28gdmFsdWVzIGFyZSB3aXRoaW4gNCBVTFAncyBmcm9tIGVh
Y2gKK290aGVyLgorCitUaGUgZm9sbG93aW5nIGFzc2VydGlvbnMgYWxsb3cgeW91IHRvIGNob29z
ZSB0aGUgYWNjZXB0YWJsZSBlcnJvciBib3VuZDoKKworfCAqKkZhdGFsIGFzc2VydGlvbioqIHwg
KipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0t
LS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKK3wgYEFTU0VS
VF9ORUFSKGBfdmFsMSwgdmFsMiwgYWJzXF9lcnJvcl9gKTtgIHwgYEVYUEVDVF9ORUFSYF8odmFs
MSwgdmFsMiwgYWJzXF9lcnJvcl9gKTtgIHwgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBfdmFsMV8g
YW5kIF92YWwyXyBkb2Vzbid0IGV4Y2VlZCB0aGUgZ2l2ZW4gYWJzb2x1dGUgZXJyb3IgfAorCitf
QXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIEZsb2F0aW5nLVBvaW50
IFByZWRpY2F0ZS1Gb3JtYXQgRnVuY3Rpb25zICMjIworCitTb21lIGZsb2F0aW5nLXBvaW50IG9w
ZXJhdGlvbnMgYXJlIHVzZWZ1bCwgYnV0IG5vdCB0aGF0IG9mdGVuIHVzZWQuIEluIG9yZGVyCit0
byBhdm9pZCBhbiBleHBsb3Npb24gb2YgbmV3IG1hY3Jvcywgd2UgcHJvdmlkZSB0aGVtIGFzIHBy
ZWRpY2F0ZS1mb3JtYXQKK2Z1bmN0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIGluIHByZWRpY2F0ZSBh
c3NlcnRpb24gbWFjcm9zIChlLmcuCitgRVhQRUNUX1BSRURfRk9STUFUMmAsIGV0YykuCisKK2Bg
YAorRVhQRUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OkZsb2F0TEUsIHZhbDEsIHZhbDIpOwor
RVhQRUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OkRvdWJsZUxFLCB2YWwxLCB2YWwyKTsKK2Bg
YAorCitWZXJpZmllcyB0aGF0IF92YWwxXyBpcyBsZXNzIHRoYW4sIG9yIGFsbW9zdCBlcXVhbCB0
bywgX3ZhbDJfLiBZb3UgY2FuCityZXBsYWNlIGBFWFBFQ1RfUFJFRF9GT1JNQVQyYCBpbiB0aGUg
YWJvdmUgdGFibGUgd2l0aCBgQVNTRVJUX1BSRURfRk9STUFUMmAuCisKK19BdmFpbGFiaWxpdHlf
OiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyBXaW5kb3dzIEhSRVNVTFQgYXNzZXJ0aW9ucyAj
IworCitUaGVzZSBhc3NlcnRpb25zIHRlc3QgZm9yIGBIUkVTVUxUYCBzdWNjZXNzIG9yIGZhaWx1
cmUuCisKK3wgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAq
KlZlcmlmaWVzKiogfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8IGBBU1NFUlRfSFJFU1VMVF9TVUNDRUVERUQoYF9leHBy
ZXNzaW9uX2ApO2AgfCBgRVhQRUNUX0hSRVNVTFRfU1VDQ0VFREVEKGBfZXhwcmVzc2lvbl9gKTtg
IHwgX2V4cHJlc3Npb25fIGlzIGEgc3VjY2VzcyBgSFJFU1VMVGAgfAorfCBgQVNTRVJUX0hSRVNV
TFRfRkFJTEVEKGBfZXhwcmVzc2lvbl9gKTtgICAgIHwgYEVYUEVDVF9IUkVTVUxUX0ZBSUxFRChg
X2V4cHJlc3Npb25fYCk7YCAgICB8IF9leHByZXNzaW9uXyBpcyBhIGZhaWx1cmUgYEhSRVNVTFRg
IHwKKworVGhlIGdlbmVyYXRlZCBvdXRwdXQgY29udGFpbnMgdGhlIGh1bWFuLXJlYWRhYmxlIGVy
cm9yIG1lc3NhZ2UKK2Fzc29jaWF0ZWQgd2l0aCB0aGUgYEhSRVNVTFRgIGNvZGUgcmV0dXJuZWQg
YnkgX2V4cHJlc3Npb25fLgorCitZb3UgbWlnaHQgdXNlIHRoZW0gbGlrZSB0aGlzOgorCitgYGAK
K0NDb21QdHIgc2hlbGw7CitBU1NFUlRfSFJFU1VMVF9TVUNDRUVERUQoc2hlbGwuQ29DcmVhdGVJ
bnN0YW5jZShMIlNoZWxsLkFwcGxpY2F0aW9uIikpOworQ0NvbVZhcmlhbnQgZW1wdHk7CitBU1NF
UlRfSFJFU1VMVF9TVUNDRUVERUQoc2hlbGwtPlNoZWxsRXhlY3V0ZShDQ29tQlNUUih1cmwpLCBl
bXB0eSwgZW1wdHksIGVtcHR5LCBlbXB0eSkpOworYGBgCisKK19BdmFpbGFiaWxpdHlfOiBXaW5k
b3dzLgorCisjIyBUeXBlIEFzc2VydGlvbnMgIyMKKworWW91IGNhbiBjYWxsIHRoZSBmdW5jdGlv
bgorYGBgCis6OnRlc3Rpbmc6OlN0YXRpY0Fzc2VydFR5cGVFcTxUMSwgVDI+KCk7CitgYGAKK3Rv
IGFzc2VydCB0aGF0IHR5cGVzIGBUMWAgYW5kIGBUMmAgYXJlIHRoZSBzYW1lLiAgVGhlIGZ1bmN0
aW9uIGRvZXMKK25vdGhpbmcgaWYgdGhlIGFzc2VydGlvbiBpcyBzYXRpc2ZpZWQuICBJZiB0aGUg
dHlwZXMgYXJlIGRpZmZlcmVudCwKK3RoZSBmdW5jdGlvbiBjYWxsIHdpbGwgZmFpbCB0byBjb21w
aWxlLCBhbmQgdGhlIGNvbXBpbGVyIGVycm9yIG1lc3NhZ2UKK3dpbGwgbGlrZWx5IChkZXBlbmRp
bmcgb24gdGhlIGNvbXBpbGVyKSBzaG93IHlvdSB0aGUgYWN0dWFsIHZhbHVlcyBvZgorYFQxYCBh
bmQgYFQyYC4gIFRoaXMgaXMgbWFpbmx5IHVzZWZ1bCBpbnNpZGUgdGVtcGxhdGUgY29kZS4KKwor
X0NhdmVhdDpfIFdoZW4gdXNlZCBpbnNpZGUgYSBtZW1iZXIgZnVuY3Rpb24gb2YgYSBjbGFzcyB0
ZW1wbGF0ZSBvciBhCitmdW5jdGlvbiB0ZW1wbGF0ZSwgYFN0YXRpY0Fzc2VydFR5cGVFcTxUMSwg
VDI+KClgIGlzIGVmZmVjdGl2ZSBfb25seSBpZl8KK3RoZSBmdW5jdGlvbiBpcyBpbnN0YW50aWF0
ZWQuICBGb3IgZXhhbXBsZSwgZ2l2ZW46CitgYGAKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFz
cyBGb28geworIHB1YmxpYzoKKyAgdm9pZCBCYXIoKSB7IDo6dGVzdGluZzo6U3RhdGljQXNzZXJ0
VHlwZUVxPGludCwgVD4oKTsgfQorfTsKK2BgYAordGhlIGNvZGU6CitgYGAKK3ZvaWQgVGVzdDEo
KSB7IEZvbzxib29sPiBmb287IH0KK2BgYAord2lsbCBfbm90XyBnZW5lcmF0ZSBhIGNvbXBpbGVy
IGVycm9yLCBhcyBgRm9vPGJvb2w+OjpCYXIoKWAgaXMgbmV2ZXIKK2FjdHVhbGx5IGluc3RhbnRp
YXRlZC4gIEluc3RlYWQsIHlvdSBuZWVkOgorYGBgCit2b2lkIFRlc3QyKCkgeyBGb288Ym9vbD4g
Zm9vOyBmb28uQmFyKCk7IH0KK2BgYAordG8gY2F1c2UgYSBjb21waWxlciBlcnJvci4KKworX0F2
YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHZlcnNpb24gMS4zLjAuCisK
KyMjIEFzc2VydGlvbiBQbGFjZW1lbnQgIyMKKworWW91IGNhbiB1c2UgYXNzZXJ0aW9ucyBpbiBh
bnkgQysrIGZ1bmN0aW9uLiBJbiBwYXJ0aWN1bGFyLCBpdCBkb2Vzbid0CitoYXZlIHRvIGJlIGEg
bWV0aG9kIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MuIFRoZSBvbmUgY29uc3RyYWludCBpcwor
dGhhdCBhc3NlcnRpb25zIHRoYXQgZ2VuZXJhdGUgYSBmYXRhbCBmYWlsdXJlIChgRkFJTCpgIGFu
ZCBgQVNTRVJUXypgKQorY2FuIG9ubHkgYmUgdXNlZCBpbiB2b2lkLXJldHVybmluZyBmdW5jdGlv
bnMuIFRoaXMgaXMgYSBjb25zZXF1ZW5jZSBvZgorR29vZ2xlIFRlc3Qgbm90IHVzaW5nIGV4Y2Vw
dGlvbnMuIEJ5IHBsYWNpbmcgaXQgaW4gYSBub24tdm9pZCBmdW5jdGlvbgoreW91J2xsIGdldCBh
IGNvbmZ1c2luZyBjb21waWxlIGVycm9yIGxpa2UKK2AiZXJyb3I6IHZvaWQgdmFsdWUgbm90IGln
bm9yZWQgYXMgaXQgb3VnaHQgdG8gYmUiYC4KKworSWYgeW91IG5lZWQgdG8gdXNlIGFzc2VydGlv
bnMgaW4gYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgbm9uLXZvaWQsIG9uZSBvcHRpb24KK2lzIHRv
IG1ha2UgdGhlIGZ1bmN0aW9uIHJldHVybiB0aGUgdmFsdWUgaW4gYW4gb3V0IHBhcmFtZXRlciBp
bnN0ZWFkLiBGb3IKK2V4YW1wbGUsIHlvdSBjYW4gcmV3cml0ZSBgVDIgRm9vKFQxIHgpYCB0byBg
dm9pZCBGb28oVDEgeCwgVDIqIHJlc3VsdClgLiBZb3UKK25lZWQgdG8gbWFrZSBzdXJlIHRoYXQg
YCpyZXN1bHRgIGNvbnRhaW5zIHNvbWUgc2Vuc2libGUgdmFsdWUgZXZlbiB3aGVuIHRoZQorZnVu
Y3Rpb24gcmV0dXJucyBwcmVtYXR1cmVseS4gQXMgdGhlIGZ1bmN0aW9uIG5vdyByZXR1cm5zIGB2
b2lkYCwgeW91IGNhbiB1c2UKK2FueSBhc3NlcnRpb24gaW5zaWRlIG9mIGl0LgorCitJZiBjaGFu
Z2luZyB0aGUgZnVuY3Rpb24ncyB0eXBlIGlzIG5vdCBhbiBvcHRpb24sIHlvdSBzaG91bGQganVz
dCB1c2UKK2Fzc2VydGlvbnMgdGhhdCBnZW5lcmF0ZSBub24tZmF0YWwgZmFpbHVyZXMsIHN1Y2gg
YXMgYEFERF9GQUlMVVJFKmAgYW5kCitgRVhQRUNUXypgLgorCitfTm90ZV86IENvbnN0cnVjdG9y
cyBhbmQgZGVzdHJ1Y3RvcnMgYXJlIG5vdCBjb25zaWRlcmVkIHZvaWQtcmV0dXJuaW5nCitmdW5j
dGlvbnMsIGFjY29yZGluZyB0byB0aGUgQysrIGxhbmd1YWdlIHNwZWNpZmljYXRpb24sIGFuZCBz
byB5b3UgbWF5IG5vdCB1c2UKK2ZhdGFsIGFzc2VydGlvbnMgaW4gdGhlbS4gWW91J2xsIGdldCBh
IGNvbXBpbGF0aW9uIGVycm9yIGlmIHlvdSB0cnkuIEEgc2ltcGxlCit3b3JrYXJvdW5kIGlzIHRv
IHRyYW5zZmVyIHRoZSBlbnRpcmUgYm9keSBvZiB0aGUgY29uc3RydWN0b3Igb3IgZGVzdHJ1Y3Rv
ciB0byBhCitwcml2YXRlIHZvaWQtcmV0dXJuaW5nIG1ldGhvZC4gSG93ZXZlciwgeW91IHNob3Vs
ZCBiZSBhd2FyZSB0aGF0IGEgZmF0YWwKK2Fzc2VydGlvbiBmYWlsdXJlIGluIGEgY29uc3RydWN0
b3IgZG9lcyBub3QgdGVybWluYXRlIHRoZSBjdXJyZW50IHRlc3QsIGFzIHlvdXIKK2ludHVpdGlv
biBtaWdodCBzdWdnZXN0OyBpdCBtZXJlbHkgcmV0dXJucyBmcm9tIHRoZSBjb25zdHJ1Y3RvciBl
YXJseSwgcG9zc2libHkKK2xlYXZpbmcgeW91ciBvYmplY3QgaW4gYSBwYXJ0aWFsbHktY29uc3Ry
dWN0ZWQgc3RhdGUuIExpa2V3aXNlLCBhIGZhdGFsCithc3NlcnRpb24gZmFpbHVyZSBpbiBhIGRl
c3RydWN0b3IgbWF5IGxlYXZlIHlvdXIgb2JqZWN0IGluIGEKK3BhcnRpYWxseS1kZXN0cnVjdGVk
IHN0YXRlLiBVc2UgYXNzZXJ0aW9ucyBjYXJlZnVsbHkgaW4gdGhlc2Ugc2l0dWF0aW9ucyEKKwor
IyBUZWFjaGluZyBHb29nbGUgVGVzdCBIb3cgdG8gUHJpbnQgWW91ciBWYWx1ZXMgIworCitXaGVu
IGEgdGVzdCBhc3NlcnRpb24gc3VjaCBhcyBgRVhQRUNUX0VRYCBmYWlscywgR29vZ2xlIFRlc3Qg
cHJpbnRzIHRoZQorYXJndW1lbnQgdmFsdWVzIHRvIGhlbHAgeW91IGRlYnVnLiAgSXQgZG9lcyB0
aGlzIHVzaW5nIGEKK3VzZXItZXh0ZW5zaWJsZSB2YWx1ZSBwcmludGVyLgorCitUaGlzIHByaW50
ZXIga25vd3MgaG93IHRvIHByaW50IGJ1aWx0LWluIEMrKyB0eXBlcywgbmF0aXZlIGFycmF5cywg
U1RMCitjb250YWluZXJzLCBhbmQgYW55IHR5cGUgdGhhdCBzdXBwb3J0cyB0aGUgYDw8YCBvcGVy
YXRvci4gIEZvciBvdGhlcgordHlwZXMsIGl0IHByaW50cyB0aGUgcmF3IGJ5dGVzIGluIHRoZSB2
YWx1ZSBhbmQgaG9wZXMgdGhhdCB5b3UgdGhlCit1c2VyIGNhbiBmaWd1cmUgaXQgb3V0LgorCitB
cyBtZW50aW9uZWQgZWFybGllciwgdGhlIHByaW50ZXIgaXMgX2V4dGVuc2libGVfLiAgVGhhdCBt
ZWFucworeW91IGNhbiB0ZWFjaCBpdCB0byBkbyBhIGJldHRlciBqb2IgYXQgcHJpbnRpbmcgeW91
ciBwYXJ0aWN1bGFyIHR5cGUKK3RoYW4gdG8gZHVtcCB0aGUgYnl0ZXMuICBUbyBkbyB0aGF0LCBk
ZWZpbmUgYDw8YCBmb3IgeW91ciB0eXBlOgorCitgYGAKKyNpbmNsdWRlIDxpb3N0cmVhbT4KKwor
bmFtZXNwYWNlIGZvbyB7CisKK2NsYXNzIEJhciB7IC4uLiB9OyAgLy8gV2Ugd2FudCBHb29nbGUg
VGVzdCB0byBiZSBhYmxlIHRvIHByaW50IGluc3RhbmNlcyBvZiB0aGlzLgorCisvLyBJdCdzIGlt
cG9ydGFudCB0aGF0IHRoZSA8PCBvcGVyYXRvciBpcyBkZWZpbmVkIGluIHRoZSBTQU1FCisvLyBu
YW1lc3BhY2UgdGhhdCBkZWZpbmVzIEJhci4gIEMrKydzIGxvb2stdXAgcnVsZXMgcmVseSBvbiB0
aGF0LgorOjpzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoOjpzdGQ6Om9zdHJlYW0mIG9zLCBjb25z
dCBCYXImIGJhcikgeworICByZXR1cm4gb3MgPDwgYmFyLkRlYnVnU3RyaW5nKCk7ICAvLyB3aGF0
ZXZlciBuZWVkZWQgdG8gcHJpbnQgYmFyIHRvIG9zCit9CisKK30gIC8vIG5hbWVzcGFjZSBmb28K
K2BgYAorCitTb21ldGltZXMsIHRoaXMgbWlnaHQgbm90IGJlIGFuIG9wdGlvbjogeW91ciB0ZWFt
IG1heSBjb25zaWRlciBpdCBiYWQKK3N0eWxlIHRvIGhhdmUgYSBgPDxgIG9wZXJhdG9yIGZvciBg
QmFyYCwgb3IgYEJhcmAgbWF5IGFscmVhZHkgaGF2ZSBhCitgPDxgIG9wZXJhdG9yIHRoYXQgZG9l
c24ndCBkbyB3aGF0IHlvdSB3YW50IChhbmQgeW91IGNhbm5vdCBjaGFuZ2UKK2l0KS4gIElmIHNv
LCB5b3UgY2FuIGluc3RlYWQgZGVmaW5lIGEgYFByaW50VG8oKWAgZnVuY3Rpb24gbGlrZSB0aGlz
OgorCitgYGAKKyNpbmNsdWRlIDxpb3N0cmVhbT4KKworbmFtZXNwYWNlIGZvbyB7CisKK2NsYXNz
IEJhciB7IC4uLiB9OworCisvLyBJdCdzIGltcG9ydGFudCB0aGF0IFByaW50VG8oKSBpcyBkZWZp
bmVkIGluIHRoZSBTQU1FCisvLyBuYW1lc3BhY2UgdGhhdCBkZWZpbmVzIEJhci4gIEMrKydzIGxv
b2stdXAgcnVsZXMgcmVseSBvbiB0aGF0Lgordm9pZCBQcmludFRvKGNvbnN0IEJhciYgYmFyLCA6
OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgKm9zIDw8IGJhci5EZWJ1Z1N0cmluZygpOyAgLy8gd2hh
dGV2ZXIgbmVlZGVkIHRvIHByaW50IGJhciB0byBvcworfQorCit9ICAvLyBuYW1lc3BhY2UgZm9v
CitgYGAKKworSWYgeW91IGhhdmUgZGVmaW5lZCBib3RoIGA8PGAgYW5kIGBQcmludFRvKClgLCB0
aGUgbGF0dGVyIHdpbGwgYmUgdXNlZAord2hlbiBHb29nbGUgVGVzdCBpcyBjb25jZXJuZWQuICBU
aGlzIGFsbG93cyB5b3UgdG8gY3VzdG9taXplIGhvdyB0aGUgdmFsdWUKK2FwcGVhcnMgaW4gR29v
Z2xlIFRlc3QncyBvdXRwdXQgd2l0aG91dCBhZmZlY3RpbmcgY29kZSB0aGF0IHJlbGllcyBvbiB0
aGUKK2JlaGF2aW9yIG9mIGl0cyBgPDxgIG9wZXJhdG9yLgorCitJZiB5b3Ugd2FudCB0byBwcmlu
dCBhIHZhbHVlIGB4YCB1c2luZyBHb29nbGUgVGVzdCdzIHZhbHVlIHByaW50ZXIKK3lvdXJzZWxm
LCBqdXN0IGNhbGwgYDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhgX3hfYClgLCB3aGljaAorcmV0
dXJucyBhbiBgc3RkOjpzdHJpbmdgOgorCitgYGAKK3ZlY3RvcjxwYWlyPEJhciwgaW50PiA+IGJh
cl9pbnRzID0gR2V0QmFySW50VmVjdG9yKCk7CisKK0VYUEVDVF9UUlVFKElzQ29ycmVjdEJhcklu
dFZlY3RvcihiYXJfaW50cykpCisgICAgPDwgImJhcl9pbnRzID0gIiA8PCA6OnRlc3Rpbmc6OlBy
aW50VG9TdHJpbmcoYmFyX2ludHMpOworYGBgCisKKyMgRGVhdGggVGVzdHMgIworCitJbiBtYW55
IGFwcGxpY2F0aW9ucywgdGhlcmUgYXJlIGFzc2VydGlvbnMgdGhhdCBjYW4gY2F1c2UgYXBwbGlj
YXRpb24gZmFpbHVyZQoraWYgYSBjb25kaXRpb24gaXMgbm90IG1ldC4gVGhlc2Ugc2FuaXR5IGNo
ZWNrcywgd2hpY2ggZW5zdXJlIHRoYXQgdGhlIHByb2dyYW0KK2lzIGluIGEga25vd24gZ29vZCBz
dGF0ZSwgYXJlIHRoZXJlIHRvIGZhaWwgYXQgdGhlIGVhcmxpZXN0IHBvc3NpYmxlIHRpbWUgYWZ0
ZXIKK3NvbWUgcHJvZ3JhbSBzdGF0ZSBpcyBjb3JydXB0ZWQuIElmIHRoZSBhc3NlcnRpb24gY2hl
Y2tzIHRoZSB3cm9uZyBjb25kaXRpb24sCit0aGVuIHRoZSBwcm9ncmFtIG1heSBwcm9jZWVkIGlu
IGFuIGVycm9uZW91cyBzdGF0ZSwgd2hpY2ggY291bGQgbGVhZCB0byBtZW1vcnkKK2NvcnJ1cHRp
b24sIHNlY3VyaXR5IGhvbGVzLCBvciB3b3JzZS4gSGVuY2UgaXQgaXMgdml0YWxseSBpbXBvcnRh
bnQgdG8gdGVzdAordGhhdCBzdWNoIGFzc2VydGlvbiBzdGF0ZW1lbnRzIHdvcmsgYXMgZXhwZWN0
ZWQuCisKK1NpbmNlIHRoZXNlIHByZWNvbmRpdGlvbiBjaGVja3MgY2F1c2UgdGhlIHByb2Nlc3Nl
cyB0byBkaWUsIHdlIGNhbGwgc3VjaCB0ZXN0cworX2RlYXRoIHRlc3RzXy4gTW9yZSBnZW5lcmFs
bHksIGFueSB0ZXN0IHRoYXQgY2hlY2tzIHRoYXQgYSBwcm9ncmFtIHRlcm1pbmF0ZXMKKyhleGNl
cHQgYnkgdGhyb3dpbmcgYW4gZXhjZXB0aW9uKSBpbiBhbiBleHBlY3RlZCBmYXNoaW9uIGlzIGFs
c28gYSBkZWF0aCB0ZXN0LgorCitOb3RlIHRoYXQgaWYgYSBwaWVjZSBvZiBjb2RlIHRocm93cyBh
biBleGNlcHRpb24sIHdlIGRvbid0IGNvbnNpZGVyIGl0ICJkZWF0aCIKK2ZvciB0aGUgcHVycG9z
ZSBvZiBkZWF0aCB0ZXN0cywgYXMgdGhlIGNhbGxlciBvZiB0aGUgY29kZSBjb3VsZCBjYXRjaCB0
aGUgZXhjZXB0aW9uCithbmQgYXZvaWQgdGhlIGNyYXNoLiBJZiB5b3Ugd2FudCB0byB2ZXJpZnkg
ZXhjZXB0aW9ucyB0aHJvd24gYnkgeW91ciBjb2RlLAorc2VlIFtFeGNlcHRpb24gQXNzZXJ0aW9u
c10oI2V4Y2VwdGlvbi1hc3NlcnRpb25zKS4KKworSWYgeW91IHdhbnQgdG8gdGVzdCBgRVhQRUNU
XyooKS9BU1NFUlRfKigpYCBmYWlsdXJlcyBpbiB5b3VyIHRlc3QgY29kZSwgc2VlIFtDYXRjaGlu
ZyBGYWlsdXJlc10oI2NhdGNoaW5nLWZhaWx1cmVzKS4KKworIyMgSG93IHRvIFdyaXRlIGEgRGVh
dGggVGVzdCAjIworCitHb29nbGUgVGVzdCBoYXMgdGhlIGZvbGxvd2luZyBtYWNyb3MgdG8gc3Vw
cG9ydCBkZWF0aCB0ZXN0czoKKworfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBh
c3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKK3wgYEFTU0VSVF9ERUFUSChgX3N0
YXRlbWVudCwgcmVnZXhfYCk7IHwgYEVYUEVDVF9ERUFUSChgX3N0YXRlbWVudCwgcmVnZXhfYCk7
IHwgX3N0YXRlbWVudF8gY3Jhc2hlcyB3aXRoIHRoZSBnaXZlbiBlcnJvciB8Cit8IGBBU1NFUlRf
REVBVEhfSUZfU1VQUE9SVEVEKGBfc3RhdGVtZW50LCByZWdleF9gKTsgfCBgRVhQRUNUX0RFQVRI
X0lGX1NVUFBPUlRFRChgX3N0YXRlbWVudCwgcmVnZXhfYCk7IHwgaWYgZGVhdGggdGVzdHMgYXJl
IHN1cHBvcnRlZCwgdmVyaWZpZXMgdGhhdCBfc3RhdGVtZW50XyBjcmFzaGVzIHdpdGggdGhlIGdp
dmVuIGVycm9yOyBvdGhlcndpc2UgdmVyaWZpZXMgbm90aGluZyB8Cit8IGBBU1NFUlRfRVhJVChg
X3N0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleF9gKTsgfCBgRVhQRUNUX0VYSVQoYF9zdGF0ZW1l
bnQsIHByZWRpY2F0ZSwgcmVnZXhfYCk7IHxfc3RhdGVtZW50XyBleGl0cyB3aXRoIHRoZSBnaXZl
biBlcnJvciBhbmQgaXRzIGV4aXQgY29kZSBtYXRjaGVzIF9wcmVkaWNhdGVfIHwKKword2hlcmUg
X3N0YXRlbWVudF8gaXMgYSBzdGF0ZW1lbnQgdGhhdCBpcyBleHBlY3RlZCB0byBjYXVzZSB0aGUg
cHJvY2VzcyB0bworZGllLCBfcHJlZGljYXRlXyBpcyBhIGZ1bmN0aW9uIG9yIGZ1bmN0aW9uIG9i
amVjdCB0aGF0IGV2YWx1YXRlcyBhbiBpbnRlZ2VyCitleGl0IHN0YXR1cywgYW5kIF9yZWdleF8g
aXMgYSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCB0aGUgc3RkZXJyIG91dHB1dCBvZgorX3N0YXRl
bWVudF8gaXMgZXhwZWN0ZWQgdG8gbWF0Y2guIE5vdGUgdGhhdCBfc3RhdGVtZW50XyBjYW4gYmUg
X2FueSB2YWxpZAorc3RhdGVtZW50XyAoaW5jbHVkaW5nIF9jb21wb3VuZCBzdGF0ZW1lbnRfKSBh
bmQgZG9lc24ndCBoYXZlIHRvIGJlIGFuCitleHByZXNzaW9uLgorCitBcyB1c3VhbCwgdGhlIGBB
U1NFUlRgIHZhcmlhbnRzIGFib3J0IHRoZSBjdXJyZW50IHRlc3QgZnVuY3Rpb24sIHdoaWxlIHRo
ZQorYEVYUEVDVGAgdmFyaWFudHMgZG8gbm90LgorCisqKk5vdGU6KiogV2UgdXNlIHRoZSB3b3Jk
ICJjcmFzaCIgaGVyZSB0byBtZWFuIHRoYXQgdGhlIHByb2Nlc3MKK3Rlcm1pbmF0ZXMgd2l0aCBh
IF9ub24temVyb18gZXhpdCBzdGF0dXMgY29kZS4gIFRoZXJlIGFyZSB0d28KK3Bvc3NpYmlsaXRp
ZXM6IGVpdGhlciB0aGUgcHJvY2VzcyBoYXMgY2FsbGVkIGBleGl0KClgIG9yIGBfZXhpdCgpYAor
d2l0aCBhIG5vbi16ZXJvIHZhbHVlLCBvciBpdCBtYXkgYmUga2lsbGVkIGJ5IGEgc2lnbmFsLgor
CitUaGlzIG1lYW5zIHRoYXQgaWYgX3N0YXRlbWVudF8gdGVybWluYXRlcyB0aGUgcHJvY2VzcyB3
aXRoIGEgMCBleGl0Citjb2RlLCBpdCBpcyBfbm90XyBjb25zaWRlcmVkIGEgY3Jhc2ggYnkgYEVY
UEVDVF9ERUFUSGAuICBVc2UKK2BFWFBFQ1RfRVhJVGAgaW5zdGVhZCBpZiB0aGlzIGlzIHRoZSBj
YXNlLCBvciBpZiB5b3Ugd2FudCB0byByZXN0cmljdAordGhlIGV4aXQgY29kZSBtb3JlIHByZWNp
c2VseS4KKworQSBwcmVkaWNhdGUgaGVyZSBtdXN0IGFjY2VwdCBhbiBgaW50YCBhbmQgcmV0dXJu
IGEgYGJvb2xgLiBUaGUgZGVhdGggdGVzdAorc3VjY2VlZHMgb25seSBpZiB0aGUgcHJlZGljYXRl
IHJldHVybnMgYHRydWVgLiBHb29nbGUgVGVzdCBkZWZpbmVzIGEgZmV3CitwcmVkaWNhdGVzIHRo
YXQgaGFuZGxlIHRoZSBtb3N0IGNvbW1vbiBjYXNlczoKKworYGBgCis6OnRlc3Rpbmc6OkV4aXRl
ZFdpdGhDb2RlKGV4aXRfY29kZSkKK2BgYAorCitUaGlzIGV4cHJlc3Npb24gaXMgYHRydWVgIGlm
IHRoZSBwcm9ncmFtIGV4aXRlZCBub3JtYWxseSB3aXRoIHRoZSBnaXZlbiBleGl0Citjb2RlLgor
CitgYGAKKzo6dGVzdGluZzo6S2lsbGVkQnlTaWduYWwoc2lnbmFsX251bWJlcikgIC8vIE5vdCBh
dmFpbGFibGUgb24gV2luZG93cy4KK2BgYAorCitUaGlzIGV4cHJlc3Npb24gaXMgYHRydWVgIGlm
IHRoZSBwcm9ncmFtIHdhcyBraWxsZWQgYnkgdGhlIGdpdmVuIHNpZ25hbC4KKworVGhlIGAqX0RF
QVRIYCBtYWNyb3MgYXJlIGNvbnZlbmllbnQgd3JhcHBlcnMgZm9yIGAqX0VYSVRgIHRoYXQgdXNl
IGEgcHJlZGljYXRlCit0aGF0IHZlcmlmaWVzIHRoZSBwcm9jZXNzJyBleGl0IGNvZGUgaXMgbm9u
LXplcm8uCisKK05vdGUgdGhhdCBhIGRlYXRoIHRlc3Qgb25seSBjYXJlcyBhYm91dCB0aHJlZSB0
aGluZ3M6CisKKyAgMS4gZG9lcyBfc3RhdGVtZW50XyBhYm9ydCBvciBleGl0IHRoZSBwcm9jZXNz
PworICAxLiAoaW4gdGhlIGNhc2Ugb2YgYEFTU0VSVF9FWElUYCBhbmQgYEVYUEVDVF9FWElUYCkg
ZG9lcyB0aGUgZXhpdCBzdGF0dXMgc2F0aXNmeSBfcHJlZGljYXRlXz8gIE9yIChpbiB0aGUgY2Fz
ZSBvZiBgQVNTRVJUX0RFQVRIYCBhbmQgYEVYUEVDVF9ERUFUSGApIGlzIHRoZSBleGl0IHN0YXR1
cyBub24temVybz8gIEFuZAorICAxLiBkb2VzIHRoZSBzdGRlcnIgb3V0cHV0IG1hdGNoIF9yZWdl
eF8/CisKK0luIHBhcnRpY3VsYXIsIGlmIF9zdGF0ZW1lbnRfIGdlbmVyYXRlcyBhbiBgQVNTRVJU
XypgIG9yIGBFWFBFQ1RfKmAgZmFpbHVyZSwgaXQgd2lsbCAqKm5vdCoqIGNhdXNlIHRoZSBkZWF0
aCB0ZXN0IHRvIGZhaWwsIGFzIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgZG9uJ3QgYWJvcnQgdGhl
IHByb2Nlc3MuCisKK1RvIHdyaXRlIGEgZGVhdGggdGVzdCwgc2ltcGx5IHVzZSBvbmUgb2YgdGhl
IGFib3ZlIG1hY3JvcyBpbnNpZGUgeW91ciB0ZXN0CitmdW5jdGlvbi4gRm9yIGV4YW1wbGUsCisK
K2BgYAorVEVTVChNeURlYXRoVGVzdCwgRm9vKSB7CisgIC8vIFRoaXMgZGVhdGggdGVzdCB1c2Vz
IGEgY29tcG91bmQgc3RhdGVtZW50LgorICBBU1NFUlRfREVBVEgoeyBpbnQgbiA9IDU7IEZvbygm
bik7IH0sICJFcnJvciBvbiBsaW5lIC4qIG9mIEZvbygpIik7Cit9CitURVNUKE15RGVhdGhUZXN0
LCBOb3JtYWxFeGl0KSB7CisgIEVYUEVDVF9FWElUKE5vcm1hbEV4aXQoKSwgOjp0ZXN0aW5nOjpF
eGl0ZWRXaXRoQ29kZSgwKSwgIlN1Y2Nlc3MiKTsKK30KK1RFU1QoTXlEZWF0aFRlc3QsIEtpbGxN
eXNlbGYpIHsKKyAgRVhQRUNUX0VYSVQoS2lsbE15c2VsZigpLCA6OnRlc3Rpbmc6OktpbGxlZEJ5
U2lnbmFsKFNJR0tJTEwpLCAiU2VuZGluZyBteXNlbGYgdW5ibG9ja2FibGUgc2lnbmFsIik7Cit9
CitgYGAKKwordmVyaWZpZXMgdGhhdDoKKworICAqIGNhbGxpbmcgYEZvbyg1KWAgY2F1c2VzIHRo
ZSBwcm9jZXNzIHRvIGRpZSB3aXRoIHRoZSBnaXZlbiBlcnJvciBtZXNzYWdlLAorICAqIGNhbGxp
bmcgYE5vcm1hbEV4aXQoKWAgY2F1c2VzIHRoZSBwcm9jZXNzIHRvIHByaW50IGAiU3VjY2VzcyJg
IHRvIHN0ZGVyciBhbmQgZXhpdCB3aXRoIGV4aXQgY29kZSAwLCBhbmQKKyAgKiBjYWxsaW5nIGBL
aWxsTXlzZWxmKClgIGtpbGxzIHRoZSBwcm9jZXNzIHdpdGggc2lnbmFsIGBTSUdLSUxMYC4KKwor
VGhlIHRlc3QgZnVuY3Rpb24gYm9keSBtYXkgY29udGFpbiBvdGhlciBhc3NlcnRpb25zIGFuZCBz
dGF0ZW1lbnRzIGFzIHdlbGwsIGlmCituZWNlc3NhcnkuCisKK19JbXBvcnRhbnQ6XyBXZSBzdHJv
bmdseSByZWNvbW1lbmQgeW91IHRvIGZvbGxvdyB0aGUgY29udmVudGlvbiBvZiBuYW1pbmcgeW91
cgordGVzdCBjYXNlIChub3QgdGVzdCkgYCpEZWF0aFRlc3RgIHdoZW4gaXQgY29udGFpbnMgYSBk
ZWF0aCB0ZXN0LCBhcworZGVtb25zdHJhdGVkIGluIHRoZSBhYm92ZSBleGFtcGxlLiBUaGUgYERl
YXRoIFRlc3RzIEFuZCBUaHJlYWRzYCBzZWN0aW9uIGJlbG93CitleHBsYWlucyB3aHkuCisKK0lm
IGEgdGVzdCBmaXh0dXJlIGNsYXNzIGlzIHNoYXJlZCBieSBub3JtYWwgdGVzdHMgYW5kIGRlYXRo
IHRlc3RzLCB5b3UKK2NhbiB1c2UgdHlwZWRlZiB0byBpbnRyb2R1Y2UgYW4gYWxpYXMgZm9yIHRo
ZSBmaXh0dXJlIGNsYXNzIGFuZCBhdm9pZAorZHVwbGljYXRpbmcgaXRzIGNvZGU6CitgYGAKK2Ns
YXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsgLi4uIH07CisKK3R5cGVkZWYg
Rm9vVGVzdCBGb29EZWF0aFRlc3Q7CisKK1RFU1RfRihGb29UZXN0LCBEb2VzVGhpcykgeworICAv
LyBub3JtYWwgdGVzdAorfQorCitURVNUX0YoRm9vRGVhdGhUZXN0LCBEb2VzVGhhdCkgeworICAv
LyBkZWF0aCB0ZXN0Cit9CitgYGAKKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzIChy
ZXF1aXJlcyBNU1ZDIDguMCBvciBhYm92ZSksIEN5Z3dpbiwgYW5kIE1hYyAodGhlIGxhdHRlciB0
aHJlZSBhcmUgc3VwcG9ydGVkIHNpbmNlIHYxLjMuMCkuICBgKEFTU0VSVHxFWFBFQ1QpX0RFQVRI
X0lGX1NVUFBPUlRFRGAgYXJlIG5ldyBpbiB2MS40LjAuCisKKyMjIFJlZ3VsYXIgRXhwcmVzc2lv
biBTeW50YXggIyMKKworT24gUE9TSVggc3lzdGVtcyAoZS5nLiBMaW51eCwgQ3lnd2luLCBhbmQg
TWFjKSwgR29vZ2xlIFRlc3QgdXNlcyB0aGUKK1tQT1NJWCBleHRlbmRlZCByZWd1bGFyIGV4cHJl
c3Npb25dKGh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAwOTY5NTM5OS9iYXNl
ZGVmcy94YmRfY2hhcDA5Lmh0bWwjdGFnXzA5XzA0KQorc3ludGF4IGluIGRlYXRoIHRlc3RzLiBU
byBsZWFybiBhYm91dCB0aGlzIHN5bnRheCwgeW91IG1heSB3YW50IHRvIHJlYWQgdGhpcyBbV2lr
aXBlZGlhIGVudHJ5XShodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JlZ3VsYXJfZXhwcmVz
c2lvbiNQT1NJWF9FeHRlbmRlZF9SZWd1bGFyX0V4cHJlc3Npb25zKS4KKworT24gV2luZG93cywg
R29vZ2xlIFRlc3QgdXNlcyBpdHMgb3duIHNpbXBsZSByZWd1bGFyIGV4cHJlc3Npb24KK2ltcGxl
bWVudGF0aW9uLiBJdCBsYWNrcyBtYW55IGZlYXR1cmVzIHlvdSBjYW4gZmluZCBpbiBQT1NJWCBl
eHRlbmRlZAorcmVndWxhciBleHByZXNzaW9ucy4gIEZvciBleGFtcGxlLCB3ZSBkb24ndCBzdXBw
b3J0IHVuaW9uIChgInh8eSJgKSwKK2dyb3VwaW5nIChgIih4eSkiYCksIGJyYWNrZXRzIChgIlt4
eV0iYCksIGFuZCByZXBldGl0aW9uIGNvdW50CisoYCJ4ezUsN30iYCksIGFtb25nIG90aGVycy4g
QmVsb3cgaXMgd2hhdCB3ZSBkbyBzdXBwb3J0IChMZXR0ZXIgYEFgIGRlbm90ZXMgYQorbGl0ZXJh
bCBjaGFyYWN0ZXIsIHBlcmlvZCAoYC5gKSwgb3IgYSBzaW5nbGUgYFxcYCBlc2NhcGUgc2VxdWVu
Y2U7IGB4YAorYW5kIGB5YCBkZW5vdGUgcmVndWxhciBleHByZXNzaW9ucy4pOgorCit8IGBjYCB8
IG1hdGNoZXMgYW55IGxpdGVyYWwgY2hhcmFjdGVyIGBjYCB8Cit8Oi0tLS18Oi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Cit8IGBcXGRgIHwgbWF0Y2hlcyBhbnkgZGVjaW1hbCBk
aWdpdCAgICAgICAgIHwKK3wgYFxcRGAgfCBtYXRjaGVzIGFueSBjaGFyYWN0ZXIgdGhhdCdzIG5v
dCBhIGRlY2ltYWwgZGlnaXQgfAorfCBgXFxmYCB8IG1hdGNoZXMgYFxmYCAgICAgICAgICAgICAg
ICAgICAgICB8Cit8IGBcXG5gIHwgbWF0Y2hlcyBgXG5gICAgICAgICAgICAgICAgICAgICAgIHwK
K3wgYFxccmAgfCBtYXRjaGVzIGBccmAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgXFxzYCB8
IG1hdGNoZXMgYW55IEFTQ0lJIHdoaXRlc3BhY2UsIGluY2x1ZGluZyBgXG5gIHwKK3wgYFxcU2Ag
fCBtYXRjaGVzIGFueSBjaGFyYWN0ZXIgdGhhdCdzIG5vdCBhIHdoaXRlc3BhY2UgfAorfCBgXFx0
YCB8IG1hdGNoZXMgYFx0YCAgICAgICAgICAgICAgICAgICAgICB8Cit8IGBcXHZgIHwgbWF0Y2hl
cyBgXHZgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYFxcd2AgfCBtYXRjaGVzIGFueSBsZXR0
ZXIsIGBfYCwgb3IgZGVjaW1hbCBkaWdpdCB8Cit8IGBcXFdgIHwgbWF0Y2hlcyBhbnkgY2hhcmFj
dGVyIHRoYXQgYFxcd2AgZG9lc24ndCBtYXRjaCB8Cit8IGBcXGNgIHwgbWF0Y2hlcyBhbnkgbGl0
ZXJhbCBjaGFyYWN0ZXIgYGNgLCB3aGljaCBtdXN0IGJlIGEgcHVuY3R1YXRpb24gfAorfCBgXFwu
YCB8IG1hdGNoZXMgdGhlIGAuYCBjaGFyYWN0ZXIgICAgICAgICB8Cit8IGAuYCB8IG1hdGNoZXMg
YW55IHNpbmdsZSBjaGFyYWN0ZXIgZXhjZXB0IGBcbmAgfAorfCBgQT9gIHwgbWF0Y2hlcyAwIG9y
IDEgb2NjdXJyZW5jZXMgb2YgYEFgIHwKK3wgYEEqYCB8IG1hdGNoZXMgMCBvciBtYW55IG9jY3Vy
cmVuY2VzIG9mIGBBYCB8Cit8IGBBK2AgfCBtYXRjaGVzIDEgb3IgbWFueSBvY2N1cnJlbmNlcyBv
ZiBgQWAgfAorfCBgXmAgfCBtYXRjaGVzIHRoZSBiZWdpbm5pbmcgb2YgYSBzdHJpbmcgKG5vdCB0
aGF0IG9mIGVhY2ggbGluZSkgfAorfCBgJGAgfCBtYXRjaGVzIHRoZSBlbmQgb2YgYSBzdHJpbmcg
KG5vdCB0aGF0IG9mIGVhY2ggbGluZSkgfAorfCBgeHlgIHwgbWF0Y2hlcyBgeGAgZm9sbG93ZWQg
YnkgYHlgICAgICAgIHwKKworVG8gaGVscCB5b3UgZGV0ZXJtaW5lIHdoaWNoIGNhcGFiaWxpdHkg
aXMgYXZhaWxhYmxlIG9uIHlvdXIgc3lzdGVtLAorR29vZ2xlIFRlc3QgZGVmaW5lcyBtYWNybyBg
R1RFU1RfVVNFU19QT1NJWF9SRT0xYCB3aGVuIGl0IHVzZXMgUE9TSVgKK2V4dGVuZGVkIHJlZ3Vs
YXIgZXhwcmVzc2lvbnMsIG9yIGBHVEVTVF9VU0VTX1NJTVBMRV9SRT0xYCB3aGVuIGl0IHVzZXMK
K3RoZSBzaW1wbGUgdmVyc2lvbi4gIElmIHlvdSB3YW50IHlvdXIgZGVhdGggdGVzdHMgdG8gd29y
ayBpbiBib3RoCitjYXNlcywgeW91IGNhbiBlaXRoZXIgYCNpZmAgb24gdGhlc2UgbWFjcm9zIG9y
IHVzZSB0aGUgbW9yZSBsaW1pdGVkCitzeW50YXggb25seS4KKworIyMgSG93IEl0IFdvcmtzICMj
CisKK1VuZGVyIHRoZSBob29kLCBgQVNTRVJUX0VYSVQoKWAgc3Bhd25zIGEgbmV3IHByb2Nlc3Mg
YW5kIGV4ZWN1dGVzIHRoZQorZGVhdGggdGVzdCBzdGF0ZW1lbnQgaW4gdGhhdCBwcm9jZXNzLiBU
aGUgZGV0YWlscyBvZiBvZiBob3cgcHJlY2lzZWx5Cit0aGF0IGhhcHBlbnMgZGVwZW5kIG9uIHRo
ZSBwbGF0Zm9ybSBhbmQgdGhlIHZhcmlhYmxlCitgOjp0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRo
X3Rlc3Rfc3R5bGUpYCAod2hpY2ggaXMgaW5pdGlhbGl6ZWQgZnJvbSB0aGUKK2NvbW1hbmQtbGlu
ZSBmbGFnIGAtLWd0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGVgKS4KKworICAqIE9uIFBPU0lYIHN5c3Rl
bXMsIGBmb3JrKClgIChvciBgY2xvbmUoKWAgb24gTGludXgpIGlzIHVzZWQgdG8gc3Bhd24gdGhl
IGNoaWxkLCBhZnRlciB3aGljaDoKKyAgICAqIElmIHRoZSB2YXJpYWJsZSdzIHZhbHVlIGlzIGAi
ZmFzdCJgLCB0aGUgZGVhdGggdGVzdCBzdGF0ZW1lbnQgaXMgaW1tZWRpYXRlbHkgZXhlY3V0ZWQu
CisgICAgKiBJZiB0aGUgdmFyaWFibGUncyB2YWx1ZSBpcyBgInRocmVhZHNhZmUiYCwgdGhlIGNo
aWxkIHByb2Nlc3MgcmUtZXhlY3V0ZXMgdGhlIHVuaXQgdGVzdCBiaW5hcnkganVzdCBhcyBpdCB3
YXMgb3JpZ2luYWxseSBpbnZva2VkLCBidXQgd2l0aCBzb21lIGV4dHJhIGZsYWdzIHRvIGNhdXNl
IGp1c3QgdGhlIHNpbmdsZSBkZWF0aCB0ZXN0IHVuZGVyIGNvbnNpZGVyYXRpb24gdG8gYmUgcnVu
LgorICAqIE9uIFdpbmRvd3MsIHRoZSBjaGlsZCBpcyBzcGF3bmVkIHVzaW5nIHRoZSBgQ3JlYXRl
UHJvY2VzcygpYCBBUEksIGFuZCByZS1leGVjdXRlcyB0aGUgYmluYXJ5IHRvIGNhdXNlIGp1c3Qg
dGhlIHNpbmdsZSBkZWF0aCB0ZXN0IHVuZGVyIGNvbnNpZGVyYXRpb24gdG8gYmUgcnVuIC0gbXVj
aCBsaWtlIHRoZSBgdGhyZWFkc2FmZWAgbW9kZSBvbiBQT1NJWC4KKworT3RoZXIgdmFsdWVzIGZv
ciB0aGUgdmFyaWFibGUgYXJlIGlsbGVnYWwgYW5kIHdpbGwgY2F1c2UgdGhlIGRlYXRoIHRlc3Qg
dG8KK2ZhaWwuIEN1cnJlbnRseSwgdGhlIGZsYWcncyBkZWZhdWx0IHZhbHVlIGlzIGAiZmFzdCJg
LiBIb3dldmVyLCB3ZSByZXNlcnZlIHRoZQorcmlnaHQgdG8gY2hhbmdlIGl0IGluIHRoZSBmdXR1
cmUuIFRoZXJlZm9yZSwgeW91ciB0ZXN0cyBzaG91bGQgbm90IGRlcGVuZCBvbgordGhpcy4KKwor
SW4gZWl0aGVyIGNhc2UsIHRoZSBwYXJlbnQgcHJvY2VzcyB3YWl0cyBmb3IgdGhlIGNoaWxkIHBy
b2Nlc3MgdG8gY29tcGxldGUsIGFuZCBjaGVja3MgdGhhdAorCisgIDEuIHRoZSBjaGlsZCdzIGV4
aXQgc3RhdHVzIHNhdGlzZmllcyB0aGUgcHJlZGljYXRlLCBhbmQKKyAgMS4gdGhlIGNoaWxkJ3Mg
c3RkZXJyIG1hdGNoZXMgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbi4KKworSWYgdGhlIGRlYXRoIHRl
c3Qgc3RhdGVtZW50IHJ1bnMgdG8gY29tcGxldGlvbiB3aXRob3V0IGR5aW5nLCB0aGUgY2hpbGQK
K3Byb2Nlc3Mgd2lsbCBub25ldGhlbGVzcyB0ZXJtaW5hdGUsIGFuZCB0aGUgYXNzZXJ0aW9uIGZh
aWxzLgorCisjIyBEZWF0aCBUZXN0cyBBbmQgVGhyZWFkcyAjIworCitUaGUgcmVhc29uIGZvciB0
aGUgdHdvIGRlYXRoIHRlc3Qgc3R5bGVzIGhhcyB0byBkbyB3aXRoIHRocmVhZCBzYWZldHkuIER1
ZSB0bword2VsbC1rbm93biBwcm9ibGVtcyB3aXRoIGZvcmtpbmcgaW4gdGhlIHByZXNlbmNlIG9m
IHRocmVhZHMsIGRlYXRoIHRlc3RzIHNob3VsZAorYmUgcnVuIGluIGEgc2luZ2xlLXRocmVhZGVk
IGNvbnRleHQuIFNvbWV0aW1lcywgaG93ZXZlciwgaXQgaXNuJ3QgZmVhc2libGUgdG8KK2FycmFu
Z2UgdGhhdCBraW5kIG9mIGVudmlyb25tZW50LiBGb3IgZXhhbXBsZSwgc3RhdGljYWxseS1pbml0
aWFsaXplZCBtb2R1bGVzCittYXkgc3RhcnQgdGhyZWFkcyBiZWZvcmUgbWFpbiBpcyBldmVyIHJl
YWNoZWQuIE9uY2UgdGhyZWFkcyBoYXZlIGJlZW4gY3JlYXRlZCwKK2l0IG1heSBiZSBkaWZmaWN1
bHQgb3IgaW1wb3NzaWJsZSB0byBjbGVhbiB0aGVtIHVwLgorCitHb29nbGUgVGVzdCBoYXMgdGhy
ZWUgZmVhdHVyZXMgaW50ZW5kZWQgdG8gcmFpc2UgYXdhcmVuZXNzIG9mIHRocmVhZGluZyBpc3N1
ZXMuCisKKyAgMS4gQSB3YXJuaW5nIGlzIGVtaXR0ZWQgaWYgbXVsdGlwbGUgdGhyZWFkcyBhcmUg
cnVubmluZyB3aGVuIGEgZGVhdGggdGVzdCBpcyBlbmNvdW50ZXJlZC4KKyAgMS4gVGVzdCBjYXNl
cyB3aXRoIGEgbmFtZSBlbmRpbmcgaW4gIkRlYXRoVGVzdCIgYXJlIHJ1biBiZWZvcmUgYWxsIG90
aGVyIHRlc3RzLgorICAxLiBJdCB1c2VzIGBjbG9uZSgpYCBpbnN0ZWFkIG9mIGBmb3JrKClgIHRv
IHNwYXduIHRoZSBjaGlsZCBwcm9jZXNzIG9uIExpbnV4IChgY2xvbmUoKWAgaXMgbm90IGF2YWls
YWJsZSBvbiBDeWd3aW4gYW5kIE1hYyksIGFzIGBmb3JrKClgIGlzIG1vcmUgbGlrZWx5IHRvIGNh
dXNlIHRoZSBjaGlsZCB0byBoYW5nIHdoZW4gdGhlIHBhcmVudCBwcm9jZXNzIGhhcyBtdWx0aXBs
ZSB0aHJlYWRzLgorCitJdCdzIHBlcmZlY3RseSBmaW5lIHRvIGNyZWF0ZSB0aHJlYWRzIGluc2lk
ZSBhIGRlYXRoIHRlc3Qgc3RhdGVtZW50OyB0aGV5IGFyZQorZXhlY3V0ZWQgaW4gYSBzZXBhcmF0
ZSBwcm9jZXNzIGFuZCBjYW5ub3QgYWZmZWN0IHRoZSBwYXJlbnQuCisKKyMjIERlYXRoIFRlc3Qg
U3R5bGVzICMjCisKK1RoZSAidGhyZWFkc2FmZSIgZGVhdGggdGVzdCBzdHlsZSB3YXMgaW50cm9k
dWNlZCBpbiBvcmRlciB0byBoZWxwIG1pdGlnYXRlIHRoZQorcmlza3Mgb2YgdGVzdGluZyBpbiBh
IHBvc3NpYmx5IG11bHRpdGhyZWFkZWQgZW52aXJvbm1lbnQuIEl0IHRyYWRlcyBpbmNyZWFzZWQK
K3Rlc3QgZXhlY3V0aW9uIHRpbWUgKHBvdGVudGlhbGx5IGRyYW1hdGljYWxseSBzbykgZm9yIGlt
cHJvdmVkIHRocmVhZCBzYWZldHkuCitXZSBzdWdnZXN0IHVzaW5nIHRoZSBmYXN0ZXIsIGRlZmF1
bHQgImZhc3QiIHN0eWxlIHVubGVzcyB5b3VyIHRlc3QgaGFzIHNwZWNpZmljCitwcm9ibGVtcyB3
aXRoIGl0LgorCitZb3UgY2FuIGNob29zZSBhIHBhcnRpY3VsYXIgc3R5bGUgb2YgZGVhdGggdGVz
dHMgYnkgc2V0dGluZyB0aGUgZmxhZworcHJvZ3JhbW1hdGljYWxseToKKworYGBgCis6OnRlc3Rp
bmc6OkZMQUdTX2d0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGUgPSAidGhyZWFkc2FmZSI7CitgYGAKKwor
WW91IGNhbiBkbyB0aGlzIGluIGBtYWluKClgIHRvIHNldCB0aGUgc3R5bGUgZm9yIGFsbCBkZWF0
aCB0ZXN0cyBpbiB0aGUKK2JpbmFyeSwgb3IgaW4gaW5kaXZpZHVhbCB0ZXN0cy4gUmVjYWxsIHRo
YXQgZmxhZ3MgYXJlIHNhdmVkIGJlZm9yZSBydW5uaW5nIGVhY2gKK3Rlc3QgYW5kIHJlc3RvcmVk
IGFmdGVyd2FyZHMsIHNvIHlvdSBuZWVkIG5vdCBkbyB0aGF0IHlvdXJzZWxmLiBGb3IgZXhhbXBs
ZToKKworYGBgCitURVNUKE15RGVhdGhUZXN0LCBUZXN0T25lKSB7CisgIDo6dGVzdGluZzo6RkxB
R1NfZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZSA9ICJ0aHJlYWRzYWZlIjsKKyAgLy8gVGhpcyB0ZXN0
IGlzIHJ1biBpbiB0aGUgInRocmVhZHNhZmUiIHN0eWxlOgorICBBU1NFUlRfREVBVEgoVGhpc1No
b3VsZERpZSgpLCAiIik7Cit9CisKK1RFU1QoTXlEZWF0aFRlc3QsIFRlc3RUd28pIHsKKyAgLy8g
VGhpcyB0ZXN0IGlzIHJ1biBpbiB0aGUgImZhc3QiIHN0eWxlOgorICBBU1NFUlRfREVBVEgoVGhp
c1Nob3VsZERpZSgpLCAiIik7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikg
eworICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKyAgOjp0ZXN0aW5n
OjpGTEFHU19ndGVzdF9kZWF0aF90ZXN0X3N0eWxlID0gImZhc3QiOworICByZXR1cm4gUlVOX0FM
TF9URVNUUygpOworfQorYGBgCisKKyMjIENhdmVhdHMgIyMKKworVGhlIF9zdGF0ZW1lbnRfIGFy
Z3VtZW50IG9mIGBBU1NFUlRfRVhJVCgpYCBjYW4gYmUgYW55IHZhbGlkIEMrKyBzdGF0ZW1lbnQu
CitJZiBpdCBsZWF2ZXMgdGhlIGN1cnJlbnQgZnVuY3Rpb24gdmlhIGEgYHJldHVybmAgc3RhdGVt
ZW50IG9yIGJ5IHRocm93aW5nIGFuIGV4Y2VwdGlvbiwKK3RoZSBkZWF0aCB0ZXN0IGlzIGNvbnNp
ZGVyZWQgdG8gaGF2ZSBmYWlsZWQuICBTb21lIEdvb2dsZSBUZXN0IG1hY3JvcyBtYXkgcmV0dXJu
Citmcm9tIHRoZSBjdXJyZW50IGZ1bmN0aW9uIChlLmcuIGBBU1NFUlRfVFJVRSgpYCksIHNvIGJl
IHN1cmUgdG8gYXZvaWQgdGhlbSBpbiBfc3RhdGVtZW50Xy4KKworU2luY2UgX3N0YXRlbWVudF8g
cnVucyBpbiB0aGUgY2hpbGQgcHJvY2VzcywgYW55IGluLW1lbW9yeSBzaWRlIGVmZmVjdCAoZS5n
LgorbW9kaWZ5aW5nIGEgdmFyaWFibGUsIHJlbGVhc2luZyBtZW1vcnksIGV0YykgaXQgY2F1c2Vz
IHdpbGwgX25vdF8gYmUgb2JzZXJ2YWJsZQoraW4gdGhlIHBhcmVudCBwcm9jZXNzLiBJbiBwYXJ0
aWN1bGFyLCBpZiB5b3UgcmVsZWFzZSBtZW1vcnkgaW4gYSBkZWF0aCB0ZXN0LAoreW91ciBwcm9n
cmFtIHdpbGwgZmFpbCB0aGUgaGVhcCBjaGVjayBhcyB0aGUgcGFyZW50IHByb2Nlc3Mgd2lsbCBu
ZXZlciBzZWUgdGhlCittZW1vcnkgcmVjbGFpbWVkLiBUbyBzb2x2ZSB0aGlzIHByb2JsZW0sIHlv
dSBjYW4KKworICAxLiB0cnkgbm90IHRvIGZyZWUgbWVtb3J5IGluIGEgZGVhdGggdGVzdDsKKyAg
MS4gZnJlZSB0aGUgbWVtb3J5IGFnYWluIGluIHRoZSBwYXJlbnQgcHJvY2Vzczsgb3IKKyAgMS4g
ZG8gbm90IHVzZSB0aGUgaGVhcCBjaGVja2VyIGluIHlvdXIgcHJvZ3JhbS4KKworRHVlIHRvIGFu
IGltcGxlbWVudGF0aW9uIGRldGFpbCwgeW91IGNhbm5vdCBwbGFjZSBtdWx0aXBsZSBkZWF0aCB0
ZXN0Cithc3NlcnRpb25zIG9uIHRoZSBzYW1lIGxpbmU7IG90aGVyd2lzZSwgY29tcGlsYXRpb24g
d2lsbCBmYWlsIHdpdGggYW4gdW5vYnZpb3VzCitlcnJvciBtZXNzYWdlLgorCitEZXNwaXRlIHRo
ZSBpbXByb3ZlZCB0aHJlYWQgc2FmZXR5IGFmZm9yZGVkIGJ5IHRoZSAidGhyZWFkc2FmZSIgc3R5
bGUgb2YgZGVhdGgKK3Rlc3QsIHRocmVhZCBwcm9ibGVtcyBzdWNoIGFzIGRlYWRsb2NrIGFyZSBz
dGlsbCBwb3NzaWJsZSBpbiB0aGUgcHJlc2VuY2Ugb2YKK2hhbmRsZXJzIHJlZ2lzdGVyZWQgd2l0
aCBgcHRocmVhZF9hdGZvcmsoMylgLgorCisjIFVzaW5nIEFzc2VydGlvbnMgaW4gU3ViLXJvdXRp
bmVzICMKKworIyMgQWRkaW5nIFRyYWNlcyB0byBBc3NlcnRpb25zICMjCisKK0lmIGEgdGVzdCBz
dWItcm91dGluZSBpcyBjYWxsZWQgZnJvbSBzZXZlcmFsIHBsYWNlcywgd2hlbiBhbiBhc3NlcnRp
b24KK2luc2lkZSBpdCBmYWlscywgaXQgY2FuIGJlIGhhcmQgdG8gdGVsbCB3aGljaCBpbnZvY2F0
aW9uIG9mIHRoZQorc3ViLXJvdXRpbmUgdGhlIGZhaWx1cmUgaXMgZnJvbS4gIFlvdSBjYW4gYWxs
ZXZpYXRlIHRoaXMgcHJvYmxlbSB1c2luZworZXh0cmEgbG9nZ2luZyBvciBjdXN0b20gZmFpbHVy
ZSBtZXNzYWdlcywgYnV0IHRoYXQgdXN1YWxseSBjbHV0dGVycyB1cAoreW91ciB0ZXN0cy4gQSBi
ZXR0ZXIgc29sdXRpb24gaXMgdG8gdXNlIHRoZSBgU0NPUEVEX1RSQUNFYCBtYWNybzoKKworfCBg
U0NPUEVEX1RSQUNFKGBfbWVzc2FnZV9gKTtgIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS18CisKK3doZXJlIF9tZXNzYWdlXyBjYW4gYmUgYW55dGhpbmcgc3RyZWFtYWJsZSB0byBg
c3RkOjpvc3RyZWFtYC4gVGhpcworbWFjcm8gd2lsbCBjYXVzZSB0aGUgY3VycmVudCBmaWxlIG5h
bWUsIGxpbmUgbnVtYmVyLCBhbmQgdGhlIGdpdmVuCittZXNzYWdlIHRvIGJlIGFkZGVkIGluIGV2
ZXJ5IGZhaWx1cmUgbWVzc2FnZS4gVGhlIGVmZmVjdCB3aWxsIGJlCit1bmRvbmUgd2hlbiB0aGUg
Y29udHJvbCBsZWF2ZXMgdGhlIGN1cnJlbnQgbGV4aWNhbCBzY29wZS4KKworRm9yIGV4YW1wbGUs
CisKK2BgYAorMTA6IHZvaWQgU3ViMShpbnQgbikgeworMTE6ICAgRVhQRUNUX0VRKDEsIEJhcihu
KSk7CisxMjogICBFWFBFQ1RfRVEoMiwgQmFyKG4gKyAxKSk7CisxMzogfQorMTQ6CisxNTogVEVT
VChGb29UZXN0LCBCYXIpIHsKKzE2OiAgIHsKKzE3OiAgICAgU0NPUEVEX1RSQUNFKCJBIik7ICAv
LyBUaGlzIHRyYWNlIHBvaW50IHdpbGwgYmUgaW5jbHVkZWQgaW4KKzE4OiAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBldmVyeSBmYWlsdXJlIGluIHRoaXMgc2NvcGUuCisxOTogICAgIFN1YjEo
MSk7CisyMDogICB9CisyMTogICAvLyBOb3cgaXQgd29uJ3QuCisyMjogICBTdWIxKDkpOworMjM6
IH0KK2BgYAorCitjb3VsZCByZXN1bHQgaW4gbWVzc2FnZXMgbGlrZSB0aGVzZToKKworYGBgCitw
YXRoL3RvL2Zvb190ZXN0LmNjOjExOiBGYWlsdXJlCitWYWx1ZSBvZjogQmFyKG4pCitFeHBlY3Rl
ZDogMQorICBBY3R1YWw6IDIKKyAgIFRyYWNlOgorcGF0aC90by9mb29fdGVzdC5jYzoxNzogQQor
CitwYXRoL3RvL2Zvb190ZXN0LmNjOjEyOiBGYWlsdXJlCitWYWx1ZSBvZjogQmFyKG4gKyAxKQor
RXhwZWN0ZWQ6IDIKKyAgQWN0dWFsOiAzCitgYGAKKworV2l0aG91dCB0aGUgdHJhY2UsIGl0IHdv
dWxkJ3ZlIGJlZW4gZGlmZmljdWx0IHRvIGtub3cgd2hpY2ggaW52b2NhdGlvbgorb2YgYFN1YjEo
KWAgdGhlIHR3byBmYWlsdXJlcyBjb21lIGZyb20gcmVzcGVjdGl2ZWx5LiAoWW91IGNvdWxkIGFk
ZCBhbgorZXh0cmEgbWVzc2FnZSB0byBlYWNoIGFzc2VydGlvbiBpbiBgU3ViMSgpYCB0byBpbmRp
Y2F0ZSB0aGUgdmFsdWUgb2YKK2BuYCwgYnV0IHRoYXQncyB0ZWRpb3VzLikKKworU29tZSB0aXBz
IG9uIHVzaW5nIGBTQ09QRURfVFJBQ0VgOgorCisgIDEuIFdpdGggYSBzdWl0YWJsZSBtZXNzYWdl
LCBpdCdzIG9mdGVuIGVub3VnaCB0byB1c2UgYFNDT1BFRF9UUkFDRWAgYXQgdGhlIGJlZ2lubmlu
ZyBvZiBhIHN1Yi1yb3V0aW5lLCBpbnN0ZWFkIG9mIGF0IGVhY2ggY2FsbCBzaXRlLgorICAxLiBX
aGVuIGNhbGxpbmcgc3ViLXJvdXRpbmVzIGluc2lkZSBhIGxvb3AsIG1ha2UgdGhlIGxvb3AgaXRl
cmF0b3IgcGFydCBvZiB0aGUgbWVzc2FnZSBpbiBgU0NPUEVEX1RSQUNFYCBzdWNoIHRoYXQgeW91
IGNhbiBrbm93IHdoaWNoIGl0ZXJhdGlvbiB0aGUgZmFpbHVyZSBpcyBmcm9tLgorICAxLiBTb21l
dGltZXMgdGhlIGxpbmUgbnVtYmVyIG9mIHRoZSB0cmFjZSBwb2ludCBpcyBlbm91Z2ggZm9yIGlk
ZW50aWZ5aW5nIHRoZSBwYXJ0aWN1bGFyIGludm9jYXRpb24gb2YgYSBzdWItcm91dGluZS4gSW4g
dGhpcyBjYXNlLCB5b3UgZG9uJ3QgaGF2ZSB0byBjaG9vc2UgYSB1bmlxdWUgbWVzc2FnZSBmb3Ig
YFNDT1BFRF9UUkFDRWAuIFlvdSBjYW4gc2ltcGx5IHVzZSBgIiJgLgorICAxLiBZb3UgY2FuIHVz
ZSBgU0NPUEVEX1RSQUNFYCBpbiBhbiBpbm5lciBzY29wZSB3aGVuIHRoZXJlIGlzIG9uZSBpbiB0
aGUgb3V0ZXIgc2NvcGUuIEluIHRoaXMgY2FzZSwgYWxsIGFjdGl2ZSB0cmFjZSBwb2ludHMgd2ls
bCBiZSBpbmNsdWRlZCBpbiB0aGUgZmFpbHVyZSBtZXNzYWdlcywgaW4gcmV2ZXJzZSBvcmRlciB0
aGV5IGFyZSBlbmNvdW50ZXJlZC4KKyAgMS4gVGhlIHRyYWNlIGR1bXAgaXMgY2xpY2thYmxlIGlu
IEVtYWNzJyBjb21waWxhdGlvbiBidWZmZXIgLSBoaXQgcmV0dXJuIG9uIGEgbGluZSBudW1iZXIg
YW5kIHlvdSdsbCBiZSB0YWtlbiB0byB0aGF0IGxpbmUgaW4gdGhlIHNvdXJjZSBmaWxlIQorCitf
QXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMgUHJvcGFnYXRpbmcgRmF0
YWwgRmFpbHVyZXMgIyMKKworQSBjb21tb24gcGl0ZmFsbCB3aGVuIHVzaW5nIGBBU1NFUlRfKmAg
YW5kIGBGQUlMKmAgaXMgbm90IHVuZGVyc3RhbmRpbmcgdGhhdAord2hlbiB0aGV5IGZhaWwgdGhl
eSBvbmx5IGFib3J0IHRoZSBfY3VycmVudCBmdW5jdGlvbl8sIG5vdCB0aGUgZW50aXJlIHRlc3Qu
IEZvcgorZXhhbXBsZSwgdGhlIGZvbGxvd2luZyB0ZXN0IHdpbGwgc2VnZmF1bHQ6CitgYGAKK3Zv
aWQgU3Vicm91dGluZSgpIHsKKyAgLy8gR2VuZXJhdGVzIGEgZmF0YWwgZmFpbHVyZSBhbmQgYWJv
cnRzIHRoZSBjdXJyZW50IGZ1bmN0aW9uLgorICBBU1NFUlRfRVEoMSwgMik7CisgIC8vIFRoZSBm
b2xsb3dpbmcgd29uJ3QgYmUgZXhlY3V0ZWQuCisgIC4uLgorfQorCitURVNUKEZvb1Rlc3QsIEJh
cikgeworICBTdWJyb3V0aW5lKCk7CisgIC8vIFRoZSBpbnRlbmRlZCBiZWhhdmlvciBpcyBmb3Ig
dGhlIGZhdGFsIGZhaWx1cmUKKyAgLy8gaW4gU3Vicm91dGluZSgpIHRvIGFib3J0IHRoZSBlbnRp
cmUgdGVzdC4KKyAgLy8gVGhlIGFjdHVhbCBiZWhhdmlvcjogdGhlIGZ1bmN0aW9uIGdvZXMgb24g
YWZ0ZXIgU3Vicm91dGluZSgpIHJldHVybnMuCisgIGludCogcCA9IE5VTEw7CisgICpwID0gMzsg
Ly8gU2VnZmF1bHQhCit9CitgYGAKKworU2luY2Ugd2UgZG9uJ3QgdXNlIGV4Y2VwdGlvbnMsIGl0
IGlzIHRlY2huaWNhbGx5IGltcG9zc2libGUgdG8KK2ltcGxlbWVudCB0aGUgaW50ZW5kZWQgYmVo
YXZpb3IgaGVyZS4gIFRvIGFsbGV2aWF0ZSB0aGlzLCBHb29nbGUgVGVzdAorcHJvdmlkZXMgdHdv
IHNvbHV0aW9ucy4gIFlvdSBjb3VsZCB1c2UgZWl0aGVyIHRoZQorYChBU1NFUlR8RVhQRUNUKV9O
T19GQVRBTF9GQUlMVVJFYCBhc3NlcnRpb25zIG9yIHRoZQorYEhhc0ZhdGFsRmFpbHVyZSgpYCBm
dW5jdGlvbi4gIFRoZXkgYXJlIGRlc2NyaWJlZCBpbiB0aGUgZm9sbG93aW5nIHR3bworc3Vic2Vj
dGlvbnMuCisKKyMjIyBBc3NlcnRpbmcgb24gU3Vicm91dGluZXMgIyMjCisKK0FzIHNob3duIGFi
b3ZlLCBpZiB5b3VyIHRlc3QgY2FsbHMgYSBzdWJyb3V0aW5lIHRoYXQgaGFzIGFuIGBBU1NFUlRf
KmAKK2ZhaWx1cmUgaW4gaXQsIHRoZSB0ZXN0IHdpbGwgY29udGludWUgYWZ0ZXIgdGhlIHN1YnJv
dXRpbmUKK3JldHVybnMuIFRoaXMgbWF5IG5vdCBiZSB3aGF0IHlvdSB3YW50LgorCitPZnRlbiBw
ZW9wbGUgd2FudCBmYXRhbCBmYWlsdXJlcyB0byBwcm9wYWdhdGUgbGlrZSBleGNlcHRpb25zLiAg
Rm9yCit0aGF0IEdvb2dsZSBUZXN0IG9mZmVycyB0aGUgZm9sbG93aW5nIG1hY3JvczoKKworfCAq
KkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMq
KiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0t
LS0tLS0tLS0tLXwKK3wgYEFTU0VSVF9OT19GQVRBTF9GQUlMVVJFKGBfc3RhdGVtZW50X2ApO2Ag
fCBgRVhQRUNUX05PX0ZBVEFMX0ZBSUxVUkUoYF9zdGF0ZW1lbnRfYCk7YCB8IF9zdGF0ZW1lbnRf
IGRvZXNuJ3QgZ2VuZXJhdGUgYW55IG5ldyBmYXRhbCBmYWlsdXJlcyBpbiB0aGUgY3VycmVudCB0
aHJlYWQuIHwKKworT25seSBmYWlsdXJlcyBpbiB0aGUgdGhyZWFkIHRoYXQgZXhlY3V0ZXMgdGhl
IGFzc2VydGlvbiBhcmUgY2hlY2tlZCB0bworZGV0ZXJtaW5lIHRoZSByZXN1bHQgb2YgdGhpcyB0
eXBlIG9mIGFzc2VydGlvbnMuICBJZiBfc3RhdGVtZW50XworY3JlYXRlcyBuZXcgdGhyZWFkcywg
ZmFpbHVyZXMgaW4gdGhlc2UgdGhyZWFkcyBhcmUgaWdub3JlZC4KKworRXhhbXBsZXM6CisKK2Bg
YAorQVNTRVJUX05PX0ZBVEFMX0ZBSUxVUkUoRm9vKCkpOworCitpbnQgaTsKK0VYUEVDVF9OT19G
QVRBTF9GQUlMVVJFKHsKKyAgaSA9IEJhcigpOworfSk7CitgYGAKKworX0F2YWlsYWJpbGl0eTpf
IExpbnV4LCBXaW5kb3dzLCBNYWMuIEFzc2VydGlvbnMgZnJvbSBtdWx0aXBsZSB0aHJlYWRzCith
cmUgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQuCisKKyMjIyBDaGVja2luZyBmb3IgRmFpbHVyZXMg
aW4gdGhlIEN1cnJlbnQgVGVzdCAjIyMKKworYEhhc0ZhdGFsRmFpbHVyZSgpYCBpbiB0aGUgYDo6
dGVzdGluZzo6VGVzdGAgY2xhc3MgcmV0dXJucyBgdHJ1ZWAgaWYgYW4KK2Fzc2VydGlvbiBpbiB0
aGUgY3VycmVudCB0ZXN0IGhhcyBzdWZmZXJlZCBhIGZhdGFsIGZhaWx1cmUuIFRoaXMKK2FsbG93
cyBmdW5jdGlvbnMgdG8gY2F0Y2ggZmF0YWwgZmFpbHVyZXMgaW4gYSBzdWItcm91dGluZSBhbmQg
cmV0dXJuCitlYXJseS4KKworYGBgCitjbGFzcyBUZXN0IHsKKyBwdWJsaWM6CisgIC4uLgorICBz
dGF0aWMgYm9vbCBIYXNGYXRhbEZhaWx1cmUoKTsKK307CitgYGAKKworVGhlIHR5cGljYWwgdXNh
Z2UsIHdoaWNoIGJhc2ljYWxseSBzaW11bGF0ZXMgdGhlIGJlaGF2aW9yIG9mIGEgdGhyb3duCitl
eGNlcHRpb24sIGlzOgorCitgYGAKK1RFU1QoRm9vVGVzdCwgQmFyKSB7CisgIFN1YnJvdXRpbmUo
KTsKKyAgLy8gQWJvcnRzIGlmIFN1YnJvdXRpbmUoKSBoYWQgYSBmYXRhbCBmYWlsdXJlLgorICBp
ZiAoSGFzRmF0YWxGYWlsdXJlKCkpCisgICAgcmV0dXJuOworICAvLyBUaGUgZm9sbG93aW5nIHdv
bid0IGJlIGV4ZWN1dGVkLgorICAuLi4KK30KK2BgYAorCitJZiBgSGFzRmF0YWxGYWlsdXJlKClg
IGlzIHVzZWQgb3V0c2lkZSBvZiBgVEVTVCgpYCAsIGBURVNUX0YoKWAgLCBvciBhIHRlc3QKK2Zp
eHR1cmUsIHlvdSBtdXN0IGFkZCB0aGUgYDo6dGVzdGluZzo6VGVzdDo6YCBwcmVmaXgsIGFzIGlu
OgorCitgYGAKK2lmICg6OnRlc3Rpbmc6OlRlc3Q6Okhhc0ZhdGFsRmFpbHVyZSgpKQorICByZXR1
cm47CitgYGAKKworU2ltaWxhcmx5LCBgSGFzTm9uZmF0YWxGYWlsdXJlKClgIHJldHVybnMgYHRy
dWVgIGlmIHRoZSBjdXJyZW50IHRlc3QKK2hhcyBhdCBsZWFzdCBvbmUgbm9uLWZhdGFsIGZhaWx1
cmUsIGFuZCBgSGFzRmFpbHVyZSgpYCByZXR1cm5zIGB0cnVlYAoraWYgdGhlIGN1cnJlbnQgdGVz
dCBoYXMgYXQgbGVhc3Qgb25lIGZhaWx1cmUgb2YgZWl0aGVyIGtpbmQuCisKK19BdmFpbGFiaWxp
dHk6XyBMaW51eCwgV2luZG93cywgTWFjLiAgYEhhc05vbmZhdGFsRmFpbHVyZSgpYCBhbmQKK2BI
YXNGYWlsdXJlKClgIGFyZSBhdmFpbGFibGUgc2luY2UgdmVyc2lvbiAxLjQuMC4KKworIyBMb2dn
aW5nIEFkZGl0aW9uYWwgSW5mb3JtYXRpb24gIworCitJbiB5b3VyIHRlc3QgY29kZSwgeW91IGNh
biBjYWxsIGBSZWNvcmRQcm9wZXJ0eSgia2V5IiwgdmFsdWUpYCB0byBsb2cKK2FkZGl0aW9uYWwg
aW5mb3JtYXRpb24sIHdoZXJlIGB2YWx1ZWAgY2FuIGJlIGVpdGhlciBhIHN0cmluZyBvciBhbiBg
aW50YC4gVGhlIF9sYXN0XyB2YWx1ZSByZWNvcmRlZCBmb3IgYSBrZXkgd2lsbCBiZSBlbWl0dGVk
IHRvIHRoZSBYTUwgb3V0cHV0CitpZiB5b3Ugc3BlY2lmeSBvbmUuIEZvciBleGFtcGxlLCB0aGUg
dGVzdAorCitgYGAKK1RFU1RfRihXaWRnZXRVc2FnZVRlc3QsIE1pbkFuZE1heFdpZGdldHMpIHsK
KyAgUmVjb3JkUHJvcGVydHkoIk1heGltdW1XaWRnZXRzIiwgQ29tcHV0ZU1heFVzYWdlKCkpOwor
ICBSZWNvcmRQcm9wZXJ0eSgiTWluaW11bVdpZGdldHMiLCBDb21wdXRlTWluVXNhZ2UoKSk7Cit9
CitgYGAKKword2lsbCBvdXRwdXQgWE1MIGxpa2UgdGhpczoKKworYGBgCisuLi4KKyAgPHRlc3Rj
YXNlIG5hbWU9Ik1pbkFuZE1heFdpZGdldHMiIHN0YXR1cz0icnVuIiB0aW1lPSI2IiBjbGFzc25h
bWU9IldpZGdldFVzYWdlVGVzdCIKKyAgICAgICAgICAgIE1heGltdW1XaWRnZXRzPSIxMiIKKyAg
ICAgICAgICAgIE1pbmltdW1XaWRnZXRzPSI5IiAvPgorLi4uCitgYGAKKworX05vdGVfOgorICAq
IGBSZWNvcmRQcm9wZXJ0eSgpYCBpcyBhIHN0YXRpYyBtZW1iZXIgb2YgdGhlIGBUZXN0YCBjbGFz
cy4gVGhlcmVmb3JlIGl0IG5lZWRzIHRvIGJlIHByZWZpeGVkIHdpdGggYDo6dGVzdGluZzo6VGVz
dDo6YCBpZiB1c2VkIG91dHNpZGUgb2YgdGhlIGBURVNUYCBib2R5IGFuZCB0aGUgdGVzdCBmaXh0
dXJlIGNsYXNzLgorICAqIGBrZXlgIG11c3QgYmUgYSB2YWxpZCBYTUwgYXR0cmlidXRlIG5hbWUs
IGFuZCBjYW5ub3QgY29uZmxpY3Qgd2l0aCB0aGUgb25lcyBhbHJlYWR5IHVzZWQgYnkgR29vZ2xl
IFRlc3QgKGBuYW1lYCwgYHN0YXR1c2AsIGB0aW1lYCwgYGNsYXNzbmFtZWAsIGB0eXBlX3BhcmFt
YCwgYW5kIGB2YWx1ZV9wYXJhbWApLgorICAqIENhbGxpbmcgYFJlY29yZFByb3BlcnR5KClgIG91
dHNpZGUgb2YgdGhlIGxpZmVzcGFuIG9mIGEgdGVzdCBpcyBhbGxvd2VkLiBJZiBpdCdzIGNhbGxl
ZCBvdXRzaWRlIG9mIGEgdGVzdCBidXQgYmV0d2VlbiBhIHRlc3QgY2FzZSdzIGBTZXRVcFRlc3RD
YXNlKClgIGFuZCBgVGVhckRvd25UZXN0Q2FzZSgpYCBtZXRob2RzLCBpdCB3aWxsIGJlIGF0dHJp
YnV0ZWQgdG8gdGhlIFhNTCBlbGVtZW50IGZvciB0aGUgdGVzdCBjYXNlLiBJZiBpdCdzIGNhbGxl
ZCBvdXRzaWRlIG9mIGFsbCB0ZXN0IGNhc2VzIChlLmcuIGluIGEgdGVzdCBlbnZpcm9ubWVudCks
IGl0IHdpbGwgYmUgYXR0cmlidXRlZCB0byB0aGUgdG9wLWxldmVsIFhNTCBlbGVtZW50LgorCitf
QXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyBTaGFyaW5nIFJlc291cmNl
cyBCZXR3ZWVuIFRlc3RzIGluIHRoZSBTYW1lIFRlc3QgQ2FzZSAjCisKKworCitHb29nbGUgVGVz
dCBjcmVhdGVzIGEgbmV3IHRlc3QgZml4dHVyZSBvYmplY3QgZm9yIGVhY2ggdGVzdCBpbiBvcmRl
ciB0byBtYWtlCit0ZXN0cyBpbmRlcGVuZGVudCBhbmQgZWFzaWVyIHRvIGRlYnVnLiBIb3dldmVy
LCBzb21ldGltZXMgdGVzdHMgdXNlIHJlc291cmNlcwordGhhdCBhcmUgZXhwZW5zaXZlIHRvIHNl
dCB1cCwgbWFraW5nIHRoZSBvbmUtY29weS1wZXItdGVzdCBtb2RlbCBwcm9oaWJpdGl2ZWx5Citl
eHBlbnNpdmUuCisKK0lmIHRoZSB0ZXN0cyBkb24ndCBjaGFuZ2UgdGhlIHJlc291cmNlLCB0aGVy
ZSdzIG5vIGhhcm0gaW4gdGhlbSBzaGFyaW5nIGEKK3NpbmdsZSByZXNvdXJjZSBjb3B5LiBTbywg
aW4gYWRkaXRpb24gdG8gcGVyLXRlc3Qgc2V0LXVwL3RlYXItZG93biwgR29vZ2xlIFRlc3QKK2Fs
c28gc3VwcG9ydHMgcGVyLXRlc3QtY2FzZSBzZXQtdXAvdGVhci1kb3duLiBUbyB1c2UgaXQ6CisK
KyAgMS4gSW4geW91ciB0ZXN0IGZpeHR1cmUgY2xhc3MgKHNheSBgRm9vVGVzdGAgKSwgZGVmaW5l
IGFzIGBzdGF0aWNgIHNvbWUgbWVtYmVyIHZhcmlhYmxlcyB0byBob2xkIHRoZSBzaGFyZWQgcmVz
b3VyY2VzLgorICAxLiBJbiB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUgY2xhc3MsIGRlZmluZSBhIGBz
dGF0aWMgdm9pZCBTZXRVcFRlc3RDYXNlKClgIGZ1bmN0aW9uIChyZW1lbWJlciBub3QgdG8gc3Bl
bGwgaXQgYXMgKipgU2V0dXBUZXN0Q2FzZWAqKiB3aXRoIGEgc21hbGwgYHVgISkgdG8gc2V0IHVw
IHRoZSBzaGFyZWQgcmVzb3VyY2VzIGFuZCBhIGBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNl
KClgIGZ1bmN0aW9uIHRvIHRlYXIgdGhlbSBkb3duLgorCitUaGF0J3MgaXQhIEdvb2dsZSBUZXN0
IGF1dG9tYXRpY2FsbHkgY2FsbHMgYFNldFVwVGVzdENhc2UoKWAgYmVmb3JlIHJ1bm5pbmcgdGhl
CitfZmlyc3QgdGVzdF8gaW4gdGhlIGBGb29UZXN0YCB0ZXN0IGNhc2UgKGkuZS4gYmVmb3JlIGNy
ZWF0aW5nIHRoZSBmaXJzdAorYEZvb1Rlc3RgIG9iamVjdCksIGFuZCBjYWxscyBgVGVhckRvd25U
ZXN0Q2FzZSgpYCBhZnRlciBydW5uaW5nIHRoZSBfbGFzdCB0ZXN0XworaW4gaXQgKGkuZS4gYWZ0
ZXIgZGVsZXRpbmcgdGhlIGxhc3QgYEZvb1Rlc3RgIG9iamVjdCkuIEluIGJldHdlZW4sIHRoZSB0
ZXN0cworY2FuIHVzZSB0aGUgc2hhcmVkIHJlc291cmNlcy4KKworUmVtZW1iZXIgdGhhdCB0aGUg
dGVzdCBvcmRlciBpcyB1bmRlZmluZWQsIHNvIHlvdXIgY29kZSBjYW4ndCBkZXBlbmQgb24gYSB0
ZXN0CitwcmVjZWRpbmcgb3IgZm9sbG93aW5nIGFub3RoZXIuIEFsc28sIHRoZSB0ZXN0cyBtdXN0
IGVpdGhlciBub3QgbW9kaWZ5IHRoZQorc3RhdGUgb2YgYW55IHNoYXJlZCByZXNvdXJjZSwgb3Is
IGlmIHRoZXkgZG8gbW9kaWZ5IHRoZSBzdGF0ZSwgdGhleSBtdXN0CityZXN0b3JlIHRoZSBzdGF0
ZSB0byBpdHMgb3JpZ2luYWwgdmFsdWUgYmVmb3JlIHBhc3NpbmcgY29udHJvbCB0byB0aGUgbmV4
dAordGVzdC4KKworSGVyZSdzIGFuIGV4YW1wbGUgb2YgcGVyLXRlc3QtY2FzZSBzZXQtdXAgYW5k
IHRlYXItZG93bjoKK2BgYAorY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qg
eworIHByb3RlY3RlZDoKKyAgLy8gUGVyLXRlc3QtY2FzZSBzZXQtdXAuCisgIC8vIENhbGxlZCBi
ZWZvcmUgdGhlIGZpcnN0IHRlc3QgaW4gdGhpcyB0ZXN0IGNhc2UuCisgIC8vIENhbiBiZSBvbWl0
dGVkIGlmIG5vdCBuZWVkZWQuCisgIHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7CisgICAg
c2hhcmVkX3Jlc291cmNlXyA9IG5ldyAuLi47CisgIH0KKworICAvLyBQZXItdGVzdC1jYXNlIHRl
YXItZG93bi4KKyAgLy8gQ2FsbGVkIGFmdGVyIHRoZSBsYXN0IHRlc3QgaW4gdGhpcyB0ZXN0IGNh
c2UuCisgIC8vIENhbiBiZSBvbWl0dGVkIGlmIG5vdCBuZWVkZWQuCisgIHN0YXRpYyB2b2lkIFRl
YXJEb3duVGVzdENhc2UoKSB7CisgICAgZGVsZXRlIHNoYXJlZF9yZXNvdXJjZV87CisgICAgc2hh
cmVkX3Jlc291cmNlXyA9IE5VTEw7CisgIH0KKworICAvLyBZb3UgY2FuIGRlZmluZSBwZXItdGVz
dCBzZXQtdXAgYW5kIHRlYXItZG93biBsb2dpYyBhcyB1c3VhbC4KKyAgdmlydHVhbCB2b2lkIFNl
dFVwKCkgeyAuLi4gfQorICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7IC4uLiB9CisKKyAgLy8g
U29tZSBleHBlbnNpdmUgcmVzb3VyY2Ugc2hhcmVkIGJ5IGFsbCB0ZXN0cy4KKyAgc3RhdGljIFQq
IHNoYXJlZF9yZXNvdXJjZV87Cit9OworCitUKiBGb29UZXN0OjpzaGFyZWRfcmVzb3VyY2VfID0g
TlVMTDsKKworVEVTVF9GKEZvb1Rlc3QsIFRlc3QxKSB7CisgIC4uLiB5b3UgY2FuIHJlZmVyIHRv
IHNoYXJlZF9yZXNvdXJjZSBoZXJlIC4uLgorfQorVEVTVF9GKEZvb1Rlc3QsIFRlc3QyKSB7Cisg
IC4uLiB5b3UgY2FuIHJlZmVyIHRvIHNoYXJlZF9yZXNvdXJjZSBoZXJlIC4uLgorfQorYGBgCisK
K19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLgorCisjIEdsb2JhbCBTZXQtVXAg
YW5kIFRlYXItRG93biAjCisKK0p1c3QgYXMgeW91IGNhbiBkbyBzZXQtdXAgYW5kIHRlYXItZG93
biBhdCB0aGUgdGVzdCBsZXZlbCBhbmQgdGhlIHRlc3QgY2FzZQorbGV2ZWwsIHlvdSBjYW4gYWxz
byBkbyBpdCBhdCB0aGUgdGVzdCBwcm9ncmFtIGxldmVsLiBIZXJlJ3MgaG93LgorCitGaXJzdCwg
eW91IHN1YmNsYXNzIHRoZSBgOjp0ZXN0aW5nOjpFbnZpcm9ubWVudGAgY2xhc3MgdG8gZGVmaW5l
IGEgdGVzdAorZW52aXJvbm1lbnQsIHdoaWNoIGtub3dzIGhvdyB0byBzZXQtdXAgYW5kIHRlYXIt
ZG93bjoKKworYGBgCitjbGFzcyBFbnZpcm9ubWVudCB7CisgcHVibGljOgorICB2aXJ0dWFsIH5F
bnZpcm9ubWVudCgpIHt9CisgIC8vIE92ZXJyaWRlIHRoaXMgdG8gZGVmaW5lIGhvdyB0byBzZXQg
dXAgdGhlIGVudmlyb25tZW50LgorICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7fQorICAvLyBPdmVy
cmlkZSB0aGlzIHRvIGRlZmluZSBob3cgdG8gdGVhciBkb3duIHRoZSBlbnZpcm9ubWVudC4KKyAg
dmlydHVhbCB2b2lkIFRlYXJEb3duKCkge30KK307CitgYGAKKworVGhlbiwgeW91IHJlZ2lzdGVy
IGFuIGluc3RhbmNlIG9mIHlvdXIgZW52aXJvbm1lbnQgY2xhc3Mgd2l0aCBHb29nbGUgVGVzdCBi
eQorY2FsbGluZyB0aGUgYDo6dGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50KClgIGZ1
bmN0aW9uOgorCitgYGAKK0Vudmlyb25tZW50KiBBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoRW52
aXJvbm1lbnQqIGVudik7CitgYGAKKworTm93LCB3aGVuIGBSVU5fQUxMX1RFU1RTKClgIGlzIGNh
bGxlZCwgaXQgZmlyc3QgY2FsbHMgdGhlIGBTZXRVcCgpYCBtZXRob2Qgb2YKK3RoZSBlbnZpcm9u
bWVudCBvYmplY3QsIHRoZW4gcnVucyB0aGUgdGVzdHMgaWYgdGhlcmUgd2FzIG5vIGZhdGFsIGZh
aWx1cmVzLCBhbmQKK2ZpbmFsbHkgY2FsbHMgYFRlYXJEb3duKClgIG9mIHRoZSBlbnZpcm9ubWVu
dCBvYmplY3QuCisKK0l0J3MgT0sgdG8gcmVnaXN0ZXIgbXVsdGlwbGUgZW52aXJvbm1lbnQgb2Jq
ZWN0cy4gSW4gdGhpcyBjYXNlLCB0aGVpciBgU2V0VXAoKWAKK3dpbGwgYmUgY2FsbGVkIGluIHRo
ZSBvcmRlciB0aGV5IGFyZSByZWdpc3RlcmVkLCBhbmQgdGhlaXIgYFRlYXJEb3duKClgIHdpbGwg
YmUKK2NhbGxlZCBpbiB0aGUgcmV2ZXJzZSBvcmRlci4KKworTm90ZSB0aGF0IEdvb2dsZSBUZXN0
IHRha2VzIG93bmVyc2hpcCBvZiB0aGUgcmVnaXN0ZXJlZCBlbnZpcm9ubWVudCBvYmplY3RzLgor
VGhlcmVmb3JlICoqZG8gbm90IGRlbGV0ZSB0aGVtKiogYnkgeW91cnNlbGYuCisKK1lvdSBzaG91
bGQgY2FsbCBgQWRkR2xvYmFsVGVzdEVudmlyb25tZW50KClgIGJlZm9yZSBgUlVOX0FMTF9URVNU
UygpYCBpcworY2FsbGVkLCBwcm9iYWJseSBpbiBgbWFpbigpYC4gSWYgeW91IHVzZSBgZ3Rlc3Rf
bWFpbmAsIHlvdSBuZWVkIHRvICAgICAgY2FsbAordGhpcyBiZWZvcmUgYG1haW4oKWAgc3RhcnRz
IGZvciBpdCB0byB0YWtlIGVmZmVjdC4gT25lIHdheSB0byBkbyB0aGlzIGlzIHRvCitkZWZpbmUg
YSBnbG9iYWwgdmFyaWFibGUgbGlrZSB0aGlzOgorCitgYGAKKzo6dGVzdGluZzo6RW52aXJvbm1l
bnQqIGNvbnN0IGZvb19lbnYgPSA6OnRlc3Rpbmc6OkFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChu
ZXcgRm9vRW52aXJvbm1lbnQpOworYGBgCisKK0hvd2V2ZXIsIHdlIHN0cm9uZ2x5IHJlY29tbWVu
ZCB5b3UgdG8gd3JpdGUgeW91ciBvd24gYG1haW4oKWAgYW5kIGNhbGwKK2BBZGRHbG9iYWxUZXN0
RW52aXJvbm1lbnQoKWAgdGhlcmUsIGFzIHJlbHlpbmcgb24gaW5pdGlhbGl6YXRpb24gb2YgZ2xv
YmFsCit2YXJpYWJsZXMgbWFrZXMgdGhlIGNvZGUgaGFyZGVyIHRvIHJlYWQgYW5kIG1heSBjYXVz
ZSBwcm9ibGVtcyB3aGVuIHlvdQorcmVnaXN0ZXIgbXVsdGlwbGUgZW52aXJvbm1lbnRzIGZyb20g
ZGlmZmVyZW50IHRyYW5zbGF0aW9uIHVuaXRzIGFuZCB0aGUKK2Vudmlyb25tZW50cyBoYXZlIGRl
cGVuZGVuY2llcyBhbW9uZyB0aGVtIChyZW1lbWJlciB0aGF0IHRoZSBjb21waWxlciBkb2Vzbid0
CitndWFyYW50ZWUgdGhlIG9yZGVyIGluIHdoaWNoIGdsb2JhbCB2YXJpYWJsZXMgZnJvbSBkaWZm
ZXJlbnQgdHJhbnNsYXRpb24gdW5pdHMKK2FyZSBpbml0aWFsaXplZCkuCisKK19BdmFpbGFiaWxp
dHk6XyBMaW51eCwgV2luZG93cywgTWFjLgorCisKKyMgVmFsdWUgUGFyYW1ldGVyaXplZCBUZXN0
cyAjCisKK19WYWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzXyBhbGxvdyB5b3UgdG8gdGVzdCB5b3Vy
IGNvZGUgd2l0aCBkaWZmZXJlbnQKK3BhcmFtZXRlcnMgd2l0aG91dCB3cml0aW5nIG11bHRpcGxl
IGNvcGllcyBvZiB0aGUgc2FtZSB0ZXN0LgorCitTdXBwb3NlIHlvdSB3cml0ZSBhIHRlc3QgZm9y
IHlvdXIgY29kZSBhbmQgdGhlbiByZWFsaXplIHRoYXQgeW91ciBjb2RlIGlzIGFmZmVjdGVkIGJ5
IGEgcHJlc2VuY2Ugb2YgYSBCb29sZWFuIGNvbW1hbmQgbGluZSBmbGFnLgorCitgYGAKK1RFU1Qo
TXlDb2RlVGVzdCwgVGVzdEZvbykgeworICAvLyBBIGNvZGUgdG8gdGVzdCBmb28oKS4KK30KK2Bg
YAorCitVc3VhbGx5IHBlb3BsZSBmYWN0b3IgdGhlaXIgdGVzdCBjb2RlIGludG8gYSBmdW5jdGlv
biB3aXRoIGEgQm9vbGVhbiBwYXJhbWV0ZXIgaW4gc3VjaCBzaXR1YXRpb25zLiBUaGUgZnVuY3Rp
b24gc2V0cyB0aGUgZmxhZywgdGhlbiBleGVjdXRlcyB0aGUgdGVzdGluZyBjb2RlLgorCitgYGAK
K3ZvaWQgVGVzdEZvb0hlbHBlcihib29sIGZsYWdfdmFsdWUpIHsKKyAgZmxhZyA9IGZsYWdfdmFs
dWU7CisgIC8vIEEgY29kZSB0byB0ZXN0IGZvbygpLgorfQorCitURVNUKE15Q29kZVRlc3QsIFRl
c3RGb28pIHsKKyAgVGVzdEZvb0hlbHBlcihmYWxzZSk7CisgIFRlc3RGb29IZWxwZXIodHJ1ZSk7
Cit9CitgYGAKKworQnV0IHRoaXMgc2V0dXAgaGFzIHNlcmlvdXMgZHJhd2JhY2tzLiBGaXJzdCwg
d2hlbiBhIHRlc3QgYXNzZXJ0aW9uIGZhaWxzIGluIHlvdXIgdGVzdHMsIGl0IGJlY29tZXMgdW5j
bGVhciB3aGF0IHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIgY2F1c2VkIGl0IHRvIGZhaWwuIFlvdSBj
YW4gc3RyZWFtIGEgY2xhcmlmeWluZyBtZXNzYWdlIGludG8geW91ciBgRVhQRUNUYC9gQVNTRVJU
YCBzdGF0ZW1lbnRzLCBidXQgaXQgeW91J2xsIGhhdmUgdG8gZG8gaXQgd2l0aCBhbGwgb2YgdGhl
bS4gU2Vjb25kLCB5b3UgaGF2ZSB0byBhZGQgb25lIHN1Y2ggaGVscGVyIGZ1bmN0aW9uIHBlciB0
ZXN0LiBXaGF0IGlmIHlvdSBoYXZlIHRlbiB0ZXN0cz8gVHdlbnR5PyBBIGh1bmRyZWQ/CisKK1Zh
bHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgd2lsbCBsZXQgeW91IHdyaXRlIHlvdXIgdGVzdCBvbmx5
IG9uY2UgYW5kIHRoZW4gZWFzaWx5IGluc3RhbnRpYXRlIGFuZCBydW4gaXQgd2l0aCBhbiBhcmJp
dHJhcnkgbnVtYmVyIG9mIHBhcmFtZXRlciB2YWx1ZXMuCisKK0hlcmUgYXJlIHNvbWUgb3RoZXIg
c2l0dWF0aW9ucyB3aGVuIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgY29tZSBoYW5keToKKwor
ICAqIFlvdSB3YW50IHRvIHRlc3QgZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucyBvZiBhbiBPTyBp
bnRlcmZhY2UuCisgICogWW91IHdhbnQgdG8gdGVzdCB5b3VyIGNvZGUgb3ZlciB2YXJpb3VzIGlu
cHV0cyAoYS5rLmEuIGRhdGEtZHJpdmVuIHRlc3RpbmcpLiBUaGlzIGZlYXR1cmUgaXMgZWFzeSB0
byBhYnVzZSwgc28gcGxlYXNlIGV4ZXJjaXNlIHlvdXIgZ29vZCBzZW5zZSB3aGVuIGRvaW5nIGl0
IQorCisjIyBIb3cgdG8gV3JpdGUgVmFsdWUtUGFyYW1ldGVyaXplZCBUZXN0cyAjIworCitUbyB3
cml0ZSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLCBmaXJzdCB5b3Ugc2hvdWxkIGRlZmluZSBh
IGZpeHR1cmUKK2NsYXNzLiAgSXQgbXVzdCBiZSBkZXJpdmVkIGZyb20gYm90aCBgOjp0ZXN0aW5n
OjpUZXN0YCBhbmQKK2A6OnRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxUPmAgKHRoZSBsYXR0
ZXIgaXMgYSBwdXJlIGludGVyZmFjZSksCit3aGVyZSBgVGAgaXMgdGhlIHR5cGUgb2YgeW91ciBw
YXJhbWV0ZXIgdmFsdWVzLiAgRm9yIGNvbnZlbmllbmNlLCB5b3UKK2NhbiBqdXN0IGRlcml2ZSB0
aGUgZml4dHVyZSBjbGFzcyBmcm9tIGA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08VD5gLAord2hp
Y2ggaXRzZWxmIGlzIGRlcml2ZWQgZnJvbSBib3RoIGA6OnRlc3Rpbmc6OlRlc3RgIGFuZAorYDo6
dGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPFQ+YC4gYFRgIGNhbiBiZSBhbnkgY29weWFibGUg
dHlwZS4gSWYKK2l0J3MgYSByYXcgcG9pbnRlciwgeW91IGFyZSByZXNwb25zaWJsZSBmb3IgbWFu
YWdpbmcgdGhlIGxpZmVzcGFuIG9mCit0aGUgcG9pbnRlZCB2YWx1ZXMuCisKK2BgYAorY2xhc3Mg
Rm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08Y29uc3QgY2hhcio+IHsK
KyAgLy8gWW91IGNhbiBpbXBsZW1lbnQgYWxsIHRoZSB1c3VhbCBmaXh0dXJlIGNsYXNzIG1lbWJl
cnMgaGVyZS4KKyAgLy8gVG8gYWNjZXNzIHRoZSB0ZXN0IHBhcmFtZXRlciwgY2FsbCBHZXRQYXJh
bSgpIGZyb20gY2xhc3MKKyAgLy8gVGVzdFdpdGhQYXJhbTxUPi4KK307CisKKy8vIE9yLCB3aGVu
IHlvdSB3YW50IHRvIGFkZCBwYXJhbWV0ZXJzIHRvIGEgcHJlLWV4aXN0aW5nIGZpeHR1cmUgY2xh
c3M6CitjbGFzcyBCYXNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworICAuLi4KK307
CitjbGFzcyBCYXJUZXN0IDogcHVibGljIEJhc2VUZXN0LAorICAgICAgICAgICAgICAgIHB1Ymxp
YyA6OnRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxjb25zdCBjaGFyKj4geworICAuLi4KK307
CitgYGAKKworVGhlbiwgdXNlIHRoZSBgVEVTVF9QYCBtYWNybyB0byBkZWZpbmUgYXMgbWFueSB0
ZXN0IHBhdHRlcm5zIHVzaW5nCit0aGlzIGZpeHR1cmUgYXMgeW91IHdhbnQuICBUaGUgYF9QYCBz
dWZmaXggaXMgZm9yICJwYXJhbWV0ZXJpemVkIiBvcgorInBhdHRlcm4iLCB3aGljaGV2ZXIgeW91
IHByZWZlciB0byB0aGluay4KKworYGBgCitURVNUX1AoRm9vVGVzdCwgRG9lc0JsYWgpIHsKKyAg
Ly8gSW5zaWRlIGEgdGVzdCwgYWNjZXNzIHRoZSB0ZXN0IHBhcmFtZXRlciB3aXRoIHRoZSBHZXRQ
YXJhbSgpIG1ldGhvZAorICAvLyBvZiB0aGUgVGVzdFdpdGhQYXJhbTxUPiBjbGFzczoKKyAgRVhQ
RUNUX1RSVUUoZm9vLkJsYWgoR2V0UGFyYW0oKSkpOworICAuLi4KK30KKworVEVTVF9QKEZvb1Rl
c3QsIEhhc0JsYWhCbGFoKSB7CisgIC4uLgorfQorYGBgCisKK0ZpbmFsbHksIHlvdSBjYW4gdXNl
IGBJTlNUQU5USUFURV9URVNUX0NBU0VfUGAgdG8gaW5zdGFudGlhdGUgdGhlIHRlc3QKK2Nhc2Ug
d2l0aCBhbnkgc2V0IG9mIHBhcmFtZXRlcnMgeW91IHdhbnQuIEdvb2dsZSBUZXN0IGRlZmluZXMg
YSBudW1iZXIgb2YKK2Z1bmN0aW9ucyBmb3IgZ2VuZXJhdGluZyB0ZXN0IHBhcmFtZXRlcnMuIFRo
ZXkgcmV0dXJuIHdoYXQgd2UgY2FsbAorKHN1cnByaXNlISkgX3BhcmFtZXRlciBnZW5lcmF0b3Jz
Xy4gSGVyZSBpcyBhIHN1bW1hcnkgb2YgdGhlbSwKK3doaWNoIGFyZSBhbGwgaW4gdGhlIGB0ZXN0
aW5nYCBuYW1lc3BhY2U6CisKK3wgYFJhbmdlKGJlZ2luLCBlbmRbLCBzdGVwXSlgIHwgWWllbGRz
IHZhbHVlcyBge2JlZ2luLCBiZWdpbitzdGVwLCBiZWdpbitzdGVwK3N0ZXAsIC4uLn1gLiBUaGUg
dmFsdWVzIGRvIG5vdCBpbmNsdWRlIGBlbmRgLiBgc3RlcGAgZGVmYXVsdHMgdG8gMS4gfAorfDot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Cit8IGBWYWx1ZXModjEsIHYyLCAuLi4sIHZO
KWAgICB8IFlpZWxkcyB2YWx1ZXMgYHt2MSwgdjIsIC4uLiwgdk59YC4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwKK3wgYFZhbHVlc0luKGNvbnRhaW5lcilgIGFuZCBgVmFsdWVzSW4oYmVnaW4sIGVu
ZClgIHwgWWllbGRzIHZhbHVlcyBmcm9tIGEgQy1zdHlsZSBhcnJheSwgYW4gU1RMLXN0eWxlIGNv
bnRhaW5lciwgb3IgYW4gaXRlcmF0b3IgcmFuZ2UgYFtiZWdpbiwgZW5kKWAuIGBjb250YWluZXJg
LCBgYmVnaW5gLCBhbmQgYGVuZGAgY2FuIGJlIGV4cHJlc3Npb25zIHdob3NlIHZhbHVlcyBhcmUg
ZGV0ZXJtaW5lZCBhdCBydW4gdGltZS4gIHwKK3wgYEJvb2woKWAgICAgICAgICAgICAgICAgICAg
IHwgWWllbGRzIHNlcXVlbmNlIGB7ZmFsc2UsIHRydWV9YC4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfAorfCBgQ29tYmluZShnMSwgZzIsIC4uLiwgZ04pYCAgfCBZaWVsZHMgYWxsIGNvbWJpbmF0
aW9ucyAodGhlIENhcnRlc2lhbiBwcm9kdWN0IGZvciB0aGUgbWF0aCBzYXZ2eSkgb2YgdGhlIHZh
bHVlcyBnZW5lcmF0ZWQgYnkgdGhlIGBOYCBnZW5lcmF0b3JzLiBUaGlzIGlzIG9ubHkgYXZhaWxh
YmxlIGlmIHlvdXIgc3lzdGVtIHByb3ZpZGVzIHRoZSBgPHRyMS90dXBsZT5gIGhlYWRlci4gSWYg
eW91IGFyZSBzdXJlIHlvdXIgc3lzdGVtIGRvZXMsIGFuZCBHb29nbGUgVGVzdCBkaXNhZ3JlZXMs
IHlvdSBjYW4gb3ZlcnJpZGUgaXQgYnkgZGVmaW5pbmcgYEdURVNUX0hBU19UUjFfVFVQTEU9MWAu
IFNlZSBjb21tZW50cyBpbiBbaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmhdKC4u
L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oKSBmb3IgbW9yZSBpbmZvcm1hdGlv
bi4gfAorCitGb3IgbW9yZSBkZXRhaWxzLCBzZWUgdGhlIGNvbW1lbnRzIGF0IHRoZSBkZWZpbml0
aW9ucyBvZiB0aGVzZSBmdW5jdGlvbnMgaW4gdGhlIFtzb3VyY2UgY29kZV0oLi4vaW5jbHVkZS9n
dGVzdC9ndGVzdC1wYXJhbS10ZXN0LmgpLgorCitUaGUgZm9sbG93aW5nIHN0YXRlbWVudCB3aWxs
IGluc3RhbnRpYXRlIHRlc3RzIGZyb20gdGhlIGBGb29UZXN0YCB0ZXN0IGNhc2UKK2VhY2ggd2l0
aCBwYXJhbWV0ZXIgdmFsdWVzIGAibWVlbnkiYCwgYCJtaW55ImAsIGFuZCBgIm1vZSJgLgorCitg
YGAKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEluc3RhbnRpYXRpb25OYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgRm9vVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGlu
Zzo6VmFsdWVzKCJtZWVueSIsICJtaW55IiwgIm1vZSIpKTsKK2BgYAorCitUbyBkaXN0aW5ndWlz
aCBkaWZmZXJlbnQgaW5zdGFuY2VzIG9mIHRoZSBwYXR0ZXJuICh5ZXMsIHlvdSBjYW4KK2luc3Rh
bnRpYXRlIGl0IG1vcmUgdGhhbiBvbmNlKSwgdGhlIGZpcnN0IGFyZ3VtZW50IHRvCitgSU5TVEFO
VElBVEVfVEVTVF9DQVNFX1BgIGlzIGEgcHJlZml4IHRoYXQgd2lsbCBiZSBhZGRlZCB0byB0aGUg
YWN0dWFsCit0ZXN0IGNhc2UgbmFtZS4gUmVtZW1iZXIgdG8gcGljayB1bmlxdWUgcHJlZml4ZXMg
Zm9yIGRpZmZlcmVudAoraW5zdGFudGlhdGlvbnMuIFRoZSB0ZXN0cyBmcm9tIHRoZSBpbnN0YW50
aWF0aW9uIGFib3ZlIHdpbGwgaGF2ZSB0aGVzZQorbmFtZXM6CisKKyAgKiBgSW5zdGFudGlhdGlv
bk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8wYCBmb3IgYCJtZWVueSJgCisgICogYEluc3RhbnRpYXRp
b25OYW1lL0Zvb1Rlc3QuRG9lc0JsYWgvMWAgZm9yIGAibWlueSJgCisgICogYEluc3RhbnRpYXRp
b25OYW1lL0Zvb1Rlc3QuRG9lc0JsYWgvMmAgZm9yIGAibW9lImAKKyAgKiBgSW5zdGFudGlhdGlv
bk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8wYCBmb3IgYCJtZWVueSJgCisgICogYEluc3RhbnRp
YXRpb25OYW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgvMWAgZm9yIGAibWlueSJgCisgICogYEluc3Rh
bnRpYXRpb25OYW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgvMmAgZm9yIGAibW9lImAKKworWW91IGNh
biB1c2UgdGhlc2UgbmFtZXMgaW4gWy0tZ3Rlc3RcX2ZpbHRlcl0oI3J1bm5pbmctYS1zdWJzZXQt
b2YtdGhlLXRlc3RzKS4KKworVGhpcyBzdGF0ZW1lbnQgd2lsbCBpbnN0YW50aWF0ZSBhbGwgdGVz
dHMgZnJvbSBgRm9vVGVzdGAgYWdhaW4sIGVhY2gKK3dpdGggcGFyYW1ldGVyIHZhbHVlcyBgImNh
dCJgIGFuZCBgImRvZyJgOgorCitgYGAKK2NvbnN0IGNoYXIqIHBldHNbXSA9IHsiY2F0IiwgImRv
ZyJ9OworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoQW5vdGhlckluc3RhbnRpYXRpb25OYW1lLCBG
b29UZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpWYWx1ZXNJbihwZXRz
KSk7CitgYGAKKworVGhlIHRlc3RzIGZyb20gdGhlIGluc3RhbnRpYXRpb24gYWJvdmUgd2lsbCBo
YXZlIHRoZXNlIG5hbWVzOgorCisgICogYEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0
LkRvZXNCbGFoLzBgIGZvciBgImNhdCJgCisgICogYEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZS9G
b29UZXN0LkRvZXNCbGFoLzFgIGZvciBgImRvZyJgCisgICogYEFub3RoZXJJbnN0YW50aWF0aW9u
TmFtZS9Gb29UZXN0Lkhhc0JsYWhCbGFoLzBgIGZvciBgImNhdCJgCisgICogYEFub3RoZXJJbnN0
YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0JsYWhCbGFoLzFgIGZvciBgImRvZyJgCisKK1BsZWFz
ZSBub3RlIHRoYXQgYElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QYCB3aWxsIGluc3RhbnRpYXRlIF9h
bGxfCit0ZXN0cyBpbiB0aGUgZ2l2ZW4gdGVzdCBjYXNlLCB3aGV0aGVyIHRoZWlyIGRlZmluaXRp
b25zIGNvbWUgYmVmb3JlIG9yCitfYWZ0ZXJfIHRoZSBgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1Bg
IHN0YXRlbWVudC4KKworWW91IGNhbiBzZWUKK1t0aGVzZV0oLi4vc2FtcGxlcy9zYW1wbGU3X3Vu
aXR0ZXN0LmNjKQorW2ZpbGVzXSguLi9zYW1wbGVzL3NhbXBsZThfdW5pdHRlc3QuY2MpIGZvciBt
b3JlIGV4YW1wbGVzLgorCitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MgKHJlcXVpcmVz
IE1TVkMgOC4wIG9yIGFib3ZlKSwgTWFjOyBzaW5jZSB2ZXJzaW9uIDEuMi4wLgorCisjIyBDcmVh
dGluZyBWYWx1ZS1QYXJhbWV0ZXJpemVkIEFic3RyYWN0IFRlc3RzICMjCisKK0luIHRoZSBhYm92
ZSwgd2UgZGVmaW5lIGFuZCBpbnN0YW50aWF0ZSBgRm9vVGVzdGAgaW4gdGhlIHNhbWUgc291cmNl
CitmaWxlLiBTb21ldGltZXMgeW91IG1heSB3YW50IHRvIGRlZmluZSB2YWx1ZS1wYXJhbWV0ZXJp
emVkIHRlc3RzIGluIGEKK2xpYnJhcnkgYW5kIGxldCBvdGhlciBwZW9wbGUgaW5zdGFudGlhdGUg
dGhlbSBsYXRlci4gVGhpcyBwYXR0ZXJuIGlzCitrbm93biBhcyA8aT5hYnN0cmFjdCB0ZXN0czwv
aT4uIEFzIGFuIGV4YW1wbGUgb2YgaXRzIGFwcGxpY2F0aW9uLCB3aGVuIHlvdQorYXJlIGRlc2ln
bmluZyBhbiBpbnRlcmZhY2UgeW91IGNhbiB3cml0ZSBhIHN0YW5kYXJkIHN1aXRlIG9mIGFic3Ry
YWN0Cit0ZXN0cyAocGVyaGFwcyB1c2luZyBhIGZhY3RvcnkgZnVuY3Rpb24gYXMgdGhlIHRlc3Qg
cGFyYW1ldGVyKSB0aGF0CithbGwgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBpbnRlcmZhY2UgYXJl
IGV4cGVjdGVkIHRvIHBhc3MuIFdoZW4KK3NvbWVvbmUgaW1wbGVtZW50cyB0aGUgaW50ZXJmYWNl
LCBoZSBjYW4gaW5zdGFudGlhdGUgeW91ciBzdWl0ZSB0byBnZXQKK2FsbCB0aGUgaW50ZXJmYWNl
LWNvbmZvcm1hbmNlIHRlc3RzIGZvciBmcmVlLgorCitUbyBkZWZpbmUgYWJzdHJhY3QgdGVzdHMs
IHlvdSBzaG91bGQgb3JnYW5pemUgeW91ciBjb2RlIGxpa2UgdGhpczoKKworICAxLiBQdXQgdGhl
IGRlZmluaXRpb24gb2YgdGhlIHBhcmFtZXRlcml6ZWQgdGVzdCBmaXh0dXJlIGNsYXNzIChlLmcu
IGBGb29UZXN0YCkgaW4gYSBoZWFkZXIgZmlsZSwgc2F5IGBmb29fcGFyYW1fdGVzdC5oYC4gVGhp
bmsgb2YgdGhpcyBhcyBfZGVjbGFyaW5nXyB5b3VyIGFic3RyYWN0IHRlc3RzLgorICAxLiBQdXQg
dGhlIGBURVNUX1BgIGRlZmluaXRpb25zIGluIGBmb29fcGFyYW1fdGVzdC5jY2AsIHdoaWNoIGlu
Y2x1ZGVzIGBmb29fcGFyYW1fdGVzdC5oYC4gVGhpbmsgb2YgdGhpcyBhcyBfaW1wbGVtZW50aW5n
XyB5b3VyIGFic3RyYWN0IHRlc3RzLgorCitPbmNlIHRoZXkgYXJlIGRlZmluZWQsIHlvdSBjYW4g
aW5zdGFudGlhdGUgdGhlbSBieSBpbmNsdWRpbmcKK2Bmb29fcGFyYW1fdGVzdC5oYCwgaW52b2tp
bmcgYElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKClgLCBhbmQgbGlua2luZword2l0aCBgZm9vX3Bh
cmFtX3Rlc3QuY2NgLiBZb3UgY2FuIGluc3RhbnRpYXRlIHRoZSBzYW1lIGFic3RyYWN0IHRlc3QK
K2Nhc2UgbXVsdGlwbGUgdGltZXMsIHBvc3NpYmx5IGluIGRpZmZlcmVudCBzb3VyY2UgZmlsZXMu
CisKKyMgVHlwZWQgVGVzdHMgIworCitTdXBwb3NlIHlvdSBoYXZlIG11bHRpcGxlIGltcGxlbWVu
dGF0aW9ucyBvZiB0aGUgc2FtZSBpbnRlcmZhY2UgYW5kCit3YW50IHRvIG1ha2Ugc3VyZSB0aGF0
IGFsbCBvZiB0aGVtIHNhdGlzZnkgc29tZSBjb21tb24gcmVxdWlyZW1lbnRzLgorT3IsIHlvdSBt
YXkgaGF2ZSBkZWZpbmVkIHNldmVyYWwgdHlwZXMgdGhhdCBhcmUgc3VwcG9zZWQgdG8gY29uZm9y
bSB0bwordGhlIHNhbWUgImNvbmNlcHQiIGFuZCB5b3Ugd2FudCB0byB2ZXJpZnkgaXQuICBJbiBi
b3RoIGNhc2VzLCB5b3Ugd2FudAordGhlIHNhbWUgdGVzdCBsb2dpYyByZXBlYXRlZCBmb3IgZGlm
ZmVyZW50IHR5cGVzLgorCitXaGlsZSB5b3UgY2FuIHdyaXRlIG9uZSBgVEVTVGAgb3IgYFRFU1Rf
RmAgZm9yIGVhY2ggdHlwZSB5b3Ugd2FudCB0bwordGVzdCAoYW5kIHlvdSBtYXkgZXZlbiBmYWN0
b3IgdGhlIHRlc3QgbG9naWMgaW50byBhIGZ1bmN0aW9uIHRlbXBsYXRlCit0aGF0IHlvdSBpbnZv
a2UgZnJvbSB0aGUgYFRFU1RgKSwgaXQncyB0ZWRpb3VzIGFuZCBkb2Vzbid0IHNjYWxlOgoraWYg
eW91IHdhbnQgX21fIHRlc3RzIG92ZXIgX25fIHR5cGVzLCB5b3UnbGwgZW5kIHVwIHdyaXRpbmcg
X21cKm5fCitgVEVTVGBzLgorCitfVHlwZWQgdGVzdHNfIGFsbG93IHlvdSB0byByZXBlYXQgdGhl
IHNhbWUgdGVzdCBsb2dpYyBvdmVyIGEgbGlzdCBvZgordHlwZXMuICBZb3Ugb25seSBuZWVkIHRv
IHdyaXRlIHRoZSB0ZXN0IGxvZ2ljIG9uY2UsIGFsdGhvdWdoIHlvdSBtdXN0Citrbm93IHRoZSB0
eXBlIGxpc3Qgd2hlbiB3cml0aW5nIHR5cGVkIHRlc3RzLiAgSGVyZSdzIGhvdyB5b3UgZG8gaXQ6
CisKK0ZpcnN0LCBkZWZpbmUgYSBmaXh0dXJlIGNsYXNzIHRlbXBsYXRlLiAgSXQgc2hvdWxkIGJl
IHBhcmFtZXRlcml6ZWQKK2J5IGEgdHlwZS4gIFJlbWVtYmVyIHRvIGRlcml2ZSBpdCBmcm9tIGA6
OnRlc3Rpbmc6OlRlc3RgOgorCitgYGAKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgRm9v
VGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHB1YmxpYzoKKyAgLi4uCisgIHR5cGVk
ZWYgc3RkOjpsaXN0PFQ+IExpc3Q7CisgIHN0YXRpYyBUIHNoYXJlZF87CisgIFQgdmFsdWVfOwor
fTsKK2BgYAorCitOZXh0LCBhc3NvY2lhdGUgYSBsaXN0IG9mIHR5cGVzIHdpdGggdGhlIHRlc3Qg
Y2FzZSwgd2hpY2ggd2lsbCBiZQorcmVwZWF0ZWQgZm9yIGVhY2ggdHlwZSBpbiB0aGUgbGlzdDoK
KworYGBgCit0eXBlZGVmIDo6dGVzdGluZzo6VHlwZXM8Y2hhciwgaW50LCB1bnNpZ25lZCBpbnQ+
IE15VHlwZXM7CitUWVBFRF9URVNUX0NBU0UoRm9vVGVzdCwgTXlUeXBlcyk7CitgYGAKKworVGhl
IGB0eXBlZGVmYCBpcyBuZWNlc3NhcnkgZm9yIHRoZSBgVFlQRURfVEVTVF9DQVNFYCBtYWNybyB0
byBwYXJzZQorY29ycmVjdGx5LiAgT3RoZXJ3aXNlIHRoZSBjb21waWxlciB3aWxsIHRoaW5rIHRo
YXQgZWFjaCBjb21tYSBpbiB0aGUKK3R5cGUgbGlzdCBpbnRyb2R1Y2VzIGEgbmV3IG1hY3JvIGFy
Z3VtZW50LgorCitUaGVuLCB1c2UgYFRZUEVEX1RFU1QoKWAgaW5zdGVhZCBvZiBgVEVTVF9GKClg
IHRvIGRlZmluZSBhIHR5cGVkIHRlc3QKK2ZvciB0aGlzIHRlc3QgY2FzZS4gIFlvdSBjYW4gcmVw
ZWF0IHRoaXMgYXMgbWFueSB0aW1lcyBhcyB5b3Ugd2FudDoKKworYGBgCitUWVBFRF9URVNUKEZv
b1Rlc3QsIERvZXNCbGFoKSB7CisgIC8vIEluc2lkZSBhIHRlc3QsIHJlZmVyIHRvIHRoZSBzcGVj
aWFsIG5hbWUgVHlwZVBhcmFtIHRvIGdldCB0aGUgdHlwZQorICAvLyBwYXJhbWV0ZXIuICBTaW5j
ZSB3ZSBhcmUgaW5zaWRlIGEgZGVyaXZlZCBjbGFzcyB0ZW1wbGF0ZSwgQysrIHJlcXVpcmVzCisg
IC8vIHVzIHRvIHZpc2l0IHRoZSBtZW1iZXJzIG9mIEZvb1Rlc3QgdmlhICd0aGlzJy4KKyAgVHlw
ZVBhcmFtIG4gPSB0aGlzLT52YWx1ZV87CisKKyAgLy8gVG8gdmlzaXQgc3RhdGljIG1lbWJlcnMg
b2YgdGhlIGZpeHR1cmUsIGFkZCB0aGUgJ1Rlc3RGaXh0dXJlOjonCisgIC8vIHByZWZpeC4KKyAg
biArPSBUZXN0Rml4dHVyZTo6c2hhcmVkXzsKKworICAvLyBUbyByZWZlciB0byB0eXBlZGVmcyBp
biB0aGUgZml4dHVyZSwgYWRkIHRoZSAndHlwZW5hbWUgVGVzdEZpeHR1cmU6OicKKyAgLy8gcHJl
Zml4LiAgVGhlICd0eXBlbmFtZScgaXMgcmVxdWlyZWQgdG8gc2F0aXNmeSB0aGUgY29tcGlsZXIu
CisgIHR5cGVuYW1lIFRlc3RGaXh0dXJlOjpMaXN0IHZhbHVlczsKKyAgdmFsdWVzLnB1c2hfYmFj
ayhuKTsKKyAgLi4uCit9CisKK1RZUEVEX1RFU1QoRm9vVGVzdCwgSGFzUHJvcGVydHlBKSB7IC4u
LiB9CitgYGAKKworWW91IGNhbiBzZWUgYHNhbXBsZXMvc2FtcGxlNl91bml0dGVzdC5jY2AgZm9y
IGEgY29tcGxldGUgZXhhbXBsZS4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzIChy
ZXF1aXJlcyBNU1ZDIDguMCBvciBhYm92ZSksIE1hYzsKK3NpbmNlIHZlcnNpb24gMS4xLjAuCisK
KyMgVHlwZS1QYXJhbWV0ZXJpemVkIFRlc3RzICMKKworX1R5cGUtcGFyYW1ldGVyaXplZCB0ZXN0
c18gYXJlIGxpa2UgdHlwZWQgdGVzdHMsIGV4Y2VwdCB0aGF0IHRoZXkKK2Rvbid0IHJlcXVpcmUg
eW91IHRvIGtub3cgdGhlIGxpc3Qgb2YgdHlwZXMgYWhlYWQgb2YgdGltZS4gIEluc3RlYWQsCit5
b3UgY2FuIGRlZmluZSB0aGUgdGVzdCBsb2dpYyBmaXJzdCBhbmQgaW5zdGFudGlhdGUgaXQgd2l0
aCBkaWZmZXJlbnQKK3R5cGUgbGlzdHMgbGF0ZXIuICBZb3UgY2FuIGV2ZW4gaW5zdGFudGlhdGUg
aXQgbW9yZSB0aGFuIG9uY2UgaW4gdGhlCitzYW1lIHByb2dyYW0uCisKK0lmIHlvdSBhcmUgZGVz
aWduaW5nIGFuIGludGVyZmFjZSBvciBjb25jZXB0LCB5b3UgY2FuIGRlZmluZSBhIHN1aXRlCitv
ZiB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMgdG8gdmVyaWZ5IHByb3BlcnRpZXMgdGhhdCBhbnkg
dmFsaWQKK2ltcGxlbWVudGF0aW9uIG9mIHRoZSBpbnRlcmZhY2UvY29uY2VwdCBzaG91bGQgaGF2
ZS4gIFRoZW4sIHRoZSBhdXRob3IKK29mIGVhY2ggaW1wbGVtZW50YXRpb24gY2FuIGp1c3QgaW5z
dGFudGlhdGUgdGhlIHRlc3Qgc3VpdGUgd2l0aCBoaXMKK3R5cGUgdG8gdmVyaWZ5IHRoYXQgaXQg
Y29uZm9ybXMgdG8gdGhlIHJlcXVpcmVtZW50cywgd2l0aG91dCBoYXZpbmcgdG8KK3dyaXRlIHNp
bWlsYXIgdGVzdHMgcmVwZWF0ZWRseS4gIEhlcmUncyBhbiBleGFtcGxlOgorCitGaXJzdCwgZGVm
aW5lIGEgZml4dHVyZSBjbGFzcyB0ZW1wbGF0ZSwgYXMgd2UgZGlkIHdpdGggdHlwZWQgdGVzdHM6
CisKK2BgYAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6
dGVzdGluZzo6VGVzdCB7CisgIC4uLgorfTsKK2BgYAorCitOZXh0LCBkZWNsYXJlIHRoYXQgeW91
IHdpbGwgZGVmaW5lIGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QgY2FzZToKKworYGBgCitUWVBF
RF9URVNUX0NBU0VfUChGb29UZXN0KTsKK2BgYAorCitUaGUgYF9QYCBzdWZmaXggaXMgZm9yICJw
YXJhbWV0ZXJpemVkIiBvciAicGF0dGVybiIsIHdoaWNoZXZlciB5b3UKK3ByZWZlciB0byB0aGlu
ay4KKworVGhlbiwgdXNlIGBUWVBFRF9URVNUX1AoKWAgdG8gZGVmaW5lIGEgdHlwZS1wYXJhbWV0
ZXJpemVkIHRlc3QuICBZb3UKK2NhbiByZXBlYXQgdGhpcyBhcyBtYW55IHRpbWVzIGFzIHlvdSB3
YW50OgorCitgYGAKK1RZUEVEX1RFU1RfUChGb29UZXN0LCBEb2VzQmxhaCkgeworICAvLyBJbnNp
ZGUgYSB0ZXN0LCByZWZlciB0byBUeXBlUGFyYW0gdG8gZ2V0IHRoZSB0eXBlIHBhcmFtZXRlci4K
KyAgVHlwZVBhcmFtIG4gPSAwOworICAuLi4KK30KKworVFlQRURfVEVTVF9QKEZvb1Rlc3QsIEhh
c1Byb3BlcnR5QSkgeyAuLi4gfQorYGBgCisKK05vdyB0aGUgdHJpY2t5IHBhcnQ6IHlvdSBuZWVk
IHRvIHJlZ2lzdGVyIGFsbCB0ZXN0IHBhdHRlcm5zIHVzaW5nIHRoZQorYFJFR0lTVEVSX1RZUEVE
X1RFU1RfQ0FTRV9QYCBtYWNybyBiZWZvcmUgeW91IGNhbiBpbnN0YW50aWF0ZSB0aGVtLgorVGhl
IGZpcnN0IGFyZ3VtZW50IG9mIHRoZSBtYWNybyBpcyB0aGUgdGVzdCBjYXNlIG5hbWU7IHRoZSBy
ZXN0IGFyZQordGhlIG5hbWVzIG9mIHRoZSB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZToKKworYGBg
CitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChGb29UZXN0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRG9lc0JsYWgsIEhhc1Byb3BlcnR5QSk7CitgYGAKKworRmluYWxseSwgeW91IGFy
ZSBmcmVlIHRvIGluc3RhbnRpYXRlIHRoZSBwYXR0ZXJuIHdpdGggdGhlIHR5cGVzIHlvdQord2Fu
dC4gIElmIHlvdSBwdXQgdGhlIGFib3ZlIGNvZGUgaW4gYSBoZWFkZXIgZmlsZSwgeW91IGNhbiBg
I2luY2x1ZGVgCitpdCBpbiBtdWx0aXBsZSBDKysgc291cmNlIGZpbGVzIGFuZCBpbnN0YW50aWF0
ZSBpdCBtdWx0aXBsZSB0aW1lcy4KKworYGBgCit0eXBlZGVmIDo6dGVzdGluZzo6VHlwZXM8Y2hh
ciwgaW50LCB1bnNpZ25lZCBpbnQ+IE15VHlwZXM7CitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NB
U0VfUChNeSwgRm9vVGVzdCwgTXlUeXBlcyk7CitgYGAKKworVG8gZGlzdGluZ3Vpc2ggZGlmZmVy
ZW50IGluc3RhbmNlcyBvZiB0aGUgcGF0dGVybiwgdGhlIGZpcnN0IGFyZ3VtZW50Cit0byB0aGUg
YElOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QYCBtYWNybyBpcyBhIHByZWZpeCB0aGF0IHdp
bGwgYmUKK2FkZGVkIHRvIHRoZSBhY3R1YWwgdGVzdCBjYXNlIG5hbWUuICBSZW1lbWJlciB0byBw
aWNrIHVuaXF1ZSBwcmVmaXhlcworZm9yIGRpZmZlcmVudCBpbnN0YW5jZXMuCisKK0luIHRoZSBz
cGVjaWFsIGNhc2Ugd2hlcmUgdGhlIHR5cGUgbGlzdCBjb250YWlucyBvbmx5IG9uZSB0eXBlLCB5
b3UKK2NhbiB3cml0ZSB0aGF0IHR5cGUgZGlyZWN0bHkgd2l0aG91dCBgOjp0ZXN0aW5nOjpUeXBl
czwuLi4+YCwgbGlrZSB0aGlzOgorCitgYGAKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9Q
KE15LCBGb29UZXN0LCBpbnQpOworYGBgCisKK1lvdSBjYW4gc2VlIGBzYW1wbGVzL3NhbXBsZTZf
dW5pdHRlc3QuY2NgIGZvciBhIGNvbXBsZXRlIGV4YW1wbGUuCisKK19BdmFpbGFiaWxpdHk6XyBM
aW51eCwgV2luZG93cyAocmVxdWlyZXMgTVNWQyA4LjAgb3IgYWJvdmUpLCBNYWM7CitzaW5jZSB2
ZXJzaW9uIDEuMS4wLgorCisjIFRlc3RpbmcgUHJpdmF0ZSBDb2RlICMKKworSWYgeW91IGNoYW5n
ZSB5b3VyIHNvZnR3YXJlJ3MgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24sIHlvdXIgdGVzdHMgc2hv
dWxkIG5vdAorYnJlYWsgYXMgbG9uZyBhcyB0aGUgY2hhbmdlIGlzIG5vdCBvYnNlcnZhYmxlIGJ5
IHVzZXJzLiBUaGVyZWZvcmUsIHBlciB0aGUKK19ibGFjay1ib3ggdGVzdGluZyBwcmluY2lwbGVf
LCBtb3N0IG9mIHRoZSB0aW1lIHlvdSBzaG91bGQgdGVzdCB5b3VyIGNvZGUKK3Rocm91Z2ggaXRz
IHB1YmxpYyBpbnRlcmZhY2VzLgorCitJZiB5b3Ugc3RpbGwgZmluZCB5b3Vyc2VsZiBuZWVkaW5n
IHRvIHRlc3QgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gY29kZSwKK2NvbnNpZGVyIGlmIHRoZXJl
J3MgYSBiZXR0ZXIgZGVzaWduIHRoYXQgd291bGRuJ3QgcmVxdWlyZSB5b3UgdG8gZG8gc28uIElm
IHlvdQorYWJzb2x1dGVseSBoYXZlIHRvIHRlc3Qgbm9uLXB1YmxpYyBpbnRlcmZhY2UgY29kZSB0
aG91Z2gsIHlvdSBjYW4uIFRoZXJlIGFyZQordHdvIGNhc2VzIHRvIGNvbnNpZGVyOgorCisgICog
U3RhdGljIGZ1bmN0aW9ucyAoX25vdF8gdGhlIHNhbWUgYXMgc3RhdGljIG1lbWJlciBmdW5jdGlv
bnMhKSBvciB1bm5hbWVkIG5hbWVzcGFjZXMsIGFuZAorICAqIFByaXZhdGUgb3IgcHJvdGVjdGVk
IGNsYXNzIG1lbWJlcnMKKworIyMgU3RhdGljIEZ1bmN0aW9ucyAjIworCitCb3RoIHN0YXRpYyBm
dW5jdGlvbnMgYW5kIGRlZmluaXRpb25zL2RlY2xhcmF0aW9ucyBpbiBhbiB1bm5hbWVkIG5hbWVz
cGFjZSBhcmUKK29ubHkgdmlzaWJsZSB3aXRoaW4gdGhlIHNhbWUgdHJhbnNsYXRpb24gdW5pdC4g
VG8gdGVzdCB0aGVtLCB5b3UgY2FuIGAjaW5jbHVkZWAKK3RoZSBlbnRpcmUgYC5jY2AgZmlsZSBi
ZWluZyB0ZXN0ZWQgaW4geW91ciBgKl90ZXN0LmNjYCBmaWxlLiAoYCNpbmNsdWRlYGluZyBgLmNj
YAorZmlsZXMgaXMgbm90IGEgZ29vZCB3YXkgdG8gcmV1c2UgY29kZSAtIHlvdSBzaG91bGQgbm90
IGRvIHRoaXMgaW4gcHJvZHVjdGlvbgorY29kZSEpCisKK0hvd2V2ZXIsIGEgYmV0dGVyIGFwcHJv
YWNoIGlzIHRvIG1vdmUgdGhlIHByaXZhdGUgY29kZSBpbnRvIHRoZQorYGZvbzo6aW50ZXJuYWxg
IG5hbWVzcGFjZSwgd2hlcmUgYGZvb2AgaXMgdGhlIG5hbWVzcGFjZSB5b3VyIHByb2plY3Qgbm9y
bWFsbHkKK3VzZXMsIGFuZCBwdXQgdGhlIHByaXZhdGUgZGVjbGFyYXRpb25zIGluIGEgYCotaW50
ZXJuYWwuaGAgZmlsZS4gWW91cgorcHJvZHVjdGlvbiBgLmNjYCBmaWxlcyBhbmQgeW91ciB0ZXN0
cyBhcmUgYWxsb3dlZCB0byBpbmNsdWRlIHRoaXMgaW50ZXJuYWwKK2hlYWRlciwgYnV0IHlvdXIg
Y2xpZW50cyBhcmUgbm90LiBUaGlzIHdheSwgeW91IGNhbiBmdWxseSB0ZXN0IHlvdXIgaW50ZXJu
YWwKK2ltcGxlbWVudGF0aW9uIHdpdGhvdXQgbGVha2luZyBpdCB0byB5b3VyIGNsaWVudHMuCisK
KyMjIFByaXZhdGUgQ2xhc3MgTWVtYmVycyAjIworCitQcml2YXRlIGNsYXNzIG1lbWJlcnMgYXJl
IG9ubHkgYWNjZXNzaWJsZSBmcm9tIHdpdGhpbiB0aGUgY2xhc3Mgb3IgYnkgZnJpZW5kcy4KK1Rv
IGFjY2VzcyBhIGNsYXNzJyBwcml2YXRlIG1lbWJlcnMsIHlvdSBjYW4gZGVjbGFyZSB5b3VyIHRl
c3QgZml4dHVyZSBhcyBhCitmcmllbmQgdG8gdGhlIGNsYXNzIGFuZCBkZWZpbmUgYWNjZXNzb3Jz
IGluIHlvdXIgZml4dHVyZS4gVGVzdHMgdXNpbmcgdGhlCitmaXh0dXJlIGNhbiB0aGVuIGFjY2Vz
cyB0aGUgcHJpdmF0ZSBtZW1iZXJzIG9mIHlvdXIgcHJvZHVjdGlvbiBjbGFzcyB2aWEgdGhlCith
Y2Nlc3NvcnMgaW4gdGhlIGZpeHR1cmUuIE5vdGUgdGhhdCBldmVuIHRob3VnaCB5b3VyIGZpeHR1
cmUgaXMgYSBmcmllbmQgdG8KK3lvdXIgcHJvZHVjdGlvbiBjbGFzcywgeW91ciB0ZXN0cyBhcmUg
bm90IGF1dG9tYXRpY2FsbHkgZnJpZW5kcyB0byBpdCwgYXMgdGhleQorYXJlIHRlY2huaWNhbGx5
IGRlZmluZWQgaW4gc3ViLWNsYXNzZXMgb2YgdGhlIGZpeHR1cmUuCisKK0Fub3RoZXIgd2F5IHRv
IHRlc3QgcHJpdmF0ZSBtZW1iZXJzIGlzIHRvIHJlZmFjdG9yIHRoZW0gaW50byBhbiBpbXBsZW1l
bnRhdGlvbgorY2xhc3MsIHdoaWNoIGlzIHRoZW4gZGVjbGFyZWQgaW4gYSBgKi1pbnRlcm5hbC5o
YCBmaWxlLiBZb3VyIGNsaWVudHMgYXJlbid0CithbGxvd2VkIHRvIGluY2x1ZGUgdGhpcyBoZWFk
ZXIgYnV0IHlvdXIgdGVzdHMgY2FuLiBTdWNoIGlzIGNhbGxlZCB0aGUgUGltcGwKKyhQcml2YXRl
IEltcGxlbWVudGF0aW9uKSBpZGlvbS4KKworT3IsIHlvdSBjYW4gZGVjbGFyZSBhbiBpbmRpdmlk
dWFsIHRlc3QgYXMgYSBmcmllbmQgb2YgeW91ciBjbGFzcyBieSBhZGRpbmcgdGhpcworbGluZSBp
biB0aGUgY2xhc3MgYm9keToKKworYGBgCitGUklFTkRfVEVTVChUZXN0Q2FzZU5hbWUsIFRlc3RO
YW1lKTsKK2BgYAorCitGb3IgZXhhbXBsZSwKK2BgYAorLy8gZm9vLmgKKyNpbmNsdWRlICJndGVz
dC9ndGVzdF9wcm9kLmgiCisKKy8vIERlZmluZXMgRlJJRU5EX1RFU1QuCitjbGFzcyBGb28gewor
ICAuLi4KKyBwcml2YXRlOgorICBGUklFTkRfVEVTVChGb29UZXN0LCBCYXJSZXR1cm5zWmVyb09u
TnVsbCk7CisgIGludCBCYXIodm9pZCogeCk7Cit9OworCisvLyBmb29fdGVzdC5jYworLi4uCitU
RVNUKEZvb1Rlc3QsIEJhclJldHVybnNaZXJvT25OdWxsKSB7CisgIEZvbyBmb287CisgIEVYUEVD
VF9FUSgwLCBmb28uQmFyKE5VTEwpKTsKKyAgLy8gVXNlcyBGb28ncyBwcml2YXRlIG1lbWJlciBC
YXIoKS4KK30KK2BgYAorCitQYXkgc3BlY2lhbCBhdHRlbnRpb24gd2hlbiB5b3VyIGNsYXNzIGlz
IGRlZmluZWQgaW4gYSBuYW1lc3BhY2UsIGFzIHlvdSBzaG91bGQKK2RlZmluZSB5b3VyIHRlc3Qg
Zml4dHVyZXMgYW5kIHRlc3RzIGluIHRoZSBzYW1lIG5hbWVzcGFjZSBpZiB5b3Ugd2FudCB0aGVt
IHRvCitiZSBmcmllbmRzIG9mIHlvdXIgY2xhc3MuIEZvciBleGFtcGxlLCBpZiB0aGUgY29kZSB0
byBiZSB0ZXN0ZWQgbG9va3MgbGlrZToKKworYGBgCituYW1lc3BhY2UgbXlfbmFtZXNwYWNlIHsK
KworY2xhc3MgRm9vIHsKKyAgZnJpZW5kIGNsYXNzIEZvb1Rlc3Q7CisgIEZSSUVORF9URVNUKEZv
b1Rlc3QsIEJhcik7CisgIEZSSUVORF9URVNUKEZvb1Rlc3QsIEJheik7CisgIC4uLgorICBkZWZp
bml0aW9uIG9mIHRoZSBjbGFzcyBGb28KKyAgLi4uCit9OworCit9ICAvLyBuYW1lc3BhY2UgbXlf
bmFtZXNwYWNlCitgYGAKKworWW91ciB0ZXN0IGNvZGUgc2hvdWxkIGJlIHNvbWV0aGluZyBsaWtl
OgorCitgYGAKK25hbWVzcGFjZSBteV9uYW1lc3BhY2UgeworY2xhc3MgRm9vVGVzdCA6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgLi4uCit9OworCitURVNUX0YoRm9v
VGVzdCwgQmFyKSB7IC4uLiB9CitURVNUX0YoRm9vVGVzdCwgQmF6KSB7IC4uLiB9CisKK30gIC8v
IG5hbWVzcGFjZSBteV9uYW1lc3BhY2UKK2BgYAorCisjIENhdGNoaW5nIEZhaWx1cmVzICMKKwor
SWYgeW91IGFyZSBidWlsZGluZyBhIHRlc3RpbmcgdXRpbGl0eSBvbiB0b3Agb2YgR29vZ2xlIFRl
c3QsIHlvdSdsbAord2FudCB0byB0ZXN0IHlvdXIgdXRpbGl0eS4gIFdoYXQgZnJhbWV3b3JrIHdv
dWxkIHlvdSB1c2UgdG8gdGVzdCBpdD8KK0dvb2dsZSBUZXN0LCBvZiBjb3Vyc2UuCisKK1RoZSBj
aGFsbGVuZ2UgaXMgdG8gdmVyaWZ5IHRoYXQgeW91ciB0ZXN0aW5nIHV0aWxpdHkgcmVwb3J0cyBm
YWlsdXJlcworY29ycmVjdGx5LiAgSW4gZnJhbWV3b3JrcyB0aGF0IHJlcG9ydCBhIGZhaWx1cmUg
YnkgdGhyb3dpbmcgYW4KK2V4Y2VwdGlvbiwgeW91IGNvdWxkIGNhdGNoIHRoZSBleGNlcHRpb24g
YW5kIGFzc2VydCBvbiBpdC4gIEJ1dCBHb29nbGUKK1Rlc3QgZG9lc24ndCB1c2UgZXhjZXB0aW9u
cywgc28gaG93IGRvIHdlIHRlc3QgdGhhdCBhIHBpZWNlIG9mIGNvZGUKK2dlbmVyYXRlcyBhbiBl
eHBlY3RlZCBmYWlsdXJlPworCitgImd0ZXN0L2d0ZXN0LXNwaS5oImAgY29udGFpbnMgc29tZSBj
b25zdHJ1Y3RzIHRvIGRvIHRoaXMuICBBZnRlcgorYCNpbmNsdWRlYGluZyB0aGlzIGhlYWRlciwg
eW91IGNhbiB1c2UKKworfCBgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoYF9zdGF0ZW1lbnQsIHN1YnN0
cmluZ19gKTtgIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS18CisKK3RvIGFzc2VydCB0aGF0IF9zdGF0ZW1lbnRfIGdlbmVyYXRlcyBhIGZhdGFs
IChlLmcuIGBBU1NFUlRfKmApIGZhaWx1cmUKK3dob3NlIG1lc3NhZ2UgY29udGFpbnMgdGhlIGdp
dmVuIF9zdWJzdHJpbmdfLCBvciB1c2UKKworfCBgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoYF9z
dGF0ZW1lbnQsIHN1YnN0cmluZ19gKTtgIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisKK2lmIHlvdSBhcmUgZXhwZWN0aW5nIGEgbm9u
LWZhdGFsIChlLmcuIGBFWFBFQ1RfKmApIGZhaWx1cmUuCisKK0ZvciB0ZWNobmljYWwgcmVhc29u
cywgdGhlcmUgYXJlIHNvbWUgY2F2ZWF0czoKKworICAxLiBZb3UgY2Fubm90IHN0cmVhbSBhIGZh
aWx1cmUgbWVzc2FnZSB0byBlaXRoZXIgbWFjcm8uCisgIDEuIF9zdGF0ZW1lbnRfIGluIGBFWFBF
Q1RfRkFUQUxfRkFJTFVSRSgpYCBjYW5ub3QgcmVmZXJlbmNlIGxvY2FsIG5vbi1zdGF0aWMgdmFy
aWFibGVzIG9yIG5vbi1zdGF0aWMgbWVtYmVycyBvZiBgdGhpc2Agb2JqZWN0LgorICAxLiBfc3Rh
dGVtZW50XyBpbiBgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKWAgY2Fubm90IHJldHVybiBhIHZhbHVl
LgorCitfTm90ZTpfIEdvb2dsZSBUZXN0IGlzIGRlc2lnbmVkIHdpdGggdGhyZWFkcyBpbiBtaW5k
LiAgT25jZSB0aGUKK3N5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIGluIGAiZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtcG9ydC5oImAgaGF2ZQorYmVlbiBpbXBsZW1lbnRlZCwgR29vZ2xlIFRlc3Qgd2ls
bCBiZWNvbWUgdGhyZWFkLXNhZmUsIG1lYW5pbmcgdGhhdAoreW91IGNhbiB0aGVuIHVzZSBhc3Nl
cnRpb25zIGluIG11bHRpcGxlIHRocmVhZHMgY29uY3VycmVudGx5LiAgQmVmb3JlCisKK3RoYXQs
IGhvd2V2ZXIsIEdvb2dsZSBUZXN0IG9ubHkgc3VwcG9ydHMgc2luZ2xlLXRocmVhZGVkIHVzYWdl
LiAgT25jZQordGhyZWFkLXNhZmUsIGBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpYCBhbmQgYEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFKClgCit3aWxsIGNhcHR1cmUgZmFpbHVyZXMgaW4gdGhlIGN1cnJl
bnQgdGhyZWFkIG9ubHkuIElmIF9zdGF0ZW1lbnRfCitjcmVhdGVzIG5ldyB0aHJlYWRzLCBmYWls
dXJlcyBpbiB0aGVzZSB0aHJlYWRzIHdpbGwgYmUgaWdub3JlZC4gIElmCit5b3Ugd2FudCB0byBj
YXB0dXJlIGZhaWx1cmVzIGZyb20gYWxsIHRocmVhZHMgaW5zdGVhZCwgeW91IHNob3VsZCB1c2UK
K3RoZSBmb2xsb3dpbmcgbWFjcm9zOgorCit8IGBFWFBFQ1RfRkFUQUxfRkFJTFVSRV9PTl9BTExf
VEhSRUFEUyhgX3N0YXRlbWVudCwgc3Vic3RyaW5nX2ApO2AgfAorfDotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKK3wgYEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTKGBfc3RhdGVtZW50LCBzdWJzdHJp
bmdfYCk7YCB8CisKKyMgR2V0dGluZyB0aGUgQ3VycmVudCBUZXN0J3MgTmFtZSAjCisKK1NvbWV0
aW1lcyBhIGZ1bmN0aW9uIG1heSBuZWVkIHRvIGtub3cgdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnRs
eSBydW5uaW5nIHRlc3QuCitGb3IgZXhhbXBsZSwgeW91IG1heSBiZSB1c2luZyB0aGUgYFNldFVw
KClgIG1ldGhvZCBvZiB5b3VyIHRlc3QgZml4dHVyZSB0byBzZXQKK3RoZSBnb2xkZW4gZmlsZSBu
YW1lIGJhc2VkIG9uIHdoaWNoIHRlc3QgaXMgcnVubmluZy4gVGhlIGA6OnRlc3Rpbmc6OlRlc3RJ
bmZvYAorY2xhc3MgaGFzIHRoaXMgaW5mb3JtYXRpb246CisKK2BgYAorbmFtZXNwYWNlIHRlc3Rp
bmcgeworCitjbGFzcyBUZXN0SW5mbyB7CisgcHVibGljOgorICAvLyBSZXR1cm5zIHRoZSB0ZXN0
IGNhc2UgbmFtZSBhbmQgdGhlIHRlc3QgbmFtZSwgcmVzcGVjdGl2ZWx5LgorICAvLworICAvLyBE
byBOT1QgZGVsZXRlIG9yIGZyZWUgdGhlIHJldHVybiB2YWx1ZSAtIGl0J3MgbWFuYWdlZCBieSB0
aGUKKyAgLy8gVGVzdEluZm8gY2xhc3MuCisgIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lKCkg
Y29uc3Q7CisgIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdDsKK307CisKK30gIC8vIG5hbWVzcGFj
ZSB0ZXN0aW5nCitgYGAKKworCis+IFRvIG9idGFpbiBhIGBUZXN0SW5mb2Agb2JqZWN0IGZvciB0
aGUgY3VycmVudGx5IHJ1bm5pbmcgdGVzdCwgY2FsbAorYGN1cnJlbnRfdGVzdF9pbmZvKClgIG9u
IHRoZSBgVW5pdFRlc3RgIHNpbmdsZXRvbiBvYmplY3Q6CisKK2BgYAorLy8gR2V0cyBpbmZvcm1h
dGlvbiBhYm91dCB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdGVzdC4KKy8vIERvIE5PVCBkZWxldGUg
dGhlIHJldHVybmVkIG9iamVjdCAtIGl0J3MgbWFuYWdlZCBieSB0aGUgVW5pdFRlc3QgY2xhc3Mu
Citjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCB0ZXN0X2luZm8gPQorICA6OnRlc3Rp
bmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rlc3RfaW5mbygpOworcHJpbnRm
KCJXZSBhcmUgaW4gdGVzdCAlcyBvZiB0ZXN0IGNhc2UgJXMuXG4iLAorICAgICAgIHRlc3RfaW5m
by0+bmFtZSgpLCB0ZXN0X2luZm8tPnRlc3RfY2FzZV9uYW1lKCkpOworYGBgCisKK2BjdXJyZW50
X3Rlc3RfaW5mbygpYCByZXR1cm5zIGEgbnVsbCBwb2ludGVyIGlmIG5vIHRlc3QgaXMgcnVubmlu
Zy4gSW4KK3BhcnRpY3VsYXIsIHlvdSBjYW5ub3QgZmluZCB0aGUgdGVzdCBjYXNlIG5hbWUgaW4g
YFRlc3RDYXNlU2V0VXAoKWAsCitgVGVzdENhc2VUZWFyRG93bigpYCAod2hlcmUgeW91IGtub3cg
dGhlIHRlc3QgY2FzZSBuYW1lIGltcGxpY2l0bHkpLCBvcgorZnVuY3Rpb25zIGNhbGxlZCBmcm9t
IHRoZW0uCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLgorCisjIEV4dGVu
ZGluZyBHb29nbGUgVGVzdCBieSBIYW5kbGluZyBUZXN0IEV2ZW50cyAjCisKK0dvb2dsZSBUZXN0
IHByb3ZpZGVzIGFuIDxiPmV2ZW50IGxpc3RlbmVyIEFQSTwvYj4gdG8gbGV0IHlvdSByZWNlaXZl
Citub3RpZmljYXRpb25zIGFib3V0IHRoZSBwcm9ncmVzcyBvZiBhIHRlc3QgcHJvZ3JhbSBhbmQg
dGVzdAorZmFpbHVyZXMuIFRoZSBldmVudHMgeW91IGNhbiBsaXN0ZW4gdG8gaW5jbHVkZSB0aGUg
c3RhcnQgYW5kIGVuZCBvZgordGhlIHRlc3QgcHJvZ3JhbSwgYSB0ZXN0IGNhc2UsIG9yIGEgdGVz
dCBtZXRob2QsIGFtb25nIG90aGVycy4gWW91IG1heQordXNlIHRoaXMgQVBJIHRvIGF1Z21lbnQg
b3IgcmVwbGFjZSB0aGUgc3RhbmRhcmQgY29uc29sZSBvdXRwdXQsCityZXBsYWNlIHRoZSBYTUwg
b3V0cHV0LCBvciBwcm92aWRlIGEgY29tcGxldGVseSBkaWZmZXJlbnQgZm9ybSBvZgorb3V0cHV0
LCBzdWNoIGFzIGEgR1VJIG9yIGEgZGF0YWJhc2UuIFlvdSBjYW4gYWxzbyB1c2UgdGVzdCBldmVu
dHMgYXMKK2NoZWNrcG9pbnRzIHRvIGltcGxlbWVudCBhIHJlc291cmNlIGxlYWsgY2hlY2tlciwg
Zm9yIGV4YW1wbGUuCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjOyBzaW5j
ZSB2MS40LjAuCisKKyMjIERlZmluaW5nIEV2ZW50IExpc3RlbmVycyAjIworCitUbyBkZWZpbmUg
YSBldmVudCBsaXN0ZW5lciwgeW91IHN1YmNsYXNzIGVpdGhlcgorW3Rlc3Rpbmc6OlRlc3RFdmVu
dExpc3RlbmVyXSguLi9pbmNsdWRlL2d0ZXN0L2d0ZXN0LmgjTDg1NSkKK29yIFt0ZXN0aW5nOjpF
bXB0eVRlc3RFdmVudExpc3RlbmVyXSguLi9pbmNsdWRlL2d0ZXN0L2d0ZXN0LmgjTDkwNSkuCitU
aGUgZm9ybWVyIGlzIGFuIChhYnN0cmFjdCkgaW50ZXJmYWNlLCB3aGVyZSA8aT5lYWNoIHB1cmUg
dmlydHVhbCBtZXRob2Q8YnI+CitjYW4gYmUgb3ZlcnJpZGRlbiB0byBoYW5kbGUgYSB0ZXN0IGV2
ZW50PC9pPiAoRm9yIGV4YW1wbGUsIHdoZW4gYSB0ZXN0CitzdGFydHMsIHRoZSBgT25UZXN0U3Rh
cnQoKWAgbWV0aG9kIHdpbGwgYmUgY2FsbGVkLikuIFRoZSBsYXR0ZXIgcHJvdmlkZXMKK2FuIGVt
cHR5IGltcGxlbWVudGF0aW9uIG9mIGFsbCBtZXRob2RzIGluIHRoZSBpbnRlcmZhY2UsIHN1Y2gg
dGhhdCBhCitzdWJjbGFzcyBvbmx5IG5lZWRzIHRvIG92ZXJyaWRlIHRoZSBtZXRob2RzIGl0IGNh
cmVzIGFib3V0LgorCitXaGVuIGFuIGV2ZW50IGlzIGZpcmVkLCBpdHMgY29udGV4dCBpcyBwYXNz
ZWQgdG8gdGhlIGhhbmRsZXIgZnVuY3Rpb24KK2FzIGFuIGFyZ3VtZW50LiBUaGUgZm9sbG93aW5n
IGFyZ3VtZW50IHR5cGVzIGFyZSB1c2VkOgorICAqIFtVbml0VGVzdF0oLi4vaW5jbHVkZS9ndGVz
dC9ndGVzdC5oI0wxMDA3KSByZWZsZWN0cyB0aGUgc3RhdGUgb2YgdGhlIGVudGlyZSB0ZXN0IHBy
b2dyYW0sCisgICogW1Rlc3RDYXNlXSguLi9pbmNsdWRlL2d0ZXN0L2d0ZXN0LmgjTDY4OSkgaGFz
IGluZm9ybWF0aW9uIGFib3V0IGEgdGVzdCBjYXNlLCB3aGljaCBjYW4gY29udGFpbiBvbmUgb3Ig
bW9yZSB0ZXN0cywKKyAgKiBbVGVzdEluZm9dKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCNMNTk5
KSBjb250YWlucyB0aGUgc3RhdGUgb2YgYSB0ZXN0LCBhbmQKKyAgKiBbVGVzdFBhcnRSZXN1bHRd
KC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0LmgjTDQyKSByZXByZXNlbnRzIHRoZSBy
ZXN1bHQgb2YgYSB0ZXN0IGFzc2VydGlvbi4KKworQW4gZXZlbnQgaGFuZGxlciBmdW5jdGlvbiBj
YW4gZXhhbWluZSB0aGUgYXJndW1lbnQgaXQgcmVjZWl2ZXMgdG8gZmluZAorb3V0IGludGVyZXN0
aW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBldmVudCBhbmQgdGhlIHRlc3QgcHJvZ3JhbSdzCitz
dGF0ZS4gIEhlcmUncyBhbiBleGFtcGxlOgorCitgYGAKKyAgY2xhc3MgTWluaW1hbGlzdFByaW50
ZXIgOiBwdWJsaWMgOjp0ZXN0aW5nOjpFbXB0eVRlc3RFdmVudExpc3RlbmVyIHsKKyAgICAvLyBD
YWxsZWQgYmVmb3JlIGEgdGVzdCBzdGFydHMuCisgICAgdmlydHVhbCB2b2lkIE9uVGVzdFN0YXJ0
KGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8mIHRlc3RfaW5mbykgeworICAgICAgcHJpbnRmKCIq
KiogVGVzdCAlcy4lcyBzdGFydGluZy5cbiIsCisgICAgICAgICAgICAgdGVzdF9pbmZvLnRlc3Rf
Y2FzZV9uYW1lKCksIHRlc3RfaW5mby5uYW1lKCkpOworICAgIH0KKworICAgIC8vIENhbGxlZCBh
ZnRlciBhIGZhaWxlZCBhc3NlcnRpb24gb3IgYSBTVUNDRUVEKCkgaW52b2NhdGlvbi4KKyAgICB2
aXJ0dWFsIHZvaWQgT25UZXN0UGFydFJlc3VsdCgKKyAgICAgICAgY29uc3QgOjp0ZXN0aW5nOjpU
ZXN0UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCkgeworICAgICAgcHJpbnRmKCIlcyBpbiAl
czolZFxuJXNcbiIsCisgICAgICAgICAgICAgdGVzdF9wYXJ0X3Jlc3VsdC5mYWlsZWQoKSA/ICIq
KiogRmFpbHVyZSIgOiAiU3VjY2VzcyIsCisgICAgICAgICAgICAgdGVzdF9wYXJ0X3Jlc3VsdC5m
aWxlX25hbWUoKSwKKyAgICAgICAgICAgICB0ZXN0X3BhcnRfcmVzdWx0LmxpbmVfbnVtYmVyKCks
CisgICAgICAgICAgICAgdGVzdF9wYXJ0X3Jlc3VsdC5zdW1tYXJ5KCkpOworICAgIH0KKworICAg
IC8vIENhbGxlZCBhZnRlciBhIHRlc3QgZW5kcy4KKyAgICB2aXJ0dWFsIHZvaWQgT25UZXN0RW5k
KGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8mIHRlc3RfaW5mbykgeworICAgICAgcHJpbnRmKCIq
KiogVGVzdCAlcy4lcyBlbmRpbmcuXG4iLAorICAgICAgICAgICAgIHRlc3RfaW5mby50ZXN0X2Nh
c2VfbmFtZSgpLCB0ZXN0X2luZm8ubmFtZSgpKTsKKyAgICB9CisgIH07CitgYGAKKworIyMgVXNp
bmcgRXZlbnQgTGlzdGVuZXJzICMjCisKK1RvIHVzZSB0aGUgZXZlbnQgbGlzdGVuZXIgeW91IGhh
dmUgZGVmaW5lZCwgYWRkIGFuIGluc3RhbmNlIG9mIGl0IHRvCit0aGUgR29vZ2xlIFRlc3QgZXZl
bnQgbGlzdGVuZXIgbGlzdCAocmVwcmVzZW50ZWQgYnkgY2xhc3MKK1tUZXN0RXZlbnRMaXN0ZW5l
cnNdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCNMOTI5KQorLSBub3RlIHRoZSAicyIgYXQgdGhl
IGVuZCBvZiB0aGUgbmFtZSkgaW4geW91cgorYG1haW4oKWAgZnVuY3Rpb24sIGJlZm9yZSBjYWxs
aW5nIGBSVU5fQUxMX1RFU1RTKClgOgorYGBgCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFy
Z3YpIHsKKyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisgIC8vIEdl
dHMgaG9sZCBvZiB0aGUgZXZlbnQgbGlzdGVuZXIgbGlzdC4KKyAgOjp0ZXN0aW5nOjpUZXN0RXZl
bnRMaXN0ZW5lcnMmIGxpc3RlbmVycyA9CisgICAgICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJ
bnN0YW5jZSgpLT5saXN0ZW5lcnMoKTsKKyAgLy8gQWRkcyBhIGxpc3RlbmVyIHRvIHRoZSBlbmQu
ICBHb29nbGUgVGVzdCB0YWtlcyB0aGUgb3duZXJzaGlwLgorICBsaXN0ZW5lcnMuQXBwZW5kKG5l
dyBNaW5pbWFsaXN0UHJpbnRlcik7CisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CitgYGAK
KworVGhlcmUncyBvbmx5IG9uZSBwcm9ibGVtOiB0aGUgZGVmYXVsdCB0ZXN0IHJlc3VsdCBwcmlu
dGVyIGlzIHN0aWxsIGluCitlZmZlY3QsIHNvIGl0cyBvdXRwdXQgd2lsbCBtaW5nbGUgd2l0aCB0
aGUgb3V0cHV0IGZyb20geW91ciBtaW5pbWFsaXN0CitwcmludGVyLiBUbyBzdXBwcmVzcyB0aGUg
ZGVmYXVsdCBwcmludGVyLCBqdXN0IHJlbGVhc2UgaXQgZnJvbSB0aGUKK2V2ZW50IGxpc3RlbmVy
IGxpc3QgYW5kIGRlbGV0ZSBpdC4gWW91IGNhbiBkbyBzbyBieSBhZGRpbmcgb25lIGxpbmU6Citg
YGAKKyAgLi4uCisgIGRlbGV0ZSBsaXN0ZW5lcnMuUmVsZWFzZShsaXN0ZW5lcnMuZGVmYXVsdF9y
ZXN1bHRfcHJpbnRlcigpKTsKKyAgbGlzdGVuZXJzLkFwcGVuZChuZXcgTWluaW1hbGlzdFByaW50
ZXIpOworICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworYGBgCisKK05vdywgc2l0IGJhY2sgYW5k
IGVuam95IGEgY29tcGxldGVseSBkaWZmZXJlbnQgb3V0cHV0IGZyb20geW91cgordGVzdHMuIEZv
ciBtb3JlIGRldGFpbHMsIHlvdSBjYW4gcmVhZCB0aGlzCitbc2FtcGxlXSguLi9zYW1wbGVzL3Nh
bXBsZTlfdW5pdHRlc3QuY2MpLgorCitZb3UgbWF5IGFwcGVuZCBtb3JlIHRoYW4gb25lIGxpc3Rl
bmVyIHRvIHRoZSBsaXN0LiBXaGVuIGFuIGBPbipTdGFydCgpYAorb3IgYE9uVGVzdFBhcnRSZXN1
bHQoKWAgZXZlbnQgaXMgZmlyZWQsIHRoZSBsaXN0ZW5lcnMgd2lsbCByZWNlaXZlIGl0IGluCit0
aGUgb3JkZXIgdGhleSBhcHBlYXIgaW4gdGhlIGxpc3QgKHNpbmNlIG5ldyBsaXN0ZW5lcnMgYXJl
IGFkZGVkIHRvCit0aGUgZW5kIG9mIHRoZSBsaXN0LCB0aGUgZGVmYXVsdCB0ZXh0IHByaW50ZXIg
YW5kIHRoZSBkZWZhdWx0IFhNTAorZ2VuZXJhdG9yIHdpbGwgcmVjZWl2ZSB0aGUgZXZlbnQgZmly
c3QpLiBBbiBgT24qRW5kKClgIGV2ZW50IHdpbGwgYmUKK3JlY2VpdmVkIGJ5IHRoZSBsaXN0ZW5l
cnMgaW4gdGhlIF9yZXZlcnNlXyBvcmRlci4gVGhpcyBhbGxvd3Mgb3V0cHV0IGJ5CitsaXN0ZW5l
cnMgYWRkZWQgbGF0ZXIgdG8gYmUgZnJhbWVkIGJ5IG91dHB1dCBmcm9tIGxpc3RlbmVycyBhZGRl
ZAorZWFybGllci4KKworIyMgR2VuZXJhdGluZyBGYWlsdXJlcyBpbiBMaXN0ZW5lcnMgIyMKKwor
WW91IG1heSB1c2UgZmFpbHVyZS1yYWlzaW5nIG1hY3JvcyAoYEVYUEVDVF8qKClgLCBgQVNTRVJU
XyooKWAsCitgRkFJTCgpYCwgZXRjKSB3aGVuIHByb2Nlc3NpbmcgYW4gZXZlbnQuIFRoZXJlIGFy
ZSBzb21lIHJlc3RyaWN0aW9uczoKKworICAxLiBZb3UgY2Fubm90IGdlbmVyYXRlIGFueSBmYWls
dXJlIGluIGBPblRlc3RQYXJ0UmVzdWx0KClgIChvdGhlcndpc2UgaXQgd2lsbCBjYXVzZSBgT25U
ZXN0UGFydFJlc3VsdCgpYCB0byBiZSBjYWxsZWQgcmVjdXJzaXZlbHkpLgorICAxLiBBIGxpc3Rl
bmVyIHRoYXQgaGFuZGxlcyBgT25UZXN0UGFydFJlc3VsdCgpYCBpcyBub3QgYWxsb3dlZCB0byBn
ZW5lcmF0ZSBhbnkgZmFpbHVyZS4KKworV2hlbiB5b3UgYWRkIGxpc3RlbmVycyB0byB0aGUgbGlz
dGVuZXIgbGlzdCwgeW91IHNob3VsZCBwdXQgbGlzdGVuZXJzCit0aGF0IGhhbmRsZSBgT25UZXN0
UGFydFJlc3VsdCgpYCBfYmVmb3JlXyBsaXN0ZW5lcnMgdGhhdCBjYW4gZ2VuZXJhdGUKK2ZhaWx1
cmVzLiBUaGlzIGVuc3VyZXMgdGhhdCBmYWlsdXJlcyBnZW5lcmF0ZWQgYnkgdGhlIGxhdHRlciBh
cmUKK2F0dHJpYnV0ZWQgdG8gdGhlIHJpZ2h0IHRlc3QgYnkgdGhlIGZvcm1lci4KKworV2UgaGF2
ZSBhIHNhbXBsZSBvZiBmYWlsdXJlLXJhaXNpbmcgbGlzdGVuZXIKK1toZXJlXSguLi9zYW1wbGVz
L3NhbXBsZTEwX3VuaXR0ZXN0LmNjKS4KKworIyBSdW5uaW5nIFRlc3QgUHJvZ3JhbXM6IEFkdmFu
Y2VkIE9wdGlvbnMgIworCitHb29nbGUgVGVzdCB0ZXN0IHByb2dyYW1zIGFyZSBvcmRpbmFyeSBl
eGVjdXRhYmxlcy4gT25jZSBidWlsdCwgeW91IGNhbiBydW4KK3RoZW0gZGlyZWN0bHkgYW5kIGFm
ZmVjdCB0aGVpciBiZWhhdmlvciB2aWEgdGhlIGZvbGxvd2luZyBlbnZpcm9ubWVudCB2YXJpYWJs
ZXMKK2FuZC9vciBjb21tYW5kIGxpbmUgZmxhZ3MuIEZvciB0aGUgZmxhZ3MgdG8gd29yaywgeW91
ciBwcm9ncmFtcyBtdXN0IGNhbGwKK2A6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KClgIGJlZm9y
ZSBjYWxsaW5nIGBSVU5fQUxMX1RFU1RTKClgLgorCitUbyBzZWUgYSBsaXN0IG9mIHN1cHBvcnRl
ZCBmbGFncyBhbmQgdGhlaXIgdXNhZ2UsIHBsZWFzZSBydW4geW91ciB0ZXN0Citwcm9ncmFtIHdp
dGggdGhlIGAtLWhlbHBgIGZsYWcuICBZb3UgY2FuIGFsc28gdXNlIGAtaGAsIGAtP2AsIG9yIGAv
P2AKK2ZvciBzaG9ydC4gIFRoaXMgZmVhdHVyZSBpcyBhZGRlZCBpbiB2ZXJzaW9uIDEuMy4wLgor
CitJZiBhbiBvcHRpb24gaXMgc3BlY2lmaWVkIGJvdGggYnkgYW4gZW52aXJvbm1lbnQgdmFyaWFi
bGUgYW5kIGJ5IGEKK2ZsYWcsIHRoZSBsYXR0ZXIgdGFrZXMgcHJlY2VkZW5jZS4gIE1vc3Qgb2Yg
dGhlIG9wdGlvbnMgY2FuIGFsc28gYmUKK3NldC9yZWFkIGluIGNvZGU6IHRvIGFjY2VzcyB0aGUg
dmFsdWUgb2YgY29tbWFuZCBsaW5lIGZsYWcKK2AtLWd0ZXN0X2Zvb2AsIHdyaXRlIGA6OnRlc3Rp
bmc6OkdURVNUX0ZMQUcoZm9vKWAuICBBIGNvbW1vbiBwYXR0ZXJuIGlzCit0byBzZXQgdGhlIHZh
bHVlIG9mIGEgZmxhZyBiZWZvcmUgY2FsbGluZyBgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgp
YAordG8gY2hhbmdlIHRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSBmbGFnOgorYGBgCitpbnQgbWFp
bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKKyAgLy8gRGlzYWJsZXMgZWxhcHNlZCB0aW1lIGJ5
IGRlZmF1bHQuCisgIDo6dGVzdGluZzo6R1RFU1RfRkxBRyhwcmludF90aW1lKSA9IGZhbHNlOwor
CisgIC8vIFRoaXMgYWxsb3dzIHRoZSB1c2VyIHRvIG92ZXJyaWRlIHRoZSBmbGFnIG9uIHRoZSBj
b21tYW5kIGxpbmUuCisgIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwor
CisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CitgYGAKKworIyMgU2VsZWN0aW5nIFRlc3Rz
ICMjCisKK1RoaXMgc2VjdGlvbiBzaG93cyB2YXJpb3VzIG9wdGlvbnMgZm9yIGNob29zaW5nIHdo
aWNoIHRlc3RzIHRvIHJ1bi4KKworIyMjIExpc3RpbmcgVGVzdCBOYW1lcyAjIyMKKworU29tZXRp
bWVzIGl0IGlzIG5lY2Vzc2FyeSB0byBsaXN0IHRoZSBhdmFpbGFibGUgdGVzdHMgaW4gYSBwcm9n
cmFtIGJlZm9yZQorcnVubmluZyB0aGVtIHNvIHRoYXQgYSBmaWx0ZXIgbWF5IGJlIGFwcGxpZWQg
aWYgbmVlZGVkLiBJbmNsdWRpbmcgdGhlIGZsYWcKK2AtLWd0ZXN0X2xpc3RfdGVzdHNgIG92ZXJy
aWRlcyBhbGwgb3RoZXIgZmxhZ3MgYW5kIGxpc3RzIHRlc3RzIGluIHRoZSBmb2xsb3dpbmcKK2Zv
cm1hdDoKK2BgYAorVGVzdENhc2UxLgorICBUZXN0TmFtZTEKKyAgVGVzdE5hbWUyCitUZXN0Q2Fz
ZTIuCisgIFRlc3ROYW1lCitgYGAKKworTm9uZSBvZiB0aGUgdGVzdHMgbGlzdGVkIGFyZSBhY3R1
YWxseSBydW4gaWYgdGhlIGZsYWcgaXMgcHJvdmlkZWQuIFRoZXJlIGlzIG5vCitjb3JyZXNwb25k
aW5nIGVudmlyb25tZW50IHZhcmlhYmxlIGZvciB0aGlzIGZsYWcuCisKK19BdmFpbGFiaWxpdHk6
XyBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMgUnVubmluZyBhIFN1YnNldCBvZiB0aGUgVGVz
dHMgIyMjCisKK0J5IGRlZmF1bHQsIGEgR29vZ2xlIFRlc3QgcHJvZ3JhbSBydW5zIGFsbCB0ZXN0
cyB0aGUgdXNlciBoYXMgZGVmaW5lZC4KK1NvbWV0aW1lcywgeW91IHdhbnQgdG8gcnVuIG9ubHkg
YSBzdWJzZXQgb2YgdGhlIHRlc3RzIChlLmcuIGZvciBkZWJ1Z2dpbmcgb3IKK3F1aWNrbHkgdmVy
aWZ5aW5nIGEgY2hhbmdlKS4gSWYgeW91IHNldCB0aGUgYEdURVNUX0ZJTFRFUmAgZW52aXJvbm1l
bnQgdmFyaWFibGUKK29yIHRoZSBgLS1ndGVzdF9maWx0ZXJgIGZsYWcgdG8gYSBmaWx0ZXIgc3Ry
aW5nLCBHb29nbGUgVGVzdCB3aWxsIG9ubHkgcnVuIHRoZQordGVzdHMgd2hvc2UgZnVsbCBuYW1l
cyAoaW4gdGhlIGZvcm0gb2YgYFRlc3RDYXNlTmFtZS5UZXN0TmFtZWApIG1hdGNoIHRoZQorZmls
dGVyLgorCitUaGUgZm9ybWF0IG9mIGEgZmlsdGVyIGlzIGEgJ2A6YCctc2VwYXJhdGVkIGxpc3Qg
b2Ygd2lsZGNhcmQgcGF0dGVybnMgKGNhbGxlZAordGhlIHBvc2l0aXZlIHBhdHRlcm5zKSBvcHRp
b25hbGx5IGZvbGxvd2VkIGJ5IGEgJ2AtYCcgYW5kIGFub3RoZXIKKydgOmAnLXNlcGFyYXRlZCBw
YXR0ZXJuIGxpc3QgKGNhbGxlZCB0aGUgbmVnYXRpdmUgcGF0dGVybnMpLiBBIHRlc3QgbWF0Y2hl
cyB0aGUKK2ZpbHRlciBpZiBhbmQgb25seSBpZiBpdCBtYXRjaGVzIGFueSBvZiB0aGUgcG9zaXRp
dmUgcGF0dGVybnMgYnV0IGRvZXMgbm90CittYXRjaCBhbnkgb2YgdGhlIG5lZ2F0aXZlIHBhdHRl
cm5zLgorCitBIHBhdHRlcm4gbWF5IGNvbnRhaW4gYCcqJ2AgKG1hdGNoZXMgYW55IHN0cmluZykg
b3IgYCc/J2AgKG1hdGNoZXMgYW55IHNpbmdsZQorY2hhcmFjdGVyKS4gRm9yIGNvbnZlbmllbmNl
LCB0aGUgZmlsdGVyIGAnKi1OZWdhdGl2ZVBhdHRlcm5zJ2AgY2FuIGJlIGFsc28KK3dyaXR0ZW4g
YXMgYCctTmVnYXRpdmVQYXR0ZXJucydgLgorCitGb3IgZXhhbXBsZToKKworICAqIGAuL2Zvb190
ZXN0YCBIYXMgbm8gZmxhZywgYW5kIHRodXMgcnVucyBhbGwgaXRzIHRlc3RzLgorICAqIGAuL2Zv
b190ZXN0IC0tZ3Rlc3RfZmlsdGVyPSpgIEFsc28gcnVucyBldmVyeXRoaW5nLCBkdWUgdG8gdGhl
IHNpbmdsZSBtYXRjaC1ldmVyeXRoaW5nIGAqYCB2YWx1ZS4KKyAgKiBgLi9mb29fdGVzdCAtLWd0
ZXN0X2ZpbHRlcj1Gb29UZXN0LipgIFJ1bnMgZXZlcnl0aGluZyBpbiB0ZXN0IGNhc2UgYEZvb1Rl
c3RgLgorICAqIGAuL2Zvb190ZXN0IC0tZ3Rlc3RfZmlsdGVyPSpOdWxsKjoqQ29uc3RydWN0b3Iq
YCBSdW5zIGFueSB0ZXN0IHdob3NlIGZ1bGwgbmFtZSBjb250YWlucyBlaXRoZXIgYCJOdWxsImAg
b3IgYCJDb25zdHJ1Y3RvciJgLgorICAqIGAuL2Zvb190ZXN0IC0tZ3Rlc3RfZmlsdGVyPS0qRGVh
dGhUZXN0LipgIFJ1bnMgYWxsIG5vbi1kZWF0aCB0ZXN0cy4KKyAgKiBgLi9mb29fdGVzdCAtLWd0
ZXN0X2ZpbHRlcj1Gb29UZXN0LiotRm9vVGVzdC5CYXJgIFJ1bnMgZXZlcnl0aGluZyBpbiB0ZXN0
IGNhc2UgYEZvb1Rlc3RgIGV4Y2VwdCBgRm9vVGVzdC5CYXJgLgorCitfQXZhaWxhYmlsaXR5Ol8g
TGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIFRlbXBvcmFyaWx5IERpc2FibGluZyBUZXN0cyAj
IyMKKworSWYgeW91IGhhdmUgYSBicm9rZW4gdGVzdCB0aGF0IHlvdSBjYW5ub3QgZml4IHJpZ2h0
IGF3YXksIHlvdSBjYW4gYWRkIHRoZQorYERJU0FCTEVEX2AgcHJlZml4IHRvIGl0cyBuYW1lLiBU
aGlzIHdpbGwgZXhjbHVkZSBpdCBmcm9tIGV4ZWN1dGlvbi4gVGhpcyBpcworYmV0dGVyIHRoYW4g
Y29tbWVudGluZyBvdXQgdGhlIGNvZGUgb3IgdXNpbmcgYCNpZiAwYCwgYXMgZGlzYWJsZWQgdGVz
dHMgYXJlCitzdGlsbCBjb21waWxlZCAoYW5kIHRodXMgd29uJ3Qgcm90KS4KKworSWYgeW91IG5l
ZWQgdG8gZGlzYWJsZSBhbGwgdGVzdHMgaW4gYSB0ZXN0IGNhc2UsIHlvdSBjYW4gZWl0aGVyIGFk
ZCBgRElTQUJMRURfYAordG8gdGhlIGZyb250IG9mIHRoZSBuYW1lIG9mIGVhY2ggdGVzdCwgb3Ig
YWx0ZXJuYXRpdmVseSBhZGQgaXQgdG8gdGhlIGZyb250IG9mCit0aGUgdGVzdCBjYXNlIG5hbWUu
CisKK0ZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIHRlc3RzIHdvbid0IGJlIHJ1biBieSBHb29n
bGUgVGVzdCwgZXZlbiB0aG91Z2ggdGhleQord2lsbCBzdGlsbCBiZSBjb21waWxlZDoKKworYGBg
CisvLyBUZXN0cyB0aGF0IEZvbyBkb2VzIEFiYy4KK1RFU1QoRm9vVGVzdCwgRElTQUJMRURfRG9l
c0FiYykgeyAuLi4gfQorCitjbGFzcyBESVNBQkxFRF9CYXJUZXN0IDogcHVibGljIDo6dGVzdGlu
Zzo6VGVzdCB7IC4uLiB9OworCisvLyBUZXN0cyB0aGF0IEJhciBkb2VzIFh5ei4KK1RFU1RfRihE
SVNBQkxFRF9CYXJUZXN0LCBEb2VzWHl6KSB7IC4uLiB9CitgYGAKKworX05vdGU6XyBUaGlzIGZl
YXR1cmUgc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgdGVtcG9yYXJ5IHBhaW4tcmVsaWVmLiBZb3Ug
c3RpbGwKK2hhdmUgdG8gZml4IHRoZSBkaXNhYmxlZCB0ZXN0cyBhdCBhIGxhdGVyIGRhdGUuIEFz
IGEgcmVtaW5kZXIsIEdvb2dsZSBUZXN0IHdpbGwKK3ByaW50IGEgYmFubmVyIHdhcm5pbmcgeW91
IGlmIGEgdGVzdCBwcm9ncmFtIGNvbnRhaW5zIGFueSBkaXNhYmxlZCB0ZXN0cy4KKworX1RpcDpf
IFlvdSBjYW4gZWFzaWx5IGNvdW50IHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMgeW91IGhh
dmUKK3VzaW5nIGBncmVwYC4gVGhpcyBudW1iZXIgY2FuIGJlIHVzZWQgYXMgYSBtZXRyaWMgZm9y
IGltcHJvdmluZyB5b3VyCit0ZXN0IHF1YWxpdHkuCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwg
V2luZG93cywgTWFjLgorCisjIyMgVGVtcG9yYXJpbHkgRW5hYmxpbmcgRGlzYWJsZWQgVGVzdHMg
IyMjCisKK1RvIGluY2x1ZGUgW2Rpc2FibGVkIHRlc3RzXSgjdGVtcG9yYXJpbHktZGlzYWJsaW5n
LXRlc3RzKSBpbiB0ZXN0CitleGVjdXRpb24sIGp1c3QgaW52b2tlIHRoZSB0ZXN0IHByb2dyYW0g
d2l0aCB0aGUKK2AtLWd0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzYCBmbGFnIG9yIHNldCB0
aGUKK2BHVEVTVF9BTFNPX1JVTl9ESVNBQkxFRF9URVNUU2AgZW52aXJvbm1lbnQgdmFyaWFibGUg
dG8gYSB2YWx1ZSBvdGhlcgordGhhbiBgMGAuICBZb3UgY2FuIGNvbWJpbmUgdGhpcyB3aXRoIHRo
ZQorWy0tZ3Rlc3RcX2ZpbHRlcl0oI3J1bm5pbmctYS1zdWJzZXQtb2YtdGhlLXRlc3RzKSBmbGFn
IHRvIGZ1cnRoZXIgc2VsZWN0Cit3aGljaCBkaXNhYmxlZCB0ZXN0cyB0byBydW4uCisKK19BdmFp
bGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjOyBzaW5jZSB2ZXJzaW9uIDEuMy4wLgorCisj
IyBSZXBlYXRpbmcgdGhlIFRlc3RzICMjCisKK09uY2UgaW4gYSB3aGlsZSB5b3UnbGwgcnVuIGlu
dG8gYSB0ZXN0IHdob3NlIHJlc3VsdCBpcyBoaXQtb3ItbWlzcy4gUGVyaGFwcyBpdAord2lsbCBm
YWlsIG9ubHkgMSUgb2YgdGhlIHRpbWUsIG1ha2luZyBpdCByYXRoZXIgaGFyZCB0byByZXByb2R1
Y2UgdGhlIGJ1ZyB1bmRlcgorYSBkZWJ1Z2dlci4gVGhpcyBjYW4gYmUgYSBtYWpvciBzb3VyY2Ug
b2YgZnJ1c3RyYXRpb24uCisKK1RoZSBgLS1ndGVzdF9yZXBlYXRgIGZsYWcgYWxsb3dzIHlvdSB0
byByZXBlYXQgYWxsIChvciBzZWxlY3RlZCkgdGVzdCBtZXRob2RzCitpbiBhIHByb2dyYW0gbWFu
eSB0aW1lcy4gSG9wZWZ1bGx5LCBhIGZsYWt5IHRlc3Qgd2lsbCBldmVudHVhbGx5IGZhaWwgYW5k
IGdpdmUKK3lvdSBhIGNoYW5jZSB0byBkZWJ1Zy4gSGVyZSdzIGhvdyB0byB1c2UgaXQ6CisKK3wg
YCQgZm9vX3Rlc3QgLS1ndGVzdF9yZXBlYXQ9MTAwMGAgfCBSZXBlYXQgZm9vXF90ZXN0IDEwMDAg
dGltZXMgYW5kIGRvbid0IHN0b3AgYXQgZmFpbHVyZXMuIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLXwKK3wgYCQgZm9vX3Rlc3QgLS1ndGVzdF9yZXBlYXQ9LTFgICAgfCBB
IG5lZ2F0aXZlIGNvdW50IG1lYW5zIHJlcGVhdGluZyBmb3JldmVyLiAgICAgICAgICAgICAgIHwK
K3wgYCQgZm9vX3Rlc3QgLS1ndGVzdF9yZXBlYXQ9MTAwMCAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1
cmVgIHwgUmVwZWF0IGZvb1xfdGVzdCAxMDAwIHRpbWVzLCBzdG9wcGluZyBhdCB0aGUgZmlyc3Qg
ZmFpbHVyZS4gVGhpcyBpcyBlc3BlY2lhbGx5IHVzZWZ1bCB3aGVuIHJ1bm5pbmcgdW5kZXIgYSBk
ZWJ1Z2dlcjogd2hlbiB0aGUgdGVzdGZhaWxzLCBpdCB3aWxsIGRyb3AgaW50byB0aGUgZGVidWdn
ZXIgYW5kIHlvdSBjYW4gdGhlbiBpbnNwZWN0IHZhcmlhYmxlcyBhbmQgc3RhY2tzLiB8Cit8IGAk
IGZvb190ZXN0IC0tZ3Rlc3RfcmVwZWF0PTEwMDAgLS1ndGVzdF9maWx0ZXI9Rm9vQmFyYCB8IFJl
cGVhdCB0aGUgdGVzdHMgd2hvc2UgbmFtZSBtYXRjaGVzIHRoZSBmaWx0ZXIgMTAwMCB0aW1lcy4g
fAorCitJZiB5b3VyIHRlc3QgcHJvZ3JhbSBjb250YWlucyBnbG9iYWwgc2V0LXVwL3RlYXItZG93
biBjb2RlIHJlZ2lzdGVyZWQKK3VzaW5nIGBBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoKWAsIGl0
IHdpbGwgYmUgcmVwZWF0ZWQgaW4gZWFjaAoraXRlcmF0aW9uIGFzIHdlbGwsIGFzIHRoZSBmbGFr
aW5lc3MgbWF5IGJlIGluIGl0LiBZb3UgY2FuIGFsc28gc3BlY2lmeQordGhlIHJlcGVhdCBjb3Vu
dCBieSBzZXR0aW5nIHRoZSBgR1RFU1RfUkVQRUFUYCBlbnZpcm9ubWVudCB2YXJpYWJsZS4KKwor
X0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIFNodWZmbGluZyB0aGUg
VGVzdHMgIyMKKworWW91IGNhbiBzcGVjaWZ5IHRoZSBgLS1ndGVzdF9zaHVmZmxlYCBmbGFnIChv
ciBzZXQgdGhlIGBHVEVTVF9TSFVGRkxFYAorZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYDFgKSB0
byBydW4gdGhlIHRlc3RzIGluIGEgcHJvZ3JhbSBpbiBhIHJhbmRvbQorb3JkZXIuIFRoaXMgaGVs
cHMgdG8gcmV2ZWFsIGJhZCBkZXBlbmRlbmNpZXMgYmV0d2VlbiB0ZXN0cy4KKworQnkgZGVmYXVs
dCwgR29vZ2xlIFRlc3QgdXNlcyBhIHJhbmRvbSBzZWVkIGNhbGN1bGF0ZWQgZnJvbSB0aGUgY3Vy
cmVudAordGltZS4gVGhlcmVmb3JlIHlvdSdsbCBnZXQgYSBkaWZmZXJlbnQgb3JkZXIgZXZlcnkg
dGltZS4gVGhlIGNvbnNvbGUKK291dHB1dCBpbmNsdWRlcyB0aGUgcmFuZG9tIHNlZWQgdmFsdWUs
IHN1Y2ggdGhhdCB5b3UgY2FuIHJlcHJvZHVjZSBhbgorb3JkZXItcmVsYXRlZCB0ZXN0IGZhaWx1
cmUgbGF0ZXIuIFRvIHNwZWNpZnkgdGhlIHJhbmRvbSBzZWVkCitleHBsaWNpdGx5LCB1c2UgdGhl
IGAtLWd0ZXN0X3JhbmRvbV9zZWVkPVNFRURgIGZsYWcgKG9yIHNldCB0aGUKK2BHVEVTVF9SQU5E
T01fU0VFRGAgZW52aXJvbm1lbnQgdmFyaWFibGUpLCB3aGVyZSBgU0VFRGAgaXMgYW4gaW50ZWdl
cgorYmV0d2VlbiAwIGFuZCA5OTk5OS4gVGhlIHNlZWQgdmFsdWUgMCBpcyBzcGVjaWFsOiBpdCB0
ZWxscyBHb29nbGUgVGVzdAordG8gZG8gdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgY2FsY3VsYXRp
bmcgdGhlIHNlZWQgZnJvbSB0aGUgY3VycmVudAordGltZS4KKworSWYgeW91IGNvbWJpbmUgdGhp
cyB3aXRoIGAtLWd0ZXN0X3JlcGVhdD1OYCwgR29vZ2xlIFRlc3Qgd2lsbCBwaWNrIGEKK2RpZmZl
cmVudCByYW5kb20gc2VlZCBhbmQgcmUtc2h1ZmZsZSB0aGUgdGVzdHMgaW4gZWFjaCBpdGVyYXRp
b24uCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjOyBzaW5jZSB2MS40LjAu
CisKKyMjIENvbnRyb2xsaW5nIFRlc3QgT3V0cHV0ICMjCisKK1RoaXMgc2VjdGlvbiB0ZWFjaGVz
IGhvdyB0byB0d2VhayB0aGUgd2F5IHRlc3QgcmVzdWx0cyBhcmUgcmVwb3J0ZWQuCisKKyMjIyBD
b2xvcmVkIFRlcm1pbmFsIE91dHB1dCAjIyMKKworR29vZ2xlIFRlc3QgY2FuIHVzZSBjb2xvcnMg
aW4gaXRzIHRlcm1pbmFsIG91dHB1dCB0byBtYWtlIGl0IGVhc2llciB0byBzcG90Cit0aGUgc2Vw
YXJhdGlvbiBiZXR3ZWVuIHRlc3RzLCBhbmQgd2hldGhlciB0ZXN0cyBwYXNzZWQuCisKK1lvdSBj
YW4gc2V0IHRoZSBHVEVTVFxfQ09MT1IgZW52aXJvbm1lbnQgdmFyaWFibGUgb3Igc2V0IHRoZSBg
LS1ndGVzdF9jb2xvcmAKK2NvbW1hbmQgbGluZSBmbGFnIHRvIGB5ZXNgLCBgbm9gLCBvciBgYXV0
b2AgKHRoZSBkZWZhdWx0KSB0byBlbmFibGUgY29sb3JzLAorZGlzYWJsZSBjb2xvcnMsIG9yIGxl
dCBHb29nbGUgVGVzdCBkZWNpZGUuIFdoZW4gdGhlIHZhbHVlIGlzIGBhdXRvYCwgR29vZ2xlCitU
ZXN0IHdpbGwgdXNlIGNvbG9ycyBpZiBhbmQgb25seSBpZiB0aGUgb3V0cHV0IGdvZXMgdG8gYSB0
ZXJtaW5hbCBhbmQgKG9uCitub24tV2luZG93cyBwbGF0Zm9ybXMpIHRoZSBgVEVSTWAgZW52aXJv
bm1lbnQgdmFyaWFibGUgaXMgc2V0IHRvIGB4dGVybWAgb3IKK2B4dGVybS1jb2xvcmAuCisKK19B
dmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMgU3VwcHJlc3NpbmcgdGhl
IEVsYXBzZWQgVGltZSAjIyMKKworQnkgZGVmYXVsdCwgR29vZ2xlIFRlc3QgcHJpbnRzIHRoZSB0
aW1lIGl0IHRha2VzIHRvIHJ1biBlYWNoIHRlc3QuICBUbworc3VwcHJlc3MgdGhhdCwgcnVuIHRo
ZSB0ZXN0IHByb2dyYW0gd2l0aCB0aGUgYC0tZ3Rlc3RfcHJpbnRfdGltZT0wYAorY29tbWFuZCBs
aW5lIGZsYWcuICBTZXR0aW5nIHRoZSBgR1RFU1RfUFJJTlRfVElNRWAgZW52aXJvbm1lbnQKK3Zh
cmlhYmxlIHRvIGAwYCBoYXMgdGhlIHNhbWUgZWZmZWN0LgorCitfQXZhaWxhYmlsaXR5Ol8gTGlu
dXgsIFdpbmRvd3MsIE1hYy4gIChJbiBHb29nbGUgVGVzdCAxLjMuMCBhbmQgbG93ZXIsCit0aGUg
ZGVmYXVsdCBiZWhhdmlvciBpcyB0aGF0IHRoZSBlbGFwc2VkIHRpbWUgaXMgKipub3QqKiBwcmlu
dGVkLikKKworIyMjIEdlbmVyYXRpbmcgYW4gWE1MIFJlcG9ydCAjIyMKKworR29vZ2xlIFRlc3Qg
Y2FuIGVtaXQgYSBkZXRhaWxlZCBYTUwgcmVwb3J0IHRvIGEgZmlsZSBpbiBhZGRpdGlvbiB0byBp
dHMgbm9ybWFsCit0ZXh0dWFsIG91dHB1dC4gVGhlIHJlcG9ydCBjb250YWlucyB0aGUgZHVyYXRp
b24gb2YgZWFjaCB0ZXN0LCBhbmQgdGh1cyBjYW4KK2hlbHAgeW91IGlkZW50aWZ5IHNsb3cgdGVz
dHMuCisKK1RvIGdlbmVyYXRlIHRoZSBYTUwgcmVwb3J0LCBzZXQgdGhlIGBHVEVTVF9PVVRQVVRg
IGVudmlyb25tZW50IHZhcmlhYmxlIG9yIHRoZQorYC0tZ3Rlc3Rfb3V0cHV0YCBmbGFnIHRvIHRo
ZSBzdHJpbmcgYCJ4bWw6X3BhdGhfdG9fb3V0cHV0X2ZpbGVfImAsIHdoaWNoIHdpbGwKK2NyZWF0
ZSB0aGUgZmlsZSBhdCB0aGUgZ2l2ZW4gbG9jYXRpb24uIFlvdSBjYW4gYWxzbyBqdXN0IHVzZSB0
aGUgc3RyaW5nCitgInhtbCJgLCBpbiB3aGljaCBjYXNlIHRoZSBvdXRwdXQgY2FuIGJlIGZvdW5k
IGluIHRoZSBgdGVzdF9kZXRhaWwueG1sYCBmaWxlIGluCit0aGUgY3VycmVudCBkaXJlY3Rvcnku
CisKK0lmIHlvdSBzcGVjaWZ5IGEgZGlyZWN0b3J5IChmb3IgZXhhbXBsZSwgYCJ4bWw6b3V0cHV0
L2RpcmVjdG9yeS8iYCBvbiBMaW51eCBvcgorYCJ4bWw6b3V0cHV0XGRpcmVjdG9yeVwiYCBvbiBX
aW5kb3dzKSwgR29vZ2xlIFRlc3Qgd2lsbCBjcmVhdGUgdGhlIFhNTCBmaWxlIGluCit0aGF0IGRp
cmVjdG9yeSwgbmFtZWQgYWZ0ZXIgdGhlIHRlc3QgZXhlY3V0YWJsZSAoZS5nLiBgZm9vX3Rlc3Qu
eG1sYCBmb3IgdGVzdAorcHJvZ3JhbSBgZm9vX3Rlc3RgIG9yIGBmb29fdGVzdC5leGVgKS4gSWYg
dGhlIGZpbGUgYWxyZWFkeSBleGlzdHMgKHBlcmhhcHMgbGVmdAorb3ZlciBmcm9tIGEgcHJldmlv
dXMgcnVuKSwgR29vZ2xlIFRlc3Qgd2lsbCBwaWNrIGEgZGlmZmVyZW50IG5hbWUgKGUuZy4KK2Bm
b29fdGVzdF8xLnhtbGApIHRvIGF2b2lkIG92ZXJ3cml0aW5nIGl0LgorCitUaGUgcmVwb3J0IHVz
ZXMgdGhlIGZvcm1hdCBkZXNjcmliZWQgaGVyZS4gIEl0IGlzIGJhc2VkIG9uIHRoZQorYGp1bml0
cmVwb3J0YCBBbnQgdGFzayBhbmQgY2FuIGJlIHBhcnNlZCBieSBwb3B1bGFyIGNvbnRpbnVvdXMg
YnVpbGQKK3N5c3RlbXMgbGlrZSBbSmVua2luc10oaHR0cDovL2plbmtpbnMtY2kub3JnLykuIFNp
bmNlIHRoYXQgZm9ybWF0Cit3YXMgb3JpZ2luYWxseSBpbnRlbmRlZCBmb3IgSmF2YSwgYSBsaXR0
bGUgaW50ZXJwcmV0YXRpb24gaXMgcmVxdWlyZWQKK3RvIG1ha2UgaXQgYXBwbHkgdG8gR29vZ2xl
IFRlc3QgdGVzdHMsIGFzIHNob3duIGhlcmU6CisKK2BgYAorPHRlc3RzdWl0ZXMgbmFtZT0iQWxs
VGVzdHMiIC4uLj4KKyAgPHRlc3RzdWl0ZSBuYW1lPSJ0ZXN0X2Nhc2VfbmFtZSIgLi4uPgorICAg
IDx0ZXN0Y2FzZSBuYW1lPSJ0ZXN0X25hbWUiIC4uLj4KKyAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9
Ii4uLiIvPgorICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iLi4uIi8+CisgICAgICA8ZmFpbHVyZSBt
ZXNzYWdlPSIuLi4iLz4KKyAgICA8L3Rlc3RjYXNlPgorICA8L3Rlc3RzdWl0ZT4KKzwvdGVzdHN1
aXRlcz4KK2BgYAorCisgICogVGhlIHJvb3QgYDx0ZXN0c3VpdGVzPmAgZWxlbWVudCBjb3JyZXNw
b25kcyB0byB0aGUgZW50aXJlIHRlc3QgcHJvZ3JhbS4KKyAgKiBgPHRlc3RzdWl0ZT5gIGVsZW1l
bnRzIGNvcnJlc3BvbmQgdG8gR29vZ2xlIFRlc3QgdGVzdCBjYXNlcy4KKyAgKiBgPHRlc3RjYXNl
PmAgZWxlbWVudHMgY29ycmVzcG9uZCB0byBHb29nbGUgVGVzdCB0ZXN0IGZ1bmN0aW9ucy4KKwor
Rm9yIGluc3RhbmNlLCB0aGUgZm9sbG93aW5nIHByb2dyYW0KKworYGBgCitURVNUKE1hdGhUZXN0
LCBBZGRpdGlvbikgeyAuLi4gfQorVEVTVChNYXRoVGVzdCwgU3VidHJhY3Rpb24pIHsgLi4uIH0K
K1RFU1QoTG9naWNUZXN0LCBOb25Db250cmFkaWN0aW9uKSB7IC4uLiB9CitgYGAKKworY291bGQg
Z2VuZXJhdGUgdGhpcyByZXBvcnQ6CisKK2BgYAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGlu
Zz0iVVRGLTgiPz4KKzx0ZXN0c3VpdGVzIHRlc3RzPSIzIiBmYWlsdXJlcz0iMSIgZXJyb3JzPSIw
IiB0aW1lPSIzNSIgbmFtZT0iQWxsVGVzdHMiPgorICA8dGVzdHN1aXRlIG5hbWU9Ik1hdGhUZXN0
IiB0ZXN0cz0iMiIgZmFpbHVyZXM9IjEiIGVycm9ycz0iMCIgdGltZT0iMTUiPgorICAgIDx0ZXN0
Y2FzZSBuYW1lPSJBZGRpdGlvbiIgc3RhdHVzPSJydW4iIHRpbWU9IjciIGNsYXNzbmFtZT0iIj4K
KyAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9IlZhbHVlIG9mOiBhZGQoMSwgMSkmI3gwQTsgQWN0dWFs
OiAzJiN4MEE7RXhwZWN0ZWQ6IDIiIHR5cGU9IiIvPgorICAgICAgPGZhaWx1cmUgbWVzc2FnZT0i
VmFsdWUgb2Y6IGFkZCgxLCAtMSkmI3gwQTsgQWN0dWFsOiAxJiN4MEE7RXhwZWN0ZWQ6IDAiIHR5
cGU9IiIvPgorICAgIDwvdGVzdGNhc2U+CisgICAgPHRlc3RjYXNlIG5hbWU9IlN1YnRyYWN0aW9u
IiBzdGF0dXM9InJ1biIgdGltZT0iNSIgY2xhc3NuYW1lPSIiPgorICAgIDwvdGVzdGNhc2U+Cisg
IDwvdGVzdHN1aXRlPgorICA8dGVzdHN1aXRlIG5hbWU9IkxvZ2ljVGVzdCIgdGVzdHM9IjEiIGZh
aWx1cmVzPSIwIiBlcnJvcnM9IjAiIHRpbWU9IjUiPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJOb25D
b250cmFkaWN0aW9uIiBzdGF0dXM9InJ1biIgdGltZT0iNSIgY2xhc3NuYW1lPSIiPgorICAgIDwv
dGVzdGNhc2U+CisgIDwvdGVzdHN1aXRlPgorPC90ZXN0c3VpdGVzPgorYGBgCisKK1RoaW5ncyB0
byBub3RlOgorCisgICogVGhlIGB0ZXN0c2AgYXR0cmlidXRlIG9mIGEgYDx0ZXN0c3VpdGVzPmAg
b3IgYDx0ZXN0c3VpdGU+YCBlbGVtZW50IHRlbGxzIGhvdyBtYW55IHRlc3QgZnVuY3Rpb25zIHRo
ZSBHb29nbGUgVGVzdCBwcm9ncmFtIG9yIHRlc3QgY2FzZSBjb250YWlucywgd2hpbGUgdGhlIGBm
YWlsdXJlc2AgYXR0cmlidXRlIHRlbGxzIGhvdyBtYW55IG9mIHRoZW0gZmFpbGVkLgorICAqIFRo
ZSBgdGltZWAgYXR0cmlidXRlIGV4cHJlc3NlcyB0aGUgZHVyYXRpb24gb2YgdGhlIHRlc3QsIHRl
c3QgY2FzZSwgb3IgZW50aXJlIHRlc3QgcHJvZ3JhbSBpbiBtaWxsaXNlY29uZHMuCisgICogRWFj
aCBgPGZhaWx1cmU+YCBlbGVtZW50IGNvcnJlc3BvbmRzIHRvIGEgc2luZ2xlIGZhaWxlZCBHb29n
bGUgVGVzdCBhc3NlcnRpb24uCisgICogU29tZSBKVW5pdCBjb25jZXB0cyBkb24ndCBhcHBseSB0
byBHb29nbGUgVGVzdCwgeWV0IHdlIGhhdmUgdG8gY29uZm9ybSB0byB0aGUgRFRELiBUaGVyZWZv
cmUgeW91J2xsIHNlZSBzb21lIGR1bW15IGVsZW1lbnRzIGFuZCBhdHRyaWJ1dGVzIGluIHRoZSBy
ZXBvcnQuIFlvdSBjYW4gc2FmZWx5IGlnbm9yZSB0aGVzZSBwYXJ0cy4KKworX0F2YWlsYWJpbGl0
eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIENvbnRyb2xsaW5nIEhvdyBGYWlsdXJlcyBB
cmUgUmVwb3J0ZWQgIyMKKworIyMjIFR1cm5pbmcgQXNzZXJ0aW9uIEZhaWx1cmVzIGludG8gQnJl
YWstUG9pbnRzICMjIworCitXaGVuIHJ1bm5pbmcgdGVzdCBwcm9ncmFtcyB1bmRlciBhIGRlYnVn
Z2VyLCBpdCdzIHZlcnkgY29udmVuaWVudCBpZiB0aGUKK2RlYnVnZ2VyIGNhbiBjYXRjaCBhbiBh
c3NlcnRpb24gZmFpbHVyZSBhbmQgYXV0b21hdGljYWxseSBkcm9wIGludG8gaW50ZXJhY3RpdmUK
K21vZGUuIEdvb2dsZSBUZXN0J3MgX2JyZWFrLW9uLWZhaWx1cmVfIG1vZGUgc3VwcG9ydHMgdGhp
cyBiZWhhdmlvci4KKworVG8gZW5hYmxlIGl0LCBzZXQgdGhlIGBHVEVTVF9CUkVBS19PTl9GQUlM
VVJFYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBhIHZhbHVlCitvdGhlciB0aGFuIGAwYCAuIEFs
dGVybmF0aXZlbHksIHlvdSBjYW4gdXNlIHRoZSBgLS1ndGVzdF9icmVha19vbl9mYWlsdXJlYAor
Y29tbWFuZCBsaW5lIGZsYWcuCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFj
LgorCisjIyMgRGlzYWJsaW5nIENhdGNoaW5nIFRlc3QtVGhyb3duIEV4Y2VwdGlvbnMgIyMjCisK
K0dvb2dsZSBUZXN0IGNhbiBiZSB1c2VkIGVpdGhlciB3aXRoIG9yIHdpdGhvdXQgZXhjZXB0aW9u
cyBlbmFibGVkLiAgSWYKK2EgdGVzdCB0aHJvd3MgYSBDKysgZXhjZXB0aW9uIG9yIChvbiBXaW5k
b3dzKSBhIHN0cnVjdHVyZWQgZXhjZXB0aW9uCisoU0VIKSwgYnkgZGVmYXVsdCBHb29nbGUgVGVz
dCBjYXRjaGVzIGl0LCByZXBvcnRzIGl0IGFzIGEgdGVzdAorZmFpbHVyZSwgYW5kIGNvbnRpbnVl
cyB3aXRoIHRoZSBuZXh0IHRlc3QgbWV0aG9kLiAgVGhpcyBtYXhpbWl6ZXMgdGhlCitjb3ZlcmFn
ZSBvZiBhIHRlc3QgcnVuLiAgQWxzbywgb24gV2luZG93cyBhbiB1bmNhdWdodCBleGNlcHRpb24g
d2lsbAorY2F1c2UgYSBwb3AtdXAgd2luZG93LCBzbyBjYXRjaGluZyB0aGUgZXhjZXB0aW9ucyBh
bGxvd3MgeW91IHRvIHJ1bgordGhlIHRlc3RzIGF1dG9tYXRpY2FsbHkuCisKK1doZW4gZGVidWdn
aW5nIHRoZSB0ZXN0IGZhaWx1cmVzLCBob3dldmVyLCB5b3UgbWF5IGluc3RlYWQgd2FudCB0aGUK
K2V4Y2VwdGlvbnMgdG8gYmUgaGFuZGxlZCBieSB0aGUgZGVidWdnZXIsIHN1Y2ggdGhhdCB5b3Ug
Y2FuIGV4YW1pbmUKK3RoZSBjYWxsIHN0YWNrIHdoZW4gYW4gZXhjZXB0aW9uIGlzIHRocm93bi4g
IFRvIGFjaGlldmUgdGhhdCwgc2V0IHRoZQorYEdURVNUX0NBVENIX0VYQ0VQVElPTlNgIGVudmly
b25tZW50IHZhcmlhYmxlIHRvIGAwYCwgb3IgdXNlIHRoZQorYC0tZ3Rlc3RfY2F0Y2hfZXhjZXB0
aW9ucz0wYCBmbGFnIHdoZW4gcnVubmluZyB0aGUgdGVzdHMuCisKKyoqQXZhaWxhYmlsaXR5Kio6
IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBMZXR0aW5nIEFub3RoZXIgVGVzdGluZyBGcmFt
ZXdvcmsgRHJpdmUgIyMjCisKK0lmIHlvdSB3b3JrIG9uIGEgcHJvamVjdCB0aGF0IGhhcyBhbHJl
YWR5IGJlZW4gdXNpbmcgYW5vdGhlciB0ZXN0aW5nCitmcmFtZXdvcmsgYW5kIGlzIG5vdCByZWFk
eSB0byBjb21wbGV0ZWx5IHN3aXRjaCB0byBHb29nbGUgVGVzdCB5ZXQsCit5b3UgY2FuIGdldCBt
dWNoIG9mIEdvb2dsZSBUZXN0J3MgYmVuZWZpdCBieSB1c2luZyBpdHMgYXNzZXJ0aW9ucyBpbgor
eW91ciBleGlzdGluZyB0ZXN0cy4gIEp1c3QgY2hhbmdlIHlvdXIgYG1haW4oKWAgZnVuY3Rpb24g
dG8gbG9vaworbGlrZToKKworYGBgCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworaW50IG1h
aW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CisgIDo6dGVzdGluZzo6R1RFU1RfRkxBRyh0aHJv
d19vbl9mYWlsdXJlKSA9IHRydWU7CisgIC8vIEltcG9ydGFudDogR29vZ2xlIFRlc3QgbXVzdCBi
ZSBpbml0aWFsaXplZC4KKyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7
CisKKyAgLi4uIHdoYXRldmVyIHlvdXIgZXhpc3RpbmcgdGVzdGluZyBmcmFtZXdvcmsgcmVxdWly
ZXMgLi4uCit9CitgYGAKKworV2l0aCB0aGF0LCB5b3UgY2FuIHVzZSBHb29nbGUgVGVzdCBhc3Nl
cnRpb25zIGluIGFkZGl0aW9uIHRvIHRoZQorbmF0aXZlIGFzc2VydGlvbnMgeW91ciB0ZXN0aW5n
IGZyYW1ld29yayBwcm92aWRlcywgZm9yIGV4YW1wbGU6CisKK2BgYAordm9pZCBUZXN0Rm9vRG9l
c0JhcigpIHsKKyAgRm9vIGZvbzsKKyAgRVhQRUNUX0xFKGZvby5CYXIoMSksIDEwMCk7ICAgICAv
LyBBIEdvb2dsZSBUZXN0IGFzc2VydGlvbi4KKyAgQ1BQVU5JVF9BU1NFUlQoZm9vLklzRW1wdHko
KSk7ICAvLyBBIG5hdGl2ZSBhc3NlcnRpb24uCit9CitgYGAKKworSWYgYSBHb29nbGUgVGVzdCBh
c3NlcnRpb24gZmFpbHMsIGl0IHdpbGwgcHJpbnQgYW4gZXJyb3IgbWVzc2FnZSBhbmQKK3Rocm93
IGFuIGV4Y2VwdGlvbiwgd2hpY2ggd2lsbCBiZSB0cmVhdGVkIGFzIGEgZmFpbHVyZSBieSB5b3Vy
IGhvc3QKK3Rlc3RpbmcgZnJhbWV3b3JrLiAgSWYgeW91IGNvbXBpbGUgeW91ciBjb2RlIHdpdGgg
ZXhjZXB0aW9ucyBkaXNhYmxlZCwKK2EgZmFpbGVkIEdvb2dsZSBUZXN0IGFzc2VydGlvbiB3aWxs
IGluc3RlYWQgZXhpdCB5b3VyIHByb2dyYW0gd2l0aCBhCitub24temVybyBjb2RlLCB3aGljaCB3
aWxsIGFsc28gc2lnbmFsIGEgdGVzdCBmYWlsdXJlIHRvIHlvdXIgdGVzdAorcnVubmVyLgorCitJ
ZiB5b3UgZG9uJ3Qgd3JpdGUgYDo6dGVzdGluZzo6R1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJl
KSA9IHRydWU7YCBpbgoreW91ciBgbWFpbigpYCwgeW91IGNhbiBhbHRlcm5hdGl2ZWx5IGVuYWJs
ZSB0aGlzIGZlYXR1cmUgYnkgc3BlY2lmeWluZwordGhlIGAtLWd0ZXN0X3Rocm93X29uX2ZhaWx1
cmVgIGZsYWcgb24gdGhlIGNvbW1hbmQtbGluZSBvciBzZXR0aW5nIHRoZQorYEdURVNUX1RIUk9X
X09OX0ZBSUxVUkVgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGEgbm9uLXplcm8gdmFsdWUuCisK
K0RlYXRoIHRlc3RzIGFyZSBfbm90XyBzdXBwb3J0ZWQgd2hlbiBvdGhlciB0ZXN0IGZyYW1ld29y
ayBpcyB1c2VkIHRvIG9yZ2FuaXplIHRlc3RzLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdp
bmRvd3MsIE1hYzsgc2luY2UgdjEuMy4wLgorCisjIyBEaXN0cmlidXRpbmcgVGVzdCBGdW5jdGlv
bnMgdG8gTXVsdGlwbGUgTWFjaGluZXMgIyMKKworSWYgeW91IGhhdmUgbW9yZSB0aGFuIG9uZSBt
YWNoaW5lIHlvdSBjYW4gdXNlIHRvIHJ1biBhIHRlc3QgcHJvZ3JhbSwKK3lvdSBtaWdodCB3YW50
IHRvIHJ1biB0aGUgdGVzdCBmdW5jdGlvbnMgaW4gcGFyYWxsZWwgYW5kIGdldCB0aGUKK3Jlc3Vs
dCBmYXN0ZXIuICBXZSBjYWxsIHRoaXMgdGVjaG5pcXVlIF9zaGFyZGluZ18sIHdoZXJlIGVhY2gg
bWFjaGluZQoraXMgY2FsbGVkIGEgX3NoYXJkXy4KKworR29vZ2xlIFRlc3QgaXMgY29tcGF0aWJs
ZSB3aXRoIHRlc3Qgc2hhcmRpbmcuICBUbyB0YWtlIGFkdmFudGFnZSBvZgordGhpcyBmZWF0dXJl
LCB5b3VyIHRlc3QgcnVubmVyIChub3QgcGFydCBvZiBHb29nbGUgVGVzdCkgbmVlZHMgdG8gZG8K
K3RoZSBmb2xsb3dpbmc6CisKKyAgMS4gQWxsb2NhdGUgYSBudW1iZXIgb2YgbWFjaGluZXMgKHNo
YXJkcykgdG8gcnVuIHRoZSB0ZXN0cy4KKyAgMS4gT24gZWFjaCBzaGFyZCwgc2V0IHRoZSBgR1RF
U1RfVE9UQUxfU0hBUkRTYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byB0aGUgdG90YWwgbnVtYmVy
IG9mIHNoYXJkcy4gIEl0IG11c3QgYmUgdGhlIHNhbWUgZm9yIGFsbCBzaGFyZHMuCisgIDEuIE9u
IGVhY2ggc2hhcmQsIHNldCB0aGUgYEdURVNUX1NIQVJEX0lOREVYYCBlbnZpcm9ubWVudCB2YXJp
YWJsZSB0byB0aGUgaW5kZXggb2YgdGhlIHNoYXJkLiAgRGlmZmVyZW50IHNoYXJkcyBtdXN0IGJl
IGFzc2lnbmVkIGRpZmZlcmVudCBpbmRpY2VzLCB3aGljaCBtdXN0IGJlIGluIHRoZSByYW5nZSBg
WzAsIEdURVNUX1RPVEFMX1NIQVJEUyAtIDFdYC4KKyAgMS4gUnVuIHRoZSBzYW1lIHRlc3QgcHJv
Z3JhbSBvbiBhbGwgc2hhcmRzLiAgV2hlbiBHb29nbGUgVGVzdCBzZWVzIHRoZSBhYm92ZSB0d28g
ZW52aXJvbm1lbnQgdmFyaWFibGVzLCBpdCB3aWxsIHNlbGVjdCBhIHN1YnNldCBvZiB0aGUgdGVz
dCBmdW5jdGlvbnMgdG8gcnVuLiAgQWNyb3NzIGFsbCBzaGFyZHMsIGVhY2ggdGVzdCBmdW5jdGlv
biBpbiB0aGUgcHJvZ3JhbSB3aWxsIGJlIHJ1biBleGFjdGx5IG9uY2UuCisgIDEuIFdhaXQgZm9y
IGFsbCBzaGFyZHMgdG8gZmluaXNoLCB0aGVuIGNvbGxlY3QgYW5kIHJlcG9ydCB0aGUgcmVzdWx0
cy4KKworWW91ciBwcm9qZWN0IG1heSBoYXZlIHRlc3RzIHRoYXQgd2VyZSB3cml0dGVuIHdpdGhv
dXQgR29vZ2xlIFRlc3QgYW5kCit0aHVzIGRvbid0IHVuZGVyc3RhbmQgdGhpcyBwcm90b2NvbC4g
IEluIG9yZGVyIGZvciB5b3VyIHRlc3QgcnVubmVyIHRvCitmaWd1cmUgb3V0IHdoaWNoIHRlc3Qg
c3VwcG9ydHMgc2hhcmRpbmcsIGl0IGNhbiBzZXQgdGhlIGVudmlyb25tZW50Cit2YXJpYWJsZSBg
R1RFU1RfU0hBUkRfU1RBVFVTX0ZJTEVgIHRvIGEgbm9uLWV4aXN0ZW50IGZpbGUgcGF0aC4gIElm
IGEKK3Rlc3QgcHJvZ3JhbSBzdXBwb3J0cyBzaGFyZGluZywgaXQgd2lsbCBjcmVhdGUgdGhpcyBm
aWxlIHRvCithY2tub3dsZWRnZSB0aGUgZmFjdCAodGhlIGFjdHVhbCBjb250ZW50cyBvZiB0aGUg
ZmlsZSBhcmUgbm90CitpbXBvcnRhbnQgYXQgdGhpcyB0aW1lOyBhbHRob3VnaCB3ZSBtYXkgc3Rp
Y2sgc29tZSB1c2VmdWwgaW5mb3JtYXRpb24KK2luIGl0IGluIHRoZSBmdXR1cmUuKTsgb3RoZXJ3
aXNlIGl0IHdpbGwgbm90IGNyZWF0ZSBpdC4KKworSGVyZSdzIGFuIGV4YW1wbGUgdG8gbWFrZSBp
dCBjbGVhci4gIFN1cHBvc2UgeW91IGhhdmUgYSB0ZXN0IHByb2dyYW0KK2Bmb29fdGVzdGAgdGhh
dCBjb250YWlucyB0aGUgZm9sbG93aW5nIDUgdGVzdCBmdW5jdGlvbnM6CitgYGAKK1RFU1QoQSwg
VikKK1RFU1QoQSwgVykKK1RFU1QoQiwgWCkKK1RFU1QoQiwgWSkKK1RFU1QoQiwgWikKK2BgYAor
YW5kIHlvdSBoYXZlIDMgbWFjaGluZXMgYXQgeW91ciBkaXNwb3NhbC4gIFRvIHJ1biB0aGUgdGVz
dCBmdW5jdGlvbnMgaW4KK3BhcmFsbGVsLCB5b3Ugd291bGQgc2V0IGBHVEVTVF9UT1RBTF9TSEFS
RFNgIHRvIDMgb24gYWxsIG1hY2hpbmVzLCBhbmQKK3NldCBgR1RFU1RfU0hBUkRfSU5ERVhgIHRv
IDAsIDEsIGFuZCAyIG9uIHRoZSBtYWNoaW5lcyByZXNwZWN0aXZlbHkuCitUaGVuIHlvdSB3b3Vs
ZCBydW4gdGhlIHNhbWUgYGZvb190ZXN0YCBvbiBlYWNoIG1hY2hpbmUuCisKK0dvb2dsZSBUZXN0
IHJlc2VydmVzIHRoZSByaWdodCB0byBjaGFuZ2UgaG93IHRoZSB3b3JrIGlzIGRpc3RyaWJ1dGVk
CithY3Jvc3MgdGhlIHNoYXJkcywgYnV0IGhlcmUncyBvbmUgcG9zc2libGUgc2NlbmFyaW86CisK
KyAgKiBNYWNoaW5lICMwIHJ1bnMgYEEuVmAgYW5kIGBCLlhgLgorICAqIE1hY2hpbmUgIzEgcnVu
cyBgQS5XYCBhbmQgYEIuWWAuCisgICogTWFjaGluZSAjMiBydW5zIGBCLlpgLgorCitfQXZhaWxh
YmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYzsgc2luY2UgdmVyc2lvbiAxLjMuMC4KKworIyBG
dXNpbmcgR29vZ2xlIFRlc3QgU291cmNlIEZpbGVzICMKKworR29vZ2xlIFRlc3QncyBpbXBsZW1l
bnRhdGlvbiBjb25zaXN0cyBvZiB+MzAgZmlsZXMgKGV4Y2x1ZGluZyBpdHMgb3duCit0ZXN0cyku
ICBTb21ldGltZXMgeW91IG1heSB3YW50IHRoZW0gdG8gYmUgcGFja2FnZWQgdXAgaW4gdHdvIGZp
bGVzIChhCitgLmhgIGFuZCBhIGAuY2NgKSBpbnN0ZWFkLCBzdWNoIHRoYXQgeW91IGNhbiBlYXNp
bHkgY29weSB0aGVtIHRvIGEgbmV3CittYWNoaW5lIGFuZCBzdGFydCBoYWNraW5nIHRoZXJlLiAg
Rm9yIHRoaXMgd2UgcHJvdmlkZSBhbiBleHBlcmltZW50YWwKK1B5dGhvbiBzY3JpcHQgYGZ1c2Vf
Z3Rlc3RfZmlsZXMucHlgIGluIHRoZSBgc2NyaXB0cy9gIGRpcmVjdG9yeSAoc2luY2UgcmVsZWFz
ZSAxLjMuMCkuCitBc3N1bWluZyB5b3UgaGF2ZSBQeXRob24gMi40IG9yIGFib3ZlIGluc3RhbGxl
ZCBvbiB5b3VyIG1hY2hpbmUsIGp1c3QKK2dvIHRvIHRoYXQgZGlyZWN0b3J5IGFuZCBydW4KK2Bg
YAorcHl0aG9uIGZ1c2VfZ3Rlc3RfZmlsZXMucHkgT1VUUFVUX0RJUgorYGBgCisKK2FuZCB5b3Ug
c2hvdWxkIHNlZSBhbiBgT1VUUFVUX0RJUmAgZGlyZWN0b3J5IGJlaW5nIGNyZWF0ZWQgd2l0aCBm
aWxlcworYGd0ZXN0L2d0ZXN0LmhgIGFuZCBgZ3Rlc3QvZ3Rlc3QtYWxsLmNjYCBpbiBpdC4gIFRo
ZXNlIGZpbGVzIGNvbnRhaW4KK2V2ZXJ5dGhpbmcgeW91IG5lZWQgdG8gdXNlIEdvb2dsZSBUZXN0
LiAgSnVzdCBjb3B5IHRoZW0gdG8gYW55d2hlcmUKK3lvdSB3YW50IGFuZCB5b3UgYXJlIHJlYWR5
IHRvIHdyaXRlIHRlc3RzLiAgWW91IGNhbiB1c2UgdGhlCitbc2NyaXB0cy90ZXN0L01ha2VmaWxl
XSguLi9zY3JpcHRzL3Rlc3QvTWFrZWZpbGUpCitmaWxlIGFzIGFuIGV4YW1wbGUgb24gaG93IHRv
IGNvbXBpbGUgeW91ciB0ZXN0cyBhZ2FpbnN0IHRoZW0uCisKKyMgV2hlcmUgdG8gR28gZnJvbSBI
ZXJlICMKKworQ29uZ3JhdHVsYXRpb25zISBZb3UndmUgbm93IGxlYXJuZWQgbW9yZSBhZHZhbmNl
ZCBHb29nbGUgVGVzdCB0b29scyBhbmQgYXJlCityZWFkeSB0byB0YWNrbGUgbW9yZSBjb21wbGV4
IHRlc3RpbmcgdGFza3MuIElmIHlvdSB3YW50IHRvIGRpdmUgZXZlbiBkZWVwZXIsIHlvdQorY2Fu
IHJlYWQgdGhlIFtGcmVxdWVudGx5LUFza2VkIFF1ZXN0aW9uc10oVjFfN19GQVEubWQpLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9WMV83X0RvY3VtZW50YXRpb24ubWQgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC9kb2NzL1YxXzdfRG9jdW1lbnRhdGlvbi5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yODI2OTdhNTBiOWFh
YWQxZDA0ZmI0YWUzZmY5MGNhNzEwNDJiYWEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRl
c3QvZG9jcy9WMV83X0RvY3VtZW50YXRpb24ubWQKQEAgLTAsMCArMSwxNCBAQAorVGhpcyBwYWdl
IGxpc3RzIGFsbCBkb2N1bWVudGF0aW9uIHdpa2kgcGFnZXMgZm9yIEdvb2dsZSBUZXN0ICoqKHRo
ZSBTVk4gdHJ1bmsgdmVyc2lvbikqKgorLS0gKippZiB5b3UgdXNlIGEgcmVsZWFzZWQgdmVyc2lv
biBvZiBHb29nbGUgVGVzdCwgcGxlYXNlIHJlYWQgdGhlCitkb2N1bWVudGF0aW9uIGZvciB0aGF0
IHNwZWNpZmljIHZlcnNpb24gaW5zdGVhZC4qKgorCisgICogW1ByaW1lcl0oVjFfN19QcmltZXIu
bWQpIC0tIHN0YXJ0IGhlcmUgaWYgeW91IGFyZSBuZXcgdG8gR29vZ2xlIFRlc3QuCisgICogW1Nh
bXBsZXNdKFYxXzdfU2FtcGxlcy5tZCkgLS0gbGVhcm4gZnJvbSBleGFtcGxlcy4KKyAgKiBbQWR2
YW5jZWRHdWlkZV0oVjFfN19BZHZhbmNlZEd1aWRlLm1kKSAtLSBsZWFybiBtb3JlIGFib3V0IEdv
b2dsZSBUZXN0LgorICAqIFtYY29kZUd1aWRlXShWMV83X1hjb2RlR3VpZGUubWQpIC0tIGhvdyB0
byB1c2UgR29vZ2xlIFRlc3QgaW4gWGNvZGUgb24gTWFjLgorICAqIFtGcmVxdWVudGx5LUFza2Vk
IFF1ZXN0aW9uc10oVjFfN19GQVEubWQpIC0tIGNoZWNrIGhlcmUgYmVmb3JlIGFza2luZyBhIHF1
ZXN0aW9uIG9uIHRoZSBtYWlsaW5nIGxpc3QuCisKK1RvIGNvbnRyaWJ1dGUgY29kZSB0byBHb29n
bGUgVGVzdCwgcmVhZDoKKworICAqIFtEZXZHdWlkZV0oRGV2R3VpZGUubWQpIC0tIHJlYWQgdGhp
cyBfYmVmb3JlXyB3cml0aW5nIHlvdXIgZmlyc3QgcGF0Y2guCisgICogW1B1bXBNYW51YWxdKFYx
XzdfUHVtcE1hbnVhbC5tZCkgLS0gaG93IHdlIGdlbmVyYXRlIHNvbWUgb2YgR29vZ2xlIFRlc3Qn
cyBzb3VyY2UgZmlsZXMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZXRlc3QvZG9jcy9WMV83X0ZBUS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfN19GQVEu
bWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uM2RkOTE0ZGNmMTZhZTM0MjA4ZTA5MDhkMTZjYjkzMzI0MTMyMDZmMAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfN19GQVEubWQKQEAgLTAsMCAr
MSwxMDgyIEBACisKKworSWYgeW91IGNhbm5vdCBmaW5kIHRoZSBhbnN3ZXIgdG8geW91ciBxdWVz
dGlvbiBoZXJlLCBhbmQgeW91IGhhdmUgcmVhZAorW1ByaW1lcl0oVjFfN19QcmltZXIubWQpIGFu
ZCBbQWR2YW5jZWRHdWlkZV0oVjFfN19BZHZhbmNlZEd1aWRlLm1kKSwgc2VuZCBpdCB0bworZ29v
Z2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tLgorCisjIyBXaHkgc2hvdWxkIEkgdXNl
IEdvb2dsZSBUZXN0IGluc3RlYWQgb2YgbXkgZmF2b3JpdGUgQysrIHRlc3RpbmcgZnJhbWV3b3Jr
PyAjIworCitGaXJzdCwgbGV0IHVzIHNheSBjbGVhcmx5IHRoYXQgd2UgZG9uJ3Qgd2FudCB0byBn
ZXQgaW50byB0aGUgZGViYXRlIG9mCit3aGljaCBDKysgdGVzdGluZyBmcmFtZXdvcmsgaXMgKip0
aGUgYmVzdCoqLiAgVGhlcmUgZXhpc3QgbWFueSBmaW5lCitmcmFtZXdvcmtzIGZvciB3cml0aW5n
IEMrKyB0ZXN0cywgYW5kIHdlIGhhdmUgdHJlbWVuZG91cyByZXNwZWN0IGZvcgordGhlIGRldmVs
b3BlcnMgYW5kIHVzZXJzIG9mIHRoZW0uICBXZSBkb24ndCB0aGluayB0aGVyZSBpcyAob3Igd2ls
bAorYmUpIGEgc2luZ2xlIGJlc3QgZnJhbWV3b3JrIC0geW91IGhhdmUgdG8gcGljayB0aGUgcmln
aHQgdG9vbCBmb3IgdGhlCitwYXJ0aWN1bGFyIHRhc2sgeW91IGFyZSB0YWNrbGluZy4KKworV2Ug
Y3JlYXRlZCBHb29nbGUgVGVzdCBiZWNhdXNlIHdlIGNvdWxkbid0IGZpbmQgdGhlIHJpZ2h0IGNv
bWJpbmF0aW9uCitvZiBmZWF0dXJlcyBhbmQgY29udmVuaWVuY2VzIGluIGFuIGV4aXN0aW5nIGZy
YW1ld29yayB0byBzYXRpc2Z5IF9vdXJfCituZWVkcy4gIFRoZSBmb2xsb3dpbmcgaXMgYSBsaXN0
IG9mIHRoaW5ncyB0aGF0IF93ZV8gbGlrZSBhYm91dCBHb29nbGUKK1Rlc3QuICBXZSBkb24ndCBj
bGFpbSB0aGVtIHRvIGJlIHVuaXF1ZSB0byBHb29nbGUgVGVzdCAtIHJhdGhlciwgdGhlCitjb21i
aW5hdGlvbiBvZiB0aGVtIG1ha2VzIEdvb2dsZSBUZXN0IHRoZSBjaG9pY2UgZm9yIHVzLiAgV2Ug
aG9wZSB0aGlzCitsaXN0IGNhbiBoZWxwIHlvdSBkZWNpZGUgd2hldGhlciBpdCBpcyBmb3IgeW91
IHRvby4KKworICAqIEdvb2dsZSBUZXN0IGlzIGRlc2lnbmVkIHRvIGJlIHBvcnRhYmxlOiBpdCBk
b2Vzbid0IHJlcXVpcmUgZXhjZXB0aW9ucyBvciBSVFRJOyBpdCB3b3JrcyBhcm91bmQgdmFyaW91
cyBidWdzIGluIHZhcmlvdXMgY29tcGlsZXJzIGFuZCBlbnZpcm9ubWVudHM7IGV0Yy4gIEFzIGEg
cmVzdWx0LCBpdCB3b3JrcyBvbiBMaW51eCwgTWFjIE9TIFgsIFdpbmRvd3MgYW5kIHNldmVyYWwg
ZW1iZWRkZWQgb3BlcmF0aW5nIHN5c3RlbXMuCisgICogTm9uZmF0YWwgYXNzZXJ0aW9ucyAoYEVY
UEVDVF8qYCkgaGF2ZSBwcm92ZW4gdG8gYmUgZ3JlYXQgdGltZSBzYXZlcnMsIGFzIHRoZXkgYWxs
b3cgYSB0ZXN0IHRvIHJlcG9ydCBtdWx0aXBsZSBmYWlsdXJlcyBpbiBhIHNpbmdsZSBlZGl0LWNv
bXBpbGUtdGVzdCBjeWNsZS4KKyAgKiBJdCdzIGVhc3kgdG8gd3JpdGUgYXNzZXJ0aW9ucyB0aGF0
IGdlbmVyYXRlIGluZm9ybWF0aXZlIG1lc3NhZ2VzOiB5b3UganVzdCB1c2UgdGhlIHN0cmVhbSBz
eW50YXggdG8gYXBwZW5kIGFueSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLCBlLmcuIGBBU1NFUlRf
RVEoNSwgRm9vKGkpKSA8PCAiIHdoZXJlIGkgPSAiIDw8IGk7YC4gIEl0IGRvZXNuJ3QgcmVxdWly
ZSBhIG5ldyBzZXQgb2YgbWFjcm9zIG9yIHNwZWNpYWwgZnVuY3Rpb25zLgorICAqIEdvb2dsZSBU
ZXN0IGF1dG9tYXRpY2FsbHkgZGV0ZWN0cyB5b3VyIHRlc3RzIGFuZCBkb2Vzbid0IHJlcXVpcmUg
eW91IHRvIGVudW1lcmF0ZSB0aGVtIGluIG9yZGVyIHRvIHJ1biB0aGVtLgorICAqIERlYXRoIHRl
c3RzIGFyZSBwcmV0dHkgaGFuZHkgZm9yIGVuc3VyaW5nIHRoYXQgeW91ciBhc3NlcnRzIGluIHBy
b2R1Y3Rpb24gY29kZSBhcmUgdHJpZ2dlcmVkIGJ5IHRoZSByaWdodCBjb25kaXRpb25zLgorICAq
IGBTQ09QRURfVFJBQ0VgIGhlbHBzIHlvdSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIGFuIGFz
c2VydGlvbiBmYWlsdXJlIHdoZW4gaXQgY29tZXMgZnJvbSBpbnNpZGUgYSBzdWItcm91dGluZSBv
ciBsb29wLgorICAqIFlvdSBjYW4gZGVjaWRlIHdoaWNoIHRlc3RzIHRvIHJ1biB1c2luZyBuYW1l
IHBhdHRlcm5zLiAgVGhpcyBzYXZlcyB0aW1lIHdoZW4geW91IHdhbnQgdG8gcXVpY2tseSByZXBy
b2R1Y2UgYSB0ZXN0IGZhaWx1cmUuCisgICogR29vZ2xlIFRlc3QgY2FuIGdlbmVyYXRlIFhNTCB0
ZXN0IHJlc3VsdCByZXBvcnRzIHRoYXQgY2FuIGJlIHBhcnNlZCBieSBwb3B1bGFyIGNvbnRpbnVv
dXMgYnVpbGQgc3lzdGVtIGxpa2UgSHVkc29uLgorICAqIFNpbXBsZSB0aGluZ3MgYXJlIGVhc3kg
aW4gR29vZ2xlIFRlc3QsIHdoaWxlIGhhcmQgdGhpbmdzIGFyZSBwb3NzaWJsZTogaW4gYWRkaXRp
b24gdG8gYWR2YW5jZWQgZmVhdHVyZXMgbGlrZSBbZ2xvYmFsIHRlc3QgZW52aXJvbm1lbnRzXShW
MV83X0FkdmFuY2VkR3VpZGUubWQjZ2xvYmFsLXNldC11cC1hbmQtdGVhci1kb3duKSBhbmQgdGVz
dHMgcGFyYW1ldGVyaXplZCBieSBbdmFsdWVzXShWMV83X0FkdmFuY2VkR3VpZGUubWQjdmFsdWUt
cGFyYW1ldGVyaXplZC10ZXN0cykgb3IgW3R5cGVzXShWMV83X0FkdmFuY2VkR3VpZGUubWQjdHlw
ZWQtdGVzdHMpLCBHb29nbGUgVGVzdCBzdXBwb3J0cyB2YXJpb3VzIHdheXMgZm9yIHRoZSB1c2Vy
IHRvIGV4dGVuZCB0aGUgZnJhbWV3b3JrIC0tIGlmIEdvb2dsZSBUZXN0IGRvZXNuJ3QgZG8gc29t
ZXRoaW5nIG91dCBvZiB0aGUgYm94LCBjaGFuY2VzIGFyZSB0aGF0IGEgdXNlciBjYW4gaW1wbGVt
ZW50IHRoZSBmZWF0dXJlIHVzaW5nIEdvb2dsZSBUZXN0J3MgcHVibGljIEFQSSwgd2l0aG91dCBj
aGFuZ2luZyBHb29nbGUgVGVzdCBpdHNlbGYuICBJbiBwYXJ0aWN1bGFyLCB5b3UgY2FuOgorICAg
ICogZXhwYW5kIHlvdXIgdGVzdGluZyB2b2NhYnVsYXJ5IGJ5IGRlZmluaW5nIFtjdXN0b20gcHJl
ZGljYXRlc10oVjFfN19BZHZhbmNlZEd1aWRlLm1kI3ByZWRpY2F0ZS1hc3NlcnRpb25zLWZvci1i
ZXR0ZXItZXJyb3ItbWVzc2FnZXMpLAorICAgICogdGVhY2ggR29vZ2xlIFRlc3QgaG93IHRvIFtw
cmludCB5b3VyIHR5cGVzXShWMV83X0FkdmFuY2VkR3VpZGUubWQjdGVhY2hpbmctZ29vZ2xlLXRl
c3QtaG93LXRvLXByaW50LXlvdXItdmFsdWVzKSwKKyAgICAqIGRlZmluZSB5b3VyIG93biB0ZXN0
aW5nIG1hY3JvcyBvciB1dGlsaXRpZXMgYW5kIHZlcmlmeSB0aGVtIHVzaW5nIEdvb2dsZSBUZXN0
J3MgW1NlcnZpY2UgUHJvdmlkZXIgSW50ZXJmYWNlXShWMV83X0FkdmFuY2VkR3VpZGUubWQjY2F0
Y2hpbmctZmFpbHVyZXMpLCBhbmQKKyAgICAqIHJlZmxlY3Qgb24gdGhlIHRlc3QgY2FzZXMgb3Ig
Y2hhbmdlIHRoZSB0ZXN0IG91dHB1dCBmb3JtYXQgYnkgaW50ZXJjZXB0aW5nIHRoZSBbdGVzdCBl
dmVudHNdKFYxXzdfQWR2YW5jZWRHdWlkZS5tZCNleHRlbmRpbmctZ29vZ2xlLXRlc3QtYnktaGFu
ZGxpbmctdGVzdC1ldmVudHMpLgorCisjIyBJJ20gZ2V0dGluZyB3YXJuaW5ncyB3aGVuIGNvbXBp
bGluZyBHb29nbGUgVGVzdC4gIFdvdWxkIHlvdSBmaXggdGhlbT8gIyMKKworV2Ugc3RyaXZlIHRv
IG1pbmltaXplIGNvbXBpbGVyIHdhcm5pbmdzIEdvb2dsZSBUZXN0IGdlbmVyYXRlcy4gIEJlZm9y
ZSByZWxlYXNpbmcgYSBuZXcgdmVyc2lvbiwgd2UgdGVzdCB0byBtYWtlIHN1cmUgdGhhdCBpdCBk
b2Vzbid0IGdlbmVyYXRlIHdhcm5pbmdzIHdoZW4gY29tcGlsZWQgdXNpbmcgaXRzIENNYWtlIHNj
cmlwdCBvbiBXaW5kb3dzLCBMaW51eCwgYW5kIE1hYyBPUy4KKworVW5mb3J0dW5hdGVseSwgdGhp
cyBkb2Vzbid0IG1lYW4geW91IGFyZSBndWFyYW50ZWVkIHRvIHNlZSBubyB3YXJuaW5ncyB3aGVu
IGNvbXBpbGluZyBHb29nbGUgVGVzdCBpbiB5b3VyIGVudmlyb25tZW50OgorCisgICogWW91IG1h
eSBiZSB1c2luZyBhIGRpZmZlcmVudCBjb21waWxlciBhcyB3ZSB1c2UsIG9yIGEgZGlmZmVyZW50
IHZlcnNpb24gb2YgdGhlIHNhbWUgY29tcGlsZXIuICBXZSBjYW5ub3QgcG9zc2libHkgdGVzdCBm
b3IgYWxsIGNvbXBpbGVycy4KKyAgKiBZb3UgbWF5IGJlIGNvbXBpbGluZyBvbiBhIGRpZmZlcmVu
dCBwbGF0Zm9ybSBhcyB3ZSBkby4KKyAgKiBZb3VyIHByb2plY3QgbWF5IGJlIHVzaW5nIGRpZmZl
cmVudCBjb21waWxlciBmbGFncyBhcyB3ZSBkby4KKworSXQgaXMgbm90IGFsd2F5cyBwb3NzaWJs
ZSB0byBtYWtlIEdvb2dsZSBUZXN0IHdhcm5pbmctZnJlZSBmb3IgZXZlcnlvbmUuICBPciwgaXQg
bWF5IG5vdCBiZSBkZXNpcmFibGUgaWYgdGhlIHdhcm5pbmcgaXMgcmFyZWx5IGVuYWJsZWQgYW5k
IGZpeGluZyB0aGUgdmlvbGF0aW9ucyBtYWtlcyB0aGUgY29kZSBtb3JlIGNvbXBsZXguCisKK0lm
IHlvdSBzZWUgd2FybmluZ3Mgd2hlbiBjb21waWxpbmcgR29vZ2xlIFRlc3QsIHdlIHN1Z2dlc3Qg
dGhhdCB5b3UgdXNlIHRoZSBgLWlzeXN0ZW1gIGZsYWcgKGFzc3VtaW5nIHlvdXIgYXJlIHVzaW5n
IEdDQykgdG8gbWFyayBHb29nbGUgVGVzdCBoZWFkZXJzIGFzIHN5c3RlbSBoZWFkZXJzLiAgVGhh
dCdsbCBzdXBwcmVzcyB3YXJuaW5ncyBmcm9tIEdvb2dsZSBUZXN0IGhlYWRlcnMuCisKKyMjIFdo
eSBzaG91bGQgbm90IHRlc3QgY2FzZSBuYW1lcyBhbmQgdGVzdCBuYW1lcyBjb250YWluIHVuZGVy
c2NvcmU/ICMjCisKK1VuZGVyc2NvcmUgKGBfYCkgaXMgc3BlY2lhbCwgYXMgQysrIHJlc2VydmVz
IHRoZSBmb2xsb3dpbmcgdG8gYmUgdXNlZCBieQordGhlIGNvbXBpbGVyIGFuZCB0aGUgc3RhbmRh
cmQgbGlicmFyeToKKworICAxLiBhbnkgaWRlbnRpZmllciB0aGF0IHN0YXJ0cyB3aXRoIGFuIGBf
YCBmb2xsb3dlZCBieSBhbiB1cHBlci1jYXNlIGxldHRlciwgYW5kCisgIDEuIGFueSBpZGVudGlm
aWVyIHRoYXQgY29udGFpbmVycyB0d28gY29uc2VjdXRpdmUgdW5kZXJzY29yZXMgKGkuZS4gYF9f
YCkgX2FueXdoZXJlXyBpbiBpdHMgbmFtZS4KKworVXNlciBjb2RlIGlzIF9wcm9oaWJpdGVkXyBm
cm9tIHVzaW5nIHN1Y2ggaWRlbnRpZmllcnMuCisKK05vdyBsZXQncyBsb29rIGF0IHdoYXQgdGhp
cyBtZWFucyBmb3IgYFRFU1RgIGFuZCBgVEVTVF9GYC4KKworQ3VycmVudGx5IGBURVNUKFRlc3RD
YXNlTmFtZSwgVGVzdE5hbWUpYCBnZW5lcmF0ZXMgYSBjbGFzcyBuYW1lZAorYFRlc3RDYXNlTmFt
ZV9UZXN0TmFtZV9UZXN0YC4gIFdoYXQgaGFwcGVucyBpZiBgVGVzdENhc2VOYW1lYCBvciBgVGVz
dE5hbWVgCitjb250YWlucyBgX2A/CisKKyAgMS4gSWYgYFRlc3RDYXNlTmFtZWAgc3RhcnRzIHdp
dGggYW4gYF9gIGZvbGxvd2VkIGJ5IGFuIHVwcGVyLWNhc2UgbGV0dGVyIChzYXksIGBfRm9vYCks
IHdlIGVuZCB1cCB3aXRoIGBfRm9vX1Rlc3ROYW1lX1Rlc3RgLCB3aGljaCBpcyByZXNlcnZlZCBh
bmQgdGh1cyBpbnZhbGlkLgorICAxLiBJZiBgVGVzdENhc2VOYW1lYCBlbmRzIHdpdGggYW4gYF9g
IChzYXksIGBGb29fYCksIHdlIGdldCBgRm9vX19UZXN0TmFtZV9UZXN0YCwgd2hpY2ggaXMgaW52
YWxpZC4KKyAgMS4gSWYgYFRlc3ROYW1lYCBzdGFydHMgd2l0aCBhbiBgX2AgKHNheSwgYF9CYXJg
KSwgd2UgZ2V0IGBUZXN0Q2FzZU5hbWVfX0Jhcl9UZXN0YCwgd2hpY2ggaXMgaW52YWxpZC4KKyAg
MS4gSWYgYFRlc3ROYW1lYCBlbmRzIHdpdGggYW4gYF9gIChzYXksIGBCYXJfYCksIHdlIGdldCBg
VGVzdENhc2VOYW1lX0Jhcl9fVGVzdGAsIHdoaWNoIGlzIGludmFsaWQuCisKK1NvIGNsZWFybHkg
YFRlc3RDYXNlTmFtZWAgYW5kIGBUZXN0TmFtZWAgY2Fubm90IHN0YXJ0IG9yIGVuZCB3aXRoIGBf
YAorKEFjdHVhbGx5LCBgVGVzdENhc2VOYW1lYCBjYW4gc3RhcnQgd2l0aCBgX2AgLS0gYXMgbG9u
ZyBhcyB0aGUgYF9gIGlzbid0Citmb2xsb3dlZCBieSBhbiB1cHBlci1jYXNlIGxldHRlci4gIEJ1
dCB0aGF0J3MgZ2V0dGluZyBjb21wbGljYXRlZC4gIFNvCitmb3Igc2ltcGxpY2l0eSB3ZSBqdXN0
IHNheSB0aGF0IGl0IGNhbm5vdCBzdGFydCB3aXRoIGBfYC4pLgorCitJdCBtYXkgc2VlbSBmaW5l
IGZvciBgVGVzdENhc2VOYW1lYCBhbmQgYFRlc3ROYW1lYCB0byBjb250YWluIGBfYCBpbiB0aGUK
K21pZGRsZS4gIEhvd2V2ZXIsIGNvbnNpZGVyIHRoaXM6CitgYGAKK1RFU1QoVGltZSwgRmxpZXNf
TGlrZV9Bbl9BcnJvdykgeyAuLi4gfQorVEVTVChUaW1lX0ZsaWVzLCBMaWtlX0FuX0Fycm93KSB7
IC4uLiB9CitgYGAKKworTm93LCB0aGUgdHdvIGBURVNUYHMgd2lsbCBib3RoIGdlbmVyYXRlIHRo
ZSBzYW1lIGNsYXNzCisoYFRpbWVfRmlsZXNfTGlrZV9Bbl9BcnJvd19UZXN0YCkuICBUaGF0J3Mg
bm90IGdvb2QuCisKK1NvIGZvciBzaW1wbGljaXR5LCB3ZSBqdXN0IGFzayB0aGUgdXNlcnMgdG8g
YXZvaWQgYF9gIGluIGBUZXN0Q2FzZU5hbWVgCithbmQgYFRlc3ROYW1lYC4gIFRoZSBydWxlIGlz
IG1vcmUgY29uc3RyYWluaW5nIHRoYW4gbmVjZXNzYXJ5LCBidXQgaXQncworc2ltcGxlIGFuZCBl
YXN5IHRvIHJlbWVtYmVyLiAgSXQgYWxzbyBnaXZlcyBHb29nbGUgVGVzdCBzb21lIHdpZ2dsZQor
cm9vbSBpbiBjYXNlIGl0cyBpbXBsZW1lbnRhdGlvbiBuZWVkcyB0byBjaGFuZ2UgaW4gdGhlIGZ1
dHVyZS4KKworSWYgeW91IHZpb2xhdGUgdGhlIHJ1bGUsIHRoZXJlIG1heSBub3QgYmUgaW1tZWRp
YXRlbHkgY29uc2VxdWVuY2VzLAorYnV0IHlvdXIgdGVzdCBtYXkgKGp1c3QgbWF5KSBicmVhayB3
aXRoIGEgbmV3IGNvbXBpbGVyIChvciBhIG5ldwordmVyc2lvbiBvZiB0aGUgY29tcGlsZXIgeW91
IGFyZSB1c2luZykgb3Igd2l0aCBhIG5ldyB2ZXJzaW9uIG9mIEdvb2dsZQorVGVzdC4gIFRoZXJl
Zm9yZSBpdCdzIGJlc3QgdG8gZm9sbG93IHRoZSBydWxlLgorCisjIyBXaHkgaXMgaXQgbm90IHJl
Y29tbWVuZGVkIHRvIGluc3RhbGwgYSBwcmUtY29tcGlsZWQgY29weSBvZiBHb29nbGUgVGVzdCAo
Zm9yIGV4YW1wbGUsIGludG8gL3Vzci9sb2NhbCk/ICMjCisKK0luIHRoZSBlYXJseSBkYXlzLCB3
ZSBzYWlkIHRoYXQgeW91IGNvdWxkIGluc3RhbGwKK2NvbXBpbGVkIEdvb2dsZSBUZXN0IGxpYnJh
cmllcyBvbiBgKmBuaXggc3lzdGVtcyB1c2luZyBgbWFrZSBpbnN0YWxsYC4KK1RoZW4gZXZlcnkg
dXNlciBvZiB5b3VyIG1hY2hpbmUgY2FuIHdyaXRlIHRlc3RzIHdpdGhvdXQKK3JlY29tcGlsaW5n
IEdvb2dsZSBUZXN0LgorCitUaGlzIHNlZW1lZCBsaWtlIGEgZ29vZCBpZGVhLCBidXQgaXQgaGFz
IGEKK2dvdC1jaGE6IGV2ZXJ5IHVzZXIgbmVlZHMgdG8gY29tcGlsZSBoaXMgdGVzdHMgdXNpbmcg
dGhlIF9zYW1lXyBjb21waWxlcgorZmxhZ3MgdXNlZCB0byBjb21waWxlIHRoZSBpbnN0YWxsZWQg
R29vZ2xlIFRlc3QgbGlicmFyaWVzOyBvdGhlcndpc2UKK2hlIG1heSBydW4gaW50byB1bmRlZmlu
ZWQgYmVoYXZpb3JzIChpLmUuIHRoZSB0ZXN0cyBjYW4gYmVoYXZlCitzdHJhbmdlbHkgYW5kIG1h
eSBldmVuIGNyYXNoIGZvciBubyBvYnZpb3VzIHJlYXNvbnMpLgorCitXaHk/ICBCZWNhdXNlIEMr
KyBoYXMgdGhpcyB0aGluZyBjYWxsZWQgdGhlIE9uZS1EZWZpbml0aW9uIFJ1bGU6IGlmCit0d28g
QysrIHNvdXJjZSBmaWxlcyBjb250YWluIGRpZmZlcmVudCBkZWZpbml0aW9ucyBvZiB0aGUgc2Ft
ZQorY2xhc3MvZnVuY3Rpb24vdmFyaWFibGUsIGFuZCB5b3UgbGluayB0aGVtIHRvZ2V0aGVyLCB5
b3UgdmlvbGF0ZSB0aGUKK3J1bGUuICBUaGUgbGlua2VyIG1heSBvciBtYXkgbm90IGNhdGNoIHRo
ZSBlcnJvciAoaW4gbWFueSBjYXNlcyBpdCdzCitub3QgcmVxdWlyZWQgYnkgdGhlIEMrKyBzdGFu
ZGFyZCB0byBjYXRjaCB0aGUgdmlvbGF0aW9uKS4gIElmIGl0Citkb2Vzbid0LCB5b3UgZ2V0IHN0
cmFuZ2UgcnVuLXRpbWUgYmVoYXZpb3JzIHRoYXQgYXJlIHVuZXhwZWN0ZWQgYW5kCitoYXJkIHRv
IGRlYnVnLgorCitJZiB5b3UgY29tcGlsZSBHb29nbGUgVGVzdCBhbmQgeW91ciB0ZXN0IGNvZGUg
dXNpbmcgZGlmZmVyZW50IGNvbXBpbGVyCitmbGFncywgdGhleSBtYXkgc2VlIGRpZmZlcmVudCBk
ZWZpbml0aW9ucyBvZiB0aGUgc2FtZQorY2xhc3MvZnVuY3Rpb24vdmFyaWFibGUgKGUuZy4gZHVl
IHRvIHRoZSB1c2Ugb2YgYCNpZmAgaW4gR29vZ2xlIFRlc3QpLgorVGhlcmVmb3JlLCBmb3IgeW91
ciBzYW5pdHksIHdlIHJlY29tbWVuZCB0byBhdm9pZCBpbnN0YWxsaW5nIHByZS1jb21waWxlZAor
R29vZ2xlIFRlc3QgbGlicmFyaWVzLiAgSW5zdGVhZCwgZWFjaCBwcm9qZWN0IHNob3VsZCBjb21w
aWxlCitHb29nbGUgVGVzdCBpdHNlbGYgc3VjaCB0aGF0IGl0IGNhbiBiZSBzdXJlIHRoYXQgdGhl
IHNhbWUgZmxhZ3MgYXJlCit1c2VkIGZvciBib3RoIEdvb2dsZSBUZXN0IGFuZCB0aGUgdGVzdHMu
CisKKyMjIEhvdyBkbyBJIGdlbmVyYXRlIDY0LWJpdCBiaW5hcmllcyBvbiBXaW5kb3dzICh1c2lu
ZyBWaXN1YWwgU3R1ZGlvIDIwMDgpPyAjIworCisoQW5zd2VyZWQgYnkgVHJldm9yIFJvYmluc29u
KQorCitMb2FkIHRoZSBzdXBwbGllZCBWaXN1YWwgU3R1ZGlvIHNvbHV0aW9uIGZpbGUsIGVpdGhl
ciBgbXN2Y1xndGVzdC1tZC5zbG5gIG9yCitgbXN2Y1xndGVzdC5zbG5gLiBHbyB0aHJvdWdoIHRo
ZSBtaWdyYXRpb24gd2l6YXJkIHRvIG1pZ3JhdGUgdGhlCitzb2x1dGlvbiBhbmQgcHJvamVjdCBm
aWxlcyB0byBWaXN1YWwgU3R1ZGlvIDIwMDguIFNlbGVjdAorYENvbmZpZ3VyYXRpb24gTWFuYWdl
ci4uLmAgZnJvbSB0aGUgYEJ1aWxkYCBtZW51LiBTZWxlY3QgYDxOZXcuLi4+YCBmcm9tCit0aGUg
YEFjdGl2ZSBzb2x1dGlvbiBwbGF0Zm9ybWAgZHJvcGRvd24uICBTZWxlY3QgYHg2NGAgZnJvbSB0
aGUgbmV3CitwbGF0Zm9ybSBkcm9wZG93biwgbGVhdmUgYENvcHkgc2V0dGluZ3MgZnJvbWAgc2V0
IHRvIGBXaW4zMmAgYW5kCitgQ3JlYXRlIG5ldyBwcm9qZWN0IHBsYXRmb3Jtc2AgY2hlY2tlZCwg
dGhlbiBjbGljayBgT0tgLiBZb3Ugbm93IGhhdmUKK2BXaW4zMmAgYW5kIGB4NjRgIHBsYXRmb3Jt
IGNvbmZpZ3VyYXRpb25zLCBzZWxlY3RhYmxlIGZyb20gdGhlCitgU3RhbmRhcmRgIHRvb2xiYXIs
IHdoaWNoIGFsbG93IHlvdSB0byB0b2dnbGUgYmV0d2VlbiBidWlsZGluZyAzMi1iaXQgb3IKKzY0
LWJpdCBiaW5hcmllcyAob3IgYm90aCBhdCBvbmNlIHVzaW5nIEJhdGNoIEJ1aWxkKS4KKworSW4g
b3JkZXIgdG8gcHJldmVudCBidWlsZCBvdXRwdXQgZmlsZXMgZnJvbSBvdmVyd3JpdGluZyBvbmUg
YW5vdGhlciwKK3lvdSdsbCBuZWVkIHRvIGNoYW5nZSB0aGUgYEludGVybWVkaWF0ZSBEaXJlY3Rv
cnlgIHNldHRpbmdzIGZvciB0aGUKK25ld2x5IGNyZWF0ZWQgcGxhdGZvcm0gY29uZmlndXJhdGlv
biBhY3Jvc3MgYWxsIHRoZSBwcm9qZWN0cy4gVG8gZG8KK3RoaXMsIG11bHRpLXNlbGVjdCAoZS5n
LiB1c2luZyBzaGlmdC1jbGljaykgYWxsIHByb2plY3RzIChidXQgbm90IHRoZQorc29sdXRpb24p
IGluIHRoZSBgU29sdXRpb24gRXhwbG9yZXJgLiBSaWdodC1jbGljayBvbmUgb2YgdGhlbSBhbmQK
K3NlbGVjdCBgUHJvcGVydGllc2AuIEluIHRoZSBsZWZ0IHBhbmUsIHNlbGVjdCBgQ29uZmlndXJh
dGlvbiBQcm9wZXJ0aWVzYCwKK2FuZCBmcm9tIHRoZSBgQ29uZmlndXJhdGlvbmAgZHJvcGRvd24s
IHNlbGVjdCBgQWxsIENvbmZpZ3VyYXRpb25zYC4KK01ha2Ugc3VyZSB0aGUgc2VsZWN0ZWQgcGxh
dGZvcm0gaXMgYHg2NGAuIEZvciB0aGUKK2BJbnRlcm1lZGlhdGUgRGlyZWN0b3J5YCBzZXR0aW5n
LCBjaGFuZ2UgdGhlIHZhbHVlIGZyb20KK2AkKFBsYXRmb3JtTmFtZSlcJChDb25maWd1cmF0aW9u
TmFtZSlgIHRvCitgJChPdXREaXIpXCQoUHJvamVjdE5hbWUpYC4gQ2xpY2sgYE9LYCBhbmQgdGhl
biBidWlsZCB0aGUKK3NvbHV0aW9uLiBXaGVuIHRoZSBidWlsZCBpcyBjb21wbGV0ZSwgdGhlIDY0
LWJpdCBiaW5hcmllcyB3aWxsIGJlIGluCit0aGUgYG1zdmNceDY0XERlYnVnYCBkaXJlY3Rvcnku
CisKKyMjIENhbiBJIHVzZSBHb29nbGUgVGVzdCBvbiBNaW5HVz8gIyMKKworV2UgaGF2ZW4ndCB0
ZXN0ZWQgdGhpcyBvdXJzZWx2ZXMsIGJ1dCBQZXIgQWJyYWhhbXNlbiByZXBvcnRlZCB0aGF0IGhl
Cit3YXMgYWJsZSB0byBjb21waWxlIGFuZCBpbnN0YWxsIEdvb2dsZSBUZXN0IHN1Y2Nlc3NmdWxs
eSB3aGVuIHVzaW5nCitNaW5HVyBmcm9tIEN5Z3dpbi4gIFlvdSdsbCBuZWVkIHRvIGNvbmZpZ3Vy
ZSBpdCB3aXRoOgorCitgUEFUSC9UTy9jb25maWd1cmUgQ0M9ImdjYyAtbW5vLWN5Z3dpbiIgQ1hY
PSJnKysgLW1uby1jeWd3aW4iYAorCitZb3Ugc2hvdWxkIGJlIGFibGUgdG8gcmVwbGFjZSB0aGUg
YC1tbm8tY3lnd2luYCBvcHRpb24gd2l0aCBkaXJlY3QgbGlua3MKK3RvIHRoZSByZWFsIE1pbkdX
IGJpbmFyaWVzLCBidXQgd2UgaGF2ZW4ndCB0cmllZCB0aGF0LgorCitDYXZlYXRzOgorCisgICog
VGhlcmUgYXJlIG1hbnkgd2FybmluZ3Mgd2hlbiBjb21waWxpbmcuCisgICogYG1ha2UgY2hlY2tg
IHdpbGwgcHJvZHVjZSBzb21lIGVycm9ycyBhcyBub3QgYWxsIHRlc3RzIGZvciBHb29nbGUgVGVz
dCBpdHNlbGYgYXJlIGNvbXBhdGlibGUgd2l0aCBNaW5HVy4KKworV2UgYWxzbyBoYXZlIHJlcG9y
dHMgb24gc3VjY2Vzc2Z1bCBjcm9zcyBjb21waWxhdGlvbiBvZiBHb29nbGUgVGVzdAorTWluR1cg
YmluYXJpZXMgb24gTGludXggdXNpbmcKK1t0aGVzZSBpbnN0cnVjdGlvbnNdKGh0dHA6Ly93aWtp
Lnd4d2lkZ2V0cy5vcmcvQ3Jvc3MtQ29tcGlsaW5nX1VuZGVyX0xpbnV4I0Nyb3NzLWNvbXBpbGlu
Z191bmRlcl9MaW51eF9mb3JfTVNfV2luZG93cykKK29uIHRoZSBXeFdpZGdldHMgc2l0ZS4KKwor
UGxlYXNlIGNvbnRhY3QgYGdvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBzLmNvbWAgaWYg
eW91IGFyZQoraW50ZXJlc3RlZCBpbiBpbXByb3ZpbmcgdGhlIHN1cHBvcnQgZm9yIE1pbkdXLgor
CisjIyBXaHkgZG9lcyBHb29nbGUgVGVzdCBzdXBwb3J0IEVYUEVDVFxfRVEoTlVMTCwgcHRyKSBh
bmQgQVNTRVJUXF9FUShOVUxMLCBwdHIpIGJ1dCBub3QgRVhQRUNUXF9ORShOVUxMLCBwdHIpIGFu
ZCBBU1NFUlRcX05FKE5VTEwsIHB0cik/ICMjCisKK0R1ZSB0byBzb21lIHBlY3VsaWFyaXR5IG9m
IEMrKywgaXQgcmVxdWlyZXMgc29tZSBub24tdHJpdmlhbCB0ZW1wbGF0ZQorbWV0YSBwcm9ncmFt
bWluZyB0cmlja3MgdG8gc3VwcG9ydCB1c2luZyBgTlVMTGAgYXMgYW4gYXJndW1lbnQgb2YgdGhl
CitgRVhQRUNUX1hYKClgIGFuZCBgQVNTRVJUX1hYKClgIG1hY3Jvcy4gVGhlcmVmb3JlIHdlIG9u
bHkgZG8gaXQgd2hlcmUKK2l0J3MgbW9zdCBuZWVkZWQgKG90aGVyd2lzZSB3ZSBtYWtlIHRoZSBp
bXBsZW1lbnRhdGlvbiBvZiBHb29nbGUgVGVzdAoraGFyZGVyIHRvIG1haW50YWluIGFuZCBtb3Jl
IGVycm9yLXByb25lIHRoYW4gbmVjZXNzYXJ5KS4KKworVGhlIGBFWFBFQ1RfRVEoKWAgbWFjcm8g
dGFrZXMgdGhlIF9leHBlY3RlZF8gdmFsdWUgYXMgaXRzIGZpcnN0Cithcmd1bWVudCBhbmQgdGhl
IF9hY3R1YWxfIHZhbHVlIGFzIHRoZSBzZWNvbmQuIEl0J3MgcmVhc29uYWJsZSB0aGF0Citzb21l
b25lIHdhbnRzIHRvIHdyaXRlIGBFWFBFQ1RfRVEoTlVMTCwgc29tZV9leHByZXNzaW9uKWAsIGFu
ZCB0aGlzCitpbmRlZWQgd2FzIHJlcXVlc3RlZCBzZXZlcmFsIHRpbWVzLiBUaGVyZWZvcmUgd2Ug
aW1wbGVtZW50ZWQgaXQuCisKK1RoZSBuZWVkIGZvciBgRVhQRUNUX05FKE5VTEwsIHB0cilgIGlz
bid0IG5lYXJseSBhcyBzdHJvbmcuIFdoZW4gdGhlCithc3NlcnRpb24gZmFpbHMsIHlvdSBhbHJl
YWR5IGtub3cgdGhhdCBgcHRyYCBtdXN0IGJlIGBOVUxMYCwgc28gaXQKK2RvZXNuJ3QgYWRkIGFu
eSBpbmZvcm1hdGlvbiB0byBwcmludCBwdHIgaW4gdGhpcyBjYXNlLiBUaGF0IG1lYW5zCitgRVhQ
RUNUX1RSVUUocHRyICE9IE5VTEwpYCB3b3JrcyBqdXN0IGFzIHdlbGwuCisKK0lmIHdlIHdlcmUg
dG8gc3VwcG9ydCBgRVhQRUNUX05FKE5VTEwsIHB0cilgLCBmb3IgY29uc2lzdGVuY3kgd2UnbGwK
K2hhdmUgdG8gc3VwcG9ydCBgRVhQRUNUX05FKHB0ciwgTlVMTClgIGFzIHdlbGwsIGFzIHVubGlr
ZSBgRVhQRUNUX0VRYCwKK3dlIGRvbid0IGhhdmUgYSBjb252ZW50aW9uIG9uIHRoZSBvcmRlciBv
ZiB0aGUgdHdvIGFyZ3VtZW50cyBmb3IKK2BFWFBFQ1RfTkVgLiBUaGlzIG1lYW5zIHVzaW5nIHRo
ZSB0ZW1wbGF0ZSBtZXRhIHByb2dyYW1taW5nIHRyaWNrcwordHdpY2UgaW4gdGhlIGltcGxlbWVu
dGF0aW9uLCBtYWtpbmcgaXQgZXZlbiBoYXJkZXIgdG8gdW5kZXJzdGFuZCBhbmQKK21haW50YWlu
LiBXZSBiZWxpZXZlIHRoZSBiZW5lZml0IGRvZXNuJ3QganVzdGlmeSB0aGUgY29zdC4KKworRmlu
YWxseSwgd2l0aCB0aGUgZ3Jvd3RoIG9mIEdvb2dsZSBNb2NrJ3MgW21hdGNoZXJdKC4uLy4uL0Nv
b2tCb29rLm1kI3VzaW5nLW1hdGNoZXJzLWluLWdvb2dsZS10ZXN0LWFzc2VydGlvbnMpIGxpYnJh
cnksIHdlIGFyZQorZW5jb3VyYWdpbmcgcGVvcGxlIHRvIHVzZSB0aGUgdW5pZmllZCBgRVhQRUNU
X1RIQVQodmFsdWUsIG1hdGNoZXIpYAorc3ludGF4IG1vcmUgb2Z0ZW4gaW4gdGVzdHMuIE9uZSBz
aWduaWZpY2FudCBhZHZhbnRhZ2Ugb2YgdGhlIG1hdGNoZXIKK2FwcHJvYWNoIGlzIHRoYXQgbWF0
Y2hlcnMgY2FuIGJlIGVhc2lseSBjb21iaW5lZCB0byBmb3JtIG5ldyBtYXRjaGVycywKK3doaWxl
IHRoZSBgRVhQRUNUX05FYCwgZXRjLCBtYWNyb3MgY2Fubm90IGJlIGVhc2lseQorY29tYmluZWQu
IFRoZXJlZm9yZSB3ZSB3YW50IHRvIGludmVzdCBtb3JlIGluIHRoZSBtYXRjaGVycyB0aGFuIGlu
IHRoZQorYEVYUEVDVF9YWCgpYCBtYWNyb3MuCisKKyMjIERvZXMgR29vZ2xlIFRlc3Qgc3VwcG9y
dCBydW5uaW5nIHRlc3RzIGluIHBhcmFsbGVsPyAjIworCitUZXN0IHJ1bm5lcnMgdGVuZCB0byBi
ZSB0aWdodGx5IGNvdXBsZWQgd2l0aCB0aGUgYnVpbGQvdGVzdAorZW52aXJvbm1lbnQsIGFuZCBH
b29nbGUgVGVzdCBkb2Vzbid0IHRyeSB0byBzb2x2ZSB0aGUgcHJvYmxlbSBvZgorcnVubmluZyB0
ZXN0cyBpbiBwYXJhbGxlbC4gIEluc3RlYWQsIHdlIHRyaWVkIHRvIG1ha2UgR29vZ2xlIFRlc3Qg
d29yaworbmljZWx5IHdpdGggdGVzdCBydW5uZXJzLiAgRm9yIGV4YW1wbGUsIEdvb2dsZSBUZXN0
J3MgWE1MIHJlcG9ydAorY29udGFpbnMgdGhlIHRpbWUgc3BlbnQgb24gZWFjaCB0ZXN0LCBhbmQg
aXRzIGBndGVzdF9saXN0X3Rlc3RzYCBhbmQKK2BndGVzdF9maWx0ZXJgIGZsYWdzIGNhbiBiZSB1
c2VkIGZvciBzcGxpdHRpbmcgdGhlIGV4ZWN1dGlvbiBvZiB0ZXN0CittZXRob2RzIGludG8gbXVs
dGlwbGUgcHJvY2Vzc2VzLiAgVGhlc2UgZnVuY3Rpb25hbGl0aWVzIGNhbiBoZWxwIHRoZQordGVz
dCBydW5uZXIgcnVuIHRoZSB0ZXN0cyBpbiBwYXJhbGxlbC4KKworIyMgV2h5IGRvbid0IEdvb2ds
ZSBUZXN0IHJ1biB0aGUgdGVzdHMgaW4gZGlmZmVyZW50IHRocmVhZHMgdG8gc3BlZWQgdGhpbmdz
IHVwPyAjIworCitJdCdzIGRpZmZpY3VsdCB0byB3cml0ZSB0aHJlYWQtc2FmZSBjb2RlLiAgTW9z
dCB0ZXN0cyBhcmUgbm90IHdyaXR0ZW4KK3dpdGggdGhyZWFkLXNhZmV0eSBpbiBtaW5kLCBhbmQg
dGh1cyBtYXkgbm90IHdvcmsgY29ycmVjdGx5IGluIGEKK211bHRpLXRocmVhZGVkIHNldHRpbmcu
CisKK0lmIHlvdSB0aGluayBhYm91dCBpdCwgaXQncyBhbHJlYWR5IGhhcmQgdG8gbWFrZSB5b3Vy
IGNvZGUgd29yayB3aGVuCit5b3Uga25vdyB3aGF0IG90aGVyIHRocmVhZHMgYXJlIGRvaW5nLiAg
SXQncyBtdWNoIGhhcmRlciwgYW5kCitzb21ldGltZXMgZXZlbiBpbXBvc3NpYmxlLCB0byBtYWtl
IHlvdXIgY29kZSB3b3JrIHdoZW4geW91IGRvbid0IGtub3cKK3doYXQgb3RoZXIgdGhyZWFkcyBh
cmUgZG9pbmcgKHJlbWVtYmVyIHRoYXQgdGVzdCBtZXRob2RzIGNhbiBiZSBhZGRlZCwKK2RlbGV0
ZWQsIG9yIG1vZGlmaWVkIGFmdGVyIHlvdXIgdGVzdCB3YXMgd3JpdHRlbikuICBJZiB5b3Ugd2Fu
dCB0byBydW4KK3RoZSB0ZXN0cyBpbiBwYXJhbGxlbCwgeW91J2QgYmV0dGVyIHJ1biB0aGVtIGlu
IGRpZmZlcmVudCBwcm9jZXNzZXMuCisKKyMjIFdoeSBhcmVuJ3QgR29vZ2xlIFRlc3QgYXNzZXJ0
aW9ucyBpbXBsZW1lbnRlZCB1c2luZyBleGNlcHRpb25zPyAjIworCitPdXIgb3JpZ2luYWwgbW90
aXZhdGlvbiB3YXMgdG8gYmUgYWJsZSB0byB1c2UgR29vZ2xlIFRlc3QgaW4gcHJvamVjdHMKK3Ro
YXQgZGlzYWJsZSBleGNlcHRpb25zLiAgTGF0ZXIgd2UgcmVhbGl6ZWQgc29tZSBhZGRpdGlvbmFs
IGJlbmVmaXRzCitvZiB0aGlzIGFwcHJvYWNoOgorCisgIDEuIFRocm93aW5nIGluIGEgZGVzdHJ1
Y3RvciBpcyB1bmRlZmluZWQgYmVoYXZpb3IgaW4gQysrLiAgTm90IHVzaW5nIGV4Y2VwdGlvbnMg
bWVhbnMgR29vZ2xlIFRlc3QncyBhc3NlcnRpb25zIGFyZSBzYWZlIHRvIHVzZSBpbiBkZXN0cnVj
dG9ycy4KKyAgMS4gVGhlIGBFWFBFQ1RfKmAgZmFtaWx5IG9mIG1hY3JvcyB3aWxsIGNvbnRpbnVl
IGV2ZW4gYWZ0ZXIgYSBmYWlsdXJlLCBhbGxvd2luZyBtdWx0aXBsZSBmYWlsdXJlcyBpbiBhIGBU
RVNUYCB0byBiZSByZXBvcnRlZCBpbiBhIHNpbmdsZSBydW4uIFRoaXMgaXMgYSBwb3B1bGFyIGZl
YXR1cmUsIGFzIGluIEMrKyB0aGUgZWRpdC1jb21waWxlLXRlc3QgY3ljbGUgaXMgdXN1YWxseSBx
dWl0ZSBsb25nIGFuZCBiZWluZyBhYmxlIHRvIGZpeGluZyBtb3JlIHRoYW4gb25lIHRoaW5nIGF0
IGEgdGltZSBpcyBhIGJsZXNzaW5nLgorICAxLiBJZiBhc3NlcnRpb25zIGFyZSBpbXBsZW1lbnRl
ZCB1c2luZyBleGNlcHRpb25zLCBhIHRlc3QgbWF5IGZhbHNlbHkgaWdub3JlIGEgZmFpbHVyZSBp
ZiBpdCdzIGNhdWdodCBieSB1c2VyIGNvZGU6CitgYGAKK3RyeSB7IC4uLiBBU1NFUlRfVFJVRSgu
Li4pIC4uLiB9CitjYXRjaCAoLi4uKSB7IC4uLiB9CitgYGAKK1RoZSBhYm92ZSBjb2RlIHdpbGwg
cGFzcyBldmVuIGlmIHRoZSBgQVNTRVJUX1RSVUVgIHRocm93cy4gIFdoaWxlIGl0J3MgdW5saWtl
bHkgZm9yIHNvbWVvbmUgdG8gd3JpdGUgdGhpcyBpbiBhIHRlc3QsIGl0J3MgcG9zc2libGUgdG8g
cnVuIGludG8gdGhpcyBwYXR0ZXJuIHdoZW4geW91IHdyaXRlIGFzc2VydGlvbnMgaW4gY2FsbGJh
Y2tzIHRoYXQgYXJlIGNhbGxlZCBieSB0aGUgY29kZSB1bmRlciB0ZXN0LgorCitUaGUgZG93bnNp
ZGUgb2Ygbm90IHVzaW5nIGV4Y2VwdGlvbnMgaXMgdGhhdCBgQVNTRVJUXypgIChpbXBsZW1lbnRl
ZAordXNpbmcgYHJldHVybmApIHdpbGwgb25seSBhYm9ydCB0aGUgY3VycmVudCBmdW5jdGlvbiwg
bm90IHRoZSBjdXJyZW50CitgVEVTVGAuCisKKyMjIFdoeSBkbyB3ZSB1c2UgdHdvIGRpZmZlcmVu
dCBtYWNyb3MgZm9yIHRlc3RzIHdpdGggYW5kIHdpdGhvdXQgZml4dHVyZXM/ICMjCisKK1VuZm9y
dHVuYXRlbHksIEMrKydzIG1hY3JvIHN5c3RlbSBkb2Vzbid0IGFsbG93IHVzIHRvIHVzZSB0aGUg
c2FtZQorbWFjcm8gZm9yIGJvdGggY2FzZXMuICBPbmUgcG9zc2liaWxpdHkgaXMgdG8gcHJvdmlk
ZSBvbmx5IG9uZSBtYWNybworZm9yIHRlc3RzIHdpdGggZml4dHVyZXMsIGFuZCByZXF1aXJlIHRo
ZSB1c2VyIHRvIGRlZmluZSBhbiBlbXB0eQorZml4dHVyZSBzb21ldGltZXM6CisKK2BgYAorY2xh
c3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307CisKK1RFU1RfRihGb29UZXN0
LCBEb2VzVGhpcykgeyAuLi4gfQorYGBgCitvcgorYGBgCit0eXBlZGVmIDo6dGVzdGluZzo6VGVz
dCBGb29UZXN0OworCitURVNUX0YoRm9vVGVzdCwgRG9lc1RoYXQpIHsgLi4uIH0KK2BgYAorCitZ
ZXQsIG1hbnkgcGVvcGxlIHRoaW5rIHRoaXMgaXMgb25lIGxpbmUgdG9vIG1hbnkuIDotKSBPdXIg
Z29hbCB3YXMgdG8KK21ha2UgaXQgcmVhbGx5IGVhc3kgdG8gd3JpdGUgdGVzdHMsIHNvIHdlIHRy
aWVkIHRvIG1ha2Ugc2ltcGxlIHRlc3RzCit0cml2aWFsIHRvIGNyZWF0ZS4gIFRoYXQgbWVhbnMg
dXNpbmcgYSBzZXBhcmF0ZSBtYWNybyBmb3Igc3VjaCB0ZXN0cy4KKworV2UgdGhpbmsgbmVpdGhl
ciBhcHByb2FjaCBpcyBpZGVhbCwgeWV0IGVpdGhlciBvZiB0aGVtIGlzIHJlYXNvbmFibGUuCitJ
biB0aGUgZW5kLCBpdCBwcm9iYWJseSBkb2Vzbid0IG1hdHRlciBtdWNoIGVpdGhlciB3YXkuCisK
KyMjIFdoeSBkb24ndCB3ZSB1c2Ugc3RydWN0cyBhcyB0ZXN0IGZpeHR1cmVzPyAjIworCitXZSBs
aWtlIHRvIHVzZSBzdHJ1Y3RzIG9ubHkgd2hlbiByZXByZXNlbnRpbmcgcGFzc2l2ZSBkYXRhLiAg
VGhpcworZGlzdGluY3Rpb24gYmV0d2VlbiBzdHJ1Y3RzIGFuZCBjbGFzc2VzIGlzIGdvb2QgZm9y
IGRvY3VtZW50aW5nIHRoZQoraW50ZW50IG9mIHRoZSBjb2RlJ3MgYXV0aG9yLiAgU2luY2UgdGVz
dCBmaXh0dXJlcyBoYXZlIGxvZ2ljIGxpa2UKK2BTZXRVcCgpYCBhbmQgYFRlYXJEb3duKClgLCB0
aGV5IGFyZSBiZXR0ZXIgZGVmaW5lZCBhcyBjbGFzc2VzLgorCisjIyBXaHkgYXJlIGRlYXRoIHRl
c3RzIGltcGxlbWVudGVkIGFzIGFzc2VydGlvbnMgaW5zdGVhZCBvZiB1c2luZyBhIHRlc3QgcnVu
bmVyPyAjIworCitPdXIgZ29hbCB3YXMgdG8gbWFrZSBkZWF0aCB0ZXN0cyBhcyBjb252ZW5pZW50
IGZvciBhIHVzZXIgYXMgQysrCitwb3NzaWJseSBhbGxvd3MuICBJbiBwYXJ0aWN1bGFyOgorCisg
ICogVGhlIHJ1bm5lci1zdHlsZSByZXF1aXJlcyB0byBzcGxpdCB0aGUgaW5mb3JtYXRpb24gaW50
byB0d28gcGllY2VzOiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZGVhdGggdGVzdCBpdHNlbGYsIGFu
ZCB0aGUgc3BlY2lmaWNhdGlvbiBmb3IgdGhlIHJ1bm5lciBvbiBob3cgdG8gcnVuIHRoZSBkZWF0
aCB0ZXN0IGFuZCB3aGF0IHRvIGV4cGVjdC4gIFRoZSBkZWF0aCB0ZXN0IHdvdWxkIGJlIHdyaXR0
ZW4gaW4gQysrLCB3aGlsZSB0aGUgcnVubmVyIHNwZWMgbWF5IG9yIG1heSBub3QgYmUuICBBIHVz
ZXIgbmVlZHMgdG8gY2FyZWZ1bGx5IGtlZXAgdGhlIHR3byBpbiBzeW5jLiBgQVNTRVJUX0RFQVRI
KHN0YXRlbWVudCwgZXhwZWN0ZWRfbWVzc2FnZSlgIHNwZWNpZmllcyBhbGwgbmVjZXNzYXJ5IGlu
Zm9ybWF0aW9uIGluIG9uZSBwbGFjZSwgaW4gb25lIGxhbmd1YWdlLCB3aXRob3V0IGJvaWxlcnBs
YXRlIGNvZGUuIEl0IGlzIHZlcnkgZGVjbGFyYXRpdmUuCisgICogYEFTU0VSVF9ERUFUSGAgaGFz
IGEgc2ltaWxhciBzeW50YXggYW5kIGVycm9yLXJlcG9ydGluZyBzZW1hbnRpY3MgYXMgb3RoZXIg
R29vZ2xlIFRlc3QgYXNzZXJ0aW9ucywgYW5kIHRodXMgaXMgZWFzeSB0byBsZWFybi4KKyAgKiBg
QVNTRVJUX0RFQVRIYCBjYW4gYmUgbWl4ZWQgd2l0aCBvdGhlciBhc3NlcnRpb25zIGFuZCBvdGhl
ciBsb2dpYyBhdCB5b3VyIHdpbGwuICBZb3UgYXJlIG5vdCBsaW1pdGVkIHRvIG9uZSBkZWF0aCB0
ZXN0IHBlciB0ZXN0IG1ldGhvZC4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gd3JpdGUgc29tZXRoaW5n
IGxpa2U6CitgYGAKKyAgICBpZiAoRm9vQ29uZGl0aW9uKCkpIHsKKyAgICAgIEFTU0VSVF9ERUFU
SChCYXIoKSwgImJsYWgiKTsKKyAgICB9IGVsc2UgeworICAgICAgQVNTRVJUX0VRKDUsIEJhcigp
KTsKKyAgICB9CitgYGAKK0lmIHlvdSBwcmVmZXIgb25lIGRlYXRoIHRlc3QgcGVyIHRlc3QgbWV0
aG9kLCB5b3UgY2FuIHdyaXRlIHlvdXIgdGVzdHMgaW4gdGhhdCBzdHlsZSB0b28sIGJ1dCB3ZSBk
b24ndCB3YW50IHRvIGltcG9zZSB0aGF0IG9uIHRoZSB1c2Vycy4gIFRoZSBmZXdlciBhcnRpZmlj
aWFsIGxpbWl0YXRpb25zIHRoZSBiZXR0ZXIuCisgICogYEFTU0VSVF9ERUFUSGAgY2FuIHJlZmVy
ZW5jZSBsb2NhbCB2YXJpYWJsZXMgaW4gdGhlIGN1cnJlbnQgZnVuY3Rpb24sIGFuZCB5b3UgY2Fu
IGRlY2lkZSBob3cgbWFueSBkZWF0aCB0ZXN0cyB5b3Ugd2FudCBiYXNlZCBvbiBydW4tdGltZSBp
bmZvcm1hdGlvbi4gIEZvciBleGFtcGxlLAorYGBgCisgICAgY29uc3QgaW50IGNvdW50ID0gR2V0
Q291bnQoKTsgIC8vIE9ubHkga25vd24gYXQgcnVuIHRpbWUuCisgICAgZm9yIChpbnQgaSA9IDE7
IGkgPD0gY291bnQ7IGkrKykgeworICAgICAgQVNTRVJUX0RFQVRIKHsKKyAgICAgICAgZG91Ymxl
KiBidWZmZXIgPSBuZXcgZG91YmxlW2ldOworICAgICAgICAuLi4gaW5pdGlhbGl6ZXMgYnVmZmVy
IC4uLgorICAgICAgICBGb28oYnVmZmVyLCBpKQorICAgICAgfSwgImJsYWggYmxhaCIpOworICAg
IH0KK2BgYAorVGhlIHJ1bm5lci1iYXNlZCBhcHByb2FjaCB0ZW5kcyB0byBiZSBtb3JlIHN0YXRp
YyBhbmQgbGVzcyBmbGV4aWJsZSwgb3IgcmVxdWlyZXMgbW9yZSB1c2VyIGVmZm9ydCB0byBnZXQg
dGhpcyBraW5kIG9mIGZsZXhpYmlsaXR5LgorCitBbm90aGVyIGludGVyZXN0aW5nIHRoaW5nIGFi
b3V0IGBBU1NFUlRfREVBVEhgIGlzIHRoYXQgaXQgY2FsbHMgYGZvcmsoKWAKK3RvIGNyZWF0ZSBh
IGNoaWxkIHByb2Nlc3MgdG8gcnVuIHRoZSBkZWF0aCB0ZXN0LiAgVGhpcyBpcyBsaWdodGVuaW5n
CitmYXN0LCBhcyBgZm9yaygpYCB1c2VzIGNvcHktb24td3JpdGUgcGFnZXMgYW5kIGluY3VycyBh
bG1vc3QgemVybworb3ZlcmhlYWQsIGFuZCB0aGUgY2hpbGQgcHJvY2VzcyBzdGFydHMgZnJvbSB0
aGUgdXNlci1zdXBwbGllZAorc3RhdGVtZW50IGRpcmVjdGx5LCBza2lwcGluZyBhbGwgZ2xvYmFs
IGFuZCBsb2NhbCBpbml0aWFsaXphdGlvbiBhbmQKK2FueSBjb2RlIGxlYWRpbmcgdG8gdGhlIGdp
dmVuIHN0YXRlbWVudC4gIElmIHlvdSBsYXVuY2ggdGhlIGNoaWxkCitwcm9jZXNzIGZyb20gc2Ny
YXRjaCwgaXQgY2FuIHRha2Ugc2Vjb25kcyBqdXN0IHRvIGxvYWQgZXZlcnl0aGluZyBhbmQKK3N0
YXJ0IHJ1bm5pbmcgaWYgdGhlIHRlc3QgbGlua3MgdG8gbWFueSBsaWJyYXJpZXMgZHluYW1pY2Fs
bHkuCisKKyMjIE15IGRlYXRoIHRlc3QgbW9kaWZpZXMgc29tZSBzdGF0ZSwgYnV0IHRoZSBjaGFu
Z2Ugc2VlbXMgbG9zdCBhZnRlciB0aGUgZGVhdGggdGVzdCBmaW5pc2hlcy4gV2h5PyAjIworCitE
ZWF0aCB0ZXN0cyAoYEVYUEVDVF9ERUFUSGAsIGV0YykgYXJlIGV4ZWN1dGVkIGluIGEgc3ViLXBy
b2Nlc3Mgcy50LiB0aGUKK2V4cGVjdGVkIGNyYXNoIHdvbid0IGtpbGwgdGhlIHRlc3QgcHJvZ3Jh
bSAoaS5lLiB0aGUgcGFyZW50IHByb2Nlc3MpLiBBcyBhCityZXN1bHQsIGFueSBpbi1tZW1vcnkg
c2lkZSBlZmZlY3RzIHRoZXkgaW5jdXIgYXJlIG9ic2VydmFibGUgaW4gdGhlaXIKK3Jlc3BlY3Rp
dmUgc3ViLXByb2Nlc3NlcywgYnV0IG5vdCBpbiB0aGUgcGFyZW50IHByb2Nlc3MuIFlvdSBjYW4g
dGhpbmsgb2YgdGhlbQorYXMgcnVubmluZyBpbiBhIHBhcmFsbGVsIHVuaXZlcnNlLCBtb3JlIG9y
IGxlc3MuCisKKyMjIFRoZSBjb21waWxlciBjb21wbGFpbnMgYWJvdXQgInVuZGVmaW5lZCByZWZl
cmVuY2VzIiB0byBzb21lIHN0YXRpYyBjb25zdCBtZW1iZXIgdmFyaWFibGVzLCBidXQgSSBkaWQg
ZGVmaW5lIHRoZW0gaW4gdGhlIGNsYXNzIGJvZHkuIFdoYXQncyB3cm9uZz8gIyMKKworSWYgeW91
ciBjbGFzcyBoYXMgYSBzdGF0aWMgZGF0YSBtZW1iZXI6CisKK2BgYAorLy8gZm9vLmgKK2NsYXNz
IEZvbyB7CisgIC4uLgorICBzdGF0aWMgY29uc3QgaW50IGtCYXIgPSAxMDA7Cit9OworYGBgCisK
K1lvdSBhbHNvIG5lZWQgdG8gZGVmaW5lIGl0IF9vdXRzaWRlXyBvZiB0aGUgY2xhc3MgYm9keSBp
biBgZm9vLmNjYDoKKworYGBgCitjb25zdCBpbnQgRm9vOjprQmFyOyAgLy8gTm8gaW5pdGlhbGl6
ZXIgaGVyZS4KK2BgYAorCitPdGhlcndpc2UgeW91ciBjb2RlIGlzICoqaW52YWxpZCBDKysqKiwg
YW5kIG1heSBicmVhayBpbiB1bmV4cGVjdGVkIHdheXMuIEluCitwYXJ0aWN1bGFyLCB1c2luZyBp
dCBpbiBHb29nbGUgVGVzdCBjb21wYXJpc29uIGFzc2VydGlvbnMgKGBFWFBFQ1RfRVFgLCBldGMp
Cit3aWxsIGdlbmVyYXRlIGFuICJ1bmRlZmluZWQgcmVmZXJlbmNlIiBsaW5rZXIgZXJyb3IuCisK
KyMjIEkgaGF2ZSBhbiBpbnRlcmZhY2UgdGhhdCBoYXMgc2V2ZXJhbCBpbXBsZW1lbnRhdGlvbnMu
IENhbiBJIHdyaXRlIGEgc2V0IG9mIHRlc3RzIG9uY2UgYW5kIHJlcGVhdCB0aGVtIG92ZXIgYWxs
IHRoZSBpbXBsZW1lbnRhdGlvbnM/ICMjCisKK0dvb2dsZSBUZXN0IGRvZXNuJ3QgeWV0IGhhdmUg
Z29vZCBzdXBwb3J0IGZvciB0aGlzIGtpbmQgb2YgdGVzdHMsIG9yCitkYXRhLWRyaXZlbiB0ZXN0
cyBpbiBnZW5lcmFsLiBXZSBob3BlIHRvIGJlIGFibGUgdG8gbWFrZSBpbXByb3ZlbWVudHMgaW4g
dGhpcworYXJlYSBzb29uLgorCisjIyBDYW4gSSBkZXJpdmUgYSB0ZXN0IGZpeHR1cmUgZnJvbSBh
bm90aGVyPyAjIworCitZZXMuCisKK0VhY2ggdGVzdCBmaXh0dXJlIGhhcyBhIGNvcnJlc3BvbmRp
bmcgYW5kIHNhbWUgbmFtZWQgdGVzdCBjYXNlLiBUaGlzIG1lYW5zIG9ubHkKK29uZSB0ZXN0IGNh
c2UgY2FuIHVzZSBhIHBhcnRpY3VsYXIgZml4dHVyZS4gU29tZXRpbWVzLCBob3dldmVyLCBtdWx0
aXBsZSB0ZXN0CitjYXNlcyBtYXkgd2FudCB0byB1c2UgdGhlIHNhbWUgb3Igc2xpZ2h0bHkgZGlm
ZmVyZW50IGZpeHR1cmVzLiBGb3IgZXhhbXBsZSwgeW91CittYXkgd2FudCB0byBtYWtlIHN1cmUg
dGhhdCBhbGwgb2YgYSBHVUkgbGlicmFyeSdzIHRlc3QgY2FzZXMgZG9uJ3QgbGVhaworaW1wb3J0
YW50IHN5c3RlbSByZXNvdXJjZXMgbGlrZSBmb250cyBhbmQgYnJ1c2hlcy4KKworSW4gR29vZ2xl
IFRlc3QsIHlvdSBzaGFyZSBhIGZpeHR1cmUgYW1vbmcgdGVzdCBjYXNlcyBieSBwdXR0aW5nIHRo
ZSBzaGFyZWQKK2xvZ2ljIGluIGEgYmFzZSB0ZXN0IGZpeHR1cmUsIHRoZW4gZGVyaXZpbmcgZnJv
bSB0aGF0IGJhc2UgYSBzZXBhcmF0ZSBmaXh0dXJlCitmb3IgZWFjaCB0ZXN0IGNhc2UgdGhhdCB3
YW50cyB0byB1c2UgdGhpcyBjb21tb24gbG9naWMuIFlvdSB0aGVuIHVzZSBgVEVTVF9GKClgCit0
byB3cml0ZSB0ZXN0cyB1c2luZyBlYWNoIGRlcml2ZWQgZml4dHVyZS4KKworVHlwaWNhbGx5LCB5
b3VyIGNvZGUgbG9va3MgbGlrZSB0aGlzOgorCitgYGAKKy8vIERlZmluZXMgYSBiYXNlIHRlc3Qg
Zml4dHVyZS4KK2NsYXNzIEJhc2VUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgIHBy
b3RlY3RlZDoKKyAgIC4uLgorfTsKKworLy8gRGVyaXZlcyBhIGZpeHR1cmUgRm9vVGVzdCBmcm9t
IEJhc2VUZXN0LgorY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyBCYXNlVGVzdCB7CisgIHByb3RlY3Rl
ZDoKKyAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgICBCYXNlVGVzdDo6U2V0VXAoKTsg
IC8vIFNldHMgdXAgdGhlIGJhc2UgZml4dHVyZSBmaXJzdC4KKyAgICAgIC4uLiBhZGRpdGlvbmFs
IHNldC11cCB3b3JrIC4uLgorICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Cisg
ICAgICAuLi4gY2xlYW4tdXAgd29yayBmb3IgRm9vVGVzdCAuLi4KKyAgICAgIEJhc2VUZXN0OjpU
ZWFyRG93bigpOyAgLy8gUmVtZW1iZXIgdG8gdGVhciBkb3duIHRoZSBiYXNlIGZpeHR1cmUKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWZ0ZXIgY2xlYW5pbmcgdXAgRm9vVGVzdCEK
KyAgICB9CisgICAgLi4uIGZ1bmN0aW9ucyBhbmQgdmFyaWFibGVzIGZvciBGb29UZXN0IC4uLgor
fTsKKworLy8gVGVzdHMgdGhhdCB1c2UgdGhlIGZpeHR1cmUgRm9vVGVzdC4KK1RFU1RfRihGb29U
ZXN0LCBCYXIpIHsgLi4uIH0KK1RFU1RfRihGb29UZXN0LCBCYXopIHsgLi4uIH0KKworLi4uIGFk
ZGl0aW9uYWwgZml4dHVyZXMgZGVyaXZlZCBmcm9tIEJhc2VUZXN0IC4uLgorYGBgCisKK0lmIG5l
Y2Vzc2FyeSwgeW91IGNhbiBjb250aW51ZSB0byBkZXJpdmUgdGVzdCBmaXh0dXJlcyBmcm9tIGEg
ZGVyaXZlZCBmaXh0dXJlLgorR29vZ2xlIFRlc3QgaGFzIG5vIGxpbWl0IG9uIGhvdyBkZWVwIHRo
ZSBoaWVyYXJjaHkgY2FuIGJlLgorCitGb3IgYSBjb21wbGV0ZSBleGFtcGxlIHVzaW5nIGRlcml2
ZWQgdGVzdCBmaXh0dXJlcywgc2VlCitbc2FtcGxlNV0oLi4vc2FtcGxlcy9zYW1wbGU1X3VuaXR0
ZXN0LmNjKS4KKworIyMgTXkgY29tcGlsZXIgY29tcGxhaW5zICJ2b2lkIHZhbHVlIG5vdCBpZ25v
cmVkIGFzIGl0IG91Z2h0IHRvIGJlLiIgV2hhdCBkb2VzIHRoaXMgbWVhbj8gIyMKKworWW91J3Jl
IHByb2JhYmx5IHVzaW5nIGFuIGBBU1NFUlRfKigpYCBpbiBhIGZ1bmN0aW9uIHRoYXQgZG9lc24n
dCByZXR1cm4gYHZvaWRgLgorYEFTU0VSVF8qKClgIGNhbiBvbmx5IGJlIHVzZWQgaW4gYHZvaWRg
IGZ1bmN0aW9ucy4KKworIyMgTXkgZGVhdGggdGVzdCBoYW5ncyAob3Igc2VnLWZhdWx0cykuIEhv
dyBkbyBJIGZpeCBpdD8gIyMKKworSW4gR29vZ2xlIFRlc3QsIGRlYXRoIHRlc3RzIGFyZSBydW4g
aW4gYSBjaGlsZCBwcm9jZXNzIGFuZCB0aGUgd2F5IHRoZXkgd29yayBpcworZGVsaWNhdGUuIFRv
IHdyaXRlIGRlYXRoIHRlc3RzIHlvdSByZWFsbHkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGV5
IHdvcmsuCitQbGVhc2UgbWFrZSBzdXJlIHlvdSBoYXZlIHJlYWQgdGhpcy4KKworSW4gcGFydGlj
dWxhciwgZGVhdGggdGVzdHMgZG9uJ3QgbGlrZSBoYXZpbmcgbXVsdGlwbGUgdGhyZWFkcyBpbiB0
aGUgcGFyZW50Citwcm9jZXNzLiBTbyB0aGUgZmlyc3QgdGhpbmcgeW91IGNhbiB0cnkgaXMgdG8g
ZWxpbWluYXRlIGNyZWF0aW5nIHRocmVhZHMKK291dHNpZGUgb2YgYEVYUEVDVF9ERUFUSCgpYC4K
KworU29tZXRpbWVzIHRoaXMgaXMgaW1wb3NzaWJsZSBhcyBzb21lIGxpYnJhcnkgeW91IG11c3Qg
dXNlIG1heSBiZSBjcmVhdGluZwordGhyZWFkcyBiZWZvcmUgYG1haW4oKWAgaXMgZXZlbiByZWFj
aGVkLiBJbiB0aGlzIGNhc2UsIHlvdSBjYW4gdHJ5IHRvIG1pbmltaXplCit0aGUgY2hhbmNlIG9m
IGNvbmZsaWN0cyBieSBlaXRoZXIgbW92aW5nIGFzIG1hbnkgYWN0aXZpdGllcyBhcyBwb3NzaWJs
ZSBpbnNpZGUKK2BFWFBFQ1RfREVBVEgoKWAgKGluIHRoZSBleHRyZW1lIGNhc2UsIHlvdSB3YW50
IHRvIG1vdmUgZXZlcnl0aGluZyBpbnNpZGUpLCBvcgorbGVhdmluZyBhcyBmZXcgdGhpbmdzIGFz
IHBvc3NpYmxlIGluIGl0LiBBbHNvLCB5b3UgY2FuIHRyeSB0byBzZXQgdGhlIGRlYXRoCit0ZXN0
IHN0eWxlIHRvIGAidGhyZWFkc2FmZSJgLCB3aGljaCBpcyBzYWZlciBidXQgc2xvd2VyLCBhbmQg
c2VlIGlmIGl0IGhlbHBzLgorCitJZiB5b3UgZ28gd2l0aCB0aHJlYWQtc2FmZSBkZWF0aCB0ZXN0
cywgcmVtZW1iZXIgdGhhdCB0aGV5IHJlcnVuIHRoZSB0ZXN0Citwcm9ncmFtIGZyb20gdGhlIGJl
Z2lubmluZyBpbiB0aGUgY2hpbGQgcHJvY2Vzcy4gVGhlcmVmb3JlIG1ha2Ugc3VyZSB5b3VyCitw
cm9ncmFtIGNhbiBydW4gc2lkZS1ieS1zaWRlIHdpdGggaXRzZWxmIGFuZCBpcyBkZXRlcm1pbmlz
dGljLgorCitJbiB0aGUgZW5kLCB0aGlzIGJvaWxzIGRvd24gdG8gZ29vZCBjb25jdXJyZW50IHBy
b2dyYW1taW5nLiBZb3UgaGF2ZSB0byBtYWtlCitzdXJlIHRoYXQgdGhlcmUgaXMgbm8gcmFjZSBj
b25kaXRpb25zIG9yIGRlYWQgbG9ja3MgaW4geW91ciBwcm9ncmFtLiBObyBzaWx2ZXIKK2J1bGxl
dCAtIHNvcnJ5IQorCisjIyBTaG91bGQgSSB1c2UgdGhlIGNvbnN0cnVjdG9yL2Rlc3RydWN0b3Ig
b2YgdGhlIHRlc3QgZml4dHVyZSBvciB0aGUgc2V0LXVwL3RlYXItZG93biBmdW5jdGlvbj8gIyMK
KworVGhlIGZpcnN0IHRoaW5nIHRvIHJlbWVtYmVyIGlzIHRoYXQgR29vZ2xlIFRlc3QgZG9lcyBu
b3QgcmV1c2UgdGhlCitzYW1lIHRlc3QgZml4dHVyZSBvYmplY3QgYWNyb3NzIG11bHRpcGxlIHRl
c3RzLiBGb3IgZWFjaCBgVEVTVF9GYCwKK0dvb2dsZSBUZXN0IHdpbGwgY3JlYXRlIGEgZnJlc2gg
dGVzdCBmaXh0dXJlIG9iamVjdCwgX2ltbWVkaWF0ZWx5XworY2FsbCBgU2V0VXAoKWAsIHJ1biB0
aGUgdGVzdCwgY2FsbCBgVGVhckRvd24oKWAsIGFuZCB0aGVuCitfaW1tZWRpYXRlbHlfIGRlbGV0
ZSB0aGUgdGVzdCBmaXh0dXJlIG9iamVjdC4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubworbmVlZCB0
byB3cml0ZSBhIGBTZXRVcCgpYCBvciBgVGVhckRvd24oKWAgZnVuY3Rpb24gaWYgdGhlIGNvbnN0
cnVjdG9yCitvciBkZXN0cnVjdG9yIGFscmVhZHkgZG9lcyB0aGUgam9iLgorCitZb3UgbWF5IHN0
aWxsIHdhbnQgdG8gdXNlIGBTZXRVcCgpL1RlYXJEb3duKClgIGluIHRoZSBmb2xsb3dpbmcgY2Fz
ZXM6CisgICogSWYgdGhlIHRlYXItZG93biBvcGVyYXRpb24gY291bGQgdGhyb3cgYW4gZXhjZXB0
aW9uLCB5b3UgbXVzdCB1c2UgYFRlYXJEb3duKClgIGFzIG9wcG9zZWQgdG8gdGhlIGRlc3RydWN0
b3IsIGFzIHRocm93aW5nIGluIGEgZGVzdHJ1Y3RvciBsZWFkcyB0byB1bmRlZmluZWQgYmVoYXZp
b3IgYW5kIHVzdWFsbHkgd2lsbCBraWxsIHlvdXIgcHJvZ3JhbSByaWdodCBhd2F5LiBOb3RlIHRo
YXQgbWFueSBzdGFuZGFyZCBsaWJyYXJpZXMgKGxpa2UgU1RMKSBtYXkgdGhyb3cgd2hlbiBleGNl
cHRpb25zIGFyZSBlbmFibGVkIGluIHRoZSBjb21waWxlci4gVGhlcmVmb3JlIHlvdSBzaG91bGQg
cHJlZmVyIGBUZWFyRG93bigpYCBpZiB5b3Ugd2FudCB0byB3cml0ZSBwb3J0YWJsZSB0ZXN0cyB0
aGF0IHdvcmsgd2l0aCBvciB3aXRob3V0IGV4Y2VwdGlvbnMuCisgICogVGhlIGFzc2VydGlvbiBt
YWNyb3MgdGhyb3cgYW4gZXhjZXB0aW9uIHdoZW4gZmxhZyBgLS1ndGVzdF90aHJvd19vbl9mYWls
dXJlYCBpcyBzcGVjaWZpZWQuIFRoZXJlZm9yZSwgeW91IHNob3VsZG4ndCB1c2UgR29vZ2xlIFRl
c3QgYXNzZXJ0aW9ucyBpbiBhIGRlc3RydWN0b3IgaWYgeW91IHBsYW4gdG8gcnVuIHlvdXIgdGVz
dHMgd2l0aCB0aGlzIGZsYWcuCisgICogSW4gYSBjb25zdHJ1Y3RvciBvciBkZXN0cnVjdG9yLCB5
b3UgY2Fubm90IG1ha2UgYSB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGwgb24gdGhpcyBvYmplY3QuIChZ
b3UgY2FuIGNhbGwgYSBtZXRob2QgZGVjbGFyZWQgYXMgdmlydHVhbCwgYnV0IGl0IHdpbGwgYmUg
c3RhdGljYWxseSBib3VuZC4pIFRoZXJlZm9yZSwgaWYgeW91IG5lZWQgdG8gY2FsbCBhIG1ldGhv
ZCB0aGF0IHdpbGwgYmUgb3ZlcnJpZGVuIGluIGEgZGVyaXZlZCBjbGFzcywgeW91IGhhdmUgdG8g
dXNlIGBTZXRVcCgpL1RlYXJEb3duKClgLgorCisjIyBUaGUgY29tcGlsZXIgY29tcGxhaW5zICJu
byBtYXRjaGluZyBmdW5jdGlvbiB0byBjYWxsIiB3aGVuIEkgdXNlIEFTU0VSVFxfUFJFRG4uIEhv
dyBkbyBJIGZpeCBpdD8gIyMKKworSWYgdGhlIHByZWRpY2F0ZSBmdW5jdGlvbiB5b3UgdXNlIGlu
IGBBU1NFUlRfUFJFRCpgIG9yIGBFWFBFQ1RfUFJFRCpgIGlzCitvdmVybG9hZGVkIG9yIGEgdGVt
cGxhdGUsIHRoZSBjb21waWxlciB3aWxsIGhhdmUgdHJvdWJsZSBmaWd1cmluZyBvdXQgd2hpY2gK
K292ZXJsb2FkZWQgdmVyc2lvbiBpdCBzaG91bGQgdXNlLiBgQVNTRVJUX1BSRURfRk9STUFUKmAg
YW5kCitgRVhQRUNUX1BSRURfRk9STUFUKmAgZG9uJ3QgaGF2ZSB0aGlzIHByb2JsZW0uCisKK0lm
IHlvdSBzZWUgdGhpcyBlcnJvciwgeW91IG1pZ2h0IHdhbnQgdG8gc3dpdGNoIHRvCitgKEFTU0VS
VHxFWFBFQ1QpX1BSRURfRk9STUFUKmAsIHdoaWNoIHdpbGwgYWxzbyBnaXZlIHlvdSBhIGJldHRl
ciBmYWlsdXJlCittZXNzYWdlLiBJZiwgaG93ZXZlciwgdGhhdCBpcyBub3QgYW4gb3B0aW9uLCB5
b3UgY2FuIHJlc29sdmUgdGhlIHByb2JsZW0gYnkKK2V4cGxpY2l0bHkgdGVsbGluZyB0aGUgY29t
cGlsZXIgd2hpY2ggdmVyc2lvbiB0byBwaWNrLgorCitGb3IgZXhhbXBsZSwgc3VwcG9zZSB5b3Ug
aGF2ZQorCitgYGAKK2Jvb2wgSXNQb3NpdGl2ZShpbnQgbikgeworICByZXR1cm4gbiA+IDA7Cit9
Citib29sIElzUG9zaXRpdmUoZG91YmxlIHgpIHsKKyAgcmV0dXJuIHggPiAwOworfQorYGBgCisK
K3lvdSB3aWxsIGdldCBhIGNvbXBpbGVyIGVycm9yIGlmIHlvdSB3cml0ZQorCitgYGAKK0VYUEVD
VF9QUkVEMShJc1Bvc2l0aXZlLCA1KTsKK2BgYAorCitIb3dldmVyLCB0aGlzIHdpbGwgd29yazoK
KworYGBgCitFWFBFQ1RfUFJFRDEoKnN0YXRpY19jYXN0PGJvb2wgKCopKGludCk+KihJc1Bvc2l0
aXZlKSwgNSk7CitgYGAKKworKFRoZSBzdHVmZiBpbnNpZGUgdGhlIGFuZ2xlZCBicmFja2V0cyBm
b3IgdGhlIGBzdGF0aWNfY2FzdGAgb3BlcmF0b3IgaXMgdGhlCit0eXBlIG9mIHRoZSBmdW5jdGlv
biBwb2ludGVyIGZvciB0aGUgYGludGAtdmVyc2lvbiBvZiBgSXNQb3NpdGl2ZSgpYC4pCisKK0Fz
IGFub3RoZXIgZXhhbXBsZSwgd2hlbiB5b3UgaGF2ZSBhIHRlbXBsYXRlIGZ1bmN0aW9uCisKK2Bg
YAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citib29sIElzTmVnYXRpdmUoVCB4KSB7CisgIHJldHVy
biB4IDwgMDsKK30KK2BgYAorCit5b3UgY2FuIHVzZSBpdCBpbiBhIHByZWRpY2F0ZSBhc3NlcnRp
b24gbGlrZSB0aGlzOgorCitgYGAKK0FTU0VSVF9QUkVEMShJc05lZ2F0aXZlKjxpbnQ+KiwgLTUp
OworYGBgCisKK1RoaW5ncyBhcmUgbW9yZSBpbnRlcmVzdGluZyBpZiB5b3VyIHRlbXBsYXRlIGhh
cyBtb3JlIHRoYW4gb25lIHBhcmFtZXRlcnMuIFRoZQorZm9sbG93aW5nIHdvbid0IGNvbXBpbGU6
CisKK2BgYAorQVNTRVJUX1BSRUQyKCpHcmVhdGVyVGhhbjxpbnQsIGludD4qLCA1LCAwKTsKK2Bg
YAorCisKK2FzIHRoZSBDKysgcHJlLXByb2Nlc3NvciB0aGlua3MgeW91IGFyZSBnaXZpbmcgYEFT
U0VSVF9QUkVEMmAgNCBhcmd1bWVudHMsCit3aGljaCBpcyBvbmUgbW9yZSB0aGFuIGV4cGVjdGVk
LiBUaGUgd29ya2Fyb3VuZCBpcyB0byB3cmFwIHRoZSBwcmVkaWNhdGUKK2Z1bmN0aW9uIGluIHBh
cmVudGhlc2VzOgorCitgYGAKK0FTU0VSVF9QUkVEMigqKEdyZWF0ZXJUaGFuPGludCwgaW50Pikq
LCA1LCAwKTsKK2BgYAorCisKKyMjIE15IGNvbXBpbGVyIGNvbXBsYWlucyBhYm91dCAiaWdub3Jp
bmcgcmV0dXJuIHZhbHVlIiB3aGVuIEkgY2FsbCBSVU5cX0FMTFxfVEVTVFMoKS4gV2h5PyAjIwor
CitTb21lIHBlb3BsZSBoYWQgYmVlbiBpZ25vcmluZyB0aGUgcmV0dXJuIHZhbHVlIG9mIGBSVU5f
QUxMX1RFU1RTKClgLiBUaGF0IGlzLAoraW5zdGVhZCBvZgorCitgYGAKK3JldHVybiBSVU5fQUxM
X1RFU1RTKCk7CitgYGAKKwordGhleSB3cml0ZQorCitgYGAKK1JVTl9BTExfVEVTVFMoKTsKK2Bg
YAorCitUaGlzIGlzIHdyb25nIGFuZCBkYW5nZXJvdXMuIEEgdGVzdCBydW5uZXIgbmVlZHMgdG8g
c2VlIHRoZSByZXR1cm4gdmFsdWUgb2YKK2BSVU5fQUxMX1RFU1RTKClgIGluIG9yZGVyIHRvIGRl
dGVybWluZSBpZiBhIHRlc3QgaGFzIHBhc3NlZC4gSWYgeW91ciBgbWFpbigpYAorZnVuY3Rpb24g
aWdub3JlcyBpdCwgeW91ciB0ZXN0IHdpbGwgYmUgY29uc2lkZXJlZCBzdWNjZXNzZnVsIGV2ZW4g
aWYgaXQgaGFzIGEKK0dvb2dsZSBUZXN0IGFzc2VydGlvbiBmYWlsdXJlLiBWZXJ5IGJhZC4KKwor
VG8gaGVscCB0aGUgdXNlcnMgYXZvaWQgdGhpcyBkYW5nZXJvdXMgYnVnLCB0aGUgaW1wbGVtZW50
YXRpb24gb2YKK2BSVU5fQUxMX1RFU1RTKClgIGNhdXNlcyBnY2MgdG8gcmFpc2UgdGhpcyB3YXJu
aW5nLCB3aGVuIHRoZSByZXR1cm4gdmFsdWUgaXMKK2lnbm9yZWQuIElmIHlvdSBzZWUgdGhpcyB3
YXJuaW5nLCB0aGUgZml4IGlzIHNpbXBsZToganVzdCBtYWtlIHN1cmUgaXRzIHZhbHVlCitpcyB1
c2VkIGFzIHRoZSByZXR1cm4gdmFsdWUgb2YgYG1haW4oKWAuCisKKyMjIE15IGNvbXBpbGVyIGNv
bXBsYWlucyB0aGF0IGEgY29uc3RydWN0b3IgKG9yIGRlc3RydWN0b3IpIGNhbm5vdCByZXR1cm4g
YSB2YWx1ZS4gV2hhdCdzIGdvaW5nIG9uPyAjIworCitEdWUgdG8gYSBwZWN1bGlhcml0eSBvZiBD
KyssIGluIG9yZGVyIHRvIHN1cHBvcnQgdGhlIHN5bnRheCBmb3Igc3RyZWFtaW5nCittZXNzYWdl
cyB0byBhbiBgQVNTRVJUXypgLCBlLmcuCisKK2BgYAorQVNTRVJUX0VRKDEsIEZvbygpKSA8PCAi
YmxhaCBibGFoIiA8PCBmb287CitgYGAKKword2UgaGFkIHRvIGdpdmUgdXAgdXNpbmcgYEFTU0VS
VCpgIGFuZCBgRkFJTCpgIChidXQgbm90IGBFWFBFQ1QqYCBhbmQKK2BBRERfRkFJTFVSRSpgKSBp
biBjb25zdHJ1Y3RvcnMgYW5kIGRlc3RydWN0b3JzLiBUaGUgd29ya2Fyb3VuZCBpcyB0byBtb3Zl
IHRoZQorY29udGVudCBvZiB5b3VyIGNvbnN0cnVjdG9yL2Rlc3RydWN0b3IgdG8gYSBwcml2YXRl
IHZvaWQgbWVtYmVyIGZ1bmN0aW9uLCBvcgorc3dpdGNoIHRvIGBFWFBFQ1RfKigpYCBpZiB0aGF0
IHdvcmtzLiBUaGlzIHNlY3Rpb24gaW4gdGhlIHVzZXIncyBndWlkZSBleHBsYWlucworaXQuCisK
KyMjIE15IHNldC11cCBmdW5jdGlvbiBpcyBub3QgY2FsbGVkLiBXaHk/ICMjCisKK0MrKyBpcyBj
YXNlLXNlbnNpdGl2ZS4gSXQgc2hvdWxkIGJlIHNwZWxsZWQgYXMgYFNldFVwKClgLiAgRGlkIHlv
dQorc3BlbGwgaXQgYXMgYFNldHVwKClgPworCitTaW1pbGFybHksIHNvbWV0aW1lcyBwZW9wbGUg
c3BlbGwgYFNldFVwVGVzdENhc2UoKWAgYXMgYFNldHVwVGVzdENhc2UoKWAgYW5kCit3b25kZXIg
d2h5IGl0J3MgbmV2ZXIgY2FsbGVkLgorCisjIyBIb3cgZG8gSSBqdW1wIHRvIHRoZSBsaW5lIG9m
IGEgZmFpbHVyZSBpbiBFbWFjcyBkaXJlY3RseT8gIyMKKworR29vZ2xlIFRlc3QncyBmYWlsdXJl
IG1lc3NhZ2UgZm9ybWF0IGlzIHVuZGVyc3Rvb2QgYnkgRW1hY3MgYW5kIG1hbnkgb3RoZXIKK0lE
RXMsIGxpa2UgYWNtZSBhbmQgWENvZGUuIElmIGEgR29vZ2xlIFRlc3QgbWVzc2FnZSBpcyBpbiBh
IGNvbXBpbGF0aW9uIGJ1ZmZlcgoraW4gRW1hY3MsIHRoZW4gaXQncyBjbGlja2FibGUuIFlvdSBj
YW4gbm93IGhpdCBgZW50ZXJgIG9uIGEgbWVzc2FnZSB0byBqdW1wIHRvCit0aGUgY29ycmVzcG9u
ZGluZyBzb3VyY2UgY29kZSwgb3IgdXNlIGBDLXggYGAgdG8ganVtcCB0byB0aGUgbmV4dCBmYWls
dXJlLgorCisjIyBJIGhhdmUgc2V2ZXJhbCB0ZXN0IGNhc2VzIHdoaWNoIHNoYXJlIHRoZSBzYW1l
IHRlc3QgZml4dHVyZSBsb2dpYywgZG8gSSBoYXZlIHRvIGRlZmluZSBhIG5ldyB0ZXN0IGZpeHR1
cmUgY2xhc3MgZm9yIGVhY2ggb2YgdGhlbT8gVGhpcyBzZWVtcyBwcmV0dHkgdGVkaW91cy4gIyMK
KworWW91IGRvbid0IGhhdmUgdG8uIEluc3RlYWQgb2YKKworYGBgCitjbGFzcyBGb29UZXN0IDog
cHVibGljIEJhc2VUZXN0IHt9OworCitURVNUX0YoRm9vVGVzdCwgQWJjKSB7IC4uLiB9CitURVNU
X0YoRm9vVGVzdCwgRGVmKSB7IC4uLiB9CisKK2NsYXNzIEJhclRlc3QgOiBwdWJsaWMgQmFzZVRl
c3Qge307CisKK1RFU1RfRihCYXJUZXN0LCBBYmMpIHsgLi4uIH0KK1RFU1RfRihCYXJUZXN0LCBE
ZWYpIHsgLi4uIH0KK2BgYAorCit5b3UgY2FuIHNpbXBseSBgdHlwZWRlZmAgdGhlIHRlc3QgZml4
dHVyZXM6CitgYGAKK3R5cGVkZWYgQmFzZVRlc3QgRm9vVGVzdDsKKworVEVTVF9GKEZvb1Rlc3Qs
IEFiYykgeyAuLi4gfQorVEVTVF9GKEZvb1Rlc3QsIERlZikgeyAuLi4gfQorCit0eXBlZGVmIEJh
c2VUZXN0IEJhclRlc3Q7CisKK1RFU1RfRihCYXJUZXN0LCBBYmMpIHsgLi4uIH0KK1RFU1RfRihC
YXJUZXN0LCBEZWYpIHsgLi4uIH0KK2BgYAorCisjIyBUaGUgR29vZ2xlIFRlc3Qgb3V0cHV0IGlz
IGJ1cmllZCBpbiBhIHdob2xlIGJ1bmNoIG9mIGxvZyBtZXNzYWdlcy4gV2hhdCBkbyBJIGRvPyAj
IworCitUaGUgR29vZ2xlIFRlc3Qgb3V0cHV0IGlzIG1lYW50IHRvIGJlIGEgY29uY2lzZSBhbmQg
aHVtYW4tZnJpZW5kbHkgcmVwb3J0LiBJZgoreW91ciB0ZXN0IGdlbmVyYXRlcyB0ZXh0dWFsIG91
dHB1dCBpdHNlbGYsIGl0IHdpbGwgbWl4IHdpdGggdGhlIEdvb2dsZSBUZXN0CitvdXRwdXQsIG1h
a2luZyBpdCBoYXJkIHRvIHJlYWQuIEhvd2V2ZXIsIHRoZXJlIGlzIGFuIGVhc3kgc29sdXRpb24g
dG8gdGhpcworcHJvYmxlbS4KKworU2luY2UgbW9zdCBsb2cgbWVzc2FnZXMgZ28gdG8gc3RkZXJy
LCB3ZSBkZWNpZGVkIHRvIGxldCBHb29nbGUgVGVzdCBvdXRwdXQgZ28KK3RvIHN0ZG91dC4gVGhp
cyB3YXksIHlvdSBjYW4gZWFzaWx5IHNlcGFyYXRlIHRoZSB0d28gdXNpbmcgcmVkaXJlY3Rpb24u
IEZvcgorZXhhbXBsZToKK2BgYAorLi9teV90ZXN0ID4gZ29vZ2xldGVzdF9vdXRwdXQudHh0Citg
YGAKKworIyMgV2h5IHNob3VsZCBJIHByZWZlciB0ZXN0IGZpeHR1cmVzIG92ZXIgZ2xvYmFsIHZh
cmlhYmxlcz8gIyMKKworVGhlcmUgYXJlIHNldmVyYWwgZ29vZCByZWFzb25zOgorICAxLiBJdCdz
IGxpa2VseSB5b3VyIHRlc3QgbmVlZHMgdG8gY2hhbmdlIHRoZSBzdGF0ZXMgb2YgaXRzIGdsb2Jh
bCB2YXJpYWJsZXMuIFRoaXMgbWFrZXMgaXQgZGlmZmljdWx0IHRvIGtlZXAgc2lkZSBlZmZlY3Rz
IGZyb20gZXNjYXBpbmcgb25lIHRlc3QgYW5kIGNvbnRhbWluYXRpbmcgb3RoZXJzLCBtYWtpbmcg
ZGVidWdnaW5nIGRpZmZpY3VsdC4gQnkgdXNpbmcgZml4dHVyZXMsIGVhY2ggdGVzdCBoYXMgYSBm
cmVzaCBzZXQgb2YgdmFyaWFibGVzIHRoYXQncyBkaWZmZXJlbnQgKGJ1dCB3aXRoIHRoZSBzYW1l
IG5hbWVzKS4gVGh1cywgdGVzdHMgYXJlIGtlcHQgaW5kZXBlbmRlbnQgb2YgZWFjaCBvdGhlci4K
KyAgMS4gR2xvYmFsIHZhcmlhYmxlcyBwb2xsdXRlIHRoZSBnbG9iYWwgbmFtZXNwYWNlLgorICAx
LiBUZXN0IGZpeHR1cmVzIGNhbiBiZSByZXVzZWQgdmlhIHN1YmNsYXNzaW5nLCB3aGljaCBjYW5u
b3QgYmUgZG9uZSBlYXNpbHkgd2l0aCBnbG9iYWwgdmFyaWFibGVzLiBUaGlzIGlzIHVzZWZ1bCBp
ZiBtYW55IHRlc3QgY2FzZXMgaGF2ZSBzb21ldGhpbmcgaW4gY29tbW9uLgorCisjIyBIb3cgZG8g
SSB0ZXN0IHByaXZhdGUgY2xhc3MgbWVtYmVycyB3aXRob3V0IHdyaXRpbmcgRlJJRU5EXF9URVNU
KClzPyAjIworCitZb3Ugc2hvdWxkIHRyeSB0byB3cml0ZSB0ZXN0YWJsZSBjb2RlLCB3aGljaCBt
ZWFucyBjbGFzc2VzIHNob3VsZCBiZSBlYXNpbHkKK3Rlc3RlZCBmcm9tIHRoZWlyIHB1YmxpYyBp
bnRlcmZhY2UuIE9uZSB3YXkgdG8gYWNoaWV2ZSB0aGlzIGlzIHRoZSBQaW1wbCBpZGlvbToKK3lv
dSBtb3ZlIGFsbCBwcml2YXRlIG1lbWJlcnMgb2YgYSBjbGFzcyBpbnRvIGEgaGVscGVyIGNsYXNz
LCBhbmQgbWFrZSBhbGwKK21lbWJlcnMgb2YgdGhlIGhlbHBlciBjbGFzcyBwdWJsaWMuCisKK1lv
dSBoYXZlIHNldmVyYWwgb3RoZXIgb3B0aW9ucyB0aGF0IGRvbid0IHJlcXVpcmUgdXNpbmcgYEZS
SUVORF9URVNUYDoKKyAgKiBXcml0ZSB0aGUgdGVzdHMgYXMgbWVtYmVycyBvZiB0aGUgZml4dHVy
ZSBjbGFzczoKK2BgYAorY2xhc3MgRm9vIHsKKyAgZnJpZW5kIGNsYXNzIEZvb1Rlc3Q7CisgIC4u
LgorfTsKKworY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHByb3Rl
Y3RlZDoKKyAgLi4uCisgIHZvaWQgVGVzdDEoKSB7Li4ufSAvLyBUaGlzIGFjY2Vzc2VzIHByaXZh
dGUgbWVtYmVycyBvZiBjbGFzcyBGb28uCisgIHZvaWQgVGVzdDIoKSB7Li4ufSAvLyBTbyBkb2Vz
IHRoaXMgb25lLgorfTsKKworVEVTVF9GKEZvb1Rlc3QsIFRlc3QxKSB7CisgIFRlc3QxKCk7Cit9
CisKK1RFU1RfRihGb29UZXN0LCBUZXN0MikgeworICBUZXN0MigpOworfQorYGBgCisgICogSW4g
dGhlIGZpeHR1cmUgY2xhc3MsIHdyaXRlIGFjY2Vzc29ycyBmb3IgdGhlIHRlc3RlZCBjbGFzcycg
cHJpdmF0ZSBtZW1iZXJzLCB0aGVuIHVzZSB0aGUgYWNjZXNzb3JzIGluIHlvdXIgdGVzdHM6Citg
YGAKK2NsYXNzIEZvbyB7CisgIGZyaWVuZCBjbGFzcyBGb29UZXN0OworICAuLi4KK307CisKK2Ns
YXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIC4u
LgorICBUMSBnZXRfcHJpdmF0ZV9tZW1iZXIxKEZvbyogb2JqKSB7CisgICAgcmV0dXJuIG9iai0+
cHJpdmF0ZV9tZW1iZXIxXzsKKyAgfQorfTsKKworVEVTVF9GKEZvb1Rlc3QsIFRlc3QxKSB7Cisg
IC4uLgorICBnZXRfcHJpdmF0ZV9tZW1iZXIxKHgpCisgIC4uLgorfQorYGBgCisgICogSWYgdGhl
IG1ldGhvZHMgYXJlIGRlY2xhcmVkICoqcHJvdGVjdGVkKiosIHlvdSBjYW4gY2hhbmdlIHRoZWly
IGFjY2VzcyBsZXZlbCBpbiBhIHRlc3Qtb25seSBzdWJjbGFzczoKK2BgYAorY2xhc3MgWW91ckNs
YXNzIHsKKyAgLi4uCisgcHJvdGVjdGVkOiAvLyBwcm90ZWN0ZWQgYWNjZXNzIGZvciB0ZXN0YWJp
bGl0eS4KKyAgaW50IERvU29tZXRoaW5nUmV0dXJuaW5nSW50KCk7CisgIC4uLgorfTsKKworLy8g
aW4gdGhlIHlvdXJfY2xhc3NfdGVzdC5jYyBmaWxlOgorY2xhc3MgVGVzdGFibGVZb3VyQ2xhc3Mg
OiBwdWJsaWMgWW91ckNsYXNzIHsKKyAgLi4uCisgcHVibGljOiB1c2luZyBZb3VyQ2xhc3M6OkRv
U29tZXRoaW5nUmV0dXJuaW5nSW50OyAvLyBjaGFuZ2VzIGFjY2VzcyByaWdodHMKKyAgLi4uCit9
OworCitURVNUX0YoWW91ckNsYXNzVGVzdCwgRG9Tb21ldGhpbmdUZXN0KSB7CisgIFRlc3RhYmxl
WW91ckNsYXNzIG9iajsKKyAgYXNzZXJ0RXF1YWxzKGV4cGVjdGVkX3ZhbHVlLCBvYmouRG9Tb21l
dGhpbmdSZXR1cm5pbmdJbnQoKSk7Cit9CitgYGAKKworIyMgSG93IGRvIEkgdGVzdCBwcml2YXRl
IGNsYXNzIHN0YXRpYyBtZW1iZXJzIHdpdGhvdXQgd3JpdGluZyBGUklFTkRcX1RFU1QoKXM/ICMj
CisKK1dlIGZpbmQgcHJpdmF0ZSBzdGF0aWMgbWV0aG9kcyBjbHV0dGVyIHRoZSBoZWFkZXIgZmls
ZS4gIFRoZXkgYXJlCitpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGFuZCBpZGVhbGx5IHNob3VsZCBi
ZSBrZXB0IG91dCBvZiBhIC5oLiBTbyBvZnRlbiBJIG1ha2UKK3RoZW0gZnJlZSBmdW5jdGlvbnMg
aW5zdGVhZC4KKworSW5zdGVhZCBvZjoKK2BgYAorLy8gZm9vLmgKK2NsYXNzIEZvbyB7CisgIC4u
LgorIHByaXZhdGU6CisgIHN0YXRpYyBib29sIEZ1bmMoaW50IG4pOworfTsKKworLy8gZm9vLmNj
Citib29sIEZvbzo6RnVuYyhpbnQgbikgeyAuLi4gfQorCisvLyBmb29fdGVzdC5jYworRVhQRUNU
X1RSVUUoRm9vOjpGdW5jKDEyMzQ1KSk7CitgYGAKKworWW91IHByb2JhYmx5IHNob3VsZCBiZXR0
ZXIgd3JpdGU6CitgYGAKKy8vIGZvby5oCitjbGFzcyBGb28geworICAuLi4KK307CisKKy8vIGZv
by5jYworbmFtZXNwYWNlIGludGVybmFsIHsKKyAgYm9vbCBGdW5jKGludCBuKSB7IC4uLiB9Cit9
CisKKy8vIGZvb190ZXN0LmNjCituYW1lc3BhY2UgaW50ZXJuYWwgeworICBib29sIEZ1bmMoaW50
IG4pOworfQorCitFWFBFQ1RfVFJVRShpbnRlcm5hbDo6RnVuYygxMjM0NSkpOworYGBgCisKKyMj
IEkgd291bGQgbGlrZSB0byBydW4gYSB0ZXN0IHNldmVyYWwgdGltZXMgd2l0aCBkaWZmZXJlbnQg
cGFyYW1ldGVycy4gRG8gSSBuZWVkIHRvIHdyaXRlIHNldmVyYWwgc2ltaWxhciBjb3BpZXMgb2Yg
aXQ/ICMjCisKK05vLiBZb3UgY2FuIHVzZSBhIGZlYXR1cmUgY2FsbGVkIFt2YWx1ZS1wYXJhbWV0
ZXJpemVkIHRlc3RzXShWMV83X0FkdmFuY2VkR3VpZGUubWQjVmFsdWVfUGFyYW1ldGVyaXplZF9U
ZXN0cykgd2hpY2gKK2xldHMgeW91IHJlcGVhdCB5b3VyIHRlc3RzIHdpdGggZGlmZmVyZW50IHBh
cmFtZXRlcnMsIHdpdGhvdXQgZGVmaW5pbmcgaXQgbW9yZSB0aGFuIG9uY2UuCisKKyMjIEhvdyBk
byBJIHRlc3QgYSBmaWxlIHRoYXQgZGVmaW5lcyBtYWluKCk/ICMjCisKK1RvIHRlc3QgYSBgZm9v
LmNjYCBmaWxlLCB5b3UgbmVlZCB0byBjb21waWxlIGFuZCBsaW5rIGl0IGludG8geW91ciB1bml0
IHRlc3QKK3Byb2dyYW0uIEhvd2V2ZXIsIHdoZW4gdGhlIGZpbGUgY29udGFpbnMgYSBkZWZpbml0
aW9uIGZvciB0aGUgYG1haW4oKWAKK2Z1bmN0aW9uLCBpdCB3aWxsIGNsYXNoIHdpdGggdGhlIGBt
YWluKClgIG9mIHlvdXIgdW5pdCB0ZXN0LCBhbmQgd2lsbCByZXN1bHQgaW4KK2EgYnVpbGQgZXJy
b3IuCisKK1RoZSByaWdodCBzb2x1dGlvbiBpcyB0byBzcGxpdCBpdCBpbnRvIHRocmVlIGZpbGVz
OgorICAxLiBgZm9vLmhgIHdoaWNoIGNvbnRhaW5zIHRoZSBkZWNsYXJhdGlvbnMsCisgIDEuIGBm
b28uY2NgIHdoaWNoIGNvbnRhaW5zIHRoZSBkZWZpbml0aW9ucyBleGNlcHQgYG1haW4oKWAsIGFu
ZAorICAxLiBgZm9vX21haW4uY2NgIHdoaWNoIGNvbnRhaW5zIG5vdGhpbmcgYnV0IHRoZSBkZWZp
bml0aW9uIG9mIGBtYWluKClgLgorCitUaGVuIGBmb28uY2NgIGNhbiBiZSBlYXNpbHkgdGVzdGVk
LgorCitJZiB5b3UgYXJlIGFkZGluZyB0ZXN0cyB0byBhbiBleGlzdGluZyBmaWxlIGFuZCBkb24n
dCB3YW50IGFuIGludHJ1c2l2ZSBjaGFuZ2UKK2xpa2UgdGhpcywgdGhlcmUgaXMgYSBoYWNrOiBq
dXN0IGluY2x1ZGUgdGhlIGVudGlyZSBgZm9vLmNjYCBmaWxlIGluIHlvdXIgdW5pdAordGVzdC4g
Rm9yIGV4YW1wbGU6CitgYGAKKy8vIEZpbGUgZm9vX3VuaXR0ZXN0LmNjCisKKy8vIFRoZSBoZWFk
ZXJzIHNlY3Rpb24KKy4uLgorCisvLyBSZW5hbWVzIG1haW4oKSBpbiBmb28uY2MgdG8gbWFrZSBy
b29tIGZvciB0aGUgdW5pdCB0ZXN0IG1haW4oKQorI2RlZmluZSBtYWluIEZvb01haW4KKworI2lu
Y2x1ZGUgImEvYi9mb28uY2MiCisKKy8vIFRoZSB0ZXN0cyBzdGFydCBoZXJlLgorLi4uCitgYGAK
KworCitIb3dldmVyLCBwbGVhc2UgcmVtZW1iZXIgdGhpcyBpcyBhIGhhY2sgYW5kIHNob3VsZCBv
bmx5IGJlIHVzZWQgYXMgdGhlIGxhc3QKK3Jlc29ydC4KKworIyMgV2hhdCBjYW4gdGhlIHN0YXRl
bWVudCBhcmd1bWVudCBpbiBBU1NFUlRcX0RFQVRIKCkgYmU/ICMjCisKK2BBU1NFUlRfREVBVEgo
X3N0YXRlbWVudF8sIF9yZWdleF8pYCAob3IgYW55IGRlYXRoIGFzc2VydGlvbiBtYWNybykgY2Fu
IGJlIHVzZWQKK3doZXJldmVyIGBfc3RhdGVtZW50X2AgaXMgdmFsaWQuIFNvIGJhc2ljYWxseSBg
X3N0YXRlbWVudF9gIGNhbiBiZSBhbnkgQysrCitzdGF0ZW1lbnQgdGhhdCBtYWtlcyBzZW5zZSBp
biB0aGUgY3VycmVudCBjb250ZXh0LiBJbiBwYXJ0aWN1bGFyLCBpdCBjYW4KK3JlZmVyZW5jZSBn
bG9iYWwgYW5kL29yIGxvY2FsIHZhcmlhYmxlcywgYW5kIGNhbiBiZToKKyAgKiBhIHNpbXBsZSBm
dW5jdGlvbiBjYWxsIChvZnRlbiB0aGUgY2FzZSksCisgICogYSBjb21wbGV4IGV4cHJlc3Npb24s
IG9yCisgICogYSBjb21wb3VuZCBzdGF0ZW1lbnQuCisKKz4gU29tZSBleGFtcGxlcyBhcmUgc2hv
d24gaGVyZToKKworYGBgCisvLyBBIGRlYXRoIHRlc3QgY2FuIGJlIGEgc2ltcGxlIGZ1bmN0aW9u
IGNhbGwuCitURVNUKE15RGVhdGhUZXN0LCBGdW5jdGlvbkNhbGwpIHsKKyAgQVNTRVJUX0RFQVRI
KFh5eig1KSwgIlh5eiBmYWlsZWQiKTsKK30KKworLy8gT3IgYSBjb21wbGV4IGV4cHJlc3Npb24g
dGhhdCByZWZlcmVuY2VzIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zLgorVEVTVChNeURlYXRoVGVz
dCwgQ29tcGxleEV4cHJlc3Npb24pIHsKKyAgY29uc3QgYm9vbCBjID0gQ29uZGl0aW9uKCk7Cisg
IEFTU0VSVF9ERUFUSCgoYyA/IEZ1bmMxKDApIDogb2JqZWN0Mi5NZXRob2QoInRlc3QiKSksCisg
ICAgICAgICAgICAgICAiKEZ1bmMxfE1ldGhvZCkgZmFpbGVkIik7Cit9CisKKy8vIERlYXRoIGFz
c2VydGlvbnMgY2FuIGJlIHVzZWQgYW55IHdoZXJlIGluIGEgZnVuY3Rpb24uIEluCisvLyBwYXJ0
aWN1bGFyLCB0aGV5IGNhbiBiZSBpbnNpZGUgYSBsb29wLgorVEVTVChNeURlYXRoVGVzdCwgSW5z
aWRlTG9vcCkgeworICAvLyBWZXJpZmllcyB0aGF0IEZvbygwKSwgRm9vKDEpLCAuLi4sIGFuZCBG
b28oNCkgYWxsIGRpZS4KKyAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBpKyspIHsKKyAgICBFWFBF
Q1RfREVBVEhfTShGb28oaSksICJGb28gaGFzIFxcZCsgZXJyb3JzIiwKKyAgICAgICAgICAgICAg
ICAgICA6OnRlc3Rpbmc6Ok1lc3NhZ2UoKSA8PCAid2hlcmUgaSBpcyAiIDw8IGkpOworICB9Cit9
CisKKy8vIEEgZGVhdGggYXNzZXJ0aW9uIGNhbiBjb250YWluIGEgY29tcG91bmQgc3RhdGVtZW50
LgorVEVTVChNeURlYXRoVGVzdCwgQ29tcG91bmRTdGF0ZW1lbnQpIHsKKyAgLy8gVmVyaWZpZXMg
dGhhdCBhdCBsZWFzZSBvbmUgb2YgQmFyKDApLCBCYXIoMSksIC4uLiwgYW5kCisgIC8vIEJhcig0
KSBkaWVzLgorICBBU1NFUlRfREVBVEgoeworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgaSsr
KSB7CisgICAgICBCYXIoaSk7CisgICAgfQorICB9LAorICAiQmFyIGhhcyBcXGQrIGVycm9ycyIp
O30KK2BgYAorCitgZ29vZ2xldGVzdF91bml0dGVzdC5jY2AgY29udGFpbnMgbW9yZSBleGFtcGxl
cyBpZiB5b3UgYXJlIGludGVyZXN0ZWQuCisKKyMjIFdoYXQgc3ludGF4IGRvZXMgdGhlIHJlZ3Vs
YXIgZXhwcmVzc2lvbiBpbiBBU1NFUlRcX0RFQVRIIHVzZT8gIyMKKworT24gUE9TSVggc3lzdGVt
cywgR29vZ2xlIFRlc3QgdXNlcyB0aGUgUE9TSVggRXh0ZW5kZWQgcmVndWxhcgorZXhwcmVzc2lv
biBzeW50YXgKKyhodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JlZ3VsYXJfZXhwcmVzc2lv
biNQT1NJWF9FeHRlbmRlZF9SZWd1bGFyX0V4cHJlc3Npb25zKS4KK09uIFdpbmRvd3MsIGl0IHVz
ZXMgYSBsaW1pdGVkIHZhcmlhbnQgb2YgcmVndWxhciBleHByZXNzaW9uCitzeW50YXguIEZvciBt
b3JlIGRldGFpbHMsIHNlZSB0aGUKK1tyZWd1bGFyIGV4cHJlc3Npb24gc3ludGF4XShWMV83X0Fk
dmFuY2VkR3VpZGUubWQjUmVndWxhcl9FeHByZXNzaW9uX1N5bnRheCkuCisKKyMjIEkgaGF2ZSBh
IGZpeHR1cmUgY2xhc3MgRm9vLCBidXQgVEVTVFxfRihGb28sIEJhcikgZ2l2ZXMgbWUgZXJyb3Ig
Im5vIG1hdGNoaW5nIGZ1bmN0aW9uIGZvciBjYWxsIHRvIEZvbzo6Rm9vKCkiLiBXaHk/ICMjCisK
K0dvb2dsZSBUZXN0IG5lZWRzIHRvIGJlIGFibGUgdG8gY3JlYXRlIG9iamVjdHMgb2YgeW91ciB0
ZXN0IGZpeHR1cmUgY2xhc3MsIHNvCitpdCBtdXN0IGhhdmUgYSBkZWZhdWx0IGNvbnN0cnVjdG9y
LiBOb3JtYWxseSB0aGUgY29tcGlsZXIgd2lsbCBkZWZpbmUgb25lIGZvcgoreW91LiBIb3dldmVy
LCB0aGVyZSBhcmUgY2FzZXMgd2hlcmUgeW91IGhhdmUgdG8gZGVmaW5lIHlvdXIgb3duOgorICAq
IElmIHlvdSBleHBsaWNpdGx5IGRlY2xhcmUgYSBub24tZGVmYXVsdCBjb25zdHJ1Y3RvciBmb3Ig
Y2xhc3MgYEZvb2AsIHRoZW4geW91IG5lZWQgdG8gZGVmaW5lIGEgZGVmYXVsdCBjb25zdHJ1Y3Rv
ciwgZXZlbiBpZiBpdCB3b3VsZCBiZSBlbXB0eS4KKyAgKiBJZiBgRm9vYCBoYXMgYSBjb25zdCBu
b24tc3RhdGljIGRhdGEgbWVtYmVyLCB0aGVuIHlvdSBoYXZlIHRvIGRlZmluZSB0aGUgZGVmYXVs
dCBjb25zdHJ1Y3RvciBfYW5kXyBpbml0aWFsaXplIHRoZSBjb25zdCBtZW1iZXIgaW4gdGhlIGlu
aXRpYWxpemVyIGxpc3Qgb2YgdGhlIGNvbnN0cnVjdG9yLiAoRWFybHkgdmVyc2lvbnMgb2YgYGdj
Y2AgZG9lc24ndCBmb3JjZSB5b3UgdG8gaW5pdGlhbGl6ZSB0aGUgY29uc3QgbWVtYmVyLiBJdCdz
IGEgYnVnIHRoYXQgaGFzIGJlZW4gZml4ZWQgaW4gYGdjYyA0YC4pCisKKyMjIFdoeSBkb2VzIEFT
U0VSVFxfREVBVEggY29tcGxhaW4gYWJvdXQgcHJldmlvdXMgdGhyZWFkcyB0aGF0IHdlcmUgYWxy
ZWFkeSBqb2luZWQ/ICMjCisKK1dpdGggdGhlIExpbnV4IHB0aHJlYWQgbGlicmFyeSwgdGhlcmUg
aXMgbm8gdHVybmluZyBiYWNrIG9uY2UgeW91IGNyb3NzIHRoZQorbGluZSBmcm9tIHNpbmdsZSB0
aHJlYWQgdG8gbXVsdGlwbGUgdGhyZWFkcy4gVGhlIGZpcnN0IHRpbWUgeW91IGNyZWF0ZSBhCit0
aHJlYWQsIGEgbWFuYWdlciB0aHJlYWQgaXMgY3JlYXRlZCBpbiBhZGRpdGlvbiwgc28geW91IGdl
dCAzLCBub3QgMiwgdGhyZWFkcy4KK0xhdGVyIHdoZW4gdGhlIHRocmVhZCB5b3UgY3JlYXRlIGpv
aW5zIHRoZSBtYWluIHRocmVhZCwgdGhlIHRocmVhZCBjb3VudAorZGVjcmVtZW50cyBieSAxLCBi
dXQgdGhlIG1hbmFnZXIgdGhyZWFkIHdpbGwgbmV2ZXIgYmUga2lsbGVkLCBzbyB5b3Ugc3RpbGwg
aGF2ZQorMiB0aHJlYWRzLCB3aGljaCBtZWFucyB5b3UgY2Fubm90IHNhZmVseSBydW4gYSBkZWF0
aCB0ZXN0LgorCitUaGUgbmV3IE5QVEwgdGhyZWFkIGxpYnJhcnkgZG9lc24ndCBzdWZmZXIgZnJv
bSB0aGlzIHByb2JsZW0sIGFzIGl0IGRvZXNuJ3QKK2NyZWF0ZSBhIG1hbmFnZXIgdGhyZWFkLiBI
b3dldmVyLCBpZiB5b3UgZG9uJ3QgY29udHJvbCB3aGljaCBtYWNoaW5lIHlvdXIgdGVzdAorcnVu
cyBvbiwgeW91IHNob3VsZG4ndCBkZXBlbmQgb24gdGhpcy4KKworIyMgV2h5IGRvZXMgR29vZ2xl
IFRlc3QgcmVxdWlyZSB0aGUgZW50aXJlIHRlc3QgY2FzZSwgaW5zdGVhZCBvZiBpbmRpdmlkdWFs
IHRlc3RzLCB0byBiZSBuYW1lZCBGT09EZWF0aFRlc3Qgd2hlbiBpdCB1c2VzIEFTU0VSVFxfREVB
VEg/ICMjCisKK0dvb2dsZSBUZXN0IGRvZXMgbm90IGludGVybGVhdmUgdGVzdHMgZnJvbSBkaWZm
ZXJlbnQgdGVzdCBjYXNlcy4gVGhhdCBpcywgaXQKK3J1bnMgYWxsIHRlc3RzIGluIG9uZSB0ZXN0
IGNhc2UgZmlyc3QsIGFuZCB0aGVuIHJ1bnMgYWxsIHRlc3RzIGluIHRoZSBuZXh0IHRlc3QKK2Nh
c2UsIGFuZCBzbyBvbi4gR29vZ2xlIFRlc3QgZG9lcyB0aGlzIGJlY2F1c2UgaXQgbmVlZHMgdG8g
c2V0IHVwIGEgdGVzdCBjYXNlCitiZWZvcmUgdGhlIGZpcnN0IHRlc3QgaW4gaXQgaXMgcnVuLCBh
bmQgdGVhciBpdCBkb3duIGFmdGVyd29yZHMuIFNwbGl0dGluZyB1cAordGhlIHRlc3QgY2FzZSB3
b3VsZCByZXF1aXJlIG11bHRpcGxlIHNldC11cCBhbmQgdGVhci1kb3duIHByb2Nlc3Nlcywgd2hp
Y2ggaXMKK2luZWZmaWNpZW50IGFuZCBtYWtlcyB0aGUgc2VtYW50aWNzIHVuY2xlYW4uCisKK0lm
IHdlIHdlcmUgdG8gZGV0ZXJtaW5lIHRoZSBvcmRlciBvZiB0ZXN0cyBiYXNlZCBvbiB0ZXN0IG5h
bWUgaW5zdGVhZCBvZiB0ZXN0CitjYXNlIG5hbWUsIHRoZW4gd2Ugd291bGQgaGF2ZSBhIHByb2Js
ZW0gd2l0aCB0aGUgZm9sbG93aW5nIHNpdHVhdGlvbjoKKworYGBgCitURVNUX0YoRm9vVGVzdCwg
QWJjRGVhdGhUZXN0KSB7IC4uLiB9CitURVNUX0YoRm9vVGVzdCwgVXZ3KSB7IC4uLiB9CisKK1RF
U1RfRihCYXJUZXN0LCBEZWZEZWF0aFRlc3QpIHsgLi4uIH0KK1RFU1RfRihCYXJUZXN0LCBYeXop
IHsgLi4uIH0KK2BgYAorCitTaW5jZSBgRm9vVGVzdC5BYmNEZWF0aFRlc3RgIG5lZWRzIHRvIHJ1
biBiZWZvcmUgYEJhclRlc3QuWHl6YCwgYW5kIHdlIGRvbid0CitpbnRlcmxlYXZlIHRlc3RzIGZy
b20gZGlmZmVyZW50IHRlc3QgY2FzZXMsIHdlIG5lZWQgdG8gcnVuIGFsbCB0ZXN0cyBpbiB0aGUK
K2BGb29UZXN0YCBjYXNlIGJlZm9yZSBydW5uaW5nIGFueSB0ZXN0IGluIHRoZSBgQmFyVGVzdGAg
Y2FzZS4gVGhpcyBjb250cmFkaWN0cword2l0aCB0aGUgcmVxdWlyZW1lbnQgdG8gcnVuIGBCYXJU
ZXN0LkRlZkRlYXRoVGVzdGAgYmVmb3JlIGBGb29UZXN0LlV2d2AuCisKKyMjIEJ1dCBJIGRvbid0
IGxpa2UgY2FsbGluZyBteSBlbnRpcmUgdGVzdCBjYXNlIEZPT0RlYXRoVGVzdCB3aGVuIGl0IGNv
bnRhaW5zIGJvdGggZGVhdGggdGVzdHMgYW5kIG5vbi1kZWF0aCB0ZXN0cy4gV2hhdCBkbyBJIGRv
PyAjIworCitZb3UgZG9uJ3QgaGF2ZSB0bywgYnV0IGlmIHlvdSBsaWtlLCB5b3UgbWF5IHNwbGl0
IHVwIHRoZSB0ZXN0IGNhc2UgaW50bworYEZvb1Rlc3RgIGFuZCBgRm9vRGVhdGhUZXN0YCwgd2hl
cmUgdGhlIG5hbWVzIG1ha2UgaXQgY2xlYXIgdGhhdCB0aGV5IGFyZQorcmVsYXRlZDoKKworYGBg
CitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7IC4uLiB9OworCitURVNU
X0YoRm9vVGVzdCwgQWJjKSB7IC4uLiB9CitURVNUX0YoRm9vVGVzdCwgRGVmKSB7IC4uLiB9CisK
K3R5cGVkZWYgRm9vVGVzdCBGb29EZWF0aFRlc3Q7CisKK1RFU1RfRihGb29EZWF0aFRlc3QsIFV2
dykgeyAuLi4gRVhQRUNUX0RFQVRIKC4uLikgLi4uIH0KK1RFU1RfRihGb29EZWF0aFRlc3QsIFh5
eikgeyAuLi4gQVNTRVJUX0RFQVRIKC4uLikgLi4uIH0KK2BgYAorCisjIyBUaGUgY29tcGlsZXIg
Y29tcGxhaW5zIGFib3V0ICJubyBtYXRjaCBmb3IgJ29wZXJhdG9yPDwnIiB3aGVuIEkgdXNlIGFu
IGFzc2VydGlvbi4gV2hhdCBnaXZlcz8gIyMKKworSWYgeW91IHVzZSBhIHVzZXItZGVmaW5lZCB0
eXBlIGBGb29UeXBlYCBpbiBhbiBhc3NlcnRpb24sIHlvdSBtdXN0IG1ha2Ugc3VyZQordGhlcmUg
aXMgYW4gYHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mLCBjb25zdCBGb29U
eXBlJilgIGZ1bmN0aW9uCitkZWZpbmVkIHN1Y2ggdGhhdCB3ZSBjYW4gcHJpbnQgYSB2YWx1ZSBv
ZiBgRm9vVHlwZWAuCisKK0luIGFkZGl0aW9uLCBpZiBgRm9vVHlwZWAgaXMgZGVjbGFyZWQgaW4g
YSBuYW1lIHNwYWNlLCB0aGUgYDw8YCBvcGVyYXRvciBhbHNvCituZWVkcyB0byBiZSBkZWZpbmVk
IGluIHRoZSBfc2FtZV8gbmFtZSBzcGFjZS4KKworIyMgSG93IGRvIEkgc3VwcHJlc3MgdGhlIG1l
bW9yeSBsZWFrIG1lc3NhZ2VzIG9uIFdpbmRvd3M/ICMjCisKK1NpbmNlIHRoZSBzdGF0aWNhbGx5
IGluaXRpYWxpemVkIEdvb2dsZSBUZXN0IHNpbmdsZXRvbiByZXF1aXJlcyBhbGxvY2F0aW9ucyBv
bgordGhlIGhlYXAsIHRoZSBWaXN1YWwgQysrIG1lbW9yeSBsZWFrIGRldGVjdG9yIHdpbGwgcmVw
b3J0IG1lbW9yeSBsZWFrcyBhdCB0aGUKK2VuZCBvZiB0aGUgcHJvZ3JhbSBydW4uIFRoZSBlYXNp
ZXN0IHdheSB0byBhdm9pZCB0aGlzIGlzIHRvIHVzZSB0aGUKK2BfQ3J0TWVtQ2hlY2twb2ludGAg
YW5kIGBfQ3J0TWVtRHVtcEFsbE9iamVjdHNTaW5jZWAgY2FsbHMgdG8gbm90IHJlcG9ydCBhbnkK
K3N0YXRpY2FsbHkgaW5pdGlhbGl6ZWQgaGVhcCBvYmplY3RzLiBTZWUgTVNETiBmb3IgbW9yZSBk
ZXRhaWxzIGFuZCBhZGRpdGlvbmFsCitoZWFwIGNoZWNrL2RlYnVnIHJvdXRpbmVzLgorCisjIyBJ
IGFtIGJ1aWxkaW5nIG15IHByb2plY3Qgd2l0aCBHb29nbGUgVGVzdCBpbiBWaXN1YWwgU3R1ZGlv
IGFuZCBhbGwgSSdtIGdldHRpbmcgaXMgYSBidW5jaCBvZiBsaW5rZXIgZXJyb3JzIChvciB3YXJu
aW5ncykuIEhlbHAhICMjCisKK1lvdSBtYXkgZ2V0IGEgbnVtYmVyIG9mIHRoZSBmb2xsb3dpbmcg
bGlua2VyIGVycm9yIG9yIHdhcm5pbmdzIGlmIHlvdQorYXR0ZW1wdCB0byBsaW5rIHlvdXIgdGVz
dCBwcm9qZWN0IHdpdGggdGhlIEdvb2dsZSBUZXN0IGxpYnJhcnkgd2hlbgoreW91ciBwcm9qZWN0
IGFuZCB0aGUgYXJlIG5vdCBidWlsdCB1c2luZyB0aGUgc2FtZSBjb21waWxlciBzZXR0aW5ncy4K
KworICAqIExOSzIwMDU6IHN5bWJvbCBhbHJlYWR5IGRlZmluZWQgaW4gb2JqZWN0CisgICogTE5L
NDIxNzogbG9jYWxseSBkZWZpbmVkIHN5bWJvbCAnc3ltYm9sJyBpbXBvcnRlZCBpbiBmdW5jdGlv
biAnZnVuY3Rpb24nCisgICogTE5LNDA0OTogbG9jYWxseSBkZWZpbmVkIHN5bWJvbCAnc3ltYm9s
JyBpbXBvcnRlZAorCitUaGUgR29vZ2xlIFRlc3QgcHJvamVjdCAoZ3Rlc3QudmNwcm9qKSBoYXMg
dGhlIFJ1bnRpbWUgTGlicmFyeSBvcHRpb24KK3NldCB0byAvTVQgKHVzZSBtdWx0aS10aHJlYWRl
ZCBzdGF0aWMgbGlicmFyaWVzLCAvTVRkIGZvciBkZWJ1ZykuIElmCit5b3VyIHByb2plY3QgdXNl
cyBzb21ldGhpbmcgZWxzZSwgZm9yIGV4YW1wbGUgL01EICh1c2UgbXVsdGktdGhyZWFkZWQKK0RM
THMsIC9NRGQgZm9yIGRlYnVnKSwgeW91IG5lZWQgdG8gY2hhbmdlIHRoZSBzZXR0aW5nIGluIHRo
ZSBHb29nbGUKK1Rlc3QgcHJvamVjdCB0byBtYXRjaCB5b3VyIHByb2plY3Qncy4KKworVG8gdXBk
YXRlIHRoaXMgc2V0dGluZyBvcGVuIHRoZSBwcm9qZWN0IHByb3BlcnRpZXMgaW4gdGhlIFZpc3Vh
bAorU3R1ZGlvIElERSB0aGVuIHNlbGVjdCB0aGUgYnJhbmNoIENvbmZpZ3VyYXRpb24gUHJvcGVy
dGllcyB8IEMvQysrIHwKK0NvZGUgR2VuZXJhdGlvbiBhbmQgY2hhbmdlIHRoZSBvcHRpb24gIlJ1
bnRpbWUgTGlicmFyeSIuICBZb3UgbWF5IGFsc28gdHJ5Cit1c2luZyBndGVzdC1tZC52Y3Byb2og
aW5zdGVhZCBvZiBndGVzdC52Y3Byb2ouCisKKyMjIEkgcHV0IG15IHRlc3RzIGluIGEgbGlicmFy
eSBhbmQgR29vZ2xlIFRlc3QgZG9lc24ndCBydW4gdGhlbS4gV2hhdCdzIGhhcHBlbmluZz8gIyMK
K0hhdmUgeW91IHJlYWQgYQorW3dhcm5pbmddKFYxXzdfUHJpbWVyLm1kI2ltcG9ydGFudC1ub3Rl
LWZvci12aXN1YWwtYy11c2Vycykgb24KK3RoZSBHb29nbGUgVGVzdCBQcmltZXIgcGFnZT8KKwor
IyMgSSB3YW50IHRvIHVzZSBHb29nbGUgVGVzdCB3aXRoIFZpc3VhbCBTdHVkaW8gYnV0IGRvbid0
IGtub3cgd2hlcmUgdG8gc3RhcnQuICMjCitNYW55IHBlb3BsZSBhcmUgaW4geW91ciBwb3NpdGlv
biBhbmQgb25lIG9mIHRoZSBwb3N0ZWQgaGlzIHNvbHV0aW9uIHRvCitvdXIgbWFpbGluZyBsaXN0
LiBIZXJlIGlzIGhpcyBsaW5rOgoraHR0cDovL2hhc3NhbmphbWlsYWhtYWQuYmxvZ3Nwb3QuY29t
LzIwMDkvMDcvZ3Rlc3Qtc3RhcnRlcnMtaGVscC5odG1sLgorCisjIyBJIGFtIHNlZWluZyBjb21w
aWxlIGVycm9ycyBtZW50aW9uaW5nIHN0ZDo6dHlwZVxfdHJhaXRzIHdoZW4gSSB0cnkgdG8gdXNl
IEdvb2dsZSBUZXN0IG9uIFNvbGFyaXMuICMjCitHb29nbGUgVGVzdCB1c2VzIHBhcnRzIG9mIHRo
ZSBzdGFuZGFyZCBDKysgbGlicmFyeSB0aGF0IFN1blN0dWRpbyBkb2VzIG5vdCBzdXBwb3J0Lgor
T3VyIHVzZXJzIHJlcG9ydGVkIHN1Y2Nlc3MgdXNpbmcgYWx0ZXJuYXRpdmUgaW1wbGVtZW50YXRp
b25zLiBUcnkgcnVubmluZyB0aGUgYnVpbGQgYWZ0ZXIgcnVuaW5nIHRoaXMgY29tbWFkOgorCitg
ZXhwb3J0IENDPWNjIENYWD1DQyBDWFhGTEFHUz0nLWxpYnJhcnk9c3RscG9ydDQnYAorCisjIyBI
b3cgY2FuIG15IGNvZGUgZGV0ZWN0IGlmIGl0IGlzIHJ1bm5pbmcgaW4gYSB0ZXN0PyAjIworCitJ
ZiB5b3Ugd3JpdGUgY29kZSB0aGF0IHNuaWZmcyB3aGV0aGVyIGl0J3MgcnVubmluZyBpbiBhIHRl
c3QgYW5kIGRvZXMKK2RpZmZlcmVudCB0aGluZ3MgYWNjb3JkaW5nbHksIHlvdSBhcmUgbGVha2lu
ZyB0ZXN0LW9ubHkgbG9naWMgaW50bworcHJvZHVjdGlvbiBjb2RlIGFuZCB0aGVyZSBpcyBubyBl
YXN5IHdheSB0byBlbnN1cmUgdGhhdCB0aGUgdGVzdC1vbmx5Citjb2RlIHBhdGhzIGFyZW4ndCBy
dW4gYnkgbWlzdGFrZSBpbiBwcm9kdWN0aW9uLiAgU3VjaCBjbGV2ZXJuZXNzIGFsc28KK2xlYWRz
IHRvCitbSGVpc2VuYnVnc10oaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9VbnVzdWFsX3Nv
ZnR3YXJlX2J1ZyNIZWlzZW5idWcpLgorVGhlcmVmb3JlIHdlIHN0cm9uZ2x5IGFkdmlzZSBhZ2Fp
bnN0IHRoZSBwcmFjdGljZSwgYW5kIEdvb2dsZSBUZXN0IGRvZXNuJ3QKK3Byb3ZpZGUgYSB3YXkg
dG8gZG8gaXQuCisKK0luIGdlbmVyYWwsIHRoZSByZWNvbW1lbmRlZCB3YXkgdG8gY2F1c2UgdGhl
IGNvZGUgdG8gYmVoYXZlCitkaWZmZXJlbnRseSB1bmRlciB0ZXN0IGlzIFtkZXBlbmRlbmN5IGlu
amVjdGlvbl0oaHR0cDovL2phbWVzc2hvcmUuY29tL0Jsb2cvRGVwZW5kZW5jeS1JbmplY3Rpb24t
RGVteXN0aWZpZWQuaHRtbCkuCitZb3UgY2FuIGluamVjdCBkaWZmZXJlbnQgZnVuY3Rpb25hbGl0
eSBmcm9tIHRoZSB0ZXN0IGFuZCBmcm9tIHRoZQorcHJvZHVjdGlvbiBjb2RlLiAgU2luY2UgeW91
ciBwcm9kdWN0aW9uIGNvZGUgZG9lc24ndCBsaW5rIGluIHRoZQorZm9yLXRlc3QgbG9naWMgYXQg
YWxsLCB0aGVyZSBpcyBubyBkYW5nZXIgaW4gYWNjaWRlbnRhbGx5IHJ1bm5pbmcgaXQuCisKK0hv
d2V2ZXIsIGlmIHlvdSBfcmVhbGx5XywgX3JlYWxseV8sIF9yZWFsbHlfIGhhdmUgbm8gY2hvaWNl
LCBhbmQgaWYKK3lvdSBmb2xsb3cgdGhlIHJ1bGUgb2YgZW5kaW5nIHlvdXIgdGVzdCBwcm9ncmFt
IG5hbWVzIHdpdGggYF90ZXN0YCwKK3lvdSBjYW4gdXNlIHRoZSBfaG9ycmlibGVfIGhhY2sgb2Yg
c25pZmZpbmcgeW91ciBleGVjdXRhYmxlIG5hbWUKKyhgYXJndlswXWAgaW4gYG1haW4oKWApIHRv
IGtub3cgd2hldGhlciB0aGUgY29kZSBpcyB1bmRlciB0ZXN0LgorCisjIyBHb29nbGUgVGVzdCBk
ZWZpbmVzIGEgbWFjcm8gdGhhdCBjbGFzaGVzIHdpdGggb25lIGRlZmluZWQgYnkgYW5vdGhlciBs
aWJyYXJ5LiBIb3cgZG8gSSBkZWFsIHdpdGggdGhhdD8gIyMKKworSW4gQysrLCBtYWNyb3MgZG9u
J3Qgb2JleSBuYW1lc3BhY2VzLiAgVGhlcmVmb3JlIHR3byBsaWJyYXJpZXMgdGhhdAorYm90aCBk
ZWZpbmUgYSBtYWNybyBvZiB0aGUgc2FtZSBuYW1lIHdpbGwgY2xhc2ggaWYgeW91IGAjaW5jbHVk
ZWAgYm90aAorZGVmaW5pdGlvbnMuICBJbiBjYXNlIGEgR29vZ2xlIFRlc3QgbWFjcm8gY2xhc2hl
cyB3aXRoIGFub3RoZXIKK2xpYnJhcnksIHlvdSBjYW4gZm9yY2UgR29vZ2xlIFRlc3QgdG8gcmVu
YW1lIGl0cyBtYWNybyB0byBhdm9pZCB0aGUKK2NvbmZsaWN0LgorCitTcGVjaWZpY2FsbHksIGlm
IGJvdGggR29vZ2xlIFRlc3QgYW5kIHNvbWUgb3RoZXIgY29kZSBkZWZpbmUgbWFjcm8KK2BGT09g
LCB5b3UgY2FuIGFkZAorYGBgCisgIC1ER1RFU1RfRE9OVF9ERUZJTkVfRk9PPTEKK2BgYAordG8g
dGhlIGNvbXBpbGVyIGZsYWdzIHRvIHRlbGwgR29vZ2xlIFRlc3QgdG8gY2hhbmdlIHRoZSBtYWNy
bydzIG5hbWUKK2Zyb20gYEZPT2AgdG8gYEdURVNUX0ZPT2AuIEZvciBleGFtcGxlLCB3aXRoIGAt
REdURVNUX0RPTlRfREVGSU5FX1RFU1Q9MWAsIHlvdSdsbCBuZWVkIHRvIHdyaXRlCitgYGAKKyAg
R1RFU1RfVEVTVChTb21lVGVzdCwgRG9lc1RoaXMpIHsgLi4uIH0KK2BgYAoraW5zdGVhZCBvZgor
YGBgCisgIFRFU1QoU29tZVRlc3QsIERvZXNUaGlzKSB7IC4uLiB9CitgYGAKK2luIG9yZGVyIHRv
IGRlZmluZSBhIHRlc3QuCisKK0N1cnJlbnRseSwgdGhlIGZvbGxvd2luZyBgVEVTVGAsIGBGQUlM
YCwgYFNVQ0NFRURgLCBhbmQgdGhlIGJhc2ljIGNvbXBhcmlzb24gYXNzZXJ0aW9uIG1hY3JvcyBj
YW4gaGF2ZSBhbHRlcm5hdGl2ZSBuYW1lcy4gWW91IGNhbiBzZWUgdGhlIGZ1bGwgbGlzdCBvZiBj
b3ZlcmVkIG1hY3JvcyBbaGVyZV0oaHR0cDovL3d3dy5nb29nbGUuY29tL2NvZGVzZWFyY2g/cT1p
ZishR1RFU1RfRE9OVF9ERUZJTkVfXHclMkIrcGFja2FnZTpodHRwOi8vZ29vZ2xldGVzdFwuZ29v
Z2xlY29kZVwuY29tK2ZpbGU6L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCkuIE1vcmUgaW5mb3JtYXRp
b24gY2FuIGJlIGZvdW5kIGluIHRoZSAiQXZvaWRpbmcgTWFjcm8gTmFtZSBDbGFzaGVzIiBzZWN0
aW9uIG9mIHRoZSBSRUFETUUgZmlsZS4KKworCisjIyBJcyBpdCBPSyBpZiBJIGhhdmUgdHdvIHNl
cGFyYXRlIGBURVNUKEZvbywgQmFyKWAgdGVzdCBtZXRob2RzIGRlZmluZWQgaW4gZGlmZmVyZW50
IG5hbWVzcGFjZXM/ICMjCisKK1llcy4KKworVGhlIHJ1bGUgaXMgKiphbGwgdGVzdCBtZXRob2Rz
IGluIHRoZSBzYW1lIHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSBmaXh0dXJlIGNsYXNzKiou
IFRoaXMgbWVhbnMgdGhhdCB0aGUgZm9sbG93aW5nIGlzICoqYWxsb3dlZCoqIGJlY2F1c2UgYm90
aCB0ZXN0cyB1c2UgdGhlIHNhbWUgZml4dHVyZSBjbGFzcyAoYDo6dGVzdGluZzo6VGVzdGApLgor
CitgYGAKK25hbWVzcGFjZSBmb28geworVEVTVChDb29sVGVzdCwgRG9Tb21ldGhpbmcpIHsKKyAg
U1VDQ0VFRCgpOworfQorfSAgLy8gbmFtZXNwYWNlIGZvbworCituYW1lc3BhY2UgYmFyIHsKK1RF
U1QoQ29vbFRlc3QsIERvU29tZXRoaW5nKSB7CisgIFNVQ0NFRUQoKTsKK30KK30gIC8vIG5hbWVz
cGFjZSBmb28KK2BgYAorCitIb3dldmVyLCB0aGUgZm9sbG93aW5nIGNvZGUgaXMgKipub3QgYWxs
b3dlZCoqIGFuZCB3aWxsIHByb2R1Y2UgYSBydW50aW1lIGVycm9yIGZyb20gR29vZ2xlIFRlc3Qg
YmVjYXVzZSB0aGUgdGVzdCBtZXRob2RzIGFyZSB1c2luZyBkaWZmZXJlbnQgdGVzdCBmaXh0dXJl
IGNsYXNzZXMgd2l0aCB0aGUgc2FtZSB0ZXN0IGNhc2UgbmFtZS4KKworYGBgCituYW1lc3BhY2Ug
Zm9vIHsKK2NsYXNzIENvb2xUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7fTsgIC8vIEZp
eHR1cmUgZm9vOjpDb29sVGVzdAorVEVTVF9GKENvb2xUZXN0LCBEb1NvbWV0aGluZykgeworICBT
VUNDRUVEKCk7Cit9Cit9ICAvLyBuYW1lc3BhY2UgZm9vCisKK25hbWVzcGFjZSBiYXIgeworY2xh
c3MgQ29vbFRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9OyAgLy8gRml4dHVyZTogYmFy
OjpDb29sVGVzdAorVEVTVF9GKENvb2xUZXN0LCBEb1NvbWV0aGluZykgeworICBTVUNDRUVEKCk7
Cit9Cit9ICAvLyBuYW1lc3BhY2UgZm9vCitgYGAKKworIyMgSG93IGRvIEkgYnVpbGQgR29vZ2xl
IFRlc3RpbmcgRnJhbWV3b3JrIHdpdGggWGNvZGUgND8gIyMKKworSWYgeW91IHRyeSB0byBidWls
ZCBHb29nbGUgVGVzdCdzIFhjb2RlIHByb2plY3Qgd2l0aCBYY29kZSA0LjAgb3IgbGF0ZXIsIHlv
dSBtYXkgZW5jb3VudGVyIGFuIGVycm9yIG1lc3NhZ2UgdGhhdCBsb29rcyBsaWtlCisiTWlzc2lu
ZyBTREsgaW4gdGFyZ2V0IGd0ZXN0XF9mcmFtZXdvcms6IC9EZXZlbG9wZXIvU0RLcy9NYWNPU1gx
MC40dS5zZGsiLiBUaGF0IG1lYW5zIHRoYXQgWGNvZGUgZG9lcyBub3Qgc3VwcG9ydCB0aGUgU0RL
IHRoZSBwcm9qZWN0IGlzIHRhcmdldGluZy4gU2VlIHRoZSBYY29kZSBzZWN0aW9uIGluIHRoZSBb
UkVBRE1FXSguLi8uLi9SRUFETUUuTUQpIGZpbGUgb24gaG93IHRvIHJlc29sdmUgdGhpcy4KKwor
IyMgTXkgcXVlc3Rpb24gaXMgbm90IGNvdmVyZWQgaW4geW91ciBGQVEhICMjCisKK0lmIHlvdSBj
YW5ub3QgZmluZCB0aGUgYW5zd2VyIHRvIHlvdXIgcXVlc3Rpb24gaW4gdGhpcyBGQVEsIHRoZXJl
IGFyZQorc29tZSBvdGhlciByZXNvdXJjZXMgeW91IGNhbiB1c2U6CisKKyAgMS4gcmVhZCBvdGhl
ciBbd2lraSBwYWdlc10oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRlc3Qvdy9saXN0
KSwKKyAgMS4gc2VhcmNoIHRoZSBtYWlsaW5nIGxpc3QgW2FyY2hpdmVdKGh0dHA6Ly9ncm91cHMu
Z29vZ2xlLmNvbS9ncm91cC9nb29nbGV0ZXN0ZnJhbWV3b3JrL3RvcGljcyksCisgIDEuIGFzayBp
dCBvbiBbZ29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tXShtYWlsdG86Z29vZ2xl
dGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tKSBhbmQgc29tZW9uZSB3aWxsIGFuc3dlciBp
dCAodG8gcHJldmVudCBzcGFtLCB3ZSByZXF1aXJlIHlvdSB0byBqb2luIHRoZSBbZGlzY3Vzc2lv
biBncm91cF0oaHR0cDovL2dyb3Vwcy5nb29nbGUuY29tL2dyb3VwL2dvb2dsZXRlc3RmcmFtZXdv
cmspIGJlZm9yZSB5b3UgY2FuIHBvc3QuKS4KKworUGxlYXNlIG5vdGUgdGhhdCBjcmVhdGluZyBh
biBpc3N1ZSBpbiB0aGUKK1tpc3N1ZSB0cmFja2VyXShodHRwOi8vY29kZS5nb29nbGUuY29tL3Av
Z29vZ2xldGVzdC9pc3N1ZXMvbGlzdCkgaXMgX25vdF8KK2EgZ29vZCB3YXkgdG8gZ2V0IHlvdXIg
YW5zd2VyLCBhcyBpdCBpcyBtb25pdG9yZWQgaW5mcmVxdWVudGx5IGJ5IGEKK3Zlcnkgc21hbGwg
bnVtYmVyIG9mIHBlb3BsZS4KKworV2hlbiBhc2tpbmcgYSBxdWVzdGlvbiwgaXQncyBoZWxwZnVs
IHRvIHByb3ZpZGUgYXMgbXVjaCBvZiB0aGUKK2ZvbGxvd2luZyBpbmZvcm1hdGlvbiBhcyBwb3Nz
aWJsZSAocGVvcGxlIGNhbm5vdCBoZWxwIHlvdSBpZiB0aGVyZSdzCitub3QgZW5vdWdoIGluZm9y
bWF0aW9uIGluIHlvdXIgcXVlc3Rpb24pOgorCisgICogdGhlIHZlcnNpb24gKG9yIHRoZSByZXZp
c2lvbiBudW1iZXIgaWYgeW91IGNoZWNrIG91dCBmcm9tIFNWTiBkaXJlY3RseSkgb2YgR29vZ2xl
IFRlc3QgeW91IHVzZSAoR29vZ2xlIFRlc3QgaXMgdW5kZXIgYWN0aXZlIGRldmVsb3BtZW50LCBz
byBpdCdzIHBvc3NpYmxlIHRoYXQgeW91ciBwcm9ibGVtIGhhcyBiZWVuIHNvbHZlZCBpbiBhIGxh
dGVyIHZlcnNpb24pLAorICAqIHlvdXIgb3BlcmF0aW5nIHN5c3RlbSwKKyAgKiB0aGUgbmFtZSBh
bmQgdmVyc2lvbiBvZiB5b3VyIGNvbXBpbGVyLAorICAqIHRoZSBjb21wbGV0ZSBjb21tYW5kIGxp
bmUgZmxhZ3MgeW91IGdpdmUgdG8geW91ciBjb21waWxlciwKKyAgKiB0aGUgY29tcGxldGUgY29t
cGlsZXIgZXJyb3IgbWVzc2FnZXMgKGlmIHRoZSBxdWVzdGlvbiBpcyBhYm91dCBjb21waWxhdGlv
biksCisgICogdGhlIF9hY3R1YWxfIGNvZGUgKGlkZWFsbHksIGEgbWluaW1hbCBidXQgY29tcGxl
dGUgcHJvZ3JhbSkgdGhhdCBoYXMgdGhlIHByb2JsZW0geW91IGVuY291bnRlci4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfN19QcmltZXIubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1Yx
XzdfUHJpbWVyLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxODI3YzczNTU4MTNhZDk0MTgwMzQ5MTNiY2MzOWRm
NDE4ZGFmNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1YxXzdfUHJpbWVy
Lm1kCkBAIC0wLDAgKzEsNTAxIEBACisKKworIyBJbnRyb2R1Y3Rpb246IFdoeSBHb29nbGUgQysr
IFRlc3RpbmcgRnJhbWV3b3JrPyAjCisKK19Hb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrXyBo
ZWxwcyB5b3Ugd3JpdGUgYmV0dGVyIEMrKyB0ZXN0cy4KKworTm8gbWF0dGVyIHdoZXRoZXIgeW91
IHdvcmsgb24gTGludXgsIFdpbmRvd3MsIG9yIGEgTWFjLCBpZiB5b3Ugd3JpdGUgQysrIGNvZGUs
CitHb29nbGUgVGVzdCBjYW4gaGVscCB5b3UuCisKK1NvIHdoYXQgbWFrZXMgYSBnb29kIHRlc3Qs
IGFuZCBob3cgZG9lcyBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIGZpdCBpbj8gV2UgYmVs
aWV2ZToKKyAgMS4gVGVzdHMgc2hvdWxkIGJlIF9pbmRlcGVuZGVudF8gYW5kIF9yZXBlYXRhYmxl
Xy4gSXQncyBhIHBhaW4gdG8gZGVidWcgYSB0ZXN0IHRoYXQgc3VjY2VlZHMgb3IgZmFpbHMgYXMg
YSByZXN1bHQgb2Ygb3RoZXIgdGVzdHMuICBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIGlz
b2xhdGVzIHRoZSB0ZXN0cyBieSBydW5uaW5nIGVhY2ggb2YgdGhlbSBvbiBhIGRpZmZlcmVudCBv
YmplY3QuIFdoZW4gYSB0ZXN0IGZhaWxzLCBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIGFs
bG93cyB5b3UgdG8gcnVuIGl0IGluIGlzb2xhdGlvbiBmb3IgcXVpY2sgZGVidWdnaW5nLgorICAx
LiBUZXN0cyBzaG91bGQgYmUgd2VsbCBfb3JnYW5pemVkXyBhbmQgcmVmbGVjdCB0aGUgc3RydWN0
dXJlIG9mIHRoZSB0ZXN0ZWQgY29kZS4gIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgZ3Jv
dXBzIHJlbGF0ZWQgdGVzdHMgaW50byB0ZXN0IGNhc2VzIHRoYXQgY2FuIHNoYXJlIGRhdGEgYW5k
IHN1YnJvdXRpbmVzLiBUaGlzIGNvbW1vbiBwYXR0ZXJuIGlzIGVhc3kgdG8gcmVjb2duaXplIGFu
ZCBtYWtlcyB0ZXN0cyBlYXN5IHRvIG1haW50YWluLiBTdWNoIGNvbnNpc3RlbmN5IGlzIGVzcGVj
aWFsbHkgaGVscGZ1bCB3aGVuIHBlb3BsZSBzd2l0Y2ggcHJvamVjdHMgYW5kIHN0YXJ0IHRvIHdv
cmsgb24gYSBuZXcgY29kZSBiYXNlLgorICAxLiBUZXN0cyBzaG91bGQgYmUgX3BvcnRhYmxlXyBh
bmQgX3JldXNhYmxlXy4gVGhlIG9wZW4tc291cmNlIGNvbW11bml0eSBoYXMgYSBsb3Qgb2YgY29k
ZSB0aGF0IGlzIHBsYXRmb3JtLW5ldXRyYWwsIGl0cyB0ZXN0cyBzaG91bGQgYWxzbyBiZSBwbGF0
Zm9ybS1uZXV0cmFsLiAgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayB3b3JrcyBvbiBkaWZm
ZXJlbnQgT1Nlcywgd2l0aCBkaWZmZXJlbnQgY29tcGlsZXJzIChnY2MsIE1TVkMsIGFuZCBvdGhl
cnMpLCB3aXRoIG9yIHdpdGhvdXQgZXhjZXB0aW9ucywgc28gR29vZ2xlIEMrKyBUZXN0aW5nIEZy
YW1ld29yayB0ZXN0cyBjYW4gZWFzaWx5IHdvcmsgd2l0aCBhIHZhcmlldHkgb2YgY29uZmlndXJh
dGlvbnMuICAoTm90ZSB0aGF0IHRoZSBjdXJyZW50IHJlbGVhc2Ugb25seSBjb250YWlucyBidWls
ZCBzY3JpcHRzIGZvciBMaW51eCAtIHdlIGFyZSBhY3RpdmVseSB3b3JraW5nIG9uIHNjcmlwdHMg
Zm9yIG90aGVyIHBsYXRmb3Jtcy4pCisgIDEuIFdoZW4gdGVzdHMgZmFpbCwgdGhleSBzaG91bGQg
cHJvdmlkZSBhcyBtdWNoIF9pbmZvcm1hdGlvbl8gYWJvdXQgdGhlIHByb2JsZW0gYXMgcG9zc2li
bGUuIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgZG9lc24ndCBzdG9wIGF0IHRoZSBmaXJz
dCB0ZXN0IGZhaWx1cmUuIEluc3RlYWQsIGl0IG9ubHkgc3RvcHMgdGhlIGN1cnJlbnQgdGVzdCBh
bmQgY29udGludWVzIHdpdGggdGhlIG5leHQuIFlvdSBjYW4gYWxzbyBzZXQgdXAgdGVzdHMgdGhh
dCByZXBvcnQgbm9uLWZhdGFsIGZhaWx1cmVzIGFmdGVyIHdoaWNoIHRoZSBjdXJyZW50IHRlc3Qg
Y29udGludWVzLiBUaHVzLCB5b3UgY2FuIGRldGVjdCBhbmQgZml4IG11bHRpcGxlIGJ1Z3MgaW4g
YSBzaW5nbGUgcnVuLWVkaXQtY29tcGlsZSBjeWNsZS4KKyAgMS4gVGhlIHRlc3RpbmcgZnJhbWV3
b3JrIHNob3VsZCBsaWJlcmF0ZSB0ZXN0IHdyaXRlcnMgZnJvbSBob3VzZWtlZXBpbmcgY2hvcmVz
IGFuZCBsZXQgdGhlbSBmb2N1cyBvbiB0aGUgdGVzdCBfY29udGVudF8uICBHb29nbGUgQysrIFRl
c3RpbmcgRnJhbWV3b3JrIGF1dG9tYXRpY2FsbHkga2VlcHMgdHJhY2sgb2YgYWxsIHRlc3RzIGRl
ZmluZWQsIGFuZCBkb2Vzbid0IHJlcXVpcmUgdGhlIHVzZXIgdG8gZW51bWVyYXRlIHRoZW0gaW4g
b3JkZXIgdG8gcnVuIHRoZW0uCisgIDEuIFRlc3RzIHNob3VsZCBiZSBfZmFzdF8uIFdpdGggR29v
Z2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yaywgeW91IGNhbiByZXVzZSBzaGFyZWQgcmVzb3VyY2Vz
IGFjcm9zcyB0ZXN0cyBhbmQgcGF5IGZvciB0aGUgc2V0LXVwL3RlYXItZG93biBvbmx5IG9uY2Us
IHdpdGhvdXQgbWFraW5nIHRlc3RzIGRlcGVuZCBvbiBlYWNoIG90aGVyLgorCitTaW5jZSBHb29n
bGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIGlzIGJhc2VkIG9uIHRoZSBwb3B1bGFyIHhVbml0Cith
cmNoaXRlY3R1cmUsIHlvdSdsbCBmZWVsIHJpZ2h0IGF0IGhvbWUgaWYgeW91J3ZlIHVzZWQgSlVu
aXQgb3IgUHlVbml0IGJlZm9yZS4KK0lmIG5vdCwgaXQgd2lsbCB0YWtlIHlvdSBhYm91dCAxMCBt
aW51dGVzIHRvIGxlYXJuIHRoZSBiYXNpY3MgYW5kIGdldCBzdGFydGVkLgorU28gbGV0J3MgZ28h
CisKK19Ob3RlOl8gV2Ugc29tZXRpbWVzIHJlZmVyIHRvIEdvb2dsZSBDKysgVGVzdGluZyBGcmFt
ZXdvcmsgaW5mb3JtYWxseQorYXMgX0dvb2dsZSBUZXN0Xy4KKworIyBTZXR0aW5nIHVwIGEgTmV3
IFRlc3QgUHJvamVjdCAjCisKK1RvIHdyaXRlIGEgdGVzdCBwcm9ncmFtIHVzaW5nIEdvb2dsZSBU
ZXN0LCB5b3UgbmVlZCB0byBjb21waWxlIEdvb2dsZQorVGVzdCBpbnRvIGEgbGlicmFyeSBhbmQg
bGluayB5b3VyIHRlc3Qgd2l0aCBpdC4gIFdlIHByb3ZpZGUgYnVpbGQKK2ZpbGVzIGZvciBzb21l
IHBvcHVsYXIgYnVpbGQgc3lzdGVtczogYG1zdmMvYCBmb3IgVmlzdWFsIFN0dWRpbywKK2B4Y29k
ZS9gIGZvciBNYWMgWGNvZGUsIGBtYWtlL2AgZm9yIEdOVSBtYWtlLCBgY29kZWdlYXIvYCBmb3Ig
Qm9ybGFuZAorQysrIEJ1aWxkZXIsIGFuZCB0aGUgYXV0b3Rvb2xzIHNjcmlwdCAoZGVwcmVjYXRl
ZCkgYW5kCitgQ01ha2VMaXN0cy50eHRgIGZvciBDTWFrZSAocmVjb21tZW5kZWQpIGluIHRoZSBH
b29nbGUgVGVzdCByb290CitkaXJlY3RvcnkuICBJZiB5b3VyIGJ1aWxkIHN5c3RlbSBpcyBub3Qg
b24gdGhpcyBsaXN0LCB5b3UgY2FuIHRha2UgYQorbG9vayBhdCBgbWFrZS9NYWtlZmlsZWAgdG8g
bGVhcm4gaG93IEdvb2dsZSBUZXN0IHNob3VsZCBiZSBjb21waWxlZAorKGJhc2ljYWxseSB5b3Ug
d2FudCB0byBjb21waWxlIGBzcmMvZ3Rlc3QtYWxsLmNjYCB3aXRoIGBHVEVTVF9ST09UYAorYW5k
IGBHVEVTVF9ST09UL2luY2x1ZGVgIGluIHRoZSBoZWFkZXIgc2VhcmNoIHBhdGgsIHdoZXJlIGBH
VEVTVF9ST09UYAoraXMgdGhlIEdvb2dsZSBUZXN0IHJvb3QgZGlyZWN0b3J5KS4KKworT25jZSB5
b3UgYXJlIGFibGUgdG8gY29tcGlsZSB0aGUgR29vZ2xlIFRlc3QgbGlicmFyeSwgeW91IHNob3Vs
ZAorY3JlYXRlIGEgcHJvamVjdCBvciBidWlsZCB0YXJnZXQgZm9yIHlvdXIgdGVzdCBwcm9ncmFt
LiAgTWFrZSBzdXJlIHlvdQoraGF2ZSBgR1RFU1RfUk9PVC9pbmNsdWRlYCBpbiB0aGUgaGVhZGVy
IHNlYXJjaCBwYXRoIHNvIHRoYXQgdGhlCitjb21waWxlciBjYW4gZmluZCBgImd0ZXN0L2d0ZXN0
LmgiYCB3aGVuIGNvbXBpbGluZyB5b3VyIHRlc3QuICBTZXQgdXAKK3lvdXIgdGVzdCBwcm9qZWN0
IHRvIGxpbmsgd2l0aCB0aGUgR29vZ2xlIFRlc3QgbGlicmFyeSAoZm9yIGV4YW1wbGUsCitpbiBW
aXN1YWwgU3R1ZGlvLCB0aGlzIGlzIGRvbmUgYnkgYWRkaW5nIGEgZGVwZW5kZW5jeSBvbgorYGd0
ZXN0LnZjcHJvamApLgorCitJZiB5b3Ugc3RpbGwgaGF2ZSBxdWVzdGlvbnMsIHRha2UgYSBsb29r
IGF0IGhvdyBHb29nbGUgVGVzdCdzIG93bgordGVzdHMgYXJlIGJ1aWx0IGFuZCB1c2UgdGhlbSBh
cyBleGFtcGxlcy4KKworIyBCYXNpYyBDb25jZXB0cyAjCisKK1doZW4gdXNpbmcgR29vZ2xlIFRl
c3QsIHlvdSBzdGFydCBieSB3cml0aW5nIF9hc3NlcnRpb25zXywgd2hpY2ggYXJlIHN0YXRlbWVu
dHMKK3RoYXQgY2hlY2sgd2hldGhlciBhIGNvbmRpdGlvbiBpcyB0cnVlLiBBbiBhc3NlcnRpb24n
cyByZXN1bHQgY2FuIGJlIF9zdWNjZXNzXywKK19ub25mYXRhbCBmYWlsdXJlXywgb3IgX2ZhdGFs
IGZhaWx1cmVfLiBJZiBhIGZhdGFsIGZhaWx1cmUgb2NjdXJzLCBpdCBhYm9ydHMKK3RoZSBjdXJy
ZW50IGZ1bmN0aW9uOyBvdGhlcndpc2UgdGhlIHByb2dyYW0gY29udGludWVzIG5vcm1hbGx5Lgor
CitfVGVzdHNfIHVzZSBhc3NlcnRpb25zIHRvIHZlcmlmeSB0aGUgdGVzdGVkIGNvZGUncyBiZWhh
dmlvci4gSWYgYSB0ZXN0IGNyYXNoZXMKK29yIGhhcyBhIGZhaWxlZCBhc3NlcnRpb24sIHRoZW4g
aXQgX2ZhaWxzXzsgb3RoZXJ3aXNlIGl0IF9zdWNjZWVkc18uCisKK0EgX3Rlc3QgY2FzZV8gY29u
dGFpbnMgb25lIG9yIG1hbnkgdGVzdHMuIFlvdSBzaG91bGQgZ3JvdXAgeW91ciB0ZXN0cyBpbnRv
IHRlc3QKK2Nhc2VzIHRoYXQgcmVmbGVjdCB0aGUgc3RydWN0dXJlIG9mIHRoZSB0ZXN0ZWQgY29k
ZS4gV2hlbiBtdWx0aXBsZSB0ZXN0cyBpbiBhCit0ZXN0IGNhc2UgbmVlZCB0byBzaGFyZSBjb21t
b24gb2JqZWN0cyBhbmQgc3Vicm91dGluZXMsIHlvdSBjYW4gcHV0IHRoZW0gaW50byBhCitfdGVz
dCBmaXh0dXJlXyBjbGFzcy4KKworQSBfdGVzdCBwcm9ncmFtXyBjYW4gY29udGFpbiBtdWx0aXBs
ZSB0ZXN0IGNhc2VzLgorCitXZSdsbCBub3cgZXhwbGFpbiBob3cgdG8gd3JpdGUgYSB0ZXN0IHBy
b2dyYW0sIHN0YXJ0aW5nIGF0IHRoZSBpbmRpdmlkdWFsCithc3NlcnRpb24gbGV2ZWwgYW5kIGJ1
aWxkaW5nIHVwIHRvIHRlc3RzIGFuZCB0ZXN0IGNhc2VzLgorCisjIEFzc2VydGlvbnMgIworCitH
b29nbGUgVGVzdCBhc3NlcnRpb25zIGFyZSBtYWNyb3MgdGhhdCByZXNlbWJsZSBmdW5jdGlvbiBj
YWxscy4gWW91IHRlc3QgYQorY2xhc3Mgb3IgZnVuY3Rpb24gYnkgbWFraW5nIGFzc2VydGlvbnMg
YWJvdXQgaXRzIGJlaGF2aW9yLiBXaGVuIGFuIGFzc2VydGlvbgorZmFpbHMsIEdvb2dsZSBUZXN0
IHByaW50cyB0aGUgYXNzZXJ0aW9uJ3Mgc291cmNlIGZpbGUgYW5kIGxpbmUgbnVtYmVyIGxvY2F0
aW9uLAorYWxvbmcgd2l0aCBhIGZhaWx1cmUgbWVzc2FnZS4gWW91IG1heSBhbHNvIHN1cHBseSBh
IGN1c3RvbSBmYWlsdXJlIG1lc3NhZ2UKK3doaWNoIHdpbGwgYmUgYXBwZW5kZWQgdG8gR29vZ2xl
IFRlc3QncyBtZXNzYWdlLgorCitUaGUgYXNzZXJ0aW9ucyBjb21lIGluIHBhaXJzIHRoYXQgdGVz
dCB0aGUgc2FtZSB0aGluZyBidXQgaGF2ZSBkaWZmZXJlbnQKK2VmZmVjdHMgb24gdGhlIGN1cnJl
bnQgZnVuY3Rpb24uIGBBU1NFUlRfKmAgdmVyc2lvbnMgZ2VuZXJhdGUgZmF0YWwgZmFpbHVyZXMK
K3doZW4gdGhleSBmYWlsLCBhbmQgKiphYm9ydCB0aGUgY3VycmVudCBmdW5jdGlvbioqLiBgRVhQ
RUNUXypgIHZlcnNpb25zIGdlbmVyYXRlCitub25mYXRhbCBmYWlsdXJlcywgd2hpY2ggZG9uJ3Qg
YWJvcnQgdGhlIGN1cnJlbnQgZnVuY3Rpb24uIFVzdWFsbHkgYEVYUEVDVF8qYAorYXJlIHByZWZl
cnJlZCwgYXMgdGhleSBhbGxvdyBtb3JlIHRoYW4gb25lIGZhaWx1cmVzIHRvIGJlIHJlcG9ydGVk
IGluIGEgdGVzdC4KK0hvd2V2ZXIsIHlvdSBzaG91bGQgdXNlIGBBU1NFUlRfKmAgaWYgaXQgZG9l
c24ndCBtYWtlIHNlbnNlIHRvIGNvbnRpbnVlIHdoZW4KK3RoZSBhc3NlcnRpb24gaW4gcXVlc3Rp
b24gZmFpbHMuCisKK1NpbmNlIGEgZmFpbGVkIGBBU1NFUlRfKmAgcmV0dXJucyBmcm9tIHRoZSBj
dXJyZW50IGZ1bmN0aW9uIGltbWVkaWF0ZWx5LAorcG9zc2libHkgc2tpcHBpbmcgY2xlYW4tdXAg
Y29kZSB0aGF0IGNvbWVzIGFmdGVyIGl0LCBpdCBtYXkgY2F1c2UgYSBzcGFjZSBsZWFrLgorRGVw
ZW5kaW5nIG9uIHRoZSBuYXR1cmUgb2YgdGhlIGxlYWssIGl0IG1heSBvciBtYXkgbm90IGJlIHdv
cnRoIGZpeGluZyAtIHNvCitrZWVwIHRoaXMgaW4gbWluZCBpZiB5b3UgZ2V0IGEgaGVhcCBjaGVj
a2VyIGVycm9yIGluIGFkZGl0aW9uIHRvIGFzc2VydGlvbgorZXJyb3JzLgorCitUbyBwcm92aWRl
IGEgY3VzdG9tIGZhaWx1cmUgbWVzc2FnZSwgc2ltcGx5IHN0cmVhbSBpdCBpbnRvIHRoZSBtYWNy
byB1c2luZyB0aGUKK2A8PGAgb3BlcmF0b3IsIG9yIGEgc2VxdWVuY2Ugb2Ygc3VjaCBvcGVyYXRv
cnMuIEFuIGV4YW1wbGU6CitgYGAKK0FTU0VSVF9FUSh4LnNpemUoKSwgeS5zaXplKCkpIDw8ICJW
ZWN0b3JzIHggYW5kIHkgYXJlIG9mIHVuZXF1YWwgbGVuZ3RoIjsKKworZm9yIChpbnQgaSA9IDA7
IGkgPCB4LnNpemUoKTsgKytpKSB7CisgIEVYUEVDVF9FUSh4W2ldLCB5W2ldKSA8PCAiVmVjdG9y
cyB4IGFuZCB5IGRpZmZlciBhdCBpbmRleCAiIDw8IGk7Cit9CitgYGAKKworQW55dGhpbmcgdGhh
dCBjYW4gYmUgc3RyZWFtZWQgdG8gYW4gYG9zdHJlYW1gIGNhbiBiZSBzdHJlYW1lZCB0byBhbiBh
c3NlcnRpb24KK21hY3JvLS1pbiBwYXJ0aWN1bGFyLCBDIHN0cmluZ3MgYW5kIGBzdHJpbmdgIG9i
amVjdHMuIElmIGEgd2lkZSBzdHJpbmcKKyhgd2NoYXJfdCpgLCBgVENIQVIqYCBpbiBgVU5JQ09E
RWAgbW9kZSBvbiBXaW5kb3dzLCBvciBgc3RkOjp3c3RyaW5nYCkgaXMKK3N0cmVhbWVkIHRvIGFu
IGFzc2VydGlvbiwgaXQgd2lsbCBiZSB0cmFuc2xhdGVkIHRvIFVURi04IHdoZW4gcHJpbnRlZC4K
KworIyMgQmFzaWMgQXNzZXJ0aW9ucyAjIworCitUaGVzZSBhc3NlcnRpb25zIGRvIGJhc2ljIHRy
dWUvZmFsc2UgY29uZGl0aW9uIHRlc3RpbmcuCit8ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5v
bmZhdGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0t
LS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAorfCBgQVNTRVJUX1RS
VUUoYF9jb25kaXRpb25fYClgOyAgfCBgRVhQRUNUX1RSVUUoYF9jb25kaXRpb25fYClgOyAgIHwg
X2NvbmRpdGlvbl8gaXMgdHJ1ZSB8Cit8IGBBU1NFUlRfRkFMU0UoYF9jb25kaXRpb25fYClgOyB8
IGBFWFBFQ1RfRkFMU0UoYF9jb25kaXRpb25fYClgOyAgfCBfY29uZGl0aW9uXyBpcyBmYWxzZSB8
CisKK1JlbWVtYmVyLCB3aGVuIHRoZXkgZmFpbCwgYEFTU0VSVF8qYCB5aWVsZHMgYSBmYXRhbCBm
YWlsdXJlIGFuZAorcmV0dXJucyBmcm9tIHRoZSBjdXJyZW50IGZ1bmN0aW9uLCB3aGlsZSBgRVhQ
RUNUXypgIHlpZWxkcyBhIG5vbmZhdGFsCitmYWlsdXJlLCBhbGxvd2luZyB0aGUgZnVuY3Rpb24g
dG8gY29udGludWUgcnVubmluZy4gSW4gZWl0aGVyIGNhc2UsIGFuCithc3NlcnRpb24gZmFpbHVy
ZSBtZWFucyBpdHMgY29udGFpbmluZyB0ZXN0IGZhaWxzLgorCitfQXZhaWxhYmlsaXR5XzogTGlu
dXgsIFdpbmRvd3MsIE1hYy4KKworIyMgQmluYXJ5IENvbXBhcmlzb24gIyMKKworVGhpcyBzZWN0
aW9uIGRlc2NyaWJlcyBhc3NlcnRpb25zIHRoYXQgY29tcGFyZSB0d28gdmFsdWVzLgorCit8ICoq
RmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoq
IHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0t
LS0tLS0tLS0tfAorfGBBU1NFUlRfRVEoYF9leHBlY3RlZF9gLCBgX2FjdHVhbF9gKTtgfGBFWFBF
Q1RfRVEoYF9leHBlY3RlZF9gLCBgX2FjdHVhbF9gKTtgfCBfZXhwZWN0ZWRfIGA9PWAgX2FjdHVh
bF8gfAorfGBBU1NFUlRfTkUoYF92YWwxX2AsIGBfdmFsMl9gKTtgICAgICAgfGBFWFBFQ1RfTkUo
YF92YWwxX2AsIGBfdmFsMl9gKTtgICAgICAgfCBfdmFsMV8gYCE9YCBfdmFsMl8gfAorfGBBU1NF
UlRfTFQoYF92YWwxX2AsIGBfdmFsMl9gKTtgICAgICAgfGBFWFBFQ1RfTFQoYF92YWwxX2AsIGBf
dmFsMl9gKTtgICAgICAgfCBfdmFsMV8gYDxgIF92YWwyXyB8Cit8YEFTU0VSVF9MRShgX3ZhbDFf
YCwgYF92YWwyX2ApO2AgICAgICB8YEVYUEVDVF9MRShgX3ZhbDFfYCwgYF92YWwyX2ApO2AgICAg
ICB8IF92YWwxXyBgPD1gIF92YWwyXyB8Cit8YEFTU0VSVF9HVChgX3ZhbDFfYCwgYF92YWwyX2Ap
O2AgICAgICB8YEVYUEVDVF9HVChgX3ZhbDFfYCwgYF92YWwyX2ApO2AgICAgICB8IF92YWwxXyBg
PmAgX3ZhbDJfIHwKK3xgQVNTRVJUX0dFKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAgIHxgRVhQ
RUNUX0dFKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAgIHwgX3ZhbDFfIGA+PWAgX3ZhbDJfIHwK
KworSW4gdGhlIGV2ZW50IG9mIGEgZmFpbHVyZSwgR29vZ2xlIFRlc3QgcHJpbnRzIGJvdGggX3Zh
bDFfIGFuZCBfdmFsMl8KKy4gSW4gYEFTU0VSVF9FUSpgIGFuZCBgRVhQRUNUX0VRKmAgKGFuZCBh
bGwgb3RoZXIgZXF1YWxpdHkgYXNzZXJ0aW9ucword2UnbGwgaW50cm9kdWNlIGxhdGVyKSwgeW91
IHNob3VsZCBwdXQgdGhlIGV4cHJlc3Npb24geW91IHdhbnQgdG8gdGVzdAoraW4gdGhlIHBvc2l0
aW9uIG9mIF9hY3R1YWxfLCBhbmQgcHV0IGl0cyBleHBlY3RlZCB2YWx1ZSBpbiBfZXhwZWN0ZWRf
LAorYXMgR29vZ2xlIFRlc3QncyBmYWlsdXJlIG1lc3NhZ2VzIGFyZSBvcHRpbWl6ZWQgZm9yIHRo
aXMgY29udmVudGlvbi4KKworVmFsdWUgYXJndW1lbnRzIG11c3QgYmUgY29tcGFyYWJsZSBieSB0
aGUgYXNzZXJ0aW9uJ3MgY29tcGFyaXNvbgorb3BlcmF0b3Igb3IgeW91J2xsIGdldCBhIGNvbXBp
bGVyIGVycm9yLiAgV2UgdXNlZCB0byByZXF1aXJlIHRoZQorYXJndW1lbnRzIHRvIHN1cHBvcnQg
dGhlIGA8PGAgb3BlcmF0b3IgZm9yIHN0cmVhbWluZyB0byBhbiBgb3N0cmVhbWAsCitidXQgaXQn
cyBubyBsb25nZXIgbmVjZXNzYXJ5IHNpbmNlIHYxLjYuMCAoaWYgYDw8YCBpcyBzdXBwb3J0ZWQs
IGl0Cit3aWxsIGJlIGNhbGxlZCB0byBwcmludCB0aGUgYXJndW1lbnRzIHdoZW4gdGhlIGFzc2Vy
dGlvbiBmYWlsczsKK290aGVyd2lzZSBHb29nbGUgVGVzdCB3aWxsIGF0dGVtcHQgdG8gcHJpbnQg
dGhlbSBpbiB0aGUgYmVzdCB3YXkgaXQKK2Nhbi4gRm9yIG1vcmUgZGV0YWlscyBhbmQgaG93IHRv
IGN1c3RvbWl6ZSB0aGUgcHJpbnRpbmcgb2YgdGhlCithcmd1bWVudHMsIHNlZSB0aGlzIEdvb2ds
ZSBNb2NrIFtyZWNpcGVdKC4uLy4uL2dvb2dsZW1vY2svZG9jcy9Db29rQm9vay5tZCN0ZWFjaGlu
Zy1nb29nbGUtbW9jay1ob3ctdG8tcHJpbnQteW91ci12YWx1ZXMpLikuCisKK1RoZXNlIGFzc2Vy
dGlvbnMgY2FuIHdvcmsgd2l0aCBhIHVzZXItZGVmaW5lZCB0eXBlLCBidXQgb25seSBpZiB5b3Ug
ZGVmaW5lIHRoZQorY29ycmVzcG9uZGluZyBjb21wYXJpc29uIG9wZXJhdG9yIChlLmcuIGA9PWAs
IGA8YCwgZXRjKS4gIElmIHRoZSBjb3JyZXNwb25kaW5nCitvcGVyYXRvciBpcyBkZWZpbmVkLCBw
cmVmZXIgdXNpbmcgdGhlIGBBU1NFUlRfKigpYCBtYWNyb3MgYmVjYXVzZSB0aGV5IHdpbGwKK3By
aW50IG91dCBub3Qgb25seSB0aGUgcmVzdWx0IG9mIHRoZSBjb21wYXJpc29uLCBidXQgdGhlIHR3
byBvcGVyYW5kcyBhcyB3ZWxsLgorCitBcmd1bWVudHMgYXJlIGFsd2F5cyBldmFsdWF0ZWQgZXhh
Y3RseSBvbmNlLiBUaGVyZWZvcmUsIGl0J3MgT0sgZm9yIHRoZQorYXJndW1lbnRzIHRvIGhhdmUg
c2lkZSBlZmZlY3RzLiBIb3dldmVyLCBhcyB3aXRoIGFueSBvcmRpbmFyeSBDL0MrKyBmdW5jdGlv
biwKK3RoZSBhcmd1bWVudHMnIGV2YWx1YXRpb24gb3JkZXIgaXMgdW5kZWZpbmVkIChpLmUuIHRo
ZSBjb21waWxlciBpcyBmcmVlIHRvCitjaG9vc2UgYW55IG9yZGVyKSBhbmQgeW91ciBjb2RlIHNo
b3VsZCBub3QgZGVwZW5kIG9uIGFueSBwYXJ0aWN1bGFyIGFyZ3VtZW50CitldmFsdWF0aW9uIG9y
ZGVyLgorCitgQVNTRVJUX0VRKClgIGRvZXMgcG9pbnRlciBlcXVhbGl0eSBvbiBwb2ludGVycy4g
SWYgdXNlZCBvbiB0d28gQyBzdHJpbmdzLCBpdAordGVzdHMgaWYgdGhleSBhcmUgaW4gdGhlIHNh
bWUgbWVtb3J5IGxvY2F0aW9uLCBub3QgaWYgdGhleSBoYXZlIHRoZSBzYW1lIHZhbHVlLgorVGhl
cmVmb3JlLCBpZiB5b3Ugd2FudCB0byBjb21wYXJlIEMgc3RyaW5ncyAoZS5nLiBgY29uc3QgY2hh
cipgKSBieSB2YWx1ZSwgdXNlCitgQVNTRVJUX1NUUkVRKClgICwgd2hpY2ggd2lsbCBiZSBkZXNj
cmliZWQgbGF0ZXIgb24uIEluIHBhcnRpY3VsYXIsIHRvIGFzc2VydAordGhhdCBhIEMgc3RyaW5n
IGlzIGBOVUxMYCwgdXNlIGBBU1NFUlRfU1RSRVEoTlVMTCwgY19zdHJpbmcpYCAuIEhvd2V2ZXIs
IHRvCitjb21wYXJlIHR3byBgc3RyaW5nYCBvYmplY3RzLCB5b3Ugc2hvdWxkIHVzZSBgQVNTRVJU
X0VRYC4KKworTWFjcm9zIGluIHRoaXMgc2VjdGlvbiB3b3JrIHdpdGggYm90aCBuYXJyb3cgYW5k
IHdpZGUgc3RyaW5nIG9iamVjdHMgKGBzdHJpbmdgCithbmQgYHdzdHJpbmdgKS4KKworX0F2YWls
YWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIFN0cmluZyBDb21wYXJpc29uICMj
CisKK1RoZSBhc3NlcnRpb25zIGluIHRoaXMgZ3JvdXAgY29tcGFyZSB0d28gKipDIHN0cmluZ3Mq
Ki4gSWYgeW91IHdhbnQgdG8gY29tcGFyZQordHdvIGBzdHJpbmdgIG9iamVjdHMsIHVzZSBgRVhQ
RUNUX0VRYCwgYEVYUEVDVF9ORWAsIGFuZCBldGMgaW5zdGVhZC4KKworfCAqKkZhdGFsIGFzc2Vy
dGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8Cit8Oi0tLS0t
LS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwK
K3wgYEFTU0VSVF9TVFJFUShgX2V4cGVjdGVkXF9zdHJfYCwgYF9hY3R1YWxcX3N0cl9gKTtgICAg
IHwgYEVYUEVDVF9TVFJFUShgX2V4cGVjdGVkXF9zdHJfYCwgYF9hY3R1YWxcX3N0cl9gKTtgICAg
ICB8IHRoZSB0d28gQyBzdHJpbmdzIGhhdmUgdGhlIHNhbWUgY29udGVudCB8Cit8IGBBU1NFUlRf
U1RSTkUoYF9zdHIxX2AsIGBfc3RyMl9gKTtgICAgIHwgYEVYUEVDVF9TVFJORShgX3N0cjFfYCwg
YF9zdHIyX2ApO2AgICAgIHwgdGhlIHR3byBDIHN0cmluZ3MgaGF2ZSBkaWZmZXJlbnQgY29udGVu
dCB8Cit8IGBBU1NFUlRfU1RSQ0FTRUVRKGBfZXhwZWN0ZWRcX3N0cl9gLCBgX2FjdHVhbFxfc3Ry
X2ApO2B8IGBFWFBFQ1RfU1RSQ0FTRUVRKGBfZXhwZWN0ZWRcX3N0cl9gLCBgX2FjdHVhbFxfc3Ry
X2ApO2AgfCB0aGUgdHdvIEMgc3RyaW5ncyBoYXZlIHRoZSBzYW1lIGNvbnRlbnQsIGlnbm9yaW5n
IGNhc2UgfAorfCBgQVNTRVJUX1NUUkNBU0VORShgX3N0cjFfYCwgYF9zdHIyX2ApO2B8IGBFWFBF
Q1RfU1RSQ0FTRU5FKGBfc3RyMV9gLCBgX3N0cjJfYCk7YCB8IHRoZSB0d28gQyBzdHJpbmdzIGhh
dmUgZGlmZmVyZW50IGNvbnRlbnQsIGlnbm9yaW5nIGNhc2UgfAorCitOb3RlIHRoYXQgIkNBU0Ui
IGluIGFuIGFzc2VydGlvbiBuYW1lIG1lYW5zIHRoYXQgY2FzZSBpcyBpZ25vcmVkLgorCitgKlNU
UkVRKmAgYW5kIGAqU1RSTkUqYCBhbHNvIGFjY2VwdCB3aWRlIEMgc3RyaW5ncyAoYHdjaGFyX3Qq
YCkuIElmIGEKK2NvbXBhcmlzb24gb2YgdHdvIHdpZGUgc3RyaW5ncyBmYWlscywgdGhlaXIgdmFs
dWVzIHdpbGwgYmUgcHJpbnRlZCBhcyBVVEYtOAorbmFycm93IHN0cmluZ3MuCisKK0EgYE5VTExg
IHBvaW50ZXIgYW5kIGFuIGVtcHR5IHN0cmluZyBhcmUgY29uc2lkZXJlZCBfZGlmZmVyZW50Xy4K
KworX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKK1NlZSBhbHNvOiBGb3Ig
bW9yZSBzdHJpbmcgY29tcGFyaXNvbiB0cmlja3MgKHN1YnN0cmluZywgcHJlZml4LCBzdWZmaXgs
IGFuZAorcmVndWxhciBleHByZXNzaW9uIG1hdGNoaW5nLCBmb3IgZXhhbXBsZSksIHNlZSB0aGUg
W0FkdmFuY2VkIEdvb2dsZSBUZXN0IEd1aWRlXShWMV83X0FkdmFuY2VkR3VpZGUubWQpLgorCisj
IFNpbXBsZSBUZXN0cyAjCisKK1RvIGNyZWF0ZSBhIHRlc3Q6CisgIDEuIFVzZSB0aGUgYFRFU1Qo
KWAgbWFjcm8gdG8gZGVmaW5lIGFuZCBuYW1lIGEgdGVzdCBmdW5jdGlvbiwgVGhlc2UgYXJlIG9y
ZGluYXJ5IEMrKyBmdW5jdGlvbnMgdGhhdCBkb24ndCByZXR1cm4gYSB2YWx1ZS4KKyAgMS4gSW4g
dGhpcyBmdW5jdGlvbiwgYWxvbmcgd2l0aCBhbnkgdmFsaWQgQysrIHN0YXRlbWVudHMgeW91IHdh
bnQgdG8gaW5jbHVkZSwgdXNlIHRoZSB2YXJpb3VzIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgdG8g
Y2hlY2sgdmFsdWVzLgorICAxLiBUaGUgdGVzdCdzIHJlc3VsdCBpcyBkZXRlcm1pbmVkIGJ5IHRo
ZSBhc3NlcnRpb25zOyBpZiBhbnkgYXNzZXJ0aW9uIGluIHRoZSB0ZXN0IGZhaWxzIChlaXRoZXIg
ZmF0YWxseSBvciBub24tZmF0YWxseSksIG9yIGlmIHRoZSB0ZXN0IGNyYXNoZXMsIHRoZSBlbnRp
cmUgdGVzdCBmYWlscy4gT3RoZXJ3aXNlLCBpdCBzdWNjZWVkcy4KKworYGBgCitURVNUKHRlc3Rf
Y2FzZV9uYW1lLCB0ZXN0X25hbWUpIHsKKyAuLi4gdGVzdCBib2R5IC4uLgorfQorYGBgCisKKwor
YFRFU1QoKWAgYXJndW1lbnRzIGdvIGZyb20gZ2VuZXJhbCB0byBzcGVjaWZpYy4gVGhlIF9maXJz
dF8gYXJndW1lbnQgaXMgdGhlCituYW1lIG9mIHRoZSB0ZXN0IGNhc2UsIGFuZCB0aGUgX3NlY29u
ZF8gYXJndW1lbnQgaXMgdGhlIHRlc3QncyBuYW1lIHdpdGhpbiB0aGUKK3Rlc3QgY2FzZS4gQm90
aCBuYW1lcyBtdXN0IGJlIHZhbGlkIEMrKyBpZGVudGlmaWVycywgYW5kIHRoZXkgc2hvdWxkIG5v
dCBjb250YWluIHVuZGVyc2NvcmUgKGBfYCkuIEEgdGVzdCdzIF9mdWxsIG5hbWVfIGNvbnNpc3Rz
IG9mIGl0cyBjb250YWluaW5nIHRlc3QgY2FzZSBhbmQgaXRzCitpbmRpdmlkdWFsIG5hbWUuIFRl
c3RzIGZyb20gZGlmZmVyZW50IHRlc3QgY2FzZXMgY2FuIGhhdmUgdGhlIHNhbWUgaW5kaXZpZHVh
bAorbmFtZS4KKworRm9yIGV4YW1wbGUsIGxldCdzIHRha2UgYSBzaW1wbGUgaW50ZWdlciBmdW5j
dGlvbjoKK2BgYAoraW50IEZhY3RvcmlhbChpbnQgbik7IC8vIFJldHVybnMgdGhlIGZhY3Rvcmlh
bCBvZiBuCitgYGAKKworQSB0ZXN0IGNhc2UgZm9yIHRoaXMgZnVuY3Rpb24gbWlnaHQgbG9vayBs
aWtlOgorYGBgCisvLyBUZXN0cyBmYWN0b3JpYWwgb2YgMC4KK1RFU1QoRmFjdG9yaWFsVGVzdCwg
SGFuZGxlc1plcm9JbnB1dCkgeworICBFWFBFQ1RfRVEoMSwgRmFjdG9yaWFsKDApKTsKK30KKwor
Ly8gVGVzdHMgZmFjdG9yaWFsIG9mIHBvc2l0aXZlIG51bWJlcnMuCitURVNUKEZhY3RvcmlhbFRl
c3QsIEhhbmRsZXNQb3NpdGl2ZUlucHV0KSB7CisgIEVYUEVDVF9FUSgxLCBGYWN0b3JpYWwoMSkp
OworICBFWFBFQ1RfRVEoMiwgRmFjdG9yaWFsKDIpKTsKKyAgRVhQRUNUX0VRKDYsIEZhY3Rvcmlh
bCgzKSk7CisgIEVYUEVDVF9FUSg0MDMyMCwgRmFjdG9yaWFsKDgpKTsKK30KK2BgYAorCitHb29n
bGUgVGVzdCBncm91cHMgdGhlIHRlc3QgcmVzdWx0cyBieSB0ZXN0IGNhc2VzLCBzbyBsb2dpY2Fs
bHktcmVsYXRlZCB0ZXN0cworc2hvdWxkIGJlIGluIHRoZSBzYW1lIHRlc3QgY2FzZTsgaW4gb3Ro
ZXIgd29yZHMsIHRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGVpcgorYFRFU1QoKWAgc2hvdWxkIGJl
IHRoZSBzYW1lLiBJbiB0aGUgYWJvdmUgZXhhbXBsZSwgd2UgaGF2ZSB0d28gdGVzdHMsCitgSGFu
ZGxlc1plcm9JbnB1dGAgYW5kIGBIYW5kbGVzUG9zaXRpdmVJbnB1dGAsIHRoYXQgYmVsb25nIHRv
IHRoZSBzYW1lIHRlc3QKK2Nhc2UgYEZhY3RvcmlhbFRlc3RgLgorCitfQXZhaWxhYmlsaXR5Xzog
TGludXgsIFdpbmRvd3MsIE1hYy4KKworIyBUZXN0IEZpeHR1cmVzOiBVc2luZyB0aGUgU2FtZSBE
YXRhIENvbmZpZ3VyYXRpb24gZm9yIE11bHRpcGxlIFRlc3RzICMKKworSWYgeW91IGZpbmQgeW91
cnNlbGYgd3JpdGluZyB0d28gb3IgbW9yZSB0ZXN0cyB0aGF0IG9wZXJhdGUgb24gc2ltaWxhciBk
YXRhLAoreW91IGNhbiB1c2UgYSBfdGVzdCBmaXh0dXJlXy4gSXQgYWxsb3dzIHlvdSB0byByZXVz
ZSB0aGUgc2FtZSBjb25maWd1cmF0aW9uIG9mCitvYmplY3RzIGZvciBzZXZlcmFsIGRpZmZlcmVu
dCB0ZXN0cy4KKworVG8gY3JlYXRlIGEgZml4dHVyZSwganVzdDoKKyAgMS4gRGVyaXZlIGEgY2xh
c3MgZnJvbSBgOjp0ZXN0aW5nOjpUZXN0YCAuIFN0YXJ0IGl0cyBib2R5IHdpdGggYHByb3RlY3Rl
ZDpgIG9yIGBwdWJsaWM6YCBhcyB3ZSdsbCB3YW50IHRvIGFjY2VzcyBmaXh0dXJlIG1lbWJlcnMg
ZnJvbSBzdWItY2xhc3Nlcy4KKyAgMS4gSW5zaWRlIHRoZSBjbGFzcywgZGVjbGFyZSBhbnkgb2Jq
ZWN0cyB5b3UgcGxhbiB0byB1c2UuCisgIDEuIElmIG5lY2Vzc2FyeSwgd3JpdGUgYSBkZWZhdWx0
IGNvbnN0cnVjdG9yIG9yIGBTZXRVcCgpYCBmdW5jdGlvbiB0byBwcmVwYXJlIHRoZSBvYmplY3Rz
IGZvciBlYWNoIHRlc3QuIEEgY29tbW9uIG1pc3Rha2UgaXMgdG8gc3BlbGwgYFNldFVwKClgIGFz
IGBTZXR1cCgpYCB3aXRoIGEgc21hbGwgYHVgIC0gZG9uJ3QgbGV0IHRoYXQgaGFwcGVuIHRvIHlv
dS4KKyAgMS4gSWYgbmVjZXNzYXJ5LCB3cml0ZSBhIGRlc3RydWN0b3Igb3IgYFRlYXJEb3duKClg
IGZ1bmN0aW9uIHRvIHJlbGVhc2UgYW55IHJlc291cmNlcyB5b3UgYWxsb2NhdGVkIGluIGBTZXRV
cCgpYCAuIFRvIGxlYXJuIHdoZW4geW91IHNob3VsZCB1c2UgdGhlIGNvbnN0cnVjdG9yL2Rlc3Ry
dWN0b3IgYW5kIHdoZW4geW91IHNob3VsZCB1c2UgYFNldFVwKCkvVGVhckRvd24oKWAsIHJlYWQg
dGhpcyBbRkFRIGVudHJ5XShWMV83X0ZBUS5tZCNzaG91bGQtaS11c2UtdGhlLWNvbnN0cnVjdG9y
ZGVzdHJ1Y3Rvci1vZi10aGUtdGVzdC1maXh0dXJlLW9yLXRoZS1zZXQtdXB0ZWFyLWRvd24tZnVu
Y3Rpb24pLgorICAxLiBJZiBuZWVkZWQsIGRlZmluZSBzdWJyb3V0aW5lcyBmb3IgeW91ciB0ZXN0
cyB0byBzaGFyZS4KKworV2hlbiB1c2luZyBhIGZpeHR1cmUsIHVzZSBgVEVTVF9GKClgIGluc3Rl
YWQgb2YgYFRFU1QoKWAgYXMgaXQgYWxsb3dzIHlvdSB0bworYWNjZXNzIG9iamVjdHMgYW5kIHN1
YnJvdXRpbmVzIGluIHRoZSB0ZXN0IGZpeHR1cmU6CitgYGAKK1RFU1RfRih0ZXN0X2Nhc2VfbmFt
ZSwgdGVzdF9uYW1lKSB7CisgLi4uIHRlc3QgYm9keSAuLi4KK30KK2BgYAorCitMaWtlIGBURVNU
KClgLCB0aGUgZmlyc3QgYXJndW1lbnQgaXMgdGhlIHRlc3QgY2FzZSBuYW1lLCBidXQgZm9yIGBU
RVNUX0YoKWAKK3RoaXMgbXVzdCBiZSB0aGUgbmFtZSBvZiB0aGUgdGVzdCBmaXh0dXJlIGNsYXNz
LiBZb3UndmUgcHJvYmFibHkgZ3Vlc3NlZDogYF9GYAoraXMgZm9yIGZpeHR1cmUuCisKK1VuZm9y
dHVuYXRlbHksIHRoZSBDKysgbWFjcm8gc3lzdGVtIGRvZXMgbm90IGFsbG93IHVzIHRvIGNyZWF0
ZSBhIHNpbmdsZSBtYWNybwordGhhdCBjYW4gaGFuZGxlIGJvdGggdHlwZXMgb2YgdGVzdHMuIFVz
aW5nIHRoZSB3cm9uZyBtYWNybyBjYXVzZXMgYSBjb21waWxlcgorZXJyb3IuCisKK0Fsc28sIHlv
dSBtdXN0IGZpcnN0IGRlZmluZSBhIHRlc3QgZml4dHVyZSBjbGFzcyBiZWZvcmUgdXNpbmcgaXQg
aW4gYQorYFRFU1RfRigpYCwgb3IgeW91J2xsIGdldCB0aGUgY29tcGlsZXIgZXJyb3IgImB2aXJ0
dWFsIG91dHNpZGUgY2xhc3MKK2RlY2xhcmF0aW9uYCIuCisKK0ZvciBlYWNoIHRlc3QgZGVmaW5l
ZCB3aXRoIGBURVNUX0YoKWAsIEdvb2dsZSBUZXN0IHdpbGw6CisgIDEuIENyZWF0ZSBhIF9mcmVz
aF8gdGVzdCBmaXh0dXJlIGF0IHJ1bnRpbWUKKyAgMS4gSW1tZWRpYXRlbHkgaW5pdGlhbGl6ZSBp
dCB2aWEgYFNldFVwKClgICwKKyAgMS4gUnVuIHRoZSB0ZXN0CisgIDEuIENsZWFuIHVwIGJ5IGNh
bGxpbmcgYFRlYXJEb3duKClgCisgIDEuIERlbGV0ZSB0aGUgdGVzdCBmaXh0dXJlLiAgTm90ZSB0
aGF0IGRpZmZlcmVudCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgaGF2ZSBkaWZmZXJlbnQg
dGVzdCBmaXh0dXJlIG9iamVjdHMsIGFuZCBHb29nbGUgVGVzdCBhbHdheXMgZGVsZXRlcyBhIHRl
c3QgZml4dHVyZSBiZWZvcmUgaXQgY3JlYXRlcyB0aGUgbmV4dCBvbmUuIEdvb2dsZSBUZXN0IGRv
ZXMgbm90IHJldXNlIHRoZSBzYW1lIHRlc3QgZml4dHVyZSBmb3IgbXVsdGlwbGUgdGVzdHMuIEFu
eSBjaGFuZ2VzIG9uZSB0ZXN0IG1ha2VzIHRvIHRoZSBmaXh0dXJlIGRvIG5vdCBhZmZlY3Qgb3Ro
ZXIgdGVzdHMuCisKK0FzIGFuIGV4YW1wbGUsIGxldCdzIHdyaXRlIHRlc3RzIGZvciBhIEZJRk8g
cXVldWUgY2xhc3MgbmFtZWQgYFF1ZXVlYCwgd2hpY2gKK2hhcyB0aGUgZm9sbG93aW5nIGludGVy
ZmFjZToKK2BgYAordGVtcGxhdGUgPHR5cGVuYW1lIEU+IC8vIEUgaXMgdGhlIGVsZW1lbnQgdHlw
ZS4KK2NsYXNzIFF1ZXVlIHsKKyBwdWJsaWM6CisgIFF1ZXVlKCk7CisgIHZvaWQgRW5xdWV1ZShj
b25zdCBFJiBlbGVtZW50KTsKKyAgRSogRGVxdWV1ZSgpOyAvLyBSZXR1cm5zIE5VTEwgaWYgdGhl
IHF1ZXVlIGlzIGVtcHR5LgorICBzaXplX3Qgc2l6ZSgpIGNvbnN0OworICAuLi4KK307CitgYGAK
KworRmlyc3QsIGRlZmluZSBhIGZpeHR1cmUgY2xhc3MuIEJ5IGNvbnZlbnRpb24sIHlvdSBzaG91
bGQgZ2l2ZSBpdCB0aGUgbmFtZQorYEZvb1Rlc3RgIHdoZXJlIGBGb29gIGlzIHRoZSBjbGFzcyBi
ZWluZyB0ZXN0ZWQuCitgYGAKK2NsYXNzIFF1ZXVlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRl
c3QgeworIHByb3RlY3RlZDoKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeworICAgIHExXy5FbnF1
ZXVlKDEpOworICAgIHEyXy5FbnF1ZXVlKDIpOworICAgIHEyXy5FbnF1ZXVlKDMpOworICB9CisK
KyAgLy8gdmlydHVhbCB2b2lkIFRlYXJEb3duKCkge30KKworICBRdWV1ZTxpbnQ+IHEwXzsKKyAg
UXVldWU8aW50PiBxMV87CisgIFF1ZXVlPGludD4gcTJfOworfTsKK2BgYAorCitJbiB0aGlzIGNh
c2UsIGBUZWFyRG93bigpYCBpcyBub3QgbmVlZGVkIHNpbmNlIHdlIGRvbid0IGhhdmUgdG8gY2xl
YW4gdXAgYWZ0ZXIKK2VhY2ggdGVzdCwgb3RoZXIgdGhhbiB3aGF0J3MgYWxyZWFkeSBkb25lIGJ5
IHRoZSBkZXN0cnVjdG9yLgorCitOb3cgd2UnbGwgd3JpdGUgdGVzdHMgdXNpbmcgYFRFU1RfRigp
YCBhbmQgdGhpcyBmaXh0dXJlLgorYGBgCitURVNUX0YoUXVldWVUZXN0LCBJc0VtcHR5SW5pdGlh
bGx5KSB7CisgIEVYUEVDVF9FUSgwLCBxMF8uc2l6ZSgpKTsKK30KKworVEVTVF9GKFF1ZXVlVGVz
dCwgRGVxdWV1ZVdvcmtzKSB7CisgIGludCogbiA9IHEwXy5EZXF1ZXVlKCk7CisgIEVYUEVDVF9F
UShOVUxMLCBuKTsKKworICBuID0gcTFfLkRlcXVldWUoKTsKKyAgQVNTRVJUX1RSVUUobiAhPSBO
VUxMKTsKKyAgRVhQRUNUX0VRKDEsICpuKTsKKyAgRVhQRUNUX0VRKDAsIHExXy5zaXplKCkpOwor
ICBkZWxldGUgbjsKKworICBuID0gcTJfLkRlcXVldWUoKTsKKyAgQVNTRVJUX1RSVUUobiAhPSBO
VUxMKTsKKyAgRVhQRUNUX0VRKDIsICpuKTsKKyAgRVhQRUNUX0VRKDEsIHEyXy5zaXplKCkpOwor
ICBkZWxldGUgbjsKK30KK2BgYAorCitUaGUgYWJvdmUgdXNlcyBib3RoIGBBU1NFUlRfKmAgYW5k
IGBFWFBFQ1RfKmAgYXNzZXJ0aW9ucy4gVGhlIHJ1bGUgb2YgdGh1bWIgaXMKK3RvIHVzZSBgRVhQ
RUNUXypgIHdoZW4geW91IHdhbnQgdGhlIHRlc3QgdG8gY29udGludWUgdG8gcmV2ZWFsIG1vcmUg
ZXJyb3JzCithZnRlciB0aGUgYXNzZXJ0aW9uIGZhaWx1cmUsIGFuZCB1c2UgYEFTU0VSVF8qYCB3
aGVuIGNvbnRpbnVpbmcgYWZ0ZXIgZmFpbHVyZQorZG9lc24ndCBtYWtlIHNlbnNlLiBGb3IgZXhh
bXBsZSwgdGhlIHNlY29uZCBhc3NlcnRpb24gaW4gdGhlIGBEZXF1ZXVlYCB0ZXN0IGlzCitgQVNT
RVJUX1RSVUUobiAhPSBOVUxMKWAsIGFzIHdlIG5lZWQgdG8gZGVyZWZlcmVuY2UgdGhlIHBvaW50
ZXIgYG5gIGxhdGVyLAord2hpY2ggd291bGQgbGVhZCB0byBhIHNlZ2ZhdWx0IHdoZW4gYG5gIGlz
IGBOVUxMYC4KKworV2hlbiB0aGVzZSB0ZXN0cyBydW4sIHRoZSBmb2xsb3dpbmcgaGFwcGVuczoK
KyAgMS4gR29vZ2xlIFRlc3QgY29uc3RydWN0cyBhIGBRdWV1ZVRlc3RgIG9iamVjdCAobGV0J3Mg
Y2FsbCBpdCBgdDFgICkuCisgIDEuIGB0MS5TZXRVcCgpYCBpbml0aWFsaXplcyBgdDFgIC4KKyAg
MS4gVGhlIGZpcnN0IHRlc3QgKCBgSXNFbXB0eUluaXRpYWxseWAgKSBydW5zIG9uIGB0MWAgLgor
ICAxLiBgdDEuVGVhckRvd24oKWAgY2xlYW5zIHVwIGFmdGVyIHRoZSB0ZXN0IGZpbmlzaGVzLgor
ICAxLiBgdDFgIGlzIGRlc3RydWN0ZWQuCisgIDEuIFRoZSBhYm92ZSBzdGVwcyBhcmUgcmVwZWF0
ZWQgb24gYW5vdGhlciBgUXVldWVUZXN0YCBvYmplY3QsIHRoaXMgdGltZSBydW5uaW5nIHRoZSBg
RGVxdWV1ZVdvcmtzYCB0ZXN0LgorCitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1h
Yy4KKworX05vdGVfOiBHb29nbGUgVGVzdCBhdXRvbWF0aWNhbGx5IHNhdmVzIGFsbCBfR29vZ2xl
IFRlc3RfIGZsYWdzIHdoZW4gYSB0ZXN0CitvYmplY3QgaXMgY29uc3RydWN0ZWQsIGFuZCByZXN0
b3JlcyB0aGVtIHdoZW4gaXQgaXMgZGVzdHJ1Y3RlZC4KKworIyBJbnZva2luZyB0aGUgVGVzdHMg
IworCitgVEVTVCgpYCBhbmQgYFRFU1RfRigpYCBpbXBsaWNpdGx5IHJlZ2lzdGVyIHRoZWlyIHRl
c3RzIHdpdGggR29vZ2xlIFRlc3QuIFNvLCB1bmxpa2Ugd2l0aCBtYW55IG90aGVyIEMrKyB0ZXN0
aW5nIGZyYW1ld29ya3MsIHlvdSBkb24ndCBoYXZlIHRvIHJlLWxpc3QgYWxsIHlvdXIgZGVmaW5l
ZCB0ZXN0cyBpbiBvcmRlciB0byBydW4gdGhlbS4KKworQWZ0ZXIgZGVmaW5pbmcgeW91ciB0ZXN0
cywgeW91IGNhbiBydW4gdGhlbSB3aXRoIGBSVU5fQUxMX1RFU1RTKClgICwgd2hpY2ggcmV0dXJu
cyBgMGAgaWYgYWxsIHRoZSB0ZXN0cyBhcmUgc3VjY2Vzc2Z1bCwgb3IgYDFgIG90aGVyd2lzZS4g
Tm90ZSB0aGF0IGBSVU5fQUxMX1RFU1RTKClgIHJ1bnMgX2FsbCB0ZXN0c18gaW4geW91ciBsaW5r
IHVuaXQgLS0gdGhleSBjYW4gYmUgZnJvbSBkaWZmZXJlbnQgdGVzdCBjYXNlcywgb3IgZXZlbiBk
aWZmZXJlbnQgc291cmNlIGZpbGVzLgorCitXaGVuIGludm9rZWQsIHRoZSBgUlVOX0FMTF9URVNU
UygpYCBtYWNybzoKKyAgMS4gU2F2ZXMgdGhlIHN0YXRlIG9mIGFsbCAgR29vZ2xlIFRlc3QgZmxh
Z3MuCisgIDEuIENyZWF0ZXMgYSB0ZXN0IGZpeHR1cmUgb2JqZWN0IGZvciB0aGUgZmlyc3QgdGVz
dC4KKyAgMS4gSW5pdGlhbGl6ZXMgaXQgdmlhIGBTZXRVcCgpYC4KKyAgMS4gUnVucyB0aGUgdGVz
dCBvbiB0aGUgZml4dHVyZSBvYmplY3QuCisgIDEuIENsZWFucyB1cCB0aGUgZml4dHVyZSB2aWEg
YFRlYXJEb3duKClgLgorICAxLiBEZWxldGVzIHRoZSBmaXh0dXJlLgorICAxLiBSZXN0b3JlcyB0
aGUgc3RhdGUgb2YgYWxsIEdvb2dsZSBUZXN0IGZsYWdzLgorICAxLiBSZXBlYXRzIHRoZSBhYm92
ZSBzdGVwcyBmb3IgdGhlIG5leHQgdGVzdCwgdW50aWwgYWxsIHRlc3RzIGhhdmUgcnVuLgorCitJ
biBhZGRpdGlvbiwgaWYgdGhlIHRleHQgZml4dHVyZSdzIGNvbnN0cnVjdG9yIGdlbmVyYXRlcyBh
IGZhdGFsIGZhaWx1cmUgaW4KK3N0ZXAgMiwgdGhlcmUgaXMgbm8gcG9pbnQgZm9yIHN0ZXAgMyAt
IDUgYW5kIHRoZXkgYXJlIHRodXMgc2tpcHBlZC4gU2ltaWxhcmx5LAoraWYgc3RlcCAzIGdlbmVy
YXRlcyBhIGZhdGFsIGZhaWx1cmUsIHN0ZXAgNCB3aWxsIGJlIHNraXBwZWQuCisKK19JbXBvcnRh
bnRfOiBZb3UgbXVzdCBub3QgaWdub3JlIHRoZSByZXR1cm4gdmFsdWUgb2YgYFJVTl9BTExfVEVT
VFMoKWAsIG9yIGBnY2NgCit3aWxsIGdpdmUgeW91IGEgY29tcGlsZXIgZXJyb3IuIFRoZSByYXRp
b25hbGUgZm9yIHRoaXMgZGVzaWduIGlzIHRoYXQgdGhlCithdXRvbWF0ZWQgdGVzdGluZyBzZXJ2
aWNlIGRldGVybWluZXMgd2hldGhlciBhIHRlc3QgaGFzIHBhc3NlZCBiYXNlZCBvbiBpdHMKK2V4
aXQgY29kZSwgbm90IG9uIGl0cyBzdGRvdXQvc3RkZXJyIG91dHB1dDsgdGh1cyB5b3VyIGBtYWlu
KClgIGZ1bmN0aW9uIG11c3QKK3JldHVybiB0aGUgdmFsdWUgb2YgYFJVTl9BTExfVEVTVFMoKWAu
CisKK0Fsc28sIHlvdSBzaG91bGQgY2FsbCBgUlVOX0FMTF9URVNUUygpYCBvbmx5ICoqb25jZSoq
LiBDYWxsaW5nIGl0IG1vcmUgdGhhbiBvbmNlCitjb25mbGljdHMgd2l0aCBzb21lIGFkdmFuY2Vk
IEdvb2dsZSBUZXN0IGZlYXR1cmVzIChlLmcuIHRocmVhZC1zYWZlIGRlYXRoCit0ZXN0cykgYW5k
IHRodXMgaXMgbm90IHN1cHBvcnRlZC4KKworX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dz
LCBNYWMuCisKKyMgV3JpdGluZyB0aGUgbWFpbigpIEZ1bmN0aW9uICMKKworWW91IGNhbiBzdGFy
dCBmcm9tIHRoaXMgYm9pbGVycGxhdGU6CitgYGAKKyNpbmNsdWRlICJ0aGlzL3BhY2thZ2UvZm9v
LmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHsKKworLy8gVGhlIGZp
eHR1cmUgZm9yIHRlc3RpbmcgY2xhc3MgRm9vLgorY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRl
c3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgLy8gWW91IGNhbiByZW1vdmUgYW55IG9yIGFs
bCBvZiB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBpZiBpdHMgYm9keQorICAvLyBpcyBlbXB0eS4K
KworICBGb29UZXN0KCkgeworICAgIC8vIFlvdSBjYW4gZG8gc2V0LXVwIHdvcmsgZm9yIGVhY2gg
dGVzdCBoZXJlLgorICB9CisKKyAgdmlydHVhbCB+Rm9vVGVzdCgpIHsKKyAgICAvLyBZb3UgY2Fu
IGRvIGNsZWFuLXVwIHdvcmsgdGhhdCBkb2Vzbid0IHRocm93IGV4Y2VwdGlvbnMgaGVyZS4KKyAg
fQorCisgIC8vIElmIHRoZSBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvciBhcmUgbm90IGVub3Vn
aCBmb3Igc2V0dGluZyB1cAorICAvLyBhbmQgY2xlYW5pbmcgdXAgZWFjaCB0ZXN0LCB5b3UgY2Fu
IGRlZmluZSB0aGUgZm9sbG93aW5nIG1ldGhvZHM6CisKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkg
eworICAgIC8vIENvZGUgaGVyZSB3aWxsIGJlIGNhbGxlZCBpbW1lZGlhdGVseSBhZnRlciB0aGUg
Y29uc3RydWN0b3IgKHJpZ2h0CisgICAgLy8gYmVmb3JlIGVhY2ggdGVzdCkuCisgIH0KKworICB2
aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgLy8gQ29kZSBoZXJlIHdpbGwgYmUgY2FsbGVk
IGltbWVkaWF0ZWx5IGFmdGVyIGVhY2ggdGVzdCAocmlnaHQKKyAgICAvLyBiZWZvcmUgdGhlIGRl
c3RydWN0b3IpLgorICB9CisKKyAgLy8gT2JqZWN0cyBkZWNsYXJlZCBoZXJlIGNhbiBiZSB1c2Vk
IGJ5IGFsbCB0ZXN0cyBpbiB0aGUgdGVzdCBjYXNlIGZvciBGb28uCit9OworCisvLyBUZXN0cyB0
aGF0IHRoZSBGb286OkJhcigpIG1ldGhvZCBkb2VzIEFiYy4KK1RFU1RfRihGb29UZXN0LCBNZXRo
b2RCYXJEb2VzQWJjKSB7CisgIGNvbnN0IHN0cmluZyBpbnB1dF9maWxlcGF0aCA9ICJ0aGlzL3Bh
Y2thZ2UvdGVzdGRhdGEvbXlpbnB1dGZpbGUuZGF0IjsKKyAgY29uc3Qgc3RyaW5nIG91dHB1dF9m
aWxlcGF0aCA9ICJ0aGlzL3BhY2thZ2UvdGVzdGRhdGEvbXlvdXRwdXRmaWxlLmRhdCI7CisgIEZv
byBmOworICBFWFBFQ1RfRVEoMCwgZi5CYXIoaW5wdXRfZmlsZXBhdGgsIG91dHB1dF9maWxlcGF0
aCkpOworfQorCisvLyBUZXN0cyB0aGF0IEZvbyBkb2VzIFh5ei4KK1RFU1RfRihGb29UZXN0LCBE
b2VzWHl6KSB7CisgIC8vIEV4ZXJjaXNlcyB0aGUgWHl6IGZlYXR1cmUgb2YgRm9vLgorfQorCit9
ICAvLyBuYW1lc3BhY2UKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CisgIDo6
dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworICByZXR1cm4gUlVOX0FMTF9U
RVNUUygpOworfQorYGBgCisKK1RoZSBgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgpYCBmdW5j
dGlvbiBwYXJzZXMgdGhlIGNvbW1hbmQgbGluZSBmb3IgR29vZ2xlCitUZXN0IGZsYWdzLCBhbmQg
cmVtb3ZlcyBhbGwgcmVjb2duaXplZCBmbGFncy4gVGhpcyBhbGxvd3MgdGhlIHVzZXIgdG8gY29u
dHJvbCBhCit0ZXN0IHByb2dyYW0ncyBiZWhhdmlvciB2aWEgdmFyaW91cyBmbGFncywgd2hpY2gg
d2UnbGwgY292ZXIgaW4gW0FkdmFuY2VkR3VpZGVdKFYxXzdfQWR2YW5jZWRHdWlkZS5tZCkuCitZ
b3UgbXVzdCBjYWxsIHRoaXMgZnVuY3Rpb24gYmVmb3JlIGNhbGxpbmcgYFJVTl9BTExfVEVTVFMo
KWAsIG9yIHRoZSBmbGFncword29uJ3QgYmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuCisKK09uIFdp
bmRvd3MsIGBJbml0R29vZ2xlVGVzdCgpYCBhbHNvIHdvcmtzIHdpdGggd2lkZSBzdHJpbmdzLCBz
byBpdCBjYW4gYmUgdXNlZAoraW4gcHJvZ3JhbXMgY29tcGlsZWQgaW4gYFVOSUNPREVgIG1vZGUg
YXMgd2VsbC4KKworQnV0IG1heWJlIHlvdSB0aGluayB0aGF0IHdyaXRpbmcgYWxsIHRob3NlIG1h
aW4oKSBmdW5jdGlvbnMgaXMgdG9vIG11Y2ggd29yaz8gV2UgYWdyZWUgd2l0aCB5b3UgY29tcGxl
dGVseSBhbmQgdGhhdCdzIHdoeSBHb29nbGUgVGVzdCBwcm92aWRlcyBhIGJhc2ljIGltcGxlbWVu
dGF0aW9uIG9mIG1haW4oKS4gSWYgaXQgZml0cyB5b3VyIG5lZWRzLCB0aGVuIGp1c3QgbGluayB5
b3VyIHRlc3Qgd2l0aCBndGVzdFxfbWFpbiBsaWJyYXJ5IGFuZCB5b3UgYXJlIGdvb2QgdG8gZ28u
CisKKyMjIEltcG9ydGFudCBub3RlIGZvciBWaXN1YWwgQysrIHVzZXJzICMjCitJZiB5b3UgcHV0
IHlvdXIgdGVzdHMgaW50byBhIGxpYnJhcnkgYW5kIHlvdXIgYG1haW4oKWAgZnVuY3Rpb24gaXMg
aW4gYSBkaWZmZXJlbnQgbGlicmFyeSBvciBpbiB5b3VyIC5leGUgZmlsZSwgdGhvc2UgdGVzdHMg
d2lsbCBub3QgcnVuLiBUaGUgcmVhc29uIGlzIGEgW2J1Z10oaHR0cHM6Ly9jb25uZWN0Lm1pY3Jv
c29mdC5jb20vZmVlZGJhY2svdmlld2ZlZWRiYWNrLmFzcHg/RmVlZGJhY2tJRD0yNDQ0MTAmc2l0
ZWlkPTIxMCkgaW4gVmlzdWFsIEMrKy4gV2hlbiB5b3UgZGVmaW5lIHlvdXIgdGVzdHMsIEdvb2ds
ZSBUZXN0IGNyZWF0ZXMgY2VydGFpbiBzdGF0aWMgb2JqZWN0cyB0byByZWdpc3RlciB0aGVtLiBU
aGVzZSBvYmplY3RzIGFyZSBub3QgcmVmZXJlbmNlZCBmcm9tIGVsc2V3aGVyZSBidXQgdGhlaXIg
Y29uc3RydWN0b3JzIGFyZSBzdGlsbCBzdXBwb3NlZCB0byBydW4uIFdoZW4gVmlzdWFsIEMrKyBs
aW5rZXIgc2VlcyB0aGF0IG5vdGhpbmcgaW4gdGhlIGxpYnJhcnkgaXMgcmVmZXJlbmNlZCBmcm9t
IG90aGVyIHBsYWNlcyBpdCB0aHJvd3MgdGhlIGxpYnJhcnkgb3V0LiBZb3UgaGF2ZSB0byByZWZl
cmVuY2UgeW91ciBsaWJyYXJ5IHdpdGggdGVzdHMgZnJvbSB5b3VyIG1haW4gcHJvZ3JhbSB0byBr
ZWVwIHRoZSBsaW5rZXIgZnJvbSBkaXNjYXJkaW5nIGl0LiBIZXJlIGlzIGhvdyB0byBkbyBpdC4g
U29tZXdoZXJlIGluIHlvdXIgbGlicmFyeSBjb2RlIGRlY2xhcmUgYSBmdW5jdGlvbjoKK2BgYAor
X19kZWNsc3BlYyhkbGxleHBvcnQpIGludCBQdWxsSW5NeUxpYnJhcnkoKSB7IHJldHVybiAwOyB9
CitgYGAKK0lmIHlvdSBwdXQgeW91ciB0ZXN0cyBpbiBhIHN0YXRpYyBsaWJyYXJ5IChub3QgRExM
KSB0aGVuIGBfX2RlY2xzcGVjKGRsbGV4cG9ydClgIGlzIG5vdCByZXF1aXJlZC4gTm93LCBpbiB5
b3VyIG1haW4gcHJvZ3JhbSwgd3JpdGUgYSBjb2RlIHRoYXQgaW52b2tlcyB0aGF0IGZ1bmN0aW9u
OgorYGBgCitpbnQgUHVsbEluTXlMaWJyYXJ5KCk7CitzdGF0aWMgaW50IGR1bW15ID0gUHVsbElu
TXlMaWJyYXJ5KCk7CitgYGAKK1RoaXMgd2lsbCBrZWVwIHlvdXIgdGVzdHMgcmVmZXJlbmNlZCBh
bmQgd2lsbCBtYWtlIHRoZW0gcmVnaXN0ZXIgdGhlbXNlbHZlcyBhdCBzdGFydHVwLgorCitJbiBh
ZGRpdGlvbiwgaWYgeW91IGRlZmluZSB5b3VyIHRlc3RzIGluIGEgc3RhdGljIGxpYnJhcnksIGFk
ZCBgL09QVDpOT1JFRmAgdG8geW91ciBtYWluIHByb2dyYW0gbGlua2VyIG9wdGlvbnMuIElmIHlv
dSB1c2UgTVNWQysrIElERSwgZ28gdG8geW91ciAuZXhlIHByb2plY3QgcHJvcGVydGllcy9Db25m
aWd1cmF0aW9uIFByb3BlcnRpZXMvTGlua2VyL09wdGltaXphdGlvbiBhbmQgc2V0IFJlZmVyZW5j
ZXMgc2V0dGluZyB0byBgS2VlcCBVbnJlZmVyZW5jZWQgRGF0YSAoL09QVDpOT1JFRilgLiBUaGlz
IHdpbGwga2VlcCBWaXN1YWwgQysrIGxpbmtlciBmcm9tIGRpc2NhcmRpbmcgaW5kaXZpZHVhbCBz
eW1ib2xzIGdlbmVyYXRlZCBieSB5b3VyIHRlc3RzIGZyb20gdGhlIGZpbmFsIGV4ZWN1dGFibGUu
CisKK1RoZXJlIGlzIG9uZSBtb3JlIHBpdGZhbGwsIHRob3VnaC4gSWYgeW91IHVzZSBHb29nbGUg
VGVzdCBhcyBhIHN0YXRpYyBsaWJyYXJ5ICh0aGF0J3MgaG93IGl0IGlzIGRlZmluZWQgaW4gZ3Rl
c3QudmNwcm9qKSB5b3VyIHRlc3RzIG11c3QgYWxzbyByZXNpZGUgaW4gYSBzdGF0aWMgbGlicmFy
eS4gSWYgeW91IGhhdmUgdG8gaGF2ZSB0aGVtIGluIGEgRExMLCB5b3UgX211c3RfIGNoYW5nZSBH
b29nbGUgVGVzdCB0byBidWlsZCBpbnRvIGEgRExMIGFzIHdlbGwuIE90aGVyd2lzZSB5b3VyIHRl
c3RzIHdpbGwgbm90IHJ1biBjb3JyZWN0bHkgb3Igd2lsbCBub3QgcnVuIGF0IGFsbC4gVGhlIGdl
bmVyYWwgY29uY2x1c2lvbiBoZXJlIGlzOiBtYWtlIHlvdXIgbGlmZSBlYXNpZXIgLSBkbyBub3Qg
d3JpdGUgeW91ciB0ZXN0cyBpbiBsaWJyYXJpZXMhCisKKyMgV2hlcmUgdG8gR28gZnJvbSBIZXJl
ICMKKworQ29uZ3JhdHVsYXRpb25zISBZb3UndmUgbGVhcm5lZCB0aGUgR29vZ2xlIFRlc3QgYmFz
aWNzLiBZb3UgY2FuIHN0YXJ0IHdyaXRpbmcKK2FuZCBydW5uaW5nIEdvb2dsZSBUZXN0IHRlc3Rz
LCByZWFkIHNvbWUgW3NhbXBsZXNdKFYxXzdfU2FtcGxlcy5tZCksIG9yIGNvbnRpbnVlIHdpdGgK
K1tBZHZhbmNlZEd1aWRlXShWMV83X0FkdmFuY2VkR3VpZGUubWQpLCB3aGljaCBkZXNjcmliZXMg
bWFueSBtb3JlIHVzZWZ1bCBHb29nbGUgVGVzdCBmZWF0dXJlcy4KKworIyBLbm93biBMaW1pdGF0
aW9ucyAjCisKK0dvb2dsZSBUZXN0IGlzIGRlc2lnbmVkIHRvIGJlIHRocmVhZC1zYWZlLiAgVGhl
IGltcGxlbWVudGF0aW9uIGlzCit0aHJlYWQtc2FmZSBvbiBzeXN0ZW1zIHdoZXJlIHRoZSBgcHRo
cmVhZHNgIGxpYnJhcnkgaXMgYXZhaWxhYmxlLiAgSXQKK2lzIGN1cnJlbnRseSBfdW5zYWZlXyB0
byB1c2UgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBmcm9tIHR3byB0aHJlYWRzCitjb25jdXJyZW50
bHkgb24gb3RoZXIgc3lzdGVtcyAoZS5nLiBXaW5kb3dzKS4gIEluIG1vc3QgdGVzdHMgdGhpcyBp
cworbm90IGFuIGlzc3VlIGFzIHVzdWFsbHkgdGhlIGFzc2VydGlvbnMgYXJlIGRvbmUgaW4gdGhl
IG1haW4gdGhyZWFkLiBJZgoreW91IHdhbnQgdG8gaGVscCwgeW91IGNhbiB2b2x1bnRlZXIgdG8g
aW1wbGVtZW50IHRoZSBuZWNlc3NhcnkKK3N5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIGluIGBn
dGVzdC1wb3J0LmhgIGZvciB5b3VyIHBsYXRmb3JtLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
ZG9jcy9WMV83X1B1bXBNYW51YWwubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1YxXzdfUHVtcE1hbnVh
bC5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44MTg0ZjE1M2NhMmVjYWQ3YzY1Y2I1OGMyN2ZiMzFiZDcyMzc1ZmVl
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9WMV83X1B1bXBNYW51YWwubWQK
QEAgLTAsMCArMSwxNzcgQEAKKworCis8Yj5QPC9iPnVtcCBpcyA8Yj5VPC9iPnNlZnVsIGZvciA8
Yj5NPC9iPmV0YSA8Yj5QPC9iPnJvZ3JhbW1pbmcuCisKKyMgVGhlIFByb2JsZW0gIworCitUZW1w
bGF0ZSBhbmQgbWFjcm8gbGlicmFyaWVzIG9mdGVuIG5lZWQgdG8gZGVmaW5lIG1hbnkgY2xhc3Nl
cywKK2Z1bmN0aW9ucywgb3IgbWFjcm9zIHRoYXQgdmFyeSBvbmx5IChvciBhbG1vc3Qgb25seSkg
aW4gdGhlIG51bWJlciBvZgorYXJndW1lbnRzIHRoZXkgdGFrZS4gSXQncyBhIGxvdCBvZiByZXBl
dGl0aXZlLCBtZWNoYW5pY2FsLCBhbmQKK2Vycm9yLXByb25lIHdvcmsuCisKK1ZhcmlhZGljIHRl
bXBsYXRlcyBhbmQgdmFyaWFkaWMgbWFjcm9zIGNhbiBhbGxldmlhdGUgdGhlIHByb2JsZW0uCitI
b3dldmVyLCB3aGlsZSBib3RoIGFyZSBiZWluZyBjb25zaWRlcmVkIGJ5IHRoZSBDKysgY29tbWl0
dGVlLCBuZWl0aGVyCitpcyBpbiB0aGUgc3RhbmRhcmQgeWV0IG9yIHdpZGVseSBzdXBwb3J0ZWQg
YnkgY29tcGlsZXJzLiAgVGh1cyB0aGV5CithcmUgb2Z0ZW4gbm90IGEgZ29vZCBjaG9pY2UsIGVz
cGVjaWFsbHkgd2hlbiB5b3VyIGNvZGUgbmVlZHMgdG8gYmUKK3BvcnRhYmxlLiBBbmQgdGhlaXIg
Y2FwYWJpbGl0aWVzIGFyZSBzdGlsbCBsaW1pdGVkLgorCitBcyBhIHJlc3VsdCwgYXV0aG9ycyBv
ZiBzdWNoIGxpYnJhcmllcyBvZnRlbiBoYXZlIHRvIHdyaXRlIHNjcmlwdHMgdG8KK2dlbmVyYXRl
IHRoZWlyIGltcGxlbWVudGF0aW9uLiBIb3dldmVyLCBvdXIgZXhwZXJpZW5jZSBpcyB0aGF0IGl0
J3MKK3RlZGlvdXMgdG8gd3JpdGUgc3VjaCBzY3JpcHRzLCB3aGljaCB0ZW5kIHRvIHJlZmxlY3Qg
dGhlIHN0cnVjdHVyZSBvZgordGhlIGdlbmVyYXRlZCBjb2RlIHBvb3JseSBhbmQgYXJlIG9mdGVu
IGhhcmQgdG8gcmVhZCBhbmQgZWRpdC4gRm9yCitleGFtcGxlLCBhIHNtYWxsIGNoYW5nZSBuZWVk
ZWQgaW4gdGhlIGdlbmVyYXRlZCBjb2RlIG1heSByZXF1aXJlIHNvbWUKK25vbi1pbnR1aXRpdmUs
IG5vbi10cml2aWFsIGNoYW5nZXMgaW4gdGhlIHNjcmlwdC4gVGhpcyBpcyBlc3BlY2lhbGx5Citw
YWluZnVsIHdoZW4gZXhwZXJpbWVudGluZyB3aXRoIHRoZSBjb2RlLgorCisjIE91ciBTb2x1dGlv
biAjCisKK1B1bXAgKGZvciBQdW1wIGlzIFVzZWZ1bCBmb3IgTWV0YSBQcm9ncmFtbWluZywgUHJl
dHR5IFVzZWZ1bCBmb3IgTWV0YQorUHJvZ3JhbW1pbmcsIG9yIFByYWN0aWNhbCBVdGlsaXR5IGZv
ciBNZXRhIFByb2dyYW1taW5nLCB3aGljaGV2ZXIgeW91CitwcmVmZXIpIGlzIGEgc2ltcGxlIG1l
dGEtcHJvZ3JhbW1pbmcgdG9vbCBmb3IgQysrLiBUaGUgaWRlYSBpcyB0aGF0IGEKK3Byb2dyYW1t
ZXIgd3JpdGVzIGEgYGZvby5wdW1wYCBmaWxlIHdoaWNoIGNvbnRhaW5zIEMrKyBjb2RlIHBsdXMg
bWV0YQorY29kZSB0aGF0IG1hbmlwdWxhdGVzIHRoZSBDKysgY29kZS4gVGhlIG1ldGEgY29kZSBj
YW4gaGFuZGxlCitpdGVyYXRpb25zIG92ZXIgYSByYW5nZSwgbmVzdGVkIGl0ZXJhdGlvbnMsIGxv
Y2FsIG1ldGEgdmFyaWFibGUKK2RlZmluaXRpb25zLCBzaW1wbGUgYXJpdGhtZXRpYywgYW5kIGNv
bmRpdGlvbmFsIGV4cHJlc3Npb25zLiBZb3UgY2FuCit2aWV3IGl0IGFzIGEgc21hbGwgRG9tYWlu
LVNwZWNpZmljIExhbmd1YWdlLiBUaGUgbWV0YSBsYW5ndWFnZSBpcworZGVzaWduZWQgdG8gYmUg
bm9uLWludHJ1c2l2ZSAocy50LiBpdCB3b24ndCBjb25mdXNlIEVtYWNzJyBDKysgbW9kZSwKK2Zv
ciBleGFtcGxlKSBhbmQgY29uY2lzZSwgbWFraW5nIFB1bXAgY29kZSBpbnR1aXRpdmUgYW5kIGVh
c3kgdG8KK21haW50YWluLgorCisjIyBIaWdobGlnaHRzICMjCisKKyAgKiBUaGUgaW1wbGVtZW50
YXRpb24gaXMgaW4gYSBzaW5nbGUgUHl0aG9uIHNjcmlwdCBhbmQgdGh1cyB1bHRyYSBwb3J0YWJs
ZTogbm8gYnVpbGQgb3IgaW5zdGFsbGF0aW9uIGlzIG5lZWRlZCBhbmQgaXQgd29ya3MgY3Jvc3Mg
cGxhdGZvcm1zLgorICAqIFB1bXAgdHJpZXMgdG8gYmUgc21hcnQgd2l0aCByZXNwZWN0IHRvIFtH
b29nbGUncyBzdHlsZSBndWlkZV0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZS1zdHls
ZWd1aWRlLyk6IGl0IGJyZWFrcyBsb25nIGxpbmVzIChlYXN5IHRvIGhhdmUgd2hlbiB0aGV5IGFy
ZSBnZW5lcmF0ZWQpIGF0IGFjY2VwdGFibGUgcGxhY2VzIHRvIGZpdCB3aXRoaW4gODAgY29sdW1u
cyBhbmQgaW5kZW50IHRoZSBjb250aW51YXRpb24gbGluZXMgY29ycmVjdGx5LgorICAqIFRoZSBm
b3JtYXQgaXMgaHVtYW4tcmVhZGFibGUgYW5kIG1vcmUgY29uY2lzZSB0aGFuIFhNTC4KKyAgKiBU
aGUgZm9ybWF0IHdvcmtzIHJlbGF0aXZlbHkgd2VsbCB3aXRoIEVtYWNzJyBDKysgbW9kZS4KKwor
IyMgRXhhbXBsZXMgIyMKKworVGhlIGZvbGxvd2luZyBQdW1wIGNvZGUgKHdoZXJlIG1ldGEga2V5
d29yZHMgc3RhcnQgd2l0aCBgJGAsIGBbW2AgYW5kIGBdXWAgYXJlIG1ldGEgYnJhY2tldHMsIGFu
ZCBgJCRgIHN0YXJ0cyBhIG1ldGEgY29tbWVudCB0aGF0IGVuZHMgd2l0aCB0aGUgbGluZSk6CisK
K2BgYAorJHZhciBuID0gMyAgICAgJCQgRGVmaW5lcyBhIG1ldGEgdmFyaWFibGUgbi4KKyRyYW5n
ZSBpIDAuLm4gICQkIERlY2xhcmVzIHRoZSByYW5nZSBvZiBtZXRhIGl0ZXJhdG9yIGkgKGluY2x1
c2l2ZSkuCiskZm9yIGkgW1sKKyAgICAgICAgICAgICAgICQkIE1ldGEgbG9vcC4KKy8vIEZvbyRp
IGRvZXMgYmxhaCBmb3IgJGktYXJ5IHByZWRpY2F0ZXMuCiskcmFuZ2UgaiAxLi5pCit0ZW1wbGF0
ZSA8c2l6ZV90IE4gJGZvciBqIFtbLCB0eXBlbmFtZSBBJGpdXT4KK2NsYXNzIEZvbyRpIHsKKyRp
ZiBpID09IDAgW1sKKyAgYmxhaCBhOworXV0gJGVsaWYgaSA8PSAyIFtbCisgIGJsYWggYjsKK11d
ICRlbHNlIFtbCisgIGJsYWggYzsKK11dCit9OworCitdXQorYGBgCisKK3dpbGwgYmUgdHJhbnNs
YXRlZCBieSB0aGUgUHVtcCBjb21waWxlciB0bzoKKworYGBgCisvLyBGb28wIGRvZXMgYmxhaCBm
b3IgMC1hcnkgcHJlZGljYXRlcy4KK3RlbXBsYXRlIDxzaXplX3QgTj4KK2NsYXNzIEZvbzAgewor
ICBibGFoIGE7Cit9OworCisvLyBGb28xIGRvZXMgYmxhaCBmb3IgMS1hcnkgcHJlZGljYXRlcy4K
K3RlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgQTE+CitjbGFzcyBGb28xIHsKKyAgYmxhaCBi
OworfTsKKworLy8gRm9vMiBkb2VzIGJsYWggZm9yIDItYXJ5IHByZWRpY2F0ZXMuCit0ZW1wbGF0
ZSA8c2l6ZV90IE4sIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMj4KK2NsYXNzIEZvbzIgeworICBi
bGFoIGI7Cit9OworCisvLyBGb28zIGRvZXMgYmxhaCBmb3IgMy1hcnkgcHJlZGljYXRlcy4KK3Rl
bXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMz4K
K2NsYXNzIEZvbzMgeworICBibGFoIGM7Cit9OworYGBgCisKK0luIGFub3RoZXIgZXhhbXBsZSwK
KworYGBgCiskcmFuZ2UgaSAxLi5uCitGdW5jKCRmb3IgaSArIFtbYSRpXV0pOworJCQgVGhlIHRl
eHQgYmV0d2VlbiBpIGFuZCBbWyBpcyB0aGUgc2VwYXJhdG9yIGJldHdlZW4gaXRlcmF0aW9ucy4K
K2BgYAorCit3aWxsIGdlbmVyYXRlIG9uZSBvZiB0aGUgZm9sbG93aW5nIGxpbmVzICh3aXRob3V0
IHRoZSBjb21tZW50cyksIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgYG5gOgorCitgYGAKK0Z1
bmMoKTsgICAgICAgICAgICAgIC8vIElmIG4gaXMgMC4KK0Z1bmMoYTEpOyAgICAgICAgICAgIC8v
IElmIG4gaXMgMS4KK0Z1bmMoYTEgKyBhMik7ICAgICAgIC8vIElmIG4gaXMgMi4KK0Z1bmMoYTEg
KyBhMiArIGEzKTsgIC8vIElmIG4gaXMgMy4KKy8vIEFuZCBzbyBvbi4uLgorYGBgCisKKyMjIENv
bnN0cnVjdHMgIyMKKworV2Ugc3VwcG9ydCB0aGUgZm9sbG93aW5nIG1ldGEgcHJvZ3JhbW1pbmcg
Y29uc3RydWN0czoKKworfCBgJHZhciBpZCA9IGV4cGAgfCBEZWZpbmVzIGEgbmFtZWQgY29uc3Rh
bnQgdmFsdWUuIGAkaWRgIGlzIHZhbGlkIHV0aWwgdGhlIGVuZCBvZiB0aGUgY3VycmVudCBtZXRh
IGxleGljYWwgYmxvY2suIHwKK3w6LS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS18Cit8IGAkcmFuZ2UgaWQgZXhwLi5leHBgIHwgU2V0cyB0aGUg
cmFuZ2Ugb2YgYW4gaXRlcmF0aW9uIHZhcmlhYmxlLCB3aGljaCBjYW4gYmUgcmV1c2VkIGluIG11
bHRpcGxlIGxvb3BzIGxhdGVyLiAgICAgICAgICB8Cit8IGAkZm9yIGlkIHNlcCBbWyBjb2RlIF1d
YCB8IEl0ZXJhdGlvbi4gVGhlIHJhbmdlIG9mIGBpZGAgbXVzdCBoYXZlIGJlZW4gZGVmaW5lZCBl
YXJsaWVyLiBgJGlkYCBpcyB2YWxpZCBpbiBgY29kZWAuICAgICAgICAgfAorfCBgJCgkKWAgICAg
ICAgICAgfCBHZW5lcmF0ZXMgYSBzaW5nbGUgYCRgIGNoYXJhY3Rlci4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYCRpZGAg
ICAgICAgICAgIHwgVmFsdWUgb2YgdGhlIG5hbWVkIGNvbnN0YW50IG9yIGl0ZXJhdGlvbiB2YXJp
YWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8IGAk
KGV4cClgICAgICAgICB8IFZhbHVlIG9mIHRoZSBleHByZXNzaW9uLiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor
fCBgJGlmIGV4cCBbWyBjb2RlIF1dIGVsc2VfYnJhbmNoYCB8IENvbmRpdGlvbmFsLiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfAorfCBgW1sgY29kZSBdXWAgICAgfCBNZXRhIGxleGljYWwgYmxv
Y2suICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYGNwcF9jb2RlYCAgICAgIHwgUmF3IEMrKyBjb2Rl
LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8IGAkJCBjb21tZW50YCAgICB8IE1ldGEgY29t
bWVudC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorCisqKk5vdGU6KiogVG8gZ2l2ZSB0aGUg
dXNlciBzb21lIGZyZWVkb20gaW4gZm9ybWF0dGluZyB0aGUgUHVtcCBzb3VyY2UKK2NvZGUsIFB1
bXAgaWdub3JlcyBhIG5ldy1saW5lIGNoYXJhY3RlciBpZiBpdCdzIHJpZ2h0IGFmdGVyIGAkZm9y
IGZvb2AKK29yIG5leHQgdG8gYFtbYCBvciBgXV1gLiBXaXRob3V0IHRoaXMgcnVsZSB5b3UnbGwg
b2Z0ZW4gYmUgZm9yY2VkIHRvIHdyaXRlCit2ZXJ5IGxvbmcgbGluZXMgdG8gZ2V0IHRoZSBkZXNp
cmVkIG91dHB1dC4gVGhlcmVmb3JlIHNvbWV0aW1lcyB5b3UgbWF5CituZWVkIHRvIGluc2VydCBh
biBleHRyYSBuZXctbGluZSBpbiBzdWNoIHBsYWNlcyBmb3IgYSBuZXctbGluZSB0byBzaG93Cit1
cCBpbiB5b3VyIG91dHB1dC4KKworIyMgR3JhbW1hciAjIworCitgYGAKK2NvZGUgOjo9IGF0b21p
Y19jb2RlKgorYXRvbWljX2NvZGUgOjo9ICR2YXIgaWQgPSBleHAKKyAgICB8ICR2YXIgaWQgPSBb
WyBjb2RlIF1dCisgICAgfCAkcmFuZ2UgaWQgZXhwLi5leHAKKyAgICB8ICRmb3IgaWQgc2VwIFtb
IGNvZGUgXV0KKyAgICB8ICQoJCkKKyAgICB8ICRpZAorICAgIHwgJChleHApCisgICAgfCAkaWYg
ZXhwIFtbIGNvZGUgXV0gZWxzZV9icmFuY2gKKyAgICB8IFtbIGNvZGUgXV0KKyAgICB8IGNwcF9j
b2RlCitzZXAgOjo9IGNwcF9jb2RlIHwgZW1wdHlfc3RyaW5nCitlbHNlX2JyYW5jaCA6Oj0gJGVs
c2UgW1sgY29kZSBdXQorICAgIHwgJGVsaWYgZXhwIFtbIGNvZGUgXV0gZWxzZV9icmFuY2gKKyAg
ICB8IGVtcHR5X3N0cmluZworZXhwIDo6PSBzaW1wbGVfZXhwcmVzc2lvbl9pbl9QeXRob25fc3lu
dGF4CitgYGAKKworIyMgQ29kZSAjIworCitZb3UgY2FuIGZpbmQgdGhlIHNvdXJjZSBjb2RlIG9m
IFB1bXAgaW4gW3NjcmlwdHMvcHVtcC5weV0oLi4vc2NyaXB0cy9wdW1wLnB5KS4gSXQgaXMgc3Rp
bGwKK3ZlcnkgdW5wb2xpc2hlZCBhbmQgbGFja3MgYXV0b21hdGVkIHRlc3RzLCBhbHRob3VnaCBp
dCBoYXMgYmVlbgorc3VjY2Vzc2Z1bGx5IHVzZWQgbWFueSB0aW1lcy4gSWYgeW91IGZpbmQgYSBj
aGFuY2UgdG8gdXNlIGl0IGluIHlvdXIKK3Byb2plY3QsIHBsZWFzZSBsZXQgdXMga25vdyB3aGF0
IHlvdSB0aGluayEgIFdlIGFsc28gd2VsY29tZSBoZWxwIG9uCitpbXByb3ZpbmcgUHVtcC4KKwor
IyMgUmVhbCBFeGFtcGxlcyAjIworCitZb3UgY2FuIGZpbmQgcmVhbC13b3JsZCBhcHBsaWNhdGlv
bnMgb2YgUHVtcCBpbiBbR29vZ2xlIFRlc3RdKGh0dHA6Ly93d3cuZ29vZ2xlLmNvbS9jb2Rlc2Vh
cmNoP3E9ZmlsZSUzQVwucHVtcCUyNCtwYWNrYWdlJTNBaHR0cCUzQSUyRiUyRmdvb2dsZXRlc3Rc
Lmdvb2dsZWNvZGVcLmNvbSkgYW5kIFtHb29nbGUgTW9ja10oaHR0cDovL3d3dy5nb29nbGUuY29t
L2NvZGVzZWFyY2g/cT1maWxlJTNBXC5wdW1wJTI0K3BhY2thZ2UlM0FodHRwJTNBJTJGJTJGZ29v
Z2xlbW9ja1wuZ29vZ2xlY29kZVwuY29tKS4gIFRoZSBzb3VyY2UgZmlsZSBgZm9vLmgucHVtcGAg
Z2VuZXJhdGVzIGBmb28uaGAuCisKKyMjIFRpcHMgIyMKKworICAqIElmIGEgbWV0YSB2YXJpYWJs
ZSBpcyBmb2xsb3dlZCBieSBhIGxldHRlciBvciBkaWdpdCwgeW91IGNhbiBzZXBhcmF0ZSB0aGVt
IHVzaW5nIGBbW11dYCwgd2hpY2ggaW5zZXJ0cyBhbiBlbXB0eSBzdHJpbmcuIEZvciBleGFtcGxl
IGBGb28kaltbXV1IZWxwZXJgIGdlbmVyYXRlIGBGb28xSGVscGVyYCB3aGVuIGBqYCBpcyAxLgor
ICAqIFRvIGF2b2lkIGV4dHJhLWxvbmcgUHVtcCBzb3VyY2UgbGluZXMsIHlvdSBjYW4gYnJlYWsg
YSBsaW5lIGFueXdoZXJlIHlvdSB3YW50IGJ5IGluc2VydGluZyBgW1tdXWAgZm9sbG93ZWQgYnkg
YSBuZXcgbGluZS4gU2luY2UgYW55IG5ldy1saW5lIGNoYXJhY3RlciBuZXh0IHRvIGBbW2Agb3Ig
YF1dYCBpcyBpZ25vcmVkLCB0aGUgZ2VuZXJhdGVkIGNvZGUgd29uJ3QgY29udGFpbiB0aGlzIG5l
dyBsaW5lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9WMV83X1NhbXBsZXMubWQgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xldGVzdC9kb2NzL1YxXzdfU2FtcGxlcy5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMjFkMjAwNTY3MzU0
NTdmNmY0OWFlY2M2MTIxOWRhZDIyNjEyYmYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRl
c3QvZG9jcy9WMV83X1NhbXBsZXMubWQKQEAgLTAsMCArMSwxNCBAQAorSWYgeW91J3JlIGxpa2Ug
dXMsIHlvdSdkIGxpa2UgdG8gbG9vayBhdCBzb21lIEdvb2dsZSBUZXN0IHNhbXBsZSBjb2RlLiAg
VGhlCitbc2FtcGxlcyBmb2xkZXJdKC4uL3NhbXBsZXMpIGhhcyBhIG51bWJlciBvZiB3ZWxsLWNv
bW1lbnRlZCBzYW1wbGVzIHNob3dpbmcgaG93IHRvIHVzZSBhCit2YXJpZXR5IG9mIEdvb2dsZSBU
ZXN0IGZlYXR1cmVzLgorCisgICogW1NhbXBsZSAjMV0oLi4vc2FtcGxlcy9zYW1wbGUxX3VuaXR0
ZXN0LmNjKSBzaG93cyB0aGUgYmFzaWMgc3RlcHMgb2YgdXNpbmcgR29vZ2xlIFRlc3QgdG8gdGVz
dCBDKysgZnVuY3Rpb25zLgorICAqIFtTYW1wbGUgIzJdKC4uL3NhbXBsZXMvc2FtcGxlMl91bml0
dGVzdC5jYykgc2hvd3MgYSBtb3JlIGNvbXBsZXggdW5pdCB0ZXN0IGZvciBhIGNsYXNzIHdpdGgg
bXVsdGlwbGUgbWVtYmVyIGZ1bmN0aW9ucy4KKyAgKiBbU2FtcGxlICMzXSguLi9zYW1wbGVzL3Nh
bXBsZTNfdW5pdHRlc3QuY2MpIHVzZXMgYSB0ZXN0IGZpeHR1cmUuCisgICogW1NhbXBsZSAjNF0o
Li4vc2FtcGxlcy9zYW1wbGU0X3VuaXR0ZXN0LmNjKSBpcyBhbm90aGVyIGJhc2ljIGV4YW1wbGUg
b2YgdXNpbmcgR29vZ2xlIFRlc3QuCisgICogW1NhbXBsZSAjNV0oLi4vc2FtcGxlcy9zYW1wbGU1
X3VuaXR0ZXN0LmNjKSB0ZWFjaGVzIGhvdyB0byByZXVzZSBhIHRlc3QgZml4dHVyZSBpbiBtdWx0
aXBsZSB0ZXN0IGNhc2VzIGJ5IGRlcml2aW5nIHN1Yi1maXh0dXJlcyBmcm9tIGl0LgorICAqIFtT
YW1wbGUgIzZdKC4uL3NhbXBsZXMvc2FtcGxlNl91bml0dGVzdC5jYykgZGVtb25zdHJhdGVzIHR5
cGUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KKyAgKiBbU2FtcGxlICM3XSguLi9zYW1wbGVzL3NhbXBs
ZTdfdW5pdHRlc3QuY2MpIHRlYWNoZXMgdGhlIGJhc2ljcyBvZiB2YWx1ZS1wYXJhbWV0ZXJpemVk
IHRlc3RzLgorICAqIFtTYW1wbGUgIzhdKC4uL3NhbXBsZXMvc2FtcGxlOF91bml0dGVzdC5jYykg
c2hvd3MgdXNpbmcgYENvbWJpbmUoKWAgaW4gdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KKyAg
KiBbU2FtcGxlICM5XSguLi9zYW1wbGVzL3NhbXBsZTlfdW5pdHRlc3QuY2MpIHNob3dzIHVzZSBv
ZiB0aGUgbGlzdGVuZXIgQVBJIHRvIG1vZGlmeSBHb29nbGUgVGVzdCdzIGNvbnNvbGUgb3V0cHV0
IGFuZCB0aGUgdXNlIG9mIGl0cyByZWZsZWN0aW9uIEFQSSB0byBpbnNwZWN0IHRlc3QgcmVzdWx0
cy4KKyAgKiBbU2FtcGxlICMxMF0oLi4vc2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdC5jYykgc2hv
d3MgdXNlIG9mIHRoZSBsaXN0ZW5lciBBUEkgdG8gaW1wbGVtZW50IGEgcHJpbWl0aXZlIG1lbW9y
eSBsZWFrIGNoZWNrZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1YxXzdfWGNvZGVH
dWlkZS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfN19YY29kZUd1aWRlLm1kCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmJmMjRiZjUxYmZjNDU0MTJmNjU4YmRkZDUzYTMzMmUxNDlkNzczMDkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2ds
ZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1YxXzdfWGNvZGVHdWlkZS5tZApAQCAtMCwwICsxLDkzIEBA
CisKKworVGhpcyBndWlkZSB3aWxsIGV4cGxhaW4gaG93IHRvIHVzZSB0aGUgR29vZ2xlIFRlc3Rp
bmcgRnJhbWV3b3JrIGluIHlvdXIgWGNvZGUgcHJvamVjdHMgb24gTWFjIE9TIFguIFRoaXMgdHV0
b3JpYWwgYmVnaW5zIGJ5IHF1aWNrbHkgZXhwbGFpbmluZyB3aGF0IHRvIGRvIGZvciBleHBlcmll
bmNlZCB1c2Vycy4gQWZ0ZXIgdGhlIHF1aWNrIHN0YXJ0LCB0aGUgZ3VpZGUgZ29lcyBwcm92aWRl
cyBhZGRpdGlvbmFsIGV4cGxhbmF0aW9uIGFib3V0IGVhY2ggc3RlcC4KKworIyBRdWljayBTdGFy
dCAjCisKK0hlcmUgaXMgdGhlIHF1aWNrIGd1aWRlIGZvciB1c2luZyBHb29nbGUgVGVzdCBpbiB5
b3VyIFhjb2RlIHByb2plY3QuCisKKyAgMS4gRG93bmxvYWQgdGhlIHNvdXJjZSBmcm9tIHRoZSBb
d2Vic2l0ZV0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRlc3QpIHVzaW5nIHRoaXMg
Y29tbWFuZDogYHN2biBjaGVja291dCBodHRwOi8vZ29vZ2xldGVzdC5nb29nbGVjb2RlLmNvbS9z
dm4vdHJ1bmsvIGdvb2dsZXRlc3QtcmVhZC1vbmx5YAorICAxLiBPcGVuIHVwIHRoZSBgZ3Rlc3Qu
eGNvZGVwcm9qYCBpbiB0aGUgYGdvb2dsZXRlc3QtcmVhZC1vbmx5L3hjb2RlL2AgZGlyZWN0b3J5
IGFuZCBidWlsZCB0aGUgZ3Rlc3QuZnJhbWV3b3JrLgorICAxLiBDcmVhdGUgYSBuZXcgIlNoZWxs
IFRvb2wiIHRhcmdldCBpbiB5b3VyIFhjb2RlIHByb2plY3QgY2FsbGVkIHNvbWV0aGluZyBsaWtl
ICJVbml0VGVzdHMiCisgIDEuIEFkZCB0aGUgZ3Rlc3QuZnJhbWV3b3JrIHRvIHlvdXIgcHJvamVj
dCBhbmQgYWRkIGl0IHRvIHRoZSAiTGluayBCaW5hcnkgd2l0aCBMaWJyYXJpZXMiIGJ1aWxkIHBo
YXNlIG9mICJVbml0VGVzdHMiCisgIDEuIEFkZCB5b3VyIHVuaXQgdGVzdCBzb3VyY2UgY29kZSB0
byB0aGUgIkNvbXBpbGUgU291cmNlcyIgYnVpbGQgcGhhc2Ugb2YgIlVuaXRUZXN0cyIKKyAgMS4g
RWRpdCB0aGUgIlVuaXRUZXN0cyIgZXhlY3V0YWJsZSBhbmQgYWRkIGFuIGVudmlyb25tZW50IHZh
cmlhYmxlIG5hbWVkICJEWUxEXF9GUkFNRVdPUktcX1BBVEgiIHdpdGggYSB2YWx1ZSBlcXVhbCB0
byB0aGUgcGF0aCB0byB0aGUgZnJhbWV3b3JrIGNvbnRhaW5pbmcgdGhlIGd0ZXN0LmZyYW1ld29y
ayByZWxhdGl2ZSB0byB0aGUgY29tcGlsZWQgZXhlY3V0YWJsZS4KKyAgMS4gQnVpbGQgYW5kIEdv
CisKK1RoZSBmb2xsb3dpbmcgc2VjdGlvbnMgZnVydGhlciBleHBsYWluIGVhY2ggb2YgdGhlIHN0
ZXBzIGxpc3RlZCBhYm92ZSBpbiBkZXB0aCwgZGVzY3JpYmluZyBpbiBtb3JlIGRldGFpbCBob3cg
dG8gY29tcGxldGUgaXQgaW5jbHVkaW5nIHNvbWUgdmFyaWF0aW9ucy4KKworIyBHZXQgdGhlIFNv
dXJjZSAjCisKK0N1cnJlbnRseSwgdGhlIGd0ZXN0LmZyYW1ld29yayBkaXNjdXNzZWQgaGVyZSBp
c24ndCBhdmFpbGFibGUgaW4gYSB0YWdnZWQgcmVsZWFzZSBvZiBHb29nbGUgVGVzdCwgaXQgaXMg
b25seSBhdmFpbGFibGUgaW4gdGhlIHRydW5rLiBBcyBleHBsYWluZWQgYXQgdGhlIEdvb2dsZSBU
ZXN0IFtzaXRlXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC9zb3VyY2UvY2hl
Y2tvdXQiPnN2biksIHlvdSBjYW4gZ2V0IHRoZSBjb2RlIGZyb20gYW5vbnltb3VzIFNWTiB3aXRo
IHRoaXMgY29tbWFuZDoKKworYGBgCitzdm4gY2hlY2tvdXQgaHR0cDovL2dvb2dsZXRlc3QuZ29v
Z2xlY29kZS5jb20vc3ZuL3RydW5rLyBnb29nbGV0ZXN0LXJlYWQtb25seQorYGBgCisKK0FsdGVy
bmF0aXZlbHksIGlmIHlvdSBhcmUgd29ya2luZyB3aXRoIFN1YnZlcnNpb24gaW4geW91ciBvd24g
Y29kZSBiYXNlLCB5b3UgY2FuIGFkZCBHb29nbGUgVGVzdCBhcyBhbiBleHRlcm5hbCBkZXBlbmRl
bmN5IHRvIHlvdXIgb3duIFN1YnZlcnNpb24gcmVwb3NpdG9yeS4gQnkgZm9sbG93aW5nIHRoaXMg
YXBwcm9hY2gsIGV2ZXJ5b25lIHRoYXQgY2hlY2tzIG91dCB5b3VyIHN2biByZXBvc2l0b3J5IHdp
bGwgYWxzbyByZWNlaXZlIGEgY29weSBvZiBHb29nbGUgVGVzdCAoYSBzcGVjaWZpYyB2ZXJzaW9u
LCBpZiB5b3Ugd2lzaCkgd2l0aG91dCBoYXZpbmcgdG8gY2hlY2sgaXQgb3V0IGV4cGxpY2l0bHku
IFRoaXMgbWFrZXMgdGhlIHNldCB1cCBvZiB5b3VyIHByb2plY3Qgc2ltcGxlciBhbmQgcmVkdWNl
cyB0aGUgY29waWVkIGNvZGUgaW4gdGhlIHJlcG9zaXRvcnkuCisKK1RvIHVzZSBgc3ZuOmV4dGVy
bmFsc2AsIGRlY2lkZSB3aGVyZSB5b3Ugd291bGQgbGlrZSB0byBoYXZlIHRoZSBleHRlcm5hbCBz
b3VyY2UgcmVzaWRlLiBZb3UgbWlnaHQgY2hvb3NlIHRvIHB1dCB0aGUgZXh0ZXJuYWwgc291cmNl
IGluc2lkZSB0aGUgdHJ1bmssIGJlY2F1c2UgeW91IHdhbnQgaXQgdG8gYmUgcGFydCBvZiB0aGUg
YnJhbmNoIHdoZW4geW91IG1ha2UgYSByZWxlYXNlLiBIb3dldmVyLCBrZWVwaW5nIGl0IG91dHNp
ZGUgdGhlIHRydW5rIGluIGEgdmVyc2lvbi10YWdnZWQgZGlyZWN0b3J5IGNhbGxlZCBzb21ldGhp
bmcgbGlrZSBgdGhpcmQtcGFydHkvZ29vZ2xldGVzdC8xLjAuMWAsIGlzIGFub3RoZXIgb3B0aW9u
LiBPbmNlIHRoZSBsb2NhdGlvbiBpcyBlc3RhYmxpc2hlZCwgdXNlIGBzdm4gcHJvcGVkaXQgc3Zu
OmV4dGVybmFscyBfZGlyZWN0b3J5X2AgdG8gc2V0IHRoZSBzdm46ZXh0ZXJuYWxzIHByb3BlcnR5
IG9uIGEgZGlyZWN0b3J5IGluIHlvdXIgcmVwb3NpdG9yeS4gVGhpcyBkaXJlY3Rvcnkgd29uJ3Qg
Y29udGFpbiB0aGUgY29kZSwgYnV0IGJlIGl0cyB2ZXJzaW9uZWQgcGFyZW50IGRpcmVjdG9yeS4K
KworVGhlIGNvbW1hbmQgYHN2biBwcm9wZWRpdGAgd2lsbCBicmluZyB1cCB5b3VyIFN1YnZlcnNp
b24gZWRpdG9yLCBtYWtpbmcgZWRpdGluZyB0aGUgbG9uZywgKHBvdGVudGlhbGx5IG11bHRpLWxp
bmUpIHByb3BlcnR5IHNpbXBsZXIuIFRoaXMgc2FtZSBtZXRob2QgY2FuIGJlIHVzZWQgdG8gY2hl
Y2sgb3V0IGEgdGFnZ2VkIGJyYW5jaCwgYnkgdXNpbmcgdGhlIGFwcHJvcHJpYXRlIFVSTCAoZS5n
LiBgaHR0cDovL2dvb2dsZXRlc3QuZ29vZ2xlY29kZS5jb20vc3ZuL3RhZ3MvcmVsZWFzZS0xLjAu
MWApLiBBZGRpdGlvbmFsbHksIHRoZSBzdm46ZXh0ZXJuYWxzIHByb3BlcnR5IGFsbG93cyB0aGUg
c3BlY2lmaWNhdGlvbiBvZiBhIHBhcnRpY3VsYXIgcmV2aXNpb24gb2YgdGhlIHRydW5rIHdpdGgg
dGhlIGAtcl8jI19gIG9wdGlvbiAoZS5nLiBgZXh0ZXJuYWxzL3NyYy9nb29nbGV0ZXN0IC1yNjAg
aHR0cDovL2dvb2dsZXRlc3QuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rYCkuCisKK0hlcmUgaXMg
YW4gZXhhbXBsZSBvZiB1c2luZyB0aGUgc3ZuOmV4dGVybmFscyBwcm9wZXJ0aWVzIG9uIGEgdHJ1
bmsgKHJlYWQgdmlhIGBzdm4gcHJvcGdldGApIG9mIGEgcHJvamVjdC4gVGhpcyB2YWx1ZSBjaGVj
a3Mgb3V0IGEgY29weSBvZiBHb29nbGUgVGVzdCBpbnRvIHRoZSBgdHJ1bmsvZXh0ZXJuYWxzL3Ny
Yy9nb29nbGV0ZXN0L2AgZGlyZWN0b3J5LgorCitgYGAKK1tDb21wdXRlcjpzdm5dIHVzZXIkIHN2
biBwcm9wZ2V0IHN2bjpleHRlcm5hbHMgdHJ1bmsKK2V4dGVybmFscy9zcmMvZ29vZ2xldGVzdCBo
dHRwOi8vZ29vZ2xldGVzdC5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmsKK2BgYAorCisjIEFkZCB0
aGUgRnJhbWV3b3JrIHRvIFlvdXIgUHJvamVjdCAjCisKK1RoZSBuZXh0IHN0ZXAgaXMgdG8gYnVp
bGQgYW5kIGFkZCB0aGUgZ3Rlc3QuZnJhbWV3b3JrIHRvIHlvdXIgb3duIHByb2plY3QuIFRoaXMg
Z3VpZGUgZGVzY3JpYmVzIHR3byBjb21tb24gd2F5cyBiZWxvdy4KKworICAqICoqT3B0aW9uIDEq
KiAtLS0gVGhlIHNpbXBsZXN0IHdheSB0byBhZGQgR29vZ2xlIFRlc3QgdG8geW91ciBvd24gcHJv
amVjdCwgaXMgdG8gb3BlbiBndGVzdC54Y29kZXByb2ogKGZvdW5kIGluIHRoZSB4Y29kZS8gZGly
ZWN0b3J5IG9mIHRoZSBHb29nbGUgVGVzdCB0cnVuaykgYW5kIGJ1aWxkIHRoZSBmcmFtZXdvcmsg
bWFudWFsbHkuIFRoZW4sIGFkZCB0aGUgYnVpbHQgZnJhbWV3b3JrIGludG8geW91ciBwcm9qZWN0
IHVzaW5nIHRoZSAiQWRkLT5FeGlzdGluZyBGcmFtZXdvcmsuLi4iIGZyb20gdGhlIGNvbnRleHQg
bWVudSBvciAiUHJvamVjdC0+QWRkLi4uIiBmcm9tIHRoZSBtYWluIG1lbnUuIFRoZSBndGVzdC5m
cmFtZXdvcmsgaXMgcmVsb2NhdGFibGUgYW5kIGNvbnRhaW5zIHRoZSBoZWFkZXJzIGFuZCBvYmpl
Y3QgY29kZSB0aGF0IHlvdSdsbCBuZWVkIHRvIG1ha2UgdGVzdHMuIFRoaXMgbWV0aG9kIHJlcXVp
cmVzIHJlYnVpbGRpbmcgZXZlcnkgdGltZSB5b3UgdXBncmFkZSBHb29nbGUgVGVzdCBpbiB5b3Vy
IHByb2plY3QuCisgICogKipPcHRpb24gMioqIC0tLSBJZiB5b3UgYXJlIGdvaW5nIHRvIGJlIGxp
dmluZyBvZmYgdGhlIHRydW5rIG9mIEdvb2dsZSBUZXN0LCBpbmNvcnBvcmF0aW5nIGl0cyBsYXRl
c3QgZmVhdHVyZXMgaW50byB5b3VyIHVuaXQgdGVzdHMgKG9yIGFyZSBhIEdvb2dsZSBUZXN0IGRl
dmVsb3BlciB5b3Vyc2VsZikuIFlvdSdsbCB3YW50IHRvIHJlYnVpbGQgdGhlIGZyYW1ld29yayBl
dmVyeSB0aW1lIHRoZSBzb3VyY2UgdXBkYXRlcy4gdG8gZG8gdGhpcywgeW91J2xsIG5lZWQgdG8g
YWRkIHRoZSBndGVzdC54Y29kZXByb2ogZmlsZSwgbm90IHRoZSBmcmFtZXdvcmsgaXRzZWxmLCB0
byB5b3VyIG93biBYY29kZSBwcm9qZWN0LiBUaGVuLCBmcm9tIHRoZSBidWlsZCBwcm9kdWN0cyB0
aGF0IGFyZSByZXZlYWxlZCBieSB0aGUgcHJvamVjdCdzIGRpc2Nsb3N1cmUgdHJpYW5nbGUsIHlv
dSBjYW4gZmluZCB0aGUgZ3Rlc3QuZnJhbWV3b3JrLCB3aGljaCBjYW4gYmUgYWRkZWQgdG8geW91
ciB0YXJnZXRzIChkaXNjdXNzZWQgYmVsb3cpLgorCisjIE1ha2UgYSBUZXN0IFRhcmdldCAjCisK
K1RvIHN0YXJ0IHdyaXRpbmcgdGVzdHMsIG1ha2UgYSBuZXcgIlNoZWxsIFRvb2wiIHRhcmdldC4g
VGhpcyB0YXJnZXQgdGVtcGxhdGUgaXMgYXZhaWxhYmxlIHVuZGVyIEJTRCwgQ29jb2EsIG9yIENh
cmJvbi4gQWRkIHlvdXIgdW5pdCB0ZXN0IHNvdXJjZSBjb2RlIHRvIHRoZSAiQ29tcGlsZSBTb3Vy
Y2VzIiBidWlsZCBwaGFzZSBvZiB0aGUgdGFyZ2V0LgorCitOZXh0LCB5b3UnbGwgd2FudCB0byBh
ZGQgZ3Rlc3QuZnJhbWV3b3JrIGluIHR3byBkaWZmZXJlbnQgd2F5cywgZGVwZW5kaW5nIHVwb24g
d2hpY2ggb3B0aW9uIHlvdSBjaG9zZSBhYm92ZS4KKworICAqICoqT3B0aW9uIDEqKiAtLS0gRHVy
aW5nIGNvbXBpbGF0aW9uLCBYY29kZSB3aWxsIG5lZWQgdG8ga25vdyB0aGF0IHlvdSBhcmUgbGlu
a2luZyBhZ2FpbnN0IHRoZSBndGVzdC5mcmFtZXdvcmsuIEFkZCB0aGUgZ3Rlc3QuZnJhbWV3b3Jr
IHRvIHRoZSAiTGluayBCaW5hcnkgd2l0aCBMaWJyYXJpZXMiIGJ1aWxkIHBoYXNlIG9mIHlvdXIg
dGVzdCB0YXJnZXQuIFRoaXMgd2lsbCBpbmNsdWRlIHRoZSBHb29nbGUgVGVzdCBoZWFkZXJzIGlu
IHlvdXIgaGVhZGVyIHNlYXJjaCBwYXRoLCBhbmQgd2lsbCB0ZWxsIHRoZSBsaW5rZXIgd2hlcmUg
dG8gZmluZCB0aGUgbGlicmFyeS4KKyAgKiAqKk9wdGlvbiAyKiogLS0tIElmIHlvdXIgd29ya2lu
ZyBvdXQgb2YgdGhlIHRydW5rLCB5b3UnbGwgYWxzbyB3YW50IHRvIGFkZCBndGVzdC5mcmFtZXdv
cmsgdG8geW91ciAiTGluayBCaW5hcnkgd2l0aCBMaWJyYXJpZXMiIGJ1aWxkIHBoYXNlIG9mIHlv
dXIgdGVzdCB0YXJnZXQuIEluIGFkZGl0aW9uLCB5b3UnbGwgIHdhbnQgdG8gYWRkIHRoZSBndGVz
dC5mcmFtZXdvcmsgYXMgYSBkZXBlbmRlbmN5IHRvIHlvdXIgdW5pdCB0ZXN0IHRhcmdldC4gVGhp
cyB3YXksIFhjb2RlIHdpbGwgbWFrZSBzdXJlIHRoYXQgZ3Rlc3QuZnJhbWV3b3JrIGlzIHVwIHRv
IGRhdGUsIGV2ZXJ5IHRpbWUgeW91ciBidWlsZCB5b3VyIHRhcmdldC4gRmluYWxseSwgaWYgeW91
IGRvbid0IHNoYXJlIGJ1aWxkIGRpcmVjdG9yaWVzIHdpdGggR29vZ2xlIFRlc3QsIHlvdSdsbCBo
YXZlIHRvIGNvcHkgdGhlIGd0ZXN0LmZyYW1ld29yayBpbnRvIHlvdXIgb3duIGJ1aWxkIHByb2R1
Y3RzIGRpcmVjdG9yeSB1c2luZyBhICJSdW4gU2NyaXB0IiBidWlsZCBwaGFzZS4KKworIyBTZXQg
VXAgdGhlIEV4ZWN1dGFibGUgUnVuIEVudmlyb25tZW50ICMKKworU2luY2UgdGhlIHVuaXQgdGVz
dCBleGVjdXRhYmxlIGlzIGEgc2hlbGwgdG9vbCwgaXQgZG9lc24ndCBoYXZlIGEgYnVuZGxlIHdp
dGggYSBgQ29udGVudHMvRnJhbWV3b3Jrc2AgZGlyZWN0b3J5LCBpbiB3aGljaCB0byBwbGFjZSBn
dGVzdC5mcmFtZXdvcmsuIEluc3RlYWQsIHRoZSBkeW5hbWljIGxpbmtlciBtdXN0IGJlIHRvbGQg
YXQgcnVudGltZSB0byBzZWFyY2ggZm9yIHRoZSBmcmFtZXdvcmsgaW4gYW5vdGhlciBsb2NhdGlv
bi4gVGhpcyBjYW4gYmUgYWNjb21wbGlzaGVkIGJ5IHNldHRpbmcgdGhlICJEWUxEXF9GUkFNRVdP
UktcX1BBVEgiIGVudmlyb25tZW50IHZhcmlhYmxlIGluIHRoZSAiRWRpdCBBY3RpdmUgRXhlY3V0
YWJsZSAuLi4iIEFyZ3VtZW50cyB0YWIsIHVuZGVyICJWYXJpYWJsZXMgdG8gYmUgc2V0IGluIHRo
ZSBlbnZpcm9ubWVudDoiLiBUaGUgcGF0aCBmb3IgdGhpcyB2YWx1ZSBpcyB0aGUgcGF0aCAocmVs
YXRpdmUgb3IgYWJzb2x1dGUpIG9mIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZ3Rlc3Qu
ZnJhbWV3b3JrLgorCitJZiB5b3UgaGF2ZW4ndCBzZXQgdXAgdGhlIERZTERcX0ZSQU1FV09SS1xf
UEFUSCwgY29ycmVjdGx5LCB5b3UgbWlnaHQgZ2V0IGEgbWVzc2FnZSBsaWtlIHRoaXM6CisKK2Bg
YAorW1Nlc3Npb24gc3RhcnRlZCBhdCAyMDA4LTA4LTE1IDA2OjIzOjU3IC0wNjAwLl0KKyAgZHls
ZDogTGlicmFyeSBub3QgbG9hZGVkOiBAbG9hZGVyX3BhdGgvLi4vRnJhbWV3b3Jrcy9ndGVzdC5m
cmFtZXdvcmsvVmVyc2lvbnMvQS9ndGVzdAorICAgIFJlZmVyZW5jZWQgZnJvbTogL1VzZXJzL3Vz
ZXJuYW1lL0RvY3VtZW50cy9TYW5kYm94L2d0ZXN0U2FtcGxlL2J1aWxkL0RlYnVnL1dpZGdldEZy
YW1ld29ya1Rlc3QKKyAgICBSZWFzb246IGltYWdlIG5vdCBmb3VuZAorYGBgCisKK1RvIGNvcnJl
Y3QgdGhpcyBwcm9ibGVtLCBnb3QgdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBleGVj
dXRhYmxlIG5hbWVkIGluICJSZWZlcmVuY2VkIGZyb206IiB2YWx1ZSBpbiB0aGUgZXJyb3IgbWVz
c2FnZSBhYm92ZS4gVGhlbiwgd2l0aCB0aGUgdGVybWluYWwgaW4gdGhpcyBsb2NhdGlvbiwgZmlu
ZCB0aGUgcmVsYXRpdmUgcGF0aCB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGd0ZXN0
LmZyYW1ld29yay4gVGhhdCBpcyB0aGUgdmFsdWUgeW91J2xsIG5lZWQgdG8gc2V0IGFzIHRoZSBE
WUxEXF9GUkFNRVdPUktcX1BBVEguCisKKyMgQnVpbGQgYW5kIEdvICMKKworTm93LCB3aGVuIHlv
dSBjbGljayAiQnVpbGQgYW5kIEdvIiwgdGhlIHRlc3Qgd2lsbCBiZSBleGVjdXRlZC4gRHVtcGlu
ZyBvdXQgc29tZXRoaW5nIGxpa2UgdGhpczoKKworYGBgCitbU2Vzc2lvbiBzdGFydGVkIGF0IDIw
MDgtMDgtMDYgMDY6MzY6MTMgLTA2MDAuXQorWz09PT09PT09PT1dIFJ1bm5pbmcgMiB0ZXN0cyBm
cm9tIDEgdGVzdCBjYXNlLgorWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHNl
dC11cC4KK1stLS0tLS0tLS0tXSAyIHRlc3RzIGZyb20gV2lkZ2V0SW5pdGlhbGl6ZXJUZXN0Citb
IFJVTiAgICAgIF0gV2lkZ2V0SW5pdGlhbGl6ZXJUZXN0LlRlc3RDb25zdHJ1Y3RvcgorWyAgICAg
ICBPSyBdIFdpZGdldEluaXRpYWxpemVyVGVzdC5UZXN0Q29uc3RydWN0b3IKK1sgUlVOICAgICAg
XSBXaWRnZXRJbml0aWFsaXplclRlc3QuVGVzdENvbnZlcnNpb24KK1sgICAgICAgT0sgXSBXaWRn
ZXRJbml0aWFsaXplclRlc3QuVGVzdENvbnZlcnNpb24KK1stLS0tLS0tLS0tXSBHbG9iYWwgdGVz
dCBlbnZpcm9ubWVudCB0ZWFyLWRvd24KK1s9PT09PT09PT09XSAyIHRlc3RzIGZyb20gMSB0ZXN0
IGNhc2UgcmFuLgorWyAgUEFTU0VEICBdIDIgdGVzdHMuCisKK1RoZSBEZWJ1Z2dlciBoYXMgZXhp
dGVkIHdpdGggc3RhdHVzIDAuICAKK2BgYAorCisjIFN1bW1hcnkgIworCitVbml0IHRlc3Rpbmcg
aXMgYSB2YWx1YWJsZSB3YXkgdG8gZW5zdXJlIHlvdXIgZGF0YSBtb2RlbCBzdGF5cyB2YWxpZCBl
dmVuIGR1cmluZyByYXBpZCBkZXZlbG9wbWVudCBvciByZWZhY3RvcmluZy4gVGhlIEdvb2dsZSBU
ZXN0aW5nIEZyYW1ld29yayBpcyBhIGdyZWF0IHVuaXQgdGVzdGluZyBmcmFtZXdvcmsgZm9yIEMg
YW5kIEMrKyB3aGljaCBpbnRlZ3JhdGVzIHdlbGwgd2l0aCBhbiBYY29kZSBkZXZlbG9wbWVudCBl
bnZpcm9ubWVudC4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xldGVzdC9kb2NzL1hjb2RlR3VpZGUubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1hjb2RlR3VpZGUu
bWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYmYyNGJmNTFiZmM0NTQxMmY2NThiZGRkNTNhMzMyZTE0OWQ3NzMwOQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvWGNvZGVHdWlkZS5tZApAQCAtMCww
ICsxLDkzIEBACisKKworVGhpcyBndWlkZSB3aWxsIGV4cGxhaW4gaG93IHRvIHVzZSB0aGUgR29v
Z2xlIFRlc3RpbmcgRnJhbWV3b3JrIGluIHlvdXIgWGNvZGUgcHJvamVjdHMgb24gTWFjIE9TIFgu
IFRoaXMgdHV0b3JpYWwgYmVnaW5zIGJ5IHF1aWNrbHkgZXhwbGFpbmluZyB3aGF0IHRvIGRvIGZv
ciBleHBlcmllbmNlZCB1c2Vycy4gQWZ0ZXIgdGhlIHF1aWNrIHN0YXJ0LCB0aGUgZ3VpZGUgZ29l
cyBwcm92aWRlcyBhZGRpdGlvbmFsIGV4cGxhbmF0aW9uIGFib3V0IGVhY2ggc3RlcC4KKworIyBR
dWljayBTdGFydCAjCisKK0hlcmUgaXMgdGhlIHF1aWNrIGd1aWRlIGZvciB1c2luZyBHb29nbGUg
VGVzdCBpbiB5b3VyIFhjb2RlIHByb2plY3QuCisKKyAgMS4gRG93bmxvYWQgdGhlIHNvdXJjZSBm
cm9tIHRoZSBbd2Vic2l0ZV0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRlc3QpIHVz
aW5nIHRoaXMgY29tbWFuZDogYHN2biBjaGVja291dCBodHRwOi8vZ29vZ2xldGVzdC5nb29nbGVj
b2RlLmNvbS9zdm4vdHJ1bmsvIGdvb2dsZXRlc3QtcmVhZC1vbmx5YAorICAxLiBPcGVuIHVwIHRo
ZSBgZ3Rlc3QueGNvZGVwcm9qYCBpbiB0aGUgYGdvb2dsZXRlc3QtcmVhZC1vbmx5L3hjb2RlL2Ag
ZGlyZWN0b3J5IGFuZCBidWlsZCB0aGUgZ3Rlc3QuZnJhbWV3b3JrLgorICAxLiBDcmVhdGUgYSBu
ZXcgIlNoZWxsIFRvb2wiIHRhcmdldCBpbiB5b3VyIFhjb2RlIHByb2plY3QgY2FsbGVkIHNvbWV0
aGluZyBsaWtlICJVbml0VGVzdHMiCisgIDEuIEFkZCB0aGUgZ3Rlc3QuZnJhbWV3b3JrIHRvIHlv
dXIgcHJvamVjdCBhbmQgYWRkIGl0IHRvIHRoZSAiTGluayBCaW5hcnkgd2l0aCBMaWJyYXJpZXMi
IGJ1aWxkIHBoYXNlIG9mICJVbml0VGVzdHMiCisgIDEuIEFkZCB5b3VyIHVuaXQgdGVzdCBzb3Vy
Y2UgY29kZSB0byB0aGUgIkNvbXBpbGUgU291cmNlcyIgYnVpbGQgcGhhc2Ugb2YgIlVuaXRUZXN0
cyIKKyAgMS4gRWRpdCB0aGUgIlVuaXRUZXN0cyIgZXhlY3V0YWJsZSBhbmQgYWRkIGFuIGVudmly
b25tZW50IHZhcmlhYmxlIG5hbWVkICJEWUxEXF9GUkFNRVdPUktcX1BBVEgiIHdpdGggYSB2YWx1
ZSBlcXVhbCB0byB0aGUgcGF0aCB0byB0aGUgZnJhbWV3b3JrIGNvbnRhaW5pbmcgdGhlIGd0ZXN0
LmZyYW1ld29yayByZWxhdGl2ZSB0byB0aGUgY29tcGlsZWQgZXhlY3V0YWJsZS4KKyAgMS4gQnVp
bGQgYW5kIEdvCisKK1RoZSBmb2xsb3dpbmcgc2VjdGlvbnMgZnVydGhlciBleHBsYWluIGVhY2gg
b2YgdGhlIHN0ZXBzIGxpc3RlZCBhYm92ZSBpbiBkZXB0aCwgZGVzY3JpYmluZyBpbiBtb3JlIGRl
dGFpbCBob3cgdG8gY29tcGxldGUgaXQgaW5jbHVkaW5nIHNvbWUgdmFyaWF0aW9ucy4KKworIyBH
ZXQgdGhlIFNvdXJjZSAjCisKK0N1cnJlbnRseSwgdGhlIGd0ZXN0LmZyYW1ld29yayBkaXNjdXNz
ZWQgaGVyZSBpc24ndCBhdmFpbGFibGUgaW4gYSB0YWdnZWQgcmVsZWFzZSBvZiBHb29nbGUgVGVz
dCwgaXQgaXMgb25seSBhdmFpbGFibGUgaW4gdGhlIHRydW5rLiBBcyBleHBsYWluZWQgYXQgdGhl
IEdvb2dsZSBUZXN0IFtzaXRlXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC9z
b3VyY2UvY2hlY2tvdXQiPnN2biksIHlvdSBjYW4gZ2V0IHRoZSBjb2RlIGZyb20gYW5vbnltb3Vz
IFNWTiB3aXRoIHRoaXMgY29tbWFuZDoKKworYGBgCitzdm4gY2hlY2tvdXQgaHR0cDovL2dvb2ds
ZXRlc3QuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rLyBnb29nbGV0ZXN0LXJlYWQtb25seQorYGBg
CisKK0FsdGVybmF0aXZlbHksIGlmIHlvdSBhcmUgd29ya2luZyB3aXRoIFN1YnZlcnNpb24gaW4g
eW91ciBvd24gY29kZSBiYXNlLCB5b3UgY2FuIGFkZCBHb29nbGUgVGVzdCBhcyBhbiBleHRlcm5h
bCBkZXBlbmRlbmN5IHRvIHlvdXIgb3duIFN1YnZlcnNpb24gcmVwb3NpdG9yeS4gQnkgZm9sbG93
aW5nIHRoaXMgYXBwcm9hY2gsIGV2ZXJ5b25lIHRoYXQgY2hlY2tzIG91dCB5b3VyIHN2biByZXBv
c2l0b3J5IHdpbGwgYWxzbyByZWNlaXZlIGEgY29weSBvZiBHb29nbGUgVGVzdCAoYSBzcGVjaWZp
YyB2ZXJzaW9uLCBpZiB5b3Ugd2lzaCkgd2l0aG91dCBoYXZpbmcgdG8gY2hlY2sgaXQgb3V0IGV4
cGxpY2l0bHkuIFRoaXMgbWFrZXMgdGhlIHNldCB1cCBvZiB5b3VyIHByb2plY3Qgc2ltcGxlciBh
bmQgcmVkdWNlcyB0aGUgY29waWVkIGNvZGUgaW4gdGhlIHJlcG9zaXRvcnkuCisKK1RvIHVzZSBg
c3ZuOmV4dGVybmFsc2AsIGRlY2lkZSB3aGVyZSB5b3Ugd291bGQgbGlrZSB0byBoYXZlIHRoZSBl
eHRlcm5hbCBzb3VyY2UgcmVzaWRlLiBZb3UgbWlnaHQgY2hvb3NlIHRvIHB1dCB0aGUgZXh0ZXJu
YWwgc291cmNlIGluc2lkZSB0aGUgdHJ1bmssIGJlY2F1c2UgeW91IHdhbnQgaXQgdG8gYmUgcGFy
dCBvZiB0aGUgYnJhbmNoIHdoZW4geW91IG1ha2UgYSByZWxlYXNlLiBIb3dldmVyLCBrZWVwaW5n
IGl0IG91dHNpZGUgdGhlIHRydW5rIGluIGEgdmVyc2lvbi10YWdnZWQgZGlyZWN0b3J5IGNhbGxl
ZCBzb21ldGhpbmcgbGlrZSBgdGhpcmQtcGFydHkvZ29vZ2xldGVzdC8xLjAuMWAsIGlzIGFub3Ro
ZXIgb3B0aW9uLiBPbmNlIHRoZSBsb2NhdGlvbiBpcyBlc3RhYmxpc2hlZCwgdXNlIGBzdm4gcHJv
cGVkaXQgc3ZuOmV4dGVybmFscyBfZGlyZWN0b3J5X2AgdG8gc2V0IHRoZSBzdm46ZXh0ZXJuYWxz
IHByb3BlcnR5IG9uIGEgZGlyZWN0b3J5IGluIHlvdXIgcmVwb3NpdG9yeS4gVGhpcyBkaXJlY3Rv
cnkgd29uJ3QgY29udGFpbiB0aGUgY29kZSwgYnV0IGJlIGl0cyB2ZXJzaW9uZWQgcGFyZW50IGRp
cmVjdG9yeS4KKworVGhlIGNvbW1hbmQgYHN2biBwcm9wZWRpdGAgd2lsbCBicmluZyB1cCB5b3Vy
IFN1YnZlcnNpb24gZWRpdG9yLCBtYWtpbmcgZWRpdGluZyB0aGUgbG9uZywgKHBvdGVudGlhbGx5
IG11bHRpLWxpbmUpIHByb3BlcnR5IHNpbXBsZXIuIFRoaXMgc2FtZSBtZXRob2QgY2FuIGJlIHVz
ZWQgdG8gY2hlY2sgb3V0IGEgdGFnZ2VkIGJyYW5jaCwgYnkgdXNpbmcgdGhlIGFwcHJvcHJpYXRl
IFVSTCAoZS5nLiBgaHR0cDovL2dvb2dsZXRlc3QuZ29vZ2xlY29kZS5jb20vc3ZuL3RhZ3MvcmVs
ZWFzZS0xLjAuMWApLiBBZGRpdGlvbmFsbHksIHRoZSBzdm46ZXh0ZXJuYWxzIHByb3BlcnR5IGFs
bG93cyB0aGUgc3BlY2lmaWNhdGlvbiBvZiBhIHBhcnRpY3VsYXIgcmV2aXNpb24gb2YgdGhlIHRy
dW5rIHdpdGggdGhlIGAtcl8jI19gIG9wdGlvbiAoZS5nLiBgZXh0ZXJuYWxzL3NyYy9nb29nbGV0
ZXN0IC1yNjAgaHR0cDovL2dvb2dsZXRlc3QuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rYCkuCisK
K0hlcmUgaXMgYW4gZXhhbXBsZSBvZiB1c2luZyB0aGUgc3ZuOmV4dGVybmFscyBwcm9wZXJ0aWVz
IG9uIGEgdHJ1bmsgKHJlYWQgdmlhIGBzdm4gcHJvcGdldGApIG9mIGEgcHJvamVjdC4gVGhpcyB2
YWx1ZSBjaGVja3Mgb3V0IGEgY29weSBvZiBHb29nbGUgVGVzdCBpbnRvIHRoZSBgdHJ1bmsvZXh0
ZXJuYWxzL3NyYy9nb29nbGV0ZXN0L2AgZGlyZWN0b3J5LgorCitgYGAKK1tDb21wdXRlcjpzdm5d
IHVzZXIkIHN2biBwcm9wZ2V0IHN2bjpleHRlcm5hbHMgdHJ1bmsKK2V4dGVybmFscy9zcmMvZ29v
Z2xldGVzdCBodHRwOi8vZ29vZ2xldGVzdC5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmsKK2BgYAor
CisjIEFkZCB0aGUgRnJhbWV3b3JrIHRvIFlvdXIgUHJvamVjdCAjCisKK1RoZSBuZXh0IHN0ZXAg
aXMgdG8gYnVpbGQgYW5kIGFkZCB0aGUgZ3Rlc3QuZnJhbWV3b3JrIHRvIHlvdXIgb3duIHByb2pl
Y3QuIFRoaXMgZ3VpZGUgZGVzY3JpYmVzIHR3byBjb21tb24gd2F5cyBiZWxvdy4KKworICAqICoq
T3B0aW9uIDEqKiAtLS0gVGhlIHNpbXBsZXN0IHdheSB0byBhZGQgR29vZ2xlIFRlc3QgdG8geW91
ciBvd24gcHJvamVjdCwgaXMgdG8gb3BlbiBndGVzdC54Y29kZXByb2ogKGZvdW5kIGluIHRoZSB4
Y29kZS8gZGlyZWN0b3J5IG9mIHRoZSBHb29nbGUgVGVzdCB0cnVuaykgYW5kIGJ1aWxkIHRoZSBm
cmFtZXdvcmsgbWFudWFsbHkuIFRoZW4sIGFkZCB0aGUgYnVpbHQgZnJhbWV3b3JrIGludG8geW91
ciBwcm9qZWN0IHVzaW5nIHRoZSAiQWRkLT5FeGlzdGluZyBGcmFtZXdvcmsuLi4iIGZyb20gdGhl
IGNvbnRleHQgbWVudSBvciAiUHJvamVjdC0+QWRkLi4uIiBmcm9tIHRoZSBtYWluIG1lbnUuIFRo
ZSBndGVzdC5mcmFtZXdvcmsgaXMgcmVsb2NhdGFibGUgYW5kIGNvbnRhaW5zIHRoZSBoZWFkZXJz
IGFuZCBvYmplY3QgY29kZSB0aGF0IHlvdSdsbCBuZWVkIHRvIG1ha2UgdGVzdHMuIFRoaXMgbWV0
aG9kIHJlcXVpcmVzIHJlYnVpbGRpbmcgZXZlcnkgdGltZSB5b3UgdXBncmFkZSBHb29nbGUgVGVz
dCBpbiB5b3VyIHByb2plY3QuCisgICogKipPcHRpb24gMioqIC0tLSBJZiB5b3UgYXJlIGdvaW5n
IHRvIGJlIGxpdmluZyBvZmYgdGhlIHRydW5rIG9mIEdvb2dsZSBUZXN0LCBpbmNvcnBvcmF0aW5n
IGl0cyBsYXRlc3QgZmVhdHVyZXMgaW50byB5b3VyIHVuaXQgdGVzdHMgKG9yIGFyZSBhIEdvb2ds
ZSBUZXN0IGRldmVsb3BlciB5b3Vyc2VsZikuIFlvdSdsbCB3YW50IHRvIHJlYnVpbGQgdGhlIGZy
YW1ld29yayBldmVyeSB0aW1lIHRoZSBzb3VyY2UgdXBkYXRlcy4gdG8gZG8gdGhpcywgeW91J2xs
IG5lZWQgdG8gYWRkIHRoZSBndGVzdC54Y29kZXByb2ogZmlsZSwgbm90IHRoZSBmcmFtZXdvcmsg
aXRzZWxmLCB0byB5b3VyIG93biBYY29kZSBwcm9qZWN0LiBUaGVuLCBmcm9tIHRoZSBidWlsZCBw
cm9kdWN0cyB0aGF0IGFyZSByZXZlYWxlZCBieSB0aGUgcHJvamVjdCdzIGRpc2Nsb3N1cmUgdHJp
YW5nbGUsIHlvdSBjYW4gZmluZCB0aGUgZ3Rlc3QuZnJhbWV3b3JrLCB3aGljaCBjYW4gYmUgYWRk
ZWQgdG8geW91ciB0YXJnZXRzIChkaXNjdXNzZWQgYmVsb3cpLgorCisjIE1ha2UgYSBUZXN0IFRh
cmdldCAjCisKK1RvIHN0YXJ0IHdyaXRpbmcgdGVzdHMsIG1ha2UgYSBuZXcgIlNoZWxsIFRvb2wi
IHRhcmdldC4gVGhpcyB0YXJnZXQgdGVtcGxhdGUgaXMgYXZhaWxhYmxlIHVuZGVyIEJTRCwgQ29j
b2EsIG9yIENhcmJvbi4gQWRkIHlvdXIgdW5pdCB0ZXN0IHNvdXJjZSBjb2RlIHRvIHRoZSAiQ29t
cGlsZSBTb3VyY2VzIiBidWlsZCBwaGFzZSBvZiB0aGUgdGFyZ2V0LgorCitOZXh0LCB5b3UnbGwg
d2FudCB0byBhZGQgZ3Rlc3QuZnJhbWV3b3JrIGluIHR3byBkaWZmZXJlbnQgd2F5cywgZGVwZW5k
aW5nIHVwb24gd2hpY2ggb3B0aW9uIHlvdSBjaG9zZSBhYm92ZS4KKworICAqICoqT3B0aW9uIDEq
KiAtLS0gRHVyaW5nIGNvbXBpbGF0aW9uLCBYY29kZSB3aWxsIG5lZWQgdG8ga25vdyB0aGF0IHlv
dSBhcmUgbGlua2luZyBhZ2FpbnN0IHRoZSBndGVzdC5mcmFtZXdvcmsuIEFkZCB0aGUgZ3Rlc3Qu
ZnJhbWV3b3JrIHRvIHRoZSAiTGluayBCaW5hcnkgd2l0aCBMaWJyYXJpZXMiIGJ1aWxkIHBoYXNl
IG9mIHlvdXIgdGVzdCB0YXJnZXQuIFRoaXMgd2lsbCBpbmNsdWRlIHRoZSBHb29nbGUgVGVzdCBo
ZWFkZXJzIGluIHlvdXIgaGVhZGVyIHNlYXJjaCBwYXRoLCBhbmQgd2lsbCB0ZWxsIHRoZSBsaW5r
ZXIgd2hlcmUgdG8gZmluZCB0aGUgbGlicmFyeS4KKyAgKiAqKk9wdGlvbiAyKiogLS0tIElmIHlv
dXIgd29ya2luZyBvdXQgb2YgdGhlIHRydW5rLCB5b3UnbGwgYWxzbyB3YW50IHRvIGFkZCBndGVz
dC5mcmFtZXdvcmsgdG8geW91ciAiTGluayBCaW5hcnkgd2l0aCBMaWJyYXJpZXMiIGJ1aWxkIHBo
YXNlIG9mIHlvdXIgdGVzdCB0YXJnZXQuIEluIGFkZGl0aW9uLCB5b3UnbGwgIHdhbnQgdG8gYWRk
IHRoZSBndGVzdC5mcmFtZXdvcmsgYXMgYSBkZXBlbmRlbmN5IHRvIHlvdXIgdW5pdCB0ZXN0IHRh
cmdldC4gVGhpcyB3YXksIFhjb2RlIHdpbGwgbWFrZSBzdXJlIHRoYXQgZ3Rlc3QuZnJhbWV3b3Jr
IGlzIHVwIHRvIGRhdGUsIGV2ZXJ5IHRpbWUgeW91ciBidWlsZCB5b3VyIHRhcmdldC4gRmluYWxs
eSwgaWYgeW91IGRvbid0IHNoYXJlIGJ1aWxkIGRpcmVjdG9yaWVzIHdpdGggR29vZ2xlIFRlc3Qs
IHlvdSdsbCBoYXZlIHRvIGNvcHkgdGhlIGd0ZXN0LmZyYW1ld29yayBpbnRvIHlvdXIgb3duIGJ1
aWxkIHByb2R1Y3RzIGRpcmVjdG9yeSB1c2luZyBhICJSdW4gU2NyaXB0IiBidWlsZCBwaGFzZS4K
KworIyBTZXQgVXAgdGhlIEV4ZWN1dGFibGUgUnVuIEVudmlyb25tZW50ICMKKworU2luY2UgdGhl
IHVuaXQgdGVzdCBleGVjdXRhYmxlIGlzIGEgc2hlbGwgdG9vbCwgaXQgZG9lc24ndCBoYXZlIGEg
YnVuZGxlIHdpdGggYSBgQ29udGVudHMvRnJhbWV3b3Jrc2AgZGlyZWN0b3J5LCBpbiB3aGljaCB0
byBwbGFjZSBndGVzdC5mcmFtZXdvcmsuIEluc3RlYWQsIHRoZSBkeW5hbWljIGxpbmtlciBtdXN0
IGJlIHRvbGQgYXQgcnVudGltZSB0byBzZWFyY2ggZm9yIHRoZSBmcmFtZXdvcmsgaW4gYW5vdGhl
ciBsb2NhdGlvbi4gVGhpcyBjYW4gYmUgYWNjb21wbGlzaGVkIGJ5IHNldHRpbmcgdGhlICJEWUxE
XF9GUkFNRVdPUktcX1BBVEgiIGVudmlyb25tZW50IHZhcmlhYmxlIGluIHRoZSAiRWRpdCBBY3Rp
dmUgRXhlY3V0YWJsZSAuLi4iIEFyZ3VtZW50cyB0YWIsIHVuZGVyICJWYXJpYWJsZXMgdG8gYmUg
c2V0IGluIHRoZSBlbnZpcm9ubWVudDoiLiBUaGUgcGF0aCBmb3IgdGhpcyB2YWx1ZSBpcyB0aGUg
cGF0aCAocmVsYXRpdmUgb3IgYWJzb2x1dGUpIG9mIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0
aGUgZ3Rlc3QuZnJhbWV3b3JrLgorCitJZiB5b3UgaGF2ZW4ndCBzZXQgdXAgdGhlIERZTERcX0ZS
QU1FV09SS1xfUEFUSCwgY29ycmVjdGx5LCB5b3UgbWlnaHQgZ2V0IGEgbWVzc2FnZSBsaWtlIHRo
aXM6CisKK2BgYAorW1Nlc3Npb24gc3RhcnRlZCBhdCAyMDA4LTA4LTE1IDA2OjIzOjU3IC0wNjAw
Ll0KKyAgZHlsZDogTGlicmFyeSBub3QgbG9hZGVkOiBAbG9hZGVyX3BhdGgvLi4vRnJhbWV3b3Jr
cy9ndGVzdC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9ndGVzdAorICAgIFJlZmVyZW5jZWQgZnJvbTog
L1VzZXJzL3VzZXJuYW1lL0RvY3VtZW50cy9TYW5kYm94L2d0ZXN0U2FtcGxlL2J1aWxkL0RlYnVn
L1dpZGdldEZyYW1ld29ya1Rlc3QKKyAgICBSZWFzb246IGltYWdlIG5vdCBmb3VuZAorYGBgCisK
K1RvIGNvcnJlY3QgdGhpcyBwcm9ibGVtLCBnb3QgdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5n
IHRoZSBleGVjdXRhYmxlIG5hbWVkIGluICJSZWZlcmVuY2VkIGZyb206IiB2YWx1ZSBpbiB0aGUg
ZXJyb3IgbWVzc2FnZSBhYm92ZS4gVGhlbiwgd2l0aCB0aGUgdGVybWluYWwgaW4gdGhpcyBsb2Nh
dGlvbiwgZmluZCB0aGUgcmVsYXRpdmUgcGF0aCB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcg
dGhlIGd0ZXN0LmZyYW1ld29yay4gVGhhdCBpcyB0aGUgdmFsdWUgeW91J2xsIG5lZWQgdG8gc2V0
IGFzIHRoZSBEWUxEXF9GUkFNRVdPUktcX1BBVEguCisKKyMgQnVpbGQgYW5kIEdvICMKKworTm93
LCB3aGVuIHlvdSBjbGljayAiQnVpbGQgYW5kIEdvIiwgdGhlIHRlc3Qgd2lsbCBiZSBleGVjdXRl
ZC4gRHVtcGluZyBvdXQgc29tZXRoaW5nIGxpa2UgdGhpczoKKworYGBgCitbU2Vzc2lvbiBzdGFy
dGVkIGF0IDIwMDgtMDgtMDYgMDY6MzY6MTMgLTA2MDAuXQorWz09PT09PT09PT1dIFJ1bm5pbmcg
MiB0ZXN0cyBmcm9tIDEgdGVzdCBjYXNlLgorWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmly
b25tZW50IHNldC11cC4KK1stLS0tLS0tLS0tXSAyIHRlc3RzIGZyb20gV2lkZ2V0SW5pdGlhbGl6
ZXJUZXN0CitbIFJVTiAgICAgIF0gV2lkZ2V0SW5pdGlhbGl6ZXJUZXN0LlRlc3RDb25zdHJ1Y3Rv
cgorWyAgICAgICBPSyBdIFdpZGdldEluaXRpYWxpemVyVGVzdC5UZXN0Q29uc3RydWN0b3IKK1sg
UlVOICAgICAgXSBXaWRnZXRJbml0aWFsaXplclRlc3QuVGVzdENvbnZlcnNpb24KK1sgICAgICAg
T0sgXSBXaWRnZXRJbml0aWFsaXplclRlc3QuVGVzdENvbnZlcnNpb24KK1stLS0tLS0tLS0tXSBH
bG9iYWwgdGVzdCBlbnZpcm9ubWVudCB0ZWFyLWRvd24KK1s9PT09PT09PT09XSAyIHRlc3RzIGZy
b20gMSB0ZXN0IGNhc2UgcmFuLgorWyAgUEFTU0VEICBdIDIgdGVzdHMuCisKK1RoZSBEZWJ1Z2dl
ciBoYXMgZXhpdGVkIHdpdGggc3RhdHVzIDAuICAKK2BgYAorCisjIFN1bW1hcnkgIworCitVbml0
IHRlc3RpbmcgaXMgYSB2YWx1YWJsZSB3YXkgdG8gZW5zdXJlIHlvdXIgZGF0YSBtb2RlbCBzdGF5
cyB2YWxpZCBldmVuIGR1cmluZyByYXBpZCBkZXZlbG9wbWVudCBvciByZWZhY3RvcmluZy4gVGhl
IEdvb2dsZSBUZXN0aW5nIEZyYW1ld29yayBpcyBhIGdyZWF0IHVuaXQgdGVzdGluZyBmcmFtZXdv
cmsgZm9yIEMgYW5kIEMrKyB3aGljaCBpbnRlZ3JhdGVzIHdlbGwgd2l0aCBhbiBYY29kZSBkZXZl
bG9wbWVudCBlbnZpcm9ubWVudC4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2ds
ZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LWRlYXRoLXRlc3QuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1N2E2
OWM2YTllN2JlZDdkNTdlYmQ3ODcyZmIwNDdmOTcxNzVmYzEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LWRlYXRoLXRlc3QuaApAQCAtMCwwICsxLDI5
NCBAQAorLy8gQ29weXJpZ2h0IDIwMDUsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8g
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8v
IEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKy8vCisvLyBUaGUgR29vZ2xl
IEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCisvLworLy8gVGhpcyBoZWFkZXIg
ZmlsZSBkZWZpbmVzIHRoZSBwdWJsaWMgQVBJIGZvciBkZWF0aCB0ZXN0cy4gIEl0IGlzCisvLyAj
aW5jbHVkZWQgYnkgZ3Rlc3QuaCBzbyBhIHVzZXIgZG9lc24ndCBuZWVkIHRvIGluY2x1ZGUgdGhp
cworLy8gZGlyZWN0bHkuCisKKyNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9ERUFU
SF9URVNUX0hfCisjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfREVBVEhfVEVTVF9I
XworCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZGVhdGgtdGVzdC1pbnRlcm5hbC5o
IgorCituYW1lc3BhY2UgdGVzdGluZyB7CisKKy8vIFRoaXMgZmxhZyBjb250cm9scyB0aGUgc3R5
bGUgb2YgZGVhdGggdGVzdHMuICBWYWxpZCB2YWx1ZXMgYXJlICJ0aHJlYWRzYWZlIiwKKy8vIG1l
YW5pbmcgdGhhdCB0aGUgZGVhdGggdGVzdCBjaGlsZCBwcm9jZXNzIHdpbGwgcmUtZXhlY3V0ZSB0
aGUgdGVzdCBiaW5hcnkKKy8vIGZyb20gdGhlIHN0YXJ0LCBydW5uaW5nIG9ubHkgYSBzaW5nbGUg
ZGVhdGggdGVzdCwgb3IgImZhc3QiLAorLy8gbWVhbmluZyB0aGF0IHRoZSBjaGlsZCBwcm9jZXNz
IHdpbGwgZXhlY3V0ZSB0aGUgdGVzdCBsb2dpYyBpbW1lZGlhdGVseQorLy8gYWZ0ZXIgZm9ya2lu
Zy4KK0dURVNUX0RFQ0xBUkVfc3RyaW5nXyhkZWF0aF90ZXN0X3N0eWxlKTsKKworI2lmIEdURVNU
X0hBU19ERUFUSF9URVNUCisKK25hbWVzcGFjZSBpbnRlcm5hbCB7CisKKy8vIFJldHVybnMgYSBC
b29sZWFuIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0aGUgY2FsbGVyIGlzIGN1cnJlbnRseQor
Ly8gZXhlY3V0aW5nIGluIHRoZSBjb250ZXh0IG9mIHRoZSBkZWF0aCB0ZXN0IGNoaWxkIHByb2Nl
c3MuICBUb29scyBzdWNoIGFzCisvLyBWYWxncmluZCBoZWFwIGNoZWNrZXJzIG1heSBuZWVkIHRo
aXMgdG8gbW9kaWZ5IHRoZWlyIGJlaGF2aW9yIGluIGRlYXRoCisvLyB0ZXN0cy4gIElNUE9SVEFO
VDogVGhpcyBpcyBhbiBpbnRlcm5hbCB1dGlsaXR5LiAgVXNpbmcgaXQgbWF5IGJyZWFrIHRoZQor
Ly8gaW1wbGVtZW50YXRpb24gb2YgZGVhdGggdGVzdHMuICBVc2VyIGNvZGUgTVVTVCBOT1QgdXNl
IGl0LgorR1RFU1RfQVBJXyBib29sIEluRGVhdGhUZXN0Q2hpbGQoKTsKKworfSAgLy8gbmFtZXNw
YWNlIGludGVybmFsCisKKy8vIFRoZSBmb2xsb3dpbmcgbWFjcm9zIGFyZSB1c2VmdWwgZm9yIHdy
aXRpbmcgZGVhdGggdGVzdHMuCisKKy8vIEhlcmUncyB3aGF0IGhhcHBlbnMgd2hlbiBhbiBBU1NF
UlRfREVBVEgqIG9yIEVYUEVDVF9ERUFUSCogaXMKKy8vIGV4ZWN1dGVkOgorLy8KKy8vICAgMS4g
SXQgZ2VuZXJhdGVzIGEgd2FybmluZyBpZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIGFjdGl2ZQor
Ly8gICB0aHJlYWQuICBUaGlzIGlzIGJlY2F1c2UgaXQncyBzYWZlIHRvIGZvcmsoKSBvciBjbG9u
ZSgpIG9ubHkKKy8vICAgd2hlbiB0aGVyZSBpcyBhIHNpbmdsZSB0aHJlYWQuCisvLworLy8gICAy
LiBUaGUgcGFyZW50IHByb2Nlc3MgY2xvbmUoKXMgYSBzdWItcHJvY2VzcyBhbmQgcnVucyB0aGUg
ZGVhdGgKKy8vICAgdGVzdCBpbiBpdDsgdGhlIHN1Yi1wcm9jZXNzIGV4aXRzIHdpdGggY29kZSAw
IGF0IHRoZSBlbmQgb2YgdGhlCisvLyAgIGRlYXRoIHRlc3QsIGlmIGl0IGhhc24ndCBleGl0ZWQg
YWxyZWFkeS4KKy8vCisvLyAgIDMuIFRoZSBwYXJlbnQgcHJvY2VzcyB3YWl0cyBmb3IgdGhlIHN1
Yi1wcm9jZXNzIHRvIHRlcm1pbmF0ZS4KKy8vCisvLyAgIDQuIFRoZSBwYXJlbnQgcHJvY2VzcyBj
aGVja3MgdGhlIGV4aXQgY29kZSBhbmQgZXJyb3IgbWVzc2FnZSBvZgorLy8gICB0aGUgc3ViLXBy
b2Nlc3MuCisvLworLy8gRXhhbXBsZXM6CisvLworLy8gICBBU1NFUlRfREVBVEgoc2VydmVyLlNl
bmRNZXNzYWdlKDU2LCAiSGVsbG8iKSwgIkludmFsaWQgcG9ydCBudW1iZXIiKTsKKy8vICAgZm9y
IChpbnQgaSA9IDA7IGkgPCA1OyBpKyspIHsKKy8vICAgICBFWFBFQ1RfREVBVEgoc2VydmVyLlBy
b2Nlc3NSZXF1ZXN0KGkpLAorLy8gICAgICAgICAgICAgICAgICAiSW52YWxpZCByZXF1ZXN0IC4q
IGluIFByb2Nlc3NSZXF1ZXN0KCkiKQorLy8gICAgICAgICAgICAgICAgICA8PCAiRmFpbGVkIHRv
IGRpZSBvbiByZXF1ZXN0ICIgPDwgaTsKKy8vICAgfQorLy8KKy8vICAgQVNTRVJUX0VYSVQoc2Vy
dmVyLkV4aXROb3coKSwgOjp0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgwKSwgIkV4aXRpbmciKTsK
Ky8vCisvLyAgIGJvb2wgS2lsbGVkQnlTSUdIVVAoaW50IGV4aXRfY29kZSkgeworLy8gICAgIHJl
dHVybiBXSUZTSUdOQUxFRChleGl0X2NvZGUpICYmIFdURVJNU0lHKGV4aXRfY29kZSkgPT0gU0lH
SFVQOworLy8gICB9CisvLworLy8gICBBU1NFUlRfRVhJVChjbGllbnQuSGFuZ1VwU2VydmVyKCks
IEtpbGxlZEJ5U0lHSFVQLCAiSGFuZ2luZyB1cCEiKTsKKy8vCisvLyBPbiB0aGUgcmVndWxhciBl
eHByZXNzaW9ucyB1c2VkIGluIGRlYXRoIHRlc3RzOgorLy8KKy8vICAgT24gUE9TSVgtY29tcGxp
YW50IHN5c3RlbXMgKCpuaXgpLCB3ZSB1c2UgdGhlIDxyZWdleC5oPiBsaWJyYXJ5LAorLy8gICB3
aGljaCB1c2VzIHRoZSBQT1NJWCBleHRlbmRlZCByZWdleCBzeW50YXguCisvLworLy8gICBPbiBv
dGhlciBwbGF0Zm9ybXMgKGUuZy4gV2luZG93cyksIHdlIG9ubHkgc3VwcG9ydCBhIHNpbXBsZSBy
ZWdleAorLy8gICBzeW50YXggaW1wbGVtZW50ZWQgYXMgcGFydCBvZiBHb29nbGUgVGVzdC4gIFRo
aXMgbGltaXRlZAorLy8gICBpbXBsZW1lbnRhdGlvbiBzaG91bGQgYmUgZW5vdWdoIG1vc3Qgb2Yg
dGhlIHRpbWUgd2hlbiB3cml0aW5nCisvLyAgIGRlYXRoIHRlc3RzOyB0aG91Z2ggaXQgbGFja3Mg
bWFueSBmZWF0dXJlcyB5b3UgY2FuIGZpbmQgaW4gUENSRQorLy8gICBvciBQT1NJWCBleHRlbmRl
ZCByZWdleCBzeW50YXguICBGb3IgZXhhbXBsZSwgd2UgZG9uJ3Qgc3VwcG9ydAorLy8gICB1bmlv
biAoInh8eSIpLCBncm91cGluZyAoIih4eSkiKSwgYnJhY2tldHMgKCJbeHldIiksIGFuZAorLy8g
ICByZXBldGl0aW9uIGNvdW50ICgieHs1LDd9IiksIGFtb25nIG90aGVycy4KKy8vCisvLyAgIEJl
bG93IGlzIHRoZSBzeW50YXggdGhhdCB3ZSBkbyBzdXBwb3J0LiAgV2UgY2hvc2UgaXQgdG8gYmUg
YQorLy8gICBzdWJzZXQgb2YgYm90aCBQQ1JFIGFuZCBQT1NJWCBleHRlbmRlZCByZWdleCwgc28g
aXQncyBlYXN5IHRvCisvLyAgIGxlYXJuIHdoZXJldmVyIHlvdSBjb21lIGZyb20uICBJbiB0aGUg
Zm9sbG93aW5nOiAnQScgZGVub3RlcyBhCisvLyAgIGxpdGVyYWwgY2hhcmFjdGVyLCBwZXJpb2Qg
KC4pLCBvciBhIHNpbmdsZSBcXCBlc2NhcGUgc2VxdWVuY2U7CisvLyAgICd4JyBhbmQgJ3knIGRl
bm90ZSByZWd1bGFyIGV4cHJlc3Npb25zOyAnbScgYW5kICduJyBhcmUgZm9yCisvLyAgIG5hdHVy
YWwgbnVtYmVycy4KKy8vCisvLyAgICAgYyAgICAgbWF0Y2hlcyBhbnkgbGl0ZXJhbCBjaGFyYWN0
ZXIgYworLy8gICAgIFxcZCAgIG1hdGNoZXMgYW55IGRlY2ltYWwgZGlnaXQKKy8vICAgICBcXEQg
ICBtYXRjaGVzIGFueSBjaGFyYWN0ZXIgdGhhdCdzIG5vdCBhIGRlY2ltYWwgZGlnaXQKKy8vICAg
ICBcXGYgICBtYXRjaGVzIFxmCisvLyAgICAgXFxuICAgbWF0Y2hlcyBcbgorLy8gICAgIFxcciAg
IG1hdGNoZXMgXHIKKy8vICAgICBcXHMgICBtYXRjaGVzIGFueSBBU0NJSSB3aGl0ZXNwYWNlLCBp
bmNsdWRpbmcgXG4KKy8vICAgICBcXFMgICBtYXRjaGVzIGFueSBjaGFyYWN0ZXIgdGhhdCdzIG5v
dCBhIHdoaXRlc3BhY2UKKy8vICAgICBcXHQgICBtYXRjaGVzIFx0CisvLyAgICAgXFx2ICAgbWF0
Y2hlcyBcdgorLy8gICAgIFxcdyAgIG1hdGNoZXMgYW55IGxldHRlciwgXywgb3IgZGVjaW1hbCBk
aWdpdAorLy8gICAgIFxcVyAgIG1hdGNoZXMgYW55IGNoYXJhY3RlciB0aGF0IFxcdyBkb2Vzbid0
IG1hdGNoCisvLyAgICAgXFxjICAgbWF0Y2hlcyBhbnkgbGl0ZXJhbCBjaGFyYWN0ZXIgYywgd2hp
Y2ggbXVzdCBiZSBhIHB1bmN0dWF0aW9uCisvLyAgICAgLiAgICAgbWF0Y2hlcyBhbnkgc2luZ2xl
IGNoYXJhY3RlciBleGNlcHQgXG4KKy8vICAgICBBPyAgICBtYXRjaGVzIDAgb3IgMSBvY2N1cnJl
bmNlcyBvZiBBCisvLyAgICAgQSogICAgbWF0Y2hlcyAwIG9yIG1hbnkgb2NjdXJyZW5jZXMgb2Yg
QQorLy8gICAgIEErICAgIG1hdGNoZXMgMSBvciBtYW55IG9jY3VycmVuY2VzIG9mIEEKKy8vICAg
ICBeICAgICBtYXRjaGVzIHRoZSBiZWdpbm5pbmcgb2YgYSBzdHJpbmcgKG5vdCB0aGF0IG9mIGVh
Y2ggbGluZSkKKy8vICAgICAkICAgICBtYXRjaGVzIHRoZSBlbmQgb2YgYSBzdHJpbmcgKG5vdCB0
aGF0IG9mIGVhY2ggbGluZSkKKy8vICAgICB4eSAgICBtYXRjaGVzIHggZm9sbG93ZWQgYnkgeQor
Ly8KKy8vICAgSWYgeW91IGFjY2lkZW50YWxseSB1c2UgUENSRSBvciBQT1NJWCBleHRlbmRlZCBy
ZWdleCBmZWF0dXJlcworLy8gICBub3QgaW1wbGVtZW50ZWQgYnkgdXMsIHlvdSB3aWxsIGdldCBh
IHJ1bi10aW1lIGZhaWx1cmUuICBJbiB0aGF0CisvLyAgIGNhc2UsIHBsZWFzZSB0cnkgdG8gcmV3
cml0ZSB5b3VyIHJlZ3VsYXIgZXhwcmVzc2lvbiB3aXRoaW4gdGhlCisvLyAgIGFib3ZlIHN5bnRh
eC4KKy8vCisvLyAgIFRoaXMgaW1wbGVtZW50YXRpb24gaXMgKm5vdCogbWVhbnQgdG8gYmUgYXMg
aGlnaGx5IHR1bmVkIG9yIHJvYnVzdAorLy8gICBhcyBhIGNvbXBpbGVkIHJlZ2V4IGxpYnJhcnks
IGJ1dCBzaG91bGQgcGVyZm9ybSB3ZWxsIGVub3VnaCBmb3IgYQorLy8gICBkZWF0aCB0ZXN0LCB3
aGljaCBhbHJlYWR5IGluY3VycyBzaWduaWZpY2FudCBvdmVyaGVhZCBieSBsYXVuY2hpbmcKKy8v
ICAgYSBjaGlsZCBwcm9jZXNzLgorLy8KKy8vIEtub3duIGNhdmVhdHM6CisvLworLy8gICBBICJ0
aHJlYWRzYWZlIiBzdHlsZSBkZWF0aCB0ZXN0IG9idGFpbnMgdGhlIHBhdGggdG8gdGhlIHRlc3QK
Ky8vICAgcHJvZ3JhbSBmcm9tIGFyZ3ZbMF0gYW5kIHJlLWV4ZWN1dGVzIGl0IGluIHRoZSBzdWIt
cHJvY2Vzcy4gIEZvcgorLy8gICBzaW1wbGljaXR5LCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlv
biBkb2Vzbid0IHNlYXJjaCB0aGUgUEFUSAorLy8gICB3aGVuIGxhdW5jaGluZyB0aGUgc3ViLXBy
b2Nlc3MuICBUaGlzIG1lYW5zIHRoYXQgdGhlIHVzZXIgbXVzdAorLy8gICBpbnZva2UgdGhlIHRl
c3QgcHJvZ3JhbSB2aWEgYSBwYXRoIHRoYXQgY29udGFpbnMgYXQgbGVhc3Qgb25lCisvLyAgIHBh
dGggc2VwYXJhdG9yIChlLmcuIHBhdGgvdG8vZm9vX3Rlc3QgYW5kCisvLyAgIC9hYnNvbHV0ZS9w
YXRoL3RvL2Jhcl90ZXN0IGFyZSBmaW5lLCBidXQgZm9vX3Rlc3QgaXMgbm90KS4gIFRoaXMKKy8v
ICAgaXMgcmFyZWx5IGEgcHJvYmxlbSBhcyBwZW9wbGUgdXN1YWxseSBkb24ndCBwdXQgdGhlIHRl
c3QgYmluYXJ5CisvLyAgIGRpcmVjdG9yeSBpbiBQQVRILgorLy8KKy8vIFRPRE8od2FuQGdvb2ds
ZS5jb20pOiBtYWtlIHRocmVhZC1zYWZlIGRlYXRoIHRlc3RzIHNlYXJjaCB0aGUgUEFUSC4KKwor
Ly8gQXNzZXJ0cyB0aGF0IGEgZ2l2ZW4gc3RhdGVtZW50IGNhdXNlcyB0aGUgcHJvZ3JhbSB0byBl
eGl0LCB3aXRoIGFuCisvLyBpbnRlZ2VyIGV4aXQgc3RhdHVzIHRoYXQgc2F0aXNmaWVzIHByZWRp
Y2F0ZSwgYW5kIGVtaXR0aW5nIGVycm9yIG91dHB1dAorLy8gdGhhdCBtYXRjaGVzIHJlZ2V4Lgor
IyBkZWZpbmUgQVNTRVJUX0VYSVQoc3RhdGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4KSBcCisgICAg
R1RFU1RfREVBVEhfVEVTVF8oc3RhdGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4LCBHVEVTVF9GQVRB
TF9GQUlMVVJFXykKKworLy8gTGlrZSBBU1NFUlRfRVhJVCwgYnV0IGNvbnRpbnVlcyBvbiB0byBz
dWNjZXNzaXZlIHRlc3RzIGluIHRoZQorLy8gdGVzdCBjYXNlLCBpZiBhbnk6CisjIGRlZmluZSBF
WFBFQ1RfRVhJVChzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgpIFwKKyAgICBHVEVTVF9ERUFU
SF9URVNUXyhzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgsIEdURVNUX05PTkZBVEFMX0ZBSUxV
UkVfKQorCisvLyBBc3NlcnRzIHRoYXQgYSBnaXZlbiBzdGF0ZW1lbnQgY2F1c2VzIHRoZSBwcm9n
cmFtIHRvIGV4aXQsIGVpdGhlciBieQorLy8gZXhwbGljaXRseSBleGl0aW5nIHdpdGggYSBub256
ZXJvIGV4aXQgY29kZSBvciBiZWluZyBraWxsZWQgYnkgYQorLy8gc2lnbmFsLCBhbmQgZW1pdHRp
bmcgZXJyb3Igb3V0cHV0IHRoYXQgbWF0Y2hlcyByZWdleC4KKyMgZGVmaW5lIEFTU0VSVF9ERUFU
SChzdGF0ZW1lbnQsIHJlZ2V4KSBcCisgICAgQVNTRVJUX0VYSVQoc3RhdGVtZW50LCA6OnRlc3Rp
bmc6OmludGVybmFsOjpFeGl0ZWRVbnN1Y2Nlc3NmdWxseSwgcmVnZXgpCisKKy8vIExpa2UgQVNT
RVJUX0RFQVRILCBidXQgY29udGludWVzIG9uIHRvIHN1Y2Nlc3NpdmUgdGVzdHMgaW4gdGhlCisv
LyB0ZXN0IGNhc2UsIGlmIGFueToKKyMgZGVmaW5lIEVYUEVDVF9ERUFUSChzdGF0ZW1lbnQsIHJl
Z2V4KSBcCisgICAgRVhQRUNUX0VYSVQoc3RhdGVtZW50LCA6OnRlc3Rpbmc6OmludGVybmFsOjpF
eGl0ZWRVbnN1Y2Nlc3NmdWxseSwgcmVnZXgpCisKKy8vIFR3byBwcmVkaWNhdGUgY2xhc3NlcyB0
aGF0IGNhbiBiZSB1c2VkIGluIHtBU1NFUlQsRVhQRUNUfV9FWElUKjoKKworLy8gVGVzdHMgdGhh
dCBhbiBleGl0IGNvZGUgZGVzY3JpYmVzIGEgbm9ybWFsIGV4aXQgd2l0aCBhIGdpdmVuIGV4aXQg
Y29kZS4KK2NsYXNzIEdURVNUX0FQSV8gRXhpdGVkV2l0aENvZGUgeworIHB1YmxpYzoKKyAgZXhw
bGljaXQgRXhpdGVkV2l0aENvZGUoaW50IGV4aXRfY29kZSk7CisgIGJvb2wgb3BlcmF0b3IoKShp
bnQgZXhpdF9zdGF0dXMpIGNvbnN0OworIHByaXZhdGU6CisgIC8vIE5vIGltcGxlbWVudGF0aW9u
IC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KKyAgdm9pZCBvcGVyYXRvcj0oY29uc3QgRXhp
dGVkV2l0aENvZGUmIG90aGVyKTsKKworICBjb25zdCBpbnQgZXhpdF9jb2RlXzsKK307CisKKyMg
aWYgIUdURVNUX09TX1dJTkRPV1MKKy8vIFRlc3RzIHRoYXQgYW4gZXhpdCBjb2RlIGRlc2NyaWJl
cyBhbiBleGl0IGR1ZSB0byB0ZXJtaW5hdGlvbiBieSBhCisvLyBnaXZlbiBzaWduYWwuCitjbGFz
cyBHVEVTVF9BUElfIEtpbGxlZEJ5U2lnbmFsIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IEtpbGxl
ZEJ5U2lnbmFsKGludCBzaWdudW0pOworICBib29sIG9wZXJhdG9yKCkoaW50IGV4aXRfc3RhdHVz
KSBjb25zdDsKKyBwcml2YXRlOgorICBjb25zdCBpbnQgc2lnbnVtXzsKK307CisjIGVuZGlmICAv
LyAhR1RFU1RfT1NfV0lORE9XUworCisvLyBFWFBFQ1RfREVCVUdfREVBVEggYXNzZXJ0cyB0aGF0
IHRoZSBnaXZlbiBzdGF0ZW1lbnRzIGRpZSBpbiBkZWJ1ZyBtb2RlLgorLy8gVGhlIGRlYXRoIHRl
c3RpbmcgZnJhbWV3b3JrIGNhdXNlcyB0aGlzIHRvIGhhdmUgaW50ZXJlc3Rpbmcgc2VtYW50aWNz
LAorLy8gc2luY2UgdGhlIHNpZGVlZmZlY3RzIG9mIHRoZSBjYWxsIGFyZSBvbmx5IHZpc2libGUg
aW4gb3B0IG1vZGUsIGFuZCBub3QKKy8vIGluIGRlYnVnIG1vZGUuCisvLworLy8gSW4gcHJhY3Rp
Y2UsIHRoaXMgY2FuIGJlIHVzZWQgdG8gdGVzdCBmdW5jdGlvbnMgdGhhdCB1dGlsaXplIHRoZQor
Ly8gTE9HKERGQVRBTCkgbWFjcm8gdXNpbmcgdGhlIGZvbGxvd2luZyBzdHlsZToKKy8vCisvLyBp
bnQgRGllSW5EZWJ1Z09yMTIoaW50KiBzaWRlZWZmZWN0KSB7CisvLyAgIGlmIChzaWRlZWZmZWN0
KSB7CisvLyAgICAgKnNpZGVlZmZlY3QgPSAxMjsKKy8vICAgfQorLy8gICBMT0coREZBVEFMKSA8
PCAiZGVhdGgiOworLy8gICByZXR1cm4gMTI7CisvLyB9CisvLworLy8gVEVTVChUZXN0Q2FzZSwg
VGVzdERpZU9yMTJXb3Jrc0luRGdiQW5kT3B0KSB7CisvLyAgIGludCBzaWRlZWZmZWN0ID0gMDsK
Ky8vICAgLy8gT25seSBhc3NlcnRzIGluIGRiZy4KKy8vICAgRVhQRUNUX0RFQlVHX0RFQVRIKERp
ZUluRGVidWdPcjEyKCZzaWRlZWZmZWN0KSwgImRlYXRoIik7CisvLworLy8gI2lmZGVmIE5ERUJV
RworLy8gICAvLyBvcHQtbW9kZSBoYXMgc2lkZWVmZmVjdCB2aXNpYmxlLgorLy8gICBFWFBFQ1Rf
RVEoMTIsIHNpZGVlZmZlY3QpOworLy8gI2Vsc2UKKy8vICAgLy8gZGJnLW1vZGUgbm8gdmlzaWJs
ZSBzaWRlZWZmZWN0LgorLy8gICBFWFBFQ1RfRVEoMCwgc2lkZWVmZmVjdCk7CisvLyAjZW5kaWYK
Ky8vIH0KKy8vCisvLyBUaGlzIHdpbGwgYXNzZXJ0IHRoYXQgRGllSW5EZWJ1Z1JldHVybjEySW5P
cHQoKSBjcmFzaGVzIGluIGRlYnVnCisvLyBtb2RlLCB1c3VhbGx5IGR1ZSB0byBhIERDSEVDSyBv
ciBMT0coREZBVEFMKSwgYnV0IHJldHVybnMgdGhlCisvLyBhcHByb3ByaWF0ZSBmYWxsYmFjayB2
YWx1ZSAoMTIgaW4gdGhpcyBjYXNlKSBpbiBvcHQgbW9kZS4gSWYgeW91CisvLyBuZWVkIHRvIHRl
c3QgdGhhdCBhIGZ1bmN0aW9uIGhhcyBhcHByb3ByaWF0ZSBzaWRlLWVmZmVjdHMgaW4gb3B0Cisv
LyBtb2RlLCBpbmNsdWRlIGFzc2VydGlvbnMgYWdhaW5zdCB0aGUgc2lkZS1lZmZlY3RzLiAgQSBn
ZW5lcmFsCisvLyBwYXR0ZXJuIGZvciB0aGlzIGlzOgorLy8KKy8vIEVYUEVDVF9ERUJVR19ERUFU
SCh7CisvLyAgIC8vIFNpZGUtZWZmZWN0cyBoZXJlIHdpbGwgaGF2ZSBhbiBlZmZlY3QgYWZ0ZXIg
dGhpcyBzdGF0ZW1lbnQgaW4KKy8vICAgLy8gb3B0IG1vZGUsIGJ1dCBub25lIGluIGRlYnVnIG1v
ZGUuCisvLyAgIEVYUEVDVF9FUSgxMiwgRGllSW5EZWJ1Z09yMTIoJnNpZGVlZmZlY3QpKTsKKy8v
IH0sICJkZWF0aCIpOworLy8KKyMgaWZkZWYgTkRFQlVHCisKKyMgIGRlZmluZSBFWFBFQ1RfREVC
VUdfREVBVEgoc3RhdGVtZW50LCByZWdleCkgXAorICBHVEVTVF9FWEVDVVRFX1NUQVRFTUVOVF8o
c3RhdGVtZW50LCByZWdleCkKKworIyAgZGVmaW5lIEFTU0VSVF9ERUJVR19ERUFUSChzdGF0ZW1l
bnQsIHJlZ2V4KSBcCisgIEdURVNUX0VYRUNVVEVfU1RBVEVNRU5UXyhzdGF0ZW1lbnQsIHJlZ2V4
KQorCisjIGVsc2UKKworIyAgZGVmaW5lIEVYUEVDVF9ERUJVR19ERUFUSChzdGF0ZW1lbnQsIHJl
Z2V4KSBcCisgIEVYUEVDVF9ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KQorCisjICBkZWZpbmUgQVNT
RVJUX0RFQlVHX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpIFwKKyAgQVNTRVJUX0RFQVRIKHN0YXRl
bWVudCwgcmVnZXgpCisKKyMgZW5kaWYgIC8vIE5ERUJVRyBmb3IgRVhQRUNUX0RFQlVHX0RFQVRI
CisjZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUCisKKy8vIEVYUEVDVF9ERUFUSF9JRl9T
VVBQT1JURUQoc3RhdGVtZW50LCByZWdleCkgYW5kCisvLyBBU1NFUlRfREVBVEhfSUZfU1VQUE9S
VEVEKHN0YXRlbWVudCwgcmVnZXgpIGV4cGFuZCB0byByZWFsIGRlYXRoIHRlc3RzIGlmCisvLyBk
ZWF0aCB0ZXN0cyBhcmUgc3VwcG9ydGVkOyBvdGhlcndpc2UgdGhleSBqdXN0IGlzc3VlIGEgd2Fy
bmluZy4gIFRoaXMgaXMKKy8vIHVzZWZ1bCB3aGVuIHlvdSBhcmUgY29tYmluaW5nIGRlYXRoIHRl
c3QgYXNzZXJ0aW9ucyB3aXRoIG5vcm1hbCB0ZXN0CisvLyBhc3NlcnRpb25zIGluIG9uZSB0ZXN0
LgorI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCisjIGRlZmluZSBFWFBFQ1RfREVBVEhfSUZfU1VQ
UE9SVEVEKHN0YXRlbWVudCwgcmVnZXgpIFwKKyAgICBFWFBFQ1RfREVBVEgoc3RhdGVtZW50LCBy
ZWdleCkKKyMgZGVmaW5lIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQoc3RhdGVtZW50LCByZWdl
eCkgXAorICAgIEFTU0VSVF9ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KQorI2Vsc2UKKyMgZGVmaW5l
IEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoc3RhdGVtZW50LCByZWdleCkgXAorICAgIEdURVNU
X1VOU1VQUE9SVEVEX0RFQVRIX1RFU1RfKHN0YXRlbWVudCwgcmVnZXgsICkKKyMgZGVmaW5lIEFT
U0VSVF9ERUFUSF9JRl9TVVBQT1JURUQoc3RhdGVtZW50LCByZWdleCkgXAorICAgIEdURVNUX1VO
U1VQUE9SVEVEX0RFQVRIX1RFU1RfKHN0YXRlbWVudCwgcmVnZXgsIHJldHVybikKKyNlbmRpZgor
Cit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZworCisjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RF
U1RfR1RFU1RfREVBVEhfVEVTVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9n
dGVzdC9ndGVzdC1tZXNzYWdlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LW1l
c3NhZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mZTg3OWJjYTc5MjdhZmFlMjQ5OWE2MTM3YWIyNmY0OTkxZmJi
YWNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1t
ZXNzYWdlLmgKQEAgLTAsMCArMSwyNTAgQEAKKy8vIENvcHlyaWdodCAyMDA1LCBHb29nbGUgSW5j
LgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8g
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKy8vCisvLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBX
YW4pCisvLworLy8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0
KQorLy8KKy8vIFRoaXMgaGVhZGVyIGZpbGUgZGVmaW5lcyB0aGUgTWVzc2FnZSBjbGFzcy4KKy8v
CisvLyBJTVBPUlRBTlQgTk9URTogRHVlIHRvIGxpbWl0YXRpb24gb2YgdGhlIEMrKyBsYW5ndWFn
ZSwgd2UgaGF2ZSB0bworLy8gbGVhdmUgc29tZSBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBkZXRh
aWxzIGluIHRoaXMgaGVhZGVyIGZpbGUuCisvLyBUaGV5IGFyZSBjbGVhcmx5IG1hcmtlZCBieSBj
b21tZW50cyBsaWtlIHRoaXM6CisvLworLy8gICAvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAt
IERPIE5PVCBVU0UgSU4gQSBVU0VSIFBST0dSQU0uCisvLworLy8gU3VjaCBjb2RlIGlzIE5PVCBt
ZWFudCB0byBiZSB1c2VkIGJ5IGEgdXNlciBkaXJlY3RseSwgYW5kIGlzIHN1YmplY3QKKy8vIHRv
IENIQU5HRSBXSVRIT1VUIE5PVElDRS4gIFRoZXJlZm9yZSBETyBOT1QgREVQRU5EIE9OIElUIGlu
IGEgdXNlcgorLy8gcHJvZ3JhbSEKKworI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNU
X01FU1NBR0VfSF8KKyNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9NRVNTQUdFX0hf
CisKKyNpbmNsdWRlIDxsaW1pdHM+CisKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1w
b3J0LmgiCisKKy8vIEVuc3VyZXMgdGhhdCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgb3BlcmF0b3I8
PCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4KKy8vIFNlZSBNZXNzYWdlJiBvcGVyYXRvcjw8KC4u
LikgYmVsb3cgZm9yIHdoeS4KK3ZvaWQgb3BlcmF0b3I8PChjb25zdCB0ZXN0aW5nOjppbnRlcm5h
bDo6U2VjcmV0JiwgaW50KTsKKworbmFtZXNwYWNlIHRlc3RpbmcgeworCisvLyBUaGUgTWVzc2Fn
ZSBjbGFzcyB3b3JrcyBsaWtlIGFuIG9zdHJlYW0gcmVwZWF0ZXIuCisvLworLy8gVHlwaWNhbCB1
c2FnZToKKy8vCisvLyAgIDEuIFlvdSBzdHJlYW0gYSBidW5jaCBvZiB2YWx1ZXMgdG8gYSBNZXNz
YWdlIG9iamVjdC4KKy8vICAgICAgSXQgd2lsbCByZW1lbWJlciB0aGUgdGV4dCBpbiBhIHN0cmlu
Z3N0cmVhbS4KKy8vICAgMi4gVGhlbiB5b3Ugc3RyZWFtIHRoZSBNZXNzYWdlIG9iamVjdCB0byBh
biBvc3RyZWFtLgorLy8gICAgICBUaGlzIGNhdXNlcyB0aGUgdGV4dCBpbiB0aGUgTWVzc2FnZSB0
byBiZSBzdHJlYW1lZAorLy8gICAgICB0byB0aGUgb3N0cmVhbS4KKy8vCisvLyBGb3IgZXhhbXBs
ZTsKKy8vCisvLyAgIHRlc3Rpbmc6Ok1lc3NhZ2UgZm9vOworLy8gICBmb28gPDwgMSA8PCAiICE9
ICIgPDwgMjsKKy8vICAgc3RkOjpjb3V0IDw8IGZvbzsKKy8vCisvLyB3aWxsIHByaW50ICIxICE9
IDIiLgorLy8KKy8vIE1lc3NhZ2UgaXMgbm90IGludGVuZGVkIHRvIGJlIGluaGVyaXRlZCBmcm9t
LiAgSW4gcGFydGljdWxhciwgaXRzCisvLyBkZXN0cnVjdG9yIGlzIG5vdCB2aXJ0dWFsLgorLy8K
Ky8vIE5vdGUgdGhhdCBzdHJpbmdzdHJlYW0gYmVoYXZlcyBkaWZmZXJlbnRseSBpbiBnY2MgYW5k
IGluIE1TVkMuICBZb3UKKy8vIGNhbiBzdHJlYW0gYSBOVUxMIGNoYXIgcG9pbnRlciB0byBpdCBp
biB0aGUgZm9ybWVyLCBidXQgbm90IGluIHRoZQorLy8gbGF0dGVyIChpdCBjYXVzZXMgYW4gYWNj
ZXNzIHZpb2xhdGlvbiBpZiB5b3UgZG8pLiAgVGhlIE1lc3NhZ2UKKy8vIGNsYXNzIGhpZGVzIHRo
aXMgZGlmZmVyZW5jZSBieSB0cmVhdGluZyBhIE5VTEwgY2hhciBwb2ludGVyIGFzCisvLyAiKG51
bGwpIi4KK2NsYXNzIEdURVNUX0FQSV8gTWVzc2FnZSB7CisgcHJpdmF0ZToKKyAgLy8gVGhlIHR5
cGUgb2YgYmFzaWMgSU8gbWFuaXB1bGF0b3JzIChlbmRsLCBlbmRzLCBhbmQgZmx1c2gpIGZvcgor
ICAvLyBuYXJyb3cgc3RyZWFtcy4KKyAgdHlwZWRlZiBzdGQ6Om9zdHJlYW0mICgqQmFzaWNOYXJy
b3dJb01hbmlwKShzdGQ6Om9zdHJlYW0mKTsKKworIHB1YmxpYzoKKyAgLy8gQ29uc3RydWN0cyBh
biBlbXB0eSBNZXNzYWdlLgorICBNZXNzYWdlKCk7CisKKyAgLy8gQ29weSBjb25zdHJ1Y3Rvci4K
KyAgTWVzc2FnZShjb25zdCBNZXNzYWdlJiBtc2cpIDogc3NfKG5ldyA6OnN0ZDo6c3RyaW5nc3Ry
ZWFtKSB7ICAvLyBOT0xJTlQKKyAgICAqc3NfIDw8IG1zZy5HZXRTdHJpbmcoKTsKKyAgfQorCisg
IC8vIENvbnN0cnVjdHMgYSBNZXNzYWdlIGZyb20gYSBDLXN0cmluZy4KKyAgZXhwbGljaXQgTWVz
c2FnZShjb25zdCBjaGFyKiBzdHIpIDogc3NfKG5ldyA6OnN0ZDo6c3RyaW5nc3RyZWFtKSB7Cisg
ICAgKnNzXyA8PCBzdHI7CisgIH0KKworI2lmIEdURVNUX09TX1NZTUJJQU4KKyAgLy8gU3RyZWFt
cyBhIHZhbHVlIChlaXRoZXIgYSBwb2ludGVyIG9yIG5vdCkgdG8gdGhpcyBvYmplY3QuCisgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgorICBpbmxpbmUgTWVzc2FnZSYgb3BlcmF0b3IgPDwoY29uc3Qg
VCYgdmFsdWUpIHsKKyAgICBTdHJlYW1IZWxwZXIodHlwZW5hbWUgaW50ZXJuYWw6OmlzX3BvaW50
ZXI8VD46OnR5cGUoKSwgdmFsdWUpOworICAgIHJldHVybiAqdGhpczsKKyAgfQorI2Vsc2UKKyAg
Ly8gU3RyZWFtcyBhIG5vbi1wb2ludGVyIHZhbHVlIHRvIHRoaXMgb2JqZWN0LgorICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KKyAgaW5saW5lIE1lc3NhZ2UmIG9wZXJhdG9yIDw8KGNvbnN0IFQmIHZh
bCkgeworICAgIC8vIFNvbWUgbGlicmFyaWVzIG92ZXJsb2FkIDw8IGZvciBTVEwgY29udGFpbmVy
cy4gIFRoZXNlCisgICAgLy8gb3ZlcmxvYWRzIGFyZSBkZWZpbmVkIGluIHRoZSBnbG9iYWwgbmFt
ZXNwYWNlIGluc3RlYWQgb2YgOjpzdGQuCisgICAgLy8KKyAgICAvLyBDKysncyBzeW1ib2wgbG9v
a3VwIHJ1bGUgKGkuZS4gS29lbmlnIGxvb2t1cCkgc2F5cyB0aGF0IHRoZXNlCisgICAgLy8gb3Zl
cmxvYWRzIGFyZSB2aXNpYmxlIGluIGVpdGhlciB0aGUgc3RkIG5hbWVzcGFjZSBvciB0aGUgZ2xv
YmFsCisgICAgLy8gbmFtZXNwYWNlLCBidXQgbm90IG90aGVyIG5hbWVzcGFjZXMsIGluY2x1ZGlu
ZyB0aGUgdGVzdGluZworICAgIC8vIG5hbWVzcGFjZSB3aGljaCBHb29nbGUgVGVzdCdzIE1lc3Nh
Z2UgY2xhc3MgaXMgaW4uCisgICAgLy8KKyAgICAvLyBUbyBhbGxvdyBTVEwgY29udGFpbmVycyAo
YW5kIG90aGVyIHR5cGVzIHRoYXQgaGFzIGEgPDwgb3BlcmF0b3IKKyAgICAvLyBkZWZpbmVkIGlu
IHRoZSBnbG9iYWwgbmFtZXNwYWNlKSB0byBiZSB1c2VkIGluIEdvb2dsZSBUZXN0CisgICAgLy8g
YXNzZXJ0aW9ucywgdGVzdGluZzo6TWVzc2FnZSBtdXN0IGFjY2VzcyB0aGUgY3VzdG9tIDw8IG9w
ZXJhdG9yCisgICAgLy8gZnJvbSB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4gIFdpdGggdGhpcyB1c2lu
ZyBkZWNsYXJhdGlvbiwKKyAgICAvLyBvdmVybG9hZHMgb2YgPDwgZGVmaW5lZCBpbiB0aGUgZ2xv
YmFsIG5hbWVzcGFjZSBhbmQgdGhvc2UKKyAgICAvLyB2aXNpYmxlIHZpYSBLb2VuaWcgbG9va3Vw
IGFyZSBib3RoIGV4cG9zZWQgaW4gdGhpcyBmdW5jdGlvbi4KKyAgICB1c2luZyA6Om9wZXJhdG9y
IDw8OworICAgICpzc18gPDwgdmFsOworICAgIHJldHVybiAqdGhpczsKKyAgfQorCisgIC8vIFN0
cmVhbXMgYSBwb2ludGVyIHZhbHVlIHRvIHRoaXMgb2JqZWN0LgorICAvLworICAvLyBUaGlzIGZ1
bmN0aW9uIGlzIGFuIG92ZXJsb2FkIG9mIHRoZSBwcmV2aW91cyBvbmUuICBXaGVuIHlvdQorICAv
LyBzdHJlYW0gYSBwb2ludGVyIHRvIGEgTWVzc2FnZSwgdGhpcyBkZWZpbml0aW9uIHdpbGwgYmUg
dXNlZCBhcyBpdAorICAvLyBpcyBtb3JlIHNwZWNpYWxpemVkLiAgKFRoZSBDKysgU3RhbmRhcmQs
IHNlY3Rpb24KKyAgLy8gW3RlbXAuZnVuYy5vcmRlcl0uKSAgSWYgeW91IHN0cmVhbSBhIG5vbi1w
b2ludGVyLCB0aGVuIHRoZQorICAvLyBwcmV2aW91cyBkZWZpbml0aW9uIHdpbGwgYmUgdXNlZC4K
KyAgLy8KKyAgLy8gVGhlIHJlYXNvbiBmb3IgdGhpcyBvdmVybG9hZCBpcyB0aGF0IHN0cmVhbWlu
ZyBhIE5VTEwgcG9pbnRlciB0bworICAvLyBvc3RyZWFtIGlzIHVuZGVmaW5lZCBiZWhhdmlvci4g
IERlcGVuZGluZyBvbiB0aGUgY29tcGlsZXIsIHlvdQorICAvLyBtYXkgZ2V0ICIwIiwgIihuaWwp
IiwgIihudWxsKSIsIG9yIGFuIGFjY2VzcyB2aW9sYXRpb24uICBUbworICAvLyBlbnN1cmUgY29u
c2lzdGVudCByZXN1bHQgYWNyb3NzIGNvbXBpbGVycywgd2UgYWx3YXlzIHRyZWF0IE5VTEwKKyAg
Ly8gYXMgIihudWxsKSIuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBpbmxpbmUgTWVzc2Fn
ZSYgb3BlcmF0b3IgPDwoVCogY29uc3QmIHBvaW50ZXIpIHsgIC8vIE5PTElOVAorICAgIGlmIChw
b2ludGVyID09IE5VTEwpIHsKKyAgICAgICpzc18gPDwgIihudWxsKSI7CisgICAgfSBlbHNlIHsK
KyAgICAgICpzc18gPDwgcG9pbnRlcjsKKyAgICB9CisgICAgcmV0dXJuICp0aGlzOworICB9Cisj
ZW5kaWYgIC8vIEdURVNUX09TX1NZTUJJQU4KKworICAvLyBTaW5jZSB0aGUgYmFzaWMgSU8gbWFu
aXB1bGF0b3JzIGFyZSBvdmVybG9hZGVkIGZvciBib3RoIG5hcnJvdworICAvLyBhbmQgd2lkZSBz
dHJlYW1zLCB3ZSBoYXZlIHRvIHByb3ZpZGUgdGhpcyBzcGVjaWFsaXplZCBkZWZpbml0aW9uCisg
IC8vIG9mIG9wZXJhdG9yIDw8LCBldmVuIHRob3VnaCBpdHMgYm9keSBpcyB0aGUgc2FtZSBhcyB0
aGUKKyAgLy8gdGVtcGxhdGl6ZWQgdmVyc2lvbiBhYm92ZS4gIFdpdGhvdXQgdGhpcyBkZWZpbml0
aW9uLCBzdHJlYW1pbmcKKyAgLy8gZW5kbCBvciBvdGhlciBiYXNpYyBJTyBtYW5pcHVsYXRvcnMg
dG8gTWVzc2FnZSB3aWxsIGNvbmZ1c2UgdGhlCisgIC8vIGNvbXBpbGVyLgorICBNZXNzYWdlJiBv
cGVyYXRvciA8PChCYXNpY05hcnJvd0lvTWFuaXAgdmFsKSB7CisgICAgKnNzXyA8PCB2YWw7Cisg
ICAgcmV0dXJuICp0aGlzOworICB9CisKKyAgLy8gSW5zdGVhZCBvZiAxLzAsIHdlIHdhbnQgdG8g
c2VlIHRydWUvZmFsc2UgZm9yIGJvb2wgdmFsdWVzLgorICBNZXNzYWdlJiBvcGVyYXRvciA8PChi
b29sIGIpIHsKKyAgICByZXR1cm4gKnRoaXMgPDwgKGIgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKyAg
fQorCisgIC8vIFRoZXNlIHR3byBvdmVybG9hZHMgYWxsb3cgc3RyZWFtaW5nIGEgd2lkZSBDIHN0
cmluZyB0byBhIE1lc3NhZ2UKKyAgLy8gdXNpbmcgdGhlIFVURi04IGVuY29kaW5nLgorICBNZXNz
YWdlJiBvcGVyYXRvciA8PChjb25zdCB3Y2hhcl90KiB3aWRlX2Nfc3RyKTsKKyAgTWVzc2FnZSYg
b3BlcmF0b3IgPDwod2NoYXJfdCogd2lkZV9jX3N0cik7CisKKyNpZiBHVEVTVF9IQVNfU1REX1dT
VFJJTkcKKyAgLy8gQ29udmVydHMgdGhlIGdpdmVuIHdpZGUgc3RyaW5nIHRvIGEgbmFycm93IHN0
cmluZyB1c2luZyB0aGUgVVRGLTgKKyAgLy8gZW5jb2RpbmcsIGFuZCBzdHJlYW1zIHRoZSByZXN1
bHQgdG8gdGhpcyBNZXNzYWdlIG9iamVjdC4KKyAgTWVzc2FnZSYgb3BlcmF0b3IgPDwoY29uc3Qg
OjpzdGQ6OndzdHJpbmcmIHdzdHIpOworI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX1dTVFJJTkcK
KworI2lmIEdURVNUX0hBU19HTE9CQUxfV1NUUklORworICAvLyBDb252ZXJ0cyB0aGUgZ2l2ZW4g
d2lkZSBzdHJpbmcgdG8gYSBuYXJyb3cgc3RyaW5nIHVzaW5nIHRoZSBVVEYtOAorICAvLyBlbmNv
ZGluZywgYW5kIHN0cmVhbXMgdGhlIHJlc3VsdCB0byB0aGlzIE1lc3NhZ2Ugb2JqZWN0LgorICBN
ZXNzYWdlJiBvcGVyYXRvciA8PChjb25zdCA6OndzdHJpbmcmIHdzdHIpOworI2VuZGlmICAvLyBH
VEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKKworICAvLyBHZXRzIHRoZSB0ZXh0IHN0cmVhbWVkIHRv
IHRoaXMgb2JqZWN0IHNvIGZhciBhcyBhbiBzdGQ6OnN0cmluZy4KKyAgLy8gRWFjaCAnXDAnIGNo
YXJhY3RlciBpbiB0aGUgYnVmZmVyIGlzIHJlcGxhY2VkIHdpdGggIlxcMCIuCisgIC8vCisgIC8v
IElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4K
KyAgc3RkOjpzdHJpbmcgR2V0U3RyaW5nKCkgY29uc3Q7CisKKyBwcml2YXRlOgorCisjaWYgR1RF
U1RfT1NfU1lNQklBTgorICAvLyBUaGVzZSBhcmUgbmVlZGVkIGFzIHRoZSBOb2tpYSBTeW1iaWFu
IENvbXBpbGVyIGNhbm5vdCBkZWNpZGUgYmV0d2VlbgorICAvLyBjb25zdCBUJiBhbmQgY29uc3Qg
VCogaW4gYSBmdW5jdGlvbiB0ZW1wbGF0ZS4gVGhlIE5va2lhIGNvbXBpbGVyIF9jYW5fCisgIC8v
IGRlY2lkZSBiZXR3ZWVuIGNsYXNzIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9ucyBmb3IgVCBhbmQg
VCosIHNvIGEKKyAgLy8gdHIxOjp0eXBlX3RyYWl0cy1saWtlIGlzX3BvaW50ZXIgd29ya3MsIGFu
ZCB3ZSBjYW4gb3ZlcmxvYWQgb24gdGhhdC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIGlu
bGluZSB2b2lkIFN0cmVhbUhlbHBlcihpbnRlcm5hbDo6dHJ1ZV90eXBlIC8qaXNfcG9pbnRlciov
LCBUKiBwb2ludGVyKSB7CisgICAgaWYgKHBvaW50ZXIgPT0gTlVMTCkgeworICAgICAgKnNzXyA8
PCAiKG51bGwpIjsKKyAgICB9IGVsc2UgeworICAgICAgKnNzXyA8PCBwb2ludGVyOworICAgIH0K
KyAgfQorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgaW5saW5lIHZvaWQgU3RyZWFtSGVscGVy
KGludGVybmFsOjpmYWxzZV90eXBlIC8qaXNfcG9pbnRlciovLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVCYgdmFsdWUpIHsKKyAgICAvLyBTZWUgdGhlIGNvbW1lbnRzIGluIE1l
c3NhZ2UmIG9wZXJhdG9yIDw8KGNvbnN0IFQmKSBhYm92ZSBmb3Igd2h5CisgICAgLy8gd2UgbmVl
ZCB0aGlzIHVzaW5nIHN0YXRlbWVudC4KKyAgICB1c2luZyA6Om9wZXJhdG9yIDw8OworICAgICpz
c18gPDwgdmFsdWU7CisgIH0KKyNlbmRpZiAgLy8gR1RFU1RfT1NfU1lNQklBTgorCisgIC8vIFdl
J2xsIGhvbGQgdGhlIHRleHQgc3RyZWFtZWQgdG8gdGhpcyBvYmplY3QgaGVyZS4KKyAgY29uc3Qg
aW50ZXJuYWw6OnNjb3BlZF9wdHI8IDo6c3RkOjpzdHJpbmdzdHJlYW0+IHNzXzsKKworICAvLyBX
ZSBkZWNsYXJlIChidXQgZG9uJ3QgaW1wbGVtZW50KSB0aGlzIHRvIHByZXZlbnQgdGhlIGNvbXBp
bGVyCisgIC8vIGZyb20gaW1wbGVtZW50aW5nIHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yLgorICB2
b2lkIG9wZXJhdG9yPShjb25zdCBNZXNzYWdlJik7Cit9OworCisvLyBTdHJlYW1zIGEgTWVzc2Fn
ZSB0byBhbiBvc3RyZWFtLgoraW5saW5lIHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3IgPDwoc3RkOjpv
c3RyZWFtJiBvcywgY29uc3QgTWVzc2FnZSYgc2IpIHsKKyAgcmV0dXJuIG9zIDw8IHNiLkdldFN0
cmluZygpOworfQorCituYW1lc3BhY2UgaW50ZXJuYWwgeworCisvLyBDb252ZXJ0cyBhIHN0cmVh
bWFibGUgdmFsdWUgdG8gYW4gc3RkOjpzdHJpbmcuICBBIE5VTEwgcG9pbnRlciBpcworLy8gY29u
dmVydGVkIHRvICIobnVsbCkiLiAgV2hlbiB0aGUgaW5wdXQgdmFsdWUgaXMgYSA6OnN0cmluZywK
Ky8vIDo6c3RkOjpzdHJpbmcsIDo6d3N0cmluZywgb3IgOjpzdGQ6OndzdHJpbmcgb2JqZWN0LCBl
YWNoIE5VTAorLy8gY2hhcmFjdGVyIGluIGl0IGlzIHJlcGxhY2VkIHdpdGggIlxcMCIuCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KK3N0ZDo6c3RyaW5nIFN0cmVhbWFibGVUb1N0cmluZyhjb25zdCBU
JiBzdHJlYW1hYmxlKSB7CisgIHJldHVybiAoTWVzc2FnZSgpIDw8IHN0cmVhbWFibGUpLkdldFN0
cmluZygpOworfQorCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSB0
ZXN0aW5nCisKKyNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9NRVNTQUdFX0hf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3Qu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjAzOGY5YmE3OWViMzAzNzdmMTY1ZDhhMDIwMGQ0NzUwZDM0OWI4ZTcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaApAQCAt
MCwwICsxLDE0NDQgQEAKKy8vIFRoaXMgZmlsZSB3YXMgR0VORVJBVEVEIGJ5IGNvbW1hbmQ6Cisv
LyAgICAgcHVtcC5weSBndGVzdC1wYXJhbS10ZXN0LmgucHVtcAorLy8gRE8gTk9UIEVESVQgQlkg
SEFORCEhIQorCisvLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6Cisv
LworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8v
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8v
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisv
LworLy8gQXV0aG9yczogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKKy8vCisvLyBNYWNy
b3MgYW5kIGZ1bmN0aW9ucyBmb3IgaW1wbGVtZW50aW5nIHBhcmFtZXRlcml6ZWQgdGVzdHMKKy8v
IGluIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8KKy8vIFRo
aXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgYSBTQ1JJUFQuICBETyBOT1QgRURJVCBCWSBIQU5EIQor
Ly8KKyNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QQVJBTV9URVNUX0hfCisjZGVm
aW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUEFSQU1fVEVTVF9IXworCisKKy8vIFZhbHVl
LXBhcmFtZXRlcml6ZWQgdGVzdHMgYWxsb3cgeW91IHRvIHRlc3QgeW91ciBjb2RlIHdpdGggZGlm
ZmVyZW50CisvLyBwYXJhbWV0ZXJzIHdpdGhvdXQgd3JpdGluZyBtdWx0aXBsZSBjb3BpZXMgb2Yg
dGhlIHNhbWUgdGVzdC4KKy8vCisvLyBIZXJlIGlzIGhvdyB5b3UgdXNlIHZhbHVlLXBhcmFtZXRl
cml6ZWQgdGVzdHM6CisKKyNpZiAwCisKKy8vIFRvIHdyaXRlIHZhbHVlLXBhcmFtZXRlcml6ZWQg
dGVzdHMsIGZpcnN0IHlvdSBzaG91bGQgZGVmaW5lIGEgZml4dHVyZQorLy8gY2xhc3MuIEl0IGlz
IHVzdWFsbHkgZGVyaXZlZCBmcm9tIHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08VD4gKHNlZSBiZWxv
dyBmb3IKKy8vIGFub3RoZXIgaW5oZXJpdGFuY2Ugc2NoZW1lIHRoYXQncyBzb21ldGltZXMgdXNl
ZnVsIGluIG1vcmUgY29tcGxpY2F0ZWQKKy8vIGNsYXNzIGhpZXJhcmNoaWVzKSwgd2hlcmUgdGhl
IHR5cGUgb2YgeW91ciBwYXJhbWV0ZXIgdmFsdWVzLgorLy8gVGVzdFdpdGhQYXJhbTxUPiBpcyBp
dHNlbGYgZGVyaXZlZCBmcm9tIHRlc3Rpbmc6OlRlc3QuIFQgY2FuIGJlIGFueQorLy8gY29weWFi
bGUgdHlwZS4gSWYgaXQncyBhIHJhdyBwb2ludGVyLCB5b3UgYXJlIHJlc3BvbnNpYmxlIGZvciBt
YW5hZ2luZyB0aGUKKy8vIGxpZmVzcGFuIG9mIHRoZSBwb2ludGVkIHZhbHVlcy4KKworY2xhc3Mg
Rm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08Y29uc3QgY2hhcio+IHsK
KyAgLy8gWW91IGNhbiBpbXBsZW1lbnQgYWxsIHRoZSB1c3VhbCBjbGFzcyBmaXh0dXJlIG1lbWJl
cnMgaGVyZS4KK307CisKKy8vIFRoZW4sIHVzZSB0aGUgVEVTVF9QIG1hY3JvIHRvIGRlZmluZSBh
cyBtYW55IHBhcmFtZXRlcml6ZWQgdGVzdHMKKy8vIGZvciB0aGlzIGZpeHR1cmUgYXMgeW91IHdh
bnQuIFRoZSBfUCBzdWZmaXggaXMgZm9yICJwYXJhbWV0ZXJpemVkIgorLy8gb3IgInBhdHRlcm4i
LCB3aGljaGV2ZXIgeW91IHByZWZlciB0byB0aGluay4KKworVEVTVF9QKEZvb1Rlc3QsIERvZXNC
bGFoKSB7CisgIC8vIEluc2lkZSBhIHRlc3QsIGFjY2VzcyB0aGUgdGVzdCBwYXJhbWV0ZXIgd2l0
aCB0aGUgR2V0UGFyYW0oKSBtZXRob2QKKyAgLy8gb2YgdGhlIFRlc3RXaXRoUGFyYW08VD4gY2xh
c3M6CisgIEVYUEVDVF9UUlVFKGZvby5CbGFoKEdldFBhcmFtKCkpKTsKKyAgLi4uCit9CisKK1RF
U1RfUChGb29UZXN0LCBIYXNCbGFoQmxhaCkgeworICAuLi4KK30KKworLy8gRmluYWxseSwgeW91
IGNhbiB1c2UgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AgdG8gaW5zdGFudGlhdGUgdGhlIHRlc3QK
Ky8vIGNhc2Ugd2l0aCBhbnkgc2V0IG9mIHBhcmFtZXRlcnMgeW91IHdhbnQuIEdvb2dsZSBUZXN0
IGRlZmluZXMgYSBudW1iZXIKKy8vIG9mIGZ1bmN0aW9ucyBmb3IgZ2VuZXJhdGluZyB0ZXN0IHBh
cmFtZXRlcnMuIFRoZXkgcmV0dXJuIHdoYXQgd2UgY2FsbAorLy8gKHN1cnByaXNlISkgcGFyYW1l
dGVyIGdlbmVyYXRvcnMuIEhlcmUgaXMgYSAgc3VtbWFyeSBvZiB0aGVtLCB3aGljaAorLy8gYXJl
IGFsbCBpbiB0aGUgdGVzdGluZyBuYW1lc3BhY2U6CisvLworLy8KKy8vICBSYW5nZShiZWdpbiwg
ZW5kIFssIHN0ZXBdKSAtIFlpZWxkcyB2YWx1ZXMge2JlZ2luLCBiZWdpbitzdGVwLAorLy8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW4rc3RlcCtzdGVwLCAuLi59LiBUaGUgdmFs
dWVzIGRvIG5vdAorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSBlbmQu
IHN0ZXAgZGVmYXVsdHMgdG8gMS4KKy8vICBWYWx1ZXModjEsIHYyLCAuLi4sIHZOKSAgICAtIFlp
ZWxkcyB2YWx1ZXMge3YxLCB2MiwgLi4uLCB2Tn0uCisvLyAgVmFsdWVzSW4oY29udGFpbmVyKSAg
ICAgICAgLSBZaWVsZHMgdmFsdWVzIGZyb20gYSBDLXN0eWxlIGFycmF5LCBhbiBTVEwKKy8vICBW
YWx1ZXNJbihiZWdpbixlbmQpICAgICAgICAgIGNvbnRhaW5lciwgb3IgYW4gaXRlcmF0b3IgcmFu
Z2UgW2JlZ2luLCBlbmQpLgorLy8gIEJvb2woKSAgICAgICAgICAgICAgICAgICAgIC0gWWllbGRz
IHNlcXVlbmNlIHtmYWxzZSwgdHJ1ZX0uCisvLyAgQ29tYmluZShnMSwgZzIsIC4uLiwgZ04pICAg
LSBZaWVsZHMgYWxsIGNvbWJpbmF0aW9ucyAodGhlIENhcnRlc2lhbiBwcm9kdWN0CisvLyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIG1hdGggc2F2dnkpIG9mIHRoZSB2YWx1
ZXMgZ2VuZXJhdGVkCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSB0aGUgTiBn
ZW5lcmF0b3JzLgorLy8KKy8vIEZvciBtb3JlIGRldGFpbHMsIHNlZSBjb21tZW50cyBhdCB0aGUg
ZGVmaW5pdGlvbnMgb2YgdGhlc2UgZnVuY3Rpb25zIGJlbG93CisvLyBpbiB0aGlzIGZpbGUuCisv
LworLy8gVGhlIGZvbGxvd2luZyBzdGF0ZW1lbnQgd2lsbCBpbnN0YW50aWF0ZSB0ZXN0cyBmcm9t
IHRoZSBGb29UZXN0IHRlc3QgY2FzZQorLy8gZWFjaCB3aXRoIHBhcmFtZXRlciB2YWx1ZXMgIm1l
ZW55IiwgIm1pbnkiLCBhbmQgIm1vZSIuCisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEluc3Rh
bnRpYXRpb25OYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgRm9vVGVzdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbHVlcygibWVlbnkiLCAibWlueSIsICJtb2UiKSk7CisKKy8vIFRv
IGRpc3Rpbmd1aXNoIGRpZmZlcmVudCBpbnN0YW5jZXMgb2YgdGhlIHBhdHRlcm4sICh5ZXMsIHlv
dQorLy8gY2FuIGluc3RhbnRpYXRlIGl0IG1vcmUgdGhlbiBvbmNlKSB0aGUgZmlyc3QgYXJndW1l
bnQgdG8gdGhlCisvLyBJTlNUQU5USUFURV9URVNUX0NBU0VfUCBtYWNybyBpcyBhIHByZWZpeCB0
aGF0IHdpbGwgYmUgYWRkZWQgdG8gdGhlCisvLyBhY3R1YWwgdGVzdCBjYXNlIG5hbWUuIFJlbWVt
YmVyIHRvIHBpY2sgdW5pcXVlIHByZWZpeGVzIGZvciBkaWZmZXJlbnQKKy8vIGluc3RhbnRpYXRp
b25zLiBUaGUgdGVzdHMgZnJvbSB0aGUgaW5zdGFudGlhdGlvbiBhYm92ZSB3aWxsIGhhdmUKKy8v
IHRoZXNlIG5hbWVzOgorLy8KKy8vICAgICogSW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2Vz
QmxhaC8wIGZvciAibWVlbnkiCisvLyAgICAqIEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuRG9l
c0JsYWgvMSBmb3IgIm1pbnkiCisvLyAgICAqIEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuRG9l
c0JsYWgvMiBmb3IgIm1vZSIKKy8vICAgICogSW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5IYXNC
bGFoQmxhaC8wIGZvciAibWVlbnkiCisvLyAgICAqIEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3Qu
SGFzQmxhaEJsYWgvMSBmb3IgIm1pbnkiCisvLyAgICAqIEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rl
c3QuSGFzQmxhaEJsYWgvMiBmb3IgIm1vZSIKKy8vCisvLyBZb3UgY2FuIHVzZSB0aGVzZSBuYW1l
cyBpbiAtLWd0ZXN0X2ZpbHRlci4KKy8vCisvLyBUaGlzIHN0YXRlbWVudCB3aWxsIGluc3RhbnRp
YXRlIGFsbCB0ZXN0cyBmcm9tIEZvb1Rlc3QgYWdhaW4sIGVhY2gKKy8vIHdpdGggcGFyYW1ldGVy
IHZhbHVlcyAiY2F0IiBhbmQgImRvZyI6CisKK2NvbnN0IGNoYXIqIHBldHNbXSA9IHsiY2F0Iiwg
ImRvZyJ9OworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoQW5vdGhlckluc3RhbnRpYXRpb25OYW1l
LCBGb29UZXN0LCBWYWx1ZXNJbihwZXRzKSk7CisKKy8vIFRoZSB0ZXN0cyBmcm9tIHRoZSBpbnN0
YW50aWF0aW9uIGFib3ZlIHdpbGwgaGF2ZSB0aGVzZSBuYW1lczoKKy8vCisvLyAgICAqIEFub3Ro
ZXJJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzAgZm9yICJjYXQiCisvLyAgICAq
IEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzEgZm9yICJkb2ciCisv
LyAgICAqIEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0JsYWhCbGFoLzAgZm9y
ICJjYXQiCisvLyAgICAqIEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0JsYWhC
bGFoLzEgZm9yICJkb2ciCisvLworLy8gUGxlYXNlIG5vdGUgdGhhdCBJTlNUQU5USUFURV9URVNU
X0NBU0VfUCB3aWxsIGluc3RhbnRpYXRlIGFsbCB0ZXN0cworLy8gaW4gdGhlIGdpdmVuIHRlc3Qg
Y2FzZSwgd2hldGhlciB0aGVpciBkZWZpbml0aW9ucyBjb21lIGJlZm9yZSBvcgorLy8gQUZURVIg
dGhlIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QIHN0YXRlbWVudC4KKy8vCisvLyBQbGVhc2UgYWxz
byBub3RlIHRoYXQgZ2VuZXJhdG9yIGV4cHJlc3Npb25zIChpbmNsdWRpbmcgcGFyYW1ldGVycyB0
byB0aGUKKy8vIGdlbmVyYXRvcnMpIGFyZSBldmFsdWF0ZWQgaW4gSW5pdEdvb2dsZVRlc3QoKSwg
YWZ0ZXIgbWFpbigpIGhhcyBzdGFydGVkLgorLy8gVGhpcyBhbGxvd3MgdGhlIHVzZXIgb24gb25l
IGhhbmQsIHRvIGFkanVzdCBnZW5lcmF0b3IgcGFyYW1ldGVycyBpbiBvcmRlcgorLy8gdG8gZHlu
YW1pY2FsbHkgZGV0ZXJtaW5lIGEgc2V0IG9mIHRlc3RzIHRvIHJ1biBhbmQgb24gdGhlIG90aGVy
IGhhbmQsCisvLyBnaXZlIHRoZSB1c2VyIGEgY2hhbmNlIHRvIGluc3BlY3QgdGhlIGdlbmVyYXRl
ZCB0ZXN0cyB3aXRoIEdvb2dsZSBUZXN0CisvLyByZWZsZWN0aW9uIEFQSSBiZWZvcmUgUlVOX0FM
TF9URVNUUygpIGlzIGV4ZWN1dGVkLgorLy8KKy8vIFlvdSBjYW4gc2VlIHNhbXBsZXMvc2FtcGxl
N191bml0dGVzdC5jYyBhbmQgc2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNjCisvLyBmb3IgbW9y
ZSBleGFtcGxlcy4KKy8vCisvLyBJbiB0aGUgZnV0dXJlLCB3ZSBwbGFuIHRvIHB1Ymxpc2ggdGhl
IEFQSSBmb3IgZGVmaW5pbmcgbmV3IHBhcmFtZXRlcgorLy8gZ2VuZXJhdG9ycy4gQnV0IGZvciBu
b3cgdGhpcyBpbnRlcmZhY2UgcmVtYWlucyBwYXJ0IG9mIHRoZSBpbnRlcm5hbAorLy8gaW1wbGVt
ZW50YXRpb24gYW5kIGlzIHN1YmplY3QgdG8gY2hhbmdlLgorLy8KKy8vCisvLyBBIHBhcmFtZXRl
cml6ZWQgdGVzdCBmaXh0dXJlIG11c3QgYmUgZGVyaXZlZCBmcm9tIHRlc3Rpbmc6OlRlc3QgYW5k
IGZyb20KKy8vIHRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxUPiwgd2hlcmUgVCBpcyB0aGUg
dHlwZSBvZiB0aGUgcGFyYW1ldGVyCisvLyB2YWx1ZXMuIEluaGVyaXRpbmcgZnJvbSBUZXN0V2l0
aFBhcmFtPFQ+IHNhdGlzZmllcyB0aGF0IHJlcXVpcmVtZW50IGJlY2F1c2UKKy8vIFRlc3RXaXRo
UGFyYW08VD4gaW5oZXJpdHMgZnJvbSBib3RoIFRlc3QgYW5kIFdpdGhQYXJhbUludGVyZmFjZS4g
SW4gbW9yZQorLy8gY29tcGxpY2F0ZWQgaGllcmFyY2hpZXMsIGhvd2V2ZXIsIGl0IGlzIG9jY2Fz
aW9uYWxseSB1c2VmdWwgdG8gaW5oZXJpdAorLy8gc2VwYXJhdGVseSBmcm9tIFRlc3QgYW5kIFdp
dGhQYXJhbUludGVyZmFjZS4gRm9yIGV4YW1wbGU6CisKK2NsYXNzIEJhc2VUZXN0IDogcHVibGlj
IDo6dGVzdGluZzo6VGVzdCB7CisgIC8vIFlvdSBjYW4gaW5oZXJpdCBhbGwgdGhlIHVzdWFsIG1l
bWJlcnMgZm9yIGEgbm9uLXBhcmFtZXRlcml6ZWQgdGVzdAorICAvLyBmaXh0dXJlIGhlcmUuCit9
OworCitjbGFzcyBEZXJpdmVkVGVzdCA6IHB1YmxpYyBCYXNlVGVzdCwgcHVibGljIDo6dGVzdGlu
Zzo6V2l0aFBhcmFtSW50ZXJmYWNlPGludD4geworICAvLyBUaGUgdXN1YWwgdGVzdCBmaXh0dXJl
IG1lbWJlcnMgZ28gaGVyZSB0b28uCit9OworCitURVNUX0YoQmFzZVRlc3QsIEhhc0Zvbykgewor
ICAvLyBUaGlzIGlzIGFuIG9yZGluYXJ5IG5vbi1wYXJhbWV0ZXJpemVkIHRlc3QuCit9CisKK1RF
U1RfUChEZXJpdmVkVGVzdCwgRG9lc0JsYWgpIHsKKyAgLy8gR2V0UGFyYW0gd29ya3MganVzdCB0
aGUgc2FtZSBoZXJlIGFzIGlmIHlvdSBpbmhlcml0IGZyb20gVGVzdFdpdGhQYXJhbS4KKyAgRVhQ
RUNUX1RSVUUoZm9vLkJsYWgoR2V0UGFyYW0oKSkpOworfQorCisjZW5kaWYgIC8vIDAKKworI2lu
Y2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKKworI2lmICFHVEVTVF9PU19TWU1C
SUFOCisjIGluY2x1ZGUgPHV0aWxpdHk+CisjZW5kaWYKKworLy8gc2NyaXB0cy9mdXNlX2d0ZXN0
LnB5IGRlcGVuZHMgb24gZ3Rlc3QncyBvd24gaGVhZGVyIGJlaW5nICNpbmNsdWRlZAorLy8gKnVu
Y29uZGl0aW9uYWxseSouICBUaGVyZWZvcmUgdGhlc2UgI2luY2x1ZGVzIGNhbm5vdCBiZSBtb3Zl
ZAorLy8gaW5zaWRlICNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVC4KKyNpbmNsdWRlICJndGVzdC9p
bnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0
LXBhcmFtLXV0aWwuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGls
LWdlbmVyYXRlZC5oIgorCisjaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKKworbmFtZXNwYWNlIHRl
c3RpbmcgeworCisvLyBGdW5jdGlvbnMgcHJvZHVjaW5nIHBhcmFtZXRlciBnZW5lcmF0b3JzLgor
Ly8KKy8vIEdvb2dsZSBUZXN0IHVzZXMgdGhlc2UgZ2VuZXJhdG9ycyB0byBwcm9kdWNlIHBhcmFt
ZXRlcnMgZm9yIHZhbHVlLQorLy8gcGFyYW1ldGVyaXplZCB0ZXN0cy4gV2hlbiBhIHBhcmFtZXRl
cml6ZWQgdGVzdCBjYXNlIGlzIGluc3RhbnRpYXRlZAorLy8gd2l0aCBhIHBhcnRpY3VsYXIgZ2Vu
ZXJhdG9yLCBHb29nbGUgVGVzdCBjcmVhdGVzIGFuZCBydW5zIHRlc3RzCisvLyBmb3IgZWFjaCBl
bGVtZW50IGluIHRoZSBzZXF1ZW5jZSBwcm9kdWNlZCBieSB0aGUgZ2VuZXJhdG9yLgorLy8KKy8v
IEluIHRoZSBmb2xsb3dpbmcgc2FtcGxlLCB0ZXN0cyBmcm9tIHRlc3QgY2FzZSBGb29UZXN0IGFy
ZSBpbnN0YW50aWF0ZWQKKy8vIGVhY2ggdGhyZWUgdGltZXMgd2l0aCBwYXJhbWV0ZXIgdmFsdWVz
IDMsIDUsIGFuZCA4OgorLy8KKy8vIGNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJh
bTxpbnQ+IHsgLi4uIH07CisvLworLy8gVEVTVF9QKEZvb1Rlc3QsIFRlc3RUaGlzKSB7CisvLyB9
CisvLyBURVNUX1AoRm9vVGVzdCwgVGVzdFRoYXQpIHsKKy8vIH0KKy8vIElOU1RBTlRJQVRFX1RF
U1RfQ0FTRV9QKFRlc3RTZXF1ZW5jZSwgRm9vVGVzdCwgVmFsdWVzKDMsIDUsIDgpKTsKKy8vCisK
Ky8vIFJhbmdlKCkgcmV0dXJucyBnZW5lcmF0b3JzIHByb3ZpZGluZyBzZXF1ZW5jZXMgb2YgdmFs
dWVzIGluIGEgcmFuZ2UuCisvLworLy8gU3lub3BzaXM6CisvLyBSYW5nZShzdGFydCwgZW5kKQor
Ly8gICAtIHJldHVybnMgYSBnZW5lcmF0b3IgcHJvZHVjaW5nIGEgc2VxdWVuY2Ugb2YgdmFsdWVz
IHtzdGFydCwgc3RhcnQrMSwKKy8vICAgICBzdGFydCsyLCAuLi4sIH0uCisvLyBSYW5nZShzdGFy
dCwgZW5kLCBzdGVwKQorLy8gICAtIHJldHVybnMgYSBnZW5lcmF0b3IgcHJvZHVjaW5nIGEgc2Vx
dWVuY2Ugb2YgdmFsdWVzIHtzdGFydCwgc3RhcnQrc3RlcCwKKy8vICAgICBzdGFydCtzdGVwK3N0
ZXAsIC4uLiwgfS4KKy8vIE5vdGVzOgorLy8gICAqIFRoZSBnZW5lcmF0ZWQgc2VxdWVuY2VzIG5l
dmVyIGluY2x1ZGUgZW5kLiBGb3IgZXhhbXBsZSwgUmFuZ2UoMSwgNSkKKy8vICAgICByZXR1cm5z
IGEgZ2VuZXJhdG9yIHByb2R1Y2luZyBhIHNlcXVlbmNlIHsxLCAyLCAzLCA0fS4gUmFuZ2UoMSwg
OSwgMikKKy8vICAgICByZXR1cm5zIGEgZ2VuZXJhdG9yIHByb2R1Y2luZyB7MSwgMywgNSwgN30u
CisvLyAgICogc3RhcnQgYW5kIGVuZCBtdXN0IGhhdmUgdGhlIHNhbWUgdHlwZS4gVGhhdCB0eXBl
IG1heSBiZSBhbnkgaW50ZWdyYWwgb3IKKy8vICAgICBmbG9hdGluZy1wb2ludCB0eXBlIG9yIGEg
dXNlciBkZWZpbmVkIHR5cGUgc2F0aXNmeWluZyB0aGVzZSBjb25kaXRpb25zOgorLy8gICAgICog
SXQgbXVzdCBiZSBhc3NpZ25hYmxlIChoYXZlIG9wZXJhdG9yPSgpIGRlZmluZWQpLgorLy8gICAg
ICogSXQgbXVzdCBoYXZlIG9wZXJhdG9yKygpIChvcGVyYXRvcisoaW50LWNvbXBhdGlibGUgdHlw
ZSkgZm9yCisvLyAgICAgICB0d28tb3BlcmFuZCB2ZXJzaW9uKS4KKy8vICAgICAqIEl0IG11c3Qg
aGF2ZSBvcGVyYXRvcjwoKSBkZWZpbmVkLgorLy8gICAgIEVsZW1lbnRzIGluIHRoZSByZXN1bHRp
bmcgc2VxdWVuY2VzIHdpbGwgYWxzbyBoYXZlIHRoYXQgdHlwZS4KKy8vICAgKiBDb25kaXRpb24g
c3RhcnQgPCBlbmQgbXVzdCBiZSBzYXRpc2ZpZWQgaW4gb3JkZXIgZm9yIHJlc3VsdGluZyBzZXF1
ZW5jZXMKKy8vICAgICB0byBjb250YWluIGFueSBlbGVtZW50cy4KKy8vCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgSW5jcmVtZW50VD4KK2ludGVybmFsOjpQYXJhbUdlbmVyYXRvcjxU
PiBSYW5nZShUIHN0YXJ0LCBUIGVuZCwgSW5jcmVtZW50VCBzdGVwKSB7CisgIHJldHVybiBpbnRl
cm5hbDo6UGFyYW1HZW5lcmF0b3I8VD4oCisgICAgICBuZXcgaW50ZXJuYWw6OlJhbmdlR2VuZXJh
dG9yPFQsIEluY3JlbWVudFQ+KHN0YXJ0LCBlbmQsIHN0ZXApKTsKK30KKwordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CitpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8VD4gUmFuZ2UoVCBzdGFydCwgVCBl
bmQpIHsKKyAgcmV0dXJuIFJhbmdlKHN0YXJ0LCBlbmQsIDEpOworfQorCisvLyBWYWx1ZXNJbigp
IGZ1bmN0aW9uIGFsbG93cyBnZW5lcmF0aW9uIG9mIHRlc3RzIHdpdGggcGFyYW1ldGVycyBjb21p
bmcgZnJvbQorLy8gYSBjb250YWluZXIuCisvLworLy8gU3lub3BzaXM6CisvLyBWYWx1ZXNJbihj
b25zdCBUICgmYXJyYXkpW05dKQorLy8gICAtIHJldHVybnMgYSBnZW5lcmF0b3IgcHJvZHVjaW5n
IHNlcXVlbmNlcyB3aXRoIGVsZW1lbnRzIGZyb20KKy8vICAgICBhIEMtc3R5bGUgYXJyYXkuCisv
LyBWYWx1ZXNJbihjb25zdCBDb250YWluZXImIGNvbnRhaW5lcikKKy8vICAgLSByZXR1cm5zIGEg
Z2VuZXJhdG9yIHByb2R1Y2luZyBzZXF1ZW5jZXMgd2l0aCBlbGVtZW50cyBmcm9tCisvLyAgICAg
YW4gU1RMLXN0eWxlIGNvbnRhaW5lci4KKy8vIFZhbHVlc0luKEl0ZXJhdG9yIGJlZ2luLCBJdGVy
YXRvciBlbmQpCisvLyAgIC0gcmV0dXJucyBhIGdlbmVyYXRvciBwcm9kdWNpbmcgc2VxdWVuY2Vz
IHdpdGggZWxlbWVudHMgZnJvbQorLy8gICAgIGEgcmFuZ2UgW2JlZ2luLCBlbmQpIGRlZmluZWQg
YnkgYSBwYWlyIG9mIFNUTC1zdHlsZSBpdGVyYXRvcnMuIFRoZXNlCisvLyAgICAgaXRlcmF0b3Jz
IGNhbiBhbHNvIGJlIHBsYWluIEMgcG9pbnRlcnMuCisvLworLy8gUGxlYXNlIG5vdGUgdGhhdCBW
YWx1ZXNJbiBjb3BpZXMgdGhlIHZhbHVlcyBmcm9tIHRoZSBjb250YWluZXJzCisvLyBwYXNzZWQg
aW4gYW5kIGtlZXBzIHRoZW0gdG8gZ2VuZXJhdGUgdGVzdHMgaW4gUlVOX0FMTF9URVNUUygpLgor
Ly8KKy8vIEV4YW1wbGVzOgorLy8KKy8vIFRoaXMgaW5zdGFudGlhdGVzIHRlc3RzIGZyb20gdGVz
dCBjYXNlIFN0cmluZ1Rlc3QKKy8vIGVhY2ggd2l0aCBDLXN0cmluZyB2YWx1ZXMgb2YgImZvbyIs
ICJiYXIiLCBhbmQgImJheiI6CisvLworLy8gY29uc3QgY2hhciogc3RyaW5nc1tdID0geyJmb28i
LCAiYmFyIiwgImJheiJ9OworLy8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU3RyaW5nU2VxdWVu
Y2UsIFNydGluZ1Rlc3QsIFZhbHVlc0luKHN0cmluZ3MpKTsKKy8vCisvLyBUaGlzIGluc3RhbnRp
YXRlcyB0ZXN0cyBmcm9tIHRlc3QgY2FzZSBTdGxTdHJpbmdUZXN0CisvLyBlYWNoIHdpdGggU1RM
IHN0cmluZ3Mgd2l0aCB2YWx1ZXMgImEiIGFuZCAiYiI6CisvLworLy8gOjpzdGQ6OnZlY3Rvcjwg
OjpzdGQ6OnN0cmluZz4gR2V0UGFyYW1ldGVyU3RyaW5ncygpIHsKKy8vICAgOjpzdGQ6OnZlY3Rv
cjwgOjpzdGQ6OnN0cmluZz4gdjsKKy8vICAgdi5wdXNoX2JhY2soImEiKTsKKy8vICAgdi5wdXNo
X2JhY2soImIiKTsKKy8vICAgcmV0dXJuIHY7CisvLyB9CisvLworLy8gSU5TVEFOVElBVEVfVEVT
VF9DQVNFX1AoQ2hhclNlcXVlbmNlLAorLy8gICAgICAgICAgICAgICAgICAgICAgICAgU3RsU3Ry
aW5nVGVzdCwKKy8vICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlc0luKEdldFBhcmFtZXRl
clN0cmluZ3MoKSkpOworLy8KKy8vCisvLyBUaGlzIHdpbGwgYWxzbyBpbnN0YW50aWF0ZSB0ZXN0
cyBmcm9tIENoYXJUZXN0CisvLyBlYWNoIHdpdGggcGFyYW1ldGVyIHZhbHVlcyAnYScgYW5kICdi
JzoKKy8vCisvLyA6OnN0ZDo6bGlzdDxjaGFyPiBHZXRQYXJhbWV0ZXJDaGFycygpIHsKKy8vICAg
OjpzdGQ6Omxpc3Q8Y2hhcj4gbGlzdDsKKy8vICAgbGlzdC5wdXNoX2JhY2soJ2EnKTsKKy8vICAg
bGlzdC5wdXNoX2JhY2soJ2InKTsKKy8vICAgcmV0dXJuIGxpc3Q7CisvLyB9CisvLyA6OnN0ZDo6
bGlzdDxjaGFyPiBsID0gR2V0UGFyYW1ldGVyQ2hhcnMoKTsKKy8vIElOU1RBTlRJQVRFX1RFU1Rf
Q0FTRV9QKENoYXJTZXF1ZW5jZTIsCisvLyAgICAgICAgICAgICAgICAgICAgICAgICBDaGFyVGVz
dCwKKy8vICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlc0luKGwuYmVnaW4oKSwgbC5lbmQo
KSkpOworLy8KK3RlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3I+CitpbnRlcm5hbDo6
UGFyYW1HZW5lcmF0b3I8CisgIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6Okl0ZXJhdG9y
VHJhaXRzPEZvcndhcmRJdGVyYXRvcj46OnZhbHVlX3R5cGU+CitWYWx1ZXNJbihGb3J3YXJkSXRl
cmF0b3IgYmVnaW4sIEZvcndhcmRJdGVyYXRvciBlbmQpIHsKKyAgdHlwZWRlZiB0eXBlbmFtZSA6
OnRlc3Rpbmc6OmludGVybmFsOjpJdGVyYXRvclRyYWl0czxGb3J3YXJkSXRlcmF0b3I+CisgICAg
ICA6OnZhbHVlX3R5cGUgUGFyYW1UeXBlOworICByZXR1cm4gaW50ZXJuYWw6OlBhcmFtR2VuZXJh
dG9yPFBhcmFtVHlwZT4oCisgICAgICBuZXcgaW50ZXJuYWw6OlZhbHVlc0luSXRlcmF0b3JSYW5n
ZUdlbmVyYXRvcjxQYXJhbVR5cGU+KGJlZ2luLCBlbmQpKTsKK30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQsIHNpemVfdCBOPgoraW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPFQ+IFZhbHVlc0luKGNv
bnN0IFQgKCZhcnJheSlbTl0pIHsKKyAgcmV0dXJuIFZhbHVlc0luKGFycmF5LCBhcnJheSArIE4p
OworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgQ29udGFpbmVyPgoraW50ZXJuYWw6OlBhcmFtR2VuZXJh
dG9yPHR5cGVuYW1lIENvbnRhaW5lcjo6dmFsdWVfdHlwZT4gVmFsdWVzSW4oCisgICAgY29uc3Qg
Q29udGFpbmVyJiBjb250YWluZXIpIHsKKyAgcmV0dXJuIFZhbHVlc0luKGNvbnRhaW5lci5iZWdp
bigpLCBjb250YWluZXIuZW5kKCkpOworfQorCisvLyBWYWx1ZXMoKSBhbGxvd3MgZ2VuZXJhdGlu
ZyB0ZXN0cyBmcm9tIGV4cGxpY2l0bHkgc3BlY2lmaWVkIGxpc3Qgb2YKKy8vIHBhcmFtZXRlcnMu
CisvLworLy8gU3lub3BzaXM6CisvLyBWYWx1ZXMoVCB2MSwgVCB2MiwgLi4uLCBUIHZOKQorLy8g
ICAtIHJldHVybnMgYSBnZW5lcmF0b3IgcHJvZHVjaW5nIHNlcXVlbmNlcyB3aXRoIGVsZW1lbnRz
IHYxLCB2MiwgLi4uLCB2Ti4KKy8vCisvLyBGb3IgZXhhbXBsZSwgdGhpcyBpbnN0YW50aWF0ZXMg
dGVzdHMgZnJvbSB0ZXN0IGNhc2UgQmFyVGVzdCBlYWNoCisvLyB3aXRoIHZhbHVlcyAib25lIiwg
InR3byIsIGFuZCAidGhyZWUiOgorLy8KKy8vIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKE51bVNl
cXVlbmNlLCBCYXJUZXN0LCBWYWx1ZXMoIm9uZSIsICJ0d28iLCAidGhyZWUiKSk7CisvLworLy8g
VGhpcyBpbnN0YW50aWF0ZXMgdGVzdHMgZnJvbSB0ZXN0IGNhc2UgQmF6VGVzdCBlYWNoIHdpdGgg
dmFsdWVzIDEsIDIsIDMuNS4KKy8vIFRoZSBleGFjdCB0eXBlIG9mIHZhbHVlcyB3aWxsIGRlcGVu
ZCBvbiB0aGUgdHlwZSBvZiBwYXJhbWV0ZXIgaW4gQmF6VGVzdC4KKy8vCisvLyBJTlNUQU5USUFU
RV9URVNUX0NBU0VfUChGbG9hdGluZ051bWJlcnMsIEJhelRlc3QsIFZhbHVlcygxLCAyLCAzLjUp
KTsKKy8vCisvLyBDdXJyZW50bHksIFZhbHVlcygpIHN1cHBvcnRzIGZyb20gMSB0byA1MCBwYXJh
bWV0ZXJzLgorLy8KK3RlbXBsYXRlIDx0eXBlbmFtZSBUMT4KK2ludGVybmFsOjpWYWx1ZUFycmF5
MTxUMT4gVmFsdWVzKFQxIHYxKSB7CisgIHJldHVybiBpbnRlcm5hbDo6VmFsdWVBcnJheTE8VDE+
KHYxKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK2ludGVybmFs
OjpWYWx1ZUFycmF5MjxUMSwgVDI+IFZhbHVlcyhUMSB2MSwgVDIgdjIpIHsKKyAgcmV0dXJuIGlu
dGVybmFsOjpWYWx1ZUFycmF5MjxUMSwgVDI+KHYxLCB2Mik7Cit9CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzPgoraW50ZXJuYWw6OlZhbHVlQXJyYXkz
PFQxLCBUMiwgVDM+IFZhbHVlcyhUMSB2MSwgVDIgdjIsIFQzIHYzKSB7CisgIHJldHVybiBpbnRl
cm5hbDo6VmFsdWVBcnJheTM8VDEsIFQyLCBUMz4odjEsIHYyLCB2Myk7Cit9CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUND4KK2lu
dGVybmFsOjpWYWx1ZUFycmF5NDxUMSwgVDIsIFQzLCBUND4gVmFsdWVzKFQxIHYxLCBUMiB2Miwg
VDMgdjMsIFQ0IHY0KSB7CisgIHJldHVybiBpbnRlcm5hbDo6VmFsdWVBcnJheTQ8VDEsIFQyLCBU
MywgVDQ+KHYxLCB2MiwgdjMsIHY0KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBl
bmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNT4KK2ludGVybmFs
OjpWYWx1ZUFycmF5NTxUMSwgVDIsIFQzLCBUNCwgVDU+IFZhbHVlcyhUMSB2MSwgVDIgdjIsIFQz
IHYzLCBUNCB2NCwKKyAgICBUNSB2NSkgeworICByZXR1cm4gaW50ZXJuYWw6OlZhbHVlQXJyYXk1
PFQxLCBUMiwgVDMsIFQ0LCBUNT4odjEsIHYyLCB2MywgdjQsIHY1KTsKK30KKwordGVtcGxhdGUg
PHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBl
bmFtZSBUNSwKKyAgICB0eXBlbmFtZSBUNj4KK2ludGVybmFsOjpWYWx1ZUFycmF5NjxUMSwgVDIs
IFQzLCBUNCwgVDUsIFQ2PiBWYWx1ZXMoVDEgdjEsIFQyIHYyLCBUMyB2MywKKyAgICBUNCB2NCwg
VDUgdjUsIFQ2IHY2KSB7CisgIHJldHVybiBpbnRlcm5hbDo6VmFsdWVBcnJheTY8VDEsIFQyLCBU
MywgVDQsIFQ1LCBUNj4odjEsIHYyLCB2MywgdjQsIHY1LCB2Nik7Cit9CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5h
bWUgVDUsCisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3PgoraW50ZXJuYWw6OlZhbHVlQXJy
YXk3PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3PiBWYWx1ZXMoVDEgdjEsIFQyIHYyLCBUMyB2
MywKKyAgICBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NykgeworICByZXR1cm4gaW50ZXJuYWw6
OlZhbHVlQXJyYXk3PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3Pih2MSwgdjIsIHYzLCB2NCwg
djUsCisgICAgICB2NiwgdjcpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1l
IFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1l
IFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDg+CitpbnRlcm5hbDo6VmFsdWVBcnJheTg8VDEs
IFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4PiBWYWx1ZXMoVDEgdjEsIFQyIHYyLAorICAgIFQz
IHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NywgVDggdjgpIHsKKyAgcmV0dXJuIGludGVy
bmFsOjpWYWx1ZUFycmF5ODxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDg+KHYxLCB2Miwg
djMsIHY0LAorICAgICAgdjUsIHY2LCB2NywgdjgpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAor
ICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Pgor
aW50ZXJuYWw6OlZhbHVlQXJyYXk5PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDk+
IFZhbHVlcyhUMSB2MSwgVDIgdjIsCisgICAgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYsIFQ3
IHY3LCBUOCB2OCwgVDkgdjkpIHsKKyAgcmV0dXJuIGludGVybmFsOjpWYWx1ZUFycmF5OTxUMSwg
VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5Pih2MSwgdjIsIHYzLAorICAgICAgdjQsIHY1
LCB2NiwgdjcsIHY4LCB2OSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUg
VDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCisgICAgdHlwZW5hbWUg
VDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMD4K
K2ludGVybmFsOjpWYWx1ZUFycmF5MTA8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBU
OSwgVDEwPiBWYWx1ZXMoVDEgdjEsCisgICAgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2
IHY2LCBUNyB2NywgVDggdjgsIFQ5IHY5LCBUMTAgdjEwKSB7CisgIHJldHVybiBpbnRlcm5hbDo6
VmFsdWVBcnJheTEwPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMD4odjEs
CisgICAgICB2MiwgdjMsIHY0LCB2NSwgdjYsIHY3LCB2OCwgdjksIHYxMCk7Cit9CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwg
dHlwZW5hbWUgVDUsCisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwg
dHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFtZSBUMTE+CitpbnRlcm5hbDo6
VmFsdWVBcnJheTExPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwKKyAg
ICBUMTE+IFZhbHVlcyhUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBU
NyB2NywgVDggdjgsIFQ5IHY5LAorICAgIFQxMCB2MTAsIFQxMSB2MTEpIHsKKyAgcmV0dXJuIGlu
dGVybmFsOjpWYWx1ZUFycmF5MTE8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwg
VDEwLAorICAgICAgVDExPih2MSwgdjIsIHYzLCB2NCwgdjUsIHY2LCB2NywgdjgsIHY5LCB2MTAs
IHYxMSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1l
IFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1l
IFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFt
ZSBUMTEsIHR5cGVuYW1lIFQxMj4KK2ludGVybmFsOjpWYWx1ZUFycmF5MTI8VDEsIFQyLCBUMywg
VDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsCisgICAgVDEyPiBWYWx1ZXMoVDEgdjEs
IFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwK
KyAgICBUMTAgdjEwLCBUMTEgdjExLCBUMTIgdjEyKSB7CisgIHJldHVybiBpbnRlcm5hbDo6VmFs
dWVBcnJheTEyPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLAor
ICAgICAgVDEyPih2MSwgdjIsIHYzLCB2NCwgdjUsIHY2LCB2NywgdjgsIHY5LCB2MTAsIHYxMSwg
djEyKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUg
VDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUg
VDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAorICAgIHR5cGVuYW1l
IFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTM+CitpbnRlcm5hbDo6VmFsdWVBcnJheTEz
PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsCisgICAg
VDEzPiBWYWx1ZXMoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcg
djcsIFQ4IHY4LCBUOSB2OSwKKyAgICBUMTAgdjEwLCBUMTEgdjExLCBUMTIgdjEyLCBUMTMgdjEz
KSB7CisgIHJldHVybiBpbnRlcm5hbDo6VmFsdWVBcnJheTEzPFQxLCBUMiwgVDMsIFQ0LCBUNSwg
VDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLAorICAgICAgVDEyLCBUMTM+KHYxLCB2MiwgdjMsIHY0
LCB2NSwgdjYsIHY3LCB2OCwgdjksIHYxMCwgdjExLCB2MTIsIHYxMyk7Cit9CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlw
ZW5hbWUgVDUsCisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlw
ZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwg
dHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQ+CitpbnRlcm5hbDo6VmFsdWVBcnJheTE0PFQxLCBU
MiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKKyAgICBU
MTQ+IFZhbHVlcyhUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBUNyB2
NywgVDggdjgsIFQ5IHY5LAorICAgIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMs
IFQxNCB2MTQpIHsKKyAgcmV0dXJuIGludGVybmFsOjpWYWx1ZUFycmF5MTQ8VDEsIFQyLCBUMywg
VDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsCisgICAgICBUMTIsIFQxMywgVDE0Pih2
MSwgdjIsIHYzLCB2NCwgdjUsIHY2LCB2NywgdjgsIHY5LCB2MTAsIHYxMSwgdjEyLCB2MTMsCisg
ICAgICB2MTQpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBl
bmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBl
bmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCisgICAgdHlw
ZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBl
bmFtZSBUMTU+CitpbnRlcm5hbDo6VmFsdWVBcnJheTE1PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYs
IFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKKyAgICBUMTQsIFQxNT4gVmFsdWVzKFQx
IHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwKKyAg
ICBUOSB2OSwgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMiwgVDEzIHYxMywgVDE0IHYxNCwgVDE1
IHYxNSkgeworICByZXR1cm4gaW50ZXJuYWw6OlZhbHVlQXJyYXkxNTxUMSwgVDIsIFQzLCBUNCwg
VDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwKKyAgICAgIFQxMiwgVDEzLCBUMTQsIFQxNT4o
djEsIHYyLCB2MywgdjQsIHY1LCB2NiwgdjcsIHY4LCB2OSwgdjEwLCB2MTEsIHYxMiwKKyAgICAg
IHYxMywgdjE0LCB2MTUpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQy
LCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2
LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCisg
ICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0
LCB0eXBlbmFtZSBUMTUsCisgICAgdHlwZW5hbWUgVDE2PgoraW50ZXJuYWw6OlZhbHVlQXJyYXkx
NjxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMs
CisgICAgVDE0LCBUMTUsIFQxNj4gVmFsdWVzKFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBU
NSB2NSwgVDYgdjYsIFQ3IHY3LAorICAgIFQ4IHY4LCBUOSB2OSwgVDEwIHYxMCwgVDExIHYxMSwg
VDEyIHYxMiwgVDEzIHYxMywgVDE0IHYxNCwgVDE1IHYxNSwKKyAgICBUMTYgdjE2KSB7CisgIHJl
dHVybiBpbnRlcm5hbDo6VmFsdWVBcnJheTE2PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBU
OCwgVDksIFQxMCwgVDExLAorICAgICAgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTY+KHYxLCB2Miwg
djMsIHY0LCB2NSwgdjYsIHY3LCB2OCwgdjksIHYxMCwgdjExLAorICAgICAgdjEyLCB2MTMsIHYx
NCwgdjE1LCB2MTYpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0
eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0
eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCisgICAg
dHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0
eXBlbmFtZSBUMTUsCisgICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTc+CitpbnRlcm5hbDo6
VmFsdWVBcnJheTE3PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDEx
LCBUMTIsIFQxMywKKyAgICBUMTQsIFQxNSwgVDE2LCBUMTc+IFZhbHVlcyhUMSB2MSwgVDIgdjIs
IFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NywKKyAgICBUOCB2OCwgVDkgdjksIFQx
MCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsCisgICAg
VDE2IHYxNiwgVDE3IHYxNykgeworICByZXR1cm4gaW50ZXJuYWw6OlZhbHVlQXJyYXkxNzxUMSwg
VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwKKyAgICAgIFQxMiwgVDEz
LCBUMTQsIFQxNSwgVDE2LCBUMTc+KHYxLCB2MiwgdjMsIHY0LCB2NSwgdjYsIHY3LCB2OCwgdjks
IHYxMCwKKyAgICAgIHYxMSwgdjEyLCB2MTMsIHYxNCwgdjE1LCB2MTYsIHYxNyk7Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBU
NCwgdHlwZW5hbWUgVDUsCisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBU
OCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1l
IFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKKyAgICB0eXBl
bmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4PgoraW50ZXJuYWw6OlZhbHVlQXJy
YXkxODxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBU
MTMsCisgICAgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTg+IFZhbHVlcyhUMSB2MSwgVDIgdjIsIFQz
IHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LAorICAgIFQ3IHY3LCBUOCB2OCwgVDkgdjksIFQxMCB2
MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsCisgICAgVDE2
IHYxNiwgVDE3IHYxNywgVDE4IHYxOCkgeworICByZXR1cm4gaW50ZXJuYWw6OlZhbHVlQXJyYXkx
ODxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwKKyAgICAgIFQx
MiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOD4odjEsIHYyLCB2MywgdjQsIHY1LCB2Niwg
djcsIHY4LCB2OSwKKyAgICAgIHYxMCwgdjExLCB2MTIsIHYxMywgdjE0LCB2MTUsIHYxNiwgdjE3
LCB2MTgpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFt
ZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFt
ZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCisgICAgdHlwZW5h
bWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFt
ZSBUMTUsCisgICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlw
ZW5hbWUgVDE5PgoraW50ZXJuYWw6OlZhbHVlQXJyYXkxOTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2
LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsCisgICAgVDE0LCBUMTUsIFQxNiwgVDE3
LCBUMTgsIFQxOT4gVmFsdWVzKFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwKKyAg
ICBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMiwg
VDEzIHYxMywgVDE0IHYxNCwKKyAgICBUMTUgdjE1LCBUMTYgdjE2LCBUMTcgdjE3LCBUMTggdjE4
LCBUMTkgdjE5KSB7CisgIHJldHVybiBpbnRlcm5hbDo6VmFsdWVBcnJheTE5PFQxLCBUMiwgVDMs
IFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLAorICAgICAgVDEyLCBUMTMsIFQxNCwg
VDE1LCBUMTYsIFQxNywgVDE4LCBUMTk+KHYxLCB2MiwgdjMsIHY0LCB2NSwgdjYsIHY3LCB2OCwK
KyAgICAgIHY5LCB2MTAsIHYxMSwgdjEyLCB2MTMsIHYxNCwgdjE1LCB2MTYsIHYxNywgdjE4LCB2
MTkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBU
MywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBU
NywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCisgICAgdHlwZW5hbWUg
VDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBU
MTUsCisgICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5h
bWUgVDE5LCB0eXBlbmFtZSBUMjA+CitpbnRlcm5hbDo6VmFsdWVBcnJheTIwPFQxLCBUMiwgVDMs
IFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKKyAgICBUMTQsIFQx
NSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjA+IFZhbHVlcyhUMSB2MSwgVDIgdjIsIFQzIHYzLCBU
NCB2NCwKKyAgICBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksIFQxMCB2MTAsIFQx
MSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMsCisgICAgVDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwg
VDE3IHYxNywgVDE4IHYxOCwgVDE5IHYxOSwgVDIwIHYyMCkgeworICByZXR1cm4gaW50ZXJuYWw6
OlZhbHVlQXJyYXkyMDxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQx
MSwKKyAgICAgIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjA+KHYx
LCB2MiwgdjMsIHY0LCB2NSwgdjYsIHY3LAorICAgICAgdjgsIHY5LCB2MTAsIHYxMSwgdjEyLCB2
MTMsIHYxNCwgdjE1LCB2MTYsIHYxNywgdjE4LCB2MTksIHYyMCk7Cit9CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5h
bWUgVDUsCisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5h
bWUgVDksIHR5cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlw
ZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKKyAgICB0eXBlbmFtZSBUMTYs
IHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwK
KyAgICB0eXBlbmFtZSBUMjE+CitpbnRlcm5hbDo6VmFsdWVBcnJheTIxPFQxLCBUMiwgVDMsIFQ0
LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKKyAgICBUMTQsIFQxNSwg
VDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMT4gVmFsdWVzKFQxIHYxLCBUMiB2MiwgVDMgdjMs
IFQ0IHY0LAorICAgIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwgVDEwIHYxMCwg
VDExIHYxMSwgVDEyIHYxMiwgVDEzIHYxMywKKyAgICBUMTQgdjE0LCBUMTUgdjE1LCBUMTYgdjE2
LCBUMTcgdjE3LCBUMTggdjE4LCBUMTkgdjE5LCBUMjAgdjIwLCBUMjEgdjIxKSB7CisgIHJldHVy
biBpbnRlcm5hbDo6VmFsdWVBcnJheTIxPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwg
VDksIFQxMCwgVDExLAorICAgICAgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBU
MTksIFQyMCwgVDIxPih2MSwgdjIsIHYzLCB2NCwgdjUsIHY2LAorICAgICAgdjcsIHY4LCB2OSwg
djEwLCB2MTEsIHYxMiwgdjEzLCB2MTQsIHYxNSwgdjE2LCB2MTcsIHYxOCwgdjE5LCB2MjAsIHYy
MSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQz
LCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3
LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFtZSBU
MTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQx
NSwKKyAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFt
ZSBUMTksIHR5cGVuYW1lIFQyMCwKKyAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMj4KK2lu
dGVybmFsOjpWYWx1ZUFycmF5MjI8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwg
VDEwLCBUMTEsIFQxMiwgVDEzLAorICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQy
MCwgVDIxLCBUMjI+IFZhbHVlcyhUMSB2MSwgVDIgdjIsIFQzIHYzLAorICAgIFQ0IHY0LCBUNSB2
NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIs
CisgICAgVDEzIHYxMywgVDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywgVDE4IHYx
OCwgVDE5IHYxOSwgVDIwIHYyMCwKKyAgICBUMjEgdjIxLCBUMjIgdjIyKSB7CisgIHJldHVybiBp
bnRlcm5hbDo6VmFsdWVBcnJheTIyPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDks
IFQxMCwgVDExLAorICAgICAgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTks
IFQyMCwgVDIxLCBUMjI+KHYxLCB2MiwgdjMsIHY0LAorICAgICAgdjUsIHY2LCB2NywgdjgsIHY5
LCB2MTAsIHYxMSwgdjEyLCB2MTMsIHYxNCwgdjE1LCB2MTYsIHYxNywgdjE4LCB2MTksCisgICAg
ICB2MjAsIHYyMSwgdjIyKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBU
MiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICB0eXBlbmFtZSBU
NiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAor
ICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQx
NCwgdHlwZW5hbWUgVDE1LAorICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFt
ZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAorICAgIHR5cGVuYW1lIFQyMSwgdHlw
ZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjM+CitpbnRlcm5hbDo6VmFsdWVBcnJheTIzPFQxLCBUMiwg
VDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKKyAgICBUMTQs
IFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjM+IFZhbHVlcyhUMSB2
MSwgVDIgdjIsCisgICAgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwg
VDkgdjksIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsCisgICAgVDEzIHYxMywgVDE0IHYxNCwg
VDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywgVDE4IHYxOCwgVDE5IHYxOSwgVDIwIHYyMCwKKyAg
ICBUMjEgdjIxLCBUMjIgdjIyLCBUMjMgdjIzKSB7CisgIHJldHVybiBpbnRlcm5hbDo6VmFsdWVB
cnJheTIzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLAorICAg
ICAgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIs
IFQyMz4odjEsIHYyLCB2MywKKyAgICAgIHY0LCB2NSwgdjYsIHY3LCB2OCwgdjksIHYxMCwgdjEx
LCB2MTIsIHYxMywgdjE0LCB2MTUsIHYxNiwgdjE3LCB2MTgsIHYxOSwKKyAgICAgIHYyMCwgdjIx
LCB2MjIsIHYyMyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5
cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCisgICAgdHlwZW5hbWUgVDYsIHR5
cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKKyAgICB0
eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5
cGVuYW1lIFQxNSwKKyAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4
LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKKyAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1l
IFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQ+CitpbnRlcm5hbDo6VmFsdWVBcnJheTI0
PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywK
KyAgICBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQy
ND4gVmFsdWVzKFQxIHYxLCBUMiB2MiwKKyAgICBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2Niwg
VDcgdjcsIFQ4IHY4LCBUOSB2OSwgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMiwKKyAgICBUMTMg
djEzLCBUMTQgdjE0LCBUMTUgdjE1LCBUMTYgdjE2LCBUMTcgdjE3LCBUMTggdjE4LCBUMTkgdjE5
LCBUMjAgdjIwLAorICAgIFQyMSB2MjEsIFQyMiB2MjIsIFQyMyB2MjMsIFQyNCB2MjQpIHsKKyAg
cmV0dXJuIGludGVybmFsOjpWYWx1ZUFycmF5MjQ8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcs
IFQ4LCBUOSwgVDEwLCBUMTEsCisgICAgICBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBU
MTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQ+KHYxLCB2MiwKKyAgICAgIHYzLCB2NCwg
djUsIHY2LCB2NywgdjgsIHY5LCB2MTAsIHYxMSwgdjEyLCB2MTMsIHYxNCwgdjE1LCB2MTYsIHYx
NywgdjE4LAorICAgICAgdjE5LCB2MjAsIHYyMSwgdjIyLCB2MjMsIHYyNCk7Cit9CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwg
dHlwZW5hbWUgVDUsCisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwg
dHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQx
MiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKKyAgICB0eXBlbmFt
ZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1l
IFQyMCwKKyAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBl
bmFtZSBUMjQsIHR5cGVuYW1lIFQyNT4KK2ludGVybmFsOjpWYWx1ZUFycmF5MjU8VDEsIFQyLCBU
MywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAorICAgIFQxNCwg
VDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjU+IFZh
bHVlcyhUMSB2MSwKKyAgICBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3
LCBUOCB2OCwgVDkgdjksIFQxMCB2MTAsIFQxMSB2MTEsCisgICAgVDEyIHYxMiwgVDEzIHYxMywg
VDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywgVDE4IHYxOCwgVDE5IHYxOSwKKyAg
ICBUMjAgdjIwLCBUMjEgdjIxLCBUMjIgdjIyLCBUMjMgdjIzLCBUMjQgdjI0LCBUMjUgdjI1KSB7
CisgIHJldHVybiBpbnRlcm5hbDo6VmFsdWVBcnJheTI1PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYs
IFQ3LCBUOCwgVDksIFQxMCwgVDExLAorICAgICAgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQx
NywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjU+KHYxLAorICAgICAgdjIs
IHYzLCB2NCwgdjUsIHY2LCB2NywgdjgsIHY5LCB2MTAsIHYxMSwgdjEyLCB2MTMsIHYxNCwgdjE1
LCB2MTYsIHYxNywKKyAgICAgIHYxOCwgdjE5LCB2MjAsIHYyMSwgdjIyLCB2MjMsIHYyNCwgdjI1
KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMs
IHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcs
IHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAorICAgIHR5cGVuYW1lIFQx
MSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1
LAorICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1l
IFQxOSwgdHlwZW5hbWUgVDIwLAorICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBl
bmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAorICAgIHR5cGVuYW1lIFQyNj4K
K2ludGVybmFsOjpWYWx1ZUFycmF5MjY8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBU
OSwgVDEwLCBUMTEsIFQxMiwgVDEzLAorICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTks
IFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsCisgICAgVDI2PiBWYWx1ZXMoVDEgdjEsIFQy
IHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwKKyAg
ICBUMTAgdjEwLCBUMTEgdjExLCBUMTIgdjEyLCBUMTMgdjEzLCBUMTQgdjE0LCBUMTUgdjE1LCBU
MTYgdjE2LCBUMTcgdjE3LAorICAgIFQxOCB2MTgsIFQxOSB2MTksIFQyMCB2MjAsIFQyMSB2MjEs
IFQyMiB2MjIsIFQyMyB2MjMsIFQyNCB2MjQsIFQyNSB2MjUsCisgICAgVDI2IHYyNikgeworICBy
ZXR1cm4gaW50ZXJuYWw6OlZhbHVlQXJyYXkyNjxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywg
VDgsIFQ5LCBUMTAsIFQxMSwKKyAgICAgIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQx
OCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LAorICAgICAgVDI2Pih2MSwgdjIs
IHYzLCB2NCwgdjUsIHY2LCB2NywgdjgsIHY5LCB2MTAsIHYxMSwgdjEyLCB2MTMsIHYxNCwgdjE1
LAorICAgICAgdjE2LCB2MTcsIHYxOCwgdjE5LCB2MjAsIHYyMSwgdjIyLCB2MjMsIHYyNCwgdjI1
LCB2MjYpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFt
ZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFt
ZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCisgICAgdHlwZW5h
bWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFt
ZSBUMTUsCisgICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlw
ZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCisgICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIs
IHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCisgICAgdHlwZW5hbWUg
VDI2LCB0eXBlbmFtZSBUMjc+CitpbnRlcm5hbDo6VmFsdWVBcnJheTI3PFQxLCBUMiwgVDMsIFQ0
LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKKyAgICBUMTQsIFQxNSwg
VDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsCisg
ICAgVDI3PiBWYWx1ZXMoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2Niwg
VDcgdjcsIFQ4IHY4LCBUOSB2OSwKKyAgICBUMTAgdjEwLCBUMTEgdjExLCBUMTIgdjEyLCBUMTMg
djEzLCBUMTQgdjE0LCBUMTUgdjE1LCBUMTYgdjE2LCBUMTcgdjE3LAorICAgIFQxOCB2MTgsIFQx
OSB2MTksIFQyMCB2MjAsIFQyMSB2MjEsIFQyMiB2MjIsIFQyMyB2MjMsIFQyNCB2MjQsIFQyNSB2
MjUsCisgICAgVDI2IHYyNiwgVDI3IHYyNykgeworICByZXR1cm4gaW50ZXJuYWw6OlZhbHVlQXJy
YXkyNzxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwKKyAgICAg
IFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBU
MjMsIFQyNCwgVDI1LAorICAgICAgVDI2LCBUMjc+KHYxLCB2MiwgdjMsIHY0LCB2NSwgdjYsIHY3
LCB2OCwgdjksIHYxMCwgdjExLCB2MTIsIHYxMywgdjE0LAorICAgICAgdjE1LCB2MTYsIHYxNywg
djE4LCB2MTksIHYyMCwgdjIxLCB2MjIsIHYyMywgdjI0LCB2MjUsIHYyNiwgdjI3KTsKK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1l
IFQ0LCB0eXBlbmFtZSBUNSwKKyAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1l
IFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAorICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5h
bWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAorICAgIHR5
cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlw
ZW5hbWUgVDIwLAorICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMs
IHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAorICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUg
VDI3LCB0eXBlbmFtZSBUMjg+CitpbnRlcm5hbDo6VmFsdWVBcnJheTI4PFQxLCBUMiwgVDMsIFQ0
LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKKyAgICBUMTQsIFQxNSwg
VDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQy
NywKKyAgICBUMjg+IFZhbHVlcyhUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2
IHY2LCBUNyB2NywgVDggdjgsIFQ5IHY5LAorICAgIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIs
IFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYsIFQxNyB2MTcsCisgICAgVDE4IHYx
OCwgVDE5IHYxOSwgVDIwIHYyMCwgVDIxIHYyMSwgVDIyIHYyMiwgVDIzIHYyMywgVDI0IHYyNCwg
VDI1IHYyNSwKKyAgICBUMjYgdjI2LCBUMjcgdjI3LCBUMjggdjI4KSB7CisgIHJldHVybiBpbnRl
cm5hbDo6VmFsdWVBcnJheTI4PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQx
MCwgVDExLAorICAgICAgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQy
MCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsCisgICAgICBUMjYsIFQyNywgVDI4Pih2MSwgdjIs
IHYzLCB2NCwgdjUsIHY2LCB2NywgdjgsIHY5LCB2MTAsIHYxMSwgdjEyLCB2MTMsCisgICAgICB2
MTQsIHYxNSwgdjE2LCB2MTcsIHYxOCwgdjE5LCB2MjAsIHYyMSwgdjIyLCB2MjMsIHYyNCwgdjI1
LCB2MjYsIHYyNywKKyAgICAgIHYyOCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlw
ZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCisgICAgdHlw
ZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1l
IFQxMCwKKyAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBl
bmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKKyAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywg
dHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKKyAgICB0eXBlbmFtZSBU
MjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQy
NSwKKyAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFt
ZSBUMjk+CitpbnRlcm5hbDo6VmFsdWVBcnJheTI5PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3
LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKKyAgICBUMTQsIFQxNSwgVDE2LCBUMTcsIFQx
OCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LAorICAg
IFQyOT4gVmFsdWVzKFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYsIFQ3
IHY3LCBUOCB2OCwgVDkgdjksCisgICAgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMiwgVDEzIHYx
MywgVDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywKKyAgICBUMTggdjE4LCBUMTkg
djE5LCBUMjAgdjIwLCBUMjEgdjIxLCBUMjIgdjIyLCBUMjMgdjIzLCBUMjQgdjI0LCBUMjUgdjI1
LAorICAgIFQyNiB2MjYsIFQyNyB2MjcsIFQyOCB2MjgsIFQyOSB2MjkpIHsKKyAgcmV0dXJuIGlu
dGVybmFsOjpWYWx1ZUFycmF5Mjk8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwg
VDEwLCBUMTEsCisgICAgICBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwg
VDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwKKyAgICAgIFQyNiwgVDI3LCBUMjgsIFQyOT4o
djEsIHYyLCB2MywgdjQsIHY1LCB2NiwgdjcsIHY4LCB2OSwgdjEwLCB2MTEsIHYxMiwKKyAgICAg
IHYxMywgdjE0LCB2MTUsIHYxNiwgdjE3LCB2MTgsIHYxOSwgdjIwLCB2MjEsIHYyMiwgdjIzLCB2
MjQsIHYyNSwgdjI2LAorICAgICAgdjI3LCB2MjgsIHYyOSk7Cit9CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUg
VDUsCisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUg
VDksIHR5cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5h
bWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKKyAgICB0eXBlbmFtZSBUMTYsIHR5
cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKKyAg
ICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQs
IHR5cGVuYW1lIFQyNSwKKyAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUg
VDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMD4KK2ludGVybmFsOjpWYWx1ZUFycmF5MzA8
VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAor
ICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0
LCBUMjUsIFQyNiwgVDI3LCBUMjgsCisgICAgVDI5LCBUMzA+IFZhbHVlcyhUMSB2MSwgVDIgdjIs
IFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NywgVDggdjgsCisgICAgVDkgdjksIFQx
MCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2
MTYsCisgICAgVDE3IHYxNywgVDE4IHYxOCwgVDE5IHYxOSwgVDIwIHYyMCwgVDIxIHYyMSwgVDIy
IHYyMiwgVDIzIHYyMywgVDI0IHYyNCwKKyAgICBUMjUgdjI1LCBUMjYgdjI2LCBUMjcgdjI3LCBU
MjggdjI4LCBUMjkgdjI5LCBUMzAgdjMwKSB7CisgIHJldHVybiBpbnRlcm5hbDo6VmFsdWVBcnJh
eTMwPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLAorICAgICAg
VDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQy
MywgVDI0LCBUMjUsCisgICAgICBUMjYsIFQyNywgVDI4LCBUMjksIFQzMD4odjEsIHYyLCB2Mywg
djQsIHY1LCB2NiwgdjcsIHY4LCB2OSwgdjEwLCB2MTEsCisgICAgICB2MTIsIHYxMywgdjE0LCB2
MTUsIHYxNiwgdjE3LCB2MTgsIHYxOSwgdjIwLCB2MjEsIHYyMiwgdjIzLCB2MjQsIHYyNSwKKyAg
ICAgIHYyNiwgdjI3LCB2MjgsIHYyOSwgdjMwKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAg
ICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlw
ZW5hbWUgVDEwLAorICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMs
IHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAorICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUg
VDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAorICAgIHR5cGVu
YW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5h
bWUgVDI1LAorICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5
cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAorICAgIHR5cGVuYW1lIFQzMT4KK2ludGVybmFsOjpW
YWx1ZUFycmF5MzE8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEs
IFQxMiwgVDEzLAorICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBU
MjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsCisgICAgVDI5LCBUMzAsIFQzMT4gVmFs
dWVzKFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LAorICAg
IFQ4IHY4LCBUOSB2OSwgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMiwgVDEzIHYxMywgVDE0IHYx
NCwgVDE1IHYxNSwKKyAgICBUMTYgdjE2LCBUMTcgdjE3LCBUMTggdjE4LCBUMTkgdjE5LCBUMjAg
djIwLCBUMjEgdjIxLCBUMjIgdjIyLCBUMjMgdjIzLAorICAgIFQyNCB2MjQsIFQyNSB2MjUsIFQy
NiB2MjYsIFQyNyB2MjcsIFQyOCB2MjgsIFQyOSB2MjksIFQzMCB2MzAsIFQzMSB2MzEpIHsKKyAg
cmV0dXJuIGludGVybmFsOjpWYWx1ZUFycmF5MzE8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcs
IFQ4LCBUOSwgVDEwLCBUMTEsCisgICAgICBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBU
MTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwKKyAgICAgIFQyNiwgVDI3LCBU
MjgsIFQyOSwgVDMwLCBUMzE+KHYxLCB2MiwgdjMsIHY0LCB2NSwgdjYsIHY3LCB2OCwgdjksIHYx
MCwKKyAgICAgIHYxMSwgdjEyLCB2MTMsIHYxNCwgdjE1LCB2MTYsIHYxNywgdjE4LCB2MTksIHYy
MCwgdjIxLCB2MjIsIHYyMywgdjI0LAorICAgICAgdjI1LCB2MjYsIHYyNywgdjI4LCB2MjksIHYz
MCwgdjMxKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5h
bWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICB0eXBlbmFtZSBUNiwgdHlwZW5h
bWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAorICAgIHR5cGVu
YW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5h
bWUgVDE1LAorICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5
cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAorICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIy
LCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAorICAgIHR5cGVuYW1l
IFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUg
VDMwLAorICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyPgoraW50ZXJuYWw6OlZhbHVlQXJy
YXkzMjxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBU
MTMsCisgICAgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIz
LCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwKKyAgICBUMjksIFQzMCwgVDMxLCBUMzI+IFZhbHVl
cyhUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NywKKyAgICBU
OCB2OCwgVDkgdjksIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQxNCB2MTQs
IFQxNSB2MTUsCisgICAgVDE2IHYxNiwgVDE3IHYxNywgVDE4IHYxOCwgVDE5IHYxOSwgVDIwIHYy
MCwgVDIxIHYyMSwgVDIyIHYyMiwgVDIzIHYyMywKKyAgICBUMjQgdjI0LCBUMjUgdjI1LCBUMjYg
djI2LCBUMjcgdjI3LCBUMjggdjI4LCBUMjkgdjI5LCBUMzAgdjMwLCBUMzEgdjMxLAorICAgIFQz
MiB2MzIpIHsKKyAgcmV0dXJuIGludGVybmFsOjpWYWx1ZUFycmF5MzI8VDEsIFQyLCBUMywgVDQs
IFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsCisgICAgICBUMTIsIFQxMywgVDE0LCBUMTUs
IFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwKKyAgICAg
IFQyNiwgVDI3LCBUMjgsIFQyOSwgVDMwLCBUMzEsIFQzMj4odjEsIHYyLCB2MywgdjQsIHY1LCB2
NiwgdjcsIHY4LCB2OSwKKyAgICAgIHYxMCwgdjExLCB2MTIsIHYxMywgdjE0LCB2MTUsIHYxNiwg
djE3LCB2MTgsIHYxOSwgdjIwLCB2MjEsIHYyMiwgdjIzLAorICAgICAgdjI0LCB2MjUsIHYyNiwg
djI3LCB2MjgsIHYyOSwgdjMwLCB2MzEsIHYzMik7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
MSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCisg
ICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5
cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEz
LCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKKyAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1l
IFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKKyAgICB0eXBl
bmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVu
YW1lIFQyNSwKKyAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0
eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKKyAgICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQz
MiwgdHlwZW5hbWUgVDMzPgoraW50ZXJuYWw6OlZhbHVlQXJyYXkzMzxUMSwgVDIsIFQzLCBUNCwg
VDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsCisgICAgVDE0LCBUMTUsIFQx
NiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcs
IFQyOCwKKyAgICBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMz4gVmFsdWVzKFQxIHYxLCBUMiB2Miwg
VDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYsCisgICAgVDcgdjcsIFQ4IHY4LCBUOSB2OSwgVDEw
IHYxMCwgVDExIHYxMSwgVDEyIHYxMiwgVDEzIHYxMywgVDE0IHYxNCwgVDE1IHYxNSwKKyAgICBU
MTYgdjE2LCBUMTcgdjE3LCBUMTggdjE4LCBUMTkgdjE5LCBUMjAgdjIwLCBUMjEgdjIxLCBUMjIg
djIyLCBUMjMgdjIzLAorICAgIFQyNCB2MjQsIFQyNSB2MjUsIFQyNiB2MjYsIFQyNyB2MjcsIFQy
OCB2MjgsIFQyOSB2MjksIFQzMCB2MzAsIFQzMSB2MzEsCisgICAgVDMyIHYzMiwgVDMzIHYzMykg
eworICByZXR1cm4gaW50ZXJuYWw6OlZhbHVlQXJyYXkzMzxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2
LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwKKyAgICAgIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBU
MTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LAorICAgICAgVDI2LCBU
MjcsIFQyOCwgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzM+KHYxLCB2MiwgdjMsIHY0LCB2NSwgdjYs
IHY3LCB2OCwKKyAgICAgIHY5LCB2MTAsIHYxMSwgdjEyLCB2MTMsIHYxNCwgdjE1LCB2MTYsIHYx
NywgdjE4LCB2MTksIHYyMCwgdjIxLCB2MjIsIHYyMywKKyAgICAgIHYyNCwgdjI1LCB2MjYsIHYy
NywgdjI4LCB2MjksIHYzMCwgdjMxLCB2MzIsIHYzMyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUs
CisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDks
IHR5cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUg
VDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKKyAgICB0eXBlbmFtZSBUMTYsIHR5cGVu
YW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKKyAgICB0
eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5
cGVuYW1lIFQyNSwKKyAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4
LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKKyAgICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1l
IFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQ+CitpbnRlcm5hbDo6VmFsdWVBcnJheTM0
PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywK
KyAgICBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQy
NCwgVDI1LCBUMjYsIFQyNywgVDI4LAorICAgIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQ+
IFZhbHVlcyhUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsCisgICAgVDYgdjYsIFQ3
IHY3LCBUOCB2OCwgVDkgdjksIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQx
NCB2MTQsCisgICAgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywgVDE4IHYxOCwgVDE5IHYxOSwg
VDIwIHYyMCwgVDIxIHYyMSwgVDIyIHYyMiwKKyAgICBUMjMgdjIzLCBUMjQgdjI0LCBUMjUgdjI1
LCBUMjYgdjI2LCBUMjcgdjI3LCBUMjggdjI4LCBUMjkgdjI5LCBUMzAgdjMwLAorICAgIFQzMSB2
MzEsIFQzMiB2MzIsIFQzMyB2MzMsIFQzNCB2MzQpIHsKKyAgcmV0dXJuIGludGVybmFsOjpWYWx1
ZUFycmF5MzQ8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsCisg
ICAgICBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQy
MiwgVDIzLCBUMjQsIFQyNSwKKyAgICAgIFQyNiwgVDI3LCBUMjgsIFQyOSwgVDMwLCBUMzEsIFQz
MiwgVDMzLCBUMzQ+KHYxLCB2MiwgdjMsIHY0LCB2NSwgdjYsIHY3LAorICAgICAgdjgsIHY5LCB2
MTAsIHYxMSwgdjEyLCB2MTMsIHYxNCwgdjE1LCB2MTYsIHYxNywgdjE4LCB2MTksIHYyMCwgdjIx
LCB2MjIsCisgICAgICB2MjMsIHYyNCwgdjI1LCB2MjYsIHYyNywgdjI4LCB2MjksIHYzMCwgdjMx
LCB2MzIsIHYzMywgdjM0KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBU
MiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICB0eXBlbmFtZSBU
NiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAor
ICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQx
NCwgdHlwZW5hbWUgVDE1LAorICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFt
ZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAorICAgIHR5cGVuYW1lIFQyMSwgdHlw
ZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAorICAg
IHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwg
dHlwZW5hbWUgVDMwLAorICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBU
MzMsIHR5cGVuYW1lIFQzNCwgdHlwZW5hbWUgVDM1PgoraW50ZXJuYWw6OlZhbHVlQXJyYXkzNTxU
MSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsCisg
ICAgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQs
IFQyNSwgVDI2LCBUMjcsIFQyOCwKKyAgICBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBU
MzU+IFZhbHVlcyhUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwKKyAgICBUNSB2NSwgVDYgdjYs
IFQ3IHY3LCBUOCB2OCwgVDkgdjksIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMs
CisgICAgVDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywgVDE4IHYxOCwgVDE5IHYx
OSwgVDIwIHYyMCwgVDIxIHYyMSwKKyAgICBUMjIgdjIyLCBUMjMgdjIzLCBUMjQgdjI0LCBUMjUg
djI1LCBUMjYgdjI2LCBUMjcgdjI3LCBUMjggdjI4LCBUMjkgdjI5LAorICAgIFQzMCB2MzAsIFQz
MSB2MzEsIFQzMiB2MzIsIFQzMyB2MzMsIFQzNCB2MzQsIFQzNSB2MzUpIHsKKyAgcmV0dXJuIGlu
dGVybmFsOjpWYWx1ZUFycmF5MzU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwg
VDEwLCBUMTEsCisgICAgICBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwg
VDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwKKyAgICAgIFQyNiwgVDI3LCBUMjgsIFQyOSwg
VDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNT4odjEsIHYyLCB2MywgdjQsIHY1LCB2NiwKKyAg
ICAgIHY3LCB2OCwgdjksIHYxMCwgdjExLCB2MTIsIHYxMywgdjE0LCB2MTUsIHYxNiwgdjE3LCB2
MTgsIHYxOSwgdjIwLCB2MjEsCisgICAgICB2MjIsIHYyMywgdjI0LCB2MjUsIHYyNiwgdjI3LCB2
MjgsIHYyOSwgdjMwLCB2MzEsIHYzMiwgdjMzLCB2MzQsIHYzNSk7Cit9CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5h
bWUgVDUsCisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5h
bWUgVDksIHR5cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlw
ZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKKyAgICB0eXBlbmFtZSBUMTYs
IHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwK
KyAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBU
MjQsIHR5cGVuYW1lIFQyNSwKKyAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5h
bWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKKyAgICB0eXBlbmFtZSBUMzEsIHR5
cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1lIFQzNSwKKyAg
ICB0eXBlbmFtZSBUMzY+CitpbnRlcm5hbDo6VmFsdWVBcnJheTM2PFQxLCBUMiwgVDMsIFQ0LCBU
NSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKKyAgICBUMTQsIFQxNSwgVDE2
LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywg
VDI4LAorICAgIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2PiBWYWx1ZXMo
VDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsCisgICAgVDUgdjUsIFQ2IHY2LCBUNyB2NywgVDgg
djgsIFQ5IHY5LCBUMTAgdjEwLCBUMTEgdjExLCBUMTIgdjEyLCBUMTMgdjEzLAorICAgIFQxNCB2
MTQsIFQxNSB2MTUsIFQxNiB2MTYsIFQxNyB2MTcsIFQxOCB2MTgsIFQxOSB2MTksIFQyMCB2MjAs
IFQyMSB2MjEsCisgICAgVDIyIHYyMiwgVDIzIHYyMywgVDI0IHYyNCwgVDI1IHYyNSwgVDI2IHYy
NiwgVDI3IHYyNywgVDI4IHYyOCwgVDI5IHYyOSwKKyAgICBUMzAgdjMwLCBUMzEgdjMxLCBUMzIg
djMyLCBUMzMgdjMzLCBUMzQgdjM0LCBUMzUgdjM1LCBUMzYgdjM2KSB7CisgIHJldHVybiBpbnRl
cm5hbDo6VmFsdWVBcnJheTM2PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQx
MCwgVDExLAorICAgICAgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQy
MCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsCisgICAgICBUMjYsIFQyNywgVDI4LCBUMjksIFQz
MCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNj4odjEsIHYyLCB2MywgdjQsCisgICAgICB2
NSwgdjYsIHY3LCB2OCwgdjksIHYxMCwgdjExLCB2MTIsIHYxMywgdjE0LCB2MTUsIHYxNiwgdjE3
LCB2MTgsIHYxOSwKKyAgICAgIHYyMCwgdjIxLCB2MjIsIHYyMywgdjI0LCB2MjUsIHYyNiwgdjI3
LCB2MjgsIHYyOSwgdjMwLCB2MzEsIHYzMiwgdjMzLAorICAgICAgdjM0LCB2MzUsIHYzNik7Cit9
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBl
bmFtZSBUNCwgdHlwZW5hbWUgVDUsCisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBl
bmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFtZSBUMTEsIHR5
cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKKyAg
ICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTks
IHR5cGVuYW1lIFQyMCwKKyAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUg
VDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKKyAgICB0eXBlbmFtZSBUMjYsIHR5cGVu
YW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKKyAgICB0
eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQsIHR5
cGVuYW1lIFQzNSwKKyAgICB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNz4KK2ludGVybmFsOjpW
YWx1ZUFycmF5Mzc8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEs
IFQxMiwgVDEzLAorICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBU
MjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsCisgICAgVDI5LCBUMzAsIFQzMSwgVDMy
LCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNz4gVmFsdWVzKFQxIHYxLCBUMiB2MiwgVDMgdjMsCisg
ICAgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwgVDEwIHYxMCwgVDEx
IHYxMSwgVDEyIHYxMiwKKyAgICBUMTMgdjEzLCBUMTQgdjE0LCBUMTUgdjE1LCBUMTYgdjE2LCBU
MTcgdjE3LCBUMTggdjE4LCBUMTkgdjE5LCBUMjAgdjIwLAorICAgIFQyMSB2MjEsIFQyMiB2MjIs
IFQyMyB2MjMsIFQyNCB2MjQsIFQyNSB2MjUsIFQyNiB2MjYsIFQyNyB2MjcsIFQyOCB2MjgsCisg
ICAgVDI5IHYyOSwgVDMwIHYzMCwgVDMxIHYzMSwgVDMyIHYzMiwgVDMzIHYzMywgVDM0IHYzNCwg
VDM1IHYzNSwgVDM2IHYzNiwKKyAgICBUMzcgdjM3KSB7CisgIHJldHVybiBpbnRlcm5hbDo6VmFs
dWVBcnJheTM3PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLAor
ICAgICAgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBU
MjIsIFQyMywgVDI0LCBUMjUsCisgICAgICBUMjYsIFQyNywgVDI4LCBUMjksIFQzMCwgVDMxLCBU
MzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3Pih2MSwgdjIsIHYzLAorICAgICAgdjQsIHY1LCB2
NiwgdjcsIHY4LCB2OSwgdjEwLCB2MTEsIHYxMiwgdjEzLCB2MTQsIHYxNSwgdjE2LCB2MTcsIHYx
OCwgdjE5LAorICAgICAgdjIwLCB2MjEsIHYyMiwgdjIzLCB2MjQsIHYyNSwgdjI2LCB2MjcsIHYy
OCwgdjI5LCB2MzAsIHYzMSwgdjMyLCB2MzMsCisgICAgICB2MzQsIHYzNSwgdjM2LCB2MzcpOwor
fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlw
ZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlw
ZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCisgICAgdHlwZW5hbWUgVDExLCB0
eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCisg
ICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5
LCB0eXBlbmFtZSBUMjAsCisgICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1l
IFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCisgICAgdHlwZW5hbWUgVDI2LCB0eXBl
bmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCisgICAg
dHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0
eXBlbmFtZSBUMzUsCisgICAgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQz
OD4KK2ludGVybmFsOjpWYWx1ZUFycmF5Mzg8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4
LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAorICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBU
MTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsCisgICAgVDI5
LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4PiBWYWx1ZXMoVDEg
djEsIFQyIHYyLAorICAgIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NywgVDggdjgs
IFQ5IHY5LCBUMTAgdjEwLCBUMTEgdjExLCBUMTIgdjEyLAorICAgIFQxMyB2MTMsIFQxNCB2MTQs
IFQxNSB2MTUsIFQxNiB2MTYsIFQxNyB2MTcsIFQxOCB2MTgsIFQxOSB2MTksIFQyMCB2MjAsCisg
ICAgVDIxIHYyMSwgVDIyIHYyMiwgVDIzIHYyMywgVDI0IHYyNCwgVDI1IHYyNSwgVDI2IHYyNiwg
VDI3IHYyNywgVDI4IHYyOCwKKyAgICBUMjkgdjI5LCBUMzAgdjMwLCBUMzEgdjMxLCBUMzIgdjMy
LCBUMzMgdjMzLCBUMzQgdjM0LCBUMzUgdjM1LCBUMzYgdjM2LAorICAgIFQzNyB2MzcsIFQzOCB2
MzgpIHsKKyAgcmV0dXJuIGludGVybmFsOjpWYWx1ZUFycmF5Mzg8VDEsIFQyLCBUMywgVDQsIFQ1
LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsCisgICAgICBUMTIsIFQxMywgVDE0LCBUMTUsIFQx
NiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwKKyAgICAgIFQy
NiwgVDI3LCBUMjgsIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcs
IFQzOD4odjEsIHYyLAorICAgICAgdjMsIHY0LCB2NSwgdjYsIHY3LCB2OCwgdjksIHYxMCwgdjEx
LCB2MTIsIHYxMywgdjE0LCB2MTUsIHYxNiwgdjE3LCB2MTgsCisgICAgICB2MTksIHYyMCwgdjIx
LCB2MjIsIHYyMywgdjI0LCB2MjUsIHYyNiwgdjI3LCB2MjgsIHYyOSwgdjMwLCB2MzEsIHYzMiwK
KyAgICAgIHYzMywgdjM0LCB2MzUsIHYzNiwgdjM3LCB2MzgpOworfQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1l
IFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1l
IFQ5LCB0eXBlbmFtZSBUMTAsCisgICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVu
YW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCisgICAgdHlwZW5hbWUgVDE2LCB0
eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCisg
ICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0
LCB0eXBlbmFtZSBUMjUsCisgICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1l
IFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCisgICAgdHlwZW5hbWUgVDMxLCB0eXBl
bmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzUsCisgICAg
dHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Pgor
aW50ZXJuYWw6OlZhbHVlQXJyYXkzOTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5
LCBUMTAsIFQxMSwgVDEyLCBUMTMsCisgICAgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwg
VDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwKKyAgICBUMjksIFQz
MCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOT4gVmFsdWVzKFQx
IHYxLCBUMiB2MiwKKyAgICBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4
LCBUOSB2OSwgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMiwKKyAgICBUMTMgdjEzLCBUMTQgdjE0
LCBUMTUgdjE1LCBUMTYgdjE2LCBUMTcgdjE3LCBUMTggdjE4LCBUMTkgdjE5LCBUMjAgdjIwLAor
ICAgIFQyMSB2MjEsIFQyMiB2MjIsIFQyMyB2MjMsIFQyNCB2MjQsIFQyNSB2MjUsIFQyNiB2MjYs
IFQyNyB2MjcsIFQyOCB2MjgsCisgICAgVDI5IHYyOSwgVDMwIHYzMCwgVDMxIHYzMSwgVDMyIHYz
MiwgVDMzIHYzMywgVDM0IHYzNCwgVDM1IHYzNSwgVDM2IHYzNiwKKyAgICBUMzcgdjM3LCBUMzgg
djM4LCBUMzkgdjM5KSB7CisgIHJldHVybiBpbnRlcm5hbDo6VmFsdWVBcnJheTM5PFQxLCBUMiwg
VDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLAorICAgICAgVDEyLCBUMTMsIFQx
NCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUs
CisgICAgICBUMjYsIFQyNywgVDI4LCBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUs
IFQzNiwgVDM3LCBUMzgsIFQzOT4odjEsCisgICAgICB2MiwgdjMsIHY0LCB2NSwgdjYsIHY3LCB2
OCwgdjksIHYxMCwgdjExLCB2MTIsIHYxMywgdjE0LCB2MTUsIHYxNiwgdjE3LAorICAgICAgdjE4
LCB2MTksIHYyMCwgdjIxLCB2MjIsIHYyMywgdjI0LCB2MjUsIHYyNiwgdjI3LCB2MjgsIHYyOSwg
djMwLCB2MzEsCisgICAgICB2MzIsIHYzMywgdjM0LCB2MzUsIHYzNiwgdjM3LCB2MzgsIHYzOSk7
Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0
eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0
eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFtZSBUMTEs
IHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwK
KyAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBU
MTksIHR5cGVuYW1lIFQyMCwKKyAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5h
bWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKKyAgICB0eXBlbmFtZSBUMjYsIHR5
cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKKyAg
ICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQs
IHR5cGVuYW1lIFQzNSwKKyAgICB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUg
VDM4LCB0eXBlbmFtZSBUMzksIHR5cGVuYW1lIFQ0MD4KK2ludGVybmFsOjpWYWx1ZUFycmF5NDA8
VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAor
ICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0
LCBUMjUsIFQyNiwgVDI3LCBUMjgsCisgICAgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwg
VDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MD4gVmFsdWVzKFQxIHYxLAorICAgIFQyIHYyLCBU
MyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwgVDEwIHYxMCwg
VDExIHYxMSwKKyAgICBUMTIgdjEyLCBUMTMgdjEzLCBUMTQgdjE0LCBUMTUgdjE1LCBUMTYgdjE2
LCBUMTcgdjE3LCBUMTggdjE4LCBUMTkgdjE5LAorICAgIFQyMCB2MjAsIFQyMSB2MjEsIFQyMiB2
MjIsIFQyMyB2MjMsIFQyNCB2MjQsIFQyNSB2MjUsIFQyNiB2MjYsIFQyNyB2MjcsCisgICAgVDI4
IHYyOCwgVDI5IHYyOSwgVDMwIHYzMCwgVDMxIHYzMSwgVDMyIHYzMiwgVDMzIHYzMywgVDM0IHYz
NCwgVDM1IHYzNSwKKyAgICBUMzYgdjM2LCBUMzcgdjM3LCBUMzggdjM4LCBUMzkgdjM5LCBUNDAg
djQwKSB7CisgIHJldHVybiBpbnRlcm5hbDo6VmFsdWVBcnJheTQwPFQxLCBUMiwgVDMsIFQ0LCBU
NSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLAorICAgICAgVDEyLCBUMTMsIFQxNCwgVDE1LCBU
MTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsCisgICAgICBU
MjYsIFQyNywgVDI4LCBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3
LCBUMzgsIFQzOSwKKyAgICAgIFQ0MD4odjEsIHYyLCB2MywgdjQsIHY1LCB2NiwgdjcsIHY4LCB2
OSwgdjEwLCB2MTEsIHYxMiwgdjEzLCB2MTQsIHYxNSwKKyAgICAgIHYxNiwgdjE3LCB2MTgsIHYx
OSwgdjIwLCB2MjEsIHYyMiwgdjIzLCB2MjQsIHYyNSwgdjI2LCB2MjcsIHYyOCwgdjI5LAorICAg
ICAgdjMwLCB2MzEsIHYzMiwgdjMzLCB2MzQsIHYzNSwgdjM2LCB2MzcsIHYzOCwgdjM5LCB2NDAp
OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywg
dHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywg
dHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCisgICAgdHlwZW5hbWUgVDEx
LCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUs
CisgICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUg
VDE5LCB0eXBlbmFtZSBUMjAsCisgICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVu
YW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCisgICAgdHlwZW5hbWUgVDI2LCB0
eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCisg
ICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0
LCB0eXBlbmFtZSBUMzUsCisgICAgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1l
IFQzOCwgdHlwZW5hbWUgVDM5LCB0eXBlbmFtZSBUNDAsCisgICAgdHlwZW5hbWUgVDQxPgoraW50
ZXJuYWw6OlZhbHVlQXJyYXk0MTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBU
MTAsIFQxMSwgVDEyLCBUMTMsCisgICAgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIw
LCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwKKyAgICBUMjksIFQzMCwg
VDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLAorICAgIFQ0
MT4gVmFsdWVzKFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3
LCBUOCB2OCwgVDkgdjksCisgICAgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMiwgVDEzIHYxMywg
VDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywKKyAgICBUMTggdjE4LCBUMTkgdjE5
LCBUMjAgdjIwLCBUMjEgdjIxLCBUMjIgdjIyLCBUMjMgdjIzLCBUMjQgdjI0LCBUMjUgdjI1LAor
ICAgIFQyNiB2MjYsIFQyNyB2MjcsIFQyOCB2MjgsIFQyOSB2MjksIFQzMCB2MzAsIFQzMSB2MzEs
IFQzMiB2MzIsIFQzMyB2MzMsCisgICAgVDM0IHYzNCwgVDM1IHYzNSwgVDM2IHYzNiwgVDM3IHYz
NywgVDM4IHYzOCwgVDM5IHYzOSwgVDQwIHY0MCwgVDQxIHY0MSkgeworICByZXR1cm4gaW50ZXJu
YWw6OlZhbHVlQXJyYXk0MTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAs
IFQxMSwKKyAgICAgIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAs
IFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LAorICAgICAgVDI2LCBUMjcsIFQyOCwgVDI5LCBUMzAs
IFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksCisgICAgICBUNDAs
IFQ0MT4odjEsIHYyLCB2MywgdjQsIHY1LCB2NiwgdjcsIHY4LCB2OSwgdjEwLCB2MTEsIHYxMiwg
djEzLCB2MTQsCisgICAgICB2MTUsIHYxNiwgdjE3LCB2MTgsIHYxOSwgdjIwLCB2MjEsIHYyMiwg
djIzLCB2MjQsIHYyNSwgdjI2LCB2MjcsIHYyOCwKKyAgICAgIHYyOSwgdjMwLCB2MzEsIHYzMiwg
djMzLCB2MzQsIHYzNSwgdjM2LCB2MzcsIHYzOCwgdjM5LCB2NDAsIHY0MSk7Cit9CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwg
dHlwZW5hbWUgVDUsCisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwg
dHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQx
MiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKKyAgICB0eXBlbmFt
ZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1l
IFQyMCwKKyAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBl
bmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKKyAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywg
dHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKKyAgICB0eXBlbmFtZSBU
MzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1lIFQz
NSwKKyAgICB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFt
ZSBUMzksIHR5cGVuYW1lIFQ0MCwKKyAgICB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0Mj4KK2lu
dGVybmFsOjpWYWx1ZUFycmF5NDI8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwg
VDEwLCBUMTEsIFQxMiwgVDEzLAorICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQy
MCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsCisgICAgVDI5LCBUMzAs
IFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwgVDQxLAor
ICAgIFQ0Mj4gVmFsdWVzKFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYs
IFQ3IHY3LCBUOCB2OCwgVDkgdjksCisgICAgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMiwgVDEz
IHYxMywgVDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywKKyAgICBUMTggdjE4LCBU
MTkgdjE5LCBUMjAgdjIwLCBUMjEgdjIxLCBUMjIgdjIyLCBUMjMgdjIzLCBUMjQgdjI0LCBUMjUg
djI1LAorICAgIFQyNiB2MjYsIFQyNyB2MjcsIFQyOCB2MjgsIFQyOSB2MjksIFQzMCB2MzAsIFQz
MSB2MzEsIFQzMiB2MzIsIFQzMyB2MzMsCisgICAgVDM0IHYzNCwgVDM1IHYzNSwgVDM2IHYzNiwg
VDM3IHYzNywgVDM4IHYzOCwgVDM5IHYzOSwgVDQwIHY0MCwgVDQxIHY0MSwKKyAgICBUNDIgdjQy
KSB7CisgIHJldHVybiBpbnRlcm5hbDo6VmFsdWVBcnJheTQyPFQxLCBUMiwgVDMsIFQ0LCBUNSwg
VDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLAorICAgICAgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYs
IFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsCisgICAgICBUMjYs
IFQyNywgVDI4LCBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBU
MzgsIFQzOSwKKyAgICAgIFQ0MCwgVDQxLCBUNDI+KHYxLCB2MiwgdjMsIHY0LCB2NSwgdjYsIHY3
LCB2OCwgdjksIHYxMCwgdjExLCB2MTIsIHYxMywKKyAgICAgIHYxNCwgdjE1LCB2MTYsIHYxNywg
djE4LCB2MTksIHYyMCwgdjIxLCB2MjIsIHYyMywgdjI0LCB2MjUsIHYyNiwgdjI3LAorICAgICAg
djI4LCB2MjksIHYzMCwgdjMxLCB2MzIsIHYzMywgdjM0LCB2MzUsIHYzNiwgdjM3LCB2MzgsIHYz
OSwgdjQwLCB2NDEsCisgICAgICB2NDIpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5
cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5
cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFt
ZSBUMTAsCisgICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlw
ZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCisgICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcs
IHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCisgICAgdHlwZW5hbWUg
VDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBU
MjUsCisgICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5h
bWUgVDI5LCB0eXBlbmFtZSBUMzAsCisgICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5
cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzUsCisgICAgdHlwZW5hbWUgVDM2
LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5LCB0eXBlbmFtZSBUNDAs
CisgICAgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0Mz4KK2ludGVybmFs
OjpWYWx1ZUFycmF5NDM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBU
MTEsIFQxMiwgVDEzLAorICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIx
LCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsCisgICAgVDI5LCBUMzAsIFQzMSwg
VDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwgVDQxLCBUNDIsCisg
ICAgVDQzPiBWYWx1ZXMoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2Niwg
VDcgdjcsIFQ4IHY4LCBUOSB2OSwKKyAgICBUMTAgdjEwLCBUMTEgdjExLCBUMTIgdjEyLCBUMTMg
djEzLCBUMTQgdjE0LCBUMTUgdjE1LCBUMTYgdjE2LCBUMTcgdjE3LAorICAgIFQxOCB2MTgsIFQx
OSB2MTksIFQyMCB2MjAsIFQyMSB2MjEsIFQyMiB2MjIsIFQyMyB2MjMsIFQyNCB2MjQsIFQyNSB2
MjUsCisgICAgVDI2IHYyNiwgVDI3IHYyNywgVDI4IHYyOCwgVDI5IHYyOSwgVDMwIHYzMCwgVDMx
IHYzMSwgVDMyIHYzMiwgVDMzIHYzMywKKyAgICBUMzQgdjM0LCBUMzUgdjM1LCBUMzYgdjM2LCBU
MzcgdjM3LCBUMzggdjM4LCBUMzkgdjM5LCBUNDAgdjQwLCBUNDEgdjQxLAorICAgIFQ0MiB2NDIs
IFQ0MyB2NDMpIHsKKyAgcmV0dXJuIGludGVybmFsOjpWYWx1ZUFycmF5NDM8VDEsIFQyLCBUMywg
VDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsCisgICAgICBUMTIsIFQxMywgVDE0LCBU
MTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwKKyAg
ICAgIFQyNiwgVDI3LCBUMjgsIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2
LCBUMzcsIFQzOCwgVDM5LAorICAgICAgVDQwLCBUNDEsIFQ0MiwgVDQzPih2MSwgdjIsIHYzLCB2
NCwgdjUsIHY2LCB2NywgdjgsIHY5LCB2MTAsIHYxMSwgdjEyLAorICAgICAgdjEzLCB2MTQsIHYx
NSwgdjE2LCB2MTcsIHYxOCwgdjE5LCB2MjAsIHYyMSwgdjIyLCB2MjMsIHYyNCwgdjI1LCB2MjYs
CisgICAgICB2MjcsIHYyOCwgdjI5LCB2MzAsIHYzMSwgdjMyLCB2MzMsIHYzNCwgdjM1LCB2MzYs
IHYzNywgdjM4LCB2MzksIHY0MCwKKyAgICAgIHY0MSwgdjQyLCB2NDMpOworfQorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5
cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5
cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCisgICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIs
IHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCisgICAgdHlwZW5hbWUg
VDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBU
MjAsCisgICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5h
bWUgVDI0LCB0eXBlbmFtZSBUMjUsCisgICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5
cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCisgICAgdHlwZW5hbWUgVDMx
LCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzUs
CisgICAgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUg
VDM5LCB0eXBlbmFtZSBUNDAsCisgICAgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVu
YW1lIFQ0MywgdHlwZW5hbWUgVDQ0PgoraW50ZXJuYWw6OlZhbHVlQXJyYXk0NDxUMSwgVDIsIFQz
LCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsCisgICAgVDE0LCBU
MTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2
LCBUMjcsIFQyOCwKKyAgICBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwg
VDM3LCBUMzgsIFQzOSwgVDQwLCBUNDEsIFQ0MiwgVDQzLAorICAgIFQ0ND4gVmFsdWVzKFQxIHYx
LCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkgdjks
CisgICAgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMiwgVDEzIHYxMywgVDE0IHYxNCwgVDE1IHYx
NSwgVDE2IHYxNiwgVDE3IHYxNywKKyAgICBUMTggdjE4LCBUMTkgdjE5LCBUMjAgdjIwLCBUMjEg
djIxLCBUMjIgdjIyLCBUMjMgdjIzLCBUMjQgdjI0LCBUMjUgdjI1LAorICAgIFQyNiB2MjYsIFQy
NyB2MjcsIFQyOCB2MjgsIFQyOSB2MjksIFQzMCB2MzAsIFQzMSB2MzEsIFQzMiB2MzIsIFQzMyB2
MzMsCisgICAgVDM0IHYzNCwgVDM1IHYzNSwgVDM2IHYzNiwgVDM3IHYzNywgVDM4IHYzOCwgVDM5
IHYzOSwgVDQwIHY0MCwgVDQxIHY0MSwKKyAgICBUNDIgdjQyLCBUNDMgdjQzLCBUNDQgdjQ0KSB7
CisgIHJldHVybiBpbnRlcm5hbDo6VmFsdWVBcnJheTQ0PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYs
IFQ3LCBUOCwgVDksIFQxMCwgVDExLAorICAgICAgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQx
NywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsCisgICAgICBUMjYsIFQy
NywgVDI4LCBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgs
IFQzOSwKKyAgICAgIFQ0MCwgVDQxLCBUNDIsIFQ0MywgVDQ0Pih2MSwgdjIsIHYzLCB2NCwgdjUs
IHY2LCB2NywgdjgsIHY5LCB2MTAsIHYxMSwKKyAgICAgIHYxMiwgdjEzLCB2MTQsIHYxNSwgdjE2
LCB2MTcsIHYxOCwgdjE5LCB2MjAsIHYyMSwgdjIyLCB2MjMsIHYyNCwgdjI1LAorICAgICAgdjI2
LCB2MjcsIHYyOCwgdjI5LCB2MzAsIHYzMSwgdjMyLCB2MzMsIHYzNCwgdjM1LCB2MzYsIHYzNywg
djM4LCB2MzksCisgICAgICB2NDAsIHY0MSwgdjQyLCB2NDMsIHY0NCk7Cit9CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlw
ZW5hbWUgVDUsCisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlw
ZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwg
dHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKKyAgICB0eXBlbmFtZSBU
MTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQy
MCwKKyAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFt
ZSBUMjQsIHR5cGVuYW1lIFQyNSwKKyAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlw
ZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKKyAgICB0eXBlbmFtZSBUMzEs
IHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1lIFQzNSwK
KyAgICB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBU
MzksIHR5cGVuYW1lIFQ0MCwKKyAgICB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5h
bWUgVDQzLCB0eXBlbmFtZSBUNDQsIHR5cGVuYW1lIFQ0NT4KK2ludGVybmFsOjpWYWx1ZUFycmF5
NDU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEz
LAorICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywg
VDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsCisgICAgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQz
NCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwgVDQxLCBUNDIsIFQ0MywKKyAgICBUNDQs
IFQ0NT4gVmFsdWVzKFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYsIFQ3
IHY3LCBUOCB2OCwKKyAgICBUOSB2OSwgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMiwgVDEzIHYx
MywgVDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwKKyAgICBUMTcgdjE3LCBUMTggdjE4LCBUMTkg
djE5LCBUMjAgdjIwLCBUMjEgdjIxLCBUMjIgdjIyLCBUMjMgdjIzLCBUMjQgdjI0LAorICAgIFQy
NSB2MjUsIFQyNiB2MjYsIFQyNyB2MjcsIFQyOCB2MjgsIFQyOSB2MjksIFQzMCB2MzAsIFQzMSB2
MzEsIFQzMiB2MzIsCisgICAgVDMzIHYzMywgVDM0IHYzNCwgVDM1IHYzNSwgVDM2IHYzNiwgVDM3
IHYzNywgVDM4IHYzOCwgVDM5IHYzOSwgVDQwIHY0MCwKKyAgICBUNDEgdjQxLCBUNDIgdjQyLCBU
NDMgdjQzLCBUNDQgdjQ0LCBUNDUgdjQ1KSB7CisgIHJldHVybiBpbnRlcm5hbDo6VmFsdWVBcnJh
eTQ1PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLAorICAgICAg
VDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQy
MywgVDI0LCBUMjUsCisgICAgICBUMjYsIFQyNywgVDI4LCBUMjksIFQzMCwgVDMxLCBUMzIsIFQz
MywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwKKyAgICAgIFQ0MCwgVDQxLCBUNDIsIFQ0
MywgVDQ0LCBUNDU+KHYxLCB2MiwgdjMsIHY0LCB2NSwgdjYsIHY3LCB2OCwgdjksIHYxMCwKKyAg
ICAgIHYxMSwgdjEyLCB2MTMsIHYxNCwgdjE1LCB2MTYsIHYxNywgdjE4LCB2MTksIHYyMCwgdjIx
LCB2MjIsIHYyMywgdjI0LAorICAgICAgdjI1LCB2MjYsIHYyNywgdjI4LCB2MjksIHYzMCwgdjMx
LCB2MzIsIHYzMywgdjM0LCB2MzUsIHYzNiwgdjM3LCB2MzgsCisgICAgICB2MzksIHY0MCwgdjQx
LCB2NDIsIHY0MywgdjQ0LCB2NDUpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVu
YW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5cGVu
YW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBU
MTAsCisgICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5h
bWUgVDE0LCB0eXBlbmFtZSBUMTUsCisgICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5
cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCisgICAgdHlwZW5hbWUgVDIx
LCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUs
CisgICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUg
VDI5LCB0eXBlbmFtZSBUMzAsCisgICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVu
YW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzUsCisgICAgdHlwZW5hbWUgVDM2LCB0
eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5LCB0eXBlbmFtZSBUNDAsCisg
ICAgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0
LCB0eXBlbmFtZSBUNDUsCisgICAgdHlwZW5hbWUgVDQ2PgoraW50ZXJuYWw6OlZhbHVlQXJyYXk0
NjxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMs
CisgICAgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBU
MjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwKKyAgICBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0
LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLCBUNDEsIFQ0MiwgVDQzLAorICAgIFQ0NCwg
VDQ1LCBUNDY+IFZhbHVlcyhUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2
LCBUNyB2NywKKyAgICBUOCB2OCwgVDkgdjksIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQx
MyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsCisgICAgVDE2IHYxNiwgVDE3IHYxNywgVDE4IHYxOCwg
VDE5IHYxOSwgVDIwIHYyMCwgVDIxIHYyMSwgVDIyIHYyMiwgVDIzIHYyMywKKyAgICBUMjQgdjI0
LCBUMjUgdjI1LCBUMjYgdjI2LCBUMjcgdjI3LCBUMjggdjI4LCBUMjkgdjI5LCBUMzAgdjMwLCBU
MzEgdjMxLAorICAgIFQzMiB2MzIsIFQzMyB2MzMsIFQzNCB2MzQsIFQzNSB2MzUsIFQzNiB2MzYs
IFQzNyB2MzcsIFQzOCB2MzgsIFQzOSB2MzksCisgICAgVDQwIHY0MCwgVDQxIHY0MSwgVDQyIHY0
MiwgVDQzIHY0MywgVDQ0IHY0NCwgVDQ1IHY0NSwgVDQ2IHY0NikgeworICByZXR1cm4gaW50ZXJu
YWw6OlZhbHVlQXJyYXk0NjxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAs
IFQxMSwKKyAgICAgIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAs
IFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LAorICAgICAgVDI2LCBUMjcsIFQyOCwgVDI5LCBUMzAs
IFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksCisgICAgICBUNDAs
IFQ0MSwgVDQyLCBUNDMsIFQ0NCwgVDQ1LCBUNDY+KHYxLCB2MiwgdjMsIHY0LCB2NSwgdjYsIHY3
LCB2OCwgdjksCisgICAgICB2MTAsIHYxMSwgdjEyLCB2MTMsIHYxNCwgdjE1LCB2MTYsIHYxNywg
djE4LCB2MTksIHYyMCwgdjIxLCB2MjIsIHYyMywKKyAgICAgIHYyNCwgdjI1LCB2MjYsIHYyNywg
djI4LCB2MjksIHYzMCwgdjMxLCB2MzIsIHYzMywgdjM0LCB2MzUsIHYzNiwgdjM3LAorICAgICAg
djM4LCB2MzksIHY0MCwgdjQxLCB2NDIsIHY0MywgdjQ0LCB2NDUsIHY0Nik7Cit9CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwg
dHlwZW5hbWUgVDUsCisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwg
dHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQx
MiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKKyAgICB0eXBlbmFt
ZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1l
IFQyMCwKKyAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBl
bmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKKyAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywg
dHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKKyAgICB0eXBlbmFtZSBU
MzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1lIFQz
NSwKKyAgICB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFt
ZSBUMzksIHR5cGVuYW1lIFQ0MCwKKyAgICB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlw
ZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQsIHR5cGVuYW1lIFQ0NSwKKyAgICB0eXBlbmFtZSBUNDYs
IHR5cGVuYW1lIFQ0Nz4KK2ludGVybmFsOjpWYWx1ZUFycmF5NDc8VDEsIFQyLCBUMywgVDQsIFQ1
LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAorICAgIFQxNCwgVDE1LCBUMTYs
IFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBU
MjgsCisgICAgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4
LCBUMzksIFQ0MCwgVDQxLCBUNDIsIFQ0MywKKyAgICBUNDQsIFQ0NSwgVDQ2LCBUNDc+IFZhbHVl
cyhUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NywKKyAgICBU
OCB2OCwgVDkgdjksIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQxNCB2MTQs
IFQxNSB2MTUsCisgICAgVDE2IHYxNiwgVDE3IHYxNywgVDE4IHYxOCwgVDE5IHYxOSwgVDIwIHYy
MCwgVDIxIHYyMSwgVDIyIHYyMiwgVDIzIHYyMywKKyAgICBUMjQgdjI0LCBUMjUgdjI1LCBUMjYg
djI2LCBUMjcgdjI3LCBUMjggdjI4LCBUMjkgdjI5LCBUMzAgdjMwLCBUMzEgdjMxLAorICAgIFQz
MiB2MzIsIFQzMyB2MzMsIFQzNCB2MzQsIFQzNSB2MzUsIFQzNiB2MzYsIFQzNyB2MzcsIFQzOCB2
MzgsIFQzOSB2MzksCisgICAgVDQwIHY0MCwgVDQxIHY0MSwgVDQyIHY0MiwgVDQzIHY0MywgVDQ0
IHY0NCwgVDQ1IHY0NSwgVDQ2IHY0NiwgVDQ3IHY0NykgeworICByZXR1cm4gaW50ZXJuYWw6OlZh
bHVlQXJyYXk0NzxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwK
KyAgICAgIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwg
VDIyLCBUMjMsIFQyNCwgVDI1LAorICAgICAgVDI2LCBUMjcsIFQyOCwgVDI5LCBUMzAsIFQzMSwg
VDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksCisgICAgICBUNDAsIFQ0MSwg
VDQyLCBUNDMsIFQ0NCwgVDQ1LCBUNDYsIFQ0Nz4odjEsIHYyLCB2MywgdjQsIHY1LCB2Niwgdjcs
IHY4LAorICAgICAgdjksIHYxMCwgdjExLCB2MTIsIHYxMywgdjE0LCB2MTUsIHYxNiwgdjE3LCB2
MTgsIHYxOSwgdjIwLCB2MjEsIHYyMiwgdjIzLAorICAgICAgdjI0LCB2MjUsIHYyNiwgdjI3LCB2
MjgsIHYyOSwgdjMwLCB2MzEsIHYzMiwgdjMzLCB2MzQsIHYzNSwgdjM2LCB2MzcsCisgICAgICB2
MzgsIHYzOSwgdjQwLCB2NDEsIHY0MiwgdjQzLCB2NDQsIHY0NSwgdjQ2LCB2NDcpOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUg
VDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUg
VDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCisgICAgdHlwZW5hbWUgVDExLCB0eXBlbmFt
ZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCisgICAgdHlw
ZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBl
bmFtZSBUMjAsCisgICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywg
dHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCisgICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBU
MjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCisgICAgdHlwZW5h
bWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0eXBlbmFt
ZSBUMzUsCisgICAgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlw
ZW5hbWUgVDM5LCB0eXBlbmFtZSBUNDAsCisgICAgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIs
IHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0LCB0eXBlbmFtZSBUNDUsCisgICAgdHlwZW5hbWUg
VDQ2LCB0eXBlbmFtZSBUNDcsIHR5cGVuYW1lIFQ0OD4KK2ludGVybmFsOjpWYWx1ZUFycmF5NDg8
VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAor
ICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0
LCBUMjUsIFQyNiwgVDI3LCBUMjgsCisgICAgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwg
VDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwgVDQxLCBUNDIsIFQ0MywKKyAgICBUNDQsIFQ0
NSwgVDQ2LCBUNDcsIFQ0OD4gVmFsdWVzKFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2
NSwgVDYgdjYsCisgICAgVDcgdjcsIFQ4IHY4LCBUOSB2OSwgVDEwIHYxMCwgVDExIHYxMSwgVDEy
IHYxMiwgVDEzIHYxMywgVDE0IHYxNCwgVDE1IHYxNSwKKyAgICBUMTYgdjE2LCBUMTcgdjE3LCBU
MTggdjE4LCBUMTkgdjE5LCBUMjAgdjIwLCBUMjEgdjIxLCBUMjIgdjIyLCBUMjMgdjIzLAorICAg
IFQyNCB2MjQsIFQyNSB2MjUsIFQyNiB2MjYsIFQyNyB2MjcsIFQyOCB2MjgsIFQyOSB2MjksIFQz
MCB2MzAsIFQzMSB2MzEsCisgICAgVDMyIHYzMiwgVDMzIHYzMywgVDM0IHYzNCwgVDM1IHYzNSwg
VDM2IHYzNiwgVDM3IHYzNywgVDM4IHYzOCwgVDM5IHYzOSwKKyAgICBUNDAgdjQwLCBUNDEgdjQx
LCBUNDIgdjQyLCBUNDMgdjQzLCBUNDQgdjQ0LCBUNDUgdjQ1LCBUNDYgdjQ2LCBUNDcgdjQ3LAor
ICAgIFQ0OCB2NDgpIHsKKyAgcmV0dXJuIGludGVybmFsOjpWYWx1ZUFycmF5NDg8VDEsIFQyLCBU
MywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsCisgICAgICBUMTIsIFQxMywgVDE0
LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwK
KyAgICAgIFQyNiwgVDI3LCBUMjgsIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwg
VDM2LCBUMzcsIFQzOCwgVDM5LAorICAgICAgVDQwLCBUNDEsIFQ0MiwgVDQzLCBUNDQsIFQ0NSwg
VDQ2LCBUNDcsIFQ0OD4odjEsIHYyLCB2MywgdjQsIHY1LCB2NiwgdjcsCisgICAgICB2OCwgdjks
IHYxMCwgdjExLCB2MTIsIHYxMywgdjE0LCB2MTUsIHYxNiwgdjE3LCB2MTgsIHYxOSwgdjIwLCB2
MjEsIHYyMiwKKyAgICAgIHYyMywgdjI0LCB2MjUsIHYyNiwgdjI3LCB2MjgsIHYyOSwgdjMwLCB2
MzEsIHYzMiwgdjMzLCB2MzQsIHYzNSwgdjM2LAorICAgICAgdjM3LCB2MzgsIHYzOSwgdjQwLCB2
NDEsIHY0MiwgdjQzLCB2NDQsIHY0NSwgdjQ2LCB2NDcsIHY0OCk7Cit9CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5h
bWUgVDUsCisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5h
bWUgVDksIHR5cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlw
ZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKKyAgICB0eXBlbmFtZSBUMTYs
IHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwK
KyAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBU
MjQsIHR5cGVuYW1lIFQyNSwKKyAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5h
bWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKKyAgICB0eXBlbmFtZSBUMzEsIHR5
cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1lIFQzNSwKKyAg
ICB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzks
IHR5cGVuYW1lIFQ0MCwKKyAgICB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUg
VDQzLCB0eXBlbmFtZSBUNDQsIHR5cGVuYW1lIFQ0NSwKKyAgICB0eXBlbmFtZSBUNDYsIHR5cGVu
YW1lIFQ0NywgdHlwZW5hbWUgVDQ4LCB0eXBlbmFtZSBUNDk+CitpbnRlcm5hbDo6VmFsdWVBcnJh
eTQ5PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQx
MywKKyAgICBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMs
IFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LAorICAgIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBU
MzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsIFQ0MSwgVDQyLCBUNDMsCisgICAgVDQ0
LCBUNDUsIFQ0NiwgVDQ3LCBUNDgsIFQ0OT4gVmFsdWVzKFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0
IHY0LCBUNSB2NSwKKyAgICBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwgVDEwIHYxMCwgVDEx
IHYxMSwgVDEyIHYxMiwgVDEzIHYxMywgVDE0IHYxNCwKKyAgICBUMTUgdjE1LCBUMTYgdjE2LCBU
MTcgdjE3LCBUMTggdjE4LCBUMTkgdjE5LCBUMjAgdjIwLCBUMjEgdjIxLCBUMjIgdjIyLAorICAg
IFQyMyB2MjMsIFQyNCB2MjQsIFQyNSB2MjUsIFQyNiB2MjYsIFQyNyB2MjcsIFQyOCB2MjgsIFQy
OSB2MjksIFQzMCB2MzAsCisgICAgVDMxIHYzMSwgVDMyIHYzMiwgVDMzIHYzMywgVDM0IHYzNCwg
VDM1IHYzNSwgVDM2IHYzNiwgVDM3IHYzNywgVDM4IHYzOCwKKyAgICBUMzkgdjM5LCBUNDAgdjQw
LCBUNDEgdjQxLCBUNDIgdjQyLCBUNDMgdjQzLCBUNDQgdjQ0LCBUNDUgdjQ1LCBUNDYgdjQ2LAor
ICAgIFQ0NyB2NDcsIFQ0OCB2NDgsIFQ0OSB2NDkpIHsKKyAgcmV0dXJuIGludGVybmFsOjpWYWx1
ZUFycmF5NDk8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsCisg
ICAgICBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQy
MiwgVDIzLCBUMjQsIFQyNSwKKyAgICAgIFQyNiwgVDI3LCBUMjgsIFQyOSwgVDMwLCBUMzEsIFQz
MiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LAorICAgICAgVDQwLCBUNDEsIFQ0
MiwgVDQzLCBUNDQsIFQ0NSwgVDQ2LCBUNDcsIFQ0OCwgVDQ5Pih2MSwgdjIsIHYzLCB2NCwgdjUs
IHY2LAorICAgICAgdjcsIHY4LCB2OSwgdjEwLCB2MTEsIHYxMiwgdjEzLCB2MTQsIHYxNSwgdjE2
LCB2MTcsIHYxOCwgdjE5LCB2MjAsIHYyMSwKKyAgICAgIHYyMiwgdjIzLCB2MjQsIHYyNSwgdjI2
LCB2MjcsIHYyOCwgdjI5LCB2MzAsIHYzMSwgdjMyLCB2MzMsIHYzNCwgdjM1LAorICAgICAgdjM2
LCB2MzcsIHYzOCwgdjM5LCB2NDAsIHY0MSwgdjQyLCB2NDMsIHY0NCwgdjQ1LCB2NDYsIHY0Nywg
djQ4LCB2NDkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBl
bmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBl
bmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCisgICAgdHlw
ZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBl
bmFtZSBUMTUsCisgICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwg
dHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCisgICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBU
MjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCisgICAgdHlwZW5h
bWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFt
ZSBUMzAsCisgICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlw
ZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzUsCisgICAgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcs
IHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5LCB0eXBlbmFtZSBUNDAsCisgICAgdHlwZW5hbWUg
VDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0LCB0eXBlbmFtZSBU
NDUsCisgICAgdHlwZW5hbWUgVDQ2LCB0eXBlbmFtZSBUNDcsIHR5cGVuYW1lIFQ0OCwgdHlwZW5h
bWUgVDQ5LCB0eXBlbmFtZSBUNTA+CitpbnRlcm5hbDo6VmFsdWVBcnJheTUwPFQxLCBUMiwgVDMs
IFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKKyAgICBUMTQsIFQx
NSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYs
IFQyNywgVDI4LAorICAgIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBU
MzcsIFQzOCwgVDM5LCBUNDAsIFQ0MSwgVDQyLCBUNDMsCisgICAgVDQ0LCBUNDUsIFQ0NiwgVDQ3
LCBUNDgsIFQ0OSwgVDUwPiBWYWx1ZXMoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsCisgICAg
VDUgdjUsIFQ2IHY2LCBUNyB2NywgVDggdjgsIFQ5IHY5LCBUMTAgdjEwLCBUMTEgdjExLCBUMTIg
djEyLCBUMTMgdjEzLAorICAgIFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYsIFQxNyB2MTcsIFQx
OCB2MTgsIFQxOSB2MTksIFQyMCB2MjAsIFQyMSB2MjEsCisgICAgVDIyIHYyMiwgVDIzIHYyMywg
VDI0IHYyNCwgVDI1IHYyNSwgVDI2IHYyNiwgVDI3IHYyNywgVDI4IHYyOCwgVDI5IHYyOSwKKyAg
ICBUMzAgdjMwLCBUMzEgdjMxLCBUMzIgdjMyLCBUMzMgdjMzLCBUMzQgdjM0LCBUMzUgdjM1LCBU
MzYgdjM2LCBUMzcgdjM3LAorICAgIFQzOCB2MzgsIFQzOSB2MzksIFQ0MCB2NDAsIFQ0MSB2NDEs
IFQ0MiB2NDIsIFQ0MyB2NDMsIFQ0NCB2NDQsIFQ0NSB2NDUsCisgICAgVDQ2IHY0NiwgVDQ3IHY0
NywgVDQ4IHY0OCwgVDQ5IHY0OSwgVDUwIHY1MCkgeworICByZXR1cm4gaW50ZXJuYWw6OlZhbHVl
QXJyYXk1MDxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwKKyAg
ICAgIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIy
LCBUMjMsIFQyNCwgVDI1LAorICAgICAgVDI2LCBUMjcsIFQyOCwgVDI5LCBUMzAsIFQzMSwgVDMy
LCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksCisgICAgICBUNDAsIFQ0MSwgVDQy
LCBUNDMsIFQ0NCwgVDQ1LCBUNDYsIFQ0NywgVDQ4LCBUNDksIFQ1MD4odjEsIHYyLCB2MywgdjQs
CisgICAgICB2NSwgdjYsIHY3LCB2OCwgdjksIHYxMCwgdjExLCB2MTIsIHYxMywgdjE0LCB2MTUs
IHYxNiwgdjE3LCB2MTgsIHYxOSwKKyAgICAgIHYyMCwgdjIxLCB2MjIsIHYyMywgdjI0LCB2MjUs
IHYyNiwgdjI3LCB2MjgsIHYyOSwgdjMwLCB2MzEsIHYzMiwgdjMzLAorICAgICAgdjM0LCB2MzUs
IHYzNiwgdjM3LCB2MzgsIHYzOSwgdjQwLCB2NDEsIHY0MiwgdjQzLCB2NDQsIHY0NSwgdjQ2LCB2
NDcsCisgICAgICB2NDgsIHY0OSwgdjUwKTsKK30KKworLy8gQm9vbCgpIGFsbG93cyBnZW5lcmF0
aW5nIHRlc3RzIHdpdGggcGFyYW1ldGVycyBpbiBhIHNldCBvZiAoZmFsc2UsIHRydWUpLgorLy8K
Ky8vIFN5bm9wc2lzOgorLy8gQm9vbCgpCisvLyAgIC0gcmV0dXJucyBhIGdlbmVyYXRvciBwcm9k
dWNpbmcgc2VxdWVuY2VzIHdpdGggZWxlbWVudHMge2ZhbHNlLCB0cnVlfS4KKy8vCisvLyBJdCBp
cyB1c2VmdWwgd2hlbiB0ZXN0aW5nIGNvZGUgdGhhdCBkZXBlbmRzIG9uIEJvb2xlYW4gZmxhZ3Mu
IENvbWJpbmF0aW9ucworLy8gb2YgbXVsdGlwbGUgZmxhZ3MgY2FuIGJlIHRlc3RlZCB3aGVuIHNl
dmVyYWwgQm9vbCgpJ3MgYXJlIGNvbWJpbmVkIHVzaW5nCisvLyBDb21iaW5lKCkgZnVuY3Rpb24u
CisvLworLy8gSW4gdGhlIGZvbGxvd2luZyBleGFtcGxlIGFsbCB0ZXN0cyBpbiB0aGUgdGVzdCBj
YXNlIEZsYWdEZXBlbmRlbnRUZXN0CisvLyB3aWxsIGJlIGluc3RhbnRpYXRlZCB0d2ljZSB3aXRo
IHBhcmFtZXRlcnMgZmFsc2UgYW5kIHRydWUuCisvLworLy8gY2xhc3MgRmxhZ0RlcGVuZGVudFRl
c3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQYXJhbTxib29sPiB7CisvLyAgIHZpcnR1YWwg
dm9pZCBTZXRVcCgpIHsKKy8vICAgICBleHRlcm5hbF9mbGFnID0gR2V0UGFyYW0oKTsKKy8vICAg
fQorLy8gfQorLy8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoQm9vbFNlcXVlbmNlLCBGbGFnRGVw
ZW5kZW50VGVzdCwgQm9vbCgpKTsKKy8vCitpbmxpbmUgaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9y
PGJvb2w+IEJvb2woKSB7CisgIHJldHVybiBWYWx1ZXMoZmFsc2UsIHRydWUpOworfQorCisjIGlm
IEdURVNUX0hBU19DT01CSU5FCisvLyBDb21iaW5lKCkgYWxsb3dzIHRoZSB1c2VyIHRvIGNvbWJp
bmUgdHdvIG9yIG1vcmUgc2VxdWVuY2VzIHRvIHByb2R1Y2UKKy8vIHZhbHVlcyBvZiBhIENhcnRl
c2lhbiBwcm9kdWN0IG9mIHRob3NlIHNlcXVlbmNlcycgZWxlbWVudHMuCisvLworLy8gU3lub3Bz
aXM6CisvLyBDb21iaW5lKGdlbjEsIGdlbjIsIC4uLiwgZ2VuTikKKy8vICAgLSByZXR1cm5zIGEg
Z2VuZXJhdG9yIHByb2R1Y2luZyBzZXF1ZW5jZXMgd2l0aCBlbGVtZW50cyBjb21pbmcgZnJvbQor
Ly8gICAgIHRoZSBDYXJ0ZXNpYW4gcHJvZHVjdCBvZiBlbGVtZW50cyBmcm9tIHRoZSBzZXF1ZW5j
ZXMgZ2VuZXJhdGVkIGJ5CisvLyAgICAgZ2VuMSwgZ2VuMiwgLi4uLCBnZW5OLiBUaGUgc2VxdWVu
Y2UgZWxlbWVudHMgd2lsbCBoYXZlIGEgdHlwZSBvZgorLy8gICAgIHR1cGxlPFQxLCBUMiwgLi4u
LCBUTj4gd2hlcmUgVDEsIFQyLCAuLi4sIFROIGFyZSB0aGUgdHlwZXMKKy8vICAgICBvZiBlbGVt
ZW50cyBmcm9tIHNlcXVlbmNlcyBwcm9kdWNlcyBieSBnZW4xLCBnZW4yLCAuLi4sIGdlbk4uCisv
LworLy8gQ29tYmluZSBjYW4gaGF2ZSB1cCB0byAxMCBhcmd1bWVudHMuIFRoaXMgbnVtYmVyIGlz
IGN1cnJlbnRseSBsaW1pdGVkCisvLyBieSB0aGUgbWF4aW11bSBudW1iZXIgb2YgZWxlbWVudHMg
aW4gdGhlIHR1cGxlIGltcGxlbWVudGF0aW9uIHVzZWQgYnkgR29vZ2xlCisvLyBUZXN0LgorLy8K
Ky8vIEV4YW1wbGU6CisvLworLy8gVGhpcyB3aWxsIGluc3RhbnRpYXRlIHRlc3RzIGluIHRlc3Qg
Y2FzZSBBbmltYWxUZXN0IGVhY2ggb25lIHdpdGgKKy8vIHRoZSBwYXJhbWV0ZXIgdmFsdWVzIHR1
cGxlKCJjYXQiLCBCTEFDSyksIHR1cGxlKCJjYXQiLCBXSElURSksCisvLyB0dXBsZSgiZG9nIiwg
QkxBQ0spLCBhbmQgdHVwbGUoImRvZyIsIFdISVRFKToKKy8vCisvLyBlbnVtIENvbG9yIHsgQkxB
Q0ssIEdSQVksIFdISVRFIH07CisvLyBjbGFzcyBBbmltYWxUZXN0CisvLyAgICAgOiBwdWJsaWMg
dGVzdGluZzo6VGVzdFdpdGhQYXJhbTx0dXBsZTxjb25zdCBjaGFyKiwgQ29sb3I+ID4gey4uLn07
CisvLworLy8gVEVTVF9QKEFuaW1hbFRlc3QsIEFuaW1hbExvb2tzTmljZSkgey4uLn0KKy8vCisv
LyBJTlNUQU5USUFURV9URVNUX0NBU0VfUChBbmltYWxWYXJpYXRpb25zLCBBbmltYWxUZXN0LAor
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgQ29tYmluZShWYWx1ZXMoImNhdCIsICJkb2ciKSwK
Ky8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKEJMQUNLLCBXSElURSkp
KTsKKy8vCisvLyBUaGlzIHdpbGwgaW5zdGFudGlhdGUgdGVzdHMgaW4gRmxhZ0RlcGVuZGVudFRl
c3Qgd2l0aCBhbGwgdmFyaWF0aW9ucyBvZiB0d28KKy8vIEJvb2xlYW4gZmxhZ3M6CisvLworLy8g
Y2xhc3MgRmxhZ0RlcGVuZGVudFRlc3QKKy8vICAgICA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0
aFBhcmFtPHR1cGxlPGJvb2wsIGJvb2w+ID4geworLy8gICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7
CisvLyAgICAgLy8gQXNzaWducyBleHRlcm5hbF9mbGFnXzEgYW5kIGV4dGVybmFsX2ZsYWdfMiB2
YWx1ZXMgZnJvbSB0aGUgdHVwbGUuCisvLyAgICAgdGllKGV4dGVybmFsX2ZsYWdfMSwgZXh0ZXJu
YWxfZmxhZ18yKSA9IEdldFBhcmFtKCk7CisvLyAgIH0KKy8vIH07CisvLworLy8gVEVTVF9QKEZs
YWdEZXBlbmRlbnRUZXN0LCBUZXN0RmVhdHVyZTEpIHsKKy8vICAgLy8gVGVzdCB5b3VyIGNvZGUg
dXNpbmcgZXh0ZXJuYWxfZmxhZ18xIGFuZCBleHRlcm5hbF9mbGFnXzIgaGVyZS4KKy8vIH0KKy8v
IElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFR3b0Jvb2xTZXF1ZW5jZSwgRmxhZ0RlcGVuZGVudFRl
c3QsCisvLyAgICAgICAgICAgICAgICAgICAgICAgICBDb21iaW5lKEJvb2woKSwgQm9vbCgpKSk7
CisvLwordGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvcjEsIHR5cGVuYW1lIEdlbmVyYXRvcjI+
CitpbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlcjI8R2VuZXJhdG9yMSwgR2VuZXJhdG9y
Mj4gQ29tYmluZSgKKyAgICBjb25zdCBHZW5lcmF0b3IxJiBnMSwgY29uc3QgR2VuZXJhdG9yMiYg
ZzIpIHsKKyAgcmV0dXJuIGludGVybmFsOjpDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyMjxHZW5lcmF0
b3IxLCBHZW5lcmF0b3IyPigKKyAgICAgIGcxLCBnMik7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBHZW5lcmF0b3IxLCB0eXBlbmFtZSBHZW5lcmF0b3IyLCB0eXBlbmFtZSBHZW5lcmF0b3IzPgor
aW50ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RIb2xkZXIzPEdlbmVyYXRvcjEsIEdlbmVyYXRvcjIs
IEdlbmVyYXRvcjM+IENvbWJpbmUoCisgICAgY29uc3QgR2VuZXJhdG9yMSYgZzEsIGNvbnN0IEdl
bmVyYXRvcjImIGcyLCBjb25zdCBHZW5lcmF0b3IzJiBnMykgeworICByZXR1cm4gaW50ZXJuYWw6
OkNhcnRlc2lhblByb2R1Y3RIb2xkZXIzPEdlbmVyYXRvcjEsIEdlbmVyYXRvcjIsIEdlbmVyYXRv
cjM+KAorICAgICAgZzEsIGcyLCBnMyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0
b3IxLCB0eXBlbmFtZSBHZW5lcmF0b3IyLCB0eXBlbmFtZSBHZW5lcmF0b3IzLAorICAgIHR5cGVu
YW1lIEdlbmVyYXRvcjQ+CitpbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlcjQ8R2VuZXJh
dG9yMSwgR2VuZXJhdG9yMiwgR2VuZXJhdG9yMywKKyAgICBHZW5lcmF0b3I0PiBDb21iaW5lKAor
ICAgIGNvbnN0IEdlbmVyYXRvcjEmIGcxLCBjb25zdCBHZW5lcmF0b3IyJiBnMiwgY29uc3QgR2Vu
ZXJhdG9yMyYgZzMsCisgICAgICAgIGNvbnN0IEdlbmVyYXRvcjQmIGc0KSB7CisgIHJldHVybiBp
bnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlcjQ8R2VuZXJhdG9yMSwgR2VuZXJhdG9yMiwg
R2VuZXJhdG9yMywKKyAgICAgIEdlbmVyYXRvcjQ+KAorICAgICAgZzEsIGcyLCBnMywgZzQpOwor
fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yMSwgdHlwZW5hbWUgR2VuZXJhdG9yMiwg
dHlwZW5hbWUgR2VuZXJhdG9yMywKKyAgICB0eXBlbmFtZSBHZW5lcmF0b3I0LCB0eXBlbmFtZSBH
ZW5lcmF0b3I1PgoraW50ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RIb2xkZXI1PEdlbmVyYXRvcjEs
IEdlbmVyYXRvcjIsIEdlbmVyYXRvcjMsCisgICAgR2VuZXJhdG9yNCwgR2VuZXJhdG9yNT4gQ29t
YmluZSgKKyAgICBjb25zdCBHZW5lcmF0b3IxJiBnMSwgY29uc3QgR2VuZXJhdG9yMiYgZzIsIGNv
bnN0IEdlbmVyYXRvcjMmIGczLAorICAgICAgICBjb25zdCBHZW5lcmF0b3I0JiBnNCwgY29uc3Qg
R2VuZXJhdG9yNSYgZzUpIHsKKyAgcmV0dXJuIGludGVybmFsOjpDYXJ0ZXNpYW5Qcm9kdWN0SG9s
ZGVyNTxHZW5lcmF0b3IxLCBHZW5lcmF0b3IyLCBHZW5lcmF0b3IzLAorICAgICAgR2VuZXJhdG9y
NCwgR2VuZXJhdG9yNT4oCisgICAgICBnMSwgZzIsIGczLCBnNCwgZzUpOworfQorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgR2VuZXJhdG9yMSwgdHlwZW5hbWUgR2VuZXJhdG9yMiwgdHlwZW5hbWUgR2Vu
ZXJhdG9yMywKKyAgICB0eXBlbmFtZSBHZW5lcmF0b3I0LCB0eXBlbmFtZSBHZW5lcmF0b3I1LCB0
eXBlbmFtZSBHZW5lcmF0b3I2PgoraW50ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RIb2xkZXI2PEdl
bmVyYXRvcjEsIEdlbmVyYXRvcjIsIEdlbmVyYXRvcjMsCisgICAgR2VuZXJhdG9yNCwgR2VuZXJh
dG9yNSwgR2VuZXJhdG9yNj4gQ29tYmluZSgKKyAgICBjb25zdCBHZW5lcmF0b3IxJiBnMSwgY29u
c3QgR2VuZXJhdG9yMiYgZzIsIGNvbnN0IEdlbmVyYXRvcjMmIGczLAorICAgICAgICBjb25zdCBH
ZW5lcmF0b3I0JiBnNCwgY29uc3QgR2VuZXJhdG9yNSYgZzUsIGNvbnN0IEdlbmVyYXRvcjYmIGc2
KSB7CisgIHJldHVybiBpbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlcjY8R2VuZXJhdG9y
MSwgR2VuZXJhdG9yMiwgR2VuZXJhdG9yMywKKyAgICAgIEdlbmVyYXRvcjQsIEdlbmVyYXRvcjUs
IEdlbmVyYXRvcjY+KAorICAgICAgZzEsIGcyLCBnMywgZzQsIGc1LCBnNik7Cit9CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IxLCB0eXBlbmFtZSBHZW5lcmF0b3IyLCB0eXBlbmFtZSBH
ZW5lcmF0b3IzLAorICAgIHR5cGVuYW1lIEdlbmVyYXRvcjQsIHR5cGVuYW1lIEdlbmVyYXRvcjUs
IHR5cGVuYW1lIEdlbmVyYXRvcjYsCisgICAgdHlwZW5hbWUgR2VuZXJhdG9yNz4KK2ludGVybmFs
OjpDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyNzxHZW5lcmF0b3IxLCBHZW5lcmF0b3IyLCBHZW5lcmF0
b3IzLAorICAgIEdlbmVyYXRvcjQsIEdlbmVyYXRvcjUsIEdlbmVyYXRvcjYsIEdlbmVyYXRvcjc+
IENvbWJpbmUoCisgICAgY29uc3QgR2VuZXJhdG9yMSYgZzEsIGNvbnN0IEdlbmVyYXRvcjImIGcy
LCBjb25zdCBHZW5lcmF0b3IzJiBnMywKKyAgICAgICAgY29uc3QgR2VuZXJhdG9yNCYgZzQsIGNv
bnN0IEdlbmVyYXRvcjUmIGc1LCBjb25zdCBHZW5lcmF0b3I2JiBnNiwKKyAgICAgICAgY29uc3Qg
R2VuZXJhdG9yNyYgZzcpIHsKKyAgcmV0dXJuIGludGVybmFsOjpDYXJ0ZXNpYW5Qcm9kdWN0SG9s
ZGVyNzxHZW5lcmF0b3IxLCBHZW5lcmF0b3IyLCBHZW5lcmF0b3IzLAorICAgICAgR2VuZXJhdG9y
NCwgR2VuZXJhdG9yNSwgR2VuZXJhdG9yNiwgR2VuZXJhdG9yNz4oCisgICAgICBnMSwgZzIsIGcz
LCBnNCwgZzUsIGc2LCBnNyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IxLCB0
eXBlbmFtZSBHZW5lcmF0b3IyLCB0eXBlbmFtZSBHZW5lcmF0b3IzLAorICAgIHR5cGVuYW1lIEdl
bmVyYXRvcjQsIHR5cGVuYW1lIEdlbmVyYXRvcjUsIHR5cGVuYW1lIEdlbmVyYXRvcjYsCisgICAg
dHlwZW5hbWUgR2VuZXJhdG9yNywgdHlwZW5hbWUgR2VuZXJhdG9yOD4KK2ludGVybmFsOjpDYXJ0
ZXNpYW5Qcm9kdWN0SG9sZGVyODxHZW5lcmF0b3IxLCBHZW5lcmF0b3IyLCBHZW5lcmF0b3IzLAor
ICAgIEdlbmVyYXRvcjQsIEdlbmVyYXRvcjUsIEdlbmVyYXRvcjYsIEdlbmVyYXRvcjcsIEdlbmVy
YXRvcjg+IENvbWJpbmUoCisgICAgY29uc3QgR2VuZXJhdG9yMSYgZzEsIGNvbnN0IEdlbmVyYXRv
cjImIGcyLCBjb25zdCBHZW5lcmF0b3IzJiBnMywKKyAgICAgICAgY29uc3QgR2VuZXJhdG9yNCYg
ZzQsIGNvbnN0IEdlbmVyYXRvcjUmIGc1LCBjb25zdCBHZW5lcmF0b3I2JiBnNiwKKyAgICAgICAg
Y29uc3QgR2VuZXJhdG9yNyYgZzcsIGNvbnN0IEdlbmVyYXRvcjgmIGc4KSB7CisgIHJldHVybiBp
bnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlcjg8R2VuZXJhdG9yMSwgR2VuZXJhdG9yMiwg
R2VuZXJhdG9yMywKKyAgICAgIEdlbmVyYXRvcjQsIEdlbmVyYXRvcjUsIEdlbmVyYXRvcjYsIEdl
bmVyYXRvcjcsIEdlbmVyYXRvcjg+KAorICAgICAgZzEsIGcyLCBnMywgZzQsIGc1LCBnNiwgZzcs
IGc4KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvcjEsIHR5cGVuYW1lIEdlbmVy
YXRvcjIsIHR5cGVuYW1lIEdlbmVyYXRvcjMsCisgICAgdHlwZW5hbWUgR2VuZXJhdG9yNCwgdHlw
ZW5hbWUgR2VuZXJhdG9yNSwgdHlwZW5hbWUgR2VuZXJhdG9yNiwKKyAgICB0eXBlbmFtZSBHZW5l
cmF0b3I3LCB0eXBlbmFtZSBHZW5lcmF0b3I4LCB0eXBlbmFtZSBHZW5lcmF0b3I5PgoraW50ZXJu
YWw6OkNhcnRlc2lhblByb2R1Y3RIb2xkZXI5PEdlbmVyYXRvcjEsIEdlbmVyYXRvcjIsIEdlbmVy
YXRvcjMsCisgICAgR2VuZXJhdG9yNCwgR2VuZXJhdG9yNSwgR2VuZXJhdG9yNiwgR2VuZXJhdG9y
NywgR2VuZXJhdG9yOCwKKyAgICBHZW5lcmF0b3I5PiBDb21iaW5lKAorICAgIGNvbnN0IEdlbmVy
YXRvcjEmIGcxLCBjb25zdCBHZW5lcmF0b3IyJiBnMiwgY29uc3QgR2VuZXJhdG9yMyYgZzMsCisg
ICAgICAgIGNvbnN0IEdlbmVyYXRvcjQmIGc0LCBjb25zdCBHZW5lcmF0b3I1JiBnNSwgY29uc3Qg
R2VuZXJhdG9yNiYgZzYsCisgICAgICAgIGNvbnN0IEdlbmVyYXRvcjcmIGc3LCBjb25zdCBHZW5l
cmF0b3I4JiBnOCwgY29uc3QgR2VuZXJhdG9yOSYgZzkpIHsKKyAgcmV0dXJuIGludGVybmFsOjpD
YXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyOTxHZW5lcmF0b3IxLCBHZW5lcmF0b3IyLCBHZW5lcmF0b3Iz
LAorICAgICAgR2VuZXJhdG9yNCwgR2VuZXJhdG9yNSwgR2VuZXJhdG9yNiwgR2VuZXJhdG9yNywg
R2VuZXJhdG9yOCwgR2VuZXJhdG9yOT4oCisgICAgICBnMSwgZzIsIGczLCBnNCwgZzUsIGc2LCBn
NywgZzgsIGc5KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvcjEsIHR5cGVuYW1l
IEdlbmVyYXRvcjIsIHR5cGVuYW1lIEdlbmVyYXRvcjMsCisgICAgdHlwZW5hbWUgR2VuZXJhdG9y
NCwgdHlwZW5hbWUgR2VuZXJhdG9yNSwgdHlwZW5hbWUgR2VuZXJhdG9yNiwKKyAgICB0eXBlbmFt
ZSBHZW5lcmF0b3I3LCB0eXBlbmFtZSBHZW5lcmF0b3I4LCB0eXBlbmFtZSBHZW5lcmF0b3I5LAor
ICAgIHR5cGVuYW1lIEdlbmVyYXRvcjEwPgoraW50ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RIb2xk
ZXIxMDxHZW5lcmF0b3IxLCBHZW5lcmF0b3IyLCBHZW5lcmF0b3IzLAorICAgIEdlbmVyYXRvcjQs
IEdlbmVyYXRvcjUsIEdlbmVyYXRvcjYsIEdlbmVyYXRvcjcsIEdlbmVyYXRvcjgsIEdlbmVyYXRv
cjksCisgICAgR2VuZXJhdG9yMTA+IENvbWJpbmUoCisgICAgY29uc3QgR2VuZXJhdG9yMSYgZzEs
IGNvbnN0IEdlbmVyYXRvcjImIGcyLCBjb25zdCBHZW5lcmF0b3IzJiBnMywKKyAgICAgICAgY29u
c3QgR2VuZXJhdG9yNCYgZzQsIGNvbnN0IEdlbmVyYXRvcjUmIGc1LCBjb25zdCBHZW5lcmF0b3I2
JiBnNiwKKyAgICAgICAgY29uc3QgR2VuZXJhdG9yNyYgZzcsIGNvbnN0IEdlbmVyYXRvcjgmIGc4
LCBjb25zdCBHZW5lcmF0b3I5JiBnOSwKKyAgICAgICAgY29uc3QgR2VuZXJhdG9yMTAmIGcxMCkg
eworICByZXR1cm4gaW50ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RIb2xkZXIxMDxHZW5lcmF0b3Ix
LCBHZW5lcmF0b3IyLCBHZW5lcmF0b3IzLAorICAgICAgR2VuZXJhdG9yNCwgR2VuZXJhdG9yNSwg
R2VuZXJhdG9yNiwgR2VuZXJhdG9yNywgR2VuZXJhdG9yOCwgR2VuZXJhdG9yOSwKKyAgICAgIEdl
bmVyYXRvcjEwPigKKyAgICAgIGcxLCBnMiwgZzMsIGc0LCBnNSwgZzYsIGc3LCBnOCwgZzksIGcx
MCk7Cit9CisjIGVuZGlmICAvLyBHVEVTVF9IQVNfQ09NQklORQorCisKKworIyBkZWZpbmUgVEVT
VF9QKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIFwKKyAgY2xhc3MgR1RFU1RfVEVTVF9DTEFT
U19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSBcCisgICAgICA6IHB1YmxpYyB0ZXN0
X2Nhc2VfbmFtZSB7IFwKKyAgIHB1YmxpYzogXAorICAgIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8o
dGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkoKSB7fSBcCisgICAgdmlydHVhbCB2b2lkIFRlc3RC
b2R5KCk7IFwKKyAgIHByaXZhdGU6IFwKKyAgICBzdGF0aWMgaW50IEFkZFRvUmVnaXN0cnkoKSB7
IFwKKyAgICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPnBhcmFtZXRlcml6
ZWRfdGVzdF9yZWdpc3RyeSgpLiBcCisgICAgICAgICAgR2V0VGVzdENhc2VQYXR0ZXJuSG9sZGVy
PHRlc3RfY2FzZV9uYW1lPihcCisgICAgICAgICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgXAorICAg
ICAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpDb2RlTG9jYXRpb24oXAorICAgICAgICAg
ICAgICAgICAgX19GSUxFX18sIF9fTElORV9fKSktPkFkZFRlc3RQYXR0ZXJuKFwKKyAgICAgICAg
ICAgICAgICAgICAgICAjdGVzdF9jYXNlX25hbWUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAj
dGVzdF9uYW1lLCBcCisgICAgICAgICAgICAgICAgICAgICAgbmV3IDo6dGVzdGluZzo6aW50ZXJu
YWw6OlRlc3RNZXRhRmFjdG9yeTwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9U
RVNUX0NMQVNTX05BTUVfKFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfY2Fz
ZV9uYW1lLCB0ZXN0X25hbWUpPigpKTsgXAorICAgICAgcmV0dXJuIDA7IFwKKyAgICB9IFwKKyAg
ICBzdGF0aWMgaW50IGd0ZXN0X3JlZ2lzdGVyaW5nX2R1bW15XyBHVEVTVF9BVFRSSUJVVEVfVU5V
U0VEXzsgXAorICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oXAorICAgICAgICBH
VEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpKTsgXAorICB9
OyBcCisgIGludCBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCBcCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbmFtZSk6Omd0ZXN0X3JlZ2lzdGVyaW5nX2R1
bW15XyA9IFwKKyAgICAgIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRl
c3RfbmFtZSk6OkFkZFRvUmVnaXN0cnkoKTsgXAorICB2b2lkIEdURVNUX1RFU1RfQ0xBU1NfTkFN
RV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSk6OlRlc3RCb2R5KCkKKworLy8gVGhlIG9wdGlv
bmFsIGxhc3QgYXJndW1lbnQgdG8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AgYWxsb3dzIHRoZSB1
c2VyCisvLyB0byBzcGVjaWZ5IGEgZnVuY3Rpb24gb3IgZnVuY3RvciB0aGF0IGdlbmVyYXRlcyBj
dXN0b20gdGVzdCBuYW1lIHN1ZmZpeGVzCisvLyBiYXNlZCBvbiB0aGUgdGVzdCBwYXJhbWV0ZXJz
LiBUaGUgZnVuY3Rpb24gc2hvdWxkIGFjY2VwdCBvbmUgYXJndW1lbnQgb2YKKy8vIHR5cGUgdGVz
dGluZzo6VGVzdFBhcmFtSW5mbzxjbGFzcyBQYXJhbVR5cGU+LCBhbmQgcmV0dXJuIHN0ZDo6c3Ry
aW5nLgorLy8KKy8vIHRlc3Rpbmc6OlByaW50VG9TdHJpbmdQYXJhbU5hbWUgaXMgYSBidWlsdGlu
IHRlc3Qgc3VmZml4IGdlbmVyYXRvciB0aGF0CisvLyByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0ZXN0
aW5nOjpQcmludFRvU3RyaW5nKEdldFBhcmFtKCkpLiBJdCBkb2VzIG5vdCB3b3JrCisvLyBmb3Ig
c3RkOjpzdHJpbmcgb3IgQyBzdHJpbmdzLgorLy8KKy8vIE5vdGU6IHRlc3QgbmFtZXMgbXVzdCBi
ZSBub24tZW1wdHksIHVuaXF1ZSwgYW5kIG1heSBvbmx5IGNvbnRhaW4gQVNDSUkKKy8vIGFscGhh
bnVtZXJpYyBjaGFyYWN0ZXJzIG9yIHVuZGVyc2NvcmUuCisKKyMgZGVmaW5lIElOU1RBTlRJQVRF
X1RFU1RfQ0FTRV9QKHByZWZpeCwgdGVzdF9jYXNlX25hbWUsIGdlbmVyYXRvciwgLi4uKSBcCisg
IDo6dGVzdGluZzo6aW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPHRlc3RfY2FzZV9uYW1lOjpQYXJh
bVR5cGU+IFwKKyAgICAgIGd0ZXN0XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFtZSMjX0V2YWxHZW5l
cmF0b3JfKCkgeyByZXR1cm4gZ2VuZXJhdG9yOyB9IFwKKyAgOjpzdGQ6OnN0cmluZyBndGVzdF8j
I3ByZWZpeCMjdGVzdF9jYXNlX25hbWUjI19FdmFsR2VuZXJhdGVOYW1lXyggXAorICAgICAgY29u
c3QgOjp0ZXN0aW5nOjpUZXN0UGFyYW1JbmZvPHRlc3RfY2FzZV9uYW1lOjpQYXJhbVR5cGU+JiBp
bmZvKSB7IFwKKyAgICByZXR1cm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6R2V0UGFyYW1OYW1lR2Vu
PHRlc3RfY2FzZV9uYW1lOjpQYXJhbVR5cGU+IFwKKyAgICAgICAgKF9fVkFfQVJHU19fKShpbmZv
KTsgXAorICB9IFwKKyAgaW50IGd0ZXN0XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFtZSMjX2R1bW15
XyBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXyA9IFwKKyAgICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6
OkdldEluc3RhbmNlKCktPnBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3RyeSgpLiBcCisgICAgICAg
ICAgR2V0VGVzdENhc2VQYXR0ZXJuSG9sZGVyPHRlc3RfY2FzZV9uYW1lPihcCisgICAgICAgICAg
ICAgICN0ZXN0X2Nhc2VfbmFtZSwgXAorICAgICAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFs
OjpDb2RlTG9jYXRpb24oXAorICAgICAgICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fKSkt
PkFkZFRlc3RDYXNlSW5zdGFudGlhdGlvbihcCisgICAgICAgICAgICAgICAgICAgICAgI3ByZWZp
eCwgXAorICAgICAgICAgICAgICAgICAgICAgICZndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25h
bWUjI19FdmFsR2VuZXJhdG9yXywgXAorICAgICAgICAgICAgICAgICAgICAgICZndGVzdF8jI3By
ZWZpeCMjdGVzdF9jYXNlX25hbWUjI19FdmFsR2VuZXJhdGVOYW1lXywgXAorICAgICAgICAgICAg
ICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXykKKworfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcK
KworI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAorCisjZW5kaWYgIC8vIEdURVNUX0lO
Q0xVREVfR1RFU1RfR1RFU1RfUEFSQU1fVEVTVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
aW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmgucHVtcCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1
ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oLnB1bXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzA3OGQ2ZDJhMTlk
NzkxOGVkM2M3NTZhYmNmY2I0OTkzN2UxNmViMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0
ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oLnB1bXAKQEAgLTAsMCArMSw1MTAg
QEAKKyQkIC0qLSBtb2RlOiBjKys7IC0qLQorJHZhciBuID0gNTAgICQkIE1heGltdW0gbGVuZ3Ro
IG9mIFZhbHVlcyBhcmd1bWVudHMgd2Ugd2FudCB0byBzdXBwb3J0LgorJHZhciBtYXh0dXBsZSA9
IDEwICAkJCBNYXhpbXVtIG51bWJlciBvZiBDb21iaW5lIGFyZ3VtZW50cyB3ZSB3YW50IHRvIHN1
cHBvcnQuCisvLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLwor
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisv
LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLwor
Ly8gQXV0aG9yczogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKKy8vCisvLyBNYWNyb3Mg
YW5kIGZ1bmN0aW9ucyBmb3IgaW1wbGVtZW50aW5nIHBhcmFtZXRlcml6ZWQgdGVzdHMKKy8vIGlu
IEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8KKy8vIFRoaXMg
ZmlsZSBpcyBnZW5lcmF0ZWQgYnkgYSBTQ1JJUFQuICBETyBOT1QgRURJVCBCWSBIQU5EIQorLy8K
KyNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QQVJBTV9URVNUX0hfCisjZGVmaW5l
IEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUEFSQU1fVEVTVF9IXworCisKKy8vIFZhbHVlLXBh
cmFtZXRlcml6ZWQgdGVzdHMgYWxsb3cgeW91IHRvIHRlc3QgeW91ciBjb2RlIHdpdGggZGlmZmVy
ZW50CisvLyBwYXJhbWV0ZXJzIHdpdGhvdXQgd3JpdGluZyBtdWx0aXBsZSBjb3BpZXMgb2YgdGhl
IHNhbWUgdGVzdC4KKy8vCisvLyBIZXJlIGlzIGhvdyB5b3UgdXNlIHZhbHVlLXBhcmFtZXRlcml6
ZWQgdGVzdHM6CisKKyNpZiAwCisKKy8vIFRvIHdyaXRlIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVz
dHMsIGZpcnN0IHlvdSBzaG91bGQgZGVmaW5lIGEgZml4dHVyZQorLy8gY2xhc3MuIEl0IGlzIHVz
dWFsbHkgZGVyaXZlZCBmcm9tIHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08VD4gKHNlZSBiZWxvdyBm
b3IKKy8vIGFub3RoZXIgaW5oZXJpdGFuY2Ugc2NoZW1lIHRoYXQncyBzb21ldGltZXMgdXNlZnVs
IGluIG1vcmUgY29tcGxpY2F0ZWQKKy8vIGNsYXNzIGhpZXJhcmNoaWVzKSwgd2hlcmUgdGhlIHR5
cGUgb2YgeW91ciBwYXJhbWV0ZXIgdmFsdWVzLgorLy8gVGVzdFdpdGhQYXJhbTxUPiBpcyBpdHNl
bGYgZGVyaXZlZCBmcm9tIHRlc3Rpbmc6OlRlc3QuIFQgY2FuIGJlIGFueQorLy8gY29weWFibGUg
dHlwZS4gSWYgaXQncyBhIHJhdyBwb2ludGVyLCB5b3UgYXJlIHJlc3BvbnNpYmxlIGZvciBtYW5h
Z2luZyB0aGUKKy8vIGxpZmVzcGFuIG9mIHRoZSBwb2ludGVkIHZhbHVlcy4KKworY2xhc3MgRm9v
VGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08Y29uc3QgY2hhcio+IHsKKyAg
Ly8gWW91IGNhbiBpbXBsZW1lbnQgYWxsIHRoZSB1c3VhbCBjbGFzcyBmaXh0dXJlIG1lbWJlcnMg
aGVyZS4KK307CisKKy8vIFRoZW4sIHVzZSB0aGUgVEVTVF9QIG1hY3JvIHRvIGRlZmluZSBhcyBt
YW55IHBhcmFtZXRlcml6ZWQgdGVzdHMKKy8vIGZvciB0aGlzIGZpeHR1cmUgYXMgeW91IHdhbnQu
IFRoZSBfUCBzdWZmaXggaXMgZm9yICJwYXJhbWV0ZXJpemVkIgorLy8gb3IgInBhdHRlcm4iLCB3
aGljaGV2ZXIgeW91IHByZWZlciB0byB0aGluay4KKworVEVTVF9QKEZvb1Rlc3QsIERvZXNCbGFo
KSB7CisgIC8vIEluc2lkZSBhIHRlc3QsIGFjY2VzcyB0aGUgdGVzdCBwYXJhbWV0ZXIgd2l0aCB0
aGUgR2V0UGFyYW0oKSBtZXRob2QKKyAgLy8gb2YgdGhlIFRlc3RXaXRoUGFyYW08VD4gY2xhc3M6
CisgIEVYUEVDVF9UUlVFKGZvby5CbGFoKEdldFBhcmFtKCkpKTsKKyAgLi4uCit9CisKK1RFU1Rf
UChGb29UZXN0LCBIYXNCbGFoQmxhaCkgeworICAuLi4KK30KKworLy8gRmluYWxseSwgeW91IGNh
biB1c2UgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AgdG8gaW5zdGFudGlhdGUgdGhlIHRlc3QKKy8v
IGNhc2Ugd2l0aCBhbnkgc2V0IG9mIHBhcmFtZXRlcnMgeW91IHdhbnQuIEdvb2dsZSBUZXN0IGRl
ZmluZXMgYSBudW1iZXIKKy8vIG9mIGZ1bmN0aW9ucyBmb3IgZ2VuZXJhdGluZyB0ZXN0IHBhcmFt
ZXRlcnMuIFRoZXkgcmV0dXJuIHdoYXQgd2UgY2FsbAorLy8gKHN1cnByaXNlISkgcGFyYW1ldGVy
IGdlbmVyYXRvcnMuIEhlcmUgaXMgYSAgc3VtbWFyeSBvZiB0aGVtLCB3aGljaAorLy8gYXJlIGFs
bCBpbiB0aGUgdGVzdGluZyBuYW1lc3BhY2U6CisvLworLy8KKy8vICBSYW5nZShiZWdpbiwgZW5k
IFssIHN0ZXBdKSAtIFlpZWxkcyB2YWx1ZXMge2JlZ2luLCBiZWdpbitzdGVwLAorLy8gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW4rc3RlcCtzdGVwLCAuLi59LiBUaGUgdmFsdWVz
IGRvIG5vdAorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSBlbmQuIHN0
ZXAgZGVmYXVsdHMgdG8gMS4KKy8vICBWYWx1ZXModjEsIHYyLCAuLi4sIHZOKSAgICAtIFlpZWxk
cyB2YWx1ZXMge3YxLCB2MiwgLi4uLCB2Tn0uCisvLyAgVmFsdWVzSW4oY29udGFpbmVyKSAgICAg
ICAgLSBZaWVsZHMgdmFsdWVzIGZyb20gYSBDLXN0eWxlIGFycmF5LCBhbiBTVEwKKy8vICBWYWx1
ZXNJbihiZWdpbixlbmQpICAgICAgICAgIGNvbnRhaW5lciwgb3IgYW4gaXRlcmF0b3IgcmFuZ2Ug
W2JlZ2luLCBlbmQpLgorLy8gIEJvb2woKSAgICAgICAgICAgICAgICAgICAgIC0gWWllbGRzIHNl
cXVlbmNlIHtmYWxzZSwgdHJ1ZX0uCisvLyAgQ29tYmluZShnMSwgZzIsIC4uLiwgZ04pICAgLSBZ
aWVsZHMgYWxsIGNvbWJpbmF0aW9ucyAodGhlIENhcnRlc2lhbiBwcm9kdWN0CisvLyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIG1hdGggc2F2dnkpIG9mIHRoZSB2YWx1ZXMg
Z2VuZXJhdGVkCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSB0aGUgTiBnZW5l
cmF0b3JzLgorLy8KKy8vIEZvciBtb3JlIGRldGFpbHMsIHNlZSBjb21tZW50cyBhdCB0aGUgZGVm
aW5pdGlvbnMgb2YgdGhlc2UgZnVuY3Rpb25zIGJlbG93CisvLyBpbiB0aGlzIGZpbGUuCisvLwor
Ly8gVGhlIGZvbGxvd2luZyBzdGF0ZW1lbnQgd2lsbCBpbnN0YW50aWF0ZSB0ZXN0cyBmcm9tIHRo
ZSBGb29UZXN0IHRlc3QgY2FzZQorLy8gZWFjaCB3aXRoIHBhcmFtZXRlciB2YWx1ZXMgIm1lZW55
IiwgIm1pbnkiLCBhbmQgIm1vZSIuCisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEluc3RhbnRp
YXRpb25OYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgRm9vVGVzdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbHVlcygibWVlbnkiLCAibWlueSIsICJtb2UiKSk7CisKKy8vIFRvIGRp
c3Rpbmd1aXNoIGRpZmZlcmVudCBpbnN0YW5jZXMgb2YgdGhlIHBhdHRlcm4sICh5ZXMsIHlvdQor
Ly8gY2FuIGluc3RhbnRpYXRlIGl0IG1vcmUgdGhlbiBvbmNlKSB0aGUgZmlyc3QgYXJndW1lbnQg
dG8gdGhlCisvLyBJTlNUQU5USUFURV9URVNUX0NBU0VfUCBtYWNybyBpcyBhIHByZWZpeCB0aGF0
IHdpbGwgYmUgYWRkZWQgdG8gdGhlCisvLyBhY3R1YWwgdGVzdCBjYXNlIG5hbWUuIFJlbWVtYmVy
IHRvIHBpY2sgdW5pcXVlIHByZWZpeGVzIGZvciBkaWZmZXJlbnQKKy8vIGluc3RhbnRpYXRpb25z
LiBUaGUgdGVzdHMgZnJvbSB0aGUgaW5zdGFudGlhdGlvbiBhYm92ZSB3aWxsIGhhdmUKKy8vIHRo
ZXNlIG5hbWVzOgorLy8KKy8vICAgICogSW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxh
aC8wIGZvciAibWVlbnkiCisvLyAgICAqIEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuRG9lc0Js
YWgvMSBmb3IgIm1pbnkiCisvLyAgICAqIEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuRG9lc0Js
YWgvMiBmb3IgIm1vZSIKKy8vICAgICogSW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5IYXNCbGFo
QmxhaC8wIGZvciAibWVlbnkiCisvLyAgICAqIEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuSGFz
QmxhaEJsYWgvMSBmb3IgIm1pbnkiCisvLyAgICAqIEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3Qu
SGFzQmxhaEJsYWgvMiBmb3IgIm1vZSIKKy8vCisvLyBZb3UgY2FuIHVzZSB0aGVzZSBuYW1lcyBp
biAtLWd0ZXN0X2ZpbHRlci4KKy8vCisvLyBUaGlzIHN0YXRlbWVudCB3aWxsIGluc3RhbnRpYXRl
IGFsbCB0ZXN0cyBmcm9tIEZvb1Rlc3QgYWdhaW4sIGVhY2gKKy8vIHdpdGggcGFyYW1ldGVyIHZh
bHVlcyAiY2F0IiBhbmQgImRvZyI6CisKK2NvbnN0IGNoYXIqIHBldHNbXSA9IHsiY2F0IiwgImRv
ZyJ9OworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoQW5vdGhlckluc3RhbnRpYXRpb25OYW1lLCBG
b29UZXN0LCBWYWx1ZXNJbihwZXRzKSk7CisKKy8vIFRoZSB0ZXN0cyBmcm9tIHRoZSBpbnN0YW50
aWF0aW9uIGFib3ZlIHdpbGwgaGF2ZSB0aGVzZSBuYW1lczoKKy8vCisvLyAgICAqIEFub3RoZXJJ
bnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzAgZm9yICJjYXQiCisvLyAgICAqIEFu
b3RoZXJJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzEgZm9yICJkb2ciCisvLyAg
ICAqIEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0JsYWhCbGFoLzAgZm9yICJj
YXQiCisvLyAgICAqIEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0JsYWhCbGFo
LzEgZm9yICJkb2ciCisvLworLy8gUGxlYXNlIG5vdGUgdGhhdCBJTlNUQU5USUFURV9URVNUX0NB
U0VfUCB3aWxsIGluc3RhbnRpYXRlIGFsbCB0ZXN0cworLy8gaW4gdGhlIGdpdmVuIHRlc3QgY2Fz
ZSwgd2hldGhlciB0aGVpciBkZWZpbml0aW9ucyBjb21lIGJlZm9yZSBvcgorLy8gQUZURVIgdGhl
IElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QIHN0YXRlbWVudC4KKy8vCisvLyBQbGVhc2UgYWxzbyBu
b3RlIHRoYXQgZ2VuZXJhdG9yIGV4cHJlc3Npb25zIChpbmNsdWRpbmcgcGFyYW1ldGVycyB0byB0
aGUKKy8vIGdlbmVyYXRvcnMpIGFyZSBldmFsdWF0ZWQgaW4gSW5pdEdvb2dsZVRlc3QoKSwgYWZ0
ZXIgbWFpbigpIGhhcyBzdGFydGVkLgorLy8gVGhpcyBhbGxvd3MgdGhlIHVzZXIgb24gb25lIGhh
bmQsIHRvIGFkanVzdCBnZW5lcmF0b3IgcGFyYW1ldGVycyBpbiBvcmRlcgorLy8gdG8gZHluYW1p
Y2FsbHkgZGV0ZXJtaW5lIGEgc2V0IG9mIHRlc3RzIHRvIHJ1biBhbmQgb24gdGhlIG90aGVyIGhh
bmQsCisvLyBnaXZlIHRoZSB1c2VyIGEgY2hhbmNlIHRvIGluc3BlY3QgdGhlIGdlbmVyYXRlZCB0
ZXN0cyB3aXRoIEdvb2dsZSBUZXN0CisvLyByZWZsZWN0aW9uIEFQSSBiZWZvcmUgUlVOX0FMTF9U
RVNUUygpIGlzIGV4ZWN1dGVkLgorLy8KKy8vIFlvdSBjYW4gc2VlIHNhbXBsZXMvc2FtcGxlN191
bml0dGVzdC5jYyBhbmQgc2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNjCisvLyBmb3IgbW9yZSBl
eGFtcGxlcy4KKy8vCisvLyBJbiB0aGUgZnV0dXJlLCB3ZSBwbGFuIHRvIHB1Ymxpc2ggdGhlIEFQ
SSBmb3IgZGVmaW5pbmcgbmV3IHBhcmFtZXRlcgorLy8gZ2VuZXJhdG9ycy4gQnV0IGZvciBub3cg
dGhpcyBpbnRlcmZhY2UgcmVtYWlucyBwYXJ0IG9mIHRoZSBpbnRlcm5hbAorLy8gaW1wbGVtZW50
YXRpb24gYW5kIGlzIHN1YmplY3QgdG8gY2hhbmdlLgorLy8KKy8vCisvLyBBIHBhcmFtZXRlcml6
ZWQgdGVzdCBmaXh0dXJlIG11c3QgYmUgZGVyaXZlZCBmcm9tIHRlc3Rpbmc6OlRlc3QgYW5kIGZy
b20KKy8vIHRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxUPiwgd2hlcmUgVCBpcyB0aGUgdHlw
ZSBvZiB0aGUgcGFyYW1ldGVyCisvLyB2YWx1ZXMuIEluaGVyaXRpbmcgZnJvbSBUZXN0V2l0aFBh
cmFtPFQ+IHNhdGlzZmllcyB0aGF0IHJlcXVpcmVtZW50IGJlY2F1c2UKKy8vIFRlc3RXaXRoUGFy
YW08VD4gaW5oZXJpdHMgZnJvbSBib3RoIFRlc3QgYW5kIFdpdGhQYXJhbUludGVyZmFjZS4gSW4g
bW9yZQorLy8gY29tcGxpY2F0ZWQgaGllcmFyY2hpZXMsIGhvd2V2ZXIsIGl0IGlzIG9jY2FzaW9u
YWxseSB1c2VmdWwgdG8gaW5oZXJpdAorLy8gc2VwYXJhdGVseSBmcm9tIFRlc3QgYW5kIFdpdGhQ
YXJhbUludGVyZmFjZS4gRm9yIGV4YW1wbGU6CisKK2NsYXNzIEJhc2VUZXN0IDogcHVibGljIDo6
dGVzdGluZzo6VGVzdCB7CisgIC8vIFlvdSBjYW4gaW5oZXJpdCBhbGwgdGhlIHVzdWFsIG1lbWJl
cnMgZm9yIGEgbm9uLXBhcmFtZXRlcml6ZWQgdGVzdAorICAvLyBmaXh0dXJlIGhlcmUuCit9Owor
CitjbGFzcyBEZXJpdmVkVGVzdCA6IHB1YmxpYyBCYXNlVGVzdCwgcHVibGljIDo6dGVzdGluZzo6
V2l0aFBhcmFtSW50ZXJmYWNlPGludD4geworICAvLyBUaGUgdXN1YWwgdGVzdCBmaXh0dXJlIG1l
bWJlcnMgZ28gaGVyZSB0b28uCit9OworCitURVNUX0YoQmFzZVRlc3QsIEhhc0ZvbykgeworICAv
LyBUaGlzIGlzIGFuIG9yZGluYXJ5IG5vbi1wYXJhbWV0ZXJpemVkIHRlc3QuCit9CisKK1RFU1Rf
UChEZXJpdmVkVGVzdCwgRG9lc0JsYWgpIHsKKyAgLy8gR2V0UGFyYW0gd29ya3MganVzdCB0aGUg
c2FtZSBoZXJlIGFzIGlmIHlvdSBpbmhlcml0IGZyb20gVGVzdFdpdGhQYXJhbS4KKyAgRVhQRUNU
X1RSVUUoZm9vLkJsYWgoR2V0UGFyYW0oKSkpOworfQorCisjZW5kaWYgIC8vIDAKKworI2luY2x1
ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKKworI2lmICFHVEVTVF9PU19TWU1CSUFO
CisjIGluY2x1ZGUgPHV0aWxpdHk+CisjZW5kaWYKKworLy8gc2NyaXB0cy9mdXNlX2d0ZXN0LnB5
IGRlcGVuZHMgb24gZ3Rlc3QncyBvd24gaGVhZGVyIGJlaW5nICNpbmNsdWRlZAorLy8gKnVuY29u
ZGl0aW9uYWxseSouICBUaGVyZWZvcmUgdGhlc2UgI2luY2x1ZGVzIGNhbm5vdCBiZSBtb3ZlZAor
Ly8gaW5zaWRlICNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVC4KKyNpbmNsdWRlICJndGVzdC9pbnRl
cm5hbC9ndGVzdC1pbnRlcm5hbC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBh
cmFtLXV0aWwuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdl
bmVyYXRlZC5oIgorCisjaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKKworbmFtZXNwYWNlIHRlc3Rp
bmcgeworCisvLyBGdW5jdGlvbnMgcHJvZHVjaW5nIHBhcmFtZXRlciBnZW5lcmF0b3JzLgorLy8K
Ky8vIEdvb2dsZSBUZXN0IHVzZXMgdGhlc2UgZ2VuZXJhdG9ycyB0byBwcm9kdWNlIHBhcmFtZXRl
cnMgZm9yIHZhbHVlLQorLy8gcGFyYW1ldGVyaXplZCB0ZXN0cy4gV2hlbiBhIHBhcmFtZXRlcml6
ZWQgdGVzdCBjYXNlIGlzIGluc3RhbnRpYXRlZAorLy8gd2l0aCBhIHBhcnRpY3VsYXIgZ2VuZXJh
dG9yLCBHb29nbGUgVGVzdCBjcmVhdGVzIGFuZCBydW5zIHRlc3RzCisvLyBmb3IgZWFjaCBlbGVt
ZW50IGluIHRoZSBzZXF1ZW5jZSBwcm9kdWNlZCBieSB0aGUgZ2VuZXJhdG9yLgorLy8KKy8vIElu
IHRoZSBmb2xsb3dpbmcgc2FtcGxlLCB0ZXN0cyBmcm9tIHRlc3QgY2FzZSBGb29UZXN0IGFyZSBp
bnN0YW50aWF0ZWQKKy8vIGVhY2ggdGhyZWUgdGltZXMgd2l0aCBwYXJhbWV0ZXIgdmFsdWVzIDMs
IDUsIGFuZCA4OgorLy8KKy8vIGNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxp
bnQ+IHsgLi4uIH07CisvLworLy8gVEVTVF9QKEZvb1Rlc3QsIFRlc3RUaGlzKSB7CisvLyB9Cisv
LyBURVNUX1AoRm9vVGVzdCwgVGVzdFRoYXQpIHsKKy8vIH0KKy8vIElOU1RBTlRJQVRFX1RFU1Rf
Q0FTRV9QKFRlc3RTZXF1ZW5jZSwgRm9vVGVzdCwgVmFsdWVzKDMsIDUsIDgpKTsKKy8vCisKKy8v
IFJhbmdlKCkgcmV0dXJucyBnZW5lcmF0b3JzIHByb3ZpZGluZyBzZXF1ZW5jZXMgb2YgdmFsdWVz
IGluIGEgcmFuZ2UuCisvLworLy8gU3lub3BzaXM6CisvLyBSYW5nZShzdGFydCwgZW5kKQorLy8g
ICAtIHJldHVybnMgYSBnZW5lcmF0b3IgcHJvZHVjaW5nIGEgc2VxdWVuY2Ugb2YgdmFsdWVzIHtz
dGFydCwgc3RhcnQrMSwKKy8vICAgICBzdGFydCsyLCAuLi4sIH0uCisvLyBSYW5nZShzdGFydCwg
ZW5kLCBzdGVwKQorLy8gICAtIHJldHVybnMgYSBnZW5lcmF0b3IgcHJvZHVjaW5nIGEgc2VxdWVu
Y2Ugb2YgdmFsdWVzIHtzdGFydCwgc3RhcnQrc3RlcCwKKy8vICAgICBzdGFydCtzdGVwK3N0ZXAs
IC4uLiwgfS4KKy8vIE5vdGVzOgorLy8gICAqIFRoZSBnZW5lcmF0ZWQgc2VxdWVuY2VzIG5ldmVy
IGluY2x1ZGUgZW5kLiBGb3IgZXhhbXBsZSwgUmFuZ2UoMSwgNSkKKy8vICAgICByZXR1cm5zIGEg
Z2VuZXJhdG9yIHByb2R1Y2luZyBhIHNlcXVlbmNlIHsxLCAyLCAzLCA0fS4gUmFuZ2UoMSwgOSwg
MikKKy8vICAgICByZXR1cm5zIGEgZ2VuZXJhdG9yIHByb2R1Y2luZyB7MSwgMywgNSwgN30uCisv
LyAgICogc3RhcnQgYW5kIGVuZCBtdXN0IGhhdmUgdGhlIHNhbWUgdHlwZS4gVGhhdCB0eXBlIG1h
eSBiZSBhbnkgaW50ZWdyYWwgb3IKKy8vICAgICBmbG9hdGluZy1wb2ludCB0eXBlIG9yIGEgdXNl
ciBkZWZpbmVkIHR5cGUgc2F0aXNmeWluZyB0aGVzZSBjb25kaXRpb25zOgorLy8gICAgICogSXQg
bXVzdCBiZSBhc3NpZ25hYmxlIChoYXZlIG9wZXJhdG9yPSgpIGRlZmluZWQpLgorLy8gICAgICog
SXQgbXVzdCBoYXZlIG9wZXJhdG9yKygpIChvcGVyYXRvcisoaW50LWNvbXBhdGlibGUgdHlwZSkg
Zm9yCisvLyAgICAgICB0d28tb3BlcmFuZCB2ZXJzaW9uKS4KKy8vICAgICAqIEl0IG11c3QgaGF2
ZSBvcGVyYXRvcjwoKSBkZWZpbmVkLgorLy8gICAgIEVsZW1lbnRzIGluIHRoZSByZXN1bHRpbmcg
c2VxdWVuY2VzIHdpbGwgYWxzbyBoYXZlIHRoYXQgdHlwZS4KKy8vICAgKiBDb25kaXRpb24gc3Rh
cnQgPCBlbmQgbXVzdCBiZSBzYXRpc2ZpZWQgaW4gb3JkZXIgZm9yIHJlc3VsdGluZyBzZXF1ZW5j
ZXMKKy8vICAgICB0byBjb250YWluIGFueSBlbGVtZW50cy4KKy8vCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgSW5jcmVtZW50VD4KK2ludGVybmFsOjpQYXJhbUdlbmVyYXRvcjxUPiBS
YW5nZShUIHN0YXJ0LCBUIGVuZCwgSW5jcmVtZW50VCBzdGVwKSB7CisgIHJldHVybiBpbnRlcm5h
bDo6UGFyYW1HZW5lcmF0b3I8VD4oCisgICAgICBuZXcgaW50ZXJuYWw6OlJhbmdlR2VuZXJhdG9y
PFQsIEluY3JlbWVudFQ+KHN0YXJ0LCBlbmQsIHN0ZXApKTsKK30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CitpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8VD4gUmFuZ2UoVCBzdGFydCwgVCBlbmQp
IHsKKyAgcmV0dXJuIFJhbmdlKHN0YXJ0LCBlbmQsIDEpOworfQorCisvLyBWYWx1ZXNJbigpIGZ1
bmN0aW9uIGFsbG93cyBnZW5lcmF0aW9uIG9mIHRlc3RzIHdpdGggcGFyYW1ldGVycyBjb21pbmcg
ZnJvbQorLy8gYSBjb250YWluZXIuCisvLworLy8gU3lub3BzaXM6CisvLyBWYWx1ZXNJbihjb25z
dCBUICgmYXJyYXkpW05dKQorLy8gICAtIHJldHVybnMgYSBnZW5lcmF0b3IgcHJvZHVjaW5nIHNl
cXVlbmNlcyB3aXRoIGVsZW1lbnRzIGZyb20KKy8vICAgICBhIEMtc3R5bGUgYXJyYXkuCisvLyBW
YWx1ZXNJbihjb25zdCBDb250YWluZXImIGNvbnRhaW5lcikKKy8vICAgLSByZXR1cm5zIGEgZ2Vu
ZXJhdG9yIHByb2R1Y2luZyBzZXF1ZW5jZXMgd2l0aCBlbGVtZW50cyBmcm9tCisvLyAgICAgYW4g
U1RMLXN0eWxlIGNvbnRhaW5lci4KKy8vIFZhbHVlc0luKEl0ZXJhdG9yIGJlZ2luLCBJdGVyYXRv
ciBlbmQpCisvLyAgIC0gcmV0dXJucyBhIGdlbmVyYXRvciBwcm9kdWNpbmcgc2VxdWVuY2VzIHdp
dGggZWxlbWVudHMgZnJvbQorLy8gICAgIGEgcmFuZ2UgW2JlZ2luLCBlbmQpIGRlZmluZWQgYnkg
YSBwYWlyIG9mIFNUTC1zdHlsZSBpdGVyYXRvcnMuIFRoZXNlCisvLyAgICAgaXRlcmF0b3JzIGNh
biBhbHNvIGJlIHBsYWluIEMgcG9pbnRlcnMuCisvLworLy8gUGxlYXNlIG5vdGUgdGhhdCBWYWx1
ZXNJbiBjb3BpZXMgdGhlIHZhbHVlcyBmcm9tIHRoZSBjb250YWluZXJzCisvLyBwYXNzZWQgaW4g
YW5kIGtlZXBzIHRoZW0gdG8gZ2VuZXJhdGUgdGVzdHMgaW4gUlVOX0FMTF9URVNUUygpLgorLy8K
Ky8vIEV4YW1wbGVzOgorLy8KKy8vIFRoaXMgaW5zdGFudGlhdGVzIHRlc3RzIGZyb20gdGVzdCBj
YXNlIFN0cmluZ1Rlc3QKKy8vIGVhY2ggd2l0aCBDLXN0cmluZyB2YWx1ZXMgb2YgImZvbyIsICJi
YXIiLCBhbmQgImJheiI6CisvLworLy8gY29uc3QgY2hhciogc3RyaW5nc1tdID0geyJmb28iLCAi
YmFyIiwgImJheiJ9OworLy8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU3RyaW5nU2VxdWVuY2Us
IFNydGluZ1Rlc3QsIFZhbHVlc0luKHN0cmluZ3MpKTsKKy8vCisvLyBUaGlzIGluc3RhbnRpYXRl
cyB0ZXN0cyBmcm9tIHRlc3QgY2FzZSBTdGxTdHJpbmdUZXN0CisvLyBlYWNoIHdpdGggU1RMIHN0
cmluZ3Mgd2l0aCB2YWx1ZXMgImEiIGFuZCAiYiI6CisvLworLy8gOjpzdGQ6OnZlY3RvcjwgOjpz
dGQ6OnN0cmluZz4gR2V0UGFyYW1ldGVyU3RyaW5ncygpIHsKKy8vICAgOjpzdGQ6OnZlY3Rvcjwg
OjpzdGQ6OnN0cmluZz4gdjsKKy8vICAgdi5wdXNoX2JhY2soImEiKTsKKy8vICAgdi5wdXNoX2Jh
Y2soImIiKTsKKy8vICAgcmV0dXJuIHY7CisvLyB9CisvLworLy8gSU5TVEFOVElBVEVfVEVTVF9D
QVNFX1AoQ2hhclNlcXVlbmNlLAorLy8gICAgICAgICAgICAgICAgICAgICAgICAgU3RsU3RyaW5n
VGVzdCwKKy8vICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlc0luKEdldFBhcmFtZXRlclN0
cmluZ3MoKSkpOworLy8KKy8vCisvLyBUaGlzIHdpbGwgYWxzbyBpbnN0YW50aWF0ZSB0ZXN0cyBm
cm9tIENoYXJUZXN0CisvLyBlYWNoIHdpdGggcGFyYW1ldGVyIHZhbHVlcyAnYScgYW5kICdiJzoK
Ky8vCisvLyA6OnN0ZDo6bGlzdDxjaGFyPiBHZXRQYXJhbWV0ZXJDaGFycygpIHsKKy8vICAgOjpz
dGQ6Omxpc3Q8Y2hhcj4gbGlzdDsKKy8vICAgbGlzdC5wdXNoX2JhY2soJ2EnKTsKKy8vICAgbGlz
dC5wdXNoX2JhY2soJ2InKTsKKy8vICAgcmV0dXJuIGxpc3Q7CisvLyB9CisvLyA6OnN0ZDo6bGlz
dDxjaGFyPiBsID0gR2V0UGFyYW1ldGVyQ2hhcnMoKTsKKy8vIElOU1RBTlRJQVRFX1RFU1RfQ0FT
RV9QKENoYXJTZXF1ZW5jZTIsCisvLyAgICAgICAgICAgICAgICAgICAgICAgICBDaGFyVGVzdCwK
Ky8vICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlc0luKGwuYmVnaW4oKSwgbC5lbmQoKSkp
OworLy8KK3RlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3I+CitpbnRlcm5hbDo6UGFy
YW1HZW5lcmF0b3I8CisgIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6Okl0ZXJhdG9yVHJh
aXRzPEZvcndhcmRJdGVyYXRvcj46OnZhbHVlX3R5cGU+CitWYWx1ZXNJbihGb3J3YXJkSXRlcmF0
b3IgYmVnaW4sIEZvcndhcmRJdGVyYXRvciBlbmQpIHsKKyAgdHlwZWRlZiB0eXBlbmFtZSA6OnRl
c3Rpbmc6OmludGVybmFsOjpJdGVyYXRvclRyYWl0czxGb3J3YXJkSXRlcmF0b3I+CisgICAgICA6
OnZhbHVlX3R5cGUgUGFyYW1UeXBlOworICByZXR1cm4gaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9y
PFBhcmFtVHlwZT4oCisgICAgICBuZXcgaW50ZXJuYWw6OlZhbHVlc0luSXRlcmF0b3JSYW5nZUdl
bmVyYXRvcjxQYXJhbVR5cGU+KGJlZ2luLCBlbmQpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQsIHNpemVfdCBOPgoraW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPFQ+IFZhbHVlc0luKGNvbnN0
IFQgKCZhcnJheSlbTl0pIHsKKyAgcmV0dXJuIFZhbHVlc0luKGFycmF5LCBhcnJheSArIE4pOwor
fQorCit0ZW1wbGF0ZSA8Y2xhc3MgQ29udGFpbmVyPgoraW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9y
PHR5cGVuYW1lIENvbnRhaW5lcjo6dmFsdWVfdHlwZT4gVmFsdWVzSW4oCisgICAgY29uc3QgQ29u
dGFpbmVyJiBjb250YWluZXIpIHsKKyAgcmV0dXJuIFZhbHVlc0luKGNvbnRhaW5lci5iZWdpbigp
LCBjb250YWluZXIuZW5kKCkpOworfQorCisvLyBWYWx1ZXMoKSBhbGxvd3MgZ2VuZXJhdGluZyB0
ZXN0cyBmcm9tIGV4cGxpY2l0bHkgc3BlY2lmaWVkIGxpc3Qgb2YKKy8vIHBhcmFtZXRlcnMuCisv
LworLy8gU3lub3BzaXM6CisvLyBWYWx1ZXMoVCB2MSwgVCB2MiwgLi4uLCBUIHZOKQorLy8gICAt
IHJldHVybnMgYSBnZW5lcmF0b3IgcHJvZHVjaW5nIHNlcXVlbmNlcyB3aXRoIGVsZW1lbnRzIHYx
LCB2MiwgLi4uLCB2Ti4KKy8vCisvLyBGb3IgZXhhbXBsZSwgdGhpcyBpbnN0YW50aWF0ZXMgdGVz
dHMgZnJvbSB0ZXN0IGNhc2UgQmFyVGVzdCBlYWNoCisvLyB3aXRoIHZhbHVlcyAib25lIiwgInR3
byIsIGFuZCAidGhyZWUiOgorLy8KKy8vIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKE51bVNlcXVl
bmNlLCBCYXJUZXN0LCBWYWx1ZXMoIm9uZSIsICJ0d28iLCAidGhyZWUiKSk7CisvLworLy8gVGhp
cyBpbnN0YW50aWF0ZXMgdGVzdHMgZnJvbSB0ZXN0IGNhc2UgQmF6VGVzdCBlYWNoIHdpdGggdmFs
dWVzIDEsIDIsIDMuNS4KKy8vIFRoZSBleGFjdCB0eXBlIG9mIHZhbHVlcyB3aWxsIGRlcGVuZCBv
biB0aGUgdHlwZSBvZiBwYXJhbWV0ZXIgaW4gQmF6VGVzdC4KKy8vCisvLyBJTlNUQU5USUFURV9U
RVNUX0NBU0VfUChGbG9hdGluZ051bWJlcnMsIEJhelRlc3QsIFZhbHVlcygxLCAyLCAzLjUpKTsK
Ky8vCisvLyBDdXJyZW50bHksIFZhbHVlcygpIHN1cHBvcnRzIGZyb20gMSB0byAkbiBwYXJhbWV0
ZXJzLgorLy8KKyRyYW5nZSBpIDEuLm4KKyRmb3IgaSBbWworJHJhbmdlIGogMS4uaQorCit0ZW1w
bGF0ZSA8JGZvciBqLCBbW3R5cGVuYW1lIFQkal1dPgoraW50ZXJuYWw6OlZhbHVlQXJyYXkkaTwk
Zm9yIGosIFtbVCRqXV0+IFZhbHVlcygkZm9yIGosIFtbVCRqIHYkal1dKSB7CisgIHJldHVybiBp
bnRlcm5hbDo6VmFsdWVBcnJheSRpPCRmb3IgaiwgW1tUJGpdXT4oJGZvciBqLCBbW3Ykal1dKTsK
K30KKworXV0KKworLy8gQm9vbCgpIGFsbG93cyBnZW5lcmF0aW5nIHRlc3RzIHdpdGggcGFyYW1l
dGVycyBpbiBhIHNldCBvZiAoZmFsc2UsIHRydWUpLgorLy8KKy8vIFN5bm9wc2lzOgorLy8gQm9v
bCgpCisvLyAgIC0gcmV0dXJucyBhIGdlbmVyYXRvciBwcm9kdWNpbmcgc2VxdWVuY2VzIHdpdGgg
ZWxlbWVudHMge2ZhbHNlLCB0cnVlfS4KKy8vCisvLyBJdCBpcyB1c2VmdWwgd2hlbiB0ZXN0aW5n
IGNvZGUgdGhhdCBkZXBlbmRzIG9uIEJvb2xlYW4gZmxhZ3MuIENvbWJpbmF0aW9ucworLy8gb2Yg
bXVsdGlwbGUgZmxhZ3MgY2FuIGJlIHRlc3RlZCB3aGVuIHNldmVyYWwgQm9vbCgpJ3MgYXJlIGNv
bWJpbmVkIHVzaW5nCisvLyBDb21iaW5lKCkgZnVuY3Rpb24uCisvLworLy8gSW4gdGhlIGZvbGxv
d2luZyBleGFtcGxlIGFsbCB0ZXN0cyBpbiB0aGUgdGVzdCBjYXNlIEZsYWdEZXBlbmRlbnRUZXN0
CisvLyB3aWxsIGJlIGluc3RhbnRpYXRlZCB0d2ljZSB3aXRoIHBhcmFtZXRlcnMgZmFsc2UgYW5k
IHRydWUuCisvLworLy8gY2xhc3MgRmxhZ0RlcGVuZGVudFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6
VGVzdFdpdGhQYXJhbTxib29sPiB7CisvLyAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKy8vICAg
ICBleHRlcm5hbF9mbGFnID0gR2V0UGFyYW0oKTsKKy8vICAgfQorLy8gfQorLy8gSU5TVEFOVElB
VEVfVEVTVF9DQVNFX1AoQm9vbFNlcXVlbmNlLCBGbGFnRGVwZW5kZW50VGVzdCwgQm9vbCgpKTsK
Ky8vCitpbmxpbmUgaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPGJvb2w+IEJvb2woKSB7CisgIHJl
dHVybiBWYWx1ZXMoZmFsc2UsIHRydWUpOworfQorCisjIGlmIEdURVNUX0hBU19DT01CSU5FCisv
LyBDb21iaW5lKCkgYWxsb3dzIHRoZSB1c2VyIHRvIGNvbWJpbmUgdHdvIG9yIG1vcmUgc2VxdWVu
Y2VzIHRvIHByb2R1Y2UKKy8vIHZhbHVlcyBvZiBhIENhcnRlc2lhbiBwcm9kdWN0IG9mIHRob3Nl
IHNlcXVlbmNlcycgZWxlbWVudHMuCisvLworLy8gU3lub3BzaXM6CisvLyBDb21iaW5lKGdlbjEs
IGdlbjIsIC4uLiwgZ2VuTikKKy8vICAgLSByZXR1cm5zIGEgZ2VuZXJhdG9yIHByb2R1Y2luZyBz
ZXF1ZW5jZXMgd2l0aCBlbGVtZW50cyBjb21pbmcgZnJvbQorLy8gICAgIHRoZSBDYXJ0ZXNpYW4g
cHJvZHVjdCBvZiBlbGVtZW50cyBmcm9tIHRoZSBzZXF1ZW5jZXMgZ2VuZXJhdGVkIGJ5CisvLyAg
ICAgZ2VuMSwgZ2VuMiwgLi4uLCBnZW5OLiBUaGUgc2VxdWVuY2UgZWxlbWVudHMgd2lsbCBoYXZl
IGEgdHlwZSBvZgorLy8gICAgIHR1cGxlPFQxLCBUMiwgLi4uLCBUTj4gd2hlcmUgVDEsIFQyLCAu
Li4sIFROIGFyZSB0aGUgdHlwZXMKKy8vICAgICBvZiBlbGVtZW50cyBmcm9tIHNlcXVlbmNlcyBw
cm9kdWNlcyBieSBnZW4xLCBnZW4yLCAuLi4sIGdlbk4uCisvLworLy8gQ29tYmluZSBjYW4gaGF2
ZSB1cCB0byAkbWF4dHVwbGUgYXJndW1lbnRzLiBUaGlzIG51bWJlciBpcyBjdXJyZW50bHkgbGlt
aXRlZAorLy8gYnkgdGhlIG1heGltdW0gbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSB0dXBsZSBp
bXBsZW1lbnRhdGlvbiB1c2VkIGJ5IEdvb2dsZQorLy8gVGVzdC4KKy8vCisvLyBFeGFtcGxlOgor
Ly8KKy8vIFRoaXMgd2lsbCBpbnN0YW50aWF0ZSB0ZXN0cyBpbiB0ZXN0IGNhc2UgQW5pbWFsVGVz
dCBlYWNoIG9uZSB3aXRoCisvLyB0aGUgcGFyYW1ldGVyIHZhbHVlcyB0dXBsZSgiY2F0IiwgQkxB
Q0spLCB0dXBsZSgiY2F0IiwgV0hJVEUpLAorLy8gdHVwbGUoImRvZyIsIEJMQUNLKSwgYW5kIHR1
cGxlKCJkb2ciLCBXSElURSk6CisvLworLy8gZW51bSBDb2xvciB7IEJMQUNLLCBHUkFZLCBXSElU
RSB9OworLy8gY2xhc3MgQW5pbWFsVGVzdAorLy8gICAgIDogcHVibGljIHRlc3Rpbmc6OlRlc3RX
aXRoUGFyYW08dHVwbGU8Y29uc3QgY2hhciosIENvbG9yPiA+IHsuLi59OworLy8KKy8vIFRFU1Rf
UChBbmltYWxUZXN0LCBBbmltYWxMb29rc05pY2UpIHsuLi59CisvLworLy8gSU5TVEFOVElBVEVf
VEVTVF9DQVNFX1AoQW5pbWFsVmFyaWF0aW9ucywgQW5pbWFsVGVzdCwKKy8vICAgICAgICAgICAg
ICAgICAgICAgICAgIENvbWJpbmUoVmFsdWVzKCJjYXQiLCAiZG9nIiksCisvLyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyhCTEFDSywgV0hJVEUpKSk7CisvLworLy8gVGhp
cyB3aWxsIGluc3RhbnRpYXRlIHRlc3RzIGluIEZsYWdEZXBlbmRlbnRUZXN0IHdpdGggYWxsIHZh
cmlhdGlvbnMgb2YgdHdvCisvLyBCb29sZWFuIGZsYWdzOgorLy8KKy8vIGNsYXNzIEZsYWdEZXBl
bmRlbnRUZXN0CisvLyAgICAgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQYXJhbTx0dXBsZTxi
b29sLCBib29sPiA+IHsKKy8vICAgdmlydHVhbCB2b2lkIFNldFVwKCkgeworLy8gICAgIC8vIEFz
c2lnbnMgZXh0ZXJuYWxfZmxhZ18xIGFuZCBleHRlcm5hbF9mbGFnXzIgdmFsdWVzIGZyb20gdGhl
IHR1cGxlLgorLy8gICAgIHRpZShleHRlcm5hbF9mbGFnXzEsIGV4dGVybmFsX2ZsYWdfMikgPSBH
ZXRQYXJhbSgpOworLy8gICB9CisvLyB9OworLy8KKy8vIFRFU1RfUChGbGFnRGVwZW5kZW50VGVz
dCwgVGVzdEZlYXR1cmUxKSB7CisvLyAgIC8vIFRlc3QgeW91ciBjb2RlIHVzaW5nIGV4dGVybmFs
X2ZsYWdfMSBhbmQgZXh0ZXJuYWxfZmxhZ18yIGhlcmUuCisvLyB9CisvLyBJTlNUQU5USUFURV9U
RVNUX0NBU0VfUChUd29Cb29sU2VxdWVuY2UsIEZsYWdEZXBlbmRlbnRUZXN0LAorLy8gICAgICAg
ICAgICAgICAgICAgICAgICAgQ29tYmluZShCb29sKCksIEJvb2woKSkpOworLy8KKyRyYW5nZSBp
IDIuLm1heHR1cGxlCiskZm9yIGkgW1sKKyRyYW5nZSBqIDEuLmkKKwordGVtcGxhdGUgPCRmb3Ig
aiwgW1t0eXBlbmFtZSBHZW5lcmF0b3Ikal1dPgoraW50ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RI
b2xkZXIkaTwkZm9yIGosIFtbR2VuZXJhdG9yJGpdXT4gQ29tYmluZSgKKyAgICAkZm9yIGosIFtb
Y29uc3QgR2VuZXJhdG9yJGomIGckal1dKSB7CisgIHJldHVybiBpbnRlcm5hbDo6Q2FydGVzaWFu
UHJvZHVjdEhvbGRlciRpPCRmb3IgaiwgW1tHZW5lcmF0b3Ikal1dPigKKyAgICAgICRmb3Igaiwg
W1tnJGpdXSk7Cit9CisKK11dCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfQ09NQklORQorCisKKwor
IyBkZWZpbmUgVEVTVF9QKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIFwKKyAgY2xhc3MgR1RF
U1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSBcCisgICAgICA6
IHB1YmxpYyB0ZXN0X2Nhc2VfbmFtZSB7IFwKKyAgIHB1YmxpYzogXAorICAgIEdURVNUX1RFU1Rf
Q0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkoKSB7fSBcCisgICAgdmlydHVh
bCB2b2lkIFRlc3RCb2R5KCk7IFwKKyAgIHByaXZhdGU6IFwKKyAgICBzdGF0aWMgaW50IEFkZFRv
UmVnaXN0cnkoKSB7IFwKKyAgICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCkt
PnBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3RyeSgpLiBcCisgICAgICAgICAgR2V0VGVzdENhc2VQ
YXR0ZXJuSG9sZGVyPHRlc3RfY2FzZV9uYW1lPihcCisgICAgICAgICAgICAgICN0ZXN0X2Nhc2Vf
bmFtZSwgXAorICAgICAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpDb2RlTG9jYXRpb24o
XAorICAgICAgICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fKSktPkFkZFRlc3RQYXR0ZXJu
KFwKKyAgICAgICAgICAgICAgICAgICAgICAjdGVzdF9jYXNlX25hbWUsIFwKKyAgICAgICAgICAg
ICAgICAgICAgICAjdGVzdF9uYW1lLCBcCisgICAgICAgICAgICAgICAgICAgICAgbmV3IDo6dGVz
dGluZzo6aW50ZXJuYWw6OlRlc3RNZXRhRmFjdG9yeTwgXAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBHVEVTVF9URVNUX0NMQVNTX05BTUVfKFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpPigpKTsgXAorICAgICAgcmV0dXJuIDA7IFwK
KyAgICB9IFwKKyAgICBzdGF0aWMgaW50IGd0ZXN0X3JlZ2lzdGVyaW5nX2R1bW15XyBHVEVTVF9B
VFRSSUJVVEVfVU5VU0VEXzsgXAorICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8o
XAorICAgICAgICBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25h
bWUpKTsgXAorICB9OyBcCisgIGludCBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9u
YW1lLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbmFtZSk6Omd0ZXN0X3Jl
Z2lzdGVyaW5nX2R1bW15XyA9IFwKKyAgICAgIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9j
YXNlX25hbWUsIHRlc3RfbmFtZSk6OkFkZFRvUmVnaXN0cnkoKTsgXAorICB2b2lkIEdURVNUX1RF
U1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSk6OlRlc3RCb2R5KCkKKwor
Ly8gVGhlIG9wdGlvbmFsIGxhc3QgYXJndW1lbnQgdG8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1Ag
YWxsb3dzIHRoZSB1c2VyCisvLyB0byBzcGVjaWZ5IGEgZnVuY3Rpb24gb3IgZnVuY3RvciB0aGF0
IGdlbmVyYXRlcyBjdXN0b20gdGVzdCBuYW1lIHN1ZmZpeGVzCisvLyBiYXNlZCBvbiB0aGUgdGVz
dCBwYXJhbWV0ZXJzLiBUaGUgZnVuY3Rpb24gc2hvdWxkIGFjY2VwdCBvbmUgYXJndW1lbnQgb2YK
Ky8vIHR5cGUgdGVzdGluZzo6VGVzdFBhcmFtSW5mbzxjbGFzcyBQYXJhbVR5cGU+LCBhbmQgcmV0
dXJuIHN0ZDo6c3RyaW5nLgorLy8KKy8vIHRlc3Rpbmc6OlByaW50VG9TdHJpbmdQYXJhbU5hbWUg
aXMgYSBidWlsdGluIHRlc3Qgc3VmZml4IGdlbmVyYXRvciB0aGF0CisvLyByZXR1cm5zIHRoZSB2
YWx1ZSBvZiB0ZXN0aW5nOjpQcmludFRvU3RyaW5nKEdldFBhcmFtKCkpLgorLy8KKy8vIE5vdGU6
IHRlc3QgbmFtZXMgbXVzdCBiZSBub24tZW1wdHksIHVuaXF1ZSwgYW5kIG1heSBvbmx5IGNvbnRh
aW4gQVNDSUkKKy8vIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIG9yIHVuZGVyc2NvcmUuIEJlY2F1
c2UgUHJpbnRUb1N0cmluZyBhZGRzIHF1b3RlcworLy8gdG8gc3RkOjpzdHJpbmcgYW5kIEMgc3Ry
aW5ncywgaXQgd29uJ3Qgd29yayBmb3IgdGhlc2UgdHlwZXMuCisKKyMgZGVmaW5lIElOU1RBTlRJ
QVRFX1RFU1RfQ0FTRV9QKHByZWZpeCwgdGVzdF9jYXNlX25hbWUsIGdlbmVyYXRvciwgLi4uKSBc
CisgIDo6dGVzdGluZzo6aW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPHRlc3RfY2FzZV9uYW1lOjpQ
YXJhbVR5cGU+IFwKKyAgICAgIGd0ZXN0XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFtZSMjX0V2YWxH
ZW5lcmF0b3JfKCkgeyByZXR1cm4gZ2VuZXJhdG9yOyB9IFwKKyAgOjpzdGQ6OnN0cmluZyBndGVz
dF8jI3ByZWZpeCMjdGVzdF9jYXNlX25hbWUjI19FdmFsR2VuZXJhdGVOYW1lXyggXAorICAgICAg
Y29uc3QgOjp0ZXN0aW5nOjpUZXN0UGFyYW1JbmZvPHRlc3RfY2FzZV9uYW1lOjpQYXJhbVR5cGU+
JiBpbmZvKSB7IFwKKyAgICByZXR1cm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6R2V0UGFyYW1OYW1l
R2VuPHRlc3RfY2FzZV9uYW1lOjpQYXJhbVR5cGU+IFwKKyAgICAgICAgKF9fVkFfQVJHU19fKShp
bmZvKTsgXAorICB9IFwKKyAgaW50IGd0ZXN0XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFtZSMjX2R1
bW15XyBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXyA9IFwKKyAgICAgIDo6dGVzdGluZzo6VW5pdFRl
c3Q6OkdldEluc3RhbmNlKCktPnBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3RyeSgpLiBcCisgICAg
ICAgICAgR2V0VGVzdENhc2VQYXR0ZXJuSG9sZGVyPHRlc3RfY2FzZV9uYW1lPihcCisgICAgICAg
ICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgXAorICAgICAgICAgICAgICA6OnRlc3Rpbmc6OmludGVy
bmFsOjpDb2RlTG9jYXRpb24oXAorICAgICAgICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9f
KSktPkFkZFRlc3RDYXNlSW5zdGFudGlhdGlvbihcCisgICAgICAgICAgICAgICAgICAgICAgI3By
ZWZpeCwgXAorICAgICAgICAgICAgICAgICAgICAgICZndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNl
X25hbWUjI19FdmFsR2VuZXJhdG9yXywgXAorICAgICAgICAgICAgICAgICAgICAgICZndGVzdF8j
I3ByZWZpeCMjdGVzdF9jYXNlX25hbWUjI19FdmFsR2VuZXJhdGVOYW1lXywgXAorICAgICAgICAg
ICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXykKKworfSAgLy8gbmFtZXNwYWNlIHRlc3Rp
bmcKKworI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAorCisjZW5kaWYgIC8vIEdURVNU
X0lOQ0xVREVfR1RFU1RfR1RFU1RfUEFSQU1fVEVTVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRl
c3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1wcmludGVycy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9n
dGVzdC9ndGVzdC1wcmludGVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4NTBkNjA1NDIwYTllYzNjYzFjOWM0
M2E2M2M1MTQ0MmE2NTIyN2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRl
L2d0ZXN0L2d0ZXN0LXByaW50ZXJzLmgKQEAgLTAsMCArMSwxMDA2IEBACisvLyBDb3B5cmlnaHQg
MjAwNywgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4K
Ky8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisv
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gQXV0aG9yOiB3YW5AZ29vZ2xl
LmNvbSAoWmhhbnlvbmcgV2FuKQorCisvLyBHb29nbGUgVGVzdCAtIFRoZSBHb29nbGUgQysrIFRl
c3RpbmcgRnJhbWV3b3JrCisvLworLy8gVGhpcyBmaWxlIGltcGxlbWVudHMgYSB1bml2ZXJzYWwg
dmFsdWUgcHJpbnRlciB0aGF0IGNhbiBwcmludCBhCisvLyB2YWx1ZSBvZiBhbnkgdHlwZSBUOgor
Ly8KKy8vICAgdm9pZCA6OnRlc3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxQcmludGVyPFQ+OjpQ
cmludCh2YWx1ZSwgb3N0cmVhbV9wdHIpOworLy8KKy8vIEEgdXNlciBjYW4gdGVhY2ggdGhpcyBm
dW5jdGlvbiBob3cgdG8gcHJpbnQgYSBjbGFzcyB0eXBlIFQgYnkKKy8vIGRlZmluaW5nIGVpdGhl
ciBvcGVyYXRvcjw8KCkgb3IgUHJpbnRUbygpIGluIHRoZSBuYW1lc3BhY2UgdGhhdAorLy8gZGVm
aW5lcyBULiAgTW9yZSBzcGVjaWZpY2FsbHksIHRoZSBGSVJTVCBkZWZpbmVkIGZ1bmN0aW9uIGlu
IHRoZQorLy8gZm9sbG93aW5nIGxpc3Qgd2lsbCBiZSB1c2VkIChhc3N1bWluZyBUIGlzIGRlZmlu
ZWQgaW4gbmFtZXNwYWNlCisvLyBmb28pOgorLy8KKy8vICAgMS4gZm9vOjpQcmludFRvKGNvbnN0
IFQmLCBvc3RyZWFtKikKKy8vICAgMi4gb3BlcmF0b3I8PChvc3RyZWFtJiwgY29uc3QgVCYpIGRl
ZmluZWQgaW4gZWl0aGVyIGZvbyBvciB0aGUKKy8vICAgICAgZ2xvYmFsIG5hbWVzcGFjZS4KKy8v
CisvLyBJZiBub25lIG9mIHRoZSBhYm92ZSBpcyBkZWZpbmVkLCBpdCB3aWxsIHByaW50IHRoZSBk
ZWJ1ZyBzdHJpbmcgb2YKKy8vIHRoZSB2YWx1ZSBpZiBpdCBpcyBhIHByb3RvY29sIGJ1ZmZlciwg
b3IgcHJpbnQgdGhlIHJhdyBieXRlcyBpbiB0aGUKKy8vIHZhbHVlIG90aGVyd2lzZS4KKy8vCisv
LyBUbyBhaWQgZGVidWdnaW5nOiB3aGVuIFQgaXMgYSByZWZlcmVuY2UgdHlwZSwgdGhlIGFkZHJl
c3Mgb2YgdGhlCisvLyB2YWx1ZSBpcyBhbHNvIHByaW50ZWQ7IHdoZW4gVCBpcyBhIChjb25zdCkg
Y2hhciBwb2ludGVyLCBib3RoIHRoZQorLy8gcG9pbnRlciB2YWx1ZSBhbmQgdGhlIE5VTC10ZXJt
aW5hdGVkIHN0cmluZyBpdCBwb2ludHMgdG8gYXJlCisvLyBwcmludGVkLgorLy8KKy8vIFdlIGFs
c28gcHJvdmlkZSBzb21lIGNvbnZlbmllbnQgd3JhcHBlcnM6CisvLworLy8gICAvLyBQcmludHMg
YSB2YWx1ZSB0byBhIHN0cmluZy4gIEZvciBhIChjb25zdCBvciBub3QpIGNoYXIKKy8vICAgLy8g
cG9pbnRlciwgdGhlIE5VTC10ZXJtaW5hdGVkIHN0cmluZyAoYnV0IG5vdCB0aGUgcG9pbnRlcikg
aXMKKy8vICAgLy8gcHJpbnRlZC4KKy8vICAgc3RkOjpzdHJpbmcgOjp0ZXN0aW5nOjpQcmludFRv
U3RyaW5nKGNvbnN0IFQmIHZhbHVlKTsKKy8vCisvLyAgIC8vIFByaW50cyBhIHZhbHVlIHRlcnNl
bHk6IGZvciBhIHJlZmVyZW5jZSB0eXBlLCB0aGUgcmVmZXJlbmNlZAorLy8gICAvLyB2YWx1ZSAo
YnV0IG5vdCB0aGUgYWRkcmVzcykgaXMgcHJpbnRlZDsgZm9yIGEgKGNvbnN0IG9yIG5vdCkgY2hh
cgorLy8gICAvLyBwb2ludGVyLCB0aGUgTlVMLXRlcm1pbmF0ZWQgc3RyaW5nIChidXQgbm90IHRo
ZSBwb2ludGVyKSBpcworLy8gICAvLyBwcmludGVkLgorLy8gICB2b2lkIDo6dGVzdGluZzo6aW50
ZXJuYWw6OlVuaXZlcnNhbFRlcnNlUHJpbnQoY29uc3QgVCYgdmFsdWUsIG9zdHJlYW0qKTsKKy8v
CisvLyAgIC8vIFByaW50cyB2YWx1ZSB1c2luZyB0aGUgdHlwZSBpbmZlcnJlZCBieSB0aGUgY29t
cGlsZXIuICBUaGUgZGlmZmVyZW5jZQorLy8gICAvLyBmcm9tIFVuaXZlcnNhbFRlcnNlUHJpbnQo
KSBpcyB0aGF0IHRoaXMgZnVuY3Rpb24gcHJpbnRzIGJvdGggdGhlCisvLyAgIC8vIHBvaW50ZXIg
YW5kIHRoZSBOVUwtdGVybWluYXRlZCBzdHJpbmcgZm9yIGEgKGNvbnN0IG9yIG5vdCkgY2hhciBw
b2ludGVyLgorLy8gICB2b2lkIDo6dGVzdGluZzo6aW50ZXJuYWw6OlVuaXZlcnNhbFByaW50KGNv
bnN0IFQmIHZhbHVlLCBvc3RyZWFtKik7CisvLworLy8gICAvLyBQcmludHMgdGhlIGZpZWxkcyBv
ZiBhIHR1cGxlIHRlcnNlbHkgdG8gYSBzdHJpbmcgdmVjdG9yLCBvbmUKKy8vICAgLy8gZWxlbWVu
dCBmb3IgZWFjaCBmaWVsZC4gVHVwbGUgc3VwcG9ydCBtdXN0IGJlIGVuYWJsZWQgaW4KKy8vICAg
Ly8gZ3Rlc3QtcG9ydC5oLgorLy8gICBzdGQ6OnZlY3RvcjxzdHJpbmc+IFVuaXZlcnNhbFRlcnNl
UHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5ncygKKy8vICAgICAgIGNvbnN0IFR1cGxlJiB2YWx1ZSk7
CisvLworLy8gS25vd24gbGltaXRhdGlvbjoKKy8vCisvLyBUaGUgcHJpbnQgcHJpbWl0aXZlcyBw
cmludCB0aGUgZWxlbWVudHMgb2YgYW4gU1RMLXN0eWxlIGNvbnRhaW5lcgorLy8gdXNpbmcgdGhl
IGNvbXBpbGVyLWluZmVycmVkIHR5cGUgb2YgKml0ZXIgd2hlcmUgaXRlciBpcyBhCisvLyBjb25z
dF9pdGVyYXRvciBvZiB0aGUgY29udGFpbmVyLiAgV2hlbiBjb25zdF9pdGVyYXRvciBpcyBhbiBp
bnB1dAorLy8gaXRlcmF0b3IgYnV0IG5vdCBhIGZvcndhcmQgaXRlcmF0b3IsIHRoaXMgaW5mZXJy
ZWQgdHlwZSBtYXkgbm90CisvLyBtYXRjaCB2YWx1ZV90eXBlLCBhbmQgdGhlIHByaW50IG91dHB1
dCBtYXkgYmUgaW5jb3JyZWN0LiAgSW4KKy8vIHByYWN0aWNlLCB0aGlzIGlzIHJhcmVseSBhIHBy
b2JsZW0gYXMgZm9yIG1vc3QgY29udGFpbmVycworLy8gY29uc3RfaXRlcmF0b3IgaXMgYSBmb3J3
YXJkIGl0ZXJhdG9yLiAgV2UnbGwgZml4IHRoaXMgaWYgdGhlcmUncyBhbgorLy8gYWN0dWFsIG5l
ZWQgZm9yIGl0LiAgTm90ZSB0aGF0IHRoaXMgZml4IGNhbm5vdCByZWx5IG9uIHZhbHVlX3R5cGUK
Ky8vIGJlaW5nIGRlZmluZWQgYXMgbWFueSB1c2VyLWRlZmluZWQgY29udGFpbmVyIHR5cGVzIGRv
bid0IGhhdmUKKy8vIHZhbHVlX3R5cGUuCisKKyNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9H
VEVTVF9QUklOVEVSU19IXworI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1BSSU5U
RVJTX0hfCisKKyNpbmNsdWRlIDxvc3RyZWFtPiAgLy8gTk9MSU5UCisjaW5jbHVkZSA8c3N0cmVh
bT4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx2ZWN0
b3I+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgorI2luY2x1ZGUgImd0
ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmgiCisKKyNpZiBHVEVTVF9IQVNfU1REX1RVUExF
XworIyBpbmNsdWRlIDx0dXBsZT4KKyNlbmRpZgorCituYW1lc3BhY2UgdGVzdGluZyB7CisKKy8v
IERlZmluaXRpb25zIGluIHRoZSAnaW50ZXJuYWwnIGFuZCAnaW50ZXJuYWwyJyBuYW1lIHNwYWNl
cyBhcmUKKy8vIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLiAgRE8gTk9UIFVTRSBU
SEVNIElOIFVTRVIgQ09ERSEKK25hbWVzcGFjZSBpbnRlcm5hbDIgeworCisvLyBQcmludHMgdGhl
IGdpdmVuIG51bWJlciBvZiBieXRlcyBpbiB0aGUgZ2l2ZW4gb2JqZWN0IHRvIHRoZSBnaXZlbgor
Ly8gb3N0cmVhbS4KK0dURVNUX0FQSV8gdm9pZCBQcmludEJ5dGVzSW5PYmplY3RUbyhjb25zdCB1
bnNpZ25lZCBjaGFyKiBvYmpfYnl0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDo6c3RkOjpvc3RyZWFtKiBvcyk7CisKKy8vIEZvciBzZWxlY3Rpbmcgd2hpY2ggcHJpbnRlciB0
byB1c2Ugd2hlbiBhIGdpdmVuIHR5cGUgaGFzIG5laXRoZXIgPDwKKy8vIG5vciBQcmludFRvKCku
CitlbnVtIFR5cGVLaW5kIHsKKyAga1Byb3RvYnVmLCAgICAgICAgICAgICAgLy8gYSBwcm90b2J1
ZiB0eXBlCisgIGtDb252ZXJ0aWJsZVRvSW50ZWdlciwgIC8vIGEgdHlwZSBpbXBsaWNpdGx5IGNv
bnZlcnRpYmxlIHRvIEJpZ2dlc3RJbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKGUu
Zy4gYSBuYW1lZCBvciB1bm5hbWVkIGVudW0gdHlwZSkKKyAga090aGVyVHlwZSAgICAgICAgICAg
ICAgLy8gYW55dGhpbmcgZWxzZQorfTsKKworLy8gVHlwZVdpdGhvdXRGb3JtYXR0ZXI8VCwga1R5
cGVLaW5kPjo6UHJpbnRWYWx1ZSh2YWx1ZSwgb3MpIGlzIGNhbGxlZAorLy8gYnkgdGhlIHVuaXZl
cnNhbCBwcmludGVyIHRvIHByaW50IGEgdmFsdWUgb2YgdHlwZSBUIHdoZW4gbmVpdGhlcgorLy8g
b3BlcmF0b3I8PCBub3IgUHJpbnRUbygpIGlzIGRlZmluZWQgZm9yIFQsIHdoZXJlIGtUeXBlS2lu
ZCBpcyB0aGUKKy8vICJraW5kIiBvZiBUIGFzIGRlZmluZWQgYnkgZW51bSBUeXBlS2luZC4KK3Rl
bXBsYXRlIDx0eXBlbmFtZSBULCBUeXBlS2luZCBrVHlwZUtpbmQ+CitjbGFzcyBUeXBlV2l0aG91
dEZvcm1hdHRlciB7CisgcHVibGljOgorICAvLyBUaGlzIGRlZmF1bHQgdmVyc2lvbiBpcyBjYWxs
ZWQgd2hlbiBrVHlwZUtpbmQgaXMga090aGVyVHlwZS4KKyAgc3RhdGljIHZvaWQgUHJpbnRWYWx1
ZShjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgUHJpbnRCeXRlc0lu
T2JqZWN0VG8ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oJnZhbHVlKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodmFsdWUpLCBvcyk7CisgIH0KK307CisK
Ky8vIFdlIHByaW50IGEgcHJvdG9idWYgdXNpbmcgaXRzIFNob3J0RGVidWdTdHJpbmcoKSB3aGVu
IHRoZSBzdHJpbmcKKy8vIGRvZXNuJ3QgZXhjZWVkIHRoaXMgbWFueSBjaGFyYWN0ZXJzOyBvdGhl
cndpc2Ugd2UgcHJpbnQgaXQgdXNpbmcKKy8vIERlYnVnU3RyaW5nKCkgZm9yIGJldHRlciByZWFk
YWJpbGl0eS4KK2NvbnN0IHNpemVfdCBrUHJvdG9idWZPbmVMaW5lck1heExlbmd0aCA9IDUwOwor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFR5cGVXaXRob3V0Rm9ybWF0dGVyPFQsIGtQ
cm90b2J1Zj4geworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnRWYWx1ZShjb25zdCBUJiB2
YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgc3RkOjpzdHJpbmcgcHJldHR5X3N0ciA9
IHZhbHVlLlNob3J0RGVidWdTdHJpbmcoKTsKKyAgICBpZiAocHJldHR5X3N0ci5sZW5ndGgoKSA+
IGtQcm90b2J1Zk9uZUxpbmVyTWF4TGVuZ3RoKSB7CisgICAgICBwcmV0dHlfc3RyID0gIlxuIiAr
IHZhbHVlLkRlYnVnU3RyaW5nKCk7CisgICAgfQorICAgICpvcyA8PCAoIjwiICsgcHJldHR5X3N0
ciArICI+Iik7CisgIH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVHlwZVdp
dGhvdXRGb3JtYXR0ZXI8VCwga0NvbnZlcnRpYmxlVG9JbnRlZ2VyPiB7CisgcHVibGljOgorICAv
LyBTaW5jZSBUIGhhcyBubyA8PCBvcGVyYXRvciBvciBQcmludFRvKCkgYnV0IGNhbiBiZSBpbXBs
aWNpdGx5CisgIC8vIGNvbnZlcnRlZCB0byBCaWdnZXN0SW50LCB3ZSBwcmludCBpdCBhcyBhIEJp
Z2dlc3RJbnQuCisgIC8vCisgIC8vIE1vc3QgbGlrZWx5IFQgaXMgYW4gZW51bSB0eXBlIChlaXRo
ZXIgbmFtZWQgb3IgdW5uYW1lZCksIGluIHdoaWNoCisgIC8vIGNhc2UgcHJpbnRpbmcgaXQgYXMg
YW4gaW50ZWdlciBpcyB0aGUgZGVzaXJlZCBiZWhhdmlvci4gIEluIGNhc2UKKyAgLy8gVCBpcyBu
b3QgYW4gZW51bSwgcHJpbnRpbmcgaXQgYXMgYW4gaW50ZWdlciBpcyB0aGUgYmVzdCB3ZSBjYW4g
ZG8KKyAgLy8gZ2l2ZW4gdGhhdCBpdCBoYXMgbm8gdXNlci1kZWZpbmVkIHByaW50ZXIuCisgIHN0
YXRpYyB2b2lkIFByaW50VmFsdWUoY29uc3QgVCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBvcykg
eworICAgIGNvbnN0IGludGVybmFsOjpCaWdnZXN0SW50IGtCaWdJbnQgPSB2YWx1ZTsKKyAgICAq
b3MgPDwga0JpZ0ludDsKKyAgfQorfTsKKworLy8gUHJpbnRzIHRoZSBnaXZlbiB2YWx1ZSB0byB0
aGUgZ2l2ZW4gb3N0cmVhbS4gIElmIHRoZSB2YWx1ZSBpcyBhCisvLyBwcm90b2NvbCBtZXNzYWdl
LCBpdHMgZGVidWcgc3RyaW5nIGlzIHByaW50ZWQ7IGlmIGl0J3MgYW4gZW51bSBvcgorLy8gb2Yg
YSB0eXBlIGltcGxpY2l0bHkgY29udmVydGlibGUgdG8gQmlnZ2VzdEludCwgaXQncyBwcmludGVk
IGFzIGFuCisvLyBpbnRlZ2VyOyBvdGhlcndpc2UgdGhlIGJ5dGVzIGluIHRoZSB2YWx1ZSBhcmUg
cHJpbnRlZC4gIFRoaXMgaXMKKy8vIHdoYXQgVW5pdmVyc2FsUHJpbnRlcjxUPjo6UHJpbnQoKSBk
b2VzIHdoZW4gaXQga25vd3Mgbm90aGluZyBhYm91dAorLy8gdHlwZSBUIGFuZCBUIGhhcyBuZWl0
aGVyIDw8IG9wZXJhdG9yIG5vciBQcmludFRvKCkuCisvLworLy8gQSB1c2VyIGNhbiBvdmVycmlk
ZSB0aGlzIGJlaGF2aW9yIGZvciBhIGNsYXNzIHR5cGUgRm9vIGJ5IGRlZmluaW5nCisvLyBhIDw8
IG9wZXJhdG9yIGluIHRoZSBuYW1lc3BhY2Ugd2hlcmUgRm9vIGlzIGRlZmluZWQuCisvLworLy8g
V2UgcHV0IHRoaXMgb3BlcmF0b3IgaW4gbmFtZXNwYWNlICdpbnRlcm5hbDInIGluc3RlYWQgb2Yg
J2ludGVybmFsJworLy8gdG8gc2ltcGxpZnkgdGhlIGltcGxlbWVudGF0aW9uLCBhcyBtdWNoIGNv
ZGUgaW4gJ2ludGVybmFsJyBuZWVkcyB0bworLy8gdXNlIDw8IGluIFNUTCwgd2hpY2ggd291bGQg
Y29uZmxpY3Qgd2l0aCBvdXIgb3duIDw8IHdlcmUgaXQgZGVmaW5lZAorLy8gaW4gJ2ludGVybmFs
Jy4KKy8vCisvLyBOb3RlIHRoYXQgdGhpcyBvcGVyYXRvcjw8IHRha2VzIGEgZ2VuZXJpYyBzdGQ6
OmJhc2ljX29zdHJlYW08Q2hhciwKKy8vIENoYXJUcmFpdHM+IHR5cGUgaW5zdGVhZCBvZiB0aGUg
bW9yZSByZXN0cmljdGVkIHN0ZDo6b3N0cmVhbS4gIElmCisvLyB3ZSBkZWZpbmUgaXQgdG8gdGFr
ZSBhbiBzdGQ6Om9zdHJlYW0gaW5zdGVhZCwgd2UnbGwgZ2V0IGFuCisvLyAiYW1iaWd1b3VzIG92
ZXJsb2FkcyIgY29tcGlsZXIgZXJyb3Igd2hlbiB0cnlpbmcgdG8gcHJpbnQgYSB0eXBlCisvLyBG
b28gdGhhdCBzdXBwb3J0cyBzdHJlYW1pbmcgdG8gc3RkOjpiYXNpY19vc3RyZWFtPENoYXIsCisv
LyBDaGFyVHJhaXRzPiwgYXMgdGhlIGNvbXBpbGVyIGNhbm5vdCB0ZWxsIHdoZXRoZXIKKy8vIG9w
ZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiwgY29uc3QgVCYpIG9yCisvLyBvcGVyYXRvcjw8KHN0ZDo6
YmFzaWNfc3RyZWFtPENoYXIsIENoYXJUcmFpdHM+LCBjb25zdCBGb28mKSBpcyBtb3JlCisvLyBz
cGVjaWZpYy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyLCB0eXBlbmFtZSBDaGFyVHJhaXRzLCB0
eXBlbmFtZSBUPgorOjpzdGQ6OmJhc2ljX29zdHJlYW08Q2hhciwgQ2hhclRyYWl0cz4mIG9wZXJh
dG9yPDwoCisgICAgOjpzdGQ6OmJhc2ljX29zdHJlYW08Q2hhciwgQ2hhclRyYWl0cz4mIG9zLCBj
b25zdCBUJiB4KSB7CisgIFR5cGVXaXRob3V0Rm9ybWF0dGVyPFQsCisgICAgICAoaW50ZXJuYWw6
OklzQVByb3RvY29sTWVzc2FnZTxUPjo6dmFsdWUgPyBrUHJvdG9idWYgOgorICAgICAgIGludGVy
bmFsOjpJbXBsaWNpdGx5Q29udmVydGlibGU8Y29uc3QgVCYsIGludGVybmFsOjpCaWdnZXN0SW50
Pjo6dmFsdWUgPworICAgICAgIGtDb252ZXJ0aWJsZVRvSW50ZWdlciA6IGtPdGhlclR5cGUpPjo6
UHJpbnRWYWx1ZSh4LCAmb3MpOworICByZXR1cm4gb3M7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBp
bnRlcm5hbDIKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCisKKy8vIFRoaXMgbmFtZXNwYWNlIE1V
U1QgTk9UIEJFIE5FU1RFRCBJTiA6OnRlc3RpbmcsIG9yIHRoZSBuYW1lIGxvb2stdXAKKy8vIG1h
Z2ljIG5lZWRlZCBmb3IgaW1wbGVtZW50aW5nIFVuaXZlcnNhbFByaW50ZXIgd29uJ3Qgd29yay4K
K25hbWVzcGFjZSB0ZXN0aW5nX2ludGVybmFsIHsKKworLy8gVXNlZCB0byBwcmludCBhIHZhbHVl
IHRoYXQgaXMgbm90IGFuIFNUTC1zdHlsZSBjb250YWluZXIgd2hlbiB0aGUKKy8vIHVzZXIgZG9l
c24ndCBkZWZpbmUgUHJpbnRUbygpIGZvciBpdC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9p
ZCBEZWZhdWx0UHJpbnROb25Db250YWluZXJUbyhjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJl
YW0qIG9zKSB7CisgIC8vIFdpdGggdGhlIGZvbGxvd2luZyBzdGF0ZW1lbnQsIGR1cmluZyB1bnF1
YWxpZmllZCBuYW1lIGxvb2t1cCwKKyAgLy8gdGVzdGluZzo6aW50ZXJuYWwyOjpvcGVyYXRvcjw8
IGFwcGVhcnMgYXMgaWYgaXQgd2FzIGRlY2xhcmVkIGluCisgIC8vIHRoZSBuZWFyZXN0IGVuY2xv
c2luZyBuYW1lc3BhY2UgdGhhdCBjb250YWlucyBib3RoCisgIC8vIDo6dGVzdGluZ19pbnRlcm5h
bCBhbmQgOjp0ZXN0aW5nOjppbnRlcm5hbDIsIGkuZS4gdGhlIGdsb2JhbAorICAvLyBuYW1lc3Bh
Y2UuICBGb3IgbW9yZSBkZXRhaWxzLCByZWZlciB0byB0aGUgQysrIFN0YW5kYXJkIHNlY3Rpb24K
KyAgLy8gNy4zLjQtMSBbbmFtZXNwYWNlLnVkaXJdLiAgVGhpcyBhbGxvd3MgdXMgdG8gZmFsbCBi
YWNrIG9udG8KKyAgLy8gdGVzdGluZzo6aW50ZXJuYWwyOjpvcGVyYXRvcjw8IGluIGNhc2UgVCBk
b2Vzbid0IGNvbWUgd2l0aCBhIDw8CisgIC8vIG9wZXJhdG9yLgorICAvLworICAvLyBXZSBjYW5u
b3Qgd3JpdGUgJ3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWwyOjpvcGVyYXRvcjw8OycsIHdoaWNo
CisgIC8vIGdjYyAzLjMgZmFpbHMgdG8gY29tcGlsZSBkdWUgdG8gYSBjb21waWxlciBidWcuCisg
IHVzaW5nIG5hbWVzcGFjZSA6OnRlc3Rpbmc6OmludGVybmFsMjsgIC8vIE5PTElOVAorCisgIC8v
IEFzc3VtaW5nIFQgaXMgZGVmaW5lZCBpbiBuYW1lc3BhY2UgZm9vLCBpbiB0aGUgbmV4dCBzdGF0
ZW1lbnQsCisgIC8vIHRoZSBjb21waWxlciB3aWxsIGNvbnNpZGVyIGFsbCBvZjoKKyAgLy8KKyAg
Ly8gICAxLiBmb286Om9wZXJhdG9yPDwgKHRoYW5rcyB0byBLb2VuaWcgbG9vay11cCksCisgIC8v
ICAgMi4gOjpvcGVyYXRvcjw8IChhcyB0aGUgY3VycmVudCBuYW1lc3BhY2UgaXMgZW5jbG9zZWQg
aW4gOjopLAorICAvLyAgIDMuIHRlc3Rpbmc6OmludGVybmFsMjo6b3BlcmF0b3I8PCAodGhhbmtz
IHRvIHRoZSB1c2luZyBzdGF0ZW1lbnQgYWJvdmUpLgorICAvLworICAvLyBUaGUgb3BlcmF0b3I8
PCB3aG9zZSB0eXBlIG1hdGNoZXMgVCBiZXN0IHdpbGwgYmUgcGlja2VkLgorICAvLworICAvLyBX
ZSBkZWxpYmVyYXRlbHkgYWxsb3cgIzIgdG8gYmUgYSBjYW5kaWRhdGUsIGFzIHNvbWV0aW1lcyBp
dCdzCisgIC8vIGltcG9zc2libGUgdG8gZGVmaW5lICMxIChlLmcuIHdoZW4gZm9vIGlzIDo6c3Rk
LCBkZWZpbmluZworICAvLyBhbnl0aGluZyBpbiBpdCBpcyB1bmRlZmluZWQgYmVoYXZpb3IgdW5s
ZXNzIHlvdSBhcmUgYSBjb21waWxlcgorICAvLyB2ZW5kb3IuKS4KKyAgKm9zIDw8IHZhbHVlOwor
fQorCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZ19pbnRlcm5hbAorCituYW1lc3BhY2UgdGVzdGlu
ZyB7CituYW1lc3BhY2UgaW50ZXJuYWwgeworCisvLyBGb3JtYXRGb3JDb21wYXJpc29uPFRvUHJp
bnQsIE90aGVyT3BlcmFuZD46OkZvcm1hdCh2YWx1ZSkgZm9ybWF0cyBhCisvLyB2YWx1ZSBvZiB0
eXBlIFRvUHJpbnQgdGhhdCBpcyBhbiBvcGVyYW5kIG9mIGEgY29tcGFyaXNvbiBhc3NlcnRpb24K
Ky8vIChlLmcuIEFTU0VSVF9FUSkuICBPdGhlck9wZXJhbmQgaXMgdGhlIHR5cGUgb2YgdGhlIG90
aGVyIG9wZXJhbmQgaW4KKy8vIHRoZSBjb21wYXJpc29uLCBhbmQgaXMgdXNlZCB0byBoZWxwIGRl
dGVybWluZSB0aGUgYmVzdCB3YXkgdG8KKy8vIGZvcm1hdCB0aGUgdmFsdWUuICBJbiBwYXJ0aWN1
bGFyLCB3aGVuIHRoZSB2YWx1ZSBpcyBhIEMgc3RyaW5nCisvLyAoY2hhciBwb2ludGVyKSBhbmQg
dGhlIG90aGVyIG9wZXJhbmQgaXMgYW4gU1RMIHN0cmluZyBvYmplY3QsIHdlCisvLyB3YW50IHRv
IGZvcm1hdCB0aGUgQyBzdHJpbmcgYXMgYSBzdHJpbmcsIHNpbmNlIHdlIGtub3cgaXQgaXMKKy8v
IGNvbXBhcmVkIGJ5IHZhbHVlIHdpdGggdGhlIHN0cmluZyBvYmplY3QuICBJZiB0aGUgdmFsdWUg
aXMgYSBjaGFyCisvLyBwb2ludGVyIGJ1dCB0aGUgb3RoZXIgb3BlcmFuZCBpcyBub3QgYW4gU1RM
IHN0cmluZyBvYmplY3QsIHdlIGRvbid0CisvLyBrbm93IHdoZXRoZXIgdGhlIHBvaW50ZXIgaXMg
c3VwcG9zZWQgdG8gcG9pbnQgdG8gYSBOVUwtdGVybWluYXRlZAorLy8gc3RyaW5nLCBhbmQgdGh1
cyB3YW50IHRvIHByaW50IGl0IGFzIGEgcG9pbnRlciB0byBiZSBzYWZlLgorLy8KKy8vIElOVEVS
TkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4KKworLy8g
VGhlIGRlZmF1bHQgY2FzZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUb1ByaW50LCB0eXBlbmFtZSBP
dGhlck9wZXJhbmQ+CitjbGFzcyBGb3JtYXRGb3JDb21wYXJpc29uIHsKKyBwdWJsaWM6CisgIHN0
YXRpYyA6OnN0ZDo6c3RyaW5nIEZvcm1hdChjb25zdCBUb1ByaW50JiB2YWx1ZSkgeworICAgIHJl
dHVybiA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcodmFsdWUpOworICB9Cit9OworCisvLyBBcnJh
eS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUb1ByaW50LCBzaXplX3QgTiwgdHlwZW5hbWUgT3RoZXJP
cGVyYW5kPgorY2xhc3MgRm9ybWF0Rm9yQ29tcGFyaXNvbjxUb1ByaW50W05dLCBPdGhlck9wZXJh
bmQ+IHsKKyBwdWJsaWM6CisgIHN0YXRpYyA6OnN0ZDo6c3RyaW5nIEZvcm1hdChjb25zdCBUb1By
aW50KiB2YWx1ZSkgeworICAgIHJldHVybiBGb3JtYXRGb3JDb21wYXJpc29uPGNvbnN0IFRvUHJp
bnQqLCBPdGhlck9wZXJhbmQ+OjpGb3JtYXQodmFsdWUpOworICB9Cit9OworCisvLyBCeSBkZWZh
dWx0LCBwcmludCBDIHN0cmluZyBhcyBwb2ludGVycyB0byBiZSBzYWZlLCBhcyB3ZSBkb24ndCBr
bm93CisvLyB3aGV0aGVyIHRoZXkgYWN0dWFsbHkgcG9pbnQgdG8gYSBOVUwtdGVybWluYXRlZCBz
dHJpbmcuCisKKyNkZWZpbmUgR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfUE9JTlRFUl8o
Q2hhclR5cGUpICAgICAgICAgICAgICAgIFwKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIE90aGVyT3Bl
cmFuZD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgY2xhc3MgRm9y
bWF0Rm9yQ29tcGFyaXNvbjxDaGFyVHlwZSosIE90aGVyT3BlcmFuZD4geyAgICAgICAgICAgICAg
ICAgIFwKKyAgIHB1YmxpYzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzdGF0aWMgOjpzdGQ6OnN0cmluZyBGb3JtYXQo
Q2hhclR5cGUqIHZhbHVlKSB7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIHJldHVybiA6
OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcoc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KHZhbHVlKSk7
IFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgfQorCitHVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklOR19B
U19QT0lOVEVSXyhjaGFyKTsKK0dURVNUX0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1BPSU5URVJf
KGNvbnN0IGNoYXIpOworR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfUE9JTlRFUl8od2No
YXJfdCk7CitHVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklOR19BU19QT0lOVEVSXyhjb25zdCB3Y2hh
cl90KTsKKworI3VuZGVmIEdURVNUX0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1BPSU5URVJfCisK
Ky8vIElmIGEgQyBzdHJpbmcgaXMgY29tcGFyZWQgd2l0aCBhbiBTVEwgc3RyaW5nIG9iamVjdCwg
d2Uga25vdyBpdCdzIG1lYW50CisvLyB0byBwb2ludCB0byBhIE5VTC10ZXJtaW5hdGVkIHN0cmlu
ZywgYW5kIHRodXMgY2FuIHByaW50IGl0IGFzIGEgc3RyaW5nLgorCisjZGVmaW5lIEdURVNUX0lN
UExfRk9STUFUX0NfU1RSSU5HX0FTX1NUUklOR18oQ2hhclR5cGUsIE90aGVyU3RyaW5nVHlwZSkg
XAorICB0ZW1wbGF0ZSA8PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICBjbGFzcyBGb3JtYXRGb3JDb21wYXJpc29uPENoYXJUeXBl
KiwgT3RoZXJTdHJpbmdUeXBlPiB7ICAgICAgICAgICAgICAgXAorICAgcHVibGljOiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIHN0YXRpYyA6OnN0ZDo6c3RyaW5nIEZvcm1hdChDaGFyVHlwZSogdmFsdWUpIHsgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgcmV0dXJuIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyh2
YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9
CisKK0dURVNUX0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1NUUklOR18oY2hhciwgOjpzdGQ6OnN0
cmluZyk7CitHVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklOR19BU19TVFJJTkdfKGNvbnN0IGNoYXIs
IDo6c3RkOjpzdHJpbmcpOworCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKK0dURVNUX0lN
UExfRk9STUFUX0NfU1RSSU5HX0FTX1NUUklOR18oY2hhciwgOjpzdHJpbmcpOworR1RFU1RfSU1Q
TF9GT1JNQVRfQ19TVFJJTkdfQVNfU1RSSU5HXyhjb25zdCBjaGFyLCA6OnN0cmluZyk7CisjZW5k
aWYKKworI2lmIEdURVNUX0hBU19HTE9CQUxfV1NUUklORworR1RFU1RfSU1QTF9GT1JNQVRfQ19T
VFJJTkdfQVNfU1RSSU5HXyh3Y2hhcl90LCA6OndzdHJpbmcpOworR1RFU1RfSU1QTF9GT1JNQVRf
Q19TVFJJTkdfQVNfU1RSSU5HXyhjb25zdCB3Y2hhcl90LCA6OndzdHJpbmcpOworI2VuZGlmCisK
KyNpZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKK0dURVNUX0lNUExfRk9STUFUX0NfU1RSSU5HX0FT
X1NUUklOR18od2NoYXJfdCwgOjpzdGQ6OndzdHJpbmcpOworR1RFU1RfSU1QTF9GT1JNQVRfQ19T
VFJJTkdfQVNfU1RSSU5HXyhjb25zdCB3Y2hhcl90LCA6OnN0ZDo6d3N0cmluZyk7CisjZW5kaWYK
KworI3VuZGVmIEdURVNUX0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1NUUklOR18KKworLy8gRm9y
bWF0cyBhIGNvbXBhcmlzb24gYXNzZXJ0aW9uIChlLmcuIEFTU0VSVF9FUSwgRVhQRUNUX0xULCBh
bmQgZXRjKQorLy8gb3BlcmFuZCB0byBiZSB1c2VkIGluIGEgZmFpbHVyZSBtZXNzYWdlLiAgVGhl
IHR5cGUgKGJ1dCBub3QgdmFsdWUpCisvLyBvZiB0aGUgb3RoZXIgb3BlcmFuZCBtYXkgYWZmZWN0
IHRoZSBmb3JtYXQuICBUaGlzIGFsbG93cyB1cyB0bworLy8gcHJpbnQgYSBjaGFyKiBhcyBhIHJh
dyBwb2ludGVyIHdoZW4gaXQgaXMgY29tcGFyZWQgYWdhaW5zdCBhbm90aGVyCisvLyBjaGFyKiBv
ciB2b2lkKiwgYW5kIHByaW50IGl0IGFzIGEgQyBzdHJpbmcgd2hlbiBpdCBpcyBjb21wYXJlZAor
Ly8gYWdhaW5zdCBhbiBzdGQ6OnN0cmluZyBvYmplY3QsIGZvciBleGFtcGxlLgorLy8KKy8vIElO
VEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4KK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+CitzdGQ6OnN0cmluZyBGb3JtYXRGb3JD
b21wYXJpc29uRmFpbHVyZU1lc3NhZ2UoCisgICAgY29uc3QgVDEmIHZhbHVlLCBjb25zdCBUMiYg
Lyogb3RoZXJfb3BlcmFuZCAqLykgeworICByZXR1cm4gRm9ybWF0Rm9yQ29tcGFyaXNvbjxUMSwg
VDI+OjpGb3JtYXQodmFsdWUpOworfQorCisvLyBVbml2ZXJzYWxQcmludGVyPFQ+OjpQcmludCh2
YWx1ZSwgb3N0cmVhbV9wdHIpIHByaW50cyB0aGUgZ2l2ZW4KKy8vIHZhbHVlIHRvIHRoZSBnaXZl
biBvc3RyZWFtLiAgVGhlIGNhbGxlciBtdXN0IGVuc3VyZSB0aGF0CisvLyAnb3N0cmVhbV9wdHIn
IGlzIG5vdCBOVUxMLCBvciB0aGUgYmVoYXZpb3IgaXMgdW5kZWZpbmVkLgorLy8KKy8vIFdlIGRl
ZmluZSBVbml2ZXJzYWxQcmludGVyIGFzIGEgY2xhc3MgdGVtcGxhdGUgKGFzIG9wcG9zZWQgdG8g
YQorLy8gZnVuY3Rpb24gdGVtcGxhdGUpLCBhcyB3ZSBuZWVkIHRvIHBhcnRpYWxseSBzcGVjaWFs
aXplIGl0IGZvcgorLy8gcmVmZXJlbmNlIHR5cGVzLCB3aGljaCBjYW5ub3QgYmUgZG9uZSB3aXRo
IGZ1bmN0aW9uIHRlbXBsYXRlcy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVW5pdmVy
c2FsUHJpbnRlcjsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIFVuaXZlcnNhbFByaW50
KGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSogb3MpOworCitlbnVtIERlZmF1bHRQcmlu
dGVyVHlwZSB7CisgIGtQcmludENvbnRhaW5lciwKKyAga1ByaW50UG9pbnRlciwKKyAga1ByaW50
RnVuY3Rpb25Qb2ludGVyLAorICBrUHJpbnRPdGhlciwKK307Cit0ZW1wbGF0ZSA8RGVmYXVsdFBy
aW50ZXJUeXBlIHR5cGU+IHN0cnVjdCBXcmFwUHJpbnRlclR5cGUge307CisKKy8vIFVzZWQgdG8g
cHJpbnQgYW4gU1RMLXN0eWxlIGNvbnRhaW5lciB3aGVuIHRoZSB1c2VyIGRvZXNuJ3QgZGVmaW5l
CisvLyBhIFByaW50VG8oKSBmb3IgaXQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQz4KK3ZvaWQgRGVm
YXVsdFByaW50VG8oV3JhcFByaW50ZXJUeXBlPGtQcmludENvbnRhaW5lcj4gLyogZHVtbXkgKi8s
CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IEMmIGNvbnRhaW5lciwgOjpzdGQ6Om9zdHJlYW0q
IG9zKSB7CisgIGNvbnN0IHNpemVfdCBrTWF4Q291bnQgPSAzMjsgIC8vIFRoZSBtYXhpbXVtIG51
bWJlciBvZiBlbGVtZW50cyB0byBwcmludC4KKyAgKm9zIDw8ICd7JzsKKyAgc2l6ZV90IGNvdW50
ID0gMDsKKyAgZm9yICh0eXBlbmFtZSBDOjpjb25zdF9pdGVyYXRvciBpdCA9IGNvbnRhaW5lci5i
ZWdpbigpOworICAgICAgIGl0ICE9IGNvbnRhaW5lci5lbmQoKTsgKytpdCwgKytjb3VudCkgewor
ICAgIGlmIChjb3VudCA+IDApIHsKKyAgICAgICpvcyA8PCAnLCc7CisgICAgICBpZiAoY291bnQg
PT0ga01heENvdW50KSB7ICAvLyBFbm91Z2ggaGFzIGJlZW4gcHJpbnRlZC4KKyAgICAgICAgKm9z
IDw8ICIgLi4uIjsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorICAgICpvcyA8PCAn
ICc7CisgICAgLy8gV2UgY2Fubm90IGNhbGwgUHJpbnRUbygqaXQsIG9zKSBoZXJlIGFzIFByaW50
VG8oKSBkb2Vzbid0CisgICAgLy8gaGFuZGxlICppdCBiZWluZyBhIG5hdGl2ZSBhcnJheS4KKyAg
ICBpbnRlcm5hbDo6VW5pdmVyc2FsUHJpbnQoKml0LCBvcyk7CisgIH0KKworICBpZiAoY291bnQg
PiAwKSB7CisgICAgKm9zIDw8ICcgJzsKKyAgfQorICAqb3MgPDwgJ30nOworfQorCisvLyBVc2Vk
IHRvIHByaW50IGEgcG9pbnRlciB0aGF0IGlzIG5laXRoZXIgYSBjaGFyIHBvaW50ZXIgbm9yIGEg
bWVtYmVyCisvLyBwb2ludGVyLCB3aGVuIHRoZSB1c2VyIGRvZXNuJ3QgZGVmaW5lIFByaW50VG8o
KSBmb3IgaXQuICAoQSBtZW1iZXIKKy8vIHZhcmlhYmxlIHBvaW50ZXIgb3IgbWVtYmVyIGZ1bmN0
aW9uIHBvaW50ZXIgZG9lc24ndCByZWFsbHkgcG9pbnQgdG8KKy8vIGEgbG9jYXRpb24gaW4gdGhl
IGFkZHJlc3Mgc3BhY2UuICBUaGVpciByZXByZXNlbnRhdGlvbiBpcworLy8gaW1wbGVtZW50YXRp
b24tZGVmaW5lZC4gIFRoZXJlZm9yZSB0aGV5IHdpbGwgYmUgcHJpbnRlZCBhcyByYXcKKy8vIGJ5
dGVzLikKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBEZWZhdWx0UHJpbnRUbyhXcmFwUHJp
bnRlclR5cGU8a1ByaW50UG9pbnRlcj4gLyogZHVtbXkgKi8sCisgICAgICAgICAgICAgICAgICAg
IFQqIHAsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBpZiAocCA9PSBOVUxMKSB7CisgICAgKm9z
IDw8ICJOVUxMIjsKKyAgfSBlbHNlIHsKKyAgICAvLyBUIGlzIG5vdCBhIGZ1bmN0aW9uIHR5cGUu
ICBXZSBqdXN0IGNhbGwgPDwgdG8gcHJpbnQgcCwKKyAgICAvLyByZWx5aW5nIG9uIEFETCB0byBw
aWNrIHVwIHVzZXItZGVmaW5lZCA8PCBmb3IgdGhlaXIgcG9pbnRlcgorICAgIC8vIHR5cGVzLCBp
ZiBhbnkuCisgICAgKm9zIDw8IHA7CisgIH0KK30KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9p
ZCBEZWZhdWx0UHJpbnRUbyhXcmFwUHJpbnRlclR5cGU8a1ByaW50RnVuY3Rpb25Qb2ludGVyPiAv
KiBkdW1teSAqLywKKyAgICAgICAgICAgICAgICAgICAgVCogcCwgOjpzdGQ6Om9zdHJlYW0qIG9z
KSB7CisgIGlmIChwID09IE5VTEwpIHsKKyAgICAqb3MgPDwgIk5VTEwiOworICB9IGVsc2Ugewor
ICAgIC8vIFQgaXMgYSBmdW5jdGlvbiB0eXBlLCBzbyAnKm9zIDw8IHAnIGRvZXNuJ3QgZG8gd2hh
dCB3ZSB3YW50CisgICAgLy8gKGl0IGp1c3QgcHJpbnRzIHAgYXMgYm9vbCkuICBXZSB3YW50IHRv
IHByaW50IHAgYXMgYSBjb25zdAorICAgIC8vIHZvaWQqLiAgSG93ZXZlciwgd2UgY2Fubm90IGNh
c3QgaXQgdG8gY29uc3Qgdm9pZCogZGlyZWN0bHksCisgICAgLy8gZXZlbiB1c2luZyByZWludGVy
cHJldF9jYXN0LCBhcyBlYXJsaWVyIHZlcnNpb25zIG9mIGdjYworICAgIC8vIChlLmcuIDMuNC41
KSBjYW5ub3QgY29tcGlsZSB0aGUgY2FzdCB3aGVuIHAgaXMgYSBmdW5jdGlvbgorICAgIC8vIHBv
aW50ZXIuICBDYXN0aW5nIHRvIFVJbnQ2NCBmaXJzdCBzb2x2ZXMgdGhlIHByb2JsZW0uCisgICAg
Km9zIDw8IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KAorICAgICAgICByZWludGVycHJl
dF9jYXN0PGludGVybmFsOjpVSW50NjQ+KHApKTsKKyAgfQorfQorCisvLyBVc2VkIHRvIHByaW50
IGEgbm9uLWNvbnRhaW5lciwgbm9uLXBvaW50ZXIgdmFsdWUgd2hlbiB0aGUgdXNlcgorLy8gZG9l
c24ndCBkZWZpbmUgUHJpbnRUbygpIGZvciBpdC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9p
ZCBEZWZhdWx0UHJpbnRUbyhXcmFwUHJpbnRlclR5cGU8a1ByaW50T3RoZXI+IC8qIGR1bW15ICov
LAorICAgICAgICAgICAgICAgICAgICBjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9z
KSB7CisgIDo6dGVzdGluZ19pbnRlcm5hbDo6RGVmYXVsdFByaW50Tm9uQ29udGFpbmVyVG8odmFs
dWUsIG9zKTsKK30KKworLy8gUHJpbnRzIHRoZSBnaXZlbiB2YWx1ZSB1c2luZyB0aGUgPDwgb3Bl
cmF0b3IgaWYgaXQgaGFzIG9uZTsKKy8vIG90aGVyd2lzZSBwcmludHMgdGhlIGJ5dGVzIGluIGl0
LiAgVGhpcyBpcyB3aGF0CisvLyBVbml2ZXJzYWxQcmludGVyPFQ+OjpQcmludCgpIGRvZXMgd2hl
biBQcmludFRvKCkgaXMgbm90IHNwZWNpYWxpemVkCisvLyBvciBvdmVybG9hZGVkIGZvciB0eXBl
IFQuCisvLworLy8gQSB1c2VyIGNhbiBvdmVycmlkZSB0aGlzIGJlaGF2aW9yIGZvciBhIGNsYXNz
IHR5cGUgRm9vIGJ5IGRlZmluaW5nCisvLyBhbiBvdmVybG9hZCBvZiBQcmludFRvKCkgaW4gdGhl
IG5hbWVzcGFjZSB3aGVyZSBGb28gaXMgZGVmaW5lZC4gIFdlCisvLyBnaXZlIHRoZSB1c2VyIHRo
aXMgb3B0aW9uIGFzIHNvbWV0aW1lcyBkZWZpbmluZyBhIDw8IG9wZXJhdG9yIGZvcgorLy8gRm9v
IGlzIG5vdCBkZXNpcmFibGUgKGUuZy4gdGhlIGNvZGluZyBzdHlsZSBtYXkgcHJldmVudCBkb2lu
ZyBpdCwKKy8vIG9yIHRoZXJlIGlzIGFscmVhZHkgYSA8PCBvcGVyYXRvciBidXQgaXQgZG9lc24n
dCBkbyB3aGF0IHRoZSB1c2VyCisvLyB3YW50cykuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3Zv
aWQgUHJpbnRUbyhjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIC8vIERl
ZmF1bHRQcmludFRvKCkgaXMgb3ZlcmxvYWRlZC4gIFRoZSB0eXBlIG9mIGl0cyBmaXJzdCBhcmd1
bWVudAorICAvLyBkZXRlcm1pbmVzIHdoaWNoIHZlcnNpb24gd2lsbCBiZSBwaWNrZWQuCisgIC8v
CisgIC8vIE5vdGUgdGhhdCB3ZSBjaGVjayBmb3IgY29udGFpbmVyIHR5cGVzIGhlcmUsIHByaW9y
IHRvIHdlIGNoZWNrCisgIC8vIGZvciBwcm90b2NvbCBtZXNzYWdlIHR5cGVzIGluIG91ciBvcGVy
YXRvcjw8LiAgVGhlIHJhdGlvbmFsZSBpczoKKyAgLy8KKyAgLy8gRm9yIHByb3RvY29sIG1lc3Nh
Z2VzLCB3ZSB3YW50IHRvIGdpdmUgcGVvcGxlIGEgY2hhbmNlIHRvCisgIC8vIG92ZXJyaWRlIEdv
b2dsZSBNb2NrJ3MgZm9ybWF0IGJ5IGRlZmluaW5nIGEgUHJpbnRUbygpIG9yCisgIC8vIG9wZXJh
dG9yPDwuICBGb3IgU1RMIGNvbnRhaW5lcnMsIG90aGVyIGZvcm1hdHMgY2FuIGJlCisgIC8vIGlu
Y29tcGF0aWJsZSB3aXRoIEdvb2dsZSBNb2NrJ3MgZm9ybWF0IGZvciB0aGUgY29udGFpbmVyCisg
IC8vIGVsZW1lbnRzOyB0aGVyZWZvcmUgd2UgY2hlY2sgZm9yIGNvbnRhaW5lciB0eXBlcyBoZXJl
IHRvIGVuc3VyZQorICAvLyB0aGF0IG91ciBmb3JtYXQgaXMgdXNlZC4KKyAgLy8KKyAgLy8gTm90
ZSB0aGF0IE1TVkMgYW5kIGNsYW5nLWNsIGRvIGFsbG93IGFuIGltcGxpY2l0IGNvbnZlcnNpb24g
ZnJvbQorICAvLyBwb2ludGVyLXRvLWZ1bmN0aW9uIHRvIHBvaW50ZXItdG8tb2JqZWN0LCBidXQg
Y2xhbmctY2wgd2FybnMgb24gaXQuCisgIC8vIFNvIGRvbid0IHVzZSBJbXBsaWNpdGx5Q29udmVy
dGlibGUgaWYgaXQgY2FuIGJlIGhlbHBlZCBzaW5jZSBpdCB3aWxsCisgIC8vIGNhdXNlIHRoaXMg
d2FybmluZywgYW5kIHVzZSBhIHNlcGFyYXRlIG92ZXJsb2FkIG9mIERlZmF1bHRQcmludFRvIGZv
cgorICAvLyBmdW5jdGlvbiBwb2ludGVycyBzbyB0aGF0IHRoZSBgKm9zIDw8IHBgIGluIHRoZSBv
YmplY3QgcG9pbnRlciBvdmVybG9hZAorICAvLyBkb2Vzbid0IGNhdXNlIHRoYXQgd2FybmluZyBl
aXRoZXIuCisgIERlZmF1bHRQcmludFRvKAorICAgICAgV3JhcFByaW50ZXJUeXBlPHNpemVvZihJ
c0NvbnRhaW5lclRlc3Q8VD4oMCkpID09IHNpemVvZihJc0NvbnRhaW5lcikKKyAgICAgICAgICA/
IGtQcmludENvbnRhaW5lciA6ICFpc19wb2ludGVyPFQ+Ojp2YWx1ZQorICAgICAgICAgICAgICAg
ID8ga1ByaW50T3RoZXIKKyNpZiBHVEVTVF9MQU5HX0NYWDExCisgICAgICAgICAgICAgICAgOiBz
dGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8VD46OnR5cGU+Ojp2
YWx1ZQorI2Vsc2UKKyAgICAgICAgICAgICAgICA6ICFpbnRlcm5hbDo6SW1wbGljaXRseUNvbnZl
cnRpYmxlPFQsIGNvbnN0IHZvaWQqPjo6dmFsdWUKKyNlbmRpZgorICAgICAgICAgICAgICAgICAg
ICAgID8ga1ByaW50RnVuY3Rpb25Qb2ludGVyCisgICAgICAgICAgICAgICAgICAgICAgOiBrUHJp
bnRQb2ludGVyPigpLAorICAgICAgdmFsdWUsIG9zKTsKK30KKworLy8gVGhlIGZvbGxvd2luZyBs
aXN0IG9mIFByaW50VG8oKSBvdmVybG9hZHMgdGVsbHMKKy8vIFVuaXZlcnNhbFByaW50ZXI8VD46
OlByaW50KCkgaG93IHRvIHByaW50IHN0YW5kYXJkIHR5cGVzIChidWlsdC1pbgorLy8gdHlwZXMs
IHN0cmluZ3MsIHBsYWluIGFycmF5cywgYW5kIHBvaW50ZXJzKS4KKworLy8gT3ZlcmxvYWRzIGZv
ciB2YXJpb3VzIGNoYXIgdHlwZXMuCitHVEVTVF9BUElfIHZvaWQgUHJpbnRUbyh1bnNpZ25lZCBj
aGFyIGMsIDo6c3RkOjpvc3RyZWFtKiBvcyk7CitHVEVTVF9BUElfIHZvaWQgUHJpbnRUbyhzaWdu
ZWQgY2hhciBjLCA6OnN0ZDo6b3N0cmVhbSogb3MpOworaW5saW5lIHZvaWQgUHJpbnRUbyhjaGFy
IGMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAvLyBXaGVuIHByaW50aW5nIGEgcGxhaW4gY2hh
ciwgd2UgYWx3YXlzIHRyZWF0IGl0IGFzIHVuc2lnbmVkLiAgVGhpcworICAvLyB3YXksIHRoZSBv
dXRwdXQgd29uJ3QgYmUgYWZmZWN0ZWQgYnkgd2hldGhlciB0aGUgY29tcGlsZXIgdGhpbmtzCisg
IC8vIGNoYXIgaXMgc2lnbmVkIG9yIG5vdC4KKyAgUHJpbnRUbyhzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBjaGFyPihjKSwgb3MpOworfQorCisvLyBPdmVybG9hZHMgZm9yIG90aGVyIHNpbXBsZSBidWls
dC1pbiB0eXBlcy4KK2lubGluZSB2b2lkIFByaW50VG8oYm9vbCB4LCA6OnN0ZDo6b3N0cmVhbSog
b3MpIHsKKyAgKm9zIDw8ICh4ID8gInRydWUiIDogImZhbHNlIik7Cit9CisKKy8vIE92ZXJsb2Fk
IGZvciB3Y2hhcl90IHR5cGUuCisvLyBQcmludHMgYSB3Y2hhcl90IGFzIGEgc3ltYm9sIGlmIGl0
IGlzIHByaW50YWJsZSBvciBhcyBpdHMgaW50ZXJuYWwKKy8vIGNvZGUgb3RoZXJ3aXNlIGFuZCBh
bHNvIGFzIGl0cyBkZWNpbWFsIGNvZGUgKGV4Y2VwdCBmb3IgTCdcMCcpLgorLy8gVGhlIEwnXDAn
IGNoYXIgaXMgcHJpbnRlZCBhcyAiTCdcXDAnIi4gVGhlIGRlY2ltYWwgY29kZSBpcyBwcmludGVk
CisvLyBhcyBzaWduZWQgaW50ZWdlciB3aGVuIHdjaGFyX3QgaXMgaW1wbGVtZW50ZWQgYnkgdGhl
IGNvbXBpbGVyCisvLyBhcyBhIHNpZ25lZCB0eXBlIGFuZCBpcyBwcmludGVkIGFzIGFuIHVuc2ln
bmVkIGludGVnZXIgd2hlbiB3Y2hhcl90CisvLyBpcyBpbXBsZW1lbnRlZCBhcyBhbiB1bnNpZ25l
ZCB0eXBlLgorR1RFU1RfQVBJXyB2b2lkIFByaW50VG8od2NoYXJfdCB3YywgOjpzdGQ6Om9zdHJl
YW0qIG9zKTsKKworLy8gT3ZlcmxvYWRzIGZvciBDIHN0cmluZ3MuCitHVEVTVF9BUElfIHZvaWQg
UHJpbnRUbyhjb25zdCBjaGFyKiBzLCA6OnN0ZDo6b3N0cmVhbSogb3MpOworaW5saW5lIHZvaWQg
UHJpbnRUbyhjaGFyKiBzLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUbyhJbXBsaWNp
dENhc3RfPGNvbnN0IGNoYXIqPihzKSwgb3MpOworfQorCisvLyBzaWduZWQvdW5zaWduZWQgY2hh
ciBpcyBvZnRlbiB1c2VkIGZvciByZXByZXNlbnRpbmcgYmluYXJ5IGRhdGEsIHNvCisvLyB3ZSBw
cmludCBwb2ludGVycyB0byBpdCBhcyB2b2lkKiB0byBiZSBzYWZlLgoraW5saW5lIHZvaWQgUHJp
bnRUbyhjb25zdCBzaWduZWQgY2hhciogcywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50
VG8oSW1wbGljaXRDYXN0Xzxjb25zdCB2b2lkKj4ocyksIG9zKTsKK30KK2lubGluZSB2b2lkIFBy
aW50VG8oc2lnbmVkIGNoYXIqIHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFRvKElt
cGxpY2l0Q2FzdF88Y29uc3Qgdm9pZCo+KHMpLCBvcyk7Cit9CitpbmxpbmUgdm9pZCBQcmludFRv
KGNvbnN0IHVuc2lnbmVkIGNoYXIqIHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFRv
KEltcGxpY2l0Q2FzdF88Y29uc3Qgdm9pZCo+KHMpLCBvcyk7Cit9CitpbmxpbmUgdm9pZCBQcmlu
dFRvKHVuc2lnbmVkIGNoYXIqIHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFRvKElt
cGxpY2l0Q2FzdF88Y29uc3Qgdm9pZCo+KHMpLCBvcyk7Cit9CisKKy8vIE1TVkMgY2FuIGJlIGNv
bmZpZ3VyZWQgdG8gZGVmaW5lIHdjaGFyX3QgYXMgYSB0eXBlZGVmIG9mIHVuc2lnbmVkCisvLyBz
aG9ydC4gIEl0IGRlZmluZXMgX05BVElWRV9XQ0hBUl9UX0RFRklORUQgd2hlbiB3Y2hhcl90IGlz
IGEgbmF0aXZlCisvLyB0eXBlLiAgV2hlbiB3Y2hhcl90IGlzIGEgdHlwZWRlZiwgZGVmaW5pbmcg
YW4gb3ZlcmxvYWQgZm9yIGNvbnN0CisvLyB3Y2hhcl90KiB3b3VsZCBjYXVzZSB1bnNpZ25lZCBz
aG9ydCogYmUgcHJpbnRlZCBhcyBhIHdpZGUgc3RyaW5nLAorLy8gcG9zc2libHkgY2F1c2luZyBp
bnZhbGlkIG1lbW9yeSBhY2Nlc3Nlcy4KKyNpZiAhZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5l
ZChfTkFUSVZFX1dDSEFSX1RfREVGSU5FRCkKKy8vIE92ZXJsb2FkcyBmb3Igd2lkZSBDIHN0cmlu
Z3MKK0dURVNUX0FQSV8gdm9pZCBQcmludFRvKGNvbnN0IHdjaGFyX3QqIHMsIDo6c3RkOjpvc3Ry
ZWFtKiBvcyk7CitpbmxpbmUgdm9pZCBQcmludFRvKHdjaGFyX3QqIHMsIDo6c3RkOjpvc3RyZWFt
KiBvcykgeworICBQcmludFRvKEltcGxpY2l0Q2FzdF88Y29uc3Qgd2NoYXJfdCo+KHMpLCBvcyk7
Cit9CisjZW5kaWYKKworLy8gT3ZlcmxvYWQgZm9yIEMgYXJyYXlzLiAgTXVsdGktZGltZW5zaW9u
YWwgYXJyYXlzIGFyZSBwcmludGVkCisvLyBwcm9wZXJseS4KKworLy8gUHJpbnRzIHRoZSBnaXZl
biBudW1iZXIgb2YgZWxlbWVudHMgaW4gYW4gYXJyYXksIHdpdGhvdXQgcHJpbnRpbmcKKy8vIHRo
ZSBjdXJseSBicmFjZXMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgUHJpbnRSYXdBcnJh
eVRvKGNvbnN0IFQgYVtdLCBzaXplX3QgY291bnQsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBV
bml2ZXJzYWxQcmludChhWzBdLCBvcyk7CisgIGZvciAoc2l6ZV90IGkgPSAxOyBpICE9IGNvdW50
OyBpKyspIHsKKyAgICAqb3MgPDwgIiwgIjsKKyAgICBVbml2ZXJzYWxQcmludChhW2ldLCBvcyk7
CisgIH0KK30KKworLy8gT3ZlcmxvYWRzIGZvciA6OnN0cmluZyBhbmQgOjpzdGQ6OnN0cmluZy4K
KyNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworR1RFU1RfQVBJXyB2b2lkIFByaW50U3RyaW5n
VG8oY29uc3QgOjpzdHJpbmcmcywgOjpzdGQ6Om9zdHJlYW0qIG9zKTsKK2lubGluZSB2b2lkIFBy
aW50VG8oY29uc3QgOjpzdHJpbmcmIHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFN0
cmluZ1RvKHMsIG9zKTsKK30KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKKwor
R1RFU1RfQVBJXyB2b2lkIFByaW50U3RyaW5nVG8oY29uc3QgOjpzdGQ6OnN0cmluZyZzLCA6OnN0
ZDo6b3N0cmVhbSogb3MpOworaW5saW5lIHZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6c3RyaW5n
JiBzLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRTdHJpbmdUbyhzLCBvcyk7Cit9CisK
Ky8vIE92ZXJsb2FkcyBmb3IgOjp3c3RyaW5nIGFuZCA6OnN0ZDo6d3N0cmluZy4KKyNpZiBHVEVT
VF9IQVNfR0xPQkFMX1dTVFJJTkcKK0dURVNUX0FQSV8gdm9pZCBQcmludFdpZGVTdHJpbmdUbyhj
b25zdCA6OndzdHJpbmcmcywgOjpzdGQ6Om9zdHJlYW0qIG9zKTsKK2lubGluZSB2b2lkIFByaW50
VG8oY29uc3QgOjp3c3RyaW5nJiBzLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRXaWRl
U3RyaW5nVG8ocywgb3MpOworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcK
KworI2lmIEdURVNUX0hBU19TVERfV1NUUklORworR1RFU1RfQVBJXyB2b2lkIFByaW50V2lkZVN0
cmluZ1RvKGNvbnN0IDo6c3RkOjp3c3RyaW5nJnMsIDo6c3RkOjpvc3RyZWFtKiBvcyk7Citpbmxp
bmUgdm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp3c3RyaW5nJiBzLCA6OnN0ZDo6b3N0cmVhbSog
b3MpIHsKKyAgUHJpbnRXaWRlU3RyaW5nVG8ocywgb3MpOworfQorI2VuZGlmICAvLyBHVEVTVF9I
QVNfU1REX1dTVFJJTkcKKworI2lmIEdURVNUX0hBU19UUjFfVFVQTEUgfHwgR1RFU1RfSEFTX1NU
RF9UVVBMRV8KKy8vIEhlbHBlciBmdW5jdGlvbiBmb3IgcHJpbnRpbmcgYSB0dXBsZS4gIFQgbXVz
dCBiZSBpbnN0YW50aWF0ZWQgd2l0aAorLy8gYSB0dXBsZSB0eXBlLgordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Cit2b2lkIFByaW50VHVwbGVUbyhjb25zdCBUJiB0LCA6OnN0ZDo6b3N0cmVhbSogb3Mp
OworI2VuZGlmICAvLyBHVEVTVF9IQVNfVFIxX1RVUExFIHx8IEdURVNUX0hBU19TVERfVFVQTEVf
CisKKyNpZiBHVEVTVF9IQVNfVFIxX1RVUExFCisvLyBPdmVybG9hZCBmb3IgOjpzdGQ6OnRyMTo6
dHVwbGUuICBOZWVkZWQgZm9yIHByaW50aW5nIGZ1bmN0aW9uIGFyZ3VtZW50cywKKy8vIHdoaWNo
IGFyZSBwYWNrZWQgYXMgdHVwbGVzLgorCisvLyBPdmVybG9hZGVkIFByaW50VG8oKSBmb3IgdHVw
bGVzIG9mIHZhcmlvdXMgYXJpdGllcy4gIFdlIHN1cHBvcnQKKy8vIHR1cGxlcyBvZiB1cC10byAx
MCBmaWVsZHMuICBUaGUgZm9sbG93aW5nIGltcGxlbWVudGF0aW9uIHdvcmtzCisvLyByZWdhcmRs
ZXNzIG9mIHdoZXRoZXIgdHIxOjp0dXBsZSBpcyBpbXBsZW1lbnRlZCB1c2luZyB0aGUKKy8vIG5v
bi1zdGFuZGFyZCB2YXJpYWRpYyB0ZW1wbGF0ZSBmZWF0dXJlIG9yIG5vdC4KKworaW5saW5lIHZv
aWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6dHIxOjp0dXBsZTw+JiB0LCA6OnN0ZDo6b3N0cmVhbSog
b3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQx
Pgordm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp0cjE6OnR1cGxlPFQxPiYgdCwgOjpzdGQ6Om9z
dHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0LCBvcyk7Cit9CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUMSwgdHlwZW5hbWUgVDI+Cit2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnRyMTo6dHVw
bGU8VDEsIFQyPiYgdCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0LCBv
cyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQz
Pgordm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMiwgVDM+JiB0LCA6
OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Pgor
dm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0PiYgdCwg
OjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0LCBvcyk7Cit9CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwg
dHlwZW5hbWUgVDU+Cit2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQy
LCBUMywgVDQsIFQ1PiYgdCwKKyAgICAgICAgICAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAg
UHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFt
ZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICAgICAgICB0
eXBlbmFtZSBUNj4KK3ZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDIs
IFQzLCBUNCwgVDUsIFQ2PiYgdCwKKyAgICAgICAgICAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIHsK
KyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBl
bmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICAgICAg
ICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDc+Cit2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnRy
MTo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDc+JiB0LAorICAgICAgICAgICAgIDo6
c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFR1cGxlVG8odCwgb3MpOworfQorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5
cGVuYW1lIFQ1LAorICAgICAgICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUg
VDg+Cit2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQs
IFQ1LCBUNiwgVDcsIFQ4PiYgdCwKKyAgICAgICAgICAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIHsK
KyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBl
bmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICAgICAg
ICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOT4KK3Zv
aWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2
LCBUNywgVDgsIFQ5PiYgdCwKKyAgICAgICAgICAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAg
UHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFt
ZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICAgICAgICB0
eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5h
bWUgVDEwPgordm9pZCBQcmludFRvKAorICAgIGNvbnN0IDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBU
MiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMD4mIHQsCisgICAgOjpzdGQ6Om9zdHJl
YW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0LCBvcyk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hB
U19UUjFfVFVQTEUKKworI2lmIEdURVNUX0hBU19TVERfVFVQTEVfCit0ZW1wbGF0ZSA8dHlwZW5h
bWUuLi4gVHlwZXM+Cit2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnR1cGxlPFR5cGVzLi4uPiYg
dCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0LCBvcyk7Cit9CisjZW5k
aWYgIC8vIEdURVNUX0hBU19TVERfVFVQTEVfCisKKy8vIE92ZXJsb2FkIGZvciBzdGQ6OnBhaXIu
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgordm9pZCBQcmludFRvKGNvbnN0
IDo6c3RkOjpwYWlyPFQxLCBUMj4mIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgKm9z
IDw8ICcoJzsKKyAgLy8gV2UgY2Fubm90IHVzZSBVbml2ZXJzYWxQcmludCh2YWx1ZS5maXJzdCwg
b3MpIGhlcmUsIGFzIFQxIG1heSBiZQorICAvLyBhIHJlZmVyZW5jZSB0eXBlLiAgVGhlIHNhbWUg
Zm9yIHByaW50aW5nIHZhbHVlLnNlY29uZC4KKyAgVW5pdmVyc2FsUHJpbnRlcjxUMT46OlByaW50
KHZhbHVlLmZpcnN0LCBvcyk7CisgICpvcyA8PCAiLCAiOworICBVbml2ZXJzYWxQcmludGVyPFQy
Pjo6UHJpbnQodmFsdWUuc2Vjb25kLCBvcyk7CisgICpvcyA8PCAnKSc7Cit9CisKKy8vIEltcGxl
bWVudHMgcHJpbnRpbmcgYSBub24tcmVmZXJlbmNlIHR5cGUgVCBieSBsZXR0aW5nIHRoZSBjb21w
aWxlcgorLy8gcGljayB0aGUgcmlnaHQgb3ZlcmxvYWQgb2YgUHJpbnRUbygpIGZvciBULgordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBVbml2ZXJzYWxQcmludGVyIHsKKyBwdWJsaWM6Cisg
IC8vIE1TVkMgd2FybnMgYWJvdXQgYWRkaW5nIGNvbnN0IHRvIGEgZnVuY3Rpb24gdHlwZSwgc28g
d2Ugd2FudCB0bworICAvLyBkaXNhYmxlIHRoZSB3YXJuaW5nLgorICBHVEVTVF9ESVNBQkxFX01T
Q19XQVJOSU5HU19QVVNIXyg0MTgwKQorCisgIC8vIE5vdGU6IHdlIGRlbGliZXJhdGVseSBkb24n
dCBjYWxsIHRoaXMgUHJpbnRUbygpLCBhcyB0aGF0IG5hbWUKKyAgLy8gY29uZmxpY3RzIHdpdGgg
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6UHJpbnRUbyBpbiB0aGUgYm9keSBvZiB0aGUKKyAgLy8gZnVu
Y3Rpb24uCisgIHN0YXRpYyB2b2lkIFByaW50KGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVh
bSogb3MpIHsKKyAgICAvLyBCeSBkZWZhdWx0LCA6OnRlc3Rpbmc6OmludGVybmFsOjpQcmludFRv
KCkgaXMgdXNlZCBmb3IgcHJpbnRpbmcKKyAgICAvLyB0aGUgdmFsdWUuCisgICAgLy8KKyAgICAv
LyBUaGFua3MgdG8gS29lbmlnIGxvb2stdXAsIGlmIFQgaXMgYSBjbGFzcyBhbmQgaGFzIGl0cyBv
d24KKyAgICAvLyBQcmludFRvKCkgZnVuY3Rpb24gZGVmaW5lZCBpbiBpdHMgbmFtZXNwYWNlLCB0
aGF0IGZ1bmN0aW9uIHdpbGwKKyAgICAvLyBiZSB2aXNpYmxlIGhlcmUuICBTaW5jZSBpdCBpcyBt
b3JlIHNwZWNpZmljIHRoYW4gdGhlIGdlbmVyaWMgb25lcworICAgIC8vIGluIDo6dGVzdGluZzo6
aW50ZXJuYWwsIGl0IHdpbGwgYmUgcGlja2VkIGJ5IHRoZSBjb21waWxlciBpbiB0aGUKKyAgICAv
LyBmb2xsb3dpbmcgc3RhdGVtZW50IC0gZXhhY3RseSB3aGF0IHdlIHdhbnQuCisgICAgUHJpbnRU
byh2YWx1ZSwgb3MpOworICB9CisKKyAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygp
Cit9OworCisvLyBVbml2ZXJzYWxQcmludEFycmF5KGJlZ2luLCBsZW4sIG9zKSBwcmludHMgYW4g
YXJyYXkgb2YgJ2xlbicKKy8vIGVsZW1lbnRzLCBzdGFydGluZyBhdCBhZGRyZXNzICdiZWdpbicu
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgVW5pdmVyc2FsUHJpbnRBcnJheShjb25zdCBU
KiBiZWdpbiwgc2l6ZV90IGxlbiwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIGlmIChsZW4gPT0g
MCkgeworICAgICpvcyA8PCAie30iOworICB9IGVsc2UgeworICAgICpvcyA8PCAieyAiOworICAg
IGNvbnN0IHNpemVfdCBrVGhyZXNob2xkID0gMTg7CisgICAgY29uc3Qgc2l6ZV90IGtDaHVua1Np
emUgPSA4OworICAgIC8vIElmIHRoZSBhcnJheSBoYXMgbW9yZSB0aGFuIGtUaHJlc2hvbGQgZWxl
bWVudHMsIHdlJ2xsIGhhdmUgdG8KKyAgICAvLyBvbWl0IHNvbWUgZGV0YWlscyBieSBwcmludGlu
ZyBvbmx5IHRoZSBmaXJzdCBhbmQgdGhlIGxhc3QKKyAgICAvLyBrQ2h1bmtTaXplIGVsZW1lbnRz
LgorICAgIC8vIFRPRE8od2FuQGdvb2dsZS5jb20pOiBsZXQgdGhlIHVzZXIgY29udHJvbCB0aGUg
dGhyZXNob2xkIHVzaW5nIGEgZmxhZy4KKyAgICBpZiAobGVuIDw9IGtUaHJlc2hvbGQpIHsKKyAg
ICAgIFByaW50UmF3QXJyYXlUbyhiZWdpbiwgbGVuLCBvcyk7CisgICAgfSBlbHNlIHsKKyAgICAg
IFByaW50UmF3QXJyYXlUbyhiZWdpbiwga0NodW5rU2l6ZSwgb3MpOworICAgICAgKm9zIDw8ICIs
IC4uLiwgIjsKKyAgICAgIFByaW50UmF3QXJyYXlUbyhiZWdpbiArIGxlbiAtIGtDaHVua1NpemUs
IGtDaHVua1NpemUsIG9zKTsKKyAgICB9CisgICAgKm9zIDw8ICIgfSI7CisgIH0KK30KKy8vIFRo
aXMgb3ZlcmxvYWQgcHJpbnRzIGEgKGNvbnN0KSBjaGFyIGFycmF5IGNvbXBhY3RseS4KK0dURVNU
X0FQSV8gdm9pZCBVbml2ZXJzYWxQcmludEFycmF5KAorICAgIGNvbnN0IGNoYXIqIGJlZ2luLCBz
aXplX3QgbGVuLCA6OnN0ZDo6b3N0cmVhbSogb3MpOworCisvLyBUaGlzIG92ZXJsb2FkIHByaW50
cyBhIChjb25zdCkgd2NoYXJfdCBhcnJheSBjb21wYWN0bHkuCitHVEVTVF9BUElfIHZvaWQgVW5p
dmVyc2FsUHJpbnRBcnJheSgKKyAgICBjb25zdCB3Y2hhcl90KiBiZWdpbiwgc2l6ZV90IGxlbiwg
OjpzdGQ6Om9zdHJlYW0qIG9zKTsKKworLy8gSW1wbGVtZW50cyBwcmludGluZyBhbiBhcnJheSB0
eXBlIFRbTl0uCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4+CitjbGFzcyBVbml2ZXJz
YWxQcmludGVyPFRbTl0+IHsKKyBwdWJsaWM6CisgIC8vIFByaW50cyB0aGUgZ2l2ZW4gYXJyYXks
IG9taXR0aW5nIHNvbWUgZWxlbWVudHMgd2hlbiB0aGVyZSBhcmUgdG9vCisgIC8vIG1hbnkuCisg
IHN0YXRpYyB2b2lkIFByaW50KGNvbnN0IFQgKCZhKVtOXSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7
CisgICAgVW5pdmVyc2FsUHJpbnRBcnJheShhLCBOLCBvcyk7CisgIH0KK307CisKKy8vIEltcGxl
bWVudHMgcHJpbnRpbmcgYSByZWZlcmVuY2UgdHlwZSBUJi4KK3RlbXBsYXRlIDx0eXBlbmFtZSBU
PgorY2xhc3MgVW5pdmVyc2FsUHJpbnRlcjxUJj4geworIHB1YmxpYzoKKyAgLy8gTVNWQyB3YXJu
cyBhYm91dCBhZGRpbmcgY29uc3QgdG8gYSBmdW5jdGlvbiB0eXBlLCBzbyB3ZSB3YW50IHRvCisg
IC8vIGRpc2FibGUgdGhlIHdhcm5pbmcuCisgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BV
U0hfKDQxODApCisKKyAgc3RhdGljIHZvaWQgUHJpbnQoY29uc3QgVCYgdmFsdWUsIDo6c3RkOjpv
c3RyZWFtKiBvcykgeworICAgIC8vIFByaW50cyB0aGUgYWRkcmVzcyBvZiB0aGUgdmFsdWUuICBX
ZSB1c2UgcmVpbnRlcnByZXRfY2FzdCBoZXJlCisgICAgLy8gYXMgc3RhdGljX2Nhc3QgZG9lc24n
dCBjb21waWxlIHdoZW4gVCBpcyBhIGZ1bmN0aW9uIHR5cGUuCisgICAgKm9zIDw8ICJAIiA8PCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPigmdmFsdWUpIDw8ICIgIjsKKworICAgIC8vIFRo
ZW4gcHJpbnRzIHRoZSB2YWx1ZSBpdHNlbGYuCisgICAgVW5pdmVyc2FsUHJpbnQodmFsdWUsIG9z
KTsKKyAgfQorCisgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKQorfTsKKworLy8g
UHJpbnRzIGEgdmFsdWUgdGVyc2VseTogZm9yIGEgcmVmZXJlbmNlIHR5cGUsIHRoZSByZWZlcmVu
Y2VkIHZhbHVlCisvLyAoYnV0IG5vdCB0aGUgYWRkcmVzcykgaXMgcHJpbnRlZDsgZm9yIGEgKGNv
bnN0KSBjaGFyIHBvaW50ZXIsIHRoZQorLy8gTlVMLXRlcm1pbmF0ZWQgc3RyaW5nIChidXQgbm90
IHRoZSBwb2ludGVyKSBpcyBwcmludGVkLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNz
IFVuaXZlcnNhbFRlcnNlUHJpbnRlciB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBQcmludChj
b25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgVW5pdmVyc2FsUHJpbnQo
dmFsdWUsIG9zKTsKKyAgfQorfTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVW5pdmVy
c2FsVGVyc2VQcmludGVyPFQmPiB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBQcmludChjb25z
dCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgVW5pdmVyc2FsUHJpbnQodmFs
dWUsIG9zKTsKKyAgfQorfTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTj4KK2NsYXNz
IFVuaXZlcnNhbFRlcnNlUHJpbnRlcjxUW05dPiB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBQ
cmludChjb25zdCBUICgmdmFsdWUpW05dLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgICBVbml2
ZXJzYWxQcmludGVyPFRbTl0+OjpQcmludCh2YWx1ZSwgb3MpOworICB9Cit9OwordGVtcGxhdGUg
PD4KK2NsYXNzIFVuaXZlcnNhbFRlcnNlUHJpbnRlcjxjb25zdCBjaGFyKj4geworIHB1YmxpYzoK
KyAgc3RhdGljIHZvaWQgUHJpbnQoY29uc3QgY2hhciogc3RyLCA6OnN0ZDo6b3N0cmVhbSogb3Mp
IHsKKyAgICBpZiAoc3RyID09IE5VTEwpIHsKKyAgICAgICpvcyA8PCAiTlVMTCI7CisgICAgfSBl
bHNlIHsKKyAgICAgIFVuaXZlcnNhbFByaW50KHN0ZDo6c3RyaW5nKHN0ciksIG9zKTsKKyAgICB9
CisgIH0KK307Cit0ZW1wbGF0ZSA8PgorY2xhc3MgVW5pdmVyc2FsVGVyc2VQcmludGVyPGNoYXIq
PiB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBQcmludChjaGFyKiBzdHIsIDo6c3RkOjpvc3Ry
ZWFtKiBvcykgeworICAgIFVuaXZlcnNhbFRlcnNlUHJpbnRlcjxjb25zdCBjaGFyKj46OlByaW50
KHN0ciwgb3MpOworICB9Cit9OworCisjaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCit0ZW1wbGF0
ZSA8PgorY2xhc3MgVW5pdmVyc2FsVGVyc2VQcmludGVyPGNvbnN0IHdjaGFyX3QqPiB7CisgcHVi
bGljOgorICBzdGF0aWMgdm9pZCBQcmludChjb25zdCB3Y2hhcl90KiBzdHIsIDo6c3RkOjpvc3Ry
ZWFtKiBvcykgeworICAgIGlmIChzdHIgPT0gTlVMTCkgeworICAgICAgKm9zIDw8ICJOVUxMIjsK
KyAgICB9IGVsc2UgeworICAgICAgVW5pdmVyc2FsUHJpbnQoOjpzdGQ6OndzdHJpbmcoc3RyKSwg
b3MpOworICAgIH0KKyAgfQorfTsKKyNlbmRpZgorCit0ZW1wbGF0ZSA8PgorY2xhc3MgVW5pdmVy
c2FsVGVyc2VQcmludGVyPHdjaGFyX3QqPiB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBQcmlu
dCh3Y2hhcl90KiBzdHIsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAgIFVuaXZlcnNhbFRlcnNl
UHJpbnRlcjxjb25zdCB3Y2hhcl90Kj46OlByaW50KHN0ciwgb3MpOworICB9Cit9OworCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgVW5pdmVyc2FsVGVyc2VQcmludChjb25zdCBUJiB2YWx1
ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFVuaXZlcnNhbFRlcnNlUHJpbnRlcjxUPjo6UHJp
bnQodmFsdWUsIG9zKTsKK30KKworLy8gUHJpbnRzIGEgdmFsdWUgdXNpbmcgdGhlIHR5cGUgaW5m
ZXJyZWQgYnkgdGhlIGNvbXBpbGVyLiAgVGhlCisvLyBkaWZmZXJlbmNlIGJldHdlZW4gdGhpcyBh
bmQgVW5pdmVyc2FsVGVyc2VQcmludCgpIGlzIHRoYXQgZm9yIGEKKy8vIChjb25zdCkgY2hhciBw
b2ludGVyLCB0aGlzIHByaW50cyBib3RoIHRoZSBwb2ludGVyIGFuZCB0aGUKKy8vIE5VTC10ZXJt
aW5hdGVkIHN0cmluZy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBVbml2ZXJzYWxQcmlu
dChjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIC8vIEEgd29ya2Fyb25k
IGZvciB0aGUgYnVnIGluIFZDKysgNy4xIHRoYXQgcHJldmVudHMgdXMgZnJvbSBpbnN0YW50aWF0
aW5nCisgIC8vIFVuaXZlcnNhbFByaW50ZXIgd2l0aCBUIGRpcmVjdGx5LgorICB0eXBlZGVmIFQg
VDE7CisgIFVuaXZlcnNhbFByaW50ZXI8VDE+OjpQcmludCh2YWx1ZSwgb3MpOworfQorCit0eXBl
ZGVmIDo6c3RkOjp2ZWN0b3I8c3RyaW5nPiBTdHJpbmdzOworCisvLyBUdXBsZVBvbGljeTxUdXBs
ZVQ+IG11c3QgcHJvdmlkZToKKy8vIC0gdHVwbGVfc2l6ZQorLy8gICAgIHNpemUgb2YgdHVwbGUg
VHVwbGVULgorLy8gLSBnZXQ8c2l6ZV90IEk+KGNvbnN0IFR1cGxlVCYgdCkKKy8vICAgICBzdGF0
aWMgZnVuY3Rpb24gZXh0cmFjdGluZyBlbGVtZW50IEkgb2YgdHVwbGUgVHVwbGVULgorLy8gLSB0
dXBsZV9lbGVtZW50PHNpemVfdCBJPjo6dHlwZQorLy8gICAgIHR5cGUgb2YgZWxlbWVudCBJIG9m
IHR1cGxlIFR1cGxlVC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZVQ+CitzdHJ1Y3QgVHVwbGVQ
b2xpY3k7CisKKyNpZiBHVEVTVF9IQVNfVFIxX1RVUExFCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVw
bGVUPgorc3RydWN0IFR1cGxlUG9saWN5IHsKKyAgdHlwZWRlZiBUdXBsZVQgVHVwbGU7CisgIHN0
YXRpYyBjb25zdCBzaXplX3QgdHVwbGVfc2l6ZSA9IDo6c3RkOjp0cjE6OnR1cGxlX3NpemU8VHVw
bGU+Ojp2YWx1ZTsKKworICB0ZW1wbGF0ZSA8c2l6ZV90IEk+CisgIHN0cnVjdCB0dXBsZV9lbGVt
ZW50IDogOjpzdGQ6OnRyMTo6dHVwbGVfZWxlbWVudDxJLCBUdXBsZT4ge307CisKKyAgdGVtcGxh
dGUgPHNpemVfdCBJPgorICBzdGF0aWMgdHlwZW5hbWUgQWRkUmVmZXJlbmNlPAorICAgICAgY29u
c3QgdHlwZW5hbWUgOjpzdGQ6OnRyMTo6dHVwbGVfZWxlbWVudDxJLCBUdXBsZT46OnR5cGU+Ojp0
eXBlIGdldCgKKyAgICAgIGNvbnN0IFR1cGxlJiB0dXBsZSkgeworICAgIHJldHVybiA6OnN0ZDo6
dHIxOjpnZXQ8ST4odHVwbGUpOworICB9Cit9OwordGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxlVD4K
K2NvbnN0IHNpemVfdCBUdXBsZVBvbGljeTxUdXBsZVQ+Ojp0dXBsZV9zaXplOworI2VuZGlmICAv
LyBHVEVTVF9IQVNfVFIxX1RVUExFCisKKyNpZiBHVEVTVF9IQVNfU1REX1RVUExFXwordGVtcGxh
dGUgPHR5cGVuYW1lLi4uIFR5cGVzPgorc3RydWN0IFR1cGxlUG9saWN5PCA6OnN0ZDo6dHVwbGU8
VHlwZXMuLi4+ID4geworICB0eXBlZGVmIDo6c3RkOjp0dXBsZTxUeXBlcy4uLj4gVHVwbGU7Cisg
IHN0YXRpYyBjb25zdCBzaXplX3QgdHVwbGVfc2l6ZSA9IDo6c3RkOjp0dXBsZV9zaXplPFR1cGxl
Pjo6dmFsdWU7CisKKyAgdGVtcGxhdGUgPHNpemVfdCBJPgorICBzdHJ1Y3QgdHVwbGVfZWxlbWVu
dCA6IDo6c3RkOjp0dXBsZV9lbGVtZW50PEksIFR1cGxlPiB7fTsKKworICB0ZW1wbGF0ZSA8c2l6
ZV90IEk+CisgIHN0YXRpYyBjb25zdCB0eXBlbmFtZSA6OnN0ZDo6dHVwbGVfZWxlbWVudDxJLCBU
dXBsZT46OnR5cGUmIGdldCgKKyAgICAgIGNvbnN0IFR1cGxlJiB0dXBsZSkgeworICAgIHJldHVy
biA6OnN0ZDo6Z2V0PEk+KHR1cGxlKTsKKyAgfQorfTsKK3RlbXBsYXRlIDx0eXBlbmFtZS4uLiBU
eXBlcz4KK2NvbnN0IHNpemVfdCBUdXBsZVBvbGljeTwgOjpzdGQ6OnR1cGxlPFR5cGVzLi4uPiA+
Ojp0dXBsZV9zaXplOworI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX1RVUExFXworCisjaWYgR1RF
U1RfSEFTX1RSMV9UVVBMRSB8fCBHVEVTVF9IQVNfU1REX1RVUExFXworLy8gVGhpcyBoZWxwZXIg
dGVtcGxhdGUgYWxsb3dzIFByaW50VG8oKSBmb3IgdHVwbGVzIGFuZAorLy8gVW5pdmVyc2FsVGVy
c2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKCkgdG8gYmUgZGVmaW5lZCBieQorLy8gaW5kdWN0
aW9uIG9uIHRoZSBudW1iZXIgb2YgdHVwbGUgZmllbGRzLiAgVGhlIGlkZWEgaXMgdGhhdAorLy8g
VHVwbGVQcmVmaXhQcmludGVyPE4+OjpQcmludFByZWZpeFRvKHQsIG9zKSBwcmludHMgdGhlIGZp
cnN0IE4KKy8vIGZpZWxkcyBpbiB0dXBsZSB0LCBhbmQgY2FuIGJlIGRlZmluZWQgaW4gdGVybXMg
b2YKKy8vIFR1cGxlUHJlZml4UHJpbnRlcjxOIC0gMT4uCisvLworLy8gVGhlIGluZHVjdGl2ZSBj
YXNlLgordGVtcGxhdGUgPHNpemVfdCBOPgorc3RydWN0IFR1cGxlUHJlZml4UHJpbnRlciB7Cisg
IC8vIFByaW50cyB0aGUgZmlyc3QgTiBmaWVsZHMgb2YgYSB0dXBsZS4KKyAgdGVtcGxhdGUgPHR5
cGVuYW1lIFR1cGxlPgorICBzdGF0aWMgdm9pZCBQcmludFByZWZpeFRvKGNvbnN0IFR1cGxlJiB0
LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgICBUdXBsZVByZWZpeFByaW50ZXI8TiAtIDE+OjpQ
cmludFByZWZpeFRvKHQsIG9zKTsKKyAgICBHVEVTVF9JTlRFTlRJT05BTF9DT05TVF9DT05EX1BV
U0hfKCkKKyAgICBpZiAoTiA+IDEpIHsKKyAgICBHVEVTVF9JTlRFTlRJT05BTF9DT05TVF9DT05E
X1BPUF8oKQorICAgICAgKm9zIDw8ICIsICI7CisgICAgfQorICAgIFVuaXZlcnNhbFByaW50ZXI8
CisgICAgICAgIHR5cGVuYW1lIFR1cGxlUG9saWN5PFR1cGxlPjo6dGVtcGxhdGUgdHVwbGVfZWxl
bWVudDxOIC0gMT46OnR5cGU+CisgICAgICAgIDo6UHJpbnQoVHVwbGVQb2xpY3k8VHVwbGU+Ojp0
ZW1wbGF0ZSBnZXQ8TiAtIDE+KHQpLCBvcyk7CisgIH0KKworICAvLyBUZXJzZWx5IHByaW50cyB0
aGUgZmlyc3QgTiBmaWVsZHMgb2YgYSB0dXBsZSB0byBhIHN0cmluZyB2ZWN0b3IsCisgIC8vIG9u
ZSBlbGVtZW50IGZvciBlYWNoIGZpZWxkLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGU+Cisg
IHN0YXRpYyB2b2lkIFRlcnNlUHJpbnRQcmVmaXhUb1N0cmluZ3MoY29uc3QgVHVwbGUmIHQsIFN0
cmluZ3MqIHN0cmluZ3MpIHsKKyAgICBUdXBsZVByZWZpeFByaW50ZXI8TiAtIDE+OjpUZXJzZVBy
aW50UHJlZml4VG9TdHJpbmdzKHQsIHN0cmluZ3MpOworICAgIDo6c3RkOjpzdHJpbmdzdHJlYW0g
c3M7CisgICAgVW5pdmVyc2FsVGVyc2VQcmludChUdXBsZVBvbGljeTxUdXBsZT46OnRlbXBsYXRl
IGdldDxOIC0gMT4odCksICZzcyk7CisgICAgc3RyaW5ncy0+cHVzaF9iYWNrKHNzLnN0cigpKTsK
KyAgfQorfTsKKworLy8gQmFzZSBjYXNlLgordGVtcGxhdGUgPD4KK3N0cnVjdCBUdXBsZVByZWZp
eFByaW50ZXI8MD4geworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGU+CisgIHN0YXRpYyB2b2lk
IFByaW50UHJlZml4VG8oY29uc3QgVHVwbGUmLCA6OnN0ZDo6b3N0cmVhbSopIHt9CisKKyAgdGVt
cGxhdGUgPHR5cGVuYW1lIFR1cGxlPgorICBzdGF0aWMgdm9pZCBUZXJzZVByaW50UHJlZml4VG9T
dHJpbmdzKGNvbnN0IFR1cGxlJiwgU3RyaW5ncyopIHt9Cit9OworCisvLyBIZWxwZXIgZnVuY3Rp
b24gZm9yIHByaW50aW5nIGEgdHVwbGUuCisvLyBUdXBsZSBtdXN0IGJlIGVpdGhlciBzdGQ6OnRy
MTo6dHVwbGUgb3Igc3RkOjp0dXBsZSB0eXBlLgordGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxlPgor
dm9pZCBQcmludFR1cGxlVG8oY29uc3QgVHVwbGUmIHQsIDo6c3RkOjpvc3RyZWFtKiBvcykgewor
ICAqb3MgPDwgIigiOworICBUdXBsZVByZWZpeFByaW50ZXI8VHVwbGVQb2xpY3k8VHVwbGU+Ojp0
dXBsZV9zaXplPjo6UHJpbnRQcmVmaXhUbyh0LCBvcyk7CisgICpvcyA8PCAiKSI7Cit9CisKKy8v
IFByaW50cyB0aGUgZmllbGRzIG9mIGEgdHVwbGUgdGVyc2VseSB0byBhIHN0cmluZyB2ZWN0b3Is
IG9uZQorLy8gZWxlbWVudCBmb3IgZWFjaCBmaWVsZC4gIFNlZSB0aGUgY29tbWVudCBiZWZvcmUK
Ky8vIFVuaXZlcnNhbFRlcnNlUHJpbnQoKSBmb3IgaG93IHdlIGRlZmluZSAidGVyc2VseSIuCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGU+CitTdHJpbmdzIFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBs
ZUZpZWxkc1RvU3RyaW5ncyhjb25zdCBUdXBsZSYgdmFsdWUpIHsKKyAgU3RyaW5ncyByZXN1bHQ7
CisgIFR1cGxlUHJlZml4UHJpbnRlcjxUdXBsZVBvbGljeTxUdXBsZT46OnR1cGxlX3NpemU+OjoK
KyAgICAgIFRlcnNlUHJpbnRQcmVmaXhUb1N0cmluZ3ModmFsdWUsICZyZXN1bHQpOworICByZXR1
cm4gcmVzdWx0OworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfVFIxX1RVUExFIHx8IEdURVNUX0hB
U19TVERfVFVQTEVfCisKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KKzo6c3RkOjpzdHJpbmcgUHJpbnRUb1N0cmluZyhjb25zdCBUJiB2YWx1ZSkgewor
ICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzOworICBpbnRlcm5hbDo6VW5pdmVyc2FsVGVyc2VQcmlu
dGVyPFQ+OjpQcmludCh2YWx1ZSwgJnNzKTsKKyAgcmV0dXJuIHNzLnN0cigpOworfQorCit9ICAv
LyBuYW1lc3BhY2UgdGVzdGluZworCisvLyBJbmNsdWRlIGFueSBjdXN0b20gcHJpbnRlciBhZGRl
ZCBieSB0aGUgbG9jYWwgaW5zdGFsbGF0aW9uLgorLy8gV2UgbXVzdCBpbmNsdWRlIHRoaXMgaGVh
ZGVyIGF0IHRoZSBlbmQgdG8gbWFrZSBzdXJlIGl0IGNhbiB1c2UgdGhlCisvLyBkZWNsYXJhdGlv
bnMgZnJvbSB0aGlzIGZpbGUuCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0
LXByaW50ZXJzLmgiCisKKyNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QUklO
VEVSU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1zcGku
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3Qtc3BpLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGU1
YzEwY2Y3Y2Q3ZDk3Y2VmNDIwNzc3ZWU2NGZmNTZlYzU5NjYzMAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3Qtc3BpLmgKQEAgLTAsMCArMSwyMzEgQEAK
Ky8vIENvcHlyaWdodCAyMDA3LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8g
ZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8v
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBBdXRo
b3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisvLworLy8gVXRpbGl0aWVzIGZvciB0
ZXN0aW5nIEdvb2dsZSBUZXN0IGl0c2VsZiBhbmQgY29kZSB0aGF0IHVzZXMgR29vZ2xlIFRlc3QK
Ky8vIChlLmcuIGZyYW1ld29ya3MgYnVpbHQgb24gdG9wIG9mIEdvb2dsZSBUZXN0KS4KKworI2lm
bmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1NQSV9IXworI2RlZmluZSBHVEVTVF9JTkNM
VURFX0dURVNUX0dURVNUX1NQSV9IXworCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFt
ZXNwYWNlIHRlc3RpbmcgeworCisvLyBUaGlzIGhlbHBlciBjbGFzcyBjYW4gYmUgdXNlZCB0byBt
b2NrIG91dCBHb29nbGUgVGVzdCBmYWlsdXJlIHJlcG9ydGluZworLy8gc28gdGhhdCB3ZSBjYW4g
dGVzdCBHb29nbGUgVGVzdCBvciBjb2RlIHRoYXQgYnVpbGRzIG9uIEdvb2dsZSBUZXN0LgorLy8K
Ky8vIEFuIG9iamVjdCBvZiB0aGlzIGNsYXNzIGFwcGVuZHMgYSBUZXN0UGFydFJlc3VsdCBvYmpl
Y3QgdG8gdGhlCisvLyBUZXN0UGFydFJlc3VsdEFycmF5IG9iamVjdCBnaXZlbiBpbiB0aGUgY29u
c3RydWN0b3Igd2hlbmV2ZXIgYSBHb29nbGUgVGVzdAorLy8gZmFpbHVyZSBpcyByZXBvcnRlZC4g
SXQgY2FuIGVpdGhlciBpbnRlcmNlcHQgb25seSBmYWlsdXJlcyB0aGF0IGFyZQorLy8gZ2VuZXJh
dGVkIGluIHRoZSBzYW1lIHRocmVhZCB0aGF0IGNyZWF0ZWQgdGhpcyBvYmplY3Qgb3IgaXQgY2Fu
IGludGVyY2VwdAorLy8gYWxsIGdlbmVyYXRlZCBmYWlsdXJlcy4gVGhlIHNjb3BlIG9mIHRoaXMg
bW9jayBvYmplY3QgY2FuIGJlIGNvbnRyb2xsZWQgd2l0aAorLy8gdGhlIHNlY29uZCBhcmd1bWVu
dCB0byB0aGUgdHdvIGFyZ3VtZW50cyBjb25zdHJ1Y3Rvci4KK2NsYXNzIEdURVNUX0FQSV8gU2Nv
cGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIKKyAgICA6IHB1YmxpYyBUZXN0UGFydFJlc3Vs
dFJlcG9ydGVySW50ZXJmYWNlIHsKKyBwdWJsaWM6CisgIC8vIFRoZSB0d28gcG9zc2libGUgbW9j
a2luZyBtb2RlcyBvZiB0aGlzIG9iamVjdC4KKyAgZW51bSBJbnRlcmNlcHRNb2RlIHsKKyAgICBJ
TlRFUkNFUFRfT05MWV9DVVJSRU5UX1RIUkVBRCwgIC8vIEludGVyY2VwdHMgb25seSB0aHJlYWQg
bG9jYWwgZmFpbHVyZXMuCisgICAgSU5URVJDRVBUX0FMTF9USFJFQURTICAgICAgICAgICAvLyBJ
bnRlcmNlcHRzIGFsbCBmYWlsdXJlcy4KKyAgfTsKKworICAvLyBUaGUgYyd0b3Igc2V0cyB0aGlz
IG9iamVjdCBhcyB0aGUgdGVzdCBwYXJ0IHJlc3VsdCByZXBvcnRlciB1c2VkCisgIC8vIGJ5IEdv
b2dsZSBUZXN0LiAgVGhlICdyZXN1bHQnIHBhcmFtZXRlciBzcGVjaWZpZXMgd2hlcmUgdG8gcmVw
b3J0IHRoZQorICAvLyByZXN1bHRzLiBUaGlzIHJlcG9ydGVyIHdpbGwgb25seSBjYXRjaCBmYWls
dXJlcyBnZW5lcmF0ZWQgaW4gdGhlIGN1cnJlbnQKKyAgLy8gdGhyZWFkLiBERVBSRUNBVEVECisg
IGV4cGxpY2l0IFNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyKFRlc3RQYXJ0UmVzdWx0
QXJyYXkqIHJlc3VsdCk7CisKKyAgLy8gU2FtZSBhcyBhYm92ZSwgYnV0IHlvdSBjYW4gY2hvb3Nl
IHRoZSBpbnRlcmNlcHRpb24gc2NvcGUgb2YgdGhpcyBvYmplY3QuCisgIFNjb3BlZEZha2VUZXN0
UGFydFJlc3VsdFJlcG9ydGVyKEludGVyY2VwdE1vZGUgaW50ZXJjZXB0X21vZGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3RQYXJ0UmVzdWx0QXJyYXkqIHJlc3VsdCk7
CisKKyAgLy8gVGhlIGQndG9yIHJlc3RvcmVzIHRoZSBwcmV2aW91cyB0ZXN0IHBhcnQgcmVzdWx0
IHJlcG9ydGVyLgorICB2aXJ0dWFsIH5TY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlcigp
OworCisgIC8vIEFwcGVuZHMgdGhlIFRlc3RQYXJ0UmVzdWx0IG9iamVjdCB0byB0aGUgVGVzdFBh
cnRSZXN1bHRBcnJheQorICAvLyByZWNlaXZlZCBpbiB0aGUgY29uc3RydWN0b3IuCisgIC8vCisg
IC8vIFRoaXMgbWV0aG9kIGlzIGZyb20gdGhlIFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJJbnRlcmZh
Y2UKKyAgLy8gaW50ZXJmYWNlLgorICB2aXJ0dWFsIHZvaWQgUmVwb3J0VGVzdFBhcnRSZXN1bHQo
Y29uc3QgVGVzdFBhcnRSZXN1bHQmIHJlc3VsdCk7CisgcHJpdmF0ZToKKyAgdm9pZCBJbml0KCk7
CisKKyAgY29uc3QgSW50ZXJjZXB0TW9kZSBpbnRlcmNlcHRfbW9kZV87CisgIFRlc3RQYXJ0UmVz
dWx0UmVwb3J0ZXJJbnRlcmZhY2UqIG9sZF9yZXBvcnRlcl87CisgIFRlc3RQYXJ0UmVzdWx0QXJy
YXkqIGNvbnN0IHJlc3VsdF87CisKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhT
Y29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlcik7Cit9OworCituYW1lc3BhY2UgaW50ZXJu
YWwgeworCisvLyBBIGhlbHBlciBjbGFzcyBmb3IgaW1wbGVtZW50aW5nIEVYUEVDVF9GQVRBTF9G
QUlMVVJFKCkgYW5kCisvLyBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpLiAgSXRzIGRlc3RydWN0
b3IgdmVyaWZpZXMgdGhhdCB0aGUgZ2l2ZW4KKy8vIFRlc3RQYXJ0UmVzdWx0QXJyYXkgY29udGFp
bnMgZXhhY3RseSBvbmUgZmFpbHVyZSB0aGF0IGhhcyB0aGUgZ2l2ZW4KKy8vIHR5cGUgYW5kIGNv
bnRhaW5zIHRoZSBnaXZlbiBzdWJzdHJpbmcuICBJZiB0aGF0J3Mgbm90IHRoZSBjYXNlLCBhCisv
LyBub24tZmF0YWwgZmFpbHVyZSB3aWxsIGJlIGdlbmVyYXRlZC4KK2NsYXNzIEdURVNUX0FQSV8g
U2luZ2xlRmFpbHVyZUNoZWNrZXIgeworIHB1YmxpYzoKKyAgLy8gVGhlIGNvbnN0cnVjdG9yIHJl
bWVtYmVycyB0aGUgYXJndW1lbnRzLgorICBTaW5nbGVGYWlsdXJlQ2hlY2tlcihjb25zdCBUZXN0
UGFydFJlc3VsdEFycmF5KiByZXN1bHRzLAorICAgICAgICAgICAgICAgICAgICAgICBUZXN0UGFy
dFJlc3VsdDo6VHlwZSB0eXBlLCBjb25zdCBzdGQ6OnN0cmluZyYgc3Vic3RyKTsKKyAgflNpbmds
ZUZhaWx1cmVDaGVja2VyKCk7CisgcHJpdmF0ZToKKyAgY29uc3QgVGVzdFBhcnRSZXN1bHRBcnJh
eSogY29uc3QgcmVzdWx0c187CisgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHR5cGVfOwor
ICBjb25zdCBzdGQ6OnN0cmluZyBzdWJzdHJfOworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5E
X0FTU0lHTl8oU2luZ2xlRmFpbHVyZUNoZWNrZXIpOworfTsKKworfSAgLy8gbmFtZXNwYWNlIGlu
dGVybmFsCisKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCisKKy8vIEEgc2V0IG9mIG1hY3JvcyBm
b3IgdGVzdGluZyBHb29nbGUgVGVzdCBhc3NlcnRpb25zIG9yIGNvZGUgdGhhdCdzIGV4cGVjdGVk
CisvLyB0byBnZW5lcmF0ZSBHb29nbGUgVGVzdCBmYXRhbCBmYWlsdXJlcy4gIEl0IHZlcmlmaWVz
IHRoYXQgdGhlIGdpdmVuCisvLyBzdGF0ZW1lbnQgd2lsbCBjYXVzZSBleGFjdGx5IG9uZSBmYXRh
bCBHb29nbGUgVGVzdCBmYWlsdXJlIHdpdGggJ3N1YnN0cicKKy8vIGJlaW5nIHBhcnQgb2YgdGhl
IGZhaWx1cmUgbWVzc2FnZS4KKy8vCisvLyBUaGVyZSBhcmUgdHdvIGRpZmZlcmVudCB2ZXJzaW9u
cyBvZiB0aGlzIG1hY3JvLiBFWFBFQ1RfRkFUQUxfRkFJTFVSRSBvbmx5CisvLyBhZmZlY3RzIGFu
ZCBjb25zaWRlcnMgZmFpbHVyZXMgZ2VuZXJhdGVkIGluIHRoZSBjdXJyZW50IHRocmVhZCBhbmQK
Ky8vIEVYUEVDVF9GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTIGRvZXMgdGhlIHNhbWUgYnV0
IGZvciBhbGwgdGhyZWFkcy4KKy8vCisvLyBUaGUgdmVyaWZpY2F0aW9uIG9mIHRoZSBhc3NlcnRp
b24gaXMgZG9uZSBjb3JyZWN0bHkgZXZlbiB3aGVuIHRoZSBzdGF0ZW1lbnQKKy8vIHRocm93cyBh
biBleGNlcHRpb24gb3IgYWJvcnRzIHRoZSBjdXJyZW50IGZ1bmN0aW9uLgorLy8KKy8vIEtub3du
IHJlc3RyaWN0aW9uczoKKy8vICAgLSAnc3RhdGVtZW50JyBjYW5ub3QgcmVmZXJlbmNlIGxvY2Fs
IG5vbi1zdGF0aWMgdmFyaWFibGVzIG9yCisvLyAgICAgbm9uLXN0YXRpYyBtZW1iZXJzIG9mIHRo
ZSBjdXJyZW50IG9iamVjdC4KKy8vICAgLSAnc3RhdGVtZW50JyBjYW5ub3QgcmV0dXJuIGEgdmFs
dWUuCisvLyAgIC0gWW91IGNhbm5vdCBzdHJlYW0gYSBmYWlsdXJlIG1lc3NhZ2UgdG8gdGhpcyBt
YWNyby4KKy8vCisvLyBOb3RlIHRoYXQgZXZlbiB0aG91Z2ggdGhlIGltcGxlbWVudGF0aW9ucyBv
ZiB0aGUgZm9sbG93aW5nIHR3bworLy8gbWFjcm9zIGFyZSBtdWNoIGFsaWtlLCB3ZSBjYW5ub3Qg
cmVmYWN0b3IgdGhlbSB0byB1c2UgYSBjb21tb24KKy8vIGhlbHBlciBtYWNybywgZHVlIHRvIHNv
bWUgcGVjdWxpYXJpdHkgaW4gaG93IHRoZSBwcmVwcm9jZXNzb3IKKy8vIHdvcmtzLiAgVGhlIEFj
Y2VwdHNNYWNyb1RoYXRFeHBhbmRzVG9VbnByb3RlY3RlZENvbW1hIHRlc3QgaW4KKy8vIGd0ZXN0
X3VuaXR0ZXN0LmNjIHdpbGwgZmFpbCB0byBjb21waWxlIGlmIHdlIGRvIHRoYXQuCisjZGVmaW5l
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKHN0YXRlbWVudCwgc3Vic3RyKSBcCisgIGRvIHsgXAorICAg
IGNsYXNzIEdUZXN0RXhwZWN0RmF0YWxGYWlsdXJlSGVscGVyIHtcCisgICAgIHB1YmxpYzpcCisg
ICAgICBzdGF0aWMgdm9pZCBFeGVjdXRlKCkgeyBzdGF0ZW1lbnQ7IH1cCisgICAgfTtcCisgICAg
Ojp0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdEFycmF5IGd0ZXN0X2ZhaWx1cmVzO1wKKyAgICA6OnRl
c3Rpbmc6OmludGVybmFsOjpTaW5nbGVGYWlsdXJlQ2hlY2tlciBndGVzdF9jaGVja2VyKFwKKyAg
ICAgICAgJmd0ZXN0X2ZhaWx1cmVzLCA6OnRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0OjprRmF0YWxG
YWlsdXJlLCAoc3Vic3RyKSk7XAorICAgIHtcCisgICAgICA6OnRlc3Rpbmc6OlNjb3BlZEZha2VU
ZXN0UGFydFJlc3VsdFJlcG9ydGVyIGd0ZXN0X3JlcG9ydGVyKFwKKyAgICAgICAgICA6OnRlc3Rp
bmc6OlNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyOjogXAorICAgICAgICAgIElOVEVS
Q0VQVF9PTkxZX0NVUlJFTlRfVEhSRUFELCAmZ3Rlc3RfZmFpbHVyZXMpO1wKKyAgICAgIEdUZXN0
RXhwZWN0RmF0YWxGYWlsdXJlSGVscGVyOjpFeGVjdXRlKCk7XAorICAgIH1cCisgIH0gd2hpbGUg
KDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c0ZhbHNlKCkpCisKKyNkZWZpbmUgRVhQRUNUX0ZB
VEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoc3RhdGVtZW50LCBzdWJzdHIpIFwKKyAgZG8geyBc
CisgICAgY2xhc3MgR1Rlc3RFeHBlY3RGYXRhbEZhaWx1cmVIZWxwZXIge1wKKyAgICAgcHVibGlj
OlwKKyAgICAgIHN0YXRpYyB2b2lkIEV4ZWN1dGUoKSB7IHN0YXRlbWVudDsgfVwKKyAgICB9O1wK
KyAgICA6OnRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0QXJyYXkgZ3Rlc3RfZmFpbHVyZXM7XAorICAg
IDo6dGVzdGluZzo6aW50ZXJuYWw6OlNpbmdsZUZhaWx1cmVDaGVja2VyIGd0ZXN0X2NoZWNrZXIo
XAorICAgICAgICAmZ3Rlc3RfZmFpbHVyZXMsIDo6dGVzdGluZzo6VGVzdFBhcnRSZXN1bHQ6OmtG
YXRhbEZhaWx1cmUsIChzdWJzdHIpKTtcCisgICAge1wKKyAgICAgIDo6dGVzdGluZzo6U2NvcGVk
RmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIgZ3Rlc3RfcmVwb3J0ZXIoXAorICAgICAgICAgIDo6
dGVzdGluZzo6U2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI6OiBcCisgICAgICAgICAg
SU5URVJDRVBUX0FMTF9USFJFQURTLCAmZ3Rlc3RfZmFpbHVyZXMpO1wKKyAgICAgIEdUZXN0RXhw
ZWN0RmF0YWxGYWlsdXJlSGVscGVyOjpFeGVjdXRlKCk7XAorICAgIH1cCisgIH0gd2hpbGUgKDo6
dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c0ZhbHNlKCkpCisKKy8vIEEgbWFjcm8gZm9yIHRlc3Rp
bmcgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBvciBjb2RlIHRoYXQncyBleHBlY3RlZCB0bworLy8g
Z2VuZXJhdGUgR29vZ2xlIFRlc3Qgbm9uLWZhdGFsIGZhaWx1cmVzLiAgSXQgYXNzZXJ0cyB0aGF0
IHRoZSBnaXZlbgorLy8gc3RhdGVtZW50IHdpbGwgY2F1c2UgZXhhY3RseSBvbmUgbm9uLWZhdGFs
IEdvb2dsZSBUZXN0IGZhaWx1cmUgd2l0aCAnc3Vic3RyJworLy8gYmVpbmcgcGFydCBvZiB0aGUg
ZmFpbHVyZSBtZXNzYWdlLgorLy8KKy8vIFRoZXJlIGFyZSB0d28gZGlmZmVyZW50IHZlcnNpb25z
IG9mIHRoaXMgbWFjcm8uIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFIG9ubHkKKy8vIGFmZmVjdHMg
YW5kIGNvbnNpZGVycyBmYWlsdXJlcyBnZW5lcmF0ZWQgaW4gdGhlIGN1cnJlbnQgdGhyZWFkIGFu
ZAorLy8gRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMgZG9lcyB0aGUgc2Ft
ZSBidXQgZm9yIGFsbCB0aHJlYWRzLgorLy8KKy8vICdzdGF0ZW1lbnQnIGlzIGFsbG93ZWQgdG8g
cmVmZXJlbmNlIGxvY2FsIHZhcmlhYmxlcyBhbmQgbWVtYmVycyBvZgorLy8gdGhlIGN1cnJlbnQg
b2JqZWN0LgorLy8KKy8vIFRoZSB2ZXJpZmljYXRpb24gb2YgdGhlIGFzc2VydGlvbiBpcyBkb25l
IGNvcnJlY3RseSBldmVuIHdoZW4gdGhlIHN0YXRlbWVudAorLy8gdGhyb3dzIGFuIGV4Y2VwdGlv
biBvciBhYm9ydHMgdGhlIGN1cnJlbnQgZnVuY3Rpb24uCisvLworLy8gS25vd24gcmVzdHJpY3Rp
b25zOgorLy8gICAtIFlvdSBjYW5ub3Qgc3RyZWFtIGEgZmFpbHVyZSBtZXNzYWdlIHRvIHRoaXMg
bWFjcm8uCisvLworLy8gTm90ZSB0aGF0IGV2ZW4gdGhvdWdoIHRoZSBpbXBsZW1lbnRhdGlvbnMg
b2YgdGhlIGZvbGxvd2luZyB0d28KKy8vIG1hY3JvcyBhcmUgbXVjaCBhbGlrZSwgd2UgY2Fubm90
IHJlZmFjdG9yIHRoZW0gdG8gdXNlIGEgY29tbW9uCisvLyBoZWxwZXIgbWFjcm8sIGR1ZSB0byBz
b21lIHBlY3VsaWFyaXR5IGluIGhvdyB0aGUgcHJlcHJvY2Vzc29yCisvLyB3b3Jrcy4gIElmIHdl
IGRvIHRoYXQsIHRoZSBjb2RlIHdvbid0IGNvbXBpbGUgd2hlbiB0aGUgdXNlciBnaXZlcworLy8g
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoKSBhIHN0YXRlbWVudCB0aGF0IGNvbnRhaW5zIGEgbWFj
cm8gdGhhdAorLy8gZXhwYW5kcyB0byBjb2RlIGNvbnRhaW5pbmcgYW4gdW5wcm90ZWN0ZWQgY29t
bWEuICBUaGUKKy8vIEFjY2VwdHNNYWNyb1RoYXRFeHBhbmRzVG9VbnByb3RlY3RlZENvbW1hIHRl
c3QgaW4gZ3Rlc3RfdW5pdHRlc3QuY2MKKy8vIGNhdGNoZXMgdGhhdC4KKy8vCisvLyBGb3IgdGhl
IHNhbWUgcmVhc29uLCB3ZSBoYXZlIHRvIHdyaXRlCisvLyAgIGlmICg6OnRlc3Rpbmc6OmludGVy
bmFsOjpBbHdheXNUcnVlKCkpIHsgc3RhdGVtZW50OyB9CisvLyBpbnN0ZWFkIG9mCisvLyAgIEdU
RVNUX1NVUFBSRVNTX1VOUkVBQ0hBQkxFX0NPREVfV0FSTklOR19CRUxPV18oc3RhdGVtZW50KQor
Ly8gdG8gYXZvaWQgYW4gTVNWQyB3YXJuaW5nIG9uIHVucmVhY2hhYmxlIGNvZGUuCisjZGVmaW5l
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHN0YXRlbWVudCwgc3Vic3RyKSBcCisgIGRvIHtcCisg
ICAgOjp0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdEFycmF5IGd0ZXN0X2ZhaWx1cmVzO1wKKyAgICA6
OnRlc3Rpbmc6OmludGVybmFsOjpTaW5nbGVGYWlsdXJlQ2hlY2tlciBndGVzdF9jaGVja2VyKFwK
KyAgICAgICAgJmd0ZXN0X2ZhaWx1cmVzLCA6OnRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0OjprTm9u
RmF0YWxGYWlsdXJlLCBcCisgICAgICAgIChzdWJzdHIpKTtcCisgICAge1wKKyAgICAgIDo6dGVz
dGluZzo6U2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIgZ3Rlc3RfcmVwb3J0ZXIoXAor
ICAgICAgICAgIDo6dGVzdGluZzo6U2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI6OiBc
CisgICAgICAgICAgSU5URVJDRVBUX09OTFlfQ1VSUkVOVF9USFJFQUQsICZndGVzdF9mYWlsdXJl
cyk7XAorICAgICAgaWYgKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c1RydWUoKSkgeyBzdGF0
ZW1lbnQ7IH1cCisgICAgfVwKKyAgfSB3aGlsZSAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlz
RmFsc2UoKSkKKworI2RlZmluZSBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFE
UyhzdGF0ZW1lbnQsIHN1YnN0cikgXAorICBkbyB7XAorICAgIDo6dGVzdGluZzo6VGVzdFBhcnRS
ZXN1bHRBcnJheSBndGVzdF9mYWlsdXJlcztcCisgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6U2lu
Z2xlRmFpbHVyZUNoZWNrZXIgZ3Rlc3RfY2hlY2tlcihcCisgICAgICAgICZndGVzdF9mYWlsdXJl
cywgOjp0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdDo6a05vbkZhdGFsRmFpbHVyZSwgXAorICAgICAg
ICAoc3Vic3RyKSk7XAorICAgIHtcCisgICAgICA6OnRlc3Rpbmc6OlNjb3BlZEZha2VUZXN0UGFy
dFJlc3VsdFJlcG9ydGVyIGd0ZXN0X3JlcG9ydGVyKFwKKyAgICAgICAgICA6OnRlc3Rpbmc6OlNj
b3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyOjpJTlRFUkNFUFRfQUxMX1RIUkVBRFMsIFwK
KyAgICAgICAgICAmZ3Rlc3RfZmFpbHVyZXMpO1wKKyAgICAgIGlmICg6OnRlc3Rpbmc6OmludGVy
bmFsOjpBbHdheXNUcnVlKCkpIHsgc3RhdGVtZW50OyB9XAorICAgIH1cCisgIH0gd2hpbGUgKDo6
dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c0ZhbHNlKCkpCisKKyNlbmRpZiAgLy8gR1RFU1RfSU5D
TFVERV9HVEVTVF9HVEVTVF9TUElfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUv
Z3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0
LXRlc3QtcGFydC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3ZWI4NDQ4MzlkODkyN2EyOTNkMjU3MDRkZjliMTcw
N2E0MjczYTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2d0
ZXN0LXRlc3QtcGFydC5oCkBAIC0wLDAgKzEsMTc5IEBACisvLyBDb3B5cmlnaHQgMjAwOCwgR29v
Z2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8v
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8v
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gQXV0aG9yOiBtaGV1bGVAZ29vZ2xlLmNvbSAo
TWFya3VzIEhldWxlKQorLy8KKworI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1RF
U1RfUEFSVF9IXworI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1RFU1RfUEFSVF9I
XworCisjaW5jbHVkZSA8aW9zZndkPgorI2luY2x1ZGUgPHZlY3Rvcj4KKyNpbmNsdWRlICJndGVz
dC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0
ZXN0LXN0cmluZy5oIgorCituYW1lc3BhY2UgdGVzdGluZyB7CisKKy8vIEEgY29weWFibGUgb2Jq
ZWN0IHJlcHJlc2VudGluZyB0aGUgcmVzdWx0IG9mIGEgdGVzdCBwYXJ0IChpLmUuIGFuCisvLyBh
c3NlcnRpb24gb3IgYW4gZXhwbGljaXQgRkFJTCgpLCBBRERfRkFJTFVSRSgpLCBvciBTVUNDRVNT
KCkpLgorLy8KKy8vIERvbid0IGluaGVyaXQgZnJvbSBUZXN0UGFydFJlc3VsdCBhcyBpdHMgZGVz
dHJ1Y3RvciBpcyBub3QgdmlydHVhbC4KK2NsYXNzIEdURVNUX0FQSV8gVGVzdFBhcnRSZXN1bHQg
eworIHB1YmxpYzoKKyAgLy8gVGhlIHBvc3NpYmxlIG91dGNvbWVzIG9mIGEgdGVzdCBwYXJ0IChp
LmUuIGFuIGFzc2VydGlvbiBvciBhbgorICAvLyBleHBsaWNpdCBTVUNDRUVEKCksIEZBSUwoKSwg
b3IgQUREX0ZBSUxVUkUoKSkuCisgIGVudW0gVHlwZSB7CisgICAga1N1Y2Nlc3MsICAgICAgICAg
IC8vIFN1Y2NlZWRlZC4KKyAgICBrTm9uRmF0YWxGYWlsdXJlLCAgLy8gRmFpbGVkIGJ1dCB0aGUg
dGVzdCBjYW4gY29udGludWUuCisgICAga0ZhdGFsRmFpbHVyZSAgICAgIC8vIEZhaWxlZCBhbmQg
dGhlIHRlc3Qgc2hvdWxkIGJlIHRlcm1pbmF0ZWQuCisgIH07CisKKyAgLy8gQyd0b3IuICBUZXN0
UGFydFJlc3VsdCBkb2VzIE5PVCBoYXZlIGEgZGVmYXVsdCBjb25zdHJ1Y3Rvci4KKyAgLy8gQWx3
YXlzIHVzZSB0aGlzIGNvbnN0cnVjdG9yICh3aXRoIHBhcmFtZXRlcnMpIHRvIGNyZWF0ZSBhCisg
IC8vIFRlc3RQYXJ0UmVzdWx0IG9iamVjdC4KKyAgVGVzdFBhcnRSZXN1bHQoVHlwZSBhX3R5cGUs
CisgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFfZmlsZV9uYW1lLAorICAgICAgICAgICAg
ICAgICBpbnQgYV9saW5lX251bWJlciwKKyAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYV9t
ZXNzYWdlKQorICAgICAgOiB0eXBlXyhhX3R5cGUpLAorICAgICAgICBmaWxlX25hbWVfKGFfZmls
ZV9uYW1lID09IE5VTEwgPyAiIiA6IGFfZmlsZV9uYW1lKSwKKyAgICAgICAgbGluZV9udW1iZXJf
KGFfbGluZV9udW1iZXIpLAorICAgICAgICBzdW1tYXJ5XyhFeHRyYWN0U3VtbWFyeShhX21lc3Nh
Z2UpKSwKKyAgICAgICAgbWVzc2FnZV8oYV9tZXNzYWdlKSB7CisgIH0KKworICAvLyBHZXRzIHRo
ZSBvdXRjb21lIG9mIHRoZSB0ZXN0IHBhcnQuCisgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IHR5cGVfOyB9CisKKyAgLy8gR2V0cyB0aGUgbmFtZSBvZiB0aGUgc291cmNlIGZpbGUgd2hlcmUg
dGhlIHRlc3QgcGFydCB0b29rIHBsYWNlLCBvcgorICAvLyBOVUxMIGlmIGl0J3MgdW5rbm93bi4K
KyAgY29uc3QgY2hhciogZmlsZV9uYW1lKCkgY29uc3QgeworICAgIHJldHVybiBmaWxlX25hbWVf
LmVtcHR5KCkgPyBOVUxMIDogZmlsZV9uYW1lXy5jX3N0cigpOworICB9CisKKyAgLy8gR2V0cyB0
aGUgbGluZSBpbiB0aGUgc291cmNlIGZpbGUgd2hlcmUgdGhlIHRlc3QgcGFydCB0b29rIHBsYWNl
LAorICAvLyBvciAtMSBpZiBpdCdzIHVua25vd24uCisgIGludCBsaW5lX251bWJlcigpIGNvbnN0
IHsgcmV0dXJuIGxpbmVfbnVtYmVyXzsgfQorCisgIC8vIEdldHMgdGhlIHN1bW1hcnkgb2YgdGhl
IGZhaWx1cmUgbWVzc2FnZS4KKyAgY29uc3QgY2hhciogc3VtbWFyeSgpIGNvbnN0IHsgcmV0dXJu
IHN1bW1hcnlfLmNfc3RyKCk7IH0KKworICAvLyBHZXRzIHRoZSBtZXNzYWdlIGFzc29jaWF0ZWQg
d2l0aCB0aGUgdGVzdCBwYXJ0LgorICBjb25zdCBjaGFyKiBtZXNzYWdlKCkgY29uc3QgeyByZXR1
cm4gbWVzc2FnZV8uY19zdHIoKTsgfQorCisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHRlc3Qg
cGFydCBwYXNzZWQuCisgIGJvb2wgcGFzc2VkKCkgY29uc3QgeyByZXR1cm4gdHlwZV8gPT0ga1N1
Y2Nlc3M7IH0KKworICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSB0ZXN0IHBhcnQgZmFpbGVkLgor
ICBib29sIGZhaWxlZCgpIGNvbnN0IHsgcmV0dXJuIHR5cGVfICE9IGtTdWNjZXNzOyB9CisKKyAg
Ly8gUmV0dXJucyB0cnVlIGlmZiB0aGUgdGVzdCBwYXJ0IG5vbi1mYXRhbGx5IGZhaWxlZC4KKyAg
Ym9vbCBub25mYXRhbGx5X2ZhaWxlZCgpIGNvbnN0IHsgcmV0dXJuIHR5cGVfID09IGtOb25GYXRh
bEZhaWx1cmU7IH0KKworICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSB0ZXN0IHBhcnQgZmF0YWxs
eSBmYWlsZWQuCisgIGJvb2wgZmF0YWxseV9mYWlsZWQoKSBjb25zdCB7IHJldHVybiB0eXBlXyA9
PSBrRmF0YWxGYWlsdXJlOyB9CisKKyBwcml2YXRlOgorICBUeXBlIHR5cGVfOworCisgIC8vIEdl
dHMgdGhlIHN1bW1hcnkgb2YgdGhlIGZhaWx1cmUgbWVzc2FnZSBieSBvbWl0dGluZyB0aGUgc3Rh
Y2sKKyAgLy8gdHJhY2UgaW4gaXQuCisgIHN0YXRpYyBzdGQ6OnN0cmluZyBFeHRyYWN0U3VtbWFy
eShjb25zdCBjaGFyKiBtZXNzYWdlKTsKKworICAvLyBUaGUgbmFtZSBvZiB0aGUgc291cmNlIGZp
bGUgd2hlcmUgdGhlIHRlc3QgcGFydCB0b29rIHBsYWNlLCBvcgorICAvLyAiIiBpZiB0aGUgc291
cmNlIGZpbGUgaXMgdW5rbm93bi4KKyAgc3RkOjpzdHJpbmcgZmlsZV9uYW1lXzsKKyAgLy8gVGhl
IGxpbmUgaW4gdGhlIHNvdXJjZSBmaWxlIHdoZXJlIHRoZSB0ZXN0IHBhcnQgdG9vayBwbGFjZSwg
b3IgLTEKKyAgLy8gaWYgdGhlIGxpbmUgbnVtYmVyIGlzIHVua25vd24uCisgIGludCBsaW5lX251
bWJlcl87CisgIHN0ZDo6c3RyaW5nIHN1bW1hcnlfOyAgLy8gVGhlIHRlc3QgZmFpbHVyZSBzdW1t
YXJ5LgorICBzdGQ6OnN0cmluZyBtZXNzYWdlXzsgIC8vIFRoZSB0ZXN0IGZhaWx1cmUgbWVzc2Fn
ZS4KK307CisKKy8vIFByaW50cyBhIFRlc3RQYXJ0UmVzdWx0IG9iamVjdC4KK3N0ZDo6b3N0cmVh
bSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBUZXN0UGFydFJlc3VsdCYgcmVz
dWx0KTsKKworLy8gQW4gYXJyYXkgb2YgVGVzdFBhcnRSZXN1bHQgb2JqZWN0cy4KKy8vCisvLyBE
b24ndCBpbmhlcml0IGZyb20gVGVzdFBhcnRSZXN1bHRBcnJheSBhcyBpdHMgZGVzdHJ1Y3RvciBp
cyBub3QKKy8vIHZpcnR1YWwuCitjbGFzcyBHVEVTVF9BUElfIFRlc3RQYXJ0UmVzdWx0QXJyYXkg
eworIHB1YmxpYzoKKyAgVGVzdFBhcnRSZXN1bHRBcnJheSgpIHt9CisKKyAgLy8gQXBwZW5kcyB0
aGUgZ2l2ZW4gVGVzdFBhcnRSZXN1bHQgdG8gdGhlIGFycmF5LgorICB2b2lkIEFwcGVuZChjb25z
dCBUZXN0UGFydFJlc3VsdCYgcmVzdWx0KTsKKworICAvLyBSZXR1cm5zIHRoZSBUZXN0UGFydFJl
c3VsdCBhdCB0aGUgZ2l2ZW4gaW5kZXggKDAtYmFzZWQpLgorICBjb25zdCBUZXN0UGFydFJlc3Vs
dCYgR2V0VGVzdFBhcnRSZXN1bHQoaW50IGluZGV4KSBjb25zdDsKKworICAvLyBSZXR1cm5zIHRo
ZSBudW1iZXIgb2YgVGVzdFBhcnRSZXN1bHQgb2JqZWN0cyBpbiB0aGUgYXJyYXkuCisgIGludCBz
aXplKCkgY29uc3Q7CisKKyBwcml2YXRlOgorICBzdGQ6OnZlY3RvcjxUZXN0UGFydFJlc3VsdD4g
YXJyYXlfOworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGVzdFBhcnRSZXN1
bHRBcnJheSk7Cit9OworCisvLyBUaGlzIGludGVyZmFjZSBrbm93cyBob3cgdG8gcmVwb3J0IGEg
dGVzdCBwYXJ0IHJlc3VsdC4KK2NsYXNzIFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJJbnRlcmZhY2Ug
eworIHB1YmxpYzoKKyAgdmlydHVhbCB+VGVzdFBhcnRSZXN1bHRSZXBvcnRlckludGVyZmFjZSgp
IHt9CisKKyAgdmlydHVhbCB2b2lkIFJlcG9ydFRlc3RQYXJ0UmVzdWx0KGNvbnN0IFRlc3RQYXJ0
UmVzdWx0JiByZXN1bHQpID0gMDsKK307CisKK25hbWVzcGFjZSBpbnRlcm5hbCB7CisKKy8vIFRo
aXMgaGVscGVyIGNsYXNzIGlzIHVzZWQgYnkge0FTU0VSVHxFWFBFQ1R9X05PX0ZBVEFMX0ZBSUxV
UkUgdG8gY2hlY2sgaWYgYQorLy8gc3RhdGVtZW50IGdlbmVyYXRlcyBuZXcgZmF0YWwgZmFpbHVy
ZXMuIFRvIGRvIHNvIGl0IHJlZ2lzdGVycyBpdHNlbGYgYXMgdGhlCisvLyBjdXJyZW50IHRlc3Qg
cGFydCByZXN1bHQgcmVwb3J0ZXIuIEJlc2lkZXMgY2hlY2tpbmcgaWYgZmF0YWwgZmFpbHVyZXMg
d2VyZQorLy8gcmVwb3J0ZWQsIGl0IG9ubHkgZGVsZWdhdGVzIHRoZSByZXBvcnRpbmcgdG8gdGhl
IGZvcm1lciByZXN1bHQgcmVwb3J0ZXIuCisvLyBUaGUgb3JpZ2luYWwgcmVzdWx0IHJlcG9ydGVy
IGlzIHJlc3RvcmVkIGluIHRoZSBkZXN0cnVjdG9yLgorLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJ
T04gLSBETyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFNLgorY2xhc3MgR1RFU1RfQVBJXyBIYXNO
ZXdGYXRhbEZhaWx1cmVIZWxwZXIKKyAgICA6IHB1YmxpYyBUZXN0UGFydFJlc3VsdFJlcG9ydGVy
SW50ZXJmYWNlIHsKKyBwdWJsaWM6CisgIEhhc05ld0ZhdGFsRmFpbHVyZUhlbHBlcigpOworICB2
aXJ0dWFsIH5IYXNOZXdGYXRhbEZhaWx1cmVIZWxwZXIoKTsKKyAgdmlydHVhbCB2b2lkIFJlcG9y
dFRlc3RQYXJ0UmVzdWx0KGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiByZXN1bHQpOworICBib29sIGhh
c19uZXdfZmF0YWxfZmFpbHVyZSgpIGNvbnN0IHsgcmV0dXJuIGhhc19uZXdfZmF0YWxfZmFpbHVy
ZV87IH0KKyBwcml2YXRlOgorICBib29sIGhhc19uZXdfZmF0YWxfZmFpbHVyZV87CisgIFRlc3RQ
YXJ0UmVzdWx0UmVwb3J0ZXJJbnRlcmZhY2UqIG9yaWdpbmFsX3JlcG9ydGVyXzsKKworICBHVEVT
VF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKEhhc05ld0ZhdGFsRmFpbHVyZUhlbHBlcik7Cit9
OworCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKKworfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcK
KworI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1RFU1RfUEFSVF9IXwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC10eXBlZC10ZXN0LmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXR5cGVkLXRlc3QuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
MDcyNmIyY2Q1YmZjMmRhYWI4Mjc1ZmEwZTU0ZThjYTkxMWY4NjEzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC10eXBlZC10ZXN0LmgKQEAgLTAsMCAr
MSwyNjQgQEAKKy8vIENvcHlyaWdodCAyMDA4IEdvb2dsZSBJbmMuCisvLyBBbGwgUmlnaHRzIFJl
c2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8K
Ky8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
Ly8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8K
Ky8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKworI2lmbmRlZiBHVEVT
VF9JTkNMVURFX0dURVNUX0dURVNUX1RZUEVEX1RFU1RfSF8KKyNkZWZpbmUgR1RFU1RfSU5DTFVE
RV9HVEVTVF9HVEVTVF9UWVBFRF9URVNUX0hfCisKKy8vIFRoaXMgaGVhZGVyIGltcGxlbWVudHMg
dHlwZWQgdGVzdHMgYW5kIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KKworLy8gVHlwZWQgKGFr
YSB0eXBlLWRyaXZlbikgdGVzdHMgcmVwZWF0IHRoZSBzYW1lIHRlc3QgZm9yIHR5cGVzIGluIGEK
Ky8vIGxpc3QuICBZb3UgbXVzdCBrbm93IHdoaWNoIHR5cGVzIHlvdSB3YW50IHRvIHRlc3Qgd2l0
aCB3aGVuIHdyaXRpbmcKKy8vIHR5cGVkIHRlc3RzLiBIZXJlJ3MgaG93IHlvdSBkbyBpdDoKKwor
I2lmIDAKKworLy8gRmlyc3QsIGRlZmluZSBhIGZpeHR1cmUgY2xhc3MgdGVtcGxhdGUuICBJdCBz
aG91bGQgYmUgcGFyYW1ldGVyaXplZAorLy8gYnkgYSB0eXBlLiAgUmVtZW1iZXIgdG8gZGVyaXZl
IGl0IGZyb20gdGVzdGluZzo6VGVzdC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgRm9v
VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKKyBwdWJsaWM6CisgIC4uLgorICB0eXBlZGVm
IHN0ZDo6bGlzdDxUPiBMaXN0OworICBzdGF0aWMgVCBzaGFyZWRfOworICBUIHZhbHVlXzsKK307
CisKKy8vIE5leHQsIGFzc29jaWF0ZSBhIGxpc3Qgb2YgdHlwZXMgd2l0aCB0aGUgdGVzdCBjYXNl
LCB3aGljaCB3aWxsIGJlCisvLyByZXBlYXRlZCBmb3IgZWFjaCB0eXBlIGluIHRoZSBsaXN0LiAg
VGhlIHR5cGVkZWYgaXMgbmVjZXNzYXJ5IGZvcgorLy8gdGhlIG1hY3JvIHRvIHBhcnNlIGNvcnJl
Y3RseS4KK3R5cGVkZWYgdGVzdGluZzo6VHlwZXM8Y2hhciwgaW50LCB1bnNpZ25lZCBpbnQ+IE15
VHlwZXM7CitUWVBFRF9URVNUX0NBU0UoRm9vVGVzdCwgTXlUeXBlcyk7CisKKy8vIElmIHRoZSB0
eXBlIGxpc3QgY29udGFpbnMgb25seSBvbmUgdHlwZSwgeW91IGNhbiB3cml0ZSB0aGF0IHR5cGUK
Ky8vIGRpcmVjdGx5IHdpdGhvdXQgVHlwZXM8Li4uPjoKKy8vICAgVFlQRURfVEVTVF9DQVNFKEZv
b1Rlc3QsIGludCk7CisKKy8vIFRoZW4sIHVzZSBUWVBFRF9URVNUKCkgaW5zdGVhZCBvZiBURVNU
X0YoKSB0byBkZWZpbmUgYXMgbWFueSB0eXBlZAorLy8gdGVzdHMgZm9yIHRoaXMgdGVzdCBjYXNl
IGFzIHlvdSB3YW50LgorVFlQRURfVEVTVChGb29UZXN0LCBEb2VzQmxhaCkgeworICAvLyBJbnNp
ZGUgYSB0ZXN0LCByZWZlciB0byBUeXBlUGFyYW0gdG8gZ2V0IHRoZSB0eXBlIHBhcmFtZXRlci4K
KyAgLy8gU2luY2Ugd2UgYXJlIGluc2lkZSBhIGRlcml2ZWQgY2xhc3MgdGVtcGxhdGUsIEMrKyBy
ZXF1aXJlcyB1c2UgdG8KKyAgLy8gdmlzaXQgdGhlIG1lbWJlcnMgb2YgRm9vVGVzdCB2aWEgJ3Ro
aXMnLgorICBUeXBlUGFyYW0gbiA9IHRoaXMtPnZhbHVlXzsKKworICAvLyBUbyB2aXNpdCBzdGF0
aWMgbWVtYmVycyBvZiB0aGUgZml4dHVyZSwgYWRkIHRoZSBUZXN0Rml4dHVyZTo6CisgIC8vIHBy
ZWZpeC4KKyAgbiArPSBUZXN0Rml4dHVyZTo6c2hhcmVkXzsKKworICAvLyBUbyByZWZlciB0byB0
eXBlZGVmcyBpbiB0aGUgZml4dHVyZSwgYWRkIHRoZSAidHlwZW5hbWUKKyAgLy8gVGVzdEZpeHR1
cmU6OiIgcHJlZml4LgorICB0eXBlbmFtZSBUZXN0Rml4dHVyZTo6TGlzdCB2YWx1ZXM7CisgIHZh
bHVlcy5wdXNoX2JhY2sobik7CisgIC4uLgorfQorCitUWVBFRF9URVNUKEZvb1Rlc3QsIEhhc1By
b3BlcnR5QSkgeyAuLi4gfQorCisjZW5kaWYgIC8vIDAKKworLy8gVHlwZS1wYXJhbWV0ZXJpemVk
IHRlc3RzIGFyZSBhYnN0cmFjdCB0ZXN0IHBhdHRlcm5zIHBhcmFtZXRlcml6ZWQKKy8vIGJ5IGEg
dHlwZS4gIENvbXBhcmVkIHdpdGggdHlwZWQgdGVzdHMsIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0
cworLy8gYWxsb3cgeW91IHRvIGRlZmluZSB0aGUgdGVzdCBwYXR0ZXJuIHdpdGhvdXQga25vd2lu
ZyB3aGF0IHRoZSB0eXBlCisvLyBwYXJhbWV0ZXJzIGFyZS4gIFRoZSBkZWZpbmVkIHBhdHRlcm4g
Y2FuIGJlIGluc3RhbnRpYXRlZCB3aXRoCisvLyBkaWZmZXJlbnQgdHlwZXMgYW55IG51bWJlciBv
ZiB0aW1lcywgaW4gYW55IG51bWJlciBvZiB0cmFuc2xhdGlvbgorLy8gdW5pdHMuCisvLworLy8g
SWYgeW91IGFyZSBkZXNpZ25pbmcgYW4gaW50ZXJmYWNlIG9yIGNvbmNlcHQsIHlvdSBjYW4gZGVm
aW5lIGEKKy8vIHN1aXRlIG9mIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cyB0byB2ZXJpZnkgcHJv
cGVydGllcyB0aGF0IGFueQorLy8gdmFsaWQgaW1wbGVtZW50YXRpb24gb2YgdGhlIGludGVyZmFj
ZS9jb25jZXB0IHNob3VsZCBoYXZlLiAgVGhlbiwKKy8vIGVhY2ggaW1wbGVtZW50YXRpb24gY2Fu
IGVhc2lseSBpbnN0YW50aWF0ZSB0aGUgdGVzdCBzdWl0ZSB0byB2ZXJpZnkKKy8vIHRoYXQgaXQg
Y29uZm9ybXMgdG8gdGhlIHJlcXVpcmVtZW50cywgd2l0aG91dCBoYXZpbmcgdG8gd3JpdGUKKy8v
IHNpbWlsYXIgdGVzdHMgcmVwZWF0ZWRseS4gIEhlcmUncyBhbiBleGFtcGxlOgorCisjaWYgMAor
CisvLyBGaXJzdCwgZGVmaW5lIGEgZml4dHVyZSBjbGFzcyB0ZW1wbGF0ZS4gIEl0IHNob3VsZCBi
ZSBwYXJhbWV0ZXJpemVkCisvLyBieSBhIHR5cGUuICBSZW1lbWJlciB0byBkZXJpdmUgaXQgZnJv
bSB0ZXN0aW5nOjpUZXN0LgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBGb29UZXN0IDog
cHVibGljIHRlc3Rpbmc6OlRlc3QgeworICAuLi4KK307CisKKy8vIE5leHQsIGRlY2xhcmUgdGhh
dCB5b3Ugd2lsbCBkZWZpbmUgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlCisvLyAodGhl
IF9QIHN1ZmZpeCBpcyBmb3IgInBhcmFtZXRlcml6ZWQiIG9yICJwYXR0ZXJuIiwgd2hpY2hldmVy
IHlvdQorLy8gcHJlZmVyKToKK1RZUEVEX1RFU1RfQ0FTRV9QKEZvb1Rlc3QpOworCisvLyBUaGVu
LCB1c2UgVFlQRURfVEVTVF9QKCkgdG8gZGVmaW5lIGFzIG1hbnkgdHlwZS1wYXJhbWV0ZXJpemVk
IHRlc3RzCisvLyBmb3IgdGhpcyB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlIGFzIHlvdSB3
YW50LgorVFlQRURfVEVTVF9QKEZvb1Rlc3QsIERvZXNCbGFoKSB7CisgIC8vIEluc2lkZSBhIHRl
c3QsIHJlZmVyIHRvIFR5cGVQYXJhbSB0byBnZXQgdGhlIHR5cGUgcGFyYW1ldGVyLgorICBUeXBl
UGFyYW0gbiA9IDA7CisgIC4uLgorfQorCitUWVBFRF9URVNUX1AoRm9vVGVzdCwgSGFzUHJvcGVy
dHlBKSB7IC4uLiB9CisKKy8vIE5vdyB0aGUgdHJpY2t5IHBhcnQ6IHlvdSBuZWVkIHRvIHJlZ2lz
dGVyIGFsbCB0ZXN0IHBhdHRlcm5zIGJlZm9yZQorLy8geW91IGNhbiBpbnN0YW50aWF0ZSB0aGVt
LiAgVGhlIGZpcnN0IGFyZ3VtZW50IG9mIHRoZSBtYWNybyBpcyB0aGUKKy8vIHRlc3QgY2FzZSBu
YW1lOyB0aGUgcmVzdCBhcmUgdGhlIG5hbWVzIG9mIHRoZSB0ZXN0cyBpbiB0aGlzIHRlc3QKKy8v
IGNhc2UuCitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChGb29UZXN0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRG9lc0JsYWgsIEhhc1Byb3BlcnR5QSk7CisKKy8vIEZpbmFsbHksIHlv
dSBhcmUgZnJlZSB0byBpbnN0YW50aWF0ZSB0aGUgcGF0dGVybiB3aXRoIHRoZSB0eXBlcyB5b3UK
Ky8vIHdhbnQuICBJZiB5b3UgcHV0IHRoZSBhYm92ZSBjb2RlIGluIGEgaGVhZGVyIGZpbGUsIHlv
dSBjYW4gI2luY2x1ZGUKKy8vIGl0IGluIG11bHRpcGxlIEMrKyBzb3VyY2UgZmlsZXMgYW5kIGlu
c3RhbnRpYXRlIGl0IG11bHRpcGxlIHRpbWVzLgorLy8KKy8vIFRvIGRpc3Rpbmd1aXNoIGRpZmZl
cmVudCBpbnN0YW5jZXMgb2YgdGhlIHBhdHRlcm4sIHRoZSBmaXJzdAorLy8gYXJndW1lbnQgdG8g
dGhlIElOU1RBTlRJQVRFXyogbWFjcm8gaXMgYSBwcmVmaXggdGhhdCB3aWxsIGJlIGFkZGVkCisv
LyB0byB0aGUgYWN0dWFsIHRlc3QgY2FzZSBuYW1lLiAgUmVtZW1iZXIgdG8gcGljayB1bmlxdWUg
cHJlZml4ZXMgZm9yCisvLyBkaWZmZXJlbnQgaW5zdGFuY2VzLgordHlwZWRlZiB0ZXN0aW5nOjpU
eXBlczxjaGFyLCBpbnQsIHVuc2lnbmVkIGludD4gTXlUeXBlczsKK0lOU1RBTlRJQVRFX1RZUEVE
X1RFU1RfQ0FTRV9QKE15LCBGb29UZXN0LCBNeVR5cGVzKTsKKworLy8gSWYgdGhlIHR5cGUgbGlz
dCBjb250YWlucyBvbmx5IG9uZSB0eXBlLCB5b3UgY2FuIHdyaXRlIHRoYXQgdHlwZQorLy8gZGly
ZWN0bHkgd2l0aG91dCBUeXBlczwuLi4+OgorLy8gICBJTlNUQU5USUFURV9UWVBFRF9URVNUX0NB
U0VfUChNeSwgRm9vVGVzdCwgaW50KTsKKworI2VuZGlmICAvLyAwCisKKyNpbmNsdWRlICJndGVz
dC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qt
dHlwZS11dGlsLmgiCisKKy8vIEltcGxlbWVudHMgdHlwZWQgdGVzdHMuCisKKyNpZiBHVEVTVF9I
QVNfVFlQRURfVEVTVAorCisvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0Ug
SU4gVVNFUiBDT0RFLgorLy8KKy8vIEV4cGFuZHMgdG8gdGhlIG5hbWUgb2YgdGhlIHR5cGVkZWYg
Zm9yIHRoZSB0eXBlIHBhcmFtZXRlcnMgb2YgdGhlCisvLyBnaXZlbiB0ZXN0IGNhc2UuCisjIGRl
ZmluZSBHVEVTVF9UWVBFX1BBUkFNU18oVGVzdENhc2VOYW1lKSBndGVzdF90eXBlX3BhcmFtc18j
I1Rlc3RDYXNlTmFtZSMjXworCisvLyBUaGUgJ1R5cGVzJyB0ZW1wbGF0ZSBhcmd1bWVudCBiZWxv
dyBtdXN0IGhhdmUgc3BhY2VzIGFyb3VuZCBpdAorLy8gc2luY2Ugc29tZSBjb21waWxlcnMgbWF5
IGNob2tlIG9uICc+Picgd2hlbiBwYXNzaW5nIGEgdGVtcGxhdGUKKy8vIGluc3RhbmNlIChlLmcu
IFR5cGVzPGludD4pCisjIGRlZmluZSBUWVBFRF9URVNUX0NBU0UoQ2FzZU5hbWUsIFR5cGVzKSBc
CisgIHR5cGVkZWYgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VHlwZUxpc3Q8IFR5cGVzID46OnR5cGUg
XAorICAgICAgR1RFU1RfVFlQRV9QQVJBTVNfKENhc2VOYW1lKQorCisjIGRlZmluZSBUWVBFRF9U
RVNUKENhc2VOYW1lLCBUZXN0TmFtZSkgXAorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgZ3Rlc3RfVHlw
ZVBhcmFtXz4gXAorICBjbGFzcyBHVEVTVF9URVNUX0NMQVNTX05BTUVfKENhc2VOYW1lLCBUZXN0
TmFtZSkgXAorICAgICAgOiBwdWJsaWMgQ2FzZU5hbWU8Z3Rlc3RfVHlwZVBhcmFtXz4geyBcCisg
ICBwcml2YXRlOiBcCisgICAgdHlwZWRlZiBDYXNlTmFtZTxndGVzdF9UeXBlUGFyYW1fPiBUZXN0
Rml4dHVyZTsgXAorICAgIHR5cGVkZWYgZ3Rlc3RfVHlwZVBhcmFtXyBUeXBlUGFyYW07IFwKKyAg
ICB2aXJ0dWFsIHZvaWQgVGVzdEJvZHkoKTsgXAorICB9OyBcCisgIGJvb2wgZ3Rlc3RfIyNDYXNl
TmFtZSMjXyMjVGVzdE5hbWUjI19yZWdpc3RlcmVkXyBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXyA9
IFwKKyAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OlR5cGVQYXJhbWV0ZXJpemVkVGVzdDwgXAor
ICAgICAgICAgIENhc2VOYW1lLCBcCisgICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VGVt
cGxhdGVTZWw8IFwKKyAgICAgICAgICAgICAgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyhDYXNlTmFt
ZSwgVGVzdE5hbWUpPiwgXAorICAgICAgICAgIEdURVNUX1RZUEVfUEFSQU1TXyhDYXNlTmFtZSk+
OjpSZWdpc3RlcihcCisgICAgICAgICAgICAgICIiLCA6OnRlc3Rpbmc6OmludGVybmFsOjpDb2Rl
TG9jYXRpb24oX19GSUxFX18sIF9fTElORV9fKSwgXAorICAgICAgICAgICAgICAjQ2FzZU5hbWUs
ICNUZXN0TmFtZSwgMCk7IFwKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIGd0ZXN0X1R5cGVQYXJhbV8+
IFwKKyAgdm9pZCBHVEVTVF9URVNUX0NMQVNTX05BTUVfKENhc2VOYW1lLCBUZXN0TmFtZSk8Z3Rl
c3RfVHlwZVBhcmFtXz46OlRlc3RCb2R5KCkKKworI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURf
VEVTVAorCisvLyBJbXBsZW1lbnRzIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KKworI2lmIEdU
RVNUX0hBU19UWVBFRF9URVNUX1AKKworLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBO
T1QgVVNFIElOIFVTRVIgQ09ERS4KKy8vCisvLyBFeHBhbmRzIHRvIHRoZSBuYW1lc3BhY2UgbmFt
ZSB0aGF0IHRoZSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMgZm9yCisvLyB0aGUgZ2l2ZW4gdHlw
ZS1wYXJhbWV0ZXJpemVkIHRlc3QgY2FzZSBhcmUgZGVmaW5lZCBpbi4gIFRoZSBleGFjdAorLy8g
bmFtZSBvZiB0aGUgbmFtZXNwYWNlIGlzIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNl
LgorIyBkZWZpbmUgR1RFU1RfQ0FTRV9OQU1FU1BBQ0VfKFRlc3RDYXNlTmFtZSkgXAorICBndGVz
dF9jYXNlXyMjVGVzdENhc2VOYW1lIyNfCisKKy8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0g
RE8gTk9UIFVTRSBJTiBVU0VSIENPREUuCisvLworLy8gRXhwYW5kcyB0byB0aGUgbmFtZSBvZiB0
aGUgdmFyaWFibGUgdXNlZCB0byByZW1lbWJlciB0aGUgbmFtZXMgb2YKKy8vIHRoZSBkZWZpbmVk
IHRlc3RzIGluIHRoZSBnaXZlbiB0ZXN0IGNhc2UuCisjIGRlZmluZSBHVEVTVF9UWVBFRF9URVNU
X0NBU0VfUF9TVEFURV8oVGVzdENhc2VOYW1lKSBcCisgIGd0ZXN0X3R5cGVkX3Rlc3RfY2FzZV9w
X3N0YXRlXyMjVGVzdENhc2VOYW1lIyNfCisKKy8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0g
RE8gTk9UIFVTRSBJTiBVU0VSIENPREUgRElSRUNUTFkuCisvLworLy8gRXhwYW5kcyB0byB0aGUg
bmFtZSBvZiB0aGUgdmFyaWFibGUgdXNlZCB0byByZW1lbWJlciB0aGUgbmFtZXMgb2YKKy8vIHRo
ZSByZWdpc3RlcmVkIHRlc3RzIGluIHRoZSBnaXZlbiB0ZXN0IGNhc2UuCisjIGRlZmluZSBHVEVT
VF9SRUdJU1RFUkVEX1RFU1RfTkFNRVNfKFRlc3RDYXNlTmFtZSkgXAorICBndGVzdF9yZWdpc3Rl
cmVkX3Rlc3RfbmFtZXNfIyNUZXN0Q2FzZU5hbWUjI18KKworLy8gVGhlIHZhcmlhYmxlcyBkZWZp
bmVkIGluIHRoZSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdCBtYWNyb3MgYXJlCisvLyBzdGF0aWMg
YXMgdHlwaWNhbGx5IHRoZXNlIG1hY3JvcyBhcmUgdXNlZCBpbiBhIC5oIGZpbGUgdGhhdCBjYW4g
YmUKKy8vICNpbmNsdWRlZCBpbiBtdWx0aXBsZSB0cmFuc2xhdGlvbiB1bml0cyBsaW5rZWQgdG9n
ZXRoZXIuCisjIGRlZmluZSBUWVBFRF9URVNUX0NBU0VfUChDYXNlTmFtZSkgXAorICBzdGF0aWMg
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6VHlwZWRUZXN0Q2FzZVBTdGF0ZSBcCisgICAgICBHVEVTVF9U
WVBFRF9URVNUX0NBU0VfUF9TVEFURV8oQ2FzZU5hbWUpCisKKyMgZGVmaW5lIFRZUEVEX1RFU1Rf
UChDYXNlTmFtZSwgVGVzdE5hbWUpIFwKKyAgbmFtZXNwYWNlIEdURVNUX0NBU0VfTkFNRVNQQUNF
XyhDYXNlTmFtZSkgeyBcCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBndGVzdF9UeXBlUGFyYW1fPiBc
CisgIGNsYXNzIFRlc3ROYW1lIDogcHVibGljIENhc2VOYW1lPGd0ZXN0X1R5cGVQYXJhbV8+IHsg
XAorICAgcHJpdmF0ZTogXAorICAgIHR5cGVkZWYgQ2FzZU5hbWU8Z3Rlc3RfVHlwZVBhcmFtXz4g
VGVzdEZpeHR1cmU7IFwKKyAgICB0eXBlZGVmIGd0ZXN0X1R5cGVQYXJhbV8gVHlwZVBhcmFtOyBc
CisgICAgdmlydHVhbCB2b2lkIFRlc3RCb2R5KCk7IFwKKyAgfTsgXAorICBzdGF0aWMgYm9vbCBn
dGVzdF8jI1Rlc3ROYW1lIyNfZGVmaW5lZF8gR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8gPSBcCisg
ICAgICBHVEVTVF9UWVBFRF9URVNUX0NBU0VfUF9TVEFURV8oQ2FzZU5hbWUpLkFkZFRlc3ROYW1l
KFwKKyAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18sICNDYXNlTmFtZSwgI1Rlc3ROYW1lKTsg
XAorICB9IFwKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIGd0ZXN0X1R5cGVQYXJhbV8+IFwKKyAgdm9p
ZCBHVEVTVF9DQVNFX05BTUVTUEFDRV8oQ2FzZU5hbWUpOjpUZXN0TmFtZTxndGVzdF9UeXBlUGFy
YW1fPjo6VGVzdEJvZHkoKQorCisjIGRlZmluZSBSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChD
YXNlTmFtZSwgLi4uKSBcCisgIG5hbWVzcGFjZSBHVEVTVF9DQVNFX05BTUVTUEFDRV8oQ2FzZU5h
bWUpIHsgXAorICB0eXBlZGVmIDo6dGVzdGluZzo6aW50ZXJuYWw6OlRlbXBsYXRlczxfX1ZBX0FS
R1NfXz46OnR5cGUgZ3Rlc3RfQWxsVGVzdHNfOyBcCisgIH0gXAorICBzdGF0aWMgY29uc3QgY2hh
ciogY29uc3QgR1RFU1RfUkVHSVNURVJFRF9URVNUX05BTUVTXyhDYXNlTmFtZSkgXAorICAgICAg
R1RFU1RfQVRUUklCVVRFX1VOVVNFRF8gPSBcCisgICAgICAgICAgR1RFU1RfVFlQRURfVEVTVF9D
QVNFX1BfU1RBVEVfKENhc2VOYW1lKS5WZXJpZnlSZWdpc3RlcmVkVGVzdE5hbWVzKFwKKyAgICAg
ICAgICAgICAgX19GSUxFX18sIF9fTElORV9fLCAjX19WQV9BUkdTX18pCisKKy8vIFRoZSAnVHlw
ZXMnIHRlbXBsYXRlIGFyZ3VtZW50IGJlbG93IG11c3QgaGF2ZSBzcGFjZXMgYXJvdW5kIGl0Cisv
LyBzaW5jZSBzb21lIGNvbXBpbGVycyBtYXkgY2hva2Ugb24gJz4+JyB3aGVuIHBhc3NpbmcgYSB0
ZW1wbGF0ZQorLy8gaW5zdGFuY2UgKGUuZy4gVHlwZXM8aW50PikKKyMgZGVmaW5lIElOU1RBTlRJ
QVRFX1RZUEVEX1RFU1RfQ0FTRV9QKFByZWZpeCwgQ2FzZU5hbWUsIFR5cGVzKSBcCisgIGJvb2wg
Z3Rlc3RfIyNQcmVmaXgjI18jI0Nhc2VOYW1lIEdURVNUX0FUVFJJQlVURV9VTlVTRURfID0gXAor
ICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZTxDYXNl
TmFtZSwgXAorICAgICAgICAgIEdURVNUX0NBU0VfTkFNRVNQQUNFXyhDYXNlTmFtZSk6Omd0ZXN0
X0FsbFRlc3RzXywgXAorICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OlR5cGVMaXN0PCBU
eXBlcyA+Ojp0eXBlPjo6UmVnaXN0ZXIoXAorICAgICAgICAgICAgICAjUHJlZml4LCBcCisgICAg
ICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OkNvZGVMb2NhdGlvbihfX0ZJTEVfXywgX19M
SU5FX18pLCBcCisgICAgICAgICAgICAgICZHVEVTVF9UWVBFRF9URVNUX0NBU0VfUF9TVEFURV8o
Q2FzZU5hbWUpLCBcCisgICAgICAgICAgICAgICNDYXNlTmFtZSwgR1RFU1RfUkVHSVNURVJFRF9U
RVNUX05BTUVTXyhDYXNlTmFtZSkpCisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1Rf
UAorCisjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfVFlQRURfVEVTVF9IXwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRl
c3QvaW5jbHVkZS9ndGVzdC9ndGVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxY2Q2OWFiNDY2YzdjMWIyZTc2
MzY4MGIzMzg0YTRlYjg3Yzk4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNs
dWRlL2d0ZXN0L2d0ZXN0LmgKQEAgLTAsMCArMSwyMjQwIEBACisvLyBDb3B5cmlnaHQgMjAwNSwg
R29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisv
LyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
Ky8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
Ky8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAo
WmhhbnlvbmcgV2FuKQorLy8KKy8vIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChH
b29nbGUgVGVzdCkKKy8vCisvLyBUaGlzIGhlYWRlciBmaWxlIGRlZmluZXMgdGhlIHB1YmxpYyBB
UEkgZm9yIEdvb2dsZSBUZXN0LiAgSXQgc2hvdWxkIGJlCisvLyBpbmNsdWRlZCBieSBhbnkgdGVz
dCBwcm9ncmFtIHRoYXQgdXNlcyBHb29nbGUgVGVzdC4KKy8vCisvLyBJTVBPUlRBTlQgTk9URTog
RHVlIHRvIGxpbWl0YXRpb24gb2YgdGhlIEMrKyBsYW5ndWFnZSwgd2UgaGF2ZSB0bworLy8gbGVh
dmUgc29tZSBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGluIHRoaXMgaGVhZGVyIGZp
bGUuCisvLyBUaGV5IGFyZSBjbGVhcmx5IG1hcmtlZCBieSBjb21tZW50cyBsaWtlIHRoaXM6Cisv
LworLy8gICAvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gQSBVU0VS
IFBST0dSQU0uCisvLworLy8gU3VjaCBjb2RlIGlzIE5PVCBtZWFudCB0byBiZSB1c2VkIGJ5IGEg
dXNlciBkaXJlY3RseSwgYW5kIGlzIHN1YmplY3QKKy8vIHRvIENIQU5HRSBXSVRIT1VUIE5PVElD
RS4gIFRoZXJlZm9yZSBETyBOT1QgREVQRU5EIE9OIElUIGluIGEgdXNlcgorLy8gcHJvZ3JhbSEK
Ky8vCisvLyBBY2tub3dsZWRnbWVudDogR29vZ2xlIFRlc3QgYm9ycm93ZWQgdGhlIGlkZWEgb2Yg
YXV0b21hdGljIHRlc3QKKy8vIHJlZ2lzdHJhdGlvbiBmcm9tIEJhcnRoZWxlbXkgRGFnZW5haXMn
IChiYXJ0aGVsZW15QHByb2xvZ2lxdWUuY29tKQorLy8gZWFzeVVuaXQgZnJhbWV3b3JrLgorCisj
aWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfSF8KKyNkZWZpbmUgR1RFU1RfSU5DTFVE
RV9HVEVTVF9HVEVTVF9IXworCisjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPG9zdHJlYW0+
CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50
ZXJuYWwuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaCIKKyNpbmNs
dWRlICJndGVzdC9ndGVzdC1kZWF0aC10ZXN0LmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtbWVz
c2FnZS5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaCIKKyNpbmNsdWRlICJn
dGVzdC9ndGVzdC1wcmludGVycy5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0X3Byb2QuaCIKKyNp
bmNsdWRlICJndGVzdC9ndGVzdC10ZXN0LXBhcnQuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC10
eXBlZC10ZXN0LmgiCisKKy8vIERlcGVuZGluZyBvbiB0aGUgcGxhdGZvcm0sIGRpZmZlcmVudCBz
dHJpbmcgY2xhc3NlcyBhcmUgYXZhaWxhYmxlLgorLy8gT24gTGludXgsIGluIGFkZGl0aW9uIHRv
IDo6c3RkOjpzdHJpbmcsIEdvb2dsZSBhbHNvIG1ha2VzIHVzZSBvZgorLy8gY2xhc3MgOjpzdHJp
bmcsIHdoaWNoIGhhcyB0aGUgc2FtZSBpbnRlcmZhY2UgYXMgOjpzdGQ6OnN0cmluZywgYnV0Cisv
LyBoYXMgYSBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb24uCisvLworLy8gWW91IGNhbiBkZWZpbmUg
R1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcgdG8gMSB0byBpbmRpY2F0ZSB0aGF0CisvLyA6OnN0cmlu
ZyBpcyBhdmFpbGFibGUgQU5EIGlzIGEgZGlzdGluY3QgdHlwZSB0byA6OnN0ZDo6c3RyaW5nLCBv
cgorLy8gZGVmaW5lIGl0IHRvIDAgdG8gaW5kaWNhdGUgb3RoZXJ3aXNlLgorLy8KKy8vIElmIDo6
c3RkOjpzdHJpbmcgYW5kIDo6c3RyaW5nIGFyZSB0aGUgc2FtZSBjbGFzcyBvbiB5b3VyIHBsYXRm
b3JtCisvLyBkdWUgdG8gYWxpYXNpbmcsIHlvdSBzaG91bGQgZGVmaW5lIEdURVNUX0hBU19HTE9C
QUxfU1RSSU5HIHRvIDAuCisvLworLy8gSWYgeW91IGRvIG5vdCBkZWZpbmUgR1RFU1RfSEFTX0dM
T0JBTF9TVFJJTkcsIGl0IGlzIGRlZmluZWQKKy8vIGhldXJpc3RpY2FsbHkuCisKK25hbWVzcGFj
ZSB0ZXN0aW5nIHsKKworLy8gRGVjbGFyZXMgdGhlIGZsYWdzLgorCisvLyBUaGlzIGZsYWcgdGVt
cG9yYXJ5IGVuYWJsZXMgdGhlIGRpc2FibGVkIHRlc3RzLgorR1RFU1RfREVDTEFSRV9ib29sXyhh
bHNvX3J1bl9kaXNhYmxlZF90ZXN0cyk7CisKKy8vIFRoaXMgZmxhZyBicmluZ3MgdGhlIGRlYnVn
Z2VyIG9uIGFuIGFzc2VydGlvbiBmYWlsdXJlLgorR1RFU1RfREVDTEFSRV9ib29sXyhicmVha19v
bl9mYWlsdXJlKTsKKworLy8gVGhpcyBmbGFnIGNvbnRyb2xzIHdoZXRoZXIgR29vZ2xlIFRlc3Qg
Y2F0Y2hlcyBhbGwgdGVzdC10aHJvd24gZXhjZXB0aW9ucworLy8gYW5kIGxvZ3MgdGhlbSBhcyBm
YWlsdXJlcy4KK0dURVNUX0RFQ0xBUkVfYm9vbF8oY2F0Y2hfZXhjZXB0aW9ucyk7CisKKy8vIFRo
aXMgZmxhZyBlbmFibGVzIHVzaW5nIGNvbG9ycyBpbiB0ZXJtaW5hbCBvdXRwdXQuIEF2YWlsYWJs
ZSB2YWx1ZXMgYXJlCisvLyAieWVzIiB0byBlbmFibGUgY29sb3JzLCAibm8iIChkaXNhYmxlIGNv
bG9ycyksIG9yICJhdXRvIiAodGhlIGRlZmF1bHQpCisvLyB0byBsZXQgR29vZ2xlIFRlc3QgZGVj
aWRlLgorR1RFU1RfREVDTEFSRV9zdHJpbmdfKGNvbG9yKTsKKworLy8gVGhpcyBmbGFnIHNldHMg
dXAgdGhlIGZpbHRlciB0byBzZWxlY3QgYnkgbmFtZSB1c2luZyBhIGdsb2IgcGF0dGVybgorLy8g
dGhlIHRlc3RzIHRvIHJ1bi4gSWYgdGhlIGZpbHRlciBpcyBub3QgZ2l2ZW4gYWxsIHRlc3RzIGFy
ZSBleGVjdXRlZC4KK0dURVNUX0RFQ0xBUkVfc3RyaW5nXyhmaWx0ZXIpOworCisvLyBUaGlzIGZs
YWcgY2F1c2VzIHRoZSBHb29nbGUgVGVzdCB0byBsaXN0IHRlc3RzLiBOb25lIG9mIHRoZSB0ZXN0
cyBsaXN0ZWQKKy8vIGFyZSBhY3R1YWxseSBydW4gaWYgdGhlIGZsYWcgaXMgcHJvdmlkZWQuCitH
VEVTVF9ERUNMQVJFX2Jvb2xfKGxpc3RfdGVzdHMpOworCisvLyBUaGlzIGZsYWcgY29udHJvbHMg
d2hldGhlciBHb29nbGUgVGVzdCBlbWl0cyBhIGRldGFpbGVkIFhNTCByZXBvcnQgdG8gYSBmaWxl
CisvLyBpbiBhZGRpdGlvbiB0byBpdHMgbm9ybWFsIHRleHR1YWwgb3V0cHV0LgorR1RFU1RfREVD
TEFSRV9zdHJpbmdfKG91dHB1dCk7CisKKy8vIFRoaXMgZmxhZ3MgY29udHJvbCB3aGV0aGVyIEdv
b2dsZSBUZXN0IHByaW50cyB0aGUgZWxhcHNlZCB0aW1lIGZvciBlYWNoCisvLyB0ZXN0LgorR1RF
U1RfREVDTEFSRV9ib29sXyhwcmludF90aW1lKTsKKworLy8gVGhpcyBmbGFnIHNwZWNpZmllcyB0
aGUgcmFuZG9tIG51bWJlciBzZWVkLgorR1RFU1RfREVDTEFSRV9pbnQzMl8ocmFuZG9tX3NlZWQp
OworCisvLyBUaGlzIGZsYWcgc2V0cyBob3cgbWFueSB0aW1lcyB0aGUgdGVzdHMgYXJlIHJlcGVh
dGVkLiBUaGUgZGVmYXVsdCB2YWx1ZQorLy8gaXMgMS4gSWYgdGhlIHZhbHVlIGlzIC0xIHRoZSB0
ZXN0cyBhcmUgcmVwZWF0aW5nIGZvcmV2ZXIuCitHVEVTVF9ERUNMQVJFX2ludDMyXyhyZXBlYXQp
OworCisvLyBUaGlzIGZsYWcgY29udHJvbHMgd2hldGhlciBHb29nbGUgVGVzdCBpbmNsdWRlcyBH
b29nbGUgVGVzdCBpbnRlcm5hbAorLy8gc3RhY2sgZnJhbWVzIGluIGZhaWx1cmUgc3RhY2sgdHJh
Y2VzLgorR1RFU1RfREVDTEFSRV9ib29sXyhzaG93X2ludGVybmFsX3N0YWNrX2ZyYW1lcyk7CisK
Ky8vIFdoZW4gdGhpcyBmbGFnIGlzIHNwZWNpZmllZCwgdGVzdHMnIG9yZGVyIGlzIHJhbmRvbWl6
ZWQgb24gZXZlcnkgaXRlcmF0aW9uLgorR1RFU1RfREVDTEFSRV9ib29sXyhzaHVmZmxlKTsKKwor
Ly8gVGhpcyBmbGFnIHNwZWNpZmllcyB0aGUgbWF4aW11bSBudW1iZXIgb2Ygc3RhY2sgZnJhbWVz
IHRvIGJlCisvLyBwcmludGVkIGluIGEgZmFpbHVyZSBtZXNzYWdlLgorR1RFU1RfREVDTEFSRV9p
bnQzMl8oc3RhY2tfdHJhY2VfZGVwdGgpOworCisvLyBXaGVuIHRoaXMgZmxhZyBpcyBzcGVjaWZp
ZWQsIGEgZmFpbGVkIGFzc2VydGlvbiB3aWxsIHRocm93IGFuCisvLyBleGNlcHRpb24gaWYgZXhj
ZXB0aW9ucyBhcmUgZW5hYmxlZCwgb3IgZXhpdCB0aGUgcHJvZ3JhbSB3aXRoIGEKKy8vIG5vbi16
ZXJvIGNvZGUgb3RoZXJ3aXNlLgorR1RFU1RfREVDTEFSRV9ib29sXyh0aHJvd19vbl9mYWlsdXJl
KTsKKworLy8gV2hlbiB0aGlzIGZsYWcgaXMgc2V0IHdpdGggYSAiaG9zdDpwb3J0IiBzdHJpbmcs
IG9uIHN1cHBvcnRlZAorLy8gcGxhdGZvcm1zIHRlc3QgcmVzdWx0cyBhcmUgc3RyZWFtZWQgdG8g
dGhlIHNwZWNpZmllZCBwb3J0IG9uCisvLyB0aGUgc3BlY2lmaWVkIGhvc3QgbWFjaGluZS4KK0dU
RVNUX0RFQ0xBUkVfc3RyaW5nXyhzdHJlYW1fcmVzdWx0X3RvKTsKKworLy8gVGhlIHVwcGVyIGxp
bWl0IGZvciB2YWxpZCBzdGFjayB0cmFjZSBkZXB0aHMuCitjb25zdCBpbnQga01heFN0YWNrVHJh
Y2VEZXB0aCA9IDEwMDsKKworbmFtZXNwYWNlIGludGVybmFsIHsKKworY2xhc3MgQXNzZXJ0SGVs
cGVyOworY2xhc3MgRGVmYXVsdEdsb2JhbFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI7CitjbGFzcyBF
eGVjRGVhdGhUZXN0OworY2xhc3MgTm9FeGVjRGVhdGhUZXN0OworY2xhc3MgRmluYWxTdWNjZXNz
Q2hlY2tlcjsKK2NsYXNzIEdUZXN0RmxhZ1NhdmVyOworY2xhc3MgU3RyZWFtaW5nTGlzdGVuZXJU
ZXN0OworY2xhc3MgVGVzdFJlc3VsdEFjY2Vzc29yOworY2xhc3MgVGVzdEV2ZW50TGlzdGVuZXJz
QWNjZXNzb3I7CitjbGFzcyBUZXN0RXZlbnRSZXBlYXRlcjsKK2NsYXNzIFVuaXRUZXN0UmVjb3Jk
UHJvcGVydHlUZXN0SGVscGVyOworY2xhc3MgV2luZG93c0RlYXRoVGVzdDsKK2NsYXNzIFVuaXRU
ZXN0SW1wbCogR2V0VW5pdFRlc3RJbXBsKCk7Cit2b2lkIFJlcG9ydEZhaWx1cmVJblVua25vd25M
b2NhdGlvbihUZXN0UGFydFJlc3VsdDo6VHlwZSByZXN1bHRfdHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKTsKKworfSAg
Ly8gbmFtZXNwYWNlIGludGVybmFsCisKKy8vIFRoZSBmcmllbmQgcmVsYXRpb25zaGlwIG9mIHNv
bWUgb2YgdGhlc2UgY2xhc3NlcyBpcyBjeWNsaWMuCisvLyBJZiB3ZSBkb24ndCBmb3J3YXJkIGRl
Y2xhcmUgdGhlbSB0aGUgY29tcGlsZXIgbWlnaHQgY29uZnVzZSB0aGUgY2xhc3NlcworLy8gaW4g
ZnJpZW5kc2hpcCBjbGF1c2VzIHdpdGggc2FtZSBuYW1lZCBjbGFzc2VzIG9uIHRoZSBzY29wZS4K
K2NsYXNzIFRlc3Q7CitjbGFzcyBUZXN0Q2FzZTsKK2NsYXNzIFRlc3RJbmZvOworY2xhc3MgVW5p
dFRlc3Q7CisKKy8vIEEgY2xhc3MgZm9yIGluZGljYXRpbmcgd2hldGhlciBhbiBhc3NlcnRpb24g
d2FzIHN1Y2Nlc3NmdWwuICBXaGVuCisvLyB0aGUgYXNzZXJ0aW9uIHdhc24ndCBzdWNjZXNzZnVs
LCB0aGUgQXNzZXJ0aW9uUmVzdWx0IG9iamVjdAorLy8gcmVtZW1iZXJzIGEgbm9uLWVtcHR5IG1l
c3NhZ2UgdGhhdCBkZXNjcmliZXMgaG93IGl0IGZhaWxlZC4KKy8vCisvLyBUbyBjcmVhdGUgYW4g
aW5zdGFuY2Ugb2YgdGhpcyBjbGFzcywgdXNlIG9uZSBvZiB0aGUgZmFjdG9yeSBmdW5jdGlvbnMK
Ky8vIChBc3NlcnRpb25TdWNjZXNzKCkgYW5kIEFzc2VydGlvbkZhaWx1cmUoKSkuCisvLworLy8g
VGhpcyBjbGFzcyBpcyB1c2VmdWwgZm9yIHR3byBwdXJwb3NlczoKKy8vICAgMS4gRGVmaW5pbmcg
cHJlZGljYXRlIGZ1bmN0aW9ucyB0byBiZSB1c2VkIHdpdGggQm9vbGVhbiB0ZXN0IGFzc2VydGlv
bnMKKy8vICAgICAgRVhQRUNUX1RSVUUvRVhQRUNUX0ZBTFNFIGFuZCB0aGVpciBBU1NFUlRfIGNv
dW50ZXJwYXJ0cworLy8gICAyLiBEZWZpbmluZyBwcmVkaWNhdGUtZm9ybWF0IGZ1bmN0aW9ucyB0
byBiZQorLy8gICAgICB1c2VkIHdpdGggcHJlZGljYXRlIGFzc2VydGlvbnMgKEFTU0VSVF9QUkVE
X0ZPUk1BVCosIGV0YykuCisvLworLy8gRm9yIGV4YW1wbGUsIGlmIHlvdSBkZWZpbmUgSXNFdmVu
IHByZWRpY2F0ZToKKy8vCisvLyAgIHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBJc0V2ZW4oaW50
IG4pIHsKKy8vICAgICBpZiAoKG4gJSAyKSA9PSAwKQorLy8gICAgICAgcmV0dXJuIHRlc3Rpbmc6
OkFzc2VydGlvblN1Y2Nlc3MoKTsKKy8vICAgICBlbHNlCisvLyAgICAgICByZXR1cm4gdGVzdGlu
Zzo6QXNzZXJ0aW9uRmFpbHVyZSgpIDw8IG4gPDwgIiBpcyBvZGQiOworLy8gICB9CisvLworLy8g
VGhlbiB0aGUgZmFpbGVkIGV4cGVjdGF0aW9uIEVYUEVDVF9UUlVFKElzRXZlbihGaWIoNSkpKQor
Ly8gd2lsbCBwcmludCB0aGUgbWVzc2FnZQorLy8KKy8vICAgVmFsdWUgb2Y6IElzRXZlbihGaWIo
NSkpCisvLyAgICAgQWN0dWFsOiBmYWxzZSAoNSBpcyBvZGQpCisvLyAgIEV4cGVjdGVkOiB0cnVl
CisvLworLy8gaW5zdGVhZCBvZiBhIG1vcmUgb3BhcXVlCisvLworLy8gICBWYWx1ZSBvZjogSXNF
dmVuKEZpYig1KSkKKy8vICAgICBBY3R1YWw6IGZhbHNlCisvLyAgIEV4cGVjdGVkOiB0cnVlCisv
LworLy8gaW4gY2FzZSBJc0V2ZW4gaXMgYSBzaW1wbGUgQm9vbGVhbiBwcmVkaWNhdGUuCisvLwor
Ly8gSWYgeW91IGV4cGVjdCB5b3VyIHByZWRpY2F0ZSB0byBiZSByZXVzZWQgYW5kIHdhbnQgdG8g
c3VwcG9ydCBpbmZvcm1hdGl2ZQorLy8gbWVzc2FnZXMgaW4gRVhQRUNUX0ZBTFNFIGFuZCBBU1NF
UlRfRkFMU0UgKG5lZ2F0aXZlIGFzc2VydGlvbnMgc2hvdyB1cAorLy8gYWJvdXQgaGFsZiBhcyBv
ZnRlbiBhcyBwb3NpdGl2ZSBvbmVzIGluIG91ciB0ZXN0cyksIHN1cHBseSBtZXNzYWdlcyBmb3IK
Ky8vIGJvdGggc3VjY2VzcyBhbmQgZmFpbHVyZSBjYXNlczoKKy8vCisvLyAgIHRlc3Rpbmc6OkFz
c2VydGlvblJlc3VsdCBJc0V2ZW4oaW50IG4pIHsKKy8vICAgICBpZiAoKG4gJSAyKSA9PSAwKQor
Ly8gICAgICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKSA8PCBuIDw8ICIgaXMg
ZXZlbiI7CisvLyAgICAgZWxzZQorLy8gICAgICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZh
aWx1cmUoKSA8PCBuIDw8ICIgaXMgb2RkIjsKKy8vICAgfQorLy8KKy8vIFRoZW4gYSBzdGF0ZW1l
bnQgRVhQRUNUX0ZBTFNFKElzRXZlbihGaWIoNikpKSB3aWxsIHByaW50CisvLworLy8gICBWYWx1
ZSBvZjogSXNFdmVuKEZpYig2KSkKKy8vICAgICBBY3R1YWw6IHRydWUgKDggaXMgZXZlbikKKy8v
ICAgRXhwZWN0ZWQ6IGZhbHNlCisvLworLy8gTkI6IFByZWRpY2F0ZXMgdGhhdCBzdXBwb3J0IG5l
Z2F0aXZlIEJvb2xlYW4gYXNzZXJ0aW9ucyBoYXZlIHJlZHVjZWQKKy8vIHBlcmZvcm1hbmNlIGlu
IHBvc2l0aXZlIG9uZXMgc28gYmUgY2FyZWZ1bCBub3QgdG8gdXNlIHRoZW0gaW4gdGVzdHMKKy8v
IHRoYXQgaGF2ZSBsb3RzICh0ZW5zIG9mIHRob3VzYW5kcykgb2YgcG9zaXRpdmUgQm9vbGVhbiBh
c3NlcnRpb25zLgorLy8KKy8vIFRvIHVzZSB0aGlzIGNsYXNzIHdpdGggRVhQRUNUX1BSRURfRk9S
TUFUIGFzc2VydGlvbnMgc3VjaCBhczoKKy8vCisvLyAgIC8vIFZlcmlmaWVzIHRoYXQgRm9vKCkg
cmV0dXJucyBhbiBldmVuIG51bWJlci4KKy8vICAgRVhQRUNUX1BSRURfRk9STUFUMShJc0V2ZW4s
IEZvbygpKTsKKy8vCisvLyB5b3UgbmVlZCB0byBkZWZpbmU6CisvLworLy8gICB0ZXN0aW5nOjpB
c3NlcnRpb25SZXN1bHQgSXNFdmVuKGNvbnN0IGNoYXIqIGV4cHIsIGludCBuKSB7CisvLyAgICAg
aWYgKChuICUgMikgPT0gMCkKKy8vICAgICAgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25TdWNj
ZXNzKCk7CisvLyAgICAgZWxzZQorLy8gICAgICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZh
aWx1cmUoKQorLy8gICAgICAgICA8PCAiRXhwZWN0ZWQ6ICIgPDwgZXhwciA8PCAiIGlzIGV2ZW5c
biAgQWN0dWFsOiBpdCdzICIgPDwgbjsKKy8vICAgfQorLy8KKy8vIElmIEZvbygpIHJldHVybnMg
NSwgeW91IHdpbGwgc2VlIHRoZSBmb2xsb3dpbmcgbWVzc2FnZToKKy8vCisvLyAgIEV4cGVjdGVk
OiBGb28oKSBpcyBldmVuCisvLyAgICAgQWN0dWFsOiBpdCdzIDUKKy8vCitjbGFzcyBHVEVTVF9B
UElfIEFzc2VydGlvblJlc3VsdCB7CisgcHVibGljOgorICAvLyBDb3B5IGNvbnN0cnVjdG9yLgor
ICAvLyBVc2VkIGluIEVYUEVDVF9UUlVFL0ZBTFNFKGFzc2VydGlvbl9yZXN1bHQpLgorICBBc3Nl
cnRpb25SZXN1bHQoY29uc3QgQXNzZXJ0aW9uUmVzdWx0JiBvdGhlcik7CisKKyAgR1RFU1RfRElT
QUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDgwMCAvKiBmb3JjaW5nIHZhbHVlIHRvIGJvb2wgKi8p
CisKKyAgLy8gVXNlZCBpbiB0aGUgRVhQRUNUX1RSVUUvRkFMU0UoYm9vbF9leHByZXNzaW9uKS4K
KyAgLy8KKyAgLy8gVCBtdXN0IGJlIGNvbnRleHR1YWxseSBjb252ZXJ0aWJsZSB0byBib29sLgor
ICAvLworICAvLyBUaGUgc2Vjb25kIHBhcmFtZXRlciBwcmV2ZW50cyB0aGlzIG92ZXJsb2FkIGZy
b20gYmVpbmcgY29uc2lkZXJlZCBpZgorICAvLyB0aGUgYXJndW1lbnQgaXMgaW1wbGljaXRseSBj
b252ZXJ0aWJsZSB0byBBc3NlcnRpb25SZXN1bHQuIEluIHRoYXQgY2FzZQorICAvLyB3ZSB3YW50
IEFzc2VydGlvblJlc3VsdCdzIGNvcHkgY29uc3RydWN0b3IgdG8gYmUgdXNlZC4KKyAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CisgIGV4cGxpY2l0IEFzc2VydGlvblJlc3VsdCgKKyAgICAgIGNvbnN0
IFQmIHN1Y2Nlc3MsCisgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RW5hYmxlSWY8CisgICAgICAg
ICAgIWludGVybmFsOjpJbXBsaWNpdGx5Q29udmVydGlibGU8VCwgQXNzZXJ0aW9uUmVzdWx0Pjo6
dmFsdWU+Ojp0eXBlKgorICAgICAgICAgIC8qZW5hYmxlciovID0gTlVMTCkKKyAgICAgIDogc3Vj
Y2Vzc18oc3VjY2Vzcykge30KKworICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkK
KworICAvLyBBc3NpZ25tZW50IG9wZXJhdG9yLgorICBBc3NlcnRpb25SZXN1bHQmIG9wZXJhdG9y
PShBc3NlcnRpb25SZXN1bHQgb3RoZXIpIHsKKyAgICBzd2FwKG90aGVyKTsKKyAgICByZXR1cm4g
KnRoaXM7CisgIH0KKworICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSBhc3NlcnRpb24gc3VjY2Vl
ZGVkLgorICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gc3VjY2Vzc187IH0gIC8vIE5P
TElOVAorCisgIC8vIFJldHVybnMgdGhlIGFzc2VydGlvbidzIG5lZ2F0aW9uLiBVc2VkIHdpdGgg
RVhQRUNUL0FTU0VSVF9GQUxTRS4KKyAgQXNzZXJ0aW9uUmVzdWx0IG9wZXJhdG9yISgpIGNvbnN0
OworCisgIC8vIFJldHVybnMgdGhlIHRleHQgc3RyZWFtZWQgaW50byB0aGlzIEFzc2VydGlvblJl
c3VsdC4gVGVzdCBhc3NlcnRpb25zCisgIC8vIHVzZSBpdCB3aGVuIHRoZXkgZmFpbCAoaS5lLiwg
dGhlIHByZWRpY2F0ZSdzIG91dGNvbWUgZG9lc24ndCBtYXRjaCB0aGUKKyAgLy8gYXNzZXJ0aW9u
J3MgZXhwZWN0YXRpb24pLiBXaGVuIG5vdGhpbmcgaGFzIGJlZW4gc3RyZWFtZWQgaW50byB0aGUK
KyAgLy8gb2JqZWN0LCByZXR1cm5zIGFuIGVtcHR5IHN0cmluZy4KKyAgY29uc3QgY2hhciogbWVz
c2FnZSgpIGNvbnN0IHsKKyAgICByZXR1cm4gbWVzc2FnZV8uZ2V0KCkgIT0gTlVMTCA/ICBtZXNz
YWdlXy0+Y19zdHIoKSA6ICIiOworICB9CisgIC8vIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IFJl
bW92ZSB0aGlzIGFmdGVyIG1ha2luZyBzdXJlIG5vIGNsaWVudHMgdXNlIGl0LgorICAvLyBEZXBy
ZWNhdGVkOyBwbGVhc2UgdXNlIG1lc3NhZ2UoKSBpbnN0ZWFkLgorICBjb25zdCBjaGFyKiBmYWls
dXJlX21lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtZXNzYWdlKCk7IH0KKworICAvLyBTdHJlYW1z
IGEgY3VzdG9tIGZhaWx1cmUgbWVzc2FnZSBpbnRvIHRoaXMgb2JqZWN0LgorICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gQXNzZXJ0aW9uUmVzdWx0JiBvcGVyYXRvcjw8KGNvbnN0IFQmIHZhbHVlKSB7
CisgICAgQXBwZW5kTWVzc2FnZShNZXNzYWdlKCkgPDwgdmFsdWUpOworICAgIHJldHVybiAqdGhp
czsKKyAgfQorCisgIC8vIEFsbG93cyBzdHJlYW1pbmcgYmFzaWMgb3V0cHV0IG1hbmlwdWxhdG9y
cyBzdWNoIGFzIGVuZGwgb3IgZmx1c2ggaW50bworICAvLyB0aGlzIG9iamVjdC4KKyAgQXNzZXJ0
aW9uUmVzdWx0JiBvcGVyYXRvcjw8KAorICAgICAgOjpzdGQ6Om9zdHJlYW0mICgqYmFzaWNfbWFu
aXB1bGF0b3IpKDo6c3RkOjpvc3RyZWFtJiBzdHJlYW0pKSB7CisgICAgQXBwZW5kTWVzc2FnZShN
ZXNzYWdlKCkgPDwgYmFzaWNfbWFuaXB1bGF0b3IpOworICAgIHJldHVybiAqdGhpczsKKyAgfQor
CisgcHJpdmF0ZToKKyAgLy8gQXBwZW5kcyB0aGUgY29udGVudHMgb2YgbWVzc2FnZSB0byBtZXNz
YWdlXy4KKyAgdm9pZCBBcHBlbmRNZXNzYWdlKGNvbnN0IE1lc3NhZ2UmIGFfbWVzc2FnZSkgewor
ICAgIGlmIChtZXNzYWdlXy5nZXQoKSA9PSBOVUxMKQorICAgICAgbWVzc2FnZV8ucmVzZXQobmV3
IDo6c3RkOjpzdHJpbmcpOworICAgIG1lc3NhZ2VfLT5hcHBlbmQoYV9tZXNzYWdlLkdldFN0cmlu
ZygpLmNfc3RyKCkpOworICB9CisKKyAgLy8gU3dhcCB0aGUgY29udGVudHMgb2YgdGhpcyBBc3Nl
cnRpb25SZXN1bHQgd2l0aCBvdGhlci4KKyAgdm9pZCBzd2FwKEFzc2VydGlvblJlc3VsdCYgb3Ro
ZXIpOworCisgIC8vIFN0b3JlcyByZXN1bHQgb2YgdGhlIGFzc2VydGlvbiBwcmVkaWNhdGUuCisg
IGJvb2wgc3VjY2Vzc187CisgIC8vIFN0b3JlcyB0aGUgbWVzc2FnZSBkZXNjcmliaW5nIHRoZSBj
b25kaXRpb24gaW4gY2FzZSB0aGUgZXhwZWN0YXRpb24KKyAgLy8gY29uc3RydWN0IGlzIG5vdCBz
YXRpc2ZpZWQgd2l0aCB0aGUgcHJlZGljYXRlJ3Mgb3V0Y29tZS4KKyAgLy8gUmVmZXJlbmNlZCB2
aWEgYSBwb2ludGVyIHRvIGF2b2lkIHRha2luZyB0b28gbXVjaCBzdGFjayBmcmFtZSBzcGFjZQor
ICAvLyB3aXRoIHRlc3QgYXNzZXJ0aW9ucy4KKyAgaW50ZXJuYWw6OnNjb3BlZF9wdHI8IDo6c3Rk
OjpzdHJpbmc+IG1lc3NhZ2VfOworfTsKKworLy8gTWFrZXMgYSBzdWNjZXNzZnVsIGFzc2VydGlv
biByZXN1bHQuCitHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBBc3NlcnRpb25TdWNjZXNzKCk7
CisKKy8vIE1ha2VzIGEgZmFpbGVkIGFzc2VydGlvbiByZXN1bHQuCitHVEVTVF9BUElfIEFzc2Vy
dGlvblJlc3VsdCBBc3NlcnRpb25GYWlsdXJlKCk7CisKKy8vIE1ha2VzIGEgZmFpbGVkIGFzc2Vy
dGlvbiByZXN1bHQgd2l0aCB0aGUgZ2l2ZW4gZmFpbHVyZSBtZXNzYWdlLgorLy8gRGVwcmVjYXRl
ZDsgdXNlIEFzc2VydGlvbkZhaWx1cmUoKSA8PCBtc2cuCitHVEVTVF9BUElfIEFzc2VydGlvblJl
c3VsdCBBc3NlcnRpb25GYWlsdXJlKGNvbnN0IE1lc3NhZ2UmIG1zZyk7CisKKy8vIFRoZSBhYnN0
cmFjdCBjbGFzcyB0aGF0IGFsbCB0ZXN0cyBpbmhlcml0IGZyb20uCisvLworLy8gSW4gR29vZ2xl
IFRlc3QsIGEgdW5pdCB0ZXN0IHByb2dyYW0gY29udGFpbnMgb25lIG9yIG1hbnkgVGVzdENhc2Vz
LCBhbmQKKy8vIGVhY2ggVGVzdENhc2UgY29udGFpbnMgb25lIG9yIG1hbnkgVGVzdHMuCisvLwor
Ly8gV2hlbiB5b3UgZGVmaW5lIGEgdGVzdCB1c2luZyB0aGUgVEVTVCBtYWNybywgeW91IGRvbid0
IG5lZWQgdG8KKy8vIGV4cGxpY2l0bHkgZGVyaXZlIGZyb20gVGVzdCAtIHRoZSBURVNUIG1hY3Jv
IGF1dG9tYXRpY2FsbHkgZG9lcworLy8gdGhpcyBmb3IgeW91LgorLy8KKy8vIFRoZSBvbmx5IHRp
bWUgeW91IGRlcml2ZSBmcm9tIFRlc3QgaXMgd2hlbiBkZWZpbmluZyBhIHRlc3QgZml4dHVyZQor
Ly8gdG8gYmUgdXNlZCBhIFRFU1RfRi4gIEZvciBleGFtcGxlOgorLy8KKy8vICAgY2xhc3MgRm9v
VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKKy8vICAgIHByb3RlY3RlZDoKKy8vICAgICB2
b2lkIFNldFVwKCkgb3ZlcnJpZGUgeyAuLi4gfQorLy8gICAgIHZvaWQgVGVhckRvd24oKSBvdmVy
cmlkZSB7IC4uLiB9CisvLyAgICAgLi4uCisvLyAgIH07CisvLworLy8gICBURVNUX0YoRm9vVGVz
dCwgQmFyKSB7IC4uLiB9CisvLyAgIFRFU1RfRihGb29UZXN0LCBCYXopIHsgLi4uIH0KKy8vCisv
LyBUZXN0IGlzIG5vdCBjb3B5YWJsZS4KK2NsYXNzIEdURVNUX0FQSV8gVGVzdCB7CisgcHVibGlj
OgorICBmcmllbmQgY2xhc3MgVGVzdEluZm87CisKKyAgLy8gRGVmaW5lcyB0eXBlcyBmb3IgcG9p
bnRlcnMgdG8gZnVuY3Rpb25zIHRoYXQgc2V0IHVwIGFuZCB0ZWFyIGRvd24KKyAgLy8gYSB0ZXN0
IGNhc2UuCisgIHR5cGVkZWYgaW50ZXJuYWw6OlNldFVwVGVzdENhc2VGdW5jIFNldFVwVGVzdENh
c2VGdW5jOworICB0eXBlZGVmIGludGVybmFsOjpUZWFyRG93blRlc3RDYXNlRnVuYyBUZWFyRG93
blRlc3RDYXNlRnVuYzsKKworICAvLyBUaGUgZCd0b3IgaXMgdmlydHVhbCBhcyB3ZSBpbnRlbmQg
dG8gaW5oZXJpdCBmcm9tIFRlc3QuCisgIHZpcnR1YWwgflRlc3QoKTsKKworICAvLyBTZXRzIHVw
IHRoZSBzdHVmZiBzaGFyZWQgYnkgYWxsIHRlc3RzIGluIHRoaXMgdGVzdCBjYXNlLgorICAvLwor
ICAvLyBHb29nbGUgVGVzdCB3aWxsIGNhbGwgRm9vOjpTZXRVcFRlc3RDYXNlKCkgYmVmb3JlIHJ1
bm5pbmcgdGhlIGZpcnN0CisgIC8vIHRlc3QgaW4gdGVzdCBjYXNlIEZvby4gIEhlbmNlIGEgc3Vi
LWNsYXNzIGNhbiBkZWZpbmUgaXRzIG93bgorICAvLyBTZXRVcFRlc3RDYXNlKCkgbWV0aG9kIHRv
IHNoYWRvdyB0aGUgb25lIGRlZmluZWQgaW4gdGhlIHN1cGVyCisgIC8vIGNsYXNzLgorICBzdGF0
aWMgdm9pZCBTZXRVcFRlc3RDYXNlKCkge30KKworICAvLyBUZWFycyBkb3duIHRoZSBzdHVmZiBz
aGFyZWQgYnkgYWxsIHRlc3RzIGluIHRoaXMgdGVzdCBjYXNlLgorICAvLworICAvLyBHb29nbGUg
VGVzdCB3aWxsIGNhbGwgRm9vOjpUZWFyRG93blRlc3RDYXNlKCkgYWZ0ZXIgcnVubmluZyB0aGUg
bGFzdAorICAvLyB0ZXN0IGluIHRlc3QgY2FzZSBGb28uICBIZW5jZSBhIHN1Yi1jbGFzcyBjYW4g
ZGVmaW5lIGl0cyBvd24KKyAgLy8gVGVhckRvd25UZXN0Q2FzZSgpIG1ldGhvZCB0byBzaGFkb3cg
dGhlIG9uZSBkZWZpbmVkIGluIHRoZSBzdXBlcgorICAvLyBjbGFzcy4KKyAgc3RhdGljIHZvaWQg
VGVhckRvd25UZXN0Q2FzZSgpIHt9CisKKyAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgY3VycmVu
dCB0ZXN0IGhhcyBhIGZhdGFsIGZhaWx1cmUuCisgIHN0YXRpYyBib29sIEhhc0ZhdGFsRmFpbHVy
ZSgpOworCisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIGN1cnJlbnQgdGVzdCBoYXMgYSBub24t
ZmF0YWwgZmFpbHVyZS4KKyAgc3RhdGljIGJvb2wgSGFzTm9uZmF0YWxGYWlsdXJlKCk7CisKKyAg
Ly8gUmV0dXJucyB0cnVlIGlmZiB0aGUgY3VycmVudCB0ZXN0IGhhcyBhIChlaXRoZXIgZmF0YWwg
b3IKKyAgLy8gbm9uLWZhdGFsKSBmYWlsdXJlLgorICBzdGF0aWMgYm9vbCBIYXNGYWlsdXJlKCkg
eyByZXR1cm4gSGFzRmF0YWxGYWlsdXJlKCkgfHwgSGFzTm9uZmF0YWxGYWlsdXJlKCk7IH0KKwor
ICAvLyBMb2dzIGEgcHJvcGVydHkgZm9yIHRoZSBjdXJyZW50IHRlc3QsIHRlc3QgY2FzZSwgb3Ig
Zm9yIHRoZSBlbnRpcmUKKyAgLy8gaW52b2NhdGlvbiBvZiB0aGUgdGVzdCBwcm9ncmFtIHdoZW4g
dXNlZCBvdXRzaWRlIG9mIHRoZSBjb250ZXh0IG9mIGEKKyAgLy8gdGVzdCBjYXNlLiAgT25seSB0
aGUgbGFzdCB2YWx1ZSBmb3IgYSBnaXZlbiBrZXkgaXMgcmVtZW1iZXJlZC4gIFRoZXNlCisgIC8v
IGFyZSBwdWJsaWMgc3RhdGljIHNvIHRoZXkgY2FuIGJlIGNhbGxlZCBmcm9tIHV0aWxpdHkgZnVu
Y3Rpb25zIHRoYXQgYXJlCisgIC8vIG5vdCBtZW1iZXJzIG9mIHRoZSB0ZXN0IGZpeHR1cmUuICBD
YWxscyB0byBSZWNvcmRQcm9wZXJ0eSBtYWRlIGR1cmluZworICAvLyBsaWZlc3BhbiBvZiB0aGUg
dGVzdCAoZnJvbSB0aGUgbW9tZW50IGl0cyBjb25zdHJ1Y3RvciBzdGFydHMgdG8gdGhlCisgIC8v
IG1vbWVudCBpdHMgZGVzdHJ1Y3RvciBmaW5pc2hlcykgd2lsbCBiZSBvdXRwdXQgaW4gWE1MIGFz
IGF0dHJpYnV0ZXMgb2YKKyAgLy8gdGhlIDx0ZXN0Y2FzZT4gZWxlbWVudC4gIFByb3BlcnRpZXMg
cmVjb3JkZWQgZnJvbSBmaXh0dXJlJ3MKKyAgLy8gU2V0VXBUZXN0Q2FzZSBvciBUZWFyRG93blRl
c3RDYXNlIGFyZSBsb2dnZWQgYXMgYXR0cmlidXRlcyBvZiB0aGUKKyAgLy8gY29ycmVzcG9uZGlu
ZyA8dGVzdHN1aXRlPiBlbGVtZW50LiAgQ2FsbHMgdG8gUmVjb3JkUHJvcGVydHkgbWFkZSBpbiB0
aGUKKyAgLy8gZ2xvYmFsIGNvbnRleHQgKGJlZm9yZSBvciBhZnRlciBpbnZvY2F0aW9uIG9mIFJV
Tl9BTExfVEVTVFMgYW5kIGZyb20KKyAgLy8gU2V0VXAvVGVhckRvd24gbWV0aG9kIG9mIEVudmly
b25tZW50IG9iamVjdHMgcmVnaXN0ZXJlZCB3aXRoIEdvb2dsZQorICAvLyBUZXN0KSB3aWxsIGJl
IG91dHB1dCBhcyBhdHRyaWJ1dGVzIG9mIHRoZSA8dGVzdHN1aXRlcz4gZWxlbWVudC4KKyAgc3Rh
dGljIHZvaWQgUmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIGtleSwgY29uc3Qgc3Rk
OjpzdHJpbmcmIHZhbHVlKTsKKyAgc3RhdGljIHZvaWQgUmVjb3JkUHJvcGVydHkoY29uc3Qgc3Rk
OjpzdHJpbmcmIGtleSwgaW50IHZhbHVlKTsKKworIHByb3RlY3RlZDoKKyAgLy8gQ3JlYXRlcyBh
IFRlc3Qgb2JqZWN0LgorICBUZXN0KCk7CisKKyAgLy8gU2V0cyB1cCB0aGUgdGVzdCBmaXh0dXJl
LgorICB2aXJ0dWFsIHZvaWQgU2V0VXAoKTsKKworICAvLyBUZWFycyBkb3duIHRoZSB0ZXN0IGZp
eHR1cmUuCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpOworCisgcHJpdmF0ZToKKyAgLy8gUmV0
dXJucyB0cnVlIGlmZiB0aGUgY3VycmVudCB0ZXN0IGhhcyB0aGUgc2FtZSBmaXh0dXJlIGNsYXNz
IGFzCisgIC8vIHRoZSBmaXJzdCB0ZXN0IGluIHRoZSBjdXJyZW50IHRlc3QgY2FzZS4KKyAgc3Rh
dGljIGJvb2wgSGFzU2FtZUZpeHR1cmVDbGFzcygpOworCisgIC8vIFJ1bnMgdGhlIHRlc3QgYWZ0
ZXIgdGhlIHRlc3QgZml4dHVyZSBoYXMgYmVlbiBzZXQgdXAuCisgIC8vCisgIC8vIEEgc3ViLWNs
YXNzIG11c3QgaW1wbGVtZW50IHRoaXMgdG8gZGVmaW5lIHRoZSB0ZXN0IGxvZ2ljLgorICAvLwor
ICAvLyBETyBOT1QgT1ZFUlJJREUgVEhJUyBGVU5DVElPTiBESVJFQ1RMWSBJTiBBIFVTRVIgUFJP
R1JBTS4KKyAgLy8gSW5zdGVhZCwgdXNlIHRoZSBURVNUIG9yIFRFU1RfRiBtYWNyby4KKyAgdmly
dHVhbCB2b2lkIFRlc3RCb2R5KCkgPSAwOworCisgIC8vIFNldHMgdXAsIGV4ZWN1dGVzLCBhbmQg
dGVhcnMgZG93biB0aGUgdGVzdC4KKyAgdm9pZCBSdW4oKTsKKworICAvLyBEZWxldGVzIHNlbGYu
ICBXZSBkZWxpYmVyYXRlbHkgcGljayBhbiB1bnVzdWFsIG5hbWUgZm9yIHRoaXMKKyAgLy8gaW50
ZXJuYWwgbWV0aG9kIHRvIGF2b2lkIGNsYXNoaW5nIHdpdGggbmFtZXMgdXNlZCBpbiB1c2VyIFRF
U1RzLgorICB2b2lkIERlbGV0ZVNlbGZfKCkgeyBkZWxldGUgdGhpczsgfQorCisgIGNvbnN0IGlu
dGVybmFsOjpzY29wZWRfcHRyPCBHVEVTVF9GTEFHX1NBVkVSXyA+IGd0ZXN0X2ZsYWdfc2F2ZXJf
OworCisgIC8vIE9mdGVuIGEgdXNlciBtaXNzcGVsbHMgU2V0VXAoKSBhcyBTZXR1cCgpIGFuZCBz
cGVuZHMgYSBsb25nIHRpbWUKKyAgLy8gd29uZGVyaW5nIHdoeSBpdCBpcyBuZXZlciBjYWxsZWQg
YnkgR29vZ2xlIFRlc3QuICBUaGUgZGVjbGFyYXRpb24gb2YKKyAgLy8gdGhlIGZvbGxvd2luZyBt
ZXRob2QgaXMgc29sZWx5IGZvciBjYXRjaGluZyBzdWNoIGFuIGVycm9yIGF0CisgIC8vIGNvbXBp
bGUgdGltZToKKyAgLy8KKyAgLy8gICAtIFRoZSByZXR1cm4gdHlwZSBpcyBkZWxpYmVyYXRlbHkg
Y2hvc2VuIHRvIGJlIG5vdCB2b2lkLCBzbyBpdAorICAvLyAgIHdpbGwgYmUgYSBjb25mbGljdCBp
ZiB2b2lkIFNldHVwKCkgaXMgZGVjbGFyZWQgaW4gdGhlIHVzZXIncworICAvLyAgIHRlc3QgZml4
dHVyZS4KKyAgLy8KKyAgLy8gICAtIFRoaXMgbWV0aG9kIGlzIHByaXZhdGUsIHNvIGl0IHdpbGwg
YmUgYW5vdGhlciBjb21waWxlciBlcnJvcgorICAvLyAgIGlmIHRoZSBtZXRob2QgaXMgY2FsbGVk
IGZyb20gdGhlIHVzZXIncyB0ZXN0IGZpeHR1cmUuCisgIC8vCisgIC8vIERPIE5PVCBPVkVSUklE
RSBUSElTIEZVTkNUSU9OLgorICAvLworICAvLyBJZiB5b3Ugc2VlIGFuIGVycm9yIGFib3V0IG92
ZXJyaWRpbmcgdGhlIGZvbGxvd2luZyBmdW5jdGlvbiBvcgorICAvLyBhYm91dCBpdCBiZWluZyBw
cml2YXRlLCB5b3UgaGF2ZSBtaXMtc3BlbGxlZCBTZXRVcCgpIGFzIFNldHVwKCkuCisgIHN0cnVj
dCBTZXR1cF9zaG91bGRfYmVfc3BlbGxlZF9TZXRVcCB7fTsKKyAgdmlydHVhbCBTZXR1cF9zaG91
bGRfYmVfc3BlbGxlZF9TZXRVcCogU2V0dXAoKSB7IHJldHVybiBOVUxMOyB9CisKKyAgLy8gV2Ug
ZGlzYWxsb3cgY29weWluZyBUZXN0cy4KKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdO
XyhUZXN0KTsKK307CisKK3R5cGVkZWYgaW50ZXJuYWw6OlRpbWVJbk1pbGxpcyBUaW1lSW5NaWxs
aXM7CisKKy8vIEEgY29weWFibGUgb2JqZWN0IHJlcHJlc2VudGluZyBhIHVzZXIgc3BlY2lmaWVk
IHRlc3QgcHJvcGVydHkgd2hpY2ggY2FuIGJlCisvLyBvdXRwdXQgYXMgYSBrZXkvdmFsdWUgc3Ry
aW5nIHBhaXIuCisvLworLy8gRG9uJ3QgaW5oZXJpdCBmcm9tIFRlc3RQcm9wZXJ0eSBhcyBpdHMg
ZGVzdHJ1Y3RvciBpcyBub3QgdmlydHVhbC4KK2NsYXNzIFRlc3RQcm9wZXJ0eSB7CisgcHVibGlj
OgorICAvLyBDJ3Rvci4gIFRlc3RQcm9wZXJ0eSBkb2VzIE5PVCBoYXZlIGEgZGVmYXVsdCBjb25z
dHJ1Y3Rvci4KKyAgLy8gQWx3YXlzIHVzZSB0aGlzIGNvbnN0cnVjdG9yICh3aXRoIHBhcmFtZXRl
cnMpIHRvIGNyZWF0ZSBhCisgIC8vIFRlc3RQcm9wZXJ0eSBvYmplY3QuCisgIFRlc3RQcm9wZXJ0
eShjb25zdCBzdGQ6OnN0cmluZyYgYV9rZXksIGNvbnN0IHN0ZDo6c3RyaW5nJiBhX3ZhbHVlKSA6
CisgICAga2V5XyhhX2tleSksIHZhbHVlXyhhX3ZhbHVlKSB7CisgIH0KKworICAvLyBHZXRzIHRo
ZSB1c2VyIHN1cHBsaWVkIGtleS4KKyAgY29uc3QgY2hhcioga2V5KCkgY29uc3QgeworICAgIHJl
dHVybiBrZXlfLmNfc3RyKCk7CisgIH0KKworICAvLyBHZXRzIHRoZSB1c2VyIHN1cHBsaWVkIHZh
bHVlLgorICBjb25zdCBjaGFyKiB2YWx1ZSgpIGNvbnN0IHsKKyAgICByZXR1cm4gdmFsdWVfLmNf
c3RyKCk7CisgIH0KKworICAvLyBTZXRzIGEgbmV3IHZhbHVlLCBvdmVycmlkaW5nIHRoZSBvbmUg
c3VwcGxpZWQgaW4gdGhlIGNvbnN0cnVjdG9yLgorICB2b2lkIFNldFZhbHVlKGNvbnN0IHN0ZDo6
c3RyaW5nJiBuZXdfdmFsdWUpIHsKKyAgICB2YWx1ZV8gPSBuZXdfdmFsdWU7CisgIH0KKworIHBy
aXZhdGU6CisgIC8vIFRoZSBrZXkgc3VwcGxpZWQgYnkgdGhlIHVzZXIuCisgIHN0ZDo6c3RyaW5n
IGtleV87CisgIC8vIFRoZSB2YWx1ZSBzdXBwbGllZCBieSB0aGUgdXNlci4KKyAgc3RkOjpzdHJp
bmcgdmFsdWVfOworfTsKKworLy8gVGhlIHJlc3VsdCBvZiBhIHNpbmdsZSBUZXN0LiAgVGhpcyBp
bmNsdWRlcyBhIGxpc3Qgb2YKKy8vIFRlc3RQYXJ0UmVzdWx0cywgYSBsaXN0IG9mIFRlc3RQcm9w
ZXJ0aWVzLCBhIGNvdW50IG9mIGhvdyBtYW55CisvLyBkZWF0aCB0ZXN0cyB0aGVyZSBhcmUgaW4g
dGhlIFRlc3QsIGFuZCBob3cgbXVjaCB0aW1lIGl0IHRvb2sgdG8gcnVuCisvLyB0aGUgVGVzdC4K
Ky8vCisvLyBUZXN0UmVzdWx0IGlzIG5vdCBjb3B5YWJsZS4KK2NsYXNzIEdURVNUX0FQSV8gVGVz
dFJlc3VsdCB7CisgcHVibGljOgorICAvLyBDcmVhdGVzIGFuIGVtcHR5IFRlc3RSZXN1bHQuCisg
IFRlc3RSZXN1bHQoKTsKKworICAvLyBEJ3Rvci4gIERvIG5vdCBpbmhlcml0IGZyb20gVGVzdFJl
c3VsdC4KKyAgflRlc3RSZXN1bHQoKTsKKworICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgYWxsIHRl
c3QgcGFydHMuICBUaGlzIGlzIHRoZSBzdW0gb2YgdGhlIG51bWJlcgorICAvLyBvZiBzdWNjZXNz
ZnVsIHRlc3QgcGFydHMgYW5kIHRoZSBudW1iZXIgb2YgZmFpbGVkIHRlc3QgcGFydHMuCisgIGlu
dCB0b3RhbF9wYXJ0X2NvdW50KCkgY29uc3Q7CisKKyAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9m
IHRoZSB0ZXN0IHByb3BlcnRpZXMuCisgIGludCB0ZXN0X3Byb3BlcnR5X2NvdW50KCkgY29uc3Q7
CisKKyAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgdGVzdCBwYXNzZWQgKGkuZS4gbm8gdGVzdCBw
YXJ0IGZhaWxlZCkuCisgIGJvb2wgUGFzc2VkKCkgY29uc3QgeyByZXR1cm4gIUZhaWxlZCgpOyB9
CisKKyAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgdGVzdCBmYWlsZWQuCisgIGJvb2wgRmFpbGVk
KCkgY29uc3Q7CisKKyAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgdGVzdCBmYXRhbGx5IGZhaWxl
ZC4KKyAgYm9vbCBIYXNGYXRhbEZhaWx1cmUoKSBjb25zdDsKKworICAvLyBSZXR1cm5zIHRydWUg
aWZmIHRoZSB0ZXN0IGhhcyBhIG5vbi1mYXRhbCBmYWlsdXJlLgorICBib29sIEhhc05vbmZhdGFs
RmFpbHVyZSgpIGNvbnN0OworCisgIC8vIFJldHVybnMgdGhlIGVsYXBzZWQgdGltZSwgaW4gbWls
bGlzZWNvbmRzLgorICBUaW1lSW5NaWxsaXMgZWxhcHNlZF90aW1lKCkgY29uc3QgeyByZXR1cm4g
ZWxhcHNlZF90aW1lXzsgfQorCisgIC8vIFJldHVybnMgdGhlIGktdGggdGVzdCBwYXJ0IHJlc3Vs
dCBhbW9uZyBhbGwgdGhlIHJlc3VsdHMuIGkgY2FuIHJhbmdlCisgIC8vIGZyb20gMCB0byB0ZXN0
X3Byb3BlcnR5X2NvdW50KCkgLSAxLiBJZiBpIGlzIG5vdCBpbiB0aGF0IHJhbmdlLCBhYm9ydHMK
KyAgLy8gdGhlIHByb2dyYW0uCisgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiBHZXRUZXN0UGFydFJl
c3VsdChpbnQgaSkgY29uc3Q7CisKKyAgLy8gUmV0dXJucyB0aGUgaS10aCB0ZXN0IHByb3BlcnR5
LiBpIGNhbiByYW5nZSBmcm9tIDAgdG8KKyAgLy8gdGVzdF9wcm9wZXJ0eV9jb3VudCgpIC0gMS4g
SWYgaSBpcyBub3QgaW4gdGhhdCByYW5nZSwgYWJvcnRzIHRoZQorICAvLyBwcm9ncmFtLgorICBj
b25zdCBUZXN0UHJvcGVydHkmIEdldFRlc3RQcm9wZXJ0eShpbnQgaSkgY29uc3Q7CisKKyBwcml2
YXRlOgorICBmcmllbmQgY2xhc3MgVGVzdEluZm87CisgIGZyaWVuZCBjbGFzcyBUZXN0Q2FzZTsK
KyAgZnJpZW5kIGNsYXNzIFVuaXRUZXN0OworICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OkRlZmF1
bHRHbG9iYWxUZXN0UGFydFJlc3VsdFJlcG9ydGVyOworICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6
OkV4ZWNEZWF0aFRlc3Q7CisgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6VGVzdFJlc3VsdEFjY2Vz
c29yOworICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OlVuaXRUZXN0SW1wbDsKKyAgZnJpZW5kIGNs
YXNzIGludGVybmFsOjpXaW5kb3dzRGVhdGhUZXN0OworCisgIC8vIEdldHMgdGhlIHZlY3RvciBv
ZiBUZXN0UGFydFJlc3VsdHMuCisgIGNvbnN0IHN0ZDo6dmVjdG9yPFRlc3RQYXJ0UmVzdWx0PiYg
dGVzdF9wYXJ0X3Jlc3VsdHMoKSBjb25zdCB7CisgICAgcmV0dXJuIHRlc3RfcGFydF9yZXN1bHRz
XzsKKyAgfQorCisgIC8vIEdldHMgdGhlIHZlY3RvciBvZiBUZXN0UHJvcGVydGllcy4KKyAgY29u
c3Qgc3RkOjp2ZWN0b3I8VGVzdFByb3BlcnR5PiYgdGVzdF9wcm9wZXJ0aWVzKCkgY29uc3Qgewor
ICAgIHJldHVybiB0ZXN0X3Byb3BlcnRpZXNfOworICB9CisKKyAgLy8gU2V0cyB0aGUgZWxhcHNl
ZCB0aW1lLgorICB2b2lkIHNldF9lbGFwc2VkX3RpbWUoVGltZUluTWlsbGlzIGVsYXBzZWQpIHsg
ZWxhcHNlZF90aW1lXyA9IGVsYXBzZWQ7IH0KKworICAvLyBBZGRzIGEgdGVzdCBwcm9wZXJ0eSB0
byB0aGUgbGlzdC4gVGhlIHByb3BlcnR5IGlzIHZhbGlkYXRlZCBhbmQgbWF5IGFkZAorICAvLyBh
IG5vbi1mYXRhbCBmYWlsdXJlIGlmIGludmFsaWQgKGUuZy4sIGlmIGl0IGNvbmZsaWN0cyB3aXRo
IHJlc2VydmVkCisgIC8vIGtleSBuYW1lcykuIElmIGEgcHJvcGVydHkgaXMgYWxyZWFkeSByZWNv
cmRlZCBmb3IgdGhlIHNhbWUga2V5LCB0aGUKKyAgLy8gdmFsdWUgd2lsbCBiZSB1cGRhdGVkLCBy
YXRoZXIgdGhhbiBzdG9yaW5nIG11bHRpcGxlIHZhbHVlcyBmb3IgdGhlIHNhbWUKKyAgLy8ga2V5
LiAgeG1sX2VsZW1lbnQgc3BlY2lmaWVzIHRoZSBlbGVtZW50IGZvciB3aGljaCB0aGUgcHJvcGVy
dHkgaXMgYmVpbmcKKyAgLy8gcmVjb3JkZWQgYW5kIGlzIHVzZWQgZm9yIHZhbGlkYXRpb24uCisg
IHZvaWQgUmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIHhtbF9lbGVtZW50LAorICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSk7CisK
KyAgLy8gQWRkcyBhIGZhaWx1cmUgaWYgdGhlIGtleSBpcyBhIHJlc2VydmVkIGF0dHJpYnV0ZSBv
ZiBHb29nbGUgVGVzdAorICAvLyB0ZXN0Y2FzZSB0YWdzLiAgUmV0dXJucyB0cnVlIGlmIHRoZSBw
cm9wZXJ0eSBpcyB2YWxpZC4KKyAgLy8gVE9ETyhydXNzcik6IFZhbGlkYXRlIGF0dHJpYnV0ZSBu
YW1lcyBhcmUgbGVnYWwgYW5kIGh1bWFuIHJlYWRhYmxlLgorICBzdGF0aWMgYm9vbCBWYWxpZGF0
ZVRlc3RQcm9wZXJ0eShjb25zdCBzdGQ6OnN0cmluZyYgeG1sX2VsZW1lbnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0
eSk7CisKKyAgLy8gQWRkcyBhIHRlc3QgcGFydCByZXN1bHQgdG8gdGhlIGxpc3QuCisgIHZvaWQg
QWRkVGVzdFBhcnRSZXN1bHQoY29uc3QgVGVzdFBhcnRSZXN1bHQmIHRlc3RfcGFydF9yZXN1bHQp
OworCisgIC8vIFJldHVybnMgdGhlIGRlYXRoIHRlc3QgY291bnQuCisgIGludCBkZWF0aF90ZXN0
X2NvdW50KCkgY29uc3QgeyByZXR1cm4gZGVhdGhfdGVzdF9jb3VudF87IH0KKworICAvLyBJbmNy
ZW1lbnRzIHRoZSBkZWF0aCB0ZXN0IGNvdW50LCByZXR1cm5pbmcgdGhlIG5ldyBjb3VudC4KKyAg
aW50IGluY3JlbWVudF9kZWF0aF90ZXN0X2NvdW50KCkgeyByZXR1cm4gKytkZWF0aF90ZXN0X2Nv
dW50XzsgfQorCisgIC8vIENsZWFycyB0aGUgdGVzdCBwYXJ0IHJlc3VsdHMuCisgIHZvaWQgQ2xl
YXJUZXN0UGFydFJlc3VsdHMoKTsKKworICAvLyBDbGVhcnMgdGhlIG9iamVjdC4KKyAgdm9pZCBD
bGVhcigpOworCisgIC8vIFByb3RlY3RzIG11dGFibGUgc3RhdGUgb2YgdGhlIHByb3BlcnR5IHZl
Y3RvciBhbmQgb2Ygb3duZWQKKyAgLy8gcHJvcGVydGllcywgd2hvc2UgdmFsdWVzIG1heSBiZSB1
cGRhdGVkLgorICBpbnRlcm5hbDo6TXV0ZXggdGVzdF9wcm9wZXJpdGVzX211dGV4XzsKKworICAv
LyBUaGUgdmVjdG9yIG9mIFRlc3RQYXJ0UmVzdWx0cworICBzdGQ6OnZlY3RvcjxUZXN0UGFydFJl
c3VsdD4gdGVzdF9wYXJ0X3Jlc3VsdHNfOworICAvLyBUaGUgdmVjdG9yIG9mIFRlc3RQcm9wZXJ0
aWVzCisgIHN0ZDo6dmVjdG9yPFRlc3RQcm9wZXJ0eT4gdGVzdF9wcm9wZXJ0aWVzXzsKKyAgLy8g
UnVubmluZyBjb3VudCBvZiBkZWF0aCB0ZXN0cy4KKyAgaW50IGRlYXRoX3Rlc3RfY291bnRfOwor
ICAvLyBUaGUgZWxhcHNlZCB0aW1lLCBpbiBtaWxsaXNlY29uZHMuCisgIFRpbWVJbk1pbGxpcyBl
bGFwc2VkX3RpbWVfOworCisgIC8vIFdlIGRpc2FsbG93IGNvcHlpbmcgVGVzdFJlc3VsdC4KKyAg
R1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUZXN0UmVzdWx0KTsKK307ICAvLyBjbGFz
cyBUZXN0UmVzdWx0CisKKy8vIEEgVGVzdEluZm8gb2JqZWN0IHN0b3JlcyB0aGUgZm9sbG93aW5n
IGluZm9ybWF0aW9uIGFib3V0IGEgdGVzdDoKKy8vCisvLyAgIFRlc3QgY2FzZSBuYW1lCisvLyAg
IFRlc3QgbmFtZQorLy8gICBXaGV0aGVyIHRoZSB0ZXN0IHNob3VsZCBiZSBydW4KKy8vICAgQSBm
dW5jdGlvbiBwb2ludGVyIHRoYXQgY3JlYXRlcyB0aGUgdGVzdCBvYmplY3Qgd2hlbiBpbnZva2Vk
CisvLyAgIFRlc3QgcmVzdWx0CisvLworLy8gVGhlIGNvbnN0cnVjdG9yIG9mIFRlc3RJbmZvIHJl
Z2lzdGVycyBpdHNlbGYgd2l0aCB0aGUgVW5pdFRlc3QKKy8vIHNpbmdsZXRvbiBzdWNoIHRoYXQg
dGhlIFJVTl9BTExfVEVTVFMoKSBtYWNybyBrbm93cyB3aGljaCB0ZXN0cyB0bworLy8gcnVuLgor
Y2xhc3MgR1RFU1RfQVBJXyBUZXN0SW5mbyB7CisgcHVibGljOgorICAvLyBEZXN0cnVjdHMgYSBU
ZXN0SW5mbyBvYmplY3QuICBUaGlzIGZ1bmN0aW9uIGlzIG5vdCB2aXJ0dWFsLCBzbworICAvLyBk
b24ndCBpbmhlcml0IGZyb20gVGVzdEluZm8uCisgIH5UZXN0SW5mbygpOworCisgIC8vIFJldHVy
bnMgdGhlIHRlc3QgY2FzZSBuYW1lLgorICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSgpIGNv
bnN0IHsgcmV0dXJuIHRlc3RfY2FzZV9uYW1lXy5jX3N0cigpOyB9CisKKyAgLy8gUmV0dXJucyB0
aGUgdGVzdCBuYW1lLgorICBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbmFtZV8u
Y19zdHIoKTsgfQorCisgIC8vIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlciB0eXBl
LCBvciBOVUxMIGlmIHRoaXMgaXMgbm90IGEgdHlwZWQKKyAgLy8gb3IgYSB0eXBlLXBhcmFtZXRl
cml6ZWQgdGVzdC4KKyAgY29uc3QgY2hhciogdHlwZV9wYXJhbSgpIGNvbnN0IHsKKyAgICBpZiAo
dHlwZV9wYXJhbV8uZ2V0KCkgIT0gTlVMTCkKKyAgICAgIHJldHVybiB0eXBlX3BhcmFtXy0+Y19z
dHIoKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorCisgIC8vIFJldHVybnMgdGhlIHRleHQgcmVw
cmVzZW50YXRpb24gb2YgdGhlIHZhbHVlIHBhcmFtZXRlciwgb3IgTlVMTCBpZiB0aGlzCisgIC8v
IGlzIG5vdCBhIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdC4KKyAgY29uc3QgY2hhciogdmFsdWVf
cGFyYW0oKSBjb25zdCB7CisgICAgaWYgKHZhbHVlX3BhcmFtXy5nZXQoKSAhPSBOVUxMKQorICAg
ICAgcmV0dXJuIHZhbHVlX3BhcmFtXy0+Y19zdHIoKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQor
CisgIC8vIFJldHVybnMgdGhlIGZpbGUgbmFtZSB3aGVyZSB0aGlzIHRlc3QgaXMgZGVmaW5lZC4K
KyAgY29uc3QgY2hhciogZmlsZSgpIGNvbnN0IHsgcmV0dXJuIGxvY2F0aW9uXy5maWxlLmNfc3Ry
KCk7IH0KKworICAvLyBSZXR1cm5zIHRoZSBsaW5lIHdoZXJlIHRoaXMgdGVzdCBpcyBkZWZpbmVk
LgorICBpbnQgbGluZSgpIGNvbnN0IHsgcmV0dXJuIGxvY2F0aW9uXy5saW5lOyB9CisKKyAgLy8g
UmV0dXJucyB0cnVlIGlmIHRoaXMgdGVzdCBzaG91bGQgcnVuLCB0aGF0IGlzIGlmIHRoZSB0ZXN0
IGlzIG5vdAorICAvLyBkaXNhYmxlZCAob3IgaXQgaXMgZGlzYWJsZWQgYnV0IHRoZSBhbHNvX3J1
bl9kaXNhYmxlZF90ZXN0cyBmbGFnIGhhcworICAvLyBiZWVuIHNwZWNpZmllZCkgYW5kIGl0cyBm
dWxsIG5hbWUgbWF0Y2hlcyB0aGUgdXNlci1zcGVjaWZpZWQgZmlsdGVyLgorICAvLworICAvLyBH
b29nbGUgVGVzdCBhbGxvd3MgdGhlIHVzZXIgdG8gZmlsdGVyIHRoZSB0ZXN0cyBieSB0aGVpciBm
dWxsIG5hbWVzLgorICAvLyBUaGUgZnVsbCBuYW1lIG9mIGEgdGVzdCBCYXIgaW4gdGVzdCBjYXNl
IEZvbyBpcyBkZWZpbmVkIGFzCisgIC8vICJGb28uQmFyIi4gIE9ubHkgdGhlIHRlc3RzIHRoYXQg
bWF0Y2ggdGhlIGZpbHRlciB3aWxsIHJ1bi4KKyAgLy8KKyAgLy8gQSBmaWx0ZXIgaXMgYSBjb2xv
bi1zZXBhcmF0ZWQgbGlzdCBvZiBnbG9iIChub3QgcmVnZXgpIHBhdHRlcm5zLAorICAvLyBvcHRp
b25hbGx5IGZvbGxvd2VkIGJ5IGEgJy0nIGFuZCBhIGNvbG9uLXNlcGFyYXRlZCBsaXN0IG9mCisg
IC8vIG5lZ2F0aXZlIHBhdHRlcm5zICh0ZXN0cyB0byBleGNsdWRlKS4gIEEgdGVzdCBpcyBydW4g
aWYgaXQKKyAgLy8gbWF0Y2hlcyBvbmUgb2YgdGhlIHBvc2l0aXZlIHBhdHRlcm5zIGFuZCBkb2Vz
IG5vdCBtYXRjaCBhbnkgb2YKKyAgLy8gdGhlIG5lZ2F0aXZlIHBhdHRlcm5zLgorICAvLworICAv
LyBGb3IgZXhhbXBsZSwgKkEqOkZvby4qIGlzIGEgZmlsdGVyIHRoYXQgbWF0Y2hlcyBhbnkgc3Ry
aW5nIHRoYXQKKyAgLy8gY29udGFpbnMgdGhlIGNoYXJhY3RlciAnQScgb3Igc3RhcnRzIHdpdGgg
IkZvby4iLgorICBib29sIHNob3VsZF9ydW4oKSBjb25zdCB7IHJldHVybiBzaG91bGRfcnVuXzsg
fQorCisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhpcyB0ZXN0IHdpbGwgYXBwZWFyIGluIHRoZSBY
TUwgcmVwb3J0LgorICBib29sIGlzX3JlcG9ydGFibGUoKSBjb25zdCB7CisgICAgLy8gRm9yIG5v
dywgdGhlIFhNTCByZXBvcnQgaW5jbHVkZXMgYWxsIHRlc3RzIG1hdGNoaW5nIHRoZSBmaWx0ZXIu
CisgICAgLy8gSW4gdGhlIGZ1dHVyZSwgd2UgbWF5IHRyaW0gdGVzdHMgdGhhdCBhcmUgZXhjbHVk
ZWQgYmVjYXVzZSBvZgorICAgIC8vIHNoYXJkaW5nLgorICAgIHJldHVybiBtYXRjaGVzX2ZpbHRl
cl87CisgIH0KKworICAvLyBSZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIHRlc3QuCisgIGNvbnN0
IFRlc3RSZXN1bHQqIHJlc3VsdCgpIGNvbnN0IHsgcmV0dXJuICZyZXN1bHRfOyB9CisKKyBwcml2
YXRlOgorI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCisgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6
RGVmYXVsdERlYXRoVGVzdEZhY3Rvcnk7CisjZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNU
CisgIGZyaWVuZCBjbGFzcyBUZXN0OworICBmcmllbmQgY2xhc3MgVGVzdENhc2U7CisgIGZyaWVu
ZCBjbGFzcyBpbnRlcm5hbDo6VW5pdFRlc3RJbXBsOworICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6
OlN0cmVhbWluZ0xpc3RlbmVyVGVzdDsKKyAgZnJpZW5kIFRlc3RJbmZvKiBpbnRlcm5hbDo6TWFr
ZUFuZFJlZ2lzdGVyVGVzdEluZm8oCisgICAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwK
KyAgICAgIGNvbnN0IGNoYXIqIG5hbWUsCisgICAgICBjb25zdCBjaGFyKiB0eXBlX3BhcmFtLAor
ICAgICAgY29uc3QgY2hhciogdmFsdWVfcGFyYW0sCisgICAgICBpbnRlcm5hbDo6Q29kZUxvY2F0
aW9uIGNvZGVfbG9jYXRpb24sCisgICAgICBpbnRlcm5hbDo6VHlwZUlkIGZpeHR1cmVfY2xhc3Nf
aWQsCisgICAgICBUZXN0OjpTZXRVcFRlc3RDYXNlRnVuYyBzZXRfdXBfdGMsCisgICAgICBUZXN0
OjpUZWFyRG93blRlc3RDYXNlRnVuYyB0ZWFyX2Rvd25fdGMsCisgICAgICBpbnRlcm5hbDo6VGVz
dEZhY3RvcnlCYXNlKiBmYWN0b3J5KTsKKworICAvLyBDb25zdHJ1Y3RzIGEgVGVzdEluZm8gb2Jq
ZWN0LiBUaGUgbmV3bHkgY29uc3RydWN0ZWQgaW5zdGFuY2UgYXNzdW1lcworICAvLyBvd25lcnNo
aXAgb2YgdGhlIGZhY3Rvcnkgb2JqZWN0LgorICBUZXN0SW5mbyhjb25zdCBzdGQ6OnN0cmluZyYg
dGVzdF9jYXNlX25hbWUsCisgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLAorICAg
ICAgICAgICBjb25zdCBjaGFyKiBhX3R5cGVfcGFyYW0sICAgLy8gTlVMTCBpZiBub3QgYSB0eXBl
LXBhcmFtZXRlcml6ZWQgdGVzdAorICAgICAgICAgICBjb25zdCBjaGFyKiBhX3ZhbHVlX3BhcmFt
LCAgLy8gTlVMTCBpZiBub3QgYSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3QKKyAgICAgICAgICAg
aW50ZXJuYWw6OkNvZGVMb2NhdGlvbiBhX2NvZGVfbG9jYXRpb24sCisgICAgICAgICAgIGludGVy
bmFsOjpUeXBlSWQgZml4dHVyZV9jbGFzc19pZCwKKyAgICAgICAgICAgaW50ZXJuYWw6OlRlc3RG
YWN0b3J5QmFzZSogZmFjdG9yeSk7CisKKyAgLy8gSW5jcmVtZW50cyB0aGUgbnVtYmVyIG9mIGRl
YXRoIHRlc3RzIGVuY291bnRlcmVkIGluIHRoaXMgdGVzdCBzbworICAvLyBmYXIuCisgIGludCBp
bmNyZW1lbnRfZGVhdGhfdGVzdF9jb3VudCgpIHsKKyAgICByZXR1cm4gcmVzdWx0Xy5pbmNyZW1l
bnRfZGVhdGhfdGVzdF9jb3VudCgpOworICB9CisKKyAgLy8gQ3JlYXRlcyB0aGUgdGVzdCBvYmpl
Y3QsIHJ1bnMgaXQsIHJlY29yZHMgaXRzIHJlc3VsdCwgYW5kIHRoZW4KKyAgLy8gZGVsZXRlcyBp
dC4KKyAgdm9pZCBSdW4oKTsKKworICBzdGF0aWMgdm9pZCBDbGVhclRlc3RSZXN1bHQoVGVzdElu
Zm8qIHRlc3RfaW5mbykgeworICAgIHRlc3RfaW5mby0+cmVzdWx0Xy5DbGVhcigpOworICB9CisK
KyAgLy8gVGhlc2UgZmllbGRzIGFyZSBpbW11dGFibGUgcHJvcGVydGllcyBvZiB0aGUgdGVzdC4K
KyAgY29uc3Qgc3RkOjpzdHJpbmcgdGVzdF9jYXNlX25hbWVfOyAgICAgLy8gVGVzdCBjYXNlIG5h
bWUKKyAgY29uc3Qgc3RkOjpzdHJpbmcgbmFtZV87ICAgICAgICAgICAgICAgLy8gVGVzdCBuYW1l
CisgIC8vIE5hbWUgb2YgdGhlIHBhcmFtZXRlciB0eXBlLCBvciBOVUxMIGlmIHRoaXMgaXMgbm90
IGEgdHlwZWQgb3IgYQorICAvLyB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdC4KKyAgY29uc3QgaW50
ZXJuYWw6OnNjb3BlZF9wdHI8Y29uc3QgOjpzdGQ6OnN0cmluZz4gdHlwZV9wYXJhbV87CisgIC8v
IFRleHQgcmVwcmVzZW50YXRpb24gb2YgdGhlIHZhbHVlIHBhcmFtZXRlciwgb3IgTlVMTCBpZiB0
aGlzIGlzIG5vdCBhCisgIC8vIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdC4KKyAgY29uc3QgaW50
ZXJuYWw6OnNjb3BlZF9wdHI8Y29uc3QgOjpzdGQ6OnN0cmluZz4gdmFsdWVfcGFyYW1fOworICBp
bnRlcm5hbDo6Q29kZUxvY2F0aW9uIGxvY2F0aW9uXzsKKyAgY29uc3QgaW50ZXJuYWw6OlR5cGVJ
ZCBmaXh0dXJlX2NsYXNzX2lkXzsgICAvLyBJRCBvZiB0aGUgdGVzdCBmaXh0dXJlIGNsYXNzCisg
IGJvb2wgc2hvdWxkX3J1bl87ICAgICAgICAgICAgICAgICAvLyBUcnVlIGlmZiB0aGlzIHRlc3Qg
c2hvdWxkIHJ1bgorICBib29sIGlzX2Rpc2FibGVkXzsgICAgICAgICAgICAgICAgLy8gVHJ1ZSBp
ZmYgdGhpcyB0ZXN0IGlzIGRpc2FibGVkCisgIGJvb2wgbWF0Y2hlc19maWx0ZXJfOyAgICAgICAg
ICAgICAvLyBUcnVlIGlmIHRoaXMgdGVzdCBtYXRjaGVzIHRoZQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gdXNlci1zcGVjaWZpZWQgZmlsdGVyLgorICBpbnRlcm5hbDo6
VGVzdEZhY3RvcnlCYXNlKiBjb25zdCBmYWN0b3J5XzsgIC8vIFRoZSBmYWN0b3J5IHRoYXQgY3Jl
YXRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRo
ZSB0ZXN0IG9iamVjdAorCisgIC8vIFRoaXMgZmllbGQgaXMgbXV0YWJsZSBhbmQgbmVlZHMgdG8g
YmUgcmVzZXQgYmVmb3JlIHJ1bm5pbmcgdGhlCisgIC8vIHRlc3QgZm9yIHRoZSBzZWNvbmQgdGlt
ZS4KKyAgVGVzdFJlc3VsdCByZXN1bHRfOworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FT
U0lHTl8oVGVzdEluZm8pOworfTsKKworLy8gQSB0ZXN0IGNhc2UsIHdoaWNoIGNvbnNpc3RzIG9m
IGEgdmVjdG9yIG9mIFRlc3RJbmZvcy4KKy8vCisvLyBUZXN0Q2FzZSBpcyBub3QgY29weWFibGUu
CitjbGFzcyBHVEVTVF9BUElfIFRlc3RDYXNlIHsKKyBwdWJsaWM6CisgIC8vIENyZWF0ZXMgYSBU
ZXN0Q2FzZSB3aXRoIHRoZSBnaXZlbiBuYW1lLgorICAvLworICAvLyBUZXN0Q2FzZSBkb2VzIE5P
VCBoYXZlIGEgZGVmYXVsdCBjb25zdHJ1Y3Rvci4gIEFsd2F5cyB1c2UgdGhpcworICAvLyBjb25z
dHJ1Y3RvciB0byBjcmVhdGUgYSBUZXN0Q2FzZSBvYmplY3QuCisgIC8vCisgIC8vIEFyZ3VtZW50
czoKKyAgLy8KKyAgLy8gICBuYW1lOiAgICAgICAgIG5hbWUgb2YgdGhlIHRlc3QgY2FzZQorICAv
LyAgIGFfdHlwZV9wYXJhbTogdGhlIG5hbWUgb2YgdGhlIHRlc3QncyB0eXBlIHBhcmFtZXRlciwg
b3IgTlVMTCBpZgorICAvLyAgICAgICAgICAgICAgICAgdGhpcyBpcyBub3QgYSB0eXBlLXBhcmFt
ZXRlcml6ZWQgdGVzdC4KKyAgLy8gICBzZXRfdXBfdGM6ICAgIHBvaW50ZXIgdG8gdGhlIGZ1bmN0
aW9uIHRoYXQgc2V0cyB1cCB0aGUgdGVzdCBjYXNlCisgIC8vICAgdGVhcl9kb3duX3RjOiBwb2lu
dGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHRlYXJzIGRvd24gdGhlIHRlc3QgY2FzZQorICBUZXN0
Q2FzZShjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiBhX3R5cGVfcGFyYW0sCisgICAgICAg
ICAgIFRlc3Q6OlNldFVwVGVzdENhc2VGdW5jIHNldF91cF90YywKKyAgICAgICAgICAgVGVzdDo6
VGVhckRvd25UZXN0Q2FzZUZ1bmMgdGVhcl9kb3duX3RjKTsKKworICAvLyBEZXN0cnVjdG9yIG9m
IFRlc3RDYXNlLgorICB2aXJ0dWFsIH5UZXN0Q2FzZSgpOworCisgIC8vIEdldHMgdGhlIG5hbWUg
b2YgdGhlIFRlc3RDYXNlLgorICBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbmFt
ZV8uY19zdHIoKTsgfQorCisgIC8vIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlciB0
eXBlLCBvciBOVUxMIGlmIHRoaXMgaXMgbm90IGEKKyAgLy8gdHlwZS1wYXJhbWV0ZXJpemVkIHRl
c3QgY2FzZS4KKyAgY29uc3QgY2hhciogdHlwZV9wYXJhbSgpIGNvbnN0IHsKKyAgICBpZiAodHlw
ZV9wYXJhbV8uZ2V0KCkgIT0gTlVMTCkKKyAgICAgIHJldHVybiB0eXBlX3BhcmFtXy0+Y19zdHIo
KTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorCisgIC8vIFJldHVybnMgdHJ1ZSBpZiBhbnkgdGVz
dCBpbiB0aGlzIHRlc3QgY2FzZSBzaG91bGQgcnVuLgorICBib29sIHNob3VsZF9ydW4oKSBjb25z
dCB7IHJldHVybiBzaG91bGRfcnVuXzsgfQorCisgIC8vIEdldHMgdGhlIG51bWJlciBvZiBzdWNj
ZXNzZnVsIHRlc3RzIGluIHRoaXMgdGVzdCBjYXNlLgorICBpbnQgc3VjY2Vzc2Z1bF90ZXN0X2Nv
dW50KCkgY29uc3Q7CisKKyAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGZhaWxlZCB0ZXN0cyBpbiB0
aGlzIHRlc3QgY2FzZS4KKyAgaW50IGZhaWxlZF90ZXN0X2NvdW50KCkgY29uc3Q7CisKKyAgLy8g
R2V0cyB0aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRlc3RzIHRoYXQgd2lsbCBiZSByZXBvcnRlZCBp
biB0aGUgWE1MIHJlcG9ydC4KKyAgaW50IHJlcG9ydGFibGVfZGlzYWJsZWRfdGVzdF9jb3VudCgp
IGNvbnN0OworCisgIC8vIEdldHMgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0cyBpbiB0aGlz
IHRlc3QgY2FzZS4KKyAgaW50IGRpc2FibGVkX3Rlc3RfY291bnQoKSBjb25zdDsKKworICAvLyBH
ZXRzIHRoZSBudW1iZXIgb2YgdGVzdHMgdG8gYmUgcHJpbnRlZCBpbiB0aGUgWE1MIHJlcG9ydC4K
KyAgaW50IHJlcG9ydGFibGVfdGVzdF9jb3VudCgpIGNvbnN0OworCisgIC8vIEdldCB0aGUgbnVt
YmVyIG9mIHRlc3RzIGluIHRoaXMgdGVzdCBjYXNlIHRoYXQgc2hvdWxkIHJ1bi4KKyAgaW50IHRl
c3RfdG9fcnVuX2NvdW50KCkgY29uc3Q7CisKKyAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGFsbCB0
ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZS4KKyAgaW50IHRvdGFsX3Rlc3RfY291bnQoKSBjb25zdDsK
KworICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSB0ZXN0IGNhc2UgcGFzc2VkLgorICBib29sIFBh
c3NlZCgpIGNvbnN0IHsgcmV0dXJuICFGYWlsZWQoKTsgfQorCisgIC8vIFJldHVybnMgdHJ1ZSBp
ZmYgdGhlIHRlc3QgY2FzZSBmYWlsZWQuCisgIGJvb2wgRmFpbGVkKCkgY29uc3QgeyByZXR1cm4g
ZmFpbGVkX3Rlc3RfY291bnQoKSA+IDA7IH0KKworICAvLyBSZXR1cm5zIHRoZSBlbGFwc2VkIHRp
bWUsIGluIG1pbGxpc2Vjb25kcy4KKyAgVGltZUluTWlsbGlzIGVsYXBzZWRfdGltZSgpIGNvbnN0
IHsgcmV0dXJuIGVsYXBzZWRfdGltZV87IH0KKworICAvLyBSZXR1cm5zIHRoZSBpLXRoIHRlc3Qg
YW1vbmcgYWxsIHRoZSB0ZXN0cy4gaSBjYW4gcmFuZ2UgZnJvbSAwIHRvCisgIC8vIHRvdGFsX3Rl
c3RfY291bnQoKSAtIDEuIElmIGkgaXMgbm90IGluIHRoYXQgcmFuZ2UsIHJldHVybnMgTlVMTC4K
KyAgY29uc3QgVGVzdEluZm8qIEdldFRlc3RJbmZvKGludCBpKSBjb25zdDsKKworICAvLyBSZXR1
cm5zIHRoZSBUZXN0UmVzdWx0IHRoYXQgaG9sZHMgdGVzdCBwcm9wZXJ0aWVzIHJlY29yZGVkIGR1
cmluZworICAvLyBleGVjdXRpb24gb2YgU2V0VXBUZXN0Q2FzZSBhbmQgVGVhckRvd25UZXN0Q2Fz
ZS4KKyAgY29uc3QgVGVzdFJlc3VsdCYgYWRfaG9jX3Rlc3RfcmVzdWx0KCkgY29uc3QgeyByZXR1
cm4gYWRfaG9jX3Rlc3RfcmVzdWx0XzsgfQorCisgcHJpdmF0ZToKKyAgZnJpZW5kIGNsYXNzIFRl
c3Q7CisgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6VW5pdFRlc3RJbXBsOworCisgIC8vIEdldHMg
dGhlIChtdXRhYmxlKSB2ZWN0b3Igb2YgVGVzdEluZm9zIGluIHRoaXMgVGVzdENhc2UuCisgIHN0
ZDo6dmVjdG9yPFRlc3RJbmZvKj4mIHRlc3RfaW5mb19saXN0KCkgeyByZXR1cm4gdGVzdF9pbmZv
X2xpc3RfOyB9CisKKyAgLy8gR2V0cyB0aGUgKGltbXV0YWJsZSkgdmVjdG9yIG9mIFRlc3RJbmZv
cyBpbiB0aGlzIFRlc3RDYXNlLgorICBjb25zdCBzdGQ6OnZlY3RvcjxUZXN0SW5mbyo+JiB0ZXN0
X2luZm9fbGlzdCgpIGNvbnN0IHsKKyAgICByZXR1cm4gdGVzdF9pbmZvX2xpc3RfOworICB9CisK
KyAgLy8gUmV0dXJucyB0aGUgaS10aCB0ZXN0IGFtb25nIGFsbCB0aGUgdGVzdHMuIGkgY2FuIHJh
bmdlIGZyb20gMCB0bworICAvLyB0b3RhbF90ZXN0X2NvdW50KCkgLSAxLiBJZiBpIGlzIG5vdCBp
biB0aGF0IHJhbmdlLCByZXR1cm5zIE5VTEwuCisgIFRlc3RJbmZvKiBHZXRNdXRhYmxlVGVzdElu
Zm8oaW50IGkpOworCisgIC8vIFNldHMgdGhlIHNob3VsZF9ydW4gbWVtYmVyLgorICB2b2lkIHNl
dF9zaG91bGRfcnVuKGJvb2wgc2hvdWxkKSB7IHNob3VsZF9ydW5fID0gc2hvdWxkOyB9CisKKyAg
Ly8gQWRkcyBhIFRlc3RJbmZvIHRvIHRoaXMgdGVzdCBjYXNlLiAgV2lsbCBkZWxldGUgdGhlIFRl
c3RJbmZvIHVwb24KKyAgLy8gZGVzdHJ1Y3Rpb24gb2YgdGhlIFRlc3RDYXNlIG9iamVjdC4KKyAg
dm9pZCBBZGRUZXN0SW5mbyhUZXN0SW5mbyAqIHRlc3RfaW5mbyk7CisKKyAgLy8gQ2xlYXJzIHRo
ZSByZXN1bHRzIG9mIGFsbCB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZS4KKyAgdm9pZCBDbGVhclJl
c3VsdCgpOworCisgIC8vIENsZWFycyB0aGUgcmVzdWx0cyBvZiBhbGwgdGVzdHMgaW4gdGhlIGdp
dmVuIHRlc3QgY2FzZS4KKyAgc3RhdGljIHZvaWQgQ2xlYXJUZXN0Q2FzZVJlc3VsdChUZXN0Q2Fz
ZSogdGVzdF9jYXNlKSB7CisgICAgdGVzdF9jYXNlLT5DbGVhclJlc3VsdCgpOworICB9CisKKyAg
Ly8gUnVucyBldmVyeSB0ZXN0IGluIHRoaXMgVGVzdENhc2UuCisgIHZvaWQgUnVuKCk7CisKKyAg
Ly8gUnVucyBTZXRVcFRlc3RDYXNlKCkgZm9yIHRoaXMgVGVzdENhc2UuICBUaGlzIHdyYXBwZXIg
aXMgbmVlZGVkCisgIC8vIGZvciBjYXRjaGluZyBleGNlcHRpb25zIHRocm93biBmcm9tIFNldFVw
VGVzdENhc2UoKS4KKyAgdm9pZCBSdW5TZXRVcFRlc3RDYXNlKCkgeyAoKnNldF91cF90Y18pKCk7
IH0KKworICAvLyBSdW5zIFRlYXJEb3duVGVzdENhc2UoKSBmb3IgdGhpcyBUZXN0Q2FzZS4gIFRo
aXMgd3JhcHBlciBpcworICAvLyBuZWVkZWQgZm9yIGNhdGNoaW5nIGV4Y2VwdGlvbnMgdGhyb3du
IGZyb20gVGVhckRvd25UZXN0Q2FzZSgpLgorICB2b2lkIFJ1blRlYXJEb3duVGVzdENhc2UoKSB7
ICgqdGVhcl9kb3duX3RjXykoKTsgfQorCisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGVzdCBwYXNz
ZWQuCisgIHN0YXRpYyBib29sIFRlc3RQYXNzZWQoY29uc3QgVGVzdEluZm8qIHRlc3RfaW5mbykg
eworICAgIHJldHVybiB0ZXN0X2luZm8tPnNob3VsZF9ydW4oKSAmJiB0ZXN0X2luZm8tPnJlc3Vs
dCgpLT5QYXNzZWQoKTsKKyAgfQorCisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGVzdCBmYWlsZWQu
CisgIHN0YXRpYyBib29sIFRlc3RGYWlsZWQoY29uc3QgVGVzdEluZm8qIHRlc3RfaW5mbykgewor
ICAgIHJldHVybiB0ZXN0X2luZm8tPnNob3VsZF9ydW4oKSAmJiB0ZXN0X2luZm8tPnJlc3VsdCgp
LT5GYWlsZWQoKTsKKyAgfQorCisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHRlc3QgaXMgZGlz
YWJsZWQgYW5kIHdpbGwgYmUgcmVwb3J0ZWQgaW4gdGhlIFhNTAorICAvLyByZXBvcnQuCisgIHN0
YXRpYyBib29sIFRlc3RSZXBvcnRhYmxlRGlzYWJsZWQoY29uc3QgVGVzdEluZm8qIHRlc3RfaW5m
bykgeworICAgIHJldHVybiB0ZXN0X2luZm8tPmlzX3JlcG9ydGFibGUoKSAmJiB0ZXN0X2luZm8t
PmlzX2Rpc2FibGVkXzsKKyAgfQorCisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGVzdCBpcyBkaXNh
YmxlZC4KKyAgc3RhdGljIGJvb2wgVGVzdERpc2FibGVkKGNvbnN0IFRlc3RJbmZvKiB0ZXN0X2lu
Zm8pIHsKKyAgICByZXR1cm4gdGVzdF9pbmZvLT5pc19kaXNhYmxlZF87CisgIH0KKworICAvLyBS
ZXR1cm5zIHRydWUgaWZmIHRoaXMgdGVzdCB3aWxsIGFwcGVhciBpbiB0aGUgWE1MIHJlcG9ydC4K
KyAgc3RhdGljIGJvb2wgVGVzdFJlcG9ydGFibGUoY29uc3QgVGVzdEluZm8qIHRlc3RfaW5mbykg
eworICAgIHJldHVybiB0ZXN0X2luZm8tPmlzX3JlcG9ydGFibGUoKTsKKyAgfQorCisgIC8vIFJl
dHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gdGVzdCBzaG91bGQgcnVuLgorICBzdGF0aWMgYm9vbCBT
aG91bGRSdW5UZXN0KGNvbnN0IFRlc3RJbmZvKiB0ZXN0X2luZm8pIHsKKyAgICByZXR1cm4gdGVz
dF9pbmZvLT5zaG91bGRfcnVuKCk7CisgIH0KKworICAvLyBTaHVmZmxlcyB0aGUgdGVzdHMgaW4g
dGhpcyB0ZXN0IGNhc2UuCisgIHZvaWQgU2h1ZmZsZVRlc3RzKGludGVybmFsOjpSYW5kb20qIHJh
bmRvbSk7CisKKyAgLy8gUmVzdG9yZXMgdGhlIHRlc3Qgb3JkZXIgdG8gYmVmb3JlIHRoZSBmaXJz
dCBzaHVmZmxlLgorICB2b2lkIFVuc2h1ZmZsZVRlc3RzKCk7CisKKyAgLy8gTmFtZSBvZiB0aGUg
dGVzdCBjYXNlLgorICBzdGQ6OnN0cmluZyBuYW1lXzsKKyAgLy8gTmFtZSBvZiB0aGUgcGFyYW1l
dGVyIHR5cGUsIG9yIE5VTEwgaWYgdGhpcyBpcyBub3QgYSB0eXBlZCBvciBhCisgIC8vIHR5cGUt
cGFyYW1ldGVyaXplZCB0ZXN0LgorICBjb25zdCBpbnRlcm5hbDo6c2NvcGVkX3B0cjxjb25zdCA6
OnN0ZDo6c3RyaW5nPiB0eXBlX3BhcmFtXzsKKyAgLy8gVGhlIHZlY3RvciBvZiBUZXN0SW5mb3Mg
aW4gdGhlaXIgb3JpZ2luYWwgb3JkZXIuICBJdCBvd25zIHRoZQorICAvLyBlbGVtZW50cyBpbiB0
aGUgdmVjdG9yLgorICBzdGQ6OnZlY3RvcjxUZXN0SW5mbyo+IHRlc3RfaW5mb19saXN0XzsKKyAg
Ly8gUHJvdmlkZXMgYSBsZXZlbCBvZiBpbmRpcmVjdGlvbiBmb3IgdGhlIHRlc3QgbGlzdCB0byBh
bGxvdyBlYXN5CisgIC8vIHNodWZmbGluZyBhbmQgcmVzdG9yaW5nIHRoZSB0ZXN0IG9yZGVyLiAg
VGhlIGktdGggZWxlbWVudCBpbiB0aGlzCisgIC8vIHZlY3RvciBpcyB0aGUgaW5kZXggb2YgdGhl
IGktdGggdGVzdCBpbiB0aGUgc2h1ZmZsZWQgdGVzdCBsaXN0LgorICBzdGQ6OnZlY3RvcjxpbnQ+
IHRlc3RfaW5kaWNlc187CisgIC8vIFBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgc2V0cyB1
cCB0aGUgdGVzdCBjYXNlLgorICBUZXN0OjpTZXRVcFRlc3RDYXNlRnVuYyBzZXRfdXBfdGNfOwor
ICAvLyBQb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHRlYXJzIGRvd24gdGhlIHRlc3QgY2Fz
ZS4KKyAgVGVzdDo6VGVhckRvd25UZXN0Q2FzZUZ1bmMgdGVhcl9kb3duX3RjXzsKKyAgLy8gVHJ1
ZSBpZmYgYW55IHRlc3QgaW4gdGhpcyB0ZXN0IGNhc2Ugc2hvdWxkIHJ1bi4KKyAgYm9vbCBzaG91
bGRfcnVuXzsKKyAgLy8gRWxhcHNlZCB0aW1lLCBpbiBtaWxsaXNlY29uZHMuCisgIFRpbWVJbk1p
bGxpcyBlbGFwc2VkX3RpbWVfOworICAvLyBIb2xkcyB0ZXN0IHByb3BlcnRpZXMgcmVjb3JkZWQg
ZHVyaW5nIGV4ZWN1dGlvbiBvZiBTZXRVcFRlc3RDYXNlIGFuZAorICAvLyBUZWFyRG93blRlc3RD
YXNlLgorICBUZXN0UmVzdWx0IGFkX2hvY190ZXN0X3Jlc3VsdF87CisKKyAgLy8gV2UgZGlzYWxs
b3cgY29weWluZyBUZXN0Q2FzZXMuCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8o
VGVzdENhc2UpOworfTsKKworLy8gQW4gRW52aXJvbm1lbnQgb2JqZWN0IGlzIGNhcGFibGUgb2Yg
c2V0dGluZyB1cCBhbmQgdGVhcmluZyBkb3duIGFuCisvLyBlbnZpcm9ubWVudC4gIFlvdSBzaG91
bGQgc3ViY2xhc3MgdGhpcyB0byBkZWZpbmUgeW91ciBvd24KKy8vIGVudmlyb25tZW50KHMpLgor
Ly8KKy8vIEFuIEVudmlyb25tZW50IG9iamVjdCBkb2VzIHRoZSBzZXQtdXAgYW5kIHRlYXItZG93
biBpbiB2aXJ0dWFsCisvLyBtZXRob2RzIFNldFVwKCkgYW5kIFRlYXJEb3duKCkgaW5zdGVhZCBv
ZiB0aGUgY29uc3RydWN0b3IgYW5kIHRoZQorLy8gZGVzdHJ1Y3RvciwgYXM6CisvLworLy8gICAx
LiBZb3UgY2Fubm90IHNhZmVseSB0aHJvdyBmcm9tIGEgZGVzdHJ1Y3Rvci4gIFRoaXMgaXMgYSBw
cm9ibGVtCisvLyAgICAgIGFzIGluIHNvbWUgY2FzZXMgR29vZ2xlIFRlc3QgaXMgdXNlZCB3aGVy
ZSBleGNlcHRpb25zIGFyZSBlbmFibGVkLCBhbmQKKy8vICAgICAgd2UgbWF5IHdhbnQgdG8gaW1w
bGVtZW50IEFTU0VSVF8qIHVzaW5nIGV4Y2VwdGlvbnMgd2hlcmUgdGhleSBhcmUKKy8vICAgICAg
YXZhaWxhYmxlLgorLy8gICAyLiBZb3UgY2Fubm90IHVzZSBBU1NFUlRfKiBkaXJlY3RseSBpbiBh
IGNvbnN0cnVjdG9yIG9yCisvLyAgICAgIGRlc3RydWN0b3IuCitjbGFzcyBFbnZpcm9ubWVudCB7
CisgcHVibGljOgorICAvLyBUaGUgZCd0b3IgaXMgdmlydHVhbCBhcyB3ZSBuZWVkIHRvIHN1YmNs
YXNzIEVudmlyb25tZW50LgorICB2aXJ0dWFsIH5FbnZpcm9ubWVudCgpIHt9CisKKyAgLy8gT3Zl
cnJpZGUgdGhpcyB0byBkZWZpbmUgaG93IHRvIHNldCB1cCB0aGUgZW52aXJvbm1lbnQuCisgIHZp
cnR1YWwgdm9pZCBTZXRVcCgpIHt9CisKKyAgLy8gT3ZlcnJpZGUgdGhpcyB0byBkZWZpbmUgaG93
IHRvIHRlYXIgZG93biB0aGUgZW52aXJvbm1lbnQuCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigp
IHt9CisgcHJpdmF0ZToKKyAgLy8gSWYgeW91IHNlZSBhbiBlcnJvciBhYm91dCBvdmVycmlkaW5n
IHRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gb3IKKyAgLy8gYWJvdXQgaXQgYmVpbmcgcHJpdmF0ZSwg
eW91IGhhdmUgbWlzLXNwZWxsZWQgU2V0VXAoKSBhcyBTZXR1cCgpLgorICBzdHJ1Y3QgU2V0dXBf
c2hvdWxkX2JlX3NwZWxsZWRfU2V0VXAge307CisgIHZpcnR1YWwgU2V0dXBfc2hvdWxkX2JlX3Nw
ZWxsZWRfU2V0VXAqIFNldHVwKCkgeyByZXR1cm4gTlVMTDsgfQorfTsKKworLy8gVGhlIGludGVy
ZmFjZSBmb3IgdHJhY2luZyBleGVjdXRpb24gb2YgdGVzdHMuIFRoZSBtZXRob2RzIGFyZSBvcmdh
bml6ZWQgaW4KKy8vIHRoZSBvcmRlciB0aGUgY29ycmVzcG9uZGluZyBldmVudHMgYXJlIGZpcmVk
LgorY2xhc3MgVGVzdEV2ZW50TGlzdGVuZXIgeworIHB1YmxpYzoKKyAgdmlydHVhbCB+VGVzdEV2
ZW50TGlzdGVuZXIoKSB7fQorCisgIC8vIEZpcmVkIGJlZm9yZSBhbnkgdGVzdCBhY3Rpdml0eSBz
dGFydHMuCisgIHZpcnR1YWwgdm9pZCBPblRlc3RQcm9ncmFtU3RhcnQoY29uc3QgVW5pdFRlc3Qm
IHVuaXRfdGVzdCkgPSAwOworCisgIC8vIEZpcmVkIGJlZm9yZSBlYWNoIGl0ZXJhdGlvbiBvZiB0
ZXN0cyBzdGFydHMuICBUaGVyZSBtYXkgYmUgbW9yZSB0aGFuCisgIC8vIG9uZSBpdGVyYXRpb24g
aWYgR1RFU1RfRkxBRyhyZXBlYXQpIGlzIHNldC4gaXRlcmF0aW9uIGlzIHRoZSBpdGVyYXRpb24K
KyAgLy8gaW5kZXgsIHN0YXJ0aW5nIGZyb20gMC4KKyAgdmlydHVhbCB2b2lkIE9uVGVzdEl0ZXJh
dGlvblN0YXJ0KGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgaXRlcmF0aW9uKSA9IDA7CisKKyAgLy8gRmlyZWQgYmVmb3Jl
IGVudmlyb25tZW50IHNldC11cCBmb3IgZWFjaCBpdGVyYXRpb24gb2YgdGVzdHMgc3RhcnRzLgor
ICB2aXJ0dWFsIHZvaWQgT25FbnZpcm9ubWVudHNTZXRVcFN0YXJ0KGNvbnN0IFVuaXRUZXN0JiB1
bml0X3Rlc3QpID0gMDsKKworICAvLyBGaXJlZCBhZnRlciBlbnZpcm9ubWVudCBzZXQtdXAgZm9y
IGVhY2ggaXRlcmF0aW9uIG9mIHRlc3RzIGVuZHMuCisgIHZpcnR1YWwgdm9pZCBPbkVudmlyb25t
ZW50c1NldFVwRW5kKGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QpID0gMDsKKworICAvLyBGaXJl
ZCBiZWZvcmUgdGhlIHRlc3QgY2FzZSBzdGFydHMuCisgIHZpcnR1YWwgdm9pZCBPblRlc3RDYXNl
U3RhcnQoY29uc3QgVGVzdENhc2UmIHRlc3RfY2FzZSkgPSAwOworCisgIC8vIEZpcmVkIGJlZm9y
ZSB0aGUgdGVzdCBzdGFydHMuCisgIHZpcnR1YWwgdm9pZCBPblRlc3RTdGFydChjb25zdCBUZXN0
SW5mbyYgdGVzdF9pbmZvKSA9IDA7CisKKyAgLy8gRmlyZWQgYWZ0ZXIgYSBmYWlsZWQgYXNzZXJ0
aW9uIG9yIGEgU1VDQ0VFRCgpIGludm9jYXRpb24uCisgIHZpcnR1YWwgdm9pZCBPblRlc3RQYXJ0
UmVzdWx0KGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiB0ZXN0X3BhcnRfcmVzdWx0KSA9IDA7CisKKyAg
Ly8gRmlyZWQgYWZ0ZXIgdGhlIHRlc3QgZW5kcy4KKyAgdmlydHVhbCB2b2lkIE9uVGVzdEVuZChj
b25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKSA9IDA7CisKKyAgLy8gRmlyZWQgYWZ0ZXIgdGhlIHRl
c3QgY2FzZSBlbmRzLgorICB2aXJ0dWFsIHZvaWQgT25UZXN0Q2FzZUVuZChjb25zdCBUZXN0Q2Fz
ZSYgdGVzdF9jYXNlKSA9IDA7CisKKyAgLy8gRmlyZWQgYmVmb3JlIGVudmlyb25tZW50IHRlYXIt
ZG93biBmb3IgZWFjaCBpdGVyYXRpb24gb2YgdGVzdHMgc3RhcnRzLgorICB2aXJ0dWFsIHZvaWQg
T25FbnZpcm9ubWVudHNUZWFyRG93blN0YXJ0KGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QpID0g
MDsKKworICAvLyBGaXJlZCBhZnRlciBlbnZpcm9ubWVudCB0ZWFyLWRvd24gZm9yIGVhY2ggaXRl
cmF0aW9uIG9mIHRlc3RzIGVuZHMuCisgIHZpcnR1YWwgdm9pZCBPbkVudmlyb25tZW50c1RlYXJE
b3duRW5kKGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QpID0gMDsKKworICAvLyBGaXJlZCBhZnRl
ciBlYWNoIGl0ZXJhdGlvbiBvZiB0ZXN0cyBmaW5pc2hlcy4KKyAgdmlydHVhbCB2b2lkIE9uVGVz
dEl0ZXJhdGlvbkVuZChjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBpdGVyYXRpb24pID0gMDsKKworICAvLyBGaXJlZCBhZnRl
ciBhbGwgdGVzdCBhY3Rpdml0aWVzIGhhdmUgZW5kZWQuCisgIHZpcnR1YWwgdm9pZCBPblRlc3RQ
cm9ncmFtRW5kKGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QpID0gMDsKK307CisKKy8vIFRoZSBj
b252ZW5pZW5jZSBjbGFzcyBmb3IgdXNlcnMgd2hvIG5lZWQgdG8gb3ZlcnJpZGUganVzdCBvbmUg
b3IgdHdvCisvLyBtZXRob2RzIGFuZCBhcmUgbm90IGNvbmNlcm5lZCB0aGF0IGEgcG9zc2libGUg
Y2hhbmdlIHRvIGEgc2lnbmF0dXJlIG9mCisvLyB0aGUgbWV0aG9kcyB0aGV5IG92ZXJyaWRlIHdp
bGwgbm90IGJlIGNhdWdodCBkdXJpbmcgdGhlIGJ1aWxkLiAgRm9yCisvLyBjb21tZW50cyBhYm91
dCBlYWNoIG1ldGhvZCBwbGVhc2Ugc2VlIHRoZSBkZWZpbml0aW9uIG9mIFRlc3RFdmVudExpc3Rl
bmVyCisvLyBhYm92ZS4KK2NsYXNzIEVtcHR5VGVzdEV2ZW50TGlzdGVuZXIgOiBwdWJsaWMgVGVz
dEV2ZW50TGlzdGVuZXIgeworIHB1YmxpYzoKKyAgdmlydHVhbCB2b2lkIE9uVGVzdFByb2dyYW1T
dGFydChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykge30KKyAgdmlydHVhbCB2b2lkIE9u
VGVzdEl0ZXJhdGlvblN0YXJ0KGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IC8qaXRlcmF0aW9uKi8pIHt9CisgIHZp
cnR1YWwgdm9pZCBPbkVudmlyb25tZW50c1NldFVwU3RhcnQoY29uc3QgVW5pdFRlc3QmIC8qdW5p
dF90ZXN0Ki8pIHt9CisgIHZpcnR1YWwgdm9pZCBPbkVudmlyb25tZW50c1NldFVwRW5kKGNvbnN0
IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovKSB7fQorICB2aXJ0dWFsIHZvaWQgT25UZXN0Q2FzZVN0
YXJ0KGNvbnN0IFRlc3RDYXNlJiAvKnRlc3RfY2FzZSovKSB7fQorICB2aXJ0dWFsIHZvaWQgT25U
ZXN0U3RhcnQoY29uc3QgVGVzdEluZm8mIC8qdGVzdF9pbmZvKi8pIHt9CisgIHZpcnR1YWwgdm9p
ZCBPblRlc3RQYXJ0UmVzdWx0KGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiAvKnRlc3RfcGFydF9yZXN1
bHQqLykge30KKyAgdmlydHVhbCB2b2lkIE9uVGVzdEVuZChjb25zdCBUZXN0SW5mbyYgLyp0ZXN0
X2luZm8qLykge30KKyAgdmlydHVhbCB2b2lkIE9uVGVzdENhc2VFbmQoY29uc3QgVGVzdENhc2Um
IC8qdGVzdF9jYXNlKi8pIHt9CisgIHZpcnR1YWwgdm9pZCBPbkVudmlyb25tZW50c1RlYXJEb3du
U3RhcnQoY29uc3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8pIHt9CisgIHZpcnR1YWwgdm9pZCBP
bkVudmlyb25tZW50c1RlYXJEb3duRW5kKGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovKSB7
fQorICB2aXJ0dWFsIHZvaWQgT25UZXN0SXRlcmF0aW9uRW5kKGNvbnN0IFVuaXRUZXN0JiAvKnVu
aXRfdGVzdCovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAvKml0ZXJh
dGlvbiovKSB7fQorICB2aXJ0dWFsIHZvaWQgT25UZXN0UHJvZ3JhbUVuZChjb25zdCBVbml0VGVz
dCYgLyp1bml0X3Rlc3QqLykge30KK307CisKKy8vIFRlc3RFdmVudExpc3RlbmVycyBsZXRzIHVz
ZXJzIGFkZCBsaXN0ZW5lcnMgdG8gdHJhY2sgZXZlbnRzIGluIEdvb2dsZSBUZXN0LgorY2xhc3Mg
R1RFU1RfQVBJXyBUZXN0RXZlbnRMaXN0ZW5lcnMgeworIHB1YmxpYzoKKyAgVGVzdEV2ZW50TGlz
dGVuZXJzKCk7CisgIH5UZXN0RXZlbnRMaXN0ZW5lcnMoKTsKKworICAvLyBBcHBlbmRzIGFuIGV2
ZW50IGxpc3RlbmVyIHRvIHRoZSBlbmQgb2YgdGhlIGxpc3QuIEdvb2dsZSBUZXN0IGFzc3VtZXMK
KyAgLy8gdGhlIG93bmVyc2hpcCBvZiB0aGUgbGlzdGVuZXIgKGkuZS4gaXQgd2lsbCBkZWxldGUg
dGhlIGxpc3RlbmVyIHdoZW4KKyAgLy8gdGhlIHRlc3QgcHJvZ3JhbSBmaW5pc2hlcykuCisgIHZv
aWQgQXBwZW5kKFRlc3RFdmVudExpc3RlbmVyKiBsaXN0ZW5lcik7CisKKyAgLy8gUmVtb3ZlcyB0
aGUgZ2l2ZW4gZXZlbnQgbGlzdGVuZXIgZnJvbSB0aGUgbGlzdCBhbmQgcmV0dXJucyBpdC4gIEl0
IHRoZW4KKyAgLy8gYmVjb21lcyB0aGUgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkgdG8gZGVsZXRl
IHRoZSBsaXN0ZW5lci4gUmV0dXJucworICAvLyBOVUxMIGlmIHRoZSBsaXN0ZW5lciBpcyBub3Qg
Zm91bmQgaW4gdGhlIGxpc3QuCisgIFRlc3RFdmVudExpc3RlbmVyKiBSZWxlYXNlKFRlc3RFdmVu
dExpc3RlbmVyKiBsaXN0ZW5lcik7CisKKyAgLy8gUmV0dXJucyB0aGUgc3RhbmRhcmQgbGlzdGVu
ZXIgcmVzcG9uc2libGUgZm9yIHRoZSBkZWZhdWx0IGNvbnNvbGUKKyAgLy8gb3V0cHV0LiAgQ2Fu
IGJlIHJlbW92ZWQgZnJvbSB0aGUgbGlzdGVuZXJzIGxpc3QgdG8gc2h1dCBkb3duIGRlZmF1bHQK
KyAgLy8gY29uc29sZSBvdXRwdXQuICBOb3RlIHRoYXQgcmVtb3ZpbmcgdGhpcyBvYmplY3QgZnJv
bSB0aGUgbGlzdGVuZXIgbGlzdAorICAvLyB3aXRoIFJlbGVhc2UgdHJhbnNmZXJzIGl0cyBvd25l
cnNoaXAgdG8gdGhlIGNhbGxlciBhbmQgbWFrZXMgdGhpcworICAvLyBmdW5jdGlvbiByZXR1cm4g
TlVMTCB0aGUgbmV4dCB0aW1lLgorICBUZXN0RXZlbnRMaXN0ZW5lciogZGVmYXVsdF9yZXN1bHRf
cHJpbnRlcigpIGNvbnN0IHsKKyAgICByZXR1cm4gZGVmYXVsdF9yZXN1bHRfcHJpbnRlcl87Cisg
IH0KKworICAvLyBSZXR1cm5zIHRoZSBzdGFuZGFyZCBsaXN0ZW5lciByZXNwb25zaWJsZSBmb3Ig
dGhlIGRlZmF1bHQgWE1MIG91dHB1dAorICAvLyBjb250cm9sbGVkIGJ5IHRoZSAtLWd0ZXN0X291
dHB1dD14bWwgZmxhZy4gIENhbiBiZSByZW1vdmVkIGZyb20gdGhlCisgIC8vIGxpc3RlbmVycyBs
aXN0IGJ5IHVzZXJzIHdobyB3YW50IHRvIHNodXQgZG93biB0aGUgZGVmYXVsdCBYTUwgb3V0cHV0
CisgIC8vIGNvbnRyb2xsZWQgYnkgdGhpcyBmbGFnIGFuZCBzdWJzdGl0dXRlIGl0IHdpdGggY3Vz
dG9tIG9uZS4gIE5vdGUgdGhhdAorICAvLyByZW1vdmluZyB0aGlzIG9iamVjdCBmcm9tIHRoZSBs
aXN0ZW5lciBsaXN0IHdpdGggUmVsZWFzZSB0cmFuc2ZlcnMgaXRzCisgIC8vIG93bmVyc2hpcCB0
byB0aGUgY2FsbGVyIGFuZCBtYWtlcyB0aGlzIGZ1bmN0aW9uIHJldHVybiBOVUxMIHRoZSBuZXh0
CisgIC8vIHRpbWUuCisgIFRlc3RFdmVudExpc3RlbmVyKiBkZWZhdWx0X3htbF9nZW5lcmF0b3Io
KSBjb25zdCB7CisgICAgcmV0dXJuIGRlZmF1bHRfeG1sX2dlbmVyYXRvcl87CisgIH0KKworIHBy
aXZhdGU6CisgIGZyaWVuZCBjbGFzcyBUZXN0Q2FzZTsKKyAgZnJpZW5kIGNsYXNzIFRlc3RJbmZv
OworICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OkRlZmF1bHRHbG9iYWxUZXN0UGFydFJlc3VsdFJl
cG9ydGVyOworICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6Ok5vRXhlY0RlYXRoVGVzdDsKKyAgZnJp
ZW5kIGNsYXNzIGludGVybmFsOjpUZXN0RXZlbnRMaXN0ZW5lcnNBY2Nlc3NvcjsKKyAgZnJpZW5k
IGNsYXNzIGludGVybmFsOjpVbml0VGVzdEltcGw7CisKKyAgLy8gUmV0dXJucyByZXBlYXRlciB0
aGF0IGJyb2FkY2FzdHMgdGhlIFRlc3RFdmVudExpc3RlbmVyIGV2ZW50cyB0byBhbGwKKyAgLy8g
c3Vic2NyaWJlcnMuCisgIFRlc3RFdmVudExpc3RlbmVyKiByZXBlYXRlcigpOworCisgIC8vIFNl
dHMgdGhlIGRlZmF1bHRfcmVzdWx0X3ByaW50ZXIgYXR0cmlidXRlIHRvIHRoZSBwcm92aWRlZCBs
aXN0ZW5lci4KKyAgLy8gVGhlIGxpc3RlbmVyIGlzIGFsc28gYWRkZWQgdG8gdGhlIGxpc3RlbmVy
IGxpc3QgYW5kIHByZXZpb3VzCisgIC8vIGRlZmF1bHRfcmVzdWx0X3ByaW50ZXIgaXMgcmVtb3Zl
ZCBmcm9tIGl0IGFuZCBkZWxldGVkLiBUaGUgbGlzdGVuZXIgY2FuCisgIC8vIGFsc28gYmUgTlVM
TCBpbiB3aGljaCBjYXNlIGl0IHdpbGwgbm90IGJlIGFkZGVkIHRvIHRoZSBsaXN0LiBEb2VzCisg
IC8vIG5vdGhpbmcgaWYgdGhlIHByZXZpb3VzIGFuZCB0aGUgY3VycmVudCBsaXN0ZW5lciBvYmpl
Y3RzIGFyZSB0aGUgc2FtZS4KKyAgdm9pZCBTZXREZWZhdWx0UmVzdWx0UHJpbnRlcihUZXN0RXZl
bnRMaXN0ZW5lciogbGlzdGVuZXIpOworCisgIC8vIFNldHMgdGhlIGRlZmF1bHRfeG1sX2dlbmVy
YXRvciBhdHRyaWJ1dGUgdG8gdGhlIHByb3ZpZGVkIGxpc3RlbmVyLiAgVGhlCisgIC8vIGxpc3Rl
bmVyIGlzIGFsc28gYWRkZWQgdG8gdGhlIGxpc3RlbmVyIGxpc3QgYW5kIHByZXZpb3VzCisgIC8v
IGRlZmF1bHRfeG1sX2dlbmVyYXRvciBpcyByZW1vdmVkIGZyb20gaXQgYW5kIGRlbGV0ZWQuIFRo
ZSBsaXN0ZW5lciBjYW4KKyAgLy8gYWxzbyBiZSBOVUxMIGluIHdoaWNoIGNhc2UgaXQgd2lsbCBu
b3QgYmUgYWRkZWQgdG8gdGhlIGxpc3QuIERvZXMKKyAgLy8gbm90aGluZyBpZiB0aGUgcHJldmlv
dXMgYW5kIHRoZSBjdXJyZW50IGxpc3RlbmVyIG9iamVjdHMgYXJlIHRoZSBzYW1lLgorICB2b2lk
IFNldERlZmF1bHRYbWxHZW5lcmF0b3IoVGVzdEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyKTsKKwor
ICAvLyBDb250cm9scyB3aGV0aGVyIGV2ZW50cyB3aWxsIGJlIGZvcndhcmRlZCBieSB0aGUgcmVw
ZWF0ZXIgdG8gdGhlCisgIC8vIGxpc3RlbmVycyBpbiB0aGUgbGlzdC4KKyAgYm9vbCBFdmVudEZv
cndhcmRpbmdFbmFibGVkKCkgY29uc3Q7CisgIHZvaWQgU3VwcHJlc3NFdmVudEZvcndhcmRpbmco
KTsKKworICAvLyBUaGUgYWN0dWFsIGxpc3Qgb2YgbGlzdGVuZXJzLgorICBpbnRlcm5hbDo6VGVz
dEV2ZW50UmVwZWF0ZXIqIHJlcGVhdGVyXzsKKyAgLy8gTGlzdGVuZXIgcmVzcG9uc2libGUgZm9y
IHRoZSBzdGFuZGFyZCByZXN1bHQgb3V0cHV0LgorICBUZXN0RXZlbnRMaXN0ZW5lciogZGVmYXVs
dF9yZXN1bHRfcHJpbnRlcl87CisgIC8vIExpc3RlbmVyIHJlc3BvbnNpYmxlIGZvciB0aGUgY3Jl
YXRpb24gb2YgdGhlIFhNTCBvdXRwdXQgZmlsZS4KKyAgVGVzdEV2ZW50TGlzdGVuZXIqIGRlZmF1
bHRfeG1sX2dlbmVyYXRvcl87CisKKyAgLy8gV2UgZGlzYWxsb3cgY29weWluZyBUZXN0RXZlbnRM
aXN0ZW5lcnMuCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGVzdEV2ZW50TGlz
dGVuZXJzKTsKK307CisKKy8vIEEgVW5pdFRlc3QgY29uc2lzdHMgb2YgYSB2ZWN0b3Igb2YgVGVz
dENhc2VzLgorLy8KKy8vIFRoaXMgaXMgYSBzaW5nbGV0b24gY2xhc3MuICBUaGUgb25seSBpbnN0
YW5jZSBvZiBVbml0VGVzdCBpcworLy8gY3JlYXRlZCB3aGVuIFVuaXRUZXN0OjpHZXRJbnN0YW5j
ZSgpIGlzIGZpcnN0IGNhbGxlZC4gIFRoaXMKKy8vIGluc3RhbmNlIGlzIG5ldmVyIGRlbGV0ZWQu
CisvLworLy8gVW5pdFRlc3QgaXMgbm90IGNvcHlhYmxlLgorLy8KKy8vIFRoaXMgY2xhc3MgaXMg
dGhyZWFkLXNhZmUgYXMgbG9uZyBhcyB0aGUgbWV0aG9kcyBhcmUgY2FsbGVkCisvLyBhY2NvcmRp
bmcgdG8gdGhlaXIgc3BlY2lmaWNhdGlvbi4KK2NsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3Qgewor
IHB1YmxpYzoKKyAgLy8gR2V0cyB0aGUgc2luZ2xldG9uIFVuaXRUZXN0IG9iamVjdC4gIFRoZSBm
aXJzdCB0aW1lIHRoaXMgbWV0aG9kCisgIC8vIGlzIGNhbGxlZCwgYSBVbml0VGVzdCBvYmplY3Qg
aXMgY29uc3RydWN0ZWQgYW5kIHJldHVybmVkLgorICAvLyBDb25zZWN1dGl2ZSBjYWxscyB3aWxs
IHJldHVybiB0aGUgc2FtZSBvYmplY3QuCisgIHN0YXRpYyBVbml0VGVzdCogR2V0SW5zdGFuY2Uo
KTsKKworICAvLyBSdW5zIGFsbCB0ZXN0cyBpbiB0aGlzIFVuaXRUZXN0IG9iamVjdCBhbmQgcHJp
bnRzIHRoZSByZXN1bHQuCisgIC8vIFJldHVybnMgMCBpZiBzdWNjZXNzZnVsLCBvciAxIG90aGVy
d2lzZS4KKyAgLy8KKyAgLy8gVGhpcyBtZXRob2QgY2FuIG9ubHkgYmUgY2FsbGVkIGZyb20gdGhl
IG1haW4gdGhyZWFkLgorICAvLworICAvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5P
VCBVU0UgSU4gQSBVU0VSIFBST0dSQU0uCisgIGludCBSdW4oKSBHVEVTVF9NVVNUX1VTRV9SRVNV
TFRfOworCisgIC8vIFJldHVybnMgdGhlIHdvcmtpbmcgZGlyZWN0b3J5IHdoZW4gdGhlIGZpcnN0
IFRFU1QoKSBvciBURVNUX0YoKQorICAvLyB3YXMgZXhlY3V0ZWQuICBUaGUgVW5pdFRlc3Qgb2Jq
ZWN0IG93bnMgdGhlIHN0cmluZy4KKyAgY29uc3QgY2hhciogb3JpZ2luYWxfd29ya2luZ19kaXIo
KSBjb25zdDsKKworICAvLyBSZXR1cm5zIHRoZSBUZXN0Q2FzZSBvYmplY3QgZm9yIHRoZSB0ZXN0
IHRoYXQncyBjdXJyZW50bHkgcnVubmluZywKKyAgLy8gb3IgTlVMTCBpZiBubyB0ZXN0IGlzIHJ1
bm5pbmcuCisgIGNvbnN0IFRlc3RDYXNlKiBjdXJyZW50X3Rlc3RfY2FzZSgpIGNvbnN0CisgICAg
ICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pOworCisgIC8vIFJldHVybnMgdGhlIFRlc3RJ
bmZvIG9iamVjdCBmb3IgdGhlIHRlc3QgdGhhdCdzIGN1cnJlbnRseSBydW5uaW5nLAorICAvLyBv
ciBOVUxMIGlmIG5vIHRlc3QgaXMgcnVubmluZy4KKyAgY29uc3QgVGVzdEluZm8qIGN1cnJlbnRf
dGVzdF9pbmZvKCkgY29uc3QKKyAgICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKG11dGV4Xyk7CisK
KyAgLy8gUmV0dXJucyB0aGUgcmFuZG9tIHNlZWQgdXNlZCBhdCB0aGUgc3RhcnQgb2YgdGhlIGN1
cnJlbnQgdGVzdCBydW4uCisgIGludCByYW5kb21fc2VlZCgpIGNvbnN0OworCisjaWYgR1RFU1Rf
SEFTX1BBUkFNX1RFU1QKKyAgLy8gUmV0dXJucyB0aGUgUGFyYW1ldGVyaXplZFRlc3RDYXNlUmVn
aXN0cnkgb2JqZWN0IHVzZWQgdG8ga2VlcCB0cmFjayBvZgorICAvLyB2YWx1ZS1wYXJhbWV0ZXJp
emVkIHRlc3RzIGFuZCBpbnN0YW50aWF0ZSBhbmQgcmVnaXN0ZXIgdGhlbS4KKyAgLy8KKyAgLy8g
SU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFNLgor
ICBpbnRlcm5hbDo6UGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkmIHBhcmFtZXRlcml6ZWRf
dGVzdF9yZWdpc3RyeSgpCisgICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pOworI2Vu
ZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAorCisgIC8vIEdldHMgdGhlIG51bWJlciBvZiBz
dWNjZXNzZnVsIHRlc3QgY2FzZXMuCisgIGludCBzdWNjZXNzZnVsX3Rlc3RfY2FzZV9jb3VudCgp
IGNvbnN0OworCisgIC8vIEdldHMgdGhlIG51bWJlciBvZiBmYWlsZWQgdGVzdCBjYXNlcy4KKyAg
aW50IGZhaWxlZF90ZXN0X2Nhc2VfY291bnQoKSBjb25zdDsKKworICAvLyBHZXRzIHRoZSBudW1i
ZXIgb2YgYWxsIHRlc3QgY2FzZXMuCisgIGludCB0b3RhbF90ZXN0X2Nhc2VfY291bnQoKSBjb25z
dDsKKworICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgYWxsIHRlc3QgY2FzZXMgdGhhdCBjb250YWlu
IGF0IGxlYXN0IG9uZSB0ZXN0CisgIC8vIHRoYXQgc2hvdWxkIHJ1bi4KKyAgaW50IHRlc3RfY2Fz
ZV90b19ydW5fY291bnQoKSBjb25zdDsKKworICAvLyBHZXRzIHRoZSBudW1iZXIgb2Ygc3VjY2Vz
c2Z1bCB0ZXN0cy4KKyAgaW50IHN1Y2Nlc3NmdWxfdGVzdF9jb3VudCgpIGNvbnN0OworCisgIC8v
IEdldHMgdGhlIG51bWJlciBvZiBmYWlsZWQgdGVzdHMuCisgIGludCBmYWlsZWRfdGVzdF9jb3Vu
dCgpIGNvbnN0OworCisgIC8vIEdldHMgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0cyB0aGF0
IHdpbGwgYmUgcmVwb3J0ZWQgaW4gdGhlIFhNTCByZXBvcnQuCisgIGludCByZXBvcnRhYmxlX2Rp
c2FibGVkX3Rlc3RfY291bnQoKSBjb25zdDsKKworICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgZGlz
YWJsZWQgdGVzdHMuCisgIGludCBkaXNhYmxlZF90ZXN0X2NvdW50KCkgY29uc3Q7CisKKyAgLy8g
R2V0cyB0aGUgbnVtYmVyIG9mIHRlc3RzIHRvIGJlIHByaW50ZWQgaW4gdGhlIFhNTCByZXBvcnQu
CisgIGludCByZXBvcnRhYmxlX3Rlc3RfY291bnQoKSBjb25zdDsKKworICAvLyBHZXRzIHRoZSBu
dW1iZXIgb2YgYWxsIHRlc3RzLgorICBpbnQgdG90YWxfdGVzdF9jb3VudCgpIGNvbnN0OworCisg
IC8vIEdldHMgdGhlIG51bWJlciBvZiB0ZXN0cyB0aGF0IHNob3VsZCBydW4uCisgIGludCB0ZXN0
X3RvX3J1bl9jb3VudCgpIGNvbnN0OworCisgIC8vIEdldHMgdGhlIHRpbWUgb2YgdGhlIHRlc3Qg
cHJvZ3JhbSBzdGFydCwgaW4gbXMgZnJvbSB0aGUgc3RhcnQgb2YgdGhlCisgIC8vIFVOSVggZXBv
Y2guCisgIFRpbWVJbk1pbGxpcyBzdGFydF90aW1lc3RhbXAoKSBjb25zdDsKKworICAvLyBHZXRz
IHRoZSBlbGFwc2VkIHRpbWUsIGluIG1pbGxpc2Vjb25kcy4KKyAgVGltZUluTWlsbGlzIGVsYXBz
ZWRfdGltZSgpIGNvbnN0OworCisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHVuaXQgdGVzdCBw
YXNzZWQgKGkuZS4gYWxsIHRlc3QgY2FzZXMgcGFzc2VkKS4KKyAgYm9vbCBQYXNzZWQoKSBjb25z
dDsKKworICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSB1bml0IHRlc3QgZmFpbGVkIChpLmUuIHNv
bWUgdGVzdCBjYXNlIGZhaWxlZAorICAvLyBvciBzb21ldGhpbmcgb3V0c2lkZSBvZiBhbGwgdGVz
dHMgZmFpbGVkKS4KKyAgYm9vbCBGYWlsZWQoKSBjb25zdDsKKworICAvLyBHZXRzIHRoZSBpLXRo
IHRlc3QgY2FzZSBhbW9uZyBhbGwgdGhlIHRlc3QgY2FzZXMuIGkgY2FuIHJhbmdlIGZyb20gMCB0
bworICAvLyB0b3RhbF90ZXN0X2Nhc2VfY291bnQoKSAtIDEuIElmIGkgaXMgbm90IGluIHRoYXQg
cmFuZ2UsIHJldHVybnMgTlVMTC4KKyAgY29uc3QgVGVzdENhc2UqIEdldFRlc3RDYXNlKGludCBp
KSBjb25zdDsKKworICAvLyBSZXR1cm5zIHRoZSBUZXN0UmVzdWx0IGNvbnRhaW5pbmcgaW5mb3Jt
YXRpb24gb24gdGVzdCBmYWlsdXJlcyBhbmQKKyAgLy8gcHJvcGVydGllcyBsb2dnZWQgb3V0c2lk
ZSBvZiBpbmRpdmlkdWFsIHRlc3QgY2FzZXMuCisgIGNvbnN0IFRlc3RSZXN1bHQmIGFkX2hvY190
ZXN0X3Jlc3VsdCgpIGNvbnN0OworCisgIC8vIFJldHVybnMgdGhlIGxpc3Qgb2YgZXZlbnQgbGlz
dGVuZXJzIHRoYXQgY2FuIGJlIHVzZWQgdG8gdHJhY2sgZXZlbnRzCisgIC8vIGluc2lkZSBHb29n
bGUgVGVzdC4KKyAgVGVzdEV2ZW50TGlzdGVuZXJzJiBsaXN0ZW5lcnMoKTsKKworIHByaXZhdGU6
CisgIC8vIFJlZ2lzdGVycyBhbmQgcmV0dXJucyBhIGdsb2JhbCB0ZXN0IGVudmlyb25tZW50LiAg
V2hlbiBhIHRlc3QKKyAgLy8gcHJvZ3JhbSBpcyBydW4sIGFsbCBnbG9iYWwgdGVzdCBlbnZpcm9u
bWVudHMgd2lsbCBiZSBzZXQtdXAgaW4KKyAgLy8gdGhlIG9yZGVyIHRoZXkgd2VyZSByZWdpc3Rl
cmVkLiAgQWZ0ZXIgYWxsIHRlc3RzIGluIHRoZSBwcm9ncmFtCisgIC8vIGhhdmUgZmluaXNoZWQs
IGFsbCBnbG9iYWwgdGVzdCBlbnZpcm9ubWVudHMgd2lsbCBiZSB0b3JuLWRvd24gaW4KKyAgLy8g
dGhlICpyZXZlcnNlKiBvcmRlciB0aGV5IHdlcmUgcmVnaXN0ZXJlZC4KKyAgLy8KKyAgLy8gVGhl
IFVuaXRUZXN0IG9iamVjdCB0YWtlcyBvd25lcnNoaXAgb2YgdGhlIGdpdmVuIGVudmlyb25tZW50
LgorICAvLworICAvLyBUaGlzIG1ldGhvZCBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFp
biB0aHJlYWQuCisgIEVudmlyb25tZW50KiBBZGRFbnZpcm9ubWVudChFbnZpcm9ubWVudCogZW52
KTsKKworICAvLyBBZGRzIGEgVGVzdFBhcnRSZXN1bHQgdG8gdGhlIGN1cnJlbnQgVGVzdFJlc3Vs
dCBvYmplY3QuICBBbGwKKyAgLy8gR29vZ2xlIFRlc3QgYXNzZXJ0aW9uIG1hY3JvcyAoZS5nLiBB
U1NFUlRfVFJVRSwgRVhQRUNUX0VRLCBldGMpCisgIC8vIGV2ZW50dWFsbHkgY2FsbCB0aGlzIHRv
IHJlcG9ydCB0aGVpciByZXN1bHRzLiAgVGhlIHVzZXIgY29kZQorICAvLyBzaG91bGQgdXNlIHRo
ZSBhc3NlcnRpb24gbWFjcm9zIGluc3RlYWQgb2YgY2FsbGluZyB0aGlzIGRpcmVjdGx5LgorICB2
b2lkIEFkZFRlc3RQYXJ0UmVzdWx0KFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHJlc3VsdF90eXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZpbGVfbmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgbGluZV9udW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIG9zX3N0YWNrX3RyYWNlKQorICAgICAgR1RFU1RfTE9DS19FWENM
VURFRF8obXV0ZXhfKTsKKworICAvLyBBZGRzIGEgVGVzdFByb3BlcnR5IHRvIHRoZSBjdXJyZW50
IFRlc3RSZXN1bHQgb2JqZWN0IHdoZW4gaW52b2tlZCBmcm9tCisgIC8vIGluc2lkZSBhIHRlc3Qs
IHRvIGN1cnJlbnQgVGVzdENhc2UncyBhZF9ob2NfdGVzdF9yZXN1bHRfIHdoZW4gaW52b2tlZAor
ICAvLyBmcm9tIFNldFVwVGVzdENhc2Ugb3IgVGVhckRvd25UZXN0Q2FzZSwgb3IgdG8gdGhlIGds
b2JhbCBwcm9wZXJ0eSBzZXQKKyAgLy8gd2hlbiBpbnZva2VkIGVsc2V3aGVyZS4gIElmIHRoZSBy
ZXN1bHQgYWxyZWFkeSBjb250YWlucyBhIHByb3BlcnR5IHdpdGgKKyAgLy8gdGhlIHNhbWUga2V5
LCB0aGUgdmFsdWUgd2lsbCBiZSB1cGRhdGVkLgorICB2b2lkIFJlY29yZFByb3BlcnR5KGNvbnN0
IHN0ZDo6c3RyaW5nJiBrZXksIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSk7CisKKyAgLy8gR2V0
cyB0aGUgaS10aCB0ZXN0IGNhc2UgYW1vbmcgYWxsIHRoZSB0ZXN0IGNhc2VzLiBpIGNhbiByYW5n
ZSBmcm9tIDAgdG8KKyAgLy8gdG90YWxfdGVzdF9jYXNlX2NvdW50KCkgLSAxLiBJZiBpIGlzIG5v
dCBpbiB0aGF0IHJhbmdlLCByZXR1cm5zIE5VTEwuCisgIFRlc3RDYXNlKiBHZXRNdXRhYmxlVGVz
dENhc2UoaW50IGkpOworCisgIC8vIEFjY2Vzc29ycyBmb3IgdGhlIGltcGxlbWVudGF0aW9uIG9i
amVjdC4KKyAgaW50ZXJuYWw6OlVuaXRUZXN0SW1wbCogaW1wbCgpIHsgcmV0dXJuIGltcGxfOyB9
CisgIGNvbnN0IGludGVybmFsOjpVbml0VGVzdEltcGwqIGltcGwoKSBjb25zdCB7IHJldHVybiBp
bXBsXzsgfQorCisgIC8vIFRoZXNlIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucyBhcmUgZnJpZW5kcyBh
cyB0aGV5IG5lZWQgdG8gYWNjZXNzIHByaXZhdGUKKyAgLy8gbWVtYmVycyBvZiBVbml0VGVzdC4K
KyAgZnJpZW5kIGNsYXNzIFRlc3Q7CisgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6QXNzZXJ0SGVs
cGVyOworICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OlNjb3BlZFRyYWNlOworICBmcmllbmQgY2xh
c3MgaW50ZXJuYWw6OlN0cmVhbWluZ0xpc3RlbmVyVGVzdDsKKyAgZnJpZW5kIGNsYXNzIGludGVy
bmFsOjpVbml0VGVzdFJlY29yZFByb3BlcnR5VGVzdEhlbHBlcjsKKyAgZnJpZW5kIEVudmlyb25t
ZW50KiBBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoRW52aXJvbm1lbnQqIGVudik7CisgIGZyaWVu
ZCBpbnRlcm5hbDo6VW5pdFRlc3RJbXBsKiBpbnRlcm5hbDo6R2V0VW5pdFRlc3RJbXBsKCk7Cisg
IGZyaWVuZCB2b2lkIGludGVybmFsOjpSZXBvcnRGYWlsdXJlSW5Vbmtub3duTG9jYXRpb24oCisg
ICAgICBUZXN0UGFydFJlc3VsdDo6VHlwZSByZXN1bHRfdHlwZSwKKyAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiBtZXNzYWdlKTsKKworICAvLyBDcmVhdGVzIGFuIGVtcHR5IFVuaXRUZXN0LgorICBV
bml0VGVzdCgpOworCisgIC8vIEQndG9yCisgIHZpcnR1YWwgflVuaXRUZXN0KCk7CisKKyAgLy8g
UHVzaGVzIGEgdHJhY2UgZGVmaW5lZCBieSBTQ09QRURfVFJBQ0UoKSBvbiB0byB0aGUgcGVyLXRo
cmVhZAorICAvLyBHb29nbGUgVGVzdCB0cmFjZSBzdGFjay4KKyAgdm9pZCBQdXNoR1Rlc3RUcmFj
ZShjb25zdCBpbnRlcm5hbDo6VHJhY2VJbmZvJiB0cmFjZSkKKyAgICAgIEdURVNUX0xPQ0tfRVhD
TFVERURfKG11dGV4Xyk7CisKKyAgLy8gUG9wcyBhIHRyYWNlIGZyb20gdGhlIHBlci10aHJlYWQg
R29vZ2xlIFRlc3QgdHJhY2Ugc3RhY2suCisgIHZvaWQgUG9wR1Rlc3RUcmFjZSgpCisgICAgICBH
VEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pOworCisgIC8vIFByb3RlY3RzIG11dGFibGUgc3Rh
dGUgaW4gKmltcGxfLiAgVGhpcyBpcyBtdXRhYmxlIGFzIHNvbWUgY29uc3QKKyAgLy8gbWV0aG9k
cyBuZWVkIHRvIGxvY2sgaXQgdG9vLgorICBtdXRhYmxlIGludGVybmFsOjpNdXRleCBtdXRleF87
CisKKyAgLy8gT3BhcXVlIGltcGxlbWVudGF0aW9uIG9iamVjdC4gIFRoaXMgZmllbGQgaXMgbmV2
ZXIgY2hhbmdlZCBvbmNlCisgIC8vIHRoZSBvYmplY3QgaXMgY29uc3RydWN0ZWQuICBXZSBkb24n
dCBtYXJrIGl0IGFzIGNvbnN0IGhlcmUsIGFzCisgIC8vIGRvaW5nIHNvIHdpbGwgY2F1c2UgYSB3
YXJuaW5nIGluIHRoZSBjb25zdHJ1Y3RvciBvZiBVbml0VGVzdC4KKyAgLy8gTXV0YWJsZSBzdGF0
ZSBpbiAqaW1wbF8gaXMgcHJvdGVjdGVkIGJ5IG11dGV4Xy4KKyAgaW50ZXJuYWw6OlVuaXRUZXN0
SW1wbCogaW1wbF87CisKKyAgLy8gV2UgZGlzYWxsb3cgY29weWluZyBVbml0VGVzdC4KKyAgR1RF
U1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhVbml0VGVzdCk7Cit9OworCisvLyBBIGNvbnZl
bmllbnQgd3JhcHBlciBmb3IgYWRkaW5nIGFuIGVudmlyb25tZW50IGZvciB0aGUgdGVzdAorLy8g
cHJvZ3JhbS4KKy8vCisvLyBZb3Ugc2hvdWxkIGNhbGwgdGhpcyBiZWZvcmUgUlVOX0FMTF9URVNU
UygpIGlzIGNhbGxlZCwgcHJvYmFibHkgaW4KKy8vIG1haW4oKS4gIElmIHlvdSB1c2UgZ3Rlc3Rf
bWFpbiwgeW91IG5lZWQgdG8gY2FsbCB0aGlzIGJlZm9yZSBtYWluKCkKKy8vIHN0YXJ0cyBmb3Ig
aXQgdG8gdGFrZSBlZmZlY3QuICBGb3IgZXhhbXBsZSwgeW91IGNhbiBkZWZpbmUgYSBnbG9iYWwK
Ky8vIHZhcmlhYmxlIGxpa2UgdGhpczoKKy8vCisvLyAgIHRlc3Rpbmc6OkVudmlyb25tZW50KiBj
b25zdCBmb29fZW52ID0KKy8vICAgICAgIHRlc3Rpbmc6OkFkZEdsb2JhbFRlc3RFbnZpcm9ubWVu
dChuZXcgRm9vRW52aXJvbm1lbnQpOworLy8KKy8vIEhvd2V2ZXIsIHdlIHN0cm9uZ2x5IHJlY29t
bWVuZCB5b3UgdG8gd3JpdGUgeW91ciBvd24gbWFpbigpIGFuZAorLy8gY2FsbCBBZGRHbG9iYWxU
ZXN0RW52aXJvbm1lbnQoKSB0aGVyZSwgYXMgcmVseWluZyBvbiBpbml0aWFsaXphdGlvbgorLy8g
b2YgZ2xvYmFsIHZhcmlhYmxlcyBtYWtlcyB0aGUgY29kZSBoYXJkZXIgdG8gcmVhZCBhbmQgbWF5
IGNhdXNlCisvLyBwcm9ibGVtcyB3aGVuIHlvdSByZWdpc3RlciBtdWx0aXBsZSBlbnZpcm9ubWVu
dHMgZnJvbSBkaWZmZXJlbnQKKy8vIHRyYW5zbGF0aW9uIHVuaXRzIGFuZCB0aGUgZW52aXJvbm1l
bnRzIGhhdmUgZGVwZW5kZW5jaWVzIGFtb25nIHRoZW0KKy8vIChyZW1lbWJlciB0aGF0IHRoZSBj
b21waWxlciBkb2Vzbid0IGd1YXJhbnRlZSB0aGUgb3JkZXIgaW4gd2hpY2gKKy8vIGdsb2JhbCB2
YXJpYWJsZXMgZnJvbSBkaWZmZXJlbnQgdHJhbnNsYXRpb24gdW5pdHMgYXJlIGluaXRpYWxpemVk
KS4KK2lubGluZSBFbnZpcm9ubWVudCogQWRkR2xvYmFsVGVzdEVudmlyb25tZW50KEVudmlyb25t
ZW50KiBlbnYpIHsKKyAgcmV0dXJuIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5BZGRFbnZpcm9u
bWVudChlbnYpOworfQorCisvLyBJbml0aWFsaXplcyBHb29nbGUgVGVzdC4gIFRoaXMgbXVzdCBi
ZSBjYWxsZWQgYmVmb3JlIGNhbGxpbmcKKy8vIFJVTl9BTExfVEVTVFMoKS4gIEluIHBhcnRpY3Vs
YXIsIGl0IHBhcnNlcyBhIGNvbW1hbmQgbGluZSBmb3IgdGhlCisvLyBmbGFncyB0aGF0IEdvb2ds
ZSBUZXN0IHJlY29nbml6ZXMuICBXaGVuZXZlciBhIEdvb2dsZSBUZXN0IGZsYWcgaXMKKy8vIHNl
ZW4sIGl0IGlzIHJlbW92ZWQgZnJvbSBhcmd2LCBhbmQgKmFyZ2MgaXMgZGVjcmVtZW50ZWQuCisv
LworLy8gTm8gdmFsdWUgaXMgcmV0dXJuZWQuICBJbnN0ZWFkLCB0aGUgR29vZ2xlIFRlc3QgZmxh
ZyB2YXJpYWJsZXMgYXJlCisvLyB1cGRhdGVkLgorLy8KKy8vIENhbGxpbmcgdGhlIGZ1bmN0aW9u
IGZvciB0aGUgc2Vjb25kIHRpbWUgaGFzIG5vIHVzZXItdmlzaWJsZSBlZmZlY3QuCitHVEVTVF9B
UElfIHZvaWQgSW5pdEdvb2dsZVRlc3QoaW50KiBhcmdjLCBjaGFyKiogYXJndik7CisKKy8vIFRo
aXMgb3ZlcmxvYWRlZCB2ZXJzaW9uIGNhbiBiZSB1c2VkIGluIFdpbmRvd3MgcHJvZ3JhbXMgY29t
cGlsZWQgaW4KKy8vIFVOSUNPREUgbW9kZS4KK0dURVNUX0FQSV8gdm9pZCBJbml0R29vZ2xlVGVz
dChpbnQqIGFyZ2MsIHdjaGFyX3QqKiBhcmd2KTsKKworbmFtZXNwYWNlIGludGVybmFsIHsKKwor
Ly8gU2VwYXJhdGUgdGhlIGVycm9yIGdlbmVyYXRpbmcgY29kZSBmcm9tIHRoZSBjb2RlIHBhdGgg
dG8gcmVkdWNlIHRoZSBzdGFjaworLy8gZnJhbWUgc2l6ZSBvZiBDbXBIZWxwZXJFUS4gVGhpcyBo
ZWxwcyByZWR1Y2UgdGhlIG92ZXJoZWFkIG9mIHNvbWUgc2FuaXRpemVycworLy8gd2hlbiBjYWxs
aW5nIEVYUEVDVF8qIGluIGEgdGlnaHQgbG9vcC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlw
ZW5hbWUgVDI+CitBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyRVFGYWlsdXJlKGNvbnN0IGNoYXIq
IGxoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiByaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVDEmIGxocywgY29uc3QgVDImIHJocykgeworICByZXR1cm4gRXFGYWlsdXJlKGxo
c19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgIHJoc19leHByZXNzaW9uLAorICAgICAg
ICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShsaHMsIHJocyks
CisgICAgICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHJo
cywgbGhzKSwKKyAgICAgICAgICAgICAgICAgICBmYWxzZSk7Cit9CisKKy8vIFRoZSBoZWxwZXIg
ZnVuY3Rpb24gZm9yIHtBU1NFUlR8RVhQRUNUfV9FUS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwg
dHlwZW5hbWUgVDI+CitBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyRVEoY29uc3QgY2hhciogbGhz
X2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmhz
X2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEmIGxocywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMiYgcmhzKSB7CitHVEVTVF9ESVNB
QkxFX01TQ19XQVJOSU5HU19QVVNIXyg0Mzg5IC8qIHNpZ25lZC91bnNpZ25lZCBtaXNtYXRjaCAq
LykKKyAgaWYgKGxocyA9PSByaHMpIHsKKyAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwor
ICB9CitHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKKworICByZXR1cm4gQ21wSGVs
cGVyRVFGYWlsdXJlKGxoc19leHByZXNzaW9uLCByaHNfZXhwcmVzc2lvbiwgbGhzLCByaHMpOwor
fQorCisvLyBXaXRoIHRoaXMgb3ZlcmxvYWRlZCB2ZXJzaW9uLCB3ZSBhbGxvdyBhbm9ueW1vdXMg
ZW51bXMgdG8gYmUgdXNlZAorLy8gaW4ge0FTU0VSVHxFWFBFQ1R9X0VRIHdoZW4gY29tcGlsZWQg
d2l0aCBnY2MgNCwgYXMgYW5vbnltb3VzIGVudW1zCisvLyBjYW4gYmUgaW1wbGljaXRseSBjYXN0
IHRvIEJpZ2dlc3RJbnQuCitHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJFUShj
b25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQmlnZ2VzdEludCBsaHMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBCaWdnZXN0SW50IHJocyk7CisKKy8vIFRoZSBoZWxwZXIgY2xh
c3MgZm9yIHtBU1NFUlR8RVhQRUNUfV9FUS4gIFRoZSB0ZW1wbGF0ZSBhcmd1bWVudAorLy8gbGhz
X2lzX251bGxfbGl0ZXJhbCBpcyB0cnVlIGlmZiB0aGUgZmlyc3QgYXJndW1lbnQgdG8gQVNTRVJU
X0VRKCkKKy8vIGlzIGEgbnVsbCBwb2ludGVyIGxpdGVyYWwuICBUaGUgZm9sbG93aW5nIGRlZmF1
bHQgaW1wbGVtZW50YXRpb24gaXMKKy8vIGZvciBsaHNfaXNfbnVsbF9saXRlcmFsIGJlaW5nIGZh
bHNlLgordGVtcGxhdGUgPGJvb2wgbGhzX2lzX251bGxfbGl0ZXJhbD4KK2NsYXNzIEVxSGVscGVy
IHsKKyBwdWJsaWM6CisgIC8vIFRoaXMgdGVtcGxhdGl6ZWQgdmVyc2lvbiBpcyBmb3IgdGhlIGdl
bmVyYWwgY2FzZS4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KKyAgc3Rh
dGljIEFzc2VydGlvblJlc3VsdCBDb21wYXJlKGNvbnN0IGNoYXIqIGxoc19leHByZXNzaW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJlc3Np
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMSYgbGhzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDImIHJocykgeworICAgIHJldHVy
biBDbXBIZWxwZXJFUShsaHNfZXhwcmVzc2lvbiwgcmhzX2V4cHJlc3Npb24sIGxocywgcmhzKTsK
KyAgfQorCisgIC8vIFdpdGggdGhpcyBvdmVybG9hZGVkIHZlcnNpb24sIHdlIGFsbG93IGFub255
bW91cyBlbnVtcyB0byBiZSB1c2VkCisgIC8vIGluIHtBU1NFUlR8RVhQRUNUfV9FUSB3aGVuIGNv
bXBpbGVkIHdpdGggZ2NjIDQsIGFzIGFub255bW91cworICAvLyBlbnVtcyBjYW4gYmUgaW1wbGlj
aXRseSBjYXN0IHRvIEJpZ2dlc3RJbnQuCisgIC8vCisgIC8vIEV2ZW4gdGhvdWdoIGl0cyBib2R5
IGxvb2tzIHRoZSBzYW1lIGFzIHRoZSBhYm92ZSB2ZXJzaW9uLCB3ZQorICAvLyBjYW5ub3QgbWVy
Z2UgdGhlIHR3bywgYXMgaXQgd2lsbCBtYWtlIGFub255bW91cyBlbnVtcyB1bmhhcHB5LgorICBz
dGF0aWMgQXNzZXJ0aW9uUmVzdWx0IENvbXBhcmUoY29uc3QgY2hhciogbGhzX2V4cHJlc3Npb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiByaHNfZXhwcmVz
c2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpZ2dlc3RJbnQgbGhzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlnZ2VzdEludCByaHMpIHsKKyAgICBy
ZXR1cm4gQ21wSGVscGVyRVEobGhzX2V4cHJlc3Npb24sIHJoc19leHByZXNzaW9uLCBsaHMsIHJo
cyk7CisgIH0KK307CisKKy8vIFRoaXMgc3BlY2lhbGl6YXRpb24gaXMgdXNlZCB3aGVuIHRoZSBm
aXJzdCBhcmd1bWVudCB0byBBU1NFUlRfRVEoKQorLy8gaXMgYSBudWxsIHBvaW50ZXIgbGl0ZXJh
bCwgbGlrZSBOVUxMLCBmYWxzZSwgb3IgMC4KK3RlbXBsYXRlIDw+CitjbGFzcyBFcUhlbHBlcjx0
cnVlPiB7CisgcHVibGljOgorICAvLyBXZSBkZWZpbmUgdHdvIG92ZXJsb2FkZWQgdmVyc2lvbnMg
b2YgQ29tcGFyZSgpLiAgVGhlIGZpcnN0CisgIC8vIHZlcnNpb24gd2lsbCBiZSBwaWNrZWQgd2hl
biB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvIEFTU0VSVF9FUSgpIGlzCisgIC8vIE5PVCBhIHBvaW50
ZXIsIGUuZy4gQVNTRVJUX0VRKDAsIEFuSW50RnVuY3Rpb24oKSkgb3IKKyAgLy8gRVhQRUNUX0VR
KGZhbHNlLCBhX2Jvb2wpLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgor
ICBzdGF0aWMgQXNzZXJ0aW9uUmVzdWx0IENvbXBhcmUoCisgICAgICBjb25zdCBjaGFyKiBsaHNf
ZXhwcmVzc2lvbiwKKyAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAgICAgY29u
c3QgVDEmIGxocywKKyAgICAgIGNvbnN0IFQyJiByaHMsCisgICAgICAvLyBUaGUgZm9sbG93aW5n
IGxpbmUgcHJldmVudHMgdGhpcyBvdmVybG9hZCBmcm9tIGJlaW5nIGNvbnNpZGVyZWQgaWYgVDIK
KyAgICAgIC8vIGlzIG5vdCBhIHBvaW50ZXIgdHlwZS4gIFdlIG5lZWQgdGhpcyBiZWNhdXNlIEFT
U0VSVF9FUShOVUxMLCBteV9wdHIpCisgICAgICAvLyBleHBhbmRzIHRvIENvbXBhcmUoIiIsICIi
LCBOVUxMLCBteV9wdHIpLCB3aGljaCByZXF1aXJlcyBhIGNvbnZlcnNpb24KKyAgICAgIC8vIHRv
IG1hdGNoIHRoZSBTZWNyZXQqIGluIHRoZSBvdGhlciBvdmVybG9hZCwgd2hpY2ggd291bGQgb3Ro
ZXJ3aXNlIG1ha2UKKyAgICAgIC8vIHRoaXMgdGVtcGxhdGUgbWF0Y2ggYmV0dGVyLgorICAgICAg
dHlwZW5hbWUgRW5hYmxlSWY8IWlzX3BvaW50ZXI8VDI+Ojp2YWx1ZT46OnR5cGUqID0gMCkgewor
ICAgIHJldHVybiBDbXBIZWxwZXJFUShsaHNfZXhwcmVzc2lvbiwgcmhzX2V4cHJlc3Npb24sIGxo
cywgcmhzKTsKKyAgfQorCisgIC8vIFRoaXMgdmVyc2lvbiB3aWxsIGJlIHBpY2tlZCB3aGVuIHRo
ZSBzZWNvbmQgYXJndW1lbnQgdG8gQVNTRVJUX0VRKCkgaXMgYQorICAvLyBwb2ludGVyLCBlLmcu
IEFTU0VSVF9FUShOVUxMLCBhX3BvaW50ZXIpLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAg
c3RhdGljIEFzc2VydGlvblJlc3VsdCBDb21wYXJlKAorICAgICAgY29uc3QgY2hhciogbGhzX2V4
cHJlc3Npb24sCisgICAgICBjb25zdCBjaGFyKiByaHNfZXhwcmVzc2lvbiwKKyAgICAgIC8vIFdl
IHVzZWQgdG8gaGF2ZSBhIHNlY29uZCB0ZW1wbGF0ZSBwYXJhbWV0ZXIgaW5zdGVhZCBvZiBTZWNy
ZXQqLiAgVGhhdAorICAgICAgLy8gdGVtcGxhdGUgcGFyYW1ldGVyIHdvdWxkIGRlZHVjZSB0byAn
bG9uZycsIG1ha2luZyB0aGlzIGEgYmV0dGVyIG1hdGNoCisgICAgICAvLyB0aGFuIHRoZSBmaXJz
dCBvdmVybG9hZCBldmVuIHdpdGhvdXQgdGhlIGZpcnN0IG92ZXJsb2FkJ3MgRW5hYmxlSWYuCisg
ICAgICAvLyBVbmZvcnR1bmF0ZWx5LCBnY2Mgd2l0aCAtV2NvbnZlcnNpb24tbnVsbCB3YXJucyB3
aGVuICJwYXNzaW5nIE5VTEwgdG8KKyAgICAgIC8vIG5vbi1wb2ludGVyIGFyZ3VtZW50IiAoZXZl
biBhIGRlZHVjZWQgaW50ZWdyYWwgYXJndW1lbnQpLCBzbyB0aGUgb2xkCisgICAgICAvLyBpbXBs
ZW1lbnRhdGlvbiBjYXVzZWQgd2FybmluZ3MgaW4gdXNlciBjb2RlLgorICAgICAgU2VjcmV0KiAv
KiBsaHMgKE5VTEwpICovLAorICAgICAgVCogcmhzKSB7CisgICAgLy8gV2UgYWxyZWFkeSBrbm93
IHRoYXQgJ2xocycgaXMgYSBudWxsIHBvaW50ZXIuCisgICAgcmV0dXJuIENtcEhlbHBlckVRKGxo
c19leHByZXNzaW9uLCByaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8VCo+KE5VTEwpLCByaHMpOworICB9Cit9OworCisvLyBTZXBhcmF0ZSB0aGUgZXJy
b3IgZ2VuZXJhdGluZyBjb2RlIGZyb20gdGhlIGNvZGUgcGF0aCB0byByZWR1Y2UgdGhlIHN0YWNr
CisvLyBmcmFtZSBzaXplIG9mIENtcEhlbHBlck9QLiBUaGlzIGhlbHBzIHJlZHVjZSB0aGUgb3Zl
cmhlYWQgb2Ygc29tZSBzYW5pdGl6ZXJzCisvLyB3aGVuIGNhbGxpbmcgRVhQRUNUX09QIGluIGEg
dGlnaHQgbG9vcC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+CitBc3NlcnRp
b25SZXN1bHQgQ21wSGVscGVyT3BGYWlsdXJlKGNvbnN0IGNoYXIqIGV4cHIxLCBjb25zdCBjaGFy
KiBleHByMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEmIHZh
bDEsIGNvbnN0IFQyJiB2YWwyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiBvcCkgeworICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpCisgICAgICAgICA8
PCAiRXhwZWN0ZWQ6ICgiIDw8IGV4cHIxIDw8ICIpICIgPDwgb3AgPDwgIiAoIiA8PCBleHByMgor
ICAgICAgICAgPDwgIiksIGFjdHVhbDogIiA8PCBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1l
c3NhZ2UodmFsMSwgdmFsMikKKyAgICAgICAgIDw8ICIgdnMgIiA8PCBGb3JtYXRGb3JDb21wYXJp
c29uRmFpbHVyZU1lc3NhZ2UodmFsMiwgdmFsMSk7Cit9CisKKy8vIEEgbWFjcm8gZm9yIGltcGxl
bWVudGluZyB0aGUgaGVscGVyIGZ1bmN0aW9ucyBuZWVkZWQgdG8gaW1wbGVtZW50CisvLyBBU1NF
UlRfPz8gYW5kIEVYUEVDVF8/Py4gIEl0IGlzIGhlcmUganVzdCB0byBhdm9pZCBjb3B5LWFuZC1w
YXN0ZQorLy8gb2Ygc2ltaWxhciBjb2RlLgorLy8KKy8vIEZvciBlYWNoIHRlbXBsYXRpemVkIGhl
bHBlciBmdW5jdGlvbiwgd2UgYWxzbyBkZWZpbmUgYW4gb3ZlcmxvYWRlZAorLy8gdmVyc2lvbiBm
b3IgQmlnZ2VzdEludCBpbiBvcmRlciB0byByZWR1Y2UgY29kZSBibG9hdCBhbmQgYWxsb3cKKy8v
IGFub255bW91cyBlbnVtcyB0byBiZSB1c2VkIHdpdGgge0FTU0VSVHxFWFBFQ1R9Xz8/IHdoZW4g
Y29tcGlsZWQKKy8vIHdpdGggZ2NjIDQuCisvLworLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04g
LSBETyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFNLgorCisjZGVmaW5lIEdURVNUX0lNUExfQ01Q
X0hFTFBFUl8ob3BfbmFtZSwgb3ApXAordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBU
Mj5cCitBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyIyNvcF9uYW1lKGNvbnN0IGNoYXIqIGV4cHIx
LCBjb25zdCBjaGFyKiBleHByMiwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUMSYgdmFsMSwgY29uc3QgVDImIHZhbDIpIHtcCisgIGlmICh2YWwxIG9wIHZhbDIp
IHtcCisgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTtcCisgIH0gZWxzZSB7XAorICAgIHJl
dHVybiBDbXBIZWxwZXJPcEZhaWx1cmUoZXhwcjEsIGV4cHIyLCB2YWwxLCB2YWwyLCAjb3ApO1wK
KyAgfVwKK31cCitHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXIjI29wX25hbWUo
XAorICAgIGNvbnN0IGNoYXIqIGV4cHIxLCBjb25zdCBjaGFyKiBleHByMiwgQmlnZ2VzdEludCB2
YWwxLCBCaWdnZXN0SW50IHZhbDIpCisKKy8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8g
Tk9UIFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4KKworLy8gSW1wbGVtZW50cyB0aGUgaGVscGVyIGZ1
bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1fTkUKK0dURVNUX0lNUExfQ01QX0hFTFBFUl8oTkUs
ICE9KTsKKy8vIEltcGxlbWVudHMgdGhlIGhlbHBlciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxFWFBF
Q1R9X0xFCitHVEVTVF9JTVBMX0NNUF9IRUxQRVJfKExFLCA8PSk7CisvLyBJbXBsZW1lbnRzIHRo
ZSBoZWxwZXIgZnVuY3Rpb24gZm9yIHtBU1NFUlR8RVhQRUNUfV9MVAorR1RFU1RfSU1QTF9DTVBf
SEVMUEVSXyhMVCwgPCk7CisvLyBJbXBsZW1lbnRzIHRoZSBoZWxwZXIgZnVuY3Rpb24gZm9yIHtB
U1NFUlR8RVhQRUNUfV9HRQorR1RFU1RfSU1QTF9DTVBfSEVMUEVSXyhHRSwgPj0pOworLy8gSW1w
bGVtZW50cyB0aGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1fR1QKK0dURVNU
X0lNUExfQ01QX0hFTFBFUl8oR1QsID4pOworCisjdW5kZWYgR1RFU1RfSU1QTF9DTVBfSEVMUEVS
XworCisvLyBUaGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1fU1RSRVEuCisv
LworLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEgVVNFUiBQUk9H
UkFNLgorR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSRVEoY29uc3QgY2hh
ciogczFfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIHMyX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzMSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHMyKTsKKworLy8gVGhlIGhlbHBlciBmdW5j
dGlvbiBmb3Ige0FTU0VSVHxFWFBFQ1R9X1NUUkNBU0VFUS4KKy8vCisvLyBJTlRFUk5BTCBJTVBM
RU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gQSBVU0VSIFBST0dSQU0uCitHVEVTVF9BUElfIEFz
c2VydGlvblJlc3VsdCBDbXBIZWxwZXJTVFJDQVNFRVEoY29uc3QgY2hhciogczFfZXhwcmVzc2lv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBzMl9leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIHMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHMyKTsKKworLy8gVGhlIGhlbHBlciBmdW5jdGlv
biBmb3Ige0FTU0VSVHxFWFBFQ1R9X1NUUk5FLgorLy8KKy8vIElOVEVSTkFMIElNUExFTUVOVEFU
SU9OIC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4KK0dURVNUX0FQSV8gQXNzZXJ0aW9u
UmVzdWx0IENtcEhlbHBlclNUUk5FKGNvbnN0IGNoYXIqIHMxX2V4cHJlc3Npb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzMl9leHByZXNz
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogczEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBzMik7CisKKy8vIFRoZSBoZWxwZXIgZnVuY3Rpb24gZm9yIHtBU1NFUlR8RVhQRUNUfV9T
VFJDQVNFTkUuCisvLworLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElO
IEEgVVNFUiBQUk9HUkFNLgorR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RS
Q0FTRU5FKGNvbnN0IGNoYXIqIHMxX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczJfZXhwcmVzc2lvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzMSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBzMik7CisKKworLy8gSGVscGVyIGZ1bmN0aW9uIGZvciAqX1NUUkVRIG9uIHdpZGUgc3RyaW5n
cy4KKy8vCisvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gQSBVU0VS
IFBST0dSQU0uCitHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJTVFJFUShjb25z
dCBjaGFyKiBzMV9leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogczJfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdjaGFyX3QqIHMxLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2NoYXJfdCogczIpOworCisvLyBIZWxw
ZXIgZnVuY3Rpb24gZm9yICpfU1RSTkUgb24gd2lkZSBzdHJpbmdzLgorLy8KKy8vIElOVEVSTkFM
IElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4KK0dURVNUX0FQ
SV8gQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUk5FKGNvbnN0IGNoYXIqIHMxX2V4cHJlc3Np
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBzMl9leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgd2NoYXJfdCogczEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB3Y2hhcl90KiBzMik7CisKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAor
CisvLyBJc1N1YnN0cmluZygpIGFuZCBJc05vdFN1YnN0cmluZygpIGFyZSBpbnRlbmRlZCB0byBi
ZSB1c2VkIGFzIHRoZQorLy8gZmlyc3QgYXJndW1lbnQgdG8ge0VYUEVDVCxBU1NFUlR9X1BSRURf
Rk9STUFUMigpLCBub3QgYnkKKy8vIHRoZW1zZWx2ZXMuICBUaGV5IGNoZWNrIHdoZXRoZXIgbmVl
ZGxlIGlzIGEgc3Vic3RyaW5nIG9mIGhheXN0YWNrCisvLyAoTlVMTCBpcyBjb25zaWRlcmVkIGEg
c3Vic3RyaW5nIG9mIGl0c2VsZiBvbmx5KSwgYW5kIHJldHVybiBhbgorLy8gYXBwcm9wcmlhdGUg
ZXJyb3IgbWVzc2FnZSB3aGVuIHRoZXkgZmFpbC4KKy8vCisvLyBUaGUge25lZWRsZSxoYXlzdGFj
a31fZXhwciBhcmd1bWVudHMgYXJlIHRoZSBzdHJpbmdpZmllZAorLy8gZXhwcmVzc2lvbnMgdGhh
dCBnZW5lcmF0ZWQgdGhlIHR3byByZWFsIGFyZ3VtZW50cy4KK0dURVNUX0FQSV8gQXNzZXJ0aW9u
UmVzdWx0IElzU3Vic3RyaW5nKAorICAgIGNvbnN0IGNoYXIqIG5lZWRsZV9leHByLCBjb25zdCBj
aGFyKiBoYXlzdGFja19leHByLAorICAgIGNvbnN0IGNoYXIqIG5lZWRsZSwgY29uc3QgY2hhciog
aGF5c3RhY2spOworR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgSXNTdWJzdHJpbmcoCisgICAg
Y29uc3QgY2hhciogbmVlZGxlX2V4cHIsIGNvbnN0IGNoYXIqIGhheXN0YWNrX2V4cHIsCisgICAg
Y29uc3Qgd2NoYXJfdCogbmVlZGxlLCBjb25zdCB3Y2hhcl90KiBoYXlzdGFjayk7CitHVEVTVF9B
UElfIEFzc2VydGlvblJlc3VsdCBJc05vdFN1YnN0cmluZygKKyAgICBjb25zdCBjaGFyKiBuZWVk
bGVfZXhwciwgY29uc3QgY2hhciogaGF5c3RhY2tfZXhwciwKKyAgICBjb25zdCBjaGFyKiBuZWVk
bGUsIGNvbnN0IGNoYXIqIGhheXN0YWNrKTsKK0dURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IElz
Tm90U3Vic3RyaW5nKAorICAgIGNvbnN0IGNoYXIqIG5lZWRsZV9leHByLCBjb25zdCBjaGFyKiBo
YXlzdGFja19leHByLAorICAgIGNvbnN0IHdjaGFyX3QqIG5lZWRsZSwgY29uc3Qgd2NoYXJfdCog
aGF5c3RhY2spOworR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgSXNTdWJzdHJpbmcoCisgICAg
Y29uc3QgY2hhciogbmVlZGxlX2V4cHIsIGNvbnN0IGNoYXIqIGhheXN0YWNrX2V4cHIsCisgICAg
Y29uc3QgOjpzdGQ6OnN0cmluZyYgbmVlZGxlLCBjb25zdCA6OnN0ZDo6c3RyaW5nJiBoYXlzdGFj
ayk7CitHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBJc05vdFN1YnN0cmluZygKKyAgICBjb25z
dCBjaGFyKiBuZWVkbGVfZXhwciwgY29uc3QgY2hhciogaGF5c3RhY2tfZXhwciwKKyAgICBjb25z
dCA6OnN0ZDo6c3RyaW5nJiBuZWVkbGUsIGNvbnN0IDo6c3RkOjpzdHJpbmcmIGhheXN0YWNrKTsK
KworI2lmIEdURVNUX0hBU19TVERfV1NUUklORworR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQg
SXNTdWJzdHJpbmcoCisgICAgY29uc3QgY2hhciogbmVlZGxlX2V4cHIsIGNvbnN0IGNoYXIqIGhh
eXN0YWNrX2V4cHIsCisgICAgY29uc3QgOjpzdGQ6OndzdHJpbmcmIG5lZWRsZSwgY29uc3QgOjpz
dGQ6OndzdHJpbmcmIGhheXN0YWNrKTsKK0dURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IElzTm90
U3Vic3RyaW5nKAorICAgIGNvbnN0IGNoYXIqIG5lZWRsZV9leHByLCBjb25zdCBjaGFyKiBoYXlz
dGFja19leHByLAorICAgIGNvbnN0IDo6c3RkOjp3c3RyaW5nJiBuZWVkbGUsIGNvbnN0IDo6c3Rk
Ojp3c3RyaW5nJiBoYXlzdGFjayk7CisjZW5kaWYgIC8vIEdURVNUX0hBU19TVERfV1NUUklORwor
CituYW1lc3BhY2UgaW50ZXJuYWwgeworCisvLyBIZWxwZXIgdGVtcGxhdGUgZnVuY3Rpb24gZm9y
IGNvbXBhcmluZyBmbG9hdGluZy1wb2ludHMuCisvLworLy8gVGVtcGxhdGUgcGFyYW1ldGVyOgor
Ly8KKy8vICAgUmF3VHlwZTogdGhlIHJhdyBmbG9hdGluZy1wb2ludCB0eXBlIChlaXRoZXIgZmxv
YXQgb3IgZG91YmxlKQorLy8KKy8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVT
RSBJTiBBIFVTRVIgUFJPR1JBTS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBSYXdUeXBlPgorQXNzZXJ0
aW9uUmVzdWx0IENtcEhlbHBlckZsb2F0aW5nUG9pbnRFUShjb25zdCBjaGFyKiBsaHNfZXhwcmVz
c2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFJhd1R5cGUgbGhzX3ZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBSYXdUeXBlIHJoc192YWx1ZSkgeworICBjb25zdCBGbG9hdGluZ1BvaW50PFJhd1R5
cGU+IGxocyhsaHNfdmFsdWUpLCByaHMocmhzX3ZhbHVlKTsKKworICBpZiAobGhzLkFsbW9zdEVx
dWFscyhyaHMpKSB7CisgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKKyAgfQorCisgIDo6
c3RkOjpzdHJpbmdzdHJlYW0gbGhzX3NzOworICBsaHNfc3MgPDwgc3RkOjpzZXRwcmVjaXNpb24o
c3RkOjpudW1lcmljX2xpbWl0czxSYXdUeXBlPjo6ZGlnaXRzMTAgKyAyKQorICAgICAgICAgPDwg
bGhzX3ZhbHVlOworCisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gcmhzX3NzOworICByaHNfc3MgPDwg
c3RkOjpzZXRwcmVjaXNpb24oc3RkOjpudW1lcmljX2xpbWl0czxSYXdUeXBlPjo6ZGlnaXRzMTAg
KyAyKQorICAgICAgICAgPDwgcmhzX3ZhbHVlOworCisgIHJldHVybiBFcUZhaWx1cmUobGhzX2V4
cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAg
ICAgICAgICAgU3RyaW5nU3RyZWFtVG9TdHJpbmcoJmxoc19zcyksCisgICAgICAgICAgICAgICAg
ICAgU3RyaW5nU3RyZWFtVG9TdHJpbmcoJnJoc19zcyksCisgICAgICAgICAgICAgICAgICAgZmFs
c2UpOworfQorCisvLyBIZWxwZXIgZnVuY3Rpb24gZm9yIGltcGxlbWVudGluZyBBU1NFUlRfTkVB
Ui4KKy8vCisvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gQSBVU0VS
IFBST0dSQU0uCitHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBEb3VibGVOZWFyUHJlZEZvcm1h
dChjb25zdCBjaGFyKiBleHByMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4cHIyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWJzX2Vycm9yX2V4cHIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgdmFsMSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSB2
YWwyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91
YmxlIGFic19lcnJvcik7CisKKy8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVT
RSBJTiBVU0VSIENPREUuCisvLyBBIGNsYXNzIHRoYXQgZW5hYmxlcyBvbmUgdG8gc3RyZWFtIG1l
c3NhZ2VzIHRvIGFzc2VydGlvbiBtYWNyb3MKK2NsYXNzIEdURVNUX0FQSV8gQXNzZXJ0SGVscGVy
IHsKKyBwdWJsaWM6CisgIC8vIENvbnN0cnVjdG9yLgorICBBc3NlcnRIZWxwZXIoVGVzdFBhcnRS
ZXN1bHQ6OlR5cGUgdHlwZSwKKyAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZpbGUsCisgICAg
ICAgICAgICAgICBpbnQgbGluZSwKKyAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG1lc3NhZ2Up
OworICB+QXNzZXJ0SGVscGVyKCk7CisKKyAgLy8gTWVzc2FnZSBhc3NpZ25tZW50IGlzIGEgc2Vt
YW50aWMgdHJpY2sgdG8gZW5hYmxlIGFzc2VydGlvbgorICAvLyBzdHJlYW1pbmc7IHNlZSB0aGUg
R1RFU1RfTUVTU0FHRV8gbWFjcm8gYmVsb3cuCisgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IE1lc3Nh
Z2UmIG1lc3NhZ2UpIGNvbnN0OworCisgcHJpdmF0ZToKKyAgLy8gV2UgcHV0IG91ciBkYXRhIGlu
IGEgc3RydWN0IHNvIHRoYXQgdGhlIHNpemUgb2YgdGhlIEFzc2VydEhlbHBlciBjbGFzcyBjYW4K
KyAgLy8gYmUgYXMgc21hbGwgYXMgcG9zc2libGUuICBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNl
IGdjYyBpcyBpbmNhcGFibGUgb2YKKyAgLy8gcmUtdXNpbmcgc3RhY2sgc3BhY2UgZXZlbiBmb3Ig
dGVtcG9yYXJ5IHZhcmlhYmxlcywgc28gZXZlcnkgRVhQRUNUX0VRCisgIC8vIHJlc2VydmVzIHN0
YWNrIHNwYWNlIGZvciBhbm90aGVyIEFzc2VydEhlbHBlci4KKyAgc3RydWN0IEFzc2VydEhlbHBl
ckRhdGEgeworICAgIEFzc2VydEhlbHBlckRhdGEoVGVzdFBhcnRSZXN1bHQ6OlR5cGUgdCwKKyAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHNyY2ZpbGUsCisgICAgICAgICAgICAgICAg
ICAgICBpbnQgbGluZV9udW0sCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBtc2cp
CisgICAgICAgIDogdHlwZSh0KSwgZmlsZShzcmNmaWxlKSwgbGluZShsaW5lX251bSksIG1lc3Nh
Z2UobXNnKSB7IH0KKworICAgIFRlc3RQYXJ0UmVzdWx0OjpUeXBlIGNvbnN0IHR5cGU7CisgICAg
Y29uc3QgY2hhciogY29uc3QgZmlsZTsKKyAgICBpbnQgY29uc3QgbGluZTsKKyAgICBzdGQ6OnN0
cmluZyBjb25zdCBtZXNzYWdlOworCisgICBwcml2YXRlOgorICAgIEdURVNUX0RJU0FMTE9XX0NP
UFlfQU5EX0FTU0lHTl8oQXNzZXJ0SGVscGVyRGF0YSk7CisgIH07CisKKyAgQXNzZXJ0SGVscGVy
RGF0YSogY29uc3QgZGF0YV87CisKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhB
c3NlcnRIZWxwZXIpOworfTsKKworfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCisKKyNpZiBHVEVT
VF9IQVNfUEFSQU1fVEVTVAorLy8gVGhlIHB1cmUgaW50ZXJmYWNlIGNsYXNzIHRoYXQgYWxsIHZh
bHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgaW5oZXJpdCBmcm9tLgorLy8gQSB2YWx1ZS1wYXJhbWV0
ZXJpemVkIGNsYXNzIG11c3QgaW5oZXJpdCBmcm9tIGJvdGggOjp0ZXN0aW5nOjpUZXN0IGFuZAor
Ly8gOjp0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2UuIEluIG1vc3QgY2FzZXMgdGhhdCBqdXN0
IG1lYW5zIGluaGVyaXRpbmcKKy8vIGZyb20gOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtLCBidXQg
bW9yZSBjb21wbGljYXRlZCB0ZXN0IGhpZXJhcmNoaWVzCisvLyBtYXkgbmVlZCB0byBpbmhlcml0
IGZyb20gVGVzdCBhbmQgV2l0aFBhcmFtSW50ZXJmYWNlIGF0IGRpZmZlcmVudCBsZXZlbHMuCisv
LworLy8gVGhpcyBpbnRlcmZhY2UgaGFzIHN1cHBvcnQgZm9yIGFjY2Vzc2luZyB0aGUgdGVzdCBw
YXJhbWV0ZXIgdmFsdWUgdmlhCisvLyB0aGUgR2V0UGFyYW0oKSBtZXRob2QuCisvLworLy8gVXNl
IGl0IHdpdGggb25lIG9mIHRoZSBwYXJhbWV0ZXIgZ2VuZXJhdG9yIGRlZmluaW5nIGZ1bmN0aW9u
cywgbGlrZSBSYW5nZSgpLAorLy8gVmFsdWVzKCksIFZhbHVlc0luKCksIEJvb2woKSwgYW5kIENv
bWJpbmUoKS4KKy8vCisvLyBjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdp
dGhQYXJhbTxpbnQ+IHsKKy8vICBwcm90ZWN0ZWQ6CisvLyAgIEZvb1Rlc3QoKSB7CisvLyAgICAg
Ly8gQ2FuIHVzZSBHZXRQYXJhbSgpIGhlcmUuCisvLyAgIH0KKy8vICAgdmlydHVhbCB+Rm9vVGVz
dCgpIHsKKy8vICAgICAvLyBDYW4gdXNlIEdldFBhcmFtKCkgaGVyZS4KKy8vICAgfQorLy8gICB2
aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisvLyAgICAgLy8gQ2FuIHVzZSBHZXRQYXJhbSgpIGhlcmUu
CisvLyAgIH0KKy8vICAgdmlydHVhbCB2b2lkIFRlYXJEb3duIHsKKy8vICAgICAvLyBDYW4gdXNl
IEdldFBhcmFtKCkgaGVyZS4KKy8vICAgfQorLy8gfTsKKy8vIFRFU1RfUChGb29UZXN0LCBEb2Vz
QmFyKSB7CisvLyAgIC8vIENhbiB1c2UgR2V0UGFyYW0oKSBtZXRob2QgaGVyZS4KKy8vICAgRm9v
IGZvbzsKKy8vICAgQVNTRVJUX1RSVUUoZm9vLkRvZXNCYXIoR2V0UGFyYW0oKSkpOworLy8gfQor
Ly8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoT25lVG9UZW5SYW5nZSwgRm9vVGVzdCwgOjp0ZXN0
aW5nOjpSYW5nZSgxLCAxMCkpOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFdpdGhQ
YXJhbUludGVyZmFjZSB7CisgcHVibGljOgorICB0eXBlZGVmIFQgUGFyYW1UeXBlOworICB2aXJ0
dWFsIH5XaXRoUGFyYW1JbnRlcmZhY2UoKSB7fQorCisgIC8vIFRoZSBjdXJyZW50IHBhcmFtZXRl
ciB2YWx1ZS4gSXMgYWxzbyBhdmFpbGFibGUgaW4gdGhlIHRlc3QgZml4dHVyZSdzCisgIC8vIGNv
bnN0cnVjdG9yLiBUaGlzIG1lbWJlciBmdW5jdGlvbiBpcyBub24tc3RhdGljLCBldmVuIHRob3Vn
aCBpdCBvbmx5CisgIC8vIHJlZmVyZW5jZXMgc3RhdGljIGRhdGEsIHRvIHJlZHVjZSB0aGUgb3Bw
b3J0dW5pdHkgZm9yIGluY29ycmVjdCB1c2VzCisgIC8vIGxpa2Ugd3JpdGluZyAnV2l0aFBhcmFt
SW50ZXJmYWNlPGJvb2w+OjpHZXRQYXJhbSgpJyBmb3IgYSB0ZXN0IHRoYXQKKyAgLy8gdXNlcyBh
IGZpeHR1cmUgd2hvc2UgcGFyYW1ldGVyIHR5cGUgaXMgaW50LgorICBjb25zdCBQYXJhbVR5cGUm
IEdldFBhcmFtKCkgY29uc3QgeworICAgIEdURVNUX0NIRUNLXyhwYXJhbWV0ZXJfICE9IE5VTEwp
CisgICAgICAgIDw8ICJHZXRQYXJhbSgpIGNhbiBvbmx5IGJlIGNhbGxlZCBpbnNpZGUgYSB2YWx1
ZS1wYXJhbWV0ZXJpemVkIHRlc3QgIgorICAgICAgICA8PCAiLS0gZGlkIHlvdSBpbnRlbmQgdG8g
d3JpdGUgVEVTVF9QIGluc3RlYWQgb2YgVEVTVF9GPyI7CisgICAgcmV0dXJuICpwYXJhbWV0ZXJf
OworICB9CisKKyBwcml2YXRlOgorICAvLyBTZXRzIHBhcmFtZXRlciB2YWx1ZS4gVGhlIGNhbGxl
ciBpcyByZXNwb25zaWJsZSBmb3IgbWFraW5nIHN1cmUgdGhlIHZhbHVlCisgIC8vIHJlbWFpbnMg
YWxpdmUgYW5kIHVuY2hhbmdlZCB0aHJvdWdob3V0IHRoZSBjdXJyZW50IHRlc3QuCisgIHN0YXRp
YyB2b2lkIFNldFBhcmFtKGNvbnN0IFBhcmFtVHlwZSogcGFyYW1ldGVyKSB7CisgICAgcGFyYW1l
dGVyXyA9IHBhcmFtZXRlcjsKKyAgfQorCisgIC8vIFN0YXRpYyB2YWx1ZSB1c2VkIGZvciBhY2Nl
c3NpbmcgcGFyYW1ldGVyIGR1cmluZyBhIHRlc3QgbGlmZXRpbWUuCisgIHN0YXRpYyBjb25zdCBQ
YXJhbVR5cGUqIHBhcmFtZXRlcl87CisKKyAgLy8gVGVzdENsYXNzIG11c3QgYmUgYSBzdWJjbGFz
cyBvZiBXaXRoUGFyYW1JbnRlcmZhY2U8VD4gYW5kIFRlc3QuCisgIHRlbXBsYXRlIDxjbGFzcyBU
ZXN0Q2xhc3M+IGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6UGFyYW1ldGVyaXplZFRlc3RGYWN0b3J5
OworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citjb25zdCBUKiBXaXRoUGFyYW1JbnRlcmZh
Y2U8VD46OnBhcmFtZXRlcl8gPSBOVUxMOworCisvLyBNb3N0IHZhbHVlLXBhcmFtZXRlcml6ZWQg
Y2xhc3NlcyBjYW4gaWdub3JlIHRoZSBleGlzdGVuY2Ugb2YKKy8vIFdpdGhQYXJhbUludGVyZmFj
ZSwgYW5kIGNhbiBqdXN0IGluaGVyaXQgZnJvbSA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW0uCisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVGVzdFdpdGhQYXJhbSA6IHB1YmxpYyBUZXN0
LCBwdWJsaWMgV2l0aFBhcmFtSW50ZXJmYWNlPFQ+IHsKK307CisKKyNlbmRpZiAgLy8gR1RFU1Rf
SEFTX1BBUkFNX1RFU1QKKworLy8gTWFjcm9zIGZvciBpbmRpY2F0aW5nIHN1Y2Nlc3MvZmFpbHVy
ZSBpbiB0ZXN0IGNvZGUuCisKKy8vIEFERF9GQUlMVVJFIHVuY29uZGl0aW9uYWxseSBhZGRzIGEg
ZmFpbHVyZSB0byB0aGUgY3VycmVudCB0ZXN0LgorLy8gU1VDQ0VFRCBnZW5lcmF0ZXMgYSBzdWNj
ZXNzIC0gaXQgZG9lc24ndCBhdXRvbWF0aWNhbGx5IG1ha2UgdGhlCisvLyBjdXJyZW50IHRlc3Qg
c3VjY2Vzc2Z1bCwgYXMgYSB0ZXN0IGlzIG9ubHkgc3VjY2Vzc2Z1bCB3aGVuIGl0IGhhcworLy8g
bm8gZmFpbHVyZS4KKy8vCisvLyBFWFBFQ1RfKiB2ZXJpZmllcyB0aGF0IGEgY2VydGFpbiBjb25k
aXRpb24gaXMgc2F0aXNmaWVkLiAgSWYgbm90LAorLy8gaXQgYmVoYXZlcyBsaWtlIEFERF9GQUlM
VVJFLiAgSW4gcGFydGljdWxhcjoKKy8vCisvLyAgIEVYUEVDVF9UUlVFICB2ZXJpZmllcyB0aGF0
IGEgQm9vbGVhbiBjb25kaXRpb24gaXMgdHJ1ZS4KKy8vICAgRVhQRUNUX0ZBTFNFIHZlcmlmaWVz
IHRoYXQgYSBCb29sZWFuIGNvbmRpdGlvbiBpcyBmYWxzZS4KKy8vCisvLyBGQUlMIGFuZCBBU1NF
UlRfKiBhcmUgc2ltaWxhciB0byBBRERfRkFJTFVSRSBhbmQgRVhQRUNUXyosIGV4Y2VwdAorLy8g
dGhhdCB0aGV5IHdpbGwgYWxzbyBhYm9ydCB0aGUgY3VycmVudCBmdW5jdGlvbiBvbiBmYWlsdXJl
LiAgUGVvcGxlCisvLyB1c3VhbGx5IHdhbnQgdGhlIGZhaWwtZmFzdCBiZWhhdmlvciBvZiBGQUlM
IGFuZCBBU1NFUlRfKiwgYnV0IHRob3NlCisvLyB3cml0aW5nIGRhdGEtZHJpdmVuIHRlc3RzIG9m
dGVuIGZpbmQgdGhlbXNlbHZlcyB1c2luZyBBRERfRkFJTFVSRQorLy8gYW5kIEVYUEVDVF8qIG1v
cmUuCisKKy8vIEdlbmVyYXRlcyBhIG5vbmZhdGFsIGZhaWx1cmUgd2l0aCBhIGdlbmVyaWMgbWVz
c2FnZS4KKyNkZWZpbmUgQUREX0ZBSUxVUkUoKSBHVEVTVF9OT05GQVRBTF9GQUlMVVJFXygiRmFp
bGVkIikKKworLy8gR2VuZXJhdGVzIGEgbm9uZmF0YWwgZmFpbHVyZSBhdCB0aGUgZ2l2ZW4gc291
cmNlIGZpbGUgbG9jYXRpb24gd2l0aAorLy8gYSBnZW5lcmljIG1lc3NhZ2UuCisjZGVmaW5lIEFE
RF9GQUlMVVJFX0FUKGZpbGUsIGxpbmUpIFwKKyAgR1RFU1RfTUVTU0FHRV9BVF8oZmlsZSwgbGlu
ZSwgIkZhaWxlZCIsIFwKKyAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpUZXN0UGFydFJl
c3VsdDo6a05vbkZhdGFsRmFpbHVyZSkKKworLy8gR2VuZXJhdGVzIGEgZmF0YWwgZmFpbHVyZSB3
aXRoIGEgZ2VuZXJpYyBtZXNzYWdlLgorI2RlZmluZSBHVEVTVF9GQUlMKCkgR1RFU1RfRkFUQUxf
RkFJTFVSRV8oIkZhaWxlZCIpCisKKy8vIERlZmluZSB0aGlzIG1hY3JvIHRvIDEgdG8gb21pdCB0
aGUgZGVmaW5pdGlvbiBvZiBGQUlMKCksIHdoaWNoIGlzIGEKKy8vIGdlbmVyaWMgbmFtZSBhbmQg
Y2xhc2hlcyB3aXRoIHNvbWUgb3RoZXIgbGlicmFyaWVzLgorI2lmICFHVEVTVF9ET05UX0RFRklO
RV9GQUlMCisjIGRlZmluZSBGQUlMKCkgR1RFU1RfRkFJTCgpCisjZW5kaWYKKworLy8gR2VuZXJh
dGVzIGEgc3VjY2VzcyB3aXRoIGEgZ2VuZXJpYyBtZXNzYWdlLgorI2RlZmluZSBHVEVTVF9TVUND
RUVEKCkgR1RFU1RfU1VDQ0VTU18oIlN1Y2NlZWRlZCIpCisKKy8vIERlZmluZSB0aGlzIG1hY3Jv
IHRvIDEgdG8gb21pdCB0aGUgZGVmaW5pdGlvbiBvZiBTVUNDRUVEKCksIHdoaWNoCisvLyBpcyBh
IGdlbmVyaWMgbmFtZSBhbmQgY2xhc2hlcyB3aXRoIHNvbWUgb3RoZXIgbGlicmFyaWVzLgorI2lm
ICFHVEVTVF9ET05UX0RFRklORV9TVUNDRUVECisjIGRlZmluZSBTVUNDRUVEKCkgR1RFU1RfU1VD
Q0VFRCgpCisjZW5kaWYKKworLy8gTWFjcm9zIGZvciB0ZXN0aW5nIGV4Y2VwdGlvbnMuCisvLwor
Ly8gICAgKiB7QVNTRVJUfEVYUEVDVH1fVEhST1coc3RhdGVtZW50LCBleHBlY3RlZF9leGNlcHRp
b24pOgorLy8gICAgICAgICBUZXN0cyB0aGF0IHRoZSBzdGF0ZW1lbnQgdGhyb3dzIHRoZSBleHBl
Y3RlZCBleGNlcHRpb24uCisvLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9OT19USFJPVyhzdGF0ZW1l
bnQpOgorLy8gICAgICAgICBUZXN0cyB0aGF0IHRoZSBzdGF0ZW1lbnQgZG9lc24ndCB0aHJvdyBh
bnkgZXhjZXB0aW9uLgorLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fQU5ZX1RIUk9XKHN0YXRlbWVu
dCk6CisvLyAgICAgICAgIFRlc3RzIHRoYXQgdGhlIHN0YXRlbWVudCB0aHJvd3MgYW4gZXhjZXB0
aW9uLgorCisjZGVmaW5lIEVYUEVDVF9USFJPVyhzdGF0ZW1lbnQsIGV4cGVjdGVkX2V4Y2VwdGlv
bikgXAorICBHVEVTVF9URVNUX1RIUk9XXyhzdGF0ZW1lbnQsIGV4cGVjdGVkX2V4Y2VwdGlvbiwg
R1RFU1RfTk9ORkFUQUxfRkFJTFVSRV8pCisjZGVmaW5lIEVYUEVDVF9OT19USFJPVyhzdGF0ZW1l
bnQpIFwKKyAgR1RFU1RfVEVTVF9OT19USFJPV18oc3RhdGVtZW50LCBHVEVTVF9OT05GQVRBTF9G
QUlMVVJFXykKKyNkZWZpbmUgRVhQRUNUX0FOWV9USFJPVyhzdGF0ZW1lbnQpIFwKKyAgR1RFU1Rf
VEVTVF9BTllfVEhST1dfKHN0YXRlbWVudCwgR1RFU1RfTk9ORkFUQUxfRkFJTFVSRV8pCisjZGVm
aW5lIEFTU0VSVF9USFJPVyhzdGF0ZW1lbnQsIGV4cGVjdGVkX2V4Y2VwdGlvbikgXAorICBHVEVT
VF9URVNUX1RIUk9XXyhzdGF0ZW1lbnQsIGV4cGVjdGVkX2V4Y2VwdGlvbiwgR1RFU1RfRkFUQUxf
RkFJTFVSRV8pCisjZGVmaW5lIEFTU0VSVF9OT19USFJPVyhzdGF0ZW1lbnQpIFwKKyAgR1RFU1Rf
VEVTVF9OT19USFJPV18oc3RhdGVtZW50LCBHVEVTVF9GQVRBTF9GQUlMVVJFXykKKyNkZWZpbmUg
QVNTRVJUX0FOWV9USFJPVyhzdGF0ZW1lbnQpIFwKKyAgR1RFU1RfVEVTVF9BTllfVEhST1dfKHN0
YXRlbWVudCwgR1RFU1RfRkFUQUxfRkFJTFVSRV8pCisKKy8vIEJvb2xlYW4gYXNzZXJ0aW9ucy4g
Q29uZGl0aW9uIGNhbiBiZSBlaXRoZXIgYSBCb29sZWFuIGV4cHJlc3Npb24gb3IgYW4KKy8vIEFz
c2VydGlvblJlc3VsdC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSBBc3NlcnRp
b25SZXN1bHQgd2l0aAorLy8gdGhlc2UgbWFjcm9zIHNlZSBjb21tZW50cyBvbiB0aGF0IGNsYXNz
LgorI2RlZmluZSBFWFBFQ1RfVFJVRShjb25kaXRpb24pIFwKKyAgR1RFU1RfVEVTVF9CT09MRUFO
XygoY29uZGl0aW9uKSwgI2NvbmRpdGlvbiwgZmFsc2UsIHRydWUsIFwKKyAgICAgICAgICAgICAg
ICAgICAgICBHVEVTVF9OT05GQVRBTF9GQUlMVVJFXykKKyNkZWZpbmUgRVhQRUNUX0ZBTFNFKGNv
bmRpdGlvbikgXAorICBHVEVTVF9URVNUX0JPT0xFQU5fKCEoY29uZGl0aW9uKSwgI2NvbmRpdGlv
biwgdHJ1ZSwgZmFsc2UsIFwKKyAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9OT05GQVRBTF9G
QUlMVVJFXykKKyNkZWZpbmUgQVNTRVJUX1RSVUUoY29uZGl0aW9uKSBcCisgIEdURVNUX1RFU1Rf
Qk9PTEVBTl8oKGNvbmRpdGlvbiksICNjb25kaXRpb24sIGZhbHNlLCB0cnVlLCBcCisgICAgICAg
ICAgICAgICAgICAgICAgR1RFU1RfRkFUQUxfRkFJTFVSRV8pCisjZGVmaW5lIEFTU0VSVF9GQUxT
RShjb25kaXRpb24pIFwKKyAgR1RFU1RfVEVTVF9CT09MRUFOXyghKGNvbmRpdGlvbiksICNjb25k
aXRpb24sIHRydWUsIGZhbHNlLCBcCisgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfRkFUQUxf
RkFJTFVSRV8pCisKKy8vIEluY2x1ZGVzIHRoZSBhdXRvLWdlbmVyYXRlZCBoZWFkZXIgdGhhdCBp
bXBsZW1lbnRzIGEgZmFtaWx5IG9mCisvLyBnZW5lcmljIHByZWRpY2F0ZSBhc3NlcnRpb24gbWFj
cm9zLgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0X3ByZWRfaW1wbC5oIgorCisvLyBNYWNyb3MgZm9y
IHRlc3RpbmcgZXF1YWxpdGllcyBhbmQgaW5lcXVhbGl0aWVzLgorLy8KKy8vICAgICoge0FTU0VS
VHxFWFBFQ1R9X0VRKHYxLCB2Mik6IFRlc3RzIHRoYXQgdjEgPT0gdjIKKy8vICAgICoge0FTU0VS
VHxFWFBFQ1R9X05FKHYxLCB2Mik6IFRlc3RzIHRoYXQgdjEgIT0gdjIKKy8vICAgICoge0FTU0VS
VHxFWFBFQ1R9X0xUKHYxLCB2Mik6IFRlc3RzIHRoYXQgdjEgPCB2MgorLy8gICAgKiB7QVNTRVJU
fEVYUEVDVH1fTEUodjEsIHYyKTogVGVzdHMgdGhhdCB2MSA8PSB2MgorLy8gICAgKiB7QVNTRVJU
fEVYUEVDVH1fR1QodjEsIHYyKTogVGVzdHMgdGhhdCB2MSA+IHYyCisvLyAgICAqIHtBU1NFUlR8
RVhQRUNUfV9HRSh2MSwgdjIpOiBUZXN0cyB0aGF0IHYxID49IHYyCisvLworLy8gV2hlbiB0aGV5
IGFyZSBub3QsIEdvb2dsZSBUZXN0IHByaW50cyBib3RoIHRoZSB0ZXN0ZWQgZXhwcmVzc2lvbnMg
YW5kCisvLyB0aGVpciBhY3R1YWwgdmFsdWVzLiAgVGhlIHZhbHVlcyBtdXN0IGJlIGNvbXBhdGli
bGUgYnVpbHQtaW4gdHlwZXMsCisvLyBvciB5b3Ugd2lsbCBnZXQgYSBjb21waWxlciBlcnJvci4g
IEJ5ICJjb21wYXRpYmxlIiB3ZSBtZWFuIHRoYXQgdGhlCisvLyB2YWx1ZXMgY2FuIGJlIGNvbXBh
cmVkIGJ5IHRoZSByZXNwZWN0aXZlIG9wZXJhdG9yLgorLy8KKy8vIE5vdGU6CisvLworLy8gICAx
LiBJdCBpcyBwb3NzaWJsZSB0byBtYWtlIGEgdXNlci1kZWZpbmVkIHR5cGUgd29yayB3aXRoCisv
LyAgIHtBU1NFUlR8RVhQRUNUfV8/PygpLCBidXQgdGhhdCByZXF1aXJlcyBvdmVybG9hZGluZyB0
aGUKKy8vICAgY29tcGFyaXNvbiBvcGVyYXRvcnMgYW5kIGlzIHRodXMgZGlzY291cmFnZWQgYnkg
dGhlIEdvb2dsZSBDKysKKy8vICAgVXNhZ2UgR3VpZGUuICBUaGVyZWZvcmUsIHlvdSBhcmUgYWR2
aXNlZCB0byB1c2UgdGhlCisvLyAgIHtBU1NFUlR8RVhQRUNUfV9UUlVFKCkgbWFjcm8gdG8gYXNz
ZXJ0IHRoYXQgdHdvIG9iamVjdHMgYXJlCisvLyAgIGVxdWFsLgorLy8KKy8vICAgMi4gVGhlIHtB
U1NFUlR8RVhQRUNUfV8/PygpIG1hY3JvcyBkbyBwb2ludGVyIGNvbXBhcmlzb25zIG9uCisvLyAg
IHBvaW50ZXJzIChpbiBwYXJ0aWN1bGFyLCBDIHN0cmluZ3MpLiAgVGhlcmVmb3JlLCBpZiB5b3Ug
dXNlIGl0CisvLyAgIHdpdGggdHdvIEMgc3RyaW5ncywgeW91IGFyZSB0ZXN0aW5nIGhvdyB0aGVp
ciBsb2NhdGlvbnMgaW4gbWVtb3J5CisvLyAgIGFyZSByZWxhdGVkLCBub3QgaG93IHRoZWlyIGNv
bnRlbnQgaXMgcmVsYXRlZC4gIFRvIGNvbXBhcmUgdHdvIEMKKy8vICAgc3RyaW5ncyBieSBjb250
ZW50LCB1c2Uge0FTU0VSVHxFWFBFQ1R9X1NUUiooKS4KKy8vCisvLyAgIDMuIHtBU1NFUlR8RVhQ
RUNUfV9FUSh2MSwgdjIpIGlzIHByZWZlcnJlZCB0bworLy8gICB7QVNTRVJUfEVYUEVDVH1fVFJV
RSh2MSA9PSB2MiksIGFzIHRoZSBmb3JtZXIgdGVsbHMgeW91CisvLyAgIHdoYXQgdGhlIGFjdHVh
bCB2YWx1ZSBpcyB3aGVuIGl0IGZhaWxzLCBhbmQgc2ltaWxhcmx5IGZvciB0aGUKKy8vICAgb3Ro
ZXIgY29tcGFyaXNvbnMuCisvLworLy8gICA0LiBEbyBub3QgZGVwZW5kIG9uIHRoZSBvcmRlciBp
biB3aGljaCB7QVNTRVJUfEVYUEVDVH1fPz8oKQorLy8gICBldmFsdWF0ZSB0aGVpciBhcmd1bWVu
dHMsIHdoaWNoIGlzIHVuZGVmaW5lZC4KKy8vCisvLyAgIDUuIFRoZXNlIG1hY3JvcyBldmFsdWF0
ZSB0aGVpciBhcmd1bWVudHMgZXhhY3RseSBvbmNlLgorLy8KKy8vIEV4YW1wbGVzOgorLy8KKy8v
ICAgRVhQRUNUX05FKDUsIEZvbygpKTsKKy8vICAgRVhQRUNUX0VRKE5VTEwsIGFfcG9pbnRlcik7
CisvLyAgIEFTU0VSVF9MVChpLCBhcnJheV9zaXplKTsKKy8vICAgQVNTRVJUX0dUKHJlY29yZHMu
c2l6ZSgpLCAwKSA8PCAiVGhlcmUgaXMgbm8gcmVjb3JkIGxlZnQuIjsKKworI2RlZmluZSBFWFBF
Q1RfRVEodmFsMSwgdmFsMikgXAorICBFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50
ZXJuYWw6OiBcCisgICAgICAgICAgICAgICAgICAgICAgRXFIZWxwZXI8R1RFU1RfSVNfTlVMTF9M
SVRFUkFMXyh2YWwxKT46OkNvbXBhcmUsIFwKKyAgICAgICAgICAgICAgICAgICAgICB2YWwxLCB2
YWwyKQorI2RlZmluZSBFWFBFQ1RfTkUodmFsMSwgdmFsMikgXAorICBFWFBFQ1RfUFJFRF9GT1JN
QVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlck5FLCB2YWwxLCB2YWwyKQorI2RlZmlu
ZSBFWFBFQ1RfTEUodmFsMSwgdmFsMikgXAorICBFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OkNtcEhlbHBlckxFLCB2YWwxLCB2YWwyKQorI2RlZmluZSBFWFBFQ1RfTFQo
dmFsMSwgdmFsMikgXAorICBFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6
OkNtcEhlbHBlckxULCB2YWwxLCB2YWwyKQorI2RlZmluZSBFWFBFQ1RfR0UodmFsMSwgdmFsMikg
XAorICBFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlckdF
LCB2YWwxLCB2YWwyKQorI2RlZmluZSBFWFBFQ1RfR1QodmFsMSwgdmFsMikgXAorICBFWFBFQ1Rf
UFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlckdULCB2YWwxLCB2YWwy
KQorCisjZGVmaW5lIEdURVNUX0FTU0VSVF9FUSh2YWwxLCB2YWwyKSBcCisgIEFTU0VSVF9QUkVE
X0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6IFwKKyAgICAgICAgICAgICAgICAgICAgICBF
cUhlbHBlcjxHVEVTVF9JU19OVUxMX0xJVEVSQUxfKHZhbDEpPjo6Q29tcGFyZSwgXAorICAgICAg
ICAgICAgICAgICAgICAgIHZhbDEsIHZhbDIpCisjZGVmaW5lIEdURVNUX0FTU0VSVF9ORSh2YWwx
LCB2YWwyKSBcCisgIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21w
SGVscGVyTkUsIHZhbDEsIHZhbDIpCisjZGVmaW5lIEdURVNUX0FTU0VSVF9MRSh2YWwxLCB2YWwy
KSBcCisgIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVy
TEUsIHZhbDEsIHZhbDIpCisjZGVmaW5lIEdURVNUX0FTU0VSVF9MVCh2YWwxLCB2YWwyKSBcCisg
IEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyTFQsIHZh
bDEsIHZhbDIpCisjZGVmaW5lIEdURVNUX0FTU0VSVF9HRSh2YWwxLCB2YWwyKSBcCisgIEFTU0VS
VF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyR0UsIHZhbDEsIHZh
bDIpCisjZGVmaW5lIEdURVNUX0FTU0VSVF9HVCh2YWwxLCB2YWwyKSBcCisgIEFTU0VSVF9QUkVE
X0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyR1QsIHZhbDEsIHZhbDIpCisK
Ky8vIERlZmluZSBtYWNybyBHVEVTVF9ET05UX0RFRklORV9BU1NFUlRfWFkgdG8gMSB0byBvbWl0
IHRoZSBkZWZpbml0aW9uIG9mCisvLyBBU1NFUlRfWFkoKSwgd2hpY2ggY2xhc2hlcyB3aXRoIHNv
bWUgdXNlcnMnIG93biBjb2RlLgorCisjaWYgIUdURVNUX0RPTlRfREVGSU5FX0FTU0VSVF9FUQor
IyBkZWZpbmUgQVNTRVJUX0VRKHZhbDEsIHZhbDIpIEdURVNUX0FTU0VSVF9FUSh2YWwxLCB2YWwy
KQorI2VuZGlmCisKKyNpZiAhR1RFU1RfRE9OVF9ERUZJTkVfQVNTRVJUX05FCisjIGRlZmluZSBB
U1NFUlRfTkUodmFsMSwgdmFsMikgR1RFU1RfQVNTRVJUX05FKHZhbDEsIHZhbDIpCisjZW5kaWYK
KworI2lmICFHVEVTVF9ET05UX0RFRklORV9BU1NFUlRfTEUKKyMgZGVmaW5lIEFTU0VSVF9MRSh2
YWwxLCB2YWwyKSBHVEVTVF9BU1NFUlRfTEUodmFsMSwgdmFsMikKKyNlbmRpZgorCisjaWYgIUdU
RVNUX0RPTlRfREVGSU5FX0FTU0VSVF9MVAorIyBkZWZpbmUgQVNTRVJUX0xUKHZhbDEsIHZhbDIp
IEdURVNUX0FTU0VSVF9MVCh2YWwxLCB2YWwyKQorI2VuZGlmCisKKyNpZiAhR1RFU1RfRE9OVF9E
RUZJTkVfQVNTRVJUX0dFCisjIGRlZmluZSBBU1NFUlRfR0UodmFsMSwgdmFsMikgR1RFU1RfQVNT
RVJUX0dFKHZhbDEsIHZhbDIpCisjZW5kaWYKKworI2lmICFHVEVTVF9ET05UX0RFRklORV9BU1NF
UlRfR1QKKyMgZGVmaW5lIEFTU0VSVF9HVCh2YWwxLCB2YWwyKSBHVEVTVF9BU1NFUlRfR1QodmFs
MSwgdmFsMikKKyNlbmRpZgorCisvLyBDLXN0cmluZyBDb21wYXJpc29ucy4gIEFsbCB0ZXN0cyB0
cmVhdCBOVUxMIGFuZCBhbnkgbm9uLU5VTEwgc3RyaW5nCisvLyBhcyBkaWZmZXJlbnQuICBUd28g
TlVMTHMgYXJlIGVxdWFsLgorLy8KKy8vICAgICoge0FTU0VSVHxFWFBFQ1R9X1NUUkVRKHMxLCBz
Mik6ICAgICBUZXN0cyB0aGF0IHMxID09IHMyCisvLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9TVFJO
RShzMSwgczIpOiAgICAgVGVzdHMgdGhhdCBzMSAhPSBzMgorLy8gICAgKiB7QVNTRVJUfEVYUEVD
VH1fU1RSQ0FTRUVRKHMxLCBzMik6IFRlc3RzIHRoYXQgczEgPT0gczIsIGlnbm9yaW5nIGNhc2UK
Ky8vICAgICoge0FTU0VSVHxFWFBFQ1R9X1NUUkNBU0VORShzMSwgczIpOiBUZXN0cyB0aGF0IHMx
ICE9IHMyLCBpZ25vcmluZyBjYXNlCisvLworLy8gRm9yIHdpZGUgb3IgbmFycm93IHN0cmluZyBv
YmplY3RzLCB5b3UgY2FuIHVzZSB0aGUKKy8vIHtBU1NFUlR8RVhQRUNUfV8/PygpIG1hY3Jvcy4K
Ky8vCisvLyBEb24ndCBkZXBlbmQgb24gdGhlIG9yZGVyIGluIHdoaWNoIHRoZSBhcmd1bWVudHMg
YXJlIGV2YWx1YXRlZCwKKy8vIHdoaWNoIGlzIHVuZGVmaW5lZC4KKy8vCisvLyBUaGVzZSBtYWNy
b3MgZXZhbHVhdGUgdGhlaXIgYXJndW1lbnRzIGV4YWN0bHkgb25jZS4KKworI2RlZmluZSBFWFBF
Q1RfU1RSRVEoczEsIHMyKSBcCisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRl
cm5hbDo6Q21wSGVscGVyU1RSRVEsIHMxLCBzMikKKyNkZWZpbmUgRVhQRUNUX1NUUk5FKHMxLCBz
MikgXAorICBFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBl
clNUUk5FLCBzMSwgczIpCisjZGVmaW5lIEVYUEVDVF9TVFJDQVNFRVEoczEsIHMyKSBcCisgIEVY
UEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyU1RSQ0FTRUVR
LCBzMSwgczIpCisjZGVmaW5lIEVYUEVDVF9TVFJDQVNFTkUoczEsIHMyKVwKKyAgRVhQRUNUX1BS
RURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJTVFJDQVNFTkUsIHMxLCBz
MikKKworI2RlZmluZSBBU1NFUlRfU1RSRVEoczEsIHMyKSBcCisgIEFTU0VSVF9QUkVEX0ZPUk1B
VDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyU1RSRVEsIHMxLCBzMikKKyNkZWZpbmUg
QVNTRVJUX1NUUk5FKHMxLCBzMikgXAorICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6
aW50ZXJuYWw6OkNtcEhlbHBlclNUUk5FLCBzMSwgczIpCisjZGVmaW5lIEFTU0VSVF9TVFJDQVNF
RVEoczEsIHMyKSBcCisgIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6
Q21wSGVscGVyU1RSQ0FTRUVRLCBzMSwgczIpCisjZGVmaW5lIEFTU0VSVF9TVFJDQVNFTkUoczEs
IHMyKVwKKyAgQVNTRVJUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxw
ZXJTVFJDQVNFTkUsIHMxLCBzMikKKworLy8gTWFjcm9zIGZvciBjb21wYXJpbmcgZmxvYXRpbmct
cG9pbnQgbnVtYmVycy4KKy8vCisvLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9GTE9BVF9FUSh2YWwx
LCB2YWwyKToKKy8vICAgICAgICAgVGVzdHMgdGhhdCB0d28gZmxvYXQgdmFsdWVzIGFyZSBhbG1v
c3QgZXF1YWwuCisvLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9ET1VCTEVfRVEodmFsMSwgdmFsMik6
CisvLyAgICAgICAgIFRlc3RzIHRoYXQgdHdvIGRvdWJsZSB2YWx1ZXMgYXJlIGFsbW9zdCBlcXVh
bC4KKy8vICAgICoge0FTU0VSVHxFWFBFQ1R9X05FQVIodjEsIHYyLCBhYnNfZXJyb3IpOgorLy8g
ICAgICAgICBUZXN0cyB0aGF0IHYxIGFuZCB2MiBhcmUgd2l0aGluIHRoZSBnaXZlbiBkaXN0YW5j
ZSB0byBlYWNoIG90aGVyLgorLy8KKy8vIEdvb2dsZSBUZXN0IHVzZXMgVUxQLWJhc2VkIGNvbXBh
cmlzb24gdG8gYXV0b21hdGljYWxseSBwaWNrIGEgZGVmYXVsdAorLy8gZXJyb3IgYm91bmQgdGhh
dCBpcyBhcHByb3ByaWF0ZSBmb3IgdGhlIG9wZXJhbmRzLiAgU2VlIHRoZQorLy8gRmxvYXRpbmdQ
b2ludCB0ZW1wbGF0ZSBjbGFzcyBpbiBndGVzdC1pbnRlcm5hbC5oIGlmIHlvdSBhcmUKKy8vIGlu
dGVyZXN0ZWQgaW4gdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuCisKKyNkZWZpbmUgRVhQRUNU
X0ZMT0FUX0VRKHZhbDEsIHZhbDIpXAorICBFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6
aW50ZXJuYWw6OkNtcEhlbHBlckZsb2F0aW5nUG9pbnRFUTxmbG9hdD4sIFwKKyAgICAgICAgICAg
ICAgICAgICAgICB2YWwxLCB2YWwyKQorCisjZGVmaW5lIEVYUEVDVF9ET1VCTEVfRVEodmFsMSwg
dmFsMilcCisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVs
cGVyRmxvYXRpbmdQb2ludEVRPGRvdWJsZT4sIFwKKyAgICAgICAgICAgICAgICAgICAgICB2YWwx
LCB2YWwyKQorCisjZGVmaW5lIEFTU0VSVF9GTE9BVF9FUSh2YWwxLCB2YWwyKVwKKyAgQVNTRVJU
X1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJGbG9hdGluZ1BvaW50
RVE8ZmxvYXQ+LCBcCisgICAgICAgICAgICAgICAgICAgICAgdmFsMSwgdmFsMikKKworI2RlZmlu
ZSBBU1NFUlRfRE9VQkxFX0VRKHZhbDEsIHZhbDIpXAorICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6
dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlckZsb2F0aW5nUG9pbnRFUTxkb3VibGU+LCBcCisg
ICAgICAgICAgICAgICAgICAgICAgdmFsMSwgdmFsMikKKworI2RlZmluZSBFWFBFQ1RfTkVBUih2
YWwxLCB2YWwyLCBhYnNfZXJyb3IpXAorICBFWFBFQ1RfUFJFRF9GT1JNQVQzKDo6dGVzdGluZzo6
aW50ZXJuYWw6OkRvdWJsZU5lYXJQcmVkRm9ybWF0LCBcCisgICAgICAgICAgICAgICAgICAgICAg
dmFsMSwgdmFsMiwgYWJzX2Vycm9yKQorCisjZGVmaW5lIEFTU0VSVF9ORUFSKHZhbDEsIHZhbDIs
IGFic19lcnJvcilcCisgIEFTU0VSVF9QUkVEX0ZPUk1BVDMoOjp0ZXN0aW5nOjppbnRlcm5hbDo6
RG91YmxlTmVhclByZWRGb3JtYXQsIFwKKyAgICAgICAgICAgICAgICAgICAgICB2YWwxLCB2YWwy
LCBhYnNfZXJyb3IpCisKKy8vIFRoZXNlIHByZWRpY2F0ZSBmb3JtYXQgZnVuY3Rpb25zIHdvcmsg
b24gZmxvYXRpbmctcG9pbnQgdmFsdWVzLCBhbmQKKy8vIGNhbiBiZSB1c2VkIGluIHtBU1NFUlR8
RVhQRUNUfV9QUkVEX0ZPUk1BVDIqKCksIGUuZy4KKy8vCisvLyAgIEVYUEVDVF9QUkVEX0ZPUk1B
VDIodGVzdGluZzo6RG91YmxlTEUsIEZvbygpLCA1LjApOworCisvLyBBc3NlcnRzIHRoYXQgdmFs
MSBpcyBsZXNzIHRoYW4sIG9yIGFsbW9zdCBlcXVhbCB0bywgdmFsMi4gIEZhaWxzCisvLyBvdGhl
cndpc2UuICBJbiBwYXJ0aWN1bGFyLCBpdCBmYWlscyBpZiBlaXRoZXIgdmFsMSBvciB2YWwyIGlz
IE5hTi4KK0dURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IEZsb2F0TEUoY29uc3QgY2hhciogZXhw
cjEsIGNvbnN0IGNoYXIqIGV4cHIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmbG9hdCB2YWwxLCBmbG9hdCB2YWwyKTsKK0dURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IERv
dWJsZUxFKGNvbnN0IGNoYXIqIGV4cHIxLCBjb25zdCBjaGFyKiBleHByMiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSB2YWwxLCBkb3VibGUgdmFsMik7CisKKwor
I2lmIEdURVNUX09TX1dJTkRPV1MKKworLy8gTWFjcm9zIHRoYXQgdGVzdCBmb3IgSFJFU1VMVCBm
YWlsdXJlIGFuZCBzdWNjZXNzLCB0aGVzZSBhcmUgb25seSB1c2VmdWwKKy8vIG9uIFdpbmRvd3Ms
IGFuZCByZWx5IG9uIFdpbmRvd3MgU0RLIG1hY3JvcyBhbmQgQVBJcyB0byBjb21waWxlLgorLy8K
Ky8vICAgICoge0FTU0VSVHxFWFBFQ1R9X0hSRVNVTFRfe1NVQ0NFRURFRHxGQUlMRUR9KGV4cHIp
CisvLworLy8gV2hlbiBleHByIHVuZXhwZWN0ZWRseSBmYWlscyBvciBzdWNjZWVkcywgR29vZ2xl
IFRlc3QgcHJpbnRzIHRoZQorLy8gZXhwZWN0ZWQgcmVzdWx0IGFuZCB0aGUgYWN0dWFsIHJlc3Vs
dCB3aXRoIGJvdGggYSBodW1hbi1yZWFkYWJsZQorLy8gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9m
IHRoZSBlcnJvciwgaWYgYXZhaWxhYmxlLCBhcyB3ZWxsIGFzIHRoZQorLy8gaGV4IHJlc3VsdCBj
b2RlLgorIyBkZWZpbmUgRVhQRUNUX0hSRVNVTFRfU1VDQ0VFREVEKGV4cHIpIFwKKyAgICBFWFBF
Q1RfUFJFRF9GT1JNQVQxKDo6dGVzdGluZzo6aW50ZXJuYWw6OklzSFJFU1VMVFN1Y2Nlc3MsIChl
eHByKSkKKworIyBkZWZpbmUgQVNTRVJUX0hSRVNVTFRfU1VDQ0VFREVEKGV4cHIpIFwKKyAgICBB
U1NFUlRfUFJFRF9GT1JNQVQxKDo6dGVzdGluZzo6aW50ZXJuYWw6OklzSFJFU1VMVFN1Y2Nlc3Ms
IChleHByKSkKKworIyBkZWZpbmUgRVhQRUNUX0hSRVNVTFRfRkFJTEVEKGV4cHIpIFwKKyAgICBF
WFBFQ1RfUFJFRF9GT1JNQVQxKDo6dGVzdGluZzo6aW50ZXJuYWw6OklzSFJFU1VMVEZhaWx1cmUs
IChleHByKSkKKworIyBkZWZpbmUgQVNTRVJUX0hSRVNVTFRfRkFJTEVEKGV4cHIpIFwKKyAgICBB
U1NFUlRfUFJFRF9GT1JNQVQxKDo6dGVzdGluZzo6aW50ZXJuYWw6OklzSFJFU1VMVEZhaWx1cmUs
IChleHByKSkKKworI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisKKy8vIE1hY3JvcyB0aGF0
IGV4ZWN1dGUgc3RhdGVtZW50IGFuZCBjaGVjayB0aGF0IGl0IGRvZXNuJ3QgZ2VuZXJhdGUgbmV3
IGZhdGFsCisvLyBmYWlsdXJlcyBpbiB0aGUgY3VycmVudCB0aHJlYWQuCisvLworLy8gICAqIHtB
U1NFUlR8RVhQRUNUfV9OT19GQVRBTF9GQUlMVVJFKHN0YXRlbWVudCk7CisvLworLy8gRXhhbXBs
ZXM6CisvLworLy8gICBFWFBFQ1RfTk9fRkFUQUxfRkFJTFVSRShQcm9jZXNzKCkpOworLy8gICBB
U1NFUlRfTk9fRkFUQUxfRkFJTFVSRShQcm9jZXNzKCkpIDw8ICJQcm9jZXNzKCkgZmFpbGVkIjsK
Ky8vCisjZGVmaW5lIEFTU0VSVF9OT19GQVRBTF9GQUlMVVJFKHN0YXRlbWVudCkgXAorICAgIEdU
RVNUX1RFU1RfTk9fRkFUQUxfRkFJTFVSRV8oc3RhdGVtZW50LCBHVEVTVF9GQVRBTF9GQUlMVVJF
XykKKyNkZWZpbmUgRVhQRUNUX05PX0ZBVEFMX0ZBSUxVUkUoc3RhdGVtZW50KSBcCisgICAgR1RF
U1RfVEVTVF9OT19GQVRBTF9GQUlMVVJFXyhzdGF0ZW1lbnQsIEdURVNUX05PTkZBVEFMX0ZBSUxV
UkVfKQorCisvLyBDYXVzZXMgYSB0cmFjZSAoaW5jbHVkaW5nIHRoZSBzb3VyY2UgZmlsZSBwYXRo
LCB0aGUgY3VycmVudCBsaW5lCisvLyBudW1iZXIsIGFuZCB0aGUgZ2l2ZW4gbWVzc2FnZSkgdG8g
YmUgaW5jbHVkZWQgaW4gZXZlcnkgdGVzdCBmYWlsdXJlCisvLyBtZXNzYWdlIGdlbmVyYXRlZCBi
eSBjb2RlIGluIHRoZSBjdXJyZW50IHNjb3BlLiAgVGhlIGVmZmVjdCBpcworLy8gdW5kb25lIHdo
ZW4gdGhlIGNvbnRyb2wgbGVhdmVzIHRoZSBjdXJyZW50IHNjb3BlLgorLy8KKy8vIFRoZSBtZXNz
YWdlIGFyZ3VtZW50IGNhbiBiZSBhbnl0aGluZyBzdHJlYW1hYmxlIHRvIHN0ZDo6b3N0cmVhbS4K
Ky8vCisvLyBJbiB0aGUgaW1wbGVtZW50YXRpb24sIHdlIGluY2x1ZGUgdGhlIGN1cnJlbnQgbGlu
ZSBudW1iZXIgYXMgcGFydAorLy8gb2YgdGhlIGR1bW15IHZhcmlhYmxlIG5hbWUsIHRodXMgYWxs
b3dpbmcgbXVsdGlwbGUgU0NPUEVEX1RSQUNFKClzCisvLyB0byBhcHBlYXIgaW4gdGhlIHNhbWUg
YmxvY2sgLSBhcyBsb25nIGFzIHRoZXkgYXJlIG9uIGRpZmZlcmVudAorLy8gbGluZXMuCisjZGVm
aW5lIFNDT1BFRF9UUkFDRShtZXNzYWdlKSBcCisgIDo6dGVzdGluZzo6aW50ZXJuYWw6OlNjb3Bl
ZFRyYWNlIEdURVNUX0NPTkNBVF9UT0tFTl8oZ3Rlc3RfdHJhY2VfLCBfX0xJTkVfXykoXAorICAg
IF9fRklMRV9fLCBfX0xJTkVfXywgOjp0ZXN0aW5nOjpNZXNzYWdlKCkgPDwgKG1lc3NhZ2UpKQor
CisvLyBDb21waWxlLXRpbWUgYXNzZXJ0aW9uIGZvciB0eXBlIGVxdWFsaXR5LgorLy8gU3RhdGlj
QXNzZXJ0VHlwZUVxPHR5cGUxLCB0eXBlMj4oKSBjb21waWxlcyBpZmYgdHlwZTEgYW5kIHR5cGUy
IGFyZQorLy8gdGhlIHNhbWUgdHlwZS4gIFRoZSB2YWx1ZSBpdCByZXR1cm5zIGlzIG5vdCBpbnRl
cmVzdGluZy4KKy8vCisvLyBJbnN0ZWFkIG9mIG1ha2luZyBTdGF0aWNBc3NlcnRUeXBlRXEgYSBj
bGFzcyB0ZW1wbGF0ZSwgd2UgbWFrZSBpdCBhCisvLyBmdW5jdGlvbiB0ZW1wbGF0ZSB0aGF0IGlu
dm9rZXMgYSBoZWxwZXIgY2xhc3MgdGVtcGxhdGUuICBUaGlzCisvLyBwcmV2ZW50cyBhIHVzZXIg
ZnJvbSBtaXN1c2luZyBTdGF0aWNBc3NlcnRUeXBlRXE8VDEsIFQyPiBieQorLy8gZGVmaW5pbmcg
b2JqZWN0cyBvZiB0aGF0IHR5cGUuCisvLworLy8gQ0FWRUFUOgorLy8KKy8vIFdoZW4gdXNlZCBp
bnNpZGUgYSBtZXRob2Qgb2YgYSBjbGFzcyB0ZW1wbGF0ZSwKKy8vIFN0YXRpY0Fzc2VydFR5cGVF
cTxUMSwgVDI+KCkgaXMgZWZmZWN0aXZlIE9OTFkgSUYgdGhlIG1ldGhvZCBpcworLy8gaW5zdGFu
dGlhdGVkLiAgRm9yIGV4YW1wbGUsIGdpdmVuOgorLy8KKy8vICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IGNsYXNzIEZvbyB7CisvLyAgICBwdWJsaWM6CisvLyAgICAgdm9pZCBCYXIoKSB7IHRlc3Rp
bmc6OlN0YXRpY0Fzc2VydFR5cGVFcTxpbnQsIFQ+KCk7IH0KKy8vICAgfTsKKy8vCisvLyB0aGUg
Y29kZToKKy8vCisvLyAgIHZvaWQgVGVzdDEoKSB7IEZvbzxib29sPiBmb287IH0KKy8vCisvLyB3
aWxsIE5PVCBnZW5lcmF0ZSBhIGNvbXBpbGVyIGVycm9yLCBhcyBGb288Ym9vbD46OkJhcigpIGlz
IG5ldmVyCisvLyBhY3R1YWxseSBpbnN0YW50aWF0ZWQuICBJbnN0ZWFkLCB5b3UgbmVlZDoKKy8v
CisvLyAgIHZvaWQgVGVzdDIoKSB7IEZvbzxib29sPiBmb287IGZvby5CYXIoKTsgfQorLy8KKy8v
IHRvIGNhdXNlIGEgY29tcGlsZXIgZXJyb3IuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVu
YW1lIFQyPgorYm9vbCBTdGF0aWNBc3NlcnRUeXBlRXEoKSB7CisgICh2b2lkKWludGVybmFsOjpT
dGF0aWNBc3NlcnRUeXBlRXFIZWxwZXI8VDEsIFQyPigpOworICByZXR1cm4gdHJ1ZTsKK30KKwor
Ly8gRGVmaW5lcyBhIHRlc3QuCisvLworLy8gVGhlIGZpcnN0IHBhcmFtZXRlciBpcyB0aGUgbmFt
ZSBvZiB0aGUgdGVzdCBjYXNlLCBhbmQgdGhlIHNlY29uZAorLy8gcGFyYW1ldGVyIGlzIHRoZSBu
YW1lIG9mIHRoZSB0ZXN0IHdpdGhpbiB0aGUgdGVzdCBjYXNlLgorLy8KKy8vIFRoZSBjb252ZW50
aW9uIGlzIHRvIGVuZCB0aGUgdGVzdCBjYXNlIG5hbWUgd2l0aCAiVGVzdCIuICBGb3IKKy8vIGV4
YW1wbGUsIGEgdGVzdCBjYXNlIGZvciB0aGUgRm9vIGNsYXNzIGNhbiBiZSBuYW1lZCBGb29UZXN0
LgorLy8KKy8vIFRlc3QgY29kZSBzaG91bGQgYXBwZWFyIGJldHdlZW4gYnJhY2VzIGFmdGVyIGFu
IGludm9jYXRpb24gb2YKKy8vIHRoaXMgbWFjcm8uICBFeGFtcGxlOgorLy8KKy8vICAgVEVTVChG
b29UZXN0LCBJbml0aWFsaXplc0NvcnJlY3RseSkgeworLy8gICAgIEZvbyBmb287CisvLyAgICAg
RVhQRUNUX1RSVUUoZm9vLlN0YXR1c0lzT0soKSk7CisvLyAgIH0KKworLy8gTm90ZSB0aGF0IHdl
IGNhbGwgR2V0VGVzdFR5cGVJZCgpIGluc3RlYWQgb2YgR2V0VHlwZUlkPAorLy8gOjp0ZXN0aW5n
OjpUZXN0PigpIGhlcmUgdG8gZ2V0IHRoZSB0eXBlIElEIG9mIHRlc3Rpbmc6OlRlc3QuICBUaGlz
CisvLyBpcyB0byB3b3JrIGFyb3VuZCBhIHN1c3BlY3RlZCBsaW5rZXIgYnVnIHdoZW4gdXNpbmcg
R29vZ2xlIFRlc3QgYXMKKy8vIGEgZnJhbWV3b3JrIG9uIE1hYyBPUyBYLiAgVGhlIGJ1ZyBjYXVz
ZXMgR2V0VHlwZUlkPAorLy8gOjp0ZXN0aW5nOjpUZXN0PigpIHRvIHJldHVybiBkaWZmZXJlbnQg
dmFsdWVzIGRlcGVuZGluZyBvbiB3aGV0aGVyCisvLyB0aGUgY2FsbCBpcyBmcm9tIHRoZSBHb29n
bGUgVGVzdCBmcmFtZXdvcmsgaXRzZWxmIG9yIGZyb20gdXNlciB0ZXN0CisvLyBjb2RlLiAgR2V0
VGVzdFR5cGVJZCgpIGlzIGd1YXJhbnRlZWQgdG8gYWx3YXlzIHJldHVybiB0aGUgc2FtZQorLy8g
dmFsdWUsIGFzIGl0IGFsd2F5cyBjYWxscyBHZXRUeXBlSWQ8PigpIGZyb20gdGhlIEdvb2dsZSBU
ZXN0CisvLyBmcmFtZXdvcmsuCisjZGVmaW5lIEdURVNUX1RFU1QodGVzdF9jYXNlX25hbWUsIHRl
c3RfbmFtZSlcCisgIEdURVNUX1RFU1RfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUsIFwKKyAg
ICAgICAgICAgICAgOjp0ZXN0aW5nOjpUZXN0LCA6OnRlc3Rpbmc6OmludGVybmFsOjpHZXRUZXN0
VHlwZUlkKCkpCisKKy8vIERlZmluZSB0aGlzIG1hY3JvIHRvIDEgdG8gb21pdCB0aGUgZGVmaW5p
dGlvbiBvZiBURVNUKCksIHdoaWNoCisvLyBpcyBhIGdlbmVyaWMgbmFtZSBhbmQgY2xhc2hlcyB3
aXRoIHNvbWUgb3RoZXIgbGlicmFyaWVzLgorI2lmICFHVEVTVF9ET05UX0RFRklORV9URVNUCisj
IGRlZmluZSBURVNUKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIEdURVNUX1RFU1QodGVzdF9j
YXNlX25hbWUsIHRlc3RfbmFtZSkKKyNlbmRpZgorCisvLyBEZWZpbmVzIGEgdGVzdCB0aGF0IHVz
ZXMgYSB0ZXN0IGZpeHR1cmUuCisvLworLy8gVGhlIGZpcnN0IHBhcmFtZXRlciBpcyB0aGUgbmFt
ZSBvZiB0aGUgdGVzdCBmaXh0dXJlIGNsYXNzLCB3aGljaAorLy8gYWxzbyBkb3VibGVzIGFzIHRo
ZSB0ZXN0IGNhc2UgbmFtZS4gIFRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIHRoZQorLy8gbmFtZSBv
ZiB0aGUgdGVzdCB3aXRoaW4gdGhlIHRlc3QgY2FzZS4KKy8vCisvLyBBIHRlc3QgZml4dHVyZSBj
bGFzcyBtdXN0IGJlIGRlY2xhcmVkIGVhcmxpZXIuICBUaGUgdXNlciBzaG91bGQgcHV0CisvLyB0
aGUgdGVzdCBjb2RlIGJldHdlZW4gYnJhY2VzIGFmdGVyIHVzaW5nIHRoaXMgbWFjcm8uICBFeGFt
cGxlOgorLy8KKy8vICAgY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKKy8v
ICAgIHByb3RlY3RlZDoKKy8vICAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7IGJfLkFkZEVsZW1l
bnQoMyk7IH0KKy8vCisvLyAgICAgRm9vIGFfOworLy8gICAgIEZvbyBiXzsKKy8vICAgfTsKKy8v
CisvLyAgIFRFU1RfRihGb29UZXN0LCBJbml0aWFsaXplc0NvcnJlY3RseSkgeworLy8gICAgIEVY
UEVDVF9UUlVFKGFfLlN0YXR1c0lzT0soKSk7CisvLyAgIH0KKy8vCisvLyAgIFRFU1RfRihGb29U
ZXN0LCBSZXR1cm5zRWxlbWVudENvdW50Q29ycmVjdGx5KSB7CisvLyAgICAgRVhQRUNUX0VRKDAs
IGFfLnNpemUoKSk7CisvLyAgICAgRVhQRUNUX0VRKDEsIGJfLnNpemUoKSk7CisvLyAgIH0KKwor
I2RlZmluZSBURVNUX0YodGVzdF9maXh0dXJlLCB0ZXN0X25hbWUpXAorICBHVEVTVF9URVNUXyh0
ZXN0X2ZpeHR1cmUsIHRlc3RfbmFtZSwgdGVzdF9maXh0dXJlLCBcCisgICAgICAgICAgICAgIDo6
dGVzdGluZzo6aW50ZXJuYWw6OkdldFR5cGVJZDx0ZXN0X2ZpeHR1cmU+KCkpCisKKy8vIFJldHVy
bnMgYSBwYXRoIHRvIHRlbXBvcmFyeSBkaXJlY3RvcnkuCisvLyBUcmllcyB0byBkZXRlcm1pbmUg
YW4gYXBwcm9wcmlhdGUgZGlyZWN0b3J5IGZvciB0aGUgcGxhdGZvcm0uCitHVEVTVF9BUElfIHN0
ZDo6c3RyaW5nIFRlbXBEaXIoKTsKKworfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKKworLy8gVXNl
IHRoaXMgZnVuY3Rpb24gaW4gbWFpbigpIHRvIHJ1biBhbGwgdGVzdHMuICBJdCByZXR1cm5zIDAg
aWYgYWxsCisvLyB0ZXN0cyBhcmUgc3VjY2Vzc2Z1bCwgb3IgMSBvdGhlcndpc2UuCisvLworLy8g
UlVOX0FMTF9URVNUUygpIHNob3VsZCBiZSBpbnZva2VkIGFmdGVyIHRoZSBjb21tYW5kIGxpbmUg
aGFzIGJlZW4KKy8vIHBhcnNlZCBieSBJbml0R29vZ2xlVGVzdCgpLgorLy8KKy8vIFRoaXMgZnVu
Y3Rpb24gd2FzIGZvcm1lcmx5IGEgbWFjcm87IHRodXMsIGl0IGlzIGluIHRoZSBnbG9iYWwKKy8v
IG5hbWVzcGFjZSBhbmQgaGFzIGFuIGFsbC1jYXBzIG5hbWUuCitpbnQgUlVOX0FMTF9URVNUUygp
IEdURVNUX01VU1RfVVNFX1JFU1VMVF87CisKK2lubGluZSBpbnQgUlVOX0FMTF9URVNUUygpIHsK
KyAgcmV0dXJuIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPlJ1bigpOworfQor
CisjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJlZF9pbXBsLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9p
bmNsdWRlL2d0ZXN0L2d0ZXN0X3ByZWRfaW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwYWU3MTJmNTBlZDNk
OGU4NDQ2ZTQ0OTVhZjliMWFiZWNhYjJlODYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVz
dC9pbmNsdWRlL2d0ZXN0L2d0ZXN0X3ByZWRfaW1wbC5oCkBAIC0wLDAgKzEsMzU4IEBACisvLyBD
b3B5cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLwor
Ly8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3Ry
aWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8v
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKy8vIFRoaXMgZmlsZSBp
cyBBVVRPTUFUSUNBTExZIEdFTkVSQVRFRCBvbiAxMC8zMS8yMDExIGJ5IGNvbW1hbmQKKy8vICdn
ZW5fZ3Rlc3RfcHJlZF9pbXBsLnB5IDUnLiAgRE8gTk9UIEVESVQgQlkgSEFORCEKKy8vCisvLyBJ
bXBsZW1lbnRzIGEgZmFtaWx5IG9mIGdlbmVyaWMgcHJlZGljYXRlIGFzc2VydGlvbiBtYWNyb3Mu
CisKKyNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QUkVEX0lNUExfSF8KKyNkZWZp
bmUgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QUkVEX0lNUExfSF8KKworLy8gTWFrZXMgc3Vy
ZSB0aGlzIGhlYWRlciBpcyBub3QgaW5jbHVkZWQgYmVmb3JlIGd0ZXN0LmguCisjaWZuZGVmIEdU
RVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfSF8KKyMgZXJyb3IgRG8gbm90IGluY2x1ZGUgZ3Rlc3Rf
cHJlZF9pbXBsLmggZGlyZWN0bHkuICBJbmNsdWRlIGd0ZXN0LmggaW5zdGVhZC4KKyNlbmRpZiAg
Ly8gR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9IXworCisvLyBUaGlzIGhlYWRlciBpbXBsZW1l
bnRzIGEgZmFtaWx5IG9mIGdlbmVyaWMgcHJlZGljYXRlIGFzc2VydGlvbgorLy8gbWFjcm9zOgor
Ly8KKy8vICAgQVNTRVJUX1BSRURfRk9STUFUMShwcmVkX2Zvcm1hdCwgdjEpCisvLyAgIEFTU0VS
VF9QUkVEX0ZPUk1BVDIocHJlZF9mb3JtYXQsIHYxLCB2MikKKy8vICAgLi4uCisvLworLy8gd2hl
cmUgcHJlZF9mb3JtYXQgaXMgYSBmdW5jdGlvbiBvciBmdW5jdG9yIHRoYXQgdGFrZXMgbiAoaW4g
dGhlCisvLyBjYXNlIG9mIEFTU0VSVF9QUkVEX0ZPUk1BVG4pIHZhbHVlcyBhbmQgdGhlaXIgc291
cmNlIGV4cHJlc3Npb24KKy8vIHRleHQsIGFuZCByZXR1cm5zIGEgdGVzdGluZzo6QXNzZXJ0aW9u
UmVzdWx0LiAgU2VlIHRoZSBkZWZpbml0aW9uCisvLyBvZiBBU1NFUlRfRVEgaW4gZ3Rlc3QuaCBm
b3IgYW4gZXhhbXBsZS4KKy8vCisvLyBJZiB5b3UgZG9uJ3QgY2FyZSBhYm91dCBmb3JtYXR0aW5n
LCB5b3UgY2FuIHVzZSB0aGUgbW9yZQorLy8gcmVzdHJpY3RpdmUgdmVyc2lvbjoKKy8vCisvLyAg
IEFTU0VSVF9QUkVEMShwcmVkLCB2MSkKKy8vICAgQVNTRVJUX1BSRUQyKHByZWQsIHYxLCB2MikK
Ky8vICAgLi4uCisvLworLy8gd2hlcmUgcHJlZCBpcyBhbiBuLWFyeSBmdW5jdGlvbiBvciBmdW5j
dG9yIHRoYXQgcmV0dXJucyBib29sLAorLy8gYW5kIHRoZSB2YWx1ZXMgdjEsIHYyLCAuLi4sIG11
c3Qgc3VwcG9ydCB0aGUgPDwgb3BlcmF0b3IgZm9yCisvLyBzdHJlYW1pbmcgdG8gc3RkOjpvc3Ry
ZWFtLgorLy8KKy8vIFdlIGFsc28gZGVmaW5lIHRoZSBFWFBFQ1RfKiB2YXJpYXRpb25zLgorLy8K
Ky8vIEZvciBub3cgd2Ugb25seSBzdXBwb3J0IHByZWRpY2F0ZXMgd2hvc2UgYXJpdHkgaXMgYXQg
bW9zdCA1LgorLy8gUGxlYXNlIGVtYWlsIGdvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBz
LmNvbSBpZiB5b3UgbmVlZAorLy8gc3VwcG9ydCBmb3IgaGlnaGVyIGFyaXRpZXMuCisKKy8vIEdU
RVNUX0FTU0VSVF8gaXMgdGhlIGJhc2ljIHN0YXRlbWVudCB0byB3aGljaCBhbGwgb2YgdGhlIGFz
c2VydGlvbnMKKy8vIGluIHRoaXMgZmlsZSByZWR1Y2UuICBEb24ndCB1c2UgdGhpcyBpbiB5b3Vy
IGNvZGUuCisKKyNkZWZpbmUgR1RFU1RfQVNTRVJUXyhleHByZXNzaW9uLCBvbl9mYWlsdXJlKSBc
CisgIEdURVNUX0FNQklHVU9VU19FTFNFX0JMT0NLRVJfIFwKKyAgaWYgKGNvbnN0IDo6dGVzdGlu
Zzo6QXNzZXJ0aW9uUmVzdWx0IGd0ZXN0X2FyID0gKGV4cHJlc3Npb24pKSBcCisgICAgOyBcCisg
IGVsc2UgXAorICAgIG9uX2ZhaWx1cmUoZ3Rlc3RfYXIuZmFpbHVyZV9tZXNzYWdlKCkpCisKKwor
Ly8gSGVscGVyIGZ1bmN0aW9uIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRUQx
LiAgRG9uJ3QgdXNlCisvLyB0aGlzIGluIHlvdXIgY29kZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBQ
cmVkLAorICAgICAgICAgIHR5cGVuYW1lIFQxPgorQXNzZXJ0aW9uUmVzdWx0IEFzc2VydFByZWQx
SGVscGVyKGNvbnN0IGNoYXIqIHByZWRfdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBlMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQcmVkIHByZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEm
IHYxKSB7CisgIGlmIChwcmVkKHYxKSkgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKKworICBy
ZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IHByZWRfdGV4dCA8PCAiKCIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8PCBlMSA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTEgPDwgIiBldmFsdWF0ZXMg
dG8gIiA8PCB2MTsKK30KKworLy8gSW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQ
RUNUfEFTU0VSVH1fUFJFRF9GT1JNQVQxLgorLy8gRG9uJ3QgdXNlIHRoaXMgaW4geW91ciBjb2Rl
LgorI2RlZmluZSBHVEVTVF9QUkVEX0ZPUk1BVDFfKHByZWRfZm9ybWF0LCB2MSwgb25fZmFpbHVy
ZSlcCisgIEdURVNUX0FTU0VSVF8ocHJlZF9mb3JtYXQoI3YxLCB2MSksIFwKKyAgICAgICAgICAg
ICAgICBvbl9mYWlsdXJlKQorCisvLyBJbnRlcm5hbCBtYWNybyBmb3IgaW1wbGVtZW50aW5nIHtF
WFBFQ1R8QVNTRVJUfV9QUkVEMS4gIERvbid0IHVzZQorLy8gdGhpcyBpbiB5b3VyIGNvZGUuCisj
ZGVmaW5lIEdURVNUX1BSRUQxXyhwcmVkLCB2MSwgb25fZmFpbHVyZSlcCisgIEdURVNUX0FTU0VS
VF8oOjp0ZXN0aW5nOjpBc3NlcnRQcmVkMUhlbHBlcigjcHJlZCwgXAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3YxLCBcCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVkLCBcCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2MSksIG9uX2ZhaWx1cmUpCisKKy8vIFVuYXJ5IHByZWRp
Y2F0ZSBhc3NlcnRpb24gbWFjcm9zLgorI2RlZmluZSBFWFBFQ1RfUFJFRF9GT1JNQVQxKHByZWRf
Zm9ybWF0LCB2MSkgXAorICBHVEVTVF9QUkVEX0ZPUk1BVDFfKHByZWRfZm9ybWF0LCB2MSwgR1RF
U1RfTk9ORkFUQUxfRkFJTFVSRV8pCisjZGVmaW5lIEVYUEVDVF9QUkVEMShwcmVkLCB2MSkgXAor
ICBHVEVTVF9QUkVEMV8ocHJlZCwgdjEsIEdURVNUX05PTkZBVEFMX0ZBSUxVUkVfKQorI2RlZmlu
ZSBBU1NFUlRfUFJFRF9GT1JNQVQxKHByZWRfZm9ybWF0LCB2MSkgXAorICBHVEVTVF9QUkVEX0ZP
Uk1BVDFfKHByZWRfZm9ybWF0LCB2MSwgR1RFU1RfRkFUQUxfRkFJTFVSRV8pCisjZGVmaW5lIEFT
U0VSVF9QUkVEMShwcmVkLCB2MSkgXAorICBHVEVTVF9QUkVEMV8ocHJlZCwgdjEsIEdURVNUX0ZB
VEFMX0ZBSUxVUkVfKQorCisKKworLy8gSGVscGVyIGZ1bmN0aW9uIGZvciBpbXBsZW1lbnRpbmcg
e0VYUEVDVHxBU1NFUlR9X1BSRUQyLiAgRG9uJ3QgdXNlCisvLyB0aGlzIGluIHlvdXIgY29kZS4K
K3RlbXBsYXRlIDx0eXBlbmFtZSBQcmVkLAorICAgICAgICAgIHR5cGVuYW1lIFQxLAorICAgICAg
ICAgIHR5cGVuYW1lIFQyPgorQXNzZXJ0aW9uUmVzdWx0IEFzc2VydFByZWQySGVscGVyKGNvbnN0
IGNoYXIqIHByZWRfdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBlMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVkIHByZWQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEmIHYxLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQyJiB2MikgeworICBpZiAocHJlZCh2MSwgdjIp
KSByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOworCisgIHJldHVybiBBc3NlcnRpb25GYWlsdXJl
KCkgPDwgcHJlZF90ZXh0IDw8ICIoIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGUx
IDw8ICIsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlMiA8PCAiKSBldmFsdWF0
ZXMgdG8gZmFsc2UsIHdoZXJlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIg
PDwgZTEgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDw8ICJcbiIgPDwgZTIgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MjsKK30KKworLy8gSW50
ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRF9GT1JNQVQy
LgorLy8gRG9uJ3QgdXNlIHRoaXMgaW4geW91ciBjb2RlLgorI2RlZmluZSBHVEVTVF9QUkVEX0ZP
Uk1BVDJfKHByZWRfZm9ybWF0LCB2MSwgdjIsIG9uX2ZhaWx1cmUpXAorICBHVEVTVF9BU1NFUlRf
KHByZWRfZm9ybWF0KCN2MSwgI3YyLCB2MSwgdjIpLCBcCisgICAgICAgICAgICAgICAgb25fZmFp
bHVyZSkKKworLy8gSW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VS
VH1fUFJFRDIuICBEb24ndCB1c2UKKy8vIHRoaXMgaW4geW91ciBjb2RlLgorI2RlZmluZSBHVEVT
VF9QUkVEMl8ocHJlZCwgdjEsIHYyLCBvbl9mYWlsdXJlKVwKKyAgR1RFU1RfQVNTRVJUXyg6OnRl
c3Rpbmc6OkFzc2VydFByZWQySGVscGVyKCNwcmVkLCBcCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjdjEsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICN2MiwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHJlZCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdjEsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHYyKSwgb25fZmFpbHVyZSkKKworLy8gQmluYXJ5IHByZWRpY2F0ZSBhc3NlcnRpb24g
bWFjcm9zLgorI2RlZmluZSBFWFBFQ1RfUFJFRF9GT1JNQVQyKHByZWRfZm9ybWF0LCB2MSwgdjIp
IFwKKyAgR1RFU1RfUFJFRF9GT1JNQVQyXyhwcmVkX2Zvcm1hdCwgdjEsIHYyLCBHVEVTVF9OT05G
QVRBTF9GQUlMVVJFXykKKyNkZWZpbmUgRVhQRUNUX1BSRUQyKHByZWQsIHYxLCB2MikgXAorICBH
VEVTVF9QUkVEMl8ocHJlZCwgdjEsIHYyLCBHVEVTVF9OT05GQVRBTF9GQUlMVVJFXykKKyNkZWZp
bmUgQVNTRVJUX1BSRURfRk9STUFUMihwcmVkX2Zvcm1hdCwgdjEsIHYyKSBcCisgIEdURVNUX1BS
RURfRk9STUFUMl8ocHJlZF9mb3JtYXQsIHYxLCB2MiwgR1RFU1RfRkFUQUxfRkFJTFVSRV8pCisj
ZGVmaW5lIEFTU0VSVF9QUkVEMihwcmVkLCB2MSwgdjIpIFwKKyAgR1RFU1RfUFJFRDJfKHByZWQs
IHYxLCB2MiwgR1RFU1RfRkFUQUxfRkFJTFVSRV8pCisKKworCisvLyBIZWxwZXIgZnVuY3Rpb24g
Zm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRDMuICBEb24ndCB1c2UKKy8vIHRo
aXMgaW4geW91ciBjb2RlLgordGVtcGxhdGUgPHR5cGVuYW1lIFByZWQsCisgICAgICAgICAgdHlw
ZW5hbWUgVDEsCisgICAgICAgICAgdHlwZW5hbWUgVDIsCisgICAgICAgICAgdHlwZW5hbWUgVDM+
CitBc3NlcnRpb25SZXN1bHQgQXNzZXJ0UHJlZDNIZWxwZXIoY29uc3QgY2hhciogcHJlZF90ZXh0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGUxLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGUyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGUzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFByZWQgcHJlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBUMSYgdjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVDImIHYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQz
JiB2MykgeworICBpZiAocHJlZCh2MSwgdjIsIHYzKSkgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3Mo
KTsKKworICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IHByZWRfdGV4dCA8PCAiKCIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlMSA8PCAiLCAiCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPDwgZTIgPDwgIiwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8
IGUzIDw8ICIpIGV2YWx1YXRlcyB0byBmYWxzZSwgd2hlcmUiCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPDwgIlxuIiA8PCBlMSA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYxCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPDwgIlxuIiA8PCBlMiA8PCAiIGV2YWx1YXRlcyB0byAiIDw8
IHYyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIlxuIiA8PCBlMyA8PCAiIGV2YWx1
YXRlcyB0byAiIDw8IHYzOworfQorCisvLyBJbnRlcm5hbCBtYWNybyBmb3IgaW1wbGVtZW50aW5n
IHtFWFBFQ1R8QVNTRVJUfV9QUkVEX0ZPUk1BVDMuCisvLyBEb24ndCB1c2UgdGhpcyBpbiB5b3Vy
IGNvZGUuCisjZGVmaW5lIEdURVNUX1BSRURfRk9STUFUM18ocHJlZF9mb3JtYXQsIHYxLCB2Miwg
djMsIG9uX2ZhaWx1cmUpXAorICBHVEVTVF9BU1NFUlRfKHByZWRfZm9ybWF0KCN2MSwgI3YyLCAj
djMsIHYxLCB2MiwgdjMpLCBcCisgICAgICAgICAgICAgICAgb25fZmFpbHVyZSkKKworLy8gSW50
ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRDMuICBEb24n
dCB1c2UKKy8vIHRoaXMgaW4geW91ciBjb2RlLgorI2RlZmluZSBHVEVTVF9QUkVEM18ocHJlZCwg
djEsIHYyLCB2Mywgb25fZmFpbHVyZSlcCisgIEdURVNUX0FTU0VSVF8oOjp0ZXN0aW5nOjpBc3Nl
cnRQcmVkM0hlbHBlcigjcHJlZCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgI3YxLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjdjIsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICN2MywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHJlZCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEs
IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYyLCBcCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MyksIG9uX2ZhaWx1
cmUpCisKKy8vIFRlcm5hcnkgcHJlZGljYXRlIGFzc2VydGlvbiBtYWNyb3MuCisjZGVmaW5lIEVY
UEVDVF9QUkVEX0ZPUk1BVDMocHJlZF9mb3JtYXQsIHYxLCB2MiwgdjMpIFwKKyAgR1RFU1RfUFJF
RF9GT1JNQVQzXyhwcmVkX2Zvcm1hdCwgdjEsIHYyLCB2MywgR1RFU1RfTk9ORkFUQUxfRkFJTFVS
RV8pCisjZGVmaW5lIEVYUEVDVF9QUkVEMyhwcmVkLCB2MSwgdjIsIHYzKSBcCisgIEdURVNUX1BS
RUQzXyhwcmVkLCB2MSwgdjIsIHYzLCBHVEVTVF9OT05GQVRBTF9GQUlMVVJFXykKKyNkZWZpbmUg
QVNTRVJUX1BSRURfRk9STUFUMyhwcmVkX2Zvcm1hdCwgdjEsIHYyLCB2MykgXAorICBHVEVTVF9Q
UkVEX0ZPUk1BVDNfKHByZWRfZm9ybWF0LCB2MSwgdjIsIHYzLCBHVEVTVF9GQVRBTF9GQUlMVVJF
XykKKyNkZWZpbmUgQVNTRVJUX1BSRUQzKHByZWQsIHYxLCB2MiwgdjMpIFwKKyAgR1RFU1RfUFJF
RDNfKHByZWQsIHYxLCB2MiwgdjMsIEdURVNUX0ZBVEFMX0ZBSUxVUkVfKQorCisKKworLy8gSGVs
cGVyIGZ1bmN0aW9uIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRUQ0LiAgRG9u
J3QgdXNlCisvLyB0aGlzIGluIHlvdXIgY29kZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBQcmVkLAor
ICAgICAgICAgIHR5cGVuYW1lIFQxLAorICAgICAgICAgIHR5cGVuYW1lIFQyLAorICAgICAgICAg
IHR5cGVuYW1lIFQzLAorICAgICAgICAgIHR5cGVuYW1lIFQ0PgorQXNzZXJ0aW9uUmVzdWx0IEFz
c2VydFByZWQ0SGVscGVyKGNvbnN0IGNoYXIqIHByZWRfdGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBlMSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiBlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBlMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiBlNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVkIHBy
ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEmIHYxLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQyJiB2MiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMyYgdjMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVDQmIHY0KSB7CisgIGlmIChwcmVkKHYxLCB2MiwgdjMsIHY0
KSkgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKKworICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVy
ZSgpIDw8IHByZWRfdGV4dCA8PCAiKCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBl
MSA8PCAiLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZTIgPDwgIiwgIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGUzIDw8ICIsICIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8PCBlNCA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTEgPDwgIiBldmFsdWF0ZXMgdG8gIiA8
PCB2MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTIgPDwgIiBldmFs
dWF0ZXMgdG8gIiA8PCB2MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwg
ZTMgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDw8ICJcbiIgPDwgZTQgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2NDsKK30KKworLy8gSW50ZXJu
YWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRF9GT1JNQVQ0Lgor
Ly8gRG9uJ3QgdXNlIHRoaXMgaW4geW91ciBjb2RlLgorI2RlZmluZSBHVEVTVF9QUkVEX0ZPUk1B
VDRfKHByZWRfZm9ybWF0LCB2MSwgdjIsIHYzLCB2NCwgb25fZmFpbHVyZSlcCisgIEdURVNUX0FT
U0VSVF8ocHJlZF9mb3JtYXQoI3YxLCAjdjIsICN2MywgI3Y0LCB2MSwgdjIsIHYzLCB2NCksIFwK
KyAgICAgICAgICAgICAgICBvbl9mYWlsdXJlKQorCisvLyBJbnRlcm5hbCBtYWNybyBmb3IgaW1w
bGVtZW50aW5nIHtFWFBFQ1R8QVNTRVJUfV9QUkVENC4gIERvbid0IHVzZQorLy8gdGhpcyBpbiB5
b3VyIGNvZGUuCisjZGVmaW5lIEdURVNUX1BSRUQ0XyhwcmVkLCB2MSwgdjIsIHYzLCB2NCwgb25f
ZmFpbHVyZSlcCisgIEdURVNUX0FTU0VSVF8oOjp0ZXN0aW5nOjpBc3NlcnRQcmVkNEhlbHBlcigj
cHJlZCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3Yx
LCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdjIsIFwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN2MywgXAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3Y0LCBcCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVkLCBcCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MSwgXAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjIsIFwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHYzLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2NCksIG9uX2ZhaWx1cmUpCisKKy8vIDQtYXJ5IHByZWRpY2F0
ZSBhc3NlcnRpb24gbWFjcm9zLgorI2RlZmluZSBFWFBFQ1RfUFJFRF9GT1JNQVQ0KHByZWRfZm9y
bWF0LCB2MSwgdjIsIHYzLCB2NCkgXAorICBHVEVTVF9QUkVEX0ZPUk1BVDRfKHByZWRfZm9ybWF0
LCB2MSwgdjIsIHYzLCB2NCwgR1RFU1RfTk9ORkFUQUxfRkFJTFVSRV8pCisjZGVmaW5lIEVYUEVD
VF9QUkVENChwcmVkLCB2MSwgdjIsIHYzLCB2NCkgXAorICBHVEVTVF9QUkVENF8ocHJlZCwgdjEs
IHYyLCB2MywgdjQsIEdURVNUX05PTkZBVEFMX0ZBSUxVUkVfKQorI2RlZmluZSBBU1NFUlRfUFJF
RF9GT1JNQVQ0KHByZWRfZm9ybWF0LCB2MSwgdjIsIHYzLCB2NCkgXAorICBHVEVTVF9QUkVEX0ZP
Uk1BVDRfKHByZWRfZm9ybWF0LCB2MSwgdjIsIHYzLCB2NCwgR1RFU1RfRkFUQUxfRkFJTFVSRV8p
CisjZGVmaW5lIEFTU0VSVF9QUkVENChwcmVkLCB2MSwgdjIsIHYzLCB2NCkgXAorICBHVEVTVF9Q
UkVENF8ocHJlZCwgdjEsIHYyLCB2MywgdjQsIEdURVNUX0ZBVEFMX0ZBSUxVUkVfKQorCisKKwor
Ly8gSGVscGVyIGZ1bmN0aW9uIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRUQ1
LiAgRG9uJ3QgdXNlCisvLyB0aGlzIGluIHlvdXIgY29kZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBQ
cmVkLAorICAgICAgICAgIHR5cGVuYW1lIFQxLAorICAgICAgICAgIHR5cGVuYW1lIFQyLAorICAg
ICAgICAgIHR5cGVuYW1lIFQzLAorICAgICAgICAgIHR5cGVuYW1lIFQ0LAorICAgICAgICAgIHR5
cGVuYW1lIFQ1PgorQXNzZXJ0aW9uUmVzdWx0IEFzc2VydFByZWQ1SGVscGVyKGNvbnN0IGNoYXIq
IHByZWRfdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBlMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBlMiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBlMywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBlNCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBlNSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQcmVkIHByZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVDEmIHYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFQyJiB2MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMyYg
djMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDQmIHY0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQ1JiB2NSkgeworICBpZiAocHJl
ZCh2MSwgdjIsIHYzLCB2NCwgdjUpKSByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOworCisgIHJl
dHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwgcHJlZF90ZXh0IDw8ICIoIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDw8IGUxIDw8ICIsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8PCBlMiA8PCAiLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZTMgPDwgIiwg
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGU0IDw8ICIsICIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8PCBlNSA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTEgPDwgIiBldmFsdWF0ZXMg
dG8gIiA8PCB2MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTIgPDwg
IiBldmFsdWF0ZXMgdG8gIiA8PCB2MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJc
biIgPDwgZTMgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDw8ICJcbiIgPDwgZTQgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2NAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTUgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2
NTsKK30KKworLy8gSW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VS
VH1fUFJFRF9GT1JNQVQ1LgorLy8gRG9uJ3QgdXNlIHRoaXMgaW4geW91ciBjb2RlLgorI2RlZmlu
ZSBHVEVTVF9QUkVEX0ZPUk1BVDVfKHByZWRfZm9ybWF0LCB2MSwgdjIsIHYzLCB2NCwgdjUsIG9u
X2ZhaWx1cmUpXAorICBHVEVTVF9BU1NFUlRfKHByZWRfZm9ybWF0KCN2MSwgI3YyLCAjdjMsICN2
NCwgI3Y1LCB2MSwgdjIsIHYzLCB2NCwgdjUpLCBcCisgICAgICAgICAgICAgICAgb25fZmFpbHVy
ZSkKKworLy8gSW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1f
UFJFRDUuICBEb24ndCB1c2UKKy8vIHRoaXMgaW4geW91ciBjb2RlLgorI2RlZmluZSBHVEVTVF9Q
UkVENV8ocHJlZCwgdjEsIHYyLCB2MywgdjQsIHY1LCBvbl9mYWlsdXJlKVwKKyAgR1RFU1RfQVNT
RVJUXyg6OnRlc3Rpbmc6OkFzc2VydFByZWQ1SGVscGVyKCNwcmVkLCBcCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdjEsIFwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICN2MiwgXAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgI3YzLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjdjQsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICN2NSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHJlZCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdjEsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHYyLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
MywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjQsIFwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY1KSwgb25fZmFp
bHVyZSkKKworLy8gNS1hcnkgcHJlZGljYXRlIGFzc2VydGlvbiBtYWNyb3MuCisjZGVmaW5lIEVY
UEVDVF9QUkVEX0ZPUk1BVDUocHJlZF9mb3JtYXQsIHYxLCB2MiwgdjMsIHY0LCB2NSkgXAorICBH
VEVTVF9QUkVEX0ZPUk1BVDVfKHByZWRfZm9ybWF0LCB2MSwgdjIsIHYzLCB2NCwgdjUsIEdURVNU
X05PTkZBVEFMX0ZBSUxVUkVfKQorI2RlZmluZSBFWFBFQ1RfUFJFRDUocHJlZCwgdjEsIHYyLCB2
MywgdjQsIHY1KSBcCisgIEdURVNUX1BSRUQ1XyhwcmVkLCB2MSwgdjIsIHYzLCB2NCwgdjUsIEdU
RVNUX05PTkZBVEFMX0ZBSUxVUkVfKQorI2RlZmluZSBBU1NFUlRfUFJFRF9GT1JNQVQ1KHByZWRf
Zm9ybWF0LCB2MSwgdjIsIHYzLCB2NCwgdjUpIFwKKyAgR1RFU1RfUFJFRF9GT1JNQVQ1XyhwcmVk
X2Zvcm1hdCwgdjEsIHYyLCB2MywgdjQsIHY1LCBHVEVTVF9GQVRBTF9GQUlMVVJFXykKKyNkZWZp
bmUgQVNTRVJUX1BSRUQ1KHByZWQsIHYxLCB2MiwgdjMsIHY0LCB2NSkgXAorICBHVEVTVF9QUkVE
NV8ocHJlZCwgdjEsIHYyLCB2MywgdjQsIHY1LCBHVEVTVF9GQVRBTF9GQUlMVVJFXykKKworCisK
KyNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QUkVEX0lNUExfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJvZC5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRl
c3QvaW5jbHVkZS9ndGVzdC9ndGVzdF9wcm9kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGE4MGRkYzZjNzBlZTJk
Yzc3M2VkNjc2NWE0Zjg5ZGZhOGNiMzhlOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0
L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJvZC5oCkBAIC0wLDAgKzEsNTggQEAKKy8vIENvcHlyaWdo
dCAyMDA2LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8g
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9u
LgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8g
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
Ky8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBBdXRob3I6IHdhbkBnb29n
bGUuY29tIChaaGFueW9uZyBXYW4pCisvLworLy8gR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29y
ayBkZWZpbml0aW9ucyB1c2VmdWwgaW4gcHJvZHVjdGlvbiBjb2RlLgorCisjaWZuZGVmIEdURVNU
X0lOQ0xVREVfR1RFU1RfR1RFU1RfUFJPRF9IXworI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNU
X0dURVNUX1BST0RfSF8KKworLy8gV2hlbiB5b3UgbmVlZCB0byB0ZXN0IHRoZSBwcml2YXRlIG9y
IHByb3RlY3RlZCBtZW1iZXJzIG9mIGEgY2xhc3MsCisvLyB1c2UgdGhlIEZSSUVORF9URVNUIG1h
Y3JvIHRvIGRlY2xhcmUgeW91ciB0ZXN0cyBhcyBmcmllbmRzIG9mIHRoZQorLy8gY2xhc3MuICBG
b3IgZXhhbXBsZToKKy8vCisvLyBjbGFzcyBNeUNsYXNzIHsKKy8vICBwcml2YXRlOgorLy8gICB2
b2lkIE15TWV0aG9kKCk7CisvLyAgIEZSSUVORF9URVNUKE15Q2xhc3NUZXN0LCBNeU1ldGhvZCk7
CisvLyB9OworLy8KKy8vIGNsYXNzIE15Q2xhc3NUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qg
eworLy8gICAvLyAuLi4KKy8vIH07CisvLworLy8gVEVTVF9GKE15Q2xhc3NUZXN0LCBNeU1ldGhv
ZCkgeworLy8gICAvLyBDYW4gY2FsbCBNeUNsYXNzOjpNeU1ldGhvZCgpIGhlcmUuCisvLyB9CisK
KyNkZWZpbmUgRlJJRU5EX1RFU1QodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSlcCitmcmllbmQg
Y2xhc3MgdGVzdF9jYXNlX25hbWUjI18jI3Rlc3RfbmFtZSMjX1Rlc3QKKworI2VuZGlmICAvLyBH
VEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1BST0RfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0
L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LXBvcnQuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0
L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LXBvcnQuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
ODVmNWQ1ODQ3N2JlMjc5MDQyYWI0ZmZiMTU0ZmIwMTJiNTc1ZTdjCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QtcG9ydC5o
CkBAIC0wLDAgKzEsNzIgQEAKKy8vIENvcHlyaWdodCAyMDE1LCBHb29nbGUgSW5jLgorLy8gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8v
IG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8v
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisv
LyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKy8vCisvLyBJbmplY3Rpb24gcG9pbnQgZm9yIGN1c3RvbSB1c2VyIGNvbmZpZ3VyYXRp
b25zLgorLy8gVGhlIGZvbGxvd2luZyBtYWNyb3MgY2FuIGJlIGRlZmluZWQ6CisvLworLy8gICBG
bGFnIHJlbGF0ZWQgbWFjcm9zOgorLy8gICAgIEdURVNUX0ZMQUcoZmxhZ19uYW1lKQorLy8gICAg
IEdURVNUX1VTRV9PV05fRkxBR0ZJTEVfRkxBR18gIC0gRGVmaW5lIHRvIDAgd2hlbiB0aGUgc3lz
dGVtIHByb3ZpZGVzIGl0cworLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b3duIGZsYWdmaWxlIGZsYWcgcGFyc2luZy4KKy8vICAgICBHVEVTVF9ERUNMQVJFX2Jvb2xfKG5h
bWUpCisvLyAgICAgR1RFU1RfREVDTEFSRV9pbnQzMl8obmFtZSkKKy8vICAgICBHVEVTVF9ERUNM
QVJFX3N0cmluZ18obmFtZSkKKy8vICAgICBHVEVTVF9ERUZJTkVfYm9vbF8obmFtZSwgZGVmYXVs
dF92YWwsIGRvYykKKy8vICAgICBHVEVTVF9ERUZJTkVfaW50MzJfKG5hbWUsIGRlZmF1bHRfdmFs
LCBkb2MpCisvLyAgICAgR1RFU1RfREVGSU5FX3N0cmluZ18obmFtZSwgZGVmYXVsdF92YWwsIGRv
YykKKy8vCisvLyAgIFRlc3QgZmlsdGVyaW5nOgorLy8gICAgIEdURVNUX1RFU1RfRklMVEVSX0VO
Vl9WQVJfIC0gVGhlIG5hbWUgb2YgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgdGhhdAorLy8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbCBiZSB1c2VkIGlmIC0tR1RFU1RfRkxB
Ryh0ZXN0X2ZpbHRlcikKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIG5v
dCBwcm92aWRlZC4KKy8vCisvLyAgIExvZ2dpbmc6CisvLyAgICAgR1RFU1RfTE9HXyhzZXZlcml0
eSkKKy8vICAgICBHVEVTVF9DSEVDS18oY29uZGl0aW9uKQorLy8gICAgIEZ1bmN0aW9ucyBMb2dU
b1N0ZGVycigpIGFuZCBGbHVzaEluZm9Mb2coKSBoYXZlIHRvIGJlIHByb3ZpZGVkIHRvby4KKy8v
CisvLyAgIFRocmVhZGluZzoKKy8vICAgICBHVEVTVF9IQVNfTk9USUZJQ0FUSU9OXyAtIEVuYWJs
ZWQgaWYgTm90aWZpY2F0aW9uIGlzIGFscmVhZHkgcHJvdmlkZWQuCisvLyAgICAgR1RFU1RfSEFT
X01VVEVYX0FORF9USFJFQURfTE9DQUxfIC0gRW5hYmxlZCBpZiBNdXRleCBhbmQgVGhyZWFkTG9j
YWwgYXJlCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxyZWFk
eSBwcm92aWRlZC4KKy8vICAgICBNdXN0IGFsc28gcHJvdmlkZSBHVEVTVF9ERUNMQVJFX1NUQVRJ
Q19NVVRFWF8obXV0ZXgpIGFuZAorLy8gICAgIEdURVNUX0RFRklORV9TVEFUSUNfTVVURVhfKG11
dGV4KQorLy8KKy8vICAgICBHVEVTVF9FWENMVVNJVkVfTE9DS19SRVFVSVJFRF8obG9ja3MpCisv
LyAgICAgR1RFU1RfTE9DS19FWENMVURFRF8obG9ja3MpCisvLworLy8gICBFeHBvcnRpbmcgQVBJ
IHN5bWJvbHM6CisvLyAgICAgR1RFU1RfQVBJXyAtIFNwZWNpZmllciBmb3IgZXhwb3J0ZWQgc3lt
Ym9scy4KKy8vCisvLyAqKiBDdXN0b20gaW1wbGVtZW50YXRpb24gc3RhcnRzIGhlcmUgKioKKwor
I2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0NVU1RPTV9HVEVTVF9QT1JUX0hf
CisjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfQ1VTVE9NX0dURVNUX1BPUlRf
SF8KKworI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0NVU1RPTV9HVEVT
VF9QT1JUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFs
L2N1c3RvbS9ndGVzdC1wcmludGVycy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9pbnRl
cm5hbC9jdXN0b20vZ3Rlc3QtcHJpbnRlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MGMxZWEwNTBiNjFlOTNi
ZmNmMTQ2ZTYxMTFiZmE1MDMxNWM4MmVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
aW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QtcHJpbnRlcnMuaApAQCAtMCwwICsx
LDQyIEBACisvLyBDb3B5cmlnaHQgMjAxNSwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLwor
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisv
LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLwor
Ly8gVGhpcyBmaWxlIHByb3ZpZGVzIGFuIGluamVjdGlvbiBwb2ludCBmb3IgY3VzdG9tIHByaW50
ZXJzIGluIGEgbG9jYWwKKy8vIGluc3RhbGxhdGlvbiBvZiBnVGVzdC4KKy8vIEl0IHdpbGwgYmUg
aW5jbHVkZWQgZnJvbSBndGVzdC1wcmludGVycy5oIGFuZCB0aGUgb3ZlcnJpZGVzIGluIHRoaXMg
ZmlsZQorLy8gd2lsbCBiZSB2aXNpYmxlIHRvIGV2ZXJ5b25lLgorLy8gU2VlIGRvY3VtZW50YXRp
b24gYXQgZ3Rlc3QvZ3Rlc3QtcHJpbnRlcnMuaCBmb3IgZGV0YWlscyBvbiBob3cgdG8gZGVmaW5l
IGEKKy8vIGN1c3RvbSBwcmludGVyLgorLy8KKy8vICoqIEN1c3RvbSBpbXBsZW1lbnRhdGlvbiBz
dGFydHMgaGVyZSAqKgorCisjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfQ1VT
VE9NX0dURVNUX1BSSU5URVJTX0hfCisjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJO
QUxfQ1VTVE9NX0dURVNUX1BSSU5URVJTX0hfCisKKyNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9H
VEVTVF9JTlRFUk5BTF9DVVNUT01fR1RFU1RfUFJJTlRFUlNfSF8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVz
dC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3YTFj
MGI3ZDlhOTZlNzZiYjNmYzhmMGU1MTI4YTQ1NDViZjViNWEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC5oCkBAIC0wLDAg
KzEsNDUgQEAKKy8vIENvcHlyaWdodCAyMDE1LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8v
CisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8g
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8g
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
Ky8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKy8v
CisvLyBJbmplY3Rpb24gcG9pbnQgZm9yIGN1c3RvbSB1c2VyIGNvbmZpZ3VyYXRpb25zLgorLy8g
VGhlIGZvbGxvd2luZyBtYWNyb3MgY2FuIGJlIGRlZmluZWQ6CisvLworLy8gR1RFU1RfT1NfU1RB
Q0tfVFJBQ0VfR0VUVEVSXyAgLSBUaGUgbmFtZSBvZiBhbiBpbXBsZW1lbnRhdGlvbiBvZgorLy8g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZh
Y2UuCisvLworLy8gR1RFU1RfQ1VTVE9NX1RFTVBESVJfRlVOQ1RJT05fIC0gQW4gb3ZlcnJpZGUg
Zm9yIHRlc3Rpbmc6OlRlbXBEaXIoKS4KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNlZSB0ZXN0aW5nOjpUZW1wRGlyIGZvciBzZW1hbnRpY3MgYW5kCisvLyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaWduYXR1cmUuCisvLyAKKy8vICoqIEN1c3RvbSBpbXBs
ZW1lbnRhdGlvbiBzdGFydHMgaGVyZSAqKgorCisjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1Rf
SU5URVJOQUxfQ1VTVE9NX0dURVNUX0hfCisjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5U
RVJOQUxfQ1VTVE9NX0dURVNUX0hfCisKKyNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9J
TlRFUk5BTF9DVVNUT01fR1RFU1RfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUv
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZGVhdGgtdGVzdC1pbnRlcm5hbC5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
aW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1kZWF0aC10ZXN0LWludGVybmFsLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMmIzYTc4ZjViZjg2MzI4ZmMxYmY1OGYxNjgyYzllZTQ0YTUwNTdjMgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZGVhdGgt
dGVzdC1pbnRlcm5hbC5oCkBAIC0wLDAgKzEsMzE5IEBACisvLyBDb3B5cmlnaHQgMjAwNSwgR29v
Z2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8v
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8v
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gQXV0aG9yczogd2FuQGdvb2dsZS5jb20gKFpo
YW55b25nIFdhbiksIGVlZmFjbUBnbWFpbC5jb20gKFNlYW4gTWNhZmVlKQorLy8KKy8vIFRoZSBH
b29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKKy8vCisvLyBUaGlzIGhl
YWRlciBmaWxlIGRlZmluZXMgaW50ZXJuYWwgdXRpbGl0aWVzIG5lZWRlZCBmb3IgaW1wbGVtZW50
aW5nCisvLyBkZWF0aCB0ZXN0cy4gIFRoZXkgYXJlIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQg
bm90aWNlLgorCisjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfREVB
VEhfVEVTVF9JTlRFUk5BTF9IXworI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFM
X0dURVNUX0RFQVRIX1RFU1RfSU5URVJOQUxfSF8KKworI2luY2x1ZGUgImd0ZXN0L2ludGVybmFs
L2d0ZXN0LWludGVybmFsLmgiCisKKyNpbmNsdWRlIDxzdGRpby5oPgorCituYW1lc3BhY2UgdGVz
dGluZyB7CituYW1lc3BhY2UgaW50ZXJuYWwgeworCitHVEVTVF9ERUNMQVJFX3N0cmluZ18oaW50
ZXJuYWxfcnVuX2RlYXRoX3Rlc3QpOworCisvLyBOYW1lcyBvZiB0aGUgZmxhZ3MgKG5lZWRlZCBm
b3IgcGFyc2luZyBHb29nbGUgVGVzdCBmbGFncykuCitjb25zdCBjaGFyIGtEZWF0aFRlc3RTdHls
ZUZsYWdbXSA9ICJkZWF0aF90ZXN0X3N0eWxlIjsKK2NvbnN0IGNoYXIga0RlYXRoVGVzdFVzZUZv
cmtbXSA9ICJkZWF0aF90ZXN0X3VzZV9mb3JrIjsKK2NvbnN0IGNoYXIga0ludGVybmFsUnVuRGVh
dGhUZXN0RmxhZ1tdID0gImludGVybmFsX3J1bl9kZWF0aF90ZXN0IjsKKworI2lmIEdURVNUX0hB
U19ERUFUSF9URVNUCisKKy8vIERlYXRoVGVzdCBpcyBhIGNsYXNzIHRoYXQgaGlkZXMgbXVjaCBv
ZiB0aGUgY29tcGxleGl0eSBvZiB0aGUKKy8vIEdURVNUX0RFQVRIX1RFU1RfIG1hY3JvLiAgSXQg
aXMgYWJzdHJhY3Q7IGl0cyBzdGF0aWMgQ3JlYXRlIG1ldGhvZAorLy8gcmV0dXJucyBhIGNvbmNy
ZXRlIGNsYXNzIHRoYXQgZGVwZW5kcyBvbiB0aGUgcHJldmFpbGluZyBkZWF0aCB0ZXN0CisvLyBz
dHlsZSwgYXMgZGVmaW5lZCBieSB0aGUgLS1ndGVzdF9kZWF0aF90ZXN0X3N0eWxlIGFuZC9vcgor
Ly8gLS1ndGVzdF9pbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCBmbGFncy4KKworLy8gSW4gZGVzY3Jp
YmluZyB0aGUgcmVzdWx0cyBvZiBkZWF0aCB0ZXN0cywgdGhlc2UgdGVybXMgYXJlIHVzZWQgd2l0
aAorLy8gdGhlIGNvcnJlc3BvbmRpbmcgZGVmaW5pdGlvbnM6CisvLworLy8gZXhpdCBzdGF0dXM6
ICBUaGUgaW50ZWdlciBleGl0IGluZm9ybWF0aW9uIGluIHRoZSBmb3JtYXQgc3BlY2lmaWVkCisv
LyAgICAgICAgICAgICAgIGJ5IHdhaXQoMikKKy8vIGV4aXQgY29kZTogICAgVGhlIGludGVnZXIg
Y29kZSBwYXNzZWQgdG8gZXhpdCgzKSwgX2V4aXQoMiksIG9yCisvLyAgICAgICAgICAgICAgIHJl
dHVybmVkIGZyb20gbWFpbigpCitjbGFzcyBHVEVTVF9BUElfIERlYXRoVGVzdCB7CisgcHVibGlj
OgorICAvLyBDcmVhdGUgcmV0dXJucyBmYWxzZSBpZiB0aGVyZSB3YXMgYW4gZXJyb3IgZGV0ZXJt
aW5pbmcgdGhlCisgIC8vIGFwcHJvcHJpYXRlIGFjdGlvbiB0byB0YWtlIGZvciB0aGUgY3VycmVu
dCBkZWF0aCB0ZXN0OyBmb3IgZXhhbXBsZSwKKyAgLy8gaWYgdGhlIGd0ZXN0X2RlYXRoX3Rlc3Rf
c3R5bGUgZmxhZyBpcyBzZXQgdG8gYW4gaW52YWxpZCB2YWx1ZS4KKyAgLy8gVGhlIExhc3RNZXNz
YWdlIG1ldGhvZCB3aWxsIHJldHVybiBhIG1vcmUgZGV0YWlsZWQgbWVzc2FnZSBpbiB0aGF0Cisg
IC8vIGNhc2UuICBPdGhlcndpc2UsIHRoZSBEZWF0aFRlc3QgcG9pbnRlciBwb2ludGVkIHRvIGJ5
IHRoZSAidGVzdCIKKyAgLy8gYXJndW1lbnQgaXMgc2V0LiAgSWYgdGhlIGRlYXRoIHRlc3Qgc2hv
dWxkIGJlIHNraXBwZWQsIHRoZSBwb2ludGVyCisgIC8vIGlzIHNldCB0byBOVUxMOyBvdGhlcndp
c2UsIGl0IGlzIHNldCB0byB0aGUgYWRkcmVzcyBvZiBhIG5ldyBjb25jcmV0ZQorICAvLyBEZWF0
aFRlc3Qgb2JqZWN0IHRoYXQgY29udHJvbHMgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgY3VycmVudCB0
ZXN0LgorICBzdGF0aWMgYm9vbCBDcmVhdGUoY29uc3QgY2hhciogc3RhdGVtZW50LCBjb25zdCBS
RSogcmVnZXgsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGlu
ZSwgRGVhdGhUZXN0KiogdGVzdCk7CisgIERlYXRoVGVzdCgpOworICB2aXJ0dWFsIH5EZWF0aFRl
c3QoKSB7IH0KKworICAvLyBBIGhlbHBlciBjbGFzcyB0aGF0IGFib3J0cyBhIGRlYXRoIHRlc3Qg
d2hlbiBpdCdzIGRlbGV0ZWQuCisgIGNsYXNzIFJldHVyblNlbnRpbmVsIHsKKyAgIHB1YmxpYzoK
KyAgICBleHBsaWNpdCBSZXR1cm5TZW50aW5lbChEZWF0aFRlc3QqIHRlc3QpIDogdGVzdF8odGVz
dCkgeyB9CisgICAgflJldHVyblNlbnRpbmVsKCkgeyB0ZXN0Xy0+QWJvcnQoVEVTVF9FTkNPVU5U
RVJFRF9SRVRVUk5fU1RBVEVNRU5UKTsgfQorICAgcHJpdmF0ZToKKyAgICBEZWF0aFRlc3QqIGNv
bnN0IHRlc3RfOworICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oUmV0dXJuU2Vu
dGluZWwpOworICB9IEdURVNUX0FUVFJJQlVURV9VTlVTRURfOworCisgIC8vIEFuIGVudW1lcmF0
aW9uIG9mIHBvc3NpYmxlIHJvbGVzIHRoYXQgbWF5IGJlIHRha2VuIHdoZW4gYSBkZWF0aAorICAv
LyB0ZXN0IGlzIGVuY291bnRlcmVkLiAgRVhFQ1VURSBtZWFucyB0aGF0IHRoZSBkZWF0aCB0ZXN0
IGxvZ2ljIHNob3VsZAorICAvLyBiZSBleGVjdXRlZCBpbW1lZGlhdGVseS4gIE9WRVJTRUUgbWVh
bnMgdGhhdCB0aGUgcHJvZ3JhbSBzaG91bGQgcHJlcGFyZQorICAvLyB0aGUgYXBwcm9wcmlhdGUg
ZW52aXJvbm1lbnQgZm9yIGEgY2hpbGQgcHJvY2VzcyB0byBleGVjdXRlIHRoZSBkZWF0aAorICAv
LyB0ZXN0LCB0aGVuIHdhaXQgZm9yIGl0IHRvIGNvbXBsZXRlLgorICBlbnVtIFRlc3RSb2xlIHsg
T1ZFUlNFRV9URVNULCBFWEVDVVRFX1RFU1QgfTsKKworICAvLyBBbiBlbnVtZXJhdGlvbiBvZiB0
aGUgdGhyZWUgcmVhc29ucyB0aGF0IGEgdGVzdCBtaWdodCBiZSBhYm9ydGVkLgorICBlbnVtIEFi
b3J0UmVhc29uIHsKKyAgICBURVNUX0VOQ09VTlRFUkVEX1JFVFVSTl9TVEFURU1FTlQsCisgICAg
VEVTVF9USFJFV19FWENFUFRJT04sCisgICAgVEVTVF9ESURfTk9UX0RJRQorICB9OworCisgIC8v
IEFzc3VtZXMgb25lIG9mIHRoZSBhYm92ZSByb2xlcy4KKyAgdmlydHVhbCBUZXN0Um9sZSBBc3N1
bWVSb2xlKCkgPSAwOworCisgIC8vIFdhaXRzIGZvciB0aGUgZGVhdGggdGVzdCB0byBmaW5pc2gg
YW5kIHJldHVybnMgaXRzIHN0YXR1cy4KKyAgdmlydHVhbCBpbnQgV2FpdCgpID0gMDsKKworICAv
LyBSZXR1cm5zIHRydWUgaWYgdGhlIGRlYXRoIHRlc3QgcGFzc2VkOyB0aGF0IGlzLCB0aGUgdGVz
dCBwcm9jZXNzCisgIC8vIGV4aXRlZCBkdXJpbmcgdGhlIHRlc3QsIGl0cyBleGl0IHN0YXR1cyBt
YXRjaGVzIGEgdXNlci1zdXBwbGllZAorICAvLyBwcmVkaWNhdGUsIGFuZCBpdHMgc3RkZXJyIG91
dHB1dCBtYXRjaGVzIGEgdXNlci1zdXBwbGllZCByZWd1bGFyCisgIC8vIGV4cHJlc3Npb24uCisg
IC8vIFRoZSB1c2VyLXN1cHBsaWVkIHByZWRpY2F0ZSBtYXkgYmUgYSBtYWNybyBleHByZXNzaW9u
IHJhdGhlcgorICAvLyB0aGFuIGEgZnVuY3Rpb24gcG9pbnRlciBvciBmdW5jdG9yLCBvciBlbHNl
IFdhaXQgYW5kIFBhc3NlZCBjb3VsZAorICAvLyBiZSBjb21iaW5lZC4KKyAgdmlydHVhbCBib29s
IFBhc3NlZChib29sIGV4aXRfc3RhdHVzX29rKSA9IDA7CisKKyAgLy8gU2lnbmFscyB0aGF0IHRo
ZSBkZWF0aCB0ZXN0IGRpZCBub3QgZGllIGFzIGV4cGVjdGVkLgorICB2aXJ0dWFsIHZvaWQgQWJv
cnQoQWJvcnRSZWFzb24gcmVhc29uKSA9IDA7CisKKyAgLy8gUmV0dXJucyBhIGh1bWFuLXJlYWRh
YmxlIG91dGNvbWUgbWVzc2FnZSByZWdhcmRpbmcgdGhlIG91dGNvbWUgb2YKKyAgLy8gdGhlIGxh
c3QgZGVhdGggdGVzdC4KKyAgc3RhdGljIGNvbnN0IGNoYXIqIExhc3RNZXNzYWdlKCk7CisKKyAg
c3RhdGljIHZvaWQgc2V0X2xhc3RfZGVhdGhfdGVzdF9tZXNzYWdlKGNvbnN0IHN0ZDo6c3RyaW5n
JiBtZXNzYWdlKTsKKworIHByaXZhdGU6CisgIC8vIEEgc3RyaW5nIGNvbnRhaW5pbmcgYSBkZXNj
cmlwdGlvbiBvZiB0aGUgb3V0Y29tZSBvZiB0aGUgbGFzdCBkZWF0aCB0ZXN0LgorICBzdGF0aWMg
c3RkOjpzdHJpbmcgbGFzdF9kZWF0aF90ZXN0X21lc3NhZ2VfOworCisgIEdURVNUX0RJU0FMTE9X
X0NPUFlfQU5EX0FTU0lHTl8oRGVhdGhUZXN0KTsKK307CisKKy8vIEZhY3RvcnkgaW50ZXJmYWNl
IGZvciBkZWF0aCB0ZXN0cy4gIE1heSBiZSBtb2NrZWQgb3V0IGZvciB0ZXN0aW5nLgorY2xhc3Mg
RGVhdGhUZXN0RmFjdG9yeSB7CisgcHVibGljOgorICB2aXJ0dWFsIH5EZWF0aFRlc3RGYWN0b3J5
KCkgeyB9CisgIHZpcnR1YWwgYm9vbCBDcmVhdGUoY29uc3QgY2hhciogc3RhdGVtZW50LCBjb25z
dCBSRSogcmVnZXgsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZmlsZSwgaW50
IGxpbmUsIERlYXRoVGVzdCoqIHRlc3QpID0gMDsKK307CisKKy8vIEEgY29uY3JldGUgRGVhdGhU
ZXN0RmFjdG9yeSBpbXBsZW1lbnRhdGlvbiBmb3Igbm9ybWFsIHVzZS4KK2NsYXNzIERlZmF1bHRE
ZWF0aFRlc3RGYWN0b3J5IDogcHVibGljIERlYXRoVGVzdEZhY3RvcnkgeworIHB1YmxpYzoKKyAg
dmlydHVhbCBib29sIENyZWF0ZShjb25zdCBjaGFyKiBzdGF0ZW1lbnQsIGNvbnN0IFJFKiByZWdl
eCwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgRGVh
dGhUZXN0KiogdGVzdCk7Cit9OworCisvLyBSZXR1cm5zIHRydWUgaWYgZXhpdF9zdGF0dXMgZGVz
Y3JpYmVzIGEgcHJvY2VzcyB0aGF0IHdhcyB0ZXJtaW5hdGVkCisvLyBieSBhIHNpZ25hbCwgb3Ig
ZXhpdGVkIG5vcm1hbGx5IHdpdGggYSBub256ZXJvIGV4aXQgY29kZS4KK0dURVNUX0FQSV8gYm9v
bCBFeGl0ZWRVbnN1Y2Nlc3NmdWxseShpbnQgZXhpdF9zdGF0dXMpOworCisvLyBUcmFwcyBDKysg
ZXhjZXB0aW9ucyBlc2NhcGluZyBzdGF0ZW1lbnQgYW5kIHJlcG9ydHMgdGhlbSBhcyB0ZXN0Cisv
LyBmYWlsdXJlcy4gTm90ZSB0aGF0IHRyYXBwaW5nIFNFSCBleGNlcHRpb25zIGlzIG5vdCBpbXBs
ZW1lbnRlZCBoZXJlLgorIyBpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUworIyAgZGVmaW5lIEdURVNU
X0VYRUNVVEVfREVBVEhfVEVTVF9TVEFURU1FTlRfKHN0YXRlbWVudCwgZGVhdGhfdGVzdCkgXAor
ICB0cnkgeyBcCisgICAgR1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JF
TE9XXyhzdGF0ZW1lbnQpOyBcCisgIH0gY2F0Y2ggKGNvbnN0IDo6c3RkOjpleGNlcHRpb24mIGd0
ZXN0X2V4Y2VwdGlvbikgeyBcCisgICAgZnByaW50ZihcCisgICAgICAgIHN0ZGVyciwgXAorICAg
ICAgICAiXG4lczogQ2F1Z2h0IHN0ZDo6ZXhjZXB0aW9uLWRlcml2ZWQgZXhjZXB0aW9uIGVzY2Fw
aW5nIHRoZSAiIFwKKyAgICAgICAgImRlYXRoIHRlc3Qgc3RhdGVtZW50LiBFeGNlcHRpb24gbWVz
c2FnZTogJXNcbiIsIFwKKyAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6Rm9ybWF0RmlsZUxv
Y2F0aW9uKF9fRklMRV9fLCBfX0xJTkVfXykuY19zdHIoKSwgXAorICAgICAgICBndGVzdF9leGNl
cHRpb24ud2hhdCgpKTsgXAorICAgIGZmbHVzaChzdGRlcnIpOyBcCisgICAgZGVhdGhfdGVzdC0+
QWJvcnQoOjp0ZXN0aW5nOjppbnRlcm5hbDo6RGVhdGhUZXN0OjpURVNUX1RIUkVXX0VYQ0VQVElP
Tik7IFwKKyAgfSBjYXRjaCAoLi4uKSB7IFwKKyAgICBkZWF0aF90ZXN0LT5BYm9ydCg6OnRlc3Rp
bmc6OmludGVybmFsOjpEZWF0aFRlc3Q6OlRFU1RfVEhSRVdfRVhDRVBUSU9OKTsgXAorICB9CisK
KyMgZWxzZQorIyAgZGVmaW5lIEdURVNUX0VYRUNVVEVfREVBVEhfVEVTVF9TVEFURU1FTlRfKHN0
YXRlbWVudCwgZGVhdGhfdGVzdCkgXAorICBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJMRV9DT0RF
X1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVudCkKKworIyBlbmRpZgorCisvLyBUaGlzIG1hY3JvIGlz
IGZvciBpbXBsZW1lbnRpbmcgQVNTRVJUX0RFQVRIKiwgRVhQRUNUX0RFQVRIKiwKKy8vIEFTU0VS
VF9FWElUKiwgYW5kIEVYUEVDVF9FWElUKi4KKyMgZGVmaW5lIEdURVNUX0RFQVRIX1RFU1RfKHN0
YXRlbWVudCwgcHJlZGljYXRlLCByZWdleCwgZmFpbCkgXAorICBHVEVTVF9BTUJJR1VPVVNfRUxT
RV9CTE9DS0VSXyBcCisgIGlmICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNUcnVlKCkpIHsg
XAorICAgIGNvbnN0IDo6dGVzdGluZzo6aW50ZXJuYWw6OlJFJiBndGVzdF9yZWdleCA9IChyZWdl
eCk7IFwKKyAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpEZWF0aFRlc3QqIGd0ZXN0X2R0OyBcCisg
ICAgaWYgKCE6OnRlc3Rpbmc6OmludGVybmFsOjpEZWF0aFRlc3Q6OkNyZWF0ZSgjc3RhdGVtZW50
LCAmZ3Rlc3RfcmVnZXgsIFwKKyAgICAgICAgX19GSUxFX18sIF9fTElORV9fLCAmZ3Rlc3RfZHQp
KSB7IFwKKyAgICAgIGdvdG8gR1RFU1RfQ09OQ0FUX1RPS0VOXyhndGVzdF9sYWJlbF8sIF9fTElO
RV9fKTsgXAorICAgIH0gXAorICAgIGlmIChndGVzdF9kdCAhPSBOVUxMKSB7IFwKKyAgICAgIDo6
dGVzdGluZzo6aW50ZXJuYWw6OnNjb3BlZF9wdHI8IDo6dGVzdGluZzo6aW50ZXJuYWw6OkRlYXRo
VGVzdD4gXAorICAgICAgICAgIGd0ZXN0X2R0X3B0cihndGVzdF9kdCk7IFwKKyAgICAgIHN3aXRj
aCAoZ3Rlc3RfZHQtPkFzc3VtZVJvbGUoKSkgeyBcCisgICAgICAgIGNhc2UgOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6RGVhdGhUZXN0OjpPVkVSU0VFX1RFU1Q6IFwKKyAgICAgICAgICBpZiAoIWd0ZXN0
X2R0LT5QYXNzZWQocHJlZGljYXRlKGd0ZXN0X2R0LT5XYWl0KCkpKSkgeyBcCisgICAgICAgICAg
ICBnb3RvIEdURVNUX0NPTkNBVF9UT0tFTl8oZ3Rlc3RfbGFiZWxfLCBfX0xJTkVfXyk7IFwKKyAg
ICAgICAgICB9IFwKKyAgICAgICAgICBicmVhazsgXAorICAgICAgICBjYXNlIDo6dGVzdGluZzo6
aW50ZXJuYWw6OkRlYXRoVGVzdDo6RVhFQ1VURV9URVNUOiB7IFwKKyAgICAgICAgICA6OnRlc3Rp
bmc6OmludGVybmFsOjpEZWF0aFRlc3Q6OlJldHVyblNlbnRpbmVsIFwKKyAgICAgICAgICAgICAg
Z3Rlc3Rfc2VudGluZWwoZ3Rlc3RfZHQpOyBcCisgICAgICAgICAgR1RFU1RfRVhFQ1VURV9ERUFU
SF9URVNUX1NUQVRFTUVOVF8oc3RhdGVtZW50LCBndGVzdF9kdCk7IFwKKyAgICAgICAgICBndGVz
dF9kdC0+QWJvcnQoOjp0ZXN0aW5nOjppbnRlcm5hbDo6RGVhdGhUZXN0OjpURVNUX0RJRF9OT1Rf
RElFKTsgXAorICAgICAgICAgIGJyZWFrOyBcCisgICAgICAgIH0gXAorICAgICAgICBkZWZhdWx0
OiBcCisgICAgICAgICAgYnJlYWs7IFwKKyAgICAgIH0gXAorICAgIH0gXAorICB9IGVsc2UgXAor
ICAgIEdURVNUX0NPTkNBVF9UT0tFTl8oZ3Rlc3RfbGFiZWxfLCBfX0xJTkVfXyk6IFwKKyAgICAg
IGZhaWwoOjp0ZXN0aW5nOjppbnRlcm5hbDo6RGVhdGhUZXN0OjpMYXN0TWVzc2FnZSgpKQorLy8g
VGhlIHN5bWJvbCAiZmFpbCIgaGVyZSBleHBhbmRzIHRvIHNvbWV0aGluZyBpbnRvIHdoaWNoIGEg
bWVzc2FnZQorLy8gY2FuIGJlIHN0cmVhbWVkLgorCisvLyBUaGlzIG1hY3JvIGlzIGZvciBpbXBs
ZW1lbnRpbmcgQVNTRVJUL0VYUEVDVF9ERUJVR19ERUFUSCB3aGVuIGNvbXBpbGVkIGluCisvLyBO
REVCVUcgbW9kZS4gSW4gdGhpcyBjYXNlIHdlIG5lZWQgdGhlIHN0YXRlbWVudHMgdG8gYmUgZXhl
Y3V0ZWQsIHRoZSByZWdleCBpcworLy8gaWdub3JlZCwgYW5kIHRoZSBtYWNybyBtdXN0IGFjY2Vw
dCBhIHN0cmVhbWVkIG1lc3NhZ2UgZXZlbiB0aG91Z2ggdGhlIG1lc3NhZ2UKKy8vIGlzIG5ldmVy
IHByaW50ZWQuCisjIGRlZmluZSBHVEVTVF9FWEVDVVRFX1NUQVRFTUVOVF8oc3RhdGVtZW50LCBy
ZWdleCkgXAorICBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBcCisgIGlmICg6OnRlc3Rp
bmc6OmludGVybmFsOjpBbHdheXNUcnVlKCkpIHsgXAorICAgICBHVEVTVF9TVVBQUkVTU19VTlJF
QUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVudCk7IFwKKyAgfSBlbHNlIFwKKyAg
ICA6OnRlc3Rpbmc6Ok1lc3NhZ2UoKQorCisvLyBBIGNsYXNzIHJlcHJlc2VudGluZyB0aGUgcGFy
c2VkIGNvbnRlbnRzIG9mIHRoZQorLy8gLS1ndGVzdF9pbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCBm
bGFnLCBhcyBpdCBleGlzdGVkIHdoZW4KKy8vIFJVTl9BTExfVEVTVFMgd2FzIGNhbGxlZC4KK2Ns
YXNzIEludGVybmFsUnVuRGVhdGhUZXN0RmxhZyB7CisgcHVibGljOgorICBJbnRlcm5hbFJ1bkRl
YXRoVGVzdEZsYWcoY29uc3Qgc3RkOjpzdHJpbmcmIGFfZmlsZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBhX2xpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYW5f
aW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYV93cml0ZV9mZCkKKyAgICAg
IDogZmlsZV8oYV9maWxlKSwgbGluZV8oYV9saW5lKSwgaW5kZXhfKGFuX2luZGV4KSwKKyAgICAg
ICAgd3JpdGVfZmRfKGFfd3JpdGVfZmQpIHt9CisKKyAgfkludGVybmFsUnVuRGVhdGhUZXN0Rmxh
ZygpIHsKKyAgICBpZiAod3JpdGVfZmRfID49IDApCisgICAgICBwb3NpeDo6Q2xvc2Uod3JpdGVf
ZmRfKTsKKyAgfQorCisgIGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlKCkgY29uc3QgeyByZXR1cm4g
ZmlsZV87IH0KKyAgaW50IGxpbmUoKSBjb25zdCB7IHJldHVybiBsaW5lXzsgfQorICBpbnQgaW5k
ZXgoKSBjb25zdCB7IHJldHVybiBpbmRleF87IH0KKyAgaW50IHdyaXRlX2ZkKCkgY29uc3QgeyBy
ZXR1cm4gd3JpdGVfZmRfOyB9CisKKyBwcml2YXRlOgorICBzdGQ6OnN0cmluZyBmaWxlXzsKKyAg
aW50IGxpbmVfOworICBpbnQgaW5kZXhfOworICBpbnQgd3JpdGVfZmRfOworCisgIEdURVNUX0RJ
U0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnKTsKK307CisK
Ky8vIFJldHVybnMgYSBuZXdseSBjcmVhdGVkIEludGVybmFsUnVuRGVhdGhUZXN0RmxhZyBvYmpl
Y3Qgd2l0aCBmaWVsZHMKKy8vIGluaXRpYWxpemVkIGZyb20gdGhlIEdURVNUX0ZMQUcoaW50ZXJu
YWxfcnVuX2RlYXRoX3Rlc3QpIGZsYWcgaWYKKy8vIHRoZSBmbGFnIGlzIHNwZWNpZmllZDsgb3Ro
ZXJ3aXNlIHJldHVybnMgTlVMTC4KK0ludGVybmFsUnVuRGVhdGhUZXN0RmxhZyogUGFyc2VJbnRl
cm5hbFJ1bkRlYXRoVGVzdEZsYWcoKTsKKworI2Vsc2UgIC8vIEdURVNUX0hBU19ERUFUSF9URVNU
CisKKy8vIFRoaXMgbWFjcm8gaXMgdXNlZCBmb3IgaW1wbGVtZW50aW5nIG1hY3JvcyBzdWNoIGFz
CisvLyBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEIGFuZCBBU1NFUlRfREVBVEhfSUZfU1VQUE9S
VEVEIG9uIHN5c3RlbXMgd2hlcmUKKy8vIGRlYXRoIHRlc3RzIGFyZSBub3Qgc3VwcG9ydGVkLiBU
aG9zZSBtYWNyb3MgbXVzdCBjb21waWxlIG9uIHN1Y2ggc3lzdGVtcworLy8gaWZmIEVYUEVDVF9E
RUFUSCBhbmQgQVNTRVJUX0RFQVRIIGNvbXBpbGUgd2l0aCB0aGUgc2FtZSBwYXJhbWV0ZXJzIG9u
CisvLyBzeXN0ZW1zIHRoYXQgc3VwcG9ydCBkZWF0aCB0ZXN0cy4gVGhpcyBhbGxvd3Mgb25lIHRv
IHdyaXRlIHN1Y2ggYSBtYWNybworLy8gb24gYSBzeXN0ZW0gdGhhdCBkb2VzIG5vdCBzdXBwb3J0
IGRlYXRoIHRlc3RzIGFuZCBiZSBzdXJlIHRoYXQgaXQgd2lsbAorLy8gY29tcGlsZSBvbiBhIGRl
YXRoLXRlc3Qgc3VwcG9ydGluZyBzeXN0ZW0uCisvLworLy8gUGFyYW1ldGVyczoKKy8vICAgc3Rh
dGVtZW50IC0gIEEgc3RhdGVtZW50IHRoYXQgYSBtYWNybyBzdWNoIGFzIEVYUEVDVF9ERUFUSCB3
b3VsZCB0ZXN0CisvLyAgICAgICAgICAgICAgICBmb3IgcHJvZ3JhbSB0ZXJtaW5hdGlvbi4gVGhp
cyBtYWNybyBoYXMgdG8gbWFrZSBzdXJlIHRoaXMKKy8vICAgICAgICAgICAgICAgIHN0YXRlbWVu
dCBpcyBjb21waWxlZCBidXQgbm90IGV4ZWN1dGVkLCB0byBlbnN1cmUgdGhhdAorLy8gICAgICAg
ICAgICAgICAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCBjb21waWxlcyB3aXRoIGEgY2VydGFp
bgorLy8gICAgICAgICAgICAgICAgcGFyYW1ldGVyIGlmZiBFWFBFQ1RfREVBVEggY29tcGlsZXMg
d2l0aCBpdC4KKy8vICAgcmVnZXggICAgIC0gIEEgcmVnZXggdGhhdCBhIG1hY3JvIHN1Y2ggYXMg
RVhQRUNUX0RFQVRIIHdvdWxkIHVzZSB0byB0ZXN0CisvLyAgICAgICAgICAgICAgICB0aGUgb3V0
cHV0IG9mIHN0YXRlbWVudC4gIFRoaXMgcGFyYW1ldGVyIGhhcyB0byBiZQorLy8gICAgICAgICAg
ICAgICAgY29tcGlsZWQgYnV0IG5vdCBldmFsdWF0ZWQgYnkgdGhpcyBtYWNybywgdG8gZW5zdXJl
IHRoYXQKKy8vICAgICAgICAgICAgICAgIHRoaXMgbWFjcm8gb25seSBhY2NlcHRzIGV4cHJlc3Np
b25zIHRoYXQgYSBtYWNybyBzdWNoIGFzCisvLyAgICAgICAgICAgICAgICBFWFBFQ1RfREVBVEgg
d291bGQgYWNjZXB0LgorLy8gICB0ZXJtaW5hdG9yIC0gTXVzdCBiZSBhbiBlbXB0eSBzdGF0ZW1l
bnQgZm9yIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQKKy8vICAgICAgICAgICAgICAgIGFuZCBh
IHJldHVybiBzdGF0ZW1lbnQgZm9yIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQuCisvLyAgICAg
ICAgICAgICAgICBUaGlzIGVuc3VyZXMgdGhhdCBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEIHdp
bGwgbm90CisvLyAgICAgICAgICAgICAgICBjb21waWxlIGluc2lkZSBmdW5jdGlvbnMgd2hlcmUg
QVNTRVJUX0RFQVRIIGRvZXNuJ3QKKy8vICAgICAgICAgICAgICAgIGNvbXBpbGUuCisvLworLy8g
IFRoZSBicmFuY2ggdGhhdCBoYXMgYW4gYWx3YXlzIGZhbHNlIGNvbmRpdGlvbiBpcyB1c2VkIHRv
IGVuc3VyZSB0aGF0CisvLyAgc3RhdGVtZW50IGFuZCByZWdleCBhcmUgY29tcGlsZWQgKGFuZCB0
aHVzIHN5bnRhY3RpY2FsbHkgY29ycmVjdCkgYnV0CisvLyAgbmV2ZXIgZXhlY3V0ZWQuIFRoZSB1
bnJlYWNoYWJsZSBjb2RlIG1hY3JvIHByb3RlY3RzIHRoZSB0ZXJtaW5hdG9yCisvLyAgc3RhdGVt
ZW50IGZyb20gZ2VuZXJhdGluZyBhbiAndW5yZWFjaGFibGUgY29kZScgd2FybmluZyBpbiBjYXNl
CisvLyAgc3RhdGVtZW50IHVuY29uZGl0aW9uYWxseSByZXR1cm5zIG9yIHRocm93cy4gVGhlIE1l
c3NhZ2UgY29uc3RydWN0b3IgYXQKKy8vICB0aGUgZW5kIGFsbG93cyB0aGUgc3ludGF4IG9mIHN0
cmVhbWluZyBhZGRpdGlvbmFsIG1lc3NhZ2VzIGludG8gdGhlCisvLyAgbWFjcm8sIGZvciBjb21w
aWxhdGlvbmFsIGNvbXBhdGliaWxpdHkgd2l0aCBFWFBFQ1RfREVBVEgvQVNTRVJUX0RFQVRILgor
IyBkZWZpbmUgR1RFU1RfVU5TVVBQT1JURURfREVBVEhfVEVTVF8oc3RhdGVtZW50LCByZWdleCwg
dGVybWluYXRvcikgXAorICAgIEdURVNUX0FNQklHVU9VU19FTFNFX0JMT0NLRVJfIFwKKyAgICBp
ZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZSgpKSB7IFwKKyAgICAgIEdURVNUX0xP
R18oV0FSTklORykgXAorICAgICAgICAgIDw8ICJEZWF0aCB0ZXN0cyBhcmUgbm90IHN1cHBvcnRl
ZCBvbiB0aGlzIHBsYXRmb3JtLlxuIiBcCisgICAgICAgICAgPDwgIlN0YXRlbWVudCAnIiAjc3Rh
dGVtZW50ICInIGNhbm5vdCBiZSB2ZXJpZmllZC4iOyBcCisgICAgfSBlbHNlIGlmICg6OnRlc3Rp
bmc6OmludGVybmFsOjpBbHdheXNGYWxzZSgpKSB7IFwKKyAgICAgIDo6dGVzdGluZzo6aW50ZXJu
YWw6OlJFOjpQYXJ0aWFsTWF0Y2goIi4qIiwgKHJlZ2V4KSk7IFwKKyAgICAgIEdURVNUX1NVUFBS
RVNTX1VOUkVBQ0hBQkxFX0NPREVfV0FSTklOR19CRUxPV18oc3RhdGVtZW50KTsgXAorICAgICAg
dGVybWluYXRvcjsgXAorICAgIH0gZWxzZSBcCisgICAgICA6OnRlc3Rpbmc6Ok1lc3NhZ2UoKQor
CisjZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUCisKK30gIC8vIG5hbWVzcGFjZSBpbnRl
cm5hbAorfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKKworI2VuZGlmICAvLyBHVEVTVF9JTkNMVURF
X0dURVNUX0lOVEVSTkFMX0dURVNUX0RFQVRIX1RFU1RfSU5URVJOQUxfSF8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGguaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGguaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43YTEzYjRiMGRlNjA4M2JiZmU2OTYzZjhjMGVkMTZlMjdkZTc3MDEyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1maWxlcGF0
aC5oCkBAIC0wLDAgKzEsMjA2IEBACisvLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKy8v
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8v
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisvLworLy8gQXV0aG9yOiBrZWl0aC5yYXlAZ21haWwuY29tIChLZWl0aCBSYXkp
CisvLworLy8gR29vZ2xlIFRlc3QgZmlsZXBhdGggdXRpbGl0aWVzCisvLworLy8gVGhpcyBoZWFk
ZXIgZmlsZSBkZWNsYXJlcyBjbGFzc2VzIGFuZCBmdW5jdGlvbnMgdXNlZCBpbnRlcm5hbGx5IGJ5
CisvLyBHb29nbGUgVGVzdC4gIFRoZXkgYXJlIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90
aWNlLgorLy8KKy8vIFRoaXMgZmlsZSBpcyAjaW5jbHVkZWQgaW4gPGd0ZXN0L2ludGVybmFsL2d0
ZXN0LWludGVybmFsLmg+LgorLy8gRG8gbm90IGluY2x1ZGUgdGhpcyBoZWFkZXIgZmlsZSBzZXBh
cmF0ZWx5IQorCisjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfRklM
RVBBVEhfSF8KKyNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9GSUxF
UEFUSF9IXworCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmgiCisKK25h
bWVzcGFjZSB0ZXN0aW5nIHsKK25hbWVzcGFjZSBpbnRlcm5hbCB7CisKKy8vIEZpbGVQYXRoIC0g
YSBjbGFzcyBmb3IgZmlsZSBhbmQgZGlyZWN0b3J5IHBhdGhuYW1lIG1hbmlwdWxhdGlvbiB3aGlj
aAorLy8gaGFuZGxlcyBwbGF0Zm9ybS1zcGVjaWZpYyBjb252ZW50aW9ucyAobGlrZSB0aGUgcGF0
aG5hbWUgc2VwYXJhdG9yKS4KKy8vIFVzZWQgZm9yIGhlbHBlciBmdW5jdGlvbnMgZm9yIG5hbWlu
ZyBmaWxlcyBpbiBhIGRpcmVjdG9yeSBmb3IgeG1sIG91dHB1dC4KKy8vIEV4Y2VwdCBmb3IgU2V0
IG1ldGhvZHMsIGFsbCBtZXRob2RzIGFyZSBjb25zdCBvciBzdGF0aWMsIHdoaWNoIHByb3ZpZGVz
IGFuCisvLyAiaW1tdXRhYmxlIHZhbHVlIG9iamVjdCIgLS0gdXNlZnVsIGZvciBwZWFjZSBvZiBt
aW5kLgorLy8gQSBGaWxlUGF0aCB3aXRoIGEgdmFsdWUgZW5kaW5nIGluIGEgcGF0aCBzZXBhcmF0
b3IgKCJsaWtlL3RoaXMvIikgcmVwcmVzZW50cworLy8gYSBkaXJlY3RvcnksIG90aGVyd2lzZSBp
dCBpcyBhc3N1bWVkIHRvIHJlcHJlc2VudCBhIGZpbGUuIEluIGVpdGhlciBjYXNlLAorLy8gaXQg
bWF5IG9yIG1heSBub3QgcmVwcmVzZW50IGFuIGFjdHVhbCBmaWxlIG9yIGRpcmVjdG9yeSBpbiB0
aGUgZmlsZSBzeXN0ZW0uCisvLyBOYW1lcyBhcmUgTk9UIGNoZWNrZWQgZm9yIHN5bnRheCBjb3Jy
ZWN0bmVzcyAtLSBubyBjaGVja2luZyBmb3IgaWxsZWdhbAorLy8gY2hhcmFjdGVycywgbWFsZm9y
bWVkIHBhdGhzLCBldGMuCisKK2NsYXNzIEdURVNUX0FQSV8gRmlsZVBhdGggeworIHB1YmxpYzoK
KyAgRmlsZVBhdGgoKSA6IHBhdGhuYW1lXygiIikgeyB9CisgIEZpbGVQYXRoKGNvbnN0IEZpbGVQ
YXRoJiByaHMpIDogcGF0aG5hbWVfKHJocy5wYXRobmFtZV8pIHsgfQorCisgIGV4cGxpY2l0IEZp
bGVQYXRoKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRobmFtZSkgOiBwYXRobmFtZV8ocGF0aG5hbWUp
IHsKKyAgICBOb3JtYWxpemUoKTsKKyAgfQorCisgIEZpbGVQYXRoJiBvcGVyYXRvcj0oY29uc3Qg
RmlsZVBhdGgmIHJocykgeworICAgIFNldChyaHMpOworICAgIHJldHVybiAqdGhpczsKKyAgfQor
CisgIHZvaWQgU2V0KGNvbnN0IEZpbGVQYXRoJiByaHMpIHsKKyAgICBwYXRobmFtZV8gPSByaHMu
cGF0aG5hbWVfOworICB9CisKKyAgY29uc3Qgc3RkOjpzdHJpbmcmIHN0cmluZygpIGNvbnN0IHsg
cmV0dXJuIHBhdGhuYW1lXzsgfQorICBjb25zdCBjaGFyKiBjX3N0cigpIGNvbnN0IHsgcmV0dXJu
IHBhdGhuYW1lXy5jX3N0cigpOyB9CisKKyAgLy8gUmV0dXJucyB0aGUgY3VycmVudCB3b3JraW5n
IGRpcmVjdG9yeSwgb3IgIiIgaWYgdW5zdWNjZXNzZnVsLgorICBzdGF0aWMgRmlsZVBhdGggR2V0
Q3VycmVudERpcigpOworCisgIC8vIEdpdmVuIGRpcmVjdG9yeSA9ICJkaXIiLCBiYXNlX25hbWUg
PSAidGVzdCIsIG51bWJlciA9IDAsCisgIC8vIGV4dGVuc2lvbiA9ICJ4bWwiLCByZXR1cm5zICJk
aXIvdGVzdC54bWwiLiBJZiBudW1iZXIgaXMgZ3JlYXRlcgorICAvLyB0aGFuIHplcm8gKGUuZy4s
IDEyKSwgcmV0dXJucyAiZGlyL3Rlc3RfMTIueG1sIi4KKyAgLy8gT24gV2luZG93cyBwbGF0Zm9y
bSwgdXNlcyBcIGFzIHRoZSBzZXBhcmF0b3IgcmF0aGVyIHRoYW4gLy4KKyAgc3RhdGljIEZpbGVQ
YXRoIE1ha2VGaWxlTmFtZShjb25zdCBGaWxlUGF0aCYgZGlyZWN0b3J5LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEZpbGVQYXRoJiBiYXNlX25hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IG51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBleHRlbnNpb24pOworCisgIC8vIEdpdmVuIGRpcmVjdG9yeSA9
ICJkaXIiLCByZWxhdGl2ZV9wYXRoID0gInRlc3QueG1sIiwKKyAgLy8gcmV0dXJucyAiZGlyL3Rl
c3QueG1sIi4KKyAgLy8gT24gV2luZG93cywgdXNlcyBcIGFzIHRoZSBzZXBhcmF0b3IgcmF0aGVy
IHRoYW4gLy4KKyAgc3RhdGljIEZpbGVQYXRoIENvbmNhdFBhdGhzKGNvbnN0IEZpbGVQYXRoJiBk
aXJlY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGaWxlUGF0aCYg
cmVsYXRpdmVfcGF0aCk7CisKKyAgLy8gUmV0dXJucyBhIHBhdGhuYW1lIGZvciBhIGZpbGUgdGhh
dCBkb2VzIG5vdCBjdXJyZW50bHkgZXhpc3QuIFRoZSBwYXRobmFtZQorICAvLyB3aWxsIGJlIGRp
cmVjdG9yeS9iYXNlX25hbWUuZXh0ZW5zaW9uIG9yCisgIC8vIGRpcmVjdG9yeS9iYXNlX25hbWVf
PG51bWJlcj4uZXh0ZW5zaW9uIGlmIGRpcmVjdG9yeS9iYXNlX25hbWUuZXh0ZW5zaW9uCisgIC8v
IGFscmVhZHkgZXhpc3RzLiBUaGUgbnVtYmVyIHdpbGwgYmUgaW5jcmVtZW50ZWQgdW50aWwgYSBw
YXRobmFtZSBpcyBmb3VuZAorICAvLyB0aGF0IGRvZXMgbm90IGFscmVhZHkgZXhpc3QuCisgIC8v
IEV4YW1wbGVzOiAnZGlyL2Zvb190ZXN0LnhtbCcgb3IgJ2Rpci9mb29fdGVzdF8xLnhtbCcuCisg
IC8vIFRoZXJlIGNvdWxkIGJlIGEgcmFjZSBjb25kaXRpb24gaWYgdHdvIG9yIG1vcmUgcHJvY2Vz
c2VzIGFyZSBjYWxsaW5nIHRoaXMKKyAgLy8gZnVuY3Rpb24gYXQgdGhlIHNhbWUgdGltZSAtLSB0
aGV5IGNvdWxkIGJvdGggcGljayB0aGUgc2FtZSBmaWxlbmFtZS4KKyAgc3RhdGljIEZpbGVQYXRo
IEdlbmVyYXRlVW5pcXVlRmlsZU5hbWUoY29uc3QgRmlsZVBhdGgmIGRpcmVjdG9yeSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmlsZVBhdGgmIGJhc2Vf
bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogZXh0ZW5zaW9uKTsKKworICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSBwYXRoIGlzICIiLgor
ICBib29sIElzRW1wdHkoKSBjb25zdCB7IHJldHVybiBwYXRobmFtZV8uZW1wdHkoKTsgfQorCisg
IC8vIElmIGlucHV0IG5hbWUgaGFzIGEgdHJhaWxpbmcgc2VwYXJhdG9yIGNoYXJhY3RlciwgcmVt
b3ZlcyBpdCBhbmQgcmV0dXJucworICAvLyB0aGUgbmFtZSwgb3RoZXJ3aXNlIHJldHVybiB0aGUg
bmFtZSBzdHJpbmcgdW5tb2RpZmllZC4KKyAgLy8gT24gV2luZG93cyBwbGF0Zm9ybSwgdXNlcyBc
IGFzIHRoZSBzZXBhcmF0b3IsIG90aGVyIHBsYXRmb3JtcyB1c2UgLy4KKyAgRmlsZVBhdGggUmVt
b3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkgY29uc3Q7CisKKyAgLy8gUmV0dXJucyBhIGNvcHkg
b2YgdGhlIEZpbGVQYXRoIHdpdGggdGhlIGRpcmVjdG9yeSBwYXJ0IHJlbW92ZWQuCisgIC8vIEV4
YW1wbGU6IEZpbGVQYXRoKCJwYXRoL3RvL2ZpbGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkgcmV0
dXJucworICAvLyBGaWxlUGF0aCgiZmlsZSIpLiBJZiB0aGVyZSBpcyBubyBkaXJlY3RvcnkgcGFy
dCAoImp1c3RfYV9maWxlIiksIGl0IHJldHVybnMKKyAgLy8gdGhlIEZpbGVQYXRoIHVubW9kaWZp
ZWQuIElmIHRoZXJlIGlzIG5vIGZpbGUgcGFydCAoImp1c3RfYV9kaXIvIikgaXQKKyAgLy8gcmV0
dXJucyBhbiBlbXB0eSBGaWxlUGF0aCAoIiIpLgorICAvLyBPbiBXaW5kb3dzIHBsYXRmb3JtLCAn
XCcgaXMgdGhlIHBhdGggc2VwYXJhdG9yLCBvdGhlcndpc2UgaXQgaXMgJy8nLgorICBGaWxlUGF0
aCBSZW1vdmVEaXJlY3RvcnlOYW1lKCkgY29uc3Q7CisKKyAgLy8gUmVtb3ZlRmlsZU5hbWUgcmV0
dXJucyB0aGUgZGlyZWN0b3J5IHBhdGggd2l0aCB0aGUgZmlsZW5hbWUgcmVtb3ZlZC4KKyAgLy8g
RXhhbXBsZTogRmlsZVBhdGgoInBhdGgvdG8vZmlsZSIpLlJlbW92ZUZpbGVOYW1lKCkgcmV0dXJu
cyAicGF0aC90by8iLgorICAvLyBJZiB0aGUgRmlsZVBhdGggaXMgImFfZmlsZSIgb3IgIi9hX2Zp
bGUiLCBSZW1vdmVGaWxlTmFtZSByZXR1cm5zCisgIC8vIEZpbGVQYXRoKCIuLyIpIG9yLCBvbiBX
aW5kb3dzLCBGaWxlUGF0aCgiLlxcIikuIElmIHRoZSBmaWxlcGF0aCBkb2VzCisgIC8vIG5vdCBo
YXZlIGEgZmlsZSwgbGlrZSAianVzdC9hL2Rpci8iLCBpdCByZXR1cm5zIHRoZSBGaWxlUGF0aCB1
bm1vZGlmaWVkLgorICAvLyBPbiBXaW5kb3dzIHBsYXRmb3JtLCAnXCcgaXMgdGhlIHBhdGggc2Vw
YXJhdG9yLCBvdGhlcndpc2UgaXQgaXMgJy8nLgorICBGaWxlUGF0aCBSZW1vdmVGaWxlTmFtZSgp
IGNvbnN0OworCisgIC8vIFJldHVybnMgYSBjb3B5IG9mIHRoZSBGaWxlUGF0aCB3aXRoIHRoZSBj
YXNlLWluc2Vuc2l0aXZlIGV4dGVuc2lvbiByZW1vdmVkLgorICAvLyBFeGFtcGxlOiBGaWxlUGF0
aCgiZGlyL2ZpbGUuZXhlIikuUmVtb3ZlRXh0ZW5zaW9uKCJFWEUiKSByZXR1cm5zCisgIC8vIEZp
bGVQYXRoKCJkaXIvZmlsZSIpLiBJZiBhIGNhc2UtaW5zZW5zaXRpdmUgZXh0ZW5zaW9uIGlzIG5v
dAorICAvLyBmb3VuZCwgcmV0dXJucyBhIGNvcHkgb2YgdGhlIG9yaWdpbmFsIEZpbGVQYXRoLgor
ICBGaWxlUGF0aCBSZW1vdmVFeHRlbnNpb24oY29uc3QgY2hhciogZXh0ZW5zaW9uKSBjb25zdDsK
KworICAvLyBDcmVhdGVzIGRpcmVjdG9yaWVzIHNvIHRoYXQgcGF0aCBleGlzdHMuIFJldHVybnMg
dHJ1ZSBpZiBzdWNjZXNzZnVsIG9yIGlmCisgIC8vIHRoZSBkaXJlY3RvcmllcyBhbHJlYWR5IGV4
aXN0OyByZXR1cm5zIGZhbHNlIGlmIHVuYWJsZSB0byBjcmVhdGUKKyAgLy8gZGlyZWN0b3JpZXMg
Zm9yIGFueSByZWFzb24uIFdpbGwgYWxzbyByZXR1cm4gZmFsc2UgaWYgdGhlIEZpbGVQYXRoIGRv
ZXMKKyAgLy8gbm90IHJlcHJlc2VudCBhIGRpcmVjdG9yeSAodGhhdCBpcywgaXQgZG9lc24ndCBl
bmQgd2l0aCBhIHBhdGggc2VwYXJhdG9yKS4KKyAgYm9vbCBDcmVhdGVEaXJlY3Rvcmllc1JlY3Vy
c2l2ZWx5KCkgY29uc3Q7CisKKyAgLy8gQ3JlYXRlIHRoZSBkaXJlY3Rvcnkgc28gdGhhdCBwYXRo
IGV4aXN0cy4gUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwgb3IKKyAgLy8gaWYgdGhlIGRpcmVj
dG9yeSBhbHJlYWR5IGV4aXN0czsgcmV0dXJucyBmYWxzZSBpZiB1bmFibGUgdG8gY3JlYXRlIHRo
ZQorICAvLyBkaXJlY3RvcnkgZm9yIGFueSByZWFzb24sIGluY2x1ZGluZyBpZiB0aGUgcGFyZW50
IGRpcmVjdG9yeSBkb2VzIG5vdAorICAvLyBleGlzdC4gTm90IG5hbWVkICJDcmVhdGVEaXJlY3Rv
cnkiIGJlY2F1c2UgdGhhdCdzIGEgbWFjcm8gb24gV2luZG93cy4KKyAgYm9vbCBDcmVhdGVGb2xk
ZXIoKSBjb25zdDsKKworICAvLyBSZXR1cm5zIHRydWUgaWYgRmlsZVBhdGggZGVzY3JpYmVzIHNv
bWV0aGluZyBpbiB0aGUgZmlsZS1zeXN0ZW0sCisgIC8vIGVpdGhlciBhIGZpbGUsIGRpcmVjdG9y
eSwgb3Igd2hhdGV2ZXIsIGFuZCB0aGF0IHNvbWV0aGluZyBleGlzdHMuCisgIGJvb2wgRmlsZU9y
RGlyZWN0b3J5RXhpc3RzKCkgY29uc3Q7CisKKyAgLy8gUmV0dXJucyB0cnVlIGlmIHBhdGhuYW1l
IGRlc2NyaWJlcyBhIGRpcmVjdG9yeSBpbiB0aGUgZmlsZS1zeXN0ZW0KKyAgLy8gdGhhdCBleGlz
dHMuCisgIGJvb2wgRGlyZWN0b3J5RXhpc3RzKCkgY29uc3Q7CisKKyAgLy8gUmV0dXJucyB0cnVl
IGlmIEZpbGVQYXRoIGVuZHMgd2l0aCBhIHBhdGggc2VwYXJhdG9yLCB3aGljaCBpbmRpY2F0ZXMg
dGhhdAorICAvLyBpdCBpcyBpbnRlbmRlZCB0byByZXByZXNlbnQgYSBkaXJlY3RvcnkuIFJldHVy
bnMgZmFsc2Ugb3RoZXJ3aXNlLgorICAvLyBUaGlzIGRvZXMgTk9UIGNoZWNrIHRoYXQgYSBkaXJl
Y3RvcnkgKG9yIGZpbGUpIGFjdHVhbGx5IGV4aXN0cy4KKyAgYm9vbCBJc0RpcmVjdG9yeSgpIGNv
bnN0OworCisgIC8vIFJldHVybnMgdHJ1ZSBpZiBwYXRobmFtZSBkZXNjcmliZXMgYSByb290IGRp
cmVjdG9yeS4gKFdpbmRvd3MgaGFzIG9uZQorICAvLyByb290IGRpcmVjdG9yeSBwZXIgZGlzayBk
cml2ZS4pCisgIGJvb2wgSXNSb290RGlyZWN0b3J5KCkgY29uc3Q7CisKKyAgLy8gUmV0dXJucyB0
cnVlIGlmIHBhdGhuYW1lIGRlc2NyaWJlcyBhbiBhYnNvbHV0ZSBwYXRoLgorICBib29sIElzQWJz
b2x1dGVQYXRoKCkgY29uc3Q7CisKKyBwcml2YXRlOgorICAvLyBSZXBsYWNlcyBtdWx0aXBsZSBj
b25zZWN1dGl2ZSBzZXBhcmF0b3JzIHdpdGggYSBzaW5nbGUgc2VwYXJhdG9yLgorICAvLyBGb3Ig
ZXhhbXBsZSwgImJhci8vL2ZvbyIgYmVjb21lcyAiYmFyL2ZvbyIuIERvZXMgbm90IGVsaW1pbmF0
ZSBvdGhlcgorICAvLyByZWR1bmRhbmNpZXMgdGhhdCBtaWdodCBiZSBpbiBhIHBhdGhuYW1lIGlu
dm9sdmluZyAiLiIgb3IgIi4uIi4KKyAgLy8KKyAgLy8gQSBwYXRobmFtZSB3aXRoIG11bHRpcGxl
IGNvbnNlY3V0aXZlIHNlcGFyYXRvcnMgbWF5IG9jY3VyIGVpdGhlciB0aHJvdWdoCisgIC8vIHVz
ZXIgZXJyb3Igb3IgYXMgYSByZXN1bHQgb2Ygc29tZSBzY3JpcHRzIG9yIEFQSXMgdGhhdCBnZW5l
cmF0ZSBhIHBhdGhuYW1lCisgIC8vIHdpdGggYSB0cmFpbGluZyBzZXBhcmF0b3IuIE9uIG90aGVy
IHBsYXRmb3JtcyB0aGUgc2FtZSBBUEkgb3Igc2NyaXB0CisgIC8vIG1heSBOT1QgZ2VuZXJhdGUg
YSBwYXRobmFtZSB3aXRoIGEgdHJhaWxpbmcgIi8iLiBUaGVuIGVsc2V3aGVyZSB0aGF0CisgIC8v
IHBhdGhuYW1lIG1heSBoYXZlIGFub3RoZXIgIi8iIGFuZCBwYXRobmFtZSBjb21wb25lbnRzIGFk
ZGVkIHRvIGl0LAorICAvLyB3aXRob3V0IGNoZWNraW5nIGZvciB0aGUgc2VwYXJhdG9yIGFscmVh
ZHkgYmVpbmcgdGhlcmUuCisgIC8vIFRoZSBzY3JpcHQgbGFuZ3VhZ2UgYW5kIG9wZXJhdGluZyBz
eXN0ZW0gbWF5IGFsbG93IHBhdGhzIGxpa2UgImZvby8vYmFyIgorICAvLyBidXQgc29tZSBvZiB0
aGUgZnVuY3Rpb25zIGluIEZpbGVQYXRoIHdpbGwgbm90IGhhbmRsZSB0aGF0IGNvcnJlY3RseS4g
SW4KKyAgLy8gcGFydGljdWxhciwgUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkgb25seSBy
ZW1vdmVzIG9uZSBzZXBhcmF0b3IsIGFuZAorICAvLyBpdCBpcyBjYWxsZWQgaW4gQ3JlYXRlRGly
ZWN0b3JpZXNSZWN1cnNpdmVseSgpIGFzc3VtaW5nIHRoYXQgaXQgd2lsbCBjaGFuZ2UKKyAgLy8g
YSBwYXRobmFtZSBmcm9tIGRpcmVjdG9yeSBzeW50YXggKHRyYWlsaW5nIHNlcGFyYXRvcikgdG8g
ZmlsZW5hbWUgc3ludGF4LgorICAvLworICAvLyBPbiBXaW5kb3dzIHRoaXMgbWV0aG9kIGFsc28g
cmVwbGFjZXMgdGhlIGFsdGVybmF0ZSBwYXRoIHNlcGFyYXRvciAnLycgd2l0aAorICAvLyB0aGUg
cHJpbWFyeSBwYXRoIHNlcGFyYXRvciAnXFwnLCBzbyB0aGF0IGZvciBleGFtcGxlICJiYXJcXC9c
XGZvbyIgYmVjb21lcworICAvLyAiYmFyXFxmb28iLgorCisgIHZvaWQgTm9ybWFsaXplKCk7CisK
KyAgLy8gUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGxhc3Qgb2NjdXJlbmNlIG9mIGEgdmFsaWQg
cGF0aCBzZXBhcmF0b3IgaW4KKyAgLy8gdGhlIEZpbGVQYXRoLiBPbiBXaW5kb3dzLCBmb3IgZXhh
bXBsZSwgYm90aCAnLycgYW5kICdcJyBhcmUgdmFsaWQgcGF0aAorICAvLyBzZXBhcmF0b3JzLiBS
ZXR1cm5zIE5VTEwgaWYgbm8gcGF0aCBzZXBhcmF0b3Igd2FzIGZvdW5kLgorICBjb25zdCBjaGFy
KiBGaW5kTGFzdFBhdGhTZXBhcmF0b3IoKSBjb25zdDsKKworICBzdGQ6OnN0cmluZyBwYXRobmFt
ZV87Cit9OyAgLy8gY2xhc3MgRmlsZVBhdGgKKworfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCit9
ICAvLyBuYW1lc3BhY2UgdGVzdGluZworCisjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1Rf
SU5URVJOQUxfR1RFU1RfRklMRVBBVEhfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1
ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUv
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZGE1YWI0NmQzYWFl
NTk1NzcxN2Y1NjI3ZjcwYTQwYjI0MTkwMGQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRl
c3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5oCkBAIC0wLDAgKzEsMTIz
OSBAQAorLy8gQ29weXJpZ2h0IDIwMDUsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8g
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8v
IEF1dGhvcnM6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pLCBlZWZhY21AZ21haWwuY29t
IChTZWFuIE1jYWZlZSkKKy8vCisvLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAo
R29vZ2xlIFRlc3QpCisvLworLy8gVGhpcyBoZWFkZXIgZmlsZSBkZWNsYXJlcyBmdW5jdGlvbnMg
YW5kIG1hY3JvcyB1c2VkIGludGVybmFsbHkgYnkKKy8vIEdvb2dsZSBUZXN0LiAgVGhleSBhcmUg
c3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuCisKKyNpZm5kZWYgR1RFU1RfSU5DTFVE
RV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9JTlRFUk5BTF9IXworI2RlZmluZSBHVEVTVF9JTkNMVURF
X0dURVNUX0lOVEVSTkFMX0dURVNUX0lOVEVSTkFMX0hfCisKKyNpbmNsdWRlICJndGVzdC9pbnRl
cm5hbC9ndGVzdC1wb3J0LmgiCisKKyNpZiBHVEVTVF9PU19MSU5VWAorIyBpbmNsdWRlIDxzdGRs
aWIuaD4KKyMgaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjIGluY2x1ZGUgPHN5cy93YWl0Lmg+Cisj
IGluY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmICAvLyBHVEVTVF9PU19MSU5VWAorCisjaWYgR1RF
U1RfSEFTX0VYQ0VQVElPTlMKKyMgaW5jbHVkZSA8c3RkZXhjZXB0PgorI2VuZGlmCisKKyNpbmNs
dWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPGZsb2F0Lmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+Cisj
aW5jbHVkZSA8aW9tYW5pcD4KKyNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8bWFwPgorI2lu
Y2x1ZGUgPHNldD4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0
ZXN0LXN0cmluZy5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmgi
CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgiCisKKy8vIER1ZSB0
byBDKysgcHJlcHJvY2Vzc29yIHdlaXJkbmVzcywgd2UgbmVlZCBkb3VibGUgaW5kaXJlY3Rpb24g
dG8KKy8vIGNvbmNhdGVuYXRlIHR3byB0b2tlbnMgd2hlbiBvbmUgb2YgdGhlbSBpcyBfX0xJTkVf
Xy4gIFdyaXRpbmcKKy8vCisvLyAgIGZvbyAjIyBfX0xJTkVfXworLy8KKy8vIHdpbGwgcmVzdWx0
IGluIHRoZSB0b2tlbiBmb29fX0xJTkVfXywgaW5zdGVhZCBvZiBmb28gZm9sbG93ZWQgYnkKKy8v
IHRoZSBjdXJyZW50IGxpbmUgbnVtYmVyLiAgRm9yIG1vcmUgZGV0YWlscywgc2VlCisvLyBodHRw
Oi8vd3d3LnBhcmFzaGlmdC5jb20vYysrLWZhcS1saXRlL21pc2MtdGVjaG5pY2FsLWlzc3Vlcy5o
dG1sI2ZhcS0zOS42CisjZGVmaW5lIEdURVNUX0NPTkNBVF9UT0tFTl8oZm9vLCBiYXIpIEdURVNU
X0NPTkNBVF9UT0tFTl9JTVBMXyhmb28sIGJhcikKKyNkZWZpbmUgR1RFU1RfQ09OQ0FUX1RPS0VO
X0lNUExfKGZvbywgYmFyKSBmb28gIyMgYmFyCisKK2NsYXNzIFByb3RvY29sTWVzc2FnZTsKK25h
bWVzcGFjZSBwcm90bzIgeyBjbGFzcyBNZXNzYWdlOyB9CisKK25hbWVzcGFjZSB0ZXN0aW5nIHsK
KworLy8gRm9yd2FyZCBkZWNsYXJhdGlvbnMuCisKK2NsYXNzIEFzc2VydGlvblJlc3VsdDsgICAg
ICAgICAgICAgICAgIC8vIFJlc3VsdCBvZiBhbiBhc3NlcnRpb24uCitjbGFzcyBNZXNzYWdlOyAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXByZXNlbnRzIGEgZmFpbHVyZSBtZXNzYWdlLgor
Y2xhc3MgVGVzdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVwcmVzZW50cyBhIHRl
c3QuCitjbGFzcyBUZXN0SW5mbzsgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbmZvcm1hdGlv
biBhYm91dCBhIHRlc3QuCitjbGFzcyBUZXN0UGFydFJlc3VsdDsgICAgICAgICAgICAgICAgICAv
LyBSZXN1bHQgb2YgYSB0ZXN0IHBhcnQuCitjbGFzcyBVbml0VGVzdDsgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBBIGNvbGxlY3Rpb24gb2YgdGVzdCBjYXNlcy4KKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Cis6OnN0ZDo6c3RyaW5nIFByaW50VG9TdHJpbmcoY29uc3QgVCYgdmFsdWUpOworCitu
YW1lc3BhY2UgaW50ZXJuYWwgeworCitzdHJ1Y3QgVHJhY2VJbmZvOyAgICAgICAgICAgICAgICAg
ICAgICAvLyBJbmZvcm1hdGlvbiBhYm91dCBhIHRyYWNlIHBvaW50LgorY2xhc3MgU2NvcGVkVHJh
Y2U7ICAgICAgICAgICAgICAgICAgICAgLy8gSW1wbGVtZW50cyBzY29wZWQgdHJhY2UuCitjbGFz
cyBUZXN0SW5mb0ltcGw7ICAgICAgICAgICAgICAgICAgICAvLyBPcGFxdWUgaW1wbGVtZW50YXRp
b24gb2YgVGVzdEluZm8KK2NsYXNzIFVuaXRUZXN0SW1wbDsgICAgICAgICAgICAgICAgICAgIC8v
IE9wYXF1ZSBpbXBsZW1lbnRhdGlvbiBvZiBVbml0VGVzdAorCisvLyBUaGUgdGV4dCB1c2VkIGlu
IGZhaWx1cmUgbWVzc2FnZXMgdG8gaW5kaWNhdGUgdGhlIHN0YXJ0IG9mIHRoZQorLy8gc3RhY2sg
dHJhY2UuCitHVEVTVF9BUElfIGV4dGVybiBjb25zdCBjaGFyIGtTdGFja1RyYWNlTWFya2VyW107
CisKKy8vIFR3byBvdmVybG9hZGVkIGhlbHBlcnMgZm9yIGNoZWNraW5nIGF0IGNvbXBpbGUgdGlt
ZSB3aGV0aGVyIGFuCisvLyBleHByZXNzaW9uIGlzIGEgbnVsbCBwb2ludGVyIGxpdGVyYWwgKGku
ZS4gTlVMTCBvciBhbnkgMC12YWx1ZWQKKy8vIGNvbXBpbGUtdGltZSBpbnRlZ3JhbCBjb25zdGFu
dCkuICBUaGVpciByZXR1cm4gdmFsdWVzIGhhdmUKKy8vIGRpZmZlcmVudCBzaXplcywgc28gd2Ug
Y2FuIHVzZSBzaXplb2YoKSB0byB0ZXN0IHdoaWNoIHZlcnNpb24gaXMKKy8vIHBpY2tlZCBieSB0
aGUgY29tcGlsZXIuICBUaGVzZSBoZWxwZXJzIGhhdmUgbm8gaW1wbGVtZW50YXRpb25zLCBhcwor
Ly8gd2Ugb25seSBuZWVkIHRoZWlyIHNpZ25hdHVyZXMuCisvLworLy8gR2l2ZW4gSXNOdWxsTGl0
ZXJhbEhlbHBlcih4KSwgdGhlIGNvbXBpbGVyIHdpbGwgcGljayB0aGUgZmlyc3QKKy8vIHZlcnNp
b24gaWYgeCBjYW4gYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gU2VjcmV0KiwgYW5kIHBpY2sg
dGhlCisvLyBzZWNvbmQgdmVyc2lvbiBvdGhlcndpc2UuICBTaW5jZSBTZWNyZXQgaXMgYSBzZWNy
ZXQgYW5kIGluY29tcGxldGUKKy8vIHR5cGUsIHRoZSBvbmx5IGV4cHJlc3Npb24gYSB1c2VyIGNh
biB3cml0ZSB0aGF0IGhhcyB0eXBlIFNlY3JldCogaXMKKy8vIGEgbnVsbCBwb2ludGVyIGxpdGVy
YWwuICBUaGVyZWZvcmUsIHdlIGtub3cgdGhhdCB4IGlzIGEgbnVsbAorLy8gcG9pbnRlciBsaXRl
cmFsIGlmIGFuZCBvbmx5IGlmIHRoZSBmaXJzdCB2ZXJzaW9uIGlzIHBpY2tlZCBieSB0aGUKKy8v
IGNvbXBpbGVyLgorY2hhciBJc051bGxMaXRlcmFsSGVscGVyKFNlY3JldCogcCk7CitjaGFyICgm
SXNOdWxsTGl0ZXJhbEhlbHBlciguLi4pKVsyXTsgIC8vIE5PTElOVAorCisvLyBBIGNvbXBpbGUt
dGltZSBib29sIGNvbnN0YW50IHRoYXQgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiB4IGlzIGEKKy8v
IG51bGwgcG9pbnRlciBsaXRlcmFsIChpLmUuIE5VTEwgb3IgYW55IDAtdmFsdWVkIGNvbXBpbGUt
dGltZQorLy8gaW50ZWdyYWwgY29uc3RhbnQpLgorI2lmZGVmIEdURVNUX0VMTElQU0lTX05FRURT
X1BPRF8KKy8vIFdlIGxvc2Ugc3VwcG9ydCBmb3IgTlVMTCBkZXRlY3Rpb24gd2hlcmUgdGhlIGNv
bXBpbGVyIGRvZXNuJ3QgbGlrZQorLy8gcGFzc2luZyBub24tUE9EIGNsYXNzZXMgdGhyb3VnaCBl
bGxpcHNpcyAoLi4uKS4KKyMgZGVmaW5lIEdURVNUX0lTX05VTExfTElURVJBTF8oeCkgZmFsc2UK
KyNlbHNlCisjIGRlZmluZSBHVEVTVF9JU19OVUxMX0xJVEVSQUxfKHgpIFwKKyAgICAoc2l6ZW9m
KDo6dGVzdGluZzo6aW50ZXJuYWw6OklzTnVsbExpdGVyYWxIZWxwZXIoeCkpID09IDEpCisjZW5k
aWYgIC8vIEdURVNUX0VMTElQU0lTX05FRURTX1BPRF8KKworLy8gQXBwZW5kcyB0aGUgdXNlci1z
dXBwbGllZCBtZXNzYWdlIHRvIHRoZSBHb29nbGUtVGVzdC1nZW5lcmF0ZWQgbWVzc2FnZS4KK0dU
RVNUX0FQSV8gc3RkOjpzdHJpbmcgQXBwZW5kVXNlck1lc3NhZ2UoCisgICAgY29uc3Qgc3RkOjpz
dHJpbmcmIGd0ZXN0X21zZywgY29uc3QgTWVzc2FnZSYgdXNlcl9tc2cpOworCisjaWYgR1RFU1Rf
SEFTX0VYQ0VQVElPTlMKKworLy8gVGhpcyBleGNlcHRpb24gaXMgdGhyb3duIGJ5IChhbmQgb25s
eSBieSkgYSBmYWlsZWQgR29vZ2xlIFRlc3QKKy8vIGFzc2VydGlvbiB3aGVuIEdURVNUX0ZMQUco
dGhyb3dfb25fZmFpbHVyZSkgaXMgdHJ1ZSAoaWYgZXhjZXB0aW9ucworLy8gYXJlIGVuYWJsZWQp
LiAgV2UgZGVyaXZlIGl0IGZyb20gc3RkOjpydW50aW1lX2Vycm9yLCB3aGljaCBpcyBmb3IKKy8v
IGVycm9ycyBwcmVzdW1hYmx5IGRldGVjdGFibGUgb25seSBhdCBydW4gdGltZS4gIFNpbmNlCisv
LyBzdGQ6OnJ1bnRpbWVfZXJyb3IgaW5oZXJpdHMgZnJvbSBzdGQ6OmV4Y2VwdGlvbiwgbWFueSB0
ZXN0aW5nCisvLyBmcmFtZXdvcmtzIGtub3cgaG93IHRvIGV4dHJhY3QgYW5kIHByaW50IHRoZSBt
ZXNzYWdlIGluc2lkZSBpdC4KK2NsYXNzIEdURVNUX0FQSV8gR29vZ2xlVGVzdEZhaWx1cmVFeGNl
cHRpb24gOiBwdWJsaWMgOjpzdGQ6OnJ1bnRpbWVfZXJyb3IgeworIHB1YmxpYzoKKyAgZXhwbGlj
aXQgR29vZ2xlVGVzdEZhaWx1cmVFeGNlcHRpb24oY29uc3QgVGVzdFBhcnRSZXN1bHQmIGZhaWx1
cmUpOworfTsKKworI2VuZGlmICAvLyBHVEVTVF9IQVNfRVhDRVBUSU9OUworCisvLyBBIGhlbHBl
ciBjbGFzcyBmb3IgY3JlYXRpbmcgc2NvcGVkIHRyYWNlcyBpbiB1c2VyIHByb2dyYW1zLgorY2xh
c3MgR1RFU1RfQVBJXyBTY29wZWRUcmFjZSB7CisgcHVibGljOgorICAvLyBUaGUgYyd0b3IgcHVz
aGVzIHRoZSBnaXZlbiBzb3VyY2UgZmlsZSBsb2NhdGlvbiBhbmQgbWVzc2FnZSBvbnRvCisgIC8v
IGEgdHJhY2Ugc3RhY2sgbWFpbnRhaW5lZCBieSBHb29nbGUgVGVzdC4KKyAgU2NvcGVkVHJhY2Uo
Y29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IE1lc3NhZ2UmIG1lc3NhZ2UpOworCisg
IC8vIFRoZSBkJ3RvciBwb3BzIHRoZSBpbmZvIHB1c2hlZCBieSB0aGUgYyd0b3IuCisgIC8vCisg
IC8vIE5vdGUgdGhhdCB0aGUgZCd0b3IgaXMgbm90IHZpcnR1YWwgaW4gb3JkZXIgdG8gYmUgZWZm
aWNpZW50LgorICAvLyBEb24ndCBpbmhlcml0IGZyb20gU2NvcGVkVHJhY2UhCisgIH5TY29wZWRU
cmFjZSgpOworCisgcHJpdmF0ZToKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhT
Y29wZWRUcmFjZSk7Cit9IEdURVNUX0FUVFJJQlVURV9VTlVTRURfOyAgLy8gQSBTY29wZWRUcmFj
ZSBvYmplY3QgZG9lcyBpdHMgam9iIGluIGl0cworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGMndG9yIGFuZCBkJ3Rvci4gIFRoZXJlZm9yZSBpdCBkb2Vzbid0CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gbmVlZCB0byBiZSB1c2VkIG90aGVyd2lzZS4KKworbmFtZXNwYWNl
IGVkaXRfZGlzdGFuY2UgeworLy8gUmV0dXJucyB0aGUgb3B0aW1hbCBlZGl0cyB0byBnbyBmcm9t
ICdsZWZ0JyB0byAncmlnaHQnLgorLy8gQWxsIGVkaXRzIGNvc3QgdGhlIHNhbWUsIHdpdGggcmVw
bGFjZSBoYXZpbmcgbG93ZXIgcHJpb3JpdHkgdGhhbgorLy8gYWRkL3JlbW92ZS4KKy8vIFNpbXBs
ZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgV2FnbmVy4oCTRmlzY2hlciBhbGdvcml0aG0uCisvLyBT
ZWUgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XYWduZXItRmlzY2hlcl9hbGdvcml0aG0K
K2VudW0gRWRpdFR5cGUgeyBrTWF0Y2gsIGtBZGQsIGtSZW1vdmUsIGtSZXBsYWNlIH07CitHVEVT
VF9BUElfIHN0ZDo6dmVjdG9yPEVkaXRUeXBlPiBDYWxjdWxhdGVPcHRpbWFsRWRpdHMoCisgICAg
Y29uc3Qgc3RkOjp2ZWN0b3I8c2l6ZV90PiYgbGVmdCwgY29uc3Qgc3RkOjp2ZWN0b3I8c2l6ZV90
PiYgcmlnaHQpOworCisvLyBTYW1lIGFzIGFib3ZlLCBidXQgdGhlIGlucHV0IGlzIHJlcHJlc2Vu
dGVkIGFzIHN0cmluZ3MuCitHVEVTVF9BUElfIHN0ZDo6dmVjdG9yPEVkaXRUeXBlPiBDYWxjdWxh
dGVPcHRpbWFsRWRpdHMoCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBsZWZ0
LAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgcmlnaHQpOworCisvLyBDcmVh
dGUgYSBkaWZmIG9mIHRoZSBpbnB1dCBzdHJpbmdzIGluIFVuaWZpZWQgZGlmZiBmb3JtYXQuCitH
VEVTVF9BUElfIHN0ZDo6c3RyaW5nIENyZWF0ZVVuaWZpZWREaWZmKGNvbnN0IHN0ZDo6dmVjdG9y
PHN0ZDo6c3RyaW5nPiYgbGVmdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiByaWdodCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGNvbnRleHQgPSAyKTsKKworfSAg
Ly8gbmFtZXNwYWNlIGVkaXRfZGlzdGFuY2UKKworLy8gQ2FsY3VsYXRlIHRoZSBkaWZmIGJldHdl
ZW4gJ2xlZnQnIGFuZCAncmlnaHQnIGFuZCByZXR1cm4gaXQgaW4gdW5pZmllZCBkaWZmCisvLyBm
b3JtYXQuCisvLyBJZiBub3QgbnVsbCwgc3RvcmVzIGluICd0b3RhbF9saW5lX2NvdW50JyB0aGUg
dG90YWwgbnVtYmVyIG9mIGxpbmVzIGZvdW5kCisvLyBpbiBsZWZ0ICsgcmlnaHQuCitHVEVTVF9B
UElfIHN0ZDo6c3RyaW5nIERpZmZTdHJpbmdzKGNvbnN0IHN0ZDo6c3RyaW5nJiBsZWZ0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcmlnaHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCogdG90YWxfbGluZV9j
b3VudCk7CisKKy8vIENvbnN0cnVjdHMgYW5kIHJldHVybnMgdGhlIG1lc3NhZ2UgZm9yIGFuIGVx
dWFsaXR5IGFzc2VydGlvbgorLy8gKGUuZy4gQVNTRVJUX0VRLCBFWFBFQ1RfU1RSRVEsIGV0Yykg
ZmFpbHVyZS4KKy8vCisvLyBUaGUgZmlyc3QgZm91ciBwYXJhbWV0ZXJzIGFyZSB0aGUgZXhwcmVz
c2lvbnMgdXNlZCBpbiB0aGUgYXNzZXJ0aW9uCisvLyBhbmQgdGhlaXIgdmFsdWVzLCBhcyBzdHJp
bmdzLiAgRm9yIGV4YW1wbGUsIGZvciBBU1NFUlRfRVEoZm9vLCBiYXIpCisvLyB3aGVyZSBmb28g
aXMgNSBhbmQgYmFyIGlzIDYsIHdlIGhhdmU6CisvLworLy8gICBleHBlY3RlZF9leHByZXNzaW9u
OiAiZm9vIgorLy8gICBhY3R1YWxfZXhwcmVzc2lvbjogICAiYmFyIgorLy8gICBleHBlY3RlZF92
YWx1ZTogICAgICAiNSIKKy8vICAgYWN0dWFsX3ZhbHVlOiAgICAgICAgIjYiCisvLworLy8gVGhl
IGlnbm9yaW5nX2Nhc2UgcGFyYW1ldGVyIGlzIHRydWUgaWZmIHRoZSBhc3NlcnRpb24gaXMgYQor
Ly8gKl9TVFJDQVNFRVEqLiAgV2hlbiBpdCdzIHRydWUsIHRoZSBzdHJpbmcgIiAoaWdub3Jpbmcg
Y2FzZSkiIHdpbGwKKy8vIGJlIGluc2VydGVkIGludG8gdGhlIG1lc3NhZ2UuCitHVEVTVF9BUElf
IEFzc2VydGlvblJlc3VsdCBFcUZhaWx1cmUoY29uc3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1
YWxfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBzdGQ6OnN0cmluZyYgZXhwZWN0ZWRfdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGFjdHVhbF92YWx1ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlnbm9yaW5nX2Nhc2UpOworCisvLyBDb25z
dHJ1Y3RzIGEgZmFpbHVyZSBtZXNzYWdlIGZvciBCb29sZWFuIGFzc2VydGlvbnMgc3VjaCBhcyBF
WFBFQ1RfVFJVRS4KK0dURVNUX0FQSV8gc3RkOjpzdHJpbmcgR2V0Qm9vbEFzc2VydGlvbkZhaWx1
cmVNZXNzYWdlKAorICAgIGNvbnN0IEFzc2VydGlvblJlc3VsdCYgYXNzZXJ0aW9uX3Jlc3VsdCwK
KyAgICBjb25zdCBjaGFyKiBleHByZXNzaW9uX3RleHQsCisgICAgY29uc3QgY2hhciogYWN0dWFs
X3ByZWRpY2F0ZV92YWx1ZSwKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZF9wcmVkaWNhdGVfdmFs
dWUpOworCisvLyBUaGlzIHRlbXBsYXRlIGNsYXNzIHJlcHJlc2VudHMgYW4gSUVFRSBmbG9hdGlu
Zy1wb2ludCBudW1iZXIKKy8vIChlaXRoZXIgc2luZ2xlLXByZWNpc2lvbiBvciBkb3VibGUtcHJl
Y2lzaW9uLCBkZXBlbmRpbmcgb24gdGhlCisvLyB0ZW1wbGF0ZSBwYXJhbWV0ZXJzKS4KKy8vCisv
LyBUaGUgcHVycG9zZSBvZiB0aGlzIGNsYXNzIGlzIHRvIGRvIG1vcmUgc29waGlzdGljYXRlZCBu
dW1iZXIKKy8vIGNvbXBhcmlzb24uICAoRHVlIHRvIHJvdW5kLW9mZiBlcnJvciwgZXRjLCBpdCdz
IHZlcnkgdW5saWtlbHkgdGhhdAorLy8gdHdvIGZsb2F0aW5nLXBvaW50cyB3aWxsIGJlIGVxdWFs
IGV4YWN0bHkuICBIZW5jZSBhIG5haXZlCisvLyBjb21wYXJpc29uIGJ5IHRoZSA9PSBvcGVyYXRp
b24gb2Z0ZW4gZG9lc24ndCB3b3JrLikKKy8vCisvLyBGb3JtYXQgb2YgSUVFRSBmbG9hdGluZy1w
b2ludDoKKy8vCisvLyAgIFRoZSBtb3N0LXNpZ25pZmljYW50IGJpdCBiZWluZyB0aGUgbGVmdG1v
c3QsIGFuIElFRUUKKy8vICAgZmxvYXRpbmctcG9pbnQgbG9va3MgbGlrZQorLy8KKy8vICAgICBz
aWduX2JpdCBleHBvbmVudF9iaXRzIGZyYWN0aW9uX2JpdHMKKy8vCisvLyAgIEhlcmUsIHNpZ25f
Yml0IGlzIGEgc2luZ2xlIGJpdCB0aGF0IGRlc2lnbmF0ZXMgdGhlIHNpZ24gb2YgdGhlCisvLyAg
IG51bWJlci4KKy8vCisvLyAgIEZvciBmbG9hdCwgdGhlcmUgYXJlIDggZXhwb25lbnQgYml0cyBh
bmQgMjMgZnJhY3Rpb24gYml0cy4KKy8vCisvLyAgIEZvciBkb3VibGUsIHRoZXJlIGFyZSAxMSBl
eHBvbmVudCBiaXRzIGFuZCA1MiBmcmFjdGlvbiBiaXRzLgorLy8KKy8vICAgTW9yZSBkZXRhaWxz
IGNhbiBiZSBmb3VuZCBhdAorLy8gICBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lFRUVf
ZmxvYXRpbmctcG9pbnRfc3RhbmRhcmQuCisvLworLy8gVGVtcGxhdGUgcGFyYW1ldGVyOgorLy8K
Ky8vICAgUmF3VHlwZTogdGhlIHJhdyBmbG9hdGluZy1wb2ludCB0eXBlIChlaXRoZXIgZmxvYXQg
b3IgZG91YmxlKQordGVtcGxhdGUgPHR5cGVuYW1lIFJhd1R5cGU+CitjbGFzcyBGbG9hdGluZ1Bv
aW50IHsKKyBwdWJsaWM6CisgIC8vIERlZmluZXMgdGhlIHVuc2lnbmVkIGludGVnZXIgdHlwZSB0
aGF0IGhhcyB0aGUgc2FtZSBzaXplIGFzIHRoZQorICAvLyBmbG9hdGluZyBwb2ludCBudW1iZXIu
CisgIHR5cGVkZWYgdHlwZW5hbWUgVHlwZVdpdGhTaXplPHNpemVvZihSYXdUeXBlKT46OlVJbnQg
Qml0czsKKworICAvLyBDb25zdGFudHMuCisKKyAgLy8gIyBvZiBiaXRzIGluIGEgbnVtYmVyLgor
ICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtCaXRDb3VudCA9IDgqc2l6ZW9mKFJhd1R5cGUpOworCisg
IC8vICMgb2YgZnJhY3Rpb24gYml0cyBpbiBhIG51bWJlci4KKyAgc3RhdGljIGNvbnN0IHNpemVf
dCBrRnJhY3Rpb25CaXRDb3VudCA9CisgICAgc3RkOjpudW1lcmljX2xpbWl0czxSYXdUeXBlPjo6
ZGlnaXRzIC0gMTsKKworICAvLyAjIG9mIGV4cG9uZW50IGJpdHMgaW4gYSBudW1iZXIuCisgIHN0
YXRpYyBjb25zdCBzaXplX3Qga0V4cG9uZW50Qml0Q291bnQgPSBrQml0Q291bnQgLSAxIC0ga0Zy
YWN0aW9uQml0Q291bnQ7CisKKyAgLy8gVGhlIG1hc2sgZm9yIHRoZSBzaWduIGJpdC4KKyAgc3Rh
dGljIGNvbnN0IEJpdHMga1NpZ25CaXRNYXNrID0gc3RhdGljX2Nhc3Q8Qml0cz4oMSkgPDwgKGtC
aXRDb3VudCAtIDEpOworCisgIC8vIFRoZSBtYXNrIGZvciB0aGUgZnJhY3Rpb24gYml0cy4KKyAg
c3RhdGljIGNvbnN0IEJpdHMga0ZyYWN0aW9uQml0TWFzayA9CisgICAgfnN0YXRpY19jYXN0PEJp
dHM+KDApID4+IChrRXhwb25lbnRCaXRDb3VudCArIDEpOworCisgIC8vIFRoZSBtYXNrIGZvciB0
aGUgZXhwb25lbnQgYml0cy4KKyAgc3RhdGljIGNvbnN0IEJpdHMga0V4cG9uZW50Qml0TWFzayA9
IH4oa1NpZ25CaXRNYXNrIHwga0ZyYWN0aW9uQml0TWFzayk7CisKKyAgLy8gSG93IG1hbnkgVUxQ
J3MgKFVuaXRzIGluIHRoZSBMYXN0IFBsYWNlKSB3ZSB3YW50IHRvIHRvbGVyYXRlIHdoZW4KKyAg
Ly8gY29tcGFyaW5nIHR3byBudW1iZXJzLiAgVGhlIGxhcmdlciB0aGUgdmFsdWUsIHRoZSBtb3Jl
IGVycm9yIHdlCisgIC8vIGFsbG93LiAgQSAwIHZhbHVlIG1lYW5zIHRoYXQgdHdvIG51bWJlcnMg
bXVzdCBiZSBleGFjdGx5IHRoZSBzYW1lCisgIC8vIHRvIGJlIGNvbnNpZGVyZWQgZXF1YWwuCisg
IC8vCisgIC8vIFRoZSBtYXhpbXVtIGVycm9yIG9mIGEgc2luZ2xlIGZsb2F0aW5nLXBvaW50IG9w
ZXJhdGlvbiBpcyAwLjUKKyAgLy8gdW5pdHMgaW4gdGhlIGxhc3QgcGxhY2UuICBPbiBJbnRlbCBD
UFUncywgYWxsIGZsb2F0aW5nLXBvaW50CisgIC8vIGNhbGN1bGF0aW9ucyBhcmUgZG9uZSB3aXRo
IDgwLWJpdCBwcmVjaXNpb24sIHdoaWxlIGRvdWJsZSBoYXMgNjQKKyAgLy8gYml0cy4gIFRoZXJl
Zm9yZSwgNCBzaG91bGQgYmUgZW5vdWdoIGZvciBvcmRpbmFyeSB1c2UuCisgIC8vCisgIC8vIFNl
ZSB0aGUgZm9sbG93aW5nIGFydGljbGUgZm9yIG1vcmUgZGV0YWlscyBvbiBVTFA6CisgIC8vIGh0
dHA6Ly9yYW5kb21hc2NpaS53b3JkcHJlc3MuY29tLzIwMTIvMDIvMjUvY29tcGFyaW5nLWZsb2F0
aW5nLXBvaW50LW51bWJlcnMtMjAxMi1lZGl0aW9uLworICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtN
YXhVbHBzID0gNDsKKworICAvLyBDb25zdHJ1Y3RzIGEgRmxvYXRpbmdQb2ludCBmcm9tIGEgcmF3
IGZsb2F0aW5nLXBvaW50IG51bWJlci4KKyAgLy8KKyAgLy8gT24gYW4gSW50ZWwgQ1BVLCBwYXNz
aW5nIGEgbm9uLW5vcm1hbGl6ZWQgTkFOIChOb3QgYSBOdW1iZXIpCisgIC8vIGFyb3VuZCBtYXkg
Y2hhbmdlIGl0cyBiaXRzLCBhbHRob3VnaCB0aGUgbmV3IHZhbHVlIGlzIGd1YXJhbnRlZWQKKyAg
Ly8gdG8gYmUgYWxzbyBhIE5BTi4gIFRoZXJlZm9yZSwgZG9uJ3QgZXhwZWN0IHRoaXMgY29uc3Ry
dWN0b3IgdG8KKyAgLy8gcHJlc2VydmUgdGhlIGJpdHMgaW4geCB3aGVuIHggaXMgYSBOQU4uCisg
IGV4cGxpY2l0IEZsb2F0aW5nUG9pbnQoY29uc3QgUmF3VHlwZSYgeCkgeyB1Xy52YWx1ZV8gPSB4
OyB9CisKKyAgLy8gU3RhdGljIG1ldGhvZHMKKworICAvLyBSZWludGVycHJldHMgYSBiaXQgcGF0
dGVybiBhcyBhIGZsb2F0aW5nLXBvaW50IG51bWJlci4KKyAgLy8KKyAgLy8gVGhpcyBmdW5jdGlv
biBpcyBuZWVkZWQgdG8gdGVzdCB0aGUgQWxtb3N0RXF1YWxzKCkgbWV0aG9kLgorICBzdGF0aWMg
UmF3VHlwZSBSZWludGVycHJldEJpdHMoY29uc3QgQml0cyBiaXRzKSB7CisgICAgRmxvYXRpbmdQ
b2ludCBmcCgwKTsKKyAgICBmcC51Xy5iaXRzXyA9IGJpdHM7CisgICAgcmV0dXJuIGZwLnVfLnZh
bHVlXzsKKyAgfQorCisgIC8vIFJldHVybnMgdGhlIGZsb2F0aW5nLXBvaW50IG51bWJlciB0aGF0
IHJlcHJlc2VudCBwb3NpdGl2ZSBpbmZpbml0eS4KKyAgc3RhdGljIFJhd1R5cGUgSW5maW5pdHko
KSB7CisgICAgcmV0dXJuIFJlaW50ZXJwcmV0Qml0cyhrRXhwb25lbnRCaXRNYXNrKTsKKyAgfQor
CisgIC8vIFJldHVybnMgdGhlIG1heGltdW0gcmVwcmVzZW50YWJsZSBmaW5pdGUgZmxvYXRpbmct
cG9pbnQgbnVtYmVyLgorICBzdGF0aWMgUmF3VHlwZSBNYXgoKTsKKworICAvLyBOb24tc3RhdGlj
IG1ldGhvZHMKKworICAvLyBSZXR1cm5zIHRoZSBiaXRzIHRoYXQgcmVwcmVzZW50cyB0aGlzIG51
bWJlci4KKyAgY29uc3QgQml0cyAmYml0cygpIGNvbnN0IHsgcmV0dXJuIHVfLmJpdHNfOyB9CisK
KyAgLy8gUmV0dXJucyB0aGUgZXhwb25lbnQgYml0cyBvZiB0aGlzIG51bWJlci4KKyAgQml0cyBl
eHBvbmVudF9iaXRzKCkgY29uc3QgeyByZXR1cm4ga0V4cG9uZW50Qml0TWFzayAmIHVfLmJpdHNf
OyB9CisKKyAgLy8gUmV0dXJucyB0aGUgZnJhY3Rpb24gYml0cyBvZiB0aGlzIG51bWJlci4KKyAg
Qml0cyBmcmFjdGlvbl9iaXRzKCkgY29uc3QgeyByZXR1cm4ga0ZyYWN0aW9uQml0TWFzayAmIHVf
LmJpdHNfOyB9CisKKyAgLy8gUmV0dXJucyB0aGUgc2lnbiBiaXQgb2YgdGhpcyBudW1iZXIuCisg
IEJpdHMgc2lnbl9iaXQoKSBjb25zdCB7IHJldHVybiBrU2lnbkJpdE1hc2sgJiB1Xy5iaXRzXzsg
fQorCisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhpcyBpcyBOQU4gKG5vdCBhIG51bWJlcikuCisg
IGJvb2wgaXNfbmFuKCkgY29uc3QgeworICAgIC8vIEl0J3MgYSBOQU4gaWYgdGhlIGV4cG9uZW50
IGJpdHMgYXJlIGFsbCBvbmVzIGFuZCB0aGUgZnJhY3Rpb24KKyAgICAvLyBiaXRzIGFyZSBub3Qg
ZW50aXJlbHkgemVyb3MuCisgICAgcmV0dXJuIChleHBvbmVudF9iaXRzKCkgPT0ga0V4cG9uZW50
Qml0TWFzaykgJiYgKGZyYWN0aW9uX2JpdHMoKSAhPSAwKTsKKyAgfQorCisgIC8vIFJldHVybnMg
dHJ1ZSBpZmYgdGhpcyBudW1iZXIgaXMgYXQgbW9zdCBrTWF4VWxwcyBVTFAncyBhd2F5IGZyb20K
KyAgLy8gcmhzLiAgSW4gcGFydGljdWxhciwgdGhpcyBmdW5jdGlvbjoKKyAgLy8KKyAgLy8gICAt
IHJldHVybnMgZmFsc2UgaWYgZWl0aGVyIG51bWJlciBpcyAob3IgYm90aCBhcmUpIE5BTi4KKyAg
Ly8gICAtIHRyZWF0cyByZWFsbHkgbGFyZ2UgbnVtYmVycyBhcyBhbG1vc3QgZXF1YWwgdG8gaW5m
aW5pdHkuCisgIC8vICAgLSB0aGlua3MgKzAuMCBhbmQgLTAuMCBhcmUgMCBETFAncyBhcGFydC4K
KyAgYm9vbCBBbG1vc3RFcXVhbHMoY29uc3QgRmxvYXRpbmdQb2ludCYgcmhzKSBjb25zdCB7Cisg
ICAgLy8gVGhlIElFRUUgc3RhbmRhcmQgc2F5cyB0aGF0IGFueSBjb21wYXJpc29uIG9wZXJhdGlv
biBpbnZvbHZpbmcKKyAgICAvLyBhIE5BTiBtdXN0IHJldHVybiBmYWxzZS4KKyAgICBpZiAoaXNf
bmFuKCkgfHwgcmhzLmlzX25hbigpKSByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gRGlzdGFu
Y2VCZXR3ZWVuU2lnbkFuZE1hZ25pdHVkZU51bWJlcnModV8uYml0c18sIHJocy51Xy5iaXRzXykK
KyAgICAgICAgPD0ga01heFVscHM7CisgIH0KKworIHByaXZhdGU6CisgIC8vIFRoZSBkYXRhIHR5
cGUgdXNlZCB0byBzdG9yZSB0aGUgYWN0dWFsIGZsb2F0aW5nLXBvaW50IG51bWJlci4KKyAgdW5p
b24gRmxvYXRpbmdQb2ludFVuaW9uIHsKKyAgICBSYXdUeXBlIHZhbHVlXzsgIC8vIFRoZSByYXcg
ZmxvYXRpbmctcG9pbnQgbnVtYmVyLgorICAgIEJpdHMgYml0c187ICAgICAgLy8gVGhlIGJpdHMg
dGhhdCByZXByZXNlbnQgdGhlIG51bWJlci4KKyAgfTsKKworICAvLyBDb252ZXJ0cyBhbiBpbnRl
Z2VyIGZyb20gdGhlIHNpZ24tYW5kLW1hZ25pdHVkZSByZXByZXNlbnRhdGlvbiB0bworICAvLyB0
aGUgYmlhc2VkIHJlcHJlc2VudGF0aW9uLiAgTW9yZSBwcmVjaXNlbHksIGxldCBOIGJlIDIgdG8g
dGhlCisgIC8vIHBvd2VyIG9mIChrQml0Q291bnQgLSAxKSwgYW4gaW50ZWdlciB4IGlzIHJlcHJl
c2VudGVkIGJ5IHRoZQorICAvLyB1bnNpZ25lZCBudW1iZXIgeCArIE4uCisgIC8vCisgIC8vIEZv
ciBpbnN0YW5jZSwKKyAgLy8KKyAgLy8gICAtTiArIDEgKHRoZSBtb3N0IG5lZ2F0aXZlIG51bWJl
ciByZXByZXNlbnRhYmxlIHVzaW5nCisgIC8vICAgICAgICAgIHNpZ24tYW5kLW1hZ25pdHVkZSkg
aXMgcmVwcmVzZW50ZWQgYnkgMTsKKyAgLy8gICAwICAgICAgaXMgcmVwcmVzZW50ZWQgYnkgTjsg
YW5kCisgIC8vICAgTiAtIDEgICh0aGUgYmlnZ2VzdCBudW1iZXIgcmVwcmVzZW50YWJsZSB1c2lu
ZworICAvLyAgICAgICAgICBzaWduLWFuZC1tYWduaXR1ZGUpIGlzIHJlcHJlc2VudGVkIGJ5IDJO
IC0gMS4KKyAgLy8KKyAgLy8gUmVhZCBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NpZ25l
ZF9udW1iZXJfcmVwcmVzZW50YXRpb25zCisgIC8vIGZvciBtb3JlIGRldGFpbHMgb24gc2lnbmVk
IG51bWJlciByZXByZXNlbnRhdGlvbnMuCisgIHN0YXRpYyBCaXRzIFNpZ25BbmRNYWduaXR1ZGVU
b0JpYXNlZChjb25zdCBCaXRzICZzYW0pIHsKKyAgICBpZiAoa1NpZ25CaXRNYXNrICYgc2FtKSB7
CisgICAgICAvLyBzYW0gcmVwcmVzZW50cyBhIG5lZ2F0aXZlIG51bWJlci4KKyAgICAgIHJldHVy
biB+c2FtICsgMTsKKyAgICB9IGVsc2UgeworICAgICAgLy8gc2FtIHJlcHJlc2VudHMgYSBwb3Np
dGl2ZSBudW1iZXIuCisgICAgICByZXR1cm4ga1NpZ25CaXRNYXNrIHwgc2FtOworICAgIH0KKyAg
fQorCisgIC8vIEdpdmVuIHR3byBudW1iZXJzIGluIHRoZSBzaWduLWFuZC1tYWduaXR1ZGUgcmVw
cmVzZW50YXRpb24sCisgIC8vIHJldHVybnMgdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlbSBhcyBh
biB1bnNpZ25lZCBudW1iZXIuCisgIHN0YXRpYyBCaXRzIERpc3RhbmNlQmV0d2VlblNpZ25BbmRN
YWduaXR1ZGVOdW1iZXJzKGNvbnN0IEJpdHMgJnNhbTEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJpdHMgJnNhbTIpIHsKKyAgICBj
b25zdCBCaXRzIGJpYXNlZDEgPSBTaWduQW5kTWFnbml0dWRlVG9CaWFzZWQoc2FtMSk7CisgICAg
Y29uc3QgQml0cyBiaWFzZWQyID0gU2lnbkFuZE1hZ25pdHVkZVRvQmlhc2VkKHNhbTIpOworICAg
IHJldHVybiAoYmlhc2VkMSA+PSBiaWFzZWQyKSA/IChiaWFzZWQxIC0gYmlhc2VkMikgOiAoYmlh
c2VkMiAtIGJpYXNlZDEpOworICB9CisKKyAgRmxvYXRpbmdQb2ludFVuaW9uIHVfOworfTsKKwor
Ly8gV2UgY2Fubm90IHVzZSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgoKSBhcyBpdCBjbGFz
aGVzIHdpdGggdGhlIG1heCgpCisvLyBtYWNybyBkZWZpbmVkIGJ5IDx3aW5kb3dzLmg+LgordGVt
cGxhdGUgPD4KK2lubGluZSBmbG9hdCBGbG9hdGluZ1BvaW50PGZsb2F0Pjo6TWF4KCkgeyByZXR1
cm4gRkxUX01BWDsgfQordGVtcGxhdGUgPD4KK2lubGluZSBkb3VibGUgRmxvYXRpbmdQb2ludDxk
b3VibGU+OjpNYXgoKSB7IHJldHVybiBEQkxfTUFYOyB9CisKKy8vIFR5cGVkZWZzIHRoZSBpbnN0
YW5jZXMgb2YgdGhlIEZsb2F0aW5nUG9pbnQgdGVtcGxhdGUgY2xhc3MgdGhhdCB3ZQorLy8gY2Fy
ZSB0byB1c2UuCit0eXBlZGVmIEZsb2F0aW5nUG9pbnQ8ZmxvYXQ+IEZsb2F0OwordHlwZWRlZiBG
bG9hdGluZ1BvaW50PGRvdWJsZT4gRG91YmxlOworCisvLyBJbiBvcmRlciB0byBjYXRjaCB0aGUg
bWlzdGFrZSBvZiBwdXR0aW5nIHRlc3RzIHRoYXQgdXNlIGRpZmZlcmVudAorLy8gdGVzdCBmaXh0
dXJlIGNsYXNzZXMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlLCB3ZSBuZWVkIHRvIGFzc2lnbgorLy8g
dW5pcXVlIElEcyB0byBmaXh0dXJlIGNsYXNzZXMgYW5kIGNvbXBhcmUgdGhlbS4gIFRoZSBUeXBl
SWQgdHlwZSBpcworLy8gdXNlZCB0byBob2xkIHN1Y2ggSURzLiAgVGhlIHVzZXIgc2hvdWxkIHRy
ZWF0IFR5cGVJZCBhcyBhbiBvcGFxdWUKKy8vIHR5cGU6IHRoZSBvbmx5IG9wZXJhdGlvbiBhbGxv
d2VkIG9uIFR5cGVJZCB2YWx1ZXMgaXMgdG8gY29tcGFyZQorLy8gdGhlbSBmb3IgZXF1YWxpdHkg
dXNpbmcgdGhlID09IG9wZXJhdG9yLgordHlwZWRlZiBjb25zdCB2b2lkKiBUeXBlSWQ7CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVHlwZUlkSGVscGVyIHsKKyBwdWJsaWM6CisgIC8v
IGR1bW15XyBtdXN0IG5vdCBoYXZlIGEgY29uc3QgdHlwZS4gIE90aGVyd2lzZSBhbiBvdmVybHkg
ZWFnZXIKKyAgLy8gY29tcGlsZXIgKGUuZy4gTVNWQyA3LjEgJiA4LjApIG1heSB0cnkgdG8gbWVy
Z2UKKyAgLy8gVHlwZUlkSGVscGVyPFQ+OjpkdW1teV8gZm9yIGRpZmZlcmVudCBUcyBhcyBhbiAi
b3B0aW1pemF0aW9uIi4KKyAgc3RhdGljIGJvb2wgZHVtbXlfOworfTsKKwordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Citib29sIFR5cGVJZEhlbHBlcjxUPjo6ZHVtbXlfID0gZmFsc2U7CisKKy8vIEdl
dFR5cGVJZDxUPigpIHJldHVybnMgdGhlIElEIG9mIHR5cGUgVC4gIERpZmZlcmVudCB2YWx1ZXMg
d2lsbCBiZQorLy8gcmV0dXJuZWQgZm9yIGRpZmZlcmVudCB0eXBlcy4gIENhbGxpbmcgdGhlIGZ1
bmN0aW9uIHR3aWNlIHdpdGggdGhlCisvLyBzYW1lIHR5cGUgYXJndW1lbnQgaXMgZ3VhcmFudGVl
ZCB0byByZXR1cm4gdGhlIHNhbWUgSUQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK1R5cGVJZCBH
ZXRUeXBlSWQoKSB7CisgIC8vIFRoZSBjb21waWxlciBpcyByZXF1aXJlZCB0byBhbGxvY2F0ZSBh
IGRpZmZlcmVudAorICAvLyBUeXBlSWRIZWxwZXI8VD46OmR1bW15XyB2YXJpYWJsZSBmb3IgZWFj
aCBUIHVzZWQgdG8gaW5zdGFudGlhdGUKKyAgLy8gdGhlIHRlbXBsYXRlLiAgVGhlcmVmb3JlLCB0
aGUgYWRkcmVzcyBvZiBkdW1teV8gaXMgZ3VhcmFudGVlZCB0bworICAvLyBiZSB1bmlxdWUuCisg
IHJldHVybiAmKFR5cGVJZEhlbHBlcjxUPjo6ZHVtbXlfKTsKK30KKworLy8gUmV0dXJucyB0aGUg
dHlwZSBJRCBvZiA6OnRlc3Rpbmc6OlRlc3QuICBBbHdheXMgY2FsbCB0aGlzIGluc3RlYWQKKy8v
IG9mIEdldFR5cGVJZDwgOjp0ZXN0aW5nOjpUZXN0PigpIHRvIGdldCB0aGUgdHlwZSBJRCBvZgor
Ly8gOjp0ZXN0aW5nOjpUZXN0LCBhcyB0aGUgbGF0dGVyIG1heSBnaXZlIHRoZSB3cm9uZyByZXN1
bHQgZHVlIHRvIGEKKy8vIHN1c3BlY3RlZCBsaW5rZXIgYnVnIHdoZW4gY29tcGlsaW5nIEdvb2ds
ZSBUZXN0IGFzIGEgTWFjIE9TIFgKKy8vIGZyYW1ld29yay4KK0dURVNUX0FQSV8gVHlwZUlkIEdl
dFRlc3RUeXBlSWQoKTsKKworLy8gRGVmaW5lcyB0aGUgYWJzdHJhY3QgZmFjdG9yeSBpbnRlcmZh
Y2UgdGhhdCBjcmVhdGVzIGluc3RhbmNlcworLy8gb2YgYSBUZXN0IG9iamVjdC4KK2NsYXNzIFRl
c3RGYWN0b3J5QmFzZSB7CisgcHVibGljOgorICB2aXJ0dWFsIH5UZXN0RmFjdG9yeUJhc2UoKSB7
fQorCisgIC8vIENyZWF0ZXMgYSB0ZXN0IGluc3RhbmNlIHRvIHJ1bi4gVGhlIGluc3RhbmNlIGlz
IGJvdGggY3JlYXRlZCBhbmQgZGVzdHJveWVkCisgIC8vIHdpdGhpbiBUZXN0SW5mb0ltcGw6OlJ1
bigpCisgIHZpcnR1YWwgVGVzdCogQ3JlYXRlVGVzdCgpID0gMDsKKworIHByb3RlY3RlZDoKKyAg
VGVzdEZhY3RvcnlCYXNlKCkge30KKworIHByaXZhdGU6CisgIEdURVNUX0RJU0FMTE9XX0NPUFlf
QU5EX0FTU0lHTl8oVGVzdEZhY3RvcnlCYXNlKTsKK307CisKKy8vIFRoaXMgY2xhc3MgcHJvdmlk
ZXMgaW1wbGVtZW50YXRpb24gb2YgVGVhc3RGYWN0b3J5QmFzZSBpbnRlcmZhY2UuCisvLyBJdCBp
cyB1c2VkIGluIFRFU1QgYW5kIFRFU1RfRiBtYWNyb3MuCit0ZW1wbGF0ZSA8Y2xhc3MgVGVzdENs
YXNzPgorY2xhc3MgVGVzdEZhY3RvcnlJbXBsIDogcHVibGljIFRlc3RGYWN0b3J5QmFzZSB7Cisg
cHVibGljOgorICB2aXJ0dWFsIFRlc3QqIENyZWF0ZVRlc3QoKSB7IHJldHVybiBuZXcgVGVzdENs
YXNzOyB9Cit9OworCisjaWYgR1RFU1RfT1NfV0lORE9XUworCisvLyBQcmVkaWNhdGUtZm9ybWF0
dGVycyBmb3IgaW1wbGVtZW50aW5nIHRoZSBIUkVTVUxUIGNoZWNraW5nIG1hY3JvcworLy8ge0FT
U0VSVHxFWFBFQ1R9X0hSRVNVTFRfe1NVQ0NFRURFRHxGQUlMRUR9CisvLyBXZSBwYXNzIGEgbG9u
ZyBpbnN0ZWFkIG9mIEhSRVNVTFQgdG8gYXZvaWQgY2F1c2luZyBhbgorLy8gaW5jbHVkZSBkZXBl
bmRlbmN5IGZvciB0aGUgSFJFU1VMVCB0eXBlLgorR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQg
SXNIUkVTVUxUU3VjY2Vzcyhjb25zdCBjaGFyKiBleHByLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsb25nIGhyKTsgIC8vIE5PTElOVAorR1RFU1RfQVBJXyBB
c3NlcnRpb25SZXN1bHQgSXNIUkVTVUxURmFpbHVyZShjb25zdCBjaGFyKiBleHByLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGhyKTsgIC8vIE5PTElO
VAorCisjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKworLy8gVHlwZXMgb2YgU2V0VXBUZXN0
Q2FzZSgpIGFuZCBUZWFyRG93blRlc3RDYXNlKCkgZnVuY3Rpb25zLgordHlwZWRlZiB2b2lkICgq
U2V0VXBUZXN0Q2FzZUZ1bmMpKCk7Cit0eXBlZGVmIHZvaWQgKCpUZWFyRG93blRlc3RDYXNlRnVu
YykoKTsKKworc3RydWN0IENvZGVMb2NhdGlvbiB7CisgIENvZGVMb2NhdGlvbihjb25zdCBzdGQ6
OnN0cmluZyYgYV9maWxlLCBpbnQgYV9saW5lKQorICAgICAgOiBmaWxlKGFfZmlsZSksIGxpbmUo
YV9saW5lKSB7fQorCisgIHN0ZDo6c3RyaW5nIGZpbGU7CisgIGludCBsaW5lOworfTsKKworLy8g
Q3JlYXRlcyBhIG5ldyBUZXN0SW5mbyBvYmplY3QgYW5kIHJlZ2lzdGVycyBpdCB3aXRoIEdvb2ds
ZSBUZXN0OworLy8gcmV0dXJucyB0aGUgY3JlYXRlZCBvYmplY3QuCisvLworLy8gQXJndW1lbnRz
OgorLy8KKy8vICAgdGVzdF9jYXNlX25hbWU6ICAgbmFtZSBvZiB0aGUgdGVzdCBjYXNlCisvLyAg
IG5hbWU6ICAgICAgICAgICAgIG5hbWUgb2YgdGhlIHRlc3QKKy8vICAgdHlwZV9wYXJhbSAgICAg
ICAgdGhlIG5hbWUgb2YgdGhlIHRlc3QncyB0eXBlIHBhcmFtZXRlciwgb3IgTlVMTCBpZgorLy8g
ICAgICAgICAgICAgICAgICAgICB0aGlzIGlzIG5vdCBhIHR5cGVkIG9yIGEgdHlwZS1wYXJhbWV0
ZXJpemVkIHRlc3QuCisvLyAgIHZhbHVlX3BhcmFtICAgICAgIHRleHQgcmVwcmVzZW50YXRpb24g
b2YgdGhlIHRlc3QncyB2YWx1ZSBwYXJhbWV0ZXIsCisvLyAgICAgICAgICAgICAgICAgICAgIG9y
IE5VTEwgaWYgdGhpcyBpcyBub3QgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdC4KKy8vICAgY29k
ZV9sb2NhdGlvbjogICAgY29kZSBsb2NhdGlvbiB3aGVyZSB0aGUgdGVzdCBpcyBkZWZpbmVkCisv
LyAgIGZpeHR1cmVfY2xhc3NfaWQ6IElEIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MKKy8vICAg
c2V0X3VwX3RjOiAgICAgICAgcG9pbnRlciB0byB0aGUgZnVuY3Rpb24gdGhhdCBzZXRzIHVwIHRo
ZSB0ZXN0IGNhc2UKKy8vICAgdGVhcl9kb3duX3RjOiAgICAgcG9pbnRlciB0byB0aGUgZnVuY3Rp
b24gdGhhdCB0ZWFycyBkb3duIHRoZSB0ZXN0IGNhc2UKKy8vICAgZmFjdG9yeTogICAgICAgICAg
cG9pbnRlciB0byB0aGUgZmFjdG9yeSB0aGF0IGNyZWF0ZXMgYSB0ZXN0IG9iamVjdC4KKy8vICAg
ICAgICAgICAgICAgICAgICAgVGhlIG5ld2x5IGNyZWF0ZWQgVGVzdEluZm8gaW5zdGFuY2Ugd2ls
bCBhc3N1bWUKKy8vICAgICAgICAgICAgICAgICAgICAgb3duZXJzaGlwIG9mIHRoZSBmYWN0b3J5
IG9iamVjdC4KK0dURVNUX0FQSV8gVGVzdEluZm8qIE1ha2VBbmRSZWdpc3RlclRlc3RJbmZvKAor
ICAgIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lLAorICAgIGNvbnN0IGNoYXIqIG5hbWUsCisg
ICAgY29uc3QgY2hhciogdHlwZV9wYXJhbSwKKyAgICBjb25zdCBjaGFyKiB2YWx1ZV9wYXJhbSwK
KyAgICBDb2RlTG9jYXRpb24gY29kZV9sb2NhdGlvbiwKKyAgICBUeXBlSWQgZml4dHVyZV9jbGFz
c19pZCwKKyAgICBTZXRVcFRlc3RDYXNlRnVuYyBzZXRfdXBfdGMsCisgICAgVGVhckRvd25UZXN0
Q2FzZUZ1bmMgdGVhcl9kb3duX3RjLAorICAgIFRlc3RGYWN0b3J5QmFzZSogZmFjdG9yeSk7CisK
Ky8vIElmICpwc3RyIHN0YXJ0cyB3aXRoIHRoZSBnaXZlbiBwcmVmaXgsIG1vZGlmaWVzICpwc3Ry
IHRvIGJlIHJpZ2h0CisvLyBwYXN0IHRoZSBwcmVmaXggYW5kIHJldHVybnMgdHJ1ZTsgb3RoZXJ3
aXNlIGxlYXZlcyAqcHN0ciB1bmNoYW5nZWQKKy8vIGFuZCByZXR1cm5zIGZhbHNlLiAgTm9uZSBv
ZiBwc3RyLCAqcHN0ciwgYW5kIHByZWZpeCBjYW4gYmUgTlVMTC4KK0dURVNUX0FQSV8gYm9vbCBT
a2lwUHJlZml4KGNvbnN0IGNoYXIqIHByZWZpeCwgY29uc3QgY2hhcioqIHBzdHIpOworCisjaWYg
R1RFU1RfSEFTX1RZUEVEX1RFU1QgfHwgR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAorCisvLyBTdGF0
ZSBvZiB0aGUgZGVmaW5pdGlvbiBvZiBhIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0IGNhc2UuCitj
bGFzcyBHVEVTVF9BUElfIFR5cGVkVGVzdENhc2VQU3RhdGUgeworIHB1YmxpYzoKKyAgVHlwZWRU
ZXN0Q2FzZVBTdGF0ZSgpIDogcmVnaXN0ZXJlZF8oZmFsc2UpIHt9CisKKyAgLy8gQWRkcyB0aGUg
Z2l2ZW4gdGVzdCBuYW1lIHRvIGRlZmluZWRfdGVzdF9uYW1lc18gYW5kIHJldHVybiB0cnVlCisg
IC8vIGlmIHRoZSB0ZXN0IGNhc2UgaGFzbid0IGJlZW4gcmVnaXN0ZXJlZDsgb3RoZXJ3aXNlIGFi
b3J0cyB0aGUKKyAgLy8gcHJvZ3JhbS4KKyAgYm9vbCBBZGRUZXN0TmFtZShjb25zdCBjaGFyKiBm
aWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogY2FzZV9uYW1lLAorICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIHRlc3RfbmFtZSkgeworICAgIGlmIChyZWdpc3RlcmVkXykgeworICAgICAg
ZnByaW50ZihzdGRlcnIsICIlcyBUZXN0ICVzIG11c3QgYmUgZGVmaW5lZCBiZWZvcmUgIgorICAg
ICAgICAgICAgICAiUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoJXMsIC4uLikuXG4iLAorICAg
ICAgICAgICAgICBGb3JtYXRGaWxlTG9jYXRpb24oZmlsZSwgbGluZSkuY19zdHIoKSwgdGVzdF9u
YW1lLCBjYXNlX25hbWUpOworICAgICAgZmZsdXNoKHN0ZGVycik7CisgICAgICBwb3NpeDo6QWJv
cnQoKTsKKyAgICB9CisgICAgcmVnaXN0ZXJlZF90ZXN0c18uaW5zZXJ0KAorICAgICAgICA6OnN0
ZDo6bWFrZV9wYWlyKHRlc3RfbmFtZSwgQ29kZUxvY2F0aW9uKGZpbGUsIGxpbmUpKSk7CisgICAg
cmV0dXJuIHRydWU7CisgIH0KKworICBib29sIFRlc3RFeGlzdHMoY29uc3Qgc3RkOjpzdHJpbmcm
IHRlc3RfbmFtZSkgY29uc3QgeworICAgIHJldHVybiByZWdpc3RlcmVkX3Rlc3RzXy5jb3VudCh0
ZXN0X25hbWUpID4gMDsKKyAgfQorCisgIGNvbnN0IENvZGVMb2NhdGlvbiYgR2V0Q29kZUxvY2F0
aW9uKGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0X25hbWUpIGNvbnN0IHsKKyAgICBSZWdpc3RlcmVk
VGVzdHNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcmVnaXN0ZXJlZF90ZXN0c18uZmluZCh0ZXN0
X25hbWUpOworICAgIEdURVNUX0NIRUNLXyhpdCAhPSByZWdpc3RlcmVkX3Rlc3RzXy5lbmQoKSk7
CisgICAgcmV0dXJuIGl0LT5zZWNvbmQ7CisgIH0KKworICAvLyBWZXJpZmllcyB0aGF0IHJlZ2lz
dGVyZWRfdGVzdHMgbWF0Y2ggdGhlIHRlc3QgbmFtZXMgaW4KKyAgLy8gZGVmaW5lZF90ZXN0X25h
bWVzXzsgcmV0dXJucyByZWdpc3RlcmVkX3Rlc3RzIGlmIHN1Y2Nlc3NmdWwsIG9yCisgIC8vIGFi
b3J0cyB0aGUgcHJvZ3JhbSBvdGhlcndpc2UuCisgIGNvbnN0IGNoYXIqIFZlcmlmeVJlZ2lzdGVy
ZWRUZXN0TmFtZXMoCisgICAgICBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hh
ciogcmVnaXN0ZXJlZF90ZXN0cyk7CisKKyBwcml2YXRlOgorICB0eXBlZGVmIDo6c3RkOjptYXA8
c3RkOjpzdHJpbmcsIENvZGVMb2NhdGlvbj4gUmVnaXN0ZXJlZFRlc3RzTWFwOworCisgIGJvb2wg
cmVnaXN0ZXJlZF87CisgIFJlZ2lzdGVyZWRUZXN0c01hcCByZWdpc3RlcmVkX3Rlc3RzXzsKK307
CisKKy8vIFNraXBzIHRvIHRoZSBmaXJzdCBub24tc3BhY2UgY2hhciBhZnRlciB0aGUgZmlyc3Qg
Y29tbWEgaW4gJ3N0cic7CisvLyByZXR1cm5zIE5VTEwgaWYgbm8gY29tbWEgaXMgZm91bmQgaW4g
J3N0cicuCitpbmxpbmUgY29uc3QgY2hhciogU2tpcENvbW1hKGNvbnN0IGNoYXIqIHN0cikgewor
ICBjb25zdCBjaGFyKiBjb21tYSA9IHN0cmNocihzdHIsICcsJyk7CisgIGlmIChjb21tYSA9PSBO
VUxMKSB7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KKyAgd2hpbGUgKElzU3BhY2UoKigrK2NvbW1h
KSkpIHt9CisgIHJldHVybiBjb21tYTsKK30KKworLy8gUmV0dXJucyB0aGUgcHJlZml4IG9mICdz
dHInIGJlZm9yZSB0aGUgZmlyc3QgY29tbWEgaW4gaXQ7IHJldHVybnMKKy8vIHRoZSBlbnRpcmUg
c3RyaW5nIGlmIGl0IGNvbnRhaW5zIG5vIGNvbW1hLgoraW5saW5lIHN0ZDo6c3RyaW5nIEdldFBy
ZWZpeFVudGlsQ29tbWEoY29uc3QgY2hhciogc3RyKSB7CisgIGNvbnN0IGNoYXIqIGNvbW1hID0g
c3RyY2hyKHN0ciwgJywnKTsKKyAgcmV0dXJuIGNvbW1hID09IE5VTEwgPyBzdHIgOiBzdGQ6OnN0
cmluZyhzdHIsIGNvbW1hKTsKK30KKworLy8gU3BsaXRzIGEgZ2l2ZW4gc3RyaW5nIG9uIGEgZ2l2
ZW4gZGVsaW1pdGVyLCBwb3B1bGF0aW5nIGEgZ2l2ZW4KKy8vIHZlY3RvciB3aXRoIHRoZSBmaWVs
ZHMuCit2b2lkIFNwbGl0U3RyaW5nKGNvbnN0IDo6c3RkOjpzdHJpbmcmIHN0ciwgY2hhciBkZWxp
bWl0ZXIsCisgICAgICAgICAgICAgICAgIDo6c3RkOjp2ZWN0b3I8IDo6c3RkOjpzdHJpbmc+KiBk
ZXN0KTsKKworLy8gVHlwZVBhcmFtZXRlcml6ZWRUZXN0PEZpeHR1cmUsIFRlc3RTZWwsIFR5cGVz
Pjo6UmVnaXN0ZXIoKQorLy8gcmVnaXN0ZXJzIGEgbGlzdCBvZiB0eXBlLXBhcmFtZXRlcml6ZWQg
dGVzdHMgd2l0aCBHb29nbGUgVGVzdC4gIFRoZQorLy8gcmV0dXJuIHZhbHVlIGlzIGluc2lnbmlm
aWNhbnQgLSB3ZSBqdXN0IG5lZWQgdG8gcmV0dXJuIHNvbWV0aGluZworLy8gc3VjaCB0aGF0IHdl
IGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24gaW4gYSBuYW1lc3BhY2Ugc2NvcGUuCisvLworLy8gSW1w
bGVtZW50YXRpb24gbm90ZTogVGhlIEdURVNUX1RFTVBMQVRFXyBtYWNybyBkZWNsYXJlcyBhIHRl
bXBsYXRlCisvLyB0ZW1wbGF0ZSBwYXJhbWV0ZXIuICBJdCdzIGRlZmluZWQgaW4gZ3Rlc3QtdHlw
ZS11dGlsLmguCit0ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIEZpeHR1cmUsIGNsYXNzIFRlc3RT
ZWwsIHR5cGVuYW1lIFR5cGVzPgorY2xhc3MgVHlwZVBhcmFtZXRlcml6ZWRUZXN0IHsKKyBwdWJs
aWM6CisgIC8vICdpbmRleCcgaXMgdGhlIGluZGV4IG9mIHRoZSB0ZXN0IGluIHRoZSB0eXBlIGxp
c3QgJ1R5cGVzJworICAvLyBzcGVjaWZpZWQgaW4gSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNF
X1AoUHJlZml4LCBUZXN0Q2FzZSwKKyAgLy8gVHlwZXMpLiAgVmFsaWQgdmFsdWVzIGZvciAnaW5k
ZXgnIGFyZSBbMCwgTiAtIDFdIHdoZXJlIE4gaXMgdGhlCisgIC8vIGxlbmd0aCBvZiBUeXBlcy4K
KyAgc3RhdGljIGJvb2wgUmVnaXN0ZXIoY29uc3QgY2hhciogcHJlZml4LAorICAgICAgICAgICAg
ICAgICAgICAgICBDb2RlTG9jYXRpb24gY29kZV9sb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogY2FzZV9uYW1lLCBjb25zdCBjaGFyKiB0ZXN0X25hbWVzLAorICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgaW5kZXgpIHsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIFR5
cGVzOjpIZWFkIFR5cGU7CisgICAgdHlwZWRlZiBGaXh0dXJlPFR5cGU+IEZpeHR1cmVDbGFzczsK
KyAgICB0eXBlZGVmIHR5cGVuYW1lIEdURVNUX0JJTkRfKFRlc3RTZWwsIFR5cGUpIFRlc3RDbGFz
czsKKworICAgIC8vIEZpcnN0LCByZWdpc3RlcnMgdGhlIGZpcnN0IHR5cGUtcGFyYW1ldGVyaXpl
ZCB0ZXN0IGluIHRoZSB0eXBlCisgICAgLy8gbGlzdC4KKyAgICBNYWtlQW5kUmVnaXN0ZXJUZXN0
SW5mbygKKyAgICAgICAgKHN0ZDo6c3RyaW5nKHByZWZpeCkgKyAocHJlZml4WzBdID09ICdcMCcg
PyAiIiA6ICIvIikgKyBjYXNlX25hbWUgKyAiLyIKKyAgICAgICAgICsgU3RyZWFtYWJsZVRvU3Ry
aW5nKGluZGV4KSkuY19zdHIoKSwKKyAgICAgICAgU3RyaXBUcmFpbGluZ1NwYWNlcyhHZXRQcmVm
aXhVbnRpbENvbW1hKHRlc3RfbmFtZXMpKS5jX3N0cigpLAorICAgICAgICBHZXRUeXBlTmFtZTxU
eXBlPigpLmNfc3RyKCksCisgICAgICAgIE5VTEwsICAvLyBObyB2YWx1ZSBwYXJhbWV0ZXIuCisg
ICAgICAgIGNvZGVfbG9jYXRpb24sCisgICAgICAgIEdldFR5cGVJZDxGaXh0dXJlQ2xhc3M+KCks
CisgICAgICAgIFRlc3RDbGFzczo6U2V0VXBUZXN0Q2FzZSwKKyAgICAgICAgVGVzdENsYXNzOjpU
ZWFyRG93blRlc3RDYXNlLAorICAgICAgICBuZXcgVGVzdEZhY3RvcnlJbXBsPFRlc3RDbGFzcz4p
OworCisgICAgLy8gTmV4dCwgcmVjdXJzZXMgKGF0IGNvbXBpbGUgdGltZSkgd2l0aCB0aGUgdGFp
bCBvZiB0aGUgdHlwZSBsaXN0LgorICAgIHJldHVybiBUeXBlUGFyYW1ldGVyaXplZFRlc3Q8Rml4
dHVyZSwgVGVzdFNlbCwgdHlwZW5hbWUgVHlwZXM6OlRhaWw+CisgICAgICAgIDo6UmVnaXN0ZXIo
cHJlZml4LCBjb2RlX2xvY2F0aW9uLCBjYXNlX25hbWUsIHRlc3RfbmFtZXMsIGluZGV4ICsgMSk7
CisgIH0KK307CisKKy8vIFRoZSBiYXNlIGNhc2UgZm9yIHRoZSBjb21waWxlIHRpbWUgcmVjdXJz
aW9uLgordGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBGaXh0dXJlLCBjbGFzcyBUZXN0U2VsPgor
Y2xhc3MgVHlwZVBhcmFtZXRlcml6ZWRUZXN0PEZpeHR1cmUsIFRlc3RTZWwsIFR5cGVzMD4gewor
IHB1YmxpYzoKKyAgc3RhdGljIGJvb2wgUmVnaXN0ZXIoY29uc3QgY2hhciogLypwcmVmaXgqLywg
Q29kZUxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAvKmNhc2Vf
bmFtZSovLCBjb25zdCBjaGFyKiAvKnRlc3RfbmFtZXMqLywKKyAgICAgICAgICAgICAgICAgICAg
ICAgaW50IC8qaW5kZXgqLykgeworICAgIHJldHVybiB0cnVlOworICB9Cit9OworCisvLyBUeXBl
UGFyYW1ldGVyaXplZFRlc3RDYXNlPEZpeHR1cmUsIFRlc3RzLCBUeXBlcz46OlJlZ2lzdGVyKCkK
Ky8vIHJlZ2lzdGVycyAqYWxsIGNvbWJpbmF0aW9ucyogb2YgJ1Rlc3RzJyBhbmQgJ1R5cGVzJyB3
aXRoIEdvb2dsZQorLy8gVGVzdC4gIFRoZSByZXR1cm4gdmFsdWUgaXMgaW5zaWduaWZpY2FudCAt
IHdlIGp1c3QgbmVlZCB0byByZXR1cm4KKy8vIHNvbWV0aGluZyBzdWNoIHRoYXQgd2UgY2FuIGNh
bGwgdGhpcyBmdW5jdGlvbiBpbiBhIG5hbWVzcGFjZSBzY29wZS4KK3RlbXBsYXRlIDxHVEVTVF9U
RU1QTEFURV8gRml4dHVyZSwgdHlwZW5hbWUgVGVzdHMsIHR5cGVuYW1lIFR5cGVzPgorY2xhc3Mg
VHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZSB7CisgcHVibGljOgorICBzdGF0aWMgYm9vbCBSZWdp
c3Rlcihjb25zdCBjaGFyKiBwcmVmaXgsIENvZGVMb2NhdGlvbiBjb2RlX2xvY2F0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUeXBlZFRlc3RDYXNlUFN0YXRlKiBzdGF0ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogY2FzZV9uYW1lLCBjb25zdCBjaGFyKiB0
ZXN0X25hbWVzKSB7CisgICAgc3RkOjpzdHJpbmcgdGVzdF9uYW1lID0gU3RyaXBUcmFpbGluZ1Nw
YWNlcygKKyAgICAgICAgR2V0UHJlZml4VW50aWxDb21tYSh0ZXN0X25hbWVzKSk7CisgICAgaWYg
KCFzdGF0ZS0+VGVzdEV4aXN0cyh0ZXN0X25hbWUpKSB7CisgICAgICBmcHJpbnRmKHN0ZGVyciwg
IkZhaWxlZCB0byBnZXQgY29kZSBsb2NhdGlvbiBmb3IgdGVzdCAlcy4lcyBhdCAlcy4iLAorICAg
ICAgICAgICAgICBjYXNlX25hbWUsIHRlc3RfbmFtZS5jX3N0cigpLAorICAgICAgICAgICAgICBG
b3JtYXRGaWxlTG9jYXRpb24oY29kZV9sb2NhdGlvbi5maWxlLmNfc3RyKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb2RlX2xvY2F0aW9uLmxpbmUpLmNfc3RyKCkpOworICAg
ICAgZmZsdXNoKHN0ZGVycik7CisgICAgICBwb3NpeDo6QWJvcnQoKTsKKyAgICB9CisgICAgY29u
c3QgQ29kZUxvY2F0aW9uJiB0ZXN0X2xvY2F0aW9uID0gc3RhdGUtPkdldENvZGVMb2NhdGlvbih0
ZXN0X25hbWUpOworCisgICAgdHlwZWRlZiB0eXBlbmFtZSBUZXN0czo6SGVhZCBIZWFkOworCisg
ICAgLy8gRmlyc3QsIHJlZ2lzdGVyIHRoZSBmaXJzdCB0ZXN0IGluICdUZXN0JyBmb3IgZWFjaCB0
eXBlIGluICdUeXBlcycuCisgICAgVHlwZVBhcmFtZXRlcml6ZWRUZXN0PEZpeHR1cmUsIEhlYWQs
IFR5cGVzPjo6UmVnaXN0ZXIoCisgICAgICAgIHByZWZpeCwgdGVzdF9sb2NhdGlvbiwgY2FzZV9u
YW1lLCB0ZXN0X25hbWVzLCAwKTsKKworICAgIC8vIE5leHQsIHJlY3Vyc2VzIChhdCBjb21waWxl
IHRpbWUpIHdpdGggdGhlIHRhaWwgb2YgdGhlIHRlc3QgbGlzdC4KKyAgICByZXR1cm4gVHlwZVBh
cmFtZXRlcml6ZWRUZXN0Q2FzZTxGaXh0dXJlLCB0eXBlbmFtZSBUZXN0czo6VGFpbCwgVHlwZXM+
CisgICAgICAgIDo6UmVnaXN0ZXIocHJlZml4LCBjb2RlX2xvY2F0aW9uLCBzdGF0ZSwKKyAgICAg
ICAgICAgICAgICAgICBjYXNlX25hbWUsIFNraXBDb21tYSh0ZXN0X25hbWVzKSk7CisgIH0KK307
CisKKy8vIFRoZSBiYXNlIGNhc2UgZm9yIHRoZSBjb21waWxlIHRpbWUgcmVjdXJzaW9uLgordGVt
cGxhdGUgPEdURVNUX1RFTVBMQVRFXyBGaXh0dXJlLCB0eXBlbmFtZSBUeXBlcz4KK2NsYXNzIFR5
cGVQYXJhbWV0ZXJpemVkVGVzdENhc2U8Rml4dHVyZSwgVGVtcGxhdGVzMCwgVHlwZXM+IHsKKyBw
dWJsaWM6CisgIHN0YXRpYyBib29sIFJlZ2lzdGVyKGNvbnN0IGNoYXIqIC8qcHJlZml4Ki8sIENv
ZGVMb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHlwZWRUZXN0Q2FzZVBT
dGF0ZSogLypzdGF0ZSovLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAvKmNh
c2VfbmFtZSovLCBjb25zdCBjaGFyKiAvKnRlc3RfbmFtZXMqLykgeworICAgIHJldHVybiB0cnVl
OworICB9Cit9OworCisjZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUIHx8IEdURVNUX0hB
U19UWVBFRF9URVNUX1AKKworLy8gUmV0dXJucyB0aGUgY3VycmVudCBPUyBzdGFjayB0cmFjZSBh
cyBhbiBzdGQ6OnN0cmluZy4KKy8vCisvLyBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc3RhY2sgZnJh
bWVzIHRvIGJlIGluY2x1ZGVkIGlzIHNwZWNpZmllZCBieQorLy8gdGhlIGd0ZXN0X3N0YWNrX3Ry
YWNlX2RlcHRoIGZsYWcuICBUaGUgc2tpcF9jb3VudCBwYXJhbWV0ZXIKKy8vIHNwZWNpZmllcyB0
aGUgbnVtYmVyIG9mIHRvcCBmcmFtZXMgdG8gYmUgc2tpcHBlZCwgd2hpY2ggZG9lc24ndAorLy8g
Y291bnQgYWdhaW5zdCB0aGUgbnVtYmVyIG9mIGZyYW1lcyB0byBiZSBpbmNsdWRlZC4KKy8vCisv
LyBGb3IgZXhhbXBsZSwgaWYgRm9vKCkgY2FsbHMgQmFyKCksIHdoaWNoIGluIHR1cm4gY2FsbHMK
Ky8vIEdldEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AoLi4uLCAxKSwgRm9vKCkgd2lsbCBi
ZSBpbmNsdWRlZCBpbgorLy8gdGhlIHRyYWNlIGJ1dCBCYXIoKSBhbmQgR2V0Q3VycmVudE9zU3Rh
Y2tUcmFjZUV4Y2VwdFRvcCgpIHdvbid0LgorR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBHZXRDdXJy
ZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKAorICAgIFVuaXRUZXN0KiB1bml0X3Rlc3QsIGludCBz
a2lwX2NvdW50KTsKKworLy8gSGVscGVycyBmb3Igc3VwcHJlc3Npbmcgd2FybmluZ3Mgb24gdW5y
ZWFjaGFibGUgY29kZSBvciBjb25zdGFudAorLy8gY29uZGl0aW9uLgorCisvLyBBbHdheXMgcmV0
dXJucyB0cnVlLgorR1RFU1RfQVBJXyBib29sIEFsd2F5c1RydWUoKTsKKworLy8gQWx3YXlzIHJl
dHVybnMgZmFsc2UuCitpbmxpbmUgYm9vbCBBbHdheXNGYWxzZSgpIHsgcmV0dXJuICFBbHdheXNU
cnVlKCk7IH0KKworLy8gSGVscGVyIGZvciBzdXBwcmVzc2luZyBmYWxzZSB3YXJuaW5nIGZyb20g
Q2xhbmcgb24gYSBjb25zdCBjaGFyKgorLy8gdmFyaWFibGUgZGVjbGFyZWQgaW4gYSBjb25kaXRp
b25hbCBleHByZXNzaW9uIGFsd2F5cyBiZWluZyBOVUxMIGluCisvLyB0aGUgZWxzZSBicmFuY2gu
CitzdHJ1Y3QgR1RFU1RfQVBJXyBDb25zdENoYXJQdHIgeworICBDb25zdENoYXJQdHIoY29uc3Qg
Y2hhciogc3RyKSA6IHZhbHVlKHN0cikge30KKyAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KKyAgY29uc3QgY2hhciogdmFsdWU7Cit9OworCisvLyBBIHNpbXBsZSBMaW5l
YXIgQ29uZ3J1ZW50aWFsIEdlbmVyYXRvciBmb3IgZ2VuZXJhdGluZyByYW5kb20KKy8vIG51bWJl
cnMgd2l0aCBhIHVuaWZvcm0gZGlzdHJpYnV0aW9uLiAgVW5saWtlIHJhbmQoKSBhbmQgc3JhbmQo
KSwgaXQKKy8vIGRvZXNuJ3QgdXNlIGdsb2JhbCBzdGF0ZSAoYW5kIHRoZXJlZm9yZSBjYW4ndCBp
bnRlcmZlcmUgd2l0aCB1c2VyCisvLyBjb2RlKS4gIFVubGlrZSByYW5kX3IoKSwgaXQncyBwb3J0
YWJsZS4gIEFuIExDRyBpc24ndCB2ZXJ5IHJhbmRvbSwKKy8vIGJ1dCBpdCdzIGdvb2QgZW5vdWdo
IGZvciBvdXIgcHVycG9zZXMuCitjbGFzcyBHVEVTVF9BUElfIFJhbmRvbSB7CisgcHVibGljOgor
ICBzdGF0aWMgY29uc3QgVUludDMyIGtNYXhSYW5nZSA9IDF1IDw8IDMxOworCisgIGV4cGxpY2l0
IFJhbmRvbShVSW50MzIgc2VlZCkgOiBzdGF0ZV8oc2VlZCkge30KKworICB2b2lkIFJlc2VlZChV
SW50MzIgc2VlZCkgeyBzdGF0ZV8gPSBzZWVkOyB9CisKKyAgLy8gR2VuZXJhdGVzIGEgcmFuZG9t
IG51bWJlciBmcm9tIFswLCByYW5nZSkuICBDcmFzaGVzIGlmICdyYW5nZScgaXMKKyAgLy8gMCBv
ciBncmVhdGVyIHRoYW4ga01heFJhbmdlLgorICBVSW50MzIgR2VuZXJhdGUoVUludDMyIHJhbmdl
KTsKKworIHByaXZhdGU6CisgIFVJbnQzMiBzdGF0ZV87CisgIEdURVNUX0RJU0FMTE9XX0NPUFlf
QU5EX0FTU0lHTl8oUmFuZG9tKTsKK307CisKKy8vIERlZmluaW5nIGEgdmFyaWFibGUgb2YgdHlw
ZSBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxUMSwgVDI+IHdpbGwgY2F1c2UgYQorLy8gY29tcGls
ZXIgZXJyb3IgaWZmIFQxIGFuZCBUMiBhcmUgZGlmZmVyZW50IHR5cGVzLgordGVtcGxhdGUgPHR5
cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK3N0cnVjdCBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDsK
KwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8
VCwgVD4geworfTsKKworLy8gUmVtb3ZlcyB0aGUgcmVmZXJlbmNlIGZyb20gYSB0eXBlIGlmIGl0
IGlzIGEgcmVmZXJlbmNlIHR5cGUsCisvLyBvdGhlcndpc2UgbGVhdmVzIGl0IHVuY2hhbmdlZC4g
IFRoaXMgaXMgdGhlIHNhbWUgYXMKKy8vIHRyMTo6cmVtb3ZlX3JlZmVyZW5jZSwgd2hpY2ggaXMg
bm90IHdpZGVseSBhdmFpbGFibGUgeWV0LgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3Qg
UmVtb3ZlUmVmZXJlbmNlIHsgdHlwZWRlZiBUIHR5cGU7IH07ICAvLyBOT0xJTlQKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPgorc3RydWN0IFJlbW92ZVJlZmVyZW5jZTxUJj4geyB0eXBlZGVmIFQgdHlw
ZTsgfTsgIC8vIE5PTElOVAorCisvLyBBIGhhbmR5IHdyYXBwZXIgYXJvdW5kIFJlbW92ZVJlZmVy
ZW5jZSB0aGF0IHdvcmtzIHdoZW4gdGhlIGFyZ3VtZW50CisvLyBUIGRlcGVuZHMgb24gdGVtcGxh
dGUgcGFyYW1ldGVycy4KKyNkZWZpbmUgR1RFU1RfUkVNT1ZFX1JFRkVSRU5DRV8oVCkgXAorICAg
IHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6OlJlbW92ZVJlZmVyZW5jZTxUPjo6dHlwZQor
CisvLyBSZW1vdmVzIGNvbnN0IGZyb20gYSB0eXBlIGlmIGl0IGlzIGEgY29uc3QgdHlwZSwgb3Ro
ZXJ3aXNlIGxlYXZlcworLy8gaXQgdW5jaGFuZ2VkLiAgVGhpcyBpcyB0aGUgc2FtZSBhcyB0cjE6
OnJlbW92ZV9jb25zdCwgd2hpY2ggaXMgbm90CisvLyB3aWRlbHkgYXZhaWxhYmxlIHlldC4KK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IFJlbW92ZUNvbnN0IHsgdHlwZWRlZiBUIHR5cGU7
IH07ICAvLyBOT0xJTlQKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IFJlbW92ZUNvbnN0
PGNvbnN0IFQ+IHsgdHlwZWRlZiBUIHR5cGU7IH07ICAvLyBOT0xJTlQKKworLy8gTVNWQyA4LjAs
IFN1biBDKyssIGFuZCBJQk0gWEwgQysrIGhhdmUgYSBidWcgd2hpY2ggY2F1c2VzIHRoZSBhYm92
ZQorLy8gZGVmaW5pdGlvbiB0byBmYWlsIHRvIHJlbW92ZSB0aGUgY29uc3QgaW4gJ2NvbnN0IGlu
dFszXScgYW5kICdjb25zdAorLy8gY2hhclszXVs0XScuICBUaGUgZm9sbG93aW5nIHNwZWNpYWxp
emF0aW9uIHdvcmtzIGFyb3VuZCB0aGUgYnVnLgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVf
dCBOPgorc3RydWN0IFJlbW92ZUNvbnN0PGNvbnN0IFRbTl0+IHsKKyAgdHlwZWRlZiB0eXBlbmFt
ZSBSZW1vdmVDb25zdDxUPjo6dHlwZSB0eXBlW05dOworfTsKKworI2lmIGRlZmluZWQoX01TQ19W
RVIpICYmIF9NU0NfVkVSIDwgMTQwMAorLy8gVGhpcyBpcyB0aGUgb25seSBzcGVjaWFsaXphdGlv
biB0aGF0IGFsbG93cyBWQysrIDcuMSB0byByZW1vdmUgY29uc3QgaW4KKy8vICdjb25zdCBpbnRb
M10gYW5kICdjb25zdCBpbnRbM11bNF0nLiAgSG93ZXZlciwgaXQgY2F1c2VzIHRyb3VibGUgd2l0
aCBHQ0MKKy8vIGFuZCB0aHVzIG5lZWRzIHRvIGJlIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQuCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4+CitzdHJ1Y3QgUmVtb3ZlQ29uc3Q8VFtOXT4g
eworICB0eXBlZGVmIHR5cGVuYW1lIFJlbW92ZUNvbnN0PFQ+Ojp0eXBlIHR5cGVbTl07Cit9Owor
I2VuZGlmCisKKy8vIEEgaGFuZHkgd3JhcHBlciBhcm91bmQgUmVtb3ZlQ29uc3QgdGhhdCB3b3Jr
cyB3aGVuIHRoZSBhcmd1bWVudAorLy8gVCBkZXBlbmRzIG9uIHRlbXBsYXRlIHBhcmFtZXRlcnMu
CisjZGVmaW5lIEdURVNUX1JFTU9WRV9DT05TVF8oVCkgXAorICAgIHR5cGVuYW1lIDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OlJlbW92ZUNvbnN0PFQ+Ojp0eXBlCisKKy8vIFR1cm5zIGNvbnN0IFUmLCBV
JiwgY29uc3QgVSwgYW5kIFUgYWxsIGludG8gVS4KKyNkZWZpbmUgR1RFU1RfUkVNT1ZFX1JFRkVS
RU5DRV9BTkRfQ09OU1RfKFQpIFwKKyAgICBHVEVTVF9SRU1PVkVfQ09OU1RfKEdURVNUX1JFTU9W
RV9SRUZFUkVOQ0VfKFQpKQorCisvLyBBZGRzIHJlZmVyZW5jZSB0byBhIHR5cGUgaWYgaXQgaXMg
bm90IGEgcmVmZXJlbmNlIHR5cGUsCisvLyBvdGhlcndpc2UgbGVhdmVzIGl0IHVuY2hhbmdlZC4g
IFRoaXMgaXMgdGhlIHNhbWUgYXMKKy8vIHRyMTo6YWRkX3JlZmVyZW5jZSwgd2hpY2ggaXMgbm90
IHdpZGVseSBhdmFpbGFibGUgeWV0LgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgQWRk
UmVmZXJlbmNlIHsgdHlwZWRlZiBUJiB0eXBlOyB9OyAgLy8gTk9MSU5UCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK3N0cnVjdCBBZGRSZWZlcmVuY2U8VCY+IHsgdHlwZWRlZiBUJiB0eXBlOyB9OyAg
Ly8gTk9MSU5UCisKKy8vIEEgaGFuZHkgd3JhcHBlciBhcm91bmQgQWRkUmVmZXJlbmNlIHRoYXQg
d29ya3Mgd2hlbiB0aGUgYXJndW1lbnQgVAorLy8gZGVwZW5kcyBvbiB0ZW1wbGF0ZSBwYXJhbWV0
ZXJzLgorI2RlZmluZSBHVEVTVF9BRERfUkVGRVJFTkNFXyhUKSBcCisgICAgdHlwZW5hbWUgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6QWRkUmVmZXJlbmNlPFQ+Ojp0eXBlCisKKy8vIEFkZHMgYSByZWZl
cmVuY2UgdG8gY29uc3Qgb24gdG9wIG9mIFQgYXMgbmVjZXNzYXJ5LiAgRm9yIGV4YW1wbGUsCisv
LyBpdCB0cmFuc2Zvcm1zCisvLworLy8gICBjaGFyICAgICAgICAgPT0+IGNvbnN0IGNoYXImCisv
LyAgIGNvbnN0IGNoYXIgICA9PT4gY29uc3QgY2hhciYKKy8vICAgY2hhciYgICAgICAgID09PiBj
b25zdCBjaGFyJgorLy8gICBjb25zdCBjaGFyJiAgPT0+IGNvbnN0IGNoYXImCisvLworLy8gVGhl
IGFyZ3VtZW50IFQgbXVzdCBkZXBlbmQgb24gc29tZSB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgorI2Rl
ZmluZSBHVEVTVF9SRUZFUkVOQ0VfVE9fQ09OU1RfKFQpIFwKKyAgICBHVEVTVF9BRERfUkVGRVJF
TkNFXyhjb25zdCBHVEVTVF9SRU1PVkVfUkVGRVJFTkNFXyhUKSkKKworLy8gSW1wbGljaXRseUNv
bnZlcnRpYmxlPEZyb20sIFRvPjo6dmFsdWUgaXMgYSBjb21waWxlLXRpbWUgYm9vbAorLy8gY29u
c3RhbnQgdGhhdCdzIHRydWUgaWZmIHR5cGUgRnJvbSBjYW4gYmUgaW1wbGljaXRseSBjb252ZXJ0
ZWQgdG8KKy8vIHR5cGUgVG8uCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRnJvbSwgdHlwZW5hbWUgVG8+
CitjbGFzcyBJbXBsaWNpdGx5Q29udmVydGlibGUgeworIHByaXZhdGU6CisgIC8vIFdlIG5lZWQg
dGhlIGZvbGxvd2luZyBoZWxwZXIgZnVuY3Rpb25zIG9ubHkgZm9yIHRoZWlyIHR5cGVzLgorICAv
LyBUaGV5IGhhdmUgbm8gaW1wbGVtZW50YXRpb25zLgorCisgIC8vIE1ha2VGcm9tKCkgaXMgYW4g
ZXhwcmVzc2lvbiB3aG9zZSB0eXBlIGlzIEZyb20uICBXZSBjYW5ub3Qgc2ltcGx5CisgIC8vIHVz
ZSBGcm9tKCksIGFzIHRoZSB0eXBlIEZyb20gbWF5IG5vdCBoYXZlIGEgcHVibGljIGRlZmF1bHQK
KyAgLy8gY29uc3RydWN0b3IuCisgIHN0YXRpYyB0eXBlbmFtZSBBZGRSZWZlcmVuY2U8RnJvbT46
OnR5cGUgTWFrZUZyb20oKTsKKworICAvLyBUaGVzZSB0d28gZnVuY3Rpb25zIGFyZSBvdmVybG9h
ZGVkLiAgR2l2ZW4gYW4gZXhwcmVzc2lvbgorICAvLyBIZWxwZXIoeCksIHRoZSBjb21waWxlciB3
aWxsIHBpY2sgdGhlIGZpcnN0IHZlcnNpb24gaWYgeCBjYW4gYmUKKyAgLy8gaW1wbGljaXRseSBj
b252ZXJ0ZWQgdG8gdHlwZSBUbzsgb3RoZXJ3aXNlIGl0IHdpbGwgcGljayB0aGUKKyAgLy8gc2Vj
b25kIHZlcnNpb24uCisgIC8vCisgIC8vIFRoZSBmaXJzdCB2ZXJzaW9uIHJldHVybnMgYSB2YWx1
ZSBvZiBzaXplIDEsIGFuZCB0aGUgc2Vjb25kCisgIC8vIHZlcnNpb24gcmV0dXJucyBhIHZhbHVl
IG9mIHNpemUgMi4gIFRoZXJlZm9yZSwgYnkgY2hlY2tpbmcgdGhlCisgIC8vIHNpemUgb2YgSGVs
cGVyKHgpLCB3aGljaCBjYW4gYmUgZG9uZSBhdCBjb21waWxlIHRpbWUsIHdlIGNhbiB0ZWxsCisg
IC8vIHdoaWNoIHZlcnNpb24gb2YgSGVscGVyKCkgaXMgdXNlZCwgYW5kIGhlbmNlIHdoZXRoZXIg
eCBjYW4gYmUKKyAgLy8gaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gdHlwZSBUby4KKyAgc3RhdGlj
IGNoYXIgSGVscGVyKFRvKTsKKyAgc3RhdGljIGNoYXIgKCZIZWxwZXIoLi4uKSlbMl07ICAvLyBO
T0xJTlQKKworICAvLyBXZSBoYXZlIHRvIHB1dCB0aGUgJ3B1YmxpYycgc2VjdGlvbiBhZnRlciB0
aGUgJ3ByaXZhdGUnIHNlY3Rpb24sCisgIC8vIG9yIE1TVkMgcmVmdXNlcyB0byBjb21waWxlIHRo
ZSBjb2RlLgorIHB1YmxpYzoKKyNpZiBkZWZpbmVkKF9fQk9STEFORENfXykKKyAgLy8gQysrQnVp
bGRlciBjYW5ub3QgdXNlIG1lbWJlciBvdmVybG9hZCByZXNvbHV0aW9uIGR1cmluZyB0ZW1wbGF0
ZQorICAvLyBpbnN0YW50aWF0aW9uLiAgVGhlIHNpbXBsZXN0IHdvcmthcm91bmQgaXMgdG8gdXNl
IGl0cyBDKysweCB0eXBlIHRyYWl0cworICAvLyBmdW5jdGlvbnMgKEMrK0J1aWxkZXIgMjAwOSBh
bmQgYWJvdmUgb25seSkuCisgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gX19pc19jb252ZXJ0
aWJsZShGcm9tLCBUbyk7CisjZWxzZQorICAvLyBNU1ZDIHdhcm5zIGFib3V0IGltcGxpY2l0bHkg
Y29udmVydGluZyBmcm9tIGRvdWJsZSB0byBpbnQgZm9yCisgIC8vIHBvc3NpYmxlIGxvc3Mgb2Yg
ZGF0YSwgc28gd2UgbmVlZCB0byB0ZW1wb3JhcmlseSBkaXNhYmxlIHRoZQorICAvLyB3YXJuaW5n
LgorICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0MjQ0KQorICBzdGF0aWMgY29u
c3QgYm9vbCB2YWx1ZSA9CisgICAgICBzaXplb2YoSGVscGVyKEltcGxpY2l0bHlDb252ZXJ0aWJs
ZTo6TWFrZUZyb20oKSkpID09IDE7CisgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8o
KQorI2VuZGlmICAvLyBfX0JPUkxBTkRDX18KK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRnJvbSwg
dHlwZW5hbWUgVG8+Citjb25zdCBib29sIEltcGxpY2l0bHlDb252ZXJ0aWJsZTxGcm9tLCBUbz46
OnZhbHVlOworCisvLyBJc0FQcm90b2NvbE1lc3NhZ2U8VD46OnZhbHVlIGlzIGEgY29tcGlsZS10
aW1lIGJvb2wgY29uc3RhbnQgdGhhdCdzCisvLyB0cnVlIGlmZiBUIGlzIHR5cGUgUHJvdG9jb2xN
ZXNzYWdlLCBwcm90bzI6Ok1lc3NhZ2UsIG9yIGEgc3ViY2xhc3MKKy8vIG9mIHRob3NlLgordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgSXNBUHJvdG9jb2xNZXNzYWdlCisgICAgOiBwdWJs
aWMgYm9vbF9jb25zdGFudDwKKyAgSW1wbGljaXRseUNvbnZlcnRpYmxlPGNvbnN0IFQqLCBjb25z
dCA6OlByb3RvY29sTWVzc2FnZSo+Ojp2YWx1ZSB8fAorICBJbXBsaWNpdGx5Q29udmVydGlibGU8
Y29uc3QgVCosIGNvbnN0IDo6cHJvdG8yOjpNZXNzYWdlKj46OnZhbHVlPiB7Cit9OworCisvLyBX
aGVuIHRoZSBjb21waWxlciBzZWVzIGV4cHJlc3Npb24gSXNDb250YWluZXJUZXN0PEM+KDApLCBp
ZiBDIGlzIGFuCisvLyBTVEwtc3R5bGUgY29udGFpbmVyIGNsYXNzLCB0aGUgZmlyc3Qgb3Zlcmxv
YWQgb2YgSXNDb250YWluZXJUZXN0CisvLyB3aWxsIGJlIHZpYWJsZSAoc2luY2UgYm90aCBDOjpp
dGVyYXRvciogYW5kIEM6OmNvbnN0X2l0ZXJhdG9yKiBhcmUKKy8vIHZhbGlkIHR5cGVzIGFuZCBO
VUxMIGNhbiBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byB0aGVtKS4gIEl0IHdpbGwKKy8vIGJl
IHBpY2tlZCBvdmVyIHRoZSBzZWNvbmQgb3ZlcmxvYWQgYXMgJ2ludCcgaXMgYSBwZXJmZWN0IG1h
dGNoIGZvcgorLy8gdGhlIHR5cGUgb2YgYXJndW1lbnQgMC4gIElmIEM6Oml0ZXJhdG9yIG9yIEM6
OmNvbnN0X2l0ZXJhdG9yIGlzIG5vdAorLy8gYSB2YWxpZCB0eXBlLCB0aGUgZmlyc3Qgb3Zlcmxv
YWQgaXMgbm90IHZpYWJsZSwgYW5kIHRoZSBzZWNvbmQKKy8vIG92ZXJsb2FkIHdpbGwgYmUgcGlj
a2VkLiAgVGhlcmVmb3JlLCB3ZSBjYW4gZGV0ZXJtaW5lIHdoZXRoZXIgQyBpcworLy8gYSBjb250
YWluZXIgY2xhc3MgYnkgY2hlY2tpbmcgdGhlIHR5cGUgb2YgSXNDb250YWluZXJUZXN0PEM+KDAp
LgorLy8gVGhlIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uIGlzIGluc2lnbmlmaWNhbnQuCisvLwor
Ly8gTm90ZSB0aGF0IHdlIGxvb2sgZm9yIGJvdGggQzo6aXRlcmF0b3IgYW5kIEM6OmNvbnN0X2l0
ZXJhdG9yLiAgVGhlCisvLyByZWFzb24gaXMgdGhhdCBDKysgaW5qZWN0cyB0aGUgbmFtZSBvZiBh
IGNsYXNzIGFzIGEgbWVtYmVyIG9mIHRoZQorLy8gY2xhc3MgaXRzZWxmIChlLmcuIHlvdSBjYW4g
cmVmZXIgdG8gY2xhc3MgaXRlcmF0b3IgYXMgZWl0aGVyCisvLyAnaXRlcmF0b3InIG9yICdpdGVy
YXRvcjo6aXRlcmF0b3InKS4gIElmIHdlIGxvb2sgZm9yIEM6Oml0ZXJhdG9yCisvLyBvbmx5LCBm
b3IgZXhhbXBsZSwgd2Ugd291bGQgbWlzdGFrZW5seSB0aGluayB0aGF0IGEgY2xhc3MgbmFtZWQK
Ky8vIGl0ZXJhdG9yIGlzIGFuIFNUTCBjb250YWluZXIuCisvLworLy8gQWxzbyBub3RlIHRoYXQg
dGhlIHNpbXBsZXIgYXBwcm9hY2ggb2Ygb3ZlcmxvYWRpbmcKKy8vIElzQ29udGFpbmVyVGVzdCh0
eXBlbmFtZSBDOjpjb25zdF9pdGVyYXRvciopIGFuZAorLy8gSXNDb250YWluZXJUZXN0KC4uLikg
ZG9lc24ndCB3b3JrIHdpdGggVmlzdWFsIEFnZSBDKysgYW5kIFN1biBDKysuCit0eXBlZGVmIGlu
dCBJc0NvbnRhaW5lcjsKK3RlbXBsYXRlIDxjbGFzcyBDPgorSXNDb250YWluZXIgSXNDb250YWlu
ZXJUZXN0KGludCAvKiBkdW1teSAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBl
bmFtZSBDOjppdGVyYXRvciogLyogaXQgKi8gPSBOVUxMLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHR5cGVuYW1lIEM6OmNvbnN0X2l0ZXJhdG9yKiAvKiBjb25zdF9pdCAqLyA9IE5VTEwp
IHsKKyAgcmV0dXJuIDA7Cit9CisKK3R5cGVkZWYgY2hhciBJc05vdENvbnRhaW5lcjsKK3RlbXBs
YXRlIDxjbGFzcyBDPgorSXNOb3RDb250YWluZXIgSXNDb250YWluZXJUZXN0KGxvbmcgLyogZHVt
bXkgKi8pIHsgcmV0dXJuICdcMCc7IH0KKworLy8gRW5hYmxlSWY8Y29uZGl0aW9uPjo6dHlwZSBp
cyB2b2lkIHdoZW4gJ0NvbmQnIGlzIHRydWUsIGFuZAorLy8gdW5kZWZpbmVkIHdoZW4gJ0NvbmQn
IGlzIGZhbHNlLiAgVG8gdXNlIFNGSU5BRSB0byBtYWtlIGEgZnVuY3Rpb24KKy8vIG92ZXJsb2Fk
IG9ubHkgYXBwbHkgd2hlbiBhIHBhcnRpY3VsYXIgZXhwcmVzc2lvbiBpcyB0cnVlLCBhZGQKKy8v
ICJ0eXBlbmFtZSBFbmFibGVJZjxleHByZXNzaW9uPjo6dHlwZSogPSAwIiBhcyB0aGUgbGFzdCBw
YXJhbWV0ZXIuCit0ZW1wbGF0ZTxib29sPiBzdHJ1Y3QgRW5hYmxlSWY7Cit0ZW1wbGF0ZTw+IHN0
cnVjdCBFbmFibGVJZjx0cnVlPiB7IHR5cGVkZWYgdm9pZCB0eXBlOyB9OyAgLy8gTk9MSU5UCisK
Ky8vIFV0aWxpdGllcyBmb3IgbmF0aXZlIGFycmF5cy4KKworLy8gQXJyYXlFcSgpIGNvbXBhcmVz
IHR3byBrLWRpbWVuc2lvbmFsIG5hdGl2ZSBhcnJheXMgdXNpbmcgdGhlCisvLyBlbGVtZW50cycg
b3BlcmF0b3I9PSwgd2hlcmUgayBjYW4gYmUgYW55IGludGVnZXIgPj0gMC4gIFdoZW4gayBpcwor
Ly8gMCwgQXJyYXlFcSgpIGRlZ2VuZXJhdGVzIGludG8gY29tcGFyaW5nIGEgc2luZ2xlIHBhaXIg
b2YgdmFsdWVzLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK2Jvb2wgQXJy
YXlFcShjb25zdCBUKiBsaHMsIHNpemVfdCBzaXplLCBjb25zdCBVKiByaHMpOworCisvLyBUaGlz
IGdlbmVyaWMgdmVyc2lvbiBpcyB1c2VkIHdoZW4gayBpcyAwLgordGVtcGxhdGUgPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+CitpbmxpbmUgYm9vbCBBcnJheUVxKGNvbnN0IFQmIGxocywgY29uc3Qg
VSYgcmhzKSB7IHJldHVybiBsaHMgPT0gcmhzOyB9CisKKy8vIFRoaXMgb3ZlcmxvYWQgaXMgdXNl
ZCB3aGVuIGsgPj0gMS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3Qg
Tj4KK2lubGluZSBib29sIEFycmF5RXEoY29uc3QgVCgmbGhzKVtOXSwgY29uc3QgVSgmcmhzKVtO
XSkgeworICByZXR1cm4gaW50ZXJuYWw6OkFycmF5RXEobGhzLCBOLCByaHMpOworfQorCisvLyBU
aGlzIGhlbHBlciByZWR1Y2VzIGNvZGUgYmxvYXQuICBJZiB3ZSBpbnN0ZWFkIHB1dCBpdHMgbG9n
aWMgaW5zaWRlCisvLyB0aGUgcHJldmlvdXMgQXJyYXlFcSgpIGZ1bmN0aW9uLCBhcnJheXMgd2l0
aCBkaWZmZXJlbnQgc2l6ZXMgd291bGQKKy8vIGxlYWQgdG8gZGlmZmVyZW50IGNvcGllcyBvZiB0
aGUgdGVtcGxhdGUgY29kZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorYm9v
bCBBcnJheUVxKGNvbnN0IFQqIGxocywgc2l6ZV90IHNpemUsIGNvbnN0IFUqIHJocykgeworICBm
b3IgKHNpemVfdCBpID0gMDsgaSAhPSBzaXplOyBpKyspIHsKKyAgICBpZiAoIWludGVybmFsOjpB
cnJheUVxKGxoc1tpXSwgcmhzW2ldKSkKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgfQorICByZXR1
cm4gdHJ1ZTsKK30KKworLy8gRmluZHMgdGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlIGl0ZXJhdG9y
IHJhbmdlIFtiZWdpbiwgZW5kKSB0aGF0CisvLyBlcXVhbHMgZWxlbS4gIEVsZW1lbnQgbWF5IGJl
IGEgbmF0aXZlIGFycmF5IHR5cGUgaXRzZWxmLgordGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXIsIHR5
cGVuYW1lIEVsZW1lbnQ+CitJdGVyIEFycmF5QXdhcmVGaW5kKEl0ZXIgYmVnaW4sIEl0ZXIgZW5k
LCBjb25zdCBFbGVtZW50JiBlbGVtKSB7CisgIGZvciAoSXRlciBpdCA9IGJlZ2luOyBpdCAhPSBl
bmQ7ICsraXQpIHsKKyAgICBpZiAoaW50ZXJuYWw6OkFycmF5RXEoKml0LCBlbGVtKSkKKyAgICAg
IHJldHVybiBpdDsKKyAgfQorICByZXR1cm4gZW5kOworfQorCisvLyBDb3B5QXJyYXkoKSBjb3Bp
ZXMgYSBrLWRpbWVuc2lvbmFsIG5hdGl2ZSBhcnJheSB1c2luZyB0aGUgZWxlbWVudHMnCisvLyBv
cGVyYXRvcj0sIHdoZXJlIGsgY2FuIGJlIGFueSBpbnRlZ2VyID49IDAuICBXaGVuIGsgaXMgMCwK
Ky8vIENvcHlBcnJheSgpIGRlZ2VuZXJhdGVzIGludG8gY29weWluZyBhIHNpbmdsZSB2YWx1ZS4K
KwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Cit2b2lkIENvcHlBcnJheShjb25z
dCBUKiBmcm9tLCBzaXplX3Qgc2l6ZSwgVSogdG8pOworCisvLyBUaGlzIGdlbmVyaWMgdmVyc2lv
biBpcyB1c2VkIHdoZW4gayBpcyAwLgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+
CitpbmxpbmUgdm9pZCBDb3B5QXJyYXkoY29uc3QgVCYgZnJvbSwgVSogdG8pIHsgKnRvID0gZnJv
bTsgfQorCisvLyBUaGlzIG92ZXJsb2FkIGlzIHVzZWQgd2hlbiBrID49IDEuCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90IE4+CitpbmxpbmUgdm9pZCBDb3B5QXJyYXko
Y29uc3QgVCgmZnJvbSlbTl0sIFUoKnRvKVtOXSkgeworICBpbnRlcm5hbDo6Q29weUFycmF5KGZy
b20sIE4sICp0byk7Cit9CisKKy8vIFRoaXMgaGVscGVyIHJlZHVjZXMgY29kZSBibG9hdC4gIElm
IHdlIGluc3RlYWQgcHV0IGl0cyBsb2dpYyBpbnNpZGUKKy8vIHRoZSBwcmV2aW91cyBDb3B5QXJy
YXkoKSBmdW5jdGlvbiwgYXJyYXlzIHdpdGggZGlmZmVyZW50IHNpemVzCisvLyB3b3VsZCBsZWFk
IHRvIGRpZmZlcmVudCBjb3BpZXMgb2YgdGhlIHRlbXBsYXRlIGNvZGUuCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4KK3ZvaWQgQ29weUFycmF5KGNvbnN0IFQqIGZyb20sIHNpemVf
dCBzaXplLCBVKiB0bykgeworICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBzaXplOyBpKyspIHsK
KyAgICBpbnRlcm5hbDo6Q29weUFycmF5KGZyb21baV0sIHRvICsgaSk7CisgIH0KK30KKworLy8g
VGhlIHJlbGF0aW9uIGJldHdlZW4gYW4gTmF0aXZlQXJyYXkgb2JqZWN0IChzZWUgYmVsb3cpIGFu
ZCB0aGUKKy8vIG5hdGl2ZSBhcnJheSBpdCByZXByZXNlbnRzLgorLy8gV2UgdXNlIDIgZGlmZmVy
ZW50IHN0cnVjdHMgdG8gYWxsb3cgbm9uLWNvcHlhYmxlIHR5cGVzIHRvIGJlIHVzZWQsIGFzIGxv
bmcKKy8vIGFzIFJlbGF0aW9uVG9Tb3VyY2VSZWZlcmVuY2UoKSBpcyBwYXNzZWQuCitzdHJ1Y3Qg
UmVsYXRpb25Ub1NvdXJjZVJlZmVyZW5jZSB7fTsKK3N0cnVjdCBSZWxhdGlvblRvU291cmNlQ29w
eSB7fTsKKworLy8gQWRhcHRzIGEgbmF0aXZlIGFycmF5IHRvIGEgcmVhZC1vbmx5IFNUTC1zdHls
ZSBjb250YWluZXIuICBJbnN0ZWFkCisvLyBvZiB0aGUgY29tcGxldGUgU1RMIGNvbnRhaW5lciBj
b25jZXB0LCB0aGlzIGFkYXB0b3Igb25seSBpbXBsZW1lbnRzCisvLyBtZW1iZXJzIHVzZWZ1bCBm
b3IgR29vZ2xlIE1vY2sncyBjb250YWluZXIgbWF0Y2hlcnMuICBOZXcgbWVtYmVycworLy8gc2hv
dWxkIGJlIGFkZGVkIGFzIG5lZWRlZC4gIFRvIHNpbXBsaWZ5IHRoZSBpbXBsZW1lbnRhdGlvbiwg
d2Ugb25seQorLy8gc3VwcG9ydCBFbGVtZW50IGJlaW5nIGEgcmF3IHR5cGUgKGkuZS4gaGF2aW5n
IG5vIHRvcC1sZXZlbCBjb25zdCBvcgorLy8gcmVmZXJlbmNlIG1vZGlmaWVyKS4gIEl0J3MgdGhl
IGNsaWVudCdzIHJlc3BvbnNpYmlsaXR5IHRvIHNhdGlzZnkKKy8vIHRoaXMgcmVxdWlyZW1lbnQu
ICBFbGVtZW50IGNhbiBiZSBhbiBhcnJheSB0eXBlIGl0c2VsZiAoaGVuY2UKKy8vIG11bHRpLWRp
bWVuc2lvbmFsIGFycmF5cyBhcmUgc3VwcG9ydGVkKS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVt
ZW50PgorY2xhc3MgTmF0aXZlQXJyYXkgeworIHB1YmxpYzoKKyAgLy8gU1RMLXN0eWxlIGNvbnRh
aW5lciB0eXBlZGVmcy4KKyAgdHlwZWRlZiBFbGVtZW50IHZhbHVlX3R5cGU7CisgIHR5cGVkZWYg
RWxlbWVudCogaXRlcmF0b3I7CisgIHR5cGVkZWYgY29uc3QgRWxlbWVudCogY29uc3RfaXRlcmF0
b3I7CisKKyAgLy8gQ29uc3RydWN0cyBmcm9tIGEgbmF0aXZlIGFycmF5LiBSZWZlcmVuY2VzIHRo
ZSBzb3VyY2UuCisgIE5hdGl2ZUFycmF5KGNvbnN0IEVsZW1lbnQqIGFycmF5LCBzaXplX3QgY291
bnQsIFJlbGF0aW9uVG9Tb3VyY2VSZWZlcmVuY2UpIHsKKyAgICBJbml0UmVmKGFycmF5LCBjb3Vu
dCk7CisgIH0KKworICAvLyBDb25zdHJ1Y3RzIGZyb20gYSBuYXRpdmUgYXJyYXkuIENvcGllcyB0
aGUgc291cmNlLgorICBOYXRpdmVBcnJheShjb25zdCBFbGVtZW50KiBhcnJheSwgc2l6ZV90IGNv
dW50LCBSZWxhdGlvblRvU291cmNlQ29weSkgeworICAgIEluaXRDb3B5KGFycmF5LCBjb3VudCk7
CisgIH0KKworICAvLyBDb3B5IGNvbnN0cnVjdG9yLgorICBOYXRpdmVBcnJheShjb25zdCBOYXRp
dmVBcnJheSYgcmhzKSB7CisgICAgKHRoaXMtPipyaHMuY2xvbmVfKShyaHMuYXJyYXlfLCByaHMu
c2l6ZV8pOworICB9CisKKyAgfk5hdGl2ZUFycmF5KCkgeworICAgIGlmIChjbG9uZV8gIT0gJk5h
dGl2ZUFycmF5OjpJbml0UmVmKQorICAgICAgZGVsZXRlW10gYXJyYXlfOworICB9CisKKyAgLy8g
U1RMLXN0eWxlIGNvbnRhaW5lciBtZXRob2RzLgorICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIHNpemVfOyB9CisgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gYXJy
YXlfOyB9CisgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIGFycmF5XyArIHNp
emVfOyB9CisgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBOYXRpdmVBcnJheSYgcmhzKSBjb25zdCB7
CisgICAgcmV0dXJuIHNpemUoKSA9PSByaHMuc2l6ZSgpICYmCisgICAgICAgIEFycmF5RXEoYmVn
aW4oKSwgc2l6ZSgpLCByaHMuYmVnaW4oKSk7CisgIH0KKworIHByaXZhdGU6CisgIGVudW0gewor
ICAgIGtDaGVja1R5cGVJc05vdENvbnN0T3JBUmVmZXJlbmNlID0gU3RhdGljQXNzZXJ0VHlwZUVx
SGVscGVyPAorICAgICAgICBFbGVtZW50LCBHVEVTVF9SRU1PVkVfUkVGRVJFTkNFX0FORF9DT05T
VF8oRWxlbWVudCk+Ojp2YWx1ZSwKKyAgfTsKKworICAvLyBJbml0aWFsaXplcyB0aGlzIG9iamVj
dCB3aXRoIGEgY29weSBvZiB0aGUgaW5wdXQuCisgIHZvaWQgSW5pdENvcHkoY29uc3QgRWxlbWVu
dCogYXJyYXksIHNpemVfdCBhX3NpemUpIHsKKyAgICBFbGVtZW50KiBjb25zdCBjb3B5ID0gbmV3
IEVsZW1lbnRbYV9zaXplXTsKKyAgICBDb3B5QXJyYXkoYXJyYXksIGFfc2l6ZSwgY29weSk7Cisg
ICAgYXJyYXlfID0gY29weTsKKyAgICBzaXplXyA9IGFfc2l6ZTsKKyAgICBjbG9uZV8gPSAmTmF0
aXZlQXJyYXk6OkluaXRDb3B5OworICB9CisKKyAgLy8gSW5pdGlhbGl6ZXMgdGhpcyBvYmplY3Qg
d2l0aCBhIHJlZmVyZW5jZSBvZiB0aGUgaW5wdXQuCisgIHZvaWQgSW5pdFJlZihjb25zdCBFbGVt
ZW50KiBhcnJheSwgc2l6ZV90IGFfc2l6ZSkgeworICAgIGFycmF5XyA9IGFycmF5OworICAgIHNp
emVfID0gYV9zaXplOworICAgIGNsb25lXyA9ICZOYXRpdmVBcnJheTo6SW5pdFJlZjsKKyAgfQor
CisgIGNvbnN0IEVsZW1lbnQqIGFycmF5XzsKKyAgc2l6ZV90IHNpemVfOworICB2b2lkIChOYXRp
dmVBcnJheTo6KmNsb25lXykoY29uc3QgRWxlbWVudCosIHNpemVfdCk7CisKKyAgR1RFU1RfRElT
QUxMT1dfQVNTSUdOXyhOYXRpdmVBcnJheSk7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJu
YWwKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCisKKyNkZWZpbmUgR1RFU1RfTUVTU0FHRV9BVF8o
ZmlsZSwgbGluZSwgbWVzc2FnZSwgcmVzdWx0X3R5cGUpIFwKKyAgOjp0ZXN0aW5nOjppbnRlcm5h
bDo6QXNzZXJ0SGVscGVyKHJlc3VsdF90eXBlLCBmaWxlLCBsaW5lLCBtZXNzYWdlKSBcCisgICAg
PSA6OnRlc3Rpbmc6Ok1lc3NhZ2UoKQorCisjZGVmaW5lIEdURVNUX01FU1NBR0VfKG1lc3NhZ2Us
IHJlc3VsdF90eXBlKSBcCisgIEdURVNUX01FU1NBR0VfQVRfKF9fRklMRV9fLCBfX0xJTkVfXywg
bWVzc2FnZSwgcmVzdWx0X3R5cGUpCisKKyNkZWZpbmUgR1RFU1RfRkFUQUxfRkFJTFVSRV8obWVz
c2FnZSkgXAorICByZXR1cm4gR1RFU1RfTUVTU0FHRV8obWVzc2FnZSwgOjp0ZXN0aW5nOjpUZXN0
UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSkKKworI2RlZmluZSBHVEVTVF9OT05GQVRBTF9GQUlM
VVJFXyhtZXNzYWdlKSBcCisgIEdURVNUX01FU1NBR0VfKG1lc3NhZ2UsIDo6dGVzdGluZzo6VGVz
dFBhcnRSZXN1bHQ6OmtOb25GYXRhbEZhaWx1cmUpCisKKyNkZWZpbmUgR1RFU1RfU1VDQ0VTU18o
bWVzc2FnZSkgXAorICBHVEVTVF9NRVNTQUdFXyhtZXNzYWdlLCA6OnRlc3Rpbmc6OlRlc3RQYXJ0
UmVzdWx0OjprU3VjY2VzcykKKworLy8gU3VwcHJlc3NlcyBNU1ZDIHdhcm5pbmdzIDQwNzIgKHVu
cmVhY2hhYmxlIGNvZGUpIGZvciB0aGUgY29kZSBmb2xsb3dpbmcKKy8vIHN0YXRlbWVudCBpZiBp
dCByZXR1cm5zIG9yIHRocm93cyAob3IgZG9lc24ndCByZXR1cm4gb3IgdGhyb3cgaW4gc29tZQor
Ly8gc2l0dWF0aW9ucykuCisjZGVmaW5lIEdURVNUX1NVUFBSRVNTX1VOUkVBQ0hBQkxFX0NPREVf
V0FSTklOR19CRUxPV18oc3RhdGVtZW50KSBcCisgIGlmICg6OnRlc3Rpbmc6OmludGVybmFsOjpB
bHdheXNUcnVlKCkpIHsgc3RhdGVtZW50OyB9CisKKyNkZWZpbmUgR1RFU1RfVEVTVF9USFJPV18o
c3RhdGVtZW50LCBleHBlY3RlZF9leGNlcHRpb24sIGZhaWwpIFwKKyAgR1RFU1RfQU1CSUdVT1VT
X0VMU0VfQkxPQ0tFUl8gXAorICBpZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q29uc3RDaGFyUHRy
IGd0ZXN0X21zZyA9ICIiKSB7IFwKKyAgICBib29sIGd0ZXN0X2NhdWdodF9leHBlY3RlZCA9IGZh
bHNlOyBcCisgICAgdHJ5IHsgXAorICAgICAgR1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09E
RV9XQVJOSU5HX0JFTE9XXyhzdGF0ZW1lbnQpOyBcCisgICAgfSBcCisgICAgY2F0Y2ggKGV4cGVj
dGVkX2V4Y2VwdGlvbiBjb25zdCYpIHsgXAorICAgICAgZ3Rlc3RfY2F1Z2h0X2V4cGVjdGVkID0g
dHJ1ZTsgXAorICAgIH0gXAorICAgIGNhdGNoICguLi4pIHsgXAorICAgICAgZ3Rlc3RfbXNnLnZh
bHVlID0gXAorICAgICAgICAgICJFeHBlY3RlZDogIiAjc3RhdGVtZW50ICIgdGhyb3dzIGFuIGV4
Y2VwdGlvbiBvZiB0eXBlICIgXAorICAgICAgICAgICNleHBlY3RlZF9leGNlcHRpb24gIi5cbiAg
QWN0dWFsOiBpdCB0aHJvd3MgYSBkaWZmZXJlbnQgdHlwZS4iOyBcCisgICAgICBnb3RvIEdURVNU
X0NPTkNBVF9UT0tFTl8oZ3Rlc3RfbGFiZWxfdGVzdHRocm93XywgX19MSU5FX18pOyBcCisgICAg
fSBcCisgICAgaWYgKCFndGVzdF9jYXVnaHRfZXhwZWN0ZWQpIHsgXAorICAgICAgZ3Rlc3RfbXNn
LnZhbHVlID0gXAorICAgICAgICAgICJFeHBlY3RlZDogIiAjc3RhdGVtZW50ICIgdGhyb3dzIGFu
IGV4Y2VwdGlvbiBvZiB0eXBlICIgXAorICAgICAgICAgICNleHBlY3RlZF9leGNlcHRpb24gIi5c
biAgQWN0dWFsOiBpdCB0aHJvd3Mgbm90aGluZy4iOyBcCisgICAgICBnb3RvIEdURVNUX0NPTkNB
VF9UT0tFTl8oZ3Rlc3RfbGFiZWxfdGVzdHRocm93XywgX19MSU5FX18pOyBcCisgICAgfSBcCisg
IH0gZWxzZSBcCisgICAgR1RFU1RfQ09OQ0FUX1RPS0VOXyhndGVzdF9sYWJlbF90ZXN0dGhyb3df
LCBfX0xJTkVfXyk6IFwKKyAgICAgIGZhaWwoZ3Rlc3RfbXNnLnZhbHVlKQorCisjZGVmaW5lIEdU
RVNUX1RFU1RfTk9fVEhST1dfKHN0YXRlbWVudCwgZmFpbCkgXAorICBHVEVTVF9BTUJJR1VPVVNf
RUxTRV9CTE9DS0VSXyBcCisgIGlmICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNUcnVlKCkp
IHsgXAorICAgIHRyeSB7IFwKKyAgICAgIEdURVNUX1NVUFBSRVNTX1VOUkVBQ0hBQkxFX0NPREVf
V0FSTklOR19CRUxPV18oc3RhdGVtZW50KTsgXAorICAgIH0gXAorICAgIGNhdGNoICguLi4pIHsg
XAorICAgICAgZ290byBHVEVTVF9DT05DQVRfVE9LRU5fKGd0ZXN0X2xhYmVsX3Rlc3Rub3Rocm93
XywgX19MSU5FX18pOyBcCisgICAgfSBcCisgIH0gZWxzZSBcCisgICAgR1RFU1RfQ09OQ0FUX1RP
S0VOXyhndGVzdF9sYWJlbF90ZXN0bm90aHJvd18sIF9fTElORV9fKTogXAorICAgICAgZmFpbCgi
RXhwZWN0ZWQ6ICIgI3N0YXRlbWVudCAiIGRvZXNuJ3QgdGhyb3cgYW4gZXhjZXB0aW9uLlxuIiBc
CisgICAgICAgICAgICIgIEFjdHVhbDogaXQgdGhyb3dzLiIpCisKKyNkZWZpbmUgR1RFU1RfVEVT
VF9BTllfVEhST1dfKHN0YXRlbWVudCwgZmFpbCkgXAorICBHVEVTVF9BTUJJR1VPVVNfRUxTRV9C
TE9DS0VSXyBcCisgIGlmICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNUcnVlKCkpIHsgXAor
ICAgIGJvb2wgZ3Rlc3RfY2F1Z2h0X2FueSA9IGZhbHNlOyBcCisgICAgdHJ5IHsgXAorICAgICAg
R1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXyhzdGF0ZW1lbnQp
OyBcCisgICAgfSBcCisgICAgY2F0Y2ggKC4uLikgeyBcCisgICAgICBndGVzdF9jYXVnaHRfYW55
ID0gdHJ1ZTsgXAorICAgIH0gXAorICAgIGlmICghZ3Rlc3RfY2F1Z2h0X2FueSkgeyBcCisgICAg
ICBnb3RvIEdURVNUX0NPTkNBVF9UT0tFTl8oZ3Rlc3RfbGFiZWxfdGVzdGFueXRocm93XywgX19M
SU5FX18pOyBcCisgICAgfSBcCisgIH0gZWxzZSBcCisgICAgR1RFU1RfQ09OQ0FUX1RPS0VOXyhn
dGVzdF9sYWJlbF90ZXN0YW55dGhyb3dfLCBfX0xJTkVfXyk6IFwKKyAgICAgIGZhaWwoIkV4cGVj
dGVkOiAiICNzdGF0ZW1lbnQgIiB0aHJvd3MgYW4gZXhjZXB0aW9uLlxuIiBcCisgICAgICAgICAg
ICIgIEFjdHVhbDogaXQgZG9lc24ndC4iKQorCisKKy8vIEltcGxlbWVudHMgQm9vbGVhbiB0ZXN0
IGFzc2VydGlvbnMgc3VjaCBhcyBFWFBFQ1RfVFJVRS4gZXhwcmVzc2lvbiBjYW4gYmUKKy8vIGVp
dGhlciBhIGJvb2xlYW4gZXhwcmVzc2lvbiBvciBhbiBBc3NlcnRpb25SZXN1bHQuIHRleHQgaXMg
YSB0ZXh0dWFsCisvLyByZXByZXNlbmF0aW9uIG9mIGV4cHJlc3Npb24gYXMgaXQgd2FzIHBhc3Nl
ZCBpbnRvIHRoZSBFWFBFQ1RfVFJVRS4KKyNkZWZpbmUgR1RFU1RfVEVTVF9CT09MRUFOXyhleHBy
ZXNzaW9uLCB0ZXh0LCBhY3R1YWwsIGV4cGVjdGVkLCBmYWlsKSBcCisgIEdURVNUX0FNQklHVU9V
U19FTFNFX0JMT0NLRVJfIFwKKyAgaWYgKGNvbnN0IDo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0
IGd0ZXN0X2FyXyA9IFwKKyAgICAgIDo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0KGV4cHJlc3Np
b24pKSBcCisgICAgOyBcCisgIGVsc2UgXAorICAgIGZhaWwoOjp0ZXN0aW5nOjppbnRlcm5hbDo6
R2V0Qm9vbEFzc2VydGlvbkZhaWx1cmVNZXNzYWdlKFwKKyAgICAgICAgZ3Rlc3RfYXJfLCB0ZXh0
LCAjYWN0dWFsLCAjZXhwZWN0ZWQpLmNfc3RyKCkpCisKKyNkZWZpbmUgR1RFU1RfVEVTVF9OT19G
QVRBTF9GQUlMVVJFXyhzdGF0ZW1lbnQsIGZhaWwpIFwKKyAgR1RFU1RfQU1CSUdVT1VTX0VMU0Vf
QkxPQ0tFUl8gXAorICBpZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZSgpKSB7IFwK
KyAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpIYXNOZXdGYXRhbEZhaWx1cmVIZWxwZXIgZ3Rlc3Rf
ZmF0YWxfZmFpbHVyZV9jaGVja2VyOyBcCisgICAgR1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVf
Q09ERV9XQVJOSU5HX0JFTE9XXyhzdGF0ZW1lbnQpOyBcCisgICAgaWYgKGd0ZXN0X2ZhdGFsX2Zh
aWx1cmVfY2hlY2tlci5oYXNfbmV3X2ZhdGFsX2ZhaWx1cmUoKSkgeyBcCisgICAgICBnb3RvIEdU
RVNUX0NPTkNBVF9UT0tFTl8oZ3Rlc3RfbGFiZWxfdGVzdG5vZmF0YWxfLCBfX0xJTkVfXyk7IFwK
KyAgICB9IFwKKyAgfSBlbHNlIFwKKyAgICBHVEVTVF9DT05DQVRfVE9LRU5fKGd0ZXN0X2xhYmVs
X3Rlc3Rub2ZhdGFsXywgX19MSU5FX18pOiBcCisgICAgICBmYWlsKCJFeHBlY3RlZDogIiAjc3Rh
dGVtZW50ICIgZG9lc24ndCBnZW5lcmF0ZSBuZXcgZmF0YWwgIiBcCisgICAgICAgICAgICJmYWls
dXJlcyBpbiB0aGUgY3VycmVudCB0aHJlYWQuXG4iIFwKKyAgICAgICAgICAgIiAgQWN0dWFsOiBp
dCBkb2VzLiIpCisKKy8vIEV4cGFuZHMgdG8gdGhlIG5hbWUgb2YgdGhlIGNsYXNzIHRoYXQgaW1w
bGVtZW50cyB0aGUgZ2l2ZW4gdGVzdC4KKyNkZWZpbmUgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0
ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSBcCisgIHRlc3RfY2FzZV9uYW1lIyNfIyN0ZXN0X25h
bWUjI19UZXN0CisKKy8vIEhlbHBlciBtYWNybyBmb3IgZGVmaW5pbmcgdGVzdHMuCisjZGVmaW5l
IEdURVNUX1RFU1RfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUsIHBhcmVudF9jbGFzcywgcGFy
ZW50X2lkKVwKK2NsYXNzIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRl
c3RfbmFtZSkgOiBwdWJsaWMgcGFyZW50X2NsYXNzIHtcCisgcHVibGljOlwKKyAgR1RFU1RfVEVT
VF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSgpIHt9XAorIHByaXZhdGU6
XAorICB2aXJ0dWFsIHZvaWQgVGVzdEJvZHkoKTtcCisgIHN0YXRpYyA6OnRlc3Rpbmc6OlRlc3RJ
bmZvKiBjb25zdCB0ZXN0X2luZm9fIEdURVNUX0FUVFJJQlVURV9VTlVTRURfO1wKKyAgR1RFU1Rf
RElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhcCisgICAgICBHVEVTVF9URVNUX0NMQVNTX05BTUVf
KHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpKTtcCit9O1wKK1wKKzo6dGVzdGluZzo6VGVzdElu
Zm8qIGNvbnN0IEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFt
ZSlcCisgIDo6dGVzdF9pbmZvXyA9XAorICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6Ok1ha2VBbmRS
ZWdpc3RlclRlc3RJbmZvKFwKKyAgICAgICAgI3Rlc3RfY2FzZV9uYW1lLCAjdGVzdF9uYW1lLCBO
VUxMLCBOVUxMLCBcCisgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OkNvZGVMb2NhdGlvbihf
X0ZJTEVfXywgX19MSU5FX18pLCBcCisgICAgICAgIChwYXJlbnRfaWQpLCBcCisgICAgICAgIHBh
cmVudF9jbGFzczo6U2V0VXBUZXN0Q2FzZSwgXAorICAgICAgICBwYXJlbnRfY2xhc3M6OlRlYXJE
b3duVGVzdENhc2UsIFwKKyAgICAgICAgbmV3IDo6dGVzdGluZzo6aW50ZXJuYWw6OlRlc3RGYWN0
b3J5SW1wbDxcCisgICAgICAgICAgICBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9u
YW1lLCB0ZXN0X25hbWUpPik7XAordm9pZCBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2Fz
ZV9uYW1lLCB0ZXN0X25hbWUpOjpUZXN0Qm9keSgpCisKKyNlbmRpZiAgLy8gR1RFU1RfSU5DTFVE
RV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9JTlRFUk5BTF9IXworCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWxpbmtlZF9wdHIuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0
ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtbGlua2VkX3B0ci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjM2MDI5NDIyMTc0ZjIxNTg0ODY4MWRiMTExMGJjZGIyMzUzOGExMmUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2ds
ZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWxpbmtlZF9wdHIu
aApAQCAtMCwwICsxLDI0MyBAQAorLy8gQ29weXJpZ2h0IDIwMDMgR29vZ2xlIEluYy4KKy8vIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisv
LyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisv
LyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
Ly8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisvLworLy8gQXV0aG9yczogRGFuIEVnbm9yIChlZ25vckBnb29nbGUuY29tKQorLy8K
Ky8vIEEgInNtYXJ0IiBwb2ludGVyIHR5cGUgd2l0aCByZWZlcmVuY2UgdHJhY2tpbmcuICBFdmVy
eSBwb2ludGVyIHRvIGEKKy8vIHBhcnRpY3VsYXIgb2JqZWN0IGlzIGtlcHQgb24gYSBjaXJjdWxh
ciBsaW5rZWQgbGlzdC4gIFdoZW4gdGhlIGxhc3QgcG9pbnRlcgorLy8gdG8gYW4gb2JqZWN0IGlz
IGRlc3Ryb3llZCBvciByZWFzc2lnbmVkLCB0aGUgb2JqZWN0IGlzIGRlbGV0ZWQuCisvLworLy8g
VXNlZCBwcm9wZXJseSwgdGhpcyBkZWxldGVzIHRoZSBvYmplY3Qgd2hlbiB0aGUgbGFzdCByZWZl
cmVuY2UgZ29lcyBhd2F5LgorLy8gVGhlcmUgYXJlIHNldmVyYWwgY2F2ZWF0czoKKy8vIC0gTGlr
ZSBhbGwgcmVmZXJlbmNlIGNvdW50aW5nIHNjaGVtZXMsIGN5Y2xlcyBsZWFkIHRvIGxlYWtzLgor
Ly8gLSBFYWNoIHNtYXJ0IHBvaW50ZXIgaXMgYWN0dWFsbHkgdHdvIHBvaW50ZXJzICg4IGJ5dGVz
IGluc3RlYWQgb2YgNCkuCisvLyAtIEV2ZXJ5IHRpbWUgYSBwb2ludGVyIGlzIGFzc2lnbmVkLCB0
aGUgZW50aXJlIGxpc3Qgb2YgcG9pbnRlcnMgdG8gdGhhdAorLy8gICBvYmplY3QgaXMgdHJhdmVy
c2VkLiAgVGhpcyBjbGFzcyBpcyB0aGVyZWZvcmUgTk9UIFNVSVRBQkxFIHdoZW4gdGhlcmUKKy8v
ICAgd2lsbCBvZnRlbiBiZSBtb3JlIHRoYW4gdHdvIG9yIHRocmVlIHBvaW50ZXJzIHRvIGEgcGFy
dGljdWxhciBvYmplY3QuCisvLyAtIFJlZmVyZW5jZXMgYXJlIG9ubHkgdHJhY2tlZCBhcyBsb25n
IGFzIGxpbmtlZF9wdHI8PiBvYmplY3RzIGFyZSBjb3BpZWQuCisvLyAgIElmIGEgbGlua2VkX3B0
cjw+IGlzIGNvbnZlcnRlZCB0byBhIHJhdyBwb2ludGVyIGFuZCBiYWNrLCBCQUQgVEhJTkdTCisv
LyAgIHdpbGwgaGFwcGVuIChkb3VibGUgZGVsZXRpb24pLgorLy8KKy8vIEEgZ29vZCB1c2Ugb2Yg
dGhpcyBjbGFzcyBpcyBzdG9yaW5nIG9iamVjdCByZWZlcmVuY2VzIGluIFNUTCBjb250YWluZXJz
LgorLy8gWW91IGNhbiBzYWZlbHkgcHV0IGxpbmtlZF9wdHI8PiBpbiBhIHZlY3Rvcjw+LgorLy8g
T3RoZXIgdXNlcyBtYXkgbm90IGJlIGFzIGdvb2QuCisvLworLy8gTm90ZTogSWYgeW91IHVzZSBh
biBpbmNvbXBsZXRlIHR5cGUgd2l0aCBsaW5rZWRfcHRyPD4sIHRoZSBjbGFzcworLy8gKmNvbnRh
aW5pbmcqIGxpbmtlZF9wdHI8PiBtdXN0IGhhdmUgYSBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3Rv
ciAoZXZlbgorLy8gaWYgdGhleSBkbyBub3RoaW5nISkuCisvLworLy8gQmlsbCBHaWJib25zIHN1
Z2dlc3RlZCB3ZSB1c2Ugc29tZXRoaW5nIGxpa2UgdGhpcy4KKy8vCisvLyBUaHJlYWQgU2FmZXR5
OgorLy8gICBVbmxpa2Ugb3RoZXIgbGlua2VkX3B0ciBpbXBsZW1lbnRhdGlvbnMsIGluIHRoaXMg
aW1wbGVtZW50YXRpb24KKy8vICAgYSBsaW5rZWRfcHRyIG9iamVjdCBpcyB0aHJlYWQtc2FmZSBp
biB0aGUgc2Vuc2UgdGhhdDoKKy8vICAgICAtIGl0J3Mgc2FmZSB0byBjb3B5IGxpbmtlZF9wdHIg
b2JqZWN0cyBjb25jdXJyZW50bHksCisvLyAgICAgLSBpdCdzIHNhZmUgdG8gY29weSAqZnJvbSog
YSBsaW5rZWRfcHRyIGFuZCByZWFkIGl0cyB1bmRlcmx5aW5nCisvLyAgICAgICByYXcgcG9pbnRl
ciAoZS5nLiB2aWEgZ2V0KCkpIGNvbmN1cnJlbnRseSwgYW5kCisvLyAgICAgLSBpdCdzIHNhZmUg
dG8gd3JpdGUgdG8gdHdvIGxpbmtlZF9wdHJzIHRoYXQgcG9pbnQgdG8gdGhlIHNhbWUKKy8vICAg
ICAgIHNoYXJlZCBvYmplY3QgY29uY3VycmVudGx5LgorLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6
IHJlbmFtZSB0aGlzIHRvIHNhZmVfbGlua2VkX3B0ciB0byBhdm9pZAorLy8gY29uZnVzaW9uIHdp
dGggbm9ybWFsIGxpbmtlZF9wdHIuCisKKyNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRF
Uk5BTF9HVEVTVF9MSU5LRURfUFRSX0hfCisjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5U
RVJOQUxfR1RFU1RfTElOS0VEX1BUUl9IXworCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVk
ZSA8YXNzZXJ0Lmg+CisKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCisK
K25hbWVzcGFjZSB0ZXN0aW5nIHsKK25hbWVzcGFjZSBpbnRlcm5hbCB7CisKKy8vIFByb3RlY3Rz
IGNvcHlpbmcgb2YgYWxsIGxpbmtlZF9wdHIgb2JqZWN0cy4KK0dURVNUX0FQSV8gR1RFU1RfREVD
TEFSRV9TVEFUSUNfTVVURVhfKGdfbGlua2VkX3B0cl9tdXRleCk7CisKKy8vIFRoaXMgaXMgdXNl
ZCBpbnRlcm5hbGx5IGJ5IGFsbCBpbnN0YW5jZXMgb2YgbGlua2VkX3B0cjw+LiAgSXQgbmVlZHMg
dG8gYmUKKy8vIGEgbm9uLXRlbXBsYXRlIGNsYXNzIGJlY2F1c2UgZGlmZmVyZW50IHR5cGVzIG9m
IGxpbmtlZF9wdHI8PiBjYW4gcmVmZXIgdG8KKy8vIHRoZSBzYW1lIG9iamVjdCAobGlua2VkX3B0
cjxTdXBlcmNsYXNzPihvYmopIHZzIGxpbmtlZF9wdHI8U3ViY2xhc3M+KG9iaikpLgorLy8gU28s
IGl0IG5lZWRzIHRvIGJlIHBvc3NpYmxlIGZvciBkaWZmZXJlbnQgdHlwZXMgb2YgbGlua2VkX3B0
ciB0byBwYXJ0aWNpcGF0ZQorLy8gaW4gdGhlIHNhbWUgY2lyY3VsYXIgbGlua2VkIGxpc3QsIHNv
IHdlIG5lZWQgYSBzaW5nbGUgY2xhc3MgdHlwZSBoZXJlLgorLy8KKy8vIERPIE5PVCBVU0UgVEhJ
UyBDTEFTUyBESVJFQ1RMWSBZT1VSU0VMRi4gIFVzZSBsaW5rZWRfcHRyPFQ+LgorY2xhc3MgbGlu
a2VkX3B0cl9pbnRlcm5hbCB7CisgcHVibGljOgorICAvLyBDcmVhdGUgYSBuZXcgY2lyY2xlIHRo
YXQgaW5jbHVkZXMgb25seSB0aGlzIGluc3RhbmNlLgorICB2b2lkIGpvaW5fbmV3KCkgeworICAg
IG5leHRfID0gdGhpczsKKyAgfQorCisgIC8vIE1hbnkgbGlua2VkX3B0ciBvcGVyYXRpb25zIG1h
eSBjaGFuZ2UgcC5saW5rXyBmb3Igc29tZSBsaW5rZWRfcHRyCisgIC8vIHZhcmlhYmxlIHAgaW4g
dGhlIHNhbWUgY2lyY2xlIGFzIHRoaXMgb2JqZWN0LiAgVGhlcmVmb3JlIHdlIG5lZWQKKyAgLy8g
dG8gcHJldmVudCB0d28gc3VjaCBvcGVyYXRpb25zIGZyb20gb2NjdXJyaW5nIGNvbmN1cnJlbnRs
eS4KKyAgLy8KKyAgLy8gTm90ZSB0aGF0IGRpZmZlcmVudCB0eXBlcyBvZiBsaW5rZWRfcHRyIG9i
amVjdHMgY2FuIGNvZXhpc3QgaW4gYQorICAvLyBjaXJjbGUgKGUuZy4gbGlua2VkX3B0cjxCYXNl
PiwgbGlua2VkX3B0cjxEZXJpdmVkMT4sIGFuZAorICAvLyBsaW5rZWRfcHRyPERlcml2ZWQyPiku
ICBUaGVyZWZvcmUgd2UgbXVzdCB1c2UgYSBzaW5nbGUgbXV0ZXggdG8KKyAgLy8gcHJvdGVjdCBh
bGwgbGlua2VkX3B0ciBvYmplY3RzLiAgVGhpcyBjYW4gY3JlYXRlIHNlcmlvdXMKKyAgLy8gY29u
dGVudGlvbiBpbiBwcm9kdWN0aW9uIGNvZGUsIGJ1dCBpcyBhY2NlcHRhYmxlIGluIGEgdGVzdGlu
ZworICAvLyBmcmFtZXdvcmsuCisKKyAgLy8gSm9pbiBhbiBleGlzdGluZyBjaXJjbGUuCisgIHZv
aWQgam9pbihsaW5rZWRfcHRyX2ludGVybmFsIGNvbnN0KiBwdHIpCisgICAgICBHVEVTVF9MT0NL
X0VYQ0xVREVEXyhnX2xpbmtlZF9wdHJfbXV0ZXgpIHsKKyAgICBNdXRleExvY2sgbG9jaygmZ19s
aW5rZWRfcHRyX211dGV4KTsKKworICAgIGxpbmtlZF9wdHJfaW50ZXJuYWwgY29uc3QqIHAgPSBw
dHI7CisgICAgd2hpbGUgKHAtPm5leHRfICE9IHB0cikgeworICAgICAgYXNzZXJ0KHAtPm5leHRf
ICE9IHRoaXMgJiYKKyAgICAgICAgICAgICAiVHJ5aW5nIHRvIGpvaW4oKSBhIGxpbmtlZCByaW5n
IHdlIGFyZSBhbHJlYWR5IGluLiAiCisgICAgICAgICAgICAgIklzIEdNb2NrIHRocmVhZCBzYWZl
dHkgZW5hYmxlZD8iKTsKKyAgICAgIHAgPSBwLT5uZXh0XzsKKyAgICB9CisgICAgcC0+bmV4dF8g
PSB0aGlzOworICAgIG5leHRfID0gcHRyOworICB9CisKKyAgLy8gTGVhdmUgd2hhdGV2ZXIgY2ly
Y2xlIHdlJ3JlIHBhcnQgb2YuICBSZXR1cm5zIHRydWUgaWYgd2Ugd2VyZSB0aGUKKyAgLy8gbGFz
dCBtZW1iZXIgb2YgdGhlIGNpcmNsZS4gIE9uY2UgdGhpcyBpcyBkb25lLCB5b3UgY2FuIGpvaW4o
KSBhbm90aGVyLgorICBib29sIGRlcGFydCgpCisgICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhn
X2xpbmtlZF9wdHJfbXV0ZXgpIHsKKyAgICBNdXRleExvY2sgbG9jaygmZ19saW5rZWRfcHRyX211
dGV4KTsKKworICAgIGlmIChuZXh0XyA9PSB0aGlzKSByZXR1cm4gdHJ1ZTsKKyAgICBsaW5rZWRf
cHRyX2ludGVybmFsIGNvbnN0KiBwID0gbmV4dF87CisgICAgd2hpbGUgKHAtPm5leHRfICE9IHRo
aXMpIHsKKyAgICAgIGFzc2VydChwLT5uZXh0XyAhPSBuZXh0XyAmJgorICAgICAgICAgICAgICJU
cnlpbmcgdG8gZGVwYXJ0KCkgYSBsaW5rZWQgcmluZyB3ZSBhcmUgbm90IGluLiAiCisgICAgICAg
ICAgICAgIklzIEdNb2NrIHRocmVhZCBzYWZldHkgZW5hYmxlZD8iKTsKKyAgICAgIHAgPSBwLT5u
ZXh0XzsKKyAgICB9CisgICAgcC0+bmV4dF8gPSBuZXh0XzsKKyAgICByZXR1cm4gZmFsc2U7Cisg
IH0KKworIHByaXZhdGU6CisgIG11dGFibGUgbGlua2VkX3B0cl9pbnRlcm5hbCBjb25zdCogbmV4
dF87Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIGxpbmtlZF9wdHIgeworIHB1
YmxpYzoKKyAgdHlwZWRlZiBUIGVsZW1lbnRfdHlwZTsKKworICAvLyBUYWtlIG92ZXIgb3duZXJz
aGlwIG9mIGEgcmF3IHBvaW50ZXIuICBUaGlzIHNob3VsZCBoYXBwZW4gYXMgc29vbiBhcworICAv
LyBwb3NzaWJsZSBhZnRlciB0aGUgb2JqZWN0IGlzIGNyZWF0ZWQuCisgIGV4cGxpY2l0IGxpbmtl
ZF9wdHIoVCogcHRyID0gTlVMTCkgeyBjYXB0dXJlKHB0cik7IH0KKyAgfmxpbmtlZF9wdHIoKSB7
IGRlcGFydCgpOyB9CisKKyAgLy8gQ29weSBhbiBleGlzdGluZyBsaW5rZWRfcHRyPD4sIGFkZGlu
ZyBvdXJzZWx2ZXMgdG8gdGhlIGxpc3Qgb2YgcmVmZXJlbmNlcy4KKyAgdGVtcGxhdGUgPHR5cGVu
YW1lIFU+IGxpbmtlZF9wdHIobGlua2VkX3B0cjxVPiBjb25zdCYgcHRyKSB7IGNvcHkoJnB0cik7
IH0KKyAgbGlua2VkX3B0cihsaW5rZWRfcHRyIGNvbnN0JiBwdHIpIHsgIC8vIE5PTElOVAorICAg
IGFzc2VydCgmcHRyICE9IHRoaXMpOworICAgIGNvcHkoJnB0cik7CisgIH0KKworICAvLyBBc3Np
Z25tZW50IHJlbGVhc2VzIHRoZSBvbGQgdmFsdWUgYW5kIGFjcXVpcmVzIHRoZSBuZXcuCisgIHRl
bXBsYXRlIDx0eXBlbmFtZSBVPiBsaW5rZWRfcHRyJiBvcGVyYXRvcj0obGlua2VkX3B0cjxVPiBj
b25zdCYgcHRyKSB7CisgICAgZGVwYXJ0KCk7CisgICAgY29weSgmcHRyKTsKKyAgICByZXR1cm4g
KnRoaXM7CisgIH0KKworICBsaW5rZWRfcHRyJiBvcGVyYXRvcj0obGlua2VkX3B0ciBjb25zdCYg
cHRyKSB7CisgICAgaWYgKCZwdHIgIT0gdGhpcykgeworICAgICAgZGVwYXJ0KCk7CisgICAgICBj
b3B5KCZwdHIpOworICAgIH0KKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKworICAvLyBTbWFydCBw
b2ludGVyIG1lbWJlcnMuCisgIHZvaWQgcmVzZXQoVCogcHRyID0gTlVMTCkgeworICAgIGRlcGFy
dCgpOworICAgIGNhcHR1cmUocHRyKTsKKyAgfQorICBUKiBnZXQoKSBjb25zdCB7IHJldHVybiB2
YWx1ZV87IH0KKyAgVCogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIHZhbHVlXzsgfQorICBU
JiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiAqdmFsdWVfOyB9CisKKyAgYm9vbCBvcGVyYXRv
cj09KFQqIHApIGNvbnN0IHsgcmV0dXJuIHZhbHVlXyA9PSBwOyB9CisgIGJvb2wgb3BlcmF0b3Ih
PShUKiBwKSBjb25zdCB7IHJldHVybiB2YWx1ZV8gIT0gcDsgfQorICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVT4KKyAgYm9vbCBvcGVyYXRvcj09KGxpbmtlZF9wdHI8VT4gY29uc3QmIHB0cikgY29uc3Qg
eworICAgIHJldHVybiB2YWx1ZV8gPT0gcHRyLmdldCgpOworICB9CisgIHRlbXBsYXRlIDx0eXBl
bmFtZSBVPgorICBib29sIG9wZXJhdG9yIT0obGlua2VkX3B0cjxVPiBjb25zdCYgcHRyKSBjb25z
dCB7CisgICAgcmV0dXJuIHZhbHVlXyAhPSBwdHIuZ2V0KCk7CisgIH0KKworIHByaXZhdGU6Cisg
IHRlbXBsYXRlIDx0eXBlbmFtZSBVPgorICBmcmllbmQgY2xhc3MgbGlua2VkX3B0cjsKKworICBU
KiB2YWx1ZV87CisgIGxpbmtlZF9wdHJfaW50ZXJuYWwgbGlua187CisKKyAgdm9pZCBkZXBhcnQo
KSB7CisgICAgaWYgKGxpbmtfLmRlcGFydCgpKSBkZWxldGUgdmFsdWVfOworICB9CisKKyAgdm9p
ZCBjYXB0dXJlKFQqIHB0cikgeworICAgIHZhbHVlXyA9IHB0cjsKKyAgICBsaW5rXy5qb2luX25l
dygpOworICB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+IHZvaWQgY29weShsaW5rZWRfcHRy
PFU+IGNvbnN0KiBwdHIpIHsKKyAgICB2YWx1ZV8gPSBwdHItPmdldCgpOworICAgIGlmICh2YWx1
ZV8pCisgICAgICBsaW5rXy5qb2luKCZwdHItPmxpbmtfKTsKKyAgICBlbHNlCisgICAgICBsaW5r
Xy5qb2luX25ldygpOworICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUKK2Jv
b2wgb3BlcmF0b3I9PShUKiBwdHIsIGNvbnN0IGxpbmtlZF9wdHI8VD4mIHgpIHsKKyAgcmV0dXJu
IHB0ciA9PSB4LmdldCgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUKK2Jvb2wg
b3BlcmF0b3IhPShUKiBwdHIsIGNvbnN0IGxpbmtlZF9wdHI8VD4mIHgpIHsKKyAgcmV0dXJuIHB0
ciAhPSB4LmdldCgpOworfQorCisvLyBBIGZ1bmN0aW9uIHRvIGNvbnZlcnQgVCogaW50byBsaW5r
ZWRfcHRyPFQ+CisvLyBEb2luZyBlLmcuIG1ha2VfbGlua2VkX3B0cihuZXcgRm9vQmFyQmF6PHR5
cGU+KGFyZykpIGlzIGEgc2hvcnRlciBub3RhdGlvbgorLy8gZm9yIGxpbmtlZF9wdHI8Rm9vQmFy
QmF6PHR5cGU+ID4obmV3IEZvb0JhckJhejx0eXBlPihhcmcpKQordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CitsaW5rZWRfcHRyPFQ+IG1ha2VfbGlua2VkX3B0cihUKiBwdHIpIHsKKyAgcmV0dXJuIGxp
bmtlZF9wdHI8VD4ocHRyKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCit9ICAvLyBu
YW1lc3BhY2UgdGVzdGluZworCisjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJO
QUxfR1RFU1RfTElOS0VEX1BUUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9n
dGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
aW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkMWQ4MWQyMGZmY2EzMmJhOGY5NTc3ZmY1YmQwNmJmZTJkZTc0NjMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFt
LXV0aWwtZ2VuZXJhdGVkLmgKQEAgLTAsMCArMSw1MTQ2IEBACisvLyBUaGlzIGZpbGUgd2FzIEdF
TkVSQVRFRCBieSBjb21tYW5kOgorLy8gICAgIHB1bXAucHkgZ3Rlc3QtcGFyYW0tdXRpbC1nZW5l
cmF0ZWQuaC5wdW1wCisvLyBETyBOT1QgRURJVCBCWSBIQU5EISEhCisKKy8vIENvcHlyaWdodCAy
MDA4IEdvb2dsZSBJbmMuCisvLyBBbGwgUmlnaHRzIFJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisv
LyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEF1dGhvcjogdmxhZGxAZ29vZ2xl
LmNvbSAoVmxhZCBMb3NldikKKworLy8gVHlwZSBhbmQgZnVuY3Rpb24gdXRpbGl0aWVzIGZvciBp
bXBsZW1lbnRpbmcgcGFyYW1ldGVyaXplZCB0ZXN0cy4KKy8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0
ZWQgYnkgYSBTQ1JJUFQuICBETyBOT1QgRURJVCBCWSBIQU5EIQorLy8KKy8vIEN1cnJlbnRseSBH
b29nbGUgVGVzdCBzdXBwb3J0cyBhdCBtb3N0IDUwIGFyZ3VtZW50cyBpbiBWYWx1ZXMsCisvLyBh
bmQgYXQgbW9zdCAxMCBhcmd1bWVudHMgaW4gQ29tYmluZS4gUGxlYXNlIGNvbnRhY3QKKy8vIGdv
b2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBzLmNvbSBpZiB5b3UgbmVlZCBtb3JlLgorLy8g
UGxlYXNlIG5vdGUgdGhhdCB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyB0byBDb21iaW5lIGlzIGxp
bWl0ZWQKKy8vIGJ5IHRoZSBtYXhpbXVtIGFyaXR5IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0
dXBsZSB3aGljaCBpcworLy8gY3VycmVudGx5IHNldCBhdCAxMC4KKworI2lmbmRlZiBHVEVTVF9J
TkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BBUkFNX1VUSUxfR0VORVJBVEVEX0hfCisjZGVm
aW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfUEFSQU1fVVRJTF9HRU5FUkFU
RURfSF8KKworLy8gc2NyaXB0cy9mdXNlX2d0ZXN0LnB5IGRlcGVuZHMgb24gZ3Rlc3QncyBvd24g
aGVhZGVyIGJlaW5nICNpbmNsdWRlZAorLy8gKnVuY29uZGl0aW9uYWxseSouICBUaGVyZWZvcmUg
dGhlc2UgI2luY2x1ZGVzIGNhbm5vdCBiZSBtb3ZlZAorLy8gaW5zaWRlICNpZiBHVEVTVF9IQVNf
UEFSQU1fVEVTVC4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLmgi
CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgorCisjaWYgR1RFU1RfSEFT
X1BBUkFNX1RFU1QKKworbmFtZXNwYWNlIHRlc3RpbmcgeworCisvLyBGb3J3YXJkIGRlY2xhcmF0
aW9ucyBvZiBWYWx1ZXNJbigpLCB3aGljaCBpcyBpbXBsZW1lbnRlZCBpbgorLy8gaW5jbHVkZS9n
dGVzdC9ndGVzdC1wYXJhbS10ZXN0LmguCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRm9yd2FyZEl0ZXJh
dG9yPgoraW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPAorICB0eXBlbmFtZSA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpJdGVyYXRvclRyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPgorVmFs
dWVzSW4oRm9yd2FyZEl0ZXJhdG9yIGJlZ2luLCBGb3J3YXJkSXRlcmF0b3IgZW5kKTsKKwordGVt
cGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOPgoraW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPFQ+
IFZhbHVlc0luKGNvbnN0IFQgKCZhcnJheSlbTl0pOworCit0ZW1wbGF0ZSA8Y2xhc3MgQ29udGFp
bmVyPgoraW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPHR5cGVuYW1lIENvbnRhaW5lcjo6dmFsdWVf
dHlwZT4gVmFsdWVzSW4oCisgICAgY29uc3QgQ29udGFpbmVyJiBjb250YWluZXIpOworCituYW1l
c3BhY2UgaW50ZXJuYWwgeworCisvLyBVc2VkIGluIHRoZSBWYWx1ZXMoKSBmdW5jdGlvbiB0byBw
cm92aWRlIHBvbHltb3JwaGljIGNhcGFiaWxpdGllcy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUMT4K
K2NsYXNzIFZhbHVlQXJyYXkxIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IFZhbHVlQXJyYXkxKFQx
IHYxKSA6IHYxXyh2MSkge30KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgb3BlcmF0b3Ig
UGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRp
Y19jYXN0PFQ+KHYxXyl9OworICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CisgIH0KKworIHBy
aXZhdGU6CisgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRl
ZC4KKyAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTEmIG90aGVyKTsKKworICBjb25z
dCBUMSB2MV87Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgorY2xh
c3MgVmFsdWVBcnJheTIgeworIHB1YmxpYzoKKyAgVmFsdWVBcnJheTIoVDEgdjEsIFQyIHYyKSA6
IHYxXyh2MSksIHYyXyh2Mikge30KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgb3BlcmF0
b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0
YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyl9OworICAgIHJldHVybiBWYWx1
ZXNJbihhcnJheSk7CisgIH0KKworIHByaXZhdGU6CisgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0g
YXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KKyAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVB
cnJheTImIG90aGVyKTsKKworICBjb25zdCBUMSB2MV87CisgIGNvbnN0IFQyIHYyXzsKK307CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzPgorY2xhc3Mg
VmFsdWVBcnJheTMgeworIHB1YmxpYzoKKyAgVmFsdWVBcnJheTMoVDEgdjEsIFQyIHYyLCBUMyB2
MykgOiB2MV8odjEpLCB2Ml8odjIpLCB2M18odjMpIHt9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CisgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgeworICAgIGNvbnN0IFQg
YXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2M18pfTsKKyAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwor
ICB9CisKKyBwcml2YXRlOgorICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMg
dW5zdXBwb3J0ZWQuCisgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXkzJiBvdGhlcik7
CisKKyAgY29uc3QgVDEgdjFfOworICBjb25zdCBUMiB2Ml87CisgIGNvbnN0IFQzIHYzXzsKK307
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBl
bmFtZSBUND4KK2NsYXNzIFZhbHVlQXJyYXk0IHsKKyBwdWJsaWM6CisgIFZhbHVlQXJyYXk0KFQx
IHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0KSA6IHYxXyh2MSksIHYyXyh2MiksIHYzXyh2MyksCisg
ICAgICB2NF8odjQpIHt9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIG9wZXJhdG9yIFBh
cmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgeworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNf
Y2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pfTsKKyAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkp
OworICB9CisKKyBwcml2YXRlOgorICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQg
aXMgdW5zdXBwb3J0ZWQuCisgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXk0JiBvdGhl
cik7CisKKyAgY29uc3QgVDEgdjFfOworICBjb25zdCBUMiB2Ml87CisgIGNvbnN0IFQzIHYzXzsK
KyAgY29uc3QgVDQgdjRfOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBU
MiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNT4KK2NsYXNzIFZhbHVlQXJy
YXk1IHsKKyBwdWJsaWM6CisgIFZhbHVlQXJyYXk1KFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0
LCBUNSB2NSkgOiB2MV8odjEpLCB2Ml8odjIpLCB2M18odjMpLAorICAgICAgdjRfKHY0KSwgdjVf
KHY1KSB7fQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBvcGVyYXRvciBQYXJhbUdlbmVy
YXRvcjxUPigpIGNvbnN0IHsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4o
djFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwg
c3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKX07CisgICAgcmV0dXJuIFZh
bHVlc0luKGFycmF5KTsKKyAgfQorCisgcHJpdmF0ZToKKyAgLy8gTm8gaW1wbGVtZW50YXRpb24g
LSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgorICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1
ZUFycmF5NSYgb3RoZXIpOworCisgIGNvbnN0IFQxIHYxXzsKKyAgY29uc3QgVDIgdjJfOworICBj
b25zdCBUMyB2M187CisgIGNvbnN0IFQ0IHY0XzsKKyAgY29uc3QgVDUgdjVfOworfTsKKwordGVt
cGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0
LCB0eXBlbmFtZSBUNSwKKyAgICB0eXBlbmFtZSBUNj4KK2NsYXNzIFZhbHVlQXJyYXk2IHsKKyBw
dWJsaWM6CisgIFZhbHVlQXJyYXk2KFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwg
VDYgdjYpIDogdjFfKHYxKSwgdjJfKHYyKSwKKyAgICAgIHYzXyh2MyksIHY0Xyh2NCksIHY1Xyh2
NSksIHY2Xyh2Nikge30KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgb3BlcmF0b3IgUGFy
YW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19j
YXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHY2Xyl9OworICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CisgIH0K
KworIHByaXZhdGU6CisgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1
cHBvcnRlZC4KKyAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTYmIG90aGVyKTsKKwor
ICBjb25zdCBUMSB2MV87CisgIGNvbnN0IFQyIHYyXzsKKyAgY29uc3QgVDMgdjNfOworICBjb25z
dCBUNCB2NF87CisgIGNvbnN0IFQ1IHY1XzsKKyAgY29uc3QgVDYgdjZfOworfTsKKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0
eXBlbmFtZSBUNSwKKyAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDc+CitjbGFzcyBWYWx1ZUFy
cmF5NyB7CisgcHVibGljOgorICBWYWx1ZUFycmF5NyhUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2
NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NykgOiB2MV8odjEpLAorICAgICAgdjJfKHYyKSwgdjNfKHYz
KSwgdjRfKHY0KSwgdjVfKHY1KSwgdjZfKHY2KSwgdjdfKHY3KSB7fQorCisgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgorICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKKyAgICBj
b25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3Rh
dGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nh
c3Q8VD4odjdfKX07CisgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKKyAgfQorCisgcHJpdmF0
ZToKKyAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgor
ICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5NyYgb3RoZXIpOworCisgIGNvbnN0IFQx
IHYxXzsKKyAgY29uc3QgVDIgdjJfOworICBjb25zdCBUMyB2M187CisgIGNvbnN0IFQ0IHY0XzsK
KyAgY29uc3QgVDUgdjVfOworICBjb25zdCBUNiB2Nl87CisgIGNvbnN0IFQ3IHY3XzsKK307CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFt
ZSBUNCwgdHlwZW5hbWUgVDUsCisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFt
ZSBUOD4KK2NsYXNzIFZhbHVlQXJyYXk4IHsKKyBwdWJsaWM6CisgIFZhbHVlQXJyYXk4KFQxIHYx
LCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LAorICAgICAgVDggdjgp
IDogdjFfKHYxKSwgdjJfKHYyKSwgdjNfKHYzKSwgdjRfKHY0KSwgdjVfKHY1KSwgdjZfKHY2KSwg
djdfKHY3KSwKKyAgICAgIHY4Xyh2OCkge30KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAg
b3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7CisgICAgY29uc3QgVCBhcnJheVtd
ID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0
YXRpY19jYXN0PFQ+KHY4Xyl9OworICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CisgIH0KKwor
IHByaXZhdGU6CisgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBv
cnRlZC4KKyAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTgmIG90aGVyKTsKKworICBj
b25zdCBUMSB2MV87CisgIGNvbnN0IFQyIHYyXzsKKyAgY29uc3QgVDMgdjNfOworICBjb25zdCBU
NCB2NF87CisgIGNvbnN0IFQ1IHY1XzsKKyAgY29uc3QgVDYgdjZfOworICBjb25zdCBUNyB2N187
CisgIGNvbnN0IFQ4IHY4XzsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUg
VDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCisgICAgdHlwZW5hbWUg
VDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDk+CitjbGFzcyBWYWx1ZUFy
cmF5OSB7CisgcHVibGljOgorICBWYWx1ZUFycmF5OShUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2
NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NywgVDggdjgsCisgICAgICBUOSB2OSkgOiB2MV8odjEpLCB2
Ml8odjIpLCB2M18odjMpLCB2NF8odjQpLCB2NV8odjUpLCB2Nl8odjYpLCB2N18odjcpLAorICAg
ICAgdjhfKHY4KSwgdjlfKHY5KSB7fQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBvcGVy
YXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7
c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGlj
X2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKX07CisgICAgcmV0dXJu
IFZhbHVlc0luKGFycmF5KTsKKyAgfQorCisgcHJpdmF0ZToKKyAgLy8gTm8gaW1wbGVtZW50YXRp
b24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgorICB2b2lkIG9wZXJhdG9yPShjb25zdCBW
YWx1ZUFycmF5OSYgb3RoZXIpOworCisgIGNvbnN0IFQxIHYxXzsKKyAgY29uc3QgVDIgdjJfOwor
ICBjb25zdCBUMyB2M187CisgIGNvbnN0IFQ0IHY0XzsKKyAgY29uc3QgVDUgdjVfOworICBjb25z
dCBUNiB2Nl87CisgIGNvbnN0IFQ3IHY3XzsKKyAgY29uc3QgVDggdjhfOworICBjb25zdCBUOSB2
OV87Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBU
MywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBU
NywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTA+CitjbGFzcyBWYWx1ZUFy
cmF5MTAgeworIHB1YmxpYzoKKyAgVmFsdWVBcnJheTEwKFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0
IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksCisgICAgICBUMTAgdjEwKSA6
IHYxXyh2MSksIHYyXyh2MiksIHYzXyh2MyksIHY0Xyh2NCksIHY1Xyh2NSksIHY2Xyh2NiksIHY3
Xyh2NyksCisgICAgICB2OF8odjgpLCB2OV8odjkpLCB2MTBfKHYxMCkge30KKworICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KKyAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Cisg
ICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+
KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0Xyks
IHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRp
Y19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pfTsKKyAgICByZXR1cm4gVmFsdWVzSW4oYXJy
YXkpOworICB9CisKKyBwcml2YXRlOgorICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1l
bnQgaXMgdW5zdXBwb3J0ZWQuCisgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXkxMCYg
b3RoZXIpOworCisgIGNvbnN0IFQxIHYxXzsKKyAgY29uc3QgVDIgdjJfOworICBjb25zdCBUMyB2
M187CisgIGNvbnN0IFQ0IHY0XzsKKyAgY29uc3QgVDUgdjVfOworICBjb25zdCBUNiB2Nl87Cisg
IGNvbnN0IFQ3IHY3XzsKKyAgY29uc3QgVDggdjhfOworICBjb25zdCBUOSB2OV87CisgIGNvbnN0
IFQxMCB2MTBfOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlw
ZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICB0eXBlbmFtZSBUNiwgdHlw
ZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAorICAgIHR5
cGVuYW1lIFQxMT4KK2NsYXNzIFZhbHVlQXJyYXkxMSB7CisgcHVibGljOgorICBWYWx1ZUFycmF5
MTEoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4
LCBUOSB2OSwKKyAgICAgIFQxMCB2MTAsIFQxMSB2MTEpIDogdjFfKHYxKSwgdjJfKHYyKSwgdjNf
KHYzKSwgdjRfKHY0KSwgdjVfKHY1KSwgdjZfKHY2KSwKKyAgICAgIHY3Xyh2NyksIHY4Xyh2OCks
IHY5Xyh2OSksIHYxMF8odjEwKSwgdjExXyh2MTEpIHt9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CisgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgeworICAgIGNvbnN0IFQg
YXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2Fz
dDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2
N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBz
dGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyl9OworICAgIHJldHVybiBW
YWx1ZXNJbihhcnJheSk7CisgIH0KKworIHByaXZhdGU6CisgIC8vIE5vIGltcGxlbWVudGF0aW9u
IC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KKyAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFs
dWVBcnJheTExJiBvdGhlcik7CisKKyAgY29uc3QgVDEgdjFfOworICBjb25zdCBUMiB2Ml87Cisg
IGNvbnN0IFQzIHYzXzsKKyAgY29uc3QgVDQgdjRfOworICBjb25zdCBUNSB2NV87CisgIGNvbnN0
IFQ2IHY2XzsKKyAgY29uc3QgVDcgdjdfOworICBjb25zdCBUOCB2OF87CisgIGNvbnN0IFQ5IHY5
XzsKKyAgY29uc3QgVDEwIHYxMF87CisgIGNvbnN0IFQxMSB2MTFfOworfTsKKwordGVtcGxhdGUg
PHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBl
bmFtZSBUNSwKKyAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBl
bmFtZSBUOSwgdHlwZW5hbWUgVDEwLAorICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyPgor
Y2xhc3MgVmFsdWVBcnJheTEyIHsKKyBwdWJsaWM6CisgIFZhbHVlQXJyYXkxMihUMSB2MSwgVDIg
djIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NywgVDggdjgsIFQ5IHY5LAorICAg
ICAgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMikgOiB2MV8odjEpLCB2Ml8odjIpLCB2M18odjMp
LCB2NF8odjQpLCB2NV8odjUpLAorICAgICAgdjZfKHY2KSwgdjdfKHY3KSwgdjhfKHY4KSwgdjlf
KHY5KSwgdjEwXyh2MTApLCB2MTFfKHYxMSksIHYxMl8odjEyKSB7fQorCisgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgorICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKKyAgICBj
b25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3Rh
dGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nh
c3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MTJfKX07CisgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKKyAg
fQorCisgcHJpdmF0ZToKKyAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVu
c3VwcG9ydGVkLgorICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5MTImIG90aGVyKTsK
KworICBjb25zdCBUMSB2MV87CisgIGNvbnN0IFQyIHYyXzsKKyAgY29uc3QgVDMgdjNfOworICBj
b25zdCBUNCB2NF87CisgIGNvbnN0IFQ1IHY1XzsKKyAgY29uc3QgVDYgdjZfOworICBjb25zdCBU
NyB2N187CisgIGNvbnN0IFQ4IHY4XzsKKyAgY29uc3QgVDkgdjlfOworICBjb25zdCBUMTAgdjEw
XzsKKyAgY29uc3QgVDExIHYxMV87CisgIGNvbnN0IFQxMiB2MTJfOworfTsKKwordGVtcGxhdGUg
PHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBl
bmFtZSBUNSwKKyAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBl
bmFtZSBUOSwgdHlwZW5hbWUgVDEwLAorICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0
eXBlbmFtZSBUMTM+CitjbGFzcyBWYWx1ZUFycmF5MTMgeworIHB1YmxpYzoKKyAgVmFsdWVBcnJh
eTEzKFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2
OCwgVDkgdjksCisgICAgICBUMTAgdjEwLCBUMTEgdjExLCBUMTIgdjEyLCBUMTMgdjEzKSA6IHYx
Xyh2MSksIHYyXyh2MiksIHYzXyh2MyksIHY0Xyh2NCksCisgICAgICB2NV8odjUpLCB2Nl8odjYp
LCB2N18odjcpLCB2OF8odjgpLCB2OV8odjkpLCB2MTBfKHYxMCksIHYxMV8odjExKSwKKyAgICAg
IHYxMl8odjEyKSwgdjEzXyh2MTMpIHt9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIG9w
ZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgeworICAgIGNvbnN0IFQgYXJyYXlbXSA9
IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0
aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2Fz
dDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKX07CisgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5
KTsKKyAgfQorCisgcHJpdmF0ZToKKyAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50
IGlzIHVuc3VwcG9ydGVkLgorICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5MTMmIG90
aGVyKTsKKworICBjb25zdCBUMSB2MV87CisgIGNvbnN0IFQyIHYyXzsKKyAgY29uc3QgVDMgdjNf
OworICBjb25zdCBUNCB2NF87CisgIGNvbnN0IFQ1IHY1XzsKKyAgY29uc3QgVDYgdjZfOworICBj
b25zdCBUNyB2N187CisgIGNvbnN0IFQ4IHY4XzsKKyAgY29uc3QgVDkgdjlfOworICBjb25zdCBU
MTAgdjEwXzsKKyAgY29uc3QgVDExIHYxMV87CisgIGNvbnN0IFQxMiB2MTJfOworICBjb25zdCBU
MTMgdjEzXzsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVu
YW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCisgICAgdHlwZW5hbWUgVDYsIHR5cGVu
YW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKKyAgICB0eXBl
bmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQ+CitjbGFz
cyBWYWx1ZUFycmF5MTQgeworIHB1YmxpYzoKKyAgVmFsdWVBcnJheTE0KFQxIHYxLCBUMiB2Miwg
VDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksCisgICAgICBU
MTAgdjEwLCBUMTEgdjExLCBUMTIgdjEyLCBUMTMgdjEzLCBUMTQgdjE0KSA6IHYxXyh2MSksIHYy
Xyh2MiksIHYzXyh2MyksCisgICAgICB2NF8odjQpLCB2NV8odjUpLCB2Nl8odjYpLCB2N18odjcp
LCB2OF8odjgpLCB2OV8odjkpLCB2MTBfKHYxMCksCisgICAgICB2MTFfKHYxMSksIHYxMl8odjEy
KSwgdjEzXyh2MTMpLCB2MTRfKHYxNCkge30KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAg
b3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7CisgICAgY29uc3QgVCBhcnJheVtd
ID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0
YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19j
YXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKX07Cisg
ICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKKyAgfQorCisgcHJpdmF0ZToKKyAgLy8gTm8gaW1w
bGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgorICB2b2lkIG9wZXJhdG9y
PShjb25zdCBWYWx1ZUFycmF5MTQmIG90aGVyKTsKKworICBjb25zdCBUMSB2MV87CisgIGNvbnN0
IFQyIHYyXzsKKyAgY29uc3QgVDMgdjNfOworICBjb25zdCBUNCB2NF87CisgIGNvbnN0IFQ1IHY1
XzsKKyAgY29uc3QgVDYgdjZfOworICBjb25zdCBUNyB2N187CisgIGNvbnN0IFQ4IHY4XzsKKyAg
Y29uc3QgVDkgdjlfOworICBjb25zdCBUMTAgdjEwXzsKKyAgY29uc3QgVDExIHYxMV87CisgIGNv
bnN0IFQxMiB2MTJfOworICBjb25zdCBUMTMgdjEzXzsKKyAgY29uc3QgVDE0IHYxNF87Cit9Owor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5h
bWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5h
bWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCisgICAgdHlwZW5hbWUgVDExLCB0eXBl
bmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTU+CitjbGFz
cyBWYWx1ZUFycmF5MTUgeworIHB1YmxpYzoKKyAgVmFsdWVBcnJheTE1KFQxIHYxLCBUMiB2Miwg
VDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksCisgICAgICBU
MTAgdjEwLCBUMTEgdjExLCBUMTIgdjEyLCBUMTMgdjEzLCBUMTQgdjE0LCBUMTUgdjE1KSA6IHYx
Xyh2MSksIHYyXyh2MiksCisgICAgICB2M18odjMpLCB2NF8odjQpLCB2NV8odjUpLCB2Nl8odjYp
LCB2N18odjcpLCB2OF8odjgpLCB2OV8odjkpLCB2MTBfKHYxMCksCisgICAgICB2MTFfKHYxMSks
IHYxMl8odjEyKSwgdjEzXyh2MTMpLCB2MTRfKHYxNCksIHYxNV8odjE1KSB7fQorCisgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgorICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsK
KyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8
VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRf
KSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3Rh
dGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRp
Y19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKX07CisgICAgcmV0
dXJuIFZhbHVlc0luKGFycmF5KTsKKyAgfQorCisgcHJpdmF0ZToKKyAgLy8gTm8gaW1wbGVtZW50
YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgorICB2b2lkIG9wZXJhdG9yPShjb25z
dCBWYWx1ZUFycmF5MTUmIG90aGVyKTsKKworICBjb25zdCBUMSB2MV87CisgIGNvbnN0IFQyIHYy
XzsKKyAgY29uc3QgVDMgdjNfOworICBjb25zdCBUNCB2NF87CisgIGNvbnN0IFQ1IHY1XzsKKyAg
Y29uc3QgVDYgdjZfOworICBjb25zdCBUNyB2N187CisgIGNvbnN0IFQ4IHY4XzsKKyAgY29uc3Qg
VDkgdjlfOworICBjb25zdCBUMTAgdjEwXzsKKyAgY29uc3QgVDExIHYxMV87CisgIGNvbnN0IFQx
MiB2MTJfOworICBjb25zdCBUMTMgdjEzXzsKKyAgY29uc3QgVDE0IHYxNF87CisgIGNvbnN0IFQx
NSB2MTVfOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5h
bWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICB0eXBlbmFtZSBUNiwgdHlwZW5h
bWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAorICAgIHR5cGVu
YW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5h
bWUgVDE1LAorICAgIHR5cGVuYW1lIFQxNj4KK2NsYXNzIFZhbHVlQXJyYXkxNiB7CisgcHVibGlj
OgorICBWYWx1ZUFycmF5MTYoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2
NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwKKyAgICAgIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIs
IFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYpIDogdjFfKHYxKSwKKyAgICAgIHYy
Xyh2MiksIHYzXyh2MyksIHY0Xyh2NCksIHY1Xyh2NSksIHY2Xyh2NiksIHY3Xyh2NyksIHY4Xyh2
OCksIHY5Xyh2OSksCisgICAgICB2MTBfKHYxMCksIHYxMV8odjExKSwgdjEyXyh2MTIpLCB2MTNf
KHYxMyksIHYxNF8odjE0KSwgdjE1Xyh2MTUpLAorICAgICAgdjE2Xyh2MTYpIHt9CisKKyAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CisgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3Qg
eworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2Fz
dDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2
NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBz
dGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3Rh
dGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNf
Y2FzdDxUPih2MTZfKX07CisgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKKyAgfQorCisgcHJp
dmF0ZToKKyAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVk
LgorICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5MTYmIG90aGVyKTsKKworICBjb25z
dCBUMSB2MV87CisgIGNvbnN0IFQyIHYyXzsKKyAgY29uc3QgVDMgdjNfOworICBjb25zdCBUNCB2
NF87CisgIGNvbnN0IFQ1IHY1XzsKKyAgY29uc3QgVDYgdjZfOworICBjb25zdCBUNyB2N187Cisg
IGNvbnN0IFQ4IHY4XzsKKyAgY29uc3QgVDkgdjlfOworICBjb25zdCBUMTAgdjEwXzsKKyAgY29u
c3QgVDExIHYxMV87CisgIGNvbnN0IFQxMiB2MTJfOworICBjb25zdCBUMTMgdjEzXzsKKyAgY29u
c3QgVDE0IHYxNF87CisgIGNvbnN0IFQxNSB2MTVfOworICBjb25zdCBUMTYgdjE2XzsKK307CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFt
ZSBUNCwgdHlwZW5hbWUgVDUsCisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFt
ZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFtZSBUMTEsIHR5cGVu
YW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKKyAgICB0
eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNz4KK2NsYXNzIFZhbHVlQXJyYXkxNyB7CisgcHVibGlj
OgorICBWYWx1ZUFycmF5MTcoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2
NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwKKyAgICAgIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIs
IFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYsCisgICAgICBUMTcgdjE3KSA6IHYx
Xyh2MSksIHYyXyh2MiksIHYzXyh2MyksIHY0Xyh2NCksIHY1Xyh2NSksIHY2Xyh2NiksIHY3Xyh2
NyksCisgICAgICB2OF8odjgpLCB2OV8odjkpLCB2MTBfKHYxMCksIHYxMV8odjExKSwgdjEyXyh2
MTIpLCB2MTNfKHYxMyksIHYxNF8odjE0KSwKKyAgICAgIHYxNV8odjE1KSwgdjE2Xyh2MTYpLCB2
MTdfKHYxNykge30KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgb3BlcmF0b3IgUGFyYW1H
ZW5lcmF0b3I8VD4oKSBjb25zdCB7CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0
PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYz
XyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBz
dGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRp
Y19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKX07
CisgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKKyAgfQorCisgcHJpdmF0ZToKKyAgLy8gTm8g
aW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgorICB2b2lkIG9wZXJh
dG9yPShjb25zdCBWYWx1ZUFycmF5MTcmIG90aGVyKTsKKworICBjb25zdCBUMSB2MV87CisgIGNv
bnN0IFQyIHYyXzsKKyAgY29uc3QgVDMgdjNfOworICBjb25zdCBUNCB2NF87CisgIGNvbnN0IFQ1
IHY1XzsKKyAgY29uc3QgVDYgdjZfOworICBjb25zdCBUNyB2N187CisgIGNvbnN0IFQ4IHY4XzsK
KyAgY29uc3QgVDkgdjlfOworICBjb25zdCBUMTAgdjEwXzsKKyAgY29uc3QgVDExIHYxMV87Cisg
IGNvbnN0IFQxMiB2MTJfOworICBjb25zdCBUMTMgdjEzXzsKKyAgY29uc3QgVDE0IHYxNF87Cisg
IGNvbnN0IFQxNSB2MTVfOworICBjb25zdCBUMTYgdjE2XzsKKyAgY29uc3QgVDE3IHYxN187Cit9
OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlw
ZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlw
ZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCisgICAgdHlwZW5hbWUgVDExLCB0
eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCisg
ICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOD4KK2NsYXNzIFZhbHVl
QXJyYXkxOCB7CisgcHVibGljOgorICBWYWx1ZUFycmF5MTgoVDEgdjEsIFQyIHYyLCBUMyB2Mywg
VDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwKKyAgICAgIFQxMCB2MTAs
IFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYsIFQx
NyB2MTcsCisgICAgICBUMTggdjE4KSA6IHYxXyh2MSksIHYyXyh2MiksIHYzXyh2MyksIHY0Xyh2
NCksIHY1Xyh2NSksIHY2Xyh2NiksIHY3Xyh2NyksCisgICAgICB2OF8odjgpLCB2OV8odjkpLCB2
MTBfKHYxMCksIHYxMV8odjExKSwgdjEyXyh2MTIpLCB2MTNfKHYxMyksIHYxNF8odjE0KSwKKyAg
ICAgIHYxNV8odjE1KSwgdjE2Xyh2MTYpLCB2MTdfKHYxNyksIHYxOF8odjE4KSB7fQorCisgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgorICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0
IHsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nh
c3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4o
djRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwg
c3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0
YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGlj
X2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MThfKX07CisgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKKyAgfQorCisgcHJpdmF0
ZToKKyAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgor
ICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5MTgmIG90aGVyKTsKKworICBjb25zdCBU
MSB2MV87CisgIGNvbnN0IFQyIHYyXzsKKyAgY29uc3QgVDMgdjNfOworICBjb25zdCBUNCB2NF87
CisgIGNvbnN0IFQ1IHY1XzsKKyAgY29uc3QgVDYgdjZfOworICBjb25zdCBUNyB2N187CisgIGNv
bnN0IFQ4IHY4XzsKKyAgY29uc3QgVDkgdjlfOworICBjb25zdCBUMTAgdjEwXzsKKyAgY29uc3Qg
VDExIHYxMV87CisgIGNvbnN0IFQxMiB2MTJfOworICBjb25zdCBUMTMgdjEzXzsKKyAgY29uc3Qg
VDE0IHYxNF87CisgIGNvbnN0IFQxNSB2MTVfOworICBjb25zdCBUMTYgdjE2XzsKKyAgY29uc3Qg
VDE3IHYxN187CisgIGNvbnN0IFQxOCB2MThfOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAg
ICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlw
ZW5hbWUgVDEwLAorICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMs
IHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAorICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUg
VDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOT4KK2NsYXNzIFZhbHVlQXJyYXkxOSB7Cisg
cHVibGljOgorICBWYWx1ZUFycmF5MTkoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1
LCBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwKKyAgICAgIFQxMCB2MTAsIFQxMSB2MTEsIFQx
MiB2MTIsIFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYsIFQxNyB2MTcsCisgICAg
ICBUMTggdjE4LCBUMTkgdjE5KSA6IHYxXyh2MSksIHYyXyh2MiksIHYzXyh2MyksIHY0Xyh2NCks
IHY1Xyh2NSksIHY2Xyh2NiksCisgICAgICB2N18odjcpLCB2OF8odjgpLCB2OV8odjkpLCB2MTBf
KHYxMCksIHYxMV8odjExKSwgdjEyXyh2MTIpLCB2MTNfKHYxMyksCisgICAgICB2MTRfKHYxNCks
IHYxNV8odjE1KSwgdjE2Xyh2MTYpLCB2MTdfKHYxNyksIHYxOF8odjE4KSwgdjE5Xyh2MTkpIHt9
CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+
KCkgY29uc3QgeworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBz
dGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNf
Y2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8
VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2
MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8p
LCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKX07CisgICAgcmV0dXJuIFZh
bHVlc0luKGFycmF5KTsKKyAgfQorCisgcHJpdmF0ZToKKyAgLy8gTm8gaW1wbGVtZW50YXRpb24g
LSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgorICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1
ZUFycmF5MTkmIG90aGVyKTsKKworICBjb25zdCBUMSB2MV87CisgIGNvbnN0IFQyIHYyXzsKKyAg
Y29uc3QgVDMgdjNfOworICBjb25zdCBUNCB2NF87CisgIGNvbnN0IFQ1IHY1XzsKKyAgY29uc3Qg
VDYgdjZfOworICBjb25zdCBUNyB2N187CisgIGNvbnN0IFQ4IHY4XzsKKyAgY29uc3QgVDkgdjlf
OworICBjb25zdCBUMTAgdjEwXzsKKyAgY29uc3QgVDExIHYxMV87CisgIGNvbnN0IFQxMiB2MTJf
OworICBjb25zdCBUMTMgdjEzXzsKKyAgY29uc3QgVDE0IHYxNF87CisgIGNvbnN0IFQxNSB2MTVf
OworICBjb25zdCBUMTYgdjE2XzsKKyAgY29uc3QgVDE3IHYxN187CisgIGNvbnN0IFQxOCB2MThf
OworICBjb25zdCBUMTkgdjE5XzsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5h
bWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCisgICAgdHlwZW5h
bWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQx
MCwKKyAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFt
ZSBUMTQsIHR5cGVuYW1lIFQxNSwKKyAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlw
ZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMD4KK2NsYXNzIFZhbHVlQXJyYXky
MCB7CisgcHVibGljOgorICBWYWx1ZUFycmF5MjAoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQs
IFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwKKyAgICAgIFQxMCB2MTAsIFQxMSB2
MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYsIFQxNyB2MTcs
CisgICAgICBUMTggdjE4LCBUMTkgdjE5LCBUMjAgdjIwKSA6IHYxXyh2MSksIHYyXyh2MiksIHYz
Xyh2MyksIHY0Xyh2NCksIHY1Xyh2NSksCisgICAgICB2Nl8odjYpLCB2N18odjcpLCB2OF8odjgp
LCB2OV8odjkpLCB2MTBfKHYxMCksIHYxMV8odjExKSwgdjEyXyh2MTIpLAorICAgICAgdjEzXyh2
MTMpLCB2MTRfKHYxNCksIHYxNV8odjE1KSwgdjE2Xyh2MTYpLCB2MTdfKHYxNyksIHYxOF8odjE4
KSwKKyAgICAgIHYxOV8odjE5KSwgdjIwXyh2MjApIHt9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CisgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgeworICAgIGNvbnN0IFQg
YXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2Fz
dDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2
N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBz
dGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwg
c3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0
aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyl9OworICAgIHJldHVybiBWYWx1
ZXNJbihhcnJheSk7CisgIH0KKworIHByaXZhdGU6CisgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0g
YXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KKyAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVB
cnJheTIwJiBvdGhlcik7CisKKyAgY29uc3QgVDEgdjFfOworICBjb25zdCBUMiB2Ml87CisgIGNv
bnN0IFQzIHYzXzsKKyAgY29uc3QgVDQgdjRfOworICBjb25zdCBUNSB2NV87CisgIGNvbnN0IFQ2
IHY2XzsKKyAgY29uc3QgVDcgdjdfOworICBjb25zdCBUOCB2OF87CisgIGNvbnN0IFQ5IHY5XzsK
KyAgY29uc3QgVDEwIHYxMF87CisgIGNvbnN0IFQxMSB2MTFfOworICBjb25zdCBUMTIgdjEyXzsK
KyAgY29uc3QgVDEzIHYxM187CisgIGNvbnN0IFQxNCB2MTRfOworICBjb25zdCBUMTUgdjE1XzsK
KyAgY29uc3QgVDE2IHYxNl87CisgIGNvbnN0IFQxNyB2MTdfOworICBjb25zdCBUMTggdjE4XzsK
KyAgY29uc3QgVDE5IHYxOV87CisgIGNvbnN0IFQyMCB2MjBfOworfTsKKwordGVtcGxhdGUgPHR5
cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFt
ZSBUNSwKKyAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFt
ZSBUOSwgdHlwZW5hbWUgVDEwLAorICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBl
bmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAorICAgIHR5cGVuYW1lIFQxNiwg
dHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAor
ICAgIHR5cGVuYW1lIFQyMT4KK2NsYXNzIFZhbHVlQXJyYXkyMSB7CisgcHVibGljOgorICBWYWx1
ZUFycmF5MjEoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcs
IFQ4IHY4LCBUOSB2OSwKKyAgICAgIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMs
IFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYsIFQxNyB2MTcsCisgICAgICBUMTggdjE4LCBUMTkg
djE5LCBUMjAgdjIwLCBUMjEgdjIxKSA6IHYxXyh2MSksIHYyXyh2MiksIHYzXyh2MyksIHY0Xyh2
NCksCisgICAgICB2NV8odjUpLCB2Nl8odjYpLCB2N18odjcpLCB2OF8odjgpLCB2OV8odjkpLCB2
MTBfKHYxMCksIHYxMV8odjExKSwKKyAgICAgIHYxMl8odjEyKSwgdjEzXyh2MTMpLCB2MTRfKHYx
NCksIHYxNV8odjE1KSwgdjE2Xyh2MTYpLCB2MTdfKHYxNyksCisgICAgICB2MThfKHYxOCksIHYx
OV8odjE5KSwgdjIwXyh2MjApLCB2MjFfKHYyMSkge30KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KKyAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7CisgICAgY29uc3QgVCBh
cnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0
PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3
XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0
YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBz
dGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRp
Y19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjIxXyl9OworICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CisgIH0KKworIHByaXZh
dGU6CisgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4K
KyAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTIxJiBvdGhlcik7CisKKyAgY29uc3Qg
VDEgdjFfOworICBjb25zdCBUMiB2Ml87CisgIGNvbnN0IFQzIHYzXzsKKyAgY29uc3QgVDQgdjRf
OworICBjb25zdCBUNSB2NV87CisgIGNvbnN0IFQ2IHY2XzsKKyAgY29uc3QgVDcgdjdfOworICBj
b25zdCBUOCB2OF87CisgIGNvbnN0IFQ5IHY5XzsKKyAgY29uc3QgVDEwIHYxMF87CisgIGNvbnN0
IFQxMSB2MTFfOworICBjb25zdCBUMTIgdjEyXzsKKyAgY29uc3QgVDEzIHYxM187CisgIGNvbnN0
IFQxNCB2MTRfOworICBjb25zdCBUMTUgdjE1XzsKKyAgY29uc3QgVDE2IHYxNl87CisgIGNvbnN0
IFQxNyB2MTdfOworICBjb25zdCBUMTggdjE4XzsKKyAgY29uc3QgVDE5IHYxOV87CisgIGNvbnN0
IFQyMCB2MjBfOworICBjb25zdCBUMjEgdjIxXzsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
MSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCisg
ICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5
cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEz
LCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKKyAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1l
IFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKKyAgICB0eXBl
bmFtZSBUMjEsIHR5cGVuYW1lIFQyMj4KK2NsYXNzIFZhbHVlQXJyYXkyMiB7CisgcHVibGljOgor
ICBWYWx1ZUFycmF5MjIoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2Niwg
VDcgdjcsIFQ4IHY4LCBUOSB2OSwKKyAgICAgIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQx
MyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYsIFQxNyB2MTcsCisgICAgICBUMTggdjE4
LCBUMTkgdjE5LCBUMjAgdjIwLCBUMjEgdjIxLCBUMjIgdjIyKSA6IHYxXyh2MSksIHYyXyh2Miks
IHYzXyh2MyksCisgICAgICB2NF8odjQpLCB2NV8odjUpLCB2Nl8odjYpLCB2N18odjcpLCB2OF8o
djgpLCB2OV8odjkpLCB2MTBfKHYxMCksCisgICAgICB2MTFfKHYxMSksIHYxMl8odjEyKSwgdjEz
Xyh2MTMpLCB2MTRfKHYxNCksIHYxNV8odjE1KSwgdjE2Xyh2MTYpLAorICAgICAgdjE3Xyh2MTcp
LCB2MThfKHYxOCksIHYxOV8odjE5KSwgdjIwXyh2MjApLCB2MjFfKHYyMSksIHYyMl8odjIyKSB7
fQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxU
PigpIGNvbnN0IHsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwg
c3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGlj
X2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0
PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4o
djEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVf
KSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+
KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIy
Xyl9OworICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CisgIH0KKworIHByaXZhdGU6CisgIC8v
IE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KKyAgdm9pZCBv
cGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTIyJiBvdGhlcik7CisKKyAgY29uc3QgVDEgdjFfOwor
ICBjb25zdCBUMiB2Ml87CisgIGNvbnN0IFQzIHYzXzsKKyAgY29uc3QgVDQgdjRfOworICBjb25z
dCBUNSB2NV87CisgIGNvbnN0IFQ2IHY2XzsKKyAgY29uc3QgVDcgdjdfOworICBjb25zdCBUOCB2
OF87CisgIGNvbnN0IFQ5IHY5XzsKKyAgY29uc3QgVDEwIHYxMF87CisgIGNvbnN0IFQxMSB2MTFf
OworICBjb25zdCBUMTIgdjEyXzsKKyAgY29uc3QgVDEzIHYxM187CisgIGNvbnN0IFQxNCB2MTRf
OworICBjb25zdCBUMTUgdjE1XzsKKyAgY29uc3QgVDE2IHYxNl87CisgIGNvbnN0IFQxNyB2MTdf
OworICBjb25zdCBUMTggdjE4XzsKKyAgY29uc3QgVDE5IHYxOV87CisgIGNvbnN0IFQyMCB2MjBf
OworICBjb25zdCBUMjEgdjIxXzsKKyAgY29uc3QgVDIyIHYyMl87Cit9OworCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVu
YW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVu
YW1lIFQ5LCB0eXBlbmFtZSBUMTAsCisgICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5
cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCisgICAgdHlwZW5hbWUgVDE2
LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAs
CisgICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMz4KK2NsYXNzIFZh
bHVlQXJyYXkyMyB7CisgcHVibGljOgorICBWYWx1ZUFycmF5MjMoVDEgdjEsIFQyIHYyLCBUMyB2
MywgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwKKyAgICAgIFQxMCB2
MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYs
IFQxNyB2MTcsCisgICAgICBUMTggdjE4LCBUMTkgdjE5LCBUMjAgdjIwLCBUMjEgdjIxLCBUMjIg
djIyLCBUMjMgdjIzKSA6IHYxXyh2MSksIHYyXyh2MiksCisgICAgICB2M18odjMpLCB2NF8odjQp
LCB2NV8odjUpLCB2Nl8odjYpLCB2N18odjcpLCB2OF8odjgpLCB2OV8odjkpLCB2MTBfKHYxMCks
CisgICAgICB2MTFfKHYxMSksIHYxMl8odjEyKSwgdjEzXyh2MTMpLCB2MTRfKHYxNCksIHYxNV8o
djE1KSwgdjE2Xyh2MTYpLAorICAgICAgdjE3Xyh2MTcpLCB2MThfKHYxOCksIHYxOV8odjE5KSwg
djIwXyh2MjApLCB2MjFfKHYyMSksIHYyMl8odjIyKSwKKyAgICAgIHYyM18odjIzKSB7fQorCisg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNv
bnN0IHsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGlj
X2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8
VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZf
KSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYx
MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyks
IHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3Rh
dGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0
YXRpY19jYXN0PFQ+KHYyM18pfTsKKyAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOworICB9CisK
KyBwcml2YXRlOgorICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBw
b3J0ZWQuCisgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXkyMyYgb3RoZXIpOworCisg
IGNvbnN0IFQxIHYxXzsKKyAgY29uc3QgVDIgdjJfOworICBjb25zdCBUMyB2M187CisgIGNvbnN0
IFQ0IHY0XzsKKyAgY29uc3QgVDUgdjVfOworICBjb25zdCBUNiB2Nl87CisgIGNvbnN0IFQ3IHY3
XzsKKyAgY29uc3QgVDggdjhfOworICBjb25zdCBUOSB2OV87CisgIGNvbnN0IFQxMCB2MTBfOwor
ICBjb25zdCBUMTEgdjExXzsKKyAgY29uc3QgVDEyIHYxMl87CisgIGNvbnN0IFQxMyB2MTNfOwor
ICBjb25zdCBUMTQgdjE0XzsKKyAgY29uc3QgVDE1IHYxNV87CisgIGNvbnN0IFQxNiB2MTZfOwor
ICBjb25zdCBUMTcgdjE3XzsKKyAgY29uc3QgVDE4IHYxOF87CisgIGNvbnN0IFQxOSB2MTlfOwor
ICBjb25zdCBUMjAgdjIwXzsKKyAgY29uc3QgVDIxIHYyMV87CisgIGNvbnN0IFQyMiB2MjJfOwor
ICBjb25zdCBUMjMgdjIzXzsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUg
VDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCisgICAgdHlwZW5hbWUg
VDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwK
KyAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBU
MTQsIHR5cGVuYW1lIFQxNSwKKyAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5h
bWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKKyAgICB0eXBlbmFtZSBUMjEsIHR5
cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQ+CitjbGFzcyBWYWx1ZUFycmF5
MjQgeworIHB1YmxpYzoKKyAgVmFsdWVBcnJheTI0KFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0
LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksCisgICAgICBUMTAgdjEwLCBUMTEg
djExLCBUMTIgdjEyLCBUMTMgdjEzLCBUMTQgdjE0LCBUMTUgdjE1LCBUMTYgdjE2LCBUMTcgdjE3
LAorICAgICAgVDE4IHYxOCwgVDE5IHYxOSwgVDIwIHYyMCwgVDIxIHYyMSwgVDIyIHYyMiwgVDIz
IHYyMywgVDI0IHYyNCkgOiB2MV8odjEpLAorICAgICAgdjJfKHYyKSwgdjNfKHYzKSwgdjRfKHY0
KSwgdjVfKHY1KSwgdjZfKHY2KSwgdjdfKHY3KSwgdjhfKHY4KSwgdjlfKHY5KSwKKyAgICAgIHYx
MF8odjEwKSwgdjExXyh2MTEpLCB2MTJfKHYxMiksIHYxM18odjEzKSwgdjE0Xyh2MTQpLCB2MTVf
KHYxNSksCisgICAgICB2MTZfKHYxNiksIHYxN18odjE3KSwgdjE4Xyh2MTgpLCB2MTlfKHYxOSks
IHYyMF8odjIwKSwgdjIxXyh2MjEpLAorICAgICAgdjIyXyh2MjIpLCB2MjNfKHYyMyksIHYyNF8o
djI0KSB7fQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBvcGVyYXRvciBQYXJhbUdlbmVy
YXRvcjxUPigpIGNvbnN0IHsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4o
djFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwg
c3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRp
Y19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nh
c3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19j
YXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8
VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MjRfKX07CisgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKKyAgfQorCisgcHJpdmF0ZToKKyAg
Ly8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgorICB2b2lk
IG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5MjQmIG90aGVyKTsKKworICBjb25zdCBUMSB2MV87
CisgIGNvbnN0IFQyIHYyXzsKKyAgY29uc3QgVDMgdjNfOworICBjb25zdCBUNCB2NF87CisgIGNv
bnN0IFQ1IHY1XzsKKyAgY29uc3QgVDYgdjZfOworICBjb25zdCBUNyB2N187CisgIGNvbnN0IFQ4
IHY4XzsKKyAgY29uc3QgVDkgdjlfOworICBjb25zdCBUMTAgdjEwXzsKKyAgY29uc3QgVDExIHYx
MV87CisgIGNvbnN0IFQxMiB2MTJfOworICBjb25zdCBUMTMgdjEzXzsKKyAgY29uc3QgVDE0IHYx
NF87CisgIGNvbnN0IFQxNSB2MTVfOworICBjb25zdCBUMTYgdjE2XzsKKyAgY29uc3QgVDE3IHYx
N187CisgIGNvbnN0IFQxOCB2MThfOworICBjb25zdCBUMTkgdjE5XzsKKyAgY29uc3QgVDIwIHYy
MF87CisgIGNvbnN0IFQyMSB2MjFfOworICBjb25zdCBUMjIgdjIyXzsKKyAgY29uc3QgVDIzIHYy
M187CisgIGNvbnN0IFQyNCB2MjRfOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBl
bmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICB0eXBl
bmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUg
VDEwLAorICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVu
YW1lIFQxNCwgdHlwZW5hbWUgVDE1LAorICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0
eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAorICAgIHR5cGVuYW1lIFQy
MSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1
PgorY2xhc3MgVmFsdWVBcnJheTI1IHsKKyBwdWJsaWM6CisgIFZhbHVlQXJyYXkyNShUMSB2MSwg
VDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NywgVDggdjgsIFQ5IHY5LAor
ICAgICAgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMiwgVDEzIHYxMywgVDE0IHYxNCwgVDE1IHYx
NSwgVDE2IHYxNiwgVDE3IHYxNywKKyAgICAgIFQxOCB2MTgsIFQxOSB2MTksIFQyMCB2MjAsIFQy
MSB2MjEsIFQyMiB2MjIsIFQyMyB2MjMsIFQyNCB2MjQsCisgICAgICBUMjUgdjI1KSA6IHYxXyh2
MSksIHYyXyh2MiksIHYzXyh2MyksIHY0Xyh2NCksIHY1Xyh2NSksIHY2Xyh2NiksIHY3Xyh2Nyks
CisgICAgICB2OF8odjgpLCB2OV8odjkpLCB2MTBfKHYxMCksIHYxMV8odjExKSwgdjEyXyh2MTIp
LCB2MTNfKHYxMyksIHYxNF8odjE0KSwKKyAgICAgIHYxNV8odjE1KSwgdjE2Xyh2MTYpLCB2MTdf
KHYxNyksIHYxOF8odjE4KSwgdjE5Xyh2MTkpLCB2MjBfKHYyMCksCisgICAgICB2MjFfKHYyMSks
IHYyMl8odjIyKSwgdjIzXyh2MjMpLCB2MjRfKHYyNCksIHYyNV8odjI1KSB7fQorCisgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgorICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsK
KyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8
VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRf
KSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3Rh
dGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRp
Y19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nh
c3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19j
YXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8
VD4odjI1Xyl9OworICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CisgIH0KKworIHByaXZhdGU6
CisgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KKyAg
dm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTI1JiBvdGhlcik7CisKKyAgY29uc3QgVDEg
djFfOworICBjb25zdCBUMiB2Ml87CisgIGNvbnN0IFQzIHYzXzsKKyAgY29uc3QgVDQgdjRfOwor
ICBjb25zdCBUNSB2NV87CisgIGNvbnN0IFQ2IHY2XzsKKyAgY29uc3QgVDcgdjdfOworICBjb25z
dCBUOCB2OF87CisgIGNvbnN0IFQ5IHY5XzsKKyAgY29uc3QgVDEwIHYxMF87CisgIGNvbnN0IFQx
MSB2MTFfOworICBjb25zdCBUMTIgdjEyXzsKKyAgY29uc3QgVDEzIHYxM187CisgIGNvbnN0IFQx
NCB2MTRfOworICBjb25zdCBUMTUgdjE1XzsKKyAgY29uc3QgVDE2IHYxNl87CisgIGNvbnN0IFQx
NyB2MTdfOworICBjb25zdCBUMTggdjE4XzsKKyAgY29uc3QgVDE5IHYxOV87CisgIGNvbnN0IFQy
MCB2MjBfOworICBjb25zdCBUMjEgdjIxXzsKKyAgY29uc3QgVDIyIHYyMl87CisgIGNvbnN0IFQy
MyB2MjNfOworICBjb25zdCBUMjQgdjI0XzsKKyAgY29uc3QgVDI1IHYyNV87Cit9OworCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQs
IHR5cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgs
IHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCisgICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBU
MTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCisgICAgdHlwZW5h
bWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFt
ZSBUMjAsCisgICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlw
ZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCisgICAgdHlwZW5hbWUgVDI2PgorY2xhc3MgVmFsdWVB
cnJheTI2IHsKKyBwdWJsaWM6CisgIFZhbHVlQXJyYXkyNihUMSB2MSwgVDIgdjIsIFQzIHYzLCBU
NCB2NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NywgVDggdjgsIFQ5IHY5LAorICAgICAgVDEwIHYxMCwg
VDExIHYxMSwgVDEyIHYxMiwgVDEzIHYxMywgVDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3
IHYxNywKKyAgICAgIFQxOCB2MTgsIFQxOSB2MTksIFQyMCB2MjAsIFQyMSB2MjEsIFQyMiB2MjIs
IFQyMyB2MjMsIFQyNCB2MjQsIFQyNSB2MjUsCisgICAgICBUMjYgdjI2KSA6IHYxXyh2MSksIHYy
Xyh2MiksIHYzXyh2MyksIHY0Xyh2NCksIHY1Xyh2NSksIHY2Xyh2NiksIHY3Xyh2NyksCisgICAg
ICB2OF8odjgpLCB2OV8odjkpLCB2MTBfKHYxMCksIHYxMV8odjExKSwgdjEyXyh2MTIpLCB2MTNf
KHYxMyksIHYxNF8odjE0KSwKKyAgICAgIHYxNV8odjE1KSwgdjE2Xyh2MTYpLCB2MTdfKHYxNyks
IHYxOF8odjE4KSwgdjE5Xyh2MTkpLCB2MjBfKHYyMCksCisgICAgICB2MjFfKHYyMSksIHYyMl8o
djIyKSwgdjIzXyh2MjMpLCB2MjRfKHYyNCksIHYyNV8odjI1KSwgdjI2Xyh2MjYpIHt9CisKKyAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29u
c3QgeworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNf
Y2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxU
Pih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8p
LCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjEx
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwg
c3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0
aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3Rh
dGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNf
Y2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2Xyl9OworICAgIHJldHVybiBWYWx1ZXNJ
bihhcnJheSk7CisgIH0KKworIHByaXZhdGU6CisgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNz
aWdubWVudCBpcyB1bnN1cHBvcnRlZC4KKyAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJh
eTI2JiBvdGhlcik7CisKKyAgY29uc3QgVDEgdjFfOworICBjb25zdCBUMiB2Ml87CisgIGNvbnN0
IFQzIHYzXzsKKyAgY29uc3QgVDQgdjRfOworICBjb25zdCBUNSB2NV87CisgIGNvbnN0IFQ2IHY2
XzsKKyAgY29uc3QgVDcgdjdfOworICBjb25zdCBUOCB2OF87CisgIGNvbnN0IFQ5IHY5XzsKKyAg
Y29uc3QgVDEwIHYxMF87CisgIGNvbnN0IFQxMSB2MTFfOworICBjb25zdCBUMTIgdjEyXzsKKyAg
Y29uc3QgVDEzIHYxM187CisgIGNvbnN0IFQxNCB2MTRfOworICBjb25zdCBUMTUgdjE1XzsKKyAg
Y29uc3QgVDE2IHYxNl87CisgIGNvbnN0IFQxNyB2MTdfOworICBjb25zdCBUMTggdjE4XzsKKyAg
Y29uc3QgVDE5IHYxOV87CisgIGNvbnN0IFQyMCB2MjBfOworICBjb25zdCBUMjEgdjIxXzsKKyAg
Y29uc3QgVDIyIHYyMl87CisgIGNvbnN0IFQyMyB2MjNfOworICBjb25zdCBUMjQgdjI0XzsKKyAg
Y29uc3QgVDI1IHYyNV87CisgIGNvbnN0IFQyNiB2MjZfOworfTsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBU
NSwKKyAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBU
OSwgdHlwZW5hbWUgVDEwLAorICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFt
ZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAorICAgIHR5cGVuYW1lIFQxNiwgdHlw
ZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAorICAg
IHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwg
dHlwZW5hbWUgVDI1LAorICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3PgorY2xhc3MgVmFs
dWVBcnJheTI3IHsKKyBwdWJsaWM6CisgIFZhbHVlQXJyYXkyNyhUMSB2MSwgVDIgdjIsIFQzIHYz
LCBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NywgVDggdjgsIFQ5IHY5LAorICAgICAgVDEwIHYx
MCwgVDExIHYxMSwgVDEyIHYxMiwgVDEzIHYxMywgVDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwg
VDE3IHYxNywKKyAgICAgIFQxOCB2MTgsIFQxOSB2MTksIFQyMCB2MjAsIFQyMSB2MjEsIFQyMiB2
MjIsIFQyMyB2MjMsIFQyNCB2MjQsIFQyNSB2MjUsCisgICAgICBUMjYgdjI2LCBUMjcgdjI3KSA6
IHYxXyh2MSksIHYyXyh2MiksIHYzXyh2MyksIHY0Xyh2NCksIHY1Xyh2NSksIHY2Xyh2NiksCisg
ICAgICB2N18odjcpLCB2OF8odjgpLCB2OV8odjkpLCB2MTBfKHYxMCksIHYxMV8odjExKSwgdjEy
Xyh2MTIpLCB2MTNfKHYxMyksCisgICAgICB2MTRfKHYxNCksIHYxNV8odjE1KSwgdjE2Xyh2MTYp
LCB2MTdfKHYxNyksIHYxOF8odjE4KSwgdjE5Xyh2MTkpLAorICAgICAgdjIwXyh2MjApLCB2MjFf
KHYyMSksIHYyMl8odjIyKSwgdjIzXyh2MjMpLCB2MjRfKHYyNCksIHYyNV8odjI1KSwKKyAgICAg
IHYyNl8odjI2KSwgdjI3Xyh2MjcpIHt9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIG9w
ZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgeworICAgIGNvbnN0IFQgYXJyYXlbXSA9
IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0
aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2Fz
dDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nh
c3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxU
Pih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYy
MV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8
VD4odjI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pfTsKKyAgICByZXR1cm4gVmFs
dWVzSW4oYXJyYXkpOworICB9CisKKyBwcml2YXRlOgorICAvLyBObyBpbXBsZW1lbnRhdGlvbiAt
IGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCisgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVl
QXJyYXkyNyYgb3RoZXIpOworCisgIGNvbnN0IFQxIHYxXzsKKyAgY29uc3QgVDIgdjJfOworICBj
b25zdCBUMyB2M187CisgIGNvbnN0IFQ0IHY0XzsKKyAgY29uc3QgVDUgdjVfOworICBjb25zdCBU
NiB2Nl87CisgIGNvbnN0IFQ3IHY3XzsKKyAgY29uc3QgVDggdjhfOworICBjb25zdCBUOSB2OV87
CisgIGNvbnN0IFQxMCB2MTBfOworICBjb25zdCBUMTEgdjExXzsKKyAgY29uc3QgVDEyIHYxMl87
CisgIGNvbnN0IFQxMyB2MTNfOworICBjb25zdCBUMTQgdjE0XzsKKyAgY29uc3QgVDE1IHYxNV87
CisgIGNvbnN0IFQxNiB2MTZfOworICBjb25zdCBUMTcgdjE3XzsKKyAgY29uc3QgVDE4IHYxOF87
CisgIGNvbnN0IFQxOSB2MTlfOworICBjb25zdCBUMjAgdjIwXzsKKyAgY29uc3QgVDIxIHYyMV87
CisgIGNvbnN0IFQyMiB2MjJfOworICBjb25zdCBUMjMgdjIzXzsKKyAgY29uc3QgVDI0IHYyNF87
CisgIGNvbnN0IFQyNSB2MjVfOworICBjb25zdCBUMjYgdjI2XzsKKyAgY29uc3QgVDI3IHYyN187
Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywg
dHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywg
dHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCisgICAgdHlwZW5hbWUgVDEx
LCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUs
CisgICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUg
VDE5LCB0eXBlbmFtZSBUMjAsCisgICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVu
YW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCisgICAgdHlwZW5hbWUgVDI2LCB0
eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOD4KK2NsYXNzIFZhbHVlQXJyYXkyOCB7CisgcHVibGlj
OgorICBWYWx1ZUFycmF5MjgoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2
NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwKKyAgICAgIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIs
IFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYsIFQxNyB2MTcsCisgICAgICBUMTgg
djE4LCBUMTkgdjE5LCBUMjAgdjIwLCBUMjEgdjIxLCBUMjIgdjIyLCBUMjMgdjIzLCBUMjQgdjI0
LCBUMjUgdjI1LAorICAgICAgVDI2IHYyNiwgVDI3IHYyNywgVDI4IHYyOCkgOiB2MV8odjEpLCB2
Ml8odjIpLCB2M18odjMpLCB2NF8odjQpLCB2NV8odjUpLAorICAgICAgdjZfKHY2KSwgdjdfKHY3
KSwgdjhfKHY4KSwgdjlfKHY5KSwgdjEwXyh2MTApLCB2MTFfKHYxMSksIHYxMl8odjEyKSwKKyAg
ICAgIHYxM18odjEzKSwgdjE0Xyh2MTQpLCB2MTVfKHYxNSksIHYxNl8odjE2KSwgdjE3Xyh2MTcp
LCB2MThfKHYxOCksCisgICAgICB2MTlfKHYxOSksIHYyMF8odjIwKSwgdjIxXyh2MjEpLCB2MjJf
KHYyMiksIHYyM18odjIzKSwgdjI0Xyh2MjQpLAorICAgICAgdjI1Xyh2MjUpLCB2MjZfKHYyNiks
IHYyN18odjI3KSwgdjI4Xyh2MjgpIHt9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIG9w
ZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgeworICAgIGNvbnN0IFQgYXJyYXlbXSA9
IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0
aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2Fz
dDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nh
c3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxU
Pih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYy
MV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8
VD4odjI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2
MjhfKX07CisgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKKyAgfQorCisgcHJpdmF0ZToKKyAg
Ly8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgorICB2b2lk
IG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5MjgmIG90aGVyKTsKKworICBjb25zdCBUMSB2MV87
CisgIGNvbnN0IFQyIHYyXzsKKyAgY29uc3QgVDMgdjNfOworICBjb25zdCBUNCB2NF87CisgIGNv
bnN0IFQ1IHY1XzsKKyAgY29uc3QgVDYgdjZfOworICBjb25zdCBUNyB2N187CisgIGNvbnN0IFQ4
IHY4XzsKKyAgY29uc3QgVDkgdjlfOworICBjb25zdCBUMTAgdjEwXzsKKyAgY29uc3QgVDExIHYx
MV87CisgIGNvbnN0IFQxMiB2MTJfOworICBjb25zdCBUMTMgdjEzXzsKKyAgY29uc3QgVDE0IHYx
NF87CisgIGNvbnN0IFQxNSB2MTVfOworICBjb25zdCBUMTYgdjE2XzsKKyAgY29uc3QgVDE3IHYx
N187CisgIGNvbnN0IFQxOCB2MThfOworICBjb25zdCBUMTkgdjE5XzsKKyAgY29uc3QgVDIwIHYy
MF87CisgIGNvbnN0IFQyMSB2MjFfOworICBjb25zdCBUMjIgdjIyXzsKKyAgY29uc3QgVDIzIHYy
M187CisgIGNvbnN0IFQyNCB2MjRfOworICBjb25zdCBUMjUgdjI1XzsKKyAgY29uc3QgVDI2IHYy
Nl87CisgIGNvbnN0IFQyNyB2MjdfOworICBjb25zdCBUMjggdjI4XzsKK307CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlw
ZW5hbWUgVDUsCisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlw
ZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwg
dHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKKyAgICB0eXBlbmFtZSBU
MTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQy
MCwKKyAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFt
ZSBUMjQsIHR5cGVuYW1lIFQyNSwKKyAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlw
ZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjk+CitjbGFzcyBWYWx1ZUFycmF5MjkgeworIHB1YmxpYzoK
KyAgVmFsdWVBcnJheTI5KFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYs
IFQ3IHY3LCBUOCB2OCwgVDkgdjksCisgICAgICBUMTAgdjEwLCBUMTEgdjExLCBUMTIgdjEyLCBU
MTMgdjEzLCBUMTQgdjE0LCBUMTUgdjE1LCBUMTYgdjE2LCBUMTcgdjE3LAorICAgICAgVDE4IHYx
OCwgVDE5IHYxOSwgVDIwIHYyMCwgVDIxIHYyMSwgVDIyIHYyMiwgVDIzIHYyMywgVDI0IHYyNCwg
VDI1IHYyNSwKKyAgICAgIFQyNiB2MjYsIFQyNyB2MjcsIFQyOCB2MjgsIFQyOSB2MjkpIDogdjFf
KHYxKSwgdjJfKHYyKSwgdjNfKHYzKSwgdjRfKHY0KSwKKyAgICAgIHY1Xyh2NSksIHY2Xyh2Niks
IHY3Xyh2NyksIHY4Xyh2OCksIHY5Xyh2OSksIHYxMF8odjEwKSwgdjExXyh2MTEpLAorICAgICAg
djEyXyh2MTIpLCB2MTNfKHYxMyksIHYxNF8odjE0KSwgdjE1Xyh2MTUpLCB2MTZfKHYxNiksIHYx
N18odjE3KSwKKyAgICAgIHYxOF8odjE4KSwgdjE5Xyh2MTkpLCB2MjBfKHYyMCksIHYyMV8odjIx
KSwgdjIyXyh2MjIpLCB2MjNfKHYyMyksCisgICAgICB2MjRfKHYyNCksIHYyNV8odjI1KSwgdjI2
Xyh2MjYpLCB2MjdfKHYyNyksIHYyOF8odjI4KSwgdjI5Xyh2MjkpIHt9CisKKyAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CisgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgeworICAg
IGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2
Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBz
dGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNf
Y2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nh
c3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxU
Pih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYx
OF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8
VD4odjIzXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2
MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18p
LCBzdGF0aWNfY2FzdDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5Xyl9OworICAgIHJldHVy
biBWYWx1ZXNJbihhcnJheSk7CisgIH0KKworIHByaXZhdGU6CisgIC8vIE5vIGltcGxlbWVudGF0
aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KKyAgdm9pZCBvcGVyYXRvcj0oY29uc3Qg
VmFsdWVBcnJheTI5JiBvdGhlcik7CisKKyAgY29uc3QgVDEgdjFfOworICBjb25zdCBUMiB2Ml87
CisgIGNvbnN0IFQzIHYzXzsKKyAgY29uc3QgVDQgdjRfOworICBjb25zdCBUNSB2NV87CisgIGNv
bnN0IFQ2IHY2XzsKKyAgY29uc3QgVDcgdjdfOworICBjb25zdCBUOCB2OF87CisgIGNvbnN0IFQ5
IHY5XzsKKyAgY29uc3QgVDEwIHYxMF87CisgIGNvbnN0IFQxMSB2MTFfOworICBjb25zdCBUMTIg
djEyXzsKKyAgY29uc3QgVDEzIHYxM187CisgIGNvbnN0IFQxNCB2MTRfOworICBjb25zdCBUMTUg
djE1XzsKKyAgY29uc3QgVDE2IHYxNl87CisgIGNvbnN0IFQxNyB2MTdfOworICBjb25zdCBUMTgg
djE4XzsKKyAgY29uc3QgVDE5IHYxOV87CisgIGNvbnN0IFQyMCB2MjBfOworICBjb25zdCBUMjEg
djIxXzsKKyAgY29uc3QgVDIyIHYyMl87CisgIGNvbnN0IFQyMyB2MjNfOworICBjb25zdCBUMjQg
djI0XzsKKyAgY29uc3QgVDI1IHYyNV87CisgIGNvbnN0IFQyNiB2MjZfOworICBjb25zdCBUMjcg
djI3XzsKKyAgY29uc3QgVDI4IHYyOF87CisgIGNvbnN0IFQyOSB2MjlfOworfTsKKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0
eXBlbmFtZSBUNSwKKyAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0
eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAorICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEy
LCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAorICAgIHR5cGVuYW1l
IFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUg
VDIwLAorICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVu
YW1lIFQyNCwgdHlwZW5hbWUgVDI1LAorICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0
eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwPgorY2xhc3MgVmFsdWVBcnJh
eTMwIHsKKyBwdWJsaWM6CisgIFZhbHVlQXJyYXkzMChUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2
NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NywgVDggdjgsIFQ5IHY5LAorICAgICAgVDEwIHYxMCwgVDEx
IHYxMSwgVDEyIHYxMiwgVDEzIHYxMywgVDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYx
NywKKyAgICAgIFQxOCB2MTgsIFQxOSB2MTksIFQyMCB2MjAsIFQyMSB2MjEsIFQyMiB2MjIsIFQy
MyB2MjMsIFQyNCB2MjQsIFQyNSB2MjUsCisgICAgICBUMjYgdjI2LCBUMjcgdjI3LCBUMjggdjI4
LCBUMjkgdjI5LCBUMzAgdjMwKSA6IHYxXyh2MSksIHYyXyh2MiksIHYzXyh2MyksCisgICAgICB2
NF8odjQpLCB2NV8odjUpLCB2Nl8odjYpLCB2N18odjcpLCB2OF8odjgpLCB2OV8odjkpLCB2MTBf
KHYxMCksCisgICAgICB2MTFfKHYxMSksIHYxMl8odjEyKSwgdjEzXyh2MTMpLCB2MTRfKHYxNCks
IHYxNV8odjE1KSwgdjE2Xyh2MTYpLAorICAgICAgdjE3Xyh2MTcpLCB2MThfKHYxOCksIHYxOV8o
djE5KSwgdjIwXyh2MjApLCB2MjFfKHYyMSksIHYyMl8odjIyKSwKKyAgICAgIHYyM18odjIzKSwg
djI0Xyh2MjQpLCB2MjVfKHYyNSksIHYyNl8odjI2KSwgdjI3Xyh2MjcpLCB2MjhfKHYyOCksCisg
ICAgICB2MjlfKHYyOSksIHYzMF8odjMwKSB7fQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgor
ICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKKyAgICBjb25zdCBUIGFycmF5
W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4o
djVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwg
c3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGlj
X2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRp
Y19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nh
c3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19j
YXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8
VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MzBfKX07CisgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKKyAgfQorCisgcHJpdmF0ZToKKyAg
Ly8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgorICB2b2lk
IG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5MzAmIG90aGVyKTsKKworICBjb25zdCBUMSB2MV87
CisgIGNvbnN0IFQyIHYyXzsKKyAgY29uc3QgVDMgdjNfOworICBjb25zdCBUNCB2NF87CisgIGNv
bnN0IFQ1IHY1XzsKKyAgY29uc3QgVDYgdjZfOworICBjb25zdCBUNyB2N187CisgIGNvbnN0IFQ4
IHY4XzsKKyAgY29uc3QgVDkgdjlfOworICBjb25zdCBUMTAgdjEwXzsKKyAgY29uc3QgVDExIHYx
MV87CisgIGNvbnN0IFQxMiB2MTJfOworICBjb25zdCBUMTMgdjEzXzsKKyAgY29uc3QgVDE0IHYx
NF87CisgIGNvbnN0IFQxNSB2MTVfOworICBjb25zdCBUMTYgdjE2XzsKKyAgY29uc3QgVDE3IHYx
N187CisgIGNvbnN0IFQxOCB2MThfOworICBjb25zdCBUMTkgdjE5XzsKKyAgY29uc3QgVDIwIHYy
MF87CisgIGNvbnN0IFQyMSB2MjFfOworICBjb25zdCBUMjIgdjIyXzsKKyAgY29uc3QgVDIzIHYy
M187CisgIGNvbnN0IFQyNCB2MjRfOworICBjb25zdCBUMjUgdjI1XzsKKyAgY29uc3QgVDI2IHYy
Nl87CisgIGNvbnN0IFQyNyB2MjdfOworICBjb25zdCBUMjggdjI4XzsKKyAgY29uc3QgVDI5IHYy
OV87CisgIGNvbnN0IFQzMCB2MzBfOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBl
bmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICB0eXBl
bmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUg
VDEwLAorICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVu
YW1lIFQxNCwgdHlwZW5hbWUgVDE1LAorICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0
eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAorICAgIHR5cGVuYW1lIFQy
MSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1
LAorICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1l
IFQyOSwgdHlwZW5hbWUgVDMwLAorICAgIHR5cGVuYW1lIFQzMT4KK2NsYXNzIFZhbHVlQXJyYXkz
MSB7CisgcHVibGljOgorICBWYWx1ZUFycmF5MzEoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQs
IFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwKKyAgICAgIFQxMCB2MTAsIFQxMSB2
MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYsIFQxNyB2MTcs
CisgICAgICBUMTggdjE4LCBUMTkgdjE5LCBUMjAgdjIwLCBUMjEgdjIxLCBUMjIgdjIyLCBUMjMg
djIzLCBUMjQgdjI0LCBUMjUgdjI1LAorICAgICAgVDI2IHYyNiwgVDI3IHYyNywgVDI4IHYyOCwg
VDI5IHYyOSwgVDMwIHYzMCwgVDMxIHYzMSkgOiB2MV8odjEpLCB2Ml8odjIpLAorICAgICAgdjNf
KHYzKSwgdjRfKHY0KSwgdjVfKHY1KSwgdjZfKHY2KSwgdjdfKHY3KSwgdjhfKHY4KSwgdjlfKHY5
KSwgdjEwXyh2MTApLAorICAgICAgdjExXyh2MTEpLCB2MTJfKHYxMiksIHYxM18odjEzKSwgdjE0
Xyh2MTQpLCB2MTVfKHYxNSksIHYxNl8odjE2KSwKKyAgICAgIHYxN18odjE3KSwgdjE4Xyh2MTgp
LCB2MTlfKHYxOSksIHYyMF8odjIwKSwgdjIxXyh2MjEpLCB2MjJfKHYyMiksCisgICAgICB2MjNf
KHYyMyksIHYyNF8odjI0KSwgdjI1Xyh2MjUpLCB2MjZfKHYyNiksIHYyN18odjI3KSwgdjI4Xyh2
MjgpLAorICAgICAgdjI5Xyh2MjkpLCB2MzBfKHYzMCksIHYzMV8odjMxKSB7fQorCisgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgorICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsK
KyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8
VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRf
KSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3Rh
dGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRp
Y19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nh
c3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19j
YXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8
VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyl9OworICAgIHJldHVy
biBWYWx1ZXNJbihhcnJheSk7CisgIH0KKworIHByaXZhdGU6CisgIC8vIE5vIGltcGxlbWVudGF0
aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KKyAgdm9pZCBvcGVyYXRvcj0oY29uc3Qg
VmFsdWVBcnJheTMxJiBvdGhlcik7CisKKyAgY29uc3QgVDEgdjFfOworICBjb25zdCBUMiB2Ml87
CisgIGNvbnN0IFQzIHYzXzsKKyAgY29uc3QgVDQgdjRfOworICBjb25zdCBUNSB2NV87CisgIGNv
bnN0IFQ2IHY2XzsKKyAgY29uc3QgVDcgdjdfOworICBjb25zdCBUOCB2OF87CisgIGNvbnN0IFQ5
IHY5XzsKKyAgY29uc3QgVDEwIHYxMF87CisgIGNvbnN0IFQxMSB2MTFfOworICBjb25zdCBUMTIg
djEyXzsKKyAgY29uc3QgVDEzIHYxM187CisgIGNvbnN0IFQxNCB2MTRfOworICBjb25zdCBUMTUg
djE1XzsKKyAgY29uc3QgVDE2IHYxNl87CisgIGNvbnN0IFQxNyB2MTdfOworICBjb25zdCBUMTgg
djE4XzsKKyAgY29uc3QgVDE5IHYxOV87CisgIGNvbnN0IFQyMCB2MjBfOworICBjb25zdCBUMjEg
djIxXzsKKyAgY29uc3QgVDIyIHYyMl87CisgIGNvbnN0IFQyMyB2MjNfOworICBjb25zdCBUMjQg
djI0XzsKKyAgY29uc3QgVDI1IHYyNV87CisgIGNvbnN0IFQyNiB2MjZfOworICBjb25zdCBUMjcg
djI3XzsKKyAgY29uc3QgVDI4IHYyOF87CisgIGNvbnN0IFQyOSB2MjlfOworICBjb25zdCBUMzAg
djMwXzsKKyAgY29uc3QgVDMxIHYzMV87Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5
cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5
cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFt
ZSBUMTAsCisgICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlw
ZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCisgICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcs
IHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCisgICAgdHlwZW5hbWUg
VDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBU
MjUsCisgICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5h
bWUgVDI5LCB0eXBlbmFtZSBUMzAsCisgICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzI+Citj
bGFzcyBWYWx1ZUFycmF5MzIgeworIHB1YmxpYzoKKyAgVmFsdWVBcnJheTMyKFQxIHYxLCBUMiB2
MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksCisgICAg
ICBUMTAgdjEwLCBUMTEgdjExLCBUMTIgdjEyLCBUMTMgdjEzLCBUMTQgdjE0LCBUMTUgdjE1LCBU
MTYgdjE2LCBUMTcgdjE3LAorICAgICAgVDE4IHYxOCwgVDE5IHYxOSwgVDIwIHYyMCwgVDIxIHYy
MSwgVDIyIHYyMiwgVDIzIHYyMywgVDI0IHYyNCwgVDI1IHYyNSwKKyAgICAgIFQyNiB2MjYsIFQy
NyB2MjcsIFQyOCB2MjgsIFQyOSB2MjksIFQzMCB2MzAsIFQzMSB2MzEsIFQzMiB2MzIpIDogdjFf
KHYxKSwKKyAgICAgIHYyXyh2MiksIHYzXyh2MyksIHY0Xyh2NCksIHY1Xyh2NSksIHY2Xyh2Niks
IHY3Xyh2NyksIHY4Xyh2OCksIHY5Xyh2OSksCisgICAgICB2MTBfKHYxMCksIHYxMV8odjExKSwg
djEyXyh2MTIpLCB2MTNfKHYxMyksIHYxNF8odjE0KSwgdjE1Xyh2MTUpLAorICAgICAgdjE2Xyh2
MTYpLCB2MTdfKHYxNyksIHYxOF8odjE4KSwgdjE5Xyh2MTkpLCB2MjBfKHYyMCksIHYyMV8odjIx
KSwKKyAgICAgIHYyMl8odjIyKSwgdjIzXyh2MjMpLCB2MjRfKHYyNCksIHYyNV8odjI1KSwgdjI2
Xyh2MjYpLCB2MjdfKHYyNyksCisgICAgICB2MjhfKHYyOCksIHYyOV8odjI5KSwgdjMwXyh2MzAp
LCB2MzFfKHYzMSksIHYzMl8odjMyKSB7fQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBv
cGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKKyAgICBjb25zdCBUIGFycmF5W10g
PSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3Rh
dGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nh
c3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19j
YXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8
VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0
PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4o
djI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBf
KSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pfTsKKyAgICByZXR1
cm4gVmFsdWVzSW4oYXJyYXkpOworICB9CisKKyBwcml2YXRlOgorICAvLyBObyBpbXBsZW1lbnRh
dGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCisgIHZvaWQgb3BlcmF0b3I9KGNvbnN0
IFZhbHVlQXJyYXkzMiYgb3RoZXIpOworCisgIGNvbnN0IFQxIHYxXzsKKyAgY29uc3QgVDIgdjJf
OworICBjb25zdCBUMyB2M187CisgIGNvbnN0IFQ0IHY0XzsKKyAgY29uc3QgVDUgdjVfOworICBj
b25zdCBUNiB2Nl87CisgIGNvbnN0IFQ3IHY3XzsKKyAgY29uc3QgVDggdjhfOworICBjb25zdCBU
OSB2OV87CisgIGNvbnN0IFQxMCB2MTBfOworICBjb25zdCBUMTEgdjExXzsKKyAgY29uc3QgVDEy
IHYxMl87CisgIGNvbnN0IFQxMyB2MTNfOworICBjb25zdCBUMTQgdjE0XzsKKyAgY29uc3QgVDE1
IHYxNV87CisgIGNvbnN0IFQxNiB2MTZfOworICBjb25zdCBUMTcgdjE3XzsKKyAgY29uc3QgVDE4
IHYxOF87CisgIGNvbnN0IFQxOSB2MTlfOworICBjb25zdCBUMjAgdjIwXzsKKyAgY29uc3QgVDIx
IHYyMV87CisgIGNvbnN0IFQyMiB2MjJfOworICBjb25zdCBUMjMgdjIzXzsKKyAgY29uc3QgVDI0
IHYyNF87CisgIGNvbnN0IFQyNSB2MjVfOworICBjb25zdCBUMjYgdjI2XzsKKyAgY29uc3QgVDI3
IHYyN187CisgIGNvbnN0IFQyOCB2MjhfOworICBjb25zdCBUMjkgdjI5XzsKKyAgY29uc3QgVDMw
IHYzMF87CisgIGNvbnN0IFQzMSB2MzFfOworICBjb25zdCBUMzIgdjMyXzsKK307CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwg
dHlwZW5hbWUgVDUsCisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwg
dHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQx
MiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKKyAgICB0eXBlbmFt
ZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1l
IFQyMCwKKyAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBl
bmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKKyAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywg
dHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKKyAgICB0eXBlbmFtZSBU
MzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzPgorY2xhc3MgVmFsdWVBcnJheTMzIHsKKyBw
dWJsaWM6CisgIFZhbHVlQXJyYXkzMyhUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUs
IFQ2IHY2LCBUNyB2NywgVDggdjgsIFQ5IHY5LAorICAgICAgVDEwIHYxMCwgVDExIHYxMSwgVDEy
IHYxMiwgVDEzIHYxMywgVDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywKKyAgICAg
IFQxOCB2MTgsIFQxOSB2MTksIFQyMCB2MjAsIFQyMSB2MjEsIFQyMiB2MjIsIFQyMyB2MjMsIFQy
NCB2MjQsIFQyNSB2MjUsCisgICAgICBUMjYgdjI2LCBUMjcgdjI3LCBUMjggdjI4LCBUMjkgdjI5
LCBUMzAgdjMwLCBUMzEgdjMxLCBUMzIgdjMyLAorICAgICAgVDMzIHYzMykgOiB2MV8odjEpLCB2
Ml8odjIpLCB2M18odjMpLCB2NF8odjQpLCB2NV8odjUpLCB2Nl8odjYpLCB2N18odjcpLAorICAg
ICAgdjhfKHY4KSwgdjlfKHY5KSwgdjEwXyh2MTApLCB2MTFfKHYxMSksIHYxMl8odjEyKSwgdjEz
Xyh2MTMpLCB2MTRfKHYxNCksCisgICAgICB2MTVfKHYxNSksIHYxNl8odjE2KSwgdjE3Xyh2MTcp
LCB2MThfKHYxOCksIHYxOV8odjE5KSwgdjIwXyh2MjApLAorICAgICAgdjIxXyh2MjEpLCB2MjJf
KHYyMiksIHYyM18odjIzKSwgdjI0Xyh2MjQpLCB2MjVfKHYyNSksIHYyNl8odjI2KSwKKyAgICAg
IHYyN18odjI3KSwgdjI4Xyh2MjgpLCB2MjlfKHYyOSksIHYzMF8odjMwKSwgdjMxXyh2MzEpLCB2
MzJfKHYzMiksCisgICAgICB2MzNfKHYzMykge30KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
KyAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7CisgICAgY29uc3QgVCBhcnJh
eVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+
KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3Xyks
IHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRp
Y19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0
aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19j
YXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNf
Y2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0
PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjMzXyl9OworICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7Cisg
IH0KKworIHByaXZhdGU6CisgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1
bnN1cHBvcnRlZC4KKyAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTMzJiBvdGhlcik7
CisKKyAgY29uc3QgVDEgdjFfOworICBjb25zdCBUMiB2Ml87CisgIGNvbnN0IFQzIHYzXzsKKyAg
Y29uc3QgVDQgdjRfOworICBjb25zdCBUNSB2NV87CisgIGNvbnN0IFQ2IHY2XzsKKyAgY29uc3Qg
VDcgdjdfOworICBjb25zdCBUOCB2OF87CisgIGNvbnN0IFQ5IHY5XzsKKyAgY29uc3QgVDEwIHYx
MF87CisgIGNvbnN0IFQxMSB2MTFfOworICBjb25zdCBUMTIgdjEyXzsKKyAgY29uc3QgVDEzIHYx
M187CisgIGNvbnN0IFQxNCB2MTRfOworICBjb25zdCBUMTUgdjE1XzsKKyAgY29uc3QgVDE2IHYx
Nl87CisgIGNvbnN0IFQxNyB2MTdfOworICBjb25zdCBUMTggdjE4XzsKKyAgY29uc3QgVDE5IHYx
OV87CisgIGNvbnN0IFQyMCB2MjBfOworICBjb25zdCBUMjEgdjIxXzsKKyAgY29uc3QgVDIyIHYy
Ml87CisgIGNvbnN0IFQyMyB2MjNfOworICBjb25zdCBUMjQgdjI0XzsKKyAgY29uc3QgVDI1IHYy
NV87CisgIGNvbnN0IFQyNiB2MjZfOworICBjb25zdCBUMjcgdjI3XzsKKyAgY29uc3QgVDI4IHYy
OF87CisgIGNvbnN0IFQyOSB2MjlfOworICBjb25zdCBUMzAgdjMwXzsKKyAgY29uc3QgVDMxIHYz
MV87CisgIGNvbnN0IFQzMiB2MzJfOworICBjb25zdCBUMzMgdjMzXzsKK307CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlw
ZW5hbWUgVDUsCisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlw
ZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwg
dHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKKyAgICB0eXBlbmFtZSBU
MTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQy
MCwKKyAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFt
ZSBUMjQsIHR5cGVuYW1lIFQyNSwKKyAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlw
ZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKKyAgICB0eXBlbmFtZSBUMzEs
IHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQ+CitjbGFzcyBWYWx1ZUFy
cmF5MzQgeworIHB1YmxpYzoKKyAgVmFsdWVBcnJheTM0KFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0
IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksCisgICAgICBUMTAgdjEwLCBU
MTEgdjExLCBUMTIgdjEyLCBUMTMgdjEzLCBUMTQgdjE0LCBUMTUgdjE1LCBUMTYgdjE2LCBUMTcg
djE3LAorICAgICAgVDE4IHYxOCwgVDE5IHYxOSwgVDIwIHYyMCwgVDIxIHYyMSwgVDIyIHYyMiwg
VDIzIHYyMywgVDI0IHYyNCwgVDI1IHYyNSwKKyAgICAgIFQyNiB2MjYsIFQyNyB2MjcsIFQyOCB2
MjgsIFQyOSB2MjksIFQzMCB2MzAsIFQzMSB2MzEsIFQzMiB2MzIsIFQzMyB2MzMsCisgICAgICBU
MzQgdjM0KSA6IHYxXyh2MSksIHYyXyh2MiksIHYzXyh2MyksIHY0Xyh2NCksIHY1Xyh2NSksIHY2
Xyh2NiksIHY3Xyh2NyksCisgICAgICB2OF8odjgpLCB2OV8odjkpLCB2MTBfKHYxMCksIHYxMV8o
djExKSwgdjEyXyh2MTIpLCB2MTNfKHYxMyksIHYxNF8odjE0KSwKKyAgICAgIHYxNV8odjE1KSwg
djE2Xyh2MTYpLCB2MTdfKHYxNyksIHYxOF8odjE4KSwgdjE5Xyh2MTkpLCB2MjBfKHYyMCksCisg
ICAgICB2MjFfKHYyMSksIHYyMl8odjIyKSwgdjIzXyh2MjMpLCB2MjRfKHYyNCksIHYyNV8odjI1
KSwgdjI2Xyh2MjYpLAorICAgICAgdjI3Xyh2MjcpLCB2MjhfKHYyOCksIHYyOV8odjI5KSwgdjMw
Xyh2MzApLCB2MzFfKHYzMSksIHYzMl8odjMyKSwKKyAgICAgIHYzM18odjMzKSwgdjM0Xyh2MzQp
IHt9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9y
PFQ+KCkgY29uc3QgeworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8p
LCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0
aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nh
c3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxU
Pih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYx
NV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8
VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2
MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8p
LCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4o
djI5XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBzdGF0aWNfY2FzdDxUPih2MzFf
KSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzM18pLCBz
dGF0aWNfY2FzdDxUPih2MzRfKX07CisgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKKyAgfQor
CisgcHJpdmF0ZToKKyAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3Vw
cG9ydGVkLgorICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5MzQmIG90aGVyKTsKKwor
ICBjb25zdCBUMSB2MV87CisgIGNvbnN0IFQyIHYyXzsKKyAgY29uc3QgVDMgdjNfOworICBjb25z
dCBUNCB2NF87CisgIGNvbnN0IFQ1IHY1XzsKKyAgY29uc3QgVDYgdjZfOworICBjb25zdCBUNyB2
N187CisgIGNvbnN0IFQ4IHY4XzsKKyAgY29uc3QgVDkgdjlfOworICBjb25zdCBUMTAgdjEwXzsK
KyAgY29uc3QgVDExIHYxMV87CisgIGNvbnN0IFQxMiB2MTJfOworICBjb25zdCBUMTMgdjEzXzsK
KyAgY29uc3QgVDE0IHYxNF87CisgIGNvbnN0IFQxNSB2MTVfOworICBjb25zdCBUMTYgdjE2XzsK
KyAgY29uc3QgVDE3IHYxN187CisgIGNvbnN0IFQxOCB2MThfOworICBjb25zdCBUMTkgdjE5XzsK
KyAgY29uc3QgVDIwIHYyMF87CisgIGNvbnN0IFQyMSB2MjFfOworICBjb25zdCBUMjIgdjIyXzsK
KyAgY29uc3QgVDIzIHYyM187CisgIGNvbnN0IFQyNCB2MjRfOworICBjb25zdCBUMjUgdjI1XzsK
KyAgY29uc3QgVDI2IHYyNl87CisgIGNvbnN0IFQyNyB2MjdfOworICBjb25zdCBUMjggdjI4XzsK
KyAgY29uc3QgVDI5IHYyOV87CisgIGNvbnN0IFQzMCB2MzBfOworICBjb25zdCBUMzEgdjMxXzsK
KyAgY29uc3QgVDMyIHYzMl87CisgIGNvbnN0IFQzMyB2MzNfOworICBjb25zdCBUMzQgdjM0XzsK
K307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0
eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0
eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFtZSBUMTEs
IHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwK
KyAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBU
MTksIHR5cGVuYW1lIFQyMCwKKyAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5h
bWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKKyAgICB0eXBlbmFtZSBUMjYsIHR5
cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKKyAg
ICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQs
IHR5cGVuYW1lIFQzNT4KK2NsYXNzIFZhbHVlQXJyYXkzNSB7CisgcHVibGljOgorICBWYWx1ZUFy
cmF5MzUoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4
IHY4LCBUOSB2OSwKKyAgICAgIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQx
NCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYsIFQxNyB2MTcsCisgICAgICBUMTggdjE4LCBUMTkgdjE5
LCBUMjAgdjIwLCBUMjEgdjIxLCBUMjIgdjIyLCBUMjMgdjIzLCBUMjQgdjI0LCBUMjUgdjI1LAor
ICAgICAgVDI2IHYyNiwgVDI3IHYyNywgVDI4IHYyOCwgVDI5IHYyOSwgVDMwIHYzMCwgVDMxIHYz
MSwgVDMyIHYzMiwgVDMzIHYzMywKKyAgICAgIFQzNCB2MzQsIFQzNSB2MzUpIDogdjFfKHYxKSwg
djJfKHYyKSwgdjNfKHYzKSwgdjRfKHY0KSwgdjVfKHY1KSwgdjZfKHY2KSwKKyAgICAgIHY3Xyh2
NyksIHY4Xyh2OCksIHY5Xyh2OSksIHYxMF8odjEwKSwgdjExXyh2MTEpLCB2MTJfKHYxMiksIHYx
M18odjEzKSwKKyAgICAgIHYxNF8odjE0KSwgdjE1Xyh2MTUpLCB2MTZfKHYxNiksIHYxN18odjE3
KSwgdjE4Xyh2MTgpLCB2MTlfKHYxOSksCisgICAgICB2MjBfKHYyMCksIHYyMV8odjIxKSwgdjIy
Xyh2MjIpLCB2MjNfKHYyMyksIHYyNF8odjI0KSwgdjI1Xyh2MjUpLAorICAgICAgdjI2Xyh2MjYp
LCB2MjdfKHYyNyksIHYyOF8odjI4KSwgdjI5Xyh2MjkpLCB2MzBfKHYzMCksIHYzMV8odjMxKSwK
KyAgICAgIHYzMl8odjMyKSwgdjMzXyh2MzMpLCB2MzRfKHYzNCksIHYzNV8odjM1KSB7fQorCisg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNv
bnN0IHsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGlj
X2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8
VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZf
KSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYx
MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyks
IHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3Rh
dGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0
YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGlj
X2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRp
Y19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nh
c3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pfTsKKyAgICByZXR1cm4gVmFsdWVzSW4o
YXJyYXkpOworICB9CisKKyBwcml2YXRlOgorICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2ln
bm1lbnQgaXMgdW5zdXBwb3J0ZWQuCisgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXkz
NSYgb3RoZXIpOworCisgIGNvbnN0IFQxIHYxXzsKKyAgY29uc3QgVDIgdjJfOworICBjb25zdCBU
MyB2M187CisgIGNvbnN0IFQ0IHY0XzsKKyAgY29uc3QgVDUgdjVfOworICBjb25zdCBUNiB2Nl87
CisgIGNvbnN0IFQ3IHY3XzsKKyAgY29uc3QgVDggdjhfOworICBjb25zdCBUOSB2OV87CisgIGNv
bnN0IFQxMCB2MTBfOworICBjb25zdCBUMTEgdjExXzsKKyAgY29uc3QgVDEyIHYxMl87CisgIGNv
bnN0IFQxMyB2MTNfOworICBjb25zdCBUMTQgdjE0XzsKKyAgY29uc3QgVDE1IHYxNV87CisgIGNv
bnN0IFQxNiB2MTZfOworICBjb25zdCBUMTcgdjE3XzsKKyAgY29uc3QgVDE4IHYxOF87CisgIGNv
bnN0IFQxOSB2MTlfOworICBjb25zdCBUMjAgdjIwXzsKKyAgY29uc3QgVDIxIHYyMV87CisgIGNv
bnN0IFQyMiB2MjJfOworICBjb25zdCBUMjMgdjIzXzsKKyAgY29uc3QgVDI0IHYyNF87CisgIGNv
bnN0IFQyNSB2MjVfOworICBjb25zdCBUMjYgdjI2XzsKKyAgY29uc3QgVDI3IHYyN187CisgIGNv
bnN0IFQyOCB2MjhfOworICBjb25zdCBUMjkgdjI5XzsKKyAgY29uc3QgVDMwIHYzMF87CisgIGNv
bnN0IFQzMSB2MzFfOworICBjb25zdCBUMzIgdjMyXzsKKyAgY29uc3QgVDMzIHYzM187CisgIGNv
bnN0IFQzNCB2MzRfOworICBjb25zdCBUMzUgdjM1XzsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUs
CisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDks
IHR5cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUg
VDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKKyAgICB0eXBlbmFtZSBUMTYsIHR5cGVu
YW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKKyAgICB0
eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5
cGVuYW1lIFQyNSwKKyAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4
LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKKyAgICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1l
IFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1lIFQzNSwKKyAgICB0eXBl
bmFtZSBUMzY+CitjbGFzcyBWYWx1ZUFycmF5MzYgeworIHB1YmxpYzoKKyAgVmFsdWVBcnJheTM2
KFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwg
VDkgdjksCisgICAgICBUMTAgdjEwLCBUMTEgdjExLCBUMTIgdjEyLCBUMTMgdjEzLCBUMTQgdjE0
LCBUMTUgdjE1LCBUMTYgdjE2LCBUMTcgdjE3LAorICAgICAgVDE4IHYxOCwgVDE5IHYxOSwgVDIw
IHYyMCwgVDIxIHYyMSwgVDIyIHYyMiwgVDIzIHYyMywgVDI0IHYyNCwgVDI1IHYyNSwKKyAgICAg
IFQyNiB2MjYsIFQyNyB2MjcsIFQyOCB2MjgsIFQyOSB2MjksIFQzMCB2MzAsIFQzMSB2MzEsIFQz
MiB2MzIsIFQzMyB2MzMsCisgICAgICBUMzQgdjM0LCBUMzUgdjM1LCBUMzYgdjM2KSA6IHYxXyh2
MSksIHYyXyh2MiksIHYzXyh2MyksIHY0Xyh2NCksIHY1Xyh2NSksCisgICAgICB2Nl8odjYpLCB2
N18odjcpLCB2OF8odjgpLCB2OV8odjkpLCB2MTBfKHYxMCksIHYxMV8odjExKSwgdjEyXyh2MTIp
LAorICAgICAgdjEzXyh2MTMpLCB2MTRfKHYxNCksIHYxNV8odjE1KSwgdjE2Xyh2MTYpLCB2MTdf
KHYxNyksIHYxOF8odjE4KSwKKyAgICAgIHYxOV8odjE5KSwgdjIwXyh2MjApLCB2MjFfKHYyMSks
IHYyMl8odjIyKSwgdjIzXyh2MjMpLCB2MjRfKHYyNCksCisgICAgICB2MjVfKHYyNSksIHYyNl8o
djI2KSwgdjI3Xyh2MjcpLCB2MjhfKHYyOCksIHYyOV8odjI5KSwgdjMwXyh2MzApLAorICAgICAg
djMxXyh2MzEpLCB2MzJfKHYzMiksIHYzM18odjMzKSwgdjM0Xyh2MzQpLCB2MzVfKHYzNSksIHYz
Nl8odjM2KSB7fQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBvcGVyYXRvciBQYXJhbUdl
bmVyYXRvcjxUPigpIGNvbnN0IHsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8
VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNf
KSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0
YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGlj
X2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRp
Y19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nh
c3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19j
YXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8
VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MzZfKX07CisgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKKyAg
fQorCisgcHJpdmF0ZToKKyAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVu
c3VwcG9ydGVkLgorICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5MzYmIG90aGVyKTsK
KworICBjb25zdCBUMSB2MV87CisgIGNvbnN0IFQyIHYyXzsKKyAgY29uc3QgVDMgdjNfOworICBj
b25zdCBUNCB2NF87CisgIGNvbnN0IFQ1IHY1XzsKKyAgY29uc3QgVDYgdjZfOworICBjb25zdCBU
NyB2N187CisgIGNvbnN0IFQ4IHY4XzsKKyAgY29uc3QgVDkgdjlfOworICBjb25zdCBUMTAgdjEw
XzsKKyAgY29uc3QgVDExIHYxMV87CisgIGNvbnN0IFQxMiB2MTJfOworICBjb25zdCBUMTMgdjEz
XzsKKyAgY29uc3QgVDE0IHYxNF87CisgIGNvbnN0IFQxNSB2MTVfOworICBjb25zdCBUMTYgdjE2
XzsKKyAgY29uc3QgVDE3IHYxN187CisgIGNvbnN0IFQxOCB2MThfOworICBjb25zdCBUMTkgdjE5
XzsKKyAgY29uc3QgVDIwIHYyMF87CisgIGNvbnN0IFQyMSB2MjFfOworICBjb25zdCBUMjIgdjIy
XzsKKyAgY29uc3QgVDIzIHYyM187CisgIGNvbnN0IFQyNCB2MjRfOworICBjb25zdCBUMjUgdjI1
XzsKKyAgY29uc3QgVDI2IHYyNl87CisgIGNvbnN0IFQyNyB2MjdfOworICBjb25zdCBUMjggdjI4
XzsKKyAgY29uc3QgVDI5IHYyOV87CisgIGNvbnN0IFQzMCB2MzBfOworICBjb25zdCBUMzEgdjMx
XzsKKyAgY29uc3QgVDMyIHYzMl87CisgIGNvbnN0IFQzMyB2MzNfOworICBjb25zdCBUMzQgdjM0
XzsKKyAgY29uc3QgVDM1IHYzNV87CisgIGNvbnN0IFQzNiB2MzZfOworfTsKKwordGVtcGxhdGUg
PHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBl
bmFtZSBUNSwKKyAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBl
bmFtZSBUOSwgdHlwZW5hbWUgVDEwLAorICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0
eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAorICAgIHR5cGVuYW1lIFQx
NiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIw
LAorICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1l
IFQyNCwgdHlwZW5hbWUgVDI1LAorICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBl
bmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAorICAgIHR5cGVuYW1lIFQzMSwg
dHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNCwgdHlwZW5hbWUgVDM1LAor
ICAgIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3PgorY2xhc3MgVmFsdWVBcnJheTM3IHsKKyBw
dWJsaWM6CisgIFZhbHVlQXJyYXkzNyhUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUs
IFQ2IHY2LCBUNyB2NywgVDggdjgsIFQ5IHY5LAorICAgICAgVDEwIHYxMCwgVDExIHYxMSwgVDEy
IHYxMiwgVDEzIHYxMywgVDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywKKyAgICAg
IFQxOCB2MTgsIFQxOSB2MTksIFQyMCB2MjAsIFQyMSB2MjEsIFQyMiB2MjIsIFQyMyB2MjMsIFQy
NCB2MjQsIFQyNSB2MjUsCisgICAgICBUMjYgdjI2LCBUMjcgdjI3LCBUMjggdjI4LCBUMjkgdjI5
LCBUMzAgdjMwLCBUMzEgdjMxLCBUMzIgdjMyLCBUMzMgdjMzLAorICAgICAgVDM0IHYzNCwgVDM1
IHYzNSwgVDM2IHYzNiwgVDM3IHYzNykgOiB2MV8odjEpLCB2Ml8odjIpLCB2M18odjMpLCB2NF8o
djQpLAorICAgICAgdjVfKHY1KSwgdjZfKHY2KSwgdjdfKHY3KSwgdjhfKHY4KSwgdjlfKHY5KSwg
djEwXyh2MTApLCB2MTFfKHYxMSksCisgICAgICB2MTJfKHYxMiksIHYxM18odjEzKSwgdjE0Xyh2
MTQpLCB2MTVfKHYxNSksIHYxNl8odjE2KSwgdjE3Xyh2MTcpLAorICAgICAgdjE4Xyh2MTgpLCB2
MTlfKHYxOSksIHYyMF8odjIwKSwgdjIxXyh2MjEpLCB2MjJfKHYyMiksIHYyM18odjIzKSwKKyAg
ICAgIHYyNF8odjI0KSwgdjI1Xyh2MjUpLCB2MjZfKHYyNiksIHYyN18odjI3KSwgdjI4Xyh2Mjgp
LCB2MjlfKHYyOSksCisgICAgICB2MzBfKHYzMCksIHYzMV8odjMxKSwgdjMyXyh2MzIpLCB2MzNf
KHYzMyksIHYzNF8odjM0KSwgdjM1Xyh2MzUpLAorICAgICAgdjM2Xyh2MzYpLCB2MzdfKHYzNykg
e30KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8
VD4oKSBjb25zdCB7CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyks
IHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRp
Y19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2Fz
dDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+
KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1
XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxU
Pih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYy
Ml8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0Xyks
IHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2
MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8p
LCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0
YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pfTsKKyAgICByZXR1cm4gVmFsdWVz
SW4oYXJyYXkpOworICB9CisKKyBwcml2YXRlOgorICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFz
c2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCisgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJy
YXkzNyYgb3RoZXIpOworCisgIGNvbnN0IFQxIHYxXzsKKyAgY29uc3QgVDIgdjJfOworICBjb25z
dCBUMyB2M187CisgIGNvbnN0IFQ0IHY0XzsKKyAgY29uc3QgVDUgdjVfOworICBjb25zdCBUNiB2
Nl87CisgIGNvbnN0IFQ3IHY3XzsKKyAgY29uc3QgVDggdjhfOworICBjb25zdCBUOSB2OV87Cisg
IGNvbnN0IFQxMCB2MTBfOworICBjb25zdCBUMTEgdjExXzsKKyAgY29uc3QgVDEyIHYxMl87Cisg
IGNvbnN0IFQxMyB2MTNfOworICBjb25zdCBUMTQgdjE0XzsKKyAgY29uc3QgVDE1IHYxNV87Cisg
IGNvbnN0IFQxNiB2MTZfOworICBjb25zdCBUMTcgdjE3XzsKKyAgY29uc3QgVDE4IHYxOF87Cisg
IGNvbnN0IFQxOSB2MTlfOworICBjb25zdCBUMjAgdjIwXzsKKyAgY29uc3QgVDIxIHYyMV87Cisg
IGNvbnN0IFQyMiB2MjJfOworICBjb25zdCBUMjMgdjIzXzsKKyAgY29uc3QgVDI0IHYyNF87Cisg
IGNvbnN0IFQyNSB2MjVfOworICBjb25zdCBUMjYgdjI2XzsKKyAgY29uc3QgVDI3IHYyN187Cisg
IGNvbnN0IFQyOCB2MjhfOworICBjb25zdCBUMjkgdjI5XzsKKyAgY29uc3QgVDMwIHYzMF87Cisg
IGNvbnN0IFQzMSB2MzFfOworICBjb25zdCBUMzIgdjMyXzsKKyAgY29uc3QgVDMzIHYzM187Cisg
IGNvbnN0IFQzNCB2MzRfOworICBjb25zdCBUMzUgdjM1XzsKKyAgY29uc3QgVDM2IHYzNl87Cisg
IGNvbnN0IFQzNyB2MzdfOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBU
MiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICB0eXBlbmFtZSBU
NiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAor
ICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQx
NCwgdHlwZW5hbWUgVDE1LAorICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFt
ZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAorICAgIHR5cGVuYW1lIFQyMSwgdHlw
ZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAorICAg
IHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwg
dHlwZW5hbWUgVDMwLAorICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBU
MzMsIHR5cGVuYW1lIFQzNCwgdHlwZW5hbWUgVDM1LAorICAgIHR5cGVuYW1lIFQzNiwgdHlwZW5h
bWUgVDM3LCB0eXBlbmFtZSBUMzg+CitjbGFzcyBWYWx1ZUFycmF5MzggeworIHB1YmxpYzoKKyAg
VmFsdWVBcnJheTM4KFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYsIFQ3
IHY3LCBUOCB2OCwgVDkgdjksCisgICAgICBUMTAgdjEwLCBUMTEgdjExLCBUMTIgdjEyLCBUMTMg
djEzLCBUMTQgdjE0LCBUMTUgdjE1LCBUMTYgdjE2LCBUMTcgdjE3LAorICAgICAgVDE4IHYxOCwg
VDE5IHYxOSwgVDIwIHYyMCwgVDIxIHYyMSwgVDIyIHYyMiwgVDIzIHYyMywgVDI0IHYyNCwgVDI1
IHYyNSwKKyAgICAgIFQyNiB2MjYsIFQyNyB2MjcsIFQyOCB2MjgsIFQyOSB2MjksIFQzMCB2MzAs
IFQzMSB2MzEsIFQzMiB2MzIsIFQzMyB2MzMsCisgICAgICBUMzQgdjM0LCBUMzUgdjM1LCBUMzYg
djM2LCBUMzcgdjM3LCBUMzggdjM4KSA6IHYxXyh2MSksIHYyXyh2MiksIHYzXyh2MyksCisgICAg
ICB2NF8odjQpLCB2NV8odjUpLCB2Nl8odjYpLCB2N18odjcpLCB2OF8odjgpLCB2OV8odjkpLCB2
MTBfKHYxMCksCisgICAgICB2MTFfKHYxMSksIHYxMl8odjEyKSwgdjEzXyh2MTMpLCB2MTRfKHYx
NCksIHYxNV8odjE1KSwgdjE2Xyh2MTYpLAorICAgICAgdjE3Xyh2MTcpLCB2MThfKHYxOCksIHYx
OV8odjE5KSwgdjIwXyh2MjApLCB2MjFfKHYyMSksIHYyMl8odjIyKSwKKyAgICAgIHYyM18odjIz
KSwgdjI0Xyh2MjQpLCB2MjVfKHYyNSksIHYyNl8odjI2KSwgdjI3Xyh2MjcpLCB2MjhfKHYyOCks
CisgICAgICB2MjlfKHYyOSksIHYzMF8odjMwKSwgdjMxXyh2MzEpLCB2MzJfKHYzMiksIHYzM18o
djMzKSwgdjM0Xyh2MzQpLAorICAgICAgdjM1Xyh2MzUpLCB2MzZfKHYzNiksIHYzN18odjM3KSwg
djM4Xyh2MzgpIHt9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIG9wZXJhdG9yIFBhcmFt
R2VuZXJhdG9yPFQ+KCkgY29uc3QgeworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2Fz
dDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2
OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwg
c3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0
aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3Xyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3Rh
dGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNf
Y2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2MjhfKSwgc3RhdGlj
X2Nhc3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBzdGF0aWNfY2Fz
dDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYzM18pLCBzdGF0aWNfY2FzdDxUPih2MzRfKSwgc3RhdGljX2Nhc3Q8VD4odjM1XyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYzNl8pLCBzdGF0aWNfY2FzdDxUPih2MzdfKSwgc3RhdGljX2Nh
c3Q8VD4odjM4Xyl9OworICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CisgIH0KKworIHByaXZh
dGU6CisgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4K
KyAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTM4JiBvdGhlcik7CisKKyAgY29uc3Qg
VDEgdjFfOworICBjb25zdCBUMiB2Ml87CisgIGNvbnN0IFQzIHYzXzsKKyAgY29uc3QgVDQgdjRf
OworICBjb25zdCBUNSB2NV87CisgIGNvbnN0IFQ2IHY2XzsKKyAgY29uc3QgVDcgdjdfOworICBj
b25zdCBUOCB2OF87CisgIGNvbnN0IFQ5IHY5XzsKKyAgY29uc3QgVDEwIHYxMF87CisgIGNvbnN0
IFQxMSB2MTFfOworICBjb25zdCBUMTIgdjEyXzsKKyAgY29uc3QgVDEzIHYxM187CisgIGNvbnN0
IFQxNCB2MTRfOworICBjb25zdCBUMTUgdjE1XzsKKyAgY29uc3QgVDE2IHYxNl87CisgIGNvbnN0
IFQxNyB2MTdfOworICBjb25zdCBUMTggdjE4XzsKKyAgY29uc3QgVDE5IHYxOV87CisgIGNvbnN0
IFQyMCB2MjBfOworICBjb25zdCBUMjEgdjIxXzsKKyAgY29uc3QgVDIyIHYyMl87CisgIGNvbnN0
IFQyMyB2MjNfOworICBjb25zdCBUMjQgdjI0XzsKKyAgY29uc3QgVDI1IHYyNV87CisgIGNvbnN0
IFQyNiB2MjZfOworICBjb25zdCBUMjcgdjI3XzsKKyAgY29uc3QgVDI4IHYyOF87CisgIGNvbnN0
IFQyOSB2MjlfOworICBjb25zdCBUMzAgdjMwXzsKKyAgY29uc3QgVDMxIHYzMV87CisgIGNvbnN0
IFQzMiB2MzJfOworICBjb25zdCBUMzMgdjMzXzsKKyAgY29uc3QgVDM0IHYzNF87CisgIGNvbnN0
IFQzNSB2MzVfOworICBjb25zdCBUMzYgdjM2XzsKKyAgY29uc3QgVDM3IHYzN187CisgIGNvbnN0
IFQzOCB2MzhfOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlw
ZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICB0eXBlbmFtZSBUNiwgdHlw
ZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAorICAgIHR5
cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlw
ZW5hbWUgVDE1LAorICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgs
IHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAorICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUg
VDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAorICAgIHR5cGVu
YW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5h
bWUgVDMwLAorICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5
cGVuYW1lIFQzNCwgdHlwZW5hbWUgVDM1LAorICAgIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3
LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOT4KK2NsYXNzIFZhbHVlQXJyYXkzOSB7CisgcHVi
bGljOgorICBWYWx1ZUFycmF5MzkoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBU
NiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwKKyAgICAgIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2
MTIsIFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYsIFQxNyB2MTcsCisgICAgICBU
MTggdjE4LCBUMTkgdjE5LCBUMjAgdjIwLCBUMjEgdjIxLCBUMjIgdjIyLCBUMjMgdjIzLCBUMjQg
djI0LCBUMjUgdjI1LAorICAgICAgVDI2IHYyNiwgVDI3IHYyNywgVDI4IHYyOCwgVDI5IHYyOSwg
VDMwIHYzMCwgVDMxIHYzMSwgVDMyIHYzMiwgVDMzIHYzMywKKyAgICAgIFQzNCB2MzQsIFQzNSB2
MzUsIFQzNiB2MzYsIFQzNyB2MzcsIFQzOCB2MzgsIFQzOSB2MzkpIDogdjFfKHYxKSwgdjJfKHYy
KSwKKyAgICAgIHYzXyh2MyksIHY0Xyh2NCksIHY1Xyh2NSksIHY2Xyh2NiksIHY3Xyh2NyksIHY4
Xyh2OCksIHY5Xyh2OSksIHYxMF8odjEwKSwKKyAgICAgIHYxMV8odjExKSwgdjEyXyh2MTIpLCB2
MTNfKHYxMyksIHYxNF8odjE0KSwgdjE1Xyh2MTUpLCB2MTZfKHYxNiksCisgICAgICB2MTdfKHYx
NyksIHYxOF8odjE4KSwgdjE5Xyh2MTkpLCB2MjBfKHYyMCksIHYyMV8odjIxKSwgdjIyXyh2MjIp
LAorICAgICAgdjIzXyh2MjMpLCB2MjRfKHYyNCksIHYyNV8odjI1KSwgdjI2Xyh2MjYpLCB2Mjdf
KHYyNyksIHYyOF8odjI4KSwKKyAgICAgIHYyOV8odjI5KSwgdjMwXyh2MzApLCB2MzFfKHYzMSks
IHYzMl8odjMyKSwgdjMzXyh2MzMpLCB2MzRfKHYzNCksCisgICAgICB2MzVfKHYzNSksIHYzNl8o
djM2KSwgdjM3Xyh2MzcpLCB2MzhfKHYzOCksIHYzOV8odjM5KSB7fQorCisgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgorICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKKyAgICBj
b25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3Rh
dGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nh
c3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0
PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4o
djE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThf
KSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+
KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1
XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwg
c3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYz
Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0Xyks
IHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3Rh
dGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYzOF8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MzlfKX07CisgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKKyAgfQorCisgcHJp
dmF0ZToKKyAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVk
LgorICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5MzkmIG90aGVyKTsKKworICBjb25z
dCBUMSB2MV87CisgIGNvbnN0IFQyIHYyXzsKKyAgY29uc3QgVDMgdjNfOworICBjb25zdCBUNCB2
NF87CisgIGNvbnN0IFQ1IHY1XzsKKyAgY29uc3QgVDYgdjZfOworICBjb25zdCBUNyB2N187Cisg
IGNvbnN0IFQ4IHY4XzsKKyAgY29uc3QgVDkgdjlfOworICBjb25zdCBUMTAgdjEwXzsKKyAgY29u
c3QgVDExIHYxMV87CisgIGNvbnN0IFQxMiB2MTJfOworICBjb25zdCBUMTMgdjEzXzsKKyAgY29u
c3QgVDE0IHYxNF87CisgIGNvbnN0IFQxNSB2MTVfOworICBjb25zdCBUMTYgdjE2XzsKKyAgY29u
c3QgVDE3IHYxN187CisgIGNvbnN0IFQxOCB2MThfOworICBjb25zdCBUMTkgdjE5XzsKKyAgY29u
c3QgVDIwIHYyMF87CisgIGNvbnN0IFQyMSB2MjFfOworICBjb25zdCBUMjIgdjIyXzsKKyAgY29u
c3QgVDIzIHYyM187CisgIGNvbnN0IFQyNCB2MjRfOworICBjb25zdCBUMjUgdjI1XzsKKyAgY29u
c3QgVDI2IHYyNl87CisgIGNvbnN0IFQyNyB2MjdfOworICBjb25zdCBUMjggdjI4XzsKKyAgY29u
c3QgVDI5IHYyOV87CisgIGNvbnN0IFQzMCB2MzBfOworICBjb25zdCBUMzEgdjMxXzsKKyAgY29u
c3QgVDMyIHYzMl87CisgIGNvbnN0IFQzMyB2MzNfOworICBjb25zdCBUMzQgdjM0XzsKKyAgY29u
c3QgVDM1IHYzNV87CisgIGNvbnN0IFQzNiB2MzZfOworICBjb25zdCBUMzcgdjM3XzsKKyAgY29u
c3QgVDM4IHYzOF87CisgIGNvbnN0IFQzOSB2MzlfOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwK
KyAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwg
dHlwZW5hbWUgVDEwLAorICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBU
MTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAorICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5h
bWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAorICAgIHR5
cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlw
ZW5hbWUgVDI1LAorICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgs
IHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAorICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUg
VDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNCwgdHlwZW5hbWUgVDM1LAorICAgIHR5cGVu
YW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOSwgdHlwZW5h
bWUgVDQwPgorY2xhc3MgVmFsdWVBcnJheTQwIHsKKyBwdWJsaWM6CisgIFZhbHVlQXJyYXk0MChU
MSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NywgVDggdjgsIFQ5
IHY5LAorICAgICAgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMiwgVDEzIHYxMywgVDE0IHYxNCwg
VDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywKKyAgICAgIFQxOCB2MTgsIFQxOSB2MTksIFQyMCB2
MjAsIFQyMSB2MjEsIFQyMiB2MjIsIFQyMyB2MjMsIFQyNCB2MjQsIFQyNSB2MjUsCisgICAgICBU
MjYgdjI2LCBUMjcgdjI3LCBUMjggdjI4LCBUMjkgdjI5LCBUMzAgdjMwLCBUMzEgdjMxLCBUMzIg
djMyLCBUMzMgdjMzLAorICAgICAgVDM0IHYzNCwgVDM1IHYzNSwgVDM2IHYzNiwgVDM3IHYzNywg
VDM4IHYzOCwgVDM5IHYzOSwgVDQwIHY0MCkgOiB2MV8odjEpLAorICAgICAgdjJfKHYyKSwgdjNf
KHYzKSwgdjRfKHY0KSwgdjVfKHY1KSwgdjZfKHY2KSwgdjdfKHY3KSwgdjhfKHY4KSwgdjlfKHY5
KSwKKyAgICAgIHYxMF8odjEwKSwgdjExXyh2MTEpLCB2MTJfKHYxMiksIHYxM18odjEzKSwgdjE0
Xyh2MTQpLCB2MTVfKHYxNSksCisgICAgICB2MTZfKHYxNiksIHYxN18odjE3KSwgdjE4Xyh2MTgp
LCB2MTlfKHYxOSksIHYyMF8odjIwKSwgdjIxXyh2MjEpLAorICAgICAgdjIyXyh2MjIpLCB2MjNf
KHYyMyksIHYyNF8odjI0KSwgdjI1Xyh2MjUpLCB2MjZfKHYyNiksIHYyN18odjI3KSwKKyAgICAg
IHYyOF8odjI4KSwgdjI5Xyh2MjkpLCB2MzBfKHYzMCksIHYzMV8odjMxKSwgdjMyXyh2MzIpLCB2
MzNfKHYzMyksCisgICAgICB2MzRfKHYzNCksIHYzNV8odjM1KSwgdjM2Xyh2MzYpLCB2MzdfKHYz
NyksIHYzOF8odjM4KSwgdjM5Xyh2MzkpLAorICAgICAgdjQwXyh2NDApIHt9CisKKyAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CisgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3Qgewor
ICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxU
Pih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8p
LCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0
aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGlj
X2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2Fz
dDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nh
c3Q8VD4odjIzXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxU
Pih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYy
N18pLCBzdGF0aWNfY2FzdDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBzdGF0aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8
VD4odjMyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzM18pLCBzdGF0aWNfY2FzdDxUPih2
MzRfKSwgc3RhdGljX2Nhc3Q8VD4odjM1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzNl8p
LCBzdGF0aWNfY2FzdDxUPih2MzdfKSwgc3RhdGljX2Nhc3Q8VD4odjM4XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYzOV8pLCBzdGF0aWNfY2FzdDxUPih2NDBfKX07CisgICAgcmV0dXJuIFZh
bHVlc0luKGFycmF5KTsKKyAgfQorCisgcHJpdmF0ZToKKyAgLy8gTm8gaW1wbGVtZW50YXRpb24g
LSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgorICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1
ZUFycmF5NDAmIG90aGVyKTsKKworICBjb25zdCBUMSB2MV87CisgIGNvbnN0IFQyIHYyXzsKKyAg
Y29uc3QgVDMgdjNfOworICBjb25zdCBUNCB2NF87CisgIGNvbnN0IFQ1IHY1XzsKKyAgY29uc3Qg
VDYgdjZfOworICBjb25zdCBUNyB2N187CisgIGNvbnN0IFQ4IHY4XzsKKyAgY29uc3QgVDkgdjlf
OworICBjb25zdCBUMTAgdjEwXzsKKyAgY29uc3QgVDExIHYxMV87CisgIGNvbnN0IFQxMiB2MTJf
OworICBjb25zdCBUMTMgdjEzXzsKKyAgY29uc3QgVDE0IHYxNF87CisgIGNvbnN0IFQxNSB2MTVf
OworICBjb25zdCBUMTYgdjE2XzsKKyAgY29uc3QgVDE3IHYxN187CisgIGNvbnN0IFQxOCB2MThf
OworICBjb25zdCBUMTkgdjE5XzsKKyAgY29uc3QgVDIwIHYyMF87CisgIGNvbnN0IFQyMSB2MjFf
OworICBjb25zdCBUMjIgdjIyXzsKKyAgY29uc3QgVDIzIHYyM187CisgIGNvbnN0IFQyNCB2MjRf
OworICBjb25zdCBUMjUgdjI1XzsKKyAgY29uc3QgVDI2IHYyNl87CisgIGNvbnN0IFQyNyB2Mjdf
OworICBjb25zdCBUMjggdjI4XzsKKyAgY29uc3QgVDI5IHYyOV87CisgIGNvbnN0IFQzMCB2MzBf
OworICBjb25zdCBUMzEgdjMxXzsKKyAgY29uc3QgVDMyIHYzMl87CisgIGNvbnN0IFQzMyB2MzNf
OworICBjb25zdCBUMzQgdjM0XzsKKyAgY29uc3QgVDM1IHYzNV87CisgIGNvbnN0IFQzNiB2MzZf
OworICBjb25zdCBUMzcgdjM3XzsKKyAgY29uc3QgVDM4IHYzOF87CisgIGNvbnN0IFQzOSB2Mzlf
OworICBjb25zdCBUNDAgdjQwXzsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5h
bWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCisgICAgdHlwZW5h
bWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQx
MCwKKyAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFt
ZSBUMTQsIHR5cGVuYW1lIFQxNSwKKyAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlw
ZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKKyAgICB0eXBlbmFtZSBUMjEs
IHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwK
KyAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBU
MjksIHR5cGVuYW1lIFQzMCwKKyAgICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5h
bWUgVDMzLCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1lIFQzNSwKKyAgICB0eXBlbmFtZSBUMzYsIHR5
cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzksIHR5cGVuYW1lIFQ0MCwKKyAg
ICB0eXBlbmFtZSBUNDE+CitjbGFzcyBWYWx1ZUFycmF5NDEgeworIHB1YmxpYzoKKyAgVmFsdWVB
cnJheTQxKFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBU
OCB2OCwgVDkgdjksCisgICAgICBUMTAgdjEwLCBUMTEgdjExLCBUMTIgdjEyLCBUMTMgdjEzLCBU
MTQgdjE0LCBUMTUgdjE1LCBUMTYgdjE2LCBUMTcgdjE3LAorICAgICAgVDE4IHYxOCwgVDE5IHYx
OSwgVDIwIHYyMCwgVDIxIHYyMSwgVDIyIHYyMiwgVDIzIHYyMywgVDI0IHYyNCwgVDI1IHYyNSwK
KyAgICAgIFQyNiB2MjYsIFQyNyB2MjcsIFQyOCB2MjgsIFQyOSB2MjksIFQzMCB2MzAsIFQzMSB2
MzEsIFQzMiB2MzIsIFQzMyB2MzMsCisgICAgICBUMzQgdjM0LCBUMzUgdjM1LCBUMzYgdjM2LCBU
MzcgdjM3LCBUMzggdjM4LCBUMzkgdjM5LCBUNDAgdjQwLAorICAgICAgVDQxIHY0MSkgOiB2MV8o
djEpLCB2Ml8odjIpLCB2M18odjMpLCB2NF8odjQpLCB2NV8odjUpLCB2Nl8odjYpLCB2N18odjcp
LAorICAgICAgdjhfKHY4KSwgdjlfKHY5KSwgdjEwXyh2MTApLCB2MTFfKHYxMSksIHYxMl8odjEy
KSwgdjEzXyh2MTMpLCB2MTRfKHYxNCksCisgICAgICB2MTVfKHYxNSksIHYxNl8odjE2KSwgdjE3
Xyh2MTcpLCB2MThfKHYxOCksIHYxOV8odjE5KSwgdjIwXyh2MjApLAorICAgICAgdjIxXyh2MjEp
LCB2MjJfKHYyMiksIHYyM18odjIzKSwgdjI0Xyh2MjQpLCB2MjVfKHYyNSksIHYyNl8odjI2KSwK
KyAgICAgIHYyN18odjI3KSwgdjI4Xyh2MjgpLCB2MjlfKHYyOSksIHYzMF8odjMwKSwgdjMxXyh2
MzEpLCB2MzJfKHYzMiksCisgICAgICB2MzNfKHYzMyksIHYzNF8odjM0KSwgdjM1Xyh2MzUpLCB2
MzZfKHYzNiksIHYzN18odjM3KSwgdjM4Xyh2MzgpLAorICAgICAgdjM5Xyh2MzkpLCB2NDBfKHY0
MCksIHY0MV8odjQxKSB7fQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBvcGVyYXRvciBQ
YXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGlj
X2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8
VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEw
XyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwg
c3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYx
N18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5Xyks
IHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3Rh
dGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0
YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGlj
X2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3XyksIHN0YXRp
Y19jYXN0PFQ+KHYzOF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzlfKSwgc3RhdGljX2Nh
c3Q8VD4odjQwXyksIHN0YXRpY19jYXN0PFQ+KHY0MV8pfTsKKyAgICByZXR1cm4gVmFsdWVzSW4o
YXJyYXkpOworICB9CisKKyBwcml2YXRlOgorICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2ln
bm1lbnQgaXMgdW5zdXBwb3J0ZWQuCisgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXk0
MSYgb3RoZXIpOworCisgIGNvbnN0IFQxIHYxXzsKKyAgY29uc3QgVDIgdjJfOworICBjb25zdCBU
MyB2M187CisgIGNvbnN0IFQ0IHY0XzsKKyAgY29uc3QgVDUgdjVfOworICBjb25zdCBUNiB2Nl87
CisgIGNvbnN0IFQ3IHY3XzsKKyAgY29uc3QgVDggdjhfOworICBjb25zdCBUOSB2OV87CisgIGNv
bnN0IFQxMCB2MTBfOworICBjb25zdCBUMTEgdjExXzsKKyAgY29uc3QgVDEyIHYxMl87CisgIGNv
bnN0IFQxMyB2MTNfOworICBjb25zdCBUMTQgdjE0XzsKKyAgY29uc3QgVDE1IHYxNV87CisgIGNv
bnN0IFQxNiB2MTZfOworICBjb25zdCBUMTcgdjE3XzsKKyAgY29uc3QgVDE4IHYxOF87CisgIGNv
bnN0IFQxOSB2MTlfOworICBjb25zdCBUMjAgdjIwXzsKKyAgY29uc3QgVDIxIHYyMV87CisgIGNv
bnN0IFQyMiB2MjJfOworICBjb25zdCBUMjMgdjIzXzsKKyAgY29uc3QgVDI0IHYyNF87CisgIGNv
bnN0IFQyNSB2MjVfOworICBjb25zdCBUMjYgdjI2XzsKKyAgY29uc3QgVDI3IHYyN187CisgIGNv
bnN0IFQyOCB2MjhfOworICBjb25zdCBUMjkgdjI5XzsKKyAgY29uc3QgVDMwIHYzMF87CisgIGNv
bnN0IFQzMSB2MzFfOworICBjb25zdCBUMzIgdjMyXzsKKyAgY29uc3QgVDMzIHYzM187CisgIGNv
bnN0IFQzNCB2MzRfOworICBjb25zdCBUMzUgdjM1XzsKKyAgY29uc3QgVDM2IHYzNl87CisgIGNv
bnN0IFQzNyB2MzdfOworICBjb25zdCBUMzggdjM4XzsKKyAgY29uc3QgVDM5IHYzOV87CisgIGNv
bnN0IFQ0MCB2NDBfOworICBjb25zdCBUNDEgdjQxXzsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUs
CisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDks
IHR5cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUg
VDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKKyAgICB0eXBlbmFtZSBUMTYsIHR5cGVu
YW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKKyAgICB0
eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5
cGVuYW1lIFQyNSwKKyAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4
LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKKyAgICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1l
IFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1lIFQzNSwKKyAgICB0eXBl
bmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzksIHR5cGVu
YW1lIFQ0MCwKKyAgICB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0Mj4KK2NsYXNzIFZhbHVlQXJy
YXk0MiB7CisgcHVibGljOgorICBWYWx1ZUFycmF5NDIoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQg
djQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwKKyAgICAgIFQxMCB2MTAsIFQx
MSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYsIFQxNyB2
MTcsCisgICAgICBUMTggdjE4LCBUMTkgdjE5LCBUMjAgdjIwLCBUMjEgdjIxLCBUMjIgdjIyLCBU
MjMgdjIzLCBUMjQgdjI0LCBUMjUgdjI1LAorICAgICAgVDI2IHYyNiwgVDI3IHYyNywgVDI4IHYy
OCwgVDI5IHYyOSwgVDMwIHYzMCwgVDMxIHYzMSwgVDMyIHYzMiwgVDMzIHYzMywKKyAgICAgIFQz
NCB2MzQsIFQzNSB2MzUsIFQzNiB2MzYsIFQzNyB2MzcsIFQzOCB2MzgsIFQzOSB2MzksIFQ0MCB2
NDAsIFQ0MSB2NDEsCisgICAgICBUNDIgdjQyKSA6IHYxXyh2MSksIHYyXyh2MiksIHYzXyh2Myks
IHY0Xyh2NCksIHY1Xyh2NSksIHY2Xyh2NiksIHY3Xyh2NyksCisgICAgICB2OF8odjgpLCB2OV8o
djkpLCB2MTBfKHYxMCksIHYxMV8odjExKSwgdjEyXyh2MTIpLCB2MTNfKHYxMyksIHYxNF8odjE0
KSwKKyAgICAgIHYxNV8odjE1KSwgdjE2Xyh2MTYpLCB2MTdfKHYxNyksIHYxOF8odjE4KSwgdjE5
Xyh2MTkpLCB2MjBfKHYyMCksCisgICAgICB2MjFfKHYyMSksIHYyMl8odjIyKSwgdjIzXyh2MjMp
LCB2MjRfKHYyNCksIHYyNV8odjI1KSwgdjI2Xyh2MjYpLAorICAgICAgdjI3Xyh2MjcpLCB2Mjhf
KHYyOCksIHYyOV8odjI5KSwgdjMwXyh2MzApLCB2MzFfKHYzMSksIHYzMl8odjMyKSwKKyAgICAg
IHYzM18odjMzKSwgdjM0Xyh2MzQpLCB2MzVfKHYzNSksIHYzNl8odjM2KSwgdjM3Xyh2MzcpLCB2
MzhfKHYzOCksCisgICAgICB2MzlfKHYzOSksIHY0MF8odjQwKSwgdjQxXyh2NDEpLCB2NDJfKHY0
Mikge30KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0
b3I8VD4oKSBjb25zdCB7CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYx
XyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0
YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNf
Y2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0
PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2Fz
dDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+
KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0
XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxU
Pih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYz
MV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyks
IHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2
MzhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+KHY0MF8p
LCBzdGF0aWNfY2FzdDxUPih2NDFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQyXyl9Owor
ICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CisgIH0KKworIHByaXZhdGU6CisgIC8vIE5vIGlt
cGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KKyAgdm9pZCBvcGVyYXRv
cj0oY29uc3QgVmFsdWVBcnJheTQyJiBvdGhlcik7CisKKyAgY29uc3QgVDEgdjFfOworICBjb25z
dCBUMiB2Ml87CisgIGNvbnN0IFQzIHYzXzsKKyAgY29uc3QgVDQgdjRfOworICBjb25zdCBUNSB2
NV87CisgIGNvbnN0IFQ2IHY2XzsKKyAgY29uc3QgVDcgdjdfOworICBjb25zdCBUOCB2OF87Cisg
IGNvbnN0IFQ5IHY5XzsKKyAgY29uc3QgVDEwIHYxMF87CisgIGNvbnN0IFQxMSB2MTFfOworICBj
b25zdCBUMTIgdjEyXzsKKyAgY29uc3QgVDEzIHYxM187CisgIGNvbnN0IFQxNCB2MTRfOworICBj
b25zdCBUMTUgdjE1XzsKKyAgY29uc3QgVDE2IHYxNl87CisgIGNvbnN0IFQxNyB2MTdfOworICBj
b25zdCBUMTggdjE4XzsKKyAgY29uc3QgVDE5IHYxOV87CisgIGNvbnN0IFQyMCB2MjBfOworICBj
b25zdCBUMjEgdjIxXzsKKyAgY29uc3QgVDIyIHYyMl87CisgIGNvbnN0IFQyMyB2MjNfOworICBj
b25zdCBUMjQgdjI0XzsKKyAgY29uc3QgVDI1IHYyNV87CisgIGNvbnN0IFQyNiB2MjZfOworICBj
b25zdCBUMjcgdjI3XzsKKyAgY29uc3QgVDI4IHYyOF87CisgIGNvbnN0IFQyOSB2MjlfOworICBj
b25zdCBUMzAgdjMwXzsKKyAgY29uc3QgVDMxIHYzMV87CisgIGNvbnN0IFQzMiB2MzJfOworICBj
b25zdCBUMzMgdjMzXzsKKyAgY29uc3QgVDM0IHYzNF87CisgIGNvbnN0IFQzNSB2MzVfOworICBj
b25zdCBUMzYgdjM2XzsKKyAgY29uc3QgVDM3IHYzN187CisgIGNvbnN0IFQzOCB2MzhfOworICBj
b25zdCBUMzkgdjM5XzsKKyAgY29uc3QgVDQwIHY0MF87CisgIGNvbnN0IFQ0MSB2NDFfOworICBj
b25zdCBUNDIgdjQyXzsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIs
IHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCisgICAgdHlwZW5hbWUgVDYs
IHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKKyAg
ICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQs
IHR5cGVuYW1lIFQxNSwKKyAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUg
VDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKKyAgICB0eXBlbmFtZSBUMjEsIHR5cGVu
YW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKKyAgICB0
eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5
cGVuYW1lIFQzMCwKKyAgICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMz
LCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1lIFQzNSwKKyAgICB0eXBlbmFtZSBUMzYsIHR5cGVuYW1l
IFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzksIHR5cGVuYW1lIFQ0MCwKKyAgICB0eXBl
bmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzPgorY2xhc3MgVmFsdWVBcnJheTQz
IHsKKyBwdWJsaWM6CisgIFZhbHVlQXJyYXk0MyhUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwg
VDUgdjUsIFQ2IHY2LCBUNyB2NywgVDggdjgsIFQ5IHY5LAorICAgICAgVDEwIHYxMCwgVDExIHYx
MSwgVDEyIHYxMiwgVDEzIHYxMywgVDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywK
KyAgICAgIFQxOCB2MTgsIFQxOSB2MTksIFQyMCB2MjAsIFQyMSB2MjEsIFQyMiB2MjIsIFQyMyB2
MjMsIFQyNCB2MjQsIFQyNSB2MjUsCisgICAgICBUMjYgdjI2LCBUMjcgdjI3LCBUMjggdjI4LCBU
MjkgdjI5LCBUMzAgdjMwLCBUMzEgdjMxLCBUMzIgdjMyLCBUMzMgdjMzLAorICAgICAgVDM0IHYz
NCwgVDM1IHYzNSwgVDM2IHYzNiwgVDM3IHYzNywgVDM4IHYzOCwgVDM5IHYzOSwgVDQwIHY0MCwg
VDQxIHY0MSwKKyAgICAgIFQ0MiB2NDIsIFQ0MyB2NDMpIDogdjFfKHYxKSwgdjJfKHYyKSwgdjNf
KHYzKSwgdjRfKHY0KSwgdjVfKHY1KSwgdjZfKHY2KSwKKyAgICAgIHY3Xyh2NyksIHY4Xyh2OCks
IHY5Xyh2OSksIHYxMF8odjEwKSwgdjExXyh2MTEpLCB2MTJfKHYxMiksIHYxM18odjEzKSwKKyAg
ICAgIHYxNF8odjE0KSwgdjE1Xyh2MTUpLCB2MTZfKHYxNiksIHYxN18odjE3KSwgdjE4Xyh2MTgp
LCB2MTlfKHYxOSksCisgICAgICB2MjBfKHYyMCksIHYyMV8odjIxKSwgdjIyXyh2MjIpLCB2MjNf
KHYyMyksIHYyNF8odjI0KSwgdjI1Xyh2MjUpLAorICAgICAgdjI2Xyh2MjYpLCB2MjdfKHYyNyks
IHYyOF8odjI4KSwgdjI5Xyh2MjkpLCB2MzBfKHYzMCksIHYzMV8odjMxKSwKKyAgICAgIHYzMl8o
djMyKSwgdjMzXyh2MzMpLCB2MzRfKHYzNCksIHYzNV8odjM1KSwgdjM2Xyh2MzYpLCB2MzdfKHYz
NyksCisgICAgICB2MzhfKHYzOCksIHYzOV8odjM5KSwgdjQwXyh2NDApLCB2NDFfKHY0MSksIHY0
Ml8odjQyKSwgdjQzXyh2NDMpIHt9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIG9wZXJh
dG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgeworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtz
dGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNf
Y2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxU
Pih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYx
Ml8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8
VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2
MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8p
LCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4o
djI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2Mjhf
KSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBz
dGF0aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYzM18pLCBzdGF0aWNfY2FzdDxUPih2MzRfKSwgc3RhdGljX2Nhc3Q8VD4odjM1
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzNl8pLCBzdGF0aWNfY2FzdDxUPih2MzdfKSwg
c3RhdGljX2Nhc3Q8VD4odjM4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzOV8pLCBzdGF0
aWNfY2FzdDxUPih2NDBfKSwgc3RhdGljX2Nhc3Q8VD4odjQxXyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHY0Ml8pLCBzdGF0aWNfY2FzdDxUPih2NDNfKX07CisgICAgcmV0dXJuIFZhbHVlc0lu
KGFycmF5KTsKKyAgfQorCisgcHJpdmF0ZToKKyAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3Np
Z25tZW50IGlzIHVuc3VwcG9ydGVkLgorICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5
NDMmIG90aGVyKTsKKworICBjb25zdCBUMSB2MV87CisgIGNvbnN0IFQyIHYyXzsKKyAgY29uc3Qg
VDMgdjNfOworICBjb25zdCBUNCB2NF87CisgIGNvbnN0IFQ1IHY1XzsKKyAgY29uc3QgVDYgdjZf
OworICBjb25zdCBUNyB2N187CisgIGNvbnN0IFQ4IHY4XzsKKyAgY29uc3QgVDkgdjlfOworICBj
b25zdCBUMTAgdjEwXzsKKyAgY29uc3QgVDExIHYxMV87CisgIGNvbnN0IFQxMiB2MTJfOworICBj
b25zdCBUMTMgdjEzXzsKKyAgY29uc3QgVDE0IHYxNF87CisgIGNvbnN0IFQxNSB2MTVfOworICBj
b25zdCBUMTYgdjE2XzsKKyAgY29uc3QgVDE3IHYxN187CisgIGNvbnN0IFQxOCB2MThfOworICBj
b25zdCBUMTkgdjE5XzsKKyAgY29uc3QgVDIwIHYyMF87CisgIGNvbnN0IFQyMSB2MjFfOworICBj
b25zdCBUMjIgdjIyXzsKKyAgY29uc3QgVDIzIHYyM187CisgIGNvbnN0IFQyNCB2MjRfOworICBj
b25zdCBUMjUgdjI1XzsKKyAgY29uc3QgVDI2IHYyNl87CisgIGNvbnN0IFQyNyB2MjdfOworICBj
b25zdCBUMjggdjI4XzsKKyAgY29uc3QgVDI5IHYyOV87CisgIGNvbnN0IFQzMCB2MzBfOworICBj
b25zdCBUMzEgdjMxXzsKKyAgY29uc3QgVDMyIHYzMl87CisgIGNvbnN0IFQzMyB2MzNfOworICBj
b25zdCBUMzQgdjM0XzsKKyAgY29uc3QgVDM1IHYzNV87CisgIGNvbnN0IFQzNiB2MzZfOworICBj
b25zdCBUMzcgdjM3XzsKKyAgY29uc3QgVDM4IHYzOF87CisgIGNvbnN0IFQzOSB2MzlfOworICBj
b25zdCBUNDAgdjQwXzsKKyAgY29uc3QgVDQxIHY0MV87CisgIGNvbnN0IFQ0MiB2NDJfOworICBj
b25zdCBUNDMgdjQzXzsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIs
IHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCisgICAgdHlwZW5hbWUgVDYs
IHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKKyAg
ICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQs
IHR5cGVuYW1lIFQxNSwKKyAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUg
VDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKKyAgICB0eXBlbmFtZSBUMjEsIHR5cGVu
YW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKKyAgICB0
eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5
cGVuYW1lIFQzMCwKKyAgICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMz
LCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1lIFQzNSwKKyAgICB0eXBlbmFtZSBUMzYsIHR5cGVuYW1l
IFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzksIHR5cGVuYW1lIFQ0MCwKKyAgICB0eXBl
bmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQ+CitjbGFz
cyBWYWx1ZUFycmF5NDQgeworIHB1YmxpYzoKKyAgVmFsdWVBcnJheTQ0KFQxIHYxLCBUMiB2Miwg
VDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksCisgICAgICBU
MTAgdjEwLCBUMTEgdjExLCBUMTIgdjEyLCBUMTMgdjEzLCBUMTQgdjE0LCBUMTUgdjE1LCBUMTYg
djE2LCBUMTcgdjE3LAorICAgICAgVDE4IHYxOCwgVDE5IHYxOSwgVDIwIHYyMCwgVDIxIHYyMSwg
VDIyIHYyMiwgVDIzIHYyMywgVDI0IHYyNCwgVDI1IHYyNSwKKyAgICAgIFQyNiB2MjYsIFQyNyB2
MjcsIFQyOCB2MjgsIFQyOSB2MjksIFQzMCB2MzAsIFQzMSB2MzEsIFQzMiB2MzIsIFQzMyB2MzMs
CisgICAgICBUMzQgdjM0LCBUMzUgdjM1LCBUMzYgdjM2LCBUMzcgdjM3LCBUMzggdjM4LCBUMzkg
djM5LCBUNDAgdjQwLCBUNDEgdjQxLAorICAgICAgVDQyIHY0MiwgVDQzIHY0MywgVDQ0IHY0NCkg
OiB2MV8odjEpLCB2Ml8odjIpLCB2M18odjMpLCB2NF8odjQpLCB2NV8odjUpLAorICAgICAgdjZf
KHY2KSwgdjdfKHY3KSwgdjhfKHY4KSwgdjlfKHY5KSwgdjEwXyh2MTApLCB2MTFfKHYxMSksIHYx
Ml8odjEyKSwKKyAgICAgIHYxM18odjEzKSwgdjE0Xyh2MTQpLCB2MTVfKHYxNSksIHYxNl8odjE2
KSwgdjE3Xyh2MTcpLCB2MThfKHYxOCksCisgICAgICB2MTlfKHYxOSksIHYyMF8odjIwKSwgdjIx
Xyh2MjEpLCB2MjJfKHYyMiksIHYyM18odjIzKSwgdjI0Xyh2MjQpLAorICAgICAgdjI1Xyh2MjUp
LCB2MjZfKHYyNiksIHYyN18odjI3KSwgdjI4Xyh2MjgpLCB2MjlfKHYyOSksIHYzMF8odjMwKSwK
KyAgICAgIHYzMV8odjMxKSwgdjMyXyh2MzIpLCB2MzNfKHYzMyksIHYzNF8odjM0KSwgdjM1Xyh2
MzUpLCB2MzZfKHYzNiksCisgICAgICB2MzdfKHYzNyksIHYzOF8odjM4KSwgdjM5Xyh2MzkpLCB2
NDBfKHY0MCksIHY0MV8odjQxKSwgdjQyXyh2NDIpLAorICAgICAgdjQzXyh2NDMpLCB2NDRfKHY0
NCkge30KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0
b3I8VD4oKSBjb25zdCB7CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYx
XyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0
YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNf
Y2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0
PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2Fz
dDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+
KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0
XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxU
Pih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYz
MV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyks
IHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2
MzhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+KHY0MF8p
LCBzdGF0aWNfY2FzdDxUPih2NDFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQyXyksIHN0
YXRpY19jYXN0PFQ+KHY0M18pLCBzdGF0aWNfY2FzdDxUPih2NDRfKX07CisgICAgcmV0dXJuIFZh
bHVlc0luKGFycmF5KTsKKyAgfQorCisgcHJpdmF0ZToKKyAgLy8gTm8gaW1wbGVtZW50YXRpb24g
LSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgorICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1
ZUFycmF5NDQmIG90aGVyKTsKKworICBjb25zdCBUMSB2MV87CisgIGNvbnN0IFQyIHYyXzsKKyAg
Y29uc3QgVDMgdjNfOworICBjb25zdCBUNCB2NF87CisgIGNvbnN0IFQ1IHY1XzsKKyAgY29uc3Qg
VDYgdjZfOworICBjb25zdCBUNyB2N187CisgIGNvbnN0IFQ4IHY4XzsKKyAgY29uc3QgVDkgdjlf
OworICBjb25zdCBUMTAgdjEwXzsKKyAgY29uc3QgVDExIHYxMV87CisgIGNvbnN0IFQxMiB2MTJf
OworICBjb25zdCBUMTMgdjEzXzsKKyAgY29uc3QgVDE0IHYxNF87CisgIGNvbnN0IFQxNSB2MTVf
OworICBjb25zdCBUMTYgdjE2XzsKKyAgY29uc3QgVDE3IHYxN187CisgIGNvbnN0IFQxOCB2MThf
OworICBjb25zdCBUMTkgdjE5XzsKKyAgY29uc3QgVDIwIHYyMF87CisgIGNvbnN0IFQyMSB2MjFf
OworICBjb25zdCBUMjIgdjIyXzsKKyAgY29uc3QgVDIzIHYyM187CisgIGNvbnN0IFQyNCB2MjRf
OworICBjb25zdCBUMjUgdjI1XzsKKyAgY29uc3QgVDI2IHYyNl87CisgIGNvbnN0IFQyNyB2Mjdf
OworICBjb25zdCBUMjggdjI4XzsKKyAgY29uc3QgVDI5IHYyOV87CisgIGNvbnN0IFQzMCB2MzBf
OworICBjb25zdCBUMzEgdjMxXzsKKyAgY29uc3QgVDMyIHYzMl87CisgIGNvbnN0IFQzMyB2MzNf
OworICBjb25zdCBUMzQgdjM0XzsKKyAgY29uc3QgVDM1IHYzNV87CisgIGNvbnN0IFQzNiB2MzZf
OworICBjb25zdCBUMzcgdjM3XzsKKyAgY29uc3QgVDM4IHYzOF87CisgIGNvbnN0IFQzOSB2Mzlf
OworICBjb25zdCBUNDAgdjQwXzsKKyAgY29uc3QgVDQxIHY0MV87CisgIGNvbnN0IFQ0MiB2NDJf
OworICBjb25zdCBUNDMgdjQzXzsKKyAgY29uc3QgVDQ0IHY0NF87Cit9OworCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVu
YW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVu
YW1lIFQ5LCB0eXBlbmFtZSBUMTAsCisgICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5
cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCisgICAgdHlwZW5hbWUgVDE2
LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAs
CisgICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUg
VDI0LCB0eXBlbmFtZSBUMjUsCisgICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVu
YW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCisgICAgdHlwZW5hbWUgVDMxLCB0
eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzUsCisg
ICAgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5
LCB0eXBlbmFtZSBUNDAsCisgICAgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1l
IFQ0MywgdHlwZW5hbWUgVDQ0LCB0eXBlbmFtZSBUNDU+CitjbGFzcyBWYWx1ZUFycmF5NDUgewor
IHB1YmxpYzoKKyAgVmFsdWVBcnJheTQ1KFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2
NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksCisgICAgICBUMTAgdjEwLCBUMTEgdjExLCBU
MTIgdjEyLCBUMTMgdjEzLCBUMTQgdjE0LCBUMTUgdjE1LCBUMTYgdjE2LCBUMTcgdjE3LAorICAg
ICAgVDE4IHYxOCwgVDE5IHYxOSwgVDIwIHYyMCwgVDIxIHYyMSwgVDIyIHYyMiwgVDIzIHYyMywg
VDI0IHYyNCwgVDI1IHYyNSwKKyAgICAgIFQyNiB2MjYsIFQyNyB2MjcsIFQyOCB2MjgsIFQyOSB2
MjksIFQzMCB2MzAsIFQzMSB2MzEsIFQzMiB2MzIsIFQzMyB2MzMsCisgICAgICBUMzQgdjM0LCBU
MzUgdjM1LCBUMzYgdjM2LCBUMzcgdjM3LCBUMzggdjM4LCBUMzkgdjM5LCBUNDAgdjQwLCBUNDEg
djQxLAorICAgICAgVDQyIHY0MiwgVDQzIHY0MywgVDQ0IHY0NCwgVDQ1IHY0NSkgOiB2MV8odjEp
LCB2Ml8odjIpLCB2M18odjMpLCB2NF8odjQpLAorICAgICAgdjVfKHY1KSwgdjZfKHY2KSwgdjdf
KHY3KSwgdjhfKHY4KSwgdjlfKHY5KSwgdjEwXyh2MTApLCB2MTFfKHYxMSksCisgICAgICB2MTJf
KHYxMiksIHYxM18odjEzKSwgdjE0Xyh2MTQpLCB2MTVfKHYxNSksIHYxNl8odjE2KSwgdjE3Xyh2
MTcpLAorICAgICAgdjE4Xyh2MTgpLCB2MTlfKHYxOSksIHYyMF8odjIwKSwgdjIxXyh2MjEpLCB2
MjJfKHYyMiksIHYyM18odjIzKSwKKyAgICAgIHYyNF8odjI0KSwgdjI1Xyh2MjUpLCB2MjZfKHYy
NiksIHYyN18odjI3KSwgdjI4Xyh2MjgpLCB2MjlfKHYyOSksCisgICAgICB2MzBfKHYzMCksIHYz
MV8odjMxKSwgdjMyXyh2MzIpLCB2MzNfKHYzMyksIHYzNF8odjM0KSwgdjM1Xyh2MzUpLAorICAg
ICAgdjM2Xyh2MzYpLCB2MzdfKHYzNyksIHYzOF8odjM4KSwgdjM5Xyh2MzkpLCB2NDBfKHY0MCks
IHY0MV8odjQxKSwKKyAgICAgIHY0Ml8odjQyKSwgdjQzXyh2NDMpLCB2NDRfKHY0NCksIHY0NV8o
djQ1KSB7fQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBvcGVyYXRvciBQYXJhbUdlbmVy
YXRvcjxUPigpIGNvbnN0IHsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4o
djFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwg
c3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRp
Y19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nh
c3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19j
YXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8
VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0
PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4o
djMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNf
KSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+
KHYzOF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4odjQw
XyksIHN0YXRpY19jYXN0PFQ+KHY0MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDJfKSwg
c3RhdGljX2Nhc3Q8VD4odjQzXyksIHN0YXRpY19jYXN0PFQ+KHY0NF8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2NDVfKX07CisgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKKyAgfQorCisg
cHJpdmF0ZToKKyAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9y
dGVkLgorICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5NDUmIG90aGVyKTsKKworICBj
b25zdCBUMSB2MV87CisgIGNvbnN0IFQyIHYyXzsKKyAgY29uc3QgVDMgdjNfOworICBjb25zdCBU
NCB2NF87CisgIGNvbnN0IFQ1IHY1XzsKKyAgY29uc3QgVDYgdjZfOworICBjb25zdCBUNyB2N187
CisgIGNvbnN0IFQ4IHY4XzsKKyAgY29uc3QgVDkgdjlfOworICBjb25zdCBUMTAgdjEwXzsKKyAg
Y29uc3QgVDExIHYxMV87CisgIGNvbnN0IFQxMiB2MTJfOworICBjb25zdCBUMTMgdjEzXzsKKyAg
Y29uc3QgVDE0IHYxNF87CisgIGNvbnN0IFQxNSB2MTVfOworICBjb25zdCBUMTYgdjE2XzsKKyAg
Y29uc3QgVDE3IHYxN187CisgIGNvbnN0IFQxOCB2MThfOworICBjb25zdCBUMTkgdjE5XzsKKyAg
Y29uc3QgVDIwIHYyMF87CisgIGNvbnN0IFQyMSB2MjFfOworICBjb25zdCBUMjIgdjIyXzsKKyAg
Y29uc3QgVDIzIHYyM187CisgIGNvbnN0IFQyNCB2MjRfOworICBjb25zdCBUMjUgdjI1XzsKKyAg
Y29uc3QgVDI2IHYyNl87CisgIGNvbnN0IFQyNyB2MjdfOworICBjb25zdCBUMjggdjI4XzsKKyAg
Y29uc3QgVDI5IHYyOV87CisgIGNvbnN0IFQzMCB2MzBfOworICBjb25zdCBUMzEgdjMxXzsKKyAg
Y29uc3QgVDMyIHYzMl87CisgIGNvbnN0IFQzMyB2MzNfOworICBjb25zdCBUMzQgdjM0XzsKKyAg
Y29uc3QgVDM1IHYzNV87CisgIGNvbnN0IFQzNiB2MzZfOworICBjb25zdCBUMzcgdjM3XzsKKyAg
Y29uc3QgVDM4IHYzOF87CisgIGNvbnN0IFQzOSB2MzlfOworICBjb25zdCBUNDAgdjQwXzsKKyAg
Y29uc3QgVDQxIHY0MV87CisgIGNvbnN0IFQ0MiB2NDJfOworICBjb25zdCBUNDMgdjQzXzsKKyAg
Y29uc3QgVDQ0IHY0NF87CisgIGNvbnN0IFQ0NSB2NDVfOworfTsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBU
NSwKKyAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBU
OSwgdHlwZW5hbWUgVDEwLAorICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFt
ZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAorICAgIHR5cGVuYW1lIFQxNiwgdHlw
ZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAorICAg
IHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwg
dHlwZW5hbWUgVDI1LAorICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBU
MjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAorICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5h
bWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNCwgdHlwZW5hbWUgVDM1LAorICAgIHR5
cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOSwgdHlw
ZW5hbWUgVDQwLAorICAgIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMs
IHR5cGVuYW1lIFQ0NCwgdHlwZW5hbWUgVDQ1LAorICAgIHR5cGVuYW1lIFQ0Nj4KK2NsYXNzIFZh
bHVlQXJyYXk0NiB7CisgcHVibGljOgorICBWYWx1ZUFycmF5NDYoVDEgdjEsIFQyIHYyLCBUMyB2
MywgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwKKyAgICAgIFQxMCB2
MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYs
IFQxNyB2MTcsCisgICAgICBUMTggdjE4LCBUMTkgdjE5LCBUMjAgdjIwLCBUMjEgdjIxLCBUMjIg
djIyLCBUMjMgdjIzLCBUMjQgdjI0LCBUMjUgdjI1LAorICAgICAgVDI2IHYyNiwgVDI3IHYyNywg
VDI4IHYyOCwgVDI5IHYyOSwgVDMwIHYzMCwgVDMxIHYzMSwgVDMyIHYzMiwgVDMzIHYzMywKKyAg
ICAgIFQzNCB2MzQsIFQzNSB2MzUsIFQzNiB2MzYsIFQzNyB2MzcsIFQzOCB2MzgsIFQzOSB2Mzks
IFQ0MCB2NDAsIFQ0MSB2NDEsCisgICAgICBUNDIgdjQyLCBUNDMgdjQzLCBUNDQgdjQ0LCBUNDUg
djQ1LCBUNDYgdjQ2KSA6IHYxXyh2MSksIHYyXyh2MiksIHYzXyh2MyksCisgICAgICB2NF8odjQp
LCB2NV8odjUpLCB2Nl8odjYpLCB2N18odjcpLCB2OF8odjgpLCB2OV8odjkpLCB2MTBfKHYxMCks
CisgICAgICB2MTFfKHYxMSksIHYxMl8odjEyKSwgdjEzXyh2MTMpLCB2MTRfKHYxNCksIHYxNV8o
djE1KSwgdjE2Xyh2MTYpLAorICAgICAgdjE3Xyh2MTcpLCB2MThfKHYxOCksIHYxOV8odjE5KSwg
djIwXyh2MjApLCB2MjFfKHYyMSksIHYyMl8odjIyKSwKKyAgICAgIHYyM18odjIzKSwgdjI0Xyh2
MjQpLCB2MjVfKHYyNSksIHYyNl8odjI2KSwgdjI3Xyh2MjcpLCB2MjhfKHYyOCksCisgICAgICB2
MjlfKHYyOSksIHYzMF8odjMwKSwgdjMxXyh2MzEpLCB2MzJfKHYzMiksIHYzM18odjMzKSwgdjM0
Xyh2MzQpLAorICAgICAgdjM1Xyh2MzUpLCB2MzZfKHYzNiksIHYzN18odjM3KSwgdjM4Xyh2Mzgp
LCB2MzlfKHYzOSksIHY0MF8odjQwKSwKKyAgICAgIHY0MV8odjQxKSwgdjQyXyh2NDIpLCB2NDNf
KHY0MyksIHY0NF8odjQ0KSwgdjQ1Xyh2NDUpLCB2NDZfKHY0Nikge30KKworICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KKyAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7CisgICAg
Y29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYy
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0
YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19j
YXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2Fz
dDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+
KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4
XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxU
Pih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYy
NV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3Xyks
IHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2
MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8p
LCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0
YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+KHY0MF8pLCBzdGF0aWNfY2FzdDxUPih2NDFf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQyXyksIHN0YXRpY19jYXN0PFQ+KHY0M18pLCBz
dGF0aWNfY2FzdDxUPih2NDRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQ1XyksIHN0YXRp
Y19jYXN0PFQ+KHY0Nl8pfTsKKyAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOworICB9CisKKyBw
cml2YXRlOgorICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0
ZWQuCisgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXk0NiYgb3RoZXIpOworCisgIGNv
bnN0IFQxIHYxXzsKKyAgY29uc3QgVDIgdjJfOworICBjb25zdCBUMyB2M187CisgIGNvbnN0IFQ0
IHY0XzsKKyAgY29uc3QgVDUgdjVfOworICBjb25zdCBUNiB2Nl87CisgIGNvbnN0IFQ3IHY3XzsK
KyAgY29uc3QgVDggdjhfOworICBjb25zdCBUOSB2OV87CisgIGNvbnN0IFQxMCB2MTBfOworICBj
b25zdCBUMTEgdjExXzsKKyAgY29uc3QgVDEyIHYxMl87CisgIGNvbnN0IFQxMyB2MTNfOworICBj
b25zdCBUMTQgdjE0XzsKKyAgY29uc3QgVDE1IHYxNV87CisgIGNvbnN0IFQxNiB2MTZfOworICBj
b25zdCBUMTcgdjE3XzsKKyAgY29uc3QgVDE4IHYxOF87CisgIGNvbnN0IFQxOSB2MTlfOworICBj
b25zdCBUMjAgdjIwXzsKKyAgY29uc3QgVDIxIHYyMV87CisgIGNvbnN0IFQyMiB2MjJfOworICBj
b25zdCBUMjMgdjIzXzsKKyAgY29uc3QgVDI0IHYyNF87CisgIGNvbnN0IFQyNSB2MjVfOworICBj
b25zdCBUMjYgdjI2XzsKKyAgY29uc3QgVDI3IHYyN187CisgIGNvbnN0IFQyOCB2MjhfOworICBj
b25zdCBUMjkgdjI5XzsKKyAgY29uc3QgVDMwIHYzMF87CisgIGNvbnN0IFQzMSB2MzFfOworICBj
b25zdCBUMzIgdjMyXzsKKyAgY29uc3QgVDMzIHYzM187CisgIGNvbnN0IFQzNCB2MzRfOworICBj
b25zdCBUMzUgdjM1XzsKKyAgY29uc3QgVDM2IHYzNl87CisgIGNvbnN0IFQzNyB2MzdfOworICBj
b25zdCBUMzggdjM4XzsKKyAgY29uc3QgVDM5IHYzOV87CisgIGNvbnN0IFQ0MCB2NDBfOworICBj
b25zdCBUNDEgdjQxXzsKKyAgY29uc3QgVDQyIHY0Ml87CisgIGNvbnN0IFQ0MyB2NDNfOworICBj
b25zdCBUNDQgdjQ0XzsKKyAgY29uc3QgVDQ1IHY0NV87CisgIGNvbnN0IFQ0NiB2NDZfOworfTsK
KwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVu
YW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVu
YW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAorICAgIHR5cGVuYW1lIFQxMSwgdHlw
ZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAorICAg
IHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwg
dHlwZW5hbWUgVDIwLAorICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBU
MjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAorICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5h
bWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAorICAgIHR5
cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNCwgdHlw
ZW5hbWUgVDM1LAorICAgIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgs
IHR5cGVuYW1lIFQzOSwgdHlwZW5hbWUgVDQwLAorICAgIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUg
VDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NCwgdHlwZW5hbWUgVDQ1LAorICAgIHR5cGVu
YW1lIFQ0NiwgdHlwZW5hbWUgVDQ3PgorY2xhc3MgVmFsdWVBcnJheTQ3IHsKKyBwdWJsaWM6Cisg
IFZhbHVlQXJyYXk0NyhUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBU
NyB2NywgVDggdjgsIFQ5IHY5LAorICAgICAgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMiwgVDEz
IHYxMywgVDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywKKyAgICAgIFQxOCB2MTgs
IFQxOSB2MTksIFQyMCB2MjAsIFQyMSB2MjEsIFQyMiB2MjIsIFQyMyB2MjMsIFQyNCB2MjQsIFQy
NSB2MjUsCisgICAgICBUMjYgdjI2LCBUMjcgdjI3LCBUMjggdjI4LCBUMjkgdjI5LCBUMzAgdjMw
LCBUMzEgdjMxLCBUMzIgdjMyLCBUMzMgdjMzLAorICAgICAgVDM0IHYzNCwgVDM1IHYzNSwgVDM2
IHYzNiwgVDM3IHYzNywgVDM4IHYzOCwgVDM5IHYzOSwgVDQwIHY0MCwgVDQxIHY0MSwKKyAgICAg
IFQ0MiB2NDIsIFQ0MyB2NDMsIFQ0NCB2NDQsIFQ0NSB2NDUsIFQ0NiB2NDYsIFQ0NyB2NDcpIDog
djFfKHYxKSwgdjJfKHYyKSwKKyAgICAgIHYzXyh2MyksIHY0Xyh2NCksIHY1Xyh2NSksIHY2Xyh2
NiksIHY3Xyh2NyksIHY4Xyh2OCksIHY5Xyh2OSksIHYxMF8odjEwKSwKKyAgICAgIHYxMV8odjEx
KSwgdjEyXyh2MTIpLCB2MTNfKHYxMyksIHYxNF8odjE0KSwgdjE1Xyh2MTUpLCB2MTZfKHYxNiks
CisgICAgICB2MTdfKHYxNyksIHYxOF8odjE4KSwgdjE5Xyh2MTkpLCB2MjBfKHYyMCksIHYyMV8o
djIxKSwgdjIyXyh2MjIpLAorICAgICAgdjIzXyh2MjMpLCB2MjRfKHYyNCksIHYyNV8odjI1KSwg
djI2Xyh2MjYpLCB2MjdfKHYyNyksIHYyOF8odjI4KSwKKyAgICAgIHYyOV8odjI5KSwgdjMwXyh2
MzApLCB2MzFfKHYzMSksIHYzMl8odjMyKSwgdjMzXyh2MzMpLCB2MzRfKHYzNCksCisgICAgICB2
MzVfKHYzNSksIHYzNl8odjM2KSwgdjM3Xyh2MzcpLCB2MzhfKHYzOCksIHYzOV8odjM5KSwgdjQw
Xyh2NDApLAorICAgICAgdjQxXyh2NDEpLCB2NDJfKHY0MiksIHY0M18odjQzKSwgdjQ0Xyh2NDQp
LCB2NDVfKHY0NSksIHY0Nl8odjQ2KSwKKyAgICAgIHY0N18odjQ3KSB7fQorCisgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgorICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKKyAg
ICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4o
djJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwg
c3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGlj
X2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19j
YXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8
VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0
PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4o
djI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Mjdf
KSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+
KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0
XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwg
c3RhdGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYzOF8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4odjQwXyksIHN0YXRpY19jYXN0PFQ+KHY0
MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDJfKSwgc3RhdGljX2Nhc3Q8VD4odjQzXyks
IHN0YXRpY19jYXN0PFQ+KHY0NF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDVfKSwgc3Rh
dGljX2Nhc3Q8VD4odjQ2XyksIHN0YXRpY19jYXN0PFQ+KHY0N18pfTsKKyAgICByZXR1cm4gVmFs
dWVzSW4oYXJyYXkpOworICB9CisKKyBwcml2YXRlOgorICAvLyBObyBpbXBsZW1lbnRhdGlvbiAt
IGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCisgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVl
QXJyYXk0NyYgb3RoZXIpOworCisgIGNvbnN0IFQxIHYxXzsKKyAgY29uc3QgVDIgdjJfOworICBj
b25zdCBUMyB2M187CisgIGNvbnN0IFQ0IHY0XzsKKyAgY29uc3QgVDUgdjVfOworICBjb25zdCBU
NiB2Nl87CisgIGNvbnN0IFQ3IHY3XzsKKyAgY29uc3QgVDggdjhfOworICBjb25zdCBUOSB2OV87
CisgIGNvbnN0IFQxMCB2MTBfOworICBjb25zdCBUMTEgdjExXzsKKyAgY29uc3QgVDEyIHYxMl87
CisgIGNvbnN0IFQxMyB2MTNfOworICBjb25zdCBUMTQgdjE0XzsKKyAgY29uc3QgVDE1IHYxNV87
CisgIGNvbnN0IFQxNiB2MTZfOworICBjb25zdCBUMTcgdjE3XzsKKyAgY29uc3QgVDE4IHYxOF87
CisgIGNvbnN0IFQxOSB2MTlfOworICBjb25zdCBUMjAgdjIwXzsKKyAgY29uc3QgVDIxIHYyMV87
CisgIGNvbnN0IFQyMiB2MjJfOworICBjb25zdCBUMjMgdjIzXzsKKyAgY29uc3QgVDI0IHYyNF87
CisgIGNvbnN0IFQyNSB2MjVfOworICBjb25zdCBUMjYgdjI2XzsKKyAgY29uc3QgVDI3IHYyN187
CisgIGNvbnN0IFQyOCB2MjhfOworICBjb25zdCBUMjkgdjI5XzsKKyAgY29uc3QgVDMwIHYzMF87
CisgIGNvbnN0IFQzMSB2MzFfOworICBjb25zdCBUMzIgdjMyXzsKKyAgY29uc3QgVDMzIHYzM187
CisgIGNvbnN0IFQzNCB2MzRfOworICBjb25zdCBUMzUgdjM1XzsKKyAgY29uc3QgVDM2IHYzNl87
CisgIGNvbnN0IFQzNyB2MzdfOworICBjb25zdCBUMzggdjM4XzsKKyAgY29uc3QgVDM5IHYzOV87
CisgIGNvbnN0IFQ0MCB2NDBfOworICBjb25zdCBUNDEgdjQxXzsKKyAgY29uc3QgVDQyIHY0Ml87
CisgIGNvbnN0IFQ0MyB2NDNfOworICBjb25zdCBUNDQgdjQ0XzsKKyAgY29uc3QgVDQ1IHY0NV87
CisgIGNvbnN0IFQ0NiB2NDZfOworICBjb25zdCBUNDcgdjQ3XzsKK307CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5h
bWUgVDUsCisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5h
bWUgVDksIHR5cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlw
ZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKKyAgICB0eXBlbmFtZSBUMTYs
IHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwK
KyAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBU
MjQsIHR5cGVuYW1lIFQyNSwKKyAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5h
bWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKKyAgICB0eXBlbmFtZSBUMzEsIHR5
cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1lIFQzNSwKKyAg
ICB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzks
IHR5cGVuYW1lIFQ0MCwKKyAgICB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUg
VDQzLCB0eXBlbmFtZSBUNDQsIHR5cGVuYW1lIFQ0NSwKKyAgICB0eXBlbmFtZSBUNDYsIHR5cGVu
YW1lIFQ0NywgdHlwZW5hbWUgVDQ4PgorY2xhc3MgVmFsdWVBcnJheTQ4IHsKKyBwdWJsaWM6Cisg
IFZhbHVlQXJyYXk0OChUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBU
NyB2NywgVDggdjgsIFQ5IHY5LAorICAgICAgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMiwgVDEz
IHYxMywgVDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywKKyAgICAgIFQxOCB2MTgs
IFQxOSB2MTksIFQyMCB2MjAsIFQyMSB2MjEsIFQyMiB2MjIsIFQyMyB2MjMsIFQyNCB2MjQsIFQy
NSB2MjUsCisgICAgICBUMjYgdjI2LCBUMjcgdjI3LCBUMjggdjI4LCBUMjkgdjI5LCBUMzAgdjMw
LCBUMzEgdjMxLCBUMzIgdjMyLCBUMzMgdjMzLAorICAgICAgVDM0IHYzNCwgVDM1IHYzNSwgVDM2
IHYzNiwgVDM3IHYzNywgVDM4IHYzOCwgVDM5IHYzOSwgVDQwIHY0MCwgVDQxIHY0MSwKKyAgICAg
IFQ0MiB2NDIsIFQ0MyB2NDMsIFQ0NCB2NDQsIFQ0NSB2NDUsIFQ0NiB2NDYsIFQ0NyB2NDcsIFQ0
OCB2NDgpIDogdjFfKHYxKSwKKyAgICAgIHYyXyh2MiksIHYzXyh2MyksIHY0Xyh2NCksIHY1Xyh2
NSksIHY2Xyh2NiksIHY3Xyh2NyksIHY4Xyh2OCksIHY5Xyh2OSksCisgICAgICB2MTBfKHYxMCks
IHYxMV8odjExKSwgdjEyXyh2MTIpLCB2MTNfKHYxMyksIHYxNF8odjE0KSwgdjE1Xyh2MTUpLAor
ICAgICAgdjE2Xyh2MTYpLCB2MTdfKHYxNyksIHYxOF8odjE4KSwgdjE5Xyh2MTkpLCB2MjBfKHYy
MCksIHYyMV8odjIxKSwKKyAgICAgIHYyMl8odjIyKSwgdjIzXyh2MjMpLCB2MjRfKHYyNCksIHYy
NV8odjI1KSwgdjI2Xyh2MjYpLCB2MjdfKHYyNyksCisgICAgICB2MjhfKHYyOCksIHYyOV8odjI5
KSwgdjMwXyh2MzApLCB2MzFfKHYzMSksIHYzMl8odjMyKSwgdjMzXyh2MzMpLAorICAgICAgdjM0
Xyh2MzQpLCB2MzVfKHYzNSksIHYzNl8odjM2KSwgdjM3Xyh2MzcpLCB2MzhfKHYzOCksIHYzOV8o
djM5KSwKKyAgICAgIHY0MF8odjQwKSwgdjQxXyh2NDEpLCB2NDJfKHY0MiksIHY0M18odjQzKSwg
djQ0Xyh2NDQpLCB2NDVfKHY0NSksCisgICAgICB2NDZfKHY0NiksIHY0N18odjQ3KSwgdjQ4Xyh2
NDgpIHt9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIG9wZXJhdG9yIFBhcmFtR2VuZXJh
dG9yPFQ+KCkgY29uc3QgeworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2
MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBz
dGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGlj
X2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2Fz
dDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nh
c3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxU
Pih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYy
NF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8
VD4odjI5XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBzdGF0aWNfY2FzdDxUPih2
MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzM18p
LCBzdGF0aWNfY2FzdDxUPih2MzRfKSwgc3RhdGljX2Nhc3Q8VD4odjM1XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYzNl8pLCBzdGF0aWNfY2FzdDxUPih2MzdfKSwgc3RhdGljX2Nhc3Q8VD4o
djM4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzOV8pLCBzdGF0aWNfY2FzdDxUPih2NDBf
KSwgc3RhdGljX2Nhc3Q8VD4odjQxXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY0Ml8pLCBz
dGF0aWNfY2FzdDxUPih2NDNfKSwgc3RhdGljX2Nhc3Q8VD4odjQ0XyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHY0NV8pLCBzdGF0aWNfY2FzdDxUPih2NDZfKSwgc3RhdGljX2Nhc3Q8VD4odjQ3
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY0OF8pfTsKKyAgICByZXR1cm4gVmFsdWVzSW4o
YXJyYXkpOworICB9CisKKyBwcml2YXRlOgorICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2ln
bm1lbnQgaXMgdW5zdXBwb3J0ZWQuCisgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXk0
OCYgb3RoZXIpOworCisgIGNvbnN0IFQxIHYxXzsKKyAgY29uc3QgVDIgdjJfOworICBjb25zdCBU
MyB2M187CisgIGNvbnN0IFQ0IHY0XzsKKyAgY29uc3QgVDUgdjVfOworICBjb25zdCBUNiB2Nl87
CisgIGNvbnN0IFQ3IHY3XzsKKyAgY29uc3QgVDggdjhfOworICBjb25zdCBUOSB2OV87CisgIGNv
bnN0IFQxMCB2MTBfOworICBjb25zdCBUMTEgdjExXzsKKyAgY29uc3QgVDEyIHYxMl87CisgIGNv
bnN0IFQxMyB2MTNfOworICBjb25zdCBUMTQgdjE0XzsKKyAgY29uc3QgVDE1IHYxNV87CisgIGNv
bnN0IFQxNiB2MTZfOworICBjb25zdCBUMTcgdjE3XzsKKyAgY29uc3QgVDE4IHYxOF87CisgIGNv
bnN0IFQxOSB2MTlfOworICBjb25zdCBUMjAgdjIwXzsKKyAgY29uc3QgVDIxIHYyMV87CisgIGNv
bnN0IFQyMiB2MjJfOworICBjb25zdCBUMjMgdjIzXzsKKyAgY29uc3QgVDI0IHYyNF87CisgIGNv
bnN0IFQyNSB2MjVfOworICBjb25zdCBUMjYgdjI2XzsKKyAgY29uc3QgVDI3IHYyN187CisgIGNv
bnN0IFQyOCB2MjhfOworICBjb25zdCBUMjkgdjI5XzsKKyAgY29uc3QgVDMwIHYzMF87CisgIGNv
bnN0IFQzMSB2MzFfOworICBjb25zdCBUMzIgdjMyXzsKKyAgY29uc3QgVDMzIHYzM187CisgIGNv
bnN0IFQzNCB2MzRfOworICBjb25zdCBUMzUgdjM1XzsKKyAgY29uc3QgVDM2IHYzNl87CisgIGNv
bnN0IFQzNyB2MzdfOworICBjb25zdCBUMzggdjM4XzsKKyAgY29uc3QgVDM5IHYzOV87CisgIGNv
bnN0IFQ0MCB2NDBfOworICBjb25zdCBUNDEgdjQxXzsKKyAgY29uc3QgVDQyIHY0Ml87CisgIGNv
bnN0IFQ0MyB2NDNfOworICBjb25zdCBUNDQgdjQ0XzsKKyAgY29uc3QgVDQ1IHY0NV87CisgIGNv
bnN0IFQ0NiB2NDZfOworICBjb25zdCBUNDcgdjQ3XzsKKyAgY29uc3QgVDQ4IHY0OF87Cit9Owor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5h
bWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5h
bWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCisgICAgdHlwZW5hbWUgVDExLCB0eXBl
bmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCisgICAg
dHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0
eXBlbmFtZSBUMjAsCisgICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQy
MywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCisgICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFt
ZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCisgICAgdHlw
ZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0eXBl
bmFtZSBUMzUsCisgICAgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwg
dHlwZW5hbWUgVDM5LCB0eXBlbmFtZSBUNDAsCisgICAgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBU
NDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0LCB0eXBlbmFtZSBUNDUsCisgICAgdHlwZW5h
bWUgVDQ2LCB0eXBlbmFtZSBUNDcsIHR5cGVuYW1lIFQ0OCwgdHlwZW5hbWUgVDQ5PgorY2xhc3Mg
VmFsdWVBcnJheTQ5IHsKKyBwdWJsaWM6CisgIFZhbHVlQXJyYXk0OShUMSB2MSwgVDIgdjIsIFQz
IHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NywgVDggdjgsIFQ5IHY5LAorICAgICAgVDEw
IHYxMCwgVDExIHYxMSwgVDEyIHYxMiwgVDEzIHYxMywgVDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYx
NiwgVDE3IHYxNywKKyAgICAgIFQxOCB2MTgsIFQxOSB2MTksIFQyMCB2MjAsIFQyMSB2MjEsIFQy
MiB2MjIsIFQyMyB2MjMsIFQyNCB2MjQsIFQyNSB2MjUsCisgICAgICBUMjYgdjI2LCBUMjcgdjI3
LCBUMjggdjI4LCBUMjkgdjI5LCBUMzAgdjMwLCBUMzEgdjMxLCBUMzIgdjMyLCBUMzMgdjMzLAor
ICAgICAgVDM0IHYzNCwgVDM1IHYzNSwgVDM2IHYzNiwgVDM3IHYzNywgVDM4IHYzOCwgVDM5IHYz
OSwgVDQwIHY0MCwgVDQxIHY0MSwKKyAgICAgIFQ0MiB2NDIsIFQ0MyB2NDMsIFQ0NCB2NDQsIFQ0
NSB2NDUsIFQ0NiB2NDYsIFQ0NyB2NDcsIFQ0OCB2NDgsCisgICAgICBUNDkgdjQ5KSA6IHYxXyh2
MSksIHYyXyh2MiksIHYzXyh2MyksIHY0Xyh2NCksIHY1Xyh2NSksIHY2Xyh2NiksIHY3Xyh2Nyks
CisgICAgICB2OF8odjgpLCB2OV8odjkpLCB2MTBfKHYxMCksIHYxMV8odjExKSwgdjEyXyh2MTIp
LCB2MTNfKHYxMyksIHYxNF8odjE0KSwKKyAgICAgIHYxNV8odjE1KSwgdjE2Xyh2MTYpLCB2MTdf
KHYxNyksIHYxOF8odjE4KSwgdjE5Xyh2MTkpLCB2MjBfKHYyMCksCisgICAgICB2MjFfKHYyMSks
IHYyMl8odjIyKSwgdjIzXyh2MjMpLCB2MjRfKHYyNCksIHYyNV8odjI1KSwgdjI2Xyh2MjYpLAor
ICAgICAgdjI3Xyh2MjcpLCB2MjhfKHYyOCksIHYyOV8odjI5KSwgdjMwXyh2MzApLCB2MzFfKHYz
MSksIHYzMl8odjMyKSwKKyAgICAgIHYzM18odjMzKSwgdjM0Xyh2MzQpLCB2MzVfKHYzNSksIHYz
Nl8odjM2KSwgdjM3Xyh2MzcpLCB2MzhfKHYzOCksCisgICAgICB2MzlfKHYzOSksIHY0MF8odjQw
KSwgdjQxXyh2NDEpLCB2NDJfKHY0MiksIHY0M18odjQzKSwgdjQ0Xyh2NDQpLAorICAgICAgdjQ1
Xyh2NDUpLCB2NDZfKHY0NiksIHY0N18odjQ3KSwgdjQ4Xyh2NDgpLCB2NDlfKHY0OSkge30KKwor
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBj
b25zdCB7CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRp
Y19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0
PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2
XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2
MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18p
LCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0
YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBz
dGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRp
Y19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0
aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19j
YXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+KHY0MF8pLCBzdGF0aWNf
Y2FzdDxUPih2NDFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQyXyksIHN0YXRpY19jYXN0
PFQ+KHY0M18pLCBzdGF0aWNfY2FzdDxUPih2NDRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djQ1XyksIHN0YXRpY19jYXN0PFQ+KHY0Nl8pLCBzdGF0aWNfY2FzdDxUPih2NDdfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjQ4XyksIHN0YXRpY19jYXN0PFQ+KHY0OV8pfTsKKyAgICByZXR1
cm4gVmFsdWVzSW4oYXJyYXkpOworICB9CisKKyBwcml2YXRlOgorICAvLyBObyBpbXBsZW1lbnRh
dGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCisgIHZvaWQgb3BlcmF0b3I9KGNvbnN0
IFZhbHVlQXJyYXk0OSYgb3RoZXIpOworCisgIGNvbnN0IFQxIHYxXzsKKyAgY29uc3QgVDIgdjJf
OworICBjb25zdCBUMyB2M187CisgIGNvbnN0IFQ0IHY0XzsKKyAgY29uc3QgVDUgdjVfOworICBj
b25zdCBUNiB2Nl87CisgIGNvbnN0IFQ3IHY3XzsKKyAgY29uc3QgVDggdjhfOworICBjb25zdCBU
OSB2OV87CisgIGNvbnN0IFQxMCB2MTBfOworICBjb25zdCBUMTEgdjExXzsKKyAgY29uc3QgVDEy
IHYxMl87CisgIGNvbnN0IFQxMyB2MTNfOworICBjb25zdCBUMTQgdjE0XzsKKyAgY29uc3QgVDE1
IHYxNV87CisgIGNvbnN0IFQxNiB2MTZfOworICBjb25zdCBUMTcgdjE3XzsKKyAgY29uc3QgVDE4
IHYxOF87CisgIGNvbnN0IFQxOSB2MTlfOworICBjb25zdCBUMjAgdjIwXzsKKyAgY29uc3QgVDIx
IHYyMV87CisgIGNvbnN0IFQyMiB2MjJfOworICBjb25zdCBUMjMgdjIzXzsKKyAgY29uc3QgVDI0
IHYyNF87CisgIGNvbnN0IFQyNSB2MjVfOworICBjb25zdCBUMjYgdjI2XzsKKyAgY29uc3QgVDI3
IHYyN187CisgIGNvbnN0IFQyOCB2MjhfOworICBjb25zdCBUMjkgdjI5XzsKKyAgY29uc3QgVDMw
IHYzMF87CisgIGNvbnN0IFQzMSB2MzFfOworICBjb25zdCBUMzIgdjMyXzsKKyAgY29uc3QgVDMz
IHYzM187CisgIGNvbnN0IFQzNCB2MzRfOworICBjb25zdCBUMzUgdjM1XzsKKyAgY29uc3QgVDM2
IHYzNl87CisgIGNvbnN0IFQzNyB2MzdfOworICBjb25zdCBUMzggdjM4XzsKKyAgY29uc3QgVDM5
IHYzOV87CisgIGNvbnN0IFQ0MCB2NDBfOworICBjb25zdCBUNDEgdjQxXzsKKyAgY29uc3QgVDQy
IHY0Ml87CisgIGNvbnN0IFQ0MyB2NDNfOworICBjb25zdCBUNDQgdjQ0XzsKKyAgY29uc3QgVDQ1
IHY0NV87CisgIGNvbnN0IFQ0NiB2NDZfOworICBjb25zdCBUNDcgdjQ3XzsKKyAgY29uc3QgVDQ4
IHY0OF87CisgIGNvbnN0IFQ0OSB2NDlfOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0
eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICB0
eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5h
bWUgVDEwLAorICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5
cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAorICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3
LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAorICAgIHR5cGVuYW1l
IFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUg
VDI1LAorICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVu
YW1lIFQyOSwgdHlwZW5hbWUgVDMwLAorICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0
eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNCwgdHlwZW5hbWUgVDM1LAorICAgIHR5cGVuYW1lIFQz
NiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOSwgdHlwZW5hbWUgVDQw
LAorICAgIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1l
IFQ0NCwgdHlwZW5hbWUgVDQ1LAorICAgIHR5cGVuYW1lIFQ0NiwgdHlwZW5hbWUgVDQ3LCB0eXBl
bmFtZSBUNDgsIHR5cGVuYW1lIFQ0OSwgdHlwZW5hbWUgVDUwPgorY2xhc3MgVmFsdWVBcnJheTUw
IHsKKyBwdWJsaWM6CisgIFZhbHVlQXJyYXk1MChUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwg
VDUgdjUsIFQ2IHY2LCBUNyB2NywgVDggdjgsIFQ5IHY5LAorICAgICAgVDEwIHYxMCwgVDExIHYx
MSwgVDEyIHYxMiwgVDEzIHYxMywgVDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywK
KyAgICAgIFQxOCB2MTgsIFQxOSB2MTksIFQyMCB2MjAsIFQyMSB2MjEsIFQyMiB2MjIsIFQyMyB2
MjMsIFQyNCB2MjQsIFQyNSB2MjUsCisgICAgICBUMjYgdjI2LCBUMjcgdjI3LCBUMjggdjI4LCBU
MjkgdjI5LCBUMzAgdjMwLCBUMzEgdjMxLCBUMzIgdjMyLCBUMzMgdjMzLAorICAgICAgVDM0IHYz
NCwgVDM1IHYzNSwgVDM2IHYzNiwgVDM3IHYzNywgVDM4IHYzOCwgVDM5IHYzOSwgVDQwIHY0MCwg
VDQxIHY0MSwKKyAgICAgIFQ0MiB2NDIsIFQ0MyB2NDMsIFQ0NCB2NDQsIFQ0NSB2NDUsIFQ0NiB2
NDYsIFQ0NyB2NDcsIFQ0OCB2NDgsIFQ0OSB2NDksCisgICAgICBUNTAgdjUwKSA6IHYxXyh2MSks
IHYyXyh2MiksIHYzXyh2MyksIHY0Xyh2NCksIHY1Xyh2NSksIHY2Xyh2NiksIHY3Xyh2NyksCisg
ICAgICB2OF8odjgpLCB2OV8odjkpLCB2MTBfKHYxMCksIHYxMV8odjExKSwgdjEyXyh2MTIpLCB2
MTNfKHYxMyksIHYxNF8odjE0KSwKKyAgICAgIHYxNV8odjE1KSwgdjE2Xyh2MTYpLCB2MTdfKHYx
NyksIHYxOF8odjE4KSwgdjE5Xyh2MTkpLCB2MjBfKHYyMCksCisgICAgICB2MjFfKHYyMSksIHYy
Ml8odjIyKSwgdjIzXyh2MjMpLCB2MjRfKHYyNCksIHYyNV8odjI1KSwgdjI2Xyh2MjYpLAorICAg
ICAgdjI3Xyh2MjcpLCB2MjhfKHYyOCksIHYyOV8odjI5KSwgdjMwXyh2MzApLCB2MzFfKHYzMSks
IHYzMl8odjMyKSwKKyAgICAgIHYzM18odjMzKSwgdjM0Xyh2MzQpLCB2MzVfKHYzNSksIHYzNl8o
djM2KSwgdjM3Xyh2MzcpLCB2MzhfKHYzOCksCisgICAgICB2MzlfKHYzOSksIHY0MF8odjQwKSwg
djQxXyh2NDEpLCB2NDJfKHY0MiksIHY0M18odjQzKSwgdjQ0Xyh2NDQpLAorICAgICAgdjQ1Xyh2
NDUpLCB2NDZfKHY0NiksIHY0N18odjQ3KSwgdjQ4Xyh2NDgpLCB2NDlfKHY0OSksIHY1MF8odjUw
KSB7fQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBvcGVyYXRvciBQYXJhbUdlbmVyYXRv
cjxUPigpIGNvbnN0IHsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFf
KSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3Rh
dGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19j
YXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8
VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0
PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4o
djIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRf
KSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+
KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMx
XyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwg
c3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYz
OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4odjQwXyks
IHN0YXRpY19jYXN0PFQ+KHY0MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDJfKSwgc3Rh
dGljX2Nhc3Q8VD4odjQzXyksIHN0YXRpY19jYXN0PFQ+KHY0NF8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2NDVfKSwgc3RhdGljX2Nhc3Q8VD4odjQ2XyksIHN0YXRpY19jYXN0PFQ+KHY0N18p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDhfKSwgc3RhdGljX2Nhc3Q8VD4odjQ5XyksIHN0
YXRpY19jYXN0PFQ+KHY1MF8pfTsKKyAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOworICB9CisK
KyBwcml2YXRlOgorICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBw
b3J0ZWQuCisgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXk1MCYgb3RoZXIpOworCisg
IGNvbnN0IFQxIHYxXzsKKyAgY29uc3QgVDIgdjJfOworICBjb25zdCBUMyB2M187CisgIGNvbnN0
IFQ0IHY0XzsKKyAgY29uc3QgVDUgdjVfOworICBjb25zdCBUNiB2Nl87CisgIGNvbnN0IFQ3IHY3
XzsKKyAgY29uc3QgVDggdjhfOworICBjb25zdCBUOSB2OV87CisgIGNvbnN0IFQxMCB2MTBfOwor
ICBjb25zdCBUMTEgdjExXzsKKyAgY29uc3QgVDEyIHYxMl87CisgIGNvbnN0IFQxMyB2MTNfOwor
ICBjb25zdCBUMTQgdjE0XzsKKyAgY29uc3QgVDE1IHYxNV87CisgIGNvbnN0IFQxNiB2MTZfOwor
ICBjb25zdCBUMTcgdjE3XzsKKyAgY29uc3QgVDE4IHYxOF87CisgIGNvbnN0IFQxOSB2MTlfOwor
ICBjb25zdCBUMjAgdjIwXzsKKyAgY29uc3QgVDIxIHYyMV87CisgIGNvbnN0IFQyMiB2MjJfOwor
ICBjb25zdCBUMjMgdjIzXzsKKyAgY29uc3QgVDI0IHYyNF87CisgIGNvbnN0IFQyNSB2MjVfOwor
ICBjb25zdCBUMjYgdjI2XzsKKyAgY29uc3QgVDI3IHYyN187CisgIGNvbnN0IFQyOCB2MjhfOwor
ICBjb25zdCBUMjkgdjI5XzsKKyAgY29uc3QgVDMwIHYzMF87CisgIGNvbnN0IFQzMSB2MzFfOwor
ICBjb25zdCBUMzIgdjMyXzsKKyAgY29uc3QgVDMzIHYzM187CisgIGNvbnN0IFQzNCB2MzRfOwor
ICBjb25zdCBUMzUgdjM1XzsKKyAgY29uc3QgVDM2IHYzNl87CisgIGNvbnN0IFQzNyB2MzdfOwor
ICBjb25zdCBUMzggdjM4XzsKKyAgY29uc3QgVDM5IHYzOV87CisgIGNvbnN0IFQ0MCB2NDBfOwor
ICBjb25zdCBUNDEgdjQxXzsKKyAgY29uc3QgVDQyIHY0Ml87CisgIGNvbnN0IFQ0MyB2NDNfOwor
ICBjb25zdCBUNDQgdjQ0XzsKKyAgY29uc3QgVDQ1IHY0NV87CisgIGNvbnN0IFQ0NiB2NDZfOwor
ICBjb25zdCBUNDcgdjQ3XzsKKyAgY29uc3QgVDQ4IHY0OF87CisgIGNvbnN0IFQ0OSB2NDlfOwor
ICBjb25zdCBUNTAgdjUwXzsKK307CisKKyMgaWYgR1RFU1RfSEFTX0NPTUJJTkUKKy8vIElOVEVS
TkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBVU0VSIENPREUuCisvLworLy8gR2Vu
ZXJhdGVzIHZhbHVlcyBmcm9tIHRoZSBDYXJ0ZXNpYW4gcHJvZHVjdCBvZiB2YWx1ZXMgcHJvZHVj
ZWQKKy8vIGJ5IHRoZSBhcmd1bWVudCBnZW5lcmF0b3JzLgorLy8KK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUMSwgdHlwZW5hbWUgVDI+CitjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMgorICAg
IDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBU
Mj4gPiB7CisgcHVibGljOgorICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyPiBQYXJh
bVR5cGU7CisKKyAgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjIoY29uc3QgUGFyYW1HZW5lcmF0
b3I8VDE+JiBnMSwKKyAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQyPiYgZzIpCisgICAgICA6
IGcxXyhnMSksIGcyXyhnMikge30KKyAgdmlydHVhbCB+Q2FydGVzaWFuUHJvZHVjdEdlbmVyYXRv
cjIoKSB7fQorCisgIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBC
ZWdpbigpIGNvbnN0IHsKKyAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKHRoaXMsIGcxXywgZzFfLmJl
Z2luKCksIGcyXywgZzJfLmJlZ2luKCkpOworICB9CisgIHZpcnR1YWwgUGFyYW1JdGVyYXRvcklu
dGVyZmFjZTxQYXJhbVR5cGU+KiBFbmQoKSBjb25zdCB7CisgICAgcmV0dXJuIG5ldyBJdGVyYXRv
cih0aGlzLCBnMV8sIGcxXy5lbmQoKSwgZzJfLCBnMl8uZW5kKCkpOworICB9CisKKyBwcml2YXRl
OgorICBjbGFzcyBJdGVyYXRvciA6IHB1YmxpYyBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFt
VHlwZT4geworICAgcHVibGljOgorICAgIEl0ZXJhdG9yKGNvbnN0IFBhcmFtR2VuZXJhdG9ySW50
ZXJmYWNlPFBhcmFtVHlwZT4qIGJhc2UsCisgICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMT4m
IGcxLAorICAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDE+OjppdGVyYXRvciYg
Y3VycmVudDEsCisgICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMj4mIGcyLAorICAgICAgY29u
c3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDI+OjppdGVyYXRvciYgY3VycmVudDIpCisgICAg
ICAgIDogYmFzZV8oYmFzZSksCisgICAgICAgICAgYmVnaW4xXyhnMS5iZWdpbigpKSwgZW5kMV8o
ZzEuZW5kKCkpLCBjdXJyZW50MV8oY3VycmVudDEpLAorICAgICAgICAgIGJlZ2luMl8oZzIuYmVn
aW4oKSksIGVuZDJfKGcyLmVuZCgpKSwgY3VycmVudDJfKGN1cnJlbnQyKSAgICB7CisgICAgICBD
b21wdXRlQ3VycmVudFZhbHVlKCk7CisgICAgfQorICAgIHZpcnR1YWwgfkl0ZXJhdG9yKCkge30K
KworICAgIHZpcnR1YWwgY29uc3QgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiog
QmFzZUdlbmVyYXRvcigpIGNvbnN0IHsKKyAgICAgIHJldHVybiBiYXNlXzsKKyAgICB9CisgICAg
Ly8gQWR2YW5jZSBzaG91bGQgbm90IGJlIGNhbGxlZCBvbiBiZXlvbmQtb2YtcmFuZ2UgaXRlcmF0
b3JzCisgICAgLy8gc28gbm8gY29tcG9uZW50IGl0ZXJhdG9ycyBtdXN0IGJlIGJleW9uZCBlbmQg
b2YgcmFuZ2UsIGVpdGhlci4KKyAgICB2aXJ0dWFsIHZvaWQgQWR2YW5jZSgpIHsKKyAgICAgIGFz
c2VydCghQXRFbmQoKSk7CisgICAgICArK2N1cnJlbnQyXzsKKyAgICAgIGlmIChjdXJyZW50Ml8g
PT0gZW5kMl8pIHsKKyAgICAgICAgY3VycmVudDJfID0gYmVnaW4yXzsKKyAgICAgICAgKytjdXJy
ZW50MV87CisgICAgICB9CisgICAgICBDb21wdXRlQ3VycmVudFZhbHVlKCk7CisgICAgfQorICAg
IHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBDbG9uZSgpIGNvbnN0
IHsKKyAgICAgIHJldHVybiBuZXcgSXRlcmF0b3IoKnRoaXMpOworICAgIH0KKyAgICB2aXJ0dWFs
IGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJuICZjdXJyZW50X3ZhbHVl
XzsgfQorICAgIHZpcnR1YWwgYm9vbCBFcXVhbHMoY29uc3QgUGFyYW1JdGVyYXRvckludGVyZmFj
ZTxQYXJhbVR5cGU+JiBvdGhlcikgY29uc3QgeworICAgICAgLy8gSGF2aW5nIHRoZSBzYW1lIGJh
c2UgZ2VuZXJhdG9yIGd1YXJhbnRlZXMgdGhhdCB0aGUgb3RoZXIKKyAgICAgIC8vIGl0ZXJhdG9y
IGlzIG9mIHRoZSBzYW1lIHR5cGUgYW5kIHdlIGNhbiBkb3duY2FzdC4KKyAgICAgIEdURVNUX0NI
RUNLXyhCYXNlR2VuZXJhdG9yKCkgPT0gb3RoZXIuQmFzZUdlbmVyYXRvcigpKQorICAgICAgICAg
IDw8ICJUaGUgcHJvZ3JhbSBhdHRlbXB0ZWQgdG8gY29tcGFyZSBpdGVyYXRvcnMgIgorICAgICAg
ICAgIDw8ICJmcm9tIGRpZmZlcmVudCBnZW5lcmF0b3JzLiIgPDwgc3RkOjplbmRsOworICAgICAg
Y29uc3QgSXRlcmF0b3IqIHR5cGVkX290aGVyID0KKyAgICAgICAgICBDaGVja2VkRG93bmNhc3RU
b0FjdHVhbFR5cGU8Y29uc3QgSXRlcmF0b3I+KCZvdGhlcik7CisgICAgICAvLyBXZSBtdXN0IHJl
cG9ydCBpdGVyYXRvcnMgZXF1YWwgaWYgdGhleSBib3RoIHBvaW50IGJleW9uZCB0aGVpcgorICAg
ICAgLy8gcmVzcGVjdGl2ZSByYW5nZXMuIFRoYXQgY2FuIGhhcHBlbiBpbiBhIHZhcmlldHkgb2Yg
ZmFzaGlvbnMsCisgICAgICAvLyBzbyB3ZSBoYXZlIHRvIGNvbnN1bHQgQXRFbmQoKS4KKyAgICAg
IHJldHVybiAoQXRFbmQoKSAmJiB0eXBlZF9vdGhlci0+QXRFbmQoKSkgfHwKKyAgICAgICAgICgK
KyAgICAgICAgICBjdXJyZW50MV8gPT0gdHlwZWRfb3RoZXItPmN1cnJlbnQxXyAmJgorICAgICAg
ICAgIGN1cnJlbnQyXyA9PSB0eXBlZF9vdGhlci0+Y3VycmVudDJfKTsKKyAgICB9CisKKyAgIHBy
aXZhdGU6CisgICAgSXRlcmF0b3IoY29uc3QgSXRlcmF0b3ImIG90aGVyKQorICAgICAgICA6IGJh
c2VfKG90aGVyLmJhc2VfKSwKKyAgICAgICAgYmVnaW4xXyhvdGhlci5iZWdpbjFfKSwKKyAgICAg
ICAgZW5kMV8ob3RoZXIuZW5kMV8pLAorICAgICAgICBjdXJyZW50MV8ob3RoZXIuY3VycmVudDFf
KSwKKyAgICAgICAgYmVnaW4yXyhvdGhlci5iZWdpbjJfKSwKKyAgICAgICAgZW5kMl8ob3RoZXIu
ZW5kMl8pLAorICAgICAgICBjdXJyZW50Ml8ob3RoZXIuY3VycmVudDJfKSB7CisgICAgICBDb21w
dXRlQ3VycmVudFZhbHVlKCk7CisgICAgfQorCisgICAgdm9pZCBDb21wdXRlQ3VycmVudFZhbHVl
KCkgeworICAgICAgaWYgKCFBdEVuZCgpKQorICAgICAgICBjdXJyZW50X3ZhbHVlXyA9IFBhcmFt
VHlwZSgqY3VycmVudDFfLCAqY3VycmVudDJfKTsKKyAgICB9CisgICAgYm9vbCBBdEVuZCgpIGNv
bnN0IHsKKyAgICAgIC8vIFdlIG11c3QgcmVwb3J0IGl0ZXJhdG9yIHBhc3QgdGhlIGVuZCBvZiB0
aGUgcmFuZ2Ugd2hlbiBlaXRoZXIgb2YgdGhlCisgICAgICAvLyBjb21wb25lbnQgaXRlcmF0b3Jz
IGhhcyByZWFjaGVkIHRoZSBlbmQgb2YgaXRzIHJhbmdlLgorICAgICAgcmV0dXJuCisgICAgICAg
ICAgY3VycmVudDFfID09IGVuZDFfIHx8CisgICAgICAgICAgY3VycmVudDJfID09IGVuZDJfOwor
ICAgIH0KKworICAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBv
cnRlZC4KKyAgICB2b2lkIG9wZXJhdG9yPShjb25zdCBJdGVyYXRvciYgb3RoZXIpOworCisgICAg
Y29uc3QgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogY29uc3QgYmFzZV87Cisg
ICAgLy8gYmVnaW5baV1fIGFuZCBlbmRbaV1fIGRlZmluZSB0aGUgaS10aCByYW5nZSB0aGF0IEl0
ZXJhdG9yIHRyYXZlcnNlcy4KKyAgICAvLyBjdXJyZW50W2ldXyBpcyB0aGUgYWN0dWFsIHRyYXZl
cnNpbmcgaXRlcmF0b3IuCisgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDE+Ojpp
dGVyYXRvciBiZWdpbjFfOworICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxPjo6
aXRlcmF0b3IgZW5kMV87CisgICAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDE+OjppdGVyYXRv
ciBjdXJyZW50MV87CisgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDI+OjppdGVy
YXRvciBiZWdpbjJfOworICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQyPjo6aXRl
cmF0b3IgZW5kMl87CisgICAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDI+OjppdGVyYXRvciBj
dXJyZW50Ml87CisgICAgUGFyYW1UeXBlIGN1cnJlbnRfdmFsdWVfOworICB9OyAgLy8gY2xhc3Mg
Q2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjI6Okl0ZXJhdG9yCisKKyAgLy8gTm8gaW1wbGVtZW50
YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgorICB2b2lkIG9wZXJhdG9yPShjb25z
dCBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMiYgb3RoZXIpOworCisgIGNvbnN0IFBhcmFtR2Vu
ZXJhdG9yPFQxPiBnMV87CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQyPiBnMl87Cit9OyAgLy8g
Y2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjIKKworCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMz4KK2NsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5l
cmF0b3IzCisgICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6dGVzdGluZzo6
dHVwbGU8VDEsIFQyLCBUMz4gPiB7CisgcHVibGljOgorICB0eXBlZGVmIDo6dGVzdGluZzo6dHVw
bGU8VDEsIFQyLCBUMz4gUGFyYW1UeXBlOworCisgIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3Iz
KGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCisgICAgICBjb25zdCBQYXJhbUdlbmVyYXRv
cjxUMj4mIGcyLCBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMz4mIGczKQorICAgICAgOiBnMV8oZzEp
LCBnMl8oZzIpLCBnM18oZzMpIHt9CisgIHZpcnR1YWwgfkNhcnRlc2lhblByb2R1Y3RHZW5lcmF0
b3IzKCkge30KKworICB2aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiog
QmVnaW4oKSBjb25zdCB7CisgICAgcmV0dXJuIG5ldyBJdGVyYXRvcih0aGlzLCBnMV8sIGcxXy5i
ZWdpbigpLCBnMl8sIGcyXy5iZWdpbigpLCBnM18sCisgICAgICAgIGczXy5iZWdpbigpKTsKKyAg
fQorICB2aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogRW5kKCkgY29u
c3QgeworICAgIHJldHVybiBuZXcgSXRlcmF0b3IodGhpcywgZzFfLCBnMV8uZW5kKCksIGcyXywg
ZzJfLmVuZCgpLCBnM18sIGczXy5lbmQoKSk7CisgIH0KKworIHByaXZhdGU6CisgIGNsYXNzIEl0
ZXJhdG9yIDogcHVibGljIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiB7CisgICBw
dWJsaWM6CisgICAgSXRlcmF0b3IoY29uc3QgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8UGFyYW1U
eXBlPiogYmFzZSwKKyAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCisgICAgICBj
b25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMT46Oml0ZXJhdG9yJiBjdXJyZW50MSwKKyAg
ICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQyPiYgZzIsCisgICAgICBjb25zdCB0eXBlbmFtZSBQ
YXJhbUdlbmVyYXRvcjxUMj46Oml0ZXJhdG9yJiBjdXJyZW50MiwKKyAgICAgIGNvbnN0IFBhcmFt
R2VuZXJhdG9yPFQzPiYgZzMsCisgICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxU
Mz46Oml0ZXJhdG9yJiBjdXJyZW50MykKKyAgICAgICAgOiBiYXNlXyhiYXNlKSwKKyAgICAgICAg
ICBiZWdpbjFfKGcxLmJlZ2luKCkpLCBlbmQxXyhnMS5lbmQoKSksIGN1cnJlbnQxXyhjdXJyZW50
MSksCisgICAgICAgICAgYmVnaW4yXyhnMi5iZWdpbigpKSwgZW5kMl8oZzIuZW5kKCkpLCBjdXJy
ZW50Ml8oY3VycmVudDIpLAorICAgICAgICAgIGJlZ2luM18oZzMuYmVnaW4oKSksIGVuZDNfKGcz
LmVuZCgpKSwgY3VycmVudDNfKGN1cnJlbnQzKSAgICB7CisgICAgICBDb21wdXRlQ3VycmVudFZh
bHVlKCk7CisgICAgfQorICAgIHZpcnR1YWwgfkl0ZXJhdG9yKCkge30KKworICAgIHZpcnR1YWwg
Y29uc3QgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQmFzZUdlbmVyYXRvcigp
IGNvbnN0IHsKKyAgICAgIHJldHVybiBiYXNlXzsKKyAgICB9CisgICAgLy8gQWR2YW5jZSBzaG91
bGQgbm90IGJlIGNhbGxlZCBvbiBiZXlvbmQtb2YtcmFuZ2UgaXRlcmF0b3JzCisgICAgLy8gc28g
bm8gY29tcG9uZW50IGl0ZXJhdG9ycyBtdXN0IGJlIGJleW9uZCBlbmQgb2YgcmFuZ2UsIGVpdGhl
ci4KKyAgICB2aXJ0dWFsIHZvaWQgQWR2YW5jZSgpIHsKKyAgICAgIGFzc2VydCghQXRFbmQoKSk7
CisgICAgICArK2N1cnJlbnQzXzsKKyAgICAgIGlmIChjdXJyZW50M18gPT0gZW5kM18pIHsKKyAg
ICAgICAgY3VycmVudDNfID0gYmVnaW4zXzsKKyAgICAgICAgKytjdXJyZW50Ml87CisgICAgICB9
CisgICAgICBpZiAoY3VycmVudDJfID09IGVuZDJfKSB7CisgICAgICAgIGN1cnJlbnQyXyA9IGJl
Z2luMl87CisgICAgICAgICsrY3VycmVudDFfOworICAgICAgfQorICAgICAgQ29tcHV0ZUN1cnJl
bnRWYWx1ZSgpOworICAgIH0KKyAgICB2aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFy
YW1UeXBlPiogQ2xvbmUoKSBjb25zdCB7CisgICAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKCp0aGlz
KTsKKyAgICB9CisgICAgdmlydHVhbCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7
IHJldHVybiAmY3VycmVudF92YWx1ZV87IH0KKyAgICB2aXJ0dWFsIGJvb2wgRXF1YWxzKGNvbnN0
IFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiYgb3RoZXIpIGNvbnN0IHsKKyAgICAg
IC8vIEhhdmluZyB0aGUgc2FtZSBiYXNlIGdlbmVyYXRvciBndWFyYW50ZWVzIHRoYXQgdGhlIG90
aGVyCisgICAgICAvLyBpdGVyYXRvciBpcyBvZiB0aGUgc2FtZSB0eXBlIGFuZCB3ZSBjYW4gZG93
bmNhc3QuCisgICAgICBHVEVTVF9DSEVDS18oQmFzZUdlbmVyYXRvcigpID09IG90aGVyLkJhc2VH
ZW5lcmF0b3IoKSkKKyAgICAgICAgICA8PCAiVGhlIHByb2dyYW0gYXR0ZW1wdGVkIHRvIGNvbXBh
cmUgaXRlcmF0b3JzICIKKyAgICAgICAgICA8PCAiZnJvbSBkaWZmZXJlbnQgZ2VuZXJhdG9ycy4i
IDw8IHN0ZDo6ZW5kbDsKKyAgICAgIGNvbnN0IEl0ZXJhdG9yKiB0eXBlZF9vdGhlciA9CisgICAg
ICAgICAgQ2hlY2tlZERvd25jYXN0VG9BY3R1YWxUeXBlPGNvbnN0IEl0ZXJhdG9yPigmb3RoZXIp
OworICAgICAgLy8gV2UgbXVzdCByZXBvcnQgaXRlcmF0b3JzIGVxdWFsIGlmIHRoZXkgYm90aCBw
b2ludCBiZXlvbmQgdGhlaXIKKyAgICAgIC8vIHJlc3BlY3RpdmUgcmFuZ2VzLiBUaGF0IGNhbiBo
YXBwZW4gaW4gYSB2YXJpZXR5IG9mIGZhc2hpb25zLAorICAgICAgLy8gc28gd2UgaGF2ZSB0byBj
b25zdWx0IEF0RW5kKCkuCisgICAgICByZXR1cm4gKEF0RW5kKCkgJiYgdHlwZWRfb3RoZXItPkF0
RW5kKCkpIHx8CisgICAgICAgICAoCisgICAgICAgICAgY3VycmVudDFfID09IHR5cGVkX290aGVy
LT5jdXJyZW50MV8gJiYKKyAgICAgICAgICBjdXJyZW50Ml8gPT0gdHlwZWRfb3RoZXItPmN1cnJl
bnQyXyAmJgorICAgICAgICAgIGN1cnJlbnQzXyA9PSB0eXBlZF9vdGhlci0+Y3VycmVudDNfKTsK
KyAgICB9CisKKyAgIHByaXZhdGU6CisgICAgSXRlcmF0b3IoY29uc3QgSXRlcmF0b3ImIG90aGVy
KQorICAgICAgICA6IGJhc2VfKG90aGVyLmJhc2VfKSwKKyAgICAgICAgYmVnaW4xXyhvdGhlci5i
ZWdpbjFfKSwKKyAgICAgICAgZW5kMV8ob3RoZXIuZW5kMV8pLAorICAgICAgICBjdXJyZW50MV8o
b3RoZXIuY3VycmVudDFfKSwKKyAgICAgICAgYmVnaW4yXyhvdGhlci5iZWdpbjJfKSwKKyAgICAg
ICAgZW5kMl8ob3RoZXIuZW5kMl8pLAorICAgICAgICBjdXJyZW50Ml8ob3RoZXIuY3VycmVudDJf
KSwKKyAgICAgICAgYmVnaW4zXyhvdGhlci5iZWdpbjNfKSwKKyAgICAgICAgZW5kM18ob3RoZXIu
ZW5kM18pLAorICAgICAgICBjdXJyZW50M18ob3RoZXIuY3VycmVudDNfKSB7CisgICAgICBDb21w
dXRlQ3VycmVudFZhbHVlKCk7CisgICAgfQorCisgICAgdm9pZCBDb21wdXRlQ3VycmVudFZhbHVl
KCkgeworICAgICAgaWYgKCFBdEVuZCgpKQorICAgICAgICBjdXJyZW50X3ZhbHVlXyA9IFBhcmFt
VHlwZSgqY3VycmVudDFfLCAqY3VycmVudDJfLCAqY3VycmVudDNfKTsKKyAgICB9CisgICAgYm9v
bCBBdEVuZCgpIGNvbnN0IHsKKyAgICAgIC8vIFdlIG11c3QgcmVwb3J0IGl0ZXJhdG9yIHBhc3Qg
dGhlIGVuZCBvZiB0aGUgcmFuZ2Ugd2hlbiBlaXRoZXIgb2YgdGhlCisgICAgICAvLyBjb21wb25l
bnQgaXRlcmF0b3JzIGhhcyByZWFjaGVkIHRoZSBlbmQgb2YgaXRzIHJhbmdlLgorICAgICAgcmV0
dXJuCisgICAgICAgICAgY3VycmVudDFfID09IGVuZDFfIHx8CisgICAgICAgICAgY3VycmVudDJf
ID09IGVuZDJfIHx8CisgICAgICAgICAgY3VycmVudDNfID09IGVuZDNfOworICAgIH0KKworICAg
IC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KKyAgICB2
b2lkIG9wZXJhdG9yPShjb25zdCBJdGVyYXRvciYgb3RoZXIpOworCisgICAgY29uc3QgUGFyYW1H
ZW5lcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogY29uc3QgYmFzZV87CisgICAgLy8gYmVnaW5b
aV1fIGFuZCBlbmRbaV1fIGRlZmluZSB0aGUgaS10aCByYW5nZSB0aGF0IEl0ZXJhdG9yIHRyYXZl
cnNlcy4KKyAgICAvLyBjdXJyZW50W2ldXyBpcyB0aGUgYWN0dWFsIHRyYXZlcnNpbmcgaXRlcmF0
b3IuCisgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDE+OjppdGVyYXRvciBiZWdp
bjFfOworICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxPjo6aXRlcmF0b3IgZW5k
MV87CisgICAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDE+OjppdGVyYXRvciBjdXJyZW50MV87
CisgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDI+OjppdGVyYXRvciBiZWdpbjJf
OworICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQyPjo6aXRlcmF0b3IgZW5kMl87
CisgICAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDI+OjppdGVyYXRvciBjdXJyZW50Ml87Cisg
ICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDM+OjppdGVyYXRvciBiZWdpbjNfOwor
ICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQzPjo6aXRlcmF0b3IgZW5kM187Cisg
ICAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDM+OjppdGVyYXRvciBjdXJyZW50M187CisgICAg
UGFyYW1UeXBlIGN1cnJlbnRfdmFsdWVfOworICB9OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJvZHVj
dEdlbmVyYXRvcjM6Okl0ZXJhdG9yCisKKyAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25t
ZW50IGlzIHVuc3VwcG9ydGVkLgorICB2b2lkIG9wZXJhdG9yPShjb25zdCBDYXJ0ZXNpYW5Qcm9k
dWN0R2VuZXJhdG9yMyYgb3RoZXIpOworCisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQxPiBnMV87
CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQyPiBnMl87CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9y
PFQzPiBnM187Cit9OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjMKKworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUg
VDQ+CitjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNAorICAgIDogcHVibGljIFBhcmFt
R2VuZXJhdG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0PiA+IHsK
KyBwdWJsaWM6CisgIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUND4gUGFy
YW1UeXBlOworCisgIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I0KGNvbnN0IFBhcmFtR2VuZXJh
dG9yPFQxPiYgZzEsCisgICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMj4mIGcyLCBjb25zdCBQ
YXJhbUdlbmVyYXRvcjxUMz4mIGczLAorICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDQ+JiBn
NCkKKyAgICAgIDogZzFfKGcxKSwgZzJfKGcyKSwgZzNfKGczKSwgZzRfKGc0KSB7fQorICB2aXJ0
dWFsIH5DYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNCgpIHt9CisKKyAgdmlydHVhbCBQYXJhbUl0
ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIEJlZ2luKCkgY29uc3QgeworICAgIHJldHVybiBu
ZXcgSXRlcmF0b3IodGhpcywgZzFfLCBnMV8uYmVnaW4oKSwgZzJfLCBnMl8uYmVnaW4oKSwgZzNf
LAorICAgICAgICBnM18uYmVnaW4oKSwgZzRfLCBnNF8uYmVnaW4oKSk7CisgIH0KKyAgdmlydHVh
bCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIEVuZCgpIGNvbnN0IHsKKyAgICBy
ZXR1cm4gbmV3IEl0ZXJhdG9yKHRoaXMsIGcxXywgZzFfLmVuZCgpLCBnMl8sIGcyXy5lbmQoKSwg
ZzNfLCBnM18uZW5kKCksCisgICAgICAgIGc0XywgZzRfLmVuZCgpKTsKKyAgfQorCisgcHJpdmF0
ZToKKyAgY2xhc3MgSXRlcmF0b3IgOiBwdWJsaWMgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJh
bVR5cGU+IHsKKyAgIHB1YmxpYzoKKyAgICBJdGVyYXRvcihjb25zdCBQYXJhbUdlbmVyYXRvcklu
dGVyZmFjZTxQYXJhbVR5cGU+KiBiYXNlLAorICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDE+
JiBnMSwKKyAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxPjo6aXRlcmF0b3Im
IGN1cnJlbnQxLAorICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDI+JiBnMiwKKyAgICAgIGNv
bnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQyPjo6aXRlcmF0b3ImIGN1cnJlbnQyLAorICAg
ICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDM+JiBnMywKKyAgICAgIGNvbnN0IHR5cGVuYW1lIFBh
cmFtR2VuZXJhdG9yPFQzPjo6aXRlcmF0b3ImIGN1cnJlbnQzLAorICAgICAgY29uc3QgUGFyYW1H
ZW5lcmF0b3I8VDQ+JiBnNCwKKyAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ0
Pjo6aXRlcmF0b3ImIGN1cnJlbnQ0KQorICAgICAgICA6IGJhc2VfKGJhc2UpLAorICAgICAgICAg
IGJlZ2luMV8oZzEuYmVnaW4oKSksIGVuZDFfKGcxLmVuZCgpKSwgY3VycmVudDFfKGN1cnJlbnQx
KSwKKyAgICAgICAgICBiZWdpbjJfKGcyLmJlZ2luKCkpLCBlbmQyXyhnMi5lbmQoKSksIGN1cnJl
bnQyXyhjdXJyZW50MiksCisgICAgICAgICAgYmVnaW4zXyhnMy5iZWdpbigpKSwgZW5kM18oZzMu
ZW5kKCkpLCBjdXJyZW50M18oY3VycmVudDMpLAorICAgICAgICAgIGJlZ2luNF8oZzQuYmVnaW4o
KSksIGVuZDRfKGc0LmVuZCgpKSwgY3VycmVudDRfKGN1cnJlbnQ0KSAgICB7CisgICAgICBDb21w
dXRlQ3VycmVudFZhbHVlKCk7CisgICAgfQorICAgIHZpcnR1YWwgfkl0ZXJhdG9yKCkge30KKwor
ICAgIHZpcnR1YWwgY29uc3QgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQmFz
ZUdlbmVyYXRvcigpIGNvbnN0IHsKKyAgICAgIHJldHVybiBiYXNlXzsKKyAgICB9CisgICAgLy8g
QWR2YW5jZSBzaG91bGQgbm90IGJlIGNhbGxlZCBvbiBiZXlvbmQtb2YtcmFuZ2UgaXRlcmF0b3Jz
CisgICAgLy8gc28gbm8gY29tcG9uZW50IGl0ZXJhdG9ycyBtdXN0IGJlIGJleW9uZCBlbmQgb2Yg
cmFuZ2UsIGVpdGhlci4KKyAgICB2aXJ0dWFsIHZvaWQgQWR2YW5jZSgpIHsKKyAgICAgIGFzc2Vy
dCghQXRFbmQoKSk7CisgICAgICArK2N1cnJlbnQ0XzsKKyAgICAgIGlmIChjdXJyZW50NF8gPT0g
ZW5kNF8pIHsKKyAgICAgICAgY3VycmVudDRfID0gYmVnaW40XzsKKyAgICAgICAgKytjdXJyZW50
M187CisgICAgICB9CisgICAgICBpZiAoY3VycmVudDNfID09IGVuZDNfKSB7CisgICAgICAgIGN1
cnJlbnQzXyA9IGJlZ2luM187CisgICAgICAgICsrY3VycmVudDJfOworICAgICAgfQorICAgICAg
aWYgKGN1cnJlbnQyXyA9PSBlbmQyXykgeworICAgICAgICBjdXJyZW50Ml8gPSBiZWdpbjJfOwor
ICAgICAgICArK2N1cnJlbnQxXzsKKyAgICAgIH0KKyAgICAgIENvbXB1dGVDdXJyZW50VmFsdWUo
KTsKKyAgICB9CisgICAgdmlydHVhbCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4q
IENsb25lKCkgY29uc3QgeworICAgICAgcmV0dXJuIG5ldyBJdGVyYXRvcigqdGhpcyk7CisgICAg
fQorICAgIHZpcnR1YWwgY29uc3QgUGFyYW1UeXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4g
JmN1cnJlbnRfdmFsdWVfOyB9CisgICAgdmlydHVhbCBib29sIEVxdWFscyhjb25zdCBQYXJhbUl0
ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4mIG90aGVyKSBjb25zdCB7CisgICAgICAvLyBIYXZp
bmcgdGhlIHNhbWUgYmFzZSBnZW5lcmF0b3IgZ3VhcmFudGVlcyB0aGF0IHRoZSBvdGhlcgorICAg
ICAgLy8gaXRlcmF0b3IgaXMgb2YgdGhlIHNhbWUgdHlwZSBhbmQgd2UgY2FuIGRvd25jYXN0Lgor
ICAgICAgR1RFU1RfQ0hFQ0tfKEJhc2VHZW5lcmF0b3IoKSA9PSBvdGhlci5CYXNlR2VuZXJhdG9y
KCkpCisgICAgICAgICAgPDwgIlRoZSBwcm9ncmFtIGF0dGVtcHRlZCB0byBjb21wYXJlIGl0ZXJh
dG9ycyAiCisgICAgICAgICAgPDwgImZyb20gZGlmZmVyZW50IGdlbmVyYXRvcnMuIiA8PCBzdGQ6
OmVuZGw7CisgICAgICBjb25zdCBJdGVyYXRvciogdHlwZWRfb3RoZXIgPQorICAgICAgICAgIENo
ZWNrZWREb3duY2FzdFRvQWN0dWFsVHlwZTxjb25zdCBJdGVyYXRvcj4oJm90aGVyKTsKKyAgICAg
IC8vIFdlIG11c3QgcmVwb3J0IGl0ZXJhdG9ycyBlcXVhbCBpZiB0aGV5IGJvdGggcG9pbnQgYmV5
b25kIHRoZWlyCisgICAgICAvLyByZXNwZWN0aXZlIHJhbmdlcy4gVGhhdCBjYW4gaGFwcGVuIGlu
IGEgdmFyaWV0eSBvZiBmYXNoaW9ucywKKyAgICAgIC8vIHNvIHdlIGhhdmUgdG8gY29uc3VsdCBB
dEVuZCgpLgorICAgICAgcmV0dXJuIChBdEVuZCgpICYmIHR5cGVkX290aGVyLT5BdEVuZCgpKSB8
fAorICAgICAgICAgKAorICAgICAgICAgIGN1cnJlbnQxXyA9PSB0eXBlZF9vdGhlci0+Y3VycmVu
dDFfICYmCisgICAgICAgICAgY3VycmVudDJfID09IHR5cGVkX290aGVyLT5jdXJyZW50Ml8gJiYK
KyAgICAgICAgICBjdXJyZW50M18gPT0gdHlwZWRfb3RoZXItPmN1cnJlbnQzXyAmJgorICAgICAg
ICAgIGN1cnJlbnQ0XyA9PSB0eXBlZF9vdGhlci0+Y3VycmVudDRfKTsKKyAgICB9CisKKyAgIHBy
aXZhdGU6CisgICAgSXRlcmF0b3IoY29uc3QgSXRlcmF0b3ImIG90aGVyKQorICAgICAgICA6IGJh
c2VfKG90aGVyLmJhc2VfKSwKKyAgICAgICAgYmVnaW4xXyhvdGhlci5iZWdpbjFfKSwKKyAgICAg
ICAgZW5kMV8ob3RoZXIuZW5kMV8pLAorICAgICAgICBjdXJyZW50MV8ob3RoZXIuY3VycmVudDFf
KSwKKyAgICAgICAgYmVnaW4yXyhvdGhlci5iZWdpbjJfKSwKKyAgICAgICAgZW5kMl8ob3RoZXIu
ZW5kMl8pLAorICAgICAgICBjdXJyZW50Ml8ob3RoZXIuY3VycmVudDJfKSwKKyAgICAgICAgYmVn
aW4zXyhvdGhlci5iZWdpbjNfKSwKKyAgICAgICAgZW5kM18ob3RoZXIuZW5kM18pLAorICAgICAg
ICBjdXJyZW50M18ob3RoZXIuY3VycmVudDNfKSwKKyAgICAgICAgYmVnaW40XyhvdGhlci5iZWdp
bjRfKSwKKyAgICAgICAgZW5kNF8ob3RoZXIuZW5kNF8pLAorICAgICAgICBjdXJyZW50NF8ob3Ro
ZXIuY3VycmVudDRfKSB7CisgICAgICBDb21wdXRlQ3VycmVudFZhbHVlKCk7CisgICAgfQorCisg
ICAgdm9pZCBDb21wdXRlQ3VycmVudFZhbHVlKCkgeworICAgICAgaWYgKCFBdEVuZCgpKQorICAg
ICAgICBjdXJyZW50X3ZhbHVlXyA9IFBhcmFtVHlwZSgqY3VycmVudDFfLCAqY3VycmVudDJfLCAq
Y3VycmVudDNfLAorICAgICAgICAgICAgKmN1cnJlbnQ0Xyk7CisgICAgfQorICAgIGJvb2wgQXRF
bmQoKSBjb25zdCB7CisgICAgICAvLyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRvciBwYXN0IHRoZSBl
bmQgb2YgdGhlIHJhbmdlIHdoZW4gZWl0aGVyIG9mIHRoZQorICAgICAgLy8gY29tcG9uZW50IGl0
ZXJhdG9ycyBoYXMgcmVhY2hlZCB0aGUgZW5kIG9mIGl0cyByYW5nZS4KKyAgICAgIHJldHVybgor
ICAgICAgICAgIGN1cnJlbnQxXyA9PSBlbmQxXyB8fAorICAgICAgICAgIGN1cnJlbnQyXyA9PSBl
bmQyXyB8fAorICAgICAgICAgIGN1cnJlbnQzXyA9PSBlbmQzXyB8fAorICAgICAgICAgIGN1cnJl
bnQ0XyA9PSBlbmQ0XzsKKyAgICB9CisKKyAgICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2ln
bm1lbnQgaXMgdW5zdXBwb3J0ZWQuCisgICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgSXRlcmF0b3Im
IG90aGVyKTsKKworICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4q
IGNvbnN0IGJhc2VfOworICAgIC8vIGJlZ2luW2ldXyBhbmQgZW5kW2ldXyBkZWZpbmUgdGhlIGkt
dGggcmFuZ2UgdGhhdCBJdGVyYXRvciB0cmF2ZXJzZXMuCisgICAgLy8gY3VycmVudFtpXV8gaXMg
dGhlIGFjdHVhbCB0cmF2ZXJzaW5nIGl0ZXJhdG9yLgorICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFt
R2VuZXJhdG9yPFQxPjo6aXRlcmF0b3IgYmVnaW4xXzsKKyAgICBjb25zdCB0eXBlbmFtZSBQYXJh
bUdlbmVyYXRvcjxUMT46Oml0ZXJhdG9yIGVuZDFfOworICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJh
dG9yPFQxPjo6aXRlcmF0b3IgY3VycmVudDFfOworICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2Vu
ZXJhdG9yPFQyPjo6aXRlcmF0b3IgYmVnaW4yXzsKKyAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdl
bmVyYXRvcjxUMj46Oml0ZXJhdG9yIGVuZDJfOworICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9y
PFQyPjo6aXRlcmF0b3IgY3VycmVudDJfOworICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJh
dG9yPFQzPjo6aXRlcmF0b3IgYmVnaW4zXzsKKyAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVy
YXRvcjxUMz46Oml0ZXJhdG9yIGVuZDNfOworICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQz
Pjo6aXRlcmF0b3IgY3VycmVudDNfOworICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9y
PFQ0Pjo6aXRlcmF0b3IgYmVnaW40XzsKKyAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRv
cjxUND46Oml0ZXJhdG9yIGVuZDRfOworICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ0Pjo6
aXRlcmF0b3IgY3VycmVudDRfOworICAgIFBhcmFtVHlwZSBjdXJyZW50X3ZhbHVlXzsKKyAgfTsg
IC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I0OjpJdGVyYXRvcgorCisgIC8vIE5v
IGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KKyAgdm9pZCBvcGVy
YXRvcj0oY29uc3QgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjQmIG90aGVyKTsKKworICBjb25z
dCBQYXJhbUdlbmVyYXRvcjxUMT4gZzFfOworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMj4gZzJf
OworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMz4gZzNfOworICBjb25zdCBQYXJhbUdlbmVyYXRv
cjxUND4gZzRfOworfTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I0CisKKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1l
IFQ0LCB0eXBlbmFtZSBUNT4KK2NsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I1CisgICAg
OiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQy
LCBUMywgVDQsIFQ1PiA+IHsKKyBwdWJsaWM6CisgIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxU
MSwgVDIsIFQzLCBUNCwgVDU+IFBhcmFtVHlwZTsKKworICBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJh
dG9yNShjb25zdCBQYXJhbUdlbmVyYXRvcjxUMT4mIGcxLAorICAgICAgY29uc3QgUGFyYW1HZW5l
cmF0b3I8VDI+JiBnMiwgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDM+JiBnMywKKyAgICAgIGNvbnN0
IFBhcmFtR2VuZXJhdG9yPFQ0PiYgZzQsIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQ1PiYgZzUpCisg
ICAgICA6IGcxXyhnMSksIGcyXyhnMiksIGczXyhnMyksIGc0XyhnNCksIGc1XyhnNSkge30KKyAg
dmlydHVhbCB+Q2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjUoKSB7fQorCisgIHZpcnR1YWwgUGFy
YW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBCZWdpbigpIGNvbnN0IHsKKyAgICByZXR1
cm4gbmV3IEl0ZXJhdG9yKHRoaXMsIGcxXywgZzFfLmJlZ2luKCksIGcyXywgZzJfLmJlZ2luKCks
IGczXywKKyAgICAgICAgZzNfLmJlZ2luKCksIGc0XywgZzRfLmJlZ2luKCksIGc1XywgZzVfLmJl
Z2luKCkpOworICB9CisgIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+
KiBFbmQoKSBjb25zdCB7CisgICAgcmV0dXJuIG5ldyBJdGVyYXRvcih0aGlzLCBnMV8sIGcxXy5l
bmQoKSwgZzJfLCBnMl8uZW5kKCksIGczXywgZzNfLmVuZCgpLAorICAgICAgICBnNF8sIGc0Xy5l
bmQoKSwgZzVfLCBnNV8uZW5kKCkpOworICB9CisKKyBwcml2YXRlOgorICBjbGFzcyBJdGVyYXRv
ciA6IHB1YmxpYyBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4geworICAgcHVibGlj
OgorICAgIEl0ZXJhdG9yKGNvbnN0IFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4q
IGJhc2UsCisgICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMT4mIGcxLAorICAgICAgY29uc3Qg
dHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDE+OjppdGVyYXRvciYgY3VycmVudDEsCisgICAgICBj
b25zdCBQYXJhbUdlbmVyYXRvcjxUMj4mIGcyLAorICAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1H
ZW5lcmF0b3I8VDI+OjppdGVyYXRvciYgY3VycmVudDIsCisgICAgICBjb25zdCBQYXJhbUdlbmVy
YXRvcjxUMz4mIGczLAorICAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDM+Ojpp
dGVyYXRvciYgY3VycmVudDMsCisgICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUND4mIGc0LAor
ICAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDQ+OjppdGVyYXRvciYgY3VycmVu
dDQsCisgICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUNT4mIGc1LAorICAgICAgY29uc3QgdHlw
ZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDU+OjppdGVyYXRvciYgY3VycmVudDUpCisgICAgICAgIDog
YmFzZV8oYmFzZSksCisgICAgICAgICAgYmVnaW4xXyhnMS5iZWdpbigpKSwgZW5kMV8oZzEuZW5k
KCkpLCBjdXJyZW50MV8oY3VycmVudDEpLAorICAgICAgICAgIGJlZ2luMl8oZzIuYmVnaW4oKSks
IGVuZDJfKGcyLmVuZCgpKSwgY3VycmVudDJfKGN1cnJlbnQyKSwKKyAgICAgICAgICBiZWdpbjNf
KGczLmJlZ2luKCkpLCBlbmQzXyhnMy5lbmQoKSksIGN1cnJlbnQzXyhjdXJyZW50MyksCisgICAg
ICAgICAgYmVnaW40XyhnNC5iZWdpbigpKSwgZW5kNF8oZzQuZW5kKCkpLCBjdXJyZW50NF8oY3Vy
cmVudDQpLAorICAgICAgICAgIGJlZ2luNV8oZzUuYmVnaW4oKSksIGVuZDVfKGc1LmVuZCgpKSwg
Y3VycmVudDVfKGN1cnJlbnQ1KSAgICB7CisgICAgICBDb21wdXRlQ3VycmVudFZhbHVlKCk7Cisg
ICAgfQorICAgIHZpcnR1YWwgfkl0ZXJhdG9yKCkge30KKworICAgIHZpcnR1YWwgY29uc3QgUGFy
YW1HZW5lcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQmFzZUdlbmVyYXRvcigpIGNvbnN0IHsK
KyAgICAgIHJldHVybiBiYXNlXzsKKyAgICB9CisgICAgLy8gQWR2YW5jZSBzaG91bGQgbm90IGJl
IGNhbGxlZCBvbiBiZXlvbmQtb2YtcmFuZ2UgaXRlcmF0b3JzCisgICAgLy8gc28gbm8gY29tcG9u
ZW50IGl0ZXJhdG9ycyBtdXN0IGJlIGJleW9uZCBlbmQgb2YgcmFuZ2UsIGVpdGhlci4KKyAgICB2
aXJ0dWFsIHZvaWQgQWR2YW5jZSgpIHsKKyAgICAgIGFzc2VydCghQXRFbmQoKSk7CisgICAgICAr
K2N1cnJlbnQ1XzsKKyAgICAgIGlmIChjdXJyZW50NV8gPT0gZW5kNV8pIHsKKyAgICAgICAgY3Vy
cmVudDVfID0gYmVnaW41XzsKKyAgICAgICAgKytjdXJyZW50NF87CisgICAgICB9CisgICAgICBp
ZiAoY3VycmVudDRfID09IGVuZDRfKSB7CisgICAgICAgIGN1cnJlbnQ0XyA9IGJlZ2luNF87Cisg
ICAgICAgICsrY3VycmVudDNfOworICAgICAgfQorICAgICAgaWYgKGN1cnJlbnQzXyA9PSBlbmQz
XykgeworICAgICAgICBjdXJyZW50M18gPSBiZWdpbjNfOworICAgICAgICArK2N1cnJlbnQyXzsK
KyAgICAgIH0KKyAgICAgIGlmIChjdXJyZW50Ml8gPT0gZW5kMl8pIHsKKyAgICAgICAgY3VycmVu
dDJfID0gYmVnaW4yXzsKKyAgICAgICAgKytjdXJyZW50MV87CisgICAgICB9CisgICAgICBDb21w
dXRlQ3VycmVudFZhbHVlKCk7CisgICAgfQorICAgIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVy
ZmFjZTxQYXJhbVR5cGU+KiBDbG9uZSgpIGNvbnN0IHsKKyAgICAgIHJldHVybiBuZXcgSXRlcmF0
b3IoKnRoaXMpOworICAgIH0KKyAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgp
IGNvbnN0IHsgcmV0dXJuICZjdXJyZW50X3ZhbHVlXzsgfQorICAgIHZpcnR1YWwgYm9vbCBFcXVh
bHMoY29uc3QgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+JiBvdGhlcikgY29uc3Qg
eworICAgICAgLy8gSGF2aW5nIHRoZSBzYW1lIGJhc2UgZ2VuZXJhdG9yIGd1YXJhbnRlZXMgdGhh
dCB0aGUgb3RoZXIKKyAgICAgIC8vIGl0ZXJhdG9yIGlzIG9mIHRoZSBzYW1lIHR5cGUgYW5kIHdl
IGNhbiBkb3duY2FzdC4KKyAgICAgIEdURVNUX0NIRUNLXyhCYXNlR2VuZXJhdG9yKCkgPT0gb3Ro
ZXIuQmFzZUdlbmVyYXRvcigpKQorICAgICAgICAgIDw8ICJUaGUgcHJvZ3JhbSBhdHRlbXB0ZWQg
dG8gY29tcGFyZSBpdGVyYXRvcnMgIgorICAgICAgICAgIDw8ICJmcm9tIGRpZmZlcmVudCBnZW5l
cmF0b3JzLiIgPDwgc3RkOjplbmRsOworICAgICAgY29uc3QgSXRlcmF0b3IqIHR5cGVkX290aGVy
ID0KKyAgICAgICAgICBDaGVja2VkRG93bmNhc3RUb0FjdHVhbFR5cGU8Y29uc3QgSXRlcmF0b3I+
KCZvdGhlcik7CisgICAgICAvLyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRvcnMgZXF1YWwgaWYgdGhl
eSBib3RoIHBvaW50IGJleW9uZCB0aGVpcgorICAgICAgLy8gcmVzcGVjdGl2ZSByYW5nZXMuIFRo
YXQgY2FuIGhhcHBlbiBpbiBhIHZhcmlldHkgb2YgZmFzaGlvbnMsCisgICAgICAvLyBzbyB3ZSBo
YXZlIHRvIGNvbnN1bHQgQXRFbmQoKS4KKyAgICAgIHJldHVybiAoQXRFbmQoKSAmJiB0eXBlZF9v
dGhlci0+QXRFbmQoKSkgfHwKKyAgICAgICAgICgKKyAgICAgICAgICBjdXJyZW50MV8gPT0gdHlw
ZWRfb3RoZXItPmN1cnJlbnQxXyAmJgorICAgICAgICAgIGN1cnJlbnQyXyA9PSB0eXBlZF9vdGhl
ci0+Y3VycmVudDJfICYmCisgICAgICAgICAgY3VycmVudDNfID09IHR5cGVkX290aGVyLT5jdXJy
ZW50M18gJiYKKyAgICAgICAgICBjdXJyZW50NF8gPT0gdHlwZWRfb3RoZXItPmN1cnJlbnQ0XyAm
JgorICAgICAgICAgIGN1cnJlbnQ1XyA9PSB0eXBlZF9vdGhlci0+Y3VycmVudDVfKTsKKyAgICB9
CisKKyAgIHByaXZhdGU6CisgICAgSXRlcmF0b3IoY29uc3QgSXRlcmF0b3ImIG90aGVyKQorICAg
ICAgICA6IGJhc2VfKG90aGVyLmJhc2VfKSwKKyAgICAgICAgYmVnaW4xXyhvdGhlci5iZWdpbjFf
KSwKKyAgICAgICAgZW5kMV8ob3RoZXIuZW5kMV8pLAorICAgICAgICBjdXJyZW50MV8ob3RoZXIu
Y3VycmVudDFfKSwKKyAgICAgICAgYmVnaW4yXyhvdGhlci5iZWdpbjJfKSwKKyAgICAgICAgZW5k
Ml8ob3RoZXIuZW5kMl8pLAorICAgICAgICBjdXJyZW50Ml8ob3RoZXIuY3VycmVudDJfKSwKKyAg
ICAgICAgYmVnaW4zXyhvdGhlci5iZWdpbjNfKSwKKyAgICAgICAgZW5kM18ob3RoZXIuZW5kM18p
LAorICAgICAgICBjdXJyZW50M18ob3RoZXIuY3VycmVudDNfKSwKKyAgICAgICAgYmVnaW40Xyhv
dGhlci5iZWdpbjRfKSwKKyAgICAgICAgZW5kNF8ob3RoZXIuZW5kNF8pLAorICAgICAgICBjdXJy
ZW50NF8ob3RoZXIuY3VycmVudDRfKSwKKyAgICAgICAgYmVnaW41XyhvdGhlci5iZWdpbjVfKSwK
KyAgICAgICAgZW5kNV8ob3RoZXIuZW5kNV8pLAorICAgICAgICBjdXJyZW50NV8ob3RoZXIuY3Vy
cmVudDVfKSB7CisgICAgICBDb21wdXRlQ3VycmVudFZhbHVlKCk7CisgICAgfQorCisgICAgdm9p
ZCBDb21wdXRlQ3VycmVudFZhbHVlKCkgeworICAgICAgaWYgKCFBdEVuZCgpKQorICAgICAgICBj
dXJyZW50X3ZhbHVlXyA9IFBhcmFtVHlwZSgqY3VycmVudDFfLCAqY3VycmVudDJfLCAqY3VycmVu
dDNfLAorICAgICAgICAgICAgKmN1cnJlbnQ0XywgKmN1cnJlbnQ1Xyk7CisgICAgfQorICAgIGJv
b2wgQXRFbmQoKSBjb25zdCB7CisgICAgICAvLyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRvciBwYXN0
IHRoZSBlbmQgb2YgdGhlIHJhbmdlIHdoZW4gZWl0aGVyIG9mIHRoZQorICAgICAgLy8gY29tcG9u
ZW50IGl0ZXJhdG9ycyBoYXMgcmVhY2hlZCB0aGUgZW5kIG9mIGl0cyByYW5nZS4KKyAgICAgIHJl
dHVybgorICAgICAgICAgIGN1cnJlbnQxXyA9PSBlbmQxXyB8fAorICAgICAgICAgIGN1cnJlbnQy
XyA9PSBlbmQyXyB8fAorICAgICAgICAgIGN1cnJlbnQzXyA9PSBlbmQzXyB8fAorICAgICAgICAg
IGN1cnJlbnQ0XyA9PSBlbmQ0XyB8fAorICAgICAgICAgIGN1cnJlbnQ1XyA9PSBlbmQ1XzsKKyAg
ICB9CisKKyAgICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0
ZWQuCisgICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgSXRlcmF0b3ImIG90aGVyKTsKKworICAgIGNv
bnN0IFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIGNvbnN0IGJhc2VfOworICAg
IC8vIGJlZ2luW2ldXyBhbmQgZW5kW2ldXyBkZWZpbmUgdGhlIGktdGggcmFuZ2UgdGhhdCBJdGVy
YXRvciB0cmF2ZXJzZXMuCisgICAgLy8gY3VycmVudFtpXV8gaXMgdGhlIGFjdHVhbCB0cmF2ZXJz
aW5nIGl0ZXJhdG9yLgorICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxPjo6aXRl
cmF0b3IgYmVnaW4xXzsKKyAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMT46Oml0
ZXJhdG9yIGVuZDFfOworICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxPjo6aXRlcmF0b3Ig
Y3VycmVudDFfOworICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQyPjo6aXRlcmF0
b3IgYmVnaW4yXzsKKyAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMj46Oml0ZXJh
dG9yIGVuZDJfOworICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQyPjo6aXRlcmF0b3IgY3Vy
cmVudDJfOworICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQzPjo6aXRlcmF0b3Ig
YmVnaW4zXzsKKyAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMz46Oml0ZXJhdG9y
IGVuZDNfOworICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQzPjo6aXRlcmF0b3IgY3VycmVu
dDNfOworICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ0Pjo6aXRlcmF0b3IgYmVn
aW40XzsKKyAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUND46Oml0ZXJhdG9yIGVu
ZDRfOworICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ0Pjo6aXRlcmF0b3IgY3VycmVudDRf
OworICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ1Pjo6aXRlcmF0b3IgYmVnaW41
XzsKKyAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNT46Oml0ZXJhdG9yIGVuZDVf
OworICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ1Pjo6aXRlcmF0b3IgY3VycmVudDVfOwor
ICAgIFBhcmFtVHlwZSBjdXJyZW50X3ZhbHVlXzsKKyAgfTsgIC8vIGNsYXNzIENhcnRlc2lhblBy
b2R1Y3RHZW5lcmF0b3I1OjpJdGVyYXRvcgorCisgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNz
aWdubWVudCBpcyB1bnN1cHBvcnRlZC4KKyAgdm9pZCBvcGVyYXRvcj0oY29uc3QgQ2FydGVzaWFu
UHJvZHVjdEdlbmVyYXRvcjUmIG90aGVyKTsKKworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMT4g
ZzFfOworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMj4gZzJfOworICBjb25zdCBQYXJhbUdlbmVy
YXRvcjxUMz4gZzNfOworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUND4gZzRfOworICBjb25zdCBQ
YXJhbUdlbmVyYXRvcjxUNT4gZzVfOworfTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5l
cmF0b3I1CisKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUg
VDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICB0eXBlbmFtZSBUNj4KK2NsYXNzIENh
cnRlc2lhblByb2R1Y3RHZW5lcmF0b3I2CisgICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRl
cmZhY2U8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LAorICAgICAgICBUNj4g
PiB7CisgcHVibGljOgorICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQs
IFQ1LCBUNj4gUGFyYW1UeXBlOworCisgIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I2KGNvbnN0
IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCisgICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMj4m
IGcyLCBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMz4mIGczLAorICAgICAgY29uc3QgUGFyYW1HZW5l
cmF0b3I8VDQ+JiBnNCwgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDU+JiBnNSwKKyAgICAgIGNvbnN0
IFBhcmFtR2VuZXJhdG9yPFQ2PiYgZzYpCisgICAgICA6IGcxXyhnMSksIGcyXyhnMiksIGczXyhn
MyksIGc0XyhnNCksIGc1XyhnNSksIGc2XyhnNikge30KKyAgdmlydHVhbCB+Q2FydGVzaWFuUHJv
ZHVjdEdlbmVyYXRvcjYoKSB7fQorCisgIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQ
YXJhbVR5cGU+KiBCZWdpbigpIGNvbnN0IHsKKyAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKHRoaXMs
IGcxXywgZzFfLmJlZ2luKCksIGcyXywgZzJfLmJlZ2luKCksIGczXywKKyAgICAgICAgZzNfLmJl
Z2luKCksIGc0XywgZzRfLmJlZ2luKCksIGc1XywgZzVfLmJlZ2luKCksIGc2XywgZzZfLmJlZ2lu
KCkpOworICB9CisgIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBF
bmQoKSBjb25zdCB7CisgICAgcmV0dXJuIG5ldyBJdGVyYXRvcih0aGlzLCBnMV8sIGcxXy5lbmQo
KSwgZzJfLCBnMl8uZW5kKCksIGczXywgZzNfLmVuZCgpLAorICAgICAgICBnNF8sIGc0Xy5lbmQo
KSwgZzVfLCBnNV8uZW5kKCksIGc2XywgZzZfLmVuZCgpKTsKKyAgfQorCisgcHJpdmF0ZToKKyAg
Y2xhc3MgSXRlcmF0b3IgOiBwdWJsaWMgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+
IHsKKyAgIHB1YmxpYzoKKyAgICBJdGVyYXRvcihjb25zdCBQYXJhbUdlbmVyYXRvckludGVyZmFj
ZTxQYXJhbVR5cGU+KiBiYXNlLAorICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDE+JiBnMSwK
KyAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxPjo6aXRlcmF0b3ImIGN1cnJl
bnQxLAorICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDI+JiBnMiwKKyAgICAgIGNvbnN0IHR5
cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQyPjo6aXRlcmF0b3ImIGN1cnJlbnQyLAorICAgICAgY29u
c3QgUGFyYW1HZW5lcmF0b3I8VDM+JiBnMywKKyAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2Vu
ZXJhdG9yPFQzPjo6aXRlcmF0b3ImIGN1cnJlbnQzLAorICAgICAgY29uc3QgUGFyYW1HZW5lcmF0
b3I8VDQ+JiBnNCwKKyAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ0Pjo6aXRl
cmF0b3ImIGN1cnJlbnQ0LAorICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDU+JiBnNSwKKyAg
ICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ1Pjo6aXRlcmF0b3ImIGN1cnJlbnQ1
LAorICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDY+JiBnNiwKKyAgICAgIGNvbnN0IHR5cGVu
YW1lIFBhcmFtR2VuZXJhdG9yPFQ2Pjo6aXRlcmF0b3ImIGN1cnJlbnQ2KQorICAgICAgICA6IGJh
c2VfKGJhc2UpLAorICAgICAgICAgIGJlZ2luMV8oZzEuYmVnaW4oKSksIGVuZDFfKGcxLmVuZCgp
KSwgY3VycmVudDFfKGN1cnJlbnQxKSwKKyAgICAgICAgICBiZWdpbjJfKGcyLmJlZ2luKCkpLCBl
bmQyXyhnMi5lbmQoKSksIGN1cnJlbnQyXyhjdXJyZW50MiksCisgICAgICAgICAgYmVnaW4zXyhn
My5iZWdpbigpKSwgZW5kM18oZzMuZW5kKCkpLCBjdXJyZW50M18oY3VycmVudDMpLAorICAgICAg
ICAgIGJlZ2luNF8oZzQuYmVnaW4oKSksIGVuZDRfKGc0LmVuZCgpKSwgY3VycmVudDRfKGN1cnJl
bnQ0KSwKKyAgICAgICAgICBiZWdpbjVfKGc1LmJlZ2luKCkpLCBlbmQ1XyhnNS5lbmQoKSksIGN1
cnJlbnQ1XyhjdXJyZW50NSksCisgICAgICAgICAgYmVnaW42XyhnNi5iZWdpbigpKSwgZW5kNl8o
ZzYuZW5kKCkpLCBjdXJyZW50Nl8oY3VycmVudDYpICAgIHsKKyAgICAgIENvbXB1dGVDdXJyZW50
VmFsdWUoKTsKKyAgICB9CisgICAgdmlydHVhbCB+SXRlcmF0b3IoKSB7fQorCisgICAgdmlydHVh
bCBjb25zdCBQYXJhbUdlbmVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBCYXNlR2VuZXJhdG9y
KCkgY29uc3QgeworICAgICAgcmV0dXJuIGJhc2VfOworICAgIH0KKyAgICAvLyBBZHZhbmNlIHNo
b3VsZCBub3QgYmUgY2FsbGVkIG9uIGJleW9uZC1vZi1yYW5nZSBpdGVyYXRvcnMKKyAgICAvLyBz
byBubyBjb21wb25lbnQgaXRlcmF0b3JzIG11c3QgYmUgYmV5b25kIGVuZCBvZiByYW5nZSwgZWl0
aGVyLgorICAgIHZpcnR1YWwgdm9pZCBBZHZhbmNlKCkgeworICAgICAgYXNzZXJ0KCFBdEVuZCgp
KTsKKyAgICAgICsrY3VycmVudDZfOworICAgICAgaWYgKGN1cnJlbnQ2XyA9PSBlbmQ2Xykgewor
ICAgICAgICBjdXJyZW50Nl8gPSBiZWdpbjZfOworICAgICAgICArK2N1cnJlbnQ1XzsKKyAgICAg
IH0KKyAgICAgIGlmIChjdXJyZW50NV8gPT0gZW5kNV8pIHsKKyAgICAgICAgY3VycmVudDVfID0g
YmVnaW41XzsKKyAgICAgICAgKytjdXJyZW50NF87CisgICAgICB9CisgICAgICBpZiAoY3VycmVu
dDRfID09IGVuZDRfKSB7CisgICAgICAgIGN1cnJlbnQ0XyA9IGJlZ2luNF87CisgICAgICAgICsr
Y3VycmVudDNfOworICAgICAgfQorICAgICAgaWYgKGN1cnJlbnQzXyA9PSBlbmQzXykgeworICAg
ICAgICBjdXJyZW50M18gPSBiZWdpbjNfOworICAgICAgICArK2N1cnJlbnQyXzsKKyAgICAgIH0K
KyAgICAgIGlmIChjdXJyZW50Ml8gPT0gZW5kMl8pIHsKKyAgICAgICAgY3VycmVudDJfID0gYmVn
aW4yXzsKKyAgICAgICAgKytjdXJyZW50MV87CisgICAgICB9CisgICAgICBDb21wdXRlQ3VycmVu
dFZhbHVlKCk7CisgICAgfQorICAgIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJh
bVR5cGU+KiBDbG9uZSgpIGNvbnN0IHsKKyAgICAgIHJldHVybiBuZXcgSXRlcmF0b3IoKnRoaXMp
OworICAgIH0KKyAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsg
cmV0dXJuICZjdXJyZW50X3ZhbHVlXzsgfQorICAgIHZpcnR1YWwgYm9vbCBFcXVhbHMoY29uc3Qg
UGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+JiBvdGhlcikgY29uc3QgeworICAgICAg
Ly8gSGF2aW5nIHRoZSBzYW1lIGJhc2UgZ2VuZXJhdG9yIGd1YXJhbnRlZXMgdGhhdCB0aGUgb3Ro
ZXIKKyAgICAgIC8vIGl0ZXJhdG9yIGlzIG9mIHRoZSBzYW1lIHR5cGUgYW5kIHdlIGNhbiBkb3du
Y2FzdC4KKyAgICAgIEdURVNUX0NIRUNLXyhCYXNlR2VuZXJhdG9yKCkgPT0gb3RoZXIuQmFzZUdl
bmVyYXRvcigpKQorICAgICAgICAgIDw8ICJUaGUgcHJvZ3JhbSBhdHRlbXB0ZWQgdG8gY29tcGFy
ZSBpdGVyYXRvcnMgIgorICAgICAgICAgIDw8ICJmcm9tIGRpZmZlcmVudCBnZW5lcmF0b3JzLiIg
PDwgc3RkOjplbmRsOworICAgICAgY29uc3QgSXRlcmF0b3IqIHR5cGVkX290aGVyID0KKyAgICAg
ICAgICBDaGVja2VkRG93bmNhc3RUb0FjdHVhbFR5cGU8Y29uc3QgSXRlcmF0b3I+KCZvdGhlcik7
CisgICAgICAvLyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRvcnMgZXF1YWwgaWYgdGhleSBib3RoIHBv
aW50IGJleW9uZCB0aGVpcgorICAgICAgLy8gcmVzcGVjdGl2ZSByYW5nZXMuIFRoYXQgY2FuIGhh
cHBlbiBpbiBhIHZhcmlldHkgb2YgZmFzaGlvbnMsCisgICAgICAvLyBzbyB3ZSBoYXZlIHRvIGNv
bnN1bHQgQXRFbmQoKS4KKyAgICAgIHJldHVybiAoQXRFbmQoKSAmJiB0eXBlZF9vdGhlci0+QXRF
bmQoKSkgfHwKKyAgICAgICAgICgKKyAgICAgICAgICBjdXJyZW50MV8gPT0gdHlwZWRfb3RoZXIt
PmN1cnJlbnQxXyAmJgorICAgICAgICAgIGN1cnJlbnQyXyA9PSB0eXBlZF9vdGhlci0+Y3VycmVu
dDJfICYmCisgICAgICAgICAgY3VycmVudDNfID09IHR5cGVkX290aGVyLT5jdXJyZW50M18gJiYK
KyAgICAgICAgICBjdXJyZW50NF8gPT0gdHlwZWRfb3RoZXItPmN1cnJlbnQ0XyAmJgorICAgICAg
ICAgIGN1cnJlbnQ1XyA9PSB0eXBlZF9vdGhlci0+Y3VycmVudDVfICYmCisgICAgICAgICAgY3Vy
cmVudDZfID09IHR5cGVkX290aGVyLT5jdXJyZW50Nl8pOworICAgIH0KKworICAgcHJpdmF0ZToK
KyAgICBJdGVyYXRvcihjb25zdCBJdGVyYXRvciYgb3RoZXIpCisgICAgICAgIDogYmFzZV8ob3Ro
ZXIuYmFzZV8pLAorICAgICAgICBiZWdpbjFfKG90aGVyLmJlZ2luMV8pLAorICAgICAgICBlbmQx
XyhvdGhlci5lbmQxXyksCisgICAgICAgIGN1cnJlbnQxXyhvdGhlci5jdXJyZW50MV8pLAorICAg
ICAgICBiZWdpbjJfKG90aGVyLmJlZ2luMl8pLAorICAgICAgICBlbmQyXyhvdGhlci5lbmQyXyks
CisgICAgICAgIGN1cnJlbnQyXyhvdGhlci5jdXJyZW50Ml8pLAorICAgICAgICBiZWdpbjNfKG90
aGVyLmJlZ2luM18pLAorICAgICAgICBlbmQzXyhvdGhlci5lbmQzXyksCisgICAgICAgIGN1cnJl
bnQzXyhvdGhlci5jdXJyZW50M18pLAorICAgICAgICBiZWdpbjRfKG90aGVyLmJlZ2luNF8pLAor
ICAgICAgICBlbmQ0XyhvdGhlci5lbmQ0XyksCisgICAgICAgIGN1cnJlbnQ0XyhvdGhlci5jdXJy
ZW50NF8pLAorICAgICAgICBiZWdpbjVfKG90aGVyLmJlZ2luNV8pLAorICAgICAgICBlbmQ1Xyhv
dGhlci5lbmQ1XyksCisgICAgICAgIGN1cnJlbnQ1XyhvdGhlci5jdXJyZW50NV8pLAorICAgICAg
ICBiZWdpbjZfKG90aGVyLmJlZ2luNl8pLAorICAgICAgICBlbmQ2XyhvdGhlci5lbmQ2XyksCisg
ICAgICAgIGN1cnJlbnQ2XyhvdGhlci5jdXJyZW50Nl8pIHsKKyAgICAgIENvbXB1dGVDdXJyZW50
VmFsdWUoKTsKKyAgICB9CisKKyAgICB2b2lkIENvbXB1dGVDdXJyZW50VmFsdWUoKSB7CisgICAg
ICBpZiAoIUF0RW5kKCkpCisgICAgICAgIGN1cnJlbnRfdmFsdWVfID0gUGFyYW1UeXBlKCpjdXJy
ZW50MV8sICpjdXJyZW50Ml8sICpjdXJyZW50M18sCisgICAgICAgICAgICAqY3VycmVudDRfLCAq
Y3VycmVudDVfLCAqY3VycmVudDZfKTsKKyAgICB9CisgICAgYm9vbCBBdEVuZCgpIGNvbnN0IHsK
KyAgICAgIC8vIFdlIG11c3QgcmVwb3J0IGl0ZXJhdG9yIHBhc3QgdGhlIGVuZCBvZiB0aGUgcmFu
Z2Ugd2hlbiBlaXRoZXIgb2YgdGhlCisgICAgICAvLyBjb21wb25lbnQgaXRlcmF0b3JzIGhhcyBy
ZWFjaGVkIHRoZSBlbmQgb2YgaXRzIHJhbmdlLgorICAgICAgcmV0dXJuCisgICAgICAgICAgY3Vy
cmVudDFfID09IGVuZDFfIHx8CisgICAgICAgICAgY3VycmVudDJfID09IGVuZDJfIHx8CisgICAg
ICAgICAgY3VycmVudDNfID09IGVuZDNfIHx8CisgICAgICAgICAgY3VycmVudDRfID09IGVuZDRf
IHx8CisgICAgICAgICAgY3VycmVudDVfID09IGVuZDVfIHx8CisgICAgICAgICAgY3VycmVudDZf
ID09IGVuZDZfOworICAgIH0KKworICAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVu
dCBpcyB1bnN1cHBvcnRlZC4KKyAgICB2b2lkIG9wZXJhdG9yPShjb25zdCBJdGVyYXRvciYgb3Ro
ZXIpOworCisgICAgY29uc3QgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogY29u
c3QgYmFzZV87CisgICAgLy8gYmVnaW5baV1fIGFuZCBlbmRbaV1fIGRlZmluZSB0aGUgaS10aCBy
YW5nZSB0aGF0IEl0ZXJhdG9yIHRyYXZlcnNlcy4KKyAgICAvLyBjdXJyZW50W2ldXyBpcyB0aGUg
YWN0dWFsIHRyYXZlcnNpbmcgaXRlcmF0b3IuCisgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5l
cmF0b3I8VDE+OjppdGVyYXRvciBiZWdpbjFfOworICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2Vu
ZXJhdG9yPFQxPjo6aXRlcmF0b3IgZW5kMV87CisgICAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8
VDE+OjppdGVyYXRvciBjdXJyZW50MV87CisgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0
b3I8VDI+OjppdGVyYXRvciBiZWdpbjJfOworICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJh
dG9yPFQyPjo6aXRlcmF0b3IgZW5kMl87CisgICAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDI+
OjppdGVyYXRvciBjdXJyZW50Ml87CisgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8
VDM+OjppdGVyYXRvciBiZWdpbjNfOworICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9y
PFQzPjo6aXRlcmF0b3IgZW5kM187CisgICAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDM+Ojpp
dGVyYXRvciBjdXJyZW50M187CisgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDQ+
OjppdGVyYXRvciBiZWdpbjRfOworICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ0
Pjo6aXRlcmF0b3IgZW5kNF87CisgICAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDQ+OjppdGVy
YXRvciBjdXJyZW50NF87CisgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDU+Ojpp
dGVyYXRvciBiZWdpbjVfOworICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ1Pjo6
aXRlcmF0b3IgZW5kNV87CisgICAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDU+OjppdGVyYXRv
ciBjdXJyZW50NV87CisgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDY+OjppdGVy
YXRvciBiZWdpbjZfOworICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ2Pjo6aXRl
cmF0b3IgZW5kNl87CisgICAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDY+OjppdGVyYXRvciBj
dXJyZW50Nl87CisgICAgUGFyYW1UeXBlIGN1cnJlbnRfdmFsdWVfOworICB9OyAgLy8gY2xhc3Mg
Q2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjY6Okl0ZXJhdG9yCisKKyAgLy8gTm8gaW1wbGVtZW50
YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgorICB2b2lkIG9wZXJhdG9yPShjb25z
dCBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNiYgb3RoZXIpOworCisgIGNvbnN0IFBhcmFtR2Vu
ZXJhdG9yPFQxPiBnMV87CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQyPiBnMl87CisgIGNvbnN0
IFBhcmFtR2VuZXJhdG9yPFQzPiBnM187CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQ0PiBnNF87
CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQ1PiBnNV87CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9y
PFQ2PiBnNl87Cit9OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjYKKworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUg
VDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNz4KK2NsYXNzIENh
cnRlc2lhblByb2R1Y3RHZW5lcmF0b3I3CisgICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRl
cmZhY2U8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwKKyAgICAgICAg
VDc+ID4geworIHB1YmxpYzoKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMs
IFQ0LCBUNSwgVDYsIFQ3PiBQYXJhbVR5cGU7CisKKyAgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRv
cjcoY29uc3QgUGFyYW1HZW5lcmF0b3I8VDE+JiBnMSwKKyAgICAgIGNvbnN0IFBhcmFtR2VuZXJh
dG9yPFQyPiYgZzIsIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQzPiYgZzMsCisgICAgICBjb25zdCBQ
YXJhbUdlbmVyYXRvcjxUND4mIGc0LCBjb25zdCBQYXJhbUdlbmVyYXRvcjxUNT4mIGc1LAorICAg
ICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDY+JiBnNiwgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDc+
JiBnNykKKyAgICAgIDogZzFfKGcxKSwgZzJfKGcyKSwgZzNfKGczKSwgZzRfKGc0KSwgZzVfKGc1
KSwgZzZfKGc2KSwgZzdfKGc3KSB7fQorICB2aXJ0dWFsIH5DYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJh
dG9yNygpIHt9CisKKyAgdmlydHVhbCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4q
IEJlZ2luKCkgY29uc3QgeworICAgIHJldHVybiBuZXcgSXRlcmF0b3IodGhpcywgZzFfLCBnMV8u
YmVnaW4oKSwgZzJfLCBnMl8uYmVnaW4oKSwgZzNfLAorICAgICAgICBnM18uYmVnaW4oKSwgZzRf
LCBnNF8uYmVnaW4oKSwgZzVfLCBnNV8uYmVnaW4oKSwgZzZfLCBnNl8uYmVnaW4oKSwgZzdfLAor
ICAgICAgICBnN18uYmVnaW4oKSk7CisgIH0KKyAgdmlydHVhbCBQYXJhbUl0ZXJhdG9ySW50ZXJm
YWNlPFBhcmFtVHlwZT4qIEVuZCgpIGNvbnN0IHsKKyAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKHRo
aXMsIGcxXywgZzFfLmVuZCgpLCBnMl8sIGcyXy5lbmQoKSwgZzNfLCBnM18uZW5kKCksCisgICAg
ICAgIGc0XywgZzRfLmVuZCgpLCBnNV8sIGc1Xy5lbmQoKSwgZzZfLCBnNl8uZW5kKCksIGc3Xywg
ZzdfLmVuZCgpKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgY2xhc3MgSXRlcmF0b3IgOiBwdWJsaWMg
UGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+IHsKKyAgIHB1YmxpYzoKKyAgICBJdGVy
YXRvcihjb25zdCBQYXJhbUdlbmVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBiYXNlLAorICAg
ICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDE+JiBnMSwKKyAgICAgIGNvbnN0IHR5cGVuYW1lIFBh
cmFtR2VuZXJhdG9yPFQxPjo6aXRlcmF0b3ImIGN1cnJlbnQxLAorICAgICAgY29uc3QgUGFyYW1H
ZW5lcmF0b3I8VDI+JiBnMiwKKyAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQy
Pjo6aXRlcmF0b3ImIGN1cnJlbnQyLAorICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDM+JiBn
MywKKyAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQzPjo6aXRlcmF0b3ImIGN1
cnJlbnQzLAorICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDQ+JiBnNCwKKyAgICAgIGNvbnN0
IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ0Pjo6aXRlcmF0b3ImIGN1cnJlbnQ0LAorICAgICAg
Y29uc3QgUGFyYW1HZW5lcmF0b3I8VDU+JiBnNSwKKyAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFt
R2VuZXJhdG9yPFQ1Pjo6aXRlcmF0b3ImIGN1cnJlbnQ1LAorICAgICAgY29uc3QgUGFyYW1HZW5l
cmF0b3I8VDY+JiBnNiwKKyAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ2Pjo6
aXRlcmF0b3ImIGN1cnJlbnQ2LAorICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDc+JiBnNywK
KyAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ3Pjo6aXRlcmF0b3ImIGN1cnJl
bnQ3KQorICAgICAgICA6IGJhc2VfKGJhc2UpLAorICAgICAgICAgIGJlZ2luMV8oZzEuYmVnaW4o
KSksIGVuZDFfKGcxLmVuZCgpKSwgY3VycmVudDFfKGN1cnJlbnQxKSwKKyAgICAgICAgICBiZWdp
bjJfKGcyLmJlZ2luKCkpLCBlbmQyXyhnMi5lbmQoKSksIGN1cnJlbnQyXyhjdXJyZW50MiksCisg
ICAgICAgICAgYmVnaW4zXyhnMy5iZWdpbigpKSwgZW5kM18oZzMuZW5kKCkpLCBjdXJyZW50M18o
Y3VycmVudDMpLAorICAgICAgICAgIGJlZ2luNF8oZzQuYmVnaW4oKSksIGVuZDRfKGc0LmVuZCgp
KSwgY3VycmVudDRfKGN1cnJlbnQ0KSwKKyAgICAgICAgICBiZWdpbjVfKGc1LmJlZ2luKCkpLCBl
bmQ1XyhnNS5lbmQoKSksIGN1cnJlbnQ1XyhjdXJyZW50NSksCisgICAgICAgICAgYmVnaW42Xyhn
Ni5iZWdpbigpKSwgZW5kNl8oZzYuZW5kKCkpLCBjdXJyZW50Nl8oY3VycmVudDYpLAorICAgICAg
ICAgIGJlZ2luN18oZzcuYmVnaW4oKSksIGVuZDdfKGc3LmVuZCgpKSwgY3VycmVudDdfKGN1cnJl
bnQ3KSAgICB7CisgICAgICBDb21wdXRlQ3VycmVudFZhbHVlKCk7CisgICAgfQorICAgIHZpcnR1
YWwgfkl0ZXJhdG9yKCkge30KKworICAgIHZpcnR1YWwgY29uc3QgUGFyYW1HZW5lcmF0b3JJbnRl
cmZhY2U8UGFyYW1UeXBlPiogQmFzZUdlbmVyYXRvcigpIGNvbnN0IHsKKyAgICAgIHJldHVybiBi
YXNlXzsKKyAgICB9CisgICAgLy8gQWR2YW5jZSBzaG91bGQgbm90IGJlIGNhbGxlZCBvbiBiZXlv
bmQtb2YtcmFuZ2UgaXRlcmF0b3JzCisgICAgLy8gc28gbm8gY29tcG9uZW50IGl0ZXJhdG9ycyBt
dXN0IGJlIGJleW9uZCBlbmQgb2YgcmFuZ2UsIGVpdGhlci4KKyAgICB2aXJ0dWFsIHZvaWQgQWR2
YW5jZSgpIHsKKyAgICAgIGFzc2VydCghQXRFbmQoKSk7CisgICAgICArK2N1cnJlbnQ3XzsKKyAg
ICAgIGlmIChjdXJyZW50N18gPT0gZW5kN18pIHsKKyAgICAgICAgY3VycmVudDdfID0gYmVnaW43
XzsKKyAgICAgICAgKytjdXJyZW50Nl87CisgICAgICB9CisgICAgICBpZiAoY3VycmVudDZfID09
IGVuZDZfKSB7CisgICAgICAgIGN1cnJlbnQ2XyA9IGJlZ2luNl87CisgICAgICAgICsrY3VycmVu
dDVfOworICAgICAgfQorICAgICAgaWYgKGN1cnJlbnQ1XyA9PSBlbmQ1XykgeworICAgICAgICBj
dXJyZW50NV8gPSBiZWdpbjVfOworICAgICAgICArK2N1cnJlbnQ0XzsKKyAgICAgIH0KKyAgICAg
IGlmIChjdXJyZW50NF8gPT0gZW5kNF8pIHsKKyAgICAgICAgY3VycmVudDRfID0gYmVnaW40XzsK
KyAgICAgICAgKytjdXJyZW50M187CisgICAgICB9CisgICAgICBpZiAoY3VycmVudDNfID09IGVu
ZDNfKSB7CisgICAgICAgIGN1cnJlbnQzXyA9IGJlZ2luM187CisgICAgICAgICsrY3VycmVudDJf
OworICAgICAgfQorICAgICAgaWYgKGN1cnJlbnQyXyA9PSBlbmQyXykgeworICAgICAgICBjdXJy
ZW50Ml8gPSBiZWdpbjJfOworICAgICAgICArK2N1cnJlbnQxXzsKKyAgICAgIH0KKyAgICAgIENv
bXB1dGVDdXJyZW50VmFsdWUoKTsKKyAgICB9CisgICAgdmlydHVhbCBQYXJhbUl0ZXJhdG9ySW50
ZXJmYWNlPFBhcmFtVHlwZT4qIENsb25lKCkgY29uc3QgeworICAgICAgcmV0dXJuIG5ldyBJdGVy
YXRvcigqdGhpcyk7CisgICAgfQorICAgIHZpcnR1YWwgY29uc3QgUGFyYW1UeXBlKiBDdXJyZW50
KCkgY29uc3QgeyByZXR1cm4gJmN1cnJlbnRfdmFsdWVfOyB9CisgICAgdmlydHVhbCBib29sIEVx
dWFscyhjb25zdCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4mIG90aGVyKSBjb25z
dCB7CisgICAgICAvLyBIYXZpbmcgdGhlIHNhbWUgYmFzZSBnZW5lcmF0b3IgZ3VhcmFudGVlcyB0
aGF0IHRoZSBvdGhlcgorICAgICAgLy8gaXRlcmF0b3IgaXMgb2YgdGhlIHNhbWUgdHlwZSBhbmQg
d2UgY2FuIGRvd25jYXN0LgorICAgICAgR1RFU1RfQ0hFQ0tfKEJhc2VHZW5lcmF0b3IoKSA9PSBv
dGhlci5CYXNlR2VuZXJhdG9yKCkpCisgICAgICAgICAgPDwgIlRoZSBwcm9ncmFtIGF0dGVtcHRl
ZCB0byBjb21wYXJlIGl0ZXJhdG9ycyAiCisgICAgICAgICAgPDwgImZyb20gZGlmZmVyZW50IGdl
bmVyYXRvcnMuIiA8PCBzdGQ6OmVuZGw7CisgICAgICBjb25zdCBJdGVyYXRvciogdHlwZWRfb3Ro
ZXIgPQorICAgICAgICAgIENoZWNrZWREb3duY2FzdFRvQWN0dWFsVHlwZTxjb25zdCBJdGVyYXRv
cj4oJm90aGVyKTsKKyAgICAgIC8vIFdlIG11c3QgcmVwb3J0IGl0ZXJhdG9ycyBlcXVhbCBpZiB0
aGV5IGJvdGggcG9pbnQgYmV5b25kIHRoZWlyCisgICAgICAvLyByZXNwZWN0aXZlIHJhbmdlcy4g
VGhhdCBjYW4gaGFwcGVuIGluIGEgdmFyaWV0eSBvZiBmYXNoaW9ucywKKyAgICAgIC8vIHNvIHdl
IGhhdmUgdG8gY29uc3VsdCBBdEVuZCgpLgorICAgICAgcmV0dXJuIChBdEVuZCgpICYmIHR5cGVk
X290aGVyLT5BdEVuZCgpKSB8fAorICAgICAgICAgKAorICAgICAgICAgIGN1cnJlbnQxXyA9PSB0
eXBlZF9vdGhlci0+Y3VycmVudDFfICYmCisgICAgICAgICAgY3VycmVudDJfID09IHR5cGVkX290
aGVyLT5jdXJyZW50Ml8gJiYKKyAgICAgICAgICBjdXJyZW50M18gPT0gdHlwZWRfb3RoZXItPmN1
cnJlbnQzXyAmJgorICAgICAgICAgIGN1cnJlbnQ0XyA9PSB0eXBlZF9vdGhlci0+Y3VycmVudDRf
ICYmCisgICAgICAgICAgY3VycmVudDVfID09IHR5cGVkX290aGVyLT5jdXJyZW50NV8gJiYKKyAg
ICAgICAgICBjdXJyZW50Nl8gPT0gdHlwZWRfb3RoZXItPmN1cnJlbnQ2XyAmJgorICAgICAgICAg
IGN1cnJlbnQ3XyA9PSB0eXBlZF9vdGhlci0+Y3VycmVudDdfKTsKKyAgICB9CisKKyAgIHByaXZh
dGU6CisgICAgSXRlcmF0b3IoY29uc3QgSXRlcmF0b3ImIG90aGVyKQorICAgICAgICA6IGJhc2Vf
KG90aGVyLmJhc2VfKSwKKyAgICAgICAgYmVnaW4xXyhvdGhlci5iZWdpbjFfKSwKKyAgICAgICAg
ZW5kMV8ob3RoZXIuZW5kMV8pLAorICAgICAgICBjdXJyZW50MV8ob3RoZXIuY3VycmVudDFfKSwK
KyAgICAgICAgYmVnaW4yXyhvdGhlci5iZWdpbjJfKSwKKyAgICAgICAgZW5kMl8ob3RoZXIuZW5k
Ml8pLAorICAgICAgICBjdXJyZW50Ml8ob3RoZXIuY3VycmVudDJfKSwKKyAgICAgICAgYmVnaW4z
XyhvdGhlci5iZWdpbjNfKSwKKyAgICAgICAgZW5kM18ob3RoZXIuZW5kM18pLAorICAgICAgICBj
dXJyZW50M18ob3RoZXIuY3VycmVudDNfKSwKKyAgICAgICAgYmVnaW40XyhvdGhlci5iZWdpbjRf
KSwKKyAgICAgICAgZW5kNF8ob3RoZXIuZW5kNF8pLAorICAgICAgICBjdXJyZW50NF8ob3RoZXIu
Y3VycmVudDRfKSwKKyAgICAgICAgYmVnaW41XyhvdGhlci5iZWdpbjVfKSwKKyAgICAgICAgZW5k
NV8ob3RoZXIuZW5kNV8pLAorICAgICAgICBjdXJyZW50NV8ob3RoZXIuY3VycmVudDVfKSwKKyAg
ICAgICAgYmVnaW42XyhvdGhlci5iZWdpbjZfKSwKKyAgICAgICAgZW5kNl8ob3RoZXIuZW5kNl8p
LAorICAgICAgICBjdXJyZW50Nl8ob3RoZXIuY3VycmVudDZfKSwKKyAgICAgICAgYmVnaW43Xyhv
dGhlci5iZWdpbjdfKSwKKyAgICAgICAgZW5kN18ob3RoZXIuZW5kN18pLAorICAgICAgICBjdXJy
ZW50N18ob3RoZXIuY3VycmVudDdfKSB7CisgICAgICBDb21wdXRlQ3VycmVudFZhbHVlKCk7Cisg
ICAgfQorCisgICAgdm9pZCBDb21wdXRlQ3VycmVudFZhbHVlKCkgeworICAgICAgaWYgKCFBdEVu
ZCgpKQorICAgICAgICBjdXJyZW50X3ZhbHVlXyA9IFBhcmFtVHlwZSgqY3VycmVudDFfLCAqY3Vy
cmVudDJfLCAqY3VycmVudDNfLAorICAgICAgICAgICAgKmN1cnJlbnQ0XywgKmN1cnJlbnQ1Xywg
KmN1cnJlbnQ2XywgKmN1cnJlbnQ3Xyk7CisgICAgfQorICAgIGJvb2wgQXRFbmQoKSBjb25zdCB7
CisgICAgICAvLyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRvciBwYXN0IHRoZSBlbmQgb2YgdGhlIHJh
bmdlIHdoZW4gZWl0aGVyIG9mIHRoZQorICAgICAgLy8gY29tcG9uZW50IGl0ZXJhdG9ycyBoYXMg
cmVhY2hlZCB0aGUgZW5kIG9mIGl0cyByYW5nZS4KKyAgICAgIHJldHVybgorICAgICAgICAgIGN1
cnJlbnQxXyA9PSBlbmQxXyB8fAorICAgICAgICAgIGN1cnJlbnQyXyA9PSBlbmQyXyB8fAorICAg
ICAgICAgIGN1cnJlbnQzXyA9PSBlbmQzXyB8fAorICAgICAgICAgIGN1cnJlbnQ0XyA9PSBlbmQ0
XyB8fAorICAgICAgICAgIGN1cnJlbnQ1XyA9PSBlbmQ1XyB8fAorICAgICAgICAgIGN1cnJlbnQ2
XyA9PSBlbmQ2XyB8fAorICAgICAgICAgIGN1cnJlbnQ3XyA9PSBlbmQ3XzsKKyAgICB9CisKKyAg
ICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCisgICAg
dm9pZCBvcGVyYXRvcj0oY29uc3QgSXRlcmF0b3ImIG90aGVyKTsKKworICAgIGNvbnN0IFBhcmFt
R2VuZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIGNvbnN0IGJhc2VfOworICAgIC8vIGJlZ2lu
W2ldXyBhbmQgZW5kW2ldXyBkZWZpbmUgdGhlIGktdGggcmFuZ2UgdGhhdCBJdGVyYXRvciB0cmF2
ZXJzZXMuCisgICAgLy8gY3VycmVudFtpXV8gaXMgdGhlIGFjdHVhbCB0cmF2ZXJzaW5nIGl0ZXJh
dG9yLgorICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxPjo6aXRlcmF0b3IgYmVn
aW4xXzsKKyAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMT46Oml0ZXJhdG9yIGVu
ZDFfOworICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxPjo6aXRlcmF0b3IgY3VycmVudDFf
OworICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQyPjo6aXRlcmF0b3IgYmVnaW4y
XzsKKyAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMj46Oml0ZXJhdG9yIGVuZDJf
OworICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQyPjo6aXRlcmF0b3IgY3VycmVudDJfOwor
ICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQzPjo6aXRlcmF0b3IgYmVnaW4zXzsK
KyAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMz46Oml0ZXJhdG9yIGVuZDNfOwor
ICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQzPjo6aXRlcmF0b3IgY3VycmVudDNfOworICAg
IGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ0Pjo6aXRlcmF0b3IgYmVnaW40XzsKKyAg
ICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUND46Oml0ZXJhdG9yIGVuZDRfOworICAg
IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ0Pjo6aXRlcmF0b3IgY3VycmVudDRfOworICAgIGNv
bnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ1Pjo6aXRlcmF0b3IgYmVnaW41XzsKKyAgICBj
b25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNT46Oml0ZXJhdG9yIGVuZDVfOworICAgIHR5
cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ1Pjo6aXRlcmF0b3IgY3VycmVudDVfOworICAgIGNvbnN0
IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ2Pjo6aXRlcmF0b3IgYmVnaW42XzsKKyAgICBjb25z
dCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNj46Oml0ZXJhdG9yIGVuZDZfOworICAgIHR5cGVu
YW1lIFBhcmFtR2VuZXJhdG9yPFQ2Pjo6aXRlcmF0b3IgY3VycmVudDZfOworICAgIGNvbnN0IHR5
cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ3Pjo6aXRlcmF0b3IgYmVnaW43XzsKKyAgICBjb25zdCB0
eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNz46Oml0ZXJhdG9yIGVuZDdfOworICAgIHR5cGVuYW1l
IFBhcmFtR2VuZXJhdG9yPFQ3Pjo6aXRlcmF0b3IgY3VycmVudDdfOworICAgIFBhcmFtVHlwZSBj
dXJyZW50X3ZhbHVlXzsKKyAgfTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I3
OjpJdGVyYXRvcgorCisgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1
cHBvcnRlZC4KKyAgdm9pZCBvcGVyYXRvcj0oY29uc3QgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRv
cjcmIG90aGVyKTsKKworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMT4gZzFfOworICBjb25zdCBQ
YXJhbUdlbmVyYXRvcjxUMj4gZzJfOworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMz4gZzNfOwor
ICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUND4gZzRfOworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxU
NT4gZzVfOworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUNj4gZzZfOworICBjb25zdCBQYXJhbUdl
bmVyYXRvcjxUNz4gZzdfOworfTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I3
CisKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5
cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5
cGVuYW1lIFQ4PgorY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjgKKyAgICA6IHB1Ymxp
YyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBU
NCwgVDUsIFQ2LAorICAgICAgICBUNywgVDg+ID4geworIHB1YmxpYzoKKyAgdHlwZWRlZiA6OnRl
c3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOD4gUGFyYW1UeXBlOwor
CisgIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I4KGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYg
ZzEsCisgICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMj4mIGcyLCBjb25zdCBQYXJhbUdlbmVy
YXRvcjxUMz4mIGczLAorICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDQ+JiBnNCwgY29uc3Qg
UGFyYW1HZW5lcmF0b3I8VDU+JiBnNSwKKyAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQ2PiYg
ZzYsIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQ3PiYgZzcsCisgICAgICBjb25zdCBQYXJhbUdlbmVy
YXRvcjxUOD4mIGc4KQorICAgICAgOiBnMV8oZzEpLCBnMl8oZzIpLCBnM18oZzMpLCBnNF8oZzQp
LCBnNV8oZzUpLCBnNl8oZzYpLCBnN18oZzcpLAorICAgICAgICAgIGc4XyhnOCkge30KKyAgdmly
dHVhbCB+Q2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjgoKSB7fQorCisgIHZpcnR1YWwgUGFyYW1J
dGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBCZWdpbigpIGNvbnN0IHsKKyAgICByZXR1cm4g
bmV3IEl0ZXJhdG9yKHRoaXMsIGcxXywgZzFfLmJlZ2luKCksIGcyXywgZzJfLmJlZ2luKCksIGcz
XywKKyAgICAgICAgZzNfLmJlZ2luKCksIGc0XywgZzRfLmJlZ2luKCksIGc1XywgZzVfLmJlZ2lu
KCksIGc2XywgZzZfLmJlZ2luKCksIGc3XywKKyAgICAgICAgZzdfLmJlZ2luKCksIGc4XywgZzhf
LmJlZ2luKCkpOworICB9CisgIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5
cGU+KiBFbmQoKSBjb25zdCB7CisgICAgcmV0dXJuIG5ldyBJdGVyYXRvcih0aGlzLCBnMV8sIGcx
Xy5lbmQoKSwgZzJfLCBnMl8uZW5kKCksIGczXywgZzNfLmVuZCgpLAorICAgICAgICBnNF8sIGc0
Xy5lbmQoKSwgZzVfLCBnNV8uZW5kKCksIGc2XywgZzZfLmVuZCgpLCBnN18sIGc3Xy5lbmQoKSwg
ZzhfLAorICAgICAgICBnOF8uZW5kKCkpOworICB9CisKKyBwcml2YXRlOgorICBjbGFzcyBJdGVy
YXRvciA6IHB1YmxpYyBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4geworICAgcHVi
bGljOgorICAgIEl0ZXJhdG9yKGNvbnN0IFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlw
ZT4qIGJhc2UsCisgICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMT4mIGcxLAorICAgICAgY29u
c3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDE+OjppdGVyYXRvciYgY3VycmVudDEsCisgICAg
ICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMj4mIGcyLAorICAgICAgY29uc3QgdHlwZW5hbWUgUGFy
YW1HZW5lcmF0b3I8VDI+OjppdGVyYXRvciYgY3VycmVudDIsCisgICAgICBjb25zdCBQYXJhbUdl
bmVyYXRvcjxUMz4mIGczLAorICAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDM+
OjppdGVyYXRvciYgY3VycmVudDMsCisgICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUND4mIGc0
LAorICAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDQ+OjppdGVyYXRvciYgY3Vy
cmVudDQsCisgICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUNT4mIGc1LAorICAgICAgY29uc3Qg
dHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDU+OjppdGVyYXRvciYgY3VycmVudDUsCisgICAgICBj
b25zdCBQYXJhbUdlbmVyYXRvcjxUNj4mIGc2LAorICAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1H
ZW5lcmF0b3I8VDY+OjppdGVyYXRvciYgY3VycmVudDYsCisgICAgICBjb25zdCBQYXJhbUdlbmVy
YXRvcjxUNz4mIGc3LAorICAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDc+Ojpp
dGVyYXRvciYgY3VycmVudDcsCisgICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUOD4mIGc4LAor
ICAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDg+OjppdGVyYXRvciYgY3VycmVu
dDgpCisgICAgICAgIDogYmFzZV8oYmFzZSksCisgICAgICAgICAgYmVnaW4xXyhnMS5iZWdpbigp
KSwgZW5kMV8oZzEuZW5kKCkpLCBjdXJyZW50MV8oY3VycmVudDEpLAorICAgICAgICAgIGJlZ2lu
Ml8oZzIuYmVnaW4oKSksIGVuZDJfKGcyLmVuZCgpKSwgY3VycmVudDJfKGN1cnJlbnQyKSwKKyAg
ICAgICAgICBiZWdpbjNfKGczLmJlZ2luKCkpLCBlbmQzXyhnMy5lbmQoKSksIGN1cnJlbnQzXyhj
dXJyZW50MyksCisgICAgICAgICAgYmVnaW40XyhnNC5iZWdpbigpKSwgZW5kNF8oZzQuZW5kKCkp
LCBjdXJyZW50NF8oY3VycmVudDQpLAorICAgICAgICAgIGJlZ2luNV8oZzUuYmVnaW4oKSksIGVu
ZDVfKGc1LmVuZCgpKSwgY3VycmVudDVfKGN1cnJlbnQ1KSwKKyAgICAgICAgICBiZWdpbjZfKGc2
LmJlZ2luKCkpLCBlbmQ2XyhnNi5lbmQoKSksIGN1cnJlbnQ2XyhjdXJyZW50NiksCisgICAgICAg
ICAgYmVnaW43XyhnNy5iZWdpbigpKSwgZW5kN18oZzcuZW5kKCkpLCBjdXJyZW50N18oY3VycmVu
dDcpLAorICAgICAgICAgIGJlZ2luOF8oZzguYmVnaW4oKSksIGVuZDhfKGc4LmVuZCgpKSwgY3Vy
cmVudDhfKGN1cnJlbnQ4KSAgICB7CisgICAgICBDb21wdXRlQ3VycmVudFZhbHVlKCk7CisgICAg
fQorICAgIHZpcnR1YWwgfkl0ZXJhdG9yKCkge30KKworICAgIHZpcnR1YWwgY29uc3QgUGFyYW1H
ZW5lcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQmFzZUdlbmVyYXRvcigpIGNvbnN0IHsKKyAg
ICAgIHJldHVybiBiYXNlXzsKKyAgICB9CisgICAgLy8gQWR2YW5jZSBzaG91bGQgbm90IGJlIGNh
bGxlZCBvbiBiZXlvbmQtb2YtcmFuZ2UgaXRlcmF0b3JzCisgICAgLy8gc28gbm8gY29tcG9uZW50
IGl0ZXJhdG9ycyBtdXN0IGJlIGJleW9uZCBlbmQgb2YgcmFuZ2UsIGVpdGhlci4KKyAgICB2aXJ0
dWFsIHZvaWQgQWR2YW5jZSgpIHsKKyAgICAgIGFzc2VydCghQXRFbmQoKSk7CisgICAgICArK2N1
cnJlbnQ4XzsKKyAgICAgIGlmIChjdXJyZW50OF8gPT0gZW5kOF8pIHsKKyAgICAgICAgY3VycmVu
dDhfID0gYmVnaW44XzsKKyAgICAgICAgKytjdXJyZW50N187CisgICAgICB9CisgICAgICBpZiAo
Y3VycmVudDdfID09IGVuZDdfKSB7CisgICAgICAgIGN1cnJlbnQ3XyA9IGJlZ2luN187CisgICAg
ICAgICsrY3VycmVudDZfOworICAgICAgfQorICAgICAgaWYgKGN1cnJlbnQ2XyA9PSBlbmQ2Xykg
eworICAgICAgICBjdXJyZW50Nl8gPSBiZWdpbjZfOworICAgICAgICArK2N1cnJlbnQ1XzsKKyAg
ICAgIH0KKyAgICAgIGlmIChjdXJyZW50NV8gPT0gZW5kNV8pIHsKKyAgICAgICAgY3VycmVudDVf
ID0gYmVnaW41XzsKKyAgICAgICAgKytjdXJyZW50NF87CisgICAgICB9CisgICAgICBpZiAoY3Vy
cmVudDRfID09IGVuZDRfKSB7CisgICAgICAgIGN1cnJlbnQ0XyA9IGJlZ2luNF87CisgICAgICAg
ICsrY3VycmVudDNfOworICAgICAgfQorICAgICAgaWYgKGN1cnJlbnQzXyA9PSBlbmQzXykgewor
ICAgICAgICBjdXJyZW50M18gPSBiZWdpbjNfOworICAgICAgICArK2N1cnJlbnQyXzsKKyAgICAg
IH0KKyAgICAgIGlmIChjdXJyZW50Ml8gPT0gZW5kMl8pIHsKKyAgICAgICAgY3VycmVudDJfID0g
YmVnaW4yXzsKKyAgICAgICAgKytjdXJyZW50MV87CisgICAgICB9CisgICAgICBDb21wdXRlQ3Vy
cmVudFZhbHVlKCk7CisgICAgfQorICAgIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQ
YXJhbVR5cGU+KiBDbG9uZSgpIGNvbnN0IHsKKyAgICAgIHJldHVybiBuZXcgSXRlcmF0b3IoKnRo
aXMpOworICAgIH0KKyAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0
IHsgcmV0dXJuICZjdXJyZW50X3ZhbHVlXzsgfQorICAgIHZpcnR1YWwgYm9vbCBFcXVhbHMoY29u
c3QgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+JiBvdGhlcikgY29uc3QgeworICAg
ICAgLy8gSGF2aW5nIHRoZSBzYW1lIGJhc2UgZ2VuZXJhdG9yIGd1YXJhbnRlZXMgdGhhdCB0aGUg
b3RoZXIKKyAgICAgIC8vIGl0ZXJhdG9yIGlzIG9mIHRoZSBzYW1lIHR5cGUgYW5kIHdlIGNhbiBk
b3duY2FzdC4KKyAgICAgIEdURVNUX0NIRUNLXyhCYXNlR2VuZXJhdG9yKCkgPT0gb3RoZXIuQmFz
ZUdlbmVyYXRvcigpKQorICAgICAgICAgIDw8ICJUaGUgcHJvZ3JhbSBhdHRlbXB0ZWQgdG8gY29t
cGFyZSBpdGVyYXRvcnMgIgorICAgICAgICAgIDw8ICJmcm9tIGRpZmZlcmVudCBnZW5lcmF0b3Jz
LiIgPDwgc3RkOjplbmRsOworICAgICAgY29uc3QgSXRlcmF0b3IqIHR5cGVkX290aGVyID0KKyAg
ICAgICAgICBDaGVja2VkRG93bmNhc3RUb0FjdHVhbFR5cGU8Y29uc3QgSXRlcmF0b3I+KCZvdGhl
cik7CisgICAgICAvLyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRvcnMgZXF1YWwgaWYgdGhleSBib3Ro
IHBvaW50IGJleW9uZCB0aGVpcgorICAgICAgLy8gcmVzcGVjdGl2ZSByYW5nZXMuIFRoYXQgY2Fu
IGhhcHBlbiBpbiBhIHZhcmlldHkgb2YgZmFzaGlvbnMsCisgICAgICAvLyBzbyB3ZSBoYXZlIHRv
IGNvbnN1bHQgQXRFbmQoKS4KKyAgICAgIHJldHVybiAoQXRFbmQoKSAmJiB0eXBlZF9vdGhlci0+
QXRFbmQoKSkgfHwKKyAgICAgICAgICgKKyAgICAgICAgICBjdXJyZW50MV8gPT0gdHlwZWRfb3Ro
ZXItPmN1cnJlbnQxXyAmJgorICAgICAgICAgIGN1cnJlbnQyXyA9PSB0eXBlZF9vdGhlci0+Y3Vy
cmVudDJfICYmCisgICAgICAgICAgY3VycmVudDNfID09IHR5cGVkX290aGVyLT5jdXJyZW50M18g
JiYKKyAgICAgICAgICBjdXJyZW50NF8gPT0gdHlwZWRfb3RoZXItPmN1cnJlbnQ0XyAmJgorICAg
ICAgICAgIGN1cnJlbnQ1XyA9PSB0eXBlZF9vdGhlci0+Y3VycmVudDVfICYmCisgICAgICAgICAg
Y3VycmVudDZfID09IHR5cGVkX290aGVyLT5jdXJyZW50Nl8gJiYKKyAgICAgICAgICBjdXJyZW50
N18gPT0gdHlwZWRfb3RoZXItPmN1cnJlbnQ3XyAmJgorICAgICAgICAgIGN1cnJlbnQ4XyA9PSB0
eXBlZF9vdGhlci0+Y3VycmVudDhfKTsKKyAgICB9CisKKyAgIHByaXZhdGU6CisgICAgSXRlcmF0
b3IoY29uc3QgSXRlcmF0b3ImIG90aGVyKQorICAgICAgICA6IGJhc2VfKG90aGVyLmJhc2VfKSwK
KyAgICAgICAgYmVnaW4xXyhvdGhlci5iZWdpbjFfKSwKKyAgICAgICAgZW5kMV8ob3RoZXIuZW5k
MV8pLAorICAgICAgICBjdXJyZW50MV8ob3RoZXIuY3VycmVudDFfKSwKKyAgICAgICAgYmVnaW4y
XyhvdGhlci5iZWdpbjJfKSwKKyAgICAgICAgZW5kMl8ob3RoZXIuZW5kMl8pLAorICAgICAgICBj
dXJyZW50Ml8ob3RoZXIuY3VycmVudDJfKSwKKyAgICAgICAgYmVnaW4zXyhvdGhlci5iZWdpbjNf
KSwKKyAgICAgICAgZW5kM18ob3RoZXIuZW5kM18pLAorICAgICAgICBjdXJyZW50M18ob3RoZXIu
Y3VycmVudDNfKSwKKyAgICAgICAgYmVnaW40XyhvdGhlci5iZWdpbjRfKSwKKyAgICAgICAgZW5k
NF8ob3RoZXIuZW5kNF8pLAorICAgICAgICBjdXJyZW50NF8ob3RoZXIuY3VycmVudDRfKSwKKyAg
ICAgICAgYmVnaW41XyhvdGhlci5iZWdpbjVfKSwKKyAgICAgICAgZW5kNV8ob3RoZXIuZW5kNV8p
LAorICAgICAgICBjdXJyZW50NV8ob3RoZXIuY3VycmVudDVfKSwKKyAgICAgICAgYmVnaW42Xyhv
dGhlci5iZWdpbjZfKSwKKyAgICAgICAgZW5kNl8ob3RoZXIuZW5kNl8pLAorICAgICAgICBjdXJy
ZW50Nl8ob3RoZXIuY3VycmVudDZfKSwKKyAgICAgICAgYmVnaW43XyhvdGhlci5iZWdpbjdfKSwK
KyAgICAgICAgZW5kN18ob3RoZXIuZW5kN18pLAorICAgICAgICBjdXJyZW50N18ob3RoZXIuY3Vy
cmVudDdfKSwKKyAgICAgICAgYmVnaW44XyhvdGhlci5iZWdpbjhfKSwKKyAgICAgICAgZW5kOF8o
b3RoZXIuZW5kOF8pLAorICAgICAgICBjdXJyZW50OF8ob3RoZXIuY3VycmVudDhfKSB7CisgICAg
ICBDb21wdXRlQ3VycmVudFZhbHVlKCk7CisgICAgfQorCisgICAgdm9pZCBDb21wdXRlQ3VycmVu
dFZhbHVlKCkgeworICAgICAgaWYgKCFBdEVuZCgpKQorICAgICAgICBjdXJyZW50X3ZhbHVlXyA9
IFBhcmFtVHlwZSgqY3VycmVudDFfLCAqY3VycmVudDJfLCAqY3VycmVudDNfLAorICAgICAgICAg
ICAgKmN1cnJlbnQ0XywgKmN1cnJlbnQ1XywgKmN1cnJlbnQ2XywgKmN1cnJlbnQ3XywgKmN1cnJl
bnQ4Xyk7CisgICAgfQorICAgIGJvb2wgQXRFbmQoKSBjb25zdCB7CisgICAgICAvLyBXZSBtdXN0
IHJlcG9ydCBpdGVyYXRvciBwYXN0IHRoZSBlbmQgb2YgdGhlIHJhbmdlIHdoZW4gZWl0aGVyIG9m
IHRoZQorICAgICAgLy8gY29tcG9uZW50IGl0ZXJhdG9ycyBoYXMgcmVhY2hlZCB0aGUgZW5kIG9m
IGl0cyByYW5nZS4KKyAgICAgIHJldHVybgorICAgICAgICAgIGN1cnJlbnQxXyA9PSBlbmQxXyB8
fAorICAgICAgICAgIGN1cnJlbnQyXyA9PSBlbmQyXyB8fAorICAgICAgICAgIGN1cnJlbnQzXyA9
PSBlbmQzXyB8fAorICAgICAgICAgIGN1cnJlbnQ0XyA9PSBlbmQ0XyB8fAorICAgICAgICAgIGN1
cnJlbnQ1XyA9PSBlbmQ1XyB8fAorICAgICAgICAgIGN1cnJlbnQ2XyA9PSBlbmQ2XyB8fAorICAg
ICAgICAgIGN1cnJlbnQ3XyA9PSBlbmQ3XyB8fAorICAgICAgICAgIGN1cnJlbnQ4XyA9PSBlbmQ4
XzsKKyAgICB9CisKKyAgICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5z
dXBwb3J0ZWQuCisgICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgSXRlcmF0b3ImIG90aGVyKTsKKwor
ICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIGNvbnN0IGJhc2Vf
OworICAgIC8vIGJlZ2luW2ldXyBhbmQgZW5kW2ldXyBkZWZpbmUgdGhlIGktdGggcmFuZ2UgdGhh
dCBJdGVyYXRvciB0cmF2ZXJzZXMuCisgICAgLy8gY3VycmVudFtpXV8gaXMgdGhlIGFjdHVhbCB0
cmF2ZXJzaW5nIGl0ZXJhdG9yLgorICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQx
Pjo6aXRlcmF0b3IgYmVnaW4xXzsKKyAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxU
MT46Oml0ZXJhdG9yIGVuZDFfOworICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxPjo6aXRl
cmF0b3IgY3VycmVudDFfOworICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQyPjo6
aXRlcmF0b3IgYmVnaW4yXzsKKyAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMj46
Oml0ZXJhdG9yIGVuZDJfOworICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQyPjo6aXRlcmF0
b3IgY3VycmVudDJfOworICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQzPjo6aXRl
cmF0b3IgYmVnaW4zXzsKKyAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMz46Oml0
ZXJhdG9yIGVuZDNfOworICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQzPjo6aXRlcmF0b3Ig
Y3VycmVudDNfOworICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ0Pjo6aXRlcmF0
b3IgYmVnaW40XzsKKyAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUND46Oml0ZXJh
dG9yIGVuZDRfOworICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ0Pjo6aXRlcmF0b3IgY3Vy
cmVudDRfOworICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ1Pjo6aXRlcmF0b3Ig
YmVnaW41XzsKKyAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNT46Oml0ZXJhdG9y
IGVuZDVfOworICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ1Pjo6aXRlcmF0b3IgY3VycmVu
dDVfOworICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ2Pjo6aXRlcmF0b3IgYmVn
aW42XzsKKyAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNj46Oml0ZXJhdG9yIGVu
ZDZfOworICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ2Pjo6aXRlcmF0b3IgY3VycmVudDZf
OworICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ3Pjo6aXRlcmF0b3IgYmVnaW43
XzsKKyAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNz46Oml0ZXJhdG9yIGVuZDdf
OworICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ3Pjo6aXRlcmF0b3IgY3VycmVudDdfOwor
ICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ4Pjo6aXRlcmF0b3IgYmVnaW44XzsK
KyAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUOD46Oml0ZXJhdG9yIGVuZDhfOwor
ICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ4Pjo6aXRlcmF0b3IgY3VycmVudDhfOworICAg
IFBhcmFtVHlwZSBjdXJyZW50X3ZhbHVlXzsKKyAgfTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1
Y3RHZW5lcmF0b3I4OjpJdGVyYXRvcgorCisgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdu
bWVudCBpcyB1bnN1cHBvcnRlZC4KKyAgdm9pZCBvcGVyYXRvcj0oY29uc3QgQ2FydGVzaWFuUHJv
ZHVjdEdlbmVyYXRvcjgmIG90aGVyKTsKKworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMT4gZzFf
OworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMj4gZzJfOworICBjb25zdCBQYXJhbUdlbmVyYXRv
cjxUMz4gZzNfOworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUND4gZzRfOworICBjb25zdCBQYXJh
bUdlbmVyYXRvcjxUNT4gZzVfOworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUNj4gZzZfOworICBj
b25zdCBQYXJhbUdlbmVyYXRvcjxUNz4gZzdfOworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUOD4g
ZzhfOworfTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I4CisKKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0
eXBlbmFtZSBUNSwKKyAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0
eXBlbmFtZSBUOT4KK2NsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I5CisgICAgOiBwdWJs
aWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywg
VDQsIFQ1LCBUNiwKKyAgICAgICAgVDcsIFQ4LCBUOT4gPiB7CisgcHVibGljOgorICB0eXBlZGVm
IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT4gUGFy
YW1UeXBlOworCisgIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I5KGNvbnN0IFBhcmFtR2VuZXJh
dG9yPFQxPiYgZzEsCisgICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMj4mIGcyLCBjb25zdCBQ
YXJhbUdlbmVyYXRvcjxUMz4mIGczLAorICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDQ+JiBn
NCwgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDU+JiBnNSwKKyAgICAgIGNvbnN0IFBhcmFtR2VuZXJh
dG9yPFQ2PiYgZzYsIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQ3PiYgZzcsCisgICAgICBjb25zdCBQ
YXJhbUdlbmVyYXRvcjxUOD4mIGc4LCBjb25zdCBQYXJhbUdlbmVyYXRvcjxUOT4mIGc5KQorICAg
ICAgOiBnMV8oZzEpLCBnMl8oZzIpLCBnM18oZzMpLCBnNF8oZzQpLCBnNV8oZzUpLCBnNl8oZzYp
LCBnN18oZzcpLCBnOF8oZzgpLAorICAgICAgICAgIGc5XyhnOSkge30KKyAgdmlydHVhbCB+Q2Fy
dGVzaWFuUHJvZHVjdEdlbmVyYXRvcjkoKSB7fQorCisgIHZpcnR1YWwgUGFyYW1JdGVyYXRvcklu
dGVyZmFjZTxQYXJhbVR5cGU+KiBCZWdpbigpIGNvbnN0IHsKKyAgICByZXR1cm4gbmV3IEl0ZXJh
dG9yKHRoaXMsIGcxXywgZzFfLmJlZ2luKCksIGcyXywgZzJfLmJlZ2luKCksIGczXywKKyAgICAg
ICAgZzNfLmJlZ2luKCksIGc0XywgZzRfLmJlZ2luKCksIGc1XywgZzVfLmJlZ2luKCksIGc2Xywg
ZzZfLmJlZ2luKCksIGc3XywKKyAgICAgICAgZzdfLmJlZ2luKCksIGc4XywgZzhfLmJlZ2luKCks
IGc5XywgZzlfLmJlZ2luKCkpOworICB9CisgIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFj
ZTxQYXJhbVR5cGU+KiBFbmQoKSBjb25zdCB7CisgICAgcmV0dXJuIG5ldyBJdGVyYXRvcih0aGlz
LCBnMV8sIGcxXy5lbmQoKSwgZzJfLCBnMl8uZW5kKCksIGczXywgZzNfLmVuZCgpLAorICAgICAg
ICBnNF8sIGc0Xy5lbmQoKSwgZzVfLCBnNV8uZW5kKCksIGc2XywgZzZfLmVuZCgpLCBnN18sIGc3
Xy5lbmQoKSwgZzhfLAorICAgICAgICBnOF8uZW5kKCksIGc5XywgZzlfLmVuZCgpKTsKKyAgfQor
CisgcHJpdmF0ZToKKyAgY2xhc3MgSXRlcmF0b3IgOiBwdWJsaWMgUGFyYW1JdGVyYXRvckludGVy
ZmFjZTxQYXJhbVR5cGU+IHsKKyAgIHB1YmxpYzoKKyAgICBJdGVyYXRvcihjb25zdCBQYXJhbUdl
bmVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBiYXNlLAorICAgICAgY29uc3QgUGFyYW1HZW5l
cmF0b3I8VDE+JiBnMSwKKyAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxPjo6
aXRlcmF0b3ImIGN1cnJlbnQxLAorICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDI+JiBnMiwK
KyAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQyPjo6aXRlcmF0b3ImIGN1cnJl
bnQyLAorICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDM+JiBnMywKKyAgICAgIGNvbnN0IHR5
cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQzPjo6aXRlcmF0b3ImIGN1cnJlbnQzLAorICAgICAgY29u
c3QgUGFyYW1HZW5lcmF0b3I8VDQ+JiBnNCwKKyAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2Vu
ZXJhdG9yPFQ0Pjo6aXRlcmF0b3ImIGN1cnJlbnQ0LAorICAgICAgY29uc3QgUGFyYW1HZW5lcmF0
b3I8VDU+JiBnNSwKKyAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ1Pjo6aXRl
cmF0b3ImIGN1cnJlbnQ1LAorICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDY+JiBnNiwKKyAg
ICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ2Pjo6aXRlcmF0b3ImIGN1cnJlbnQ2
LAorICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDc+JiBnNywKKyAgICAgIGNvbnN0IHR5cGVu
YW1lIFBhcmFtR2VuZXJhdG9yPFQ3Pjo6aXRlcmF0b3ImIGN1cnJlbnQ3LAorICAgICAgY29uc3Qg
UGFyYW1HZW5lcmF0b3I8VDg+JiBnOCwKKyAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJh
dG9yPFQ4Pjo6aXRlcmF0b3ImIGN1cnJlbnQ4LAorICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8
VDk+JiBnOSwKKyAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ5Pjo6aXRlcmF0
b3ImIGN1cnJlbnQ5KQorICAgICAgICA6IGJhc2VfKGJhc2UpLAorICAgICAgICAgIGJlZ2luMV8o
ZzEuYmVnaW4oKSksIGVuZDFfKGcxLmVuZCgpKSwgY3VycmVudDFfKGN1cnJlbnQxKSwKKyAgICAg
ICAgICBiZWdpbjJfKGcyLmJlZ2luKCkpLCBlbmQyXyhnMi5lbmQoKSksIGN1cnJlbnQyXyhjdXJy
ZW50MiksCisgICAgICAgICAgYmVnaW4zXyhnMy5iZWdpbigpKSwgZW5kM18oZzMuZW5kKCkpLCBj
dXJyZW50M18oY3VycmVudDMpLAorICAgICAgICAgIGJlZ2luNF8oZzQuYmVnaW4oKSksIGVuZDRf
KGc0LmVuZCgpKSwgY3VycmVudDRfKGN1cnJlbnQ0KSwKKyAgICAgICAgICBiZWdpbjVfKGc1LmJl
Z2luKCkpLCBlbmQ1XyhnNS5lbmQoKSksIGN1cnJlbnQ1XyhjdXJyZW50NSksCisgICAgICAgICAg
YmVnaW42XyhnNi5iZWdpbigpKSwgZW5kNl8oZzYuZW5kKCkpLCBjdXJyZW50Nl8oY3VycmVudDYp
LAorICAgICAgICAgIGJlZ2luN18oZzcuYmVnaW4oKSksIGVuZDdfKGc3LmVuZCgpKSwgY3VycmVu
dDdfKGN1cnJlbnQ3KSwKKyAgICAgICAgICBiZWdpbjhfKGc4LmJlZ2luKCkpLCBlbmQ4XyhnOC5l
bmQoKSksIGN1cnJlbnQ4XyhjdXJyZW50OCksCisgICAgICAgICAgYmVnaW45XyhnOS5iZWdpbigp
KSwgZW5kOV8oZzkuZW5kKCkpLCBjdXJyZW50OV8oY3VycmVudDkpICAgIHsKKyAgICAgIENvbXB1
dGVDdXJyZW50VmFsdWUoKTsKKyAgICB9CisgICAgdmlydHVhbCB+SXRlcmF0b3IoKSB7fQorCisg
ICAgdmlydHVhbCBjb25zdCBQYXJhbUdlbmVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBCYXNl
R2VuZXJhdG9yKCkgY29uc3QgeworICAgICAgcmV0dXJuIGJhc2VfOworICAgIH0KKyAgICAvLyBB
ZHZhbmNlIHNob3VsZCBub3QgYmUgY2FsbGVkIG9uIGJleW9uZC1vZi1yYW5nZSBpdGVyYXRvcnMK
KyAgICAvLyBzbyBubyBjb21wb25lbnQgaXRlcmF0b3JzIG11c3QgYmUgYmV5b25kIGVuZCBvZiBy
YW5nZSwgZWl0aGVyLgorICAgIHZpcnR1YWwgdm9pZCBBZHZhbmNlKCkgeworICAgICAgYXNzZXJ0
KCFBdEVuZCgpKTsKKyAgICAgICsrY3VycmVudDlfOworICAgICAgaWYgKGN1cnJlbnQ5XyA9PSBl
bmQ5XykgeworICAgICAgICBjdXJyZW50OV8gPSBiZWdpbjlfOworICAgICAgICArK2N1cnJlbnQ4
XzsKKyAgICAgIH0KKyAgICAgIGlmIChjdXJyZW50OF8gPT0gZW5kOF8pIHsKKyAgICAgICAgY3Vy
cmVudDhfID0gYmVnaW44XzsKKyAgICAgICAgKytjdXJyZW50N187CisgICAgICB9CisgICAgICBp
ZiAoY3VycmVudDdfID09IGVuZDdfKSB7CisgICAgICAgIGN1cnJlbnQ3XyA9IGJlZ2luN187Cisg
ICAgICAgICsrY3VycmVudDZfOworICAgICAgfQorICAgICAgaWYgKGN1cnJlbnQ2XyA9PSBlbmQ2
XykgeworICAgICAgICBjdXJyZW50Nl8gPSBiZWdpbjZfOworICAgICAgICArK2N1cnJlbnQ1XzsK
KyAgICAgIH0KKyAgICAgIGlmIChjdXJyZW50NV8gPT0gZW5kNV8pIHsKKyAgICAgICAgY3VycmVu
dDVfID0gYmVnaW41XzsKKyAgICAgICAgKytjdXJyZW50NF87CisgICAgICB9CisgICAgICBpZiAo
Y3VycmVudDRfID09IGVuZDRfKSB7CisgICAgICAgIGN1cnJlbnQ0XyA9IGJlZ2luNF87CisgICAg
ICAgICsrY3VycmVudDNfOworICAgICAgfQorICAgICAgaWYgKGN1cnJlbnQzXyA9PSBlbmQzXykg
eworICAgICAgICBjdXJyZW50M18gPSBiZWdpbjNfOworICAgICAgICArK2N1cnJlbnQyXzsKKyAg
ICAgIH0KKyAgICAgIGlmIChjdXJyZW50Ml8gPT0gZW5kMl8pIHsKKyAgICAgICAgY3VycmVudDJf
ID0gYmVnaW4yXzsKKyAgICAgICAgKytjdXJyZW50MV87CisgICAgICB9CisgICAgICBDb21wdXRl
Q3VycmVudFZhbHVlKCk7CisgICAgfQorICAgIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFj
ZTxQYXJhbVR5cGU+KiBDbG9uZSgpIGNvbnN0IHsKKyAgICAgIHJldHVybiBuZXcgSXRlcmF0b3Io
KnRoaXMpOworICAgIH0KKyAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNv
bnN0IHsgcmV0dXJuICZjdXJyZW50X3ZhbHVlXzsgfQorICAgIHZpcnR1YWwgYm9vbCBFcXVhbHMo
Y29uc3QgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+JiBvdGhlcikgY29uc3Qgewor
ICAgICAgLy8gSGF2aW5nIHRoZSBzYW1lIGJhc2UgZ2VuZXJhdG9yIGd1YXJhbnRlZXMgdGhhdCB0
aGUgb3RoZXIKKyAgICAgIC8vIGl0ZXJhdG9yIGlzIG9mIHRoZSBzYW1lIHR5cGUgYW5kIHdlIGNh
biBkb3duY2FzdC4KKyAgICAgIEdURVNUX0NIRUNLXyhCYXNlR2VuZXJhdG9yKCkgPT0gb3RoZXIu
QmFzZUdlbmVyYXRvcigpKQorICAgICAgICAgIDw8ICJUaGUgcHJvZ3JhbSBhdHRlbXB0ZWQgdG8g
Y29tcGFyZSBpdGVyYXRvcnMgIgorICAgICAgICAgIDw8ICJmcm9tIGRpZmZlcmVudCBnZW5lcmF0
b3JzLiIgPDwgc3RkOjplbmRsOworICAgICAgY29uc3QgSXRlcmF0b3IqIHR5cGVkX290aGVyID0K
KyAgICAgICAgICBDaGVja2VkRG93bmNhc3RUb0FjdHVhbFR5cGU8Y29uc3QgSXRlcmF0b3I+KCZv
dGhlcik7CisgICAgICAvLyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRvcnMgZXF1YWwgaWYgdGhleSBi
b3RoIHBvaW50IGJleW9uZCB0aGVpcgorICAgICAgLy8gcmVzcGVjdGl2ZSByYW5nZXMuIFRoYXQg
Y2FuIGhhcHBlbiBpbiBhIHZhcmlldHkgb2YgZmFzaGlvbnMsCisgICAgICAvLyBzbyB3ZSBoYXZl
IHRvIGNvbnN1bHQgQXRFbmQoKS4KKyAgICAgIHJldHVybiAoQXRFbmQoKSAmJiB0eXBlZF9vdGhl
ci0+QXRFbmQoKSkgfHwKKyAgICAgICAgICgKKyAgICAgICAgICBjdXJyZW50MV8gPT0gdHlwZWRf
b3RoZXItPmN1cnJlbnQxXyAmJgorICAgICAgICAgIGN1cnJlbnQyXyA9PSB0eXBlZF9vdGhlci0+
Y3VycmVudDJfICYmCisgICAgICAgICAgY3VycmVudDNfID09IHR5cGVkX290aGVyLT5jdXJyZW50
M18gJiYKKyAgICAgICAgICBjdXJyZW50NF8gPT0gdHlwZWRfb3RoZXItPmN1cnJlbnQ0XyAmJgor
ICAgICAgICAgIGN1cnJlbnQ1XyA9PSB0eXBlZF9vdGhlci0+Y3VycmVudDVfICYmCisgICAgICAg
ICAgY3VycmVudDZfID09IHR5cGVkX290aGVyLT5jdXJyZW50Nl8gJiYKKyAgICAgICAgICBjdXJy
ZW50N18gPT0gdHlwZWRfb3RoZXItPmN1cnJlbnQ3XyAmJgorICAgICAgICAgIGN1cnJlbnQ4XyA9
PSB0eXBlZF9vdGhlci0+Y3VycmVudDhfICYmCisgICAgICAgICAgY3VycmVudDlfID09IHR5cGVk
X290aGVyLT5jdXJyZW50OV8pOworICAgIH0KKworICAgcHJpdmF0ZToKKyAgICBJdGVyYXRvcihj
b25zdCBJdGVyYXRvciYgb3RoZXIpCisgICAgICAgIDogYmFzZV8ob3RoZXIuYmFzZV8pLAorICAg
ICAgICBiZWdpbjFfKG90aGVyLmJlZ2luMV8pLAorICAgICAgICBlbmQxXyhvdGhlci5lbmQxXyks
CisgICAgICAgIGN1cnJlbnQxXyhvdGhlci5jdXJyZW50MV8pLAorICAgICAgICBiZWdpbjJfKG90
aGVyLmJlZ2luMl8pLAorICAgICAgICBlbmQyXyhvdGhlci5lbmQyXyksCisgICAgICAgIGN1cnJl
bnQyXyhvdGhlci5jdXJyZW50Ml8pLAorICAgICAgICBiZWdpbjNfKG90aGVyLmJlZ2luM18pLAor
ICAgICAgICBlbmQzXyhvdGhlci5lbmQzXyksCisgICAgICAgIGN1cnJlbnQzXyhvdGhlci5jdXJy
ZW50M18pLAorICAgICAgICBiZWdpbjRfKG90aGVyLmJlZ2luNF8pLAorICAgICAgICBlbmQ0Xyhv
dGhlci5lbmQ0XyksCisgICAgICAgIGN1cnJlbnQ0XyhvdGhlci5jdXJyZW50NF8pLAorICAgICAg
ICBiZWdpbjVfKG90aGVyLmJlZ2luNV8pLAorICAgICAgICBlbmQ1XyhvdGhlci5lbmQ1XyksCisg
ICAgICAgIGN1cnJlbnQ1XyhvdGhlci5jdXJyZW50NV8pLAorICAgICAgICBiZWdpbjZfKG90aGVy
LmJlZ2luNl8pLAorICAgICAgICBlbmQ2XyhvdGhlci5lbmQ2XyksCisgICAgICAgIGN1cnJlbnQ2
XyhvdGhlci5jdXJyZW50Nl8pLAorICAgICAgICBiZWdpbjdfKG90aGVyLmJlZ2luN18pLAorICAg
ICAgICBlbmQ3XyhvdGhlci5lbmQ3XyksCisgICAgICAgIGN1cnJlbnQ3XyhvdGhlci5jdXJyZW50
N18pLAorICAgICAgICBiZWdpbjhfKG90aGVyLmJlZ2luOF8pLAorICAgICAgICBlbmQ4XyhvdGhl
ci5lbmQ4XyksCisgICAgICAgIGN1cnJlbnQ4XyhvdGhlci5jdXJyZW50OF8pLAorICAgICAgICBi
ZWdpbjlfKG90aGVyLmJlZ2luOV8pLAorICAgICAgICBlbmQ5XyhvdGhlci5lbmQ5XyksCisgICAg
ICAgIGN1cnJlbnQ5XyhvdGhlci5jdXJyZW50OV8pIHsKKyAgICAgIENvbXB1dGVDdXJyZW50VmFs
dWUoKTsKKyAgICB9CisKKyAgICB2b2lkIENvbXB1dGVDdXJyZW50VmFsdWUoKSB7CisgICAgICBp
ZiAoIUF0RW5kKCkpCisgICAgICAgIGN1cnJlbnRfdmFsdWVfID0gUGFyYW1UeXBlKCpjdXJyZW50
MV8sICpjdXJyZW50Ml8sICpjdXJyZW50M18sCisgICAgICAgICAgICAqY3VycmVudDRfLCAqY3Vy
cmVudDVfLCAqY3VycmVudDZfLCAqY3VycmVudDdfLCAqY3VycmVudDhfLAorICAgICAgICAgICAg
KmN1cnJlbnQ5Xyk7CisgICAgfQorICAgIGJvb2wgQXRFbmQoKSBjb25zdCB7CisgICAgICAvLyBX
ZSBtdXN0IHJlcG9ydCBpdGVyYXRvciBwYXN0IHRoZSBlbmQgb2YgdGhlIHJhbmdlIHdoZW4gZWl0
aGVyIG9mIHRoZQorICAgICAgLy8gY29tcG9uZW50IGl0ZXJhdG9ycyBoYXMgcmVhY2hlZCB0aGUg
ZW5kIG9mIGl0cyByYW5nZS4KKyAgICAgIHJldHVybgorICAgICAgICAgIGN1cnJlbnQxXyA9PSBl
bmQxXyB8fAorICAgICAgICAgIGN1cnJlbnQyXyA9PSBlbmQyXyB8fAorICAgICAgICAgIGN1cnJl
bnQzXyA9PSBlbmQzXyB8fAorICAgICAgICAgIGN1cnJlbnQ0XyA9PSBlbmQ0XyB8fAorICAgICAg
ICAgIGN1cnJlbnQ1XyA9PSBlbmQ1XyB8fAorICAgICAgICAgIGN1cnJlbnQ2XyA9PSBlbmQ2XyB8
fAorICAgICAgICAgIGN1cnJlbnQ3XyA9PSBlbmQ3XyB8fAorICAgICAgICAgIGN1cnJlbnQ4XyA9
PSBlbmQ4XyB8fAorICAgICAgICAgIGN1cnJlbnQ5XyA9PSBlbmQ5XzsKKyAgICB9CisKKyAgICAv
LyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCisgICAgdm9p
ZCBvcGVyYXRvcj0oY29uc3QgSXRlcmF0b3ImIG90aGVyKTsKKworICAgIGNvbnN0IFBhcmFtR2Vu
ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIGNvbnN0IGJhc2VfOworICAgIC8vIGJlZ2luW2ld
XyBhbmQgZW5kW2ldXyBkZWZpbmUgdGhlIGktdGggcmFuZ2UgdGhhdCBJdGVyYXRvciB0cmF2ZXJz
ZXMuCisgICAgLy8gY3VycmVudFtpXV8gaXMgdGhlIGFjdHVhbCB0cmF2ZXJzaW5nIGl0ZXJhdG9y
LgorICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxPjo6aXRlcmF0b3IgYmVnaW4x
XzsKKyAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMT46Oml0ZXJhdG9yIGVuZDFf
OworICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxPjo6aXRlcmF0b3IgY3VycmVudDFfOwor
ICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQyPjo6aXRlcmF0b3IgYmVnaW4yXzsK
KyAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMj46Oml0ZXJhdG9yIGVuZDJfOwor
ICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQyPjo6aXRlcmF0b3IgY3VycmVudDJfOworICAg
IGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQzPjo6aXRlcmF0b3IgYmVnaW4zXzsKKyAg
ICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMz46Oml0ZXJhdG9yIGVuZDNfOworICAg
IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQzPjo6aXRlcmF0b3IgY3VycmVudDNfOworICAgIGNv
bnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ0Pjo6aXRlcmF0b3IgYmVnaW40XzsKKyAgICBj
b25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUND46Oml0ZXJhdG9yIGVuZDRfOworICAgIHR5
cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ0Pjo6aXRlcmF0b3IgY3VycmVudDRfOworICAgIGNvbnN0
IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ1Pjo6aXRlcmF0b3IgYmVnaW41XzsKKyAgICBjb25z
dCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNT46Oml0ZXJhdG9yIGVuZDVfOworICAgIHR5cGVu
YW1lIFBhcmFtR2VuZXJhdG9yPFQ1Pjo6aXRlcmF0b3IgY3VycmVudDVfOworICAgIGNvbnN0IHR5
cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ2Pjo6aXRlcmF0b3IgYmVnaW42XzsKKyAgICBjb25zdCB0
eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNj46Oml0ZXJhdG9yIGVuZDZfOworICAgIHR5cGVuYW1l
IFBhcmFtR2VuZXJhdG9yPFQ2Pjo6aXRlcmF0b3IgY3VycmVudDZfOworICAgIGNvbnN0IHR5cGVu
YW1lIFBhcmFtR2VuZXJhdG9yPFQ3Pjo6aXRlcmF0b3IgYmVnaW43XzsKKyAgICBjb25zdCB0eXBl
bmFtZSBQYXJhbUdlbmVyYXRvcjxUNz46Oml0ZXJhdG9yIGVuZDdfOworICAgIHR5cGVuYW1lIFBh
cmFtR2VuZXJhdG9yPFQ3Pjo6aXRlcmF0b3IgY3VycmVudDdfOworICAgIGNvbnN0IHR5cGVuYW1l
IFBhcmFtR2VuZXJhdG9yPFQ4Pjo6aXRlcmF0b3IgYmVnaW44XzsKKyAgICBjb25zdCB0eXBlbmFt
ZSBQYXJhbUdlbmVyYXRvcjxUOD46Oml0ZXJhdG9yIGVuZDhfOworICAgIHR5cGVuYW1lIFBhcmFt
R2VuZXJhdG9yPFQ4Pjo6aXRlcmF0b3IgY3VycmVudDhfOworICAgIGNvbnN0IHR5cGVuYW1lIFBh
cmFtR2VuZXJhdG9yPFQ5Pjo6aXRlcmF0b3IgYmVnaW45XzsKKyAgICBjb25zdCB0eXBlbmFtZSBQ
YXJhbUdlbmVyYXRvcjxUOT46Oml0ZXJhdG9yIGVuZDlfOworICAgIHR5cGVuYW1lIFBhcmFtR2Vu
ZXJhdG9yPFQ5Pjo6aXRlcmF0b3IgY3VycmVudDlfOworICAgIFBhcmFtVHlwZSBjdXJyZW50X3Zh
bHVlXzsKKyAgfTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I5OjpJdGVyYXRv
cgorCisgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4K
KyAgdm9pZCBvcGVyYXRvcj0oY29uc3QgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjkmIG90aGVy
KTsKKworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMT4gZzFfOworICBjb25zdCBQYXJhbUdlbmVy
YXRvcjxUMj4gZzJfOworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMz4gZzNfOworICBjb25zdCBQ
YXJhbUdlbmVyYXRvcjxUND4gZzRfOworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUNT4gZzVfOwor
ICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUNj4gZzZfOworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxU
Nz4gZzdfOworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUOD4gZzhfOworICBjb25zdCBQYXJhbUdl
bmVyYXRvcjxUOT4gZzlfOworfTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I5
CisKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5
cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5
cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwPgorY2xhc3MgQ2FydGVzaWFuUHJv
ZHVjdEdlbmVyYXRvcjEwCisgICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6
dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwKKyAgICAgICAgVDcsIFQ4LCBU
OSwgVDEwPiA+IHsKKyBwdWJsaWM6CisgIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIs
IFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTA+IFBhcmFtVHlwZTsKKworICBDYXJ0ZXNp
YW5Qcm9kdWN0R2VuZXJhdG9yMTAoY29uc3QgUGFyYW1HZW5lcmF0b3I8VDE+JiBnMSwKKyAgICAg
IGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQyPiYgZzIsIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQzPiYg
ZzMsCisgICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUND4mIGc0LCBjb25zdCBQYXJhbUdlbmVy
YXRvcjxUNT4mIGc1LAorICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDY+JiBnNiwgY29uc3Qg
UGFyYW1HZW5lcmF0b3I8VDc+JiBnNywKKyAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQ4PiYg
ZzgsIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQ5PiYgZzksCisgICAgICBjb25zdCBQYXJhbUdlbmVy
YXRvcjxUMTA+JiBnMTApCisgICAgICA6IGcxXyhnMSksIGcyXyhnMiksIGczXyhnMyksIGc0Xyhn
NCksIGc1XyhnNSksIGc2XyhnNiksIGc3XyhnNyksIGc4XyhnOCksCisgICAgICAgICAgZzlfKGc5
KSwgZzEwXyhnMTApIHt9CisgIHZpcnR1YWwgfkNhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IxMCgp
IHt9CisKKyAgdmlydHVhbCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIEJlZ2lu
KCkgY29uc3QgeworICAgIHJldHVybiBuZXcgSXRlcmF0b3IodGhpcywgZzFfLCBnMV8uYmVnaW4o
KSwgZzJfLCBnMl8uYmVnaW4oKSwgZzNfLAorICAgICAgICBnM18uYmVnaW4oKSwgZzRfLCBnNF8u
YmVnaW4oKSwgZzVfLCBnNV8uYmVnaW4oKSwgZzZfLCBnNl8uYmVnaW4oKSwgZzdfLAorICAgICAg
ICBnN18uYmVnaW4oKSwgZzhfLCBnOF8uYmVnaW4oKSwgZzlfLCBnOV8uYmVnaW4oKSwgZzEwXywg
ZzEwXy5iZWdpbigpKTsKKyAgfQorICB2aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFy
YW1UeXBlPiogRW5kKCkgY29uc3QgeworICAgIHJldHVybiBuZXcgSXRlcmF0b3IodGhpcywgZzFf
LCBnMV8uZW5kKCksIGcyXywgZzJfLmVuZCgpLCBnM18sIGczXy5lbmQoKSwKKyAgICAgICAgZzRf
LCBnNF8uZW5kKCksIGc1XywgZzVfLmVuZCgpLCBnNl8sIGc2Xy5lbmQoKSwgZzdfLCBnN18uZW5k
KCksIGc4XywKKyAgICAgICAgZzhfLmVuZCgpLCBnOV8sIGc5Xy5lbmQoKSwgZzEwXywgZzEwXy5l
bmQoKSk7CisgIH0KKworIHByaXZhdGU6CisgIGNsYXNzIEl0ZXJhdG9yIDogcHVibGljIFBhcmFt
SXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiB7CisgICBwdWJsaWM6CisgICAgSXRlcmF0b3Io
Y29uc3QgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogYmFzZSwKKyAgICAgIGNv
bnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCisgICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdl
bmVyYXRvcjxUMT46Oml0ZXJhdG9yJiBjdXJyZW50MSwKKyAgICAgIGNvbnN0IFBhcmFtR2VuZXJh
dG9yPFQyPiYgZzIsCisgICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMj46Oml0
ZXJhdG9yJiBjdXJyZW50MiwKKyAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQzPiYgZzMsCisg
ICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMz46Oml0ZXJhdG9yJiBjdXJyZW50
MywKKyAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQ0PiYgZzQsCisgICAgICBjb25zdCB0eXBl
bmFtZSBQYXJhbUdlbmVyYXRvcjxUND46Oml0ZXJhdG9yJiBjdXJyZW50NCwKKyAgICAgIGNvbnN0
IFBhcmFtR2VuZXJhdG9yPFQ1PiYgZzUsCisgICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVy
YXRvcjxUNT46Oml0ZXJhdG9yJiBjdXJyZW50NSwKKyAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9y
PFQ2PiYgZzYsCisgICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNj46Oml0ZXJh
dG9yJiBjdXJyZW50NiwKKyAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQ3PiYgZzcsCisgICAg
ICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNz46Oml0ZXJhdG9yJiBjdXJyZW50NywK
KyAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQ4PiYgZzgsCisgICAgICBjb25zdCB0eXBlbmFt
ZSBQYXJhbUdlbmVyYXRvcjxUOD46Oml0ZXJhdG9yJiBjdXJyZW50OCwKKyAgICAgIGNvbnN0IFBh
cmFtR2VuZXJhdG9yPFQ5PiYgZzksCisgICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRv
cjxUOT46Oml0ZXJhdG9yJiBjdXJyZW50OSwKKyAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQx
MD4mIGcxMCwKKyAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxMD46Oml0ZXJh
dG9yJiBjdXJyZW50MTApCisgICAgICAgIDogYmFzZV8oYmFzZSksCisgICAgICAgICAgYmVnaW4x
XyhnMS5iZWdpbigpKSwgZW5kMV8oZzEuZW5kKCkpLCBjdXJyZW50MV8oY3VycmVudDEpLAorICAg
ICAgICAgIGJlZ2luMl8oZzIuYmVnaW4oKSksIGVuZDJfKGcyLmVuZCgpKSwgY3VycmVudDJfKGN1
cnJlbnQyKSwKKyAgICAgICAgICBiZWdpbjNfKGczLmJlZ2luKCkpLCBlbmQzXyhnMy5lbmQoKSks
IGN1cnJlbnQzXyhjdXJyZW50MyksCisgICAgICAgICAgYmVnaW40XyhnNC5iZWdpbigpKSwgZW5k
NF8oZzQuZW5kKCkpLCBjdXJyZW50NF8oY3VycmVudDQpLAorICAgICAgICAgIGJlZ2luNV8oZzUu
YmVnaW4oKSksIGVuZDVfKGc1LmVuZCgpKSwgY3VycmVudDVfKGN1cnJlbnQ1KSwKKyAgICAgICAg
ICBiZWdpbjZfKGc2LmJlZ2luKCkpLCBlbmQ2XyhnNi5lbmQoKSksIGN1cnJlbnQ2XyhjdXJyZW50
NiksCisgICAgICAgICAgYmVnaW43XyhnNy5iZWdpbigpKSwgZW5kN18oZzcuZW5kKCkpLCBjdXJy
ZW50N18oY3VycmVudDcpLAorICAgICAgICAgIGJlZ2luOF8oZzguYmVnaW4oKSksIGVuZDhfKGc4
LmVuZCgpKSwgY3VycmVudDhfKGN1cnJlbnQ4KSwKKyAgICAgICAgICBiZWdpbjlfKGc5LmJlZ2lu
KCkpLCBlbmQ5XyhnOS5lbmQoKSksIGN1cnJlbnQ5XyhjdXJyZW50OSksCisgICAgICAgICAgYmVn
aW4xMF8oZzEwLmJlZ2luKCkpLCBlbmQxMF8oZzEwLmVuZCgpKSwgY3VycmVudDEwXyhjdXJyZW50
MTApICAgIHsKKyAgICAgIENvbXB1dGVDdXJyZW50VmFsdWUoKTsKKyAgICB9CisgICAgdmlydHVh
bCB+SXRlcmF0b3IoKSB7fQorCisgICAgdmlydHVhbCBjb25zdCBQYXJhbUdlbmVyYXRvckludGVy
ZmFjZTxQYXJhbVR5cGU+KiBCYXNlR2VuZXJhdG9yKCkgY29uc3QgeworICAgICAgcmV0dXJuIGJh
c2VfOworICAgIH0KKyAgICAvLyBBZHZhbmNlIHNob3VsZCBub3QgYmUgY2FsbGVkIG9uIGJleW9u
ZC1vZi1yYW5nZSBpdGVyYXRvcnMKKyAgICAvLyBzbyBubyBjb21wb25lbnQgaXRlcmF0b3JzIG11
c3QgYmUgYmV5b25kIGVuZCBvZiByYW5nZSwgZWl0aGVyLgorICAgIHZpcnR1YWwgdm9pZCBBZHZh
bmNlKCkgeworICAgICAgYXNzZXJ0KCFBdEVuZCgpKTsKKyAgICAgICsrY3VycmVudDEwXzsKKyAg
ICAgIGlmIChjdXJyZW50MTBfID09IGVuZDEwXykgeworICAgICAgICBjdXJyZW50MTBfID0gYmVn
aW4xMF87CisgICAgICAgICsrY3VycmVudDlfOworICAgICAgfQorICAgICAgaWYgKGN1cnJlbnQ5
XyA9PSBlbmQ5XykgeworICAgICAgICBjdXJyZW50OV8gPSBiZWdpbjlfOworICAgICAgICArK2N1
cnJlbnQ4XzsKKyAgICAgIH0KKyAgICAgIGlmIChjdXJyZW50OF8gPT0gZW5kOF8pIHsKKyAgICAg
ICAgY3VycmVudDhfID0gYmVnaW44XzsKKyAgICAgICAgKytjdXJyZW50N187CisgICAgICB9Cisg
ICAgICBpZiAoY3VycmVudDdfID09IGVuZDdfKSB7CisgICAgICAgIGN1cnJlbnQ3XyA9IGJlZ2lu
N187CisgICAgICAgICsrY3VycmVudDZfOworICAgICAgfQorICAgICAgaWYgKGN1cnJlbnQ2XyA9
PSBlbmQ2XykgeworICAgICAgICBjdXJyZW50Nl8gPSBiZWdpbjZfOworICAgICAgICArK2N1cnJl
bnQ1XzsKKyAgICAgIH0KKyAgICAgIGlmIChjdXJyZW50NV8gPT0gZW5kNV8pIHsKKyAgICAgICAg
Y3VycmVudDVfID0gYmVnaW41XzsKKyAgICAgICAgKytjdXJyZW50NF87CisgICAgICB9CisgICAg
ICBpZiAoY3VycmVudDRfID09IGVuZDRfKSB7CisgICAgICAgIGN1cnJlbnQ0XyA9IGJlZ2luNF87
CisgICAgICAgICsrY3VycmVudDNfOworICAgICAgfQorICAgICAgaWYgKGN1cnJlbnQzXyA9PSBl
bmQzXykgeworICAgICAgICBjdXJyZW50M18gPSBiZWdpbjNfOworICAgICAgICArK2N1cnJlbnQy
XzsKKyAgICAgIH0KKyAgICAgIGlmIChjdXJyZW50Ml8gPT0gZW5kMl8pIHsKKyAgICAgICAgY3Vy
cmVudDJfID0gYmVnaW4yXzsKKyAgICAgICAgKytjdXJyZW50MV87CisgICAgICB9CisgICAgICBD
b21wdXRlQ3VycmVudFZhbHVlKCk7CisgICAgfQorICAgIHZpcnR1YWwgUGFyYW1JdGVyYXRvcklu
dGVyZmFjZTxQYXJhbVR5cGU+KiBDbG9uZSgpIGNvbnN0IHsKKyAgICAgIHJldHVybiBuZXcgSXRl
cmF0b3IoKnRoaXMpOworICAgIH0KKyAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVu
dCgpIGNvbnN0IHsgcmV0dXJuICZjdXJyZW50X3ZhbHVlXzsgfQorICAgIHZpcnR1YWwgYm9vbCBF
cXVhbHMoY29uc3QgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+JiBvdGhlcikgY29u
c3QgeworICAgICAgLy8gSGF2aW5nIHRoZSBzYW1lIGJhc2UgZ2VuZXJhdG9yIGd1YXJhbnRlZXMg
dGhhdCB0aGUgb3RoZXIKKyAgICAgIC8vIGl0ZXJhdG9yIGlzIG9mIHRoZSBzYW1lIHR5cGUgYW5k
IHdlIGNhbiBkb3duY2FzdC4KKyAgICAgIEdURVNUX0NIRUNLXyhCYXNlR2VuZXJhdG9yKCkgPT0g
b3RoZXIuQmFzZUdlbmVyYXRvcigpKQorICAgICAgICAgIDw8ICJUaGUgcHJvZ3JhbSBhdHRlbXB0
ZWQgdG8gY29tcGFyZSBpdGVyYXRvcnMgIgorICAgICAgICAgIDw8ICJmcm9tIGRpZmZlcmVudCBn
ZW5lcmF0b3JzLiIgPDwgc3RkOjplbmRsOworICAgICAgY29uc3QgSXRlcmF0b3IqIHR5cGVkX290
aGVyID0KKyAgICAgICAgICBDaGVja2VkRG93bmNhc3RUb0FjdHVhbFR5cGU8Y29uc3QgSXRlcmF0
b3I+KCZvdGhlcik7CisgICAgICAvLyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRvcnMgZXF1YWwgaWYg
dGhleSBib3RoIHBvaW50IGJleW9uZCB0aGVpcgorICAgICAgLy8gcmVzcGVjdGl2ZSByYW5nZXMu
IFRoYXQgY2FuIGhhcHBlbiBpbiBhIHZhcmlldHkgb2YgZmFzaGlvbnMsCisgICAgICAvLyBzbyB3
ZSBoYXZlIHRvIGNvbnN1bHQgQXRFbmQoKS4KKyAgICAgIHJldHVybiAoQXRFbmQoKSAmJiB0eXBl
ZF9vdGhlci0+QXRFbmQoKSkgfHwKKyAgICAgICAgICgKKyAgICAgICAgICBjdXJyZW50MV8gPT0g
dHlwZWRfb3RoZXItPmN1cnJlbnQxXyAmJgorICAgICAgICAgIGN1cnJlbnQyXyA9PSB0eXBlZF9v
dGhlci0+Y3VycmVudDJfICYmCisgICAgICAgICAgY3VycmVudDNfID09IHR5cGVkX290aGVyLT5j
dXJyZW50M18gJiYKKyAgICAgICAgICBjdXJyZW50NF8gPT0gdHlwZWRfb3RoZXItPmN1cnJlbnQ0
XyAmJgorICAgICAgICAgIGN1cnJlbnQ1XyA9PSB0eXBlZF9vdGhlci0+Y3VycmVudDVfICYmCisg
ICAgICAgICAgY3VycmVudDZfID09IHR5cGVkX290aGVyLT5jdXJyZW50Nl8gJiYKKyAgICAgICAg
ICBjdXJyZW50N18gPT0gdHlwZWRfb3RoZXItPmN1cnJlbnQ3XyAmJgorICAgICAgICAgIGN1cnJl
bnQ4XyA9PSB0eXBlZF9vdGhlci0+Y3VycmVudDhfICYmCisgICAgICAgICAgY3VycmVudDlfID09
IHR5cGVkX290aGVyLT5jdXJyZW50OV8gJiYKKyAgICAgICAgICBjdXJyZW50MTBfID09IHR5cGVk
X290aGVyLT5jdXJyZW50MTBfKTsKKyAgICB9CisKKyAgIHByaXZhdGU6CisgICAgSXRlcmF0b3Io
Y29uc3QgSXRlcmF0b3ImIG90aGVyKQorICAgICAgICA6IGJhc2VfKG90aGVyLmJhc2VfKSwKKyAg
ICAgICAgYmVnaW4xXyhvdGhlci5iZWdpbjFfKSwKKyAgICAgICAgZW5kMV8ob3RoZXIuZW5kMV8p
LAorICAgICAgICBjdXJyZW50MV8ob3RoZXIuY3VycmVudDFfKSwKKyAgICAgICAgYmVnaW4yXyhv
dGhlci5iZWdpbjJfKSwKKyAgICAgICAgZW5kMl8ob3RoZXIuZW5kMl8pLAorICAgICAgICBjdXJy
ZW50Ml8ob3RoZXIuY3VycmVudDJfKSwKKyAgICAgICAgYmVnaW4zXyhvdGhlci5iZWdpbjNfKSwK
KyAgICAgICAgZW5kM18ob3RoZXIuZW5kM18pLAorICAgICAgICBjdXJyZW50M18ob3RoZXIuY3Vy
cmVudDNfKSwKKyAgICAgICAgYmVnaW40XyhvdGhlci5iZWdpbjRfKSwKKyAgICAgICAgZW5kNF8o
b3RoZXIuZW5kNF8pLAorICAgICAgICBjdXJyZW50NF8ob3RoZXIuY3VycmVudDRfKSwKKyAgICAg
ICAgYmVnaW41XyhvdGhlci5iZWdpbjVfKSwKKyAgICAgICAgZW5kNV8ob3RoZXIuZW5kNV8pLAor
ICAgICAgICBjdXJyZW50NV8ob3RoZXIuY3VycmVudDVfKSwKKyAgICAgICAgYmVnaW42XyhvdGhl
ci5iZWdpbjZfKSwKKyAgICAgICAgZW5kNl8ob3RoZXIuZW5kNl8pLAorICAgICAgICBjdXJyZW50
Nl8ob3RoZXIuY3VycmVudDZfKSwKKyAgICAgICAgYmVnaW43XyhvdGhlci5iZWdpbjdfKSwKKyAg
ICAgICAgZW5kN18ob3RoZXIuZW5kN18pLAorICAgICAgICBjdXJyZW50N18ob3RoZXIuY3VycmVu
dDdfKSwKKyAgICAgICAgYmVnaW44XyhvdGhlci5iZWdpbjhfKSwKKyAgICAgICAgZW5kOF8ob3Ro
ZXIuZW5kOF8pLAorICAgICAgICBjdXJyZW50OF8ob3RoZXIuY3VycmVudDhfKSwKKyAgICAgICAg
YmVnaW45XyhvdGhlci5iZWdpbjlfKSwKKyAgICAgICAgZW5kOV8ob3RoZXIuZW5kOV8pLAorICAg
ICAgICBjdXJyZW50OV8ob3RoZXIuY3VycmVudDlfKSwKKyAgICAgICAgYmVnaW4xMF8ob3RoZXIu
YmVnaW4xMF8pLAorICAgICAgICBlbmQxMF8ob3RoZXIuZW5kMTBfKSwKKyAgICAgICAgY3VycmVu
dDEwXyhvdGhlci5jdXJyZW50MTBfKSB7CisgICAgICBDb21wdXRlQ3VycmVudFZhbHVlKCk7Cisg
ICAgfQorCisgICAgdm9pZCBDb21wdXRlQ3VycmVudFZhbHVlKCkgeworICAgICAgaWYgKCFBdEVu
ZCgpKQorICAgICAgICBjdXJyZW50X3ZhbHVlXyA9IFBhcmFtVHlwZSgqY3VycmVudDFfLCAqY3Vy
cmVudDJfLCAqY3VycmVudDNfLAorICAgICAgICAgICAgKmN1cnJlbnQ0XywgKmN1cnJlbnQ1Xywg
KmN1cnJlbnQ2XywgKmN1cnJlbnQ3XywgKmN1cnJlbnQ4XywKKyAgICAgICAgICAgICpjdXJyZW50
OV8sICpjdXJyZW50MTBfKTsKKyAgICB9CisgICAgYm9vbCBBdEVuZCgpIGNvbnN0IHsKKyAgICAg
IC8vIFdlIG11c3QgcmVwb3J0IGl0ZXJhdG9yIHBhc3QgdGhlIGVuZCBvZiB0aGUgcmFuZ2Ugd2hl
biBlaXRoZXIgb2YgdGhlCisgICAgICAvLyBjb21wb25lbnQgaXRlcmF0b3JzIGhhcyByZWFjaGVk
IHRoZSBlbmQgb2YgaXRzIHJhbmdlLgorICAgICAgcmV0dXJuCisgICAgICAgICAgY3VycmVudDFf
ID09IGVuZDFfIHx8CisgICAgICAgICAgY3VycmVudDJfID09IGVuZDJfIHx8CisgICAgICAgICAg
Y3VycmVudDNfID09IGVuZDNfIHx8CisgICAgICAgICAgY3VycmVudDRfID09IGVuZDRfIHx8Cisg
ICAgICAgICAgY3VycmVudDVfID09IGVuZDVfIHx8CisgICAgICAgICAgY3VycmVudDZfID09IGVu
ZDZfIHx8CisgICAgICAgICAgY3VycmVudDdfID09IGVuZDdfIHx8CisgICAgICAgICAgY3VycmVu
dDhfID09IGVuZDhfIHx8CisgICAgICAgICAgY3VycmVudDlfID09IGVuZDlfIHx8CisgICAgICAg
ICAgY3VycmVudDEwXyA9PSBlbmQxMF87CisgICAgfQorCisgICAgLy8gTm8gaW1wbGVtZW50YXRp
b24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgorICAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0
IEl0ZXJhdG9yJiBvdGhlcik7CisKKyAgICBjb25zdCBQYXJhbUdlbmVyYXRvckludGVyZmFjZTxQ
YXJhbVR5cGU+KiBjb25zdCBiYXNlXzsKKyAgICAvLyBiZWdpbltpXV8gYW5kIGVuZFtpXV8gZGVm
aW5lIHRoZSBpLXRoIHJhbmdlIHRoYXQgSXRlcmF0b3IgdHJhdmVyc2VzLgorICAgIC8vIGN1cnJl
bnRbaV1fIGlzIHRoZSBhY3R1YWwgdHJhdmVyc2luZyBpdGVyYXRvci4KKyAgICBjb25zdCB0eXBl
bmFtZSBQYXJhbUdlbmVyYXRvcjxUMT46Oml0ZXJhdG9yIGJlZ2luMV87CisgICAgY29uc3QgdHlw
ZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDE+OjppdGVyYXRvciBlbmQxXzsKKyAgICB0eXBlbmFtZSBQ
YXJhbUdlbmVyYXRvcjxUMT46Oml0ZXJhdG9yIGN1cnJlbnQxXzsKKyAgICBjb25zdCB0eXBlbmFt
ZSBQYXJhbUdlbmVyYXRvcjxUMj46Oml0ZXJhdG9yIGJlZ2luMl87CisgICAgY29uc3QgdHlwZW5h
bWUgUGFyYW1HZW5lcmF0b3I8VDI+OjppdGVyYXRvciBlbmQyXzsKKyAgICB0eXBlbmFtZSBQYXJh
bUdlbmVyYXRvcjxUMj46Oml0ZXJhdG9yIGN1cnJlbnQyXzsKKyAgICBjb25zdCB0eXBlbmFtZSBQ
YXJhbUdlbmVyYXRvcjxUMz46Oml0ZXJhdG9yIGJlZ2luM187CisgICAgY29uc3QgdHlwZW5hbWUg
UGFyYW1HZW5lcmF0b3I8VDM+OjppdGVyYXRvciBlbmQzXzsKKyAgICB0eXBlbmFtZSBQYXJhbUdl
bmVyYXRvcjxUMz46Oml0ZXJhdG9yIGN1cnJlbnQzXzsKKyAgICBjb25zdCB0eXBlbmFtZSBQYXJh
bUdlbmVyYXRvcjxUND46Oml0ZXJhdG9yIGJlZ2luNF87CisgICAgY29uc3QgdHlwZW5hbWUgUGFy
YW1HZW5lcmF0b3I8VDQ+OjppdGVyYXRvciBlbmQ0XzsKKyAgICB0eXBlbmFtZSBQYXJhbUdlbmVy
YXRvcjxUND46Oml0ZXJhdG9yIGN1cnJlbnQ0XzsKKyAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdl
bmVyYXRvcjxUNT46Oml0ZXJhdG9yIGJlZ2luNV87CisgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1H
ZW5lcmF0b3I8VDU+OjppdGVyYXRvciBlbmQ1XzsKKyAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRv
cjxUNT46Oml0ZXJhdG9yIGN1cnJlbnQ1XzsKKyAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVy
YXRvcjxUNj46Oml0ZXJhdG9yIGJlZ2luNl87CisgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5l
cmF0b3I8VDY+OjppdGVyYXRvciBlbmQ2XzsKKyAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxU
Nj46Oml0ZXJhdG9yIGN1cnJlbnQ2XzsKKyAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRv
cjxUNz46Oml0ZXJhdG9yIGJlZ2luN187CisgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0
b3I8VDc+OjppdGVyYXRvciBlbmQ3XzsKKyAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNz46
Oml0ZXJhdG9yIGN1cnJlbnQ3XzsKKyAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxU
OD46Oml0ZXJhdG9yIGJlZ2luOF87CisgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8
VDg+OjppdGVyYXRvciBlbmQ4XzsKKyAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUOD46Oml0
ZXJhdG9yIGN1cnJlbnQ4XzsKKyAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUOT46
Oml0ZXJhdG9yIGJlZ2luOV87CisgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDk+
OjppdGVyYXRvciBlbmQ5XzsKKyAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUOT46Oml0ZXJh
dG9yIGN1cnJlbnQ5XzsKKyAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMTA+Ojpp
dGVyYXRvciBiZWdpbjEwXzsKKyAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMTA+
OjppdGVyYXRvciBlbmQxMF87CisgICAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDEwPjo6aXRl
cmF0b3IgY3VycmVudDEwXzsKKyAgICBQYXJhbVR5cGUgY3VycmVudF92YWx1ZV87CisgIH07ICAv
LyBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMTA6Okl0ZXJhdG9yCisKKyAgLy8gTm8g
aW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgorICB2b2lkIG9wZXJh
dG9yPShjb25zdCBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMTAmIG90aGVyKTsKKworICBjb25z
dCBQYXJhbUdlbmVyYXRvcjxUMT4gZzFfOworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMj4gZzJf
OworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMz4gZzNfOworICBjb25zdCBQYXJhbUdlbmVyYXRv
cjxUND4gZzRfOworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUNT4gZzVfOworICBjb25zdCBQYXJh
bUdlbmVyYXRvcjxUNj4gZzZfOworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUNz4gZzdfOworICBj
b25zdCBQYXJhbUdlbmVyYXRvcjxUOD4gZzhfOworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUOT4g
ZzlfOworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMTA+IGcxMF87Cit9OyAgLy8gY2xhc3MgQ2Fy
dGVzaWFuUHJvZHVjdEdlbmVyYXRvcjEwCisKKworLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04g
LSBETyBOT1QgVVNFIElOIFVTRVIgQ09ERS4KKy8vCisvLyBIZWxwZXIgY2xhc3NlcyBwcm92aWRp
bmcgQ29tYmluZSgpIHdpdGggcG9seW1vcnBoaWMgZmVhdHVyZXMuIFRoZXkgYWxsb3cKKy8vIGNh
c3RpbmcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvck48VD4gdG8gUGFyYW1HZW5lcmF0b3I8VT4g
aWYgVCBpcworLy8gY29udmVydGlibGUgdG8gVS4KKy8vCit0ZW1wbGF0ZSA8Y2xhc3MgR2VuZXJh
dG9yMSwgY2xhc3MgR2VuZXJhdG9yMj4KK2NsYXNzIENhcnRlc2lhblByb2R1Y3RIb2xkZXIyIHsK
KyBwdWJsaWM6CitDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyMihjb25zdCBHZW5lcmF0b3IxJiBnMSwg
Y29uc3QgR2VuZXJhdG9yMiYgZzIpCisgICAgICA6IGcxXyhnMSksIGcyXyhnMikge30KKyAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KKyAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0
b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyPiA+KCkgY29uc3QgeworICAgIHJldHVybiBQYXJh
bUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDI+ID4oCisgICAgICAgIG5ldyBDYXJ0
ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMjxUMSwgVDI+KAorICAgICAgICBzdGF0aWNfY2FzdDxQYXJh
bUdlbmVyYXRvcjxUMT4gPihnMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRv
cjxUMj4gPihnMl8pKSk7CisgIH0KKworIHByaXZhdGU6CisgIC8vIE5vIGltcGxlbWVudGF0aW9u
IC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KKyAgdm9pZCBvcGVyYXRvcj0oY29uc3QgQ2Fy
dGVzaWFuUHJvZHVjdEhvbGRlcjImIG90aGVyKTsKKworICBjb25zdCBHZW5lcmF0b3IxIGcxXzsK
KyAgY29uc3QgR2VuZXJhdG9yMiBnMl87Cit9OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEhv
bGRlcjIKKwordGVtcGxhdGUgPGNsYXNzIEdlbmVyYXRvcjEsIGNsYXNzIEdlbmVyYXRvcjIsIGNs
YXNzIEdlbmVyYXRvcjM+CitjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyMyB7CisgcHVibGlj
OgorQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjMoY29uc3QgR2VuZXJhdG9yMSYgZzEsIGNvbnN0IEdl
bmVyYXRvcjImIGcyLAorICAgIGNvbnN0IEdlbmVyYXRvcjMmIGczKQorICAgICAgOiBnMV8oZzEp
LCBnMl8oZzIpLCBnM18oZzMpIHt9CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUg
VDIsIHR5cGVuYW1lIFQzPgorICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0
dXBsZTxUMSwgVDIsIFQzPiA+KCkgY29uc3QgeworICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwg
Ojp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzPiA+KAorICAgICAgICBuZXcgQ2FydGVzaWFuUHJv
ZHVjdEdlbmVyYXRvcjM8VDEsIFQyLCBUMz4oCisgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2Vu
ZXJhdG9yPFQxPiA+KGcxXyksCisgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQy
PiA+KGcyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQzPiA+KGczXykp
KTsKKyAgfQorCisgcHJpdmF0ZToKKyAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50
IGlzIHVuc3VwcG9ydGVkLgorICB2b2lkIG9wZXJhdG9yPShjb25zdCBDYXJ0ZXNpYW5Qcm9kdWN0
SG9sZGVyMyYgb3RoZXIpOworCisgIGNvbnN0IEdlbmVyYXRvcjEgZzFfOworICBjb25zdCBHZW5l
cmF0b3IyIGcyXzsKKyAgY29uc3QgR2VuZXJhdG9yMyBnM187Cit9OyAgLy8gY2xhc3MgQ2FydGVz
aWFuUHJvZHVjdEhvbGRlcjMKKwordGVtcGxhdGUgPGNsYXNzIEdlbmVyYXRvcjEsIGNsYXNzIEdl
bmVyYXRvcjIsIGNsYXNzIEdlbmVyYXRvcjMsCisgICAgY2xhc3MgR2VuZXJhdG9yND4KK2NsYXNz
IENhcnRlc2lhblByb2R1Y3RIb2xkZXI0IHsKKyBwdWJsaWM6CitDYXJ0ZXNpYW5Qcm9kdWN0SG9s
ZGVyNChjb25zdCBHZW5lcmF0b3IxJiBnMSwgY29uc3QgR2VuZXJhdG9yMiYgZzIsCisgICAgY29u
c3QgR2VuZXJhdG9yMyYgZzMsIGNvbnN0IEdlbmVyYXRvcjQmIGc0KQorICAgICAgOiBnMV8oZzEp
LCBnMl8oZzIpLCBnM18oZzMpLCBnNF8oZzQpIHt9CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwg
dHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUND4KKyAgb3BlcmF0b3IgUGFyYW1H
ZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQ+ID4oKSBjb25zdCB7Cisg
ICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0
PiA+KAorICAgICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjQ8VDEsIFQyLCBUMywg
VDQ+KAorICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMT4gPihnMV8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMj4gPihnMl8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMz4gPihnM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxQ
YXJhbUdlbmVyYXRvcjxUND4gPihnNF8pKSk7CisgIH0KKworIHByaXZhdGU6CisgIC8vIE5vIGlt
cGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KKyAgdm9pZCBvcGVyYXRv
cj0oY29uc3QgQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjQmIG90aGVyKTsKKworICBjb25zdCBHZW5l
cmF0b3IxIGcxXzsKKyAgY29uc3QgR2VuZXJhdG9yMiBnMl87CisgIGNvbnN0IEdlbmVyYXRvcjMg
ZzNfOworICBjb25zdCBHZW5lcmF0b3I0IGc0XzsKK307ICAvLyBjbGFzcyBDYXJ0ZXNpYW5Qcm9k
dWN0SG9sZGVyNAorCit0ZW1wbGF0ZSA8Y2xhc3MgR2VuZXJhdG9yMSwgY2xhc3MgR2VuZXJhdG9y
MiwgY2xhc3MgR2VuZXJhdG9yMywKKyAgICBjbGFzcyBHZW5lcmF0b3I0LCBjbGFzcyBHZW5lcmF0
b3I1PgorY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjUgeworIHB1YmxpYzoKK0NhcnRlc2lh
blByb2R1Y3RIb2xkZXI1KGNvbnN0IEdlbmVyYXRvcjEmIGcxLCBjb25zdCBHZW5lcmF0b3IyJiBn
MiwKKyAgICBjb25zdCBHZW5lcmF0b3IzJiBnMywgY29uc3QgR2VuZXJhdG9yNCYgZzQsIGNvbnN0
IEdlbmVyYXRvcjUmIGc1KQorICAgICAgOiBnMV8oZzEpLCBnMl8oZzIpLCBnM18oZzMpLCBnNF8o
ZzQpLCBnNV8oZzUpIHt9CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5
cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDU+CisgIG9wZXJhdG9yIFBhcmFtR2Vu
ZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNT4gPigpIGNvbnN0IHsK
KyAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywg
VDQsIFQ1PiA+KAorICAgICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjU8VDEsIFQy
LCBUMywgVDQsIFQ1PigKKyAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDE+ID4o
ZzFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDI+ID4oZzJfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDM+ID4oZzNfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDQ+ID4oZzRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
UGFyYW1HZW5lcmF0b3I8VDU+ID4oZzVfKSkpOworICB9CisKKyBwcml2YXRlOgorICAvLyBObyBp
bXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCisgIHZvaWQgb3BlcmF0
b3I9KGNvbnN0IENhcnRlc2lhblByb2R1Y3RIb2xkZXI1JiBvdGhlcik7CisKKyAgY29uc3QgR2Vu
ZXJhdG9yMSBnMV87CisgIGNvbnN0IEdlbmVyYXRvcjIgZzJfOworICBjb25zdCBHZW5lcmF0b3Iz
IGczXzsKKyAgY29uc3QgR2VuZXJhdG9yNCBnNF87CisgIGNvbnN0IEdlbmVyYXRvcjUgZzVfOwor
fTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RIb2xkZXI1CisKK3RlbXBsYXRlIDxjbGFzcyBH
ZW5lcmF0b3IxLCBjbGFzcyBHZW5lcmF0b3IyLCBjbGFzcyBHZW5lcmF0b3IzLAorICAgIGNsYXNz
IEdlbmVyYXRvcjQsIGNsYXNzIEdlbmVyYXRvcjUsIGNsYXNzIEdlbmVyYXRvcjY+CitjbGFzcyBD
YXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyNiB7CisgcHVibGljOgorQ2FydGVzaWFuUHJvZHVjdEhvbGRl
cjYoY29uc3QgR2VuZXJhdG9yMSYgZzEsIGNvbnN0IEdlbmVyYXRvcjImIGcyLAorICAgIGNvbnN0
IEdlbmVyYXRvcjMmIGczLCBjb25zdCBHZW5lcmF0b3I0JiBnNCwgY29uc3QgR2VuZXJhdG9yNSYg
ZzUsCisgICAgY29uc3QgR2VuZXJhdG9yNiYgZzYpCisgICAgICA6IGcxXyhnMSksIGcyXyhnMiks
IGczXyhnMyksIGc0XyhnNCksIGc1XyhnNSksIGc2XyhnNikge30KKyAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBU
NSwKKyAgICAgIHR5cGVuYW1lIFQ2PgorICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0
aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2PiA+KCkgY29uc3QgeworICAgIHJldHVy
biBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2
PiA+KAorICAgICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjY8VDEsIFQyLCBUMywg
VDQsIFQ1LCBUNj4oCisgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQxPiA+KGcx
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQyPiA+KGcyXyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQzPiA+KGczXyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFBhcmFtR2VuZXJhdG9yPFQ0PiA+KGc0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFBh
cmFtR2VuZXJhdG9yPFQ1PiA+KGc1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJh
dG9yPFQ2PiA+KGc2XykpKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgLy8gTm8gaW1wbGVtZW50YXRp
b24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgorICB2b2lkIG9wZXJhdG9yPShjb25zdCBD
YXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyNiYgb3RoZXIpOworCisgIGNvbnN0IEdlbmVyYXRvcjEgZzFf
OworICBjb25zdCBHZW5lcmF0b3IyIGcyXzsKKyAgY29uc3QgR2VuZXJhdG9yMyBnM187CisgIGNv
bnN0IEdlbmVyYXRvcjQgZzRfOworICBjb25zdCBHZW5lcmF0b3I1IGc1XzsKKyAgY29uc3QgR2Vu
ZXJhdG9yNiBnNl87Cit9OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjYKKwordGVt
cGxhdGUgPGNsYXNzIEdlbmVyYXRvcjEsIGNsYXNzIEdlbmVyYXRvcjIsIGNsYXNzIEdlbmVyYXRv
cjMsCisgICAgY2xhc3MgR2VuZXJhdG9yNCwgY2xhc3MgR2VuZXJhdG9yNSwgY2xhc3MgR2VuZXJh
dG9yNiwgY2xhc3MgR2VuZXJhdG9yNz4KK2NsYXNzIENhcnRlc2lhblByb2R1Y3RIb2xkZXI3IHsK
KyBwdWJsaWM6CitDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyNyhjb25zdCBHZW5lcmF0b3IxJiBnMSwg
Y29uc3QgR2VuZXJhdG9yMiYgZzIsCisgICAgY29uc3QgR2VuZXJhdG9yMyYgZzMsIGNvbnN0IEdl
bmVyYXRvcjQmIGc0LCBjb25zdCBHZW5lcmF0b3I1JiBnNSwKKyAgICBjb25zdCBHZW5lcmF0b3I2
JiBnNiwgY29uc3QgR2VuZXJhdG9yNyYgZzcpCisgICAgICA6IGcxXyhnMSksIGcyXyhnMiksIGcz
XyhnMyksIGc0XyhnNCksIGc1XyhnNSksIGc2XyhnNiksIGc3XyhnNykge30KKyAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBl
bmFtZSBUNSwKKyAgICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNz4KKyAgb3BlcmF0b3IgUGFy
YW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwKKyAg
ICAgIFQ3PiA+KCkgY29uc3QgeworICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5n
Ojp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNz4gPigKKyAgICAgICAgbmV3IENhcnRl
c2lhblByb2R1Y3RHZW5lcmF0b3I3PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3PigKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDE+ID4oZzFfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDI+ID4oZzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8UGFy
YW1HZW5lcmF0b3I8VDM+ID4oZzNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0
b3I8VDQ+ID4oZzRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDU+ID4o
ZzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDY+ID4oZzZfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDc+ID4oZzdfKSkpOworICB9CisKKyBw
cml2YXRlOgorICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0
ZWQuCisgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IENhcnRlc2lhblByb2R1Y3RIb2xkZXI3JiBvdGhl
cik7CisKKyAgY29uc3QgR2VuZXJhdG9yMSBnMV87CisgIGNvbnN0IEdlbmVyYXRvcjIgZzJfOwor
ICBjb25zdCBHZW5lcmF0b3IzIGczXzsKKyAgY29uc3QgR2VuZXJhdG9yNCBnNF87CisgIGNvbnN0
IEdlbmVyYXRvcjUgZzVfOworICBjb25zdCBHZW5lcmF0b3I2IGc2XzsKKyAgY29uc3QgR2VuZXJh
dG9yNyBnN187Cit9OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjcKKwordGVtcGxh
dGUgPGNsYXNzIEdlbmVyYXRvcjEsIGNsYXNzIEdlbmVyYXRvcjIsIGNsYXNzIEdlbmVyYXRvcjMs
CisgICAgY2xhc3MgR2VuZXJhdG9yNCwgY2xhc3MgR2VuZXJhdG9yNSwgY2xhc3MgR2VuZXJhdG9y
NiwgY2xhc3MgR2VuZXJhdG9yNywKKyAgICBjbGFzcyBHZW5lcmF0b3I4PgorY2xhc3MgQ2FydGVz
aWFuUHJvZHVjdEhvbGRlcjggeworIHB1YmxpYzoKK0NhcnRlc2lhblByb2R1Y3RIb2xkZXI4KGNv
bnN0IEdlbmVyYXRvcjEmIGcxLCBjb25zdCBHZW5lcmF0b3IyJiBnMiwKKyAgICBjb25zdCBHZW5l
cmF0b3IzJiBnMywgY29uc3QgR2VuZXJhdG9yNCYgZzQsIGNvbnN0IEdlbmVyYXRvcjUmIGc1LAor
ICAgIGNvbnN0IEdlbmVyYXRvcjYmIGc2LCBjb25zdCBHZW5lcmF0b3I3JiBnNywgY29uc3QgR2Vu
ZXJhdG9yOCYgZzgpCisgICAgICA6IGcxXyhnMSksIGcyXyhnMiksIGczXyhnMyksIGc0XyhnNCks
IGc1XyhnNSksIGc2XyhnNiksIGc3XyhnNyksCisgICAgICAgICAgZzhfKGc4KSB7fQorICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQs
IHR5cGVuYW1lIFQ1LAorICAgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBU
OD4KKyAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBU
MywgVDQsIFQ1LCBUNiwgVDcsCisgICAgICBUOD4gPigpIGNvbnN0IHsKKyAgICByZXR1cm4gUGFy
YW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcs
IFQ4PiA+KAorICAgICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjg8VDEsIFQyLCBU
MywgVDQsIFQ1LCBUNiwgVDcsIFQ4PigKKyAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0
b3I8VDE+ID4oZzFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDI+ID4o
ZzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDM+ID4oZzNfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDQ+ID4oZzRfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDU+ID4oZzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
UGFyYW1HZW5lcmF0b3I8VDY+ID4oZzZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5l
cmF0b3I8VDc+ID4oZzdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDg+
ID4oZzhfKSkpOworICB9CisKKyBwcml2YXRlOgorICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFz
c2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCisgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IENhcnRlc2lh
blByb2R1Y3RIb2xkZXI4JiBvdGhlcik7CisKKyAgY29uc3QgR2VuZXJhdG9yMSBnMV87CisgIGNv
bnN0IEdlbmVyYXRvcjIgZzJfOworICBjb25zdCBHZW5lcmF0b3IzIGczXzsKKyAgY29uc3QgR2Vu
ZXJhdG9yNCBnNF87CisgIGNvbnN0IEdlbmVyYXRvcjUgZzVfOworICBjb25zdCBHZW5lcmF0b3I2
IGc2XzsKKyAgY29uc3QgR2VuZXJhdG9yNyBnN187CisgIGNvbnN0IEdlbmVyYXRvcjggZzhfOwor
fTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RIb2xkZXI4CisKK3RlbXBsYXRlIDxjbGFzcyBH
ZW5lcmF0b3IxLCBjbGFzcyBHZW5lcmF0b3IyLCBjbGFzcyBHZW5lcmF0b3IzLAorICAgIGNsYXNz
IEdlbmVyYXRvcjQsIGNsYXNzIEdlbmVyYXRvcjUsIGNsYXNzIEdlbmVyYXRvcjYsIGNsYXNzIEdl
bmVyYXRvcjcsCisgICAgY2xhc3MgR2VuZXJhdG9yOCwgY2xhc3MgR2VuZXJhdG9yOT4KK2NsYXNz
IENhcnRlc2lhblByb2R1Y3RIb2xkZXI5IHsKKyBwdWJsaWM6CitDYXJ0ZXNpYW5Qcm9kdWN0SG9s
ZGVyOShjb25zdCBHZW5lcmF0b3IxJiBnMSwgY29uc3QgR2VuZXJhdG9yMiYgZzIsCisgICAgY29u
c3QgR2VuZXJhdG9yMyYgZzMsIGNvbnN0IEdlbmVyYXRvcjQmIGc0LCBjb25zdCBHZW5lcmF0b3I1
JiBnNSwKKyAgICBjb25zdCBHZW5lcmF0b3I2JiBnNiwgY29uc3QgR2VuZXJhdG9yNyYgZzcsIGNv
bnN0IEdlbmVyYXRvcjgmIGc4LAorICAgIGNvbnN0IEdlbmVyYXRvcjkmIGc5KQorICAgICAgOiBn
MV8oZzEpLCBnMl8oZzIpLCBnM18oZzMpLCBnNF8oZzQpLCBnNV8oZzUpLCBnNl8oZzYpLCBnN18o
ZzcpLCBnOF8oZzgpLAorICAgICAgICAgIGc5XyhnOSkge30KKyAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwK
KyAgICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5
PgorICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQz
LCBUNCwgVDUsIFQ2LCBUNywgVDgsCisgICAgICBUOT4gPigpIGNvbnN0IHsKKyAgICByZXR1cm4g
UGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwg
VDcsIFQ4LAorICAgICAgICBUOT4gPigKKyAgICAgICAgbmV3IENhcnRlc2lhblByb2R1Y3RHZW5l
cmF0b3I5PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDk+KAorICAgICAgICBzdGF0
aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMT4gPihnMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxQ
YXJhbUdlbmVyYXRvcjxUMj4gPihnMl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVy
YXRvcjxUMz4gPihnM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUND4g
PihnNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUNT4gPihnNV8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUNj4gPihnNl8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUNz4gPihnN18pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxQYXJhbUdlbmVyYXRvcjxUOD4gPihnOF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdl
bmVyYXRvcjxUOT4gPihnOV8pKSk7CisgIH0KKworIHByaXZhdGU6CisgIC8vIE5vIGltcGxlbWVu
dGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KKyAgdm9pZCBvcGVyYXRvcj0oY29u
c3QgQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjkmIG90aGVyKTsKKworICBjb25zdCBHZW5lcmF0b3Ix
IGcxXzsKKyAgY29uc3QgR2VuZXJhdG9yMiBnMl87CisgIGNvbnN0IEdlbmVyYXRvcjMgZzNfOwor
ICBjb25zdCBHZW5lcmF0b3I0IGc0XzsKKyAgY29uc3QgR2VuZXJhdG9yNSBnNV87CisgIGNvbnN0
IEdlbmVyYXRvcjYgZzZfOworICBjb25zdCBHZW5lcmF0b3I3IGc3XzsKKyAgY29uc3QgR2VuZXJh
dG9yOCBnOF87CisgIGNvbnN0IEdlbmVyYXRvcjkgZzlfOworfTsgIC8vIGNsYXNzIENhcnRlc2lh
blByb2R1Y3RIb2xkZXI5CisKK3RlbXBsYXRlIDxjbGFzcyBHZW5lcmF0b3IxLCBjbGFzcyBHZW5l
cmF0b3IyLCBjbGFzcyBHZW5lcmF0b3IzLAorICAgIGNsYXNzIEdlbmVyYXRvcjQsIGNsYXNzIEdl
bmVyYXRvcjUsIGNsYXNzIEdlbmVyYXRvcjYsIGNsYXNzIEdlbmVyYXRvcjcsCisgICAgY2xhc3Mg
R2VuZXJhdG9yOCwgY2xhc3MgR2VuZXJhdG9yOSwgY2xhc3MgR2VuZXJhdG9yMTA+CitjbGFzcyBD
YXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyMTAgeworIHB1YmxpYzoKK0NhcnRlc2lhblByb2R1Y3RIb2xk
ZXIxMChjb25zdCBHZW5lcmF0b3IxJiBnMSwgY29uc3QgR2VuZXJhdG9yMiYgZzIsCisgICAgY29u
c3QgR2VuZXJhdG9yMyYgZzMsIGNvbnN0IEdlbmVyYXRvcjQmIGc0LCBjb25zdCBHZW5lcmF0b3I1
JiBnNSwKKyAgICBjb25zdCBHZW5lcmF0b3I2JiBnNiwgY29uc3QgR2VuZXJhdG9yNyYgZzcsIGNv
bnN0IEdlbmVyYXRvcjgmIGc4LAorICAgIGNvbnN0IEdlbmVyYXRvcjkmIGc5LCBjb25zdCBHZW5l
cmF0b3IxMCYgZzEwKQorICAgICAgOiBnMV8oZzEpLCBnMl8oZzIpLCBnM18oZzMpLCBnNF8oZzQp
LCBnNV8oZzUpLCBnNl8oZzYpLCBnN18oZzcpLCBnOF8oZzgpLAorICAgICAgICAgIGc5XyhnOSks
IGcxMF8oZzEwKSB7fQorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBl
bmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgICAgdHlwZW5hbWUgVDYsIHR5
cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMD4KKyAgb3Bl
cmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1
LCBUNiwgVDcsIFQ4LCBUOSwKKyAgICAgIFQxMD4gPigpIGNvbnN0IHsKKyAgICByZXR1cm4gUGFy
YW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcs
IFQ4LCBUOSwKKyAgICAgICAgVDEwPiA+KAorICAgICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdl
bmVyYXRvcjEwPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksCisgICAgICAgICAg
ICBUMTA+KAorICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMT4gPihnMV8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMj4gPihnMl8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMz4gPihnM18pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxQYXJhbUdlbmVyYXRvcjxUND4gPihnNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdl
bmVyYXRvcjxUNT4gPihnNV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxU
Nj4gPihnNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUNz4gPihnN18p
LAorICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUOD4gPihnOF8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUOT4gPihnOV8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxQYXJhbUdlbmVyYXRvcjxUMTA+ID4oZzEwXykpKTsKKyAgfQorCisgcHJpdmF0ZToKKyAg
Ly8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgorICB2b2lk
IG9wZXJhdG9yPShjb25zdCBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyMTAmIG90aGVyKTsKKworICBj
b25zdCBHZW5lcmF0b3IxIGcxXzsKKyAgY29uc3QgR2VuZXJhdG9yMiBnMl87CisgIGNvbnN0IEdl
bmVyYXRvcjMgZzNfOworICBjb25zdCBHZW5lcmF0b3I0IGc0XzsKKyAgY29uc3QgR2VuZXJhdG9y
NSBnNV87CisgIGNvbnN0IEdlbmVyYXRvcjYgZzZfOworICBjb25zdCBHZW5lcmF0b3I3IGc3XzsK
KyAgY29uc3QgR2VuZXJhdG9yOCBnOF87CisgIGNvbnN0IEdlbmVyYXRvcjkgZzlfOworICBjb25z
dCBHZW5lcmF0b3IxMCBnMTBfOworfTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RIb2xkZXIx
MAorCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfQ09NQklORQorCit9ICAvLyBuYW1lc3BhY2UgaW50
ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCisKKyNlbmRpZiAgLy8gIEdURVNUX0hBU19Q
QVJBTV9URVNUCisKKyNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVT
VF9QQVJBTV9VVElMX0dFTkVSQVRFRF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVk
ZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oLnB1bXAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xldGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVk
LmgucHVtcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41YzdjNDdhZjBiYjFlODg5ODQ5MmUwNTQyNWU0MDM5N2E0ZDEy
ZjZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5h
bC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oLnB1bXAKQEAgLTAsMCArMSwyODYgQEAKKyQk
IC0qLSBtb2RlOiBjKys7IC0qLQorJHZhciBuID0gNTAgICQkIE1heGltdW0gbGVuZ3RoIG9mIFZh
bHVlcyBhcmd1bWVudHMgd2Ugd2FudCB0byBzdXBwb3J0LgorJHZhciBtYXh0dXBsZSA9IDEwICAk
JCBNYXhpbXVtIG51bWJlciBvZiBDb21iaW5lIGFyZ3VtZW50cyB3ZSB3YW50IHRvIHN1cHBvcnQu
CisvLyBDb3B5cmlnaHQgMjAwOCBHb29nbGUgSW5jLgorLy8gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
Ky8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8g
ZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8v
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBBdXRo
b3I6IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCisKKy8vIFR5cGUgYW5kIGZ1bmN0aW9u
IHV0aWxpdGllcyBmb3IgaW1wbGVtZW50aW5nIHBhcmFtZXRlcml6ZWQgdGVzdHMuCisvLyBUaGlz
IGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGEgU0NSSVBULiAgRE8gTk9UIEVESVQgQlkgSEFORCEKKy8v
CisvLyBDdXJyZW50bHkgR29vZ2xlIFRlc3Qgc3VwcG9ydHMgYXQgbW9zdCAkbiBhcmd1bWVudHMg
aW4gVmFsdWVzLAorLy8gYW5kIGF0IG1vc3QgJG1heHR1cGxlIGFyZ3VtZW50cyBpbiBDb21iaW5l
LiBQbGVhc2UgY29udGFjdAorLy8gZ29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29t
IGlmIHlvdSBuZWVkIG1vcmUuCisvLyBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBudW1iZXIgb2YgYXJn
dW1lbnRzIHRvIENvbWJpbmUgaXMgbGltaXRlZAorLy8gYnkgdGhlIG1heGltdW0gYXJpdHkgb2Yg
dGhlIGltcGxlbWVudGF0aW9uIG9mIHR1cGxlIHdoaWNoIGlzCisvLyBjdXJyZW50bHkgc2V0IGF0
ICRtYXh0dXBsZS4KKworI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNU
X1BBUkFNX1VUSUxfR0VORVJBVEVEX0hfCisjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5U
RVJOQUxfR1RFU1RfUEFSQU1fVVRJTF9HRU5FUkFURURfSF8KKworLy8gc2NyaXB0cy9mdXNlX2d0
ZXN0LnB5IGRlcGVuZHMgb24gZ3Rlc3QncyBvd24gaGVhZGVyIGJlaW5nICNpbmNsdWRlZAorLy8g
KnVuY29uZGl0aW9uYWxseSouICBUaGVyZWZvcmUgdGhlc2UgI2luY2x1ZGVzIGNhbm5vdCBiZSBt
b3ZlZAorLy8gaW5zaWRlICNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVC4KKyNpbmNsdWRlICJndGVz
dC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwv
Z3Rlc3QtcG9ydC5oIgorCisjaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKKworbmFtZXNwYWNlIHRl
c3RpbmcgeworCisvLyBGb3J3YXJkIGRlY2xhcmF0aW9ucyBvZiBWYWx1ZXNJbigpLCB3aGljaCBp
cyBpbXBsZW1lbnRlZCBpbgorLy8gaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmguCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yPgoraW50ZXJuYWw6OlBhcmFtR2VuZXJh
dG9yPAorICB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpJdGVyYXRvclRyYWl0czxGb3J3
YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPgorVmFsdWVzSW4oRm9yd2FyZEl0ZXJhdG9yIGJlZ2lu
LCBGb3J3YXJkSXRlcmF0b3IgZW5kKTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBO
PgoraW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPFQ+IFZhbHVlc0luKGNvbnN0IFQgKCZhcnJheSlb
Tl0pOworCit0ZW1wbGF0ZSA8Y2xhc3MgQ29udGFpbmVyPgoraW50ZXJuYWw6OlBhcmFtR2VuZXJh
dG9yPHR5cGVuYW1lIENvbnRhaW5lcjo6dmFsdWVfdHlwZT4gVmFsdWVzSW4oCisgICAgY29uc3Qg
Q29udGFpbmVyJiBjb250YWluZXIpOworCituYW1lc3BhY2UgaW50ZXJuYWwgeworCisvLyBVc2Vk
IGluIHRoZSBWYWx1ZXMoKSBmdW5jdGlvbiB0byBwcm92aWRlIHBvbHltb3JwaGljIGNhcGFiaWxp
dGllcy4KKyRyYW5nZSBpIDEuLm4KKyRmb3IgaSBbWworJHJhbmdlIGogMS4uaQorCit0ZW1wbGF0
ZSA8JGZvciBqLCBbW3R5cGVuYW1lIFQkal1dPgorY2xhc3MgVmFsdWVBcnJheSRpIHsKKyBwdWJs
aWM6CisgICRpZiBpPT0xIFtbZXhwbGljaXQgXV1WYWx1ZUFycmF5JGkoJGZvciBqLCBbW1QkaiB2
JGpdXSkgOiAkZm9yIGosIFtbdiQoailfKHYkaildXSB7fQorCisgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKKyAgICBjb25zdCBU
IGFycmF5W10gPSB7JGZvciBqLCBbW3N0YXRpY19jYXN0PFQ+KHYkKGopXyldXX07CisgICAgcmV0
dXJuIFZhbHVlc0luKGFycmF5KTsKKyAgfQorCisgcHJpdmF0ZToKKyAgLy8gTm8gaW1wbGVtZW50
YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgorICB2b2lkIG9wZXJhdG9yPShjb25z
dCBWYWx1ZUFycmF5JGkmIG90aGVyKTsKKworJGZvciBqIFtbCisKKyAgY29uc3QgVCRqIHYkKGop
XzsKK11dCisKK307CisKK11dCisKKyMgaWYgR1RFU1RfSEFTX0NPTUJJTkUKKy8vIElOVEVSTkFM
IElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBVU0VSIENPREUuCisvLworLy8gR2VuZXJh
dGVzIHZhbHVlcyBmcm9tIHRoZSBDYXJ0ZXNpYW4gcHJvZHVjdCBvZiB2YWx1ZXMgcHJvZHVjZWQK
Ky8vIGJ5IHRoZSBhcmd1bWVudCBnZW5lcmF0b3JzLgorLy8KKyRyYW5nZSBpIDIuLm1heHR1cGxl
CiskZm9yIGkgW1sKKyRyYW5nZSBqIDEuLmkKKyRyYW5nZSBrIDIuLmkKKwordGVtcGxhdGUgPCRm
b3IgaiwgW1t0eXBlbmFtZSBUJGpdXT4KK2NsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3Ik
aQorICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1cGxl
PCRmb3IgaiwgW1tUJGpdXT4gPiB7CisgcHVibGljOgorICB0eXBlZGVmIDo6dGVzdGluZzo6dHVw
bGU8JGZvciBqLCBbW1Qkal1dPiBQYXJhbVR5cGU7CisKKyAgQ2FydGVzaWFuUHJvZHVjdEdlbmVy
YXRvciRpKCRmb3IgaiwgW1tjb25zdCBQYXJhbUdlbmVyYXRvcjxUJGo+JiBnJGpdXSkKKyAgICAg
IDogJGZvciBqLCBbW2ckKGopXyhnJGopXV0ge30KKyAgdmlydHVhbCB+Q2FydGVzaWFuUHJvZHVj
dEdlbmVyYXRvciRpKCkge30KKworICB2aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFy
YW1UeXBlPiogQmVnaW4oKSBjb25zdCB7CisgICAgcmV0dXJuIG5ldyBJdGVyYXRvcih0aGlzLCAk
Zm9yIGosIFtbZyQoailfLCBnJChqKV8uYmVnaW4oKV1dKTsKKyAgfQorICB2aXJ0dWFsIFBhcmFt
SXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogRW5kKCkgY29uc3QgeworICAgIHJldHVybiBu
ZXcgSXRlcmF0b3IodGhpcywgJGZvciBqLCBbW2ckKGopXywgZyQoailfLmVuZCgpXV0pOworICB9
CisKKyBwcml2YXRlOgorICBjbGFzcyBJdGVyYXRvciA6IHB1YmxpYyBQYXJhbUl0ZXJhdG9ySW50
ZXJmYWNlPFBhcmFtVHlwZT4geworICAgcHVibGljOgorICAgIEl0ZXJhdG9yKGNvbnN0IFBhcmFt
R2VuZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIGJhc2UsICRmb3IgaiwgW1sKKworICAgICAg
Y29uc3QgUGFyYW1HZW5lcmF0b3I8VCRqPiYgZyRqLAorICAgICAgY29uc3QgdHlwZW5hbWUgUGFy
YW1HZW5lcmF0b3I8VCRqPjo6aXRlcmF0b3ImIGN1cnJlbnQkKGopXV0pCisgICAgICAgIDogYmFz
ZV8oYmFzZSksCiskZm9yIGosIFtbCisKKyAgICAgICAgICBiZWdpbiQoailfKGckai5iZWdpbigp
KSwgZW5kJChqKV8oZyRqLmVuZCgpKSwgY3VycmVudCQoailfKGN1cnJlbnQkaikKK11dICAgIHsK
KyAgICAgIENvbXB1dGVDdXJyZW50VmFsdWUoKTsKKyAgICB9CisgICAgdmlydHVhbCB+SXRlcmF0
b3IoKSB7fQorCisgICAgdmlydHVhbCBjb25zdCBQYXJhbUdlbmVyYXRvckludGVyZmFjZTxQYXJh
bVR5cGU+KiBCYXNlR2VuZXJhdG9yKCkgY29uc3QgeworICAgICAgcmV0dXJuIGJhc2VfOworICAg
IH0KKyAgICAvLyBBZHZhbmNlIHNob3VsZCBub3QgYmUgY2FsbGVkIG9uIGJleW9uZC1vZi1yYW5n
ZSBpdGVyYXRvcnMKKyAgICAvLyBzbyBubyBjb21wb25lbnQgaXRlcmF0b3JzIG11c3QgYmUgYmV5
b25kIGVuZCBvZiByYW5nZSwgZWl0aGVyLgorICAgIHZpcnR1YWwgdm9pZCBBZHZhbmNlKCkgewor
ICAgICAgYXNzZXJ0KCFBdEVuZCgpKTsKKyAgICAgICsrY3VycmVudCQoaSlfOworCiskZm9yIGsg
W1sKKyAgICAgIGlmIChjdXJyZW50JChpKzItaylfID09IGVuZCQoaSsyLWspXykgeworICAgICAg
ICBjdXJyZW50JChpKzItaylfID0gYmVnaW4kKGkrMi1rKV87CisgICAgICAgICsrY3VycmVudCQo
aSsyLWstMSlfOworICAgICAgfQorCitdXQorICAgICAgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgpOwor
ICAgIH0KKyAgICB2aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQ2xv
bmUoKSBjb25zdCB7CisgICAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKCp0aGlzKTsKKyAgICB9Cisg
ICAgdmlydHVhbCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiAmY3Vy
cmVudF92YWx1ZV87IH0KKyAgICB2aXJ0dWFsIGJvb2wgRXF1YWxzKGNvbnN0IFBhcmFtSXRlcmF0
b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiYgb3RoZXIpIGNvbnN0IHsKKyAgICAgIC8vIEhhdmluZyB0
aGUgc2FtZSBiYXNlIGdlbmVyYXRvciBndWFyYW50ZWVzIHRoYXQgdGhlIG90aGVyCisgICAgICAv
LyBpdGVyYXRvciBpcyBvZiB0aGUgc2FtZSB0eXBlIGFuZCB3ZSBjYW4gZG93bmNhc3QuCisgICAg
ICBHVEVTVF9DSEVDS18oQmFzZUdlbmVyYXRvcigpID09IG90aGVyLkJhc2VHZW5lcmF0b3IoKSkK
KyAgICAgICAgICA8PCAiVGhlIHByb2dyYW0gYXR0ZW1wdGVkIHRvIGNvbXBhcmUgaXRlcmF0b3Jz
ICIKKyAgICAgICAgICA8PCAiZnJvbSBkaWZmZXJlbnQgZ2VuZXJhdG9ycy4iIDw8IHN0ZDo6ZW5k
bDsKKyAgICAgIGNvbnN0IEl0ZXJhdG9yKiB0eXBlZF9vdGhlciA9CisgICAgICAgICAgQ2hlY2tl
ZERvd25jYXN0VG9BY3R1YWxUeXBlPGNvbnN0IEl0ZXJhdG9yPigmb3RoZXIpOworICAgICAgLy8g
V2UgbXVzdCByZXBvcnQgaXRlcmF0b3JzIGVxdWFsIGlmIHRoZXkgYm90aCBwb2ludCBiZXlvbmQg
dGhlaXIKKyAgICAgIC8vIHJlc3BlY3RpdmUgcmFuZ2VzLiBUaGF0IGNhbiBoYXBwZW4gaW4gYSB2
YXJpZXR5IG9mIGZhc2hpb25zLAorICAgICAgLy8gc28gd2UgaGF2ZSB0byBjb25zdWx0IEF0RW5k
KCkuCisgICAgICByZXR1cm4gKEF0RW5kKCkgJiYgdHlwZWRfb3RoZXItPkF0RW5kKCkpIHx8Cisg
ICAgICAgICAoJGZvciBqICAmJiBbWworCisgICAgICAgICAgY3VycmVudCQoailfID09IHR5cGVk
X290aGVyLT5jdXJyZW50JChqKV8KK11dKTsKKyAgICB9CisKKyAgIHByaXZhdGU6CisgICAgSXRl
cmF0b3IoY29uc3QgSXRlcmF0b3ImIG90aGVyKQorICAgICAgICA6IGJhc2VfKG90aGVyLmJhc2Vf
KSwgJGZvciBqLCBbWworCisgICAgICAgIGJlZ2luJChqKV8ob3RoZXIuYmVnaW4kKGopXyksCisg
ICAgICAgIGVuZCQoailfKG90aGVyLmVuZCQoailfKSwKKyAgICAgICAgY3VycmVudCQoailfKG90
aGVyLmN1cnJlbnQkKGopXykKK11dIHsKKyAgICAgIENvbXB1dGVDdXJyZW50VmFsdWUoKTsKKyAg
ICB9CisKKyAgICB2b2lkIENvbXB1dGVDdXJyZW50VmFsdWUoKSB7CisgICAgICBpZiAoIUF0RW5k
KCkpCisgICAgICAgIGN1cnJlbnRfdmFsdWVfID0gUGFyYW1UeXBlKCRmb3IgaiwgW1sqY3VycmVu
dCQoailfXV0pOworICAgIH0KKyAgICBib29sIEF0RW5kKCkgY29uc3QgeworICAgICAgLy8gV2Ug
bXVzdCByZXBvcnQgaXRlcmF0b3IgcGFzdCB0aGUgZW5kIG9mIHRoZSByYW5nZSB3aGVuIGVpdGhl
ciBvZiB0aGUKKyAgICAgIC8vIGNvbXBvbmVudCBpdGVyYXRvcnMgaGFzIHJlYWNoZWQgdGhlIGVu
ZCBvZiBpdHMgcmFuZ2UuCisgICAgICByZXR1cm4KKyRmb3IgaiAgfHwgW1sKKworICAgICAgICAg
IGN1cnJlbnQkKGopXyA9PSBlbmQkKGopXworXV07CisgICAgfQorCisgICAgLy8gTm8gaW1wbGVt
ZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgorICAgIHZvaWQgb3BlcmF0b3I9
KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcik7CisKKyAgICBjb25zdCBQYXJhbUdlbmVyYXRvckludGVy
ZmFjZTxQYXJhbVR5cGU+KiBjb25zdCBiYXNlXzsKKyAgICAvLyBiZWdpbltpXV8gYW5kIGVuZFtp
XV8gZGVmaW5lIHRoZSBpLXRoIHJhbmdlIHRoYXQgSXRlcmF0b3IgdHJhdmVyc2VzLgorICAgIC8v
IGN1cnJlbnRbaV1fIGlzIHRoZSBhY3R1YWwgdHJhdmVyc2luZyBpdGVyYXRvci4KKyRmb3IgaiBb
WworCisgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VCRqPjo6aXRlcmF0b3IgYmVn
aW4kKGopXzsKKyAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUJGo+OjppdGVyYXRv
ciBlbmQkKGopXzsKKyAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUJGo+OjppdGVyYXRvciBj
dXJyZW50JChqKV87CitdXQorCisgICAgUGFyYW1UeXBlIGN1cnJlbnRfdmFsdWVfOworICB9OyAg
Ly8gY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvciRpOjpJdGVyYXRvcgorCisgIC8vIE5v
IGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KKyAgdm9pZCBvcGVy
YXRvcj0oY29uc3QgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvciRpJiBvdGhlcik7CisKKworJGZv
ciBqIFtbCisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQkaj4gZyQoailfOworCitdXQorfTsgIC8v
IGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IkaQorCisKK11dCisKKy8vIElOVEVSTkFM
IElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBVU0VSIENPREUuCisvLworLy8gSGVscGVy
IGNsYXNzZXMgcHJvdmlkaW5nIENvbWJpbmUoKSB3aXRoIHBvbHltb3JwaGljIGZlYXR1cmVzLiBU
aGV5IGFsbG93CisvLyBjYXN0aW5nIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3JOPFQ+IHRvIFBh
cmFtR2VuZXJhdG9yPFU+IGlmIFQgaXMKKy8vIGNvbnZlcnRpYmxlIHRvIFUuCisvLworJHJhbmdl
IGkgMi4ubWF4dHVwbGUKKyRmb3IgaSBbWworJHJhbmdlIGogMS4uaQorCit0ZW1wbGF0ZSA8JGZv
ciBqLCBbW2NsYXNzIEdlbmVyYXRvciRqXV0+CitjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVy
JGkgeworIHB1YmxpYzoKK0NhcnRlc2lhblByb2R1Y3RIb2xkZXIkaSgkZm9yIGosIFtbY29uc3Qg
R2VuZXJhdG9yJGomIGckal1dKQorICAgICAgOiAkZm9yIGosIFtbZyQoailfKGckaildXSB7fQor
ICB0ZW1wbGF0ZSA8JGZvciBqLCBbW3R5cGVuYW1lIFQkal1dPgorICBvcGVyYXRvciBQYXJhbUdl
bmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTwkZm9yIGosIFtbVCRqXV0+ID4oKSBjb25zdCB7Cisg
ICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPCRmb3IgaiwgW1tUJGpd
XT4gPigKKyAgICAgICAgbmV3IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IkaTwkZm9yIGosIFtb
VCRqXV0+KAorJGZvciBqLFtbCisKKyAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8
VCRqPiA+KGckKGopXykKK11dKSk7CisgIH0KKworIHByaXZhdGU6CisgIC8vIE5vIGltcGxlbWVu
dGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KKyAgdm9pZCBvcGVyYXRvcj0oY29u
c3QgQ2FydGVzaWFuUHJvZHVjdEhvbGRlciRpJiBvdGhlcik7CisKKworJGZvciBqIFtbCisgIGNv
bnN0IEdlbmVyYXRvciRqIGckKGopXzsKKworXV0KK307ICAvLyBjbGFzcyBDYXJ0ZXNpYW5Qcm9k
dWN0SG9sZGVyJGkKKworXV0KKworIyBlbmRpZiAgLy8gR1RFU1RfSEFTX0NPTUJJTkUKKworfSAg
Ly8gbmFtZXNwYWNlIGludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZworCisjZW5kaWYg
IC8vICBHVEVTVF9IQVNfUEFSQU1fVEVTVAorCisjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RF
U1RfSU5URVJOQUxfR1RFU1RfUEFSQU1fVVRJTF9HRU5FUkFURURfSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMzE0MmY3NDJhMDkxMGY3Nzk2MWFjYmY2NTUxNThkMTQyYTE1M2ZhMAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0t
dXRpbC5oCkBAIC0wLDAgKzEsNzMwIEBACisvLyBDb3B5cmlnaHQgMjAwOCBHb29nbGUgSW5jLgor
Ly8gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
Ly8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8g
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKy8vCisvLyBBdXRob3I6IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYp
CisKKy8vIFR5cGUgYW5kIGZ1bmN0aW9uIHV0aWxpdGllcyBmb3IgaW1wbGVtZW50aW5nIHBhcmFt
ZXRlcml6ZWQgdGVzdHMuCisKKyNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9H
VEVTVF9QQVJBTV9VVElMX0hfCisjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxf
R1RFU1RfUEFSQU1fVVRJTF9IXworCisjaW5jbHVkZSA8Y3R5cGUuaD4KKworI2luY2x1ZGUgPGl0
ZXJhdG9yPgorI2luY2x1ZGUgPHNldD4KKyNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgPHZl
Y3Rvcj4KKworLy8gc2NyaXB0cy9mdXNlX2d0ZXN0LnB5IGRlcGVuZHMgb24gZ3Rlc3QncyBvd24g
aGVhZGVyIGJlaW5nICNpbmNsdWRlZAorLy8gKnVuY29uZGl0aW9uYWxseSouICBUaGVyZWZvcmUg
dGhlc2UgI2luY2x1ZGVzIGNhbm5vdCBiZSBtb3ZlZAorLy8gaW5zaWRlICNpZiBHVEVTVF9IQVNf
UEFSQU1fVEVTVC4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5oIgor
I2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWxpbmtlZF9wdHIuaCIKKyNpbmNsdWRlICJn
dGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtcHJpbnRl
cnMuaCIKKworI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCisKK25hbWVzcGFjZSB0ZXN0aW5nIHsK
KworLy8gSW5wdXQgdG8gYSBwYXJhbWV0ZXJpemVkIHRlc3QgbmFtZSBnZW5lcmF0b3IsIGRlc2Ny
aWJpbmcgYSB0ZXN0IHBhcmFtZXRlci4KKy8vIENvbnNpc3RzIG9mIHRoZSBwYXJhbWV0ZXIgdmFs
dWUgYW5kIHRoZSBpbnRlZ2VyIHBhcmFtZXRlciBpbmRleC4KK3RlbXBsYXRlIDxjbGFzcyBQYXJh
bVR5cGU+CitzdHJ1Y3QgVGVzdFBhcmFtSW5mbyB7CisgIFRlc3RQYXJhbUluZm8oY29uc3QgUGFy
YW1UeXBlJiBhX3BhcmFtLCBzaXplX3QgYW5faW5kZXgpIDoKKyAgICBwYXJhbShhX3BhcmFtKSwK
KyAgICBpbmRleChhbl9pbmRleCkge30KKyAgUGFyYW1UeXBlIHBhcmFtOworICBzaXplX3QgaW5k
ZXg7Cit9OworCisvLyBBIGJ1aWx0aW4gcGFyYW1ldGVyaXplZCB0ZXN0IG5hbWUgZ2VuZXJhdG9y
IHdoaWNoIHJldHVybnMgdGhlIHJlc3VsdCBvZgorLy8gdGVzdGluZzo6UHJpbnRUb1N0cmluZy4K
K3N0cnVjdCBQcmludFRvU3RyaW5nUGFyYW1OYW1lIHsKKyAgdGVtcGxhdGUgPGNsYXNzIFBhcmFt
VHlwZT4KKyAgc3RkOjpzdHJpbmcgb3BlcmF0b3IoKShjb25zdCBUZXN0UGFyYW1JbmZvPFBhcmFt
VHlwZT4mIGluZm8pIGNvbnN0IHsKKyAgICByZXR1cm4gUHJpbnRUb1N0cmluZyhpbmZvLnBhcmFt
KTsKKyAgfQorfTsKKworbmFtZXNwYWNlIGludGVybmFsIHsKKworLy8gSU5URVJOQUwgSU1QTEVN
RU5UQVRJT04gLSBETyBOT1QgVVNFIElOIFVTRVIgQ09ERS4KKy8vCisvLyBPdXRwdXRzIGEgbWVz
c2FnZSBleHBsYWluaW5nIGludmFsaWQgcmVnaXN0cmF0aW9uIG9mIGRpZmZlcmVudAorLy8gZml4
dHVyZSBjbGFzcyBmb3IgdGhlIHNhbWUgdGVzdCBjYXNlLiBUaGlzIG1heSBoYXBwZW4gd2hlbgor
Ly8gVEVTVF9QIG1hY3JvIGlzIHVzZWQgdG8gZGVmaW5lIHR3byB0ZXN0cyB3aXRoIHRoZSBzYW1l
IG5hbWUKKy8vIGJ1dCBpbiBkaWZmZXJlbnQgbmFtZXNwYWNlcy4KK0dURVNUX0FQSV8gdm9pZCBS
ZXBvcnRJbnZhbGlkVGVzdENhc2VUeXBlKGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29kZUxvY2F0aW9uIGNvZGVf
bG9jYXRpb24pOworCit0ZW1wbGF0ZSA8dHlwZW5hbWU+IGNsYXNzIFBhcmFtR2VuZXJhdG9ySW50
ZXJmYWNlOwordGVtcGxhdGUgPHR5cGVuYW1lPiBjbGFzcyBQYXJhbUdlbmVyYXRvcjsKKworLy8g
SW50ZXJmYWNlIGZvciBpdGVyYXRpbmcgb3ZlciBlbGVtZW50cyBwcm92aWRlZCBieSBhbiBpbXBs
ZW1lbnRhdGlvbgorLy8gb2YgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8VD4uCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KK2NsYXNzIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2UgeworIHB1YmxpYzoKKyAg
dmlydHVhbCB+UGFyYW1JdGVyYXRvckludGVyZmFjZSgpIHt9CisgIC8vIEEgcG9pbnRlciB0byB0
aGUgYmFzZSBnZW5lcmF0b3IgaW5zdGFuY2UuCisgIC8vIFVzZWQgb25seSBmb3IgdGhlIHB1cnBv
c2VzIG9mIGl0ZXJhdG9yIGNvbXBhcmlzb24KKyAgLy8gdG8gbWFrZSBzdXJlIHRoYXQgdHdvIGl0
ZXJhdG9ycyBiZWxvbmcgdG8gdGhlIHNhbWUgZ2VuZXJhdG9yLgorICB2aXJ0dWFsIGNvbnN0IFBh
cmFtR2VuZXJhdG9ySW50ZXJmYWNlPFQ+KiBCYXNlR2VuZXJhdG9yKCkgY29uc3QgPSAwOworICAv
LyBBZHZhbmNlcyBpdGVyYXRvciB0byBwb2ludCB0byB0aGUgbmV4dCBlbGVtZW50CisgIC8vIHBy
b3ZpZGVkIGJ5IHRoZSBnZW5lcmF0b3IuIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUKKyAgLy8g
Zm9yIG5vdCBjYWxsaW5nIEFkdmFuY2UoKSBvbiBhbiBpdGVyYXRvciBlcXVhbCB0bworICAvLyBC
YXNlR2VuZXJhdG9yKCktPkVuZCgpLgorICB2aXJ0dWFsIHZvaWQgQWR2YW5jZSgpID0gMDsKKyAg
Ly8gQ2xvbmVzIHRoZSBpdGVyYXRvciBvYmplY3QuIFVzZWQgZm9yIGltcGxlbWVudGluZyBjb3B5
IHNlbWFudGljcworICAvLyBvZiBQYXJhbUl0ZXJhdG9yPFQ+LgorICB2aXJ0dWFsIFBhcmFtSXRl
cmF0b3JJbnRlcmZhY2UqIENsb25lKCkgY29uc3QgPSAwOworICAvLyBEZXJlZmVyZW5jZXMgdGhl
IGN1cnJlbnQgaXRlcmF0b3IgYW5kIHByb3ZpZGVzIChyZWFkLW9ubHkpIGFjY2VzcworICAvLyB0
byB0aGUgcG9pbnRlZCB2YWx1ZS4gSXQgaXMgdGhlIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5IG5v
dCB0byBjYWxsCisgIC8vIEN1cnJlbnQoKSBvbiBhbiBpdGVyYXRvciBlcXVhbCB0byBCYXNlR2Vu
ZXJhdG9yKCktPkVuZCgpLgorICAvLyBVc2VkIGZvciBpbXBsZW1lbnRpbmcgUGFyYW1HZW5lcmF0
b3I8VD46Om9wZXJhdG9yKigpLgorICB2aXJ0dWFsIGNvbnN0IFQqIEN1cnJlbnQoKSBjb25zdCA9
IDA7CisgIC8vIERldGVybWluZXMgd2hldGhlciB0aGUgZ2l2ZW4gaXRlcmF0b3IgYW5kIG90aGVy
IHBvaW50IHRvIHRoZSBzYW1lCisgIC8vIGVsZW1lbnQgaW4gdGhlIHNlcXVlbmNlIGdlbmVyYXRl
ZCBieSB0aGUgZ2VuZXJhdG9yLgorICAvLyBVc2VkIGZvciBpbXBsZW1lbnRpbmcgUGFyYW1HZW5l
cmF0b3I8VD46Om9wZXJhdG9yPT0oKS4KKyAgdmlydHVhbCBib29sIEVxdWFscyhjb25zdCBQYXJh
bUl0ZXJhdG9ySW50ZXJmYWNlJiBvdGhlcikgY29uc3QgPSAwOworfTsKKworLy8gQ2xhc3MgaXRl
cmF0aW5nIG92ZXIgZWxlbWVudHMgcHJvdmlkZWQgYnkgYW4gaW1wbGVtZW50YXRpb24gb2YKKy8v
IFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFQ+LiBJdCB3cmFwcyBQYXJhbUl0ZXJhdG9ySW50ZXJm
YWNlPFQ+CisvLyBhbmQgaW1wbGVtZW50cyB0aGUgY29uc3QgZm9yd2FyZCBpdGVyYXRvciBjb25j
ZXB0LgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBQYXJhbUl0ZXJhdG9yIHsKKyBwdWJs
aWM6CisgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOworICB0eXBlZGVmIGNvbnN0IFQmIHJlZmVyZW5j
ZTsKKyAgdHlwZWRlZiBwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBlOworCisgIC8vIFBhcmFtSXRl
cmF0b3IgYXNzdW1lcyBvd25lcnNoaXAgb2YgdGhlIGltcGxfIHBvaW50ZXIuCisgIFBhcmFtSXRl
cmF0b3IoY29uc3QgUGFyYW1JdGVyYXRvciYgb3RoZXIpIDogaW1wbF8ob3RoZXIuaW1wbF8tPkNs
b25lKCkpIHt9CisgIFBhcmFtSXRlcmF0b3ImIG9wZXJhdG9yPShjb25zdCBQYXJhbUl0ZXJhdG9y
JiBvdGhlcikgeworICAgIGlmICh0aGlzICE9ICZvdGhlcikKKyAgICAgIGltcGxfLnJlc2V0KG90
aGVyLmltcGxfLT5DbG9uZSgpKTsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKworICBjb25zdCBU
JiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiAqaW1wbF8tPkN1cnJlbnQoKTsgfQorICBjb25z
dCBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gaW1wbF8tPkN1cnJlbnQoKTsgfQorICAv
LyBQcmVmaXggdmVyc2lvbiBvZiBvcGVyYXRvcisrLgorICBQYXJhbUl0ZXJhdG9yJiBvcGVyYXRv
cisrKCkgeworICAgIGltcGxfLT5BZHZhbmNlKCk7CisgICAgcmV0dXJuICp0aGlzOworICB9Cisg
IC8vIFBvc3RmaXggdmVyc2lvbiBvZiBvcGVyYXRvcisrLgorICBQYXJhbUl0ZXJhdG9yIG9wZXJh
dG9yKysoaW50IC8qdW51c2VkKi8pIHsKKyAgICBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFQ+KiBj
bG9uZSA9IGltcGxfLT5DbG9uZSgpOworICAgIGltcGxfLT5BZHZhbmNlKCk7CisgICAgcmV0dXJu
IFBhcmFtSXRlcmF0b3IoY2xvbmUpOworICB9CisgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQYXJh
bUl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeworICAgIHJldHVybiBpbXBsXy5nZXQoKSA9PSBvdGhl
ci5pbXBsXy5nZXQoKSB8fCBpbXBsXy0+RXF1YWxzKCpvdGhlci5pbXBsXyk7CisgIH0KKyAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFBhcmFtSXRlcmF0b3ImIG90aGVyKSBjb25zdCB7CisgICAgcmV0
dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICB9CisKKyBwcml2YXRlOgorICBmcmllbmQgY2xhc3Mg
UGFyYW1HZW5lcmF0b3I8VD47CisgIGV4cGxpY2l0IFBhcmFtSXRlcmF0b3IoUGFyYW1JdGVyYXRv
ckludGVyZmFjZTxUPiogaW1wbCkgOiBpbXBsXyhpbXBsKSB7fQorICBzY29wZWRfcHRyPFBhcmFt
SXRlcmF0b3JJbnRlcmZhY2U8VD4gPiBpbXBsXzsKK307CisKKy8vIFBhcmFtR2VuZXJhdG9ySW50
ZXJmYWNlPFQ+IGlzIHRoZSBiaW5hcnkgaW50ZXJmYWNlIHRvIGFjY2VzcyBnZW5lcmF0b3JzCisv
LyBkZWZpbmVkIGluIG90aGVyIHRyYW5zbGF0aW9uIHVuaXRzLgordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CitjbGFzcyBQYXJhbUdlbmVyYXRvckludGVyZmFjZSB7CisgcHVibGljOgorICB0eXBlZGVm
IFQgUGFyYW1UeXBlOworCisgIHZpcnR1YWwgflBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlKCkge30K
KworICAvLyBHZW5lcmF0b3IgaW50ZXJmYWNlIGRlZmluaXRpb24KKyAgdmlydHVhbCBQYXJhbUl0
ZXJhdG9ySW50ZXJmYWNlPFQ+KiBCZWdpbigpIGNvbnN0ID0gMDsKKyAgdmlydHVhbCBQYXJhbUl0
ZXJhdG9ySW50ZXJmYWNlPFQ+KiBFbmQoKSBjb25zdCA9IDA7Cit9OworCisvLyBXcmFwcyBQYXJh
bUdlbmVyYXRvckludGVyZmFjZTxUPiBhbmQgcHJvdmlkZXMgZ2VuZXJhbCBnZW5lcmF0b3Igc3lu
dGF4CisvLyBjb21wYXRpYmxlIHdpdGggdGhlIFNUTCBDb250YWluZXIgY29uY2VwdC4KKy8vIFRo
aXMgY2xhc3MgaW1wbGVtZW50cyBjb3B5IGluaXRpYWxpemF0aW9uIHNlbWFudGljcyBhbmQgdGhl
IGNvbnRhaW5lZAorLy8gUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8VD4gaW5zdGFuY2UgaXMgc2hh
cmVkIGFtb25nIGFsbCBjb3BpZXMKKy8vIG9mIHRoZSBvcmlnaW5hbCBvYmplY3QuIFRoaXMgaXMg
cG9zc2libGUgYmVjYXVzZSB0aGF0IGluc3RhbmNlIGlzIGltbXV0YWJsZS4KK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+CitjbGFzcyBQYXJhbUdlbmVyYXRvciB7CisgcHVibGljOgorICB0eXBlZGVmIFBh
cmFtSXRlcmF0b3I8VD4gaXRlcmF0b3I7CisKKyAgZXhwbGljaXQgUGFyYW1HZW5lcmF0b3IoUGFy
YW1HZW5lcmF0b3JJbnRlcmZhY2U8VD4qIGltcGwpIDogaW1wbF8oaW1wbCkge30KKyAgUGFyYW1H
ZW5lcmF0b3IoY29uc3QgUGFyYW1HZW5lcmF0b3ImIG90aGVyKSA6IGltcGxfKG90aGVyLmltcGxf
KSB7fQorCisgIFBhcmFtR2VuZXJhdG9yJiBvcGVyYXRvcj0oY29uc3QgUGFyYW1HZW5lcmF0b3Im
IG90aGVyKSB7CisgICAgaW1wbF8gPSBvdGhlci5pbXBsXzsKKyAgICByZXR1cm4gKnRoaXM7Cisg
IH0KKworICBpdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGl0ZXJhdG9yKGltcGxfLT5C
ZWdpbigpKTsgfQorICBpdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBpdGVyYXRvcihpbXBs
Xy0+RW5kKCkpOyB9CisKKyBwcml2YXRlOgorICBsaW5rZWRfcHRyPGNvbnN0IFBhcmFtR2VuZXJh
dG9ySW50ZXJmYWNlPFQ+ID4gaW1wbF87Cit9OworCisvLyBHZW5lcmF0ZXMgdmFsdWVzIGZyb20g
YSByYW5nZSBvZiB0d28gY29tcGFyYWJsZSB2YWx1ZXMuIENhbiBiZSB1c2VkIHRvCisvLyBnZW5l
cmF0ZSBzZXF1ZW5jZXMgb2YgdXNlci1kZWZpbmVkIHR5cGVzIHRoYXQgaW1wbGVtZW50IG9wZXJh
dG9yKygpIGFuZAorLy8gb3BlcmF0b3I8KCkuCisvLyBUaGlzIGNsYXNzIGlzIHVzZWQgaW4gdGhl
IFJhbmdlKCkgZnVuY3Rpb24uCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSW5jcmVt
ZW50VD4KK2NsYXNzIFJhbmdlR2VuZXJhdG9yIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJm
YWNlPFQ+IHsKKyBwdWJsaWM6CisgIFJhbmdlR2VuZXJhdG9yKFQgYmVnaW4sIFQgZW5kLCBJbmNy
ZW1lbnRUIHN0ZXApCisgICAgICA6IGJlZ2luXyhiZWdpbiksIGVuZF8oZW5kKSwKKyAgICAgICAg
c3RlcF8oc3RlcCksIGVuZF9pbmRleF8oQ2FsY3VsYXRlRW5kSW5kZXgoYmVnaW4sIGVuZCwgc3Rl
cCkpIHt9CisgIHZpcnR1YWwgflJhbmdlR2VuZXJhdG9yKCkge30KKworICB2aXJ0dWFsIFBhcmFt
SXRlcmF0b3JJbnRlcmZhY2U8VD4qIEJlZ2luKCkgY29uc3QgeworICAgIHJldHVybiBuZXcgSXRl
cmF0b3IodGhpcywgYmVnaW5fLCAwLCBzdGVwXyk7CisgIH0KKyAgdmlydHVhbCBQYXJhbUl0ZXJh
dG9ySW50ZXJmYWNlPFQ+KiBFbmQoKSBjb25zdCB7CisgICAgcmV0dXJuIG5ldyBJdGVyYXRvcih0
aGlzLCBlbmRfLCBlbmRfaW5kZXhfLCBzdGVwXyk7CisgIH0KKworIHByaXZhdGU6CisgIGNsYXNz
IEl0ZXJhdG9yIDogcHVibGljIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8VD4geworICAgcHVibGlj
OgorICAgIEl0ZXJhdG9yKGNvbnN0IFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFQ+KiBiYXNlLCBU
IHZhbHVlLCBpbnQgaW5kZXgsCisgICAgICAgICAgICAgSW5jcmVtZW50VCBzdGVwKQorICAgICAg
ICA6IGJhc2VfKGJhc2UpLCB2YWx1ZV8odmFsdWUpLCBpbmRleF8oaW5kZXgpLCBzdGVwXyhzdGVw
KSB7fQorICAgIHZpcnR1YWwgfkl0ZXJhdG9yKCkge30KKworICAgIHZpcnR1YWwgY29uc3QgUGFy
YW1HZW5lcmF0b3JJbnRlcmZhY2U8VD4qIEJhc2VHZW5lcmF0b3IoKSBjb25zdCB7CisgICAgICBy
ZXR1cm4gYmFzZV87CisgICAgfQorICAgIHZpcnR1YWwgdm9pZCBBZHZhbmNlKCkgeworICAgICAg
dmFsdWVfID0gc3RhdGljX2Nhc3Q8VD4odmFsdWVfICsgc3RlcF8pOworICAgICAgaW5kZXhfKys7
CisgICAgfQorICAgIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxUPiogQ2xvbmUoKSBj
b25zdCB7CisgICAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKCp0aGlzKTsKKyAgICB9CisgICAgdmly
dHVhbCBjb25zdCBUKiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4gJnZhbHVlXzsgfQorICAgIHZp
cnR1YWwgYm9vbCBFcXVhbHMoY29uc3QgUGFyYW1JdGVyYXRvckludGVyZmFjZTxUPiYgb3RoZXIp
IGNvbnN0IHsKKyAgICAgIC8vIEhhdmluZyB0aGUgc2FtZSBiYXNlIGdlbmVyYXRvciBndWFyYW50
ZWVzIHRoYXQgdGhlIG90aGVyCisgICAgICAvLyBpdGVyYXRvciBpcyBvZiB0aGUgc2FtZSB0eXBl
IGFuZCB3ZSBjYW4gZG93bmNhc3QuCisgICAgICBHVEVTVF9DSEVDS18oQmFzZUdlbmVyYXRvcigp
ID09IG90aGVyLkJhc2VHZW5lcmF0b3IoKSkKKyAgICAgICAgICA8PCAiVGhlIHByb2dyYW0gYXR0
ZW1wdGVkIHRvIGNvbXBhcmUgaXRlcmF0b3JzICIKKyAgICAgICAgICA8PCAiZnJvbSBkaWZmZXJl
bnQgZ2VuZXJhdG9ycy4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgIGNvbnN0IGludCBvdGhlcl9pbmRl
eCA9CisgICAgICAgICAgQ2hlY2tlZERvd25jYXN0VG9BY3R1YWxUeXBlPGNvbnN0IEl0ZXJhdG9y
Pigmb3RoZXIpLT5pbmRleF87CisgICAgICByZXR1cm4gaW5kZXhfID09IG90aGVyX2luZGV4Owor
ICAgIH0KKworICAgcHJpdmF0ZToKKyAgICBJdGVyYXRvcihjb25zdCBJdGVyYXRvciYgb3RoZXIp
CisgICAgICAgIDogUGFyYW1JdGVyYXRvckludGVyZmFjZTxUPigpLAorICAgICAgICAgIGJhc2Vf
KG90aGVyLmJhc2VfKSwgdmFsdWVfKG90aGVyLnZhbHVlXyksIGluZGV4XyhvdGhlci5pbmRleF8p
LAorICAgICAgICAgIHN0ZXBfKG90aGVyLnN0ZXBfKSB7fQorCisgICAgLy8gTm8gaW1wbGVtZW50
YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgorICAgIHZvaWQgb3BlcmF0b3I9KGNv
bnN0IEl0ZXJhdG9yJiBvdGhlcik7CisKKyAgICBjb25zdCBQYXJhbUdlbmVyYXRvckludGVyZmFj
ZTxUPiogY29uc3QgYmFzZV87CisgICAgVCB2YWx1ZV87CisgICAgaW50IGluZGV4XzsKKyAgICBj
b25zdCBJbmNyZW1lbnRUIHN0ZXBfOworICB9OyAgLy8gY2xhc3MgUmFuZ2VHZW5lcmF0b3I6Okl0
ZXJhdG9yCisKKyAgc3RhdGljIGludCBDYWxjdWxhdGVFbmRJbmRleChjb25zdCBUJiBiZWdpbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUJiBlbmQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW5jcmVtZW50VCYgc3RlcCkgeworICAgIGludCBl
bmRfaW5kZXggPSAwOworICAgIGZvciAoVCBpID0gYmVnaW47IGkgPCBlbmQ7IGkgPSBzdGF0aWNf
Y2FzdDxUPihpICsgc3RlcCkpCisgICAgICBlbmRfaW5kZXgrKzsKKyAgICByZXR1cm4gZW5kX2lu
ZGV4OworICB9CisKKyAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3Vw
cG9ydGVkLgorICB2b2lkIG9wZXJhdG9yPShjb25zdCBSYW5nZUdlbmVyYXRvciYgb3RoZXIpOwor
CisgIGNvbnN0IFQgYmVnaW5fOworICBjb25zdCBUIGVuZF87CisgIGNvbnN0IEluY3JlbWVudFQg
c3RlcF87CisgIC8vIFRoZSBpbmRleCBmb3IgdGhlIGVuZCgpIGl0ZXJhdG9yLiBBbGwgdGhlIGVs
ZW1lbnRzIGluIHRoZSBnZW5lcmF0ZWQKKyAgLy8gc2VxdWVuY2UgYXJlIGluZGV4ZWQgKDAtYmFz
ZWQpIHRvIGFpZCBpdGVyYXRvciBjb21wYXJpc29uLgorICBjb25zdCBpbnQgZW5kX2luZGV4XzsK
K307ICAvLyBjbGFzcyBSYW5nZUdlbmVyYXRvcgorCisKKy8vIEdlbmVyYXRlcyB2YWx1ZXMgZnJv
bSBhIHBhaXIgb2YgU1RMLXN0eWxlIGl0ZXJhdG9ycy4gVXNlZCBpbiB0aGUKKy8vIFZhbHVlc0lu
KCkgZnVuY3Rpb24uIFRoZSBlbGVtZW50cyBhcmUgY29waWVkIGZyb20gdGhlIHNvdXJjZSByYW5n
ZQorLy8gc2luY2UgdGhlIHNvdXJjZSBjYW4gYmUgbG9jYXRlZCBvbiB0aGUgc3RhY2ssIGFuZCB0
aGUgZ2VuZXJhdG9yCisvLyBpcyBsaWtlbHkgdG8gcGVyc2lzdCBiZXlvbmQgdGhhdCBzdGFjayBm
cmFtZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVmFsdWVzSW5JdGVyYXRvclJhbmdl
R2VuZXJhdG9yIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFQ+IHsKKyBwdWJsaWM6
CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3I+CisgIFZhbHVlc0luSXRlcmF0
b3JSYW5nZUdlbmVyYXRvcihGb3J3YXJkSXRlcmF0b3IgYmVnaW4sIEZvcndhcmRJdGVyYXRvciBl
bmQpCisgICAgICA6IGNvbnRhaW5lcl8oYmVnaW4sIGVuZCkge30KKyAgdmlydHVhbCB+VmFsdWVz
SW5JdGVyYXRvclJhbmdlR2VuZXJhdG9yKCkge30KKworICB2aXJ0dWFsIFBhcmFtSXRlcmF0b3JJ
bnRlcmZhY2U8VD4qIEJlZ2luKCkgY29uc3QgeworICAgIHJldHVybiBuZXcgSXRlcmF0b3IodGhp
cywgY29udGFpbmVyXy5iZWdpbigpKTsKKyAgfQorICB2aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRl
cmZhY2U8VD4qIEVuZCgpIGNvbnN0IHsKKyAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKHRoaXMsIGNv
bnRhaW5lcl8uZW5kKCkpOworICB9CisKKyBwcml2YXRlOgorICB0eXBlZGVmIHR5cGVuYW1lIDo6
c3RkOjp2ZWN0b3I8VD4gQ29udGFpbmVyVHlwZTsKKworICBjbGFzcyBJdGVyYXRvciA6IHB1Ymxp
YyBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFQ+IHsKKyAgIHB1YmxpYzoKKyAgICBJdGVyYXRvcihj
b25zdCBQYXJhbUdlbmVyYXRvckludGVyZmFjZTxUPiogYmFzZSwKKyAgICAgICAgICAgICB0eXBl
bmFtZSBDb250YWluZXJUeXBlOjpjb25zdF9pdGVyYXRvciBpdGVyYXRvcikKKyAgICAgICAgOiBi
YXNlXyhiYXNlKSwgaXRlcmF0b3JfKGl0ZXJhdG9yKSB7fQorICAgIHZpcnR1YWwgfkl0ZXJhdG9y
KCkge30KKworICAgIHZpcnR1YWwgY29uc3QgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8VD4qIEJh
c2VHZW5lcmF0b3IoKSBjb25zdCB7CisgICAgICByZXR1cm4gYmFzZV87CisgICAgfQorICAgIHZp
cnR1YWwgdm9pZCBBZHZhbmNlKCkgeworICAgICAgKytpdGVyYXRvcl87CisgICAgICB2YWx1ZV8u
cmVzZXQoKTsKKyAgICB9CisgICAgdmlydHVhbCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFQ+KiBD
bG9uZSgpIGNvbnN0IHsKKyAgICAgIHJldHVybiBuZXcgSXRlcmF0b3IoKnRoaXMpOworICAgIH0K
KyAgICAvLyBXZSBuZWVkIHRvIHVzZSBjYWNoZWQgdmFsdWUgcmVmZXJlbmNlZCBieSBpdGVyYXRv
cl8gYmVjYXVzZSAqaXRlcmF0b3JfCisgICAgLy8gY2FuIHJldHVybiBhIHRlbXBvcmFyeSBvYmpl
Y3QgKGFuZCBvZiB0eXBlIG90aGVyIHRoZW4gVCksIHNvIGp1c3QKKyAgICAvLyBoYXZpbmcgInJl
dHVybiAmKml0ZXJhdG9yXzsiIGRvZXNuJ3Qgd29yay4KKyAgICAvLyB2YWx1ZV8gaXMgdXBkYXRl
ZCBoZXJlIGFuZCBub3QgaW4gQWR2YW5jZSgpIGJlY2F1c2UgQWR2YW5jZSgpCisgICAgLy8gY2Fu
IGFkdmFuY2UgaXRlcmF0b3JfIGJleW9uZCB0aGUgZW5kIG9mIHRoZSByYW5nZSwgYW5kIHdlIGNh
bm5vdAorICAgIC8vIGRldGVjdCB0aGF0IGZhY3QuIFRoZSBjbGllbnQgY29kZSwgb24gdGhlIG90
aGVyIGhhbmQsIGlzCisgICAgLy8gcmVzcG9uc2libGUgZm9yIG5vdCBjYWxsaW5nIEN1cnJlbnQo
KSBvbiBhbiBvdXQtb2YtcmFuZ2UgaXRlcmF0b3IuCisgICAgdmlydHVhbCBjb25zdCBUKiBDdXJy
ZW50KCkgY29uc3QgeworICAgICAgaWYgKHZhbHVlXy5nZXQoKSA9PSBOVUxMKQorICAgICAgICB2
YWx1ZV8ucmVzZXQobmV3IFQoKml0ZXJhdG9yXykpOworICAgICAgcmV0dXJuIHZhbHVlXy5nZXQo
KTsKKyAgICB9CisgICAgdmlydHVhbCBib29sIEVxdWFscyhjb25zdCBQYXJhbUl0ZXJhdG9ySW50
ZXJmYWNlPFQ+JiBvdGhlcikgY29uc3QgeworICAgICAgLy8gSGF2aW5nIHRoZSBzYW1lIGJhc2Ug
Z2VuZXJhdG9yIGd1YXJhbnRlZXMgdGhhdCB0aGUgb3RoZXIKKyAgICAgIC8vIGl0ZXJhdG9yIGlz
IG9mIHRoZSBzYW1lIHR5cGUgYW5kIHdlIGNhbiBkb3duY2FzdC4KKyAgICAgIEdURVNUX0NIRUNL
XyhCYXNlR2VuZXJhdG9yKCkgPT0gb3RoZXIuQmFzZUdlbmVyYXRvcigpKQorICAgICAgICAgIDw8
ICJUaGUgcHJvZ3JhbSBhdHRlbXB0ZWQgdG8gY29tcGFyZSBpdGVyYXRvcnMgIgorICAgICAgICAg
IDw8ICJmcm9tIGRpZmZlcmVudCBnZW5lcmF0b3JzLiIgPDwgc3RkOjplbmRsOworICAgICAgcmV0
dXJuIGl0ZXJhdG9yXyA9PQorICAgICAgICAgIENoZWNrZWREb3duY2FzdFRvQWN0dWFsVHlwZTxj
b25zdCBJdGVyYXRvcj4oJm90aGVyKS0+aXRlcmF0b3JfOworICAgIH0KKworICAgcHJpdmF0ZToK
KyAgICBJdGVyYXRvcihjb25zdCBJdGVyYXRvciYgb3RoZXIpCisgICAgICAgICAgLy8gVGhlIGV4
cGxpY2l0IGNvbnN0cnVjdG9yIGNhbGwgc3VwcHJlc3NlcyBhIGZhbHNlIHdhcm5pbmcKKyAgICAg
ICAgICAvLyBlbWl0dGVkIGJ5IGdjYyB3aGVuIHN1cHBsaWVkIHdpdGggdGhlIC1XZXh0cmEgb3B0
aW9uLgorICAgICAgICA6IFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8VD4oKSwKKyAgICAgICAgICBi
YXNlXyhvdGhlci5iYXNlXyksCisgICAgICAgICAgaXRlcmF0b3JfKG90aGVyLml0ZXJhdG9yXykg
e30KKworICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFQ+KiBjb25zdCBiYXNlXzsK
KyAgICB0eXBlbmFtZSBDb250YWluZXJUeXBlOjpjb25zdF9pdGVyYXRvciBpdGVyYXRvcl87Cisg
ICAgLy8gQSBjYWNoZWQgdmFsdWUgb2YgKml0ZXJhdG9yXy4gV2Uga2VlcCBpdCBoZXJlIHRvIGFs
bG93IGFjY2VzcyBieQorICAgIC8vIHBvaW50ZXIgaW4gdGhlIHdyYXBwaW5nIGl0ZXJhdG9yJ3Mg
b3BlcmF0b3ItPigpLgorICAgIC8vIHZhbHVlXyBuZWVkcyB0byBiZSBtdXRhYmxlIHRvIGJlIGFj
Y2Vzc2VkIGluIEN1cnJlbnQoKS4KKyAgICAvLyBVc2Ugb2Ygc2NvcGVkX3B0ciBoZWxwcyBtYW5h
Z2UgY2FjaGVkIHZhbHVlJ3MgbGlmZXRpbWUsCisgICAgLy8gd2hpY2ggaXMgYm91bmQgYnkgdGhl
IGxpZmVzcGFuIG9mIHRoZSBpdGVyYXRvciBpdHNlbGYuCisgICAgbXV0YWJsZSBzY29wZWRfcHRy
PGNvbnN0IFQ+IHZhbHVlXzsKKyAgfTsgIC8vIGNsYXNzIFZhbHVlc0luSXRlcmF0b3JSYW5nZUdl
bmVyYXRvcjo6SXRlcmF0b3IKKworICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQg
aXMgdW5zdXBwb3J0ZWQuCisgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlc0luSXRlcmF0b3JS
YW5nZUdlbmVyYXRvciYgb3RoZXIpOworCisgIGNvbnN0IENvbnRhaW5lclR5cGUgY29udGFpbmVy
XzsKK307ICAvLyBjbGFzcyBWYWx1ZXNJbkl0ZXJhdG9yUmFuZ2VHZW5lcmF0b3IKKworLy8gSU5U
RVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIFVTRVIgQ09ERS4KKy8vCisvLyBE
ZWZhdWx0IHBhcmFtZXRlcml6ZWQgdGVzdCBuYW1lIGdlbmVyYXRvciwgcmV0dXJucyBhIHN0cmlu
ZyBjb250YWluaW5nIHRoZQorLy8gaW50ZWdlciB0ZXN0IHBhcmFtZXRlciBpbmRleC4KK3RlbXBs
YXRlIDxjbGFzcyBQYXJhbVR5cGU+CitzdGQ6OnN0cmluZyBEZWZhdWx0UGFyYW1OYW1lKGNvbnN0
IFRlc3RQYXJhbUluZm88UGFyYW1UeXBlPiYgaW5mbykgeworICBNZXNzYWdlIG5hbWVfc3RyZWFt
OworICBuYW1lX3N0cmVhbSA8PCBpbmZvLmluZGV4OworICByZXR1cm4gbmFtZV9zdHJlYW0uR2V0
U3RyaW5nKCk7Cit9CisKKy8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJ
TiBVU0VSIENPREUuCisvLworLy8gUGFyYW1ldGVyaXplZCB0ZXN0IG5hbWUgb3ZlcmxvYWQgaGVs
cGVycywgd2hpY2ggaGVscCB0aGUKKy8vIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QIG1hY3JvIGNo
b29zZSBiZXR3ZWVuIHRoZSBkZWZhdWx0IHBhcmFtZXRlcml6ZWQKKy8vIHRlc3QgbmFtZSBnZW5l
cmF0b3IgYW5kIHVzZXIgcGFyYW0gbmFtZSBnZW5lcmF0b3IuCit0ZW1wbGF0ZSA8Y2xhc3MgUGFy
YW1UeXBlLCBjbGFzcyBQYXJhbU5hbWVHZW5GdW5jdG9yPgorUGFyYW1OYW1lR2VuRnVuY3RvciBH
ZXRQYXJhbU5hbWVHZW4oUGFyYW1OYW1lR2VuRnVuY3RvciBmdW5jKSB7CisgIHJldHVybiBmdW5j
OworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgUGFyYW1UeXBlPgorc3RydWN0IFBhcmFtTmFtZUdlbkZ1
bmMgeworICB0eXBlZGVmIHN0ZDo6c3RyaW5nIFR5cGUoY29uc3QgVGVzdFBhcmFtSW5mbzxQYXJh
bVR5cGU+Jik7Cit9OworCit0ZW1wbGF0ZSA8Y2xhc3MgUGFyYW1UeXBlPgordHlwZW5hbWUgUGFy
YW1OYW1lR2VuRnVuYzxQYXJhbVR5cGU+OjpUeXBlICpHZXRQYXJhbU5hbWVHZW4oKSB7CisgIHJl
dHVybiBEZWZhdWx0UGFyYW1OYW1lOworfQorCisvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAt
IERPIE5PVCBVU0UgSU4gVVNFUiBDT0RFLgorLy8KKy8vIFN0b3JlcyBhIHBhcmFtZXRlciB2YWx1
ZSBhbmQgbGF0ZXIgY3JlYXRlcyB0ZXN0cyBwYXJhbWV0ZXJpemVkIHdpdGggdGhhdAorLy8gdmFs
dWUuCit0ZW1wbGF0ZSA8Y2xhc3MgVGVzdENsYXNzPgorY2xhc3MgUGFyYW1ldGVyaXplZFRlc3RG
YWN0b3J5IDogcHVibGljIFRlc3RGYWN0b3J5QmFzZSB7CisgcHVibGljOgorICB0eXBlZGVmIHR5
cGVuYW1lIFRlc3RDbGFzczo6UGFyYW1UeXBlIFBhcmFtVHlwZTsKKyAgZXhwbGljaXQgUGFyYW1l
dGVyaXplZFRlc3RGYWN0b3J5KFBhcmFtVHlwZSBwYXJhbWV0ZXIpIDoKKyAgICAgIHBhcmFtZXRl
cl8ocGFyYW1ldGVyKSB7fQorICB2aXJ0dWFsIFRlc3QqIENyZWF0ZVRlc3QoKSB7CisgICAgVGVz
dENsYXNzOjpTZXRQYXJhbSgmcGFyYW1ldGVyXyk7CisgICAgcmV0dXJuIG5ldyBUZXN0Q2xhc3Mo
KTsKKyAgfQorCisgcHJpdmF0ZToKKyAgY29uc3QgUGFyYW1UeXBlIHBhcmFtZXRlcl87CisKKyAg
R1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhQYXJhbWV0ZXJpemVkVGVzdEZhY3Rvcnkp
OworfTsKKworLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIFVTRVIg
Q09ERS4KKy8vCisvLyBUZXN0TWV0YUZhY3RvcnlCYXNlIGlzIGEgYmFzZSBjbGFzcyBmb3IgbWV0
YS1mYWN0b3JpZXMgdGhhdCBjcmVhdGUKKy8vIHRlc3QgZmFjdG9yaWVzIGZvciBwYXNzaW5nIGlu
dG8gTWFrZUFuZFJlZ2lzdGVyVGVzdEluZm8gZnVuY3Rpb24uCit0ZW1wbGF0ZSA8Y2xhc3MgUGFy
YW1UeXBlPgorY2xhc3MgVGVzdE1ldGFGYWN0b3J5QmFzZSB7CisgcHVibGljOgorICB2aXJ0dWFs
IH5UZXN0TWV0YUZhY3RvcnlCYXNlKCkge30KKworICB2aXJ0dWFsIFRlc3RGYWN0b3J5QmFzZSog
Q3JlYXRlVGVzdEZhY3RvcnkoUGFyYW1UeXBlIHBhcmFtZXRlcikgPSAwOworfTsKKworLy8gSU5U
RVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIFVTRVIgQ09ERS4KKy8vCisvLyBU
ZXN0TWV0YUZhY3RvcnkgY3JlYXRlcyB0ZXN0IGZhY3RvcmllcyBmb3IgcGFzc2luZyBpbnRvCisv
LyBNYWtlQW5kUmVnaXN0ZXJUZXN0SW5mbyBmdW5jdGlvbi4gU2luY2UgTWFrZUFuZFJlZ2lzdGVy
VGVzdEluZm8gcmVjZWl2ZXMKKy8vIG93bmVyc2hpcCBvZiB0ZXN0IGZhY3RvcnkgcG9pbnRlciwg
c2FtZSBmYWN0b3J5IG9iamVjdCBjYW5ub3QgYmUgcGFzc2VkCisvLyBpbnRvIHRoYXQgbWV0aG9k
IHR3aWNlLiBCdXQgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mbyBpcyBnb2luZyB0byBjYWxsCisv
LyBpdCBmb3IgZWFjaCBUZXN0L1BhcmFtZXRlciB2YWx1ZSBjb21iaW5hdGlvbi4gVGh1cyBpdCBu
ZWVkcyBtZXRhIGZhY3RvcnkKKy8vIGNyZWF0b3IgY2xhc3MuCit0ZW1wbGF0ZSA8Y2xhc3MgVGVz
dENhc2U+CitjbGFzcyBUZXN0TWV0YUZhY3RvcnkKKyAgICA6IHB1YmxpYyBUZXN0TWV0YUZhY3Rv
cnlCYXNlPHR5cGVuYW1lIFRlc3RDYXNlOjpQYXJhbVR5cGU+IHsKKyBwdWJsaWM6CisgIHR5cGVk
ZWYgdHlwZW5hbWUgVGVzdENhc2U6OlBhcmFtVHlwZSBQYXJhbVR5cGU7CisKKyAgVGVzdE1ldGFG
YWN0b3J5KCkge30KKworICB2aXJ0dWFsIFRlc3RGYWN0b3J5QmFzZSogQ3JlYXRlVGVzdEZhY3Rv
cnkoUGFyYW1UeXBlIHBhcmFtZXRlcikgeworICAgIHJldHVybiBuZXcgUGFyYW1ldGVyaXplZFRl
c3RGYWN0b3J5PFRlc3RDYXNlPihwYXJhbWV0ZXIpOworICB9CisKKyBwcml2YXRlOgorICBHVEVT
VF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFRlc3RNZXRhRmFjdG9yeSk7Cit9OworCisvLyBJ
TlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gVVNFUiBDT0RFLgorLy8KKy8v
IFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm9CYXNlIGlzIGEgZ2VuZXJpYyBpbnRlcmZhY2UKKy8v
IHRvIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm8gY2xhc3Nlcy4gUGFyYW1ldGVyaXplZFRlc3RD
YXNlSW5mb0Jhc2UKKy8vIGFjY3VtdWxhdGVzIHRlc3QgaW5mb3JtYXRpb24gcHJvdmlkZWQgYnkg
VEVTVF9QIG1hY3JvIGludm9jYXRpb25zCisvLyBhbmQgZ2VuZXJhdG9ycyBwcm92aWRlZCBieSBJ
TlNUQU5USUFURV9URVNUX0NBU0VfUCBtYWNybyBpbnZvY2F0aW9ucworLy8gYW5kIHVzZXMgdGhh
dCBpbmZvcm1hdGlvbiB0byByZWdpc3RlciBhbGwgcmVzdWx0aW5nIHRlc3QgaW5zdGFuY2VzCisv
LyBpbiBSZWdpc3RlclRlc3RzIG1ldGhvZC4gVGhlIFBhcmFtZXRlcml6ZVRlc3RDYXNlUmVnaXN0
cnkgY2xhc3MgaG9sZHMKKy8vIGEgY29sbGVjdGlvbiBvZiBwb2ludGVycyB0byB0aGUgUGFyYW1l
dGVyaXplZFRlc3RDYXNlSW5mbyBvYmplY3RzCisvLyBhbmQgY2FsbHMgUmVnaXN0ZXJUZXN0cygp
IG9uIGVhY2ggb2YgdGhlbSB3aGVuIGFza2VkLgorY2xhc3MgUGFyYW1ldGVyaXplZFRlc3RDYXNl
SW5mb0Jhc2UgeworIHB1YmxpYzoKKyAgdmlydHVhbCB+UGFyYW1ldGVyaXplZFRlc3RDYXNlSW5m
b0Jhc2UoKSB7fQorCisgIC8vIEJhc2UgcGFydCBvZiB0ZXN0IGNhc2UgbmFtZSBmb3IgZGlzcGxh
eSBwdXJwb3Nlcy4KKyAgdmlydHVhbCBjb25zdCBzdGQ6OnN0cmluZyYgR2V0VGVzdENhc2VOYW1l
KCkgY29uc3QgPSAwOworICAvLyBUZXN0IGNhc2UgaWQgdG8gdmVyaWZ5IGlkZW50aXR5LgorICB2
aXJ0dWFsIFR5cGVJZCBHZXRUZXN0Q2FzZVR5cGVJZCgpIGNvbnN0ID0gMDsKKyAgLy8gVW5pdFRl
c3QgY2xhc3MgaW52b2tlcyB0aGlzIG1ldGhvZCB0byByZWdpc3RlciB0ZXN0cyBpbiB0aGlzCisg
IC8vIHRlc3QgY2FzZSByaWdodCBiZWZvcmUgcnVubmluZyB0aGVtIGluIFJVTl9BTExfVEVTVFMg
bWFjcm8uCisgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBub3QgYmUgY2FsbGVkIG1vcmUgdGhlbiBv
bmNlIG9uIGFueSBzaW5nbGUKKyAgLy8gaW5zdGFuY2Ugb2YgYSBQYXJhbWV0ZXJpemVkVGVzdENh
c2VJbmZvQmFzZSBkZXJpdmVkIGNsYXNzLgorICB2aXJ0dWFsIHZvaWQgUmVnaXN0ZXJUZXN0cygp
ID0gMDsKKworIHByb3RlY3RlZDoKKyAgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mb0Jhc2UoKSB7
fQorCisgcHJpdmF0ZToKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhQYXJhbWV0
ZXJpemVkVGVzdENhc2VJbmZvQmFzZSk7Cit9OworCisvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElP
TiAtIERPIE5PVCBVU0UgSU4gVVNFUiBDT0RFLgorLy8KKy8vIFBhcmFtZXRlcml6ZWRUZXN0Q2Fz
ZUluZm8gYWNjdW11bGF0ZXMgdGVzdHMgb2J0YWluZWQgZnJvbSBURVNUX1AKKy8vIG1hY3JvIGlu
dm9jYXRpb25zIGZvciBhIHBhcnRpY3VsYXIgdGVzdCBjYXNlIGFuZCBnZW5lcmF0b3JzCisvLyBv
YnRhaW5lZCBmcm9tIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QIG1hY3JvIGludm9jYXRpb25zIGZv
ciB0aGF0CisvLyB0ZXN0IGNhc2UuIEl0IHJlZ2lzdGVycyB0ZXN0cyB3aXRoIGFsbCB2YWx1ZXMg
Z2VuZXJhdGVkIGJ5IGFsbAorLy8gZ2VuZXJhdG9ycyB3aGVuIGFza2VkLgordGVtcGxhdGUgPGNs
YXNzIFRlc3RDYXNlPgorY2xhc3MgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mbyA6IHB1YmxpYyBQ
YXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvQmFzZSB7CisgcHVibGljOgorICAvLyBQYXJhbVR5cGUg
YW5kIEdlbmVyYXRvckNyZWF0aW9uRnVuYyBhcmUgcHJpdmF0ZSB0eXBlcyBidXQgYXJlIHJlcXVp
cmVkCisgIC8vIGZvciBkZWNsYXJhdGlvbnMgb2YgcHVibGljIG1ldGhvZHMgQWRkVGVzdFBhdHRl
cm4oKSBhbmQKKyAgLy8gQWRkVGVzdENhc2VJbnN0YW50aWF0aW9uKCkuCisgIHR5cGVkZWYgdHlw
ZW5hbWUgVGVzdENhc2U6OlBhcmFtVHlwZSBQYXJhbVR5cGU7CisgIC8vIEEgZnVuY3Rpb24gdGhh
dCByZXR1cm5zIGFuIGluc3RhbmNlIG9mIGFwcHJvcHJpYXRlIGdlbmVyYXRvciB0eXBlLgorICB0
eXBlZGVmIFBhcmFtR2VuZXJhdG9yPFBhcmFtVHlwZT4oR2VuZXJhdG9yQ3JlYXRpb25GdW5jKSgp
OworICB0eXBlZGVmIHR5cGVuYW1lIFBhcmFtTmFtZUdlbkZ1bmM8UGFyYW1UeXBlPjo6VHlwZSBQ
YXJhbU5hbWVHZW5lcmF0b3JGdW5jOworCisgIGV4cGxpY2l0IFBhcmFtZXRlcml6ZWRUZXN0Q2Fz
ZUluZm8oCisgICAgICBjb25zdCBjaGFyKiBuYW1lLCBDb2RlTG9jYXRpb24gY29kZV9sb2NhdGlv
bikKKyAgICAgIDogdGVzdF9jYXNlX25hbWVfKG5hbWUpLCBjb2RlX2xvY2F0aW9uXyhjb2RlX2xv
Y2F0aW9uKSB7fQorCisgIC8vIFRlc3QgY2FzZSBiYXNlIG5hbWUgZm9yIGRpc3BsYXkgcHVycG9z
ZXMuCisgIHZpcnR1YWwgY29uc3Qgc3RkOjpzdHJpbmcmIEdldFRlc3RDYXNlTmFtZSgpIGNvbnN0
IHsgcmV0dXJuIHRlc3RfY2FzZV9uYW1lXzsgfQorICAvLyBUZXN0IGNhc2UgaWQgdG8gdmVyaWZ5
IGlkZW50aXR5LgorICB2aXJ0dWFsIFR5cGVJZCBHZXRUZXN0Q2FzZVR5cGVJZCgpIGNvbnN0IHsg
cmV0dXJuIEdldFR5cGVJZDxUZXN0Q2FzZT4oKTsgfQorICAvLyBURVNUX1AgbWFjcm8gdXNlcyBB
ZGRUZXN0UGF0dGVybigpIHRvIHJlY29yZCBpbmZvcm1hdGlvbgorICAvLyBhYm91dCBhIHNpbmds
ZSB0ZXN0IGluIGEgTG9jYWxUZXN0SW5mbyBzdHJ1Y3R1cmUuCisgIC8vIHRlc3RfY2FzZV9uYW1l
IGlzIHRoZSBiYXNlIG5hbWUgb2YgdGhlIHRlc3QgY2FzZSAod2l0aG91dCBpbnZvY2F0aW9uCisg
IC8vIHByZWZpeCkuIHRlc3RfYmFzZV9uYW1lIGlzIHRoZSBuYW1lIG9mIGFuIGluZGl2aWR1YWwg
dGVzdCB3aXRob3V0CisgIC8vIHBhcmFtZXRlciBpbmRleC4gRm9yIHRoZSB0ZXN0IFNlcXVlbmNl
QS9Gb29UZXN0LkRvQmFyLzEgRm9vVGVzdCBpcworICAvLyB0ZXN0IGNhc2UgYmFzZSBuYW1lIGFu
ZCBEb0JhciBpcyB0ZXN0IGJhc2UgbmFtZS4KKyAgdm9pZCBBZGRUZXN0UGF0dGVybihjb25zdCBj
aGFyKiB0ZXN0X2Nhc2VfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0
ZXN0X2Jhc2VfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICBUZXN0TWV0YUZhY3RvcnlCYXNl
PFBhcmFtVHlwZT4qIG1ldGFfZmFjdG9yeSkgeworICAgIHRlc3RzXy5wdXNoX2JhY2sobGlua2Vk
X3B0cjxUZXN0SW5mbz4obmV3IFRlc3RJbmZvKHRlc3RfY2FzZV9uYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfYmFzZV9uYW1l
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1ldGFfZmFjdG9yeSkpKTsKKyAgfQorICAvLyBJTlNUQU5USUFURV9URVNUX0NBU0VfUCBtYWNy
byB1c2VzIEFkZEdlbmVyYXRvcigpIHRvIHJlY29yZCBpbmZvcm1hdGlvbgorICAvLyBhYm91dCBh
IGdlbmVyYXRvci4KKyAgaW50IEFkZFRlc3RDYXNlSW5zdGFudGlhdGlvbihjb25zdCBzdGQ6OnN0
cmluZyYgaW5zdGFudGlhdGlvbl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdlbmVyYXRvckNyZWF0aW9uRnVuYyogZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQYXJhbU5hbWVHZW5lcmF0b3JGdW5jKiBuYW1lX2Z1bmMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUpIHsKKyAgICBpbnN0YW50
aWF0aW9uc18ucHVzaF9iYWNrKAorICAgICAgICBJbnN0YW50aWF0aW9uSW5mbyhpbnN0YW50aWF0
aW9uX25hbWUsIGZ1bmMsIG5hbWVfZnVuYywgZmlsZSwgbGluZSkpOworICAgIHJldHVybiAwOyAg
Ly8gUmV0dXJuIHZhbHVlIHVzZWQgb25seSB0byBydW4gdGhpcyBtZXRob2QgaW4gbmFtZXNwYWNl
IHNjb3BlLgorICB9CisgIC8vIFVuaXRUZXN0IGNsYXNzIGludm9rZXMgdGhpcyBtZXRob2QgdG8g
cmVnaXN0ZXIgdGVzdHMgaW4gdGhpcyB0ZXN0IGNhc2UKKyAgLy8gdGVzdCBjYXNlcyByaWdodCBi
ZWZvcmUgcnVubmluZyB0ZXN0cyBpbiBSVU5fQUxMX1RFU1RTIG1hY3JvLgorICAvLyBUaGlzIG1l
dGhvZCBzaG91bGQgbm90IGJlIGNhbGxlZCBtb3JlIHRoZW4gb25jZSBvbiBhbnkgc2luZ2xlCisg
IC8vIGluc3RhbmNlIG9mIGEgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mb0Jhc2UgZGVyaXZlZCBj
bGFzcy4KKyAgLy8gVW5pdFRlc3QgaGFzIGEgZ3VhcmQgdG8gcHJldmVudCBmcm9tIGNhbGxpbmcg
dGhpcyBtZXRob2QgbW9yZSB0aGVuIG9uY2UuCisgIHZpcnR1YWwgdm9pZCBSZWdpc3RlclRlc3Rz
KCkgeworICAgIGZvciAodHlwZW5hbWUgVGVzdEluZm9Db250YWluZXI6Oml0ZXJhdG9yIHRlc3Rf
aXQgPSB0ZXN0c18uYmVnaW4oKTsKKyAgICAgICAgIHRlc3RfaXQgIT0gdGVzdHNfLmVuZCgpOyAr
K3Rlc3RfaXQpIHsKKyAgICAgIGxpbmtlZF9wdHI8VGVzdEluZm8+IHRlc3RfaW5mbyA9ICp0ZXN0
X2l0OworICAgICAgZm9yICh0eXBlbmFtZSBJbnN0YW50aWF0aW9uQ29udGFpbmVyOjppdGVyYXRv
ciBnZW5faXQgPQorICAgICAgICAgICAgICAgaW5zdGFudGlhdGlvbnNfLmJlZ2luKCk7IGdlbl9p
dCAhPSBpbnN0YW50aWF0aW9uc18uZW5kKCk7CisgICAgICAgICAgICAgICArK2dlbl9pdCkgewor
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgaW5zdGFudGlhdGlvbl9uYW1lID0gZ2VuX2l0LT5u
YW1lOworICAgICAgICBQYXJhbUdlbmVyYXRvcjxQYXJhbVR5cGU+IGdlbmVyYXRvcigoKmdlbl9p
dC0+Z2VuZXJhdG9yKSgpKTsKKyAgICAgICAgUGFyYW1OYW1lR2VuZXJhdG9yRnVuYyogbmFtZV9m
dW5jID0gZ2VuX2l0LT5uYW1lX2Z1bmM7CisgICAgICAgIGNvbnN0IGNoYXIqIGZpbGUgPSBnZW5f
aXQtPmZpbGU7CisgICAgICAgIGludCBsaW5lID0gZ2VuX2l0LT5saW5lOworCisgICAgICAgIHN0
ZDo6c3RyaW5nIHRlc3RfY2FzZV9uYW1lOworICAgICAgICBpZiAoICFpbnN0YW50aWF0aW9uX25h
bWUuZW1wdHkoKSApCisgICAgICAgICAgdGVzdF9jYXNlX25hbWUgPSBpbnN0YW50aWF0aW9uX25h
bWUgKyAiLyI7CisgICAgICAgIHRlc3RfY2FzZV9uYW1lICs9IHRlc3RfaW5mby0+dGVzdF9jYXNl
X2Jhc2VfbmFtZTsKKworICAgICAgICBzaXplX3QgaSA9IDA7CisgICAgICAgIHN0ZDo6c2V0PHN0
ZDo6c3RyaW5nPiB0ZXN0X3BhcmFtX25hbWVzOworICAgICAgICBmb3IgKHR5cGVuYW1lIFBhcmFt
R2VuZXJhdG9yPFBhcmFtVHlwZT46Oml0ZXJhdG9yIHBhcmFtX2l0ID0KKyAgICAgICAgICAgICAg
ICAgZ2VuZXJhdG9yLmJlZ2luKCk7CisgICAgICAgICAgICAgcGFyYW1faXQgIT0gZ2VuZXJhdG9y
LmVuZCgpOyArK3BhcmFtX2l0LCArK2kpIHsKKyAgICAgICAgICBNZXNzYWdlIHRlc3RfbmFtZV9z
dHJlYW07CisKKyAgICAgICAgICBzdGQ6OnN0cmluZyBwYXJhbV9uYW1lID0gbmFtZV9mdW5jKAor
ICAgICAgICAgICAgICBUZXN0UGFyYW1JbmZvPFBhcmFtVHlwZT4oKnBhcmFtX2l0LCBpKSk7CisK
KyAgICAgICAgICBHVEVTVF9DSEVDS18oSXNWYWxpZFBhcmFtTmFtZShwYXJhbV9uYW1lKSkKKyAg
ICAgICAgICAgICAgPDwgIlBhcmFtZXRlcml6ZWQgdGVzdCBuYW1lICciIDw8IHBhcmFtX25hbWUK
KyAgICAgICAgICAgICAgPDwgIicgaXMgaW52YWxpZCwgaW4gIiA8PCBmaWxlCisgICAgICAgICAg
ICAgIDw8ICIgbGluZSAiIDw8IGxpbmUgPDwgc3RkOjplbmRsOworCisgICAgICAgICAgR1RFU1Rf
Q0hFQ0tfKHRlc3RfcGFyYW1fbmFtZXMuY291bnQocGFyYW1fbmFtZSkgPT0gMCkKKyAgICAgICAg
ICAgICAgPDwgIkR1cGxpY2F0ZSBwYXJhbWV0ZXJpemVkIHRlc3QgbmFtZSAnIiA8PCBwYXJhbV9u
YW1lCisgICAgICAgICAgICAgIDw8ICInLCBpbiAiIDw8IGZpbGUgPDwgIiBsaW5lICIgPDwgbGlu
ZSA8PCBzdGQ6OmVuZGw7CisKKyAgICAgICAgICB0ZXN0X3BhcmFtX25hbWVzLmluc2VydChwYXJh
bV9uYW1lKTsKKworICAgICAgICAgIHRlc3RfbmFtZV9zdHJlYW0gPDwgdGVzdF9pbmZvLT50ZXN0
X2Jhc2VfbmFtZSA8PCAiLyIgPDwgcGFyYW1fbmFtZTsKKyAgICAgICAgICBNYWtlQW5kUmVnaXN0
ZXJUZXN0SW5mbygKKyAgICAgICAgICAgICAgdGVzdF9jYXNlX25hbWUuY19zdHIoKSwKKyAgICAg
ICAgICAgICAgdGVzdF9uYW1lX3N0cmVhbS5HZXRTdHJpbmcoKS5jX3N0cigpLAorICAgICAgICAg
ICAgICBOVUxMLCAgLy8gTm8gdHlwZSBwYXJhbWV0ZXIuCisgICAgICAgICAgICAgIFByaW50VG9T
dHJpbmcoKnBhcmFtX2l0KS5jX3N0cigpLAorICAgICAgICAgICAgICBjb2RlX2xvY2F0aW9uXywK
KyAgICAgICAgICAgICAgR2V0VGVzdENhc2VUeXBlSWQoKSwKKyAgICAgICAgICAgICAgVGVzdENh
c2U6OlNldFVwVGVzdENhc2UsCisgICAgICAgICAgICAgIFRlc3RDYXNlOjpUZWFyRG93blRlc3RD
YXNlLAorICAgICAgICAgICAgICB0ZXN0X2luZm8tPnRlc3RfbWV0YV9mYWN0b3J5LT5DcmVhdGVU
ZXN0RmFjdG9yeSgqcGFyYW1faXQpKTsKKyAgICAgICAgfSAgLy8gZm9yIHBhcmFtX2l0CisgICAg
ICB9ICAvLyBmb3IgZ2VuX2l0CisgICAgfSAgLy8gZm9yIHRlc3RfaXQKKyAgfSAgLy8gUmVnaXN0
ZXJUZXN0cworCisgcHJpdmF0ZToKKyAgLy8gTG9jYWxUZXN0SW5mbyBzdHJ1Y3R1cmUga2VlcHMg
aW5mb3JtYXRpb24gYWJvdXQgYSBzaW5nbGUgdGVzdCByZWdpc3RlcmVkCisgIC8vIHdpdGggVEVT
VF9QIG1hY3JvLgorICBzdHJ1Y3QgVGVzdEluZm8geworICAgIFRlc3RJbmZvKGNvbnN0IGNoYXIq
IGFfdGVzdF9jYXNlX2Jhc2VfbmFtZSwKKyAgICAgICAgICAgICBjb25zdCBjaGFyKiBhX3Rlc3Rf
YmFzZV9uYW1lLAorICAgICAgICAgICAgIFRlc3RNZXRhRmFjdG9yeUJhc2U8UGFyYW1UeXBlPiog
YV90ZXN0X21ldGFfZmFjdG9yeSkgOgorICAgICAgICB0ZXN0X2Nhc2VfYmFzZV9uYW1lKGFfdGVz
dF9jYXNlX2Jhc2VfbmFtZSksCisgICAgICAgIHRlc3RfYmFzZV9uYW1lKGFfdGVzdF9iYXNlX25h
bWUpLAorICAgICAgICB0ZXN0X21ldGFfZmFjdG9yeShhX3Rlc3RfbWV0YV9mYWN0b3J5KSB7fQor
CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgdGVzdF9jYXNlX2Jhc2VfbmFtZTsKKyAgICBjb25zdCBz
dGQ6OnN0cmluZyB0ZXN0X2Jhc2VfbmFtZTsKKyAgICBjb25zdCBzY29wZWRfcHRyPFRlc3RNZXRh
RmFjdG9yeUJhc2U8UGFyYW1UeXBlPiA+IHRlc3RfbWV0YV9mYWN0b3J5OworICB9OworICB0eXBl
ZGVmIDo6c3RkOjp2ZWN0b3I8bGlua2VkX3B0cjxUZXN0SW5mbz4gPiBUZXN0SW5mb0NvbnRhaW5l
cjsKKyAgLy8gUmVjb3JkcyBkYXRhIHJlY2VpdmVkIGZyb20gSU5TVEFOVElBVEVfVEVTVF9DQVNF
X1AgbWFjcm9zOgorICAvLyAgPEluc3RhbnRpYXRpb24gbmFtZSwgU2VxdWVuY2UgZ2VuZXJhdG9y
IGNyZWF0aW9uIGZ1bmN0aW9uLAorICAvLyAgICAgTmFtZSBnZW5lcmF0b3IgZnVuY3Rpb24sIFNv
dXJjZSBmaWxlLCBTb3VyY2UgbGluZT4KKyAgc3RydWN0IEluc3RhbnRpYXRpb25JbmZvIHsKKyAg
ICAgIEluc3RhbnRpYXRpb25JbmZvKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lX2luLAorICAgICAg
ICAgICAgICAgICAgICAgICAgR2VuZXJhdG9yQ3JlYXRpb25GdW5jKiBnZW5lcmF0b3JfaW4sCisg
ICAgICAgICAgICAgICAgICAgICAgICBQYXJhbU5hbWVHZW5lcmF0b3JGdW5jKiBuYW1lX2Z1bmNf
aW4sCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmaWxlX2luLAorICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IGxpbmVfaW4pCisgICAgICAgICAgOiBuYW1lKG5hbWVfaW4p
LAorICAgICAgICAgICAgZ2VuZXJhdG9yKGdlbmVyYXRvcl9pbiksCisgICAgICAgICAgICBuYW1l
X2Z1bmMobmFtZV9mdW5jX2luKSwKKyAgICAgICAgICAgIGZpbGUoZmlsZV9pbiksCisgICAgICAg
ICAgICBsaW5lKGxpbmVfaW4pIHt9CisKKyAgICAgIHN0ZDo6c3RyaW5nIG5hbWU7CisgICAgICBH
ZW5lcmF0b3JDcmVhdGlvbkZ1bmMqIGdlbmVyYXRvcjsKKyAgICAgIFBhcmFtTmFtZUdlbmVyYXRv
ckZ1bmMqIG5hbWVfZnVuYzsKKyAgICAgIGNvbnN0IGNoYXIqIGZpbGU7CisgICAgICBpbnQgbGlu
ZTsKKyAgfTsKKyAgdHlwZWRlZiA6OnN0ZDo6dmVjdG9yPEluc3RhbnRpYXRpb25JbmZvPiBJbnN0
YW50aWF0aW9uQ29udGFpbmVyOworCisgIHN0YXRpYyBib29sIElzVmFsaWRQYXJhbU5hbWUoY29u
c3Qgc3RkOjpzdHJpbmcmIG5hbWUpIHsKKyAgICAvLyBDaGVjayBmb3IgZW1wdHkgc3RyaW5nCisg
ICAgaWYgKG5hbWUuZW1wdHkoKSkKKyAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIENoZWNr
IGZvciBpbnZhbGlkIGNoYXJhY3RlcnMKKyAgICBmb3IgKHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUg
aW5kZXggPSAwOyBpbmRleCA8IG5hbWUuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICBpZiAoIWlz
YWxudW0obmFtZVtpbmRleF0pICYmIG5hbWVbaW5kZXhdICE9ICdfJykKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworICB9CisKKyAgY29uc3Qgc3RkOjpz
dHJpbmcgdGVzdF9jYXNlX25hbWVfOworICBDb2RlTG9jYXRpb24gY29kZV9sb2NhdGlvbl87Cisg
IFRlc3RJbmZvQ29udGFpbmVyIHRlc3RzXzsKKyAgSW5zdGFudGlhdGlvbkNvbnRhaW5lciBpbnN0
YW50aWF0aW9uc187CisKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhQYXJhbWV0
ZXJpemVkVGVzdENhc2VJbmZvKTsKK307ICAvLyBjbGFzcyBQYXJhbWV0ZXJpemVkVGVzdENhc2VJ
bmZvCisKKy8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBVU0VSIENP
REUuCisvLworLy8gUGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkgY29udGFpbnMgYSBtYXAg
b2YgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mb0Jhc2UKKy8vIGNsYXNzZXMgYWNjZXNzZWQgYnkg
dGVzdCBjYXNlIG5hbWVzLiBURVNUX1AgYW5kIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QCisvLyBt
YWNyb3MgdXNlIGl0IHRvIGxvY2F0ZSB0aGVpciBjb3JyZXNwb25kaW5nIFBhcmFtZXRlcml6ZWRU
ZXN0Q2FzZUluZm8KKy8vIGRlc2NyaXB0b3JzLgorY2xhc3MgUGFyYW1ldGVyaXplZFRlc3RDYXNl
UmVnaXN0cnkgeworIHB1YmxpYzoKKyAgUGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkoKSB7
fQorICB+UGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkoKSB7CisgICAgZm9yIChUZXN0Q2Fz
ZUluZm9Db250YWluZXI6Oml0ZXJhdG9yIGl0ID0gdGVzdF9jYXNlX2luZm9zXy5iZWdpbigpOwor
ICAgICAgICAgaXQgIT0gdGVzdF9jYXNlX2luZm9zXy5lbmQoKTsgKytpdCkgeworICAgICAgZGVs
ZXRlICppdDsKKyAgICB9CisgIH0KKworICAvLyBMb29rcyB1cCBvciBjcmVhdGVzIGFuZCByZXR1
cm5zIGEgc3RydWN0dXJlIGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQKKyAgLy8gdGVzdHMg
YW5kIGluc3RhbnRpYXRpb25zIG9mIGEgcGFydGljdWxhciB0ZXN0IGNhc2UuCisgIHRlbXBsYXRl
IDxjbGFzcyBUZXN0Q2FzZT4KKyAgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mbzxUZXN0Q2FzZT4q
IEdldFRlc3RDYXNlUGF0dGVybkhvbGRlcigKKyAgICAgIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9u
YW1lLAorICAgICAgQ29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb24pIHsKKyAgICBQYXJhbWV0ZXJp
emVkVGVzdENhc2VJbmZvPFRlc3RDYXNlPiogdHlwZWRfdGVzdF9pbmZvID0gTlVMTDsKKyAgICBm
b3IgKFRlc3RDYXNlSW5mb0NvbnRhaW5lcjo6aXRlcmF0b3IgaXQgPSB0ZXN0X2Nhc2VfaW5mb3Nf
LmJlZ2luKCk7CisgICAgICAgICBpdCAhPSB0ZXN0X2Nhc2VfaW5mb3NfLmVuZCgpOyArK2l0KSB7
CisgICAgICBpZiAoKCppdCktPkdldFRlc3RDYXNlTmFtZSgpID09IHRlc3RfY2FzZV9uYW1lKSB7
CisgICAgICAgIGlmICgoKml0KS0+R2V0VGVzdENhc2VUeXBlSWQoKSAhPSBHZXRUeXBlSWQ8VGVz
dENhc2U+KCkpIHsKKyAgICAgICAgICAvLyBDb21wbGFpbiBhYm91dCBpbmNvcnJlY3QgdXNhZ2Ug
b2YgR29vZ2xlIFRlc3QgZmFjaWxpdGllcworICAgICAgICAgIC8vIGFuZCB0ZXJtaW5hdGUgdGhl
IHByb2dyYW0gc2luY2Ugd2UgY2Fubm90IGd1YXJhbnR5IGNvcnJlY3QKKyAgICAgICAgICAvLyB0
ZXN0IGNhc2Ugc2V0dXAgYW5kIHRlYXItZG93biBpbiB0aGlzIGNhc2UuCisgICAgICAgICAgUmVw
b3J0SW52YWxpZFRlc3RDYXNlVHlwZSh0ZXN0X2Nhc2VfbmFtZSwgY29kZV9sb2NhdGlvbik7Cisg
ICAgICAgICAgcG9zaXg6OkFib3J0KCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgLy8g
QXQgdGhpcyBwb2ludCB3ZSBhcmUgc3VyZSB0aGF0IHRoZSBvYmplY3Qgd2UgZm91bmQgaXMgb2Yg
dGhlIHNhbWUKKyAgICAgICAgICAvLyB0eXBlIHdlIGFyZSBsb29raW5nIGZvciwgc28gd2UgZG93
bmNhc3QgaXQgdG8gdGhhdCB0eXBlCisgICAgICAgICAgLy8gd2l0aG91dCBmdXJ0aGVyIGNoZWNr
cy4KKyAgICAgICAgICB0eXBlZF90ZXN0X2luZm8gPSBDaGVja2VkRG93bmNhc3RUb0FjdHVhbFR5
cGU8CisgICAgICAgICAgICAgIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm88VGVzdENhc2U+ID4o
Kml0KTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisgICAgaWYg
KHR5cGVkX3Rlc3RfaW5mbyA9PSBOVUxMKSB7CisgICAgICB0eXBlZF90ZXN0X2luZm8gPSBuZXcg
UGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mbzxUZXN0Q2FzZT4oCisgICAgICAgICAgdGVzdF9jYXNl
X25hbWUsIGNvZGVfbG9jYXRpb24pOworICAgICAgdGVzdF9jYXNlX2luZm9zXy5wdXNoX2JhY2so
dHlwZWRfdGVzdF9pbmZvKTsKKyAgICB9CisgICAgcmV0dXJuIHR5cGVkX3Rlc3RfaW5mbzsKKyAg
fQorICB2b2lkIFJlZ2lzdGVyVGVzdHMoKSB7CisgICAgZm9yIChUZXN0Q2FzZUluZm9Db250YWlu
ZXI6Oml0ZXJhdG9yIGl0ID0gdGVzdF9jYXNlX2luZm9zXy5iZWdpbigpOworICAgICAgICAgaXQg
IT0gdGVzdF9jYXNlX2luZm9zXy5lbmQoKTsgKytpdCkgeworICAgICAgKCppdCktPlJlZ2lzdGVy
VGVzdHMoKTsKKyAgICB9CisgIH0KKworIHByaXZhdGU6CisgIHR5cGVkZWYgOjpzdGQ6OnZlY3Rv
cjxQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvQmFzZSo+IFRlc3RDYXNlSW5mb0NvbnRhaW5lcjsK
KworICBUZXN0Q2FzZUluZm9Db250YWluZXIgdGVzdF9jYXNlX2luZm9zXzsKKworICBHVEVTVF9E
SVNBTExPV19DT1BZX0FORF9BU1NJR05fKFBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5KTsK
K307CisKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcK
KworI2VuZGlmICAvLyAgR1RFU1RfSEFTX1BBUkFNX1RFU1QKKworI2VuZGlmICAvLyBHVEVTVF9J
TkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BBUkFNX1VUSUxfSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC1hcmNoLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xldGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQtYXJjaC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjc0YWI5NDkwNTdjNzM0ZmE0OTE4OGU4ZDZiYzRlNzRiZTkxMGRjMGQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQtYXJj
aC5oCkBAIC0wLDAgKzEsOTMgQEAKKy8vIENvcHlyaWdodCAyMDE1LCBHb29nbGUgSW5jLgorLy8g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
Ky8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
Ky8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8g
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKy8vCisvLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xl
IFRlc3QpCisvLworLy8gVGhpcyBoZWFkZXIgZmlsZSBkZWZpbmVzIHRoZSBHVEVTVF9PU18qIG1h
Y3JvLgorLy8gSXQgaXMgc2VwYXJhdGUgZnJvbSBndGVzdC1wb3J0Lmggc28gdGhhdCBjdXN0b20v
Z3Rlc3QtcG9ydC5oIGNhbiBpbmNsdWRlIGl0LgorCisjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RF
U1RfSU5URVJOQUxfR1RFU1RfUE9SVF9BUkNIX0hfCisjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RF
U1RfSU5URVJOQUxfR1RFU1RfUE9SVF9BUkNIX0hfCisKKy8vIERldGVybWluZXMgdGhlIHBsYXRm
b3JtIG9uIHdoaWNoIEdvb2dsZSBUZXN0IGlzIGNvbXBpbGVkLgorI2lmZGVmIF9fQ1lHV0lOX18K
KyMgZGVmaW5lIEdURVNUX09TX0NZR1dJTiAxCisjZWxpZiBkZWZpbmVkIF9fU1lNQklBTjMyX18K
KyMgZGVmaW5lIEdURVNUX09TX1NZTUJJQU4gMQorI2VsaWYgZGVmaW5lZCBfV0lOMzIKKyMgZGVm
aW5lIEdURVNUX09TX1dJTkRPV1MgMQorIyBpZmRlZiBfV0lOMzJfV0NFCisjICBkZWZpbmUgR1RF
U1RfT1NfV0lORE9XU19NT0JJTEUgMQorIyBlbGlmIGRlZmluZWQoX19NSU5HV19fKSB8fCBkZWZp
bmVkKF9fTUlOR1czMl9fKQorIyAgZGVmaW5lIEdURVNUX09TX1dJTkRPV1NfTUlOR1cgMQorIyBl
bGlmIGRlZmluZWQoV0lOQVBJX0ZBTUlMWSkKKyMgIGluY2x1ZGUgPHdpbmFwaWZhbWlseS5oPgor
IyAgaWYgV0lOQVBJX0ZBTUlMWV9QQVJUSVRJT04oV0lOQVBJX1BBUlRJVElPTl9ERVNLVE9QKQor
IyAgIGRlZmluZSBHVEVTVF9PU19XSU5ET1dTX0RFU0tUT1AgMQorIyAgZWxpZiBXSU5BUElfRkFN
SUxZX1BBUlRJVElPTihXSU5BUElfUEFSVElUSU9OX1BIT05FX0FQUCkKKyMgICBkZWZpbmUgR1RF
U1RfT1NfV0lORE9XU19QSE9ORSAxCisjICBlbGlmIFdJTkFQSV9GQU1JTFlfUEFSVElUSU9OKFdJ
TkFQSV9QQVJUSVRJT05fQVBQKQorIyAgIGRlZmluZSBHVEVTVF9PU19XSU5ET1dTX1JUIDEKKyMg
IGVsc2UKKyAgICAvLyBXSU5BUElfRkFNSUxZIGRlZmluZWQgYnV0IG5vIGtub3duIHBhcnRpdGlv
biBtYXRjaGVkLgorICAgIC8vIERlZmF1bHQgdG8gZGVza3RvcC4KKyMgICBkZWZpbmUgR1RFU1Rf
T1NfV0lORE9XU19ERVNLVE9QIDEKKyMgIGVuZGlmCisjIGVsc2UKKyMgIGRlZmluZSBHVEVTVF9P
U19XSU5ET1dTX0RFU0tUT1AgMQorIyBlbmRpZiAgLy8gX1dJTjMyX1dDRQorI2VsaWYgZGVmaW5l
ZCBfX0FQUExFX18KKyMgZGVmaW5lIEdURVNUX09TX01BQyAxCisjIGlmIFRBUkdFVF9PU19JUEhP
TkUKKyMgIGRlZmluZSBHVEVTVF9PU19JT1MgMQorIyBlbmRpZgorI2VsaWYgZGVmaW5lZCBfX0Zy
ZWVCU0RfXworIyBkZWZpbmUgR1RFU1RfT1NfRlJFRUJTRCAxCisjZWxpZiBkZWZpbmVkIF9fbGlu
dXhfXworIyBkZWZpbmUgR1RFU1RfT1NfTElOVVggMQorIyBpZiBkZWZpbmVkIF9fQU5EUk9JRF9f
CisjICBkZWZpbmUgR1RFU1RfT1NfTElOVVhfQU5EUk9JRCAxCisjIGVuZGlmCisjZWxpZiBkZWZp
bmVkIF9fTVZTX18KKyMgZGVmaW5lIEdURVNUX09TX1pPUyAxCisjZWxpZiBkZWZpbmVkKF9fc3Vu
KSAmJiBkZWZpbmVkKF9fU1ZSNCkKKyMgZGVmaW5lIEdURVNUX09TX1NPTEFSSVMgMQorI2VsaWYg
ZGVmaW5lZChfQUlYKQorIyBkZWZpbmUgR1RFU1RfT1NfQUlYIDEKKyNlbGlmIGRlZmluZWQoX19o
cHV4KQorIyBkZWZpbmUgR1RFU1RfT1NfSFBVWCAxCisjZWxpZiBkZWZpbmVkIF9fbmF0aXZlX2Ns
aWVudF9fCisjIGRlZmluZSBHVEVTVF9PU19OQUNMIDEKKyNlbGlmIGRlZmluZWQgX19PcGVuQlNE
X18KKyMgZGVmaW5lIEdURVNUX09TX09QRU5CU0QgMQorI2VsaWYgZGVmaW5lZCBfX1FOWF9fCisj
IGRlZmluZSBHVEVTVF9PU19RTlggMQorI2VuZGlmICAvLyBfX0NZR1dJTl9fCisKKyNlbmRpZiAg
Ly8gR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QT1JUX0FSQ0hfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNWU0ZjhiYTgyYWUzNzBkNTRlZGQxMzc4ZDBkNmQwZWRjMjRiMGM4OAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oCkBA
IC0wLDAgKzEsMjU5MCBAQAorLy8gQ29weXJpZ2h0IDIwMDUsIEdvb2dsZSBJbmMuCisvLyBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8g
bWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
Ky8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8v
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorLy8KKy8vIEF1dGhvcnM6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisvLwor
Ly8gTG93LWxldmVsIHR5cGVzIGFuZCB1dGlsaXRpZXMgZm9yIHBvcnRpbmcgR29vZ2xlIFRlc3Qg
dG8gdmFyaW91cworLy8gcGxhdGZvcm1zLiAgQWxsIG1hY3JvcyBlbmRpbmcgd2l0aCBfIGFuZCBz
eW1ib2xzIGRlZmluZWQgaW4gYW4KKy8vIGludGVybmFsIG5hbWVzcGFjZSBhcmUgc3ViamVjdCB0
byBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuICBDb2RlCisvLyBvdXRzaWRlIEdvb2dsZSBUZXN0IE1V
U1QgTk9UIFVTRSBUSEVNIERJUkVDVExZLiAgTWFjcm9zIHRoYXQgZG9uJ3QKKy8vIGVuZCB3aXRo
IF8gYXJlIHBhcnQgb2YgR29vZ2xlIFRlc3QncyBwdWJsaWMgQVBJIGFuZCBjYW4gYmUgdXNlZCBi
eQorLy8gY29kZSBvdXRzaWRlIEdvb2dsZSBUZXN0LgorLy8KKy8vIFRoaXMgZmlsZSBpcyBmdW5k
YW1lbnRhbCB0byBHb29nbGUgVGVzdC4gIEFsbCBvdGhlciBHb29nbGUgVGVzdCBzb3VyY2UKKy8v
IGZpbGVzIGFyZSBleHBlY3RlZCB0byAjaW5jbHVkZSB0aGlzLiAgVGhlcmVmb3JlLCBpdCBjYW5u
b3QgI2luY2x1ZGUKKy8vIGFueSBvdGhlciBHb29nbGUgVGVzdCBoZWFkZXIuCisKKyNpZm5kZWYg
R1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QT1JUX0hfCisjZGVmaW5lIEdURVNU
X0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfUE9SVF9IXworCisvLyBFbnZpcm9ubWVudC1k
ZXNjcmliaW5nIG1hY3JvcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisv
LyBHb29nbGUgVGVzdCBjYW4gYmUgdXNlZCBpbiBtYW55IGRpZmZlcmVudCBlbnZpcm9ubWVudHMu
ICBNYWNyb3MgaW4KKy8vIHRoaXMgc2VjdGlvbiB0ZWxsIEdvb2dsZSBUZXN0IHdoYXQga2luZCBv
ZiBlbnZpcm9ubWVudCBpdCBpcyBiZWluZworLy8gdXNlZCBpbiwgc3VjaCB0aGF0IEdvb2dsZSBU
ZXN0IGNhbiBwcm92aWRlIGVudmlyb25tZW50LXNwZWNpZmljCisvLyBmZWF0dXJlcyBhbmQgaW1w
bGVtZW50YXRpb25zLgorLy8KKy8vIEdvb2dsZSBUZXN0IHRyaWVzIHRvIGF1dG9tYXRpY2FsbHkg
ZGV0ZWN0IHRoZSBwcm9wZXJ0aWVzIG9mIGl0cworLy8gZW52aXJvbm1lbnQsIHNvIHVzZXJzIHVz
dWFsbHkgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCB0aGVzZQorLy8gbWFjcm9zLiAgSG93ZXZl
ciwgdGhlIGF1dG9tYXRpYyBkZXRlY3Rpb24gaXMgbm90IHBlcmZlY3QuCisvLyBTb21ldGltZXMg
aXQncyBuZWNlc3NhcnkgZm9yIGEgdXNlciB0byBkZWZpbmUgc29tZSBvZiB0aGUgZm9sbG93aW5n
CisvLyBtYWNyb3MgaW4gdGhlIGJ1aWxkIHNjcmlwdCB0byBvdmVycmlkZSBHb29nbGUgVGVzdCdz
IGRlY2lzaW9ucy4KKy8vCisvLyBJZiB0aGUgdXNlciBkb2Vzbid0IGRlZmluZSBhIG1hY3JvIGlu
IHRoZSBsaXN0LCBHb29nbGUgVGVzdCB3aWxsCisvLyBwcm92aWRlIGEgZGVmYXVsdCBkZWZpbml0
aW9uLiAgQWZ0ZXIgdGhpcyBoZWFkZXIgaXMgI2luY2x1ZGVkLCBhbGwKKy8vIG1hY3JvcyBpbiB0
aGlzIGxpc3Qgd2lsbCBiZSBkZWZpbmVkIHRvIGVpdGhlciAxIG9yIDAuCisvLworLy8gTm90ZXMg
dG8gbWFpbnRhaW5lcnM6CisvLyAgIC0gRWFjaCBtYWNybyBoZXJlIGlzIGEgdXNlci10d2Vha2Fi
bGUga25vYjsgZG8gbm90IGdyb3cgdGhlIGxpc3QKKy8vICAgICBsaWdodGx5LgorLy8gICAtIFVz
ZSAjaWYgdG8ga2V5IG9mZiB0aGVzZSBtYWNyb3MuICBEb24ndCB1c2UgI2lmZGVmIG9yICIjaWYK
Ky8vICAgICBkZWZpbmVkKC4uLikiLCB3aGljaCB3aWxsIG5vdCB3b3JrIGFzIHRoZXNlIG1hY3Jv
cyBhcmUgQUxXQVlTCisvLyAgICAgZGVmaW5lZC4KKy8vCisvLyAgIEdURVNUX0hBU19DTE9ORSAg
ICAgICAgICAtIERlZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgdGhhdCBjbG9uZSgyKQorLy8g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcy9pc24ndCBhdmFpbGFibGUuCisvLyAgIEdU
RVNUX0hBU19FWENFUFRJT05TICAgICAtIERlZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgdGhh
dCBleGNlcHRpb25zCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBlbmFibGVk
LgorLy8gICBHVEVTVF9IQVNfR0xPQkFMX1NUUklORyAgLSBEZWZpbmUgaXQgdG8gMS8wIHRvIGlu
ZGljYXRlIHRoYXQgOjpzdHJpbmcKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMv
aXNuJ3QgYXZhaWxhYmxlIChzb21lIHN5c3RlbXMgZGVmaW5lCisvLyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDo6c3RyaW5nLCB3aGljaCBpcyBkaWZmZXJlbnQgdG8gc3RkOjpzdHJpbmcp
LgorLy8gICBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcgLSBEZWZpbmUgaXQgdG8gMS8wIHRvIGlu
ZGljYXRlIHRoYXQgOjpzdHJpbmcKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMv
aXNuJ3QgYXZhaWxhYmxlIChzb21lIHN5c3RlbXMgZGVmaW5lCisvLyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDo6d3N0cmluZywgd2hpY2ggaXMgZGlmZmVyZW50IHRvIHN0ZDo6d3N0cmlu
ZykuCisvLyAgIEdURVNUX0hBU19QT1NJWF9SRSAgICAgICAtIERlZmluZSBpdCB0byAxLzAgdG8g
aW5kaWNhdGUgdGhhdCBQT1NJWCByZWd1bGFyCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGV4cHJlc3Npb25zIGFyZS9hcmVuJ3QgYXZhaWxhYmxlLgorLy8gICBHVEVTVF9IQVNfUFRI
UkVBRCAgICAgICAgLSBEZWZpbmUgaXQgdG8gMS8wIHRvIGluZGljYXRlIHRoYXQgPHB0aHJlYWQu
aD4KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMvaXNuJ3QgYXZhaWxhYmxlLgor
Ly8gICBHVEVTVF9IQVNfUlRUSSAgICAgICAgICAgLSBEZWZpbmUgaXQgdG8gMS8wIHRvIGluZGlj
YXRlIHRoYXQgUlRUSSBpcy9pc24ndAorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
bmFibGVkLgorLy8gICBHVEVTVF9IQVNfU1REX1dTVFJJTkcgICAgLSBEZWZpbmUgaXQgdG8gMS8w
IHRvIGluZGljYXRlIHRoYXQKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp3
c3RyaW5nIGRvZXMvZG9lc24ndCB3b3JrIChHb29nbGUgVGVzdCBjYW4KKy8vICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYmUgdXNlZCB3aGVyZSBzdGQ6OndzdHJpbmcgaXMgdW5hdmFpbGFi
bGUpLgorLy8gICBHVEVTVF9IQVNfVFIxX1RVUExFICAgICAgLSBEZWZpbmUgaXQgdG8gMS8wIHRv
IGluZGljYXRlIHRyMTo6dHVwbGUKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMv
aXNuJ3QgYXZhaWxhYmxlLgorLy8gICBHVEVTVF9IQVNfU0VIICAgICAgICAgICAgLSBEZWZpbmUg
aXQgdG8gMS8wIHRvIGluZGljYXRlIHdoZXRoZXIgdGhlCisvLyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbXBpbGVyIHN1cHBvcnRzIE1pY3Jvc29mdCdzICJTdHJ1Y3R1cmVkCisvLyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvbiBIYW5kbGluZyIuCisvLyAgIEdU
RVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC0gRGVmaW5lIGl0IHRvIDEvMCB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZQorLy8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybSBzdXBwb3J0cyBJL08gc3RyZWFtIHJlZGlyZWN0
aW9uIHVzaW5nCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cCgpIGFuZCBkdXAy
KCkuCisvLyAgIEdURVNUX1VTRV9PV05fVFIxX1RVUExFICAtIERlZmluZSBpdCB0byAxLzAgdG8g
aW5kaWNhdGUgd2hldGhlciBHb29nbGUKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VGVzdCdzIG93biB0cjEgdHVwbGUgaW1wbGVtZW50YXRpb24gc2hvdWxkIGJlCisvLyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVzZWQuICBVbnVzZWQgd2hlbiB0aGUgdXNlciBzZXRzCisv
LyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdURVNUX0hBU19UUjFfVFVQTEUgdG8gMC4K
Ky8vICAgR1RFU1RfTEFOR19DWFgxMSAgICAgICAgIC0gRGVmaW5lIGl0IHRvIDEvMCB0byBpbmRp
Y2F0ZSB0aGF0IEdvb2dsZSBUZXN0CisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlz
IGJ1aWxkaW5nIGluIEMrKzExL0MrKzk4IG1vZGUuCisvLyAgIEdURVNUX0xJTktFRF9BU19TSEFS
RURfTElCUkFSWQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBEZWZpbmUgdG8gMSB3
aGVuIGNvbXBpbGluZyB0ZXN0cyB0aGF0IHVzZQorLy8gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHb29nbGUgVGVzdCBhcyBhIHNoYXJlZCBsaWJyYXJ5IChrbm93biBhcworLy8gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBETEwgb24gV2luZG93cykuCisvLyAgIEdURVNUX0NSRUFU
RV9TSEFSRURfTElCUkFSWQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBEZWZpbmUg
dG8gMSB3aGVuIGNvbXBpbGluZyBHb29nbGUgVGVzdCBpdHNlbGYKKy8vICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXMgYSBzaGFyZWQgbGlicmFyeS4KKworLy8gUGxhdGZvcm0taW5kaWNh
dGluZyBtYWNyb3MKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWFjcm9z
IGluZGljYXRpbmcgdGhlIHBsYXRmb3JtIG9uIHdoaWNoIEdvb2dsZSBUZXN0IGlzIGJlaW5nIHVz
ZWQKKy8vIChhIG1hY3JvIGlzIGRlZmluZWQgdG8gMSBpZiBjb21waWxlZCBvbiB0aGUgZ2l2ZW4g
cGxhdGZvcm07CisvLyBvdGhlcndpc2UgVU5ERUZJTkVEIC0tIGl0J3MgbmV2ZXIgZGVmaW5lZCB0
byAwLikuICBHb29nbGUgVGVzdAorLy8gZGVmaW5lcyB0aGVzZSBtYWNyb3MgYXV0b21hdGljYWxs
eS4gIENvZGUgb3V0c2lkZSBHb29nbGUgVGVzdCBNVVNUCisvLyBOT1QgZGVmaW5lIHRoZW0uCisv
LworLy8gICBHVEVTVF9PU19BSVggICAgICAtIElCTSBBSVgKKy8vICAgR1RFU1RfT1NfQ1lHV0lO
ICAgLSBDeWd3aW4KKy8vICAgR1RFU1RfT1NfRlJFRUJTRCAgLSBGcmVlQlNECisvLyAgIEdURVNU
X09TX0hQVVggICAgIC0gSFAtVVgKKy8vICAgR1RFU1RfT1NfTElOVVggICAgLSBMaW51eAorLy8g
ICAgIEdURVNUX09TX0xJTlVYX0FORFJPSUQgLSBHb29nbGUgQW5kcm9pZAorLy8gICBHVEVTVF9P
U19NQUMgICAgICAtIE1hYyBPUyBYCisvLyAgICAgR1RFU1RfT1NfSU9TICAgIC0gaU9TCisvLyAg
IEdURVNUX09TX05BQ0wgICAgIC0gR29vZ2xlIE5hdGl2ZSBDbGllbnQgKE5hQ2wpCisvLyAgIEdU
RVNUX09TX09QRU5CU0QgIC0gT3BlbkJTRAorLy8gICBHVEVTVF9PU19RTlggICAgICAtIFFOWAor
Ly8gICBHVEVTVF9PU19TT0xBUklTICAtIFN1biBTb2xhcmlzCisvLyAgIEdURVNUX09TX1NZTUJJ
QU4gIC0gU3ltYmlhbgorLy8gICBHVEVTVF9PU19XSU5ET1dTICAtIFdpbmRvd3MgKERlc2t0b3As
IE1pbkdXLCBvciBNb2JpbGUpCisvLyAgICAgR1RFU1RfT1NfV0lORE9XU19ERVNLVE9QICAtIFdp
bmRvd3MgRGVza3RvcAorLy8gICAgIEdURVNUX09TX1dJTkRPV1NfTUlOR1cgICAgLSBNaW5HVwor
Ly8gICAgIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFICAgLSBXaW5kb3dzIE1vYmlsZQorLy8gICAg
IEdURVNUX09TX1dJTkRPV1NfUEhPTkUgICAgLSBXaW5kb3dzIFBob25lCisvLyAgICAgR1RFU1Rf
T1NfV0lORE9XU19SVCAgICAgICAtIFdpbmRvd3MgU3RvcmUgQXBwL1dpblJUCisvLyAgIEdURVNU
X09TX1pPUyAgICAgIC0gei9PUworLy8KKy8vIEFtb25nIHRoZSBwbGF0Zm9ybXMsIEN5Z3dpbiwg
TGludXgsIE1heCBPUyBYLCBhbmQgV2luZG93cyBoYXZlIHRoZQorLy8gbW9zdCBzdGFibGUgc3Vw
cG9ydC4gIFNpbmNlIGNvcmUgbWVtYmVycyBvZiB0aGUgR29vZ2xlIFRlc3QgcHJvamVjdAorLy8g
ZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gb3RoZXIgcGxhdGZvcm1zLCBzdXBwb3J0IGZvciB0aGVtIG1h
eSBiZSBsZXNzCisvLyBzdGFibGUuICBJZiB5b3Ugbm90aWNlIGFueSBwcm9ibGVtcyBvbiB5b3Vy
IHBsYXRmb3JtLCBwbGVhc2Ugbm90aWZ5CisvLyBnb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdy
b3Vwcy5jb20gKHBhdGNoZXMgZm9yIGZpeGluZyB0aGVtIGFyZQorLy8gZXZlbiBtb3JlIHdlbGNv
bWUhKS4KKy8vCisvLyBJdCBpcyBwb3NzaWJsZSB0aGF0IG5vbmUgb2YgdGhlIEdURVNUX09TXyog
bWFjcm9zIGFyZSBkZWZpbmVkLgorCisvLyBGZWF0dXJlLWluZGljYXRpbmcgbWFjcm9zCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWFjcm9zIGluZGljYXRpbmcgd2hpY2gg
R29vZ2xlIFRlc3QgZmVhdHVyZXMgYXJlIGF2YWlsYWJsZSAoYSBtYWNybworLy8gaXMgZGVmaW5l
ZCB0byAxIGlmIHRoZSBjb3JyZXNwb25kaW5nIGZlYXR1cmUgaXMgc3VwcG9ydGVkOworLy8gb3Ro
ZXJ3aXNlIFVOREVGSU5FRCAtLSBpdCdzIG5ldmVyIGRlZmluZWQgdG8gMC4pLiAgR29vZ2xlIFRl
c3QKKy8vIGRlZmluZXMgdGhlc2UgbWFjcm9zIGF1dG9tYXRpY2FsbHkuICBDb2RlIG91dHNpZGUg
R29vZ2xlIFRlc3QgTVVTVAorLy8gTk9UIGRlZmluZSB0aGVtLgorLy8KKy8vIFRoZXNlIG1hY3Jv
cyBhcmUgcHVibGljIHNvIHRoYXQgcG9ydGFibGUgdGVzdHMgY2FuIGJlIHdyaXR0ZW4uCisvLyBT
dWNoIHRlc3RzIHR5cGljYWxseSBzdXJyb3VuZCBjb2RlIHVzaW5nIGEgZmVhdHVyZSB3aXRoIGFu
ICNpZgorLy8gd2hpY2ggY29udHJvbHMgdGhhdCBjb2RlLiAgRm9yIGV4YW1wbGU6CisvLworLy8g
I2lmIEdURVNUX0hBU19ERUFUSF9URVNUCisvLyAgIEVYUEVDVF9ERUFUSChEb1NvbWV0aGluZ0Rl
YWRseSgpKTsKKy8vICNlbmRpZgorLy8KKy8vICAgR1RFU1RfSEFTX0NPTUJJTkUgICAgICAtIHRo
ZSBDb21iaW5lKCkgZnVuY3Rpb24gKGZvciB2YWx1ZS1wYXJhbWV0ZXJpemVkCisvLyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0ZXN0cykKKy8vICAgR1RFU1RfSEFTX0RFQVRIX1RFU1QgICAt
IGRlYXRoIHRlc3RzCisvLyAgIEdURVNUX0hBU19QQVJBTV9URVNUICAgLSB2YWx1ZS1wYXJhbWV0
ZXJpemVkIHRlc3RzCisvLyAgIEdURVNUX0hBU19UWVBFRF9URVNUICAgLSB0eXBlZCB0ZXN0cwor
Ly8gICBHVEVTVF9IQVNfVFlQRURfVEVTVF9QIC0gdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzCisv
LyAgIEdURVNUX0lTX1RIUkVBRFNBRkUgICAgLSBHb29nbGUgVGVzdCBpcyB0aHJlYWQtc2FmZS4K
Ky8vICAgR1RFU1RfVVNFU19QT1NJWF9SRSAgICAtIGVuaGFuY2VkIFBPU0lYIHJlZ2V4IGlzIHVz
ZWQuIERvIG5vdCBjb25mdXNlIHdpdGgKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdU
RVNUX0hBU19QT1NJWF9SRSAoc2VlIGFib3ZlKSB3aGljaCB1c2VycyBjYW4KKy8vICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlZmluZSB0aGVtc2VsdmVzLgorLy8gICBHVEVTVF9VU0VTX1NJ
TVBMRV9SRSAgIC0gb3VyIG93biBzaW1wbGUgcmVnZXggaXMgdXNlZDsKKy8vICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRoZSBhYm92ZSB0d28gYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4KKy8v
ICAgR1RFU1RfQ0FOX0NPTVBBUkVfTlVMTCAtIGFjY2VwdHMgdW50eXBlZCBOVUxMIGluIEVYUEVD
VF9FUSgpLgorCisvLyBNaXNjIHB1YmxpYyBtYWNyb3MKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLQor
Ly8KKy8vICAgR1RFU1RfRkxBRyhmbGFnX25hbWUpICAtIHJlZmVyZW5jZXMgdGhlIHZhcmlhYmxl
IGNvcnJlc3BvbmRpbmcgdG8KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBnaXZl
biBHb29nbGUgVGVzdCBmbGFnLgorCisvLyBJbnRlcm5hbCB1dGlsaXRpZXMKKy8vIC0tLS0tLS0t
LS0tLS0tLS0tLQorLy8KKy8vIFRoZSBmb2xsb3dpbmcgbWFjcm9zIGFuZCB1dGlsaXRpZXMgYXJl
IGZvciBHb29nbGUgVGVzdCdzIElOVEVSTkFMCisvLyB1c2Ugb25seS4gIENvZGUgb3V0c2lkZSBH
b29nbGUgVGVzdCBNVVNUIE5PVCBVU0UgVEhFTSBESVJFQ1RMWS4KKy8vCisvLyBNYWNyb3MgZm9y
IGJhc2ljIEMrKyBjb2Rpbmc6CisvLyAgIEdURVNUX0FNQklHVU9VU19FTFNFX0JMT0NLRVJfIC0g
Zm9yIGRpc2FibGluZyBhIGdjYyB3YXJuaW5nLgorLy8gICBHVEVTVF9BVFRSSUJVVEVfVU5VU0VE
XyAgLSBkZWNsYXJlcyB0aGF0IGEgY2xhc3MnIGluc3RhbmNlcyBvciBhCisvLyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGRvbid0IGhhdmUgdG8gYmUgdXNlZC4KKy8vICAg
R1RFU1RfRElTQUxMT1dfQVNTSUdOXyAgIC0gZGlzYWJsZXMgb3BlcmF0b3I9LgorLy8gICBHVEVT
VF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fIC0gZGlzYWJsZXMgY29weSBjdG9yIGFuZCBvcGVy
YXRvcj0uCisvLyAgIEdURVNUX01VU1RfVVNFX1JFU1VMVF8gICAtIGRlY2xhcmVzIHRoYXQgYSBm
dW5jdGlvbidzIHJlc3VsdCBtdXN0IGJlIHVzZWQuCisvLyAgIEdURVNUX0lOVEVOVElPTkFMX0NP
TlNUX0NPTkRfUFVTSF8gLSBzdGFydCBjb2RlIHNlY3Rpb24gd2hlcmUgTVNWQyBDNDEyNyBpcwor
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcHJlc3NlZCAoY29u
c3RhbnQgY29uZGl0aW9uYWwpLgorLy8gICBHVEVTVF9JTlRFTlRJT05BTF9DT05TVF9DT05EX1BP
UF8gIC0gZmluaXNoIGNvZGUgc2VjdGlvbiB3aGVyZSBNU1ZDIEM0MTI3CisvLyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBzdXBwcmVzc2VkLgorLy8KKy8vIEMrKzEx
IGZlYXR1cmUgd3JhcHBlcnM6CisvLworLy8gICB0ZXN0aW5nOjppbnRlcm5hbDo6bW92ZSAgLSBw
b3J0YWJpbGl0eSB3cmFwcGVyIGZvciBzdGQ6Om1vdmUuCisvLworLy8gU3luY2hyb25pemF0aW9u
OgorLy8gICBNdXRleCwgTXV0ZXhMb2NrLCBUaHJlYWRMb2NhbCwgR2V0VGhyZWFkQ291bnQoKQor
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZl
cy4KKy8vCisvLyBUZW1wbGF0ZSBtZXRhIHByb2dyYW1taW5nOgorLy8gICBpc19wb2ludGVyICAg
ICAtIGFzIGluIFRSMTsgbmVlZGVkIG9uIFN5bWJpYW4gYW5kIElCTSBYTCBDL0MrKyBvbmx5Lgor
Ly8gICBJdGVyYXRvclRyYWl0cyAtIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2Ygc3RkOjppdGVy
YXRvcl90cmFpdHMsIHdoaWNoCisvLyAgICAgICAgICAgICAgICAgICAgaXMgbm90IGF2YWlsYWJs
ZSBpbiBsaWJDc3RkIHdoZW4gY29tcGlsZWQgd2l0aCBTdW4gQysrLgorLy8KKy8vIFNtYXJ0IHBv
aW50ZXJzOgorLy8gICBzY29wZWRfcHRyICAgICAtIGFzIGluIFRSMi4KKy8vCisvLyBSZWd1bGFy
IGV4cHJlc3Npb25zOgorLy8gICBSRSAgICAgICAgICAgICAtIGEgc2ltcGxlIHJlZ3VsYXIgZXhw
cmVzc2lvbiBjbGFzcyB1c2luZyB0aGUgUE9TSVgKKy8vICAgICAgICAgICAgICAgICAgICBFeHRl
bmRlZCBSZWd1bGFyIEV4cHJlc3Npb24gc3ludGF4IG9uIFVOSVgtbGlrZQorLy8gICAgICAgICAg
ICAgICAgICAgIHBsYXRmb3Jtcywgb3IgYSByZWR1Y2VkIHJlZ3VsYXIgZXhjZXB0aW9uIHN5bnRh
eCBvbgorLy8gICAgICAgICAgICAgICAgICAgIG90aGVyIHBsYXRmb3JtcywgaW5jbHVkaW5nIFdp
bmRvd3MuCisvLworLy8gTG9nZ2luZzoKKy8vICAgR1RFU1RfTE9HXygpICAgLSBsb2dzIG1lc3Nh
Z2VzIGF0IHRoZSBzcGVjaWZpZWQgc2V2ZXJpdHkgbGV2ZWwuCisvLyAgIExvZ1RvU3RkZXJyKCkg
IC0gZGlyZWN0cyBhbGwgbG9nIG1lc3NhZ2VzIHRvIHN0ZGVyci4KKy8vICAgRmx1c2hJbmZvTG9n
KCkgLSBmbHVzaGVzIGluZm9ybWF0aW9uYWwgbG9nIG1lc3NhZ2VzLgorLy8KKy8vIFN0ZG91dCBh
bmQgc3RkZXJyIGNhcHR1cmluZzoKKy8vICAgQ2FwdHVyZVN0ZG91dCgpICAgICAtIHN0YXJ0cyBj
YXB0dXJpbmcgc3Rkb3V0LgorLy8gICBHZXRDYXB0dXJlZFN0ZG91dCgpIC0gc3RvcHMgY2FwdHVy
aW5nIHN0ZG91dCBhbmQgcmV0dXJucyB0aGUgY2FwdHVyZWQKKy8vICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cmluZy4KKy8vICAgQ2FwdHVyZVN0ZGVycigpICAgICAtIHN0YXJ0cyBjYXB0dXJp
bmcgc3RkZXJyLgorLy8gICBHZXRDYXB0dXJlZFN0ZGVycigpIC0gc3RvcHMgY2FwdHVyaW5nIHN0
ZGVyciBhbmQgcmV0dXJucyB0aGUgY2FwdHVyZWQKKy8vICAgICAgICAgICAgICAgICAgICAgICAg
IHN0cmluZy4KKy8vCisvLyBJbnRlZ2VyIHR5cGVzOgorLy8gICBUeXBlV2l0aFNpemUgICAtIG1h
cHMgYW4gaW50ZWdlciB0byBhIGludCB0eXBlLgorLy8gICBJbnQzMiwgVUludDMyLCBJbnQ2NCwg
VUludDY0LCBUaW1lSW5NaWxsaXMKKy8vICAgICAgICAgICAgICAgICAgLSBpbnRlZ2VycyBvZiBr
bm93biBzaXplcy4KKy8vICAgQmlnZ2VzdEludCAgICAgLSB0aGUgYmlnZ2VzdCBzaWduZWQgaW50
ZWdlciB0eXBlLgorLy8KKy8vIENvbW1hbmQtbGluZSB1dGlsaXRpZXM6CisvLyAgIEdURVNUX0RF
Q0xBUkVfKigpICAtIGRlY2xhcmVzIGEgZmxhZy4KKy8vICAgR1RFU1RfREVGSU5FXyooKSAgIC0g
ZGVmaW5lcyBhIGZsYWcuCisvLyAgIEdldEluamVjdGFibGVBcmd2cygpIC0gcmV0dXJucyB0aGUg
Y29tbWFuZCBsaW5lIGFzIGEgdmVjdG9yIG9mIHN0cmluZ3MuCisvLworLy8gRW52aXJvbm1lbnQg
dmFyaWFibGUgdXRpbGl0aWVzOgorLy8gICBHZXRFbnYoKSAgICAgICAgICAgICAtIGdldHMgdGhl
IHZhbHVlIG9mIGFuIGVudmlyb25tZW50IHZhcmlhYmxlLgorLy8gICBCb29sRnJvbUdUZXN0RW52
KCkgICAtIHBhcnNlcyBhIGJvb2wgZW52aXJvbm1lbnQgdmFyaWFibGUuCisvLyAgIEludDMyRnJv
bUdUZXN0RW52KCkgIC0gcGFyc2VzIGFuIEludDMyIGVudmlyb25tZW50IHZhcmlhYmxlLgorLy8g
ICBTdHJpbmdGcm9tR1Rlc3RFbnYoKSAtIHBhcnNlcyBhIHN0cmluZyBlbnZpcm9ubWVudCB2YXJp
YWJsZS4KKworI2luY2x1ZGUgPGN0eXBlLmg+ICAgLy8gZm9yIGlzc3BhY2UsIGV0YworI2luY2x1
ZGUgPHN0ZGRlZi5oPiAgLy8gZm9yIHB0cmRpZmZfdAorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2lu
Y2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaWZuZGVmIF9XSU4zMl9XQ0UK
KyMgaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjIGluY2x1ZGUgPHN5cy9zdGF0Lmg+CisjZW5kaWYg
IC8vICFfV0lOMzJfV0NFCisKKyNpZiBkZWZpbmVkIF9fQVBQTEVfXworIyBpbmNsdWRlIDxBdmFp
bGFiaWxpdHlNYWNyb3MuaD4KKyMgaW5jbHVkZSA8VGFyZ2V0Q29uZGl0aW9uYWxzLmg+CisjZW5k
aWYKKworI2luY2x1ZGUgPGFsZ29yaXRobT4gIC8vIE5PTElOVAorI2luY2x1ZGUgPGlvc3RyZWFt
PiAgLy8gTk9MSU5UCisjaW5jbHVkZSA8c3N0cmVhbT4gIC8vIE5PTElOVAorI2luY2x1ZGUgPHN0
cmluZz4gIC8vIE5PTElOVAorI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8dmVjdG9yPiAg
Ly8gTk9MSU5UCisKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LWFyY2guaCIK
KyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QtcG9ydC5oIgorCisjaWYgIWRl
ZmluZWQoR1RFU1RfREVWX0VNQUlMXykKKyMgZGVmaW5lIEdURVNUX0RFVl9FTUFJTF8gImdvb2ds
ZXRlc3RmcmFtZXdvcmtAQGdvb2dsZWdyb3Vwcy5jb20iCisjIGRlZmluZSBHVEVTVF9GTEFHX1BS
RUZJWF8gImd0ZXN0XyIKKyMgZGVmaW5lIEdURVNUX0ZMQUdfUFJFRklYX0RBU0hfICJndGVzdC0i
CisjIGRlZmluZSBHVEVTVF9GTEFHX1BSRUZJWF9VUFBFUl8gIkdURVNUXyIKKyMgZGVmaW5lIEdU
RVNUX05BTUVfICJHb29nbGUgVGVzdCIKKyMgZGVmaW5lIEdURVNUX1BST0pFQ1RfVVJMXyAiaHR0
cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0LyIKKyNlbmRpZiAgLy8gIWRlZmluZWQo
R1RFU1RfREVWX0VNQUlMXykKKworI2lmICFkZWZpbmVkKEdURVNUX0lOSVRfR09PR0xFX1RFU1Rf
TkFNRV8pCisjIGRlZmluZSBHVEVTVF9JTklUX0dPT0dMRV9URVNUX05BTUVfICJ0ZXN0aW5nOjpJ
bml0R29vZ2xlVGVzdCIKKyNlbmRpZiAgLy8gIWRlZmluZWQoR1RFU1RfSU5JVF9HT09HTEVfVEVT
VF9OQU1FXykKKworLy8gRGV0ZXJtaW5lcyB0aGUgdmVyc2lvbiBvZiBnY2MgdGhhdCBpcyB1c2Vk
IHRvIGNvbXBpbGUgdGhpcy4KKyNpZmRlZiBfX0dOVUNfXworLy8gNDAzMDIgbWVhbnMgdmVyc2lv
biA0LjMuMi4KKyMgZGVmaW5lIEdURVNUX0dDQ19WRVJfIFwKKyAgICAoX19HTlVDX18qMTAwMDAg
KyBfX0dOVUNfTUlOT1JfXyoxMDAgKyBfX0dOVUNfUEFUQ0hMRVZFTF9fKQorI2VuZGlmICAvLyBf
X0dOVUNfXworCisvLyBNYWNyb3MgZm9yIGRpc2FibGluZyBNaWNyb3NvZnQgVmlzdWFsIEMrKyB3
YXJuaW5ncy4KKy8vCisvLyAgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQ4MDAg
NDM4NSkKKy8vICAgLyogY29kZSB0aGF0IHRyaWdnZXJzIHdhcm5pbmdzIEM0ODAwIGFuZCBDNDM4
NSAqLworLy8gICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKKyNpZiBfTVNDX1ZF
UiA+PSAxNTAwCisjIGRlZmluZSBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyh3YXJu
aW5ncykgXAorICAgIF9fcHJhZ21hKHdhcm5pbmcocHVzaCkpICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIF9fcHJhZ21hKHdhcm5pbmcoZGlzYWJsZTogd2FybmluZ3MpKQorIyBkZWZpbmUg
R1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpICAgICAgICAgIFwKKyAgICBfX3ByYWdt
YSh3YXJuaW5nKHBvcCkpCisjZWxzZQorLy8gT2xkZXIgdmVyc2lvbnMgb2YgTVNWQyBkb24ndCBo
YXZlIF9fcHJhZ21hLgorIyBkZWZpbmUgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8o
d2FybmluZ3MpCisjIGRlZmluZSBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKKyNl
bmRpZgorCisjaWZuZGVmIEdURVNUX0xBTkdfQ1hYMTEKKy8vIGdjYyBhbmQgY2xhbmcgZGVmaW5l
IF9fR1hYX0VYUEVSSU1FTlRBTF9DWFgwWF9fIHdoZW4KKy8vIC1zdGQ9e2MsZ251fSsrezB4LDEx
fSBpcyBwYXNzZWQuICBUaGUgQysrMTEgc3RhbmRhcmQgc3BlY2lmaWVzIGEKKy8vIHZhbHVlIGZv
ciBfX2NwbHVzcGx1cywgYW5kIHJlY2VudCB2ZXJzaW9ucyBvZiBjbGFuZywgZ2NjLCBhbmQKKy8v
IHByb2JhYmx5IG90aGVyIGNvbXBpbGVycyBzZXQgdGhhdCB0b28gaW4gQysrMTEgbW9kZS4KKyMg
aWYgX19HWFhfRVhQRVJJTUVOVEFMX0NYWDBYX18gfHwgX19jcGx1c3BsdXMgPj0gMjAxMTAzTAor
Ly8gQ29tcGlsaW5nIGluIGF0IGxlYXN0IEMrKzExIG1vZGUuCisjICBkZWZpbmUgR1RFU1RfTEFO
R19DWFgxMSAxCisjIGVsc2UKKyMgIGRlZmluZSBHVEVTVF9MQU5HX0NYWDExIDAKKyMgZW5kaWYK
KyNlbmRpZgorCisvLyBEaXN0aW5jdCBmcm9tIEMrKzExIGxhbmd1YWdlIHN1cHBvcnQsIHNvbWUg
ZW52aXJvbm1lbnRzIGRvbid0IHByb3ZpZGUKKy8vIHByb3BlciBDKysxMSBsaWJyYXJ5IHN1cHBv
cnQuIE5vdGFibHksIGl0J3MgcG9zc2libGUgdG8gYnVpbGQgaW4KKy8vIEMrKzExIG1vZGUgd2hl
biB0YXJnZXRpbmcgTWFjIE9TIFggMTAuNiwgd2hpY2ggaGFzIGFuIG9sZCBsaWJzdGRjKysKKy8v
IHdpdGggbm8gQysrMTEgc3VwcG9ydC4KKy8vCisvLyBsaWJzdGRjKysgaGFzIHN1ZmZpY2llbnQg
QysrMTEgc3VwcG9ydCBhcyBvZiBHQ0MgNC42LjAsIF9fR0xJQkNYWF9fCisvLyAyMDExMDMyNSwg
YnV0IG1haW50ZW5hbmNlIHJlbGVhc2VzIGluIHRoZSA0LjQgYW5kIDQuNSBzZXJpZXMgZm9sbG93
ZWQKKy8vIHRoaXMgZGF0ZSwgc28gY2hlY2sgZm9yIHRob3NlIHZlcnNpb25zIGJ5IHRoZWlyIGRh
dGUgc3RhbXBzLgorLy8gaHR0cHM6Ly9nY2MuZ251Lm9yZy9vbmxpbmVkb2NzL2xpYnN0ZGMrKy9t
YW51YWwvYWJpLmh0bWwjYWJpLnZlcnNpb25pbmcKKyNpZiBHVEVTVF9MQU5HX0NYWDExICYmIFwK
KyAgICAoIWRlZmluZWQoX19HTElCQ1hYX18pIHx8ICggXAorICAgICAgICBfX0dMSUJDWFhfXyA+
PSAyMDExMDMyNXVsICYmICAvKiBHQ0MgPj0gNC42LjAgKi8gXAorICAgICAgICAvKiBCbGFja2xp
c3Qgb2YgcGF0Y2ggcmVsZWFzZXMgb2Ygb2xkZXIgYnJhbmNoZXM6ICovIFwKKyAgICAgICAgX19H
TElCQ1hYX18gIT0gMjAxMTA0MTZ1bCAmJiAgLyogR0NDIDQuNC42ICovIFwKKyAgICAgICAgX19H
TElCQ1hYX18gIT0gMjAxMjAzMTN1bCAmJiAgLyogR0NDIDQuNC43ICovIFwKKyAgICAgICAgX19H
TElCQ1hYX18gIT0gMjAxMTA0Mjh1bCAmJiAgLyogR0NDIDQuNS4zICovIFwKKyAgICAgICAgX19H
TElCQ1hYX18gIT0gMjAxMjA3MDJ1bCkpICAgLyogR0NDIDQuNS40ICovCisjIGRlZmluZSBHVEVT
VF9TVERMSUJfQ1hYMTEgMQorI2VuZGlmCisKKy8vIE9ubHkgdXNlIEMrKzExIGxpYnJhcnkgZmVh
dHVyZXMgaWYgdGhlIGxpYnJhcnkgcHJvdmlkZXMgdGhlbS4KKyNpZiBHVEVTVF9TVERMSUJfQ1hY
MTEKKyMgZGVmaW5lIEdURVNUX0hBU19TVERfQkVHSU5fQU5EX0VORF8gMQorIyBkZWZpbmUgR1RF
U1RfSEFTX1NURF9GT1JXQVJEX0xJU1RfIDEKKyMgZGVmaW5lIEdURVNUX0hBU19TVERfRlVOQ1RJ
T05fIDEKKyMgZGVmaW5lIEdURVNUX0hBU19TVERfSU5JVElBTElaRVJfTElTVF8gMQorIyBkZWZp
bmUgR1RFU1RfSEFTX1NURF9NT1ZFXyAxCisjIGRlZmluZSBHVEVTVF9IQVNfU1REX1NIQVJFRF9Q
VFJfIDEKKyMgZGVmaW5lIEdURVNUX0hBU19TVERfVFlQRV9UUkFJVFNfIDEKKyMgZGVmaW5lIEdU
RVNUX0hBU19TVERfVU5JUVVFX1BUUl8gMQorI2VuZGlmCisKKy8vIEMrKzExIHNwZWNpZmllcyB0
aGF0IDx0dXBsZT4gcHJvdmlkZXMgc3RkOjp0dXBsZS4KKy8vIFNvbWUgcGxhdGZvcm1zIHN0aWxs
IG1pZ2h0IG5vdCBoYXZlIGl0LCBob3dldmVyLgorI2lmIEdURVNUX0xBTkdfQ1hYMTEKKyMgZGVm
aW5lIEdURVNUX0hBU19TVERfVFVQTEVfIDEKKyMgaWYgZGVmaW5lZChfX2NsYW5nX18pCisvLyBJ
bnNwaXJlZCBieSBodHRwOi8vY2xhbmcubGx2bS5vcmcvZG9jcy9MYW5ndWFnZUV4dGVuc2lvbnMu
aHRtbCNfX2hhc19pbmNsdWRlCisjICBpZiBkZWZpbmVkKF9faGFzX2luY2x1ZGUpICYmICFfX2hh
c19pbmNsdWRlKDx0dXBsZT4pCisjICAgdW5kZWYgR1RFU1RfSEFTX1NURF9UVVBMRV8KKyMgIGVu
ZGlmCisjIGVsaWYgZGVmaW5lZChfTVNDX1ZFUikKKy8vIEluc3BpcmVkIGJ5IGJvb3N0L2NvbmZp
Zy9zdGRsaWIvZGlua3Vtd2FyZS5ocHAKKyMgIGlmIGRlZmluZWQoX0NQUExJQl9WRVIpICYmIF9D
UFBMSUJfVkVSIDwgNTIwCisjICAgdW5kZWYgR1RFU1RfSEFTX1NURF9UVVBMRV8KKyMgIGVuZGlm
CisjIGVsaWYgZGVmaW5lZChfX0dMSUJDWFhfXykKKy8vIEluc3BpcmVkIGJ5IGJvb3N0L2NvbmZp
Zy9zdGRsaWIvbGlic3RkY3BwMy5ocHAsCisvLyBodHRwOi8vZ2NjLmdudS5vcmcvZ2NjLTQuMi9j
aGFuZ2VzLmh0bWwgYW5kCisvLyBodHRwOi8vZ2NjLmdudS5vcmcvb25saW5lZG9jcy9saWJzdGRj
KysvbWFudWFsL2JrMDFwdDAxY2gwMS5odG1sI21hbnVhbC5pbnRyby5zdGF0dXMuc3RhbmRhcmQu
MjAweAorIyAgaWYgX19HTlVDX18gPCA0IHx8IChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5P
Ul9fIDwgMikKKyMgICB1bmRlZiBHVEVTVF9IQVNfU1REX1RVUExFXworIyAgZW5kaWYKKyMgZW5k
aWYKKyNlbmRpZgorCisvLyBCcmluZ3MgaW4gZGVmaW5pdGlvbnMgZm9yIGZ1bmN0aW9ucyB1c2Vk
IGluIHRoZSB0ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXgKKy8vIG5hbWVzcGFjZSAocmVhZCwgd3Jp
dGUsIGNsb3NlLCBjaGRpciwgaXNhdHR5LCBzdGF0KS4gV2UgZG8gbm90IGN1cnJlbnRseQorLy8g
dXNlIHRoZW0gb24gV2luZG93cyBNb2JpbGUuCisjaWYgR1RFU1RfT1NfV0lORE9XUworIyBpZiAh
R1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyMgIGluY2x1ZGUgPGRpcmVjdC5oPgorIyAgaW5jbHVk
ZSA8aW8uaD4KKyMgZW5kaWYKKy8vIEluIG9yZGVyIHRvIGF2b2lkIGhhdmluZyB0byBpbmNsdWRl
IDx3aW5kb3dzLmg+LCB1c2UgZm9yd2FyZCBkZWNsYXJhdGlvbgorI2lmIEdURVNUX09TX1dJTkRP
V1NfTUlOR1cgJiYgIWRlZmluZWQoX19NSU5HVzY0X1ZFUlNJT05fTUFKT1IpCisvLyBNaW5HVyBk
ZWZpbmVkIF9DUklUSUNBTF9TRUNUSU9OIGFuZCBfUlRMX0NSSVRJQ0FMX1NFQ1RJT04gYXMgdHdv
CisvLyBzZXBhcmF0ZSAoZXF1aXZhbGVudCkgc3RydWN0cywgaW5zdGVhZCBvZiB1c2luZyB0eXBl
ZGVmCit0eXBlZGVmIHN0cnVjdCBfQ1JJVElDQUxfU0VDVElPTiBHVEVTVF9DUklUSUNBTF9TRUNU
SU9OOworI2Vsc2UKKy8vIEFzc3VtZSBDUklUSUNBTF9TRUNUSU9OIGlzIGEgdHlwZWRlZiBvZiBf
UlRMX0NSSVRJQ0FMX1NFQ1RJT04uCisvLyBUaGlzIGFzc3VtcHRpb24gaXMgdmVyaWZpZWQgYnkK
Ky8vIFdpbmRvd3NUeXBlc1Rlc3QuQ1JJVElDQUxfU0VDVElPTklzX1JUTF9DUklUSUNBTF9TRUNU
SU9OLgordHlwZWRlZiBzdHJ1Y3QgX1JUTF9DUklUSUNBTF9TRUNUSU9OIEdURVNUX0NSSVRJQ0FM
X1NFQ1RJT047CisjZW5kaWYKKyNlbHNlCisvLyBUaGlzIGFzc3VtZXMgdGhhdCBub24tV2luZG93
cyBPU2VzIHByb3ZpZGUgdW5pc3RkLmguIEZvciBPU2VzIHdoZXJlIHRoaXMKKy8vIGlzIG5vdCB0
aGUgY2FzZSwgd2UgbmVlZCB0byBpbmNsdWRlIGhlYWRlcnMgdGhhdCBwcm92aWRlIHRoZSBmdW5j
dGlvbnMKKy8vIG1lbnRpb25lZCBhYm92ZS4KKyMgaW5jbHVkZSA8dW5pc3RkLmg+CisjIGluY2x1
ZGUgPHN0cmluZ3MuaD4KKyNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCisjaWYgR1RFU1Rf
T1NfTElOVVhfQU5EUk9JRAorLy8gVXNlZCB0byBkZWZpbmUgX19BTkRST0lEX0FQSV9fIG1hdGNo
aW5nIHRoZSB0YXJnZXQgTkRLIEFQSSBsZXZlbC4KKyMgIGluY2x1ZGUgPGFuZHJvaWQvYXBpLWxl
dmVsLmg+ICAvLyBOT0xJTlQKKyNlbmRpZgorCisvLyBEZWZpbmVzIHRoaXMgdG8gdHJ1ZSBpZmYg
R29vZ2xlIFRlc3QgY2FuIHVzZSBQT1NJWCByZWd1bGFyIGV4cHJlc3Npb25zLgorI2lmbmRlZiBH
VEVTVF9IQVNfUE9TSVhfUkUKKyMgaWYgR1RFU1RfT1NfTElOVVhfQU5EUk9JRAorLy8gT24gQW5k
cm9pZCwgPHJlZ2V4Lmg+IGlzIG9ubHkgYXZhaWxhYmxlIHN0YXJ0aW5nIHdpdGggR2luZ2VyYnJl
YWQuCisjICBkZWZpbmUgR1RFU1RfSEFTX1BPU0lYX1JFIChfX0FORFJPSURfQVBJX18gPj0gOSkK
KyMgZWxzZQorIyAgZGVmaW5lIEdURVNUX0hBU19QT1NJWF9SRSAoIUdURVNUX09TX1dJTkRPV1Mp
CisjIGVuZGlmCisjZW5kaWYKKworI2lmIEdURVNUX1VTRVNfUENSRQorLy8gVGhlIGFwcHJvcHJp
YXRlIGhlYWRlcnMgaGF2ZSBhbHJlYWR5IGJlZW4gaW5jbHVkZWQuCisKKyNlbGlmIEdURVNUX0hB
U19QT1NJWF9SRQorCisvLyBPbiBzb21lIHBsYXRmb3JtcywgPHJlZ2V4Lmg+IG5lZWRzIHNvbWVv
bmUgdG8gZGVmaW5lIHNpemVfdCwgYW5kCisvLyB3b24ndCBjb21waWxlIG90aGVyd2lzZS4gIFdl
IGNhbiAjaW5jbHVkZSBpdCBoZXJlIGFzIHdlIGFscmVhZHkKKy8vIGluY2x1ZGVkIDxzdGRsaWIu
aD4sIHdoaWNoIGlzIGd1YXJhbnRlZWQgdG8gZGVmaW5lIHNpemVfdCB0aHJvdWdoCisvLyA8c3Rk
ZGVmLmg+LgorIyBpbmNsdWRlIDxyZWdleC5oPiAgLy8gTk9MSU5UCisKKyMgZGVmaW5lIEdURVNU
X1VTRVNfUE9TSVhfUkUgMQorCisjZWxpZiBHVEVTVF9PU19XSU5ET1dTCisKKy8vIDxyZWdleC5o
PiBpcyBub3QgYXZhaWxhYmxlIG9uIFdpbmRvd3MuICBVc2Ugb3VyIG93biBzaW1wbGUgcmVnZXgK
Ky8vIGltcGxlbWVudGF0aW9uIGluc3RlYWQuCisjIGRlZmluZSBHVEVTVF9VU0VTX1NJTVBMRV9S
RSAxCisKKyNlbHNlCisKKy8vIDxyZWdleC5oPiBtYXkgbm90IGJlIGF2YWlsYWJsZSBvbiB0aGlz
IHBsYXRmb3JtLiAgVXNlIG91ciBvd24KKy8vIHNpbXBsZSByZWdleCBpbXBsZW1lbnRhdGlvbiBp
bnN0ZWFkLgorIyBkZWZpbmUgR1RFU1RfVVNFU19TSU1QTEVfUkUgMQorCisjZW5kaWYgIC8vIEdU
RVNUX1VTRVNfUENSRQorCisjaWZuZGVmIEdURVNUX0hBU19FWENFUFRJT05TCisvLyBUaGUgdXNl
ciBkaWRuJ3QgdGVsbCB1cyB3aGV0aGVyIGV4Y2VwdGlvbnMgYXJlIGVuYWJsZWQsIHNvIHdlIG5l
ZWQKKy8vIHRvIGZpZ3VyZSBpdCBvdXQuCisjIGlmIGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmlu
ZWQoX19CT1JMQU5EQ19fKQorLy8gTVNWQydzIGFuZCBDKytCdWlsZGVyJ3MgaW1wbGVtZW50YXRp
b25zIG9mIHRoZSBTVEwgdXNlIHRoZSBfSEFTX0VYQ0VQVElPTlMKKy8vIG1hY3JvIHRvIGVuYWJs
ZSBleGNlcHRpb25zLCBzbyB3ZSdsbCBkbyB0aGUgc2FtZS4KKy8vIEFzc3VtZXMgdGhhdCBleGNl
cHRpb25zIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQuCisjICBpZm5kZWYgX0hBU19FWENFUFRJT05T
CisjICAgZGVmaW5lIF9IQVNfRVhDRVBUSU9OUyAxCisjICBlbmRpZiAgLy8gX0hBU19FWENFUFRJ
T05TCisjICBkZWZpbmUgR1RFU1RfSEFTX0VYQ0VQVElPTlMgX0hBU19FWENFUFRJT05TCisjIGVs
aWYgZGVmaW5lZChfX2NsYW5nX18pCisvLyBjbGFuZyBkZWZpbmVzIF9fRVhDRVBUSU9OUyBpZmYg
ZXhjZXB0aW9ucyBhcmUgZW5hYmxlZCBiZWZvcmUgY2xhbmcgMjIwNzE0LAorLy8gYnV0IGlmZiBj
bGVhbnVwcyBhcmUgZW5hYmxlZCBhZnRlciB0aGF0LiBJbiBPYmotQysrIGZpbGVzLCB0aGVyZSBj
YW4gYmUKKy8vIGNsZWFudXBzIGZvciBPYmpDIGV4Y2VwdGlvbnMgd2hpY2ggYWxzbyBuZWVkIGNs
ZWFudXBzLCBldmVuIGlmIEMrKyBleGNlcHRpb25zCisvLyBhcmUgZGlzYWJsZWQuIGNsYW5nIGhh
cyBfX2hhc19mZWF0dXJlKGN4eF9leGNlcHRpb25zKSB3aGljaCBjaGVja3MgZm9yIEMrKworLy8g
ZXhjZXB0aW9ucyBzdGFydGluZyBhdCBjbGFuZyByMjA2MzUyLCBidXQgd2hpY2ggY2hlY2tlZCBm
b3IgY2xlYW51cHMgcHJpb3IgdG8KKy8vIHRoYXQuIFRvIHJlbGlhYmx5IGNoZWNrIGZvciBDKysg
ZXhjZXB0aW9uIGF2YWlsYWJpbGl0eSB3aXRoIGNsYW5nLCBjaGVjayBmb3IKKy8vIF9fRVhDRVBU
SU9OUyAmJiBfX2hhc19mZWF0dXJlKGN4eF9leGNlcHRpb25zKS4KKyMgIGRlZmluZSBHVEVTVF9I
QVNfRVhDRVBUSU9OUyAoX19FWENFUFRJT05TICYmIF9faGFzX2ZlYXR1cmUoY3h4X2V4Y2VwdGlv
bnMpKQorIyBlbGlmIGRlZmluZWQoX19HTlVDX18pICYmIF9fRVhDRVBUSU9OUworLy8gZ2NjIGRl
ZmluZXMgX19FWENFUFRJT05TIHRvIDEgaWZmIGV4Y2VwdGlvbnMgYXJlIGVuYWJsZWQuCisjICBk
ZWZpbmUgR1RFU1RfSEFTX0VYQ0VQVElPTlMgMQorIyBlbGlmIGRlZmluZWQoX19TVU5QUk9fQ0Mp
CisvLyBTdW4gUHJvIENDIHN1cHBvcnRzIGV4Y2VwdGlvbnMuICBIb3dldmVyLCB0aGVyZSBpcyBu
byBjb21waWxlLXRpbWUgd2F5IG9mCisvLyBkZXRlY3Rpbmcgd2hldGhlciB0aGV5IGFyZSBlbmFi
bGVkIG9yIG5vdC4gIFRoZXJlZm9yZSwgd2UgYXNzdW1lIHRoYXQKKy8vIHRoZXkgYXJlIGVuYWJs
ZWQgdW5sZXNzIHRoZSB1c2VyIHRlbGxzIHVzIG90aGVyd2lzZS4KKyMgIGRlZmluZSBHVEVTVF9I
QVNfRVhDRVBUSU9OUyAxCisjIGVsaWYgZGVmaW5lZChfX0lCTUNQUF9fKSAmJiBfX0VYQ0VQVElP
TlMKKy8vIHhsQyBkZWZpbmVzIF9fRVhDRVBUSU9OUyB0byAxIGlmZiBleGNlcHRpb25zIGFyZSBl
bmFibGVkLgorIyAgZGVmaW5lIEdURVNUX0hBU19FWENFUFRJT05TIDEKKyMgZWxpZiBkZWZpbmVk
KF9fSFBfYUNDKQorLy8gRXhjZXB0aW9uIGhhbmRsaW5nIGlzIGluIGVmZmVjdCBieSBkZWZhdWx0
IGluIEhQIGFDQyBjb21waWxlci4gSXQgaGFzIHRvCisvLyBiZSB0dXJuZWQgb2YgYnkgK25vZWgg
Y29tcGlsZXIgb3B0aW9uIGlmIGRlc2lyZWQuCisjICBkZWZpbmUgR1RFU1RfSEFTX0VYQ0VQVElP
TlMgMQorIyBlbHNlCisvLyBGb3Igb3RoZXIgY29tcGlsZXJzLCB3ZSBhc3N1bWUgZXhjZXB0aW9u
cyBhcmUgZGlzYWJsZWQgdG8gYmUKKy8vIGNvbnNlcnZhdGl2ZS4KKyMgIGRlZmluZSBHVEVTVF9I
QVNfRVhDRVBUSU9OUyAwCisjIGVuZGlmICAvLyBkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVk
KF9fQk9STEFORENfXykKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0VYQ0VQVElPTlMKKworI2lmICFk
ZWZpbmVkKEdURVNUX0hBU19TVERfU1RSSU5HKQorLy8gRXZlbiB0aG91Z2ggd2UgZG9uJ3QgdXNl
IHRoaXMgbWFjcm8gYW55IGxvbmdlciwgd2Uga2VlcCBpdCBpbiBjYXNlCisvLyBzb21lIGNsaWVu
dHMgc3RpbGwgZGVwZW5kIG9uIGl0LgorIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9TVFJJTkcgMQor
I2VsaWYgIUdURVNUX0hBU19TVERfU1RSSU5HCisvLyBUaGUgdXNlciB0b2xkIHVzIHRoYXQgOjpz
dGQ6OnN0cmluZyBpc24ndCBhdmFpbGFibGUuCisjIGVycm9yICJHb29nbGUgVGVzdCBjYW5ub3Qg
YmUgdXNlZCB3aGVyZSA6OnN0ZDo6c3RyaW5nIGlzbid0IGF2YWlsYWJsZS4iCisjZW5kaWYgIC8v
ICFkZWZpbmVkKEdURVNUX0hBU19TVERfU1RSSU5HKQorCisjaWZuZGVmIEdURVNUX0hBU19HTE9C
QUxfU1RSSU5HCisvLyBUaGUgdXNlciBkaWRuJ3QgdGVsbCB1cyB3aGV0aGVyIDo6c3RyaW5nIGlz
IGF2YWlsYWJsZSwgc28gd2UgbmVlZAorLy8gdG8gZmlndXJlIGl0IG91dC4KKworIyBkZWZpbmUg
R1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcgMAorCisjZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxf
U1RSSU5HCisKKyNpZm5kZWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCisvLyBUaGUgdXNlciBkaWRu
J3QgdGVsbCB1cyB3aGV0aGVyIDo6c3RkOjp3c3RyaW5nIGlzIGF2YWlsYWJsZSwgc28gd2UgbmVl
ZAorLy8gdG8gZmlndXJlIGl0IG91dC4KKy8vIFRPRE8od2FuQGdvb2dsZS5jb20pOiB1c2VzIGF1
dG9jb25mIHRvIGRldGVjdCB3aGV0aGVyIDo6c3RkOjp3c3RyaW5nCisvLyAgIGlzIGF2YWlsYWJs
ZS4KKworLy8gQ3lnd2luIDEuNyBhbmQgYmVsb3cgZG9lc24ndCBzdXBwb3J0IDo6c3RkOjp3c3Ry
aW5nLgorLy8gU29sYXJpcycgbGliYysrIGRvZXNuJ3Qgc3VwcG9ydCBpdCBlaXRoZXIuICBBbmRy
b2lkIGhhcworLy8gbm8gc3VwcG9ydCBmb3IgaXQgYXQgbGVhc3QgYXMgcmVjZW50IGFzIEZyb3lv
ICgyLjIpLgorIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9XU1RSSU5HIFwKKyAgICAoIShHVEVTVF9P
U19MSU5VWF9BTkRST0lEIHx8IEdURVNUX09TX0NZR1dJTiB8fCBHVEVTVF9PU19TT0xBUklTKSkK
KworI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX1dTVFJJTkcKKworI2lmbmRlZiBHVEVTVF9IQVNf
R0xPQkFMX1dTVFJJTkcKKy8vIFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzIHdoZXRoZXIgOjp3c3Ry
aW5nIGlzIGF2YWlsYWJsZSwgc28gd2UgbmVlZAorLy8gdG8gZmlndXJlIGl0IG91dC4KKyMgZGVm
aW5lIEdURVNUX0hBU19HTE9CQUxfV1NUUklORyBcCisgICAgKEdURVNUX0hBU19TVERfV1NUUklO
RyAmJiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORykKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JB
TF9XU1RSSU5HCisKKy8vIERldGVybWluZXMgd2hldGhlciBSVFRJIGlzIGF2YWlsYWJsZS4KKyNp
Zm5kZWYgR1RFU1RfSEFTX1JUVEkKKy8vIFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzIHdoZXRoZXIg
UlRUSSBpcyBlbmFibGVkLCBzbyB3ZSBuZWVkIHRvCisvLyBmaWd1cmUgaXQgb3V0LgorCisjIGlm
ZGVmIF9NU0NfVkVSCisKKyMgIGlmZGVmIF9DUFBSVFRJICAvLyBNU1ZDIGRlZmluZXMgdGhpcyBt
YWNybyBpZmYgUlRUSSBpcyBlbmFibGVkLgorIyAgIGRlZmluZSBHVEVTVF9IQVNfUlRUSSAxCisj
ICBlbHNlCisjICAgZGVmaW5lIEdURVNUX0hBU19SVFRJIDAKKyMgIGVuZGlmCisKKy8vIFN0YXJ0
aW5nIHdpdGggdmVyc2lvbiA0LjMuMiwgZ2NjIGRlZmluZXMgX19HWFhfUlRUSSBpZmYgUlRUSSBp
cyBlbmFibGVkLgorIyBlbGlmIGRlZmluZWQoX19HTlVDX18pICYmIChHVEVTVF9HQ0NfVkVSXyA+
PSA0MDMwMikKKworIyAgaWZkZWYgX19HWFhfUlRUSQorLy8gV2hlbiBidWlsZGluZyBhZ2FpbnN0
IFNUTHBvcnQgd2l0aCB0aGUgQW5kcm9pZCBOREsgYW5kIHdpdGgKKy8vIC1mcnR0aSAtZm5vLWV4
Y2VwdGlvbnMsIHRoZSBidWlsZCBmYWlscyBhdCBsaW5rIHRpbWUgd2l0aCB1bmRlZmluZWQKKy8v
IHJlZmVyZW5jZXMgdG8gX19jeGFfYmFkX3R5cGVpZC4gTm90ZSBzdXJlIGlmIFNUTCBvciB0b29s
Y2hhaW4gYnVnLAorLy8gc28gZGlzYWJsZSBSVFRJIHdoZW4gZGV0ZWN0ZWQuCisjICAgaWYgR1RF
U1RfT1NfTElOVVhfQU5EUk9JRCAmJiBkZWZpbmVkKF9TVExQT1JUX01BSk9SKSAmJiBcCisgICAg
ICAgIWRlZmluZWQoX19FWENFUFRJT05TKQorIyAgICBkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMAor
IyAgIGVsc2UKKyMgICAgZGVmaW5lIEdURVNUX0hBU19SVFRJIDEKKyMgICBlbmRpZiAgLy8gR1RF
U1RfT1NfTElOVVhfQU5EUk9JRCAmJiBfX1NUTFBPUlRfTUFKT1IgJiYgIV9fRVhDRVBUSU9OUwor
IyAgZWxzZQorIyAgIGRlZmluZSBHVEVTVF9IQVNfUlRUSSAwCisjICBlbmRpZiAgLy8gX19HWFhf
UlRUSQorCisvLyBDbGFuZyBkZWZpbmVzIF9fR1hYX1JUVEkgc3RhcnRpbmcgd2l0aCB2ZXJzaW9u
IDMuMCwgYnV0IGl0cyBtYW51YWwgcmVjb21tZW5kcworLy8gdXNpbmcgaGFzX2ZlYXR1cmUgaW5z
dGVhZC4gaGFzX2ZlYXR1cmUoY3h4X3J0dGkpIGlzIHN1cHBvcnRlZCBzaW5jZSAyLjcsIHRoZQor
Ly8gZmlyc3QgdmVyc2lvbiB3aXRoIEMrKyBzdXBwb3J0LgorIyBlbGlmIGRlZmluZWQoX19jbGFu
Z19fKQorCisjICBkZWZpbmUgR1RFU1RfSEFTX1JUVEkgX19oYXNfZmVhdHVyZShjeHhfcnR0aSkK
KworLy8gU3RhcnRpbmcgd2l0aCB2ZXJzaW9uIDkuMCBJQk0gVmlzdWFsIEFnZSBkZWZpbmVzIF9f
UlRUSV9BTExfXyB0byAxIGlmCisvLyBib3RoIHRoZSB0eXBlaWQgYW5kIGR5bmFtaWNfY2FzdCBm
ZWF0dXJlcyBhcmUgcHJlc2VudC4KKyMgZWxpZiBkZWZpbmVkKF9fSUJNQ1BQX18pICYmIChfX0lC
TUNQUF9fID49IDkwMCkKKworIyAgaWZkZWYgX19SVFRJX0FMTF9fCisjICAgZGVmaW5lIEdURVNU
X0hBU19SVFRJIDEKKyMgIGVsc2UKKyMgICBkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMAorIyAgZW5k
aWYKKworIyBlbHNlCisKKy8vIEZvciBhbGwgb3RoZXIgY29tcGlsZXJzLCB3ZSBhc3N1bWUgUlRU
SSBpcyBlbmFibGVkLgorIyAgZGVmaW5lIEdURVNUX0hBU19SVFRJIDEKKworIyBlbmRpZiAgLy8g
X01TQ19WRVIKKworI2VuZGlmICAvLyBHVEVTVF9IQVNfUlRUSQorCisvLyBJdCdzIHRoaXMgaGVh
ZGVyJ3MgcmVzcG9uc2liaWxpdHkgdG8gI2luY2x1ZGUgPHR5cGVpbmZvPiB3aGVuIFJUVEkKKy8v
IGlzIGVuYWJsZWQuCisjaWYgR1RFU1RfSEFTX1JUVEkKKyMgaW5jbHVkZSA8dHlwZWluZm8+Cisj
ZW5kaWYKKworLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIEdvb2dsZSBUZXN0IGNhbiB1c2UgdGhlIHB0
aHJlYWRzIGxpYnJhcnkuCisjaWZuZGVmIEdURVNUX0hBU19QVEhSRUFECisvLyBUaGUgdXNlciBk
aWRuJ3QgdGVsbCB1cyBleHBsaWNpdGx5LCBzbyB3ZSBtYWtlIHJlYXNvbmFibGUgYXNzdW1wdGlv
bnMgYWJvdXQKKy8vIHdoaWNoIHBsYXRmb3JtcyBoYXZlIHB0aHJlYWRzIHN1cHBvcnQuCisvLwor
Ly8gVG8gZGlzYWJsZSB0aHJlYWRpbmcgc3VwcG9ydCBpbiBHb29nbGUgVGVzdCwgYWRkIC1ER1RF
U1RfSEFTX1BUSFJFQUQ9MAorLy8gdG8geW91ciBjb21waWxlciBmbGFncy4KKyMgZGVmaW5lIEdU
RVNUX0hBU19QVEhSRUFEIChHVEVTVF9PU19MSU5VWCB8fCBHVEVTVF9PU19NQUMgfHwgR1RFU1Rf
T1NfSFBVWCBcCisgICAgfHwgR1RFU1RfT1NfUU5YIHx8IEdURVNUX09TX0ZSRUVCU0QgfHwgR1RF
U1RfT1NfTkFDTCkKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1BUSFJFQUQKKworI2lmIEdURVNUX0hB
U19QVEhSRUFECisvLyBndGVzdC1wb3J0LmggZ3VhcmFudGVlcyB0byAjaW5jbHVkZSA8cHRocmVh
ZC5oPiB3aGVuIEdURVNUX0hBU19QVEhSRUFEIGlzCisvLyB0cnVlLgorIyBpbmNsdWRlIDxwdGhy
ZWFkLmg+ICAvLyBOT0xJTlQKKworLy8gRm9yIHRpbWVzcGVjIGFuZCBuYW5vc2xlZXAsIHVzZWQg
YmVsb3cuCisjIGluY2x1ZGUgPHRpbWUuaD4gIC8vIE5PTElOVAorI2VuZGlmCisKKy8vIERldGVy
bWluZXMgaWYgaGFzaF9tYXAvaGFzaF9zZXQgYXJlIGF2YWlsYWJsZS4KKy8vIE9ubHkgdXNlZCBm
b3IgdGVzdGluZyBhZ2FpbnN0IHRob3NlIGNvbnRhaW5lcnMuCisjaWYgIWRlZmluZWQoR1RFU1Rf
SEFTX0hBU0hfTUFQXykKKyMgaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSIDwgMTkw
MCkKKyMgIGRlZmluZSBHVEVTVF9IQVNfSEFTSF9NQVBfIDEgIC8vIEluZGljYXRlcyB0aGF0IGhh
c2hfbWFwIGlzIGF2YWlsYWJsZS4KKyMgIGRlZmluZSBHVEVTVF9IQVNfSEFTSF9TRVRfIDEgIC8v
IEluZGljYXRlcyB0aGF0IGhhc2hfc2V0IGlzIGF2YWlsYWJsZS4KKyMgZW5kaWYgIC8vIF9NU0Nf
VkVSCisjZW5kaWYgIC8vICFkZWZpbmVkKEdURVNUX0hBU19IQVNIX01BUF8pCisKKy8vIERldGVy
bWluZXMgd2hldGhlciBHb29nbGUgVGVzdCBjYW4gdXNlIHRyMS90dXBsZS4gIFlvdSBjYW4gZGVm
aW5lCisvLyB0aGlzIG1hY3JvIHRvIDAgdG8gcHJldmVudCBHb29nbGUgVGVzdCBmcm9tIHVzaW5n
IHR1cGxlIChhbnkKKy8vIGZlYXR1cmUgZGVwZW5kaW5nIG9uIHR1cGxlIHdpdGggYmUgZGlzYWJs
ZWQgaW4gdGhpcyBtb2RlKS4KKyNpZm5kZWYgR1RFU1RfSEFTX1RSMV9UVVBMRQorIyBpZiBHVEVT
VF9PU19MSU5VWF9BTkRST0lEICYmIGRlZmluZWQoX1NUTFBPUlRfTUFKT1IpCisvLyBTVExwb3J0
LCBwcm92aWRlZCB3aXRoIHRoZSBBbmRyb2lkIE5ESywgaGFzIG5laXRoZXIgPHRyMS90dXBsZT4g
b3IgPHR1cGxlPi4KKyMgIGRlZmluZSBHVEVTVF9IQVNfVFIxX1RVUExFIDAKKyMgZWxzZQorLy8g
VGhlIHVzZXIgZGlkbid0IHRlbGwgdXMgbm90IHRvIGRvIGl0LCBzbyB3ZSBhc3N1bWUgaXQncyBP
Sy4KKyMgIGRlZmluZSBHVEVTVF9IQVNfVFIxX1RVUExFIDEKKyMgZW5kaWYKKyNlbmRpZiAgLy8g
R1RFU1RfSEFTX1RSMV9UVVBMRQorCisvLyBEZXRlcm1pbmVzIHdoZXRoZXIgR29vZ2xlIFRlc3Qn
cyBvd24gdHIxIHR1cGxlIGltcGxlbWVudGF0aW9uCisvLyBzaG91bGQgYmUgdXNlZC4KKyNpZm5k
ZWYgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUKKy8vIFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzLCBz
byB3ZSBuZWVkIHRvIGZpZ3VyZSBpdCBvdXQuCisKKy8vIFdlIHVzZSBvdXIgb3duIFRSMSB0dXBs
ZSBpZiB3ZSBhcmVuJ3Qgc3VyZSB0aGUgdXNlciBoYXMgYW4KKy8vIGltcGxlbWVudGF0aW9uIG9m
IGl0IGFscmVhZHkuICBBdCB0aGlzIHRpbWUsIGxpYnN0ZGMrKyA0LjAuMCsgYW5kCisvLyBNU1ZD
IDIwMTAgYXJlIHRoZSBvbmx5IG1haW5zdHJlYW0gc3RhbmRhcmQgbGlicmFyaWVzIHRoYXQgY29t
ZQorLy8gd2l0aCBhIFRSMSB0dXBsZSBpbXBsZW1lbnRhdGlvbi4gIE5WSURJQSdzIENVREEgTlZD
QyBjb21waWxlcgorLy8gcHJldGVuZHMgdG8gYmUgR0NDIGJ5IGRlZmluaW5nIF9fR05VQ19fIGFu
ZCBmcmllbmRzLCBidXQgY2Fubm90CisvLyBjb21waWxlIEdDQydzIHR1cGxlIGltcGxlbWVudGF0
aW9uLiAgTVNWQyAyMDA4ICg5LjApIHByb3ZpZGVzIFRSMQorLy8gdHVwbGUgaW4gYSAzMjMgTUIg
RmVhdHVyZSBQYWNrIGRvd25sb2FkLCB3aGljaCB3ZSBjYW5ub3QgYXNzdW1lIHRoZQorLy8gdXNl
ciBoYXMuICBRTlgncyBRQ0MgY29tcGlsZXIgaXMgYSBtb2RpZmllZCBHQ0MgYnV0IGl0IGRvZXNu
J3QKKy8vIHN1cHBvcnQgVFIxIHR1cGxlLiAgbGliYysrIG9ubHkgcHJvdmlkZXMgc3RkOjp0dXBs
ZSwgaW4gQysrMTEgbW9kZSwKKy8vIGFuZCBpdCBjYW4gYmUgdXNlZCB3aXRoIHNvbWUgY29tcGls
ZXJzIHRoYXQgZGVmaW5lIF9fR05VQ19fLgorIyBpZiAoZGVmaW5lZChfX0dOVUNfXykgJiYgIWRl
ZmluZWQoX19DVURBQ0NfXykgJiYgKEdURVNUX0dDQ19WRVJfID49IDQwMDAwKSBcCisgICAgICAm
JiAhR1RFU1RfT1NfUU5YICYmICFkZWZpbmVkKF9MSUJDUFBfVkVSU0lPTikpIHx8IF9NU0NfVkVS
ID49IDE2MDAKKyMgIGRlZmluZSBHVEVTVF9FTlZfSEFTX1RSMV9UVVBMRV8gMQorIyBlbmRpZgor
CisvLyBDKysxMSBzcGVjaWZpZXMgdGhhdCA8dHVwbGU+IHByb3ZpZGVzIHN0ZDo6dHVwbGUuIFVz
ZSB0aGF0IGlmIGd0ZXN0IGlzIHVzZWQKKy8vIGluIEMrKzExIG1vZGUgYW5kIGxpYnN0ZGMrKyBp
c24ndCB2ZXJ5IG9sZCAoYmluYXJpZXMgdGFyZ2V0aW5nIE9TIFggMTAuNgorLy8gY2FuIGJ1aWxk
IHdpdGggY2xhbmcgYnV0IG5lZWQgdG8gdXNlIGdjYzQuMidzIGxpYnN0ZGMrKykuCisjIGlmIEdU
RVNUX0xBTkdfQ1hYMTEgJiYgKCFkZWZpbmVkKF9fR0xJQkNYWF9fKSB8fCBfX0dMSUJDWFhfXyA+
IDIwMTEwMzI1KQorIyAgZGVmaW5lIEdURVNUX0VOVl9IQVNfU1REX1RVUExFXyAxCisjIGVuZGlm
CisKKyMgaWYgR1RFU1RfRU5WX0hBU19UUjFfVFVQTEVfIHx8IEdURVNUX0VOVl9IQVNfU1REX1RV
UExFXworIyAgZGVmaW5lIEdURVNUX1VTRV9PV05fVFIxX1RVUExFIDAKKyMgZWxzZQorIyAgZGVm
aW5lIEdURVNUX1VTRV9PV05fVFIxX1RVUExFIDEKKyMgZW5kaWYKKworI2VuZGlmICAvLyBHVEVT
VF9VU0VfT1dOX1RSMV9UVVBMRQorCisvLyBUbyBhdm9pZCBjb25kaXRpb25hbCBjb21waWxhdGlv
biBldmVyeXdoZXJlLCB3ZSBtYWtlIGl0CisvLyBndGVzdC1wb3J0LmgncyByZXNwb25zaWJpbGl0
eSB0byAjaW5jbHVkZSB0aGUgaGVhZGVyIGltcGxlbWVudGluZworLy8gdHVwbGUuCisjaWYgR1RF
U1RfSEFTX1NURF9UVVBMRV8KKyMgaW5jbHVkZSA8dHVwbGU+ICAvLyBJV1lVIHByYWdtYTogZXhw
b3J0CisjIGRlZmluZSBHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfIDo6c3RkCisjZW5kaWYgIC8vIEdU
RVNUX0hBU19TVERfVFVQTEVfCisKKy8vIFdlIGluY2x1ZGUgdHIxOjp0dXBsZSBldmVuIGlmIHN0
ZDo6dHVwbGUgaXMgYXZhaWxhYmxlIHRvIGRlZmluZSBwcmludGVycyBmb3IKKy8vIHRoZW0uCisj
aWYgR1RFU1RfSEFTX1RSMV9UVVBMRQorIyBpZm5kZWYgR1RFU1RfVFVQTEVfTkFNRVNQQUNFXwor
IyAgZGVmaW5lIEdURVNUX1RVUExFX05BTUVTUEFDRV8gOjpzdGQ6OnRyMQorIyBlbmRpZiAgLy8g
R1RFU1RfVFVQTEVfTkFNRVNQQUNFXworCisjIGlmIEdURVNUX1VTRV9PV05fVFIxX1RVUExFCisj
ICBpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC10dXBsZS5oIiAgLy8gSVdZVSBwcmFnbWE6
IGV4cG9ydCAgLy8gTk9MSU5UCisjIGVsaWYgR1RFU1RfRU5WX0hBU19TVERfVFVQTEVfCisjICBp
bmNsdWRlIDx0dXBsZT4KKy8vIEMrKzExIHB1dHMgaXRzIHR1cGxlIGludG8gdGhlIDo6c3RkIG5h
bWVzcGFjZSByYXRoZXIgdGhhbgorLy8gOjpzdGQ6OnRyMS4gIGd0ZXN0IGV4cGVjdHMgdHVwbGUg
dG8gbGl2ZSBpbiA6OnN0ZDo6dHIxLCBzbyBwdXQgaXQgdGhlcmUuCisvLyBUaGlzIGNhdXNlcyB1
bmRlZmluZWQgYmVoYXZpb3IsIGJ1dCBzdXBwb3J0ZWQgY29tcGlsZXJzIHJlYWN0IGluCisvLyB0
aGUgd2F5IHdlIGludGVuZC4KK25hbWVzcGFjZSBzdGQgeworbmFtZXNwYWNlIHRyMSB7Cit1c2lu
ZyA6OnN0ZDo6Z2V0OwordXNpbmcgOjpzdGQ6Om1ha2VfdHVwbGU7Cit1c2luZyA6OnN0ZDo6dHVw
bGU7Cit1c2luZyA6OnN0ZDo6dHVwbGVfZWxlbWVudDsKK3VzaW5nIDo6c3RkOjp0dXBsZV9zaXpl
OworfQorfQorCisjIGVsaWYgR1RFU1RfT1NfU1lNQklBTgorCisvLyBPbiBTeW1iaWFuLCBCT09T
VF9IQVNfVFIxX1RVUExFIGNhdXNlcyBCb29zdCdzIFRSMSB0dXBsZSBsaWJyYXJ5IHRvCisvLyB1
c2UgU1RMcG9ydCdzIHR1cGxlIGltcGxlbWVudGF0aW9uLCB3aGljaCB1bmZvcnR1bmF0ZWx5IGRv
ZXNuJ3QKKy8vIHdvcmsgYXMgdGhlIGNvcHkgb2YgU1RMcG9ydCBkaXN0cmlidXRlZCB3aXRoIFN5
bWJpYW4gaXMgaW5jb21wbGV0ZS4KKy8vIEJ5IG1ha2luZyBzdXJlIEJPT1NUX0hBU19UUjFfVFVQ
TEUgaXMgdW5kZWZpbmVkLCB3ZSBmb3JjZSBCb29zdCB0bworLy8gdXNlIGl0cyBvd24gdHVwbGUg
aW1wbGVtZW50YXRpb24uCisjICBpZmRlZiBCT09TVF9IQVNfVFIxX1RVUExFCisjICAgdW5kZWYg
Qk9PU1RfSEFTX1RSMV9UVVBMRQorIyAgZW5kaWYgIC8vIEJPT1NUX0hBU19UUjFfVFVQTEUKKwor
Ly8gVGhpcyBwcmV2ZW50cyA8Ym9vc3QvdHIxL2RldGFpbC9jb25maWcuaHBwPiwgd2hpY2ggZGVm
aW5lcworLy8gQk9PU1RfSEFTX1RSMV9UVVBMRSwgZnJvbSBiZWluZyAjaW5jbHVkZWQgYnkgQm9v
c3QncyA8dHVwbGU+LgorIyAgZGVmaW5lIEJPT1NUX1RSMV9ERVRBSUxfQ09ORklHX0hQUF9JTkNM
VURFRAorIyAgaW5jbHVkZSA8dHVwbGU+ICAvLyBJV1lVIHByYWdtYTogZXhwb3J0ICAvLyBOT0xJ
TlQKKworIyBlbGlmIGRlZmluZWQoX19HTlVDX18pICYmIChHVEVTVF9HQ0NfVkVSXyA+PSA0MDAw
MCkKKy8vIEdDQyA0LjArIGltcGxlbWVudHMgdHIxL3R1cGxlIGluIHRoZSA8dHIxL3R1cGxlPiBo
ZWFkZXIuICBUaGlzIGRvZXMKKy8vIG5vdCBjb25mb3JtIHRvIHRoZSBUUjEgc3BlYywgd2hpY2gg
cmVxdWlyZXMgdGhlIGhlYWRlciB0byBiZSA8dHVwbGU+LgorCisjICBpZiAhR1RFU1RfSEFTX1JU
VEkgJiYgR1RFU1RfR0NDX1ZFUl8gPCA0MDMwMgorLy8gVW50aWwgdmVyc2lvbiA0LjMuMiwgZ2Nj
IGhhcyBhIGJ1ZyB0aGF0IGNhdXNlcyA8dHIxL2Z1bmN0aW9uYWw+LAorLy8gd2hpY2ggaXMgI2lu
Y2x1ZGVkIGJ5IDx0cjEvdHVwbGU+LCB0byBub3QgY29tcGlsZSB3aGVuIFJUVEkgaXMKKy8vIGRp
c2FibGVkLiAgX1RSMV9GVU5DVElPTkFMIGlzIHRoZSBoZWFkZXIgZ3VhcmQgZm9yCisvLyA8dHIx
L2Z1bmN0aW9uYWw+LiAgSGVuY2UgdGhlIGZvbGxvd2luZyAjZGVmaW5lIGlzIGEgaGFjayB0byBw
cmV2ZW50CisvLyA8dHIxL2Z1bmN0aW9uYWw+IGZyb20gYmVpbmcgaW5jbHVkZWQuCisjICAgZGVm
aW5lIF9UUjFfRlVOQ1RJT05BTCAxCisjICAgaW5jbHVkZSA8dHIxL3R1cGxlPgorIyAgIHVuZGVm
IF9UUjFfRlVOQ1RJT05BTCAgLy8gQWxsb3dzIHRoZSB1c2VyIHRvICNpbmNsdWRlCisgICAgICAg
ICAgICAgICAgICAgICAgICAvLyA8dHIxL2Z1bmN0aW9uYWw+IGlmIGhlIGNob29zZXMgdG8uCisj
ICBlbHNlCisjICAgaW5jbHVkZSA8dHIxL3R1cGxlPiAgLy8gTk9MSU5UCisjICBlbmRpZiAgLy8g
IUdURVNUX0hBU19SVFRJICYmIEdURVNUX0dDQ19WRVJfIDwgNDAzMDIKKworIyBlbHNlCisvLyBJ
ZiB0aGUgY29tcGlsZXIgaXMgbm90IEdDQyA0LjArLCB3ZSBhc3N1bWUgdGhlIHVzZXIgaXMgdXNp
bmcgYQorLy8gc3BlYy1jb25mb3JtaW5nIFRSMSBpbXBsZW1lbnRhdGlvbi4KKyMgIGluY2x1ZGUg
PHR1cGxlPiAgLy8gSVdZVSBwcmFnbWE6IGV4cG9ydCAgLy8gTk9MSU5UCisjIGVuZGlmICAvLyBH
VEVTVF9VU0VfT1dOX1RSMV9UVVBMRQorCisjZW5kaWYgIC8vIEdURVNUX0hBU19UUjFfVFVQTEUK
KworLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIGNsb25lKDIpIGlzIHN1cHBvcnRlZC4KKy8vIFVzdWFs
bHkgaXQgd2lsbCBvbmx5IGJlIGF2YWlsYWJsZSBvbiBMaW51eCwgZXhjbHVkaW5nCisvLyBMaW51
eCBvbiB0aGUgSXRhbml1bSBhcmNoaXRlY3R1cmUuCisvLyBBbHNvIHNlZSBodHRwOi8vbGludXgu
ZGllLm5ldC9tYW4vMi9jbG9uZS4KKyNpZm5kZWYgR1RFU1RfSEFTX0NMT05FCisvLyBUaGUgdXNl
ciBkaWRuJ3QgdGVsbCB1cywgc28gd2UgbmVlZCB0byBmaWd1cmUgaXQgb3V0LgorCisjIGlmIEdU
RVNUX09TX0xJTlVYICYmICFkZWZpbmVkKF9faWE2NF9fKQorIyAgaWYgR1RFU1RfT1NfTElOVVhf
QU5EUk9JRAorLy8gT24gQW5kcm9pZCwgY2xvbmUoKSBiZWNhbWUgYXZhaWxhYmxlIGF0IGRpZmZl
cmVudCBBUEkgbGV2ZWxzIGZvciBlYWNoIDMyLWJpdAorLy8gYXJjaGl0ZWN0dXJlLgorIyAgICBp
ZiBkZWZpbmVkKF9fTFA2NF9fKSB8fCBcCisgICAgICAgIChkZWZpbmVkKF9fYXJtX18pICYmIF9f
QU5EUk9JRF9BUElfXyA+PSA5KSB8fCBcCisgICAgICAgIChkZWZpbmVkKF9fbWlwc19fKSAmJiBf
X0FORFJPSURfQVBJX18gPj0gMTIpIHx8IFwKKyAgICAgICAgKGRlZmluZWQoX19pMzg2X18pICYm
IF9fQU5EUk9JRF9BUElfXyA+PSAxNykKKyMgICAgIGRlZmluZSBHVEVTVF9IQVNfQ0xPTkUgMQor
IyAgICBlbHNlCisjICAgICBkZWZpbmUgR1RFU1RfSEFTX0NMT05FIDAKKyMgICAgZW5kaWYKKyMg
IGVsc2UKKyMgICBkZWZpbmUgR1RFU1RfSEFTX0NMT05FIDEKKyMgIGVuZGlmCisjIGVsc2UKKyMg
IGRlZmluZSBHVEVTVF9IQVNfQ0xPTkUgMAorIyBlbmRpZiAgLy8gR1RFU1RfT1NfTElOVVggJiYg
IWRlZmluZWQoX19pYTY0X18pCisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0NMT05FCisKKy8vIERl
dGVybWluZXMgd2hldGhlciB0byBzdXBwb3J0IHN0cmVhbSByZWRpcmVjdGlvbi4gVGhpcyBpcyB1
c2VkIHRvIHRlc3QKKy8vIG91dHB1dCBjb3JyZWN0bmVzcyBhbmQgdG8gaW1wbGVtZW50IGRlYXRo
IHRlc3RzLgorI2lmbmRlZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OCisvLyBCeSBkZWZh
dWx0LCB3ZSBhc3N1bWUgdGhhdCBzdHJlYW0gcmVkaXJlY3Rpb24gaXMgc3VwcG9ydGVkIG9uIGFs
bAorLy8gcGxhdGZvcm1zIGV4Y2VwdCBrbm93biBtb2JpbGUgb25lcy4KKyMgaWYgR1RFU1RfT1Nf
V0lORE9XU19NT0JJTEUgfHwgR1RFU1RfT1NfU1lNQklBTiB8fCBcCisgICAgR1RFU1RfT1NfV0lO
RE9XU19QSE9ORSB8fCBHVEVTVF9PU19XSU5ET1dTX1JUCisjICBkZWZpbmUgR1RFU1RfSEFTX1NU
UkVBTV9SRURJUkVDVElPTiAwCisjIGVsc2UKKyMgIGRlZmluZSBHVEVTVF9IQVNfU1RSRUFNX1JF
RElSRUNUSU9OIDEKKyMgZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTX01PQklMRSAmJiAhR1RF
U1RfT1NfU1lNQklBTgorI2VuZGlmICAvLyBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OCisK
Ky8vIERldGVybWluZXMgd2hldGhlciB0byBzdXBwb3J0IGRlYXRoIHRlc3RzLgorLy8gR29vZ2xl
IFRlc3QgZG9lcyBub3Qgc3VwcG9ydCBkZWF0aCB0ZXN0cyBmb3IgVkMgNy4xIGFuZCBlYXJsaWVy
IGFzCisvLyBhYm9ydCgpIGluIGEgVkMgNy4xIGFwcGxpY2F0aW9uIGNvbXBpbGVkIGFzIEdVSSBp
biBkZWJ1ZyBjb25maWcKKy8vIHBvcHMgdXAgYSBkaWFsb2cgd2luZG93IHRoYXQgY2Fubm90IGJl
IHN1cHByZXNzZWQgcHJvZ3JhbW1hdGljYWxseS4KKyNpZiAoR1RFU1RfT1NfTElOVVggfHwgR1RF
U1RfT1NfQ1lHV0lOIHx8IEdURVNUX09TX1NPTEFSSVMgfHwgXAorICAgICAoR1RFU1RfT1NfTUFD
ICYmICFHVEVTVF9PU19JT1MpIHx8IFwKKyAgICAgKEdURVNUX09TX1dJTkRPV1NfREVTS1RPUCAm
JiBfTVNDX1ZFUiA+PSAxNDAwKSB8fCBcCisgICAgIEdURVNUX09TX1dJTkRPV1NfTUlOR1cgfHwg
R1RFU1RfT1NfQUlYIHx8IEdURVNUX09TX0hQVVggfHwgXAorICAgICBHVEVTVF9PU19PUEVOQlNE
IHx8IEdURVNUX09TX1FOWCB8fCBHVEVTVF9PU19GUkVFQlNEKQorIyBkZWZpbmUgR1RFU1RfSEFT
X0RFQVRIX1RFU1QgMQorI2VuZGlmCisKKy8vIFdlIGRvbid0IHN1cHBvcnQgTVNWQyA3LjEgd2l0
aCBleGNlcHRpb25zIGRpc2FibGVkIG5vdy4gIFRoZXJlZm9yZQorLy8gYWxsIHRoZSBjb21waWxl
cnMgd2UgY2FyZSBhYm91dCBhcmUgYWRlcXVhdGUgZm9yIHN1cHBvcnRpbmcKKy8vIHZhbHVlLXBh
cmFtZXRlcml6ZWQgdGVzdHMuCisjZGVmaW5lIEdURVNUX0hBU19QQVJBTV9URVNUIDEKKworLy8g
RGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHN1cHBvcnQgdHlwZS1kcml2ZW4gdGVzdHMuCisKKy8vIFR5
cGVkIHRlc3RzIG5lZWQgPHR5cGVpbmZvPiBhbmQgdmFyaWFkaWMgbWFjcm9zLCB3aGljaCBHQ0Ms
IFZDKysgOC4wLAorLy8gU3VuIFBybyBDQywgSUJNIFZpc3VhbCBBZ2UsIGFuZCBIUCBhQ0Mgc3Vw
cG9ydC4KKyNpZiBkZWZpbmVkKF9fR05VQ19fKSB8fCAoX01TQ19WRVIgPj0gMTQwMCkgfHwgZGVm
aW5lZChfX1NVTlBST19DQykgfHwgXAorICAgIGRlZmluZWQoX19JQk1DUFBfXykgfHwgZGVmaW5l
ZChfX0hQX2FDQykKKyMgZGVmaW5lIEdURVNUX0hBU19UWVBFRF9URVNUIDEKKyMgZGVmaW5lIEdU
RVNUX0hBU19UWVBFRF9URVNUX1AgMQorI2VuZGlmCisKKy8vIERldGVybWluZXMgd2hldGhlciB0
byBzdXBwb3J0IENvbWJpbmUoKS4gVGhpcyBvbmx5IG1ha2VzIHNlbnNlIHdoZW4KKy8vIHZhbHVl
LXBhcmFtZXRlcml6ZWQgdGVzdHMgYXJlIGVuYWJsZWQuICBUaGUgaW1wbGVtZW50YXRpb24gZG9l
c24ndAorLy8gd29yayBvbiBTdW4gU3R1ZGlvIHNpbmNlIGl0IGRvZXNuJ3QgdW5kZXJzdGFuZCB0
ZW1wbGF0ZWQgY29udmVyc2lvbgorLy8gb3BlcmF0b3JzLgorI2lmIEdURVNUX0hBU19QQVJBTV9U
RVNUICYmIEdURVNUX0hBU19UUjFfVFVQTEUgJiYgIWRlZmluZWQoX19TVU5QUk9fQ0MpCisjIGRl
ZmluZSBHVEVTVF9IQVNfQ09NQklORSAxCisjZW5kaWYKKworLy8gRGV0ZXJtaW5lcyB3aGV0aGVy
IHRoZSBzeXN0ZW0gY29tcGlsZXIgdXNlcyBVVEYtMTYgZm9yIGVuY29kaW5nIHdpZGUgc3RyaW5n
cy4KKyNkZWZpbmUgR1RFU1RfV0lERV9TVFJJTkdfVVNFU19VVEYxNl8gXAorICAgIChHVEVTVF9P
U19XSU5ET1dTIHx8IEdURVNUX09TX0NZR1dJTiB8fCBHVEVTVF9PU19TWU1CSUFOIHx8IEdURVNU
X09TX0FJWCkKKworLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRlc3QgcmVzdWx0cyBjYW4gYmUgc3Ry
ZWFtZWQgdG8gYSBzb2NrZXQuCisjaWYgR1RFU1RfT1NfTElOVVgKKyMgZGVmaW5lIEdURVNUX0NB
Tl9TVFJFQU1fUkVTVUxUU18gMQorI2VuZGlmCisKKy8vIERlZmluZXMgc29tZSB1dGlsaXR5IG1h
Y3Jvcy4KKworLy8gVGhlIEdOVSBjb21waWxlciBlbWl0cyBhIHdhcm5pbmcgaWYgbmVzdGVkICJp
ZiIgc3RhdGVtZW50cyBhcmUgZm9sbG93ZWQgYnkKKy8vIGFuICJlbHNlIiBzdGF0ZW1lbnQgYW5k
IGJyYWNlcyBhcmUgbm90IHVzZWQgdG8gZXhwbGljaXRseSBkaXNhbWJpZ3VhdGUgdGhlCisvLyAi
ZWxzZSIgYmluZGluZy4gIFRoaXMgbGVhZHMgdG8gcHJvYmxlbXMgd2l0aCBjb2RlIGxpa2U6Cisv
LworLy8gICBpZiAoZ2F0ZSkKKy8vICAgICBBU1NFUlRfKihjb25kaXRpb24pIDw8ICJTb21lIG1l
c3NhZ2UiOworLy8KKy8vIFRoZSAic3dpdGNoICgwKSBjYXNlIDA6IiBpZGlvbSBpcyB1c2VkIHRv
IHN1cHByZXNzIHRoaXMuCisjaWZkZWYgX19JTlRFTF9DT01QSUxFUgorIyBkZWZpbmUgR1RFU1Rf
QU1CSUdVT1VTX0VMU0VfQkxPQ0tFUl8KKyNlbHNlCisjIGRlZmluZSBHVEVTVF9BTUJJR1VPVVNf
RUxTRV9CTE9DS0VSXyBzd2l0Y2ggKDApIGNhc2UgMDogZGVmYXVsdDogIC8vIE5PTElOVAorI2Vu
ZGlmCisKKy8vIFVzZSB0aGlzIGFubm90YXRpb24gYXQgdGhlIGVuZCBvZiBhIHN0cnVjdC9jbGFz
cyBkZWZpbml0aW9uIHRvCisvLyBwcmV2ZW50IHRoZSBjb21waWxlciBmcm9tIG9wdGltaXppbmcg
YXdheSBpbnN0YW5jZXMgdGhhdCBhcmUgbmV2ZXIKKy8vIHVzZWQuICBUaGlzIGlzIHVzZWZ1bCB3
aGVuIGFsbCBpbnRlcmVzdGluZyBsb2dpYyBoYXBwZW5zIGluc2lkZSB0aGUKKy8vIGMndG9yIGFu
ZCAvIG9yIGQndG9yLiAgRXhhbXBsZToKKy8vCisvLyAgIHN0cnVjdCBGb28geworLy8gICAgIEZv
bygpIHsgLi4uIH0KKy8vICAgfSBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXzsKKy8vCisvLyBBbHNv
IHVzZSBpdCBhZnRlciBhIHZhcmlhYmxlIG9yIHBhcmFtZXRlciBkZWNsYXJhdGlvbiB0byB0ZWxs
IHRoZQorLy8gY29tcGlsZXIgdGhlIHZhcmlhYmxlL3BhcmFtZXRlciBkb2VzIG5vdCBoYXZlIHRv
IGJlIHVzZWQuCisjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQoQ09NUElMRVJfSUND
KQorIyBkZWZpbmUgR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8gX19hdHRyaWJ1dGVfXyAoKHVudXNl
ZCkpCisjZWxpZiBkZWZpbmVkKF9fY2xhbmdfXykKKyMgaWYgX19oYXNfYXR0cmlidXRlKHVudXNl
ZCkKKyMgIGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXyBfX2F0dHJpYnV0ZV9fICgodW51
c2VkKSkKKyMgZW5kaWYKKyNlbmRpZgorI2lmbmRlZiBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXwor
IyBkZWZpbmUgR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8KKyNlbmRpZgorCisvLyBVc2UgdGhpcyBh
bm5vdGF0aW9uIGJlZm9yZSBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSBwcmludGYgZm9ybWF0IHN0
cmluZy4KKyNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChDT01QSUxFUl9JQ0MpCisj
IGlmIGRlZmluZWQoX19NSU5HV19QUklOVEZfRk9STUFUKQorLy8gTWluR1cgaGFzIHR3byBkaWZm
ZXJlbnQgcHJpbnRmIGltcGxlbWVudGF0aW9ucy4gRW5zdXJlIHRoZSBmb3JtYXQgbWFjcm8KKy8v
IG1hdGNoZXMgdGhlIHNlbGVjdGVkIGltcGxlbWVudGF0aW9uLiBTZWUKKy8vIGh0dHBzOi8vc291
cmNlZm9yZ2UubmV0L3AvbWluZ3ctdzY0L3dpa2kyL2dudSUyMHByaW50Zi8uCisjICBkZWZpbmUg
R1RFU1RfQVRUUklCVVRFX1BSSU5URl8oc3RyaW5nX2luZGV4LCBmaXJzdF90b19jaGVjaykgXAor
ICAgICAgIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18oX19NSU5HV19QUklOVEZfRk9STUFULCBz
dHJpbmdfaW5kZXgsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0X3Rv
X2NoZWNrKSkpCisjIGVsc2UKKyMgIGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfUFJJTlRGXyhzdHJp
bmdfaW5kZXgsIGZpcnN0X3RvX2NoZWNrKSBcCisgICAgICAgX19hdHRyaWJ1dGVfXygoX19mb3Jt
YXRfXyhfX3ByaW50Zl9fLCBzdHJpbmdfaW5kZXgsIGZpcnN0X3RvX2NoZWNrKSkpCisjIGVuZGlm
CisjZWxzZQorIyBkZWZpbmUgR1RFU1RfQVRUUklCVVRFX1BSSU5URl8oc3RyaW5nX2luZGV4LCBm
aXJzdF90b19jaGVjaykKKyNlbmRpZgorCisvLyBBIG1hY3JvIHRvIGRpc2FsbG93IG9wZXJhdG9y
PQorLy8gVGhpcyBzaG91bGQgYmUgdXNlZCBpbiB0aGUgcHJpdmF0ZTogZGVjbGFyYXRpb25zIGZv
ciBhIGNsYXNzLgorI2RlZmluZSBHVEVTVF9ESVNBTExPV19BU1NJR05fKHR5cGUpXAorICB2b2lk
IG9wZXJhdG9yPSh0eXBlIGNvbnN0ICYpCisKKy8vIEEgbWFjcm8gdG8gZGlzYWxsb3cgY29weSBj
b25zdHJ1Y3RvciBhbmQgb3BlcmF0b3I9CisvLyBUaGlzIHNob3VsZCBiZSB1c2VkIGluIHRoZSBw
cml2YXRlOiBkZWNsYXJhdGlvbnMgZm9yIGEgY2xhc3MuCisjZGVmaW5lIEdURVNUX0RJU0FMTE9X
X0NPUFlfQU5EX0FTU0lHTl8odHlwZSlcCisgIHR5cGUodHlwZSBjb25zdCAmKTtcCisgIEdURVNU
X0RJU0FMTE9XX0FTU0lHTl8odHlwZSkKKworLy8gVGVsbCB0aGUgY29tcGlsZXIgdG8gd2FybiBh
Ym91dCB1bnVzZWQgcmV0dXJuIHZhbHVlcyBmb3IgZnVuY3Rpb25zIGRlY2xhcmVkCisvLyB3aXRo
IHRoaXMgbWFjcm8uICBUaGUgbWFjcm8gc2hvdWxkIGJlIHVzZWQgb24gZnVuY3Rpb24gZGVjbGFy
YXRpb25zCisvLyBmb2xsb3dpbmcgdGhlIGFyZ3VtZW50IGxpc3Q6CisvLworLy8gICBTcHJvY2tl
dCogQWxsb2NhdGVTcHJvY2tldCgpIEdURVNUX01VU1RfVVNFX1JFU1VMVF87CisjaWYgZGVmaW5l
ZChfX0dOVUNfXykgJiYgKEdURVNUX0dDQ19WRVJfID49IDMwNDAwKSAmJiAhZGVmaW5lZChDT01Q
SUxFUl9JQ0MpCisjIGRlZmluZSBHVEVTVF9NVVNUX1VTRV9SRVNVTFRfIF9fYXR0cmlidXRlX18g
KCh3YXJuX3VudXNlZF9yZXN1bHQpKQorI2Vsc2UKKyMgZGVmaW5lIEdURVNUX01VU1RfVVNFX1JF
U1VMVF8KKyNlbmRpZiAgLy8gX19HTlVDX18gJiYgKEdURVNUX0dDQ19WRVJfID49IDMwNDAwKSAm
JiAhQ09NUElMRVJfSUNDCisKKy8vIE1TIEMrKyBjb21waWxlciBlbWl0cyB3YXJuaW5nIHdoZW4g
YSBjb25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNvbXBpbGUgdGltZQorLy8gY29uc3RhbnQuIElu
IHNvbWUgY29udGV4dHMgdGhpcyB3YXJuaW5nIGlzIGZhbHNlIHBvc2l0aXZlIGFuZCBuZWVkcyB0
byBiZQorLy8gc3VwcHJlc3NlZC4gVXNlIHRoZSBmb2xsb3dpbmcgdHdvIG1hY3JvcyBpbiBzdWNo
IGNhc2VzOgorLy8KKy8vIEdURVNUX0lOVEVOVElPTkFMX0NPTlNUX0NPTkRfUFVTSF8oKQorLy8g
d2hpbGUgKHRydWUpIHsKKy8vIEdURVNUX0lOVEVOVElPTkFMX0NPTlNUX0NPTkRfUE9QXygpCisv
LyB9CisjIGRlZmluZSBHVEVTVF9JTlRFTlRJT05BTF9DT05TVF9DT05EX1BVU0hfKCkgXAorICAg
IEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQxMjcpCisjIGRlZmluZSBHVEVTVF9J
TlRFTlRJT05BTF9DT05TVF9DT05EX1BPUF8oKSBcCisgICAgR1RFU1RfRElTQUJMRV9NU0NfV0FS
TklOR1NfUE9QXygpCisKKy8vIERldGVybWluZSB3aGV0aGVyIHRoZSBjb21waWxlciBzdXBwb3J0
cyBNaWNyb3NvZnQncyBTdHJ1Y3R1cmVkIEV4Y2VwdGlvbgorLy8gSGFuZGxpbmcuICBUaGlzIGlz
IHN1cHBvcnRlZCBieSBzZXZlcmFsIFdpbmRvd3MgY29tcGlsZXJzIGJ1dCBnZW5lcmFsbHkKKy8v
IGRvZXMgbm90IGV4aXN0IG9uIGFueSBvdGhlciBzeXN0ZW0uCisjaWZuZGVmIEdURVNUX0hBU19T
RUgKKy8vIFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzLCBzbyB3ZSBuZWVkIHRvIGZpZ3VyZSBpdCBv
dXQuCisKKyMgaWYgZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX0JPUkxBTkRDX18pCisv
LyBUaGVzZSB0d28gY29tcGlsZXJzIGFyZSBrbm93biB0byBzdXBwb3J0IFNFSC4KKyMgIGRlZmlu
ZSBHVEVTVF9IQVNfU0VIIDEKKyMgZWxzZQorLy8gQXNzdW1lIG5vIFNFSC4KKyMgIGRlZmluZSBH
VEVTVF9IQVNfU0VIIDAKKyMgZW5kaWYKKworI2RlZmluZSBHVEVTVF9JU19USFJFQURTQUZFIFwK
KyAgICAoR1RFU1RfSEFTX01VVEVYX0FORF9USFJFQURfTE9DQUxfIFwKKyAgICAgfHwgKEdURVNU
X09TX1dJTkRPV1MgJiYgIUdURVNUX09TX1dJTkRPV1NfUEhPTkUgJiYgIUdURVNUX09TX1dJTkRP
V1NfUlQpIFwKKyAgICAgfHwgR1RFU1RfSEFTX1BUSFJFQUQpCisKKyNlbmRpZiAgLy8gR1RFU1Rf
SEFTX1NFSAorCisvLyBHVEVTVF9BUElfIHF1YWxpZmllcyBhbGwgc3ltYm9scyB0aGF0IG11c3Qg
YmUgZXhwb3J0ZWQuIFRoZSBkZWZpbml0aW9ucyBiZWxvdworLy8gYXJlIGd1YXJkZWQgYnkgI2lm
bmRlZiB0byBnaXZlIGVtYmVkZGVycyBhIGNoYW5jZSB0byBkZWZpbmUgR1RFU1RfQVBJXyBpbgor
Ly8gZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LXBvcnQuaAorI2lmbmRlZiBHVEVTVF9BUElf
CisKKyNpZmRlZiBfTVNDX1ZFUgorIyBpZiBHVEVTVF9MSU5LRURfQVNfU0hBUkVEX0xJQlJBUlkK
KyMgIGRlZmluZSBHVEVTVF9BUElfIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQorIyBlbGlmIEdURVNU
X0NSRUFURV9TSEFSRURfTElCUkFSWQorIyAgZGVmaW5lIEdURVNUX0FQSV8gX19kZWNsc3BlYyhk
bGxleHBvcnQpCisjIGVuZGlmCisjZWxpZiBfX0dOVUNfXyA+PSA0IHx8IGRlZmluZWQoX19jbGFu
Z19fKQorIyBkZWZpbmUgR1RFU1RfQVBJXyBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVm
YXVsdCIpKSkKKyNlbmRpZiAvLyBfTVNDX1ZFUgorCisjZW5kaWYgLy8gR1RFU1RfQVBJXworCisj
aWZuZGVmIEdURVNUX0FQSV8KKyMgZGVmaW5lIEdURVNUX0FQSV8KKyNlbmRpZiAvLyBHVEVTVF9B
UElfCisKKyNpZmRlZiBfX0dOVUNfXworLy8gQXNrIHRoZSBjb21waWxlciB0byBuZXZlciBpbmxp
bmUgYSBnaXZlbiBmdW5jdGlvbi4KKyMgZGVmaW5lIEdURVNUX05PX0lOTElORV8gX19hdHRyaWJ1
dGVfXygobm9pbmxpbmUpKQorI2Vsc2UKKyMgZGVmaW5lIEdURVNUX05PX0lOTElORV8KKyNlbmRp
ZgorCisvLyBfTElCQ1BQX1ZFUlNJT04gaXMgZGVmaW5lZCBieSB0aGUgbGliYysrIGxpYnJhcnkg
ZnJvbSB0aGUgTExWTSBwcm9qZWN0LgorI2lmIGRlZmluZWQoX19HTElCQ1hYX18pIHx8IGRlZmlu
ZWQoX0xJQkNQUF9WRVJTSU9OKQorIyBkZWZpbmUgR1RFU1RfSEFTX0NYWEFCSV9IXyAxCisjZWxz
ZQorIyBkZWZpbmUgR1RFU1RfSEFTX0NYWEFCSV9IXyAwCisjZW5kaWYKKworLy8gQSBmdW5jdGlv
biBsZXZlbCBhdHRyaWJ1dGUgdG8gZGlzYWJsZSBjaGVja2luZyBmb3IgdXNlIG9mIHVuaW5pdGlh
bGl6ZWQKKy8vIG1lbW9yeSB3aGVuIGJ1aWx0IHdpdGggTWVtb3J5U2FuaXRpemVyLgorI2lmIGRl
ZmluZWQoX19jbGFuZ19fKQorIyBpZiBfX2hhc19mZWF0dXJlKG1lbW9yeV9zYW5pdGl6ZXIpCisj
ICBkZWZpbmUgR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX01FTU9SWV8gXAorICAgICAgIF9f
YXR0cmlidXRlX18oKG5vX3Nhbml0aXplX21lbW9yeSkpCisjIGVsc2UKKyMgIGRlZmluZSBHVEVT
VF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfTUVNT1JZXworIyBlbmRpZiAgLy8gX19oYXNfZmVhdHVy
ZShtZW1vcnlfc2FuaXRpemVyKQorI2Vsc2UKKyMgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9OT19T
QU5JVElaRV9NRU1PUllfCisjZW5kaWYgIC8vIF9fY2xhbmdfXworCisvLyBBIGZ1bmN0aW9uIGxl
dmVsIGF0dHJpYnV0ZSB0byBkaXNhYmxlIEFkZHJlc3NTYW5pdGl6ZXIgaW5zdHJ1bWVudGF0aW9u
LgorI2lmIGRlZmluZWQoX19jbGFuZ19fKQorIyBpZiBfX2hhc19mZWF0dXJlKGFkZHJlc3Nfc2Fu
aXRpemVyKQorIyAgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9BRERSRVNTXyBc
CisgICAgICAgX19hdHRyaWJ1dGVfXygobm9fc2FuaXRpemVfYWRkcmVzcykpCisjIGVsc2UKKyMg
IGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfQUREUkVTU18KKyMgZW5kaWYgIC8v
IF9faGFzX2ZlYXR1cmUoYWRkcmVzc19zYW5pdGl6ZXIpCisjZWxzZQorIyBkZWZpbmUgR1RFU1Rf
QVRUUklCVVRFX05PX1NBTklUSVpFX0FERFJFU1NfCisjZW5kaWYgIC8vIF9fY2xhbmdfXworCisv
LyBBIGZ1bmN0aW9uIGxldmVsIGF0dHJpYnV0ZSB0byBkaXNhYmxlIFRocmVhZFNhbml0aXplciBp
bnN0cnVtZW50YXRpb24uCisjaWYgZGVmaW5lZChfX2NsYW5nX18pCisjIGlmIF9faGFzX2ZlYXR1
cmUodGhyZWFkX3Nhbml0aXplcikKKyMgIGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJ
WkVfVEhSRUFEXyBcCisgICAgICAgX19hdHRyaWJ1dGVfXygobm9fc2FuaXRpemVfdGhyZWFkKSkK
KyMgZWxzZQorIyAgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9USFJFQURfCisj
IGVuZGlmICAvLyBfX2hhc19mZWF0dXJlKHRocmVhZF9zYW5pdGl6ZXIpCisjZWxzZQorIyBkZWZp
bmUgR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX1RIUkVBRF8KKyNlbmRpZiAgLy8gX19jbGFu
Z19fCisKK25hbWVzcGFjZSB0ZXN0aW5nIHsKKworY2xhc3MgTWVzc2FnZTsKKworI2lmIGRlZmlu
ZWQoR1RFU1RfVFVQTEVfTkFNRVNQQUNFXykKKy8vIEltcG9ydCB0dXBsZSBhbmQgZnJpZW5kcyBp
bnRvIHRoZSA6OnRlc3RpbmcgbmFtZXNwYWNlLgorLy8gSXQgaXMgcGFydCBvZiBvdXIgaW50ZXJm
YWNlLCBoYXZpbmcgdGhlbSBpbiA6OnRlc3RpbmcgYWxsb3dzIHVzIHRvIGNoYW5nZQorLy8gdGhl
aXIgdHlwZXMgYXMgbmVlZGVkLgordXNpbmcgR1RFU1RfVFVQTEVfTkFNRVNQQUNFXzo6Z2V0Owor
dXNpbmcgR1RFU1RfVFVQTEVfTkFNRVNQQUNFXzo6bWFrZV90dXBsZTsKK3VzaW5nIEdURVNUX1RV
UExFX05BTUVTUEFDRV86OnR1cGxlOwordXNpbmcgR1RFU1RfVFVQTEVfTkFNRVNQQUNFXzo6dHVw
bGVfc2l6ZTsKK3VzaW5nIEdURVNUX1RVUExFX05BTUVTUEFDRV86OnR1cGxlX2VsZW1lbnQ7Cisj
ZW5kaWYgIC8vIGRlZmluZWQoR1RFU1RfVFVQTEVfTkFNRVNQQUNFXykKKworbmFtZXNwYWNlIGlu
dGVybmFsIHsKKworLy8gQSBzZWNyZXQgdHlwZSB0aGF0IEdvb2dsZSBUZXN0IHVzZXJzIGRvbid0
IGtub3cgYWJvdXQuICBJdCBoYXMgbm8KKy8vIGRlZmluaXRpb24gb24gcHVycG9zZS4gIFRoZXJl
Zm9yZSBpdCdzIGltcG9zc2libGUgdG8gY3JlYXRlIGEKKy8vIFNlY3JldCBvYmplY3QsIHdoaWNo
IGlzIHdoYXQgd2Ugd2FudC4KK2NsYXNzIFNlY3JldDsKKworLy8gVGhlIEdURVNUX0NPTVBJTEVf
QVNTRVJUXyBtYWNybyBjYW4gYmUgdXNlZCB0byB2ZXJpZnkgdGhhdCBhIGNvbXBpbGUgdGltZQor
Ly8gZXhwcmVzc2lvbiBpcyB0cnVlLiBGb3IgZXhhbXBsZSwgeW91IGNvdWxkIHVzZSBpdCB0byB2
ZXJpZnkgdGhlCisvLyBzaXplIG9mIGEgc3RhdGljIGFycmF5OgorLy8KKy8vICAgR1RFU1RfQ09N
UElMRV9BU1NFUlRfKEdURVNUX0FSUkFZX1NJWkVfKG5hbWVzKSA9PSBOVU1fTkFNRVMsCisvLyAg
ICAgICAgICAgICAgICAgICAgICAgICBuYW1lc19pbmNvcnJlY3Rfc2l6ZSk7CisvLworLy8gb3Ig
dG8gbWFrZSBzdXJlIGEgc3RydWN0IGlzIHNtYWxsZXIgdGhhbiBhIGNlcnRhaW4gc2l6ZToKKy8v
CisvLyAgIEdURVNUX0NPTVBJTEVfQVNTRVJUXyhzaXplb2YoZm9vKSA8IDEyOCwgZm9vX3Rvb19s
YXJnZSk7CisvLworLy8gVGhlIHNlY29uZCBhcmd1bWVudCB0byB0aGUgbWFjcm8gaXMgdGhlIG5h
bWUgb2YgdGhlIHZhcmlhYmxlLiBJZgorLy8gdGhlIGV4cHJlc3Npb24gaXMgZmFsc2UsIG1vc3Qg
Y29tcGlsZXJzIHdpbGwgaXNzdWUgYSB3YXJuaW5nL2Vycm9yCisvLyBjb250YWluaW5nIHRoZSBu
YW1lIG9mIHRoZSB2YXJpYWJsZS4KKworI2lmIEdURVNUX0xBTkdfQ1hYMTEKKyMgZGVmaW5lIEdU
RVNUX0NPTVBJTEVfQVNTRVJUXyhleHByLCBtc2cpIHN0YXRpY19hc3NlcnQoZXhwciwgI21zZykK
KyNlbHNlICAvLyAhR1RFU1RfTEFOR19DWFgxMQordGVtcGxhdGUgPGJvb2w+CisgIHN0cnVjdCBD
b21waWxlQXNzZXJ0IHsKK307CisKKyMgZGVmaW5lIEdURVNUX0NPTVBJTEVfQVNTRVJUXyhleHBy
LCBtc2cpIFwKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6OmludGVybmFsOjpDb21waWxlQXNzZXJ0PChz
dGF0aWNfY2FzdDxib29sPihleHByKSk+IFwKKyAgICAgIG1zZ1tzdGF0aWNfY2FzdDxib29sPihl
eHByKSA/IDEgOiAtMV0gR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8KKyNlbmRpZiAgLy8gIUdURVNU
X0xBTkdfQ1hYMTEKKworLy8gSW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiBHVEVTVF9DT01QSUxF
X0FTU0VSVF86CisvLworLy8gKEluIEMrKzExLCB3ZSBzaW1wbHkgdXNlIHN0YXRpY19hc3NlcnQg
aW5zdGVhZCBvZiB0aGUgZm9sbG93aW5nKQorLy8KKy8vIC0gR1RFU1RfQ09NUElMRV9BU1NFUlRf
IHdvcmtzIGJ5IGRlZmluaW5nIGFuIGFycmF5IHR5cGUgdGhhdCBoYXMgLTEKKy8vICAgZWxlbWVu
dHMgKGFuZCB0aHVzIGlzIGludmFsaWQpIHdoZW4gdGhlIGV4cHJlc3Npb24gaXMgZmFsc2UuCisv
LworLy8gLSBUaGUgc2ltcGxlciBkZWZpbml0aW9uCisvLworLy8gICAgI2RlZmluZSBHVEVTVF9D
T01QSUxFX0FTU0VSVF8oZXhwciwgbXNnKSB0eXBlZGVmIGNoYXIgbXNnWyhleHByKSA/IDEgOiAt
MV0KKy8vCisvLyAgIGRvZXMgbm90IHdvcmssIGFzIGdjYyBzdXBwb3J0cyB2YXJpYWJsZS1sZW5n
dGggYXJyYXlzIHdob3NlIHNpemVzCisvLyAgIGFyZSBkZXRlcm1pbmVkIGF0IHJ1bi10aW1lICh0
aGlzIGlzIGdjYydzIGV4dGVuc2lvbiBhbmQgbm90IHBhcnQKKy8vICAgb2YgdGhlIEMrKyBzdGFu
ZGFyZCkuICBBcyBhIHJlc3VsdCwgZ2NjIGZhaWxzIHRvIHJlamVjdCB0aGUKKy8vICAgZm9sbG93
aW5nIGNvZGUgd2l0aCB0aGUgc2ltcGxlIGRlZmluaXRpb246CisvLworLy8gICAgIGludCBmb287
CisvLyAgICAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKGZvbywgbXNnKTsgLy8gbm90IHN1cHBvc2Vk
IHRvIGNvbXBpbGUgYXMgZm9vIGlzCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gbm90IGEgY29tcGlsZS10aW1lIGNvbnN0YW50LgorLy8KKy8vIC0gQnkgdXNpbmcg
dGhlIHR5cGUgQ29tcGlsZUFzc2VydDwoYm9vbChleHByKSk+LCB3ZSBlbnN1cmVzIHRoYXQKKy8v
ICAgZXhwciBpcyBhIGNvbXBpbGUtdGltZSBjb25zdGFudC4gIChUZW1wbGF0ZSBhcmd1bWVudHMg
bXVzdCBiZQorLy8gICBkZXRlcm1pbmVkIGF0IGNvbXBpbGUtdGltZS4pCisvLworLy8gLSBUaGUg
b3V0dGVyIHBhcmVudGhlc2VzIGluIENvbXBpbGVBc3NlcnQ8KGJvb2woZXhwcikpPiBhcmUgbmVj
ZXNzYXJ5CisvLyAgIHRvIHdvcmsgYXJvdW5kIGEgYnVnIGluIGdjYyAzLjQuNCBhbmQgNC4wLjEu
ICBJZiB3ZSBoYWQgd3JpdHRlbgorLy8KKy8vICAgICBDb21waWxlQXNzZXJ0PGJvb2woZXhwcik+
CisvLworLy8gICBpbnN0ZWFkLCB0aGVzZSBjb21waWxlcnMgd2lsbCByZWZ1c2UgdG8gY29tcGls
ZQorLy8KKy8vICAgICBHVEVTVF9DT01QSUxFX0FTU0VSVF8oNSA+IDAsIHNvbWVfbWVzc2FnZSk7
CisvLworLy8gICAoVGhleSBzZWVtIHRvIHRoaW5rIHRoZSAiPiIgaW4gIjUgPiAwIiBtYXJrcyB0
aGUgZW5kIG9mIHRoZQorLy8gICB0ZW1wbGF0ZSBhcmd1bWVudCBsaXN0LikKKy8vCisvLyAtIFRo
ZSBhcnJheSBzaXplIGlzIChib29sKGV4cHIpID8gMSA6IC0xKSwgaW5zdGVhZCBvZiBzaW1wbHkK
Ky8vCisvLyAgICAgKChleHByKSA/IDEgOiAtMSkuCisvLworLy8gICBUaGlzIGlzIHRvIGF2b2lk
IHJ1bm5pbmcgaW50byBhIGJ1ZyBpbiBNUyBWQyA3LjEsIHdoaWNoCisvLyAgIGNhdXNlcyAoKDAu
MCkgPyAxIDogLTEpIHRvIGluY29ycmVjdGx5IGV2YWx1YXRlIHRvIDEuCisKKy8vIFN0YXRpY0Fz
c2VydFR5cGVFcUhlbHBlciBpcyB1c2VkIGJ5IFN0YXRpY0Fzc2VydFR5cGVFcSBkZWZpbmVkIGlu
IGd0ZXN0LmguCisvLworLy8gVGhpcyB0ZW1wbGF0ZSBpcyBkZWNsYXJlZCwgYnV0IGludGVudGlv
bmFsbHkgdW5kZWZpbmVkLgordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK3N0
cnVjdCBTdGF0aWNBc3NlcnRUeXBlRXFIZWxwZXI7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
c3RydWN0IFN0YXRpY0Fzc2VydFR5cGVFcUhlbHBlcjxULCBUPiB7CisgIGVudW0geyB2YWx1ZSA9
IHRydWUgfTsKK307CisKKy8vIEV2YWx1YXRlcyB0byB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGlu
ICdhcnJheScuCisjZGVmaW5lIEdURVNUX0FSUkFZX1NJWkVfKGFycmF5KSAoc2l6ZW9mKGFycmF5
KSAvIHNpemVvZihhcnJheVswXSkpCisKKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwordHlw
ZWRlZiA6OnN0cmluZyBzdHJpbmc7CisjZWxzZQordHlwZWRlZiA6OnN0ZDo6c3RyaW5nIHN0cmlu
ZzsKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKKworI2lmIEdURVNUX0hBU19H
TE9CQUxfV1NUUklORwordHlwZWRlZiA6OndzdHJpbmcgd3N0cmluZzsKKyNlbGlmIEdURVNUX0hB
U19TVERfV1NUUklORwordHlwZWRlZiA6OnN0ZDo6d3N0cmluZyB3c3RyaW5nOworI2VuZGlmICAv
LyBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKKworLy8gQSBoZWxwZXIgZm9yIHN1cHByZXNzaW5n
IHdhcm5pbmdzIG9uIGNvbnN0YW50IGNvbmRpdGlvbi4gIEl0IGp1c3QKKy8vIHJldHVybnMgJ2Nv
bmRpdGlvbicuCitHVEVTVF9BUElfIGJvb2wgSXNUcnVlKGJvb2wgY29uZGl0aW9uKTsKKworLy8g
RGVmaW5lcyBzY29wZWRfcHRyLgorCisvLyBUaGlzIGltcGxlbWVudGF0aW9uIG9mIHNjb3BlZF9w
dHIgaXMgUEFSVElBTCAtIGl0IG9ubHkgY29udGFpbnMKKy8vIGVub3VnaCBzdHVmZiB0byBzYXRp
c2Z5IEdvb2dsZSBUZXN0J3MgbmVlZC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3Mgc2Nv
cGVkX3B0ciB7CisgcHVibGljOgorICB0eXBlZGVmIFQgZWxlbWVudF90eXBlOworCisgIGV4cGxp
Y2l0IHNjb3BlZF9wdHIoVCogcCA9IE5VTEwpIDogcHRyXyhwKSB7fQorICB+c2NvcGVkX3B0cigp
IHsgcmVzZXQoKTsgfQorCisgIFQmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICpwdHJfOyB9
CisgIFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBwdHJfOyB9CisgIFQqIGdldCgpIGNv
bnN0IHsgcmV0dXJuIHB0cl87IH0KKworICBUKiByZWxlYXNlKCkgeworICAgIFQqIGNvbnN0IHB0
ciA9IHB0cl87CisgICAgcHRyXyA9IE5VTEw7CisgICAgcmV0dXJuIHB0cjsKKyAgfQorCisgIHZv
aWQgcmVzZXQoVCogcCA9IE5VTEwpIHsKKyAgICBpZiAocCAhPSBwdHJfKSB7CisgICAgICBpZiAo
SXNUcnVlKHNpemVvZihUKSA+IDApKSB7ICAvLyBNYWtlcyBzdXJlIFQgaXMgYSBjb21wbGV0ZSB0
eXBlLgorICAgICAgICBkZWxldGUgcHRyXzsKKyAgICAgIH0KKyAgICAgIHB0cl8gPSBwOworICAg
IH0KKyAgfQorCisgIGZyaWVuZCB2b2lkIHN3YXAoc2NvcGVkX3B0ciYgYSwgc2NvcGVkX3B0ciYg
YikgeworICAgIHVzaW5nIHN0ZDo6c3dhcDsKKyAgICBzd2FwKGEucHRyXywgYi5wdHJfKTsKKyAg
fQorCisgcHJpdmF0ZToKKyAgVCogcHRyXzsKKworICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9B
U1NJR05fKHNjb3BlZF9wdHIpOworfTsKKworLy8gRGVmaW5lcyBSRS4KKworLy8gQSBzaW1wbGUg
QysrIHdyYXBwZXIgZm9yIDxyZWdleC5oPi4gIEl0IHVzZXMgdGhlIFBPU0lYIEV4dGVuZGVkCisv
LyBSZWd1bGFyIEV4cHJlc3Npb24gc3ludGF4LgorY2xhc3MgR1RFU1RfQVBJXyBSRSB7CisgcHVi
bGljOgorICAvLyBBIGNvcHkgY29uc3RydWN0b3IgaXMgcmVxdWlyZWQgYnkgdGhlIFN0YW5kYXJk
IHRvIGluaXRpYWxpemUgb2JqZWN0CisgIC8vIHJlZmVyZW5jZXMgZnJvbSByLXZhbHVlcy4KKyAg
UkUoY29uc3QgUkUmIG90aGVyKSB7IEluaXQob3RoZXIucGF0dGVybigpKTsgfQorCisgIC8vIENv
bnN0cnVjdHMgYW4gUkUgZnJvbSBhIHN0cmluZy4KKyAgUkUoY29uc3QgOjpzdGQ6OnN0cmluZyYg
cmVnZXgpIHsgSW5pdChyZWdleC5jX3N0cigpKTsgfSAgLy8gTk9MSU5UCisKKyNpZiBHVEVTVF9I
QVNfR0xPQkFMX1NUUklORworCisgIFJFKGNvbnN0IDo6c3RyaW5nJiByZWdleCkgeyBJbml0KHJl
Z2V4LmNfc3RyKCkpOyB9ICAvLyBOT0xJTlQKKworI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFM
X1NUUklORworCisgIFJFKGNvbnN0IGNoYXIqIHJlZ2V4KSB7IEluaXQocmVnZXgpOyB9ICAvLyBO
T0xJTlQKKyAgflJFKCk7CisKKyAgLy8gUmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9u
IG9mIHRoZSByZWdleC4KKyAgY29uc3QgY2hhciogcGF0dGVybigpIGNvbnN0IHsgcmV0dXJuIHBh
dHRlcm5fOyB9CisKKyAgLy8gRnVsbE1hdGNoKHN0ciwgcmUpIHJldHVybnMgdHJ1ZSBpZmYgcmVn
dWxhciBleHByZXNzaW9uIHJlIG1hdGNoZXMKKyAgLy8gdGhlIGVudGlyZSBzdHIuCisgIC8vIFBh
cnRpYWxNYXRjaChzdHIsIHJlKSByZXR1cm5zIHRydWUgaWZmIHJlZ3VsYXIgZXhwcmVzc2lvbiBy
ZQorICAvLyBtYXRjaGVzIGEgc3Vic3RyaW5nIG9mIHN0ciAoaW5jbHVkaW5nIHN0ciBpdHNlbGYp
LgorICAvLworICAvLyBUT0RPKHdhbkBnb29nbGUuY29tKTogbWFrZSBGdWxsTWF0Y2goKSBhbmQg
UGFydGlhbE1hdGNoKCkgd29yaworICAvLyB3aGVuIHN0ciBjb250YWlucyBOVUwgY2hhcmFjdGVy
cy4KKyAgc3RhdGljIGJvb2wgRnVsbE1hdGNoKGNvbnN0IDo6c3RkOjpzdHJpbmcmIHN0ciwgY29u
c3QgUkUmIHJlKSB7CisgICAgcmV0dXJuIEZ1bGxNYXRjaChzdHIuY19zdHIoKSwgcmUpOworICB9
CisgIHN0YXRpYyBib29sIFBhcnRpYWxNYXRjaChjb25zdCA6OnN0ZDo6c3RyaW5nJiBzdHIsIGNv
bnN0IFJFJiByZSkgeworICAgIHJldHVybiBQYXJ0aWFsTWF0Y2goc3RyLmNfc3RyKCksIHJlKTsK
KyAgfQorCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKKworICBzdGF0aWMgYm9vbCBGdWxs
TWF0Y2goY29uc3QgOjpzdHJpbmcmIHN0ciwgY29uc3QgUkUmIHJlKSB7CisgICAgcmV0dXJuIEZ1
bGxNYXRjaChzdHIuY19zdHIoKSwgcmUpOworICB9CisgIHN0YXRpYyBib29sIFBhcnRpYWxNYXRj
aChjb25zdCA6OnN0cmluZyYgc3RyLCBjb25zdCBSRSYgcmUpIHsKKyAgICByZXR1cm4gUGFydGlh
bE1hdGNoKHN0ci5jX3N0cigpLCByZSk7CisgIH0KKworI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xP
QkFMX1NUUklORworCisgIHN0YXRpYyBib29sIEZ1bGxNYXRjaChjb25zdCBjaGFyKiBzdHIsIGNv
bnN0IFJFJiByZSk7CisgIHN0YXRpYyBib29sIFBhcnRpYWxNYXRjaChjb25zdCBjaGFyKiBzdHIs
IGNvbnN0IFJFJiByZSk7CisKKyBwcml2YXRlOgorICB2b2lkIEluaXQoY29uc3QgY2hhciogcmVn
ZXgpOworCisgIC8vIFdlIHVzZSBhIGNvbnN0IGNoYXIqIGluc3RlYWQgb2YgYW4gc3RkOjpzdHJp
bmcsIGFzIEdvb2dsZSBUZXN0IHVzZWQgdG8gYmUKKyAgLy8gdXNlZCB3aGVyZSBzdGQ6OnN0cmlu
ZyBpcyBub3QgYXZhaWxhYmxlLiAgVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IGNoYW5nZSB0bworICAv
LyBzdGQ6OnN0cmluZy4KKyAgY29uc3QgY2hhciogcGF0dGVybl87CisgIGJvb2wgaXNfdmFsaWRf
OworCisjaWYgR1RFU1RfVVNFU19QT1NJWF9SRQorCisgIHJlZ2V4X3QgZnVsbF9yZWdleF87ICAg
ICAvLyBGb3IgRnVsbE1hdGNoKCkuCisgIHJlZ2V4X3QgcGFydGlhbF9yZWdleF87ICAvLyBGb3Ig
UGFydGlhbE1hdGNoKCkuCisKKyNlbHNlICAvLyBHVEVTVF9VU0VTX1NJTVBMRV9SRQorCisgIGNv
bnN0IGNoYXIqIGZ1bGxfcGF0dGVybl87ICAvLyBGb3IgRnVsbE1hdGNoKCk7CisKKyNlbmRpZgor
CisgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oUkUpOworfTsKKworLy8gRm9ybWF0cyBhIHNvdXJj
ZSBmaWxlIHBhdGggYW5kIGEgbGluZSBudW1iZXIgYXMgdGhleSB3b3VsZCBhcHBlYXIKKy8vIGlu
IGFuIGVycm9yIG1lc3NhZ2UgZnJvbSB0aGUgY29tcGlsZXIgdXNlZCB0byBjb21waWxlIHRoaXMg
Y29kZS4KK0dURVNUX0FQSV8gOjpzdGQ6OnN0cmluZyBGb3JtYXRGaWxlTG9jYXRpb24oY29uc3Qg
Y2hhciogZmlsZSwgaW50IGxpbmUpOworCisvLyBGb3JtYXRzIGEgZmlsZSBsb2NhdGlvbiBmb3Ig
Y29tcGlsZXItaW5kZXBlbmRlbnQgWE1MIG91dHB1dC4KKy8vIEFsdGhvdWdoIHRoaXMgZnVuY3Rp
b24gaXMgbm90IHBsYXRmb3JtIGRlcGVuZGVudCwgd2UgcHV0IGl0IG5leHQgdG8KKy8vIEZvcm1h
dEZpbGVMb2NhdGlvbiBpbiBvcmRlciB0byBjb250cmFzdCB0aGUgdHdvIGZ1bmN0aW9ucy4KK0dU
RVNUX0FQSV8gOjpzdGQ6OnN0cmluZyBGb3JtYXRDb21waWxlckluZGVwZW5kZW50RmlsZUxvY2F0
aW9uKGNvbnN0IGNoYXIqIGZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZSk7CisKKy8vIERlZmluZXMgbG9n
Z2luZyB1dGlsaXRpZXM6CisvLyAgIEdURVNUX0xPR18oc2V2ZXJpdHkpIC0gbG9ncyBtZXNzYWdl
cyBhdCB0aGUgc3BlY2lmaWVkIHNldmVyaXR5IGxldmVsLiBUaGUKKy8vICAgICAgICAgICAgICAg
ICAgICAgICAgICBtZXNzYWdlIGl0c2VsZiBpcyBzdHJlYW1lZCBpbnRvIHRoZSBtYWNyby4KKy8v
ICAgTG9nVG9TdGRlcnIoKSAgLSBkaXJlY3RzIGFsbCBsb2cgbWVzc2FnZXMgdG8gc3RkZXJyLgor
Ly8gICBGbHVzaEluZm9Mb2coKSAtIGZsdXNoZXMgaW5mb3JtYXRpb25hbCBsb2cgbWVzc2FnZXMu
CisKK2VudW0gR1Rlc3RMb2dTZXZlcml0eSB7CisgIEdURVNUX0lORk8sCisgIEdURVNUX1dBUk5J
TkcsCisgIEdURVNUX0VSUk9SLAorICBHVEVTVF9GQVRBTAorfTsKKworLy8gRm9ybWF0cyBsb2cg
ZW50cnkgc2V2ZXJpdHksIHByb3ZpZGVzIGEgc3RyZWFtIG9iamVjdCBmb3Igc3RyZWFtaW5nIHRo
ZQorLy8gbG9nIG1lc3NhZ2UsIGFuZCB0ZXJtaW5hdGVzIHRoZSBtZXNzYWdlIHdpdGggYSBuZXds
aW5lIHdoZW4gZ29pbmcgb3V0IG9mCisvLyBzY29wZS4KK2NsYXNzIEdURVNUX0FQSV8gR1Rlc3RM
b2cgeworIHB1YmxpYzoKKyAgR1Rlc3RMb2coR1Rlc3RMb2dTZXZlcml0eSBzZXZlcml0eSwgY29u
c3QgY2hhciogZmlsZSwgaW50IGxpbmUpOworCisgIC8vIEZsdXNoZXMgdGhlIGJ1ZmZlcnMgYW5k
LCBpZiBzZXZlcml0eSBpcyBHVEVTVF9GQVRBTCwgYWJvcnRzIHRoZSBwcm9ncmFtLgorICB+R1Rl
c3RMb2coKTsKKworICA6OnN0ZDo6b3N0cmVhbSYgR2V0U3RyZWFtKCkgeyByZXR1cm4gOjpzdGQ6
OmNlcnI7IH0KKworIHByaXZhdGU6CisgIGNvbnN0IEdUZXN0TG9nU2V2ZXJpdHkgc2V2ZXJpdHlf
OworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oR1Rlc3RMb2cpOworfTsKKwor
I2lmICFkZWZpbmVkKEdURVNUX0xPR18pCisKKyMgZGVmaW5lIEdURVNUX0xPR18oc2V2ZXJpdHkp
IFwKKyAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpHVGVzdExvZyg6OnRlc3Rpbmc6OmludGVybmFs
OjpHVEVTVF8jI3NldmVyaXR5LCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
X19GSUxFX18sIF9fTElORV9fKS5HZXRTdHJlYW0oKQorCitpbmxpbmUgdm9pZCBMb2dUb1N0ZGVy
cigpIHt9CitpbmxpbmUgdm9pZCBGbHVzaEluZm9Mb2coKSB7IGZmbHVzaChOVUxMKTsgfQorCisj
ZW5kaWYgIC8vICFkZWZpbmVkKEdURVNUX0xPR18pCisKKyNpZiAhZGVmaW5lZChHVEVTVF9DSEVD
S18pCisvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UuCisvLworLy8gR1RF
U1RfQ0hFQ0tfIGlzIGFuIGFsbC1tb2RlIGFzc2VydC4gSXQgYWJvcnRzIHRoZSBwcm9ncmFtIGlm
IHRoZSBjb25kaXRpb24KKy8vIGlzIG5vdCBzYXRpc2ZpZWQuCisvLyAgU3lub3BzeXM6CisvLyAg
ICBHVEVTVF9DSEVDS18oYm9vbGVhbl9jb25kaXRpb24pOworLy8gICAgIG9yCisvLyAgICBHVEVT
VF9DSEVDS18oYm9vbGVhbl9jb25kaXRpb24pIDw8ICJBZGRpdGlvbmFsIG1lc3NhZ2UiOworLy8K
Ky8vICAgIFRoaXMgY2hlY2tzIHRoZSBjb25kaXRpb24gYW5kIGlmIHRoZSBjb25kaXRpb24gaXMg
bm90IHNhdGlzZmllZAorLy8gICAgaXQgcHJpbnRzIG1lc3NhZ2UgYWJvdXQgdGhlIGNvbmRpdGlv
biB2aW9sYXRpb24sIGluY2x1ZGluZyB0aGUKKy8vICAgIGNvbmRpdGlvbiBpdHNlbGYsIHBsdXMg
YWRkaXRpb25hbCBtZXNzYWdlIHN0cmVhbWVkIGludG8gaXQsIGlmIGFueSwKKy8vICAgIGFuZCB0
aGVuIGl0IGFib3J0cyB0aGUgcHJvZ3JhbS4gSXQgYWJvcnRzIHRoZSBwcm9ncmFtIGlycmVzcGVj
dGl2ZSBvZgorLy8gICAgd2hldGhlciBpdCBpcyBidWlsdCBpbiB0aGUgZGVidWcgbW9kZSBvciBu
b3QuCisjIGRlZmluZSBHVEVTVF9DSEVDS18oY29uZGl0aW9uKSBcCisgICAgR1RFU1RfQU1CSUdV
T1VTX0VMU0VfQkxPQ0tFUl8gXAorICAgIGlmICg6OnRlc3Rpbmc6OmludGVybmFsOjpJc1RydWUo
Y29uZGl0aW9uKSkgXAorICAgICAgOyBcCisgICAgZWxzZSBcCisgICAgICBHVEVTVF9MT0dfKEZB
VEFMKSA8PCAiQ29uZGl0aW9uICIgI2NvbmRpdGlvbiAiIGZhaWxlZC4gIgorI2VuZGlmICAvLyAh
ZGVmaW5lZChHVEVTVF9DSEVDS18pCisKKy8vIEFuIGFsbC1tb2RlIGFzc2VydCB0byB2ZXJpZnkg
dGhhdCB0aGUgZ2l2ZW4gUE9TSVgtc3R5bGUgZnVuY3Rpb24KKy8vIGNhbGwgcmV0dXJucyAwIChp
bmRpY2F0aW5nIHN1Y2Nlc3MpLiAgS25vd24gbGltaXRhdGlvbjogdGhpcworLy8gZG9lc24ndCBl
eHBhbmQgdG8gYSBiYWxhbmNlZCAnaWYnIHN0YXRlbWVudCwgc28gZW5jbG9zZSB0aGUgbWFjcm8K
Ky8vIGluIHt9IGlmIHlvdSBuZWVkIHRvIHVzZSBpdCBhcyB0aGUgb25seSBzdGF0ZW1lbnQgaW4g
YW4gJ2lmJworLy8gYnJhbmNoLgorI2RlZmluZSBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNTXyhw
b3NpeF9jYWxsKSBcCisgIGlmIChjb25zdCBpbnQgZ3Rlc3RfZXJyb3IgPSAocG9zaXhfY2FsbCkp
IFwKKyAgICBHVEVTVF9MT0dfKEZBVEFMKSA8PCAjcG9zaXhfY2FsbCA8PCAiZmFpbGVkIHdpdGgg
ZXJyb3IgIiBcCisgICAgICAgICAgICAgICAgICAgICAgPDwgZ3Rlc3RfZXJyb3IKKworI2lmIEdU
RVNUX0hBU19TVERfTU9WRV8KK3VzaW5nIHN0ZDo6bW92ZTsKKyNlbHNlICAvLyBHVEVTVF9IQVNf
U1REX01PVkVfCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NvbnN0IFQmIG1vdmUoY29uc3QgVCYg
dCkgeworICByZXR1cm4gdDsKK30KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9NT1ZFXworCisv
LyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gVVNFUiBDT0RFLgorLy8K
Ky8vIFVzZSBJbXBsaWNpdENhc3RfIGFzIGEgc2FmZSB2ZXJzaW9uIG9mIHN0YXRpY19jYXN0IGZv
ciB1cGNhc3RpbmcgaW4KKy8vIHRoZSB0eXBlIGhpZXJhcmNoeSAoZS5nLiBjYXN0aW5nIGEgRm9v
KiB0byBhIFN1cGVyY2xhc3NPZkZvbyogb3IgYQorLy8gY29uc3QgRm9vKikuICBXaGVuIHlvdSB1
c2UgSW1wbGljaXRDYXN0XywgdGhlIGNvbXBpbGVyIGNoZWNrcyB0aGF0CisvLyB0aGUgY2FzdCBp
cyBzYWZlLiAgU3VjaCBleHBsaWNpdCBJbXBsaWNpdENhc3RfcyBhcmUgbmVjZXNzYXJ5IGluCisv
LyBzdXJwcmlzaW5nbHkgbWFueSBzaXR1YXRpb25zIHdoZXJlIEMrKyBkZW1hbmRzIGFuIGV4YWN0
IHR5cGUgbWF0Y2gKKy8vIGluc3RlYWQgb2YgYW4gYXJndW1lbnQgdHlwZSBjb252ZXJ0YWJsZSB0
byBhIHRhcmdldCB0eXBlLgorLy8KKy8vIFRoZSBzeW50YXggZm9yIHVzaW5nIEltcGxpY2l0Q2Fz
dF8gaXMgdGhlIHNhbWUgYXMgZm9yIHN0YXRpY19jYXN0OgorLy8KKy8vICAgSW1wbGljaXRDYXN0
XzxUb1R5cGU+KGV4cHIpCisvLworLy8gSW1wbGljaXRDYXN0XyB3b3VsZCBoYXZlIGJlZW4gcGFy
dCBvZiB0aGUgQysrIHN0YW5kYXJkIGxpYnJhcnksCisvLyBidXQgdGhlIHByb3Bvc2FsIHdhcyBz
dWJtaXR0ZWQgdG9vIGxhdGUuICBJdCB3aWxsIHByb2JhYmx5IG1ha2UKKy8vIGl0cyB3YXkgaW50
byB0aGUgbGFuZ3VhZ2UgaW4gdGhlIGZ1dHVyZS4KKy8vCisvLyBUaGlzIHJlbGF0aXZlbHkgdWds
eSBuYW1lIGlzIGludGVudGlvbmFsLiBJdCBwcmV2ZW50cyBjbGFzaGVzIHdpdGgKKy8vIHNpbWls
YXIgZnVuY3Rpb25zIHVzZXJzIG1heSBoYXZlIChlLmcuLCBpbXBsaWNpdF9jYXN0KS4gVGhlIGlu
dGVybmFsCisvLyBuYW1lc3BhY2UgYWxvbmUgaXMgbm90IGVub3VnaCBiZWNhdXNlIHRoZSBmdW5j
dGlvbiBjYW4gYmUgZm91bmQgYnkgQURMLgordGVtcGxhdGU8dHlwZW5hbWUgVG8+CitpbmxpbmUg
VG8gSW1wbGljaXRDYXN0XyhUbyB4KSB7IHJldHVybiB4OyB9CisKKy8vIFdoZW4geW91IHVwY2Fz
dCAodGhhdCBpcywgY2FzdCBhIHBvaW50ZXIgZnJvbSB0eXBlIEZvbyB0byB0eXBlCisvLyBTdXBl
cmNsYXNzT2ZGb28pLCBpdCdzIGZpbmUgdG8gdXNlIEltcGxpY2l0Q2FzdF88Piwgc2luY2UgdXBj
YXN0cworLy8gYWx3YXlzIHN1Y2NlZWQuICBXaGVuIHlvdSBkb3duY2FzdCAodGhhdCBpcywgY2Fz
dCBhIHBvaW50ZXIgZnJvbQorLy8gdHlwZSBGb28gdG8gdHlwZSBTdWJjbGFzc09mRm9vKSwgc3Rh
dGljX2Nhc3Q8PiBpc24ndCBzYWZlLCBiZWNhdXNlCisvLyBob3cgZG8geW91IGtub3cgdGhlIHBv
aW50ZXIgaXMgcmVhbGx5IG9mIHR5cGUgU3ViY2xhc3NPZkZvbz8gIEl0CisvLyBjb3VsZCBiZSBh
IGJhcmUgRm9vLCBvciBvZiB0eXBlIERpZmZlcmVudFN1YmNsYXNzT2ZGb28uICBUaHVzLAorLy8g
d2hlbiB5b3UgZG93bmNhc3QsIHlvdSBzaG91bGQgdXNlIHRoaXMgbWFjcm8uICBJbiBkZWJ1ZyBt
b2RlLCB3ZQorLy8gdXNlIGR5bmFtaWNfY2FzdDw+IHRvIGRvdWJsZS1jaGVjayB0aGUgZG93bmNh
c3QgaXMgbGVnYWwgKHdlIGRpZQorLy8gaWYgaXQncyBub3QpLiAgSW4gbm9ybWFsIG1vZGUsIHdl
IGRvIHRoZSBlZmZpY2llbnQgc3RhdGljX2Nhc3Q8PgorLy8gaW5zdGVhZC4gIFRodXMsIGl0J3Mg
aW1wb3J0YW50IHRvIHRlc3QgaW4gZGVidWcgbW9kZSB0byBtYWtlIHN1cmUKKy8vIHRoZSBjYXN0
IGlzIGxlZ2FsIQorLy8gICAgVGhpcyBpcyB0aGUgb25seSBwbGFjZSBpbiB0aGUgY29kZSB3ZSBz
aG91bGQgdXNlIGR5bmFtaWNfY2FzdDw+LgorLy8gSW4gcGFydGljdWxhciwgeW91IFNIT1VMRE4n
VCBiZSB1c2luZyBkeW5hbWljX2Nhc3Q8PiBpbiBvcmRlciB0bworLy8gZG8gUlRUSSAoZWcgY29k
ZSBsaWtlIHRoaXM6CisvLyAgICBpZiAoZHluYW1pY19jYXN0PFN1YmNsYXNzMT4oZm9vKSkgSGFu
ZGxlQVN1YmNsYXNzMU9iamVjdChmb28pOworLy8gICAgaWYgKGR5bmFtaWNfY2FzdDxTdWJjbGFz
czI+KGZvbykpIEhhbmRsZUFTdWJjbGFzczJPYmplY3QoZm9vKTsKKy8vIFlvdSBzaG91bGQgZGVz
aWduIHRoZSBjb2RlIHNvbWUgb3RoZXIgd2F5IG5vdCB0byBuZWVkIHRoaXMuCisvLworLy8gVGhp
cyByZWxhdGl2ZWx5IHVnbHkgbmFtZSBpcyBpbnRlbnRpb25hbC4gSXQgcHJldmVudHMgY2xhc2hl
cyB3aXRoCisvLyBzaW1pbGFyIGZ1bmN0aW9ucyB1c2VycyBtYXkgaGF2ZSAoZS5nLiwgZG93bl9j
YXN0KS4gVGhlIGludGVybmFsCisvLyBuYW1lc3BhY2UgYWxvbmUgaXMgbm90IGVub3VnaCBiZWNh
dXNlIHRoZSBmdW5jdGlvbiBjYW4gYmUgZm91bmQgYnkgQURMLgordGVtcGxhdGU8dHlwZW5hbWUg
VG8sIHR5cGVuYW1lIEZyb20+ICAvLyB1c2UgbGlrZSB0aGlzOiBEb3duQ2FzdF88VCo+KGZvbyk7
CitpbmxpbmUgVG8gRG93bkNhc3RfKEZyb20qIGYpIHsgIC8vIHNvIHdlIG9ubHkgYWNjZXB0IHBv
aW50ZXJzCisgIC8vIEVuc3VyZXMgdGhhdCBUbyBpcyBhIHN1Yi10eXBlIG9mIEZyb20gKi4gIFRo
aXMgdGVzdCBpcyBoZXJlIG9ubHkKKyAgLy8gZm9yIGNvbXBpbGUtdGltZSB0eXBlIGNoZWNraW5n
LCBhbmQgaGFzIG5vIG92ZXJoZWFkIGluIGFuCisgIC8vIG9wdGltaXplZCBidWlsZCBhdCBydW4t
dGltZSwgYXMgaXQgd2lsbCBiZSBvcHRpbWl6ZWQgYXdheQorICAvLyBjb21wbGV0ZWx5LgorICBH
VEVTVF9JTlRFTlRJT05BTF9DT05TVF9DT05EX1BVU0hfKCkKKyAgaWYgKGZhbHNlKSB7CisgIEdU
RVNUX0lOVEVOVElPTkFMX0NPTlNUX0NPTkRfUE9QXygpCisgICAgY29uc3QgVG8gdG8gPSBOVUxM
OworICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88RnJvbSo+KHRvKTsKKyAg
fQorCisjaWYgR1RFU1RfSEFTX1JUVEkKKyAgLy8gUlRUSTogZGVidWcgbW9kZSBvbmx5IQorICBH
VEVTVF9DSEVDS18oZiA9PSBOVUxMIHx8IGR5bmFtaWNfY2FzdDxUbz4oZikgIT0gTlVMTCk7Cisj
ZW5kaWYKKyAgcmV0dXJuIHN0YXRpY19jYXN0PFRvPihmKTsKK30KKworLy8gRG93bmNhc3RzIHRo
ZSBwb2ludGVyIG9mIHR5cGUgQmFzZSB0byBEZXJpdmVkLgorLy8gRGVyaXZlZCBtdXN0IGJlIGEg
c3ViY2xhc3Mgb2YgQmFzZS4gVGhlIHBhcmFtZXRlciBNVVNUCisvLyBwb2ludCB0byBhIGNsYXNz
IG9mIHR5cGUgRGVyaXZlZCwgbm90IGFueSBzdWJjbGFzcyBvZiBpdC4KKy8vIFdoZW4gUlRUSSBp
cyBhdmFpbGFibGUsIHRoZSBmdW5jdGlvbiBwZXJmb3JtcyBhIHJ1bnRpbWUKKy8vIGNoZWNrIHRv
IGVuZm9yY2UgdGhpcy4KK3RlbXBsYXRlIDxjbGFzcyBEZXJpdmVkLCBjbGFzcyBCYXNlPgorRGVy
aXZlZCogQ2hlY2tlZERvd25jYXN0VG9BY3R1YWxUeXBlKEJhc2UqIGJhc2UpIHsKKyNpZiBHVEVT
VF9IQVNfUlRUSQorICBHVEVTVF9DSEVDS18odHlwZWlkKCpiYXNlKSA9PSB0eXBlaWQoRGVyaXZl
ZCkpOworI2VuZGlmCisKKyNpZiBHVEVTVF9IQVNfRE9XTkNBU1RfCisgIHJldHVybiA6OmRvd25f
Y2FzdDxEZXJpdmVkKj4oYmFzZSk7CisjZWxpZiBHVEVTVF9IQVNfUlRUSQorICByZXR1cm4gZHlu
YW1pY19jYXN0PERlcml2ZWQqPihiYXNlKTsgIC8vIE5PTElOVAorI2Vsc2UKKyAgcmV0dXJuIHN0
YXRpY19jYXN0PERlcml2ZWQqPihiYXNlKTsgIC8vIFBvb3IgbWFuJ3MgZG93bmNhc3QuCisjZW5k
aWYKK30KKworI2lmIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KKworLy8gRGVmaW5lcyB0
aGUgc3RkZXJyIGNhcHR1cmVyOgorLy8gICBDYXB0dXJlU3Rkb3V0ICAgICAtIHN0YXJ0cyBjYXB0
dXJpbmcgc3Rkb3V0LgorLy8gICBHZXRDYXB0dXJlZFN0ZG91dCAtIHN0b3BzIGNhcHR1cmluZyBz
dGRvdXQgYW5kIHJldHVybnMgdGhlIGNhcHR1cmVkIHN0cmluZy4KKy8vICAgQ2FwdHVyZVN0ZGVy
ciAgICAgLSBzdGFydHMgY2FwdHVyaW5nIHN0ZGVyci4KKy8vICAgR2V0Q2FwdHVyZWRTdGRlcnIg
LSBzdG9wcyBjYXB0dXJpbmcgc3RkZXJyIGFuZCByZXR1cm5zIHRoZSBjYXB0dXJlZCBzdHJpbmcu
CisvLworR1RFU1RfQVBJXyB2b2lkIENhcHR1cmVTdGRvdXQoKTsKK0dURVNUX0FQSV8gc3RkOjpz
dHJpbmcgR2V0Q2FwdHVyZWRTdGRvdXQoKTsKK0dURVNUX0FQSV8gdm9pZCBDYXB0dXJlU3RkZXJy
KCk7CitHVEVTVF9BUElfIHN0ZDo6c3RyaW5nIEdldENhcHR1cmVkU3RkZXJyKCk7CisKKyNlbmRp
ZiAgLy8gR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgorCisvLyBSZXR1cm5zIHRoZSBzaXpl
IChpbiBieXRlcykgb2YgYSBmaWxlLgorR1RFU1RfQVBJXyBzaXplX3QgR2V0RmlsZVNpemUoRklM
RSogZmlsZSk7CisKKy8vIFJlYWRzIHRoZSBlbnRpcmUgY29udGVudCBvZiBhIGZpbGUgYXMgYSBz
dHJpbmcuCitHVEVTVF9BUElfIHN0ZDo6c3RyaW5nIFJlYWRFbnRpcmVGaWxlKEZJTEUqIGZpbGUp
OworCisvLyBBbGwgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4KK0dURVNUX0FQSV8gY29uc3QgOjpz
dGQ6OnZlY3Rvcjx0ZXN0aW5nOjppbnRlcm5hbDo6c3RyaW5nPiYgR2V0QXJndnMoKTsKKworI2lm
IEdURVNUX0hBU19ERUFUSF9URVNUCisKK2NvbnN0IDo6c3RkOjp2ZWN0b3I8dGVzdGluZzo6aW50
ZXJuYWw6OnN0cmluZz4mIEdldEluamVjdGFibGVBcmd2cygpOwordm9pZCBTZXRJbmplY3RhYmxl
QXJndnMoY29uc3QgOjpzdGQ6OnZlY3Rvcjx0ZXN0aW5nOjppbnRlcm5hbDo6c3RyaW5nPioKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X2FyZ3ZzKTsKKworCisjZW5kaWYgIC8vIEdU
RVNUX0hBU19ERUFUSF9URVNUCisKKy8vIERlZmluZXMgc3luY2hyb25pemF0aW9uIHByaW1pdGl2
ZXMuCisjaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQorIyBpZiBHVEVTVF9IQVNfUFRIUkVBRAorLy8g
U2xlZXBzIGZvciAocm91Z2hseSkgbiBtaWxsaXNlY29uZHMuICBUaGlzIGZ1bmN0aW9uIGlzIG9u
bHkgZm9yIHRlc3RpbmcKKy8vIEdvb2dsZSBUZXN0J3Mgb3duIGNvbnN0cnVjdHMuICBEb24ndCB1
c2UgaXQgaW4gdXNlciB0ZXN0cywgZWl0aGVyCisvLyBkaXJlY3RseSBvciBpbmRpcmVjdGx5Lgor
aW5saW5lIHZvaWQgU2xlZXBNaWxsaXNlY29uZHMoaW50IG4pIHsKKyAgY29uc3QgdGltZXNwZWMg
dGltZSA9IHsKKyAgICAwLCAgICAgICAgICAgICAgICAgIC8vIDAgc2Vjb25kcy4KKyAgICBuICog
MTAwMEwgKiAxMDAwTCwgIC8vIEFuZCBuIG1zLgorICB9OworICBuYW5vc2xlZXAoJnRpbWUsIE5V
TEwpOworfQorIyBlbmRpZiAgLy8gR1RFU1RfSEFTX1BUSFJFQUQKKworIyBpZiBHVEVTVF9IQVNf
Tk9USUZJQ0FUSU9OXworLy8gTm90aWZpY2F0aW9uIGhhcyBhbHJlYWR5IGJlZW4gaW1wb3J0ZWQg
aW50byB0aGUgbmFtZXNwYWNlLgorLy8gTm90aGluZyB0byBkbyBoZXJlLgorCisjIGVsaWYgR1RF
U1RfSEFTX1BUSFJFQUQKKy8vIEFsbG93cyBhIGNvbnRyb2xsZXIgdGhyZWFkIHRvIHBhdXNlIGV4
ZWN1dGlvbiBvZiBuZXdseSBjcmVhdGVkCisvLyB0aHJlYWRzIHVudGlsIG5vdGlmaWVkLiAgSW5z
dGFuY2VzIG9mIHRoaXMgY2xhc3MgbXVzdCBiZSBjcmVhdGVkCisvLyBhbmQgZGVzdHJveWVkIGlu
IHRoZSBjb250cm9sbGVyIHRocmVhZC4KKy8vCisvLyBUaGlzIGNsYXNzIGlzIG9ubHkgZm9yIHRl
c3RpbmcgR29vZ2xlIFRlc3QncyBvd24gY29uc3RydWN0cy4gRG8gbm90CisvLyB1c2UgaXQgaW4g
dXNlciB0ZXN0cywgZWl0aGVyIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkuCitjbGFzcyBOb3RpZmlj
YXRpb24geworIHB1YmxpYzoKKyAgTm90aWZpY2F0aW9uKCkgOiBub3RpZmllZF8oZmFsc2UpIHsK
KyAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNTXyhwdGhyZWFkX211dGV4X2luaXQoJm11dGV4
XywgTlVMTCkpOworICB9CisgIH5Ob3RpZmljYXRpb24oKSB7CisgICAgcHRocmVhZF9tdXRleF9k
ZXN0cm95KCZtdXRleF8pOworICB9CisKKyAgLy8gTm90aWZpZXMgYWxsIHRocmVhZHMgY3JlYXRl
ZCB3aXRoIHRoaXMgbm90aWZpY2F0aW9uIHRvIHN0YXJ0LiBNdXN0CisgIC8vIGJlIGNhbGxlZCBm
cm9tIHRoZSBjb250cm9sbGVyIHRocmVhZC4KKyAgdm9pZCBOb3RpZnkoKSB7CisgICAgcHRocmVh
ZF9tdXRleF9sb2NrKCZtdXRleF8pOworICAgIG5vdGlmaWVkXyA9IHRydWU7CisgICAgcHRocmVh
ZF9tdXRleF91bmxvY2soJm11dGV4Xyk7CisgIH0KKworICAvLyBCbG9ja3MgdW50aWwgdGhlIGNv
bnRyb2xsZXIgdGhyZWFkIG5vdGlmaWVzLiBNdXN0IGJlIGNhbGxlZCBmcm9tIGEgdGVzdAorICAv
LyB0aHJlYWQuCisgIHZvaWQgV2FpdEZvck5vdGlmaWNhdGlvbigpIHsKKyAgICBmb3IgKDs7KSB7
CisgICAgICBwdGhyZWFkX211dGV4X2xvY2soJm11dGV4Xyk7CisgICAgICBjb25zdCBib29sIG5v
dGlmaWVkID0gbm90aWZpZWRfOworICAgICAgcHRocmVhZF9tdXRleF91bmxvY2soJm11dGV4Xyk7
CisgICAgICBpZiAobm90aWZpZWQpCisgICAgICAgIGJyZWFrOworICAgICAgU2xlZXBNaWxsaXNl
Y29uZHMoMTApOworICAgIH0KKyAgfQorCisgcHJpdmF0ZToKKyAgcHRocmVhZF9tdXRleF90IG11
dGV4XzsKKyAgYm9vbCBub3RpZmllZF87CisKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNT
SUdOXyhOb3RpZmljYXRpb24pOworfTsKKworIyBlbGlmIEdURVNUX09TX1dJTkRPV1MgJiYgIUdU
RVNUX09TX1dJTkRPV1NfUEhPTkUgJiYgIUdURVNUX09TX1dJTkRPV1NfUlQKKworR1RFU1RfQVBJ
XyB2b2lkIFNsZWVwTWlsbGlzZWNvbmRzKGludCBuKTsKKworLy8gUHJvdmlkZXMgbGVhay1zYWZl
IFdpbmRvd3Mga2VybmVsIGhhbmRsZSBvd25lcnNoaXAuCisvLyBVc2VkIGluIGRlYXRoIHRlc3Rz
IGFuZCBpbiB0aHJlYWRpbmcgc3VwcG9ydC4KK2NsYXNzIEdURVNUX0FQSV8gQXV0b0hhbmRsZSB7
CisgcHVibGljOgorICAvLyBBc3N1bWUgdGhhdCBXaW4zMiBIQU5ETEUgdHlwZSBpcyBlcXVpdmFs
ZW50IHRvIHZvaWQqLiBEb2luZyBzbyBhbGxvd3MgdXMgdG8KKyAgLy8gYXZvaWQgaW5jbHVkaW5n
IDx3aW5kb3dzLmg+IGluIHRoaXMgaGVhZGVyIGZpbGUuIEluY2x1ZGluZyA8d2luZG93cy5oPiBp
cworICAvLyB1bmRlc2lyYWJsZSBiZWNhdXNlIGl0IGRlZmluZXMgYSBsb3Qgb2Ygc3ltYm9scyBh
bmQgbWFjcm9zIHRoYXQgdGVuZCB0bworICAvLyBjb25mbGljdCB3aXRoIGNsaWVudCBjb2RlLiBU
aGlzIGFzc3VtcHRpb24gaXMgdmVyaWZpZWQgYnkKKyAgLy8gV2luZG93c1R5cGVzVGVzdC5IQU5E
TEVJc1ZvaWRTdGFyLgorICB0eXBlZGVmIHZvaWQqIEhhbmRsZTsKKyAgQXV0b0hhbmRsZSgpOwor
ICBleHBsaWNpdCBBdXRvSGFuZGxlKEhhbmRsZSBoYW5kbGUpOworCisgIH5BdXRvSGFuZGxlKCk7
CisKKyAgSGFuZGxlIEdldCgpIGNvbnN0OworICB2b2lkIFJlc2V0KCk7CisgIHZvaWQgUmVzZXQo
SGFuZGxlIGhhbmRsZSk7CisKKyBwcml2YXRlOgorICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSBo
YW5kbGUgaXMgYSB2YWxpZCBoYW5kbGUgb2JqZWN0IHRoYXQgY2FuIGJlIGNsb3NlZC4KKyAgYm9v
bCBJc0Nsb3NlYWJsZSgpIGNvbnN0OworCisgIEhhbmRsZSBoYW5kbGVfOworCisgIEdURVNUX0RJ
U0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oQXV0b0hhbmRsZSk7Cit9OworCisvLyBBbGxvd3MgYSBj
b250cm9sbGVyIHRocmVhZCB0byBwYXVzZSBleGVjdXRpb24gb2YgbmV3bHkgY3JlYXRlZAorLy8g
dGhyZWFkcyB1bnRpbCBub3RpZmllZC4gIEluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIG11c3QgYmUg
Y3JlYXRlZAorLy8gYW5kIGRlc3Ryb3llZCBpbiB0aGUgY29udHJvbGxlciB0aHJlYWQuCisvLwor
Ly8gVGhpcyBjbGFzcyBpcyBvbmx5IGZvciB0ZXN0aW5nIEdvb2dsZSBUZXN0J3Mgb3duIGNvbnN0
cnVjdHMuIERvIG5vdAorLy8gdXNlIGl0IGluIHVzZXIgdGVzdHMsIGVpdGhlciBkaXJlY3RseSBv
ciBpbmRpcmVjdGx5LgorY2xhc3MgR1RFU1RfQVBJXyBOb3RpZmljYXRpb24geworIHB1YmxpYzoK
KyAgTm90aWZpY2F0aW9uKCk7CisgIHZvaWQgTm90aWZ5KCk7CisgIHZvaWQgV2FpdEZvck5vdGlm
aWNhdGlvbigpOworCisgcHJpdmF0ZToKKyAgQXV0b0hhbmRsZSBldmVudF87CisKKyAgR1RFU1Rf
RElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhOb3RpZmljYXRpb24pOworfTsKKyMgZW5kaWYgIC8v
IEdURVNUX0hBU19OT1RJRklDQVRJT05fCisKKy8vIE9uIE1pbkdXLCB3ZSBjYW4gaGF2ZSBib3Ro
IEdURVNUX09TX1dJTkRPV1MgYW5kIEdURVNUX0hBU19QVEhSRUFECisvLyBkZWZpbmVkLCBidXQg
d2UgZG9uJ3Qgd2FudCB0byB1c2UgTWluR1cncyBwdGhyZWFkcyBpbXBsZW1lbnRhdGlvbiwgd2hp
Y2gKKy8vIGhhcyBjb25mb3JtYW5jZSBwcm9ibGVtcyB3aXRoIHNvbWUgdmVyc2lvbnMgb2YgdGhl
IFBPU0lYIHN0YW5kYXJkLgorIyBpZiBHVEVTVF9IQVNfUFRIUkVBRCAmJiAhR1RFU1RfT1NfV0lO
RE9XU19NSU5HVworCisvLyBBcyBhIEMtZnVuY3Rpb24sIFRocmVhZEZ1bmNXaXRoQ0xpbmthZ2Ug
Y2Fubm90IGJlIHRlbXBsYXRlZCBpdHNlbGYuCisvLyBDb25zZXF1ZW50bHksIGl0IGNhbm5vdCBz
ZWxlY3QgYSBjb3JyZWN0IGluc3RhbnRpYXRpb24gb2YgVGhyZWFkV2l0aFBhcmFtCisvLyBpbiBv
cmRlciB0byBjYWxsIGl0cyBSdW4oKS4gSW50cm9kdWNpbmcgVGhyZWFkV2l0aFBhcmFtQmFzZSBh
cyBhCisvLyBub24tdGVtcGxhdGVkIGJhc2UgY2xhc3MgZm9yIFRocmVhZFdpdGhQYXJhbSBhbGxv
d3MgdXMgdG8gYnlwYXNzIHRoaXMKKy8vIHByb2JsZW0uCitjbGFzcyBUaHJlYWRXaXRoUGFyYW1C
YXNlIHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgflRocmVhZFdpdGhQYXJhbUJhc2UoKSB7fQorICB2
aXJ0dWFsIHZvaWQgUnVuKCkgPSAwOworfTsKKworLy8gcHRocmVhZF9jcmVhdGUoKSBhY2NlcHRz
IGEgcG9pbnRlciB0byBhIGZ1bmN0aW9uIHR5cGUgd2l0aCB0aGUgQyBsaW5rYWdlLgorLy8gQWNj
b3JkaW5nIHRvIHRoZSBTdGFuZGFyZCAoNy41LzEpLCBmdW5jdGlvbiB0eXBlcyB3aXRoIGRpZmZl
cmVudCBsaW5rYWdlcworLy8gYXJlIGRpZmZlcmVudCBldmVuIGlmIHRoZXkgYXJlIG90aGVyd2lz
ZSBpZGVudGljYWwuICBTb21lIGNvbXBpbGVycyAoZm9yCisvLyBleGFtcGxlLCBTdW5TdHVkaW8p
IHRyZWF0IHRoZW0gYXMgZGlmZmVyZW50IHR5cGVzLiAgU2luY2UgY2xhc3MgbWV0aG9kcworLy8g
Y2Fubm90IGJlIGRlZmluZWQgd2l0aCBDLWxpbmthZ2Ugd2UgbmVlZCB0byBkZWZpbmUgYSBmcmVl
IEMtZnVuY3Rpb24gdG8KKy8vIHBhc3MgaW50byBwdGhyZWFkX2NyZWF0ZSgpLgorZXh0ZXJuICJD
IiBpbmxpbmUgdm9pZCogVGhyZWFkRnVuY1dpdGhDTGlua2FnZSh2b2lkKiB0aHJlYWQpIHsKKyAg
c3RhdGljX2Nhc3Q8VGhyZWFkV2l0aFBhcmFtQmFzZSo+KHRocmVhZCktPlJ1bigpOworICByZXR1
cm4gTlVMTDsKK30KKworLy8gSGVscGVyIGNsYXNzIGZvciB0ZXN0aW5nIEdvb2dsZSBUZXN0J3Mg
bXVsdGktdGhyZWFkaW5nIGNvbnN0cnVjdHMuCisvLyBUbyB1c2UgaXQsIHdyaXRlOgorLy8KKy8v
ICAgdm9pZCBUaHJlYWRGdW5jKGludCBwYXJhbSkgeyAvKiBEbyB0aGluZ3Mgd2l0aCBwYXJhbSAq
LyB9CisvLyAgIE5vdGlmaWNhdGlvbiB0aHJlYWRfY2FuX3N0YXJ0OworLy8gICAuLi4KKy8vICAg
Ly8gVGhlIHRocmVhZF9jYW5fc3RhcnQgcGFyYW1ldGVyIGlzIG9wdGlvbmFsOyB5b3UgY2FuIHN1
cHBseSBOVUxMLgorLy8gICBUaHJlYWRXaXRoUGFyYW08aW50PiB0aHJlYWQoJlRocmVhZEZ1bmMs
IDUsICZ0aHJlYWRfY2FuX3N0YXJ0KTsKKy8vICAgdGhyZWFkX2Nhbl9zdGFydC5Ob3RpZnkoKTsK
Ky8vCisvLyBUaGVzZSBjbGFzc2VzIGFyZSBvbmx5IGZvciB0ZXN0aW5nIEdvb2dsZSBUZXN0J3Mg
b3duIGNvbnN0cnVjdHMuIERvCisvLyBub3QgdXNlIHRoZW0gaW4gdXNlciB0ZXN0cywgZWl0aGVy
IGRpcmVjdGx5IG9yIGluZGlyZWN0bHkuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFRo
cmVhZFdpdGhQYXJhbSA6IHB1YmxpYyBUaHJlYWRXaXRoUGFyYW1CYXNlIHsKKyBwdWJsaWM6Cisg
IHR5cGVkZWYgdm9pZCBVc2VyVGhyZWFkRnVuYyhUKTsKKworICBUaHJlYWRXaXRoUGFyYW0oVXNl
clRocmVhZEZ1bmMqIGZ1bmMsIFQgcGFyYW0sIE5vdGlmaWNhdGlvbiogdGhyZWFkX2Nhbl9zdGFy
dCkKKyAgICAgIDogZnVuY18oZnVuYyksCisgICAgICAgIHBhcmFtXyhwYXJhbSksCisgICAgICAg
IHRocmVhZF9jYW5fc3RhcnRfKHRocmVhZF9jYW5fc3RhcnQpLAorICAgICAgICBmaW5pc2hlZF8o
ZmFsc2UpIHsKKyAgICBUaHJlYWRXaXRoUGFyYW1CYXNlKiBjb25zdCBiYXNlID0gdGhpczsKKyAg
ICAvLyBUaGUgdGhyZWFkIGNhbiBiZSBjcmVhdGVkIG9ubHkgYWZ0ZXIgYWxsIGZpZWxkcyBleGNl
cHQgdGhyZWFkXworICAgIC8vIGhhdmUgYmVlbiBpbml0aWFsaXplZC4KKyAgICBHVEVTVF9DSEVD
S19QT1NJWF9TVUNDRVNTXygKKyAgICAgICAgcHRocmVhZF9jcmVhdGUoJnRocmVhZF8sIDAsICZU
aHJlYWRGdW5jV2l0aENMaW5rYWdlLCBiYXNlKSk7CisgIH0KKyAgflRocmVhZFdpdGhQYXJhbSgp
IHsgSm9pbigpOyB9CisKKyAgdm9pZCBKb2luKCkgeworICAgIGlmICghZmluaXNoZWRfKSB7Cisg
ICAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNTXyhwdGhyZWFkX2pvaW4odGhyZWFkXywgMCkp
OworICAgICAgZmluaXNoZWRfID0gdHJ1ZTsKKyAgICB9CisgIH0KKworICB2aXJ0dWFsIHZvaWQg
UnVuKCkgeworICAgIGlmICh0aHJlYWRfY2FuX3N0YXJ0XyAhPSBOVUxMKQorICAgICAgdGhyZWFk
X2Nhbl9zdGFydF8tPldhaXRGb3JOb3RpZmljYXRpb24oKTsKKyAgICBmdW5jXyhwYXJhbV8pOwor
ICB9CisKKyBwcml2YXRlOgorICBVc2VyVGhyZWFkRnVuYyogY29uc3QgZnVuY187ICAvLyBVc2Vy
LXN1cHBsaWVkIHRocmVhZCBmdW5jdGlvbi4KKyAgY29uc3QgVCBwYXJhbV87ICAvLyBVc2VyLXN1
cHBsaWVkIHBhcmFtZXRlciB0byB0aGUgdGhyZWFkIGZ1bmN0aW9uLgorICAvLyBXaGVuIG5vbi1O
VUxMLCB1c2VkIHRvIGJsb2NrIGV4ZWN1dGlvbiB1bnRpbCB0aGUgY29udHJvbGxlciB0aHJlYWQK
KyAgLy8gbm90aWZpZXMuCisgIE5vdGlmaWNhdGlvbiogY29uc3QgdGhyZWFkX2Nhbl9zdGFydF87
CisgIGJvb2wgZmluaXNoZWRfOyAgLy8gdHJ1ZSBpZmYgd2Uga25vdyB0aGF0IHRoZSB0aHJlYWQg
ZnVuY3Rpb24gaGFzIGZpbmlzaGVkLgorICBwdGhyZWFkX3QgdGhyZWFkXzsgIC8vIFRoZSBuYXRp
dmUgdGhyZWFkIG9iamVjdC4KKworICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFRo
cmVhZFdpdGhQYXJhbSk7Cit9OworIyBlbmRpZiAgLy8gIUdURVNUX09TX1dJTkRPV1MgJiYgR1RF
U1RfSEFTX1BUSFJFQUQgfHwKKyAgICAgICAgIC8vIEdURVNUX0hBU19NVVRFWF9BTkRfVEhSRUFE
X0xPQ0FMXworCisjIGlmIEdURVNUX0hBU19NVVRFWF9BTkRfVEhSRUFEX0xPQ0FMXworLy8gTXV0
ZXggYW5kIFRocmVhZExvY2FsIGhhdmUgYWxyZWFkeSBiZWVuIGltcG9ydGVkIGludG8gdGhlIG5h
bWVzcGFjZS4KKy8vIE5vdGhpbmcgdG8gZG8gaGVyZS4KKworIyBlbGlmIEdURVNUX09TX1dJTkRP
V1MgJiYgIUdURVNUX09TX1dJTkRPV1NfUEhPTkUgJiYgIUdURVNUX09TX1dJTkRPV1NfUlQKKwor
Ly8gTXV0ZXggaW1wbGVtZW50cyBtdXRleCBvbiBXaW5kb3dzIHBsYXRmb3Jtcy4gIEl0IGlzIHVz
ZWQgaW4gY29uanVuY3Rpb24KKy8vIHdpdGggY2xhc3MgTXV0ZXhMb2NrOgorLy8KKy8vICAgTXV0
ZXggbXV0ZXg7CisvLyAgIC4uLgorLy8gICBNdXRleExvY2sgbG9jaygmbXV0ZXgpOyAgLy8gQWNx
dWlyZXMgdGhlIG11dGV4IGFuZCByZWxlYXNlcyBpdCBhdCB0aGUKKy8vICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGVuZCBvZiB0aGUgY3VycmVudCBzY29wZS4KKy8vCisvLyBBIHN0YXRp
YyBNdXRleCAqbXVzdCogYmUgZGVmaW5lZCBvciBkZWNsYXJlZCB1c2luZyBvbmUgb2YgdGhlIGZv
bGxvd2luZworLy8gbWFjcm9zOgorLy8gICBHVEVTVF9ERUZJTkVfU1RBVElDX01VVEVYXyhnX3Nv
bWVfbXV0ZXgpOworLy8gICBHVEVTVF9ERUNMQVJFX1NUQVRJQ19NVVRFWF8oZ19zb21lX211dGV4
KTsKKy8vCisvLyAoQSBub24tc3RhdGljIE11dGV4IGlzIGRlZmluZWQvZGVjbGFyZWQgaW4gdGhl
IHVzdWFsIHdheSkuCitjbGFzcyBHVEVTVF9BUElfIE11dGV4IHsKKyBwdWJsaWM6CisgIGVudW0g
TXV0ZXhUeXBlIHsga1N0YXRpYyA9IDAsIGtEeW5hbWljID0gMSB9OworICAvLyBXZSByZWx5IG9u
IGtTdGF0aWNNdXRleCBiZWluZyAwIGFzIGl0IGlzIHRvIHdoYXQgdGhlIGxpbmtlciBpbml0aWFs
aXplcworICAvLyB0eXBlXyBpbiBzdGF0aWMgbXV0ZXhlcy4gIGNyaXRpY2FsX3NlY3Rpb25fIHdp
bGwgYmUgaW5pdGlhbGl6ZWQgbGF6aWx5CisgIC8vIGluIFRocmVhZFNhZmVMYXp5SW5pdCgpLgor
ICBlbnVtIFN0YXRpY0NvbnN0cnVjdG9yU2VsZWN0b3IgeyBrU3RhdGljTXV0ZXggPSAwIH07CisK
KyAgLy8gVGhpcyBjb25zdHJ1Y3RvciBpbnRlbnRpb25hbGx5IGRvZXMgbm90aGluZy4gIEl0IHJl
bGllcyBvbiB0eXBlXyBiZWluZworICAvLyBzdGF0aWNhbGx5IGluaXRpYWxpemVkIHRvIDAgKGVm
ZmVjdGl2ZWx5IHNldHRpbmcgaXQgdG8ga1N0YXRpYykgYW5kIG9uCisgIC8vIFRocmVhZFNhZmVM
YXp5SW5pdCgpIHRvIGxhemlseSBpbml0aWFsaXplIHRoZSByZXN0IG9mIHRoZSBtZW1iZXJzLgor
ICBleHBsaWNpdCBNdXRleChTdGF0aWNDb25zdHJ1Y3RvclNlbGVjdG9yIC8qZHVtbXkqLykge30K
KworICBNdXRleCgpOworICB+TXV0ZXgoKTsKKworICB2b2lkIExvY2soKTsKKworICB2b2lkIFVu
bG9jaygpOworCisgIC8vIERvZXMgbm90aGluZyBpZiB0aGUgY3VycmVudCB0aHJlYWQgaG9sZHMg
dGhlIG11dGV4LiBPdGhlcndpc2UsIGNyYXNoZXMKKyAgLy8gd2l0aCBoaWdoIHByb2JhYmlsaXR5
LgorICB2b2lkIEFzc2VydEhlbGQoKTsKKworIHByaXZhdGU6CisgIC8vIEluaXRpYWxpemVzIG93
bmVyX3RocmVhZF9pZF8gYW5kIGNyaXRpY2FsX3NlY3Rpb25fIGluIHN0YXRpYyBtdXRleGVzLgor
ICB2b2lkIFRocmVhZFNhZmVMYXp5SW5pdCgpOworCisgIC8vIFBlciBodHRwOi8vYmxvZ3MubXNk
bi5jb20vYi9vbGRuZXd0aGluZy9hcmNoaXZlLzIwMDQvMDIvMjMvNzgzOTUuYXNweCwKKyAgLy8g
d2UgYXNzdW1lIHRoYXQgMCBpcyBhbiBpbnZhbGlkIHZhbHVlIGZvciB0aHJlYWQgSURzLgorICB1
bnNpZ25lZCBpbnQgb3duZXJfdGhyZWFkX2lkXzsKKworICAvLyBGb3Igc3RhdGljIG11dGV4ZXMs
IHdlIHJlbHkgb24gdGhlc2UgbWVtYmVycyBiZWluZyBpbml0aWFsaXplZCB0byB6ZXJvcworICAv
LyBieSB0aGUgbGlua2VyLgorICBNdXRleFR5cGUgdHlwZV87CisgIGxvbmcgY3JpdGljYWxfc2Vj
dGlvbl9pbml0X3BoYXNlXzsgIC8vIE5PTElOVAorICBHVEVTVF9DUklUSUNBTF9TRUNUSU9OKiBj
cml0aWNhbF9zZWN0aW9uXzsKKworICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKE11
dGV4KTsKK307CisKKyMgZGVmaW5lIEdURVNUX0RFQ0xBUkVfU1RBVElDX01VVEVYXyhtdXRleCkg
XAorICAgIGV4dGVybiA6OnRlc3Rpbmc6OmludGVybmFsOjpNdXRleCBtdXRleAorCisjIGRlZmlu
ZSBHVEVTVF9ERUZJTkVfU1RBVElDX01VVEVYXyhtdXRleCkgXAorICAgIDo6dGVzdGluZzo6aW50
ZXJuYWw6Ok11dGV4IG11dGV4KDo6dGVzdGluZzo6aW50ZXJuYWw6Ok11dGV4OjprU3RhdGljTXV0
ZXgpCisKKy8vIFdlIGNhbm5vdCBuYW1lIHRoaXMgY2xhc3MgTXV0ZXhMb2NrIGJlY2F1c2UgdGhl
IGN0b3IgZGVjbGFyYXRpb24gd291bGQKKy8vIGNvbmZsaWN0IHdpdGggYSBtYWNybyBuYW1lZCBN
dXRleExvY2ssIHdoaWNoIGlzIGRlZmluZWQgb24gc29tZQorLy8gcGxhdGZvcm1zLiBUaGF0IG1h
Y3JvIGlzIHVzZWQgYXMgYSBkZWZlbnNpdmUgbWVhc3VyZSB0byBwcmV2ZW50IGFnYWluc3QKKy8v
IGluYWR2ZXJ0ZW50IG1pc3VzZXMgb2YgTXV0ZXhMb2NrIGxpa2UgIk11dGV4TG9jaygmbXUpIiBy
YXRoZXIgdGhhbgorLy8gIk11dGV4TG9jayBsKCZtdSkiLiAgSGVuY2UgdGhlIHR5cGVkZWYgdHJp
Y2sgYmVsb3cuCitjbGFzcyBHVGVzdE11dGV4TG9jayB7CisgcHVibGljOgorICBleHBsaWNpdCBH
VGVzdE11dGV4TG9jayhNdXRleCogbXV0ZXgpCisgICAgICA6IG11dGV4XyhtdXRleCkgeyBtdXRl
eF8tPkxvY2soKTsgfQorCisgIH5HVGVzdE11dGV4TG9jaygpIHsgbXV0ZXhfLT5VbmxvY2soKTsg
fQorCisgcHJpdmF0ZToKKyAgTXV0ZXgqIGNvbnN0IG11dGV4XzsKKworICBHVEVTVF9ESVNBTExP
V19DT1BZX0FORF9BU1NJR05fKEdUZXN0TXV0ZXhMb2NrKTsKK307CisKK3R5cGVkZWYgR1Rlc3RN
dXRleExvY2sgTXV0ZXhMb2NrOworCisvLyBCYXNlIGNsYXNzIGZvciBWYWx1ZUhvbGRlcjxUPi4g
IEFsbG93cyBhIGNhbGxlciB0byBob2xkIGFuZCBkZWxldGUgYSB2YWx1ZQorLy8gd2l0aG91dCBr
bm93aW5nIGl0cyB0eXBlLgorY2xhc3MgVGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2UgeworIHB1
YmxpYzoKKyAgdmlydHVhbCB+VGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2UoKSB7fQorfTsKKwor
Ly8gUHJvdmlkZXMgYSB3YXkgZm9yIGEgdGhyZWFkIHRvIHNlbmQgbm90aWZpY2F0aW9ucyB0byBh
IFRocmVhZExvY2FsCisvLyByZWdhcmRsZXNzIG9mIGl0cyBwYXJhbWV0ZXIgdHlwZS4KK2NsYXNz
IFRocmVhZExvY2FsQmFzZSB7CisgcHVibGljOgorICAvLyBDcmVhdGVzIGEgbmV3IFZhbHVlSG9s
ZGVyPFQ+IG9iamVjdCBob2xkaW5nIGEgZGVmYXVsdCB2YWx1ZSBwYXNzZWQgdG8KKyAgLy8gdGhp
cyBUaHJlYWRMb2NhbDxUPidzIGNvbnN0cnVjdG9yIGFuZCByZXR1cm5zIGl0LiAgSXQgaXMgdGhl
IGNhbGxlcidzCisgIC8vIHJlc3BvbnNpYmlsaXR5IG5vdCB0byBjYWxsIHRoaXMgd2hlbiB0aGUg
VGhyZWFkTG9jYWw8VD4gaW5zdGFuY2UgYWxyZWFkeQorICAvLyBoYXMgYSB2YWx1ZSBvbiB0aGUg
Y3VycmVudCB0aHJlYWQuCisgIHZpcnR1YWwgVGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2UqIE5l
d1ZhbHVlRm9yQ3VycmVudFRocmVhZCgpIGNvbnN0ID0gMDsKKworIHByb3RlY3RlZDoKKyAgVGhy
ZWFkTG9jYWxCYXNlKCkge30KKyAgdmlydHVhbCB+VGhyZWFkTG9jYWxCYXNlKCkge30KKworIHBy
aXZhdGU6CisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGhyZWFkTG9jYWxCYXNl
KTsKK307CisKKy8vIE1hcHMgYSB0aHJlYWQgdG8gYSBzZXQgb2YgVGhyZWFkTG9jYWxzIHRoYXQg
aGF2ZSB2YWx1ZXMgaW5zdGFudGlhdGVkIG9uIHRoYXQKKy8vIHRocmVhZCBhbmQgbm90aWZpZXMg
dGhlbSB3aGVuIHRoZSB0aHJlYWQgZXhpdHMuICBBIFRocmVhZExvY2FsIGluc3RhbmNlIGlzCisv
LyBleHBlY3RlZCB0byBwZXJzaXN0IHVudGlsIGFsbCB0aHJlYWRzIGl0IGhhcyB2YWx1ZXMgb24g
aGF2ZSB0ZXJtaW5hdGVkLgorY2xhc3MgR1RFU1RfQVBJXyBUaHJlYWRMb2NhbFJlZ2lzdHJ5IHsK
KyBwdWJsaWM6CisgIC8vIFJlZ2lzdGVycyB0aHJlYWRfbG9jYWxfaW5zdGFuY2UgYXMgaGF2aW5n
IHZhbHVlIG9uIHRoZSBjdXJyZW50IHRocmVhZC4KKyAgLy8gUmV0dXJucyBhIHZhbHVlIHRoYXQg
Y2FuIGJlIHVzZWQgdG8gaWRlbnRpZnkgdGhlIHRocmVhZCBmcm9tIG90aGVyIHRocmVhZHMuCisg
IHN0YXRpYyBUaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZSogR2V0VmFsdWVPbkN1cnJlbnRUaHJl
YWQoCisgICAgICBjb25zdCBUaHJlYWRMb2NhbEJhc2UqIHRocmVhZF9sb2NhbF9pbnN0YW5jZSk7
CisKKyAgLy8gSW52b2tlZCB3aGVuIGEgVGhyZWFkTG9jYWwgaW5zdGFuY2UgaXMgZGVzdHJveWVk
LgorICBzdGF0aWMgdm9pZCBPblRocmVhZExvY2FsRGVzdHJveWVkKAorICAgICAgY29uc3QgVGhy
ZWFkTG9jYWxCYXNlKiB0aHJlYWRfbG9jYWxfaW5zdGFuY2UpOworfTsKKworY2xhc3MgR1RFU1Rf
QVBJXyBUaHJlYWRXaXRoUGFyYW1CYXNlIHsKKyBwdWJsaWM6CisgIHZvaWQgSm9pbigpOworCisg
cHJvdGVjdGVkOgorICBjbGFzcyBSdW5uYWJsZSB7CisgICBwdWJsaWM6CisgICAgdmlydHVhbCB+
UnVubmFibGUoKSB7fQorICAgIHZpcnR1YWwgdm9pZCBSdW4oKSA9IDA7CisgIH07CisKKyAgVGhy
ZWFkV2l0aFBhcmFtQmFzZShSdW5uYWJsZSAqcnVubmFibGUsIE5vdGlmaWNhdGlvbiogdGhyZWFk
X2Nhbl9zdGFydCk7CisgIHZpcnR1YWwgflRocmVhZFdpdGhQYXJhbUJhc2UoKTsKKworIHByaXZh
dGU6CisgIEF1dG9IYW5kbGUgdGhyZWFkXzsKK307CisKKy8vIEhlbHBlciBjbGFzcyBmb3IgdGVz
dGluZyBHb29nbGUgVGVzdCdzIG11bHRpLXRocmVhZGluZyBjb25zdHJ1Y3RzLgordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CitjbGFzcyBUaHJlYWRXaXRoUGFyYW0gOiBwdWJsaWMgVGhyZWFkV2l0aFBh
cmFtQmFzZSB7CisgcHVibGljOgorICB0eXBlZGVmIHZvaWQgVXNlclRocmVhZEZ1bmMoVCk7CisK
KyAgVGhyZWFkV2l0aFBhcmFtKFVzZXJUaHJlYWRGdW5jKiBmdW5jLCBUIHBhcmFtLCBOb3RpZmlj
YXRpb24qIHRocmVhZF9jYW5fc3RhcnQpCisgICAgICA6IFRocmVhZFdpdGhQYXJhbUJhc2UobmV3
IFJ1bm5hYmxlSW1wbChmdW5jLCBwYXJhbSksIHRocmVhZF9jYW5fc3RhcnQpIHsKKyAgfQorICB2
aXJ0dWFsIH5UaHJlYWRXaXRoUGFyYW0oKSB7fQorCisgcHJpdmF0ZToKKyAgY2xhc3MgUnVubmFi
bGVJbXBsIDogcHVibGljIFJ1bm5hYmxlIHsKKyAgIHB1YmxpYzoKKyAgICBSdW5uYWJsZUltcGwo
VXNlclRocmVhZEZ1bmMqIGZ1bmMsIFQgcGFyYW0pCisgICAgICAgIDogZnVuY18oZnVuYyksCisg
ICAgICAgICAgcGFyYW1fKHBhcmFtKSB7CisgICAgfQorICAgIHZpcnR1YWwgflJ1bm5hYmxlSW1w
bCgpIHt9CisgICAgdmlydHVhbCB2b2lkIFJ1bigpIHsKKyAgICAgIGZ1bmNfKHBhcmFtXyk7Cisg
ICAgfQorCisgICBwcml2YXRlOgorICAgIFVzZXJUaHJlYWRGdW5jKiBjb25zdCBmdW5jXzsKKyAg
ICBjb25zdCBUIHBhcmFtXzsKKworICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8o
UnVubmFibGVJbXBsKTsKKyAgfTsKKworICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05f
KFRocmVhZFdpdGhQYXJhbSk7Cit9OworCisvLyBJbXBsZW1lbnRzIHRocmVhZC1sb2NhbCBzdG9y
YWdlIG9uIFdpbmRvd3Mgc3lzdGVtcy4KKy8vCisvLyAgIC8vIFRocmVhZCAxCisvLyAgIFRocmVh
ZExvY2FsPGludD4gdGwoMTAwKTsgIC8vIDEwMCBpcyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgZWFj
aCB0aHJlYWQuCisvLworLy8gICAvLyBUaHJlYWQgMgorLy8gICB0bC5zZXQoMTUwKTsgIC8vIENo
YW5nZXMgdGhlIHZhbHVlIGZvciB0aHJlYWQgMiBvbmx5LgorLy8gICBFWFBFQ1RfRVEoMTUwLCB0
bC5nZXQoKSk7CisvLworLy8gICAvLyBUaHJlYWQgMQorLy8gICBFWFBFQ1RfRVEoMTAwLCB0bC5n
ZXQoKSk7ICAvLyBJbiB0aHJlYWQgMSwgdGwgaGFzIHRoZSBvcmlnaW5hbCB2YWx1ZS4KKy8vICAg
dGwuc2V0KDIwMCk7CisvLyAgIEVYUEVDVF9FUSgyMDAsIHRsLmdldCgpKTsKKy8vCisvLyBUaGUg
dGVtcGxhdGUgdHlwZSBhcmd1bWVudCBUIG11c3QgaGF2ZSBhIHB1YmxpYyBjb3B5IGNvbnN0cnVj
dG9yLgorLy8gSW4gYWRkaXRpb24sIHRoZSBkZWZhdWx0IFRocmVhZExvY2FsIGNvbnN0cnVjdG9y
IHJlcXVpcmVzIFQgdG8gaGF2ZQorLy8gYSBwdWJsaWMgZGVmYXVsdCBjb25zdHJ1Y3Rvci4KKy8v
CisvLyBUaGUgdXNlcnMgb2YgYSBUaGVhZExvY2FsIGluc3RhbmNlIGhhdmUgdG8gbWFrZSBzdXJl
IHRoYXQgYWxsIGJ1dCBvbmUKKy8vIHRocmVhZHMgKGluY2x1ZGluZyB0aGUgbWFpbiBvbmUpIHVz
aW5nIHRoYXQgaW5zdGFuY2UgaGF2ZSBleGl0ZWQgYmVmb3JlCisvLyBkZXN0cm95aW5nIGl0LiBP
dGhlcndpc2UsIHRoZSBwZXItdGhyZWFkIG9iamVjdHMgbWFuYWdlZCBmb3IgdGhlbSBieSB0aGUK
Ky8vIFRocmVhZExvY2FsIGluc3RhbmNlIGFyZSBub3QgZ3VhcmFudGVlZCB0byBiZSBkZXN0cm95
ZWQgb24gYWxsIHBsYXRmb3Jtcy4KKy8vCisvLyBHb29nbGUgVGVzdCBvbmx5IHVzZXMgZ2xvYmFs
IFRocmVhZExvY2FsIG9iamVjdHMuICBUaGF0IG1lYW5zIHRoZXkKKy8vIHdpbGwgZGllIGFmdGVy
IG1haW4oKSBoYXMgcmV0dXJuZWQuICBUaGVyZWZvcmUsIG5vIHBlci10aHJlYWQKKy8vIG9iamVj
dCBtYW5hZ2VkIGJ5IEdvb2dsZSBUZXN0IHdpbGwgYmUgbGVha2VkIGFzIGxvbmcgYXMgYWxsIHRo
cmVhZHMKKy8vIHVzaW5nIEdvb2dsZSBUZXN0IGhhdmUgZXhpdGVkIHdoZW4gbWFpbigpIHJldHVy
bnMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFRocmVhZExvY2FsIDogcHVibGljIFRo
cmVhZExvY2FsQmFzZSB7CisgcHVibGljOgorICBUaHJlYWRMb2NhbCgpIDogZGVmYXVsdF9mYWN0
b3J5XyhuZXcgRGVmYXVsdFZhbHVlSG9sZGVyRmFjdG9yeSgpKSB7fQorICBleHBsaWNpdCBUaHJl
YWRMb2NhbChjb25zdCBUJiB2YWx1ZSkKKyAgICAgIDogZGVmYXVsdF9mYWN0b3J5XyhuZXcgSW5z
dGFuY2VWYWx1ZUhvbGRlckZhY3RvcnkodmFsdWUpKSB7fQorCisgIH5UaHJlYWRMb2NhbCgpIHsg
VGhyZWFkTG9jYWxSZWdpc3RyeTo6T25UaHJlYWRMb2NhbERlc3Ryb3llZCh0aGlzKTsgfQorCisg
IFQqIHBvaW50ZXIoKSB7IHJldHVybiBHZXRPckNyZWF0ZVZhbHVlKCk7IH0KKyAgY29uc3QgVCog
cG9pbnRlcigpIGNvbnN0IHsgcmV0dXJuIEdldE9yQ3JlYXRlVmFsdWUoKTsgfQorICBjb25zdCBU
JiBnZXQoKSBjb25zdCB7IHJldHVybiAqcG9pbnRlcigpOyB9CisgIHZvaWQgc2V0KGNvbnN0IFQm
IHZhbHVlKSB7ICpwb2ludGVyKCkgPSB2YWx1ZTsgfQorCisgcHJpdmF0ZToKKyAgLy8gSG9sZHMg
YSB2YWx1ZSBvZiBULiAgQ2FuIGJlIGRlbGV0ZWQgdmlhIGl0cyBiYXNlIGNsYXNzIHdpdGhvdXQg
dGhlIGNhbGxlcgorICAvLyBrbm93aW5nIHRoZSB0eXBlIG9mIFQuCisgIGNsYXNzIFZhbHVlSG9s
ZGVyIDogcHVibGljIFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlIHsKKyAgIHB1YmxpYzoKKyAg
ICBWYWx1ZUhvbGRlcigpIDogdmFsdWVfKCkge30KKyAgICBleHBsaWNpdCBWYWx1ZUhvbGRlcihj
b25zdCBUJiB2YWx1ZSkgOiB2YWx1ZV8odmFsdWUpIHt9CisKKyAgICBUKiBwb2ludGVyKCkgeyBy
ZXR1cm4gJnZhbHVlXzsgfQorCisgICBwcml2YXRlOgorICAgIFQgdmFsdWVfOworICAgIEdURVNU
X0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVmFsdWVIb2xkZXIpOworICB9OworCisKKyAgVCog
R2V0T3JDcmVhdGVWYWx1ZSgpIGNvbnN0IHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VmFsdWVI
b2xkZXIqPigKKyAgICAgICAgVGhyZWFkTG9jYWxSZWdpc3RyeTo6R2V0VmFsdWVPbkN1cnJlbnRU
aHJlYWQodGhpcykpLT5wb2ludGVyKCk7CisgIH0KKworICB2aXJ0dWFsIFRocmVhZExvY2FsVmFs
dWVIb2xkZXJCYXNlKiBOZXdWYWx1ZUZvckN1cnJlbnRUaHJlYWQoKSBjb25zdCB7CisgICAgcmV0
dXJuIGRlZmF1bHRfZmFjdG9yeV8tPk1ha2VOZXdIb2xkZXIoKTsKKyAgfQorCisgIGNsYXNzIFZh
bHVlSG9sZGVyRmFjdG9yeSB7CisgICBwdWJsaWM6CisgICAgVmFsdWVIb2xkZXJGYWN0b3J5KCkg
e30KKyAgICB2aXJ0dWFsIH5WYWx1ZUhvbGRlckZhY3RvcnkoKSB7fQorICAgIHZpcnR1YWwgVmFs
dWVIb2xkZXIqIE1ha2VOZXdIb2xkZXIoKSBjb25zdCA9IDA7CisKKyAgIHByaXZhdGU6CisgICAg
R1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhWYWx1ZUhvbGRlckZhY3RvcnkpOworICB9
OworCisgIGNsYXNzIERlZmF1bHRWYWx1ZUhvbGRlckZhY3RvcnkgOiBwdWJsaWMgVmFsdWVIb2xk
ZXJGYWN0b3J5IHsKKyAgIHB1YmxpYzoKKyAgICBEZWZhdWx0VmFsdWVIb2xkZXJGYWN0b3J5KCkg
e30KKyAgICB2aXJ0dWFsIFZhbHVlSG9sZGVyKiBNYWtlTmV3SG9sZGVyKCkgY29uc3QgeyByZXR1
cm4gbmV3IFZhbHVlSG9sZGVyKCk7IH0KKworICAgcHJpdmF0ZToKKyAgICBHVEVTVF9ESVNBTExP
V19DT1BZX0FORF9BU1NJR05fKERlZmF1bHRWYWx1ZUhvbGRlckZhY3RvcnkpOworICB9OworCisg
IGNsYXNzIEluc3RhbmNlVmFsdWVIb2xkZXJGYWN0b3J5IDogcHVibGljIFZhbHVlSG9sZGVyRmFj
dG9yeSB7CisgICBwdWJsaWM6CisgICAgZXhwbGljaXQgSW5zdGFuY2VWYWx1ZUhvbGRlckZhY3Rv
cnkoY29uc3QgVCYgdmFsdWUpIDogdmFsdWVfKHZhbHVlKSB7fQorICAgIHZpcnR1YWwgVmFsdWVI
b2xkZXIqIE1ha2VOZXdIb2xkZXIoKSBjb25zdCB7CisgICAgICByZXR1cm4gbmV3IFZhbHVlSG9s
ZGVyKHZhbHVlXyk7CisgICAgfQorCisgICBwcml2YXRlOgorICAgIGNvbnN0IFQgdmFsdWVfOyAg
Ly8gVGhlIHZhbHVlIGZvciBlYWNoIHRocmVhZC4KKworICAgIEdURVNUX0RJU0FMTE9XX0NPUFlf
QU5EX0FTU0lHTl8oSW5zdGFuY2VWYWx1ZUhvbGRlckZhY3RvcnkpOworICB9OworCisgIHNjb3Bl
ZF9wdHI8VmFsdWVIb2xkZXJGYWN0b3J5PiBkZWZhdWx0X2ZhY3RvcnlfOworCisgIEdURVNUX0RJ
U0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGhyZWFkTG9jYWwpOworfTsKKworIyBlbGlmIEdURVNU
X0hBU19QVEhSRUFECisKKy8vIE11dGV4QmFzZSBhbmQgTXV0ZXggaW1wbGVtZW50IG11dGV4IG9u
IHB0aHJlYWRzLWJhc2VkIHBsYXRmb3Jtcy4KK2NsYXNzIE11dGV4QmFzZSB7CisgcHVibGljOgor
ICAvLyBBY3F1aXJlcyB0aGlzIG11dGV4LgorICB2b2lkIExvY2soKSB7CisgICAgR1RFU1RfQ0hF
Q0tfUE9TSVhfU1VDQ0VTU18ocHRocmVhZF9tdXRleF9sb2NrKCZtdXRleF8pKTsKKyAgICBvd25l
cl8gPSBwdGhyZWFkX3NlbGYoKTsKKyAgICBoYXNfb3duZXJfID0gdHJ1ZTsKKyAgfQorCisgIC8v
IFJlbGVhc2VzIHRoaXMgbXV0ZXguCisgIHZvaWQgVW5sb2NrKCkgeworICAgIC8vIFNpbmNlIHRo
ZSBsb2NrIGlzIGJlaW5nIHJlbGVhc2VkIHRoZSBvd25lcl8gZmllbGQgc2hvdWxkIG5vIGxvbmdl
ciBiZQorICAgIC8vIGNvbnNpZGVyZWQgdmFsaWQuIFdlIGRvbid0IHByb3RlY3Qgd3JpdGluZyB0
byBoYXNfb3duZXJfIGhlcmUsIGFzIGl0J3MKKyAgICAvLyB0aGUgY2FsbGVyJ3MgcmVzcG9uc2li
aWxpdHkgdG8gZW5zdXJlIHRoYXQgdGhlIGN1cnJlbnQgdGhyZWFkIGhvbGRzIHRoZQorICAgIC8v
IG11dGV4IHdoZW4gdGhpcyBpcyBjYWxsZWQuCisgICAgaGFzX293bmVyXyA9IGZhbHNlOworICAg
IEdURVNUX0NIRUNLX1BPU0lYX1NVQ0NFU1NfKHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZtdXRleF8p
KTsKKyAgfQorCisgIC8vIERvZXMgbm90aGluZyBpZiB0aGUgY3VycmVudCB0aHJlYWQgaG9sZHMg
dGhlIG11dGV4LiBPdGhlcndpc2UsIGNyYXNoZXMKKyAgLy8gd2l0aCBoaWdoIHByb2JhYmlsaXR5
LgorICB2b2lkIEFzc2VydEhlbGQoKSBjb25zdCB7CisgICAgR1RFU1RfQ0hFQ0tfKGhhc19vd25l
cl8gJiYgcHRocmVhZF9lcXVhbChvd25lcl8sIHB0aHJlYWRfc2VsZigpKSkKKyAgICAgICAgPDwg
IlRoZSBjdXJyZW50IHRocmVhZCBpcyBub3QgaG9sZGluZyB0aGUgbXV0ZXggQCIgPDwgdGhpczsK
KyAgfQorCisgIC8vIEEgc3RhdGljIG11dGV4IG1heSBiZSB1c2VkIGJlZm9yZSBtYWluKCkgaXMg
ZW50ZXJlZC4gIEl0IG1heSBldmVuCisgIC8vIGJlIHVzZWQgYmVmb3JlIHRoZSBkeW5hbWljIGlu
aXRpYWxpemF0aW9uIHN0YWdlLiAgVGhlcmVmb3JlIHdlCisgIC8vIG11c3QgYmUgYWJsZSB0byBp
bml0aWFsaXplIGEgc3RhdGljIG11dGV4IG9iamVjdCBhdCBsaW5rIHRpbWUuCisgIC8vIFRoaXMg
bWVhbnMgTXV0ZXhCYXNlIGhhcyB0byBiZSBhIFBPRCBhbmQgaXRzIG1lbWJlciB2YXJpYWJsZXMK
KyAgLy8gaGF2ZSB0byBiZSBwdWJsaWMuCisgcHVibGljOgorICBwdGhyZWFkX211dGV4X3QgbXV0
ZXhfOyAgLy8gVGhlIHVuZGVybHlpbmcgcHRocmVhZCBtdXRleC4KKyAgLy8gaGFzX293bmVyXyBp
bmRpY2F0ZXMgd2hldGhlciB0aGUgb3duZXJfIGZpZWxkIGJlbG93IGNvbnRhaW5zIGEgdmFsaWQg
dGhyZWFkCisgIC8vIElEIGFuZCBpcyB0aGVyZWZvcmUgc2FmZSB0byBpbnNwZWN0IChlLmcuLCB0
byB1c2UgaW4gcHRocmVhZF9lcXVhbCgpKS4gQWxsCisgIC8vIGFjY2Vzc2VzIHRvIHRoZSBvd25l
cl8gZmllbGQgc2hvdWxkIGJlIHByb3RlY3RlZCBieSBhIGNoZWNrIG9mIHRoaXMgZmllbGQuCisg
IC8vIEFuIGFsdGVybmF0aXZlIG1pZ2h0IGJlIHRvIG1lbXNldCgpIG93bmVyXyB0byBhbGwgemVy
b3MsIGJ1dCB0aGVyZSdzIG5vCisgIC8vIGd1YXJhbnRlZSB0aGF0IGEgemVybydkIHB0aHJlYWRf
dCBpcyBuZWNlc3NhcmlseSBpbnZhbGlkIG9yIGV2ZW4gZGlmZmVyZW50CisgIC8vIGZyb20gcHRo
cmVhZF9zZWxmKCkuCisgIGJvb2wgaGFzX293bmVyXzsKKyAgcHRocmVhZF90IG93bmVyXzsgIC8v
IFRoZSB0aHJlYWQgaG9sZGluZyB0aGUgbXV0ZXguCit9OworCisvLyBGb3J3YXJkLWRlY2xhcmVz
IGEgc3RhdGljIG11dGV4LgorIyAgZGVmaW5lIEdURVNUX0RFQ0xBUkVfU1RBVElDX01VVEVYXyht
dXRleCkgXAorICAgICBleHRlcm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXhCYXNlIG11dGV4
CisKKy8vIERlZmluZXMgYW5kIHN0YXRpY2FsbHkgKGkuZS4gYXQgbGluayB0aW1lKSBpbml0aWFs
aXplcyBhIHN0YXRpYyBtdXRleC4KKyMgIGRlZmluZSBHVEVTVF9ERUZJTkVfU1RBVElDX01VVEVY
XyhtdXRleCkgXAorICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpNdXRleEJhc2UgbXV0ZXggPSB7
IFBUSFJFQURfTVVURVhfSU5JVElBTElaRVIsIGZhbHNlLCBwdGhyZWFkX3QoKSB9CisKKy8vIFRo
ZSBNdXRleCBjbGFzcyBjYW4gb25seSBiZSB1c2VkIGZvciBtdXRleGVzIGNyZWF0ZWQgYXQgcnVu
dGltZS4gSXQKKy8vIHNoYXJlcyBpdHMgQVBJIHdpdGggTXV0ZXhCYXNlIG90aGVyd2lzZS4KK2Ns
YXNzIE11dGV4IDogcHVibGljIE11dGV4QmFzZSB7CisgcHVibGljOgorICBNdXRleCgpIHsKKyAg
ICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNTXyhwdGhyZWFkX211dGV4X2luaXQoJm11dGV4Xywg
TlVMTCkpOworICAgIGhhc19vd25lcl8gPSBmYWxzZTsKKyAgfQorICB+TXV0ZXgoKSB7CisgICAg
R1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18ocHRocmVhZF9tdXRleF9kZXN0cm95KCZtdXRleF8p
KTsKKyAgfQorCisgcHJpdmF0ZToKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhN
dXRleCk7Cit9OworCisvLyBXZSBjYW5ub3QgbmFtZSB0aGlzIGNsYXNzIE11dGV4TG9jayBiZWNh
dXNlIHRoZSBjdG9yIGRlY2xhcmF0aW9uIHdvdWxkCisvLyBjb25mbGljdCB3aXRoIGEgbWFjcm8g
bmFtZWQgTXV0ZXhMb2NrLCB3aGljaCBpcyBkZWZpbmVkIG9uIHNvbWUKKy8vIHBsYXRmb3Jtcy4g
VGhhdCBtYWNybyBpcyB1c2VkIGFzIGEgZGVmZW5zaXZlIG1lYXN1cmUgdG8gcHJldmVudCBhZ2Fp
bnN0CisvLyBpbmFkdmVydGVudCBtaXN1c2VzIG9mIE11dGV4TG9jayBsaWtlICJNdXRleExvY2so
Jm11KSIgcmF0aGVyIHRoYW4KKy8vICJNdXRleExvY2sgbCgmbXUpIi4gIEhlbmNlIHRoZSB0eXBl
ZGVmIHRyaWNrIGJlbG93LgorY2xhc3MgR1Rlc3RNdXRleExvY2sgeworIHB1YmxpYzoKKyAgZXhw
bGljaXQgR1Rlc3RNdXRleExvY2soTXV0ZXhCYXNlKiBtdXRleCkKKyAgICAgIDogbXV0ZXhfKG11
dGV4KSB7IG11dGV4Xy0+TG9jaygpOyB9CisKKyAgfkdUZXN0TXV0ZXhMb2NrKCkgeyBtdXRleF8t
PlVubG9jaygpOyB9CisKKyBwcml2YXRlOgorICBNdXRleEJhc2UqIGNvbnN0IG11dGV4XzsKKwor
ICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKEdUZXN0TXV0ZXhMb2NrKTsKK307CisK
K3R5cGVkZWYgR1Rlc3RNdXRleExvY2sgTXV0ZXhMb2NrOworCisvLyBIZWxwZXJzIGZvciBUaHJl
YWRMb2NhbC4KKworLy8gcHRocmVhZF9rZXlfY3JlYXRlKCkgcmVxdWlyZXMgRGVsZXRlVGhyZWFk
TG9jYWxWYWx1ZSgpIHRvIGhhdmUKKy8vIEMtbGlua2FnZS4gIFRoZXJlZm9yZSBpdCBjYW5ub3Qg
YmUgdGVtcGxhdGl6ZWQgdG8gYWNjZXNzCisvLyBUaHJlYWRMb2NhbDxUPi4gIEhlbmNlIHRoZSBu
ZWVkIGZvciBjbGFzcworLy8gVGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2UuCitjbGFzcyBUaHJl
YWRMb2NhbFZhbHVlSG9sZGVyQmFzZSB7CisgcHVibGljOgorICB2aXJ0dWFsIH5UaHJlYWRMb2Nh
bFZhbHVlSG9sZGVyQmFzZSgpIHt9Cit9OworCisvLyBDYWxsZWQgYnkgcHRocmVhZCB0byBkZWxl
dGUgdGhyZWFkLWxvY2FsIGRhdGEgc3RvcmVkIGJ5CisvLyBwdGhyZWFkX3NldHNwZWNpZmljKCku
CitleHRlcm4gIkMiIGlubGluZSB2b2lkIERlbGV0ZVRocmVhZExvY2FsVmFsdWUodm9pZCogdmFs
dWVfaG9sZGVyKSB7CisgIGRlbGV0ZSBzdGF0aWNfY2FzdDxUaHJlYWRMb2NhbFZhbHVlSG9sZGVy
QmFzZSo+KHZhbHVlX2hvbGRlcik7Cit9CisKKy8vIEltcGxlbWVudHMgdGhyZWFkLWxvY2FsIHN0
b3JhZ2Ugb24gcHRocmVhZHMtYmFzZWQgc3lzdGVtcy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
Y2xhc3MgVGhyZWFkTG9jYWwgeworIHB1YmxpYzoKKyAgVGhyZWFkTG9jYWwoKQorICAgICAgOiBr
ZXlfKENyZWF0ZUtleSgpKSwgZGVmYXVsdF9mYWN0b3J5XyhuZXcgRGVmYXVsdFZhbHVlSG9sZGVy
RmFjdG9yeSgpKSB7fQorICBleHBsaWNpdCBUaHJlYWRMb2NhbChjb25zdCBUJiB2YWx1ZSkKKyAg
ICAgIDoga2V5XyhDcmVhdGVLZXkoKSksCisgICAgICAgIGRlZmF1bHRfZmFjdG9yeV8obmV3IElu
c3RhbmNlVmFsdWVIb2xkZXJGYWN0b3J5KHZhbHVlKSkge30KKworICB+VGhyZWFkTG9jYWwoKSB7
CisgICAgLy8gRGVzdHJveXMgdGhlIG1hbmFnZWQgb2JqZWN0IGZvciB0aGUgY3VycmVudCB0aHJl
YWQsIGlmIGFueS4KKyAgICBEZWxldGVUaHJlYWRMb2NhbFZhbHVlKHB0aHJlYWRfZ2V0c3BlY2lm
aWMoa2V5XykpOworCisgICAgLy8gUmVsZWFzZXMgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCB0
aGUga2V5LiAgVGhpcyB3aWxsICpub3QqCisgICAgLy8gZGVsZXRlIG1hbmFnZWQgb2JqZWN0cyBm
b3Igb3RoZXIgdGhyZWFkcy4KKyAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNTXyhwdGhyZWFk
X2tleV9kZWxldGUoa2V5XykpOworICB9CisKKyAgVCogcG9pbnRlcigpIHsgcmV0dXJuIEdldE9y
Q3JlYXRlVmFsdWUoKTsgfQorICBjb25zdCBUKiBwb2ludGVyKCkgY29uc3QgeyByZXR1cm4gR2V0
T3JDcmVhdGVWYWx1ZSgpOyB9CisgIGNvbnN0IFQmIGdldCgpIGNvbnN0IHsgcmV0dXJuICpwb2lu
dGVyKCk7IH0KKyAgdm9pZCBzZXQoY29uc3QgVCYgdmFsdWUpIHsgKnBvaW50ZXIoKSA9IHZhbHVl
OyB9CisKKyBwcml2YXRlOgorICAvLyBIb2xkcyBhIHZhbHVlIG9mIHR5cGUgVC4KKyAgY2xhc3Mg
VmFsdWVIb2xkZXIgOiBwdWJsaWMgVGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2UgeworICAgcHVi
bGljOgorICAgIFZhbHVlSG9sZGVyKCkgOiB2YWx1ZV8oKSB7fQorICAgIGV4cGxpY2l0IFZhbHVl
SG9sZGVyKGNvbnN0IFQmIHZhbHVlKSA6IHZhbHVlXyh2YWx1ZSkge30KKworICAgIFQqIHBvaW50
ZXIoKSB7IHJldHVybiAmdmFsdWVfOyB9CisKKyAgIHByaXZhdGU6CisgICAgVCB2YWx1ZV87Cisg
ICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhWYWx1ZUhvbGRlcik7CisgIH07CisK
KyAgc3RhdGljIHB0aHJlYWRfa2V5X3QgQ3JlYXRlS2V5KCkgeworICAgIHB0aHJlYWRfa2V5X3Qg
a2V5OworICAgIC8vIFdoZW4gYSB0aHJlYWQgZXhpdHMsIERlbGV0ZVRocmVhZExvY2FsVmFsdWUo
KSB3aWxsIGJlIGNhbGxlZCBvbgorICAgIC8vIHRoZSBvYmplY3QgbWFuYWdlZCBmb3IgdGhhdCB0
aHJlYWQuCisgICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18oCisgICAgICAgIHB0aHJlYWRf
a2V5X2NyZWF0ZSgma2V5LCAmRGVsZXRlVGhyZWFkTG9jYWxWYWx1ZSkpOworICAgIHJldHVybiBr
ZXk7CisgIH0KKworICBUKiBHZXRPckNyZWF0ZVZhbHVlKCkgY29uc3QgeworICAgIFRocmVhZExv
Y2FsVmFsdWVIb2xkZXJCYXNlKiBjb25zdCBob2xkZXIgPQorICAgICAgICBzdGF0aWNfY2FzdDxU
aHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZSo+KHB0aHJlYWRfZ2V0c3BlY2lmaWMoa2V5XykpOwor
ICAgIGlmIChob2xkZXIgIT0gTlVMTCkgeworICAgICAgcmV0dXJuIENoZWNrZWREb3duY2FzdFRv
QWN0dWFsVHlwZTxWYWx1ZUhvbGRlcj4oaG9sZGVyKS0+cG9pbnRlcigpOworICAgIH0KKworICAg
IFZhbHVlSG9sZGVyKiBjb25zdCBuZXdfaG9sZGVyID0gZGVmYXVsdF9mYWN0b3J5Xy0+TWFrZU5l
d0hvbGRlcigpOworICAgIFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlKiBjb25zdCBob2xkZXJf
YmFzZSA9IG5ld19ob2xkZXI7CisgICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18ocHRocmVh
ZF9zZXRzcGVjaWZpYyhrZXlfLCBob2xkZXJfYmFzZSkpOworICAgIHJldHVybiBuZXdfaG9sZGVy
LT5wb2ludGVyKCk7CisgIH0KKworICBjbGFzcyBWYWx1ZUhvbGRlckZhY3RvcnkgeworICAgcHVi
bGljOgorICAgIFZhbHVlSG9sZGVyRmFjdG9yeSgpIHt9CisgICAgdmlydHVhbCB+VmFsdWVIb2xk
ZXJGYWN0b3J5KCkge30KKyAgICB2aXJ0dWFsIFZhbHVlSG9sZGVyKiBNYWtlTmV3SG9sZGVyKCkg
Y29uc3QgPSAwOworCisgICBwcml2YXRlOgorICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FT
U0lHTl8oVmFsdWVIb2xkZXJGYWN0b3J5KTsKKyAgfTsKKworICBjbGFzcyBEZWZhdWx0VmFsdWVI
b2xkZXJGYWN0b3J5IDogcHVibGljIFZhbHVlSG9sZGVyRmFjdG9yeSB7CisgICBwdWJsaWM6Cisg
ICAgRGVmYXVsdFZhbHVlSG9sZGVyRmFjdG9yeSgpIHt9CisgICAgdmlydHVhbCBWYWx1ZUhvbGRl
ciogTWFrZU5ld0hvbGRlcigpIGNvbnN0IHsgcmV0dXJuIG5ldyBWYWx1ZUhvbGRlcigpOyB9CisK
KyAgIHByaXZhdGU6CisgICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhEZWZhdWx0
VmFsdWVIb2xkZXJGYWN0b3J5KTsKKyAgfTsKKworICBjbGFzcyBJbnN0YW5jZVZhbHVlSG9sZGVy
RmFjdG9yeSA6IHB1YmxpYyBWYWx1ZUhvbGRlckZhY3RvcnkgeworICAgcHVibGljOgorICAgIGV4
cGxpY2l0IEluc3RhbmNlVmFsdWVIb2xkZXJGYWN0b3J5KGNvbnN0IFQmIHZhbHVlKSA6IHZhbHVl
Xyh2YWx1ZSkge30KKyAgICB2aXJ0dWFsIFZhbHVlSG9sZGVyKiBNYWtlTmV3SG9sZGVyKCkgY29u
c3QgeworICAgICAgcmV0dXJuIG5ldyBWYWx1ZUhvbGRlcih2YWx1ZV8pOworICAgIH0KKworICAg
cHJpdmF0ZToKKyAgICBjb25zdCBUIHZhbHVlXzsgIC8vIFRoZSB2YWx1ZSBmb3IgZWFjaCB0aHJl
YWQuCisKKyAgICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKEluc3RhbmNlVmFsdWVI
b2xkZXJGYWN0b3J5KTsKKyAgfTsKKworICAvLyBBIGtleSBwdGhyZWFkcyB1c2VzIGZvciBsb29r
aW5nIHVwIHBlci10aHJlYWQgdmFsdWVzLgorICBjb25zdCBwdGhyZWFkX2tleV90IGtleV87Cisg
IHNjb3BlZF9wdHI8VmFsdWVIb2xkZXJGYWN0b3J5PiBkZWZhdWx0X2ZhY3RvcnlfOworCisgIEdU
RVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGhyZWFkTG9jYWwpOworfTsKKworIyBlbmRp
ZiAgLy8gR1RFU1RfSEFTX01VVEVYX0FORF9USFJFQURfTE9DQUxfCisKKyNlbHNlICAvLyBHVEVT
VF9JU19USFJFQURTQUZFCisKKy8vIEEgZHVtbXkgaW1wbGVtZW50YXRpb24gb2Ygc3luY2hyb25p
emF0aW9uIHByaW1pdGl2ZXMgKG11dGV4LCBsb2NrLAorLy8gYW5kIHRocmVhZC1sb2NhbCB2YXJp
YWJsZSkuICBOZWNlc3NhcnkgZm9yIGNvbXBpbGluZyBHb29nbGUgVGVzdCB3aGVyZQorLy8gbXV0
ZXggaXMgbm90IHN1cHBvcnRlZCAtIHVzaW5nIEdvb2dsZSBUZXN0IGluIG11bHRpcGxlIHRocmVh
ZHMgaXMgbm90CisvLyBzdXBwb3J0ZWQgb24gc3VjaCBwbGF0Zm9ybXMuCisKK2NsYXNzIE11dGV4
IHsKKyBwdWJsaWM6CisgIE11dGV4KCkge30KKyAgdm9pZCBMb2NrKCkge30KKyAgdm9pZCBVbmxv
Y2soKSB7fQorICB2b2lkIEFzc2VydEhlbGQoKSBjb25zdCB7fQorfTsKKworIyBkZWZpbmUgR1RF
U1RfREVDTEFSRV9TVEFUSUNfTVVURVhfKG11dGV4KSBcCisgIGV4dGVybiA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpNdXRleCBtdXRleAorCisjIGRlZmluZSBHVEVTVF9ERUZJTkVfU1RBVElDX01VVEVY
XyhtdXRleCkgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXggbXV0ZXgKKworLy8gV2UgY2Fubm90
IG5hbWUgdGhpcyBjbGFzcyBNdXRleExvY2sgYmVjYXVzZSB0aGUgY3RvciBkZWNsYXJhdGlvbiB3
b3VsZAorLy8gY29uZmxpY3Qgd2l0aCBhIG1hY3JvIG5hbWVkIE11dGV4TG9jaywgd2hpY2ggaXMg
ZGVmaW5lZCBvbiBzb21lCisvLyBwbGF0Zm9ybXMuIFRoYXQgbWFjcm8gaXMgdXNlZCBhcyBhIGRl
ZmVuc2l2ZSBtZWFzdXJlIHRvIHByZXZlbnQgYWdhaW5zdAorLy8gaW5hZHZlcnRlbnQgbWlzdXNl
cyBvZiBNdXRleExvY2sgbGlrZSAiTXV0ZXhMb2NrKCZtdSkiIHJhdGhlciB0aGFuCisvLyAiTXV0
ZXhMb2NrIGwoJm11KSIuICBIZW5jZSB0aGUgdHlwZWRlZiB0cmljayBiZWxvdy4KK2NsYXNzIEdU
ZXN0TXV0ZXhMb2NrIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IEdUZXN0TXV0ZXhMb2NrKE11dGV4
Kikge30gIC8vIE5PTElOVAorfTsKKwordHlwZWRlZiBHVGVzdE11dGV4TG9jayBNdXRleExvY2s7
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVGhyZWFkTG9jYWwgeworIHB1YmxpYzoK
KyAgVGhyZWFkTG9jYWwoKSA6IHZhbHVlXygpIHt9CisgIGV4cGxpY2l0IFRocmVhZExvY2FsKGNv
bnN0IFQmIHZhbHVlKSA6IHZhbHVlXyh2YWx1ZSkge30KKyAgVCogcG9pbnRlcigpIHsgcmV0dXJu
ICZ2YWx1ZV87IH0KKyAgY29uc3QgVCogcG9pbnRlcigpIGNvbnN0IHsgcmV0dXJuICZ2YWx1ZV87
IH0KKyAgY29uc3QgVCYgZ2V0KCkgY29uc3QgeyByZXR1cm4gdmFsdWVfOyB9CisgIHZvaWQgc2V0
KGNvbnN0IFQmIHZhbHVlKSB7IHZhbHVlXyA9IHZhbHVlOyB9CisgcHJpdmF0ZToKKyAgVCB2YWx1
ZV87Cit9OworCisjZW5kaWYgIC8vIEdURVNUX0lTX1RIUkVBRFNBRkUKKworLy8gUmV0dXJucyB0
aGUgbnVtYmVyIG9mIHRocmVhZHMgcnVubmluZyBpbiB0aGUgcHJvY2Vzcywgb3IgMCB0byBpbmRp
Y2F0ZSB0aGF0CisvLyB3ZSBjYW5ub3QgZGV0ZWN0IGl0LgorR1RFU1RfQVBJXyBzaXplX3QgR2V0
VGhyZWFkQ291bnQoKTsKKworLy8gUGFzc2luZyBub24tUE9EIGNsYXNzZXMgdGhyb3VnaCBlbGxp
cHNpcyAoLi4uKSBjcmFzaGVzIHRoZSBBUk0KKy8vIGNvbXBpbGVyIGFuZCBnZW5lcmF0ZXMgYSB3
YXJuaW5nIGluIFN1biBTdHVkaW8uICBUaGUgTm9raWEgU3ltYmlhbgorLy8gYW5kIHRoZSBJQk0g
WEwgQy9DKysgY29tcGlsZXIgdHJ5IHRvIGluc3RhbnRpYXRlIGEgY29weSBjb25zdHJ1Y3Rvcgor
Ly8gZm9yIG9iamVjdHMgcGFzc2VkIHRocm91Z2ggZWxsaXBzaXMgKC4uLiksIGZhaWxpbmcgZm9y
IHVuY29weWFibGUKKy8vIG9iamVjdHMuICBXZSBkZWZpbmUgdGhpcyB0byBlbnN1cmUgdGhhdCBv
bmx5IFBPRCBpcyBwYXNzZWQgdGhyb3VnaAorLy8gZWxsaXBzaXMgb24gdGhlc2Ugc3lzdGVtcy4K
KyNpZiBkZWZpbmVkKF9fU1lNQklBTjMyX18pIHx8IGRlZmluZWQoX19JQk1DUFBfXykgfHwgZGVm
aW5lZChfX1NVTlBST19DQykKKy8vIFdlIGxvc2Ugc3VwcG9ydCBmb3IgTlVMTCBkZXRlY3Rpb24g
d2hlcmUgdGhlIGNvbXBpbGVyIGRvZXNuJ3QgbGlrZQorLy8gcGFzc2luZyBub24tUE9EIGNsYXNz
ZXMgdGhyb3VnaCBlbGxpcHNpcyAoLi4uKS4KKyMgZGVmaW5lIEdURVNUX0VMTElQU0lTX05FRURT
X1BPRF8gMQorI2Vsc2UKKyMgZGVmaW5lIEdURVNUX0NBTl9DT01QQVJFX05VTEwgMQorI2VuZGlm
CisKKy8vIFRoZSBOb2tpYSBTeW1iaWFuIGFuZCBJQk0gWEwgQy9DKysgY29tcGlsZXJzIGNhbm5v
dCBkZWNpZGUgYmV0d2VlbgorLy8gY29uc3QgVCYgYW5kIGNvbnN0IFQqIGluIGEgZnVuY3Rpb24g
dGVtcGxhdGUuICBUaGVzZSBjb21waWxlcnMKKy8vIF9jYW5fIGRlY2lkZSBiZXR3ZWVuIGNsYXNz
IHRlbXBsYXRlIHNwZWNpYWxpemF0aW9ucyBmb3IgVCBhbmQgVCosCisvLyBzbyBhIHRyMTo6dHlw
ZV90cmFpdHMtbGlrZSBpc19wb2ludGVyIHdvcmtzLgorI2lmIGRlZmluZWQoX19TWU1CSUFOMzJf
XykgfHwgZGVmaW5lZChfX0lCTUNQUF9fKQorIyBkZWZpbmUgR1RFU1RfTkVFRFNfSVNfUE9JTlRF
Ul8gMQorI2VuZGlmCisKK3RlbXBsYXRlIDxib29sIGJvb2xfdmFsdWU+CitzdHJ1Y3QgYm9vbF9j
b25zdGFudCB7CisgIHR5cGVkZWYgYm9vbF9jb25zdGFudDxib29sX3ZhbHVlPiB0eXBlOworICBz
dGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IGJvb2xfdmFsdWU7Cit9OwordGVtcGxhdGUgPGJvb2wg
Ym9vbF92YWx1ZT4gY29uc3QgYm9vbCBib29sX2NvbnN0YW50PGJvb2xfdmFsdWU+Ojp2YWx1ZTsK
KwordHlwZWRlZiBib29sX2NvbnN0YW50PGZhbHNlPiBmYWxzZV90eXBlOwordHlwZWRlZiBib29s
X2NvbnN0YW50PHRydWU+IHRydWVfdHlwZTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1
Y3QgaXNfcG9pbnRlciA6IHB1YmxpYyBmYWxzZV90eXBlIHt9OworCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KK3N0cnVjdCBpc19wb2ludGVyPFQqPiA6IHB1YmxpYyB0cnVlX3R5cGUge307CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBJdGVyYXRvcj4KK3N0cnVjdCBJdGVyYXRvclRyYWl0cyB7CisgIHR5
cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3I6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKK307CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IEl0ZXJhdG9yVHJhaXRzPFQqPiB7CisgIHR5cGVk
ZWYgVCB2YWx1ZV90eXBlOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgSXRl
cmF0b3JUcmFpdHM8Y29uc3QgVCo+IHsKKyAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Cit9OworCisj
aWYgR1RFU1RfT1NfV0lORE9XUworIyBkZWZpbmUgR1RFU1RfUEFUSF9TRVBfICJcXCIKKyMgZGVm
aW5lIEdURVNUX0hBU19BTFRfUEFUSF9TRVBfIDEKKy8vIFRoZSBiaWdnZXN0IHNpZ25lZCBpbnRl
Z2VyIHR5cGUgdGhlIGNvbXBpbGVyIHN1cHBvcnRzLgordHlwZWRlZiBfX2ludDY0IEJpZ2dlc3RJ
bnQ7CisjZWxzZQorIyBkZWZpbmUgR1RFU1RfUEFUSF9TRVBfICIvIgorIyBkZWZpbmUgR1RFU1Rf
SEFTX0FMVF9QQVRIX1NFUF8gMAordHlwZWRlZiBsb25nIGxvbmcgQmlnZ2VzdEludDsgIC8vIE5P
TElOVAorI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisKKy8vIFV0aWxpdGllcyBmb3IgY2hh
ci4KKworLy8gaXNzcGFjZShpbnQgY2gpIGFuZCBmcmllbmRzIGFjY2VwdCBhbiB1bnNpZ25lZCBj
aGFyIG9yIEVPRi4gIGNoYXIKKy8vIG1heSBiZSBzaWduZWQsIGRlcGVuZGluZyBvbiB0aGUgY29t
cGlsZXIgKG9yIGNvbXBpbGVyIGZsYWdzKS4KKy8vIFRoZXJlZm9yZSB3ZSBuZWVkIHRvIGNhc3Qg
YSBjaGFyIHRvIHVuc2lnbmVkIGNoYXIgYmVmb3JlIGNhbGxpbmcKKy8vIGlzc3BhY2UoKSwgZXRj
LgorCitpbmxpbmUgYm9vbCBJc0FscGhhKGNoYXIgY2gpIHsKKyAgcmV0dXJuIGlzYWxwaGEoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpKSAhPSAwOworfQoraW5saW5lIGJvb2wgSXNBbE51
bShjaGFyIGNoKSB7CisgIHJldHVybiBpc2FsbnVtKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+
KGNoKSkgIT0gMDsKK30KK2lubGluZSBib29sIElzRGlnaXQoY2hhciBjaCkgeworICByZXR1cm4g
aXNkaWdpdChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjaCkpICE9IDA7Cit9CitpbmxpbmUg
Ym9vbCBJc0xvd2VyKGNoYXIgY2gpIHsKKyAgcmV0dXJuIGlzbG93ZXIoc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhcj4oY2gpKSAhPSAwOworfQoraW5saW5lIGJvb2wgSXNTcGFjZShjaGFyIGNoKSB7
CisgIHJldHVybiBpc3NwYWNlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoKSkgIT0gMDsK
K30KK2lubGluZSBib29sIElzVXBwZXIoY2hhciBjaCkgeworICByZXR1cm4gaXN1cHBlcihzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjaCkpICE9IDA7Cit9CitpbmxpbmUgYm9vbCBJc1hEaWdp
dChjaGFyIGNoKSB7CisgIHJldHVybiBpc3hkaWdpdChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFy
PihjaCkpICE9IDA7Cit9CitpbmxpbmUgYm9vbCBJc1hEaWdpdCh3Y2hhcl90IGNoKSB7CisgIGNv
bnN0IHVuc2lnbmVkIGNoYXIgbG93X2J5dGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihj
aCk7CisgIHJldHVybiBjaCA9PSBsb3dfYnl0ZSAmJiBpc3hkaWdpdChsb3dfYnl0ZSkgIT0gMDsK
K30KKworaW5saW5lIGNoYXIgVG9Mb3dlcihjaGFyIGNoKSB7CisgIHJldHVybiBzdGF0aWNfY2Fz
dDxjaGFyPih0b2xvd2VyKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoKSkpOworfQoraW5s
aW5lIGNoYXIgVG9VcHBlcihjaGFyIGNoKSB7CisgIHJldHVybiBzdGF0aWNfY2FzdDxjaGFyPih0
b3VwcGVyKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoKSkpOworfQorCitpbmxpbmUgc3Rk
OjpzdHJpbmcgU3RyaXBUcmFpbGluZ1NwYWNlcyhzdGQ6OnN0cmluZyBzdHIpIHsKKyAgc3RkOjpz
dHJpbmc6Oml0ZXJhdG9yIGl0ID0gc3RyLmVuZCgpOworICB3aGlsZSAoaXQgIT0gc3RyLmJlZ2lu
KCkgJiYgSXNTcGFjZSgqLS1pdCkpCisgICAgaXQgPSBzdHIuZXJhc2UoaXQpOworICByZXR1cm4g
c3RyOworfQorCisvLyBUaGUgdGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4IG5hbWVzcGFjZSBob2xk
cyB3cmFwcGVycyBmb3IgY29tbW9uCisvLyBQT1NJWCBmdW5jdGlvbnMuICBUaGVzZSB3cmFwcGVy
cyBoaWRlIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuCisvLyBXaW5kb3dzL01TVkMgYW5kIFBPU0lY
IHN5c3RlbXMuICBTaW5jZSBzb21lIGNvbXBpbGVycyBkZWZpbmUgdGhlc2UKKy8vIHN0YW5kYXJk
IGZ1bmN0aW9ucyBhcyBtYWNyb3MsIHRoZSB3cmFwcGVyIGNhbm5vdCBoYXZlIHRoZSBzYW1lIG5h
bWUKKy8vIGFzIHRoZSB3cmFwcGVkIGZ1bmN0aW9uLgorCituYW1lc3BhY2UgcG9zaXggeworCisv
LyBGdW5jdGlvbnMgd2l0aCBhIGRpZmZlcmVudCBuYW1lIG9uIFdpbmRvd3MuCisKKyNpZiBHVEVT
VF9PU19XSU5ET1dTCisKK3R5cGVkZWYgc3RydWN0IF9zdGF0IFN0YXRTdHJ1Y3Q7CisKKyMgaWZk
ZWYgX19CT1JMQU5EQ19fCitpbmxpbmUgaW50IElzQVRUWShpbnQgZmQpIHsgcmV0dXJuIGlzYXR0
eShmZCk7IH0KK2lubGluZSBpbnQgU3RyQ2FzZUNtcChjb25zdCBjaGFyKiBzMSwgY29uc3QgY2hh
ciogczIpIHsKKyAgcmV0dXJuIHN0cmljbXAoczEsIHMyKTsKK30KK2lubGluZSBjaGFyKiBTdHJE
dXAoY29uc3QgY2hhciogc3JjKSB7IHJldHVybiBzdHJkdXAoc3JjKTsgfQorIyBlbHNlICAvLyAh
X19CT1JMQU5EQ19fCisjICBpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQoraW5saW5lIGludCBJ
c0FUVFkoaW50IC8qIGZkICovKSB7IHJldHVybiAwOyB9CisjICBlbHNlCitpbmxpbmUgaW50IElz
QVRUWShpbnQgZmQpIHsgcmV0dXJuIF9pc2F0dHkoZmQpOyB9CisjICBlbmRpZiAgLy8gR1RFU1Rf
T1NfV0lORE9XU19NT0JJTEUKK2lubGluZSBpbnQgU3RyQ2FzZUNtcChjb25zdCBjaGFyKiBzMSwg
Y29uc3QgY2hhciogczIpIHsKKyAgcmV0dXJuIF9zdHJpY21wKHMxLCBzMik7Cit9CitpbmxpbmUg
Y2hhciogU3RyRHVwKGNvbnN0IGNoYXIqIHNyYykgeyByZXR1cm4gX3N0cmR1cChzcmMpOyB9Cisj
IGVuZGlmICAvLyBfX0JPUkxBTkRDX18KKworIyBpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQor
aW5saW5lIGludCBGaWxlTm8oRklMRSogZmlsZSkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxp
bnQ+KF9maWxlbm8oZmlsZSkpOyB9CisvLyBTdGF0KCksIFJtRGlyKCksIGFuZCBJc0RpcigpIGFy
ZSBub3QgbmVlZGVkIG9uIFdpbmRvd3MgQ0UgYXQgdGhpcworLy8gdGltZSBhbmQgdGh1cyBub3Qg
ZGVmaW5lZCB0aGVyZS4KKyMgZWxzZQoraW5saW5lIGludCBGaWxlTm8oRklMRSogZmlsZSkgeyBy
ZXR1cm4gX2ZpbGVubyhmaWxlKTsgfQoraW5saW5lIGludCBTdGF0KGNvbnN0IGNoYXIqIHBhdGgs
IFN0YXRTdHJ1Y3QqIGJ1ZikgeyByZXR1cm4gX3N0YXQocGF0aCwgYnVmKTsgfQoraW5saW5lIGlu
dCBSbURpcihjb25zdCBjaGFyKiBkaXIpIHsgcmV0dXJuIF9ybWRpcihkaXIpOyB9CitpbmxpbmUg
Ym9vbCBJc0Rpcihjb25zdCBTdGF0U3RydWN0JiBzdCkgeworICByZXR1cm4gKF9TX0lGRElSICYg
c3Quc3RfbW9kZSkgIT0gMDsKK30KKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxF
CisKKyNlbHNlCisKK3R5cGVkZWYgc3RydWN0IHN0YXQgU3RhdFN0cnVjdDsKKworaW5saW5lIGlu
dCBGaWxlTm8oRklMRSogZmlsZSkgeyByZXR1cm4gZmlsZW5vKGZpbGUpOyB9CitpbmxpbmUgaW50
IElzQVRUWShpbnQgZmQpIHsgcmV0dXJuIGlzYXR0eShmZCk7IH0KK2lubGluZSBpbnQgU3RhdChj
b25zdCBjaGFyKiBwYXRoLCBTdGF0U3RydWN0KiBidWYpIHsgcmV0dXJuIHN0YXQocGF0aCwgYnVm
KTsgfQoraW5saW5lIGludCBTdHJDYXNlQ21wKGNvbnN0IGNoYXIqIHMxLCBjb25zdCBjaGFyKiBz
MikgeworICByZXR1cm4gc3RyY2FzZWNtcChzMSwgczIpOworfQoraW5saW5lIGNoYXIqIFN0ckR1
cChjb25zdCBjaGFyKiBzcmMpIHsgcmV0dXJuIHN0cmR1cChzcmMpOyB9CitpbmxpbmUgaW50IFJt
RGlyKGNvbnN0IGNoYXIqIGRpcikgeyByZXR1cm4gcm1kaXIoZGlyKTsgfQoraW5saW5lIGJvb2wg
SXNEaXIoY29uc3QgU3RhdFN0cnVjdCYgc3QpIHsgcmV0dXJuIFNfSVNESVIoc3Quc3RfbW9kZSk7
IH0KKworI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisKKy8vIEZ1bmN0aW9ucyBkZXByZWNh
dGVkIGJ5IE1TVkMgOC4wLgorCitHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0OTk2
IC8qIGRlcHJlY2F0ZWQgZnVuY3Rpb24gKi8pCisKK2lubGluZSBjb25zdCBjaGFyKiBTdHJOQ3B5
KGNoYXIqIGRlc3QsIGNvbnN0IGNoYXIqIHNyYywgc2l6ZV90IG4pIHsKKyAgcmV0dXJuIHN0cm5j
cHkoZGVzdCwgc3JjLCBuKTsKK30KKworLy8gQ2hEaXIoKSwgRlJlb3BlbigpLCBGRE9wZW4oKSwg
UmVhZCgpLCBXcml0ZSgpLCBDbG9zZSgpLCBhbmQKKy8vIFN0ckVycm9yKCkgYXJlbid0IG5lZWRl
ZCBvbiBXaW5kb3dzIENFIGF0IHRoaXMgdGltZSBhbmQgdGh1cyBub3QKKy8vIGRlZmluZWQgdGhl
cmUuCisKKyNpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgJiYgIUdURVNUX09TX1dJTkRPV1Nf
UEhPTkUgJiYgIUdURVNUX09TX1dJTkRPV1NfUlQKK2lubGluZSBpbnQgQ2hEaXIoY29uc3QgY2hh
ciogZGlyKSB7IHJldHVybiBjaGRpcihkaXIpOyB9CisjZW5kaWYKK2lubGluZSBGSUxFKiBGT3Bl
bihjb25zdCBjaGFyKiBwYXRoLCBjb25zdCBjaGFyKiBtb2RlKSB7CisgIHJldHVybiBmb3Blbihw
YXRoLCBtb2RlKTsKK30KKyNpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKK2lubGluZSBGSUxF
ICpGUmVvcGVuKGNvbnN0IGNoYXIqIHBhdGgsIGNvbnN0IGNoYXIqIG1vZGUsIEZJTEUqIHN0cmVh
bSkgeworICByZXR1cm4gZnJlb3BlbihwYXRoLCBtb2RlLCBzdHJlYW0pOworfQoraW5saW5lIEZJ
TEUqIEZET3BlbihpbnQgZmQsIGNvbnN0IGNoYXIqIG1vZGUpIHsgcmV0dXJuIGZkb3BlbihmZCwg
bW9kZSk7IH0KKyNlbmRpZgoraW5saW5lIGludCBGQ2xvc2UoRklMRSogZnApIHsgcmV0dXJuIGZj
bG9zZShmcCk7IH0KKyNpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKK2lubGluZSBpbnQgUmVh
ZChpbnQgZmQsIHZvaWQqIGJ1ZiwgdW5zaWduZWQgaW50IGNvdW50KSB7CisgIHJldHVybiBzdGF0
aWNfY2FzdDxpbnQ+KHJlYWQoZmQsIGJ1ZiwgY291bnQpKTsKK30KK2lubGluZSBpbnQgV3JpdGUo
aW50IGZkLCBjb25zdCB2b2lkKiBidWYsIHVuc2lnbmVkIGludCBjb3VudCkgeworICByZXR1cm4g
c3RhdGljX2Nhc3Q8aW50Pih3cml0ZShmZCwgYnVmLCBjb3VudCkpOworfQoraW5saW5lIGludCBD
bG9zZShpbnQgZmQpIHsgcmV0dXJuIGNsb3NlKGZkKTsgfQoraW5saW5lIGNvbnN0IGNoYXIqIFN0
ckVycm9yKGludCBlcnJudW0pIHsgcmV0dXJuIHN0cmVycm9yKGVycm51bSk7IH0KKyNlbmRpZgor
aW5saW5lIGNvbnN0IGNoYXIqIEdldEVudihjb25zdCBjaGFyKiBuYW1lKSB7CisjaWYgR1RFU1Rf
T1NfV0lORE9XU19NT0JJTEUgfHwgR1RFU1RfT1NfV0lORE9XU19QSE9ORSB8IEdURVNUX09TX1dJ
TkRPV1NfUlQKKyAgLy8gV2UgYXJlIG9uIFdpbmRvd3MgQ0UsIHdoaWNoIGhhcyBubyBlbnZpcm9u
bWVudCB2YXJpYWJsZXMuCisgIHN0YXRpY19jYXN0PHZvaWQ+KG5hbWUpOyAgLy8gVG8gcHJldmVu
dCAndW51c2VkIGFyZ3VtZW50JyB3YXJuaW5nLgorICByZXR1cm4gTlVMTDsKKyNlbGlmIGRlZmlu
ZWQoX19CT1JMQU5EQ19fKSB8fCBkZWZpbmVkKF9fU3VuT1NfNV84KSB8fCBkZWZpbmVkKF9fU3Vu
T1NfNV85KQorICAvLyBFbnZpcm9ubWVudCB2YXJpYWJsZXMgd2hpY2ggd2UgcHJvZ3JhbW1hdGlj
YWxseSBjbGVhciB3aWxsIGJlIHNldCB0byB0aGUKKyAgLy8gZW1wdHkgc3RyaW5nIHJhdGhlciB0
aGFuIHVuc2V0IChOVUxMKS4gIEhhbmRsZSB0aGF0IGNhc2UuCisgIGNvbnN0IGNoYXIqIGNvbnN0
IGVudiA9IGdldGVudihuYW1lKTsKKyAgcmV0dXJuIChlbnYgIT0gTlVMTCAmJiBlbnZbMF0gIT0g
J1wwJykgPyBlbnYgOiBOVUxMOworI2Vsc2UKKyAgcmV0dXJuIGdldGVudihuYW1lKTsKKyNlbmRp
ZgorfQorCitHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKKworI2lmIEdURVNUX09T
X1dJTkRPV1NfTU9CSUxFCisvLyBXaW5kb3dzIENFIGhhcyBubyBDIGxpYnJhcnkuIFRoZSBhYm9y
dCgpIGZ1bmN0aW9uIGlzIHVzZWQgaW4KKy8vIHNldmVyYWwgcGxhY2VzIGluIEdvb2dsZSBUZXN0
LiBUaGlzIGltcGxlbWVudGF0aW9uIHByb3ZpZGVzIGEgcmVhc29uYWJsZQorLy8gaW1pdGF0aW9u
IG9mIHN0YW5kYXJkIGJlaGF2aW91ci4KK3ZvaWQgQWJvcnQoKTsKKyNlbHNlCitpbmxpbmUgdm9p
ZCBBYm9ydCgpIHsgYWJvcnQoKTsgfQorI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklM
RQorCit9ICAvLyBuYW1lc3BhY2UgcG9zaXgKKworLy8gTVNWQyAiZGVwcmVjYXRlcyIgc25wcmlu
dGYgYW5kIGlzc3VlcyB3YXJuaW5ncyB3aGVyZXZlciBpdCBpcyB1c2VkLiAgSW4KKy8vIG9yZGVy
IHRvIGF2b2lkIHRoZXNlIHdhcm5pbmdzLCB3ZSBuZWVkIHRvIHVzZSBfc25wcmludGYgb3IgX3Nu
cHJpbnRmX3Mgb24KKy8vIE1TVkMtYmFzZWQgcGxhdGZvcm1zLiAgV2UgbWFwIHRoZSBHVEVTVF9T
TlBSSU5URl8gbWFjcm8gdG8gdGhlIGFwcHJvcHJpYXRlCisvLyBmdW5jdGlvbiBpbiBvcmRlciB0
byBhY2hpZXZlIHRoYXQuICBXZSB1c2UgbWFjcm8gZGVmaW5pdGlvbiBoZXJlIGJlY2F1c2UKKy8v
IHNucHJpbnRmIGlzIGEgdmFyaWFkaWMgZnVuY3Rpb24uCisjaWYgX01TQ19WRVIgPj0gMTQwMCAm
JiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKy8vIE1TVkMgMjAwNSBhbmQgYWJvdmUgc3VwcG9y
dCB2YXJpYWRpYyBtYWNyb3MuCisjIGRlZmluZSBHVEVTVF9TTlBSSU5URl8oYnVmZmVyLCBzaXpl
LCBmb3JtYXQsIC4uLikgXAorICAgICBfc25wcmludGZfcyhidWZmZXIsIHNpemUsIHNpemUsIGZv
cm1hdCwgX19WQV9BUkdTX18pCisjZWxpZiBkZWZpbmVkKF9NU0NfVkVSKQorLy8gV2luZG93cyBD
RSBkb2VzIG5vdCBkZWZpbmUgX3NucHJpbnRmX3MgYW5kIE1TVkMgcHJpb3IgdG8gMjAwNSBkb2Vz
bid0CisvLyBjb21wbGFpbiBhYm91dCBfc25wcmludGYuCisjIGRlZmluZSBHVEVTVF9TTlBSSU5U
Rl8gX3NucHJpbnRmCisjZWxzZQorIyBkZWZpbmUgR1RFU1RfU05QUklOVEZfIHNucHJpbnRmCisj
ZW5kaWYKKworLy8gVGhlIG1heGltdW0gbnVtYmVyIGEgQmlnZ2VzdEludCBjYW4gcmVwcmVzZW50
LiAgVGhpcyBkZWZpbml0aW9uCisvLyB3b3JrcyBubyBtYXR0ZXIgQmlnZ2VzdEludCBpcyByZXBy
ZXNlbnRlZCBpbiBvbmUncyBjb21wbGVtZW50IG9yCisvLyB0d28ncyBjb21wbGVtZW50LgorLy8K
Ky8vIFdlIGNhbm5vdCByZWx5IG9uIG51bWVyaWNfbGltaXRzIGluIFNUTCwgYXMgX19pbnQ2NCBh
bmQgbG9uZyBsb25nCisvLyBhcmUgbm90IHBhcnQgb2Ygc3RhbmRhcmQgQysrIGFuZCBudW1lcmlj
X2xpbWl0cyBkb2Vzbid0IG5lZWQgdG8gYmUKKy8vIGRlZmluZWQgZm9yIHRoZW0uCitjb25zdCBC
aWdnZXN0SW50IGtNYXhCaWdnZXN0SW50ID0KKyAgICB+KHN0YXRpY19jYXN0PEJpZ2dlc3RJbnQ+
KDEpIDw8ICg4KnNpemVvZihCaWdnZXN0SW50KSAtIDEpKTsKKworLy8gVGhpcyB0ZW1wbGF0ZSBj
bGFzcyBzZXJ2ZXMgYXMgYSBjb21waWxlLXRpbWUgZnVuY3Rpb24gZnJvbSBzaXplIHRvCisvLyB0
eXBlLiAgSXQgbWFwcyBhIHNpemUgaW4gYnl0ZXMgdG8gYSBwcmltaXRpdmUgdHlwZSB3aXRoIHRo
YXQKKy8vIHNpemUuIGUuZy4KKy8vCisvLyAgIFR5cGVXaXRoU2l6ZTw0Pjo6VUludAorLy8KKy8v
IGlzIHR5cGVkZWYtZWQgdG8gYmUgdW5zaWduZWQgaW50ICh1bnNpZ25lZCBpbnRlZ2VyIG1hZGUg
dXAgb2YgNAorLy8gYnl0ZXMpLgorLy8KKy8vIFN1Y2ggZnVuY3Rpb25hbGl0eSBzaG91bGQgYmVs
b25nIHRvIFNUTCwgYnV0IEkgY2Fubm90IGZpbmQgaXQKKy8vIHRoZXJlLgorLy8KKy8vIEdvb2ds
ZSBUZXN0IHVzZXMgdGhpcyBjbGFzcyBpbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgZmxvYXRpbmct
cG9pbnQKKy8vIGNvbXBhcmlzb24uCisvLworLy8gRm9yIG5vdyBpdCBvbmx5IGhhbmRsZXMgVUlu
dCAodW5zaWduZWQgaW50KSBhcyB0aGF0J3MgYWxsIEdvb2dsZSBUZXN0CisvLyBuZWVkcy4gIE90
aGVyIHR5cGVzIGNhbiBiZSBlYXNpbHkgYWRkZWQgaW4gdGhlIGZ1dHVyZSBpZiBuZWVkCisvLyBh
cmlzZXMuCit0ZW1wbGF0ZSA8c2l6ZV90IHNpemU+CitjbGFzcyBUeXBlV2l0aFNpemUgeworIHB1
YmxpYzoKKyAgLy8gVGhpcyBwcmV2ZW50cyB0aGUgdXNlciBmcm9tIHVzaW5nIFR5cGVXaXRoU2l6
ZTxOPiB3aXRoIGluY29ycmVjdAorICAvLyB2YWx1ZXMgb2YgTi4KKyAgdHlwZWRlZiB2b2lkIFVJ
bnQ7Cit9OworCisvLyBUaGUgc3BlY2lhbGl6YXRpb24gZm9yIHNpemUgNC4KK3RlbXBsYXRlIDw+
CitjbGFzcyBUeXBlV2l0aFNpemU8ND4geworIHB1YmxpYzoKKyAgLy8gdW5zaWduZWQgaW50IGhh
cyBzaXplIDQgaW4gYm90aCBnY2MgYW5kIE1TVkMuCisgIC8vCisgIC8vIEFzIGJhc2UvYmFzaWN0
eXBlcy5oIGRvZXNuJ3QgY29tcGlsZSBvbiBXaW5kb3dzLCB3ZSBjYW5ub3QgdXNlCisgIC8vIHVp
bnQzMiwgdWludDY0LCBhbmQgZXRjIGhlcmUuCisgIHR5cGVkZWYgaW50IEludDsKKyAgdHlwZWRl
ZiB1bnNpZ25lZCBpbnQgVUludDsKK307CisKKy8vIFRoZSBzcGVjaWFsaXphdGlvbiBmb3Igc2l6
ZSA4LgordGVtcGxhdGUgPD4KK2NsYXNzIFR5cGVXaXRoU2l6ZTw4PiB7CisgcHVibGljOgorI2lm
IEdURVNUX09TX1dJTkRPV1MKKyAgdHlwZWRlZiBfX2ludDY0IEludDsKKyAgdHlwZWRlZiB1bnNp
Z25lZCBfX2ludDY0IFVJbnQ7CisjZWxzZQorICB0eXBlZGVmIGxvbmcgbG9uZyBJbnQ7ICAvLyBO
T0xJTlQKKyAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgVUludDsgIC8vIE5PTElOVAorI2Vu
ZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCit9OworCisvLyBJbnRlZ2VyIHR5cGVzIG9mIGtub3du
IHNpemVzLgordHlwZWRlZiBUeXBlV2l0aFNpemU8ND46OkludCBJbnQzMjsKK3R5cGVkZWYgVHlw
ZVdpdGhTaXplPDQ+OjpVSW50IFVJbnQzMjsKK3R5cGVkZWYgVHlwZVdpdGhTaXplPDg+OjpJbnQg
SW50NjQ7Cit0eXBlZGVmIFR5cGVXaXRoU2l6ZTw4Pjo6VUludCBVSW50NjQ7Cit0eXBlZGVmIFR5
cGVXaXRoU2l6ZTw4Pjo6SW50IFRpbWVJbk1pbGxpczsgIC8vIFJlcHJlc2VudHMgdGltZSBpbiBt
aWxsaXNlY29uZHMuCisKKy8vIFV0aWxpdGllcyBmb3IgY29tbWFuZCBsaW5lIGZsYWdzIGFuZCBl
bnZpcm9ubWVudCB2YXJpYWJsZXMuCisKKy8vIE1hY3JvIGZvciByZWZlcmVuY2luZyBmbGFncy4K
KyNpZiAhZGVmaW5lZChHVEVTVF9GTEFHKQorIyBkZWZpbmUgR1RFU1RfRkxBRyhuYW1lKSBGTEFH
U19ndGVzdF8jI25hbWUKKyNlbmRpZiAgLy8gIWRlZmluZWQoR1RFU1RfRkxBRykKKworI2lmICFk
ZWZpbmVkKEdURVNUX1VTRV9PV05fRkxBR0ZJTEVfRkxBR18pCisjIGRlZmluZSBHVEVTVF9VU0Vf
T1dOX0ZMQUdGSUxFX0ZMQUdfIDEKKyNlbmRpZiAgLy8gIWRlZmluZWQoR1RFU1RfVVNFX09XTl9G
TEFHRklMRV9GTEFHXykKKworI2lmICFkZWZpbmVkKEdURVNUX0RFQ0xBUkVfYm9vbF8pCisjIGRl
ZmluZSBHVEVTVF9GTEFHX1NBVkVSXyA6OnRlc3Rpbmc6OmludGVybmFsOjpHVGVzdEZsYWdTYXZl
cgorCisvLyBNYWNyb3MgZm9yIGRlY2xhcmluZyBmbGFncy4KKyMgZGVmaW5lIEdURVNUX0RFQ0xB
UkVfYm9vbF8obmFtZSkgR1RFU1RfQVBJXyBleHRlcm4gYm9vbCBHVEVTVF9GTEFHKG5hbWUpCisj
IGRlZmluZSBHVEVTVF9ERUNMQVJFX2ludDMyXyhuYW1lKSBcCisgICAgR1RFU1RfQVBJXyBleHRl
cm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6SW50MzIgR1RFU1RfRkxBRyhuYW1lKQorI2RlZmluZSBH
VEVTVF9ERUNMQVJFX3N0cmluZ18obmFtZSkgXAorICAgIEdURVNUX0FQSV8gZXh0ZXJuIDo6c3Rk
OjpzdHJpbmcgR1RFU1RfRkxBRyhuYW1lKQorCisvLyBNYWNyb3MgZm9yIGRlZmluaW5nIGZsYWdz
LgorI2RlZmluZSBHVEVTVF9ERUZJTkVfYm9vbF8obmFtZSwgZGVmYXVsdF92YWwsIGRvYykgXAor
ICAgIEdURVNUX0FQSV8gYm9vbCBHVEVTVF9GTEFHKG5hbWUpID0gKGRlZmF1bHRfdmFsKQorI2Rl
ZmluZSBHVEVTVF9ERUZJTkVfaW50MzJfKG5hbWUsIGRlZmF1bHRfdmFsLCBkb2MpIFwKKyAgICBH
VEVTVF9BUElfIDo6dGVzdGluZzo6aW50ZXJuYWw6OkludDMyIEdURVNUX0ZMQUcobmFtZSkgPSAo
ZGVmYXVsdF92YWwpCisjZGVmaW5lIEdURVNUX0RFRklORV9zdHJpbmdfKG5hbWUsIGRlZmF1bHRf
dmFsLCBkb2MpIFwKKyAgICBHVEVTVF9BUElfIDo6c3RkOjpzdHJpbmcgR1RFU1RfRkxBRyhuYW1l
KSA9IChkZWZhdWx0X3ZhbCkKKworI2VuZGlmICAvLyAhZGVmaW5lZChHVEVTVF9ERUNMQVJFX2Jv
b2xfKQorCisvLyBUaHJlYWQgYW5ub3RhdGlvbnMKKyNpZiAhZGVmaW5lZChHVEVTVF9FWENMVVNJ
VkVfTE9DS19SRVFVSVJFRF8pCisjIGRlZmluZSBHVEVTVF9FWENMVVNJVkVfTE9DS19SRVFVSVJF
RF8obG9ja3MpCisjIGRlZmluZSBHVEVTVF9MT0NLX0VYQ0xVREVEXyhsb2NrcykKKyNlbmRpZiAg
Ly8gIWRlZmluZWQoR1RFU1RfRVhDTFVTSVZFX0xPQ0tfUkVRVUlSRURfKQorCisvLyBQYXJzZXMg
J3N0cicgZm9yIGEgMzItYml0IHNpZ25lZCBpbnRlZ2VyLiAgSWYgc3VjY2Vzc2Z1bCwgd3JpdGVz
IHRoZSByZXN1bHQKKy8vIHRvICp2YWx1ZSBhbmQgcmV0dXJucyB0cnVlOyBvdGhlcndpc2UgbGVh
dmVzICp2YWx1ZSB1bmNoYW5nZWQgYW5kIHJldHVybnMKKy8vIGZhbHNlLgorLy8gVE9ETyhjaGFu
ZGxlcmMpOiBGaW5kIGEgYmV0dGVyIHdheSB0byByZWZhY3RvciBmbGFnIGFuZCBlbnZpcm9ubWVu
dCBwYXJzaW5nCisvLyBvdXQgb2YgYm90aCBndGVzdC1wb3J0LmNjIGFuZCBndGVzdC5jYyB0byBh
dm9pZCBleHBvcnRpbmcgdGhpcyB1dGlsaXR5CisvLyBmdW5jdGlvbi4KK2Jvb2wgUGFyc2VJbnQz
Mihjb25zdCBNZXNzYWdlJiBzcmNfdGV4dCwgY29uc3QgY2hhciogc3RyLCBJbnQzMiogdmFsdWUp
OworCisvLyBQYXJzZXMgYSBib29sL0ludDMyL3N0cmluZyBmcm9tIHRoZSBlbnZpcm9ubWVudCB2
YXJpYWJsZQorLy8gY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4gR29vZ2xlIFRlc3QgZmxhZy4K
K2Jvb2wgQm9vbEZyb21HVGVzdEVudihjb25zdCBjaGFyKiBmbGFnLCBib29sIGRlZmF1bHRfdmFs
KTsKK0dURVNUX0FQSV8gSW50MzIgSW50MzJGcm9tR1Rlc3RFbnYoY29uc3QgY2hhciogZmxhZywg
SW50MzIgZGVmYXVsdF92YWwpOworc3RkOjpzdHJpbmcgU3RyaW5nRnJvbUdUZXN0RW52KGNvbnN0
IGNoYXIqIGZsYWcsIGNvbnN0IGNoYXIqIGRlZmF1bHRfdmFsKTsKKworfSAgLy8gbmFtZXNwYWNl
IGludGVybmFsCisKKy8vIFJldHVybnMgYSBwYXRoIHRvIHRlbXBvcmFyeSBkaXJlY3RvcnkuCisv
LyBUcmllcyB0byBkZXRlcm1pbmUgYW4gYXBwcm9wcmlhdGUgZGlyZWN0b3J5IGZvciB0aGUgcGxh
dGZvcm0uCitHVEVTVF9BUElfIHN0ZDo6c3RyaW5nIFRlbXBEaXIoKTsKKworfSAgLy8gbmFtZXNw
YWNlIHRlc3RpbmcKKworI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dU
RVNUX1BPUlRfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3Qtc3RyaW5nLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0
ZXN0LXN0cmluZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3ZjFhN2ZkZDJjMGNjNDRjM2ExNDhmMGYxZWNkY2Jk
ZmU5YmFjNmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2lu
dGVybmFsL2d0ZXN0LXN0cmluZy5oCkBAIC0wLDAgKzEsMTY3IEBACisvLyBDb3B5cmlnaHQgMjAw
NSwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
Ky8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8v
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisv
LyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gQXV0aG9yczogd2FuQGdvb2dsZS5j
b20gKFpoYW55b25nIFdhbiksIGVlZmFjbUBnbWFpbC5jb20gKFNlYW4gTWNhZmVlKQorLy8KKy8v
IFRoZSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKKy8vCisvLyBU
aGlzIGhlYWRlciBmaWxlIGRlY2xhcmVzIHRoZSBTdHJpbmcgY2xhc3MgYW5kIGZ1bmN0aW9ucyB1
c2VkIGludGVybmFsbHkgYnkKKy8vIEdvb2dsZSBUZXN0LiAgVGhleSBhcmUgc3ViamVjdCB0byBj
aGFuZ2Ugd2l0aG91dCBub3RpY2UuIFRoZXkgc2hvdWxkIG5vdCB1c2VkCisvLyBieSBjb2RlIGV4
dGVybmFsIHRvIEdvb2dsZSBUZXN0LgorLy8KKy8vIFRoaXMgaGVhZGVyIGZpbGUgaXMgI2luY2x1
ZGVkIGJ5IDxndGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5oPi4KKy8vIEl0IHNob3VsZCBu
b3QgYmUgI2luY2x1ZGVkIGJ5IG90aGVyIGZpbGVzLgorCisjaWZuZGVmIEdURVNUX0lOQ0xVREVf
R1RFU1RfSU5URVJOQUxfR1RFU1RfU1RSSU5HX0hfCisjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RF
U1RfSU5URVJOQUxfR1RFU1RfU1RSSU5HX0hfCisKKyNpZmRlZiBfX0JPUkxBTkRDX18KKy8vIHN0
cmluZy5oIGlzIG5vdCBndWFyYW50ZWVkIHRvIHByb3ZpZGUgc3RyY3B5IG9uIEMrKyBCdWlsZGVy
LgorIyBpbmNsdWRlIDxtZW0uaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5j
bHVkZSA8c3RyaW5nPgorCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgor
CituYW1lc3BhY2UgdGVzdGluZyB7CituYW1lc3BhY2UgaW50ZXJuYWwgeworCisvLyBTdHJpbmcg
LSBhbiBhYnN0cmFjdCBjbGFzcyBob2xkaW5nIHN0YXRpYyBzdHJpbmcgdXRpbGl0aWVzLgorY2xh
c3MgR1RFU1RfQVBJXyBTdHJpbmcgeworIHB1YmxpYzoKKyAgLy8gU3RhdGljIHV0aWxpdHkgbWV0
aG9kcworCisgIC8vIENsb25lcyBhIDAtdGVybWluYXRlZCBDIHN0cmluZywgYWxsb2NhdGluZyBt
ZW1vcnkgdXNpbmcgbmV3LiAgVGhlCisgIC8vIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgZGVs
ZXRpbmcgdGhlIHJldHVybiB2YWx1ZSB1c2luZworICAvLyBkZWxldGVbXS4gIFJldHVybnMgdGhl
IGNsb25lZCBzdHJpbmcsIG9yIE5VTEwgaWYgdGhlIGlucHV0IGlzCisgIC8vIE5VTEwuCisgIC8v
CisgIC8vIFRoaXMgaXMgZGlmZmVyZW50IGZyb20gc3RyZHVwKCkgaW4gc3RyaW5nLmgsIHdoaWNo
IGFsbG9jYXRlcworICAvLyBtZW1vcnkgdXNpbmcgbWFsbG9jKCkuCisgIHN0YXRpYyBjb25zdCBj
aGFyKiBDbG9uZUNTdHJpbmcoY29uc3QgY2hhciogY19zdHIpOworCisjaWYgR1RFU1RfT1NfV0lO
RE9XU19NT0JJTEUKKyAgLy8gV2luZG93cyBDRSBkb2VzIG5vdCBoYXZlIHRoZSAnQU5TSScgdmVy
c2lvbnMgb2YgV2luMzIgQVBJcy4gVG8gYmUKKyAgLy8gYWJsZSB0byBwYXNzIHN0cmluZ3MgdG8g
V2luMzIgQVBJcyBvbiBDRSB3ZSBuZWVkIHRvIGNvbnZlcnQgdGhlbQorICAvLyB0byAnVW5pY29k
ZScsIFVURi0xNi4KKworICAvLyBDcmVhdGVzIGEgVVRGLTE2IHdpZGUgc3RyaW5nIGZyb20gdGhl
IGdpdmVuIEFOU0kgc3RyaW5nLCBhbGxvY2F0aW5nCisgIC8vIG1lbW9yeSB1c2luZyBuZXcuIFRo
ZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGRlbGV0aW5nIHRoZSByZXR1cm4KKyAgLy8gdmFs
dWUgdXNpbmcgZGVsZXRlW10uIFJldHVybnMgdGhlIHdpZGUgc3RyaW5nLCBvciBOVUxMIGlmIHRo
ZQorICAvLyBpbnB1dCBpcyBOVUxMLgorICAvLworICAvLyBUaGUgd2lkZSBzdHJpbmcgaXMgY3Jl
YXRlZCB1c2luZyB0aGUgQU5TSSBjb2RlcGFnZSAoQ1BfQUNQKSB0bworICAvLyBtYXRjaCB0aGUg
YmVoYXZpb3VyIG9mIHRoZSBBTlNJIHZlcnNpb25zIG9mIFdpbjMyIGNhbGxzIGFuZCB0aGUKKyAg
Ly8gQyBydW50aW1lLgorICBzdGF0aWMgTFBDV1NUUiBBbnNpVG9VdGYxNihjb25zdCBjaGFyKiBj
X3N0cik7CisKKyAgLy8gQ3JlYXRlcyBhbiBBTlNJIHN0cmluZyBmcm9tIHRoZSBnaXZlbiB3aWRl
IHN0cmluZywgYWxsb2NhdGluZworICAvLyBtZW1vcnkgdXNpbmcgbmV3LiBUaGUgY2FsbGVyIGlz
IHJlc3BvbnNpYmxlIGZvciBkZWxldGluZyB0aGUgcmV0dXJuCisgIC8vIHZhbHVlIHVzaW5nIGRl
bGV0ZVtdLiBSZXR1cm5zIHRoZSBBTlNJIHN0cmluZywgb3IgTlVMTCBpZiB0aGUKKyAgLy8gaW5w
dXQgaXMgTlVMTC4KKyAgLy8KKyAgLy8gVGhlIHJldHVybmVkIHN0cmluZyBpcyBjcmVhdGVkIHVz
aW5nIHRoZSBBTlNJIGNvZGVwYWdlIChDUF9BQ1ApIHRvCisgIC8vIG1hdGNoIHRoZSBiZWhhdmlv
dXIgb2YgdGhlIEFOU0kgdmVyc2lvbnMgb2YgV2luMzIgY2FsbHMgYW5kIHRoZQorICAvLyBDIHJ1
bnRpbWUuCisgIHN0YXRpYyBjb25zdCBjaGFyKiBVdGYxNlRvQW5zaShMUENXU1RSIHV0ZjE2X3N0
cik7CisjZW5kaWYKKworICAvLyBDb21wYXJlcyB0d28gQyBzdHJpbmdzLiAgUmV0dXJucyB0cnVl
IGlmZiB0aGV5IGhhdmUgdGhlIHNhbWUgY29udGVudC4KKyAgLy8KKyAgLy8gVW5saWtlIHN0cmNt
cCgpLCB0aGlzIGZ1bmN0aW9uIGNhbiBoYW5kbGUgTlVMTCBhcmd1bWVudChzKS4gIEEKKyAgLy8g
TlVMTCBDIHN0cmluZyBpcyBjb25zaWRlcmVkIGRpZmZlcmVudCB0byBhbnkgbm9uLU5VTEwgQyBz
dHJpbmcsCisgIC8vIGluY2x1ZGluZyB0aGUgZW1wdHkgc3RyaW5nLgorICBzdGF0aWMgYm9vbCBD
U3RyaW5nRXF1YWxzKGNvbnN0IGNoYXIqIGxocywgY29uc3QgY2hhciogcmhzKTsKKworICAvLyBD
b252ZXJ0cyBhIHdpZGUgQyBzdHJpbmcgdG8gYSBTdHJpbmcgdXNpbmcgdGhlIFVURi04IGVuY29k
aW5nLgorICAvLyBOVUxMIHdpbGwgYmUgY29udmVydGVkIHRvICIobnVsbCkiLiAgSWYgYW4gZXJy
b3Igb2NjdXJyZWQgZHVyaW5nCisgIC8vIHRoZSBjb252ZXJzaW9uLCAiKGZhaWxlZCB0byBjb252
ZXJ0IGZyb20gd2lkZSBzdHJpbmcpIiBpcworICAvLyByZXR1cm5lZC4KKyAgc3RhdGljIHN0ZDo6
c3RyaW5nIFNob3dXaWRlQ1N0cmluZyhjb25zdCB3Y2hhcl90KiB3aWRlX2Nfc3RyKTsKKworICAv
LyBDb21wYXJlcyB0d28gd2lkZSBDIHN0cmluZ3MuICBSZXR1cm5zIHRydWUgaWZmIHRoZXkgaGF2
ZSB0aGUgc2FtZQorICAvLyBjb250ZW50LgorICAvLworICAvLyBVbmxpa2Ugd2NzY21wKCksIHRo
aXMgZnVuY3Rpb24gY2FuIGhhbmRsZSBOVUxMIGFyZ3VtZW50KHMpLiAgQQorICAvLyBOVUxMIEMg
c3RyaW5nIGlzIGNvbnNpZGVyZWQgZGlmZmVyZW50IHRvIGFueSBub24tTlVMTCBDIHN0cmluZywK
KyAgLy8gaW5jbHVkaW5nIHRoZSBlbXB0eSBzdHJpbmcuCisgIHN0YXRpYyBib29sIFdpZGVDU3Ry
aW5nRXF1YWxzKGNvbnN0IHdjaGFyX3QqIGxocywgY29uc3Qgd2NoYXJfdCogcmhzKTsKKworICAv
LyBDb21wYXJlcyB0d28gQyBzdHJpbmdzLCBpZ25vcmluZyBjYXNlLiAgUmV0dXJucyB0cnVlIGlm
ZiB0aGV5CisgIC8vIGhhdmUgdGhlIHNhbWUgY29udGVudC4KKyAgLy8KKyAgLy8gVW5saWtlIHN0
cmNhc2VjbXAoKSwgdGhpcyBmdW5jdGlvbiBjYW4gaGFuZGxlIE5VTEwgYXJndW1lbnQocykuCisg
IC8vIEEgTlVMTCBDIHN0cmluZyBpcyBjb25zaWRlcmVkIGRpZmZlcmVudCB0byBhbnkgbm9uLU5V
TEwgQyBzdHJpbmcsCisgIC8vIGluY2x1ZGluZyB0aGUgZW1wdHkgc3RyaW5nLgorICBzdGF0aWMg
Ym9vbCBDYXNlSW5zZW5zaXRpdmVDU3RyaW5nRXF1YWxzKGNvbnN0IGNoYXIqIGxocywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiByaHMpOwor
CisgIC8vIENvbXBhcmVzIHR3byB3aWRlIEMgc3RyaW5ncywgaWdub3JpbmcgY2FzZS4gIFJldHVy
bnMgdHJ1ZSBpZmYgdGhleQorICAvLyBoYXZlIHRoZSBzYW1lIGNvbnRlbnQuCisgIC8vCisgIC8v
IFVubGlrZSB3Y3NjYXNlY21wKCksIHRoaXMgZnVuY3Rpb24gY2FuIGhhbmRsZSBOVUxMIGFyZ3Vt
ZW50KHMpLgorICAvLyBBIE5VTEwgQyBzdHJpbmcgaXMgY29uc2lkZXJlZCBkaWZmZXJlbnQgdG8g
YW55IG5vbi1OVUxMIHdpZGUgQyBzdHJpbmcsCisgIC8vIGluY2x1ZGluZyB0aGUgZW1wdHkgc3Ry
aW5nLgorICAvLyBOQjogVGhlIGltcGxlbWVudGF0aW9ucyBvbiBkaWZmZXJlbnQgcGxhdGZvcm1z
IHNsaWdodGx5IGRpZmZlci4KKyAgLy8gT24gd2luZG93cywgdGhpcyBtZXRob2QgdXNlcyBfd2Nz
aWNtcCB3aGljaCBjb21wYXJlcyBhY2NvcmRpbmcgdG8gTENfQ1RZUEUKKyAgLy8gZW52aXJvbm1l
bnQgdmFyaWFibGUuIE9uIEdOVSBwbGF0Zm9ybSB0aGlzIG1ldGhvZCB1c2VzIHdjc2Nhc2VjbXAK
KyAgLy8gd2hpY2ggY29tcGFyZXMgYWNjb3JkaW5nIHRvIExDX0NUWVBFIGNhdGVnb3J5IG9mIHRo
ZSBjdXJyZW50IGxvY2FsZS4KKyAgLy8gT24gTWFjT1MgWCwgaXQgdXNlcyB0b3dsb3dlciwgd2hp
Y2ggYWxzbyB1c2VzIExDX0NUWVBFIGNhdGVnb3J5IG9mIHRoZQorICAvLyBjdXJyZW50IGxvY2Fs
ZS4KKyAgc3RhdGljIGJvb2wgQ2FzZUluc2Vuc2l0aXZlV2lkZUNTdHJpbmdFcXVhbHMoY29uc3Qg
d2NoYXJfdCogbGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB3Y2hhcl90KiByaHMpOworCisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIGdp
dmVuIHN0cmluZyBlbmRzIHdpdGggdGhlIGdpdmVuIHN1ZmZpeCwgaWdub3JpbmcKKyAgLy8gY2Fz
ZS4gQW55IHN0cmluZyBpcyBjb25zaWRlcmVkIHRvIGVuZCB3aXRoIGFuIGVtcHR5IHN1ZmZpeC4K
KyAgc3RhdGljIGJvb2wgRW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoCisgICAgICBjb25zdCBzdGQ6
OnN0cmluZyYgc3RyLCBjb25zdCBzdGQ6OnN0cmluZyYgc3VmZml4KTsKKworICAvLyBGb3JtYXRz
IGFuIGludCB2YWx1ZSBhcyAiJTAyZCIuCisgIHN0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRJbnRX
aWR0aDIoaW50IHZhbHVlKTsgIC8vICIlMDJkIiBmb3Igd2lkdGggPT0gMgorCisgIC8vIEZvcm1h
dHMgYW4gaW50IHZhbHVlIGFzICIlWCIuCisgIHN0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRIZXhJ
bnQoaW50IHZhbHVlKTsKKworICAvLyBGb3JtYXRzIGEgYnl0ZSBhcyAiJTAyWCIuCisgIHN0YXRp
YyBzdGQ6OnN0cmluZyBGb3JtYXRCeXRlKHVuc2lnbmVkIGNoYXIgdmFsdWUpOworCisgcHJpdmF0
ZToKKyAgU3RyaW5nKCk7ICAvLyBOb3QgbWVhbnQgdG8gYmUgaW5zdGFudGlhdGVkLgorfTsgIC8v
IGNsYXNzIFN0cmluZworCisvLyBHZXRzIHRoZSBjb250ZW50IG9mIHRoZSBzdHJpbmdzdHJlYW0n
cyBidWZmZXIgYXMgYW4gc3RkOjpzdHJpbmcuICBFYWNoICdcMCcKKy8vIGNoYXJhY3RlciBpbiB0
aGUgYnVmZmVyIGlzIHJlcGxhY2VkIHdpdGggIlxcMCIuCitHVEVTVF9BUElfIHN0ZDo6c3RyaW5n
IFN0cmluZ1N0cmVhbVRvU3RyaW5nKDo6c3RkOjpzdHJpbmdzdHJlYW0qIHN0cmVhbSk7CisKK30g
IC8vIG5hbWVzcGFjZSBpbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKKworI2VuZGlm
ICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1NUUklOR19IXwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10dXBsZS5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10dXBsZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmU5YjQwNTM0MGE4NTVmNjAyNThiMTM0MDI2YmU3YjEzNjEyZWJlMWUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgK
QEAgLTAsMCArMSwxMDIwIEBACisvLyBUaGlzIGZpbGUgd2FzIEdFTkVSQVRFRCBieSBjb21tYW5k
OgorLy8gICAgIHB1bXAucHkgZ3Rlc3QtdHVwbGUuaC5wdW1wCisvLyBETyBOT1QgRURJVCBCWSBI
QU5EISEhCisKKy8vIENvcHlyaWdodCAyMDA5IEdvb2dsZSBJbmMuCisvLyBBbGwgUmlnaHRzIFJl
c2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8K
Ky8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
Ly8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8K
Ky8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKworLy8gSW1wbGVtZW50
cyBhIHN1YnNldCBvZiBUUjEgdHVwbGUgbmVlZGVkIGJ5IEdvb2dsZSBUZXN0IGFuZCBHb29nbGUg
TW9jay4KKworI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1RVUExF
X0hfCisjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfVFVQTEVfSF8K
KworI2luY2x1ZGUgPHV0aWxpdHk+ICAvLyBGb3IgOjpzdGQ6OnBhaXIuCisKKy8vIFRoZSBjb21w
aWxlciB1c2VkIGluIFN5bWJpYW4gaGFzIGEgYnVnIHRoYXQgcHJldmVudHMgdXMgZnJvbSBkZWNs
YXJpbmcgdGhlCisvLyB0dXBsZSB0ZW1wbGF0ZSBhcyBhIGZyaWVuZCAoaXQgY29tcGxhaW5zIHRo
YXQgdHVwbGUgaXMgcmVkZWZpbmVkKS4gIFRoaXMKKy8vIGhhY2sgYnlwYXNzZXMgdGhlIGJ1ZyBi
eSBkZWNsYXJpbmcgdGhlIG1lbWJlcnMgdGhhdCBzaG91bGQgb3RoZXJ3aXNlIGJlCisvLyBwcml2
YXRlIGFzIHB1YmxpYy4KKy8vIFN1biBTdHVkaW8gdmVyc2lvbnMgPCAxMiBhbHNvIGhhdmUgdGhl
IGFib3ZlIGJ1Zy4KKyNpZiBkZWZpbmVkKF9fU1lNQklBTjMyX18pIHx8IChkZWZpbmVkKF9fU1VO
UFJPX0NDKSAmJiBfX1NVTlBST19DQyA8IDB4NTkwKQorIyBkZWZpbmUgR1RFU1RfREVDTEFSRV9U
VVBMRV9BU19GUklFTkRfIHB1YmxpYzoKKyNlbHNlCisjIGRlZmluZSBHVEVTVF9ERUNMQVJFX1RV
UExFX0FTX0ZSSUVORF8gXAorICAgIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFUpPiBm
cmllbmQgY2xhc3MgdHVwbGU7IFwKKyAgIHByaXZhdGU6CisjZW5kaWYKKworLy8gVmlzdWFsIFN0
dWRpbyAyMDEwLCAyMDEyLCBhbmQgMjAxMyBkZWZpbmUgc3ltYm9scyBpbiBzdGQ6OnRyMSB0aGF0
IGNvbmZsaWN0CisvLyB3aXRoIG91ciBvd24gZGVmaW5pdGlvbnMuIFRoZXJlZm9yZSB1c2luZyBv
dXIgb3duIHR1cGxlIGRvZXMgbm90IHdvcmsgb24KKy8vIHRob3NlIGNvbXBpbGVycy4KKyNpZiBk
ZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA+PSAxNjAwICAvKiAxNjAwIGlzIFZpc3VhbCBT
dHVkaW8gMjAxMCAqLworIyBlcnJvciAiZ3Rlc3QncyB0dXBsZSBkb2Vzbid0IGNvbXBpbGUgb24g
VmlzdWFsIFN0dWRpbyAyMDEwIG9yIGxhdGVyLiBcCitHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRSBt
dXN0IGJlIHNldCB0byAwIG9uIHRob3NlIGNvbXBpbGVycy4iCisjZW5kaWYKKworLy8gR1RFU1Rf
bl9UVVBMRV8oVCkgaXMgdGhlIHR5cGUgb2YgYW4gbi10dXBsZS4KKyNkZWZpbmUgR1RFU1RfMF9U
VVBMRV8oVCkgdHVwbGU8PgorI2RlZmluZSBHVEVTVF8xX1RVUExFXyhUKSB0dXBsZTxUIyMwLCB2
b2lkLCB2b2lkLCB2b2lkLCB2b2lkLCB2b2lkLCB2b2lkLCBcCisgICAgdm9pZCwgdm9pZCwgdm9p
ZD4KKyNkZWZpbmUgR1RFU1RfMl9UVVBMRV8oVCkgdHVwbGU8VCMjMCwgVCMjMSwgdm9pZCwgdm9p
ZCwgdm9pZCwgdm9pZCwgdm9pZCwgXAorICAgIHZvaWQsIHZvaWQsIHZvaWQ+CisjZGVmaW5lIEdU
RVNUXzNfVFVQTEVfKFQpIHR1cGxlPFQjIzAsIFQjIzEsIFQjIzIsIHZvaWQsIHZvaWQsIHZvaWQs
IHZvaWQsIFwKKyAgICB2b2lkLCB2b2lkLCB2b2lkPgorI2RlZmluZSBHVEVTVF80X1RVUExFXyhU
KSB0dXBsZTxUIyMwLCBUIyMxLCBUIyMyLCBUIyMzLCB2b2lkLCB2b2lkLCB2b2lkLCBcCisgICAg
dm9pZCwgdm9pZCwgdm9pZD4KKyNkZWZpbmUgR1RFU1RfNV9UVVBMRV8oVCkgdHVwbGU8VCMjMCwg
VCMjMSwgVCMjMiwgVCMjMywgVCMjNCwgdm9pZCwgdm9pZCwgXAorICAgIHZvaWQsIHZvaWQsIHZv
aWQ+CisjZGVmaW5lIEdURVNUXzZfVFVQTEVfKFQpIHR1cGxlPFQjIzAsIFQjIzEsIFQjIzIsIFQj
IzMsIFQjIzQsIFQjIzUsIHZvaWQsIFwKKyAgICB2b2lkLCB2b2lkLCB2b2lkPgorI2RlZmluZSBH
VEVTVF83X1RVUExFXyhUKSB0dXBsZTxUIyMwLCBUIyMxLCBUIyMyLCBUIyMzLCBUIyM0LCBUIyM1
LCBUIyM2LCBcCisgICAgdm9pZCwgdm9pZCwgdm9pZD4KKyNkZWZpbmUgR1RFU1RfOF9UVVBMRV8o
VCkgdHVwbGU8VCMjMCwgVCMjMSwgVCMjMiwgVCMjMywgVCMjNCwgVCMjNSwgVCMjNiwgXAorICAg
IFQjIzcsIHZvaWQsIHZvaWQ+CisjZGVmaW5lIEdURVNUXzlfVFVQTEVfKFQpIHR1cGxlPFQjIzAs
IFQjIzEsIFQjIzIsIFQjIzMsIFQjIzQsIFQjIzUsIFQjIzYsIFwKKyAgICBUIyM3LCBUIyM4LCB2
b2lkPgorI2RlZmluZSBHVEVTVF8xMF9UVVBMRV8oVCkgdHVwbGU8VCMjMCwgVCMjMSwgVCMjMiwg
VCMjMywgVCMjNCwgVCMjNSwgVCMjNiwgXAorICAgIFQjIzcsIFQjIzgsIFQjIzk+CisKKy8vIEdU
RVNUX25fVFlQRU5BTUVTXyhUKSBkZWNsYXJlcyBhIGxpc3Qgb2YgbiB0eXBlbmFtZXMuCisjZGVm
aW5lIEdURVNUXzBfVFlQRU5BTUVTXyhUKQorI2RlZmluZSBHVEVTVF8xX1RZUEVOQU1FU18oVCkg
dHlwZW5hbWUgVCMjMAorI2RlZmluZSBHVEVTVF8yX1RZUEVOQU1FU18oVCkgdHlwZW5hbWUgVCMj
MCwgdHlwZW5hbWUgVCMjMQorI2RlZmluZSBHVEVTVF8zX1RZUEVOQU1FU18oVCkgdHlwZW5hbWUg
VCMjMCwgdHlwZW5hbWUgVCMjMSwgdHlwZW5hbWUgVCMjMgorI2RlZmluZSBHVEVTVF80X1RZUEVO
QU1FU18oVCkgdHlwZW5hbWUgVCMjMCwgdHlwZW5hbWUgVCMjMSwgdHlwZW5hbWUgVCMjMiwgXAor
ICAgIHR5cGVuYW1lIFQjIzMKKyNkZWZpbmUgR1RFU1RfNV9UWVBFTkFNRVNfKFQpIHR5cGVuYW1l
IFQjIzAsIHR5cGVuYW1lIFQjIzEsIHR5cGVuYW1lIFQjIzIsIFwKKyAgICB0eXBlbmFtZSBUIyMz
LCB0eXBlbmFtZSBUIyM0CisjZGVmaW5lIEdURVNUXzZfVFlQRU5BTUVTXyhUKSB0eXBlbmFtZSBU
IyMwLCB0eXBlbmFtZSBUIyMxLCB0eXBlbmFtZSBUIyMyLCBcCisgICAgdHlwZW5hbWUgVCMjMywg
dHlwZW5hbWUgVCMjNCwgdHlwZW5hbWUgVCMjNQorI2RlZmluZSBHVEVTVF83X1RZUEVOQU1FU18o
VCkgdHlwZW5hbWUgVCMjMCwgdHlwZW5hbWUgVCMjMSwgdHlwZW5hbWUgVCMjMiwgXAorICAgIHR5
cGVuYW1lIFQjIzMsIHR5cGVuYW1lIFQjIzQsIHR5cGVuYW1lIFQjIzUsIHR5cGVuYW1lIFQjIzYK
KyNkZWZpbmUgR1RFU1RfOF9UWVBFTkFNRVNfKFQpIHR5cGVuYW1lIFQjIzAsIHR5cGVuYW1lIFQj
IzEsIHR5cGVuYW1lIFQjIzIsIFwKKyAgICB0eXBlbmFtZSBUIyMzLCB0eXBlbmFtZSBUIyM0LCB0
eXBlbmFtZSBUIyM1LCB0eXBlbmFtZSBUIyM2LCB0eXBlbmFtZSBUIyM3CisjZGVmaW5lIEdURVNU
XzlfVFlQRU5BTUVTXyhUKSB0eXBlbmFtZSBUIyMwLCB0eXBlbmFtZSBUIyMxLCB0eXBlbmFtZSBU
IyMyLCBcCisgICAgdHlwZW5hbWUgVCMjMywgdHlwZW5hbWUgVCMjNCwgdHlwZW5hbWUgVCMjNSwg
dHlwZW5hbWUgVCMjNiwgXAorICAgIHR5cGVuYW1lIFQjIzcsIHR5cGVuYW1lIFQjIzgKKyNkZWZp
bmUgR1RFU1RfMTBfVFlQRU5BTUVTXyhUKSB0eXBlbmFtZSBUIyMwLCB0eXBlbmFtZSBUIyMxLCB0
eXBlbmFtZSBUIyMyLCBcCisgICAgdHlwZW5hbWUgVCMjMywgdHlwZW5hbWUgVCMjNCwgdHlwZW5h
bWUgVCMjNSwgdHlwZW5hbWUgVCMjNiwgXAorICAgIHR5cGVuYW1lIFQjIzcsIHR5cGVuYW1lIFQj
IzgsIHR5cGVuYW1lIFQjIzkKKworLy8gSW4gdGhlb3J5LCBkZWZpbmluZyBzdHVmZiBpbiB0aGUg
OjpzdGQgbmFtZXNwYWNlIGlzIHVuZGVmaW5lZAorLy8gYmVoYXZpb3IuICBXZSBjYW4gZG8gdGhp
cyBhcyB3ZSBhcmUgcGxheWluZyB0aGUgcm9sZSBvZiBhIHN0YW5kYXJkCisvLyBsaWJyYXJ5IHZl
bmRvci4KK25hbWVzcGFjZSBzdGQgeworbmFtZXNwYWNlIHRyMSB7CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUMCA9IHZvaWQsIHR5cGVuYW1lIFQxID0gdm9pZCwgdHlwZW5hbWUgVDIgPSB2b2lkLAor
ICAgIHR5cGVuYW1lIFQzID0gdm9pZCwgdHlwZW5hbWUgVDQgPSB2b2lkLCB0eXBlbmFtZSBUNSA9
IHZvaWQsCisgICAgdHlwZW5hbWUgVDYgPSB2b2lkLCB0eXBlbmFtZSBUNyA9IHZvaWQsIHR5cGVu
YW1lIFQ4ID0gdm9pZCwKKyAgICB0eXBlbmFtZSBUOSA9IHZvaWQ+CitjbGFzcyB0dXBsZTsKKwor
Ly8gQW55dGhpbmcgaW4gbmFtZXNwYWNlIGd0ZXN0X2ludGVybmFsIGlzIEdvb2dsZSBUZXN0J3Mg
SU5URVJOQUwKKy8vIElNUExFTUVOVEFUSU9OIERFVEFJTCBhbmQgTVVTVCBOT1QgQkUgVVNFRCBE
SVJFQ1RMWSBpbiB1c2VyIGNvZGUuCituYW1lc3BhY2UgZ3Rlc3RfaW50ZXJuYWwgeworCisvLyBC
eVJlZjxUPjo6dHlwZSBpcyBUIGlmIFQgaXMgYSByZWZlcmVuY2U7IG90aGVyd2lzZSBpdCdzIGNv
bnN0IFQmLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgQnlSZWYgeyB0eXBlZGVmIGNv
bnN0IFQmIHR5cGU7IH07ICAvLyBOT0xJTlQKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0
IEJ5UmVmPFQmPiB7IHR5cGVkZWYgVCYgdHlwZTsgfTsgIC8vIE5PTElOVAorCisvLyBBIGhhbmR5
IHdyYXBwZXIgZm9yIEJ5UmVmLgorI2RlZmluZSBHVEVTVF9CWV9SRUZfKFQpIHR5cGVuYW1lIDo6
c3RkOjp0cjE6Omd0ZXN0X2ludGVybmFsOjpCeVJlZjxUPjo6dHlwZQorCisvLyBBZGRSZWY8VD46
OnR5cGUgaXMgVCBpZiBUIGlzIGEgcmVmZXJlbmNlOyBvdGhlcndpc2UgaXQncyBUJi4gIFRoaXMK
Ky8vIGlzIHRoZSBzYW1lIGFzIHRyMTo6YWRkX3JlZmVyZW5jZTxUPjo6dHlwZS4KK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPgorc3RydWN0IEFkZFJlZiB7IHR5cGVkZWYgVCYgdHlwZTsgfTsgIC8vIE5P
TElOVAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgQWRkUmVmPFQmPiB7IHR5cGVkZWYg
VCYgdHlwZTsgfTsgIC8vIE5PTElOVAorCisvLyBBIGhhbmR5IHdyYXBwZXIgZm9yIEFkZFJlZi4K
KyNkZWZpbmUgR1RFU1RfQUREX1JFRl8oVCkgdHlwZW5hbWUgOjpzdGQ6OnRyMTo6Z3Rlc3RfaW50
ZXJuYWw6OkFkZFJlZjxUPjo6dHlwZQorCisvLyBBIGhlbHBlciBmb3IgaW1wbGVtZW50aW5nIGdl
dDxrPigpLgordGVtcGxhdGUgPGludCBrPiBjbGFzcyBHZXQ7CisKKy8vIEEgaGVscGVyIGZvciBp
bXBsZW1lbnRpbmcgdHVwbGVfZWxlbWVudDxrLCBUPi4gIGtJbmRleFZhbGlkIGlzIHRydWUKKy8v
IGlmZiBrIDwgdGhlIG51bWJlciBvZiBmaWVsZHMgaW4gdHVwbGUgdHlwZSBULgordGVtcGxhdGUg
PGJvb2wga0luZGV4VmFsaWQsIGludCBrSW5kZXgsIGNsYXNzIFR1cGxlPgorc3RydWN0IFR1cGxl
RWxlbWVudDsKKwordGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18oVCk+CitzdHJ1Y3QgVHVw
bGVFbGVtZW50PHRydWUsIDAsIEdURVNUXzEwX1RVUExFXyhUKSA+IHsKKyAgdHlwZWRlZiBUMCB0
eXBlOworfTsKKwordGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18oVCk+CitzdHJ1Y3QgVHVw
bGVFbGVtZW50PHRydWUsIDEsIEdURVNUXzEwX1RVUExFXyhUKSA+IHsKKyAgdHlwZWRlZiBUMSB0
eXBlOworfTsKKwordGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18oVCk+CitzdHJ1Y3QgVHVw
bGVFbGVtZW50PHRydWUsIDIsIEdURVNUXzEwX1RVUExFXyhUKSA+IHsKKyAgdHlwZWRlZiBUMiB0
eXBlOworfTsKKwordGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18oVCk+CitzdHJ1Y3QgVHVw
bGVFbGVtZW50PHRydWUsIDMsIEdURVNUXzEwX1RVUExFXyhUKSA+IHsKKyAgdHlwZWRlZiBUMyB0
eXBlOworfTsKKwordGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18oVCk+CitzdHJ1Y3QgVHVw
bGVFbGVtZW50PHRydWUsIDQsIEdURVNUXzEwX1RVUExFXyhUKSA+IHsKKyAgdHlwZWRlZiBUNCB0
eXBlOworfTsKKwordGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18oVCk+CitzdHJ1Y3QgVHVw
bGVFbGVtZW50PHRydWUsIDUsIEdURVNUXzEwX1RVUExFXyhUKSA+IHsKKyAgdHlwZWRlZiBUNSB0
eXBlOworfTsKKwordGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18oVCk+CitzdHJ1Y3QgVHVw
bGVFbGVtZW50PHRydWUsIDYsIEdURVNUXzEwX1RVUExFXyhUKSA+IHsKKyAgdHlwZWRlZiBUNiB0
eXBlOworfTsKKwordGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18oVCk+CitzdHJ1Y3QgVHVw
bGVFbGVtZW50PHRydWUsIDcsIEdURVNUXzEwX1RVUExFXyhUKSA+IHsKKyAgdHlwZWRlZiBUNyB0
eXBlOworfTsKKwordGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18oVCk+CitzdHJ1Y3QgVHVw
bGVFbGVtZW50PHRydWUsIDgsIEdURVNUXzEwX1RVUExFXyhUKSA+IHsKKyAgdHlwZWRlZiBUOCB0
eXBlOworfTsKKwordGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18oVCk+CitzdHJ1Y3QgVHVw
bGVFbGVtZW50PHRydWUsIDksIEdURVNUXzEwX1RVUExFXyhUKSA+IHsKKyAgdHlwZWRlZiBUOSB0
eXBlOworfTsKKworfSAgLy8gbmFtZXNwYWNlIGd0ZXN0X2ludGVybmFsCisKK3RlbXBsYXRlIDw+
CitjbGFzcyB0dXBsZTw+IHsKKyBwdWJsaWM6CisgIHR1cGxlKCkge30KKyAgdHVwbGUoY29uc3Qg
dHVwbGUmIC8qIHQgKi8pICB7fQorICB0dXBsZSYgb3BlcmF0b3I9KGNvbnN0IHR1cGxlJiAvKiB0
ICovKSB7IHJldHVybiAqdGhpczsgfQorfTsKKwordGVtcGxhdGUgPEdURVNUXzFfVFlQRU5BTUVT
XyhUKT4KK2NsYXNzIEdURVNUXzFfVFVQTEVfKFQpIHsKKyBwdWJsaWM6CisgIHRlbXBsYXRlIDxp
bnQgaz4gZnJpZW5kIGNsYXNzIGd0ZXN0X2ludGVybmFsOjpHZXQ7CisKKyAgdHVwbGUoKSA6IGYw
XygpIHt9CisKKyAgZXhwbGljaXQgdHVwbGUoR1RFU1RfQllfUkVGXyhUMCkgZjApIDogZjBfKGYw
KSB7fQorCisgIHR1cGxlKGNvbnN0IHR1cGxlJiB0KSA6IGYwXyh0LmYwXykge30KKworICB0ZW1w
bGF0ZSA8R1RFU1RfMV9UWVBFTkFNRVNfKFUpPgorICB0dXBsZShjb25zdCBHVEVTVF8xX1RVUExF
XyhVKSYgdCkgOiBmMF8odC5mMF8pIHt9CisKKyAgdHVwbGUmIG9wZXJhdG9yPShjb25zdCB0dXBs
ZSYgdCkgeyByZXR1cm4gQ29weUZyb20odCk7IH0KKworICB0ZW1wbGF0ZSA8R1RFU1RfMV9UWVBF
TkFNRVNfKFUpPgorICB0dXBsZSYgb3BlcmF0b3I9KGNvbnN0IEdURVNUXzFfVFVQTEVfKFUpJiB0
KSB7CisgICAgcmV0dXJuIENvcHlGcm9tKHQpOworICB9CisKKyAgR1RFU1RfREVDTEFSRV9UVVBM
RV9BU19GUklFTkRfCisKKyAgdGVtcGxhdGUgPEdURVNUXzFfVFlQRU5BTUVTXyhVKT4KKyAgdHVw
bGUmIENvcHlGcm9tKGNvbnN0IEdURVNUXzFfVFVQTEVfKFUpJiB0KSB7CisgICAgZjBfID0gdC5m
MF87CisgICAgcmV0dXJuICp0aGlzOworICB9CisKKyAgVDAgZjBfOworfTsKKwordGVtcGxhdGUg
PEdURVNUXzJfVFlQRU5BTUVTXyhUKT4KK2NsYXNzIEdURVNUXzJfVFVQTEVfKFQpIHsKKyBwdWJs
aWM6CisgIHRlbXBsYXRlIDxpbnQgaz4gZnJpZW5kIGNsYXNzIGd0ZXN0X2ludGVybmFsOjpHZXQ7
CisKKyAgdHVwbGUoKSA6IGYwXygpLCBmMV8oKSB7fQorCisgIGV4cGxpY2l0IHR1cGxlKEdURVNU
X0JZX1JFRl8oVDApIGYwLCBHVEVTVF9CWV9SRUZfKFQxKSBmMSkgOiBmMF8oZjApLAorICAgICAg
ZjFfKGYxKSB7fQorCisgIHR1cGxlKGNvbnN0IHR1cGxlJiB0KSA6IGYwXyh0LmYwXyksIGYxXyh0
LmYxXykge30KKworICB0ZW1wbGF0ZSA8R1RFU1RfMl9UWVBFTkFNRVNfKFUpPgorICB0dXBsZShj
b25zdCBHVEVTVF8yX1RVUExFXyhVKSYgdCkgOiBmMF8odC5mMF8pLCBmMV8odC5mMV8pIHt9Cisg
IHRlbXBsYXRlIDx0eXBlbmFtZSBVMCwgdHlwZW5hbWUgVTE+CisgIHR1cGxlKGNvbnN0IDo6c3Rk
OjpwYWlyPFUwLCBVMT4mIHApIDogZjBfKHAuZmlyc3QpLCBmMV8ocC5zZWNvbmQpIHt9CisKKyAg
dHVwbGUmIG9wZXJhdG9yPShjb25zdCB0dXBsZSYgdCkgeyByZXR1cm4gQ29weUZyb20odCk7IH0K
KworICB0ZW1wbGF0ZSA8R1RFU1RfMl9UWVBFTkFNRVNfKFUpPgorICB0dXBsZSYgb3BlcmF0b3I9
KGNvbnN0IEdURVNUXzJfVFVQTEVfKFUpJiB0KSB7CisgICAgcmV0dXJuIENvcHlGcm9tKHQpOwor
ICB9CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBVMCwgdHlwZW5hbWUgVTE+CisgIHR1cGxlJiBvcGVy
YXRvcj0oY29uc3QgOjpzdGQ6OnBhaXI8VTAsIFUxPiYgcCkgeworICAgIGYwXyA9IHAuZmlyc3Q7
CisgICAgZjFfID0gcC5zZWNvbmQ7CisgICAgcmV0dXJuICp0aGlzOworICB9CisKKyAgR1RFU1Rf
REVDTEFSRV9UVVBMRV9BU19GUklFTkRfCisKKyAgdGVtcGxhdGUgPEdURVNUXzJfVFlQRU5BTUVT
XyhVKT4KKyAgdHVwbGUmIENvcHlGcm9tKGNvbnN0IEdURVNUXzJfVFVQTEVfKFUpJiB0KSB7Cisg
ICAgZjBfID0gdC5mMF87CisgICAgZjFfID0gdC5mMV87CisgICAgcmV0dXJuICp0aGlzOworICB9
CisKKyAgVDAgZjBfOworICBUMSBmMV87Cit9OworCit0ZW1wbGF0ZSA8R1RFU1RfM19UWVBFTkFN
RVNfKFQpPgorY2xhc3MgR1RFU1RfM19UVVBMRV8oVCkgeworIHB1YmxpYzoKKyAgdGVtcGxhdGUg
PGludCBrPiBmcmllbmQgY2xhc3MgZ3Rlc3RfaW50ZXJuYWw6OkdldDsKKworICB0dXBsZSgpIDog
ZjBfKCksIGYxXygpLCBmMl8oKSB7fQorCisgIGV4cGxpY2l0IHR1cGxlKEdURVNUX0JZX1JFRl8o
VDApIGYwLCBHVEVTVF9CWV9SRUZfKFQxKSBmMSwKKyAgICAgIEdURVNUX0JZX1JFRl8oVDIpIGYy
KSA6IGYwXyhmMCksIGYxXyhmMSksIGYyXyhmMikge30KKworICB0dXBsZShjb25zdCB0dXBsZSYg
dCkgOiBmMF8odC5mMF8pLCBmMV8odC5mMV8pLCBmMl8odC5mMl8pIHt9CisKKyAgdGVtcGxhdGUg
PEdURVNUXzNfVFlQRU5BTUVTXyhVKT4KKyAgdHVwbGUoY29uc3QgR1RFU1RfM19UVVBMRV8oVSkm
IHQpIDogZjBfKHQuZjBfKSwgZjFfKHQuZjFfKSwgZjJfKHQuZjJfKSB7fQorCisgIHR1cGxlJiBv
cGVyYXRvcj0oY29uc3QgdHVwbGUmIHQpIHsgcmV0dXJuIENvcHlGcm9tKHQpOyB9CisKKyAgdGVt
cGxhdGUgPEdURVNUXzNfVFlQRU5BTUVTXyhVKT4KKyAgdHVwbGUmIG9wZXJhdG9yPShjb25zdCBH
VEVTVF8zX1RVUExFXyhVKSYgdCkgeworICAgIHJldHVybiBDb3B5RnJvbSh0KTsKKyAgfQorCisg
IEdURVNUX0RFQ0xBUkVfVFVQTEVfQVNfRlJJRU5EXworCisgIHRlbXBsYXRlIDxHVEVTVF8zX1RZ
UEVOQU1FU18oVSk+CisgIHR1cGxlJiBDb3B5RnJvbShjb25zdCBHVEVTVF8zX1RVUExFXyhVKSYg
dCkgeworICAgIGYwXyA9IHQuZjBfOworICAgIGYxXyA9IHQuZjFfOworICAgIGYyXyA9IHQuZjJf
OworICAgIHJldHVybiAqdGhpczsKKyAgfQorCisgIFQwIGYwXzsKKyAgVDEgZjFfOworICBUMiBm
Ml87Cit9OworCit0ZW1wbGF0ZSA8R1RFU1RfNF9UWVBFTkFNRVNfKFQpPgorY2xhc3MgR1RFU1Rf
NF9UVVBMRV8oVCkgeworIHB1YmxpYzoKKyAgdGVtcGxhdGUgPGludCBrPiBmcmllbmQgY2xhc3Mg
Z3Rlc3RfaW50ZXJuYWw6OkdldDsKKworICB0dXBsZSgpIDogZjBfKCksIGYxXygpLCBmMl8oKSwg
ZjNfKCkge30KKworICBleHBsaWNpdCB0dXBsZShHVEVTVF9CWV9SRUZfKFQwKSBmMCwgR1RFU1Rf
QllfUkVGXyhUMSkgZjEsCisgICAgICBHVEVTVF9CWV9SRUZfKFQyKSBmMiwgR1RFU1RfQllfUkVG
XyhUMykgZjMpIDogZjBfKGYwKSwgZjFfKGYxKSwgZjJfKGYyKSwKKyAgICAgIGYzXyhmMykge30K
KworICB0dXBsZShjb25zdCB0dXBsZSYgdCkgOiBmMF8odC5mMF8pLCBmMV8odC5mMV8pLCBmMl8o
dC5mMl8pLCBmM18odC5mM18pIHt9CisKKyAgdGVtcGxhdGUgPEdURVNUXzRfVFlQRU5BTUVTXyhV
KT4KKyAgdHVwbGUoY29uc3QgR1RFU1RfNF9UVVBMRV8oVSkmIHQpIDogZjBfKHQuZjBfKSwgZjFf
KHQuZjFfKSwgZjJfKHQuZjJfKSwKKyAgICAgIGYzXyh0LmYzXykge30KKworICB0dXBsZSYgb3Bl
cmF0b3I9KGNvbnN0IHR1cGxlJiB0KSB7IHJldHVybiBDb3B5RnJvbSh0KTsgfQorCisgIHRlbXBs
YXRlIDxHVEVTVF80X1RZUEVOQU1FU18oVSk+CisgIHR1cGxlJiBvcGVyYXRvcj0oY29uc3QgR1RF
U1RfNF9UVVBMRV8oVSkmIHQpIHsKKyAgICByZXR1cm4gQ29weUZyb20odCk7CisgIH0KKworICBH
VEVTVF9ERUNMQVJFX1RVUExFX0FTX0ZSSUVORF8KKworICB0ZW1wbGF0ZSA8R1RFU1RfNF9UWVBF
TkFNRVNfKFUpPgorICB0dXBsZSYgQ29weUZyb20oY29uc3QgR1RFU1RfNF9UVVBMRV8oVSkmIHQp
IHsKKyAgICBmMF8gPSB0LmYwXzsKKyAgICBmMV8gPSB0LmYxXzsKKyAgICBmMl8gPSB0LmYyXzsK
KyAgICBmM18gPSB0LmYzXzsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKworICBUMCBmMF87Cisg
IFQxIGYxXzsKKyAgVDIgZjJfOworICBUMyBmM187Cit9OworCit0ZW1wbGF0ZSA8R1RFU1RfNV9U
WVBFTkFNRVNfKFQpPgorY2xhc3MgR1RFU1RfNV9UVVBMRV8oVCkgeworIHB1YmxpYzoKKyAgdGVt
cGxhdGUgPGludCBrPiBmcmllbmQgY2xhc3MgZ3Rlc3RfaW50ZXJuYWw6OkdldDsKKworICB0dXBs
ZSgpIDogZjBfKCksIGYxXygpLCBmMl8oKSwgZjNfKCksIGY0XygpIHt9CisKKyAgZXhwbGljaXQg
dHVwbGUoR1RFU1RfQllfUkVGXyhUMCkgZjAsIEdURVNUX0JZX1JFRl8oVDEpIGYxLAorICAgICAg
R1RFU1RfQllfUkVGXyhUMikgZjIsIEdURVNUX0JZX1JFRl8oVDMpIGYzLAorICAgICAgR1RFU1Rf
QllfUkVGXyhUNCkgZjQpIDogZjBfKGYwKSwgZjFfKGYxKSwgZjJfKGYyKSwgZjNfKGYzKSwgZjRf
KGY0KSB7fQorCisgIHR1cGxlKGNvbnN0IHR1cGxlJiB0KSA6IGYwXyh0LmYwXyksIGYxXyh0LmYx
XyksIGYyXyh0LmYyXyksIGYzXyh0LmYzXyksCisgICAgICBmNF8odC5mNF8pIHt9CisKKyAgdGVt
cGxhdGUgPEdURVNUXzVfVFlQRU5BTUVTXyhVKT4KKyAgdHVwbGUoY29uc3QgR1RFU1RfNV9UVVBM
RV8oVSkmIHQpIDogZjBfKHQuZjBfKSwgZjFfKHQuZjFfKSwgZjJfKHQuZjJfKSwKKyAgICAgIGYz
Xyh0LmYzXyksIGY0Xyh0LmY0Xykge30KKworICB0dXBsZSYgb3BlcmF0b3I9KGNvbnN0IHR1cGxl
JiB0KSB7IHJldHVybiBDb3B5RnJvbSh0KTsgfQorCisgIHRlbXBsYXRlIDxHVEVTVF81X1RZUEVO
QU1FU18oVSk+CisgIHR1cGxlJiBvcGVyYXRvcj0oY29uc3QgR1RFU1RfNV9UVVBMRV8oVSkmIHQp
IHsKKyAgICByZXR1cm4gQ29weUZyb20odCk7CisgIH0KKworICBHVEVTVF9ERUNMQVJFX1RVUExF
X0FTX0ZSSUVORF8KKworICB0ZW1wbGF0ZSA8R1RFU1RfNV9UWVBFTkFNRVNfKFUpPgorICB0dXBs
ZSYgQ29weUZyb20oY29uc3QgR1RFU1RfNV9UVVBMRV8oVSkmIHQpIHsKKyAgICBmMF8gPSB0LmYw
XzsKKyAgICBmMV8gPSB0LmYxXzsKKyAgICBmMl8gPSB0LmYyXzsKKyAgICBmM18gPSB0LmYzXzsK
KyAgICBmNF8gPSB0LmY0XzsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKworICBUMCBmMF87Cisg
IFQxIGYxXzsKKyAgVDIgZjJfOworICBUMyBmM187CisgIFQ0IGY0XzsKK307CisKK3RlbXBsYXRl
IDxHVEVTVF82X1RZUEVOQU1FU18oVCk+CitjbGFzcyBHVEVTVF82X1RVUExFXyhUKSB7CisgcHVi
bGljOgorICB0ZW1wbGF0ZSA8aW50IGs+IGZyaWVuZCBjbGFzcyBndGVzdF9pbnRlcm5hbDo6R2V0
OworCisgIHR1cGxlKCkgOiBmMF8oKSwgZjFfKCksIGYyXygpLCBmM18oKSwgZjRfKCksIGY1Xygp
IHt9CisKKyAgZXhwbGljaXQgdHVwbGUoR1RFU1RfQllfUkVGXyhUMCkgZjAsIEdURVNUX0JZX1JF
Rl8oVDEpIGYxLAorICAgICAgR1RFU1RfQllfUkVGXyhUMikgZjIsIEdURVNUX0JZX1JFRl8oVDMp
IGYzLCBHVEVTVF9CWV9SRUZfKFQ0KSBmNCwKKyAgICAgIEdURVNUX0JZX1JFRl8oVDUpIGY1KSA6
IGYwXyhmMCksIGYxXyhmMSksIGYyXyhmMiksIGYzXyhmMyksIGY0XyhmNCksCisgICAgICBmNV8o
ZjUpIHt9CisKKyAgdHVwbGUoY29uc3QgdHVwbGUmIHQpIDogZjBfKHQuZjBfKSwgZjFfKHQuZjFf
KSwgZjJfKHQuZjJfKSwgZjNfKHQuZjNfKSwKKyAgICAgIGY0Xyh0LmY0XyksIGY1Xyh0LmY1Xykg
e30KKworICB0ZW1wbGF0ZSA8R1RFU1RfNl9UWVBFTkFNRVNfKFUpPgorICB0dXBsZShjb25zdCBH
VEVTVF82X1RVUExFXyhVKSYgdCkgOiBmMF8odC5mMF8pLCBmMV8odC5mMV8pLCBmMl8odC5mMl8p
LAorICAgICAgZjNfKHQuZjNfKSwgZjRfKHQuZjRfKSwgZjVfKHQuZjVfKSB7fQorCisgIHR1cGxl
JiBvcGVyYXRvcj0oY29uc3QgdHVwbGUmIHQpIHsgcmV0dXJuIENvcHlGcm9tKHQpOyB9CisKKyAg
dGVtcGxhdGUgPEdURVNUXzZfVFlQRU5BTUVTXyhVKT4KKyAgdHVwbGUmIG9wZXJhdG9yPShjb25z
dCBHVEVTVF82X1RVUExFXyhVKSYgdCkgeworICAgIHJldHVybiBDb3B5RnJvbSh0KTsKKyAgfQor
CisgIEdURVNUX0RFQ0xBUkVfVFVQTEVfQVNfRlJJRU5EXworCisgIHRlbXBsYXRlIDxHVEVTVF82
X1RZUEVOQU1FU18oVSk+CisgIHR1cGxlJiBDb3B5RnJvbShjb25zdCBHVEVTVF82X1RVUExFXyhV
KSYgdCkgeworICAgIGYwXyA9IHQuZjBfOworICAgIGYxXyA9IHQuZjFfOworICAgIGYyXyA9IHQu
ZjJfOworICAgIGYzXyA9IHQuZjNfOworICAgIGY0XyA9IHQuZjRfOworICAgIGY1XyA9IHQuZjVf
OworICAgIHJldHVybiAqdGhpczsKKyAgfQorCisgIFQwIGYwXzsKKyAgVDEgZjFfOworICBUMiBm
Ml87CisgIFQzIGYzXzsKKyAgVDQgZjRfOworICBUNSBmNV87Cit9OworCit0ZW1wbGF0ZSA8R1RF
U1RfN19UWVBFTkFNRVNfKFQpPgorY2xhc3MgR1RFU1RfN19UVVBMRV8oVCkgeworIHB1YmxpYzoK
KyAgdGVtcGxhdGUgPGludCBrPiBmcmllbmQgY2xhc3MgZ3Rlc3RfaW50ZXJuYWw6OkdldDsKKwor
ICB0dXBsZSgpIDogZjBfKCksIGYxXygpLCBmMl8oKSwgZjNfKCksIGY0XygpLCBmNV8oKSwgZjZf
KCkge30KKworICBleHBsaWNpdCB0dXBsZShHVEVTVF9CWV9SRUZfKFQwKSBmMCwgR1RFU1RfQllf
UkVGXyhUMSkgZjEsCisgICAgICBHVEVTVF9CWV9SRUZfKFQyKSBmMiwgR1RFU1RfQllfUkVGXyhU
MykgZjMsIEdURVNUX0JZX1JFRl8oVDQpIGY0LAorICAgICAgR1RFU1RfQllfUkVGXyhUNSkgZjUs
IEdURVNUX0JZX1JFRl8oVDYpIGY2KSA6IGYwXyhmMCksIGYxXyhmMSksIGYyXyhmMiksCisgICAg
ICBmM18oZjMpLCBmNF8oZjQpLCBmNV8oZjUpLCBmNl8oZjYpIHt9CisKKyAgdHVwbGUoY29uc3Qg
dHVwbGUmIHQpIDogZjBfKHQuZjBfKSwgZjFfKHQuZjFfKSwgZjJfKHQuZjJfKSwgZjNfKHQuZjNf
KSwKKyAgICAgIGY0Xyh0LmY0XyksIGY1Xyh0LmY1XyksIGY2Xyh0LmY2Xykge30KKworICB0ZW1w
bGF0ZSA8R1RFU1RfN19UWVBFTkFNRVNfKFUpPgorICB0dXBsZShjb25zdCBHVEVTVF83X1RVUExF
XyhVKSYgdCkgOiBmMF8odC5mMF8pLCBmMV8odC5mMV8pLCBmMl8odC5mMl8pLAorICAgICAgZjNf
KHQuZjNfKSwgZjRfKHQuZjRfKSwgZjVfKHQuZjVfKSwgZjZfKHQuZjZfKSB7fQorCisgIHR1cGxl
JiBvcGVyYXRvcj0oY29uc3QgdHVwbGUmIHQpIHsgcmV0dXJuIENvcHlGcm9tKHQpOyB9CisKKyAg
dGVtcGxhdGUgPEdURVNUXzdfVFlQRU5BTUVTXyhVKT4KKyAgdHVwbGUmIG9wZXJhdG9yPShjb25z
dCBHVEVTVF83X1RVUExFXyhVKSYgdCkgeworICAgIHJldHVybiBDb3B5RnJvbSh0KTsKKyAgfQor
CisgIEdURVNUX0RFQ0xBUkVfVFVQTEVfQVNfRlJJRU5EXworCisgIHRlbXBsYXRlIDxHVEVTVF83
X1RZUEVOQU1FU18oVSk+CisgIHR1cGxlJiBDb3B5RnJvbShjb25zdCBHVEVTVF83X1RVUExFXyhV
KSYgdCkgeworICAgIGYwXyA9IHQuZjBfOworICAgIGYxXyA9IHQuZjFfOworICAgIGYyXyA9IHQu
ZjJfOworICAgIGYzXyA9IHQuZjNfOworICAgIGY0XyA9IHQuZjRfOworICAgIGY1XyA9IHQuZjVf
OworICAgIGY2XyA9IHQuZjZfOworICAgIHJldHVybiAqdGhpczsKKyAgfQorCisgIFQwIGYwXzsK
KyAgVDEgZjFfOworICBUMiBmMl87CisgIFQzIGYzXzsKKyAgVDQgZjRfOworICBUNSBmNV87Cisg
IFQ2IGY2XzsKK307CisKK3RlbXBsYXRlIDxHVEVTVF84X1RZUEVOQU1FU18oVCk+CitjbGFzcyBH
VEVTVF84X1RVUExFXyhUKSB7CisgcHVibGljOgorICB0ZW1wbGF0ZSA8aW50IGs+IGZyaWVuZCBj
bGFzcyBndGVzdF9pbnRlcm5hbDo6R2V0OworCisgIHR1cGxlKCkgOiBmMF8oKSwgZjFfKCksIGYy
XygpLCBmM18oKSwgZjRfKCksIGY1XygpLCBmNl8oKSwgZjdfKCkge30KKworICBleHBsaWNpdCB0
dXBsZShHVEVTVF9CWV9SRUZfKFQwKSBmMCwgR1RFU1RfQllfUkVGXyhUMSkgZjEsCisgICAgICBH
VEVTVF9CWV9SRUZfKFQyKSBmMiwgR1RFU1RfQllfUkVGXyhUMykgZjMsIEdURVNUX0JZX1JFRl8o
VDQpIGY0LAorICAgICAgR1RFU1RfQllfUkVGXyhUNSkgZjUsIEdURVNUX0JZX1JFRl8oVDYpIGY2
LAorICAgICAgR1RFU1RfQllfUkVGXyhUNykgZjcpIDogZjBfKGYwKSwgZjFfKGYxKSwgZjJfKGYy
KSwgZjNfKGYzKSwgZjRfKGY0KSwKKyAgICAgIGY1XyhmNSksIGY2XyhmNiksIGY3XyhmNykge30K
KworICB0dXBsZShjb25zdCB0dXBsZSYgdCkgOiBmMF8odC5mMF8pLCBmMV8odC5mMV8pLCBmMl8o
dC5mMl8pLCBmM18odC5mM18pLAorICAgICAgZjRfKHQuZjRfKSwgZjVfKHQuZjVfKSwgZjZfKHQu
ZjZfKSwgZjdfKHQuZjdfKSB7fQorCisgIHRlbXBsYXRlIDxHVEVTVF84X1RZUEVOQU1FU18oVSk+
CisgIHR1cGxlKGNvbnN0IEdURVNUXzhfVFVQTEVfKFUpJiB0KSA6IGYwXyh0LmYwXyksIGYxXyh0
LmYxXyksIGYyXyh0LmYyXyksCisgICAgICBmM18odC5mM18pLCBmNF8odC5mNF8pLCBmNV8odC5m
NV8pLCBmNl8odC5mNl8pLCBmN18odC5mN18pIHt9CisKKyAgdHVwbGUmIG9wZXJhdG9yPShjb25z
dCB0dXBsZSYgdCkgeyByZXR1cm4gQ29weUZyb20odCk7IH0KKworICB0ZW1wbGF0ZSA8R1RFU1Rf
OF9UWVBFTkFNRVNfKFUpPgorICB0dXBsZSYgb3BlcmF0b3I9KGNvbnN0IEdURVNUXzhfVFVQTEVf
KFUpJiB0KSB7CisgICAgcmV0dXJuIENvcHlGcm9tKHQpOworICB9CisKKyAgR1RFU1RfREVDTEFS
RV9UVVBMRV9BU19GUklFTkRfCisKKyAgdGVtcGxhdGUgPEdURVNUXzhfVFlQRU5BTUVTXyhVKT4K
KyAgdHVwbGUmIENvcHlGcm9tKGNvbnN0IEdURVNUXzhfVFVQTEVfKFUpJiB0KSB7CisgICAgZjBf
ID0gdC5mMF87CisgICAgZjFfID0gdC5mMV87CisgICAgZjJfID0gdC5mMl87CisgICAgZjNfID0g
dC5mM187CisgICAgZjRfID0gdC5mNF87CisgICAgZjVfID0gdC5mNV87CisgICAgZjZfID0gdC5m
Nl87CisgICAgZjdfID0gdC5mN187CisgICAgcmV0dXJuICp0aGlzOworICB9CisKKyAgVDAgZjBf
OworICBUMSBmMV87CisgIFQyIGYyXzsKKyAgVDMgZjNfOworICBUNCBmNF87CisgIFQ1IGY1XzsK
KyAgVDYgZjZfOworICBUNyBmN187Cit9OworCit0ZW1wbGF0ZSA8R1RFU1RfOV9UWVBFTkFNRVNf
KFQpPgorY2xhc3MgR1RFU1RfOV9UVVBMRV8oVCkgeworIHB1YmxpYzoKKyAgdGVtcGxhdGUgPGlu
dCBrPiBmcmllbmQgY2xhc3MgZ3Rlc3RfaW50ZXJuYWw6OkdldDsKKworICB0dXBsZSgpIDogZjBf
KCksIGYxXygpLCBmMl8oKSwgZjNfKCksIGY0XygpLCBmNV8oKSwgZjZfKCksIGY3XygpLCBmOF8o
KSB7fQorCisgIGV4cGxpY2l0IHR1cGxlKEdURVNUX0JZX1JFRl8oVDApIGYwLCBHVEVTVF9CWV9S
RUZfKFQxKSBmMSwKKyAgICAgIEdURVNUX0JZX1JFRl8oVDIpIGYyLCBHVEVTVF9CWV9SRUZfKFQz
KSBmMywgR1RFU1RfQllfUkVGXyhUNCkgZjQsCisgICAgICBHVEVTVF9CWV9SRUZfKFQ1KSBmNSwg
R1RFU1RfQllfUkVGXyhUNikgZjYsIEdURVNUX0JZX1JFRl8oVDcpIGY3LAorICAgICAgR1RFU1Rf
QllfUkVGXyhUOCkgZjgpIDogZjBfKGYwKSwgZjFfKGYxKSwgZjJfKGYyKSwgZjNfKGYzKSwgZjRf
KGY0KSwKKyAgICAgIGY1XyhmNSksIGY2XyhmNiksIGY3XyhmNyksIGY4XyhmOCkge30KKworICB0
dXBsZShjb25zdCB0dXBsZSYgdCkgOiBmMF8odC5mMF8pLCBmMV8odC5mMV8pLCBmMl8odC5mMl8p
LCBmM18odC5mM18pLAorICAgICAgZjRfKHQuZjRfKSwgZjVfKHQuZjVfKSwgZjZfKHQuZjZfKSwg
ZjdfKHQuZjdfKSwgZjhfKHQuZjhfKSB7fQorCisgIHRlbXBsYXRlIDxHVEVTVF85X1RZUEVOQU1F
U18oVSk+CisgIHR1cGxlKGNvbnN0IEdURVNUXzlfVFVQTEVfKFUpJiB0KSA6IGYwXyh0LmYwXyks
IGYxXyh0LmYxXyksIGYyXyh0LmYyXyksCisgICAgICBmM18odC5mM18pLCBmNF8odC5mNF8pLCBm
NV8odC5mNV8pLCBmNl8odC5mNl8pLCBmN18odC5mN18pLCBmOF8odC5mOF8pIHt9CisKKyAgdHVw
bGUmIG9wZXJhdG9yPShjb25zdCB0dXBsZSYgdCkgeyByZXR1cm4gQ29weUZyb20odCk7IH0KKwor
ICB0ZW1wbGF0ZSA8R1RFU1RfOV9UWVBFTkFNRVNfKFUpPgorICB0dXBsZSYgb3BlcmF0b3I9KGNv
bnN0IEdURVNUXzlfVFVQTEVfKFUpJiB0KSB7CisgICAgcmV0dXJuIENvcHlGcm9tKHQpOworICB9
CisKKyAgR1RFU1RfREVDTEFSRV9UVVBMRV9BU19GUklFTkRfCisKKyAgdGVtcGxhdGUgPEdURVNU
XzlfVFlQRU5BTUVTXyhVKT4KKyAgdHVwbGUmIENvcHlGcm9tKGNvbnN0IEdURVNUXzlfVFVQTEVf
KFUpJiB0KSB7CisgICAgZjBfID0gdC5mMF87CisgICAgZjFfID0gdC5mMV87CisgICAgZjJfID0g
dC5mMl87CisgICAgZjNfID0gdC5mM187CisgICAgZjRfID0gdC5mNF87CisgICAgZjVfID0gdC5m
NV87CisgICAgZjZfID0gdC5mNl87CisgICAgZjdfID0gdC5mN187CisgICAgZjhfID0gdC5mOF87
CisgICAgcmV0dXJuICp0aGlzOworICB9CisKKyAgVDAgZjBfOworICBUMSBmMV87CisgIFQyIGYy
XzsKKyAgVDMgZjNfOworICBUNCBmNF87CisgIFQ1IGY1XzsKKyAgVDYgZjZfOworICBUNyBmN187
CisgIFQ4IGY4XzsKK307CisKK3RlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgorY2xh
c3MgdHVwbGUgeworIHB1YmxpYzoKKyAgdGVtcGxhdGUgPGludCBrPiBmcmllbmQgY2xhc3MgZ3Rl
c3RfaW50ZXJuYWw6OkdldDsKKworICB0dXBsZSgpIDogZjBfKCksIGYxXygpLCBmMl8oKSwgZjNf
KCksIGY0XygpLCBmNV8oKSwgZjZfKCksIGY3XygpLCBmOF8oKSwKKyAgICAgIGY5XygpIHt9CisK
KyAgZXhwbGljaXQgdHVwbGUoR1RFU1RfQllfUkVGXyhUMCkgZjAsIEdURVNUX0JZX1JFRl8oVDEp
IGYxLAorICAgICAgR1RFU1RfQllfUkVGXyhUMikgZjIsIEdURVNUX0JZX1JFRl8oVDMpIGYzLCBH
VEVTVF9CWV9SRUZfKFQ0KSBmNCwKKyAgICAgIEdURVNUX0JZX1JFRl8oVDUpIGY1LCBHVEVTVF9C
WV9SRUZfKFQ2KSBmNiwgR1RFU1RfQllfUkVGXyhUNykgZjcsCisgICAgICBHVEVTVF9CWV9SRUZf
KFQ4KSBmOCwgR1RFU1RfQllfUkVGXyhUOSkgZjkpIDogZjBfKGYwKSwgZjFfKGYxKSwgZjJfKGYy
KSwKKyAgICAgIGYzXyhmMyksIGY0XyhmNCksIGY1XyhmNSksIGY2XyhmNiksIGY3XyhmNyksIGY4
XyhmOCksIGY5XyhmOSkge30KKworICB0dXBsZShjb25zdCB0dXBsZSYgdCkgOiBmMF8odC5mMF8p
LCBmMV8odC5mMV8pLCBmMl8odC5mMl8pLCBmM18odC5mM18pLAorICAgICAgZjRfKHQuZjRfKSwg
ZjVfKHQuZjVfKSwgZjZfKHQuZjZfKSwgZjdfKHQuZjdfKSwgZjhfKHQuZjhfKSwgZjlfKHQuZjlf
KSB7fQorCisgIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFUpPgorICB0dXBsZShjb25z
dCBHVEVTVF8xMF9UVVBMRV8oVSkmIHQpIDogZjBfKHQuZjBfKSwgZjFfKHQuZjFfKSwgZjJfKHQu
ZjJfKSwKKyAgICAgIGYzXyh0LmYzXyksIGY0Xyh0LmY0XyksIGY1Xyh0LmY1XyksIGY2Xyh0LmY2
XyksIGY3Xyh0LmY3XyksIGY4Xyh0LmY4XyksCisgICAgICBmOV8odC5mOV8pIHt9CisKKyAgdHVw
bGUmIG9wZXJhdG9yPShjb25zdCB0dXBsZSYgdCkgeyByZXR1cm4gQ29weUZyb20odCk7IH0KKwor
ICB0ZW1wbGF0ZSA8R1RFU1RfMTBfVFlQRU5BTUVTXyhVKT4KKyAgdHVwbGUmIG9wZXJhdG9yPShj
b25zdCBHVEVTVF8xMF9UVVBMRV8oVSkmIHQpIHsKKyAgICByZXR1cm4gQ29weUZyb20odCk7Cisg
IH0KKworICBHVEVTVF9ERUNMQVJFX1RVUExFX0FTX0ZSSUVORF8KKworICB0ZW1wbGF0ZSA8R1RF
U1RfMTBfVFlQRU5BTUVTXyhVKT4KKyAgdHVwbGUmIENvcHlGcm9tKGNvbnN0IEdURVNUXzEwX1RV
UExFXyhVKSYgdCkgeworICAgIGYwXyA9IHQuZjBfOworICAgIGYxXyA9IHQuZjFfOworICAgIGYy
XyA9IHQuZjJfOworICAgIGYzXyA9IHQuZjNfOworICAgIGY0XyA9IHQuZjRfOworICAgIGY1XyA9
IHQuZjVfOworICAgIGY2XyA9IHQuZjZfOworICAgIGY3XyA9IHQuZjdfOworICAgIGY4XyA9IHQu
ZjhfOworICAgIGY5XyA9IHQuZjlfOworICAgIHJldHVybiAqdGhpczsKKyAgfQorCisgIFQwIGYw
XzsKKyAgVDEgZjFfOworICBUMiBmMl87CisgIFQzIGYzXzsKKyAgVDQgZjRfOworICBUNSBmNV87
CisgIFQ2IGY2XzsKKyAgVDcgZjdfOworICBUOCBmOF87CisgIFQ5IGY5XzsKK307CisKKy8vIDYu
MS4zLjIgVHVwbGUgY3JlYXRpb24gZnVuY3Rpb25zLgorCisvLyBLbm93biBsaW1pdGF0aW9uczog
d2UgZG9uJ3Qgc3VwcG9ydCBwYXNzaW5nIGFuCisvLyBzdGQ6OnRyMTo6cmVmZXJlbmNlX3dyYXBw
ZXI8VD4gdG8gbWFrZV90dXBsZSgpLiAgQW5kIHdlIGRvbid0CisvLyBpbXBsZW1lbnQgdGllKCku
CisKK2lubGluZSB0dXBsZTw+IG1ha2VfdHVwbGUoKSB7IHJldHVybiB0dXBsZTw+KCk7IH0KKwor
dGVtcGxhdGUgPEdURVNUXzFfVFlQRU5BTUVTXyhUKT4KK2lubGluZSBHVEVTVF8xX1RVUExFXyhU
KSBtYWtlX3R1cGxlKGNvbnN0IFQwJiBmMCkgeworICByZXR1cm4gR1RFU1RfMV9UVVBMRV8oVCko
ZjApOworfQorCit0ZW1wbGF0ZSA8R1RFU1RfMl9UWVBFTkFNRVNfKFQpPgoraW5saW5lIEdURVNU
XzJfVFVQTEVfKFQpIG1ha2VfdHVwbGUoY29uc3QgVDAmIGYwLCBjb25zdCBUMSYgZjEpIHsKKyAg
cmV0dXJuIEdURVNUXzJfVFVQTEVfKFQpKGYwLCBmMSk7Cit9CisKK3RlbXBsYXRlIDxHVEVTVF8z
X1RZUEVOQU1FU18oVCk+CitpbmxpbmUgR1RFU1RfM19UVVBMRV8oVCkgbWFrZV90dXBsZShjb25z
dCBUMCYgZjAsIGNvbnN0IFQxJiBmMSwgY29uc3QgVDImIGYyKSB7CisgIHJldHVybiBHVEVTVF8z
X1RVUExFXyhUKShmMCwgZjEsIGYyKTsKK30KKwordGVtcGxhdGUgPEdURVNUXzRfVFlQRU5BTUVT
XyhUKT4KK2lubGluZSBHVEVTVF80X1RVUExFXyhUKSBtYWtlX3R1cGxlKGNvbnN0IFQwJiBmMCwg
Y29uc3QgVDEmIGYxLCBjb25zdCBUMiYgZjIsCisgICAgY29uc3QgVDMmIGYzKSB7CisgIHJldHVy
biBHVEVTVF80X1RVUExFXyhUKShmMCwgZjEsIGYyLCBmMyk7Cit9CisKK3RlbXBsYXRlIDxHVEVT
VF81X1RZUEVOQU1FU18oVCk+CitpbmxpbmUgR1RFU1RfNV9UVVBMRV8oVCkgbWFrZV90dXBsZShj
b25zdCBUMCYgZjAsIGNvbnN0IFQxJiBmMSwgY29uc3QgVDImIGYyLAorICAgIGNvbnN0IFQzJiBm
MywgY29uc3QgVDQmIGY0KSB7CisgIHJldHVybiBHVEVTVF81X1RVUExFXyhUKShmMCwgZjEsIGYy
LCBmMywgZjQpOworfQorCit0ZW1wbGF0ZSA8R1RFU1RfNl9UWVBFTkFNRVNfKFQpPgoraW5saW5l
IEdURVNUXzZfVFVQTEVfKFQpIG1ha2VfdHVwbGUoY29uc3QgVDAmIGYwLCBjb25zdCBUMSYgZjEs
IGNvbnN0IFQyJiBmMiwKKyAgICBjb25zdCBUMyYgZjMsIGNvbnN0IFQ0JiBmNCwgY29uc3QgVDUm
IGY1KSB7CisgIHJldHVybiBHVEVTVF82X1RVUExFXyhUKShmMCwgZjEsIGYyLCBmMywgZjQsIGY1
KTsKK30KKwordGVtcGxhdGUgPEdURVNUXzdfVFlQRU5BTUVTXyhUKT4KK2lubGluZSBHVEVTVF83
X1RVUExFXyhUKSBtYWtlX3R1cGxlKGNvbnN0IFQwJiBmMCwgY29uc3QgVDEmIGYxLCBjb25zdCBU
MiYgZjIsCisgICAgY29uc3QgVDMmIGYzLCBjb25zdCBUNCYgZjQsIGNvbnN0IFQ1JiBmNSwgY29u
c3QgVDYmIGY2KSB7CisgIHJldHVybiBHVEVTVF83X1RVUExFXyhUKShmMCwgZjEsIGYyLCBmMywg
ZjQsIGY1LCBmNik7Cit9CisKK3RlbXBsYXRlIDxHVEVTVF84X1RZUEVOQU1FU18oVCk+Citpbmxp
bmUgR1RFU1RfOF9UVVBMRV8oVCkgbWFrZV90dXBsZShjb25zdCBUMCYgZjAsIGNvbnN0IFQxJiBm
MSwgY29uc3QgVDImIGYyLAorICAgIGNvbnN0IFQzJiBmMywgY29uc3QgVDQmIGY0LCBjb25zdCBU
NSYgZjUsIGNvbnN0IFQ2JiBmNiwgY29uc3QgVDcmIGY3KSB7CisgIHJldHVybiBHVEVTVF84X1RV
UExFXyhUKShmMCwgZjEsIGYyLCBmMywgZjQsIGY1LCBmNiwgZjcpOworfQorCit0ZW1wbGF0ZSA8
R1RFU1RfOV9UWVBFTkFNRVNfKFQpPgoraW5saW5lIEdURVNUXzlfVFVQTEVfKFQpIG1ha2VfdHVw
bGUoY29uc3QgVDAmIGYwLCBjb25zdCBUMSYgZjEsIGNvbnN0IFQyJiBmMiwKKyAgICBjb25zdCBU
MyYgZjMsIGNvbnN0IFQ0JiBmNCwgY29uc3QgVDUmIGY1LCBjb25zdCBUNiYgZjYsIGNvbnN0IFQ3
JiBmNywKKyAgICBjb25zdCBUOCYgZjgpIHsKKyAgcmV0dXJuIEdURVNUXzlfVFVQTEVfKFQpKGYw
LCBmMSwgZjIsIGYzLCBmNCwgZjUsIGY2LCBmNywgZjgpOworfQorCit0ZW1wbGF0ZSA8R1RFU1Rf
MTBfVFlQRU5BTUVTXyhUKT4KK2lubGluZSBHVEVTVF8xMF9UVVBMRV8oVCkgbWFrZV90dXBsZShj
b25zdCBUMCYgZjAsIGNvbnN0IFQxJiBmMSwgY29uc3QgVDImIGYyLAorICAgIGNvbnN0IFQzJiBm
MywgY29uc3QgVDQmIGY0LCBjb25zdCBUNSYgZjUsIGNvbnN0IFQ2JiBmNiwgY29uc3QgVDcmIGY3
LAorICAgIGNvbnN0IFQ4JiBmOCwgY29uc3QgVDkmIGY5KSB7CisgIHJldHVybiBHVEVTVF8xMF9U
VVBMRV8oVCkoZjAsIGYxLCBmMiwgZjMsIGY0LCBmNSwgZjYsIGY3LCBmOCwgZjkpOworfQorCisv
LyA2LjEuMy4zIFR1cGxlIGhlbHBlciBjbGFzc2VzLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVw
bGU+IHN0cnVjdCB0dXBsZV9zaXplOworCit0ZW1wbGF0ZSA8R1RFU1RfMF9UWVBFTkFNRVNfKFQp
Pgorc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfMF9UVVBMRV8oVCkgPiB7CisgIHN0YXRpYyBjb25z
dCBpbnQgdmFsdWUgPSAwOworfTsKKwordGVtcGxhdGUgPEdURVNUXzFfVFlQRU5BTUVTXyhUKT4K
K3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXzFfVFVQTEVfKFQpID4geworICBzdGF0aWMgY29uc3Qg
aW50IHZhbHVlID0gMTsKK307CisKK3RlbXBsYXRlIDxHVEVTVF8yX1RZUEVOQU1FU18oVCk+Citz
dHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF8yX1RVUExFXyhUKSA+IHsKKyAgc3RhdGljIGNvbnN0IGlu
dCB2YWx1ZSA9IDI7Cit9OworCit0ZW1wbGF0ZSA8R1RFU1RfM19UWVBFTkFNRVNfKFQpPgorc3Ry
dWN0IHR1cGxlX3NpemU8R1RFU1RfM19UVVBMRV8oVCkgPiB7CisgIHN0YXRpYyBjb25zdCBpbnQg
dmFsdWUgPSAzOworfTsKKwordGVtcGxhdGUgPEdURVNUXzRfVFlQRU5BTUVTXyhUKT4KK3N0cnVj
dCB0dXBsZV9zaXplPEdURVNUXzRfVFVQTEVfKFQpID4geworICBzdGF0aWMgY29uc3QgaW50IHZh
bHVlID0gNDsKK307CisKK3RlbXBsYXRlIDxHVEVTVF81X1RZUEVOQU1FU18oVCk+CitzdHJ1Y3Qg
dHVwbGVfc2l6ZTxHVEVTVF81X1RVUExFXyhUKSA+IHsKKyAgc3RhdGljIGNvbnN0IGludCB2YWx1
ZSA9IDU7Cit9OworCit0ZW1wbGF0ZSA8R1RFU1RfNl9UWVBFTkFNRVNfKFQpPgorc3RydWN0IHR1
cGxlX3NpemU8R1RFU1RfNl9UVVBMRV8oVCkgPiB7CisgIHN0YXRpYyBjb25zdCBpbnQgdmFsdWUg
PSA2OworfTsKKwordGVtcGxhdGUgPEdURVNUXzdfVFlQRU5BTUVTXyhUKT4KK3N0cnVjdCB0dXBs
ZV9zaXplPEdURVNUXzdfVFVQTEVfKFQpID4geworICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0g
NzsKK307CisKK3RlbXBsYXRlIDxHVEVTVF84X1RZUEVOQU1FU18oVCk+CitzdHJ1Y3QgdHVwbGVf
c2l6ZTxHVEVTVF84X1RVUExFXyhUKSA+IHsKKyAgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDg7
Cit9OworCit0ZW1wbGF0ZSA8R1RFU1RfOV9UWVBFTkFNRVNfKFQpPgorc3RydWN0IHR1cGxlX3Np
emU8R1RFU1RfOV9UVVBMRV8oVCkgPiB7CisgIHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSA5Owor
fTsKKwordGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18oVCk+CitzdHJ1Y3QgdHVwbGVfc2l6
ZTxHVEVTVF8xMF9UVVBMRV8oVCkgPiB7CisgIHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAxMDsK
K307CisKK3RlbXBsYXRlIDxpbnQgaywgY2xhc3MgVHVwbGU+CitzdHJ1Y3QgdHVwbGVfZWxlbWVu
dCB7CisgIHR5cGVkZWYgdHlwZW5hbWUgZ3Rlc3RfaW50ZXJuYWw6OlR1cGxlRWxlbWVudDwKKyAg
ICAgIGsgPCAodHVwbGVfc2l6ZTxUdXBsZT46OnZhbHVlKSwgaywgVHVwbGU+Ojp0eXBlIHR5cGU7
Cit9OworCisjZGVmaW5lIEdURVNUX1RVUExFX0VMRU1FTlRfKGssIFR1cGxlKSB0eXBlbmFtZSB0
dXBsZV9lbGVtZW50PGssIFR1cGxlID46OnR5cGUKKworLy8gNi4xLjMuNCBFbGVtZW50IGFjY2Vz
cy4KKworbmFtZXNwYWNlIGd0ZXN0X2ludGVybmFsIHsKKwordGVtcGxhdGUgPD4KK2NsYXNzIEdl
dDwwPiB7CisgcHVibGljOgorICB0ZW1wbGF0ZSA8Y2xhc3MgVHVwbGU+CisgIHN0YXRpYyBHVEVT
VF9BRERfUkVGXyhHVEVTVF9UVVBMRV9FTEVNRU5UXygwLCBUdXBsZSkpCisgIEZpZWxkKFR1cGxl
JiB0KSB7IHJldHVybiB0LmYwXzsgfSAgLy8gTk9MSU5UCisKKyAgdGVtcGxhdGUgPGNsYXNzIFR1
cGxlPgorICBzdGF0aWMgR1RFU1RfQllfUkVGXyhHVEVTVF9UVVBMRV9FTEVNRU5UXygwLCBUdXBs
ZSkpCisgIENvbnN0RmllbGQoY29uc3QgVHVwbGUmIHQpIHsgcmV0dXJuIHQuZjBfOyB9Cit9Owor
Cit0ZW1wbGF0ZSA8PgorY2xhc3MgR2V0PDE+IHsKKyBwdWJsaWM6CisgIHRlbXBsYXRlIDxjbGFz
cyBUdXBsZT4KKyAgc3RhdGljIEdURVNUX0FERF9SRUZfKEdURVNUX1RVUExFX0VMRU1FTlRfKDEs
IFR1cGxlKSkKKyAgRmllbGQoVHVwbGUmIHQpIHsgcmV0dXJuIHQuZjFfOyB9ICAvLyBOT0xJTlQK
KworICB0ZW1wbGF0ZSA8Y2xhc3MgVHVwbGU+CisgIHN0YXRpYyBHVEVTVF9CWV9SRUZfKEdURVNU
X1RVUExFX0VMRU1FTlRfKDEsIFR1cGxlKSkKKyAgQ29uc3RGaWVsZChjb25zdCBUdXBsZSYgdCkg
eyByZXR1cm4gdC5mMV87IH0KK307CisKK3RlbXBsYXRlIDw+CitjbGFzcyBHZXQ8Mj4geworIHB1
YmxpYzoKKyAgdGVtcGxhdGUgPGNsYXNzIFR1cGxlPgorICBzdGF0aWMgR1RFU1RfQUREX1JFRl8o
R1RFU1RfVFVQTEVfRUxFTUVOVF8oMiwgVHVwbGUpKQorICBGaWVsZChUdXBsZSYgdCkgeyByZXR1
cm4gdC5mMl87IH0gIC8vIE5PTElOVAorCisgIHRlbXBsYXRlIDxjbGFzcyBUdXBsZT4KKyAgc3Rh
dGljIEdURVNUX0JZX1JFRl8oR1RFU1RfVFVQTEVfRUxFTUVOVF8oMiwgVHVwbGUpKQorICBDb25z
dEZpZWxkKGNvbnN0IFR1cGxlJiB0KSB7IHJldHVybiB0LmYyXzsgfQorfTsKKwordGVtcGxhdGUg
PD4KK2NsYXNzIEdldDwzPiB7CisgcHVibGljOgorICB0ZW1wbGF0ZSA8Y2xhc3MgVHVwbGU+Cisg
IHN0YXRpYyBHVEVTVF9BRERfUkVGXyhHVEVTVF9UVVBMRV9FTEVNRU5UXygzLCBUdXBsZSkpCisg
IEZpZWxkKFR1cGxlJiB0KSB7IHJldHVybiB0LmYzXzsgfSAgLy8gTk9MSU5UCisKKyAgdGVtcGxh
dGUgPGNsYXNzIFR1cGxlPgorICBzdGF0aWMgR1RFU1RfQllfUkVGXyhHVEVTVF9UVVBMRV9FTEVN
RU5UXygzLCBUdXBsZSkpCisgIENvbnN0RmllbGQoY29uc3QgVHVwbGUmIHQpIHsgcmV0dXJuIHQu
ZjNfOyB9Cit9OworCit0ZW1wbGF0ZSA8PgorY2xhc3MgR2V0PDQ+IHsKKyBwdWJsaWM6CisgIHRl
bXBsYXRlIDxjbGFzcyBUdXBsZT4KKyAgc3RhdGljIEdURVNUX0FERF9SRUZfKEdURVNUX1RVUExF
X0VMRU1FTlRfKDQsIFR1cGxlKSkKKyAgRmllbGQoVHVwbGUmIHQpIHsgcmV0dXJuIHQuZjRfOyB9
ICAvLyBOT0xJTlQKKworICB0ZW1wbGF0ZSA8Y2xhc3MgVHVwbGU+CisgIHN0YXRpYyBHVEVTVF9C
WV9SRUZfKEdURVNUX1RVUExFX0VMRU1FTlRfKDQsIFR1cGxlKSkKKyAgQ29uc3RGaWVsZChjb25z
dCBUdXBsZSYgdCkgeyByZXR1cm4gdC5mNF87IH0KK307CisKK3RlbXBsYXRlIDw+CitjbGFzcyBH
ZXQ8NT4geworIHB1YmxpYzoKKyAgdGVtcGxhdGUgPGNsYXNzIFR1cGxlPgorICBzdGF0aWMgR1RF
U1RfQUREX1JFRl8oR1RFU1RfVFVQTEVfRUxFTUVOVF8oNSwgVHVwbGUpKQorICBGaWVsZChUdXBs
ZSYgdCkgeyByZXR1cm4gdC5mNV87IH0gIC8vIE5PTElOVAorCisgIHRlbXBsYXRlIDxjbGFzcyBU
dXBsZT4KKyAgc3RhdGljIEdURVNUX0JZX1JFRl8oR1RFU1RfVFVQTEVfRUxFTUVOVF8oNSwgVHVw
bGUpKQorICBDb25zdEZpZWxkKGNvbnN0IFR1cGxlJiB0KSB7IHJldHVybiB0LmY1XzsgfQorfTsK
KwordGVtcGxhdGUgPD4KK2NsYXNzIEdldDw2PiB7CisgcHVibGljOgorICB0ZW1wbGF0ZSA8Y2xh
c3MgVHVwbGU+CisgIHN0YXRpYyBHVEVTVF9BRERfUkVGXyhHVEVTVF9UVVBMRV9FTEVNRU5UXyg2
LCBUdXBsZSkpCisgIEZpZWxkKFR1cGxlJiB0KSB7IHJldHVybiB0LmY2XzsgfSAgLy8gTk9MSU5U
CisKKyAgdGVtcGxhdGUgPGNsYXNzIFR1cGxlPgorICBzdGF0aWMgR1RFU1RfQllfUkVGXyhHVEVT
VF9UVVBMRV9FTEVNRU5UXyg2LCBUdXBsZSkpCisgIENvbnN0RmllbGQoY29uc3QgVHVwbGUmIHQp
IHsgcmV0dXJuIHQuZjZfOyB9Cit9OworCit0ZW1wbGF0ZSA8PgorY2xhc3MgR2V0PDc+IHsKKyBw
dWJsaWM6CisgIHRlbXBsYXRlIDxjbGFzcyBUdXBsZT4KKyAgc3RhdGljIEdURVNUX0FERF9SRUZf
KEdURVNUX1RVUExFX0VMRU1FTlRfKDcsIFR1cGxlKSkKKyAgRmllbGQoVHVwbGUmIHQpIHsgcmV0
dXJuIHQuZjdfOyB9ICAvLyBOT0xJTlQKKworICB0ZW1wbGF0ZSA8Y2xhc3MgVHVwbGU+CisgIHN0
YXRpYyBHVEVTVF9CWV9SRUZfKEdURVNUX1RVUExFX0VMRU1FTlRfKDcsIFR1cGxlKSkKKyAgQ29u
c3RGaWVsZChjb25zdCBUdXBsZSYgdCkgeyByZXR1cm4gdC5mN187IH0KK307CisKK3RlbXBsYXRl
IDw+CitjbGFzcyBHZXQ8OD4geworIHB1YmxpYzoKKyAgdGVtcGxhdGUgPGNsYXNzIFR1cGxlPgor
ICBzdGF0aWMgR1RFU1RfQUREX1JFRl8oR1RFU1RfVFVQTEVfRUxFTUVOVF8oOCwgVHVwbGUpKQor
ICBGaWVsZChUdXBsZSYgdCkgeyByZXR1cm4gdC5mOF87IH0gIC8vIE5PTElOVAorCisgIHRlbXBs
YXRlIDxjbGFzcyBUdXBsZT4KKyAgc3RhdGljIEdURVNUX0JZX1JFRl8oR1RFU1RfVFVQTEVfRUxF
TUVOVF8oOCwgVHVwbGUpKQorICBDb25zdEZpZWxkKGNvbnN0IFR1cGxlJiB0KSB7IHJldHVybiB0
LmY4XzsgfQorfTsKKwordGVtcGxhdGUgPD4KK2NsYXNzIEdldDw5PiB7CisgcHVibGljOgorICB0
ZW1wbGF0ZSA8Y2xhc3MgVHVwbGU+CisgIHN0YXRpYyBHVEVTVF9BRERfUkVGXyhHVEVTVF9UVVBM
RV9FTEVNRU5UXyg5LCBUdXBsZSkpCisgIEZpZWxkKFR1cGxlJiB0KSB7IHJldHVybiB0LmY5Xzsg
fSAgLy8gTk9MSU5UCisKKyAgdGVtcGxhdGUgPGNsYXNzIFR1cGxlPgorICBzdGF0aWMgR1RFU1Rf
QllfUkVGXyhHVEVTVF9UVVBMRV9FTEVNRU5UXyg5LCBUdXBsZSkpCisgIENvbnN0RmllbGQoY29u
c3QgVHVwbGUmIHQpIHsgcmV0dXJuIHQuZjlfOyB9Cit9OworCit9ICAvLyBuYW1lc3BhY2UgZ3Rl
c3RfaW50ZXJuYWwKKwordGVtcGxhdGUgPGludCBrLCBHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgor
R1RFU1RfQUREX1JFRl8oR1RFU1RfVFVQTEVfRUxFTUVOVF8oaywgR1RFU1RfMTBfVFVQTEVfKFQp
KSkKK2dldChHVEVTVF8xMF9UVVBMRV8oVCkmIHQpIHsKKyAgcmV0dXJuIGd0ZXN0X2ludGVybmFs
OjpHZXQ8az46OkZpZWxkKHQpOworfQorCit0ZW1wbGF0ZSA8aW50IGssIEdURVNUXzEwX1RZUEVO
QU1FU18oVCk+CitHVEVTVF9CWV9SRUZfKEdURVNUX1RVUExFX0VMRU1FTlRfKGssICBHVEVTVF8x
MF9UVVBMRV8oVCkpKQorZ2V0KGNvbnN0IEdURVNUXzEwX1RVUExFXyhUKSYgdCkgeworICByZXR1
cm4gZ3Rlc3RfaW50ZXJuYWw6OkdldDxrPjo6Q29uc3RGaWVsZCh0KTsKK30KKworLy8gNi4xLjMu
NSBSZWxhdGlvbmFsIG9wZXJhdG9ycworCisvLyBXZSBvbmx5IGltcGxlbWVudCA9PSBhbmQgIT0s
IGFzIHdlIGRvbid0IGhhdmUgYSBuZWVkIGZvciB0aGUgcmVzdCB5ZXQuCisKK25hbWVzcGFjZSBn
dGVzdF9pbnRlcm5hbCB7CisKKy8vIFNhbWVTaXplVHVwbGVQcmVmaXhDb21wYXJhdG9yPGssIGs+
OjpFcSh0MSwgdDIpIHJldHVybnMgdHJ1ZSBpZiB0aGUKKy8vIGZpcnN0IGsgZmllbGRzIG9mIHQx
IGVxdWFscyB0aGUgZmlyc3QgayBmaWVsZHMgb2YgdDIuCisvLyBTYW1lU2l6ZVR1cGxlUHJlZml4
Q29tcGFyYXRvcihrMSwgazIpIHdvdWxkIGJlIGEgY29tcGlsZXIgZXJyb3IgaWYKKy8vIGsxICE9
IGsyLgordGVtcGxhdGUgPGludCBrU2l6ZTEsIGludCBrU2l6ZTI+CitzdHJ1Y3QgU2FtZVNpemVU
dXBsZVByZWZpeENvbXBhcmF0b3I7CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgU2FtZVNpemVUdXBs
ZVByZWZpeENvbXBhcmF0b3I8MCwgMD4geworICB0ZW1wbGF0ZSA8Y2xhc3MgVHVwbGUxLCBjbGFz
cyBUdXBsZTI+CisgIHN0YXRpYyBib29sIEVxKGNvbnN0IFR1cGxlMSYgLyogdDEgKi8sIGNvbnN0
IFR1cGxlMiYgLyogdDIgKi8pIHsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorfTsKKwordGVtcGxh
dGUgPGludCBrPgorc3RydWN0IFNhbWVTaXplVHVwbGVQcmVmaXhDb21wYXJhdG9yPGssIGs+IHsK
KyAgdGVtcGxhdGUgPGNsYXNzIFR1cGxlMSwgY2xhc3MgVHVwbGUyPgorICBzdGF0aWMgYm9vbCBF
cShjb25zdCBUdXBsZTEmIHQxLCBjb25zdCBUdXBsZTImIHQyKSB7CisgICAgcmV0dXJuIFNhbWVT
aXplVHVwbGVQcmVmaXhDb21wYXJhdG9yPGsgLSAxLCBrIC0gMT46OkVxKHQxLCB0MikgJiYKKyAg
ICAgICAgOjpzdGQ6OnRyMTo6Z2V0PGsgLSAxPih0MSkgPT0gOjpzdGQ6OnRyMTo6Z2V0PGsgLSAx
Pih0Mik7CisgIH0KK307CisKK30gIC8vIG5hbWVzcGFjZSBndGVzdF9pbnRlcm5hbAorCit0ZW1w
bGF0ZSA8R1RFU1RfMTBfVFlQRU5BTUVTXyhUKSwgR1RFU1RfMTBfVFlQRU5BTUVTXyhVKT4KK2lu
bGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgR1RFU1RfMTBfVFVQTEVfKFQpJiB0LAorICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHVEVTVF8xMF9UVVBMRV8oVSkmIHUpIHsKKyAgcmV0dXJu
IGd0ZXN0X2ludGVybmFsOjpTYW1lU2l6ZVR1cGxlUHJlZml4Q29tcGFyYXRvcjwKKyAgICAgIHR1
cGxlX3NpemU8R1RFU1RfMTBfVFVQTEVfKFQpID46OnZhbHVlLAorICAgICAgdHVwbGVfc2l6ZTxH
VEVTVF8xMF9UVVBMRV8oVSkgPjo6dmFsdWU+OjpFcSh0LCB1KTsKK30KKwordGVtcGxhdGUgPEdU
RVNUXzEwX1RZUEVOQU1FU18oVCksIEdURVNUXzEwX1RZUEVOQU1FU18oVSk+CitpbmxpbmUgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IEdURVNUXzEwX1RVUExFXyhUKSYgdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR1RFU1RfMTBfVFVQTEVfKFUpJiB1KSB7IHJldHVybiAhKHQgPT0gdSk7
IH0KKworLy8gNi4xLjQgUGFpcnMuCisvLyBVbmltcGxlbWVudGVkLgorCit9ICAvLyBuYW1lc3Bh
Y2UgdHIxCit9ICAvLyBuYW1lc3BhY2Ugc3RkCisKKyN1bmRlZiBHVEVTVF8wX1RVUExFXworI3Vu
ZGVmIEdURVNUXzFfVFVQTEVfCisjdW5kZWYgR1RFU1RfMl9UVVBMRV8KKyN1bmRlZiBHVEVTVF8z
X1RVUExFXworI3VuZGVmIEdURVNUXzRfVFVQTEVfCisjdW5kZWYgR1RFU1RfNV9UVVBMRV8KKyN1
bmRlZiBHVEVTVF82X1RVUExFXworI3VuZGVmIEdURVNUXzdfVFVQTEVfCisjdW5kZWYgR1RFU1Rf
OF9UVVBMRV8KKyN1bmRlZiBHVEVTVF85X1RVUExFXworI3VuZGVmIEdURVNUXzEwX1RVUExFXwor
CisjdW5kZWYgR1RFU1RfMF9UWVBFTkFNRVNfCisjdW5kZWYgR1RFU1RfMV9UWVBFTkFNRVNfCisj
dW5kZWYgR1RFU1RfMl9UWVBFTkFNRVNfCisjdW5kZWYgR1RFU1RfM19UWVBFTkFNRVNfCisjdW5k
ZWYgR1RFU1RfNF9UWVBFTkFNRVNfCisjdW5kZWYgR1RFU1RfNV9UWVBFTkFNRVNfCisjdW5kZWYg
R1RFU1RfNl9UWVBFTkFNRVNfCisjdW5kZWYgR1RFU1RfN19UWVBFTkFNRVNfCisjdW5kZWYgR1RF
U1RfOF9UWVBFTkFNRVNfCisjdW5kZWYgR1RFU1RfOV9UWVBFTkFNRVNfCisjdW5kZWYgR1RFU1Rf
MTBfVFlQRU5BTUVTXworCisjdW5kZWYgR1RFU1RfREVDTEFSRV9UVVBMRV9BU19GUklFTkRfCisj
dW5kZWYgR1RFU1RfQllfUkVGXworI3VuZGVmIEdURVNUX0FERF9SRUZfCisjdW5kZWYgR1RFU1Rf
VFVQTEVfRUxFTUVOVF8KKworI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFM
X0dURVNUX1RVUExFX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2lu
dGVybmFsL2d0ZXN0LXR1cGxlLmgucHVtcCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50
ZXJuYWwvZ3Rlc3QtdHVwbGUuaC5wdW1wCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyOWRkZmVlY2FhNzRlNzFhOWQ4
OWVjNTY4ZTk4NTgxYjc2NjJiMDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNs
dWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgucHVtcApAQCAtMCwwICsxLDM0NyBAQAor
JCQgLSotIG1vZGU6IGMrKzsgLSotCiskdmFyIG4gPSAxMCAgJCQgTWF4aW11bSBudW1iZXIgb2Yg
dHVwbGUgZmllbGRzIHdlIHdhbnQgdG8gc3VwcG9ydC4KKyQkIFRoaXMgbWV0YSBjb21tZW50IGZp
eGVzIGF1dG8taW5kZW50YXRpb24gaW4gRW1hY3MuIH19CisvLyBDb3B5cmlnaHQgMjAwOSBHb29n
bGUgSW5jLgorLy8gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8g
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFu
eW9uZyBXYW4pCisKKy8vIEltcGxlbWVudHMgYSBzdWJzZXQgb2YgVFIxIHR1cGxlIG5lZWRlZCBi
eSBHb29nbGUgVGVzdCBhbmQgR29vZ2xlIE1vY2suCisKKyNpZm5kZWYgR1RFU1RfSU5DTFVERV9H
VEVTVF9JTlRFUk5BTF9HVEVTVF9UVVBMRV9IXworI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNU
X0lOVEVSTkFMX0dURVNUX1RVUExFX0hfCisKKyNpbmNsdWRlIDx1dGlsaXR5PiAgLy8gRm9yIDo6
c3RkOjpwYWlyLgorCisvLyBUaGUgY29tcGlsZXIgdXNlZCBpbiBTeW1iaWFuIGhhcyBhIGJ1ZyB0
aGF0IHByZXZlbnRzIHVzIGZyb20gZGVjbGFyaW5nIHRoZQorLy8gdHVwbGUgdGVtcGxhdGUgYXMg
YSBmcmllbmQgKGl0IGNvbXBsYWlucyB0aGF0IHR1cGxlIGlzIHJlZGVmaW5lZCkuICBUaGlzCisv
LyBoYWNrIGJ5cGFzc2VzIHRoZSBidWcgYnkgZGVjbGFyaW5nIHRoZSBtZW1iZXJzIHRoYXQgc2hv
dWxkIG90aGVyd2lzZSBiZQorLy8gcHJpdmF0ZSBhcyBwdWJsaWMuCisvLyBTdW4gU3R1ZGlvIHZl
cnNpb25zIDwgMTIgYWxzbyBoYXZlIHRoZSBhYm92ZSBidWcuCisjaWYgZGVmaW5lZChfX1NZTUJJ
QU4zMl9fKSB8fCAoZGVmaW5lZChfX1NVTlBST19DQykgJiYgX19TVU5QUk9fQ0MgPCAweDU5MCkK
KyMgZGVmaW5lIEdURVNUX0RFQ0xBUkVfVFVQTEVfQVNfRlJJRU5EXyBwdWJsaWM6CisjZWxzZQor
IyBkZWZpbmUgR1RFU1RfREVDTEFSRV9UVVBMRV9BU19GUklFTkRfIFwKKyAgICB0ZW1wbGF0ZSA8
R1RFU1RfJChuKV9UWVBFTkFNRVNfKFUpPiBmcmllbmQgY2xhc3MgdHVwbGU7IFwKKyAgIHByaXZh
dGU6CisjZW5kaWYKKworLy8gVmlzdWFsIFN0dWRpbyAyMDEwLCAyMDEyLCBhbmQgMjAxMyBkZWZp
bmUgc3ltYm9scyBpbiBzdGQ6OnRyMSB0aGF0IGNvbmZsaWN0CisvLyB3aXRoIG91ciBvd24gZGVm
aW5pdGlvbnMuIFRoZXJlZm9yZSB1c2luZyBvdXIgb3duIHR1cGxlIGRvZXMgbm90IHdvcmsgb24K
Ky8vIHRob3NlIGNvbXBpbGVycy4KKyNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA+
PSAxNjAwICAvKiAxNjAwIGlzIFZpc3VhbCBTdHVkaW8gMjAxMCAqLworIyBlcnJvciAiZ3Rlc3Qn
cyB0dXBsZSBkb2Vzbid0IGNvbXBpbGUgb24gVmlzdWFsIFN0dWRpbyAyMDEwIG9yIGxhdGVyLiBc
CitHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRSBtdXN0IGJlIHNldCB0byAwIG9uIHRob3NlIGNvbXBp
bGVycy4iCisjZW5kaWYKKworCiskcmFuZ2UgaSAwLi5uLTEKKyRyYW5nZSBqIDAuLm4KKyRyYW5n
ZSBrIDEuLm4KKy8vIEdURVNUX25fVFVQTEVfKFQpIGlzIHRoZSB0eXBlIG9mIGFuIG4tdHVwbGUu
CisjZGVmaW5lIEdURVNUXzBfVFVQTEVfKFQpIHR1cGxlPD4KKworJGZvciBrIFtbCiskcmFuZ2Ug
bSAwLi5rLTEKKyRyYW5nZSBtMiBrLi5uLTEKKyNkZWZpbmUgR1RFU1RfJChrKV9UVVBMRV8oVCkg
dHVwbGU8JGZvciBtLCBbW1QjIyRtXV0kZm9yIG0yIFtbLCB2b2lkXV0+CisKK11dCisKKy8vIEdU
RVNUX25fVFlQRU5BTUVTXyhUKSBkZWNsYXJlcyBhIGxpc3Qgb2YgbiB0eXBlbmFtZXMuCisKKyRm
b3IgaiBbWworJHJhbmdlIG0gMC4uai0xCisjZGVmaW5lIEdURVNUXyQoailfVFlQRU5BTUVTXyhU
KSAkZm9yIG0sIFtbdHlwZW5hbWUgVCMjJG1dXQorCisKK11dCisKKy8vIEluIHRoZW9yeSwgZGVm
aW5pbmcgc3R1ZmYgaW4gdGhlIDo6c3RkIG5hbWVzcGFjZSBpcyB1bmRlZmluZWQKKy8vIGJlaGF2
aW9yLiAgV2UgY2FuIGRvIHRoaXMgYXMgd2UgYXJlIHBsYXlpbmcgdGhlIHJvbGUgb2YgYSBzdGFu
ZGFyZAorLy8gbGlicmFyeSB2ZW5kb3IuCituYW1lc3BhY2Ugc3RkIHsKK25hbWVzcGFjZSB0cjEg
eworCit0ZW1wbGF0ZSA8JGZvciBpLCBbW3R5cGVuYW1lIFQkaSA9IHZvaWRdXT4KK2NsYXNzIHR1
cGxlOworCisvLyBBbnl0aGluZyBpbiBuYW1lc3BhY2UgZ3Rlc3RfaW50ZXJuYWwgaXMgR29vZ2xl
IFRlc3QncyBJTlRFUk5BTAorLy8gSU1QTEVNRU5UQVRJT04gREVUQUlMIGFuZCBNVVNUIE5PVCBC
RSBVU0VEIERJUkVDVExZIGluIHVzZXIgY29kZS4KK25hbWVzcGFjZSBndGVzdF9pbnRlcm5hbCB7
CisKKy8vIEJ5UmVmPFQ+Ojp0eXBlIGlzIFQgaWYgVCBpcyBhIHJlZmVyZW5jZTsgb3RoZXJ3aXNl
IGl0J3MgY29uc3QgVCYuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBCeVJlZiB7IHR5
cGVkZWYgY29uc3QgVCYgdHlwZTsgfTsgIC8vIE5PTElOVAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CitzdHJ1Y3QgQnlSZWY8VCY+IHsgdHlwZWRlZiBUJiB0eXBlOyB9OyAgLy8gTk9MSU5UCisKKy8v
IEEgaGFuZHkgd3JhcHBlciBmb3IgQnlSZWYuCisjZGVmaW5lIEdURVNUX0JZX1JFRl8oVCkgdHlw
ZW5hbWUgOjpzdGQ6OnRyMTo6Z3Rlc3RfaW50ZXJuYWw6OkJ5UmVmPFQ+Ojp0eXBlCisKKy8vIEFk
ZFJlZjxUPjo6dHlwZSBpcyBUIGlmIFQgaXMgYSByZWZlcmVuY2U7IG90aGVyd2lzZSBpdCdzIFQm
LiAgVGhpcworLy8gaXMgdGhlIHNhbWUgYXMgdHIxOjphZGRfcmVmZXJlbmNlPFQ+Ojp0eXBlLgor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgQWRkUmVmIHsgdHlwZWRlZiBUJiB0eXBlOyB9
OyAgLy8gTk9MSU5UCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBBZGRSZWY8VCY+IHsg
dHlwZWRlZiBUJiB0eXBlOyB9OyAgLy8gTk9MSU5UCisKKy8vIEEgaGFuZHkgd3JhcHBlciBmb3Ig
QWRkUmVmLgorI2RlZmluZSBHVEVTVF9BRERfUkVGXyhUKSB0eXBlbmFtZSA6OnN0ZDo6dHIxOjpn
dGVzdF9pbnRlcm5hbDo6QWRkUmVmPFQ+Ojp0eXBlCisKKy8vIEEgaGVscGVyIGZvciBpbXBsZW1l
bnRpbmcgZ2V0PGs+KCkuCit0ZW1wbGF0ZSA8aW50IGs+IGNsYXNzIEdldDsKKworLy8gQSBoZWxw
ZXIgZm9yIGltcGxlbWVudGluZyB0dXBsZV9lbGVtZW50PGssIFQ+LiAga0luZGV4VmFsaWQgaXMg
dHJ1ZQorLy8gaWZmIGsgPCB0aGUgbnVtYmVyIG9mIGZpZWxkcyBpbiB0dXBsZSB0eXBlIFQuCit0
ZW1wbGF0ZSA8Ym9vbCBrSW5kZXhWYWxpZCwgaW50IGtJbmRleCwgY2xhc3MgVHVwbGU+CitzdHJ1
Y3QgVHVwbGVFbGVtZW50OworCisKKyRmb3IgaSBbWwordGVtcGxhdGUgPEdURVNUXyQobilfVFlQ
RU5BTUVTXyhUKT4KK3N0cnVjdCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgJGksIEdURVNUXyQobilfVFVQ
TEVfKFQpID4geworICB0eXBlZGVmIFQkaSB0eXBlOworfTsKKworCitdXQorfSAgLy8gbmFtZXNw
YWNlIGd0ZXN0X2ludGVybmFsCisKK3RlbXBsYXRlIDw+CitjbGFzcyB0dXBsZTw+IHsKKyBwdWJs
aWM6CisgIHR1cGxlKCkge30KKyAgdHVwbGUoY29uc3QgdHVwbGUmIC8qIHQgKi8pICB7fQorICB0
dXBsZSYgb3BlcmF0b3I9KGNvbnN0IHR1cGxlJiAvKiB0ICovKSB7IHJldHVybiAqdGhpczsgfQor
fTsKKworCiskZm9yIGsgW1sKKyRyYW5nZSBtIDAuLmstMQordGVtcGxhdGUgPEdURVNUXyQoaylf
VFlQRU5BTUVTXyhUKT4KK2NsYXNzICRpZiBrIDwgbiBbW0dURVNUXyQoaylfVFVQTEVfKFQpXV0g
JGVsc2UgW1t0dXBsZV1dIHsKKyBwdWJsaWM6CisgIHRlbXBsYXRlIDxpbnQgaz4gZnJpZW5kIGNs
YXNzIGd0ZXN0X2ludGVybmFsOjpHZXQ7CisKKyAgdHVwbGUoKSA6ICRmb3IgbSwgW1tmJChtKV8o
KV1dIHt9CisKKyAgZXhwbGljaXQgdHVwbGUoJGZvciBtLCBbW0dURVNUX0JZX1JFRl8oVCRtKSBm
JG1dXSkgOiBbW11dCiskZm9yIG0sIFtbZiQobSlfKGYkbSldXSB7fQorCisgIHR1cGxlKGNvbnN0
IHR1cGxlJiB0KSA6ICRmb3IgbSwgW1tmJChtKV8odC5mJChtKV8pXV0ge30KKworICB0ZW1wbGF0
ZSA8R1RFU1RfJChrKV9UWVBFTkFNRVNfKFUpPgorICB0dXBsZShjb25zdCBHVEVTVF8kKGspX1RV
UExFXyhVKSYgdCkgOiAkZm9yIG0sIFtbZiQobSlfKHQuZiQobSlfKV1dIHt9CisKKyRpZiBrID09
IDIgW1sKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFUwLCB0eXBlbmFtZSBVMT4KKyAgdHVwbGUoY29u
c3QgOjpzdGQ6OnBhaXI8VTAsIFUxPiYgcCkgOiBmMF8ocC5maXJzdCksIGYxXyhwLnNlY29uZCkg
e30KKworXV0KKworICB0dXBsZSYgb3BlcmF0b3I9KGNvbnN0IHR1cGxlJiB0KSB7IHJldHVybiBD
b3B5RnJvbSh0KTsgfQorCisgIHRlbXBsYXRlIDxHVEVTVF8kKGspX1RZUEVOQU1FU18oVSk+Cisg
IHR1cGxlJiBvcGVyYXRvcj0oY29uc3QgR1RFU1RfJChrKV9UVVBMRV8oVSkmIHQpIHsKKyAgICBy
ZXR1cm4gQ29weUZyb20odCk7CisgIH0KKworJGlmIGsgPT0gMiBbWworICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVTAsIHR5cGVuYW1lIFUxPgorICB0dXBsZSYgb3BlcmF0b3I9KGNvbnN0IDo6c3RkOjpw
YWlyPFUwLCBVMT4mIHApIHsKKyAgICBmMF8gPSBwLmZpcnN0OworICAgIGYxXyA9IHAuc2Vjb25k
OworICAgIHJldHVybiAqdGhpczsKKyAgfQorCitdXQorCisgIEdURVNUX0RFQ0xBUkVfVFVQTEVf
QVNfRlJJRU5EXworCisgIHRlbXBsYXRlIDxHVEVTVF8kKGspX1RZUEVOQU1FU18oVSk+CisgIHR1
cGxlJiBDb3B5RnJvbShjb25zdCBHVEVTVF8kKGspX1RVUExFXyhVKSYgdCkgeworCiskZm9yIG0g
W1sKKyAgICBmJChtKV8gPSB0LmYkKG0pXzsKKworXV0KKyAgICByZXR1cm4gKnRoaXM7CisgIH0K
KworCiskZm9yIG0gW1sKKyAgVCRtIGYkKG0pXzsKKworXV0KK307CisKKworXV0KKy8vIDYuMS4z
LjIgVHVwbGUgY3JlYXRpb24gZnVuY3Rpb25zLgorCisvLyBLbm93biBsaW1pdGF0aW9uczogd2Ug
ZG9uJ3Qgc3VwcG9ydCBwYXNzaW5nIGFuCisvLyBzdGQ6OnRyMTo6cmVmZXJlbmNlX3dyYXBwZXI8
VD4gdG8gbWFrZV90dXBsZSgpLiAgQW5kIHdlIGRvbid0CisvLyBpbXBsZW1lbnQgdGllKCkuCisK
K2lubGluZSB0dXBsZTw+IG1ha2VfdHVwbGUoKSB7IHJldHVybiB0dXBsZTw+KCk7IH0KKworJGZv
ciBrIFtbCiskcmFuZ2UgbSAwLi5rLTEKKwordGVtcGxhdGUgPEdURVNUXyQoaylfVFlQRU5BTUVT
XyhUKT4KK2lubGluZSBHVEVTVF8kKGspX1RVUExFXyhUKSBtYWtlX3R1cGxlKCRmb3IgbSwgW1tj
b25zdCBUJG0mIGYkbV1dKSB7CisgIHJldHVybiBHVEVTVF8kKGspX1RVUExFXyhUKSgkZm9yIG0s
IFtbZiRtXV0pOworfQorCitdXQorCisvLyA2LjEuMy4zIFR1cGxlIGhlbHBlciBjbGFzc2VzLgor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGU+IHN0cnVjdCB0dXBsZV9zaXplOworCisKKyRmb3Ig
aiBbWwordGVtcGxhdGUgPEdURVNUXyQoailfVFlQRU5BTUVTXyhUKT4KK3N0cnVjdCB0dXBsZV9z
aXplPEdURVNUXyQoailfVFVQTEVfKFQpID4geworICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0g
JGo7Cit9OworCisKK11dCit0ZW1wbGF0ZSA8aW50IGssIGNsYXNzIFR1cGxlPgorc3RydWN0IHR1
cGxlX2VsZW1lbnQgeworICB0eXBlZGVmIHR5cGVuYW1lIGd0ZXN0X2ludGVybmFsOjpUdXBsZUVs
ZW1lbnQ8CisgICAgICBrIDwgKHR1cGxlX3NpemU8VHVwbGU+Ojp2YWx1ZSksIGssIFR1cGxlPjo6
dHlwZSB0eXBlOworfTsKKworI2RlZmluZSBHVEVTVF9UVVBMRV9FTEVNRU5UXyhrLCBUdXBsZSkg
dHlwZW5hbWUgdHVwbGVfZWxlbWVudDxrLCBUdXBsZSA+Ojp0eXBlCisKKy8vIDYuMS4zLjQgRWxl
bWVudCBhY2Nlc3MuCisKK25hbWVzcGFjZSBndGVzdF9pbnRlcm5hbCB7CisKKworJGZvciBpIFtb
Cit0ZW1wbGF0ZSA8PgorY2xhc3MgR2V0PCRpPiB7CisgcHVibGljOgorICB0ZW1wbGF0ZSA8Y2xh
c3MgVHVwbGU+CisgIHN0YXRpYyBHVEVTVF9BRERfUkVGXyhHVEVTVF9UVVBMRV9FTEVNRU5UXygk
aSwgVHVwbGUpKQorICBGaWVsZChUdXBsZSYgdCkgeyByZXR1cm4gdC5mJChpKV87IH0gIC8vIE5P
TElOVAorCisgIHRlbXBsYXRlIDxjbGFzcyBUdXBsZT4KKyAgc3RhdGljIEdURVNUX0JZX1JFRl8o
R1RFU1RfVFVQTEVfRUxFTUVOVF8oJGksIFR1cGxlKSkKKyAgQ29uc3RGaWVsZChjb25zdCBUdXBs
ZSYgdCkgeyByZXR1cm4gdC5mJChpKV87IH0KK307CisKKworXV0KK30gIC8vIG5hbWVzcGFjZSBn
dGVzdF9pbnRlcm5hbAorCit0ZW1wbGF0ZSA8aW50IGssIEdURVNUXyQobilfVFlQRU5BTUVTXyhU
KT4KK0dURVNUX0FERF9SRUZfKEdURVNUX1RVUExFX0VMRU1FTlRfKGssIEdURVNUXyQobilfVFVQ
TEVfKFQpKSkKK2dldChHVEVTVF8kKG4pX1RVUExFXyhUKSYgdCkgeworICByZXR1cm4gZ3Rlc3Rf
aW50ZXJuYWw6OkdldDxrPjo6RmllbGQodCk7Cit9CisKK3RlbXBsYXRlIDxpbnQgaywgR1RFU1Rf
JChuKV9UWVBFTkFNRVNfKFQpPgorR1RFU1RfQllfUkVGXyhHVEVTVF9UVVBMRV9FTEVNRU5UXyhr
LCAgR1RFU1RfJChuKV9UVVBMRV8oVCkpKQorZ2V0KGNvbnN0IEdURVNUXyQobilfVFVQTEVfKFQp
JiB0KSB7CisgIHJldHVybiBndGVzdF9pbnRlcm5hbDo6R2V0PGs+OjpDb25zdEZpZWxkKHQpOwor
fQorCisvLyA2LjEuMy41IFJlbGF0aW9uYWwgb3BlcmF0b3JzCisKKy8vIFdlIG9ubHkgaW1wbGVt
ZW50ID09IGFuZCAhPSwgYXMgd2UgZG9uJ3QgaGF2ZSBhIG5lZWQgZm9yIHRoZSByZXN0IHlldC4K
KworbmFtZXNwYWNlIGd0ZXN0X2ludGVybmFsIHsKKworLy8gU2FtZVNpemVUdXBsZVByZWZpeENv
bXBhcmF0b3I8aywgaz46OkVxKHQxLCB0MikgcmV0dXJucyB0cnVlIGlmIHRoZQorLy8gZmlyc3Qg
ayBmaWVsZHMgb2YgdDEgZXF1YWxzIHRoZSBmaXJzdCBrIGZpZWxkcyBvZiB0Mi4KKy8vIFNhbWVT
aXplVHVwbGVQcmVmaXhDb21wYXJhdG9yKGsxLCBrMikgd291bGQgYmUgYSBjb21waWxlciBlcnJv
ciBpZgorLy8gazEgIT0gazIuCit0ZW1wbGF0ZSA8aW50IGtTaXplMSwgaW50IGtTaXplMj4KK3N0
cnVjdCBTYW1lU2l6ZVR1cGxlUHJlZml4Q29tcGFyYXRvcjsKKwordGVtcGxhdGUgPD4KK3N0cnVj
dCBTYW1lU2l6ZVR1cGxlUHJlZml4Q29tcGFyYXRvcjwwLCAwPiB7CisgIHRlbXBsYXRlIDxjbGFz
cyBUdXBsZTEsIGNsYXNzIFR1cGxlMj4KKyAgc3RhdGljIGJvb2wgRXEoY29uc3QgVHVwbGUxJiAv
KiB0MSAqLywgY29uc3QgVHVwbGUyJiAvKiB0MiAqLykgeworICAgIHJldHVybiB0cnVlOworICB9
Cit9OworCit0ZW1wbGF0ZSA8aW50IGs+CitzdHJ1Y3QgU2FtZVNpemVUdXBsZVByZWZpeENvbXBh
cmF0b3I8aywgaz4geworICB0ZW1wbGF0ZSA8Y2xhc3MgVHVwbGUxLCBjbGFzcyBUdXBsZTI+Cisg
IHN0YXRpYyBib29sIEVxKGNvbnN0IFR1cGxlMSYgdDEsIGNvbnN0IFR1cGxlMiYgdDIpIHsKKyAg
ICByZXR1cm4gU2FtZVNpemVUdXBsZVByZWZpeENvbXBhcmF0b3I8ayAtIDEsIGsgLSAxPjo6RXEo
dDEsIHQyKSAmJgorICAgICAgICA6OnN0ZDo6dHIxOjpnZXQ8ayAtIDE+KHQxKSA9PSA6OnN0ZDo6
dHIxOjpnZXQ8ayAtIDE+KHQyKTsKKyAgfQorfTsKKworfSAgLy8gbmFtZXNwYWNlIGd0ZXN0X2lu
dGVybmFsCisKK3RlbXBsYXRlIDxHVEVTVF8kKG4pX1RZUEVOQU1FU18oVCksIEdURVNUXyQobilf
VFlQRU5BTUVTXyhVKT4KK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgR1RFU1RfJChuKV9U
VVBMRV8oVCkmIHQsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdURVNUXyQobilfVFVQ
TEVfKFUpJiB1KSB7CisgIHJldHVybiBndGVzdF9pbnRlcm5hbDo6U2FtZVNpemVUdXBsZVByZWZp
eENvbXBhcmF0b3I8CisgICAgICB0dXBsZV9zaXplPEdURVNUXyQobilfVFVQTEVfKFQpID46OnZh
bHVlLAorICAgICAgdHVwbGVfc2l6ZTxHVEVTVF8kKG4pX1RVUExFXyhVKSA+Ojp2YWx1ZT46OkVx
KHQsIHUpOworfQorCit0ZW1wbGF0ZSA8R1RFU1RfJChuKV9UWVBFTkFNRVNfKFQpLCBHVEVTVF8k
KG4pX1RZUEVOQU1FU18oVSk+CitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEdURVNUXyQo
bilfVFVQTEVfKFQpJiB0LAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHVEVTVF8kKG4p
X1RVUExFXyhVKSYgdSkgeyByZXR1cm4gISh0ID09IHUpOyB9CisKKy8vIDYuMS40IFBhaXJzLgor
Ly8gVW5pbXBsZW1lbnRlZC4KKworfSAgLy8gbmFtZXNwYWNlIHRyMQorfSAgLy8gbmFtZXNwYWNl
IHN0ZAorCisKKyRmb3IgaiBbWworI3VuZGVmIEdURVNUXyQoailfVFVQTEVfCisKK11dCisKKwor
JGZvciBqIFtbCisjdW5kZWYgR1RFU1RfJChqKV9UWVBFTkFNRVNfCisKK11dCisKKyN1bmRlZiBH
VEVTVF9ERUNMQVJFX1RVUExFX0FTX0ZSSUVORF8KKyN1bmRlZiBHVEVTVF9CWV9SRUZfCisjdW5k
ZWYgR1RFU1RfQUREX1JFRl8KKyN1bmRlZiBHVEVTVF9UVVBMRV9FTEVNRU5UXworCisjZW5kaWYg
IC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfVFVQTEVfSF8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR5cGUtdXRpbC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmU0NmY3Y2ZjYjQ4M2E5NTUxYzIwYWRhMjNiNzdmOTg4MDQwNWY0ZmUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR5
cGUtdXRpbC5oCkBAIC0wLDAgKzEsMzMzMSBAQAorLy8gVGhpcyBmaWxlIHdhcyBHRU5FUkFURUQg
YnkgY29tbWFuZDoKKy8vICAgICBwdW1wLnB5IGd0ZXN0LXR5cGUtdXRpbC5oLnB1bXAKKy8vIERP
IE5PVCBFRElUIEJZIEhBTkQhISEKKworLy8gQ29weXJpZ2h0IDIwMDggR29vZ2xlIEluYy4KKy8v
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8v
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisvLworLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQor
CisvLyBUeXBlIHV0aWxpdGllcyBuZWVkZWQgZm9yIGltcGxlbWVudGluZyB0eXBlZCBhbmQgdHlw
ZS1wYXJhbWV0ZXJpemVkCisvLyB0ZXN0cy4gIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgYSBT
Q1JJUFQuICBETyBOT1QgRURJVCBCWSBIQU5EIQorLy8KKy8vIEN1cnJlbnRseSB3ZSBzdXBwb3J0
IGF0IG1vc3QgNTAgdHlwZXMgaW4gYSBsaXN0LCBhbmQgYXQgbW9zdCA1MAorLy8gdHlwZS1wYXJh
bWV0ZXJpemVkIHRlc3RzIGluIG9uZSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlLgorLy8g
UGxlYXNlIGNvbnRhY3QgZ29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tIGlmIHlv
dSBuZWVkCisvLyBtb3JlLgorCisjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxf
R1RFU1RfVFlQRV9VVElMX0hfCisjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxf
R1RFU1RfVFlQRV9VVElMX0hfCisKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0
LmgiCisKKy8vICNpZmRlZiBfX0dOVUNfXyBpcyB0b28gZ2VuZXJhbCBoZXJlLiAgSXQgaXMgcG9z
c2libGUgdG8gdXNlIGdjYyB3aXRob3V0IHVzaW5nCisvLyBsaWJzdGRjKysgKHdoaWNoIGlzIHdo
ZXJlIGN4eGFiaS5oIGNvbWVzIGZyb20pLgorIyBpZiBHVEVTVF9IQVNfQ1hYQUJJX0hfCisjICBp
bmNsdWRlIDxjeHhhYmkuaD4KKyMgZWxpZiBkZWZpbmVkKF9fSFBfYUNDKQorIyAgaW5jbHVkZSA8
YWN4eF9kZW1hbmdsZS5oPgorIyBlbmRpZiAgLy8gR1RFU1RfSEFTSF9DWFhBQklfSF8KKworbmFt
ZXNwYWNlIHRlc3RpbmcgeworbmFtZXNwYWNlIGludGVybmFsIHsKKworLy8gR2V0VHlwZU5hbWU8
VD4oKSByZXR1cm5zIGEgaHVtYW4tcmVhZGFibGUgbmFtZSBvZiB0eXBlIFQuCisvLyBOQjogVGhp
cyBmdW5jdGlvbiBpcyBhbHNvIHVzZWQgaW4gR29vZ2xlIE1vY2ssIHNvIGRvbid0IG1vdmUgaXQg
aW5zaWRlIG9mCisvLyB0aGUgdHlwZWQtdGVzdC1vbmx5IHNlY3Rpb24gYmVsb3cuCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KK3N0ZDo6c3RyaW5nIEdldFR5cGVOYW1lKCkgeworIyBpZiBHVEVTVF9I
QVNfUlRUSQorCisgIGNvbnN0IGNoYXIqIGNvbnN0IG5hbWUgPSB0eXBlaWQoVCkubmFtZSgpOwor
IyAgaWYgR1RFU1RfSEFTX0NYWEFCSV9IXyB8fCBkZWZpbmVkKF9fSFBfYUNDKQorICBpbnQgc3Rh
dHVzID0gMDsKKyAgLy8gZ2NjJ3MgaW1wbGVtZW50YXRpb24gb2YgdHlwZWlkKFQpLm5hbWUoKSBt
YW5nbGVzIHRoZSB0eXBlIG5hbWUsCisgIC8vIHNvIHdlIGhhdmUgdG8gZGVtYW5nbGUgaXQuCisj
ICAgaWYgR1RFU1RfSEFTX0NYWEFCSV9IXworICB1c2luZyBhYmk6Ol9fY3hhX2RlbWFuZ2xlOwor
IyAgIGVuZGlmICAvLyBHVEVTVF9IQVNfQ1hYQUJJX0hfCisgIGNoYXIqIGNvbnN0IHJlYWRhYmxl
X25hbWUgPSBfX2N4YV9kZW1hbmdsZShuYW1lLCAwLCAwLCAmc3RhdHVzKTsKKyAgY29uc3Qgc3Rk
OjpzdHJpbmcgbmFtZV9zdHIoc3RhdHVzID09IDAgPyByZWFkYWJsZV9uYW1lIDogbmFtZSk7Cisg
IGZyZWUocmVhZGFibGVfbmFtZSk7CisgIHJldHVybiBuYW1lX3N0cjsKKyMgIGVsc2UKKyAgcmV0
dXJuIG5hbWU7CisjICBlbmRpZiAgLy8gR1RFU1RfSEFTX0NYWEFCSV9IXyB8fCBfX0hQX2FDQwor
CisjIGVsc2UKKworICByZXR1cm4gIjx0eXBlPiI7CisKKyMgZW5kaWYgIC8vIEdURVNUX0hBU19S
VFRJCit9CisKKyNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVCB8fCBHVEVTVF9IQVNfVFlQRURfVEVT
VF9QCisKKy8vIEFzc2VydHlUeXBlRXE8VDEsIFQyPjo6dHlwZSBpcyBkZWZpbmVkIGlmZiBUMSBh
bmQgVDIgYXJlIHRoZSBzYW1lCisvLyB0eXBlLiAgVGhpcyBjYW4gYmUgdXNlZCBhcyBhIGNvbXBp
bGUtdGltZSBhc3NlcnRpb24gdG8gZW5zdXJlIHRoYXQKKy8vIHR3byB0eXBlcyBhcmUgZXF1YWwu
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+CitzdHJ1Y3QgQXNzZXJ0VHlw
ZUVxOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBBc3NlcnRUeXBlRXE8VCwgVD4g
eworICB0eXBlZGVmIGJvb2wgdHlwZTsKK307CisKKy8vIEEgdW5pcXVlIHR5cGUgdXNlZCBhcyB0
aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIGFyZ3VtZW50cyBvZiBjbGFzcworLy8gdGVtcGxhdGUg
VHlwZXMuICBUaGlzIGFsbG93cyB1cyB0byBzaW11bGF0ZSB2YXJpYWRpYyB0ZW1wbGF0ZXMKKy8v
IChlLmcuIFR5cGVzPGludD4sIFR5cGU8aW50LCBkb3VibGU+LCBhbmQgZXRjKSwgd2hpY2ggQysr
IGRvZXNuJ3QKKy8vIHN1cHBvcnQgZGlyZWN0bHkuCitzdHJ1Y3QgTm9uZSB7fTsKKworLy8gVGhl
IGZvbGxvd2luZyBmYW1pbHkgb2Ygc3RydWN0IGFuZCBzdHJ1Y3QgdGVtcGxhdGVzIGFyZSB1c2Vk
IHRvCisvLyByZXByZXNlbnQgdHlwZSBsaXN0cy4gIEluIHBhcnRpY3VsYXIsIFR5cGVzTjxUMSwg
VDIsIC4uLiwgVE4+CisvLyByZXByZXNlbnRzIGEgdHlwZSBsaXN0IHdpdGggTiB0eXBlcyAoVDEs
IFQyLCAuLi4sIGFuZCBUTikgaW4gaXQuCisvLyBFeGNlcHQgZm9yIFR5cGVzMCwgZXZlcnkgc3Ry
dWN0IGluIHRoZSBmYW1pbHkgaGFzIHR3byBtZW1iZXIgdHlwZXM6CisvLyBIZWFkIGZvciB0aGUg
Zmlyc3QgdHlwZSBpbiB0aGUgbGlzdCwgYW5kIFRhaWwgZm9yIHRoZSByZXN0IG9mIHRoZQorLy8g
bGlzdC4KKworLy8gVGhlIGVtcHR5IHR5cGUgbGlzdC4KK3N0cnVjdCBUeXBlczAge307CisKKy8v
IFR5cGUgbGlzdHMgb2YgbGVuZ3RoIDEsIDIsIDMsIGFuZCBzbyBvbi4KKwordGVtcGxhdGUgPHR5
cGVuYW1lIFQxPgorc3RydWN0IFR5cGVzMSB7CisgIHR5cGVkZWYgVDEgSGVhZDsKKyAgdHlwZWRl
ZiBUeXBlczAgVGFpbDsKK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgor
c3RydWN0IFR5cGVzMiB7CisgIHR5cGVkZWYgVDEgSGVhZDsKKyAgdHlwZWRlZiBUeXBlczE8VDI+
IFRhaWw7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFt
ZSBUMz4KK3N0cnVjdCBUeXBlczMgeworICB0eXBlZGVmIFQxIEhlYWQ7CisgIHR5cGVkZWYgVHlw
ZXMyPFQyLCBUMz4gVGFpbDsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUg
VDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUND4KK3N0cnVjdCBUeXBlczQgeworICB0eXBlZGVm
IFQxIEhlYWQ7CisgIHR5cGVkZWYgVHlwZXMzPFQyLCBUMywgVDQ+IFRhaWw7Cit9OworCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQs
IHR5cGVuYW1lIFQ1Pgorc3RydWN0IFR5cGVzNSB7CisgIHR5cGVkZWYgVDEgSGVhZDsKKyAgdHlw
ZWRlZiBUeXBlczQ8VDIsIFQzLCBUNCwgVDU+IFRhaWw7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1
LAorICAgIHR5cGVuYW1lIFQ2Pgorc3RydWN0IFR5cGVzNiB7CisgIHR5cGVkZWYgVDEgSGVhZDsK
KyAgdHlwZWRlZiBUeXBlczU8VDIsIFQzLCBUNCwgVDUsIFQ2PiBUYWlsOworfTsKKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0
eXBlbmFtZSBUNSwKKyAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDc+CitzdHJ1Y3QgVHlwZXM3
IHsKKyAgdHlwZWRlZiBUMSBIZWFkOworICB0eXBlZGVmIFR5cGVzNjxUMiwgVDMsIFQ0LCBUNSwg
VDYsIFQ3PiBUYWlsOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwg
dHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICB0eXBlbmFtZSBUNiwg
dHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Pgorc3RydWN0IFR5cGVzOCB7CisgIHR5cGVkZWYgVDEg
SGVhZDsKKyAgdHlwZWRlZiBUeXBlczc8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDg+IFRhaWw7
Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywg
dHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywg
dHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Pgorc3RydWN0IFR5cGVzOSB7CisgIHR5cGVkZWYgVDEg
SGVhZDsKKyAgdHlwZWRlZiBUeXBlczg8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5PiBU
YWlsOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUg
VDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUg
VDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwPgorc3RydWN0IFR5cGVz
MTAgeworICB0eXBlZGVmIFQxIEhlYWQ7CisgIHR5cGVkZWYgVHlwZXM5PFQyLCBUMywgVDQsIFQ1
LCBUNiwgVDcsIFQ4LCBUOSwgVDEwPiBUYWlsOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAg
ICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlw
ZW5hbWUgVDEwLAorICAgIHR5cGVuYW1lIFQxMT4KK3N0cnVjdCBUeXBlczExIHsKKyAgdHlwZWRl
ZiBUMSBIZWFkOworICB0eXBlZGVmIFR5cGVzMTA8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgs
IFQ5LCBUMTAsIFQxMT4gVGFpbDsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5h
bWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCisgICAgdHlwZW5h
bWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQx
MCwKKyAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMj4KK3N0cnVjdCBUeXBlczEyIHsKKyAg
dHlwZWRlZiBUMSBIZWFkOworICB0eXBlZGVmIFR5cGVzMTE8VDIsIFQzLCBUNCwgVDUsIFQ2LCBU
NywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyPiBUYWlsOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwK
KyAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwg
dHlwZW5hbWUgVDEwLAorICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBU
MTM+CitzdHJ1Y3QgVHlwZXMxMyB7CisgIHR5cGVkZWYgVDEgSGVhZDsKKyAgdHlwZWRlZiBUeXBl
czEyPFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzPiBU
YWlsOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUg
VDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUg
VDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAorICAgIHR5cGVuYW1l
IFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxND4KK3N0cnVjdCBU
eXBlczE0IHsKKyAgdHlwZWRlZiBUMSBIZWFkOworICB0eXBlZGVmIFR5cGVzMTM8VDIsIFQzLCBU
NCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxND4gVGFpbDsKK307
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBl
bmFtZSBUNCwgdHlwZW5hbWUgVDUsCisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBl
bmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFtZSBUMTEsIHR5
cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNT4KK3N0
cnVjdCBUeXBlczE1IHsKKyAgdHlwZWRlZiBUMSBIZWFkOworICB0eXBlZGVmIFR5cGVzMTQ8VDIs
IFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKKyAg
ICAgIFQxNT4gVGFpbDsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIs
IHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCisgICAgdHlwZW5hbWUgVDYs
IHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKKyAg
ICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQs
IHR5cGVuYW1lIFQxNSwKKyAgICB0eXBlbmFtZSBUMTY+CitzdHJ1Y3QgVHlwZXMxNiB7CisgIHR5
cGVkZWYgVDEgSGVhZDsKKyAgdHlwZWRlZiBUeXBlczE1PFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcs
IFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKKyAgICAgIFQxNj4gVGFpbDsK
K307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0
eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0
eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFtZSBUMTEs
IHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwK
KyAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNz4KK3N0cnVjdCBUeXBlczE3IHsKKyAgdHlw
ZWRlZiBUMSBIZWFkOworICB0eXBlZGVmIFR5cGVzMTY8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywg
VDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAorICAgICAgVDE2LCBUMTc+IFRh
aWw7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBU
MywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBU
NywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCisgICAgdHlwZW5hbWUg
VDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBU
MTUsCisgICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOD4KK3N0cnVj
dCBUeXBlczE4IHsKKyAgdHlwZWRlZiBUMSBIZWFkOworICB0eXBlZGVmIFR5cGVzMTc8VDIsIFQz
LCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAor
ICAgICAgVDE2LCBUMTcsIFQxOD4gVGFpbDsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwg
dHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCisgICAg
dHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVu
YW1lIFQxMCwKKyAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0
eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKKyAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQx
NywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTk+CitzdHJ1Y3QgVHlwZXMxOSB7CisgIHR5cGVk
ZWYgVDEgSGVhZDsKKyAgdHlwZWRlZiBUeXBlczE4PFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4
LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKKyAgICAgIFQxNiwgVDE3LCBUMTgs
IFQxOT4gVGFpbDsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5
cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCisgICAgdHlwZW5hbWUgVDYsIHR5
cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKKyAgICB0
eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5
cGVuYW1lIFQxNSwKKyAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4
LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMD4KK3N0cnVjdCBUeXBlczIwIHsKKyAgdHlwZWRl
ZiBUMSBIZWFkOworICB0eXBlZGVmIFR5cGVzMTk8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgs
IFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAorICAgICAgVDE2LCBUMTcsIFQxOCwg
VDE5LCBUMjA+IFRhaWw7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQy
LCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2
LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCisg
ICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0
LCB0eXBlbmFtZSBUMTUsCisgICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1l
IFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCisgICAgdHlwZW5hbWUgVDIxPgorc3Ry
dWN0IFR5cGVzMjEgeworICB0eXBlZGVmIFQxIEhlYWQ7CisgIHR5cGVkZWYgVHlwZXMyMDxUMiwg
VDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUs
CisgICAgICBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxPiBUYWlsOworfTsKKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0
eXBlbmFtZSBUNSwKKyAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0
eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAorICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEy
LCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAorICAgIHR5cGVuYW1l
IFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUg
VDIwLAorICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyPgorc3RydWN0IFR5cGVzMjIgewor
ICB0eXBlZGVmIFQxIEhlYWQ7CisgIHR5cGVkZWYgVHlwZXMyMTxUMiwgVDMsIFQ0LCBUNSwgVDYs
IFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsCisgICAgICBUMTYsIFQx
NywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjI+IFRhaWw7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1
LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5
LCB0eXBlbmFtZSBUMTAsCisgICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1l
IFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCisgICAgdHlwZW5hbWUgVDE2LCB0eXBl
bmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCisgICAg
dHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMz4KK3N0cnVjdCBUeXBlczIz
IHsKKyAgdHlwZWRlZiBUMSBIZWFkOworICB0eXBlZGVmIFR5cGVzMjI8VDIsIFQzLCBUNCwgVDUs
IFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAorICAgICAgVDE2
LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjM+IFRhaWw7Cit9OworCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5
cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5
cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCisgICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIs
IHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCisgICAgdHlwZW5hbWUg
VDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBU
MjAsCisgICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5h
bWUgVDI0Pgorc3RydWN0IFR5cGVzMjQgeworICB0eXBlZGVmIFQxIEhlYWQ7CisgIHR5cGVkZWYg
VHlwZXMyMzxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQx
MywgVDE0LCBUMTUsCisgICAgICBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQy
MywgVDI0PiBUYWlsOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwg
dHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICB0eXBlbmFtZSBUNiwg
dHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAorICAg
IHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwg
dHlwZW5hbWUgVDE1LAorICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBU
MTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAorICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5h
bWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1Pgorc3RydWN0
IFR5cGVzMjUgeworICB0eXBlZGVmIFQxIEhlYWQ7CisgIHR5cGVkZWYgVHlwZXMyNDxUMiwgVDMs
IFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsCisg
ICAgICBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjU+IFRh
aWw7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBU
MywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBU
NywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCisgICAgdHlwZW5hbWUg
VDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBU
MTUsCisgICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5h
bWUgVDE5LCB0eXBlbmFtZSBUMjAsCisgICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5
cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCisgICAgdHlwZW5hbWUgVDI2
Pgorc3RydWN0IFR5cGVzMjYgeworICB0eXBlZGVmIFQxIEhlYWQ7CisgIHR5cGVkZWYgVHlwZXMy
NTxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0
LCBUMTUsCisgICAgICBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0
LCBUMjUsIFQyNj4gVGFpbDsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUg
VDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCisgICAgdHlwZW5hbWUg
VDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwK
KyAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBU
MTQsIHR5cGVuYW1lIFQxNSwKKyAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5h
bWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKKyAgICB0eXBlbmFtZSBUMjEsIHR5
cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKKyAg
ICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNz4KK3N0cnVjdCBUeXBlczI3IHsKKyAgdHlwZWRl
ZiBUMSBIZWFkOworICB0eXBlZGVmIFR5cGVzMjY8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgs
IFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAorICAgICAgVDE2LCBUMTcsIFQxOCwg
VDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNz4gVGFpbDsKK307CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFt
ZSBUNCwgdHlwZW5hbWUgVDUsCisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFt
ZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFtZSBUMTEsIHR5cGVu
YW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKKyAgICB0
eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5
cGVuYW1lIFQyMCwKKyAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIz
LCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKKyAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1l
IFQyNywgdHlwZW5hbWUgVDI4Pgorc3RydWN0IFR5cGVzMjggeworICB0eXBlZGVmIFQxIEhlYWQ7
CisgIHR5cGVkZWYgVHlwZXMyNzxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwg
VDExLCBUMTIsIFQxMywgVDE0LCBUMTUsCisgICAgICBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwg
VDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjg+IFRhaWw7Cit9OworCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQs
IHR5cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgs
IHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCisgICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBU
MTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCisgICAgdHlwZW5h
bWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFt
ZSBUMjAsCisgICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlw
ZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCisgICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcs
IHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Pgorc3RydWN0IFR5cGVzMjkgeworICB0eXBlZGVm
IFQxIEhlYWQ7CisgIHR5cGVkZWYgVHlwZXMyODxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwg
VDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsCisgICAgICBUMTYsIFQxNywgVDE4LCBU
MTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsCisgICAgICBU
Mjk+IFRhaWw7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBl
bmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBl
bmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCisgICAgdHlw
ZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBl
bmFtZSBUMTUsCisgICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwg
dHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCisgICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBU
MjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCisgICAgdHlwZW5h
bWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFt
ZSBUMzA+CitzdHJ1Y3QgVHlwZXMzMCB7CisgIHR5cGVkZWYgVDEgSGVhZDsKKyAgdHlwZWRlZiBU
eXBlczI5PFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEz
LCBUMTQsIFQxNSwKKyAgICAgIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIz
LCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5LAorICAgICAgVDMwPiBUYWlsOworfTsKKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1l
IFQ0LCB0eXBlbmFtZSBUNSwKKyAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1l
IFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAorICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5h
bWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAorICAgIHR5
cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlw
ZW5hbWUgVDIwLAorICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMs
IHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAorICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUg
VDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAorICAgIHR5cGVu
YW1lIFQzMT4KK3N0cnVjdCBUeXBlczMxIHsKKyAgdHlwZWRlZiBUMSBIZWFkOworICB0eXBlZGVm
IFR5cGVzMzA8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBU
MTMsIFQxNCwgVDE1LAorICAgICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBU
MjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LCBUMjksCisgICAgICBUMzAsIFQzMT4gVGFpbDsK
K307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0
eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0
eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFtZSBUMTEs
IHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwK
KyAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBU
MTksIHR5cGVuYW1lIFQyMCwKKyAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5h
bWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKKyAgICB0eXBlbmFtZSBUMjYsIHR5
cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKKyAg
ICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMj4KK3N0cnVjdCBUeXBlczMyIHsKKyAgdHlwZWRl
ZiBUMSBIZWFkOworICB0eXBlZGVmIFR5cGVzMzE8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgs
IFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAorICAgICAgVDE2LCBUMTcsIFQxOCwg
VDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LCBUMjksCisg
ICAgICBUMzAsIFQzMSwgVDMyPiBUYWlsOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0
eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICB0
eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5h
bWUgVDEwLAorICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5
cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAorICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3
LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAorICAgIHR5cGVuYW1l
IFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUg
VDI1LAorICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVu
YW1lIFQyOSwgdHlwZW5hbWUgVDMwLAorICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0
eXBlbmFtZSBUMzM+CitzdHJ1Y3QgVHlwZXMzMyB7CisgIHR5cGVkZWYgVDEgSGVhZDsKKyAgdHlw
ZWRlZiBUeXBlczMyPFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQx
MiwgVDEzLCBUMTQsIFQxNSwKKyAgICAgIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQy
MiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5LAorICAgICAgVDMwLCBUMzEsIFQz
MiwgVDMzPiBUYWlsOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwg
dHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICB0eXBlbmFtZSBUNiwg
dHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAorICAg
IHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwg
dHlwZW5hbWUgVDE1LAorICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBU
MTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAorICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5h
bWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAorICAgIHR5
cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlw
ZW5hbWUgVDMwLAorICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMs
IHR5cGVuYW1lIFQzND4KK3N0cnVjdCBUeXBlczM0IHsKKyAgdHlwZWRlZiBUMSBIZWFkOworICB0
eXBlZGVmIFR5cGVzMzM8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwg
VDEyLCBUMTMsIFQxNCwgVDE1LAorICAgICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwg
VDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LCBUMjksCisgICAgICBUMzAsIFQzMSwg
VDMyLCBUMzMsIFQzND4gVGFpbDsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5h
bWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCisgICAgdHlwZW5h
bWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQx
MCwKKyAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFt
ZSBUMTQsIHR5cGVuYW1lIFQxNSwKKyAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlw
ZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKKyAgICB0eXBlbmFtZSBUMjEs
IHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwK
KyAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBU
MjksIHR5cGVuYW1lIFQzMCwKKyAgICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5h
bWUgVDMzLCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1lIFQzNT4KK3N0cnVjdCBUeXBlczM1IHsKKyAg
dHlwZWRlZiBUMSBIZWFkOworICB0eXBlZGVmIFR5cGVzMzQ8VDIsIFQzLCBUNCwgVDUsIFQ2LCBU
NywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAorICAgICAgVDE2LCBUMTcs
IFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LCBU
MjksCisgICAgICBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1PiBUYWlsOworfTsKKwordGVt
cGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0
LCB0eXBlbmFtZSBUNSwKKyAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4
LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAorICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUg
VDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAorICAgIHR5cGVu
YW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5h
bWUgVDIwLAorICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5
cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAorICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3
LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAorICAgIHR5cGVuYW1l
IFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNCwgdHlwZW5hbWUg
VDM1LAorICAgIHR5cGVuYW1lIFQzNj4KK3N0cnVjdCBUeXBlczM2IHsKKyAgdHlwZWRlZiBUMSBI
ZWFkOworICB0eXBlZGVmIFR5cGVzMzU8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBU
MTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAorICAgICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBU
MjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LCBUMjksCisgICAgICBU
MzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzY+IFRhaWw7Cit9OworCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVu
YW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVu
YW1lIFQ5LCB0eXBlbmFtZSBUMTAsCisgICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5
cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCisgICAgdHlwZW5hbWUgVDE2
LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAs
CisgICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUg
VDI0LCB0eXBlbmFtZSBUMjUsCisgICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVu
YW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCisgICAgdHlwZW5hbWUgVDMxLCB0
eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzUsCisg
ICAgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzc+CitzdHJ1Y3QgVHlwZXMzNyB7CisgIHR5cGVk
ZWYgVDEgSGVhZDsKKyAgdHlwZWRlZiBUeXBlczM2PFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4
LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKKyAgICAgIFQxNiwgVDE3LCBUMTgs
IFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5LAor
ICAgICAgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzc+IFRhaWw7Cit9Owor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5h
bWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5h
bWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCisgICAgdHlwZW5hbWUgVDExLCB0eXBl
bmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCisgICAg
dHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0
eXBlbmFtZSBUMjAsCisgICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQy
MywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCisgICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFt
ZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCisgICAgdHlw
ZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0eXBl
bmFtZSBUMzUsCisgICAgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOD4K
K3N0cnVjdCBUeXBlczM4IHsKKyAgdHlwZWRlZiBUMSBIZWFkOworICB0eXBlZGVmIFR5cGVzMzc8
VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwg
VDE1LAorICAgICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwg
VDI1LCBUMjYsIFQyNywgVDI4LCBUMjksCisgICAgICBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwg
VDM1LCBUMzYsIFQzNywgVDM4PiBUYWlsOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0
eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICB0
eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5h
bWUgVDEwLAorICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5
cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAorICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3
LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAorICAgIHR5cGVuYW1l
IFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUg
VDI1LAorICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVu
YW1lIFQyOSwgdHlwZW5hbWUgVDMwLAorICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0
eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNCwgdHlwZW5hbWUgVDM1LAorICAgIHR5cGVuYW1lIFQz
NiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOT4KK3N0cnVjdCBUeXBl
czM5IHsKKyAgdHlwZWRlZiBUMSBIZWFkOworICB0eXBlZGVmIFR5cGVzMzg8VDIsIFQzLCBUNCwg
VDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAorICAgICAg
VDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQy
NywgVDI4LCBUMjksCisgICAgICBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQz
NywgVDM4LCBUMzk+IFRhaWw7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1l
IFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1l
IFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAs
CisgICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUg
VDE0LCB0eXBlbmFtZSBUMTUsCisgICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVu
YW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCisgICAgdHlwZW5hbWUgVDIxLCB0
eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCisg
ICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5
LCB0eXBlbmFtZSBUMzAsCisgICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1l
IFQzMywgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzUsCisgICAgdHlwZW5hbWUgVDM2LCB0eXBl
bmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5LCB0eXBlbmFtZSBUNDA+CitzdHJ1
Y3QgVHlwZXM0MCB7CisgIHR5cGVkZWYgVDEgSGVhZDsKKyAgdHlwZWRlZiBUeXBlczM5PFQyLCBU
MywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwK
KyAgICAgIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwg
VDI2LCBUMjcsIFQyOCwgVDI5LAorICAgICAgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwg
VDM2LCBUMzcsIFQzOCwgVDM5LCBUNDA+IFRhaWw7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAor
ICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0
eXBlbmFtZSBUMTAsCisgICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQx
MywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCisgICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFt
ZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCisgICAgdHlw
ZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBl
bmFtZSBUMjUsCisgICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwg
dHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCisgICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBU
MzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzUsCisgICAgdHlwZW5h
bWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5LCB0eXBlbmFt
ZSBUNDAsCisgICAgdHlwZW5hbWUgVDQxPgorc3RydWN0IFR5cGVzNDEgeworICB0eXBlZGVmIFQx
IEhlYWQ7CisgIHR5cGVkZWYgVHlwZXM0MDxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDks
IFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsCisgICAgICBUMTYsIFQxNywgVDE4LCBUMTks
IFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsIFQyOSwKKyAgICAg
IFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLCBU
NDE+IFRhaWw7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBl
bmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBl
bmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCisgICAgdHlw
ZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBl
bmFtZSBUMTUsCisgICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwg
dHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCisgICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBU
MjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCisgICAgdHlwZW5h
bWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFt
ZSBUMzAsCisgICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlw
ZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzUsCisgICAgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcs
IHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5LCB0eXBlbmFtZSBUNDAsCisgICAgdHlwZW5hbWUg
VDQxLCB0eXBlbmFtZSBUNDI+CitzdHJ1Y3QgVHlwZXM0MiB7CisgIHR5cGVkZWYgVDEgSGVhZDsK
KyAgdHlwZWRlZiBUeXBlczQxPFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBU
MTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKKyAgICAgIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBU
MjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5LAorICAgICAgVDMwLCBU
MzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsIFQ0MSwgVDQy
PiBUYWlsOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5h
bWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICB0eXBlbmFtZSBUNiwgdHlwZW5h
bWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAorICAgIHR5cGVu
YW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5h
bWUgVDE1LAorICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5
cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAorICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIy
LCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAorICAgIHR5cGVuYW1l
IFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUg
VDMwLAorICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVu
YW1lIFQzNCwgdHlwZW5hbWUgVDM1LAorICAgIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0
eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOSwgdHlwZW5hbWUgVDQwLAorICAgIHR5cGVuYW1lIFQ0
MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDM+CitzdHJ1Y3QgVHlwZXM0MyB7CisgIHR5cGVk
ZWYgVDEgSGVhZDsKKyAgdHlwZWRlZiBUeXBlczQyPFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4
LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKKyAgICAgIFQxNiwgVDE3LCBUMTgs
IFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5LAor
ICAgICAgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBU
NDAsIFQ0MSwgVDQyLAorICAgICAgVDQzPiBUYWlsOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwK
KyAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwg
dHlwZW5hbWUgVDEwLAorICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBU
MTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAorICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5h
bWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAorICAgIHR5
cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlw
ZW5hbWUgVDI1LAorICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgs
IHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAorICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUg
VDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNCwgdHlwZW5hbWUgVDM1LAorICAgIHR5cGVu
YW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOSwgdHlwZW5h
bWUgVDQwLAorICAgIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5
cGVuYW1lIFQ0ND4KK3N0cnVjdCBUeXBlczQ0IHsKKyAgdHlwZWRlZiBUMSBIZWFkOworICB0eXBl
ZGVmIFR5cGVzNDM8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEy
LCBUMTMsIFQxNCwgVDE1LAorICAgICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIy
LCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LCBUMjksCisgICAgICBUMzAsIFQzMSwgVDMy
LCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwgVDQxLCBUNDIsIFQ0MywK
KyAgICAgIFQ0ND4gVGFpbDsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUg
VDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCisgICAgdHlwZW5hbWUg
VDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwK
KyAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBU
MTQsIHR5cGVuYW1lIFQxNSwKKyAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5h
bWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKKyAgICB0eXBlbmFtZSBUMjEsIHR5
cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKKyAg
ICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjks
IHR5cGVuYW1lIFQzMCwKKyAgICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUg
VDMzLCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1lIFQzNSwKKyAgICB0eXBlbmFtZSBUMzYsIHR5cGVu
YW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzksIHR5cGVuYW1lIFQ0MCwKKyAgICB0
eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQsIHR5
cGVuYW1lIFQ0NT4KK3N0cnVjdCBUeXBlczQ1IHsKKyAgdHlwZWRlZiBUMSBIZWFkOworICB0eXBl
ZGVmIFR5cGVzNDQ8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEy
LCBUMTMsIFQxNCwgVDE1LAorICAgICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIy
LCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LCBUMjksCisgICAgICBUMzAsIFQzMSwgVDMy
LCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwgVDQxLCBUNDIsIFQ0MywK
KyAgICAgIFQ0NCwgVDQ1PiBUYWlsOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBl
bmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICB0eXBl
bmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUg
VDEwLAorICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVu
YW1lIFQxNCwgdHlwZW5hbWUgVDE1LAorICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0
eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAorICAgIHR5cGVuYW1lIFQy
MSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1
LAorICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1l
IFQyOSwgdHlwZW5hbWUgVDMwLAorICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBl
bmFtZSBUMzMsIHR5cGVuYW1lIFQzNCwgdHlwZW5hbWUgVDM1LAorICAgIHR5cGVuYW1lIFQzNiwg
dHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOSwgdHlwZW5hbWUgVDQwLAor
ICAgIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0
NCwgdHlwZW5hbWUgVDQ1LAorICAgIHR5cGVuYW1lIFQ0Nj4KK3N0cnVjdCBUeXBlczQ2IHsKKyAg
dHlwZWRlZiBUMSBIZWFkOworICB0eXBlZGVmIFR5cGVzNDU8VDIsIFQzLCBUNCwgVDUsIFQ2LCBU
NywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAorICAgICAgVDE2LCBUMTcs
IFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LCBU
MjksCisgICAgICBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBU
MzksIFQ0MCwgVDQxLCBUNDIsIFQ0MywKKyAgICAgIFQ0NCwgVDQ1LCBUNDY+IFRhaWw7Cit9Owor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5h
bWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5h
bWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCisgICAgdHlwZW5hbWUgVDExLCB0eXBl
bmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCisgICAg
dHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0
eXBlbmFtZSBUMjAsCisgICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQy
MywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCisgICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFt
ZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCisgICAgdHlw
ZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0eXBl
bmFtZSBUMzUsCisgICAgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwg
dHlwZW5hbWUgVDM5LCB0eXBlbmFtZSBUNDAsCisgICAgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBU
NDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0LCB0eXBlbmFtZSBUNDUsCisgICAgdHlwZW5h
bWUgVDQ2LCB0eXBlbmFtZSBUNDc+CitzdHJ1Y3QgVHlwZXM0NyB7CisgIHR5cGVkZWYgVDEgSGVh
ZDsKKyAgdHlwZWRlZiBUeXBlczQ2PFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEw
LCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKKyAgICAgIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIw
LCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5LAorICAgICAgVDMw
LCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsIFQ0MSwg
VDQyLCBUNDMsCisgICAgICBUNDQsIFQ0NSwgVDQ2LCBUNDc+IFRhaWw7Cit9OworCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5
cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5
cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCisgICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIs
IHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCisgICAgdHlwZW5hbWUg
VDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBU
MjAsCisgICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5h
bWUgVDI0LCB0eXBlbmFtZSBUMjUsCisgICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5
cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCisgICAgdHlwZW5hbWUgVDMx
LCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzUs
CisgICAgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUg
VDM5LCB0eXBlbmFtZSBUNDAsCisgICAgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVu
YW1lIFQ0MywgdHlwZW5hbWUgVDQ0LCB0eXBlbmFtZSBUNDUsCisgICAgdHlwZW5hbWUgVDQ2LCB0
eXBlbmFtZSBUNDcsIHR5cGVuYW1lIFQ0OD4KK3N0cnVjdCBUeXBlczQ4IHsKKyAgdHlwZWRlZiBU
MSBIZWFkOworICB0eXBlZGVmIFR5cGVzNDc8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5
LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAorICAgICAgVDE2LCBUMTcsIFQxOCwgVDE5
LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LCBUMjksCisgICAg
ICBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwg
VDQxLCBUNDIsIFQ0MywKKyAgICAgIFQ0NCwgVDQ1LCBUNDYsIFQ0NywgVDQ4PiBUYWlsOworfTsK
KwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVu
YW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVu
YW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAorICAgIHR5cGVuYW1lIFQxMSwgdHlw
ZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAorICAg
IHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwg
dHlwZW5hbWUgVDIwLAorICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBU
MjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAorICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5h
bWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAorICAgIHR5
cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNCwgdHlw
ZW5hbWUgVDM1LAorICAgIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgs
IHR5cGVuYW1lIFQzOSwgdHlwZW5hbWUgVDQwLAorICAgIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUg
VDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NCwgdHlwZW5hbWUgVDQ1LAorICAgIHR5cGVu
YW1lIFQ0NiwgdHlwZW5hbWUgVDQ3LCB0eXBlbmFtZSBUNDgsIHR5cGVuYW1lIFQ0OT4KK3N0cnVj
dCBUeXBlczQ5IHsKKyAgdHlwZWRlZiBUMSBIZWFkOworICB0eXBlZGVmIFR5cGVzNDg8VDIsIFQz
LCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAor
ICAgICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBU
MjYsIFQyNywgVDI4LCBUMjksCisgICAgICBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBU
MzYsIFQzNywgVDM4LCBUMzksIFQ0MCwgVDQxLCBUNDIsIFQ0MywKKyAgICAgIFQ0NCwgVDQ1LCBU
NDYsIFQ0NywgVDQ4LCBUNDk+IFRhaWw7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5
cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5
cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFt
ZSBUMTAsCisgICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlw
ZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCisgICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcs
IHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCisgICAgdHlwZW5hbWUg
VDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBU
MjUsCisgICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5h
bWUgVDI5LCB0eXBlbmFtZSBUMzAsCisgICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5
cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzUsCisgICAgdHlwZW5hbWUgVDM2
LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5LCB0eXBlbmFtZSBUNDAs
CisgICAgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUg
VDQ0LCB0eXBlbmFtZSBUNDUsCisgICAgdHlwZW5hbWUgVDQ2LCB0eXBlbmFtZSBUNDcsIHR5cGVu
YW1lIFQ0OCwgdHlwZW5hbWUgVDQ5LCB0eXBlbmFtZSBUNTA+CitzdHJ1Y3QgVHlwZXM1MCB7Cisg
IHR5cGVkZWYgVDEgSGVhZDsKKyAgdHlwZWRlZiBUeXBlczQ5PFQyLCBUMywgVDQsIFQ1LCBUNiwg
VDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKKyAgICAgIFQxNiwgVDE3
LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwg
VDI5LAorICAgICAgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwg
VDM5LCBUNDAsIFQ0MSwgVDQyLCBUNDMsCisgICAgICBUNDQsIFQ0NSwgVDQ2LCBUNDcsIFQ0OCwg
VDQ5LCBUNTA+IFRhaWw7Cit9OworCisKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAorCisvLyBX
ZSBkb24ndCB3YW50IHRvIHJlcXVpcmUgdGhlIHVzZXJzIHRvIHdyaXRlIFR5cGVzTjwuLi4+IGRp
cmVjdGx5LAorLy8gYXMgdGhhdCB3b3VsZCByZXF1aXJlIHRoZW0gdG8gY291bnQgdGhlIGxlbmd0
aC4gIFR5cGVzPC4uLj4gaXMgbXVjaAorLy8gZWFzaWVyIHRvIHdyaXRlLCBidXQgZ2VuZXJhdGVz
IGhvcnJpYmxlIG1lc3NhZ2VzIHdoZW4gdGhlcmUgaXMgYQorLy8gY29tcGlsZXIgZXJyb3IsIGFz
IGdjYyBpbnNpc3RzIG9uIHByaW50aW5nIG91dCBlYWNoIHRlbXBsYXRlCisvLyBhcmd1bWVudCwg
ZXZlbiBpZiBpdCBoYXMgdGhlIGRlZmF1bHQgdmFsdWUgKHRoaXMgbWVhbnMgVHlwZXM8aW50Pgor
Ly8gd2lsbCBhcHBlYXIgYXMgVHlwZXM8aW50LCBOb25lLCBOb25lLCAuLi4sIE5vbmU+IGluIHRo
ZSBjb21waWxlcgorLy8gZXJyb3JzKS4KKy8vCisvLyBPdXIgc29sdXRpb24gaXMgdG8gY29tYmlu
ZSB0aGUgYmVzdCBwYXJ0IG9mIHRoZSB0d28gYXBwcm9hY2hlczogYQorLy8gdXNlciB3b3VsZCB3
cml0ZSBUeXBlczxUMSwgLi4uLCBUTj4sIGFuZCBHb29nbGUgVGVzdCB3aWxsIHRyYW5zbGF0ZQor
Ly8gdGhhdCB0byBUeXBlc048VDEsIC4uLiwgVE4+IGludGVybmFsbHkgdG8gbWFrZSBlcnJvciBt
ZXNzYWdlcworLy8gcmVhZGFibGUuICBUaGUgdHJhbnNsYXRpb24gaXMgZG9uZSBieSB0aGUgJ3R5
cGUnIG1lbWJlciBvZiB0aGUKKy8vIFR5cGVzIHRlbXBsYXRlLgordGVtcGxhdGUgPHR5cGVuYW1l
IFQxID0gaW50ZXJuYWw6Ok5vbmUsIHR5cGVuYW1lIFQyID0gaW50ZXJuYWw6Ok5vbmUsCisgICAg
dHlwZW5hbWUgVDMgPSBpbnRlcm5hbDo6Tm9uZSwgdHlwZW5hbWUgVDQgPSBpbnRlcm5hbDo6Tm9u
ZSwKKyAgICB0eXBlbmFtZSBUNSA9IGludGVybmFsOjpOb25lLCB0eXBlbmFtZSBUNiA9IGludGVy
bmFsOjpOb25lLAorICAgIHR5cGVuYW1lIFQ3ID0gaW50ZXJuYWw6Ok5vbmUsIHR5cGVuYW1lIFQ4
ID0gaW50ZXJuYWw6Ok5vbmUsCisgICAgdHlwZW5hbWUgVDkgPSBpbnRlcm5hbDo6Tm9uZSwgdHlw
ZW5hbWUgVDEwID0gaW50ZXJuYWw6Ok5vbmUsCisgICAgdHlwZW5hbWUgVDExID0gaW50ZXJuYWw6
Ok5vbmUsIHR5cGVuYW1lIFQxMiA9IGludGVybmFsOjpOb25lLAorICAgIHR5cGVuYW1lIFQxMyA9
IGludGVybmFsOjpOb25lLCB0eXBlbmFtZSBUMTQgPSBpbnRlcm5hbDo6Tm9uZSwKKyAgICB0eXBl
bmFtZSBUMTUgPSBpbnRlcm5hbDo6Tm9uZSwgdHlwZW5hbWUgVDE2ID0gaW50ZXJuYWw6Ok5vbmUs
CisgICAgdHlwZW5hbWUgVDE3ID0gaW50ZXJuYWw6Ok5vbmUsIHR5cGVuYW1lIFQxOCA9IGludGVy
bmFsOjpOb25lLAorICAgIHR5cGVuYW1lIFQxOSA9IGludGVybmFsOjpOb25lLCB0eXBlbmFtZSBU
MjAgPSBpbnRlcm5hbDo6Tm9uZSwKKyAgICB0eXBlbmFtZSBUMjEgPSBpbnRlcm5hbDo6Tm9uZSwg
dHlwZW5hbWUgVDIyID0gaW50ZXJuYWw6Ok5vbmUsCisgICAgdHlwZW5hbWUgVDIzID0gaW50ZXJu
YWw6Ok5vbmUsIHR5cGVuYW1lIFQyNCA9IGludGVybmFsOjpOb25lLAorICAgIHR5cGVuYW1lIFQy
NSA9IGludGVybmFsOjpOb25lLCB0eXBlbmFtZSBUMjYgPSBpbnRlcm5hbDo6Tm9uZSwKKyAgICB0
eXBlbmFtZSBUMjcgPSBpbnRlcm5hbDo6Tm9uZSwgdHlwZW5hbWUgVDI4ID0gaW50ZXJuYWw6Ok5v
bmUsCisgICAgdHlwZW5hbWUgVDI5ID0gaW50ZXJuYWw6Ok5vbmUsIHR5cGVuYW1lIFQzMCA9IGlu
dGVybmFsOjpOb25lLAorICAgIHR5cGVuYW1lIFQzMSA9IGludGVybmFsOjpOb25lLCB0eXBlbmFt
ZSBUMzIgPSBpbnRlcm5hbDo6Tm9uZSwKKyAgICB0eXBlbmFtZSBUMzMgPSBpbnRlcm5hbDo6Tm9u
ZSwgdHlwZW5hbWUgVDM0ID0gaW50ZXJuYWw6Ok5vbmUsCisgICAgdHlwZW5hbWUgVDM1ID0gaW50
ZXJuYWw6Ok5vbmUsIHR5cGVuYW1lIFQzNiA9IGludGVybmFsOjpOb25lLAorICAgIHR5cGVuYW1l
IFQzNyA9IGludGVybmFsOjpOb25lLCB0eXBlbmFtZSBUMzggPSBpbnRlcm5hbDo6Tm9uZSwKKyAg
ICB0eXBlbmFtZSBUMzkgPSBpbnRlcm5hbDo6Tm9uZSwgdHlwZW5hbWUgVDQwID0gaW50ZXJuYWw6
Ok5vbmUsCisgICAgdHlwZW5hbWUgVDQxID0gaW50ZXJuYWw6Ok5vbmUsIHR5cGVuYW1lIFQ0MiA9
IGludGVybmFsOjpOb25lLAorICAgIHR5cGVuYW1lIFQ0MyA9IGludGVybmFsOjpOb25lLCB0eXBl
bmFtZSBUNDQgPSBpbnRlcm5hbDo6Tm9uZSwKKyAgICB0eXBlbmFtZSBUNDUgPSBpbnRlcm5hbDo6
Tm9uZSwgdHlwZW5hbWUgVDQ2ID0gaW50ZXJuYWw6Ok5vbmUsCisgICAgdHlwZW5hbWUgVDQ3ID0g
aW50ZXJuYWw6Ok5vbmUsIHR5cGVuYW1lIFQ0OCA9IGludGVybmFsOjpOb25lLAorICAgIHR5cGVu
YW1lIFQ0OSA9IGludGVybmFsOjpOb25lLCB0eXBlbmFtZSBUNTAgPSBpbnRlcm5hbDo6Tm9uZT4K
K3N0cnVjdCBUeXBlcyB7CisgIHR5cGVkZWYgaW50ZXJuYWw6OlR5cGVzNTA8VDEsIFQyLCBUMywg
VDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwKKyAgICAgIFQxMywgVDE0LCBU
MTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2
LAorICAgICAgVDI3LCBUMjgsIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2
LCBUMzcsIFQzOCwgVDM5LCBUNDAsCisgICAgICBUNDEsIFQ0MiwgVDQzLCBUNDQsIFQ0NSwgVDQ2
LCBUNDcsIFQ0OCwgVDQ5LCBUNTA+IHR5cGU7Cit9OworCit0ZW1wbGF0ZSA8Pgorc3RydWN0IFR5
cGVzPGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZT4geworICB0eXBlZGVmIGludGVybmFsOjpUeXBlczAgdHlwZTsKK307Cit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVDE+CitzdHJ1Y3QgVHlwZXM8VDEsIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lPiB7CisgIHR5cGVkZWYgaW50ZXJuYWw6OlR5cGVzMTxUMT4g
dHlwZTsKK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgorc3RydWN0IFR5
cGVzPFQxLCBUMiwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKKyAgICBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKKyAgICBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKKyAg
ICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9uZT4geworICB0eXBlZGVmIGlu
dGVybmFsOjpUeXBlczI8VDEsIFQyPiB0eXBlOworfTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwg
dHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzPgorc3RydWN0IFR5cGVzPFQxLCBUMiwgVDMsIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisg
ICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
CisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50
ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmU+IHsKKyAgdHlwZWRlZiBpbnRlcm5hbDo6VHlwZXMzPFQxLCBUMiwgVDM+IHR5cGU7Cit9Owor
dGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1l
IFQ0Pgorc3RydWN0IFR5cGVzPFQxLCBUMiwgVDMsIFQ0LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAg
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmU+IHsKKyAgdHlwZWRlZiBpbnRlcm5hbDo6VHlwZXM0
PFQxLCBUMiwgVDMsIFQ0PiB0eXBlOworfTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5h
bWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDU+CitzdHJ1Y3QgVHlw
ZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisg
ICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
CisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50
ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZT4g
eworICB0eXBlZGVmIGludGVybmFsOjpUeXBlczU8VDEsIFQyLCBUMywgVDQsIFQ1PiB0eXBlOwor
fTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBl
bmFtZSBUNCwgdHlwZW5hbWUgVDUsCisgICAgdHlwZW5hbWUgVDY+CitzdHJ1Y3QgVHlwZXM8VDEs
IFQyLCBUMywgVDQsIFQ1LCBUNiwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAg
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFs
OjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAor
ICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZT4geworICB0eXBlZGVmIGludGVy
bmFsOjpUeXBlczY8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNj4gdHlwZTsKK307Cit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVu
YW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNz4KK3N0cnVjdCBUeXBlczxUMSwg
VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAor
ICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLAorICAgIGludGVybmFsOjpOb25lPiB7CisgIHR5cGVkZWYgaW50ZXJuYWw6OlR5cGVzNzxU
MSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNz4gdHlwZTsKK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAor
ICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDg+CitzdHJ1Y3QgVHlwZXM8
VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisg
ICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
CisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50
ZXJuYWw6Ok5vbmU+IHsKKyAgdHlwZWRlZiBpbnRlcm5hbDo6VHlwZXM4PFQxLCBUMiwgVDMsIFQ0
LCBUNSwgVDYsIFQ3LCBUOD4gdHlwZTsKK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVu
YW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5cGVu
YW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Pgorc3RydWN0IFR5
cGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIGludGVybmFsOjpOb25lLAor
ICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lPiB7CisgIHR5cGVkZWYgaW50ZXJuYWw6OlR5cGVzOTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2
LCBUNywgVDgsIFQ5PiB0eXBlOworfTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUg
VDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCisgICAgdHlwZW5hbWUg
VDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMD4K
K3N0cnVjdCBUeXBlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIGlu
dGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAg
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmU+IHsKKyAgdHlwZWRlZiBpbnRlcm5hbDo6VHlwZXMxMDxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2
LCBUNywgVDgsIFQ5LCBUMTA+IHR5cGU7Cit9OwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBl
bmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICB0eXBl
bmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUg
VDEwLAorICAgIHR5cGVuYW1lIFQxMT4KK3N0cnVjdCBUeXBlczxUMSwgVDIsIFQzLCBUNCwgVDUs
IFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisg
ICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
CisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50
ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lPiB7CisgIHR5cGVkZWYgaW50ZXJuYWw6OlR5cGVzMTE8VDEsIFQyLCBU
MywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTE+IHR5cGU7Cit9OwordGVtcGxhdGUg
PHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBl
bmFtZSBUNSwKKyAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBl
bmFtZSBUOSwgdHlwZW5hbWUgVDEwLAorICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyPgor
c3RydWN0IFR5cGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDEx
LCBUMTIsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lPiB7CisgIHR5cGVkZWYgaW50ZXJu
YWw6OlR5cGVzMTI8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEs
CisgICAgICBUMTI+IHR5cGU7Cit9OwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBU
MiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICB0eXBlbmFtZSBU
NiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAor
ICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTM+CitzdHJ1Y3QgVHlw
ZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEz
LAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAg
IGludGVybmFsOjpOb25lPiB7CisgIHR5cGVkZWYgaW50ZXJuYWw6OlR5cGVzMTM8VDEsIFQyLCBU
MywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwKKyAgICAgIFQxMz4gdHlw
ZTsKK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywg
dHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywg
dHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCisgICAgdHlwZW5hbWUgVDEx
LCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Pgorc3RydWN0IFR5cGVz
PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywg
VDE0LAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAg
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFs
OjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lPiB7
CisgIHR5cGVkZWYgaW50ZXJuYWw6OlR5cGVzMTQ8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcs
IFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwKKyAgICAgIFQxMywgVDE0PiB0eXBlOworfTsKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwg
dHlwZW5hbWUgVDUsCisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwg
dHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQx
MiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNT4KK3N0cnVjdCBUeXBl
czxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMs
IFQxNCwgVDE1LAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmU+IHsKKyAgdHlwZWRl
ZiBpbnRlcm5hbDo6VHlwZXMxNTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBU
MTAsIFQxMSwgVDEyLAorICAgICAgVDEzLCBUMTQsIFQxNT4gdHlwZTsKK307Cit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVu
YW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVu
YW1lIFQ5LCB0eXBlbmFtZSBUMTAsCisgICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5
cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCisgICAgdHlwZW5hbWUgVDE2
Pgorc3RydWN0IFR5cGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwg
VDExLCBUMTIsIFQxMywgVDE0LCBUMTUsCisgICAgVDE2LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKKyAgICBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKKyAg
ICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKKyAgICBpbnRlcm5h
bDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwK
KyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmU+IHsKKyAgdHlw
ZWRlZiBpbnRlcm5hbDo6VHlwZXMxNjxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5
LCBUMTAsIFQxMSwgVDEyLAorICAgICAgVDEzLCBUMTQsIFQxNSwgVDE2PiB0eXBlOworfTsKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBU
NCwgdHlwZW5hbWUgVDUsCisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBU
OCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1l
IFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKKyAgICB0eXBl
bmFtZSBUMTYsIHR5cGVuYW1lIFQxNz4KK3N0cnVjdCBUeXBlczxUMSwgVDIsIFQzLCBUNCwgVDUs
IFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAorICAgIFQxNiwg
VDE3LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKKyAgICBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9u
ZT4geworICB0eXBlZGVmIGludGVybmFsOjpUeXBlczE3PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYs
IFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsCisgICAgICBUMTMsIFQxNCwgVDE1LCBUMTYsIFQx
Nz4gdHlwZTsKK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFt
ZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFt
ZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCisgICAgdHlwZW5h
bWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFt
ZSBUMTUsCisgICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOD4KK3N0
cnVjdCBUeXBlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwg
VDEyLCBUMTMsIFQxNCwgVDE1LAorICAgIFQxNiwgVDE3LCBUMTgsIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisg
ICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
CisgICAgaW50ZXJuYWw6Ok5vbmU+IHsKKyAgdHlwZWRlZiBpbnRlcm5hbDo6VHlwZXMxODxUMSwg
VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLAorICAgICAgVDEz
LCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOD4gdHlwZTsKK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAor
ICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0
eXBlbmFtZSBUMTAsCisgICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQx
MywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCisgICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFt
ZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Pgorc3RydWN0IFR5cGVzPFQxLCBUMiwg
VDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUs
CisgICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAg
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lPiB7CisgIHR5cGVkZWYg
aW50ZXJuYWw6OlR5cGVzMTk8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEw
LCBUMTEsIFQxMiwKKyAgICAgIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOT4gdHlw
ZTsKK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywg
dHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywg
dHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCisgICAgdHlwZW5hbWUgVDEx
LCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUs
CisgICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUg
VDE5LCB0eXBlbmFtZSBUMjA+CitzdHJ1Y3QgVHlwZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwg
VDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKKyAgICBUMTYsIFQxNywg
VDE4LCBUMTksIFQyMCwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKKyAgICBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKKyAg
ICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lPiB7CisgIHR5cGVkZWYgaW50ZXJuYWw6OlR5cGVzMjA8VDEsIFQyLCBU
MywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwKKyAgICAgIFQxMywgVDE0
LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwPiB0eXBlOworfTsKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUg
VDUsCisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUg
VDksIHR5cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5h
bWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKKyAgICB0eXBlbmFtZSBUMTYsIHR5
cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKKyAg
ICB0eXBlbmFtZSBUMjE+CitzdHJ1Y3QgVHlwZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcs
IFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKKyAgICBUMTYsIFQxNywgVDE4
LCBUMTksIFQyMCwgVDIxLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZT4geworICB0eXBlZGVmIGludGVybmFsOjpUeXBlczIxPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYs
IFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsCisgICAgICBUMTMsIFQxNCwgVDE1LCBUMTYsIFQx
NywgVDE4LCBUMTksIFQyMCwgVDIxPiB0eXBlOworfTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwg
dHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCisgICAg
dHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVu
YW1lIFQxMCwKKyAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0
eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKKyAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQx
NywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKKyAgICB0eXBlbmFt
ZSBUMjEsIHR5cGVuYW1lIFQyMj4KK3N0cnVjdCBUeXBlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2
LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAorICAgIFQxNiwgVDE3
LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZT4gewor
ICB0eXBlZGVmIGludGVybmFsOjpUeXBlczIyPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBU
OCwgVDksIFQxMCwgVDExLCBUMTIsCisgICAgICBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4
LCBUMTksIFQyMCwgVDIxLCBUMjI+IHR5cGU7Cit9OwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0
eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICB0
eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5h
bWUgVDEwLAorICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5
cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAorICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3
LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAorICAgIHR5cGVuYW1l
IFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjM+CitzdHJ1Y3QgVHlwZXM8VDEsIFQyLCBU
MywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwK
KyAgICBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFs
OjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAor
ICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lPiB7
CisgIHR5cGVkZWYgaW50ZXJuYWw6OlR5cGVzMjM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcs
IFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwKKyAgICAgIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBU
MTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzPiB0eXBlOworfTsKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUs
CisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDks
IHR5cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUg
VDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKKyAgICB0eXBlbmFtZSBUMTYsIHR5cGVu
YW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKKyAgICB0
eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQ+Citz
dHJ1Y3QgVHlwZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEs
IFQxMiwgVDEzLCBUMTQsIFQxNSwKKyAgICBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBU
MjIsIFQyMywgVDI0LCBpbnRlcm5hbDo6Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKKyAgICBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKKyAg
ICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKKyAgICBpbnRlcm5h
bDo6Tm9uZT4geworICB0eXBlZGVmIGludGVybmFsOjpUeXBlczI0PFQxLCBUMiwgVDMsIFQ0LCBU
NSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsCisgICAgICBUMTMsIFQxNCwgVDE1LCBU
MTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0PiB0eXBlOworfTsKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBU
NCwgdHlwZW5hbWUgVDUsCisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBU
OCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1l
IFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKKyAgICB0eXBl
bmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVu
YW1lIFQyMCwKKyAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0
eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNT4KK3N0cnVjdCBUeXBlczxUMSwgVDIsIFQzLCBUNCwg
VDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAorICAgIFQx
NiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgaW50ZXJuYWw6
Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisg
ICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmU+IHsKKyAgdHlwZWRlZiBpbnRlcm5hbDo6VHlwZXMyNTxUMSwg
VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLAorICAgICAgVDEz
LCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwg
VDI1PiB0eXBlOworfTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVu
YW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCisgICAgdHlwZW5hbWUgVDYsIHR5cGVu
YW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKKyAgICB0eXBl
bmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVu
YW1lIFQxNSwKKyAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0
eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKKyAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQy
MiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKKyAgICB0eXBlbmFt
ZSBUMjY+CitzdHJ1Y3QgVHlwZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwg
VDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKKyAgICBUMTYsIFQxNywgVDE4LCBUMTksIFQy
MCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZT4geworICB0eXBl
ZGVmIGludGVybmFsOjpUeXBlczI2PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDks
IFQxMCwgVDExLCBUMTIsCisgICAgICBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTks
IFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsCisgICAgICBUMjY+IHR5cGU7Cit9OwordGVt
cGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0
LCB0eXBlbmFtZSBUNSwKKyAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4
LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAorICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUg
VDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAorICAgIHR5cGVu
YW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5h
bWUgVDIwLAorICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5
cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAorICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3
Pgorc3RydWN0IFR5cGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwg
VDExLCBUMTIsIFQxMywgVDE0LCBUMTUsCisgICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQy
MSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lPiB7CisgIHR5cGVkZWYgaW50ZXJuYWw6OlR5
cGVzMjc8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwK
KyAgICAgIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwg
VDIzLCBUMjQsIFQyNSwgVDI2LAorICAgICAgVDI3PiB0eXBlOworfTsKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUg
VDUsCisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUg
VDksIHR5cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5h
bWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKKyAgICB0eXBlbmFtZSBUMTYsIHR5
cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKKyAg
ICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQs
IHR5cGVuYW1lIFQyNSwKKyAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUg
VDI4Pgorc3RydWN0IFR5cGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQx
MCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsCisgICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAs
IFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LAorICAgIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAg
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFs
OjpOb25lLCBpbnRlcm5hbDo6Tm9uZT4geworICB0eXBlZGVmIGludGVybmFsOjpUeXBlczI4PFQx
LCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsCisgICAgICBU
MTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0
LCBUMjUsIFQyNiwKKyAgICAgIFQyNywgVDI4PiB0eXBlOworfTsKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUs
CisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDks
IHR5cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUg
VDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKKyAgICB0eXBlbmFtZSBUMTYsIHR5cGVu
YW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKKyAgICB0
eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5
cGVuYW1lIFQyNSwKKyAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4
LCB0eXBlbmFtZSBUMjk+CitzdHJ1Y3QgVHlwZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcs
IFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKKyAgICBUMTYsIFQxNywgVDE4
LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsIFQyOSwK
KyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKKyAgICBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwKKyAgICBpbnRlcm5hbDo6Tm9uZT4geworICB0eXBlZGVmIGludGVybmFsOjpUeXBlczI5PFQx
LCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsCisgICAgICBU
MTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0
LCBUMjUsIFQyNiwKKyAgICAgIFQyNywgVDI4LCBUMjk+IHR5cGU7Cit9OwordGVtcGxhdGUgPHR5
cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFt
ZSBUNSwKKyAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFt
ZSBUOSwgdHlwZW5hbWUgVDEwLAorICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBl
bmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAorICAgIHR5cGVuYW1lIFQxNiwg
dHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAor
ICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQy
NCwgdHlwZW5hbWUgVDI1LAorICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFt
ZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwPgorc3RydWN0IFR5cGVzPFQxLCBUMiwg
VDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUs
CisgICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBU
MjYsIFQyNywgVDI4LCBUMjksIFQzMCwKKyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKKyAgICBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZT4geworICB0eXBlZGVmIGludGVybmFsOjpUeXBlczMw
PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsCisgICAg
ICBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywg
VDI0LCBUMjUsIFQyNiwKKyAgICAgIFQyNywgVDI4LCBUMjksIFQzMD4gdHlwZTsKK307Cit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQs
IHR5cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgs
IHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCisgICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBU
MTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCisgICAgdHlwZW5h
bWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFt
ZSBUMjAsCisgICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlw
ZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCisgICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcs
IHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCisgICAgdHlwZW5hbWUg
VDMxPgorc3RydWN0IFR5cGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQx
MCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsCisgICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAs
IFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LCBUMjksIFQzMCwKKyAgICBU
MzEsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmU+IHsKKyAgdHlwZWRlZiBp
bnRlcm5hbDo6VHlwZXMzMTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAs
IFQxMSwgVDEyLAorICAgICAgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAs
IFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsCisgICAgICBUMjcsIFQyOCwgVDI5LCBUMzAs
IFQzMT4gdHlwZTsKK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBl
bmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBl
bmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCisgICAgdHlw
ZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBl
bmFtZSBUMTUsCisgICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwg
dHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCisgICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBU
MjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCisgICAgdHlwZW5h
bWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFt
ZSBUMzAsCisgICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzI+CitzdHJ1Y3QgVHlwZXM8VDEs
IFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQs
IFQxNSwKKyAgICBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBU
MjUsIFQyNiwgVDI3LCBUMjgsIFQyOSwgVDMwLAorICAgIFQzMSwgVDMyLCBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKKyAgICBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmU+IHsKKyAgdHlwZWRlZiBpbnRlcm5hbDo6VHlwZXMzMjxUMSwgVDIsIFQzLCBUNCwg
VDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLAorICAgICAgVDEzLCBUMTQsIFQxNSwg
VDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsCisg
ICAgICBUMjcsIFQyOCwgVDI5LCBUMzAsIFQzMSwgVDMyPiB0eXBlOworfTsKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5h
bWUgVDUsCisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5h
bWUgVDksIHR5cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlw
ZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKKyAgICB0eXBlbmFtZSBUMTYs
IHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwK
KyAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBU
MjQsIHR5cGVuYW1lIFQyNSwKKyAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5h
bWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKKyAgICB0eXBlbmFtZSBUMzEsIHR5
cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzPgorc3RydWN0IFR5cGVzPFQxLCBUMiwgVDMsIFQ0LCBU
NSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsCisgICAgVDE2
LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywg
VDI4LCBUMjksIFQzMCwKKyAgICBUMzEsIFQzMiwgVDMzLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZT4geworICB0eXBlZGVmIGlu
dGVybmFsOjpUeXBlczMzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwg
VDExLCBUMTIsCisgICAgICBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwg
VDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwKKyAgICAgIFQyNywgVDI4LCBUMjksIFQzMCwg
VDMxLCBUMzIsIFQzMz4gdHlwZTsKK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1l
IFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1l
IFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAs
CisgICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUg
VDE0LCB0eXBlbmFtZSBUMTUsCisgICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVu
YW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCisgICAgdHlwZW5hbWUgVDIxLCB0
eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCisg
ICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5
LCB0eXBlbmFtZSBUMzAsCisgICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1l
IFQzMywgdHlwZW5hbWUgVDM0Pgorc3RydWN0IFR5cGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYs
IFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsCisgICAgVDE2LCBUMTcs
IFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LCBU
MjksIFQzMCwKKyAgICBUMzEsIFQzMiwgVDMzLCBUMzQsIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsCisgICAgaW50ZXJuYWw6Ok5vbmU+IHsKKyAgdHlwZWRlZiBpbnRlcm5hbDo6VHlwZXMzNDxU
MSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLAorICAgICAg
VDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQy
NCwgVDI1LCBUMjYsCisgICAgICBUMjcsIFQyOCwgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQz
ND4gdHlwZTsKK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFt
ZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFt
ZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCisgICAgdHlwZW5h
bWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFt
ZSBUMTUsCisgICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlw
ZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCisgICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIs
IHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCisgICAgdHlwZW5hbWUg
VDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBU
MzAsCisgICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5h
bWUgVDM0LCB0eXBlbmFtZSBUMzU+CitzdHJ1Y3QgVHlwZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBU
NiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKKyAgICBUMTYsIFQx
NywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgs
IFQyOSwgVDMwLAorICAgIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFs
OjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAor
ICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lPiB7CisgIHR5cGVkZWYgaW50ZXJuYWw6OlR5cGVzMzU8VDEsIFQyLCBUMywgVDQs
IFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwKKyAgICAgIFQxMywgVDE0LCBUMTUs
IFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LAor
ICAgICAgVDI3LCBUMjgsIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNT4gdHlwZTsK
K307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlw
ZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlw
ZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCisgICAgdHlwZW5hbWUgVDExLCB0
eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCisg
ICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5
LCB0eXBlbmFtZSBUMjAsCisgICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1l
IFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCisgICAgdHlwZW5hbWUgVDI2LCB0eXBl
bmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCisgICAg
dHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0
eXBlbmFtZSBUMzUsCisgICAgdHlwZW5hbWUgVDM2Pgorc3RydWN0IFR5cGVzPFQxLCBUMiwgVDMs
IFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsCisg
ICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYs
IFQyNywgVDI4LCBUMjksIFQzMCwKKyAgICBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisg
ICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmU+IHsKKyAgdHlwZWRlZiBpbnRlcm5hbDo6VHlwZXMzNjxUMSwgVDIsIFQzLCBUNCwg
VDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLAorICAgICAgVDEzLCBUMTQsIFQxNSwg
VDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsCisg
ICAgICBUMjcsIFQyOCwgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzY+IHR5
cGU7Cit9OwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMs
IHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcs
IHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAorICAgIHR5cGVuYW1lIFQx
MSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1
LAorICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1l
IFQxOSwgdHlwZW5hbWUgVDIwLAorICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBl
bmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAorICAgIHR5cGVuYW1lIFQyNiwg
dHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAor
ICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQz
NCwgdHlwZW5hbWUgVDM1LAorICAgIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3Pgorc3RydWN0
IFR5cGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIs
IFQxMywgVDE0LCBUMTUsCisgICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBU
MjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LCBUMjksIFQzMCwKKyAgICBUMzEsIFQzMiwgVDMz
LCBUMzQsIFQzNSwgVDM2LCBUMzcsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKKyAg
ICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lPiB7CisgIHR5cGVkZWYgaW50ZXJuYWw6OlR5cGVzMzc8VDEsIFQyLCBU
MywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwKKyAgICAgIFQxMywgVDE0
LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwg
VDI2LAorICAgICAgVDI3LCBUMjgsIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwg
VDM2LCBUMzc+IHR5cGU7Cit9OwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwg
dHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICB0eXBlbmFtZSBUNiwg
dHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAorICAg
IHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwg
dHlwZW5hbWUgVDE1LAorICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBU
MTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAorICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5h
bWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAorICAgIHR5
cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlw
ZW5hbWUgVDMwLAorICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMs
IHR5cGVuYW1lIFQzNCwgdHlwZW5hbWUgVDM1LAorICAgIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUg
VDM3LCB0eXBlbmFtZSBUMzg+CitzdHJ1Y3QgVHlwZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwg
VDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKKyAgICBUMTYsIFQxNywg
VDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsIFQy
OSwgVDMwLAorICAgIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lPiB7CisgIHR5cGVkZWYgaW50ZXJuYWw6OlR5
cGVzMzg8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwK
KyAgICAgIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwg
VDIzLCBUMjQsIFQyNSwgVDI2LAorICAgICAgVDI3LCBUMjgsIFQyOSwgVDMwLCBUMzEsIFQzMiwg
VDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOD4gdHlwZTsKK307Cit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1
LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5
LCB0eXBlbmFtZSBUMTAsCisgICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1l
IFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCisgICAgdHlwZW5hbWUgVDE2LCB0eXBl
bmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCisgICAg
dHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0
eXBlbmFtZSBUMjUsCisgICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQy
OCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCisgICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFt
ZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzUsCisgICAgdHlw
ZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Pgorc3Ry
dWN0IFR5cGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBU
MTIsIFQxMywgVDE0LCBUMTUsCisgICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIy
LCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LCBUMjksIFQzMCwKKyAgICBUMzEsIFQzMiwg
VDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBpbnRlcm5hbDo6Tm9uZSwKKyAgICBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmU+IHsK
KyAgdHlwZWRlZiBpbnRlcm5hbDo6VHlwZXMzOTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywg
VDgsIFQ5LCBUMTAsIFQxMSwgVDEyLAorICAgICAgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQx
OCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsCisgICAgICBUMjcsIFQy
OCwgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzk+
IHR5cGU7Cit9OwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUg
VDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUg
VDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAorICAgIHR5cGVuYW1l
IFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUg
VDE1LAorICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVu
YW1lIFQxOSwgdHlwZW5hbWUgVDIwLAorICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0
eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAorICAgIHR5cGVuYW1lIFQy
NiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMw
LAorICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1l
IFQzNCwgdHlwZW5hbWUgVDM1LAorICAgIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBl
bmFtZSBUMzgsIHR5cGVuYW1lIFQzOSwgdHlwZW5hbWUgVDQwPgorc3RydWN0IFR5cGVzPFQxLCBU
MiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBU
MTUsCisgICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1
LCBUMjYsIFQyNywgVDI4LCBUMjksIFQzMCwKKyAgICBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwg
VDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsIGludGVybmFsOjpOb25lLAorICAgIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAg
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lLAorICAgIGludGVybmFsOjpOb25lPiB7CisgIHR5cGVkZWYgaW50ZXJuYWw6OlR5cGVz
NDA8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwKKyAg
ICAgIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIz
LCBUMjQsIFQyNSwgVDI2LAorICAgICAgVDI3LCBUMjgsIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMz
LCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LAorICAgICAgVDQwPiB0eXBlOworfTsKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBU
NCwgdHlwZW5hbWUgVDUsCisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBU
OCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1l
IFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKKyAgICB0eXBl
bmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVu
YW1lIFQyMCwKKyAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0
eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKKyAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQy
NywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKKyAgICB0eXBlbmFt
ZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1l
IFQzNSwKKyAgICB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBl
bmFtZSBUMzksIHR5cGVuYW1lIFQ0MCwKKyAgICB0eXBlbmFtZSBUNDE+CitzdHJ1Y3QgVHlwZXM8
VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBU
MTQsIFQxNSwKKyAgICBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0
LCBUMjUsIFQyNiwgVDI3LCBUMjgsIFQyOSwgVDMwLAorICAgIFQzMSwgVDMyLCBUMzMsIFQzNCwg
VDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwgVDQxLCBpbnRlcm5hbDo6Tm9uZSwKKyAgICBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZT4geworICB0eXBlZGVmIGludGVybmFsOjpUeXBlczQxPFQxLCBUMiwg
VDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsCisgICAgICBUMTMsIFQx
NCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUs
IFQyNiwKKyAgICAgIFQyNywgVDI4LCBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUs
IFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLAorICAgICAgVDQxPiB0eXBlOworfTsKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlw
ZW5hbWUgVDUsCisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlw
ZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwg
dHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKKyAgICB0eXBlbmFtZSBU
MTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQy
MCwKKyAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFt
ZSBUMjQsIHR5cGVuYW1lIFQyNSwKKyAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlw
ZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKKyAgICB0eXBlbmFtZSBUMzEs
IHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1lIFQzNSwK
KyAgICB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBU
MzksIHR5cGVuYW1lIFQ0MCwKKyAgICB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0Mj4KK3N0cnVj
dCBUeXBlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEy
LCBUMTMsIFQxNCwgVDE1LAorICAgIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwg
VDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5LCBUMzAsCisgICAgVDMxLCBUMzIsIFQz
MywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLCBUNDEsIFQ0MiwgaW50ZXJuYWw6
Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsCisgICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZT4geworICB0eXBlZGVmIGludGVybmFsOjpUeXBlczQyPFQxLCBUMiwgVDMs
IFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsCisgICAgICBUMTMsIFQxNCwg
VDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQy
NiwKKyAgICAgIFQyNywgVDI4LCBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQz
NiwgVDM3LCBUMzgsIFQzOSwgVDQwLAorICAgICAgVDQxLCBUNDI+IHR5cGU7Cit9OwordGVtcGxh
dGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0
eXBlbmFtZSBUNSwKKyAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0
eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAorICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEy
LCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAorICAgIHR5cGVuYW1l
IFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUg
VDIwLAorICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVu
YW1lIFQyNCwgdHlwZW5hbWUgVDI1LAorICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0
eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAorICAgIHR5cGVuYW1lIFQz
MSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNCwgdHlwZW5hbWUgVDM1
LAorICAgIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1l
IFQzOSwgdHlwZW5hbWUgVDQwLAorICAgIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBl
bmFtZSBUNDM+CitzdHJ1Y3QgVHlwZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBU
OSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKKyAgICBUMTYsIFQxNywgVDE4LCBUMTks
IFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsIFQyOSwgVDMwLAor
ICAgIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwgVDQx
LCBUNDIsIFQ0MywKKyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lPiB7CisgIHR5cGVkZWYgaW50ZXJuYWw6OlR5cGVzNDM8VDEsIFQy
LCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwKKyAgICAgIFQxMywg
VDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQy
NSwgVDI2LAorICAgICAgVDI3LCBUMjgsIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQz
NSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsCisgICAgICBUNDEsIFQ0MiwgVDQzPiB0eXBlOwor
fTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBl
bmFtZSBUNCwgdHlwZW5hbWUgVDUsCisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBl
bmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFtZSBUMTEsIHR5
cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKKyAg
ICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTks
IHR5cGVuYW1lIFQyMCwKKyAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUg
VDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKKyAgICB0eXBlbmFtZSBUMjYsIHR5cGVu
YW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKKyAgICB0
eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQsIHR5
cGVuYW1lIFQzNSwKKyAgICB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4
LCB0eXBlbmFtZSBUMzksIHR5cGVuYW1lIFQ0MCwKKyAgICB0eXBlbmFtZSBUNDEsIHR5cGVuYW1l
IFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQ+CitzdHJ1Y3QgVHlwZXM8VDEsIFQyLCBU
MywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwK
KyAgICBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQy
NiwgVDI3LCBUMjgsIFQyOSwgVDMwLAorICAgIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYs
IFQzNywgVDM4LCBUMzksIFQ0MCwgVDQxLCBUNDIsIFQ0MywgVDQ0LAorICAgIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAorICAg
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZT4geworICB0eXBlZGVmIGludGVybmFsOjpU
eXBlczQ0PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIs
CisgICAgICBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIs
IFQyMywgVDI0LCBUMjUsIFQyNiwKKyAgICAgIFQyNywgVDI4LCBUMjksIFQzMCwgVDMxLCBUMzIs
IFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLAorICAgICAgVDQxLCBUNDIs
IFQ0MywgVDQ0PiB0eXBlOworfTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIs
IHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCisgICAgdHlwZW5hbWUgVDYs
IHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKKyAg
ICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQs
IHR5cGVuYW1lIFQxNSwKKyAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUg
VDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKKyAgICB0eXBlbmFtZSBUMjEsIHR5cGVu
YW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKKyAgICB0
eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5
cGVuYW1lIFQzMCwKKyAgICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMz
LCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1lIFQzNSwKKyAgICB0eXBlbmFtZSBUMzYsIHR5cGVuYW1l
IFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzksIHR5cGVuYW1lIFQ0MCwKKyAgICB0eXBl
bmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQsIHR5cGVu
YW1lIFQ0NT4KK3N0cnVjdCBUeXBlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5
LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAorICAgIFQxNiwgVDE3LCBUMTgsIFQxOSwg
VDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5LCBUMzAsCisg
ICAgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLCBUNDEs
IFQ0MiwgVDQzLCBUNDQsIFQ0NSwKKyAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKKyAgICBpbnRlcm5hbDo6Tm9uZT4gewor
ICB0eXBlZGVmIGludGVybmFsOjpUeXBlczQ1PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBU
OCwgVDksIFQxMCwgVDExLCBUMTIsCisgICAgICBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4
LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwKKyAgICAgIFQyNywgVDI4
LCBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwg
VDQwLAorICAgICAgVDQxLCBUNDIsIFQ0MywgVDQ0LCBUNDU+IHR5cGU7Cit9OwordGVtcGxhdGUg
PHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBl
bmFtZSBUNSwKKyAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBl
bmFtZSBUOSwgdHlwZW5hbWUgVDEwLAorICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0
eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAorICAgIHR5cGVuYW1lIFQx
NiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIw
LAorICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1l
IFQyNCwgdHlwZW5hbWUgVDI1LAorICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBl
bmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAorICAgIHR5cGVuYW1lIFQzMSwg
dHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNCwgdHlwZW5hbWUgVDM1LAor
ICAgIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQz
OSwgdHlwZW5hbWUgVDQwLAorICAgIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFt
ZSBUNDMsIHR5cGVuYW1lIFQ0NCwgdHlwZW5hbWUgVDQ1LAorICAgIHR5cGVuYW1lIFQ0Nj4KK3N0
cnVjdCBUeXBlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwg
VDEyLCBUMTMsIFQxNCwgVDE1LAorICAgIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQy
MiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5LCBUMzAsCisgICAgVDMxLCBUMzIs
IFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLCBUNDEsIFQ0MiwgVDQzLCBU
NDQsIFQ0NSwKKyAgICBUNDYsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lPiB7CisgIHR5cGVkZWYgaW50ZXJuYWw6OlR5cGVzNDY8
VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwKKyAgICAg
IFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBU
MjQsIFQyNSwgVDI2LAorICAgICAgVDI3LCBUMjgsIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBU
MzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsCisgICAgICBUNDEsIFQ0MiwgVDQzLCBU
NDQsIFQ0NSwgVDQ2PiB0eXBlOworfTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUg
VDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCisgICAgdHlwZW5hbWUg
VDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwK
KyAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBU
MTQsIHR5cGVuYW1lIFQxNSwKKyAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5h
bWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKKyAgICB0eXBlbmFtZSBUMjEsIHR5
cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKKyAg
ICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjks
IHR5cGVuYW1lIFQzMCwKKyAgICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUg
VDMzLCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1lIFQzNSwKKyAgICB0eXBlbmFtZSBUMzYsIHR5cGVu
YW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzksIHR5cGVuYW1lIFQ0MCwKKyAgICB0
eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQsIHR5
cGVuYW1lIFQ0NSwKKyAgICB0eXBlbmFtZSBUNDYsIHR5cGVuYW1lIFQ0Nz4KK3N0cnVjdCBUeXBl
czxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMs
IFQxNCwgVDE1LAorICAgIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBU
MjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5LCBUMzAsCisgICAgVDMxLCBUMzIsIFQzMywgVDM0
LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLCBUNDEsIFQ0MiwgVDQzLCBUNDQsIFQ0NSwK
KyAgICBUNDYsIFQ0NywgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZT4geworICB0eXBlZGVmIGludGVybmFsOjpUeXBlczQ3PFQxLCBUMiwgVDMsIFQ0LCBUNSwg
VDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsCisgICAgICBUMTMsIFQxNCwgVDE1LCBUMTYs
IFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwKKyAgICAg
IFQyNywgVDI4LCBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBU
MzgsIFQzOSwgVDQwLAorICAgICAgVDQxLCBUNDIsIFQ0MywgVDQ0LCBUNDUsIFQ0NiwgVDQ3PiB0
eXBlOworfTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQz
LCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCisgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3
LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKKyAgICB0eXBlbmFtZSBU
MTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQx
NSwKKyAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFt
ZSBUMTksIHR5cGVuYW1lIFQyMCwKKyAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlw
ZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKKyAgICB0eXBlbmFtZSBUMjYs
IHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwK
KyAgICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBU
MzQsIHR5cGVuYW1lIFQzNSwKKyAgICB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5h
bWUgVDM4LCB0eXBlbmFtZSBUMzksIHR5cGVuYW1lIFQ0MCwKKyAgICB0eXBlbmFtZSBUNDEsIHR5
cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQsIHR5cGVuYW1lIFQ0NSwKKyAg
ICB0eXBlbmFtZSBUNDYsIHR5cGVuYW1lIFQ0NywgdHlwZW5hbWUgVDQ4Pgorc3RydWN0IFR5cGVz
PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywg
VDE0LCBUMTUsCisgICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQy
NCwgVDI1LCBUMjYsIFQyNywgVDI4LCBUMjksIFQzMCwKKyAgICBUMzEsIFQzMiwgVDMzLCBUMzQs
IFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsIFQ0MSwgVDQyLCBUNDMsIFQ0NCwgVDQ1LAor
ICAgIFQ0NiwgVDQ3LCBUNDgsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZT4geworICB0
eXBlZGVmIGludGVybmFsOjpUeXBlczQ4PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwg
VDksIFQxMCwgVDExLCBUMTIsCisgICAgICBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBU
MTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwKKyAgICAgIFQyNywgVDI4LCBU
MjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQw
LAorICAgICAgVDQxLCBUNDIsIFQ0MywgVDQ0LCBUNDUsIFQ0NiwgVDQ3LCBUNDg+IHR5cGU7Cit9
OwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVu
YW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVu
YW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAorICAgIHR5cGVuYW1lIFQxMSwgdHlw
ZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAorICAg
IHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwg
dHlwZW5hbWUgVDIwLAorICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBU
MjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAorICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5h
bWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAorICAgIHR5
cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNCwgdHlw
ZW5hbWUgVDM1LAorICAgIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgs
IHR5cGVuYW1lIFQzOSwgdHlwZW5hbWUgVDQwLAorICAgIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUg
VDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NCwgdHlwZW5hbWUgVDQ1LAorICAgIHR5cGVu
YW1lIFQ0NiwgdHlwZW5hbWUgVDQ3LCB0eXBlbmFtZSBUNDgsIHR5cGVuYW1lIFQ0OT4KK3N0cnVj
dCBUeXBlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEy
LCBUMTMsIFQxNCwgVDE1LAorICAgIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwg
VDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5LCBUMzAsCisgICAgVDMxLCBUMzIsIFQz
MywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLCBUNDEsIFQ0MiwgVDQzLCBUNDQs
IFQ0NSwKKyAgICBUNDYsIFQ0NywgVDQ4LCBUNDksIGludGVybmFsOjpOb25lPiB7CisgIHR5cGVk
ZWYgaW50ZXJuYWw6OlR5cGVzNDk8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwg
VDEwLCBUMTEsIFQxMiwKKyAgICAgIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwg
VDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LAorICAgICAgVDI3LCBUMjgsIFQyOSwg
VDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsCisg
ICAgICBUNDEsIFQ0MiwgVDQzLCBUNDQsIFQ0NSwgVDQ2LCBUNDcsIFQ0OCwgVDQ5PiB0eXBlOwor
fTsKKworbmFtZXNwYWNlIGludGVybmFsIHsKKworIyBkZWZpbmUgR1RFU1RfVEVNUExBVEVfIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcworCisvLyBUaGUgdGVtcGxhdGUgInNlbGVjdG9yIiBz
dHJ1Y3QgVGVtcGxhdGVTZWw8VG1wbD4gaXMgdXNlZCB0bworLy8gcmVwcmVzZW50IFRtcGwsIHdo
aWNoIG11c3QgYmUgYSBjbGFzcyB0ZW1wbGF0ZSB3aXRoIG9uZSB0eXBlCisvLyBwYXJhbWV0ZXIs
IGFzIGEgdHlwZS4gIFRlbXBsYXRlU2VsPFRtcGw+OjpCaW5kPFQ+Ojp0eXBlIGlzIGRlZmluZWQK
Ky8vIGFzIHRoZSB0eXBlIFRtcGw8VD4uICBUaGlzIGFsbG93cyB1cyB0byBhY3R1YWxseSBpbnN0
YW50aWF0ZSB0aGUKKy8vIHRlbXBsYXRlICJzZWxlY3RlZCIgYnkgVGVtcGxhdGVTZWw8VG1wbD4u
CisvLworLy8gVGhpcyB0cmljayBpcyBuZWNlc3NhcnkgZm9yIHNpbXVsYXRpbmcgdHlwZWRlZiBm
b3IgY2xhc3MgdGVtcGxhdGVzLAorLy8gd2hpY2ggQysrIGRvZXNuJ3Qgc3VwcG9ydCBkaXJlY3Rs
eS4KK3RlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVG1wbD4KK3N0cnVjdCBUZW1wbGF0ZVNlbCB7
CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBzdHJ1Y3QgQmluZCB7CisgICAgdHlwZWRlZiBU
bXBsPFQ+IHR5cGU7CisgIH07Cit9OworCisjIGRlZmluZSBHVEVTVF9CSU5EXyhUbXBsU2VsLCBU
KSBcCisgIFRtcGxTZWw6OnRlbXBsYXRlIEJpbmQ8VD46OnR5cGUKKworLy8gQSB1bmlxdWUgc3Ry
dWN0IHRlbXBsYXRlIHVzZWQgYXMgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZQorLy8gYXJndW1l
bnRzIG9mIGNsYXNzIHRlbXBsYXRlIFRlbXBsYXRlcy4gIFRoaXMgYWxsb3dzIHVzIHRvIHNpbXVs
YXRlCisvLyB2YXJpYWRpYyB0ZW1wbGF0ZXMgKGUuZy4gVGVtcGxhdGVzPGludD4sIFRlbXBsYXRl
czxpbnQsIGRvdWJsZT4sCisvLyBhbmQgZXRjKSwgd2hpY2ggQysrIGRvZXNuJ3Qgc3VwcG9ydCBk
aXJlY3RseS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IE5vbmVUIHt9OworCisvLyBU
aGUgZm9sbG93aW5nIGZhbWlseSBvZiBzdHJ1Y3QgYW5kIHN0cnVjdCB0ZW1wbGF0ZXMgYXJlIHVz
ZWQgdG8KKy8vIHJlcHJlc2VudCB0ZW1wbGF0ZSBsaXN0cy4gIEluIHBhcnRpY3VsYXIsIFRlbXBs
YXRlc048VDEsIFQyLCAuLi4sCisvLyBUTj4gcmVwcmVzZW50cyBhIGxpc3Qgb2YgTiB0ZW1wbGF0
ZXMgKFQxLCBUMiwgLi4uLCBhbmQgVE4pLiAgRXhjZXB0CisvLyBmb3IgVGVtcGxhdGVzMCwgZXZl
cnkgc3RydWN0IGluIHRoZSBmYW1pbHkgaGFzIHR3byBtZW1iZXIgdHlwZXM6CisvLyBIZWFkIGZv
ciB0aGUgc2VsZWN0b3Igb2YgdGhlIGZpcnN0IHRlbXBsYXRlIGluIHRoZSBsaXN0LCBhbmQgVGFp
bAorLy8gZm9yIHRoZSByZXN0IG9mIHRoZSBsaXN0LgorCisvLyBUaGUgZW1wdHkgdGVtcGxhdGUg
bGlzdC4KK3N0cnVjdCBUZW1wbGF0ZXMwIHt9OworCisvLyBUZW1wbGF0ZSBsaXN0cyBvZiBsZW5n
dGggMSwgMiwgMywgYW5kIHNvIG9uLgorCit0ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxPgor
c3RydWN0IFRlbXBsYXRlczEgeworICB0eXBlZGVmIFRlbXBsYXRlU2VsPFQxPiBIZWFkOworICB0
eXBlZGVmIFRlbXBsYXRlczAgVGFpbDsKK307Cit0ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQx
LCBHVEVTVF9URU1QTEFURV8gVDI+CitzdHJ1Y3QgVGVtcGxhdGVzMiB7CisgIHR5cGVkZWYgVGVt
cGxhdGVTZWw8VDE+IEhlYWQ7CisgIHR5cGVkZWYgVGVtcGxhdGVzMTxUMj4gVGFpbDsKK307CisK
K3RlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1Rf
VEVNUExBVEVfIFQzPgorc3RydWN0IFRlbXBsYXRlczMgeworICB0eXBlZGVmIFRlbXBsYXRlU2Vs
PFQxPiBIZWFkOworICB0eXBlZGVmIFRlbXBsYXRlczI8VDIsIFQzPiBUYWlsOworfTsKKwordGVt
cGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1Q
TEFURV8gVDMsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ0Pgorc3RydWN0IFRlbXBsYXRlczQgewor
ICB0eXBlZGVmIFRlbXBsYXRlU2VsPFQxPiBIZWFkOworICB0eXBlZGVmIFRlbXBsYXRlczM8VDIs
IFQzLCBUND4gVGFpbDsKK307CisKK3RlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNU
X1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAorICAgIEdURVNUX1RFTVBMQVRFXyBU
NCwgR1RFU1RfVEVNUExBVEVfIFQ1Pgorc3RydWN0IFRlbXBsYXRlczUgeworICB0eXBlZGVmIFRl
bXBsYXRlU2VsPFQxPiBIZWFkOworICB0eXBlZGVmIFRlbXBsYXRlczQ8VDIsIFQzLCBUNCwgVDU+
IFRhaWw7Cit9OworCit0ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFU
RV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKKyAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNU
X1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2Pgorc3RydWN0IFRlbXBsYXRlczYgewor
ICB0eXBlZGVmIFRlbXBsYXRlU2VsPFQxPiBIZWFkOworICB0eXBlZGVmIFRlbXBsYXRlczU8VDIs
IFQzLCBUNCwgVDUsIFQ2PiBUYWlsOworfTsKKwordGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBU
MSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCisgICAgR1RFU1RfVEVN
UExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKKyAgICBH
VEVTVF9URU1QTEFURV8gVDc+CitzdHJ1Y3QgVGVtcGxhdGVzNyB7CisgIHR5cGVkZWYgVGVtcGxh
dGVTZWw8VDE+IEhlYWQ7CisgIHR5cGVkZWYgVGVtcGxhdGVzNjxUMiwgVDMsIFQ0LCBUNSwgVDYs
IFQ3PiBUYWlsOworfTsKKwordGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVN
UExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBH
VEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKKyAgICBHVEVTVF9URU1QTEFU
RV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOD4KK3N0cnVjdCBUZW1wbGF0ZXM4IHsKKyAgdHlwZWRl
ZiBUZW1wbGF0ZVNlbDxUMT4gSGVhZDsKKyAgdHlwZWRlZiBUZW1wbGF0ZXM3PFQyLCBUMywgVDQs
IFQ1LCBUNiwgVDcsIFQ4PiBUYWlsOworfTsKKwordGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBU
MSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCisgICAgR1RFU1RfVEVN
UExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKKyAgICBH
VEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5
Pgorc3RydWN0IFRlbXBsYXRlczkgeworICB0eXBlZGVmIFRlbXBsYXRlU2VsPFQxPiBIZWFkOwor
ICB0eXBlZGVmIFRlbXBsYXRlczg8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5PiBUYWls
OworfTsKKwordGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQy
LCBHVEVTVF9URU1QTEFURV8gVDMsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1Q
TEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKKyAgICBHVEVTVF9URU1QTEFURV8gVDcsIEdU
RVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAorICAgIEdURVNUX1RFTVBMQVRF
XyBUMTA+CitzdHJ1Y3QgVGVtcGxhdGVzMTAgeworICB0eXBlZGVmIFRlbXBsYXRlU2VsPFQxPiBI
ZWFkOworICB0eXBlZGVmIFRlbXBsYXRlczk8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5
LCBUMTA+IFRhaWw7Cit9OworCit0ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9U
RU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKKyAgICBHVEVTVF9URU1QTEFURV8gVDQs
IEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAorICAgIEdURVNUX1RFTVBM
QVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCisgICAgR1RF
U1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMT4KK3N0cnVjdCBUZW1wbGF0ZXMx
MSB7CisgIHR5cGVkZWYgVGVtcGxhdGVTZWw8VDE+IEhlYWQ7CisgIHR5cGVkZWYgVGVtcGxhdGVz
MTA8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMT4gVGFpbDsKK307CisK
K3RlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1Rf
VEVNUExBVEVfIFQzLAorICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1
LCBHVEVTVF9URU1QTEFURV8gVDYsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1Q
TEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBH
VEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyPgorc3RydWN0IFRlbXBsYXRl
czEyIHsKKyAgdHlwZWRlZiBUZW1wbGF0ZVNlbDxUMT4gSGVhZDsKKyAgdHlwZWRlZiBUZW1wbGF0
ZXMxMTxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTI+IFRhaWw7
Cit9OworCit0ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIs
IEdURVNUX1RFTVBMQVRFXyBUMywKKyAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBM
QVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAorICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RF
U1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCisgICAgR1RFU1RfVEVNUExBVEVf
IFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKKyAgICBHVEVT
VF9URU1QTEFURV8gVDEzPgorc3RydWN0IFRlbXBsYXRlczEzIHsKKyAgdHlwZWRlZiBUZW1wbGF0
ZVNlbDxUMT4gSGVhZDsKKyAgdHlwZWRlZiBUZW1wbGF0ZXMxMjxUMiwgVDMsIFQ0LCBUNSwgVDYs
IFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMz4gVGFpbDsKK307CisKK3RlbXBsYXRlIDxH
VEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQz
LAorICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1Q
TEFURV8gVDYsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdU
RVNUX1RFTVBMQVRFXyBUOSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFU
RV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdU
RVNUX1RFTVBMQVRFXyBUMTQ+CitzdHJ1Y3QgVGVtcGxhdGVzMTQgeworICB0eXBlZGVmIFRlbXBs
YXRlU2VsPFQxPiBIZWFkOworICB0eXBlZGVmIFRlbXBsYXRlczEzPFQyLCBUMywgVDQsIFQ1LCBU
NiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAorICAgICAgVDE0PiBUYWlsOworfTsK
KwordGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVT
VF9URU1QTEFURV8gVDMsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8g
VDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKKyAgICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RF
TVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTAs
IEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNUX1RFTVBMQVRFXyBUMTIsCisgICAgR1RFU1RfVEVN
UExBVEVfIFQxMywgR1RFU1RfVEVNUExBVEVfIFQxNCwgR1RFU1RfVEVNUExBVEVfIFQxNT4KK3N0
cnVjdCBUZW1wbGF0ZXMxNSB7CisgIHR5cGVkZWYgVGVtcGxhdGVTZWw8VDE+IEhlYWQ7CisgIHR5
cGVkZWYgVGVtcGxhdGVzMTQ8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQx
MSwgVDEyLCBUMTMsIFQxNCwKKyAgICAgIFQxNT4gVGFpbDsKK307CisKK3RlbXBsYXRlIDxHVEVT
VF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAor
ICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFU
RV8gVDYsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNU
X1RFTVBMQVRFXyBUOSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8g
VDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNU
X1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCisgICAgR1RFU1RfVEVNUExBVEVf
IFQxNj4KK3N0cnVjdCBUZW1wbGF0ZXMxNiB7CisgIHR5cGVkZWYgVGVtcGxhdGVTZWw8VDE+IEhl
YWQ7CisgIHR5cGVkZWYgVGVtcGxhdGVzMTU8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5
LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKKyAgICAgIFQxNSwgVDE2PiBUYWlsOworfTsKKwor
dGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9U
RU1QTEFURV8gVDMsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUs
IEdURVNUX1RFTVBMQVRFXyBUNiwKKyAgICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBM
QVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdU
RVNUX1RFTVBMQVRFXyBUMTEsIEdURVNUX1RFTVBMQVRFXyBUMTIsCisgICAgR1RFU1RfVEVNUExB
VEVfIFQxMywgR1RFU1RfVEVNUExBVEVfIFQxNCwgR1RFU1RfVEVNUExBVEVfIFQxNSwKKyAgICBH
VEVTVF9URU1QTEFURV8gVDE2LCBHVEVTVF9URU1QTEFURV8gVDE3Pgorc3RydWN0IFRlbXBsYXRl
czE3IHsKKyAgdHlwZWRlZiBUZW1wbGF0ZVNlbDxUMT4gSGVhZDsKKyAgdHlwZWRlZiBUZW1wbGF0
ZXMxNjxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywg
VDE0LAorICAgICAgVDE1LCBUMTYsIFQxNz4gVGFpbDsKK307CisKK3RlbXBsYXRlIDxHVEVTVF9U
RU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAorICAg
IEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8g
VDYsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RF
TVBMQVRFXyBUOSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDEx
LCBHVEVTVF9URU1QTEFURV8gVDEyLAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RF
TVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCisgICAgR1RFU1RfVEVNUExBVEVfIFQx
NiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExBVEVfIFQxOD4KK3N0cnVjdCBUZW1w
bGF0ZXMxOCB7CisgIHR5cGVkZWYgVGVtcGxhdGVTZWw8VDE+IEhlYWQ7CisgIHR5cGVkZWYgVGVt
cGxhdGVzMTc8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBU
MTMsIFQxNCwKKyAgICAgIFQxNSwgVDE2LCBUMTcsIFQxOD4gVGFpbDsKK307CisKK3RlbXBsYXRl
IDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVf
IFQzLAorICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9U
RU1QTEFURV8gVDYsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgs
IEdURVNUX1RFTVBMQVRFXyBUOSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1Q
TEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTMs
IEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCisgICAgR1RFU1RfVEVN
UExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExBVEVfIFQxOCwKKyAg
ICBHVEVTVF9URU1QTEFURV8gVDE5Pgorc3RydWN0IFRlbXBsYXRlczE5IHsKKyAgdHlwZWRlZiBU
ZW1wbGF0ZVNlbDxUMT4gSGVhZDsKKyAgdHlwZWRlZiBUZW1wbGF0ZXMxODxUMiwgVDMsIFQ0LCBU
NSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAorICAgICAgVDE1LCBU
MTYsIFQxNywgVDE4LCBUMTk+IFRhaWw7Cit9OworCit0ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVf
IFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKKyAgICBHVEVTVF9U
RU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAorICAg
IEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8g
VDksCisgICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1Rf
VEVNUExBVEVfIFQxMiwKKyAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8g
VDE0LCBHVEVTVF9URU1QTEFURV8gVDE1LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTYsIEdURVNU
X1RFTVBMQVRFXyBUMTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCisgICAgR1RFU1RfVEVNUExBVEVf
IFQxOSwgR1RFU1RfVEVNUExBVEVfIFQyMD4KK3N0cnVjdCBUZW1wbGF0ZXMyMCB7CisgIHR5cGVk
ZWYgVGVtcGxhdGVTZWw8VDE+IEhlYWQ7CisgIHR5cGVkZWYgVGVtcGxhdGVzMTk8VDIsIFQzLCBU
NCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKKyAgICAgIFQx
NSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjA+IFRhaWw7Cit9OworCit0ZW1wbGF0ZSA8R1RFU1Rf
VEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKKyAg
ICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVf
IFQ2LAorICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9U
RU1QTEFURV8gVDksCisgICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQx
MSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKKyAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9U
RU1QTEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8gVDE1LAorICAgIEdURVNUX1RFTVBMQVRFXyBU
MTYsIEdURVNUX1RFTVBMQVRFXyBUMTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCisgICAgR1RFU1Rf
VEVNUExBVEVfIFQxOSwgR1RFU1RfVEVNUExBVEVfIFQyMCwgR1RFU1RfVEVNUExBVEVfIFQyMT4K
K3N0cnVjdCBUZW1wbGF0ZXMyMSB7CisgIHR5cGVkZWYgVGVtcGxhdGVTZWw8VDE+IEhlYWQ7Cisg
IHR5cGVkZWYgVGVtcGxhdGVzMjA8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAs
IFQxMSwgVDEyLCBUMTMsIFQxNCwKKyAgICAgIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAs
IFQyMT4gVGFpbDsKK307CisKK3RlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RF
TVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAorICAgIEdURVNUX1RFTVBMQVRFXyBUNCwg
R1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCisgICAgR1RFU1RfVEVNUExB
VEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKKyAgICBHVEVT
VF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEy
LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RF
TVBMQVRFXyBUMTUsCisgICAgR1RFU1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVfIFQx
NywgR1RFU1RfVEVNUExBVEVfIFQxOCwKKyAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBHVEVTVF9U
RU1QTEFURV8gVDIwLCBHVEVTVF9URU1QTEFURV8gVDIxLAorICAgIEdURVNUX1RFTVBMQVRFXyBU
MjI+CitzdHJ1Y3QgVGVtcGxhdGVzMjIgeworICB0eXBlZGVmIFRlbXBsYXRlU2VsPFQxPiBIZWFk
OworICB0eXBlZGVmIFRlbXBsYXRlczIxPFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwg
VDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsCisgICAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwg
VDIwLCBUMjEsIFQyMj4gVGFpbDsKK307CisKK3RlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEs
IEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAorICAgIEdURVNUX1RFTVBM
QVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCisgICAgR1RF
U1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwK
KyAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1Q
TEFURV8gVDEyLAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQs
IEdURVNUX1RFTVBMQVRFXyBUMTUsCisgICAgR1RFU1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVN
UExBVEVfIFQxNywgR1RFU1RfVEVNUExBVEVfIFQxOCwKKyAgICBHVEVTVF9URU1QTEFURV8gVDE5
LCBHVEVTVF9URU1QTEFURV8gVDIwLCBHVEVTVF9URU1QTEFURV8gVDIxLAorICAgIEdURVNUX1RF
TVBMQVRFXyBUMjIsIEdURVNUX1RFTVBMQVRFXyBUMjM+CitzdHJ1Y3QgVGVtcGxhdGVzMjMgewor
ICB0eXBlZGVmIFRlbXBsYXRlU2VsPFQxPiBIZWFkOworICB0eXBlZGVmIFRlbXBsYXRlczIyPFQy
LCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsCisg
ICAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzPiBUYWlsOwor
fTsKKwordGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBH
VEVTVF9URU1QTEFURV8gVDMsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFU
RV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKKyAgICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNU
X1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAorICAgIEdURVNUX1RFTVBMQVRFXyBU
MTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNUX1RFTVBMQVRFXyBUMTIsCisgICAgR1RFU1Rf
VEVNUExBVEVfIFQxMywgR1RFU1RfVEVNUExBVEVfIFQxNCwgR1RFU1RfVEVNUExBVEVfIFQxNSwK
KyAgICBHVEVTVF9URU1QTEFURV8gVDE2LCBHVEVTVF9URU1QTEFURV8gVDE3LCBHVEVTVF9URU1Q
TEFURV8gVDE4LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTksIEdURVNUX1RFTVBMQVRFXyBUMjAs
IEdURVNUX1RFTVBMQVRFXyBUMjEsCisgICAgR1RFU1RfVEVNUExBVEVfIFQyMiwgR1RFU1RfVEVN
UExBVEVfIFQyMywgR1RFU1RfVEVNUExBVEVfIFQyND4KK3N0cnVjdCBUZW1wbGF0ZXMyNCB7Cisg
IHR5cGVkZWYgVGVtcGxhdGVTZWw8VDE+IEhlYWQ7CisgIHR5cGVkZWYgVGVtcGxhdGVzMjM8VDIs
IFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKKyAg
ICAgIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyND4gVGFp
bDsKK307CisKK3RlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBU
MiwgR1RFU1RfVEVNUExBVEVfIFQzLAorICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVN
UExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBH
VEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKKyAgICBHVEVTVF9URU1QTEFU
RV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAorICAgIEdU
RVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBU
MTUsCisgICAgR1RFU1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1Rf
VEVNUExBVEVfIFQxOCwKKyAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8g
VDIwLCBHVEVTVF9URU1QTEFURV8gVDIxLAorICAgIEdURVNUX1RFTVBMQVRFXyBUMjIsIEdURVNU
X1RFTVBMQVRFXyBUMjMsIEdURVNUX1RFTVBMQVRFXyBUMjQsCisgICAgR1RFU1RfVEVNUExBVEVf
IFQyNT4KK3N0cnVjdCBUZW1wbGF0ZXMyNSB7CisgIHR5cGVkZWYgVGVtcGxhdGVTZWw8VDE+IEhl
YWQ7CisgIHR5cGVkZWYgVGVtcGxhdGVzMjQ8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5
LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKKyAgICAgIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5
LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1PiBUYWlsOworfTsKKwordGVtcGxhdGUgPEdU
RVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMs
CisgICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBM
QVRFXyBUNiwKKyAgICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RF
U1RfVEVNUExBVEVfIFQ5LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRF
XyBUMTEsIEdURVNUX1RFTVBMQVRFXyBUMTIsCisgICAgR1RFU1RfVEVNUExBVEVfIFQxMywgR1RF
U1RfVEVNUExBVEVfIFQxNCwgR1RFU1RfVEVNUExBVEVfIFQxNSwKKyAgICBHVEVTVF9URU1QTEFU
RV8gVDE2LCBHVEVTVF9URU1QTEFURV8gVDE3LCBHVEVTVF9URU1QTEFURV8gVDE4LAorICAgIEdU
RVNUX1RFTVBMQVRFXyBUMTksIEdURVNUX1RFTVBMQVRFXyBUMjAsIEdURVNUX1RFTVBMQVRFXyBU
MjEsCisgICAgR1RFU1RfVEVNUExBVEVfIFQyMiwgR1RFU1RfVEVNUExBVEVfIFQyMywgR1RFU1Rf
VEVNUExBVEVfIFQyNCwKKyAgICBHVEVTVF9URU1QTEFURV8gVDI1LCBHVEVTVF9URU1QTEFURV8g
VDI2Pgorc3RydWN0IFRlbXBsYXRlczI2IHsKKyAgdHlwZWRlZiBUZW1wbGF0ZVNlbDxUMT4gSGVh
ZDsKKyAgdHlwZWRlZiBUZW1wbGF0ZXMyNTxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDks
IFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAorICAgICAgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTks
IFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNj4gVGFpbDsKK307CisKK3RlbXBsYXRl
IDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVf
IFQzLAorICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9U
RU1QTEFURV8gVDYsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgs
IEdURVNUX1RFTVBMQVRFXyBUOSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1Q
TEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTMs
IEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCisgICAgR1RFU1RfVEVN
UExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExBVEVfIFQxOCwKKyAg
ICBHVEVTVF9URU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8gVDIwLCBHVEVTVF9URU1QTEFU
RV8gVDIxLAorICAgIEdURVNUX1RFTVBMQVRFXyBUMjIsIEdURVNUX1RFTVBMQVRFXyBUMjMsIEdU
RVNUX1RFTVBMQVRFXyBUMjQsCisgICAgR1RFU1RfVEVNUExBVEVfIFQyNSwgR1RFU1RfVEVNUExB
VEVfIFQyNiwgR1RFU1RfVEVNUExBVEVfIFQyNz4KK3N0cnVjdCBUZW1wbGF0ZXMyNyB7CisgIHR5
cGVkZWYgVGVtcGxhdGVTZWw8VDE+IEhlYWQ7CisgIHR5cGVkZWYgVGVtcGxhdGVzMjY8VDIsIFQz
LCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKKyAgICAg
IFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBU
MjYsIFQyNz4gVGFpbDsKK307CisKK3RlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNU
X1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAorICAgIEdURVNUX1RFTVBMQVRFXyBU
NCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCisgICAgR1RFU1RfVEVN
UExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKKyAgICBH
VEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8g
VDEyLAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNU
X1RFTVBMQVRFXyBUMTUsCisgICAgR1RFU1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVf
IFQxNywgR1RFU1RfVEVNUExBVEVfIFQxOCwKKyAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBHVEVT
VF9URU1QTEFURV8gVDIwLCBHVEVTVF9URU1QTEFURV8gVDIxLAorICAgIEdURVNUX1RFTVBMQVRF
XyBUMjIsIEdURVNUX1RFTVBMQVRFXyBUMjMsIEdURVNUX1RFTVBMQVRFXyBUMjQsCisgICAgR1RF
U1RfVEVNUExBVEVfIFQyNSwgR1RFU1RfVEVNUExBVEVfIFQyNiwgR1RFU1RfVEVNUExBVEVfIFQy
NywKKyAgICBHVEVTVF9URU1QTEFURV8gVDI4Pgorc3RydWN0IFRlbXBsYXRlczI4IHsKKyAgdHlw
ZWRlZiBUZW1wbGF0ZVNlbDxUMT4gSGVhZDsKKyAgdHlwZWRlZiBUZW1wbGF0ZXMyNzxUMiwgVDMs
IFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAorICAgICAg
VDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQy
NiwgVDI3LAorICAgICAgVDI4PiBUYWlsOworfTsKKwordGVtcGxhdGUgPEdURVNUX1RFTVBMQVRF
XyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCisgICAgR1RFU1Rf
VEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKKyAg
ICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVf
IFQ5LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNU
X1RFTVBMQVRFXyBUMTIsCisgICAgR1RFU1RfVEVNUExBVEVfIFQxMywgR1RFU1RfVEVNUExBVEVf
IFQxNCwgR1RFU1RfVEVNUExBVEVfIFQxNSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDE2LCBHVEVT
VF9URU1QTEFURV8gVDE3LCBHVEVTVF9URU1QTEFURV8gVDE4LAorICAgIEdURVNUX1RFTVBMQVRF
XyBUMTksIEdURVNUX1RFTVBMQVRFXyBUMjAsIEdURVNUX1RFTVBMQVRFXyBUMjEsCisgICAgR1RF
U1RfVEVNUExBVEVfIFQyMiwgR1RFU1RfVEVNUExBVEVfIFQyMywgR1RFU1RfVEVNUExBVEVfIFQy
NCwKKyAgICBHVEVTVF9URU1QTEFURV8gVDI1LCBHVEVTVF9URU1QTEFURV8gVDI2LCBHVEVTVF9U
RU1QTEFURV8gVDI3LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMjgsIEdURVNUX1RFTVBMQVRFXyBU
Mjk+CitzdHJ1Y3QgVGVtcGxhdGVzMjkgeworICB0eXBlZGVmIFRlbXBsYXRlU2VsPFQxPiBIZWFk
OworICB0eXBlZGVmIFRlbXBsYXRlczI4PFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwg
VDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsCisgICAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwg
VDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwKKyAgICAgIFQyOT4g
VGFpbDsKK307CisKK3RlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRF
XyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAorICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1Rf
VEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ3
LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKKyAgICBHVEVTVF9URU1Q
TEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAorICAg
IEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRF
XyBUMTUsCisgICAgR1RFU1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RF
U1RfVEVNUExBVEVfIFQxOCwKKyAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFU
RV8gVDIwLCBHVEVTVF9URU1QTEFURV8gVDIxLAorICAgIEdURVNUX1RFTVBMQVRFXyBUMjIsIEdU
RVNUX1RFTVBMQVRFXyBUMjMsIEdURVNUX1RFTVBMQVRFXyBUMjQsCisgICAgR1RFU1RfVEVNUExB
VEVfIFQyNSwgR1RFU1RfVEVNUExBVEVfIFQyNiwgR1RFU1RfVEVNUExBVEVfIFQyNywKKyAgICBH
VEVTVF9URU1QTEFURV8gVDI4LCBHVEVTVF9URU1QTEFURV8gVDI5LCBHVEVTVF9URU1QTEFURV8g
VDMwPgorc3RydWN0IFRlbXBsYXRlczMwIHsKKyAgdHlwZWRlZiBUZW1wbGF0ZVNlbDxUMT4gSGVh
ZDsKKyAgdHlwZWRlZiBUZW1wbGF0ZXMyOTxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDks
IFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAorICAgICAgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTks
IFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsCisgICAgICBUMjks
IFQzMD4gVGFpbDsKK307CisKK3RlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RF
TVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAorICAgIEdURVNUX1RFTVBMQVRFXyBUNCwg
R1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCisgICAgR1RFU1RfVEVNUExB
VEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKKyAgICBHVEVT
VF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEy
LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RF
TVBMQVRFXyBUMTUsCisgICAgR1RFU1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVfIFQx
NywgR1RFU1RfVEVNUExBVEVfIFQxOCwKKyAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBHVEVTVF9U
RU1QTEFURV8gVDIwLCBHVEVTVF9URU1QTEFURV8gVDIxLAorICAgIEdURVNUX1RFTVBMQVRFXyBU
MjIsIEdURVNUX1RFTVBMQVRFXyBUMjMsIEdURVNUX1RFTVBMQVRFXyBUMjQsCisgICAgR1RFU1Rf
VEVNUExBVEVfIFQyNSwgR1RFU1RfVEVNUExBVEVfIFQyNiwgR1RFU1RfVEVNUExBVEVfIFQyNywK
KyAgICBHVEVTVF9URU1QTEFURV8gVDI4LCBHVEVTVF9URU1QTEFURV8gVDI5LCBHVEVTVF9URU1Q
TEFURV8gVDMwLAorICAgIEdURVNUX1RFTVBMQVRFXyBUMzE+CitzdHJ1Y3QgVGVtcGxhdGVzMzEg
eworICB0eXBlZGVmIFRlbXBsYXRlU2VsPFQxPiBIZWFkOworICB0eXBlZGVmIFRlbXBsYXRlczMw
PFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQs
CisgICAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQs
IFQyNSwgVDI2LCBUMjcsIFQyOCwKKyAgICAgIFQyOSwgVDMwLCBUMzE+IFRhaWw7Cit9OworCit0
ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RF
TVBMQVRFXyBUMywKKyAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwg
R1RFU1RfVEVNUExBVEVfIFQ2LAorICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExB
VEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCisgICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RF
U1RfVEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKKyAgICBHVEVTVF9URU1QTEFU
RV8gVDEzLCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8gVDE1LAorICAgIEdU
RVNUX1RFTVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRFXyBUMTcsIEdURVNUX1RFTVBMQVRFXyBU
MTgsCisgICAgR1RFU1RfVEVNUExBVEVfIFQxOSwgR1RFU1RfVEVNUExBVEVfIFQyMCwgR1RFU1Rf
VEVNUExBVEVfIFQyMSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDIyLCBHVEVTVF9URU1QTEFURV8g
VDIzLCBHVEVTVF9URU1QTEFURV8gVDI0LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMjUsIEdURVNU
X1RFTVBMQVRFXyBUMjYsIEdURVNUX1RFTVBMQVRFXyBUMjcsCisgICAgR1RFU1RfVEVNUExBVEVf
IFQyOCwgR1RFU1RfVEVNUExBVEVfIFQyOSwgR1RFU1RfVEVNUExBVEVfIFQzMCwKKyAgICBHVEVT
VF9URU1QTEFURV8gVDMxLCBHVEVTVF9URU1QTEFURV8gVDMyPgorc3RydWN0IFRlbXBsYXRlczMy
IHsKKyAgdHlwZWRlZiBUZW1wbGF0ZVNlbDxUMT4gSGVhZDsKKyAgdHlwZWRlZiBUZW1wbGF0ZXMz
MTxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0
LAorICAgICAgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0
LCBUMjUsIFQyNiwgVDI3LCBUMjgsCisgICAgICBUMjksIFQzMCwgVDMxLCBUMzI+IFRhaWw7Cit9
OworCit0ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdU
RVNUX1RFTVBMQVRFXyBUMywKKyAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRF
XyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAorICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1Rf
VEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCisgICAgR1RFU1RfVEVNUExBVEVfIFQx
MCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKKyAgICBHVEVTVF9U
RU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8gVDE1LAor
ICAgIEdURVNUX1RFTVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRFXyBUMTcsIEdURVNUX1RFTVBM
QVRFXyBUMTgsCisgICAgR1RFU1RfVEVNUExBVEVfIFQxOSwgR1RFU1RfVEVNUExBVEVfIFQyMCwg
R1RFU1RfVEVNUExBVEVfIFQyMSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDIyLCBHVEVTVF9URU1Q
TEFURV8gVDIzLCBHVEVTVF9URU1QTEFURV8gVDI0LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMjUs
IEdURVNUX1RFTVBMQVRFXyBUMjYsIEdURVNUX1RFTVBMQVRFXyBUMjcsCisgICAgR1RFU1RfVEVN
UExBVEVfIFQyOCwgR1RFU1RfVEVNUExBVEVfIFQyOSwgR1RFU1RfVEVNUExBVEVfIFQzMCwKKyAg
ICBHVEVTVF9URU1QTEFURV8gVDMxLCBHVEVTVF9URU1QTEFURV8gVDMyLCBHVEVTVF9URU1QTEFU
RV8gVDMzPgorc3RydWN0IFRlbXBsYXRlczMzIHsKKyAgdHlwZWRlZiBUZW1wbGF0ZVNlbDxUMT4g
SGVhZDsKKyAgdHlwZWRlZiBUZW1wbGF0ZXMzMjxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwg
VDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAorICAgICAgVDE1LCBUMTYsIFQxNywgVDE4LCBU
MTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsCisgICAgICBU
MjksIFQzMCwgVDMxLCBUMzIsIFQzMz4gVGFpbDsKK307CisKK3RlbXBsYXRlIDxHVEVTVF9URU1Q
TEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAorICAgIEdU
RVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYs
CisgICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBM
QVRFXyBUOSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBH
VEVTVF9URU1QTEFURV8gVDEyLAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBM
QVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCisgICAgR1RFU1RfVEVNUExBVEVfIFQxNiwg
R1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExBVEVfIFQxOCwKKyAgICBHVEVTVF9URU1Q
TEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8gVDIwLCBHVEVTVF9URU1QTEFURV8gVDIxLAorICAg
IEdURVNUX1RFTVBMQVRFXyBUMjIsIEdURVNUX1RFTVBMQVRFXyBUMjMsIEdURVNUX1RFTVBMQVRF
XyBUMjQsCisgICAgR1RFU1RfVEVNUExBVEVfIFQyNSwgR1RFU1RfVEVNUExBVEVfIFQyNiwgR1RF
U1RfVEVNUExBVEVfIFQyNywKKyAgICBHVEVTVF9URU1QTEFURV8gVDI4LCBHVEVTVF9URU1QTEFU
RV8gVDI5LCBHVEVTVF9URU1QTEFURV8gVDMwLAorICAgIEdURVNUX1RFTVBMQVRFXyBUMzEsIEdU
RVNUX1RFTVBMQVRFXyBUMzIsIEdURVNUX1RFTVBMQVRFXyBUMzMsCisgICAgR1RFU1RfVEVNUExB
VEVfIFQzND4KK3N0cnVjdCBUZW1wbGF0ZXMzNCB7CisgIHR5cGVkZWYgVGVtcGxhdGVTZWw8VDE+
IEhlYWQ7CisgIHR5cGVkZWYgVGVtcGxhdGVzMzM8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgs
IFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKKyAgICAgIFQxNSwgVDE2LCBUMTcsIFQxOCwg
VDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LAorICAgICAg
VDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzND4gVGFpbDsKK307CisKK3RlbXBsYXRlIDxHVEVT
VF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAor
ICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFU
RV8gVDYsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNU
X1RFTVBMQVRFXyBUOSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8g
VDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNU
X1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCisgICAgR1RFU1RfVEVNUExBVEVf
IFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExBVEVfIFQxOCwKKyAgICBHVEVT
VF9URU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8gVDIwLCBHVEVTVF9URU1QTEFURV8gVDIx
LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMjIsIEdURVNUX1RFTVBMQVRFXyBUMjMsIEdURVNUX1RF
TVBMQVRFXyBUMjQsCisgICAgR1RFU1RfVEVNUExBVEVfIFQyNSwgR1RFU1RfVEVNUExBVEVfIFQy
NiwgR1RFU1RfVEVNUExBVEVfIFQyNywKKyAgICBHVEVTVF9URU1QTEFURV8gVDI4LCBHVEVTVF9U
RU1QTEFURV8gVDI5LCBHVEVTVF9URU1QTEFURV8gVDMwLAorICAgIEdURVNUX1RFTVBMQVRFXyBU
MzEsIEdURVNUX1RFTVBMQVRFXyBUMzIsIEdURVNUX1RFTVBMQVRFXyBUMzMsCisgICAgR1RFU1Rf
VEVNUExBVEVfIFQzNCwgR1RFU1RfVEVNUExBVEVfIFQzNT4KK3N0cnVjdCBUZW1wbGF0ZXMzNSB7
CisgIHR5cGVkZWYgVGVtcGxhdGVTZWw8VDE+IEhlYWQ7CisgIHR5cGVkZWYgVGVtcGxhdGVzMzQ8
VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwK
KyAgICAgIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwg
VDI1LCBUMjYsIFQyNywgVDI4LAorICAgICAgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwg
VDM1PiBUYWlsOworfTsKKwordGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVN
UExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBH
VEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKKyAgICBHVEVTVF9URU1QTEFU
RV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAorICAgIEdURVNU
X1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNUX1RFTVBMQVRFXyBUMTIs
CisgICAgR1RFU1RfVEVNUExBVEVfIFQxMywgR1RFU1RfVEVNUExBVEVfIFQxNCwgR1RFU1RfVEVN
UExBVEVfIFQxNSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDE2LCBHVEVTVF9URU1QTEFURV8gVDE3
LCBHVEVTVF9URU1QTEFURV8gVDE4LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTksIEdURVNUX1RF
TVBMQVRFXyBUMjAsIEdURVNUX1RFTVBMQVRFXyBUMjEsCisgICAgR1RFU1RfVEVNUExBVEVfIFQy
MiwgR1RFU1RfVEVNUExBVEVfIFQyMywgR1RFU1RfVEVNUExBVEVfIFQyNCwKKyAgICBHVEVTVF9U
RU1QTEFURV8gVDI1LCBHVEVTVF9URU1QTEFURV8gVDI2LCBHVEVTVF9URU1QTEFURV8gVDI3LAor
ICAgIEdURVNUX1RFTVBMQVRFXyBUMjgsIEdURVNUX1RFTVBMQVRFXyBUMjksIEdURVNUX1RFTVBM
QVRFXyBUMzAsCisgICAgR1RFU1RfVEVNUExBVEVfIFQzMSwgR1RFU1RfVEVNUExBVEVfIFQzMiwg
R1RFU1RfVEVNUExBVEVfIFQzMywKKyAgICBHVEVTVF9URU1QTEFURV8gVDM0LCBHVEVTVF9URU1Q
TEFURV8gVDM1LCBHVEVTVF9URU1QTEFURV8gVDM2Pgorc3RydWN0IFRlbXBsYXRlczM2IHsKKyAg
dHlwZWRlZiBUZW1wbGF0ZVNlbDxUMT4gSGVhZDsKKyAgdHlwZWRlZiBUZW1wbGF0ZXMzNTxUMiwg
VDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAorICAg
ICAgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUs
IFQyNiwgVDI3LCBUMjgsCisgICAgICBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUs
IFQzNj4gVGFpbDsKK307CisKK3RlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RF
TVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAorICAgIEdURVNUX1RFTVBMQVRFXyBUNCwg
R1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCisgICAgR1RFU1RfVEVNUExB
VEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKKyAgICBHVEVT
VF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEy
LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RF
TVBMQVRFXyBUMTUsCisgICAgR1RFU1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVfIFQx
NywgR1RFU1RfVEVNUExBVEVfIFQxOCwKKyAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBHVEVTVF9U
RU1QTEFURV8gVDIwLCBHVEVTVF9URU1QTEFURV8gVDIxLAorICAgIEdURVNUX1RFTVBMQVRFXyBU
MjIsIEdURVNUX1RFTVBMQVRFXyBUMjMsIEdURVNUX1RFTVBMQVRFXyBUMjQsCisgICAgR1RFU1Rf
VEVNUExBVEVfIFQyNSwgR1RFU1RfVEVNUExBVEVfIFQyNiwgR1RFU1RfVEVNUExBVEVfIFQyNywK
KyAgICBHVEVTVF9URU1QTEFURV8gVDI4LCBHVEVTVF9URU1QTEFURV8gVDI5LCBHVEVTVF9URU1Q
TEFURV8gVDMwLAorICAgIEdURVNUX1RFTVBMQVRFXyBUMzEsIEdURVNUX1RFTVBMQVRFXyBUMzIs
IEdURVNUX1RFTVBMQVRFXyBUMzMsCisgICAgR1RFU1RfVEVNUExBVEVfIFQzNCwgR1RFU1RfVEVN
UExBVEVfIFQzNSwgR1RFU1RfVEVNUExBVEVfIFQzNiwKKyAgICBHVEVTVF9URU1QTEFURV8gVDM3
Pgorc3RydWN0IFRlbXBsYXRlczM3IHsKKyAgdHlwZWRlZiBUZW1wbGF0ZVNlbDxUMT4gSGVhZDsK
KyAgdHlwZWRlZiBUZW1wbGF0ZXMzNjxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQx
MCwgVDExLCBUMTIsIFQxMywgVDE0LAorICAgICAgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQy
MCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsCisgICAgICBUMjksIFQz
MCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3PiBUYWlsOworfTsKKwordGVtcGxh
dGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFU
RV8gVDMsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNU
X1RFTVBMQVRFXyBUNiwKKyAgICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBU
OCwgR1RFU1RfVEVNUExBVEVfIFQ5LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RF
TVBMQVRFXyBUMTEsIEdURVNUX1RFTVBMQVRFXyBUMTIsCisgICAgR1RFU1RfVEVNUExBVEVfIFQx
MywgR1RFU1RfVEVNUExBVEVfIFQxNCwgR1RFU1RfVEVNUExBVEVfIFQxNSwKKyAgICBHVEVTVF9U
RU1QTEFURV8gVDE2LCBHVEVTVF9URU1QTEFURV8gVDE3LCBHVEVTVF9URU1QTEFURV8gVDE4LAor
ICAgIEdURVNUX1RFTVBMQVRFXyBUMTksIEdURVNUX1RFTVBMQVRFXyBUMjAsIEdURVNUX1RFTVBM
QVRFXyBUMjEsCisgICAgR1RFU1RfVEVNUExBVEVfIFQyMiwgR1RFU1RfVEVNUExBVEVfIFQyMywg
R1RFU1RfVEVNUExBVEVfIFQyNCwKKyAgICBHVEVTVF9URU1QTEFURV8gVDI1LCBHVEVTVF9URU1Q
TEFURV8gVDI2LCBHVEVTVF9URU1QTEFURV8gVDI3LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMjgs
IEdURVNUX1RFTVBMQVRFXyBUMjksIEdURVNUX1RFTVBMQVRFXyBUMzAsCisgICAgR1RFU1RfVEVN
UExBVEVfIFQzMSwgR1RFU1RfVEVNUExBVEVfIFQzMiwgR1RFU1RfVEVNUExBVEVfIFQzMywKKyAg
ICBHVEVTVF9URU1QTEFURV8gVDM0LCBHVEVTVF9URU1QTEFURV8gVDM1LCBHVEVTVF9URU1QTEFU
RV8gVDM2LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMzcsIEdURVNUX1RFTVBMQVRFXyBUMzg+Citz
dHJ1Y3QgVGVtcGxhdGVzMzggeworICB0eXBlZGVmIFRlbXBsYXRlU2VsPFQxPiBIZWFkOworICB0
eXBlZGVmIFRlbXBsYXRlczM3PFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBU
MTEsIFQxMiwgVDEzLCBUMTQsCisgICAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBU
MjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwKKyAgICAgIFQyOSwgVDMwLCBU
MzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOD4gVGFpbDsKK307CisKK3RlbXBs
YXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExB
VEVfIFQzLAorICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVT
VF9URU1QTEFURV8gVDYsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8g
VDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9U
RU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAorICAgIEdURVNUX1RFTVBMQVRFXyBU
MTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCisgICAgR1RFU1Rf
VEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExBVEVfIFQxOCwK
KyAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8gVDIwLCBHVEVTVF9URU1Q
TEFURV8gVDIxLAorICAgIEdURVNUX1RFTVBMQVRFXyBUMjIsIEdURVNUX1RFTVBMQVRFXyBUMjMs
IEdURVNUX1RFTVBMQVRFXyBUMjQsCisgICAgR1RFU1RfVEVNUExBVEVfIFQyNSwgR1RFU1RfVEVN
UExBVEVfIFQyNiwgR1RFU1RfVEVNUExBVEVfIFQyNywKKyAgICBHVEVTVF9URU1QTEFURV8gVDI4
LCBHVEVTVF9URU1QTEFURV8gVDI5LCBHVEVTVF9URU1QTEFURV8gVDMwLAorICAgIEdURVNUX1RF
TVBMQVRFXyBUMzEsIEdURVNUX1RFTVBMQVRFXyBUMzIsIEdURVNUX1RFTVBMQVRFXyBUMzMsCisg
ICAgR1RFU1RfVEVNUExBVEVfIFQzNCwgR1RFU1RfVEVNUExBVEVfIFQzNSwgR1RFU1RfVEVNUExB
VEVfIFQzNiwKKyAgICBHVEVTVF9URU1QTEFURV8gVDM3LCBHVEVTVF9URU1QTEFURV8gVDM4LCBH
VEVTVF9URU1QTEFURV8gVDM5Pgorc3RydWN0IFRlbXBsYXRlczM5IHsKKyAgdHlwZWRlZiBUZW1w
bGF0ZVNlbDxUMT4gSGVhZDsKKyAgdHlwZWRlZiBUZW1wbGF0ZXMzODxUMiwgVDMsIFQ0LCBUNSwg
VDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAorICAgICAgVDE1LCBUMTYs
IFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBU
MjgsCisgICAgICBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBU
MzgsIFQzOT4gVGFpbDsKK307CisKK3RlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNU
X1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAorICAgIEdURVNUX1RFTVBMQVRFXyBU
NCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCisgICAgR1RFU1RfVEVN
UExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKKyAgICBH
VEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8g
VDEyLAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNU
X1RFTVBMQVRFXyBUMTUsCisgICAgR1RFU1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVf
IFQxNywgR1RFU1RfVEVNUExBVEVfIFQxOCwKKyAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBHVEVT
VF9URU1QTEFURV8gVDIwLCBHVEVTVF9URU1QTEFURV8gVDIxLAorICAgIEdURVNUX1RFTVBMQVRF
XyBUMjIsIEdURVNUX1RFTVBMQVRFXyBUMjMsIEdURVNUX1RFTVBMQVRFXyBUMjQsCisgICAgR1RF
U1RfVEVNUExBVEVfIFQyNSwgR1RFU1RfVEVNUExBVEVfIFQyNiwgR1RFU1RfVEVNUExBVEVfIFQy
NywKKyAgICBHVEVTVF9URU1QTEFURV8gVDI4LCBHVEVTVF9URU1QTEFURV8gVDI5LCBHVEVTVF9U
RU1QTEFURV8gVDMwLAorICAgIEdURVNUX1RFTVBMQVRFXyBUMzEsIEdURVNUX1RFTVBMQVRFXyBU
MzIsIEdURVNUX1RFTVBMQVRFXyBUMzMsCisgICAgR1RFU1RfVEVNUExBVEVfIFQzNCwgR1RFU1Rf
VEVNUExBVEVfIFQzNSwgR1RFU1RfVEVNUExBVEVfIFQzNiwKKyAgICBHVEVTVF9URU1QTEFURV8g
VDM3LCBHVEVTVF9URU1QTEFURV8gVDM4LCBHVEVTVF9URU1QTEFURV8gVDM5LAorICAgIEdURVNU
X1RFTVBMQVRFXyBUNDA+CitzdHJ1Y3QgVGVtcGxhdGVzNDAgeworICB0eXBlZGVmIFRlbXBsYXRl
U2VsPFQxPiBIZWFkOworICB0eXBlZGVmIFRlbXBsYXRlczM5PFQyLCBUMywgVDQsIFQ1LCBUNiwg
VDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsCisgICAgICBUMTUsIFQxNiwgVDE3
LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwK
KyAgICAgIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwg
VDM5LCBUNDA+IFRhaWw7Cit9OworCit0ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVT
VF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKKyAgICBHVEVTVF9URU1QTEFURV8g
VDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAorICAgIEdURVNUX1RF
TVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCisgICAg
R1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVf
IFQxMiwKKyAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVT
VF9URU1QTEFURV8gVDE1LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRF
XyBUMTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCisgICAgR1RFU1RfVEVNUExBVEVfIFQxOSwgR1RF
U1RfVEVNUExBVEVfIFQyMCwgR1RFU1RfVEVNUExBVEVfIFQyMSwKKyAgICBHVEVTVF9URU1QTEFU
RV8gVDIyLCBHVEVTVF9URU1QTEFURV8gVDIzLCBHVEVTVF9URU1QTEFURV8gVDI0LAorICAgIEdU
RVNUX1RFTVBMQVRFXyBUMjUsIEdURVNUX1RFTVBMQVRFXyBUMjYsIEdURVNUX1RFTVBMQVRFXyBU
MjcsCisgICAgR1RFU1RfVEVNUExBVEVfIFQyOCwgR1RFU1RfVEVNUExBVEVfIFQyOSwgR1RFU1Rf
VEVNUExBVEVfIFQzMCwKKyAgICBHVEVTVF9URU1QTEFURV8gVDMxLCBHVEVTVF9URU1QTEFURV8g
VDMyLCBHVEVTVF9URU1QTEFURV8gVDMzLAorICAgIEdURVNUX1RFTVBMQVRFXyBUMzQsIEdURVNU
X1RFTVBMQVRFXyBUMzUsIEdURVNUX1RFTVBMQVRFXyBUMzYsCisgICAgR1RFU1RfVEVNUExBVEVf
IFQzNywgR1RFU1RfVEVNUExBVEVfIFQzOCwgR1RFU1RfVEVNUExBVEVfIFQzOSwKKyAgICBHVEVT
VF9URU1QTEFURV8gVDQwLCBHVEVTVF9URU1QTEFURV8gVDQxPgorc3RydWN0IFRlbXBsYXRlczQx
IHsKKyAgdHlwZWRlZiBUZW1wbGF0ZVNlbDxUMT4gSGVhZDsKKyAgdHlwZWRlZiBUZW1wbGF0ZXM0
MDxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0
LAorICAgICAgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0
LCBUMjUsIFQyNiwgVDI3LCBUMjgsCisgICAgICBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0
LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLCBUNDE+IFRhaWw7Cit9OworCit0ZW1wbGF0
ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRF
XyBUMywKKyAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1Rf
VEVNUExBVEVfIFQ2LAorICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4
LCBHVEVTVF9URU1QTEFURV8gVDksCisgICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVN
UExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKKyAgICBHVEVTVF9URU1QTEFURV8gVDEz
LCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8gVDE1LAorICAgIEdURVNUX1RF
TVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRFXyBUMTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCisg
ICAgR1RFU1RfVEVNUExBVEVfIFQxOSwgR1RFU1RfVEVNUExBVEVfIFQyMCwgR1RFU1RfVEVNUExB
VEVfIFQyMSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDIyLCBHVEVTVF9URU1QTEFURV8gVDIzLCBH
VEVTVF9URU1QTEFURV8gVDI0LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMjUsIEdURVNUX1RFTVBM
QVRFXyBUMjYsIEdURVNUX1RFTVBMQVRFXyBUMjcsCisgICAgR1RFU1RfVEVNUExBVEVfIFQyOCwg
R1RFU1RfVEVNUExBVEVfIFQyOSwgR1RFU1RfVEVNUExBVEVfIFQzMCwKKyAgICBHVEVTVF9URU1Q
TEFURV8gVDMxLCBHVEVTVF9URU1QTEFURV8gVDMyLCBHVEVTVF9URU1QTEFURV8gVDMzLAorICAg
IEdURVNUX1RFTVBMQVRFXyBUMzQsIEdURVNUX1RFTVBMQVRFXyBUMzUsIEdURVNUX1RFTVBMQVRF
XyBUMzYsCisgICAgR1RFU1RfVEVNUExBVEVfIFQzNywgR1RFU1RfVEVNUExBVEVfIFQzOCwgR1RF
U1RfVEVNUExBVEVfIFQzOSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDQwLCBHVEVTVF9URU1QTEFU
RV8gVDQxLCBHVEVTVF9URU1QTEFURV8gVDQyPgorc3RydWN0IFRlbXBsYXRlczQyIHsKKyAgdHlw
ZWRlZiBUZW1wbGF0ZVNlbDxUMT4gSGVhZDsKKyAgdHlwZWRlZiBUZW1wbGF0ZXM0MTxUMiwgVDMs
IFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAorICAgICAg
VDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQy
NiwgVDI3LCBUMjgsCisgICAgICBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQz
NiwgVDM3LCBUMzgsIFQzOSwgVDQwLCBUNDEsCisgICAgICBUNDI+IFRhaWw7Cit9OworCit0ZW1w
bGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBM
QVRFXyBUMywKKyAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RF
U1RfVEVNUExBVEVfIFQ2LAorICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVf
IFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCisgICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1Rf
VEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKKyAgICBHVEVTVF9URU1QTEFURV8g
VDEzLCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8gVDE1LAorICAgIEdURVNU
X1RFTVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRFXyBUMTcsIEdURVNUX1RFTVBMQVRFXyBUMTgs
CisgICAgR1RFU1RfVEVNUExBVEVfIFQxOSwgR1RFU1RfVEVNUExBVEVfIFQyMCwgR1RFU1RfVEVN
UExBVEVfIFQyMSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDIyLCBHVEVTVF9URU1QTEFURV8gVDIz
LCBHVEVTVF9URU1QTEFURV8gVDI0LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMjUsIEdURVNUX1RF
TVBMQVRFXyBUMjYsIEdURVNUX1RFTVBMQVRFXyBUMjcsCisgICAgR1RFU1RfVEVNUExBVEVfIFQy
OCwgR1RFU1RfVEVNUExBVEVfIFQyOSwgR1RFU1RfVEVNUExBVEVfIFQzMCwKKyAgICBHVEVTVF9U
RU1QTEFURV8gVDMxLCBHVEVTVF9URU1QTEFURV8gVDMyLCBHVEVTVF9URU1QTEFURV8gVDMzLAor
ICAgIEdURVNUX1RFTVBMQVRFXyBUMzQsIEdURVNUX1RFTVBMQVRFXyBUMzUsIEdURVNUX1RFTVBM
QVRFXyBUMzYsCisgICAgR1RFU1RfVEVNUExBVEVfIFQzNywgR1RFU1RfVEVNUExBVEVfIFQzOCwg
R1RFU1RfVEVNUExBVEVfIFQzOSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDQwLCBHVEVTVF9URU1Q
TEFURV8gVDQxLCBHVEVTVF9URU1QTEFURV8gVDQyLAorICAgIEdURVNUX1RFTVBMQVRFXyBUNDM+
CitzdHJ1Y3QgVGVtcGxhdGVzNDMgeworICB0eXBlZGVmIFRlbXBsYXRlU2VsPFQxPiBIZWFkOwor
ICB0eXBlZGVmIFRlbXBsYXRlczQyPFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEw
LCBUMTEsIFQxMiwgVDEzLCBUMTQsCisgICAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIw
LCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwKKyAgICAgIFQyOSwgVDMw
LCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsIFQ0MSwg
VDQyLAorICAgICAgVDQzPiBUYWlsOworfTsKKwordGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBU
MSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCisgICAgR1RFU1RfVEVN
UExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKKyAgICBH
VEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5
LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNUX1RF
TVBMQVRFXyBUMTIsCisgICAgR1RFU1RfVEVNUExBVEVfIFQxMywgR1RFU1RfVEVNUExBVEVfIFQx
NCwgR1RFU1RfVEVNUExBVEVfIFQxNSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDE2LCBHVEVTVF9U
RU1QTEFURV8gVDE3LCBHVEVTVF9URU1QTEFURV8gVDE4LAorICAgIEdURVNUX1RFTVBMQVRFXyBU
MTksIEdURVNUX1RFTVBMQVRFXyBUMjAsIEdURVNUX1RFTVBMQVRFXyBUMjEsCisgICAgR1RFU1Rf
VEVNUExBVEVfIFQyMiwgR1RFU1RfVEVNUExBVEVfIFQyMywgR1RFU1RfVEVNUExBVEVfIFQyNCwK
KyAgICBHVEVTVF9URU1QTEFURV8gVDI1LCBHVEVTVF9URU1QTEFURV8gVDI2LCBHVEVTVF9URU1Q
TEFURV8gVDI3LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMjgsIEdURVNUX1RFTVBMQVRFXyBUMjks
IEdURVNUX1RFTVBMQVRFXyBUMzAsCisgICAgR1RFU1RfVEVNUExBVEVfIFQzMSwgR1RFU1RfVEVN
UExBVEVfIFQzMiwgR1RFU1RfVEVNUExBVEVfIFQzMywKKyAgICBHVEVTVF9URU1QTEFURV8gVDM0
LCBHVEVTVF9URU1QTEFURV8gVDM1LCBHVEVTVF9URU1QTEFURV8gVDM2LAorICAgIEdURVNUX1RF
TVBMQVRFXyBUMzcsIEdURVNUX1RFTVBMQVRFXyBUMzgsIEdURVNUX1RFTVBMQVRFXyBUMzksCisg
ICAgR1RFU1RfVEVNUExBVEVfIFQ0MCwgR1RFU1RfVEVNUExBVEVfIFQ0MSwgR1RFU1RfVEVNUExB
VEVfIFQ0MiwKKyAgICBHVEVTVF9URU1QTEFURV8gVDQzLCBHVEVTVF9URU1QTEFURV8gVDQ0Pgor
c3RydWN0IFRlbXBsYXRlczQ0IHsKKyAgdHlwZWRlZiBUZW1wbGF0ZVNlbDxUMT4gSGVhZDsKKyAg
dHlwZWRlZiBUZW1wbGF0ZXM0MzxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwg
VDExLCBUMTIsIFQxMywgVDE0LAorICAgICAgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwg
VDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsCisgICAgICBUMjksIFQzMCwg
VDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLCBUNDEsIFQ0
MiwKKyAgICAgIFQ0MywgVDQ0PiBUYWlsOworfTsKKwordGVtcGxhdGUgPEdURVNUX1RFTVBMQVRF
XyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCisgICAgR1RFU1Rf
VEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKKyAg
ICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVf
IFQ5LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNU
X1RFTVBMQVRFXyBUMTIsCisgICAgR1RFU1RfVEVNUExBVEVfIFQxMywgR1RFU1RfVEVNUExBVEVf
IFQxNCwgR1RFU1RfVEVNUExBVEVfIFQxNSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDE2LCBHVEVT
VF9URU1QTEFURV8gVDE3LCBHVEVTVF9URU1QTEFURV8gVDE4LAorICAgIEdURVNUX1RFTVBMQVRF
XyBUMTksIEdURVNUX1RFTVBMQVRFXyBUMjAsIEdURVNUX1RFTVBMQVRFXyBUMjEsCisgICAgR1RF
U1RfVEVNUExBVEVfIFQyMiwgR1RFU1RfVEVNUExBVEVfIFQyMywgR1RFU1RfVEVNUExBVEVfIFQy
NCwKKyAgICBHVEVTVF9URU1QTEFURV8gVDI1LCBHVEVTVF9URU1QTEFURV8gVDI2LCBHVEVTVF9U
RU1QTEFURV8gVDI3LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMjgsIEdURVNUX1RFTVBMQVRFXyBU
MjksIEdURVNUX1RFTVBMQVRFXyBUMzAsCisgICAgR1RFU1RfVEVNUExBVEVfIFQzMSwgR1RFU1Rf
VEVNUExBVEVfIFQzMiwgR1RFU1RfVEVNUExBVEVfIFQzMywKKyAgICBHVEVTVF9URU1QTEFURV8g
VDM0LCBHVEVTVF9URU1QTEFURV8gVDM1LCBHVEVTVF9URU1QTEFURV8gVDM2LAorICAgIEdURVNU
X1RFTVBMQVRFXyBUMzcsIEdURVNUX1RFTVBMQVRFXyBUMzgsIEdURVNUX1RFTVBMQVRFXyBUMzks
CisgICAgR1RFU1RfVEVNUExBVEVfIFQ0MCwgR1RFU1RfVEVNUExBVEVfIFQ0MSwgR1RFU1RfVEVN
UExBVEVfIFQ0MiwKKyAgICBHVEVTVF9URU1QTEFURV8gVDQzLCBHVEVTVF9URU1QTEFURV8gVDQ0
LCBHVEVTVF9URU1QTEFURV8gVDQ1Pgorc3RydWN0IFRlbXBsYXRlczQ1IHsKKyAgdHlwZWRlZiBU
ZW1wbGF0ZVNlbDxUMT4gSGVhZDsKKyAgdHlwZWRlZiBUZW1wbGF0ZXM0NDxUMiwgVDMsIFQ0LCBU
NSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAorICAgICAgVDE1LCBU
MTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3
LCBUMjgsCisgICAgICBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3
LCBUMzgsIFQzOSwgVDQwLCBUNDEsIFQ0MiwKKyAgICAgIFQ0MywgVDQ0LCBUNDU+IFRhaWw7Cit9
OworCit0ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdU
RVNUX1RFTVBMQVRFXyBUMywKKyAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRF
XyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAorICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1Rf
VEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCisgICAgR1RFU1RfVEVNUExBVEVfIFQx
MCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKKyAgICBHVEVTVF9U
RU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8gVDE1LAor
ICAgIEdURVNUX1RFTVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRFXyBUMTcsIEdURVNUX1RFTVBM
QVRFXyBUMTgsCisgICAgR1RFU1RfVEVNUExBVEVfIFQxOSwgR1RFU1RfVEVNUExBVEVfIFQyMCwg
R1RFU1RfVEVNUExBVEVfIFQyMSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDIyLCBHVEVTVF9URU1Q
TEFURV8gVDIzLCBHVEVTVF9URU1QTEFURV8gVDI0LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMjUs
IEdURVNUX1RFTVBMQVRFXyBUMjYsIEdURVNUX1RFTVBMQVRFXyBUMjcsCisgICAgR1RFU1RfVEVN
UExBVEVfIFQyOCwgR1RFU1RfVEVNUExBVEVfIFQyOSwgR1RFU1RfVEVNUExBVEVfIFQzMCwKKyAg
ICBHVEVTVF9URU1QTEFURV8gVDMxLCBHVEVTVF9URU1QTEFURV8gVDMyLCBHVEVTVF9URU1QTEFU
RV8gVDMzLAorICAgIEdURVNUX1RFTVBMQVRFXyBUMzQsIEdURVNUX1RFTVBMQVRFXyBUMzUsIEdU
RVNUX1RFTVBMQVRFXyBUMzYsCisgICAgR1RFU1RfVEVNUExBVEVfIFQzNywgR1RFU1RfVEVNUExB
VEVfIFQzOCwgR1RFU1RfVEVNUExBVEVfIFQzOSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDQwLCBH
VEVTVF9URU1QTEFURV8gVDQxLCBHVEVTVF9URU1QTEFURV8gVDQyLAorICAgIEdURVNUX1RFTVBM
QVRFXyBUNDMsIEdURVNUX1RFTVBMQVRFXyBUNDQsIEdURVNUX1RFTVBMQVRFXyBUNDUsCisgICAg
R1RFU1RfVEVNUExBVEVfIFQ0Nj4KK3N0cnVjdCBUZW1wbGF0ZXM0NiB7CisgIHR5cGVkZWYgVGVt
cGxhdGVTZWw8VDE+IEhlYWQ7CisgIHR5cGVkZWYgVGVtcGxhdGVzNDU8VDIsIFQzLCBUNCwgVDUs
IFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKKyAgICAgIFQxNSwgVDE2
LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywg
VDI4LAorICAgICAgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywg
VDM4LCBUMzksIFQ0MCwgVDQxLCBUNDIsCisgICAgICBUNDMsIFQ0NCwgVDQ1LCBUNDY+IFRhaWw7
Cit9OworCit0ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIs
IEdURVNUX1RFTVBMQVRFXyBUMywKKyAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBM
QVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAorICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RF
U1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCisgICAgR1RFU1RfVEVNUExBVEVf
IFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKKyAgICBHVEVT
VF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8gVDE1
LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRFXyBUMTcsIEdURVNUX1RF
TVBMQVRFXyBUMTgsCisgICAgR1RFU1RfVEVNUExBVEVfIFQxOSwgR1RFU1RfVEVNUExBVEVfIFQy
MCwgR1RFU1RfVEVNUExBVEVfIFQyMSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDIyLCBHVEVTVF9U
RU1QTEFURV8gVDIzLCBHVEVTVF9URU1QTEFURV8gVDI0LAorICAgIEdURVNUX1RFTVBMQVRFXyBU
MjUsIEdURVNUX1RFTVBMQVRFXyBUMjYsIEdURVNUX1RFTVBMQVRFXyBUMjcsCisgICAgR1RFU1Rf
VEVNUExBVEVfIFQyOCwgR1RFU1RfVEVNUExBVEVfIFQyOSwgR1RFU1RfVEVNUExBVEVfIFQzMCwK
KyAgICBHVEVTVF9URU1QTEFURV8gVDMxLCBHVEVTVF9URU1QTEFURV8gVDMyLCBHVEVTVF9URU1Q
TEFURV8gVDMzLAorICAgIEdURVNUX1RFTVBMQVRFXyBUMzQsIEdURVNUX1RFTVBMQVRFXyBUMzUs
IEdURVNUX1RFTVBMQVRFXyBUMzYsCisgICAgR1RFU1RfVEVNUExBVEVfIFQzNywgR1RFU1RfVEVN
UExBVEVfIFQzOCwgR1RFU1RfVEVNUExBVEVfIFQzOSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDQw
LCBHVEVTVF9URU1QTEFURV8gVDQxLCBHVEVTVF9URU1QTEFURV8gVDQyLAorICAgIEdURVNUX1RF
TVBMQVRFXyBUNDMsIEdURVNUX1RFTVBMQVRFXyBUNDQsIEdURVNUX1RFTVBMQVRFXyBUNDUsCisg
ICAgR1RFU1RfVEVNUExBVEVfIFQ0NiwgR1RFU1RfVEVNUExBVEVfIFQ0Nz4KK3N0cnVjdCBUZW1w
bGF0ZXM0NyB7CisgIHR5cGVkZWYgVGVtcGxhdGVTZWw8VDE+IEhlYWQ7CisgIHR5cGVkZWYgVGVt
cGxhdGVzNDY8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBU
MTMsIFQxNCwKKyAgICAgIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBU
MjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LAorICAgICAgVDI5LCBUMzAsIFQzMSwgVDMyLCBU
MzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwgVDQxLCBUNDIsCisgICAgICBU
NDMsIFQ0NCwgVDQ1LCBUNDYsIFQ0Nz4gVGFpbDsKK307CisKK3RlbXBsYXRlIDxHVEVTVF9URU1Q
TEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAorICAgIEdU
RVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYs
CisgICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBM
QVRFXyBUOSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBH
VEVTVF9URU1QTEFURV8gVDEyLAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBM
QVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCisgICAgR1RFU1RfVEVNUExBVEVfIFQxNiwg
R1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExBVEVfIFQxOCwKKyAgICBHVEVTVF9URU1Q
TEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8gVDIwLCBHVEVTVF9URU1QTEFURV8gVDIxLAorICAg
IEdURVNUX1RFTVBMQVRFXyBUMjIsIEdURVNUX1RFTVBMQVRFXyBUMjMsIEdURVNUX1RFTVBMQVRF
XyBUMjQsCisgICAgR1RFU1RfVEVNUExBVEVfIFQyNSwgR1RFU1RfVEVNUExBVEVfIFQyNiwgR1RF
U1RfVEVNUExBVEVfIFQyNywKKyAgICBHVEVTVF9URU1QTEFURV8gVDI4LCBHVEVTVF9URU1QTEFU
RV8gVDI5LCBHVEVTVF9URU1QTEFURV8gVDMwLAorICAgIEdURVNUX1RFTVBMQVRFXyBUMzEsIEdU
RVNUX1RFTVBMQVRFXyBUMzIsIEdURVNUX1RFTVBMQVRFXyBUMzMsCisgICAgR1RFU1RfVEVNUExB
VEVfIFQzNCwgR1RFU1RfVEVNUExBVEVfIFQzNSwgR1RFU1RfVEVNUExBVEVfIFQzNiwKKyAgICBH
VEVTVF9URU1QTEFURV8gVDM3LCBHVEVTVF9URU1QTEFURV8gVDM4LCBHVEVTVF9URU1QTEFURV8g
VDM5LAorICAgIEdURVNUX1RFTVBMQVRFXyBUNDAsIEdURVNUX1RFTVBMQVRFXyBUNDEsIEdURVNU
X1RFTVBMQVRFXyBUNDIsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ0MywgR1RFU1RfVEVNUExBVEVf
IFQ0NCwgR1RFU1RfVEVNUExBVEVfIFQ0NSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDQ2LCBHVEVT
VF9URU1QTEFURV8gVDQ3LCBHVEVTVF9URU1QTEFURV8gVDQ4Pgorc3RydWN0IFRlbXBsYXRlczQ4
IHsKKyAgdHlwZWRlZiBUZW1wbGF0ZVNlbDxUMT4gSGVhZDsKKyAgdHlwZWRlZiBUZW1wbGF0ZXM0
NzxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0
LAorICAgICAgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0
LCBUMjUsIFQyNiwgVDI3LCBUMjgsCisgICAgICBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0
LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLCBUNDEsIFQ0MiwKKyAgICAgIFQ0MywgVDQ0
LCBUNDUsIFQ0NiwgVDQ3LCBUNDg+IFRhaWw7Cit9OworCit0ZW1wbGF0ZSA8R1RFU1RfVEVNUExB
VEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKKyAgICBHVEVT
VF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAor
ICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFU
RV8gVDksCisgICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RF
U1RfVEVNUExBVEVfIFQxMiwKKyAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFU
RV8gVDE0LCBHVEVTVF9URU1QTEFURV8gVDE1LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTYsIEdU
RVNUX1RFTVBMQVRFXyBUMTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCisgICAgR1RFU1RfVEVNUExB
VEVfIFQxOSwgR1RFU1RfVEVNUExBVEVfIFQyMCwgR1RFU1RfVEVNUExBVEVfIFQyMSwKKyAgICBH
VEVTVF9URU1QTEFURV8gVDIyLCBHVEVTVF9URU1QTEFURV8gVDIzLCBHVEVTVF9URU1QTEFURV8g
VDI0LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMjUsIEdURVNUX1RFTVBMQVRFXyBUMjYsIEdURVNU
X1RFTVBMQVRFXyBUMjcsCisgICAgR1RFU1RfVEVNUExBVEVfIFQyOCwgR1RFU1RfVEVNUExBVEVf
IFQyOSwgR1RFU1RfVEVNUExBVEVfIFQzMCwKKyAgICBHVEVTVF9URU1QTEFURV8gVDMxLCBHVEVT
VF9URU1QTEFURV8gVDMyLCBHVEVTVF9URU1QTEFURV8gVDMzLAorICAgIEdURVNUX1RFTVBMQVRF
XyBUMzQsIEdURVNUX1RFTVBMQVRFXyBUMzUsIEdURVNUX1RFTVBMQVRFXyBUMzYsCisgICAgR1RF
U1RfVEVNUExBVEVfIFQzNywgR1RFU1RfVEVNUExBVEVfIFQzOCwgR1RFU1RfVEVNUExBVEVfIFQz
OSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDQwLCBHVEVTVF9URU1QTEFURV8gVDQxLCBHVEVTVF9U
RU1QTEFURV8gVDQyLAorICAgIEdURVNUX1RFTVBMQVRFXyBUNDMsIEdURVNUX1RFTVBMQVRFXyBU
NDQsIEdURVNUX1RFTVBMQVRFXyBUNDUsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ0NiwgR1RFU1Rf
VEVNUExBVEVfIFQ0NywgR1RFU1RfVEVNUExBVEVfIFQ0OCwKKyAgICBHVEVTVF9URU1QTEFURV8g
VDQ5Pgorc3RydWN0IFRlbXBsYXRlczQ5IHsKKyAgdHlwZWRlZiBUZW1wbGF0ZVNlbDxUMT4gSGVh
ZDsKKyAgdHlwZWRlZiBUZW1wbGF0ZXM0ODxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDks
IFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAorICAgICAgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTks
IFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsCisgICAgICBUMjks
IFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLCBU
NDEsIFQ0MiwKKyAgICAgIFQ0MywgVDQ0LCBUNDUsIFQ0NiwgVDQ3LCBUNDgsIFQ0OT4gVGFpbDsK
K307CisKK3RlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwg
R1RFU1RfVEVNUExBVEVfIFQzLAorICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExB
VEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVT
VF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKKyAgICBHVEVTVF9URU1QTEFURV8g
VDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAorICAgIEdURVNU
X1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUs
CisgICAgR1RFU1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVN
UExBVEVfIFQxOCwKKyAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8gVDIw
LCBHVEVTVF9URU1QTEFURV8gVDIxLAorICAgIEdURVNUX1RFTVBMQVRFXyBUMjIsIEdURVNUX1RF
TVBMQVRFXyBUMjMsIEdURVNUX1RFTVBMQVRFXyBUMjQsCisgICAgR1RFU1RfVEVNUExBVEVfIFQy
NSwgR1RFU1RfVEVNUExBVEVfIFQyNiwgR1RFU1RfVEVNUExBVEVfIFQyNywKKyAgICBHVEVTVF9U
RU1QTEFURV8gVDI4LCBHVEVTVF9URU1QTEFURV8gVDI5LCBHVEVTVF9URU1QTEFURV8gVDMwLAor
ICAgIEdURVNUX1RFTVBMQVRFXyBUMzEsIEdURVNUX1RFTVBMQVRFXyBUMzIsIEdURVNUX1RFTVBM
QVRFXyBUMzMsCisgICAgR1RFU1RfVEVNUExBVEVfIFQzNCwgR1RFU1RfVEVNUExBVEVfIFQzNSwg
R1RFU1RfVEVNUExBVEVfIFQzNiwKKyAgICBHVEVTVF9URU1QTEFURV8gVDM3LCBHVEVTVF9URU1Q
TEFURV8gVDM4LCBHVEVTVF9URU1QTEFURV8gVDM5LAorICAgIEdURVNUX1RFTVBMQVRFXyBUNDAs
IEdURVNUX1RFTVBMQVRFXyBUNDEsIEdURVNUX1RFTVBMQVRFXyBUNDIsCisgICAgR1RFU1RfVEVN
UExBVEVfIFQ0MywgR1RFU1RfVEVNUExBVEVfIFQ0NCwgR1RFU1RfVEVNUExBVEVfIFQ0NSwKKyAg
ICBHVEVTVF9URU1QTEFURV8gVDQ2LCBHVEVTVF9URU1QTEFURV8gVDQ3LCBHVEVTVF9URU1QTEFU
RV8gVDQ4LAorICAgIEdURVNUX1RFTVBMQVRFXyBUNDksIEdURVNUX1RFTVBMQVRFXyBUNTA+Citz
dHJ1Y3QgVGVtcGxhdGVzNTAgeworICB0eXBlZGVmIFRlbXBsYXRlU2VsPFQxPiBIZWFkOworICB0
eXBlZGVmIFRlbXBsYXRlczQ5PFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBU
MTEsIFQxMiwgVDEzLCBUMTQsCisgICAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBU
MjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwKKyAgICAgIFQyOSwgVDMwLCBU
MzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsIFQ0MSwgVDQy
LAorICAgICAgVDQzLCBUNDQsIFQ0NSwgVDQ2LCBUNDcsIFQ0OCwgVDQ5LCBUNTA+IFRhaWw7Cit9
OworCisKKy8vIFdlIGRvbid0IHdhbnQgdG8gcmVxdWlyZSB0aGUgdXNlcnMgdG8gd3JpdGUgVGVt
cGxhdGVzTjwuLi4+IGRpcmVjdGx5LAorLy8gYXMgdGhhdCB3b3VsZCByZXF1aXJlIHRoZW0gdG8g
Y291bnQgdGhlIGxlbmd0aC4gIFRlbXBsYXRlczwuLi4+IGlzIG11Y2gKKy8vIGVhc2llciB0byB3
cml0ZSwgYnV0IGdlbmVyYXRlcyBob3JyaWJsZSBtZXNzYWdlcyB3aGVuIHRoZXJlIGlzIGEKKy8v
IGNvbXBpbGVyIGVycm9yLCBhcyBnY2MgaW5zaXN0cyBvbiBwcmludGluZyBvdXQgZWFjaCB0ZW1w
bGF0ZQorLy8gYXJndW1lbnQsIGV2ZW4gaWYgaXQgaGFzIHRoZSBkZWZhdWx0IHZhbHVlICh0aGlz
IG1lYW5zIFRlbXBsYXRlczxsaXN0PgorLy8gd2lsbCBhcHBlYXIgYXMgVGVtcGxhdGVzPGxpc3Qs
IE5vbmVULCBOb25lVCwgLi4uLCBOb25lVD4gaW4gdGhlIGNvbXBpbGVyCisvLyBlcnJvcnMpLgor
Ly8KKy8vIE91ciBzb2x1dGlvbiBpcyB0byBjb21iaW5lIHRoZSBiZXN0IHBhcnQgb2YgdGhlIHR3
byBhcHByb2FjaGVzOiBhCisvLyB1c2VyIHdvdWxkIHdyaXRlIFRlbXBsYXRlczxUMSwgLi4uLCBU
Tj4sIGFuZCBHb29nbGUgVGVzdCB3aWxsIHRyYW5zbGF0ZQorLy8gdGhhdCB0byBUZW1wbGF0ZXNO
PFQxLCAuLi4sIFROPiBpbnRlcm5hbGx5IHRvIG1ha2UgZXJyb3IgbWVzc2FnZXMKKy8vIHJlYWRh
YmxlLiAgVGhlIHRyYW5zbGF0aW9uIGlzIGRvbmUgYnkgdGhlICd0eXBlJyBtZW1iZXIgb2YgdGhl
CisvLyBUZW1wbGF0ZXMgdGVtcGxhdGUuCit0ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxID0g
Tm9uZVQsIEdURVNUX1RFTVBMQVRFXyBUMiA9IE5vbmVULAorICAgIEdURVNUX1RFTVBMQVRFXyBU
MyA9IE5vbmVULCBHVEVTVF9URU1QTEFURV8gVDQgPSBOb25lVCwKKyAgICBHVEVTVF9URU1QTEFU
RV8gVDUgPSBOb25lVCwgR1RFU1RfVEVNUExBVEVfIFQ2ID0gTm9uZVQsCisgICAgR1RFU1RfVEVN
UExBVEVfIFQ3ID0gTm9uZVQsIEdURVNUX1RFTVBMQVRFXyBUOCA9IE5vbmVULAorICAgIEdURVNU
X1RFTVBMQVRFXyBUOSA9IE5vbmVULCBHVEVTVF9URU1QTEFURV8gVDEwID0gTm9uZVQsCisgICAg
R1RFU1RfVEVNUExBVEVfIFQxMSA9IE5vbmVULCBHVEVTVF9URU1QTEFURV8gVDEyID0gTm9uZVQs
CisgICAgR1RFU1RfVEVNUExBVEVfIFQxMyA9IE5vbmVULCBHVEVTVF9URU1QTEFURV8gVDE0ID0g
Tm9uZVQsCisgICAgR1RFU1RfVEVNUExBVEVfIFQxNSA9IE5vbmVULCBHVEVTVF9URU1QTEFURV8g
VDE2ID0gTm9uZVQsCisgICAgR1RFU1RfVEVNUExBVEVfIFQxNyA9IE5vbmVULCBHVEVTVF9URU1Q
TEFURV8gVDE4ID0gTm9uZVQsCisgICAgR1RFU1RfVEVNUExBVEVfIFQxOSA9IE5vbmVULCBHVEVT
VF9URU1QTEFURV8gVDIwID0gTm9uZVQsCisgICAgR1RFU1RfVEVNUExBVEVfIFQyMSA9IE5vbmVU
LCBHVEVTVF9URU1QTEFURV8gVDIyID0gTm9uZVQsCisgICAgR1RFU1RfVEVNUExBVEVfIFQyMyA9
IE5vbmVULCBHVEVTVF9URU1QTEFURV8gVDI0ID0gTm9uZVQsCisgICAgR1RFU1RfVEVNUExBVEVf
IFQyNSA9IE5vbmVULCBHVEVTVF9URU1QTEFURV8gVDI2ID0gTm9uZVQsCisgICAgR1RFU1RfVEVN
UExBVEVfIFQyNyA9IE5vbmVULCBHVEVTVF9URU1QTEFURV8gVDI4ID0gTm9uZVQsCisgICAgR1RF
U1RfVEVNUExBVEVfIFQyOSA9IE5vbmVULCBHVEVTVF9URU1QTEFURV8gVDMwID0gTm9uZVQsCisg
ICAgR1RFU1RfVEVNUExBVEVfIFQzMSA9IE5vbmVULCBHVEVTVF9URU1QTEFURV8gVDMyID0gTm9u
ZVQsCisgICAgR1RFU1RfVEVNUExBVEVfIFQzMyA9IE5vbmVULCBHVEVTVF9URU1QTEFURV8gVDM0
ID0gTm9uZVQsCisgICAgR1RFU1RfVEVNUExBVEVfIFQzNSA9IE5vbmVULCBHVEVTVF9URU1QTEFU
RV8gVDM2ID0gTm9uZVQsCisgICAgR1RFU1RfVEVNUExBVEVfIFQzNyA9IE5vbmVULCBHVEVTVF9U
RU1QTEFURV8gVDM4ID0gTm9uZVQsCisgICAgR1RFU1RfVEVNUExBVEVfIFQzOSA9IE5vbmVULCBH
VEVTVF9URU1QTEFURV8gVDQwID0gTm9uZVQsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ0MSA9IE5v
bmVULCBHVEVTVF9URU1QTEFURV8gVDQyID0gTm9uZVQsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ0
MyA9IE5vbmVULCBHVEVTVF9URU1QTEFURV8gVDQ0ID0gTm9uZVQsCisgICAgR1RFU1RfVEVNUExB
VEVfIFQ0NSA9IE5vbmVULCBHVEVTVF9URU1QTEFURV8gVDQ2ID0gTm9uZVQsCisgICAgR1RFU1Rf
VEVNUExBVEVfIFQ0NyA9IE5vbmVULCBHVEVTVF9URU1QTEFURV8gVDQ4ID0gTm9uZVQsCisgICAg
R1RFU1RfVEVNUExBVEVfIFQ0OSA9IE5vbmVULCBHVEVTVF9URU1QTEFURV8gVDUwID0gTm9uZVQ+
CitzdHJ1Y3QgVGVtcGxhdGVzIHsKKyAgdHlwZWRlZiBUZW1wbGF0ZXM1MDxUMSwgVDIsIFQzLCBU
NCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsCisgICAgICBUMTQsIFQx
NSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYs
IFQyNywKKyAgICAgIFQyOCwgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYs
IFQzNywgVDM4LCBUMzksIFQ0MCwgVDQxLAorICAgICAgVDQyLCBUNDMsIFQ0NCwgVDQ1LCBUNDYs
IFQ0NywgVDQ4LCBUNDksIFQ1MD4gdHlwZTsKK307CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgVGVt
cGxhdGVzPE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsCisgICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCisgICAgTm9uZVQsIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCisgICAgTm9u
ZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsCisgICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCisgICAgTm9uZVQ+IHsKKyAgdHlwZWRlZiBUZW1w
bGF0ZXMwIHR5cGU7Cit9OwordGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMT4KK3N0cnVjdCBU
ZW1wbGF0ZXM8VDEsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5v
bmVULCBOb25lVCwKKyAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKKyAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKKyAgICBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LCBOb25lVCwKKyAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKKyAgICBOb25lVD4geworICB0eXBlZGVmIFRlbXBs
YXRlczE8VDE+IHR5cGU7Cit9OwordGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1Rf
VEVNUExBVEVfIFQyPgorc3RydWN0IFRlbXBsYXRlczxUMSwgVDIsIE5vbmVULCBOb25lVCwgTm9u
ZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAorICAgIE5vbmVULCBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAorICAgIE5v
bmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9u
ZVQsIE5vbmVULAorICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAorICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5v
bmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAorICAgIE5vbmVU
PiB7CisgIHR5cGVkZWYgVGVtcGxhdGVzMjxUMSwgVDI+IHR5cGU7Cit9OwordGVtcGxhdGUgPEdU
RVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDM+
CitzdHJ1Y3QgVGVtcGxhdGVzPFQxLCBUMiwgVDMsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LCBOb25lVCwgTm9uZVQsIE5vbmVULAorICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAorICAgIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LAorICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULAorICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVUPiB7CisgIHR5cGVkZWYgVGVtcGxh
dGVzMzxUMSwgVDIsIFQzPiB0eXBlOworfTsKK3RlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEs
IEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAorICAgIEdURVNUX1RFTVBM
QVRFXyBUND4KK3N0cnVjdCBUZW1wbGF0ZXM8VDEsIFQyLCBUMywgVDQsIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCisgICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9u
ZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCisgICAgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwg
Tm9uZVQsCisgICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9u
ZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCisgICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQ+IHsKKyAgdHlwZWRlZiBU
ZW1wbGF0ZXM0PFQxLCBUMiwgVDMsIFQ0PiB0eXBlOworfTsKK3RlbXBsYXRlIDxHVEVTVF9URU1Q
TEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAorICAgIEdU
RVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1Pgorc3RydWN0IFRlbXBsYXRlczxU
MSwgVDIsIFQzLCBUNCwgVDUsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9u
ZVQsCisgICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsCisgICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5v
bmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCisgICAgTm9uZVQsIE5vbmVU
LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
CisgICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5v
bmVULCBOb25lVD4geworICB0eXBlZGVmIFRlbXBsYXRlczU8VDEsIFQyLCBUMywgVDQsIFQ1PiB0
eXBlOworfTsKK3RlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBU
MiwgR1RFU1RfVEVNUExBVEVfIFQzLAorICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVN
UExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDY+CitzdHJ1Y3QgVGVtcGxhdGVzPFQxLCBUMiwg
VDMsIFQ0LCBUNSwgVDYsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKKyAgICBO
b25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5v
bmVULCBOb25lVCwKKyAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKKyAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKKyAgICBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
PiB7CisgIHR5cGVkZWYgVGVtcGxhdGVzNjxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2PiB0eXBlOwor
fTsKK3RlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RF
U1RfVEVNUExBVEVfIFQzLAorICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVf
IFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ3Pgorc3RydWN0
IFRlbXBsYXRlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULAorICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAorICAgIE5vbmVULCBOb25lVCwgTm9u
ZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAorICAg
IE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULAorICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9u
ZVQsIE5vbmVULCBOb25lVD4geworICB0eXBlZGVmIFRlbXBsYXRlczc8VDEsIFQyLCBUMywgVDQs
IFQ1LCBUNiwgVDc+IHR5cGU7Cit9OwordGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RF
U1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCisgICAgR1RFU1RfVEVNUExBVEVf
IFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKKyAgICBHVEVTVF9U
RU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOD4KK3N0cnVjdCBUZW1wbGF0ZXM8VDEsIFQy
LCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKKyAg
ICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVCwKKyAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5v
bmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKKyAgICBOb25lVCwgTm9uZVQsIE5vbmVU
LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKKyAgICBO
b25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQ+IHsK
KyAgdHlwZWRlZiBUZW1wbGF0ZXM4PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOD4gdHlw
ZTsKK307Cit0ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIs
IEdURVNUX1RFTVBMQVRFXyBUMywKKyAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBM
QVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAorICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RF
U1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDk+CitzdHJ1Y3QgVGVtcGxhdGVzPFQx
LCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIE5vbmVULCBOb25lVCwgTm9uZVQsCisg
ICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LCBOb25lVCwgTm9uZVQsCisgICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCisgICAgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCisgICAg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVUPiB7
CisgIHR5cGVkZWYgVGVtcGxhdGVzOTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5
PiB0eXBlOworfTsKK3RlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRF
XyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAorICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1Rf
VEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ3
LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKKyAgICBHVEVTVF9URU1Q
TEFURV8gVDEwPgorc3RydWN0IFRlbXBsYXRlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywg
VDgsIFQ5LCBUMTAsIE5vbmVULCBOb25lVCwgTm9uZVQsCisgICAgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCisgICAg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsCisgICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCisgICAgTm9uZVQsIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQ+IHsKKyAgdHlwZWRlZiBUZW1wbGF0ZXMxMDxUMSwg
VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTA+IHR5cGU7Cit9OwordGVtcGxhdGUg
PEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8g
VDMsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RF
TVBMQVRFXyBUNiwKKyAgICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwg
R1RFU1RfVEVNUExBVEVfIFQ5LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBM
QVRFXyBUMTE+CitzdHJ1Y3QgVGVtcGxhdGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBU
OCwgVDksIFQxMCwgVDExLCBOb25lVCwgTm9uZVQsCisgICAgTm9uZVQsIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCisgICAgTm9u
ZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsCisgICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCisgICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9u
ZVQsIE5vbmVULCBOb25lVCwgTm9uZVQ+IHsKKyAgdHlwZWRlZiBUZW1wbGF0ZXMxMTxUMSwgVDIs
IFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMT4gdHlwZTsKK307Cit0ZW1wbGF0
ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRF
XyBUMywKKyAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1Rf
VEVNUExBVEVfIFQ2LAorICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4
LCBHVEVTVF9URU1QTEFURV8gVDksCisgICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVN
UExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMj4KK3N0cnVjdCBUZW1wbGF0ZXM8VDEsIFQy
LCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgTm9uZVQsCisgICAg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsCisgICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCisgICAgTm9uZVQsIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCisgICAgTm9u
ZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQ+IHsKKyAgdHlwZWRl
ZiBUZW1wbGF0ZXMxMjxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQx
MSwgVDEyPiB0eXBlOworfTsKK3RlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RF
TVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAorICAgIEdURVNUX1RFTVBMQVRFXyBUNCwg
R1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCisgICAgR1RFU1RfVEVNUExB
VEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKKyAgICBHVEVT
VF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEy
LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTM+CitzdHJ1Y3QgVGVtcGxhdGVzPFQxLCBUMiwgVDMs
IFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgTm9uZVQsCisgICAg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsCisgICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCisgICAgTm9uZVQsIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCisgICAgTm9u
ZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVD4geworICB0eXBlZGVmIFRlbXBs
YXRlczEzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIs
CisgICAgICBUMTM+IHR5cGU7Cit9OwordGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RF
U1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCisgICAgR1RFU1RfVEVNUExBVEVf
IFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKKyAgICBHVEVTVF9U
RU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAorICAg
IEdURVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNUX1RFTVBMQVRF
XyBUMTIsCisgICAgR1RFU1RfVEVNUExBVEVfIFQxMywgR1RFU1RfVEVNUExBVEVfIFQxND4KK3N0
cnVjdCBUZW1wbGF0ZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBU
MTEsIFQxMiwgVDEzLCBUMTQsCisgICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCisgICAgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCisg
ICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LCBOb25lVCwgTm9uZVQsCisgICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVD4geworICB0eXBlZGVmIFRlbXBsYXRlczE0PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3
LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKKyAgICAgIFQxND4gdHlwZTsKK307Cit0ZW1w
bGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBM
QVRFXyBUMywKKyAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RF
U1RfVEVNUExBVEVfIFQ2LAorICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVf
IFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCisgICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1Rf
VEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKKyAgICBHVEVTVF9URU1QTEFURV8g
VDEzLCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8gVDE1Pgorc3RydWN0IFRl
bXBsYXRlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEy
LCBUMTMsIFQxNCwKKyAgICBUMTUsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAorICAgIE5vbmVULCBOb25lVCwgTm9u
ZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAorICAg
IE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULAorICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVD4gewor
ICB0eXBlZGVmIFRlbXBsYXRlczE1PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDks
IFQxMCwgVDExLCBUMTIsIFQxMywKKyAgICAgIFQxNCwgVDE1PiB0eXBlOworfTsKK3RlbXBsYXRl
IDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVf
IFQzLAorICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9U
RU1QTEFURV8gVDYsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgs
IEdURVNUX1RFTVBMQVRFXyBUOSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1Q
TEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTMs
IEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCisgICAgR1RFU1RfVEVN
UExBVEVfIFQxNj4KK3N0cnVjdCBUZW1wbGF0ZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcs
IFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsCisgICAgVDE1LCBUMTYsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCisg
ICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LCBOb25lVCwgTm9uZVQsCisgICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCisgICAgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVUPiB7CisgIHR5cGVkZWYgVGVtcGxhdGVzMTY8VDEsIFQyLCBUMywgVDQs
IFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAorICAgICAgVDE0LCBUMTUs
IFQxNj4gdHlwZTsKK307Cit0ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1Q
TEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKKyAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdU
RVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAorICAgIEdURVNUX1RFTVBMQVRF
XyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCisgICAgR1RFU1Rf
VEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwK
KyAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9URU1Q
TEFURV8gVDE1LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRFXyBUMTc+
CitzdHJ1Y3QgVGVtcGxhdGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQx
MCwgVDExLCBUMTIsIFQxMywgVDE0LAorICAgIFQxNSwgVDE2LCBUMTcsIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKKyAgICBOb25lVCwgTm9u
ZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwKKyAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwKKyAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9u
ZVQ+IHsKKyAgdHlwZWRlZiBUZW1wbGF0ZXMxNzxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywg
VDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsCisgICAgICBUMTQsIFQxNSwgVDE2LCBUMTc+IHR5
cGU7Cit9OwordGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQy
LCBHVEVTVF9URU1QTEFURV8gVDMsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1Q
TEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKKyAgICBHVEVTVF9URU1QTEFURV8gVDcsIEdU
RVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAorICAgIEdURVNUX1RFTVBMQVRF
XyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNUX1RFTVBMQVRFXyBUMTIsCisgICAgR1RF
U1RfVEVNUExBVEVfIFQxMywgR1RFU1RfVEVNUExBVEVfIFQxNCwgR1RFU1RfVEVNUExBVEVfIFQx
NSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDE2LCBHVEVTVF9URU1QTEFURV8gVDE3LCBHVEVTVF9U
RU1QTEFURV8gVDE4Pgorc3RydWN0IFRlbXBsYXRlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBU
NywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKKyAgICBUMTUsIFQxNiwgVDE3LCBU
MTgsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwKKyAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwKKyAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9u
ZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKKyAgICBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVD4geworICB0eXBlZGVmIFRlbXBsYXRlczE4PFQxLCBUMiwgVDMsIFQ0LCBU
NSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKKyAgICAgIFQxNCwgVDE1LCBU
MTYsIFQxNywgVDE4PiB0eXBlOworfTsKK3RlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdU
RVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAorICAgIEdURVNUX1RFTVBMQVRF
XyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCisgICAgR1RFU1Rf
VEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKKyAg
ICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFU
RV8gVDEyLAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdU
RVNUX1RFTVBMQVRFXyBUMTUsCisgICAgR1RFU1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExB
VEVfIFQxNywgR1RFU1RfVEVNUExBVEVfIFQxOCwKKyAgICBHVEVTVF9URU1QTEFURV8gVDE5Pgor
c3RydWN0IFRlbXBsYXRlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAs
IFQxMSwgVDEyLCBUMTMsIFQxNCwKKyAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCisgICAgTm9uZVQsIE5v
bmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9u
ZVQsCisgICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsCisgICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQ+IHsK
KyAgdHlwZWRlZiBUZW1wbGF0ZXMxOTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5
LCBUMTAsIFQxMSwgVDEyLCBUMTMsCisgICAgICBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5
PiB0eXBlOworfTsKK3RlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRF
XyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAorICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1Rf
VEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ3
LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKKyAgICBHVEVTVF9URU1Q
TEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAorICAg
IEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRF
XyBUMTUsCisgICAgR1RFU1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RF
U1RfVEVNUExBVEVfIFQxOCwKKyAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFU
RV8gVDIwPgorc3RydWN0IFRlbXBsYXRlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgs
IFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKKyAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQx
OSwgVDIwLCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAorICAgIE5v
bmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9u
ZVQsIE5vbmVULAorICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAorICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5v
bmVUPiB7CisgIHR5cGVkZWYgVGVtcGxhdGVzMjA8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcs
IFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAorICAgICAgVDE0LCBUMTUsIFQxNiwgVDE3LCBU
MTgsIFQxOSwgVDIwPiB0eXBlOworfTsKK3RlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdU
RVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAorICAgIEdURVNUX1RFTVBMQVRF
XyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCisgICAgR1RFU1Rf
VEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKKyAg
ICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFU
RV8gVDEyLAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdU
RVNUX1RFTVBMQVRFXyBUMTUsCisgICAgR1RFU1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExB
VEVfIFQxNywgR1RFU1RfVEVNUExBVEVfIFQxOCwKKyAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBH
VEVTVF9URU1QTEFURV8gVDIwLCBHVEVTVF9URU1QTEFURV8gVDIxPgorc3RydWN0IFRlbXBsYXRl
czxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMs
IFQxNCwKKyAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwKKyAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKKyAgICBOb25lVCwgTm9u
ZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwKKyAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVD4geworICB0eXBlZGVmIFRlbXBsYXRl
czIxPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQx
MywKKyAgICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxPiB0eXBlOwor
fTsKK3RlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RF
U1RfVEVNUExBVEVfIFQzLAorICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVf
IFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9U
RU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDEw
LCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAorICAgIEdURVNUX1RF
TVBMQVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCisg
ICAgR1RFU1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExB
VEVfIFQxOCwKKyAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8gVDIwLCBH
VEVTVF9URU1QTEFURV8gVDIxLAorICAgIEdURVNUX1RFTVBMQVRFXyBUMjI+CitzdHJ1Y3QgVGVt
cGxhdGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIs
IFQxMywgVDE0LAorICAgIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBO
b25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCisgICAgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCisgICAg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsCisgICAgTm9uZVQsIE5vbmVULCBOb25lVD4geworICB0eXBlZGVmIFRlbXBs
YXRlczIyPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIs
IFQxMywKKyAgICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjI+
IHR5cGU7Cit9OwordGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVf
IFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9U
RU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKKyAgICBHVEVTVF9URU1QTEFURV8gVDcs
IEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAorICAgIEdURVNUX1RFTVBM
QVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNUX1RFTVBMQVRFXyBUMTIsCisgICAg
R1RFU1RfVEVNUExBVEVfIFQxMywgR1RFU1RfVEVNUExBVEVfIFQxNCwgR1RFU1RfVEVNUExBVEVf
IFQxNSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDE2LCBHVEVTVF9URU1QTEFURV8gVDE3LCBHVEVT
VF9URU1QTEFURV8gVDE4LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTksIEdURVNUX1RFTVBMQVRF
XyBUMjAsIEdURVNUX1RFTVBMQVRFXyBUMjEsCisgICAgR1RFU1RfVEVNUExBVEVfIFQyMiwgR1RF
U1RfVEVNUExBVEVfIFQyMz4KK3N0cnVjdCBUZW1wbGF0ZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBU
NiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsCisgICAgVDE1LCBUMTYsIFQx
NywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9u
ZVQsCisgICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsCisgICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5v
bmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCisgICAgTm9uZVQsIE5vbmVU
LCBOb25lVD4geworICB0eXBlZGVmIFRlbXBsYXRlczIzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYs
IFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKKyAgICAgIFQxNCwgVDE1LCBUMTYsIFQx
NywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMz4gdHlwZTsKK307Cit0ZW1wbGF0ZSA8R1RF
U1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywK
KyAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExB
VEVfIFQ2LAorICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVT
VF9URU1QTEFURV8gVDksCisgICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVf
IFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKKyAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVT
VF9URU1QTEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8gVDE1LAorICAgIEdURVNUX1RFTVBMQVRF
XyBUMTYsIEdURVNUX1RFTVBMQVRFXyBUMTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCisgICAgR1RF
U1RfVEVNUExBVEVfIFQxOSwgR1RFU1RfVEVNUExBVEVfIFQyMCwgR1RFU1RfVEVNUExBVEVfIFQy
MSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDIyLCBHVEVTVF9URU1QTEFURV8gVDIzLCBHVEVTVF9U
RU1QTEFURV8gVDI0Pgorc3RydWN0IFRlbXBsYXRlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBU
NywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKKyAgICBUMTUsIFQxNiwgVDE3LCBU
MTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIE5vbmVULCBOb25lVCwgTm9uZVQsCisg
ICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LCBOb25lVCwgTm9uZVQsCisgICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCisgICAgTm9uZVQsIE5vbmVULCBOb25l
VD4geworICB0eXBlZGVmIFRlbXBsYXRlczI0PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBU
OCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKKyAgICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4
LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0PiB0eXBlOworfTsKK3RlbXBsYXRlIDxHVEVT
VF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAor
ICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFU
RV8gVDYsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNU
X1RFTVBMQVRFXyBUOSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8g
VDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNU
X1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCisgICAgR1RFU1RfVEVNUExBVEVf
IFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExBVEVfIFQxOCwKKyAgICBHVEVT
VF9URU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8gVDIwLCBHVEVTVF9URU1QTEFURV8gVDIx
LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMjIsIEdURVNUX1RFTVBMQVRFXyBUMjMsIEdURVNUX1RF
TVBMQVRFXyBUMjQsCisgICAgR1RFU1RfVEVNUExBVEVfIFQyNT4KK3N0cnVjdCBUZW1wbGF0ZXM8
VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBU
MTQsCisgICAgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0
LCBUMjUsIE5vbmVULCBOb25lVCwgTm9uZVQsCisgICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9u
ZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCisgICAgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwg
Tm9uZVQsCisgICAgTm9uZVQsIE5vbmVUPiB7CisgIHR5cGVkZWYgVGVtcGxhdGVzMjU8VDEsIFQy
LCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAorICAgICAg
VDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQy
NT4gdHlwZTsKK307Cit0ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFU
RV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKKyAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNU
X1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAorICAgIEdURVNUX1RFTVBMQVRFXyBU
NywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCisgICAgR1RFU1RfVEVN
UExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKKyAg
ICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9URU1QTEFU
RV8gVDE1LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRFXyBUMTcsIEdU
RVNUX1RFTVBMQVRFXyBUMTgsCisgICAgR1RFU1RfVEVNUExBVEVfIFQxOSwgR1RFU1RfVEVNUExB
VEVfIFQyMCwgR1RFU1RfVEVNUExBVEVfIFQyMSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDIyLCBH
VEVTVF9URU1QTEFURV8gVDIzLCBHVEVTVF9URU1QTEFURV8gVDI0LAorICAgIEdURVNUX1RFTVBM
QVRFXyBUMjUsIEdURVNUX1RFTVBMQVRFXyBUMjY+CitzdHJ1Y3QgVGVtcGxhdGVzPFQxLCBUMiwg
VDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAorICAg
IFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBU
MjYsIE5vbmVULCBOb25lVCwKKyAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKKyAgICBOb25lVCwgTm9uZVQsIE5v
bmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKKyAg
ICBOb25lVCwgTm9uZVQ+IHsKKyAgdHlwZWRlZiBUZW1wbGF0ZXMyNjxUMSwgVDIsIFQzLCBUNCwg
VDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsCisgICAgICBUMTQsIFQxNSwg
VDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjY+IHR5
cGU7Cit9OwordGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQy
LCBHVEVTVF9URU1QTEFURV8gVDMsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1Q
TEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKKyAgICBHVEVTVF9URU1QTEFURV8gVDcsIEdU
RVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAorICAgIEdURVNUX1RFTVBMQVRF
XyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNUX1RFTVBMQVRFXyBUMTIsCisgICAgR1RF
U1RfVEVNUExBVEVfIFQxMywgR1RFU1RfVEVNUExBVEVfIFQxNCwgR1RFU1RfVEVNUExBVEVfIFQx
NSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDE2LCBHVEVTVF9URU1QTEFURV8gVDE3LCBHVEVTVF9U
RU1QTEFURV8gVDE4LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTksIEdURVNUX1RFTVBMQVRFXyBU
MjAsIEdURVNUX1RFTVBMQVRFXyBUMjEsCisgICAgR1RFU1RfVEVNUExBVEVfIFQyMiwgR1RFU1Rf
VEVNUExBVEVfIFQyMywgR1RFU1RfVEVNUExBVEVfIFQyNCwKKyAgICBHVEVTVF9URU1QTEFURV8g
VDI1LCBHVEVTVF9URU1QTEFURV8gVDI2LCBHVEVTVF9URU1QTEFURV8gVDI3Pgorc3RydWN0IFRl
bXBsYXRlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEy
LCBUMTMsIFQxNCwKKyAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwg
VDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIE5vbmVULAorICAgIE5vbmVULCBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAorICAgIE5v
bmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9u
ZVQsIE5vbmVULAorICAgIE5vbmVULCBOb25lVD4geworICB0eXBlZGVmIFRlbXBsYXRlczI3PFQx
LCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKKyAg
ICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0
LCBUMjUsIFQyNiwKKyAgICAgIFQyNz4gdHlwZTsKK307Cit0ZW1wbGF0ZSA8R1RFU1RfVEVNUExB
VEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKKyAgICBHVEVT
VF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAor
ICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFU
RV8gVDksCisgICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RF
U1RfVEVNUExBVEVfIFQxMiwKKyAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFU
RV8gVDE0LCBHVEVTVF9URU1QTEFURV8gVDE1LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTYsIEdU
RVNUX1RFTVBMQVRFXyBUMTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCisgICAgR1RFU1RfVEVNUExB
VEVfIFQxOSwgR1RFU1RfVEVNUExBVEVfIFQyMCwgR1RFU1RfVEVNUExBVEVfIFQyMSwKKyAgICBH
VEVTVF9URU1QTEFURV8gVDIyLCBHVEVTVF9URU1QTEFURV8gVDIzLCBHVEVTVF9URU1QTEFURV8g
VDI0LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMjUsIEdURVNUX1RFTVBMQVRFXyBUMjYsIEdURVNU
X1RFTVBMQVRFXyBUMjcsCisgICAgR1RFU1RfVEVNUExBVEVfIFQyOD4KK3N0cnVjdCBUZW1wbGF0
ZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEz
LCBUMTQsCisgICAgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywg
VDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsCisgICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCisgICAgTm9uZVQsIE5v
bmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9u
ZVQsCisgICAgTm9uZVQsIE5vbmVUPiB7CisgIHR5cGVkZWYgVGVtcGxhdGVzMjg8VDEsIFQyLCBU
MywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAorICAgICAgVDE0
LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwg
VDI2LCBUMjcsCisgICAgICBUMjg+IHR5cGU7Cit9OwordGVtcGxhdGUgPEdURVNUX1RFTVBMQVRF
XyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCisgICAgR1RFU1Rf
VEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKKyAg
ICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVf
IFQ5LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNU
X1RFTVBMQVRFXyBUMTIsCisgICAgR1RFU1RfVEVNUExBVEVfIFQxMywgR1RFU1RfVEVNUExBVEVf
IFQxNCwgR1RFU1RfVEVNUExBVEVfIFQxNSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDE2LCBHVEVT
VF9URU1QTEFURV8gVDE3LCBHVEVTVF9URU1QTEFURV8gVDE4LAorICAgIEdURVNUX1RFTVBMQVRF
XyBUMTksIEdURVNUX1RFTVBMQVRFXyBUMjAsIEdURVNUX1RFTVBMQVRFXyBUMjEsCisgICAgR1RF
U1RfVEVNUExBVEVfIFQyMiwgR1RFU1RfVEVNUExBVEVfIFQyMywgR1RFU1RfVEVNUExBVEVfIFQy
NCwKKyAgICBHVEVTVF9URU1QTEFURV8gVDI1LCBHVEVTVF9URU1QTEFURV8gVDI2LCBHVEVTVF9U
RU1QTEFURV8gVDI3LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMjgsIEdURVNUX1RFTVBMQVRFXyBU
Mjk+CitzdHJ1Y3QgVGVtcGxhdGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDks
IFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAorICAgIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBU
MjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LCBUMjksCisgICAgTm9u
ZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsCisgICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCisgICAgTm9uZVQ+IHsKKyAgdHlwZWRlZiBUZW1w
bGF0ZXMyOTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEy
LCBUMTMsCisgICAgICBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIy
LCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywKKyAgICAgIFQyOCwgVDI5PiB0eXBlOworfTsKK3Rl
bXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVN
UExBVEVfIFQzLAorICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBH
VEVTVF9URU1QTEFURV8gVDYsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFU
RV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVT
VF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAorICAgIEdURVNUX1RFTVBMQVRF
XyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCisgICAgR1RF
U1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExBVEVfIFQx
OCwKKyAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8gVDIwLCBHVEVTVF9U
RU1QTEFURV8gVDIxLAorICAgIEdURVNUX1RFTVBMQVRFXyBUMjIsIEdURVNUX1RFTVBMQVRFXyBU
MjMsIEdURVNUX1RFTVBMQVRFXyBUMjQsCisgICAgR1RFU1RfVEVNUExBVEVfIFQyNSwgR1RFU1Rf
VEVNUExBVEVfIFQyNiwgR1RFU1RfVEVNUExBVEVfIFQyNywKKyAgICBHVEVTVF9URU1QTEFURV8g
VDI4LCBHVEVTVF9URU1QTEFURV8gVDI5LCBHVEVTVF9URU1QTEFURV8gVDMwPgorc3RydWN0IFRl
bXBsYXRlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEy
LCBUMTMsIFQxNCwKKyAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwg
VDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5LAorICAgIFQzMCwgTm9uZVQsIE5vbmVU
LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
CisgICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5v
bmVULCBOb25lVCwgTm9uZVQ+IHsKKyAgdHlwZWRlZiBUZW1wbGF0ZXMzMDxUMSwgVDIsIFQzLCBU
NCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsCisgICAgICBUMTQsIFQx
NSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYs
IFQyNywKKyAgICAgIFQyOCwgVDI5LCBUMzA+IHR5cGU7Cit9OwordGVtcGxhdGUgPEdURVNUX1RF
TVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCisgICAg
R1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBU
NiwKKyAgICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVN
UExBVEVfIFQ5LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEs
IEdURVNUX1RFTVBMQVRFXyBUMTIsCisgICAgR1RFU1RfVEVNUExBVEVfIFQxMywgR1RFU1RfVEVN
UExBVEVfIFQxNCwgR1RFU1RfVEVNUExBVEVfIFQxNSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDE2
LCBHVEVTVF9URU1QTEFURV8gVDE3LCBHVEVTVF9URU1QTEFURV8gVDE4LAorICAgIEdURVNUX1RF
TVBMQVRFXyBUMTksIEdURVNUX1RFTVBMQVRFXyBUMjAsIEdURVNUX1RFTVBMQVRFXyBUMjEsCisg
ICAgR1RFU1RfVEVNUExBVEVfIFQyMiwgR1RFU1RfVEVNUExBVEVfIFQyMywgR1RFU1RfVEVNUExB
VEVfIFQyNCwKKyAgICBHVEVTVF9URU1QTEFURV8gVDI1LCBHVEVTVF9URU1QTEFURV8gVDI2LCBH
VEVTVF9URU1QTEFURV8gVDI3LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMjgsIEdURVNUX1RFTVBM
QVRFXyBUMjksIEdURVNUX1RFTVBMQVRFXyBUMzAsCisgICAgR1RFU1RfVEVNUExBVEVfIFQzMT4K
K3N0cnVjdCBUZW1wbGF0ZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEw
LCBUMTEsIFQxMiwgVDEzLCBUMTQsCisgICAgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwg
VDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsIFQyOSwKKyAgICBUMzAsIFQz
MSwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LCBOb25lVCwKKyAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULCBOb25lVD4geworICB0eXBlZGVmIFRlbXBsYXRlczMxPFQxLCBU
MiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKKyAgICAg
IFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBU
MjUsIFQyNiwgVDI3LAorICAgICAgVDI4LCBUMjksIFQzMCwgVDMxPiB0eXBlOworfTsKK3RlbXBs
YXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExB
VEVfIFQzLAorICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVT
VF9URU1QTEFURV8gVDYsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8g
VDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9U
RU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAorICAgIEdURVNUX1RFTVBMQVRFXyBU
MTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCisgICAgR1RFU1Rf
VEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExBVEVfIFQxOCwK
KyAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8gVDIwLCBHVEVTVF9URU1Q
TEFURV8gVDIxLAorICAgIEdURVNUX1RFTVBMQVRFXyBUMjIsIEdURVNUX1RFTVBMQVRFXyBUMjMs
IEdURVNUX1RFTVBMQVRFXyBUMjQsCisgICAgR1RFU1RfVEVNUExBVEVfIFQyNSwgR1RFU1RfVEVN
UExBVEVfIFQyNiwgR1RFU1RfVEVNUExBVEVfIFQyNywKKyAgICBHVEVTVF9URU1QTEFURV8gVDI4
LCBHVEVTVF9URU1QTEFURV8gVDI5LCBHVEVTVF9URU1QTEFURV8gVDMwLAorICAgIEdURVNUX1RF
TVBMQVRFXyBUMzEsIEdURVNUX1RFTVBMQVRFXyBUMzI+CitzdHJ1Y3QgVGVtcGxhdGVzPFQxLCBU
MiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAor
ICAgIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1
LCBUMjYsIFQyNywgVDI4LCBUMjksCisgICAgVDMwLCBUMzEsIFQzMiwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAorICAgIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
PiB7CisgIHR5cGVkZWYgVGVtcGxhdGVzMzI8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4
LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAorICAgICAgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgs
IFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsCisgICAgICBUMjgs
IFQyOSwgVDMwLCBUMzEsIFQzMj4gdHlwZTsKK307Cit0ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVf
IFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKKyAgICBHVEVTVF9U
RU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAorICAg
IEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8g
VDksCisgICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1Rf
VEVNUExBVEVfIFQxMiwKKyAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8g
VDE0LCBHVEVTVF9URU1QTEFURV8gVDE1LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTYsIEdURVNU
X1RFTVBMQVRFXyBUMTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCisgICAgR1RFU1RfVEVNUExBVEVf
IFQxOSwgR1RFU1RfVEVNUExBVEVfIFQyMCwgR1RFU1RfVEVNUExBVEVfIFQyMSwKKyAgICBHVEVT
VF9URU1QTEFURV8gVDIyLCBHVEVTVF9URU1QTEFURV8gVDIzLCBHVEVTVF9URU1QTEFURV8gVDI0
LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMjUsIEdURVNUX1RFTVBMQVRFXyBUMjYsIEdURVNUX1RF
TVBMQVRFXyBUMjcsCisgICAgR1RFU1RfVEVNUExBVEVfIFQyOCwgR1RFU1RfVEVNUExBVEVfIFQy
OSwgR1RFU1RfVEVNUExBVEVfIFQzMCwKKyAgICBHVEVTVF9URU1QTEFURV8gVDMxLCBHVEVTVF9U
RU1QTEFURV8gVDMyLCBHVEVTVF9URU1QTEFURV8gVDMzPgorc3RydWN0IFRlbXBsYXRlczxUMSwg
VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwK
KyAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQy
NSwgVDI2LCBUMjcsIFQyOCwgVDI5LAorICAgIFQzMCwgVDMxLCBUMzIsIFQzMywgTm9uZVQsIE5v
bmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAorICAgIE5vbmVU
LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQ+
IHsKKyAgdHlwZWRlZiBUZW1wbGF0ZXMzMzxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgs
IFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsCisgICAgICBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwg
VDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywKKyAgICAgIFQyOCwg
VDI5LCBUMzAsIFQzMSwgVDMyLCBUMzM+IHR5cGU7Cit9OwordGVtcGxhdGUgPEdURVNUX1RFTVBM
QVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCisgICAgR1RF
U1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwK
KyAgICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExB
VEVfIFQ5LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdU
RVNUX1RFTVBMQVRFXyBUMTIsCisgICAgR1RFU1RfVEVNUExBVEVfIFQxMywgR1RFU1RfVEVNUExB
VEVfIFQxNCwgR1RFU1RfVEVNUExBVEVfIFQxNSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDE2LCBH
VEVTVF9URU1QTEFURV8gVDE3LCBHVEVTVF9URU1QTEFURV8gVDE4LAorICAgIEdURVNUX1RFTVBM
QVRFXyBUMTksIEdURVNUX1RFTVBMQVRFXyBUMjAsIEdURVNUX1RFTVBMQVRFXyBUMjEsCisgICAg
R1RFU1RfVEVNUExBVEVfIFQyMiwgR1RFU1RfVEVNUExBVEVfIFQyMywgR1RFU1RfVEVNUExBVEVf
IFQyNCwKKyAgICBHVEVTVF9URU1QTEFURV8gVDI1LCBHVEVTVF9URU1QTEFURV8gVDI2LCBHVEVT
VF9URU1QTEFURV8gVDI3LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMjgsIEdURVNUX1RFTVBMQVRF
XyBUMjksIEdURVNUX1RFTVBMQVRFXyBUMzAsCisgICAgR1RFU1RfVEVNUExBVEVfIFQzMSwgR1RF
U1RfVEVNUExBVEVfIFQzMiwgR1RFU1RfVEVNUExBVEVfIFQzMywKKyAgICBHVEVTVF9URU1QTEFU
RV8gVDM0Pgorc3RydWN0IFRlbXBsYXRlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgs
IFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKKyAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQx
OSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5LAorICAg
IFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9u
ZVQsIE5vbmVULCBOb25lVCwKKyAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVUPiB7CisgIHR5cGVkZWYgVGVtcGxhdGVzMzQ8VDEs
IFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAorICAg
ICAgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQs
IFQyNSwgVDI2LCBUMjcsCisgICAgICBUMjgsIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQ+
IHR5cGU7Cit9OwordGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVf
IFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9U
RU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKKyAgICBHVEVTVF9URU1QTEFURV8gVDcs
IEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAorICAgIEdURVNUX1RFTVBM
QVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNUX1RFTVBMQVRFXyBUMTIsCisgICAg
R1RFU1RfVEVNUExBVEVfIFQxMywgR1RFU1RfVEVNUExBVEVfIFQxNCwgR1RFU1RfVEVNUExBVEVf
IFQxNSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDE2LCBHVEVTVF9URU1QTEFURV8gVDE3LCBHVEVT
VF9URU1QTEFURV8gVDE4LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTksIEdURVNUX1RFTVBMQVRF
XyBUMjAsIEdURVNUX1RFTVBMQVRFXyBUMjEsCisgICAgR1RFU1RfVEVNUExBVEVfIFQyMiwgR1RF
U1RfVEVNUExBVEVfIFQyMywgR1RFU1RfVEVNUExBVEVfIFQyNCwKKyAgICBHVEVTVF9URU1QTEFU
RV8gVDI1LCBHVEVTVF9URU1QTEFURV8gVDI2LCBHVEVTVF9URU1QTEFURV8gVDI3LAorICAgIEdU
RVNUX1RFTVBMQVRFXyBUMjgsIEdURVNUX1RFTVBMQVRFXyBUMjksIEdURVNUX1RFTVBMQVRFXyBU
MzAsCisgICAgR1RFU1RfVEVNUExBVEVfIFQzMSwgR1RFU1RfVEVNUExBVEVfIFQzMiwgR1RFU1Rf
VEVNUExBVEVfIFQzMywKKyAgICBHVEVTVF9URU1QTEFURV8gVDM0LCBHVEVTVF9URU1QTEFURV8g
VDM1Pgorc3RydWN0IFRlbXBsYXRlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5
LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKKyAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwg
VDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5LAorICAgIFQz
MCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsCisgICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVD4geworICB0eXBlZGVmIFRlbXBsYXRlczM1PFQxLCBUMiwg
VDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKKyAgICAgIFQx
NCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUs
IFQyNiwgVDI3LAorICAgICAgVDI4LCBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzU+
IHR5cGU7Cit9OwordGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVf
IFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9U
RU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKKyAgICBHVEVTVF9URU1QTEFURV8gVDcs
IEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAorICAgIEdURVNUX1RFTVBM
QVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNUX1RFTVBMQVRFXyBUMTIsCisgICAg
R1RFU1RfVEVNUExBVEVfIFQxMywgR1RFU1RfVEVNUExBVEVfIFQxNCwgR1RFU1RfVEVNUExBVEVf
IFQxNSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDE2LCBHVEVTVF9URU1QTEFURV8gVDE3LCBHVEVT
VF9URU1QTEFURV8gVDE4LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTksIEdURVNUX1RFTVBMQVRF
XyBUMjAsIEdURVNUX1RFTVBMQVRFXyBUMjEsCisgICAgR1RFU1RfVEVNUExBVEVfIFQyMiwgR1RF
U1RfVEVNUExBVEVfIFQyMywgR1RFU1RfVEVNUExBVEVfIFQyNCwKKyAgICBHVEVTVF9URU1QTEFU
RV8gVDI1LCBHVEVTVF9URU1QTEFURV8gVDI2LCBHVEVTVF9URU1QTEFURV8gVDI3LAorICAgIEdU
RVNUX1RFTVBMQVRFXyBUMjgsIEdURVNUX1RFTVBMQVRFXyBUMjksIEdURVNUX1RFTVBMQVRFXyBU
MzAsCisgICAgR1RFU1RfVEVNUExBVEVfIFQzMSwgR1RFU1RfVEVNUExBVEVfIFQzMiwgR1RFU1Rf
VEVNUExBVEVfIFQzMywKKyAgICBHVEVTVF9URU1QTEFURV8gVDM0LCBHVEVTVF9URU1QTEFURV8g
VDM1LCBHVEVTVF9URU1QTEFURV8gVDM2Pgorc3RydWN0IFRlbXBsYXRlczxUMSwgVDIsIFQzLCBU
NCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKKyAgICBUMTUs
IFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBU
MjcsIFQyOCwgVDI5LAorICAgIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgTm9u
ZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAorICAgIE5vbmVULCBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQ+IHsKKyAgdHlwZWRlZiBU
ZW1wbGF0ZXMzNjxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwg
VDEyLCBUMTMsCisgICAgICBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwg
VDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywKKyAgICAgIFQyOCwgVDI5LCBUMzAsIFQzMSwg
VDMyLCBUMzMsIFQzNCwgVDM1LCBUMzY+IHR5cGU7Cit9OwordGVtcGxhdGUgPEdURVNUX1RFTVBM
QVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCisgICAgR1RF
U1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwK
KyAgICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExB
VEVfIFQ5LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdU
RVNUX1RFTVBMQVRFXyBUMTIsCisgICAgR1RFU1RfVEVNUExBVEVfIFQxMywgR1RFU1RfVEVNUExB
VEVfIFQxNCwgR1RFU1RfVEVNUExBVEVfIFQxNSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDE2LCBH
VEVTVF9URU1QTEFURV8gVDE3LCBHVEVTVF9URU1QTEFURV8gVDE4LAorICAgIEdURVNUX1RFTVBM
QVRFXyBUMTksIEdURVNUX1RFTVBMQVRFXyBUMjAsIEdURVNUX1RFTVBMQVRFXyBUMjEsCisgICAg
R1RFU1RfVEVNUExBVEVfIFQyMiwgR1RFU1RfVEVNUExBVEVfIFQyMywgR1RFU1RfVEVNUExBVEVf
IFQyNCwKKyAgICBHVEVTVF9URU1QTEFURV8gVDI1LCBHVEVTVF9URU1QTEFURV8gVDI2LCBHVEVT
VF9URU1QTEFURV8gVDI3LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMjgsIEdURVNUX1RFTVBMQVRF
XyBUMjksIEdURVNUX1RFTVBMQVRFXyBUMzAsCisgICAgR1RFU1RfVEVNUExBVEVfIFQzMSwgR1RF
U1RfVEVNUExBVEVfIFQzMiwgR1RFU1RfVEVNUExBVEVfIFQzMywKKyAgICBHVEVTVF9URU1QTEFU
RV8gVDM0LCBHVEVTVF9URU1QTEFURV8gVDM1LCBHVEVTVF9URU1QTEFURV8gVDM2LAorICAgIEdU
RVNUX1RFTVBMQVRFXyBUMzc+CitzdHJ1Y3QgVGVtcGxhdGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwg
VDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAorICAgIFQxNSwgVDE2LCBU
MTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4
LCBUMjksCisgICAgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIE5vbmVU
LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKKyAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQ+IHsKKyAgdHlwZWRlZiBUZW1wbGF0ZXMz
NzxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMs
CisgICAgICBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMs
IFQyNCwgVDI1LCBUMjYsIFQyNywKKyAgICAgIFQyOCwgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMs
IFQzNCwgVDM1LCBUMzYsIFQzNz4gdHlwZTsKK307Cit0ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVf
IFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKKyAgICBHVEVTVF9U
RU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAorICAg
IEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8g
VDksCisgICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1Rf
VEVNUExBVEVfIFQxMiwKKyAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8g
VDE0LCBHVEVTVF9URU1QTEFURV8gVDE1LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTYsIEdURVNU
X1RFTVBMQVRFXyBUMTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCisgICAgR1RFU1RfVEVNUExBVEVf
IFQxOSwgR1RFU1RfVEVNUExBVEVfIFQyMCwgR1RFU1RfVEVNUExBVEVfIFQyMSwKKyAgICBHVEVT
VF9URU1QTEFURV8gVDIyLCBHVEVTVF9URU1QTEFURV8gVDIzLCBHVEVTVF9URU1QTEFURV8gVDI0
LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMjUsIEdURVNUX1RFTVBMQVRFXyBUMjYsIEdURVNUX1RF
TVBMQVRFXyBUMjcsCisgICAgR1RFU1RfVEVNUExBVEVfIFQyOCwgR1RFU1RfVEVNUExBVEVfIFQy
OSwgR1RFU1RfVEVNUExBVEVfIFQzMCwKKyAgICBHVEVTVF9URU1QTEFURV8gVDMxLCBHVEVTVF9U
RU1QTEFURV8gVDMyLCBHVEVTVF9URU1QTEFURV8gVDMzLAorICAgIEdURVNUX1RFTVBMQVRFXyBU
MzQsIEdURVNUX1RFTVBMQVRFXyBUMzUsIEdURVNUX1RFTVBMQVRFXyBUMzYsCisgICAgR1RFU1Rf
VEVNUExBVEVfIFQzNywgR1RFU1RfVEVNUExBVEVfIFQzOD4KK3N0cnVjdCBUZW1wbGF0ZXM8VDEs
IFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQs
CisgICAgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBU
MjUsIFQyNiwgVDI3LCBUMjgsIFQyOSwKKyAgICBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1
LCBUMzYsIFQzNywgVDM4LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKKyAgICBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQ+IHsKKyAgdHlw
ZWRlZiBUZW1wbGF0ZXMzODxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAs
IFQxMSwgVDEyLCBUMTMsCisgICAgICBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAs
IFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywKKyAgICAgIFQyOCwgVDI5LCBUMzAs
IFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4PiB0eXBlOworfTsKK3RlbXBs
YXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExB
VEVfIFQzLAorICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVT
VF9URU1QTEFURV8gVDYsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8g
VDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9U
RU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAorICAgIEdURVNUX1RFTVBMQVRFXyBU
MTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCisgICAgR1RFU1Rf
VEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExBVEVfIFQxOCwK
KyAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8gVDIwLCBHVEVTVF9URU1Q
TEFURV8gVDIxLAorICAgIEdURVNUX1RFTVBMQVRFXyBUMjIsIEdURVNUX1RFTVBMQVRFXyBUMjMs
IEdURVNUX1RFTVBMQVRFXyBUMjQsCisgICAgR1RFU1RfVEVNUExBVEVfIFQyNSwgR1RFU1RfVEVN
UExBVEVfIFQyNiwgR1RFU1RfVEVNUExBVEVfIFQyNywKKyAgICBHVEVTVF9URU1QTEFURV8gVDI4
LCBHVEVTVF9URU1QTEFURV8gVDI5LCBHVEVTVF9URU1QTEFURV8gVDMwLAorICAgIEdURVNUX1RF
TVBMQVRFXyBUMzEsIEdURVNUX1RFTVBMQVRFXyBUMzIsIEdURVNUX1RFTVBMQVRFXyBUMzMsCisg
ICAgR1RFU1RfVEVNUExBVEVfIFQzNCwgR1RFU1RfVEVNUExBVEVfIFQzNSwgR1RFU1RfVEVNUExB
VEVfIFQzNiwKKyAgICBHVEVTVF9URU1QTEFURV8gVDM3LCBHVEVTVF9URU1QTEFURV8gVDM4LCBH
VEVTVF9URU1QTEFURV8gVDM5Pgorc3RydWN0IFRlbXBsYXRlczxUMSwgVDIsIFQzLCBUNCwgVDUs
IFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKKyAgICBUMTUsIFQxNiwg
VDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQy
OCwgVDI5LAorICAgIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgs
IFQzOSwgTm9uZVQsIE5vbmVULCBOb25lVCwKKyAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQ+IHsKKyAgdHlwZWRlZiBUZW1wbGF0ZXMzOTxU
MSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsCisg
ICAgICBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQy
NCwgVDI1LCBUMjYsIFQyNywKKyAgICAgIFQyOCwgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQz
NCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzk+IHR5cGU7Cit9OwordGVtcGxhdGUgPEdURVNUX1RF
TVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCisgICAg
R1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBU
NiwKKyAgICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVN
UExBVEVfIFQ5LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEs
IEdURVNUX1RFTVBMQVRFXyBUMTIsCisgICAgR1RFU1RfVEVNUExBVEVfIFQxMywgR1RFU1RfVEVN
UExBVEVfIFQxNCwgR1RFU1RfVEVNUExBVEVfIFQxNSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDE2
LCBHVEVTVF9URU1QTEFURV8gVDE3LCBHVEVTVF9URU1QTEFURV8gVDE4LAorICAgIEdURVNUX1RF
TVBMQVRFXyBUMTksIEdURVNUX1RFTVBMQVRFXyBUMjAsIEdURVNUX1RFTVBMQVRFXyBUMjEsCisg
ICAgR1RFU1RfVEVNUExBVEVfIFQyMiwgR1RFU1RfVEVNUExBVEVfIFQyMywgR1RFU1RfVEVNUExB
VEVfIFQyNCwKKyAgICBHVEVTVF9URU1QTEFURV8gVDI1LCBHVEVTVF9URU1QTEFURV8gVDI2LCBH
VEVTVF9URU1QTEFURV8gVDI3LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMjgsIEdURVNUX1RFTVBM
QVRFXyBUMjksIEdURVNUX1RFTVBMQVRFXyBUMzAsCisgICAgR1RFU1RfVEVNUExBVEVfIFQzMSwg
R1RFU1RfVEVNUExBVEVfIFQzMiwgR1RFU1RfVEVNUExBVEVfIFQzMywKKyAgICBHVEVTVF9URU1Q
TEFURV8gVDM0LCBHVEVTVF9URU1QTEFURV8gVDM1LCBHVEVTVF9URU1QTEFURV8gVDM2LAorICAg
IEdURVNUX1RFTVBMQVRFXyBUMzcsIEdURVNUX1RFTVBMQVRFXyBUMzgsIEdURVNUX1RFTVBMQVRF
XyBUMzksCisgICAgR1RFU1RfVEVNUExBVEVfIFQ0MD4KK3N0cnVjdCBUZW1wbGF0ZXM8VDEsIFQy
LCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsCisg
ICAgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUs
IFQyNiwgVDI3LCBUMjgsIFQyOSwKKyAgICBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBU
MzYsIFQzNywgVDM4LCBUMzksIFQ0MCwgTm9uZVQsIE5vbmVULCBOb25lVCwKKyAgICBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVD4geworICB0eXBlZGVmIFRl
bXBsYXRlczQwPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBU
MTIsIFQxMywKKyAgICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBU
MjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LAorICAgICAgVDI4LCBUMjksIFQzMCwgVDMxLCBU
MzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwPiB0eXBlOworfTsKK3Rl
bXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVN
UExBVEVfIFQzLAorICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBH
VEVTVF9URU1QTEFURV8gVDYsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFU
RV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVT
VF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAorICAgIEdURVNUX1RFTVBMQVRF
XyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCisgICAgR1RF
U1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExBVEVfIFQx
OCwKKyAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8gVDIwLCBHVEVTVF9U
RU1QTEFURV8gVDIxLAorICAgIEdURVNUX1RFTVBMQVRFXyBUMjIsIEdURVNUX1RFTVBMQVRFXyBU
MjMsIEdURVNUX1RFTVBMQVRFXyBUMjQsCisgICAgR1RFU1RfVEVNUExBVEVfIFQyNSwgR1RFU1Rf
VEVNUExBVEVfIFQyNiwgR1RFU1RfVEVNUExBVEVfIFQyNywKKyAgICBHVEVTVF9URU1QTEFURV8g
VDI4LCBHVEVTVF9URU1QTEFURV8gVDI5LCBHVEVTVF9URU1QTEFURV8gVDMwLAorICAgIEdURVNU
X1RFTVBMQVRFXyBUMzEsIEdURVNUX1RFTVBMQVRFXyBUMzIsIEdURVNUX1RFTVBMQVRFXyBUMzMs
CisgICAgR1RFU1RfVEVNUExBVEVfIFQzNCwgR1RFU1RfVEVNUExBVEVfIFQzNSwgR1RFU1RfVEVN
UExBVEVfIFQzNiwKKyAgICBHVEVTVF9URU1QTEFURV8gVDM3LCBHVEVTVF9URU1QTEFURV8gVDM4
LCBHVEVTVF9URU1QTEFURV8gVDM5LAorICAgIEdURVNUX1RFTVBMQVRFXyBUNDAsIEdURVNUX1RF
TVBMQVRFXyBUNDE+CitzdHJ1Y3QgVGVtcGxhdGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3
LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAorICAgIFQxNSwgVDE2LCBUMTcsIFQx
OCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LCBUMjks
CisgICAgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBU
NDAsIFQ0MSwgTm9uZVQsIE5vbmVULAorICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVUPiB7CisgIHR5cGVkZWYgVGVtcGxhdGVzNDE8VDEsIFQyLCBUMywg
VDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAorICAgICAgVDE0LCBU
MTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2
LCBUMjcsCisgICAgICBUMjgsIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2
LCBUMzcsIFQzOCwgVDM5LCBUNDAsCisgICAgICBUNDE+IHR5cGU7Cit9OwordGVtcGxhdGUgPEdU
RVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMs
CisgICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBM
QVRFXyBUNiwKKyAgICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RF
U1RfVEVNUExBVEVfIFQ5LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRF
XyBUMTEsIEdURVNUX1RFTVBMQVRFXyBUMTIsCisgICAgR1RFU1RfVEVNUExBVEVfIFQxMywgR1RF
U1RfVEVNUExBVEVfIFQxNCwgR1RFU1RfVEVNUExBVEVfIFQxNSwKKyAgICBHVEVTVF9URU1QTEFU
RV8gVDE2LCBHVEVTVF9URU1QTEFURV8gVDE3LCBHVEVTVF9URU1QTEFURV8gVDE4LAorICAgIEdU
RVNUX1RFTVBMQVRFXyBUMTksIEdURVNUX1RFTVBMQVRFXyBUMjAsIEdURVNUX1RFTVBMQVRFXyBU
MjEsCisgICAgR1RFU1RfVEVNUExBVEVfIFQyMiwgR1RFU1RfVEVNUExBVEVfIFQyMywgR1RFU1Rf
VEVNUExBVEVfIFQyNCwKKyAgICBHVEVTVF9URU1QTEFURV8gVDI1LCBHVEVTVF9URU1QTEFURV8g
VDI2LCBHVEVTVF9URU1QTEFURV8gVDI3LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMjgsIEdURVNU
X1RFTVBMQVRFXyBUMjksIEdURVNUX1RFTVBMQVRFXyBUMzAsCisgICAgR1RFU1RfVEVNUExBVEVf
IFQzMSwgR1RFU1RfVEVNUExBVEVfIFQzMiwgR1RFU1RfVEVNUExBVEVfIFQzMywKKyAgICBHVEVT
VF9URU1QTEFURV8gVDM0LCBHVEVTVF9URU1QTEFURV8gVDM1LCBHVEVTVF9URU1QTEFURV8gVDM2
LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMzcsIEdURVNUX1RFTVBMQVRFXyBUMzgsIEdURVNUX1RF
TVBMQVRFXyBUMzksCisgICAgR1RFU1RfVEVNUExBVEVfIFQ0MCwgR1RFU1RfVEVNUExBVEVfIFQ0
MSwgR1RFU1RfVEVNUExBVEVfIFQ0Mj4KK3N0cnVjdCBUZW1wbGF0ZXM8VDEsIFQyLCBUMywgVDQs
IFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsCisgICAgVDE1LCBU
MTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3
LCBUMjgsIFQyOSwKKyAgICBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywg
VDM4LCBUMzksIFQ0MCwgVDQxLCBUNDIsIE5vbmVULAorICAgIE5vbmVULCBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVUPiB7CisgIHR5cGVkZWYgVGVtcGxhdGVzNDI8VDEs
IFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAorICAg
ICAgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQs
IFQyNSwgVDI2LCBUMjcsCisgICAgICBUMjgsIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQs
IFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsIFQ0MSwKKyAgICAgIFQ0Mj4gdHlwZTsKK307
Cit0ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNU
X1RFTVBMQVRFXyBUMywKKyAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBU
NSwgR1RFU1RfVEVNUExBVEVfIFQ2LAorICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVN
UExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCisgICAgR1RFU1RfVEVNUExBVEVfIFQxMCwg
R1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKKyAgICBHVEVTVF9URU1Q
TEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8gVDE1LAorICAg
IEdURVNUX1RFTVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRFXyBUMTcsIEdURVNUX1RFTVBMQVRF
XyBUMTgsCisgICAgR1RFU1RfVEVNUExBVEVfIFQxOSwgR1RFU1RfVEVNUExBVEVfIFQyMCwgR1RF
U1RfVEVNUExBVEVfIFQyMSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDIyLCBHVEVTVF9URU1QTEFU
RV8gVDIzLCBHVEVTVF9URU1QTEFURV8gVDI0LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMjUsIEdU
RVNUX1RFTVBMQVRFXyBUMjYsIEdURVNUX1RFTVBMQVRFXyBUMjcsCisgICAgR1RFU1RfVEVNUExB
VEVfIFQyOCwgR1RFU1RfVEVNUExBVEVfIFQyOSwgR1RFU1RfVEVNUExBVEVfIFQzMCwKKyAgICBH
VEVTVF9URU1QTEFURV8gVDMxLCBHVEVTVF9URU1QTEFURV8gVDMyLCBHVEVTVF9URU1QTEFURV8g
VDMzLAorICAgIEdURVNUX1RFTVBMQVRFXyBUMzQsIEdURVNUX1RFTVBMQVRFXyBUMzUsIEdURVNU
X1RFTVBMQVRFXyBUMzYsCisgICAgR1RFU1RfVEVNUExBVEVfIFQzNywgR1RFU1RfVEVNUExBVEVf
IFQzOCwgR1RFU1RfVEVNUExBVEVfIFQzOSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDQwLCBHVEVT
VF9URU1QTEFURV8gVDQxLCBHVEVTVF9URU1QTEFURV8gVDQyLAorICAgIEdURVNUX1RFTVBMQVRF
XyBUNDM+CitzdHJ1Y3QgVGVtcGxhdGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwg
VDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAorICAgIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5
LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LCBUMjksCisgICAg
VDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsIFQ0
MSwgVDQyLCBUNDMsCisgICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQ+IHsKKyAgdHlwZWRlZiBUZW1wbGF0ZXM0MzxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2
LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsCisgICAgICBUMTQsIFQxNSwgVDE2LCBU
MTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywKKyAg
ICAgIFQyOCwgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4
LCBUMzksIFQ0MCwgVDQxLAorICAgICAgVDQyLCBUNDM+IHR5cGU7Cit9OwordGVtcGxhdGUgPEdU
RVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMs
CisgICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBM
QVRFXyBUNiwKKyAgICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RF
U1RfVEVNUExBVEVfIFQ5LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRF
XyBUMTEsIEdURVNUX1RFTVBMQVRFXyBUMTIsCisgICAgR1RFU1RfVEVNUExBVEVfIFQxMywgR1RF
U1RfVEVNUExBVEVfIFQxNCwgR1RFU1RfVEVNUExBVEVfIFQxNSwKKyAgICBHVEVTVF9URU1QTEFU
RV8gVDE2LCBHVEVTVF9URU1QTEFURV8gVDE3LCBHVEVTVF9URU1QTEFURV8gVDE4LAorICAgIEdU
RVNUX1RFTVBMQVRFXyBUMTksIEdURVNUX1RFTVBMQVRFXyBUMjAsIEdURVNUX1RFTVBMQVRFXyBU
MjEsCisgICAgR1RFU1RfVEVNUExBVEVfIFQyMiwgR1RFU1RfVEVNUExBVEVfIFQyMywgR1RFU1Rf
VEVNUExBVEVfIFQyNCwKKyAgICBHVEVTVF9URU1QTEFURV8gVDI1LCBHVEVTVF9URU1QTEFURV8g
VDI2LCBHVEVTVF9URU1QTEFURV8gVDI3LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMjgsIEdURVNU
X1RFTVBMQVRFXyBUMjksIEdURVNUX1RFTVBMQVRFXyBUMzAsCisgICAgR1RFU1RfVEVNUExBVEVf
IFQzMSwgR1RFU1RfVEVNUExBVEVfIFQzMiwgR1RFU1RfVEVNUExBVEVfIFQzMywKKyAgICBHVEVT
VF9URU1QTEFURV8gVDM0LCBHVEVTVF9URU1QTEFURV8gVDM1LCBHVEVTVF9URU1QTEFURV8gVDM2
LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMzcsIEdURVNUX1RFTVBMQVRFXyBUMzgsIEdURVNUX1RF
TVBMQVRFXyBUMzksCisgICAgR1RFU1RfVEVNUExBVEVfIFQ0MCwgR1RFU1RfVEVNUExBVEVfIFQ0
MSwgR1RFU1RfVEVNUExBVEVfIFQ0MiwKKyAgICBHVEVTVF9URU1QTEFURV8gVDQzLCBHVEVTVF9U
RU1QTEFURV8gVDQ0Pgorc3RydWN0IFRlbXBsYXRlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBU
NywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKKyAgICBUMTUsIFQxNiwgVDE3LCBU
MTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5
LAorICAgIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwg
VDQwLCBUNDEsIFQ0MiwgVDQzLCBUNDQsCisgICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVD4geworICB0eXBlZGVmIFRlbXBsYXRlczQ0PFQxLCBUMiwgVDMsIFQ0LCBU
NSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKKyAgICAgIFQxNCwgVDE1LCBU
MTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3
LAorICAgICAgVDI4LCBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3
LCBUMzgsIFQzOSwgVDQwLCBUNDEsCisgICAgICBUNDIsIFQ0MywgVDQ0PiB0eXBlOworfTsKK3Rl
bXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVN
UExBVEVfIFQzLAorICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBH
VEVTVF9URU1QTEFURV8gVDYsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFU
RV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVT
VF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAorICAgIEdURVNUX1RFTVBMQVRF
XyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCisgICAgR1RF
U1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExBVEVfIFQx
OCwKKyAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8gVDIwLCBHVEVTVF9U
RU1QTEFURV8gVDIxLAorICAgIEdURVNUX1RFTVBMQVRFXyBUMjIsIEdURVNUX1RFTVBMQVRFXyBU
MjMsIEdURVNUX1RFTVBMQVRFXyBUMjQsCisgICAgR1RFU1RfVEVNUExBVEVfIFQyNSwgR1RFU1Rf
VEVNUExBVEVfIFQyNiwgR1RFU1RfVEVNUExBVEVfIFQyNywKKyAgICBHVEVTVF9URU1QTEFURV8g
VDI4LCBHVEVTVF9URU1QTEFURV8gVDI5LCBHVEVTVF9URU1QTEFURV8gVDMwLAorICAgIEdURVNU
X1RFTVBMQVRFXyBUMzEsIEdURVNUX1RFTVBMQVRFXyBUMzIsIEdURVNUX1RFTVBMQVRFXyBUMzMs
CisgICAgR1RFU1RfVEVNUExBVEVfIFQzNCwgR1RFU1RfVEVNUExBVEVfIFQzNSwgR1RFU1RfVEVN
UExBVEVfIFQzNiwKKyAgICBHVEVTVF9URU1QTEFURV8gVDM3LCBHVEVTVF9URU1QTEFURV8gVDM4
LCBHVEVTVF9URU1QTEFURV8gVDM5LAorICAgIEdURVNUX1RFTVBMQVRFXyBUNDAsIEdURVNUX1RF
TVBMQVRFXyBUNDEsIEdURVNUX1RFTVBMQVRFXyBUNDIsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ0
MywgR1RFU1RfVEVNUExBVEVfIFQ0NCwgR1RFU1RfVEVNUExBVEVfIFQ0NT4KK3N0cnVjdCBUZW1w
bGF0ZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwg
VDEzLCBUMTQsCisgICAgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQy
MywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsIFQyOSwKKyAgICBUMzAsIFQzMSwgVDMyLCBUMzMs
IFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwgVDQxLCBUNDIsIFQ0MywgVDQ0LAor
ICAgIFQ0NSwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVUPiB7CisgIHR5cGVkZWYg
VGVtcGxhdGVzNDU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEs
IFQxMiwgVDEzLAorICAgICAgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEs
IFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsCisgICAgICBUMjgsIFQyOSwgVDMwLCBUMzEs
IFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsIFQ0MSwKKyAgICAg
IFQ0MiwgVDQzLCBUNDQsIFQ0NT4gdHlwZTsKK307Cit0ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVf
IFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKKyAgICBHVEVTVF9U
RU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAorICAg
IEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8g
VDksCisgICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1Rf
VEVNUExBVEVfIFQxMiwKKyAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8g
VDE0LCBHVEVTVF9URU1QTEFURV8gVDE1LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTYsIEdURVNU
X1RFTVBMQVRFXyBUMTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCisgICAgR1RFU1RfVEVNUExBVEVf
IFQxOSwgR1RFU1RfVEVNUExBVEVfIFQyMCwgR1RFU1RfVEVNUExBVEVfIFQyMSwKKyAgICBHVEVT
VF9URU1QTEFURV8gVDIyLCBHVEVTVF9URU1QTEFURV8gVDIzLCBHVEVTVF9URU1QTEFURV8gVDI0
LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMjUsIEdURVNUX1RFTVBMQVRFXyBUMjYsIEdURVNUX1RF
TVBMQVRFXyBUMjcsCisgICAgR1RFU1RfVEVNUExBVEVfIFQyOCwgR1RFU1RfVEVNUExBVEVfIFQy
OSwgR1RFU1RfVEVNUExBVEVfIFQzMCwKKyAgICBHVEVTVF9URU1QTEFURV8gVDMxLCBHVEVTVF9U
RU1QTEFURV8gVDMyLCBHVEVTVF9URU1QTEFURV8gVDMzLAorICAgIEdURVNUX1RFTVBMQVRFXyBU
MzQsIEdURVNUX1RFTVBMQVRFXyBUMzUsIEdURVNUX1RFTVBMQVRFXyBUMzYsCisgICAgR1RFU1Rf
VEVNUExBVEVfIFQzNywgR1RFU1RfVEVNUExBVEVfIFQzOCwgR1RFU1RfVEVNUExBVEVfIFQzOSwK
KyAgICBHVEVTVF9URU1QTEFURV8gVDQwLCBHVEVTVF9URU1QTEFURV8gVDQxLCBHVEVTVF9URU1Q
TEFURV8gVDQyLAorICAgIEdURVNUX1RFTVBMQVRFXyBUNDMsIEdURVNUX1RFTVBMQVRFXyBUNDQs
IEdURVNUX1RFTVBMQVRFXyBUNDUsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ0Nj4KK3N0cnVjdCBU
ZW1wbGF0ZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQx
MiwgVDEzLCBUMTQsCisgICAgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIs
IFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsIFQyOSwKKyAgICBUMzAsIFQzMSwgVDMyLCBU
MzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwgVDQxLCBUNDIsIFQ0MywgVDQ0
LAorICAgIFQ0NSwgVDQ2LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVD4geworICB0eXBlZGVm
IFRlbXBsYXRlczQ2PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDEx
LCBUMTIsIFQxMywKKyAgICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIx
LCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LAorICAgICAgVDI4LCBUMjksIFQzMCwgVDMx
LCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLCBUNDEsCisgICAg
ICBUNDIsIFQ0MywgVDQ0LCBUNDUsIFQ0Nj4gdHlwZTsKK307Cit0ZW1wbGF0ZSA8R1RFU1RfVEVN
UExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKKyAgICBH
VEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2
LAorICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1Q
TEFURV8gVDksCisgICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwg
R1RFU1RfVEVNUExBVEVfIFQxMiwKKyAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1Q
TEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8gVDE1LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTYs
IEdURVNUX1RFTVBMQVRFXyBUMTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCisgICAgR1RFU1RfVEVN
UExBVEVfIFQxOSwgR1RFU1RfVEVNUExBVEVfIFQyMCwgR1RFU1RfVEVNUExBVEVfIFQyMSwKKyAg
ICBHVEVTVF9URU1QTEFURV8gVDIyLCBHVEVTVF9URU1QTEFURV8gVDIzLCBHVEVTVF9URU1QTEFU
RV8gVDI0LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMjUsIEdURVNUX1RFTVBMQVRFXyBUMjYsIEdU
RVNUX1RFTVBMQVRFXyBUMjcsCisgICAgR1RFU1RfVEVNUExBVEVfIFQyOCwgR1RFU1RfVEVNUExB
VEVfIFQyOSwgR1RFU1RfVEVNUExBVEVfIFQzMCwKKyAgICBHVEVTVF9URU1QTEFURV8gVDMxLCBH
VEVTVF9URU1QTEFURV8gVDMyLCBHVEVTVF9URU1QTEFURV8gVDMzLAorICAgIEdURVNUX1RFTVBM
QVRFXyBUMzQsIEdURVNUX1RFTVBMQVRFXyBUMzUsIEdURVNUX1RFTVBMQVRFXyBUMzYsCisgICAg
R1RFU1RfVEVNUExBVEVfIFQzNywgR1RFU1RfVEVNUExBVEVfIFQzOCwgR1RFU1RfVEVNUExBVEVf
IFQzOSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDQwLCBHVEVTVF9URU1QTEFURV8gVDQxLCBHVEVT
VF9URU1QTEFURV8gVDQyLAorICAgIEdURVNUX1RFTVBMQVRFXyBUNDMsIEdURVNUX1RFTVBMQVRF
XyBUNDQsIEdURVNUX1RFTVBMQVRFXyBUNDUsCisgICAgR1RFU1RfVEVNUExBVEVfIFQ0NiwgR1RF
U1RfVEVNUExBVEVfIFQ0Nz4KK3N0cnVjdCBUZW1wbGF0ZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBU
NiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsCisgICAgVDE1LCBUMTYsIFQx
NywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgs
IFQyOSwKKyAgICBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBU
MzksIFQ0MCwgVDQxLCBUNDIsIFQ0MywgVDQ0LAorICAgIFQ0NSwgVDQ2LCBUNDcsIE5vbmVULCBO
b25lVCwgTm9uZVQ+IHsKKyAgdHlwZWRlZiBUZW1wbGF0ZXM0NzxUMSwgVDIsIFQzLCBUNCwgVDUs
IFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsCisgICAgICBUMTQsIFQxNSwgVDE2
LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywK
KyAgICAgIFQyOCwgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywg
VDM4LCBUMzksIFQ0MCwgVDQxLAorICAgICAgVDQyLCBUNDMsIFQ0NCwgVDQ1LCBUNDYsIFQ0Nz4g
dHlwZTsKK307Cit0ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8g
VDIsIEdURVNUX1RFTVBMQVRFXyBUMywKKyAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RF
TVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAorICAgIEdURVNUX1RFTVBMQVRFXyBUNywg
R1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCisgICAgR1RFU1RfVEVNUExB
VEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKKyAgICBH
VEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8g
VDE1LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRFXyBUMTcsIEdURVNU
X1RFTVBMQVRFXyBUMTgsCisgICAgR1RFU1RfVEVNUExBVEVfIFQxOSwgR1RFU1RfVEVNUExBVEVf
IFQyMCwgR1RFU1RfVEVNUExBVEVfIFQyMSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDIyLCBHVEVT
VF9URU1QTEFURV8gVDIzLCBHVEVTVF9URU1QTEFURV8gVDI0LAorICAgIEdURVNUX1RFTVBMQVRF
XyBUMjUsIEdURVNUX1RFTVBMQVRFXyBUMjYsIEdURVNUX1RFTVBMQVRFXyBUMjcsCisgICAgR1RF
U1RfVEVNUExBVEVfIFQyOCwgR1RFU1RfVEVNUExBVEVfIFQyOSwgR1RFU1RfVEVNUExBVEVfIFQz
MCwKKyAgICBHVEVTVF9URU1QTEFURV8gVDMxLCBHVEVTVF9URU1QTEFURV8gVDMyLCBHVEVTVF9U
RU1QTEFURV8gVDMzLAorICAgIEdURVNUX1RFTVBMQVRFXyBUMzQsIEdURVNUX1RFTVBMQVRFXyBU
MzUsIEdURVNUX1RFTVBMQVRFXyBUMzYsCisgICAgR1RFU1RfVEVNUExBVEVfIFQzNywgR1RFU1Rf
VEVNUExBVEVfIFQzOCwgR1RFU1RfVEVNUExBVEVfIFQzOSwKKyAgICBHVEVTVF9URU1QTEFURV8g
VDQwLCBHVEVTVF9URU1QTEFURV8gVDQxLCBHVEVTVF9URU1QTEFURV8gVDQyLAorICAgIEdURVNU
X1RFTVBMQVRFXyBUNDMsIEdURVNUX1RFTVBMQVRFXyBUNDQsIEdURVNUX1RFTVBMQVRFXyBUNDUs
CisgICAgR1RFU1RfVEVNUExBVEVfIFQ0NiwgR1RFU1RfVEVNUExBVEVfIFQ0NywgR1RFU1RfVEVN
UExBVEVfIFQ0OD4KK3N0cnVjdCBUZW1wbGF0ZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcs
IFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsCisgICAgVDE1LCBUMTYsIFQxNywgVDE4
LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsIFQyOSwK
KyAgICBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0
MCwgVDQxLCBUNDIsIFQ0MywgVDQ0LAorICAgIFQ0NSwgVDQ2LCBUNDcsIFQ0OCwgTm9uZVQsIE5v
bmVUPiB7CisgIHR5cGVkZWYgVGVtcGxhdGVzNDg8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcs
IFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAorICAgICAgVDE0LCBUMTUsIFQxNiwgVDE3LCBU
MTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsCisgICAgICBU
MjgsIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5
LCBUNDAsIFQ0MSwKKyAgICAgIFQ0MiwgVDQzLCBUNDQsIFQ0NSwgVDQ2LCBUNDcsIFQ0OD4gdHlw
ZTsKK307Cit0ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIs
IEdURVNUX1RFTVBMQVRFXyBUMywKKyAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBM
QVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAorICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RF
U1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCisgICAgR1RFU1RfVEVNUExBVEVf
IFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKKyAgICBHVEVT
VF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8gVDE1
LAorICAgIEdURVNUX1RFTVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRFXyBUMTcsIEdURVNUX1RF
TVBMQVRFXyBUMTgsCisgICAgR1RFU1RfVEVNUExBVEVfIFQxOSwgR1RFU1RfVEVNUExBVEVfIFQy
MCwgR1RFU1RfVEVNUExBVEVfIFQyMSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDIyLCBHVEVTVF9U
RU1QTEFURV8gVDIzLCBHVEVTVF9URU1QTEFURV8gVDI0LAorICAgIEdURVNUX1RFTVBMQVRFXyBU
MjUsIEdURVNUX1RFTVBMQVRFXyBUMjYsIEdURVNUX1RFTVBMQVRFXyBUMjcsCisgICAgR1RFU1Rf
VEVNUExBVEVfIFQyOCwgR1RFU1RfVEVNUExBVEVfIFQyOSwgR1RFU1RfVEVNUExBVEVfIFQzMCwK
KyAgICBHVEVTVF9URU1QTEFURV8gVDMxLCBHVEVTVF9URU1QTEFURV8gVDMyLCBHVEVTVF9URU1Q
TEFURV8gVDMzLAorICAgIEdURVNUX1RFTVBMQVRFXyBUMzQsIEdURVNUX1RFTVBMQVRFXyBUMzUs
IEdURVNUX1RFTVBMQVRFXyBUMzYsCisgICAgR1RFU1RfVEVNUExBVEVfIFQzNywgR1RFU1RfVEVN
UExBVEVfIFQzOCwgR1RFU1RfVEVNUExBVEVfIFQzOSwKKyAgICBHVEVTVF9URU1QTEFURV8gVDQw
LCBHVEVTVF9URU1QTEFURV8gVDQxLCBHVEVTVF9URU1QTEFURV8gVDQyLAorICAgIEdURVNUX1RF
TVBMQVRFXyBUNDMsIEdURVNUX1RFTVBMQVRFXyBUNDQsIEdURVNUX1RFTVBMQVRFXyBUNDUsCisg
ICAgR1RFU1RfVEVNUExBVEVfIFQ0NiwgR1RFU1RfVEVNUExBVEVfIFQ0NywgR1RFU1RfVEVNUExB
VEVfIFQ0OCwKKyAgICBHVEVTVF9URU1QTEFURV8gVDQ5Pgorc3RydWN0IFRlbXBsYXRlczxUMSwg
VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwK
KyAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQy
NSwgVDI2LCBUMjcsIFQyOCwgVDI5LAorICAgIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUs
IFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLCBUNDEsIFQ0MiwgVDQzLCBUNDQsCisgICAgVDQ1LCBU
NDYsIFQ0NywgVDQ4LCBUNDksIE5vbmVUPiB7CisgIHR5cGVkZWYgVGVtcGxhdGVzNDk8VDEsIFQy
LCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAorICAgICAg
VDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQy
NSwgVDI2LCBUMjcsCisgICAgICBUMjgsIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQz
NSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsIFQ0MSwKKyAgICAgIFQ0MiwgVDQzLCBUNDQsIFQ0
NSwgVDQ2LCBUNDcsIFQ0OCwgVDQ5PiB0eXBlOworfTsKKworLy8gVGhlIFR5cGVMaXN0IHRlbXBs
YXRlIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHVzZSBlaXRoZXIgYSBzaW5nbGUgdHlwZQorLy8gb3Ig
YSBUeXBlczwuLi4+IGxpc3QgaW4gVFlQRURfVEVTVF9DQVNFKCkgYW5kCisvLyBJTlNUQU5USUFU
RV9UWVBFRF9URVNUX0NBU0VfUCgpLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBU
eXBlTGlzdCB7CisgIHR5cGVkZWYgVHlwZXMxPFQ+IHR5cGU7Cit9OworCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1l
IFQ1LAorICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1l
IFQ5LCB0eXBlbmFtZSBUMTAsCisgICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVu
YW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCisgICAgdHlwZW5hbWUgVDE2LCB0
eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCisg
ICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0
LCB0eXBlbmFtZSBUMjUsCisgICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1l
IFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCisgICAgdHlwZW5hbWUgVDMxLCB0eXBl
bmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzUsCisgICAg
dHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5LCB0
eXBlbmFtZSBUNDAsCisgICAgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0
MywgdHlwZW5hbWUgVDQ0LCB0eXBlbmFtZSBUNDUsCisgICAgdHlwZW5hbWUgVDQ2LCB0eXBlbmFt
ZSBUNDcsIHR5cGVuYW1lIFQ0OCwgdHlwZW5hbWUgVDQ5LCB0eXBlbmFtZSBUNTA+CitzdHJ1Y3Qg
VHlwZUxpc3Q8VHlwZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBU
MTEsIFQxMiwgVDEzLAorICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIx
LCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsCisgICAgVDI5LCBUMzAsIFQzMSwg
VDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwgVDQxLCBUNDIsIFQ0
MywKKyAgICBUNDQsIFQ0NSwgVDQ2LCBUNDcsIFQ0OCwgVDQ5LCBUNTA+ID4geworICB0eXBlZGVm
IHR5cGVuYW1lIFR5cGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwg
VDExLCBUMTIsCisgICAgICBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwg
VDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwKKyAgICAgIFQyNywgVDI4LCBUMjksIFQzMCwg
VDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLAorICAgICAg
VDQxLCBUNDIsIFQ0MywgVDQ0LCBUNDUsIFQ0NiwgVDQ3LCBUNDgsIFQ0OSwgVDUwPjo6dHlwZSB0
eXBlOworfTsKKworI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVCB8fCBHVEVTVF9IQVNf
VFlQRURfVEVTVF9QCisKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNl
IHRlc3RpbmcKKworI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNU
X1RZUEVfVVRJTF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9pbnRl
cm5hbC9ndGVzdC10eXBlLXV0aWwuaC5wdW1wIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9p
bnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaC5wdW1wCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1MWZkZjAyNWIyYzUz
MTFmYWY5NWU4NmUzMzBmZTkyMWM2MGRhZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVz
dC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR5cGUtdXRpbC5oLnB1bXAKQEAgLTAsMCAr
MSwyOTcgQEAKKyQkIC0qLSBtb2RlOiBjKys7IC0qLQorJHZhciBuID0gNTAgICQkIE1heGltdW0g
bGVuZ3RoIG9mIHR5cGUgbGlzdHMgd2Ugd2FudCB0byBzdXBwb3J0LgorLy8gQ29weXJpZ2h0IDIw
MDggR29vZ2xlIEluYy4KKy8vIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
Ky8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8v
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisv
LyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNv
bSAoWmhhbnlvbmcgV2FuKQorCisvLyBUeXBlIHV0aWxpdGllcyBuZWVkZWQgZm9yIGltcGxlbWVu
dGluZyB0eXBlZCBhbmQgdHlwZS1wYXJhbWV0ZXJpemVkCisvLyB0ZXN0cy4gIFRoaXMgZmlsZSBp
cyBnZW5lcmF0ZWQgYnkgYSBTQ1JJUFQuICBETyBOT1QgRURJVCBCWSBIQU5EIQorLy8KKy8vIEN1
cnJlbnRseSB3ZSBzdXBwb3J0IGF0IG1vc3QgJG4gdHlwZXMgaW4gYSBsaXN0LCBhbmQgYXQgbW9z
dCAkbgorLy8gdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGluIG9uZSB0eXBlLXBhcmFtZXRlcml6
ZWQgdGVzdCBjYXNlLgorLy8gUGxlYXNlIGNvbnRhY3QgZ29vZ2xldGVzdGZyYW1ld29ya0Bnb29n
bGVncm91cHMuY29tIGlmIHlvdSBuZWVkCisvLyBtb3JlLgorCisjaWZuZGVmIEdURVNUX0lOQ0xV
REVfR1RFU1RfSU5URVJOQUxfR1RFU1RfVFlQRV9VVElMX0hfCisjZGVmaW5lIEdURVNUX0lOQ0xV
REVfR1RFU1RfSU5URVJOQUxfR1RFU1RfVFlQRV9VVElMX0hfCisKKyNpbmNsdWRlICJndGVzdC9p
bnRlcm5hbC9ndGVzdC1wb3J0LmgiCisKKy8vICNpZmRlZiBfX0dOVUNfXyBpcyB0b28gZ2VuZXJh
bCBoZXJlLiAgSXQgaXMgcG9zc2libGUgdG8gdXNlIGdjYyB3aXRob3V0IHVzaW5nCisvLyBsaWJz
dGRjKysgKHdoaWNoIGlzIHdoZXJlIGN4eGFiaS5oIGNvbWVzIGZyb20pLgorIyBpZiBHVEVTVF9I
QVNfQ1hYQUJJX0hfCisjICBpbmNsdWRlIDxjeHhhYmkuaD4KKyMgZWxpZiBkZWZpbmVkKF9fSFBf
YUNDKQorIyAgaW5jbHVkZSA8YWN4eF9kZW1hbmdsZS5oPgorIyBlbmRpZiAgLy8gR1RFU1RfSEFT
SF9DWFhBQklfSF8KKworbmFtZXNwYWNlIHRlc3RpbmcgeworbmFtZXNwYWNlIGludGVybmFsIHsK
KworLy8gR2V0VHlwZU5hbWU8VD4oKSByZXR1cm5zIGEgaHVtYW4tcmVhZGFibGUgbmFtZSBvZiB0
eXBlIFQuCisvLyBOQjogVGhpcyBmdW5jdGlvbiBpcyBhbHNvIHVzZWQgaW4gR29vZ2xlIE1vY2ss
IHNvIGRvbid0IG1vdmUgaXQgaW5zaWRlIG9mCisvLyB0aGUgdHlwZWQtdGVzdC1vbmx5IHNlY3Rp
b24gYmVsb3cuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0ZDo6c3RyaW5nIEdldFR5cGVOYW1l
KCkgeworIyBpZiBHVEVTVF9IQVNfUlRUSQorCisgIGNvbnN0IGNoYXIqIGNvbnN0IG5hbWUgPSB0
eXBlaWQoVCkubmFtZSgpOworIyAgaWYgR1RFU1RfSEFTX0NYWEFCSV9IXyB8fCBkZWZpbmVkKF9f
SFBfYUNDKQorICBpbnQgc3RhdHVzID0gMDsKKyAgLy8gZ2NjJ3MgaW1wbGVtZW50YXRpb24gb2Yg
dHlwZWlkKFQpLm5hbWUoKSBtYW5nbGVzIHRoZSB0eXBlIG5hbWUsCisgIC8vIHNvIHdlIGhhdmUg
dG8gZGVtYW5nbGUgaXQuCisjICAgaWYgR1RFU1RfSEFTX0NYWEFCSV9IXworICB1c2luZyBhYmk6
Ol9fY3hhX2RlbWFuZ2xlOworIyAgIGVuZGlmICAvLyBHVEVTVF9IQVNfQ1hYQUJJX0hfCisgIGNo
YXIqIGNvbnN0IHJlYWRhYmxlX25hbWUgPSBfX2N4YV9kZW1hbmdsZShuYW1lLCAwLCAwLCAmc3Rh
dHVzKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgbmFtZV9zdHIoc3RhdHVzID09IDAgPyByZWFkYWJs
ZV9uYW1lIDogbmFtZSk7CisgIGZyZWUocmVhZGFibGVfbmFtZSk7CisgIHJldHVybiBuYW1lX3N0
cjsKKyMgIGVsc2UKKyAgcmV0dXJuIG5hbWU7CisjICBlbmRpZiAgLy8gR1RFU1RfSEFTX0NYWEFC
SV9IXyB8fCBfX0hQX2FDQworCisjIGVsc2UKKworICByZXR1cm4gIjx0eXBlPiI7CisKKyMgZW5k
aWYgIC8vIEdURVNUX0hBU19SVFRJCit9CisKKyNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVCB8fCBH
VEVTVF9IQVNfVFlQRURfVEVTVF9QCisKKy8vIEFzc2VydHlUeXBlRXE8VDEsIFQyPjo6dHlwZSBp
cyBkZWZpbmVkIGlmZiBUMSBhbmQgVDIgYXJlIHRoZSBzYW1lCisvLyB0eXBlLiAgVGhpcyBjYW4g
YmUgdXNlZCBhcyBhIGNvbXBpbGUtdGltZSBhc3NlcnRpb24gdG8gZW5zdXJlIHRoYXQKKy8vIHR3
byB0eXBlcyBhcmUgZXF1YWwuCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+
CitzdHJ1Y3QgQXNzZXJ0VHlwZUVxOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBB
c3NlcnRUeXBlRXE8VCwgVD4geworICB0eXBlZGVmIGJvb2wgdHlwZTsKK307CisKKy8vIEEgdW5p
cXVlIHR5cGUgdXNlZCBhcyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIGFyZ3VtZW50cyBvZiBj
bGFzcworLy8gdGVtcGxhdGUgVHlwZXMuICBUaGlzIGFsbG93cyB1cyB0byBzaW11bGF0ZSB2YXJp
YWRpYyB0ZW1wbGF0ZXMKKy8vIChlLmcuIFR5cGVzPGludD4sIFR5cGU8aW50LCBkb3VibGU+LCBh
bmQgZXRjKSwgd2hpY2ggQysrIGRvZXNuJ3QKKy8vIHN1cHBvcnQgZGlyZWN0bHkuCitzdHJ1Y3Qg
Tm9uZSB7fTsKKworLy8gVGhlIGZvbGxvd2luZyBmYW1pbHkgb2Ygc3RydWN0IGFuZCBzdHJ1Y3Qg
dGVtcGxhdGVzIGFyZSB1c2VkIHRvCisvLyByZXByZXNlbnQgdHlwZSBsaXN0cy4gIEluIHBhcnRp
Y3VsYXIsIFR5cGVzTjxUMSwgVDIsIC4uLiwgVE4+CisvLyByZXByZXNlbnRzIGEgdHlwZSBsaXN0
IHdpdGggTiB0eXBlcyAoVDEsIFQyLCAuLi4sIGFuZCBUTikgaW4gaXQuCisvLyBFeGNlcHQgZm9y
IFR5cGVzMCwgZXZlcnkgc3RydWN0IGluIHRoZSBmYW1pbHkgaGFzIHR3byBtZW1iZXIgdHlwZXM6
CisvLyBIZWFkIGZvciB0aGUgZmlyc3QgdHlwZSBpbiB0aGUgbGlzdCwgYW5kIFRhaWwgZm9yIHRo
ZSByZXN0IG9mIHRoZQorLy8gbGlzdC4KKworLy8gVGhlIGVtcHR5IHR5cGUgbGlzdC4KK3N0cnVj
dCBUeXBlczAge307CisKKy8vIFR5cGUgbGlzdHMgb2YgbGVuZ3RoIDEsIDIsIDMsIGFuZCBzbyBv
bi4KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxPgorc3RydWN0IFR5cGVzMSB7CisgIHR5cGVkZWYg
VDEgSGVhZDsKKyAgdHlwZWRlZiBUeXBlczAgVGFpbDsKK307CisKKyRyYW5nZSBpIDIuLm4KKwor
JGZvciBpIFtbCiskcmFuZ2UgaiAxLi5pCiskcmFuZ2UgayAyLi5pCit0ZW1wbGF0ZSA8JGZvciBq
LCBbW3R5cGVuYW1lIFQkal1dPgorc3RydWN0IFR5cGVzJGkgeworICB0eXBlZGVmIFQxIEhlYWQ7
CisgIHR5cGVkZWYgVHlwZXMkKGktMSk8JGZvciBrLCBbW1Qka11dPiBUYWlsOworfTsKKworCitd
XQorCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKKworLy8gV2UgZG9uJ3Qgd2FudCB0byByZXF1
aXJlIHRoZSB1c2VycyB0byB3cml0ZSBUeXBlc048Li4uPiBkaXJlY3RseSwKKy8vIGFzIHRoYXQg
d291bGQgcmVxdWlyZSB0aGVtIHRvIGNvdW50IHRoZSBsZW5ndGguICBUeXBlczwuLi4+IGlzIG11
Y2gKKy8vIGVhc2llciB0byB3cml0ZSwgYnV0IGdlbmVyYXRlcyBob3JyaWJsZSBtZXNzYWdlcyB3
aGVuIHRoZXJlIGlzIGEKKy8vIGNvbXBpbGVyIGVycm9yLCBhcyBnY2MgaW5zaXN0cyBvbiBwcmlu
dGluZyBvdXQgZWFjaCB0ZW1wbGF0ZQorLy8gYXJndW1lbnQsIGV2ZW4gaWYgaXQgaGFzIHRoZSBk
ZWZhdWx0IHZhbHVlICh0aGlzIG1lYW5zIFR5cGVzPGludD4KKy8vIHdpbGwgYXBwZWFyIGFzIFR5
cGVzPGludCwgTm9uZSwgTm9uZSwgLi4uLCBOb25lPiBpbiB0aGUgY29tcGlsZXIKKy8vIGVycm9y
cykuCisvLworLy8gT3VyIHNvbHV0aW9uIGlzIHRvIGNvbWJpbmUgdGhlIGJlc3QgcGFydCBvZiB0
aGUgdHdvIGFwcHJvYWNoZXM6IGEKKy8vIHVzZXIgd291bGQgd3JpdGUgVHlwZXM8VDEsIC4uLiwg
VE4+LCBhbmQgR29vZ2xlIFRlc3Qgd2lsbCB0cmFuc2xhdGUKKy8vIHRoYXQgdG8gVHlwZXNOPFQx
LCAuLi4sIFROPiBpbnRlcm5hbGx5IHRvIG1ha2UgZXJyb3IgbWVzc2FnZXMKKy8vIHJlYWRhYmxl
LiAgVGhlIHRyYW5zbGF0aW9uIGlzIGRvbmUgYnkgdGhlICd0eXBlJyBtZW1iZXIgb2YgdGhlCisv
LyBUeXBlcyB0ZW1wbGF0ZS4KKworJHJhbmdlIGkgMS4ubgordGVtcGxhdGUgPCRmb3IgaSwgW1t0
eXBlbmFtZSBUJGkgPSBpbnRlcm5hbDo6Tm9uZV1dPgorc3RydWN0IFR5cGVzIHsKKyAgdHlwZWRl
ZiBpbnRlcm5hbDo6VHlwZXMkbjwkZm9yIGksIFtbVCRpXV0+IHR5cGU7Cit9OworCit0ZW1wbGF0
ZSA8Pgorc3RydWN0IFR5cGVzPCRmb3IgaSwgW1tpbnRlcm5hbDo6Tm9uZV1dPiB7CisgIHR5cGVk
ZWYgaW50ZXJuYWw6OlR5cGVzMCB0eXBlOworfTsKKworJHJhbmdlIGkgMS4ubi0xCiskZm9yIGkg
W1sKKyRyYW5nZSBqIDEuLmkKKyRyYW5nZSBrIGkrMS4ubgordGVtcGxhdGUgPCRmb3IgaiwgW1t0
eXBlbmFtZSBUJGpdXT4KK3N0cnVjdCBUeXBlczwkZm9yIGosIFtbVCRqXV0kZm9yIGtbWywgaW50
ZXJuYWw6Ok5vbmVdXT4geworICB0eXBlZGVmIGludGVybmFsOjpUeXBlcyRpPCRmb3IgaiwgW1tU
JGpdXT4gdHlwZTsKK307CisKK11dCisKK25hbWVzcGFjZSBpbnRlcm5hbCB7CisKKyMgZGVmaW5l
IEdURVNUX1RFTVBMQVRFXyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MKKworLy8gVGhlIHRl
bXBsYXRlICJzZWxlY3RvciIgc3RydWN0IFRlbXBsYXRlU2VsPFRtcGw+IGlzIHVzZWQgdG8KKy8v
IHJlcHJlc2VudCBUbXBsLCB3aGljaCBtdXN0IGJlIGEgY2xhc3MgdGVtcGxhdGUgd2l0aCBvbmUg
dHlwZQorLy8gcGFyYW1ldGVyLCBhcyBhIHR5cGUuICBUZW1wbGF0ZVNlbDxUbXBsPjo6QmluZDxU
Pjo6dHlwZSBpcyBkZWZpbmVkCisvLyBhcyB0aGUgdHlwZSBUbXBsPFQ+LiAgVGhpcyBhbGxvd3Mg
dXMgdG8gYWN0dWFsbHkgaW5zdGFudGlhdGUgdGhlCisvLyB0ZW1wbGF0ZSAic2VsZWN0ZWQiIGJ5
IFRlbXBsYXRlU2VsPFRtcGw+LgorLy8KKy8vIFRoaXMgdHJpY2sgaXMgbmVjZXNzYXJ5IGZvciBz
aW11bGF0aW5nIHR5cGVkZWYgZm9yIGNsYXNzIHRlbXBsYXRlcywKKy8vIHdoaWNoIEMrKyBkb2Vz
bid0IHN1cHBvcnQgZGlyZWN0bHkuCit0ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFRtcGw+Citz
dHJ1Y3QgVGVtcGxhdGVTZWwgeworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgc3RydWN0IEJp
bmQgeworICAgIHR5cGVkZWYgVG1wbDxUPiB0eXBlOworICB9OworfTsKKworIyBkZWZpbmUgR1RF
U1RfQklORF8oVG1wbFNlbCwgVCkgXAorICBUbXBsU2VsOjp0ZW1wbGF0ZSBCaW5kPFQ+Ojp0eXBl
CisKKy8vIEEgdW5pcXVlIHN0cnVjdCB0ZW1wbGF0ZSB1c2VkIGFzIHRoZSBkZWZhdWx0IHZhbHVl
IGZvciB0aGUKKy8vIGFyZ3VtZW50cyBvZiBjbGFzcyB0ZW1wbGF0ZSBUZW1wbGF0ZXMuICBUaGlz
IGFsbG93cyB1cyB0byBzaW11bGF0ZQorLy8gdmFyaWFkaWMgdGVtcGxhdGVzIChlLmcuIFRlbXBs
YXRlczxpbnQ+LCBUZW1wbGF0ZXM8aW50LCBkb3VibGU+LAorLy8gYW5kIGV0YyksIHdoaWNoIEMr
KyBkb2Vzbid0IHN1cHBvcnQgZGlyZWN0bHkuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVj
dCBOb25lVCB7fTsKKworLy8gVGhlIGZvbGxvd2luZyBmYW1pbHkgb2Ygc3RydWN0IGFuZCBzdHJ1
Y3QgdGVtcGxhdGVzIGFyZSB1c2VkIHRvCisvLyByZXByZXNlbnQgdGVtcGxhdGUgbGlzdHMuICBJ
biBwYXJ0aWN1bGFyLCBUZW1wbGF0ZXNOPFQxLCBUMiwgLi4uLAorLy8gVE4+IHJlcHJlc2VudHMg
YSBsaXN0IG9mIE4gdGVtcGxhdGVzIChUMSwgVDIsIC4uLiwgYW5kIFROKS4gIEV4Y2VwdAorLy8g
Zm9yIFRlbXBsYXRlczAsIGV2ZXJ5IHN0cnVjdCBpbiB0aGUgZmFtaWx5IGhhcyB0d28gbWVtYmVy
IHR5cGVzOgorLy8gSGVhZCBmb3IgdGhlIHNlbGVjdG9yIG9mIHRoZSBmaXJzdCB0ZW1wbGF0ZSBp
biB0aGUgbGlzdCwgYW5kIFRhaWwKKy8vIGZvciB0aGUgcmVzdCBvZiB0aGUgbGlzdC4KKworLy8g
VGhlIGVtcHR5IHRlbXBsYXRlIGxpc3QuCitzdHJ1Y3QgVGVtcGxhdGVzMCB7fTsKKworLy8gVGVt
cGxhdGUgbGlzdHMgb2YgbGVuZ3RoIDEsIDIsIDMsIGFuZCBzbyBvbi4KKwordGVtcGxhdGUgPEdU
RVNUX1RFTVBMQVRFXyBUMT4KK3N0cnVjdCBUZW1wbGF0ZXMxIHsKKyAgdHlwZWRlZiBUZW1wbGF0
ZVNlbDxUMT4gSGVhZDsKKyAgdHlwZWRlZiBUZW1wbGF0ZXMwIFRhaWw7Cit9OworCiskcmFuZ2Ug
aSAyLi5uCisKKyRmb3IgaSBbWworJHJhbmdlIGogMS4uaQorJHJhbmdlIGsgMi4uaQordGVtcGxh
dGUgPCRmb3IgaiwgW1tHVEVTVF9URU1QTEFURV8gVCRqXV0+CitzdHJ1Y3QgVGVtcGxhdGVzJGkg
eworICB0eXBlZGVmIFRlbXBsYXRlU2VsPFQxPiBIZWFkOworICB0eXBlZGVmIFRlbXBsYXRlcyQo
aS0xKTwkZm9yIGssIFtbVCRrXV0+IFRhaWw7Cit9OworCisKK11dCisKKy8vIFdlIGRvbid0IHdh
bnQgdG8gcmVxdWlyZSB0aGUgdXNlcnMgdG8gd3JpdGUgVGVtcGxhdGVzTjwuLi4+IGRpcmVjdGx5
LAorLy8gYXMgdGhhdCB3b3VsZCByZXF1aXJlIHRoZW0gdG8gY291bnQgdGhlIGxlbmd0aC4gIFRl
bXBsYXRlczwuLi4+IGlzIG11Y2gKKy8vIGVhc2llciB0byB3cml0ZSwgYnV0IGdlbmVyYXRlcyBo
b3JyaWJsZSBtZXNzYWdlcyB3aGVuIHRoZXJlIGlzIGEKKy8vIGNvbXBpbGVyIGVycm9yLCBhcyBn
Y2MgaW5zaXN0cyBvbiBwcmludGluZyBvdXQgZWFjaCB0ZW1wbGF0ZQorLy8gYXJndW1lbnQsIGV2
ZW4gaWYgaXQgaGFzIHRoZSBkZWZhdWx0IHZhbHVlICh0aGlzIG1lYW5zIFRlbXBsYXRlczxsaXN0
PgorLy8gd2lsbCBhcHBlYXIgYXMgVGVtcGxhdGVzPGxpc3QsIE5vbmVULCBOb25lVCwgLi4uLCBO
b25lVD4gaW4gdGhlIGNvbXBpbGVyCisvLyBlcnJvcnMpLgorLy8KKy8vIE91ciBzb2x1dGlvbiBp
cyB0byBjb21iaW5lIHRoZSBiZXN0IHBhcnQgb2YgdGhlIHR3byBhcHByb2FjaGVzOiBhCisvLyB1
c2VyIHdvdWxkIHdyaXRlIFRlbXBsYXRlczxUMSwgLi4uLCBUTj4sIGFuZCBHb29nbGUgVGVzdCB3
aWxsIHRyYW5zbGF0ZQorLy8gdGhhdCB0byBUZW1wbGF0ZXNOPFQxLCAuLi4sIFROPiBpbnRlcm5h
bGx5IHRvIG1ha2UgZXJyb3IgbWVzc2FnZXMKKy8vIHJlYWRhYmxlLiAgVGhlIHRyYW5zbGF0aW9u
IGlzIGRvbmUgYnkgdGhlICd0eXBlJyBtZW1iZXIgb2YgdGhlCisvLyBUZW1wbGF0ZXMgdGVtcGxh
dGUuCisKKyRyYW5nZSBpIDEuLm4KK3RlbXBsYXRlIDwkZm9yIGksIFtbR1RFU1RfVEVNUExBVEVf
IFQkaSA9IE5vbmVUXV0+CitzdHJ1Y3QgVGVtcGxhdGVzIHsKKyAgdHlwZWRlZiBUZW1wbGF0ZXMk
bjwkZm9yIGksIFtbVCRpXV0+IHR5cGU7Cit9OworCit0ZW1wbGF0ZSA8Pgorc3RydWN0IFRlbXBs
YXRlczwkZm9yIGksIFtbTm9uZVRdXT4geworICB0eXBlZGVmIFRlbXBsYXRlczAgdHlwZTsKK307
CisKKyRyYW5nZSBpIDEuLm4tMQorJGZvciBpIFtbCiskcmFuZ2UgaiAxLi5pCiskcmFuZ2UgayBp
KzEuLm4KK3RlbXBsYXRlIDwkZm9yIGosIFtbR1RFU1RfVEVNUExBVEVfIFQkal1dPgorc3RydWN0
IFRlbXBsYXRlczwkZm9yIGosIFtbVCRqXV0kZm9yIGtbWywgTm9uZVRdXT4geworICB0eXBlZGVm
IFRlbXBsYXRlcyRpPCRmb3IgaiwgW1tUJGpdXT4gdHlwZTsKK307CisKK11dCisKKy8vIFRoZSBU
eXBlTGlzdCB0ZW1wbGF0ZSBtYWtlcyBpdCBwb3NzaWJsZSB0byB1c2UgZWl0aGVyIGEgc2luZ2xl
IHR5cGUKKy8vIG9yIGEgVHlwZXM8Li4uPiBsaXN0IGluIFRZUEVEX1RFU1RfQ0FTRSgpIGFuZAor
Ly8gSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoKS4KKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CitzdHJ1Y3QgVHlwZUxpc3QgeworICB0eXBlZGVmIFR5cGVzMTxUPiB0eXBlOworfTsKKwor
CiskcmFuZ2UgaSAxLi5uCit0ZW1wbGF0ZSA8JGZvciBpLCBbW3R5cGVuYW1lIFQkaV1dPgorc3Ry
dWN0IFR5cGVMaXN0PFR5cGVzPCRmb3IgaSwgW1tUJGldXT4gPiB7CisgIHR5cGVkZWYgdHlwZW5h
bWUgVHlwZXM8JGZvciBpLCBbW1QkaV1dPjo6dHlwZSB0eXBlOworfTsKKworI2VuZGlmICAvLyBH
VEVTVF9IQVNfVFlQRURfVEVTVCB8fCBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCisKK30gIC8vIG5h
bWVzcGFjZSBpbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKKworI2VuZGlmICAvLyBH
VEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1RZUEVfVVRJTF9IXwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZXRlc3QvbTQvYWN4X3B0aHJlYWQubTQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9tNC9hY3hfcHRo
cmVhZC5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yY2YyMGRlMTQ0YTExYmUyYWE2MDNiMDRlYTUxMTI0NDE5MTAz
N2I3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvbTQvYWN4X3B0aHJlYWQubTQKQEAg
LTAsMCArMSwzNjMgQEAKKyMgVGhpcyB3YXMgcmV0cmlldmVkIGZyb20KKyMgICAgaHR0cDovL3N2
bi4wcG9pbnRlci5kZS92aWV3dmMvdHJ1bmsvY29tbW9uL2FjeF9wdGhyZWFkLm00P3JldmlzaW9u
PTEyNzcmcm9vdD1hdmFoaQorIyBTZWUgYWxzbyAocGVyaGFwcyBmb3IgbmV3IHZlcnNpb25zPykK
KyMgICAgaHR0cDovL3N2bi4wcG9pbnRlci5kZS92aWV3dmMvdHJ1bmsvY29tbW9uL2FjeF9wdGhy
ZWFkLm00P3Jvb3Q9YXZhaGkKKyMKKyMgV2UndmUgcmV3cml0dGVuIHRoZSBpbmNvbnNpc3RlbmN5
IGNoZWNrIGNvZGUgKGZyb20gYXZhaGkpLCB0byB3b3JrCisjIG1vcmUgYnJvYWRseS4gIEluIHBh
cnRpY3VsYXIsIGl0IG5vIGxvbmdlciBhc3N1bWVzIGxkIGFjY2VwdHMgLXpkZWZzLgorIyBUaGlz
IGNhdXNlZCBhIHJlc3RydWN0aW5nIG9mIHRoZSBjb2RlLCBidXQgdGhlIGZ1bmN0aW9uYWxpdHkg
aGFzIG9ubHkKKyMgY2hhbmdlZCBhIGxpdHRsZS4KKworZG5sIEBzeW5vcHNpcyBBQ1hfUFRIUkVB
RChbQUNUSU9OLUlGLUZPVU5EWywgQUNUSU9OLUlGLU5PVC1GT1VORF1dKQorZG5sCitkbmwgQHN1
bW1hcnkgZmlndXJlIG91dCBob3cgdG8gYnVpbGQgQyBwcm9ncmFtcyB1c2luZyBQT1NJWCB0aHJl
YWRzCitkbmwKK2RubCBUaGlzIG1hY3JvIGZpZ3VyZXMgb3V0IGhvdyB0byBidWlsZCBDIHByb2dy
YW1zIHVzaW5nIFBPU0lYIHRocmVhZHMuCitkbmwgSXQgc2V0cyB0aGUgUFRIUkVBRF9MSUJTIG91
dHB1dCB2YXJpYWJsZSB0byB0aGUgdGhyZWFkcyBsaWJyYXJ5IGFuZAorZG5sIGxpbmtlciBmbGFn
cywgYW5kIHRoZSBQVEhSRUFEX0NGTEFHUyBvdXRwdXQgdmFyaWFibGUgdG8gYW55IHNwZWNpYWwK
K2RubCBDIGNvbXBpbGVyIGZsYWdzIHRoYXQgYXJlIG5lZWRlZC4gKFRoZSB1c2VyIGNhbiBhbHNv
IGZvcmNlIGNlcnRhaW4KK2RubCBjb21waWxlciBmbGFncy9saWJzIHRvIGJlIHRlc3RlZCBieSBz
ZXR0aW5nIHRoZXNlIGVudmlyb25tZW50CitkbmwgdmFyaWFibGVzLikKK2RubAorZG5sIEFsc28g
c2V0cyBQVEhSRUFEX0NDIHRvIGFueSBzcGVjaWFsIEMgY29tcGlsZXIgdGhhdCBpcyBuZWVkZWQg
Zm9yCitkbmwgbXVsdGktdGhyZWFkZWQgcHJvZ3JhbXMgKGRlZmF1bHRzIHRvIHRoZSB2YWx1ZSBv
ZiBDQyBvdGhlcndpc2UpLgorZG5sIChUaGlzIGlzIG5lY2Vzc2FyeSBvbiBBSVggdG8gdXNlIHRo
ZSBzcGVjaWFsIGNjX3IgY29tcGlsZXIgYWxpYXMuKQorZG5sCitkbmwgTk9URTogWW91IGFyZSBh
c3N1bWVkIHRvIG5vdCBvbmx5IGNvbXBpbGUgeW91ciBwcm9ncmFtIHdpdGggdGhlc2UKK2RubCBm
bGFncywgYnV0IGFsc28gbGluayBpdCB3aXRoIHRoZW0gYXMgd2VsbC4gZS5nLiB5b3Ugc2hvdWxk
IGxpbmsKK2RubCB3aXRoICRQVEhSRUFEX0NDICRDRkxBR1MgJFBUSFJFQURfQ0ZMQUdTICRMREZM
QUdTIC4uLiAkUFRIUkVBRF9MSUJTCitkbmwgJExJQlMKK2RubAorZG5sIElmIHlvdSBhcmUgb25s
eSBidWlsZGluZyB0aHJlYWRzIHByb2dyYW1zLCB5b3UgbWF5IHdpc2ggdG8gdXNlCitkbmwgdGhl
c2UgdmFyaWFibGVzIGluIHlvdXIgZGVmYXVsdCBMSUJTLCBDRkxBR1MsIGFuZCBDQzoKK2RubAor
ZG5sICAgICAgICBMSUJTPSIkUFRIUkVBRF9MSUJTICRMSUJTIgorZG5sICAgICAgICBDRkxBR1M9
IiRDRkxBR1MgJFBUSFJFQURfQ0ZMQUdTIgorZG5sICAgICAgICBDQz0iJFBUSFJFQURfQ0MiCitk
bmwKK2RubCBJbiBhZGRpdGlvbiwgaWYgdGhlIFBUSFJFQURfQ1JFQVRFX0pPSU5BQkxFIHRocmVh
ZC1hdHRyaWJ1dGUKK2RubCBjb25zdGFudCBoYXMgYSBub25zdGFuZGFyZCBuYW1lLCBkZWZpbmVz
IFBUSFJFQURfQ1JFQVRFX0pPSU5BQkxFIHRvCitkbmwgdGhhdCBuYW1lIChlLmcuIFBUSFJFQURf
Q1JFQVRFX1VOREVUQUNIRUQgb24gQUlYKS4KK2RubAorZG5sIEFDVElPTi1JRi1GT1VORCBpcyBh
IGxpc3Qgb2Ygc2hlbGwgY29tbWFuZHMgdG8gcnVuIGlmIGEgdGhyZWFkcworZG5sIGxpYnJhcnkg
aXMgZm91bmQsIGFuZCBBQ1RJT04tSUYtTk9ULUZPVU5EIGlzIGEgbGlzdCBvZiBjb21tYW5kcyB0
bworZG5sIHJ1biBpdCBpZiBpdCBpcyBub3QgZm91bmQuIElmIEFDVElPTi1JRi1GT1VORCBpcyBu
b3Qgc3BlY2lmaWVkLCB0aGUKK2RubCBkZWZhdWx0IGFjdGlvbiB3aWxsIGRlZmluZSBIQVZFX1BU
SFJFQUQuCitkbmwKK2RubCBQbGVhc2UgbGV0IHRoZSBhdXRob3JzIGtub3cgaWYgdGhpcyBtYWNy
byBmYWlscyBvbiBhbnkgcGxhdGZvcm0sIG9yCitkbmwgaWYgeW91IGhhdmUgYW55IG90aGVyIHN1
Z2dlc3Rpb25zIG9yIGNvbW1lbnRzLiBUaGlzIG1hY3JvIHdhcyBiYXNlZAorZG5sIG9uIHdvcmsg
YnkgU0dKIG9uIGF1dG9jb25mIHNjcmlwdHMgZm9yIEZGVFcgKHd3dy5mZnR3Lm9yZykgKHdpdGgK
K2RubCBoZWxwIGZyb20gTS4gRnJpZ28pLCBhcyB3ZWxsIGFzIGFjX3B0aHJlYWQgYW5kIGhiX3B0
aHJlYWQgbWFjcm9zCitkbmwgcG9zdGVkIGJ5IEFsZWphbmRybyBGb3Jlcm8gQ3VlcnZvIHRvIHRo
ZSBhdXRvY29uZiBtYWNybyByZXBvc2l0b3J5LgorZG5sIFdlIGFyZSBhbHNvIGdyYXRlZnVsIGZv
ciB0aGUgaGVscGZ1bCBmZWVkYmFjayBvZiBudW1lcm91cyB1c2Vycy4KK2RubAorZG5sIEBjYXRl
Z29yeSBJbnN0YWxsZWRQYWNrYWdlcworZG5sIEBhdXRob3IgU3RldmVuIEcuIEpvaG5zb24gPHN0
ZXZlbmpAYWx1bS5taXQuZWR1PgorZG5sIEB2ZXJzaW9uIDIwMDYtMDUtMjkKK2RubCBAbGljZW5z
ZSBHUExXaXRoQUNFeGNlcHRpb24KK2RubCAKK2RubCBDaGVja3MgZm9yIEdDQyBzaGFyZWQvcHRo
cmVhZCBpbmNvbnNpc3RlbmN5IGJhc2VkIG9uIHdvcmsgYnkKK2RubCBNYXJjaW4gT3dzaWFueSA8
bWFyY2luQG93c2lhbnkucGw+CisKKworQUNfREVGVU4oW0FDWF9QVEhSRUFEXSwgWworQUNfUkVR
VUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKQorQUNfTEFOR19TQVZFCitBQ19MQU5HX0MKK2FjeF9w
dGhyZWFkX29rPW5vCisKKyMgV2UgdXNlZCB0byBjaGVjayBmb3IgcHRocmVhZC5oIGZpcnN0LCBi
dXQgdGhpcyBmYWlscyBpZiBwdGhyZWFkLmgKKyMgcmVxdWlyZXMgc3BlY2lhbCBjb21waWxlciBm
bGFncyAoZS5nLiBvbiBUcnVlNjQgb3IgU2VxdWVudCkuCisjIEl0IGdldHMgY2hlY2tlZCBmb3Ig
aW4gdGhlIGxpbmsgdGVzdCBhbnl3YXkuCisKKyMgRmlyc3Qgb2YgYWxsLCBjaGVjayBpZiB0aGUg
dXNlciBoYXMgc2V0IGFueSBvZiB0aGUgUFRIUkVBRF9MSUJTLAorIyBldGNldGVyYSBlbnZpcm9u
bWVudCB2YXJpYWJsZXMsIGFuZCBpZiB0aHJlYWRzIGxpbmtpbmcgd29ya3MgdXNpbmcKKyMgdGhl
bToKK2lmIHRlc3QgeCIkUFRIUkVBRF9MSUJTJFBUSFJFQURfQ0ZMQUdTIiAhPSB4OyB0aGVuCisg
ICAgICAgIHNhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorICAgICAgICBDRkxBR1M9IiRDRkxBR1MgJFBU
SFJFQURfQ0ZMQUdTIgorICAgICAgICBzYXZlX0xJQlM9IiRMSUJTIgorICAgICAgICBMSUJTPSIk
UFRIUkVBRF9MSUJTICRMSUJTIgorICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBwdGhyZWFk
X2pvaW4gaW4gTElCUz0kUFRIUkVBRF9MSUJTIHdpdGggQ0ZMQUdTPSRQVEhSRUFEX0NGTEFHU10p
CisgICAgICAgIEFDX1RSWV9MSU5LX0ZVTkMocHRocmVhZF9qb2luLCBhY3hfcHRocmVhZF9vaz15
ZXMpCisgICAgICAgIEFDX01TR19SRVNVTFQoJGFjeF9wdGhyZWFkX29rKQorICAgICAgICBpZiB0
ZXN0IHgiJGFjeF9wdGhyZWFkX29rIiA9IHhubzsgdGhlbgorICAgICAgICAgICAgICAgIFBUSFJF
QURfTElCUz0iIgorICAgICAgICAgICAgICAgIFBUSFJFQURfQ0ZMQUdTPSIiCisgICAgICAgIGZp
CisgICAgICAgIExJQlM9IiRzYXZlX0xJQlMiCisgICAgICAgIENGTEFHUz0iJHNhdmVfQ0ZMQUdT
IgorZmkKKworIyBXZSBtdXN0IGNoZWNrIGZvciB0aGUgdGhyZWFkcyBsaWJyYXJ5IHVuZGVyIGEg
bnVtYmVyIG9mIGRpZmZlcmVudAorIyBuYW1lczsgdGhlIG9yZGVyaW5nIGlzIHZlcnkgaW1wb3J0
YW50IGJlY2F1c2Ugc29tZSBzeXN0ZW1zCisjIChlLmcuIERFQykgaGF2ZSBib3RoIC1scHRocmVh
ZCBhbmQgLWxwdGhyZWFkcywgd2hlcmUgb25lIG9mIHRoZQorIyBsaWJyYXJpZXMgaXMgYnJva2Vu
IChub24tUE9TSVgpLgorCisjIENyZWF0ZSBhIGxpc3Qgb2YgdGhyZWFkIGZsYWdzIHRvIHRyeS4g
IEl0ZW1zIHN0YXJ0aW5nIHdpdGggYSAiLSIgYXJlCisjIEMgY29tcGlsZXIgZmxhZ3MsIGFuZCBv
dGhlciBpdGVtcyBhcmUgbGlicmFyeSBuYW1lcywgZXhjZXB0IGZvciAibm9uZSIKKyMgd2hpY2gg
aW5kaWNhdGVzIHRoYXQgd2UgdHJ5IHdpdGhvdXQgYW55IGZsYWdzIGF0IGFsbCwgYW5kICJwdGhy
ZWFkLWNvbmZpZyIKKyMgd2hpY2ggaXMgYSBwcm9ncmFtIHJldHVybmluZyB0aGUgZmxhZ3MgZm9y
IHRoZSBQdGggZW11bGF0aW9uIGxpYnJhcnkuCisKK2FjeF9wdGhyZWFkX2ZsYWdzPSJwdGhyZWFk
cyBub25lIC1LdGhyZWFkIC1rdGhyZWFkIGx0aHJlYWQgLXB0aHJlYWQgLXB0aHJlYWRzIC1tdGhy
ZWFkcyBwdGhyZWFkIC0tdGhyZWFkLXNhZmUgLW10IHB0aHJlYWQtY29uZmlnIgorCisjIFRoZSBv
cmRlcmluZyAqaXMqIChzb21ldGltZXMpIGltcG9ydGFudC4gIFNvbWUgbm90ZXMgb24gdGhlCisj
IGluZGl2aWR1YWwgaXRlbXMgZm9sbG93OgorCisjIHB0aHJlYWRzOiBBSVggKG11c3QgY2hlY2sg
dGhpcyBiZWZvcmUgLWxwdGhyZWFkKQorIyBub25lOiBpbiBjYXNlIHRocmVhZHMgYXJlIGluIGxp
YmM7IHNob3VsZCBiZSB0cmllZCBiZWZvcmUgLUt0aHJlYWQgYW5kCisjICAgICAgIG90aGVyIGNv
bXBpbGVyIGZsYWdzIHRvIHByZXZlbnQgY29udGludWFsIGNvbXBpbGVyIHdhcm5pbmdzCisjIC1L
dGhyZWFkOiBTZXF1ZW50ICh0aHJlYWRzIGluIGxpYmMsIGJ1dCAtS3RocmVhZCBuZWVkZWQgZm9y
IHB0aHJlYWQuaCkKKyMgLWt0aHJlYWQ6IEZyZWVCU0Qga2VybmVsIHRocmVhZHMgKHByZWZlcnJl
ZCB0byAtcHRocmVhZCBzaW5jZSBTTVAtYWJsZSkKKyMgbHRocmVhZDogTGludXhUaHJlYWRzIHBv
cnQgb24gRnJlZUJTRCAoYWxzbyBwcmVmZXJyZWQgdG8gLXB0aHJlYWQpCisjIC1wdGhyZWFkOiBM
aW51eC9nY2MgKGtlcm5lbCB0aHJlYWRzKSwgQlNEL2djYyAodXNlcmxhbmQgdGhyZWFkcykKKyMg
LXB0aHJlYWRzOiBTb2xhcmlzL2djYworIyAtbXRocmVhZHM6IE1pbmd3MzIvZ2NjLCBMeW54L2dj
YworIyAtbXQ6IFN1biBXb3Jrc2hvcCBDIChtYXkgb25seSBsaW5rIFN1bk9TIHRocmVhZHMgWy1s
dGhyZWFkXSwgYnV0IGl0CisjICAgICAgZG9lc24ndCBodXJ0IHRvIGNoZWNrIHNpbmNlIHRoaXMg
c29tZXRpbWVzIGRlZmluZXMgcHRocmVhZHMgdG9vOworIyAgICAgIGFsc28gZGVmaW5lcyAtRF9S
RUVOVFJBTlQpCisjICAgICAgLi4uIC1tdCBpcyBhbHNvIHRoZSBwdGhyZWFkcyBmbGFnIGZvciBI
UC9hQ0MKKyMgcHRocmVhZDogTGludXgsIGV0Y2V0ZXJhCisjIC0tdGhyZWFkLXNhZmU6IEtBSSBD
KysKKyMgcHRocmVhZC1jb25maWc6IHVzZSBwdGhyZWFkLWNvbmZpZyBwcm9ncmFtIChmb3IgR05V
IFB0aCBsaWJyYXJ5KQorCitjYXNlICIke2hvc3RfY3B1fS0ke2hvc3Rfb3N9IiBpbgorICAgICAg
ICAqc29sYXJpcyopCisKKyAgICAgICAgIyBPbiBTb2xhcmlzIChhdCBsZWFzdCwgZm9yIHNvbWUg
dmVyc2lvbnMpLCBsaWJjIGNvbnRhaW5zIHN0dWJiZWQKKyAgICAgICAgIyAobm9uLWZ1bmN0aW9u
YWwpIHZlcnNpb25zIG9mIHRoZSBwdGhyZWFkcyByb3V0aW5lcywgc28gbGluay1iYXNlZAorICAg
ICAgICAjIHRlc3RzIHdpbGwgZXJyb25lb3VzbHkgc3VjY2VlZC4gIChXZSBuZWVkIHRvIGxpbmsg
d2l0aCAtcHRocmVhZHMvLW10LworICAgICAgICAjIC1scHRocmVhZC4pICAoVGhlIHN0dWJzIGFy
ZSBtaXNzaW5nIHB0aHJlYWRfY2xlYW51cF9wdXNoLCBvciByYXRoZXIKKyAgICAgICAgIyBhIGZ1
bmN0aW9uIGNhbGxlZCBieSB0aGlzIG1hY3JvLCBzbyB3ZSBjb3VsZCBjaGVjayBmb3IgdGhhdCwg
YnV0CisgICAgICAgICMgd2hvIGtub3dzIHdoZXRoZXIgdGhleSdsbCBzdHViIHRoYXQgdG9vIGlu
IGEgZnV0dXJlIGxpYmMuKSAgU28sCisgICAgICAgICMgd2UnbGwganVzdCBsb29rIGZvciAtcHRo
cmVhZHMgYW5kIC1scHRocmVhZCBmaXJzdDoKKworICAgICAgICBhY3hfcHRocmVhZF9mbGFncz0i
LXB0aHJlYWRzIHB0aHJlYWQgLW10IC1wdGhyZWFkICRhY3hfcHRocmVhZF9mbGFncyIKKyAgICAg
ICAgOzsKK2VzYWMKKworaWYgdGVzdCB4IiRhY3hfcHRocmVhZF9vayIgPSB4bm87IHRoZW4KK2Zv
ciBmbGFnIGluICRhY3hfcHRocmVhZF9mbGFnczsgZG8KKworICAgICAgICBjYXNlICRmbGFnIGlu
CisgICAgICAgICAgICAgICAgbm9uZSkKKyAgICAgICAgICAgICAgICBBQ19NU0dfQ0hFQ0tJTkco
W3doZXRoZXIgcHRocmVhZHMgd29yayB3aXRob3V0IGFueSBmbGFnc10pCisgICAgICAgICAgICAg
ICAgOzsKKworICAgICAgICAgICAgICAgIC0qKQorICAgICAgICAgICAgICAgIEFDX01TR19DSEVD
S0lORyhbd2hldGhlciBwdGhyZWFkcyB3b3JrIHdpdGggJGZsYWddKQorICAgICAgICAgICAgICAg
IFBUSFJFQURfQ0ZMQUdTPSIkZmxhZyIKKyAgICAgICAgICAgICAgICA7OworCisJCXB0aHJlYWQt
Y29uZmlnKQorCQlBQ19DSEVDS19QUk9HKGFjeF9wdGhyZWFkX2NvbmZpZywgcHRocmVhZC1jb25m
aWcsIHllcywgbm8pCisJCWlmIHRlc3QgeCIkYWN4X3B0aHJlYWRfY29uZmlnIiA9IHhubzsgdGhl
biBjb250aW51ZTsgZmkKKwkJUFRIUkVBRF9DRkxBR1M9ImBwdGhyZWFkLWNvbmZpZyAtLWNmbGFn
c2AiCisJCVBUSFJFQURfTElCUz0iYHB0aHJlYWQtY29uZmlnIC0tbGRmbGFnc2AgYHB0aHJlYWQt
Y29uZmlnIC0tbGlic2AiCisJCTs7CisKKyAgICAgICAgICAgICAgICAqKQorICAgICAgICAgICAg
ICAgIEFDX01TR19DSEVDS0lORyhbZm9yIHRoZSBwdGhyZWFkcyBsaWJyYXJ5IC1sJGZsYWddKQor
ICAgICAgICAgICAgICAgIFBUSFJFQURfTElCUz0iLWwkZmxhZyIKKyAgICAgICAgICAgICAgICA7
OworICAgICAgICBlc2FjCisKKyAgICAgICAgc2F2ZV9MSUJTPSIkTElCUyIKKyAgICAgICAgc2F2
ZV9DRkxBR1M9IiRDRkxBR1MiCisgICAgICAgIExJQlM9IiRQVEhSRUFEX0xJQlMgJExJQlMiCisg
ICAgICAgIENGTEFHUz0iJENGTEFHUyAkUFRIUkVBRF9DRkxBR1MiCisKKyAgICAgICAgIyBDaGVj
ayBmb3IgdmFyaW91cyBmdW5jdGlvbnMuICBXZSBtdXN0IGluY2x1ZGUgcHRocmVhZC5oLAorICAg
ICAgICAjIHNpbmNlIHNvbWUgZnVuY3Rpb25zIG1heSBiZSBtYWNyb3MuICAoT24gdGhlIFNlcXVl
bnQsIHdlCisgICAgICAgICMgbmVlZCBhIHNwZWNpYWwgZmxhZyAtS3RocmVhZCB0byBtYWtlIHRo
aXMgaGVhZGVyIGNvbXBpbGUuKQorICAgICAgICAjIFdlIGNoZWNrIGZvciBwdGhyZWFkX2pvaW4g
YmVjYXVzZSBpdCBpcyBpbiAtbHB0aHJlYWQgb24gSVJJWAorICAgICAgICAjIHdoaWxlIHB0aHJl
YWRfY3JlYXRlIGlzIGluIGxpYmMuICBXZSBjaGVjayBmb3IgcHRocmVhZF9hdHRyX2luaXQKKyAg
ICAgICAgIyBkdWUgdG8gREVDIGNyYXppbmVzcyB3aXRoIC1scHRocmVhZHMuICBXZSBjaGVjayBm
b3IKKyAgICAgICAgIyBwdGhyZWFkX2NsZWFudXBfcHVzaCBiZWNhdXNlIGl0IGlzIG9uZSBvZiB0
aGUgZmV3IHB0aHJlYWQKKyAgICAgICAgIyBmdW5jdGlvbnMgb24gU29sYXJpcyB0aGF0IGRvZXNu
J3QgaGF2ZSBhIG5vbi1mdW5jdGlvbmFsIGxpYmMgc3R1Yi4KKyAgICAgICAgIyBXZSB0cnkgcHRo
cmVhZF9jcmVhdGUgb24gZ2VuZXJhbCBwcmluY2lwbGVzLgorICAgICAgICBBQ19UUllfTElOSyhb
I2luY2x1ZGUgPHB0aHJlYWQuaD5dLAorICAgICAgICAgICAgICAgICAgICBbcHRocmVhZF90IHRo
OyBwdGhyZWFkX2pvaW4odGgsIDApOworICAgICAgICAgICAgICAgICAgICAgcHRocmVhZF9hdHRy
X2luaXQoMCk7IHB0aHJlYWRfY2xlYW51cF9wdXNoKDAsIDApOworICAgICAgICAgICAgICAgICAg
ICAgcHRocmVhZF9jcmVhdGUoMCwwLDAsMCk7IHB0aHJlYWRfY2xlYW51cF9wb3AoMCk7IF0sCisg
ICAgICAgICAgICAgICAgICAgIFthY3hfcHRocmVhZF9vaz15ZXNdKQorCisgICAgICAgIExJQlM9
IiRzYXZlX0xJQlMiCisgICAgICAgIENGTEFHUz0iJHNhdmVfQ0ZMQUdTIgorCisgICAgICAgIEFD
X01TR19SRVNVTFQoJGFjeF9wdGhyZWFkX29rKQorICAgICAgICBpZiB0ZXN0ICJ4JGFjeF9wdGhy
ZWFkX29rIiA9IHh5ZXM7IHRoZW4KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZmkK
KworICAgICAgICBQVEhSRUFEX0xJQlM9IiIKKyAgICAgICAgUFRIUkVBRF9DRkxBR1M9IiIKK2Rv
bmUKK2ZpCisKKyMgVmFyaW91cyBvdGhlciBjaGVja3M6CitpZiB0ZXN0ICJ4JGFjeF9wdGhyZWFk
X29rIiA9IHh5ZXM7IHRoZW4KKyAgICAgICAgc2F2ZV9MSUJTPSIkTElCUyIKKyAgICAgICAgTElC
Uz0iJFBUSFJFQURfTElCUyAkTElCUyIKKyAgICAgICAgc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisg
ICAgICAgIENGTEFHUz0iJENGTEFHUyAkUFRIUkVBRF9DRkxBR1MiCisKKyAgICAgICAgIyBEZXRl
Y3QgQUlYIGxvc3NhZ2U6IEpPSU5BQkxFIGF0dHJpYnV0ZSBpcyBjYWxsZWQgVU5ERVRBQ0hFRC4K
KwlBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBqb2luYWJsZSBwdGhyZWFkIGF0dHJpYnV0ZV0pCisJYXR0
cl9uYW1lPXVua25vd24KKwlmb3IgYXR0ciBpbiBQVEhSRUFEX0NSRUFURV9KT0lOQUJMRSBQVEhS
RUFEX0NSRUFURV9VTkRFVEFDSEVEOyBkbworCSAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPHB0
aHJlYWQuaD5dLCBbaW50IGF0dHI9JGF0dHI7IHJldHVybiBhdHRyO10sCisgICAgICAgICAgICAg
ICAgICAgICAgICBbYXR0cl9uYW1lPSRhdHRyOyBicmVha10pCisJZG9uZQorICAgICAgICBBQ19N
U0dfUkVTVUxUKCRhdHRyX25hbWUpCisgICAgICAgIGlmIHRlc3QgIiRhdHRyX25hbWUiICE9IFBU
SFJFQURfQ1JFQVRFX0pPSU5BQkxFOyB0aGVuCisgICAgICAgICAgICBBQ19ERUZJTkVfVU5RVU9U
RUQoUFRIUkVBRF9DUkVBVEVfSk9JTkFCTEUsICRhdHRyX25hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgW0RlZmluZSB0byBuZWNlc3Nhcnkgc3ltYm9sIGlmIHRoaXMgY29uc3Rh
bnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcyBhIG5vbi1zdGFuZGFyZCBu
YW1lIG9uIHlvdXIgc3lzdGVtLl0pCisgICAgICAgIGZpCisKKyAgICAgICAgQUNfTVNHX0NIRUNL
SU5HKFtpZiBtb3JlIHNwZWNpYWwgZmxhZ3MgYXJlIHJlcXVpcmVkIGZvciBwdGhyZWFkc10pCisg
ICAgICAgIGZsYWc9bm8KKyAgICAgICAgY2FzZSAiJHtob3N0X2NwdX0tJHtob3N0X29zfSIgaW4K
KyAgICAgICAgICAgICotYWl4KiB8ICotZnJlZWJzZCogfCAqLWRhcndpbiopIGZsYWc9Ii1EX1RI
UkVBRF9TQUZFIjs7CisgICAgICAgICAgICAqc29sYXJpcyogfCAqLW9zZiogfCAqLWhwdXgqKSBm
bGFnPSItRF9SRUVOVFJBTlQiOzsKKyAgICAgICAgZXNhYworICAgICAgICBBQ19NU0dfUkVTVUxU
KCR7ZmxhZ30pCisgICAgICAgIGlmIHRlc3QgIngkZmxhZyIgIT0geG5vOyB0aGVuCisgICAgICAg
ICAgICBQVEhSRUFEX0NGTEFHUz0iJGZsYWcgJFBUSFJFQURfQ0ZMQUdTIgorICAgICAgICBmaQor
CisgICAgICAgIExJQlM9IiRzYXZlX0xJQlMiCisgICAgICAgIENGTEFHUz0iJHNhdmVfQ0ZMQUdT
IgorICAgICAgICAjIE1vcmUgQUlYIGxvc3NhZ2U6IG11c3QgY29tcGlsZSB3aXRoIHhsY19yIG9y
IGNjX3IKKwlpZiB0ZXN0IHgiJEdDQyIgIT0geHllczsgdGhlbgorICAgICAgICAgIEFDX0NIRUNL
X1BST0dTKFBUSFJFQURfQ0MsIHhsY19yIGNjX3IsICR7Q0N9KQorICAgICAgICBlbHNlCisgICAg
ICAgICAgUFRIUkVBRF9DQz0kQ0MKKwlmaQorCisJIyBUaGUgbmV4dCBwYXJ0IHRyaWVzIHRvIGRl
dGVjdCBHQ0MgaW5jb25zaXN0ZW5jeSB3aXRoIC1zaGFyZWQgb24gc29tZQorCSMgYXJjaGl0ZWN0
dXJlcyBhbmQgc3lzdGVtcy4gVGhlIHByb2JsZW0gaXMgdGhhdCBpbiBjZXJ0YWluCisJIyBjb25m
aWd1cmF0aW9ucywgd2hlbiAtc2hhcmVkIGlzIHNwZWNpZmllZCwgR0NDICJmb3JnZXRzIiB0bwor
CSMgaW50ZXJuYWxseSB1c2UgdmFyaW91cyBmbGFncyB3aGljaCBhcmUgc3RpbGwgbmVjZXNzYXJ5
LgorCQorCSMKKwkjIFByZXBhcmUgdGhlIGZsYWdzCisJIworCXNhdmVfQ0ZMQUdTPSIkQ0ZMQUdT
IgorCXNhdmVfTElCUz0iJExJQlMiCisJc2F2ZV9DQz0iJENDIgorCQorCSMgVHJ5IHdpdGggdGhl
IGZsYWdzIGRldGVybWluZWQgYnkgdGhlIGVhcmxpZXIgY2hlY2tzLgorCSMKKwkjIC1XbCwteixk
ZWZzIGZvcmNlcyBsaW5rLXRpbWUgc3ltYm9sIHJlc29sdXRpb24sIHNvIHRoYXQgdGhlCisJIyBs
aW5raW5nIGNoZWNrcyB3aXRoIC1zaGFyZWQgYWN0dWFsbHkgaGF2ZSBhbnkgdmFsdWUKKwkjCisJ
IyBGSVhNRTogLWZQSUMgaXMgcmVxdWlyZWQgZm9yIC1zaGFyZWQgb24gbWFueSBhcmNoaXRlY3R1
cmVzLAorCSMgc28gd2Ugc3BlY2lmeSBpdCBoZXJlLCBidXQgdGhlIHJpZ2h0IHdheSB3b3VsZCBw
cm9iYWJseSBiZSB0bworCSMgcHJvcGVybHkgZGV0ZWN0IHdoZXRoZXIgaXQgaXMgYWN0dWFsbHkg
cmVxdWlyZWQuCisJQ0ZMQUdTPSItc2hhcmVkIC1mUElDIC1XbCwteixkZWZzICRDRkxBR1MgJFBU
SFJFQURfQ0ZMQUdTIgorCUxJQlM9IiRQVEhSRUFEX0xJQlMgJExJQlMiCisJQ0M9IiRQVEhSRUFE
X0NDIgorCQorCSMgSW4gb3JkZXIgbm90IHRvIGNyZWF0ZSBzZXZlcmFsIGxldmVscyBvZiBpbmRl
bnRhdGlvbiwgd2UgdGVzdAorCSMgdGhlIHZhbHVlIG9mICIkZG9uZSIgdW50aWwgd2UgZmluZCB0
aGUgY3VyZSBvciBydW4gb3V0IG9mIGlkZWFzLgorCWRvbmU9Im5vIgorCQorCSMgRmlyc3QsIG1h
a2Ugc3VyZSB0aGUgQ0ZMQUdTIHdlIGFkZGVkIGFyZSBhY3R1YWxseSBhY2NlcHRlZCBieSBvdXIK
KwkjIGNvbXBpbGVyLiAgSWYgbm90IChhbmQgT1MgWCdzIGxkLCBmb3IgaW5zdGFuY2UsIGRvZXMg
bm90IGFjY2VwdCAteiksCisJIyB0aGVuIHdlIGNhbid0IGRvIHRoaXMgdGVzdC4KKwlpZiB0ZXN0
IHgiJGRvbmUiID0geG5vOyB0aGVuCisJICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGNo
ZWNrIGZvciBHQ0MgcHRocmVhZC9zaGFyZWQgaW5jb25zaXN0ZW5jaWVzXSkKKwkgICBBQ19UUllf
TElOSygsLCAsIFtkb25lPXllc10pCisJCisJICAgaWYgdGVzdCAieCRkb25lIiA9IHh5ZXMgOyB0
aGVuCisJICAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQorCSAgIGVsc2UKKwkgICAgICBBQ19NU0df
UkVTVUxUKFt5ZXNdKQorCSAgIGZpCisJZmkKKwkKKwlpZiB0ZXN0IHgiJGRvbmUiID0geG5vOyB0
aGVuCisJICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIC1wdGhyZWFkIGlzIHN1ZmZpY2llbnQg
d2l0aCAtc2hhcmVkXSkKKwkgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPHB0aHJlYWQuaD5dLAor
CSAgICAgIFtwdGhyZWFkX3QgdGg7IHB0aHJlYWRfam9pbih0aCwgMCk7CisJICAgICAgcHRocmVh
ZF9hdHRyX2luaXQoMCk7IHB0aHJlYWRfY2xlYW51cF9wdXNoKDAsIDApOworCSAgICAgIHB0aHJl
YWRfY3JlYXRlKDAsMCwwLDApOyBwdGhyZWFkX2NsZWFudXBfcG9wKDApOyBdLAorCSAgICAgIFtk
b25lPXllc10pCisJICAgCisJICAgaWYgdGVzdCAieCRkb25lIiA9IHh5ZXM7IHRoZW4KKwkgICAg
ICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQorCSAgIGVsc2UKKwkgICAgICBBQ19NU0dfUkVTVUxUKFtu
b10pCisJICAgZmkKKwlmaQorCQorCSMKKwkjIExpbnV4IGdjYyBvbiBzb21lIGFyY2hpdGVjdHVy
ZXMgc3VjaCBhcyBtaXBzL21pcHNlbCBmb3JnZXRzCisJIyBhYm91dCAtbHB0aHJlYWQKKwkjCisJ
aWYgdGVzdCB4IiRkb25lIiA9IHhubzsgdGhlbgorCSAgIEFDX01TR19DSEVDS0lORyhbd2hldGhl
ciAtbHB0aHJlYWQgZml4ZXMgdGhhdF0pCisJICAgTElCUz0iLWxwdGhyZWFkICRQVEhSRUFEX0xJ
QlMgJHNhdmVfTElCUyIKKwkgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPHB0aHJlYWQuaD5dLAor
CSAgICAgIFtwdGhyZWFkX3QgdGg7IHB0aHJlYWRfam9pbih0aCwgMCk7CisJICAgICAgcHRocmVh
ZF9hdHRyX2luaXQoMCk7IHB0aHJlYWRfY2xlYW51cF9wdXNoKDAsIDApOworCSAgICAgIHB0aHJl
YWRfY3JlYXRlKDAsMCwwLDApOyBwdGhyZWFkX2NsZWFudXBfcG9wKDApOyBdLAorCSAgICAgIFtk
b25lPXllc10pCisJCisJICAgaWYgdGVzdCAieCRkb25lIiA9IHh5ZXM7IHRoZW4KKwkgICAgICBB
Q19NU0dfUkVTVUxUKFt5ZXNdKQorCSAgICAgIFBUSFJFQURfTElCUz0iLWxwdGhyZWFkICRQVEhS
RUFEX0xJQlMiCisJICAgZWxzZQorCSAgICAgIEFDX01TR19SRVNVTFQoW25vXSkKKwkgICBmaQor
CWZpCisJIworCSMgRnJlZUJTRCA0LjEwIGdjYyBmb3JnZXRzIHRvIHVzZSAtbGNfciBpbnN0ZWFk
IG9mIC1sYworCSMKKwlpZiB0ZXN0IHgiJGRvbmUiID0geG5vOyB0aGVuCisJICAgQUNfTVNHX0NI
RUNLSU5HKFt3aGV0aGVyIC1sY19yIGZpeGVzIHRoYXRdKQorCSAgIExJQlM9Ii1sY19yICRQVEhS
RUFEX0xJQlMgJHNhdmVfTElCUyIKKwkgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPHB0aHJlYWQu
aD5dLAorCSAgICAgICBbcHRocmVhZF90IHRoOyBwdGhyZWFkX2pvaW4odGgsIDApOworCSAgICAg
ICAgcHRocmVhZF9hdHRyX2luaXQoMCk7IHB0aHJlYWRfY2xlYW51cF9wdXNoKDAsIDApOworCSAg
ICAgICAgcHRocmVhZF9jcmVhdGUoMCwwLDAsMCk7IHB0aHJlYWRfY2xlYW51cF9wb3AoMCk7IF0s
CisJICAgICAgIFtkb25lPXllc10pCisJCisJICAgaWYgdGVzdCAieCRkb25lIiA9IHh5ZXM7IHRo
ZW4KKwkgICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQorCSAgICAgIFBUSFJFQURfTElCUz0iLWxj
X3IgJFBUSFJFQURfTElCUyIKKwkgICBlbHNlCisJICAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQor
CSAgIGZpCisJZmkKKwlpZiB0ZXN0IHgiJGRvbmUiID0geG5vOyB0aGVuCisJICAgIyBPSywgd2Ug
aGF2ZSBydW4gb3V0IG9mIGlkZWFzCisJICAgQUNfTVNHX1dBUk4oW0ltcG9zc2libGUgdG8gZGV0
ZXJtaW5lIGhvdyB0byB1c2UgcHRocmVhZHMgd2l0aCBzaGFyZWQgbGlicmFyaWVzXSkKKwkKKwkg
ICAjIHNvIGl0J3Mgbm90IHNhZmUgdG8gYXNzdW1lIHRoYXQgd2UgbWF5IHVzZSBwdGhyZWFkcwor
CSAgIGFjeF9wdGhyZWFkX29rPW5vCisJZmkKKwkKKwlDRkxBR1M9IiRzYXZlX0NGTEFHUyIKKwlM
SUJTPSIkc2F2ZV9MSUJTIgorCUNDPSIkc2F2ZV9DQyIKK2Vsc2UKKyAgICAgICAgUFRIUkVBRF9D
Qz0iJENDIgorZmkKKworQUNfU1VCU1QoUFRIUkVBRF9MSUJTKQorQUNfU1VCU1QoUFRIUkVBRF9D
RkxBR1MpCitBQ19TVUJTVChQVEhSRUFEX0NDKQorCisjIEZpbmFsbHksIGV4ZWN1dGUgQUNUSU9O
LUlGLUZPVU5EL0FDVElPTi1JRi1OT1QtRk9VTkQ6CitpZiB0ZXN0IHgiJGFjeF9wdGhyZWFkX29r
IiA9IHh5ZXM7IHRoZW4KKyAgICAgICAgaWZlbHNlKFskMV0sLEFDX0RFRklORShIQVZFX1BUSFJF
QUQsMSxbRGVmaW5lIGlmIHlvdSBoYXZlIFBPU0lYIHRocmVhZHMgbGlicmFyaWVzIGFuZCBoZWFk
ZXIgZmlsZXMuXSksWyQxXSkKKyAgICAgICAgOgorZWxzZQorICAgICAgICBhY3hfcHRocmVhZF9v
az1ubworICAgICAgICAkMgorZmkKK0FDX0xBTkdfUkVTVE9SRQorXSlkbmwgQUNYX1BUSFJFQUQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L200L2d0ZXN0Lm00IGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvbTQvZ3Rl
c3QubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjU5OGJhNzVhNGQ3ZjJjNDg2NjMyYzZkZGRjMGRlNTE3OGQyOTBl
YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L200L2d0ZXN0Lm00CkBAIC0wLDAgKzEs
NzQgQEAKK2RubCBHVEVTVF9MSUJfQ0hFQ0soW21pbmltdW0gdmVyc2lvbiBbLAorZG5sICAgICAg
ICAgICAgICAgICAgYWN0aW9uIGlmIGZvdW5kIFssYWN0aW9uIGlmIG5vdCBmb3VuZF1dXSkKK2Ru
bAorZG5sIENoZWNrIGZvciB0aGUgcHJlc2VuY2Ugb2YgdGhlIEdvb2dsZSBUZXN0IGxpYnJhcnks
IG9wdGlvbmFsbHkgYXQgYSBtaW5pbXVtCitkbmwgdmVyc2lvbiwgYW5kIGluZGljYXRlIGEgdmlh
YmxlIHZlcnNpb24gd2l0aCB0aGUgSEFWRV9HVEVTVCBmbGFnLiBJdCBkZWZpbmVzCitkbmwgc3Rh
bmRhcmQgdmFyaWFibGVzIGZvciBzdWJzdGl0dXRpb24gaW5jbHVkaW5nIEdURVNUX0NQUEZMQUdT
LAorZG5sIEdURVNUX0NYWEZMQUdTLCBHVEVTVF9MREZMQUdTLCBhbmQgR1RFU1RfTElCUy4gSXQg
YWxzbyBkZWZpbmVzCitkbmwgR1RFU1RfVkVSU0lPTiBhcyB0aGUgdmVyc2lvbiBvZiBHb29nbGUg
VGVzdCBmb3VuZC4gRmluYWxseSwgaXQgcHJvdmlkZXMKK2RubCBvcHRpb25hbCBjdXN0b20gYWN0
aW9uIHNsb3RzIGluIHRoZSBldmVudCBHVEVTVCBpcyBmb3VuZCBvciBub3QuCitBQ19ERUZVTihb
R1RFU1RfTElCX0NIRUNLXSwKK1sKK2RubCBQcm92aWRlIGEgZmxhZyB0byBlbmFibGUgb3IgZGlz
YWJsZSBHb29nbGUgVGVzdCB1c2FnZS4KK0FDX0FSR19FTkFCTEUoW2d0ZXN0XSwKKyAgW0FTX0hF
TFBfU1RSSU5HKFstLWVuYWJsZS1ndGVzdF0sCisgICAgICAgICAgICAgICAgICBbRW5hYmxlIHRl
c3RzIHVzaW5nIHRoZSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrLgorICAgICAgICAgICAg
ICAgICAgKERlZmF1bHQgaXMgZW5hYmxlZC4pXSldLAorICBbXSwKKyAgW2VuYWJsZV9ndGVzdD1d
KQorQUNfQVJHX1ZBUihbR1RFU1RfQ09ORklHXSwKKyAgICAgICAgICAgW1RoZSBleGFjdCBwYXRo
IG9mIEdvb2dsZSBUZXN0J3MgJ2d0ZXN0LWNvbmZpZycgc2NyaXB0Ll0pCitBQ19BUkdfVkFSKFtH
VEVTVF9DUFBGTEFHU10sCisgICAgICAgICAgIFtDLWxpa2UgcHJlcHJvY2Vzc29yIGZsYWdzIGZv
ciBHb29nbGUgVGVzdC5dKQorQUNfQVJHX1ZBUihbR1RFU1RfQ1hYRkxBR1NdLAorICAgICAgICAg
ICBbQysrIGNvbXBpbGUgZmxhZ3MgZm9yIEdvb2dsZSBUZXN0Ll0pCitBQ19BUkdfVkFSKFtHVEVT
VF9MREZMQUdTXSwKKyAgICAgICAgICAgW0xpbmtlciBwYXRoIGFuZCBvcHRpb24gZmxhZ3MgZm9y
IEdvb2dsZSBUZXN0Ll0pCitBQ19BUkdfVkFSKFtHVEVTVF9MSUJTXSwKKyAgICAgICAgICAgW0xp
YnJhcnkgbGlua2luZyBmbGFncyBmb3IgR29vZ2xlIFRlc3QuXSkKK0FDX0FSR19WQVIoW0dURVNU
X1ZFUlNJT05dLAorICAgICAgICAgICBbVGhlIHZlcnNpb24gb2YgR29vZ2xlIFRlc3QgYXZhaWxh
YmxlLl0pCitIQVZFX0dURVNUPSJubyIKK0FTX0lGKFt0ZXN0ICJ4JHtlbmFibGVfZ3Rlc3R9IiAh
PSAieG5vIl0sCisgIFtBQ19NU0dfQ0hFQ0tJTkcoW2ZvciAnZ3Rlc3QtY29uZmlnJ10pCisgICBB
U19JRihbdGVzdCAieCR7ZW5hYmxlX2d0ZXN0fSIgIT0gInh5ZXMiXSwKKyAgICAgW0FTX0lGKFt0
ZXN0IC14ICIke2VuYWJsZV9ndGVzdH0vc2NyaXB0cy9ndGVzdC1jb25maWciXSwKKyAgICAgICAg
W0dURVNUX0NPTkZJRz0iJHtlbmFibGVfZ3Rlc3R9L3NjcmlwdHMvZ3Rlc3QtY29uZmlnIl0sCisg
ICAgICAgIFtHVEVTVF9DT05GSUc9IiR7ZW5hYmxlX2d0ZXN0fS9iaW4vZ3Rlc3QtY29uZmlnIl0p
CisgICAgICBBU19JRihbdGVzdCAteCAiJHtHVEVTVF9DT05GSUd9Il0sIFtdLAorICAgICAgICBb
QUNfTVNHX1JFU1VMVChbbm9dKQorICAgICAgICAgQUNfTVNHX0VSUk9SKFtkbmwKK1VuYWJsZSB0
byBsb2NhdGUgZWl0aGVyIGEgYnVpbHQgb3IgaW5zdGFsbGVkIEdvb2dsZSBUZXN0LgorVGhlIHNw
ZWNpZmljIGxvY2F0aW9uICcke2VuYWJsZV9ndGVzdH0nIHdhcyBwcm92aWRlZCBmb3IgYSBidWls
dCBvciBpbnN0YWxsZWQKK0dvb2dsZSBUZXN0LCBidXQgbm8gJ2d0ZXN0LWNvbmZpZycgc2NyaXB0
IGNvdWxkIGJlIGZvdW5kIGF0IHRoaXMgbG9jYXRpb24uXSkKKyAgICAgICAgIF0pXSwKKyAgICAg
W0FDX1BBVEhfUFJPRyhbR1RFU1RfQ09ORklHXSwgW2d0ZXN0LWNvbmZpZ10pXSkKKyAgIEFTX0lG
KFt0ZXN0IC14ICIke0dURVNUX0NPTkZJR30iXSwKKyAgICAgW0FDX01TR19SRVNVTFQoWyR7R1RF
U1RfQ09ORklHfV0pCisgICAgICBtNF9pZnZhbChbJDFdLAorICAgICAgICBbX2d0ZXN0X21pbl92
ZXJzaW9uPSItLW1pbi12ZXJzaW9uPSQxIgorICAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3Ig
R29vZ2xlIFRlc3QgYXQgbGVhc3QgdmVyc2lvbiA+PSAkMV0pXSwKKyAgICAgICAgW19ndGVzdF9t
aW5fdmVyc2lvbj0iLS1taW4tdmVyc2lvbj0wIgorICAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFtm
b3IgR29vZ2xlIFRlc3RdKV0pCisgICAgICBBU19JRihbJHtHVEVTVF9DT05GSUd9ICR7X2d0ZXN0
X21pbl92ZXJzaW9ufV0sCisgICAgICAgIFtBQ19NU0dfUkVTVUxUKFt5ZXNdKQorICAgICAgICAg
SEFWRV9HVEVTVD0neWVzJ10sCisgICAgICAgIFtBQ19NU0dfUkVTVUxUKFtub10pXSldLAorICAg
ICBbQUNfTVNHX1JFU1VMVChbbm9dKV0pCisgICBBU19JRihbdGVzdCAieCR7SEFWRV9HVEVTVH0i
ID0gInh5ZXMiXSwKKyAgICAgW0dURVNUX0NQUEZMQUdTPWAke0dURVNUX0NPTkZJR30gLS1jcHBm
bGFnc2AKKyAgICAgIEdURVNUX0NYWEZMQUdTPWAke0dURVNUX0NPTkZJR30gLS1jeHhmbGFnc2AK
KyAgICAgIEdURVNUX0xERkxBR1M9YCR7R1RFU1RfQ09ORklHfSAtLWxkZmxhZ3NgCisgICAgICBH
VEVTVF9MSUJTPWAke0dURVNUX0NPTkZJR30gLS1saWJzYAorICAgICAgR1RFU1RfVkVSU0lPTj1g
JHtHVEVTVF9DT05GSUd9IC0tdmVyc2lvbmAKKyAgICAgIEFDX0RFRklORShbSEFWRV9HVEVTVF0s
WzFdLFtEZWZpbmVkIHdoZW4gR29vZ2xlIFRlc3QgaXMgYXZhaWxhYmxlLl0pXSwKKyAgICAgW0FT
X0lGKFt0ZXN0ICJ4JHtlbmFibGVfZ3Rlc3R9IiA9ICJ4eWVzIl0sCisgICAgICAgIFtBQ19NU0df
RVJST1IoW2RubAorR29vZ2xlIFRlc3Qgd2FzIGVuYWJsZWQsIGJ1dCBubyB2aWFibGUgdmVyc2lv
biBjb3VsZCBiZSBmb3VuZC5dKQorICAgICAgICAgXSldKV0pCitBQ19TVUJTVChbSEFWRV9HVEVT
VF0pCitBTV9DT05ESVRJT05BTChbSEFWRV9HVEVTVF0sW3Rlc3QgIngkSEFWRV9HVEVTVCIgPSAi
eHllcyJdKQorQVNfSUYoW3Rlc3QgIngkSEFWRV9HVEVTVCIgPSAieHllcyJdLAorICBbbTRfaWZ2
YWwoWyQyXSwgWyQyXSldLAorICBbbTRfaWZ2YWwoWyQzXSwgWyQzXSldKQorXSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGV0ZXN0L21ha2UvTWFrZWZpbGUgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9tYWtlL01ha2VmaWxl
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjlhYzc0NDkzYmE1NTI0NjU5N2U5MGI4OThmYWU4NDdhZTM1OGVhYjUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9tYWtlL01ha2VmaWxlCkBAIC0wLDAgKzEsODIg
QEAKKyMgQSBzYW1wbGUgTWFrZWZpbGUgZm9yIGJ1aWxkaW5nIEdvb2dsZSBUZXN0IGFuZCB1c2lu
ZyBpdCBpbiB1c2VyCisjIHRlc3RzLiAgUGxlYXNlIHR3ZWFrIGl0IHRvIHN1aXQgeW91ciBlbnZp
cm9ubWVudCBhbmQgcHJvamVjdC4gIFlvdQorIyBtYXkgd2FudCB0byBtb3ZlIGl0IHRvIHlvdXIg
cHJvamVjdCdzIHJvb3QgZGlyZWN0b3J5LgorIworIyBTWU5PUFNJUzoKKyMKKyMgICBtYWtlIFth
bGxdICAtIG1ha2VzIGV2ZXJ5dGhpbmcuCisjICAgbWFrZSBUQVJHRVQgLSBtYWtlcyB0aGUgZ2l2
ZW4gdGFyZ2V0LgorIyAgIG1ha2UgY2xlYW4gIC0gcmVtb3ZlcyBhbGwgZmlsZXMgZ2VuZXJhdGVk
IGJ5IG1ha2UuCisKKyMgUGxlYXNlIHR3ZWFrIHRoZSBmb2xsb3dpbmcgdmFyaWFibGUgZGVmaW5p
dGlvbnMgYXMgbmVlZGVkIGJ5IHlvdXIKKyMgcHJvamVjdCwgZXhjZXB0IEdURVNUX0hFQURFUlMs
IHdoaWNoIHlvdSBjYW4gdXNlIGluIHlvdXIgb3duIHRhcmdldHMKKyMgYnV0IHNob3VsZG4ndCBt
b2RpZnkuCisKKyMgUG9pbnRzIHRvIHRoZSByb290IG9mIEdvb2dsZSBUZXN0LCByZWxhdGl2ZSB0
byB3aGVyZSB0aGlzIGZpbGUgaXMuCisjIFJlbWVtYmVyIHRvIHR3ZWFrIHRoaXMgaWYgeW91IG1v
dmUgdGhpcyBmaWxlLgorR1RFU1RfRElSID0gLi4KKworIyBXaGVyZSB0byBmaW5kIHVzZXIgY29k
ZS4KK1VTRVJfRElSID0gLi4vc2FtcGxlcworCisjIEZsYWdzIHBhc3NlZCB0byB0aGUgcHJlcHJv
Y2Vzc29yLgorIyBTZXQgR29vZ2xlIFRlc3QncyBoZWFkZXIgZGlyZWN0b3J5IGFzIGEgc3lzdGVt
IGRpcmVjdG9yeSwgc3VjaCB0aGF0CisjIHRoZSBjb21waWxlciBkb2Vzbid0IGdlbmVyYXRlIHdh
cm5pbmdzIGluIEdvb2dsZSBUZXN0IGhlYWRlcnMuCitDUFBGTEFHUyArPSAtaXN5c3RlbSAkKEdU
RVNUX0RJUikvaW5jbHVkZQorCisjIEZsYWdzIHBhc3NlZCB0byB0aGUgQysrIGNvbXBpbGVyLgor
Q1hYRkxBR1MgKz0gLWcgLVdhbGwgLVdleHRyYSAtcHRocmVhZAorCisjIEFsbCB0ZXN0cyBwcm9k
dWNlZCBieSB0aGlzIE1ha2VmaWxlLiAgUmVtZW1iZXIgdG8gYWRkIG5ldyB0ZXN0cyB5b3UKKyMg
Y3JlYXRlZCB0byB0aGUgbGlzdC4KK1RFU1RTID0gc2FtcGxlMV91bml0dGVzdAorCisjIEFsbCBH
b29nbGUgVGVzdCBoZWFkZXJzLiAgVXN1YWxseSB5b3Ugc2hvdWxkbid0IGNoYW5nZSB0aGlzCisj
IGRlZmluaXRpb24uCitHVEVTVF9IRUFERVJTID0gJChHVEVTVF9ESVIpL2luY2x1ZGUvZ3Rlc3Qv
Ki5oIFwKKyAgICAgICAgICAgICAgICAkKEdURVNUX0RJUikvaW5jbHVkZS9ndGVzdC9pbnRlcm5h
bC8qLmgKKworIyBIb3VzZS1rZWVwaW5nIGJ1aWxkIHRhcmdldHMuCisKK2FsbCA6ICQoVEVTVFMp
CisKK2NsZWFuIDoKKwlybSAtZiAkKFRFU1RTKSBndGVzdC5hIGd0ZXN0X21haW4uYSAqLm8KKwor
IyBCdWlsZHMgZ3Rlc3QuYSBhbmQgZ3Rlc3RfbWFpbi5hLgorCisjIFVzdWFsbHkgeW91IHNob3Vs
ZG4ndCB0d2VhayBzdWNoIGludGVybmFsIHZhcmlhYmxlcywgaW5kaWNhdGVkIGJ5IGEKKyMgdHJh
aWxpbmcgXy4KK0dURVNUX1NSQ1NfID0gJChHVEVTVF9ESVIpL3NyYy8qLmNjICQoR1RFU1RfRElS
KS9zcmMvKi5oICQoR1RFU1RfSEVBREVSUykKKworIyBGb3Igc2ltcGxpY2l0eSBhbmQgdG8gYXZv
aWQgZGVwZW5kaW5nIG9uIEdvb2dsZSBUZXN0J3MKKyMgaW1wbGVtZW50YXRpb24gZGV0YWlscywg
dGhlIGRlcGVuZGVuY2llcyBzcGVjaWZpZWQgYmVsb3cgYXJlCisjIGNvbnNlcnZhdGl2ZSBhbmQg
bm90IG9wdGltaXplZC4gIFRoaXMgaXMgZmluZSBhcyBHb29nbGUgVGVzdAorIyBjb21waWxlcyBm
YXN0IGFuZCBmb3Igb3JkaW5hcnkgdXNlcnMgaXRzIHNvdXJjZSByYXJlbHkgY2hhbmdlcy4KK2d0
ZXN0LWFsbC5vIDogJChHVEVTVF9TUkNTXykKKwkkKENYWCkgJChDUFBGTEFHUykgLUkkKEdURVNU
X0RJUikgJChDWFhGTEFHUykgLWMgXAorICAgICAgICAgICAgJChHVEVTVF9ESVIpL3NyYy9ndGVz
dC1hbGwuY2MKKworZ3Rlc3RfbWFpbi5vIDogJChHVEVTVF9TUkNTXykKKwkkKENYWCkgJChDUFBG
TEFHUykgLUkkKEdURVNUX0RJUikgJChDWFhGTEFHUykgLWMgXAorICAgICAgICAgICAgJChHVEVT
VF9ESVIpL3NyYy9ndGVzdF9tYWluLmNjCisKK2d0ZXN0LmEgOiBndGVzdC1hbGwubworCSQoQVIp
ICQoQVJGTEFHUykgJEAgJF4KKworZ3Rlc3RfbWFpbi5hIDogZ3Rlc3QtYWxsLm8gZ3Rlc3RfbWFp
bi5vCisJJChBUikgJChBUkZMQUdTKSAkQCAkXgorCisjIEJ1aWxkcyBhIHNhbXBsZSB0ZXN0LiAg
QSB0ZXN0IHNob3VsZCBsaW5rIHdpdGggZWl0aGVyIGd0ZXN0LmEgb3IKKyMgZ3Rlc3RfbWFpbi5h
LCBkZXBlbmRpbmcgb24gd2hldGhlciBpdCBkZWZpbmVzIGl0cyBvd24gbWFpbigpCisjIGZ1bmN0
aW9uLgorCitzYW1wbGUxLm8gOiAkKFVTRVJfRElSKS9zYW1wbGUxLmNjICQoVVNFUl9ESVIpL3Nh
bXBsZTEuaCAkKEdURVNUX0hFQURFUlMpCisJJChDWFgpICQoQ1BQRkxBR1MpICQoQ1hYRkxBR1Mp
IC1jICQoVVNFUl9ESVIpL3NhbXBsZTEuY2MKKworc2FtcGxlMV91bml0dGVzdC5vIDogJChVU0VS
X0RJUikvc2FtcGxlMV91bml0dGVzdC5jYyBcCisgICAgICAgICAgICAgICAgICAgICAkKFVTRVJf
RElSKS9zYW1wbGUxLmggJChHVEVTVF9IRUFERVJTKQorCSQoQ1hYKSAkKENQUEZMQUdTKSAkKENY
WEZMQUdTKSAtYyAkKFVTRVJfRElSKS9zYW1wbGUxX3VuaXR0ZXN0LmNjCisKK3NhbXBsZTFfdW5p
dHRlc3QgOiBzYW1wbGUxLm8gc2FtcGxlMV91bml0dGVzdC5vIGd0ZXN0X21haW4uYQorCSQoQ1hY
KSAkKENQUEZMQUdTKSAkKENYWEZMQUdTKSAtbHB0aHJlYWQgJF4gLW8gJEAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L21zdmMvZ3Rlc3QtbWQuc2xuIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvbXN2Yy9ndGVzdC1t
ZC5zbG4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODI5YjQwMTlhZTNhZTUxZmQwMDYwM2U5MzQ3OTNjNGRiODM4NTBj
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L21zdmMvZ3Rlc3QtbWQuc2xuCkBAIC0w
LDAgKzEsNDUgQEAKK01pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1h
dCBWZXJzaW9uIDguMDAKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkx
QkM5NDJ9IikgPSAiZ3Rlc3QtbWQiLCAiZ3Rlc3QtbWQudmNwcm9qIiwgIntDOEY2QzE3Mi01NkYy
LTRFNzYtQjVGQS1DM0I0MjNCMzFCRTh9IgorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRl
bmNpZXMpID0gcG9zdFByb2plY3QKKwlFbmRQcm9qZWN0U2VjdGlvbgorRW5kUHJvamVjdAorUHJv
amVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJndGVzdF9t
YWluLW1kIiwgImd0ZXN0X21haW4tbWQudmNwcm9qIiwgInszQUY1NEM4QS0xMEJGLTQzMzItOTE0
Ny1GNjhFRDk4NjIwMzN9IgorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0g
cG9zdFByb2plY3QKKwlFbmRQcm9qZWN0U2VjdGlvbgorRW5kUHJvamVjdAorUHJvamVjdCgiezhC
QzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJndGVzdF9wcm9kX3Rlc3Qt
bWQiLCAiZ3Rlc3RfcHJvZF90ZXN0LW1kLnZjcHJvaiIsICJ7MjQ4NDg1NTEtRUY0Ri00N0U4LTlB
OUQtRUE0RDQ5QkMzRUNCfSIKKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9
IHBvc3RQcm9qZWN0CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKK1Byb2plY3QoIns4
QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiZ3Rlc3RfdW5pdHRlc3Qt
bWQiLCAiZ3Rlc3RfdW5pdHRlc3QtbWQudmNwcm9qIiwgIns0RDlGREZCNS05ODZBLTQxMzktODIz
Qy1GNEVFMEVENDgxQTJ9IgorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0g
cG9zdFByb2plY3QKKwlFbmRQcm9qZWN0U2VjdGlvbgorRW5kUHJvamVjdAorR2xvYmFsCisJR2xv
YmFsU2VjdGlvbihTb2x1dGlvbkNvbmZpZ3VyYXRpb24pID0gcHJlU29sdXRpb24KKwkJRGVidWcg
PSBEZWJ1ZworCQlSZWxlYXNlID0gUmVsZWFzZQorCUVuZEdsb2JhbFNlY3Rpb24KKwlHbG9iYWxT
ZWN0aW9uKFByb2plY3RDb25maWd1cmF0aW9uKSA9IHBvc3RTb2x1dGlvbgorCQl7QzhGNkMxNzIt
NTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU4fS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4z
MgorCQl7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU4fS5EZWJ1Zy5CdWlsZC4w
ID0gRGVidWd8V2luMzIKKwkJe0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFOH0u
UmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXtDOEY2QzE3Mi01NkYyLTRFNzYt
QjVGQS1DM0I0MjNCMzFCRTh9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezNB
RjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzM30uRGVidWcuQWN0aXZlQ2ZnID0gRGVi
dWd8V2luMzIKKwkJezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzM30uRGVidWcu
QnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4
NjIwMzN9LlJlbGVhc2UuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7M0FGNTRDOEEtMTBC
Ri00MzMyLTkxNDctRjY4RUQ5ODYyMDMzfS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMy
CisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0J9LkRlYnVnLkFjdGl2ZUNm
ZyA9IERlYnVnfFdpbjMyCisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0J9
LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQt
RUE0RDQ5QkMzRUNCfS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezI0ODQ4
NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0OUJDM0VDQn0uUmVsZWFzZS5CdWlsZC4wID0gUmVsZWFz
ZXxXaW4zMgorCQl7NEQ5RkRGQjUtOTg2QS00MTM5LTgyM0MtRjRFRTBFRDQ4MUEyfS5EZWJ1Zy5B
Y3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7NEQ5RkRGQjUtOTg2QS00MTM5LTgyM0MtRjRFRTBF
RDQ4MUEyfS5EZWJ1Zy5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezREOUZERkI1LTk4NkEtNDEz
OS04MjNDLUY0RUUwRUQ0ODFBMn0uUmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJ
CXs0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTJ9LlJlbGVhc2UuQnVpbGQuMCA9
IFJlbGVhc2V8V2luMzIKKwlFbmRHbG9iYWxTZWN0aW9uCisJR2xvYmFsU2VjdGlvbihFeHRlbnNp
YmlsaXR5R2xvYmFscykgPSBwb3N0U29sdXRpb24KKwlFbmRHbG9iYWxTZWN0aW9uCisJR2xvYmFs
U2VjdGlvbihFeHRlbnNpYmlsaXR5QWRkSW5zKSA9IHBvc3RTb2x1dGlvbgorCUVuZEdsb2JhbFNl
Y3Rpb24KK0VuZEdsb2JhbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvbXN2Yy9ndGVzdC1tZC52
Y3Byb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xldGVzdC9tc3ZjL2d0ZXN0LW1kLnZjcHJvagpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzE0
OTZjY2JmMGM5NjZlNzk1ODNjMGZjNzRhODk5YzE3NTA5ZmY2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZXRlc3QvbXN2Yy9ndGVzdC1tZC52Y3Byb2oKQEAgLTAsMCArMSwxMjYgQEAKKzw/eG1s
IHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/PgorPFZpc3VhbFN0dWRpb1By
b2plY3QKKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKKwlWZXJzaW9uPSI3LjEwIgorCU5hbWU9
Imd0ZXN0LW1kIgorCVByb2plY3RHVUlEPSJ7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIz
QjMxQkU4fSIKKwlLZXl3b3JkPSJXaW4zMlByb2oiPgorCTxQbGF0Zm9ybXM+CisJCTxQbGF0Zm9y
bQorCQkJTmFtZT0iV2luMzIiLz4KKwk8L1BsYXRmb3Jtcz4KKwk8Q29uZmlndXJhdGlvbnM+CisJ
CTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9y
eT0iJChTb2x1dGlvbk5hbWUpLyQoQ29uZmlndXJhdGlvbk5hbWUpIgorCQkJSW50ZXJtZWRpYXRl
RGlyZWN0b3J5PSIkKE91dERpcikvJChQcm9qZWN0TmFtZSkiCisJCQlDb25maWd1cmF0aW9uVHlw
ZT0iNCIKKwkJCUNoYXJhY3RlclNldD0iMiIKKwkJCVJlZmVyZW5jZXNQYXRoPSIiPgorCQkJPFRv
b2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMCIKKwkJ
CQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0RFQlVHO19MSUIiCisJCQkJTWluaW1h
bFJlYnVpbGQ9IlRSVUUiCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgorCQkJCVJ1bnRpbWVM
aWJyYXJ5PSIzIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIgorCQkJCVdhcm5pbmdMZXZl
bD0iMyIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IkZBTFNFIgorCQkJCURl
YnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjQiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21C
dWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaWJyYXJpYW5Ub29sIgorCQkJCU91
dHB1dEZpbGU9IiQoT3V0RGlyKS9ndGVzdGQubGliIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZD
TUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4K
KwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJ
CQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNv
dXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94
eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9y
VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9v
bCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJh
dG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1l
PSJSZWxlYXNlfFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIkKFNvbHV0aW9uTmFtZSkvJChD
b25maWd1cmF0aW9uTmFtZSkiCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiQoT3V0RGlyKS8k
KFByb2plY3ROYW1lKSIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0IgorCQkJQ2hhcmFjdGVyU2V0
PSIyIgorCQkJUmVmZXJlbmNlc1BhdGg9IiZxdW90Oy4uXGluY2x1ZGUmcXVvdDs7JnF1b3Q7Li4m
cXVvdDsiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCVByZXBy
b2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0xJQiIKKwkJCQlSdW50aW1lTGlicmFy
eT0iMiIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMi
CisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJGQUxTRSIKKwkJCQlEZWJ1Z0lu
Zm9ybWF0aW9uRm9ybWF0PSIzIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRU
b29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCIKKwkJCQlPdXRwdXRG
aWxlPSIkKE91dERpcikvZ3Rlc3QubGliIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRv
b2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxU
b29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1l
PSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNv
bXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVy
YXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIv
PgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgor
CQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9v
bCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8UmVmZXJlbmNl
cz4KKwk8L1JlZmVyZW5jZXM+CisJPEZpbGVzPgorCQk8RmlsdGVyCisJCQlOYW1lPSJTb3VyY2Ug
RmlsZXMiCisJCQlGaWx0ZXI9ImNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214
IgorCQkJVW5pcXVlSWRlbnRpZmllcj0iezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUy
QTJGRn0iPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHNyY1xndGVzdC1hbGwuY2Mi
PgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiI+CisJCQkJ
CTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJQWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7Li4mcXVvdDs7JnF1b3Q7Li5caW5jbHVkZSZxdW90OyIv
PgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJ
CU5hbWU9IlJlbGVhc2V8V2luMzIiPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCIKKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90Oy4uJnF1
b3Q7OyZxdW90Oy4uXGluY2x1ZGUmcXVvdDsiLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgor
CQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgorCQkJTmFtZT0iSGVhZGVyIEZpbGVz
IgorCQkJRmlsdGVyPSJoO2hwcDtoeHg7aG07aW5sO2luYzt4c2QiCisJCQlVbmlxdWVJZGVudGlm
aWVyPSJ7OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfSI+CisJCTwvRmlsdGVy
PgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9q
ZWN0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvbXN2Yy9ndGVzdC5zbG4gYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVz
dC9tc3ZjL2d0ZXN0LnNsbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMWIyOTI5NjQ5ZmY2OWExMDllZWE1YjRiN2Y2
ZGNjNzFjNTFjZDRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvbXN2Yy9ndGVzdC5z
bG4KQEAgLTAsMCArMSw0NSBAQAorTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmls
ZSwgRm9ybWF0IFZlcnNpb24gOC4wMAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDEx
LTAwQTBDOTFCQzk0Mn0iKSA9ICJndGVzdCIsICJndGVzdC52Y3Byb2oiLCAie0M4RjZDMTcyLTU2
RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFN30iCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVu
ZGVuY2llcykgPSBwb3N0UHJvamVjdAorCUVuZFByb2plY3RTZWN0aW9uCitFbmRQcm9qZWN0CitQ
cm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImd0ZXN0
X21haW4iLCAiZ3Rlc3RfbWFpbi52Y3Byb2oiLCAiezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2
OEVEOTg2MjAzMn0iCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0
UHJvamVjdAorCUVuZFByb2plY3RTZWN0aW9uCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNF
QjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImd0ZXN0X3VuaXR0ZXN0IiwgImd0
ZXN0X3VuaXR0ZXN0LnZjcHJvaiIsICJ7NEQ5RkRGQjUtOTg2QS00MTM5LTgyM0MtRjRFRTBFRDQ4
MUExfSIKKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0
CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRB
LTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiZ3Rlc3RfcHJvZF90ZXN0IiwgImd0ZXN0X3By
b2RfdGVzdC52Y3Byb2oiLCAiezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0OUJDM0VDQX0i
CisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAorCUVu
ZFByb2plY3RTZWN0aW9uCitFbmRQcm9qZWN0CitHbG9iYWwKKwlHbG9iYWxTZWN0aW9uKFNvbHV0
aW9uQ29uZmlndXJhdGlvbikgPSBwcmVTb2x1dGlvbgorCQlEZWJ1ZyA9IERlYnVnCisJCVJlbGVh
c2UgPSBSZWxlYXNlCisJRW5kR2xvYmFsU2VjdGlvbgorCUdsb2JhbFNlY3Rpb24oUHJvamVjdENv
bmZpZ3VyYXRpb24pID0gcG9zdFNvbHV0aW9uCisJCXtDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1D
M0I0MjNCMzFCRTd9LkRlYnVnLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXtDOEY2QzE3Mi01
NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTd9LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgor
CQl7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU3fS5SZWxlYXNlLkFjdGl2ZUNm
ZyA9IFJlbGVhc2V8V2luMzIKKwkJe0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJF
N30uUmVsZWFzZS5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7M0FGNTRDOEEtMTBCRi00MzMy
LTkxNDctRjY4RUQ5ODYyMDMyfS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7M0FG
NTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMyfS5EZWJ1Zy5CdWlsZC4wID0gRGVidWd8
V2luMzIKKwkJezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzMn0uUmVsZWFzZS5B
Y3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhF
RDk4NjIwMzJ9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezREOUZERkI1LTk4
NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMX0uRGVidWcuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIK
KwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMX0uRGVidWcuQnVpbGQuMCA9
IERlYnVnfFdpbjMyCisJCXs0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTF9LlJl
bGVhc2UuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7NEQ5RkRGQjUtOTg2QS00MTM5LTgy
M0MtRjRFRTBFRDQ4MUExfS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXsyNDg0
ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9LkRlYnVnLkFjdGl2ZUNmZyA9IERlYnVn
fFdpbjMyCisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9LkRlYnVnLkJ1
aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMz
RUNBfS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezI0ODQ4NTUxLUVGNEYt
NDdFOC05QTlELUVBNEQ0OUJDM0VDQX0uUmVsZWFzZS5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgor
CUVuZEdsb2JhbFNlY3Rpb24KKwlHbG9iYWxTZWN0aW9uKEV4dGVuc2liaWxpdHlHbG9iYWxzKSA9
IHBvc3RTb2x1dGlvbgorCUVuZEdsb2JhbFNlY3Rpb24KKwlHbG9iYWxTZWN0aW9uKEV4dGVuc2li
aWxpdHlBZGRJbnMpID0gcG9zdFNvbHV0aW9uCisJRW5kR2xvYmFsU2VjdGlvbgorRW5kR2xvYmFs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9tc3ZjL2d0ZXN0LnZjcHJvaiBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0
L21zdmMvZ3Rlc3QudmNwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0OWU3ZTA5ZWE3ZThhOTEwNGQ5YjQ1MjIx
OTRiMjRiM2ZiOGU4OTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9tc3ZjL2d0ZXN0
LnZjcHJvagpAQCAtMCwwICsxLDEyNiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0i
V2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvamVjdAorCVByb2plY3RUeXBlPSJWaXN1
YWwgQysrIgorCVZlcnNpb249IjcuMTAiCisJTmFtZT0iZ3Rlc3QiCisJUHJvamVjdEdVSUQ9IntD
OEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTd9IgorCUtleXdvcmQ9IldpbjMyUHJv
aiI+CisJPFBsYXRmb3Jtcz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJXaW4zMiIvPgorCTwvUGxh
dGZvcm1zPgorCTxDb25maWd1cmF0aW9ucz4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRl
YnVnfFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIkKFNvbHV0aW9uTmFtZSkvJChDb25maWd1
cmF0aW9uTmFtZSkiCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiQoT3V0RGlyKS8kKFByb2pl
Y3ROYW1lKSIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0IgorCQkJQ2hhcmFjdGVyU2V0PSIyIgor
CQkJUmVmZXJlbmNlc1BhdGg9IiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRv
b2wiCisJCQkJT3B0aW1pemF0aW9uPSIwIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJX
SU4zMjtfREVCVUc7X0xJQiIKKwkJCQlNaW5pbWFsUmVidWlsZD0iVFJVRSIKKwkJCQlCYXNpY1J1
bnRpbWVDaGVja3M9IjMiCisJCQkJUnVudGltZUxpYnJhcnk9IjUiCisJCQkJVXNlUHJlY29tcGls
ZWRIZWFkZXI9IjAiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURldGVjdDY0Qml0UG9ydGFi
aWxpdHlQcm9ibGVtcz0iRkFMU0UiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCIvPgor
CQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlO
YW1lPSJWQ0xpYnJhcmlhblRvb2wiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL2d0ZXN0ZC5s
aWIiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlO
YW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1
aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIv
PgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9v
bAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wK
KwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9
IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZD
QXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCTwvQ29uZmlndXJhdGlv
bj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQlPdXRwdXRE
aXJlY3Rvcnk9IiQoU29sdXRpb25OYW1lKS8kKENvbmZpZ3VyYXRpb25OYW1lKSIKKwkJCUludGVy
bWVkaWF0ZURpcmVjdG9yeT0iJChPdXREaXIpLyQoUHJvamVjdE5hbWUpIgorCQkJQ29uZmlndXJh
dGlvblR5cGU9IjQiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiCisJCQlSZWZlcmVuY2VzUGF0aD0iJnF1
b3Q7Li5caW5jbHVkZSZxdW90OzsmcXVvdDsuLiZxdW90OyI+CisJCQk8VG9vbAorCQkJCU5hbWU9
IlZDQ0xDb21waWxlclRvb2wiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05E
RUJVRztfTElCIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSI0IgorCQkJCVVzZVByZWNvbXBpbGVkSGVh
ZGVyPSIwIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5
UHJvYmxlbXM9IkZBTFNFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiLz4KKwkJCTxU
b29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0i
VkNMaWJyYXJpYW5Ub29sIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9ndGVzdC5saWIiLz4K
KwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJW
Q1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZl
bnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJ
PFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJ
CU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlO
YW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFu
YWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXV4aWxp
YXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwk8
L0NvbmZpZ3VyYXRpb25zPgorCTxSZWZlcmVuY2VzPgorCTwvUmVmZXJlbmNlcz4KKwk8RmlsZXM+
CisJCTxGaWx0ZXIKKwkJCU5hbWU9IlNvdXJjZSBGaWxlcyIKKwkJCUZpbHRlcj0iY3BwO2M7Y3h4
O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXgiCisJCQlVbmlxdWVJZGVudGlmaWVyPSJ7NEZD
NzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfSI+CisJCQk8RmlsZQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5cc3JjXGd0ZXN0LWFsbC5jYyI+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJ
CQkJCU5hbWU9IkRlYnVnfFdpbjMyIj4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDsuLiZx
dW90OzsmcXVvdDsuLlxpbmNsdWRlJnF1b3Q7Ii8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
KwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiI+CisJCQkJ
CTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJQWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7Li4mcXVvdDs7JnF1b3Q7Li5caW5jbHVkZSZxdW90OyIv
PgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCQk8
RmlsdGVyCisJCQlOYW1lPSJIZWFkZXIgRmlsZXMiCisJCQlGaWx0ZXI9Img7aHBwO2h4eDtobTtp
bmw7aW5jO3hzZCIKKwkJCVVuaXF1ZUlkZW50aWZpZXI9Ins5Mzk5NTM4MC04OUJELTRiMDQtODhF
Qi02MjVGQkU1MkVCRkJ9Ij4KKwkJPC9GaWx0ZXI+CisJPC9GaWxlcz4KKwk8R2xvYmFscz4KKwk8
L0dsb2JhbHM+Cis8L1Zpc3VhbFN0dWRpb1Byb2plY3Q+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVz
dC9tc3ZjL2d0ZXN0X21haW4tbWQudmNwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvbXN2Yy9ndGVzdF9tYWlu
LW1kLnZjcHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDA5NTZjZDNkMjZiMDgyYTIzMDUyNzljYzlhNzhjZTdm
NzZiMTJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvbXN2Yy9ndGVzdF9tYWluLW1k
LnZjcHJvagpAQCAtMCwwICsxLDEyOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0i
V2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvamVjdAorCVByb2plY3RUeXBlPSJWaXN1
YWwgQysrIgorCVZlcnNpb249IjcuMTAiCisJTmFtZT0iZ3Rlc3RfbWFpbi1tZCIKKwlQcm9qZWN0
R1VJRD0iezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzM30iCisJS2V5d29yZD0i
V2luMzJQcm9qIj4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIi8+
CisJPC9QbGF0Zm9ybXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJ
TmFtZT0iRGVidWd8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9IiQoU29sdXRpb25OYW1lKS8k
KENvbmZpZ3VyYXRpb25OYW1lKSIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJChPdXREaXIp
LyQoUHJvamVjdE5hbWUpIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjQiCisJCQlDaGFyYWN0ZXJT
ZXQ9IjIiCisJCQlSZWZlcmVuY2VzUGF0aD0iIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjAiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnM9IldJTjMyO19ERUJVRztfTElCIgorCQkJCU1pbmltYWxSZWJ1aWxkPSJUUlVFIgorCQkJ
CUJhc2ljUnVudGltZUNoZWNrcz0iMyIKKwkJCQlSdW50aW1lTGlicmFyeT0iMyIKKwkJCQlVc2VQ
cmVjb21waWxlZEhlYWRlcj0iMCIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRC
aXRQb3J0YWJpbGl0eVByb2JsZW1zPSJGQUxTRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0
PSI0Ii8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9v
bAorCQkJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikv
JChQcm9qZWN0TmFtZSlkLmxpYiIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+
CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAor
CQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQ
cmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxl
clRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JU
b29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJ
CTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJCTxU
b29sCisJCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4K
KwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXxX
aW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iJChTb2x1dGlvbk5hbWUpLyQoQ29uZmlndXJhdGlv
bk5hbWUpIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIkKE91dERpcikvJChQcm9qZWN0TmFt
ZSkiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iNCIKKwkJCUNoYXJhY3RlclNldD0iMiIKKwkJCVJl
ZmVyZW5jZXNQYXRoPSImcXVvdDsuLlxpbmNsdWRlJnF1b3Q7OyZxdW90Oy4uJnF1b3Q7Ij4KKwkJ
CTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZp
bml0aW9ucz0iV0lOMzI7TkRFQlVHO19MSUIiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJ
VXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURldGVj
dDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iRkFMU0UiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZv
cm1hdD0iMyIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJ
PFRvb2wKKwkJCQlOYW1lPSJWQ0xpYnJhcmlhblRvb2wiCisJCQkJT3V0cHV0RmlsZT0iJChPdXRE
aXIpLyQoUHJvamVjdE5hbWUpLmxpYiIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29s
Ii8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9v
bAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0i
VkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21w
aWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0
b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4K
KwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJ
CTxUb29sCisJCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wi
Lz4KKwkJPC9Db25maWd1cmF0aW9uPgorCTwvQ29uZmlndXJhdGlvbnM+CisJPFJlZmVyZW5jZXM+
CisJCTxQcm9qZWN0UmVmZXJlbmNlCisJCQlSZWZlcmVuY2VkUHJvamVjdElkZW50aWZpZXI9IntD
OEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTh9IgorCQkJTmFtZT0iZ3Rlc3QtbWQi
Lz4KKwk8L1JlZmVyZW5jZXM+CisJPEZpbGVzPgorCQk8RmlsdGVyCisJCQlOYW1lPSJTb3VyY2Ug
RmlsZXMiCisJCQlGaWx0ZXI9ImNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214
IgorCQkJVW5pcXVlSWRlbnRpZmllcj0iezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUy
QTJGRn0iPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHNyY1xndGVzdF9tYWluLmNj
Ij4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiPgorCQkJ
CQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCUFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90Oy4uJnF1b3Q7OyZxdW90Oy4uXGluY2x1ZGUmcXVvdDsi
Lz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJ
CQlOYW1lPSJSZWxlYXNlfFdpbjMyIj4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDsuLiZx
dW90OzsmcXVvdDsuLlxpbmNsdWRlJnF1b3Q7Ii8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
KwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IkhlYWRlciBGaWxl
cyIKKwkJCUZpbHRlcj0iaDtocHA7aHh4O2htO2lubDtpbmM7eHNkIgorCQkJVW5pcXVlSWRlbnRp
Zmllcj0iezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn0iPgorCQk8L0ZpbHRl
cj4KKwk8L0ZpbGVzPgorCTxHbG9iYWxzPgorCTwvR2xvYmFscz4KKzwvVmlzdWFsU3R1ZGlvUHJv
amVjdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L21zdmMvZ3Rlc3RfbWFpbi52Y3Byb2ogYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xldGVzdC9tc3ZjL2d0ZXN0X21haW4udmNwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3ZTlmNDE3Njg1
ZmYzNzU4NDIwMDAxZGE5NDMyZDQwMzcxZmJjYWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC9tc3ZjL2d0ZXN0X21haW4udmNwcm9qCkBAIC0wLDAgKzEsMTI5IEBACis8P3htbCB2ZXJz
aW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0
CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iNy4xMCIKKwlOYW1lPSJndGVz
dF9tYWluIgorCVByb2plY3RHVUlEPSJ7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYy
MDMyfSIKKwlLZXl3b3JkPSJXaW4zMlByb2oiPgorCTxQbGF0Zm9ybXM+CisJCTxQbGF0Zm9ybQor
CQkJTmFtZT0iV2luMzIiLz4KKwk8L1BsYXRmb3Jtcz4KKwk8Q29uZmlndXJhdGlvbnM+CisJCTxD
b25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0i
JChTb2x1dGlvbk5hbWUpLyQoQ29uZmlndXJhdGlvbk5hbWUpIgorCQkJSW50ZXJtZWRpYXRlRGly
ZWN0b3J5PSIkKE91dERpcikvJChQcm9qZWN0TmFtZSkiCisJCQlDb25maWd1cmF0aW9uVHlwZT0i
NCIKKwkJCUNoYXJhY3RlclNldD0iMiIKKwkJCVJlZmVyZW5jZXNQYXRoPSIiPgorCQkJPFRvb2wK
KwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMCIKKwkJCQlQ
cmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0RFQlVHO19MSUIiCisJCQkJTWluaW1hbFJl
YnVpbGQ9IlRSVUUiCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgorCQkJCVJ1bnRpbWVMaWJy
YXJ5PSI1IgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIgorCQkJCVdhcm5pbmdMZXZlbD0i
MyIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IkZBTFNFIgorCQkJCURlYnVn
SW5mb3JtYXRpb25Gb3JtYXQ9IjQiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWls
ZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaWJyYXJpYW5Ub29sIgorCQkJCU91dHB1
dEZpbGU9IiQoT3V0RGlyKS8kKFByb2plY3ROYW1lKWQubGliIi8+CisJCQk8VG9vbAorCQkJCU5h
bWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRv
b2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRv
b2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0i
VkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZp
Y2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2Vu
ZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJh
dG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVy
R2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJ
CQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIkKFNvbHV0aW9uTmFt
ZSkvJChDb25maWd1cmF0aW9uTmFtZSkiCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiQoT3V0
RGlyKS8kKFByb2plY3ROYW1lKSIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0IgorCQkJQ2hhcmFj
dGVyU2V0PSIyIgorCQkJUmVmZXJlbmNlc1BhdGg9IiZxdW90Oy4uXGluY2x1ZGUmcXVvdDs7JnF1
b3Q7Li4mcXVvdDsiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJ
CVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0xJQiIKKwkJCQlSdW50aW1l
TGlicmFyeT0iNCIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKKwkJCQlXYXJuaW5nTGV2
ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJGQUxTRSIKKwkJCQlE
ZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9t
QnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCIKKwkJCQlP
dXRwdXRGaWxlPSIkKE91dERpcikvJChQcm9qZWN0TmFtZSkubGliIi8+CisJCQk8VG9vbAorCQkJ
CU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVu
dFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJ
PFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFt
ZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNl
cnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRh
R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2Vu
ZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFw
cGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9u
cz4KKwk8UmVmZXJlbmNlcz4KKwkJPFByb2plY3RSZWZlcmVuY2UKKwkJCVJlZmVyZW5jZWRQcm9q
ZWN0SWRlbnRpZmllcj0ie0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFN30iCisJ
CQlOYW1lPSJndGVzdCIvPgorCTwvUmVmZXJlbmNlcz4KKwk8RmlsZXM+CisJCTxGaWx0ZXIKKwkJ
CU5hbWU9IlNvdXJjZSBGaWxlcyIKKwkJCUZpbHRlcj0iY3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hw
ajtiYXQ7YXNtO2FzbXgiCisJCQlVbmlxdWVJZGVudGlmaWVyPSJ7NEZDNzM3RjEtQzdBNS00Mzc2
LUEwNjYtMkEzMkQ3NTJBMkZGfSI+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3Jj
XGd0ZXN0X21haW4uY2MiPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1
Z3xXaW4zMiI+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJ
CQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7Li4mcXVvdDs7JnF1b3Q7Li5c
aW5jbHVkZSZxdW90OyIvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25m
aWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiPgorCQkJCQk8VG9vbAorCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXM9IiZxdW90Oy4uJnF1b3Q7OyZxdW90Oy4uXGluY2x1ZGUmcXVvdDsiLz4KKwkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgorCQkJTmFt
ZT0iSGVhZGVyIEZpbGVzIgorCQkJRmlsdGVyPSJoO2hwcDtoeHg7aG07aW5sO2luYzt4c2QiCisJ
CQlVbmlxdWVJZGVudGlmaWVyPSJ7OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZC
fSI+CisJCTwvRmlsdGVyPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9W
aXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvbXN2Yy9ndGVzdF9w
cm9kX3Rlc3QtbWQudmNwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvbXN2Yy9ndGVzdF9wcm9kX3Rlc3QtbWQu
dmNwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQwNzFkMjhmZWQwMWNjZmE5MzMwOTFjNzExN2YyYTU4NDAxYmZl
MDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9tc3ZjL2d0ZXN0X3Byb2RfdGVzdC1t
ZC52Y3Byb2oKQEAgLTAsMCArMSwxNjQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9
IldpbmRvd3MtMTI1MiI/PgorPFZpc3VhbFN0dWRpb1Byb2plY3QKKwlQcm9qZWN0VHlwZT0iVmlz
dWFsIEMrKyIKKwlWZXJzaW9uPSI3LjEwIgorCU5hbWU9Imd0ZXN0X3Byb2RfdGVzdC1tZCIKKwlQ
cm9qZWN0R1VJRD0iezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0OUJDM0VDQn0iCisJS2V5
d29yZD0iV2luMzJQcm9qIj4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9Ildp
bjMyIi8+CisJPC9QbGF0Zm9ybXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlv
bgorCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9IiQoU29sdXRpb25O
YW1lKS8kKENvbmZpZ3VyYXRpb25OYW1lKSIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJChP
dXREaXIpLyQoUHJvamVjdE5hbWUpIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlDaGFy
YWN0ZXJTZXQ9IjIiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJ
CU9wdGltaXphdGlvbj0iMCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0RF
QlVHO19DT05TT0xFIgorCQkJCU1pbmltYWxSZWJ1aWxkPSJUUlVFIgorCQkJCUJhc2ljUnVudGlt
ZUNoZWNrcz0iMyIKKwkJCQlSdW50aW1lTGlicmFyeT0iMyIKKwkJCQlVc2VQcmVjb21waWxlZEhl
YWRlcj0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0
eVByb2JsZW1zPSJGQUxTRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSI0Ii8+CisJCQk8
VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9
IlZDTGlua2VyVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvZ3Rlc3RfcHJvZF90ZXN0
LmV4ZSIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0
aW9uPSJUUlVFIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS9ndGVzdF9wcm9k
X3Rlc3QucGRiIgorCQkJCVN1YlN5c3RlbT0iMSIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+CisJ
CQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQ
b3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50
VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxU
b29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlO
YW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFt
ZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRl
cGxveW1lbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5l
cmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBw
ZXJHZW5lcmF0b3JUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24K
KwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9IiQoU29sdXRpb25O
YW1lKS8kKENvbmZpZ3VyYXRpb25OYW1lKSIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJChP
dXREaXIpLyQoUHJvamVjdE5hbWUpIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlDaGFy
YWN0ZXJTZXQ9IjIiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJ
CVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0NPTlNPTEUiCisJCQkJUnVu
dGltZUxpYnJhcnk9IjIiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjMiCisJCQkJV2Fybmlu
Z0xldmVsPSIzIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iRkFMU0UiCisJ
CQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1
c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJ
T3V0cHV0RmlsZT0iJChPdXREaXIpL2d0ZXN0X3Byb2RfdGVzdC5leGUiCisJCQkJTGlua0luY3Jl
bWVudGFsPSIxIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlTdWJT
eXN0ZW09IjEiCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIgorCQkJCUVuYWJsZUNPTURBVEZv
bGRpbmc9IjIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJW
Q01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+
CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJ
CQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVz
b3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJv
eHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRv
clRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQkJ
PFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRv
b2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgor
CQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8UmVmZXJlbmNlcz4KKwkJ
PFByb2plY3RSZWZlcmVuY2UKKwkJCVJlZmVyZW5jZWRQcm9qZWN0SWRlbnRpZmllcj0iezNBRjU0
QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzM30iCisJCQlOYW1lPSJndGVzdF9tYWluLW1k
Ii8+CisJPC9SZWZlcmVuY2VzPgorCTxGaWxlcz4KKwkJPEZpbHRlcgorCQkJTmFtZT0iU291cmNl
IEZpbGVzIgorCQkJRmlsdGVyPSJjcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNt
eCIKKwkJCVVuaXF1ZUlkZW50aWZpZXI9Ins0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1
MkEyRkZ9Ij4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx0ZXN0XGd0ZXN0X3Byb2Rf
dGVzdC5jYyI+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMy
Ij4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQlBZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDsuLiZxdW90OzsmcXVvdDsuLlxpbmNsdWRl
JnF1b3Q7IgorCQkJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiLz4KKwkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdp
bjMyIj4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQlB
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDsuLiZxdW90OzsmcXVvdDsuLlxpbmNs
dWRlJnF1b3Q7IgorCQkJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiLz4KKwkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHRlc3RccHJvZHVjdGlvbi5jYyI+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9
IkRlYnVnfFdpbjMyIj4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
CisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDsuLiZxdW90OzsmcXVv
dDsuLlxpbmNsdWRlJnF1b3Q7IgorCQkJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiLz4KKwkJ
CQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1l
PSJSZWxlYXNlfFdpbjMyIj4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRv
b2wiCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDsuLiZxdW90Ozsm
cXVvdDsuLlxpbmNsdWRlJnF1b3Q7IgorCQkJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiLz4K
KwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwkJPEZp
bHRlcgorCQkJTmFtZT0iSGVhZGVyIEZpbGVzIgorCQkJRmlsdGVyPSJoO2hwcDtoeHg7aG07aW5s
O2luYzt4c2QiCisJCQlVbmlxdWVJZGVudGlmaWVyPSJ7OTM5OTUzODAtODlCRC00YjA0LTg4RUIt
NjI1RkJFNTJFQkZCfSI+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cdGVzdFxwcm9k
dWN0aW9uLmgiPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwk8L0ZpbGVzPgorCTxHbG9iYWxz
PgorCTwvR2xvYmFscz4KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGV0ZXN0L21zdmMvZ3Rlc3RfcHJvZF90ZXN0LnZjcHJvaiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L21zdmMvZ3Rl
c3RfcHJvZF90ZXN0LnZjcHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OThjNzU4MDhhMTYyNGU2NzQ0YTJiMjE3
OTYwYzA2ZTIxMWZhZmY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvbXN2Yy9ndGVz
dF9wcm9kX3Rlc3QudmNwcm9qCkBAIC0wLDAgKzEsMTY0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAi
IGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVj
dFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iNy4xMCIKKwlOYW1lPSJndGVzdF9wcm9kX3Rl
c3QiCisJUHJvamVjdEdVSUQ9InsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9
IgorCUtleXdvcmQ9IldpbjMyUHJvaiI+CisJPFBsYXRmb3Jtcz4KKwkJPFBsYXRmb3JtCisJCQlO
YW1lPSJXaW4zMiIvPgorCTwvUGxhdGZvcm1zPgorCTxDb25maWd1cmF0aW9ucz4KKwkJPENvbmZp
Z3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIkKFNv
bHV0aW9uTmFtZSkvJChDb25maWd1cmF0aW9uTmFtZSkiCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rv
cnk9IiQoT3V0RGlyKS8kKFByb2plY3ROYW1lKSIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgor
CQkJQ2hhcmFjdGVyU2V0PSIyIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCIKKwkJCQlPcHRpbWl6YXRpb249IjAiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJ
TjMyO19ERUJVRztfQ09OU09MRSIKKwkJCQlNaW5pbWFsUmVidWlsZD0iVFJVRSIKKwkJCQlCYXNp
Y1J1bnRpbWVDaGVja3M9IjMiCisJCQkJUnVudGltZUxpYnJhcnk9IjUiCisJCQkJVXNlUHJlY29t
cGlsZWRIZWFkZXI9IjMiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURldGVjdDY0Qml0UG9y
dGFiaWxpdHlQcm9ibGVtcz0iRkFMU0UiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCIv
PgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJ
CQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL2d0ZXN0X3By
b2RfdGVzdC5leGUiCisJCQkJTGlua0luY3JlbWVudGFsPSIyIgorCQkJCUdlbmVyYXRlRGVidWdJ
bmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikvZ3Rl
c3RfcHJvZF90ZXN0LnBkYiIKKwkJCQlTdWJTeXN0ZW09IjEiCisJCQkJVGFyZ2V0TWFjaGluZT0i
MSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5h
bWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVp
bGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+
CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29s
CisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAor
CQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0i
VkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFw
cGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFn
ZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1
cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIkKFNv
bHV0aW9uTmFtZSkvJChDb25maWd1cmF0aW9uTmFtZSkiCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rv
cnk9IiQoT3V0RGlyKS8kKFByb2plY3ROYW1lKSIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgor
CQkJQ2hhcmFjdGVyU2V0PSIyIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19DT05TT0xFIgor
CQkJCVJ1bnRpbWVMaWJyYXJ5PSI0IgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIzIgorCQkJ
CVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IkZB
TFNFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiLz4KKwkJCTxUb29sCisJCQkJTmFt
ZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29s
IgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9ndGVzdF9wcm9kX3Rlc3QuZXhlIgorCQkJCUxp
bmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCisJ
CQkJU3ViU3lzdGVtPSIxIgorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiIKKwkJCQlFbmFibGVD
T01EQVRGb2xkaW5nPSIyIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KKwkJCTxUb29sCisJCQkJ
TmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50
VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8
VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1l
PSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2Vy
dmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFH
ZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wi
Lz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4K
KwkJCTxUb29sCisJCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRv
b2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCTwvQ29uZmlndXJhdGlvbnM+CisJPFJlZmVyZW5j
ZXM+CisJCTxQcm9qZWN0UmVmZXJlbmNlCisJCQlSZWZlcmVuY2VkUHJvamVjdElkZW50aWZpZXI9
InszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzJ9IgorCQkJTmFtZT0iZ3Rlc3Rf
bWFpbiIvPgorCTwvUmVmZXJlbmNlcz4KKwk8RmlsZXM+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IlNv
dXJjZSBGaWxlcyIKKwkJCUZpbHRlcj0iY3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNt
O2FzbXgiCisJCQlVbmlxdWVJZGVudGlmaWVyPSJ7NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEz
MkQ3NTJBMkZGfSI+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cdGVzdFxndGVzdF9w
cm9kX3Rlc3QuY2MiPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3xX
aW4zMiI+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJ
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7Li4mcXVvdDs7JnF1b3Q7Li5caW5j
bHVkZSZxdW90OyIKKwkJCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIi8+CisJCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFz
ZXxXaW4zMiI+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJ
CQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7Li4mcXVvdDs7JnF1b3Q7Li5c
aW5jbHVkZSZxdW90OyIKKwkJCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIi8+CisJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlx0ZXN0XHByb2R1Y3Rpb24uY2MiPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlO
YW1lPSJEZWJ1Z3xXaW4zMiI+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJU
b29sIgorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7Li4mcXVvdDs7
JnF1b3Q7Li5caW5jbHVkZSZxdW90OyIKKwkJCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIi8+
CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
TmFtZT0iUmVsZWFzZXxXaW4zMiI+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIgorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7Li4mcXVv
dDs7JnF1b3Q7Li5caW5jbHVkZSZxdW90OyIKKwkJCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIw
Ii8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJ
CTxGaWx0ZXIKKwkJCU5hbWU9IkhlYWRlciBGaWxlcyIKKwkJCUZpbHRlcj0iaDtocHA7aHh4O2ht
O2lubDtpbmM7eHNkIgorCQkJVW5pcXVlSWRlbnRpZmllcj0iezkzOTk1MzgwLTg5QkQtNGIwNC04
OEVCLTYyNUZCRTUyRUJGQn0iPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHRlc3Rc
cHJvZHVjdGlvbi5oIj4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJPC9GaWxlcz4KKwk8R2xv
YmFscz4KKwk8L0dsb2JhbHM+Cis8L1Zpc3VhbFN0dWRpb1Byb2plY3Q+CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xldGVzdC9tc3ZjL2d0ZXN0X3VuaXR0ZXN0LW1kLnZjcHJvaiBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L21z
dmMvZ3Rlc3RfdW5pdHRlc3QtbWQudmNwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1MjU5Mzk3NTBkNzQ3Yzdi
NDhhYzQ0ODM4NjljZjY3NjVhNmVhY2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9t
c3ZjL2d0ZXN0X3VuaXR0ZXN0LW1kLnZjcHJvagpAQCAtMCwwICsxLDE0NyBAQAorPD94bWwgdmVy
c2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvamVj
dAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjcuMTAiCisJTmFtZT0iZ3Rl
c3RfdW5pdHRlc3QtbWQiCisJUHJvamVjdEdVSUQ9Ins0RDlGREZCNS05ODZBLTQxMzktODIzQy1G
NEVFMEVENDgxQTJ9IgorCUtleXdvcmQ9IldpbjMyUHJvaiI+CisJPFBsYXRmb3Jtcz4KKwkJPFBs
YXRmb3JtCisJCQlOYW1lPSJXaW4zMiIvPgorCTwvUGxhdGZvcm1zPgorCTxDb25maWd1cmF0aW9u
cz4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJT3V0cHV0RGly
ZWN0b3J5PSIkKFNvbHV0aW9uTmFtZSkvJChDb25maWd1cmF0aW9uTmFtZSkiCisJCQlJbnRlcm1l
ZGlhdGVEaXJlY3Rvcnk9IiQoT3V0RGlyKS8kKFByb2plY3ROYW1lKSIKKwkJCUNvbmZpZ3VyYXRp
b25UeXBlPSIxIgorCQkJQ2hhcmFjdGVyU2V0PSIyIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkND
TENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjAiCisJCQkJUHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnM9IldJTjMyO19ERUJVRztfQ09OU09MRSIKKwkJCQlNaW5pbWFsUmVidWlsZD0iVFJV
RSIKKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCisJCQkJUnVudGltZUxpYnJhcnk9IjMiCisJ
CQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjMiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURl
dGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iRkFMU0UiCisJCQkJRGVidWdJbmZvcm1hdGlv
bkZvcm1hdD0iNCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgor
CQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJT3V0cHV0RmlsZT0iJChPdXRE
aXIpL2d0ZXN0X3VuaXR0ZXN0LmV4ZSIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiCisJCQkJR2Vu
ZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQo
T3V0RGlyKS9ndGVzdF91bml0dGVzdC5wZGIiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJCVRhcmdl
dE1hY2hpbmU9IjEiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRv
b2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1l
PSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2
ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+
CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgor
CQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAor
CQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNN
YW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBdXhp
bGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgor
CQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCU91dHB1dERpcmVj
dG9yeT0iJChTb2x1dGlvbk5hbWUpLyQoQ29uZmlndXJhdGlvbk5hbWUpIgorCQkJSW50ZXJtZWRp
YXRlRGlyZWN0b3J5PSIkKE91dERpcikvJChQcm9qZWN0TmFtZSkiCisJCQlDb25maWd1cmF0aW9u
VHlwZT0iMSIKKwkJCUNoYXJhY3RlclNldD0iMiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xD
b21waWxlclRvb2wiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztf
Q09OU09MRSIKKwkJCQlSdW50aW1lTGlicmFyeT0iMiIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRl
cj0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVBy
b2JsZW1zPSJGQUxTRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIi8+CisJCQk8VG9v
bAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZD
TGlua2VyVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvZ3Rlc3RfdW5pdHRlc3QuZXhl
IgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249
IlRSVUUiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiIKKwkJ
CQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KKwkJCTxU
b29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RC
dWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29s
Ii8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wK
KwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9
IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJW
Q1hNTERhdGFHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95
bWVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRv
clRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdl
bmVyYXRvclRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCTwvQ29uZmlndXJhdGlvbnM+CisJ
PFJlZmVyZW5jZXM+CisJCTxQcm9qZWN0UmVmZXJlbmNlCisJCQlSZWZlcmVuY2VkUHJvamVjdElk
ZW50aWZpZXI9InszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzN9IgorCQkJTmFt
ZT0iZ3Rlc3RfbWFpbi1tZCIvPgorCTwvUmVmZXJlbmNlcz4KKwk8RmlsZXM+CisJCTxGaWx0ZXIK
KwkJCU5hbWU9IlNvdXJjZSBGaWxlcyIKKwkJCUZpbHRlcj0iY3BwO2M7Y3h4O2RlZjtvZGw7aWRs
O2hwajtiYXQ7YXNtO2FzbXgiCisJCQlVbmlxdWVJZGVudGlmaWVyPSJ7NEZDNzM3RjEtQzdBNS00
Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfSI+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
dGVzdFxndGVzdF91bml0dGVzdC5jYyI+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5h
bWU9IkRlYnVnfFdpbjMyIj4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRv
b2wiCisJCQkJCQlPcHRpbWl6YXRpb249IjEiCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzPSImcXVvdDsuLiZxdW90OzsmcXVvdDsuLlxpbmNsdWRlJnF1b3Q7IgorCQkJCQkJQmFz
aWNSdW50aW1lQ2hlY2tzPSIwIgorCQkJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJ
CQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIi8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
KwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiI+CisJCQkJ
CTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJQWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7Li4mcXVvdDs7JnF1b3Q7Li5caW5jbHVkZSZxdW90OyIK
KwkJCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIi8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IkhlYWRlciBG
aWxlcyIKKwkJCUZpbHRlcj0iaDtocHA7aHh4O2htO2lubDtpbmM7eHNkIgorCQkJVW5pcXVlSWRl
bnRpZmllcj0iezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn0iPgorCQk8L0Zp
bHRlcj4KKwk8L0ZpbGVzPgorCTxHbG9iYWxzPgorCTwvR2xvYmFscz4KKzwvVmlzdWFsU3R1ZGlv
UHJvamVjdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L21zdmMvZ3Rlc3RfdW5pdHRlc3QudmNw
cm9qIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZXRlc3QvbXN2Yy9ndGVzdF91bml0dGVzdC52Y3Byb2oKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmIyZDc0MzQ1NzEwNDhmYTA1MzdhODg0ZWJhNzhiNjg4Nzc1ODE2MQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGV0ZXN0L21zdmMvZ3Rlc3RfdW5pdHRlc3QudmNwcm9qCkBAIC0wLDAgKzEsMTQ3
IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1
YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iNy4x
MCIKKwlOYW1lPSJndGVzdF91bml0dGVzdCIKKwlQcm9qZWN0R1VJRD0iezREOUZERkI1LTk4NkEt
NDEzOS04MjNDLUY0RUUwRUQ0ODFBMX0iCisJS2V5d29yZD0iV2luMzJQcm9qIj4KKwk8UGxhdGZv
cm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIi8+CisJPC9QbGF0Zm9ybXM+CisJPENv
bmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8V2luMzIiCisJ
CQlPdXRwdXREaXJlY3Rvcnk9IiQoU29sdXRpb25OYW1lKS8kKENvbmZpZ3VyYXRpb25OYW1lKSIK
KwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJChPdXREaXIpLyQoUHJvamVjdE5hbWUpIgorCQkJ
Q29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiPgorCQkJPFRvb2wKKwkJ
CQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMCIKKwkJCQlQcmVw
cm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0RFQlVHO19DT05TT0xFIgorCQkJCU1pbmltYWxS
ZWJ1aWxkPSJUUlVFIgorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKKwkJCQlSdW50aW1lTGli
cmFyeT0iNSIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9
IjMiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJGQUxTRSIKKwkJCQlEZWJ1
Z0luZm9ybWF0aW9uRm9ybWF0PSI0Ii8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVp
bGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlPdXRwdXRG
aWxlPSIkKE91dERpcikvZ3Rlc3RfdW5pdHRlc3QuZXhlIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0i
MiIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCisJCQkJUHJvZ3JhbURhdGFi
YXNlRmlsZT0iJChPdXREaXIpL2d0ZXN0X3VuaXR0ZXN0LnBkYiIKKwkJCQlTdWJTeXN0ZW09IjEi
CisJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29s
Ii8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9v
bAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0i
VkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21w
aWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0
b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4K
KwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJ
CQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlO
YW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZp
Z3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJ
T3V0cHV0RGlyZWN0b3J5PSIkKFNvbHV0aW9uTmFtZSkvJChDb25maWd1cmF0aW9uTmFtZSkiCisJ
CQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiQoT3V0RGlyKS8kKFByb2plY3ROYW1lKSIKKwkJCUNv
bmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJQ2hhcmFjdGVyU2V0PSIyIj4KKwkJCTxUb29sCisJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lO
MzI7TkRFQlVHO19DT05TT0xFIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSI0IgorCQkJCVVzZVByZWNv
bXBpbGVkSGVhZGVyPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlEZXRlY3Q2NEJpdFBv
cnRhYmlsaXR5UHJvYmxlbXM9IkZBTFNFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMi
Lz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJ
CQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9ndGVzdF91
bml0dGVzdC5leGUiCisJCQkJTGlua0luY3JlbWVudGFsPSIxIgorCQkJCUdlbmVyYXRlRGVidWdJ
bmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlTdWJTeXN0ZW09IjEiCisJCQkJT3B0aW1pemVSZWZlcmVu
Y2VzPSIyIgorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiCisJCQkJVGFyZ2V0TWFjaGluZT0i
MSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5h
bWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVp
bGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+
CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29s
CisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAor
CQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0i
VkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFw
cGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFn
ZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1
cmF0aW9ucz4KKwk8UmVmZXJlbmNlcz4KKwkJPFByb2plY3RSZWZlcmVuY2UKKwkJCVJlZmVyZW5j
ZWRQcm9qZWN0SWRlbnRpZmllcj0iezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAz
Mn0iCisJCQlOYW1lPSJndGVzdF9tYWluIi8+CisJPC9SZWZlcmVuY2VzPgorCTxGaWxlcz4KKwkJ
PEZpbHRlcgorCQkJTmFtZT0iU291cmNlIEZpbGVzIgorCQkJRmlsdGVyPSJjcHA7YztjeHg7ZGVm
O29kbDtpZGw7aHBqO2JhdDthc207YXNteCIKKwkJCVVuaXF1ZUlkZW50aWZpZXI9Ins0RkM3MzdG
MS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9Ij4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlx0ZXN0XGd0ZXN0X3VuaXR0ZXN0LmNjIj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
KwkJCQkJTmFtZT0iRGVidWd8V2luMzIiPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCIKKwkJCQkJCU9wdGltaXphdGlvbj0iMSIKKwkJCQkJCUFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXM9IiZxdW90Oy4uJnF1b3Q7OyZxdW90Oy4uXGluY2x1ZGUmcXVvdDsiCisJ
CQkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjAiCisJCQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0i
MCIKKwkJCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiLz4KKwkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMy
Ij4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQlBZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDsuLiZxdW90OzsmcXVvdDsuLlxpbmNsdWRl
JnF1b3Q7IgorCQkJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiLz4KKwkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgorCQkJTmFtZT0i
SGVhZGVyIEZpbGVzIgorCQkJRmlsdGVyPSJoO2hwcDtoeHg7aG07aW5sO2luYzt4c2QiCisJCQlV
bmlxdWVJZGVudGlmaWVyPSJ7OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfSI+
CisJCTwvRmlsdGVyPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1
YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9wcmltZV90
YWJsZXMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGV0ZXN0L3NhbXBsZXMvcHJpbWVfdGFibGVzLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OTJjZTE2YTAxNDRkNTAyZmQwZTQ1YjczZjM3ZDMyYmJlZGYxYzNmMwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGV0ZXN0L3NhbXBsZXMvcHJpbWVfdGFibGVzLmgKQEAgLTAsMCArMSwxMjMgQEAK
Ky8vIENvcHlyaWdodCAyMDA4IEdvb2dsZSBJbmMuCisvLyBBbGwgUmlnaHRzIFJlc2VydmVkLgor
Ly8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBk
aXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8g
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEF1dGhv
cjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKy8vIEF1dGhvcjogdmxhZGxAZ29vZ2xl
LmNvbSAoVmxhZCBMb3NldikKKworLy8gVGhpcyBwcm92aWRlcyBpbnRlcmZhY2UgUHJpbWVUYWJs
ZSB0aGF0IGRldGVybWluZXMgd2hldGhlciBhIG51bWJlciBpcyBhCisvLyBwcmltZSBhbmQgZGV0
ZXJtaW5lcyBhIG5leHQgcHJpbWUgbnVtYmVyLiBUaGlzIGludGVyZmFjZSBpcyB1c2VkCisvLyBp
biBHb29nbGUgVGVzdCBzYW1wbGVzIGRlbW9uc3RyYXRpbmcgdXNlIG9mIHBhcmFtZXRlcml6ZWQg
dGVzdHMuCisKKyNpZm5kZWYgR1RFU1RfU0FNUExFU19QUklNRV9UQUJMRVNfSF8KKyNkZWZpbmUg
R1RFU1RfU0FNUExFU19QUklNRV9UQUJMRVNfSF8KKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKwor
Ly8gVGhlIHByaW1lIHRhYmxlIGludGVyZmFjZS4KK2NsYXNzIFByaW1lVGFibGUgeworIHB1Ymxp
YzoKKyAgdmlydHVhbCB+UHJpbWVUYWJsZSgpIHt9CisKKyAgLy8gUmV0dXJucyB0cnVlIGlmZiBu
IGlzIGEgcHJpbWUgbnVtYmVyLgorICB2aXJ0dWFsIGJvb2wgSXNQcmltZShpbnQgbikgY29uc3Qg
PSAwOworCisgIC8vIFJldHVybnMgdGhlIHNtYWxsZXN0IHByaW1lIG51bWJlciBncmVhdGVyIHRo
YW4gcDsgb3IgcmV0dXJucyAtMQorICAvLyBpZiB0aGUgbmV4dCBwcmltZSBpcyBiZXlvbmQgdGhl
IGNhcGFjaXR5IG9mIHRoZSB0YWJsZS4KKyAgdmlydHVhbCBpbnQgR2V0TmV4dFByaW1lKGludCBw
KSBjb25zdCA9IDA7Cit9OworCisvLyBJbXBsZW1lbnRhdGlvbiAjMSBjYWxjdWxhdGVzIHRoZSBw
cmltZXMgb24tdGhlLWZseS4KK2NsYXNzIE9uVGhlRmx5UHJpbWVUYWJsZSA6IHB1YmxpYyBQcmlt
ZVRhYmxlIHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgYm9vbCBJc1ByaW1lKGludCBuKSBjb25zdCB7
CisgICAgaWYgKG4gPD0gMSkgcmV0dXJuIGZhbHNlOworCisgICAgZm9yIChpbnQgaSA9IDI7IGkq
aSA8PSBuOyBpKyspIHsKKyAgICAgIC8vIG4gaXMgZGl2aXNpYmxlIGJ5IGFuIGludGVnZXIgb3Ro
ZXIgdGhhbiAxIGFuZCBpdHNlbGYuCisgICAgICBpZiAoKG4gJSBpKSA9PSAwKSByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7CisgIH0KKworICB2aXJ0dWFsIGludCBHZXRO
ZXh0UHJpbWUoaW50IHApIGNvbnN0IHsKKyAgICBmb3IgKGludCBuID0gcCArIDE7IG4gPiAwOyBu
KyspIHsKKyAgICAgIGlmIChJc1ByaW1lKG4pKSByZXR1cm4gbjsKKyAgICB9CisKKyAgICByZXR1
cm4gLTE7CisgIH0KK307CisKKy8vIEltcGxlbWVudGF0aW9uICMyIHByZS1jYWxjdWxhdGVzIHRo
ZSBwcmltZXMgYW5kIHN0b3JlcyB0aGUgcmVzdWx0CisvLyBpbiBhbiBhcnJheS4KK2NsYXNzIFBy
ZUNhbGN1bGF0ZWRQcmltZVRhYmxlIDogcHVibGljIFByaW1lVGFibGUgeworIHB1YmxpYzoKKyAg
Ly8gJ21heCcgc3BlY2lmaWVzIHRoZSBtYXhpbXVtIG51bWJlciB0aGUgcHJpbWUgdGFibGUgaG9s
ZHMuCisgIGV4cGxpY2l0IFByZUNhbGN1bGF0ZWRQcmltZVRhYmxlKGludCBtYXgpCisgICAgICA6
IGlzX3ByaW1lX3NpemVfKG1heCArIDEpLCBpc19wcmltZV8obmV3IGJvb2xbbWF4ICsgMV0pIHsK
KyAgICBDYWxjdWxhdGVQcmltZXNVcFRvKG1heCk7CisgIH0KKyAgdmlydHVhbCB+UHJlQ2FsY3Vs
YXRlZFByaW1lVGFibGUoKSB7IGRlbGV0ZVtdIGlzX3ByaW1lXzsgfQorCisgIHZpcnR1YWwgYm9v
bCBJc1ByaW1lKGludCBuKSBjb25zdCB7CisgICAgcmV0dXJuIDAgPD0gbiAmJiBuIDwgaXNfcHJp
bWVfc2l6ZV8gJiYgaXNfcHJpbWVfW25dOworICB9CisKKyAgdmlydHVhbCBpbnQgR2V0TmV4dFBy
aW1lKGludCBwKSBjb25zdCB7CisgICAgZm9yIChpbnQgbiA9IHAgKyAxOyBuIDwgaXNfcHJpbWVf
c2l6ZV87IG4rKykgeworICAgICAgaWYgKGlzX3ByaW1lX1tuXSkgcmV0dXJuIG47CisgICAgfQor
CisgICAgcmV0dXJuIC0xOworICB9CisKKyBwcml2YXRlOgorICB2b2lkIENhbGN1bGF0ZVByaW1l
c1VwVG8oaW50IG1heCkgeworICAgIDo6c3RkOjpmaWxsKGlzX3ByaW1lXywgaXNfcHJpbWVfICsg
aXNfcHJpbWVfc2l6ZV8sIHRydWUpOworICAgIGlzX3ByaW1lX1swXSA9IGlzX3ByaW1lX1sxXSA9
IGZhbHNlOworCisgICAgZm9yIChpbnQgaSA9IDI7IGkgPD0gbWF4OyBpKyspIHsKKyAgICAgIGlm
ICghaXNfcHJpbWVfW2ldKSBjb250aW51ZTsKKworICAgICAgLy8gTWFya3MgYWxsIG11bHRpcGxl
cyBvZiBpIChleGNlcHQgaSBpdHNlbGYpIGFzIG5vbi1wcmltZS4KKyAgICAgIGZvciAoaW50IGog
PSAyKmk7IGogPD0gbWF4OyBqICs9IGkpIHsKKyAgICAgICAgaXNfcHJpbWVfW2pdID0gZmFsc2U7
CisgICAgICB9CisgICAgfQorICB9CisKKyAgY29uc3QgaW50IGlzX3ByaW1lX3NpemVfOworICBi
b29sKiBjb25zdCBpc19wcmltZV87CisKKyAgLy8gRGlzYWJsZXMgY29tcGlsZXIgd2FybmluZyAi
YXNzaWdubWVudCBvcGVyYXRvciBjb3VsZCBub3QgYmUgZ2VuZXJhdGVkLiIKKyAgdm9pZCBvcGVy
YXRvcj0oY29uc3QgUHJlQ2FsY3VsYXRlZFByaW1lVGFibGUmIHJocyk7Cit9OworCisjZW5kaWYg
IC8vIEdURVNUX1NBTVBMRVNfUFJJTUVfVEFCTEVTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVz
dC9zYW1wbGVzL3NhbXBsZTEuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zYW1wbGVzL3NhbXBsZTEuY2MKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZjE3MWUyNjA5ZDI1MTMyMjg0NjIxZmI2MmNmM2JhODZlMWU2OTkyNQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NhbXBsZXMvc2FtcGxlMS5jYwpAQCAtMCwwICsxLDY4
IEBACisvLyBDb3B5cmlnaHQgMjAwNSwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
Ky8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKy8vIEEg
c2FtcGxlIHByb2dyYW0gZGVtb25zdHJhdGluZyB1c2luZyBHb29nbGUgQysrIHRlc3RpbmcgZnJh
bWV3b3JrLgorLy8KKy8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKwor
I2luY2x1ZGUgInNhbXBsZTEuaCIKKworLy8gUmV0dXJucyBuISAodGhlIGZhY3RvcmlhbCBvZiBu
KS4gIEZvciBuZWdhdGl2ZSBuLCBuISBpcyBkZWZpbmVkIHRvIGJlIDEuCitpbnQgRmFjdG9yaWFs
KGludCBuKSB7CisgIGludCByZXN1bHQgPSAxOworICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBp
KyspIHsKKyAgICByZXN1bHQgKj0gaTsKKyAgfQorCisgIHJldHVybiByZXN1bHQ7Cit9CisKKy8v
IFJldHVybnMgdHJ1ZSBpZmYgbiBpcyBhIHByaW1lIG51bWJlci4KK2Jvb2wgSXNQcmltZShpbnQg
bikgeworICAvLyBUcml2aWFsIGNhc2UgMTogc21hbGwgbnVtYmVycworICBpZiAobiA8PSAxKSBy
ZXR1cm4gZmFsc2U7CisKKyAgLy8gVHJpdmlhbCBjYXNlIDI6IGV2ZW4gbnVtYmVycworICBpZiAo
biAlIDIgPT0gMCkgcmV0dXJuIG4gPT0gMjsKKworICAvLyBOb3csIHdlIGhhdmUgdGhhdCBuIGlz
IG9kZCBhbmQgbiA+PSAzLgorCisgIC8vIFRyeSB0byBkaXZpZGUgbiBieSBldmVyeSBvZGQgbnVt
YmVyIGksIHN0YXJ0aW5nIGZyb20gMworICBmb3IgKGludCBpID0gMzsgOyBpICs9IDIpIHsKKyAg
ICAvLyBXZSBvbmx5IGhhdmUgdG8gdHJ5IGkgdXAgdG8gdGhlIHNxdXJlIHJvb3Qgb2YgbgorICAg
IGlmIChpID4gbi9pKSBicmVhazsKKworICAgIC8vIE5vdywgd2UgaGF2ZSBpIDw9IG4vaSA8IG4u
CisgICAgLy8gSWYgbiBpcyBkaXZpc2libGUgYnkgaSwgbiBpcyBub3QgcHJpbWUuCisgICAgaWYg
KG4gJSBpID09IDApIHJldHVybiBmYWxzZTsKKyAgfQorCisgIC8vIG4gaGFzIG5vIGludGVnZXIg
ZmFjdG9yIGluIHRoZSByYW5nZSAoMSwgbiksIGFuZCB0aHVzIGlzIHByaW1lLgorICByZXR1cm4g
dHJ1ZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NhbXBsZXMvc2FtcGxlMS5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGUxLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2RmZWI5OGM0NTAzMDE0NWY5
ZWExOGQ3OTUzMWM5MWM4MWVlODQ5YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Nh
bXBsZXMvc2FtcGxlMS5oCkBAIC0wLDAgKzEsNDMgQEAKKy8vIENvcHlyaWdodCAyMDA1LCBHb29n
bGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8g
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworLy8gQSBzYW1wbGUgcHJvZ3JhbSBkZW1vbnN0cmF0aW5n
IHVzaW5nIEdvb2dsZSBDKysgdGVzdGluZyBmcmFtZXdvcmsuCisvLworLy8gQXV0aG9yOiB3YW5A
Z29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorCisjaWZuZGVmIEdURVNUX1NBTVBMRVNfU0FNUExF
MV9IXworI2RlZmluZSBHVEVTVF9TQU1QTEVTX1NBTVBMRTFfSF8KKworLy8gUmV0dXJucyBuISAo
dGhlIGZhY3RvcmlhbCBvZiBuKS4gIEZvciBuZWdhdGl2ZSBuLCBuISBpcyBkZWZpbmVkIHRvIGJl
IDEuCitpbnQgRmFjdG9yaWFsKGludCBuKTsKKworLy8gUmV0dXJucyB0cnVlIGlmZiBuIGlzIGEg
cHJpbWUgbnVtYmVyLgorYm9vbCBJc1ByaW1lKGludCBuKTsKKworI2VuZGlmICAvLyBHVEVTVF9T
QU1QTEVTX1NBTVBMRTFfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NhbXBsZXMvc2FtcGxl
MTBfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zYW1wbGVzL3NhbXBsZTEwX3VuaXR0ZXN0LmNj
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjAwNTFjZDVkY2Q3MTUyZTY4N2FhN2VhMTM5MTFiNWRiYjlmYTY4YTIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zYW1wbGVzL3NhbXBsZTEwX3VuaXR0ZXN0LmNj
CkBAIC0wLDAgKzEsMTQ0IEBACisvLyBDb3B5cmlnaHQgMjAwOSBHb29nbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0
OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8v
CisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorLy8KKy8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKKworLy8gVGhp
cyBzYW1wbGUgc2hvd3MgaG93IHRvIHVzZSBHb29nbGUgVGVzdCBsaXN0ZW5lciBBUEkgdG8gaW1w
bGVtZW50CisvLyBhIHByaW1pdGl2ZSBsZWFrIGNoZWNrZXIuCisKKyNpbmNsdWRlIDxzdGRpby5o
PgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKwordXNp
bmcgOjp0ZXN0aW5nOjpFbXB0eVRlc3RFdmVudExpc3RlbmVyOwordXNpbmcgOjp0ZXN0aW5nOjpJ
bml0R29vZ2xlVGVzdDsKK3VzaW5nIDo6dGVzdGluZzo6VGVzdDsKK3VzaW5nIDo6dGVzdGluZzo6
VGVzdENhc2U7Cit1c2luZyA6OnRlc3Rpbmc6OlRlc3RFdmVudExpc3RlbmVyczsKK3VzaW5nIDo6
dGVzdGluZzo6VGVzdEluZm87Cit1c2luZyA6OnRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0OwordXNp
bmcgOjp0ZXN0aW5nOjpVbml0VGVzdDsKKworbmFtZXNwYWNlIHsKKworLy8gV2Ugd2lsbCB0cmFj
ayBtZW1vcnkgdXNlZCBieSB0aGlzIGNsYXNzLgorY2xhc3MgV2F0ZXIgeworIHB1YmxpYzoKKyAg
Ly8gTm9ybWFsIFdhdGVyIGRlY2xhcmF0aW9ucyBnbyBoZXJlLgorCisgIC8vIG9wZXJhdG9yIG5l
dyBhbmQgb3BlcmF0b3IgZGVsZXRlIGhlbHAgdXMgY29udHJvbCB3YXRlciBhbGxvY2F0aW9uLgor
ICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IGFsbG9jYXRpb25fc2l6ZSkgeworICAgIGFsbG9j
YXRlZF8rKzsKKyAgICByZXR1cm4gbWFsbG9jKGFsbG9jYXRpb25fc2l6ZSk7CisgIH0KKworICB2
b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBibG9jaywgc2l6ZV90IC8qIGFsbG9jYXRpb25fc2l6
ZSAqLykgeworICAgIGFsbG9jYXRlZF8tLTsKKyAgICBmcmVlKGJsb2NrKTsKKyAgfQorCisgIHN0
YXRpYyBpbnQgYWxsb2NhdGVkKCkgeyByZXR1cm4gYWxsb2NhdGVkXzsgfQorCisgcHJpdmF0ZToK
KyAgc3RhdGljIGludCBhbGxvY2F0ZWRfOworfTsKKworaW50IFdhdGVyOjphbGxvY2F0ZWRfID0g
MDsKKworLy8gVGhpcyBldmVudCBsaXN0ZW5lciBtb25pdG9ycyBob3cgbWFueSBXYXRlciBvYmpl
Y3RzIGFyZSBjcmVhdGVkIGFuZAorLy8gZGVzdHJveWVkIGJ5IGVhY2ggdGVzdCwgYW5kIHJlcG9y
dHMgYSBmYWlsdXJlIGlmIGEgdGVzdCBsZWFrcyBzb21lIFdhdGVyCisvLyBvYmplY3RzLiBJdCBk
b2VzIHRoaXMgYnkgY29tcGFyaW5nIHRoZSBudW1iZXIgb2YgbGl2ZSBXYXRlciBvYmplY3RzIGF0
CisvLyB0aGUgYmVnaW5uaW5nIG9mIGEgdGVzdCBhbmQgYXQgdGhlIGVuZCBvZiBhIHRlc3QuCitj
bGFzcyBMZWFrQ2hlY2tlciA6IHB1YmxpYyBFbXB0eVRlc3RFdmVudExpc3RlbmVyIHsKKyBwcml2
YXRlOgorICAvLyBDYWxsZWQgYmVmb3JlIGEgdGVzdCBzdGFydHMuCisgIHZpcnR1YWwgdm9pZCBP
blRlc3RTdGFydChjb25zdCBUZXN0SW5mbyYgLyogdGVzdF9pbmZvICovKSB7CisgICAgaW5pdGlh
bGx5X2FsbG9jYXRlZF8gPSBXYXRlcjo6YWxsb2NhdGVkKCk7CisgIH0KKworICAvLyBDYWxsZWQg
YWZ0ZXIgYSB0ZXN0IGVuZHMuCisgIHZpcnR1YWwgdm9pZCBPblRlc3RFbmQoY29uc3QgVGVzdElu
Zm8mIC8qIHRlc3RfaW5mbyAqLykgeworICAgIGludCBkaWZmZXJlbmNlID0gV2F0ZXI6OmFsbG9j
YXRlZCgpIC0gaW5pdGlhbGx5X2FsbG9jYXRlZF87CisKKyAgICAvLyBZb3UgY2FuIGdlbmVyYXRl
IGEgZmFpbHVyZSBpbiBhbnkgZXZlbnQgaGFuZGxlciBleGNlcHQKKyAgICAvLyBPblRlc3RQYXJ0
UmVzdWx0LiBKdXN0IHVzZSBhbiBhcHByb3ByaWF0ZSBHb29nbGUgVGVzdCBhc3NlcnRpb24gdG8g
ZG8KKyAgICAvLyBpdC4KKyAgICBFWFBFQ1RfTEUoZGlmZmVyZW5jZSwgMCkgPDwgIkxlYWtlZCAi
IDw8IGRpZmZlcmVuY2UgPDwgIiB1bml0KHMpIG9mIFdhdGVyISI7CisgIH0KKworICBpbnQgaW5p
dGlhbGx5X2FsbG9jYXRlZF87Cit9OworCitURVNUKExpc3RlbmVyc1Rlc3QsIERvZXNOb3RMZWFr
KSB7CisgIFdhdGVyKiB3YXRlciA9IG5ldyBXYXRlcjsKKyAgZGVsZXRlIHdhdGVyOworfQorCisv
LyBUaGlzIHNob3VsZCBmYWlsIHdoZW4gdGhlIC0tY2hlY2tfZm9yX2xlYWtzIGNvbW1hbmQgbGlu
ZSBmbGFnIGlzCisvLyBzcGVjaWZpZWQuCitURVNUKExpc3RlbmVyc1Rlc3QsIExlYWtzV2F0ZXIp
IHsKKyAgV2F0ZXIqIHdhdGVyID0gbmV3IFdhdGVyOworICBFWFBFQ1RfVFJVRSh3YXRlciAhPSBO
VUxMKTsKK30KKworfSAgLy8gbmFtZXNwYWNlCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoq
YXJndikgeworICBJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisKKyAgYm9vbCBjaGVja19m
b3JfbGVha3MgPSBmYWxzZTsKKyAgaWYgKGFyZ2MgPiAxICYmIHN0cmNtcChhcmd2WzFdLCAiLS1j
aGVja19mb3JfbGVha3MiKSA9PSAwICkKKyAgICBjaGVja19mb3JfbGVha3MgPSB0cnVlOworICBl
bHNlCisgICAgcHJpbnRmKCIlc1xuIiwgIlJ1biB0aGlzIHByb2dyYW0gd2l0aCAtLWNoZWNrX2Zv
cl9sZWFrcyB0byBlbmFibGUgIgorICAgICAgICAgICAiY3VzdG9tIGxlYWsgY2hlY2tpbmcgaW4g
dGhlIHRlc3RzLiIpOworCisgIC8vIElmIHdlIGFyZSBnaXZlbiB0aGUgLS1jaGVja19mb3JfbGVh
a3MgY29tbWFuZCBsaW5lIGZsYWcsIGluc3RhbGxzIHRoZQorICAvLyBsZWFrIGNoZWNrZXIuCisg
IGlmIChjaGVja19mb3JfbGVha3MpIHsKKyAgICBUZXN0RXZlbnRMaXN0ZW5lcnMmIGxpc3RlbmVy
cyA9IFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5saXN0ZW5lcnMoKTsKKworICAgIC8vIEFkZHMg
dGhlIGxlYWsgY2hlY2tlciB0byB0aGUgZW5kIG9mIHRoZSB0ZXN0IGV2ZW50IGxpc3RlbmVyIGxp
c3QsCisgICAgLy8gYWZ0ZXIgdGhlIGRlZmF1bHQgdGV4dCBvdXRwdXQgcHJpbnRlciBhbmQgdGhl
IGRlZmF1bHQgWE1MIHJlcG9ydAorICAgIC8vIGdlbmVyYXRvci4KKyAgICAvLworICAgIC8vIFRo
ZSBvcmRlciBpcyBpbXBvcnRhbnQgLSBpdCBlbnN1cmVzIHRoYXQgZmFpbHVyZXMgZ2VuZXJhdGVk
IGluIHRoZQorICAgIC8vIGxlYWsgY2hlY2tlcidzIE9uVGVzdEVuZCgpIG1ldGhvZCBhcmUgcHJv
Y2Vzc2VkIGJ5IHRoZSB0ZXh0IGFuZCBYTUwKKyAgICAvLyBwcmludGVycyAqYmVmb3JlKiB0aGVp
ciBPblRlc3RFbmQoKSBtZXRob2RzIGFyZSBjYWxsZWQsIHN1Y2ggdGhhdAorICAgIC8vIHRoZXkg
YXJlIGF0dHJpYnV0ZWQgdG8gdGhlIHJpZ2h0IHRlc3QuIFJlbWVtYmVyIHRoYXQgYSBsaXN0ZW5l
cgorICAgIC8vIHJlY2VpdmVzIGFuIE9uWHl6U3RhcnQgZXZlbnQgKmFmdGVyKiBsaXN0ZW5lcnMg
cHJlY2VkaW5nIGl0IGluIHRoZQorICAgIC8vIGxpc3QgcmVjZWl2ZWQgdGhhdCBldmVudCwgYW5k
IHJlY2VpdmVzIGFuIE9uWHl6RW5kIGV2ZW50ICpiZWZvcmUqCisgICAgLy8gbGlzdGVuZXJzIHBy
ZWNlZGluZyBpdC4KKyAgICAvLworICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQg
ZGVsZXRpbmcgdGhlIG5ldyBsaXN0ZW5lciBsYXRlciwgYXMKKyAgICAvLyBHb29nbGUgVGVzdCB3
aWxsIGRvIGl0LgorICAgIGxpc3RlbmVycy5BcHBlbmQobmV3IExlYWtDaGVja2VyKTsKKyAgfQor
ICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2Ft
cGxlcy9zYW1wbGUxX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGUxX3Vu
aXR0ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFlZmM0ZjFkODY2ZTgwOTMzMmE0NWY5YTBlMjE5M2M2ZjQ1
YmFkYjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zYW1wbGVzL3NhbXBsZTFfdW5p
dHRlc3QuY2MKQEAgLTAsMCArMSwxNTMgQEAKKy8vIENvcHlyaWdodCAyMDA1LCBHb29nbGUgSW5j
LgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8g
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworLy8gQSBzYW1wbGUgcHJvZ3JhbSBkZW1vbnN0cmF0aW5nIHVzaW5n
IEdvb2dsZSBDKysgdGVzdGluZyBmcmFtZXdvcmsuCisvLworLy8gQXV0aG9yOiB3YW5AZ29vZ2xl
LmNvbSAoWmhhbnlvbmcgV2FuKQorCisKKy8vIFRoaXMgc2FtcGxlIHNob3dzIGhvdyB0byB3cml0
ZSBhIHNpbXBsZSB1bml0IHRlc3QgZm9yIGEgZnVuY3Rpb24sCisvLyB1c2luZyBHb29nbGUgQysr
IHRlc3RpbmcgZnJhbWV3b3JrLgorLy8KKy8vIFdyaXRpbmcgYSB1bml0IHRlc3QgdXNpbmcgR29v
Z2xlIEMrKyB0ZXN0aW5nIGZyYW1ld29yayBpcyBlYXN5IGFzIDEtMi0zOgorCisKKy8vIFN0ZXAg
MS4gSW5jbHVkZSBuZWNlc3NhcnkgaGVhZGVyIGZpbGVzIHN1Y2ggdGhhdCB0aGUgc3R1ZmYgeW91
cgorLy8gdGVzdCBsb2dpYyBuZWVkcyBpcyBkZWNsYXJlZC4KKy8vCisvLyBEb24ndCBmb3JnZXQg
Z3Rlc3QuaCwgd2hpY2ggZGVjbGFyZXMgdGhlIHRlc3RpbmcgZnJhbWV3b3JrLgorCisjaW5jbHVk
ZSA8bGltaXRzLmg+CisjaW5jbHVkZSAic2FtcGxlMS5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
LmgiCisKKworLy8gU3RlcCAyLiBVc2UgdGhlIFRFU1QgbWFjcm8gdG8gZGVmaW5lIHlvdXIgdGVz
dHMuCisvLworLy8gVEVTVCBoYXMgdHdvIHBhcmFtZXRlcnM6IHRoZSB0ZXN0IGNhc2UgbmFtZSBh
bmQgdGhlIHRlc3QgbmFtZS4KKy8vIEFmdGVyIHVzaW5nIHRoZSBtYWNybywgeW91IHNob3VsZCBk
ZWZpbmUgeW91ciB0ZXN0IGxvZ2ljIGJldHdlZW4gYQorLy8gcGFpciBvZiBicmFjZXMuICBZb3Ug
Y2FuIHVzZSBhIGJ1bmNoIG9mIG1hY3JvcyB0byBpbmRpY2F0ZSB0aGUKKy8vIHN1Y2Nlc3Mgb3Ig
ZmFpbHVyZSBvZiBhIHRlc3QuICBFWFBFQ1RfVFJVRSBhbmQgRVhQRUNUX0VRIGFyZQorLy8gZXhh
bXBsZXMgb2Ygc3VjaCBtYWNyb3MuICBGb3IgYSBjb21wbGV0ZSBsaXN0LCBzZWUgZ3Rlc3QuaC4K
Ky8vCisvLyA8VGVjaG5pY2FsRGV0YWlscz4KKy8vCisvLyBJbiBHb29nbGUgVGVzdCwgdGVzdHMg
YXJlIGdyb3VwZWQgaW50byB0ZXN0IGNhc2VzLiAgVGhpcyBpcyBob3cgd2UKKy8vIGtlZXAgdGVz
dCBjb2RlIG9yZ2FuaXplZC4gIFlvdSBzaG91bGQgcHV0IGxvZ2ljYWxseSByZWxhdGVkIHRlc3Rz
CisvLyBpbnRvIHRoZSBzYW1lIHRlc3QgY2FzZS4KKy8vCisvLyBUaGUgdGVzdCBjYXNlIG5hbWUg
YW5kIHRoZSB0ZXN0IG5hbWUgc2hvdWxkIGJvdGggYmUgdmFsaWQgQysrCisvLyBpZGVudGlmaWVy
cy4gIEFuZCB5b3Ugc2hvdWxkIG5vdCB1c2UgdW5kZXJzY29yZSAoXykgaW4gdGhlIG5hbWVzLgor
Ly8KKy8vIEdvb2dsZSBUZXN0IGd1YXJhbnRlZXMgdGhhdCBlYWNoIHRlc3QgeW91IGRlZmluZSBp
cyBydW4gZXhhY3RseQorLy8gb25jZSwgYnV0IGl0IG1ha2VzIG5vIGd1YXJhbnRlZSBvbiB0aGUg
b3JkZXIgdGhlIHRlc3RzIGFyZQorLy8gZXhlY3V0ZWQuICBUaGVyZWZvcmUsIHlvdSBzaG91bGQg
d3JpdGUgeW91ciB0ZXN0cyBpbiBzdWNoIGEgd2F5CisvLyB0aGF0IHRoZWlyIHJlc3VsdHMgZG9u
J3QgZGVwZW5kIG9uIHRoZWlyIG9yZGVyLgorLy8KKy8vIDwvVGVjaG5pY2FsRGV0YWlscz4KKwor
CisvLyBUZXN0cyBGYWN0b3JpYWwoKS4KKworLy8gVGVzdHMgZmFjdG9yaWFsIG9mIG5lZ2F0aXZl
IG51bWJlcnMuCitURVNUKEZhY3RvcmlhbFRlc3QsIE5lZ2F0aXZlKSB7CisgIC8vIFRoaXMgdGVz
dCBpcyBuYW1lZCAiTmVnYXRpdmUiLCBhbmQgYmVsb25ncyB0byB0aGUgIkZhY3RvcmlhbFRlc3Qi
CisgIC8vIHRlc3QgY2FzZS4KKyAgRVhQRUNUX0VRKDEsIEZhY3RvcmlhbCgtNSkpOworICBFWFBF
Q1RfRVEoMSwgRmFjdG9yaWFsKC0xKSk7CisgIEVYUEVDVF9HVChGYWN0b3JpYWwoLTEwKSwgMCk7
CisKKyAgLy8gPFRlY2huaWNhbERldGFpbHM+CisgIC8vCisgIC8vIEVYUEVDVF9FUShleHBlY3Rl
ZCwgYWN0dWFsKSBpcyB0aGUgc2FtZSBhcworICAvLworICAvLyAgIEVYUEVDVF9UUlVFKChleHBl
Y3RlZCkgPT0gKGFjdHVhbCkpCisgIC8vCisgIC8vIGV4Y2VwdCB0aGF0IGl0IHdpbGwgcHJpbnQg
Ym90aCB0aGUgZXhwZWN0ZWQgdmFsdWUgYW5kIHRoZSBhY3R1YWwKKyAgLy8gdmFsdWUgd2hlbiB0
aGUgYXNzZXJ0aW9uIGZhaWxzLiAgVGhpcyBpcyB2ZXJ5IGhlbHBmdWwgZm9yCisgIC8vIGRlYnVn
Z2luZy4gIFRoZXJlZm9yZSBpbiB0aGlzIGNhc2UgRVhQRUNUX0VRIGlzIHByZWZlcnJlZC4KKyAg
Ly8KKyAgLy8gT24gdGhlIG90aGVyIGhhbmQsIEVYUEVDVF9UUlVFIGFjY2VwdHMgYW55IEJvb2xl
YW4gZXhwcmVzc2lvbiwKKyAgLy8gYW5kIGlzIHRodXMgbW9yZSBnZW5lcmFsLgorICAvLworICAv
LyA8L1RlY2huaWNhbERldGFpbHM+Cit9CisKKy8vIFRlc3RzIGZhY3RvcmlhbCBvZiAwLgorVEVT
VChGYWN0b3JpYWxUZXN0LCBaZXJvKSB7CisgIEVYUEVDVF9FUSgxLCBGYWN0b3JpYWwoMCkpOwor
fQorCisvLyBUZXN0cyBmYWN0b3JpYWwgb2YgcG9zaXRpdmUgbnVtYmVycy4KK1RFU1QoRmFjdG9y
aWFsVGVzdCwgUG9zaXRpdmUpIHsKKyAgRVhQRUNUX0VRKDEsIEZhY3RvcmlhbCgxKSk7CisgIEVY
UEVDVF9FUSgyLCBGYWN0b3JpYWwoMikpOworICBFWFBFQ1RfRVEoNiwgRmFjdG9yaWFsKDMpKTsK
KyAgRVhQRUNUX0VRKDQwMzIwLCBGYWN0b3JpYWwoOCkpOworfQorCisKKy8vIFRlc3RzIElzUHJp
bWUoKQorCisvLyBUZXN0cyBuZWdhdGl2ZSBpbnB1dC4KK1RFU1QoSXNQcmltZVRlc3QsIE5lZ2F0
aXZlKSB7CisgIC8vIFRoaXMgdGVzdCBiZWxvbmdzIHRvIHRoZSBJc1ByaW1lVGVzdCB0ZXN0IGNh
c2UuCisKKyAgRVhQRUNUX0ZBTFNFKElzUHJpbWUoLTEpKTsKKyAgRVhQRUNUX0ZBTFNFKElzUHJp
bWUoLTIpKTsKKyAgRVhQRUNUX0ZBTFNFKElzUHJpbWUoSU5UX01JTikpOworfQorCisvLyBUZXN0
cyBzb21lIHRyaXZpYWwgY2FzZXMuCitURVNUKElzUHJpbWVUZXN0LCBUcml2aWFsKSB7CisgIEVY
UEVDVF9GQUxTRShJc1ByaW1lKDApKTsKKyAgRVhQRUNUX0ZBTFNFKElzUHJpbWUoMSkpOworICBF
WFBFQ1RfVFJVRShJc1ByaW1lKDIpKTsKKyAgRVhQRUNUX1RSVUUoSXNQcmltZSgzKSk7Cit9CisK
Ky8vIFRlc3RzIHBvc2l0aXZlIGlucHV0LgorVEVTVChJc1ByaW1lVGVzdCwgUG9zaXRpdmUpIHsK
KyAgRVhQRUNUX0ZBTFNFKElzUHJpbWUoNCkpOworICBFWFBFQ1RfVFJVRShJc1ByaW1lKDUpKTsK
KyAgRVhQRUNUX0ZBTFNFKElzUHJpbWUoNikpOworICBFWFBFQ1RfVFJVRShJc1ByaW1lKDIzKSk7
Cit9CisKKy8vIFN0ZXAgMy4gQ2FsbCBSVU5fQUxMX1RFU1RTKCkgaW4gbWFpbigpLgorLy8KKy8v
IFdlIGRvIHRoaXMgYnkgbGlua2luZyBpbiBzcmMvZ3Rlc3RfbWFpbi5jYyBmaWxlLCB3aGljaCBj
b25zaXN0cyBvZgorLy8gYSBtYWluKCkgZnVuY3Rpb24gd2hpY2ggY2FsbHMgUlVOX0FMTF9URVNU
UygpIGZvciB1cy4KKy8vCisvLyBUaGlzIHJ1bnMgYWxsIHRoZSB0ZXN0cyB5b3UndmUgZGVmaW5l
ZCwgcHJpbnRzIHRoZSByZXN1bHQsIGFuZAorLy8gcmV0dXJucyAwIGlmIHN1Y2Nlc3NmdWwsIG9y
IDEgb3RoZXJ3aXNlLgorLy8KKy8vIERpZCB5b3Ugbm90aWNlIHRoYXQgd2UgZGlkbid0IHJlZ2lz
dGVyIHRoZSB0ZXN0cz8gIFRoZQorLy8gUlVOX0FMTF9URVNUUygpIG1hY3JvIG1hZ2ljYWxseSBr
bm93cyBhYm91dCBhbGwgdGhlIHRlc3RzIHdlCisvLyBkZWZpbmVkLiAgSXNuJ3QgdGhpcyBjb252
ZW5pZW50PwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGUyLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGUyLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmNzYzYjliZGY4ZDdhYmMx
M2M2MWM1NjgzMzFkMjFiOWZhNDk3NWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9z
YW1wbGVzL3NhbXBsZTIuY2MKQEAgLTAsMCArMSw1NiBAQAorLy8gQ29weXJpZ2h0IDIwMDUsIEdv
b2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8g
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisv
LyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisv
LyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisvLyBBIHNhbXBsZSBwcm9ncmFtIGRlbW9uc3RyYXRp
bmcgdXNpbmcgR29vZ2xlIEMrKyB0ZXN0aW5nIGZyYW1ld29yay4KKy8vCisvLyBBdXRob3I6IHdh
bkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisKKyNpbmNsdWRlICJzYW1wbGUyLmgiCisKKyNp
bmNsdWRlIDxzdHJpbmcuaD4KKworLy8gQ2xvbmVzIGEgMC10ZXJtaW5hdGVkIEMgc3RyaW5nLCBh
bGxvY2F0aW5nIG1lbW9yeSB1c2luZyBuZXcuCitjb25zdCBjaGFyKiBNeVN0cmluZzo6Q2xvbmVD
U3RyaW5nKGNvbnN0IGNoYXIqIGFfY19zdHJpbmcpIHsKKyAgaWYgKGFfY19zdHJpbmcgPT0gTlVM
TCkgcmV0dXJuIE5VTEw7CisKKyAgY29uc3Qgc2l6ZV90IGxlbiA9IHN0cmxlbihhX2Nfc3RyaW5n
KTsKKyAgY2hhciogY29uc3QgY2xvbmUgPSBuZXcgY2hhclsgbGVuICsgMSBdOworICBtZW1jcHko
Y2xvbmUsIGFfY19zdHJpbmcsIGxlbiArIDEpOworCisgIHJldHVybiBjbG9uZTsKK30KKworLy8g
U2V0cyB0aGUgMC10ZXJtaW5hdGVkIEMgc3RyaW5nIHRoaXMgTXlTdHJpbmcgb2JqZWN0CisvLyBy
ZXByZXNlbnRzLgordm9pZCBNeVN0cmluZzo6U2V0KGNvbnN0IGNoYXIqIGFfY19zdHJpbmcpIHsK
KyAgLy8gTWFrZXMgc3VyZSB0aGlzIHdvcmtzIHdoZW4gY19zdHJpbmcgPT0gY19zdHJpbmdfCisg
IGNvbnN0IGNoYXIqIGNvbnN0IHRlbXAgPSBNeVN0cmluZzo6Q2xvbmVDU3RyaW5nKGFfY19zdHJp
bmcpOworICBkZWxldGVbXSBjX3N0cmluZ187CisgIGNfc3RyaW5nXyA9IHRlbXA7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xldGVzdC9zYW1wbGVzL3NhbXBsZTIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NhbXBs
ZXMvc2FtcGxlMi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiNDg1YzcwZmIzM2FkN2Q4NDA1ZjY2YThhMjc0NDEy
ZGUwNDg1MjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zYW1wbGVzL3NhbXBsZTIu
aApAQCAtMCwwICsxLDg1IEBACisvLyBDb3B5cmlnaHQgMjAwNSwgR29vZ2xlIEluYy4KKy8vIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisv
LyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisv
LyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
Ly8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKKy8vIEEgc2FtcGxlIHByb2dyYW0gZGVtb25zdHJhdGluZyB1c2luZyBHb29nbGUg
QysrIHRlc3RpbmcgZnJhbWV3b3JrLgorLy8KKy8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpo
YW55b25nIFdhbikKKworI2lmbmRlZiBHVEVTVF9TQU1QTEVTX1NBTVBMRTJfSF8KKyNkZWZpbmUg
R1RFU1RfU0FNUExFU19TQU1QTEUyX0hfCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworCisvLyBB
IHNpbXBsZSBzdHJpbmcgY2xhc3MuCitjbGFzcyBNeVN0cmluZyB7CisgcHJpdmF0ZToKKyAgY29u
c3QgY2hhciogY19zdHJpbmdfOworICBjb25zdCBNeVN0cmluZyYgb3BlcmF0b3I9KGNvbnN0IE15
U3RyaW5nJiByaHMpOworCisgcHVibGljOgorICAvLyBDbG9uZXMgYSAwLXRlcm1pbmF0ZWQgQyBz
dHJpbmcsIGFsbG9jYXRpbmcgbWVtb3J5IHVzaW5nIG5ldy4KKyAgc3RhdGljIGNvbnN0IGNoYXIq
IENsb25lQ1N0cmluZyhjb25zdCBjaGFyKiBhX2Nfc3RyaW5nKTsKKworICAvLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyAgLy8KKyAg
Ly8gQyd0b3JzCisKKyAgLy8gVGhlIGRlZmF1bHQgYyd0b3IgY29uc3RydWN0cyBhIE5VTEwgc3Ry
aW5nLgorICBNeVN0cmluZygpIDogY19zdHJpbmdfKE5VTEwpIHt9CisKKyAgLy8gQ29uc3RydWN0
cyBhIE15U3RyaW5nIGJ5IGNsb25pbmcgYSAwLXRlcm1pbmF0ZWQgQyBzdHJpbmcuCisgIGV4cGxp
Y2l0IE15U3RyaW5nKGNvbnN0IGNoYXIqIGFfY19zdHJpbmcpIDogY19zdHJpbmdfKE5VTEwpIHsK
KyAgICBTZXQoYV9jX3N0cmluZyk7CisgIH0KKworICAvLyBDb3B5IGMndG9yCisgIE15U3RyaW5n
KGNvbnN0IE15U3RyaW5nJiBzdHJpbmcpIDogY19zdHJpbmdfKE5VTEwpIHsKKyAgICBTZXQoc3Ry
aW5nLmNfc3RyaW5nXyk7CisgIH0KKworICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyAgLy8KKyAgLy8gRCd0b3IuICBNeVN0cmlu
ZyBpcyBpbnRlbmRlZCB0byBiZSBhIGZpbmFsIGNsYXNzLCBzbyB0aGUgZCd0b3IKKyAgLy8gZG9l
c24ndCBuZWVkIHRvIGJlIHZpcnR1YWwuCisgIH5NeVN0cmluZygpIHsgZGVsZXRlW10gY19zdHJp
bmdfOyB9CisKKyAgLy8gR2V0cyB0aGUgMC10ZXJtaW5hdGVkIEMgc3RyaW5nIHRoaXMgTXlTdHJp
bmcgb2JqZWN0IHJlcHJlc2VudHMuCisgIGNvbnN0IGNoYXIqIGNfc3RyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gY19zdHJpbmdfOyB9CisKKyAgc2l6ZV90IExlbmd0aCgpIGNvbnN0IHsKKyAgICByZXR1
cm4gY19zdHJpbmdfID09IE5VTEwgPyAwIDogc3RybGVuKGNfc3RyaW5nXyk7CisgIH0KKworICAv
LyBTZXRzIHRoZSAwLXRlcm1pbmF0ZWQgQyBzdHJpbmcgdGhpcyBNeVN0cmluZyBvYmplY3QgcmVw
cmVzZW50cy4KKyAgdm9pZCBTZXQoY29uc3QgY2hhciogY19zdHJpbmcpOworfTsKKworCisjZW5k
aWYgIC8vIEdURVNUX1NBTVBMRVNfU0FNUExFMl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
c2FtcGxlcy9zYW1wbGUyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGUy
X3VuaXR0ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmYTE5YjcxYzc5MmE0YzZjOWQ2OTAzMTE2MTAwMjgz
YjAxMjBhMjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zYW1wbGVzL3NhbXBsZTJf
dW5pdHRlc3QuY2MKQEAgLTAsMCArMSwxMDkgQEAKKy8vIENvcHlyaWdodCAyMDA1LCBHb29nbGUg
SW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
Ly8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworLy8gQSBzYW1wbGUgcHJvZ3JhbSBkZW1vbnN0cmF0aW5nIHVz
aW5nIEdvb2dsZSBDKysgdGVzdGluZyBmcmFtZXdvcmsuCisvLworLy8gQXV0aG9yOiB3YW5AZ29v
Z2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorCisKKy8vIFRoaXMgc2FtcGxlIHNob3dzIGhvdyB0byB3
cml0ZSBhIG1vcmUgY29tcGxleCB1bml0IHRlc3QgZm9yIGEgY2xhc3MKKy8vIHRoYXQgaGFzIG11
bHRpcGxlIG1lbWJlciBmdW5jdGlvbnMuCisvLworLy8gVXN1YWxseSwgaXQncyBhIGdvb2QgaWRl
YSB0byBoYXZlIG9uZSB0ZXN0IGZvciBlYWNoIG1ldGhvZCBpbiB5b3VyCisvLyBjbGFzcy4gIFlv
dSBkb24ndCBoYXZlIHRvIGRvIHRoYXQgZXhhY3RseSwgYnV0IGl0IGhlbHBzIHRvIGtlZXAKKy8v
IHlvdXIgdGVzdHMgb3JnYW5pemVkLiAgWW91IG1heSBhbHNvIHRocm93IGluIGFkZGl0aW9uYWwg
dGVzdHMgYXMKKy8vIG5lZWRlZC4KKworI2luY2x1ZGUgInNhbXBsZTIuaCIKKyNpbmNsdWRlICJn
dGVzdC9ndGVzdC5oIgorCisvLyBJbiB0aGlzIGV4YW1wbGUsIHdlIHRlc3QgdGhlIE15U3RyaW5n
IGNsYXNzIChhIHNpbXBsZSBzdHJpbmcpLgorCisvLyBUZXN0cyB0aGUgZGVmYXVsdCBjJ3Rvci4K
K1RFU1QoTXlTdHJpbmcsIERlZmF1bHRDb25zdHJ1Y3RvcikgeworICBjb25zdCBNeVN0cmluZyBz
OworCisgIC8vIEFzc2VydHMgdGhhdCBzLmNfc3RyaW5nKCkgcmV0dXJucyBOVUxMLgorICAvLwor
ICAvLyA8VGVjaG5pY2FsRGV0YWlscz4KKyAgLy8KKyAgLy8gSWYgd2Ugd3JpdGUgTlVMTCBpbnN0
ZWFkIG9mCisgIC8vCisgIC8vICAgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhciAqPihOVUxMKQorICAv
LworICAvLyBpbiB0aGlzIGFzc2VydGlvbiwgaXQgd2lsbCBnZW5lcmF0ZSBhIHdhcm5pbmcgb24g
Z2NjIDMuNC4gIFRoZQorICAvLyByZWFzb24gaXMgdGhhdCBFWFBFQ1RfRVEgbmVlZHMgdG8ga25v
dyB0aGUgdHlwZXMgb2YgaXRzCisgIC8vIGFyZ3VtZW50cyBpbiBvcmRlciB0byBwcmludCB0aGVt
IHdoZW4gaXQgZmFpbHMuICBTaW5jZSBOVUxMIGlzCisgIC8vICNkZWZpbmVkIGFzIDAsIHRoZSBj
b21waWxlciB3aWxsIHVzZSB0aGUgZm9ybWF0dGVyIGZ1bmN0aW9uIGZvcgorICAvLyBpbnQgdG8g
cHJpbnQgaXQuICBIb3dldmVyLCBnY2MgdGhpbmtzIHRoYXQgTlVMTCBzaG91bGQgYmUgdXNlZCBh
cworICAvLyBhIHBvaW50ZXIsIG5vdCBhbiBpbnQsIGFuZCB0aGVyZWZvcmUgY29tcGxhaW5zLgor
ICAvLworICAvLyBUaGUgcm9vdCBvZiB0aGUgcHJvYmxlbSBpcyBDKysncyBsYWNrIG9mIGRpc3Rp
bmN0aW9uIGJldHdlZW4gdGhlCisgIC8vIGludGVnZXIgbnVtYmVyIDAgYW5kIHRoZSBudWxsIHBv
aW50ZXIgY29uc3RhbnQuICBVbmZvcnR1bmF0ZWx5LAorICAvLyB3ZSBoYXZlIHRvIGxpdmUgd2l0
aCB0aGlzIGZhY3QuCisgIC8vCisgIC8vIDwvVGVjaG5pY2FsRGV0YWlscz4KKyAgRVhQRUNUX1NU
UkVRKE5VTEwsIHMuY19zdHJpbmcoKSk7CisKKyAgRVhQRUNUX0VRKDB1LCBzLkxlbmd0aCgpKTsK
K30KKworY29uc3QgY2hhciBrSGVsbG9TdHJpbmdbXSA9ICJIZWxsbywgd29ybGQhIjsKKworLy8g
VGVzdHMgdGhlIGMndG9yIHRoYXQgYWNjZXB0cyBhIEMgc3RyaW5nLgorVEVTVChNeVN0cmluZywg
Q29uc3RydWN0b3JGcm9tQ1N0cmluZykgeworICBjb25zdCBNeVN0cmluZyBzKGtIZWxsb1N0cmlu
Zyk7CisgIEVYUEVDVF9FUSgwLCBzdHJjbXAocy5jX3N0cmluZygpLCBrSGVsbG9TdHJpbmcpKTsK
KyAgRVhQRUNUX0VRKHNpemVvZihrSGVsbG9TdHJpbmcpL3NpemVvZihrSGVsbG9TdHJpbmdbMF0p
IC0gMSwKKyAgICAgICAgICAgIHMuTGVuZ3RoKCkpOworfQorCisvLyBUZXN0cyB0aGUgY29weSBj
J3Rvci4KK1RFU1QoTXlTdHJpbmcsIENvcHlDb25zdHJ1Y3RvcikgeworICBjb25zdCBNeVN0cmlu
ZyBzMShrSGVsbG9TdHJpbmcpOworICBjb25zdCBNeVN0cmluZyBzMiA9IHMxOworICBFWFBFQ1Rf
RVEoMCwgc3RyY21wKHMyLmNfc3RyaW5nKCksIGtIZWxsb1N0cmluZykpOworfQorCisvLyBUZXN0
cyB0aGUgU2V0IG1ldGhvZC4KK1RFU1QoTXlTdHJpbmcsIFNldCkgeworICBNeVN0cmluZyBzOwor
CisgIHMuU2V0KGtIZWxsb1N0cmluZyk7CisgIEVYUEVDVF9FUSgwLCBzdHJjbXAocy5jX3N0cmlu
ZygpLCBrSGVsbG9TdHJpbmcpKTsKKworICAvLyBTZXQgc2hvdWxkIHdvcmsgd2hlbiB0aGUgaW5w
dXQgcG9pbnRlciBpcyB0aGUgc2FtZSBhcyB0aGUgb25lCisgIC8vIGFscmVhZHkgaW4gdGhlIE15
U3RyaW5nIG9iamVjdC4KKyAgcy5TZXQocy5jX3N0cmluZygpKTsKKyAgRVhQRUNUX0VRKDAsIHN0
cmNtcChzLmNfc3RyaW5nKCksIGtIZWxsb1N0cmluZykpOworCisgIC8vIENhbiB3ZSBzZXQgdGhl
IE15U3RyaW5nIHRvIE5VTEw/CisgIHMuU2V0KE5VTEwpOworICBFWFBFQ1RfU1RSRVEoTlVMTCwg
cy5jX3N0cmluZygpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NhbXBsZXMvc2FtcGxl
My1pbmwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGV0ZXN0L3NhbXBsZXMvc2FtcGxlMy1pbmwuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
ZTMwODRkNjM4NWRmODk3ZmU1OTI0OGY0OTZiYmM5MWExNzY4OTU1Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGUzLWlubC5oCkBAIC0wLDAgKzEsMTcyIEBACisv
LyBDb3B5cmlnaHQgMjAwNSwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRp
c3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
Ky8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKy8vIEEgc2FtcGxl
IHByb2dyYW0gZGVtb25zdHJhdGluZyB1c2luZyBHb29nbGUgQysrIHRlc3RpbmcgZnJhbWV3b3Jr
LgorLy8KKy8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKworI2lmbmRl
ZiBHVEVTVF9TQU1QTEVTX1NBTVBMRTNfSU5MX0hfCisjZGVmaW5lIEdURVNUX1NBTVBMRVNfU0FN
UExFM19JTkxfSF8KKworI2luY2x1ZGUgPHN0ZGRlZi5oPgorCisKKy8vIFF1ZXVlIGlzIGEgc2lt
cGxlIHF1ZXVlIGltcGxlbWVudGVkIGFzIGEgc2luZ2xlZC1saW5rZWQgbGlzdC4KKy8vCisvLyBU
aGUgZWxlbWVudCB0eXBlIG11c3Qgc3VwcG9ydCBjb3B5IGNvbnN0cnVjdG9yLgordGVtcGxhdGUg
PHR5cGVuYW1lIEU+ICAvLyBFIGlzIHRoZSBlbGVtZW50IHR5cGUKK2NsYXNzIFF1ZXVlOworCisv
LyBRdWV1ZU5vZGUgaXMgYSBub2RlIGluIGEgUXVldWUsIHdoaWNoIGNvbnNpc3RzIG9mIGFuIGVs
ZW1lbnQgb2YKKy8vIHR5cGUgRSBhbmQgYSBwb2ludGVyIHRvIHRoZSBuZXh0IG5vZGUuCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgRT4gIC8vIEUgaXMgdGhlIGVsZW1lbnQgdHlwZQorY2xhc3MgUXVldWVO
b2RlIHsKKyAgZnJpZW5kIGNsYXNzIFF1ZXVlPEU+OworCisgcHVibGljOgorICAvLyBHZXRzIHRo
ZSBlbGVtZW50IGluIHRoaXMgbm9kZS4KKyAgY29uc3QgRSYgZWxlbWVudCgpIGNvbnN0IHsgcmV0
dXJuIGVsZW1lbnRfOyB9CisKKyAgLy8gR2V0cyB0aGUgbmV4dCBub2RlIGluIHRoZSBxdWV1ZS4K
KyAgUXVldWVOb2RlKiBuZXh0KCkgeyByZXR1cm4gbmV4dF87IH0KKyAgY29uc3QgUXVldWVOb2Rl
KiBuZXh0KCkgY29uc3QgeyByZXR1cm4gbmV4dF87IH0KKworIHByaXZhdGU6CisgIC8vIENyZWF0
ZXMgYSBub2RlIHdpdGggYSBnaXZlbiBlbGVtZW50IHZhbHVlLiAgVGhlIG5leHQgcG9pbnRlciBp
cworICAvLyBzZXQgdG8gTlVMTC4KKyAgZXhwbGljaXQgUXVldWVOb2RlKGNvbnN0IEUmIGFuX2Vs
ZW1lbnQpIDogZWxlbWVudF8oYW5fZWxlbWVudCksIG5leHRfKE5VTEwpIHt9CisKKyAgLy8gV2Ug
ZGlzYWJsZSB0aGUgZGVmYXVsdCBhc3NpZ25tZW50IG9wZXJhdG9yIGFuZCBjb3B5IGMndG9yLgor
ICBjb25zdCBRdWV1ZU5vZGUmIG9wZXJhdG9yID0gKGNvbnN0IFF1ZXVlTm9kZSYpOworICBRdWV1
ZU5vZGUoY29uc3QgUXVldWVOb2RlJik7CisKKyAgRSBlbGVtZW50XzsKKyAgUXVldWVOb2RlKiBu
ZXh0XzsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFPiAgLy8gRSBpcyB0aGUgZWxlbWVudCB0
eXBlLgorY2xhc3MgUXVldWUgeworIHB1YmxpYzoKKyAgLy8gQ3JlYXRlcyBhbiBlbXB0eSBxdWV1
ZS4KKyAgUXVldWUoKSA6IGhlYWRfKE5VTEwpLCBsYXN0XyhOVUxMKSwgc2l6ZV8oMCkge30KKwor
ICAvLyBEJ3Rvci4gIENsZWFycyB0aGUgcXVldWUuCisgIH5RdWV1ZSgpIHsgQ2xlYXIoKTsgfQor
CisgIC8vIENsZWFycyB0aGUgcXVldWUuCisgIHZvaWQgQ2xlYXIoKSB7CisgICAgaWYgKHNpemVf
ID4gMCkgeworICAgICAgLy8gMS4gRGVsZXRlcyBldmVyeSBub2RlLgorICAgICAgUXVldWVOb2Rl
PEU+KiBub2RlID0gaGVhZF87CisgICAgICBRdWV1ZU5vZGU8RT4qIG5leHQgPSBub2RlLT5uZXh0
KCk7CisgICAgICBmb3IgKDsgOykgeworICAgICAgICBkZWxldGUgbm9kZTsKKyAgICAgICAgbm9k
ZSA9IG5leHQ7CisgICAgICAgIGlmIChub2RlID09IE5VTEwpIGJyZWFrOworICAgICAgICBuZXh0
ID0gbm9kZS0+bmV4dCgpOworICAgICAgfQorCisgICAgICAvLyAyLiBSZXNldHMgdGhlIG1lbWJl
ciB2YXJpYWJsZXMuCisgICAgICBoZWFkXyA9IGxhc3RfID0gTlVMTDsKKyAgICAgIHNpemVfID0g
MDsKKyAgICB9CisgIH0KKworICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgZWxlbWVudHMuCisgIHNp
emVfdCBTaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZV87IH0KKworICAvLyBHZXRzIHRoZSBmaXJz
dCBlbGVtZW50IG9mIHRoZSBxdWV1ZSwgb3IgTlVMTCBpZiB0aGUgcXVldWUgaXMgZW1wdHkuCisg
IFF1ZXVlTm9kZTxFPiogSGVhZCgpIHsgcmV0dXJuIGhlYWRfOyB9CisgIGNvbnN0IFF1ZXVlTm9k
ZTxFPiogSGVhZCgpIGNvbnN0IHsgcmV0dXJuIGhlYWRfOyB9CisKKyAgLy8gR2V0cyB0aGUgbGFz
dCBlbGVtZW50IG9mIHRoZSBxdWV1ZSwgb3IgTlVMTCBpZiB0aGUgcXVldWUgaXMgZW1wdHkuCisg
IFF1ZXVlTm9kZTxFPiogTGFzdCgpIHsgcmV0dXJuIGxhc3RfOyB9CisgIGNvbnN0IFF1ZXVlTm9k
ZTxFPiogTGFzdCgpIGNvbnN0IHsgcmV0dXJuIGxhc3RfOyB9CisKKyAgLy8gQWRkcyBhbiBlbGVt
ZW50IHRvIHRoZSBlbmQgb2YgdGhlIHF1ZXVlLiAgQSBjb3B5IG9mIHRoZSBlbGVtZW50IGlzCisg
IC8vIGNyZWF0ZWQgdXNpbmcgdGhlIGNvcHkgY29uc3RydWN0b3IsIGFuZCB0aGVuIHN0b3JlZCBp
biB0aGUgcXVldWUuCisgIC8vIENoYW5nZXMgbWFkZSB0byB0aGUgZWxlbWVudCBpbiB0aGUgcXVl
dWUgZG9lc24ndCBhZmZlY3QgdGhlIHNvdXJjZQorICAvLyBvYmplY3QsIGFuZCB2aWNlIHZlcnNh
LgorICB2b2lkIEVucXVldWUoY29uc3QgRSYgZWxlbWVudCkgeworICAgIFF1ZXVlTm9kZTxFPiog
bmV3X25vZGUgPSBuZXcgUXVldWVOb2RlPEU+KGVsZW1lbnQpOworCisgICAgaWYgKHNpemVfID09
IDApIHsKKyAgICAgIGhlYWRfID0gbGFzdF8gPSBuZXdfbm9kZTsKKyAgICAgIHNpemVfID0gMTsK
KyAgICB9IGVsc2UgeworICAgICAgbGFzdF8tPm5leHRfID0gbmV3X25vZGU7CisgICAgICBsYXN0
XyA9IG5ld19ub2RlOworICAgICAgc2l6ZV8rKzsKKyAgICB9CisgIH0KKworICAvLyBSZW1vdmVz
IHRoZSBoZWFkIG9mIHRoZSBxdWV1ZSBhbmQgcmV0dXJucyBpdC4gIFJldHVybnMgTlVMTCBpZgor
ICAvLyB0aGUgcXVldWUgaXMgZW1wdHkuCisgIEUqIERlcXVldWUoKSB7CisgICAgaWYgKHNpemVf
ID09IDApIHsKKyAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGNvbnN0IFF1ZXVlTm9k
ZTxFPiogY29uc3Qgb2xkX2hlYWQgPSBoZWFkXzsKKyAgICBoZWFkXyA9IGhlYWRfLT5uZXh0XzsK
KyAgICBzaXplXy0tOworICAgIGlmIChzaXplXyA9PSAwKSB7CisgICAgICBsYXN0XyA9IE5VTEw7
CisgICAgfQorCisgICAgRSogZWxlbWVudCA9IG5ldyBFKG9sZF9oZWFkLT5lbGVtZW50KCkpOwor
ICAgIGRlbGV0ZSBvbGRfaGVhZDsKKworICAgIHJldHVybiBlbGVtZW50OworICB9CisKKyAgLy8g
QXBwbGllcyBhIGZ1bmN0aW9uL2Z1bmN0b3Igb24gZWFjaCBlbGVtZW50IG9mIHRoZSBxdWV1ZSwg
YW5kCisgIC8vIHJldHVybnMgdGhlIHJlc3VsdCBpbiBhIG5ldyBxdWV1ZS4gIFRoZSBvcmlnaW5h
bCBxdWV1ZSBpcyBub3QKKyAgLy8gYWZmZWN0ZWQuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBGPgor
ICBRdWV1ZSogTWFwKEYgZnVuY3Rpb24pIGNvbnN0IHsKKyAgICBRdWV1ZSogbmV3X3F1ZXVlID0g
bmV3IFF1ZXVlKCk7CisgICAgZm9yIChjb25zdCBRdWV1ZU5vZGU8RT4qIG5vZGUgPSBoZWFkXzsg
bm9kZSAhPSBOVUxMOyBub2RlID0gbm9kZS0+bmV4dF8pIHsKKyAgICAgIG5ld19xdWV1ZS0+RW5x
dWV1ZShmdW5jdGlvbihub2RlLT5lbGVtZW50KCkpKTsKKyAgICB9CisKKyAgICByZXR1cm4gbmV3
X3F1ZXVlOworICB9CisKKyBwcml2YXRlOgorICBRdWV1ZU5vZGU8RT4qIGhlYWRfOyAgLy8gVGhl
IGZpcnN0IG5vZGUgb2YgdGhlIHF1ZXVlLgorICBRdWV1ZU5vZGU8RT4qIGxhc3RfOyAgLy8gVGhl
IGxhc3Qgbm9kZSBvZiB0aGUgcXVldWUuCisgIHNpemVfdCBzaXplXzsgIC8vIFRoZSBudW1iZXIg
b2YgZWxlbWVudHMgaW4gdGhlIHF1ZXVlLgorCisgIC8vIFdlIGRpc2FsbG93IGNvcHlpbmcgYSBx
dWV1ZS4KKyAgUXVldWUoY29uc3QgUXVldWUmKTsKKyAgY29uc3QgUXVldWUmIG9wZXJhdG9yID0g
KGNvbnN0IFF1ZXVlJik7Cit9OworCisjZW5kaWYgIC8vIEdURVNUX1NBTVBMRVNfU0FNUExFM19J
TkxfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NhbXBsZXMvc2FtcGxlM191bml0dGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGV0ZXN0L3NhbXBsZXMvc2FtcGxlM191bml0dGVzdC5jYwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
ZjM4NzdkMDEzMjM0NWIxODllZDVlYmE3M2QyMDFiZWM1NmY4ZGE2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGUzX3VuaXR0ZXN0LmNjCkBAIC0wLDAgKzEsMTUx
IEBACisvLyBDb3B5cmlnaHQgMjAwNSwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
Ky8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKy8vIEEg
c2FtcGxlIHByb2dyYW0gZGVtb25zdHJhdGluZyB1c2luZyBHb29nbGUgQysrIHRlc3RpbmcgZnJh
bWV3b3JrLgorLy8KKy8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKwor
CisvLyBJbiB0aGlzIGV4YW1wbGUsIHdlIHVzZSBhIG1vcmUgYWR2YW5jZWQgZmVhdHVyZSBvZiBH
b29nbGUgVGVzdCBjYWxsZWQKKy8vIHRlc3QgZml4dHVyZS4KKy8vCisvLyBBIHRlc3QgZml4dHVy
ZSBpcyBhIHBsYWNlIHRvIGhvbGQgb2JqZWN0cyBhbmQgZnVuY3Rpb25zIHNoYXJlZCBieQorLy8g
YWxsIHRlc3RzIGluIGEgdGVzdCBjYXNlLiAgVXNpbmcgYSB0ZXN0IGZpeHR1cmUgYXZvaWRzIGR1
cGxpY2F0aW5nCisvLyB0aGUgdGVzdCBjb2RlIG5lY2Vzc2FyeSB0byBpbml0aWFsaXplIGFuZCBj
bGVhbnVwIHRob3NlIGNvbW1vbgorLy8gb2JqZWN0cyBmb3IgZWFjaCB0ZXN0LiAgSXQgaXMgYWxz
byB1c2VmdWwgZm9yIGRlZmluaW5nIHN1Yi1yb3V0aW5lcworLy8gdGhhdCB5b3VyIHRlc3RzIG5l
ZWQgdG8gaW52b2tlIGEgbG90LgorLy8KKy8vIDxUZWNobmljYWxEZXRhaWxzPgorLy8KKy8vIFRo
ZSB0ZXN0cyBzaGFyZSB0aGUgdGVzdCBmaXh0dXJlIGluIHRoZSBzZW5zZSBvZiBjb2RlIHNoYXJp
bmcsIG5vdAorLy8gZGF0YSBzaGFyaW5nLiAgRWFjaCB0ZXN0IGlzIGdpdmVuIGl0cyBvd24gZnJl
c2ggY29weSBvZiB0aGUKKy8vIGZpeHR1cmUuICBZb3UgY2Fubm90IGV4cGVjdCB0aGUgZGF0YSBt
b2RpZmllZCBieSBvbmUgdGVzdCB0byBiZQorLy8gcGFzc2VkIG9uIHRvIGFub3RoZXIgdGVzdCwg
d2hpY2ggaXMgYSBiYWQgaWRlYS4KKy8vCisvLyBUaGUgcmVhc29uIGZvciB0aGlzIGRlc2lnbiBp
cyB0aGF0IHRlc3RzIHNob3VsZCBiZSBpbmRlcGVuZGVudCBhbmQKKy8vIHJlcGVhdGFibGUuICBJ
biBwYXJ0aWN1bGFyLCBhIHRlc3Qgc2hvdWxkIG5vdCBmYWlsIGFzIHRoZSByZXN1bHQgb2YKKy8v
IGFub3RoZXIgdGVzdCdzIGZhaWx1cmUuICBJZiBvbmUgdGVzdCBkZXBlbmRzIG9uIGluZm8gcHJv
ZHVjZWQgYnkKKy8vIGFub3RoZXIgdGVzdCwgdGhlbiB0aGUgdHdvIHRlc3RzIHNob3VsZCByZWFs
bHkgYmUgb25lIGJpZyB0ZXN0LgorLy8KKy8vIFRoZSBtYWNyb3MgZm9yIGluZGljYXRpbmcgdGhl
IHN1Y2Nlc3MvZmFpbHVyZSBvZiBhIHRlc3QKKy8vIChFWFBFQ1RfVFJVRSwgRkFJTCwgZXRjKSBu
ZWVkIHRvIGtub3cgd2hhdCB0aGUgY3VycmVudCB0ZXN0IGlzCisvLyAod2hlbiBHb29nbGUgVGVz
dCBwcmludHMgdGhlIHRlc3QgcmVzdWx0LCBpdCB0ZWxscyB5b3Ugd2hpY2ggdGVzdAorLy8gZWFj
aCBmYWlsdXJlIGJlbG9uZ3MgdG8pLiAgVGVjaG5pY2FsbHksIHRoZXNlIG1hY3JvcyBpbnZva2Ug
YQorLy8gbWVtYmVyIGZ1bmN0aW9uIG9mIHRoZSBUZXN0IGNsYXNzLiAgVGhlcmVmb3JlLCB5b3Ug
Y2Fubm90IHVzZSB0aGVtCisvLyBpbiBhIGdsb2JhbCBmdW5jdGlvbi4gIFRoYXQncyB3aHkgeW91
IHNob3VsZCBwdXQgdGVzdCBzdWItcm91dGluZXMKKy8vIGluIGEgdGVzdCBmaXh0dXJlLgorLy8K
Ky8vIDwvVGVjaG5pY2FsRGV0YWlscz4KKworI2luY2x1ZGUgInNhbXBsZTMtaW5sLmgiCisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworLy8gVG8gdXNlIGEgdGVzdCBmaXh0dXJlLCBkZXJpdmUg
YSBjbGFzcyBmcm9tIHRlc3Rpbmc6OlRlc3QuCitjbGFzcyBRdWV1ZVRlc3QgOiBwdWJsaWMgdGVz
dGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOiAgLy8gWW91IHNob3VsZCBtYWtlIHRoZSBtZW1iZXJz
IHByb3RlY3RlZCBzLnQuIHRoZXkgY2FuIGJlCisgICAgICAgICAgICAgLy8gYWNjZXNzZWQgZnJv
bSBzdWItY2xhc3Nlcy4KKworICAvLyB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB3aWxsIGJlIGNhbGxl
ZCBiZWZvcmUgZWFjaCB0ZXN0IGlzIHJ1bi4gIFlvdQorICAvLyBzaG91bGQgZGVmaW5lIGl0IGlm
IHlvdSBuZWVkIHRvIGluaXRpYWxpemUgdGhlIHZhcmFpYmxlcy4KKyAgLy8gT3RoZXJ3aXNlLCB0
aGlzIGNhbiBiZSBza2lwcGVkLgorICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgcTFfLkVu
cXVldWUoMSk7CisgICAgcTJfLkVucXVldWUoMik7CisgICAgcTJfLkVucXVldWUoMyk7CisgIH0K
KworICAvLyB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB3aWxsIGJlIGNhbGxlZCBhZnRlciBlYWNo
IHRlc3QgaXMgcnVuLgorICAvLyBZb3Ugc2hvdWxkIGRlZmluZSBpdCBpZiB0aGVyZSBpcyBjbGVh
bnVwIHdvcmsgdG8gZG8uICBPdGhlcndpc2UsCisgIC8vIHlvdSBkb24ndCBoYXZlIHRvIHByb3Zp
ZGUgaXQuCisgIC8vCisgIC8vIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgLy8gfQorCisg
IC8vIEEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgc29tZSB0ZXN0IHVzZXMuCisgIHN0YXRpYyBpbnQg
RG91YmxlKGludCBuKSB7CisgICAgcmV0dXJuIDIqbjsKKyAgfQorCisgIC8vIEEgaGVscGVyIGZ1
bmN0aW9uIGZvciB0ZXN0aW5nIFF1ZXVlOjpNYXAoKS4KKyAgdm9pZCBNYXBUZXN0ZXIoY29uc3Qg
UXVldWU8aW50PiAqIHEpIHsKKyAgICAvLyBDcmVhdGVzIGEgbmV3IHF1ZXVlLCB3aGVyZSBlYWNo
IGVsZW1lbnQgaXMgdHdpY2UgYXMgYmlnIGFzIHRoZQorICAgIC8vIGNvcnJlc3BvbmRpbmcgb25l
IGluIHEuCisgICAgY29uc3QgUXVldWU8aW50PiAqIGNvbnN0IG5ld19xID0gcS0+TWFwKERvdWJs
ZSk7CisKKyAgICAvLyBWZXJpZmllcyB0aGF0IHRoZSBuZXcgcXVldWUgaGFzIHRoZSBzYW1lIHNp
emUgYXMgcS4KKyAgICBBU1NFUlRfRVEocS0+U2l6ZSgpLCBuZXdfcS0+U2l6ZSgpKTsKKworICAg
IC8vIFZlcmlmaWVzIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgZWxlbWVudHMgb2YgdGhl
IHR3byBxdWV1ZXMuCisgICAgZm9yICggY29uc3QgUXVldWVOb2RlPGludD4gKiBuMSA9IHEtPkhl
YWQoKSwgKiBuMiA9IG5ld19xLT5IZWFkKCk7CisgICAgICAgICAgbjEgIT0gTlVMTDsgbjEgPSBu
MS0+bmV4dCgpLCBuMiA9IG4yLT5uZXh0KCkgKSB7CisgICAgICBFWFBFQ1RfRVEoMiAqIG4xLT5l
bGVtZW50KCksIG4yLT5lbGVtZW50KCkpOworICAgIH0KKworICAgIGRlbGV0ZSBuZXdfcTsKKyAg
fQorCisgIC8vIERlY2xhcmVzIHRoZSB2YXJpYWJsZXMgeW91ciB0ZXN0cyB3YW50IHRvIHVzZS4K
KyAgUXVldWU8aW50PiBxMF87CisgIFF1ZXVlPGludD4gcTFfOworICBRdWV1ZTxpbnQ+IHEyXzsK
K307CisKKy8vIFdoZW4geW91IGhhdmUgYSB0ZXN0IGZpeHR1cmUsIHlvdSBkZWZpbmUgYSB0ZXN0
IHVzaW5nIFRFU1RfRgorLy8gaW5zdGVhZCBvZiBURVNULgorCisvLyBUZXN0cyB0aGUgZGVmYXVs
dCBjJ3Rvci4KK1RFU1RfRihRdWV1ZVRlc3QsIERlZmF1bHRDb25zdHJ1Y3RvcikgeworICAvLyBZ
b3UgY2FuIGFjY2VzcyBkYXRhIGluIHRoZSB0ZXN0IGZpeHR1cmUgaGVyZS4KKyAgRVhQRUNUX0VR
KDB1LCBxMF8uU2l6ZSgpKTsKK30KKworLy8gVGVzdHMgRGVxdWV1ZSgpLgorVEVTVF9GKFF1ZXVl
VGVzdCwgRGVxdWV1ZSkgeworICBpbnQgKiBuID0gcTBfLkRlcXVldWUoKTsKKyAgRVhQRUNUX1RS
VUUobiA9PSBOVUxMKTsKKworICBuID0gcTFfLkRlcXVldWUoKTsKKyAgQVNTRVJUX1RSVUUobiAh
PSBOVUxMKTsKKyAgRVhQRUNUX0VRKDEsICpuKTsKKyAgRVhQRUNUX0VRKDB1LCBxMV8uU2l6ZSgp
KTsKKyAgZGVsZXRlIG47CisKKyAgbiA9IHEyXy5EZXF1ZXVlKCk7CisgIEFTU0VSVF9UUlVFKG4g
IT0gTlVMTCk7CisgIEVYUEVDVF9FUSgyLCAqbik7CisgIEVYUEVDVF9FUSgxdSwgcTJfLlNpemUo
KSk7CisgIGRlbGV0ZSBuOworfQorCisvLyBUZXN0cyB0aGUgUXVldWU6Ok1hcCgpIGZ1bmN0aW9u
LgorVEVTVF9GKFF1ZXVlVGVzdCwgTWFwKSB7CisgIE1hcFRlc3RlcigmcTBfKTsKKyAgTWFwVGVz
dGVyKCZxMV8pOworICBNYXBUZXN0ZXIoJnEyXyk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVz
dC9zYW1wbGVzL3NhbXBsZTQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zYW1wbGVzL3NhbXBsZTQuY2MKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYWU0NGJkYTZmMWJhZDUzZmYzYzZmMTRlMDMwMmJkM2JiMzA5Y2JhNwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NhbXBsZXMvc2FtcGxlNC5jYwpAQCAtMCwwICsxLDQ2
IEBACisvLyBDb3B5cmlnaHQgMjAwNSwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
Ky8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKy8vIEEg
c2FtcGxlIHByb2dyYW0gZGVtb25zdHJhdGluZyB1c2luZyBHb29nbGUgQysrIHRlc3RpbmcgZnJh
bWV3b3JrLgorLy8KKy8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKwor
I2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpbmNsdWRlICJzYW1wbGU0LmgiCisKKy8vIFJldHVybnMg
dGhlIGN1cnJlbnQgY291bnRlciB2YWx1ZSwgYW5kIGluY3JlbWVudHMgaXQuCitpbnQgQ291bnRl
cjo6SW5jcmVtZW50KCkgeworICByZXR1cm4gY291bnRlcl8rKzsKK30KKworLy8gUHJpbnRzIHRo
ZSBjdXJyZW50IGNvdW50ZXIgdmFsdWUgdG8gU1RET1VULgordm9pZCBDb3VudGVyOjpQcmludCgp
IGNvbnN0IHsKKyAgcHJpbnRmKCIlZCIsIGNvdW50ZXJfKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGV0ZXN0L3NhbXBsZXMvc2FtcGxlNC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGU0LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uY2Q2MGYwZGQyZDE4NjA3MzdiN2YwZWE0NWM1Njc1YTNhOGVhNzIxZgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NhbXBsZXMvc2FtcGxlNC5oCkBAIC0wLDAgKzEs
NTMgQEAKKy8vIENvcHlyaWdodCAyMDA1LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisv
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8v
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworLy8g
QSBzYW1wbGUgcHJvZ3JhbSBkZW1vbnN0cmF0aW5nIHVzaW5nIEdvb2dsZSBDKysgdGVzdGluZyBm
cmFtZXdvcmsuCisvLworLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQor
CisjaWZuZGVmIEdURVNUX1NBTVBMRVNfU0FNUExFNF9IXworI2RlZmluZSBHVEVTVF9TQU1QTEVT
X1NBTVBMRTRfSF8KKworLy8gQSBzaW1wbGUgbW9ub3RvbmljIGNvdW50ZXIuCitjbGFzcyBDb3Vu
dGVyIHsKKyBwcml2YXRlOgorICBpbnQgY291bnRlcl87CisKKyBwdWJsaWM6CisgIC8vIENyZWF0
ZXMgYSBjb3VudGVyIHRoYXQgc3RhcnRzIGF0IDAuCisgIENvdW50ZXIoKSA6IGNvdW50ZXJfKDAp
IHt9CisKKyAgLy8gUmV0dXJucyB0aGUgY3VycmVudCBjb3VudGVyIHZhbHVlLCBhbmQgaW5jcmVt
ZW50cyBpdC4KKyAgaW50IEluY3JlbWVudCgpOworCisgIC8vIFByaW50cyB0aGUgY3VycmVudCBj
b3VudGVyIHZhbHVlIHRvIFNURE9VVC4KKyAgdm9pZCBQcmludCgpIGNvbnN0OworfTsKKworI2Vu
ZGlmICAvLyBHVEVTVF9TQU1QTEVTX1NBTVBMRTRfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0
L3NhbXBsZXMvc2FtcGxlNF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NhbXBsZXMvc2FtcGxl
NF91bml0dGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYTVhZmM3ZDVhMTY4NmIwOTg4OWJmMDdiY2FjZjU4
MTY3NzEwMzJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGU0
X3VuaXR0ZXN0LmNjCkBAIC0wLDAgKzEsNDUgQEAKKy8vIENvcHlyaWdodCAyMDA1LCBHb29nbGUg
SW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
Ly8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9u
ZyBXYW4pCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgInNhbXBsZTQuaCIK
KworLy8gVGVzdHMgdGhlIEluY3JlbWVudCgpIG1ldGhvZC4KK1RFU1QoQ291bnRlciwgSW5jcmVt
ZW50KSB7CisgIENvdW50ZXIgYzsKKworICAvLyBFWFBFQ1RfRVEoKSBldmFsdWF0ZXMgaXRzIGFy
Z3VtZW50cyBleGFjdGx5IG9uY2UsIHNvIHRoZXkKKyAgLy8gY2FuIGhhdmUgc2lkZSBlZmZlY3Rz
LgorCisgIEVYUEVDVF9FUSgwLCBjLkluY3JlbWVudCgpKTsKKyAgRVhQRUNUX0VRKDEsIGMuSW5j
cmVtZW50KCkpOworICBFWFBFQ1RfRVEoMiwgYy5JbmNyZW1lbnQoKSk7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC9zYW1wbGVzL3NhbXBsZTVfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9z
YW1wbGVzL3NhbXBsZTVfdW5pdHRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDNkOGU1Nzc3NTgzZWM0YmUw
MTA4OWM5OTc5NWI5MGI3M2VmNGY0YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Nh
bXBsZXMvc2FtcGxlNV91bml0dGVzdC5jYwpAQCAtMCwwICsxLDE5OSBAQAorLy8gQ29weXJpZ2h0
IDIwMDUsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24u
CisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEF1dGhvcjogd2FuQGdvb2ds
ZS5jb20gKFpoYW55b25nIFdhbikKKworLy8gVGhpcyBzYW1wbGUgdGVhY2hlcyBob3cgdG8gcmV1
c2UgYSB0ZXN0IGZpeHR1cmUgaW4gbXVsdGlwbGUgdGVzdAorLy8gY2FzZXMgYnkgZGVyaXZpbmcg
c3ViLWZpeHR1cmVzIGZyb20gaXQuCisvLworLy8gV2hlbiB5b3UgZGVmaW5lIGEgdGVzdCBmaXh0
dXJlLCB5b3Ugc3BlY2lmeSB0aGUgbmFtZSBvZiB0aGUgdGVzdAorLy8gY2FzZSB0aGF0IHdpbGwg
dXNlIHRoaXMgZml4dHVyZS4gIFRoZXJlZm9yZSwgYSB0ZXN0IGZpeHR1cmUgY2FuCisvLyBiZSB1
c2VkIGJ5IG9ubHkgb25lIHRlc3QgY2FzZS4KKy8vCisvLyBTb21ldGltZXMsIG1vcmUgdGhhbiBv
bmUgdGVzdCBjYXNlcyBtYXkgd2FudCB0byB1c2UgdGhlIHNhbWUgb3IKKy8vIHNsaWdodGx5IGRp
ZmZlcmVudCB0ZXN0IGZpeHR1cmVzLiAgRm9yIGV4YW1wbGUsIHlvdSBtYXkgd2FudCB0bworLy8g
bWFrZSBzdXJlIHRoYXQgYWxsIHRlc3RzIGZvciBhIEdVSSBsaWJyYXJ5IGRvbid0IGxlYWsgaW1w
b3J0YW50CisvLyBzeXN0ZW0gcmVzb3VyY2VzIGxpa2UgZm9udHMgYW5kIGJydXNoZXMuICBJbiBH
b29nbGUgVGVzdCwgeW91IGRvCisvLyB0aGlzIGJ5IHB1dHRpbmcgdGhlIHNoYXJlZCBsb2dpYyBp
biBhIHN1cGVyIChhcyBpbiAic3VwZXIgY2xhc3MiKQorLy8gdGVzdCBmaXh0dXJlLCBhbmQgdGhl
biBoYXZlIGVhY2ggdGVzdCBjYXNlIHVzZSBhIGZpeHR1cmUgZGVyaXZlZAorLy8gZnJvbSB0aGlz
IHN1cGVyIGZpeHR1cmUuCisKKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDx0aW1lLmg+
CisjaW5jbHVkZSAic2FtcGxlMy1pbmwuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2lu
Y2x1ZGUgInNhbXBsZTEuaCIKKworLy8gSW4gdGhpcyBzYW1wbGUsIHdlIHdhbnQgdG8gZW5zdXJl
IHRoYXQgZXZlcnkgdGVzdCBmaW5pc2hlcyB3aXRoaW4KKy8vIH41IHNlY29uZHMuICBJZiBhIHRl
c3QgdGFrZXMgbG9uZ2VyIHRvIHJ1biwgd2UgY29uc2lkZXIgaXQgYQorLy8gZmFpbHVyZS4KKy8v
CisvLyBXZSBwdXQgdGhlIGNvZGUgZm9yIHRpbWluZyBhIHRlc3QgaW4gYSB0ZXN0IGZpeHR1cmUg
Y2FsbGVkCisvLyAiUXVpY2tUZXN0Ii4gIFF1aWNrVGVzdCBpcyBpbnRlbmRlZCB0byBiZSB0aGUg
c3VwZXIgZml4dHVyZSB0aGF0CisvLyBvdGhlciBmaXh0dXJlcyBkZXJpdmUgZnJvbSwgdGhlcmVm
b3JlIHRoZXJlIGlzIG5vIHRlc3QgY2FzZSB3aXRoCisvLyB0aGUgbmFtZSAiUXVpY2tUZXN0Ii4g
IFRoaXMgaXMgT0suCisvLworLy8gTGF0ZXIsIHdlIHdpbGwgZGVyaXZlIG11bHRpcGxlIHRlc3Qg
Zml4dHVyZXMgZnJvbSBRdWlja1Rlc3QuCitjbGFzcyBRdWlja1Rlc3QgOiBwdWJsaWMgdGVzdGlu
Zzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICAvLyBSZW1lbWJlciB0aGF0IFNldFVwKCkgaXMgcnVu
IGltbWVkaWF0ZWx5IGJlZm9yZSBhIHRlc3Qgc3RhcnRzLgorICAvLyBUaGlzIGlzIGEgZ29vZCBw
bGFjZSB0byByZWNvcmQgdGhlIHN0YXJ0IHRpbWUuCisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsK
KyAgICBzdGFydF90aW1lXyA9IHRpbWUoTlVMTCk7CisgIH0KKworICAvLyBUZWFyRG93bigpIGlz
IGludm9rZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgYSB0ZXN0IGZpbmlzaGVzLiAgSGVyZSB3ZQorICAv
LyBjaGVjayBpZiB0aGUgdGVzdCB3YXMgdG9vIHNsb3cuCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93
bigpIHsKKyAgICAvLyBHZXRzIHRoZSB0aW1lIHdoZW4gdGhlIHRlc3QgZmluaXNoZXMKKyAgICBj
b25zdCB0aW1lX3QgZW5kX3RpbWUgPSB0aW1lKE5VTEwpOworCisgICAgLy8gQXNzZXJ0cyB0aGF0
IHRoZSB0ZXN0IHRvb2sgbm8gbW9yZSB0aGFuIH41IHNlY29uZHMuICBEaWQgeW91CisgICAgLy8g
a25vdyB0aGF0IHlvdSBjYW4gdXNlIGFzc2VydGlvbnMgaW4gU2V0VXAoKSBhbmQgVGVhckRvd24o
KSBhcworICAgIC8vIHdlbGw/CisgICAgRVhQRUNUX1RSVUUoZW5kX3RpbWUgLSBzdGFydF90aW1l
XyA8PSA1KSA8PCAiVGhlIHRlc3QgdG9vayB0b28gbG9uZy4iOworICB9CisKKyAgLy8gVGhlIFVU
QyB0aW1lIChpbiBzZWNvbmRzKSB3aGVuIHRoZSB0ZXN0IHN0YXJ0cworICB0aW1lX3Qgc3RhcnRf
dGltZV87Cit9OworCisKKy8vIFdlIGRlcml2ZSBhIGZpeHR1cmUgbmFtZWQgSW50ZWdlckZ1bmN0
aW9uVGVzdCBmcm9tIHRoZSBRdWlja1Rlc3QKKy8vIGZpeHR1cmUuICBBbGwgdGVzdHMgdXNpbmcg
dGhpcyBmaXh0dXJlIHdpbGwgYmUgYXV0b21hdGljYWxseQorLy8gcmVxdWlyZWQgdG8gYmUgcXVp
Y2suCitjbGFzcyBJbnRlZ2VyRnVuY3Rpb25UZXN0IDogcHVibGljIFF1aWNrVGVzdCB7CisgIC8v
IFdlIGRvbid0IG5lZWQgYW55IG1vcmUgbG9naWMgdGhhbiBhbHJlYWR5IGluIHRoZSBRdWlja1Rl
c3QgZml4dHVyZS4KKyAgLy8gVGhlcmVmb3JlIHRoZSBib2R5IGlzIGVtcHR5LgorfTsKKworCisv
LyBOb3cgd2UgY2FuIHdyaXRlIHRlc3RzIGluIHRoZSBJbnRlZ2VyRnVuY3Rpb25UZXN0IHRlc3Qg
Y2FzZS4KKworLy8gVGVzdHMgRmFjdG9yaWFsKCkKK1RFU1RfRihJbnRlZ2VyRnVuY3Rpb25UZXN0
LCBGYWN0b3JpYWwpIHsKKyAgLy8gVGVzdHMgZmFjdG9yaWFsIG9mIG5lZ2F0aXZlIG51bWJlcnMu
CisgIEVYUEVDVF9FUSgxLCBGYWN0b3JpYWwoLTUpKTsKKyAgRVhQRUNUX0VRKDEsIEZhY3Rvcmlh
bCgtMSkpOworICBFWFBFQ1RfR1QoRmFjdG9yaWFsKC0xMCksIDApOworCisgIC8vIFRlc3RzIGZh
Y3RvcmlhbCBvZiAwLgorICBFWFBFQ1RfRVEoMSwgRmFjdG9yaWFsKDApKTsKKworICAvLyBUZXN0
cyBmYWN0b3JpYWwgb2YgcG9zaXRpdmUgbnVtYmVycy4KKyAgRVhQRUNUX0VRKDEsIEZhY3Rvcmlh
bCgxKSk7CisgIEVYUEVDVF9FUSgyLCBGYWN0b3JpYWwoMikpOworICBFWFBFQ1RfRVEoNiwgRmFj
dG9yaWFsKDMpKTsKKyAgRVhQRUNUX0VRKDQwMzIwLCBGYWN0b3JpYWwoOCkpOworfQorCisKKy8v
IFRlc3RzIElzUHJpbWUoKQorVEVTVF9GKEludGVnZXJGdW5jdGlvblRlc3QsIElzUHJpbWUpIHsK
KyAgLy8gVGVzdHMgbmVnYXRpdmUgaW5wdXQuCisgIEVYUEVDVF9GQUxTRShJc1ByaW1lKC0xKSk7
CisgIEVYUEVDVF9GQUxTRShJc1ByaW1lKC0yKSk7CisgIEVYUEVDVF9GQUxTRShJc1ByaW1lKElO
VF9NSU4pKTsKKworICAvLyBUZXN0cyBzb21lIHRyaXZpYWwgY2FzZXMuCisgIEVYUEVDVF9GQUxT
RShJc1ByaW1lKDApKTsKKyAgRVhQRUNUX0ZBTFNFKElzUHJpbWUoMSkpOworICBFWFBFQ1RfVFJV
RShJc1ByaW1lKDIpKTsKKyAgRVhQRUNUX1RSVUUoSXNQcmltZSgzKSk7CisKKyAgLy8gVGVzdHMg
cG9zaXRpdmUgaW5wdXQuCisgIEVYUEVDVF9GQUxTRShJc1ByaW1lKDQpKTsKKyAgRVhQRUNUX1RS
VUUoSXNQcmltZSg1KSk7CisgIEVYUEVDVF9GQUxTRShJc1ByaW1lKDYpKTsKKyAgRVhQRUNUX1RS
VUUoSXNQcmltZSgyMykpOworfQorCisKKy8vIFRoZSBuZXh0IHRlc3QgY2FzZSAobmFtZWQgIlF1
ZXVlVGVzdCIpIGFsc28gbmVlZHMgdG8gYmUgcXVpY2ssIHNvCisvLyB3ZSBkZXJpdmUgYW5vdGhl
ciBmaXh0dXJlIGZyb20gUXVpY2tUZXN0LgorLy8KKy8vIFRoZSBRdWV1ZVRlc3QgdGVzdCBmaXh0
dXJlIGhhcyBzb21lIGxvZ2ljIGFuZCBzaGFyZWQgb2JqZWN0cyBpbgorLy8gYWRkaXRpb24gdG8g
d2hhdCdzIGluIFF1aWNrVGVzdCBhbHJlYWR5LiAgV2UgZGVmaW5lIHRoZSBhZGRpdGlvbmFsCisv
LyBzdHVmZiBpbnNpZGUgdGhlIGJvZHkgb2YgdGhlIHRlc3QgZml4dHVyZSwgYXMgdXN1YWwuCitj
bGFzcyBRdWV1ZVRlc3QgOiBwdWJsaWMgUXVpY2tUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHZpcnR1
YWwgdm9pZCBTZXRVcCgpIHsKKyAgICAvLyBGaXJzdCwgd2UgbmVlZCB0byBzZXQgdXAgdGhlIHN1
cGVyIGZpeHR1cmUgKFF1aWNrVGVzdCkuCisgICAgUXVpY2tUZXN0OjpTZXRVcCgpOworCisgICAg
Ly8gU2Vjb25kLCBzb21lIGFkZGl0aW9uYWwgc2V0dXAgZm9yIHRoaXMgZml4dHVyZS4KKyAgICBx
MV8uRW5xdWV1ZSgxKTsKKyAgICBxMl8uRW5xdWV1ZSgyKTsKKyAgICBxMl8uRW5xdWV1ZSgzKTsK
KyAgfQorCisgIC8vIEJ5IGRlZmF1bHQsIFRlYXJEb3duKCkgaW5oZXJpdHMgdGhlIGJlaGF2aW9y
IG9mCisgIC8vIFF1aWNrVGVzdDo6VGVhckRvd24oKS4gIEFzIHdlIGhhdmUgbm8gYWRkaXRpb25h
bCBjbGVhbmluZyB3b3JrCisgIC8vIGZvciBRdWV1ZVRlc3QsIHdlIG9taXQgaXQgaGVyZS4KKyAg
Ly8KKyAgLy8gdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAvLyAgIFF1aWNrVGVzdDo6VGVh
ckRvd24oKTsKKyAgLy8gfQorCisgIFF1ZXVlPGludD4gcTBfOworICBRdWV1ZTxpbnQ+IHExXzsK
KyAgUXVldWU8aW50PiBxMl87Cit9OworCisKKy8vIE5vdywgbGV0J3Mgd3JpdGUgdGVzdHMgdXNp
bmcgdGhlIFF1ZXVlVGVzdCBmaXh0dXJlLgorCisvLyBUZXN0cyB0aGUgZGVmYXVsdCBjb25zdHJ1
Y3Rvci4KK1RFU1RfRihRdWV1ZVRlc3QsIERlZmF1bHRDb25zdHJ1Y3RvcikgeworICBFWFBFQ1Rf
RVEoMHUsIHEwXy5TaXplKCkpOworfQorCisvLyBUZXN0cyBEZXF1ZXVlKCkuCitURVNUX0YoUXVl
dWVUZXN0LCBEZXF1ZXVlKSB7CisgIGludCogbiA9IHEwXy5EZXF1ZXVlKCk7CisgIEVYUEVDVF9U
UlVFKG4gPT0gTlVMTCk7CisKKyAgbiA9IHExXy5EZXF1ZXVlKCk7CisgIEVYUEVDVF9UUlVFKG4g
IT0gTlVMTCk7CisgIEVYUEVDVF9FUSgxLCAqbik7CisgIEVYUEVDVF9FUSgwdSwgcTFfLlNpemUo
KSk7CisgIGRlbGV0ZSBuOworCisgIG4gPSBxMl8uRGVxdWV1ZSgpOworICBFWFBFQ1RfVFJVRShu
ICE9IE5VTEwpOworICBFWFBFQ1RfRVEoMiwgKm4pOworICBFWFBFQ1RfRVEoMXUsIHEyXy5TaXpl
KCkpOworICBkZWxldGUgbjsKK30KKworLy8gSWYgbmVjZXNzYXJ5LCB5b3UgY2FuIGRlcml2ZSBm
dXJ0aGVyIHRlc3QgZml4dHVyZXMgZnJvbSBhIGRlcml2ZWQKKy8vIGZpeHR1cmUgaXRzZWxmLiAg
Rm9yIGV4YW1wbGUsIHlvdSBjYW4gZGVyaXZlIGFub3RoZXIgZml4dHVyZSBmcm9tCisvLyBRdWV1
ZVRlc3QuICBHb29nbGUgVGVzdCBpbXBvc2VzIG5vIGxpbWl0IG9uIGhvdyBkZWVwIHRoZSBoaWVy
YXJjaHkKKy8vIGNhbiBiZS4gIEluIHByYWN0aWNlLCBob3dldmVyLCB5b3UgcHJvYmFibHkgZG9u
J3Qgd2FudCBpdCB0byBiZSB0b28KKy8vIGRlZXAgYXMgdG8gYmUgY29uZnVzaW5nLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGU2X3VuaXR0ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRl
c3Qvc2FtcGxlcy9zYW1wbGU2X3VuaXR0ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmMjAzNmE1MTYwODBi
YTczOTA0YWUzNmRiZjJhZTYwNTUzYTZmMmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVz
dC9zYW1wbGVzL3NhbXBsZTZfdW5pdHRlc3QuY2MKQEAgLTAsMCArMSwyMjQgQEAKKy8vIENvcHly
aWdodCAyMDA4IEdvb2dsZSBJbmMuCisvLyBBbGwgUmlnaHRzIFJlc2VydmVkLgorLy8KKy8vIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisv
LyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRp
b24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisv
LyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEF1dGhvcjogd2FuQGdv
b2dsZS5jb20gKFpoYW55b25nIFdhbikKKworLy8gVGhpcyBzYW1wbGUgc2hvd3MgaG93IHRvIHRl
c3QgY29tbW9uIHByb3BlcnRpZXMgb2YgbXVsdGlwbGUKKy8vIGltcGxlbWVudGF0aW9ucyBvZiB0
aGUgc2FtZSBpbnRlcmZhY2UgKGFrYSBpbnRlcmZhY2UgdGVzdHMpLgorCisvLyBUaGUgaW50ZXJm
YWNlIGFuZCBpdHMgaW1wbGVtZW50YXRpb25zIGFyZSBpbiB0aGlzIGhlYWRlci4KKyNpbmNsdWRl
ICJwcmltZV90YWJsZXMuaCIKKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKy8vIEZpcnN0
LCB3ZSBkZWZpbmUgc29tZSBmYWN0b3J5IGZ1bmN0aW9ucyBmb3IgY3JlYXRpbmcgaW5zdGFuY2Vz
IG9mCisvLyB0aGUgaW1wbGVtZW50YXRpb25zLiAgWW91IG1heSBiZSBhYmxlIHRvIHNraXAgdGhp
cyBzdGVwIGlmIGFsbCB5b3VyCisvLyBpbXBsZW1lbnRhdGlvbnMgY2FuIGJlIGNvbnN0cnVjdGVk
IHRoZSBzYW1lIHdheS4KKwordGVtcGxhdGUgPGNsYXNzIFQ+CitQcmltZVRhYmxlKiBDcmVhdGVQ
cmltZVRhYmxlKCk7CisKK3RlbXBsYXRlIDw+CitQcmltZVRhYmxlKiBDcmVhdGVQcmltZVRhYmxl
PE9uVGhlRmx5UHJpbWVUYWJsZT4oKSB7CisgIHJldHVybiBuZXcgT25UaGVGbHlQcmltZVRhYmxl
OworfQorCit0ZW1wbGF0ZSA8PgorUHJpbWVUYWJsZSogQ3JlYXRlUHJpbWVUYWJsZTxQcmVDYWxj
dWxhdGVkUHJpbWVUYWJsZT4oKSB7CisgIHJldHVybiBuZXcgUHJlQ2FsY3VsYXRlZFByaW1lVGFi
bGUoMTAwMDApOworfQorCisvLyBUaGVuIHdlIGRlZmluZSBhIHRlc3QgZml4dHVyZSBjbGFzcyB0
ZW1wbGF0ZS4KK3RlbXBsYXRlIDxjbGFzcyBUPgorY2xhc3MgUHJpbWVUYWJsZVRlc3QgOiBwdWJs
aWMgdGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICAvLyBUaGUgY3RvciBjYWxscyB0aGUg
ZmFjdG9yeSBmdW5jdGlvbiB0byBjcmVhdGUgYSBwcmltZSB0YWJsZQorICAvLyBpbXBsZW1lbnRl
ZCBieSBULgorICBQcmltZVRhYmxlVGVzdCgpIDogdGFibGVfKENyZWF0ZVByaW1lVGFibGU8VD4o
KSkge30KKworICB2aXJ0dWFsIH5QcmltZVRhYmxlVGVzdCgpIHsgZGVsZXRlIHRhYmxlXzsgfQor
CisgIC8vIE5vdGUgdGhhdCB3ZSB0ZXN0IGFuIGltcGxlbWVudGF0aW9uIHZpYSB0aGUgYmFzZSBp
bnRlcmZhY2UKKyAgLy8gaW5zdGVhZCBvZiB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uIGNsYXNz
LiAgVGhpcyBpcyBpbXBvcnRhbnQKKyAgLy8gZm9yIGtlZXBpbmcgdGhlIHRlc3RzIGNsb3NlIHRv
IHRoZSByZWFsIHdvcmxkIHNjZW5hcmlvLCB3aGVyZSB0aGUKKyAgLy8gaW1wbGVtZW50YXRpb24g
aXMgaW52b2tlZCB2aWEgdGhlIGJhc2UgaW50ZXJmYWNlLiAgSXQgYXZvaWRzCisgIC8vIGdvdC15
YXMgd2hlcmUgdGhlIGltcGxlbWVudGF0aW9uIGNsYXNzIGhhcyBhIG1ldGhvZCB0aGF0IHNoYWRv
d3MKKyAgLy8gYSBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lIChidXQgc2xpZ2h0bHkgZGlmZmVy
ZW50IGFyZ3VtZW50CisgIC8vIHR5cGVzKSBpbiB0aGUgYmFzZSBpbnRlcmZhY2UsIGZvciBleGFt
cGxlLgorICBQcmltZVRhYmxlKiBjb25zdCB0YWJsZV87Cit9OworCisjaWYgR1RFU1RfSEFTX1RZ
UEVEX1RFU1QKKwordXNpbmcgdGVzdGluZzo6VHlwZXM7CisKKy8vIEdvb2dsZSBUZXN0IG9mZmVy
cyB0d28gd2F5cyBmb3IgcmV1c2luZyB0ZXN0cyBmb3IgZGlmZmVyZW50IHR5cGVzLgorLy8gVGhl
IGZpcnN0IGlzIGNhbGxlZCAidHlwZWQgdGVzdHMiLiAgWW91IHNob3VsZCB1c2UgaXQgaWYgeW91
CisvLyBhbHJlYWR5IGtub3cgKmFsbCogdGhlIHR5cGVzIHlvdSBhcmUgZ29ubmEgZXhlcmNpc2Ug
d2hlbiB5b3Ugd3JpdGUKKy8vIHRoZSB0ZXN0cy4KKworLy8gVG8gd3JpdGUgYSB0eXBlZCB0ZXN0
IGNhc2UsIGZpcnN0IHVzZQorLy8KKy8vICAgVFlQRURfVEVTVF9DQVNFKFRlc3RDYXNlTmFtZSwg
VHlwZUxpc3QpOworLy8KKy8vIHRvIGRlY2xhcmUgaXQgYW5kIHNwZWNpZnkgdGhlIHR5cGUgcGFy
YW1ldGVycy4gIEFzIHdpdGggVEVTVF9GLAorLy8gVGVzdENhc2VOYW1lIG11c3QgbWF0Y2ggdGhl
IHRlc3QgZml4dHVyZSBuYW1lLgorCisvLyBUaGUgbGlzdCBvZiB0eXBlcyB3ZSB3YW50IHRvIHRl
c3QuCit0eXBlZGVmIFR5cGVzPE9uVGhlRmx5UHJpbWVUYWJsZSwgUHJlQ2FsY3VsYXRlZFByaW1l
VGFibGU+IEltcGxlbWVudGF0aW9uczsKKworVFlQRURfVEVTVF9DQVNFKFByaW1lVGFibGVUZXN0
LCBJbXBsZW1lbnRhdGlvbnMpOworCisvLyBUaGVuIHVzZSBUWVBFRF9URVNUKFRlc3RDYXNlTmFt
ZSwgVGVzdE5hbWUpIHRvIGRlZmluZSBhIHR5cGVkIHRlc3QsCisvLyBzaW1pbGFyIHRvIFRFU1Rf
Ri4KK1RZUEVEX1RFU1QoUHJpbWVUYWJsZVRlc3QsIFJldHVybnNGYWxzZUZvck5vblByaW1lcykg
eworICAvLyBJbnNpZGUgdGhlIHRlc3QgYm9keSwgeW91IGNhbiByZWZlciB0byB0aGUgdHlwZSBw
YXJhbWV0ZXIgYnkKKyAgLy8gVHlwZVBhcmFtLCBhbmQgcmVmZXIgdG8gdGhlIGZpeHR1cmUgY2xh
c3MgYnkgVGVzdEZpeHR1cmUuICBXZQorICAvLyBkb24ndCBuZWVkIHRoZW0gaW4gdGhpcyBleGFt
cGxlLgorCisgIC8vIFNpbmNlIHdlIGFyZSBpbiB0aGUgdGVtcGxhdGUgd29ybGQsIEMrKyByZXF1
aXJlcyBleHBsaWNpdGx5CisgIC8vIHdyaXRpbmcgJ3RoaXMtPicgd2hlbiByZWZlcnJpbmcgdG8g
bWVtYmVycyBvZiB0aGUgZml4dHVyZSBjbGFzcy4KKyAgLy8gVGhpcyBpcyBzb21ldGhpbmcgeW91
IGhhdmUgdG8gbGVhcm4gdG8gbGl2ZSB3aXRoLgorICBFWFBFQ1RfRkFMU0UodGhpcy0+dGFibGVf
LT5Jc1ByaW1lKC01KSk7CisgIEVYUEVDVF9GQUxTRSh0aGlzLT50YWJsZV8tPklzUHJpbWUoMCkp
OworICBFWFBFQ1RfRkFMU0UodGhpcy0+dGFibGVfLT5Jc1ByaW1lKDEpKTsKKyAgRVhQRUNUX0ZB
TFNFKHRoaXMtPnRhYmxlXy0+SXNQcmltZSg0KSk7CisgIEVYUEVDVF9GQUxTRSh0aGlzLT50YWJs
ZV8tPklzUHJpbWUoNikpOworICBFWFBFQ1RfRkFMU0UodGhpcy0+dGFibGVfLT5Jc1ByaW1lKDEw
MCkpOworfQorCitUWVBFRF9URVNUKFByaW1lVGFibGVUZXN0LCBSZXR1cm5zVHJ1ZUZvclByaW1l
cykgeworICBFWFBFQ1RfVFJVRSh0aGlzLT50YWJsZV8tPklzUHJpbWUoMikpOworICBFWFBFQ1Rf
VFJVRSh0aGlzLT50YWJsZV8tPklzUHJpbWUoMykpOworICBFWFBFQ1RfVFJVRSh0aGlzLT50YWJs
ZV8tPklzUHJpbWUoNSkpOworICBFWFBFQ1RfVFJVRSh0aGlzLT50YWJsZV8tPklzUHJpbWUoNykp
OworICBFWFBFQ1RfVFJVRSh0aGlzLT50YWJsZV8tPklzUHJpbWUoMTEpKTsKKyAgRVhQRUNUX1RS
VUUodGhpcy0+dGFibGVfLT5Jc1ByaW1lKDEzMSkpOworfQorCitUWVBFRF9URVNUKFByaW1lVGFi
bGVUZXN0LCBDYW5HZXROZXh0UHJpbWUpIHsKKyAgRVhQRUNUX0VRKDIsIHRoaXMtPnRhYmxlXy0+
R2V0TmV4dFByaW1lKDApKTsKKyAgRVhQRUNUX0VRKDMsIHRoaXMtPnRhYmxlXy0+R2V0TmV4dFBy
aW1lKDIpKTsKKyAgRVhQRUNUX0VRKDUsIHRoaXMtPnRhYmxlXy0+R2V0TmV4dFByaW1lKDMpKTsK
KyAgRVhQRUNUX0VRKDcsIHRoaXMtPnRhYmxlXy0+R2V0TmV4dFByaW1lKDUpKTsKKyAgRVhQRUNU
X0VRKDExLCB0aGlzLT50YWJsZV8tPkdldE5leHRQcmltZSg3KSk7CisgIEVYUEVDVF9FUSgxMzEs
IHRoaXMtPnRhYmxlXy0+R2V0TmV4dFByaW1lKDEyOCkpOworfQorCisvLyBUaGF0J3MgaXQhICBH
b29nbGUgVGVzdCB3aWxsIHJlcGVhdCBlYWNoIFRZUEVEX1RFU1QgZm9yIGVhY2ggdHlwZQorLy8g
aW4gdGhlIHR5cGUgbGlzdCBzcGVjaWZpZWQgaW4gVFlQRURfVEVTVF9DQVNFLiAgU2l0IGJhY2sg
YW5kIGJlCisvLyBoYXBweSB0aGF0IHlvdSBkb24ndCBoYXZlIHRvIGRlZmluZSB0aGVtIG11bHRp
cGxlIHRpbWVzLgorCisjZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUCisKKyNpZiBHVEVT
VF9IQVNfVFlQRURfVEVTVF9QCisKK3VzaW5nIHRlc3Rpbmc6OlR5cGVzOworCisvLyBTb21ldGlt
ZXMsIGhvd2V2ZXIsIHlvdSBkb24ndCB5ZXQga25vdyBhbGwgdGhlIHR5cGVzIHRoYXQgeW91IHdh
bnQKKy8vIHRvIHRlc3Qgd2hlbiB5b3Ugd3JpdGUgdGhlIHRlc3RzLiAgRm9yIGV4YW1wbGUsIGlm
IHlvdSBhcmUgdGhlCisvLyBhdXRob3Igb2YgYW4gaW50ZXJmYWNlIGFuZCBleHBlY3Qgb3RoZXIg
cGVvcGxlIHRvIGltcGxlbWVudCBpdCwgeW91CisvLyBtaWdodCB3YW50IHRvIHdyaXRlIGEgc2V0
IG9mIHRlc3RzIHRvIG1ha2Ugc3VyZSBlYWNoIGltcGxlbWVudGF0aW9uCisvLyBjb25mb3JtcyB0
byBzb21lIGJhc2ljIHJlcXVpcmVtZW50cywgYnV0IHlvdSBkb24ndCBrbm93IHdoYXQKKy8vIGlt
cGxlbWVudGF0aW9ucyB3aWxsIGJlIHdyaXR0ZW4gaW4gdGhlIGZ1dHVyZS4KKy8vCisvLyBIb3cg
Y2FuIHlvdSB3cml0ZSB0aGUgdGVzdHMgd2l0aG91dCBjb21taXR0aW5nIHRvIHRoZSB0eXBlCisv
LyBwYXJhbWV0ZXJzPyAgVGhhdCdzIHdoYXQgInR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cyIgY2Fu
IGRvIGZvciB5b3UuCisvLyBJdCBpcyBhIGJpdCBtb3JlIGludm9sdmVkIHRoYW4gdHlwZWQgdGVz
dHMsIGJ1dCBpbiByZXR1cm4geW91IGdldCBhCisvLyB0ZXN0IHBhdHRlcm4gdGhhdCBjYW4gYmUg
cmV1c2VkIGluIG1hbnkgY29udGV4dHMsIHdoaWNoIGlzIGEgYmlnCisvLyB3aW4uICBIZXJlJ3Mg
aG93IHlvdSBkbyBpdDoKKworLy8gRmlyc3QsIGRlZmluZSBhIHRlc3QgZml4dHVyZSBjbGFzcyB0
ZW1wbGF0ZS4gIEhlcmUgd2UganVzdCByZXVzZQorLy8gdGhlIFByaW1lVGFibGVUZXN0IGZpeHR1
cmUgZGVmaW5lZCBlYXJsaWVyOgorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK2NsYXNzIFByaW1lVGFi
bGVUZXN0MiA6IHB1YmxpYyBQcmltZVRhYmxlVGVzdDxUPiB7Cit9OworCisvLyBUaGVuLCBkZWNs
YXJlIHRoZSB0ZXN0IGNhc2UuICBUaGUgYXJndW1lbnQgaXMgdGhlIG5hbWUgb2YgdGhlIHRlc3QK
Ky8vIGZpeHR1cmUsIGFuZCBhbHNvIHRoZSBuYW1lIG9mIHRoZSB0ZXN0IGNhc2UgKGFzIHVzdWFs
KS4gIFRoZSBfUAorLy8gc3VmZml4IGlzIGZvciAicGFyYW1ldGVyaXplZCIgb3IgInBhdHRlcm4i
LgorVFlQRURfVEVTVF9DQVNFX1AoUHJpbWVUYWJsZVRlc3QyKTsKKworLy8gTmV4dCwgdXNlIFRZ
UEVEX1RFU1RfUChUZXN0Q2FzZU5hbWUsIFRlc3ROYW1lKSB0byBkZWZpbmUgYSB0ZXN0LAorLy8g
c2ltaWxhciB0byB3aGF0IHlvdSBkbyB3aXRoIFRFU1RfRi4KK1RZUEVEX1RFU1RfUChQcmltZVRh
YmxlVGVzdDIsIFJldHVybnNGYWxzZUZvck5vblByaW1lcykgeworICBFWFBFQ1RfRkFMU0UodGhp
cy0+dGFibGVfLT5Jc1ByaW1lKC01KSk7CisgIEVYUEVDVF9GQUxTRSh0aGlzLT50YWJsZV8tPklz
UHJpbWUoMCkpOworICBFWFBFQ1RfRkFMU0UodGhpcy0+dGFibGVfLT5Jc1ByaW1lKDEpKTsKKyAg
RVhQRUNUX0ZBTFNFKHRoaXMtPnRhYmxlXy0+SXNQcmltZSg0KSk7CisgIEVYUEVDVF9GQUxTRSh0
aGlzLT50YWJsZV8tPklzUHJpbWUoNikpOworICBFWFBFQ1RfRkFMU0UodGhpcy0+dGFibGVfLT5J
c1ByaW1lKDEwMCkpOworfQorCitUWVBFRF9URVNUX1AoUHJpbWVUYWJsZVRlc3QyLCBSZXR1cm5z
VHJ1ZUZvclByaW1lcykgeworICBFWFBFQ1RfVFJVRSh0aGlzLT50YWJsZV8tPklzUHJpbWUoMikp
OworICBFWFBFQ1RfVFJVRSh0aGlzLT50YWJsZV8tPklzUHJpbWUoMykpOworICBFWFBFQ1RfVFJV
RSh0aGlzLT50YWJsZV8tPklzUHJpbWUoNSkpOworICBFWFBFQ1RfVFJVRSh0aGlzLT50YWJsZV8t
PklzUHJpbWUoNykpOworICBFWFBFQ1RfVFJVRSh0aGlzLT50YWJsZV8tPklzUHJpbWUoMTEpKTsK
KyAgRVhQRUNUX1RSVUUodGhpcy0+dGFibGVfLT5Jc1ByaW1lKDEzMSkpOworfQorCitUWVBFRF9U
RVNUX1AoUHJpbWVUYWJsZVRlc3QyLCBDYW5HZXROZXh0UHJpbWUpIHsKKyAgRVhQRUNUX0VRKDIs
IHRoaXMtPnRhYmxlXy0+R2V0TmV4dFByaW1lKDApKTsKKyAgRVhQRUNUX0VRKDMsIHRoaXMtPnRh
YmxlXy0+R2V0TmV4dFByaW1lKDIpKTsKKyAgRVhQRUNUX0VRKDUsIHRoaXMtPnRhYmxlXy0+R2V0
TmV4dFByaW1lKDMpKTsKKyAgRVhQRUNUX0VRKDcsIHRoaXMtPnRhYmxlXy0+R2V0TmV4dFByaW1l
KDUpKTsKKyAgRVhQRUNUX0VRKDExLCB0aGlzLT50YWJsZV8tPkdldE5leHRQcmltZSg3KSk7Cisg
IEVYUEVDVF9FUSgxMzEsIHRoaXMtPnRhYmxlXy0+R2V0TmV4dFByaW1lKDEyOCkpOworfQorCisv
LyBUeXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMgaW52b2x2ZSBvbmUgZXh0cmEgc3RlcDogeW91IGhh
dmUgdG8KKy8vIGVudW1lcmF0ZSB0aGUgdGVzdHMgeW91IGRlZmluZWQ6CitSRUdJU1RFUl9UWVBF
RF9URVNUX0NBU0VfUCgKKyAgICBQcmltZVRhYmxlVGVzdDIsICAvLyBUaGUgZmlyc3QgYXJndW1l
bnQgaXMgdGhlIHRlc3QgY2FzZSBuYW1lLgorICAgIC8vIFRoZSByZXN0IG9mIHRoZSBhcmd1bWVu
dHMgYXJlIHRoZSB0ZXN0IG5hbWVzLgorICAgIFJldHVybnNGYWxzZUZvck5vblByaW1lcywgUmV0
dXJuc1RydWVGb3JQcmltZXMsIENhbkdldE5leHRQcmltZSk7CisKKy8vIEF0IHRoaXMgcG9pbnQg
dGhlIHRlc3QgcGF0dGVybiBpcyBkb25lLiAgSG93ZXZlciwgeW91IGRvbid0IGhhdmUKKy8vIGFu
eSByZWFsIHRlc3QgeWV0IGFzIHlvdSBoYXZlbid0IHNhaWQgd2hpY2ggdHlwZXMgeW91IHdhbnQg
dG8gcnVuCisvLyB0aGUgdGVzdHMgd2l0aC4KKworLy8gVG8gdHVybiB0aGUgYWJzdHJhY3QgdGVz
dCBwYXR0ZXJuIGludG8gcmVhbCB0ZXN0cywgeW91IGluc3RhbnRpYXRlCisvLyBpdCB3aXRoIGEg
bGlzdCBvZiB0eXBlcy4gIFVzdWFsbHkgdGhlIHRlc3QgcGF0dGVybiB3aWxsIGJlIGRlZmluZWQK
Ky8vIGluIGEgLmggZmlsZSwgYW5kIGFueW9uZSBjYW4gI2luY2x1ZGUgYW5kIGluc3RhbnRpYXRl
IGl0LiAgWW91IGNhbgorLy8gZXZlbiBpbnN0YW50aWF0ZSBpdCBtb3JlIHRoYW4gb25jZSBpbiB0
aGUgc2FtZSBwcm9ncmFtLiAgVG8gdGVsbAorLy8gZGlmZmVyZW50IGluc3RhbmNlcyBhcGFydCwg
eW91IGdpdmUgZWFjaCBvZiB0aGVtIGEgbmFtZSwgd2hpY2ggd2lsbAorLy8gYmVjb21lIHBhcnQg
b2YgdGhlIHRlc3QgY2FzZSBuYW1lIGFuZCBjYW4gYmUgdXNlZCBpbiB0ZXN0IGZpbHRlcnMuCisK
Ky8vIFRoZSBsaXN0IG9mIHR5cGVzIHdlIHdhbnQgdG8gdGVzdC4gIE5vdGUgdGhhdCBpdCBkb2Vz
bid0IGhhdmUgdG8gYmUKKy8vIGRlZmluZWQgYXQgdGhlIHRpbWUgd2Ugd3JpdGUgdGhlIFRZUEVE
X1RFU1RfUCgpcy4KK3R5cGVkZWYgVHlwZXM8T25UaGVGbHlQcmltZVRhYmxlLCBQcmVDYWxjdWxh
dGVkUHJpbWVUYWJsZT4KKyAgICBQcmltZVRhYmxlSW1wbGVtZW50YXRpb25zOworSU5TVEFOVElB
VEVfVFlQRURfVEVTVF9DQVNFX1AoT25UaGVGbHlBbmRQcmVDYWxjdWxhdGVkLCAgICAvLyBJbnN0
YW5jZSBuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmltZVRhYmxlVGVzdDIs
ICAgICAgICAgICAgIC8vIFRlc3QgY2FzZSBuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQcmltZVRhYmxlSW1wbGVtZW50YXRpb25zKTsgIC8vIFR5cGUgbGlzdAorCisjZW5kaWYg
IC8vIEdURVNUX0hBU19UWVBFRF9URVNUX1AKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NhbXBs
ZXMvc2FtcGxlN191bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NhbXBsZXMvc2FtcGxlN191bml0
dGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xYjY1MWEyMWQ2NDkyZjAyZWM2YzMwMGNmNmE3ZWFkZDVkNDdm
YzVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGU3X3VuaXR0
ZXN0LmNjCkBAIC0wLDAgKzEsMTMwIEBACisvLyBDb3B5cmlnaHQgMjAwOCBHb29nbGUgSW5jLgor
Ly8gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
Ly8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8g
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKy8vCisvLyBBdXRob3I6IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYp
CisKKy8vIFRoaXMgc2FtcGxlIHNob3dzIGhvdyB0byB0ZXN0IGNvbW1vbiBwcm9wZXJ0aWVzIG9m
IG11bHRpcGxlCisvLyBpbXBsZW1lbnRhdGlvbnMgb2YgYW4gaW50ZXJmYWNlIChha2EgaW50ZXJm
YWNlIHRlc3RzKSB1c2luZworLy8gdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cy4gRWFjaCB0ZXN0
IGluIHRoZSB0ZXN0IGNhc2UgaGFzCisvLyBhIHBhcmFtZXRlciB0aGF0IGlzIGFuIGludGVyZmFj
ZSBwb2ludGVyIHRvIGFuIGltcGxlbWVudGF0aW9uCisvLyB0ZXN0ZWQuCisKKy8vIFRoZSBpbnRl
cmZhY2UgYW5kIGl0cyBpbXBsZW1lbnRhdGlvbnMgYXJlIGluIHRoaXMgaGVhZGVyLgorI2luY2x1
ZGUgInByaW1lX3RhYmxlcy5oIgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworI2lmIEdU
RVNUX0hBU19QQVJBTV9URVNUCisKK3VzaW5nIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTsKK3Vz
aW5nIDo6dGVzdGluZzo6VmFsdWVzOworCisvLyBBcyBhIGdlbmVyYWwgcnVsZSwgdG8gcHJldmVu
dCBhIHRlc3QgZnJvbSBhZmZlY3RpbmcgdGhlIHRlc3RzIHRoYXQgY29tZQorLy8gYWZ0ZXIgaXQs
IHlvdSBzaG91bGQgY3JlYXRlIGFuZCBkZXN0cm95IHRoZSB0ZXN0ZWQgb2JqZWN0cyBmb3IgZWFj
aCB0ZXN0CisvLyBpbnN0ZWFkIG9mIHJldXNpbmcgdGhlbS4gIEluIHRoaXMgc2FtcGxlIHdlIHdp
bGwgZGVmaW5lIGEgc2ltcGxlIGZhY3RvcnkKKy8vIGZ1bmN0aW9uIGZvciBQcmltZVRhYmxlIG9i
amVjdHMuICBXZSB3aWxsIGluc3RhbnRpYXRlIG9iamVjdHMgaW4gdGVzdCdzCisvLyBTZXRVcCgp
IG1ldGhvZCBhbmQgZGVsZXRlIHRoZW0gaW4gVGVhckRvd24oKSBtZXRob2QuCit0eXBlZGVmIFBy
aW1lVGFibGUqIENyZWF0ZVByaW1lVGFibGVGdW5jKCk7CisKK1ByaW1lVGFibGUqIENyZWF0ZU9u
VGhlRmx5UHJpbWVUYWJsZSgpIHsKKyAgcmV0dXJuIG5ldyBPblRoZUZseVByaW1lVGFibGUoKTsK
K30KKwordGVtcGxhdGUgPHNpemVfdCBtYXhfcHJlY2FsY3VsYXRlZD4KK1ByaW1lVGFibGUqIENy
ZWF0ZVByZUNhbGN1bGF0ZWRQcmltZVRhYmxlKCkgeworICByZXR1cm4gbmV3IFByZUNhbGN1bGF0
ZWRQcmltZVRhYmxlKG1heF9wcmVjYWxjdWxhdGVkKTsKK30KKworLy8gSW5zaWRlIHRoZSB0ZXN0
IGJvZHksIGZpeHR1cmUgY29uc3RydWN0b3IsIFNldFVwKCksIGFuZCBUZWFyRG93bigpIHlvdQor
Ly8gY2FuIHJlZmVyIHRvIHRoZSB0ZXN0IHBhcmFtZXRlciBieSBHZXRQYXJhbSgpLiAgSW4gdGhp
cyBjYXNlLCB0aGUgdGVzdAorLy8gcGFyYW1ldGVyIGlzIGEgZmFjdG9yeSBmdW5jdGlvbiB3aGlj
aCB3ZSBjYWxsIGluIGZpeHR1cmUncyBTZXRVcCgpIHRvCisvLyBjcmVhdGUgYW5kIHN0b3JlIGFu
IGluc3RhbmNlIG9mIFByaW1lVGFibGUuCitjbGFzcyBQcmltZVRhYmxlVGVzdCA6IHB1YmxpYyBU
ZXN0V2l0aFBhcmFtPENyZWF0ZVByaW1lVGFibGVGdW5jKj4geworIHB1YmxpYzoKKyAgdmlydHVh
bCB+UHJpbWVUYWJsZVRlc3QoKSB7IGRlbGV0ZSB0YWJsZV87IH0KKyAgdmlydHVhbCB2b2lkIFNl
dFVwKCkgeyB0YWJsZV8gPSAoKkdldFBhcmFtKCkpKCk7IH0KKyAgdmlydHVhbCB2b2lkIFRlYXJE
b3duKCkgeworICAgIGRlbGV0ZSB0YWJsZV87CisgICAgdGFibGVfID0gTlVMTDsKKyAgfQorCisg
cHJvdGVjdGVkOgorICBQcmltZVRhYmxlKiB0YWJsZV87Cit9OworCitURVNUX1AoUHJpbWVUYWJs
ZVRlc3QsIFJldHVybnNGYWxzZUZvck5vblByaW1lcykgeworICBFWFBFQ1RfRkFMU0UodGFibGVf
LT5Jc1ByaW1lKC01KSk7CisgIEVYUEVDVF9GQUxTRSh0YWJsZV8tPklzUHJpbWUoMCkpOworICBF
WFBFQ1RfRkFMU0UodGFibGVfLT5Jc1ByaW1lKDEpKTsKKyAgRVhQRUNUX0ZBTFNFKHRhYmxlXy0+
SXNQcmltZSg0KSk7CisgIEVYUEVDVF9GQUxTRSh0YWJsZV8tPklzUHJpbWUoNikpOworICBFWFBF
Q1RfRkFMU0UodGFibGVfLT5Jc1ByaW1lKDEwMCkpOworfQorCitURVNUX1AoUHJpbWVUYWJsZVRl
c3QsIFJldHVybnNUcnVlRm9yUHJpbWVzKSB7CisgIEVYUEVDVF9UUlVFKHRhYmxlXy0+SXNQcmlt
ZSgyKSk7CisgIEVYUEVDVF9UUlVFKHRhYmxlXy0+SXNQcmltZSgzKSk7CisgIEVYUEVDVF9UUlVF
KHRhYmxlXy0+SXNQcmltZSg1KSk7CisgIEVYUEVDVF9UUlVFKHRhYmxlXy0+SXNQcmltZSg3KSk7
CisgIEVYUEVDVF9UUlVFKHRhYmxlXy0+SXNQcmltZSgxMSkpOworICBFWFBFQ1RfVFJVRSh0YWJs
ZV8tPklzUHJpbWUoMTMxKSk7Cit9CisKK1RFU1RfUChQcmltZVRhYmxlVGVzdCwgQ2FuR2V0TmV4
dFByaW1lKSB7CisgIEVYUEVDVF9FUSgyLCB0YWJsZV8tPkdldE5leHRQcmltZSgwKSk7CisgIEVY
UEVDVF9FUSgzLCB0YWJsZV8tPkdldE5leHRQcmltZSgyKSk7CisgIEVYUEVDVF9FUSg1LCB0YWJs
ZV8tPkdldE5leHRQcmltZSgzKSk7CisgIEVYUEVDVF9FUSg3LCB0YWJsZV8tPkdldE5leHRQcmlt
ZSg1KSk7CisgIEVYUEVDVF9FUSgxMSwgdGFibGVfLT5HZXROZXh0UHJpbWUoNykpOworICBFWFBF
Q1RfRVEoMTMxLCB0YWJsZV8tPkdldE5leHRQcmltZSgxMjgpKTsKK30KKworLy8gSW4gb3JkZXIg
dG8gcnVuIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMsIHlvdSBuZWVkIHRvIGluc3RhbnRpYXRl
IHRoZW0sCisvLyBvciBiaW5kIHRoZW0gdG8gYSBsaXN0IG9mIHZhbHVlcyB3aGljaCB3aWxsIGJl
IHVzZWQgYXMgdGVzdCBwYXJhbWV0ZXJzLgorLy8gWW91IGNhbiBpbnN0YW50aWF0ZSB0aGVtIGlu
IGEgZGlmZmVyZW50IHRyYW5zbGF0aW9uIG1vZHVsZSwgb3IgZXZlbgorLy8gaW5zdGFudGlhdGUg
dGhlbSBzZXZlcmFsIHRpbWVzLgorLy8KKy8vIEhlcmUsIHdlIGluc3RhbnRpYXRlIG91ciB0ZXN0
cyB3aXRoIGEgbGlzdCBvZiB0d28gUHJpbWVUYWJsZSBvYmplY3QKKy8vIGZhY3RvcnkgZnVuY3Rp
b25zOgorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoCisgICAgT25UaGVGbHlBbmRQcmVDYWxjdWxh
dGVkLAorICAgIFByaW1lVGFibGVUZXN0LAorICAgIFZhbHVlcygmQ3JlYXRlT25UaGVGbHlQcmlt
ZVRhYmxlLCAmQ3JlYXRlUHJlQ2FsY3VsYXRlZFByaW1lVGFibGU8MTAwMD4pKTsKKworI2Vsc2UK
KworLy8gR29vZ2xlIFRlc3QgbWF5IG5vdCBzdXBwb3J0IHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVz
dHMgd2l0aCBzb21lCisvLyBjb21waWxlcnMuIElmIHdlIHVzZSBjb25kaXRpb25hbCBjb21waWxh
dGlvbiB0byBjb21waWxlIG91dCBhbGwKKy8vIGNvZGUgcmVmZXJyaW5nIHRvIHRoZSBndGVzdF9t
YWluIGxpYnJhcnksIE1TVkMgbGlua2VyIHdpbGwgbm90IGxpbmsKKy8vIHRoYXQgbGlicmFyeSBh
dCBhbGwgYW5kIGNvbnNlcXVlbnRseSBjb21wbGFpbiBhYm91dCBtaXNzaW5nIGVudHJ5CisvLyBw
b2ludCBkZWZpbmVkIGluIHRoYXQgbGlicmFyeSAoZmF0YWwgZXJyb3IgTE5LMTU2MTogZW50cnkg
cG9pbnQKKy8vIG11c3QgYmUgZGVmaW5lZCkuIFRoaXMgZHVtbXkgdGVzdCBrZWVwcyBndGVzdF9t
YWluIGxpbmtlZCBpbi4KK1RFU1QoRHVtbXlUZXN0LCBWYWx1ZVBhcmFtZXRlcml6ZWRUZXN0c0Fy
ZU5vdFN1cHBvcnRlZE9uVGhpc1BsYXRmb3JtKSB7fQorCisjZW5kaWYgIC8vIEdURVNUX0hBU19Q
QVJBTV9URVNUCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zYW1wbGVzL3NhbXBsZThfdW5pdHRl
c3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xldGVzdC9zYW1wbGVzL3NhbXBsZThfdW5pdHRlc3QuY2MKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzI3NDMzNDA2NzQ4ODg1MTJmYzM4NjA4YzEzOGE0MGY5YWEzMmQ4MgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGV0ZXN0L3NhbXBsZXMvc2FtcGxlOF91bml0dGVzdC5jYwpAQCAtMCwwICsx
LDE3MyBAQAorLy8gQ29weXJpZ2h0IDIwMDggR29vZ2xlIEluYy4KKy8vIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLwor
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisv
LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLwor
Ly8gQXV0aG9yOiB2bGFkbEBnb29nbGUuY29tIChWbGFkIExvc2V2KQorCisvLyBUaGlzIHNhbXBs
ZSBzaG93cyBob3cgdG8gdGVzdCBjb2RlIHJlbHlpbmcgb24gc29tZSBnbG9iYWwgZmxhZyB2YXJp
YWJsZXMuCisvLyBDb21iaW5lKCkgaGVscHMgd2l0aCBnZW5lcmF0aW5nIGFsbCBwb3NzaWJsZSBj
b21iaW5hdGlvbnMgb2Ygc3VjaCBmbGFncywKKy8vIGFuZCBlYWNoIHRlc3QgaXMgZ2l2ZW4gb25l
IGNvbWJpbmF0aW9uIGFzIGEgcGFyYW1ldGVyLgorCisvLyBVc2UgY2xhc3MgZGVmaW5pdGlvbnMg
dG8gdGVzdCBmcm9tIHRoaXMgaGVhZGVyLgorI2luY2x1ZGUgInByaW1lX3RhYmxlcy5oIgorCisj
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworI2lmIEdURVNUX0hBU19DT01CSU5FCisKKy8vIFN1
cHBvc2Ugd2Ugd2FudCB0byBpbnRyb2R1Y2UgYSBuZXcsIGltcHJvdmVkIGltcGxlbWVudGF0aW9u
IG9mIFByaW1lVGFibGUKKy8vIHdoaWNoIGNvbWJpbmVzIHNwZWVkIG9mIFByZWNhbGNQcmltZVRh
YmxlIGFuZCB2ZXJzYXRpbGl0eSBvZgorLy8gT25UaGVGbHlQcmltZVRhYmxlIChzZWUgcHJpbWVf
dGFibGVzLmgpLiBJbnNpZGUgaXQgaW5zdGFudGlhdGVzIGJvdGgKKy8vIFByZWNhbGNQcmltZVRh
YmxlIGFuZCBPblRoZUZseVByaW1lVGFibGUgYW5kIHVzZXMgdGhlIG9uZSB0aGF0IGlzIG1vcmUK
Ky8vIGFwcHJvcHJpYXRlIHVuZGVyIHRoZSBjaXJjdW1zdGFuY2VzLiBCdXQgaW4gbG93IG1lbW9y
eSBjb25kaXRpb25zLCBpdCBjYW4gYmUKKy8vIHRvbGQgdG8gaW5zdGFudGlhdGUgd2l0aG91dCBQ
cmVjYWxjUHJpbWVUYWJsZSBpbnN0YW5jZSBhdCBhbGwgYW5kIHVzZSBvbmx5CisvLyBPblRoZUZs
eVByaW1lVGFibGUuCitjbGFzcyBIeWJyaWRQcmltZVRhYmxlIDogcHVibGljIFByaW1lVGFibGUg
eworIHB1YmxpYzoKKyAgSHlicmlkUHJpbWVUYWJsZShib29sIGZvcmNlX29uX3RoZV9mbHksIGlu
dCBtYXhfcHJlY2FsY3VsYXRlZCkKKyAgICAgIDogb25fdGhlX2ZseV9pbXBsXyhuZXcgT25UaGVG
bHlQcmltZVRhYmxlKSwKKyAgICAgICAgcHJlY2FsY19pbXBsXyhmb3JjZV9vbl90aGVfZmx5ID8g
TlVMTCA6CisgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBQcmVDYWxjdWxhdGVkUHJpbWVU
YWJsZShtYXhfcHJlY2FsY3VsYXRlZCkpLAorICAgICAgICBtYXhfcHJlY2FsY3VsYXRlZF8obWF4
X3ByZWNhbGN1bGF0ZWQpIHt9CisgIHZpcnR1YWwgfkh5YnJpZFByaW1lVGFibGUoKSB7CisgICAg
ZGVsZXRlIG9uX3RoZV9mbHlfaW1wbF87CisgICAgZGVsZXRlIHByZWNhbGNfaW1wbF87CisgIH0K
KworICB2aXJ0dWFsIGJvb2wgSXNQcmltZShpbnQgbikgY29uc3QgeworICAgIGlmIChwcmVjYWxj
X2ltcGxfICE9IE5VTEwgJiYgbiA8IG1heF9wcmVjYWxjdWxhdGVkXykKKyAgICAgIHJldHVybiBw
cmVjYWxjX2ltcGxfLT5Jc1ByaW1lKG4pOworICAgIGVsc2UKKyAgICAgIHJldHVybiBvbl90aGVf
Zmx5X2ltcGxfLT5Jc1ByaW1lKG4pOworICB9CisKKyAgdmlydHVhbCBpbnQgR2V0TmV4dFByaW1l
KGludCBwKSBjb25zdCB7CisgICAgaW50IG5leHRfcHJpbWUgPSAtMTsKKyAgICBpZiAocHJlY2Fs
Y19pbXBsXyAhPSBOVUxMICYmIHAgPCBtYXhfcHJlY2FsY3VsYXRlZF8pCisgICAgICBuZXh0X3By
aW1lID0gcHJlY2FsY19pbXBsXy0+R2V0TmV4dFByaW1lKHApOworCisgICAgcmV0dXJuIG5leHRf
cHJpbWUgIT0gLTEgPyBuZXh0X3ByaW1lIDogb25fdGhlX2ZseV9pbXBsXy0+R2V0TmV4dFByaW1l
KHApOworICB9CisKKyBwcml2YXRlOgorICBPblRoZUZseVByaW1lVGFibGUqIG9uX3RoZV9mbHlf
aW1wbF87CisgIFByZUNhbGN1bGF0ZWRQcmltZVRhYmxlKiBwcmVjYWxjX2ltcGxfOworICBpbnQg
bWF4X3ByZWNhbGN1bGF0ZWRfOworfTsKKwordXNpbmcgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFt
OwordXNpbmcgOjp0ZXN0aW5nOjpCb29sOwordXNpbmcgOjp0ZXN0aW5nOjpWYWx1ZXM7Cit1c2lu
ZyA6OnRlc3Rpbmc6OkNvbWJpbmU7CisKKy8vIFRvIHRlc3QgYWxsIGNvZGUgcGF0aHMgZm9yIEh5
YnJpZFByaW1lVGFibGUgd2UgbXVzdCB0ZXN0IGl0IHdpdGggbnVtYmVycworLy8gYm90aCB3aXRo
aW4gYW5kIG91dHNpZGUgUHJlQ2FsY3VsYXRlZFByaW1lVGFibGUncyBjYXBhY2l0eSBhbmQgYWxz
byB3aXRoCisvLyBQcmVDYWxjdWxhdGVkUHJpbWVUYWJsZSBkaXNhYmxlZC4gV2UgZG8gdGhpcyBi
eSBkZWZpbmluZyBmaXh0dXJlIHdoaWNoIHdpbGwKKy8vIGFjY2VwdCBkaWZmZXJlbnQgY29tYmlu
YXRpb25zIG9mIHBhcmFtZXRlcnMgZm9yIGluc3RhbnRpYXRpbmcgYQorLy8gSHlicmlkUHJpbWVU
YWJsZSBpbnN0YW5jZS4KK2NsYXNzIFByaW1lVGFibGVUZXN0IDogcHVibGljIFRlc3RXaXRoUGFy
YW08IDo6dGVzdGluZzo6dHVwbGU8Ym9vbCwgaW50PiA+IHsKKyBwcm90ZWN0ZWQ6CisgIHZpcnR1
YWwgdm9pZCBTZXRVcCgpIHsKKyAgICAvLyBUaGlzIGNhbiBiZSB3cml0dGVuIGFzCisgICAgLy8K
KyAgICAvLyBib29sIGZvcmNlX29uX3RoZV9mbHk7CisgICAgLy8gaW50IG1heF9wcmVjYWxjdWxh
dGVkOworICAgIC8vIHRpZShmb3JjZV9vbl90aGVfZmx5LCBtYXhfcHJlY2FsY3VsYXRlZCkgPSBH
ZXRQYXJhbSgpOworICAgIC8vCisgICAgLy8gb25jZSB0aGUgR29vZ2xlIEMrKyBTdHlsZSBHdWlk
ZSBhbGxvd3MgdXNlIG9mIDo6c3RkOjp0cjE6OnRpZS4KKyAgICAvLworICAgIGJvb2wgZm9yY2Vf
b25fdGhlX2ZseSA9IDo6dGVzdGluZzo6Z2V0PDA+KEdldFBhcmFtKCkpOworICAgIGludCBtYXhf
cHJlY2FsY3VsYXRlZCA9IDo6dGVzdGluZzo6Z2V0PDE+KEdldFBhcmFtKCkpOworICAgIHRhYmxl
XyA9IG5ldyBIeWJyaWRQcmltZVRhYmxlKGZvcmNlX29uX3RoZV9mbHksIG1heF9wcmVjYWxjdWxh
dGVkKTsKKyAgfQorICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgZGVsZXRlIHRhYmxl
XzsKKyAgICB0YWJsZV8gPSBOVUxMOworICB9CisgIEh5YnJpZFByaW1lVGFibGUqIHRhYmxlXzsK
K307CisKK1RFU1RfUChQcmltZVRhYmxlVGVzdCwgUmV0dXJuc0ZhbHNlRm9yTm9uUHJpbWVzKSB7
CisgIC8vIEluc2lkZSB0aGUgdGVzdCBib2R5LCB5b3UgY2FuIHJlZmVyIHRvIHRoZSB0ZXN0IHBh
cmFtZXRlciBieSBHZXRQYXJhbSgpLgorICAvLyBJbiB0aGlzIGNhc2UsIHRoZSB0ZXN0IHBhcmFt
ZXRlciBpcyBhIFByaW1lVGFibGUgaW50ZXJmYWNlIHBvaW50ZXIgd2hpY2gKKyAgLy8gd2UgY2Fu
IHVzZSBkaXJlY3RseS4KKyAgLy8gUGxlYXNlIG5vdGUgdGhhdCB5b3UgY2FuIGFsc28gc2F2ZSBp
dCBpbiB0aGUgZml4dHVyZSdzIFNldFVwKCkgbWV0aG9kCisgIC8vIG9yIGNvbnN0cnVjdG9yIGFu
ZCB1c2Ugc2F2ZWQgY29weSBpbiB0aGUgdGVzdHMuCisKKyAgRVhQRUNUX0ZBTFNFKHRhYmxlXy0+
SXNQcmltZSgtNSkpOworICBFWFBFQ1RfRkFMU0UodGFibGVfLT5Jc1ByaW1lKDApKTsKKyAgRVhQ
RUNUX0ZBTFNFKHRhYmxlXy0+SXNQcmltZSgxKSk7CisgIEVYUEVDVF9GQUxTRSh0YWJsZV8tPklz
UHJpbWUoNCkpOworICBFWFBFQ1RfRkFMU0UodGFibGVfLT5Jc1ByaW1lKDYpKTsKKyAgRVhQRUNU
X0ZBTFNFKHRhYmxlXy0+SXNQcmltZSgxMDApKTsKK30KKworVEVTVF9QKFByaW1lVGFibGVUZXN0
LCBSZXR1cm5zVHJ1ZUZvclByaW1lcykgeworICBFWFBFQ1RfVFJVRSh0YWJsZV8tPklzUHJpbWUo
MikpOworICBFWFBFQ1RfVFJVRSh0YWJsZV8tPklzUHJpbWUoMykpOworICBFWFBFQ1RfVFJVRSh0
YWJsZV8tPklzUHJpbWUoNSkpOworICBFWFBFQ1RfVFJVRSh0YWJsZV8tPklzUHJpbWUoNykpOwor
ICBFWFBFQ1RfVFJVRSh0YWJsZV8tPklzUHJpbWUoMTEpKTsKKyAgRVhQRUNUX1RSVUUodGFibGVf
LT5Jc1ByaW1lKDEzMSkpOworfQorCitURVNUX1AoUHJpbWVUYWJsZVRlc3QsIENhbkdldE5leHRQ
cmltZSkgeworICBFWFBFQ1RfRVEoMiwgdGFibGVfLT5HZXROZXh0UHJpbWUoMCkpOworICBFWFBF
Q1RfRVEoMywgdGFibGVfLT5HZXROZXh0UHJpbWUoMikpOworICBFWFBFQ1RfRVEoNSwgdGFibGVf
LT5HZXROZXh0UHJpbWUoMykpOworICBFWFBFQ1RfRVEoNywgdGFibGVfLT5HZXROZXh0UHJpbWUo
NSkpOworICBFWFBFQ1RfRVEoMTEsIHRhYmxlXy0+R2V0TmV4dFByaW1lKDcpKTsKKyAgRVhQRUNU
X0VRKDEzMSwgdGFibGVfLT5HZXROZXh0UHJpbWUoMTI4KSk7Cit9CisKKy8vIEluIG9yZGVyIHRv
IHJ1biB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLCB5b3UgbmVlZCB0byBpbnN0YW50aWF0ZSB0
aGVtLAorLy8gb3IgYmluZCB0aGVtIHRvIGEgbGlzdCBvZiB2YWx1ZXMgd2hpY2ggd2lsbCBiZSB1
c2VkIGFzIHRlc3QgcGFyYW1ldGVycy4KKy8vIFlvdSBjYW4gaW5zdGFudGlhdGUgdGhlbSBpbiBh
IGRpZmZlcmVudCB0cmFuc2xhdGlvbiBtb2R1bGUsIG9yIGV2ZW4KKy8vIGluc3RhbnRpYXRlIHRo
ZW0gc2V2ZXJhbCB0aW1lcy4KKy8vCisvLyBIZXJlLCB3ZSBpbnN0YW50aWF0ZSBvdXIgdGVzdHMg
d2l0aCBhIGxpc3Qgb2YgcGFyYW1ldGVycy4gV2UgbXVzdCBjb21iaW5lCisvLyBhbGwgdmFyaWF0
aW9ucyBvZiB0aGUgYm9vbGVhbiBmbGFnIHN1cHByZXNzaW5nIFByZWNhbGNQcmltZVRhYmxlIGFu
ZCBzb21lCisvLyBtZWFuaW5nZnVsIHZhbHVlcyBmb3IgdGVzdHMuIFdlIGNob29zZSBhIHNtYWxs
IHZhbHVlICgxKSwgYW5kIGEgdmFsdWUgdGhhdAorLy8gd2lsbCBwdXQgc29tZSBvZiB0aGUgdGVz
dGVkIG51bWJlcnMgYmV5b25kIHRoZSBjYXBhYmlsaXR5IG9mIHRoZQorLy8gUHJlY2FsY1ByaW1l
VGFibGUgaW5zdGFuY2UgYW5kIHNvbWUgaW5zaWRlIGl0ICgxMCkuIENvbWJpbmUgd2lsbCBwcm9k
dWNlIGFsbAorLy8gcG9zc2libGUgY29tYmluYXRpb25zLgorSU5TVEFOVElBVEVfVEVTVF9DQVNF
X1AoTWVhbmluZ2Z1bFRlc3RQYXJhbWV0ZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgUHJp
bWVUYWJsZVRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBDb21iaW5lKEJvb2woKSwgVmFs
dWVzKDEsIDEwKSkpOworCisjZWxzZQorCisvLyBHb29nbGUgVGVzdCBtYXkgbm90IHN1cHBvcnQg
Q29tYmluZSgpIHdpdGggc29tZSBjb21waWxlcnMuIElmIHdlCisvLyB1c2UgY29uZGl0aW9uYWwg
Y29tcGlsYXRpb24gdG8gY29tcGlsZSBvdXQgYWxsIGNvZGUgcmVmZXJyaW5nIHRvCisvLyB0aGUg
Z3Rlc3RfbWFpbiBsaWJyYXJ5LCBNU1ZDIGxpbmtlciB3aWxsIG5vdCBsaW5rIHRoYXQgbGlicmFy
eSBhdAorLy8gYWxsIGFuZCBjb25zZXF1ZW50bHkgY29tcGxhaW4gYWJvdXQgbWlzc2luZyBlbnRy
eSBwb2ludCBkZWZpbmVkIGluCisvLyB0aGF0IGxpYnJhcnkgKGZhdGFsIGVycm9yIExOSzE1NjE6
IGVudHJ5IHBvaW50IG11c3QgYmUKKy8vIGRlZmluZWQpLiBUaGlzIGR1bW15IHRlc3Qga2VlcHMg
Z3Rlc3RfbWFpbiBsaW5rZWQgaW4uCitURVNUKER1bW15VGVzdCwgQ29tYmluZUlzTm90U3VwcG9y
dGVkT25UaGlzUGxhdGZvcm0pIHt9CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0NPTUJJTkUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGV0ZXN0L3NhbXBsZXMvc2FtcGxlOV91bml0dGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGV0ZXN0L3NhbXBsZXMvc2FtcGxlOV91bml0dGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMmUyMDc5YmYz
YjNkZTJiMDQ1YjlhODBkN2U3YzdiZGFiOWM4OWY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZXRlc3Qvc2FtcGxlcy9zYW1wbGU5X3VuaXR0ZXN0LmNjCkBAIC0wLDAgKzEsMTYwIEBACisvLyBD
b3B5cmlnaHQgMjAwOSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorLy8KKy8vIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisv
LyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRp
b24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisv
LyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEF1dGhvcjogdmxhZGxA
Z29vZ2xlLmNvbSAoVmxhZCBMb3NldikKKworLy8gVGhpcyBzYW1wbGUgc2hvd3MgaG93IHRvIHVz
ZSBHb29nbGUgVGVzdCBsaXN0ZW5lciBBUEkgdG8gaW1wbGVtZW50CisvLyBhbiBhbHRlcm5hdGl2
ZSBjb25zb2xlIG91dHB1dCBhbmQgaG93IHRvIHVzZSB0aGUgVW5pdFRlc3QgcmVmbGVjdGlvbiBB
UEkKKy8vIHRvIGVudW1lcmF0ZSB0ZXN0IGNhc2VzIGFuZCB0ZXN0cyBhbmQgdG8gaW5zcGVjdCB0
aGVpciByZXN1bHRzLgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKworI2luY2x1ZGUgImd0ZXN0L2d0
ZXN0LmgiCisKK3VzaW5nIDo6dGVzdGluZzo6RW1wdHlUZXN0RXZlbnRMaXN0ZW5lcjsKK3VzaW5n
IDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3Q7Cit1c2luZyA6OnRlc3Rpbmc6OlRlc3Q7Cit1c2lu
ZyA6OnRlc3Rpbmc6OlRlc3RDYXNlOwordXNpbmcgOjp0ZXN0aW5nOjpUZXN0RXZlbnRMaXN0ZW5l
cnM7Cit1c2luZyA6OnRlc3Rpbmc6OlRlc3RJbmZvOwordXNpbmcgOjp0ZXN0aW5nOjpUZXN0UGFy
dFJlc3VsdDsKK3VzaW5nIDo6dGVzdGluZzo6VW5pdFRlc3Q7CisKK25hbWVzcGFjZSB7CisKKy8v
IFByb3ZpZGVzIGFsdGVybmF0aXZlIG91dHB1dCBtb2RlIHdoaWNoIHByb2R1Y2VzIG1pbmltYWwg
YW1vdW50IG9mCisvLyBpbmZvcm1hdGlvbiBhYm91dCB0ZXN0cy4KK2NsYXNzIFRlcnNlUHJpbnRl
ciA6IHB1YmxpYyBFbXB0eVRlc3RFdmVudExpc3RlbmVyIHsKKyBwcml2YXRlOgorICAvLyBDYWxs
ZWQgYmVmb3JlIGFueSB0ZXN0IGFjdGl2aXR5IHN0YXJ0cy4KKyAgdmlydHVhbCB2b2lkIE9uVGVz
dFByb2dyYW1TdGFydChjb25zdCBVbml0VGVzdCYgLyogdW5pdF90ZXN0ICovKSB7fQorCisgIC8v
IENhbGxlZCBhZnRlciBhbGwgdGVzdCBhY3Rpdml0aWVzIGhhdmUgZW5kZWQuCisgIHZpcnR1YWwg
dm9pZCBPblRlc3RQcm9ncmFtRW5kKGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QpIHsKKyAgICBm
cHJpbnRmKHN0ZG91dCwgIlRFU1QgJXNcbiIsIHVuaXRfdGVzdC5QYXNzZWQoKSA/ICJQQVNTRUQi
IDogIkZBSUxFRCIpOworICAgIGZmbHVzaChzdGRvdXQpOworICB9CisKKyAgLy8gQ2FsbGVkIGJl
Zm9yZSBhIHRlc3Qgc3RhcnRzLgorICB2aXJ0dWFsIHZvaWQgT25UZXN0U3RhcnQoY29uc3QgVGVz
dEluZm8mIHRlc3RfaW5mbykgeworICAgIGZwcmludGYoc3Rkb3V0LAorICAgICAgICAgICAgIioq
KiBUZXN0ICVzLiVzIHN0YXJ0aW5nLlxuIiwKKyAgICAgICAgICAgIHRlc3RfaW5mby50ZXN0X2Nh
c2VfbmFtZSgpLAorICAgICAgICAgICAgdGVzdF9pbmZvLm5hbWUoKSk7CisgICAgZmZsdXNoKHN0
ZG91dCk7CisgIH0KKworICAvLyBDYWxsZWQgYWZ0ZXIgYSBmYWlsZWQgYXNzZXJ0aW9uIG9yIGEg
U1VDQ0VFRCgpIGludm9jYXRpb24uCisgIHZpcnR1YWwgdm9pZCBPblRlc3RQYXJ0UmVzdWx0KGNv
bnN0IFRlc3RQYXJ0UmVzdWx0JiB0ZXN0X3BhcnRfcmVzdWx0KSB7CisgICAgZnByaW50ZihzdGRv
dXQsCisgICAgICAgICAgICAiJXMgaW4gJXM6JWRcbiVzXG4iLAorICAgICAgICAgICAgdGVzdF9w
YXJ0X3Jlc3VsdC5mYWlsZWQoKSA/ICIqKiogRmFpbHVyZSIgOiAiU3VjY2VzcyIsCisgICAgICAg
ICAgICB0ZXN0X3BhcnRfcmVzdWx0LmZpbGVfbmFtZSgpLAorICAgICAgICAgICAgdGVzdF9wYXJ0
X3Jlc3VsdC5saW5lX251bWJlcigpLAorICAgICAgICAgICAgdGVzdF9wYXJ0X3Jlc3VsdC5zdW1t
YXJ5KCkpOworICAgIGZmbHVzaChzdGRvdXQpOworICB9CisKKyAgLy8gQ2FsbGVkIGFmdGVyIGEg
dGVzdCBlbmRzLgorICB2aXJ0dWFsIHZvaWQgT25UZXN0RW5kKGNvbnN0IFRlc3RJbmZvJiB0ZXN0
X2luZm8pIHsKKyAgICBmcHJpbnRmKHN0ZG91dCwKKyAgICAgICAgICAgICIqKiogVGVzdCAlcy4l
cyBlbmRpbmcuXG4iLAorICAgICAgICAgICAgdGVzdF9pbmZvLnRlc3RfY2FzZV9uYW1lKCksCisg
ICAgICAgICAgICB0ZXN0X2luZm8ubmFtZSgpKTsKKyAgICBmZmx1c2goc3Rkb3V0KTsKKyAgfQor
fTsgIC8vIGNsYXNzIFRlcnNlUHJpbnRlcgorCitURVNUKEN1c3RvbU91dHB1dFRlc3QsIFByaW50
c01lc3NhZ2UpIHsKKyAgcHJpbnRmKCJQcmludGluZyBzb21ldGhpbmcgZnJvbSB0aGUgdGVzdCBi
b2R5Li4uXG4iKTsKK30KKworVEVTVChDdXN0b21PdXRwdXRUZXN0LCBTdWNjZWVkcykgeworICBT
VUNDRUVEKCkgPDwgIlNVQ0NFRUQoKSBoYXMgYmVlbiBpbnZva2VkIGZyb20gaGVyZSI7Cit9CisK
K1RFU1QoQ3VzdG9tT3V0cHV0VGVzdCwgRmFpbHMpIHsKKyAgRVhQRUNUX0VRKDEsIDIpCisgICAg
ICA8PCAiVGhpcyB0ZXN0IGZhaWxzIGluIG9yZGVyIHRvIGRlbW9uc3RyYXRlIGFsdGVybmF0aXZl
IGZhaWx1cmUgbWVzc2FnZXMiOworfQorCit9ICAvLyBuYW1lc3BhY2UKKworaW50IG1haW4oaW50
IGFyZ2MsIGNoYXIgKiphcmd2KSB7CisgIEluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKwor
ICBib29sIHRlcnNlX291dHB1dCA9IGZhbHNlOworICBpZiAoYXJnYyA+IDEgJiYgc3RyY21wKGFy
Z3ZbMV0sICItLXRlcnNlX291dHB1dCIpID09IDAgKQorICAgIHRlcnNlX291dHB1dCA9IHRydWU7
CisgIGVsc2UKKyAgICBwcmludGYoIiVzXG4iLCAiUnVuIHRoaXMgcHJvZ3JhbSB3aXRoIC0tdGVy
c2Vfb3V0cHV0IHRvIGNoYW5nZSB0aGUgd2F5ICIKKyAgICAgICAgICAgIml0IHByaW50cyBpdHMg
b3V0cHV0LiIpOworCisgIFVuaXRUZXN0JiB1bml0X3Rlc3QgPSAqVW5pdFRlc3Q6OkdldEluc3Rh
bmNlKCk7CisKKyAgLy8gSWYgd2UgYXJlIGdpdmVuIHRoZSAtLXRlcnNlX291dHB1dCBjb21tYW5k
IGxpbmUgZmxhZywgc3VwcHJlc3NlcyB0aGUKKyAgLy8gc3RhbmRhcmQgb3V0cHV0IGFuZCBhdHRh
Y2hlcyBvd24gcmVzdWx0IHByaW50ZXIuCisgIGlmICh0ZXJzZV9vdXRwdXQpIHsKKyAgICBUZXN0
RXZlbnRMaXN0ZW5lcnMmIGxpc3RlbmVycyA9IHVuaXRfdGVzdC5saXN0ZW5lcnMoKTsKKworICAg
IC8vIFJlbW92ZXMgdGhlIGRlZmF1bHQgY29uc29sZSBvdXRwdXQgbGlzdGVuZXIgZnJvbSB0aGUg
bGlzdCBzbyBpdCB3aWxsCisgICAgLy8gbm90IHJlY2VpdmUgZXZlbnRzIGZyb20gR29vZ2xlIFRl
c3QgYW5kIHdvbid0IHByaW50IGFueSBvdXRwdXQuIFNpbmNlCisgICAgLy8gdGhpcyBvcGVyYXRp
b24gdHJhbnNmZXJzIG93bmVyc2hpcCBvZiB0aGUgbGlzdGVuZXIgdG8gdGhlIGNhbGxlciB3ZQor
ICAgIC8vIGhhdmUgdG8gZGVsZXRlIGl0IGFzIHdlbGwuCisgICAgZGVsZXRlIGxpc3RlbmVycy5S
ZWxlYXNlKGxpc3RlbmVycy5kZWZhdWx0X3Jlc3VsdF9wcmludGVyKCkpOworCisgICAgLy8gQWRk
cyB0aGUgY3VzdG9tIG91dHB1dCBsaXN0ZW5lciB0byB0aGUgbGlzdC4gSXQgd2lsbCBub3cgcmVj
ZWl2ZQorICAgIC8vIGV2ZW50cyBmcm9tIEdvb2dsZSBUZXN0IGFuZCBwcmludCB0aGUgYWx0ZXJu
YXRpdmUgb3V0cHV0LiBXZSBkb24ndAorICAgIC8vIGhhdmUgdG8gd29ycnkgYWJvdXQgZGVsZXRp
bmcgaXQgc2luY2UgR29vZ2xlIFRlc3QgYXNzdW1lcyBvd25lcnNoaXAKKyAgICAvLyBvdmVyIGl0
IGFmdGVyIGFkZGluZyBpdCB0byB0aGUgbGlzdC4KKyAgICBsaXN0ZW5lcnMuQXBwZW5kKG5ldyBU
ZXJzZVByaW50ZXIpOworICB9CisgIGludCByZXRfdmFsID0gUlVOX0FMTF9URVNUUygpOworCisg
IC8vIFRoaXMgaXMgYW4gZXhhbXBsZSBvZiB1c2luZyB0aGUgVW5pdFRlc3QgcmVmbGVjdGlvbiBB
UEkgdG8gaW5zcGVjdCB0ZXN0CisgIC8vIHJlc3VsdHMuIEhlcmUgd2UgZGlzY291bnQgZmFpbHVy
ZXMgZnJvbSB0aGUgdGVzdHMgd2UgZXhwZWN0ZWQgdG8gZmFpbC4KKyAgaW50IHVuZXhwZWN0ZWRs
eV9mYWlsZWRfdGVzdHMgPSAwOworICBmb3IgKGludCBpID0gMDsgaSA8IHVuaXRfdGVzdC50b3Rh
bF90ZXN0X2Nhc2VfY291bnQoKTsgKytpKSB7CisgICAgY29uc3QgVGVzdENhc2UmIHRlc3RfY2Fz
ZSA9ICp1bml0X3Rlc3QuR2V0VGVzdENhc2UoaSk7CisgICAgZm9yIChpbnQgaiA9IDA7IGogPCB0
ZXN0X2Nhc2UudG90YWxfdGVzdF9jb3VudCgpOyArK2opIHsKKyAgICAgIGNvbnN0IFRlc3RJbmZv
JiB0ZXN0X2luZm8gPSAqdGVzdF9jYXNlLkdldFRlc3RJbmZvKGopOworICAgICAgLy8gQ291bnRz
IGZhaWxlZCB0ZXN0cyB0aGF0IHdlcmUgbm90IG1lYW50IHRvIGZhaWwgKHRob3NlIHdpdGhvdXQK
KyAgICAgIC8vICdGYWlscycgaW4gdGhlIG5hbWUpLgorICAgICAgaWYgKHRlc3RfaW5mby5yZXN1
bHQoKS0+RmFpbGVkKCkgJiYKKyAgICAgICAgICBzdHJjbXAodGVzdF9pbmZvLm5hbWUoKSwgIkZh
aWxzIikgIT0gMCkgeworICAgICAgICB1bmV4cGVjdGVkbHlfZmFpbGVkX3Rlc3RzKys7CisgICAg
ICB9CisgICAgfQorICB9CisKKyAgLy8gVGVzdCB0aGF0IHdlcmUgbWVhbnQgdG8gZmFpbCBzaG91
bGQgbm90IGFmZmVjdCB0aGUgdGVzdCBwcm9ncmFtIG91dGNvbWUuCisgIGlmICh1bmV4cGVjdGVk
bHlfZmFpbGVkX3Rlc3RzID09IDApCisgICAgcmV0X3ZhbCA9IDA7CisKKyAgcmV0dXJuIHJldF92
YWw7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zY3JpcHRzL2NvbW1vbi5weSBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGV0ZXN0L3NjcmlwdHMvY29tbW9uLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjMDM0N2E3NWJkZmYzMTg4MDk3
NzQ1MDE1YTU4MDM3NjRhZDc0MWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zY3Jp
cHRzL2NvbW1vbi5weQpAQCAtMCwwICsxLDgzIEBACisjIENvcHlyaWdodCAyMDEzIEdvb2dsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMg
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
IyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJTaGFyZWQg
dXRpbGl0aWVzIGZvciB3cml0aW5nIHNjcmlwdHMgZm9yIEdvb2dsZSBUZXN0L01vY2suIiIiCisK
K19fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCisKKworaW1wb3J0
IG9zCitpbXBvcnQgcmUKKworCisjIE1hdGNoZXMgdGhlIGxpbmUgZnJvbSAnc3ZuIGluZm8gLicg
b3V0cHV0IHRoYXQgZGVzY3JpYmVzIHdoYXQgU1ZOCisjIHBhdGggdGhlIGN1cnJlbnQgbG9jYWwg
ZGlyZWN0b3J5IGNvcnJlc3BvbmRzIHRvLiAgRm9yIGV4YW1wbGUsIGluCisjIGEgZ29vZ2xldGVz
dCBTVk4gd29ya3NwYWNlJ3MgdHJ1bmsvdGVzdCBkaXJlY3RvcnksIHRoZSBvdXRwdXQgd2lsbCBi
ZToKKyMKKyMgVVJMOiBodHRwczovL2dvb2dsZXRlc3QuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5r
L3Rlc3QKK19TVk5fSU5GT19VUkxfUkUgPSByZS5jb21waWxlKHInXlVSTDogaHR0cHM6Ly8oXHcr
KVwuZ29vZ2xlY29kZVwuY29tL3N2biguKiknKQorCisKK2RlZiBHZXRDb21tYW5kT3V0cHV0KGNv
bW1hbmQpOgorICAiIiJSdW5zIHRoZSBzaGVsbCBjb21tYW5kIGFuZCByZXR1cm5zIGl0cyBzdGRv
dXQgYXMgYSBsaXN0IG9mIGxpbmVzLiIiIgorCisgIGYgPSBvcy5wb3Blbihjb21tYW5kLCAncicp
CisgIGxpbmVzID0gW2xpbmUuc3RyaXAoKSBmb3IgbGluZSBpbiBmLnJlYWRsaW5lcygpXQorICBm
LmNsb3NlKCkKKyAgcmV0dXJuIGxpbmVzCisKKworZGVmIEdldFN2bkluZm8oKToKKyAgIiIiUmV0
dXJucyB0aGUgcHJvamVjdCBuYW1lIGFuZCB0aGUgY3VycmVudCBTVk4gd29ya3NwYWNlJ3Mgcm9v
dCBwYXRoLiIiIgorCisgIGZvciBsaW5lIGluIEdldENvbW1hbmRPdXRwdXQoJ3N2biBpbmZvIC4n
KToKKyAgICBtID0gX1NWTl9JTkZPX1VSTF9SRS5tYXRjaChsaW5lKQorICAgIGlmIG06CisgICAg
ICBwcm9qZWN0ID0gbS5ncm91cCgxKSAgIyBnb29nbGV0ZXN0IG9yIGdvb2dsZW1vY2sKKyAgICAg
IHJlbF9wYXRoID0gbS5ncm91cCgyKQorICAgICAgcm9vdCA9IG9zLnBhdGgucmVhbHBhdGgocmVs
X3BhdGguY291bnQoJy8nKSAqICcuLi8nKQorICAgICAgcmV0dXJuIHByb2plY3QsIHJvb3QKKwor
ICByZXR1cm4gTm9uZSwgTm9uZQorCisKK2RlZiBHZXRTdm5UcnVuaygpOgorICAiIiJSZXR1cm5z
IHRoZSBjdXJyZW50IFNWTiB3b3Jrc3BhY2UncyB0cnVuayByb290IHBhdGguIiIiCisKKyAgXywg
cm9vdCA9IEdldFN2bkluZm8oKQorICByZXR1cm4gcm9vdCArICcvdHJ1bmsnIGlmIHJvb3QgZWxz
ZSBOb25lCisKKworZGVmIElzSW5HVGVzdFN2bigpOgorICBwcm9qZWN0LCBfID0gR2V0U3ZuSW5m
bygpCisgIHJldHVybiBwcm9qZWN0ID09ICdnb29nbGV0ZXN0JworCisKK2RlZiBJc0luR01vY2tT
dm4oKToKKyAgcHJvamVjdCwgXyA9IEdldFN2bkluZm8oKQorICByZXR1cm4gcHJvamVjdCA9PSAn
Z29vZ2xlbW9jaycKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NjcmlwdHMvZnVzZV9ndGVzdF9m
aWxlcy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGV0ZXN0L3NjcmlwdHMvZnVzZV9ndGVzdF9maWxlcy5weQpuZXcgZmls
ZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zZjNlOWYzNmQ2MWIzYjdjYTcyZmU2OTNlNTUwODEwNmI3Y2JmNzYyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2NyaXB0cy9mdXNlX2d0ZXN0X2ZpbGVzLnB5CkBAIC0wLDAg
KzEsMjUzIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMDksIEdv
b2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisi
IiJmdXNlX2d0ZXN0X2ZpbGVzLnB5IHYwLjIuMAorRnVzZXMgR29vZ2xlIFRlc3Qgc291cmNlIGNv
ZGUgaW50byBhIC5oIGZpbGUgYW5kIGEgLmNjIGZpbGUuCisKK1NZTk9QU0lTCisgICAgICAgZnVz
ZV9ndGVzdF9maWxlcy5weSBbR1RFU1RfUk9PVF9ESVJdIE9VVFBVVF9ESVIKKworICAgICAgIFNj
YW5zIEdURVNUX1JPT1RfRElSIGZvciBHb29nbGUgVGVzdCBzb3VyY2UgY29kZSwgYW5kIGdlbmVy
YXRlcworICAgICAgIHR3byBmaWxlczogT1VUUFVUX0RJUi9ndGVzdC9ndGVzdC5oIGFuZCBPVVRQ
VVRfRElSL2d0ZXN0L2d0ZXN0LWFsbC5jYy4KKyAgICAgICBUaGVuIHlvdSBjYW4gYnVpbGQgeW91
ciB0ZXN0cyBieSBhZGRpbmcgT1VUUFVUX0RJUiB0byB0aGUgaW5jbHVkZQorICAgICAgIHNlYXJj
aCBwYXRoIGFuZCBsaW5raW5nIHdpdGggT1VUUFVUX0RJUi9ndGVzdC9ndGVzdC1hbGwuY2MuICBU
aGVzZQorICAgICAgIHR3byBmaWxlcyBjb250YWluIGV2ZXJ5dGhpbmcgeW91IG5lZWQgdG8gdXNl
IEdvb2dsZSBUZXN0LiAgSGVuY2UKKyAgICAgICB5b3UgY2FuICJpbnN0YWxsIiBHb29nbGUgVGVz
dCBieSBjb3B5aW5nIHRoZW0gdG8gd2hlcmV2ZXIgeW91IHdhbnQuCisKKyAgICAgICBHVEVTVF9S
T09UX0RJUiBjYW4gYmUgb21pdHRlZCBhbmQgZGVmYXVsdHMgdG8gdGhlIHBhcmVudAorICAgICAg
IGRpcmVjdG9yeSBvZiB0aGUgZGlyZWN0b3J5IGhvbGRpbmcgdGhpcyBzY3JpcHQuCisKK0VYQU1Q
TEVTCisgICAgICAgLi9mdXNlX2d0ZXN0X2ZpbGVzLnB5IGZ1c2VkX2d0ZXN0CisgICAgICAgLi9m
dXNlX2d0ZXN0X2ZpbGVzLnB5IHBhdGgvdG8vdW5wYWNrZWQvZ3Rlc3QgZnVzZWRfZ3Rlc3QKKwor
VGhpcyB0b29sIGlzIGV4cGVyaW1lbnRhbC4gIEluIHBhcnRpY3VsYXIsIGl0IGFzc3VtZXMgdGhh
dCB0aGVyZSBpcyBubworY29uZGl0aW9uYWwgaW5jbHVzaW9uIG9mIEdvb2dsZSBUZXN0IGhlYWRl
cnMuICBQbGVhc2UgcmVwb3J0IGFueQorcHJvYmxlbXMgdG8gZ29vZ2xldGVzdGZyYW1ld29ya0Bn
b29nbGVncm91cHMuY29tLiAgWW91IGNhbiByZWFkCitodHRwOi8vY29kZS5nb29nbGUuY29tL3Av
Z29vZ2xldGVzdC93aWtpL0dvb2dsZVRlc3RBZHZhbmNlZEd1aWRlIGZvcgorbW9yZSBpbmZvcm1h
dGlvbi4KKyIiIgorCitfX2F1dGhvcl9fID0gJ3dhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4p
JworCitpbXBvcnQgb3MKK2ltcG9ydCByZQordHJ5OgorICBmcm9tIHNldHMgaW1wb3J0IFNldCBh
cyBzZXQgICMgRm9yIFB5dGhvbiAyLjMgY29tcGF0aWJpbGl0eQorZXhjZXB0IEltcG9ydEVycm9y
OgorICBwYXNzCitpbXBvcnQgc3lzCisKKyMgV2UgYXNzdW1lIHRoYXQgdGhpcyBmaWxlIGlzIGlu
IHRoZSBzY3JpcHRzLyBkaXJlY3RvcnkgaW4gdGhlIEdvb2dsZQorIyBUZXN0IHJvb3QgZGlyZWN0
b3J5LgorREVGQVVMVF9HVEVTVF9ST09UX0RJUiA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5h
bWUoX19maWxlX18pLCAnLi4nKQorCisjIFJlZ2V4IGZvciBtYXRjaGluZyAnI2luY2x1ZGUgImd0
ZXN0Ly4uLiInLgorSU5DTFVERV9HVEVTVF9GSUxFX1JFR0VYID0gcmUuY29tcGlsZShyJ15ccyoj
XHMqaW5jbHVkZVxzKiIoZ3Rlc3QvLispIicpCisKKyMgUmVnZXggZm9yIG1hdGNoaW5nICcjaW5j
bHVkZSAic3JjLy4uLiInLgorSU5DTFVERV9TUkNfRklMRV9SRUdFWCA9IHJlLmNvbXBpbGUocide
XHMqI1xzKmluY2x1ZGVccyoiKHNyYy8uKykiJykKKworIyBXaGVyZSB0byBmaW5kIHRoZSBzb3Vy
Y2Ugc2VlZCBmaWxlcy4KK0dURVNUX0hfU0VFRCA9ICdpbmNsdWRlL2d0ZXN0L2d0ZXN0LmgnCitH
VEVTVF9TUElfSF9TRUVEID0gJ2luY2x1ZGUvZ3Rlc3QvZ3Rlc3Qtc3BpLmgnCitHVEVTVF9BTExf
Q0NfU0VFRCA9ICdzcmMvZ3Rlc3QtYWxsLmNjJworCisjIFdoZXJlIHRvIHB1dCB0aGUgZ2VuZXJh
dGVkIGZpbGVzLgorR1RFU1RfSF9PVVRQVVQgPSAnZ3Rlc3QvZ3Rlc3QuaCcKK0dURVNUX0FMTF9D
Q19PVVRQVVQgPSAnZ3Rlc3QvZ3Rlc3QtYWxsLmNjJworCisKK2RlZiBWZXJpZnlGaWxlRXhpc3Rz
KGRpcmVjdG9yeSwgcmVsYXRpdmVfcGF0aCk6CisgICIiIlZlcmlmaWVzIHRoYXQgdGhlIGdpdmVu
IGZpbGUgZXhpc3RzOyBhYm9ydHMgb24gZmFpbHVyZS4KKworICByZWxhdGl2ZV9wYXRoIGlzIHRo
ZSBmaWxlIHBhdGggcmVsYXRpdmUgdG8gdGhlIGdpdmVuIGRpcmVjdG9yeS4KKyAgIiIiCisKKyAg
aWYgbm90IG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihkaXJlY3RvcnksIHJlbGF0aXZlX3Bh
dGgpKToKKyAgICBwcmludCgnRVJST1I6IENhbm5vdCBmaW5kICVzIGluIGRpcmVjdG9yeSAlcy4n
ICUgKHJlbGF0aXZlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkaXJlY3RvcnkpKQorICAgIHByaW50KCdQbGVhc2UgZWl0aGVyIHNw
ZWNpZnkgYSB2YWxpZCBwcm9qZWN0IHJvb3QgZGlyZWN0b3J5ICcKKyAgICAgICAgICAnb3Igb21p
dCBpdCBvbiB0aGUgY29tbWFuZCBsaW5lLicpCisgICAgc3lzLmV4aXQoMSkKKworCitkZWYgVmFs
aWRhdGVHVGVzdFJvb3REaXIoZ3Rlc3Rfcm9vdCk6CisgICIiIk1ha2VzIHN1cmUgZ3Rlc3Rfcm9v
dCBwb2ludHMgdG8gYSB2YWxpZCBndGVzdCByb290IGRpcmVjdG9yeS4KKworICBUaGUgZnVuY3Rp
b24gYWJvcnRzIHRoZSBwcm9ncmFtIG9uIGZhaWx1cmUuCisgICIiIgorCisgIFZlcmlmeUZpbGVF
eGlzdHMoZ3Rlc3Rfcm9vdCwgR1RFU1RfSF9TRUVEKQorICBWZXJpZnlGaWxlRXhpc3RzKGd0ZXN0
X3Jvb3QsIEdURVNUX0FMTF9DQ19TRUVEKQorCisKK2RlZiBWZXJpZnlPdXRwdXRGaWxlKG91dHB1
dF9kaXIsIHJlbGF0aXZlX3BhdGgpOgorICAiIiJWZXJpZmllcyB0aGF0IHRoZSBnaXZlbiBvdXRw
dXQgZmlsZSBwYXRoIGlzIHZhbGlkLgorCisgIHJlbGF0aXZlX3BhdGggaXMgcmVsYXRpdmUgdG8g
dGhlIG91dHB1dF9kaXIgZGlyZWN0b3J5LgorICAiIiIKKworICAjIE1ha2VzIHN1cmUgdGhlIG91
dHB1dCBmaWxlIGVpdGhlciBkb2Vzbid0IGV4aXN0IG9yIGNhbiBiZSBvdmVyd3JpdHRlbi4KKyAg
b3V0cHV0X2ZpbGUgPSBvcy5wYXRoLmpvaW4ob3V0cHV0X2RpciwgcmVsYXRpdmVfcGF0aCkKKyAg
aWYgb3MucGF0aC5leGlzdHMob3V0cHV0X2ZpbGUpOgorICAgICMgVE9ETyh3YW5AZ29vZ2xlLmNv
bSk6IFRoZSBmb2xsb3dpbmcgdXNlci1pbnRlcmFjdGlvbiBkb2Vzbid0CisgICAgIyB3b3JrIHdp
dGggYXV0b21hdGVkIHByb2Nlc3Nlcy4gIFdlIHNob3VsZCBwcm92aWRlIGEgd2F5IGZvciB0aGUK
KyAgICAjIE1ha2VmaWxlIHRvIGZvcmNlIG92ZXJ3cml0aW5nIHRoZSBmaWxlcy4KKyAgICBwcmlu
dCgnJXMgYWxyZWFkeSBleGlzdHMgaW4gZGlyZWN0b3J5ICVzIC0gb3ZlcndyaXRlIGl0PyAoeS9O
KSAnICUKKyAgICAgICAgICAocmVsYXRpdmVfcGF0aCwgb3V0cHV0X2RpcikpCisgICAgYW5zd2Vy
ID0gc3lzLnN0ZGluLnJlYWRsaW5lKCkuc3RyaXAoKQorICAgIGlmIGFuc3dlciBub3QgaW4gWyd5
JywgJ1knXToKKyAgICAgIHByaW50KCdBQk9SVEVELicpCisgICAgICBzeXMuZXhpdCgxKQorCisg
ICMgTWFrZXMgc3VyZSB0aGUgZGlyZWN0b3J5IGhvbGRpbmcgdGhlIG91dHB1dCBmaWxlIGV4aXN0
czsgY3JlYXRlcworICAjIGl0IGFuZCBhbGwgaXRzIGFuY2VzdG9ycyBpZiBuZWNlc3NhcnkuCisg
IHBhcmVudF9kaXJlY3RvcnkgPSBvcy5wYXRoLmRpcm5hbWUob3V0cHV0X2ZpbGUpCisgIGlmIG5v
dCBvcy5wYXRoLmlzZGlyKHBhcmVudF9kaXJlY3RvcnkpOgorICAgIG9zLm1ha2VkaXJzKHBhcmVu
dF9kaXJlY3RvcnkpCisKKworZGVmIFZhbGlkYXRlT3V0cHV0RGlyKG91dHB1dF9kaXIpOgorICAi
IiJNYWtlcyBzdXJlIG91dHB1dF9kaXIgcG9pbnRzIHRvIGEgdmFsaWQgb3V0cHV0IGRpcmVjdG9y
eS4KKworICBUaGUgZnVuY3Rpb24gYWJvcnRzIHRoZSBwcm9ncmFtIG9uIGZhaWx1cmUuCisgICIi
IgorCisgIFZlcmlmeU91dHB1dEZpbGUob3V0cHV0X2RpciwgR1RFU1RfSF9PVVRQVVQpCisgIFZl
cmlmeU91dHB1dEZpbGUob3V0cHV0X2RpciwgR1RFU1RfQUxMX0NDX09VVFBVVCkKKworCitkZWYg
RnVzZUdUZXN0SChndGVzdF9yb290LCBvdXRwdXRfZGlyKToKKyAgIiIiU2NhbnMgZm9sZGVyIGd0
ZXN0X3Jvb3QgdG8gZ2VuZXJhdGUgZ3Rlc3QvZ3Rlc3QuaCBpbiBvdXRwdXRfZGlyLiIiIgorCisg
IG91dHB1dF9maWxlID0gb3Blbihvcy5wYXRoLmpvaW4ob3V0cHV0X2RpciwgR1RFU1RfSF9PVVRQ
VVQpLCAndycpCisgIHByb2Nlc3NlZF9maWxlcyA9IHNldCgpICAjIEhvbGRzIGFsbCBndGVzdCBo
ZWFkZXJzIHdlJ3ZlIHByb2Nlc3NlZC4KKworICBkZWYgUHJvY2Vzc0ZpbGUoZ3Rlc3RfaGVhZGVy
X3BhdGgpOgorICAgICIiIlByb2Nlc3NlcyB0aGUgZ2l2ZW4gZ3Rlc3QgaGVhZGVyIGZpbGUuIiIi
CisKKyAgICAjIFdlIGRvbid0IHByb2Nlc3MgdGhlIHNhbWUgaGVhZGVyIHR3aWNlLgorICAgIGlm
IGd0ZXN0X2hlYWRlcl9wYXRoIGluIHByb2Nlc3NlZF9maWxlczoKKyAgICAgIHJldHVybgorCisg
ICAgcHJvY2Vzc2VkX2ZpbGVzLmFkZChndGVzdF9oZWFkZXJfcGF0aCkKKworICAgICMgUmVhZHMg
ZWFjaCBsaW5lIGluIHRoZSBnaXZlbiBndGVzdCBoZWFkZXIuCisgICAgZm9yIGxpbmUgaW4gb3Bl
bihvcy5wYXRoLmpvaW4oZ3Rlc3Rfcm9vdCwgZ3Rlc3RfaGVhZGVyX3BhdGgpLCAncicpOgorICAg
ICAgbSA9IElOQ0xVREVfR1RFU1RfRklMRV9SRUdFWC5tYXRjaChsaW5lKQorICAgICAgaWYgbToK
KyAgICAgICAgIyBJdCdzICcjaW5jbHVkZSAiZ3Rlc3QvLi4uIicgLSBsZXQncyBwcm9jZXNzIGl0
IHJlY3Vyc2l2ZWx5LgorICAgICAgICBQcm9jZXNzRmlsZSgnaW5jbHVkZS8nICsgbS5ncm91cCgx
KSkKKyAgICAgIGVsc2U6CisgICAgICAgICMgT3RoZXJ3aXNlIHdlIGNvcHkgdGhlIGxpbmUgdW5j
aGFuZ2VkIHRvIHRoZSBvdXRwdXQgZmlsZS4KKyAgICAgICAgb3V0cHV0X2ZpbGUud3JpdGUobGlu
ZSkKKworICBQcm9jZXNzRmlsZShHVEVTVF9IX1NFRUQpCisgIG91dHB1dF9maWxlLmNsb3NlKCkK
KworCitkZWYgRnVzZUdUZXN0QWxsQ2NUb0ZpbGUoZ3Rlc3Rfcm9vdCwgb3V0cHV0X2ZpbGUpOgor
ICAiIiJTY2FucyBmb2xkZXIgZ3Rlc3Rfcm9vdCB0byBnZW5lcmF0ZSBndGVzdC9ndGVzdC1hbGwu
Y2MgaW4gb3V0cHV0X2ZpbGUuIiIiCisKKyAgcHJvY2Vzc2VkX2ZpbGVzID0gc2V0KCkKKworICBk
ZWYgUHJvY2Vzc0ZpbGUoZ3Rlc3Rfc291cmNlX2ZpbGUpOgorICAgICIiIlByb2Nlc3NlcyB0aGUg
Z2l2ZW4gZ3Rlc3Qgc291cmNlIGZpbGUuIiIiCisKKyAgICAjIFdlIGRvbid0IHByb2Nlc3MgdGhl
IHNhbWUgI2luY2x1ZGVkIGZpbGUgdHdpY2UuCisgICAgaWYgZ3Rlc3Rfc291cmNlX2ZpbGUgaW4g
cHJvY2Vzc2VkX2ZpbGVzOgorICAgICAgcmV0dXJuCisKKyAgICBwcm9jZXNzZWRfZmlsZXMuYWRk
KGd0ZXN0X3NvdXJjZV9maWxlKQorCisgICAgIyBSZWFkcyBlYWNoIGxpbmUgaW4gdGhlIGdpdmVu
IGd0ZXN0IHNvdXJjZSBmaWxlLgorICAgIGZvciBsaW5lIGluIG9wZW4ob3MucGF0aC5qb2luKGd0
ZXN0X3Jvb3QsIGd0ZXN0X3NvdXJjZV9maWxlKSwgJ3InKToKKyAgICAgIG0gPSBJTkNMVURFX0dU
RVNUX0ZJTEVfUkVHRVgubWF0Y2gobGluZSkKKyAgICAgIGlmIG06CisgICAgICAgIGlmICdpbmNs
dWRlLycgKyBtLmdyb3VwKDEpID09IEdURVNUX1NQSV9IX1NFRUQ6CisgICAgICAgICAgIyBJdCdz
ICcjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiJy4gIFRoaXMgZmlsZSBpcyBub3QKKyAgICAg
ICAgICAjICNpbmNsdWRlZCBieSAiZ3Rlc3QvZ3Rlc3QuaCIsIHNvIHdlIG5lZWQgdG8gcHJvY2Vz
cyBpdC4KKyAgICAgICAgICBQcm9jZXNzRmlsZShHVEVTVF9TUElfSF9TRUVEKQorICAgICAgICBl
bHNlOgorICAgICAgICAgICMgSXQncyAnI2luY2x1ZGUgImd0ZXN0L2Zvby5oIicgd2hlcmUgZm9v
IGlzIG5vdCBndGVzdC1zcGkuCisgICAgICAgICAgIyBXZSB0cmVhdCBpdCBhcyAnI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LmgiJywgYXMgYWxsIG90aGVyCisgICAgICAgICAgIyBndGVzdCBoZWFkZXJz
IGFyZSBiZWluZyBmdXNlZCBpbnRvIGd0ZXN0LmggYW5kIGNhbm5vdCBiZQorICAgICAgICAgICMg
I2luY2x1ZGVkIGRpcmVjdGx5LgorCisgICAgICAgICAgIyBUaGVyZSBpcyBubyBuZWVkIHRvICNp
bmNsdWRlICJndGVzdC9ndGVzdC5oIiBtb3JlIHRoYW4gb25jZS4KKyAgICAgICAgICBpZiBub3Qg
R1RFU1RfSF9TRUVEIGluIHByb2Nlc3NlZF9maWxlczoKKyAgICAgICAgICAgIHByb2Nlc3NlZF9m
aWxlcy5hZGQoR1RFU1RfSF9TRUVEKQorICAgICAgICAgICAgb3V0cHV0X2ZpbGUud3JpdGUoJyNp
bmNsdWRlICIlcyJcbicgJSAoR1RFU1RfSF9PVVRQVVQsKSkKKyAgICAgIGVsc2U6CisgICAgICAg
IG0gPSBJTkNMVURFX1NSQ19GSUxFX1JFR0VYLm1hdGNoKGxpbmUpCisgICAgICAgIGlmIG06Cisg
ICAgICAgICAgIyBJdCdzICcjaW5jbHVkZSAic3JjL2ZvbyInIC0gbGV0J3MgcHJvY2VzcyBpdCBy
ZWN1cnNpdmVseS4KKyAgICAgICAgICBQcm9jZXNzRmlsZShtLmdyb3VwKDEpKQorICAgICAgICBl
bHNlOgorICAgICAgICAgIG91dHB1dF9maWxlLndyaXRlKGxpbmUpCisKKyAgUHJvY2Vzc0ZpbGUo
R1RFU1RfQUxMX0NDX1NFRUQpCisKKworZGVmIEZ1c2VHVGVzdEFsbENjKGd0ZXN0X3Jvb3QsIG91
dHB1dF9kaXIpOgorICAiIiJTY2FucyBmb2xkZXIgZ3Rlc3Rfcm9vdCB0byBnZW5lcmF0ZSBndGVz
dC9ndGVzdC1hbGwuY2MgaW4gb3V0cHV0X2Rpci4iIiIKKworICBvdXRwdXRfZmlsZSA9IG9wZW4o
b3MucGF0aC5qb2luKG91dHB1dF9kaXIsIEdURVNUX0FMTF9DQ19PVVRQVVQpLCAndycpCisgIEZ1
c2VHVGVzdEFsbENjVG9GaWxlKGd0ZXN0X3Jvb3QsIG91dHB1dF9maWxlKQorICBvdXRwdXRfZmls
ZS5jbG9zZSgpCisKKworZGVmIEZ1c2VHVGVzdChndGVzdF9yb290LCBvdXRwdXRfZGlyKToKKyAg
IiIiRnVzZXMgZ3Rlc3QuaCBhbmQgZ3Rlc3QtYWxsLmNjLiIiIgorCisgIFZhbGlkYXRlR1Rlc3RS
b290RGlyKGd0ZXN0X3Jvb3QpCisgIFZhbGlkYXRlT3V0cHV0RGlyKG91dHB1dF9kaXIpCisKKyAg
RnVzZUdUZXN0SChndGVzdF9yb290LCBvdXRwdXRfZGlyKQorICBGdXNlR1Rlc3RBbGxDYyhndGVz
dF9yb290LCBvdXRwdXRfZGlyKQorCisKK2RlZiBtYWluKCk6CisgIGFyZ2MgPSBsZW4oc3lzLmFy
Z3YpCisgIGlmIGFyZ2MgPT0gMjoKKyAgICAjIGZ1c2VfZ3Rlc3RfZmlsZXMucHkgT1VUUFVUX0RJ
UgorICAgIEZ1c2VHVGVzdChERUZBVUxUX0dURVNUX1JPT1RfRElSLCBzeXMuYXJndlsxXSkKKyAg
ZWxpZiBhcmdjID09IDM6CisgICAgIyBmdXNlX2d0ZXN0X2ZpbGVzLnB5IEdURVNUX1JPT1RfRElS
IE9VVFBVVF9ESVIKKyAgICBGdXNlR1Rlc3Qoc3lzLmFyZ3ZbMV0sIHN5cy5hcmd2WzJdKQorICBl
bHNlOgorICAgIHByaW50KF9fZG9jX18pCisgICAgc3lzLmV4aXQoMSkKKworCitpZiBfX25hbWVf
XyA9PSAnX19tYWluX18nOgorICBtYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Njcmlw
dHMvZ2VuX2d0ZXN0X3ByZWRfaW1wbC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NjcmlwdHMvZ2VuX2d0ZXN0
X3ByZWRfaW1wbC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZTdhYjA0MmVhY2JhMTM4YTJiMmExNzgxYTcwYjc1
NGE3YWMyNWM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2NyaXB0cy9nZW5fZ3Rl
c3RfcHJlZF9pbXBsLnB5CkBAIC0wLDAgKzEsNzMwIEBACisjIS91c3IvYmluL2VudiBweXRob24K
KyMKKyMgQ29weXJpZ2h0IDIwMDYsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRp
b24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJnZW5fZ3Rlc3RfcHJlZF9pbXBsLnB5IHYwLjEKKwor
R2VuZXJhdGVzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBHb29nbGUgVGVzdCBwcmVkaWNhdGUgYXNz
ZXJ0aW9ucyBhbmQKK2FjY29tcGFueWluZyB0ZXN0cy4KKworVXNhZ2U6CisKKyAgZ2VuX2d0ZXN0
X3ByZWRfaW1wbC5weSBNQVhfQVJJVFkKKword2hlcmUgTUFYX0FSSVRZIGlzIGEgcG9zaXRpdmUg
aW50ZWdlci4KKworVGhlIGNvbW1hbmQgZ2VuZXJhdGVzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB1
cC10byBNQVhfQVJJVFktYXJ5CitwcmVkaWNhdGUgYXNzZXJ0aW9ucywgYW5kIHdyaXRlcyBpdCB0
byBmaWxlIGd0ZXN0X3ByZWRfaW1wbC5oIGluIHRoZQorZGlyZWN0b3J5IHdoZXJlIHRoZSBzY3Jp
cHQgaXMuICBJdCBhbHNvIGdlbmVyYXRlcyB0aGUgYWNjb21wYW55aW5nCit1bml0IHRlc3QgaW4g
ZmlsZSBndGVzdF9wcmVkX2ltcGxfdW5pdHRlc3QuY2MuCisiIiIKKworX19hdXRob3JfXyA9ICd3
YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKScKKworaW1wb3J0IG9zCitpbXBvcnQgc3lzCitp
bXBvcnQgdGltZQorCisjIFdoZXJlIHRoaXMgc2NyaXB0IGlzLgorU0NSSVBUX0RJUiA9IG9zLnBh
dGguZGlybmFtZShzeXMuYXJndlswXSkKKworIyBXaGVyZSB0byBzdG9yZSB0aGUgZ2VuZXJhdGVk
IGhlYWRlci4KK0hFQURFUiA9IG9zLnBhdGguam9pbihTQ1JJUFRfRElSLCAnLi4vaW5jbHVkZS9n
dGVzdC9ndGVzdF9wcmVkX2ltcGwuaCcpCisKKyMgV2hlcmUgdG8gc3RvcmUgdGhlIGdlbmVyYXRl
ZCB1bml0IHRlc3QuCitVTklUX1RFU1QgPSBvcy5wYXRoLmpvaW4oU0NSSVBUX0RJUiwgJy4uL3Rl
c3QvZ3Rlc3RfcHJlZF9pbXBsX3VuaXR0ZXN0LmNjJykKKworCitkZWYgSGVhZGVyUHJlYW1ibGUo
bik6CisgICIiIlJldHVybnMgdGhlIHByZWFtYmxlIGZvciB0aGUgaGVhZGVyIGZpbGUuCisKKyAg
QXJnczoKKyAgICBuOiAgdGhlIG1heGltdW0gYXJpdHkgb2YgdGhlIHByZWRpY2F0ZSBtYWNyb3Mg
dG8gYmUgZ2VuZXJhdGVkLgorICAiIiIKKworICAjIEEgbWFwIHRoYXQgZGVmaW5lcyB0aGUgdmFs
dWVzIHVzZWQgaW4gdGhlIHByZWFtYmxlIHRlbXBsYXRlLgorICBERUZTID0geworICAgICd0b2Rh
eScgOiB0aW1lLnN0cmZ0aW1lKCclbS8lZC8lWScpLAorICAgICd5ZWFyJyA6IHRpbWUuc3RyZnRp
bWUoJyVZJyksCisgICAgJ2NvbW1hbmQnIDogJyVzICVzJyAlIChvcy5wYXRoLmJhc2VuYW1lKHN5
cy5hcmd2WzBdKSwgbiksCisgICAgJ24nIDogbgorICAgIH0KKworICByZXR1cm4gKAorIiIiLy8g
Q29weXJpZ2h0IDIwMDYsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8K
Ky8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0
cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisv
LyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisvLyBUaGlzIGZpbGUg
aXMgQVVUT01BVElDQUxMWSBHRU5FUkFURUQgb24gJSh0b2RheSlzIGJ5IGNvbW1hbmQKKy8vICcl
KGNvbW1hbmQpcycuICBETyBOT1QgRURJVCBCWSBIQU5EIQorLy8KKy8vIEltcGxlbWVudHMgYSBm
YW1pbHkgb2YgZ2VuZXJpYyBwcmVkaWNhdGUgYXNzZXJ0aW9uIG1hY3Jvcy4KKworI2lmbmRlZiBH
VEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1BSRURfSU1QTF9IXworI2RlZmluZSBHVEVTVF9JTkNM
VURFX0dURVNUX0dURVNUX1BSRURfSU1QTF9IXworCisvLyBNYWtlcyBzdXJlIHRoaXMgaGVhZGVy
IGlzIG5vdCBpbmNsdWRlZCBiZWZvcmUgZ3Rlc3QuaC4KKyNpZm5kZWYgR1RFU1RfSU5DTFVERV9H
VEVTVF9HVEVTVF9IXworIyBlcnJvciBEbyBub3QgaW5jbHVkZSBndGVzdF9wcmVkX2ltcGwuaCBk
aXJlY3RseS4gIEluY2x1ZGUgZ3Rlc3QuaCBpbnN0ZWFkLgorI2VuZGlmICAvLyBHVEVTVF9JTkNM
VURFX0dURVNUX0dURVNUX0hfCisKKy8vIFRoaXMgaGVhZGVyIGltcGxlbWVudHMgYSBmYW1pbHkg
b2YgZ2VuZXJpYyBwcmVkaWNhdGUgYXNzZXJ0aW9uCisvLyBtYWNyb3M6CisvLworLy8gICBBU1NF
UlRfUFJFRF9GT1JNQVQxKHByZWRfZm9ybWF0LCB2MSkKKy8vICAgQVNTRVJUX1BSRURfRk9STUFU
MihwcmVkX2Zvcm1hdCwgdjEsIHYyKQorLy8gICAuLi4KKy8vCisvLyB3aGVyZSBwcmVkX2Zvcm1h
dCBpcyBhIGZ1bmN0aW9uIG9yIGZ1bmN0b3IgdGhhdCB0YWtlcyBuIChpbiB0aGUKKy8vIGNhc2Ug
b2YgQVNTRVJUX1BSRURfRk9STUFUbikgdmFsdWVzIGFuZCB0aGVpciBzb3VyY2UgZXhwcmVzc2lv
bgorLy8gdGV4dCwgYW5kIHJldHVybnMgYSB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQuICBTZWUg
dGhlIGRlZmluaXRpb24KKy8vIG9mIEFTU0VSVF9FUSBpbiBndGVzdC5oIGZvciBhbiBleGFtcGxl
LgorLy8KKy8vIElmIHlvdSBkb24ndCBjYXJlIGFib3V0IGZvcm1hdHRpbmcsIHlvdSBjYW4gdXNl
IHRoZSBtb3JlCisvLyByZXN0cmljdGl2ZSB2ZXJzaW9uOgorLy8KKy8vICAgQVNTRVJUX1BSRUQx
KHByZWQsIHYxKQorLy8gICBBU1NFUlRfUFJFRDIocHJlZCwgdjEsIHYyKQorLy8gICAuLi4KKy8v
CisvLyB3aGVyZSBwcmVkIGlzIGFuIG4tYXJ5IGZ1bmN0aW9uIG9yIGZ1bmN0b3IgdGhhdCByZXR1
cm5zIGJvb2wsCisvLyBhbmQgdGhlIHZhbHVlcyB2MSwgdjIsIC4uLiwgbXVzdCBzdXBwb3J0IHRo
ZSA8PCBvcGVyYXRvciBmb3IKKy8vIHN0cmVhbWluZyB0byBzdGQ6Om9zdHJlYW0uCisvLworLy8g
V2UgYWxzbyBkZWZpbmUgdGhlIEVYUEVDVF8qIHZhcmlhdGlvbnMuCisvLworLy8gRm9yIG5vdyB3
ZSBvbmx5IHN1cHBvcnQgcHJlZGljYXRlcyB3aG9zZSBhcml0eSBpcyBhdCBtb3N0ICUobilzLgor
Ly8gUGxlYXNlIGVtYWlsIGdvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBzLmNvbSBpZiB5
b3UgbmVlZAorLy8gc3VwcG9ydCBmb3IgaGlnaGVyIGFyaXRpZXMuCisKKy8vIEdURVNUX0FTU0VS
VF8gaXMgdGhlIGJhc2ljIHN0YXRlbWVudCB0byB3aGljaCBhbGwgb2YgdGhlIGFzc2VydGlvbnMK
Ky8vIGluIHRoaXMgZmlsZSByZWR1Y2UuICBEb24ndCB1c2UgdGhpcyBpbiB5b3VyIGNvZGUuCisK
KyNkZWZpbmUgR1RFU1RfQVNTRVJUXyhleHByZXNzaW9uLCBvbl9mYWlsdXJlKSBcXAorICBHVEVT
VF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBcXAorICBpZiAoY29uc3QgOjp0ZXN0aW5nOjpBc3Nl
cnRpb25SZXN1bHQgZ3Rlc3RfYXIgPSAoZXhwcmVzc2lvbikpIFxcCisgICAgOyBcXAorICBlbHNl
IFxcCisgICAgb25fZmFpbHVyZShndGVzdF9hci5mYWlsdXJlX21lc3NhZ2UoKSkKKyIiIiAlIERF
RlMpCisKKworZGVmIEFyaXR5KG4pOgorICAiIiJSZXR1cm5zIHRoZSBFbmdsaXNoIG5hbWUgb2Yg
dGhlIGdpdmVuIGFyaXR5LiIiIgorCisgIGlmIG4gPCAwOgorICAgIHJldHVybiBOb25lCisgIGVs
aWYgbiA8PSAzOgorICAgIHJldHVybiBbJ251bGxhcnknLCAndW5hcnknLCAnYmluYXJ5JywgJ3Rl
cm5hcnknXVtuXQorICBlbHNlOgorICAgIHJldHVybiAnJXMtYXJ5JyAlIG4KKworCitkZWYgVGl0
bGUod29yZCk6CisgICIiIlJldHVybnMgdGhlIGdpdmVuIHdvcmQgaW4gdGl0bGUgY2FzZS4gIFRo
ZSBkaWZmZXJlbmNlIGJldHdlZW4KKyAgdGhpcyBhbmQgc3RyaW5nJ3MgdGl0bGUoKSBtZXRob2Qg
aXMgdGhhdCBUaXRsZSgnNC1hcnknKSBpcyAnNC1hcnknCisgIHdoaWxlICc0LWFyeScudGl0bGUo
KSBpcyAnNC1BcnknLiIiIgorCisgIHJldHVybiB3b3JkWzBdLnVwcGVyKCkgKyB3b3JkWzE6XQor
CisKK2RlZiBPbmVUbyhuKToKKyAgIiIiUmV0dXJucyB0aGUgbGlzdCBbMSwgMiwgMywgLi4uLCBu
XS4iIiIKKworICByZXR1cm4gcmFuZ2UoMSwgbiArIDEpCisKKworZGVmIEl0ZXIobiwgZm9ybWF0
LCBzZXA9JycpOgorICAiIiJHaXZlbiBhIHBvc2l0aXZlIGludGVnZXIgbiwgYSBmb3JtYXQgc3Ry
aW5nIHRoYXQgY29udGFpbnMgMCBvcgorICBtb3JlICclcycgZm9ybWF0IHNwZWNzLCBhbmQgb3B0
aW9uYWxseSBhIHNlcGFyYXRvciBzdHJpbmcsIHJldHVybnMKKyAgdGhlIGpvaW4gb2YgbiBzdHJp
bmdzLCBlYWNoIGZvcm1hdHRlZCB3aXRoIHRoZSBmb3JtYXQgc3RyaW5nIG9uIGFuCisgIGl0ZXJh
dG9yIHJhbmdlZCBmcm9tIDEgdG8gbi4KKworICBFeGFtcGxlOgorCisgIEl0ZXIoMywgJ3Ylcycs
IHNlcD0nLCAnKSByZXR1cm5zICd2MSwgdjIsIHYzJy4KKyAgIiIiCisKKyAgIyBIb3cgbWFueSAn
JXMnIHNwZWNzIGFyZSBpbiBmb3JtYXQ/CisgIHNwZWNfY291bnQgPSBsZW4oZm9ybWF0LnNwbGl0
KCclcycpKSAtIDEKKyAgcmV0dXJuIHNlcC5qb2luKFtmb3JtYXQgJSAoc3BlY19jb3VudCAqIChp
LCkpIGZvciBpIGluIE9uZVRvKG4pXSkKKworCitkZWYgSW1wbGVtZW50YXRpb25Gb3JBcml0eShu
KToKKyAgIiIiUmV0dXJucyB0aGUgaW1wbGVtZW50YXRpb24gb2Ygbi1hcnkgcHJlZGljYXRlIGFz
c2VydGlvbnMuIiIiCisKKyAgIyBBIG1hcCB0aGUgZGVmaW5lcyB0aGUgdmFsdWVzIHVzZWQgaW4g
dGhlIGltcGxlbWVudGF0aW9uIHRlbXBsYXRlLgorICBERUZTID0geworICAgICduJyA6IHN0cihu
KSwKKyAgICAndnMnIDogSXRlcihuLCAndiVzJywgc2VwPScsICcpLAorICAgICd2dHMnIDogSXRl
cihuLCAnI3YlcycsIHNlcD0nLCAnKSwKKyAgICAnYXJpdHknIDogQXJpdHkobiksCisgICAgJ0Fy
aXR5JyA6IFRpdGxlKEFyaXR5KG4pKQorICAgIH0KKworICBpbXBsID0gIiIiCisKKy8vIEhlbHBl
ciBmdW5jdGlvbiBmb3IgaW1wbGVtZW50aW5nIHtFWFBFQ1R8QVNTRVJUfV9QUkVEJShuKXMuICBE
b24ndCB1c2UKKy8vIHRoaXMgaW4geW91ciBjb2RlLgordGVtcGxhdGUgPHR5cGVuYW1lIFByZWQi
IiIgJSBERUZTCisKKyAgaW1wbCArPSBJdGVyKG4sICIiIiwKKyAgICAgICAgICB0eXBlbmFtZSBU
JXMiIiIpCisKKyAgaW1wbCArPSAiIiI+CitBc3NlcnRpb25SZXN1bHQgQXNzZXJ0UHJlZCUobilz
SGVscGVyKGNvbnN0IGNoYXIqIHByZWRfdGV4dCIiIiAlIERFRlMKKworICBpbXBsICs9IEl0ZXIo
biwgIiIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGUl
cyIiIikKKworICBpbXBsICs9ICIiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQcmVkIHByZWQiIiIKKworICBpbXBsICs9IEl0ZXIobiwgIiIiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFQlcyYgdiVzIiIiKQorCisgIGltcGwgKz0gIiIiKSB7
CisgIGlmIChwcmVkKCUodnMpcykpIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CisKKyIiIiAl
IERFRlMKKworICBpbXBsICs9ICcgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwgcHJlZF90
ZXh0IDw8ICIoIicKKworICBpbXBsICs9IEl0ZXIobiwgIiIiCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPDwgZSVzIiIiLCBzZXA9JyA8PCAiLCAiJykKKworICBpbXBsICs9ICcgPDwgIikg
ZXZhbHVhdGVzIHRvIGZhbHNlLCB3aGVyZSInCisKKyAgaW1wbCArPSBJdGVyKG4sICIiIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcXG4iIDw8IGUlcyA8PCAiIGV2YWx1YXRlcyB0
byAiIDw8IHYlcyIiIikKKworICBpbXBsICs9ICIiIjsKK30KKworLy8gSW50ZXJuYWwgbWFjcm8g
Zm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRF9GT1JNQVQlKG4pcy4KKy8vIERv
bid0IHVzZSB0aGlzIGluIHlvdXIgY29kZS4KKyNkZWZpbmUgR1RFU1RfUFJFRF9GT1JNQVQlKG4p
c18ocHJlZF9mb3JtYXQsICUodnMpcywgb25fZmFpbHVyZSlcXAorICBHVEVTVF9BU1NFUlRfKHBy
ZWRfZm9ybWF0KCUodnRzKXMsICUodnMpcyksIFxcCisgICAgICAgICAgICAgICAgb25fZmFpbHVy
ZSkKKworLy8gSW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1f
UFJFRCUobilzLiAgRG9uJ3QgdXNlCisvLyB0aGlzIGluIHlvdXIgY29kZS4KKyNkZWZpbmUgR1RF
U1RfUFJFRCUobilzXyhwcmVkLCAlKHZzKXMsIG9uX2ZhaWx1cmUpXFwKKyAgR1RFU1RfQVNTRVJU
Xyg6OnRlc3Rpbmc6OkFzc2VydFByZWQlKG4pc0hlbHBlcigjcHJlZCIiIiAlIERFRlMKKworICBp
bXBsICs9IEl0ZXIobiwgIiIiLCBcXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgI3YlcyIiIikKKworICBpbXBsICs9ICIiIiwgXFwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWQiIiIKKworICBpbXBsICs9IEl0ZXIo
biwgIiIiLCBcXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
diVzIiIiKQorCisgIGltcGwgKz0gIiIiKSwgb25fZmFpbHVyZSkKKworLy8gJShBcml0eSlzIHBy
ZWRpY2F0ZSBhc3NlcnRpb24gbWFjcm9zLgorI2RlZmluZSBFWFBFQ1RfUFJFRF9GT1JNQVQlKG4p
cyhwcmVkX2Zvcm1hdCwgJSh2cylzKSBcXAorICBHVEVTVF9QUkVEX0ZPUk1BVCUobilzXyhwcmVk
X2Zvcm1hdCwgJSh2cylzLCBHVEVTVF9OT05GQVRBTF9GQUlMVVJFXykKKyNkZWZpbmUgRVhQRUNU
X1BSRUQlKG4pcyhwcmVkLCAlKHZzKXMpIFxcCisgIEdURVNUX1BSRUQlKG4pc18ocHJlZCwgJSh2
cylzLCBHVEVTVF9OT05GQVRBTF9GQUlMVVJFXykKKyNkZWZpbmUgQVNTRVJUX1BSRURfRk9STUFU
JShuKXMocHJlZF9mb3JtYXQsICUodnMpcykgXFwKKyAgR1RFU1RfUFJFRF9GT1JNQVQlKG4pc18o
cHJlZF9mb3JtYXQsICUodnMpcywgR1RFU1RfRkFUQUxfRkFJTFVSRV8pCisjZGVmaW5lIEFTU0VS
VF9QUkVEJShuKXMocHJlZCwgJSh2cylzKSBcXAorICBHVEVTVF9QUkVEJShuKXNfKHByZWQsICUo
dnMpcywgR1RFU1RfRkFUQUxfRkFJTFVSRV8pCisKKyIiIiAlIERFRlMKKworICByZXR1cm4gaW1w
bAorCisKK2RlZiBIZWFkZXJQb3N0YW1ibGUoKToKKyAgIiIiUmV0dXJucyB0aGUgcG9zdGFtYmxl
IGZvciB0aGUgaGVhZGVyIGZpbGUuIiIiCisKKyAgcmV0dXJuICIiIgorCisjZW5kaWYgIC8vIEdU
RVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUFJFRF9JTVBMX0hfCisiIiIKKworCitkZWYgR2VuZXJh
dGVGaWxlKHBhdGgsIGNvbnRlbnQpOgorICAiIiJHaXZlbiBhIGZpbGUgcGF0aCBhbmQgYSBjb250
ZW50IHN0cmluZywgb3ZlcndyaXRlcyBpdCB3aXRoIHRoZQorICBnaXZlbiBjb250ZW50LiIiIgor
CisgIHByaW50ICdVcGRhdGluZyBmaWxlICVzIC4gLiAuJyAlIHBhdGgKKworICBmID0gZmlsZShw
YXRoLCAndysnKQorICBwcmludCA+PmYsIGNvbnRlbnQsCisgIGYuY2xvc2UoKQorCisgIHByaW50
ICdGaWxlICVzIGhhcyBiZWVuIHVwZGF0ZWQuJyAlIHBhdGgKKworCitkZWYgR2VuZXJhdGVIZWFk
ZXIobik6CisgICIiIkdpdmVuIHRoZSBtYXhpbXVtIGFyaXR5IG4sIHVwZGF0ZXMgdGhlIGhlYWRl
ciBmaWxlIHRoYXQgaW1wbGVtZW50cworICB0aGUgcHJlZGljYXRlIGFzc2VydGlvbnMuIiIiCisK
KyAgR2VuZXJhdGVGaWxlKEhFQURFUiwKKyAgICAgICAgICAgICAgIEhlYWRlclByZWFtYmxlKG4p
CisgICAgICAgICAgICAgICArICcnLmpvaW4oW0ltcGxlbWVudGF0aW9uRm9yQXJpdHkoaSkgZm9y
IGkgaW4gT25lVG8obildKQorICAgICAgICAgICAgICAgKyBIZWFkZXJQb3N0YW1ibGUoKSkKKwor
CitkZWYgVW5pdFRlc3RQcmVhbWJsZSgpOgorICAiIiJSZXR1cm5zIHRoZSBwcmVhbWJsZSBmb3Ig
dGhlIHVuaXQgdGVzdCBmaWxlLiIiIgorCisgICMgQSBtYXAgdGhhdCBkZWZpbmVzIHRoZSB2YWx1
ZXMgdXNlZCBpbiB0aGUgcHJlYW1ibGUgdGVtcGxhdGUuCisgIERFRlMgPSB7CisgICAgJ3RvZGF5
JyA6IHRpbWUuc3RyZnRpbWUoJyVtLyVkLyVZJyksCisgICAgJ3llYXInIDogdGltZS5zdHJmdGlt
ZSgnJVknKSwKKyAgICAnY29tbWFuZCcgOiAnJXMgJXMnICUgKG9zLnBhdGguYmFzZW5hbWUoc3lz
LmFyZ3ZbMF0pLCBzeXMuYXJndlsxXSksCisgICAgfQorCisgIHJldHVybiAoCisiIiIvLyBDb3B5
cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8g
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
Ky8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1
dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
Ky8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKy8vIFRoaXMgZmlsZSBpcyBB
VVRPTUFUSUNBTExZIEdFTkVSQVRFRCBvbiAlKHRvZGF5KXMgYnkgY29tbWFuZAorLy8gJyUoY29t
bWFuZClzJy4gIERPIE5PVCBFRElUIEJZIEhBTkQhCisKKy8vIFJlZ3Jlc3Npb24gdGVzdCBmb3Ig
Z3Rlc3RfcHJlZF9pbXBsLmgKKy8vCisvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGEgc2Ny
aXB0IGFuZCBxdWl0ZSBsb25nLiAgSWYgeW91IGludGVuZCB0bworLy8gbGVhcm4gaG93IEdvb2ds
ZSBUZXN0IHdvcmtzIGJ5IHJlYWRpbmcgaXRzIHVuaXQgdGVzdHMsIHJlYWQKKy8vIGd0ZXN0X3Vu
aXR0ZXN0LmNjIGluc3RlYWQuCisvLworLy8gVGhpcyBpcyBpbnRlbmRlZCBhcyBhIHJlZ3Jlc3Np
b24gdGVzdCBmb3IgdGhlIEdvb2dsZSBUZXN0IHByZWRpY2F0ZQorLy8gYXNzZXJ0aW9ucy4gIFdl
IGNvbXBpbGUgaXQgYXMgcGFydCBvZiB0aGUgZ3Rlc3RfdW5pdHRlc3QgdGFyZ2V0CisvLyBvbmx5
IHRvIGtlZXAgdGhlIGltcGxlbWVudGF0aW9uIHRpZHkgYW5kIGNvbXBhY3QsIGFzIGl0IGlzIHF1
aXRlCisvLyBpbnZvbHZlZCB0byBzZXQgdXAgdGhlIHN0YWdlIGZvciB0ZXN0aW5nIEdvb2dsZSBU
ZXN0IHVzaW5nIEdvb2dsZQorLy8gVGVzdCBpdHNlbGYuCisvLworLy8gQ3VycmVudGx5LCBndGVz
dF91bml0dGVzdCB0YWtlcyB+MTEgc2Vjb25kcyB0byBydW4gaW4gdGhlIHRlc3RpbmcKKy8vIGRh
ZW1vbi4gIEluIHRoZSBmdXR1cmUsIGlmIGl0IGdyb3dzIHRvbyBsYXJnZSBhbmQgbmVlZHMgbXVj
aCBtb3JlCisvLyB0aW1lIHRvIGZpbmlzaCwgd2Ugc2hvdWxkIGNvbnNpZGVyIHNlcGFyYXRpbmcg
dGhpcyBmaWxlIGludG8gYQorLy8gc3RhbmQtYWxvbmUgcmVncmVzc2lvbiB0ZXN0LgorCisjaW5j
bHVkZSA8aW9zdHJlYW0+CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImd0
ZXN0L2d0ZXN0LXNwaS5oIgorCisvLyBBIHVzZXItZGVmaW5lZCBkYXRhIHR5cGUuCitzdHJ1Y3Qg
Qm9vbCB7CisgIGV4cGxpY2l0IEJvb2woaW50IHZhbCkgOiB2YWx1ZSh2YWwgIT0gMCkge30KKwor
ICBib29sIG9wZXJhdG9yPihpbnQgbikgY29uc3QgeyByZXR1cm4gdmFsdWUgPiBCb29sKG4pLnZh
bHVlOyB9CisKKyAgQm9vbCBvcGVyYXRvcisoY29uc3QgQm9vbCYgcmhzKSBjb25zdCB7IHJldHVy
biBCb29sKHZhbHVlICsgcmhzLnZhbHVlKTsgfQorCisgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBC
b29sJiByaHMpIGNvbnN0IHsgcmV0dXJuIHZhbHVlID09IHJocy52YWx1ZTsgfQorCisgIGJvb2wg
dmFsdWU7Cit9OworCisvLyBFbmFibGVzIEJvb2wgdG8gYmUgdXNlZCBpbiBhc3NlcnRpb25zLgor
c3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IEJvb2wmIHgp
IHsKKyAgcmV0dXJuIG9zIDw8ICh4LnZhbHVlID8gInRydWUiIDogImZhbHNlIik7Cit9CisKKyIi
IiAlIERFRlMpCisKKworZGVmIFRlc3RzRm9yQXJpdHkobik6CisgICIiIlJldHVybnMgdGhlIHRl
c3RzIGZvciBuLWFyeSBwcmVkaWNhdGUgYXNzZXJ0aW9ucy4iIiIKKworICAjIEEgbWFwIHRoYXQg
ZGVmaW5lcyB0aGUgdmFsdWVzIHVzZWQgaW4gdGhlIHRlbXBsYXRlIGZvciB0aGUgdGVzdHMuCisg
IERFRlMgPSB7CisgICAgJ24nIDogbiwKKyAgICAnZXMnIDogSXRlcihuLCAnZSVzJywgc2VwPScs
ICcpLAorICAgICd2cycgOiBJdGVyKG4sICd2JXMnLCBzZXA9JywgJyksCisgICAgJ3Z0cycgOiBJ
dGVyKG4sICcjdiVzJywgc2VwPScsICcpLAorICAgICd0dnMnIDogSXRlcihuLCAnVCVzIHYlcycs
IHNlcD0nLCAnKSwKKyAgICAnaW50X3ZzJyA6IEl0ZXIobiwgJ2ludCB2JXMnLCBzZXA9JywgJyks
CisgICAgJ0Jvb2xfdnMnIDogSXRlcihuLCAnQm9vbCB2JXMnLCBzZXA9JywgJyksCisgICAgJ3R5
cGVzJyA6IEl0ZXIobiwgJ3R5cGVuYW1lIFQlcycsIHNlcD0nLCAnKSwKKyAgICAndl9zdW0nIDog
SXRlcihuLCAndiVzJywgc2VwPScgKyAnKSwKKyAgICAnYXJpdHknIDogQXJpdHkobiksCisgICAg
J0FyaXR5JyA6IFRpdGxlKEFyaXR5KG4pKSwKKyAgICB9CisKKyAgdGVzdHMgPSAoCisiIiIvLyBT
YW1wbGUgZnVuY3Rpb25zL2Z1bmN0b3JzIGZvciB0ZXN0aW5nICUoYXJpdHkpcyBwcmVkaWNhdGUg
YXNzZXJ0aW9ucy4KKworLy8gQSAlKGFyaXR5KXMgcHJlZGljYXRlIGZ1bmN0aW9uLgordGVtcGxh
dGUgPCUodHlwZXMpcz4KK2Jvb2wgUHJlZEZ1bmN0aW9uJShuKXMoJSh0dnMpcykgeworICByZXR1
cm4gJSh2X3N1bSlzID4gMDsKK30KKworLy8gVGhlIGZvbGxvd2luZyB0d28gZnVuY3Rpb25zIGFy
ZSBuZWVkZWQgdG8gY2lyY3VtdmVudCBhIGJ1ZyBpbgorLy8gZ2NjIDIuOTUuMywgd2hpY2ggc29t
ZXRpbWVzIGhhcyBwcm9ibGVtIHdpdGggdGhlIGFib3ZlIHRlbXBsYXRlCisvLyBmdW5jdGlvbi4K
K2Jvb2wgUHJlZEZ1bmN0aW9uJShuKXNJbnQoJShpbnRfdnMpcykgeworICByZXR1cm4gJSh2X3N1
bSlzID4gMDsKK30KK2Jvb2wgUHJlZEZ1bmN0aW9uJShuKXNCb29sKCUoQm9vbF92cylzKSB7Cisg
IHJldHVybiAlKHZfc3VtKXMgPiAwOworfQorIiIiICUgREVGUykKKworICB0ZXN0cyArPSAiIiIK
Ky8vIEEgJShhcml0eSlzIHByZWRpY2F0ZSBmdW5jdG9yLgorc3RydWN0IFByZWRGdW5jdG9yJShu
KXMgeworICB0ZW1wbGF0ZSA8JSh0eXBlcylzPgorICBib29sIG9wZXJhdG9yKCkoIiIiICUgREVG
UworCisgIHRlc3RzICs9IEl0ZXIobiwgJ2NvbnN0IFQlcyYgdiVzJywgc2VwPSIiIiwKKyAgICAg
ICAgICAgICAgICAgICIiIikKKworICB0ZXN0cyArPSAiIiIpIHsKKyAgICByZXR1cm4gJSh2X3N1
bSlzID4gMDsKKyAgfQorfTsKKyIiIiAlIERFRlMKKworICB0ZXN0cyArPSAiIiIKKy8vIEEgJShh
cml0eSlzIHByZWRpY2F0ZS1mb3JtYXR0ZXIgZnVuY3Rpb24uCit0ZW1wbGF0ZSA8JSh0eXBlcylz
PgordGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IFByZWRGb3JtYXRGdW5jdGlvbiUobilzKCIiIiAl
IERFRlMKKworICB0ZXN0cyArPSBJdGVyKG4sICdjb25zdCBjaGFyKiBlJXMnLCBzZXA9IiIiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIiKQorCisgIHRl
c3RzICs9IEl0ZXIobiwgIiIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVCVzJiB2JXMiIiIpCisKKyAgdGVzdHMgKz0gIiIiKSB7CisgIGlmIChQ
cmVkRnVuY3Rpb24lKG4pcyglKHZzKXMpKQorICAgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25T
dWNjZXNzKCk7CisKKyAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKQorICAgICAg
PDwgIiIiICUgREVGUworCisgIHRlc3RzICs9IEl0ZXIobiwgJ2UlcycsIHNlcD0nIDw8ICIgKyAi
IDw8ICcpCisKKyAgdGVzdHMgKz0gIiIiCisgICAgICA8PCAiIGlzIGV4cGVjdGVkIHRvIGJlIHBv
c2l0aXZlLCBidXQgZXZhbHVhdGVzIHRvICIKKyAgICAgIDw8ICUodl9zdW0pcyA8PCAiLiI7Cit9
CisiIiIgJSBERUZTCisKKyAgdGVzdHMgKz0gIiIiCisvLyBBICUoYXJpdHkpcyBwcmVkaWNhdGUt
Zm9ybWF0dGVyIGZ1bmN0b3IuCitzdHJ1Y3QgUHJlZEZvcm1hdEZ1bmN0b3IlKG4pcyB7CisgIHRl
bXBsYXRlIDwlKHR5cGVzKXM+CisgIHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBvcGVyYXRvcigp
KCIiIiAlIERFRlMKKworICB0ZXN0cyArPSBJdGVyKG4sICdjb25zdCBjaGFyKiBlJXMnLCBzZXA9
IiIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiIpCisKKyAgdGVz
dHMgKz0gSXRlcihuLCAiIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFQlcyYgdiVzIiIiKQorCisgIHRlc3RzICs9ICIiIikgY29uc3QgeworICAgIHJldHVy
biBQcmVkRm9ybWF0RnVuY3Rpb24lKG4pcyglKGVzKXMsICUodnMpcyk7CisgIH0KK307CisiIiIg
JSBERUZTCisKKyAgdGVzdHMgKz0gIiIiCisvLyBUZXN0cyBmb3Ige0VYUEVDVHxBU1NFUlR9X1BS
RURfRk9STUFUJShuKXMuCisKK2NsYXNzIFByZWRpY2F0ZSUobilzVGVzdCA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICBl
eHBlY3RlZF90b19maW5pc2hfID0gdHJ1ZTsKKyAgICBmaW5pc2hlZF8gPSBmYWxzZTsiIiIgJSBE
RUZTCisKKyAgdGVzdHMgKz0gIiIiCisgICAgIiIiICsgSXRlcihuLCAnbiVzXyA9ICcpICsgIiIi
MDsKKyAgfQorIiIiCisKKyAgdGVzdHMgKz0gIiIiCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigp
IHsKKyAgICAvLyBWZXJpZmllcyB0aGF0IGVhY2ggb2YgdGhlIHByZWRpY2F0ZSdzIGFyZ3VtZW50
cyB3YXMgZXZhbHVhdGVkCisgICAgLy8gZXhhY3RseSBvbmNlLiIiIgorCisgIHRlc3RzICs9ICcn
LmpvaW4oWyIiIgorICAgIEVYUEVDVF9FUSgxLCBuJXNfKSA8PAorICAgICAgICAiVGhlIHByZWRp
Y2F0ZSBhc3NlcnRpb24gZGlkbid0IGV2YWx1YXRlIGFyZ3VtZW50ICVzICIKKyAgICAgICAgImV4
YWN0bHkgb25jZS4iOyIiIiAlIChpLCBpICsgMSkgZm9yIGkgaW4gT25lVG8obildKQorCisgIHRl
c3RzICs9ICIiIgorCisgICAgLy8gVmVyaWZpZXMgdGhhdCB0aGUgY29udHJvbCBmbG93IGluIHRo
ZSB0ZXN0IGZ1bmN0aW9uIGlzIGV4cGVjdGVkLgorICAgIGlmIChleHBlY3RlZF90b19maW5pc2hf
ICYmICFmaW5pc2hlZF8pIHsKKyAgICAgIEZBSUwoKSA8PCAiVGhlIHByZWRpY2F0ZSBhc3NlcnRp
b24gdW5leHBhY3RlZGx5IGFib3J0ZWQgdGhlIHRlc3QuIjsKKyAgICB9IGVsc2UgaWYgKCFleHBl
Y3RlZF90b19maW5pc2hfICYmIGZpbmlzaGVkXykgeworICAgICAgRkFJTCgpIDw8ICJUaGUgZmFp
bGVkIHByZWRpY2F0ZSBhc3NlcnRpb24gZGlkbid0IGFib3J0IHRoZSB0ZXN0ICIKKyAgICAgICAg
ICAgICAgICAiYXMgZXhwZWN0ZWQuIjsKKyAgICB9CisgIH0KKworICAvLyB0cnVlIGlmZiB0aGUg
dGVzdCBmdW5jdGlvbiBpcyBleHBlY3RlZCB0byBydW4gdG8gZmluaXNoLgorICBzdGF0aWMgYm9v
bCBleHBlY3RlZF90b19maW5pc2hfOworCisgIC8vIHRydWUgaWZmIHRoZSB0ZXN0IGZ1bmN0aW9u
IGRpZCBydW4gdG8gZmluaXNoLgorICBzdGF0aWMgYm9vbCBmaW5pc2hlZF87CisiIiIgJSBERUZT
CisKKyAgdGVzdHMgKz0gSXRlcihuLCAiIiIKKyAgc3RhdGljIGludCBuJXNfOyIiIikKKworICB0
ZXN0cyArPSAiIiIKK307CisKK2Jvb2wgUHJlZGljYXRlJShuKXNUZXN0OjpleHBlY3RlZF90b19m
aW5pc2hfOworYm9vbCBQcmVkaWNhdGUlKG4pc1Rlc3Q6OmZpbmlzaGVkXzsKKyIiIiAlIERFRlMK
KworICB0ZXN0cyArPSBJdGVyKG4sICIiImludCBQcmVkaWNhdGUlJShuKXNUZXN0OjpuJXNfOwor
IiIiKSAlIERFRlMKKworICB0ZXN0cyArPSAiIiIKK3R5cGVkZWYgUHJlZGljYXRlJShuKXNUZXN0
IEVYUEVDVF9QUkVEX0ZPUk1BVCUobilzVGVzdDsKK3R5cGVkZWYgUHJlZGljYXRlJShuKXNUZXN0
IEFTU0VSVF9QUkVEX0ZPUk1BVCUobilzVGVzdDsKK3R5cGVkZWYgUHJlZGljYXRlJShuKXNUZXN0
IEVYUEVDVF9QUkVEJShuKXNUZXN0OwordHlwZWRlZiBQcmVkaWNhdGUlKG4pc1Rlc3QgQVNTRVJU
X1BSRUQlKG4pc1Rlc3Q7CisiIiIgJSBERUZTCisKKyAgZGVmIEdlblRlc3QodXNlX2Zvcm1hdCwg
dXNlX2Fzc2VydCwgZXhwZWN0X2ZhaWx1cmUsCisgICAgICAgICAgICAgIHVzZV9mdW5jdG9yLCB1
c2VfdXNlcl90eXBlKToKKyAgICAiIiJSZXR1cm5zIHRoZSB0ZXN0IGZvciBhIHByZWRpY2F0ZSBh
c3NlcnRpb24gbWFjcm8uCisKKyAgICBBcmdzOgorICAgICAgdXNlX2Zvcm1hdDogICAgIHRydWUg
aWZmIHRoZSBhc3NlcnRpb24gaXMgYSAqX1BSRURfRk9STUFUKi4KKyAgICAgIHVzZV9hc3NlcnQ6
ICAgICB0cnVlIGlmZiB0aGUgYXNzZXJ0aW9uIGlzIGEgQVNTRVJUXyouCisgICAgICBleHBlY3Rf
ZmFpbHVyZTogdHJ1ZSBpZmYgdGhlIGFzc2VydGlvbiBpcyBleHBlY3RlZCB0byBmYWlsLgorICAg
ICAgdXNlX2Z1bmN0b3I6ICAgIHRydWUgaWZmIHRoZSBmaXJzdCBhcmd1bWVudCBvZiB0aGUgYXNz
ZXJ0aW9uIGlzCisgICAgICAgICAgICAgICAgICAgICAgYSBmdW5jdG9yIChhcyBvcHBvc2VkIHRv
IGEgZnVuY3Rpb24pCisgICAgICB1c2VfdXNlcl90eXBlOiAgdHJ1ZSBpZmYgdGhlIHByZWRpY2F0
ZSBmdW5jdG9yL2Z1bmN0aW9uIHRha2VzCisgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnQo
cykgb2YgYSB1c2VyLWRlZmluZWQgdHlwZS4KKworICAgIEV4YW1wbGU6CisKKyAgICAgIEdlblRl
c3QoMSwgMCwgMCwgMSwgMCkgcmV0dXJucyBhIHRlc3QgdGhhdCB0ZXN0cyB0aGUgYmVoYXZpb3IK
KyAgICAgIG9mIGEgc3VjY2Vzc2Z1bCBFWFBFQ1RfUFJFRF9GT1JNQVRuKCkgdGhhdCB0YWtlcyBh
IGZ1bmN0b3IKKyAgICAgIHdob3NlIGFyZ3VtZW50cyBoYXZlIGJ1aWx0LWluIHR5cGVzLiIiIgor
CisgICAgaWYgdXNlX2Fzc2VydDoKKyAgICAgIGFzc3J0ID0gJ0FTU0VSVCcgICMgJ2Fzc2VydCcg
aXMgcmVzZXJ2ZWQsIHNvIHdlIGNhbm5vdCB1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICMg
dGhhdCBpZGVudGlmaWVyIGhlcmUuCisgICAgZWxzZToKKyAgICAgIGFzc3J0ID0gJ0VYUEVDVCcK
KworICAgIGFzc2VydGlvbiA9IGFzc3J0ICsgJ19QUkVEJworCisgICAgaWYgdXNlX2Zvcm1hdDoK
KyAgICAgIHByZWRfZm9ybWF0ID0gJ1ByZWRGb3JtYXQnCisgICAgICBhc3NlcnRpb24gKz0gJ19G
T1JNQVQnCisgICAgZWxzZToKKyAgICAgIHByZWRfZm9ybWF0ID0gJ1ByZWQnCisKKyAgICBhc3Nl
cnRpb24gKz0gJyUobilzJyAlIERFRlMKKworICAgIGlmIHVzZV9mdW5jdG9yOgorICAgICAgcHJl
ZF9mb3JtYXRfdHlwZSA9ICdmdW5jdG9yJworICAgICAgcHJlZF9mb3JtYXQgKz0gJ0Z1bmN0b3Il
KG4pcygpJworICAgIGVsc2U6CisgICAgICBwcmVkX2Zvcm1hdF90eXBlID0gJ2Z1bmN0aW9uJwor
ICAgICAgcHJlZF9mb3JtYXQgKz0gJ0Z1bmN0aW9uJShuKXMnCisgICAgICBpZiBub3QgdXNlX2Zv
cm1hdDoKKyAgICAgICAgaWYgdXNlX3VzZXJfdHlwZToKKyAgICAgICAgICBwcmVkX2Zvcm1hdCAr
PSAnQm9vbCcKKyAgICAgICAgZWxzZToKKyAgICAgICAgICBwcmVkX2Zvcm1hdCArPSAnSW50Jwor
CisgICAgdGVzdF9uYW1lID0gcHJlZF9mb3JtYXRfdHlwZS50aXRsZSgpCisKKyAgICBpZiB1c2Vf
dXNlcl90eXBlOgorICAgICAgYXJnX3R5cGUgPSAndXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpJwor
ICAgICAgdGVzdF9uYW1lICs9ICdPblVzZXJUeXBlJworICAgICAgaWYgZXhwZWN0X2ZhaWx1cmU6
CisgICAgICAgIGFyZyA9ICdCb29sKG4lc18rKyknCisgICAgICBlbHNlOgorICAgICAgICBhcmcg
PSAnQm9vbCgrK24lc18pJworICAgIGVsc2U6CisgICAgICBhcmdfdHlwZSA9ICdidWlsdC1pbiB0
eXBlIChpbnQpJworICAgICAgdGVzdF9uYW1lICs9ICdPbkJ1aWx0SW5UeXBlJworICAgICAgaWYg
ZXhwZWN0X2ZhaWx1cmU6CisgICAgICAgIGFyZyA9ICduJXNfKysnCisgICAgICBlbHNlOgorICAg
ICAgICBhcmcgPSAnKytuJXNfJworCisgICAgaWYgZXhwZWN0X2ZhaWx1cmU6CisgICAgICBzdWNj
ZXNzZnVsX29yX2ZhaWxlZCA9ICdmYWlsZWQnCisgICAgICBleHBlY3RlZF9vcl9ub3QgPSAnZXhw
ZWN0ZWQuJworICAgICAgdGVzdF9uYW1lICs9ICAnRmFpbHVyZScKKyAgICBlbHNlOgorICAgICAg
c3VjY2Vzc2Z1bF9vcl9mYWlsZWQgPSAnc3VjY2Vzc2Z1bCcKKyAgICAgIGV4cGVjdGVkX29yX25v
dCA9ICdVTkVYUEVDVEVEIScKKyAgICAgIHRlc3RfbmFtZSArPSAgJ1N1Y2Nlc3MnCisKKyAgICAj
IEEgbWFwIHRoYXQgZGVmaW5lcyB0aGUgdmFsdWVzIHVzZWQgaW4gdGhlIHRlc3QgdGVtcGxhdGUu
CisgICAgZGVmcyA9IERFRlMuY29weSgpCisgICAgZGVmcy51cGRhdGUoeworICAgICAgJ2Fzc2Vy
dCcgOiBhc3NydCwKKyAgICAgICdhc3NlcnRpb24nIDogYXNzZXJ0aW9uLAorICAgICAgJ3Rlc3Rf
bmFtZScgOiB0ZXN0X25hbWUsCisgICAgICAncGZfdHlwZScgOiBwcmVkX2Zvcm1hdF90eXBlLAor
ICAgICAgJ3BmJyA6IHByZWRfZm9ybWF0LAorICAgICAgJ2FyZ190eXBlJyA6IGFyZ190eXBlLAor
ICAgICAgJ2FyZycgOiBhcmcsCisgICAgICAnc3VjY2Vzc2Z1bCcgOiBzdWNjZXNzZnVsX29yX2Zh
aWxlZCwKKyAgICAgICdleHBlY3RlZCcgOiBleHBlY3RlZF9vcl9ub3QsCisgICAgICB9KQorCisg
ICAgdGVzdCA9ICIiIgorLy8gVGVzdHMgYSAlKHN1Y2Nlc3NmdWwpcyAlKGFzc2VydGlvbilzIHdo
ZXJlIHRoZQorLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhICUocGZfdHlwZSlzIG9uIGEgJShh
cmdfdHlwZSlzLgorVEVTVF9GKCUoYXNzZXJ0aW9uKXNUZXN0LCAlKHRlc3RfbmFtZSlzKSB7IiIi
ICUgZGVmcworCisgICAgaW5kZW50ID0gKGxlbihhc3NlcnRpb24pICsgMykqJyAnCisgICAgZXh0
cmFfaW5kZW50ID0gJycKKworICAgIGlmIGV4cGVjdF9mYWlsdXJlOgorICAgICAgZXh0cmFfaW5k
ZW50ID0gJyAgJworICAgICAgaWYgdXNlX2Fzc2VydDoKKyAgICAgICAgdGVzdCArPSAiIiIKKyAg
ZXhwZWN0ZWRfdG9fZmluaXNoXyA9IGZhbHNlOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAv
LyBOT0xJTlQiIiIKKyAgICAgIGVsc2U6CisgICAgICAgIHRlc3QgKz0gIiIiCisgIEVYUEVDVF9O
T05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVCIiIgorCisgICAgdGVzdCArPSAnXG4nICsgZXh0
cmFfaW5kZW50ICsgIiIiICAlKGFzc2VydGlvbilzKCUocGYpcyIiIiAlIGRlZnMKKworICAgIHRl
c3QgPSB0ZXN0ICUgZGVmcworICAgIHRlc3QgKz0gSXRlcihuLCAnLFxuJyArIGluZGVudCArIGV4
dHJhX2luZGVudCArICclKGFyZylzJyAlIGRlZnMpCisgICAgdGVzdCArPSAnKTtcbicgKyBleHRy
YV9pbmRlbnQgKyAnICBmaW5pc2hlZF8gPSB0cnVlO1xuJworCisgICAgaWYgZXhwZWN0X2ZhaWx1
cmU6CisgICAgICB0ZXN0ICs9ICcgIH0sICIiKTtcbicKKworICAgIHRlc3QgKz0gJ31cbicKKyAg
ICByZXR1cm4gdGVzdAorCisgICMgR2VuZXJhdGVzIHRlc3RzIGZvciBhbGwgMioqNiA9IDY0IGNv
bWJpbmF0aW9ucy4KKyAgdGVzdHMgKz0gJycuam9pbihbR2VuVGVzdCh1c2VfZm9ybWF0LCB1c2Vf
YXNzZXJ0LCBleHBlY3RfZmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vf
ZnVuY3RvciwgdXNlX3VzZXJfdHlwZSkKKyAgICAgICAgICAgICAgICAgICAgZm9yIHVzZV9mb3Jt
YXQgaW4gWzAsIDFdCisgICAgICAgICAgICAgICAgICAgIGZvciB1c2VfYXNzZXJ0IGluIFswLCAx
XQorICAgICAgICAgICAgICAgICAgICBmb3IgZXhwZWN0X2ZhaWx1cmUgaW4gWzAsIDFdCisgICAg
ICAgICAgICAgICAgICAgIGZvciB1c2VfZnVuY3RvciBpbiBbMCwgMV0KKyAgICAgICAgICAgICAg
ICAgICAgZm9yIHVzZV91c2VyX3R5cGUgaW4gWzAsIDFdCisgICAgICAgICAgICAgICAgICAgIF0p
CisKKyAgcmV0dXJuIHRlc3RzCisKKworZGVmIFVuaXRUZXN0UG9zdGFtYmxlKCk6CisgICIiIlJl
dHVybnMgdGhlIHBvc3RhbWJsZSBmb3IgdGhlIHRlc3RzLiIiIgorCisgIHJldHVybiAnJworCisK
K2RlZiBHZW5lcmF0ZVVuaXRUZXN0KG4pOgorICAiIiJSZXR1cm5zIHRoZSB0ZXN0cyBmb3IgdXAt
dG8gbi1hcnkgcHJlZGljYXRlIGFzc2VydGlvbnMuIiIiCisKKyAgR2VuZXJhdGVGaWxlKFVOSVRf
VEVTVCwKKyAgICAgICAgICAgICAgIFVuaXRUZXN0UHJlYW1ibGUoKQorICAgICAgICAgICAgICAg
KyAnJy5qb2luKFtUZXN0c0ZvckFyaXR5KGkpIGZvciBpIGluIE9uZVRvKG4pXSkKKyAgICAgICAg
ICAgICAgICsgVW5pdFRlc3RQb3N0YW1ibGUoKSkKKworCitkZWYgX01haW4oKToKKyAgIiIiVGhl
IGVudHJ5IHBvaW50IG9mIHRoZSBzY3JpcHQuICBHZW5lcmF0ZXMgdGhlIGhlYWRlciBmaWxlIGFu
ZCBpdHMKKyAgdW5pdCB0ZXN0LiIiIgorCisgIGlmIGxlbihzeXMuYXJndikgIT0gMjoKKyAgICBw
cmludCBfX2RvY19fCisgICAgcHJpbnQgJ0F1dGhvcjogJyArIF9fYXV0aG9yX18KKyAgICBzeXMu
ZXhpdCgxKQorCisgIG4gPSBpbnQoc3lzLmFyZ3ZbMV0pCisgIEdlbmVyYXRlSGVhZGVyKG4pCisg
IEdlbmVyYXRlVW5pdFRlc3QobikKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICBf
TWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zY3JpcHRzL2d0ZXN0LWNvbmZpZy5pbiBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L3NjcmlwdHMvZ3Rlc3QtY29uZmlnLmluCm5ldyBmaWxlIG1vZGUgMTAwNzU1
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4MGY4NDMy
ZWZjYzFhZWVhYWFkMDcwNjA4NmQzZmY2NDEyODViNjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xldGVzdC9zY3JpcHRzL2d0ZXN0LWNvbmZpZy5pbgpAQCAtMCwwICsxLDI3NCBAQAorIyEvYmlu
L3NoCisKKyMgVGhlc2UgdmFyaWFibGVzIGFyZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCBpbiBieSB0
aGUgY29uZmlndXJlIHNjcmlwdC4KK25hbWU9IkBQQUNLQUdFX1RBUk5BTUVAIgordmVyc2lvbj0i
QFBBQ0tBR0VfVkVSU0lPTkAiCisKK3Nob3dfdXNhZ2UoKQoreworICBlY2hvICJVc2FnZTogZ3Rl
c3QtY29uZmlnIFtPUFRJT05TLi4uXSIKK30KKworc2hvd19oZWxwKCkKK3sKKyAgc2hvd191c2Fn
ZQorICBjYXQgPDxcRU9GCisKK1RoZSBgZ3Rlc3QtY29uZmlnJyBzY3JpcHQgcHJvdmlkZXMgYWNj
ZXNzIHRvIHRoZSBuZWNlc3NhcnkgY29tcGlsZSBhbmQgbGlua2luZworZmxhZ3MgdG8gY29ubmVj
dCB3aXRoIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmssIGJvdGggaW4gYSBidWlsZCBwcmlv
ciB0bworaW5zdGFsbGF0aW9uLCBhbmQgb24gdGhlIHN5c3RlbSBwcm9wZXIgYWZ0ZXIgaW5zdGFs
bGF0aW9uLiBUaGUgaW5zdGFsbGF0aW9uCitvdmVycmlkZXMgbWF5IGJlIGlzc3VlZCBpbiBjb21i
aW5hdGlvbiB3aXRoIGFueSBvdGhlciBxdWVyaWVzLCBidXQgd2lsbCBvbmx5CithZmZlY3QgaW5z
dGFsbGF0aW9uIHF1ZXJpZXMgaWYgY2FsbGVkIG9uIGEgYnVpbHQgYnV0IG5vdCBpbnN0YWxsZWQg
Z3Rlc3QuIFRoZQoraW5zdGFsbGF0aW9uIHF1ZXJpZXMgbWF5IG5vdCBiZSBpc3N1ZWQgd2l0aCBh
bnkgb3RoZXIgdHlwZXMgb2YgcXVlcmllcywgYW5kCitvbmx5IG9uZSBpbnN0YWxsYXRpb24gcXVl
cnkgbWF5IGJlIG1hZGUgYXQgYSB0aW1lLiBUaGUgdmVyc2lvbiBxdWVyaWVzIGFuZAorY29tcGls
ZXIgZmxhZyBxdWVyaWVzIG1heSBiZSBjb21iaW5lZCBhcyBkZXNpcmVkIGJ1dCBub3QgbWl4ZWQu
IERpZmZlcmVudAordmVyc2lvbiBxdWVyaWVzIGFyZSBhbHdheXMgY29tYmluZWQgd2l0aCBsb2dp
Y2FsICJhbmQiIHNlbWFudGljcywgYW5kIG9ubHkgdGhlCitsYXN0IG9mIGFueSBwYXJ0aWN1bGFy
IHF1ZXJ5IGlzIHVzZWQgd2hpbGUgYWxsIHByZXZpb3VzIG9uZXMgaWdub3JlZC4gQWxsCit2ZXJz
aW9ucyBtdXN0IGJlIHNwZWNpZmllZCBhcyBhIHNlcXVlbmNlIG9mIG51bWJlcnMgc2VwYXJhdGVk
IGJ5IHBlcmlvZHMuCitDb21waWxlciBmbGFnIHF1ZXJpZXMgb3V0cHV0IHRoZSB1bmlvbiBvZiB0
aGUgc2V0cyBvZiBmbGFncyB3aGVuIGNvbWJpbmVkLgorCisgRXhhbXBsZXM6CisgIGd0ZXN0LWNv
bmZpZyAtLW1pbi12ZXJzaW9uPTEuMCB8fCBlY2hvICJJbnN1ZmZpY2llbnQgR29vZ2xlIFRlc3Qg
dmVyc2lvbi4iCisKKyAgZysrICQoZ3Rlc3QtY29uZmlnIC0tY3BwZmxhZ3MgLS1jeHhmbGFncykg
LW8gZm9vLm8gLWMgZm9vLmNwcAorICBnKysgJChndGVzdC1jb25maWcgLS1sZGZsYWdzIC0tbGli
cykgLW8gZm9vIGZvby5vCisKKyAgIyBXaGVuIHVzaW5nIGEgYnVpbHQgYnV0IG5vdCBpbnN0YWxs
ZWQgR29vZ2xlIFRlc3Q6CisgIGcrKyAkKC4uLy4uL215X2d0ZXN0X2J1aWxkL3NjcmlwdHMvZ3Rl
c3QtY29uZmlnIC4uLikgLi4uCisKKyAgIyBXaGVuIHVzaW5nIGFuIGluc3RhbGxlZCBHb29nbGUg
VGVzdCwgYnV0IHdpdGggaW5zdGFsbGF0aW9uIG92ZXJyaWRlczoKKyAgZXhwb3J0IEdURVNUX1BS
RUZJWD0iL29wdCIKKyAgZysrICQoZ3Rlc3QtY29uZmlnIC0tbGliZGlyPSIvb3B0L2xpYjY0IiAu
Li4pIC4uLgorCisgSGVscDoKKyAgLS11c2FnZSAgICAgICAgICAgICAgICAgICAgYnJpZWYgdXNh
Z2UgaW5mb3JtYXRpb24KKyAgLS1oZWxwICAgICAgICAgICAgICAgICAgICAgZGlzcGxheSB0aGlz
IGhlbHAgbWVzc2FnZQorCisgSW5zdGFsbGF0aW9uIE92ZXJyaWRlczoKKyAgLS1wcmVmaXg9PGRp
cj4gICAgICAgICAgICAgb3ZlcnJpZGVzIHRoZSBpbnN0YWxsYXRpb24gcHJlZml4CisgIC0tZXhl
Yy1wcmVmaXg9PGRpcj4gICAgICAgIG92ZXJyaWRlcyB0aGUgZXhlY3V0YWJsZSBpbnN0YWxsYXRp
b24gcHJlZml4CisgIC0tbGliZGlyPTxkaXI+ICAgICAgICAgICAgIG92ZXJyaWRlcyB0aGUgbGli
cmFyeSBpbnN0YWxsYXRpb24gcHJlZml4CisgIC0taW5jbHVkZWRpcj08ZGlyPiAgICAgICAgIG92
ZXJyaWRlcyB0aGUgaGVhZGVyIGZpbGUgaW5zdGFsbGF0aW9uIHByZWZpeAorCisgSW5zdGFsbGF0
aW9uIFF1ZXJpZXM6CisgIC0tcHJlZml4ICAgICAgICAgICAgICAgICAgIGluc3RhbGxhdGlvbiBw
cmVmaXgKKyAgLS1leGVjLXByZWZpeCAgICAgICAgICAgICAgZXhlY3V0YWJsZSBpbnN0YWxsYXRp
b24gcHJlZml4CisgIC0tbGliZGlyICAgICAgICAgICAgICAgICAgIGxpYnJhcnkgaW5zdGFsbGF0
aW9uIGRpcmVjdG9yeQorICAtLWluY2x1ZGVkaXIgICAgICAgICAgICAgICBoZWFkZXIgZmlsZSBp
bnN0YWxsYXRpb24gZGlyZWN0b3J5CisgIC0tdmVyc2lvbiAgICAgICAgICAgICAgICAgIHRoZSB2
ZXJzaW9uIG9mIHRoZSBHb29nbGUgVGVzdCBpbnN0YWxsYXRpb24KKworIFZlcnNpb24gUXVlcmll
czoKKyAgLS1taW4tdmVyc2lvbj1WRVJTSU9OICAgICAgcmV0dXJuIDAgaWYgdGhlIHZlcnNpb24g
aXMgYXQgbGVhc3QgVkVSU0lPTgorICAtLWV4YWN0LXZlcnNpb249VkVSU0lPTiAgICByZXR1cm4g
MCBpZiB0aGUgdmVyc2lvbiBpcyBleGFjdGx5IFZFUlNJT04KKyAgLS1tYXgtdmVyc2lvbj1WRVJT
SU9OICAgICAgcmV0dXJuIDAgaWYgdGhlIHZlcnNpb24gaXMgYXQgbW9zdCBWRVJTSU9OCisKKyBD
b21waWxhdGlvbiBGbGFnIFF1ZXJpZXM6CisgIC0tY3BwZmxhZ3MgICAgICAgICAgICAgICAgIGNv
bXBpbGUgZmxhZ3Mgc3BlY2lmaWMgdG8gdGhlIEMtbGlrZSBwcmVwcm9jZXNzb3JzCisgIC0tY3h4
ZmxhZ3MgICAgICAgICAgICAgICAgIGNvbXBpbGUgZmxhZ3MgYXBwcm9wcmlhdGUgZm9yIEMrKyBw
cm9ncmFtcworICAtLWxkZmxhZ3MgICAgICAgICAgICAgICAgICBsaW5rZXIgZmxhZ3MKKyAgLS1s
aWJzICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzIGZvciBsaW5raW5nCisKK0VPRgorfQor
CisjIFRoaXMgZnVuY3Rpb24gYm91bmRzIG91ciB2ZXJzaW9uIHdpdGggYSBtaW4gYW5kIGEgbWF4
LiBJdCB1c2VzIHNvbWUgY2xldmVyCisjIFBPU0lYLWNvbXBsaWFudCB2YXJpYWJsZSBleHBhbnNp
b24gdG8gcG9ydGFibHkgZG8gYWxsIHRoZSB3b3JrIGluIHRoZSBzaGVsbAorIyBhbmQgYXZvaWQg
YW55IGRlcGVuZGVuY3kgb24gYSBwYXJ0aWN1bGFyICJzZWQiIG9yICJhd2siIGltcGxlbWVudGF0
aW9uLgorIyBOb3RhYmxlIGlzIHRoYXQgaXQgd2lsbCBvbmx5IGV2ZXIgY29tcGFyZSB0aGUgZmly
c3QgMyBjb21wb25lbnRzIG9mIHZlcnNpb25zLgorIyBGdXJ0aGVyIGNvbXBvbmVudHMgd2lsbCBi
ZSBjbGVhbmx5IHN0cmlwcGVkIG9mZi4gQWxsIHZlcnNpb25zIG11c3QgYmUKKyMgdW5hZG9ybmVk
LCBzbyAidjEuMCIgd2lsbCAqbm90KiB3b3JrLiBUaGUgbWluaW11bSB2ZXJzaW9uIG11c3QgYmUg
aW4gJDEsIGFuZAorIyB0aGUgbWF4IGluICQyLiBUT0RPKGNoYW5kbGVyY0Bnb29nbGUuY29tKTog
SWYgdGhpcyBldmVyIGJyZWFrcywgd2Ugc2hvdWxkCisjIGludmVzdGlnYXRlIGV4cGFuZGluZyB0
aGlzIHZpYSBhdXRvbTR0ZSBmcm9tIEFTX1ZFUlNJT05fQ09NUEFSRSByYXRoZXIgdGhhbgorIyBj
b250aW51aW5nIHRvIG1haW50YWluIG91ciBvd24gc2hlbGwgdmVyc2lvbi4KK2NoZWNrX3ZlcnNp
b25zKCkKK3sKKyAgbWFqb3JfdmVyc2lvbj0ke3ZlcnNpb24lJS4qfQorICBtaW5vcl92ZXJzaW9u
PSIwIgorICBwb2ludF92ZXJzaW9uPSIwIgorICBpZiB0ZXN0ICIke3ZlcnNpb24jKi59IiAhPSAi
JHt2ZXJzaW9ufSI7IHRoZW4KKyAgICBtaW5vcl92ZXJzaW9uPSR7dmVyc2lvbiMqLn0KKyAgICBt
aW5vcl92ZXJzaW9uPSR7bWlub3JfdmVyc2lvbiUlLip9CisgIGZpCisgIGlmIHRlc3QgIiR7dmVy
c2lvbiMqLioufSIgIT0gIiR7dmVyc2lvbn0iOyB0aGVuCisgICAgcG9pbnRfdmVyc2lvbj0ke3Zl
cnNpb24jKi4qLn0KKyAgICBwb2ludF92ZXJzaW9uPSR7cG9pbnRfdmVyc2lvbiUlLip9CisgIGZp
CisKKyAgbWluX3ZlcnNpb249IiQxIgorICBtaW5fbWFqb3JfdmVyc2lvbj0ke21pbl92ZXJzaW9u
JSUuKn0KKyAgbWluX21pbm9yX3ZlcnNpb249IjAiCisgIG1pbl9wb2ludF92ZXJzaW9uPSIwIgor
ICBpZiB0ZXN0ICIke21pbl92ZXJzaW9uIyoufSIgIT0gIiR7bWluX3ZlcnNpb259IjsgdGhlbgor
ICAgIG1pbl9taW5vcl92ZXJzaW9uPSR7bWluX3ZlcnNpb24jKi59CisgICAgbWluX21pbm9yX3Zl
cnNpb249JHttaW5fbWlub3JfdmVyc2lvbiUlLip9CisgIGZpCisgIGlmIHRlc3QgIiR7bWluX3Zl
cnNpb24jKi4qLn0iICE9ICIke21pbl92ZXJzaW9ufSI7IHRoZW4KKyAgICBtaW5fcG9pbnRfdmVy
c2lvbj0ke21pbl92ZXJzaW9uIyouKi59CisgICAgbWluX3BvaW50X3ZlcnNpb249JHttaW5fcG9p
bnRfdmVyc2lvbiUlLip9CisgIGZpCisKKyAgbWF4X3ZlcnNpb249IiQyIgorICBtYXhfbWFqb3Jf
dmVyc2lvbj0ke21heF92ZXJzaW9uJSUuKn0KKyAgbWF4X21pbm9yX3ZlcnNpb249IjAiCisgIG1h
eF9wb2ludF92ZXJzaW9uPSIwIgorICBpZiB0ZXN0ICIke21heF92ZXJzaW9uIyoufSIgIT0gIiR7
bWF4X3ZlcnNpb259IjsgdGhlbgorICAgIG1heF9taW5vcl92ZXJzaW9uPSR7bWF4X3ZlcnNpb24j
Ki59CisgICAgbWF4X21pbm9yX3ZlcnNpb249JHttYXhfbWlub3JfdmVyc2lvbiUlLip9CisgIGZp
CisgIGlmIHRlc3QgIiR7bWF4X3ZlcnNpb24jKi4qLn0iICE9ICIke21heF92ZXJzaW9ufSI7IHRo
ZW4KKyAgICBtYXhfcG9pbnRfdmVyc2lvbj0ke21heF92ZXJzaW9uIyouKi59CisgICAgbWF4X3Bv
aW50X3ZlcnNpb249JHttYXhfcG9pbnRfdmVyc2lvbiUlLip9CisgIGZpCisKKyAgdGVzdCAkKCgk
bWFqb3JfdmVyc2lvbikpIC1sdCAkKCgkbWluX21ham9yX3ZlcnNpb24pKSAmJiBleGl0IDEKKyAg
aWYgdGVzdCAkKCgkbWFqb3JfdmVyc2lvbikpIC1lcSAkKCgkbWluX21ham9yX3ZlcnNpb24pKTsg
dGhlbgorICAgIHRlc3QgJCgoJG1pbm9yX3ZlcnNpb24pKSAtbHQgJCgoJG1pbl9taW5vcl92ZXJz
aW9uKSkgJiYgZXhpdCAxCisgICAgaWYgdGVzdCAkKCgkbWlub3JfdmVyc2lvbikpIC1lcSAkKCgk
bWluX21pbm9yX3ZlcnNpb24pKTsgdGhlbgorICAgICAgdGVzdCAkKCgkcG9pbnRfdmVyc2lvbikp
IC1sdCAkKCgkbWluX3BvaW50X3ZlcnNpb24pKSAmJiBleGl0IDEKKyAgICBmaQorICBmaQorCisg
IHRlc3QgJCgoJG1ham9yX3ZlcnNpb24pKSAtZ3QgJCgoJG1heF9tYWpvcl92ZXJzaW9uKSkgJiYg
ZXhpdCAxCisgIGlmIHRlc3QgJCgoJG1ham9yX3ZlcnNpb24pKSAtZXEgJCgoJG1heF9tYWpvcl92
ZXJzaW9uKSk7IHRoZW4KKyAgICB0ZXN0ICQoKCRtaW5vcl92ZXJzaW9uKSkgLWd0ICQoKCRtYXhf
bWlub3JfdmVyc2lvbikpICYmIGV4aXQgMQorICAgIGlmIHRlc3QgJCgoJG1pbm9yX3ZlcnNpb24p
KSAtZXEgJCgoJG1heF9taW5vcl92ZXJzaW9uKSk7IHRoZW4KKyAgICAgIHRlc3QgJCgoJHBvaW50
X3ZlcnNpb24pKSAtZ3QgJCgoJG1heF9wb2ludF92ZXJzaW9uKSkgJiYgZXhpdCAxCisgICAgZmkK
KyAgZmkKKworICBleGl0IDAKK30KKworIyBTaG93IHRoZSB1c2FnZSBsaW5lIHdoZW4gbm8gYXJn
dW1lbnRzIGFyZSBzcGVjaWZpZWQuCitpZiB0ZXN0ICQjIC1lcSAwOyB0aGVuCisgIHNob3dfdXNh
Z2UKKyAgZXhpdCAxCitmaQorCit3aGlsZSB0ZXN0ICQjIC1ndCAwOyBkbworICBjYXNlICQxIGlu
CisgICAgLS11c2FnZSkgICAgICAgICAgc2hvd191c2FnZTsgICAgICAgICBleGl0IDA7OworICAg
IC0taGVscCkgICAgICAgICAgIHNob3dfaGVscDsgICAgICAgICAgZXhpdCAwOzsKKworICAgICMg
SW5zdGFsbGF0aW9uIG92ZXJyaWRlcworICAgIC0tcHJlZml4PSopICAgICAgIEdURVNUX1BSRUZJ
WD0kezEjLS1wcmVmaXg9fTs7CisgICAgLS1leGVjLXByZWZpeD0qKSAgR1RFU1RfRVhFQ19QUkVG
SVg9JHsxIy0tZXhlYy1wcmVmaXg9fTs7CisgICAgLS1saWJkaXI9KikgICAgICAgR1RFU1RfTElC
RElSPSR7MSMtLWxpYmRpcj19OzsKKyAgICAtLWluY2x1ZGVkaXI9KikgICBHVEVTVF9JTkNMVURF
RElSPSR7MSMtLWluY2x1ZGVkaXI9fTs7CisKKyAgICAjIEluc3RhbGxhdGlvbiBxdWVyaWVzCisg
ICAgLS1wcmVmaXh8LS1leGVjLXByZWZpeHwtLWxpYmRpcnwtLWluY2x1ZGVkaXJ8LS12ZXJzaW9u
KQorICAgICAgaWYgdGVzdCAtbiAiJHtkb19xdWVyeX0iOyB0aGVuCisgICAgICAgIHNob3dfdXNh
Z2UKKyAgICAgICAgZXhpdCAxCisgICAgICBmaQorICAgICAgZG9fcXVlcnk9JHsxIy0tfQorICAg
ICAgOzsKKworICAgICMgVmVyc2lvbiBjaGVja2luZworICAgIC0tbWluLXZlcnNpb249KikKKyAg
ICAgIGRvX2NoZWNrX3ZlcnNpb25zPXllcworICAgICAgbWluX3ZlcnNpb249JHsxIy0tbWluLXZl
cnNpb249fQorICAgICAgOzsKKyAgICAtLW1heC12ZXJzaW9uPSopCisgICAgICBkb19jaGVja192
ZXJzaW9ucz15ZXMKKyAgICAgIG1heF92ZXJzaW9uPSR7MSMtLW1heC12ZXJzaW9uPX0KKyAgICAg
IDs7CisgICAgLS1leGFjdC12ZXJzaW9uPSopCisgICAgICBkb19jaGVja192ZXJzaW9ucz15ZXMK
KyAgICAgIGV4YWN0X3ZlcnNpb249JHsxIy0tZXhhY3QtdmVyc2lvbj19CisgICAgICA7OworCisg
ICAgIyBDb21waWxlciBmbGFnIG91dHB1dAorICAgIC0tY3BwZmxhZ3MpICAgICAgIGVjaG9fY3Bw
ZmxhZ3M9eWVzOzsKKyAgICAtLWN4eGZsYWdzKSAgICAgICBlY2hvX2N4eGZsYWdzPXllczs7Cisg
ICAgLS1sZGZsYWdzKSAgICAgICAgZWNob19sZGZsYWdzPXllczs7CisgICAgLS1saWJzKSAgICAg
ICAgICAgZWNob19saWJzPXllczs7CisKKyAgICAjIEV2ZXJ5dGhpbmcgZWxzZSBpcyBhbiBlcnJv
cgorICAgICopICAgICAgICAgICAgICAgIHNob3dfdXNhZ2U7ICAgICAgICAgZXhpdCAxOzsKKyAg
ZXNhYworICBzaGlmdAorZG9uZQorCisjIFRoZXNlIGhhdmUgZGVmYXVsdHMgZmlsbGVkIGluIGJ5
IHRoZSBjb25maWd1cmUgc2NyaXB0IGJ1dCBjYW4gYWxzbyBiZQorIyBvdmVycmlkZGVuIGJ5IGVu
dmlyb25tZW50IHZhcmlhYmxlcyBvciBjb21tYW5kIGxpbmUgcGFyYW1ldGVycy4KK3ByZWZpeD0i
JHtHVEVTVF9QUkVGSVg6LUBwcmVmaXhAfSIKK2V4ZWNfcHJlZml4PSIke0dURVNUX0VYRUNfUFJF
RklYOi1AZXhlY19wcmVmaXhAfSIKK2xpYmRpcj0iJHtHVEVTVF9MSUJESVI6LUBsaWJkaXJAfSIK
K2luY2x1ZGVkaXI9IiR7R1RFU1RfSU5DTFVERURJUjotQGluY2x1ZGVkaXJAfSIKKworIyBXZSB0
cnkgYW5kIGRldGVjdCBpZiBvdXIgYmluYXJ5IGlzIG5vdCBsb2NhdGVkIGF0IGl0cyBpbnN0YWxs
ZWQgbG9jYXRpb24uIElmCisjIGl0J3Mgbm90LCB3ZSBwcm92aWRlIHZhcmlhYmxlcyBwb2ludGlu
ZyB0byB0aGUgc291cmNlIGFuZCBidWlsZCB0cmVlIHJhdGhlcgorIyB0aGFuIHRvIHRoZSBpbnN0
YWxsIHRyZWUuIFRoaXMgYWxsb3dzIGJ1aWxkaW5nIGFnYWluc3QgYSBqdXN0LWJ1aWx0IGd0ZXN0
CisjIHJhdGhlciB0aGFuIGFuIGluc3RhbGxlZCBndGVzdC4KK2JpbmRpcj0iQGJpbmRpckAiCit0
aGlzX3JlbGF0aXZlX2JpbmRpcj1gZGlybmFtZSAkMGAKK3RoaXNfYmluZGlyPWBjZCAke3RoaXNf
cmVsYXRpdmVfYmluZGlyfTsgcHdkIC1QYAoraWYgdGVzdCAiJHt0aGlzX2JpbmRpcn0iID0gIiR7
dGhpc19iaW5kaXIlJHtiaW5kaXJ9fSI7IHRoZW4KKyAgIyBUaGUgcGF0aCB0byB0aGUgc2NyaXB0
IGRvZXNuJ3QgZW5kIGluIHRoZSBiaW5kaXIgc2VxdWVuY2UgZnJvbSBBdXRvY29uZiwKKyAgIyBh
c3N1bWUgdGhhdCB3ZSBhcmUgaW4gYSBidWlsZCB0cmVlLgorICBidWlsZF9kaXI9YGRpcm5hbWUg
JHt0aGlzX2JpbmRpcn1gCisgIHNyY19kaXI9YGNkICR7dGhpc19iaW5kaXJ9OyBjZCBAdG9wX3Ny
Y2RpckA7IHB3ZCAtUGAKKworICAjIFRPRE8oY2hhbmRsZXJjQGdvb2dsZS5jb20pOiBUaGlzIGlz
IGEgZGFuZ2Vyb3VzIGRlcGVuZGVuY3kgb24gbGlidG9vbCwgd2UKKyAgIyBzaG91bGQgd29yayB0
byByZW1vdmUgaXQsIGFuZC9vciByZW1vdmUgbGlidG9vbCBhbHRvZ2V0aGVyLCByZXBsYWNpbmcg
aXQKKyAgIyB3aXRoIGRpcmVjdCByZWZlcmVuY2VzIHRvIHRoZSBsaWJyYXJ5IGFuZCBhIGxpbmsg
cGF0aC4KKyAgZ3Rlc3RfbGlicz0iJHtidWlsZF9kaXJ9L2xpYi9saWJndGVzdC5sYSBAUFRIUkVB
RF9DRkxBR1NAIEBQVEhSRUFEX0xJQlNAIgorICBndGVzdF9sZGZsYWdzPSIiCisKKyAgIyBXZSBw
cm92aWRlIGhvb2tzIHRvIGluY2x1ZGUgZnJvbSBlaXRoZXIgdGhlIHNvdXJjZSBvciBidWlsZCBk
aXIsIHdoZXJlIHRoZQorICAjIGJ1aWxkIGRpciBpcyBhbHdheXMgcHJlZmVycmVkLiBUaGlzIHdp
bGwgcG90ZW50aWFsbHkgYWxsb3cgdXMgdG8gd3JpdGUKKyAgIyBidWlsZCBydWxlcyBmb3IgZ2Vu
ZXJhdGVkIGhlYWRlcnMgYW5kIGhhdmUgdGhlbSBhdXRvbWF0aWNhbGx5IGJlIHByZWZlcnJlZAor
ICAjIG92ZXIgcHJvdmlkZWQgdmVyc2lvbnMuCisgIGd0ZXN0X2NwcGZsYWdzPSItSSR7YnVpbGRf
ZGlyfS9pbmNsdWRlIC1JJHtzcmNfZGlyfS9pbmNsdWRlIgorICBndGVzdF9jeHhmbGFncz0iQFBU
SFJFQURfQ0ZMQUdTQCIKK2Vsc2UKKyAgIyBXZSdyZSB1c2luZyBhbiBpbnN0YWxsZWQgZ3Rlc3Qs
IGFsdGhvdWdoIGl0IG1heSBiZSBzdGFnZWQgdW5kZXIgc29tZQorICAjIHByZWZpeC4gQXNzdW1l
IChhcyBvdXIgb3duIGxpYnJhcmllcyBkbykgdGhhdCB3ZSBjYW4gcmVzb2x2ZSB0aGUgcHJlZml4
LAorICAjIGFuZCBhcmUgcHJlc2VudCBpbiB0aGUgZHluYW1pYyBsaW5rIHBhdGhzLgorICBndGVz
dF9sZGZsYWdzPSItTCR7bGliZGlyfSIKKyAgZ3Rlc3RfbGlicz0iLWwke25hbWV9IEBQVEhSRUFE
X0NGTEFHU0AgQFBUSFJFQURfTElCU0AiCisgIGd0ZXN0X2NwcGZsYWdzPSItSSR7aW5jbHVkZWRp
cn0iCisgIGd0ZXN0X2N4eGZsYWdzPSJAUFRIUkVBRF9DRkxBR1NAIgorZmkKKworIyBEbyBhbiBp
bnN0YWxsYXRpb24gcXVlcnkgaWYgcmVxdWVzdGVkLgoraWYgdGVzdCAtbiAiJGRvX3F1ZXJ5Ijsg
dGhlbgorICBjYXNlICRkb19xdWVyeSBpbgorICAgIHByZWZpeCkgICAgICAgICAgIGVjaG8gJHBy
ZWZpeDsgICAgICAgZXhpdCAwOzsKKyAgICBleGVjLXByZWZpeCkgICAgICBlY2hvICRleGVjX3By
ZWZpeDsgIGV4aXQgMDs7CisgICAgbGliZGlyKSAgICAgICAgICAgZWNobyAkbGliZGlyOyAgICAg
ICBleGl0IDA7OworICAgIGluY2x1ZGVkaXIpICAgICAgIGVjaG8gJGluY2x1ZGVkaXI7ICAgZXhp
dCAwOzsKKyAgICB2ZXJzaW9uKSAgICAgICAgICBlY2hvICR2ZXJzaW9uOyAgICAgIGV4aXQgMDs7
CisgICAgKikgICAgICAgICAgICAgICAgc2hvd191c2FnZTsgICAgICAgICBleGl0IDE7OworICBl
c2FjCitmaQorCisjIERvIGEgdmVyc2lvbiBjaGVjayBpZiByZXF1ZXN0ZWQuCitpZiB0ZXN0ICIk
ZG9fY2hlY2tfdmVyc2lvbnMiID0gInllcyI7IHRoZW4KKyAgIyBNYWtlIHN1cmUgd2UgZGlkbid0
IHJlY2VpdmUgYSBiYWQgY29tYmluYXRpb24gb2YgcGFyYW1ldGVycy4KKyAgdGVzdCAiJGVjaG9f
Y3BwZmxhZ3MiID0gInllcyIgJiYgc2hvd191c2FnZSAmJiBleGl0IDEKKyAgdGVzdCAiJGVjaG9f
Y3h4ZmxhZ3MiID0gInllcyIgJiYgc2hvd191c2FnZSAmJiBleGl0IDEKKyAgdGVzdCAiJGVjaG9f
bGRmbGFncyIgPSAieWVzIiAgJiYgc2hvd191c2FnZSAmJiBleGl0IDEKKyAgdGVzdCAiJGVjaG9f
bGlicyIgPSAieWVzIiAgICAgJiYgc2hvd191c2FnZSAmJiBleGl0IDEKKworICBpZiB0ZXN0ICIk
ZXhhY3RfdmVyc2lvbiIgIT0gIiI7IHRoZW4KKyAgICBjaGVja192ZXJzaW9ucyAkZXhhY3RfdmVy
c2lvbiAkZXhhY3RfdmVyc2lvbgorICAgICMgdW5yZWFjaGFibGUKKyAgZWxzZQorICAgIGNoZWNr
X3ZlcnNpb25zICR7bWluX3ZlcnNpb246LTAuMC4wfSAke21heF92ZXJzaW9uOi05OTk5Ljk5OTku
OTk5OX0KKyAgICAjIHVucmVhY2hhYmxlCisgIGZpCitmaQorCisjIERvIHRoZSBvdXRwdXQgaW4g
dGhlIGNvcnJlY3Qgb3JkZXIgc28gdGhhdCB0aGVzZSBjYW4gYmUgdXNlZCBpbi1saW5lIG9mCisj
IGEgY29tcGlsZXIgaW52b2NhdGlvbi4KK291dHB1dD0iIgordGVzdCAiJGVjaG9fY3BwZmxhZ3Mi
ID0gInllcyIgJiYgb3V0cHV0PSIkb3V0cHV0ICRndGVzdF9jcHBmbGFncyIKK3Rlc3QgIiRlY2hv
X2N4eGZsYWdzIiA9ICJ5ZXMiICYmIG91dHB1dD0iJG91dHB1dCAkZ3Rlc3RfY3h4ZmxhZ3MiCit0
ZXN0ICIkZWNob19sZGZsYWdzIiA9ICJ5ZXMiICAmJiBvdXRwdXQ9IiRvdXRwdXQgJGd0ZXN0X2xk
ZmxhZ3MiCit0ZXN0ICIkZWNob19saWJzIiA9ICJ5ZXMiICAgICAmJiBvdXRwdXQ9IiRvdXRwdXQg
JGd0ZXN0X2xpYnMiCitlY2hvICRvdXRwdXQKKworZXhpdCAwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC9zY3JpcHRzL3B1bXAucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zY3JpcHRzL3B1bXAucHkKbmV3IGZp
bGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNWVmYjY1M2MyMDdkMWYxYzJhZWNjNGQ2OTBiZjczMmUzYzFkNzFhYgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGV0ZXN0L3NjcmlwdHMvcHVtcC5weQpAQCAtMCwwICsxLDg1NSBAQAor
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgor
IyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
IyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIicHVtcCB2MC4y
LjAgLSBQcmV0dHkgVXNlZnVsIGZvciBNZXRhIFByb2dyYW1taW5nLgorCitBIHRvb2wgZm9yIHBy
ZXByb2Nlc3NvciBtZXRhIHByb2dyYW1taW5nLiAgVXNlZnVsIGZvciBnZW5lcmF0aW5nCityZXBl
dGl0aXZlIGJvaWxlcnBsYXRlIGNvZGUuICBFc3BlY2lhbGx5IHVzZWZ1bCBmb3Igd3JpdGluZyBD
KysKK2NsYXNzZXMsIGZ1bmN0aW9ucywgbWFjcm9zLCBhbmQgdGVtcGxhdGVzIHRoYXQgbmVlZCB0
byB3b3JrIHdpdGgKK3ZhcmlvdXMgbnVtYmVyIG9mIGFyZ3VtZW50cy4KKworVVNBR0U6CisgICAg
ICAgcHVtcC5weSBTT1VSQ0VfRklMRQorCitFWEFNUExFUzoKKyAgICAgICBwdW1wLnB5IGZvby5j
Yy5wdW1wCisgICAgICAgICBDb252ZXJ0cyBmb28uY2MucHVtcCB0byBmb28uY2MuCisKK0dSQU1N
QVI6CisgICAgICAgQ09ERSA6Oj0gQVRPTUlDX0NPREUqCisgICAgICAgQVRPTUlDX0NPREUgOjo9
ICR2YXIgSUQgPSBFWFBSRVNTSU9OCisgICAgICAgICAgIHwgJHZhciBJRCA9IFtbIENPREUgXV0K
KyAgICAgICAgICAgfCAkcmFuZ2UgSUQgRVhQUkVTU0lPTi4uRVhQUkVTU0lPTgorICAgICAgICAg
ICB8ICRmb3IgSUQgU0VQQVJBVE9SIFtbIENPREUgXV0KKyAgICAgICAgICAgfCAkKCQpCisgICAg
ICAgICAgIHwgJElECisgICAgICAgICAgIHwgJChFWFBSRVNTSU9OKQorICAgICAgICAgICB8ICRp
ZiBFWFBSRVNTSU9OIFtbIENPREUgXV0gRUxTRV9CUkFOQ0gKKyAgICAgICAgICAgfCBbWyBDT0RF
IF1dCisgICAgICAgICAgIHwgUkFXX0NPREUKKyAgICAgICBTRVBBUkFUT1IgOjo9IFJBV19DT0RF
IHwgRU1QVFkKKyAgICAgICBFTFNFX0JSQU5DSCA6Oj0gJGVsc2UgW1sgQ09ERSBdXQorICAgICAg
ICAgICB8ICRlbGlmIEVYUFJFU1NJT04gW1sgQ09ERSBdXSBFTFNFX0JSQU5DSAorICAgICAgICAg
ICB8IEVNUFRZCisgICAgICAgRVhQUkVTU0lPTiBoYXMgUHl0aG9uIHN5bnRheC4KKyIiIgorCitf
X2F1dGhvcl9fID0gJ3dhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pJworCitpbXBvcnQgb3MK
K2ltcG9ydCByZQoraW1wb3J0IHN5cworCisKK1RPS0VOX1RBQkxFID0gWworICAgIChyZS5jb21w
aWxlKHInXCR2YXJccysnKSwgJyR2YXInKSwKKyAgICAocmUuY29tcGlsZShyJ1wkZWxpZlxzKycp
LCAnJGVsaWYnKSwKKyAgICAocmUuY29tcGlsZShyJ1wkZWxzZVxzKycpLCAnJGVsc2UnKSwKKyAg
ICAocmUuY29tcGlsZShyJ1wkZm9yXHMrJyksICckZm9yJyksCisgICAgKHJlLmNvbXBpbGUocidc
JGlmXHMrJyksICckaWYnKSwKKyAgICAocmUuY29tcGlsZShyJ1wkcmFuZ2VccysnKSwgJyRyYW5n
ZScpLAorICAgIChyZS5jb21waWxlKHInXCRbX0EtWmEtel1cdyonKSwgJyRpZCcpLAorICAgIChy
ZS5jb21waWxlKHInXCRcKFwkXCknKSwgJyQoJCknKSwKKyAgICAocmUuY29tcGlsZShyJ1wkJyks
ICckJyksCisgICAgKHJlLmNvbXBpbGUocidcW1xbXG4/JyksICdbWycpLAorICAgIChyZS5jb21w
aWxlKHInXF1cXVxuPycpLCAnXV0nKSwKKyAgICBdCisKKworY2xhc3MgQ3Vyc29yOgorICAiIiJS
ZXByZXNlbnRzIGEgcG9zaXRpb24gKGxpbmUgYW5kIGNvbHVtbikgaW4gYSB0ZXh0IGZpbGUuIiIi
CisKKyAgZGVmIF9faW5pdF9fKHNlbGYsIGxpbmU9LTEsIGNvbHVtbj0tMSk6CisgICAgc2VsZi5s
aW5lID0gbGluZQorICAgIHNlbGYuY29sdW1uID0gY29sdW1uCisKKyAgZGVmIF9fZXFfXyhzZWxm
LCByaHMpOgorICAgIHJldHVybiBzZWxmLmxpbmUgPT0gcmhzLmxpbmUgYW5kIHNlbGYuY29sdW1u
ID09IHJocy5jb2x1bW4KKworICBkZWYgX19uZV9fKHNlbGYsIHJocyk6CisgICAgcmV0dXJuIG5v
dCBzZWxmID09IHJocworCisgIGRlZiBfX2x0X18oc2VsZiwgcmhzKToKKyAgICByZXR1cm4gc2Vs
Zi5saW5lIDwgcmhzLmxpbmUgb3IgKAorICAgICAgICBzZWxmLmxpbmUgPT0gcmhzLmxpbmUgYW5k
IHNlbGYuY29sdW1uIDwgcmhzLmNvbHVtbikKKworICBkZWYgX19sZV9fKHNlbGYsIHJocyk6Cisg
ICAgcmV0dXJuIHNlbGYgPCByaHMgb3Igc2VsZiA9PSByaHMKKworICBkZWYgX19ndF9fKHNlbGYs
IHJocyk6CisgICAgcmV0dXJuIHJocyA8IHNlbGYKKworICBkZWYgX19nZV9fKHNlbGYsIHJocyk6
CisgICAgcmV0dXJuIHJocyA8PSBzZWxmCisKKyAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgaWYg
c2VsZiA9PSBFb2YoKToKKyAgICAgIHJldHVybiAnRU9GJworICAgIGVsc2U6CisgICAgICByZXR1
cm4gJyVzKCVzKScgJSAoc2VsZi5saW5lICsgMSwgc2VsZi5jb2x1bW4pCisKKyAgZGVmIF9fYWRk
X18oc2VsZiwgb2Zmc2V0KToKKyAgICByZXR1cm4gQ3Vyc29yKHNlbGYubGluZSwgc2VsZi5jb2x1
bW4gKyBvZmZzZXQpCisKKyAgZGVmIF9fc3ViX18oc2VsZiwgb2Zmc2V0KToKKyAgICByZXR1cm4g
Q3Vyc29yKHNlbGYubGluZSwgc2VsZi5jb2x1bW4gLSBvZmZzZXQpCisKKyAgZGVmIENsb25lKHNl
bGYpOgorICAgICIiIlJldHVybnMgYSBjb3B5IG9mIHNlbGYuIiIiCisKKyAgICByZXR1cm4gQ3Vy
c29yKHNlbGYubGluZSwgc2VsZi5jb2x1bW4pCisKKworIyBTcGVjaWFsIGN1cnNvciB0byBpbmRp
Y2F0ZSB0aGUgZW5kLW9mLWZpbGUuCitkZWYgRW9mKCk6CisgICIiIlJldHVybnMgdGhlIHNwZWNp
YWwgY3Vyc29yIHRvIGRlbm90ZSB0aGUgZW5kLW9mLWZpbGUuIiIiCisgIHJldHVybiBDdXJzb3Io
LTEsIC0xKQorCisKK2NsYXNzIFRva2VuOgorICAiIiJSZXByZXNlbnRzIGEgdG9rZW4gaW4gYSBQ
dW1wIHNvdXJjZSBmaWxlLiIiIgorCisgIGRlZiBfX2luaXRfXyhzZWxmLCBzdGFydD1Ob25lLCBl
bmQ9Tm9uZSwgdmFsdWU9Tm9uZSwgdG9rZW5fdHlwZT1Ob25lKToKKyAgICBpZiBzdGFydCBpcyBO
b25lOgorICAgICAgc2VsZi5zdGFydCA9IEVvZigpCisgICAgZWxzZToKKyAgICAgIHNlbGYuc3Rh
cnQgPSBzdGFydAorICAgIGlmIGVuZCBpcyBOb25lOgorICAgICAgc2VsZi5lbmQgPSBFb2YoKQor
ICAgIGVsc2U6CisgICAgICBzZWxmLmVuZCA9IGVuZAorICAgIHNlbGYudmFsdWUgPSB2YWx1ZQor
ICAgIHNlbGYudG9rZW5fdHlwZSA9IHRva2VuX3R5cGUKKworICBkZWYgX19zdHJfXyhzZWxmKToK
KyAgICByZXR1cm4gJ1Rva2VuIEAlczogXCclc1wnIHR5cGU9JXMnICUgKAorICAgICAgICBzZWxm
LnN0YXJ0LCBzZWxmLnZhbHVlLCBzZWxmLnRva2VuX3R5cGUpCisKKyAgZGVmIENsb25lKHNlbGYp
OgorICAgICIiIlJldHVybnMgYSBjb3B5IG9mIHNlbGYuIiIiCisKKyAgICByZXR1cm4gVG9rZW4o
c2VsZi5zdGFydC5DbG9uZSgpLCBzZWxmLmVuZC5DbG9uZSgpLCBzZWxmLnZhbHVlLAorICAgICAg
ICAgICAgICAgICBzZWxmLnRva2VuX3R5cGUpCisKKworZGVmIFN0YXJ0c1dpdGgobGluZXMsIHBv
cywgc3RyaW5nKToKKyAgIiIiUmV0dXJucyBUcnVlIGlmZiB0aGUgZ2l2ZW4gcG9zaXRpb24gaW4g
bGluZXMgc3RhcnRzIHdpdGggJ3N0cmluZycuIiIiCisKKyAgcmV0dXJuIGxpbmVzW3Bvcy5saW5l
XVtwb3MuY29sdW1uOl0uc3RhcnRzd2l0aChzdHJpbmcpCisKKworZGVmIEZpbmRGaXJzdEluTGlu
ZShsaW5lLCB0b2tlbl90YWJsZSk6CisgIGJlc3RfbWF0Y2hfc3RhcnQgPSAtMQorICBmb3IgKHJl
Z2V4LCB0b2tlbl90eXBlKSBpbiB0b2tlbl90YWJsZToKKyAgICBtID0gcmVnZXguc2VhcmNoKGxp
bmUpCisgICAgaWYgbToKKyAgICAgICMgV2UgZm91bmQgcmVnZXggaW4gbGluZXMKKyAgICAgIGlm
IGJlc3RfbWF0Y2hfc3RhcnQgPCAwIG9yIG0uc3RhcnQoKSA8IGJlc3RfbWF0Y2hfc3RhcnQ6Cisg
ICAgICAgIGJlc3RfbWF0Y2hfc3RhcnQgPSBtLnN0YXJ0KCkKKyAgICAgICAgYmVzdF9tYXRjaF9s
ZW5ndGggPSBtLmVuZCgpIC0gbS5zdGFydCgpCisgICAgICAgIGJlc3RfbWF0Y2hfdG9rZW5fdHlw
ZSA9IHRva2VuX3R5cGUKKworICBpZiBiZXN0X21hdGNoX3N0YXJ0IDwgMDoKKyAgICByZXR1cm4g
Tm9uZQorCisgIHJldHVybiAoYmVzdF9tYXRjaF9zdGFydCwgYmVzdF9tYXRjaF9sZW5ndGgsIGJl
c3RfbWF0Y2hfdG9rZW5fdHlwZSkKKworCitkZWYgRmluZEZpcnN0KGxpbmVzLCB0b2tlbl90YWJs
ZSwgY3Vyc29yKToKKyAgIiIiRmluZHMgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgYW55IHN0cmlu
ZyBpbiBzdHJpbmdzIGluIGxpbmVzLiIiIgorCisgIHN0YXJ0ID0gY3Vyc29yLkNsb25lKCkKKyAg
Y3VyX2xpbmVfbnVtYmVyID0gY3Vyc29yLmxpbmUKKyAgZm9yIGxpbmUgaW4gbGluZXNbc3RhcnQu
bGluZTpdOgorICAgIGlmIGN1cl9saW5lX251bWJlciA9PSBzdGFydC5saW5lOgorICAgICAgbGlu
ZSA9IGxpbmVbc3RhcnQuY29sdW1uOl0KKyAgICBtID0gRmluZEZpcnN0SW5MaW5lKGxpbmUsIHRv
a2VuX3RhYmxlKQorICAgIGlmIG06CisgICAgICAjIFdlIGZvdW5kIGEgcmVnZXggaW4gbGluZS4K
KyAgICAgIChzdGFydF9jb2x1bW4sIGxlbmd0aCwgdG9rZW5fdHlwZSkgPSBtCisgICAgICBpZiBj
dXJfbGluZV9udW1iZXIgPT0gc3RhcnQubGluZToKKyAgICAgICAgc3RhcnRfY29sdW1uICs9IHN0
YXJ0LmNvbHVtbgorICAgICAgZm91bmRfc3RhcnQgPSBDdXJzb3IoY3VyX2xpbmVfbnVtYmVyLCBz
dGFydF9jb2x1bW4pCisgICAgICBmb3VuZF9lbmQgPSBmb3VuZF9zdGFydCArIGxlbmd0aAorICAg
ICAgcmV0dXJuIE1ha2VUb2tlbihsaW5lcywgZm91bmRfc3RhcnQsIGZvdW5kX2VuZCwgdG9rZW5f
dHlwZSkKKyAgICBjdXJfbGluZV9udW1iZXIgKz0gMQorICAjIFdlIGZhaWxlZCB0byBmaW5kIHN0
ciBpbiBsaW5lcworICByZXR1cm4gTm9uZQorCisKK2RlZiBTdWJTdHJpbmcobGluZXMsIHN0YXJ0
LCBlbmQpOgorICAiIiJSZXR1cm5zIGEgc3Vic3RyaW5nIGluIGxpbmVzLiIiIgorCisgIGlmIGVu
ZCA9PSBFb2YoKToKKyAgICBlbmQgPSBDdXJzb3IobGVuKGxpbmVzKSAtIDEsIGxlbihsaW5lc1st
MV0pKQorCisgIGlmIHN0YXJ0ID49IGVuZDoKKyAgICByZXR1cm4gJycKKworICBpZiBzdGFydC5s
aW5lID09IGVuZC5saW5lOgorICAgIHJldHVybiBsaW5lc1tzdGFydC5saW5lXVtzdGFydC5jb2x1
bW46ZW5kLmNvbHVtbl0KKworICByZXN1bHRfbGluZXMgPSAoW2xpbmVzW3N0YXJ0LmxpbmVdW3N0
YXJ0LmNvbHVtbjpdXSArCisgICAgICAgICAgICAgICAgICBsaW5lc1tzdGFydC5saW5lICsgMTpl
bmQubGluZV0gKworICAgICAgICAgICAgICAgICAgW2xpbmVzW2VuZC5saW5lXVs6ZW5kLmNvbHVt
bl1dKQorICByZXR1cm4gJycuam9pbihyZXN1bHRfbGluZXMpCisKKworZGVmIFN0cmlwTWV0YUNv
bW1lbnRzKHN0cik6CisgICIiIlN0cmlwIG1ldGEgY29tbWVudHMgZnJvbSBlYWNoIGxpbmUgaW4g
dGhlIGdpdmVuIHN0cmluZy4iIiIKKworICAjIEZpcnN0LCBjb21wbGV0ZWx5IHJlbW92ZSBsaW5l
cyBjb250YWluaW5nIG5vdGhpbmcgYnV0IGEgbWV0YQorICAjIGNvbW1lbnQsIGluY2x1ZGluZyB0
aGUgdHJhaWxpbmcgXG4uCisgIHN0ciA9IHJlLnN1YihyJ15ccypcJFwkLipcbicsICcnLCBzdHIp
CisKKyAgIyBUaGVuLCByZW1vdmUgbWV0YSBjb21tZW50cyBmcm9tIGNvbnRlbnRmdWwgbGluZXMu
CisgIHJldHVybiByZS5zdWIocidccypcJFwkLionLCAnJywgc3RyKQorCisKK2RlZiBNYWtlVG9r
ZW4obGluZXMsIHN0YXJ0LCBlbmQsIHRva2VuX3R5cGUpOgorICAiIiJDcmVhdGVzIGEgbmV3IGlu
c3RhbmNlIG9mIFRva2VuLiIiIgorCisgIHJldHVybiBUb2tlbihzdGFydCwgZW5kLCBTdWJTdHJp
bmcobGluZXMsIHN0YXJ0LCBlbmQpLCB0b2tlbl90eXBlKQorCisKK2RlZiBQYXJzZVRva2VuKGxp
bmVzLCBwb3MsIHJlZ2V4LCB0b2tlbl90eXBlKToKKyAgbGluZSA9IGxpbmVzW3Bvcy5saW5lXVtw
b3MuY29sdW1uOl0KKyAgbSA9IHJlZ2V4LnNlYXJjaChsaW5lKQorICBpZiBtIGFuZCBub3QgbS5z
dGFydCgpOgorICAgIHJldHVybiBNYWtlVG9rZW4obGluZXMsIHBvcywgcG9zICsgbS5lbmQoKSwg
dG9rZW5fdHlwZSkKKyAgZWxzZToKKyAgICBwcmludCAnRVJST1I6ICVzIGV4cGVjdGVkIGF0ICVz
LicgJSAodG9rZW5fdHlwZSwgcG9zKQorICAgIHN5cy5leGl0KDEpCisKKworSURfUkVHRVggPSBy
ZS5jb21waWxlKHInW19BLVphLXpdXHcqJykKK0VRX1JFR0VYID0gcmUuY29tcGlsZShyJz0nKQor
UkVTVF9PRl9MSU5FX1JFR0VYID0gcmUuY29tcGlsZShyJy4qPyg/PSR8XCRcJCknKQorT1BUSU9O
QUxfV0hJVEVfU1BBQ0VTX1JFR0VYID0gcmUuY29tcGlsZShyJ1xzKicpCitXSElURV9TUEFDRV9S
RUdFWCA9IHJlLmNvbXBpbGUocidccycpCitET1RfRE9UX1JFR0VYID0gcmUuY29tcGlsZShyJ1wu
XC4nKQorCisKK2RlZiBTa2lwKGxpbmVzLCBwb3MsIHJlZ2V4KToKKyAgbGluZSA9IGxpbmVzW3Bv
cy5saW5lXVtwb3MuY29sdW1uOl0KKyAgbSA9IHJlLnNlYXJjaChyZWdleCwgbGluZSkKKyAgaWYg
bSBhbmQgbm90IG0uc3RhcnQoKToKKyAgICByZXR1cm4gcG9zICsgbS5lbmQoKQorICBlbHNlOgor
ICAgIHJldHVybiBwb3MKKworCitkZWYgU2tpcFVudGlsKGxpbmVzLCBwb3MsIHJlZ2V4LCB0b2tl
bl90eXBlKToKKyAgbGluZSA9IGxpbmVzW3Bvcy5saW5lXVtwb3MuY29sdW1uOl0KKyAgbSA9IHJl
LnNlYXJjaChyZWdleCwgbGluZSkKKyAgaWYgbToKKyAgICByZXR1cm4gcG9zICsgbS5zdGFydCgp
CisgIGVsc2U6CisgICAgcHJpbnQgKCdFUlJPUjogJXMgZXhwZWN0ZWQgb24gbGluZSAlcyBhZnRl
ciBjb2x1bW4gJXMuJyAlCisgICAgICAgICAgICh0b2tlbl90eXBlLCBwb3MubGluZSArIDEsIHBv
cy5jb2x1bW4pKQorICAgIHN5cy5leGl0KDEpCisKKworZGVmIFBhcnNlRXhwVG9rZW5JblBhcmVu
cyhsaW5lcywgcG9zKToKKyAgZGVmIFBhcnNlSW5QYXJlbnMocG9zKToKKyAgICBwb3MgPSBTa2lw
KGxpbmVzLCBwb3MsIE9QVElPTkFMX1dISVRFX1NQQUNFU19SRUdFWCkKKyAgICBwb3MgPSBTa2lw
KGxpbmVzLCBwb3MsIHInXCgnKQorICAgIHBvcyA9IFBhcnNlKHBvcykKKyAgICBwb3MgPSBTa2lw
KGxpbmVzLCBwb3MsIHInXCknKQorICAgIHJldHVybiBwb3MKKworICBkZWYgUGFyc2UocG9zKToK
KyAgICBwb3MgPSBTa2lwVW50aWwobGluZXMsIHBvcywgcidcKHxcKScsICcpJykKKyAgICBpZiBT
dWJTdHJpbmcobGluZXMsIHBvcywgcG9zICsgMSkgPT0gJygnOgorICAgICAgcG9zID0gUGFyc2Uo
cG9zICsgMSkKKyAgICAgIHBvcyA9IFNraXAobGluZXMsIHBvcywgcidcKScpCisgICAgICByZXR1
cm4gUGFyc2UocG9zKQorICAgIGVsc2U6CisgICAgICByZXR1cm4gcG9zCisKKyAgc3RhcnQgPSBw
b3MuQ2xvbmUoKQorICBwb3MgPSBQYXJzZUluUGFyZW5zKHBvcykKKyAgcmV0dXJuIE1ha2VUb2tl
bihsaW5lcywgc3RhcnQsIHBvcywgJ2V4cCcpCisKKworZGVmIFJTdHJpcE5ld0xpbmVGcm9tVG9r
ZW4odG9rZW4pOgorICBpZiB0b2tlbi52YWx1ZS5lbmRzd2l0aCgnXG4nKToKKyAgICByZXR1cm4g
VG9rZW4odG9rZW4uc3RhcnQsIHRva2VuLmVuZCwgdG9rZW4udmFsdWVbOi0xXSwgdG9rZW4udG9r
ZW5fdHlwZSkKKyAgZWxzZToKKyAgICByZXR1cm4gdG9rZW4KKworCitkZWYgVG9rZW5pemVMaW5l
cyhsaW5lcywgcG9zKToKKyAgd2hpbGUgVHJ1ZToKKyAgICBmb3VuZCA9IEZpbmRGaXJzdChsaW5l
cywgVE9LRU5fVEFCTEUsIHBvcykKKyAgICBpZiBub3QgZm91bmQ6CisgICAgICB5aWVsZCBNYWtl
VG9rZW4obGluZXMsIHBvcywgRW9mKCksICdjb2RlJykKKyAgICAgIHJldHVybgorCisgICAgaWYg
Zm91bmQuc3RhcnQgPT0gcG9zOgorICAgICAgcHJldl90b2tlbiA9IE5vbmUKKyAgICAgIHByZXZf
dG9rZW5fcnN0cmlwcGVkID0gTm9uZQorICAgIGVsc2U6CisgICAgICBwcmV2X3Rva2VuID0gTWFr
ZVRva2VuKGxpbmVzLCBwb3MsIGZvdW5kLnN0YXJ0LCAnY29kZScpCisgICAgICBwcmV2X3Rva2Vu
X3JzdHJpcHBlZCA9IFJTdHJpcE5ld0xpbmVGcm9tVG9rZW4ocHJldl90b2tlbikKKworICAgIGlm
IGZvdW5kLnRva2VuX3R5cGUgPT0gJyR2YXInOgorICAgICAgaWYgcHJldl90b2tlbl9yc3RyaXBw
ZWQ6CisgICAgICAgIHlpZWxkIHByZXZfdG9rZW5fcnN0cmlwcGVkCisgICAgICB5aWVsZCBmb3Vu
ZAorICAgICAgaWRfdG9rZW4gPSBQYXJzZVRva2VuKGxpbmVzLCBmb3VuZC5lbmQsIElEX1JFR0VY
LCAnaWQnKQorICAgICAgeWllbGQgaWRfdG9rZW4KKyAgICAgIHBvcyA9IFNraXAobGluZXMsIGlk
X3Rva2VuLmVuZCwgT1BUSU9OQUxfV0hJVEVfU1BBQ0VTX1JFR0VYKQorCisgICAgICBlcV90b2tl
biA9IFBhcnNlVG9rZW4obGluZXMsIHBvcywgRVFfUkVHRVgsICc9JykKKyAgICAgIHlpZWxkIGVx
X3Rva2VuCisgICAgICBwb3MgPSBTa2lwKGxpbmVzLCBlcV90b2tlbi5lbmQsIHInXHMqJykKKwor
ICAgICAgaWYgU3ViU3RyaW5nKGxpbmVzLCBwb3MsIHBvcyArIDIpICE9ICdbWyc6CisgICAgICAg
IGV4cF90b2tlbiA9IFBhcnNlVG9rZW4obGluZXMsIHBvcywgUkVTVF9PRl9MSU5FX1JFR0VYLCAn
ZXhwJykKKyAgICAgICAgeWllbGQgZXhwX3Rva2VuCisgICAgICAgIHBvcyA9IEN1cnNvcihleHBf
dG9rZW4uZW5kLmxpbmUgKyAxLCAwKQorICAgIGVsaWYgZm91bmQudG9rZW5fdHlwZSA9PSAnJGZv
cic6CisgICAgICBpZiBwcmV2X3Rva2VuX3JzdHJpcHBlZDoKKyAgICAgICAgeWllbGQgcHJldl90
b2tlbl9yc3RyaXBwZWQKKyAgICAgIHlpZWxkIGZvdW5kCisgICAgICBpZF90b2tlbiA9IFBhcnNl
VG9rZW4obGluZXMsIGZvdW5kLmVuZCwgSURfUkVHRVgsICdpZCcpCisgICAgICB5aWVsZCBpZF90
b2tlbgorICAgICAgcG9zID0gU2tpcChsaW5lcywgaWRfdG9rZW4uZW5kLCBXSElURV9TUEFDRV9S
RUdFWCkKKyAgICBlbGlmIGZvdW5kLnRva2VuX3R5cGUgPT0gJyRyYW5nZSc6CisgICAgICBpZiBw
cmV2X3Rva2VuX3JzdHJpcHBlZDoKKyAgICAgICAgeWllbGQgcHJldl90b2tlbl9yc3RyaXBwZWQK
KyAgICAgIHlpZWxkIGZvdW5kCisgICAgICBpZF90b2tlbiA9IFBhcnNlVG9rZW4obGluZXMsIGZv
dW5kLmVuZCwgSURfUkVHRVgsICdpZCcpCisgICAgICB5aWVsZCBpZF90b2tlbgorICAgICAgcG9z
ID0gU2tpcChsaW5lcywgaWRfdG9rZW4uZW5kLCBPUFRJT05BTF9XSElURV9TUEFDRVNfUkVHRVgp
CisKKyAgICAgIGRvdHNfcG9zID0gU2tpcFVudGlsKGxpbmVzLCBwb3MsIERPVF9ET1RfUkVHRVgs
ICcuLicpCisgICAgICB5aWVsZCBNYWtlVG9rZW4obGluZXMsIHBvcywgZG90c19wb3MsICdleHAn
KQorICAgICAgeWllbGQgTWFrZVRva2VuKGxpbmVzLCBkb3RzX3BvcywgZG90c19wb3MgKyAyLCAn
Li4nKQorICAgICAgcG9zID0gZG90c19wb3MgKyAyCisgICAgICBuZXdfcG9zID0gQ3Vyc29yKHBv
cy5saW5lICsgMSwgMCkKKyAgICAgIHlpZWxkIE1ha2VUb2tlbihsaW5lcywgcG9zLCBuZXdfcG9z
LCAnZXhwJykKKyAgICAgIHBvcyA9IG5ld19wb3MKKyAgICBlbGlmIGZvdW5kLnRva2VuX3R5cGUg
PT0gJyQnOgorICAgICAgaWYgcHJldl90b2tlbjoKKyAgICAgICAgeWllbGQgcHJldl90b2tlbgor
ICAgICAgeWllbGQgZm91bmQKKyAgICAgIGV4cF90b2tlbiA9IFBhcnNlRXhwVG9rZW5JblBhcmVu
cyhsaW5lcywgZm91bmQuZW5kKQorICAgICAgeWllbGQgZXhwX3Rva2VuCisgICAgICBwb3MgPSBl
eHBfdG9rZW4uZW5kCisgICAgZWxpZiAoZm91bmQudG9rZW5fdHlwZSA9PSAnXV0nIG9yIGZvdW5k
LnRva2VuX3R5cGUgPT0gJyRpZicgb3IKKyAgICAgICAgICBmb3VuZC50b2tlbl90eXBlID09ICck
ZWxpZicgb3IgZm91bmQudG9rZW5fdHlwZSA9PSAnJGVsc2UnKToKKyAgICAgIGlmIHByZXZfdG9r
ZW5fcnN0cmlwcGVkOgorICAgICAgICB5aWVsZCBwcmV2X3Rva2VuX3JzdHJpcHBlZAorICAgICAg
eWllbGQgZm91bmQKKyAgICAgIHBvcyA9IGZvdW5kLmVuZAorICAgIGVsc2U6CisgICAgICBpZiBw
cmV2X3Rva2VuOgorICAgICAgICB5aWVsZCBwcmV2X3Rva2VuCisgICAgICB5aWVsZCBmb3VuZAor
ICAgICAgcG9zID0gZm91bmQuZW5kCisKKworZGVmIFRva2VuaXplKHMpOgorICAiIiJBIGdlbmVy
YXRvciB0aGF0IHlpZWxkcyB0aGUgdG9rZW5zIGluIHRoZSBnaXZlbiBzdHJpbmcuIiIiCisgIGlm
IHMgIT0gJyc6CisgICAgbGluZXMgPSBzLnNwbGl0bGluZXMoVHJ1ZSkKKyAgICBmb3IgdG9rZW4g
aW4gVG9rZW5pemVMaW5lcyhsaW5lcywgQ3Vyc29yKDAsIDApKToKKyAgICAgIHlpZWxkIHRva2Vu
CisKKworY2xhc3MgQ29kZU5vZGU6CisgIGRlZiBfX2luaXRfXyhzZWxmLCBhdG9taWNfY29kZV9s
aXN0PU5vbmUpOgorICAgIHNlbGYuYXRvbWljX2NvZGUgPSBhdG9taWNfY29kZV9saXN0CisKKwor
Y2xhc3MgVmFyTm9kZToKKyAgZGVmIF9faW5pdF9fKHNlbGYsIGlkZW50aWZpZXI9Tm9uZSwgYXRv
bWljX2NvZGU9Tm9uZSk6CisgICAgc2VsZi5pZGVudGlmaWVyID0gaWRlbnRpZmllcgorICAgIHNl
bGYuYXRvbWljX2NvZGUgPSBhdG9taWNfY29kZQorCisKK2NsYXNzIFJhbmdlTm9kZToKKyAgZGVm
IF9faW5pdF9fKHNlbGYsIGlkZW50aWZpZXI9Tm9uZSwgZXhwMT1Ob25lLCBleHAyPU5vbmUpOgor
ICAgIHNlbGYuaWRlbnRpZmllciA9IGlkZW50aWZpZXIKKyAgICBzZWxmLmV4cDEgPSBleHAxCisg
ICAgc2VsZi5leHAyID0gZXhwMgorCisKK2NsYXNzIEZvck5vZGU6CisgIGRlZiBfX2luaXRfXyhz
ZWxmLCBpZGVudGlmaWVyPU5vbmUsIHNlcD1Ob25lLCBjb2RlPU5vbmUpOgorICAgIHNlbGYuaWRl
bnRpZmllciA9IGlkZW50aWZpZXIKKyAgICBzZWxmLnNlcCA9IHNlcAorICAgIHNlbGYuY29kZSA9
IGNvZGUKKworCitjbGFzcyBFbHNlTm9kZToKKyAgZGVmIF9faW5pdF9fKHNlbGYsIGVsc2VfYnJh
bmNoPU5vbmUpOgorICAgIHNlbGYuZWxzZV9icmFuY2ggPSBlbHNlX2JyYW5jaAorCisKK2NsYXNz
IElmTm9kZToKKyAgZGVmIF9faW5pdF9fKHNlbGYsIGV4cD1Ob25lLCB0aGVuX2JyYW5jaD1Ob25l
LCBlbHNlX2JyYW5jaD1Ob25lKToKKyAgICBzZWxmLmV4cCA9IGV4cAorICAgIHNlbGYudGhlbl9i
cmFuY2ggPSB0aGVuX2JyYW5jaAorICAgIHNlbGYuZWxzZV9icmFuY2ggPSBlbHNlX2JyYW5jaAor
CisKK2NsYXNzIFJhd0NvZGVOb2RlOgorICBkZWYgX19pbml0X18oc2VsZiwgdG9rZW49Tm9uZSk6
CisgICAgc2VsZi5yYXdfY29kZSA9IHRva2VuCisKKworY2xhc3MgTGl0ZXJhbERvbGxhck5vZGU6
CisgIGRlZiBfX2luaXRfXyhzZWxmLCB0b2tlbik6CisgICAgc2VsZi50b2tlbiA9IHRva2VuCisK
KworY2xhc3MgRXhwTm9kZToKKyAgZGVmIF9faW5pdF9fKHNlbGYsIHRva2VuLCBweXRob25fZXhw
KToKKyAgICBzZWxmLnRva2VuID0gdG9rZW4KKyAgICBzZWxmLnB5dGhvbl9leHAgPSBweXRob25f
ZXhwCisKKworZGVmIFBvcEZyb250KGFfbGlzdCk6CisgIGhlYWQgPSBhX2xpc3RbMF0KKyAgYV9s
aXN0WzoxXSA9IFtdCisgIHJldHVybiBoZWFkCisKKworZGVmIFB1c2hGcm9udChhX2xpc3QsIGVs
ZW0pOgorICBhX2xpc3RbOjBdID0gW2VsZW1dCisKKworZGVmIFBvcFRva2VuKGFfbGlzdCwgdG9r
ZW5fdHlwZT1Ob25lKToKKyAgdG9rZW4gPSBQb3BGcm9udChhX2xpc3QpCisgIGlmIHRva2VuX3R5
cGUgaXMgbm90IE5vbmUgYW5kIHRva2VuLnRva2VuX3R5cGUgIT0gdG9rZW5fdHlwZToKKyAgICBw
cmludCAnRVJST1I6ICVzIGV4cGVjdGVkIGF0ICVzJyAlICh0b2tlbl90eXBlLCB0b2tlbi5zdGFy
dCkKKyAgICBwcmludCAnRVJST1I6ICVzIGZvdW5kIGluc3RlYWQnICUgKHRva2VuLCkKKyAgICBz
eXMuZXhpdCgxKQorCisgIHJldHVybiB0b2tlbgorCisKK2RlZiBQZWVrVG9rZW4oYV9saXN0KToK
KyAgaWYgbm90IGFfbGlzdDoKKyAgICByZXR1cm4gTm9uZQorCisgIHJldHVybiBhX2xpc3RbMF0K
KworCitkZWYgUGFyc2VFeHBOb2RlKHRva2VuKToKKyAgcHl0aG9uX2V4cCA9IHJlLnN1YihyJyhb
X0EtWmEtel1cdyopJywgcidzZWxmLkdldFZhbHVlKCJcMSIpJywgdG9rZW4udmFsdWUpCisgIHJl
dHVybiBFeHBOb2RlKHRva2VuLCBweXRob25fZXhwKQorCisKK2RlZiBQYXJzZUVsc2VOb2RlKHRv
a2Vucyk6CisgIGRlZiBQb3AodG9rZW5fdHlwZT1Ob25lKToKKyAgICByZXR1cm4gUG9wVG9rZW4o
dG9rZW5zLCB0b2tlbl90eXBlKQorCisgIG5leHQgPSBQZWVrVG9rZW4odG9rZW5zKQorICBpZiBu
b3QgbmV4dDoKKyAgICByZXR1cm4gTm9uZQorICBpZiBuZXh0LnRva2VuX3R5cGUgPT0gJyRlbHNl
JzoKKyAgICBQb3AoJyRlbHNlJykKKyAgICBQb3AoJ1tbJykKKyAgICBjb2RlX25vZGUgPSBQYXJz
ZUNvZGVOb2RlKHRva2VucykKKyAgICBQb3AoJ11dJykKKyAgICByZXR1cm4gY29kZV9ub2RlCisg
IGVsaWYgbmV4dC50b2tlbl90eXBlID09ICckZWxpZic6CisgICAgUG9wKCckZWxpZicpCisgICAg
ZXhwID0gUG9wKCdjb2RlJykKKyAgICBQb3AoJ1tbJykKKyAgICBjb2RlX25vZGUgPSBQYXJzZUNv
ZGVOb2RlKHRva2VucykKKyAgICBQb3AoJ11dJykKKyAgICBpbm5lcl9lbHNlX25vZGUgPSBQYXJz
ZUVsc2VOb2RlKHRva2VucykKKyAgICByZXR1cm4gQ29kZU5vZGUoW0lmTm9kZShQYXJzZUV4cE5v
ZGUoZXhwKSwgY29kZV9ub2RlLCBpbm5lcl9lbHNlX25vZGUpXSkKKyAgZWxpZiBub3QgbmV4dC52
YWx1ZS5zdHJpcCgpOgorICAgIFBvcCgnY29kZScpCisgICAgcmV0dXJuIFBhcnNlRWxzZU5vZGUo
dG9rZW5zKQorICBlbHNlOgorICAgIHJldHVybiBOb25lCisKKworZGVmIFBhcnNlQXRvbWljQ29k
ZU5vZGUodG9rZW5zKToKKyAgZGVmIFBvcCh0b2tlbl90eXBlPU5vbmUpOgorICAgIHJldHVybiBQ
b3BUb2tlbih0b2tlbnMsIHRva2VuX3R5cGUpCisKKyAgaGVhZCA9IFBvcEZyb250KHRva2VucykK
KyAgdCA9IGhlYWQudG9rZW5fdHlwZQorICBpZiB0ID09ICdjb2RlJzoKKyAgICByZXR1cm4gUmF3
Q29kZU5vZGUoaGVhZCkKKyAgZWxpZiB0ID09ICckdmFyJzoKKyAgICBpZF90b2tlbiA9IFBvcCgn
aWQnKQorICAgIFBvcCgnPScpCisgICAgbmV4dCA9IFBlZWtUb2tlbih0b2tlbnMpCisgICAgaWYg
bmV4dC50b2tlbl90eXBlID09ICdleHAnOgorICAgICAgZXhwX3Rva2VuID0gUG9wKCkKKyAgICAg
IHJldHVybiBWYXJOb2RlKGlkX3Rva2VuLCBQYXJzZUV4cE5vZGUoZXhwX3Rva2VuKSkKKyAgICBQ
b3AoJ1tbJykKKyAgICBjb2RlX25vZGUgPSBQYXJzZUNvZGVOb2RlKHRva2VucykKKyAgICBQb3Ao
J11dJykKKyAgICByZXR1cm4gVmFyTm9kZShpZF90b2tlbiwgY29kZV9ub2RlKQorICBlbGlmIHQg
PT0gJyRmb3InOgorICAgIGlkX3Rva2VuID0gUG9wKCdpZCcpCisgICAgbmV4dF90b2tlbiA9IFBl
ZWtUb2tlbih0b2tlbnMpCisgICAgaWYgbmV4dF90b2tlbi50b2tlbl90eXBlID09ICdjb2RlJzoK
KyAgICAgIHNlcF90b2tlbiA9IG5leHRfdG9rZW4KKyAgICAgIFBvcCgnY29kZScpCisgICAgZWxz
ZToKKyAgICAgIHNlcF90b2tlbiA9IE5vbmUKKyAgICBQb3AoJ1tbJykKKyAgICBjb2RlX25vZGUg
PSBQYXJzZUNvZGVOb2RlKHRva2VucykKKyAgICBQb3AoJ11dJykKKyAgICByZXR1cm4gRm9yTm9k
ZShpZF90b2tlbiwgc2VwX3Rva2VuLCBjb2RlX25vZGUpCisgIGVsaWYgdCA9PSAnJGlmJzoKKyAg
ICBleHBfdG9rZW4gPSBQb3AoJ2NvZGUnKQorICAgIFBvcCgnW1snKQorICAgIGNvZGVfbm9kZSA9
IFBhcnNlQ29kZU5vZGUodG9rZW5zKQorICAgIFBvcCgnXV0nKQorICAgIGVsc2Vfbm9kZSA9IFBh
cnNlRWxzZU5vZGUodG9rZW5zKQorICAgIHJldHVybiBJZk5vZGUoUGFyc2VFeHBOb2RlKGV4cF90
b2tlbiksIGNvZGVfbm9kZSwgZWxzZV9ub2RlKQorICBlbGlmIHQgPT0gJyRyYW5nZSc6CisgICAg
aWRfdG9rZW4gPSBQb3AoJ2lkJykKKyAgICBleHAxX3Rva2VuID0gUG9wKCdleHAnKQorICAgIFBv
cCgnLi4nKQorICAgIGV4cDJfdG9rZW4gPSBQb3AoJ2V4cCcpCisgICAgcmV0dXJuIFJhbmdlTm9k
ZShpZF90b2tlbiwgUGFyc2VFeHBOb2RlKGV4cDFfdG9rZW4pLAorICAgICAgICAgICAgICAgICAg
ICAgUGFyc2VFeHBOb2RlKGV4cDJfdG9rZW4pKQorICBlbGlmIHQgPT0gJyRpZCc6CisgICAgcmV0
dXJuIFBhcnNlRXhwTm9kZShUb2tlbihoZWFkLnN0YXJ0ICsgMSwgaGVhZC5lbmQsIGhlYWQudmFs
dWVbMTpdLCAnaWQnKSkKKyAgZWxpZiB0ID09ICckKCQpJzoKKyAgICByZXR1cm4gTGl0ZXJhbERv
bGxhck5vZGUoaGVhZCkKKyAgZWxpZiB0ID09ICckJzoKKyAgICBleHBfdG9rZW4gPSBQb3AoJ2V4
cCcpCisgICAgcmV0dXJuIFBhcnNlRXhwTm9kZShleHBfdG9rZW4pCisgIGVsaWYgdCA9PSAnW1sn
OgorICAgIGNvZGVfbm9kZSA9IFBhcnNlQ29kZU5vZGUodG9rZW5zKQorICAgIFBvcCgnXV0nKQor
ICAgIHJldHVybiBjb2RlX25vZGUKKyAgZWxzZToKKyAgICBQdXNoRnJvbnQodG9rZW5zLCBoZWFk
KQorICAgIHJldHVybiBOb25lCisKKworZGVmIFBhcnNlQ29kZU5vZGUodG9rZW5zKToKKyAgYXRv
bWljX2NvZGVfbGlzdCA9IFtdCisgIHdoaWxlIFRydWU6CisgICAgaWYgbm90IHRva2VuczoKKyAg
ICAgIGJyZWFrCisgICAgYXRvbWljX2NvZGVfbm9kZSA9IFBhcnNlQXRvbWljQ29kZU5vZGUodG9r
ZW5zKQorICAgIGlmIGF0b21pY19jb2RlX25vZGU6CisgICAgICBhdG9taWNfY29kZV9saXN0LmFw
cGVuZChhdG9taWNfY29kZV9ub2RlKQorICAgIGVsc2U6CisgICAgICBicmVhaworICByZXR1cm4g
Q29kZU5vZGUoYXRvbWljX2NvZGVfbGlzdCkKKworCitkZWYgUGFyc2VUb0FTVChwdW1wX3NyY190
ZXh0KToKKyAgIiIiQ29udmVydCB0aGUgZ2l2ZW4gUHVtcCBzb3VyY2UgdGV4dCBpbnRvIGFuIEFT
VC4iIiIKKyAgdG9rZW5zID0gbGlzdChUb2tlbml6ZShwdW1wX3NyY190ZXh0KSkKKyAgY29kZV9u
b2RlID0gUGFyc2VDb2RlTm9kZSh0b2tlbnMpCisgIHJldHVybiBjb2RlX25vZGUKKworCitjbGFz
cyBFbnY6CisgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICBzZWxmLnZhcmlhYmxlcyA9IFtdCisg
ICAgc2VsZi5yYW5nZXMgPSBbXQorCisgIGRlZiBDbG9uZShzZWxmKToKKyAgICBjbG9uZSA9IEVu
digpCisgICAgY2xvbmUudmFyaWFibGVzID0gc2VsZi52YXJpYWJsZXNbOl0KKyAgICBjbG9uZS5y
YW5nZXMgPSBzZWxmLnJhbmdlc1s6XQorICAgIHJldHVybiBjbG9uZQorCisgIGRlZiBQdXNoVmFy
aWFibGUoc2VsZiwgdmFyLCB2YWx1ZSk6CisgICAgIyBJZiB2YWx1ZSBsb29rcyBsaWtlIGFuIGlu
dCwgc3RvcmUgaXQgYXMgYW4gaW50LgorICAgIHRyeToKKyAgICAgIGludF92YWx1ZSA9IGludCh2
YWx1ZSkKKyAgICAgIGlmICgnJXMnICUgaW50X3ZhbHVlKSA9PSB2YWx1ZToKKyAgICAgICAgdmFs
dWUgPSBpbnRfdmFsdWUKKyAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgcGFzcworICAgIHNl
bGYudmFyaWFibGVzWzowXSA9IFsodmFyLCB2YWx1ZSldCisKKyAgZGVmIFBvcFZhcmlhYmxlKHNl
bGYpOgorICAgIHNlbGYudmFyaWFibGVzWzoxXSA9IFtdCisKKyAgZGVmIFB1c2hSYW5nZShzZWxm
LCB2YXIsIGxvd2VyLCB1cHBlcik6CisgICAgc2VsZi5yYW5nZXNbOjBdID0gWyh2YXIsIGxvd2Vy
LCB1cHBlcildCisKKyAgZGVmIFBvcFJhbmdlKHNlbGYpOgorICAgIHNlbGYucmFuZ2VzWzoxXSA9
IFtdCisKKyAgZGVmIEdldFZhbHVlKHNlbGYsIGlkZW50aWZpZXIpOgorICAgIGZvciAodmFyLCB2
YWx1ZSkgaW4gc2VsZi52YXJpYWJsZXM6CisgICAgICBpZiBpZGVudGlmaWVyID09IHZhcjoKKyAg
ICAgICAgcmV0dXJuIHZhbHVlCisKKyAgICBwcmludCAnRVJST1I6IG1ldGEgdmFyaWFibGUgJXMg
aXMgdW5kZWZpbmVkLicgJSAoaWRlbnRpZmllciwpCisgICAgc3lzLmV4aXQoMSkKKworICBkZWYg
RXZhbEV4cChzZWxmLCBleHApOgorICAgIHRyeToKKyAgICAgIHJlc3VsdCA9IGV2YWwoZXhwLnB5
dGhvbl9leHApCisgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKKyAgICAgIHByaW50ICdFUlJPUjog
Y2F1Z2h0IGV4Y2VwdGlvbiAlczogJXMnICUgKGUuX19jbGFzc19fLl9fbmFtZV9fLCBlKQorICAg
ICAgcHJpbnQgKCdFUlJPUjogZmFpbGVkIHRvIGV2YWx1YXRlIG1ldGEgZXhwcmVzc2lvbiAlcyBh
dCAlcycgJQorICAgICAgICAgICAgIChleHAucHl0aG9uX2V4cCwgZXhwLnRva2VuLnN0YXJ0KSkK
KyAgICAgIHN5cy5leGl0KDEpCisgICAgcmV0dXJuIHJlc3VsdAorCisgIGRlZiBHZXRSYW5nZShz
ZWxmLCBpZGVudGlmaWVyKToKKyAgICBmb3IgKHZhciwgbG93ZXIsIHVwcGVyKSBpbiBzZWxmLnJh
bmdlczoKKyAgICAgIGlmIGlkZW50aWZpZXIgPT0gdmFyOgorICAgICAgICByZXR1cm4gKGxvd2Vy
LCB1cHBlcikKKworICAgIHByaW50ICdFUlJPUjogcmFuZ2UgJXMgaXMgdW5kZWZpbmVkLicgJSAo
aWRlbnRpZmllciwpCisgICAgc3lzLmV4aXQoMSkKKworCitjbGFzcyBPdXRwdXQ6CisgIGRlZiBf
X2luaXRfXyhzZWxmKToKKyAgICBzZWxmLnN0cmluZyA9ICcnCisKKyAgZGVmIEdldExhc3RMaW5l
KHNlbGYpOgorICAgIGluZGV4ID0gc2VsZi5zdHJpbmcucmZpbmQoJ1xuJykKKyAgICBpZiBpbmRl
eCA8IDA6CisgICAgICByZXR1cm4gJycKKworICAgIHJldHVybiBzZWxmLnN0cmluZ1tpbmRleCAr
IDE6XQorCisgIGRlZiBBcHBlbmQoc2VsZiwgcyk6CisgICAgc2VsZi5zdHJpbmcgKz0gcworCisK
K2RlZiBSdW5BdG9taWNDb2RlKGVudiwgbm9kZSwgb3V0cHV0KToKKyAgaWYgaXNpbnN0YW5jZShu
b2RlLCBWYXJOb2RlKToKKyAgICBpZGVudGlmaWVyID0gbm9kZS5pZGVudGlmaWVyLnZhbHVlLnN0
cmlwKCkKKyAgICByZXN1bHQgPSBPdXRwdXQoKQorICAgIFJ1bkF0b21pY0NvZGUoZW52LkNsb25l
KCksIG5vZGUuYXRvbWljX2NvZGUsIHJlc3VsdCkKKyAgICB2YWx1ZSA9IHJlc3VsdC5zdHJpbmcK
KyAgICBlbnYuUHVzaFZhcmlhYmxlKGlkZW50aWZpZXIsIHZhbHVlKQorICBlbGlmIGlzaW5zdGFu
Y2Uobm9kZSwgUmFuZ2VOb2RlKToKKyAgICBpZGVudGlmaWVyID0gbm9kZS5pZGVudGlmaWVyLnZh
bHVlLnN0cmlwKCkKKyAgICBsb3dlciA9IGludChlbnYuRXZhbEV4cChub2RlLmV4cDEpKQorICAg
IHVwcGVyID0gaW50KGVudi5FdmFsRXhwKG5vZGUuZXhwMikpCisgICAgZW52LlB1c2hSYW5nZShp
ZGVudGlmaWVyLCBsb3dlciwgdXBwZXIpCisgIGVsaWYgaXNpbnN0YW5jZShub2RlLCBGb3JOb2Rl
KToKKyAgICBpZGVudGlmaWVyID0gbm9kZS5pZGVudGlmaWVyLnZhbHVlLnN0cmlwKCkKKyAgICBp
ZiBub2RlLnNlcCBpcyBOb25lOgorICAgICAgc2VwID0gJycKKyAgICBlbHNlOgorICAgICAgc2Vw
ID0gbm9kZS5zZXAudmFsdWUKKyAgICAobG93ZXIsIHVwcGVyKSA9IGVudi5HZXRSYW5nZShpZGVu
dGlmaWVyKQorICAgIGZvciBpIGluIHJhbmdlKGxvd2VyLCB1cHBlciArIDEpOgorICAgICAgbmV3
X2VudiA9IGVudi5DbG9uZSgpCisgICAgICBuZXdfZW52LlB1c2hWYXJpYWJsZShpZGVudGlmaWVy
LCBpKQorICAgICAgUnVuQ29kZShuZXdfZW52LCBub2RlLmNvZGUsIG91dHB1dCkKKyAgICAgIGlm
IGkgIT0gdXBwZXI6CisgICAgICAgIG91dHB1dC5BcHBlbmQoc2VwKQorICBlbGlmIGlzaW5zdGFu
Y2Uobm9kZSwgUmF3Q29kZU5vZGUpOgorICAgIG91dHB1dC5BcHBlbmQobm9kZS5yYXdfY29kZS52
YWx1ZSkKKyAgZWxpZiBpc2luc3RhbmNlKG5vZGUsIElmTm9kZSk6CisgICAgY29uZCA9IGVudi5F
dmFsRXhwKG5vZGUuZXhwKQorICAgIGlmIGNvbmQ6CisgICAgICBSdW5Db2RlKGVudi5DbG9uZSgp
LCBub2RlLnRoZW5fYnJhbmNoLCBvdXRwdXQpCisgICAgZWxpZiBub2RlLmVsc2VfYnJhbmNoIGlz
IG5vdCBOb25lOgorICAgICAgUnVuQ29kZShlbnYuQ2xvbmUoKSwgbm9kZS5lbHNlX2JyYW5jaCwg
b3V0cHV0KQorICBlbGlmIGlzaW5zdGFuY2Uobm9kZSwgRXhwTm9kZSk6CisgICAgdmFsdWUgPSBl
bnYuRXZhbEV4cChub2RlKQorICAgIG91dHB1dC5BcHBlbmQoJyVzJyAlICh2YWx1ZSwpKQorICBl
bGlmIGlzaW5zdGFuY2Uobm9kZSwgTGl0ZXJhbERvbGxhck5vZGUpOgorICAgIG91dHB1dC5BcHBl
bmQoJyQnKQorICBlbGlmIGlzaW5zdGFuY2Uobm9kZSwgQ29kZU5vZGUpOgorICAgIFJ1bkNvZGUo
ZW52LkNsb25lKCksIG5vZGUsIG91dHB1dCkKKyAgZWxzZToKKyAgICBwcmludCAnQkFEJworICAg
IHByaW50IG5vZGUKKyAgICBzeXMuZXhpdCgxKQorCisKK2RlZiBSdW5Db2RlKGVudiwgY29kZV9u
b2RlLCBvdXRwdXQpOgorICBmb3IgYXRvbWljX2NvZGUgaW4gY29kZV9ub2RlLmF0b21pY19jb2Rl
OgorICAgIFJ1bkF0b21pY0NvZGUoZW52LCBhdG9taWNfY29kZSwgb3V0cHV0KQorCisKK2RlZiBJ
c1NpbmdsZUxpbmVDb21tZW50KGN1cl9saW5lKToKKyAgcmV0dXJuICcvLycgaW4gY3VyX2xpbmUK
KworCitkZWYgSXNJblByZXByb2Nlc3NvckRpcmVjdGl2ZShwcmV2X2xpbmVzLCBjdXJfbGluZSk6
CisgIGlmIGN1cl9saW5lLmxzdHJpcCgpLnN0YXJ0c3dpdGgoJyMnKToKKyAgICByZXR1cm4gVHJ1
ZQorICByZXR1cm4gcHJldl9saW5lcyBhbmQgcHJldl9saW5lc1stMV0uZW5kc3dpdGgoJ1xcJykK
KworCitkZWYgV3JhcENvbW1lbnQobGluZSwgb3V0cHV0KToKKyAgbG9jID0gbGluZS5maW5kKCcv
LycpCisgIGJlZm9yZV9jb21tZW50ID0gbGluZVs6bG9jXS5yc3RyaXAoKQorICBpZiBiZWZvcmVf
Y29tbWVudCA9PSAnJzoKKyAgICBpbmRlbnQgPSBsb2MKKyAgZWxzZToKKyAgICBvdXRwdXQuYXBw
ZW5kKGJlZm9yZV9jb21tZW50KQorICAgIGluZGVudCA9IGxlbihiZWZvcmVfY29tbWVudCkgLSBs
ZW4oYmVmb3JlX2NvbW1lbnQubHN0cmlwKCkpCisgIHByZWZpeCA9IGluZGVudConICcgKyAnLy8g
JworICBtYXhfbGVuID0gODAgLSBsZW4ocHJlZml4KQorICBjb21tZW50ID0gbGluZVtsb2MgKyAy
Ol0uc3RyaXAoKQorICBzZWdzID0gW3NlZyBmb3Igc2VnIGluIHJlLnNwbGl0KHInKFx3K1xXKikn
LCBjb21tZW50KSBpZiBzZWcgIT0gJyddCisgIGN1cl9saW5lID0gJycKKyAgZm9yIHNlZyBpbiBz
ZWdzOgorICAgIGlmIGxlbigoY3VyX2xpbmUgKyBzZWcpLnJzdHJpcCgpKSA8IG1heF9sZW46Cisg
ICAgICBjdXJfbGluZSArPSBzZWcKKyAgICBlbHNlOgorICAgICAgaWYgY3VyX2xpbmUuc3RyaXAo
KSAhPSAnJzoKKyAgICAgICAgb3V0cHV0LmFwcGVuZChwcmVmaXggKyBjdXJfbGluZS5yc3RyaXAo
KSkKKyAgICAgIGN1cl9saW5lID0gc2VnLmxzdHJpcCgpCisgIGlmIGN1cl9saW5lLnN0cmlwKCkg
IT0gJyc6CisgICAgb3V0cHV0LmFwcGVuZChwcmVmaXggKyBjdXJfbGluZS5zdHJpcCgpKQorCisK
K2RlZiBXcmFwQ29kZShsaW5lLCBsaW5lX2NvbmNhdCwgb3V0cHV0KToKKyAgaW5kZW50ID0gbGVu
KGxpbmUpIC0gbGVuKGxpbmUubHN0cmlwKCkpCisgIHByZWZpeCA9IGluZGVudConICcgICMgUHJl
Zml4IG9mIHRoZSBjdXJyZW50IGxpbmUKKyAgbWF4X2xlbiA9IDgwIC0gaW5kZW50IC0gbGVuKGxp
bmVfY29uY2F0KSAgIyBNYXhpbXVtIGxlbmd0aCBvZiB0aGUgY3VycmVudCBsaW5lCisgIG5ld19w
cmVmaXggPSBwcmVmaXggKyA0KicgJyAgIyBQcmVmaXggb2YgYSBjb250aW51YXRpb24gbGluZQor
ICBuZXdfbWF4X2xlbiA9IG1heF9sZW4gLSA0ICAjIE1heGltdW0gbGVuZ3RoIG9mIGEgY29udGlu
dWF0aW9uIGxpbmUKKyAgIyBQcmVmZXJzIHRvIHdyYXAgYSBsaW5lIGFmdGVyIGEgJywnIG9yICc7
Jy4KKyAgc2VncyA9IFtzZWcgZm9yIHNlZyBpbiByZS5zcGxpdChyJyhbXiw7XStbLDtdPyknLCBs
aW5lLnN0cmlwKCkpIGlmIHNlZyAhPSAnJ10KKyAgY3VyX2xpbmUgPSAnJyAgIyBUaGUgY3VycmVu
dCBsaW5lIHdpdGhvdXQgbGVhZGluZyBzcGFjZXMuCisgIGZvciBzZWcgaW4gc2VnczoKKyAgICAj
IElmIHRoZSBsaW5lIGlzIHN0aWxsIHRvbyBsb25nLCB3cmFwIGF0IGEgc3BhY2UuCisgICAgd2hp
bGUgY3VyX2xpbmUgPT0gJycgYW5kIGxlbihzZWcuc3RyaXAoKSkgPiBtYXhfbGVuOgorICAgICAg
c2VnID0gc2VnLmxzdHJpcCgpCisgICAgICBzcGxpdF9hdCA9IHNlZy5yZmluZCgnICcsIDAsIG1h
eF9sZW4pCisgICAgICBvdXRwdXQuYXBwZW5kKHByZWZpeCArIHNlZ1s6c3BsaXRfYXRdLnN0cmlw
KCkgKyBsaW5lX2NvbmNhdCkKKyAgICAgIHNlZyA9IHNlZ1tzcGxpdF9hdCArIDE6XQorICAgICAg
cHJlZml4ID0gbmV3X3ByZWZpeAorICAgICAgbWF4X2xlbiA9IG5ld19tYXhfbGVuCisKKyAgICBp
ZiBsZW4oKGN1cl9saW5lICsgc2VnKS5yc3RyaXAoKSkgPCBtYXhfbGVuOgorICAgICAgY3VyX2xp
bmUgPSAoY3VyX2xpbmUgKyBzZWcpLmxzdHJpcCgpCisgICAgZWxzZToKKyAgICAgIG91dHB1dC5h
cHBlbmQocHJlZml4ICsgY3VyX2xpbmUucnN0cmlwKCkgKyBsaW5lX2NvbmNhdCkKKyAgICAgIHBy
ZWZpeCA9IG5ld19wcmVmaXgKKyAgICAgIG1heF9sZW4gPSBuZXdfbWF4X2xlbgorICAgICAgY3Vy
X2xpbmUgPSBzZWcubHN0cmlwKCkKKyAgaWYgY3VyX2xpbmUuc3RyaXAoKSAhPSAnJzoKKyAgICBv
dXRwdXQuYXBwZW5kKHByZWZpeCArIGN1cl9saW5lLnN0cmlwKCkpCisKKworZGVmIFdyYXBQcmVw
cm9jZXNzb3JEaXJlY3RpdmUobGluZSwgb3V0cHV0KToKKyAgV3JhcENvZGUobGluZSwgJyBcXCcs
IG91dHB1dCkKKworCitkZWYgV3JhcFBsYWluQ29kZShsaW5lLCBvdXRwdXQpOgorICBXcmFwQ29k
ZShsaW5lLCAnJywgb3V0cHV0KQorCisKK2RlZiBJc011bHRpTGluZUlXWVVQcmFnbWEobGluZSk6
CisgIHJldHVybiByZS5zZWFyY2gocicvXCogSVdZVSBwcmFnbWE6ICcsIGxpbmUpCisKKworZGVm
IElzSGVhZGVyR3VhcmRJbmNsdWRlT3JPbmVMaW5lSVdZVVByYWdtYShsaW5lKToKKyAgcmV0dXJu
IChyZS5tYXRjaChyJ14jKGlmbmRlZnxkZWZpbmV8ZW5kaWZccyovLylccypbXHdfXStccyokJywg
bGluZSkgb3IKKyAgICAgICAgICByZS5tYXRjaChyJ14jaW5jbHVkZVxzJywgbGluZSkgb3IKKyAg
ICAgICAgICAjIERvbid0IGJyZWFrIElXWVUgcHJhZ21hcywgZWl0aGVyOyB0aGF0IGNhdXNlcyBp
d3l1LnB5IHByb2JsZW1zLgorICAgICAgICAgIHJlLnNlYXJjaChyJy8vIElXWVUgcHJhZ21hOiAn
LCBsaW5lKSkKKworCitkZWYgV3JhcExvbmdMaW5lKGxpbmUsIG91dHB1dCk6CisgIGxpbmUgPSBs
aW5lLnJzdHJpcCgpCisgIGlmIGxlbihsaW5lKSA8PSA4MDoKKyAgICBvdXRwdXQuYXBwZW5kKGxp
bmUpCisgIGVsaWYgSXNTaW5nbGVMaW5lQ29tbWVudChsaW5lKToKKyAgICBpZiBJc0hlYWRlckd1
YXJkSW5jbHVkZU9yT25lTGluZUlXWVVQcmFnbWEobGluZSk6CisgICAgICAjIFRoZSBzdHlsZSBn
dWlkZSBtYWRlIGFuIGV4Y2VwdGlvbiB0byBhbGxvdyBsb25nIGhlYWRlciBndWFyZCBsaW5lcywK
KyAgICAgICMgaW5jbHVkZXMgYW5kIElXWVUgcHJhZ21hcy4KKyAgICAgIG91dHB1dC5hcHBlbmQo
bGluZSkKKyAgICBlbHNlOgorICAgICAgV3JhcENvbW1lbnQobGluZSwgb3V0cHV0KQorICBlbGlm
IElzSW5QcmVwcm9jZXNzb3JEaXJlY3RpdmUob3V0cHV0LCBsaW5lKToKKyAgICBpZiBJc0hlYWRl
ckd1YXJkSW5jbHVkZU9yT25lTGluZUlXWVVQcmFnbWEobGluZSk6CisgICAgICAjIFRoZSBzdHls
ZSBndWlkZSBtYWRlIGFuIGV4Y2VwdGlvbiB0byBhbGxvdyBsb25nIGhlYWRlciBndWFyZCBsaW5l
cywKKyAgICAgICMgaW5jbHVkZXMgYW5kIElXWVUgcHJhZ21hcy4KKyAgICAgIG91dHB1dC5hcHBl
bmQobGluZSkKKyAgICBlbHNlOgorICAgICAgV3JhcFByZXByb2Nlc3NvckRpcmVjdGl2ZShsaW5l
LCBvdXRwdXQpCisgIGVsaWYgSXNNdWx0aUxpbmVJV1lVUHJhZ21hKGxpbmUpOgorICAgIG91dHB1
dC5hcHBlbmQobGluZSkKKyAgZWxzZToKKyAgICBXcmFwUGxhaW5Db2RlKGxpbmUsIG91dHB1dCkK
KworCitkZWYgQmVhdXRpZnlDb2RlKHN0cmluZyk6CisgIGxpbmVzID0gc3RyaW5nLnNwbGl0bGlu
ZXMoKQorICBvdXRwdXQgPSBbXQorICBmb3IgbGluZSBpbiBsaW5lczoKKyAgICBXcmFwTG9uZ0xp
bmUobGluZSwgb3V0cHV0KQorICBvdXRwdXQyID0gW2xpbmUucnN0cmlwKCkgZm9yIGxpbmUgaW4g
b3V0cHV0XQorICByZXR1cm4gJ1xuJy5qb2luKG91dHB1dDIpICsgJ1xuJworCisKK2RlZiBDb252
ZXJ0RnJvbVB1bXBTb3VyY2Uoc3JjX3RleHQpOgorICAiIiJSZXR1cm4gdGhlIHRleHQgZ2VuZXJh
dGVkIGZyb20gdGhlIGdpdmVuIFB1bXAgc291cmNlIHRleHQuIiIiCisgIGFzdCA9IFBhcnNlVG9B
U1QoU3RyaXBNZXRhQ29tbWVudHMoc3JjX3RleHQpKQorICBvdXRwdXQgPSBPdXRwdXQoKQorICBS
dW5Db2RlKEVudigpLCBhc3QsIG91dHB1dCkKKyAgcmV0dXJuIEJlYXV0aWZ5Q29kZShvdXRwdXQu
c3RyaW5nKQorCisKK2RlZiBtYWluKGFyZ3YpOgorICBpZiBsZW4oYXJndikgPT0gMToKKyAgICBw
cmludCBfX2RvY19fCisgICAgc3lzLmV4aXQoMSkKKworICBmaWxlX3BhdGggPSBhcmd2Wy0xXQor
ICBvdXRwdXRfc3RyID0gQ29udmVydEZyb21QdW1wU291cmNlKGZpbGUoZmlsZV9wYXRoLCAncicp
LnJlYWQoKSkKKyAgaWYgZmlsZV9wYXRoLmVuZHN3aXRoKCcucHVtcCcpOgorICAgIG91dHB1dF9m
aWxlX3BhdGggPSBmaWxlX3BhdGhbOi01XQorICBlbHNlOgorICAgIG91dHB1dF9maWxlX3BhdGgg
PSAnLScKKyAgaWYgb3V0cHV0X2ZpbGVfcGF0aCA9PSAnLSc6CisgICAgcHJpbnQgb3V0cHV0X3N0
ciwKKyAgZWxzZToKKyAgICBvdXRwdXRfZmlsZSA9IGZpbGUob3V0cHV0X2ZpbGVfcGF0aCwgJ3cn
KQorICAgIG91dHB1dF9maWxlLndyaXRlKCcvLyBUaGlzIGZpbGUgd2FzIEdFTkVSQVRFRCBieSBj
b21tYW5kOlxuJykKKyAgICBvdXRwdXRfZmlsZS53cml0ZSgnLy8gICAgICVzICVzXG4nICUKKyAg
ICAgICAgICAgICAgICAgICAgICAob3MucGF0aC5iYXNlbmFtZShfX2ZpbGVfXyksIG9zLnBhdGgu
YmFzZW5hbWUoZmlsZV9wYXRoKSkpCisgICAgb3V0cHV0X2ZpbGUud3JpdGUoJy8vIERPIE5PVCBF
RElUIEJZIEhBTkQhISFcblxuJykKKyAgICBvdXRwdXRfZmlsZS53cml0ZShvdXRwdXRfc3RyKQor
ICAgIG91dHB1dF9maWxlLmNsb3NlKCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgor
ICBtYWluKHN5cy5hcmd2KQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2NyaXB0cy9yZWxlYXNl
X2RvY3MucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zY3JpcHRzL3JlbGVhc2VfZG9jcy5weQpuZXcgZmlsZSBt
b2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xMjkxMzQ3ZjY3NGFmZDdhZjg0OTYxNWE3NWIxMzhkNTI5M2Y5Y2Y0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZXRlc3Qvc2NyaXB0cy9yZWxlYXNlX2RvY3MucHkKQEAgLTAsMCArMSwxNTgg
QEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAxMyBHb29nbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
IyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiU2NyaXB0IGZv
ciBicmFuY2hpbmcgR29vZ2xlIFRlc3QvTW9jayB3aWtpIHBhZ2VzIGZvciBhIG5ldyB2ZXJzaW9u
LgorCitTWU5PUFNJUworICAgICAgIHJlbGVhc2VfZG9jcy5weSBORVdfUkVMRUFTRV9WRVJTSU9O
CisKKyAgICAgICBHb29nbGUgVGVzdCBhbmQgR29vZ2xlIE1vY2sncyBleHRlcm5hbCB1c2VyIGRv
Y3VtZW50YXRpb24gaXMgaW4KKyAgICAgICBpbnRlcmxpbmtlZCB3aWtpIGZpbGVzLiAgV2hlbiB3
ZSByZWxlYXNlIGEgbmV3IHZlcnNpb24gb2YKKyAgICAgICBHb29nbGUgVGVzdCBvciBHb29nbGUg
TW9jaywgd2UgbmVlZCB0byBicmFuY2ggdGhlIHdpa2kgZmlsZXMKKyAgICAgICBzdWNoIHRoYXQg
dXNlcnMgb2YgYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIEdvb2dsZSBUZXN0L01vY2sgY2FuCisgICAg
ICAgbG9vayB1cCBkb2N1bWVuYXRpb24gcmVsZXZhbnQgZm9yIHRoYXQgdmVyc2lvbi4gIFRoaXMg
c2NyaXB0CisgICAgICAgYXV0b21hdGVzIHRoYXQgcHJvY2VzcyBieToKKworICAgICAgICAgLSBi
cmFuY2hpbmcgdGhlIGN1cnJlbnQgd2lraSBwYWdlcyAod2hpY2ggZG9jdW1lbnQgdGhlCisgICAg
ICAgICAgIGJlaGF2aW9yIG9mIHRoZSBTVk4gdHJ1bmsgaGVhZCkgdG8gcGFnZXMgZm9yIHRoZSBz
cGVjaWZpZWQKKyAgICAgICAgICAgdmVyc2lvbiAoZS5nLiBicmFuY2hpbmcgRkFRLndpa2kgdG8g
VjJfNl9GQVEud2lraSB3aGVuCisgICAgICAgICAgIE5FV19SRUxFQVNFX1ZFUlNJT04gaXMgMi42
KTsKKyAgICAgICAgIC0gdXBkYXRpbmcgdGhlIGxpbmtzIGluIHRoZSBicmFuY2hlZCBmaWxlcyB0
byBwb2ludCB0byB0aGUgYnJhbmNoZWQKKyAgICAgICAgICAgdmVyc2lvbiAoZS5nLiBhIGxpbmsg
aW4gVjJfNl9GQVEud2lraSB0aGF0IHBvaW50ZWQgdG8KKyAgICAgICAgICAgUHJpbWVyLndpa2kj
QW5jaG9yIHdpbGwgbm93IHBvaW50IHRvIFYyXzZfUHJpbWVyLndpa2kjQW5jaG9yKS4KKworICAg
ICAgIE5PVEU6IE5FV19SRUxFQVNFX1ZFUlNJT04gbXVzdCBiZSBhIE5FVyB2ZXJzaW9uIG51bWJl
ciBmb3IKKyAgICAgICB3aGljaCB0aGUgd2lraSBwYWdlcyBkb24ndCB5ZXQgZXhpc3Q7IG90aGVy
d2lzZSB5b3UnbGwgZ2V0IFNWTgorICAgICAgIGVycm9ycyBsaWtlICJzdm46IFBhdGggJ1YxXzdf
UHVtcE1hbnVhbC53aWtpJyBpcyBub3QgYQorICAgICAgIGRpcmVjdG9yeSIgd2hlbiBydW5uaW5n
IHRoZSBzY3JpcHQuCisKK0VYQU1QTEUKKyAgICAgICAkIGNkIFBBVEgvVE8vR1RFU1RfU1ZOX1dP
UktTUEFDRS90cnVuaworICAgICAgICQgc2NyaXB0cy9yZWxlYXNlX2RvY3MucHkgMi42ICAjIGNy
ZWF0ZSB3aWtpIHBhZ2VzIGZvciB2Mi42CisgICAgICAgJCBzdm4gc3RhdHVzICAgICAgICAgICAg
ICAgICAgICMgdmVyaWZ5IHRoZSBmaWxlIGxpc3QKKyAgICAgICAkIHN2biBkaWZmICAgICAgICAg
ICAgICAgICAgICAgIyB2ZXJpZnkgdGhlIGZpbGUgY29udGVudHMKKyAgICAgICAkIHN2biBjb21t
aXQgLW0gInJlbGVhc2Ugd2lraSBwYWdlcyBmb3IgdjIuNiIKKyIiIgorCitfX2F1dGhvcl9fID0g
J3dhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pJworCitpbXBvcnQgb3MKK2ltcG9ydCByZQor
aW1wb3J0IHN5cworCitpbXBvcnQgY29tbW9uCisKKworIyBXaWtpIHBhZ2VzIHRoYXQgc2hvdWxk
bid0IGJlIGJyYW5jaGVkIGZvciBldmVyeSBndGVzdC9nbW9jayByZWxlYXNlLgorR1RFU1RfVU5W
RVJTSU9ORURfV0lLSVMgPSBbJ0Rldkd1aWRlLndpa2knXQorR01PQ0tfVU5WRVJTSU9ORURfV0lL
SVMgPSBbCisgICAgJ0Rlc2lnbkRvYy53aWtpJywKKyAgICAnRGV2R3VpZGUud2lraScsCisgICAg
J0tub3duSXNzdWVzLndpa2knCisgICAgXQorCisKK2RlZiBEcm9wV2lraVN1ZmZpeCh3aWtpX2Zp
bGVuYW1lKToKKyAgIiIiUmVtb3ZlcyB0aGUgLndpa2kgc3VmZml4IChpZiBhbnkpIGZyb20gdGhl
IGdpdmVuIGZpbGVuYW1lLiIiIgorCisgIHJldHVybiAod2lraV9maWxlbmFtZVs6LWxlbignLndp
a2knKV0gaWYgd2lraV9maWxlbmFtZS5lbmRzd2l0aCgnLndpa2knKQorICAgICAgICAgIGVsc2Ug
d2lraV9maWxlbmFtZSkKKworCitjbGFzcyBXaWtpQnJhbmNoZXIob2JqZWN0KToKKyAgIiIiQnJh
bmNoZXMgLi4uIiIiCisKKyAgZGVmIF9faW5pdF9fKHNlbGYsIGRvdF92ZXJzaW9uKToKKyAgICBz
ZWxmLnByb2plY3QsIHN2bl9yb290X3BhdGggPSBjb21tb24uR2V0U3ZuSW5mbygpCisgICAgaWYg
c2VsZi5wcm9qZWN0IG5vdCBpbiAoJ2dvb2dsZXRlc3QnLCAnZ29vZ2xlbW9jaycpOgorICAgICAg
c3lzLmV4aXQoJ1RoaXMgc2NyaXB0IG11c3QgYmUgcnVuIGluIGEgZ3Rlc3Qgb3IgZ21vY2sgU1ZO
IHdvcmtzcGFjZS4nKQorICAgIHNlbGYud2lraV9kaXIgPSBzdm5fcm9vdF9wYXRoICsgJy93aWtp
JworICAgICMgVHVybiAnMi42JyB0byAnVjJfNl8nLgorICAgIHNlbGYudmVyc2lvbl9wcmVmaXgg
PSAnVicgKyBkb3RfdmVyc2lvbi5yZXBsYWNlKCcuJywgJ18nKSArICdfJworICAgIHNlbGYuZmls
ZXNfdG9fYnJhbmNoID0gc2VsZi5HZXRGaWxlc1RvQnJhbmNoKCkKKyAgICBwYWdlX25hbWVzID0g
W0Ryb3BXaWtpU3VmZml4KGYpIGZvciBmIGluIHNlbGYuZmlsZXNfdG9fYnJhbmNoXQorICAgICMg
QSBsaW5rIHRvIEZvby53aWtpIGlzIGluIG9uZSBvZiB0aGUgZm9sbG93aW5nIGZvcm1zOgorICAg
ICMgICBbRm9vIHdvcmRzXQorICAgICMgICBbRm9vI0FuY2hvciB3b3Jkc10KKyAgICAjICAgW2h0
dHA6Ly9jb2RlLmdvb2dsZS5jb20vLi4uL3dpa2kvRm9vIHdvcmRzXQorICAgICMgICBbaHR0cDov
L2NvZGUuZ29vZ2xlLmNvbS8uLi4vd2lraS9Gb28jQW5jaG9yIHdvcmRzXQorICAgICMgV2Ugd2Fu
dCB0byByZXBsYWNlICdGb28nIHdpdGggJ1YyXzZfRm9vJyBpbiB0aGUgYWJvdmUgY2FzZXMuCisg
ICAgc2VsZi5zZWFyY2hfZm9yX3JlID0gcmUuY29tcGlsZSgKKyAgICAgICAgIyBUaGlzIHJlZ2V4
IG1hdGNoZXMgZWl0aGVyCisgICAgICAgICMgICBbRm9vCisgICAgICAgICMgb3IKKyAgICAgICAg
IyAgIC93aWtpL0ZvbworICAgICAgICAjIGZvbGxvd2VkIGJ5IGEgc3BhY2Ugb3IgYSAjLCB3aGVy
ZSBGb28gaXMgdGhlIG5hbWUgb2YgYW4KKyAgICAgICAgIyB1bnZlcnNpb25lZCB3aWtpIHBhZ2Uu
CisgICAgICAgIHInKFxbfC93aWtpLykoJXMpKFsgI10pJyAlICd8Jy5qb2luKHBhZ2VfbmFtZXMp
KQorICAgIHNlbGYucmVwbGFjZV93aXRoID0gcidcMSVzXDJcMycgJSAoc2VsZi52ZXJzaW9uX3By
ZWZpeCwpCisKKyAgZGVmIEdldEZpbGVzVG9CcmFuY2goc2VsZik6CisgICAgIiIiUmV0dXJucyBh
IGxpc3Qgb2YgLndpa2kgZmlsZSBuYW1lcyB0aGF0IG5lZWQgdG8gYmUgYnJhbmNoZWQuIiIiCisK
KyAgICB1bnZlcnNpb25lZF93aWtpcyA9IChHVEVTVF9VTlZFUlNJT05FRF9XSUtJUyBpZiBzZWxm
LnByb2plY3QgPT0gJ2dvb2dsZXRlc3QnCisgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBH
TU9DS19VTlZFUlNJT05FRF9XSUtJUykKKyAgICByZXR1cm4gW2YgZm9yIGYgaW4gb3MubGlzdGRp
cihzZWxmLndpa2lfZGlyKQorICAgICAgICAgICAgaWYgKGYuZW5kc3dpdGgoJy53aWtpJykgYW5k
CisgICAgICAgICAgICAgICAgbm90IHJlLm1hdGNoKHInXlZcZCcsIGYpIGFuZCAgIyBFeGNsdWRl
ZCB2ZXJzaW9uZWQgLndpa2kgZmlsZXMuCisgICAgICAgICAgICAgICAgZiBub3QgaW4gdW52ZXJz
aW9uZWRfd2lraXMpXQorCisgIGRlZiBCcmFuY2hGaWxlcyhzZWxmKToKKyAgICAiIiJCcmFuY2hl
cyB0aGUgLndpa2kgZmlsZXMgbmVlZGVkIHRvIGJlIGJyYW5jaGVkLiIiIgorCisgICAgcHJpbnQg
J0JyYW5jaGluZyAlZCAud2lraSBmaWxlczonICUgKGxlbihzZWxmLmZpbGVzX3RvX2JyYW5jaCks
KQorICAgIG9zLmNoZGlyKHNlbGYud2lraV9kaXIpCisgICAgZm9yIGYgaW4gc2VsZi5maWxlc190
b19icmFuY2g6CisgICAgICBjb21tYW5kID0gJ3N2biBjcCAlcyAlcyVzJyAlIChmLCBzZWxmLnZl
cnNpb25fcHJlZml4LCBmKQorICAgICAgcHJpbnQgY29tbWFuZAorICAgICAgb3Muc3lzdGVtKGNv
bW1hbmQpCisKKyAgZGVmIFVwZGF0ZUxpbmtzSW5CcmFuY2hlZEZpbGVzKHNlbGYpOgorCisgICAg
Zm9yIGYgaW4gc2VsZi5maWxlc190b19icmFuY2g6CisgICAgICBzb3VyY2VfZmlsZSA9IG9zLnBh
dGguam9pbihzZWxmLndpa2lfZGlyLCBmKQorICAgICAgdmVyc2lvbmVkX2ZpbGUgPSBvcy5wYXRo
LmpvaW4oc2VsZi53aWtpX2Rpciwgc2VsZi52ZXJzaW9uX3ByZWZpeCArIGYpCisgICAgICBwcmlu
dCAnVXBkYXRpbmcgbGlua3MgaW4gJXMuJyAlICh2ZXJzaW9uZWRfZmlsZSwpCisgICAgICB0ZXh0
ID0gZmlsZShzb3VyY2VfZmlsZSwgJ3InKS5yZWFkKCkKKyAgICAgIG5ld190ZXh0ID0gc2VsZi5z
ZWFyY2hfZm9yX3JlLnN1YihzZWxmLnJlcGxhY2Vfd2l0aCwgdGV4dCkKKyAgICAgIGZpbGUodmVy
c2lvbmVkX2ZpbGUsICd3Jykud3JpdGUobmV3X3RleHQpCisKKworZGVmIG1haW4oKToKKyAgaWYg
bGVuKHN5cy5hcmd2KSAhPSAyOgorICAgIHN5cy5leGl0KF9fZG9jX18pCisKKyAgYnJhbmNoZXIg
PSBXaWtpQnJhbmNoZXIoc3lzLmFyZ3ZbMV0pCisgIGJyYW5jaGVyLkJyYW5jaEZpbGVzKCkKKyAg
YnJhbmNoZXIuVXBkYXRlTGlua3NJbkJyYW5jaGVkRmlsZXMoKQorCisKK2lmIF9fbmFtZV9fID09
ICdfX21haW5fXyc6CisgIG1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2NyaXB0cy90
ZXN0L01ha2VmaWxlIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2NyaXB0cy90ZXN0L01ha2VmaWxlCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmNkZmY1ODQ2MzdiN2E2ZTlkZjFmYTQzY2U4ZjU4OGM0MzgxNWU1NjEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xldGVzdC9zY3JpcHRzL3Rlc3QvTWFrZWZpbGUKQEAgLTAsMCArMSw1OSBA
QAorIyBBIE1ha2VmaWxlIGZvciBmdXNpbmcgR29vZ2xlIFRlc3QgYW5kIGJ1aWxkaW5nIGEgc2Ft
cGxlIHRlc3QgYWdhaW5zdCBpdC4KKyMKKyMgU1lOT1BTSVM6CisjCisjICAgbWFrZSBbYWxsXSAg
LSBtYWtlcyBldmVyeXRoaW5nLgorIyAgIG1ha2UgVEFSR0VUIC0gbWFrZXMgdGhlIGdpdmVuIHRh
cmdldC4KKyMgICBtYWtlIGNoZWNrICAtIG1ha2VzIGV2ZXJ5dGhpbmcgYW5kIHJ1bnMgdGhlIGJ1
aWx0IHNhbXBsZSB0ZXN0LgorIyAgIG1ha2UgY2xlYW4gIC0gcmVtb3ZlcyBhbGwgZmlsZXMgZ2Vu
ZXJhdGVkIGJ5IG1ha2UuCisKKyMgUG9pbnRzIHRvIHRoZSByb290IG9mIGZ1c2VkIEdvb2dsZSBU
ZXN0LCByZWxhdGl2ZSB0byB3aGVyZSB0aGlzIGZpbGUgaXMuCitGVVNFRF9HVEVTVF9ESVIgPSBv
dXRwdXQKKworIyBQYXRocyB0byB0aGUgZnVzZWQgZ3Rlc3QgZmlsZXMuCitGVVNFRF9HVEVTVF9I
ID0gJChGVVNFRF9HVEVTVF9ESVIpL2d0ZXN0L2d0ZXN0LmgKK0ZVU0VEX0dURVNUX0FMTF9DQyA9
ICQoRlVTRURfR1RFU1RfRElSKS9ndGVzdC9ndGVzdC1hbGwuY2MKKworIyBXaGVyZSB0byBmaW5k
IHRoZSBzYW1wbGUgdGVzdC4KK1NBTVBMRV9ESVIgPSAuLi8uLi9zYW1wbGVzCisKKyMgV2hlcmUg
dG8gZmluZCBndGVzdF9tYWluLmNjLgorR1RFU1RfTUFJTl9DQyA9IC4uLy4uL3NyYy9ndGVzdF9t
YWluLmNjCisKKyMgRmxhZ3MgcGFzc2VkIHRvIHRoZSBwcmVwcm9jZXNzb3IuCisjIFdlIGhhdmUg
bm8gaWRlYSBoZXJlIHdoZXRoZXIgcHRocmVhZHMgaXMgYXZhaWxhYmxlIGluIHRoZSBzeXN0ZW0s
IHNvCisjIGRpc2FibGUgaXRzIHVzZS4KK0NQUEZMQUdTICs9IC1JJChGVVNFRF9HVEVTVF9ESVIp
IC1ER1RFU1RfSEFTX1BUSFJFQUQ9MAorCisjIEZsYWdzIHBhc3NlZCB0byB0aGUgQysrIGNvbXBp
bGVyLgorQ1hYRkxBR1MgKz0gLWcKKworYWxsIDogc2FtcGxlMV91bml0dGVzdAorCitjaGVjayA6
IGFsbAorCS4vc2FtcGxlMV91bml0dGVzdAorCitjbGVhbiA6CisJcm0gLXJmICQoRlVTRURfR1RF
U1RfRElSKSBzYW1wbGUxX3VuaXR0ZXN0ICoubworCiskKEZVU0VEX0dURVNUX0gpIDoKKwkuLi9m
dXNlX2d0ZXN0X2ZpbGVzLnB5ICQoRlVTRURfR1RFU1RfRElSKQorCiskKEZVU0VEX0dURVNUX0FM
TF9DQykgOgorCS4uL2Z1c2VfZ3Rlc3RfZmlsZXMucHkgJChGVVNFRF9HVEVTVF9ESVIpCisKK2d0
ZXN0LWFsbC5vIDogJChGVVNFRF9HVEVTVF9IKSAkKEZVU0VEX0dURVNUX0FMTF9DQykKKwkkKENY
WCkgJChDUFBGTEFHUykgJChDWFhGTEFHUykgLWMgJChGVVNFRF9HVEVTVF9ESVIpL2d0ZXN0L2d0
ZXN0LWFsbC5jYworCitndGVzdF9tYWluLm8gOiAkKEZVU0VEX0dURVNUX0gpICQoR1RFU1RfTUFJ
Tl9DQykKKwkkKENYWCkgJChDUFBGTEFHUykgJChDWFhGTEFHUykgLWMgJChHVEVTVF9NQUlOX0ND
KQorCitzYW1wbGUxLm8gOiAkKFNBTVBMRV9ESVIpL3NhbXBsZTEuY2MgJChTQU1QTEVfRElSKS9z
YW1wbGUxLmgKKwkkKENYWCkgJChDUFBGTEFHUykgJChDWFhGTEFHUykgLWMgJChTQU1QTEVfRElS
KS9zYW1wbGUxLmNjCisKK3NhbXBsZTFfdW5pdHRlc3QubyA6ICQoU0FNUExFX0RJUikvc2FtcGxl
MV91bml0dGVzdC5jYyBcCisgICAgICAgICAgICAgICAgICAgICAkKFNBTVBMRV9ESVIpL3NhbXBs
ZTEuaCAkKEZVU0VEX0dURVNUX0gpCisJJChDWFgpICQoQ1BQRkxBR1MpICQoQ1hYRkxBR1MpIC1j
ICQoU0FNUExFX0RJUikvc2FtcGxlMV91bml0dGVzdC5jYworCitzYW1wbGUxX3VuaXR0ZXN0IDog
c2FtcGxlMS5vIHNhbXBsZTFfdW5pdHRlc3QubyBndGVzdC1hbGwubyBndGVzdF9tYWluLm8KKwkk
KENYWCkgJChDUFBGTEFHUykgJChDWFhGTEFHUykgJF4gLW8gJEAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGV0ZXN0L3NjcmlwdHMvdXBsb2FkLnB5IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2NyaXB0cy91cGxvYWQucHkK
bmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU2ZjlhMTQ3MTllZjhjOWZkYjYwM2FkNTBiZGQzNWRjNzk5NmUyZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NjcmlwdHMvdXBsb2FkLnB5CkBAIC0wLDAgKzEs
MTM4NyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDA3IEdvb2ds
ZSBJbmMuCisjCisjIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpOworIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisjIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAorIworIyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisjCisjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExp
Y2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyMgV0lUSE9VVCBXQVJS
QU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxp
ZWQuCisjIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmlu
ZyBwZXJtaXNzaW9ucyBhbmQKKyMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyIi
IlRvb2wgZm9yIHVwbG9hZGluZyBkaWZmcyBmcm9tIGEgdmVyc2lvbiBjb250cm9sIHN5c3RlbSB0
byB0aGUgY29kZXJldmlldyBhcHAuCisKK1VzYWdlIHN1bW1hcnk6IHVwbG9hZC5weSBbb3B0aW9u
c10gWy0tIGRpZmZfb3B0aW9uc10KKworRGlmZiBvcHRpb25zIGFyZSBwYXNzZWQgdG8gdGhlIGRp
ZmYgY29tbWFuZCBvZiB0aGUgdW5kZXJseWluZyBzeXN0ZW0uCisKK1N1cHBvcnRlZCB2ZXJzaW9u
IGNvbnRyb2wgc3lzdGVtczoKKyAgR2l0CisgIE1lcmN1cmlhbAorICBTdWJ2ZXJzaW9uCisKK0l0
IGlzIGltcG9ydGFudCBmb3IgR2l0L01lcmN1cmlhbCB1c2VycyB0byBzcGVjaWZ5IGEgdHJlZS9u
b2RlL2JyYW5jaCB0byBkaWZmCithZ2FpbnN0IGJ5IHVzaW5nIHRoZSAnLS1yZXYnIG9wdGlvbi4K
KyIiIgorIyBUaGlzIGNvZGUgaXMgZGVyaXZlZCBmcm9tIGFwcGNmZy5weSBpbiB0aGUgQXBwIEVu
Z2luZSBTREsgKG9wZW4gc291cmNlKSwKKyMgYW5kIGZyb20gQVNQTiByZWNpcGUgIzE0NjMwNi4K
KworaW1wb3J0IGNvb2tpZWxpYgoraW1wb3J0IGdldHBhc3MKK2ltcG9ydCBsb2dnaW5nCitpbXBv
cnQgbWQ1CitpbXBvcnQgbWltZXR5cGVzCitpbXBvcnQgb3B0cGFyc2UKK2ltcG9ydCBvcworaW1w
b3J0IHJlCitpbXBvcnQgc29ja2V0CitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworaW1w
b3J0IHVybGxpYgoraW1wb3J0IHVybGxpYjIKK2ltcG9ydCB1cmxwYXJzZQorCit0cnk6CisgIGlt
cG9ydCByZWFkbGluZQorZXhjZXB0IEltcG9ydEVycm9yOgorICBwYXNzCisKKyMgVGhlIGxvZ2dp
bmcgdmVyYm9zaXR5OgorIyAgMDogRXJyb3JzIG9ubHkuCisjICAxOiBTdGF0dXMgbWVzc2FnZXMu
CisjICAyOiBJbmZvIGxvZ3MuCisjICAzOiBEZWJ1ZyBsb2dzLgordmVyYm9zaXR5ID0gMQorCisj
IE1heCBzaXplIG9mIHBhdGNoIG9yIGJhc2UgZmlsZS4KK01BWF9VUExPQURfU0laRSA9IDkwMCAq
IDEwMjQKKworCitkZWYgR2V0RW1haWwocHJvbXB0KToKKyAgIiIiUHJvbXB0cyB0aGUgdXNlciBm
b3IgdGhlaXIgZW1haWwgYWRkcmVzcyBhbmQgcmV0dXJucyBpdC4KKworICBUaGUgbGFzdCB1c2Vk
IGVtYWlsIGFkZHJlc3MgaXMgc2F2ZWQgdG8gYSBmaWxlIGFuZCBvZmZlcmVkIHVwIGFzIGEgc3Vn
Z2VzdGlvbgorICB0byB0aGUgdXNlci4gSWYgdGhlIHVzZXIgcHJlc3NlcyBlbnRlciB3aXRob3V0
IHR5cGluZyBpbiBhbnl0aGluZyB0aGUgbGFzdAorICB1c2VkIGVtYWlsIGFkZHJlc3MgaXMgdXNl
ZC4gSWYgdGhlIHVzZXIgZW50ZXJzIGEgbmV3IGFkZHJlc3MsIGl0IGlzIHNhdmVkCisgIGZvciBu
ZXh0IHRpbWUgd2UgcHJvbXB0LgorCisgICIiIgorICBsYXN0X2VtYWlsX2ZpbGVfbmFtZSA9IG9z
LnBhdGguZXhwYW5kdXNlcigifi8ubGFzdF9jb2RlcmV2aWV3X2VtYWlsX2FkZHJlc3MiKQorICBs
YXN0X2VtYWlsID0gIiIKKyAgaWYgb3MucGF0aC5leGlzdHMobGFzdF9lbWFpbF9maWxlX25hbWUp
OgorICAgIHRyeToKKyAgICAgIGxhc3RfZW1haWxfZmlsZSA9IG9wZW4obGFzdF9lbWFpbF9maWxl
X25hbWUsICJyIikKKyAgICAgIGxhc3RfZW1haWwgPSBsYXN0X2VtYWlsX2ZpbGUucmVhZGxpbmUo
KS5zdHJpcCgiXG4iKQorICAgICAgbGFzdF9lbWFpbF9maWxlLmNsb3NlKCkKKyAgICAgIHByb21w
dCArPSAiIFslc10iICUgbGFzdF9lbWFpbAorICAgIGV4Y2VwdCBJT0Vycm9yLCBlOgorICAgICAg
cGFzcworICBlbWFpbCA9IHJhd19pbnB1dChwcm9tcHQgKyAiOiAiKS5zdHJpcCgpCisgIGlmIGVt
YWlsOgorICAgIHRyeToKKyAgICAgIGxhc3RfZW1haWxfZmlsZSA9IG9wZW4obGFzdF9lbWFpbF9m
aWxlX25hbWUsICJ3IikKKyAgICAgIGxhc3RfZW1haWxfZmlsZS53cml0ZShlbWFpbCkKKyAgICAg
IGxhc3RfZW1haWxfZmlsZS5jbG9zZSgpCisgICAgZXhjZXB0IElPRXJyb3IsIGU6CisgICAgICBw
YXNzCisgIGVsc2U6CisgICAgZW1haWwgPSBsYXN0X2VtYWlsCisgIHJldHVybiBlbWFpbAorCisK
K2RlZiBTdGF0dXNVcGRhdGUobXNnKToKKyAgIiIiUHJpbnQgYSBzdGF0dXMgbWVzc2FnZSB0byBz
dGRvdXQuCisKKyAgSWYgJ3ZlcmJvc2l0eScgaXMgZ3JlYXRlciB0aGFuIDAsIHByaW50IHRoZSBt
ZXNzYWdlLgorCisgIEFyZ3M6CisgICAgbXNnOiBUaGUgc3RyaW5nIHRvIHByaW50LgorICAiIiIK
KyAgaWYgdmVyYm9zaXR5ID4gMDoKKyAgICBwcmludCBtc2cKKworCitkZWYgRXJyb3JFeGl0KG1z
Zyk6CisgICIiIlByaW50IGFuIGVycm9yIG1lc3NhZ2UgdG8gc3RkZXJyIGFuZCBleGl0LiIiIgor
ICBwcmludCA+PnN5cy5zdGRlcnIsIG1zZworICBzeXMuZXhpdCgxKQorCisKK2NsYXNzIENsaWVu
dExvZ2luRXJyb3IodXJsbGliMi5IVFRQRXJyb3IpOgorICAiIiJSYWlzZWQgdG8gaW5kaWNhdGUg
dGhlcmUgd2FzIGFuIGVycm9yIGF1dGhlbnRpY2F0aW5nIHdpdGggQ2xpZW50TG9naW4uIiIiCisK
KyAgZGVmIF9faW5pdF9fKHNlbGYsIHVybCwgY29kZSwgbXNnLCBoZWFkZXJzLCBhcmdzKToKKyAg
ICB1cmxsaWIyLkhUVFBFcnJvci5fX2luaXRfXyhzZWxmLCB1cmwsIGNvZGUsIG1zZywgaGVhZGVy
cywgTm9uZSkKKyAgICBzZWxmLmFyZ3MgPSBhcmdzCisgICAgc2VsZi5yZWFzb24gPSBhcmdzWyJF
cnJvciJdCisKKworY2xhc3MgQWJzdHJhY3RScGNTZXJ2ZXIob2JqZWN0KToKKyAgIiIiUHJvdmlk
ZXMgYSBjb21tb24gaW50ZXJmYWNlIGZvciBhIHNpbXBsZSBSUEMgc2VydmVyLiIiIgorCisgIGRl
ZiBfX2luaXRfXyhzZWxmLCBob3N0LCBhdXRoX2Z1bmN0aW9uLCBob3N0X292ZXJyaWRlPU5vbmUs
IGV4dHJhX2hlYWRlcnM9e30sCisgICAgICAgICAgICAgICBzYXZlX2Nvb2tpZXM9RmFsc2UpOgor
ICAgICIiIkNyZWF0ZXMgYSBuZXcgSHR0cFJwY1NlcnZlci4KKworICAgIEFyZ3M6CisgICAgICBo
b3N0OiBUaGUgaG9zdCB0byBzZW5kIHJlcXVlc3RzIHRvLgorICAgICAgYXV0aF9mdW5jdGlvbjog
QSBmdW5jdGlvbiB0aGF0IHRha2VzIG5vIGFyZ3VtZW50cyBhbmQgcmV0dXJucyBhbgorICAgICAg
ICAoZW1haWwsIHBhc3N3b3JkKSB0dXBsZSB3aGVuIGNhbGxlZC4gV2lsbCBiZSBjYWxsZWQgaWYg
YXV0aGVudGljYXRpb24KKyAgICAgICAgaXMgcmVxdWlyZWQuCisgICAgICBob3N0X292ZXJyaWRl
OiBUaGUgaG9zdCBoZWFkZXIgdG8gc2VuZCB0byB0aGUgc2VydmVyIChkZWZhdWx0cyB0byBob3N0
KS4KKyAgICAgIGV4dHJhX2hlYWRlcnM6IEEgZGljdCBvZiBleHRyYSBoZWFkZXJzIHRvIGFwcGVu
ZCB0byBldmVyeSByZXF1ZXN0LgorICAgICAgc2F2ZV9jb29raWVzOiBJZiBUcnVlLCBzYXZlIHRo
ZSBhdXRoZW50aWNhdGlvbiBjb29raWVzIHRvIGxvY2FsIGRpc2suCisgICAgICAgIElmIEZhbHNl
LCB1c2UgYW4gaW4tbWVtb3J5IGNvb2tpZWphciBpbnN0ZWFkLiAgU3ViY2xhc3NlcyBtdXN0Cisg
ICAgICAgIGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uYWxpdHkuICBEZWZhdWx0cyB0byBGYWxzZS4K
KyAgICAiIiIKKyAgICBzZWxmLmhvc3QgPSBob3N0CisgICAgc2VsZi5ob3N0X292ZXJyaWRlID0g
aG9zdF9vdmVycmlkZQorICAgIHNlbGYuYXV0aF9mdW5jdGlvbiA9IGF1dGhfZnVuY3Rpb24KKyAg
ICBzZWxmLmF1dGhlbnRpY2F0ZWQgPSBGYWxzZQorICAgIHNlbGYuZXh0cmFfaGVhZGVycyA9IGV4
dHJhX2hlYWRlcnMKKyAgICBzZWxmLnNhdmVfY29va2llcyA9IHNhdmVfY29va2llcworICAgIHNl
bGYub3BlbmVyID0gc2VsZi5fR2V0T3BlbmVyKCkKKyAgICBpZiBzZWxmLmhvc3Rfb3ZlcnJpZGU6
CisgICAgICBsb2dnaW5nLmluZm8oIlNlcnZlcjogJXM7IEhvc3Q6ICVzIiwgc2VsZi5ob3N0LCBz
ZWxmLmhvc3Rfb3ZlcnJpZGUpCisgICAgZWxzZToKKyAgICAgIGxvZ2dpbmcuaW5mbygiU2VydmVy
OiAlcyIsIHNlbGYuaG9zdCkKKworICBkZWYgX0dldE9wZW5lcihzZWxmKToKKyAgICAiIiJSZXR1
cm5zIGFuIE9wZW5lckRpcmVjdG9yIGZvciBtYWtpbmcgSFRUUCByZXF1ZXN0cy4KKworICAgIFJl
dHVybnM6CisgICAgICBBIHVybGxpYjIuT3BlbmVyRGlyZWN0b3Igb2JqZWN0LgorICAgICIiIgor
ICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoKQorCisgIGRlZiBfQ3JlYXRlUmVxdWVzdChz
ZWxmLCB1cmwsIGRhdGE9Tm9uZSk6CisgICAgIiIiQ3JlYXRlcyBhIG5ldyB1cmxsaWIgcmVxdWVz
dC4iIiIKKyAgICBsb2dnaW5nLmRlYnVnKCJDcmVhdGluZyByZXF1ZXN0IGZvcjogJyVzJyB3aXRo
IHBheWxvYWQ6XG4lcyIsIHVybCwgZGF0YSkKKyAgICByZXEgPSB1cmxsaWIyLlJlcXVlc3QodXJs
LCBkYXRhPWRhdGEpCisgICAgaWYgc2VsZi5ob3N0X292ZXJyaWRlOgorICAgICAgcmVxLmFkZF9o
ZWFkZXIoIkhvc3QiLCBzZWxmLmhvc3Rfb3ZlcnJpZGUpCisgICAgZm9yIGtleSwgdmFsdWUgaW4g
c2VsZi5leHRyYV9oZWFkZXJzLml0ZXJpdGVtcygpOgorICAgICAgcmVxLmFkZF9oZWFkZXIoa2V5
LCB2YWx1ZSkKKyAgICByZXR1cm4gcmVxCisKKyAgZGVmIF9HZXRBdXRoVG9rZW4oc2VsZiwgZW1h
aWwsIHBhc3N3b3JkKToKKyAgICAiIiJVc2VzIENsaWVudExvZ2luIHRvIGF1dGhlbnRpY2F0ZSB0
aGUgdXNlciwgcmV0dXJuaW5nIGFuIGF1dGggdG9rZW4uCisKKyAgICBBcmdzOgorICAgICAgZW1h
aWw6ICAgIFRoZSB1c2VyJ3MgZW1haWwgYWRkcmVzcworICAgICAgcGFzc3dvcmQ6IFRoZSB1c2Vy
J3MgcGFzc3dvcmQKKworICAgIFJhaXNlczoKKyAgICAgIENsaWVudExvZ2luRXJyb3I6IElmIHRo
ZXJlIHdhcyBhbiBlcnJvciBhdXRoZW50aWNhdGluZyB3aXRoIENsaWVudExvZ2luLgorICAgICAg
SFRUUEVycm9yOiBJZiB0aGVyZSB3YXMgc29tZSBvdGhlciBmb3JtIG9mIEhUVFAgZXJyb3IuCisK
KyAgICBSZXR1cm5zOgorICAgICAgVGhlIGF1dGhlbnRpY2F0aW9uIHRva2VuIHJldHVybmVkIGJ5
IENsaWVudExvZ2luLgorICAgICIiIgorICAgIGFjY291bnRfdHlwZSA9ICJHT09HTEUiCisgICAg
aWYgc2VsZi5ob3N0LmVuZHN3aXRoKCIuZ29vZ2xlLmNvbSIpOgorICAgICAgIyBOZWVkZWQgZm9y
IHVzZSBpbnNpZGUgR29vZ2xlLgorICAgICAgYWNjb3VudF90eXBlID0gIkhPU1RFRCIKKyAgICBy
ZXEgPSBzZWxmLl9DcmVhdGVSZXF1ZXN0KAorICAgICAgICB1cmw9Imh0dHBzOi8vd3d3Lmdvb2ds
ZS5jb20vYWNjb3VudHMvQ2xpZW50TG9naW4iLAorICAgICAgICBkYXRhPXVybGxpYi51cmxlbmNv
ZGUoeworICAgICAgICAgICAgIkVtYWlsIjogZW1haWwsCisgICAgICAgICAgICAiUGFzc3dkIjog
cGFzc3dvcmQsCisgICAgICAgICAgICAic2VydmljZSI6ICJhaCIsCisgICAgICAgICAgICAic291
cmNlIjogInJpZXR2ZWxkLWNvZGVyZXZpZXctdXBsb2FkIiwKKyAgICAgICAgICAgICJhY2NvdW50
VHlwZSI6IGFjY291bnRfdHlwZSwKKyAgICAgICAgfSksCisgICAgKQorICAgIHRyeToKKyAgICAg
IHJlc3BvbnNlID0gc2VsZi5vcGVuZXIub3BlbihyZXEpCisgICAgICByZXNwb25zZV9ib2R5ID0g
cmVzcG9uc2UucmVhZCgpCisgICAgICByZXNwb25zZV9kaWN0ID0gZGljdCh4LnNwbGl0KCI9IikK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIHJlc3BvbnNlX2JvZHkuc3BsaXQo
IlxuIikgaWYgeCkKKyAgICAgIHJldHVybiByZXNwb25zZV9kaWN0WyJBdXRoIl0KKyAgICBleGNl
cHQgdXJsbGliMi5IVFRQRXJyb3IsIGU6CisgICAgICBpZiBlLmNvZGUgPT0gNDAzOgorICAgICAg
ICBib2R5ID0gZS5yZWFkKCkKKyAgICAgICAgcmVzcG9uc2VfZGljdCA9IGRpY3QoeC5zcGxpdCgi
PSIsIDEpIGZvciB4IGluIGJvZHkuc3BsaXQoIlxuIikgaWYgeCkKKyAgICAgICAgcmFpc2UgQ2xp
ZW50TG9naW5FcnJvcihyZXEuZ2V0X2Z1bGxfdXJsKCksIGUuY29kZSwgZS5tc2csCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZS5oZWFkZXJzLCByZXNwb25zZV9kaWN0KQorICAgICAg
ZWxzZToKKyAgICAgICAgcmFpc2UKKworICBkZWYgX0dldEF1dGhDb29raWUoc2VsZiwgYXV0aF90
b2tlbik6CisgICAgIiIiRmV0Y2hlcyBhdXRoZW50aWNhdGlvbiBjb29raWVzIGZvciBhbiBhdXRo
ZW50aWNhdGlvbiB0b2tlbi4KKworICAgIEFyZ3M6CisgICAgICBhdXRoX3Rva2VuOiBUaGUgYXV0
aGVudGljYXRpb24gdG9rZW4gcmV0dXJuZWQgYnkgQ2xpZW50TG9naW4uCisKKyAgICBSYWlzZXM6
CisgICAgICBIVFRQRXJyb3I6IElmIHRoZXJlIHdhcyBhbiBlcnJvciBmZXRjaGluZyB0aGUgYXV0
aGVudGljYXRpb24gY29va2llcy4KKyAgICAiIiIKKyAgICAjIFRoaXMgaXMgYSBkdW1teSB2YWx1
ZSB0byBhbGxvdyB1cyB0byBpZGVudGlmeSB3aGVuIHdlJ3JlIHN1Y2Nlc3NmdWwuCisgICAgY29u
dGludWVfbG9jYXRpb24gPSAiaHR0cDovL2xvY2FsaG9zdC8iCisgICAgYXJncyA9IHsiY29udGlu
dWUiOiBjb250aW51ZV9sb2NhdGlvbiwgImF1dGgiOiBhdXRoX3Rva2VufQorICAgIHJlcSA9IHNl
bGYuX0NyZWF0ZVJlcXVlc3QoImh0dHA6Ly8lcy9fYWgvbG9naW4/JXMiICUKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChzZWxmLmhvc3QsIHVybGxpYi51cmxlbmNvZGUoYXJncykpKQor
ICAgIHRyeToKKyAgICAgIHJlc3BvbnNlID0gc2VsZi5vcGVuZXIub3BlbihyZXEpCisgICAgZXhj
ZXB0IHVybGxpYjIuSFRUUEVycm9yLCBlOgorICAgICAgcmVzcG9uc2UgPSBlCisgICAgaWYgKHJl
c3BvbnNlLmNvZGUgIT0gMzAyIG9yCisgICAgICAgIHJlc3BvbnNlLmluZm8oKVsibG9jYXRpb24i
XSAhPSBjb250aW51ZV9sb2NhdGlvbik6CisgICAgICByYWlzZSB1cmxsaWIyLkhUVFBFcnJvcihy
ZXEuZ2V0X2Z1bGxfdXJsKCksIHJlc3BvbnNlLmNvZGUsIHJlc3BvbnNlLm1zZywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmhlYWRlcnMsIHJlc3BvbnNlLmZwKQorICAg
IHNlbGYuYXV0aGVudGljYXRlZCA9IFRydWUKKworICBkZWYgX0F1dGhlbnRpY2F0ZShzZWxmKToK
KyAgICAiIiJBdXRoZW50aWNhdGVzIHRoZSB1c2VyLgorCisgICAgVGhlIGF1dGhlbnRpY2F0aW9u
IHByb2Nlc3Mgd29ya3MgYXMgZm9sbG93czoKKyAgICAgMSkgV2UgZ2V0IGEgdXNlcm5hbWUgYW5k
IHBhc3N3b3JkIGZyb20gdGhlIHVzZXIKKyAgICAgMikgV2UgdXNlIENsaWVudExvZ2luIHRvIG9i
dGFpbiBhbiBBVVRIIHRva2VuIGZvciB0aGUgdXNlcgorICAgICAgICAoc2VlIGh0dHA6Ly9jb2Rl
Lmdvb2dsZS5jb20vYXBpcy9hY2NvdW50cy9BdXRoRm9ySW5zdGFsbGVkQXBwcy5odG1sKS4KKyAg
ICAgMykgV2UgcGFzcyB0aGUgYXV0aCB0b2tlbiB0byAvX2FoL2xvZ2luIG9uIHRoZSBzZXJ2ZXIg
dG8gb2J0YWluIGFuCisgICAgICAgIGF1dGhlbnRpY2F0aW9uIGNvb2tpZS4gSWYgbG9naW4gd2Fz
IHN1Y2Nlc3NmdWwsIGl0IHRyaWVzIHRvIHJlZGlyZWN0CisgICAgICAgIHVzIHRvIHRoZSBVUkwg
d2UgcHJvdmlkZWQuCisKKyAgICBJZiB3ZSBhdHRlbXB0IHRvIGFjY2VzcyB0aGUgdXBsb2FkIEFQ
SSB3aXRob3V0IGZpcnN0IG9idGFpbmluZyBhbgorICAgIGF1dGhlbnRpY2F0aW9uIGNvb2tpZSwg
aXQgcmV0dXJucyBhIDQwMSByZXNwb25zZSBhbmQgZGlyZWN0cyB1cyB0bworICAgIGF1dGhlbnRp
Y2F0ZSBvdXJzZWx2ZXMgd2l0aCBDbGllbnRMb2dpbi4KKyAgICAiIiIKKyAgICBmb3IgaSBpbiBy
YW5nZSgzKToKKyAgICAgIGNyZWRlbnRpYWxzID0gc2VsZi5hdXRoX2Z1bmN0aW9uKCkKKyAgICAg
IHRyeToKKyAgICAgICAgYXV0aF90b2tlbiA9IHNlbGYuX0dldEF1dGhUb2tlbihjcmVkZW50aWFs
c1swXSwgY3JlZGVudGlhbHNbMV0pCisgICAgICBleGNlcHQgQ2xpZW50TG9naW5FcnJvciwgZToK
KyAgICAgICAgaWYgZS5yZWFzb24gPT0gIkJhZEF1dGhlbnRpY2F0aW9uIjoKKyAgICAgICAgICBw
cmludCA+PnN5cy5zdGRlcnIsICJJbnZhbGlkIHVzZXJuYW1lIG9yIHBhc3N3b3JkLiIKKyAgICAg
ICAgICBjb250aW51ZQorICAgICAgICBpZiBlLnJlYXNvbiA9PSAiQ2FwdGNoYVJlcXVpcmVkIjoK
KyAgICAgICAgICBwcmludCA+PnN5cy5zdGRlcnIsICgKKyAgICAgICAgICAgICAgIlBsZWFzZSBn
byB0b1xuIgorICAgICAgICAgICAgICAiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9hY2NvdW50cy9E
aXNwbGF5VW5sb2NrQ2FwdGNoYVxuIgorICAgICAgICAgICAgICAiYW5kIHZlcmlmeSB5b3UgYXJl
IGEgaHVtYW4uICBUaGVuIHRyeSBhZ2Fpbi4iKQorICAgICAgICAgIGJyZWFrCisgICAgICAgIGlm
IGUucmVhc29uID09ICJOb3RWZXJpZmllZCI6CisgICAgICAgICAgcHJpbnQgPj5zeXMuc3RkZXJy
LCAiQWNjb3VudCBub3QgdmVyaWZpZWQuIgorICAgICAgICAgIGJyZWFrCisgICAgICAgIGlmIGUu
cmVhc29uID09ICJUZXJtc05vdEFncmVlZCI6CisgICAgICAgICAgcHJpbnQgPj5zeXMuc3RkZXJy
LCAiVXNlciBoYXMgbm90IGFncmVlZCB0byBUT1MuIgorICAgICAgICAgIGJyZWFrCisgICAgICAg
IGlmIGUucmVhc29uID09ICJBY2NvdW50RGVsZXRlZCI6CisgICAgICAgICAgcHJpbnQgPj5zeXMu
c3RkZXJyLCAiVGhlIHVzZXIgYWNjb3VudCBoYXMgYmVlbiBkZWxldGVkLiIKKyAgICAgICAgICBi
cmVhaworICAgICAgICBpZiBlLnJlYXNvbiA9PSAiQWNjb3VudERpc2FibGVkIjoKKyAgICAgICAg
ICBwcmludCA+PnN5cy5zdGRlcnIsICJUaGUgdXNlciBhY2NvdW50IGhhcyBiZWVuIGRpc2FibGVk
LiIKKyAgICAgICAgICBicmVhaworICAgICAgICBpZiBlLnJlYXNvbiA9PSAiU2VydmljZURpc2Fi
bGVkIjoKKyAgICAgICAgICBwcmludCA+PnN5cy5zdGRlcnIsICgiVGhlIHVzZXIncyBhY2Nlc3Mg
dG8gdGhlIHNlcnZpY2UgaGFzIGJlZW4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJkaXNhYmxlZC4iKQorICAgICAgICAgIGJyZWFrCisgICAgICAgIGlmIGUucmVhc29uID09ICJT
ZXJ2aWNlVW5hdmFpbGFibGUiOgorICAgICAgICAgIHByaW50ID4+c3lzLnN0ZGVyciwgIlRoZSBz
ZXJ2aWNlIGlzIG5vdCBhdmFpbGFibGU7IHRyeSBhZ2FpbiBsYXRlci4iCisgICAgICAgICAgYnJl
YWsKKyAgICAgICAgcmFpc2UKKyAgICAgIHNlbGYuX0dldEF1dGhDb29raWUoYXV0aF90b2tlbikK
KyAgICAgIHJldHVybgorCisgIGRlZiBTZW5kKHNlbGYsIHJlcXVlc3RfcGF0aCwgcGF5bG9hZD1O
b25lLAorICAgICAgICAgICBjb250ZW50X3R5cGU9ImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIs
CisgICAgICAgICAgIHRpbWVvdXQ9Tm9uZSwKKyAgICAgICAgICAgKiprd2FyZ3MpOgorICAgICIi
IlNlbmRzIGFuIFJQQyBhbmQgcmV0dXJucyB0aGUgcmVzcG9uc2UuCisKKyAgICBBcmdzOgorICAg
ICAgcmVxdWVzdF9wYXRoOiBUaGUgcGF0aCB0byBzZW5kIHRoZSByZXF1ZXN0IHRvLCBlZyAvYXBp
L2FwcHZlcnNpb24vY3JlYXRlLgorICAgICAgcGF5bG9hZDogVGhlIGJvZHkgb2YgdGhlIHJlcXVl
c3QsIG9yIE5vbmUgdG8gc2VuZCBhbiBlbXB0eSByZXF1ZXN0LgorICAgICAgY29udGVudF90eXBl
OiBUaGUgQ29udGVudC1UeXBlIGhlYWRlciB0byB1c2UuCisgICAgICB0aW1lb3V0OiB0aW1lb3V0
IGluIHNlY29uZHM7IGRlZmF1bHQgTm9uZSBpLmUuIG5vIHRpbWVvdXQuCisgICAgICAgIChOb3Rl
OiBmb3IgbGFyZ2UgcmVxdWVzdHMgb24gT1MgWCwgdGhlIHRpbWVvdXQgZG9lc24ndCB3b3JrIHJp
Z2h0LikKKyAgICAgIGt3YXJnczogQW55IGtleXdvcmQgYXJndW1lbnRzIGFyZSBjb252ZXJ0ZWQg
aW50byBxdWVyeSBzdHJpbmcgcGFyYW1ldGVycy4KKworICAgIFJldHVybnM6CisgICAgICBUaGUg
cmVzcG9uc2UgYm9keSwgYXMgYSBzdHJpbmcuCisgICAgIiIiCisgICAgIyBUT0RPOiBEb24ndCBy
ZXF1aXJlIGF1dGhlbnRpY2F0aW9uLiAgTGV0IHRoZSBzZXJ2ZXIgc2F5CisgICAgIyB3aGV0aGVy
IGl0IGlzIG5lY2Vzc2FyeS4KKyAgICBpZiBub3Qgc2VsZi5hdXRoZW50aWNhdGVkOgorICAgICAg
c2VsZi5fQXV0aGVudGljYXRlKCkKKworICAgIG9sZF90aW1lb3V0ID0gc29ja2V0LmdldGRlZmF1
bHR0aW1lb3V0KCkKKyAgICBzb2NrZXQuc2V0ZGVmYXVsdHRpbWVvdXQodGltZW91dCkKKyAgICB0
cnk6CisgICAgICB0cmllcyA9IDAKKyAgICAgIHdoaWxlIFRydWU6CisgICAgICAgIHRyaWVzICs9
IDEKKyAgICAgICAgYXJncyA9IGRpY3Qoa3dhcmdzKQorICAgICAgICB1cmwgPSAiaHR0cDovLyVz
JXMiICUgKHNlbGYuaG9zdCwgcmVxdWVzdF9wYXRoKQorICAgICAgICBpZiBhcmdzOgorICAgICAg
ICAgIHVybCArPSAiPyIgKyB1cmxsaWIudXJsZW5jb2RlKGFyZ3MpCisgICAgICAgIHJlcSA9IHNl
bGYuX0NyZWF0ZVJlcXVlc3QodXJsPXVybCwgZGF0YT1wYXlsb2FkKQorICAgICAgICByZXEuYWRk
X2hlYWRlcigiQ29udGVudC1UeXBlIiwgY29udGVudF90eXBlKQorICAgICAgICB0cnk6CisgICAg
ICAgICAgZiA9IHNlbGYub3BlbmVyLm9wZW4ocmVxKQorICAgICAgICAgIHJlc3BvbnNlID0gZi5y
ZWFkKCkKKyAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgICByZXR1cm4gcmVzcG9uc2UKKyAg
ICAgICAgZXhjZXB0IHVybGxpYjIuSFRUUEVycm9yLCBlOgorICAgICAgICAgIGlmIHRyaWVzID4g
MzoKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgZWxpZiBlLmNvZGUgPT0gNDAxOgorICAg
ICAgICAgICAgc2VsZi5fQXV0aGVudGljYXRlKCkKKyMjICAgICAgICAgICBlbGlmIGUuY29kZSA+
PSA1MDAgYW5kIGUuY29kZSA8IDYwMDoKKyMjICAgICAgICAgICAgICMgU2VydmVyIEVycm9yIC0g
dHJ5IGFnYWluLgorIyMgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgcmFpc2UKKyAgICBmaW5hbGx5OgorICAgICAgc29ja2V0LnNldGRlZmF1bHR0aW1l
b3V0KG9sZF90aW1lb3V0KQorCisKK2NsYXNzIEh0dHBScGNTZXJ2ZXIoQWJzdHJhY3RScGNTZXJ2
ZXIpOgorICAiIiJQcm92aWRlcyBhIHNpbXBsaWZpZWQgUlBDLXN0eWxlIGludGVyZmFjZSBmb3Ig
SFRUUCByZXF1ZXN0cy4iIiIKKworICBkZWYgX0F1dGhlbnRpY2F0ZShzZWxmKToKKyAgICAiIiJT
YXZlIHRoZSBjb29raWUgamFyIGFmdGVyIGF1dGhlbnRpY2F0aW9uLiIiIgorICAgIHN1cGVyKEh0
dHBScGNTZXJ2ZXIsIHNlbGYpLl9BdXRoZW50aWNhdGUoKQorICAgIGlmIHNlbGYuc2F2ZV9jb29r
aWVzOgorICAgICAgU3RhdHVzVXBkYXRlKCJTYXZpbmcgYXV0aGVudGljYXRpb24gY29va2llcyB0
byAlcyIgJSBzZWxmLmNvb2tpZV9maWxlKQorICAgICAgc2VsZi5jb29raWVfamFyLnNhdmUoKQor
CisgIGRlZiBfR2V0T3BlbmVyKHNlbGYpOgorICAgICIiIlJldHVybnMgYW4gT3BlbmVyRGlyZWN0
b3IgdGhhdCBzdXBwb3J0cyBjb29raWVzIGFuZCBpZ25vcmVzIHJlZGlyZWN0cy4KKworICAgIFJl
dHVybnM6CisgICAgICBBIHVybGxpYjIuT3BlbmVyRGlyZWN0b3Igb2JqZWN0LgorICAgICIiIgor
ICAgIG9wZW5lciA9IHVybGxpYjIuT3BlbmVyRGlyZWN0b3IoKQorICAgIG9wZW5lci5hZGRfaGFu
ZGxlcih1cmxsaWIyLlByb3h5SGFuZGxlcigpKQorICAgIG9wZW5lci5hZGRfaGFuZGxlcih1cmxs
aWIyLlVua25vd25IYW5kbGVyKCkpCisgICAgb3BlbmVyLmFkZF9oYW5kbGVyKHVybGxpYjIuSFRU
UEhhbmRsZXIoKSkKKyAgICBvcGVuZXIuYWRkX2hhbmRsZXIodXJsbGliMi5IVFRQRGVmYXVsdEVy
cm9ySGFuZGxlcigpKQorICAgIG9wZW5lci5hZGRfaGFuZGxlcih1cmxsaWIyLkhUVFBTSGFuZGxl
cigpKQorICAgIG9wZW5lci5hZGRfaGFuZGxlcih1cmxsaWIyLkhUVFBFcnJvclByb2Nlc3Nvcigp
KQorICAgIGlmIHNlbGYuc2F2ZV9jb29raWVzOgorICAgICAgc2VsZi5jb29raWVfZmlsZSA9IG9z
LnBhdGguZXhwYW5kdXNlcigifi8uY29kZXJldmlld191cGxvYWRfY29va2llcyIpCisgICAgICBz
ZWxmLmNvb2tpZV9qYXIgPSBjb29raWVsaWIuTW96aWxsYUNvb2tpZUphcihzZWxmLmNvb2tpZV9m
aWxlKQorICAgICAgaWYgb3MucGF0aC5leGlzdHMoc2VsZi5jb29raWVfZmlsZSk6CisgICAgICAg
IHRyeToKKyAgICAgICAgICBzZWxmLmNvb2tpZV9qYXIubG9hZCgpCisgICAgICAgICAgc2VsZi5h
dXRoZW50aWNhdGVkID0gVHJ1ZQorICAgICAgICAgIFN0YXR1c1VwZGF0ZSgiTG9hZGVkIGF1dGhl
bnRpY2F0aW9uIGNvb2tpZXMgZnJvbSAlcyIgJQorICAgICAgICAgICAgICAgICAgICAgICBzZWxm
LmNvb2tpZV9maWxlKQorICAgICAgICBleGNlcHQgKGNvb2tpZWxpYi5Mb2FkRXJyb3IsIElPRXJy
b3IpOgorICAgICAgICAgICMgRmFpbGVkIHRvIGxvYWQgY29va2llcyAtIGp1c3QgaWdub3JlIHRo
ZW0uCisgICAgICAgICAgcGFzcworICAgICAgZWxzZToKKyAgICAgICAgIyBDcmVhdGUgYW4gZW1w
dHkgY29va2llIGZpbGUgd2l0aCBtb2RlIDYwMAorICAgICAgICBmZCA9IG9zLm9wZW4oc2VsZi5j
b29raWVfZmlsZSwgb3MuT19DUkVBVCwgMDYwMCkKKyAgICAgICAgb3MuY2xvc2UoZmQpCisgICAg
ICAjIEFsd2F5cyBjaG1vZCB0aGUgY29va2llIGZpbGUKKyAgICAgIG9zLmNobW9kKHNlbGYuY29v
a2llX2ZpbGUsIDA2MDApCisgICAgZWxzZToKKyAgICAgICMgRG9uJ3Qgc2F2ZSBjb29raWVzIGFj
cm9zcyBydW5zIG9mIHVwZGF0ZS5weS4KKyAgICAgIHNlbGYuY29va2llX2phciA9IGNvb2tpZWxp
Yi5Db29raWVKYXIoKQorICAgIG9wZW5lci5hZGRfaGFuZGxlcih1cmxsaWIyLkhUVFBDb29raWVQ
cm9jZXNzb3Ioc2VsZi5jb29raWVfamFyKSkKKyAgICByZXR1cm4gb3BlbmVyCisKKworcGFyc2Vy
ID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKHVzYWdlPSIlcHJvZyBbb3B0aW9uc10gWy0tIGRpZmZf
b3B0aW9uc10iKQorcGFyc2VyLmFkZF9vcHRpb24oIi15IiwgIi0tYXNzdW1lX3llcyIsIGFjdGlv
bj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgICAgICAgICAgICBkZXN0PSJhc3N1bWVfeWVzIiwgZGVm
YXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgIGhlbHA9IkFzc3VtZSB0aGF0IHRoZSBhbnN3
ZXIgdG8geWVzL25vIHF1ZXN0aW9ucyBpcyAneWVzJy4iKQorIyBMb2dnaW5nCitncm91cCA9IHBh
cnNlci5hZGRfb3B0aW9uX2dyb3VwKCJMb2dnaW5nIG9wdGlvbnMiKQorZ3JvdXAuYWRkX29wdGlv
bigiLXEiLCAiLS1xdWlldCIsIGFjdGlvbj0ic3RvcmVfY29uc3QiLCBjb25zdD0wLAorICAgICAg
ICAgICAgICAgICBkZXN0PSJ2ZXJib3NlIiwgaGVscD0iUHJpbnQgZXJyb3JzIG9ubHkuIikKK2dy
b3VwLmFkZF9vcHRpb24oIi12IiwgIi0tdmVyYm9zZSIsIGFjdGlvbj0ic3RvcmVfY29uc3QiLCBj
b25zdD0yLAorICAgICAgICAgICAgICAgICBkZXN0PSJ2ZXJib3NlIiwgZGVmYXVsdD0xLAorICAg
ICAgICAgICAgICAgICBoZWxwPSJQcmludCBpbmZvIGxldmVsIGxvZ3MgKGRlZmF1bHQpLiIpCitn
cm91cC5hZGRfb3B0aW9uKCItLW5vaXN5IiwgYWN0aW9uPSJzdG9yZV9jb25zdCIsIGNvbnN0PTMs
CisgICAgICAgICAgICAgICAgIGRlc3Q9InZlcmJvc2UiLCBoZWxwPSJQcmludCBhbGwgbG9ncy4i
KQorIyBSZXZpZXcgc2VydmVyCitncm91cCA9IHBhcnNlci5hZGRfb3B0aW9uX2dyb3VwKCJSZXZp
ZXcgc2VydmVyIG9wdGlvbnMiKQorZ3JvdXAuYWRkX29wdGlvbigiLXMiLCAiLS1zZXJ2ZXIiLCBh
Y3Rpb249InN0b3JlIiwgZGVzdD0ic2VydmVyIiwKKyAgICAgICAgICAgICAgICAgZGVmYXVsdD0i
Y29kZXJldmlldy5hcHBzcG90LmNvbSIsCisgICAgICAgICAgICAgICAgIG1ldGF2YXI9IlNFUlZF
UiIsCisgICAgICAgICAgICAgICAgIGhlbHA9KCJUaGUgc2VydmVyIHRvIHVwbG9hZCB0by4gVGhl
IGZvcm1hdCBpcyBob3N0Wzpwb3J0XS4gIgorICAgICAgICAgICAgICAgICAgICAgICAiRGVmYXVs
dHMgdG8gJ2NvZGVyZXZpZXcuYXBwc3BvdC5jb20nLiIpKQorZ3JvdXAuYWRkX29wdGlvbigiLWUi
LCAiLS1lbWFpbCIsIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJlbWFpbCIsCisgICAgICAgICAgICAg
ICAgIG1ldGF2YXI9IkVNQUlMIiwgZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgICAgICBoZWxw
PSJUaGUgdXNlcm5hbWUgdG8gdXNlLiBXaWxsIHByb21wdCBpZiBvbWl0dGVkLiIpCitncm91cC5h
ZGRfb3B0aW9uKCItSCIsICItLWhvc3QiLCBhY3Rpb249InN0b3JlIiwgZGVzdD0iaG9zdCIsCisg
ICAgICAgICAgICAgICAgIG1ldGF2YXI9IkhPU1QiLCBkZWZhdWx0PU5vbmUsCisgICAgICAgICAg
ICAgICAgIGhlbHA9Ik92ZXJyaWRlcyB0aGUgSG9zdCBoZWFkZXIgc2VudCB3aXRoIGFsbCBSUENz
LiIpCitncm91cC5hZGRfb3B0aW9uKCItLW5vX2Nvb2tpZXMiLCBhY3Rpb249InN0b3JlX2ZhbHNl
IiwKKyAgICAgICAgICAgICAgICAgZGVzdD0ic2F2ZV9jb29raWVzIiwgZGVmYXVsdD1UcnVlLAor
ICAgICAgICAgICAgICAgICBoZWxwPSJEbyBub3Qgc2F2ZSBhdXRoZW50aWNhdGlvbiBjb29raWVz
IHRvIGxvY2FsIGRpc2suIikKKyMgSXNzdWUKK2dyb3VwID0gcGFyc2VyLmFkZF9vcHRpb25fZ3Jv
dXAoIklzc3VlIG9wdGlvbnMiKQorZ3JvdXAuYWRkX29wdGlvbigiLWQiLCAiLS1kZXNjcmlwdGlv
biIsIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJkZXNjcmlwdGlvbiIsCisgICAgICAgICAgICAgICAg
IG1ldGF2YXI9IkRFU0NSSVBUSU9OIiwgZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgICAgICBo
ZWxwPSJPcHRpb25hbCBkZXNjcmlwdGlvbiB3aGVuIGNyZWF0aW5nIGFuIGlzc3VlLiIpCitncm91
cC5hZGRfb3B0aW9uKCItZiIsICItLWRlc2NyaXB0aW9uX2ZpbGUiLCBhY3Rpb249InN0b3JlIiwK
KyAgICAgICAgICAgICAgICAgZGVzdD0iZGVzY3JpcHRpb25fZmlsZSIsIG1ldGF2YXI9IkRFU0NS
SVBUSU9OX0ZJTEUiLAorICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsCisgICAgICAgICAg
ICAgICAgIGhlbHA9Ik9wdGlvbmFsIHBhdGggb2YgYSBmaWxlIHRoYXQgY29udGFpbnMgIgorICAg
ICAgICAgICAgICAgICAgICAgICJ0aGUgZGVzY3JpcHRpb24gd2hlbiBjcmVhdGluZyBhbiBpc3N1
ZS4iKQorZ3JvdXAuYWRkX29wdGlvbigiLXIiLCAiLS1yZXZpZXdlcnMiLCBhY3Rpb249InN0b3Jl
IiwgZGVzdD0icmV2aWV3ZXJzIiwKKyAgICAgICAgICAgICAgICAgbWV0YXZhcj0iUkVWSUVXRVJT
IiwgZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgICAgICBoZWxwPSJBZGQgcmV2aWV3ZXJzIChj
b21tYSBzZXBhcmF0ZWQgZW1haWwgYWRkcmVzc2VzKS4iKQorZ3JvdXAuYWRkX29wdGlvbigiLS1j
YyIsIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJjYyIsCisgICAgICAgICAgICAgICAgIG1ldGF2YXI9
IkNDIiwgZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgICAgICBoZWxwPSJBZGQgQ0MgKGNvbW1h
IHNlcGFyYXRlZCBlbWFpbCBhZGRyZXNzZXMpLiIpCisjIFVwbG9hZCBvcHRpb25zCitncm91cCA9
IHBhcnNlci5hZGRfb3B0aW9uX2dyb3VwKCJQYXRjaCBvcHRpb25zIikKK2dyb3VwLmFkZF9vcHRp
b24oIi1tIiwgIi0tbWVzc2FnZSIsIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJtZXNzYWdlIiwKKyAg
ICAgICAgICAgICAgICAgbWV0YXZhcj0iTUVTU0FHRSIsIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAg
ICAgICAgICAgaGVscD0iQSBtZXNzYWdlIHRvIGlkZW50aWZ5IHRoZSBwYXRjaC4gIgorICAgICAg
ICAgICAgICAgICAgICAgICJXaWxsIHByb21wdCBpZiBvbWl0dGVkLiIpCitncm91cC5hZGRfb3B0
aW9uKCItaSIsICItLWlzc3VlIiwgdHlwZT0iaW50IiwgYWN0aW9uPSJzdG9yZSIsCisgICAgICAg
ICAgICAgICAgIG1ldGF2YXI9IklTU1VFIiwgZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgICAg
ICBoZWxwPSJJc3N1ZSBudW1iZXIgdG8gd2hpY2ggdG8gYWRkLiBEZWZhdWx0cyB0byBuZXcgaXNz
dWUuIikKK2dyb3VwLmFkZF9vcHRpb24oIi0tZG93bmxvYWRfYmFzZSIsIGFjdGlvbj0ic3RvcmVf
dHJ1ZSIsCisgICAgICAgICAgICAgICAgIGRlc3Q9ImRvd25sb2FkX2Jhc2UiLCBkZWZhdWx0PUZh
bHNlLAorICAgICAgICAgICAgICAgICBoZWxwPSJCYXNlIGZpbGVzIHdpbGwgYmUgZG93bmxvYWRl
ZCBieSB0aGUgc2VydmVyICIKKyAgICAgICAgICAgICAgICAgIihzaWRlLWJ5LXNpZGUgZGlmZnMg
bWF5IG5vdCB3b3JrIG9uIGZpbGVzIHdpdGggQ1JzKS4iKQorZ3JvdXAuYWRkX29wdGlvbigiLS1y
ZXYiLCBhY3Rpb249InN0b3JlIiwgZGVzdD0icmV2aXNpb24iLAorICAgICAgICAgICAgICAgICBt
ZXRhdmFyPSJSRVYiLCBkZWZhdWx0PU5vbmUsCisgICAgICAgICAgICAgICAgIGhlbHA9IkJyYW5j
aC90cmVlL3JldmlzaW9uIHRvIGRpZmYgYWdhaW5zdCAodXNlZCBieSBEVkNTKS4iKQorZ3JvdXAu
YWRkX29wdGlvbigiLS1zZW5kX21haWwiLCBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICAg
ICAgICAgICBkZXN0PSJzZW5kX21haWwiLCBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAg
ICBoZWxwPSJTZW5kIG5vdGlmaWNhdGlvbiBlbWFpbCB0byByZXZpZXdlcnMuIikKKworCitkZWYg
R2V0UnBjU2VydmVyKG9wdGlvbnMpOgorICAiIiJSZXR1cm5zIGFuIGluc3RhbmNlIG9mIGFuIEFi
c3RyYWN0UnBjU2VydmVyLgorCisgIFJldHVybnM6CisgICAgQSBuZXcgQWJzdHJhY3RScGNTZXJ2
ZXIsIG9uIHdoaWNoIFJQQyBjYWxscyBjYW4gYmUgbWFkZS4KKyAgIiIiCisKKyAgcnBjX3NlcnZl
cl9jbGFzcyA9IEh0dHBScGNTZXJ2ZXIKKworICBkZWYgR2V0VXNlckNyZWRlbnRpYWxzKCk6Cisg
ICAgIiIiUHJvbXB0cyB0aGUgdXNlciBmb3IgYSB1c2VybmFtZSBhbmQgcGFzc3dvcmQuIiIiCisg
ICAgZW1haWwgPSBvcHRpb25zLmVtYWlsCisgICAgaWYgZW1haWwgaXMgTm9uZToKKyAgICAgIGVt
YWlsID0gR2V0RW1haWwoIkVtYWlsIChsb2dpbiBmb3IgdXBsb2FkaW5nIHRvICVzKSIgJSBvcHRp
b25zLnNlcnZlcikKKyAgICBwYXNzd29yZCA9IGdldHBhc3MuZ2V0cGFzcygiUGFzc3dvcmQgZm9y
ICVzOiAiICUgZW1haWwpCisgICAgcmV0dXJuIChlbWFpbCwgcGFzc3dvcmQpCisKKyAgIyBJZiB0
aGlzIGlzIHRoZSBkZXZfYXBwc2VydmVyLCB1c2UgZmFrZSBhdXRoZW50aWNhdGlvbi4KKyAgaG9z
dCA9IChvcHRpb25zLmhvc3Qgb3Igb3B0aW9ucy5zZXJ2ZXIpLmxvd2VyKCkKKyAgaWYgaG9zdCA9
PSAibG9jYWxob3N0IiBvciBob3N0LnN0YXJ0c3dpdGgoImxvY2FsaG9zdDoiKToKKyAgICBlbWFp
bCA9IG9wdGlvbnMuZW1haWwKKyAgICBpZiBlbWFpbCBpcyBOb25lOgorICAgICAgZW1haWwgPSAi
dGVzdEBleGFtcGxlLmNvbSIKKyAgICAgIGxvZ2dpbmcuaW5mbygiVXNpbmcgZGVidWcgdXNlciAl
cy4gIE92ZXJyaWRlIHdpdGggLS1lbWFpbCIgJSBlbWFpbCkKKyAgICBzZXJ2ZXIgPSBycGNfc2Vy
dmVyX2NsYXNzKAorICAgICAgICBvcHRpb25zLnNlcnZlciwKKyAgICAgICAgbGFtYmRhOiAoZW1h
aWwsICJwYXNzd29yZCIpLAorICAgICAgICBob3N0X292ZXJyaWRlPW9wdGlvbnMuaG9zdCwKKyAg
ICAgICAgZXh0cmFfaGVhZGVycz17IkNvb2tpZSI6CisgICAgICAgICAgICAgICAgICAgICAgICdk
ZXZfYXBwc2VydmVyX2xvZ2luPSIlczpGYWxzZSInICUgZW1haWx9LAorICAgICAgICBzYXZlX2Nv
b2tpZXM9b3B0aW9ucy5zYXZlX2Nvb2tpZXMpCisgICAgIyBEb24ndCB0cnkgdG8gdGFsayB0byBD
bGllbnRMb2dpbi4KKyAgICBzZXJ2ZXIuYXV0aGVudGljYXRlZCA9IFRydWUKKyAgICByZXR1cm4g
c2VydmVyCisKKyAgcmV0dXJuIHJwY19zZXJ2ZXJfY2xhc3Mob3B0aW9ucy5zZXJ2ZXIsIEdldFVz
ZXJDcmVkZW50aWFscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdF9vdmVycmlkZT1v
cHRpb25zLmhvc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVfY29va2llcz1vcHRp
b25zLnNhdmVfY29va2llcykKKworCitkZWYgRW5jb2RlTXVsdGlwYXJ0Rm9ybURhdGEoZmllbGRz
LCBmaWxlcyk6CisgICIiIkVuY29kZSBmb3JtIGZpZWxkcyBmb3IgbXVsdGlwYXJ0L2Zvcm0tZGF0
YS4KKworICBBcmdzOgorICAgIGZpZWxkczogQSBzZXF1ZW5jZSBvZiAobmFtZSwgdmFsdWUpIGVs
ZW1lbnRzIGZvciByZWd1bGFyIGZvcm0gZmllbGRzLgorICAgIGZpbGVzOiBBIHNlcXVlbmNlIG9m
IChuYW1lLCBmaWxlbmFtZSwgdmFsdWUpIGVsZW1lbnRzIGZvciBkYXRhIHRvIGJlCisgICAgICAg
ICAgIHVwbG9hZGVkIGFzIGZpbGVzLgorICBSZXR1cm5zOgorICAgIChjb250ZW50X3R5cGUsIGJv
ZHkpIHJlYWR5IGZvciBodHRwbGliLkhUVFAgaW5zdGFuY2UuCisKKyAgU291cmNlOgorICAgIGh0
dHA6Ly9hc3BuLmFjdGl2ZXN0YXRlLmNvbS9BU1BOL0Nvb2tib29rL1B5dGhvbi9SZWNpcGUvMTQ2
MzA2CisgICIiIgorICBCT1VOREFSWSA9ICctTS1BLUctSS1DLS0tQi1PLVUtTi1ELUEtUi1ZLScK
KyAgQ1JMRiA9ICdcclxuJworICBsaW5lcyA9IFtdCisgIGZvciAoa2V5LCB2YWx1ZSkgaW4gZmll
bGRzOgorICAgIGxpbmVzLmFwcGVuZCgnLS0nICsgQk9VTkRBUlkpCisgICAgbGluZXMuYXBwZW5k
KCdDb250ZW50LURpc3Bvc2l0aW9uOiBmb3JtLWRhdGE7IG5hbWU9IiVzIicgJSBrZXkpCisgICAg
bGluZXMuYXBwZW5kKCcnKQorICAgIGxpbmVzLmFwcGVuZCh2YWx1ZSkKKyAgZm9yIChrZXksIGZp
bGVuYW1lLCB2YWx1ZSkgaW4gZmlsZXM6CisgICAgbGluZXMuYXBwZW5kKCctLScgKyBCT1VOREFS
WSkKKyAgICBsaW5lcy5hcHBlbmQoJ0NvbnRlbnQtRGlzcG9zaXRpb246IGZvcm0tZGF0YTsgbmFt
ZT0iJXMiOyBmaWxlbmFtZT0iJXMiJyAlCisgICAgICAgICAgICAgKGtleSwgZmlsZW5hbWUpKQor
ICAgIGxpbmVzLmFwcGVuZCgnQ29udGVudC1UeXBlOiAlcycgJSBHZXRDb250ZW50VHlwZShmaWxl
bmFtZSkpCisgICAgbGluZXMuYXBwZW5kKCcnKQorICAgIGxpbmVzLmFwcGVuZCh2YWx1ZSkKKyAg
bGluZXMuYXBwZW5kKCctLScgKyBCT1VOREFSWSArICctLScpCisgIGxpbmVzLmFwcGVuZCgnJykK
KyAgYm9keSA9IENSTEYuam9pbihsaW5lcykKKyAgY29udGVudF90eXBlID0gJ211bHRpcGFydC9m
b3JtLWRhdGE7IGJvdW5kYXJ5PSVzJyAlIEJPVU5EQVJZCisgIHJldHVybiBjb250ZW50X3R5cGUs
IGJvZHkKKworCitkZWYgR2V0Q29udGVudFR5cGUoZmlsZW5hbWUpOgorICAiIiJIZWxwZXIgdG8g
Z3Vlc3MgdGhlIGNvbnRlbnQtdHlwZSBmcm9tIHRoZSBmaWxlbmFtZS4iIiIKKyAgcmV0dXJuIG1p
bWV0eXBlcy5ndWVzc190eXBlKGZpbGVuYW1lKVswXSBvciAnYXBwbGljYXRpb24vb2N0ZXQtc3Ry
ZWFtJworCisKKyMgVXNlIGEgc2hlbGwgZm9yIHN1YmNvbW1hbmRzIG9uIFdpbmRvd3MgdG8gZ2V0
IGEgUEFUSCBzZWFyY2guCit1c2Vfc2hlbGwgPSBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgid2lu
IikKKworZGVmIFJ1blNoZWxsV2l0aFJldHVybkNvZGUoY29tbWFuZCwgcHJpbnRfb3V0cHV0PUZh
bHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUp
OgorICAiIiJFeGVjdXRlcyBhIGNvbW1hbmQgYW5kIHJldHVybnMgdGhlIG91dHB1dCBmcm9tIHN0
ZG91dCBhbmQgdGhlIHJldHVybiBjb2RlLgorCisgIEFyZ3M6CisgICAgY29tbWFuZDogQ29tbWFu
ZCB0byBleGVjdXRlLgorICAgIHByaW50X291dHB1dDogSWYgVHJ1ZSwgdGhlIG91dHB1dCBpcyBw
cmludGVkIHRvIHN0ZG91dC4KKyAgICAgICAgICAgICAgICAgIElmIEZhbHNlLCBib3RoIHN0ZG91
dCBhbmQgc3RkZXJyIGFyZSBpZ25vcmVkLgorICAgIHVuaXZlcnNhbF9uZXdsaW5lczogVXNlIHVu
aXZlcnNhbF9uZXdsaW5lcyBmbGFnIChkZWZhdWx0OiBUcnVlKS4KKworICBSZXR1cm5zOgorICAg
IFR1cGxlIChvdXRwdXQsIHJldHVybiBjb2RlKQorICAiIiIKKyAgbG9nZ2luZy5pbmZvKCJSdW5u
aW5nICVzIiwgY29tbWFuZCkKKyAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oY29tbWFuZCwgc3Rkb3V0
PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgc2hlbGw9dXNlX3NoZWxsLCB1bml2ZXJzYWxfbmV3bGluZXM9dW5pdmVyc2FsX25l
d2xpbmVzKQorICBpZiBwcmludF9vdXRwdXQ6CisgICAgb3V0cHV0X2FycmF5ID0gW10KKyAgICB3
aGlsZSBUcnVlOgorICAgICAgbGluZSA9IHAuc3Rkb3V0LnJlYWRsaW5lKCkKKyAgICAgIGlmIG5v
dCBsaW5lOgorICAgICAgICBicmVhaworICAgICAgcHJpbnQgbGluZS5zdHJpcCgiXG4iKQorICAg
ICAgb3V0cHV0X2FycmF5LmFwcGVuZChsaW5lKQorICAgIG91dHB1dCA9ICIiLmpvaW4ob3V0cHV0
X2FycmF5KQorICBlbHNlOgorICAgIG91dHB1dCA9IHAuc3Rkb3V0LnJlYWQoKQorICBwLndhaXQo
KQorICBlcnJvdXQgPSBwLnN0ZGVyci5yZWFkKCkKKyAgaWYgcHJpbnRfb3V0cHV0IGFuZCBlcnJv
dXQ6CisgICAgcHJpbnQgPj5zeXMuc3RkZXJyLCBlcnJvdXQKKyAgcC5zdGRvdXQuY2xvc2UoKQor
ICBwLnN0ZGVyci5jbG9zZSgpCisgIHJldHVybiBvdXRwdXQsIHAucmV0dXJuY29kZQorCisKK2Rl
ZiBSdW5TaGVsbChjb21tYW5kLCBzaWxlbnRfb2s9RmFsc2UsIHVuaXZlcnNhbF9uZXdsaW5lcz1U
cnVlLAorICAgICAgICAgICAgIHByaW50X291dHB1dD1GYWxzZSk6CisgIGRhdGEsIHJldGNvZGUg
PSBSdW5TaGVsbFdpdGhSZXR1cm5Db2RlKGNvbW1hbmQsIHByaW50X291dHB1dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzKQorICBp
ZiByZXRjb2RlOgorICAgIEVycm9yRXhpdCgiR290IGVycm9yIHN0YXR1cyBmcm9tICVzOlxuJXMi
ICUgKGNvbW1hbmQsIGRhdGEpKQorICBpZiBub3Qgc2lsZW50X29rIGFuZCBub3QgZGF0YToKKyAg
ICBFcnJvckV4aXQoIk5vIG91dHB1dCBmcm9tICVzIiAlIGNvbW1hbmQpCisgIHJldHVybiBkYXRh
CisKKworY2xhc3MgVmVyc2lvbkNvbnRyb2xTeXN0ZW0ob2JqZWN0KToKKyAgIiIiQWJzdHJhY3Qg
YmFzZSBjbGFzcyBwcm92aWRpbmcgYW4gaW50ZXJmYWNlIHRvIHRoZSBWQ1MuIiIiCisKKyAgZGVm
IF9faW5pdF9fKHNlbGYsIG9wdGlvbnMpOgorICAgICIiIkNvbnN0cnVjdG9yLgorCisgICAgQXJn
czoKKyAgICAgIG9wdGlvbnM6IENvbW1hbmQgbGluZSBvcHRpb25zLgorICAgICIiIgorICAgIHNl
bGYub3B0aW9ucyA9IG9wdGlvbnMKKworICBkZWYgR2VuZXJhdGVEaWZmKHNlbGYsIGFyZ3MpOgor
ICAgICIiIlJldHVybiB0aGUgY3VycmVudCBkaWZmIGFzIGEgc3RyaW5nLgorCisgICAgQXJnczoK
KyAgICAgIGFyZ3M6IEV4dHJhIGFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSBkaWZmIGNvbW1hbmQu
CisgICAgIiIiCisgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigKKyAgICAgICAgImFic3Ry
YWN0IG1ldGhvZCAtLSBzdWJjbGFzcyAlcyBtdXN0IG92ZXJyaWRlIiAlIHNlbGYuX19jbGFzc19f
KQorCisgIGRlZiBHZXRVbmtub3duRmlsZXMoc2VsZik6CisgICAgIiIiUmV0dXJuIGEgbGlzdCBv
ZiBmaWxlcyB1bmtub3duIHRvIHRoZSBWQ1MuIiIiCisgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRF
cnJvcigKKyAgICAgICAgImFic3RyYWN0IG1ldGhvZCAtLSBzdWJjbGFzcyAlcyBtdXN0IG92ZXJy
aWRlIiAlIHNlbGYuX19jbGFzc19fKQorCisgIGRlZiBDaGVja0ZvclVua25vd25GaWxlcyhzZWxm
KToKKyAgICAiIiJTaG93IGFuICJhcmUgeW91IHN1cmU/IiBwcm9tcHQgaWYgdGhlcmUgYXJlIHVu
a25vd24gZmlsZXMuIiIiCisgICAgdW5rbm93bl9maWxlcyA9IHNlbGYuR2V0VW5rbm93bkZpbGVz
KCkKKyAgICBpZiB1bmtub3duX2ZpbGVzOgorICAgICAgcHJpbnQgIlRoZSBmb2xsb3dpbmcgZmls
ZXMgYXJlIG5vdCBhZGRlZCB0byB2ZXJzaW9uIGNvbnRyb2w6IgorICAgICAgZm9yIGxpbmUgaW4g
dW5rbm93bl9maWxlczoKKyAgICAgICAgcHJpbnQgbGluZQorICAgICAgcHJvbXB0ID0gIkFyZSB5
b3Ugc3VyZSB0byBjb250aW51ZT8oeS9OKSAiCisgICAgICBhbnN3ZXIgPSByYXdfaW5wdXQocHJv
bXB0KS5zdHJpcCgpCisgICAgICBpZiBhbnN3ZXIgIT0gInkiOgorICAgICAgICBFcnJvckV4aXQo
IlVzZXIgYWJvcnRlZCIpCisKKyAgZGVmIEdldEJhc2VGaWxlKHNlbGYsIGZpbGVuYW1lKToKKyAg
ICAiIiJHZXQgdGhlIGNvbnRlbnQgb2YgdGhlIHVwc3RyZWFtIHZlcnNpb24gb2YgYSBmaWxlLgor
CisgICAgUmV0dXJuczoKKyAgICAgIEEgdHVwbGUgKGJhc2VfY29udGVudCwgbmV3X2NvbnRlbnQs
IGlzX2JpbmFyeSwgc3RhdHVzKQorICAgICAgICBiYXNlX2NvbnRlbnQ6IFRoZSBjb250ZW50cyBv
ZiB0aGUgYmFzZSBmaWxlLgorICAgICAgICBuZXdfY29udGVudDogRm9yIHRleHQgZmlsZXMsIHRo
aXMgaXMgZW1wdHkuICBGb3IgYmluYXJ5IGZpbGVzLCB0aGlzIGlzCisgICAgICAgICAgdGhlIGNv
bnRlbnRzIG9mIHRoZSBuZXcgZmlsZSwgc2luY2UgdGhlIGRpZmYgb3V0cHV0IHdvbid0IGNvbnRh
aW4KKyAgICAgICAgICBpbmZvcm1hdGlvbiB0byByZWNvbnN0cnVjdCB0aGUgY3VycmVudCBmaWxl
LgorICAgICAgICBpc19iaW5hcnk6IFRydWUgaWZmIHRoZSBmaWxlIGlzIGJpbmFyeS4KKyAgICAg
ICAgc3RhdHVzOiBUaGUgc3RhdHVzIG9mIHRoZSBmaWxlLgorICAgICIiIgorCisgICAgcmFpc2Ug
Tm90SW1wbGVtZW50ZWRFcnJvcigKKyAgICAgICAgImFic3RyYWN0IG1ldGhvZCAtLSBzdWJjbGFz
cyAlcyBtdXN0IG92ZXJyaWRlIiAlIHNlbGYuX19jbGFzc19fKQorCisKKyAgZGVmIEdldEJhc2VG
aWxlcyhzZWxmLCBkaWZmKToKKyAgICAiIiJIZWxwZXIgdGhhdCBjYWxscyBHZXRCYXNlIGZpbGUg
Zm9yIGVhY2ggZmlsZSBpbiB0aGUgcGF0Y2guCisKKyAgICBSZXR1cm5zOgorICAgICAgQSBkaWN0
aW9uYXJ5IHRoYXQgbWFwcyBmcm9tIGZpbGVuYW1lIHRvIEdldEJhc2VGaWxlJ3MgdHVwbGUuICBG
aWxlbmFtZXMKKyAgICAgIGFyZSByZXRyaWV2ZWQgYmFzZWQgb24gbGluZXMgdGhhdCBzdGFydCB3
aXRoICJJbmRleDoiIG9yCisgICAgICAiUHJvcGVydHkgY2hhbmdlcyBvbjoiLgorICAgICIiIgor
ICAgIGZpbGVzID0ge30KKyAgICBmb3IgbGluZSBpbiBkaWZmLnNwbGl0bGluZXMoVHJ1ZSk6Cisg
ICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ0luZGV4OicpIG9yIGxpbmUuc3RhcnRzd2l0aCgnUHJv
cGVydHkgY2hhbmdlcyBvbjonKToKKyAgICAgICAgdW51c2VkLCBmaWxlbmFtZSA9IGxpbmUuc3Bs
aXQoJzonLCAxKQorICAgICAgICAjIE9uIFdpbmRvd3MgaWYgYSBmaWxlIGhhcyBwcm9wZXJ0eSBj
aGFuZ2VzIGl0cyBmaWxlbmFtZSB1c2VzICdcJworICAgICAgICAjIGluc3RlYWQgb2YgJy8nLgor
ICAgICAgICBmaWxlbmFtZSA9IGZpbGVuYW1lLnN0cmlwKCkucmVwbGFjZSgnXFwnLCAnLycpCisg
ICAgICAgIGZpbGVzW2ZpbGVuYW1lXSA9IHNlbGYuR2V0QmFzZUZpbGUoZmlsZW5hbWUpCisgICAg
cmV0dXJuIGZpbGVzCisKKworICBkZWYgVXBsb2FkQmFzZUZpbGVzKHNlbGYsIGlzc3VlLCBycGNf
c2VydmVyLCBwYXRjaF9saXN0LCBwYXRjaHNldCwgb3B0aW9ucywKKyAgICAgICAgICAgICAgICAg
ICAgICBmaWxlcyk6CisgICAgIiIiVXBsb2FkcyB0aGUgYmFzZSBmaWxlcyAoYW5kIGlmIG5lY2Vz
c2FyeSwgdGhlIGN1cnJlbnQgb25lcyBhcyB3ZWxsKS4iIiIKKworICAgIGRlZiBVcGxvYWRGaWxl
KGZpbGVuYW1lLCBmaWxlX2lkLCBjb250ZW50LCBpc19iaW5hcnksIHN0YXR1cywgaXNfYmFzZSk6
CisgICAgICAiIiJVcGxvYWRzIGEgZmlsZSB0byB0aGUgc2VydmVyLiIiIgorICAgICAgZmlsZV90
b29fbGFyZ2UgPSBGYWxzZQorICAgICAgaWYgaXNfYmFzZToKKyAgICAgICAgdHlwZSA9ICJiYXNl
IgorICAgICAgZWxzZToKKyAgICAgICAgdHlwZSA9ICJjdXJyZW50IgorICAgICAgaWYgbGVuKGNv
bnRlbnQpID4gTUFYX1VQTE9BRF9TSVpFOgorICAgICAgICBwcmludCAoIk5vdCB1cGxvYWRpbmcg
dGhlICVzIGZpbGUgZm9yICVzIGJlY2F1c2UgaXQncyB0b28gbGFyZ2UuIiAlCisgICAgICAgICAg
ICAgICAodHlwZSwgZmlsZW5hbWUpKQorICAgICAgICBmaWxlX3Rvb19sYXJnZSA9IFRydWUKKyAg
ICAgICAgY29udGVudCA9ICIiCisgICAgICBjaGVja3N1bSA9IG1kNS5uZXcoY29udGVudCkuaGV4
ZGlnZXN0KCkKKyAgICAgIGlmIG9wdGlvbnMudmVyYm9zZSA+IDAgYW5kIG5vdCBmaWxlX3Rvb19s
YXJnZToKKyAgICAgICAgcHJpbnQgIlVwbG9hZGluZyAlcyBmaWxlIGZvciAlcyIgJSAodHlwZSwg
ZmlsZW5hbWUpCisgICAgICB1cmwgPSAiLyVkL3VwbG9hZF9jb250ZW50LyVkLyVkIiAlIChpbnQo
aXNzdWUpLCBpbnQocGF0Y2hzZXQpLCBmaWxlX2lkKQorICAgICAgZm9ybV9maWVsZHMgPSBbKCJm
aWxlbmFtZSIsIGZpbGVuYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICgic3RhdHVzIiwgc3Rh
dHVzKSwKKyAgICAgICAgICAgICAgICAgICAgICgiY2hlY2tzdW0iLCBjaGVja3N1bSksCisgICAg
ICAgICAgICAgICAgICAgICAoImlzX2JpbmFyeSIsIHN0cihpc19iaW5hcnkpKSwKKyAgICAgICAg
ICAgICAgICAgICAgICgiaXNfY3VycmVudCIsIHN0cihub3QgaXNfYmFzZSkpLAorICAgICAgICAg
ICAgICAgICAgICBdCisgICAgICBpZiBmaWxlX3Rvb19sYXJnZToKKyAgICAgICAgZm9ybV9maWVs
ZHMuYXBwZW5kKCgiZmlsZV90b29fbGFyZ2UiLCAiMSIpKQorICAgICAgaWYgb3B0aW9ucy5lbWFp
bDoKKyAgICAgICAgZm9ybV9maWVsZHMuYXBwZW5kKCgidXNlciIsIG9wdGlvbnMuZW1haWwpKQor
ICAgICAgY3R5cGUsIGJvZHkgPSBFbmNvZGVNdWx0aXBhcnRGb3JtRGF0YShmb3JtX2ZpZWxkcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWygiZGF0YSIsIGZp
bGVuYW1lLCBjb250ZW50KV0pCisgICAgICByZXNwb25zZV9ib2R5ID0gcnBjX3NlcnZlci5TZW5k
KHVybCwgYm9keSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVu
dF90eXBlPWN0eXBlKQorICAgICAgaWYgbm90IHJlc3BvbnNlX2JvZHkuc3RhcnRzd2l0aCgiT0si
KToKKyAgICAgICAgU3RhdHVzVXBkYXRlKCIgIC0tPiAlcyIgJSByZXNwb25zZV9ib2R5KQorICAg
ICAgICBzeXMuZXhpdCgxKQorCisgICAgcGF0Y2hlcyA9IGRpY3QoKQorICAgIFtwYXRjaGVzLnNl
dGRlZmF1bHQodiwgaykgZm9yIGssIHYgaW4gcGF0Y2hfbGlzdF0KKyAgICBmb3IgZmlsZW5hbWUg
aW4gcGF0Y2hlcy5rZXlzKCk6CisgICAgICBiYXNlX2NvbnRlbnQsIG5ld19jb250ZW50LCBpc19i
aW5hcnksIHN0YXR1cyA9IGZpbGVzW2ZpbGVuYW1lXQorICAgICAgZmlsZV9pZF9zdHIgPSBwYXRj
aGVzLmdldChmaWxlbmFtZSkKKyAgICAgIGlmIGZpbGVfaWRfc3RyLmZpbmQoIm5vYmFzZSIpICE9
IC0xOgorICAgICAgICBiYXNlX2NvbnRlbnQgPSBOb25lCisgICAgICAgIGZpbGVfaWRfc3RyID0g
ZmlsZV9pZF9zdHJbZmlsZV9pZF9zdHIucmZpbmQoIl8iKSArIDE6XQorICAgICAgZmlsZV9pZCA9
IGludChmaWxlX2lkX3N0cikKKyAgICAgIGlmIGJhc2VfY29udGVudCAhPSBOb25lOgorICAgICAg
ICBVcGxvYWRGaWxlKGZpbGVuYW1lLCBmaWxlX2lkLCBiYXNlX2NvbnRlbnQsIGlzX2JpbmFyeSwg
c3RhdHVzLCBUcnVlKQorICAgICAgaWYgbmV3X2NvbnRlbnQgIT0gTm9uZToKKyAgICAgICAgVXBs
b2FkRmlsZShmaWxlbmFtZSwgZmlsZV9pZCwgbmV3X2NvbnRlbnQsIGlzX2JpbmFyeSwgc3RhdHVz
LCBGYWxzZSkKKworICBkZWYgSXNJbWFnZShzZWxmLCBmaWxlbmFtZSk6CisgICAgIiIiUmV0dXJu
cyB0cnVlIGlmIHRoZSBmaWxlbmFtZSBoYXMgYW4gaW1hZ2UgZXh0ZW5zaW9uLiIiIgorICAgIG1p
bWV0eXBlID0gIG1pbWV0eXBlcy5ndWVzc190eXBlKGZpbGVuYW1lKVswXQorICAgIGlmIG5vdCBt
aW1ldHlwZToKKyAgICAgIHJldHVybiBGYWxzZQorICAgIHJldHVybiBtaW1ldHlwZS5zdGFydHN3
aXRoKCJpbWFnZS8iKQorCisKK2NsYXNzIFN1YnZlcnNpb25WQ1MoVmVyc2lvbkNvbnRyb2xTeXN0
ZW0pOgorICAiIiJJbXBsZW1lbnRhdGlvbiBvZiB0aGUgVmVyc2lvbkNvbnRyb2xTeXN0ZW0gaW50
ZXJmYWNlIGZvciBTdWJ2ZXJzaW9uLiIiIgorCisgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25z
KToKKyAgICBzdXBlcihTdWJ2ZXJzaW9uVkNTLCBzZWxmKS5fX2luaXRfXyhvcHRpb25zKQorICAg
IGlmIHNlbGYub3B0aW9ucy5yZXZpc2lvbjoKKyAgICAgIG1hdGNoID0gcmUubWF0Y2gociIoXGQr
KSg6KFxkKykpPyIsIHNlbGYub3B0aW9ucy5yZXZpc2lvbikKKyAgICAgIGlmIG5vdCBtYXRjaDoK
KyAgICAgICAgRXJyb3JFeGl0KCJJbnZhbGlkIFN1YnZlcnNpb24gcmV2aXNpb24gJXMuIiAlIHNl
bGYub3B0aW9ucy5yZXZpc2lvbikKKyAgICAgIHNlbGYucmV2X3N0YXJ0ID0gbWF0Y2guZ3JvdXAo
MSkKKyAgICAgIHNlbGYucmV2X2VuZCA9IG1hdGNoLmdyb3VwKDMpCisgICAgZWxzZToKKyAgICAg
IHNlbGYucmV2X3N0YXJ0ID0gc2VsZi5yZXZfZW5kID0gTm9uZQorICAgICMgQ2FjaGUgb3V0cHV0
IGZyb20gInN2biBsaXN0IC1yIFJFVk5PIGRpcm5hbWUiLgorICAgICMgS2V5czogZGlybmFtZSwg
VmFsdWVzOiAyLXR1cGxlIChvdXB1dCBmb3Igc3RhcnQgcmV2IGFuZCBlbmQgcmV2KS4KKyAgICBz
ZWxmLnN2bmxzX2NhY2hlID0ge30KKyAgICAjIFNWTiBiYXNlIFVSTCBpcyByZXF1aXJlZCB0byBm
ZXRjaCBmaWxlcyBkZWxldGVkIGluIGFuIG9sZGVyIHJldmlzaW9uLgorICAgICMgUmVzdWx0IGlz
IGNhY2hlZCB0byBub3QgZ3Vlc3MgaXQgb3ZlciBhbmQgb3ZlciBhZ2FpbiBpbiBHZXRCYXNlRmls
ZSgpLgorICAgIHJlcXVpcmVkID0gc2VsZi5vcHRpb25zLmRvd25sb2FkX2Jhc2Ugb3Igc2VsZi5v
cHRpb25zLnJldmlzaW9uIGlzIG5vdCBOb25lCisgICAgc2VsZi5zdm5fYmFzZSA9IHNlbGYuX0d1
ZXNzQmFzZShyZXF1aXJlZCkKKworICBkZWYgR3Vlc3NCYXNlKHNlbGYsIHJlcXVpcmVkKToKKyAg
ICAiIiJXcmFwcGVyIGZvciBfR3Vlc3NCYXNlLiIiIgorICAgIHJldHVybiBzZWxmLnN2bl9iYXNl
CisKKyAgZGVmIF9HdWVzc0Jhc2Uoc2VsZiwgcmVxdWlyZWQpOgorICAgICIiIlJldHVybnMgdGhl
IFNWTiBiYXNlIFVSTC4KKworICAgIEFyZ3M6CisgICAgICByZXF1aXJlZDogSWYgdHJ1ZSwgZXhp
dHMgaWYgdGhlIHVybCBjYW4ndCBiZSBndWVzc2VkLCBvdGhlcndpc2UgTm9uZSBpcworICAgICAg
ICByZXR1cm5lZC4KKyAgICAiIiIKKyAgICBpbmZvID0gUnVuU2hlbGwoWyJzdm4iLCAiaW5mbyJd
KQorICAgIGZvciBsaW5lIGluIGluZm8uc3BsaXRsaW5lcygpOgorICAgICAgd29yZHMgPSBsaW5l
LnNwbGl0KCkKKyAgICAgIGlmIGxlbih3b3JkcykgPT0gMiBhbmQgd29yZHNbMF0gPT0gIlVSTDoi
OgorICAgICAgICB1cmwgPSB3b3Jkc1sxXQorICAgICAgICBzY2hlbWUsIG5ldGxvYywgcGF0aCwg
cGFyYW1zLCBxdWVyeSwgZnJhZ21lbnQgPSB1cmxwYXJzZS51cmxwYXJzZSh1cmwpCisgICAgICAg
IHVzZXJuYW1lLCBuZXRsb2MgPSB1cmxsaWIuc3BsaXR1c2VyKG5ldGxvYykKKyAgICAgICAgaWYg
dXNlcm5hbWU6CisgICAgICAgICAgbG9nZ2luZy5pbmZvKCJSZW1vdmVkIHVzZXJuYW1lIGZyb20g
YmFzZSBVUkwiKQorICAgICAgICBpZiBuZXRsb2MuZW5kc3dpdGgoInN2bi5weXRob24ub3JnIik6
CisgICAgICAgICAgaWYgbmV0bG9jID09ICJzdm4ucHl0aG9uLm9yZyI6CisgICAgICAgICAgICBp
ZiBwYXRoLnN0YXJ0c3dpdGgoIi9wcm9qZWN0cy8iKToKKyAgICAgICAgICAgICAgcGF0aCA9IHBh
dGhbOTpdCisgICAgICAgICAgZWxpZiBuZXRsb2MgIT0gInB5dGhvbmRldkBzdm4ucHl0aG9uLm9y
ZyI6CisgICAgICAgICAgICBFcnJvckV4aXQoIlVucmVjb2duaXplZCBQeXRob24gVVJMOiAlcyIg
JSB1cmwpCisgICAgICAgICAgYmFzZSA9ICJodHRwOi8vc3ZuLnB5dGhvbi5vcmcvdmlldy8qY2hl
Y2tvdXQqJXMvIiAlIHBhdGgKKyAgICAgICAgICBsb2dnaW5nLmluZm8oIkd1ZXNzZWQgUHl0aG9u
IGJhc2UgPSAlcyIsIGJhc2UpCisgICAgICAgIGVsaWYgbmV0bG9jLmVuZHN3aXRoKCJzdm4uY29s
bGFiLm5ldCIpOgorICAgICAgICAgIGlmIHBhdGguc3RhcnRzd2l0aCgiL3JlcG9zLyIpOgorICAg
ICAgICAgICAgcGF0aCA9IHBhdGhbNjpdCisgICAgICAgICAgYmFzZSA9ICJodHRwOi8vc3ZuLmNv
bGxhYi5uZXQvdmlld3ZjLypjaGVja291dColcy8iICUgcGF0aAorICAgICAgICAgIGxvZ2dpbmcu
aW5mbygiR3Vlc3NlZCBDb2xsYWJOZXQgYmFzZSA9ICVzIiwgYmFzZSkKKyAgICAgICAgZWxpZiBu
ZXRsb2MuZW5kc3dpdGgoIi5nb29nbGVjb2RlLmNvbSIpOgorICAgICAgICAgIHBhdGggPSBwYXRo
ICsgIi8iCisgICAgICAgICAgYmFzZSA9IHVybHBhcnNlLnVybHVucGFyc2UoKCJodHRwIiwgbmV0
bG9jLCBwYXRoLCBwYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHF1ZXJ5LCBmcmFnbWVudCkpCisgICAgICAgICAgbG9nZ2luZy5pbmZvKCJHdWVzc2VkIEdvb2ds
ZSBDb2RlIGJhc2UgPSAlcyIsIGJhc2UpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgcGF0aCA9
IHBhdGggKyAiLyIKKyAgICAgICAgICBiYXNlID0gdXJscGFyc2UudXJsdW5wYXJzZSgoc2NoZW1l
LCBuZXRsb2MsIHBhdGgsIHBhcmFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcXVlcnksIGZyYWdtZW50KSkKKyAgICAgICAgICBsb2dnaW5nLmluZm8oIkd1ZXNzZWQg
YmFzZSA9ICVzIiwgYmFzZSkKKyAgICAgICAgcmV0dXJuIGJhc2UKKyAgICBpZiByZXF1aXJlZDoK
KyAgICAgIEVycm9yRXhpdCgiQ2FuJ3QgZmluZCBVUkwgaW4gb3V0cHV0IGZyb20gc3ZuIGluZm8i
KQorICAgIHJldHVybiBOb25lCisKKyAgZGVmIEdlbmVyYXRlRGlmZihzZWxmLCBhcmdzKToKKyAg
ICBjbWQgPSBbInN2biIsICJkaWZmIl0KKyAgICBpZiBzZWxmLm9wdGlvbnMucmV2aXNpb246Cisg
ICAgICBjbWQgKz0gWyItciIsIHNlbGYub3B0aW9ucy5yZXZpc2lvbl0KKyAgICBjbWQuZXh0ZW5k
KGFyZ3MpCisgICAgZGF0YSA9IFJ1blNoZWxsKGNtZCkKKyAgICBjb3VudCA9IDAKKyAgICBmb3Ig
bGluZSBpbiBkYXRhLnNwbGl0bGluZXMoKToKKyAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgiSW5k
ZXg6Iikgb3IgbGluZS5zdGFydHN3aXRoKCJQcm9wZXJ0eSBjaGFuZ2VzIG9uOiIpOgorICAgICAg
ICBjb3VudCArPSAxCisgICAgICAgIGxvZ2dpbmcuaW5mbyhsaW5lKQorICAgIGlmIG5vdCBjb3Vu
dDoKKyAgICAgIEVycm9yRXhpdCgiTm8gdmFsaWQgcGF0Y2hlcyBmb3VuZCBpbiBvdXRwdXQgZnJv
bSBzdm4gZGlmZiIpCisgICAgcmV0dXJuIGRhdGEKKworICBkZWYgX0NvbGxhcHNlS2V5d29yZHMo
c2VsZiwgY29udGVudCwga2V5d29yZF9zdHIpOgorICAgICIiIkNvbGxhcHNlcyBTVk4ga2V5d29y
ZHMuIiIiCisgICAgIyBzdm4gY2F0IHRyYW5zbGF0ZXMga2V5d29yZHMgYnV0IHN2biBkaWZmIGRv
ZXNuJ3QuIEFzIGEgcmVzdWx0IG9mIHRoaXMKKyAgICAjIGJlaGF2aW9yIHBhdGNoaW5nLlBhdGNo
Q2h1bmtzKCkgZmFpbHMgd2l0aCBhIGNodW5rIG1pc21hdGNoIGVycm9yLgorICAgICMgVGhpcyBw
YXJ0IHdhcyBvcmlnaW5hbGx5IHdyaXR0ZW4gYnkgdGhlIFJldmlldyBCb2FyZCBkZXZlbG9wbWVu
dCB0ZWFtCisgICAgIyB3aG8gaGFkIHRoZSBzYW1lIHByb2JsZW0gKGh0dHA6Ly9yZXZpZXdzLnJl
dmlldy1ib2FyZC5vcmcvci8yNzYvKS4KKyAgICAjIE1hcHBpbmcgb2Yga2V5d29yZHMgdG8ga25v
d24gYWxpYXNlcworICAgIHN2bl9rZXl3b3JkcyA9IHsKKyAgICAgICMgU3RhbmRhcmQga2V5d29y
ZHMKKyAgICAgICdEYXRlJzogICAgICAgICAgICAgICAgWydEYXRlJywgJ0xhc3RDaGFuZ2VkRGF0
ZSddLAorICAgICAgJ1JldmlzaW9uJzogICAgICAgICAgICBbJ1JldmlzaW9uJywgJ0xhc3RDaGFu
Z2VkUmV2aXNpb24nLCAnUmV2J10sCisgICAgICAnQXV0aG9yJzogICAgICAgICAgICAgIFsnQXV0
aG9yJywgJ0xhc3RDaGFuZ2VkQnknXSwKKyAgICAgICdIZWFkVVJMJzogICAgICAgICAgICAgWydI
ZWFkVVJMJywgJ1VSTCddLAorICAgICAgJ0lkJzogICAgICAgICAgICAgICAgICBbJ0lkJ10sCisK
KyAgICAgICMgQWxpYXNlcworICAgICAgJ0xhc3RDaGFuZ2VkRGF0ZSc6ICAgICBbJ0xhc3RDaGFu
Z2VkRGF0ZScsICdEYXRlJ10sCisgICAgICAnTGFzdENoYW5nZWRSZXZpc2lvbic6IFsnTGFzdENo
YW5nZWRSZXZpc2lvbicsICdSZXYnLCAnUmV2aXNpb24nXSwKKyAgICAgICdMYXN0Q2hhbmdlZEJ5
JzogICAgICAgWydMYXN0Q2hhbmdlZEJ5JywgJ0F1dGhvciddLAorICAgICAgJ1VSTCc6ICAgICAg
ICAgICAgICAgICBbJ1VSTCcsICdIZWFkVVJMJ10sCisgICAgfQorCisgICAgZGVmIHJlcGwobSk6
CisgICAgICAgaWYgbS5ncm91cCgyKToKKyAgICAgICAgIHJldHVybiAiJCVzOjolcyQiICUgKG0u
Z3JvdXAoMSksICIgIiAqIGxlbihtLmdyb3VwKDMpKSkKKyAgICAgICByZXR1cm4gIiQlcyQiICUg
bS5ncm91cCgxKQorICAgIGtleXdvcmRzID0gW2tleXdvcmQKKyAgICAgICAgICAgICAgICBmb3Ig
bmFtZSBpbiBrZXl3b3JkX3N0ci5zcGxpdCgiICIpCisgICAgICAgICAgICAgICAgZm9yIGtleXdv
cmQgaW4gc3ZuX2tleXdvcmRzLmdldChuYW1lLCBbXSldCisgICAgcmV0dXJuIHJlLnN1YihyIlwk
KCVzKTooOj8pKFteXCRdKylcJCIgJSAnfCcuam9pbihrZXl3b3JkcyksIHJlcGwsIGNvbnRlbnQp
CisKKyAgZGVmIEdldFVua25vd25GaWxlcyhzZWxmKToKKyAgICBzdGF0dXMgPSBSdW5TaGVsbChb
InN2biIsICJzdGF0dXMiLCAiLS1pZ25vcmUtZXh0ZXJuYWxzIl0sIHNpbGVudF9vaz1UcnVlKQor
ICAgIHVua25vd25fZmlsZXMgPSBbXQorICAgIGZvciBsaW5lIGluIHN0YXR1cy5zcGxpdCgiXG4i
KToKKyAgICAgIGlmIGxpbmUgYW5kIGxpbmVbMF0gPT0gIj8iOgorICAgICAgICB1bmtub3duX2Zp
bGVzLmFwcGVuZChsaW5lKQorICAgIHJldHVybiB1bmtub3duX2ZpbGVzCisKKyAgZGVmIFJlYWRG
aWxlKHNlbGYsIGZpbGVuYW1lKToKKyAgICAiIiJSZXR1cm5zIHRoZSBjb250ZW50cyBvZiBhIGZp
bGUuIiIiCisgICAgZmlsZSA9IG9wZW4oZmlsZW5hbWUsICdyYicpCisgICAgcmVzdWx0ID0gIiIK
KyAgICB0cnk6CisgICAgICByZXN1bHQgPSBmaWxlLnJlYWQoKQorICAgIGZpbmFsbHk6CisgICAg
ICBmaWxlLmNsb3NlKCkKKyAgICByZXR1cm4gcmVzdWx0CisKKyAgZGVmIEdldFN0YXR1cyhzZWxm
LCBmaWxlbmFtZSk6CisgICAgIiIiUmV0dXJucyB0aGUgc3RhdHVzIG9mIGEgZmlsZS4iIiIKKyAg
ICBpZiBub3Qgc2VsZi5vcHRpb25zLnJldmlzaW9uOgorICAgICAgc3RhdHVzID0gUnVuU2hlbGwo
WyJzdm4iLCAic3RhdHVzIiwgIi0taWdub3JlLWV4dGVybmFscyIsIGZpbGVuYW1lXSkKKyAgICAg
IGlmIG5vdCBzdGF0dXM6CisgICAgICAgIEVycm9yRXhpdCgic3ZuIHN0YXR1cyByZXR1cm5lZCBu
byBvdXRwdXQgZm9yICVzIiAlIGZpbGVuYW1lKQorICAgICAgc3RhdHVzX2xpbmVzID0gc3RhdHVz
LnNwbGl0bGluZXMoKQorICAgICAgIyBJZiBmaWxlIGlzIGluIGEgY2wsIHRoZSBvdXRwdXQgd2ls
bCBiZWdpbiB3aXRoCisgICAgICAjICJcbi0tLSBDaGFuZ2VsaXN0ICdjbF9uYW1lJzpcbiIuICBT
ZWUKKyAgICAgICMgaHR0cDovL3N2bi5jb2xsYWIubmV0L3JlcG9zL3N2bi90cnVuay9ub3Rlcy9j
aGFuZ2VsaXN0LWRlc2lnbi50eHQKKyAgICAgIGlmIChsZW4oc3RhdHVzX2xpbmVzKSA9PSAzIGFu
ZAorICAgICAgICAgIG5vdCBzdGF0dXNfbGluZXNbMF0gYW5kCisgICAgICAgICAgc3RhdHVzX2xp
bmVzWzFdLnN0YXJ0c3dpdGgoIi0tLSBDaGFuZ2VsaXN0IikpOgorICAgICAgICBzdGF0dXMgPSBz
dGF0dXNfbGluZXNbMl0KKyAgICAgIGVsc2U6CisgICAgICAgIHN0YXR1cyA9IHN0YXR1c19saW5l
c1swXQorICAgICMgSWYgd2UgaGF2ZSBhIHJldmlzaW9uIHRvIGRpZmYgYWdhaW5zdCB3ZSBuZWVk
IHRvIHJ1biAic3ZuIGxpc3QiCisgICAgIyBmb3IgdGhlIG9sZCBhbmQgdGhlIG5ldyByZXZpc2lv
biBhbmQgY29tcGFyZSB0aGUgcmVzdWx0cyB0byBnZXQKKyAgICAjIHRoZSBjb3JyZWN0IHN0YXR1
cyBmb3IgYSBmaWxlLgorICAgIGVsc2U6CisgICAgICBkaXJuYW1lLCByZWxmaWxlbmFtZSA9IG9z
LnBhdGguc3BsaXQoZmlsZW5hbWUpCisgICAgICBpZiBkaXJuYW1lIG5vdCBpbiBzZWxmLnN2bmxz
X2NhY2hlOgorICAgICAgICBjbWQgPSBbInN2biIsICJsaXN0IiwgIi1yIiwgc2VsZi5yZXZfc3Rh
cnQsIGRpcm5hbWUgb3IgIi4iXQorICAgICAgICBvdXQsIHJldHVybmNvZGUgPSBSdW5TaGVsbFdp
dGhSZXR1cm5Db2RlKGNtZCkKKyAgICAgICAgaWYgcmV0dXJuY29kZToKKyAgICAgICAgICBFcnJv
ckV4aXQoIkZhaWxlZCB0byBnZXQgc3RhdHVzIGZvciAlcy4iICUgZmlsZW5hbWUpCisgICAgICAg
IG9sZF9maWxlcyA9IG91dC5zcGxpdGxpbmVzKCkKKyAgICAgICAgYXJncyA9IFsic3ZuIiwgImxp
c3QiXQorICAgICAgICBpZiBzZWxmLnJldl9lbmQ6CisgICAgICAgICAgYXJncyArPSBbIi1yIiwg
c2VsZi5yZXZfZW5kXQorICAgICAgICBjbWQgPSBhcmdzICsgW2Rpcm5hbWUgb3IgIi4iXQorICAg
ICAgICBvdXQsIHJldHVybmNvZGUgPSBSdW5TaGVsbFdpdGhSZXR1cm5Db2RlKGNtZCkKKyAgICAg
ICAgaWYgcmV0dXJuY29kZToKKyAgICAgICAgICBFcnJvckV4aXQoIkZhaWxlZCB0byBydW4gY29t
bWFuZCAlcyIgJSBjbWQpCisgICAgICAgIHNlbGYuc3ZubHNfY2FjaGVbZGlybmFtZV0gPSAob2xk
X2ZpbGVzLCBvdXQuc3BsaXRsaW5lcygpKQorICAgICAgb2xkX2ZpbGVzLCBuZXdfZmlsZXMgPSBz
ZWxmLnN2bmxzX2NhY2hlW2Rpcm5hbWVdCisgICAgICBpZiByZWxmaWxlbmFtZSBpbiBvbGRfZmls
ZXMgYW5kIHJlbGZpbGVuYW1lIG5vdCBpbiBuZXdfZmlsZXM6CisgICAgICAgIHN0YXR1cyA9ICJE
ICAgIgorICAgICAgZWxpZiByZWxmaWxlbmFtZSBpbiBvbGRfZmlsZXMgYW5kIHJlbGZpbGVuYW1l
IGluIG5ld19maWxlczoKKyAgICAgICAgc3RhdHVzID0gIk0gICAiCisgICAgICBlbHNlOgorICAg
ICAgICBzdGF0dXMgPSAiQSAgICIKKyAgICByZXR1cm4gc3RhdHVzCisKKyAgZGVmIEdldEJhc2VG
aWxlKHNlbGYsIGZpbGVuYW1lKToKKyAgICBzdGF0dXMgPSBzZWxmLkdldFN0YXR1cyhmaWxlbmFt
ZSkKKyAgICBiYXNlX2NvbnRlbnQgPSBOb25lCisgICAgbmV3X2NvbnRlbnQgPSBOb25lCisKKyAg
ICAjIElmIGEgZmlsZSBpcyBjb3BpZWQgaXRzIHN0YXR1cyB3aWxsIGJlICJBICArIiwgd2hpY2gg
c2lnbmlmaWVzCisgICAgIyAiYWRkaXRpb24td2l0aC1oaXN0b3J5Ii4gIFNlZSAic3ZuIHN0IiBm
b3IgbW9yZSBpbmZvcm1hdGlvbi4gIFdlIG5lZWQgdG8KKyAgICAjIHVwbG9hZCB0aGUgb3JpZ2lu
YWwgZmlsZSBvciBlbHNlIGRpZmYgcGFyc2luZyB3aWxsIGZhaWwgaWYgdGhlIGZpbGUgd2FzCisg
ICAgIyBlZGl0ZWQuCisgICAgaWYgc3RhdHVzWzBdID09ICJBIiBhbmQgc3RhdHVzWzNdICE9ICIr
IjoKKyAgICAgICMgV2UnbGwgbmVlZCB0byB1cGxvYWQgdGhlIG5ldyBjb250ZW50IGlmIHdlJ3Jl
IGFkZGluZyBhIGJpbmFyeSBmaWxlCisgICAgICAjIHNpbmNlIGRpZmYncyBvdXRwdXQgd29uJ3Qg
Y29udGFpbiBpdC4KKyAgICAgIG1pbWV0eXBlID0gUnVuU2hlbGwoWyJzdm4iLCAicHJvcGdldCIs
ICJzdm46bWltZS10eXBlIiwgZmlsZW5hbWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICBz
aWxlbnRfb2s9VHJ1ZSkKKyAgICAgIGJhc2VfY29udGVudCA9ICIiCisgICAgICBpc19iaW5hcnkg
PSBtaW1ldHlwZSBhbmQgbm90IG1pbWV0eXBlLnN0YXJ0c3dpdGgoInRleHQvIikKKyAgICAgIGlm
IGlzX2JpbmFyeSBhbmQgc2VsZi5Jc0ltYWdlKGZpbGVuYW1lKToKKyAgICAgICAgbmV3X2NvbnRl
bnQgPSBzZWxmLlJlYWRGaWxlKGZpbGVuYW1lKQorICAgIGVsaWYgKHN0YXR1c1swXSBpbiAoIk0i
LCAiRCIsICJSIikgb3IKKyAgICAgICAgICAoc3RhdHVzWzBdID09ICJBIiBhbmQgc3RhdHVzWzNd
ID09ICIrIikgb3IgICMgQ29waWVkIGZpbGUuCisgICAgICAgICAgKHN0YXR1c1swXSA9PSAiICIg
YW5kIHN0YXR1c1sxXSA9PSAiTSIpKTogICMgUHJvcGVydHkgY2hhbmdlLgorICAgICAgYXJncyA9
IFtdCisgICAgICBpZiBzZWxmLm9wdGlvbnMucmV2aXNpb246CisgICAgICAgIHVybCA9ICIlcy8l
c0AlcyIgJSAoc2VsZi5zdm5fYmFzZSwgZmlsZW5hbWUsIHNlbGYucmV2X3N0YXJ0KQorICAgICAg
ZWxzZToKKyAgICAgICAgIyBEb24ndCBjaGFuZ2UgZmlsZW5hbWUsIGl0J3MgbmVlZGVkIGxhdGVy
LgorICAgICAgICB1cmwgPSBmaWxlbmFtZQorICAgICAgICBhcmdzICs9IFsiLXIiLCAiQkFTRSJd
CisgICAgICBjbWQgPSBbInN2biJdICsgYXJncyArIFsicHJvcGdldCIsICJzdm46bWltZS10eXBl
IiwgdXJsXQorICAgICAgbWltZXR5cGUsIHJldHVybmNvZGUgPSBSdW5TaGVsbFdpdGhSZXR1cm5D
b2RlKGNtZCkKKyAgICAgIGlmIHJldHVybmNvZGU6CisgICAgICAgICMgRmlsZSBkb2VzIG5vdCBl
eGlzdCBpbiB0aGUgcmVxdWVzdGVkIHJldmlzaW9uLgorICAgICAgICAjIFJlc2V0IG1pbWV0eXBl
LCBpdCBjb250YWlucyBhbiBlcnJvciBtZXNzYWdlLgorICAgICAgICBtaW1ldHlwZSA9ICIiCisg
ICAgICBnZXRfYmFzZSA9IEZhbHNlCisgICAgICBpc19iaW5hcnkgPSBtaW1ldHlwZSBhbmQgbm90
IG1pbWV0eXBlLnN0YXJ0c3dpdGgoInRleHQvIikKKyAgICAgIGlmIHN0YXR1c1swXSA9PSAiICI6
CisgICAgICAgICMgRW1wdHkgYmFzZSBjb250ZW50IGp1c3QgdG8gZm9yY2UgYW4gdXBsb2FkLgor
ICAgICAgICBiYXNlX2NvbnRlbnQgPSAiIgorICAgICAgZWxpZiBpc19iaW5hcnk6CisgICAgICAg
IGlmIHNlbGYuSXNJbWFnZShmaWxlbmFtZSk6CisgICAgICAgICAgZ2V0X2Jhc2UgPSBUcnVlCisg
ICAgICAgICAgaWYgc3RhdHVzWzBdID09ICJNIjoKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLnJl
dl9lbmQ6CisgICAgICAgICAgICAgIG5ld19jb250ZW50ID0gc2VsZi5SZWFkRmlsZShmaWxlbmFt
ZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgIHVybCA9ICIlcy8lc0AlcyIgJSAo
c2VsZi5zdm5fYmFzZSwgZmlsZW5hbWUsIHNlbGYucmV2X2VuZCkKKyAgICAgICAgICAgICAgbmV3
X2NvbnRlbnQgPSBSdW5TaGVsbChbInN2biIsICJjYXQiLCB1cmxdLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlLCBzaWxlbnRfb2s9
VHJ1ZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICBiYXNlX2NvbnRlbnQgPSAiIgorICAgICAg
ZWxzZToKKyAgICAgICAgZ2V0X2Jhc2UgPSBUcnVlCisKKyAgICAgIGlmIGdldF9iYXNlOgorICAg
ICAgICBpZiBpc19iaW5hcnk6CisgICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzID0gRmFsc2UK
KyAgICAgICAgZWxzZToKKyAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXMgPSBUcnVlCisgICAg
ICAgIGlmIHNlbGYucmV2X3N0YXJ0OgorICAgICAgICAgICMgInN2biBjYXQgLXIgUkVWIGRlbGV0
ZV9maWxlLnR4dCIgZG9lc24ndCB3b3JrLiBjYXQgcmVxdWlyZXMKKyAgICAgICAgICAjIHRoZSBm
dWxsIFVSTCB3aXRoICJAUkVWIiBhcHBlbmRlZCBpbnN0ZWFkIG9mIHVzaW5nICItciIgb3B0aW9u
LgorICAgICAgICAgIHVybCA9ICIlcy8lc0AlcyIgJSAoc2VsZi5zdm5fYmFzZSwgZmlsZW5hbWUs
IHNlbGYucmV2X3N0YXJ0KQorICAgICAgICAgIGJhc2VfY29udGVudCA9IFJ1blNoZWxsKFsic3Zu
IiwgImNhdCIsIHVybF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdmVy
c2FsX25ld2xpbmVzPXVuaXZlcnNhbF9uZXdsaW5lcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaWxlbnRfb2s9VHJ1ZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICBiYXNl
X2NvbnRlbnQgPSBSdW5TaGVsbChbInN2biIsICJjYXQiLCBmaWxlbmFtZV0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzPXVuaXZlcnNhbF9uZXds
aW5lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWxlbnRfb2s9VHJ1ZSkK
KyAgICAgICAgaWYgbm90IGlzX2JpbmFyeToKKyAgICAgICAgICBhcmdzID0gW10KKyAgICAgICAg
ICBpZiBzZWxmLnJldl9zdGFydDoKKyAgICAgICAgICAgIHVybCA9ICIlcy8lc0AlcyIgJSAoc2Vs
Zi5zdm5fYmFzZSwgZmlsZW5hbWUsIHNlbGYucmV2X3N0YXJ0KQorICAgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICB1cmwgPSBmaWxlbmFtZQorICAgICAgICAgICAgYXJncyArPSBbIi1yIiwgIkJB
U0UiXQorICAgICAgICAgIGNtZCA9IFsic3ZuIl0gKyBhcmdzICsgWyJwcm9wZ2V0IiwgInN2bjpr
ZXl3b3JkcyIsIHVybF0KKyAgICAgICAgICBrZXl3b3JkcywgcmV0dXJuY29kZSA9IFJ1blNoZWxs
V2l0aFJldHVybkNvZGUoY21kKQorICAgICAgICAgIGlmIGtleXdvcmRzIGFuZCBub3QgcmV0dXJu
Y29kZToKKyAgICAgICAgICAgIGJhc2VfY29udGVudCA9IHNlbGYuX0NvbGxhcHNlS2V5d29yZHMo
YmFzZV9jb250ZW50LCBrZXl3b3JkcykKKyAgICBlbHNlOgorICAgICAgU3RhdHVzVXBkYXRlKCJz
dm4gc3RhdHVzIHJldHVybmVkIHVuZXhwZWN0ZWQgb3V0cHV0OiAlcyIgJSBzdGF0dXMpCisgICAg
ICBzeXMuZXhpdCgxKQorICAgIHJldHVybiBiYXNlX2NvbnRlbnQsIG5ld19jb250ZW50LCBpc19i
aW5hcnksIHN0YXR1c1swOjVdCisKKworY2xhc3MgR2l0VkNTKFZlcnNpb25Db250cm9sU3lzdGVt
KToKKyAgIiIiSW1wbGVtZW50YXRpb24gb2YgdGhlIFZlcnNpb25Db250cm9sU3lzdGVtIGludGVy
ZmFjZSBmb3IgR2l0LiIiIgorCisgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zKToKKyAgICBz
dXBlcihHaXRWQ1MsIHNlbGYpLl9faW5pdF9fKG9wdGlvbnMpCisgICAgIyBNYXAgb2YgZmlsZW5h
bWUgLT4gaGFzaCBvZiBiYXNlIGZpbGUuCisgICAgc2VsZi5iYXNlX2hhc2hlcyA9IHt9CisKKyAg
ZGVmIEdlbmVyYXRlRGlmZihzZWxmLCBleHRyYV9hcmdzKToKKyAgICAjIFRoaXMgaXMgbW9yZSBj
b21wbGljYXRlZCB0aGFuIHN2bidzIEdlbmVyYXRlRGlmZiBiZWNhdXNlIHdlIG11c3QgY29udmVy
dAorICAgICMgdGhlIGRpZmYgb3V0cHV0IHRvIGluY2x1ZGUgYW4gc3ZuLXN0eWxlICJJbmRleDoi
IGxpbmUgYXMgd2VsbCBhcyByZWNvcmQKKyAgICAjIHRoZSBoYXNoZXMgb2YgdGhlIGJhc2UgZmls
ZXMsIHNvIHdlIGNhbiB1cGxvYWQgdGhlbSBhbG9uZyB3aXRoIG91ciBkaWZmLgorICAgIGlmIHNl
bGYub3B0aW9ucy5yZXZpc2lvbjoKKyAgICAgIGV4dHJhX2FyZ3MgPSBbc2VsZi5vcHRpb25zLnJl
dmlzaW9uXSArIGV4dHJhX2FyZ3MKKyAgICBnaXRkaWZmID0gUnVuU2hlbGwoWyJnaXQiLCAiZGlm
ZiIsICItLWZ1bGwtaW5kZXgiXSArIGV4dHJhX2FyZ3MpCisgICAgc3ZuZGlmZiA9IFtdCisgICAg
ZmlsZWNvdW50ID0gMAorICAgIGZpbGVuYW1lID0gTm9uZQorICAgIGZvciBsaW5lIGluIGdpdGRp
ZmYuc3BsaXRsaW5lcygpOgorICAgICAgbWF0Y2ggPSByZS5tYXRjaChyImRpZmYgLS1naXQgYS8o
LiopIGIvLiokIiwgbGluZSkKKyAgICAgIGlmIG1hdGNoOgorICAgICAgICBmaWxlY291bnQgKz0g
MQorICAgICAgICBmaWxlbmFtZSA9IG1hdGNoLmdyb3VwKDEpCisgICAgICAgIHN2bmRpZmYuYXBw
ZW5kKCJJbmRleDogJXNcbiIgJSBmaWxlbmFtZSkKKyAgICAgIGVsc2U6CisgICAgICAgICMgVGhl
ICJpbmRleCIgbGluZSBpbiBhIGdpdCBkaWZmIGxvb2tzIGxpa2UgdGhpcyAobG9uZyBoYXNoZXMg
ZWxpZGVkKToKKyAgICAgICAgIyAgIGluZGV4IDgyYzBkNDQuLmIyY2VlM2YgMTAwNzU1CisgICAg
ICAgICMgV2Ugd2FudCB0byBzYXZlIHRoZSBsZWZ0IGhhc2gsIGFzIHRoYXQgaWRlbnRpZmllcyB0
aGUgYmFzZSBmaWxlLgorICAgICAgICBtYXRjaCA9IHJlLm1hdGNoKHIiaW5kZXggKFx3KylcLlwu
IiwgbGluZSkKKyAgICAgICAgaWYgbWF0Y2g6CisgICAgICAgICAgc2VsZi5iYXNlX2hhc2hlc1tm
aWxlbmFtZV0gPSBtYXRjaC5ncm91cCgxKQorICAgICAgc3ZuZGlmZi5hcHBlbmQobGluZSArICJc
biIpCisgICAgaWYgbm90IGZpbGVjb3VudDoKKyAgICAgIEVycm9yRXhpdCgiTm8gdmFsaWQgcGF0
Y2hlcyBmb3VuZCBpbiBvdXRwdXQgZnJvbSBnaXQgZGlmZiIpCisgICAgcmV0dXJuICIiLmpvaW4o
c3ZuZGlmZikKKworICBkZWYgR2V0VW5rbm93bkZpbGVzKHNlbGYpOgorICAgIHN0YXR1cyA9IFJ1
blNoZWxsKFsiZ2l0IiwgImxzLWZpbGVzIiwgIi0tZXhjbHVkZS1zdGFuZGFyZCIsICItLW90aGVy
cyJdLAorICAgICAgICAgICAgICAgICAgICAgIHNpbGVudF9vaz1UcnVlKQorICAgIHJldHVybiBz
dGF0dXMuc3BsaXRsaW5lcygpCisKKyAgZGVmIEdldEJhc2VGaWxlKHNlbGYsIGZpbGVuYW1lKToK
KyAgICBoYXNoID0gc2VsZi5iYXNlX2hhc2hlc1tmaWxlbmFtZV0KKyAgICBiYXNlX2NvbnRlbnQg
PSBOb25lCisgICAgbmV3X2NvbnRlbnQgPSBOb25lCisgICAgaXNfYmluYXJ5ID0gRmFsc2UKKyAg
ICBpZiBoYXNoID09ICIwIiAqIDQwOiAgIyBBbGwtemVybyBoYXNoIGluZGljYXRlcyBubyBiYXNl
IGZpbGUuCisgICAgICBzdGF0dXMgPSAiQSIKKyAgICAgIGJhc2VfY29udGVudCA9ICIiCisgICAg
ZWxzZToKKyAgICAgIHN0YXR1cyA9ICJNIgorICAgICAgYmFzZV9jb250ZW50LCByZXR1cm5jb2Rl
ID0gUnVuU2hlbGxXaXRoUmV0dXJuQ29kZShbImdpdCIsICJzaG93IiwgaGFzaF0pCisgICAgICBp
ZiByZXR1cm5jb2RlOgorICAgICAgICBFcnJvckV4aXQoIkdvdCBlcnJvciBzdGF0dXMgZnJvbSAn
Z2l0IHNob3cgJXMnIiAlIGhhc2gpCisgICAgcmV0dXJuIChiYXNlX2NvbnRlbnQsIG5ld19jb250
ZW50LCBpc19iaW5hcnksIHN0YXR1cykKKworCitjbGFzcyBNZXJjdXJpYWxWQ1MoVmVyc2lvbkNv
bnRyb2xTeXN0ZW0pOgorICAiIiJJbXBsZW1lbnRhdGlvbiBvZiB0aGUgVmVyc2lvbkNvbnRyb2xT
eXN0ZW0gaW50ZXJmYWNlIGZvciBNZXJjdXJpYWwuIiIiCisKKyAgZGVmIF9faW5pdF9fKHNlbGYs
IG9wdGlvbnMsIHJlcG9fZGlyKToKKyAgICBzdXBlcihNZXJjdXJpYWxWQ1MsIHNlbGYpLl9faW5p
dF9fKG9wdGlvbnMpCisgICAgIyBBYnNvbHV0ZSBwYXRoIHRvIHJlcG9zaXRvcnkgKHdlIGNhbiBi
ZSBpbiBhIHN1YmRpcikKKyAgICBzZWxmLnJlcG9fZGlyID0gb3MucGF0aC5ub3JtcGF0aChyZXBv
X2RpcikKKyAgICAjIENvbXB1dGUgdGhlIHN1YmRpcgorICAgIGN3ZCA9IG9zLnBhdGgubm9ybXBh
dGgob3MuZ2V0Y3dkKCkpCisgICAgYXNzZXJ0IGN3ZC5zdGFydHN3aXRoKHNlbGYucmVwb19kaXIp
CisgICAgc2VsZi5zdWJkaXIgPSBjd2RbbGVuKHNlbGYucmVwb19kaXIpOl0ubHN0cmlwKHIiXC8i
KQorICAgIGlmIHNlbGYub3B0aW9ucy5yZXZpc2lvbjoKKyAgICAgIHNlbGYuYmFzZV9yZXYgPSBz
ZWxmLm9wdGlvbnMucmV2aXNpb24KKyAgICBlbHNlOgorICAgICAgc2VsZi5iYXNlX3JldiA9IFJ1
blNoZWxsKFsiaGciLCAicGFyZW50IiwgIi1xIl0pLnNwbGl0KCc6JylbMV0uc3RyaXAoKQorCisg
IGRlZiBfR2V0UmVsUGF0aChzZWxmLCBmaWxlbmFtZSk6CisgICAgIiIiR2V0IHJlbGF0aXZlIHBh
dGggb2YgYSBmaWxlIGFjY29yZGluZyB0byB0aGUgY3VycmVudCBkaXJlY3RvcnksCisgICAgZ2l2
ZW4gaXRzIGxvZ2ljYWwgcGF0aCBpbiB0aGUgcmVwby4iIiIKKyAgICBhc3NlcnQgZmlsZW5hbWUu
c3RhcnRzd2l0aChzZWxmLnN1YmRpciksIGZpbGVuYW1lCisgICAgcmV0dXJuIGZpbGVuYW1lW2xl
bihzZWxmLnN1YmRpcik6XS5sc3RyaXAociJcLyIpCisKKyAgZGVmIEdlbmVyYXRlRGlmZihzZWxm
LCBleHRyYV9hcmdzKToKKyAgICAjIElmIG5vIGZpbGUgc3BlY2lmaWVkLCByZXN0cmljdCB0byB0
aGUgY3VycmVudCBzdWJkaXIKKyAgICBleHRyYV9hcmdzID0gZXh0cmFfYXJncyBvciBbIi4iXQor
ICAgIGNtZCA9IFsiaGciLCAiZGlmZiIsICItLWdpdCIsICItciIsIHNlbGYuYmFzZV9yZXZdICsg
ZXh0cmFfYXJncworICAgIGRhdGEgPSBSdW5TaGVsbChjbWQsIHNpbGVudF9vaz1UcnVlKQorICAg
IHN2bmRpZmYgPSBbXQorICAgIGZpbGVjb3VudCA9IDAKKyAgICBmb3IgbGluZSBpbiBkYXRhLnNw
bGl0bGluZXMoKToKKyAgICAgIG0gPSByZS5tYXRjaCgiZGlmZiAtLWdpdCBhLyhcUyspIGIvKFxT
KykiLCBsaW5lKQorICAgICAgaWYgbToKKyAgICAgICAgIyBNb2RpZnkgbGluZSB0byBtYWtlIGl0
IGxvb2sgbGlrZSBhcyBpdCBjb21lcyBmcm9tIHN2biBkaWZmLgorICAgICAgICAjIFdpdGggdGhp
cyBtb2RpZmljYXRpb24gbm8gY2hhbmdlcyBvbiB0aGUgc2VydmVyIHNpZGUgYXJlIHJlcXVpcmVk
CisgICAgICAgICMgdG8gbWFrZSB1cGxvYWQucHkgd29yayB3aXRoIE1lcmN1cmlhbCByZXBvcy4K
KyAgICAgICAgIyBOT1RFOiBmb3IgcHJvcGVyIGhhbmRsaW5nIG9mIG1vdmVkL2NvcGllZCBmaWxl
cywgd2UgaGF2ZSB0byB1c2UKKyAgICAgICAgIyB0aGUgc2Vjb25kIGZpbGVuYW1lLgorICAgICAg
ICBmaWxlbmFtZSA9IG0uZ3JvdXAoMikKKyAgICAgICAgc3ZuZGlmZi5hcHBlbmQoIkluZGV4OiAl
cyIgJSBmaWxlbmFtZSkKKyAgICAgICAgc3ZuZGlmZi5hcHBlbmQoIj0iICogNjcpCisgICAgICAg
IGZpbGVjb3VudCArPSAxCisgICAgICAgIGxvZ2dpbmcuaW5mbyhsaW5lKQorICAgICAgZWxzZToK
KyAgICAgICAgc3ZuZGlmZi5hcHBlbmQobGluZSkKKyAgICBpZiBub3QgZmlsZWNvdW50OgorICAg
ICAgRXJyb3JFeGl0KCJObyB2YWxpZCBwYXRjaGVzIGZvdW5kIGluIG91dHB1dCBmcm9tIGhnIGRp
ZmYiKQorICAgIHJldHVybiAiXG4iLmpvaW4oc3ZuZGlmZikgKyAiXG4iCisKKyAgZGVmIEdldFVu
a25vd25GaWxlcyhzZWxmKToKKyAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGZpbGVzIHVua25vd24g
dG8gdGhlIFZDUy4iIiIKKyAgICBhcmdzID0gW10KKyAgICBzdGF0dXMgPSBSdW5TaGVsbChbImhn
IiwgInN0YXR1cyIsICItLXJldiIsIHNlbGYuYmFzZV9yZXYsICItdSIsICIuIl0sCisgICAgICAg
IHNpbGVudF9vaz1UcnVlKQorICAgIHVua25vd25fZmlsZXMgPSBbXQorICAgIGZvciBsaW5lIGlu
IHN0YXR1cy5zcGxpdGxpbmVzKCk6CisgICAgICBzdCwgZm4gPSBsaW5lLnNwbGl0KCIgIiwgMSkK
KyAgICAgIGlmIHN0ID09ICI/IjoKKyAgICAgICAgdW5rbm93bl9maWxlcy5hcHBlbmQoZm4pCisg
ICAgcmV0dXJuIHVua25vd25fZmlsZXMKKworICBkZWYgR2V0QmFzZUZpbGUoc2VsZiwgZmlsZW5h
bWUpOgorICAgICMgImhnIHN0YXR1cyIgYW5kICJoZyBjYXQiIGJvdGggdGFrZSBhIHBhdGggcmVs
YXRpdmUgdG8gdGhlIGN1cnJlbnQgc3ViZGlyCisgICAgIyByYXRoZXIgdGhhbiB0byB0aGUgcmVw
byByb290LCBidXQgImhnIGRpZmYiIGhhcyBnaXZlbiB1cyB0aGUgZnVsbCBwYXRoCisgICAgIyB0
byB0aGUgcmVwbyByb290LgorICAgIGJhc2VfY29udGVudCA9ICIiCisgICAgbmV3X2NvbnRlbnQg
PSBOb25lCisgICAgaXNfYmluYXJ5ID0gRmFsc2UKKyAgICBvbGRyZWxwYXRoID0gcmVscGF0aCA9
IHNlbGYuX0dldFJlbFBhdGgoZmlsZW5hbWUpCisgICAgIyAiaGcgc3RhdHVzIC1DIiByZXR1cm5z
IHR3byBsaW5lcyBmb3IgbW92ZWQvY29waWVkIGZpbGVzLCBvbmUgb3RoZXJ3aXNlCisgICAgb3V0
ID0gUnVuU2hlbGwoWyJoZyIsICJzdGF0dXMiLCAiLUMiLCAiLS1yZXYiLCBzZWxmLmJhc2VfcmV2
LCByZWxwYXRoXSkKKyAgICBvdXQgPSBvdXQuc3BsaXRsaW5lcygpCisgICAgIyBIQUNLOiBzdHJp
cCBlcnJvciBtZXNzYWdlIGFib3V0IG1pc3NpbmcgZmlsZS9kaXJlY3RvcnkgaWYgaXQgaXNuJ3Qg
aW4KKyAgICAjIHRoZSB3b3JraW5nIGNvcHkKKyAgICBpZiBvdXRbMF0uc3RhcnRzd2l0aCgnJXM6
ICcgJSByZWxwYXRoKToKKyAgICAgIG91dCA9IG91dFsxOl0KKyAgICBpZiBsZW4ob3V0KSA+IDE6
CisgICAgICAjIE1vdmVkL2NvcGllZCA9PiBjb25zaWRlcmVkIGFzIG1vZGlmaWVkLCB1c2Ugb2xk
IGZpbGVuYW1lIHRvCisgICAgICAjIHJldHJpZXZlIGJhc2UgY29udGVudHMKKyAgICAgIG9sZHJl
bHBhdGggPSBvdXRbMV0uc3RyaXAoKQorICAgICAgc3RhdHVzID0gIk0iCisgICAgZWxzZToKKyAg
ICAgIHN0YXR1cywgXyA9IG91dFswXS5zcGxpdCgnICcsIDEpCisgICAgaWYgc3RhdHVzICE9ICJB
IjoKKyAgICAgIGJhc2VfY29udGVudCA9IFJ1blNoZWxsKFsiaGciLCAiY2F0IiwgIi1yIiwgc2Vs
Zi5iYXNlX3Jldiwgb2xkcmVscGF0aF0sCisgICAgICAgIHNpbGVudF9vaz1UcnVlKQorICAgICAg
aXNfYmluYXJ5ID0gIlwwIiBpbiBiYXNlX2NvbnRlbnQgICMgTWVyY3VyaWFsJ3MgaGV1cmlzdGlj
CisgICAgaWYgc3RhdHVzICE9ICJSIjoKKyAgICAgIG5ld19jb250ZW50ID0gb3BlbihyZWxwYXRo
LCAicmIiKS5yZWFkKCkKKyAgICAgIGlzX2JpbmFyeSA9IGlzX2JpbmFyeSBvciAiXDAiIGluIG5l
d19jb250ZW50CisgICAgaWYgaXNfYmluYXJ5IGFuZCBiYXNlX2NvbnRlbnQ6CisgICAgICAjIEZl
dGNoIGFnYWluIHdpdGhvdXQgY29udmVydGluZyBuZXdsaW5lcworICAgICAgYmFzZV9jb250ZW50
ID0gUnVuU2hlbGwoWyJoZyIsICJjYXQiLCAiLXIiLCBzZWxmLmJhc2VfcmV2LCBvbGRyZWxwYXRo
XSwKKyAgICAgICAgc2lsZW50X29rPVRydWUsIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSkKKyAg
ICBpZiBub3QgaXNfYmluYXJ5IG9yIG5vdCBzZWxmLklzSW1hZ2UocmVscGF0aCk6CisgICAgICBu
ZXdfY29udGVudCA9IE5vbmUKKyAgICByZXR1cm4gYmFzZV9jb250ZW50LCBuZXdfY29udGVudCwg
aXNfYmluYXJ5LCBzdGF0dXMKKworCisjIE5PVEU6IFRoZSBTcGxpdFBhdGNoIGZ1bmN0aW9uIGlz
IGR1cGxpY2F0ZWQgaW4gZW5naW5lLnB5LCBrZWVwIHRoZW0gaW4gc3luYy4KK2RlZiBTcGxpdFBh
dGNoKGRhdGEpOgorICAiIiJTcGxpdHMgYSBwYXRjaCBpbnRvIHNlcGFyYXRlIHBpZWNlcyBmb3Ig
ZWFjaCBmaWxlLgorCisgIEFyZ3M6CisgICAgZGF0YTogQSBzdHJpbmcgY29udGFpbmluZyB0aGUg
b3V0cHV0IG9mIHN2biBkaWZmLgorCisgIFJldHVybnM6CisgICAgQSBsaXN0IG9mIDItdHVwbGUg
KGZpbGVuYW1lLCB0ZXh0KSB3aGVyZSB0ZXh0IGlzIHRoZSBzdm4gZGlmZiBvdXRwdXQKKyAgICAg
IHBlcnRhaW5pbmcgdG8gZmlsZW5hbWUuCisgICIiIgorICBwYXRjaGVzID0gW10KKyAgZmlsZW5h
bWUgPSBOb25lCisgIGRpZmYgPSBbXQorICBmb3IgbGluZSBpbiBkYXRhLnNwbGl0bGluZXMoVHJ1
ZSk6CisgICAgbmV3X2ZpbGVuYW1lID0gTm9uZQorICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnSW5k
ZXg6Jyk6CisgICAgICB1bnVzZWQsIG5ld19maWxlbmFtZSA9IGxpbmUuc3BsaXQoJzonLCAxKQor
ICAgICAgbmV3X2ZpbGVuYW1lID0gbmV3X2ZpbGVuYW1lLnN0cmlwKCkKKyAgICBlbGlmIGxpbmUu
c3RhcnRzd2l0aCgnUHJvcGVydHkgY2hhbmdlcyBvbjonKToKKyAgICAgIHVudXNlZCwgdGVtcF9m
aWxlbmFtZSA9IGxpbmUuc3BsaXQoJzonLCAxKQorICAgICAgIyBXaGVuIGEgZmlsZSBpcyBtb2Rp
ZmllZCwgcGF0aHMgdXNlICcvJyBiZXR3ZWVuIGRpcmVjdG9yaWVzLCBob3dldmVyCisgICAgICAj
IHdoZW4gYSBwcm9wZXJ0eSBpcyBtb2RpZmllZCAnXCcgaXMgdXNlZCBvbiBXaW5kb3dzLiAgTWFr
ZSB0aGVtIHRoZSBzYW1lCisgICAgICAjIG90aGVyd2lzZSB0aGUgZmlsZSBzaG93cyB1cCB0d2lj
ZS4KKyAgICAgIHRlbXBfZmlsZW5hbWUgPSB0ZW1wX2ZpbGVuYW1lLnN0cmlwKCkucmVwbGFjZSgn
XFwnLCAnLycpCisgICAgICBpZiB0ZW1wX2ZpbGVuYW1lICE9IGZpbGVuYW1lOgorICAgICAgICAj
IEZpbGUgaGFzIHByb3BlcnR5IGNoYW5nZXMgYnV0IG5vIG1vZGlmaWNhdGlvbnMsIGNyZWF0ZSBh
IG5ldyBkaWZmLgorICAgICAgICBuZXdfZmlsZW5hbWUgPSB0ZW1wX2ZpbGVuYW1lCisgICAgaWYg
bmV3X2ZpbGVuYW1lOgorICAgICAgaWYgZmlsZW5hbWUgYW5kIGRpZmY6CisgICAgICAgIHBhdGNo
ZXMuYXBwZW5kKChmaWxlbmFtZSwgJycuam9pbihkaWZmKSkpCisgICAgICBmaWxlbmFtZSA9IG5l
d19maWxlbmFtZQorICAgICAgZGlmZiA9IFtsaW5lXQorICAgICAgY29udGludWUKKyAgICBpZiBk
aWZmIGlzIG5vdCBOb25lOgorICAgICAgZGlmZi5hcHBlbmQobGluZSkKKyAgaWYgZmlsZW5hbWUg
YW5kIGRpZmY6CisgICAgcGF0Y2hlcy5hcHBlbmQoKGZpbGVuYW1lLCAnJy5qb2luKGRpZmYpKSkK
KyAgcmV0dXJuIHBhdGNoZXMKKworCitkZWYgVXBsb2FkU2VwYXJhdGVQYXRjaGVzKGlzc3VlLCBy
cGNfc2VydmVyLCBwYXRjaHNldCwgZGF0YSwgb3B0aW9ucyk6CisgICIiIlVwbG9hZHMgYSBzZXBh
cmF0ZSBwYXRjaCBmb3IgZWFjaCBmaWxlIGluIHRoZSBkaWZmIG91dHB1dC4KKworICBSZXR1cm5z
IGEgbGlzdCBvZiBbcGF0Y2hfa2V5LCBmaWxlbmFtZV0gZm9yIGVhY2ggZmlsZS4KKyAgIiIiCisg
IHBhdGNoZXMgPSBTcGxpdFBhdGNoKGRhdGEpCisgIHJ2ID0gW10KKyAgZm9yIHBhdGNoIGluIHBh
dGNoZXM6CisgICAgaWYgbGVuKHBhdGNoWzFdKSA+IE1BWF9VUExPQURfU0laRToKKyAgICAgIHBy
aW50ICgiTm90IHVwbG9hZGluZyB0aGUgcGF0Y2ggZm9yICIgKyBwYXRjaFswXSArCisgICAgICAg
ICAgICAgIiBiZWNhdXNlIHRoZSBmaWxlIGlzIHRvbyBsYXJnZS4iKQorICAgICAgY29udGludWUK
KyAgICBmb3JtX2ZpZWxkcyA9IFsoImZpbGVuYW1lIiwgcGF0Y2hbMF0pXQorICAgIGlmIG5vdCBv
cHRpb25zLmRvd25sb2FkX2Jhc2U6CisgICAgICBmb3JtX2ZpZWxkcy5hcHBlbmQoKCJjb250ZW50
X3VwbG9hZCIsICIxIikpCisgICAgZmlsZXMgPSBbKCJkYXRhIiwgImRhdGEuZGlmZiIsIHBhdGNo
WzFdKV0KKyAgICBjdHlwZSwgYm9keSA9IEVuY29kZU11bHRpcGFydEZvcm1EYXRhKGZvcm1fZmll
bGRzLCBmaWxlcykKKyAgICB1cmwgPSAiLyVkL3VwbG9hZF9wYXRjaC8lZCIgJSAoaW50KGlzc3Vl
KSwgaW50KHBhdGNoc2V0KSkKKyAgICBwcmludCAiVXBsb2FkaW5nIHBhdGNoIGZvciAiICsgcGF0
Y2hbMF0KKyAgICByZXNwb25zZV9ib2R5ID0gcnBjX3NlcnZlci5TZW5kKHVybCwgYm9keSwgY29u
dGVudF90eXBlPWN0eXBlKQorICAgIGxpbmVzID0gcmVzcG9uc2VfYm9keS5zcGxpdGxpbmVzKCkK
KyAgICBpZiBub3QgbGluZXMgb3IgbGluZXNbMF0gIT0gIk9LIjoKKyAgICAgIFN0YXR1c1VwZGF0
ZSgiICAtLT4gJXMiICUgcmVzcG9uc2VfYm9keSkKKyAgICAgIHN5cy5leGl0KDEpCisgICAgcnYu
YXBwZW5kKFtsaW5lc1sxXSwgcGF0Y2hbMF1dKQorICByZXR1cm4gcnYKKworCitkZWYgR3Vlc3NW
Q1Mob3B0aW9ucyk6CisgICIiIkhlbHBlciB0byBndWVzcyB0aGUgdmVyc2lvbiBjb250cm9sIHN5
c3RlbS4KKworICBUaGlzIGV4YW1pbmVzIHRoZSBjdXJyZW50IGRpcmVjdG9yeSwgZ3Vlc3NlcyB3
aGljaCBWZXJzaW9uQ29udHJvbFN5c3RlbQorICB3ZSdyZSB1c2luZywgYW5kIHJldHVybnMgYW4g
aW5zdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGNsYXNzLiAgRXhpdCB3aXRoIGFuCisgIGVycm9y
IGlmIHdlIGNhbid0IGZpZ3VyZSBpdCBvdXQuCisKKyAgUmV0dXJuczoKKyAgICBBIFZlcnNpb25D
b250cm9sU3lzdGVtIGluc3RhbmNlLiBFeGl0cyBpZiB0aGUgVkNTIGNhbid0IGJlIGd1ZXNzZWQu
CisgICIiIgorICAjIE1lcmN1cmlhbCBoYXMgYSBjb21tYW5kIHRvIGdldCB0aGUgYmFzZSBkaXJl
Y3Rvcnkgb2YgYSByZXBvc2l0b3J5CisgICMgVHJ5IHJ1bm5pbmcgaXQsIGJ1dCBkb24ndCBkaWUg
aWYgd2UgZG9uJ3QgaGF2ZSBoZyBpbnN0YWxsZWQuCisgICMgTk9URTogd2UgdHJ5IE1lcmN1cmlh
bCBmaXJzdCBhcyBpdCBjYW4gc2l0IG9uIHRvcCBvZiBhbiBTVk4gd29ya2luZyBjb3B5LgorICB0
cnk6CisgICAgb3V0LCByZXR1cm5jb2RlID0gUnVuU2hlbGxXaXRoUmV0dXJuQ29kZShbImhnIiwg
InJvb3QiXSkKKyAgICBpZiByZXR1cm5jb2RlID09IDA6CisgICAgICByZXR1cm4gTWVyY3VyaWFs
VkNTKG9wdGlvbnMsIG91dC5zdHJpcCgpKQorICBleGNlcHQgT1NFcnJvciwgKGVycm5vLCBtZXNz
YWdlKToKKyAgICBpZiBlcnJubyAhPSAyOiAgIyBFTk9FTlQgLS0gdGhleSBkb24ndCBoYXZlIGhn
IGluc3RhbGxlZC4KKyAgICAgIHJhaXNlCisKKyAgIyBTdWJ2ZXJzaW9uIGhhcyBhIC5zdm4gaW4g
YWxsIHdvcmtpbmcgZGlyZWN0b3JpZXMuCisgIGlmIG9zLnBhdGguaXNkaXIoJy5zdm4nKToKKyAg
ICBsb2dnaW5nLmluZm8oIkd1ZXNzZWQgVkNTID0gU3VidmVyc2lvbiIpCisgICAgcmV0dXJuIFN1
YnZlcnNpb25WQ1Mob3B0aW9ucykKKworICAjIEdpdCBoYXMgYSBjb21tYW5kIHRvIHRlc3QgaWYg
eW91J3JlIGluIGEgZ2l0IHRyZWUuCisgICMgVHJ5IHJ1bm5pbmcgaXQsIGJ1dCBkb24ndCBkaWUg
aWYgd2UgZG9uJ3QgaGF2ZSBnaXQgaW5zdGFsbGVkLgorICB0cnk6CisgICAgb3V0LCByZXR1cm5j
b2RlID0gUnVuU2hlbGxXaXRoUmV0dXJuQ29kZShbImdpdCIsICJyZXYtcGFyc2UiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWlzLWluc2lkZS13b3Jr
LXRyZWUiXSkKKyAgICBpZiByZXR1cm5jb2RlID09IDA6CisgICAgICByZXR1cm4gR2l0VkNTKG9w
dGlvbnMpCisgIGV4Y2VwdCBPU0Vycm9yLCAoZXJybm8sIG1lc3NhZ2UpOgorICAgIGlmIGVycm5v
ICE9IDI6ICAjIEVOT0VOVCAtLSB0aGV5IGRvbid0IGhhdmUgZ2l0IGluc3RhbGxlZC4KKyAgICAg
IHJhaXNlCisKKyAgRXJyb3JFeGl0KCgiQ291bGQgbm90IGd1ZXNzIHZlcnNpb24gY29udHJvbCBz
eXN0ZW0uICIKKyAgICAgICAgICAgICAiQXJlIHlvdSBpbiBhIHdvcmtpbmcgY29weSBkaXJlY3Rv
cnk/IikpCisKKworZGVmIFJlYWxNYWluKGFyZ3YsIGRhdGE9Tm9uZSk6CisgICIiIlRoZSByZWFs
IG1haW4gZnVuY3Rpb24uCisKKyAgQXJnczoKKyAgICBhcmd2OiBDb21tYW5kIGxpbmUgYXJndW1l
bnRzLgorICAgIGRhdGE6IERpZmYgY29udGVudHMuIElmIE5vbmUgKGRlZmF1bHQpIHRoZSBkaWZm
IGlzIGdlbmVyYXRlZCBieQorICAgICAgdGhlIFZlcnNpb25Db250cm9sU3lzdGVtIGltcGxlbWVu
dGF0aW9uIHJldHVybmVkIGJ5IEd1ZXNzVkNTKCkuCisKKyAgUmV0dXJuczoKKyAgICBBIDItdHVw
bGUgKGlzc3VlIGlkLCBwYXRjaHNldCBpZCkuCisgICAgVGhlIHBhdGNoc2V0IGlkIGlzIE5vbmUg
aWYgdGhlIGJhc2UgZmlsZXMgYXJlIG5vdCB1cGxvYWRlZCBieSB0aGlzCisgICAgc2NyaXB0IChh
cHBsaWVzIG9ubHkgdG8gU1ZOIGNoZWNrb3V0cykuCisgICIiIgorICBsb2dnaW5nLmJhc2ljQ29u
ZmlnKGZvcm1hdD0oIiUoYXNjdGltZSkuMTlzICUobGV2ZWxuYW1lKXMgJShmaWxlbmFtZSlzOiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlKGxpbmVubylzICUobWVzc2FnZSlzICIp
KQorICBvcy5lbnZpcm9uWydMQ19BTEwnXSA9ICdDJworICBvcHRpb25zLCBhcmdzID0gcGFyc2Vy
LnBhcnNlX2FyZ3MoYXJndlsxOl0pCisgIGdsb2JhbCB2ZXJib3NpdHkKKyAgdmVyYm9zaXR5ID0g
b3B0aW9ucy52ZXJib3NlCisgIGlmIHZlcmJvc2l0eSA+PSAzOgorICAgIGxvZ2dpbmcuZ2V0TG9n
Z2VyKCkuc2V0TGV2ZWwobG9nZ2luZy5ERUJVRykKKyAgZWxpZiB2ZXJib3NpdHkgPj0gMjoKKyAg
ICBsb2dnaW5nLmdldExvZ2dlcigpLnNldExldmVsKGxvZ2dpbmcuSU5GTykKKyAgdmNzID0gR3Vl
c3NWQ1Mob3B0aW9ucykKKyAgaWYgaXNpbnN0YW5jZSh2Y3MsIFN1YnZlcnNpb25WQ1MpOgorICAg
ICMgYmFzZSBmaWVsZCBpcyBvbmx5IGFsbG93ZWQgZm9yIFN1YnZlcnNpb24uCisgICAgIyBOb3Rl
OiBGZXRjaGluZyBiYXNlIGZpbGVzIG1heSBiZWNvbWUgZGVwcmVjYXRlZCBpbiBmdXR1cmUgcmVs
ZWFzZXMuCisgICAgYmFzZSA9IHZjcy5HdWVzc0Jhc2Uob3B0aW9ucy5kb3dubG9hZF9iYXNlKQor
ICBlbHNlOgorICAgIGJhc2UgPSBOb25lCisgIGlmIG5vdCBiYXNlIGFuZCBvcHRpb25zLmRvd25s
b2FkX2Jhc2U6CisgICAgb3B0aW9ucy5kb3dubG9hZF9iYXNlID0gVHJ1ZQorICAgIGxvZ2dpbmcu
aW5mbygiRW5hYmxlZCB1cGxvYWQgb2YgYmFzZSBmaWxlIikKKyAgaWYgbm90IG9wdGlvbnMuYXNz
dW1lX3llczoKKyAgICB2Y3MuQ2hlY2tGb3JVbmtub3duRmlsZXMoKQorICBpZiBkYXRhIGlzIE5v
bmU6CisgICAgZGF0YSA9IHZjcy5HZW5lcmF0ZURpZmYoYXJncykKKyAgZmlsZXMgPSB2Y3MuR2V0
QmFzZUZpbGVzKGRhdGEpCisgIGlmIHZlcmJvc2l0eSA+PSAxOgorICAgIHByaW50ICJVcGxvYWQg
c2VydmVyOiIsIG9wdGlvbnMuc2VydmVyLCAiKGNoYW5nZSB3aXRoIC1zLy0tc2VydmVyKSIKKyAg
aWYgb3B0aW9ucy5pc3N1ZToKKyAgICBwcm9tcHQgPSAiTWVzc2FnZSBkZXNjcmliaW5nIHRoaXMg
cGF0Y2ggc2V0OiAiCisgIGVsc2U6CisgICAgcHJvbXB0ID0gIk5ldyBpc3N1ZSBzdWJqZWN0OiAi
CisgIG1lc3NhZ2UgPSBvcHRpb25zLm1lc3NhZ2Ugb3IgcmF3X2lucHV0KHByb21wdCkuc3RyaXAo
KQorICBpZiBub3QgbWVzc2FnZToKKyAgICBFcnJvckV4aXQoIkEgbm9uLWVtcHR5IG1lc3NhZ2Ug
aXMgcmVxdWlyZWQiKQorICBycGNfc2VydmVyID0gR2V0UnBjU2VydmVyKG9wdGlvbnMpCisgIGZv
cm1fZmllbGRzID0gWygic3ViamVjdCIsIG1lc3NhZ2UpXQorICBpZiBiYXNlOgorICAgIGZvcm1f
ZmllbGRzLmFwcGVuZCgoImJhc2UiLCBiYXNlKSkKKyAgaWYgb3B0aW9ucy5pc3N1ZToKKyAgICBm
b3JtX2ZpZWxkcy5hcHBlbmQoKCJpc3N1ZSIsIHN0cihvcHRpb25zLmlzc3VlKSkpCisgIGlmIG9w
dGlvbnMuZW1haWw6CisgICAgZm9ybV9maWVsZHMuYXBwZW5kKCgidXNlciIsIG9wdGlvbnMuZW1h
aWwpKQorICBpZiBvcHRpb25zLnJldmlld2VyczoKKyAgICBmb3IgcmV2aWV3ZXIgaW4gb3B0aW9u
cy5yZXZpZXdlcnMuc3BsaXQoJywnKToKKyAgICAgIGlmICJAIiBpbiByZXZpZXdlciBhbmQgbm90
IHJldmlld2VyLnNwbGl0KCJAIilbMV0uY291bnQoIi4iKSA9PSAxOgorICAgICAgICBFcnJvckV4
aXQoIkludmFsaWQgZW1haWwgYWRkcmVzczogJXMiICUgcmV2aWV3ZXIpCisgICAgZm9ybV9maWVs
ZHMuYXBwZW5kKCgicmV2aWV3ZXJzIiwgb3B0aW9ucy5yZXZpZXdlcnMpKQorICBpZiBvcHRpb25z
LmNjOgorICAgIGZvciBjYyBpbiBvcHRpb25zLmNjLnNwbGl0KCcsJyk6CisgICAgICBpZiAiQCIg
aW4gY2MgYW5kIG5vdCBjYy5zcGxpdCgiQCIpWzFdLmNvdW50KCIuIikgPT0gMToKKyAgICAgICAg
RXJyb3JFeGl0KCJJbnZhbGlkIGVtYWlsIGFkZHJlc3M6ICVzIiAlIGNjKQorICAgIGZvcm1fZmll
bGRzLmFwcGVuZCgoImNjIiwgb3B0aW9ucy5jYykpCisgIGRlc2NyaXB0aW9uID0gb3B0aW9ucy5k
ZXNjcmlwdGlvbgorICBpZiBvcHRpb25zLmRlc2NyaXB0aW9uX2ZpbGU6CisgICAgaWYgb3B0aW9u
cy5kZXNjcmlwdGlvbjoKKyAgICAgIEVycm9yRXhpdCgiQ2FuJ3Qgc3BlY2lmeSBkZXNjcmlwdGlv
biBhbmQgZGVzY3JpcHRpb25fZmlsZSIpCisgICAgZmlsZSA9IG9wZW4ob3B0aW9ucy5kZXNjcmlw
dGlvbl9maWxlLCAncicpCisgICAgZGVzY3JpcHRpb24gPSBmaWxlLnJlYWQoKQorICAgIGZpbGUu
Y2xvc2UoKQorICBpZiBkZXNjcmlwdGlvbjoKKyAgICBmb3JtX2ZpZWxkcy5hcHBlbmQoKCJkZXNj
cmlwdGlvbiIsIGRlc2NyaXB0aW9uKSkKKyAgIyBTZW5kIGEgaGFzaCBvZiBhbGwgdGhlIGJhc2Ug
ZmlsZSBzbyB0aGUgc2VydmVyIGNhbiBkZXRlcm1pbmUgaWYgYSBjb3B5CisgICMgYWxyZWFkeSBl
eGlzdHMgaW4gYW4gZWFybGllciBwYXRjaHNldC4KKyAgYmFzZV9oYXNoZXMgPSAiIgorICBmb3Ig
ZmlsZSwgaW5mbyBpbiBmaWxlcy5pdGVyaXRlbXMoKToKKyAgICBpZiBub3QgaW5mb1swXSBpcyBO
b25lOgorICAgICAgY2hlY2tzdW0gPSBtZDUubmV3KGluZm9bMF0pLmhleGRpZ2VzdCgpCisgICAg
ICBpZiBiYXNlX2hhc2hlczoKKyAgICAgICAgYmFzZV9oYXNoZXMgKz0gInwiCisgICAgICBiYXNl
X2hhc2hlcyArPSBjaGVja3N1bSArICI6IiArIGZpbGUKKyAgZm9ybV9maWVsZHMuYXBwZW5kKCgi
YmFzZV9oYXNoZXMiLCBiYXNlX2hhc2hlcykpCisgICMgSWYgd2UncmUgdXBsb2FkaW5nIGJhc2Ug
ZmlsZXMsIGRvbid0IHNlbmQgdGhlIGVtYWlsIGJlZm9yZSB0aGUgdXBsb2Fkcywgc28KKyAgIyB0
aGF0IGl0IGNvbnRhaW5zIHRoZSBmaWxlIHN0YXR1cy4KKyAgaWYgb3B0aW9ucy5zZW5kX21haWwg
YW5kIG9wdGlvbnMuZG93bmxvYWRfYmFzZToKKyAgICBmb3JtX2ZpZWxkcy5hcHBlbmQoKCJzZW5k
X21haWwiLCAiMSIpKQorICBpZiBub3Qgb3B0aW9ucy5kb3dubG9hZF9iYXNlOgorICAgIGZvcm1f
ZmllbGRzLmFwcGVuZCgoImNvbnRlbnRfdXBsb2FkIiwgIjEiKSkKKyAgaWYgbGVuKGRhdGEpID4g
TUFYX1VQTE9BRF9TSVpFOgorICAgIHByaW50ICJQYXRjaCBpcyBsYXJnZSwgc28gdXBsb2FkaW5n
IGZpbGUgcGF0Y2hlcyBzZXBhcmF0ZWx5LiIKKyAgICB1cGxvYWRlZF9kaWZmX2ZpbGUgPSBbXQor
ICAgIGZvcm1fZmllbGRzLmFwcGVuZCgoInNlcGFyYXRlX3BhdGNoZXMiLCAiMSIpKQorICBlbHNl
OgorICAgIHVwbG9hZGVkX2RpZmZfZmlsZSA9IFsoImRhdGEiLCAiZGF0YS5kaWZmIiwgZGF0YSld
CisgIGN0eXBlLCBib2R5ID0gRW5jb2RlTXVsdGlwYXJ0Rm9ybURhdGEoZm9ybV9maWVsZHMsIHVw
bG9hZGVkX2RpZmZfZmlsZSkKKyAgcmVzcG9uc2VfYm9keSA9IHJwY19zZXJ2ZXIuU2VuZCgiL3Vw
bG9hZCIsIGJvZHksIGNvbnRlbnRfdHlwZT1jdHlwZSkKKyAgcGF0Y2hzZXQgPSBOb25lCisgIGlm
IG5vdCBvcHRpb25zLmRvd25sb2FkX2Jhc2Ugb3Igbm90IHVwbG9hZGVkX2RpZmZfZmlsZToKKyAg
ICBsaW5lcyA9IHJlc3BvbnNlX2JvZHkuc3BsaXRsaW5lcygpCisgICAgaWYgbGVuKGxpbmVzKSA+
PSAyOgorICAgICAgbXNnID0gbGluZXNbMF0KKyAgICAgIHBhdGNoc2V0ID0gbGluZXNbMV0uc3Ry
aXAoKQorICAgICAgcGF0Y2hlcyA9IFt4LnNwbGl0KCIgIiwgMSkgZm9yIHggaW4gbGluZXNbMjpd
XQorICAgIGVsc2U6CisgICAgICBtc2cgPSByZXNwb25zZV9ib2R5CisgIGVsc2U6CisgICAgbXNn
ID0gcmVzcG9uc2VfYm9keQorICBTdGF0dXNVcGRhdGUobXNnKQorICBpZiBub3QgcmVzcG9uc2Vf
Ym9keS5zdGFydHN3aXRoKCJJc3N1ZSBjcmVhdGVkLiIpIGFuZCBcCisgIG5vdCByZXNwb25zZV9i
b2R5LnN0YXJ0c3dpdGgoIklzc3VlIHVwZGF0ZWQuIik6CisgICAgc3lzLmV4aXQoMCkKKyAgaXNz
dWUgPSBtc2dbbXNnLnJmaW5kKCIvIikrMTpdCisKKyAgaWYgbm90IHVwbG9hZGVkX2RpZmZfZmls
ZToKKyAgICByZXN1bHQgPSBVcGxvYWRTZXBhcmF0ZVBhdGNoZXMoaXNzdWUsIHJwY19zZXJ2ZXIs
IHBhdGNoc2V0LCBkYXRhLCBvcHRpb25zKQorICAgIGlmIG5vdCBvcHRpb25zLmRvd25sb2FkX2Jh
c2U6CisgICAgICBwYXRjaGVzID0gcmVzdWx0CisKKyAgaWYgbm90IG9wdGlvbnMuZG93bmxvYWRf
YmFzZToKKyAgICB2Y3MuVXBsb2FkQmFzZUZpbGVzKGlzc3VlLCBycGNfc2VydmVyLCBwYXRjaGVz
LCBwYXRjaHNldCwgb3B0aW9ucywgZmlsZXMpCisgICAgaWYgb3B0aW9ucy5zZW5kX21haWw6Cisg
ICAgICBycGNfc2VydmVyLlNlbmQoIi8iICsgaXNzdWUgKyAiL21haWwiLCBwYXlsb2FkPSIiKQor
ICByZXR1cm4gaXNzdWUsIHBhdGNoc2V0CisKKworZGVmIG1haW4oKToKKyAgdHJ5OgorICAgIFJl
YWxNYWluKHN5cy5hcmd2KQorICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgcHJpbnQK
KyAgICBTdGF0dXNVcGRhdGUoIkludGVycnVwdGVkLiIpCisgICAgc3lzLmV4aXQoMSkKKworCitp
ZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICBtYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0
ZXN0L3NjcmlwdHMvdXBsb2FkX2d0ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2NyaXB0cy91cGxvYWRf
Z3Rlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYmUxOWFlODA5MTFjM2FkNjdlMTI3Mzc1MWM3NDdjZDkxNTUy
OGY5MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NjcmlwdHMvdXBsb2FkX2d0ZXN0
LnB5CkBAIC0wLDAgKzEsNzggQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmln
aHQgMjAwOSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKKyIiInVwbG9hZF9ndGVzdC5weSB2MC4xLjAgLS0gdXBsb2FkcyBhIEdvb2dsZSBU
ZXN0IHBhdGNoIGZvciByZXZpZXcuCisKK1RoaXMgc2ltcGxlIHdyYXBwZXIgcGFzc2VzIGFsbCBj
b21tYW5kIGxpbmUgZmxhZ3MgYW5kCistLWNjPWdvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3Jv
dXBzLmNvbSB0byB1cGxvYWQucHkuCisKK1VTQUdFOiB1cGxvYWRfZ3Rlc3QucHkgW29wdGlvbnMg
Zm9yIHVwbG9hZC5weV0KKyIiIgorCitfX2F1dGhvcl9fID0gJ3dhbkBnb29nbGUuY29tIChaaGFu
eW9uZyBXYW4pJworCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKKworQ0NfRkxBRyA9ICctLWNjPScK
K0dURVNUX0dST1VQID0gJ2dvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBzLmNvbScKKwor
CitkZWYgbWFpbigpOgorICAjIEZpbmRzIHRoZSBwYXRoIHRvIHVwbG9hZC5weSwgYXNzdW1pbmcg
aXQgaXMgaW4gdGhlIHNhbWUgZGlyZWN0b3J5CisgICMgYXMgdGhpcyBmaWxlLgorICBteV9kaXIg
PSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSkKKyAgdXBsb2FkX3B5
X3BhdGggPSBvcy5wYXRoLmpvaW4obXlfZGlyLCAndXBsb2FkLnB5JykKKworICAjIEFkZHMgR29v
Z2xlIFRlc3QgZGlzY3Vzc2lvbiBncm91cCB0byB0aGUgY2MgbGluZSBpZiBpdCdzIG5vdCB0aGVy
ZQorICAjIGFscmVhZHkuCisgIHVwbG9hZF9weV9hcmd2ID0gW3VwbG9hZF9weV9wYXRoXQorICBm
b3VuZF9jY19mbGFnID0gRmFsc2UKKyAgZm9yIGFyZyBpbiBzeXMuYXJndlsxOl06CisgICAgaWYg
YXJnLnN0YXJ0c3dpdGgoQ0NfRkxBRyk6CisgICAgICBmb3VuZF9jY19mbGFnID0gVHJ1ZQorICAg
ICAgY2NfbGluZSA9IGFyZ1tsZW4oQ0NfRkxBRyk6XQorICAgICAgY2NfbGlzdCA9IFthZGRyIGZv
ciBhZGRyIGluIGNjX2xpbmUuc3BsaXQoJywnKSBpZiBhZGRyXQorICAgICAgaWYgR1RFU1RfR1JP
VVAgbm90IGluIGNjX2xpc3Q6CisgICAgICAgIGNjX2xpc3QuYXBwZW5kKEdURVNUX0dST1VQKQor
ICAgICAgdXBsb2FkX3B5X2FyZ3YuYXBwZW5kKENDX0ZMQUcgKyAnLCcuam9pbihjY19saXN0KSkK
KyAgICBlbHNlOgorICAgICAgdXBsb2FkX3B5X2FyZ3YuYXBwZW5kKGFyZykKKworICBpZiBub3Qg
Zm91bmRfY2NfZmxhZzoKKyAgICB1cGxvYWRfcHlfYXJndi5hcHBlbmQoQ0NfRkxBRyArIEdURVNU
X0dST1VQKQorCisgICMgSW52b2tlcyB1cGxvYWQucHkgd2l0aCB0aGUgbW9kaWZpZWQgY29tbWFu
ZCBsaW5lIGZsYWdzLgorICBvcy5leGVjdih1cGxvYWRfcHlfcGF0aCwgdXBsb2FkX3B5X2FyZ3Yp
CisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgbWFpbigpCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xldGVzdC9zcmMvZ3Rlc3QtYWxsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LWFsbC5j
YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wYTljZWU1MjIzMzMyOGIxYmFmZGM0YmM0MDI2OTlmYTE0MDM4ZjczCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LWFsbC5jYwpAQCAtMCwwICsx
LDQ4IEBACisvLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLwor
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisv
LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLwor
Ly8gQXV0aG9yOiBtaGV1bGVAZ29vZ2xlLmNvbSAoTWFya3VzIEhldWxlKQorLy8KKy8vIEdvb2ds
ZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8KKy8vIFNvbWV0aW1lcyBp
dCdzIGRlc2lyYWJsZSB0byBidWlsZCBHb29nbGUgVGVzdCBieSBjb21waWxpbmcgYSBzaW5nbGUg
ZmlsZS4KKy8vIFRoaXMgZmlsZSBzZXJ2ZXMgdGhpcyBwdXJwb3NlLgorCisvLyBUaGlzIGxpbmUg
ZW5zdXJlcyB0aGF0IGd0ZXN0LmggY2FuIGJlIGNvbXBpbGVkIG9uIGl0cyBvd24sIGV2ZW4KKy8v
IHdoZW4gaXQncyBmdXNlZC4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCisvLyBUaGUgZm9s
bG93aW5nIGxpbmVzIHB1bGwgaW4gdGhlIHJlYWwgZ3Rlc3QgKi5jYyBmaWxlcy4KKyNpbmNsdWRl
ICJzcmMvZ3Rlc3QuY2MiCisjaW5jbHVkZSAic3JjL2d0ZXN0LWRlYXRoLXRlc3QuY2MiCisjaW5j
bHVkZSAic3JjL2d0ZXN0LWZpbGVwYXRoLmNjIgorI2luY2x1ZGUgInNyYy9ndGVzdC1wb3J0LmNj
IgorI2luY2x1ZGUgInNyYy9ndGVzdC1wcmludGVycy5jYyIKKyNpbmNsdWRlICJzcmMvZ3Rlc3Qt
dGVzdC1wYXJ0LmNjIgorI2luY2x1ZGUgInNyYy9ndGVzdC10eXBlZC10ZXN0LmNjIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LWRlYXRoLXRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9z
cmMvZ3Rlc3QtZGVhdGgtdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZDFjYzNmY2JmZWVlNWQ5ZWY1ZTQz
NzdmNDZmYjRjZmIyZWFlNzVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0
ZXN0LWRlYXRoLXRlc3QuY2MKQEAgLTAsMCArMSwxMzQxIEBACisvLyBDb3B5cmlnaHQgMjAwNSwg
R29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisv
LyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
Ky8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
Ky8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAo
WmhhbnlvbmcgV2FuKSwgdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKKy8vCisvLyBUaGlz
IGZpbGUgaW1wbGVtZW50cyBkZWF0aCB0ZXN0cy4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LWRl
YXRoLXRlc3QuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCisjaW5j
bHVkZSAiZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LmgiCisKKyNpZiBHVEVTVF9IQVNfREVB
VEhfVEVTVAorCisjIGlmIEdURVNUX09TX01BQworIyAgaW5jbHVkZSA8Y3J0X2V4dGVybnMuaD4K
KyMgZW5kaWYgIC8vIEdURVNUX09TX01BQworCisjIGluY2x1ZGUgPGVycm5vLmg+CisjIGluY2x1
ZGUgPGZjbnRsLmg+CisjIGluY2x1ZGUgPGxpbWl0cy5oPgorCisjIGlmIEdURVNUX09TX0xJTlVY
CisjICBpbmNsdWRlIDxzaWduYWwuaD4KKyMgZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYCisKKyMg
aW5jbHVkZSA8c3RkYXJnLmg+CisKKyMgaWYgR1RFU1RfT1NfV0lORE9XUworIyAgaW5jbHVkZSA8
d2luZG93cy5oPgorIyBlbHNlCisjICBpbmNsdWRlIDxzeXMvbW1hbi5oPgorIyAgaW5jbHVkZSA8
c3lzL3dhaXQuaD4KKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKworIyBpZiBHVEVTVF9P
U19RTlgKKyMgIGluY2x1ZGUgPHNwYXduLmg+CisjIGVuZGlmICAvLyBHVEVTVF9PU19RTlgKKwor
I2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qt
bWVzc2FnZS5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oIgorCisv
LyBJbmRpY2F0ZXMgdGhhdCB0aGlzIHRyYW5zbGF0aW9uIHVuaXQgaXMgcGFydCBvZiBHb29nbGUg
VGVzdCdzCisvLyBpbXBsZW1lbnRhdGlvbi4gIEl0IG11c3QgY29tZSBiZWZvcmUgZ3Rlc3QtaW50
ZXJuYWwtaW5sLmggaXMKKy8vIGluY2x1ZGVkLCBvciB0aGVyZSB3aWxsIGJlIGEgY29tcGlsZXIg
ZXJyb3IuICBUaGlzIHRyaWNrIGV4aXN0cyB0bworLy8gcHJldmVudCB0aGUgYWNjaWRlbnRhbCBp
bmNsdXNpb24gb2YgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaW4gdGhlCisvLyB1c2VyJ3MgY29kZS4K
KyNkZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJT05fIDEKKyNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50
ZXJuYWwtaW5sLmgiCisjdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCisKK25hbWVzcGFjZSB0
ZXN0aW5nIHsKKworLy8gQ29uc3RhbnRzLgorCisvLyBUaGUgZGVmYXVsdCBkZWF0aCB0ZXN0IHN0
eWxlLgorc3RhdGljIGNvbnN0IGNoYXIga0RlZmF1bHREZWF0aFRlc3RTdHlsZVtdID0gImZhc3Qi
OworCitHVEVTVF9ERUZJTkVfc3RyaW5nXygKKyAgICBkZWF0aF90ZXN0X3N0eWxlLAorICAgIGlu
dGVybmFsOjpTdHJpbmdGcm9tR1Rlc3RFbnYoImRlYXRoX3Rlc3Rfc3R5bGUiLCBrRGVmYXVsdERl
YXRoVGVzdFN0eWxlKSwKKyAgICAiSW5kaWNhdGVzIGhvdyB0byBydW4gYSBkZWF0aCB0ZXN0IGlu
IGEgZm9ya2VkIGNoaWxkIHByb2Nlc3M6ICIKKyAgICAiXCJ0aHJlYWRzYWZlXCIgKGNoaWxkIHBy
b2Nlc3MgcmUtZXhlY3V0ZXMgdGhlIHRlc3QgYmluYXJ5ICIKKyAgICAiZnJvbSB0aGUgYmVnaW5u
aW5nLCBydW5uaW5nIG9ubHkgdGhlIHNwZWNpZmljIGRlYXRoIHRlc3QpIG9yICIKKyAgICAiXCJm
YXN0XCIgKGNoaWxkIHByb2Nlc3MgcnVucyB0aGUgZGVhdGggdGVzdCBpbW1lZGlhdGVseSAiCisg
ICAgImFmdGVyIGZvcmtpbmcpLiIpOworCitHVEVTVF9ERUZJTkVfYm9vbF8oCisgICAgZGVhdGhf
dGVzdF91c2VfZm9yaywKKyAgICBpbnRlcm5hbDo6Qm9vbEZyb21HVGVzdEVudigiZGVhdGhfdGVz
dF91c2VfZm9yayIsIGZhbHNlKSwKKyAgICAiSW5zdHJ1Y3RzIHRvIHVzZSBmb3JrKCkvX2V4aXQo
KSBpbnN0ZWFkIG9mIGNsb25lKCkgaW4gZGVhdGggdGVzdHMuICIKKyAgICAiSWdub3JlZCBhbmQg
YWx3YXlzIHVzZXMgZm9yaygpIG9uIFBPU0lYIHN5c3RlbXMgd2hlcmUgY2xvbmUoKSBpcyBub3Qg
IgorICAgICJpbXBsZW1lbnRlZC4gVXNlZnVsIHdoZW4gcnVubmluZyB1bmRlciB2YWxncmluZCBv
ciBzaW1pbGFyIHRvb2xzIGlmICIKKyAgICAidGhvc2UgZG8gbm90IHN1cHBvcnQgY2xvbmUoKS4g
VmFsZ3JpbmQgMy4zLjEgd2lsbCBqdXN0IGZhaWwgaWYgIgorICAgICJpdCBzZWVzIGFuIHVuc3Vw
cG9ydGVkIGNvbWJpbmF0aW9uIG9mIGNsb25lKCkgZmxhZ3MuICIKKyAgICAiSXQgaXMgbm90IHJl
Y29tbWVuZGVkIHRvIHVzZSB0aGlzIGZsYWcgdy9vIHZhbGdyaW5kIHRob3VnaCBpdCB3aWxsICIK
KyAgICAid29yayBpbiA5OSUgb2YgdGhlIGNhc2VzLiBPbmNlIHZhbGdyaW5kIGlzIGZpeGVkLCB0
aGlzIGZsYWcgd2lsbCAiCisgICAgIm1vc3QgbGlrZWx5IGJlIHJlbW92ZWQuIik7CisKK25hbWVz
cGFjZSBpbnRlcm5hbCB7CitHVEVTVF9ERUZJTkVfc3RyaW5nXygKKyAgICBpbnRlcm5hbF9ydW5f
ZGVhdGhfdGVzdCwgIiIsCisgICAgIkluZGljYXRlcyB0aGUgZmlsZSwgbGluZSBudW1iZXIsIHRl
bXBvcmFsIGluZGV4IG9mICIKKyAgICAidGhlIHNpbmdsZSBkZWF0aCB0ZXN0IHRvIHJ1biwgYW5k
IGEgZmlsZSBkZXNjcmlwdG9yIHRvICIKKyAgICAid2hpY2ggYSBzdWNjZXNzIGNvZGUgbWF5IGJl
IHNlbnQsIGFsbCBzZXBhcmF0ZWQgYnkgIgorICAgICJ0aGUgJ3wnIGNoYXJhY3RlcnMuICBUaGlz
IGZsYWcgaXMgc3BlY2lmaWVkIGlmIGFuZCBvbmx5IGlmIHRoZSBjdXJyZW50ICIKKyAgICAicHJv
Y2VzcyBpcyBhIHN1Yi1wcm9jZXNzIGxhdW5jaGVkIGZvciBydW5uaW5nIGEgdGhyZWFkLXNhZmUg
IgorICAgICJkZWF0aCB0ZXN0LiAgRk9SIElOVEVSTkFMIFVTRSBPTkxZLiIpOworfSAgLy8gbmFt
ZXNwYWNlIGludGVybmFsCisKKyNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAorCituYW1lc3BhY2Ug
aW50ZXJuYWwgeworCisvLyBWYWxpZCBvbmx5IGZvciBmYXN0IGRlYXRoIHRlc3RzLiBJbmRpY2F0
ZXMgdGhlIGNvZGUgaXMgcnVubmluZyBpbiB0aGUKKy8vIGNoaWxkIHByb2Nlc3Mgb2YgYSBmYXN0
IHN0eWxlIGRlYXRoIHRlc3QuCisjIGlmICFHVEVTVF9PU19XSU5ET1dTCitzdGF0aWMgYm9vbCBn
X2luX2Zhc3RfZGVhdGhfdGVzdF9jaGlsZCA9IGZhbHNlOworIyBlbmRpZgorCisvLyBSZXR1cm5z
IGEgQm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGNhbGxlciBpcyBjdXJyZW50
bHkKKy8vIGV4ZWN1dGluZyBpbiB0aGUgY29udGV4dCBvZiB0aGUgZGVhdGggdGVzdCBjaGlsZCBw
cm9jZXNzLiAgVG9vbHMgc3VjaCBhcworLy8gVmFsZ3JpbmQgaGVhcCBjaGVja2VycyBtYXkgbmVl
ZCB0aGlzIHRvIG1vZGlmeSB0aGVpciBiZWhhdmlvciBpbiBkZWF0aAorLy8gdGVzdHMuICBJTVBP
UlRBTlQ6IFRoaXMgaXMgYW4gaW50ZXJuYWwgdXRpbGl0eS4gIFVzaW5nIGl0IG1heSBicmVhayB0
aGUKKy8vIGltcGxlbWVudGF0aW9uIG9mIGRlYXRoIHRlc3RzLiAgVXNlciBjb2RlIE1VU1QgTk9U
IHVzZSBpdC4KK2Jvb2wgSW5EZWF0aFRlc3RDaGlsZCgpIHsKKyMgaWYgR1RFU1RfT1NfV0lORE9X
UworCisgIC8vIE9uIFdpbmRvd3MsIGRlYXRoIHRlc3RzIGFyZSB0aHJlYWQtc2FmZSByZWdhcmRs
ZXNzIG9mIHRoZSB2YWx1ZSBvZiB0aGUKKyAgLy8gZGVhdGhfdGVzdF9zdHlsZSBmbGFnLgorICBy
ZXR1cm4gIUdURVNUX0ZMQUcoaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QpLmVtcHR5KCk7CisKKyMg
ZWxzZQorCisgIGlmIChHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID09ICJ0aHJlYWRzYWZl
IikKKyAgICByZXR1cm4gIUdURVNUX0ZMQUcoaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QpLmVtcHR5
KCk7CisgIGVsc2UKKyAgICByZXR1cm4gZ19pbl9mYXN0X2RlYXRoX3Rlc3RfY2hpbGQ7CisjZW5k
aWYKK30KKworfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCisKKy8vIEV4aXRlZFdpdGhDb2RlIGNv
bnN0cnVjdG9yLgorRXhpdGVkV2l0aENvZGU6OkV4aXRlZFdpdGhDb2RlKGludCBleGl0X2NvZGUp
IDogZXhpdF9jb2RlXyhleGl0X2NvZGUpIHsKK30KKworLy8gRXhpdGVkV2l0aENvZGUgZnVuY3Rp
b24tY2FsbCBvcGVyYXRvci4KK2Jvb2wgRXhpdGVkV2l0aENvZGU6Om9wZXJhdG9yKCkoaW50IGV4
aXRfc3RhdHVzKSBjb25zdCB7CisjIGlmIEdURVNUX09TX1dJTkRPV1MKKworICByZXR1cm4gZXhp
dF9zdGF0dXMgPT0gZXhpdF9jb2RlXzsKKworIyBlbHNlCisKKyAgcmV0dXJuIFdJRkVYSVRFRChl
eGl0X3N0YXR1cykgJiYgV0VYSVRTVEFUVVMoZXhpdF9zdGF0dXMpID09IGV4aXRfY29kZV87CisK
KyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKK30KKworIyBpZiAhR1RFU1RfT1NfV0lORE9X
UworLy8gS2lsbGVkQnlTaWduYWwgY29uc3RydWN0b3IuCitLaWxsZWRCeVNpZ25hbDo6S2lsbGVk
QnlTaWduYWwoaW50IHNpZ251bSkgOiBzaWdudW1fKHNpZ251bSkgeworfQorCisvLyBLaWxsZWRC
eVNpZ25hbCBmdW5jdGlvbi1jYWxsIG9wZXJhdG9yLgorYm9vbCBLaWxsZWRCeVNpZ25hbDo6b3Bl
cmF0b3IoKShpbnQgZXhpdF9zdGF0dXMpIGNvbnN0IHsKKyMgIGlmIGRlZmluZWQoR1RFU1RfS0lM
TEVEX0JZX1NJR05BTF9PVkVSUklERV8pCisgIHsKKyAgICBib29sIHJlc3VsdDsKKyAgICBpZiAo
R1RFU1RfS0lMTEVEX0JZX1NJR05BTF9PVkVSUklERV8oc2lnbnVtXywgZXhpdF9zdGF0dXMsICZy
ZXN1bHQpKSB7CisgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgfQorIyAgZW5kaWYgIC8v
IGRlZmluZWQoR1RFU1RfS0lMTEVEX0JZX1NJR05BTF9PVkVSUklERV8pCisgIHJldHVybiBXSUZT
SUdOQUxFRChleGl0X3N0YXR1cykgJiYgV1RFUk1TSUcoZXhpdF9zdGF0dXMpID09IHNpZ251bV87
Cit9CisjIGVuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XUworCituYW1lc3BhY2UgaW50ZXJuYWwg
eworCisvLyBVdGlsaXRpZXMgbmVlZGVkIGZvciBkZWF0aCB0ZXN0cy4KKworLy8gR2VuZXJhdGVz
IGEgdGV4dHVhbCBkZXNjcmlwdGlvbiBvZiBhIGdpdmVuIGV4aXQgY29kZSwgaW4gdGhlIGZvcm1h
dAorLy8gc3BlY2lmaWVkIGJ5IHdhaXQoMikuCitzdGF0aWMgc3RkOjpzdHJpbmcgRXhpdFN1bW1h
cnkoaW50IGV4aXRfY29kZSkgeworICBNZXNzYWdlIG07CisKKyMgaWYgR1RFU1RfT1NfV0lORE9X
UworCisgIG0gPDwgIkV4aXRlZCB3aXRoIGV4aXQgc3RhdHVzICIgPDwgZXhpdF9jb2RlOworCisj
IGVsc2UKKworICBpZiAoV0lGRVhJVEVEKGV4aXRfY29kZSkpIHsKKyAgICBtIDw8ICJFeGl0ZWQg
d2l0aCBleGl0IHN0YXR1cyAiIDw8IFdFWElUU1RBVFVTKGV4aXRfY29kZSk7CisgIH0gZWxzZSBp
ZiAoV0lGU0lHTkFMRUQoZXhpdF9jb2RlKSkgeworICAgIG0gPDwgIlRlcm1pbmF0ZWQgYnkgc2ln
bmFsICIgPDwgV1RFUk1TSUcoZXhpdF9jb2RlKTsKKyAgfQorIyAgaWZkZWYgV0NPUkVEVU1QCisg
IGlmIChXQ09SRURVTVAoZXhpdF9jb2RlKSkgeworICAgIG0gPDwgIiAoY29yZSBkdW1wZWQpIjsK
KyAgfQorIyAgZW5kaWYKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKworICByZXR1cm4g
bS5HZXRTdHJpbmcoKTsKK30KKworLy8gUmV0dXJucyB0cnVlIGlmIGV4aXRfc3RhdHVzIGRlc2Ny
aWJlcyBhIHByb2Nlc3MgdGhhdCB3YXMgdGVybWluYXRlZAorLy8gYnkgYSBzaWduYWwsIG9yIGV4
aXRlZCBub3JtYWxseSB3aXRoIGEgbm9uemVybyBleGl0IGNvZGUuCitib29sIEV4aXRlZFVuc3Vj
Y2Vzc2Z1bGx5KGludCBleGl0X3N0YXR1cykgeworICByZXR1cm4gIUV4aXRlZFdpdGhDb2RlKDAp
KGV4aXRfc3RhdHVzKTsKK30KKworIyBpZiAhR1RFU1RfT1NfV0lORE9XUworLy8gR2VuZXJhdGVz
IGEgdGV4dHVhbCBmYWlsdXJlIG1lc3NhZ2Ugd2hlbiBhIGRlYXRoIHRlc3QgZmluZHMgbW9yZSB0
aGFuCisvLyBvbmUgdGhyZWFkIHJ1bm5pbmcsIG9yIGNhbm5vdCBkZXRlcm1pbmUgdGhlIG51bWJl
ciBvZiB0aHJlYWRzLCBwcmlvcgorLy8gdG8gZXhlY3V0aW5nIHRoZSBnaXZlbiBzdGF0ZW1lbnQu
ICBJdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlCisvLyBjYWxsZXIgbm90IHRvIHBhc3Mg
YSB0aHJlYWRfY291bnQgb2YgMS4KK3N0YXRpYyBzdGQ6OnN0cmluZyBEZWF0aFRlc3RUaHJlYWRX
YXJuaW5nKHNpemVfdCB0aHJlYWRfY291bnQpIHsKKyAgTWVzc2FnZSBtc2c7CisgIG1zZyA8PCAi
RGVhdGggdGVzdHMgdXNlIGZvcmsoKSwgd2hpY2ggaXMgdW5zYWZlIHBhcnRpY3VsYXJseSIKKyAg
ICAgIDw8ICIgaW4gYSB0aHJlYWRlZCBjb250ZXh0LiBGb3IgdGhpcyB0ZXN0LCAiIDw8IEdURVNU
X05BTUVfIDw8ICIgIjsKKyAgaWYgKHRocmVhZF9jb3VudCA9PSAwKQorICAgIG1zZyA8PCAiY291
bGRuJ3QgZGV0ZWN0IHRoZSBudW1iZXIgb2YgdGhyZWFkcy4iOworICBlbHNlCisgICAgbXNnIDw8
ICJkZXRlY3RlZCAiIDw8IHRocmVhZF9jb3VudCA8PCAiIHRocmVhZHMuIjsKKyAgcmV0dXJuIG1z
Zy5HZXRTdHJpbmcoKTsKK30KKyMgZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTCisKKy8vIEZs
YWcgY2hhcmFjdGVycyBmb3IgcmVwb3J0aW5nIGEgZGVhdGggdGVzdCB0aGF0IGRpZCBub3QgZGll
Lgorc3RhdGljIGNvbnN0IGNoYXIga0RlYXRoVGVzdExpdmVkID0gJ0wnOworc3RhdGljIGNvbnN0
IGNoYXIga0RlYXRoVGVzdFJldHVybmVkID0gJ1InOworc3RhdGljIGNvbnN0IGNoYXIga0RlYXRo
VGVzdFRocmV3ID0gJ1QnOworc3RhdGljIGNvbnN0IGNoYXIga0RlYXRoVGVzdEludGVybmFsRXJy
b3IgPSAnSSc7CisKKy8vIEFuIGVudW1lcmF0aW9uIGRlc2NyaWJpbmcgYWxsIG9mIHRoZSBwb3Nz
aWJsZSB3YXlzIHRoYXQgYSBkZWF0aCB0ZXN0IGNhbgorLy8gY29uY2x1ZGUuICBESUVEIG1lYW5z
IHRoYXQgdGhlIHByb2Nlc3MgZGllZCB3aGlsZSBleGVjdXRpbmcgdGhlIHRlc3QKKy8vIGNvZGU7
IExJVkVEIG1lYW5zIHRoYXQgcHJvY2VzcyBsaXZlZCBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgdGVz
dCBjb2RlOworLy8gUkVUVVJORUQgbWVhbnMgdGhhdCB0aGUgdGVzdCBzdGF0ZW1lbnQgYXR0ZW1w
dGVkIHRvIGV4ZWN1dGUgYSByZXR1cm4KKy8vIHN0YXRlbWVudCwgd2hpY2ggaXMgbm90IGFsbG93
ZWQ7IFRIUkVXIG1lYW5zIHRoYXQgdGhlIHRlc3Qgc3RhdGVtZW50CisvLyByZXR1cm5lZCBjb250
cm9sIGJ5IHRocm93aW5nIGFuIGV4Y2VwdGlvbi4gIElOX1BST0dSRVNTIG1lYW5zIHRoZSB0ZXN0
CisvLyBoYXMgbm90IHlldCBjb25jbHVkZWQuCisvLyBUT0RPKHZsYWRsQGdvb2dsZS5jb20pOiBV
bmlmeSBuYW1lcyBhbmQgcG9zc2libHkgdmFsdWVzIGZvcgorLy8gQWJvcnRSZWFzb24sIERlYXRo
VGVzdE91dGNvbWUsIGFuZCBmbGFnIGNoYXJhY3RlcnMgYWJvdmUuCitlbnVtIERlYXRoVGVzdE91
dGNvbWUgeyBJTl9QUk9HUkVTUywgRElFRCwgTElWRUQsIFJFVFVSTkVELCBUSFJFVyB9OworCisv
LyBSb3V0aW5lIGZvciBhYm9ydGluZyB0aGUgcHJvZ3JhbSB3aGljaCBpcyBzYWZlIHRvIGNhbGwg
ZnJvbSBhbgorLy8gZXhlYy1zdHlsZSBkZWF0aCB0ZXN0IGNoaWxkIHByb2Nlc3MsIGluIHdoaWNo
IGNhc2UgdGhlIGVycm9yCisvLyBtZXNzYWdlIGlzIHByb3BhZ2F0ZWQgYmFjayB0byB0aGUgcGFy
ZW50IHByb2Nlc3MuICBPdGhlcndpc2UsIHRoZQorLy8gbWVzc2FnZSBpcyBzaW1wbHkgcHJpbnRl
ZCB0byBzdGRlcnIuICBJbiBlaXRoZXIgY2FzZSwgdGhlIHByb2dyYW0KKy8vIHRoZW4gZXhpdHMg
d2l0aCBzdGF0dXMgMS4KK3ZvaWQgRGVhdGhUZXN0QWJvcnQoY29uc3Qgc3RkOjpzdHJpbmcmIG1l
c3NhZ2UpIHsKKyAgLy8gT24gYSBQT1NJWCBzeXN0ZW0sIHRoaXMgZnVuY3Rpb24gbWF5IGJlIGNh
bGxlZCBmcm9tIGEgdGhyZWFkc2FmZS1zdHlsZQorICAvLyBkZWF0aCB0ZXN0IGNoaWxkIHByb2Nl
c3MsIHdoaWNoIG9wZXJhdGVzIG9uIGEgdmVyeSBzbWFsbCBzdGFjay4gIFVzZQorICAvLyB0aGUg
aGVhcCBmb3IgYW55IGFkZGl0aW9uYWwgbm9uLW1pbnVzY3VsZSBtZW1vcnkgcmVxdWlyZW1lbnRz
LgorICBjb25zdCBJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcqIGNvbnN0IGZsYWcgPQorICAgICAg
R2V0VW5pdFRlc3RJbXBsKCktPmludGVybmFsX3J1bl9kZWF0aF90ZXN0X2ZsYWcoKTsKKyAgaWYg
KGZsYWcgIT0gTlVMTCkgeworICAgIEZJTEUqIHBhcmVudCA9IHBvc2l4OjpGRE9wZW4oZmxhZy0+
d3JpdGVfZmQoKSwgInciKTsKKyAgICBmcHV0YyhrRGVhdGhUZXN0SW50ZXJuYWxFcnJvciwgcGFy
ZW50KTsKKyAgICBmcHJpbnRmKHBhcmVudCwgIiVzIiwgbWVzc2FnZS5jX3N0cigpKTsKKyAgICBm
Zmx1c2gocGFyZW50KTsKKyAgICBfZXhpdCgxKTsKKyAgfSBlbHNlIHsKKyAgICBmcHJpbnRmKHN0
ZGVyciwgIiVzIiwgbWVzc2FnZS5jX3N0cigpKTsKKyAgICBmZmx1c2goc3RkZXJyKTsKKyAgICBw
b3NpeDo6QWJvcnQoKTsKKyAgfQorfQorCisvLyBBIHJlcGxhY2VtZW50IGZvciBDSEVDSyB0aGF0
IGNhbGxzIERlYXRoVGVzdEFib3J0IGlmIHRoZSBhc3NlcnRpb24KKy8vIGZhaWxzLgorIyBkZWZp
bmUgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oZXhwcmVzc2lvbikgXAorICBkbyB7IFwKKyAgICBp
ZiAoITo6dGVzdGluZzo6aW50ZXJuYWw6OklzVHJ1ZShleHByZXNzaW9uKSkgeyBcCisgICAgICBE
ZWF0aFRlc3RBYm9ydCggXAorICAgICAgICAgIDo6c3RkOjpzdHJpbmcoIkNIRUNLIGZhaWxlZDog
RmlsZSAiKSArIF9fRklMRV9fICsgICIsIGxpbmUgIiBcCisgICAgICAgICAgKyA6OnRlc3Rpbmc6
OmludGVybmFsOjpTdHJlYW1hYmxlVG9TdHJpbmcoX19MSU5FX18pICsgIjogIiBcCisgICAgICAg
ICAgKyAjZXhwcmVzc2lvbik7IFwKKyAgICB9IFwKKyAgfSB3aGlsZSAoOjp0ZXN0aW5nOjppbnRl
cm5hbDo6QWx3YXlzRmFsc2UoKSkKKworLy8gVGhpcyBtYWNybyBpcyBzaW1pbGFyIHRvIEdURVNU
X0RFQVRIX1RFU1RfQ0hFQ0tfLCBidXQgaXQgaXMgbWVhbnQgZm9yCisvLyBldmFsdWF0aW5nIGFu
eSBzeXN0ZW0gY2FsbCB0aGF0IGZ1bGZpbGxzIHR3byBjb25kaXRpb25zOiBpdCBtdXN0IHJldHVy
bgorLy8gLTEgb24gZmFpbHVyZSwgYW5kIHNldCBlcnJubyB0byBFSU5UUiB3aGVuIGl0IGlzIGlu
dGVycnVwdGVkIGFuZAorLy8gc2hvdWxkIGJlIHRyaWVkIGFnYWluLiAgVGhlIG1hY3JvIGV4cGFu
ZHMgdG8gYSBsb29wIHRoYXQgcmVwZWF0ZWRseQorLy8gZXZhbHVhdGVzIHRoZSBleHByZXNzaW9u
IGFzIGxvbmcgYXMgaXQgZXZhbHVhdGVzIHRvIC0xIGFuZCBzZXRzCisvLyBlcnJubyB0byBFSU5U
Ui4gIElmIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byAtMSBidXQgZXJybm8gaXMKKy8vIHNv
bWV0aGluZyBvdGhlciB0aGFuIEVJTlRSLCBEZWF0aFRlc3RBYm9ydCBpcyBjYWxsZWQuCisjIGRl
ZmluZSBHVEVTVF9ERUFUSF9URVNUX0NIRUNLX1NZU0NBTExfKGV4cHJlc3Npb24pIFwKKyAgZG8g
eyBcCisgICAgaW50IGd0ZXN0X3JldHZhbDsgXAorICAgIGRvIHsgXAorICAgICAgZ3Rlc3RfcmV0
dmFsID0gKGV4cHJlc3Npb24pOyBcCisgICAgfSB3aGlsZSAoZ3Rlc3RfcmV0dmFsID09IC0xICYm
IGVycm5vID09IEVJTlRSKTsgXAorICAgIGlmIChndGVzdF9yZXR2YWwgPT0gLTEpIHsgXAorICAg
ICAgRGVhdGhUZXN0QWJvcnQoIFwKKyAgICAgICAgICA6OnN0ZDo6c3RyaW5nKCJDSEVDSyBmYWls
ZWQ6IEZpbGUgIikgKyBfX0ZJTEVfXyArICIsIGxpbmUgIiBcCisgICAgICAgICAgKyA6OnRlc3Rp
bmc6OmludGVybmFsOjpTdHJlYW1hYmxlVG9TdHJpbmcoX19MSU5FX18pICsgIjogIiBcCisgICAg
ICAgICAgKyAjZXhwcmVzc2lvbiArICIgIT0gLTEiKTsgXAorICAgIH0gXAorICB9IHdoaWxlICg6
OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNGYWxzZSgpKQorCisvLyBSZXR1cm5zIHRoZSBtZXNz
YWdlIGRlc2NyaWJpbmcgdGhlIGxhc3Qgc3lzdGVtIGVycm9yIGluIGVycm5vLgorc3RkOjpzdHJp
bmcgR2V0TGFzdEVycm5vRGVzY3JpcHRpb24oKSB7CisgICAgcmV0dXJuIGVycm5vID09IDAgPyAi
IiA6IHBvc2l4OjpTdHJFcnJvcihlcnJubyk7Cit9CisKKy8vIFRoaXMgaXMgY2FsbGVkIGZyb20g
YSBkZWF0aCB0ZXN0IHBhcmVudCBwcm9jZXNzIHRvIHJlYWQgYSBmYWlsdXJlCisvLyBtZXNzYWdl
IGZyb20gdGhlIGRlYXRoIHRlc3QgY2hpbGQgcHJvY2VzcyBhbmQgbG9nIGl0IHdpdGggdGhlIEZB
VEFMCisvLyBzZXZlcml0eS4gT24gV2luZG93cywgdGhlIG1lc3NhZ2UgaXMgcmVhZCBmcm9tIGEg
cGlwZSBoYW5kbGUuIE9uIG90aGVyCisvLyBwbGF0Zm9ybXMsIGl0IGlzIHJlYWQgZnJvbSBhIGZp
bGUgZGVzY3JpcHRvci4KK3N0YXRpYyB2b2lkIEZhaWxGcm9tSW50ZXJuYWxFcnJvcihpbnQgZmQp
IHsKKyAgTWVzc2FnZSBlcnJvcjsKKyAgY2hhciBidWZmZXJbMjU2XTsKKyAgaW50IG51bV9yZWFk
OworCisgIGRvIHsKKyAgICB3aGlsZSAoKG51bV9yZWFkID0gcG9zaXg6OlJlYWQoZmQsIGJ1ZmZl
ciwgMjU1KSkgPiAwKSB7CisgICAgICBidWZmZXJbbnVtX3JlYWRdID0gJ1wwJzsKKyAgICAgIGVy
cm9yIDw8IGJ1ZmZlcjsKKyAgICB9CisgIH0gd2hpbGUgKG51bV9yZWFkID09IC0xICYmIGVycm5v
ID09IEVJTlRSKTsKKworICBpZiAobnVtX3JlYWQgPT0gMCkgeworICAgIEdURVNUX0xPR18oRkFU
QUwpIDw8IGVycm9yLkdldFN0cmluZygpOworICB9IGVsc2UgeworICAgIGNvbnN0IGludCBsYXN0
X2Vycm9yID0gZXJybm87CisgICAgR1RFU1RfTE9HXyhGQVRBTCkgPDwgIkVycm9yIHdoaWxlIHJl
YWRpbmcgZGVhdGggdGVzdCBpbnRlcm5hbDogIgorICAgICAgICAgICAgICAgICAgICAgIDw8IEdl
dExhc3RFcnJub0Rlc2NyaXB0aW9uKCkgPDwgIiBbIiA8PCBsYXN0X2Vycm9yIDw8ICJdIjsKKyAg
fQorfQorCisvLyBEZWF0aCB0ZXN0IGNvbnN0cnVjdG9yLiAgSW5jcmVtZW50cyB0aGUgcnVubmlu
ZyBkZWF0aCB0ZXN0IGNvdW50CisvLyBmb3IgdGhlIGN1cnJlbnQgdGVzdC4KK0RlYXRoVGVzdDo6
RGVhdGhUZXN0KCkgeworICBUZXN0SW5mbyogY29uc3QgaW5mbyA9IEdldFVuaXRUZXN0SW1wbCgp
LT5jdXJyZW50X3Rlc3RfaW5mbygpOworICBpZiAoaW5mbyA9PSBOVUxMKSB7CisgICAgRGVhdGhU
ZXN0QWJvcnQoIkNhbm5vdCBydW4gYSBkZWF0aCB0ZXN0IG91dHNpZGUgb2YgYSBURVNUIG9yICIK
KyAgICAgICAgICAgICAgICAgICAiVEVTVF9GIGNvbnN0cnVjdCIpOworICB9Cit9CisKKy8vIENy
ZWF0ZXMgYW5kIHJldHVybnMgYSBkZWF0aCB0ZXN0IGJ5IGRpc3BhdGNoaW5nIHRvIHRoZSBjdXJy
ZW50CisvLyBkZWF0aCB0ZXN0IGZhY3RvcnkuCitib29sIERlYXRoVGVzdDo6Q3JlYXRlKGNvbnN0
IGNoYXIqIHN0YXRlbWVudCwgY29uc3QgUkUqIHJlZ2V4LAorICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgRGVhdGhUZXN0KiogdGVzdCkgeworICByZXR1
cm4gR2V0VW5pdFRlc3RJbXBsKCktPmRlYXRoX3Rlc3RfZmFjdG9yeSgpLT5DcmVhdGUoCisgICAg
ICBzdGF0ZW1lbnQsIHJlZ2V4LCBmaWxlLCBsaW5lLCB0ZXN0KTsKK30KKworY29uc3QgY2hhciog
RGVhdGhUZXN0OjpMYXN0TWVzc2FnZSgpIHsKKyAgcmV0dXJuIGxhc3RfZGVhdGhfdGVzdF9tZXNz
YWdlXy5jX3N0cigpOworfQorCit2b2lkIERlYXRoVGVzdDo6c2V0X2xhc3RfZGVhdGhfdGVzdF9t
ZXNzYWdlKGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKSB7CisgIGxhc3RfZGVhdGhfdGVzdF9t
ZXNzYWdlXyA9IG1lc3NhZ2U7Cit9CisKK3N0ZDo6c3RyaW5nIERlYXRoVGVzdDo6bGFzdF9kZWF0
aF90ZXN0X21lc3NhZ2VfOworCisvLyBQcm92aWRlcyBjcm9zcyBwbGF0Zm9ybSBpbXBsZW1lbnRh
dGlvbiBmb3Igc29tZSBkZWF0aCBmdW5jdGlvbmFsaXR5LgorY2xhc3MgRGVhdGhUZXN0SW1wbCA6
IHB1YmxpYyBEZWF0aFRlc3QgeworIHByb3RlY3RlZDoKKyAgRGVhdGhUZXN0SW1wbChjb25zdCBj
aGFyKiBhX3N0YXRlbWVudCwgY29uc3QgUkUqIGFfcmVnZXgpCisgICAgICA6IHN0YXRlbWVudF8o
YV9zdGF0ZW1lbnQpLAorICAgICAgICByZWdleF8oYV9yZWdleCksCisgICAgICAgIHNwYXduZWRf
KGZhbHNlKSwKKyAgICAgICAgc3RhdHVzXygtMSksCisgICAgICAgIG91dGNvbWVfKElOX1BST0dS
RVNTKSwKKyAgICAgICAgcmVhZF9mZF8oLTEpLAorICAgICAgICB3cml0ZV9mZF8oLTEpIHt9CisK
KyAgLy8gcmVhZF9mZF8gaXMgZXhwZWN0ZWQgdG8gYmUgY2xvc2VkIGFuZCBjbGVhcmVkIGJ5IGEg
ZGVyaXZlZCBjbGFzcy4KKyAgfkRlYXRoVGVzdEltcGwoKSB7IEdURVNUX0RFQVRIX1RFU1RfQ0hF
Q0tfKHJlYWRfZmRfID09IC0xKTsgfQorCisgIHZvaWQgQWJvcnQoQWJvcnRSZWFzb24gcmVhc29u
KTsKKyAgdmlydHVhbCBib29sIFBhc3NlZChib29sIHN0YXR1c19vayk7CisKKyAgY29uc3QgY2hh
ciogc3RhdGVtZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGVtZW50XzsgfQorICBjb25zdCBSRSog
cmVnZXgoKSBjb25zdCB7IHJldHVybiByZWdleF87IH0KKyAgYm9vbCBzcGF3bmVkKCkgY29uc3Qg
eyByZXR1cm4gc3Bhd25lZF87IH0KKyAgdm9pZCBzZXRfc3Bhd25lZChib29sIGlzX3NwYXduZWQp
IHsgc3Bhd25lZF8gPSBpc19zcGF3bmVkOyB9CisgIGludCBzdGF0dXMoKSBjb25zdCB7IHJldHVy
biBzdGF0dXNfOyB9CisgIHZvaWQgc2V0X3N0YXR1cyhpbnQgYV9zdGF0dXMpIHsgc3RhdHVzXyA9
IGFfc3RhdHVzOyB9CisgIERlYXRoVGVzdE91dGNvbWUgb3V0Y29tZSgpIGNvbnN0IHsgcmV0dXJu
IG91dGNvbWVfOyB9CisgIHZvaWQgc2V0X291dGNvbWUoRGVhdGhUZXN0T3V0Y29tZSBhbl9vdXRj
b21lKSB7IG91dGNvbWVfID0gYW5fb3V0Y29tZTsgfQorICBpbnQgcmVhZF9mZCgpIGNvbnN0IHsg
cmV0dXJuIHJlYWRfZmRfOyB9CisgIHZvaWQgc2V0X3JlYWRfZmQoaW50IGZkKSB7IHJlYWRfZmRf
ID0gZmQ7IH0KKyAgaW50IHdyaXRlX2ZkKCkgY29uc3QgeyByZXR1cm4gd3JpdGVfZmRfOyB9Cisg
IHZvaWQgc2V0X3dyaXRlX2ZkKGludCBmZCkgeyB3cml0ZV9mZF8gPSBmZDsgfQorCisgIC8vIENh
bGxlZCBpbiB0aGUgcGFyZW50IHByb2Nlc3Mgb25seS4gUmVhZHMgdGhlIHJlc3VsdCBjb2RlIG9m
IHRoZSBkZWF0aAorICAvLyB0ZXN0IGNoaWxkIHByb2Nlc3MgdmlhIGEgcGlwZSwgaW50ZXJwcmV0
cyBpdCB0byBzZXQgdGhlIG91dGNvbWVfCisgIC8vIG1lbWJlciwgYW5kIGNsb3NlcyByZWFkX2Zk
Xy4gIE91dHB1dHMgZGlhZ25vc3RpY3MgYW5kIHRlcm1pbmF0ZXMgaW4KKyAgLy8gY2FzZSBvZiB1
bmV4cGVjdGVkIGNvZGVzLgorICB2b2lkIFJlYWRBbmRJbnRlcnByZXRTdGF0dXNCeXRlKCk7CisK
KyBwcml2YXRlOgorICAvLyBUaGUgdGV4dHVhbCBjb250ZW50IG9mIHRoZSBjb2RlIHRoaXMgb2Jq
ZWN0IGlzIHRlc3RpbmcuICBUaGlzIGNsYXNzCisgIC8vIGRvZXNuJ3Qgb3duIHRoaXMgc3RyaW5n
IGFuZCBzaG91bGQgbm90IGF0dGVtcHQgdG8gZGVsZXRlIGl0LgorICBjb25zdCBjaGFyKiBjb25z
dCBzdGF0ZW1lbnRfOworICAvLyBUaGUgcmVndWxhciBleHByZXNzaW9uIHdoaWNoIHRlc3Qgb3V0
cHV0IG11c3QgbWF0Y2guICBEZWF0aFRlc3RJbXBsCisgIC8vIGRvZXNuJ3Qgb3duIHRoaXMgb2Jq
ZWN0IGFuZCBzaG91bGQgbm90IGF0dGVtcHQgdG8gZGVsZXRlIGl0LgorICBjb25zdCBSRSogY29u
c3QgcmVnZXhfOworICAvLyBUcnVlIGlmIHRoZSBkZWF0aCB0ZXN0IGNoaWxkIHByb2Nlc3MgaGFz
IGJlZW4gc3VjY2Vzc2Z1bGx5IHNwYXduZWQuCisgIGJvb2wgc3Bhd25lZF87CisgIC8vIFRoZSBl
eGl0IHN0YXR1cyBvZiB0aGUgY2hpbGQgcHJvY2Vzcy4KKyAgaW50IHN0YXR1c187CisgIC8vIEhv
dyB0aGUgZGVhdGggdGVzdCBjb25jbHVkZWQuCisgIERlYXRoVGVzdE91dGNvbWUgb3V0Y29tZV87
CisgIC8vIERlc2NyaXB0b3IgdG8gdGhlIHJlYWQgZW5kIG9mIHRoZSBwaXBlIHRvIHRoZSBjaGls
ZCBwcm9jZXNzLiAgSXQgaXMKKyAgLy8gYWx3YXlzIC0xIGluIHRoZSBjaGlsZCBwcm9jZXNzLiAg
VGhlIGNoaWxkIGtlZXBzIGl0cyB3cml0ZSBlbmQgb2YgdGhlCisgIC8vIHBpcGUgaW4gd3JpdGVf
ZmRfLgorICBpbnQgcmVhZF9mZF87CisgIC8vIERlc2NyaXB0b3IgdG8gdGhlIGNoaWxkJ3Mgd3Jp
dGUgZW5kIG9mIHRoZSBwaXBlIHRvIHRoZSBwYXJlbnQgcHJvY2Vzcy4KKyAgLy8gSXQgaXMgYWx3
YXlzIC0xIGluIHRoZSBwYXJlbnQgcHJvY2Vzcy4gIFRoZSBwYXJlbnQga2VlcHMgaXRzIGVuZCBv
ZiB0aGUKKyAgLy8gcGlwZSBpbiByZWFkX2ZkXy4KKyAgaW50IHdyaXRlX2ZkXzsKK307CisKKy8v
IENhbGxlZCBpbiB0aGUgcGFyZW50IHByb2Nlc3Mgb25seS4gUmVhZHMgdGhlIHJlc3VsdCBjb2Rl
IG9mIHRoZSBkZWF0aAorLy8gdGVzdCBjaGlsZCBwcm9jZXNzIHZpYSBhIHBpcGUsIGludGVycHJl
dHMgaXQgdG8gc2V0IHRoZSBvdXRjb21lXworLy8gbWVtYmVyLCBhbmQgY2xvc2VzIHJlYWRfZmRf
LiAgT3V0cHV0cyBkaWFnbm9zdGljcyBhbmQgdGVybWluYXRlcyBpbgorLy8gY2FzZSBvZiB1bmV4
cGVjdGVkIGNvZGVzLgordm9pZCBEZWF0aFRlc3RJbXBsOjpSZWFkQW5kSW50ZXJwcmV0U3RhdHVz
Qnl0ZSgpIHsKKyAgY2hhciBmbGFnOworICBpbnQgYnl0ZXNfcmVhZDsKKworICAvLyBUaGUgcmVh
ZCgpIGhlcmUgYmxvY2tzIHVudGlsIGRhdGEgaXMgYXZhaWxhYmxlIChzaWduaWZ5aW5nIHRoZQor
ICAvLyBmYWlsdXJlIG9mIHRoZSBkZWF0aCB0ZXN0KSBvciB1bnRpbCB0aGUgcGlwZSBpcyBjbG9z
ZWQgKHNpZ25pZnlpbmcKKyAgLy8gaXRzIHN1Y2Nlc3MpLCBzbyBpdCdzIG9rYXkgdG8gY2FsbCB0
aGlzIGluIHRoZSBwYXJlbnQgYmVmb3JlCisgIC8vIHRoZSBjaGlsZCBwcm9jZXNzIGhhcyBleGl0
ZWQuCisgIGRvIHsKKyAgICBieXRlc19yZWFkID0gcG9zaXg6OlJlYWQocmVhZF9mZCgpLCAmZmxh
ZywgMSk7CisgIH0gd2hpbGUgKGJ5dGVzX3JlYWQgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpOwor
CisgIGlmIChieXRlc19yZWFkID09IDApIHsKKyAgICBzZXRfb3V0Y29tZShESUVEKTsKKyAgfSBl
bHNlIGlmIChieXRlc19yZWFkID09IDEpIHsKKyAgICBzd2l0Y2ggKGZsYWcpIHsKKyAgICAgIGNh
c2Uga0RlYXRoVGVzdFJldHVybmVkOgorICAgICAgICBzZXRfb3V0Y29tZShSRVRVUk5FRCk7Cisg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSBrRGVhdGhUZXN0VGhyZXc6CisgICAgICAgIHNldF9v
dXRjb21lKFRIUkVXKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIGtEZWF0aFRlc3RMaXZl
ZDoKKyAgICAgICAgc2V0X291dGNvbWUoTElWRUQpOworICAgICAgICBicmVhazsKKyAgICAgIGNh
c2Uga0RlYXRoVGVzdEludGVybmFsRXJyb3I6CisgICAgICAgIEZhaWxGcm9tSW50ZXJuYWxFcnJv
cihyZWFkX2ZkKCkpOyAgLy8gRG9lcyBub3QgcmV0dXJuLgorICAgICAgICBicmVhazsKKyAgICAg
IGRlZmF1bHQ6CisgICAgICAgIEdURVNUX0xPR18oRkFUQUwpIDw8ICJEZWF0aCB0ZXN0IGNoaWxk
IHByb2Nlc3MgcmVwb3J0ZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAidW5leHBl
Y3RlZCBzdGF0dXMgYnl0ZSAoIgorICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBpbnQ+KGZsYWcpIDw8ICIpIjsKKyAgICB9CisgIH0gZWxzZSB7CisgICAg
R1RFU1RfTE9HXyhGQVRBTCkgPDwgIlJlYWQgZnJvbSBkZWF0aCB0ZXN0IGNoaWxkIHByb2Nlc3Mg
ZmFpbGVkOiAiCisgICAgICAgICAgICAgICAgICAgICAgPDwgR2V0TGFzdEVycm5vRGVzY3JpcHRp
b24oKTsKKyAgfQorICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLX1NZU0NBTExfKHBvc2l4OjpDbG9z
ZShyZWFkX2ZkKCkpKTsKKyAgc2V0X3JlYWRfZmQoLTEpOworfQorCisvLyBTaWduYWxzIHRoYXQg
dGhlIGRlYXRoIHRlc3QgY29kZSB3aGljaCBzaG91bGQgaGF2ZSBleGl0ZWQsIGRpZG4ndC4KKy8v
IFNob3VsZCBiZSBjYWxsZWQgb25seSBpbiBhIGRlYXRoIHRlc3QgY2hpbGQgcHJvY2Vzcy4KKy8v
IFdyaXRlcyBhIHN0YXR1cyBieXRlIHRvIHRoZSBjaGlsZCdzIHN0YXR1cyBmaWxlIGRlc2NyaXB0
b3IsIHRoZW4KKy8vIGNhbGxzIF9leGl0KDEpLgordm9pZCBEZWF0aFRlc3RJbXBsOjpBYm9ydChB
Ym9ydFJlYXNvbiByZWFzb24pIHsKKyAgLy8gVGhlIHBhcmVudCBwcm9jZXNzIGNvbnNpZGVycyB0
aGUgZGVhdGggdGVzdCB0byBiZSBhIGZhaWx1cmUgaWYKKyAgLy8gaXQgZmluZHMgYW55IGRhdGEg
aW4gb3VyIHBpcGUuICBTbywgaGVyZSB3ZSB3cml0ZSBhIHNpbmdsZSBmbGFnIGJ5dGUKKyAgLy8g
dG8gdGhlIHBpcGUsIHRoZW4gZXhpdC4KKyAgY29uc3QgY2hhciBzdGF0dXNfY2ggPQorICAgICAg
cmVhc29uID09IFRFU1RfRElEX05PVF9ESUUgPyBrRGVhdGhUZXN0TGl2ZWQgOgorICAgICAgcmVh
c29uID09IFRFU1RfVEhSRVdfRVhDRVBUSU9OID8ga0RlYXRoVGVzdFRocmV3IDoga0RlYXRoVGVz
dFJldHVybmVkOworCisgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8ocG9zaXg6Oldy
aXRlKHdyaXRlX2ZkKCksICZzdGF0dXNfY2gsIDEpKTsKKyAgLy8gV2UgYXJlIGxlYWtpbmcgdGhl
IGRlc2NyaXB0b3IgaGVyZSBiZWNhdXNlIG9uIHNvbWUgcGxhdGZvcm1zIChpLmUuLAorICAvLyB3
aGVuIGJ1aWx0IGFzIFdpbmRvd3MgRExMKSwgZGVzdHJ1Y3RvcnMgb2YgZ2xvYmFsIG9iamVjdHMg
d2lsbCBzdGlsbAorICAvLyBydW4gYWZ0ZXIgY2FsbGluZyBfZXhpdCgpLiBPbiBzdWNoIHN5c3Rl
bXMsIHdyaXRlX2ZkXyB3aWxsIGJlCisgIC8vIGluZGlyZWN0bHkgY2xvc2VkIGZyb20gdGhlIGRl
c3RydWN0b3Igb2YgVW5pdFRlc3RJbXBsLCBjYXVzaW5nIGRvdWJsZQorICAvLyBjbG9zZSBpZiBp
dCBpcyBhbHNvIGNsb3NlZCBoZXJlLiBPbiBkZWJ1ZyBjb25maWd1cmF0aW9ucywgZG91YmxlIGNs
b3NlCisgIC8vIG1heSBhc3NlcnQuIEFzIHRoZXJlIGFyZSBubyBpbi1wcm9jZXNzIGJ1ZmZlcnMg
dG8gZmx1c2ggaGVyZSwgd2UgYXJlCisgIC8vIHJlbHlpbmcgb24gdGhlIE9TIHRvIGNsb3NlIHRo
ZSBkZXNjcmlwdG9yIGFmdGVyIHRoZSBwcm9jZXNzIHRlcm1pbmF0ZXMKKyAgLy8gd2hlbiB0aGUg
ZGVzdHJ1Y3RvcnMgYXJlIG5vdCBydW4uCisgIF9leGl0KDEpOyAgLy8gRXhpdHMgdy9vIGFueSBu
b3JtYWwgZXhpdCBob29rcyAod2Ugd2VyZSBzdXBwb3NlZCB0byBjcmFzaCkKK30KKworLy8gUmV0
dXJucyBhbiBpbmRlbnRlZCBjb3B5IG9mIHN0ZGVyciBvdXRwdXQgZm9yIGEgZGVhdGggdGVzdC4K
Ky8vIFRoaXMgbWFrZXMgZGlzdGluZ3Vpc2hpbmcgZGVhdGggdGVzdCBvdXRwdXQgbGluZXMgZnJv
bSByZWd1bGFyIGxvZyBsaW5lcworLy8gbXVjaCBlYXNpZXIuCitzdGF0aWMgOjpzdGQ6OnN0cmlu
ZyBGb3JtYXREZWF0aFRlc3RPdXRwdXQoY29uc3QgOjpzdGQ6OnN0cmluZyYgb3V0cHV0KSB7Cisg
IDo6c3RkOjpzdHJpbmcgcmV0OworICBmb3IgKHNpemVfdCBhdCA9IDA7IDsgKSB7CisgICAgY29u
c3Qgc2l6ZV90IGxpbmVfZW5kID0gb3V0cHV0LmZpbmQoJ1xuJywgYXQpOworICAgIHJldCArPSAi
WyAgREVBVEggICBdICI7CisgICAgaWYgKGxpbmVfZW5kID09IDo6c3RkOjpzdHJpbmc6Om5wb3Mp
IHsKKyAgICAgIHJldCArPSBvdXRwdXQuc3Vic3RyKGF0KTsKKyAgICAgIGJyZWFrOworICAgIH0K
KyAgICByZXQgKz0gb3V0cHV0LnN1YnN0cihhdCwgbGluZV9lbmQgKyAxIC0gYXQpOworICAgIGF0
ID0gbGluZV9lbmQgKyAxOworICB9CisgIHJldHVybiByZXQ7Cit9CisKKy8vIEFzc2Vzc2VzIHRo
ZSBzdWNjZXNzIG9yIGZhaWx1cmUgb2YgYSBkZWF0aCB0ZXN0LCB1c2luZyBib3RoIHByaXZhdGUK
Ky8vIG1lbWJlcnMgd2hpY2ggaGF2ZSBwcmV2aW91c2x5IGJlZW4gc2V0LCBhbmQgb25lIGFyZ3Vt
ZW50OgorLy8KKy8vIFByaXZhdGUgZGF0YSBtZW1iZXJzOgorLy8gICBvdXRjb21lOiAgQW4gZW51
bWVyYXRpb24gZGVzY3JpYmluZyBob3cgdGhlIGRlYXRoIHRlc3QKKy8vICAgICAgICAgICAgIGNv
bmNsdWRlZDogRElFRCwgTElWRUQsIFRIUkVXLCBvciBSRVRVUk5FRC4gIFRoZSBkZWF0aCB0ZXN0
CisvLyAgICAgICAgICAgICBmYWlscyBpbiB0aGUgbGF0dGVyIHRocmVlIGNhc2VzLgorLy8gICBz
dGF0dXM6ICAgVGhlIGV4aXQgc3RhdHVzIG9mIHRoZSBjaGlsZCBwcm9jZXNzLiBPbiAqbml4LCBp
dCBpcyBpbiB0aGUKKy8vICAgICAgICAgICAgIGluIHRoZSBmb3JtYXQgc3BlY2lmaWVkIGJ5IHdh
aXQoMikuIE9uIFdpbmRvd3MsIHRoaXMgaXMgdGhlCisvLyAgICAgICAgICAgICB2YWx1ZSBzdXBw
bGllZCB0byB0aGUgRXhpdFByb2Nlc3MoKSBBUEkgb3IgYSBudW1lcmljIGNvZGUKKy8vICAgICAg
ICAgICAgIG9mIHRoZSBleGNlcHRpb24gdGhhdCB0ZXJtaW5hdGVkIHRoZSBwcm9ncmFtLgorLy8g
ICByZWdleDogICAgQSByZWd1bGFyIGV4cHJlc3Npb24gb2JqZWN0IHRvIGJlIGFwcGxpZWQgdG8K
Ky8vICAgICAgICAgICAgIHRoZSB0ZXN0J3MgY2FwdHVyZWQgc3RhbmRhcmQgZXJyb3Igb3V0cHV0
OyB0aGUgZGVhdGggdGVzdAorLy8gICAgICAgICAgICAgZmFpbHMgaWYgaXQgZG9lcyBub3QgbWF0
Y2guCisvLworLy8gQXJndW1lbnQ6CisvLyAgIHN0YXR1c19vazogdHJ1ZSBpZiBleGl0X3N0YXR1
cyBpcyBhY2NlcHRhYmxlIGluIHRoZSBjb250ZXh0IG9mCisvLyAgICAgICAgICAgICAgdGhpcyBw
YXJ0aWN1bGFyIGRlYXRoIHRlc3QsIHdoaWNoIGZhaWxzIGlmIGl0IGlzIGZhbHNlCisvLworLy8g
UmV0dXJucyB0cnVlIGlmZiBhbGwgb2YgdGhlIGFib3ZlIGNvbmRpdGlvbnMgYXJlIG1ldC4gIE90
aGVyd2lzZSwgdGhlCisvLyBmaXJzdCBmYWlsaW5nIGNvbmRpdGlvbiwgaW4gdGhlIG9yZGVyIGdp
dmVuIGFib3ZlLCBpcyB0aGUgb25lIHRoYXQgaXMKKy8vIHJlcG9ydGVkLiBBbHNvIHNldHMgdGhl
IGxhc3QgZGVhdGggdGVzdCBtZXNzYWdlIHN0cmluZy4KK2Jvb2wgRGVhdGhUZXN0SW1wbDo6UGFz
c2VkKGJvb2wgc3RhdHVzX29rKSB7CisgIGlmICghc3Bhd25lZCgpKQorICAgIHJldHVybiBmYWxz
ZTsKKworICBjb25zdCBzdGQ6OnN0cmluZyBlcnJvcl9tZXNzYWdlID0gR2V0Q2FwdHVyZWRTdGRl
cnIoKTsKKworICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgTWVzc2FnZSBidWZmZXI7CisKKyAg
YnVmZmVyIDw8ICJEZWF0aCB0ZXN0OiAiIDw8IHN0YXRlbWVudCgpIDw8ICJcbiI7CisgIHN3aXRj
aCAob3V0Y29tZSgpKSB7CisgICAgY2FzZSBMSVZFRDoKKyAgICAgIGJ1ZmZlciA8PCAiICAgIFJl
c3VsdDogZmFpbGVkIHRvIGRpZS5cbiIKKyAgICAgICAgICAgICA8PCAiIEVycm9yIG1zZzpcbiIg
PDwgRm9ybWF0RGVhdGhUZXN0T3V0cHV0KGVycm9yX21lc3NhZ2UpOworICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBUSFJFVzoKKyAgICAgIGJ1ZmZlciA8PCAiICAgIFJlc3VsdDogdGhyZXcgYW4gZXhj
ZXB0aW9uLlxuIgorICAgICAgICAgICAgIDw8ICIgRXJyb3IgbXNnOlxuIiA8PCBGb3JtYXREZWF0
aFRlc3RPdXRwdXQoZXJyb3JfbWVzc2FnZSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFJFVFVS
TkVEOgorICAgICAgYnVmZmVyIDw8ICIgICAgUmVzdWx0OiBpbGxlZ2FsIHJldHVybiBpbiB0ZXN0
IHN0YXRlbWVudC5cbiIKKyAgICAgICAgICAgICA8PCAiIEVycm9yIG1zZzpcbiIgPDwgRm9ybWF0
RGVhdGhUZXN0T3V0cHV0KGVycm9yX21lc3NhZ2UpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBE
SUVEOgorICAgICAgaWYgKHN0YXR1c19vaykgeworICAgICAgICBjb25zdCBib29sIG1hdGNoZWQg
PSBSRTo6UGFydGlhbE1hdGNoKGVycm9yX21lc3NhZ2UuY19zdHIoKSwgKnJlZ2V4KCkpOworICAg
ICAgICBpZiAobWF0Y2hlZCkgeworICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgIGJ1ZmZlciA8PCAiICAgIFJlc3VsdDogZGllZCBidXQgbm90IHdp
dGggZXhwZWN0ZWQgZXJyb3IuXG4iCisgICAgICAgICAgICAgICAgIDw8ICIgIEV4cGVjdGVkOiAi
IDw8IHJlZ2V4KCktPnBhdHRlcm4oKSA8PCAiXG4iCisgICAgICAgICAgICAgICAgIDw8ICJBY3R1
YWwgbXNnOlxuIiA8PCBGb3JtYXREZWF0aFRlc3RPdXRwdXQoZXJyb3JfbWVzc2FnZSk7CisgICAg
ICAgIH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGJ1ZmZlciA8PCAiICAgIFJlc3VsdDogZGll
ZCBidXQgbm90IHdpdGggZXhwZWN0ZWQgZXhpdCBjb2RlOlxuIgorICAgICAgICAgICAgICAgPDwg
IiAgICAgICAgICAgICIgPDwgRXhpdFN1bW1hcnkoc3RhdHVzKCkpIDw8ICJcbiIKKyAgICAgICAg
ICAgICAgIDw8ICJBY3R1YWwgbXNnOlxuIiA8PCBGb3JtYXREZWF0aFRlc3RPdXRwdXQoZXJyb3Jf
bWVzc2FnZSk7CisgICAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNlIElOX1BST0dSRVNTOgor
ICAgIGRlZmF1bHQ6CisgICAgICBHVEVTVF9MT0dfKEZBVEFMKQorICAgICAgICAgIDw8ICJEZWF0
aFRlc3Q6OlBhc3NlZCBzb21laG93IGNhbGxlZCBiZWZvcmUgY29uY2x1c2lvbiBvZiB0ZXN0IjsK
KyAgfQorCisgIERlYXRoVGVzdDo6c2V0X2xhc3RfZGVhdGhfdGVzdF9tZXNzYWdlKGJ1ZmZlci5H
ZXRTdHJpbmcoKSk7CisgIHJldHVybiBzdWNjZXNzOworfQorCisjIGlmIEdURVNUX09TX1dJTkRP
V1MKKy8vIFdpbmRvd3NEZWF0aFRlc3QgaW1wbGVtZW50cyBkZWF0aCB0ZXN0cyBvbiBXaW5kb3dz
LiBEdWUgdG8gdGhlCisvLyBzcGVjaWZpY3Mgb2Ygc3RhcnRpbmcgbmV3IHByb2Nlc3NlcyBvbiBX
aW5kb3dzLCBkZWF0aCB0ZXN0cyB0aGVyZSBhcmUKKy8vIGFsd2F5cyB0aHJlYWRzYWZlLCBhbmQg
R29vZ2xlIFRlc3QgY29uc2lkZXJzIHRoZQorLy8gLS1ndGVzdF9kZWF0aF90ZXN0X3N0eWxlPWZh
c3Qgc2V0dGluZyB0byBiZSBlcXVpdmFsZW50IHRvCisvLyAtLWd0ZXN0X2RlYXRoX3Rlc3Rfc3R5
bGU9dGhyZWFkc2FmZSB0aGVyZS4KKy8vCisvLyBBIGZldyBpbXBsZW1lbnRhdGlvbiBub3Rlczog
IExpa2UgdGhlIExpbnV4IHZlcnNpb24sIHRoZSBXaW5kb3dzCisvLyBpbXBsZW1lbnRhdGlvbiB1
c2VzIHBpcGVzIGZvciBjaGlsZC10by1wYXJlbnQgY29tbXVuaWNhdGlvbi4gQnV0IGR1ZSB0bwor
Ly8gdGhlIHNwZWNpZmljcyBvZiBwaXBlcyBvbiBXaW5kb3dzLCBzb21lIGV4dHJhIHN0ZXBzIGFy
ZSByZXF1aXJlZDoKKy8vCisvLyAxLiBUaGUgcGFyZW50IGNyZWF0ZXMgYSBjb21tdW5pY2F0aW9u
IHBpcGUgYW5kIHN0b3JlcyBoYW5kbGVzIHRvIGJvdGgKKy8vICAgIGVuZHMgb2YgaXQuCisvLyAy
LiBUaGUgcGFyZW50IHN0YXJ0cyB0aGUgY2hpbGQgYW5kIHByb3ZpZGVzIGl0IHdpdGggdGhlIGlu
Zm9ybWF0aW9uCisvLyAgICBuZWNlc3NhcnkgdG8gYWNxdWlyZSB0aGUgaGFuZGxlIHRvIHRoZSB3
cml0ZSBlbmQgb2YgdGhlIHBpcGUuCisvLyAzLiBUaGUgY2hpbGQgYWNxdWlyZXMgdGhlIHdyaXRl
IGVuZCBvZiB0aGUgcGlwZSBhbmQgc2lnbmFscyB0aGUgcGFyZW50CisvLyAgICB1c2luZyBhIFdp
bmRvd3MgZXZlbnQuCisvLyA0LiBOb3cgdGhlIHBhcmVudCBjYW4gcmVsZWFzZSB0aGUgd3JpdGUg
ZW5kIG9mIHRoZSBwaXBlIG9uIGl0cyBzaWRlLiBJZgorLy8gICAgdGhpcyBpcyBkb25lIGJlZm9y
ZSBzdGVwIDMsIHRoZSBvYmplY3QncyByZWZlcmVuY2UgY291bnQgZ29lcyBkb3duIHRvCisvLyAg
ICAwIGFuZCBpdCBpcyBkZXN0cm95ZWQsIHByZXZlbnRpbmcgdGhlIGNoaWxkIGZyb20gYWNxdWly
aW5nIGl0LiBUaGUKKy8vICAgIHBhcmVudCBub3cgaGFzIHRvIHJlbGVhc2UgaXQsIG9yIHJlYWQg
b3BlcmF0aW9ucyBvbiB0aGUgcmVhZCBlbmQgb2YKKy8vICAgIHRoZSBwaXBlIHdpbGwgbm90IHJl
dHVybiB3aGVuIHRoZSBjaGlsZCB0ZXJtaW5hdGVzLgorLy8gNS4gVGhlIHBhcmVudCByZWFkcyBj
aGlsZCdzIG91dHB1dCB0aHJvdWdoIHRoZSBwaXBlIChvdXRjb21lIGNvZGUgYW5kCisvLyAgICBh
bnkgcG9zc2libGUgZXJyb3IgbWVzc2FnZXMpIGZyb20gdGhlIHBpcGUsIGFuZCBpdHMgc3RkZXJy
IGFuZCB0aGVuCisvLyAgICBkZXRlcm1pbmVzIHdoZXRoZXIgdG8gZmFpbCB0aGUgdGVzdC4KKy8v
CisvLyBOb3RlOiB0byBkaXN0aW5ndWlzaCBXaW4zMiBBUEkgY2FsbHMgZnJvbSB0aGUgbG9jYWwg
bWV0aG9kIGFuZCBmdW5jdGlvbgorLy8gY2FsbHMsIHRoZSBmb3JtZXIgYXJlIGV4cGxpY2l0bHkg
cmVzb2x2ZWQgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCisvLworY2xhc3MgV2luZG93c0RlYXRo
VGVzdCA6IHB1YmxpYyBEZWF0aFRlc3RJbXBsIHsKKyBwdWJsaWM6CisgIFdpbmRvd3NEZWF0aFRl
c3QoY29uc3QgY2hhciogYV9zdGF0ZW1lbnQsCisgICAgICAgICAgICAgICAgICAgY29uc3QgUkUq
IGFfcmVnZXgsCisgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZmlsZSwKKyAgICAgICAg
ICAgICAgICAgICBpbnQgbGluZSkKKyAgICAgIDogRGVhdGhUZXN0SW1wbChhX3N0YXRlbWVudCwg
YV9yZWdleCksIGZpbGVfKGZpbGUpLCBsaW5lXyhsaW5lKSB7fQorCisgIC8vIEFsbCBvZiB0aGVz
ZSB2aXJ0dWFsIGZ1bmN0aW9ucyBhcmUgaW5oZXJpdGVkIGZyb20gRGVhdGhUZXN0LgorICB2aXJ0
dWFsIGludCBXYWl0KCk7CisgIHZpcnR1YWwgVGVzdFJvbGUgQXNzdW1lUm9sZSgpOworCisgcHJp
dmF0ZToKKyAgLy8gVGhlIG5hbWUgb2YgdGhlIGZpbGUgaW4gd2hpY2ggdGhlIGRlYXRoIHRlc3Qg
aXMgbG9jYXRlZC4KKyAgY29uc3QgY2hhciogY29uc3QgZmlsZV87CisgIC8vIFRoZSBsaW5lIG51
bWJlciBvbiB3aGljaCB0aGUgZGVhdGggdGVzdCBpcyBsb2NhdGVkLgorICBjb25zdCBpbnQgbGlu
ZV87CisgIC8vIEhhbmRsZSB0byB0aGUgd3JpdGUgZW5kIG9mIHRoZSBwaXBlIHRvIHRoZSBjaGls
ZCBwcm9jZXNzLgorICBBdXRvSGFuZGxlIHdyaXRlX2hhbmRsZV87CisgIC8vIENoaWxkIHByb2Nl
c3MgaGFuZGxlLgorICBBdXRvSGFuZGxlIGNoaWxkX2hhbmRsZV87CisgIC8vIEV2ZW50IHRoZSBj
aGlsZCBwcm9jZXNzIHVzZXMgdG8gc2lnbmFsIHRoZSBwYXJlbnQgdGhhdCBpdCBoYXMKKyAgLy8g
YWNxdWlyZWQgdGhlIGhhbmRsZSB0byB0aGUgd3JpdGUgZW5kIG9mIHRoZSBwaXBlLiBBZnRlciBz
ZWVpbmcgdGhpcworICAvLyBldmVudCB0aGUgcGFyZW50IGNhbiByZWxlYXNlIGl0cyBvd24gaGFu
ZGxlcyB0byBtYWtlIHN1cmUgaXRzCisgIC8vIFJlYWRGaWxlKCkgY2FsbHMgcmV0dXJuIHdoZW4g
dGhlIGNoaWxkIHRlcm1pbmF0ZXMuCisgIEF1dG9IYW5kbGUgZXZlbnRfaGFuZGxlXzsKK307CisK
Ky8vIFdhaXRzIGZvciB0aGUgY2hpbGQgaW4gYSBkZWF0aCB0ZXN0IHRvIGV4aXQsIHJldHVybmlu
ZyBpdHMgZXhpdAorLy8gc3RhdHVzLCBvciAwIGlmIG5vIGNoaWxkIHByb2Nlc3MgZXhpc3RzLiAg
QXMgYSBzaWRlIGVmZmVjdCwgc2V0cyB0aGUKKy8vIG91dGNvbWUgZGF0YSBtZW1iZXIuCitpbnQg
V2luZG93c0RlYXRoVGVzdDo6V2FpdCgpIHsKKyAgaWYgKCFzcGF3bmVkKCkpCisgICAgcmV0dXJu
IDA7CisKKyAgLy8gV2FpdCB1bnRpbCB0aGUgY2hpbGQgZWl0aGVyIHNpZ25hbHMgdGhhdCBpdCBo
YXMgYWNxdWlyZWQgdGhlIHdyaXRlIGVuZAorICAvLyBvZiB0aGUgcGlwZSBvciBpdCBkaWVzLgor
ICBjb25zdCBIQU5ETEUgd2FpdF9oYW5kbGVzWzJdID0geyBjaGlsZF9oYW5kbGVfLkdldCgpLCBl
dmVudF9oYW5kbGVfLkdldCgpIH07CisgIHN3aXRjaCAoOjpXYWl0Rm9yTXVsdGlwbGVPYmplY3Rz
KDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhaXRfaGFuZGxlcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsICAvLyBXYWl0cyBmb3IgYW55
IG9mIHRoZSBoYW5kbGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTkZJ
TklURSkpIHsKKyAgICBjYXNlIFdBSVRfT0JKRUNUXzA6CisgICAgY2FzZSBXQUlUX09CSkVDVF8w
ICsgMToKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBHVEVTVF9ERUFUSF9URVNU
X0NIRUNLXyhmYWxzZSk7ICAvLyBTaG91bGQgbm90IGdldCBoZXJlLgorICB9CisKKyAgLy8gVGhl
IGNoaWxkIGhhcyBhY3F1aXJlZCB0aGUgd3JpdGUgZW5kIG9mIHRoZSBwaXBlIG9yIGV4aXRlZC4K
KyAgLy8gV2UgcmVsZWFzZSB0aGUgaGFuZGxlIG9uIG91ciBzaWRlIGFuZCBjb250aW51ZS4KKyAg
d3JpdGVfaGFuZGxlXy5SZXNldCgpOworICBldmVudF9oYW5kbGVfLlJlc2V0KCk7CisKKyAgUmVh
ZEFuZEludGVycHJldFN0YXR1c0J5dGUoKTsKKworICAvLyBXYWl0cyBmb3IgdGhlIGNoaWxkIHBy
b2Nlc3MgdG8gZXhpdCBpZiBpdCBoYXZlbid0IGFscmVhZHkuIFRoaXMKKyAgLy8gcmV0dXJucyBp
bW1lZGlhdGVseSBpZiB0aGUgY2hpbGQgaGFzIGFscmVhZHkgZXhpdGVkLCByZWdhcmRsZXNzIG9m
CisgIC8vIHdoZXRoZXIgcHJldmlvdXMgY2FsbHMgdG8gV2FpdEZvck11bHRpcGxlT2JqZWN0cyBz
eW5jaHJvbml6ZWQgb24gdGhpcworICAvLyBoYW5kbGUgb3Igbm90LgorICBHVEVTVF9ERUFUSF9U
RVNUX0NIRUNLXygKKyAgICAgIFdBSVRfT0JKRUNUXzAgPT0gOjpXYWl0Rm9yU2luZ2xlT2JqZWN0
KGNoaWxkX2hhbmRsZV8uR2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBJTkZJTklURSkpOworICBEV09SRCBzdGF0dXNfY29kZTsKKyAgR1RFU1RfREVB
VEhfVEVTVF9DSEVDS18oCisgICAgICA6OkdldEV4aXRDb2RlUHJvY2VzcyhjaGlsZF9oYW5kbGVf
LkdldCgpLCAmc3RhdHVzX2NvZGUpICE9IEZBTFNFKTsKKyAgY2hpbGRfaGFuZGxlXy5SZXNldCgp
OworICBzZXRfc3RhdHVzKHN0YXRpY19jYXN0PGludD4oc3RhdHVzX2NvZGUpKTsKKyAgcmV0dXJu
IHN0YXR1cygpOworfQorCisvLyBUaGUgQXNzdW1lUm9sZSBwcm9jZXNzIGZvciBhIFdpbmRvd3Mg
ZGVhdGggdGVzdC4gIEl0IGNyZWF0ZXMgYSBjaGlsZAorLy8gcHJvY2VzcyB3aXRoIHRoZSBzYW1l
IGV4ZWN1dGFibGUgYXMgdGhlIGN1cnJlbnQgcHJvY2VzcyB0byBydW4gdGhlCisvLyBkZWF0aCB0
ZXN0LiAgVGhlIGNoaWxkIHByb2Nlc3MgaXMgZ2l2ZW4gdGhlIC0tZ3Rlc3RfZmlsdGVyIGFuZAor
Ly8gLS1ndGVzdF9pbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCBmbGFncyBzdWNoIHRoYXQgaXQga25v
d3MgdG8gcnVuIHRoZQorLy8gY3VycmVudCBkZWF0aCB0ZXN0IG9ubHkuCitEZWF0aFRlc3Q6OlRl
c3RSb2xlIFdpbmRvd3NEZWF0aFRlc3Q6OkFzc3VtZVJvbGUoKSB7CisgIGNvbnN0IFVuaXRUZXN0
SW1wbCogY29uc3QgaW1wbCA9IEdldFVuaXRUZXN0SW1wbCgpOworICBjb25zdCBJbnRlcm5hbFJ1
bkRlYXRoVGVzdEZsYWcqIGNvbnN0IGZsYWcgPQorICAgICAgaW1wbC0+aW50ZXJuYWxfcnVuX2Rl
YXRoX3Rlc3RfZmxhZygpOworICBjb25zdCBUZXN0SW5mbyogY29uc3QgaW5mbyA9IGltcGwtPmN1
cnJlbnRfdGVzdF9pbmZvKCk7CisgIGNvbnN0IGludCBkZWF0aF90ZXN0X2luZGV4ID0gaW5mby0+
cmVzdWx0KCktPmRlYXRoX3Rlc3RfY291bnQoKTsKKworICBpZiAoZmxhZyAhPSBOVUxMKSB7Cisg
ICAgLy8gUGFyc2VJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcoKSBoYXMgcGVyZm9ybWVkIGFsbCB0
aGUgbmVjZXNzYXJ5CisgICAgLy8gcHJvY2Vzc2luZy4KKyAgICBzZXRfd3JpdGVfZmQoZmxhZy0+
d3JpdGVfZmQoKSk7CisgICAgcmV0dXJuIEVYRUNVVEVfVEVTVDsKKyAgfQorCisgIC8vIFdpbmRv
d3NEZWF0aFRlc3QgdXNlcyBhbiBhbm9ueW1vdXMgcGlwZSB0byBjb21tdW5pY2F0ZSByZXN1bHRz
IG9mCisgIC8vIGEgZGVhdGggdGVzdC4KKyAgU0VDVVJJVFlfQVRUUklCVVRFUyBoYW5kbGVzX2Fy
ZV9pbmhlcml0YWJsZSA9IHsKKyAgICBzaXplb2YoU0VDVVJJVFlfQVRUUklCVVRFUyksIE5VTEws
IFRSVUUgfTsKKyAgSEFORExFIHJlYWRfaGFuZGxlLCB3cml0ZV9oYW5kbGU7CisgIEdURVNUX0RF
QVRIX1RFU1RfQ0hFQ0tfKAorICAgICAgOjpDcmVhdGVQaXBlKCZyZWFkX2hhbmRsZSwgJndyaXRl
X2hhbmRsZSwgJmhhbmRsZXNfYXJlX2luaGVyaXRhYmxlLAorICAgICAgICAgICAgICAgICAgIDAp
ICAvLyBEZWZhdWx0IGJ1ZmZlciBzaXplLgorICAgICAgIT0gRkFMU0UpOworICBzZXRfcmVhZF9m
ZCg6Ol9vcGVuX29zZmhhbmRsZShyZWludGVycHJldF9jYXN0PGludHB0cl90PihyZWFkX2hhbmRs
ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9fUkRPTkxZKSk7CisgIHdyaXRl
X2hhbmRsZV8uUmVzZXQod3JpdGVfaGFuZGxlKTsKKyAgZXZlbnRfaGFuZGxlXy5SZXNldCg6OkNy
ZWF0ZUV2ZW50KAorICAgICAgJmhhbmRsZXNfYXJlX2luaGVyaXRhYmxlLAorICAgICAgVFJVRSwg
ICAgLy8gVGhlIGV2ZW50IHdpbGwgYXV0b21hdGljYWxseSByZXNldCB0byBub24tc2lnbmFsZWQg
c3RhdGUuCisgICAgICBGQUxTRSwgICAvLyBUaGUgaW5pdGlhbCBzdGF0ZSBpcyBub24tc2lnbmFs
bGVkLgorICAgICAgTlVMTCkpOyAgLy8gVGhlIGV2ZW4gaXMgdW5uYW1lZC4KKyAgR1RFU1RfREVB
VEhfVEVTVF9DSEVDS18oZXZlbnRfaGFuZGxlXy5HZXQoKSAhPSBOVUxMKTsKKyAgY29uc3Qgc3Rk
OjpzdHJpbmcgZmlsdGVyX2ZsYWcgPQorICAgICAgc3RkOjpzdHJpbmcoIi0tIikgKyBHVEVTVF9G
TEFHX1BSRUZJWF8gKyBrRmlsdGVyRmxhZyArICI9IiArCisgICAgICBpbmZvLT50ZXN0X2Nhc2Vf
bmFtZSgpICsgIi4iICsgaW5mby0+bmFtZSgpOworICBjb25zdCBzdGQ6OnN0cmluZyBpbnRlcm5h
bF9mbGFnID0KKyAgICAgIHN0ZDo6c3RyaW5nKCItLSIpICsgR1RFU1RfRkxBR19QUkVGSVhfICsg
a0ludGVybmFsUnVuRGVhdGhUZXN0RmxhZyArCisgICAgICAiPSIgKyBmaWxlXyArICJ8IiArIFN0
cmVhbWFibGVUb1N0cmluZyhsaW5lXykgKyAifCIgKworICAgICAgU3RyZWFtYWJsZVRvU3RyaW5n
KGRlYXRoX3Rlc3RfaW5kZXgpICsgInwiICsKKyAgICAgIFN0cmVhbWFibGVUb1N0cmluZyhzdGF0
aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KDo6R2V0Q3VycmVudFByb2Nlc3NJZCgpKSkgKworICAgICAg
Ly8gc2l6ZV90IGhhcyB0aGUgc2FtZSB3aWR0aCBhcyBwb2ludGVycyBvbiBib3RoIDMyLWJpdCBh
bmQgNjQtYml0CisgICAgICAvLyBXaW5kb3dzIHBsYXRmb3Jtcy4KKyAgICAgIC8vIFNlZSBodHRw
Oi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvdGN4ZjFkdzYuYXNweC4KKyAgICAg
ICJ8IiArIFN0cmVhbWFibGVUb1N0cmluZyhyZWludGVycHJldF9jYXN0PHNpemVfdD4od3JpdGVf
aGFuZGxlKSkgKworICAgICAgInwiICsgU3RyZWFtYWJsZVRvU3RyaW5nKHJlaW50ZXJwcmV0X2Nh
c3Q8c2l6ZV90PihldmVudF9oYW5kbGVfLkdldCgpKSk7CisKKyAgY2hhciBleGVjdXRhYmxlX3Bh
dGhbX01BWF9QQVRIICsgMV07ICAvLyBOT0xJTlQKKyAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18o
CisgICAgICBfTUFYX1BBVEggKyAxICE9IDo6R2V0TW9kdWxlRmlsZU5hbWVBKE5VTEwsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGVfcGF0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01BWF9QQVRIKSk7
CisKKyAgc3RkOjpzdHJpbmcgY29tbWFuZF9saW5lID0KKyAgICAgIHN0ZDo6c3RyaW5nKDo6R2V0
Q29tbWFuZExpbmVBKCkpICsgIiAiICsgZmlsdGVyX2ZsYWcgKyAiIFwiIiArCisgICAgICBpbnRl
cm5hbF9mbGFnICsgIlwiIjsKKworICBEZWF0aFRlc3Q6OnNldF9sYXN0X2RlYXRoX3Rlc3RfbWVz
c2FnZSgiIik7CisKKyAgQ2FwdHVyZVN0ZGVycigpOworICAvLyBGbHVzaCB0aGUgbG9nIGJ1ZmZl
cnMgc2luY2UgdGhlIGxvZyBzdHJlYW1zIGFyZSBzaGFyZWQgd2l0aCB0aGUgY2hpbGQuCisgIEZs
dXNoSW5mb0xvZygpOworCisgIC8vIFRoZSBjaGlsZCBwcm9jZXNzIHdpbGwgc2hhcmUgdGhlIHN0
YW5kYXJkIGhhbmRsZXMgd2l0aCB0aGUgcGFyZW50LgorICBTVEFSVFVQSU5GT0Egc3RhcnR1cF9p
bmZvOworICBtZW1zZXQoJnN0YXJ0dXBfaW5mbywgMCwgc2l6ZW9mKFNUQVJUVVBJTkZPKSk7Cisg
IHN0YXJ0dXBfaW5mby5kd0ZsYWdzID0gU1RBUlRGX1VTRVNUREhBTkRMRVM7CisgIHN0YXJ0dXBf
aW5mby5oU3RkSW5wdXQgPSA6OkdldFN0ZEhhbmRsZShTVERfSU5QVVRfSEFORExFKTsKKyAgc3Rh
cnR1cF9pbmZvLmhTdGRPdXRwdXQgPSA6OkdldFN0ZEhhbmRsZShTVERfT1VUUFVUX0hBTkRMRSk7
CisgIHN0YXJ0dXBfaW5mby5oU3RkRXJyb3IgPSA6OkdldFN0ZEhhbmRsZShTVERfRVJST1JfSEFO
RExFKTsKKworICBQUk9DRVNTX0lORk9STUFUSU9OIHByb2Nlc3NfaW5mbzsKKyAgR1RFU1RfREVB
VEhfVEVTVF9DSEVDS18oOjpDcmVhdGVQcm9jZXNzQSgKKyAgICAgIGV4ZWN1dGFibGVfcGF0aCwK
KyAgICAgIGNvbnN0X2Nhc3Q8Y2hhcio+KGNvbW1hbmRfbGluZS5jX3N0cigpKSwKKyAgICAgIE5V
TEwsICAgLy8gUmV0dW5lZCBwcm9jZXNzIGhhbmRsZSBpcyBub3QgaW5oZXJpdGFibGUuCisgICAg
ICBOVUxMLCAgIC8vIFJldHVuZWQgdGhyZWFkIGhhbmRsZSBpcyBub3QgaW5oZXJpdGFibGUuCisg
ICAgICBUUlVFLCAgIC8vIENoaWxkIGluaGVyaXRzIGFsbCBpbmhlcml0YWJsZSBoYW5kbGVzIChm
b3Igd3JpdGVfaGFuZGxlXykuCisgICAgICAweDAsICAgIC8vIERlZmF1bHQgY3JlYXRpb24gZmxh
Z3MuCisgICAgICBOVUxMLCAgIC8vIEluaGVyaXQgdGhlIHBhcmVudCdzIGVudmlyb25tZW50Lgor
ICAgICAgVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPm9yaWdpbmFsX3dvcmtpbmdfZGlyKCksCisg
ICAgICAmc3RhcnR1cF9pbmZvLAorICAgICAgJnByb2Nlc3NfaW5mbykgIT0gRkFMU0UpOworICBj
aGlsZF9oYW5kbGVfLlJlc2V0KHByb2Nlc3NfaW5mby5oUHJvY2Vzcyk7CisgIDo6Q2xvc2VIYW5k
bGUocHJvY2Vzc19pbmZvLmhUaHJlYWQpOworICBzZXRfc3Bhd25lZCh0cnVlKTsKKyAgcmV0dXJu
IE9WRVJTRUVfVEVTVDsKK30KKyMgZWxzZSAgLy8gV2UgYXJlIG5vdCBvbiBXaW5kb3dzLgorCisv
LyBGb3JraW5nRGVhdGhUZXN0IHByb3ZpZGVzIGltcGxlbWVudGF0aW9ucyBmb3IgbW9zdCBvZiB0
aGUgYWJzdHJhY3QKKy8vIG1ldGhvZHMgb2YgdGhlIERlYXRoVGVzdCBpbnRlcmZhY2UuICBPbmx5
IHRoZSBBc3N1bWVSb2xlIG1ldGhvZCBpcworLy8gbGVmdCB1bmRlZmluZWQuCitjbGFzcyBGb3Jr
aW5nRGVhdGhUZXN0IDogcHVibGljIERlYXRoVGVzdEltcGwgeworIHB1YmxpYzoKKyAgRm9ya2lu
Z0RlYXRoVGVzdChjb25zdCBjaGFyKiBzdGF0ZW1lbnQsIGNvbnN0IFJFKiByZWdleCk7CisKKyAg
Ly8gQWxsIG9mIHRoZXNlIHZpcnR1YWwgZnVuY3Rpb25zIGFyZSBpbmhlcml0ZWQgZnJvbSBEZWF0
aFRlc3QuCisgIHZpcnR1YWwgaW50IFdhaXQoKTsKKworIHByb3RlY3RlZDoKKyAgdm9pZCBzZXRf
Y2hpbGRfcGlkKHBpZF90IGNoaWxkX3BpZCkgeyBjaGlsZF9waWRfID0gY2hpbGRfcGlkOyB9CisK
KyBwcml2YXRlOgorICAvLyBQSUQgb2YgY2hpbGQgcHJvY2VzcyBkdXJpbmcgZGVhdGggdGVzdDsg
MCBpbiB0aGUgY2hpbGQgcHJvY2VzcyBpdHNlbGYuCisgIHBpZF90IGNoaWxkX3BpZF87Cit9Owor
CisvLyBDb25zdHJ1Y3RzIGEgRm9ya2luZ0RlYXRoVGVzdC4KK0ZvcmtpbmdEZWF0aFRlc3Q6OkZv
cmtpbmdEZWF0aFRlc3QoY29uc3QgY2hhciogYV9zdGF0ZW1lbnQsIGNvbnN0IFJFKiBhX3JlZ2V4
KQorICAgIDogRGVhdGhUZXN0SW1wbChhX3N0YXRlbWVudCwgYV9yZWdleCksCisgICAgICBjaGls
ZF9waWRfKC0xKSB7fQorCisvLyBXYWl0cyBmb3IgdGhlIGNoaWxkIGluIGEgZGVhdGggdGVzdCB0
byBleGl0LCByZXR1cm5pbmcgaXRzIGV4aXQKKy8vIHN0YXR1cywgb3IgMCBpZiBubyBjaGlsZCBw
cm9jZXNzIGV4aXN0cy4gIEFzIGEgc2lkZSBlZmZlY3QsIHNldHMgdGhlCisvLyBvdXRjb21lIGRh
dGEgbWVtYmVyLgoraW50IEZvcmtpbmdEZWF0aFRlc3Q6OldhaXQoKSB7CisgIGlmICghc3Bhd25l
ZCgpKQorICAgIHJldHVybiAwOworCisgIFJlYWRBbmRJbnRlcnByZXRTdGF0dXNCeXRlKCk7CisK
KyAgaW50IHN0YXR1c192YWx1ZTsKKyAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS19TWVNDQUxMXyh3
YWl0cGlkKGNoaWxkX3BpZF8sICZzdGF0dXNfdmFsdWUsIDApKTsKKyAgc2V0X3N0YXR1cyhzdGF0
dXNfdmFsdWUpOworICByZXR1cm4gc3RhdHVzX3ZhbHVlOworfQorCisvLyBBIGNvbmNyZXRlIGRl
YXRoIHRlc3QgY2xhc3MgdGhhdCBmb3JrcywgdGhlbiBpbW1lZGlhdGVseSBydW5zIHRoZSB0ZXN0
CisvLyBpbiB0aGUgY2hpbGQgcHJvY2Vzcy4KK2NsYXNzIE5vRXhlY0RlYXRoVGVzdCA6IHB1Ymxp
YyBGb3JraW5nRGVhdGhUZXN0IHsKKyBwdWJsaWM6CisgIE5vRXhlY0RlYXRoVGVzdChjb25zdCBj
aGFyKiBhX3N0YXRlbWVudCwgY29uc3QgUkUqIGFfcmVnZXgpIDoKKyAgICAgIEZvcmtpbmdEZWF0
aFRlc3QoYV9zdGF0ZW1lbnQsIGFfcmVnZXgpIHsgfQorICB2aXJ0dWFsIFRlc3RSb2xlIEFzc3Vt
ZVJvbGUoKTsKK307CisKKy8vIFRoZSBBc3N1bWVSb2xlIHByb2Nlc3MgZm9yIGEgZm9yay1hbmQt
cnVuIGRlYXRoIHRlc3QuICBJdCBpbXBsZW1lbnRzIGEKKy8vIHN0cmFpZ2h0Zm9yd2FyZCBmb3Jr
LCB3aXRoIGEgc2ltcGxlIHBpcGUgdG8gdHJhbnNtaXQgdGhlIHN0YXR1cyBieXRlLgorRGVhdGhU
ZXN0OjpUZXN0Um9sZSBOb0V4ZWNEZWF0aFRlc3Q6OkFzc3VtZVJvbGUoKSB7CisgIGNvbnN0IHNp
emVfdCB0aHJlYWRfY291bnQgPSBHZXRUaHJlYWRDb3VudCgpOworICBpZiAodGhyZWFkX2NvdW50
ICE9IDEpIHsKKyAgICBHVEVTVF9MT0dfKFdBUk5JTkcpIDw8IERlYXRoVGVzdFRocmVhZFdhcm5p
bmcodGhyZWFkX2NvdW50KTsKKyAgfQorCisgIGludCBwaXBlX2ZkWzJdOworICBHVEVTVF9ERUFU
SF9URVNUX0NIRUNLXyhwaXBlKHBpcGVfZmQpICE9IC0xKTsKKworICBEZWF0aFRlc3Q6OnNldF9s
YXN0X2RlYXRoX3Rlc3RfbWVzc2FnZSgiIik7CisgIENhcHR1cmVTdGRlcnIoKTsKKyAgLy8gV2hl
biB3ZSBmb3JrIHRoZSBwcm9jZXNzIGJlbG93LCB0aGUgbG9nIGZpbGUgYnVmZmVycyBhcmUgY29w
aWVkLCBidXQgdGhlCisgIC8vIGZpbGUgZGVzY3JpcHRvcnMgYXJlIHNoYXJlZC4gIFdlIGZsdXNo
IGFsbCBsb2cgZmlsZXMgaGVyZSBzbyB0aGF0IGNsb3NpbmcKKyAgLy8gdGhlIGZpbGUgZGVzY3Jp
cHRvcnMgaW4gdGhlIGNoaWxkIHByb2Nlc3MgZG9lc24ndCB0aHJvdyBvZmYgdGhlCisgIC8vIHN5
bmNocm9uaXphdGlvbiBiZXR3ZWVuIGRlc2NyaXB0b3JzIGFuZCBidWZmZXJzIGluIHRoZSBwYXJl
bnQgcHJvY2Vzcy4KKyAgLy8gVGhpcyBpcyBhcyBjbG9zZSB0byB0aGUgZm9yayBhcyBwb3NzaWJs
ZSB0byBhdm9pZCBhIHJhY2UgY29uZGl0aW9uIGluIGNhc2UKKyAgLy8gdGhlcmUgYXJlIG11bHRp
cGxlIHRocmVhZHMgcnVubmluZyBiZWZvcmUgdGhlIGRlYXRoIHRlc3QsIGFuZCBhbm90aGVyCisg
IC8vIHRocmVhZCB3cml0ZXMgdG8gdGhlIGxvZyBmaWxlLgorICBGbHVzaEluZm9Mb2coKTsKKwor
ICBjb25zdCBwaWRfdCBjaGlsZF9waWQgPSBmb3JrKCk7CisgIEdURVNUX0RFQVRIX1RFU1RfQ0hF
Q0tfKGNoaWxkX3BpZCAhPSAtMSk7CisgIHNldF9jaGlsZF9waWQoY2hpbGRfcGlkKTsKKyAgaWYg
KGNoaWxkX3BpZCA9PSAwKSB7CisgICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS19TWVNDQUxMXyhj
bG9zZShwaXBlX2ZkWzBdKSk7CisgICAgc2V0X3dyaXRlX2ZkKHBpcGVfZmRbMV0pOworICAgIC8v
IFJlZGlyZWN0cyBhbGwgbG9nZ2luZyB0byBzdGRlcnIgaW4gdGhlIGNoaWxkIHByb2Nlc3MgdG8g
cHJldmVudAorICAgIC8vIGNvbmN1cnJlbnQgd3JpdGVzIHRvIHRoZSBsb2cgZmlsZXMuICBXZSBj
YXB0dXJlIHN0ZGVyciBpbiB0aGUgcGFyZW50CisgICAgLy8gcHJvY2VzcyBhbmQgYXBwZW5kIHRo
ZSBjaGlsZCBwcm9jZXNzJyBvdXRwdXQgdG8gYSBsb2cuCisgICAgTG9nVG9TdGRlcnIoKTsKKyAg
ICAvLyBFdmVudCBmb3J3YXJkaW5nIHRvIHRoZSBsaXN0ZW5lcnMgb2YgZXZlbnQgbGlzdGVuZXIg
QVBJIG11c2ggYmUgc2h1dAorICAgIC8vIGRvd24gaW4gZGVhdGggdGVzdCBzdWJwcm9jZXNzZXMu
CisgICAgR2V0VW5pdFRlc3RJbXBsKCktPmxpc3RlbmVycygpLT5TdXBwcmVzc0V2ZW50Rm9yd2Fy
ZGluZygpOworICAgIGdfaW5fZmFzdF9kZWF0aF90ZXN0X2NoaWxkID0gdHJ1ZTsKKyAgICByZXR1
cm4gRVhFQ1VURV9URVNUOworICB9IGVsc2UgeworICAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tf
U1lTQ0FMTF8oY2xvc2UocGlwZV9mZFsxXSkpOworICAgIHNldF9yZWFkX2ZkKHBpcGVfZmRbMF0p
OworICAgIHNldF9zcGF3bmVkKHRydWUpOworICAgIHJldHVybiBPVkVSU0VFX1RFU1Q7CisgIH0K
K30KKworLy8gQSBjb25jcmV0ZSBkZWF0aCB0ZXN0IGNsYXNzIHRoYXQgZm9ya3MgYW5kIHJlLWV4
ZWN1dGVzIHRoZSBtYWluCisvLyBwcm9ncmFtIGZyb20gdGhlIGJlZ2lubmluZywgd2l0aCBjb21t
YW5kLWxpbmUgZmxhZ3Mgc2V0IHRoYXQgY2F1c2UKKy8vIG9ubHkgdGhpcyBzcGVjaWZpYyBkZWF0
aCB0ZXN0IHRvIGJlIHJ1bi4KK2NsYXNzIEV4ZWNEZWF0aFRlc3QgOiBwdWJsaWMgRm9ya2luZ0Rl
YXRoVGVzdCB7CisgcHVibGljOgorICBFeGVjRGVhdGhUZXN0KGNvbnN0IGNoYXIqIGFfc3RhdGVt
ZW50LCBjb25zdCBSRSogYV9yZWdleCwKKyAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmaWxl
LCBpbnQgbGluZSkgOgorICAgICAgRm9ya2luZ0RlYXRoVGVzdChhX3N0YXRlbWVudCwgYV9yZWdl
eCksIGZpbGVfKGZpbGUpLCBsaW5lXyhsaW5lKSB7IH0KKyAgdmlydHVhbCBUZXN0Um9sZSBBc3N1
bWVSb2xlKCk7CisgcHJpdmF0ZToKKyAgc3RhdGljIDo6c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+
IEdldEFyZ3ZzRm9yRGVhdGhUZXN0Q2hpbGRQcm9jZXNzKCkgeworICAgIDo6c3RkOjp2ZWN0b3I8
c3RkOjpzdHJpbmc+IGFyZ3MgPSBHZXRJbmplY3RhYmxlQXJndnMoKTsKKyMgIGlmIGRlZmluZWQo
R1RFU1RfRVhUUkFfREVBVEhfVEVTVF9DT01NQU5EX0xJTkVfQVJHU18pCisgICAgOjpzdGQ6OnZl
Y3RvcjxzdGQ6OnN0cmluZz4gZXh0cmFfYXJncyA9CisgICAgICAgIEdURVNUX0VYVFJBX0RFQVRI
X1RFU1RfQ09NTUFORF9MSU5FX0FSR1NfKCk7CisgICAgYXJncy5pbnNlcnQoYXJncy5lbmQoKSwg
ZXh0cmFfYXJncy5iZWdpbigpLCBleHRyYV9hcmdzLmVuZCgpKTsKKyMgIGVuZGlmICAvLyBkZWZp
bmVkKEdURVNUX0VYVFJBX0RFQVRIX1RFU1RfQ09NTUFORF9MSU5FX0FSR1NfKQorICAgIHJldHVy
biBhcmdzOworICB9CisgIC8vIFRoZSBuYW1lIG9mIHRoZSBmaWxlIGluIHdoaWNoIHRoZSBkZWF0
aCB0ZXN0IGlzIGxvY2F0ZWQuCisgIGNvbnN0IGNoYXIqIGNvbnN0IGZpbGVfOworICAvLyBUaGUg
bGluZSBudW1iZXIgb24gd2hpY2ggdGhlIGRlYXRoIHRlc3QgaXMgbG9jYXRlZC4KKyAgY29uc3Qg
aW50IGxpbmVfOworfTsKKworLy8gVXRpbGl0eSBjbGFzcyBmb3IgYWNjdW11bGF0aW5nIGNvbW1h
bmQtbGluZSBhcmd1bWVudHMuCitjbGFzcyBBcmd1bWVudHMgeworIHB1YmxpYzoKKyAgQXJndW1l
bnRzKCkgeworICAgIGFyZ3NfLnB1c2hfYmFjayhOVUxMKTsKKyAgfQorCisgIH5Bcmd1bWVudHMo
KSB7CisgICAgZm9yIChzdGQ6OnZlY3RvcjxjaGFyKj46Oml0ZXJhdG9yIGkgPSBhcmdzXy5iZWdp
bigpOyBpICE9IGFyZ3NfLmVuZCgpOworICAgICAgICAgKytpKSB7CisgICAgICBmcmVlKCppKTsK
KyAgICB9CisgIH0KKyAgdm9pZCBBZGRBcmd1bWVudChjb25zdCBjaGFyKiBhcmd1bWVudCkgewor
ICAgIGFyZ3NfLmluc2VydChhcmdzXy5lbmQoKSAtIDEsIHBvc2l4OjpTdHJEdXAoYXJndW1lbnQp
KTsKKyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBTdHI+CisgIHZvaWQgQWRkQXJndW1lbnRz
KGNvbnN0IDo6c3RkOjp2ZWN0b3I8U3RyPiYgYXJndW1lbnRzKSB7CisgICAgZm9yICh0eXBlbmFt
ZSA6OnN0ZDo6dmVjdG9yPFN0cj46OmNvbnN0X2l0ZXJhdG9yIGkgPSBhcmd1bWVudHMuYmVnaW4o
KTsKKyAgICAgICAgIGkgIT0gYXJndW1lbnRzLmVuZCgpOworICAgICAgICAgKytpKSB7CisgICAg
ICBhcmdzXy5pbnNlcnQoYXJnc18uZW5kKCkgLSAxLCBwb3NpeDo6U3RyRHVwKGktPmNfc3RyKCkp
KTsKKyAgICB9CisgIH0KKyAgY2hhciogY29uc3QqIEFyZ3YoKSB7CisgICAgcmV0dXJuICZhcmdz
X1swXTsKKyAgfQorCisgcHJpdmF0ZToKKyAgc3RkOjp2ZWN0b3I8Y2hhcio+IGFyZ3NfOworfTsK
KworLy8gQSBzdHJ1Y3QgdGhhdCBlbmNvbXBhc3NlcyB0aGUgYXJndW1lbnRzIHRvIHRoZSBjaGls
ZCBwcm9jZXNzIG9mIGEKKy8vIHRocmVhZHNhZmUtc3R5bGUgZGVhdGggdGVzdCBwcm9jZXNzLgor
c3RydWN0IEV4ZWNEZWF0aFRlc3RBcmdzIHsKKyAgY2hhciogY29uc3QqIGFyZ3Y7ICAvLyBDb21t
YW5kLWxpbmUgYXJndW1lbnRzIGZvciB0aGUgY2hpbGQncyBjYWxsIHRvIGV4ZWMKKyAgaW50IGNs
b3NlX2ZkOyAgICAgICAvLyBGaWxlIGRlc2NyaXB0b3IgdG8gY2xvc2U7IHRoZSByZWFkIGVuZCBv
ZiBhIHBpcGUKK307CisKKyMgIGlmIEdURVNUX09TX01BQworaW5saW5lIGNoYXIqKiBHZXRFbnZp
cm9uKCkgeworICAvLyBXaGVuIEdvb2dsZSBUZXN0IGlzIGJ1aWx0IGFzIGEgZnJhbWV3b3JrIG9u
IE1hY09TIFgsIHRoZSBlbnZpcm9uIHZhcmlhYmxlCisgIC8vIGlzIHVuYXZhaWxhYmxlLiBBcHBs
ZSdzIGRvY3VtZW50YXRpb24gKG1hbiBlbnZpcm9uKSByZWNvbW1lbmRzIHVzaW5nCisgIC8vIF9O
U0dldEVudmlyb24oKSBpbnN0ZWFkLgorICByZXR1cm4gKl9OU0dldEVudmlyb24oKTsKK30KKyMg
IGVsc2UKKy8vIFNvbWUgUE9TSVggcGxhdGZvcm1zIGV4cGVjdCB5b3UgdG8gZGVjbGFyZSBlbnZp
cm9uLiBleHRlcm4gIkMiIG1ha2VzCisvLyBpdCByZXNpZGUgaW4gdGhlIGdsb2JhbCBuYW1lc3Bh
Y2UuCitleHRlcm4gIkMiIGNoYXIqKiBlbnZpcm9uOworaW5saW5lIGNoYXIqKiBHZXRFbnZpcm9u
KCkgeyByZXR1cm4gZW52aXJvbjsgfQorIyAgZW5kaWYgIC8vIEdURVNUX09TX01BQworCisjICBp
ZiAhR1RFU1RfT1NfUU5YCisvLyBUaGUgbWFpbiBmdW5jdGlvbiBmb3IgYSB0aHJlYWRzYWZlLXN0
eWxlIGRlYXRoIHRlc3QgY2hpbGQgcHJvY2Vzcy4KKy8vIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVk
IGluIGEgY2xvbmUoKS1lZCBwcm9jZXNzIGFuZCB0aHVzIG11c3QgYXZvaWQKKy8vIGFueSBwb3Rl
bnRpYWxseSB1bnNhZmUgb3BlcmF0aW9ucyBsaWtlIG1hbGxvYyBvciBsaWJjIGZ1bmN0aW9ucy4K
K3N0YXRpYyBpbnQgRXhlY0RlYXRoVGVzdENoaWxkTWFpbih2b2lkKiBjaGlsZF9hcmcpIHsKKyAg
RXhlY0RlYXRoVGVzdEFyZ3MqIGNvbnN0IGFyZ3MgPSBzdGF0aWNfY2FzdDxFeGVjRGVhdGhUZXN0
QXJncyo+KGNoaWxkX2FyZyk7CisgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8oY2xv
c2UoYXJncy0+Y2xvc2VfZmQpKTsKKworICAvLyBXZSBuZWVkIHRvIGV4ZWN1dGUgdGhlIHRlc3Qg
cHJvZ3JhbSBpbiB0aGUgc2FtZSBlbnZpcm9ubWVudCB3aGVyZQorICAvLyBpdCB3YXMgb3JpZ2lu
YWxseSBpbnZva2VkLiAgVGhlcmVmb3JlIHdlIGNoYW5nZSB0byB0aGUgb3JpZ2luYWwKKyAgLy8g
d29ya2luZyBkaXJlY3RvcnkgZmlyc3QuCisgIGNvbnN0IGNoYXIqIGNvbnN0IG9yaWdpbmFsX2Rp
ciA9CisgICAgICBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+b3JpZ2luYWxfd29ya2luZ19kaXIo
KTsKKyAgLy8gV2UgY2FuIHNhZmVseSBjYWxsIGNoZGlyKCkgYXMgaXQncyBhIGRpcmVjdCBzeXN0
ZW0gY2FsbC4KKyAgaWYgKGNoZGlyKG9yaWdpbmFsX2RpcikgIT0gMCkgeworICAgIERlYXRoVGVz
dEFib3J0KHN0ZDo6c3RyaW5nKCJjaGRpcihcIiIpICsgb3JpZ2luYWxfZGlyICsgIlwiKSBmYWls
ZWQ6ICIgKworICAgICAgICAgICAgICAgICAgIEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCkpOwor
ICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisgIH0KKworICAvLyBXZSBjYW4gc2FmZWx5IGNhbGwg
ZXhlY3ZlKCkgYXMgaXQncyBhIGRpcmVjdCBzeXN0ZW0gY2FsbC4gIFdlCisgIC8vIGNhbm5vdCB1
c2UgZXhlY3ZwKCkgYXMgaXQncyBhIGxpYmMgZnVuY3Rpb24gYW5kIHRodXMgcG90ZW50aWFsbHkK
KyAgLy8gdW5zYWZlLiAgU2luY2UgZXhlY3ZlKCkgZG9lc24ndCBzZWFyY2ggdGhlIFBBVEgsIHRo
ZSB1c2VyIG11c3QKKyAgLy8gaW52b2tlIHRoZSB0ZXN0IHByb2dyYW0gdmlhIGEgdmFsaWQgcGF0
aCB0aGF0IGNvbnRhaW5zIGF0IGxlYXN0CisgIC8vIG9uZSBwYXRoIHNlcGFyYXRvci4KKyAgZXhl
Y3ZlKGFyZ3MtPmFyZ3ZbMF0sIGFyZ3MtPmFyZ3YsIEdldEVudmlyb24oKSk7CisgIERlYXRoVGVz
dEFib3J0KHN0ZDo6c3RyaW5nKCJleGVjdmUoIikgKyBhcmdzLT5hcmd2WzBdICsgIiwgLi4uKSBp
biAiICsKKyAgICAgICAgICAgICAgICAgb3JpZ2luYWxfZGlyICsgIiBmYWlsZWQ6ICIgKworICAg
ICAgICAgICAgICAgICBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbigpKTsKKyAgcmV0dXJuIEVYSVRf
RkFJTFVSRTsKK30KKyMgIGVuZGlmICAvLyAhR1RFU1RfT1NfUU5YCisKKy8vIFR3byB1dGlsaXR5
IHJvdXRpbmVzIHRoYXQgdG9nZXRoZXIgZGV0ZXJtaW5lIHRoZSBkaXJlY3Rpb24gdGhlIHN0YWNr
CisvLyBncm93cy4KKy8vIFRoaXMgY291bGQgYmUgYWNjb21wbGlzaGVkIG1vcmUgZWxlZ2FudGx5
IGJ5IGEgc2luZ2xlIHJlY3Vyc2l2ZQorLy8gZnVuY3Rpb24sIGJ1dCB3ZSB3YW50IHRvIGd1YXJk
IGFnYWluc3QgdGhlIHVubGlrZWx5IHBvc3NpYmlsaXR5IG9mCisvLyBhIHNtYXJ0IGNvbXBpbGVy
IG9wdGltaXppbmcgdGhlIHJlY3Vyc2lvbiBhd2F5LgorLy8KKy8vIEdURVNUX05PX0lOTElORV8g
aXMgcmVxdWlyZWQgdG8gcHJldmVudCBHQ0MgNC42IGZyb20gaW5saW5pbmcKKy8vIFN0YWNrTG93
ZXJUaGFuQWRkcmVzcyBpbnRvIFN0YWNrR3Jvd3NEb3duLCB3aGljaCB0aGVuIGRvZXNuJ3QgZ2l2
ZQorLy8gY29ycmVjdCBhbnN3ZXIuCit2b2lkIFN0YWNrTG93ZXJUaGFuQWRkcmVzcyhjb25zdCB2
b2lkKiBwdHIsIGJvb2wqIHJlc3VsdCkgR1RFU1RfTk9fSU5MSU5FXzsKK3ZvaWQgU3RhY2tMb3dl
clRoYW5BZGRyZXNzKGNvbnN0IHZvaWQqIHB0ciwgYm9vbCogcmVzdWx0KSB7CisgIGludCBkdW1t
eTsKKyAgKnJlc3VsdCA9ICgmZHVtbXkgPCBwdHIpOworfQorCisvLyBNYWtlIHN1cmUgQWRkcmVz
c1Nhbml0aXplciBkb2VzIG5vdCB0YW1wZXIgd2l0aCB0aGUgc3RhY2sgaGVyZS4KK0dURVNUX0FU
VFJJQlVURV9OT19TQU5JVElaRV9BRERSRVNTXworYm9vbCBTdGFja0dyb3dzRG93bigpIHsKKyAg
aW50IGR1bW15OworICBib29sIHJlc3VsdDsKKyAgU3RhY2tMb3dlclRoYW5BZGRyZXNzKCZkdW1t
eSwgJnJlc3VsdCk7CisgIHJldHVybiByZXN1bHQ7Cit9CisKKy8vIFNwYXducyBhIGNoaWxkIHBy
b2Nlc3Mgd2l0aCB0aGUgc2FtZSBleGVjdXRhYmxlIGFzIHRoZSBjdXJyZW50IHByb2Nlc3MgaW4K
Ky8vIGEgdGhyZWFkLXNhZmUgbWFubmVyIGFuZCBpbnN0cnVjdHMgaXQgdG8gcnVuIHRoZSBkZWF0
aCB0ZXN0LiAgVGhlCisvLyBpbXBsZW1lbnRhdGlvbiB1c2VzIGZvcmsoMikgKyBleGVjLiAgT24g
c3lzdGVtcyB3aGVyZSBjbG9uZSgyKSBpcworLy8gYXZhaWxhYmxlLCBpdCBpcyB1c2VkIGluc3Rl
YWQsIGJlaW5nIHNsaWdodGx5IG1vcmUgdGhyZWFkLXNhZmUuICBPbiBRTlgsCisvLyBmb3JrIHN1
cHBvcnRzIG9ubHkgc2luZ2xlLXRocmVhZGVkIGVudmlyb25tZW50cywgc28gdGhpcyBmdW5jdGlv
biB1c2VzCisvLyBzcGF3bigyKSB0aGVyZSBpbnN0ZWFkLiAgVGhlIGZ1bmN0aW9uIGRpZXMgd2l0
aCBhbiBlcnJvciBtZXNzYWdlIGlmCisvLyBhbnl0aGluZyBnb2VzIHdyb25nLgorc3RhdGljIHBp
ZF90IEV4ZWNEZWF0aFRlc3RTcGF3bkNoaWxkKGNoYXIqIGNvbnN0KiBhcmd2LCBpbnQgY2xvc2Vf
ZmQpIHsKKyAgRXhlY0RlYXRoVGVzdEFyZ3MgYXJncyA9IHsgYXJndiwgY2xvc2VfZmQgfTsKKyAg
cGlkX3QgY2hpbGRfcGlkID0gLTE7CisKKyMgIGlmIEdURVNUX09TX1FOWAorICAvLyBPYnRhaW5z
IHRoZSBjdXJyZW50IGRpcmVjdG9yeSBhbmQgc2V0cyBpdCB0byBiZSBjbG9zZWQgaW4gdGhlIGNo
aWxkCisgIC8vIHByb2Nlc3MuCisgIGNvbnN0IGludCBjd2RfZmQgPSBvcGVuKCIuIiwgT19SRE9O
TFkpOworICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyhjd2RfZmQgIT0gLTEpOworICBHVEVTVF9E
RUFUSF9URVNUX0NIRUNLX1NZU0NBTExfKGZjbnRsKGN3ZF9mZCwgRl9TRVRGRCwgRkRfQ0xPRVhF
QykpOworICAvLyBXZSBuZWVkIHRvIGV4ZWN1dGUgdGhlIHRlc3QgcHJvZ3JhbSBpbiB0aGUgc2Ft
ZSBlbnZpcm9ubWVudCB3aGVyZQorICAvLyBpdCB3YXMgb3JpZ2luYWxseSBpbnZva2VkLiAgVGhl
cmVmb3JlIHdlIGNoYW5nZSB0byB0aGUgb3JpZ2luYWwKKyAgLy8gd29ya2luZyBkaXJlY3Rvcnkg
Zmlyc3QuCisgIGNvbnN0IGNoYXIqIGNvbnN0IG9yaWdpbmFsX2RpciA9CisgICAgICBVbml0VGVz
dDo6R2V0SW5zdGFuY2UoKS0+b3JpZ2luYWxfd29ya2luZ19kaXIoKTsKKyAgLy8gV2UgY2FuIHNh
ZmVseSBjYWxsIGNoZGlyKCkgYXMgaXQncyBhIGRpcmVjdCBzeXN0ZW0gY2FsbC4KKyAgaWYgKGNo
ZGlyKG9yaWdpbmFsX2RpcikgIT0gMCkgeworICAgIERlYXRoVGVzdEFib3J0KHN0ZDo6c3RyaW5n
KCJjaGRpcihcIiIpICsgb3JpZ2luYWxfZGlyICsgIlwiKSBmYWlsZWQ6ICIgKworICAgICAgICAg
ICAgICAgICAgIEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCkpOworICAgIHJldHVybiBFWElUX0ZB
SUxVUkU7CisgIH0KKworICBpbnQgZmRfZmxhZ3M7CisgIC8vIFNldCBjbG9zZV9mZCB0byBiZSBj
bG9zZWQgYWZ0ZXIgc3Bhd24uCisgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8oZmRf
ZmxhZ3MgPSBmY250bChjbG9zZV9mZCwgRl9HRVRGRCkpOworICBHVEVTVF9ERUFUSF9URVNUX0NI
RUNLX1NZU0NBTExfKGZjbnRsKGNsb3NlX2ZkLCBGX1NFVEZELAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZkX2ZsYWdzIHwgRkRfQ0xPRVhFQykpOworICBzdHJ1Y3Qg
aW5oZXJpdGFuY2UgaW5oZXJpdCA9IHswfTsKKyAgLy8gc3Bhd24gaXMgYSBzeXN0ZW0gY2FsbC4K
KyAgY2hpbGRfcGlkID0gc3Bhd24oYXJncy5hcmd2WzBdLCAwLCBOVUxMLCAmaW5oZXJpdCwgYXJn
cy5hcmd2LCBHZXRFbnZpcm9uKCkpOworICAvLyBSZXN0b3JlcyB0aGUgY3VycmVudCB3b3JraW5n
IGRpcmVjdG9yeS4KKyAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oZmNoZGlyKGN3ZF9mZCkgIT0g
LTEpOworICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLX1NZU0NBTExfKGNsb3NlKGN3ZF9mZCkpOwor
CisjICBlbHNlICAgLy8gR1RFU1RfT1NfUU5YCisjICAgaWYgR1RFU1RfT1NfTElOVVgKKyAgLy8g
V2hlbiBhIFNJR1BST0Ygc2lnbmFsIGlzIHJlY2VpdmVkIHdoaWxlIGZvcmsoKSBvciBjbG9uZSgp
IGFyZSBleGVjdXRpbmcsCisgIC8vIHRoZSBwcm9jZXNzIG1heSBoYW5nLiBUbyBhdm9pZCB0aGlz
LCB3ZSBpZ25vcmUgU0lHUFJPRiBoZXJlIGFuZCByZS1lbmFibGUKKyAgLy8gaXQgYWZ0ZXIgdGhl
IGNhbGwgdG8gZm9yaygpL2Nsb25lKCkgaXMgY29tcGxldGUuCisgIHN0cnVjdCBzaWdhY3Rpb24g
c2F2ZWRfc2lncHJvZl9hY3Rpb247CisgIHN0cnVjdCBzaWdhY3Rpb24gaWdub3JlX3NpZ3Byb2Zf
YWN0aW9uOworICBtZW1zZXQoJmlnbm9yZV9zaWdwcm9mX2FjdGlvbiwgMCwgc2l6ZW9mKGlnbm9y
ZV9zaWdwcm9mX2FjdGlvbikpOworICBzaWdlbXB0eXNldCgmaWdub3JlX3NpZ3Byb2ZfYWN0aW9u
LnNhX21hc2spOworICBpZ25vcmVfc2lncHJvZl9hY3Rpb24uc2FfaGFuZGxlciA9IFNJR19JR047
CisgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8oc2lnYWN0aW9uKAorICAgICAgU0lH
UFJPRiwgJmlnbm9yZV9zaWdwcm9mX2FjdGlvbiwgJnNhdmVkX3NpZ3Byb2ZfYWN0aW9uKSk7Cisj
ICAgZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYCisKKyMgICBpZiBHVEVTVF9IQVNfQ0xPTkUKKyAg
Y29uc3QgYm9vbCB1c2VfZm9yayA9IEdURVNUX0ZMQUcoZGVhdGhfdGVzdF91c2VfZm9yayk7CisK
KyAgaWYgKCF1c2VfZm9yaykgeworICAgIHN0YXRpYyBjb25zdCBib29sIHN0YWNrX2dyb3dzX2Rv
d24gPSBTdGFja0dyb3dzRG93bigpOworICAgIGNvbnN0IHNpemVfdCBzdGFja19zaXplID0gZ2V0
cGFnZXNpemUoKTsKKyAgICAvLyBNTUFQX0FOT05ZTU9VUyBpcyBub3QgZGVmaW5lZCBvbiBNYWMs
IHNvIHdlIHVzZSBNQVBfQU5PTiBpbnN0ZWFkLgorICAgIHZvaWQqIGNvbnN0IHN0YWNrID0gbW1h
cChOVUxMLCBzdGFja19zaXplLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBNQVBfQU5PTiB8IE1BUF9QUklWQVRFLCAtMSwgMCk7CisgICAgR1RF
U1RfREVBVEhfVEVTVF9DSEVDS18oc3RhY2sgIT0gTUFQX0ZBSUxFRCk7CisKKyAgICAvLyBNYXhp
bXVtIHN0YWNrIGFsaWdubWVudCBpbiBieXRlczogIEZvciBhIGRvd253YXJkLWdyb3dpbmcgc3Rh
Y2ssIHRoaXMKKyAgICAvLyBhbW91bnQgaXMgc3VidHJhY3RlZCBmcm9tIHNpemUgb2YgdGhlIHN0
YWNrIHNwYWNlIHRvIGdldCBhbiBhZGRyZXNzCisgICAgLy8gdGhhdCBpcyB3aXRoaW4gdGhlIHN0
YWNrIHNwYWNlIGFuZCBpcyBhbGlnbmVkIG9uIGFsbCBzeXN0ZW1zIHdlIGNhcmUKKyAgICAvLyBh
Ym91dC4gIEFzIGZhciBhcyBJIGtub3cgdGhlcmUgaXMgbm8gQUJJIHdpdGggc3RhY2sgYWxpZ25t
ZW50IGdyZWF0ZXIKKyAgICAvLyB0aGFuIDY0LiAgV2UgYXNzdW1lIHN0YWNrIGFuZCBzdGFja19z
aXplIGFscmVhZHkgaGF2ZSBhbGlnbm1lbnQgb2YKKyAgICAvLyBrTWF4U3RhY2tBbGlnbm1lbnQu
CisgICAgY29uc3Qgc2l6ZV90IGtNYXhTdGFja0FsaWdubWVudCA9IDY0OworICAgIHZvaWQqIGNv
bnN0IHN0YWNrX3RvcCA9CisgICAgICAgIHN0YXRpY19jYXN0PGNoYXIqPihzdGFjaykgKworICAg
ICAgICAgICAgKHN0YWNrX2dyb3dzX2Rvd24gPyBzdGFja19zaXplIC0ga01heFN0YWNrQWxpZ25t
ZW50IDogMCk7CisgICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oc3RhY2tfc2l6ZSA+IGtNYXhT
dGFja0FsaWdubWVudCAmJgorICAgICAgICByZWludGVycHJldF9jYXN0PGludHB0cl90PihzdGFj
a190b3ApICUga01heFN0YWNrQWxpZ25tZW50ID09IDApOworCisgICAgY2hpbGRfcGlkID0gY2xv
bmUoJkV4ZWNEZWF0aFRlc3RDaGlsZE1haW4sIHN0YWNrX3RvcCwgU0lHQ0hMRCwgJmFyZ3MpOwor
CisgICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18obXVubWFwKHN0YWNrLCBzdGFja19zaXplKSAh
PSAtMSk7CisgIH0KKyMgICBlbHNlCisgIGNvbnN0IGJvb2wgdXNlX2ZvcmsgPSB0cnVlOworIyAg
IGVuZGlmICAvLyBHVEVTVF9IQVNfQ0xPTkUKKworICBpZiAodXNlX2ZvcmsgJiYgKGNoaWxkX3Bp
ZCA9IGZvcmsoKSkgPT0gMCkgeworICAgICAgRXhlY0RlYXRoVGVzdENoaWxkTWFpbigmYXJncyk7
CisgICAgICBfZXhpdCgwKTsKKyAgfQorIyAgZW5kaWYgIC8vIEdURVNUX09TX1FOWAorIyAgaWYg
R1RFU1RfT1NfTElOVVgKKyAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS19TWVNDQUxMXygKKyAgICAg
IHNpZ2FjdGlvbihTSUdQUk9GLCAmc2F2ZWRfc2lncHJvZl9hY3Rpb24sIE5VTEwpKTsKKyMgIGVu
ZGlmICAvLyBHVEVTVF9PU19MSU5VWAorCisgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKGNoaWxk
X3BpZCAhPSAtMSk7CisgIHJldHVybiBjaGlsZF9waWQ7Cit9CisKKy8vIFRoZSBBc3N1bWVSb2xl
IHByb2Nlc3MgZm9yIGEgZm9yay1hbmQtZXhlYyBkZWF0aCB0ZXN0LiAgSXQgcmUtZXhlY3V0ZXMg
dGhlCisvLyBtYWluIHByb2dyYW0gZnJvbSB0aGUgYmVnaW5uaW5nLCBzZXR0aW5nIHRoZSAtLWd0
ZXN0X2ZpbHRlcgorLy8gYW5kIC0tZ3Rlc3RfaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QgZmxhZ3Mg
dG8gY2F1c2Ugb25seSB0aGUgY3VycmVudAorLy8gZGVhdGggdGVzdCB0byBiZSByZS1ydW4uCitE
ZWF0aFRlc3Q6OlRlc3RSb2xlIEV4ZWNEZWF0aFRlc3Q6OkFzc3VtZVJvbGUoKSB7CisgIGNvbnN0
IFVuaXRUZXN0SW1wbCogY29uc3QgaW1wbCA9IEdldFVuaXRUZXN0SW1wbCgpOworICBjb25zdCBJ
bnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcqIGNvbnN0IGZsYWcgPQorICAgICAgaW1wbC0+aW50ZXJu
YWxfcnVuX2RlYXRoX3Rlc3RfZmxhZygpOworICBjb25zdCBUZXN0SW5mbyogY29uc3QgaW5mbyA9
IGltcGwtPmN1cnJlbnRfdGVzdF9pbmZvKCk7CisgIGNvbnN0IGludCBkZWF0aF90ZXN0X2luZGV4
ID0gaW5mby0+cmVzdWx0KCktPmRlYXRoX3Rlc3RfY291bnQoKTsKKworICBpZiAoZmxhZyAhPSBO
VUxMKSB7CisgICAgc2V0X3dyaXRlX2ZkKGZsYWctPndyaXRlX2ZkKCkpOworICAgIHJldHVybiBF
WEVDVVRFX1RFU1Q7CisgIH0KKworICBpbnQgcGlwZV9mZFsyXTsKKyAgR1RFU1RfREVBVEhfVEVT
VF9DSEVDS18ocGlwZShwaXBlX2ZkKSAhPSAtMSk7CisgIC8vIENsZWFyIHRoZSBjbG9zZS1vbi1l
eGVjIGZsYWcgb24gdGhlIHdyaXRlIGVuZCBvZiB0aGUgcGlwZSwgbGVzdAorICAvLyBpdCBiZSBj
bG9zZWQgd2hlbiB0aGUgY2hpbGQgcHJvY2VzcyBkb2VzIGFuIGV4ZWM6CisgIEdURVNUX0RFQVRI
X1RFU1RfQ0hFQ0tfKGZjbnRsKHBpcGVfZmRbMV0sIEZfU0VURkQsIDApICE9IC0xKTsKKworICBj
b25zdCBzdGQ6OnN0cmluZyBmaWx0ZXJfZmxhZyA9CisgICAgICBzdGQ6OnN0cmluZygiLS0iKSAr
IEdURVNUX0ZMQUdfUFJFRklYXyArIGtGaWx0ZXJGbGFnICsgIj0iCisgICAgICArIGluZm8tPnRl
c3RfY2FzZV9uYW1lKCkgKyAiLiIgKyBpbmZvLT5uYW1lKCk7CisgIGNvbnN0IHN0ZDo6c3RyaW5n
IGludGVybmFsX2ZsYWcgPQorICAgICAgc3RkOjpzdHJpbmcoIi0tIikgKyBHVEVTVF9GTEFHX1BS
RUZJWF8gKyBrSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnICsgIj0iCisgICAgICArIGZpbGVfICsg
InwiICsgU3RyZWFtYWJsZVRvU3RyaW5nKGxpbmVfKSArICJ8IgorICAgICAgKyBTdHJlYW1hYmxl
VG9TdHJpbmcoZGVhdGhfdGVzdF9pbmRleCkgKyAifCIKKyAgICAgICsgU3RyZWFtYWJsZVRvU3Ry
aW5nKHBpcGVfZmRbMV0pOworICBBcmd1bWVudHMgYXJnczsKKyAgYXJncy5BZGRBcmd1bWVudHMo
R2V0QXJndnNGb3JEZWF0aFRlc3RDaGlsZFByb2Nlc3MoKSk7CisgIGFyZ3MuQWRkQXJndW1lbnQo
ZmlsdGVyX2ZsYWcuY19zdHIoKSk7CisgIGFyZ3MuQWRkQXJndW1lbnQoaW50ZXJuYWxfZmxhZy5j
X3N0cigpKTsKKworICBEZWF0aFRlc3Q6OnNldF9sYXN0X2RlYXRoX3Rlc3RfbWVzc2FnZSgiIik7
CisKKyAgQ2FwdHVyZVN0ZGVycigpOworICAvLyBTZWUgdGhlIGNvbW1lbnQgaW4gTm9FeGVjRGVh
dGhUZXN0OjpBc3N1bWVSb2xlIGZvciB3aHkgdGhlIG5leHQgbGluZQorICAvLyBpcyBuZWNlc3Nh
cnkuCisgIEZsdXNoSW5mb0xvZygpOworCisgIGNvbnN0IHBpZF90IGNoaWxkX3BpZCA9IEV4ZWNE
ZWF0aFRlc3RTcGF3bkNoaWxkKGFyZ3MuQXJndigpLCBwaXBlX2ZkWzBdKTsKKyAgR1RFU1RfREVB
VEhfVEVTVF9DSEVDS19TWVNDQUxMXyhjbG9zZShwaXBlX2ZkWzFdKSk7CisgIHNldF9jaGlsZF9w
aWQoY2hpbGRfcGlkKTsKKyAgc2V0X3JlYWRfZmQocGlwZV9mZFswXSk7CisgIHNldF9zcGF3bmVk
KHRydWUpOworICByZXR1cm4gT1ZFUlNFRV9URVNUOworfQorCisjIGVuZGlmICAvLyAhR1RFU1Rf
T1NfV0lORE9XUworCisvLyBDcmVhdGVzIGEgY29uY3JldGUgRGVhdGhUZXN0LWRlcml2ZWQgY2xh
c3MgdGhhdCBkZXBlbmRzIG9uIHRoZQorLy8gLS1ndGVzdF9kZWF0aF90ZXN0X3N0eWxlIGZsYWcs
IGFuZCBzZXRzIHRoZSBwb2ludGVyIHBvaW50ZWQgdG8KKy8vIGJ5IHRoZSAidGVzdCIgYXJndW1l
bnQgdG8gaXRzIGFkZHJlc3MuICBJZiB0aGUgdGVzdCBzaG91bGQgYmUKKy8vIHNraXBwZWQsIHNl
dHMgdGhhdCBwb2ludGVyIHRvIE5VTEwuICBSZXR1cm5zIHRydWUsIHVubGVzcyB0aGUKKy8vIGZs
YWcgaXMgc2V0IHRvIGFuIGludmFsaWQgdmFsdWUuCitib29sIERlZmF1bHREZWF0aFRlc3RGYWN0
b3J5OjpDcmVhdGUoY29uc3QgY2hhciogc3RhdGVtZW50LCBjb25zdCBSRSogcmVnZXgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZmlsZSwgaW50IGxp
bmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVhdGhUZXN0KiogdGVz
dCkgeworICBVbml0VGVzdEltcGwqIGNvbnN0IGltcGwgPSBHZXRVbml0VGVzdEltcGwoKTsKKyAg
Y29uc3QgSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnKiBjb25zdCBmbGFnID0KKyAgICAgIGltcGwt
PmludGVybmFsX3J1bl9kZWF0aF90ZXN0X2ZsYWcoKTsKKyAgY29uc3QgaW50IGRlYXRoX3Rlc3Rf
aW5kZXggPSBpbXBsLT5jdXJyZW50X3Rlc3RfaW5mbygpCisgICAgICAtPmluY3JlbWVudF9kZWF0
aF90ZXN0X2NvdW50KCk7CisKKyAgaWYgKGZsYWcgIT0gTlVMTCkgeworICAgIGlmIChkZWF0aF90
ZXN0X2luZGV4ID4gZmxhZy0+aW5kZXgoKSkgeworICAgICAgRGVhdGhUZXN0OjpzZXRfbGFzdF9k
ZWF0aF90ZXN0X21lc3NhZ2UoCisgICAgICAgICAgIkRlYXRoIHRlc3QgY291bnQgKCIgKyBTdHJl
YW1hYmxlVG9TdHJpbmcoZGVhdGhfdGVzdF9pbmRleCkKKyAgICAgICAgICArICIpIHNvbWVob3cg
ZXhjZWVkZWQgZXhwZWN0ZWQgbWF4aW11bSAoIgorICAgICAgICAgICsgU3RyZWFtYWJsZVRvU3Ry
aW5nKGZsYWctPmluZGV4KCkpICsgIikiKTsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICBpZiAoIShmbGFnLT5maWxlKCkgPT0gZmlsZSAmJiBmbGFnLT5saW5lKCkgPT0gbGluZSAm
JgorICAgICAgICAgIGZsYWctPmluZGV4KCkgPT0gZGVhdGhfdGVzdF9pbmRleCkpIHsKKyAgICAg
ICp0ZXN0ID0gTlVMTDsKKyAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgfQorCisjIGlmIEdU
RVNUX09TX1dJTkRPV1MKKworICBpZiAoR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9PSAi
dGhyZWFkc2FmZSIgfHwKKyAgICAgIEdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPT0gImZh
c3QiKSB7CisgICAgKnRlc3QgPSBuZXcgV2luZG93c0RlYXRoVGVzdChzdGF0ZW1lbnQsIHJlZ2V4
LCBmaWxlLCBsaW5lKTsKKyAgfQorCisjIGVsc2UKKworICBpZiAoR1RFU1RfRkxBRyhkZWF0aF90
ZXN0X3N0eWxlKSA9PSAidGhyZWFkc2FmZSIpIHsKKyAgICAqdGVzdCA9IG5ldyBFeGVjRGVhdGhU
ZXN0KHN0YXRlbWVudCwgcmVnZXgsIGZpbGUsIGxpbmUpOworICB9IGVsc2UgaWYgKEdURVNUX0ZM
QUcoZGVhdGhfdGVzdF9zdHlsZSkgPT0gImZhc3QiKSB7CisgICAgKnRlc3QgPSBuZXcgTm9FeGVj
RGVhdGhUZXN0KHN0YXRlbWVudCwgcmVnZXgpOworICB9CisKKyMgZW5kaWYgIC8vIEdURVNUX09T
X1dJTkRPV1MKKworICBlbHNlIHsgIC8vIE5PTElOVCAtIHRoaXMgaXMgbW9yZSByZWFkYWJsZSB0
aGFuIHVuYmFsYW5jZWQgYnJhY2tldHMgaW5zaWRlICNpZi4KKyAgICBEZWF0aFRlc3Q6OnNldF9s
YXN0X2RlYXRoX3Rlc3RfbWVzc2FnZSgKKyAgICAgICAgIlVua25vd24gZGVhdGggdGVzdCBzdHls
ZSBcIiIgKyBHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpCisgICAgICAgICsgIlwiIGVuY291
bnRlcmVkIik7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgcmV0dXJuIHRydWU7Cit9CisK
KyMgaWYgR1RFU1RfT1NfV0lORE9XUworLy8gUmVjcmVhdGVzIHRoZSBwaXBlIGFuZCBldmVudCBo
YW5kbGVzIGZyb20gdGhlIHByb3ZpZGVkIHBhcmFtZXRlcnMsCisvLyBzaWduYWxzIHRoZSBldmVu
dCwgYW5kIHJldHVybnMgYSBmaWxlIGRlc2NyaXB0b3Igd3JhcHBlZCBhcm91bmQgdGhlIHBpcGUK
Ky8vIGhhbmRsZS4gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaW4gdGhlIGNoaWxkIHByb2Nlc3Mg
b25seS4KK2ludCBHZXRTdGF0dXNGaWxlRGVzY3JpcHRvcih1bnNpZ25lZCBpbnQgcGFyZW50X3By
b2Nlc3NfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHdyaXRlX2hhbmRs
ZV9hc19zaXplX3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGV2ZW50X2hh
bmRsZV9hc19zaXplX3QpIHsKKyAgQXV0b0hhbmRsZSBwYXJlbnRfcHJvY2Vzc19oYW5kbGUoOjpP
cGVuUHJvY2VzcyhQUk9DRVNTX0RVUF9IQU5ETEUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwgIC8vIE5vbi1pbmhlcml0YWJsZS4KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudF9w
cm9jZXNzX2lkKSk7CisgIGlmIChwYXJlbnRfcHJvY2Vzc19oYW5kbGUuR2V0KCkgPT0gSU5WQUxJ
RF9IQU5ETEVfVkFMVUUpIHsKKyAgICBEZWF0aFRlc3RBYm9ydCgiVW5hYmxlIHRvIG9wZW4gcGFy
ZW50IHByb2Nlc3MgIiArCisgICAgICAgICAgICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHBh
cmVudF9wcm9jZXNzX2lkKSk7CisgIH0KKworICAvLyBUT0RPKHZsYWRsQGdvb2dsZS5jb20pOiBS
ZXBsYWNlIHRoZSBmb2xsb3dpbmcgY2hlY2sgd2l0aCBhCisgIC8vIGNvbXBpbGUtdGltZSBhc3Nl
cnRpb24gd2hlbiBhdmFpbGFibGUuCisgIEdURVNUX0NIRUNLXyhzaXplb2YoSEFORExFKSA8PSBz
aXplb2Yoc2l6ZV90KSk7CisKKyAgY29uc3QgSEFORExFIHdyaXRlX2hhbmRsZSA9CisgICAgICBy
ZWludGVycHJldF9jYXN0PEhBTkRMRT4od3JpdGVfaGFuZGxlX2FzX3NpemVfdCk7CisgIEhBTkRM
RSBkdXBfd3JpdGVfaGFuZGxlOworCisgIC8vIFRoZSBuZXdseSBpbml0aWFsaXplZCBoYW5kbGUg
aXMgYWNjZXNzaWJsZSBvbmx5IGluIGluIHRoZSBwYXJlbnQKKyAgLy8gcHJvY2Vzcy4gVG8gb2J0
YWluIG9uZSBhY2Nlc3NpYmxlIHdpdGhpbiB0aGUgY2hpbGQsIHdlIG5lZWQgdG8gdXNlCisgIC8v
IER1cGxpY2F0ZUhhbmRsZS4KKyAgaWYgKCE6OkR1cGxpY2F0ZUhhbmRsZShwYXJlbnRfcHJvY2Vz
c19oYW5kbGUuR2V0KCksIHdyaXRlX2hhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICA6
OkdldEN1cnJlbnRQcm9jZXNzKCksICZkdXBfd3JpdGVfaGFuZGxlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIDB4MCwgICAgLy8gUmVxdWVzdGVkIHByaXZpbGVnZXMgaWdub3JlZCBzaW5jZQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRFVQTElDQVRFX1NBTUVfQUNDRVNT
IGlzIHVzZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsICAvLyBSZXF1ZXN0IG5v
bi1pbmhlcml0YWJsZSBoYW5kbGVyLgorICAgICAgICAgICAgICAgICAgICAgICAgIERVUExJQ0FU
RV9TQU1FX0FDQ0VTUykpIHsKKyAgICBEZWF0aFRlc3RBYm9ydCgiVW5hYmxlIHRvIGR1cGxpY2F0
ZSB0aGUgcGlwZSBoYW5kbGUgIiArCisgICAgICAgICAgICAgICAgICAgU3RyZWFtYWJsZVRvU3Ry
aW5nKHdyaXRlX2hhbmRsZV9hc19zaXplX3QpICsKKyAgICAgICAgICAgICAgICAgICAiIGZyb20g
dGhlIHBhcmVudCBwcm9jZXNzICIgKworICAgICAgICAgICAgICAgICAgIFN0cmVhbWFibGVUb1N0
cmluZyhwYXJlbnRfcHJvY2Vzc19pZCkpOworICB9CisKKyAgY29uc3QgSEFORExFIGV2ZW50X2hh
bmRsZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SEFORExFPihldmVudF9oYW5kbGVfYXNfc2l6ZV90KTsK
KyAgSEFORExFIGR1cF9ldmVudF9oYW5kbGU7CisKKyAgaWYgKCE6OkR1cGxpY2F0ZUhhbmRsZShw
YXJlbnRfcHJvY2Vzc19oYW5kbGUuR2V0KCksIGV2ZW50X2hhbmRsZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICA6OkdldEN1cnJlbnRQcm9jZXNzKCksICZkdXBfZXZlbnRfaGFuZGxlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGQUxT
RSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEVVBMSUNBVEVfU0FNRV9BQ0NFU1MpKSB7Cisg
ICAgRGVhdGhUZXN0QWJvcnQoIlVuYWJsZSB0byBkdXBsaWNhdGUgdGhlIGV2ZW50IGhhbmRsZSAi
ICsKKyAgICAgICAgICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcoZXZlbnRfaGFuZGxlX2Fz
X3NpemVfdCkgKworICAgICAgICAgICAgICAgICAgICIgZnJvbSB0aGUgcGFyZW50IHByb2Nlc3Mg
IiArCisgICAgICAgICAgICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHBhcmVudF9wcm9jZXNz
X2lkKSk7CisgIH0KKworICBjb25zdCBpbnQgd3JpdGVfZmQgPQorICAgICAgOjpfb3Blbl9vc2Zo
YW5kbGUocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oZHVwX3dyaXRlX2hhbmRsZSksIE9fQVBQ
RU5EKTsKKyAgaWYgKHdyaXRlX2ZkID09IC0xKSB7CisgICAgRGVhdGhUZXN0QWJvcnQoIlVuYWJs
ZSB0byBjb252ZXJ0IHBpcGUgaGFuZGxlICIgKworICAgICAgICAgICAgICAgICAgIFN0cmVhbWFi
bGVUb1N0cmluZyh3cml0ZV9oYW5kbGVfYXNfc2l6ZV90KSArCisgICAgICAgICAgICAgICAgICAg
IiB0byBhIGZpbGUgZGVzY3JpcHRvciIpOworICB9CisKKyAgLy8gU2lnbmFscyB0aGUgcGFyZW50
IHRoYXQgdGhlIHdyaXRlIGVuZCBvZiB0aGUgcGlwZSBoYXMgYmVlbiBhY3F1aXJlZAorICAvLyBz
byB0aGUgcGFyZW50IGNhbiByZWxlYXNlIGl0cyBvd24gd3JpdGUgZW5kLgorICA6OlNldEV2ZW50
KGR1cF9ldmVudF9oYW5kbGUpOworCisgIHJldHVybiB3cml0ZV9mZDsKK30KKyMgZW5kaWYgIC8v
IEdURVNUX09TX1dJTkRPV1MKKworLy8gUmV0dXJucyBhIG5ld2x5IGNyZWF0ZWQgSW50ZXJuYWxS
dW5EZWF0aFRlc3RGbGFnIG9iamVjdCB3aXRoIGZpZWxkcworLy8gaW5pdGlhbGl6ZWQgZnJvbSB0
aGUgR1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkgZmxhZyBpZgorLy8gdGhlIGZs
YWcgaXMgc3BlY2lmaWVkOyBvdGhlcndpc2UgcmV0dXJucyBOVUxMLgorSW50ZXJuYWxSdW5EZWF0
aFRlc3RGbGFnKiBQYXJzZUludGVybmFsUnVuRGVhdGhUZXN0RmxhZygpIHsKKyAgaWYgKEdURVNU
X0ZMQUcoaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QpID09ICIiKSByZXR1cm4gTlVMTDsKKworICAv
LyBHVEVTVF9IQVNfREVBVEhfVEVTVCBpbXBsaWVzIHRoYXQgd2UgaGF2ZSA6OnN0ZDo6c3RyaW5n
LCBzbyB3ZQorICAvLyBjYW4gdXNlIGl0IGhlcmUuCisgIGludCBsaW5lID0gLTE7CisgIGludCBp
bmRleCA9IC0xOworICA6OnN0ZDo6dmVjdG9yPCA6OnN0ZDo6c3RyaW5nPiBmaWVsZHM7CisgIFNw
bGl0U3RyaW5nKEdURVNUX0ZMQUcoaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QpLmNfc3RyKCksICd8
JywgJmZpZWxkcyk7CisgIGludCB3cml0ZV9mZCA9IC0xOworCisjIGlmIEdURVNUX09TX1dJTkRP
V1MKKworICB1bnNpZ25lZCBpbnQgcGFyZW50X3Byb2Nlc3NfaWQgPSAwOworICBzaXplX3Qgd3Jp
dGVfaGFuZGxlX2FzX3NpemVfdCA9IDA7CisgIHNpemVfdCBldmVudF9oYW5kbGVfYXNfc2l6ZV90
ID0gMDsKKworICBpZiAoZmllbGRzLnNpemUoKSAhPSA2CisgICAgICB8fCAhUGFyc2VOYXR1cmFs
TnVtYmVyKGZpZWxkc1sxXSwgJmxpbmUpCisgICAgICB8fCAhUGFyc2VOYXR1cmFsTnVtYmVyKGZp
ZWxkc1syXSwgJmluZGV4KQorICAgICAgfHwgIVBhcnNlTmF0dXJhbE51bWJlcihmaWVsZHNbM10s
ICZwYXJlbnRfcHJvY2Vzc19pZCkKKyAgICAgIHx8ICFQYXJzZU5hdHVyYWxOdW1iZXIoZmllbGRz
WzRdLCAmd3JpdGVfaGFuZGxlX2FzX3NpemVfdCkKKyAgICAgIHx8ICFQYXJzZU5hdHVyYWxOdW1i
ZXIoZmllbGRzWzVdLCAmZXZlbnRfaGFuZGxlX2FzX3NpemVfdCkpIHsKKyAgICBEZWF0aFRlc3RB
Ym9ydCgiQmFkIC0tZ3Rlc3RfaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QgZmxhZzogIiArCisgICAg
ICAgICAgICAgICAgICAgR1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkpOworICB9
CisgIHdyaXRlX2ZkID0gR2V0U3RhdHVzRmlsZURlc2NyaXB0b3IocGFyZW50X3Byb2Nlc3NfaWQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVfaGFuZGxlX2FzX3Np
emVfdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudF9oYW5kbGVf
YXNfc2l6ZV90KTsKKyMgZWxzZQorCisgIGlmIChmaWVsZHMuc2l6ZSgpICE9IDQKKyAgICAgIHx8
ICFQYXJzZU5hdHVyYWxOdW1iZXIoZmllbGRzWzFdLCAmbGluZSkKKyAgICAgIHx8ICFQYXJzZU5h
dHVyYWxOdW1iZXIoZmllbGRzWzJdLCAmaW5kZXgpCisgICAgICB8fCAhUGFyc2VOYXR1cmFsTnVt
YmVyKGZpZWxkc1szXSwgJndyaXRlX2ZkKSkgeworICAgIERlYXRoVGVzdEFib3J0KCJCYWQgLS1n
dGVzdF9pbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCBmbGFnOiAiCisgICAgICAgICsgR1RFU1RfRkxB
RyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkpOworICB9CisKKyMgZW5kaWYgIC8vIEdURVNUX09T
X1dJTkRPV1MKKworICByZXR1cm4gbmV3IEludGVybmFsUnVuRGVhdGhUZXN0RmxhZyhmaWVsZHNb
MF0sIGxpbmUsIGluZGV4LCB3cml0ZV9mZCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5h
bAorCisjZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUCisKK30gIC8vIG5hbWVzcGFjZSB0
ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zcmMvZ3Rlc3QtZmlsZXBhdGguY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xldGVzdC9zcmMvZ3Rlc3QtZmlsZXBhdGguY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDI5MmRjMTE5NTdl
YWEyMThiMzU4ZjFmNzYxY2E0YTVjYjJmYWVhNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0
ZXN0L3NyYy9ndGVzdC1maWxlcGF0aC5jYwpAQCAtMCwwICsxLDM4NyBAQAorLy8gQ29weXJpZ2h0
IDIwMDgsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24u
CisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEF1dGhvcnM6IGtlaXRoLnJh
eUBnbWFpbC5jb20gKEtlaXRoIFJheSkKKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LW1lc3NhZ2Uu
aCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1maWxlcGF0aC5oIgorI2luY2x1ZGUg
Imd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisj
aWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyMgaW5jbHVkZSA8d2luZG93cy5oPgorI2VsaWYg
R1RFU1RfT1NfV0lORE9XUworIyBpbmNsdWRlIDxkaXJlY3QuaD4KKyMgaW5jbHVkZSA8aW8uaD4K
KyNlbGlmIEdURVNUX09TX1NZTUJJQU4KKy8vIFN5bWJpYW4gT3BlbkMgaGFzIFBBVEhfTUFYIGlu
IHN5cy9zeXNsaW1pdHMuaAorIyBpbmNsdWRlIDxzeXMvc3lzbGltaXRzLmg+CisjZWxzZQorIyBp
bmNsdWRlIDxsaW1pdHMuaD4KKyMgaW5jbHVkZSA8Y2xpbWl0cz4gIC8vIFNvbWUgTGludXggZGlz
dHJpYnV0aW9ucyBkZWZpbmUgUEFUSF9NQVggaGVyZS4KKyNlbmRpZiAgLy8gR1RFU1RfT1NfV0lO
RE9XU19NT0JJTEUKKworI2lmIEdURVNUX09TX1dJTkRPV1MKKyMgZGVmaW5lIEdURVNUX1BBVEhf
TUFYXyBfTUFYX1BBVEgKKyNlbGlmIGRlZmluZWQoUEFUSF9NQVgpCisjIGRlZmluZSBHVEVTVF9Q
QVRIX01BWF8gUEFUSF9NQVgKKyNlbGlmIGRlZmluZWQoX1hPUEVOX1BBVEhfTUFYKQorIyBkZWZp
bmUgR1RFU1RfUEFUSF9NQVhfIF9YT1BFTl9QQVRIX01BWAorI2Vsc2UKKyMgZGVmaW5lIEdURVNU
X1BBVEhfTUFYXyBfUE9TSVhfUEFUSF9NQVgKKyNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwor
CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmgiCisKK25hbWVzcGFjZSB0
ZXN0aW5nIHsKK25hbWVzcGFjZSBpbnRlcm5hbCB7CisKKyNpZiBHVEVTVF9PU19XSU5ET1dTCisv
LyBPbiBXaW5kb3dzLCAnXFwnIGlzIHRoZSBzdGFuZGFyZCBwYXRoIHNlcGFyYXRvciwgYnV0IG1h
bnkgdG9vbHMgYW5kIHRoZQorLy8gV2luZG93cyBBUEkgYWxzbyBhY2NlcHQgJy8nIGFzIGFuIGFs
dGVybmF0ZSBwYXRoIHNlcGFyYXRvci4gVW5sZXNzIG90aGVyd2lzZQorLy8gbm90ZWQsIGEgZmls
ZSBwYXRoIGNhbiBjb250YWluIGVpdGhlciBraW5kIG9mIHBhdGggc2VwYXJhdG9ycywgb3IgYSBt
aXh0dXJlCisvLyBvZiB0aGVtLgorY29uc3QgY2hhciBrUGF0aFNlcGFyYXRvciA9ICdcXCc7Citj
b25zdCBjaGFyIGtBbHRlcm5hdGVQYXRoU2VwYXJhdG9yID0gJy8nOworY29uc3QgY2hhciBrQWx0
ZXJuYXRlUGF0aFNlcGFyYXRvclN0cmluZ1tdID0gIi8iOworIyBpZiBHVEVTVF9PU19XSU5ET1dT
X01PQklMRQorLy8gV2luZG93cyBDRSBkb2Vzbid0IGhhdmUgYSBjdXJyZW50IGRpcmVjdG9yeS4g
WW91IHNob3VsZCBub3QgdXNlCisvLyB0aGUgY3VycmVudCBkaXJlY3RvcnkgaW4gdGVzdHMgb24g
V2luZG93cyBDRSwgYnV0IHRoaXMgYXQgbGVhc3QKKy8vIHByb3ZpZGVzIGEgcmVhc29uYWJsZSBm
YWxsYmFjay4KK2NvbnN0IGNoYXIga0N1cnJlbnREaXJlY3RvcnlTdHJpbmdbXSA9ICJcXCI7Cisv
LyBXaW5kb3dzIENFIGRvZXNuJ3QgZGVmaW5lIElOVkFMSURfRklMRV9BVFRSSUJVVEVTCitjb25z
dCBEV09SRCBrSW52YWxpZEZpbGVBdHRyaWJ1dGVzID0gMHhmZmZmZmZmZjsKKyMgZWxzZQorY29u
c3QgY2hhciBrQ3VycmVudERpcmVjdG9yeVN0cmluZ1tdID0gIi5cXCI7CisjIGVuZGlmICAvLyBH
VEVTVF9PU19XSU5ET1dTX01PQklMRQorI2Vsc2UKK2NvbnN0IGNoYXIga1BhdGhTZXBhcmF0b3Ig
PSAnLyc7Citjb25zdCBjaGFyIGtDdXJyZW50RGlyZWN0b3J5U3RyaW5nW10gPSAiLi8iOworI2Vu
ZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisKKy8vIFJldHVybnMgd2hldGhlciB0aGUgZ2l2ZW4g
Y2hhcmFjdGVyIGlzIGEgdmFsaWQgcGF0aCBzZXBhcmF0b3IuCitzdGF0aWMgYm9vbCBJc1BhdGhT
ZXBhcmF0b3IoY2hhciBjKSB7CisjaWYgR1RFU1RfSEFTX0FMVF9QQVRIX1NFUF8KKyAgcmV0dXJu
IChjID09IGtQYXRoU2VwYXJhdG9yKSB8fCAoYyA9PSBrQWx0ZXJuYXRlUGF0aFNlcGFyYXRvcik7
CisjZWxzZQorICByZXR1cm4gYyA9PSBrUGF0aFNlcGFyYXRvcjsKKyNlbmRpZgorfQorCisvLyBS
ZXR1cm5zIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LCBvciAiIiBpZiB1bnN1Y2Nlc3Nm
dWwuCitGaWxlUGF0aCBGaWxlUGF0aDo6R2V0Q3VycmVudERpcigpIHsKKyNpZiBHVEVTVF9PU19X
SU5ET1dTX01PQklMRSB8fCBHVEVTVF9PU19XSU5ET1dTX1BIT05FIHx8IEdURVNUX09TX1dJTkRP
V1NfUlQKKyAgLy8gV2luZG93cyBDRSBkb2Vzbid0IGhhdmUgYSBjdXJyZW50IGRpcmVjdG9yeSwg
c28gd2UganVzdCByZXR1cm4KKyAgLy8gc29tZXRoaW5nIHJlYXNvbmFibGUuCisgIHJldHVybiBG
aWxlUGF0aChrQ3VycmVudERpcmVjdG9yeVN0cmluZyk7CisjZWxpZiBHVEVTVF9PU19XSU5ET1dT
CisgIGNoYXIgY3dkW0dURVNUX1BBVEhfTUFYXyArIDFdID0geyAnXDAnIH07CisgIHJldHVybiBG
aWxlUGF0aChfZ2V0Y3dkKGN3ZCwgc2l6ZW9mKGN3ZCkpID09IE5VTEwgPyAiIiA6IGN3ZCk7Cisj
ZWxzZQorICBjaGFyIGN3ZFtHVEVTVF9QQVRIX01BWF8gKyAxXSA9IHsgJ1wwJyB9OworICBjaGFy
KiByZXN1bHQgPSBnZXRjd2QoY3dkLCBzaXplb2YoY3dkKSk7CisjIGlmIEdURVNUX09TX05BQ0wK
KyAgLy8gZ2V0Y3dkIHdpbGwgbGlrZWx5IGZhaWwgaW4gTmFDbCBkdWUgdG8gdGhlIHNhbmRib3gs
IHNvIHJldHVybiBzb21ldGhpbmcKKyAgLy8gcmVhc29uYWJsZS4gVGhlIHVzZXIgbWF5IGhhdmUg
cHJvdmlkZWQgYSBzaGltIGltcGxlbWVudGF0aW9uIGZvciBnZXRjd2QsCisgIC8vIGhvd2V2ZXIs
IHNvIGZhbGxiYWNrIG9ubHkgd2hlbiBmYWlsdXJlIGlzIGRldGVjdGVkLgorICByZXR1cm4gRmls
ZVBhdGgocmVzdWx0ID09IE5VTEwgPyBrQ3VycmVudERpcmVjdG9yeVN0cmluZyA6IGN3ZCk7Cisj
IGVuZGlmICAvLyBHVEVTVF9PU19OQUNMCisgIHJldHVybiBGaWxlUGF0aChyZXN1bHQgPT0gTlVM
TCA/ICIiIDogY3dkKTsKKyNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKK30KKwor
Ly8gUmV0dXJucyBhIGNvcHkgb2YgdGhlIEZpbGVQYXRoIHdpdGggdGhlIGNhc2UtaW5zZW5zaXRp
dmUgZXh0ZW5zaW9uIHJlbW92ZWQuCisvLyBFeGFtcGxlOiBGaWxlUGF0aCgiZGlyL2ZpbGUuZXhl
IikuUmVtb3ZlRXh0ZW5zaW9uKCJFWEUiKSByZXR1cm5zCisvLyBGaWxlUGF0aCgiZGlyL2ZpbGUi
KS4gSWYgYSBjYXNlLWluc2Vuc2l0aXZlIGV4dGVuc2lvbiBpcyBub3QKKy8vIGZvdW5kLCByZXR1
cm5zIGEgY29weSBvZiB0aGUgb3JpZ2luYWwgRmlsZVBhdGguCitGaWxlUGF0aCBGaWxlUGF0aDo6
UmVtb3ZlRXh0ZW5zaW9uKGNvbnN0IGNoYXIqIGV4dGVuc2lvbikgY29uc3QgeworICBjb25zdCBz
dGQ6OnN0cmluZyBkb3RfZXh0ZW5zaW9uID0gc3RkOjpzdHJpbmcoIi4iKSArIGV4dGVuc2lvbjsK
KyAgaWYgKFN0cmluZzo6RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUocGF0aG5hbWVfLCBkb3RfZXh0
ZW5zaW9uKSkgeworICAgIHJldHVybiBGaWxlUGF0aChwYXRobmFtZV8uc3Vic3RyKAorICAgICAg
ICAwLCBwYXRobmFtZV8ubGVuZ3RoKCkgLSBkb3RfZXh0ZW5zaW9uLmxlbmd0aCgpKSk7CisgIH0K
KyAgcmV0dXJuICp0aGlzOworfQorCisvLyBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgbGFzdCBv
Y2N1cmVuY2Ugb2YgYSB2YWxpZCBwYXRoIHNlcGFyYXRvciBpbgorLy8gdGhlIEZpbGVQYXRoLiBP
biBXaW5kb3dzLCBmb3IgZXhhbXBsZSwgYm90aCAnLycgYW5kICdcJyBhcmUgdmFsaWQgcGF0aAor
Ly8gc2VwYXJhdG9ycy4gUmV0dXJucyBOVUxMIGlmIG5vIHBhdGggc2VwYXJhdG9yIHdhcyBmb3Vu
ZC4KK2NvbnN0IGNoYXIqIEZpbGVQYXRoOjpGaW5kTGFzdFBhdGhTZXBhcmF0b3IoKSBjb25zdCB7
CisgIGNvbnN0IGNoYXIqIGNvbnN0IGxhc3Rfc2VwID0gc3RycmNocihjX3N0cigpLCBrUGF0aFNl
cGFyYXRvcik7CisjaWYgR1RFU1RfSEFTX0FMVF9QQVRIX1NFUF8KKyAgY29uc3QgY2hhciogY29u
c3QgbGFzdF9hbHRfc2VwID0gc3RycmNocihjX3N0cigpLCBrQWx0ZXJuYXRlUGF0aFNlcGFyYXRv
cik7CisgIC8vIENvbXBhcmluZyB0d28gcG9pbnRlcnMgb2Ygd2hpY2ggb25seSBvbmUgaXMgTlVM
TCBpcyB1bmRlZmluZWQuCisgIGlmIChsYXN0X2FsdF9zZXAgIT0gTlVMTCAmJgorICAgICAgKGxh
c3Rfc2VwID09IE5VTEwgfHwgbGFzdF9hbHRfc2VwID4gbGFzdF9zZXApKSB7CisgICAgcmV0dXJu
IGxhc3RfYWx0X3NlcDsKKyAgfQorI2VuZGlmCisgIHJldHVybiBsYXN0X3NlcDsKK30KKworLy8g
UmV0dXJucyBhIGNvcHkgb2YgdGhlIEZpbGVQYXRoIHdpdGggdGhlIGRpcmVjdG9yeSBwYXJ0IHJl
bW92ZWQuCisvLyBFeGFtcGxlOiBGaWxlUGF0aCgicGF0aC90by9maWxlIikuUmVtb3ZlRGlyZWN0
b3J5TmFtZSgpIHJldHVybnMKKy8vIEZpbGVQYXRoKCJmaWxlIikuIElmIHRoZXJlIGlzIG5vIGRp
cmVjdG9yeSBwYXJ0ICgianVzdF9hX2ZpbGUiKSwgaXQgcmV0dXJucworLy8gdGhlIEZpbGVQYXRo
IHVubW9kaWZpZWQuIElmIHRoZXJlIGlzIG5vIGZpbGUgcGFydCAoImp1c3RfYV9kaXIvIikgaXQK
Ky8vIHJldHVybnMgYW4gZW1wdHkgRmlsZVBhdGggKCIiKS4KKy8vIE9uIFdpbmRvd3MgcGxhdGZv
cm0sICdcJyBpcyB0aGUgcGF0aCBzZXBhcmF0b3IsIG90aGVyd2lzZSBpdCBpcyAnLycuCitGaWxl
UGF0aCBGaWxlUGF0aDo6UmVtb3ZlRGlyZWN0b3J5TmFtZSgpIGNvbnN0IHsKKyAgY29uc3QgY2hh
ciogY29uc3QgbGFzdF9zZXAgPSBGaW5kTGFzdFBhdGhTZXBhcmF0b3IoKTsKKyAgcmV0dXJuIGxh
c3Rfc2VwID8gRmlsZVBhdGgobGFzdF9zZXAgKyAxKSA6ICp0aGlzOworfQorCisvLyBSZW1vdmVG
aWxlTmFtZSByZXR1cm5zIHRoZSBkaXJlY3RvcnkgcGF0aCB3aXRoIHRoZSBmaWxlbmFtZSByZW1v
dmVkLgorLy8gRXhhbXBsZTogRmlsZVBhdGgoInBhdGgvdG8vZmlsZSIpLlJlbW92ZUZpbGVOYW1l
KCkgcmV0dXJucyAicGF0aC90by8iLgorLy8gSWYgdGhlIEZpbGVQYXRoIGlzICJhX2ZpbGUiIG9y
ICIvYV9maWxlIiwgUmVtb3ZlRmlsZU5hbWUgcmV0dXJucworLy8gRmlsZVBhdGgoIi4vIikgb3Is
IG9uIFdpbmRvd3MsIEZpbGVQYXRoKCIuXFwiKS4gSWYgdGhlIGZpbGVwYXRoIGRvZXMKKy8vIG5v
dCBoYXZlIGEgZmlsZSwgbGlrZSAianVzdC9hL2Rpci8iLCBpdCByZXR1cm5zIHRoZSBGaWxlUGF0
aCB1bm1vZGlmaWVkLgorLy8gT24gV2luZG93cyBwbGF0Zm9ybSwgJ1wnIGlzIHRoZSBwYXRoIHNl
cGFyYXRvciwgb3RoZXJ3aXNlIGl0IGlzICcvJy4KK0ZpbGVQYXRoIEZpbGVQYXRoOjpSZW1vdmVG
aWxlTmFtZSgpIGNvbnN0IHsKKyAgY29uc3QgY2hhciogY29uc3QgbGFzdF9zZXAgPSBGaW5kTGFz
dFBhdGhTZXBhcmF0b3IoKTsKKyAgc3RkOjpzdHJpbmcgZGlyOworICBpZiAobGFzdF9zZXApIHsK
KyAgICBkaXIgPSBzdGQ6OnN0cmluZyhjX3N0cigpLCBsYXN0X3NlcCArIDEgLSBjX3N0cigpKTsK
KyAgfSBlbHNlIHsKKyAgICBkaXIgPSBrQ3VycmVudERpcmVjdG9yeVN0cmluZzsKKyAgfQorICBy
ZXR1cm4gRmlsZVBhdGgoZGlyKTsKK30KKworLy8gSGVscGVyIGZ1bmN0aW9ucyBmb3IgbmFtaW5n
IGZpbGVzIGluIGEgZGlyZWN0b3J5IGZvciB4bWwgb3V0cHV0LgorCisvLyBHaXZlbiBkaXJlY3Rv
cnkgPSAiZGlyIiwgYmFzZV9uYW1lID0gInRlc3QiLCBudW1iZXIgPSAwLAorLy8gZXh0ZW5zaW9u
ID0gInhtbCIsIHJldHVybnMgImRpci90ZXN0LnhtbCIuIElmIG51bWJlciBpcyBncmVhdGVyCisv
LyB0aGFuIHplcm8gKGUuZy4sIDEyKSwgcmV0dXJucyAiZGlyL3Rlc3RfMTIueG1sIi4KKy8vIE9u
IFdpbmRvd3MgcGxhdGZvcm0sIHVzZXMgXCBhcyB0aGUgc2VwYXJhdG9yIHJhdGhlciB0aGFuIC8u
CitGaWxlUGF0aCBGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKGNvbnN0IEZpbGVQYXRoJiBkaXJlY3Rv
cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZpbGVQYXRoJiBiYXNl
X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW1iZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4dGVuc2lvbikgeworICBz
dGQ6OnN0cmluZyBmaWxlOworICBpZiAobnVtYmVyID09IDApIHsKKyAgICBmaWxlID0gYmFzZV9u
YW1lLnN0cmluZygpICsgIi4iICsgZXh0ZW5zaW9uOworICB9IGVsc2UgeworICAgIGZpbGUgPSBi
YXNlX25hbWUuc3RyaW5nKCkgKyAiXyIgKyBTdHJlYW1hYmxlVG9TdHJpbmcobnVtYmVyKQorICAg
ICAgICArICIuIiArIGV4dGVuc2lvbjsKKyAgfQorICByZXR1cm4gQ29uY2F0UGF0aHMoZGlyZWN0
b3J5LCBGaWxlUGF0aChmaWxlKSk7Cit9CisKKy8vIEdpdmVuIGRpcmVjdG9yeSA9ICJkaXIiLCBy
ZWxhdGl2ZV9wYXRoID0gInRlc3QueG1sIiwgcmV0dXJucyAiZGlyL3Rlc3QueG1sIi4KKy8vIE9u
IFdpbmRvd3MsIHVzZXMgXCBhcyB0aGUgc2VwYXJhdG9yIHJhdGhlciB0aGFuIC8uCitGaWxlUGF0
aCBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoY29uc3QgRmlsZVBhdGgmIGRpcmVjdG9yeSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGaWxlUGF0aCYgcmVsYXRpdmVfcGF0aCkg
eworICBpZiAoZGlyZWN0b3J5LklzRW1wdHkoKSkKKyAgICByZXR1cm4gcmVsYXRpdmVfcGF0aDsK
KyAgY29uc3QgRmlsZVBhdGggZGlyKGRpcmVjdG9yeS5SZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0
b3IoKSk7CisgIHJldHVybiBGaWxlUGF0aChkaXIuc3RyaW5nKCkgKyBrUGF0aFNlcGFyYXRvciAr
IHJlbGF0aXZlX3BhdGguc3RyaW5nKCkpOworfQorCisvLyBSZXR1cm5zIHRydWUgaWYgcGF0aG5h
bWUgZGVzY3JpYmVzIHNvbWV0aGluZyBmaW5kYWJsZSBpbiB0aGUgZmlsZS1zeXN0ZW0sCisvLyBl
aXRoZXIgYSBmaWxlLCBkaXJlY3RvcnksIG9yIHdoYXRldmVyLgorYm9vbCBGaWxlUGF0aDo6Rmls
ZU9yRGlyZWN0b3J5RXhpc3RzKCkgY29uc3QgeworI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxF
CisgIExQQ1dTVFIgdW5pY29kZSA9IFN0cmluZzo6QW5zaVRvVXRmMTYocGF0aG5hbWVfLmNfc3Ry
KCkpOworICBjb25zdCBEV09SRCBhdHRyaWJ1dGVzID0gR2V0RmlsZUF0dHJpYnV0ZXModW5pY29k
ZSk7CisgIGRlbGV0ZSBbXSB1bmljb2RlOworICByZXR1cm4gYXR0cmlidXRlcyAhPSBrSW52YWxp
ZEZpbGVBdHRyaWJ1dGVzOworI2Vsc2UKKyAgcG9zaXg6OlN0YXRTdHJ1Y3QgZmlsZV9zdGF0Owor
ICByZXR1cm4gcG9zaXg6OlN0YXQocGF0aG5hbWVfLmNfc3RyKCksICZmaWxlX3N0YXQpID09IDA7
CisjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCit9CisKKy8vIFJldHVybnMgdHJ1
ZSBpZiBwYXRobmFtZSBkZXNjcmliZXMgYSBkaXJlY3RvcnkgaW4gdGhlIGZpbGUtc3lzdGVtCisv
LyB0aGF0IGV4aXN0cy4KK2Jvb2wgRmlsZVBhdGg6OkRpcmVjdG9yeUV4aXN0cygpIGNvbnN0IHsK
KyAgYm9vbCByZXN1bHQgPSBmYWxzZTsKKyNpZiBHVEVTVF9PU19XSU5ET1dTCisgIC8vIERvbid0
IHN0cmlwIG9mZiB0cmFpbGluZyBzZXBhcmF0b3IgaWYgcGF0aCBpcyBhIHJvb3QgZGlyZWN0b3J5
IG9uCisgIC8vIFdpbmRvd3MgKGxpa2UgIkM6XFwiKS4KKyAgY29uc3QgRmlsZVBhdGgmIHBhdGgo
SXNSb290RGlyZWN0b3J5KCkgPyAqdGhpcyA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkpOworI2Vsc2UKKyAg
Y29uc3QgRmlsZVBhdGgmIHBhdGgoKnRoaXMpOworI2VuZGlmCisKKyNpZiBHVEVTVF9PU19XSU5E
T1dTX01PQklMRQorICBMUENXU1RSIHVuaWNvZGUgPSBTdHJpbmc6OkFuc2lUb1V0ZjE2KHBhdGgu
Y19zdHIoKSk7CisgIGNvbnN0IERXT1JEIGF0dHJpYnV0ZXMgPSBHZXRGaWxlQXR0cmlidXRlcyh1
bmljb2RlKTsKKyAgZGVsZXRlIFtdIHVuaWNvZGU7CisgIGlmICgoYXR0cmlidXRlcyAhPSBrSW52
YWxpZEZpbGVBdHRyaWJ1dGVzKSAmJgorICAgICAgKGF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVU
RV9ESVJFQ1RPUlkpKSB7CisgICAgcmVzdWx0ID0gdHJ1ZTsKKyAgfQorI2Vsc2UKKyAgcG9zaXg6
OlN0YXRTdHJ1Y3QgZmlsZV9zdGF0OworICByZXN1bHQgPSBwb3NpeDo6U3RhdChwYXRoLmNfc3Ry
KCksICZmaWxlX3N0YXQpID09IDAgJiYKKyAgICAgIHBvc2l4OjpJc0RpcihmaWxlX3N0YXQpOwor
I2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorCisgIHJldHVybiByZXN1bHQ7Cit9
CisKKy8vIFJldHVybnMgdHJ1ZSBpZiBwYXRobmFtZSBkZXNjcmliZXMgYSByb290IGRpcmVjdG9y
eS4gKFdpbmRvd3MgaGFzIG9uZQorLy8gcm9vdCBkaXJlY3RvcnkgcGVyIGRpc2sgZHJpdmUuKQor
Ym9vbCBGaWxlUGF0aDo6SXNSb290RGlyZWN0b3J5KCkgY29uc3QgeworI2lmIEdURVNUX09TX1dJ
TkRPV1MKKyAgLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IG9uIFdpbmRvd3MgYSBuZXR3b3JrIHNo
YXJlIGxpa2UKKyAgLy8gXFxzZXJ2ZXJcc2hhcmUgY2FuIGJlIGEgcm9vdCBkaXJlY3RvcnksIGFs
dGhvdWdoIGl0IGNhbm5vdCBiZSB0aGUKKyAgLy8gY3VycmVudCBkaXJlY3RvcnkuICBIYW5kbGUg
dGhpcyBwcm9wZXJseS4KKyAgcmV0dXJuIHBhdGhuYW1lXy5sZW5ndGgoKSA9PSAzICYmIElzQWJz
b2x1dGVQYXRoKCk7CisjZWxzZQorICByZXR1cm4gcGF0aG5hbWVfLmxlbmd0aCgpID09IDEgJiYg
SXNQYXRoU2VwYXJhdG9yKHBhdGhuYW1lXy5jX3N0cigpWzBdKTsKKyNlbmRpZgorfQorCisvLyBS
ZXR1cm5zIHRydWUgaWYgcGF0aG5hbWUgZGVzY3JpYmVzIGFuIGFic29sdXRlIHBhdGguCitib29s
IEZpbGVQYXRoOjpJc0Fic29sdXRlUGF0aCgpIGNvbnN0IHsKKyAgY29uc3QgY2hhciogY29uc3Qg
bmFtZSA9IHBhdGhuYW1lXy5jX3N0cigpOworI2lmIEdURVNUX09TX1dJTkRPV1MKKyAgcmV0dXJu
IHBhdGhuYW1lXy5sZW5ndGgoKSA+PSAzICYmCisgICAgICgobmFtZVswXSA+PSAnYScgJiYgbmFt
ZVswXSA8PSAneicpIHx8CisgICAgICAobmFtZVswXSA+PSAnQScgJiYgbmFtZVswXSA8PSAnWicp
KSAmJgorICAgICBuYW1lWzFdID09ICc6JyAmJgorICAgICBJc1BhdGhTZXBhcmF0b3IobmFtZVsy
XSk7CisjZWxzZQorICByZXR1cm4gSXNQYXRoU2VwYXJhdG9yKG5hbWVbMF0pOworI2VuZGlmCit9
CisKKy8vIFJldHVybnMgYSBwYXRobmFtZSBmb3IgYSBmaWxlIHRoYXQgZG9lcyBub3QgY3VycmVu
dGx5IGV4aXN0LiBUaGUgcGF0aG5hbWUKKy8vIHdpbGwgYmUgZGlyZWN0b3J5L2Jhc2VfbmFtZS5l
eHRlbnNpb24gb3IKKy8vIGRpcmVjdG9yeS9iYXNlX25hbWVfPG51bWJlcj4uZXh0ZW5zaW9uIGlm
IGRpcmVjdG9yeS9iYXNlX25hbWUuZXh0ZW5zaW9uCisvLyBhbHJlYWR5IGV4aXN0cy4gVGhlIG51
bWJlciB3aWxsIGJlIGluY3JlbWVudGVkIHVudGlsIGEgcGF0aG5hbWUgaXMgZm91bmQKKy8vIHRo
YXQgZG9lcyBub3QgYWxyZWFkeSBleGlzdC4KKy8vIEV4YW1wbGVzOiAnZGlyL2Zvb190ZXN0Lnht
bCcgb3IgJ2Rpci9mb29fdGVzdF8xLnhtbCcuCisvLyBUaGVyZSBjb3VsZCBiZSBhIHJhY2UgY29u
ZGl0aW9uIGlmIHR3byBvciBtb3JlIHByb2Nlc3NlcyBhcmUgY2FsbGluZyB0aGlzCisvLyBmdW5j
dGlvbiBhdCB0aGUgc2FtZSB0aW1lIC0tIHRoZXkgY291bGQgYm90aCBwaWNrIHRoZSBzYW1lIGZp
bGVuYW1lLgorRmlsZVBhdGggRmlsZVBhdGg6OkdlbmVyYXRlVW5pcXVlRmlsZU5hbWUoY29uc3Qg
RmlsZVBhdGgmIGRpcmVjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEZpbGVQYXRoJiBiYXNlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBleHRlbnNpb24pIHsKKyAgRmlsZVBhdGgg
ZnVsbF9wYXRobmFtZTsKKyAgaW50IG51bWJlciA9IDA7CisgIGRvIHsKKyAgICBmdWxsX3BhdGhu
YW1lLlNldChNYWtlRmlsZU5hbWUoZGlyZWN0b3J5LCBiYXNlX25hbWUsIG51bWJlcisrLCBleHRl
bnNpb24pKTsKKyAgfSB3aGlsZSAoZnVsbF9wYXRobmFtZS5GaWxlT3JEaXJlY3RvcnlFeGlzdHMo
KSk7CisgIHJldHVybiBmdWxsX3BhdGhuYW1lOworfQorCisvLyBSZXR1cm5zIHRydWUgaWYgRmls
ZVBhdGggZW5kcyB3aXRoIGEgcGF0aCBzZXBhcmF0b3IsIHdoaWNoIGluZGljYXRlcyB0aGF0Cisv
LyBpdCBpcyBpbnRlbmRlZCB0byByZXByZXNlbnQgYSBkaXJlY3RvcnkuIFJldHVybnMgZmFsc2Ug
b3RoZXJ3aXNlLgorLy8gVGhpcyBkb2VzIE5PVCBjaGVjayB0aGF0IGEgZGlyZWN0b3J5IChvciBm
aWxlKSBhY3R1YWxseSBleGlzdHMuCitib29sIEZpbGVQYXRoOjpJc0RpcmVjdG9yeSgpIGNvbnN0
IHsKKyAgcmV0dXJuICFwYXRobmFtZV8uZW1wdHkoKSAmJgorICAgICAgICAgSXNQYXRoU2VwYXJh
dG9yKHBhdGhuYW1lXy5jX3N0cigpW3BhdGhuYW1lXy5sZW5ndGgoKSAtIDFdKTsKK30KKworLy8g
Q3JlYXRlIGRpcmVjdG9yaWVzIHNvIHRoYXQgcGF0aCBleGlzdHMuIFJldHVybnMgdHJ1ZSBpZiBz
dWNjZXNzZnVsIG9yIGlmCisvLyB0aGUgZGlyZWN0b3JpZXMgYWxyZWFkeSBleGlzdDsgcmV0dXJu
cyBmYWxzZSBpZiB1bmFibGUgdG8gY3JlYXRlIGRpcmVjdG9yaWVzCisvLyBmb3IgYW55IHJlYXNv
bi4KK2Jvb2wgRmlsZVBhdGg6OkNyZWF0ZURpcmVjdG9yaWVzUmVjdXJzaXZlbHkoKSBjb25zdCB7
CisgIGlmICghdGhpcy0+SXNEaXJlY3RvcnkoKSkgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQor
CisgIGlmIChwYXRobmFtZV8ubGVuZ3RoKCkgPT0gMCB8fCB0aGlzLT5EaXJlY3RvcnlFeGlzdHMo
KSkgeworICAgIHJldHVybiB0cnVlOworICB9CisKKyAgY29uc3QgRmlsZVBhdGggcGFyZW50KHRo
aXMtPlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLlJlbW92ZUZpbGVOYW1lKCkpOworICBy
ZXR1cm4gcGFyZW50LkNyZWF0ZURpcmVjdG9yaWVzUmVjdXJzaXZlbHkoKSAmJiB0aGlzLT5DcmVh
dGVGb2xkZXIoKTsKK30KKworLy8gQ3JlYXRlIHRoZSBkaXJlY3Rvcnkgc28gdGhhdCBwYXRoIGV4
aXN0cy4gUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwgb3IKKy8vIGlmIHRoZSBkaXJlY3Rvcnkg
YWxyZWFkeSBleGlzdHM7IHJldHVybnMgZmFsc2UgaWYgdW5hYmxlIHRvIGNyZWF0ZSB0aGUKKy8v
IGRpcmVjdG9yeSBmb3IgYW55IHJlYXNvbiwgaW5jbHVkaW5nIGlmIHRoZSBwYXJlbnQgZGlyZWN0
b3J5IGRvZXMgbm90CisvLyBleGlzdC4gTm90IG5hbWVkICJDcmVhdGVEaXJlY3RvcnkiIGJlY2F1
c2UgdGhhdCdzIGEgbWFjcm8gb24gV2luZG93cy4KK2Jvb2wgRmlsZVBhdGg6OkNyZWF0ZUZvbGRl
cigpIGNvbnN0IHsKKyNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorICBGaWxlUGF0aCByZW1v
dmVkX3NlcCh0aGlzLT5SZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IoKSk7CisgIExQQ1dTVFIg
dW5pY29kZSA9IFN0cmluZzo6QW5zaVRvVXRmMTYocmVtb3ZlZF9zZXAuY19zdHIoKSk7CisgIGlu
dCByZXN1bHQgPSBDcmVhdGVEaXJlY3RvcnkodW5pY29kZSwgTlVMTCkgPyAwIDogLTE7CisgIGRl
bGV0ZSBbXSB1bmljb2RlOworI2VsaWYgR1RFU1RfT1NfV0lORE9XUworICBpbnQgcmVzdWx0ID0g
X21rZGlyKHBhdGhuYW1lXy5jX3N0cigpKTsKKyNlbHNlCisgIGludCByZXN1bHQgPSBta2Rpcihw
YXRobmFtZV8uY19zdHIoKSwgMDc3Nyk7CisjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9C
SUxFCisKKyAgaWYgKHJlc3VsdCA9PSAtMSkgeworICAgIHJldHVybiB0aGlzLT5EaXJlY3RvcnlF
eGlzdHMoKTsgIC8vIEFuIGVycm9yIGlzIE9LIGlmIHRoZSBkaXJlY3RvcnkgZXhpc3RzLgorICB9
CisgIHJldHVybiB0cnVlOyAgLy8gTm8gZXJyb3IuCit9CisKKy8vIElmIGlucHV0IG5hbWUgaGFz
IGEgdHJhaWxpbmcgc2VwYXJhdG9yIGNoYXJhY3RlciwgcmVtb3ZlIGl0IGFuZCByZXR1cm4gdGhl
CisvLyBuYW1lLCBvdGhlcndpc2UgcmV0dXJuIHRoZSBuYW1lIHN0cmluZyB1bm1vZGlmaWVkLgor
Ly8gT24gV2luZG93cyBwbGF0Zm9ybSwgdXNlcyBcIGFzIHRoZSBzZXBhcmF0b3IsIG90aGVyIHBs
YXRmb3JtcyB1c2UgLy4KK0ZpbGVQYXRoIEZpbGVQYXRoOjpSZW1vdmVUcmFpbGluZ1BhdGhTZXBh
cmF0b3IoKSBjb25zdCB7CisgIHJldHVybiBJc0RpcmVjdG9yeSgpCisgICAgICA/IEZpbGVQYXRo
KHBhdGhuYW1lXy5zdWJzdHIoMCwgcGF0aG5hbWVfLmxlbmd0aCgpIC0gMSkpCisgICAgICA6ICp0
aGlzOworfQorCisvLyBSZW1vdmVzIGFueSByZWR1bmRhbnQgc2VwYXJhdG9ycyB0aGF0IG1pZ2h0
IGJlIGluIHRoZSBwYXRobmFtZS4KKy8vIEZvciBleGFtcGxlLCAiYmFyLy8vZm9vIiBiZWNvbWVz
ICJiYXIvZm9vIi4gRG9lcyBub3QgZWxpbWluYXRlIG90aGVyCisvLyByZWR1bmRhbmNpZXMgdGhh
dCBtaWdodCBiZSBpbiBhIHBhdGhuYW1lIGludm9sdmluZyAiLiIgb3IgIi4uIi4KKy8vIFRPRE8o
d2FuQGdvb2dsZS5jb20pOiBoYW5kbGUgV2luZG93cyBuZXR3b3JrIHNoYXJlcyAoZS5nLiBcXHNl
cnZlclxzaGFyZSkuCit2b2lkIEZpbGVQYXRoOjpOb3JtYWxpemUoKSB7CisgIGlmIChwYXRobmFt
ZV8uY19zdHIoKSA9PSBOVUxMKSB7CisgICAgcGF0aG5hbWVfID0gIiI7CisgICAgcmV0dXJuOwor
ICB9CisgIGNvbnN0IGNoYXIqIHNyYyA9IHBhdGhuYW1lXy5jX3N0cigpOworICBjaGFyKiBjb25z
dCBkZXN0ID0gbmV3IGNoYXJbcGF0aG5hbWVfLmxlbmd0aCgpICsgMV07CisgIGNoYXIqIGRlc3Rf
cHRyID0gZGVzdDsKKyAgbWVtc2V0KGRlc3RfcHRyLCAwLCBwYXRobmFtZV8ubGVuZ3RoKCkgKyAx
KTsKKworICB3aGlsZSAoKnNyYyAhPSAnXDAnKSB7CisgICAgKmRlc3RfcHRyID0gKnNyYzsKKyAg
ICBpZiAoIUlzUGF0aFNlcGFyYXRvcigqc3JjKSkgeworICAgICAgc3JjKys7CisgICAgfSBlbHNl
IHsKKyNpZiBHVEVTVF9IQVNfQUxUX1BBVEhfU0VQXworICAgICAgaWYgKCpkZXN0X3B0ciA9PSBr
QWx0ZXJuYXRlUGF0aFNlcGFyYXRvcikgeworICAgICAgICAqZGVzdF9wdHIgPSBrUGF0aFNlcGFy
YXRvcjsKKyAgICAgIH0KKyNlbmRpZgorICAgICAgd2hpbGUgKElzUGF0aFNlcGFyYXRvcigqc3Jj
KSkKKyAgICAgICAgc3JjKys7CisgICAgfQorICAgIGRlc3RfcHRyKys7CisgIH0KKyAgKmRlc3Rf
cHRyID0gJ1wwJzsKKyAgcGF0aG5hbWVfID0gZGVzdDsKKyAgZGVsZXRlW10gZGVzdDsKK30KKwor
fSAgLy8gbmFtZXNwYWNlIGludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LWludGVybmFsLWlubC5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
c3JjL2d0ZXN0LWludGVybmFsLWlubC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyMWZlYjE2Zjk0YmRlNTYwNjQy
Y2RmYjU2ZjA0NGRhYmRlMWQzY2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zcmMv
Z3Rlc3QtaW50ZXJuYWwtaW5sLmgKQEAgLTAsMCArMSwxMTgzIEBACisvLyBDb3B5cmlnaHQgMjAw
NSwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
Ky8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8v
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisv
LyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKy8vIFV0aWxpdHkgZnVuY3Rpb25zIGFuZCBj
bGFzc2VzIHVzZWQgYnkgdGhlIEdvb2dsZSBDKysgdGVzdGluZyBmcmFtZXdvcmsuCisvLworLy8g
QXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorLy8KKy8vIFRoaXMgZmlsZSBj
b250YWlucyBwdXJlbHkgR29vZ2xlIFRlc3QncyBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbi4gIFBs
ZWFzZQorLy8gRE8gTk9UICNJTkNMVURFIElUIElOIEEgVVNFUiBQUk9HUkFNLgorCisjaWZuZGVm
IEdURVNUX1NSQ19HVEVTVF9JTlRFUk5BTF9JTkxfSF8KKyNkZWZpbmUgR1RFU1RfU1JDX0dURVNU
X0lOVEVSTkFMX0lOTF9IXworCisvLyBHVEVTVF9JTVBMRU1FTlRBVElPTl8gaXMgZGVmaW5lZCB0
byAxIGlmZiB0aGUgY3VycmVudCB0cmFuc2xhdGlvbiB1bml0IGlzCisvLyBwYXJ0IG9mIEdvb2ds
ZSBUZXN0J3MgaW1wbGVtZW50YXRpb247IG90aGVyd2lzZSBpdCdzIHVuZGVmaW5lZC4KKyNpZiAh
R1RFU1RfSU1QTEVNRU5UQVRJT05fCisvLyBJZiB0aGlzIGZpbGUgaXMgaW5jbHVkZWQgZnJvbSB0
aGUgdXNlcidzIGNvZGUsIGp1c3Qgc2F5IG5vLgorIyBlcnJvciAiZ3Rlc3QtaW50ZXJuYWwtaW5s
LmggaXMgcGFydCBvZiBHb29nbGUgVGVzdCdzIGludGVybmFsIGltcGxlbWVudGF0aW9uLiIKKyMg
ZXJyb3IgIkl0IG11c3Qgbm90IGJlIGluY2x1ZGVkIGV4Y2VwdCBieSBHb29nbGUgVGVzdCBpdHNl
bGYuIgorI2VuZGlmICAvLyBHVEVTVF9JTVBMRU1FTlRBVElPTl8KKworI2lmbmRlZiBfV0lOMzJf
V0NFCisjIGluY2x1ZGUgPGVycm5vLmg+CisjZW5kaWYgIC8vICFfV0lOMzJfV0NFCisjaW5jbHVk
ZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+ICAvLyBGb3Igc3RydG9sbC9fc3RydG91
bDY0L21hbGxvYy9mcmVlLgorI2luY2x1ZGUgPHN0cmluZy5oPiAgLy8gRm9yIG1lbW1vdmUuCisK
KyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHZlY3Rv
cj4KKworI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKKworI2lmIEdURVNU
X0NBTl9TVFJFQU1fUkVTVUxUU18KKyMgaW5jbHVkZSA8YXJwYS9pbmV0Lmg+ICAvLyBOT0xJTlQK
KyMgaW5jbHVkZSA8bmV0ZGIuaD4gIC8vIE5PTElOVAorI2VuZGlmCisKKyNpZiBHVEVTVF9PU19X
SU5ET1dTCisjIGluY2x1ZGUgPHdpbmRvd3MuaD4gIC8vIE5PTElOVAorI2VuZGlmICAvLyBHVEVT
VF9PU19XSU5ET1dTCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIiAgLy8gTk9MSU5UCisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiCisKK25hbWVzcGFjZSB0ZXN0aW5nIHsKKworLy8gRGVj
bGFyZXMgdGhlIGZsYWdzLgorLy8KKy8vIFdlIGRvbid0IHdhbnQgdGhlIHVzZXJzIHRvIG1vZGlm
eSB0aGlzIGZsYWcgaW4gdGhlIGNvZGUsIGJ1dCB3YW50CisvLyBHb29nbGUgVGVzdCdzIG93biB1
bml0IHRlc3RzIHRvIGJlIGFibGUgdG8gYWNjZXNzIGl0LiBUaGVyZWZvcmUgd2UKKy8vIGRlY2xh
cmUgaXQgaGVyZSBhcyBvcHBvc2VkIHRvIGluIGd0ZXN0LmguCitHVEVTVF9ERUNMQVJFX2Jvb2xf
KGRlYXRoX3Rlc3RfdXNlX2ZvcmspOworCituYW1lc3BhY2UgaW50ZXJuYWwgeworCisvLyBUaGUg
dmFsdWUgb2YgR2V0VGVzdFR5cGVJZCgpIGFzIHNlZW4gZnJvbSB3aXRoaW4gdGhlIEdvb2dsZSBU
ZXN0CisvLyBsaWJyYXJ5LiAgVGhpcyBpcyBzb2xlbHkgZm9yIHRlc3RpbmcgR2V0VGVzdFR5cGVJ
ZCgpLgorR1RFU1RfQVBJXyBleHRlcm4gY29uc3QgVHlwZUlkIGtUZXN0VHlwZUlkSW5Hb29nbGVU
ZXN0OworCisvLyBOYW1lcyBvZiB0aGUgZmxhZ3MgKG5lZWRlZCBmb3IgcGFyc2luZyBHb29nbGUg
VGVzdCBmbGFncykuCitjb25zdCBjaGFyIGtBbHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWdbXSA9ICJh
bHNvX3J1bl9kaXNhYmxlZF90ZXN0cyI7Citjb25zdCBjaGFyIGtCcmVha09uRmFpbHVyZUZsYWdb
XSA9ICJicmVha19vbl9mYWlsdXJlIjsKK2NvbnN0IGNoYXIga0NhdGNoRXhjZXB0aW9uc0ZsYWdb
XSA9ICJjYXRjaF9leGNlcHRpb25zIjsKK2NvbnN0IGNoYXIga0NvbG9yRmxhZ1tdID0gImNvbG9y
IjsKK2NvbnN0IGNoYXIga0ZpbHRlckZsYWdbXSA9ICJmaWx0ZXIiOworY29uc3QgY2hhciBrTGlz
dFRlc3RzRmxhZ1tdID0gImxpc3RfdGVzdHMiOworY29uc3QgY2hhciBrT3V0cHV0RmxhZ1tdID0g
Im91dHB1dCI7Citjb25zdCBjaGFyIGtQcmludFRpbWVGbGFnW10gPSAicHJpbnRfdGltZSI7Citj
b25zdCBjaGFyIGtSYW5kb21TZWVkRmxhZ1tdID0gInJhbmRvbV9zZWVkIjsKK2NvbnN0IGNoYXIg
a1JlcGVhdEZsYWdbXSA9ICJyZXBlYXQiOworY29uc3QgY2hhciBrU2h1ZmZsZUZsYWdbXSA9ICJz
aHVmZmxlIjsKK2NvbnN0IGNoYXIga1N0YWNrVHJhY2VEZXB0aEZsYWdbXSA9ICJzdGFja190cmFj
ZV9kZXB0aCI7Citjb25zdCBjaGFyIGtTdHJlYW1SZXN1bHRUb0ZsYWdbXSA9ICJzdHJlYW1fcmVz
dWx0X3RvIjsKK2NvbnN0IGNoYXIga1Rocm93T25GYWlsdXJlRmxhZ1tdID0gInRocm93X29uX2Zh
aWx1cmUiOworY29uc3QgY2hhciBrRmxhZ2ZpbGVGbGFnW10gPSAiZmxhZ2ZpbGUiOworCisvLyBB
IHZhbGlkIHJhbmRvbSBzZWVkIG11c3QgYmUgaW4gWzEsIGtNYXhSYW5kb21TZWVkXS4KK2NvbnN0
IGludCBrTWF4UmFuZG9tU2VlZCA9IDk5OTk5OworCisvLyBnX2hlbHBfZmxhZyBpcyB0cnVlIGlm
ZiB0aGUgLS1oZWxwIGZsYWcgb3IgYW4gZXF1aXZhbGVudCBmb3JtIGlzCisvLyBzcGVjaWZpZWQg
b24gdGhlIGNvbW1hbmQgbGluZS4KK0dURVNUX0FQSV8gZXh0ZXJuIGJvb2wgZ19oZWxwX2ZsYWc7
CisKKy8vIFJldHVybnMgdGhlIGN1cnJlbnQgdGltZSBpbiBtaWxsaXNlY29uZHMuCitHVEVTVF9B
UElfIFRpbWVJbk1pbGxpcyBHZXRUaW1lSW5NaWxsaXMoKTsKKworLy8gUmV0dXJucyB0cnVlIGlm
ZiBHb29nbGUgVGVzdCBzaG91bGQgdXNlIGNvbG9ycyBpbiB0aGUgb3V0cHV0LgorR1RFU1RfQVBJ
XyBib29sIFNob3VsZFVzZUNvbG9yKGJvb2wgc3Rkb3V0X2lzX3R0eSk7CisKKy8vIEZvcm1hdHMg
dGhlIGdpdmVuIHRpbWUgaW4gbWlsbGlzZWNvbmRzIGFzIHNlY29uZHMuCitHVEVTVF9BUElfIHN0
ZDo6c3RyaW5nIEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kcyhUaW1lSW5NaWxsaXMgbXMpOwor
CisvLyBDb252ZXJ0cyB0aGUgZ2l2ZW4gdGltZSBpbiBtaWxsaXNlY29uZHMgdG8gYSBkYXRlIHN0
cmluZyBpbiB0aGUgSVNPIDg2MDEKKy8vIGZvcm1hdCwgd2l0aG91dCB0aGUgdGltZXpvbmUgaW5m
b3JtYXRpb24uICBOLkIuOiBkdWUgdG8gdGhlIHVzZSB0aGUKKy8vIG5vbi1yZWVudHJhbnQgbG9j
YWx0aW1lKCkgZnVuY3Rpb24sIHRoaXMgZnVuY3Rpb24gaXMgbm90IHRocmVhZCBzYWZlLiAgRG8K
Ky8vIG5vdCB1c2UgaXQgaW4gYW55IGNvZGUgdGhhdCBjYW4gYmUgY2FsbGVkIGZyb20gbXVsdGlw
bGUgdGhyZWFkcy4KK0dURVNUX0FQSV8gc3RkOjpzdHJpbmcgRm9ybWF0RXBvY2hUaW1lSW5NaWxs
aXNBc0lzbzg2MDEoVGltZUluTWlsbGlzIG1zKTsKKworLy8gUGFyc2VzIGEgc3RyaW5nIGZvciBh
biBJbnQzMiBmbGFnLCBpbiB0aGUgZm9ybSBvZiAiLS1mbGFnPXZhbHVlIi4KKy8vCisvLyBPbiBz
dWNjZXNzLCBzdG9yZXMgdGhlIHZhbHVlIG9mIHRoZSBmbGFnIGluICp2YWx1ZSwgYW5kIHJldHVy
bnMKKy8vIHRydWUuICBPbiBmYWlsdXJlLCByZXR1cm5zIGZhbHNlIHdpdGhvdXQgY2hhbmdpbmcg
KnZhbHVlLgorR1RFU1RfQVBJXyBib29sIFBhcnNlSW50MzJGbGFnKAorICAgIGNvbnN0IGNoYXIq
IHN0ciwgY29uc3QgY2hhciogZmxhZywgSW50MzIqIHZhbHVlKTsKKworLy8gUmV0dXJucyBhIHJh
bmRvbSBzZWVkIGluIHJhbmdlIFsxLCBrTWF4UmFuZG9tU2VlZF0gYmFzZWQgb24gdGhlCisvLyBn
aXZlbiAtLWd0ZXN0X3JhbmRvbV9zZWVkIGZsYWcgdmFsdWUuCitpbmxpbmUgaW50IEdldFJhbmRv
bVNlZWRGcm9tRmxhZyhJbnQzMiByYW5kb21fc2VlZF9mbGFnKSB7CisgIGNvbnN0IHVuc2lnbmVk
IGludCByYXdfc2VlZCA9IChyYW5kb21fc2VlZF9mbGFnID09IDApID8KKyAgICAgIHN0YXRpY19j
YXN0PHVuc2lnbmVkIGludD4oR2V0VGltZUluTWlsbGlzKCkpIDoKKyAgICAgIHN0YXRpY19jYXN0
PHVuc2lnbmVkIGludD4ocmFuZG9tX3NlZWRfZmxhZyk7CisKKyAgLy8gTm9ybWFsaXplcyB0aGUg
YWN0dWFsIHNlZWQgdG8gcmFuZ2UgWzEsIGtNYXhSYW5kb21TZWVkXSBzdWNoIHRoYXQKKyAgLy8g
aXQncyBlYXN5IHRvIHR5cGUuCisgIGNvbnN0IGludCBub3JtYWxpemVkX3NlZWQgPQorICAgICAg
c3RhdGljX2Nhc3Q8aW50PigocmF3X3NlZWQgLSAxVSkgJQorICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGtNYXhSYW5kb21TZWVkKSkgKyAxOworICByZXR1
cm4gbm9ybWFsaXplZF9zZWVkOworfQorCisvLyBSZXR1cm5zIHRoZSBmaXJzdCB2YWxpZCByYW5k
b20gc2VlZCBhZnRlciAnc2VlZCcuICBUaGUgYmVoYXZpb3IgaXMKKy8vIHVuZGVmaW5lZCBpZiAn
c2VlZCcgaXMgaW52YWxpZC4gIFRoZSBzZWVkIGFmdGVyIGtNYXhSYW5kb21TZWVkIGlzCisvLyBj
b25zaWRlcmVkIHRvIGJlIDEuCitpbmxpbmUgaW50IEdldE5leHRSYW5kb21TZWVkKGludCBzZWVk
KSB7CisgIEdURVNUX0NIRUNLXygxIDw9IHNlZWQgJiYgc2VlZCA8PSBrTWF4UmFuZG9tU2VlZCkK
KyAgICAgIDw8ICJJbnZhbGlkIHJhbmRvbSBzZWVkICIgPDwgc2VlZCA8PCAiIC0gbXVzdCBiZSBp
biBbMSwgIgorICAgICAgPDwga01heFJhbmRvbVNlZWQgPDwgIl0uIjsKKyAgY29uc3QgaW50IG5l
eHRfc2VlZCA9IHNlZWQgKyAxOworICByZXR1cm4gKG5leHRfc2VlZCA+IGtNYXhSYW5kb21TZWVk
KSA/IDEgOiBuZXh0X3NlZWQ7Cit9CisKKy8vIFRoaXMgY2xhc3Mgc2F2ZXMgdGhlIHZhbHVlcyBv
ZiBhbGwgR29vZ2xlIFRlc3QgZmxhZ3MgaW4gaXRzIGMndG9yLCBhbmQKKy8vIHJlc3RvcmVzIHRo
ZW0gaW4gaXRzIGQndG9yLgorY2xhc3MgR1Rlc3RGbGFnU2F2ZXIgeworIHB1YmxpYzoKKyAgLy8g
VGhlIGMndG9yLgorICBHVGVzdEZsYWdTYXZlcigpIHsKKyAgICBhbHNvX3J1bl9kaXNhYmxlZF90
ZXN0c18gPSBHVEVTVF9GTEFHKGFsc29fcnVuX2Rpc2FibGVkX3Rlc3RzKTsKKyAgICBicmVha19v
bl9mYWlsdXJlXyA9IEdURVNUX0ZMQUcoYnJlYWtfb25fZmFpbHVyZSk7CisgICAgY2F0Y2hfZXhj
ZXB0aW9uc18gPSBHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpOworICAgIGNvbG9yXyA9IEdU
RVNUX0ZMQUcoY29sb3IpOworICAgIGRlYXRoX3Rlc3Rfc3R5bGVfID0gR1RFU1RfRkxBRyhkZWF0
aF90ZXN0X3N0eWxlKTsKKyAgICBkZWF0aF90ZXN0X3VzZV9mb3JrXyA9IEdURVNUX0ZMQUcoZGVh
dGhfdGVzdF91c2VfZm9yayk7CisgICAgZmlsdGVyXyA9IEdURVNUX0ZMQUcoZmlsdGVyKTsKKyAg
ICBpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdF8gPSBHVEVTVF9GTEFHKGludGVybmFsX3J1bl9kZWF0
aF90ZXN0KTsKKyAgICBsaXN0X3Rlc3RzXyA9IEdURVNUX0ZMQUcobGlzdF90ZXN0cyk7CisgICAg
b3V0cHV0XyA9IEdURVNUX0ZMQUcob3V0cHV0KTsKKyAgICBwcmludF90aW1lXyA9IEdURVNUX0ZM
QUcocHJpbnRfdGltZSk7CisgICAgcmFuZG9tX3NlZWRfID0gR1RFU1RfRkxBRyhyYW5kb21fc2Vl
ZCk7CisgICAgcmVwZWF0XyA9IEdURVNUX0ZMQUcocmVwZWF0KTsKKyAgICBzaHVmZmxlXyA9IEdU
RVNUX0ZMQUcoc2h1ZmZsZSk7CisgICAgc3RhY2tfdHJhY2VfZGVwdGhfID0gR1RFU1RfRkxBRyhz
dGFja190cmFjZV9kZXB0aCk7CisgICAgc3RyZWFtX3Jlc3VsdF90b18gPSBHVEVTVF9GTEFHKHN0
cmVhbV9yZXN1bHRfdG8pOworICAgIHRocm93X29uX2ZhaWx1cmVfID0gR1RFU1RfRkxBRyh0aHJv
d19vbl9mYWlsdXJlKTsKKyAgfQorCisgIC8vIFRoZSBkJ3RvciBpcyBub3QgdmlydHVhbC4gIERP
IE5PVCBJTkhFUklUIEZST00gVEhJUyBDTEFTUy4KKyAgfkdUZXN0RmxhZ1NhdmVyKCkgeworICAg
IEdURVNUX0ZMQUcoYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMpID0gYWxzb19ydW5fZGlzYWJsZWRf
dGVzdHNfOworICAgIEdURVNUX0ZMQUcoYnJlYWtfb25fZmFpbHVyZSkgPSBicmVha19vbl9mYWls
dXJlXzsKKyAgICBHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpID0gY2F0Y2hfZXhjZXB0aW9u
c187CisgICAgR1RFU1RfRkxBRyhjb2xvcikgPSBjb2xvcl87CisgICAgR1RFU1RfRkxBRyhkZWF0
aF90ZXN0X3N0eWxlKSA9IGRlYXRoX3Rlc3Rfc3R5bGVfOworICAgIEdURVNUX0ZMQUcoZGVhdGhf
dGVzdF91c2VfZm9yaykgPSBkZWF0aF90ZXN0X3VzZV9mb3JrXzsKKyAgICBHVEVTVF9GTEFHKGZp
bHRlcikgPSBmaWx0ZXJfOworICAgIEdURVNUX0ZMQUcoaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3Qp
ID0gaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3RfOworICAgIEdURVNUX0ZMQUcobGlzdF90ZXN0cykg
PSBsaXN0X3Rlc3RzXzsKKyAgICBHVEVTVF9GTEFHKG91dHB1dCkgPSBvdXRwdXRfOworICAgIEdU
RVNUX0ZMQUcocHJpbnRfdGltZSkgPSBwcmludF90aW1lXzsKKyAgICBHVEVTVF9GTEFHKHJhbmRv
bV9zZWVkKSA9IHJhbmRvbV9zZWVkXzsKKyAgICBHVEVTVF9GTEFHKHJlcGVhdCkgPSByZXBlYXRf
OworICAgIEdURVNUX0ZMQUcoc2h1ZmZsZSkgPSBzaHVmZmxlXzsKKyAgICBHVEVTVF9GTEFHKHN0
YWNrX3RyYWNlX2RlcHRoKSA9IHN0YWNrX3RyYWNlX2RlcHRoXzsKKyAgICBHVEVTVF9GTEFHKHN0
cmVhbV9yZXN1bHRfdG8pID0gc3RyZWFtX3Jlc3VsdF90b187CisgICAgR1RFU1RfRkxBRyh0aHJv
d19vbl9mYWlsdXJlKSA9IHRocm93X29uX2ZhaWx1cmVfOworICB9CisKKyBwcml2YXRlOgorICAv
LyBGaWVsZHMgZm9yIHNhdmluZyB0aGUgb3JpZ2luYWwgdmFsdWVzIG9mIGZsYWdzLgorICBib29s
IGFsc29fcnVuX2Rpc2FibGVkX3Rlc3RzXzsKKyAgYm9vbCBicmVha19vbl9mYWlsdXJlXzsKKyAg
Ym9vbCBjYXRjaF9leGNlcHRpb25zXzsKKyAgc3RkOjpzdHJpbmcgY29sb3JfOworICBzdGQ6OnN0
cmluZyBkZWF0aF90ZXN0X3N0eWxlXzsKKyAgYm9vbCBkZWF0aF90ZXN0X3VzZV9mb3JrXzsKKyAg
c3RkOjpzdHJpbmcgZmlsdGVyXzsKKyAgc3RkOjpzdHJpbmcgaW50ZXJuYWxfcnVuX2RlYXRoX3Rl
c3RfOworICBib29sIGxpc3RfdGVzdHNfOworICBzdGQ6OnN0cmluZyBvdXRwdXRfOworICBib29s
IHByaW50X3RpbWVfOworICBpbnRlcm5hbDo6SW50MzIgcmFuZG9tX3NlZWRfOworICBpbnRlcm5h
bDo6SW50MzIgcmVwZWF0XzsKKyAgYm9vbCBzaHVmZmxlXzsKKyAgaW50ZXJuYWw6OkludDMyIHN0
YWNrX3RyYWNlX2RlcHRoXzsKKyAgc3RkOjpzdHJpbmcgc3RyZWFtX3Jlc3VsdF90b187CisgIGJv
b2wgdGhyb3dfb25fZmFpbHVyZV87Cit9IEdURVNUX0FUVFJJQlVURV9VTlVTRURfOworCisvLyBD
b252ZXJ0cyBhIFVuaWNvZGUgY29kZSBwb2ludCB0byBhIG5hcnJvdyBzdHJpbmcgaW4gVVRGLTgg
ZW5jb2RpbmcuCisvLyBjb2RlX3BvaW50IHBhcmFtZXRlciBpcyBvZiB0eXBlIFVJbnQzMiBiZWNh
dXNlIHdjaGFyX3QgbWF5IG5vdCBiZQorLy8gd2lkZSBlbm91Z2ggdG8gY29udGFpbiBhIGNvZGUg
cG9pbnQuCisvLyBJZiB0aGUgY29kZV9wb2ludCBpcyBub3QgYSB2YWxpZCBVbmljb2RlIGNvZGUg
cG9pbnQKKy8vIChpLmUuIG91dHNpZGUgb2YgVW5pY29kZSByYW5nZSBVKzAgdG8gVSsxMEZGRkYp
IGl0IHdpbGwgYmUgY29udmVydGVkCisvLyB0byAiKEludmFsaWQgVW5pY29kZSAweFhYWFhYWFhY
KSIuCitHVEVTVF9BUElfIHN0ZDo6c3RyaW5nIENvZGVQb2ludFRvVXRmOChVSW50MzIgY29kZV9w
b2ludCk7CisKKy8vIENvbnZlcnRzIGEgd2lkZSBzdHJpbmcgdG8gYSBuYXJyb3cgc3RyaW5nIGlu
IFVURi04IGVuY29kaW5nLgorLy8gVGhlIHdpZGUgc3RyaW5nIGlzIGFzc3VtZWQgdG8gaGF2ZSB0
aGUgZm9sbG93aW5nIGVuY29kaW5nOgorLy8gICBVVEYtMTYgaWYgc2l6ZW9mKHdjaGFyX3QpID09
IDIgKG9uIFdpbmRvd3MsIEN5Z3dpbiwgU3ltYmlhbiBPUykKKy8vICAgVVRGLTMyIGlmIHNpemVv
Zih3Y2hhcl90KSA9PSA0IChvbiBMaW51eCkKKy8vIFBhcmFtZXRlciBzdHIgcG9pbnRzIHRvIGEg
bnVsbC10ZXJtaW5hdGVkIHdpZGUgc3RyaW5nLgorLy8gUGFyYW1ldGVyIG51bV9jaGFycyBtYXkg
YWRkaXRpb25hbGx5IGxpbWl0IHRoZSBudW1iZXIKKy8vIG9mIHdjaGFyX3QgY2hhcmFjdGVycyBw
cm9jZXNzZWQuIC0xIGlzIHVzZWQgd2hlbiB0aGUgZW50aXJlIHN0cmluZworLy8gc2hvdWxkIGJl
IHByb2Nlc3NlZC4KKy8vIElmIHRoZSBzdHJpbmcgY29udGFpbnMgY29kZSBwb2ludHMgdGhhdCBh
cmUgbm90IHZhbGlkIFVuaWNvZGUgY29kZSBwb2ludHMKKy8vIChpLmUuIG91dHNpZGUgb2YgVW5p
Y29kZSByYW5nZSBVKzAgdG8gVSsxMEZGRkYpIHRoZXkgd2lsbCBiZSBvdXRwdXQKKy8vIGFzICco
SW52YWxpZCBVbmljb2RlIDB4WFhYWFhYWFgpJy4gSWYgdGhlIHN0cmluZyBpcyBpbiBVVEYxNiBl
bmNvZGluZworLy8gYW5kIGNvbnRhaW5zIGludmFsaWQgVVRGLTE2IHN1cnJvZ2F0ZSBwYWlycywg
dmFsdWVzIGluIHRob3NlIHBhaXJzCisvLyB3aWxsIGJlIGVuY29kZWQgYXMgaW5kaXZpZHVhbCBV
bmljb2RlIGNoYXJhY3RlcnMgZnJvbSBCYXNpYyBOb3JtYWwgUGxhbmUuCitHVEVTVF9BUElfIHN0
ZDo6c3RyaW5nIFdpZGVTdHJpbmdUb1V0ZjgoY29uc3Qgd2NoYXJfdCogc3RyLCBpbnQgbnVtX2No
YXJzKTsKKworLy8gUmVhZHMgdGhlIEdURVNUX1NIQVJEX1NUQVRVU19GSUxFIGVudmlyb25tZW50
IHZhcmlhYmxlLCBhbmQgY3JlYXRlcyB0aGUgZmlsZQorLy8gaWYgdGhlIHZhcmlhYmxlIGlzIHBy
ZXNlbnQuIElmIGEgZmlsZSBhbHJlYWR5IGV4aXN0cyBhdCB0aGlzIGxvY2F0aW9uLCB0aGlzCisv
LyBmdW5jdGlvbiB3aWxsIHdyaXRlIG92ZXIgaXQuIElmIHRoZSB2YXJpYWJsZSBpcyBwcmVzZW50
LCBidXQgdGhlIGZpbGUgY2Fubm90CisvLyBiZSBjcmVhdGVkLCBwcmludHMgYW4gZXJyb3IgYW5k
IGV4aXRzLgordm9pZCBXcml0ZVRvU2hhcmRTdGF0dXNGaWxlSWZOZWVkZWQoKTsKKworLy8gQ2hl
Y2tzIHdoZXRoZXIgc2hhcmRpbmcgaXMgZW5hYmxlZCBieSBleGFtaW5pbmcgdGhlIHJlbGV2YW50
CisvLyBlbnZpcm9ubWVudCB2YXJpYWJsZSB2YWx1ZXMuIElmIHRoZSB2YXJpYWJsZXMgYXJlIHBy
ZXNlbnQsCisvLyBidXQgaW5jb25zaXN0ZW50IChlLmcuLCBzaGFyZF9pbmRleCA+PSB0b3RhbF9z
aGFyZHMpLCBwcmludHMKKy8vIGFuIGVycm9yIGFuZCBleGl0cy4gSWYgaW5fc3VicHJvY2Vzc19m
b3JfZGVhdGhfdGVzdCwgc2hhcmRpbmcgaXMKKy8vIGRpc2FibGVkIGJlY2F1c2UgaXQgbXVzdCBv
bmx5IGJlIGFwcGxpZWQgdG8gdGhlIG9yaWdpbmFsIHRlc3QKKy8vIHByb2Nlc3MuIE90aGVyd2lz
ZSwgd2UgY291bGQgZmlsdGVyIG91dCBkZWF0aCB0ZXN0cyB3ZSBpbnRlbmRlZCB0byBleGVjdXRl
LgorR1RFU1RfQVBJXyBib29sIFNob3VsZFNoYXJkKGNvbnN0IGNoYXIqIHRvdGFsX3NoYXJkc19z
dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogc2hhcmRfaW5kZXhf
c3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaW5fc3VicHJvY2Vzc19mb3Jf
ZGVhdGhfdGVzdCk7CisKKy8vIFBhcnNlcyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgdmFyIGFz
IGFuIEludDMyLiBJZiBpdCBpcyB1bnNldCwKKy8vIHJldHVybnMgZGVmYXVsdF92YWwuIElmIGl0
IGlzIG5vdCBhbiBJbnQzMiwgcHJpbnRzIGFuIGVycm9yIGFuZAorLy8gYW5kIGFib3J0cy4KK0dU
RVNUX0FQSV8gSW50MzIgSW50MzJGcm9tRW52T3JEaWUoY29uc3QgY2hhciogZW52X3ZhciwgSW50
MzIgZGVmYXVsdF92YWwpOworCisvLyBHaXZlbiB0aGUgdG90YWwgbnVtYmVyIG9mIHNoYXJkcywg
dGhlIHNoYXJkIGluZGV4LCBhbmQgdGhlIHRlc3QgaWQsCisvLyByZXR1cm5zIHRydWUgaWZmIHRo
ZSB0ZXN0IHNob3VsZCBiZSBydW4gb24gdGhpcyBzaGFyZC4gVGhlIHRlc3QgaWQgaXMKKy8vIHNv
bWUgYXJiaXRyYXJ5IGJ1dCB1bmlxdWUgbm9uLW5lZ2F0aXZlIGludGVnZXIgYXNzaWduZWQgdG8g
ZWFjaCB0ZXN0CisvLyBtZXRob2QuIEFzc3VtZXMgdGhhdCAwIDw9IHNoYXJkX2luZGV4IDwgdG90
YWxfc2hhcmRzLgorR1RFU1RfQVBJXyBib29sIFNob3VsZFJ1blRlc3RPblNoYXJkKAorICAgIGlu
dCB0b3RhbF9zaGFyZHMsIGludCBzaGFyZF9pbmRleCwgaW50IHRlc3RfaWQpOworCisvLyBTVEwg
Y29udGFpbmVyIHV0aWxpdGllcy4KKworLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRz
IGluIHRoZSBnaXZlbiBjb250YWluZXIgdGhhdCBzYXRpc2Z5CisvLyB0aGUgZ2l2ZW4gcHJlZGlj
YXRlLgordGVtcGxhdGUgPGNsYXNzIENvbnRhaW5lciwgdHlwZW5hbWUgUHJlZGljYXRlPgoraW5s
aW5lIGludCBDb3VudElmKGNvbnN0IENvbnRhaW5lciYgYywgUHJlZGljYXRlIHByZWRpY2F0ZSkg
eworICAvLyBJbXBsZW1lbnRlZCBhcyBhbiBleHBsaWNpdCBsb29wIHNpbmNlIHN0ZDo6Y291bnRf
aWYoKSBpbiBsaWJDc3RkIG9uCisgIC8vIFNvbGFyaXMgaGFzIGEgbm9uLXN0YW5kYXJkIHNpZ25h
dHVyZS4KKyAgaW50IGNvdW50ID0gMDsKKyAgZm9yICh0eXBlbmFtZSBDb250YWluZXI6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gYy5iZWdpbigpOyBpdCAhPSBjLmVuZCgpOyArK2l0KSB7CisgICAgaWYg
KHByZWRpY2F0ZSgqaXQpKQorICAgICAgKytjb3VudDsKKyAgfQorICByZXR1cm4gY291bnQ7Cit9
CisKKy8vIEFwcGxpZXMgYSBmdW5jdGlvbi9mdW5jdG9yIHRvIGVhY2ggZWxlbWVudCBpbiB0aGUg
Y29udGFpbmVyLgordGVtcGxhdGUgPGNsYXNzIENvbnRhaW5lciwgdHlwZW5hbWUgRnVuY3Rvcj4K
K3ZvaWQgRm9yRWFjaChjb25zdCBDb250YWluZXImIGMsIEZ1bmN0b3IgZnVuY3RvcikgeworICBz
dGQ6OmZvcl9lYWNoKGMuYmVnaW4oKSwgYy5lbmQoKSwgZnVuY3Rvcik7Cit9CisKKy8vIFJldHVy
bnMgdGhlIGktdGggZWxlbWVudCBvZiB0aGUgdmVjdG9yLCBvciBkZWZhdWx0X3ZhbHVlIGlmIGkg
aXMgbm90CisvLyBpbiByYW5nZSBbMCwgdi5zaXplKCkpLgordGVtcGxhdGUgPHR5cGVuYW1lIEU+
CitpbmxpbmUgRSBHZXRFbGVtZW50T3IoY29uc3Qgc3RkOjp2ZWN0b3I8RT4mIHYsIGludCBpLCBF
IGRlZmF1bHRfdmFsdWUpIHsKKyAgcmV0dXJuIChpIDwgMCB8fCBpID49IHN0YXRpY19jYXN0PGlu
dD4odi5zaXplKCkpKSA/IGRlZmF1bHRfdmFsdWUgOiB2W2ldOworfQorCisvLyBQZXJmb3JtcyBh
biBpbi1wbGFjZSBzaHVmZmxlIG9mIGEgcmFuZ2Ugb2YgdGhlIHZlY3RvcidzIGVsZW1lbnRzLgor
Ly8gJ2JlZ2luJyBhbmQgJ2VuZCcgYXJlIGVsZW1lbnQgaW5kaWNlcyBhcyBhbiBTVEwtc3R5bGUg
cmFuZ2U7CisvLyBpLmUuIFtiZWdpbiwgZW5kKSBhcmUgc2h1ZmZsZWQsIHdoZXJlICdlbmQnID09
IHNpemUoKSBtZWFucyB0bworLy8gc2h1ZmZsZSB0byB0aGUgZW5kIG9mIHRoZSB2ZWN0b3IuCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgRT4KK3ZvaWQgU2h1ZmZsZVJhbmdlKGludGVybmFsOjpSYW5kb20q
IHJhbmRvbSwgaW50IGJlZ2luLCBpbnQgZW5kLAorICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0
b3I8RT4qIHYpIHsKKyAgY29uc3QgaW50IHNpemUgPSBzdGF0aWNfY2FzdDxpbnQ+KHYtPnNpemUo
KSk7CisgIEdURVNUX0NIRUNLXygwIDw9IGJlZ2luICYmIGJlZ2luIDw9IHNpemUpCisgICAgICA8
PCAiSW52YWxpZCBzaHVmZmxlIHJhbmdlIHN0YXJ0ICIgPDwgYmVnaW4gPDwgIjogbXVzdCBiZSBp
biByYW5nZSBbMCwgIgorICAgICAgPDwgc2l6ZSA8PCAiXS4iOworICBHVEVTVF9DSEVDS18oYmVn
aW4gPD0gZW5kICYmIGVuZCA8PSBzaXplKQorICAgICAgPDwgIkludmFsaWQgc2h1ZmZsZSByYW5n
ZSBmaW5pc2ggIiA8PCBlbmQgPDwgIjogbXVzdCBiZSBpbiByYW5nZSBbIgorICAgICAgPDwgYmVn
aW4gPDwgIiwgIiA8PCBzaXplIDw8ICJdLiI7CisKKyAgLy8gRmlzaGVyLVlhdGVzIHNodWZmbGUs
IGZyb20KKyAgLy8gaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GaXNoZXItWWF0ZXNfc2h1
ZmZsZQorICBmb3IgKGludCByYW5nZV93aWR0aCA9IGVuZCAtIGJlZ2luOyByYW5nZV93aWR0aCA+
PSAyOyByYW5nZV93aWR0aC0tKSB7CisgICAgY29uc3QgaW50IGxhc3RfaW5fcmFuZ2UgPSBiZWdp
biArIHJhbmdlX3dpZHRoIC0gMTsKKyAgICBjb25zdCBpbnQgc2VsZWN0ZWQgPSBiZWdpbiArIHJh
bmRvbS0+R2VuZXJhdGUocmFuZ2Vfd2lkdGgpOworICAgIHN0ZDo6c3dhcCgoKnYpW3NlbGVjdGVk
XSwgKCp2KVtsYXN0X2luX3JhbmdlXSk7CisgIH0KK30KKworLy8gUGVyZm9ybXMgYW4gaW4tcGxh
Y2Ugc2h1ZmZsZSBvZiB0aGUgdmVjdG9yJ3MgZWxlbWVudHMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
RT4KK2lubGluZSB2b2lkIFNodWZmbGUoaW50ZXJuYWw6OlJhbmRvbSogcmFuZG9tLCBzdGQ6OnZl
Y3RvcjxFPiogdikgeworICBTaHVmZmxlUmFuZ2UocmFuZG9tLCAwLCBzdGF0aWNfY2FzdDxpbnQ+
KHYtPnNpemUoKSksIHYpOworfQorCisvLyBBIGZ1bmN0aW9uIGZvciBkZWxldGluZyBhbiBvYmpl
Y3QuICBIYW5keSBmb3IgYmVpbmcgdXNlZCBhcyBhCisvLyBmdW5jdG9yLgordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CitzdGF0aWMgdm9pZCBEZWxldGUoVCogeCkgeworICBkZWxldGUgeDsKK30KKwor
Ly8gQSBwcmVkaWNhdGUgdGhhdCBjaGVja3MgdGhlIGtleSBvZiBhIFRlc3RQcm9wZXJ0eSBhZ2Fp
bnN0IGEga25vd24ga2V5LgorLy8KKy8vIFRlc3RQcm9wZXJ0eUtleUlzIGlzIGNvcHlhYmxlLgor
Y2xhc3MgVGVzdFByb3BlcnR5S2V5SXMgeworIHB1YmxpYzoKKyAgLy8gQ29uc3RydWN0b3IuCisg
IC8vCisgIC8vIFRlc3RQcm9wZXJ0eUtleUlzIGhhcyBOTyBkZWZhdWx0IGNvbnN0cnVjdG9yLgor
ICBleHBsaWNpdCBUZXN0UHJvcGVydHlLZXlJcyhjb25zdCBzdGQ6OnN0cmluZyYga2V5KSA6IGtl
eV8oa2V5KSB7fQorCisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHRlc3QgbmFtZSBvZiB0ZXN0
IHByb3BlcnR5IG1hdGNoZXMgb24ga2V5Xy4KKyAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IFRlc3RQ
cm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSkgY29uc3QgeworICAgIHJldHVybiB0ZXN0X3Byb3BlcnR5
LmtleSgpID09IGtleV87CisgIH0KKworIHByaXZhdGU6CisgIHN0ZDo6c3RyaW5nIGtleV87Cit9
OworCisvLyBDbGFzcyBVbml0VGVzdE9wdGlvbnMuCisvLworLy8gVGhpcyBjbGFzcyBjb250YWlu
cyBmdW5jdGlvbnMgZm9yIHByb2Nlc3Npbmcgb3B0aW9ucyB0aGUgdXNlcgorLy8gc3BlY2lmaWVz
IHdoZW4gcnVubmluZyB0aGUgdGVzdHMuICBJdCBoYXMgb25seSBzdGF0aWMgbWVtYmVycy4KKy8v
CisvLyBJbiBtb3N0IGNhc2VzLCB0aGUgdXNlciBjYW4gc3BlY2lmeSBhbiBvcHRpb24gdXNpbmcg
ZWl0aGVyIGFuCisvLyBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciBhIGNvbW1hbmQgbGluZSBmbGFn
LiAgRS5nLiB5b3UgY2FuIHNldCB0aGUKKy8vIHRlc3QgZmlsdGVyIHVzaW5nIGVpdGhlciBHVEVT
VF9GSUxURVIgb3IgLS1ndGVzdF9maWx0ZXIuICBJZiBib3RoCisvLyB0aGUgdmFyaWFibGUgYW5k
IHRoZSBmbGFnIGFyZSBwcmVzZW50LCB0aGUgbGF0dGVyIG92ZXJyaWRlcyB0aGUKKy8vIGZvcm1l
ci4KK2NsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3RPcHRpb25zIHsKKyBwdWJsaWM6CisgIC8vIEZ1
bmN0aW9ucyBmb3IgcHJvY2Vzc2luZyB0aGUgZ3Rlc3Rfb3V0cHV0IGZsYWcuCisKKyAgLy8gUmV0
dXJucyB0aGUgb3V0cHV0IGZvcm1hdCwgb3IgIiIgZm9yIG5vcm1hbCBwcmludGVkIG91dHB1dC4K
KyAgc3RhdGljIHN0ZDo6c3RyaW5nIEdldE91dHB1dEZvcm1hdCgpOworCisgIC8vIFJldHVybnMg
dGhlIGFic29sdXRlIHBhdGggb2YgdGhlIHJlcXVlc3RlZCBvdXRwdXQgZmlsZSwgb3IgdGhlCisg
IC8vIGRlZmF1bHQgKHRlc3RfZGV0YWlsLnhtbCBpbiB0aGUgb3JpZ2luYWwgd29ya2luZyBkaXJl
Y3RvcnkpIGlmCisgIC8vIG5vbmUgd2FzIGV4cGxpY2l0bHkgc3BlY2lmaWVkLgorICBzdGF0aWMg
c3RkOjpzdHJpbmcgR2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCk7CisKKyAgLy8gRnVuY3Rp
b25zIGZvciBwcm9jZXNzaW5nIHRoZSBndGVzdF9maWx0ZXIgZmxhZy4KKworICAvLyBSZXR1cm5z
IHRydWUgaWZmIHRoZSB3aWxkY2FyZCBwYXR0ZXJuIG1hdGNoZXMgdGhlIHN0cmluZy4gIFRoZQor
ICAvLyBmaXJzdCAnOicgb3IgJ1wwJyBjaGFyYWN0ZXIgaW4gcGF0dGVybiBtYXJrcyB0aGUgZW5k
IG9mIGl0LgorICAvLworICAvLyBUaGlzIHJlY3Vyc2l2ZSBhbGdvcml0aG0gaXNuJ3QgdmVyeSBl
ZmZpY2llbnQsIGJ1dCBpcyBjbGVhciBhbmQKKyAgLy8gd29ya3Mgd2VsbCBlbm91Z2ggZm9yIG1h
dGNoaW5nIHRlc3QgbmFtZXMsIHdoaWNoIGFyZSBzaG9ydC4KKyAgc3RhdGljIGJvb2wgUGF0dGVy
bk1hdGNoZXNTdHJpbmcoY29uc3QgY2hhciAqcGF0dGVybiwgY29uc3QgY2hhciAqc3RyKTsKKwor
ICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSB1c2VyLXNwZWNpZmllZCBmaWx0ZXIgbWF0Y2hlcyB0
aGUgdGVzdCBjYXNlCisgIC8vIG5hbWUgYW5kIHRoZSB0ZXN0IG5hbWUuCisgIHN0YXRpYyBib29s
IEZpbHRlck1hdGNoZXNUZXN0KGNvbnN0IHN0ZDo6c3RyaW5nICZ0ZXN0X2Nhc2VfbmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnRlc3RfbmFt
ZSk7CisKKyNpZiBHVEVTVF9PU19XSU5ET1dTCisgIC8vIEZ1bmN0aW9uIGZvciBzdXBwb3J0aW5n
IHRoZSBndGVzdF9jYXRjaF9leGNlcHRpb24gZmxhZy4KKworICAvLyBSZXR1cm5zIEVYQ0VQVElP
Tl9FWEVDVVRFX0hBTkRMRVIgaWYgR29vZ2xlIFRlc3Qgc2hvdWxkIGhhbmRsZSB0aGUKKyAgLy8g
Z2l2ZW4gU0VIIGV4Y2VwdGlvbiwgb3IgRVhDRVBUSU9OX0NPTlRJTlVFX1NFQVJDSCBvdGhlcndp
c2UuCisgIC8vIFRoaXMgZnVuY3Rpb24gaXMgdXNlZnVsIGFzIGFuIF9fZXhjZXB0IGNvbmRpdGlv
bi4KKyAgc3RhdGljIGludCBHVGVzdFNob3VsZFByb2Nlc3NTRUgoRFdPUkQgZXhjZXB0aW9uX2Nv
ZGUpOworI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisKKyAgLy8gUmV0dXJucyB0cnVlIGlm
ICJuYW1lIiBtYXRjaGVzIHRoZSAnOicgc2VwYXJhdGVkIGxpc3Qgb2YgZ2xvYi1zdHlsZQorICAv
LyBmaWx0ZXJzIGluICJmaWx0ZXIiLgorICBzdGF0aWMgYm9vbCBNYXRjaGVzRmlsdGVyKGNvbnN0
IHN0ZDo6c3RyaW5nJiBuYW1lLCBjb25zdCBjaGFyKiBmaWx0ZXIpOworfTsKKworLy8gUmV0dXJu
cyB0aGUgY3VycmVudCBhcHBsaWNhdGlvbidzIG5hbWUsIHJlbW92aW5nIGRpcmVjdG9yeSBwYXRo
IGlmIHRoYXQKKy8vIGlzIHByZXNlbnQuICBVc2VkIGJ5IFVuaXRUZXN0T3B0aW9uczo6R2V0T3V0
cHV0RmlsZS4KK0dURVNUX0FQSV8gRmlsZVBhdGggR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCk7
CisKKy8vIFRoZSByb2xlIGludGVyZmFjZSBmb3IgZ2V0dGluZyB0aGUgT1Mgc3RhY2sgdHJhY2Ug
YXMgYSBzdHJpbmcuCitjbGFzcyBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2UgeworIHB1Ymxp
YzoKKyAgT3NTdGFja1RyYWNlR2V0dGVySW50ZXJmYWNlKCkge30KKyAgdmlydHVhbCB+T3NTdGFj
a1RyYWNlR2V0dGVySW50ZXJmYWNlKCkge30KKworICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IE9T
IHN0YWNrIHRyYWNlIGFzIGFuIHN0ZDo6c3RyaW5nLiAgUGFyYW1ldGVyczoKKyAgLy8KKyAgLy8g
ICBtYXhfZGVwdGggIC0gdGhlIG1heGltdW0gbnVtYmVyIG9mIHN0YWNrIGZyYW1lcyB0byBiZSBp
bmNsdWRlZAorICAvLyAgICAgICAgICAgICAgICBpbiB0aGUgdHJhY2UuCisgIC8vICAgc2tpcF9j
b3VudCAtIHRoZSBudW1iZXIgb2YgdG9wIGZyYW1lcyB0byBiZSBza2lwcGVkOyBkb2Vzbid0IGNv
dW50CisgIC8vICAgICAgICAgICAgICAgIGFnYWluc3QgbWF4X2RlcHRoLgorICB2aXJ0dWFsIHN0
ZDo6c3RyaW5nIEN1cnJlbnRTdGFja1RyYWNlKGludCBtYXhfZGVwdGgsIGludCBza2lwX2NvdW50
KSA9IDA7CisKKyAgLy8gVXBvbkxlYXZpbmdHVGVzdCgpIHNob3VsZCBiZSBjYWxsZWQgaW1tZWRp
YXRlbHkgYmVmb3JlIEdvb2dsZSBUZXN0IGNhbGxzCisgIC8vIHVzZXIgY29kZS4gSXQgc2F2ZXMg
c29tZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCBzdGFjayB0aGF0CisgIC8vIEN1cnJl
bnRTdGFja1RyYWNlKCkgd2lsbCB1c2UgdG8gZmluZCBhbmQgaGlkZSBHb29nbGUgVGVzdCBzdGFj
ayBmcmFtZXMuCisgIHZpcnR1YWwgdm9pZCBVcG9uTGVhdmluZ0dUZXN0KCkgPSAwOworCisgIC8v
IFRoaXMgc3RyaW5nIGlzIGluc2VydGVkIGluIHBsYWNlIG9mIHN0YWNrIGZyYW1lcyB0aGF0IGFy
ZSBwYXJ0IG9mCisgIC8vIEdvb2dsZSBUZXN0J3MgaW1wbGVtZW50YXRpb24uCisgIHN0YXRpYyBj
b25zdCBjaGFyKiBjb25zdCBrRWxpZGVkRnJhbWVzTWFya2VyOworCisgcHJpdmF0ZToKKyAgR1RF
U1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2Up
OworfTsKKworLy8gQSB3b3JraW5nIGltcGxlbWVudGF0aW9uIG9mIHRoZSBPc1N0YWNrVHJhY2VH
ZXR0ZXJJbnRlcmZhY2UgaW50ZXJmYWNlLgorY2xhc3MgT3NTdGFja1RyYWNlR2V0dGVyIDogcHVi
bGljIE9zU3RhY2tUcmFjZUdldHRlckludGVyZmFjZSB7CisgcHVibGljOgorICBPc1N0YWNrVHJh
Y2VHZXR0ZXIoKSB7fQorCisgIHZpcnR1YWwgc3RkOjpzdHJpbmcgQ3VycmVudFN0YWNrVHJhY2Uo
aW50IG1heF9kZXB0aCwgaW50IHNraXBfY291bnQpOworICB2aXJ0dWFsIHZvaWQgVXBvbkxlYXZp
bmdHVGVzdCgpOworCisgcHJpdmF0ZToKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdO
XyhPc1N0YWNrVHJhY2VHZXR0ZXIpOworfTsKKworLy8gSW5mb3JtYXRpb24gYWJvdXQgYSBHb29n
bGUgVGVzdCB0cmFjZSBwb2ludC4KK3N0cnVjdCBUcmFjZUluZm8geworICBjb25zdCBjaGFyKiBm
aWxlOworICBpbnQgbGluZTsKKyAgc3RkOjpzdHJpbmcgbWVzc2FnZTsKK307CisKKy8vIFRoaXMg
aXMgdGhlIGRlZmF1bHQgZ2xvYmFsIHRlc3QgcGFydCByZXN1bHQgcmVwb3J0ZXIgdXNlZCBpbiBV
bml0VGVzdEltcGwuCisvLyBUaGlzIGNsYXNzIHNob3VsZCBvbmx5IGJlIHVzZWQgYnkgVW5pdFRl
c3RJbXBsLgorY2xhc3MgRGVmYXVsdEdsb2JhbFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIKKyAgOiBw
dWJsaWMgVGVzdFBhcnRSZXN1bHRSZXBvcnRlckludGVyZmFjZSB7CisgcHVibGljOgorICBleHBs
aWNpdCBEZWZhdWx0R2xvYmFsVGVzdFBhcnRSZXN1bHRSZXBvcnRlcihVbml0VGVzdEltcGwqIHVu
aXRfdGVzdCk7CisgIC8vIEltcGxlbWVudHMgdGhlIFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJJbnRl
cmZhY2UuIFJlcG9ydHMgdGhlIHRlc3QgcGFydAorICAvLyByZXN1bHQgaW4gdGhlIGN1cnJlbnQg
dGVzdC4KKyAgdmlydHVhbCB2b2lkIFJlcG9ydFRlc3RQYXJ0UmVzdWx0KGNvbnN0IFRlc3RQYXJ0
UmVzdWx0JiByZXN1bHQpOworCisgcHJpdmF0ZToKKyAgVW5pdFRlc3RJbXBsKiBjb25zdCB1bml0
X3Rlc3RfOworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oRGVmYXVsdEdsb2Jh
bFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIpOworfTsKKworLy8gVGhpcyBpcyB0aGUgZGVmYXVsdCBw
ZXIgdGhyZWFkIHRlc3QgcGFydCByZXN1bHQgcmVwb3J0ZXIgdXNlZCBpbgorLy8gVW5pdFRlc3RJ
bXBsLiBUaGlzIGNsYXNzIHNob3VsZCBvbmx5IGJlIHVzZWQgYnkgVW5pdFRlc3RJbXBsLgorY2xh
c3MgRGVmYXVsdFBlclRocmVhZFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIKKyAgICA6IHB1YmxpYyBU
ZXN0UGFydFJlc3VsdFJlcG9ydGVySW50ZXJmYWNlIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IERl
ZmF1bHRQZXJUaHJlYWRUZXN0UGFydFJlc3VsdFJlcG9ydGVyKFVuaXRUZXN0SW1wbCogdW5pdF90
ZXN0KTsKKyAgLy8gSW1wbGVtZW50cyB0aGUgVGVzdFBhcnRSZXN1bHRSZXBvcnRlckludGVyZmFj
ZS4gVGhlIGltcGxlbWVudGF0aW9uIGp1c3QKKyAgLy8gZGVsZWdhdGVzIHRvIHRoZSBjdXJyZW50
IGdsb2JhbCB0ZXN0IHBhcnQgcmVzdWx0IHJlcG9ydGVyIG9mICp1bml0X3Rlc3RfLgorICB2aXJ0
dWFsIHZvaWQgUmVwb3J0VGVzdFBhcnRSZXN1bHQoY29uc3QgVGVzdFBhcnRSZXN1bHQmIHJlc3Vs
dCk7CisKKyBwcml2YXRlOgorICBVbml0VGVzdEltcGwqIGNvbnN0IHVuaXRfdGVzdF87CisKKyAg
R1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhEZWZhdWx0UGVyVGhyZWFkVGVzdFBhcnRS
ZXN1bHRSZXBvcnRlcik7Cit9OworCisvLyBUaGUgcHJpdmF0ZSBpbXBsZW1lbnRhdGlvbiBvZiB0
aGUgVW5pdFRlc3QgY2xhc3MuICBXZSBkb24ndCBwcm90ZWN0CisvLyB0aGUgbWV0aG9kcyB1bmRl
ciBhIG11dGV4LCBhcyB0aGlzIGNsYXNzIGlzIG5vdCBhY2Nlc3NpYmxlIGJ5IGEKKy8vIHVzZXIg
YW5kIHRoZSBVbml0VGVzdCBjbGFzcyB0aGF0IGRlbGVnYXRlcyB3b3JrIHRvIHRoaXMgY2xhc3Mg
ZG9lcworLy8gcHJvcGVyIGxvY2tpbmcuCitjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0SW1wbCB7
CisgcHVibGljOgorICBleHBsaWNpdCBVbml0VGVzdEltcGwoVW5pdFRlc3QqIHBhcmVudCk7Cisg
IHZpcnR1YWwgflVuaXRUZXN0SW1wbCgpOworCisgIC8vIFRoZXJlIGFyZSB0d28gZGlmZmVyZW50
IHdheXMgdG8gcmVnaXN0ZXIgeW91ciBvd24gVGVzdFBhcnRSZXN1bHRSZXBvcnRlci4KKyAgLy8g
WW91IGNhbiByZWdpc3RlciB5b3VyIG93biByZXBvdGVyIHRvIGxpc3RlbiBlaXRoZXIgb25seSBm
b3IgdGVzdCByZXN1bHRzCisgIC8vIGZyb20gdGhlIGN1cnJlbnQgdGhyZWFkIG9yIGZvciByZXN1
bHRzIGZyb20gYWxsIHRocmVhZHMuCisgIC8vIEJ5IGRlZmF1bHQsIGVhY2ggcGVyLXRocmVhZCB0
ZXN0IHJlc3VsdCByZXBvdGVyIGp1c3QgcGFzc2VzIGEgbmV3CisgIC8vIFRlc3RQYXJ0UmVzdWx0
IHRvIHRoZSBnbG9iYWwgdGVzdCByZXN1bHQgcmVwb3J0ZXIsIHdoaWNoIHJlZ2lzdGVycyB0aGUK
KyAgLy8gdGVzdCBwYXJ0IHJlc3VsdCBmb3IgdGhlIGN1cnJlbnRseSBydW5uaW5nIHRlc3QuCisK
KyAgLy8gUmV0dXJucyB0aGUgZ2xvYmFsIHRlc3QgcGFydCByZXN1bHQgcmVwb3J0ZXIuCisgIFRl
c3RQYXJ0UmVzdWx0UmVwb3J0ZXJJbnRlcmZhY2UqIEdldEdsb2JhbFRlc3RQYXJ0UmVzdWx0UmVw
b3J0ZXIoKTsKKworICAvLyBTZXRzIHRoZSBnbG9iYWwgdGVzdCBwYXJ0IHJlc3VsdCByZXBvcnRl
ci4KKyAgdm9pZCBTZXRHbG9iYWxUZXN0UGFydFJlc3VsdFJlcG9ydGVyKAorICAgICAgVGVzdFBh
cnRSZXN1bHRSZXBvcnRlckludGVyZmFjZSogcmVwb3J0ZXIpOworCisgIC8vIFJldHVybnMgdGhl
IHRlc3QgcGFydCByZXN1bHQgcmVwb3J0ZXIgZm9yIHRoZSBjdXJyZW50IHRocmVhZC4KKyAgVGVz
dFBhcnRSZXN1bHRSZXBvcnRlckludGVyZmFjZSogR2V0VGVzdFBhcnRSZXN1bHRSZXBvcnRlckZv
ckN1cnJlbnRUaHJlYWQoKTsKKworICAvLyBTZXRzIHRoZSB0ZXN0IHBhcnQgcmVzdWx0IHJlcG9y
dGVyIGZvciB0aGUgY3VycmVudCB0aHJlYWQuCisgIHZvaWQgU2V0VGVzdFBhcnRSZXN1bHRSZXBv
cnRlckZvckN1cnJlbnRUaHJlYWQoCisgICAgICBUZXN0UGFydFJlc3VsdFJlcG9ydGVySW50ZXJm
YWNlKiByZXBvcnRlcik7CisKKyAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIHN1Y2Nlc3NmdWwgdGVz
dCBjYXNlcy4KKyAgaW50IHN1Y2Nlc3NmdWxfdGVzdF9jYXNlX2NvdW50KCkgY29uc3Q7CisKKyAg
Ly8gR2V0cyB0aGUgbnVtYmVyIG9mIGZhaWxlZCB0ZXN0IGNhc2VzLgorICBpbnQgZmFpbGVkX3Rl
c3RfY2FzZV9jb3VudCgpIGNvbnN0OworCisgIC8vIEdldHMgdGhlIG51bWJlciBvZiBhbGwgdGVz
dCBjYXNlcy4KKyAgaW50IHRvdGFsX3Rlc3RfY2FzZV9jb3VudCgpIGNvbnN0OworCisgIC8vIEdl
dHMgdGhlIG51bWJlciBvZiBhbGwgdGVzdCBjYXNlcyB0aGF0IGNvbnRhaW4gYXQgbGVhc3Qgb25l
IHRlc3QKKyAgLy8gdGhhdCBzaG91bGQgcnVuLgorICBpbnQgdGVzdF9jYXNlX3RvX3J1bl9jb3Vu
dCgpIGNvbnN0OworCisgIC8vIEdldHMgdGhlIG51bWJlciBvZiBzdWNjZXNzZnVsIHRlc3RzLgor
ICBpbnQgc3VjY2Vzc2Z1bF90ZXN0X2NvdW50KCkgY29uc3Q7CisKKyAgLy8gR2V0cyB0aGUgbnVt
YmVyIG9mIGZhaWxlZCB0ZXN0cy4KKyAgaW50IGZhaWxlZF90ZXN0X2NvdW50KCkgY29uc3Q7CisK
KyAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRlc3RzIHRoYXQgd2lsbCBiZSByZXBv
cnRlZCBpbiB0aGUgWE1MIHJlcG9ydC4KKyAgaW50IHJlcG9ydGFibGVfZGlzYWJsZWRfdGVzdF9j
b3VudCgpIGNvbnN0OworCisgIC8vIEdldHMgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0cy4K
KyAgaW50IGRpc2FibGVkX3Rlc3RfY291bnQoKSBjb25zdDsKKworICAvLyBHZXRzIHRoZSBudW1i
ZXIgb2YgdGVzdHMgdG8gYmUgcHJpbnRlZCBpbiB0aGUgWE1MIHJlcG9ydC4KKyAgaW50IHJlcG9y
dGFibGVfdGVzdF9jb3VudCgpIGNvbnN0OworCisgIC8vIEdldHMgdGhlIG51bWJlciBvZiBhbGwg
dGVzdHMuCisgIGludCB0b3RhbF90ZXN0X2NvdW50KCkgY29uc3Q7CisKKyAgLy8gR2V0cyB0aGUg
bnVtYmVyIG9mIHRlc3RzIHRoYXQgc2hvdWxkIHJ1bi4KKyAgaW50IHRlc3RfdG9fcnVuX2NvdW50
KCkgY29uc3Q7CisKKyAgLy8gR2V0cyB0aGUgdGltZSBvZiB0aGUgdGVzdCBwcm9ncmFtIHN0YXJ0
LCBpbiBtcyBmcm9tIHRoZSBzdGFydCBvZiB0aGUKKyAgLy8gVU5JWCBlcG9jaC4KKyAgVGltZUlu
TWlsbGlzIHN0YXJ0X3RpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIHN0YXJ0X3RpbWVzdGFtcF87
IH0KKworICAvLyBHZXRzIHRoZSBlbGFwc2VkIHRpbWUsIGluIG1pbGxpc2Vjb25kcy4KKyAgVGlt
ZUluTWlsbGlzIGVsYXBzZWRfdGltZSgpIGNvbnN0IHsgcmV0dXJuIGVsYXBzZWRfdGltZV87IH0K
KworICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSB1bml0IHRlc3QgcGFzc2VkIChpLmUuIGFsbCB0
ZXN0IGNhc2VzIHBhc3NlZCkuCisgIGJvb2wgUGFzc2VkKCkgY29uc3QgeyByZXR1cm4gIUZhaWxl
ZCgpOyB9CisKKyAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgdW5pdCB0ZXN0IGZhaWxlZCAoaS5l
LiBzb21lIHRlc3QgY2FzZSBmYWlsZWQKKyAgLy8gb3Igc29tZXRoaW5nIG91dHNpZGUgb2YgYWxs
IHRlc3RzIGZhaWxlZCkuCisgIGJvb2wgRmFpbGVkKCkgY29uc3QgeworICAgIHJldHVybiBmYWls
ZWRfdGVzdF9jYXNlX2NvdW50KCkgPiAwIHx8IGFkX2hvY190ZXN0X3Jlc3VsdCgpLT5GYWlsZWQo
KTsKKyAgfQorCisgIC8vIEdldHMgdGhlIGktdGggdGVzdCBjYXNlIGFtb25nIGFsbCB0aGUgdGVz
dCBjYXNlcy4gaSBjYW4gcmFuZ2UgZnJvbSAwIHRvCisgIC8vIHRvdGFsX3Rlc3RfY2FzZV9jb3Vu
dCgpIC0gMS4gSWYgaSBpcyBub3QgaW4gdGhhdCByYW5nZSwgcmV0dXJucyBOVUxMLgorICBjb25z
dCBUZXN0Q2FzZSogR2V0VGVzdENhc2UoaW50IGkpIGNvbnN0IHsKKyAgICBjb25zdCBpbnQgaW5k
ZXggPSBHZXRFbGVtZW50T3IodGVzdF9jYXNlX2luZGljZXNfLCBpLCAtMSk7CisgICAgcmV0dXJu
IGluZGV4IDwgMCA/IE5VTEwgOiB0ZXN0X2Nhc2VzX1tpXTsKKyAgfQorCisgIC8vIEdldHMgdGhl
IGktdGggdGVzdCBjYXNlIGFtb25nIGFsbCB0aGUgdGVzdCBjYXNlcy4gaSBjYW4gcmFuZ2UgZnJv
bSAwIHRvCisgIC8vIHRvdGFsX3Rlc3RfY2FzZV9jb3VudCgpIC0gMS4gSWYgaSBpcyBub3QgaW4g
dGhhdCByYW5nZSwgcmV0dXJucyBOVUxMLgorICBUZXN0Q2FzZSogR2V0TXV0YWJsZVRlc3RDYXNl
KGludCBpKSB7CisgICAgY29uc3QgaW50IGluZGV4ID0gR2V0RWxlbWVudE9yKHRlc3RfY2FzZV9p
bmRpY2VzXywgaSwgLTEpOworICAgIHJldHVybiBpbmRleCA8IDAgPyBOVUxMIDogdGVzdF9jYXNl
c19baW5kZXhdOworICB9CisKKyAgLy8gUHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBldmVudCBsaXN0
ZW5lciBsaXN0LgorICBUZXN0RXZlbnRMaXN0ZW5lcnMqIGxpc3RlbmVycygpIHsgcmV0dXJuICZs
aXN0ZW5lcnNfOyB9CisKKyAgLy8gUmV0dXJucyB0aGUgVGVzdFJlc3VsdCBmb3IgdGhlIHRlc3Qg
dGhhdCdzIGN1cnJlbnRseSBydW5uaW5nLCBvcgorICAvLyB0aGUgVGVzdFJlc3VsdCBmb3IgdGhl
IGFkIGhvYyB0ZXN0IGlmIG5vIHRlc3QgaXMgcnVubmluZy4KKyAgVGVzdFJlc3VsdCogY3VycmVu
dF90ZXN0X3Jlc3VsdCgpOworCisgIC8vIFJldHVybnMgdGhlIFRlc3RSZXN1bHQgZm9yIHRoZSBh
ZCBob2MgdGVzdC4KKyAgY29uc3QgVGVzdFJlc3VsdCogYWRfaG9jX3Rlc3RfcmVzdWx0KCkgY29u
c3QgeyByZXR1cm4gJmFkX2hvY190ZXN0X3Jlc3VsdF87IH0KKworICAvLyBTZXRzIHRoZSBPUyBz
dGFjayB0cmFjZSBnZXR0ZXIuCisgIC8vCisgIC8vIERvZXMgbm90aGluZyBpZiB0aGUgaW5wdXQg
YW5kIHRoZSBjdXJyZW50IE9TIHN0YWNrIHRyYWNlIGdldHRlcgorICAvLyBhcmUgdGhlIHNhbWU7
IG90aGVyd2lzZSwgZGVsZXRlcyB0aGUgb2xkIGdldHRlciBhbmQgbWFrZXMgdGhlCisgIC8vIGlu
cHV0IHRoZSBjdXJyZW50IGdldHRlci4KKyAgdm9pZCBzZXRfb3Nfc3RhY2tfdHJhY2VfZ2V0dGVy
KE9zU3RhY2tUcmFjZUdldHRlckludGVyZmFjZSogZ2V0dGVyKTsKKworICAvLyBSZXR1cm5zIHRo
ZSBjdXJyZW50IE9TIHN0YWNrIHRyYWNlIGdldHRlciBpZiBpdCBpcyBub3QgTlVMTDsKKyAgLy8g
b3RoZXJ3aXNlLCBjcmVhdGVzIGFuIE9zU3RhY2tUcmFjZUdldHRlciwgbWFrZXMgaXQgdGhlIGN1
cnJlbnQKKyAgLy8gZ2V0dGVyLCBhbmQgcmV0dXJucyBpdC4KKyAgT3NTdGFja1RyYWNlR2V0dGVy
SW50ZXJmYWNlKiBvc19zdGFja190cmFjZV9nZXR0ZXIoKTsKKworICAvLyBSZXR1cm5zIHRoZSBj
dXJyZW50IE9TIHN0YWNrIHRyYWNlIGFzIGFuIHN0ZDo6c3RyaW5nLgorICAvLworICAvLyBUaGUg
bWF4aW11bSBudW1iZXIgb2Ygc3RhY2sgZnJhbWVzIHRvIGJlIGluY2x1ZGVkIGlzIHNwZWNpZmll
ZCBieQorICAvLyB0aGUgZ3Rlc3Rfc3RhY2tfdHJhY2VfZGVwdGggZmxhZy4gIFRoZSBza2lwX2Nv
dW50IHBhcmFtZXRlcgorICAvLyBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiB0b3AgZnJhbWVzIHRv
IGJlIHNraXBwZWQsIHdoaWNoIGRvZXNuJ3QKKyAgLy8gY291bnQgYWdhaW5zdCB0aGUgbnVtYmVy
IG9mIGZyYW1lcyB0byBiZSBpbmNsdWRlZC4KKyAgLy8KKyAgLy8gRm9yIGV4YW1wbGUsIGlmIEZv
bygpIGNhbGxzIEJhcigpLCB3aGljaCBpbiB0dXJuIGNhbGxzCisgIC8vIEN1cnJlbnRPc1N0YWNr
VHJhY2VFeGNlcHRUb3AoMSksIEZvbygpIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlCisgIC8vIHRy
YWNlIGJ1dCBCYXIoKSBhbmQgQ3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcCgpIHdvbid0Lgor
ICBzdGQ6OnN0cmluZyBDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKGludCBza2lwX2NvdW50
KSBHVEVTVF9OT19JTkxJTkVfOworCisgIC8vIEZpbmRzIGFuZCByZXR1cm5zIGEgVGVzdENhc2Ug
d2l0aCB0aGUgZ2l2ZW4gbmFtZS4gIElmIG9uZSBkb2Vzbid0CisgIC8vIGV4aXN0LCBjcmVhdGVz
IG9uZSBhbmQgcmV0dXJucyBpdC4KKyAgLy8KKyAgLy8gQXJndW1lbnRzOgorICAvLworICAvLyAg
IHRlc3RfY2FzZV9uYW1lOiBuYW1lIG9mIHRoZSB0ZXN0IGNhc2UKKyAgLy8gICB0eXBlX3BhcmFt
OiAgICAgdGhlIG5hbWUgb2YgdGhlIHRlc3QncyB0eXBlIHBhcmFtZXRlciwgb3IgTlVMTCBpZgor
ICAvLyAgICAgICAgICAgICAgICAgICB0aGlzIGlzIG5vdCBhIHR5cGVkIG9yIGEgdHlwZS1wYXJh
bWV0ZXJpemVkIHRlc3QuCisgIC8vICAgc2V0X3VwX3RjOiAgICAgIHBvaW50ZXIgdG8gdGhlIGZ1
bmN0aW9uIHRoYXQgc2V0cyB1cCB0aGUgdGVzdCBjYXNlCisgIC8vICAgdGVhcl9kb3duX3RjOiAg
IHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgdGVhcnMgZG93biB0aGUgdGVzdCBjYXNlCisg
IFRlc3RDYXNlKiBHZXRUZXN0Q2FzZShjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHR5cGVfcGFyYW0sCisgICAgICAgICAgICAg
ICAgICAgICAgICBUZXN0OjpTZXRVcFRlc3RDYXNlRnVuYyBzZXRfdXBfdGMsCisgICAgICAgICAg
ICAgICAgICAgICAgICBUZXN0OjpUZWFyRG93blRlc3RDYXNlRnVuYyB0ZWFyX2Rvd25fdGMpOwor
CisgIC8vIEFkZHMgYSBUZXN0SW5mbyB0byB0aGUgdW5pdCB0ZXN0LgorICAvLworICAvLyBBcmd1
bWVudHM6CisgIC8vCisgIC8vICAgc2V0X3VwX3RjOiAgICBwb2ludGVyIHRvIHRoZSBmdW5jdGlv
biB0aGF0IHNldHMgdXAgdGhlIHRlc3QgY2FzZQorICAvLyAgIHRlYXJfZG93bl90YzogcG9pbnRl
ciB0byB0aGUgZnVuY3Rpb24gdGhhdCB0ZWFycyBkb3duIHRoZSB0ZXN0IGNhc2UKKyAgLy8gICB0
ZXN0X2luZm86ICAgIHRoZSBUZXN0SW5mbyBvYmplY3QKKyAgdm9pZCBBZGRUZXN0SW5mbyhUZXN0
OjpTZXRVcFRlc3RDYXNlRnVuYyBzZXRfdXBfdGMsCisgICAgICAgICAgICAgICAgICAgVGVzdDo6
VGVhckRvd25UZXN0Q2FzZUZ1bmMgdGVhcl9kb3duX3RjLAorICAgICAgICAgICAgICAgICAgIFRl
c3RJbmZvKiB0ZXN0X2luZm8pIHsKKyAgICAvLyBJbiBvcmRlciB0byBzdXBwb3J0IHRocmVhZC1z
YWZlIGRlYXRoIHRlc3RzLCB3ZSBuZWVkIHRvCisgICAgLy8gcmVtZW1iZXIgdGhlIG9yaWdpbmFs
IHdvcmtpbmcgZGlyZWN0b3J5IHdoZW4gdGhlIHRlc3QgcHJvZ3JhbQorICAgIC8vIHdhcyBmaXJz
dCBpbnZva2VkLiAgV2UgY2Fubm90IGRvIHRoaXMgaW4gUlVOX0FMTF9URVNUUygpLCBhcworICAg
IC8vIHRoZSB1c2VyIG1heSBoYXZlIGNoYW5nZWQgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGJlZm9y
ZSBjYWxsaW5nCisgICAgLy8gUlVOX0FMTF9URVNUUygpLiAgVGhlcmVmb3JlIHdlIGNhcHR1cmUg
dGhlIGN1cnJlbnQgZGlyZWN0b3J5IGluCisgICAgLy8gQWRkVGVzdEluZm8oKSwgd2hpY2ggaXMg
Y2FsbGVkIHRvIHJlZ2lzdGVyIGEgVEVTVCBvciBURVNUX0YKKyAgICAvLyBiZWZvcmUgbWFpbigp
IGlzIHJlYWNoZWQuCisgICAgaWYgKG9yaWdpbmFsX3dvcmtpbmdfZGlyXy5Jc0VtcHR5KCkpIHsK
KyAgICAgIG9yaWdpbmFsX3dvcmtpbmdfZGlyXy5TZXQoRmlsZVBhdGg6OkdldEN1cnJlbnREaXIo
KSk7CisgICAgICBHVEVTVF9DSEVDS18oIW9yaWdpbmFsX3dvcmtpbmdfZGlyXy5Jc0VtcHR5KCkp
CisgICAgICAgICAgPDwgIkZhaWxlZCB0byBnZXQgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rv
cnkuIjsKKyAgICB9CisKKyAgICBHZXRUZXN0Q2FzZSh0ZXN0X2luZm8tPnRlc3RfY2FzZV9uYW1l
KCksCisgICAgICAgICAgICAgICAgdGVzdF9pbmZvLT50eXBlX3BhcmFtKCksCisgICAgICAgICAg
ICAgICAgc2V0X3VwX3RjLAorICAgICAgICAgICAgICAgIHRlYXJfZG93bl90YyktPkFkZFRlc3RJ
bmZvKHRlc3RfaW5mbyk7CisgIH0KKworI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCisgIC8vIFJl
dHVybnMgUGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkgb2JqZWN0IHVzZWQgdG8ga2VlcCB0
cmFjayBvZgorICAvLyB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGFuZCBpbnN0YW50aWF0ZSBh
bmQgcmVnaXN0ZXIgdGhlbS4KKyAgaW50ZXJuYWw6OlBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lz
dHJ5JiBwYXJhbWV0ZXJpemVkX3Rlc3RfcmVnaXN0cnkoKSB7CisgICAgcmV0dXJuIHBhcmFtZXRl
cml6ZWRfdGVzdF9yZWdpc3RyeV87CisgIH0KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RF
U1QKKworICAvLyBTZXRzIHRoZSBUZXN0Q2FzZSBvYmplY3QgZm9yIHRoZSB0ZXN0IHRoYXQncyBj
dXJyZW50bHkgcnVubmluZy4KKyAgdm9pZCBzZXRfY3VycmVudF90ZXN0X2Nhc2UoVGVzdENhc2Uq
IGFfY3VycmVudF90ZXN0X2Nhc2UpIHsKKyAgICBjdXJyZW50X3Rlc3RfY2FzZV8gPSBhX2N1cnJl
bnRfdGVzdF9jYXNlOworICB9CisKKyAgLy8gU2V0cyB0aGUgVGVzdEluZm8gb2JqZWN0IGZvciB0
aGUgdGVzdCB0aGF0J3MgY3VycmVudGx5IHJ1bm5pbmcuICBJZgorICAvLyBjdXJyZW50X3Rlc3Rf
aW5mbyBpcyBOVUxMLCB0aGUgYXNzZXJ0aW9uIHJlc3VsdHMgd2lsbCBiZSBzdG9yZWQgaW4KKyAg
Ly8gYWRfaG9jX3Rlc3RfcmVzdWx0Xy4KKyAgdm9pZCBzZXRfY3VycmVudF90ZXN0X2luZm8oVGVz
dEluZm8qIGFfY3VycmVudF90ZXN0X2luZm8pIHsKKyAgICBjdXJyZW50X3Rlc3RfaW5mb18gPSBh
X2N1cnJlbnRfdGVzdF9pbmZvOworICB9CisKKyAgLy8gUmVnaXN0ZXJzIGFsbCBwYXJhbWV0ZXJp
emVkIHRlc3RzIGRlZmluZWQgdXNpbmcgVEVTVF9QIGFuZAorICAvLyBJTlNUQU5USUFURV9URVNU
X0NBU0VfUCwgY3JlYXRpbmcgcmVndWxhciB0ZXN0cyBmb3IgZWFjaCB0ZXN0L3BhcmFtZXRlcgor
ICAvLyBjb21iaW5hdGlvbi4gVGhpcyBtZXRob2QgY2FuIGJlIGNhbGxlZCBtb3JlIHRoZW4gb25j
ZTsgaXQgaGFzIGd1YXJkcworICAvLyBwcm90ZWN0aW5nIGZyb20gcmVnaXN0ZXJpbmcgdGhlIHRl
c3RzIG1vcmUgdGhlbiBvbmNlLiAgSWYKKyAgLy8gdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBh
cmUgZGlzYWJsZWQsIFJlZ2lzdGVyUGFyYW1ldGVyaXplZFRlc3RzIGlzCisgIC8vIHByZXNlbnQg
YnV0IGRvZXMgbm90aGluZy4KKyAgdm9pZCBSZWdpc3RlclBhcmFtZXRlcml6ZWRUZXN0cygpOwor
CisgIC8vIFJ1bnMgYWxsIHRlc3RzIGluIHRoaXMgVW5pdFRlc3Qgb2JqZWN0LCBwcmludHMgdGhl
IHJlc3VsdCwgYW5kCisgIC8vIHJldHVybnMgdHJ1ZSBpZiBhbGwgdGVzdHMgYXJlIHN1Y2Nlc3Nm
dWwuICBJZiBhbnkgZXhjZXB0aW9uIGlzCisgIC8vIHRocm93biBkdXJpbmcgYSB0ZXN0LCB0aGlz
IHRlc3QgaXMgY29uc2lkZXJlZCB0byBiZSBmYWlsZWQsIGJ1dAorICAvLyB0aGUgcmVzdCBvZiB0
aGUgdGVzdHMgd2lsbCBzdGlsbCBiZSBydW4uCisgIGJvb2wgUnVuQWxsVGVzdHMoKTsKKworICAv
LyBDbGVhcnMgdGhlIHJlc3VsdHMgb2YgYWxsIHRlc3RzLCBleGNlcHQgdGhlIGFkIGhvYyB0ZXN0
cy4KKyAgdm9pZCBDbGVhck5vbkFkSG9jVGVzdFJlc3VsdCgpIHsKKyAgICBGb3JFYWNoKHRlc3Rf
Y2FzZXNfLCBUZXN0Q2FzZTo6Q2xlYXJUZXN0Q2FzZVJlc3VsdCk7CisgIH0KKworICAvLyBDbGVh
cnMgdGhlIHJlc3VsdHMgb2YgYWQtaG9jIHRlc3QgYXNzZXJ0aW9ucy4KKyAgdm9pZCBDbGVhckFk
SG9jVGVzdFJlc3VsdCgpIHsKKyAgICBhZF9ob2NfdGVzdF9yZXN1bHRfLkNsZWFyKCk7CisgIH0K
KworICAvLyBBZGRzIGEgVGVzdFByb3BlcnR5IHRvIHRoZSBjdXJyZW50IFRlc3RSZXN1bHQgb2Jq
ZWN0IHdoZW4gaW52b2tlZCBpbiBhCisgIC8vIGNvbnRleHQgb2YgYSB0ZXN0IG9yIGEgdGVzdCBj
YXNlLCBvciB0byB0aGUgZ2xvYmFsIHByb3BlcnR5IHNldC4gSWYgdGhlCisgIC8vIHJlc3VsdCBh
bHJlYWR5IGNvbnRhaW5zIGEgcHJvcGVydHkgd2l0aCB0aGUgc2FtZSBrZXksIHRoZSB2YWx1ZSB3
aWxsIGJlCisgIC8vIHVwZGF0ZWQuCisgIHZvaWQgUmVjb3JkUHJvcGVydHkoY29uc3QgVGVzdFBy
b3BlcnR5JiB0ZXN0X3Byb3BlcnR5KTsKKworICBlbnVtIFJlYWN0aW9uVG9TaGFyZGluZyB7Cisg
ICAgSE9OT1JfU0hBUkRJTkdfUFJPVE9DT0wsCisgICAgSUdOT1JFX1NIQVJESU5HX1BST1RPQ09M
CisgIH07CisKKyAgLy8gTWF0Y2hlcyB0aGUgZnVsbCBuYW1lIG9mIGVhY2ggdGVzdCBhZ2FpbnN0
IHRoZSB1c2VyLXNwZWNpZmllZAorICAvLyBmaWx0ZXIgdG8gZGVjaWRlIHdoZXRoZXIgdGhlIHRl
c3Qgc2hvdWxkIHJ1biwgdGhlbiByZWNvcmRzIHRoZQorICAvLyByZXN1bHQgaW4gZWFjaCBUZXN0
Q2FzZSBhbmQgVGVzdEluZm8gb2JqZWN0LgorICAvLyBJZiBzaGFyZF90ZXN0cyA9PSBIT05PUl9T
SEFSRElOR19QUk9UT0NPTCwgZnVydGhlciBmaWx0ZXJzIHRlc3RzCisgIC8vIGJhc2VkIG9uIHNo
YXJkaW5nIHZhcmlhYmxlcyBpbiB0aGUgZW52aXJvbm1lbnQuCisgIC8vIFJldHVybnMgdGhlIG51
bWJlciBvZiB0ZXN0cyB0aGF0IHNob3VsZCBydW4uCisgIGludCBGaWx0ZXJUZXN0cyhSZWFjdGlv
blRvU2hhcmRpbmcgc2hhcmRfdGVzdHMpOworCisgIC8vIFByaW50cyB0aGUgbmFtZXMgb2YgdGhl
IHRlc3RzIG1hdGNoaW5nIHRoZSB1c2VyLXNwZWNpZmllZCBmaWx0ZXIgZmxhZy4KKyAgdm9pZCBM
aXN0VGVzdHNNYXRjaGluZ0ZpbHRlcigpOworCisgIGNvbnN0IFRlc3RDYXNlKiBjdXJyZW50X3Rl
c3RfY2FzZSgpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnRfdGVzdF9jYXNlXzsgfQorICBUZXN0SW5m
byogY3VycmVudF90ZXN0X2luZm8oKSB7IHJldHVybiBjdXJyZW50X3Rlc3RfaW5mb187IH0KKyAg
Y29uc3QgVGVzdEluZm8qIGN1cnJlbnRfdGVzdF9pbmZvKCkgY29uc3QgeyByZXR1cm4gY3VycmVu
dF90ZXN0X2luZm9fOyB9CisKKyAgLy8gUmV0dXJucyB0aGUgdmVjdG9yIG9mIGVudmlyb25tZW50
cyB0aGF0IG5lZWQgdG8gYmUgc2V0LXVwL3Rvcm4tZG93bgorICAvLyBiZWZvcmUvYWZ0ZXIgdGhl
IHRlc3RzIGFyZSBydW4uCisgIHN0ZDo6dmVjdG9yPEVudmlyb25tZW50Kj4mIGVudmlyb25tZW50
cygpIHsgcmV0dXJuIGVudmlyb25tZW50c187IH0KKworICAvLyBHZXR0ZXJzIGZvciB0aGUgcGVy
LXRocmVhZCBHb29nbGUgVGVzdCB0cmFjZSBzdGFjay4KKyAgc3RkOjp2ZWN0b3I8VHJhY2VJbmZv
PiYgZ3Rlc3RfdHJhY2Vfc3RhY2soKSB7CisgICAgcmV0dXJuICooZ3Rlc3RfdHJhY2Vfc3RhY2tf
LnBvaW50ZXIoKSk7CisgIH0KKyAgY29uc3Qgc3RkOjp2ZWN0b3I8VHJhY2VJbmZvPiYgZ3Rlc3Rf
dHJhY2Vfc3RhY2soKSBjb25zdCB7CisgICAgcmV0dXJuIGd0ZXN0X3RyYWNlX3N0YWNrXy5nZXQo
KTsKKyAgfQorCisjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKKyAgdm9pZCBJbml0RGVhdGhUZXN0
U3VicHJvY2Vzc0NvbnRyb2xJbmZvKCkgeworICAgIGludGVybmFsX3J1bl9kZWF0aF90ZXN0X2Zs
YWdfLnJlc2V0KFBhcnNlSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnKCkpOworICB9CisgIC8vIFJl
dHVybnMgYSBwb2ludGVyIHRvIHRoZSBwYXJzZWQgLS1ndGVzdF9pbnRlcm5hbF9ydW5fZGVhdGhf
dGVzdAorICAvLyBmbGFnLCBvciBOVUxMIGlmIHRoYXQgZmxhZyB3YXMgbm90IHNwZWNpZmllZC4K
KyAgLy8gVGhpcyBpbmZvcm1hdGlvbiBpcyB1c2VmdWwgb25seSBpbiBhIGRlYXRoIHRlc3QgY2hp
bGQgcHJvY2Vzcy4KKyAgLy8gTXVzdCBub3QgYmUgY2FsbGVkIGJlZm9yZSBhIGNhbGwgdG8gSW5p
dEdvb2dsZVRlc3QuCisgIGNvbnN0IEludGVybmFsUnVuRGVhdGhUZXN0RmxhZyogaW50ZXJuYWxf
cnVuX2RlYXRoX3Rlc3RfZmxhZygpIGNvbnN0IHsKKyAgICByZXR1cm4gaW50ZXJuYWxfcnVuX2Rl
YXRoX3Rlc3RfZmxhZ18uZ2V0KCk7CisgIH0KKworICAvLyBSZXR1cm5zIGEgcG9pbnRlciB0byB0
aGUgY3VycmVudCBkZWF0aCB0ZXN0IGZhY3RvcnkuCisgIGludGVybmFsOjpEZWF0aFRlc3RGYWN0
b3J5KiBkZWF0aF90ZXN0X2ZhY3RvcnkoKSB7CisgICAgcmV0dXJuIGRlYXRoX3Rlc3RfZmFjdG9y
eV8uZ2V0KCk7CisgIH0KKworICB2b2lkIFN1cHByZXNzVGVzdEV2ZW50c0lmSW5TdWJwcm9jZXNz
KCk7CisKKyAgZnJpZW5kIGNsYXNzIFJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5OworI2VuZGlmICAv
LyBHVEVTVF9IQVNfREVBVEhfVEVTVAorCisgIC8vIEluaXRpYWxpemVzIHRoZSBldmVudCBsaXN0
ZW5lciBwZXJmb3JtaW5nIFhNTCBvdXRwdXQgYXMgc3BlY2lmaWVkIGJ5CisgIC8vIFVuaXRUZXN0
T3B0aW9ucy4gTXVzdCBub3QgYmUgY2FsbGVkIGJlZm9yZSBJbml0R29vZ2xlVGVzdC4KKyAgdm9p
ZCBDb25maWd1cmVYbWxPdXRwdXQoKTsKKworI2lmIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18K
KyAgLy8gSW5pdGlhbGl6ZXMgdGhlIGV2ZW50IGxpc3RlbmVyIGZvciBzdHJlYW1pbmcgdGVzdCBy
ZXN1bHRzIHRvIGEgc29ja2V0LgorICAvLyBNdXN0IG5vdCBiZSBjYWxsZWQgYmVmb3JlIEluaXRH
b29nbGVUZXN0LgorICB2b2lkIENvbmZpZ3VyZVN0cmVhbWluZ091dHB1dCgpOworI2VuZGlmCisK
KyAgLy8gUGVyZm9ybXMgaW5pdGlhbGl6YXRpb24gZGVwZW5kZW50IHVwb24gZmxhZyB2YWx1ZXMg
b2J0YWluZWQgaW4KKyAgLy8gUGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5LiAgSXMgY2FsbGVkIGZy
b20gSW5pdEdvb2dsZVRlc3QgYWZ0ZXIgdGhlIGNhbGwgdG8KKyAgLy8gUGFyc2VHb29nbGVUZXN0
RmxhZ3NPbmx5LiAgSW4gY2FzZSBhIHVzZXIgbmVnbGVjdHMgdG8gY2FsbCBJbml0R29vZ2xlVGVz
dAorICAvLyB0aGlzIGZ1bmN0aW9uIGlzIGFsc28gY2FsbGVkIGZyb20gUnVuQWxsVGVzdHMuICBT
aW5jZSB0aGlzIGZ1bmN0aW9uIGNhbiBiZQorICAvLyBjYWxsZWQgbW9yZSB0aGFuIG9uY2UsIGl0
IGhhcyB0byBiZSBpZGVtcG90ZW50LgorICB2b2lkIFBvc3RGbGFnUGFyc2luZ0luaXQoKTsKKwor
ICAvLyBHZXRzIHRoZSByYW5kb20gc2VlZCB1c2VkIGF0IHRoZSBzdGFydCBvZiB0aGUgY3VycmVu
dCB0ZXN0IGl0ZXJhdGlvbi4KKyAgaW50IHJhbmRvbV9zZWVkKCkgY29uc3QgeyByZXR1cm4gcmFu
ZG9tX3NlZWRfOyB9CisKKyAgLy8gR2V0cyB0aGUgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IuCisg
IGludGVybmFsOjpSYW5kb20qIHJhbmRvbSgpIHsgcmV0dXJuICZyYW5kb21fOyB9CisKKyAgLy8g
U2h1ZmZsZXMgYWxsIHRlc3QgY2FzZXMsIGFuZCB0aGUgdGVzdHMgd2l0aGluIGVhY2ggdGVzdCBj
YXNlLAorICAvLyBtYWtpbmcgc3VyZSB0aGF0IGRlYXRoIHRlc3RzIGFyZSBzdGlsbCBydW4gZmly
c3QuCisgIHZvaWQgU2h1ZmZsZVRlc3RzKCk7CisKKyAgLy8gUmVzdG9yZXMgdGhlIHRlc3QgY2Fz
ZXMgYW5kIHRlc3RzIHRvIHRoZWlyIG9yZGVyIGJlZm9yZSB0aGUgZmlyc3Qgc2h1ZmZsZS4KKyAg
dm9pZCBVbnNodWZmbGVUZXN0cygpOworCisgIC8vIFJldHVybnMgdGhlIHZhbHVlIG9mIEdURVNU
X0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykgYXQgdGhlIG1vbWVudAorICAvLyBVbml0VGVzdDo6UnVu
KCkgc3RhcnRzLgorICBib29sIGNhdGNoX2V4Y2VwdGlvbnMoKSBjb25zdCB7IHJldHVybiBjYXRj
aF9leGNlcHRpb25zXzsgfQorCisgcHJpdmF0ZToKKyAgZnJpZW5kIGNsYXNzIDo6dGVzdGluZzo6
VW5pdFRlc3Q7CisKKyAgLy8gVXNlZCBieSBVbml0VGVzdDo6UnVuKCkgdG8gY2FwdHVyZSB0aGUg
c3RhdGUgb2YKKyAgLy8gR1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSBhdCB0aGUgbW9tZW50
IGl0IHN0YXJ0cy4KKyAgdm9pZCBzZXRfY2F0Y2hfZXhjZXB0aW9ucyhib29sIHZhbHVlKSB7IGNh
dGNoX2V4Y2VwdGlvbnNfID0gdmFsdWU7IH0KKworICAvLyBUaGUgVW5pdFRlc3Qgb2JqZWN0IHRo
YXQgb3ducyB0aGlzIGltcGxlbWVudGF0aW9uIG9iamVjdC4KKyAgVW5pdFRlc3QqIGNvbnN0IHBh
cmVudF87CisKKyAgLy8gVGhlIHdvcmtpbmcgZGlyZWN0b3J5IHdoZW4gdGhlIGZpcnN0IFRFU1Qo
KSBvciBURVNUX0YoKSB3YXMKKyAgLy8gZXhlY3V0ZWQuCisgIGludGVybmFsOjpGaWxlUGF0aCBv
cmlnaW5hbF93b3JraW5nX2Rpcl87CisKKyAgLy8gVGhlIGRlZmF1bHQgdGVzdCBwYXJ0IHJlc3Vs
dCByZXBvcnRlcnMuCisgIERlZmF1bHRHbG9iYWxUZXN0UGFydFJlc3VsdFJlcG9ydGVyIGRlZmF1
bHRfZ2xvYmFsX3Rlc3RfcGFydF9yZXN1bHRfcmVwb3J0ZXJfOworICBEZWZhdWx0UGVyVGhyZWFk
VGVzdFBhcnRSZXN1bHRSZXBvcnRlcgorICAgICAgZGVmYXVsdF9wZXJfdGhyZWFkX3Rlc3RfcGFy
dF9yZXN1bHRfcmVwb3J0ZXJfOworCisgIC8vIFBvaW50cyB0byAoYnV0IGRvZXNuJ3Qgb3duKSB0
aGUgZ2xvYmFsIHRlc3QgcGFydCByZXN1bHQgcmVwb3J0ZXIuCisgIFRlc3RQYXJ0UmVzdWx0UmVw
b3J0ZXJJbnRlcmZhY2UqIGdsb2JhbF90ZXN0X3BhcnRfcmVzdWx0X3JlcG90ZXJfOworCisgIC8v
IFByb3RlY3RzIHJlYWQgYW5kIHdyaXRlIGFjY2VzcyB0byBnbG9iYWxfdGVzdF9wYXJ0X3Jlc3Vs
dF9yZXBvcnRlcl8uCisgIGludGVybmFsOjpNdXRleCBnbG9iYWxfdGVzdF9wYXJ0X3Jlc3VsdF9y
ZXBvcnRlcl9tdXRleF87CisKKyAgLy8gUG9pbnRzIHRvIChidXQgZG9lc24ndCBvd24pIHRoZSBw
ZXItdGhyZWFkIHRlc3QgcGFydCByZXN1bHQgcmVwb3J0ZXIuCisgIGludGVybmFsOjpUaHJlYWRM
b2NhbDxUZXN0UGFydFJlc3VsdFJlcG9ydGVySW50ZXJmYWNlKj4KKyAgICAgIHBlcl90aHJlYWRf
dGVzdF9wYXJ0X3Jlc3VsdF9yZXBvcnRlcl87CisKKyAgLy8gVGhlIHZlY3RvciBvZiBlbnZpcm9u
bWVudHMgdGhhdCBuZWVkIHRvIGJlIHNldC11cC90b3JuLWRvd24KKyAgLy8gYmVmb3JlL2FmdGVy
IHRoZSB0ZXN0cyBhcmUgcnVuLgorICBzdGQ6OnZlY3RvcjxFbnZpcm9ubWVudCo+IGVudmlyb25t
ZW50c187CisKKyAgLy8gVGhlIHZlY3RvciBvZiBUZXN0Q2FzZXMgaW4gdGhlaXIgb3JpZ2luYWwg
b3JkZXIuICBJdCBvd25zIHRoZQorICAvLyBlbGVtZW50cyBpbiB0aGUgdmVjdG9yLgorICBzdGQ6
OnZlY3RvcjxUZXN0Q2FzZSo+IHRlc3RfY2FzZXNfOworCisgIC8vIFByb3ZpZGVzIGEgbGV2ZWwg
b2YgaW5kaXJlY3Rpb24gZm9yIHRoZSB0ZXN0IGNhc2UgbGlzdCB0byBhbGxvdworICAvLyBlYXN5
IHNodWZmbGluZyBhbmQgcmVzdG9yaW5nIHRoZSB0ZXN0IGNhc2Ugb3JkZXIuICBUaGUgaS10aAor
ICAvLyBlbGVtZW50IG9mIHRoaXMgdmVjdG9yIGlzIHRoZSBpbmRleCBvZiB0aGUgaS10aCB0ZXN0
IGNhc2UgaW4gdGhlCisgIC8vIHNodWZmbGVkIG9yZGVyLgorICBzdGQ6OnZlY3RvcjxpbnQ+IHRl
c3RfY2FzZV9pbmRpY2VzXzsKKworI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCisgIC8vIFBhcmFt
ZXRlcml6ZWRUZXN0UmVnaXN0cnkgb2JqZWN0IHVzZWQgdG8gcmVnaXN0ZXIgdmFsdWUtcGFyYW1l
dGVyaXplZAorICAvLyB0ZXN0cy4KKyAgaW50ZXJuYWw6OlBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJl
Z2lzdHJ5IHBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3RyeV87CisKKyAgLy8gSW5kaWNhdGVzIHdo
ZXRoZXIgUmVnaXN0ZXJQYXJhbWV0ZXJpemVkVGVzdHMoKSBoYXMgYmVlbiBjYWxsZWQgYWxyZWFk
eS4KKyAgYm9vbCBwYXJhbWV0ZXJpemVkX3Rlc3RzX3JlZ2lzdGVyZWRfOworI2VuZGlmICAvLyBH
VEVTVF9IQVNfUEFSQU1fVEVTVAorCisgIC8vIEluZGV4IG9mIHRoZSBsYXN0IGRlYXRoIHRlc3Qg
Y2FzZSByZWdpc3RlcmVkLiAgSW5pdGlhbGx5IC0xLgorICBpbnQgbGFzdF9kZWF0aF90ZXN0X2Nh
c2VfOworCisgIC8vIFRoaXMgcG9pbnRzIHRvIHRoZSBUZXN0Q2FzZSBmb3IgdGhlIGN1cnJlbnRs
eSBydW5uaW5nIHRlc3QuICBJdAorICAvLyBjaGFuZ2VzIGFzIEdvb2dsZSBUZXN0IGdvZXMgdGhy
b3VnaCBvbmUgdGVzdCBjYXNlIGFmdGVyIGFub3RoZXIuCisgIC8vIFdoZW4gbm8gdGVzdCBpcyBy
dW5uaW5nLCB0aGlzIGlzIHNldCB0byBOVUxMIGFuZCBHb29nbGUgVGVzdAorICAvLyBzdG9yZXMg
YXNzZXJ0aW9uIHJlc3VsdHMgaW4gYWRfaG9jX3Rlc3RfcmVzdWx0Xy4gIEluaXRpYWxseSBOVUxM
LgorICBUZXN0Q2FzZSogY3VycmVudF90ZXN0X2Nhc2VfOworCisgIC8vIFRoaXMgcG9pbnRzIHRv
IHRoZSBUZXN0SW5mbyBmb3IgdGhlIGN1cnJlbnRseSBydW5uaW5nIHRlc3QuICBJdAorICAvLyBj
aGFuZ2VzIGFzIEdvb2dsZSBUZXN0IGdvZXMgdGhyb3VnaCBvbmUgdGVzdCBhZnRlciBhbm90aGVy
LiAgV2hlbgorICAvLyBubyB0ZXN0IGlzIHJ1bm5pbmcsIHRoaXMgaXMgc2V0IHRvIE5VTEwgYW5k
IEdvb2dsZSBUZXN0IHN0b3JlcworICAvLyBhc3NlcnRpb24gcmVzdWx0cyBpbiBhZF9ob2NfdGVz
dF9yZXN1bHRfLiAgSW5pdGlhbGx5IE5VTEwuCisgIFRlc3RJbmZvKiBjdXJyZW50X3Rlc3RfaW5m
b187CisKKyAgLy8gTm9ybWFsbHksIGEgdXNlciBvbmx5IHdyaXRlcyBhc3NlcnRpb25zIGluc2lk
ZSBhIFRFU1Qgb3IgVEVTVF9GLAorICAvLyBvciBpbnNpZGUgYSBmdW5jdGlvbiBjYWxsZWQgYnkg
YSBURVNUIG9yIFRFU1RfRi4gIFNpbmNlIEdvb2dsZQorICAvLyBUZXN0IGtlZXBzIHRyYWNrIG9m
IHdoaWNoIHRlc3QgaXMgY3VycmVudCBydW5uaW5nLCBpdCBjYW4KKyAgLy8gYXNzb2NpYXRlIHN1
Y2ggYW4gYXNzZXJ0aW9uIHdpdGggdGhlIHRlc3QgaXQgYmVsb25ncyB0by4KKyAgLy8KKyAgLy8g
SWYgYW4gYXNzZXJ0aW9uIGlzIGVuY291bnRlcmVkIHdoZW4gbm8gVEVTVCBvciBURVNUX0YgaXMg
cnVubmluZywKKyAgLy8gR29vZ2xlIFRlc3QgYXR0cmlidXRlcyB0aGUgYXNzZXJ0aW9uIHJlc3Vs
dCB0byBhbiBpbWFnaW5hcnkgImFkIGhvYyIKKyAgLy8gdGVzdCwgYW5kIHJlY29yZHMgdGhlIHJl
c3VsdCBpbiBhZF9ob2NfdGVzdF9yZXN1bHRfLgorICBUZXN0UmVzdWx0IGFkX2hvY190ZXN0X3Jl
c3VsdF87CisKKyAgLy8gVGhlIGxpc3Qgb2YgZXZlbnQgbGlzdGVuZXJzIHRoYXQgY2FuIGJlIHVz
ZWQgdG8gdHJhY2sgZXZlbnRzIGluc2lkZQorICAvLyBHb29nbGUgVGVzdC4KKyAgVGVzdEV2ZW50
TGlzdGVuZXJzIGxpc3RlbmVyc187CisKKyAgLy8gVGhlIE9TIHN0YWNrIHRyYWNlIGdldHRlci4g
IFdpbGwgYmUgZGVsZXRlZCB3aGVuIHRoZSBVbml0VGVzdAorICAvLyBvYmplY3QgaXMgZGVzdHJ1
Y3RlZC4gIEJ5IGRlZmF1bHQsIGFuIE9zU3RhY2tUcmFjZUdldHRlciBpcyB1c2VkLAorICAvLyBi
dXQgdGhlIHVzZXIgY2FuIHNldCB0aGlzIGZpZWxkIHRvIHVzZSBhIGN1c3RvbSBnZXR0ZXIgaWYg
dGhhdCBpcworICAvLyBkZXNpcmVkLgorICBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2UqIG9z
X3N0YWNrX3RyYWNlX2dldHRlcl87CisKKyAgLy8gVHJ1ZSBpZmYgUG9zdEZsYWdQYXJzaW5nSW5p
dCgpIGhhcyBiZWVuIGNhbGxlZC4KKyAgYm9vbCBwb3N0X2ZsYWdfcGFyc2VfaW5pdF9wZXJmb3Jt
ZWRfOworCisgIC8vIFRoZSByYW5kb20gbnVtYmVyIHNlZWQgdXNlZCBhdCB0aGUgYmVnaW5uaW5n
IG9mIHRoZSB0ZXN0IHJ1bi4KKyAgaW50IHJhbmRvbV9zZWVkXzsKKworICAvLyBPdXIgcmFuZG9t
IG51bWJlciBnZW5lcmF0b3IuCisgIGludGVybmFsOjpSYW5kb20gcmFuZG9tXzsKKworICAvLyBU
aGUgdGltZSBvZiB0aGUgdGVzdCBwcm9ncmFtIHN0YXJ0LCBpbiBtcyBmcm9tIHRoZSBzdGFydCBv
ZiB0aGUKKyAgLy8gVU5JWCBlcG9jaC4KKyAgVGltZUluTWlsbGlzIHN0YXJ0X3RpbWVzdGFtcF87
CisKKyAgLy8gSG93IGxvbmcgdGhlIHRlc3QgdG9vayB0byBydW4sIGluIG1pbGxpc2Vjb25kcy4K
KyAgVGltZUluTWlsbGlzIGVsYXBzZWRfdGltZV87CisKKyNpZiBHVEVTVF9IQVNfREVBVEhfVEVT
VAorICAvLyBUaGUgZGVjb21wb3NlZCBjb21wb25lbnRzIG9mIHRoZSBndGVzdF9pbnRlcm5hbF9y
dW5fZGVhdGhfdGVzdCBmbGFnLAorICAvLyBwYXJzZWQgd2hlbiBSVU5fQUxMX1RFU1RTIGlzIGNh
bGxlZC4KKyAgaW50ZXJuYWw6OnNjb3BlZF9wdHI8SW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnPiBp
bnRlcm5hbF9ydW5fZGVhdGhfdGVzdF9mbGFnXzsKKyAgaW50ZXJuYWw6OnNjb3BlZF9wdHI8aW50
ZXJuYWw6OkRlYXRoVGVzdEZhY3Rvcnk+IGRlYXRoX3Rlc3RfZmFjdG9yeV87CisjZW5kaWYgIC8v
IEdURVNUX0hBU19ERUFUSF9URVNUCisKKyAgLy8gQSBwZXItdGhyZWFkIHN0YWNrIG9mIHRyYWNl
cyBjcmVhdGVkIGJ5IHRoZSBTQ09QRURfVFJBQ0UoKSBtYWNyby4KKyAgaW50ZXJuYWw6OlRocmVh
ZExvY2FsPHN0ZDo6dmVjdG9yPFRyYWNlSW5mbz4gPiBndGVzdF90cmFjZV9zdGFja187CisKKyAg
Ly8gVGhlIHZhbHVlIG9mIEdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykgYXQgdGhlIG1vbWVu
dCBSdW5BbGxUZXN0cygpCisgIC8vIHN0YXJ0cy4KKyAgYm9vbCBjYXRjaF9leGNlcHRpb25zXzsK
KworICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFVuaXRUZXN0SW1wbCk7Cit9OyAg
Ly8gY2xhc3MgVW5pdFRlc3RJbXBsCisKKy8vIENvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciBhY2Nl
c3NpbmcgdGhlIGdsb2JhbCBVbml0VGVzdAorLy8gaW1wbGVtZW50YXRpb24gb2JqZWN0LgoraW5s
aW5lIFVuaXRUZXN0SW1wbCogR2V0VW5pdFRlc3RJbXBsKCkgeworICByZXR1cm4gVW5pdFRlc3Q6
OkdldEluc3RhbmNlKCktPmltcGwoKTsKK30KKworI2lmIEdURVNUX1VTRVNfU0lNUExFX1JFCisK
Ky8vIEludGVybmFsIGhlbHBlciBmdW5jdGlvbnMgZm9yIGltcGxlbWVudGluZyB0aGUgc2ltcGxl
IHJlZ3VsYXIKKy8vIGV4cHJlc3Npb24gbWF0Y2hlci4KK0dURVNUX0FQSV8gYm9vbCBJc0luU2V0
KGNoYXIgY2gsIGNvbnN0IGNoYXIqIHN0cik7CitHVEVTVF9BUElfIGJvb2wgSXNBc2NpaURpZ2l0
KGNoYXIgY2gpOworR1RFU1RfQVBJXyBib29sIElzQXNjaWlQdW5jdChjaGFyIGNoKTsKK0dURVNU
X0FQSV8gYm9vbCBJc1JlcGVhdChjaGFyIGNoKTsKK0dURVNUX0FQSV8gYm9vbCBJc0FzY2lpV2hp
dGVTcGFjZShjaGFyIGNoKTsKK0dURVNUX0FQSV8gYm9vbCBJc0FzY2lpV29yZENoYXIoY2hhciBj
aCk7CitHVEVTVF9BUElfIGJvb2wgSXNWYWxpZEVzY2FwZShjaGFyIGNoKTsKK0dURVNUX0FQSV8g
Ym9vbCBBdG9tTWF0Y2hlc0NoYXIoYm9vbCBlc2NhcGVkLCBjaGFyIHBhdHRlcm4sIGNoYXIgY2gp
OworR1RFU1RfQVBJXyBib29sIFZhbGlkYXRlUmVnZXgoY29uc3QgY2hhciogcmVnZXgpOworR1RF
U1RfQVBJXyBib29sIE1hdGNoUmVnZXhBdEhlYWQoY29uc3QgY2hhciogcmVnZXgsIGNvbnN0IGNo
YXIqIHN0cik7CitHVEVTVF9BUElfIGJvb2wgTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQo
CisgICAgYm9vbCBlc2NhcGVkLCBjaGFyIGNoLCBjaGFyIHJlcGVhdCwgY29uc3QgY2hhciogcmVn
ZXgsIGNvbnN0IGNoYXIqIHN0cik7CitHVEVTVF9BUElfIGJvb2wgTWF0Y2hSZWdleEFueXdoZXJl
KGNvbnN0IGNoYXIqIHJlZ2V4LCBjb25zdCBjaGFyKiBzdHIpOworCisjZW5kaWYgIC8vIEdURVNU
X1VTRVNfU0lNUExFX1JFCisKKy8vIFBhcnNlcyB0aGUgY29tbWFuZCBsaW5lIGZvciBHb29nbGUg
VGVzdCBmbGFncywgd2l0aG91dCBpbml0aWFsaXppbmcKKy8vIG90aGVyIHBhcnRzIG9mIEdvb2ds
ZSBUZXN0LgorR1RFU1RfQVBJXyB2b2lkIFBhcnNlR29vZ2xlVGVzdEZsYWdzT25seShpbnQqIGFy
Z2MsIGNoYXIqKiBhcmd2KTsKK0dURVNUX0FQSV8gdm9pZCBQYXJzZUdvb2dsZVRlc3RGbGFnc09u
bHkoaW50KiBhcmdjLCB3Y2hhcl90KiogYXJndik7CisKKyNpZiBHVEVTVF9IQVNfREVBVEhfVEVT
VAorCisvLyBSZXR1cm5zIHRoZSBtZXNzYWdlIGRlc2NyaWJpbmcgdGhlIGxhc3Qgc3lzdGVtIGVy
cm9yLCByZWdhcmRsZXNzIG9mIHRoZQorLy8gcGxhdGZvcm0uCitHVEVTVF9BUElfIHN0ZDo6c3Ry
aW5nIEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCk7CisKKy8vIEF0dGVtcHRzIHRvIHBhcnNlIGEg
c3RyaW5nIGludG8gYSBwb3NpdGl2ZSBpbnRlZ2VyIHBvaW50ZWQgdG8gYnkgdGhlCisvLyBudW1i
ZXIgcGFyYW1ldGVyLiAgUmV0dXJucyB0cnVlIGlmIHRoYXQgaXMgcG9zc2libGUuCisvLyBHVEVT
VF9IQVNfREVBVEhfVEVTVCBpbXBsaWVzIHRoYXQgd2UgaGF2ZSA6OnN0ZDo6c3RyaW5nLCBzbyB3
ZSBjYW4gdXNlCisvLyBpdCBoZXJlLgordGVtcGxhdGUgPHR5cGVuYW1lIEludGVnZXI+Citib29s
IFBhcnNlTmF0dXJhbE51bWJlcihjb25zdCA6OnN0ZDo6c3RyaW5nJiBzdHIsIEludGVnZXIqIG51
bWJlcikgeworICAvLyBGYWlsIGZhc3QgaWYgdGhlIGdpdmVuIHN0cmluZyBkb2VzIG5vdCBiZWdp
biB3aXRoIGEgZGlnaXQ7CisgIC8vIHRoaXMgYnlwYXNzZXMgc3RydG9YWFgncyAib3B0aW9uYWwg
bGVhZGluZyB3aGl0ZXNwYWNlIGFuZCBwbHVzCisgIC8vIG9yIG1pbnVzIHNpZ24iIHNlbWFudGlj
cywgd2hpY2ggYXJlIHVuZGVzaXJhYmxlIGhlcmUuCisgIGlmIChzdHIuZW1wdHkoKSB8fCAhSXNE
aWdpdChzdHJbMF0pKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisgIGVycm5vID0gMDsKKwor
ICBjaGFyKiBlbmQ7CisgIC8vIEJpZ2dlc3RDb252ZXJ0aWJsZSBpcyB0aGUgbGFyZ2VzdCBpbnRl
Z2VyIHR5cGUgdGhhdCBzeXN0ZW0tcHJvdmlkZWQKKyAgLy8gc3RyaW5nLXRvLW51bWJlciBjb252
ZXJzaW9uIHJvdXRpbmVzIGNhbiByZXR1cm4uCisKKyMgaWYgR1RFU1RfT1NfV0lORE9XUyAmJiAh
ZGVmaW5lZChfX0dOVUNfXykKKworICAvLyBNU1ZDIGFuZCBDKysgQnVpbGRlciBkZWZpbmUgX19p
bnQ2NCBpbnN0ZWFkIG9mIHRoZSBzdGFuZGFyZCBsb25nIGxvbmcuCisgIHR5cGVkZWYgdW5zaWdu
ZWQgX19pbnQ2NCBCaWdnZXN0Q29udmVydGlibGU7CisgIGNvbnN0IEJpZ2dlc3RDb252ZXJ0aWJs
ZSBwYXJzZWQgPSBfc3RydG91aTY0KHN0ci5jX3N0cigpLCAmZW5kLCAxMCk7CisKKyMgZWxzZQor
CisgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIEJpZ2dlc3RDb252ZXJ0aWJsZTsgIC8vIE5P
TElOVAorICBjb25zdCBCaWdnZXN0Q29udmVydGlibGUgcGFyc2VkID0gc3RydG91bGwoc3RyLmNf
c3RyKCksICZlbmQsIDEwKTsKKworIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUyAmJiAhZGVm
aW5lZChfX0dOVUNfXykKKworICBjb25zdCBib29sIHBhcnNlX3N1Y2Nlc3MgPSAqZW5kID09ICdc
MCcgJiYgZXJybm8gPT0gMDsKKworICAvLyBUT0RPKHZsYWRsQGdvb2dsZS5jb20pOiBDb252ZXJ0
IHRoaXMgdG8gY29tcGlsZSB0aW1lIGFzc2VydGlvbiB3aGVuIGl0IGlzCisgIC8vIGF2YWlsYWJs
ZS4KKyAgR1RFU1RfQ0hFQ0tfKHNpemVvZihJbnRlZ2VyKSA8PSBzaXplb2YocGFyc2VkKSk7CisK
KyAgY29uc3QgSW50ZWdlciByZXN1bHQgPSBzdGF0aWNfY2FzdDxJbnRlZ2VyPihwYXJzZWQpOwor
ICBpZiAocGFyc2Vfc3VjY2VzcyAmJiBzdGF0aWNfY2FzdDxCaWdnZXN0Q29udmVydGlibGU+KHJl
c3VsdCkgPT0gcGFyc2VkKSB7CisgICAgKm51bWJlciA9IHJlc3VsdDsKKyAgICByZXR1cm4gdHJ1
ZTsKKyAgfQorICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9U
RVNUCisKKy8vIFRlc3RSZXN1bHQgY29udGFpbnMgc29tZSBwcml2YXRlIG1ldGhvZHMgdGhhdCBz
aG91bGQgYmUgaGlkZGVuIGZyb20KKy8vIEdvb2dsZSBUZXN0IHVzZXIgYnV0IGFyZSByZXF1aXJl
ZCBmb3IgdGVzdGluZy4gVGhpcyBjbGFzcyBhbGxvdyBvdXIgdGVzdHMKKy8vIHRvIGFjY2VzcyB0
aGVtLgorLy8KKy8vIFRoaXMgY2xhc3MgaXMgc3VwcGxpZWQgb25seSBmb3IgdGhlIHB1cnBvc2Ug
b2YgdGVzdGluZyBHb29nbGUgVGVzdCdzIG93bgorLy8gY29uc3RydWN0cy4gRG8gbm90IHVzZSBp
dCBpbiB1c2VyIHRlc3RzLCBlaXRoZXIgZGlyZWN0bHkgb3IgaW5kaXJlY3RseS4KK2NsYXNzIFRl
c3RSZXN1bHRBY2Nlc3NvciB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBSZWNvcmRQcm9wZXJ0
eShUZXN0UmVzdWx0KiB0ZXN0X3Jlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIHhtbF9lbGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBUZXN0UHJvcGVydHkmIHByb3BlcnR5KSB7CisgICAgdGVzdF9yZXN1bHQtPlJl
Y29yZFByb3BlcnR5KHhtbF9lbGVtZW50LCBwcm9wZXJ0eSk7CisgIH0KKworICBzdGF0aWMgdm9p
ZCBDbGVhclRlc3RQYXJ0UmVzdWx0cyhUZXN0UmVzdWx0KiB0ZXN0X3Jlc3VsdCkgeworICAgIHRl
c3RfcmVzdWx0LT5DbGVhclRlc3RQYXJ0UmVzdWx0cygpOworICB9CisKKyAgc3RhdGljIGNvbnN0
IHN0ZDo6dmVjdG9yPHRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0PiYgdGVzdF9wYXJ0X3Jlc3VsdHMo
CisgICAgICBjb25zdCBUZXN0UmVzdWx0JiB0ZXN0X3Jlc3VsdCkgeworICAgIHJldHVybiB0ZXN0
X3Jlc3VsdC50ZXN0X3BhcnRfcmVzdWx0cygpOworICB9Cit9OworCisjaWYgR1RFU1RfQ0FOX1NU
UkVBTV9SRVNVTFRTXworCisvLyBTdHJlYW1zIHRlc3QgcmVzdWx0cyB0byB0aGUgZ2l2ZW4gcG9y
dCBvbiB0aGUgZ2l2ZW4gaG9zdCBtYWNoaW5lLgorY2xhc3MgR1RFU1RfQVBJXyBTdHJlYW1pbmdM
aXN0ZW5lciA6IHB1YmxpYyBFbXB0eVRlc3RFdmVudExpc3RlbmVyIHsKKyBwdWJsaWM6CisgIC8v
IEFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIHdyaXRpbmcgc3RyaW5ncyB0byBhIHNvY2tldC4KKyAg
Y2xhc3MgQWJzdHJhY3RTb2NrZXRXcml0ZXIgeworICAgcHVibGljOgorICAgIHZpcnR1YWwgfkFi
c3RyYWN0U29ja2V0V3JpdGVyKCkge30KKworICAgIC8vIFNlbmRzIGEgc3RyaW5nIHRvIHRoZSBz
b2NrZXQuCisgICAgdmlydHVhbCB2b2lkIFNlbmQoY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2Up
ID0gMDsKKworICAgIC8vIENsb3NlcyB0aGUgc29ja2V0LgorICAgIHZpcnR1YWwgdm9pZCBDbG9z
ZUNvbm5lY3Rpb24oKSB7fQorCisgICAgLy8gU2VuZHMgYSBzdHJpbmcgYW5kIGEgbmV3bGluZSB0
byB0aGUgc29ja2V0LgorICAgIHZvaWQgU2VuZExuKGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdl
KSB7IFNlbmQobWVzc2FnZSArICJcbiIpOyB9CisgIH07CisKKyAgLy8gQ29uY3JldGUgY2xhc3Mg
Zm9yIGFjdHVhbGx5IHdyaXRpbmcgc3RyaW5ncyB0byBhIHNvY2tldC4KKyAgY2xhc3MgU29ja2V0
V3JpdGVyIDogcHVibGljIEFic3RyYWN0U29ja2V0V3JpdGVyIHsKKyAgIHB1YmxpYzoKKyAgICBT
b2NrZXRXcml0ZXIoY29uc3Qgc3RkOjpzdHJpbmcmIGhvc3QsIGNvbnN0IHN0ZDo6c3RyaW5nJiBw
b3J0KQorICAgICAgICA6IHNvY2tmZF8oLTEpLCBob3N0X25hbWVfKGhvc3QpLCBwb3J0X251bV8o
cG9ydCkgeworICAgICAgTWFrZUNvbm5lY3Rpb24oKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5T
b2NrZXRXcml0ZXIoKSB7CisgICAgICBpZiAoc29ja2ZkXyAhPSAtMSkKKyAgICAgICAgQ2xvc2VD
b25uZWN0aW9uKCk7CisgICAgfQorCisgICAgLy8gU2VuZHMgYSBzdHJpbmcgdG8gdGhlIHNvY2tl
dC4KKyAgICB2aXJ0dWFsIHZvaWQgU2VuZChjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSkgewor
ICAgICAgR1RFU1RfQ0hFQ0tfKHNvY2tmZF8gIT0gLTEpCisgICAgICAgICAgPDwgIlNlbmQoKSBj
YW4gYmUgY2FsbGVkIG9ubHkgd2hlbiB0aGVyZSBpcyBhIGNvbm5lY3Rpb24uIjsKKworICAgICAg
Y29uc3QgaW50IGxlbiA9IHN0YXRpY19jYXN0PGludD4obWVzc2FnZS5sZW5ndGgoKSk7CisgICAg
ICBpZiAod3JpdGUoc29ja2ZkXywgbWVzc2FnZS5jX3N0cigpLCBsZW4pICE9IGxlbikgeworICAg
ICAgICBHVEVTVF9MT0dfKFdBUk5JTkcpCisgICAgICAgICAgICA8PCAic3RyZWFtX3Jlc3VsdF90
bzogZmFpbGVkIHRvIHN0cmVhbSB0byAiCisgICAgICAgICAgICA8PCBob3N0X25hbWVfIDw8ICI6
IiA8PCBwb3J0X251bV87CisgICAgICB9CisgICAgfQorCisgICBwcml2YXRlOgorICAgIC8vIENy
ZWF0ZXMgYSBjbGllbnQgc29ja2V0IGFuZCBjb25uZWN0cyB0byB0aGUgc2VydmVyLgorICAgIHZv
aWQgTWFrZUNvbm5lY3Rpb24oKTsKKworICAgIC8vIENsb3NlcyB0aGUgc29ja2V0LgorICAgIHZv
aWQgQ2xvc2VDb25uZWN0aW9uKCkgeworICAgICAgR1RFU1RfQ0hFQ0tfKHNvY2tmZF8gIT0gLTEp
CisgICAgICAgICAgPDwgIkNsb3NlQ29ubmVjdGlvbigpIGNhbiBiZSBjYWxsZWQgb25seSB3aGVu
IHRoZXJlIGlzIGEgY29ubmVjdGlvbi4iOworCisgICAgICBjbG9zZShzb2NrZmRfKTsKKyAgICAg
IHNvY2tmZF8gPSAtMTsKKyAgICB9CisKKyAgICBpbnQgc29ja2ZkXzsgIC8vIHNvY2tldCBmaWxl
IGRlc2NyaXB0b3IKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBob3N0X25hbWVfOworICAgIGNvbnN0
IHN0ZDo6c3RyaW5nIHBvcnRfbnVtXzsKKworICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FT
U0lHTl8oU29ja2V0V3JpdGVyKTsKKyAgfTsgIC8vIGNsYXNzIFNvY2tldFdyaXRlcgorCisgIC8v
IEVzY2FwZXMgJz0nLCAnJicsICclJywgYW5kICdcbicgY2hhcmFjdGVycyBpbiBzdHIgYXMgIiV4
eCIuCisgIHN0YXRpYyBzdGQ6OnN0cmluZyBVcmxFbmNvZGUoY29uc3QgY2hhciogc3RyKTsKKwor
ICBTdHJlYW1pbmdMaXN0ZW5lcihjb25zdCBzdGQ6OnN0cmluZyYgaG9zdCwgY29uc3Qgc3RkOjpz
dHJpbmcmIHBvcnQpCisgICAgICA6IHNvY2tldF93cml0ZXJfKG5ldyBTb2NrZXRXcml0ZXIoaG9z
dCwgcG9ydCkpIHsKKyAgICBTdGFydCgpOworICB9CisKKyAgZXhwbGljaXQgU3RyZWFtaW5nTGlz
dGVuZXIoQWJzdHJhY3RTb2NrZXRXcml0ZXIqIHNvY2tldF93cml0ZXIpCisgICAgICA6IHNvY2tl
dF93cml0ZXJfKHNvY2tldF93cml0ZXIpIHsgU3RhcnQoKTsgfQorCisgIHZvaWQgT25UZXN0UHJv
Z3JhbVN0YXJ0KGNvbnN0IFVuaXRUZXN0JiAvKiB1bml0X3Rlc3QgKi8pIHsKKyAgICBTZW5kTG4o
ImV2ZW50PVRlc3RQcm9ncmFtU3RhcnQiKTsKKyAgfQorCisgIHZvaWQgT25UZXN0UHJvZ3JhbUVu
ZChjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0KSB7CisgICAgLy8gTm90ZSB0aGF0IEdvb2dsZSBU
ZXN0IGN1cnJlbnQgb25seSByZXBvcnQgZWxhcHNlZCB0aW1lIGZvciBlYWNoCisgICAgLy8gdGVz
dCBpdGVyYXRpb24sIG5vdCBmb3IgdGhlIGVudGlyZSB0ZXN0IHByb2dyYW0uCisgICAgU2VuZExu
KCJldmVudD1UZXN0UHJvZ3JhbUVuZCZwYXNzZWQ9IiArIEZvcm1hdEJvb2wodW5pdF90ZXN0LlBh
c3NlZCgpKSk7CisKKyAgICAvLyBOb3RpZnkgdGhlIHN0cmVhbWluZyBzZXJ2ZXIgdG8gc3RvcC4K
KyAgICBzb2NrZXRfd3JpdGVyXy0+Q2xvc2VDb25uZWN0aW9uKCk7CisgIH0KKworICB2b2lkIE9u
VGVzdEl0ZXJhdGlvblN0YXJ0KGNvbnN0IFVuaXRUZXN0JiAvKiB1bml0X3Rlc3QgKi8sIGludCBp
dGVyYXRpb24pIHsKKyAgICBTZW5kTG4oImV2ZW50PVRlc3RJdGVyYXRpb25TdGFydCZpdGVyYXRp
b249IiArCisgICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmluZyhpdGVyYXRpb24pKTsKKyAgfQor
CisgIHZvaWQgT25UZXN0SXRlcmF0aW9uRW5kKGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QsIGlu
dCAvKiBpdGVyYXRpb24gKi8pIHsKKyAgICBTZW5kTG4oImV2ZW50PVRlc3RJdGVyYXRpb25FbmQm
cGFzc2VkPSIgKworICAgICAgICAgICBGb3JtYXRCb29sKHVuaXRfdGVzdC5QYXNzZWQoKSkgKyAi
JmVsYXBzZWRfdGltZT0iICsKKyAgICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHVuaXRfdGVz
dC5lbGFwc2VkX3RpbWUoKSkgKyAibXMiKTsKKyAgfQorCisgIHZvaWQgT25UZXN0Q2FzZVN0YXJ0
KGNvbnN0IFRlc3RDYXNlJiB0ZXN0X2Nhc2UpIHsKKyAgICBTZW5kTG4oc3RkOjpzdHJpbmcoImV2
ZW50PVRlc3RDYXNlU3RhcnQmbmFtZT0iKSArIHRlc3RfY2FzZS5uYW1lKCkpOworICB9CisKKyAg
dm9pZCBPblRlc3RDYXNlRW5kKGNvbnN0IFRlc3RDYXNlJiB0ZXN0X2Nhc2UpIHsKKyAgICBTZW5k
TG4oImV2ZW50PVRlc3RDYXNlRW5kJnBhc3NlZD0iICsgRm9ybWF0Qm9vbCh0ZXN0X2Nhc2UuUGFz
c2VkKCkpCisgICAgICAgICAgICsgIiZlbGFwc2VkX3RpbWU9IiArIFN0cmVhbWFibGVUb1N0cmlu
Zyh0ZXN0X2Nhc2UuZWxhcHNlZF90aW1lKCkpCisgICAgICAgICAgICsgIm1zIik7CisgIH0KKwor
ICB2b2lkIE9uVGVzdFN0YXJ0KGNvbnN0IFRlc3RJbmZvJiB0ZXN0X2luZm8pIHsKKyAgICBTZW5k
TG4oc3RkOjpzdHJpbmcoImV2ZW50PVRlc3RTdGFydCZuYW1lPSIpICsgdGVzdF9pbmZvLm5hbWUo
KSk7CisgIH0KKworICB2b2lkIE9uVGVzdEVuZChjb25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKSB7
CisgICAgU2VuZExuKCJldmVudD1UZXN0RW5kJnBhc3NlZD0iICsKKyAgICAgICAgICAgRm9ybWF0
Qm9vbCgodGVzdF9pbmZvLnJlc3VsdCgpKS0+UGFzc2VkKCkpICsKKyAgICAgICAgICAgIiZlbGFw
c2VkX3RpbWU9IiArCisgICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmluZygodGVzdF9pbmZvLnJl
c3VsdCgpKS0+ZWxhcHNlZF90aW1lKCkpICsgIm1zIik7CisgIH0KKworICB2b2lkIE9uVGVzdFBh
cnRSZXN1bHQoY29uc3QgVGVzdFBhcnRSZXN1bHQmIHRlc3RfcGFydF9yZXN1bHQpIHsKKyAgICBj
b25zdCBjaGFyKiBmaWxlX25hbWUgPSB0ZXN0X3BhcnRfcmVzdWx0LmZpbGVfbmFtZSgpOworICAg
IGlmIChmaWxlX25hbWUgPT0gTlVMTCkKKyAgICAgIGZpbGVfbmFtZSA9ICIiOworICAgIFNlbmRM
bigiZXZlbnQ9VGVzdFBhcnRSZXN1bHQmZmlsZT0iICsgVXJsRW5jb2RlKGZpbGVfbmFtZSkgKwor
ICAgICAgICAgICAiJmxpbmU9IiArIFN0cmVhbWFibGVUb1N0cmluZyh0ZXN0X3BhcnRfcmVzdWx0
LmxpbmVfbnVtYmVyKCkpICsKKyAgICAgICAgICAgIiZtZXNzYWdlPSIgKyBVcmxFbmNvZGUodGVz
dF9wYXJ0X3Jlc3VsdC5tZXNzYWdlKCkpKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgLy8gU2VuZHMg
dGhlIGdpdmVuIG1lc3NhZ2UgYW5kIGEgbmV3bGluZSB0byB0aGUgc29ja2V0LgorICB2b2lkIFNl
bmRMbihjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSkgeyBzb2NrZXRfd3JpdGVyXy0+U2VuZExu
KG1lc3NhZ2UpOyB9CisKKyAgLy8gQ2FsbGVkIGF0IHRoZSBzdGFydCBvZiBzdHJlYW1pbmcgdG8g
bm90aWZ5IHRoZSByZWNlaXZlciB3aGF0CisgIC8vIHByb3RvY29sIHdlIGFyZSB1c2luZy4KKyAg
dm9pZCBTdGFydCgpIHsgU2VuZExuKCJndGVzdF9zdHJlYW1pbmdfcHJvdG9jb2xfdmVyc2lvbj0x
LjAiKTsgfQorCisgIHN0ZDo6c3RyaW5nIEZvcm1hdEJvb2woYm9vbCB2YWx1ZSkgeyByZXR1cm4g
dmFsdWUgPyAiMSIgOiAiMCI7IH0KKworICBjb25zdCBzY29wZWRfcHRyPEFic3RyYWN0U29ja2V0
V3JpdGVyPiBzb2NrZXRfd3JpdGVyXzsKKworICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJ
R05fKFN0cmVhbWluZ0xpc3RlbmVyKTsKK307ICAvLyBjbGFzcyBTdHJlYW1pbmdMaXN0ZW5lcgor
CisjZW5kaWYgIC8vIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KKworfSAgLy8gbmFtZXNwYWNl
IGludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZworCisjZW5kaWYgIC8vIEdURVNUX1NS
Q19HVEVTVF9JTlRFUk5BTF9JTkxfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NyYy9ndGVz
dC1wb3J0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LXBvcnQuY2MKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDgw
YmQ4MGM0ODMyMjliZjhiNTA3MDhkZjFhZWJmMTUwZTNkYzFkNgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L3NyYy9ndGVzdC1wb3J0LmNjCkBAIC0wLDAgKzEsMTI0MSBAQAorLy8gQ29w
eXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8v
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmli
dXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEF1dGhvcjogd2Fu
QGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKworI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0
ZXN0LXBvcnQuaCIKKworI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgor
I2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8ZnN0cmVh
bT4KKworI2lmIEdURVNUX09TX1dJTkRPV1MKKyMgaW5jbHVkZSA8d2luZG93cy5oPgorIyBpbmNs
dWRlIDxpby5oPgorIyBpbmNsdWRlIDxzeXMvc3RhdC5oPgorIyBpbmNsdWRlIDxtYXA+ICAvLyBV
c2VkIGluIFRocmVhZExvY2FsLgorI2Vsc2UKKyMgaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYg
IC8vIEdURVNUX09TX1dJTkRPV1MKKworI2lmIEdURVNUX09TX01BQworIyBpbmNsdWRlIDxtYWNo
L21hY2hfaW5pdC5oPgorIyBpbmNsdWRlIDxtYWNoL3Rhc2suaD4KKyMgaW5jbHVkZSA8bWFjaC92
bV9tYXAuaD4KKyNlbmRpZiAgLy8gR1RFU1RfT1NfTUFDCisKKyNpZiBHVEVTVF9PU19RTlgKKyMg
aW5jbHVkZSA8ZGV2Y3RsLmg+CisjIGluY2x1ZGUgPGZjbnRsLmg+CisjIGluY2x1ZGUgPHN5cy9w
cm9jZnMuaD4KKyNlbmRpZiAgLy8gR1RFU1RfT1NfUU5YCisKKyNpZiBHVEVTVF9PU19BSVgKKyMg
aW5jbHVkZSA8cHJvY2luZm8uaD4KKyMgaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYgIC8v
IEdURVNUX09TX0FJWAorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiCisjaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWlu
dGVybmFsLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmgiCisKKy8v
IEluZGljYXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBpcyBwYXJ0IG9mIEdvb2dsZSBU
ZXN0J3MKKy8vIGltcGxlbWVudGF0aW9uLiAgSXQgbXVzdCBjb21lIGJlZm9yZSBndGVzdC1pbnRl
cm5hbC1pbmwuaCBpcworLy8gaW5jbHVkZWQsIG9yIHRoZXJlIHdpbGwgYmUgYSBjb21waWxlciBl
cnJvci4gIFRoaXMgdHJpY2sgZXhpc3RzIHRvCisvLyBwcmV2ZW50IHRoZSBhY2NpZGVudGFsIGlu
Y2x1c2lvbiBvZiBndGVzdC1pbnRlcm5hbC1pbmwuaCBpbiB0aGUKKy8vIHVzZXIncyBjb2RlLgor
I2RlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8gMQorI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRl
cm5hbC1pbmwuaCIKKyN1bmRlZiBHVEVTVF9JTVBMRU1FTlRBVElPTl8KKworbmFtZXNwYWNlIHRl
c3RpbmcgeworbmFtZXNwYWNlIGludGVybmFsIHsKKworI2lmIGRlZmluZWQoX01TQ19WRVIpIHx8
IGRlZmluZWQoX19CT1JMQU5EQ19fKQorLy8gTVNWQyBhbmQgQysrQnVpbGRlciBkbyBub3QgcHJv
dmlkZSBhIGRlZmluaXRpb24gb2YgU1RERVJSX0ZJTEVOTy4KK2NvbnN0IGludCBrU3RkT3V0Rmls
ZW5vID0gMTsKK2NvbnN0IGludCBrU3RkRXJyRmlsZW5vID0gMjsKKyNlbHNlCitjb25zdCBpbnQg
a1N0ZE91dEZpbGVubyA9IFNURE9VVF9GSUxFTk87Citjb25zdCBpbnQga1N0ZEVyckZpbGVubyA9
IFNUREVSUl9GSUxFTk87CisjZW5kaWYgIC8vIF9NU0NfVkVSCisKKyNpZiBHVEVTVF9PU19MSU5V
WAorCituYW1lc3BhY2UgewordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitUIFJlYWRQcm9jRmlsZUZp
ZWxkKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlbmFtZSwgaW50IGZpZWxkKSB7CisgIHN0ZDo6c3Ry
aW5nIGR1bW15OworICBzdGQ6Omlmc3RyZWFtIGZpbGUoZmlsZW5hbWUuY19zdHIoKSk7CisgIHdo
aWxlIChmaWVsZC0tID4gMCkgeworICAgIGZpbGUgPj4gZHVtbXk7CisgIH0KKyAgVCBvdXRwdXQg
PSAwOworICBmaWxlID4+IG91dHB1dDsKKyAgcmV0dXJuIG91dHB1dDsKK30KK30gIC8vIG5hbWVz
cGFjZQorCisvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYWN0aXZlIHRocmVhZHMsIG9yIDAgd2hl
biB0aGVyZSBpcyBhbiBlcnJvci4KK3NpemVfdCBHZXRUaHJlYWRDb3VudCgpIHsKKyAgY29uc3Qg
c3RkOjpzdHJpbmcgZmlsZW5hbWUgPQorICAgICAgKE1lc3NhZ2UoKSA8PCAiL3Byb2MvIiA8PCBn
ZXRwaWQoKSA8PCAiL3N0YXQiKS5HZXRTdHJpbmcoKTsKKyAgcmV0dXJuIFJlYWRQcm9jRmlsZUZp
ZWxkPGludD4oZmlsZW5hbWUsIDE5KTsKK30KKworI2VsaWYgR1RFU1RfT1NfTUFDCisKK3NpemVf
dCBHZXRUaHJlYWRDb3VudCgpIHsKKyAgY29uc3QgdGFza190IHRhc2sgPSBtYWNoX3Rhc2tfc2Vs
ZigpOworICBtYWNoX21zZ190eXBlX251bWJlcl90IHRocmVhZF9jb3VudDsKKyAgdGhyZWFkX2Fj
dF9hcnJheV90IHRocmVhZF9saXN0OworICBjb25zdCBrZXJuX3JldHVybl90IHN0YXR1cyA9IHRh
c2tfdGhyZWFkcyh0YXNrLCAmdGhyZWFkX2xpc3QsICZ0aHJlYWRfY291bnQpOworICBpZiAoc3Rh
dHVzID09IEtFUk5fU1VDQ0VTUykgeworICAgIC8vIHRhc2tfdGhyZWFkcyBhbGxvY2F0ZXMgcmVz
b3VyY2VzIGluIHRocmVhZF9saXN0IGFuZCB3ZSBuZWVkIHRvIGZyZWUgdGhlbQorICAgIC8vIHRv
IGF2b2lkIGxlYWtzLgorICAgIHZtX2RlYWxsb2NhdGUodGFzaywKKyAgICAgICAgICAgICAgICAg
IHJlaW50ZXJwcmV0X2Nhc3Q8dm1fYWRkcmVzc190Pih0aHJlYWRfbGlzdCksCisgICAgICAgICAg
ICAgICAgICBzaXplb2YodGhyZWFkX3QpICogdGhyZWFkX2NvdW50KTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8c2l6ZV90Pih0aHJlYWRfY291bnQpOworICB9IGVsc2UgeworICAgIHJldHVybiAw
OworICB9Cit9CisKKyNlbGlmIEdURVNUX09TX1FOWAorCisvLyBSZXR1cm5zIHRoZSBudW1iZXIg
b2YgdGhyZWFkcyBydW5uaW5nIGluIHRoZSBwcm9jZXNzLCBvciAwIHRvIGluZGljYXRlIHRoYXQK
Ky8vIHdlIGNhbm5vdCBkZXRlY3QgaXQuCitzaXplX3QgR2V0VGhyZWFkQ291bnQoKSB7CisgIGNv
bnN0IGludCBmZCA9IG9wZW4oIi9wcm9jL3NlbGYvYXMiLCBPX1JET05MWSk7CisgIGlmIChmZCA8
IDApIHsKKyAgICByZXR1cm4gMDsKKyAgfQorICBwcm9jZnNfaW5mbyBwcm9jZXNzX2luZm87Cisg
IGNvbnN0IGludCBzdGF0dXMgPQorICAgICAgZGV2Y3RsKGZkLCBEQ01EX1BST0NfSU5GTywgJnBy
b2Nlc3NfaW5mbywgc2l6ZW9mKHByb2Nlc3NfaW5mbyksIE5VTEwpOworICBjbG9zZShmZCk7Cisg
IGlmIChzdGF0dXMgPT0gRU9LKSB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4ocHJv
Y2Vzc19pbmZvLm51bV90aHJlYWRzKTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gMDsKKyAgfQor
fQorCisjZWxpZiBHVEVTVF9PU19BSVgKKworc2l6ZV90IEdldFRocmVhZENvdW50KCkgeworICBz
dHJ1Y3QgcHJvY2VudHJ5NjQgZW50cnk7CisgIHBpZF90IHBpZCA9IGdldHBpZCgpOworICBpbnQg
c3RhdHVzID0gZ2V0cHJvY3M2NCgmZW50cnksIHNpemVvZihlbnRyeSksIE5VTEwsIDAsICZwaWQs
IDEpOworICBpZiAoc3RhdHVzID09IDEpIHsKKyAgICByZXR1cm4gZW50cnkucGlfdGhjb3VudDsK
KyAgfSBlbHNlIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQorCisjZWxzZQorCitzaXplX3QgR2V0
VGhyZWFkQ291bnQoKSB7CisgIC8vIFRoZXJlJ3Mgbm8gcG9ydGFibGUgd2F5IHRvIGRldGVjdCB0
aGUgbnVtYmVyIG9mIHRocmVhZHMsIHNvIHdlIGp1c3QKKyAgLy8gcmV0dXJuIDAgdG8gaW5kaWNh
dGUgdGhhdCB3ZSBjYW5ub3QgZGV0ZWN0IGl0LgorICByZXR1cm4gMDsKK30KKworI2VuZGlmICAv
LyBHVEVTVF9PU19MSU5VWAorCisjaWYgR1RFU1RfSVNfVEhSRUFEU0FGRSAmJiBHVEVTVF9PU19X
SU5ET1dTCisKK3ZvaWQgU2xlZXBNaWxsaXNlY29uZHMoaW50IG4pIHsKKyAgOjpTbGVlcChuKTsK
K30KKworQXV0b0hhbmRsZTo6QXV0b0hhbmRsZSgpCisgICAgOiBoYW5kbGVfKElOVkFMSURfSEFO
RExFX1ZBTFVFKSB7fQorCitBdXRvSGFuZGxlOjpBdXRvSGFuZGxlKEhhbmRsZSBoYW5kbGUpCisg
ICAgOiBoYW5kbGVfKGhhbmRsZSkge30KKworQXV0b0hhbmRsZTo6fkF1dG9IYW5kbGUoKSB7Cisg
IFJlc2V0KCk7Cit9CisKK0F1dG9IYW5kbGU6OkhhbmRsZSBBdXRvSGFuZGxlOjpHZXQoKSBjb25z
dCB7CisgIHJldHVybiBoYW5kbGVfOworfQorCit2b2lkIEF1dG9IYW5kbGU6OlJlc2V0KCkgewor
ICBSZXNldChJTlZBTElEX0hBTkRMRV9WQUxVRSk7Cit9CisKK3ZvaWQgQXV0b0hhbmRsZTo6UmVz
ZXQoSEFORExFIGhhbmRsZSkgeworICAvLyBSZXNldHRpbmcgd2l0aCB0aGUgc2FtZSBoYW5kbGUg
d2UgYWxyZWFkeSBvd24gaXMgaW52YWxpZC4KKyAgaWYgKGhhbmRsZV8gIT0gaGFuZGxlKSB7Cisg
ICAgaWYgKElzQ2xvc2VhYmxlKCkpIHsKKyAgICAgIDo6Q2xvc2VIYW5kbGUoaGFuZGxlXyk7Cisg
ICAgfQorICAgIGhhbmRsZV8gPSBoYW5kbGU7CisgIH0gZWxzZSB7CisgICAgR1RFU1RfQ0hFQ0tf
KCFJc0Nsb3NlYWJsZSgpKQorICAgICAgICA8PCAiUmVzZXR0aW5nIGEgdmFsaWQgaGFuZGxlIHRv
IGl0c2VsZiBpcyBsaWtlbHkgYSBwcm9ncmFtbWVyIGVycm9yICIKKyAgICAgICAgICAgICJhbmQg
dGh1cyBub3QgYWxsb3dlZC4iOworICB9Cit9CisKK2Jvb2wgQXV0b0hhbmRsZTo6SXNDbG9zZWFi
bGUoKSBjb25zdCB7CisgIC8vIERpZmZlcmVudCBXaW5kb3dzIEFQSXMgbWF5IHVzZSBlaXRoZXIg
b2YgdGhlc2UgdmFsdWVzIHRvIHJlcHJlc2VudCBhbgorICAvLyBpbnZhbGlkIGhhbmRsZS4KKyAg
cmV0dXJuIGhhbmRsZV8gIT0gTlVMTCAmJiBoYW5kbGVfICE9IElOVkFMSURfSEFORExFX1ZBTFVF
OworfQorCitOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbigpCisgICAgOiBldmVudF8oOjpDcmVh
dGVFdmVudChOVUxMLCAgIC8vIERlZmF1bHQgc2VjdXJpdHkgYXR0cmlidXRlcy4KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRSVUUsICAgLy8gRG8gbm90IHJlc2V0IGF1dG9tYXRpY2FsbHku
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwgIC8vIEluaXRpYWxseSB1bnNldC4K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpKSB7ICAvLyBBbm9ueW1vdXMgZXZlbnQu
CisgIEdURVNUX0NIRUNLXyhldmVudF8uR2V0KCkgIT0gTlVMTCk7Cit9CisKK3ZvaWQgTm90aWZp
Y2F0aW9uOjpOb3RpZnkoKSB7CisgIEdURVNUX0NIRUNLXyg6OlNldEV2ZW50KGV2ZW50Xy5HZXQo
KSkgIT0gRkFMU0UpOworfQorCit2b2lkIE5vdGlmaWNhdGlvbjo6V2FpdEZvck5vdGlmaWNhdGlv
bigpIHsKKyAgR1RFU1RfQ0hFQ0tfKAorICAgICAgOjpXYWl0Rm9yU2luZ2xlT2JqZWN0KGV2ZW50
Xy5HZXQoKSwgSU5GSU5JVEUpID09IFdBSVRfT0JKRUNUXzApOworfQorCitNdXRleDo6TXV0ZXgo
KQorICAgIDogb3duZXJfdGhyZWFkX2lkXygwKSwKKyAgICAgIHR5cGVfKGtEeW5hbWljKSwKKyAg
ICAgIGNyaXRpY2FsX3NlY3Rpb25faW5pdF9waGFzZV8oMCksCisgICAgICBjcml0aWNhbF9zZWN0
aW9uXyhuZXcgQ1JJVElDQUxfU0VDVElPTikgeworICA6OkluaXRpYWxpemVDcml0aWNhbFNlY3Rp
b24oY3JpdGljYWxfc2VjdGlvbl8pOworfQorCitNdXRleDo6fk11dGV4KCkgeworICAvLyBTdGF0
aWMgbXV0ZXhlcyBhcmUgbGVha2VkIGludGVudGlvbmFsbHkuIEl0IGlzIG5vdCB0aHJlYWQtc2Fm
ZSB0byB0cnkKKyAgLy8gdG8gY2xlYW4gdGhlbSB1cC4KKyAgLy8gVE9ETyh5dWthd2EpOiBTd2l0
Y2ggdG8gU2xpbSBSZWFkZXIvV3JpdGVyIChTUlcpIExvY2tzLCB3aGljaCByZXF1aXJlcworICAv
LyBub3RoaW5nIHRvIGNsZWFuIGl0IHVwIGJ1dCBpcyBhdmFpbGFibGUgb25seSBvbiBWaXN0YSBh
bmQgbGF0ZXIuCisgIC8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93
aW5kb3dzL2Rlc2t0b3AvYWE5MDQ5MzcuYXNweAorICBpZiAodHlwZV8gPT0ga0R5bmFtaWMpIHsK
KyAgICA6OkRlbGV0ZUNyaXRpY2FsU2VjdGlvbihjcml0aWNhbF9zZWN0aW9uXyk7CisgICAgZGVs
ZXRlIGNyaXRpY2FsX3NlY3Rpb25fOworICAgIGNyaXRpY2FsX3NlY3Rpb25fID0gTlVMTDsKKyAg
fQorfQorCit2b2lkIE11dGV4OjpMb2NrKCkgeworICBUaHJlYWRTYWZlTGF6eUluaXQoKTsKKyAg
OjpFbnRlckNyaXRpY2FsU2VjdGlvbihjcml0aWNhbF9zZWN0aW9uXyk7CisgIG93bmVyX3RocmVh
ZF9pZF8gPSA6OkdldEN1cnJlbnRUaHJlYWRJZCgpOworfQorCit2b2lkIE11dGV4OjpVbmxvY2so
KSB7CisgIFRocmVhZFNhZmVMYXp5SW5pdCgpOworICAvLyBXZSBkb24ndCBwcm90ZWN0IHdyaXRp
bmcgdG8gb3duZXJfdGhyZWFkX2lkXyBoZXJlLCBhcyBpdCdzIHRoZQorICAvLyBjYWxsZXIncyBy
ZXNwb25zaWJpbGl0eSB0byBlbnN1cmUgdGhhdCB0aGUgY3VycmVudCB0aHJlYWQgaG9sZHMgdGhl
CisgIC8vIG11dGV4IHdoZW4gdGhpcyBpcyBjYWxsZWQuCisgIG93bmVyX3RocmVhZF9pZF8gPSAw
OworICA6OkxlYXZlQ3JpdGljYWxTZWN0aW9uKGNyaXRpY2FsX3NlY3Rpb25fKTsKK30KKworLy8g
RG9lcyBub3RoaW5nIGlmIHRoZSBjdXJyZW50IHRocmVhZCBob2xkcyB0aGUgbXV0ZXguIE90aGVy
d2lzZSwgY3Jhc2hlcworLy8gd2l0aCBoaWdoIHByb2JhYmlsaXR5Lgordm9pZCBNdXRleDo6QXNz
ZXJ0SGVsZCgpIHsKKyAgVGhyZWFkU2FmZUxhenlJbml0KCk7CisgIEdURVNUX0NIRUNLXyhvd25l
cl90aHJlYWRfaWRfID09IDo6R2V0Q3VycmVudFRocmVhZElkKCkpCisgICAgICA8PCAiVGhlIGN1
cnJlbnQgdGhyZWFkIGlzIG5vdCBob2xkaW5nIHRoZSBtdXRleCBAIiA8PCB0aGlzOworfQorCisv
LyBJbml0aWFsaXplcyBvd25lcl90aHJlYWRfaWRfIGFuZCBjcml0aWNhbF9zZWN0aW9uXyBpbiBz
dGF0aWMgbXV0ZXhlcy4KK3ZvaWQgTXV0ZXg6OlRocmVhZFNhZmVMYXp5SW5pdCgpIHsKKyAgLy8g
RHluYW1pYyBtdXRleGVzIGFyZSBpbml0aWFsaXplZCBpbiB0aGUgY29uc3RydWN0b3IuCisgIGlm
ICh0eXBlXyA9PSBrU3RhdGljKSB7CisgICAgc3dpdGNoICgKKyAgICAgICAgOjpJbnRlcmxvY2tl
ZENvbXBhcmVFeGNoYW5nZSgmY3JpdGljYWxfc2VjdGlvbl9pbml0X3BoYXNlXywgMUwsIDBMKSkg
eworICAgICAgY2FzZSAwOgorICAgICAgICAvLyBJZiBjcml0aWNhbF9zZWN0aW9uX2luaXRfcGhh
c2VfIHdhcyAwIGJlZm9yZSB0aGUgZXhjaGFuZ2UsIHdlCisgICAgICAgIC8vIGFyZSB0aGUgZmly
c3QgdG8gdGVzdCBpdCBhbmQgbmVlZCB0byBwZXJmb3JtIHRoZSBpbml0aWFsaXphdGlvbi4KKyAg
ICAgICAgb3duZXJfdGhyZWFkX2lkXyA9IDA7CisgICAgICAgIGNyaXRpY2FsX3NlY3Rpb25fID0g
bmV3IENSSVRJQ0FMX1NFQ1RJT047CisgICAgICAgIDo6SW5pdGlhbGl6ZUNyaXRpY2FsU2VjdGlv
bihjcml0aWNhbF9zZWN0aW9uXyk7CisgICAgICAgIC8vIFVwZGF0ZXMgdGhlIGNyaXRpY2FsX3Nl
Y3Rpb25faW5pdF9waGFzZV8gdG8gMiB0byBzaWduYWwKKyAgICAgICAgLy8gaW5pdGlhbGl6YXRp
b24gY29tcGxldGUuCisgICAgICAgIEdURVNUX0NIRUNLXyg6OkludGVybG9ja2VkQ29tcGFyZUV4
Y2hhbmdlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAmY3JpdGljYWxfc2VjdGlvbl9pbml0
X3BoYXNlXywgMkwsIDFMKSA9PQorICAgICAgICAgICAgICAgICAgICAgIDFMKTsKKyAgICAgICAg
YnJlYWs7CisgICAgICBjYXNlIDE6CisgICAgICAgIC8vIFNvbWVib2R5IGVsc2UgaXMgYWxyZWFk
eSBpbml0aWFsaXppbmcgdGhlIG11dGV4OyBzcGluIHVudGlsIHRoZXkKKyAgICAgICAgLy8gYXJl
IGRvbmUuCisgICAgICAgIHdoaWxlICg6OkludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKCZjcml0
aWNhbF9zZWN0aW9uX2luaXRfcGhhc2VfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMkwpICE9IDJMKSB7CisgICAgICAgICAgLy8gUG9zc2libHkgeWllbGRzIHRoZSByZXN0
IG9mIHRoZSB0aHJlYWQncyB0aW1lIHNsaWNlIHRvIG90aGVyCisgICAgICAgICAgLy8gdGhyZWFk
cy4KKyAgICAgICAgICA6OlNsZWVwKDApOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisg
ICAgICBjYXNlIDI6CisgICAgICAgIGJyZWFrOyAgLy8gVGhlIG11dGV4IGlzIGFscmVhZHkgaW5p
dGlhbGl6ZWQgYW5kIHJlYWR5IGZvciB1c2UuCisKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIEdU
RVNUX0NIRUNLXyhmYWxzZSkKKyAgICAgICAgICAgIDw8ICJVbmV4cGVjdGVkIHZhbHVlIG9mIGNy
aXRpY2FsX3NlY3Rpb25faW5pdF9waGFzZV8gIgorICAgICAgICAgICAgPDwgIndoaWxlIGluaXRp
YWxpemluZyBhIHN0YXRpYyBtdXRleC4iOworICAgIH0KKyAgfQorfQorCituYW1lc3BhY2Ugewor
CitjbGFzcyBUaHJlYWRXaXRoUGFyYW1TdXBwb3J0IDogcHVibGljIFRocmVhZFdpdGhQYXJhbUJh
c2UgeworIHB1YmxpYzoKKyAgc3RhdGljIEhBTkRMRSBDcmVhdGVUaHJlYWQoUnVubmFibGUqIHJ1
bm5hYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RpZmljYXRpb24qIHRocmVh
ZF9jYW5fc3RhcnQpIHsKKyAgICBUaHJlYWRNYWluUGFyYW0qIHBhcmFtID0gbmV3IFRocmVhZE1h
aW5QYXJhbShydW5uYWJsZSwgdGhyZWFkX2Nhbl9zdGFydCk7CisgICAgRFdPUkQgdGhyZWFkX2lk
OworICAgIC8vIFRPRE8oeXVrYXdhKTogQ29uc2lkZXIgdG8gdXNlIF9iZWdpbnRocmVhZGV4IGlu
c3RlYWQuCisgICAgSEFORExFIHRocmVhZF9oYW5kbGUgPSA6OkNyZWF0ZVRocmVhZCgKKyAgICAg
ICAgTlVMTCwgICAgLy8gRGVmYXVsdCBzZWN1cml0eS4KKyAgICAgICAgMCwgICAgICAgLy8gRGVm
YXVsdCBzdGFjayBzaXplLgorICAgICAgICAmVGhyZWFkV2l0aFBhcmFtU3VwcG9ydDo6VGhyZWFk
TWFpbiwKKyAgICAgICAgcGFyYW0sICAgLy8gUGFyYW1ldGVyIHRvIFRocmVhZE1haW5TdGF0aWMK
KyAgICAgICAgMHgwLCAgICAgLy8gRGVmYXVsdCBjcmVhdGlvbiBmbGFncy4KKyAgICAgICAgJnRo
cmVhZF9pZCk7ICAvLyBOZWVkIGEgdmFsaWQgcG9pbnRlciBmb3IgdGhlIGNhbGwgdG8gd29yayB1
bmRlciBXaW45OC4KKyAgICBHVEVTVF9DSEVDS18odGhyZWFkX2hhbmRsZSAhPSBOVUxMKSA8PCAi
Q3JlYXRlVGhyZWFkIGZhaWxlZCB3aXRoIGVycm9yICIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8PCA6OkdldExhc3RFcnJvcigpIDw8ICIuIjsKKyAgICBpZiAodGhy
ZWFkX2hhbmRsZSA9PSBOVUxMKSB7CisgICAgICBkZWxldGUgcGFyYW07CisgICAgfQorICAgIHJl
dHVybiB0aHJlYWRfaGFuZGxlOworICB9CisKKyBwcml2YXRlOgorICBzdHJ1Y3QgVGhyZWFkTWFp
blBhcmFtIHsKKyAgICBUaHJlYWRNYWluUGFyYW0oUnVubmFibGUqIHJ1bm5hYmxlLCBOb3RpZmlj
YXRpb24qIHRocmVhZF9jYW5fc3RhcnQpCisgICAgICAgIDogcnVubmFibGVfKHJ1bm5hYmxlKSwK
KyAgICAgICAgICB0aHJlYWRfY2FuX3N0YXJ0Xyh0aHJlYWRfY2FuX3N0YXJ0KSB7CisgICAgfQor
ICAgIHNjb3BlZF9wdHI8UnVubmFibGU+IHJ1bm5hYmxlXzsKKyAgICAvLyBEb2VzIG5vdCBvd24u
CisgICAgTm90aWZpY2F0aW9uKiB0aHJlYWRfY2FuX3N0YXJ0XzsKKyAgfTsKKworICBzdGF0aWMg
RFdPUkQgV0lOQVBJIFRocmVhZE1haW4odm9pZCogcHRyKSB7CisgICAgLy8gVHJhbnNmZXJzIG93
bmVyc2hpcC4KKyAgICBzY29wZWRfcHRyPFRocmVhZE1haW5QYXJhbT4gcGFyYW0oc3RhdGljX2Nh
c3Q8VGhyZWFkTWFpblBhcmFtKj4ocHRyKSk7CisgICAgaWYgKHBhcmFtLT50aHJlYWRfY2FuX3N0
YXJ0XyAhPSBOVUxMKQorICAgICAgcGFyYW0tPnRocmVhZF9jYW5fc3RhcnRfLT5XYWl0Rm9yTm90
aWZpY2F0aW9uKCk7CisgICAgcGFyYW0tPnJ1bm5hYmxlXy0+UnVuKCk7CisgICAgcmV0dXJuIDA7
CisgIH0KKworICAvLyBQcm9oaWJpdCBpbnN0YW50aWF0aW9uLgorICBUaHJlYWRXaXRoUGFyYW1T
dXBwb3J0KCk7CisKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUaHJlYWRXaXRo
UGFyYW1TdXBwb3J0KTsKK307CisKK30gIC8vIG5hbWVzcGFjZQorCitUaHJlYWRXaXRoUGFyYW1C
YXNlOjpUaHJlYWRXaXRoUGFyYW1CYXNlKFJ1bm5hYmxlICpydW5uYWJsZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uKiB0aHJlYWRfY2FuX3N0
YXJ0KQorICAgICAgOiB0aHJlYWRfKFRocmVhZFdpdGhQYXJhbVN1cHBvcnQ6OkNyZWF0ZVRocmVh
ZChydW5uYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGhyZWFkX2Nhbl9zdGFydCkpIHsKK30KKworVGhyZWFkV2l0aFBhcmFtQmFzZTo6
flRocmVhZFdpdGhQYXJhbUJhc2UoKSB7CisgIEpvaW4oKTsKK30KKwordm9pZCBUaHJlYWRXaXRo
UGFyYW1CYXNlOjpKb2luKCkgeworICBHVEVTVF9DSEVDS18oOjpXYWl0Rm9yU2luZ2xlT2JqZWN0
KHRocmVhZF8uR2V0KCksIElORklOSVRFKSA9PSBXQUlUX09CSkVDVF8wKQorICAgICAgPDwgIkZh
aWxlZCB0byBqb2luIHRoZSB0aHJlYWQgd2l0aCBlcnJvciAiIDw8IDo6R2V0TGFzdEVycm9yKCkg
PDwgIi4iOworfQorCisvLyBNYXBzIGEgdGhyZWFkIHRvIGEgc2V0IG9mIFRocmVhZElkVG9UaHJl
YWRMb2NhbHMgdGhhdCBoYXZlIHZhbHVlcworLy8gaW5zdGFudGlhdGVkIG9uIHRoYXQgdGhyZWFk
IGFuZCBub3RpZmllcyB0aGVtIHdoZW4gdGhlIHRocmVhZCBleGl0cy4gIEEKKy8vIFRocmVhZExv
Y2FsIGluc3RhbmNlIGlzIGV4cGVjdGVkIHRvIHBlcnNpc3QgdW50aWwgYWxsIHRocmVhZHMgaXQg
aGFzCisvLyB2YWx1ZXMgb24gaGF2ZSB0ZXJtaW5hdGVkLgorY2xhc3MgVGhyZWFkTG9jYWxSZWdp
c3RyeUltcGwgeworIHB1YmxpYzoKKyAgLy8gUmVnaXN0ZXJzIHRocmVhZF9sb2NhbF9pbnN0YW5j
ZSBhcyBoYXZpbmcgdmFsdWUgb24gdGhlIGN1cnJlbnQgdGhyZWFkLgorICAvLyBSZXR1cm5zIGEg
dmFsdWUgdGhhdCBjYW4gYmUgdXNlZCB0byBpZGVudGlmeSB0aGUgdGhyZWFkIGZyb20gb3RoZXIg
dGhyZWFkcy4KKyAgc3RhdGljIFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlKiBHZXRWYWx1ZU9u
Q3VycmVudFRocmVhZCgKKyAgICAgIGNvbnN0IFRocmVhZExvY2FsQmFzZSogdGhyZWFkX2xvY2Fs
X2luc3RhbmNlKSB7CisgICAgRFdPUkQgY3VycmVudF90aHJlYWQgPSA6OkdldEN1cnJlbnRUaHJl
YWRJZCgpOworICAgIE11dGV4TG9jayBsb2NrKCZtdXRleF8pOworICAgIFRocmVhZElkVG9UaHJl
YWRMb2NhbHMqIGNvbnN0IHRocmVhZF90b190aHJlYWRfbG9jYWxzID0KKyAgICAgICAgR2V0VGhy
ZWFkTG9jYWxzTWFwTG9ja2VkKCk7CisgICAgVGhyZWFkSWRUb1RocmVhZExvY2Fsczo6aXRlcmF0
b3IgdGhyZWFkX2xvY2FsX3BvcyA9CisgICAgICAgIHRocmVhZF90b190aHJlYWRfbG9jYWxzLT5m
aW5kKGN1cnJlbnRfdGhyZWFkKTsKKyAgICBpZiAodGhyZWFkX2xvY2FsX3BvcyA9PSB0aHJlYWRf
dG9fdGhyZWFkX2xvY2Fscy0+ZW5kKCkpIHsKKyAgICAgIHRocmVhZF9sb2NhbF9wb3MgPSB0aHJl
YWRfdG9fdGhyZWFkX2xvY2Fscy0+aW5zZXJ0KAorICAgICAgICAgIHN0ZDo6bWFrZV9wYWlyKGN1
cnJlbnRfdGhyZWFkLCBUaHJlYWRMb2NhbFZhbHVlcygpKSkuZmlyc3Q7CisgICAgICBTdGFydFdh
dGNoZXJUaHJlYWRGb3IoY3VycmVudF90aHJlYWQpOworICAgIH0KKyAgICBUaHJlYWRMb2NhbFZh
bHVlcyYgdGhyZWFkX2xvY2FsX3ZhbHVlcyA9IHRocmVhZF9sb2NhbF9wb3MtPnNlY29uZDsKKyAg
ICBUaHJlYWRMb2NhbFZhbHVlczo6aXRlcmF0b3IgdmFsdWVfcG9zID0KKyAgICAgICAgdGhyZWFk
X2xvY2FsX3ZhbHVlcy5maW5kKHRocmVhZF9sb2NhbF9pbnN0YW5jZSk7CisgICAgaWYgKHZhbHVl
X3BvcyA9PSB0aHJlYWRfbG9jYWxfdmFsdWVzLmVuZCgpKSB7CisgICAgICB2YWx1ZV9wb3MgPQor
ICAgICAgICAgIHRocmVhZF9sb2NhbF92YWx1ZXMKKyAgICAgICAgICAgICAgLmluc2VydChzdGQ6
Om1ha2VfcGFpcigKKyAgICAgICAgICAgICAgICAgIHRocmVhZF9sb2NhbF9pbnN0YW5jZSwKKyAg
ICAgICAgICAgICAgICAgIGxpbmtlZF9wdHI8VGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2U+KAor
ICAgICAgICAgICAgICAgICAgICAgIHRocmVhZF9sb2NhbF9pbnN0YW5jZS0+TmV3VmFsdWVGb3JD
dXJyZW50VGhyZWFkKCkpKSkKKyAgICAgICAgICAgICAgLmZpcnN0OworICAgIH0KKyAgICByZXR1
cm4gdmFsdWVfcG9zLT5zZWNvbmQuZ2V0KCk7CisgIH0KKworICBzdGF0aWMgdm9pZCBPblRocmVh
ZExvY2FsRGVzdHJveWVkKAorICAgICAgY29uc3QgVGhyZWFkTG9jYWxCYXNlKiB0aHJlYWRfbG9j
YWxfaW5zdGFuY2UpIHsKKyAgICBzdGQ6OnZlY3RvcjxsaW5rZWRfcHRyPFRocmVhZExvY2FsVmFs
dWVIb2xkZXJCYXNlPiA+IHZhbHVlX2hvbGRlcnM7CisgICAgLy8gQ2xlYW4gdXAgdGhlIFRocmVh
ZExvY2FsVmFsdWVzIGRhdGEgc3RydWN0dXJlIHdoaWxlIGhvbGRpbmcgdGhlIGxvY2ssIGJ1dAor
ICAgIC8vIGRlZmVyIHRoZSBkZXN0cnVjdGlvbiBvZiB0aGUgVGhyZWFkTG9jYWxWYWx1ZUhvbGRl
ckJhc2VzLgorICAgIHsKKyAgICAgIE11dGV4TG9jayBsb2NrKCZtdXRleF8pOworICAgICAgVGhy
ZWFkSWRUb1RocmVhZExvY2FscyogY29uc3QgdGhyZWFkX3RvX3RocmVhZF9sb2NhbHMgPQorICAg
ICAgICAgIEdldFRocmVhZExvY2Fsc01hcExvY2tlZCgpOworICAgICAgZm9yIChUaHJlYWRJZFRv
VGhyZWFkTG9jYWxzOjppdGVyYXRvciBpdCA9CisgICAgICAgICAgdGhyZWFkX3RvX3RocmVhZF9s
b2NhbHMtPmJlZ2luKCk7CisgICAgICAgICAgaXQgIT0gdGhyZWFkX3RvX3RocmVhZF9sb2NhbHMt
PmVuZCgpOworICAgICAgICAgICsraXQpIHsKKyAgICAgICAgVGhyZWFkTG9jYWxWYWx1ZXMmIHRo
cmVhZF9sb2NhbF92YWx1ZXMgPSBpdC0+c2Vjb25kOworICAgICAgICBUaHJlYWRMb2NhbFZhbHVl
czo6aXRlcmF0b3IgdmFsdWVfcG9zID0KKyAgICAgICAgICAgIHRocmVhZF9sb2NhbF92YWx1ZXMu
ZmluZCh0aHJlYWRfbG9jYWxfaW5zdGFuY2UpOworICAgICAgICBpZiAodmFsdWVfcG9zICE9IHRo
cmVhZF9sb2NhbF92YWx1ZXMuZW5kKCkpIHsKKyAgICAgICAgICB2YWx1ZV9ob2xkZXJzLnB1c2hf
YmFjayh2YWx1ZV9wb3MtPnNlY29uZCk7CisgICAgICAgICAgdGhyZWFkX2xvY2FsX3ZhbHVlcy5l
cmFzZSh2YWx1ZV9wb3MpOworICAgICAgICAgIC8vIFRoaXMgJ2lmJyBjYW4gb25seSBiZSBzdWNj
ZXNzZnVsIGF0IG1vc3Qgb25jZSwgc28gdGhlb3JldGljYWxseSB3ZQorICAgICAgICAgIC8vIGNv
dWxkIGJyZWFrIG91dCBvZiB0aGUgbG9vcCBoZXJlLCBidXQgd2UgZG9uJ3QgYm90aGVyIGRvaW5n
IHNvLgorICAgICAgICB9CisgICAgICB9CisgICAgfQorICAgIC8vIE91dHNpZGUgdGhlIGxvY2ss
IGxldCB0aGUgZGVzdHJ1Y3RvciBmb3IgJ3ZhbHVlX2hvbGRlcnMnIGRlYWxsb2NhdGUgdGhlCisg
ICAgLy8gVGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2VzLgorICB9CisKKyAgc3RhdGljIHZvaWQg
T25UaHJlYWRFeGl0KERXT1JEIHRocmVhZF9pZCkgeworICAgIEdURVNUX0NIRUNLXyh0aHJlYWRf
aWQgIT0gMCkgPDwgOjpHZXRMYXN0RXJyb3IoKTsKKyAgICBzdGQ6OnZlY3RvcjxsaW5rZWRfcHRy
PFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlPiA+IHZhbHVlX2hvbGRlcnM7CisgICAgLy8gQ2xl
YW4gdXAgdGhlIFRocmVhZElkVG9UaHJlYWRMb2NhbHMgZGF0YSBzdHJ1Y3R1cmUgd2hpbGUgaG9s
ZGluZyB0aGUKKyAgICAvLyBsb2NrLCBidXQgZGVmZXIgdGhlIGRlc3RydWN0aW9uIG9mIHRoZSBU
aHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZXMuCisgICAgeworICAgICAgTXV0ZXhMb2NrIGxvY2so
Jm11dGV4Xyk7CisgICAgICBUaHJlYWRJZFRvVGhyZWFkTG9jYWxzKiBjb25zdCB0aHJlYWRfdG9f
dGhyZWFkX2xvY2FscyA9CisgICAgICAgICAgR2V0VGhyZWFkTG9jYWxzTWFwTG9ja2VkKCk7Cisg
ICAgICBUaHJlYWRJZFRvVGhyZWFkTG9jYWxzOjppdGVyYXRvciB0aHJlYWRfbG9jYWxfcG9zID0K
KyAgICAgICAgICB0aHJlYWRfdG9fdGhyZWFkX2xvY2Fscy0+ZmluZCh0aHJlYWRfaWQpOworICAg
ICAgaWYgKHRocmVhZF9sb2NhbF9wb3MgIT0gdGhyZWFkX3RvX3RocmVhZF9sb2NhbHMtPmVuZCgp
KSB7CisgICAgICAgIFRocmVhZExvY2FsVmFsdWVzJiB0aHJlYWRfbG9jYWxfdmFsdWVzID0gdGhy
ZWFkX2xvY2FsX3Bvcy0+c2Vjb25kOworICAgICAgICBmb3IgKFRocmVhZExvY2FsVmFsdWVzOjpp
dGVyYXRvciB2YWx1ZV9wb3MgPQorICAgICAgICAgICAgdGhyZWFkX2xvY2FsX3ZhbHVlcy5iZWdp
bigpOworICAgICAgICAgICAgdmFsdWVfcG9zICE9IHRocmVhZF9sb2NhbF92YWx1ZXMuZW5kKCk7
CisgICAgICAgICAgICArK3ZhbHVlX3BvcykgeworICAgICAgICAgIHZhbHVlX2hvbGRlcnMucHVz
aF9iYWNrKHZhbHVlX3Bvcy0+c2Vjb25kKTsKKyAgICAgICAgfQorICAgICAgICB0aHJlYWRfdG9f
dGhyZWFkX2xvY2Fscy0+ZXJhc2UodGhyZWFkX2xvY2FsX3Bvcyk7CisgICAgICB9CisgICAgfQor
ICAgIC8vIE91dHNpZGUgdGhlIGxvY2ssIGxldCB0aGUgZGVzdHJ1Y3RvciBmb3IgJ3ZhbHVlX2hv
bGRlcnMnIGRlYWxsb2NhdGUgdGhlCisgICAgLy8gVGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2Vz
LgorICB9CisKKyBwcml2YXRlOgorICAvLyBJbiBhIHBhcnRpY3VsYXIgdGhyZWFkLCBtYXBzIGEg
VGhyZWFkTG9jYWwgb2JqZWN0IHRvIGl0cyB2YWx1ZS4KKyAgdHlwZWRlZiBzdGQ6Om1hcDxjb25z
dCBUaHJlYWRMb2NhbEJhc2UqLAorICAgICAgICAgICAgICAgICAgIGxpbmtlZF9wdHI8VGhyZWFk
TG9jYWxWYWx1ZUhvbGRlckJhc2U+ID4gVGhyZWFkTG9jYWxWYWx1ZXM7CisgIC8vIFN0b3JlcyBh
bGwgVGhyZWFkSWRUb1RocmVhZExvY2FscyBoYXZpbmcgdmFsdWVzIGluIGEgdGhyZWFkLCBpbmRl
eGVkIGJ5CisgIC8vIHRocmVhZCdzIElELgorICB0eXBlZGVmIHN0ZDo6bWFwPERXT1JELCBUaHJl
YWRMb2NhbFZhbHVlcz4gVGhyZWFkSWRUb1RocmVhZExvY2FsczsKKworICAvLyBIb2xkcyB0aGUg
dGhyZWFkIGlkIGFuZCB0aHJlYWQgaGFuZGxlIHRoYXQgd2UgcGFzcyBmcm9tCisgIC8vIFN0YXJ0
V2F0Y2hlclRocmVhZEZvciB0byBXYXRjaGVyVGhyZWFkRnVuYy4KKyAgdHlwZWRlZiBzdGQ6OnBh
aXI8RFdPUkQsIEhBTkRMRT4gVGhyZWFkSWRBbmRIYW5kbGU7CisKKyAgc3RhdGljIHZvaWQgU3Rh
cnRXYXRjaGVyVGhyZWFkRm9yKERXT1JEIHRocmVhZF9pZCkgeworICAgIC8vIFRoZSByZXR1cm5l
ZCBoYW5kbGUgd2lsbCBiZSBrZXB0IGluIHRocmVhZF9tYXAgYW5kIGNsb3NlZCBieQorICAgIC8v
IHdhdGNoZXJfdGhyZWFkIGluIFdhdGNoZXJUaHJlYWRGdW5jLgorICAgIEhBTkRMRSB0aHJlYWQg
PSA6Ok9wZW5UaHJlYWQoU1lOQ0hST05JWkUgfCBUSFJFQURfUVVFUllfSU5GT1JNQVRJT04sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRocmVhZF9pZCk7CisgICAgR1RFU1RfQ0hFQ0tfKHRocmVhZCAhPSBO
VUxMKTsKKyAgICAvLyBXZSBuZWVkIHRvIHRvIHBhc3MgYSB2YWxpZCB0aHJlYWQgSUQgcG9pbnRl
ciBpbnRvIENyZWF0ZVRocmVhZCBmb3IgaXQKKyAgICAvLyB0byB3b3JrIGNvcnJlY3RseSB1bmRl
ciBXaW45OC4KKyAgICBEV09SRCB3YXRjaGVyX3RocmVhZF9pZDsKKyAgICBIQU5ETEUgd2F0Y2hl
cl90aHJlYWQgPSA6OkNyZWF0ZVRocmVhZCgKKyAgICAgICAgTlVMTCwgICAvLyBEZWZhdWx0IHNl
Y3VyaXR5LgorICAgICAgICAwLCAgICAgIC8vIERlZmF1bHQgc3RhY2sgc2l6ZQorICAgICAgICAm
VGhyZWFkTG9jYWxSZWdpc3RyeUltcGw6OldhdGNoZXJUaHJlYWRGdW5jLAorICAgICAgICByZWlu
dGVycHJldF9jYXN0PExQVk9JRD4obmV3IFRocmVhZElkQW5kSGFuZGxlKHRocmVhZF9pZCwgdGhy
ZWFkKSksCisgICAgICAgIENSRUFURV9TVVNQRU5ERUQsCisgICAgICAgICZ3YXRjaGVyX3RocmVh
ZF9pZCk7CisgICAgR1RFU1RfQ0hFQ0tfKHdhdGNoZXJfdGhyZWFkICE9IE5VTEwpOworICAgIC8v
IEdpdmUgdGhlIHdhdGNoZXIgdGhyZWFkIHRoZSBzYW1lIHByaW9yaXR5IGFzIG91cnMgdG8gYXZv
aWQgYmVpbmcKKyAgICAvLyBibG9ja2VkIGJ5IGl0LgorICAgIDo6U2V0VGhyZWFkUHJpb3JpdHko
d2F0Y2hlcl90aHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICA6OkdldFRocmVhZFByaW9y
aXR5KDo6R2V0Q3VycmVudFRocmVhZCgpKSk7CisgICAgOjpSZXN1bWVUaHJlYWQod2F0Y2hlcl90
aHJlYWQpOworICAgIDo6Q2xvc2VIYW5kbGUod2F0Y2hlcl90aHJlYWQpOworICB9CisKKyAgLy8g
TW9uaXRvcnMgZXhpdCBmcm9tIGEgZ2l2ZW4gdGhyZWFkIGFuZCBub3RpZmllcyB0aG9zZQorICAv
LyBUaHJlYWRJZFRvVGhyZWFkTG9jYWxzIGFib3V0IHRocmVhZCB0ZXJtaW5hdGlvbi4KKyAgc3Rh
dGljIERXT1JEIFdJTkFQSSBXYXRjaGVyVGhyZWFkRnVuYyhMUFZPSUQgcGFyYW0pIHsKKyAgICBj
b25zdCBUaHJlYWRJZEFuZEhhbmRsZSogdGFoID0KKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBUaHJlYWRJZEFuZEhhbmRsZSo+KHBhcmFtKTsKKyAgICBHVEVTVF9DSEVDS18oCisgICAg
ICAgIDo6V2FpdEZvclNpbmdsZU9iamVjdCh0YWgtPnNlY29uZCwgSU5GSU5JVEUpID09IFdBSVRf
T0JKRUNUXzApOworICAgIE9uVGhyZWFkRXhpdCh0YWgtPmZpcnN0KTsKKyAgICA6OkNsb3NlSGFu
ZGxlKHRhaC0+c2Vjb25kKTsKKyAgICBkZWxldGUgdGFoOworICAgIHJldHVybiAwOworICB9CisK
KyAgLy8gUmV0dXJucyBtYXAgb2YgdGhyZWFkIGxvY2FsIGluc3RhbmNlcy4KKyAgc3RhdGljIFRo
cmVhZElkVG9UaHJlYWRMb2NhbHMqIEdldFRocmVhZExvY2Fsc01hcExvY2tlZCgpIHsKKyAgICBt
dXRleF8uQXNzZXJ0SGVsZCgpOworICAgIHN0YXRpYyBUaHJlYWRJZFRvVGhyZWFkTG9jYWxzKiBt
YXAgPSBuZXcgVGhyZWFkSWRUb1RocmVhZExvY2FsczsKKyAgICByZXR1cm4gbWFwOworICB9CisK
KyAgLy8gUHJvdGVjdHMgYWNjZXNzIHRvIEdldFRocmVhZExvY2Fsc01hcExvY2tlZCgpIGFuZCBp
dHMgcmV0dXJuIHZhbHVlLgorICBzdGF0aWMgTXV0ZXggbXV0ZXhfOworICAvLyBQcm90ZWN0cyBh
Y2Nlc3MgdG8gR2V0VGhyZWFkTWFwTG9ja2VkKCkgYW5kIGl0cyByZXR1cm4gdmFsdWUuCisgIHN0
YXRpYyBNdXRleCB0aHJlYWRfbWFwX211dGV4XzsKK307CisKK011dGV4IFRocmVhZExvY2FsUmVn
aXN0cnlJbXBsOjptdXRleF8oTXV0ZXg6OmtTdGF0aWNNdXRleCk7CitNdXRleCBUaHJlYWRMb2Nh
bFJlZ2lzdHJ5SW1wbDo6dGhyZWFkX21hcF9tdXRleF8oTXV0ZXg6OmtTdGF0aWNNdXRleCk7CisK
K1RocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlKiBUaHJlYWRMb2NhbFJlZ2lzdHJ5OjpHZXRWYWx1
ZU9uQ3VycmVudFRocmVhZCgKKyAgICAgIGNvbnN0IFRocmVhZExvY2FsQmFzZSogdGhyZWFkX2xv
Y2FsX2luc3RhbmNlKSB7CisgIHJldHVybiBUaHJlYWRMb2NhbFJlZ2lzdHJ5SW1wbDo6R2V0VmFs
dWVPbkN1cnJlbnRUaHJlYWQoCisgICAgICB0aHJlYWRfbG9jYWxfaW5zdGFuY2UpOworfQorCit2
b2lkIFRocmVhZExvY2FsUmVnaXN0cnk6Ok9uVGhyZWFkTG9jYWxEZXN0cm95ZWQoCisgICAgICBj
b25zdCBUaHJlYWRMb2NhbEJhc2UqIHRocmVhZF9sb2NhbF9pbnN0YW5jZSkgeworICBUaHJlYWRM
b2NhbFJlZ2lzdHJ5SW1wbDo6T25UaHJlYWRMb2NhbERlc3Ryb3llZCh0aHJlYWRfbG9jYWxfaW5z
dGFuY2UpOworfQorCisjZW5kaWYgIC8vIEdURVNUX0lTX1RIUkVBRFNBRkUgJiYgR1RFU1RfT1Nf
V0lORE9XUworCisjaWYgR1RFU1RfVVNFU19QT1NJWF9SRQorCisvLyBJbXBsZW1lbnRzIFJFLiAg
Q3VycmVudGx5IG9ubHkgbmVlZGVkIGZvciBkZWF0aCB0ZXN0cy4KKworUkU6On5SRSgpIHsKKyAg
aWYgKGlzX3ZhbGlkXykgeworICAgIC8vIHJlZ2ZyZWUnaW5nIGFuIGludmFsaWQgcmVnZXggbWln
aHQgY3Jhc2ggYmVjYXVzZSB0aGUgY29udGVudAorICAgIC8vIG9mIHRoZSByZWdleCBpcyB1bmRl
ZmluZWQuIFNpbmNlIHRoZSByZWdleCdzIGFyZSBlc3NlbnRpYWxseQorICAgIC8vIHRoZSBzYW1l
LCBvbmUgY2Fubm90IGJlIHZhbGlkIChvciBpbnZhbGlkKSB3aXRob3V0IHRoZSBvdGhlcgorICAg
IC8vIGJlaW5nIHNvIHRvby4KKyAgICByZWdmcmVlKCZwYXJ0aWFsX3JlZ2V4Xyk7CisgICAgcmVn
ZnJlZSgmZnVsbF9yZWdleF8pOworICB9CisgIGZyZWUoY29uc3RfY2FzdDxjaGFyKj4ocGF0dGVy
bl8pKTsKK30KKworLy8gUmV0dXJucyB0cnVlIGlmZiByZWd1bGFyIGV4cHJlc3Npb24gcmUgbWF0
Y2hlcyB0aGUgZW50aXJlIHN0ci4KK2Jvb2wgUkU6OkZ1bGxNYXRjaChjb25zdCBjaGFyKiBzdHIs
IGNvbnN0IFJFJiByZSkgeworICBpZiAoIXJlLmlzX3ZhbGlkXykgcmV0dXJuIGZhbHNlOworCisg
IHJlZ21hdGNoX3QgbWF0Y2g7CisgIHJldHVybiByZWdleGVjKCZyZS5mdWxsX3JlZ2V4Xywgc3Ry
LCAxLCAmbWF0Y2gsIDApID09IDA7Cit9CisKKy8vIFJldHVybnMgdHJ1ZSBpZmYgcmVndWxhciBl
eHByZXNzaW9uIHJlIG1hdGNoZXMgYSBzdWJzdHJpbmcgb2Ygc3RyCisvLyAoaW5jbHVkaW5nIHN0
ciBpdHNlbGYpLgorYm9vbCBSRTo6UGFydGlhbE1hdGNoKGNvbnN0IGNoYXIqIHN0ciwgY29uc3Qg
UkUmIHJlKSB7CisgIGlmICghcmUuaXNfdmFsaWRfKSByZXR1cm4gZmFsc2U7CisKKyAgcmVnbWF0
Y2hfdCBtYXRjaDsKKyAgcmV0dXJuIHJlZ2V4ZWMoJnJlLnBhcnRpYWxfcmVnZXhfLCBzdHIsIDEs
ICZtYXRjaCwgMCkgPT0gMDsKK30KKworLy8gSW5pdGlhbGl6ZXMgYW4gUkUgZnJvbSBpdHMgc3Ry
aW5nIHJlcHJlc2VudGF0aW9uLgordm9pZCBSRTo6SW5pdChjb25zdCBjaGFyKiByZWdleCkgewor
ICBwYXR0ZXJuXyA9IHBvc2l4OjpTdHJEdXAocmVnZXgpOworCisgIC8vIFJlc2VydmVzIGVub3Vn
aCBieXRlcyB0byBob2xkIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gdXNlZCBmb3IgYQorICAvLyBm
dWxsIG1hdGNoLgorICBjb25zdCBzaXplX3QgZnVsbF9yZWdleF9sZW4gPSBzdHJsZW4ocmVnZXgp
ICsgMTA7CisgIGNoYXIqIGNvbnN0IGZ1bGxfcGF0dGVybiA9IG5ldyBjaGFyW2Z1bGxfcmVnZXhf
bGVuXTsKKworICBzbnByaW50ZihmdWxsX3BhdHRlcm4sIGZ1bGxfcmVnZXhfbGVuLCAiXiglcykk
IiwgcmVnZXgpOworICBpc192YWxpZF8gPSByZWdjb21wKCZmdWxsX3JlZ2V4XywgZnVsbF9wYXR0
ZXJuLCBSRUdfRVhURU5ERUQpID09IDA7CisgIC8vIFdlIHdhbnQgdG8gY2FsbCByZWdjb21wKCZw
YXJ0aWFsX3JlZ2V4XywgLi4uKSBldmVuIGlmIHRoZQorICAvLyBwcmV2aW91cyBleHByZXNzaW9u
IHJldHVybnMgZmFsc2UuICBPdGhlcndpc2UgcGFydGlhbF9yZWdleF8gbWF5CisgIC8vIG5vdCBi
ZSBwcm9wZXJseSBpbml0aWFsaXplZCBjYW4gbWF5IGNhdXNlIHRyb3VibGUgd2hlbiBpdCdzCisg
IC8vIGZyZWVkLgorICAvLworICAvLyBTb21lIGltcGxlbWVudGF0aW9uIG9mIFBPU0lYIHJlZ2V4
IChlLmcuIG9uIGF0IGxlYXN0IHNvbWUKKyAgLy8gdmVyc2lvbnMgb2YgQ3lnd2luKSBkb2Vzbid0
IGFjY2VwdCB0aGUgZW1wdHkgc3RyaW5nIGFzIGEgdmFsaWQKKyAgLy8gcmVnZXguICBXZSBjaGFu
Z2UgaXQgdG8gYW4gZXF1aXZhbGVudCBmb3JtICIoKSIgdG8gYmUgc2FmZS4KKyAgaWYgKGlzX3Zh
bGlkXykgeworICAgIGNvbnN0IGNoYXIqIGNvbnN0IHBhcnRpYWxfcmVnZXggPSAoKnJlZ2V4ID09
ICdcMCcpID8gIigpIiA6IHJlZ2V4OworICAgIGlzX3ZhbGlkXyA9IHJlZ2NvbXAoJnBhcnRpYWxf
cmVnZXhfLCBwYXJ0aWFsX3JlZ2V4LCBSRUdfRVhURU5ERUQpID09IDA7CisgIH0KKyAgRVhQRUNU
X1RSVUUoaXNfdmFsaWRfKQorICAgICAgPDwgIlJlZ3VsYXIgZXhwcmVzc2lvbiBcIiIgPDwgcmVn
ZXgKKyAgICAgIDw8ICJcIiBpcyBub3QgYSB2YWxpZCBQT1NJWCBFeHRlbmRlZCByZWd1bGFyIGV4
cHJlc3Npb24uIjsKKworICBkZWxldGVbXSBmdWxsX3BhdHRlcm47Cit9CisKKyNlbGlmIEdURVNU
X1VTRVNfU0lNUExFX1JFCisKKy8vIFJldHVybnMgdHJ1ZSBpZmYgY2ggYXBwZWFycyBhbnl3aGVy
ZSBpbiBzdHIgKGV4Y2x1ZGluZyB0aGUKKy8vIHRlcm1pbmF0aW5nICdcMCcgY2hhcmFjdGVyKS4K
K2Jvb2wgSXNJblNldChjaGFyIGNoLCBjb25zdCBjaGFyKiBzdHIpIHsKKyAgcmV0dXJuIGNoICE9
ICdcMCcgJiYgc3RyY2hyKHN0ciwgY2gpICE9IE5VTEw7Cit9CisKKy8vIFJldHVybnMgdHJ1ZSBp
ZmYgY2ggYmVsb25ncyB0byB0aGUgZ2l2ZW4gY2xhc3NpZmljYXRpb24uICBVbmxpa2UKKy8vIHNp
bWlsYXIgZnVuY3Rpb25zIGluIDxjdHlwZS5oPiwgdGhlc2UgYXJlbid0IGFmZmVjdGVkIGJ5IHRo
ZQorLy8gY3VycmVudCBsb2NhbGUuCitib29sIElzQXNjaWlEaWdpdChjaGFyIGNoKSB7IHJldHVy
biAnMCcgPD0gY2ggJiYgY2ggPD0gJzknOyB9Citib29sIElzQXNjaWlQdW5jdChjaGFyIGNoKSB7
CisgIHJldHVybiBJc0luU2V0KGNoLCAiXi0hXCIjJCUmJygpKissLi86Ozw9Pj9AW1xcXV9ge3x9
fiIpOworfQorYm9vbCBJc1JlcGVhdChjaGFyIGNoKSB7IHJldHVybiBJc0luU2V0KGNoLCAiPyor
Iik7IH0KK2Jvb2wgSXNBc2NpaVdoaXRlU3BhY2UoY2hhciBjaCkgeyByZXR1cm4gSXNJblNldChj
aCwgIiBcZlxuXHJcdFx2Iik7IH0KK2Jvb2wgSXNBc2NpaVdvcmRDaGFyKGNoYXIgY2gpIHsKKyAg
cmV0dXJuICgnYScgPD0gY2ggJiYgY2ggPD0gJ3onKSB8fCAoJ0EnIDw9IGNoICYmIGNoIDw9ICda
JykgfHwKKyAgICAgICgnMCcgPD0gY2ggJiYgY2ggPD0gJzknKSB8fCBjaCA9PSAnXyc7Cit9CisK
Ky8vIFJldHVybnMgdHJ1ZSBpZmYgIlxcYyIgaXMgYSBzdXBwb3J0ZWQgZXNjYXBlIHNlcXVlbmNl
LgorYm9vbCBJc1ZhbGlkRXNjYXBlKGNoYXIgYykgeworICByZXR1cm4gKElzQXNjaWlQdW5jdChj
KSB8fCBJc0luU2V0KGMsICJkRGZucnNTdHZ3VyIpKTsKK30KKworLy8gUmV0dXJucyB0cnVlIGlm
ZiB0aGUgZ2l2ZW4gYXRvbSAoc3BlY2lmaWVkIGJ5IGVzY2FwZWQgYW5kIHBhdHRlcm4pCisvLyBt
YXRjaGVzIGNoLiAgVGhlIHJlc3VsdCBpcyB1bmRlZmluZWQgaWYgdGhlIGF0b20gaXMgaW52YWxp
ZC4KK2Jvb2wgQXRvbU1hdGNoZXNDaGFyKGJvb2wgZXNjYXBlZCwgY2hhciBwYXR0ZXJuX2NoYXIs
IGNoYXIgY2gpIHsKKyAgaWYgKGVzY2FwZWQpIHsgIC8vICJcXHAiIHdoZXJlIHAgaXMgcGF0dGVy
bl9jaGFyLgorICAgIHN3aXRjaCAocGF0dGVybl9jaGFyKSB7CisgICAgICBjYXNlICdkJzogcmV0
dXJuIElzQXNjaWlEaWdpdChjaCk7CisgICAgICBjYXNlICdEJzogcmV0dXJuICFJc0FzY2lpRGln
aXQoY2gpOworICAgICAgY2FzZSAnZic6IHJldHVybiBjaCA9PSAnXGYnOworICAgICAgY2FzZSAn
bic6IHJldHVybiBjaCA9PSAnXG4nOworICAgICAgY2FzZSAncic6IHJldHVybiBjaCA9PSAnXHIn
OworICAgICAgY2FzZSAncyc6IHJldHVybiBJc0FzY2lpV2hpdGVTcGFjZShjaCk7CisgICAgICBj
YXNlICdTJzogcmV0dXJuICFJc0FzY2lpV2hpdGVTcGFjZShjaCk7CisgICAgICBjYXNlICd0Jzog
cmV0dXJuIGNoID09ICdcdCc7CisgICAgICBjYXNlICd2JzogcmV0dXJuIGNoID09ICdcdic7Cisg
ICAgICBjYXNlICd3JzogcmV0dXJuIElzQXNjaWlXb3JkQ2hhcihjaCk7CisgICAgICBjYXNlICdX
JzogcmV0dXJuICFJc0FzY2lpV29yZENoYXIoY2gpOworICAgIH0KKyAgICByZXR1cm4gSXNBc2Np
aVB1bmN0KHBhdHRlcm5fY2hhcikgJiYgcGF0dGVybl9jaGFyID09IGNoOworICB9CisKKyAgcmV0
dXJuIChwYXR0ZXJuX2NoYXIgPT0gJy4nICYmIGNoICE9ICdcbicpIHx8IHBhdHRlcm5fY2hhciA9
PSBjaDsKK30KKworLy8gSGVscGVyIGZ1bmN0aW9uIHVzZWQgYnkgVmFsaWRhdGVSZWdleCgpIHRv
IGZvcm1hdCBlcnJvciBtZXNzYWdlcy4KK3N0ZDo6c3RyaW5nIEZvcm1hdFJlZ2V4U3ludGF4RXJy
b3IoY29uc3QgY2hhciogcmVnZXgsIGludCBpbmRleCkgeworICByZXR1cm4gKE1lc3NhZ2UoKSA8
PCAiU3ludGF4IGVycm9yIGF0IGluZGV4ICIgPDwgaW5kZXgKKyAgICAgICAgICA8PCAiIGluIHNp
bXBsZSByZWd1bGFyIGV4cHJlc3Npb24gXCIiIDw8IHJlZ2V4IDw8ICJcIjogIikuR2V0U3RyaW5n
KCk7Cit9CisKKy8vIEdlbmVyYXRlcyBub24tZmF0YWwgZmFpbHVyZXMgYW5kIHJldHVybnMgZmFs
c2UgaWYgcmVnZXggaXMgaW52YWxpZDsKKy8vIG90aGVyd2lzZSByZXR1cm5zIHRydWUuCitib29s
IFZhbGlkYXRlUmVnZXgoY29uc3QgY2hhciogcmVnZXgpIHsKKyAgaWYgKHJlZ2V4ID09IE5VTEwp
IHsKKyAgICAvLyBUT0RPKHdhbkBnb29nbGUuY29tKTogZml4IHRoZSBzb3VyY2UgZmlsZSBsb2Nh
dGlvbiBpbiB0aGUKKyAgICAvLyBhc3NlcnRpb24gZmFpbHVyZXMgdG8gbWF0Y2ggd2hlcmUgdGhl
IHJlZ2V4IGlzIHVzZWQgaW4gdXNlcgorICAgIC8vIGNvZGUuCisgICAgQUREX0ZBSUxVUkUoKSA8
PCAiTlVMTCBpcyBub3QgYSB2YWxpZCBzaW1wbGUgcmVndWxhciBleHByZXNzaW9uLiI7CisgICAg
cmV0dXJuIGZhbHNlOworICB9CisKKyAgYm9vbCBpc192YWxpZCA9IHRydWU7CisKKyAgLy8gVHJ1
ZSBpZmYgPywgKiwgb3IgKyBjYW4gZm9sbG93IHRoZSBwcmV2aW91cyBhdG9tLgorICBib29sIHBy
ZXZfcmVwZWF0YWJsZSA9IGZhbHNlOworICBmb3IgKGludCBpID0gMDsgcmVnZXhbaV07IGkrKykg
eworICAgIGlmIChyZWdleFtpXSA9PSAnXFwnKSB7ICAvLyBBbiBlc2NhcGUgc2VxdWVuY2UKKyAg
ICAgIGkrKzsKKyAgICAgIGlmIChyZWdleFtpXSA9PSAnXDAnKSB7CisgICAgICAgIEFERF9GQUlM
VVJFKCkgPDwgRm9ybWF0UmVnZXhTeW50YXhFcnJvcihyZWdleCwgaSAtIDEpCisgICAgICAgICAg
ICAgICAgICAgICAgPDwgIidcXCcgY2Fubm90IGFwcGVhciBhdCB0aGUgZW5kLiI7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgIH0KKworICAgICAgaWYgKCFJc1ZhbGlkRXNjYXBlKHJlZ2V4
W2ldKSkgeworICAgICAgICBBRERfRkFJTFVSRSgpIDw8IEZvcm1hdFJlZ2V4U3ludGF4RXJyb3Io
cmVnZXgsIGkgLSAxKQorICAgICAgICAgICAgICAgICAgICAgIDw8ICJpbnZhbGlkIGVzY2FwZSBz
ZXF1ZW5jZSBcIlxcIiA8PCByZWdleFtpXSA8PCAiXCIuIjsKKyAgICAgICAgaXNfdmFsaWQgPSBm
YWxzZTsKKyAgICAgIH0KKyAgICAgIHByZXZfcmVwZWF0YWJsZSA9IHRydWU7CisgICAgfSBlbHNl
IHsgIC8vIE5vdCBhbiBlc2NhcGUgc2VxdWVuY2UuCisgICAgICBjb25zdCBjaGFyIGNoID0gcmVn
ZXhbaV07CisKKyAgICAgIGlmIChjaCA9PSAnXicgJiYgaSA+IDApIHsKKyAgICAgICAgQUREX0ZB
SUxVUkUoKSA8PCBGb3JtYXRSZWdleFN5bnRheEVycm9yKHJlZ2V4LCBpKQorICAgICAgICAgICAg
ICAgICAgICAgIDw8ICInXicgY2FuIG9ubHkgYXBwZWFyIGF0IHRoZSBiZWdpbm5pbmcuIjsKKyAg
ICAgICAgaXNfdmFsaWQgPSBmYWxzZTsKKyAgICAgIH0gZWxzZSBpZiAoY2ggPT0gJyQnICYmIHJl
Z2V4W2kgKyAxXSAhPSAnXDAnKSB7CisgICAgICAgIEFERF9GQUlMVVJFKCkgPDwgRm9ybWF0UmVn
ZXhTeW50YXhFcnJvcihyZWdleCwgaSkKKyAgICAgICAgICAgICAgICAgICAgICA8PCAiJyQnIGNh
biBvbmx5IGFwcGVhciBhdCB0aGUgZW5kLiI7CisgICAgICAgIGlzX3ZhbGlkID0gZmFsc2U7Cisg
ICAgICB9IGVsc2UgaWYgKElzSW5TZXQoY2gsICIoKVtde318IikpIHsKKyAgICAgICAgQUREX0ZB
SUxVUkUoKSA8PCBGb3JtYXRSZWdleFN5bnRheEVycm9yKHJlZ2V4LCBpKQorICAgICAgICAgICAg
ICAgICAgICAgIDw8ICInIiA8PCBjaCA8PCAiJyBpcyB1bnN1cHBvcnRlZC4iOworICAgICAgICBp
c192YWxpZCA9IGZhbHNlOworICAgICAgfSBlbHNlIGlmIChJc1JlcGVhdChjaCkgJiYgIXByZXZf
cmVwZWF0YWJsZSkgeworICAgICAgICBBRERfRkFJTFVSRSgpIDw8IEZvcm1hdFJlZ2V4U3ludGF4
RXJyb3IocmVnZXgsIGkpCisgICAgICAgICAgICAgICAgICAgICAgPDwgIiciIDw8IGNoIDw8ICIn
IGNhbiBvbmx5IGZvbGxvdyBhIHJlcGVhdGFibGUgdG9rZW4uIjsKKyAgICAgICAgaXNfdmFsaWQg
PSBmYWxzZTsKKyAgICAgIH0KKworICAgICAgcHJldl9yZXBlYXRhYmxlID0gIUlzSW5TZXQoY2gs
ICJeJD8qKyIpOworICAgIH0KKyAgfQorCisgIHJldHVybiBpc192YWxpZDsKK30KKworLy8gTWF0
Y2hlcyBhIHJlcGVhdGVkIHJlZ2V4IGF0b20gZm9sbG93ZWQgYnkgYSB2YWxpZCBzaW1wbGUgcmVn
dWxhcgorLy8gZXhwcmVzc2lvbi4gIFRoZSByZWdleCBhdG9tIGlzIGRlZmluZWQgYXMgYyBpZiBl
c2NhcGVkIGlzIGZhbHNlLAorLy8gb3IgXGMgb3RoZXJ3aXNlLiAgcmVwZWF0IGlzIHRoZSByZXBl
dGl0aW9uIG1ldGEgY2hhcmFjdGVyICg/LCAqLAorLy8gb3IgKykuICBUaGUgYmVoYXZpb3IgaXMg
dW5kZWZpbmVkIGlmIHN0ciBjb250YWlucyB0b28gbWFueQorLy8gY2hhcmFjdGVycyB0byBiZSBp
bmRleGFibGUgYnkgc2l6ZV90LCBpbiB3aGljaCBjYXNlIHRoZSB0ZXN0IHdpbGwKKy8vIHByb2Jh
Ymx5IHRpbWUgb3V0IGFueXdheS4gIFdlIGFyZSBmaW5lIHdpdGggdGhpcyBsaW1pdGF0aW9uIGFz
CisvLyBzdGQ6OnN0cmluZyBoYXMgaXQgdG9vLgorYm9vbCBNYXRjaFJlcGV0aXRpb25BbmRSZWdl
eEF0SGVhZCgKKyAgICBib29sIGVzY2FwZWQsIGNoYXIgYywgY2hhciByZXBlYXQsIGNvbnN0IGNo
YXIqIHJlZ2V4LAorICAgIGNvbnN0IGNoYXIqIHN0cikgeworICBjb25zdCBzaXplX3QgbWluX2Nv
dW50ID0gKHJlcGVhdCA9PSAnKycpID8gMSA6IDA7CisgIGNvbnN0IHNpemVfdCBtYXhfY291bnQg
PSAocmVwZWF0ID09ICc/JykgPyAxIDoKKyAgICAgIHN0YXRpY19jYXN0PHNpemVfdD4oLTEpIC0g
MTsKKyAgLy8gV2UgY2Fubm90IGNhbGwgbnVtZXJpY19saW1pdHM6Om1heCgpIGFzIGl0IGNvbmZs
aWN0cyB3aXRoIHRoZQorICAvLyBtYXgoKSBtYWNybyBvbiBXaW5kb3dzLgorCisgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDw9IG1heF9jb3VudDsgKytpKSB7CisgICAgLy8gV2Uga25vdyB0aGF0IHRo
ZSBhdG9tIG1hdGNoZXMgZWFjaCBvZiB0aGUgZmlyc3QgaSBjaGFyYWN0ZXJzIGluIHN0ci4KKyAg
ICBpZiAoaSA+PSBtaW5fY291bnQgJiYgTWF0Y2hSZWdleEF0SGVhZChyZWdleCwgc3RyICsgaSkp
IHsKKyAgICAgIC8vIFdlIGhhdmUgZW5vdWdoIG1hdGNoZXMgYXQgdGhlIGhlYWQsIGFuZCB0aGUg
dGFpbCBtYXRjaGVzIHRvby4KKyAgICAgIC8vIFNpbmNlIHdlIG9ubHkgY2FyZSBhYm91dCAqd2hl
dGhlciogdGhlIHBhdHRlcm4gbWF0Y2hlcyBzdHIKKyAgICAgIC8vIChhcyBvcHBvc2VkIHRvICpo
b3cqIGl0IG1hdGNoZXMpLCB0aGVyZSBpcyBubyBuZWVkIHRvIGZpbmQgYQorICAgICAgLy8gZ3Jl
ZWR5IG1hdGNoLgorICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGlmIChzdHJbaV0gPT0g
J1wwJyB8fCAhQXRvbU1hdGNoZXNDaGFyKGVzY2FwZWQsIGMsIHN0cltpXSkpCisgICAgICByZXR1
cm4gZmFsc2U7CisgIH0KKyAgcmV0dXJuIGZhbHNlOworfQorCisvLyBSZXR1cm5zIHRydWUgaWZm
IHJlZ2V4IG1hdGNoZXMgYSBwcmVmaXggb2Ygc3RyLiAgcmVnZXggbXVzdCBiZSBhCisvLyB2YWxp
ZCBzaW1wbGUgcmVndWxhciBleHByZXNzaW9uIGFuZCBub3Qgc3RhcnQgd2l0aCAiXiIsIG9yIHRo
ZQorLy8gcmVzdWx0IGlzIHVuZGVmaW5lZC4KK2Jvb2wgTWF0Y2hSZWdleEF0SGVhZChjb25zdCBj
aGFyKiByZWdleCwgY29uc3QgY2hhciogc3RyKSB7CisgIGlmICgqcmVnZXggPT0gJ1wwJykgIC8v
IEFuIGVtcHR5IHJlZ2V4IG1hdGNoZXMgYSBwcmVmaXggb2YgYW55dGhpbmcuCisgICAgcmV0dXJu
IHRydWU7CisKKyAgLy8gIiQiIG9ubHkgbWF0Y2hlcyB0aGUgZW5kIG9mIGEgc3RyaW5nLiAgTm90
ZSB0aGF0IHJlZ2V4IGJlaW5nCisgIC8vIHZhbGlkIGd1YXJhbnRlZXMgdGhhdCB0aGVyZSdzIG5v
dGhpbmcgYWZ0ZXIgIiQiIGluIGl0LgorICBpZiAoKnJlZ2V4ID09ICckJykKKyAgICByZXR1cm4g
KnN0ciA9PSAnXDAnOworCisgIC8vIElzIHRoZSBmaXJzdCB0aGluZyBpbiByZWdleCBhbiBlc2Nh
cGUgc2VxdWVuY2U/CisgIGNvbnN0IGJvb2wgZXNjYXBlZCA9ICpyZWdleCA9PSAnXFwnOworICBp
ZiAoZXNjYXBlZCkKKyAgICArK3JlZ2V4OworICBpZiAoSXNSZXBlYXQocmVnZXhbMV0pKSB7Cisg
ICAgLy8gTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoKSBjYWxscyBNYXRjaFJlZ2V4QXRI
ZWFkKCksIHNvCisgICAgLy8gaGVyZSdzIGFuIGluZGlyZWN0IHJlY3Vyc2lvbi4gIEl0IHRlcm1p
bmF0ZXMgYXMgdGhlIHJlZ2V4IGdldHMKKyAgICAvLyBzaG9ydGVyIGluIGVhY2ggcmVjdXJzaW9u
LgorICAgIHJldHVybiBNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZCgKKyAgICAgICAgZXNj
YXBlZCwgcmVnZXhbMF0sIHJlZ2V4WzFdLCByZWdleCArIDIsIHN0cik7CisgIH0gZWxzZSB7Cisg
ICAgLy8gcmVnZXggaXNuJ3QgZW1wdHksIGlzbid0ICIkIiwgYW5kIGRvZXNuJ3Qgc3RhcnQgd2l0
aCBhCisgICAgLy8gcmVwZXRpdGlvbi4gIFdlIG1hdGNoIHRoZSBmaXJzdCBhdG9tIG9mIHJlZ2V4
IHdpdGggdGhlIGZpcnN0CisgICAgLy8gY2hhcmFjdGVyIG9mIHN0ciBhbmQgcmVjdXJzZS4KKyAg
ICByZXR1cm4gKCpzdHIgIT0gJ1wwJykgJiYgQXRvbU1hdGNoZXNDaGFyKGVzY2FwZWQsICpyZWdl
eCwgKnN0cikgJiYKKyAgICAgICAgTWF0Y2hSZWdleEF0SGVhZChyZWdleCArIDEsIHN0ciArIDEp
OworICB9Cit9CisKKy8vIFJldHVybnMgdHJ1ZSBpZmYgcmVnZXggbWF0Y2hlcyBhbnkgc3Vic3Ry
aW5nIG9mIHN0ci4gIHJlZ2V4IG11c3QgYmUKKy8vIGEgdmFsaWQgc2ltcGxlIHJlZ3VsYXIgZXhw
cmVzc2lvbiwgb3IgdGhlIHJlc3VsdCBpcyB1bmRlZmluZWQuCisvLworLy8gVGhlIGFsZ29yaXRo
bSBpcyByZWN1cnNpdmUsIGJ1dCB0aGUgcmVjdXJzaW9uIGRlcHRoIGRvZXNuJ3QgZXhjZWVkCisv
LyB0aGUgcmVnZXggbGVuZ3RoLCBzbyB3ZSB3b24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHJ1bm5p
bmcgb3V0IG9mCisvLyBzdGFjayBzcGFjZSBub3JtYWxseS4gIEluIHJhcmUgY2FzZXMgdGhlIHRp
bWUgY29tcGxleGl0eSBjYW4gYmUKKy8vIGV4cG9uZW50aWFsIHdpdGggcmVzcGVjdCB0byB0aGUg
cmVnZXggbGVuZ3RoICsgdGhlIHN0cmluZyBsZW5ndGgsCisvLyBidXQgdXN1YWxseSBpdCdzIG11
c3QgZmFzdGVyIChvZnRlbiBjbG9zZSB0byBsaW5lYXIpLgorYm9vbCBNYXRjaFJlZ2V4QW55d2hl
cmUoY29uc3QgY2hhciogcmVnZXgsIGNvbnN0IGNoYXIqIHN0cikgeworICBpZiAocmVnZXggPT0g
TlVMTCB8fCBzdHIgPT0gTlVMTCkKKyAgICByZXR1cm4gZmFsc2U7CisKKyAgaWYgKCpyZWdleCA9
PSAnXicpCisgICAgcmV0dXJuIE1hdGNoUmVnZXhBdEhlYWQocmVnZXggKyAxLCBzdHIpOworCisg
IC8vIEEgc3VjY2Vzc2Z1bCBtYXRjaCBjYW4gYmUgYW55d2hlcmUgaW4gc3RyLgorICBkbyB7Cisg
ICAgaWYgKE1hdGNoUmVnZXhBdEhlYWQocmVnZXgsIHN0cikpCisgICAgICByZXR1cm4gdHJ1ZTsK
KyAgfSB3aGlsZSAoKnN0cisrICE9ICdcMCcpOworICByZXR1cm4gZmFsc2U7Cit9CisKKy8vIElt
cGxlbWVudHMgdGhlIFJFIGNsYXNzLgorCitSRTo6flJFKCkgeworICBmcmVlKGNvbnN0X2Nhc3Q8
Y2hhcio+KHBhdHRlcm5fKSk7CisgIGZyZWUoY29uc3RfY2FzdDxjaGFyKj4oZnVsbF9wYXR0ZXJu
XykpOworfQorCisvLyBSZXR1cm5zIHRydWUgaWZmIHJlZ3VsYXIgZXhwcmVzc2lvbiByZSBtYXRj
aGVzIHRoZSBlbnRpcmUgc3RyLgorYm9vbCBSRTo6RnVsbE1hdGNoKGNvbnN0IGNoYXIqIHN0ciwg
Y29uc3QgUkUmIHJlKSB7CisgIHJldHVybiByZS5pc192YWxpZF8gJiYgTWF0Y2hSZWdleEFueXdo
ZXJlKHJlLmZ1bGxfcGF0dGVybl8sIHN0cik7Cit9CisKKy8vIFJldHVybnMgdHJ1ZSBpZmYgcmVn
dWxhciBleHByZXNzaW9uIHJlIG1hdGNoZXMgYSBzdWJzdHJpbmcgb2Ygc3RyCisvLyAoaW5jbHVk
aW5nIHN0ciBpdHNlbGYpLgorYm9vbCBSRTo6UGFydGlhbE1hdGNoKGNvbnN0IGNoYXIqIHN0ciwg
Y29uc3QgUkUmIHJlKSB7CisgIHJldHVybiByZS5pc192YWxpZF8gJiYgTWF0Y2hSZWdleEFueXdo
ZXJlKHJlLnBhdHRlcm5fLCBzdHIpOworfQorCisvLyBJbml0aWFsaXplcyBhbiBSRSBmcm9tIGl0
cyBzdHJpbmcgcmVwcmVzZW50YXRpb24uCit2b2lkIFJFOjpJbml0KGNvbnN0IGNoYXIqIHJlZ2V4
KSB7CisgIHBhdHRlcm5fID0gZnVsbF9wYXR0ZXJuXyA9IE5VTEw7CisgIGlmIChyZWdleCAhPSBO
VUxMKSB7CisgICAgcGF0dGVybl8gPSBwb3NpeDo6U3RyRHVwKHJlZ2V4KTsKKyAgfQorCisgIGlz
X3ZhbGlkXyA9IFZhbGlkYXRlUmVnZXgocmVnZXgpOworICBpZiAoIWlzX3ZhbGlkXykgeworICAg
IC8vIE5vIG5lZWQgdG8gY2FsY3VsYXRlIHRoZSBmdWxsIHBhdHRlcm4gd2hlbiB0aGUgcmVnZXgg
aXMgaW52YWxpZC4KKyAgICByZXR1cm47CisgIH0KKworICBjb25zdCBzaXplX3QgbGVuID0gc3Ry
bGVuKHJlZ2V4KTsKKyAgLy8gUmVzZXJ2ZXMgZW5vdWdoIGJ5dGVzIHRvIGhvbGQgdGhlIHJlZ3Vs
YXIgZXhwcmVzc2lvbiB1c2VkIGZvciBhCisgIC8vIGZ1bGwgbWF0Y2g6IHdlIG5lZWQgc3BhY2Ug
dG8gcHJlcGVuZCBhICdeJywgYXBwZW5kIGEgJyQnLCBhbmQKKyAgLy8gdGVybWluYXRlIHRoZSBz
dHJpbmcgd2l0aCAnXDAnLgorICBjaGFyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxjaGFyKj4obWFs
bG9jKGxlbiArIDMpKTsKKyAgZnVsbF9wYXR0ZXJuXyA9IGJ1ZmZlcjsKKworICBpZiAoKnJlZ2V4
ICE9ICdeJykKKyAgICAqYnVmZmVyKysgPSAnXic7ICAvLyBNYWtlcyBzdXJlIGZ1bGxfcGF0dGVy
bl8gc3RhcnRzIHdpdGggJ14nLgorCisgIC8vIFdlIGRvbid0IHVzZSBzbnByaW50ZiBvciBzdHJu
Y3B5LCBhcyB0aGV5IHRyaWdnZXIgYSB3YXJuaW5nIHdoZW4KKyAgLy8gY29tcGlsZWQgd2l0aCBW
QysrIDguMC4KKyAgbWVtY3B5KGJ1ZmZlciwgcmVnZXgsIGxlbik7CisgIGJ1ZmZlciArPSBsZW47
CisKKyAgaWYgKGxlbiA9PSAwIHx8IHJlZ2V4W2xlbiAtIDFdICE9ICckJykKKyAgICAqYnVmZmVy
KysgPSAnJCc7ICAvLyBNYWtlcyBzdXJlIGZ1bGxfcGF0dGVybl8gZW5kcyB3aXRoICckJy4KKwor
ICAqYnVmZmVyID0gJ1wwJzsKK30KKworI2VuZGlmICAvLyBHVEVTVF9VU0VTX1BPU0lYX1JFCisK
K2NvbnN0IGNoYXIga1Vua25vd25GaWxlW10gPSAidW5rbm93biBmaWxlIjsKKworLy8gRm9ybWF0
cyBhIHNvdXJjZSBmaWxlIHBhdGggYW5kIGEgbGluZSBudW1iZXIgYXMgdGhleSB3b3VsZCBhcHBl
YXIKKy8vIGluIGFuIGVycm9yIG1lc3NhZ2UgZnJvbSB0aGUgY29tcGlsZXIgdXNlZCB0byBjb21w
aWxlIHRoaXMgY29kZS4KK0dURVNUX0FQSV8gOjpzdGQ6OnN0cmluZyBGb3JtYXRGaWxlTG9jYXRp
b24oY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUpIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZmls
ZV9uYW1lKGZpbGUgPT0gTlVMTCA/IGtVbmtub3duRmlsZSA6IGZpbGUpOworCisgIGlmIChsaW5l
IDwgMCkgeworICAgIHJldHVybiBmaWxlX25hbWUgKyAiOiI7CisgIH0KKyNpZmRlZiBfTVNDX1ZF
UgorICByZXR1cm4gZmlsZV9uYW1lICsgIigiICsgU3RyZWFtYWJsZVRvU3RyaW5nKGxpbmUpICsg
Iik6IjsKKyNlbHNlCisgIHJldHVybiBmaWxlX25hbWUgKyAiOiIgKyBTdHJlYW1hYmxlVG9TdHJp
bmcobGluZSkgKyAiOiI7CisjZW5kaWYgIC8vIF9NU0NfVkVSCit9CisKKy8vIEZvcm1hdHMgYSBm
aWxlIGxvY2F0aW9uIGZvciBjb21waWxlci1pbmRlcGVuZGVudCBYTUwgb3V0cHV0LgorLy8gQWx0
aG91Z2ggdGhpcyBmdW5jdGlvbiBpcyBub3QgcGxhdGZvcm0gZGVwZW5kZW50LCB3ZSBwdXQgaXQg
bmV4dCB0bworLy8gRm9ybWF0RmlsZUxvY2F0aW9uIGluIG9yZGVyIHRvIGNvbnRyYXN0IHRoZSB0
d28gZnVuY3Rpb25zLgorLy8gTm90ZSB0aGF0IEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxl
TG9jYXRpb24oKSBkb2VzIE5PVCBhcHBlbmQgY29sb24KKy8vIHRvIHRoZSBmaWxlIGxvY2F0aW9u
IGl0IHByb2R1Y2VzLCB1bmxpa2UgRm9ybWF0RmlsZUxvY2F0aW9uKCkuCitHVEVTVF9BUElfIDo6
c3RkOjpzdHJpbmcgRm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVudEZpbGVMb2NhdGlvbigKKyAgICBj
b25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSkgeworICBjb25zdCBzdGQ6OnN0cmluZyBmaWxlX25h
bWUoZmlsZSA9PSBOVUxMID8ga1Vua25vd25GaWxlIDogZmlsZSk7CisKKyAgaWYgKGxpbmUgPCAw
KQorICAgIHJldHVybiBmaWxlX25hbWU7CisgIGVsc2UKKyAgICByZXR1cm4gZmlsZV9uYW1lICsg
IjoiICsgU3RyZWFtYWJsZVRvU3RyaW5nKGxpbmUpOworfQorCitHVGVzdExvZzo6R1Rlc3RMb2co
R1Rlc3RMb2dTZXZlcml0eSBzZXZlcml0eSwgY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUpCisg
ICAgOiBzZXZlcml0eV8oc2V2ZXJpdHkpIHsKKyAgY29uc3QgY2hhciogY29uc3QgbWFya2VyID0K
KyAgICAgIHNldmVyaXR5ID09IEdURVNUX0lORk8gPyAgICAiWyAgSU5GTyBdIiA6CisgICAgICBz
ZXZlcml0eSA9PSBHVEVTVF9XQVJOSU5HID8gIltXQVJOSU5HXSIgOgorICAgICAgc2V2ZXJpdHkg
PT0gR1RFU1RfRVJST1IgPyAgICJbIEVSUk9SIF0iIDogIlsgRkFUQUwgXSI7CisgIEdldFN0cmVh
bSgpIDw8IDo6c3RkOjplbmRsIDw8IG1hcmtlciA8PCAiICIKKyAgICAgICAgICAgICAgPDwgRm9y
bWF0RmlsZUxvY2F0aW9uKGZpbGUsIGxpbmUpLmNfc3RyKCkgPDwgIjogIjsKK30KKworLy8gRmx1
c2hlcyB0aGUgYnVmZmVycyBhbmQsIGlmIHNldmVyaXR5IGlzIEdURVNUX0ZBVEFMLCBhYm9ydHMg
dGhlIHByb2dyYW0uCitHVGVzdExvZzo6fkdUZXN0TG9nKCkgeworICBHZXRTdHJlYW0oKSA8PCA6
OnN0ZDo6ZW5kbDsKKyAgaWYgKHNldmVyaXR5XyA9PSBHVEVTVF9GQVRBTCkgeworICAgIGZmbHVz
aChzdGRlcnIpOworICAgIHBvc2l4OjpBYm9ydCgpOworICB9Cit9CisvLyBEaXNhYmxlIE1pY3Jv
c29mdCBkZXByZWNhdGlvbiB3YXJuaW5ncyBmb3IgUE9TSVggZnVuY3Rpb25zIGNhbGxlZCBmcm9t
CisvLyB0aGlzIGNsYXNzIChjcmVhdCwgZHVwLCBkdXAyLCBhbmQgY2xvc2UpCitHVEVTVF9ESVNB
QkxFX01TQ19XQVJOSU5HU19QVVNIXyg0OTk2KQorCisjaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJ
UkVDVElPTgorCisvLyBPYmplY3QgdGhhdCBjYXB0dXJlcyBhbiBvdXRwdXQgc3RyZWFtIChzdGRv
dXQvc3RkZXJyKS4KK2NsYXNzIENhcHR1cmVkU3RyZWFtIHsKKyBwdWJsaWM6CisgIC8vIFRoZSBj
dG9yIHJlZGlyZWN0cyB0aGUgc3RyZWFtIHRvIGEgdGVtcG9yYXJ5IGZpbGUuCisgIGV4cGxpY2l0
IENhcHR1cmVkU3RyZWFtKGludCBmZCkgOiBmZF8oZmQpLCB1bmNhcHR1cmVkX2ZkXyhkdXAoZmQp
KSB7CisjIGlmIEdURVNUX09TX1dJTkRPV1MKKyAgICBjaGFyIHRlbXBfZGlyX3BhdGhbTUFYX1BB
VEggKyAxXSA9IHsgJ1wwJyB9OyAgLy8gTk9MSU5UCisgICAgY2hhciB0ZW1wX2ZpbGVfcGF0aFtN
QVhfUEFUSCArIDFdID0geyAnXDAnIH07ICAvLyBOT0xJTlQKKworICAgIDo6R2V0VGVtcFBhdGhB
KHNpemVvZih0ZW1wX2Rpcl9wYXRoKSwgdGVtcF9kaXJfcGF0aCk7CisgICAgY29uc3QgVUlOVCBz
dWNjZXNzID0gOjpHZXRUZW1wRmlsZU5hbWVBKHRlbXBfZGlyX3BhdGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJndGVzdF9yZWRpciIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsICAvLyBHZW5lcmF0ZSB1bmlxdWUg
ZmlsZSBuYW1lLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
ZW1wX2ZpbGVfcGF0aCk7CisgICAgR1RFU1RfQ0hFQ0tfKHN1Y2Nlc3MgIT0gMCkKKyAgICAgICAg
PDwgIlVuYWJsZSB0byBjcmVhdGUgYSB0ZW1wb3JhcnkgZmlsZSBpbiAiIDw8IHRlbXBfZGlyX3Bh
dGg7CisgICAgY29uc3QgaW50IGNhcHR1cmVkX2ZkID0gY3JlYXQodGVtcF9maWxlX3BhdGgsIF9T
X0lSRUFEIHwgX1NfSVdSSVRFKTsKKyAgICBHVEVTVF9DSEVDS18oY2FwdHVyZWRfZmQgIT0gLTEp
IDw8ICJVbmFibGUgdG8gb3BlbiB0ZW1wb3JhcnkgZmlsZSAiCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8PCB0ZW1wX2ZpbGVfcGF0aDsKKyAgICBmaWxlbmFtZV8gPSB0ZW1w
X2ZpbGVfcGF0aDsKKyMgZWxzZQorICAgIC8vIFRoZXJlJ3Mgbm8gZ3VhcmFudGVlIHRoYXQgYSB0
ZXN0IGhhcyB3cml0ZSBhY2Nlc3MgdG8gdGhlIGN1cnJlbnQKKyAgICAvLyBkaXJlY3RvcnksIHNv
IHdlIGNyZWF0ZSB0aGUgdGVtcG9yYXJ5IGZpbGUgaW4gdGhlIC90bXAgZGlyZWN0b3J5CisgICAg
Ly8gaW5zdGVhZC4gV2UgdXNlIC90bXAgb24gbW9zdCBzeXN0ZW1zLCBhbmQgL3NkY2FyZCBvbiBB
bmRyb2lkLgorICAgIC8vIFRoYXQncyBiZWNhdXNlIEFuZHJvaWQgZG9lc24ndCBoYXZlIC90bXAu
CisjICBpZiBHVEVTVF9PU19MSU5VWF9BTkRST0lECisgICAgLy8gTm90ZTogQW5kcm9pZCBhcHBs
aWNhdGlvbnMgYXJlIGV4cGVjdGVkIHRvIGNhbGwgdGhlIGZyYW1ld29yaydzCisgICAgLy8gQ29u
dGV4dC5nZXRFeHRlcm5hbFN0b3JhZ2VEaXJlY3RvcnkoKSBtZXRob2QgdGhyb3VnaCBKTkkgdG8g
Z2V0CisgICAgLy8gdGhlIGxvY2F0aW9uIG9mIHRoZSB3b3JsZC13cml0YWJsZSBTRCBDYXJkIGRp
cmVjdG9yeS4gSG93ZXZlciwKKyAgICAvLyB0aGlzIHJlcXVpcmVzIGEgQ29udGV4dCBoYW5kbGUs
IHdoaWNoIGNhbm5vdCBiZSByZXRyaWV2ZWQKKyAgICAvLyBnbG9iYWxseSBmcm9tIG5hdGl2ZSBj
b2RlLiBEb2luZyBzbyBhbHNvIHByZWNsdWRlcyBydW5uaW5nIHRoZQorICAgIC8vIGNvZGUgYXMg
cGFydCBvZiBhIHJlZ3VsYXIgc3RhbmRhbG9uZSBleGVjdXRhYmxlLCB3aGljaCBkb2Vzbid0Cisg
ICAgLy8gcnVuIGluIGEgRGFsdmlrIHByb2Nlc3MgKGUuZy4gd2hlbiBydW5uaW5nIGl0IHRocm91
Z2ggJ2FkYiBzaGVsbCcpLgorICAgIC8vCisgICAgLy8gVGhlIGxvY2F0aW9uIC9zZGNhcmQgaXMg
ZGlyZWN0bHkgYWNjZXNzaWJsZSBmcm9tIG5hdGl2ZSBjb2RlCisgICAgLy8gYW5kIGlzIHRoZSBv
bmx5IGxvY2F0aW9uICh1bm9mZmljaWFsbHkpIHN1cHBvcnRlZCBieSB0aGUgQW5kcm9pZAorICAg
IC8vIHRlYW0uIEl0J3MgZ2VuZXJhbGx5IGEgc3ltbGluayB0byB0aGUgcmVhbCBTRCBDYXJkIG1v
dW50IHBvaW50CisgICAgLy8gd2hpY2ggY2FuIGJlIC9tbnQvc2RjYXJkLCAvbW50L3NkY2FyZDAs
IC9zeXN0ZW0vbWVkaWEvc2RjYXJkLCBvcgorICAgIC8vIG90aGVyIE9FTS1jdXN0b21pemVkIGxv
Y2F0aW9ucy4gTmV2ZXIgcmVseSBvbiB0aGVzZSwgYW5kIGFsd2F5cworICAgIC8vIHVzZSAvc2Rj
YXJkLgorICAgIGNoYXIgbmFtZV90ZW1wbGF0ZVtdID0gIi9zZGNhcmQvZ3Rlc3RfY2FwdHVyZWRf
c3RyZWFtLlhYWFhYWCI7CisjICBlbHNlCisgICAgY2hhciBuYW1lX3RlbXBsYXRlW10gPSAiL3Rt
cC9jYXB0dXJlZF9zdHJlYW0uWFhYWFhYIjsKKyMgIGVuZGlmICAvLyBHVEVTVF9PU19MSU5VWF9B
TkRST0lECisgICAgY29uc3QgaW50IGNhcHR1cmVkX2ZkID0gbWtzdGVtcChuYW1lX3RlbXBsYXRl
KTsKKyAgICBmaWxlbmFtZV8gPSBuYW1lX3RlbXBsYXRlOworIyBlbmRpZiAgLy8gR1RFU1RfT1Nf
V0lORE9XUworICAgIGZmbHVzaChOVUxMKTsKKyAgICBkdXAyKGNhcHR1cmVkX2ZkLCBmZF8pOwor
ICAgIGNsb3NlKGNhcHR1cmVkX2ZkKTsKKyAgfQorCisgIH5DYXB0dXJlZFN0cmVhbSgpIHsKKyAg
ICByZW1vdmUoZmlsZW5hbWVfLmNfc3RyKCkpOworICB9CisKKyAgc3RkOjpzdHJpbmcgR2V0Q2Fw
dHVyZWRTdHJpbmcoKSB7CisgICAgaWYgKHVuY2FwdHVyZWRfZmRfICE9IC0xKSB7CisgICAgICAv
LyBSZXN0b3JlcyB0aGUgb3JpZ2luYWwgc3RyZWFtLgorICAgICAgZmZsdXNoKE5VTEwpOworICAg
ICAgZHVwMih1bmNhcHR1cmVkX2ZkXywgZmRfKTsKKyAgICAgIGNsb3NlKHVuY2FwdHVyZWRfZmRf
KTsKKyAgICAgIHVuY2FwdHVyZWRfZmRfID0gLTE7CisgICAgfQorCisgICAgRklMRSogY29uc3Qg
ZmlsZSA9IHBvc2l4OjpGT3BlbihmaWxlbmFtZV8uY19zdHIoKSwgInIiKTsKKyAgICBjb25zdCBz
dGQ6OnN0cmluZyBjb250ZW50ID0gUmVhZEVudGlyZUZpbGUoZmlsZSk7CisgICAgcG9zaXg6OkZD
bG9zZShmaWxlKTsKKyAgICByZXR1cm4gY29udGVudDsKKyAgfQorCisgcHJpdmF0ZToKKyAgY29u
c3QgaW50IGZkXzsgIC8vIEEgc3RyZWFtIHRvIGNhcHR1cmUuCisgIGludCB1bmNhcHR1cmVkX2Zk
XzsKKyAgLy8gTmFtZSBvZiB0aGUgdGVtcG9yYXJ5IGZpbGUgaG9sZGluZyB0aGUgc3RkZXJyIG91
dHB1dC4KKyAgOjpzdGQ6OnN0cmluZyBmaWxlbmFtZV87CisKKyAgR1RFU1RfRElTQUxMT1dfQ09Q
WV9BTkRfQVNTSUdOXyhDYXB0dXJlZFN0cmVhbSk7Cit9OworCitHVEVTVF9ESVNBQkxFX01TQ19X
QVJOSU5HU19QT1BfKCkKKworc3RhdGljIENhcHR1cmVkU3RyZWFtKiBnX2NhcHR1cmVkX3N0ZGVy
ciA9IE5VTEw7CitzdGF0aWMgQ2FwdHVyZWRTdHJlYW0qIGdfY2FwdHVyZWRfc3Rkb3V0ID0gTlVM
TDsKKworLy8gU3RhcnRzIGNhcHR1cmluZyBhbiBvdXRwdXQgc3RyZWFtIChzdGRvdXQvc3RkZXJy
KS4KK3ZvaWQgQ2FwdHVyZVN0cmVhbShpbnQgZmQsIGNvbnN0IGNoYXIqIHN0cmVhbV9uYW1lLCBD
YXB0dXJlZFN0cmVhbSoqIHN0cmVhbSkgeworICBpZiAoKnN0cmVhbSAhPSBOVUxMKSB7CisgICAg
R1RFU1RfTE9HXyhGQVRBTCkgPDwgIk9ubHkgb25lICIgPDwgc3RyZWFtX25hbWUKKyAgICAgICAg
ICAgICAgICAgICAgICA8PCAiIGNhcHR1cmVyIGNhbiBleGlzdCBhdCBhIHRpbWUuIjsKKyAgfQor
ICAqc3RyZWFtID0gbmV3IENhcHR1cmVkU3RyZWFtKGZkKTsKK30KKworLy8gU3RvcHMgY2FwdHVy
aW5nIHRoZSBvdXRwdXQgc3RyZWFtIGFuZCByZXR1cm5zIHRoZSBjYXB0dXJlZCBzdHJpbmcuCitz
dGQ6OnN0cmluZyBHZXRDYXB0dXJlZFN0cmVhbShDYXB0dXJlZFN0cmVhbSoqIGNhcHR1cmVkX3N0
cmVhbSkgeworICBjb25zdCBzdGQ6OnN0cmluZyBjb250ZW50ID0gKCpjYXB0dXJlZF9zdHJlYW0p
LT5HZXRDYXB0dXJlZFN0cmluZygpOworCisgIGRlbGV0ZSAqY2FwdHVyZWRfc3RyZWFtOworICAq
Y2FwdHVyZWRfc3RyZWFtID0gTlVMTDsKKworICByZXR1cm4gY29udGVudDsKK30KKworLy8gU3Rh
cnRzIGNhcHR1cmluZyBzdGRvdXQuCit2b2lkIENhcHR1cmVTdGRvdXQoKSB7CisgIENhcHR1cmVT
dHJlYW0oa1N0ZE91dEZpbGVubywgInN0ZG91dCIsICZnX2NhcHR1cmVkX3N0ZG91dCk7Cit9CisK
Ky8vIFN0YXJ0cyBjYXB0dXJpbmcgc3RkZXJyLgordm9pZCBDYXB0dXJlU3RkZXJyKCkgeworICBD
YXB0dXJlU3RyZWFtKGtTdGRFcnJGaWxlbm8sICJzdGRlcnIiLCAmZ19jYXB0dXJlZF9zdGRlcnIp
OworfQorCisvLyBTdG9wcyBjYXB0dXJpbmcgc3Rkb3V0IGFuZCByZXR1cm5zIHRoZSBjYXB0dXJl
ZCBzdHJpbmcuCitzdGQ6OnN0cmluZyBHZXRDYXB0dXJlZFN0ZG91dCgpIHsKKyAgcmV0dXJuIEdl
dENhcHR1cmVkU3RyZWFtKCZnX2NhcHR1cmVkX3N0ZG91dCk7Cit9CisKKy8vIFN0b3BzIGNhcHR1
cmluZyBzdGRlcnIgYW5kIHJldHVybnMgdGhlIGNhcHR1cmVkIHN0cmluZy4KK3N0ZDo6c3RyaW5n
IEdldENhcHR1cmVkU3RkZXJyKCkgeworICByZXR1cm4gR2V0Q2FwdHVyZWRTdHJlYW0oJmdfY2Fw
dHVyZWRfc3RkZXJyKTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNU
SU9OCisKK3NpemVfdCBHZXRGaWxlU2l6ZShGSUxFKiBmaWxlKSB7CisgIGZzZWVrKGZpbGUsIDAs
IFNFRUtfRU5EKTsKKyAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oZnRlbGwoZmlsZSkpOwor
fQorCitzdGQ6OnN0cmluZyBSZWFkRW50aXJlRmlsZShGSUxFKiBmaWxlKSB7CisgIGNvbnN0IHNp
emVfdCBmaWxlX3NpemUgPSBHZXRGaWxlU2l6ZShmaWxlKTsKKyAgY2hhciogY29uc3QgYnVmZmVy
ID0gbmV3IGNoYXJbZmlsZV9zaXplXTsKKworICBzaXplX3QgYnl0ZXNfbGFzdF9yZWFkID0gMDsg
IC8vICMgb2YgYnl0ZXMgcmVhZCBpbiB0aGUgbGFzdCBmcmVhZCgpCisgIHNpemVfdCBieXRlc19y
ZWFkID0gMDsgICAgICAgLy8gIyBvZiBieXRlcyByZWFkIHNvIGZhcgorCisgIGZzZWVrKGZpbGUs
IDAsIFNFRUtfU0VUKTsKKworICAvLyBLZWVwcyByZWFkaW5nIHRoZSBmaWxlIHVudGlsIHdlIGNh
bm5vdCByZWFkIGZ1cnRoZXIgb3IgdGhlCisgIC8vIHByZS1kZXRlcm1pbmVkIGZpbGUgc2l6ZSBp
cyByZWFjaGVkLgorICBkbyB7CisgICAgYnl0ZXNfbGFzdF9yZWFkID0gZnJlYWQoYnVmZmVyK2J5
dGVzX3JlYWQsIDEsIGZpbGVfc2l6ZS1ieXRlc19yZWFkLCBmaWxlKTsKKyAgICBieXRlc19yZWFk
ICs9IGJ5dGVzX2xhc3RfcmVhZDsKKyAgfSB3aGlsZSAoYnl0ZXNfbGFzdF9yZWFkID4gMCAmJiBi
eXRlc19yZWFkIDwgZmlsZV9zaXplKTsKKworICBjb25zdCBzdGQ6OnN0cmluZyBjb250ZW50KGJ1
ZmZlciwgYnl0ZXNfcmVhZCk7CisgIGRlbGV0ZVtdIGJ1ZmZlcjsKKworICByZXR1cm4gY29udGVu
dDsKK30KKworI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCisKK3N0YXRpYyBjb25zdCA6OnN0ZDo6
dmVjdG9yPHRlc3Rpbmc6OmludGVybmFsOjpzdHJpbmc+KiBnX2luamVjdGVkX3Rlc3RfYXJndnMg
PQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEw7ICAvLyBPd25l
ZC4KKwordm9pZCBTZXRJbmplY3RhYmxlQXJndnMoY29uc3QgOjpzdGQ6OnZlY3Rvcjx0ZXN0aW5n
OjppbnRlcm5hbDo6c3RyaW5nPiogYXJndnMpIHsKKyAgaWYgKGdfaW5qZWN0ZWRfdGVzdF9hcmd2
cyAhPSBhcmd2cykKKyAgICBkZWxldGUgZ19pbmplY3RlZF90ZXN0X2FyZ3ZzOworICBnX2luamVj
dGVkX3Rlc3RfYXJndnMgPSBhcmd2czsKK30KKworY29uc3QgOjpzdGQ6OnZlY3Rvcjx0ZXN0aW5n
OjppbnRlcm5hbDo6c3RyaW5nPiYgR2V0SW5qZWN0YWJsZUFyZ3ZzKCkgeworICBpZiAoZ19pbmpl
Y3RlZF90ZXN0X2FyZ3ZzICE9IE5VTEwpIHsKKyAgICByZXR1cm4gKmdfaW5qZWN0ZWRfdGVzdF9h
cmd2czsKKyAgfQorICByZXR1cm4gR2V0QXJndnMoKTsKK30KKyNlbmRpZiAgLy8gR1RFU1RfSEFT
X0RFQVRIX1RFU1QKKworI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCituYW1lc3BhY2UgcG9z
aXggewordm9pZCBBYm9ydCgpIHsKKyAgRGVidWdCcmVhaygpOworICBUZXJtaW5hdGVQcm9jZXNz
KEdldEN1cnJlbnRQcm9jZXNzKCksIDEpOworfQorfSAgLy8gbmFtZXNwYWNlIHBvc2l4CisjZW5k
aWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisKKy8vIFJldHVybnMgdGhlIG5hbWUgb2Yg
dGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGNvcnJlc3BvbmRpbmcgdG8gdGhlCisvLyBnaXZlbiBm
bGFnLiAgRm9yIGV4YW1wbGUsIEZsYWdUb0VudlZhcigiZm9vIikgd2lsbCByZXR1cm4KKy8vICJH
VEVTVF9GT08iIGluIHRoZSBvcGVuLXNvdXJjZSB2ZXJzaW9uLgorc3RhdGljIHN0ZDo6c3RyaW5n
IEZsYWdUb0VudlZhcihjb25zdCBjaGFyKiBmbGFnKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGZ1
bGxfZmxhZyA9CisgICAgICAoTWVzc2FnZSgpIDw8IEdURVNUX0ZMQUdfUFJFRklYXyA8PCBmbGFn
KS5HZXRTdHJpbmcoKTsKKworICBNZXNzYWdlIGVudl92YXI7CisgIGZvciAoc2l6ZV90IGkgPSAw
OyBpICE9IGZ1bGxfZmxhZy5sZW5ndGgoKTsgaSsrKSB7CisgICAgZW52X3ZhciA8PCBUb1VwcGVy
KGZ1bGxfZmxhZy5jX3N0cigpW2ldKTsKKyAgfQorCisgIHJldHVybiBlbnZfdmFyLkdldFN0cmlu
ZygpOworfQorCisvLyBQYXJzZXMgJ3N0cicgZm9yIGEgMzItYml0IHNpZ25lZCBpbnRlZ2VyLiAg
SWYgc3VjY2Vzc2Z1bCwgd3JpdGVzCisvLyB0aGUgcmVzdWx0IHRvICp2YWx1ZSBhbmQgcmV0dXJu
cyB0cnVlOyBvdGhlcndpc2UgbGVhdmVzICp2YWx1ZQorLy8gdW5jaGFuZ2VkIGFuZCByZXR1cm5z
IGZhbHNlLgorYm9vbCBQYXJzZUludDMyKGNvbnN0IE1lc3NhZ2UmIHNyY190ZXh0LCBjb25zdCBj
aGFyKiBzdHIsIEludDMyKiB2YWx1ZSkgeworICAvLyBQYXJzZXMgdGhlIGVudmlyb25tZW50IHZh
cmlhYmxlIGFzIGEgZGVjaW1hbCBpbnRlZ2VyLgorICBjaGFyKiBlbmQgPSBOVUxMOworICBjb25z
dCBsb25nIGxvbmdfdmFsdWUgPSBzdHJ0b2woc3RyLCAmZW5kLCAxMCk7ICAvLyBOT0xJTlQKKwor
ICAvLyBIYXMgc3RydG9sKCkgY29uc3VtZWQgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZz8K
KyAgaWYgKCplbmQgIT0gJ1wwJykgeworICAgIC8vIE5vIC0gYW4gaW52YWxpZCBjaGFyYWN0ZXIg
d2FzIGVuY291bnRlcmVkLgorICAgIE1lc3NhZ2UgbXNnOworICAgIG1zZyA8PCAiV0FSTklORzog
IiA8PCBzcmNfdGV4dAorICAgICAgICA8PCAiIGlzIGV4cGVjdGVkIHRvIGJlIGEgMzItYml0IGlu
dGVnZXIsIGJ1dCBhY3R1YWxseSIKKyAgICAgICAgPDwgIiBoYXMgdmFsdWUgXCIiIDw8IHN0ciA8
PCAiXCIuXG4iOworICAgIHByaW50ZigiJXMiLCBtc2cuR2V0U3RyaW5nKCkuY19zdHIoKSk7Cisg
ICAgZmZsdXNoKHN0ZG91dCk7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgLy8gSXMgdGhl
IHBhcnNlZCB2YWx1ZSBpbiB0aGUgcmFuZ2Ugb2YgYW4gSW50MzI/CisgIGNvbnN0IEludDMyIHJl
c3VsdCA9IHN0YXRpY19jYXN0PEludDMyPihsb25nX3ZhbHVlKTsKKyAgaWYgKGxvbmdfdmFsdWUg
PT0gTE9OR19NQVggfHwgbG9uZ192YWx1ZSA9PSBMT05HX01JTiB8fAorICAgICAgLy8gVGhlIHBh
cnNlZCB2YWx1ZSBvdmVyZmxvd3MgYXMgYSBsb25nLiAgKHN0cnRvbCgpIHJldHVybnMKKyAgICAg
IC8vIExPTkdfTUFYIG9yIExPTkdfTUlOIHdoZW4gdGhlIGlucHV0IG92ZXJmbG93cy4pCisgICAg
ICByZXN1bHQgIT0gbG9uZ192YWx1ZQorICAgICAgLy8gVGhlIHBhcnNlZCB2YWx1ZSBvdmVyZmxv
d3MgYXMgYW4gSW50MzIuCisgICAgICApIHsKKyAgICBNZXNzYWdlIG1zZzsKKyAgICBtc2cgPDwg
IldBUk5JTkc6ICIgPDwgc3JjX3RleHQKKyAgICAgICAgPDwgIiBpcyBleHBlY3RlZCB0byBiZSBh
IDMyLWJpdCBpbnRlZ2VyLCBidXQgYWN0dWFsbHkiCisgICAgICAgIDw8ICIgaGFzIHZhbHVlICIg
PDwgc3RyIDw8ICIsIHdoaWNoIG92ZXJmbG93cy5cbiI7CisgICAgcHJpbnRmKCIlcyIsIG1zZy5H
ZXRTdHJpbmcoKS5jX3N0cigpKTsKKyAgICBmZmx1c2goc3Rkb3V0KTsKKyAgICByZXR1cm4gZmFs
c2U7CisgIH0KKworICAqdmFsdWUgPSByZXN1bHQ7CisgIHJldHVybiB0cnVlOworfQorCisvLyBS
ZWFkcyBhbmQgcmV0dXJucyB0aGUgQm9vbGVhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBjb3JyZXNw
b25kaW5nIHRvCisvLyB0aGUgZ2l2ZW4gZmxhZzsgaWYgaXQncyBub3Qgc2V0LCByZXR1cm5zIGRl
ZmF1bHRfdmFsdWUuCisvLworLy8gVGhlIHZhbHVlIGlzIGNvbnNpZGVyZWQgdHJ1ZSBpZmYgaXQn
cyBub3QgIjAiLgorYm9vbCBCb29sRnJvbUdUZXN0RW52KGNvbnN0IGNoYXIqIGZsYWcsIGJvb2wg
ZGVmYXVsdF92YWx1ZSkgeworI2lmIGRlZmluZWQoR1RFU1RfR0VUX0JPT0xfRlJPTV9FTlZfKQor
ICByZXR1cm4gR1RFU1RfR0VUX0JPT0xfRlJPTV9FTlZfKGZsYWcsIGRlZmF1bHRfdmFsdWUpOwor
I2VuZGlmICAvLyBkZWZpbmVkKEdURVNUX0dFVF9CT09MX0ZST01fRU5WXykKKyAgY29uc3Qgc3Rk
OjpzdHJpbmcgZW52X3ZhciA9IEZsYWdUb0VudlZhcihmbGFnKTsKKyAgY29uc3QgY2hhciogY29u
c3Qgc3RyaW5nX3ZhbHVlID0gcG9zaXg6OkdldEVudihlbnZfdmFyLmNfc3RyKCkpOworICByZXR1
cm4gc3RyaW5nX3ZhbHVlID09IE5VTEwgPworICAgICAgZGVmYXVsdF92YWx1ZSA6IHN0cmNtcChz
dHJpbmdfdmFsdWUsICIwIikgIT0gMDsKK30KKworLy8gUmVhZHMgYW5kIHJldHVybnMgYSAzMi1i
aXQgaW50ZWdlciBzdG9yZWQgaW4gdGhlIGVudmlyb25tZW50CisvLyB2YXJpYWJsZSBjb3JyZXNw
b25kaW5nIHRvIHRoZSBnaXZlbiBmbGFnOyBpZiBpdCBpc24ndCBzZXQgb3IKKy8vIGRvZXNuJ3Qg
cmVwcmVzZW50IGEgdmFsaWQgMzItYml0IGludGVnZXIsIHJldHVybnMgZGVmYXVsdF92YWx1ZS4K
K0ludDMyIEludDMyRnJvbUdUZXN0RW52KGNvbnN0IGNoYXIqIGZsYWcsIEludDMyIGRlZmF1bHRf
dmFsdWUpIHsKKyNpZiBkZWZpbmVkKEdURVNUX0dFVF9JTlQzMl9GUk9NX0VOVl8pCisgIHJldHVy
biBHVEVTVF9HRVRfSU5UMzJfRlJPTV9FTlZfKGZsYWcsIGRlZmF1bHRfdmFsdWUpOworI2VuZGlm
ICAvLyBkZWZpbmVkKEdURVNUX0dFVF9JTlQzMl9GUk9NX0VOVl8pCisgIGNvbnN0IHN0ZDo6c3Ry
aW5nIGVudl92YXIgPSBGbGFnVG9FbnZWYXIoZmxhZyk7CisgIGNvbnN0IGNoYXIqIGNvbnN0IHN0
cmluZ192YWx1ZSA9IHBvc2l4OjpHZXRFbnYoZW52X3Zhci5jX3N0cigpKTsKKyAgaWYgKHN0cmlu
Z192YWx1ZSA9PSBOVUxMKSB7CisgICAgLy8gVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIG5v
dCBzZXQuCisgICAgcmV0dXJuIGRlZmF1bHRfdmFsdWU7CisgIH0KKworICBJbnQzMiByZXN1bHQg
PSBkZWZhdWx0X3ZhbHVlOworICBpZiAoIVBhcnNlSW50MzIoTWVzc2FnZSgpIDw8ICJFbnZpcm9u
bWVudCB2YXJpYWJsZSAiIDw8IGVudl92YXIsCisgICAgICAgICAgICAgICAgICBzdHJpbmdfdmFs
dWUsICZyZXN1bHQpKSB7CisgICAgcHJpbnRmKCJUaGUgZGVmYXVsdCB2YWx1ZSAlcyBpcyB1c2Vk
LlxuIiwKKyAgICAgICAgICAgKE1lc3NhZ2UoKSA8PCBkZWZhdWx0X3ZhbHVlKS5HZXRTdHJpbmco
KS5jX3N0cigpKTsKKyAgICBmZmx1c2goc3Rkb3V0KTsKKyAgICByZXR1cm4gZGVmYXVsdF92YWx1
ZTsKKyAgfQorCisgIHJldHVybiByZXN1bHQ7Cit9CisKKy8vIFJlYWRzIGFuZCByZXR1cm5zIHRo
ZSBzdHJpbmcgZW52aXJvbm1lbnQgdmFyaWFibGUgY29ycmVzcG9uZGluZyB0bworLy8gdGhlIGdp
dmVuIGZsYWc7IGlmIGl0J3Mgbm90IHNldCwgcmV0dXJucyBkZWZhdWx0X3ZhbHVlLgorc3RkOjpz
dHJpbmcgU3RyaW5nRnJvbUdUZXN0RW52KGNvbnN0IGNoYXIqIGZsYWcsIGNvbnN0IGNoYXIqIGRl
ZmF1bHRfdmFsdWUpIHsKKyNpZiBkZWZpbmVkKEdURVNUX0dFVF9TVFJJTkdfRlJPTV9FTlZfKQor
ICByZXR1cm4gR1RFU1RfR0VUX1NUUklOR19GUk9NX0VOVl8oZmxhZywgZGVmYXVsdF92YWx1ZSk7
CisjZW5kaWYgIC8vIGRlZmluZWQoR1RFU1RfR0VUX1NUUklOR19GUk9NX0VOVl8pCisgIGNvbnN0
IHN0ZDo6c3RyaW5nIGVudl92YXIgPSBGbGFnVG9FbnZWYXIoZmxhZyk7CisgIGNvbnN0IGNoYXIq
IHZhbHVlID0gcG9zaXg6OkdldEVudihlbnZfdmFyLmNfc3RyKCkpOworICBpZiAodmFsdWUgIT0g
TlVMTCkgeworICAgIHJldHVybiB2YWx1ZTsKKyAgfQorCisgIC8vIEFzIGEgc3BlY2lhbCBjYXNl
IGZvciB0aGUgJ291dHB1dCcgZmxhZywgaWYgR1RFU1RfT1VUUFVUIGlzIG5vdAorICAvLyBzZXQs
IHdlIGxvb2sgZm9yIFhNTF9PVVRQVVRfRklMRSwgd2hpY2ggaXMgc2V0IGJ5IHRoZSBCYXplbCBi
dWlsZAorICAvLyBzeXN0ZW0uICBUaGUgdmFsdWUgb2YgWE1MX09VVFBVVF9GSUxFIGlzIGEgZmls
ZW5hbWUgd2l0aG91dCB0aGUKKyAgLy8gInhtbDoiIHByZWZpeCBvZiBHVEVTVF9PVVRQVVQuCisg
IC8vCisgIC8vIFRoZSBuZXQgcHJpb3JpdHkgb3JkZXIgYWZ0ZXIgZmxhZyBwcm9jZXNzaW5nIGlz
IHRodXM6CisgIC8vICAgLS1ndGVzdF9vdXRwdXQgY29tbWFuZCBsaW5lIGZsYWcKKyAgLy8gICBH
VEVTVF9PVVRQVVQgZW52aXJvbm1lbnQgdmFyaWFibGUKKyAgLy8gICBYTUxfT1VUUFVUX0ZJTEUg
ZW52aXJvbm1lbnQgdmFyaWFibGUKKyAgLy8gICAnZGVmYXVsdF92YWx1ZScKKyAgaWYgKHN0cmNt
cChmbGFnLCAib3V0cHV0IikgPT0gMCkgeworICAgIHZhbHVlID0gcG9zaXg6OkdldEVudigiWE1M
X09VVFBVVF9GSUxFIik7CisgICAgaWYgKHZhbHVlICE9IE5VTEwpIHsKKyAgICAgIHJldHVybiBz
dGQ6OnN0cmluZygieG1sOiIpICsgdmFsdWU7CisgICAgfQorICB9CisgIHJldHVybiBkZWZhdWx0
X3ZhbHVlOworfQorCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSB0
ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zcmMvZ3Rlc3QtcHJpbnRlcnMuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xldGVzdC9zcmMvZ3Rlc3QtcHJpbnRlcnMuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTJkZjQxMmY4YTIw
NDU5MDQzY2RiNzBlNWIwOTVhNzJiN2ExMzk0YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0
ZXN0L3NyYy9ndGVzdC1wcmludGVycy5jYwpAQCAtMCwwICsxLDM3MyBAQAorLy8gQ29weXJpZ2h0
IDIwMDcsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24u
CisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEF1dGhvcjogd2FuQGdvb2ds
ZS5jb20gKFpoYW55b25nIFdhbikKKworLy8gR29vZ2xlIFRlc3QgLSBUaGUgR29vZ2xlIEMrKyBU
ZXN0aW5nIEZyYW1ld29yaworLy8KKy8vIFRoaXMgZmlsZSBpbXBsZW1lbnRzIGEgdW5pdmVyc2Fs
IHZhbHVlIHByaW50ZXIgdGhhdCBjYW4gcHJpbnQgYQorLy8gdmFsdWUgb2YgYW55IHR5cGUgVDoK
Ky8vCisvLyAgIHZvaWQgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsUHJpbnRlcjxUPjo6
UHJpbnQodmFsdWUsIG9zdHJlYW1fcHRyKTsKKy8vCisvLyBJdCB1c2VzIHRoZSA8PCBvcGVyYXRv
ciB3aGVuIHBvc3NpYmxlLCBhbmQgcHJpbnRzIHRoZSBieXRlcyBpbiB0aGUKKy8vIG9iamVjdCBv
dGhlcndpc2UuICBBIHVzZXIgY2FuIG92ZXJyaWRlIGl0cyBiZWhhdmlvciBmb3IgYSBjbGFzcwor
Ly8gdHlwZSBGb28gYnkgZGVmaW5pbmcgZWl0aGVyIG9wZXJhdG9yPDwoOjpzdGQ6Om9zdHJlYW0m
LCBjb25zdCBGb28mKQorLy8gb3Igdm9pZCBQcmludFRvKGNvbnN0IEZvbyYsIDo6c3RkOjpvc3Ry
ZWFtKikgaW4gdGhlIG5hbWVzcGFjZSB0aGF0CisvLyBkZWZpbmVzIEZvby4KKworI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LXByaW50ZXJzLmgiCisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxz
dGRpby5oPgorI2luY2x1ZGUgPGN3Y2hhcj4KKyNpbmNsdWRlIDxvc3RyZWFtPiAgLy8gTk9MSU5U
CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQu
aCIKKworbmFtZXNwYWNlIHRlc3RpbmcgeworCituYW1lc3BhY2UgeworCit1c2luZyA6OnN0ZDo6
b3N0cmVhbTsKKworLy8gUHJpbnRzIGEgc2VnbWVudCBvZiBieXRlcyBpbiB0aGUgZ2l2ZW4gb2Jq
ZWN0LgorR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX01FTU9SWV8KK0dURVNUX0FUVFJJQlVU
RV9OT19TQU5JVElaRV9BRERSRVNTXworR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX1RIUkVB
RF8KK3ZvaWQgUHJpbnRCeXRlU2VnbWVudEluT2JqZWN0VG8oY29uc3QgdW5zaWduZWQgY2hhciog
b2JqX2J5dGVzLCBzaXplX3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBjb3VudCwgb3N0cmVhbSogb3MpIHsKKyAgY2hhciB0ZXh0WzVdID0gIiI7CisgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpICE9IGNvdW50OyBpKyspIHsKKyAgICBjb25zdCBzaXplX3QgaiA9
IHN0YXJ0ICsgaTsKKyAgICBpZiAoaSAhPSAwKSB7CisgICAgICAvLyBPcmdhbml6ZXMgdGhlIGJ5
dGVzIGludG8gZ3JvdXBzIG9mIDIgZm9yIGVhc3kgcGFyc2luZyBieQorICAgICAgLy8gaHVtYW4u
CisgICAgICBpZiAoKGogJSAyKSA9PSAwKQorICAgICAgICAqb3MgPDwgJyAnOworICAgICAgZWxz
ZQorICAgICAgICAqb3MgPDwgJy0nOworICAgIH0KKyAgICBHVEVTVF9TTlBSSU5URl8odGV4dCwg
c2l6ZW9mKHRleHQpLCAiJTAyWCIsIG9ial9ieXRlc1tqXSk7CisgICAgKm9zIDw8IHRleHQ7Cisg
IH0KK30KKworLy8gUHJpbnRzIHRoZSBieXRlcyBpbiB0aGUgZ2l2ZW4gdmFsdWUgdG8gdGhlIGdp
dmVuIG9zdHJlYW0uCit2b2lkIFByaW50Qnl0ZXNJbk9iamVjdFRvSW1wbChjb25zdCB1bnNpZ25l
ZCBjaGFyKiBvYmpfYnl0ZXMsIHNpemVfdCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9zdHJlYW0qIG9zKSB7CisgIC8vIFRlbGxzIHRoZSB1c2VyIGhvdyBiaWcgdGhlIG9i
amVjdCBpcy4KKyAgKm9zIDw8IGNvdW50IDw8ICItYnl0ZSBvYmplY3QgPCI7CisKKyAgY29uc3Qg
c2l6ZV90IGtUaHJlc2hvbGQgPSAxMzI7CisgIGNvbnN0IHNpemVfdCBrQ2h1bmtTaXplID0gNjQ7
CisgIC8vIElmIHRoZSBvYmplY3Qgc2l6ZSBpcyBiaWdnZXIgdGhhbiBrVGhyZXNob2xkLCB3ZSds
bCBoYXZlIHRvIG9taXQKKyAgLy8gc29tZSBkZXRhaWxzIGJ5IHByaW50aW5nIG9ubHkgdGhlIGZp
cnN0IGFuZCB0aGUgbGFzdCBrQ2h1bmtTaXplCisgIC8vIGJ5dGVzLgorICAvLyBUT0RPKHdhbik6
IGxldCB0aGUgdXNlciBjb250cm9sIHRoZSB0aHJlc2hvbGQgdXNpbmcgYSBmbGFnLgorICBpZiAo
Y291bnQgPCBrVGhyZXNob2xkKSB7CisgICAgUHJpbnRCeXRlU2VnbWVudEluT2JqZWN0VG8ob2Jq
X2J5dGVzLCAwLCBjb3VudCwgb3MpOworICB9IGVsc2UgeworICAgIFByaW50Qnl0ZVNlZ21lbnRJ
bk9iamVjdFRvKG9ial9ieXRlcywgMCwga0NodW5rU2l6ZSwgb3MpOworICAgICpvcyA8PCAiIC4u
LiAiOworICAgIC8vIFJvdW5kcyB1cCB0byAyLWJ5dGUgYm91bmRhcnkuCisgICAgY29uc3Qgc2l6
ZV90IHJlc3VtZV9wb3MgPSAoY291bnQgLSBrQ2h1bmtTaXplICsgMSkvMioyOworICAgIFByaW50
Qnl0ZVNlZ21lbnRJbk9iamVjdFRvKG9ial9ieXRlcywgcmVzdW1lX3BvcywgY291bnQgLSByZXN1
bWVfcG9zLCBvcyk7CisgIH0KKyAgKm9zIDw8ICI+IjsKK30KKworfSAgLy8gbmFtZXNwYWNlCisK
K25hbWVzcGFjZSBpbnRlcm5hbDIgeworCisvLyBEZWxlZ2F0ZXMgdG8gUHJpbnRCeXRlc0luT2Jq
ZWN0VG9JbXBsKCkgdG8gcHJpbnQgdGhlIGJ5dGVzIGluIHRoZQorLy8gZ2l2ZW4gb2JqZWN0LiAg
VGhlIGRlbGVnYXRpb24gc2ltcGxpZmllcyB0aGUgaW1wbGVtZW50YXRpb24sIHdoaWNoCisvLyB1
c2VzIHRoZSA8PCBvcGVyYXRvciBhbmQgdGh1cyBpcyBlYXNpZXIgZG9uZSBvdXRzaWRlIG9mIHRo
ZQorLy8gOjp0ZXN0aW5nOjppbnRlcm5hbCBuYW1lc3BhY2UsIHdoaWNoIGNvbnRhaW5zIGEgPDwg
b3BlcmF0b3IgdGhhdAorLy8gc29tZXRpbWVzIGNvbmZsaWN0cyB3aXRoIHRoZSBvbmUgaW4gU1RM
Lgordm9pZCBQcmludEJ5dGVzSW5PYmplY3RUbyhjb25zdCB1bnNpZ25lZCBjaGFyKiBvYmpfYnl0
ZXMsIHNpemVfdCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgb3N0cmVhbSogb3Mp
IHsKKyAgUHJpbnRCeXRlc0luT2JqZWN0VG9JbXBsKG9ial9ieXRlcywgY291bnQsIG9zKTsKK30K
KworfSAgLy8gbmFtZXNwYWNlIGludGVybmFsMgorCituYW1lc3BhY2UgaW50ZXJuYWwgeworCisv
LyBEZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIGEgY2hhciAob3Igd2NoYXJfdCksIHdlIHByaW50
IGl0IGluIG9uZQorLy8gb2YgdGhyZWUgZm9ybWF0czoKKy8vICAgLSBhcyBpcyBpZiBpdCdzIGEg
cHJpbnRhYmxlIEFTQ0lJIChlLmcuICdhJywgJzInLCAnICcpLAorLy8gICAtIGFzIGEgaGV4aWRl
Y2ltYWwgZXNjYXBlIHNlcXVlbmNlIChlLmcuICdceDdGJyksIG9yCisvLyAgIC0gYXMgYSBzcGVj
aWFsIGVzY2FwZSBzZXF1ZW5jZSAoZS5nLiAnXHInLCAnXG4nKS4KK2VudW0gQ2hhckZvcm1hdCB7
CisgIGtBc0lzLAorICBrSGV4RXNjYXBlLAorICBrU3BlY2lhbEVzY2FwZQorfTsKKworLy8gUmV0
dXJucyB0cnVlIGlmIGMgaXMgYSBwcmludGFibGUgQVNDSUkgY2hhcmFjdGVyLiAgV2UgdGVzdCB0
aGUKKy8vIHZhbHVlIG9mIGMgZGlyZWN0bHkgaW5zdGVhZCBvZiBjYWxsaW5nIGlzcHJpbnQoKSwg
d2hpY2ggaXMgYnVnZ3kgb24KKy8vIFdpbmRvd3MgTW9iaWxlLgoraW5saW5lIGJvb2wgSXNQcmlu
dGFibGVBc2NpaSh3Y2hhcl90IGMpIHsKKyAgcmV0dXJuIDB4MjAgPD0gYyAmJiBjIDw9IDB4N0U7
Cit9CisKKy8vIFByaW50cyBhIHdpZGUgb3IgbmFycm93IGNoYXIgYyBhcyBhIGNoYXJhY3RlciBs
aXRlcmFsIHdpdGhvdXQgdGhlCisvLyBxdW90ZXMsIGVzY2FwaW5nIGl0IHdoZW4gbmVjZXNzYXJ5
OyByZXR1cm5zIGhvdyBjIHdhcyBmb3JtYXR0ZWQuCisvLyBUaGUgdGVtcGxhdGUgYXJndW1lbnQg
VW5zaWduZWRDaGFyIGlzIHRoZSB1bnNpZ25lZCB2ZXJzaW9uIG9mIENoYXIsCisvLyB3aGljaCBp
cyB0aGUgdHlwZSBvZiBjLgordGVtcGxhdGUgPHR5cGVuYW1lIFVuc2lnbmVkQ2hhciwgdHlwZW5h
bWUgQ2hhcj4KK3N0YXRpYyBDaGFyRm9ybWF0IFByaW50QXNDaGFyTGl0ZXJhbFRvKENoYXIgYywg
b3N0cmVhbSogb3MpIHsKKyAgc3dpdGNoIChzdGF0aWNfY2FzdDx3Y2hhcl90PihjKSkgeworICAg
IGNhc2UgTCdcMCc6CisgICAgICAqb3MgPDwgIlxcMCI7CisgICAgICBicmVhazsKKyAgICBjYXNl
IEwnXCcnOgorICAgICAgKm9zIDw8ICJcXCciOworICAgICAgYnJlYWs7CisgICAgY2FzZSBMJ1xc
JzoKKyAgICAgICpvcyA8PCAiXFxcXCI7CisgICAgICBicmVhazsKKyAgICBjYXNlIEwnXGEnOgor
ICAgICAgKm9zIDw8ICJcXGEiOworICAgICAgYnJlYWs7CisgICAgY2FzZSBMJ1xiJzoKKyAgICAg
ICpvcyA8PCAiXFxiIjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgTCdcZic6CisgICAgICAqb3Mg
PDwgIlxcZiI7CisgICAgICBicmVhazsKKyAgICBjYXNlIEwnXG4nOgorICAgICAgKm9zIDw8ICJc
XG4iOworICAgICAgYnJlYWs7CisgICAgY2FzZSBMJ1xyJzoKKyAgICAgICpvcyA8PCAiXFxyIjsK
KyAgICAgIGJyZWFrOworICAgIGNhc2UgTCdcdCc6CisgICAgICAqb3MgPDwgIlxcdCI7CisgICAg
ICBicmVhazsKKyAgICBjYXNlIEwnXHYnOgorICAgICAgKm9zIDw8ICJcXHYiOworICAgICAgYnJl
YWs7CisgICAgZGVmYXVsdDoKKyAgICAgIGlmIChJc1ByaW50YWJsZUFzY2lpKGMpKSB7CisgICAg
ICAgICpvcyA8PCBzdGF0aWNfY2FzdDxjaGFyPihjKTsKKyAgICAgICAgcmV0dXJuIGtBc0lzOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgKm9zIDw8ICJcXHgiICsgU3RyaW5nOjpGb3JtYXRIZXhJ
bnQoc3RhdGljX2Nhc3Q8VW5zaWduZWRDaGFyPihjKSk7CisgICAgICAgIHJldHVybiBrSGV4RXNj
YXBlOworICAgICAgfQorICB9CisgIHJldHVybiBrU3BlY2lhbEVzY2FwZTsKK30KKworLy8gUHJp
bnRzIGEgd2NoYXJfdCBjIGFzIGlmIGl0J3MgcGFydCBvZiBhIHN0cmluZyBsaXRlcmFsLCBlc2Nh
cGluZyBpdCB3aGVuCisvLyBuZWNlc3Nhcnk7IHJldHVybnMgaG93IGMgd2FzIGZvcm1hdHRlZC4K
K3N0YXRpYyBDaGFyRm9ybWF0IFByaW50QXNTdHJpbmdMaXRlcmFsVG8od2NoYXJfdCBjLCBvc3Ry
ZWFtKiBvcykgeworICBzd2l0Y2ggKGMpIHsKKyAgICBjYXNlIEwnXCcnOgorICAgICAgKm9zIDw8
ICInIjsKKyAgICAgIHJldHVybiBrQXNJczsKKyAgICBjYXNlIEwnIic6CisgICAgICAqb3MgPDwg
IlxcXCIiOworICAgICAgcmV0dXJuIGtTcGVjaWFsRXNjYXBlOworICAgIGRlZmF1bHQ6CisgICAg
ICByZXR1cm4gUHJpbnRBc0NoYXJMaXRlcmFsVG88d2NoYXJfdD4oYywgb3MpOworICB9Cit9CisK
Ky8vIFByaW50cyBhIGNoYXIgYyBhcyBpZiBpdCdzIHBhcnQgb2YgYSBzdHJpbmcgbGl0ZXJhbCwg
ZXNjYXBpbmcgaXQgd2hlbgorLy8gbmVjZXNzYXJ5OyByZXR1cm5zIGhvdyBjIHdhcyBmb3JtYXR0
ZWQuCitzdGF0aWMgQ2hhckZvcm1hdCBQcmludEFzU3RyaW5nTGl0ZXJhbFRvKGNoYXIgYywgb3N0
cmVhbSogb3MpIHsKKyAgcmV0dXJuIFByaW50QXNTdHJpbmdMaXRlcmFsVG8oCisgICAgICBzdGF0
aWNfY2FzdDx3Y2hhcl90PihzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjKSksIG9zKTsKK30K
KworLy8gUHJpbnRzIGEgd2lkZSBvciBuYXJyb3cgY2hhcmFjdGVyIGMgYW5kIGl0cyBjb2RlLiAg
J1wwJyBpcyBwcmludGVkCisvLyBhcyAiJ1xcMCciLCBvdGhlciB1bnByaW50YWJsZSBjaGFyYWN0
ZXJzIGFyZSBhbHNvIHByb3Blcmx5IGVzY2FwZWQKKy8vIHVzaW5nIHRoZSBzdGFuZGFyZCBDKysg
ZXNjYXBlIHNlcXVlbmNlLiAgVGhlIHRlbXBsYXRlIGFyZ3VtZW50CisvLyBVbnNpZ25lZENoYXIg
aXMgdGhlIHVuc2lnbmVkIHZlcnNpb24gb2YgQ2hhciwgd2hpY2ggaXMgdGhlIHR5cGUgb2YgYy4K
K3RlbXBsYXRlIDx0eXBlbmFtZSBVbnNpZ25lZENoYXIsIHR5cGVuYW1lIENoYXI+Cit2b2lkIFBy
aW50Q2hhckFuZENvZGVUbyhDaGFyIGMsIG9zdHJlYW0qIG9zKSB7CisgIC8vIEZpcnN0LCBwcmlu
dCBjIGFzIGEgbGl0ZXJhbCBpbiB0aGUgbW9zdCByZWFkYWJsZSBmb3JtIHdlIGNhbiBmaW5kLgor
ICAqb3MgPDwgKChzaXplb2YoYykgPiAxKSA/ICJMJyIgOiAiJyIpOworICBjb25zdCBDaGFyRm9y
bWF0IGZvcm1hdCA9IFByaW50QXNDaGFyTGl0ZXJhbFRvPFVuc2lnbmVkQ2hhcj4oYywgb3MpOwor
ICAqb3MgPDwgIiciOworCisgIC8vIFRvIGFpZCB1c2VyIGRlYnVnZ2luZywgd2UgYWxzbyBwcmlu
dCBjJ3MgY29kZSBpbiBkZWNpbWFsLCB1bmxlc3MKKyAgLy8gaXQncyAwIChpbiB3aGljaCBjYXNl
IGMgd2FzIHByaW50ZWQgYXMgJ1xcMCcsIG1ha2luZyB0aGUgY29kZQorICAvLyBvYnZpb3VzKS4K
KyAgaWYgKGMgPT0gMCkKKyAgICByZXR1cm47CisgICpvcyA8PCAiICgiIDw8IHN0YXRpY19jYXN0
PGludD4oYyk7CisKKyAgLy8gRm9yIG1vcmUgY29udmVuaWVuY2UsIHdlIHByaW50IGMncyBjb2Rl
IGFnYWluIGluIGhleGlkZWNpbWFsLAorICAvLyB1bmxlc3MgYyB3YXMgYWxyZWFkeSBwcmludGVk
IGluIHRoZSBmb3JtICdceCMjJyBvciB0aGUgY29kZSBpcyBpbgorICAvLyBbMSwgOV0uCisgIGlm
IChmb3JtYXQgPT0ga0hleEVzY2FwZSB8fCAoMSA8PSBjICYmIGMgPD0gOSkpIHsKKyAgICAvLyBE
byBub3RoaW5nLgorICB9IGVsc2UgeworICAgICpvcyA8PCAiLCAweCIgPDwgU3RyaW5nOjpGb3Jt
YXRIZXhJbnQoc3RhdGljX2Nhc3Q8VW5zaWduZWRDaGFyPihjKSk7CisgIH0KKyAgKm9zIDw8ICIp
IjsKK30KKwordm9pZCBQcmludFRvKHVuc2lnbmVkIGNoYXIgYywgOjpzdGQ6Om9zdHJlYW0qIG9z
KSB7CisgIFByaW50Q2hhckFuZENvZGVUbzx1bnNpZ25lZCBjaGFyPihjLCBvcyk7Cit9Cit2b2lk
IFByaW50VG8oc2lnbmVkIGNoYXIgYywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50Q2hh
ckFuZENvZGVUbzx1bnNpZ25lZCBjaGFyPihjLCBvcyk7Cit9CisKKy8vIFByaW50cyBhIHdjaGFy
X3QgYXMgYSBzeW1ib2wgaWYgaXQgaXMgcHJpbnRhYmxlIG9yIGFzIGl0cyBpbnRlcm5hbAorLy8g
Y29kZSBvdGhlcndpc2UgYW5kIGFsc28gYXMgaXRzIGNvZGUuICBMJ1wwJyBpcyBwcmludGVkIGFz
ICJMJ1xcMCciLgordm9pZCBQcmludFRvKHdjaGFyX3Qgd2MsIG9zdHJlYW0qIG9zKSB7CisgIFBy
aW50Q2hhckFuZENvZGVUbzx3Y2hhcl90Pih3Yywgb3MpOworfQorCisvLyBQcmludHMgdGhlIGdp
dmVuIGFycmF5IG9mIGNoYXJhY3RlcnMgdG8gdGhlIG9zdHJlYW0uICBDaGFyVHlwZSBtdXN0IGJl
IGVpdGhlcgorLy8gY2hhciBvciB3Y2hhcl90LgorLy8gVGhlIGFycmF5IHN0YXJ0cyBhdCBiZWdp
biwgdGhlIGxlbmd0aCBpcyBsZW4sIGl0IG1heSBpbmNsdWRlICdcMCcgY2hhcmFjdGVycworLy8g
YW5kIG1heSBub3QgYmUgTlVMLXRlcm1pbmF0ZWQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5
cGU+CitHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfTUVNT1JZXworR1RFU1RfQVRUUklCVVRF
X05PX1NBTklUSVpFX0FERFJFU1NfCitHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfVEhSRUFE
Xworc3RhdGljIHZvaWQgUHJpbnRDaGFyc0FzU3RyaW5nVG8oCisgICAgY29uc3QgQ2hhclR5cGUq
IGJlZ2luLCBzaXplX3QgbGVuLCBvc3RyZWFtKiBvcykgeworICBjb25zdCBjaGFyKiBjb25zdCBr
UXVvdGVCZWdpbiA9IHNpemVvZihDaGFyVHlwZSkgPT0gMSA/ICJcIiIgOiAiTFwiIjsKKyAgKm9z
IDw8IGtRdW90ZUJlZ2luOworICBib29sIGlzX3ByZXZpb3VzX2hleCA9IGZhbHNlOworICBmb3Ig
KHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbGVuOyArK2luZGV4KSB7CisgICAgY29uc3QgQ2hh
clR5cGUgY3VyID0gYmVnaW5baW5kZXhdOworICAgIGlmIChpc19wcmV2aW91c19oZXggJiYgSXNY
RGlnaXQoY3VyKSkgeworICAgICAgLy8gUHJldmlvdXMgY2hhcmFjdGVyIGlzIG9mICdceC4uJyBm
b3JtIGFuZCB0aGlzIGNoYXJhY3RlciBjYW4gYmUKKyAgICAgIC8vIGludGVycHJldGVkIGFzIGFu
b3RoZXIgaGV4YWRlY2ltYWwgZGlnaXQgaW4gaXRzIG51bWJlci4gQnJlYWsgc3RyaW5nIHRvCisg
ICAgICAvLyBkaXNhbWJpZ3VhdGUuCisgICAgICAqb3MgPDwgIlwiICIgPDwga1F1b3RlQmVnaW47
CisgICAgfQorICAgIGlzX3ByZXZpb3VzX2hleCA9IFByaW50QXNTdHJpbmdMaXRlcmFsVG8oY3Vy
LCBvcykgPT0ga0hleEVzY2FwZTsKKyAgfQorICAqb3MgPDwgIlwiIjsKK30KKworLy8gUHJpbnRz
IGEgKGNvbnN0KSBjaGFyL3djaGFyX3QgYXJyYXkgb2YgJ2xlbicgZWxlbWVudHMsIHN0YXJ0aW5n
IGF0IGFkZHJlc3MKKy8vICdiZWdpbicuICBDaGFyVHlwZSBtdXN0IGJlIGVpdGhlciBjaGFyIG9y
IHdjaGFyX3QuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CitHVEVTVF9BVFRSSUJVVEVf
Tk9fU0FOSVRJWkVfTUVNT1JZXworR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX0FERFJFU1Nf
CitHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfVEhSRUFEXworc3RhdGljIHZvaWQgVW5pdmVy
c2FsUHJpbnRDaGFyQXJyYXkoCisgICAgY29uc3QgQ2hhclR5cGUqIGJlZ2luLCBzaXplX3QgbGVu
LCBvc3RyZWFtKiBvcykgeworICAvLyBUaGUgY29kZQorICAvLyAgIGNvbnN0IGNoYXIga0Zvb1td
ID0gImZvbyI7CisgIC8vIGdlbmVyYXRlcyBhbiBhcnJheSBvZiA0LCBub3QgMywgZWxlbWVudHMs
IHdpdGggdGhlIGxhc3Qgb25lIGJlaW5nICdcMCcuCisgIC8vCisgIC8vIFRoZXJlZm9yZSB3aGVu
IHByaW50aW5nIGEgY2hhciBhcnJheSwgd2UgZG9uJ3QgcHJpbnQgdGhlIGxhc3QgZWxlbWVudCBp
ZgorICAvLyBpdCdzICdcMCcsIHN1Y2ggdGhhdCB0aGUgb3V0cHV0IG1hdGNoZXMgdGhlIHN0cmlu
ZyBsaXRlcmFsIGFzIGl0J3MKKyAgLy8gd3JpdHRlbiBpbiB0aGUgc291cmNlIGNvZGUuCisgIGlm
IChsZW4gPiAwICYmIGJlZ2luW2xlbiAtIDFdID09ICdcMCcpIHsKKyAgICBQcmludENoYXJzQXNT
dHJpbmdUbyhiZWdpbiwgbGVuIC0gMSwgb3MpOworICAgIHJldHVybjsKKyAgfQorCisgIC8vIElm
LCBob3dldmVyLCB0aGUgbGFzdCBlbGVtZW50IGluIHRoZSBhcnJheSBpcyBub3QgJ1wwJywgZS5n
LgorICAvLyAgICBjb25zdCBjaGFyIGtGb29bXSA9IHsgJ2YnLCAnbycsICdvJyB9OworICAvLyB3
ZSBtdXN0IHByaW50IHRoZSBlbnRpcmUgYXJyYXkuICBXZSBhbHNvIHByaW50IGEgbWVzc2FnZSB0
byBpbmRpY2F0ZQorICAvLyB0aGF0IHRoZSBhcnJheSBpcyBub3QgTlVMLXRlcm1pbmF0ZWQuCisg
IFByaW50Q2hhcnNBc1N0cmluZ1RvKGJlZ2luLCBsZW4sIG9zKTsKKyAgKm9zIDw8ICIgKG5vIHRl
cm1pbmF0aW5nIE5VTCkiOworfQorCisvLyBQcmludHMgYSAoY29uc3QpIGNoYXIgYXJyYXkgb2Yg
J2xlbicgZWxlbWVudHMsIHN0YXJ0aW5nIGF0IGFkZHJlc3MgJ2JlZ2luJy4KK3ZvaWQgVW5pdmVy
c2FsUHJpbnRBcnJheShjb25zdCBjaGFyKiBiZWdpbiwgc2l6ZV90IGxlbiwgb3N0cmVhbSogb3Mp
IHsKKyAgVW5pdmVyc2FsUHJpbnRDaGFyQXJyYXkoYmVnaW4sIGxlbiwgb3MpOworfQorCisvLyBQ
cmludHMgYSAoY29uc3QpIHdjaGFyX3QgYXJyYXkgb2YgJ2xlbicgZWxlbWVudHMsIHN0YXJ0aW5n
IGF0IGFkZHJlc3MKKy8vICdiZWdpbicuCit2b2lkIFVuaXZlcnNhbFByaW50QXJyYXkoY29uc3Qg
d2NoYXJfdCogYmVnaW4sIHNpemVfdCBsZW4sIG9zdHJlYW0qIG9zKSB7CisgIFVuaXZlcnNhbFBy
aW50Q2hhckFycmF5KGJlZ2luLCBsZW4sIG9zKTsKK30KKworLy8gUHJpbnRzIHRoZSBnaXZlbiBD
IHN0cmluZyB0byB0aGUgb3N0cmVhbS4KK3ZvaWQgUHJpbnRUbyhjb25zdCBjaGFyKiBzLCBvc3Ry
ZWFtKiBvcykgeworICBpZiAocyA9PSBOVUxMKSB7CisgICAgKm9zIDw8ICJOVUxMIjsKKyAgfSBl
bHNlIHsKKyAgICAqb3MgPDwgSW1wbGljaXRDYXN0Xzxjb25zdCB2b2lkKj4ocykgPDwgIiBwb2lu
dGluZyB0byAiOworICAgIFByaW50Q2hhcnNBc1N0cmluZ1RvKHMsIHN0cmxlbihzKSwgb3MpOwor
ICB9Cit9CisKKy8vIE1TVkMgY29tcGlsZXIgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gZGVmaW5lIHdo
YXJfdCBhcyBhIHR5cGVkZWYKKy8vIG9mIHVuc2lnbmVkIHNob3J0LiBEZWZpbmluZyBhbiBvdmVy
bG9hZCBmb3IgY29uc3Qgd2NoYXJfdCogaW4gdGhhdCBjYXNlCisvLyB3b3VsZCBjYXVzZSBwb2lu
dGVycyB0byB1bnNpZ25lZCBzaG9ydHMgYmUgcHJpbnRlZCBhcyB3aWRlIHN0cmluZ3MsCisvLyBw
b3NzaWJseSBhY2Nlc3NpbmcgbW9yZSBtZW1vcnkgdGhhbiBpbnRlbmRlZCBhbmQgY2F1c2luZyBp
bnZhbGlkCisvLyBtZW1vcnkgYWNjZXNzZXMuIE1TVkMgZGVmaW5lcyBfTkFUSVZFX1dDSEFSX1Rf
REVGSU5FRCBzeW1ib2wgd2hlbgorLy8gd2NoYXJfdCBpcyBpbXBsZW1lbnRlZCBhcyBhIG5hdGl2
ZSB0eXBlLgorI2lmICFkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9OQVRJVkVfV0NIQVJf
VF9ERUZJTkVEKQorLy8gUHJpbnRzIHRoZSBnaXZlbiB3aWRlIEMgc3RyaW5nIHRvIHRoZSBvc3Ry
ZWFtLgordm9pZCBQcmludFRvKGNvbnN0IHdjaGFyX3QqIHMsIG9zdHJlYW0qIG9zKSB7CisgIGlm
IChzID09IE5VTEwpIHsKKyAgICAqb3MgPDwgIk5VTEwiOworICB9IGVsc2UgeworICAgICpvcyA8
PCBJbXBsaWNpdENhc3RfPGNvbnN0IHZvaWQqPihzKSA8PCAiIHBvaW50aW5nIHRvICI7CisgICAg
UHJpbnRDaGFyc0FzU3RyaW5nVG8ocywgc3RkOjp3Y3NsZW4ocyksIG9zKTsKKyAgfQorfQorI2Vu
ZGlmICAvLyB3Y2hhcl90IGlzIG5hdGl2ZQorCisvLyBQcmludHMgYSA6OnN0cmluZyBvYmplY3Qu
CisjaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKK3ZvaWQgUHJpbnRTdHJpbmdUbyhjb25zdCA6
OnN0cmluZyYgcywgb3N0cmVhbSogb3MpIHsKKyAgUHJpbnRDaGFyc0FzU3RyaW5nVG8ocy5kYXRh
KCksIHMuc2l6ZSgpLCBvcyk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5H
CisKK3ZvaWQgUHJpbnRTdHJpbmdUbyhjb25zdCA6OnN0ZDo6c3RyaW5nJiBzLCBvc3RyZWFtKiBv
cykgeworICBQcmludENoYXJzQXNTdHJpbmdUbyhzLmRhdGEoKSwgcy5zaXplKCksIG9zKTsKK30K
KworLy8gUHJpbnRzIGEgOjp3c3RyaW5nIG9iamVjdC4KKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1dT
VFJJTkcKK3ZvaWQgUHJpbnRXaWRlU3RyaW5nVG8oY29uc3QgOjp3c3RyaW5nJiBzLCBvc3RyZWFt
KiBvcykgeworICBQcmludENoYXJzQXNTdHJpbmdUbyhzLmRhdGEoKSwgcy5zaXplKCksIG9zKTsK
K30KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCisKKyNpZiBHVEVTVF9IQVNf
U1REX1dTVFJJTkcKK3ZvaWQgUHJpbnRXaWRlU3RyaW5nVG8oY29uc3QgOjpzdGQ6OndzdHJpbmcm
IHMsIG9zdHJlYW0qIG9zKSB7CisgIFByaW50Q2hhcnNBc1N0cmluZ1RvKHMuZGF0YSgpLCBzLnNp
emUoKSwgb3MpOworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX1dTVFJJTkcKKworfSAgLy8g
bmFtZXNwYWNlIGludGVybmFsCisKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC9zcmMvZ3Rlc3QtdGVzdC1wYXJ0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0
ZXN0LXRlc3QtcGFydC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYjBlMzU0MjVlMWU2ZjcxNzlkMDJiOTM5NDVi
ZGVlNDMxYjI1ZTRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LXRl
c3QtcGFydC5jYwpAQCAtMCwwICsxLDExMCBAQAorLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJ
bmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisv
LyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEF1dGhvcjogbWhldWxlQGdvb2dsZS5jb20gKE1hcmt1
cyBIZXVsZSkKKy8vCisvLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xl
IFRlc3QpCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC10ZXN0LXBhcnQuaCIKKworLy8gSW5kaWNh
dGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3Qncwor
Ly8gaW1wbGVtZW50YXRpb24uICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlu
bC5oIGlzCisvLyBpbmNsdWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVycm9yLiAg
VGhpcyB0cmljayBleGlzdHMgdG8KKy8vIHByZXZlbnQgdGhlIGFjY2lkZW50YWwgaW5jbHVzaW9u
IG9mIGd0ZXN0LWludGVybmFsLWlubC5oIGluIHRoZQorLy8gdXNlcidzIGNvZGUuCisjZGVmaW5l
IEdURVNUX0lNUExFTUVOVEFUSU9OXyAxCisjaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlu
bC5oIgorI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXworCituYW1lc3BhY2UgdGVzdGluZyB7
CisKK3VzaW5nIGludGVybmFsOjpHZXRVbml0VGVzdEltcGw7CisKKy8vIEdldHMgdGhlIHN1bW1h
cnkgb2YgdGhlIGZhaWx1cmUgbWVzc2FnZSBieSBvbWl0dGluZyB0aGUgc3RhY2sgdHJhY2UKKy8v
IGluIGl0Lgorc3RkOjpzdHJpbmcgVGVzdFBhcnRSZXN1bHQ6OkV4dHJhY3RTdW1tYXJ5KGNvbnN0
IGNoYXIqIG1lc3NhZ2UpIHsKKyAgY29uc3QgY2hhciogY29uc3Qgc3RhY2tfdHJhY2UgPSBzdHJz
dHIobWVzc2FnZSwgaW50ZXJuYWw6OmtTdGFja1RyYWNlTWFya2VyKTsKKyAgcmV0dXJuIHN0YWNr
X3RyYWNlID09IE5VTEwgPyBtZXNzYWdlIDoKKyAgICAgIHN0ZDo6c3RyaW5nKG1lc3NhZ2UsIHN0
YWNrX3RyYWNlKTsKK30KKworLy8gUHJpbnRzIGEgVGVzdFBhcnRSZXN1bHQgb2JqZWN0Lgorc3Rk
Ojpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IFRlc3RQYXJ0UmVz
dWx0JiByZXN1bHQpIHsKKyAgcmV0dXJuIG9zCisgICAgICA8PCByZXN1bHQuZmlsZV9uYW1lKCkg
PDwgIjoiIDw8IHJlc3VsdC5saW5lX251bWJlcigpIDw8ICI6ICIKKyAgICAgIDw8IChyZXN1bHQu
dHlwZSgpID09IFRlc3RQYXJ0UmVzdWx0OjprU3VjY2VzcyA/ICJTdWNjZXNzIiA6CisgICAgICAg
ICAgcmVzdWx0LnR5cGUoKSA9PSBUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSA/ICJGYXRh
bCBmYWlsdXJlIiA6CisgICAgICAgICAgIk5vbi1mYXRhbCBmYWlsdXJlIikgPDwgIjpcbiIKKyAg
ICAgIDw8IHJlc3VsdC5tZXNzYWdlKCkgPDwgc3RkOjplbmRsOworfQorCisvLyBBcHBlbmRzIGEg
VGVzdFBhcnRSZXN1bHQgdG8gdGhlIGFycmF5Lgordm9pZCBUZXN0UGFydFJlc3VsdEFycmF5OjpB
cHBlbmQoY29uc3QgVGVzdFBhcnRSZXN1bHQmIHJlc3VsdCkgeworICBhcnJheV8ucHVzaF9iYWNr
KHJlc3VsdCk7Cit9CisKKy8vIFJldHVybnMgdGhlIFRlc3RQYXJ0UmVzdWx0IGF0IHRoZSBnaXZl
biBpbmRleCAoMC1iYXNlZCkuCitjb25zdCBUZXN0UGFydFJlc3VsdCYgVGVzdFBhcnRSZXN1bHRB
cnJheTo6R2V0VGVzdFBhcnRSZXN1bHQoaW50IGluZGV4KSBjb25zdCB7CisgIGlmIChpbmRleCA8
IDAgfHwgaW5kZXggPj0gc2l6ZSgpKSB7CisgICAgcHJpbnRmKCJcbkludmFsaWQgaW5kZXggKCVk
KSBpbnRvIFRlc3RQYXJ0UmVzdWx0QXJyYXkuXG4iLCBpbmRleCk7CisgICAgaW50ZXJuYWw6OnBv
c2l4OjpBYm9ydCgpOworICB9CisKKyAgcmV0dXJuIGFycmF5X1tpbmRleF07Cit9CisKKy8vIFJl
dHVybnMgdGhlIG51bWJlciBvZiBUZXN0UGFydFJlc3VsdCBvYmplY3RzIGluIHRoZSBhcnJheS4K
K2ludCBUZXN0UGFydFJlc3VsdEFycmF5OjpzaXplKCkgY29uc3QgeworICByZXR1cm4gc3RhdGlj
X2Nhc3Q8aW50PihhcnJheV8uc2l6ZSgpKTsKK30KKworbmFtZXNwYWNlIGludGVybmFsIHsKKwor
SGFzTmV3RmF0YWxGYWlsdXJlSGVscGVyOjpIYXNOZXdGYXRhbEZhaWx1cmVIZWxwZXIoKQorICAg
IDogaGFzX25ld19mYXRhbF9mYWlsdXJlXyhmYWxzZSksCisgICAgICBvcmlnaW5hbF9yZXBvcnRl
cl8oR2V0VW5pdFRlc3RJbXBsKCktPgorICAgICAgICAgICAgICAgICAgICAgICAgIEdldFRlc3RQ
YXJ0UmVzdWx0UmVwb3J0ZXJGb3JDdXJyZW50VGhyZWFkKCkpIHsKKyAgR2V0VW5pdFRlc3RJbXBs
KCktPlNldFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJGb3JDdXJyZW50VGhyZWFkKHRoaXMpOworfQor
CitIYXNOZXdGYXRhbEZhaWx1cmVIZWxwZXI6On5IYXNOZXdGYXRhbEZhaWx1cmVIZWxwZXIoKSB7
CisgIEdldFVuaXRUZXN0SW1wbCgpLT5TZXRUZXN0UGFydFJlc3VsdFJlcG9ydGVyRm9yQ3VycmVu
dFRocmVhZCgKKyAgICAgIG9yaWdpbmFsX3JlcG9ydGVyXyk7Cit9CisKK3ZvaWQgSGFzTmV3RmF0
YWxGYWlsdXJlSGVscGVyOjpSZXBvcnRUZXN0UGFydFJlc3VsdCgKKyAgICBjb25zdCBUZXN0UGFy
dFJlc3VsdCYgcmVzdWx0KSB7CisgIGlmIChyZXN1bHQuZmF0YWxseV9mYWlsZWQoKSkKKyAgICBo
YXNfbmV3X2ZhdGFsX2ZhaWx1cmVfID0gdHJ1ZTsKKyAgb3JpZ2luYWxfcmVwb3J0ZXJfLT5SZXBv
cnRUZXN0UGFydFJlc3VsdChyZXN1bHQpOworfQorCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwK
KworfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NyYy9n
dGVzdC10eXBlZC10ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LXR5cGVkLXRlc3QuY2MK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZGYxZWVmNDc1NGVmZWI2YmMwNjYyMzliMWNjYzNiZmVlYjg5NjMxMAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NyYy9ndGVzdC10eXBlZC10ZXN0LmNjCkBAIC0w
LDAgKzEsMTE4IEBACisvLyBDb3B5cmlnaHQgMjAwOCBHb29nbGUgSW5jLgorLy8gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoK
Ky8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
Ly8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLwor
Ly8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
Ky8vCisvLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisKKyNpbmNsdWRl
ICJndGVzdC9ndGVzdC10eXBlZC10ZXN0LmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKwor
bmFtZXNwYWNlIHRlc3RpbmcgeworbmFtZXNwYWNlIGludGVybmFsIHsKKworI2lmIEdURVNUX0hB
U19UWVBFRF9URVNUX1AKKworLy8gU2tpcHMgdG8gdGhlIGZpcnN0IG5vbi1zcGFjZSBjaGFyIGlu
IHN0ci4gUmV0dXJucyBhbiBlbXB0eSBzdHJpbmcgaWYgc3RyCisvLyBjb250YWlucyBvbmx5IHdo
aXRlc3BhY2UgY2hhcmFjdGVycy4KK3N0YXRpYyBjb25zdCBjaGFyKiBTa2lwU3BhY2VzKGNvbnN0
IGNoYXIqIHN0cikgeworICB3aGlsZSAoSXNTcGFjZSgqc3RyKSkKKyAgICBzdHIrKzsKKyAgcmV0
dXJuIHN0cjsKK30KKworc3RhdGljIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBTcGxpdEludG9U
ZXN0TmFtZXMoY29uc3QgY2hhciogc3JjKSB7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBu
YW1lX3ZlYzsKKyAgc3JjID0gU2tpcFNwYWNlcyhzcmMpOworICBmb3IgKDsgc3JjICE9IE5VTEw7
IHNyYyA9IFNraXBDb21tYShzcmMpKSB7CisgICAgbmFtZV92ZWMucHVzaF9iYWNrKFN0cmlwVHJh
aWxpbmdTcGFjZXMoR2V0UHJlZml4VW50aWxDb21tYShzcmMpKSk7CisgIH0KKyAgcmV0dXJuIG5h
bWVfdmVjOworfQorCisvLyBWZXJpZmllcyB0aGF0IHJlZ2lzdGVyZWRfdGVzdHMgbWF0Y2ggdGhl
IHRlc3QgbmFtZXMgaW4KKy8vIHJlZ2lzdGVyZWRfdGVzdHNfOyByZXR1cm5zIHJlZ2lzdGVyZWRf
dGVzdHMgaWYgc3VjY2Vzc2Z1bCwgb3IKKy8vIGFib3J0cyB0aGUgcHJvZ3JhbSBvdGhlcndpc2Uu
Citjb25zdCBjaGFyKiBUeXBlZFRlc3RDYXNlUFN0YXRlOjpWZXJpZnlSZWdpc3RlcmVkVGVzdE5h
bWVzKAorICAgIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiByZWdpc3Rl
cmVkX3Rlc3RzKSB7CisgIHR5cGVkZWYgUmVnaXN0ZXJlZFRlc3RzTWFwOjpjb25zdF9pdGVyYXRv
ciBSZWdpc3RlcmVkVGVzdEl0ZXI7CisgIHJlZ2lzdGVyZWRfID0gdHJ1ZTsKKworICBzdGQ6OnZl
Y3RvcjxzdGQ6OnN0cmluZz4gbmFtZV92ZWMgPSBTcGxpdEludG9UZXN0TmFtZXMocmVnaXN0ZXJl
ZF90ZXN0cyk7CisKKyAgTWVzc2FnZSBlcnJvcnM7CisKKyAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+
IHRlc3RzOworICBmb3IgKHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPjo6Y29uc3RfaXRlcmF0b3Ig
bmFtZV9pdCA9IG5hbWVfdmVjLmJlZ2luKCk7CisgICAgICAgbmFtZV9pdCAhPSBuYW1lX3ZlYy5l
bmQoKTsgKytuYW1lX2l0KSB7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUgPSAqbmFtZV9p
dDsKKyAgICBpZiAodGVzdHMuY291bnQobmFtZSkgIT0gMCkgeworICAgICAgZXJyb3JzIDw8ICJU
ZXN0ICIgPDwgbmFtZSA8PCAiIGlzIGxpc3RlZCBtb3JlIHRoYW4gb25jZS5cbiI7CisgICAgICBj
b250aW51ZTsKKyAgICB9CisKKyAgICBib29sIGZvdW5kID0gZmFsc2U7CisgICAgZm9yIChSZWdp
c3RlcmVkVGVzdEl0ZXIgaXQgPSByZWdpc3RlcmVkX3Rlc3RzXy5iZWdpbigpOworICAgICAgICAg
aXQgIT0gcmVnaXN0ZXJlZF90ZXN0c18uZW5kKCk7CisgICAgICAgICArK2l0KSB7CisgICAgICBp
ZiAobmFtZSA9PSBpdC0+Zmlyc3QpIHsKKyAgICAgICAgZm91bmQgPSB0cnVlOworICAgICAgICBi
cmVhazsKKyAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoZm91bmQpIHsKKyAgICAgIHRlc3RzLmlu
c2VydChuYW1lKTsKKyAgICB9IGVsc2UgeworICAgICAgZXJyb3JzIDw8ICJObyB0ZXN0IG5hbWVk
ICIgPDwgbmFtZQorICAgICAgICAgICAgIDw8ICIgY2FuIGJlIGZvdW5kIGluIHRoaXMgdGVzdCBj
YXNlLlxuIjsKKyAgICB9CisgIH0KKworICBmb3IgKFJlZ2lzdGVyZWRUZXN0SXRlciBpdCA9IHJl
Z2lzdGVyZWRfdGVzdHNfLmJlZ2luKCk7CisgICAgICAgaXQgIT0gcmVnaXN0ZXJlZF90ZXN0c18u
ZW5kKCk7CisgICAgICAgKytpdCkgeworICAgIGlmICh0ZXN0cy5jb3VudChpdC0+Zmlyc3QpID09
IDApIHsKKyAgICAgIGVycm9ycyA8PCAiWW91IGZvcmdvdCB0byBsaXN0IHRlc3QgIiA8PCBpdC0+
Zmlyc3QgPDwgIi5cbiI7CisgICAgfQorICB9CisKKyAgY29uc3Qgc3RkOjpzdHJpbmcmIGVycm9y
c19zdHIgPSBlcnJvcnMuR2V0U3RyaW5nKCk7CisgIGlmIChlcnJvcnNfc3RyICE9ICIiKSB7Cisg
ICAgZnByaW50ZihzdGRlcnIsICIlcyAlcyIsIEZvcm1hdEZpbGVMb2NhdGlvbihmaWxlLCBsaW5l
KS5jX3N0cigpLAorICAgICAgICAgICAgZXJyb3JzX3N0ci5jX3N0cigpKTsKKyAgICBmZmx1c2go
c3RkZXJyKTsKKyAgICBwb3NpeDo6QWJvcnQoKTsKKyAgfQorCisgIHJldHVybiByZWdpc3RlcmVk
X3Rlc3RzOworfQorCisjZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUX1AKKworfSAgLy8g
bmFtZXNwYWNlIGludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LmNjCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjNhMThmMjVkMWJmZDQ3YTIwZjdjOGFiMDNmMjlmYjNkYzgxYWRlNmEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zcmMvZ3Rlc3QuY2MKQEAgLTAsMCArMSw1NDA4IEBACisv
LyBDb3B5cmlnaHQgMjAwNSwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRp
c3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
Ky8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gQXV0aG9y
OiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorLy8KKy8vIFRoZSBHb29nbGUgQysrIFRl
c3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0Lmgi
CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LmgiCisjaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3Qtc3BpLmgiCisKKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPG1hdGguaD4K
KyNpbmNsdWRlIDxzdGRhcmcuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxp
Yi5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpbmNsdWRlIDx3Y2hhci5oPgorI2luY2x1ZGUgPHdj
dHlwZS5oPgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGlvbWFuaXA+CisjaW5j
bHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPGxpc3Q+CisjaW5jbHVkZSA8bWFwPgorI2luY2x1ZGUg
PG9zdHJlYW0+ICAvLyBOT0xJTlQKKyNpbmNsdWRlIDxzc3RyZWFtPgorI2luY2x1ZGUgPHZlY3Rv
cj4KKworI2lmIEdURVNUX09TX0xJTlVYCisKKy8vIFRPRE8oa2VudG9uQGdvb2dsZS5jb20pOiBV
c2UgYXV0b2NvbmYgdG8gZGV0ZWN0IGF2YWlsYWJpbGl0eSBvZgorLy8gZ2V0dGltZW9mZGF5KCku
CisjIGRlZmluZSBHVEVTVF9IQVNfR0VUVElNRU9GREFZXyAxCisKKyMgaW5jbHVkZSA8ZmNudGwu
aD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxsaW1pdHMuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRl
IDxzY2hlZC5oPiAgLy8gTk9MSU5UCisvLyBEZWNsYXJlcyB2c25wcmludGYoKS4gIFRoaXMgaGVh
ZGVyIGlzIG5vdCBhdmFpbGFibGUgb24gV2luZG93cy4KKyMgaW5jbHVkZSA8c3RyaW5ncy5oPiAg
Ly8gTk9MSU5UCisjIGluY2x1ZGUgPHN5cy9tbWFuLmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8
c3lzL3RpbWUuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDx1bmlzdGQuaD4gIC8vIE5PTElOVAor
IyBpbmNsdWRlIDxzdHJpbmc+CisKKyNlbGlmIEdURVNUX09TX1NZTUJJQU4KKyMgZGVmaW5lIEdU
RVNUX0hBU19HRVRUSU1FT0ZEQVlfIDEKKyMgaW5jbHVkZSA8c3lzL3RpbWUuaD4gIC8vIE5PTElO
VAorCisjZWxpZiBHVEVTVF9PU19aT1MKKyMgZGVmaW5lIEdURVNUX0hBU19HRVRUSU1FT0ZEQVlf
IDEKKyMgaW5jbHVkZSA8c3lzL3RpbWUuaD4gIC8vIE5PTElOVAorCisvLyBPbiB6L09TIHdlIGFk
ZGl0aW9uYWxseSBuZWVkIHN0cmluZ3MuaCBmb3Igc3RyY2FzZWNtcC4KKyMgaW5jbHVkZSA8c3Ry
aW5ncy5oPiAgLy8gTk9MSU5UCisKKyNlbGlmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFICAvLyBX
ZSBhcmUgb24gV2luZG93cyBDRS4KKworIyBpbmNsdWRlIDx3aW5kb3dzLmg+ICAvLyBOT0xJTlQK
KyMgdW5kZWYgbWluCisKKyNlbGlmIEdURVNUX09TX1dJTkRPV1MgIC8vIFdlIGFyZSBvbiBXaW5k
b3dzIHByb3Blci4KKworIyBpbmNsdWRlIDxpby5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHN5
cy90aW1lYi5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHN5cy90eXBlcy5oPiAgLy8gTk9MSU5U
CisjIGluY2x1ZGUgPHN5cy9zdGF0Lmg+ICAvLyBOT0xJTlQKKworIyBpZiBHVEVTVF9PU19XSU5E
T1dTX01JTkdXCisvLyBNaW5HVyBoYXMgZ2V0dGltZW9mZGF5KCkgYnV0IG5vdCBfZnRpbWU2NCgp
LgorLy8gVE9ETyhrZW50b25AZ29vZ2xlLmNvbSk6IFVzZSBhdXRvY29uZiB0byBkZXRlY3QgYXZh
aWxhYmlsaXR5IG9mCisvLyAgIGdldHRpbWVvZmRheSgpLgorLy8gVE9ETyhrZW50b25AZ29vZ2xl
LmNvbSk6IFRoZXJlIGFyZSBvdGhlciB3YXlzIHRvIGdldCB0aGUgdGltZSBvbgorLy8gICBXaW5k
b3dzLCBsaWtlIEdldFRpY2tDb3VudCgpIG9yIEdldFN5c3RlbVRpbWVBc0ZpbGVUaW1lKCkuICBN
aW5HVworLy8gICBzdXBwb3J0cyB0aGVzZS4gIGNvbnNpZGVyIHVzaW5nIHRoZW0gaW5zdGVhZC4K
KyMgIGRlZmluZSBHVEVTVF9IQVNfR0VUVElNRU9GREFZXyAxCisjICBpbmNsdWRlIDxzeXMvdGlt
ZS5oPiAgLy8gTk9MSU5UCisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01JTkdXCisKKy8v
IGNwcGxpbnQgdGhpbmtzIHRoYXQgdGhlIGhlYWRlciBpcyBhbHJlYWR5IGluY2x1ZGVkLCBzbyB3
ZSB3YW50IHRvCisvLyBzaWxlbmNlIGl0LgorIyBpbmNsdWRlIDx3aW5kb3dzLmg+ICAvLyBOT0xJ
TlQKKyMgdW5kZWYgbWluCisKKyNlbHNlCisKKy8vIEFzc3VtZSBvdGhlciBwbGF0Zm9ybXMgaGF2
ZSBnZXR0aW1lb2ZkYXkoKS4KKy8vIFRPRE8oa2VudG9uQGdvb2dsZS5jb20pOiBVc2UgYXV0b2Nv
bmYgdG8gZGV0ZWN0IGF2YWlsYWJpbGl0eSBvZgorLy8gICBnZXR0aW1lb2ZkYXkoKS4KKyMgZGVm
aW5lIEdURVNUX0hBU19HRVRUSU1FT0ZEQVlfIDEKKworLy8gY3BwbGludCB0aGlua3MgdGhhdCB0
aGUgaGVhZGVyIGlzIGFscmVhZHkgaW5jbHVkZWQsIHNvIHdlIHdhbnQgdG8KKy8vIHNpbGVuY2Ug
aXQuCisjIGluY2x1ZGUgPHN5cy90aW1lLmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8dW5pc3Rk
Lmg+ICAvLyBOT0xJTlQKKworI2VuZGlmICAvLyBHVEVTVF9PU19MSU5VWAorCisjaWYgR1RFU1Rf
SEFTX0VYQ0VQVElPTlMKKyMgaW5jbHVkZSA8c3RkZXhjZXB0PgorI2VuZGlmCisKKyNpZiBHVEVT
VF9DQU5fU1RSRUFNX1JFU1VMVFNfCisjIGluY2x1ZGUgPGFycGEvaW5ldC5oPiAgLy8gTk9MSU5U
CisjIGluY2x1ZGUgPG5ldGRiLmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8c3lzL3NvY2tldC5o
PiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHN5cy90eXBlcy5oPiAgLy8gTk9MSU5UCisjZW5kaWYK
KworLy8gSW5kaWNhdGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29v
Z2xlIFRlc3QncworLy8gaW1wbGVtZW50YXRpb24uICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0
LWludGVybmFsLWlubC5oIGlzCisvLyBpbmNsdWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBp
bGVyIGVycm9yLiAgVGhpcyB0cmljayBpcyB0bworLy8gcHJldmVudCBhIHVzZXIgZnJvbSBhY2Np
ZGVudGFsbHkgaW5jbHVkaW5nIGd0ZXN0LWludGVybmFsLWlubC5oIGluCisvLyBoaXMgY29kZS4K
KyNkZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJT05fIDEKKyNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50
ZXJuYWwtaW5sLmgiCisjdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCisKKyNpZiBHVEVTVF9P
U19XSU5ET1dTCisjIGRlZmluZSB2c25wcmludGYgX3ZzbnByaW50ZgorI2VuZGlmICAvLyBHVEVT
VF9PU19XSU5ET1dTCisKK25hbWVzcGFjZSB0ZXN0aW5nIHsKKwordXNpbmcgaW50ZXJuYWw6OkNv
dW50SWY7Cit1c2luZyBpbnRlcm5hbDo6Rm9yRWFjaDsKK3VzaW5nIGludGVybmFsOjpHZXRFbGVt
ZW50T3I7Cit1c2luZyBpbnRlcm5hbDo6U2h1ZmZsZTsKKworLy8gQ29uc3RhbnRzLgorCisvLyBB
IHRlc3Qgd2hvc2UgdGVzdCBjYXNlIG5hbWUgb3IgdGVzdCBuYW1lIG1hdGNoZXMgdGhpcyBmaWx0
ZXIgaXMKKy8vIGRpc2FibGVkIGFuZCBub3QgcnVuLgorc3RhdGljIGNvbnN0IGNoYXIga0Rpc2Fi
bGVUZXN0RmlsdGVyW10gPSAiRElTQUJMRURfKjoqL0RJU0FCTEVEXyoiOworCisvLyBBIHRlc3Qg
Y2FzZSB3aG9zZSBuYW1lIG1hdGNoZXMgdGhpcyBmaWx0ZXIgaXMgY29uc2lkZXJlZCBhIGRlYXRo
CisvLyB0ZXN0IGNhc2UgYW5kIHdpbGwgYmUgcnVuIGJlZm9yZSB0ZXN0IGNhc2VzIHdob3NlIG5h
bWUgZG9lc24ndAorLy8gbWF0Y2ggdGhpcyBmaWx0ZXIuCitzdGF0aWMgY29uc3QgY2hhciBrRGVh
dGhUZXN0Q2FzZUZpbHRlcltdID0gIipEZWF0aFRlc3Q6KkRlYXRoVGVzdC8qIjsKKworLy8gQSB0
ZXN0IGZpbHRlciB0aGF0IG1hdGNoZXMgZXZlcnl0aGluZy4KK3N0YXRpYyBjb25zdCBjaGFyIGtV
bml2ZXJzYWxGaWx0ZXJbXSA9ICIqIjsKKworLy8gVGhlIGRlZmF1bHQgb3V0cHV0IGZpbGUgZm9y
IFhNTCBvdXRwdXQuCitzdGF0aWMgY29uc3QgY2hhciBrRGVmYXVsdE91dHB1dEZpbGVbXSA9ICJ0
ZXN0X2RldGFpbC54bWwiOworCisvLyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZSBmb3Ig
dGhlIHRlc3Qgc2hhcmQgaW5kZXguCitzdGF0aWMgY29uc3QgY2hhciBrVGVzdFNoYXJkSW5kZXhb
XSA9ICJHVEVTVF9TSEFSRF9JTkRFWCI7CisvLyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGUgbmFt
ZSBmb3IgdGhlIHRvdGFsIG51bWJlciBvZiB0ZXN0IHNoYXJkcy4KK3N0YXRpYyBjb25zdCBjaGFy
IGtUZXN0VG90YWxTaGFyZHNbXSA9ICJHVEVTVF9UT1RBTF9TSEFSRFMiOworLy8gVGhlIGVudmly
b25tZW50IHZhcmlhYmxlIG5hbWUgZm9yIHRoZSB0ZXN0IHNoYXJkIHN0YXR1cyBmaWxlLgorc3Rh
dGljIGNvbnN0IGNoYXIga1Rlc3RTaGFyZFN0YXR1c0ZpbGVbXSA9ICJHVEVTVF9TSEFSRF9TVEFU
VVNfRklMRSI7CisKK25hbWVzcGFjZSBpbnRlcm5hbCB7CisKKy8vIFRoZSB0ZXh0IHVzZWQgaW4g
ZmFpbHVyZSBtZXNzYWdlcyB0byBpbmRpY2F0ZSB0aGUgc3RhcnQgb2YgdGhlCisvLyBzdGFjayB0
cmFjZS4KK2NvbnN0IGNoYXIga1N0YWNrVHJhY2VNYXJrZXJbXSA9ICJcblN0YWNrIHRyYWNlOlxu
IjsKKworLy8gZ19oZWxwX2ZsYWcgaXMgdHJ1ZSBpZmYgdGhlIC0taGVscCBmbGFnIG9yIGFuIGVx
dWl2YWxlbnQgZm9ybSBpcworLy8gc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kIGxpbmUuCitib29s
IGdfaGVscF9mbGFnID0gZmFsc2U7CisKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAorCitzdGF0
aWMgY29uc3QgY2hhciogR2V0RGVmYXVsdEZpbHRlcigpIHsKKyNpZmRlZiBHVEVTVF9URVNUX0ZJ
TFRFUl9FTlZfVkFSXworICBjb25zdCBjaGFyKiBjb25zdCB0ZXN0YnJpZGdlX3Rlc3Rfb25seSA9
IGdldGVudihHVEVTVF9URVNUX0ZJTFRFUl9FTlZfVkFSXyk7CisgIGlmICh0ZXN0YnJpZGdlX3Rl
c3Rfb25seSAhPSBOVUxMKSB7CisgICAgcmV0dXJuIHRlc3RicmlkZ2VfdGVzdF9vbmx5OworICB9
CisjZW5kaWYgIC8vIEdURVNUX1RFU1RfRklMVEVSX0VOVl9WQVJfCisgIHJldHVybiBrVW5pdmVy
c2FsRmlsdGVyOworfQorCitHVEVTVF9ERUZJTkVfYm9vbF8oCisgICAgYWxzb19ydW5fZGlzYWJs
ZWRfdGVzdHMsCisgICAgaW50ZXJuYWw6OkJvb2xGcm9tR1Rlc3RFbnYoImFsc29fcnVuX2Rpc2Fi
bGVkX3Rlc3RzIiwgZmFsc2UpLAorICAgICJSdW4gZGlzYWJsZWQgdGVzdHMgdG9vLCBpbiBhZGRp
dGlvbiB0byB0aGUgdGVzdHMgbm9ybWFsbHkgYmVpbmcgcnVuLiIpOworCitHVEVTVF9ERUZJTkVf
Ym9vbF8oCisgICAgYnJlYWtfb25fZmFpbHVyZSwKKyAgICBpbnRlcm5hbDo6Qm9vbEZyb21HVGVz
dEVudigiYnJlYWtfb25fZmFpbHVyZSIsIGZhbHNlKSwKKyAgICAiVHJ1ZSBpZmYgYSBmYWlsZWQg
YXNzZXJ0aW9uIHNob3VsZCBiZSBhIGRlYnVnZ2VyIGJyZWFrLXBvaW50LiIpOworCitHVEVTVF9E
RUZJTkVfYm9vbF8oCisgICAgY2F0Y2hfZXhjZXB0aW9ucywKKyAgICBpbnRlcm5hbDo6Qm9vbEZy
b21HVGVzdEVudigiY2F0Y2hfZXhjZXB0aW9ucyIsIHRydWUpLAorICAgICJUcnVlIGlmZiAiIEdU
RVNUX05BTUVfCisgICAgIiBzaG91bGQgY2F0Y2ggZXhjZXB0aW9ucyBhbmQgdHJlYXQgdGhlbSBh
cyB0ZXN0IGZhaWx1cmVzLiIpOworCitHVEVTVF9ERUZJTkVfc3RyaW5nXygKKyAgICBjb2xvciwK
KyAgICBpbnRlcm5hbDo6U3RyaW5nRnJvbUdUZXN0RW52KCJjb2xvciIsICJhdXRvIiksCisgICAg
IldoZXRoZXIgdG8gdXNlIGNvbG9ycyBpbiB0aGUgb3V0cHV0LiAgVmFsaWQgdmFsdWVzOiB5ZXMs
IG5vLCAiCisgICAgImFuZCBhdXRvLiAgJ2F1dG8nIG1lYW5zIHRvIHVzZSBjb2xvcnMgaWYgdGhl
IG91dHB1dCBpcyAiCisgICAgImJlaW5nIHNlbnQgdG8gYSB0ZXJtaW5hbCBhbmQgdGhlIFRFUk0g
ZW52aXJvbm1lbnQgdmFyaWFibGUgIgorICAgICJpcyBzZXQgdG8gYSB0ZXJtaW5hbCB0eXBlIHRo
YXQgc3VwcG9ydHMgY29sb3JzLiIpOworCitHVEVTVF9ERUZJTkVfc3RyaW5nXygKKyAgICBmaWx0
ZXIsCisgICAgaW50ZXJuYWw6OlN0cmluZ0Zyb21HVGVzdEVudigiZmlsdGVyIiwgR2V0RGVmYXVs
dEZpbHRlcigpKSwKKyAgICAiQSBjb2xvbi1zZXBhcmF0ZWQgbGlzdCBvZiBnbG9iIChub3QgcmVn
ZXgpIHBhdHRlcm5zICIKKyAgICAiZm9yIGZpbHRlcmluZyB0aGUgdGVzdHMgdG8gcnVuLCBvcHRp
b25hbGx5IGZvbGxvd2VkIGJ5IGEgIgorICAgICInLScgYW5kIGEgOiBzZXBhcmF0ZWQgbGlzdCBv
ZiBuZWdhdGl2ZSBwYXR0ZXJucyAodGVzdHMgdG8gIgorICAgICJleGNsdWRlKS4gIEEgdGVzdCBp
cyBydW4gaWYgaXQgbWF0Y2hlcyBvbmUgb2YgdGhlIHBvc2l0aXZlICIKKyAgICAicGF0dGVybnMg
YW5kIGRvZXMgbm90IG1hdGNoIGFueSBvZiB0aGUgbmVnYXRpdmUgcGF0dGVybnMuIik7CisKK0dU
RVNUX0RFRklORV9ib29sXyhsaXN0X3Rlc3RzLCBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAi
TGlzdCBhbGwgdGVzdHMgd2l0aG91dCBydW5uaW5nIHRoZW0uIik7CisKK0dURVNUX0RFRklORV9z
dHJpbmdfKAorICAgIG91dHB1dCwKKyAgICBpbnRlcm5hbDo6U3RyaW5nRnJvbUdUZXN0RW52KCJv
dXRwdXQiLCAiIiksCisgICAgIkEgZm9ybWF0IChjdXJyZW50bHkgbXVzdCBiZSBcInhtbFwiKSwg
b3B0aW9uYWxseSBmb2xsb3dlZCAiCisgICAgImJ5IGEgY29sb24gYW5kIGFuIG91dHB1dCBmaWxl
IG5hbWUgb3IgZGlyZWN0b3J5LiBBIGRpcmVjdG9yeSAiCisgICAgImlzIGluZGljYXRlZCBieSBh
IHRyYWlsaW5nIHBhdGhuYW1lIHNlcGFyYXRvci4gIgorICAgICJFeGFtcGxlczogXCJ4bWw6Zmls
ZW5hbWUueG1sXCIsIFwieG1sOjpkaXJlY3RvcnluYW1lL1wiLiAiCisgICAgIklmIGEgZGlyZWN0
b3J5IGlzIHNwZWNpZmllZCwgb3V0cHV0IGZpbGVzIHdpbGwgYmUgY3JlYXRlZCAiCisgICAgIndp
dGhpbiB0aGF0IGRpcmVjdG9yeSwgd2l0aCBmaWxlLW5hbWVzIGJhc2VkIG9uIHRoZSB0ZXN0ICIK
KyAgICAiZXhlY3V0YWJsZSdzIG5hbWUgYW5kLCBpZiBuZWNlc3NhcnksIG1hZGUgdW5pcXVlIGJ5
IGFkZGluZyAiCisgICAgImRpZ2l0cy4iKTsKKworR1RFU1RfREVGSU5FX2Jvb2xfKAorICAgIHBy
aW50X3RpbWUsCisgICAgaW50ZXJuYWw6OkJvb2xGcm9tR1Rlc3RFbnYoInByaW50X3RpbWUiLCB0
cnVlKSwKKyAgICAiVHJ1ZSBpZmYgIiBHVEVTVF9OQU1FXworICAgICIgc2hvdWxkIGRpc3BsYXkg
ZWxhcHNlZCB0aW1lIGluIHRleHQgb3V0cHV0LiIpOworCitHVEVTVF9ERUZJTkVfaW50MzJfKAor
ICAgIHJhbmRvbV9zZWVkLAorICAgIGludGVybmFsOjpJbnQzMkZyb21HVGVzdEVudigicmFuZG9t
X3NlZWQiLCAwKSwKKyAgICAiUmFuZG9tIG51bWJlciBzZWVkIHRvIHVzZSB3aGVuIHNodWZmbGlu
ZyB0ZXN0IG9yZGVycy4gIE11c3QgYmUgaW4gcmFuZ2UgIgorICAgICJbMSwgOTk5OTldLCBvciAw
IHRvIHVzZSBhIHNlZWQgYmFzZWQgb24gdGhlIGN1cnJlbnQgdGltZS4iKTsKKworR1RFU1RfREVG
SU5FX2ludDMyXygKKyAgICByZXBlYXQsCisgICAgaW50ZXJuYWw6OkludDMyRnJvbUdUZXN0RW52
KCJyZXBlYXQiLCAxKSwKKyAgICAiSG93IG1hbnkgdGltZXMgdG8gcmVwZWF0IGVhY2ggdGVzdC4g
IFNwZWNpZnkgYSBuZWdhdGl2ZSBudW1iZXIgIgorICAgICJmb3IgcmVwZWF0aW5nIGZvcmV2ZXIu
ICBVc2VmdWwgZm9yIHNoYWtpbmcgb3V0IGZsYWt5IHRlc3RzLiIpOworCitHVEVTVF9ERUZJTkVf
Ym9vbF8oCisgICAgc2hvd19pbnRlcm5hbF9zdGFja19mcmFtZXMsIGZhbHNlLAorICAgICJUcnVl
IGlmZiAiIEdURVNUX05BTUVfICIgc2hvdWxkIGluY2x1ZGUgaW50ZXJuYWwgc3RhY2sgZnJhbWVz
IHdoZW4gIgorICAgICJwcmludGluZyB0ZXN0IGZhaWx1cmUgc3RhY2sgdHJhY2VzLiIpOworCitH
VEVTVF9ERUZJTkVfYm9vbF8oCisgICAgc2h1ZmZsZSwKKyAgICBpbnRlcm5hbDo6Qm9vbEZyb21H
VGVzdEVudigic2h1ZmZsZSIsIGZhbHNlKSwKKyAgICAiVHJ1ZSBpZmYgIiBHVEVTVF9OQU1FXwor
ICAgICIgc2hvdWxkIHJhbmRvbWl6ZSB0ZXN0cycgb3JkZXIgb24gZXZlcnkgcnVuLiIpOworCitH
VEVTVF9ERUZJTkVfaW50MzJfKAorICAgIHN0YWNrX3RyYWNlX2RlcHRoLAorICAgIGludGVybmFs
OjpJbnQzMkZyb21HVGVzdEVudigic3RhY2tfdHJhY2VfZGVwdGgiLCBrTWF4U3RhY2tUcmFjZURl
cHRoKSwKKyAgICAiVGhlIG1heGltdW0gbnVtYmVyIG9mIHN0YWNrIGZyYW1lcyB0byBwcmludCB3
aGVuIGFuICIKKyAgICAiYXNzZXJ0aW9uIGZhaWxzLiAgVGhlIHZhbGlkIHJhbmdlIGlzIDAgdGhy
b3VnaCAxMDAsIGluY2x1c2l2ZS4iKTsKKworR1RFU1RfREVGSU5FX3N0cmluZ18oCisgICAgc3Ry
ZWFtX3Jlc3VsdF90bywKKyAgICBpbnRlcm5hbDo6U3RyaW5nRnJvbUdUZXN0RW52KCJzdHJlYW1f
cmVzdWx0X3RvIiwgIiIpLAorICAgICJUaGlzIGZsYWcgc3BlY2lmaWVzIHRoZSBob3N0IG5hbWUg
YW5kIHRoZSBwb3J0IG51bWJlciBvbiB3aGljaCB0byBzdHJlYW0gIgorICAgICJ0ZXN0IHJlc3Vs
dHMuIEV4YW1wbGU6IFwibG9jYWxob3N0OjU1NVwiLiBUaGUgZmxhZyBpcyBlZmZlY3RpdmUgb25s
eSBvbiAiCisgICAgIkxpbnV4LiIpOworCitHVEVTVF9ERUZJTkVfYm9vbF8oCisgICAgdGhyb3df
b25fZmFpbHVyZSwKKyAgICBpbnRlcm5hbDo6Qm9vbEZyb21HVGVzdEVudigidGhyb3dfb25fZmFp
bHVyZSIsIGZhbHNlKSwKKyAgICAiV2hlbiB0aGlzIGZsYWcgaXMgc3BlY2lmaWVkLCBhIGZhaWxl
ZCBhc3NlcnRpb24gd2lsbCB0aHJvdyBhbiBleGNlcHRpb24gIgorICAgICJpZiBleGNlcHRpb25z
IGFyZSBlbmFibGVkIG9yIGV4aXQgdGhlIHByb2dyYW0gd2l0aCBhIG5vbi16ZXJvIGNvZGUgIgor
ICAgICJvdGhlcndpc2UuIik7CisKKyNpZiBHVEVTVF9VU0VfT1dOX0ZMQUdGSUxFX0ZMQUdfCitH
VEVTVF9ERUZJTkVfc3RyaW5nXygKKyAgICBmbGFnZmlsZSwKKyAgICBpbnRlcm5hbDo6U3RyaW5n
RnJvbUdUZXN0RW52KCJmbGFnZmlsZSIsICIiKSwKKyAgICAiVGhpcyBmbGFnIHNwZWNpZmllcyB0
aGUgZmxhZ2ZpbGUgdG8gcmVhZCBjb21tYW5kLWxpbmUgZmxhZ3MgZnJvbS4iKTsKKyNlbmRpZiAg
Ly8gR1RFU1RfVVNFX09XTl9GTEFHRklMRV9GTEFHXworCituYW1lc3BhY2UgaW50ZXJuYWwgewor
CisvLyBHZW5lcmF0ZXMgYSByYW5kb20gbnVtYmVyIGZyb20gWzAsIHJhbmdlKSwgdXNpbmcgYSBM
aW5lYXIKKy8vIENvbmdydWVudGlhbCBHZW5lcmF0b3IgKExDRykuICBDcmFzaGVzIGlmICdyYW5n
ZScgaXMgMCBvciBncmVhdGVyCisvLyB0aGFuIGtNYXhSYW5nZS4KK1VJbnQzMiBSYW5kb206Okdl
bmVyYXRlKFVJbnQzMiByYW5nZSkgeworICAvLyBUaGVzZSBjb25zdGFudHMgYXJlIHRoZSBzYW1l
IGFzIGFyZSB1c2VkIGluIGdsaWJjJ3MgcmFuZCgzKS4KKyAgc3RhdGVfID0gKDExMDM1MTUyNDVV
KnN0YXRlXyArIDEyMzQ1VSkgJSBrTWF4UmFuZ2U7CisKKyAgR1RFU1RfQ0hFQ0tfKHJhbmdlID4g
MCkKKyAgICAgIDw8ICJDYW5ub3QgZ2VuZXJhdGUgYSBudW1iZXIgaW4gdGhlIHJhbmdlIFswLCAw
KS4iOworICBHVEVTVF9DSEVDS18ocmFuZ2UgPD0ga01heFJhbmdlKQorICAgICAgPDwgIkdlbmVy
YXRpb24gb2YgYSBudW1iZXIgaW4gWzAsICIgPDwgcmFuZ2UgPDwgIikgd2FzIHJlcXVlc3RlZCwg
IgorICAgICAgPDwgImJ1dCB0aGlzIGNhbiBvbmx5IGdlbmVyYXRlIG51bWJlcnMgaW4gWzAsICIg
PDwga01heFJhbmdlIDw8ICIpLiI7CisKKyAgLy8gQ29udmVydGluZyB2aWEgbW9kdWx1cyBpbnRy
b2R1Y2VzIGEgYml0IG9mIGRvd253YXJkIGJpYXMsIGJ1dAorICAvLyBpdCdzIHNpbXBsZSwgYW5k
IGEgbGluZWFyIGNvbmdydWVudGlhbCBnZW5lcmF0b3IgaXNuJ3QgdG9vIGdvb2QKKyAgLy8gdG8g
YmVnaW4gd2l0aC4KKyAgcmV0dXJuIHN0YXRlXyAlIHJhbmdlOworfQorCisvLyBHVGVzdElzSW5p
dGlhbGl6ZWQoKSByZXR1cm5zIHRydWUgaWZmIHRoZSB1c2VyIGhhcyBpbml0aWFsaXplZAorLy8g
R29vZ2xlIFRlc3QuICBVc2VmdWwgZm9yIGNhdGNoaW5nIHRoZSB1c2VyIG1pc3Rha2Ugb2Ygbm90
IGluaXRpYWxpemluZworLy8gR29vZ2xlIFRlc3QgYmVmb3JlIGNhbGxpbmcgUlVOX0FMTF9URVNU
UygpLgorc3RhdGljIGJvb2wgR1Rlc3RJc0luaXRpYWxpemVkKCkgeyByZXR1cm4gR2V0QXJndnMo
KS5zaXplKCkgPiAwOyB9CisKKy8vIEl0ZXJhdGVzIG92ZXIgYSB2ZWN0b3Igb2YgVGVzdENhc2Vz
LCBrZWVwaW5nIGEgcnVubmluZyBzdW0gb2YgdGhlCisvLyByZXN1bHRzIG9mIGNhbGxpbmcgYSBn
aXZlbiBpbnQtcmV0dXJuaW5nIG1ldGhvZCBvbiBlYWNoLgorLy8gUmV0dXJucyB0aGUgc3VtLgor
c3RhdGljIGludCBTdW1PdmVyVGVzdENhc2VMaXN0KGNvbnN0IHN0ZDo6dmVjdG9yPFRlc3RDYXNl
Kj4mIGNhc2VfbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKFRlc3RD
YXNlOjoqbWV0aG9kKSgpIGNvbnN0KSB7CisgIGludCBzdW0gPSAwOworICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGNhc2VfbGlzdC5zaXplKCk7IGkrKykgeworICAgIHN1bSArPSAoY2FzZV9saXN0
W2ldLT4qbWV0aG9kKSgpOworICB9CisgIHJldHVybiBzdW07Cit9CisKKy8vIFJldHVybnMgdHJ1
ZSBpZmYgdGhlIHRlc3QgY2FzZSBwYXNzZWQuCitzdGF0aWMgYm9vbCBUZXN0Q2FzZVBhc3NlZChj
b25zdCBUZXN0Q2FzZSogdGVzdF9jYXNlKSB7CisgIHJldHVybiB0ZXN0X2Nhc2UtPnNob3VsZF9y
dW4oKSAmJiB0ZXN0X2Nhc2UtPlBhc3NlZCgpOworfQorCisvLyBSZXR1cm5zIHRydWUgaWZmIHRo
ZSB0ZXN0IGNhc2UgZmFpbGVkLgorc3RhdGljIGJvb2wgVGVzdENhc2VGYWlsZWQoY29uc3QgVGVz
dENhc2UqIHRlc3RfY2FzZSkgeworICByZXR1cm4gdGVzdF9jYXNlLT5zaG91bGRfcnVuKCkgJiYg
dGVzdF9jYXNlLT5GYWlsZWQoKTsKK30KKworLy8gUmV0dXJucyB0cnVlIGlmZiB0ZXN0X2Nhc2Ug
Y29udGFpbnMgYXQgbGVhc3Qgb25lIHRlc3QgdGhhdCBzaG91bGQKKy8vIHJ1bi4KK3N0YXRpYyBi
b29sIFNob3VsZFJ1blRlc3RDYXNlKGNvbnN0IFRlc3RDYXNlKiB0ZXN0X2Nhc2UpIHsKKyAgcmV0
dXJuIHRlc3RfY2FzZS0+c2hvdWxkX3J1bigpOworfQorCisvLyBBc3NlcnRIZWxwZXIgY29uc3Ry
dWN0b3IuCitBc3NlcnRIZWxwZXI6OkFzc2VydEhlbHBlcihUZXN0UGFydFJlc3VsdDo6VHlwZSB0
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZmlsZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciogbWVzc2FnZSkKKyAgICA6IGRhdGFfKG5ldyBBc3NlcnRIZWxwZXJEYXRh
KHR5cGUsIGZpbGUsIGxpbmUsIG1lc3NhZ2UpKSB7Cit9CisKK0Fzc2VydEhlbHBlcjo6fkFzc2Vy
dEhlbHBlcigpIHsKKyAgZGVsZXRlIGRhdGFfOworfQorCisvLyBNZXNzYWdlIGFzc2lnbm1lbnQs
IGZvciBhc3NlcnRpb24gc3RyZWFtaW5nIHN1cHBvcnQuCit2b2lkIEFzc2VydEhlbHBlcjo6b3Bl
cmF0b3I9KGNvbnN0IE1lc3NhZ2UmIG1lc3NhZ2UpIGNvbnN0IHsKKyAgVW5pdFRlc3Q6OkdldElu
c3RhbmNlKCktPgorICAgIEFkZFRlc3RQYXJ0UmVzdWx0KGRhdGFfLT50eXBlLCBkYXRhXy0+Zmls
ZSwgZGF0YV8tPmxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgQXBwZW5kVXNlck1lc3NhZ2Uo
ZGF0YV8tPm1lc3NhZ2UsIG1lc3NhZ2UpLAorICAgICAgICAgICAgICAgICAgICAgIFVuaXRUZXN0
OjpHZXRJbnN0YW5jZSgpLT5pbXBsKCkKKyAgICAgICAgICAgICAgICAgICAgICAtPkN1cnJlbnRP
c1N0YWNrVHJhY2VFeGNlcHRUb3AoMSkKKyAgICAgICAgICAgICAgICAgICAgICAvLyBTa2lwcyB0
aGUgc3RhY2sgZnJhbWUgZm9yIHRoaXMgZnVuY3Rpb24gaXRzZWxmLgorICAgICAgICAgICAgICAg
ICAgICAgICk7ICAvLyBOT0xJTlQKK30KKworLy8gTXV0ZXggZm9yIGxpbmtlZCBwb2ludGVycy4K
K0dURVNUX0FQSV8gR1RFU1RfREVGSU5FX1NUQVRJQ19NVVRFWF8oZ19saW5rZWRfcHRyX211dGV4
KTsKKworLy8gQSBjb3B5IG9mIGFsbCBjb21tYW5kIGxpbmUgYXJndW1lbnRzLiAgU2V0IGJ5IElu
aXRHb29nbGVUZXN0KCkuCis6OnN0ZDo6dmVjdG9yPHRlc3Rpbmc6OmludGVybmFsOjpzdHJpbmc+
IGdfYXJndnM7CisKK2NvbnN0IDo6c3RkOjp2ZWN0b3I8dGVzdGluZzo6aW50ZXJuYWw6OnN0cmlu
Zz4mIEdldEFyZ3ZzKCkgeworI2lmIGRlZmluZWQoR1RFU1RfQ1VTVE9NX0dFVF9BUkdWU18pCisg
IHJldHVybiBHVEVTVF9DVVNUT01fR0VUX0FSR1ZTXygpOworI2Vsc2UgIC8vIGRlZmluZWQoR1RF
U1RfQ1VTVE9NX0dFVF9BUkdWU18pCisgIHJldHVybiBnX2FyZ3ZzOworI2VuZGlmICAvLyBkZWZp
bmVkKEdURVNUX0NVU1RPTV9HRVRfQVJHVlNfKQorfQorCisvLyBSZXR1cm5zIHRoZSBjdXJyZW50
IGFwcGxpY2F0aW9uJ3MgbmFtZSwgcmVtb3ZpbmcgZGlyZWN0b3J5IHBhdGggaWYgdGhhdAorLy8g
aXMgcHJlc2VudC4KK0ZpbGVQYXRoIEdldEN1cnJlbnRFeGVjdXRhYmxlTmFtZSgpIHsKKyAgRmls
ZVBhdGggcmVzdWx0OworCisjaWYgR1RFU1RfT1NfV0lORE9XUworICByZXN1bHQuU2V0KEZpbGVQ
YXRoKEdldEFyZ3ZzKClbMF0pLlJlbW92ZUV4dGVuc2lvbigiZXhlIikpOworI2Vsc2UKKyAgcmVz
dWx0LlNldChGaWxlUGF0aChHZXRBcmd2cygpWzBdKSk7CisjZW5kaWYgIC8vIEdURVNUX09TX1dJ
TkRPV1MKKworICByZXR1cm4gcmVzdWx0LlJlbW92ZURpcmVjdG9yeU5hbWUoKTsKK30KKworLy8g
RnVuY3Rpb25zIGZvciBwcm9jZXNzaW5nIHRoZSBndGVzdF9vdXRwdXQgZmxhZy4KKworLy8gUmV0
dXJucyB0aGUgb3V0cHV0IGZvcm1hdCwgb3IgIiIgZm9yIG5vcm1hbCBwcmludGVkIG91dHB1dC4K
K3N0ZDo6c3RyaW5nIFVuaXRUZXN0T3B0aW9uczo6R2V0T3V0cHV0Rm9ybWF0KCkgeworICBjb25z
dCBjaGFyKiBjb25zdCBndGVzdF9vdXRwdXRfZmxhZyA9IEdURVNUX0ZMQUcob3V0cHV0KS5jX3N0
cigpOworICBpZiAoZ3Rlc3Rfb3V0cHV0X2ZsYWcgPT0gTlVMTCkgcmV0dXJuIHN0ZDo6c3RyaW5n
KCIiKTsKKworICBjb25zdCBjaGFyKiBjb25zdCBjb2xvbiA9IHN0cmNocihndGVzdF9vdXRwdXRf
ZmxhZywgJzonKTsKKyAgcmV0dXJuIChjb2xvbiA9PSBOVUxMKSA/CisgICAgICBzdGQ6OnN0cmlu
ZyhndGVzdF9vdXRwdXRfZmxhZykgOgorICAgICAgc3RkOjpzdHJpbmcoZ3Rlc3Rfb3V0cHV0X2Zs
YWcsIGNvbG9uIC0gZ3Rlc3Rfb3V0cHV0X2ZsYWcpOworfQorCisvLyBSZXR1cm5zIHRoZSBuYW1l
IG9mIHRoZSByZXF1ZXN0ZWQgb3V0cHV0IGZpbGUsIG9yIHRoZSBkZWZhdWx0IGlmIG5vbmUKKy8v
IHdhcyBleHBsaWNpdGx5IHNwZWNpZmllZC4KK3N0ZDo6c3RyaW5nIFVuaXRUZXN0T3B0aW9uczo6
R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkgeworICBjb25zdCBjaGFyKiBjb25zdCBndGVz
dF9vdXRwdXRfZmxhZyA9IEdURVNUX0ZMQUcob3V0cHV0KS5jX3N0cigpOworICBpZiAoZ3Rlc3Rf
b3V0cHV0X2ZsYWcgPT0gTlVMTCkKKyAgICByZXR1cm4gIiI7CisKKyAgY29uc3QgY2hhciogY29u
c3QgY29sb24gPSBzdHJjaHIoZ3Rlc3Rfb3V0cHV0X2ZsYWcsICc6Jyk7CisgIGlmIChjb2xvbiA9
PSBOVUxMKQorICAgIHJldHVybiBpbnRlcm5hbDo6RmlsZVBhdGg6OkNvbmNhdFBhdGhzKAorICAg
ICAgICBpbnRlcm5hbDo6RmlsZVBhdGgoCisgICAgICAgICAgICBVbml0VGVzdDo6R2V0SW5zdGFu
Y2UoKS0+b3JpZ2luYWxfd29ya2luZ19kaXIoKSksCisgICAgICAgIGludGVybmFsOjpGaWxlUGF0
aChrRGVmYXVsdE91dHB1dEZpbGUpKS5zdHJpbmcoKTsKKworICBpbnRlcm5hbDo6RmlsZVBhdGgg
b3V0cHV0X25hbWUoY29sb24gKyAxKTsKKyAgaWYgKCFvdXRwdXRfbmFtZS5Jc0Fic29sdXRlUGF0
aCgpKQorICAgIC8vIFRPRE8od2FuQGdvb2dsZS5jb20pOiBvbiBXaW5kb3dzIFxzb21lXHBhdGgg
aXMgbm90IGFuIGFic29sdXRlCisgICAgLy8gcGF0aCAoYXMgaXRzIG1lYW5pbmcgZGVwZW5kcyBv
biB0aGUgY3VycmVudCBkcml2ZSksIHlldCB0aGUKKyAgICAvLyBmb2xsb3dpbmcgbG9naWMgZm9y
IHR1cm5pbmcgaXQgaW50byBhbiBhYnNvbHV0ZSBwYXRoIGlzIHdyb25nLgorICAgIC8vIEZpeCBp
dC4KKyAgICBvdXRwdXRfbmFtZSA9IGludGVybmFsOjpGaWxlUGF0aDo6Q29uY2F0UGF0aHMoCisg
ICAgICAgIGludGVybmFsOjpGaWxlUGF0aChVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+b3JpZ2lu
YWxfd29ya2luZ19kaXIoKSksCisgICAgICAgIGludGVybmFsOjpGaWxlUGF0aChjb2xvbiArIDEp
KTsKKworICBpZiAoIW91dHB1dF9uYW1lLklzRGlyZWN0b3J5KCkpCisgICAgcmV0dXJuIG91dHB1
dF9uYW1lLnN0cmluZygpOworCisgIGludGVybmFsOjpGaWxlUGF0aCByZXN1bHQoaW50ZXJuYWw6
OkZpbGVQYXRoOjpHZW5lcmF0ZVVuaXF1ZUZpbGVOYW1lKAorICAgICAgb3V0cHV0X25hbWUsIGlu
dGVybmFsOjpHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUoKSwKKyAgICAgIEdldE91dHB1dEZvcm1h
dCgpLmNfc3RyKCkpKTsKKyAgcmV0dXJuIHJlc3VsdC5zdHJpbmcoKTsKK30KKworLy8gUmV0dXJu
cyB0cnVlIGlmZiB0aGUgd2lsZGNhcmQgcGF0dGVybiBtYXRjaGVzIHRoZSBzdHJpbmcuICBUaGUK
Ky8vIGZpcnN0ICc6JyBvciAnXDAnIGNoYXJhY3RlciBpbiBwYXR0ZXJuIG1hcmtzIHRoZSBlbmQg
b2YgaXQuCisvLworLy8gVGhpcyByZWN1cnNpdmUgYWxnb3JpdGhtIGlzbid0IHZlcnkgZWZmaWNp
ZW50LCBidXQgaXMgY2xlYXIgYW5kCisvLyB3b3JrcyB3ZWxsIGVub3VnaCBmb3IgbWF0Y2hpbmcg
dGVzdCBuYW1lcywgd2hpY2ggYXJlIHNob3J0LgorYm9vbCBVbml0VGVzdE9wdGlvbnM6OlBhdHRl
cm5NYXRjaGVzU3RyaW5nKGNvbnN0IGNoYXIgKnBhdHRlcm4sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc3RyKSB7CisgIHN3aXRjaCAoKnBh
dHRlcm4pIHsKKyAgICBjYXNlICdcMCc6CisgICAgY2FzZSAnOic6ICAvLyBFaXRoZXIgJzonIG9y
ICdcMCcgbWFya3MgdGhlIGVuZCBvZiB0aGUgcGF0dGVybi4KKyAgICAgIHJldHVybiAqc3RyID09
ICdcMCc7CisgICAgY2FzZSAnPyc6ICAvLyBNYXRjaGVzIGFueSBzaW5nbGUgY2hhcmFjdGVyLgor
ICAgICAgcmV0dXJuICpzdHIgIT0gJ1wwJyAmJiBQYXR0ZXJuTWF0Y2hlc1N0cmluZyhwYXR0ZXJu
ICsgMSwgc3RyICsgMSk7CisgICAgY2FzZSAnKic6ICAvLyBNYXRjaGVzIGFueSBzdHJpbmcgKHBv
c3NpYmx5IGVtcHR5KSBvZiBjaGFyYWN0ZXJzLgorICAgICAgcmV0dXJuICgqc3RyICE9ICdcMCcg
JiYgUGF0dGVybk1hdGNoZXNTdHJpbmcocGF0dGVybiwgc3RyICsgMSkpIHx8CisgICAgICAgICAg
UGF0dGVybk1hdGNoZXNTdHJpbmcocGF0dGVybiArIDEsIHN0cik7CisgICAgZGVmYXVsdDogIC8v
IE5vbi1zcGVjaWFsIGNoYXJhY3Rlci4gIE1hdGNoZXMgaXRzZWxmLgorICAgICAgcmV0dXJuICpw
YXR0ZXJuID09ICpzdHIgJiYKKyAgICAgICAgICBQYXR0ZXJuTWF0Y2hlc1N0cmluZyhwYXR0ZXJu
ICsgMSwgc3RyICsgMSk7CisgIH0KK30KKworYm9vbCBVbml0VGVzdE9wdGlvbnM6Ok1hdGNoZXNG
aWx0ZXIoCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsIGNvbnN0IGNoYXIqIGZpbHRlcikg
eworICBjb25zdCBjaGFyICpjdXJfcGF0dGVybiA9IGZpbHRlcjsKKyAgZm9yICg7OykgeworICAg
IGlmIChQYXR0ZXJuTWF0Y2hlc1N0cmluZyhjdXJfcGF0dGVybiwgbmFtZS5jX3N0cigpKSkgewor
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gRmluZHMgdGhlIG5leHQgcGF0dGVy
biBpbiB0aGUgZmlsdGVyLgorICAgIGN1cl9wYXR0ZXJuID0gc3RyY2hyKGN1cl9wYXR0ZXJuLCAn
OicpOworCisgICAgLy8gUmV0dXJucyBpZiBubyBtb3JlIHBhdHRlcm4gY2FuIGJlIGZvdW5kLgor
ICAgIGlmIChjdXJfcGF0dGVybiA9PSBOVUxMKSB7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgLy8gU2tpcHMgdGhlIHBhdHRlcm4gc2VwYXJhdGVyICh0aGUgJzonIGNoYXJhY3Rl
cikuCisgICAgY3VyX3BhdHRlcm4rKzsKKyAgfQorfQorCisvLyBSZXR1cm5zIHRydWUgaWZmIHRo
ZSB1c2VyLXNwZWNpZmllZCBmaWx0ZXIgbWF0Y2hlcyB0aGUgdGVzdCBjYXNlCisvLyBuYW1lIGFu
ZCB0aGUgdGVzdCBuYW1lLgorYm9vbCBVbml0VGVzdE9wdGlvbnM6OkZpbHRlck1hdGNoZXNUZXN0
KGNvbnN0IHN0ZDo6c3RyaW5nICZ0ZXN0X2Nhc2VfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmdGVzdF9uYW1lKSB7CisgIGNv
bnN0IHN0ZDo6c3RyaW5nJiBmdWxsX25hbWUgPSB0ZXN0X2Nhc2VfbmFtZSArICIuIiArIHRlc3Rf
bmFtZS5jX3N0cigpOworCisgIC8vIFNwbGl0IC0tZ3Rlc3RfZmlsdGVyIGF0ICctJywgaWYgdGhl
cmUgaXMgb25lLCB0byBzZXBhcmF0ZSBpbnRvCisgIC8vIHBvc2l0aXZlIGZpbHRlciBhbmQgbmVn
YXRpdmUgZmlsdGVyIHBvcnRpb25zCisgIGNvbnN0IGNoYXIqIGNvbnN0IHAgPSBHVEVTVF9GTEFH
KGZpbHRlcikuY19zdHIoKTsKKyAgY29uc3QgY2hhciogY29uc3QgZGFzaCA9IHN0cmNocihwLCAn
LScpOworICBzdGQ6OnN0cmluZyBwb3NpdGl2ZTsKKyAgc3RkOjpzdHJpbmcgbmVnYXRpdmU7Cisg
IGlmIChkYXNoID09IE5VTEwpIHsKKyAgICBwb3NpdGl2ZSA9IEdURVNUX0ZMQUcoZmlsdGVyKS5j
X3N0cigpOyAgLy8gV2hvbGUgc3RyaW5nIGlzIGEgcG9zaXRpdmUgZmlsdGVyCisgICAgbmVnYXRp
dmUgPSAiIjsKKyAgfSBlbHNlIHsKKyAgICBwb3NpdGl2ZSA9IHN0ZDo6c3RyaW5nKHAsIGRhc2gp
OyAgIC8vIEV2ZXJ5dGhpbmcgdXAgdG8gdGhlIGRhc2gKKyAgICBuZWdhdGl2ZSA9IHN0ZDo6c3Ry
aW5nKGRhc2ggKyAxKTsgIC8vIEV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGRhc2gKKyAgICBpZiAocG9z
aXRpdmUuZW1wdHkoKSkgeworICAgICAgLy8gVHJlYXQgJy10ZXN0MScgYXMgdGhlIHNhbWUgYXMg
JyotdGVzdDEnCisgICAgICBwb3NpdGl2ZSA9IGtVbml2ZXJzYWxGaWx0ZXI7CisgICAgfQorICB9
CisKKyAgLy8gQSBmaWx0ZXIgaXMgYSBjb2xvbi1zZXBhcmF0ZWQgbGlzdCBvZiBwYXR0ZXJucy4g
IEl0IG1hdGNoZXMgYQorICAvLyB0ZXN0IGlmIGFueSBwYXR0ZXJuIGluIGl0IG1hdGNoZXMgdGhl
IHRlc3QuCisgIHJldHVybiAoTWF0Y2hlc0ZpbHRlcihmdWxsX25hbWUsIHBvc2l0aXZlLmNfc3Ry
KCkpICYmCisgICAgICAgICAgIU1hdGNoZXNGaWx0ZXIoZnVsbF9uYW1lLCBuZWdhdGl2ZS5jX3N0
cigpKSk7Cit9CisKKyNpZiBHVEVTVF9IQVNfU0VICisvLyBSZXR1cm5zIEVYQ0VQVElPTl9FWEVD
VVRFX0hBTkRMRVIgaWYgR29vZ2xlIFRlc3Qgc2hvdWxkIGhhbmRsZSB0aGUKKy8vIGdpdmVuIFNF
SCBleGNlcHRpb24sIG9yIEVYQ0VQVElPTl9DT05USU5VRV9TRUFSQ0ggb3RoZXJ3aXNlLgorLy8g
VGhpcyBmdW5jdGlvbiBpcyB1c2VmdWwgYXMgYW4gX19leGNlcHQgY29uZGl0aW9uLgoraW50IFVu
aXRUZXN0T3B0aW9uczo6R1Rlc3RTaG91bGRQcm9jZXNzU0VIKERXT1JEIGV4Y2VwdGlvbl9jb2Rl
KSB7CisgIC8vIEdvb2dsZSBUZXN0IHNob3VsZCBoYW5kbGUgYSBTRUggZXhjZXB0aW9uIGlmOgor
ICAvLyAgIDEuIHRoZSB1c2VyIHdhbnRzIGl0IHRvLCBBTkQKKyAgLy8gICAyLiB0aGlzIGlzIG5v
dCBhIGJyZWFrcG9pbnQgZXhjZXB0aW9uLCBBTkQKKyAgLy8gICAzLiB0aGlzIGlzIG5vdCBhIEMr
KyBleGNlcHRpb24gKFZDKysgaW1wbGVtZW50cyB0aGVtIHZpYSBTRUgsCisgIC8vICAgICAgYXBw
YXJlbnRseSkuCisgIC8vCisgIC8vIFNFSCBleGNlcHRpb24gY29kZSBmb3IgQysrIGV4Y2VwdGlv
bnMuCisgIC8vIChzZWUgaHR0cDovL3N1cHBvcnQubWljcm9zb2Z0LmNvbS9rYi8xODUyOTQgZm9y
IG1vcmUgaW5mb3JtYXRpb24pLgorICBjb25zdCBEV09SRCBrQ3h4RXhjZXB0aW9uQ29kZSA9IDB4
ZTA2ZDczNjM7CisKKyAgYm9vbCBzaG91bGRfaGFuZGxlID0gdHJ1ZTsKKworICBpZiAoIUdURVNU
X0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykpCisgICAgc2hvdWxkX2hhbmRsZSA9IGZhbHNlOworICBl
bHNlIGlmIChleGNlcHRpb25fY29kZSA9PSBFWENFUFRJT05fQlJFQUtQT0lOVCkKKyAgICBzaG91
bGRfaGFuZGxlID0gZmFsc2U7CisgIGVsc2UgaWYgKGV4Y2VwdGlvbl9jb2RlID09IGtDeHhFeGNl
cHRpb25Db2RlKQorICAgIHNob3VsZF9oYW5kbGUgPSBmYWxzZTsKKworICByZXR1cm4gc2hvdWxk
X2hhbmRsZSA/IEVYQ0VQVElPTl9FWEVDVVRFX0hBTkRMRVIgOiBFWENFUFRJT05fQ09OVElOVUVf
U0VBUkNIOworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfU0VICisKK30gIC8vIG5hbWVzcGFjZSBp
bnRlcm5hbAorCisvLyBUaGUgYyd0b3Igc2V0cyB0aGlzIG9iamVjdCBhcyB0aGUgdGVzdCBwYXJ0
IHJlc3VsdCByZXBvcnRlciB1c2VkIGJ5CisvLyBHb29nbGUgVGVzdC4gIFRoZSAncmVzdWx0JyBw
YXJhbWV0ZXIgc3BlY2lmaWVzIHdoZXJlIHRvIHJlcG9ydCB0aGUKKy8vIHJlc3VsdHMuIEludGVy
Y2VwdHMgb25seSBmYWlsdXJlcyBmcm9tIHRoZSBjdXJyZW50IHRocmVhZC4KK1Njb3BlZEZha2VU
ZXN0UGFydFJlc3VsdFJlcG9ydGVyOjpTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlcigK
KyAgICBUZXN0UGFydFJlc3VsdEFycmF5KiByZXN1bHQpCisgICAgOiBpbnRlcmNlcHRfbW9kZV8o
SU5URVJDRVBUX09OTFlfQ1VSUkVOVF9USFJFQUQpLAorICAgICAgcmVzdWx0XyhyZXN1bHQpIHsK
KyAgSW5pdCgpOworfQorCisvLyBUaGUgYyd0b3Igc2V0cyB0aGlzIG9iamVjdCBhcyB0aGUgdGVz
dCBwYXJ0IHJlc3VsdCByZXBvcnRlciB1c2VkIGJ5CisvLyBHb29nbGUgVGVzdC4gIFRoZSAncmVz
dWx0JyBwYXJhbWV0ZXIgc3BlY2lmaWVzIHdoZXJlIHRvIHJlcG9ydCB0aGUKKy8vIHJlc3VsdHMu
CitTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlcjo6U2NvcGVkRmFrZVRlc3RQYXJ0UmVz
dWx0UmVwb3J0ZXIoCisgICAgSW50ZXJjZXB0TW9kZSBpbnRlcmNlcHRfbW9kZSwgVGVzdFBhcnRS
ZXN1bHRBcnJheSogcmVzdWx0KQorICAgIDogaW50ZXJjZXB0X21vZGVfKGludGVyY2VwdF9tb2Rl
KSwKKyAgICAgIHJlc3VsdF8ocmVzdWx0KSB7CisgIEluaXQoKTsKK30KKwordm9pZCBTY29wZWRG
YWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlcjo6SW5pdCgpIHsKKyAgaW50ZXJuYWw6OlVuaXRUZXN0
SW1wbCogY29uc3QgaW1wbCA9IGludGVybmFsOjpHZXRVbml0VGVzdEltcGwoKTsKKyAgaWYgKGlu
dGVyY2VwdF9tb2RlXyA9PSBJTlRFUkNFUFRfQUxMX1RIUkVBRFMpIHsKKyAgICBvbGRfcmVwb3J0
ZXJfID0gaW1wbC0+R2V0R2xvYmFsVGVzdFBhcnRSZXN1bHRSZXBvcnRlcigpOworICAgIGltcGwt
PlNldEdsb2JhbFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIodGhpcyk7CisgIH0gZWxzZSB7CisgICAg
b2xkX3JlcG9ydGVyXyA9IGltcGwtPkdldFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJGb3JDdXJyZW50
VGhyZWFkKCk7CisgICAgaW1wbC0+U2V0VGVzdFBhcnRSZXN1bHRSZXBvcnRlckZvckN1cnJlbnRU
aHJlYWQodGhpcyk7CisgIH0KK30KKworLy8gVGhlIGQndG9yIHJlc3RvcmVzIHRoZSB0ZXN0IHBh
cnQgcmVzdWx0IHJlcG9ydGVyIHVzZWQgYnkgR29vZ2xlIFRlc3QKKy8vIGJlZm9yZS4KK1Njb3Bl
ZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyOjp+U2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVw
b3J0ZXIoKSB7CisgIGludGVybmFsOjpVbml0VGVzdEltcGwqIGNvbnN0IGltcGwgPSBpbnRlcm5h
bDo6R2V0VW5pdFRlc3RJbXBsKCk7CisgIGlmIChpbnRlcmNlcHRfbW9kZV8gPT0gSU5URVJDRVBU
X0FMTF9USFJFQURTKSB7CisgICAgaW1wbC0+U2V0R2xvYmFsVGVzdFBhcnRSZXN1bHRSZXBvcnRl
cihvbGRfcmVwb3J0ZXJfKTsKKyAgfSBlbHNlIHsKKyAgICBpbXBsLT5TZXRUZXN0UGFydFJlc3Vs
dFJlcG9ydGVyRm9yQ3VycmVudFRocmVhZChvbGRfcmVwb3J0ZXJfKTsKKyAgfQorfQorCisvLyBJ
bmNyZW1lbnRzIHRoZSB0ZXN0IHBhcnQgcmVzdWx0IGNvdW50IGFuZCByZW1lbWJlcnMgdGhlIHJl
c3VsdC4KKy8vIFRoaXMgbWV0aG9kIGlzIGZyb20gdGhlIFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJJ
bnRlcmZhY2UgaW50ZXJmYWNlLgordm9pZCBTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRl
cjo6UmVwb3J0VGVzdFBhcnRSZXN1bHQoCisgICAgY29uc3QgVGVzdFBhcnRSZXN1bHQmIHJlc3Vs
dCkgeworICByZXN1bHRfLT5BcHBlbmQocmVzdWx0KTsKK30KKworbmFtZXNwYWNlIGludGVybmFs
IHsKKworLy8gUmV0dXJucyB0aGUgdHlwZSBJRCBvZiA6OnRlc3Rpbmc6OlRlc3QuICBXZSBzaG91
bGQgYWx3YXlzIGNhbGwgdGhpcworLy8gaW5zdGVhZCBvZiBHZXRUeXBlSWQ8IDo6dGVzdGluZzo6
VGVzdD4oKSB0byBnZXQgdGhlIHR5cGUgSUQgb2YKKy8vIHRlc3Rpbmc6OlRlc3QuICBUaGlzIGlz
IHRvIHdvcmsgYXJvdW5kIGEgc3VzcGVjdGVkIGxpbmtlciBidWcgd2hlbgorLy8gdXNpbmcgR29v
Z2xlIFRlc3QgYXMgYSBmcmFtZXdvcmsgb24gTWFjIE9TIFguICBUaGUgYnVnIGNhdXNlcworLy8g
R2V0VHlwZUlkPCA6OnRlc3Rpbmc6OlRlc3Q+KCkgdG8gcmV0dXJuIGRpZmZlcmVudCB2YWx1ZXMg
ZGVwZW5kaW5nCisvLyBvbiB3aGV0aGVyIHRoZSBjYWxsIGlzIGZyb20gdGhlIEdvb2dsZSBUZXN0
IGZyYW1ld29yayBpdHNlbGYgb3IKKy8vIGZyb20gdXNlciB0ZXN0IGNvZGUuICBHZXRUZXN0VHlw
ZUlkKCkgaXMgZ3VhcmFudGVlZCB0byBhbHdheXMKKy8vIHJldHVybiB0aGUgc2FtZSB2YWx1ZSwg
YXMgaXQgYWx3YXlzIGNhbGxzIEdldFR5cGVJZDw+KCkgZnJvbSB0aGUKKy8vIGd0ZXN0LmNjLCB3
aGljaCBpcyB3aXRoaW4gdGhlIEdvb2dsZSBUZXN0IGZyYW1ld29yay4KK1R5cGVJZCBHZXRUZXN0
VHlwZUlkKCkgeworICByZXR1cm4gR2V0VHlwZUlkPFRlc3Q+KCk7Cit9CisKKy8vIFRoZSB2YWx1
ZSBvZiBHZXRUZXN0VHlwZUlkKCkgYXMgc2VlbiBmcm9tIHdpdGhpbiB0aGUgR29vZ2xlIFRlc3QK
Ky8vIGxpYnJhcnkuICBUaGlzIGlzIHNvbGVseSBmb3IgdGVzdGluZyBHZXRUZXN0VHlwZUlkKCku
CitleHRlcm4gY29uc3QgVHlwZUlkIGtUZXN0VHlwZUlkSW5Hb29nbGVUZXN0ID0gR2V0VGVzdFR5
cGVJZCgpOworCisvLyBUaGlzIHByZWRpY2F0ZS1mb3JtYXR0ZXIgY2hlY2tzIHRoYXQgJ3Jlc3Vs
dHMnIGNvbnRhaW5zIGEgdGVzdCBwYXJ0CisvLyBmYWlsdXJlIG9mIHRoZSBnaXZlbiB0eXBlIGFu
ZCB0aGF0IHRoZSBmYWlsdXJlIG1lc3NhZ2UgY29udGFpbnMgdGhlCisvLyBnaXZlbiBzdWJzdHJp
bmcuCitBc3NlcnRpb25SZXN1bHQgSGFzT25lRmFpbHVyZShjb25zdCBjaGFyKiAvKiByZXN1bHRz
X2V4cHIgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAvKiB0
eXBlX2V4cHIgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAv
KiBzdWJzdHJfZXhwciAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRl
c3RQYXJ0UmVzdWx0QXJyYXkmIHJlc3VsdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUZXN0UGFydFJlc3VsdDo6VHlwZSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcmIHN1YnN0cikgeworICBjb25zdCBzdGQ6OnN0cmluZyBleHBl
Y3RlZCh0eXBlID09IFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlID8KKyAgICAgICAgICAg
ICAgICAgICAgICAgICIxIGZhdGFsIGZhaWx1cmUiIDoKKyAgICAgICAgICAgICAgICAgICAgICAg
ICIxIG5vbi1mYXRhbCBmYWlsdXJlIik7CisgIE1lc3NhZ2UgbXNnOworICBpZiAocmVzdWx0cy5z
aXplKCkgIT0gMSkgeworICAgIG1zZyA8PCAiRXhwZWN0ZWQ6ICIgPDwgZXhwZWN0ZWQgPDwgIlxu
IgorICAgICAgICA8PCAiICBBY3R1YWw6ICIgPDwgcmVzdWx0cy5zaXplKCkgPDwgIiBmYWlsdXJl
cyI7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXN1bHRzLnNpemUoKTsgaSsrKSB7CisgICAg
ICBtc2cgPDwgIlxuIiA8PCByZXN1bHRzLkdldFRlc3RQYXJ0UmVzdWx0KGkpOworICAgIH0KKyAg
ICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IG1zZzsKKyAgfQorCisgIGNvbnN0IFRlc3RQ
YXJ0UmVzdWx0JiByID0gcmVzdWx0cy5HZXRUZXN0UGFydFJlc3VsdCgwKTsKKyAgaWYgKHIudHlw
ZSgpICE9IHR5cGUpIHsKKyAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8ICJFeHBlY3Rl
ZDogIiA8PCBleHBlY3RlZCA8PCAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
PCAiICBBY3R1YWw6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCByOworICB9
CisKKyAgaWYgKHN0cnN0cihyLm1lc3NhZ2UoKSwgc3Vic3RyLmNfc3RyKCkpID09IE5VTEwpIHsK
KyAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8ICJFeHBlY3RlZDogIiA8PCBleHBlY3Rl
ZCA8PCAiIGNvbnRhaW5pbmcgXCIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBz
dWJzdHIgPDwgIlwiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiICBBY3R1
YWw6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCByOworICB9CisKKyAgcmV0
dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKK30KKworLy8gVGhlIGNvbnN0cnVjdG9yIG9mIFNpbmds
ZUZhaWx1cmVDaGVja2VyIHJlbWVtYmVycyB3aGVyZSB0byBsb29rIHVwCisvLyB0ZXN0IHBhcnQg
cmVzdWx0cywgd2hhdCB0eXBlIG9mIGZhaWx1cmUgd2UgZXhwZWN0LCBhbmQgd2hhdAorLy8gc3Vi
c3RyaW5nIHRoZSBmYWlsdXJlIG1lc3NhZ2Ugc2hvdWxkIGNvbnRhaW4uCitTaW5nbGVGYWlsdXJl
Q2hlY2tlcjo6U2luZ2xlRmFpbHVyZUNoZWNrZXIoY29uc3QgVGVzdFBhcnRSZXN1bHRBcnJheSog
cmVzdWx0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0
UGFydFJlc3VsdDo6VHlwZSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdWJzdHIpCisgICAgOiByZXN1bHRzXyhyZXN1
bHRzKSwgdHlwZV8odHlwZSksIHN1YnN0cl8oc3Vic3RyKSB7fQorCisvLyBUaGUgZGVzdHJ1Y3Rv
ciBvZiBTaW5nbGVGYWlsdXJlQ2hlY2tlciB2ZXJpZmllcyB0aGF0IHRoZSBnaXZlbgorLy8gVGVz
dFBhcnRSZXN1bHRBcnJheSBjb250YWlucyBleGFjdGx5IG9uZSBmYWlsdXJlIHRoYXQgaGFzIHRo
ZSBnaXZlbgorLy8gdHlwZSBhbmQgY29udGFpbnMgdGhlIGdpdmVuIHN1YnN0cmluZy4gIElmIHRo
YXQncyBub3QgdGhlIGNhc2UsIGEKKy8vIG5vbi1mYXRhbCBmYWlsdXJlIHdpbGwgYmUgZ2VuZXJh
dGVkLgorU2luZ2xlRmFpbHVyZUNoZWNrZXI6On5TaW5nbGVGYWlsdXJlQ2hlY2tlcigpIHsKKyAg
RVhQRUNUX1BSRURfRk9STUFUMyhIYXNPbmVGYWlsdXJlLCAqcmVzdWx0c18sIHR5cGVfLCBzdWJz
dHJfKTsKK30KKworRGVmYXVsdEdsb2JhbFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI6OkRlZmF1bHRH
bG9iYWxUZXN0UGFydFJlc3VsdFJlcG9ydGVyKAorICAgIFVuaXRUZXN0SW1wbCogdW5pdF90ZXN0
KSA6IHVuaXRfdGVzdF8odW5pdF90ZXN0KSB7fQorCit2b2lkIERlZmF1bHRHbG9iYWxUZXN0UGFy
dFJlc3VsdFJlcG9ydGVyOjpSZXBvcnRUZXN0UGFydFJlc3VsdCgKKyAgICBjb25zdCBUZXN0UGFy
dFJlc3VsdCYgcmVzdWx0KSB7CisgIHVuaXRfdGVzdF8tPmN1cnJlbnRfdGVzdF9yZXN1bHQoKS0+
QWRkVGVzdFBhcnRSZXN1bHQocmVzdWx0KTsKKyAgdW5pdF90ZXN0Xy0+bGlzdGVuZXJzKCktPnJl
cGVhdGVyKCktPk9uVGVzdFBhcnRSZXN1bHQocmVzdWx0KTsKK30KKworRGVmYXVsdFBlclRocmVh
ZFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI6OkRlZmF1bHRQZXJUaHJlYWRUZXN0UGFydFJlc3VsdFJl
cG9ydGVyKAorICAgIFVuaXRUZXN0SW1wbCogdW5pdF90ZXN0KSA6IHVuaXRfdGVzdF8odW5pdF90
ZXN0KSB7fQorCit2b2lkIERlZmF1bHRQZXJUaHJlYWRUZXN0UGFydFJlc3VsdFJlcG9ydGVyOjpS
ZXBvcnRUZXN0UGFydFJlc3VsdCgKKyAgICBjb25zdCBUZXN0UGFydFJlc3VsdCYgcmVzdWx0KSB7
CisgIHVuaXRfdGVzdF8tPkdldEdsb2JhbFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIoKS0+UmVwb3J0
VGVzdFBhcnRSZXN1bHQocmVzdWx0KTsKK30KKworLy8gUmV0dXJucyB0aGUgZ2xvYmFsIHRlc3Qg
cGFydCByZXN1bHQgcmVwb3J0ZXIuCitUZXN0UGFydFJlc3VsdFJlcG9ydGVySW50ZXJmYWNlKgor
VW5pdFRlc3RJbXBsOjpHZXRHbG9iYWxUZXN0UGFydFJlc3VsdFJlcG9ydGVyKCkgeworICBpbnRl
cm5hbDo6TXV0ZXhMb2NrIGxvY2soJmdsb2JhbF90ZXN0X3BhcnRfcmVzdWx0X3JlcG9ydGVyX211
dGV4Xyk7CisgIHJldHVybiBnbG9iYWxfdGVzdF9wYXJ0X3Jlc3VsdF9yZXBvdGVyXzsKK30KKwor
Ly8gU2V0cyB0aGUgZ2xvYmFsIHRlc3QgcGFydCByZXN1bHQgcmVwb3J0ZXIuCit2b2lkIFVuaXRU
ZXN0SW1wbDo6U2V0R2xvYmFsVGVzdFBhcnRSZXN1bHRSZXBvcnRlcigKKyAgICBUZXN0UGFydFJl
c3VsdFJlcG9ydGVySW50ZXJmYWNlKiByZXBvcnRlcikgeworICBpbnRlcm5hbDo6TXV0ZXhMb2Nr
IGxvY2soJmdsb2JhbF90ZXN0X3BhcnRfcmVzdWx0X3JlcG9ydGVyX211dGV4Xyk7CisgIGdsb2Jh
bF90ZXN0X3BhcnRfcmVzdWx0X3JlcG90ZXJfID0gcmVwb3J0ZXI7Cit9CisKKy8vIFJldHVybnMg
dGhlIHRlc3QgcGFydCByZXN1bHQgcmVwb3J0ZXIgZm9yIHRoZSBjdXJyZW50IHRocmVhZC4KK1Rl
c3RQYXJ0UmVzdWx0UmVwb3J0ZXJJbnRlcmZhY2UqCitVbml0VGVzdEltcGw6OkdldFRlc3RQYXJ0
UmVzdWx0UmVwb3J0ZXJGb3JDdXJyZW50VGhyZWFkKCkgeworICByZXR1cm4gcGVyX3RocmVhZF90
ZXN0X3BhcnRfcmVzdWx0X3JlcG9ydGVyXy5nZXQoKTsKK30KKworLy8gU2V0cyB0aGUgdGVzdCBw
YXJ0IHJlc3VsdCByZXBvcnRlciBmb3IgdGhlIGN1cnJlbnQgdGhyZWFkLgordm9pZCBVbml0VGVz
dEltcGw6OlNldFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJGb3JDdXJyZW50VGhyZWFkKAorICAgIFRl
c3RQYXJ0UmVzdWx0UmVwb3J0ZXJJbnRlcmZhY2UqIHJlcG9ydGVyKSB7CisgIHBlcl90aHJlYWRf
dGVzdF9wYXJ0X3Jlc3VsdF9yZXBvcnRlcl8uc2V0KHJlcG9ydGVyKTsKK30KKworLy8gR2V0cyB0
aGUgbnVtYmVyIG9mIHN1Y2Nlc3NmdWwgdGVzdCBjYXNlcy4KK2ludCBVbml0VGVzdEltcGw6OnN1
Y2Nlc3NmdWxfdGVzdF9jYXNlX2NvdW50KCkgY29uc3QgeworICByZXR1cm4gQ291bnRJZih0ZXN0
X2Nhc2VzXywgVGVzdENhc2VQYXNzZWQpOworfQorCisvLyBHZXRzIHRoZSBudW1iZXIgb2YgZmFp
bGVkIHRlc3QgY2FzZXMuCitpbnQgVW5pdFRlc3RJbXBsOjpmYWlsZWRfdGVzdF9jYXNlX2NvdW50
KCkgY29uc3QgeworICByZXR1cm4gQ291bnRJZih0ZXN0X2Nhc2VzXywgVGVzdENhc2VGYWlsZWQp
OworfQorCisvLyBHZXRzIHRoZSBudW1iZXIgb2YgYWxsIHRlc3QgY2FzZXMuCitpbnQgVW5pdFRl
c3RJbXBsOjp0b3RhbF90ZXN0X2Nhc2VfY291bnQoKSBjb25zdCB7CisgIHJldHVybiBzdGF0aWNf
Y2FzdDxpbnQ+KHRlc3RfY2FzZXNfLnNpemUoKSk7Cit9CisKKy8vIEdldHMgdGhlIG51bWJlciBv
ZiBhbGwgdGVzdCBjYXNlcyB0aGF0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIHRlc3QKKy8vIHRoYXQg
c2hvdWxkIHJ1bi4KK2ludCBVbml0VGVzdEltcGw6OnRlc3RfY2FzZV90b19ydW5fY291bnQoKSBj
b25zdCB7CisgIHJldHVybiBDb3VudElmKHRlc3RfY2FzZXNfLCBTaG91bGRSdW5UZXN0Q2FzZSk7
Cit9CisKKy8vIEdldHMgdGhlIG51bWJlciBvZiBzdWNjZXNzZnVsIHRlc3RzLgoraW50IFVuaXRU
ZXN0SW1wbDo6c3VjY2Vzc2Z1bF90ZXN0X2NvdW50KCkgY29uc3QgeworICByZXR1cm4gU3VtT3Zl
clRlc3RDYXNlTGlzdCh0ZXN0X2Nhc2VzXywgJlRlc3RDYXNlOjpzdWNjZXNzZnVsX3Rlc3RfY291
bnQpOworfQorCisvLyBHZXRzIHRoZSBudW1iZXIgb2YgZmFpbGVkIHRlc3RzLgoraW50IFVuaXRU
ZXN0SW1wbDo6ZmFpbGVkX3Rlc3RfY291bnQoKSBjb25zdCB7CisgIHJldHVybiBTdW1PdmVyVGVz
dENhc2VMaXN0KHRlc3RfY2FzZXNfLCAmVGVzdENhc2U6OmZhaWxlZF90ZXN0X2NvdW50KTsKK30K
KworLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRlc3RzIHRoYXQgd2lsbCBiZSByZXBv
cnRlZCBpbiB0aGUgWE1MIHJlcG9ydC4KK2ludCBVbml0VGVzdEltcGw6OnJlcG9ydGFibGVfZGlz
YWJsZWRfdGVzdF9jb3VudCgpIGNvbnN0IHsKKyAgcmV0dXJuIFN1bU92ZXJUZXN0Q2FzZUxpc3Qo
dGVzdF9jYXNlc18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZUZXN0Q2FzZTo6cmVw
b3J0YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KTsKK30KKworLy8gR2V0cyB0aGUgbnVtYmVyIG9m
IGRpc2FibGVkIHRlc3RzLgoraW50IFVuaXRUZXN0SW1wbDo6ZGlzYWJsZWRfdGVzdF9jb3VudCgp
IGNvbnN0IHsKKyAgcmV0dXJuIFN1bU92ZXJUZXN0Q2FzZUxpc3QodGVzdF9jYXNlc18sICZUZXN0
Q2FzZTo6ZGlzYWJsZWRfdGVzdF9jb3VudCk7Cit9CisKKy8vIEdldHMgdGhlIG51bWJlciBvZiB0
ZXN0cyB0byBiZSBwcmludGVkIGluIHRoZSBYTUwgcmVwb3J0LgoraW50IFVuaXRUZXN0SW1wbDo6
cmVwb3J0YWJsZV90ZXN0X2NvdW50KCkgY29uc3QgeworICByZXR1cm4gU3VtT3ZlclRlc3RDYXNl
TGlzdCh0ZXN0X2Nhc2VzXywgJlRlc3RDYXNlOjpyZXBvcnRhYmxlX3Rlc3RfY291bnQpOworfQor
CisvLyBHZXRzIHRoZSBudW1iZXIgb2YgYWxsIHRlc3RzLgoraW50IFVuaXRUZXN0SW1wbDo6dG90
YWxfdGVzdF9jb3VudCgpIGNvbnN0IHsKKyAgcmV0dXJuIFN1bU92ZXJUZXN0Q2FzZUxpc3QodGVz
dF9jYXNlc18sICZUZXN0Q2FzZTo6dG90YWxfdGVzdF9jb3VudCk7Cit9CisKKy8vIEdldHMgdGhl
IG51bWJlciBvZiB0ZXN0cyB0aGF0IHNob3VsZCBydW4uCitpbnQgVW5pdFRlc3RJbXBsOjp0ZXN0
X3RvX3J1bl9jb3VudCgpIGNvbnN0IHsKKyAgcmV0dXJuIFN1bU92ZXJUZXN0Q2FzZUxpc3QodGVz
dF9jYXNlc18sICZUZXN0Q2FzZTo6dGVzdF90b19ydW5fY291bnQpOworfQorCisvLyBSZXR1cm5z
IHRoZSBjdXJyZW50IE9TIHN0YWNrIHRyYWNlIGFzIGFuIHN0ZDo6c3RyaW5nLgorLy8KKy8vIFRo
ZSBtYXhpbXVtIG51bWJlciBvZiBzdGFjayBmcmFtZXMgdG8gYmUgaW5jbHVkZWQgaXMgc3BlY2lm
aWVkIGJ5CisvLyB0aGUgZ3Rlc3Rfc3RhY2tfdHJhY2VfZGVwdGggZmxhZy4gIFRoZSBza2lwX2Nv
dW50IHBhcmFtZXRlcgorLy8gc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgdG9wIGZyYW1lcyB0byBi
ZSBza2lwcGVkLCB3aGljaCBkb2Vzbid0CisvLyBjb3VudCBhZ2FpbnN0IHRoZSBudW1iZXIgb2Yg
ZnJhbWVzIHRvIGJlIGluY2x1ZGVkLgorLy8KKy8vIEZvciBleGFtcGxlLCBpZiBGb28oKSBjYWxs
cyBCYXIoKSwgd2hpY2ggaW4gdHVybiBjYWxscworLy8gQ3VycmVudE9zU3RhY2tUcmFjZUV4Y2Vw
dFRvcCgxKSwgRm9vKCkgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUKKy8vIHRyYWNlIGJ1dCBCYXIo
KSBhbmQgQ3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcCgpIHdvbid0Lgorc3RkOjpzdHJpbmcg
VW5pdFRlc3RJbXBsOjpDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKGludCBza2lwX2NvdW50
KSB7CisgIHJldHVybiBvc19zdGFja190cmFjZV9nZXR0ZXIoKS0+Q3VycmVudFN0YWNrVHJhY2Uo
CisgICAgICBzdGF0aWNfY2FzdDxpbnQ+KEdURVNUX0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpKSwK
KyAgICAgIHNraXBfY291bnQgKyAxCisgICAgICAvLyBTa2lwcyB0aGUgdXNlci1zcGVjaWZpZWQg
bnVtYmVyIG9mIGZyYW1lcyBwbHVzIHRoaXMgZnVuY3Rpb24KKyAgICAgIC8vIGl0c2VsZi4KKyAg
ICAgICk7ICAvLyBOT0xJTlQKK30KKworLy8gUmV0dXJucyB0aGUgY3VycmVudCB0aW1lIGluIG1p
bGxpc2Vjb25kcy4KK1RpbWVJbk1pbGxpcyBHZXRUaW1lSW5NaWxsaXMoKSB7CisjaWYgR1RFU1Rf
T1NfV0lORE9XU19NT0JJTEUgfHwgZGVmaW5lZChfX0JPUkxBTkRDX18pCisgIC8vIERpZmZlcmVu
Y2UgYmV0d2VlbiAxOTcwLTAxLTAxIGFuZCAxNjAxLTAxLTAxIGluIG1pbGxpc2Vjb25kcy4KKyAg
Ly8gaHR0cDovL2FuYWxvZ291cy5ibG9nc3BvdC5jb20vMjAwNS8wNC9lcG9jaC5odG1sCisgIGNv
bnN0IFRpbWVJbk1pbGxpcyBrSmF2YUVwb2NoVG9XaW5GaWxlVGltZURlbHRhID0KKyAgICBzdGF0
aWNfY2FzdDxUaW1lSW5NaWxsaXM+KDExNjQ0NDczNlVMKSAqIDEwMDAwMFVMOworICBjb25zdCBE
V09SRCBrVGVudGhNaWNyb3NJbk1pbGxpU2Vjb25kID0gMTAwMDA7CisKKyAgU1lTVEVNVElNRSBu
b3dfc3lzdGltZTsKKyAgRklMRVRJTUUgbm93X2ZpbGV0aW1lOworICBVTEFSR0VfSU5URUdFUiBu
b3dfaW50NjQ7CisgIC8vIFRPRE8oa2VudG9uQGdvb2dsZS5jb20pOiBTaG91bGRuJ3QgdGhpcyBq
dXN0IHVzZQorICAvLyAgIEdldFN5c3RlbVRpbWVBc0ZpbGVUaW1lKCk/CisgIEdldFN5c3RlbVRp
bWUoJm5vd19zeXN0aW1lKTsKKyAgaWYgKFN5c3RlbVRpbWVUb0ZpbGVUaW1lKCZub3dfc3lzdGlt
ZSwgJm5vd19maWxldGltZSkpIHsKKyAgICBub3dfaW50NjQuTG93UGFydCA9IG5vd19maWxldGlt
ZS5kd0xvd0RhdGVUaW1lOworICAgIG5vd19pbnQ2NC5IaWdoUGFydCA9IG5vd19maWxldGltZS5k
d0hpZ2hEYXRlVGltZTsKKyAgICBub3dfaW50NjQuUXVhZFBhcnQgPSAobm93X2ludDY0LlF1YWRQ
YXJ0IC8ga1RlbnRoTWljcm9zSW5NaWxsaVNlY29uZCkgLQorICAgICAga0phdmFFcG9jaFRvV2lu
RmlsZVRpbWVEZWx0YTsKKyAgICByZXR1cm4gbm93X2ludDY0LlF1YWRQYXJ0OworICB9CisgIHJl
dHVybiAwOworI2VsaWYgR1RFU1RfT1NfV0lORE9XUyAmJiAhR1RFU1RfSEFTX0dFVFRJTUVPRkRB
WV8KKyAgX190aW1lYjY0IG5vdzsKKworICAvLyBNU1ZDIDggZGVwcmVjYXRlcyBfZnRpbWU2NCgp
LCBzbyB3ZSB3YW50IHRvIHN1cHByZXNzIHdhcm5pbmcgNDk5NgorICAvLyAoZGVwcmVjYXRlZCBm
dW5jdGlvbikgdGhlcmUuCisgIC8vIFRPRE8oa2VudG9uQGdvb2dsZS5jb20pOiBVc2UgR2V0VGlj
a0NvdW50KCk/ICBPciB1c2UKKyAgLy8gICBTeXN0ZW1UaW1lVG9GaWxlVGltZSgpCisgIEdURVNU
X0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQ5OTYpCisgIF9mdGltZTY0KCZub3cpOworICBH
VEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKKworICByZXR1cm4gc3RhdGljX2Nhc3Q8
VGltZUluTWlsbGlzPihub3cudGltZSkgKiAxMDAwICsgbm93Lm1pbGxpdG07CisjZWxpZiBHVEVT
VF9IQVNfR0VUVElNRU9GREFZXworICBzdHJ1Y3QgdGltZXZhbCBub3c7CisgIGdldHRpbWVvZmRh
eSgmbm93LCBOVUxMKTsKKyAgcmV0dXJuIHN0YXRpY19jYXN0PFRpbWVJbk1pbGxpcz4obm93LnR2
X3NlYykgKiAxMDAwICsgbm93LnR2X3VzZWMgLyAxMDAwOworI2Vsc2UKKyMgZXJyb3IgIkRvbid0
IGtub3cgaG93IHRvIGdldCB0aGUgY3VycmVudCB0aW1lIG9uIHlvdXIgc3lzdGVtLiIKKyNlbmRp
ZgorfQorCisvLyBVdGlsaXRpZXMKKworLy8gY2xhc3MgU3RyaW5nLgorCisjaWYgR1RFU1RfT1Nf
V0lORE9XU19NT0JJTEUKKy8vIENyZWF0ZXMgYSBVVEYtMTYgd2lkZSBzdHJpbmcgZnJvbSB0aGUg
Z2l2ZW4gQU5TSSBzdHJpbmcsIGFsbG9jYXRpbmcKKy8vIG1lbW9yeSB1c2luZyBuZXcuIFRoZSBj
YWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGRlbGV0aW5nIHRoZSByZXR1cm4KKy8vIHZhbHVlIHVz
aW5nIGRlbGV0ZVtdLiBSZXR1cm5zIHRoZSB3aWRlIHN0cmluZywgb3IgTlVMTCBpZiB0aGUKKy8v
IGlucHV0IGlzIE5VTEwuCitMUENXU1RSIFN0cmluZzo6QW5zaVRvVXRmMTYoY29uc3QgY2hhciog
YW5zaSkgeworICBpZiAoIWFuc2kpIHJldHVybiBOVUxMOworICBjb25zdCBpbnQgbGVuZ3RoID0g
c3RybGVuKGFuc2kpOworICBjb25zdCBpbnQgdW5pY29kZV9sZW5ndGggPQorICAgICAgTXVsdGlC
eXRlVG9XaWRlQ2hhcihDUF9BQ1AsIDAsIGFuc2ksIGxlbmd0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgTlVMTCwgMCk7CisgIFdDSEFSKiB1bmljb2RlID0gbmV3IFdDSEFSW3VuaWNvZGVf
bGVuZ3RoICsgMV07CisgIE11bHRpQnl0ZVRvV2lkZUNoYXIoQ1BfQUNQLCAwLCBhbnNpLCBsZW5n
dGgsCisgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZSwgdW5pY29kZV9sZW5ndGgpOworICB1
bmljb2RlW3VuaWNvZGVfbGVuZ3RoXSA9IDA7CisgIHJldHVybiB1bmljb2RlOworfQorCisvLyBD
cmVhdGVzIGFuIEFOU0kgc3RyaW5nIGZyb20gdGhlIGdpdmVuIHdpZGUgc3RyaW5nLCBhbGxvY2F0
aW5nCisvLyBtZW1vcnkgdXNpbmcgbmV3LiBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBk
ZWxldGluZyB0aGUgcmV0dXJuCisvLyB2YWx1ZSB1c2luZyBkZWxldGVbXS4gUmV0dXJucyB0aGUg
QU5TSSBzdHJpbmcsIG9yIE5VTEwgaWYgdGhlCisvLyBpbnB1dCBpcyBOVUxMLgorY29uc3QgY2hh
ciogU3RyaW5nOjpVdGYxNlRvQW5zaShMUENXU1RSIHV0ZjE2X3N0cikgIHsKKyAgaWYgKCF1dGYx
Nl9zdHIpIHJldHVybiBOVUxMOworICBjb25zdCBpbnQgYW5zaV9sZW5ndGggPQorICAgICAgV2lk
ZUNoYXJUb011bHRpQnl0ZShDUF9BQ1AsIDAsIHV0ZjE2X3N0ciwgLTEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5VTEwsIDAsIE5VTEwsIE5VTEwpOworICBjaGFyKiBhbnNpID0gbmV3IGNo
YXJbYW5zaV9sZW5ndGggKyAxXTsKKyAgV2lkZUNoYXJUb011bHRpQnl0ZShDUF9BQ1AsIDAsIHV0
ZjE2X3N0ciwgLTEsCisgICAgICAgICAgICAgICAgICAgICAgYW5zaSwgYW5zaV9sZW5ndGgsIE5V
TEwsIE5VTEwpOworICBhbnNpW2Fuc2lfbGVuZ3RoXSA9IDA7CisgIHJldHVybiBhbnNpOworfQor
CisjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisKKy8vIENvbXBhcmVzIHR3byBD
IHN0cmluZ3MuICBSZXR1cm5zIHRydWUgaWZmIHRoZXkgaGF2ZSB0aGUgc2FtZSBjb250ZW50Lgor
Ly8KKy8vIFVubGlrZSBzdHJjbXAoKSwgdGhpcyBmdW5jdGlvbiBjYW4gaGFuZGxlIE5VTEwgYXJn
dW1lbnQocykuICBBIE5VTEwKKy8vIEMgc3RyaW5nIGlzIGNvbnNpZGVyZWQgZGlmZmVyZW50IHRv
IGFueSBub24tTlVMTCBDIHN0cmluZywKKy8vIGluY2x1ZGluZyB0aGUgZW1wdHkgc3RyaW5nLgor
Ym9vbCBTdHJpbmc6OkNTdHJpbmdFcXVhbHMoY29uc3QgY2hhciAqIGxocywgY29uc3QgY2hhciAq
IHJocykgeworICBpZiAoIGxocyA9PSBOVUxMICkgcmV0dXJuIHJocyA9PSBOVUxMOworCisgIGlm
ICggcmhzID09IE5VTEwgKSByZXR1cm4gZmFsc2U7CisKKyAgcmV0dXJuIHN0cmNtcChsaHMsIHJo
cykgPT0gMDsKK30KKworI2lmIEdURVNUX0hBU19TVERfV1NUUklORyB8fCBHVEVTVF9IQVNfR0xP
QkFMX1dTVFJJTkcKKworLy8gQ29udmVydHMgYW4gYXJyYXkgb2Ygd2lkZSBjaGFycyB0byBhIG5h
cnJvdyBzdHJpbmcgdXNpbmcgdGhlIFVURi04CisvLyBlbmNvZGluZywgYW5kIHN0cmVhbXMgdGhl
IHJlc3VsdCB0byB0aGUgZ2l2ZW4gTWVzc2FnZSBvYmplY3QuCitzdGF0aWMgdm9pZCBTdHJlYW1X
aWRlQ2hhcnNUb01lc3NhZ2UoY29uc3Qgd2NoYXJfdCogd3N0ciwgc2l6ZV90IGxlbmd0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlKiBtc2cpIHsKKyAgZm9y
IChzaXplX3QgaSA9IDA7IGkgIT0gbGVuZ3RoOyApIHsgIC8vIE5PTElOVAorICAgIGlmICh3c3Ry
W2ldICE9IEwnXDAnKSB7CisgICAgICAqbXNnIDw8IFdpZGVTdHJpbmdUb1V0Zjgod3N0ciArIGks
IHN0YXRpY19jYXN0PGludD4obGVuZ3RoIC0gaSkpOworICAgICAgd2hpbGUgKGkgIT0gbGVuZ3Ro
ICYmIHdzdHJbaV0gIT0gTCdcMCcpCisgICAgICAgIGkrKzsKKyAgICB9IGVsc2UgeworICAgICAg
Km1zZyA8PCAnXDAnOworICAgICAgaSsrOworICAgIH0KKyAgfQorfQorCisjZW5kaWYgIC8vIEdU
RVNUX0hBU19TVERfV1NUUklORyB8fCBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKKwordm9pZCBT
cGxpdFN0cmluZyhjb25zdCA6OnN0ZDo6c3RyaW5nJiBzdHIsIGNoYXIgZGVsaW1pdGVyLAorICAg
ICAgICAgICAgICAgICA6OnN0ZDo6dmVjdG9yPCA6OnN0ZDo6c3RyaW5nPiogZGVzdCkgeworICA6
OnN0ZDo6dmVjdG9yPCA6OnN0ZDo6c3RyaW5nPiBwYXJzZWQ7CisgIDo6c3RkOjpzdHJpbmc6OnNp
emVfdHlwZSBwb3MgPSAwOworICB3aGlsZSAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1
ZSgpKSB7CisgICAgY29uc3QgOjpzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIGNvbG9uID0gc3RyLmZp
bmQoZGVsaW1pdGVyLCBwb3MpOworICAgIGlmIChjb2xvbiA9PSA6OnN0ZDo6c3RyaW5nOjpucG9z
KSB7CisgICAgICBwYXJzZWQucHVzaF9iYWNrKHN0ci5zdWJzdHIocG9zKSk7CisgICAgICBicmVh
azsKKyAgICB9IGVsc2UgeworICAgICAgcGFyc2VkLnB1c2hfYmFjayhzdHIuc3Vic3RyKHBvcywg
Y29sb24gLSBwb3MpKTsKKyAgICAgIHBvcyA9IGNvbG9uICsgMTsKKyAgICB9CisgIH0KKyAgZGVz
dC0+c3dhcChwYXJzZWQpOworfQorCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKKworLy8gQ29u
c3RydWN0cyBhbiBlbXB0eSBNZXNzYWdlLgorLy8gV2UgYWxsb2NhdGUgdGhlIHN0cmluZ3N0cmVh
bSBzZXBhcmF0ZWx5IGJlY2F1c2Ugb3RoZXJ3aXNlIGVhY2ggdXNlIG9mCisvLyBBU1NFUlQvRVhQ
RUNUIGluIGEgcHJvY2VkdXJlIGFkZHMgb3ZlciAyMDAgYnl0ZXMgdG8gdGhlIHByb2NlZHVyZSdz
CisvLyBzdGFjayBmcmFtZSBsZWFkaW5nIHRvIGh1Z2Ugc3RhY2sgZnJhbWVzIGluIHNvbWUgY2Fz
ZXM7IGdjYyBkb2VzIG5vdCByZXVzZQorLy8gdGhlIHN0YWNrIHNwYWNlLgorTWVzc2FnZTo6TWVz
c2FnZSgpIDogc3NfKG5ldyA6OnN0ZDo6c3RyaW5nc3RyZWFtKSB7CisgIC8vIEJ5IGRlZmF1bHQs
IHdlIHdhbnQgdGhlcmUgdG8gYmUgZW5vdWdoIHByZWNpc2lvbiB3aGVuIHByaW50aW5nCisgIC8v
IGEgZG91YmxlIHRvIGEgTWVzc2FnZS4KKyAgKnNzXyA8PCBzdGQ6OnNldHByZWNpc2lvbihzdGQ6
Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmRpZ2l0czEwICsgMik7Cit9CisKKy8vIFRoZXNlIHR3
byBvdmVybG9hZHMgYWxsb3cgc3RyZWFtaW5nIGEgd2lkZSBDIHN0cmluZyB0byBhIE1lc3NhZ2UK
Ky8vIHVzaW5nIHRoZSBVVEYtOCBlbmNvZGluZy4KK01lc3NhZ2UmIE1lc3NhZ2U6Om9wZXJhdG9y
IDw8KGNvbnN0IHdjaGFyX3QqIHdpZGVfY19zdHIpIHsKKyAgcmV0dXJuICp0aGlzIDw8IGludGVy
bmFsOjpTdHJpbmc6OlNob3dXaWRlQ1N0cmluZyh3aWRlX2Nfc3RyKTsKK30KK01lc3NhZ2UmIE1l
c3NhZ2U6Om9wZXJhdG9yIDw8KHdjaGFyX3QqIHdpZGVfY19zdHIpIHsKKyAgcmV0dXJuICp0aGlz
IDw8IGludGVybmFsOjpTdHJpbmc6OlNob3dXaWRlQ1N0cmluZyh3aWRlX2Nfc3RyKTsKK30KKwor
I2lmIEdURVNUX0hBU19TVERfV1NUUklORworLy8gQ29udmVydHMgdGhlIGdpdmVuIHdpZGUgc3Ry
aW5nIHRvIGEgbmFycm93IHN0cmluZyB1c2luZyB0aGUgVVRGLTgKKy8vIGVuY29kaW5nLCBhbmQg
c3RyZWFtcyB0aGUgcmVzdWx0IHRvIHRoaXMgTWVzc2FnZSBvYmplY3QuCitNZXNzYWdlJiBNZXNz
YWdlOjpvcGVyYXRvciA8PChjb25zdCA6OnN0ZDo6d3N0cmluZyYgd3N0cikgeworICBpbnRlcm5h
bDo6U3RyZWFtV2lkZUNoYXJzVG9NZXNzYWdlKHdzdHIuY19zdHIoKSwgd3N0ci5sZW5ndGgoKSwg
dGhpcyk7CisgIHJldHVybiAqdGhpczsKK30KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9XU1RS
SU5HCisKKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKKy8vIENvbnZlcnRzIHRoZSBnaXZl
biB3aWRlIHN0cmluZyB0byBhIG5hcnJvdyBzdHJpbmcgdXNpbmcgdGhlIFVURi04CisvLyBlbmNv
ZGluZywgYW5kIHN0cmVhbXMgdGhlIHJlc3VsdCB0byB0aGlzIE1lc3NhZ2Ugb2JqZWN0LgorTWVz
c2FnZSYgTWVzc2FnZTo6b3BlcmF0b3IgPDwoY29uc3QgOjp3c3RyaW5nJiB3c3RyKSB7CisgIGlu
dGVybmFsOjpTdHJlYW1XaWRlQ2hhcnNUb01lc3NhZ2Uod3N0ci5jX3N0cigpLCB3c3RyLmxlbmd0
aCgpLCB0aGlzKTsKKyAgcmV0dXJuICp0aGlzOworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xP
QkFMX1dTVFJJTkcKKworLy8gR2V0cyB0aGUgdGV4dCBzdHJlYW1lZCB0byB0aGlzIG9iamVjdCBz
byBmYXIgYXMgYW4gc3RkOjpzdHJpbmcuCisvLyBFYWNoICdcMCcgY2hhcmFjdGVyIGluIHRoZSBi
dWZmZXIgaXMgcmVwbGFjZWQgd2l0aCAiXFwwIi4KK3N0ZDo6c3RyaW5nIE1lc3NhZ2U6OkdldFN0
cmluZygpIGNvbnN0IHsKKyAgcmV0dXJuIGludGVybmFsOjpTdHJpbmdTdHJlYW1Ub1N0cmluZyhz
c18uZ2V0KCkpOworfQorCisvLyBBc3NlcnRpb25SZXN1bHQgY29uc3RydWN0b3JzLgorLy8gVXNl
ZCBpbiBFWFBFQ1RfVFJVRS9GQUxTRShhc3NlcnRpb25fcmVzdWx0KS4KK0Fzc2VydGlvblJlc3Vs
dDo6QXNzZXJ0aW9uUmVzdWx0KGNvbnN0IEFzc2VydGlvblJlc3VsdCYgb3RoZXIpCisgICAgOiBz
dWNjZXNzXyhvdGhlci5zdWNjZXNzXyksCisgICAgICBtZXNzYWdlXyhvdGhlci5tZXNzYWdlXy5n
ZXQoKSAhPSBOVUxMID8KKyAgICAgICAgICAgICAgIG5ldyA6OnN0ZDo6c3RyaW5nKCpvdGhlci5t
ZXNzYWdlXykgOgorICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8IDo6c3RkOjpzdHJpbmcqPihO
VUxMKSkgeworfQorCisvLyBTd2FwcyB0d28gQXNzZXJ0aW9uUmVzdWx0cy4KK3ZvaWQgQXNzZXJ0
aW9uUmVzdWx0Ojpzd2FwKEFzc2VydGlvblJlc3VsdCYgb3RoZXIpIHsKKyAgdXNpbmcgc3RkOjpz
d2FwOworICBzd2FwKHN1Y2Nlc3NfLCBvdGhlci5zdWNjZXNzXyk7CisgIHN3YXAobWVzc2FnZV8s
IG90aGVyLm1lc3NhZ2VfKTsKK30KKworLy8gUmV0dXJucyB0aGUgYXNzZXJ0aW9uJ3MgbmVnYXRp
b24uIFVzZWQgd2l0aCBFWFBFQ1QvQVNTRVJUX0ZBTFNFLgorQXNzZXJ0aW9uUmVzdWx0IEFzc2Vy
dGlvblJlc3VsdDo6b3BlcmF0b3IhKCkgY29uc3QgeworICBBc3NlcnRpb25SZXN1bHQgbmVnYXRp
b24oIXN1Y2Nlc3NfKTsKKyAgaWYgKG1lc3NhZ2VfLmdldCgpICE9IE5VTEwpCisgICAgbmVnYXRp
b24gPDwgKm1lc3NhZ2VfOworICByZXR1cm4gbmVnYXRpb247Cit9CisKKy8vIE1ha2VzIGEgc3Vj
Y2Vzc2Z1bCBhc3NlcnRpb24gcmVzdWx0LgorQXNzZXJ0aW9uUmVzdWx0IEFzc2VydGlvblN1Y2Nl
c3MoKSB7CisgIHJldHVybiBBc3NlcnRpb25SZXN1bHQodHJ1ZSk7Cit9CisKKy8vIE1ha2VzIGEg
ZmFpbGVkIGFzc2VydGlvbiByZXN1bHQuCitBc3NlcnRpb25SZXN1bHQgQXNzZXJ0aW9uRmFpbHVy
ZSgpIHsKKyAgcmV0dXJuIEFzc2VydGlvblJlc3VsdChmYWxzZSk7Cit9CisKKy8vIE1ha2VzIGEg
ZmFpbGVkIGFzc2VydGlvbiByZXN1bHQgd2l0aCB0aGUgZ2l2ZW4gZmFpbHVyZSBtZXNzYWdlLgor
Ly8gRGVwcmVjYXRlZDsgdXNlIEFzc2VydGlvbkZhaWx1cmUoKSA8PCBtZXNzYWdlLgorQXNzZXJ0
aW9uUmVzdWx0IEFzc2VydGlvbkZhaWx1cmUoY29uc3QgTWVzc2FnZSYgbWVzc2FnZSkgeworICBy
ZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IG1lc3NhZ2U7Cit9CisKK25hbWVzcGFjZSBpbnRl
cm5hbCB7CisKK25hbWVzcGFjZSBlZGl0X2Rpc3RhbmNlIHsKK3N0ZDo6dmVjdG9yPEVkaXRUeXBl
PiBDYWxjdWxhdGVPcHRpbWFsRWRpdHMoY29uc3Qgc3RkOjp2ZWN0b3I8c2l6ZV90PiYgbGVmdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2
ZWN0b3I8c2l6ZV90PiYgcmlnaHQpIHsKKyAgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8ZG91Ymxl
PiA+IGNvc3RzKAorICAgICAgbGVmdC5zaXplKCkgKyAxLCBzdGQ6OnZlY3Rvcjxkb3VibGU+KHJp
Z2h0LnNpemUoKSArIDEpKTsKKyAgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8RWRpdFR5cGU+ID4g
YmVzdF9tb3ZlKAorICAgICAgbGVmdC5zaXplKCkgKyAxLCBzdGQ6OnZlY3RvcjxFZGl0VHlwZT4o
cmlnaHQuc2l6ZSgpICsgMSkpOworCisgIC8vIFBvcHVsYXRlIGZvciBlbXB0eSByaWdodC4KKyAg
Zm9yIChzaXplX3QgbF9pID0gMDsgbF9pIDwgY29zdHMuc2l6ZSgpOyArK2xfaSkgeworICAgIGNv
c3RzW2xfaV1bMF0gPSBzdGF0aWNfY2FzdDxkb3VibGU+KGxfaSk7CisgICAgYmVzdF9tb3ZlW2xf
aV1bMF0gPSBrUmVtb3ZlOworICB9CisgIC8vIFBvcHVsYXRlIGZvciBlbXB0eSBsZWZ0LgorICBm
b3IgKHNpemVfdCByX2kgPSAxOyByX2kgPCBjb3N0c1swXS5zaXplKCk7ICsrcl9pKSB7CisgICAg
Y29zdHNbMF1bcl9pXSA9IHN0YXRpY19jYXN0PGRvdWJsZT4ocl9pKTsKKyAgICBiZXN0X21vdmVb
MF1bcl9pXSA9IGtBZGQ7CisgIH0KKworICBmb3IgKHNpemVfdCBsX2kgPSAwOyBsX2kgPCBsZWZ0
LnNpemUoKTsgKytsX2kpIHsKKyAgICBmb3IgKHNpemVfdCByX2kgPSAwOyByX2kgPCByaWdodC5z
aXplKCk7ICsrcl9pKSB7CisgICAgICBpZiAobGVmdFtsX2ldID09IHJpZ2h0W3JfaV0pIHsKKyAg
ICAgICAgLy8gRm91bmQgYSBtYXRjaC4gQ29uc3VtZSBpdC4KKyAgICAgICAgY29zdHNbbF9pICsg
MV1bcl9pICsgMV0gPSBjb3N0c1tsX2ldW3JfaV07CisgICAgICAgIGJlc3RfbW92ZVtsX2kgKyAx
XVtyX2kgKyAxXSA9IGtNYXRjaDsKKyAgICAgICAgY29udGludWU7CisgICAgICB9CisKKyAgICAg
IGNvbnN0IGRvdWJsZSBhZGQgPSBjb3N0c1tsX2kgKyAxXVtyX2ldOworICAgICAgY29uc3QgZG91
YmxlIHJlbW92ZSA9IGNvc3RzW2xfaV1bcl9pICsgMV07CisgICAgICBjb25zdCBkb3VibGUgcmVw
bGFjZSA9IGNvc3RzW2xfaV1bcl9pXTsKKyAgICAgIGlmIChhZGQgPCByZW1vdmUgJiYgYWRkIDwg
cmVwbGFjZSkgeworICAgICAgICBjb3N0c1tsX2kgKyAxXVtyX2kgKyAxXSA9IGFkZCArIDE7Cisg
ICAgICAgIGJlc3RfbW92ZVtsX2kgKyAxXVtyX2kgKyAxXSA9IGtBZGQ7CisgICAgICB9IGVsc2Ug
aWYgKHJlbW92ZSA8IGFkZCAmJiByZW1vdmUgPCByZXBsYWNlKSB7CisgICAgICAgIGNvc3RzW2xf
aSArIDFdW3JfaSArIDFdID0gcmVtb3ZlICsgMTsKKyAgICAgICAgYmVzdF9tb3ZlW2xfaSArIDFd
W3JfaSArIDFdID0ga1JlbW92ZTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFdlIG1ha2Ug
cmVwbGFjZSBhIGxpdHRsZSBtb3JlIGV4cGVuc2l2ZSB0aGFuIGFkZC9yZW1vdmUgdG8gbG93ZXIK
KyAgICAgICAgLy8gdGhlaXIgcHJpb3JpdHkuCisgICAgICAgIGNvc3RzW2xfaSArIDFdW3JfaSAr
IDFdID0gcmVwbGFjZSArIDEuMDAwMDE7CisgICAgICAgIGJlc3RfbW92ZVtsX2kgKyAxXVtyX2kg
KyAxXSA9IGtSZXBsYWNlOworICAgICAgfQorICAgIH0KKyAgfQorCisgIC8vIFJlY29uc3RydWN0
IHRoZSBiZXN0IHBhdGguIFdlIGRvIGl0IGluIHJldmVyc2Ugb3JkZXIuCisgIHN0ZDo6dmVjdG9y
PEVkaXRUeXBlPiBiZXN0X3BhdGg7CisgIGZvciAoc2l6ZV90IGxfaSA9IGxlZnQuc2l6ZSgpLCBy
X2kgPSByaWdodC5zaXplKCk7IGxfaSA+IDAgfHwgcl9pID4gMDspIHsKKyAgICBFZGl0VHlwZSBt
b3ZlID0gYmVzdF9tb3ZlW2xfaV1bcl9pXTsKKyAgICBiZXN0X3BhdGgucHVzaF9iYWNrKG1vdmUp
OworICAgIGxfaSAtPSBtb3ZlICE9IGtBZGQ7CisgICAgcl9pIC09IG1vdmUgIT0ga1JlbW92ZTsK
KyAgfQorICBzdGQ6OnJldmVyc2UoYmVzdF9wYXRoLmJlZ2luKCksIGJlc3RfcGF0aC5lbmQoKSk7
CisgIHJldHVybiBiZXN0X3BhdGg7Cit9CisKK25hbWVzcGFjZSB7CisKKy8vIEhlbHBlciBjbGFz
cyB0byBjb252ZXJ0IHN0cmluZyBpbnRvIGlkcyB3aXRoIGRlZHVwbGljYXRpb24uCitjbGFzcyBJ
bnRlcm5hbFN0cmluZ3MgeworIHB1YmxpYzoKKyAgc2l6ZV90IEdldElkKGNvbnN0IHN0ZDo6c3Ry
aW5nJiBzdHIpIHsKKyAgICBJZE1hcDo6aXRlcmF0b3IgaXQgPSBpZHNfLmZpbmQoc3RyKTsKKyAg
ICBpZiAoaXQgIT0gaWRzXy5lbmQoKSkgcmV0dXJuIGl0LT5zZWNvbmQ7CisgICAgc2l6ZV90IGlk
ID0gaWRzXy5zaXplKCk7CisgICAgcmV0dXJuIGlkc19bc3RyXSA9IGlkOworICB9CisKKyBwcml2
YXRlOgorICB0eXBlZGVmIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBzaXplX3Q+IElkTWFwOworICBJ
ZE1hcCBpZHNfOworfTsKKworfSAgLy8gbmFtZXNwYWNlCisKK3N0ZDo6dmVjdG9yPEVkaXRUeXBl
PiBDYWxjdWxhdGVPcHRpbWFsRWRpdHMoCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJp
bmc+JiBsZWZ0LAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgcmlnaHQpIHsK
KyAgc3RkOjp2ZWN0b3I8c2l6ZV90PiBsZWZ0X2lkcywgcmlnaHRfaWRzOworICB7CisgICAgSW50
ZXJuYWxTdHJpbmdzIGludGVybl90YWJsZTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxl
ZnQuc2l6ZSgpOyArK2kpIHsKKyAgICAgIGxlZnRfaWRzLnB1c2hfYmFjayhpbnRlcm5fdGFibGUu
R2V0SWQobGVmdFtpXSkpOworICAgIH0KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJpZ2h0
LnNpemUoKTsgKytpKSB7CisgICAgICByaWdodF9pZHMucHVzaF9iYWNrKGludGVybl90YWJsZS5H
ZXRJZChyaWdodFtpXSkpOworICAgIH0KKyAgfQorICByZXR1cm4gQ2FsY3VsYXRlT3B0aW1hbEVk
aXRzKGxlZnRfaWRzLCByaWdodF9pZHMpOworfQorCituYW1lc3BhY2UgeworCisvLyBIZWxwZXIg
Y2xhc3MgdGhhdCBob2xkcyB0aGUgc3RhdGUgZm9yIG9uZSBodW5rIGFuZCBwcmludHMgaXQgb3V0
IHRvIHRoZQorLy8gc3RyZWFtLgorLy8gSXQgcmVvcmRlcnMgYWRkcy9yZW1vdmVzIHdoZW4gcG9z
c2libGUgdG8gZ3JvdXAgYWxsIHJlbW92ZXMgYmVmb3JlIGFsbAorLy8gYWRkcy4gSXQgYWxzbyBh
ZGRzIHRoZSBodW5rIGhlYWRlciBiZWZvcmUgcHJpbnRpbnQgaW50byB0aGUgc3RyZWFtLgorY2xh
c3MgSHVuayB7CisgcHVibGljOgorICBIdW5rKHNpemVfdCBsZWZ0X3N0YXJ0LCBzaXplX3Qgcmln
aHRfc3RhcnQpCisgICAgICA6IGxlZnRfc3RhcnRfKGxlZnRfc3RhcnQpLAorICAgICAgICByaWdo
dF9zdGFydF8ocmlnaHRfc3RhcnQpLAorICAgICAgICBhZGRzXygpLAorICAgICAgICByZW1vdmVz
XygpLAorICAgICAgICBjb21tb25fKCkge30KKworICB2b2lkIFB1c2hMaW5lKGNoYXIgZWRpdCwg
Y29uc3QgY2hhciogbGluZSkgeworICAgIHN3aXRjaCAoZWRpdCkgeworICAgICAgY2FzZSAnICc6
CisgICAgICAgICsrY29tbW9uXzsKKyAgICAgICAgRmx1c2hFZGl0cygpOworICAgICAgICBodW5r
Xy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoJyAnLCBsaW5lKSk7CisgICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSAnLSc6CisgICAgICAgICsrcmVtb3Zlc187CisgICAgICAgIGh1bmtfcmVtb3Zl
c18ucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKCctJywgbGluZSkpOworICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgJysnOgorICAgICAgICArK2FkZHNfOworICAgICAgICBodW5rX2FkZHNfLnB1
c2hfYmFjayhzdGQ6Om1ha2VfcGFpcignKycsIGxpbmUpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICB9CisKKyAgdm9pZCBQcmludFRvKHN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgICBQcmludEhl
YWRlcihvcyk7CisgICAgRmx1c2hFZGl0cygpOworICAgIGZvciAoc3RkOjpsaXN0PHN0ZDo6cGFp
cjxjaGFyLCBjb25zdCBjaGFyKj4gPjo6Y29uc3RfaXRlcmF0b3IgaXQgPQorICAgICAgICAgICAg
IGh1bmtfLmJlZ2luKCk7CisgICAgICAgICBpdCAhPSBodW5rXy5lbmQoKTsgKytpdCkgeworICAg
ICAgKm9zIDw8IGl0LT5maXJzdCA8PCBpdC0+c2Vjb25kIDw8ICJcbiI7CisgICAgfQorICB9CisK
KyAgYm9vbCBoYXNfZWRpdHMoKSBjb25zdCB7IHJldHVybiBhZGRzXyB8fCByZW1vdmVzXzsgfQor
CisgcHJpdmF0ZToKKyAgdm9pZCBGbHVzaEVkaXRzKCkgeworICAgIGh1bmtfLnNwbGljZShodW5r
Xy5lbmQoKSwgaHVua19yZW1vdmVzXyk7CisgICAgaHVua18uc3BsaWNlKGh1bmtfLmVuZCgpLCBo
dW5rX2FkZHNfKTsKKyAgfQorCisgIC8vIFByaW50IGEgdW5pZmllZCBkaWZmIGhlYWRlciBmb3Ig
b25lIGh1bmsuCisgIC8vIFRoZSBmb3JtYXQgaXMKKyAgLy8gICAiQEAgLTxsZWZ0X3N0YXJ0Piw8
bGVmdF9sZW5ndGg+ICs8cmlnaHRfc3RhcnQ+LDxyaWdodF9sZW5ndGg+IEBAIgorICAvLyB3aGVy
ZSB0aGUgbGVmdC9yaWdodCBwYXJ0cyBhcmUgb21taXR0ZWQgaWYgdW5uZWNlc3NhcnkuCisgIHZv
aWQgUHJpbnRIZWFkZXIoc3RkOjpvc3RyZWFtKiBzcykgY29uc3QgeworICAgICpzcyA8PCAiQEAg
IjsKKyAgICBpZiAocmVtb3Zlc18pIHsKKyAgICAgICpzcyA8PCAiLSIgPDwgbGVmdF9zdGFydF8g
PDwgIiwiIDw8IChyZW1vdmVzXyArIGNvbW1vbl8pOworICAgIH0KKyAgICBpZiAocmVtb3Zlc18g
JiYgYWRkc18pIHsKKyAgICAgICpzcyA8PCAiICI7CisgICAgfQorICAgIGlmIChhZGRzXykgewor
ICAgICAgKnNzIDw8ICIrIiA8PCByaWdodF9zdGFydF8gPDwgIiwiIDw8IChhZGRzXyArIGNvbW1v
bl8pOworICAgIH0KKyAgICAqc3MgPDwgIiBAQFxuIjsKKyAgfQorCisgIHNpemVfdCBsZWZ0X3N0
YXJ0XywgcmlnaHRfc3RhcnRfOworICBzaXplX3QgYWRkc18sIHJlbW92ZXNfLCBjb21tb25fOwor
ICBzdGQ6Omxpc3Q8c3RkOjpwYWlyPGNoYXIsIGNvbnN0IGNoYXIqPiA+IGh1bmtfLCBodW5rX2Fk
ZHNfLCBodW5rX3JlbW92ZXNfOworfTsKKworfSAgLy8gbmFtZXNwYWNlCisKKy8vIENyZWF0ZSBh
IGxpc3Qgb2YgZGlmZiBodW5rcyBpbiBVbmlmaWVkIGRpZmYgZm9ybWF0LgorLy8gRWFjaCBodW5r
IGhhcyBhIGhlYWRlciBnZW5lcmF0ZWQgYnkgUHJpbnRIZWFkZXIgYWJvdmUgcGx1cyBhIGJvZHkg
d2l0aAorLy8gbGluZXMgcHJlZml4ZWQgd2l0aCAnICcgZm9yIG5vIGNoYW5nZSwgJy0nIGZvciBk
ZWxldGlvbiBhbmQgJysnIGZvcgorLy8gYWRkaXRpb24uCisvLyAnY29udGV4dCcgcmVwcmVzZW50
cyB0aGUgZGVzaXJlZCB1bmNoYW5nZWQgcHJlZml4L3N1ZmZpeCBhcm91bmQgdGhlIGRpZmYuCisv
LyBJZiB0d28gaHVua3MgYXJlIGNsb3NlIGVub3VnaCB0aGF0IHRoZWlyIGNvbnRleHRzIG92ZXJs
YXAsIHRoZW4gdGhleSBhcmUKKy8vIGpvaW5lZCBpbnRvIG9uZSBodW5rLgorc3RkOjpzdHJpbmcg
Q3JlYXRlVW5pZmllZERpZmYoY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBsZWZ0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJp
bmc+JiByaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjb250ZXh0
KSB7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPEVkaXRUeXBlPiBlZGl0cyA9IENhbGN1bGF0ZU9wdGlt
YWxFZGl0cyhsZWZ0LCByaWdodCk7CisKKyAgc2l6ZV90IGxfaSA9IDAsIHJfaSA9IDAsIGVkaXRf
aSA9IDA7CisgIHN0ZDo6c3RyaW5nc3RyZWFtIHNzOworICB3aGlsZSAoZWRpdF9pIDwgZWRpdHMu
c2l6ZSgpKSB7CisgICAgLy8gRmluZCBmaXJzdCBlZGl0LgorICAgIHdoaWxlIChlZGl0X2kgPCBl
ZGl0cy5zaXplKCkgJiYgZWRpdHNbZWRpdF9pXSA9PSBrTWF0Y2gpIHsKKyAgICAgICsrbF9pOwor
ICAgICAgKytyX2k7CisgICAgICArK2VkaXRfaTsKKyAgICB9CisKKyAgICAvLyBGaW5kIHRoZSBm
aXJzdCBsaW5lIHRvIGluY2x1ZGUgaW4gdGhlIGh1bmsuCisgICAgY29uc3Qgc2l6ZV90IHByZWZp
eF9jb250ZXh0ID0gc3RkOjptaW4obF9pLCBjb250ZXh0KTsKKyAgICBIdW5rIGh1bmsobF9pIC0g
cHJlZml4X2NvbnRleHQgKyAxLCByX2kgLSBwcmVmaXhfY29udGV4dCArIDEpOworICAgIGZvciAo
c2l6ZV90IGkgPSBwcmVmaXhfY29udGV4dDsgaSA+IDA7IC0taSkgeworICAgICAgaHVuay5QdXNo
TGluZSgnICcsIGxlZnRbbF9pIC0gaV0uY19zdHIoKSk7CisgICAgfQorCisgICAgLy8gSXRlcmF0
ZSB0aGUgZWRpdHMgdW50aWwgd2UgZm91bmQgZW5vdWdoIHN1ZmZpeCBmb3IgdGhlIGh1bmsgb3Ig
dGhlIGlucHV0CisgICAgLy8gaXMgb3Zlci4KKyAgICBzaXplX3Qgbl9zdWZmaXggPSAwOworICAg
IGZvciAoOyBlZGl0X2kgPCBlZGl0cy5zaXplKCk7ICsrZWRpdF9pKSB7CisgICAgICBpZiAobl9z
dWZmaXggPj0gY29udGV4dCkgeworICAgICAgICAvLyBDb250aW51ZSBvbmx5IGlmIHRoZSBuZXh0
IGh1bmsgaXMgdmVyeSBjbG9zZS4KKyAgICAgICAgc3RkOjp2ZWN0b3I8RWRpdFR5cGU+Ojpjb25z
dF9pdGVyYXRvciBpdCA9IGVkaXRzLmJlZ2luKCkgKyBlZGl0X2k7CisgICAgICAgIHdoaWxlIChp
dCAhPSBlZGl0cy5lbmQoKSAmJiAqaXQgPT0ga01hdGNoKSArK2l0OworICAgICAgICBpZiAoaXQg
PT0gZWRpdHMuZW5kKCkgfHwgKGl0IC0gZWRpdHMuYmVnaW4oKSkgLSBlZGl0X2kgPj0gY29udGV4
dCkgeworICAgICAgICAgIC8vIFRoZXJlIGlzIG5vIG5leHQgZWRpdCBvciBpdCBpcyB0b28gZmFy
IGF3YXkuCisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgRWRp
dFR5cGUgZWRpdCA9IGVkaXRzW2VkaXRfaV07CisgICAgICAvLyBSZXNldCBjb3VudCB3aGVuIGEg
bm9uIG1hdGNoIGlzIGZvdW5kLgorICAgICAgbl9zdWZmaXggPSBlZGl0ID09IGtNYXRjaCA/IG5f
c3VmZml4ICsgMSA6IDA7CisKKyAgICAgIGlmIChlZGl0ID09IGtNYXRjaCB8fCBlZGl0ID09IGtS
ZW1vdmUgfHwgZWRpdCA9PSBrUmVwbGFjZSkgeworICAgICAgICBodW5rLlB1c2hMaW5lKGVkaXQg
PT0ga01hdGNoID8gJyAnIDogJy0nLCBsZWZ0W2xfaV0uY19zdHIoKSk7CisgICAgICB9CisgICAg
ICBpZiAoZWRpdCA9PSBrQWRkIHx8IGVkaXQgPT0ga1JlcGxhY2UpIHsKKyAgICAgICAgaHVuay5Q
dXNoTGluZSgnKycsIHJpZ2h0W3JfaV0uY19zdHIoKSk7CisgICAgICB9CisKKyAgICAgIC8vIEFk
dmFuY2UgaW5kaWNlcywgZGVwZW5kaW5nIG9uIGVkaXQgdHlwZS4KKyAgICAgIGxfaSArPSBlZGl0
ICE9IGtBZGQ7CisgICAgICByX2kgKz0gZWRpdCAhPSBrUmVtb3ZlOworICAgIH0KKworICAgIGlm
ICghaHVuay5oYXNfZWRpdHMoKSkgeworICAgICAgLy8gV2UgYXJlIGRvbmUuIFdlIGRvbid0IHdh
bnQgdGhpcyBodW5rLgorICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaHVuay5QcmludFRvKCZz
cyk7CisgIH0KKyAgcmV0dXJuIHNzLnN0cigpOworfQorCit9ICAvLyBuYW1lc3BhY2UgZWRpdF9k
aXN0YW5jZQorCituYW1lc3BhY2UgeworCisvLyBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9m
IHRoZSB2YWx1ZXMgcmVjZWl2ZWQgaW4gRXFGYWlsdXJlKCkgYXJlIGFscmVhZHkKKy8vIGVzY2Fw
ZWQuIFNwbGl0IHRoZW0gb24gZXNjYXBlZCAnXG4nIGJvdW5kYXJpZXMuIExlYXZlIGFsbCBvdGhl
ciBlc2NhcGVkCisvLyBjaGFyYWN0ZXJzIHRoZSBzYW1lLgorc3RkOjp2ZWN0b3I8c3RkOjpzdHJp
bmc+IFNwbGl0RXNjYXBlZFN0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgc3RyKSB7CisgIHN0ZDo6
dmVjdG9yPHN0ZDo6c3RyaW5nPiBsaW5lczsKKyAgc2l6ZV90IHN0YXJ0ID0gMCwgZW5kID0gc3Ry
LnNpemUoKTsKKyAgaWYgKGVuZCA+IDIgJiYgc3RyWzBdID09ICciJyAmJiBzdHJbZW5kIC0gMV0g
PT0gJyInKSB7CisgICAgKytzdGFydDsKKyAgICAtLWVuZDsKKyAgfQorICBib29sIGVzY2FwZWQg
PSBmYWxzZTsKKyAgZm9yIChzaXplX3QgaSA9IHN0YXJ0OyBpICsgMSA8IGVuZDsgKytpKSB7Cisg
ICAgaWYgKGVzY2FwZWQpIHsKKyAgICAgIGVzY2FwZWQgPSBmYWxzZTsKKyAgICAgIGlmIChzdHJb
aV0gPT0gJ24nKSB7CisgICAgICAgIGxpbmVzLnB1c2hfYmFjayhzdHIuc3Vic3RyKHN0YXJ0LCBp
IC0gc3RhcnQgLSAxKSk7CisgICAgICAgIHN0YXJ0ID0gaSArIDE7CisgICAgICB9CisgICAgfSBl
bHNlIHsKKyAgICAgIGVzY2FwZWQgPSBzdHJbaV0gPT0gJ1xcJzsKKyAgICB9CisgIH0KKyAgbGlu
ZXMucHVzaF9iYWNrKHN0ci5zdWJzdHIoc3RhcnQsIGVuZCAtIHN0YXJ0KSk7CisgIHJldHVybiBs
aW5lczsKK30KKworfSAgLy8gbmFtZXNwYWNlCisKKy8vIENvbnN0cnVjdHMgYW5kIHJldHVybnMg
dGhlIG1lc3NhZ2UgZm9yIGFuIGVxdWFsaXR5IGFzc2VydGlvbgorLy8gKGUuZy4gQVNTRVJUX0VR
LCBFWFBFQ1RfU1RSRVEsIGV0YykgZmFpbHVyZS4KKy8vCisvLyBUaGUgZmlyc3QgZm91ciBwYXJh
bWV0ZXJzIGFyZSB0aGUgZXhwcmVzc2lvbnMgdXNlZCBpbiB0aGUgYXNzZXJ0aW9uCisvLyBhbmQg
dGhlaXIgdmFsdWVzLCBhcyBzdHJpbmdzLiAgRm9yIGV4YW1wbGUsIGZvciBBU1NFUlRfRVEoZm9v
LCBiYXIpCisvLyB3aGVyZSBmb28gaXMgNSBhbmQgYmFyIGlzIDYsIHdlIGhhdmU6CisvLworLy8g
ICBsaHNfZXhwcmVzc2lvbjogImZvbyIKKy8vICAgcmhzX2V4cHJlc3Npb246ICJiYXIiCisvLyAg
IGxoc192YWx1ZTogICAgICAiNSIKKy8vICAgcmhzX3ZhbHVlOiAgICAgICI2IgorLy8KKy8vIFRo
ZSBpZ25vcmluZ19jYXNlIHBhcmFtZXRlciBpcyB0cnVlIGlmZiB0aGUgYXNzZXJ0aW9uIGlzIGEK
Ky8vICpfU1RSQ0FTRUVRKi4gIFdoZW4gaXQncyB0cnVlLCB0aGUgc3RyaW5nICJJZ25vcmluZyBj
YXNlIiB3aWxsCisvLyBiZSBpbnNlcnRlZCBpbnRvIHRoZSBtZXNzYWdlLgorQXNzZXJ0aW9uUmVz
dWx0IEVxRmFpbHVyZShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBsaHNfdmFsdWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiByaHNfdmFsdWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgaWdub3JpbmdfY2FzZSkgeworICBNZXNzYWdlIG1zZzsKKyAgbXNnIDw8
ICIgICAgICBFeHBlY3RlZDogIiA8PCBsaHNfZXhwcmVzc2lvbjsKKyAgaWYgKGxoc192YWx1ZSAh
PSBsaHNfZXhwcmVzc2lvbikgeworICAgIG1zZyA8PCAiXG4gICAgICBXaGljaCBpczogIiA8PCBs
aHNfdmFsdWU7CisgIH0KKyAgbXNnIDw8ICJcblRvIGJlIGVxdWFsIHRvOiAiIDw8IHJoc19leHBy
ZXNzaW9uOworICBpZiAocmhzX3ZhbHVlICE9IHJoc19leHByZXNzaW9uKSB7CisgICAgbXNnIDw8
ICJcbiAgICAgIFdoaWNoIGlzOiAiIDw8IHJoc192YWx1ZTsKKyAgfQorCisgIGlmIChpZ25vcmlu
Z19jYXNlKSB7CisgICAgbXNnIDw8ICJcbklnbm9yaW5nIGNhc2UiOworICB9CisKKyAgaWYgKCFs
aHNfdmFsdWUuZW1wdHkoKSAmJiAhcmhzX3ZhbHVlLmVtcHR5KCkpIHsKKyAgICBjb25zdCBzdGQ6
OnZlY3RvcjxzdGQ6OnN0cmluZz4gbGhzX2xpbmVzID0KKyAgICAgICAgU3BsaXRFc2NhcGVkU3Ry
aW5nKGxoc192YWx1ZSk7CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHJoc19s
aW5lcyA9CisgICAgICAgIFNwbGl0RXNjYXBlZFN0cmluZyhyaHNfdmFsdWUpOworICAgIGlmIChs
aHNfbGluZXMuc2l6ZSgpID4gMSB8fCByaHNfbGluZXMuc2l6ZSgpID4gMSkgeworICAgICAgbXNn
IDw8ICJcbldpdGggZGlmZjpcbiIKKyAgICAgICAgICA8PCBlZGl0X2Rpc3RhbmNlOjpDcmVhdGVV
bmlmaWVkRGlmZihsaHNfbGluZXMsIHJoc19saW5lcyk7CisgICAgfQorICB9CisKKyAgcmV0dXJu
IEFzc2VydGlvbkZhaWx1cmUoKSA8PCBtc2c7Cit9CisKKy8vIENvbnN0cnVjdHMgYSBmYWlsdXJl
IG1lc3NhZ2UgZm9yIEJvb2xlYW4gYXNzZXJ0aW9ucyBzdWNoIGFzIEVYUEVDVF9UUlVFLgorc3Rk
OjpzdHJpbmcgR2V0Qm9vbEFzc2VydGlvbkZhaWx1cmVNZXNzYWdlKAorICAgIGNvbnN0IEFzc2Vy
dGlvblJlc3VsdCYgYXNzZXJ0aW9uX3Jlc3VsdCwKKyAgICBjb25zdCBjaGFyKiBleHByZXNzaW9u
X3RleHQsCisgICAgY29uc3QgY2hhciogYWN0dWFsX3ByZWRpY2F0ZV92YWx1ZSwKKyAgICBjb25z
dCBjaGFyKiBleHBlY3RlZF9wcmVkaWNhdGVfdmFsdWUpIHsKKyAgY29uc3QgY2hhciogYWN0dWFs
X21lc3NhZ2UgPSBhc3NlcnRpb25fcmVzdWx0Lm1lc3NhZ2UoKTsKKyAgTWVzc2FnZSBtc2c7Cisg
IG1zZyA8PCAiVmFsdWUgb2Y6ICIgPDwgZXhwcmVzc2lvbl90ZXh0CisgICAgICA8PCAiXG4gIEFj
dHVhbDogIiA8PCBhY3R1YWxfcHJlZGljYXRlX3ZhbHVlOworICBpZiAoYWN0dWFsX21lc3NhZ2Vb
MF0gIT0gJ1wwJykKKyAgICBtc2cgPDwgIiAoIiA8PCBhY3R1YWxfbWVzc2FnZSA8PCAiKSI7Cisg
IG1zZyA8PCAiXG5FeHBlY3RlZDogIiA8PCBleHBlY3RlZF9wcmVkaWNhdGVfdmFsdWU7CisgIHJl
dHVybiBtc2cuR2V0U3RyaW5nKCk7Cit9CisKKy8vIEhlbHBlciBmdW5jdGlvbiBmb3IgaW1wbGVt
ZW50aW5nIEFTU0VSVF9ORUFSLgorQXNzZXJ0aW9uUmVzdWx0IERvdWJsZU5lYXJQcmVkRm9ybWF0
KGNvbnN0IGNoYXIqIGV4cHIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIGV4cHIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIGFic19lcnJvcl9leHByLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRvdWJsZSB2YWwxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRvdWJsZSB2YWwyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRv
dWJsZSBhYnNfZXJyb3IpIHsKKyAgY29uc3QgZG91YmxlIGRpZmYgPSBmYWJzKHZhbDEgLSB2YWwy
KTsKKyAgaWYgKGRpZmYgPD0gYWJzX2Vycm9yKSByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwor
CisgIC8vIFRPRE8od2FuKTogZG8gbm90IHByaW50IHRoZSB2YWx1ZSBvZiBhbiBleHByZXNzaW9u
IGlmIGl0J3MKKyAgLy8gYWxyZWFkeSBhIGxpdGVyYWwuCisgIHJldHVybiBBc3NlcnRpb25GYWls
dXJlKCkKKyAgICAgIDw8ICJUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuICIgPDwgZXhwcjEgPDwgIiBh
bmQgIiA8PCBleHByMgorICAgICAgPDwgIiBpcyAiIDw8IGRpZmYgPDwgIiwgd2hpY2ggZXhjZWVk
cyAiIDw8IGFic19lcnJvcl9leHByIDw8ICIsIHdoZXJlXG4iCisgICAgICA8PCBleHByMSA8PCAi
IGV2YWx1YXRlcyB0byAiIDw8IHZhbDEgPDwgIixcbiIKKyAgICAgIDw8IGV4cHIyIDw8ICIgZXZh
bHVhdGVzIHRvICIgPDwgdmFsMiA8PCAiLCBhbmRcbiIKKyAgICAgIDw8IGFic19lcnJvcl9leHBy
IDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgYWJzX2Vycm9yIDw8ICIuIjsKK30KKworCisvLyBIZWxw
ZXIgdGVtcGxhdGUgZm9yIGltcGxlbWVudGluZyBGbG9hdExFKCkgYW5kIERvdWJsZUxFKCkuCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgUmF3VHlwZT4KK0Fzc2VydGlvblJlc3VsdCBGbG9hdGluZ1BvaW50
TEUoY29uc3QgY2hhciogZXhwcjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIGV4cHIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYXdUeXBl
IHZhbDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJhd1R5cGUgdmFsMikgewor
ICAvLyBSZXR1cm5zIHN1Y2Nlc3MgaWYgdmFsMSBpcyBsZXNzIHRoYW4gdmFsMiwKKyAgaWYgKHZh
bDEgPCB2YWwyKSB7CisgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKKyAgfQorCisgIC8v
IG9yIGlmIHZhbDEgaXMgYWxtb3N0IGVxdWFsIHRvIHZhbDIuCisgIGNvbnN0IEZsb2F0aW5nUG9p
bnQ8UmF3VHlwZT4gbGhzKHZhbDEpLCByaHModmFsMik7CisgIGlmIChsaHMuQWxtb3N0RXF1YWxz
KHJocykpIHsKKyAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOworICB9CisKKyAgLy8gTm90
ZSB0aGF0IHRoZSBhYm92ZSB0d28gY2hlY2tzIHdpbGwgYm90aCBmYWlsIGlmIGVpdGhlciB2YWwx
IG9yCisgIC8vIHZhbDIgaXMgTmFOLCBhcyB0aGUgSUVFRSBmbG9hdGluZy1wb2ludCBzdGFuZGFy
ZCByZXF1aXJlcyB0aGF0CisgIC8vIGFueSBwcmVkaWNhdGUgaW52b2x2aW5nIGEgTmFOIG11c3Qg
cmV0dXJuIGZhbHNlLgorCisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gdmFsMV9zczsKKyAgdmFsMV9z
cyA8PCBzdGQ6OnNldHByZWNpc2lvbihzdGQ6Om51bWVyaWNfbGltaXRzPFJhd1R5cGU+OjpkaWdp
dHMxMCArIDIpCisgICAgICAgICAgPDwgdmFsMTsKKworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHZh
bDJfc3M7CisgIHZhbDJfc3MgPDwgc3RkOjpzZXRwcmVjaXNpb24oc3RkOjpudW1lcmljX2xpbWl0
czxSYXdUeXBlPjo6ZGlnaXRzMTAgKyAyKQorICAgICAgICAgIDw8IHZhbDI7CisKKyAgcmV0dXJu
IEFzc2VydGlvbkZhaWx1cmUoKQorICAgICAgPDwgIkV4cGVjdGVkOiAoIiA8PCBleHByMSA8PCAi
KSA8PSAoIiA8PCBleHByMiA8PCAiKVxuIgorICAgICAgPDwgIiAgQWN0dWFsOiAiIDw8IFN0cmlu
Z1N0cmVhbVRvU3RyaW5nKCZ2YWwxX3NzKSA8PCAiIHZzICIKKyAgICAgIDw8IFN0cmluZ1N0cmVh
bVRvU3RyaW5nKCZ2YWwyX3NzKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCisKKy8v
IEFzc2VydHMgdGhhdCB2YWwxIGlzIGxlc3MgdGhhbiwgb3IgYWxtb3N0IGVxdWFsIHRvLCB2YWwy
LiAgRmFpbHMKKy8vIG90aGVyd2lzZS4gIEluIHBhcnRpY3VsYXIsIGl0IGZhaWxzIGlmIGVpdGhl
ciB2YWwxIG9yIHZhbDIgaXMgTmFOLgorQXNzZXJ0aW9uUmVzdWx0IEZsb2F0TEUoY29uc3QgY2hh
ciogZXhwcjEsIGNvbnN0IGNoYXIqIGV4cHIyLAorICAgICAgICAgICAgICAgICAgICAgICAgZmxv
YXQgdmFsMSwgZmxvYXQgdmFsMikgeworICByZXR1cm4gaW50ZXJuYWw6OkZsb2F0aW5nUG9pbnRM
RTxmbG9hdD4oZXhwcjEsIGV4cHIyLCB2YWwxLCB2YWwyKTsKK30KKworLy8gQXNzZXJ0cyB0aGF0
IHZhbDEgaXMgbGVzcyB0aGFuLCBvciBhbG1vc3QgZXF1YWwgdG8sIHZhbDIuICBGYWlscworLy8g
b3RoZXJ3aXNlLiAgSW4gcGFydGljdWxhciwgaXQgZmFpbHMgaWYgZWl0aGVyIHZhbDEgb3IgdmFs
MiBpcyBOYU4uCitBc3NlcnRpb25SZXN1bHQgRG91YmxlTEUoY29uc3QgY2hhciogZXhwcjEsIGNv
bnN0IGNoYXIqIGV4cHIyLAorICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSB2YWwxLCBk
b3VibGUgdmFsMikgeworICByZXR1cm4gaW50ZXJuYWw6OkZsb2F0aW5nUG9pbnRMRTxkb3VibGU+
KGV4cHIxLCBleHByMiwgdmFsMSwgdmFsMik7Cit9CisKK25hbWVzcGFjZSBpbnRlcm5hbCB7CisK
Ky8vIFRoZSBoZWxwZXIgZnVuY3Rpb24gZm9yIHtBU1NFUlR8RVhQRUNUfV9FUSB3aXRoIGludCBv
ciBlbnVtCisvLyBhcmd1bWVudHMuCitBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyRVEoY29uc3Qg
Y2hhciogbGhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlnZ2Vz
dEludCBsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlnZ2VzdEludCByaHMpIHsK
KyAgaWYgKGxocyA9PSByaHMpIHsKKyAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOworICB9
CisKKyAgcmV0dXJuIEVxRmFpbHVyZShsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAg
ICByaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29u
RmFpbHVyZU1lc3NhZ2UobGhzLCByaHMpLAorICAgICAgICAgICAgICAgICAgIEZvcm1hdEZvckNv
bXBhcmlzb25GYWlsdXJlTWVzc2FnZShyaHMsIGxocyksCisgICAgICAgICAgICAgICAgICAgZmFs
c2UpOworfQorCisvLyBBIG1hY3JvIGZvciBpbXBsZW1lbnRpbmcgdGhlIGhlbHBlciBmdW5jdGlv
bnMgbmVlZGVkIHRvIGltcGxlbWVudAorLy8gQVNTRVJUXz8/IGFuZCBFWFBFQ1RfPz8gd2l0aCBp
bnRlZ2VyIG9yIGVudW0gYXJndW1lbnRzLiAgSXQgaXMgaGVyZQorLy8ganVzdCB0byBhdm9pZCBj
b3B5LWFuZC1wYXN0ZSBvZiBzaW1pbGFyIGNvZGUuCisjZGVmaW5lIEdURVNUX0lNUExfQ01QX0hF
TFBFUl8ob3BfbmFtZSwgb3ApXAorQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlciMjb3BfbmFtZShj
b25zdCBjaGFyKiBleHByMSwgY29uc3QgY2hhciogZXhwcjIsIFwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQmlnZ2VzdEludCB2YWwxLCBCaWdnZXN0SW50IHZhbDIpIHtcCisg
IGlmICh2YWwxIG9wIHZhbDIpIHtcCisgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTtcCisg
IH0gZWxzZSB7XAorICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgXAorICAgICAgICA8PCAi
RXhwZWN0ZWQ6ICgiIDw8IGV4cHIxIDw8ICIpICIgI29wICIgKCIgPDwgZXhwcjJcCisgICAgICAg
IDw8ICIpLCBhY3R1YWw6ICIgPDwgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHZh
bDEsIHZhbDIpXAorICAgICAgICA8PCAiIHZzICIgPDwgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1
cmVNZXNzYWdlKHZhbDIsIHZhbDEpO1wKKyAgfVwKK30KKworLy8gSW1wbGVtZW50cyB0aGUgaGVs
cGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1fTkUgd2l0aCBpbnQgb3IKKy8vIGVudW0g
YXJndW1lbnRzLgorR1RFU1RfSU1QTF9DTVBfSEVMUEVSXyhORSwgIT0pCisvLyBJbXBsZW1lbnRz
IHRoZSBoZWxwZXIgZnVuY3Rpb24gZm9yIHtBU1NFUlR8RVhQRUNUfV9MRSB3aXRoIGludCBvcgor
Ly8gZW51bSBhcmd1bWVudHMuCitHVEVTVF9JTVBMX0NNUF9IRUxQRVJfKExFLCA8PSkKKy8vIElt
cGxlbWVudHMgdGhlIGhlbHBlciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxFWFBFQ1R9X0xUIHdpdGgg
aW50IG9yCisvLyBlbnVtIGFyZ3VtZW50cy4KK0dURVNUX0lNUExfQ01QX0hFTFBFUl8oTFQsIDwg
KQorLy8gSW1wbGVtZW50cyB0aGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1f
R0Ugd2l0aCBpbnQgb3IKKy8vIGVudW0gYXJndW1lbnRzLgorR1RFU1RfSU1QTF9DTVBfSEVMUEVS
XyhHRSwgPj0pCisvLyBJbXBsZW1lbnRzIHRoZSBoZWxwZXIgZnVuY3Rpb24gZm9yIHtBU1NFUlR8
RVhQRUNUfV9HVCB3aXRoIGludCBvcgorLy8gZW51bSBhcmd1bWVudHMuCitHVEVTVF9JTVBMX0NN
UF9IRUxQRVJfKEdULCA+ICkKKworI3VuZGVmIEdURVNUX0lNUExfQ01QX0hFTFBFUl8KKworLy8g
VGhlIGhlbHBlciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxFWFBFQ1R9X1NUUkVRLgorQXNzZXJ0aW9u
UmVzdWx0IENtcEhlbHBlclNUUkVRKGNvbnN0IGNoYXIqIGxoc19leHByZXNzaW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGxocywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiByaHMpIHsKKyAgaWYgKFN0cmluZzo6Q1N0
cmluZ0VxdWFscyhsaHMsIHJocykpIHsKKyAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwor
ICB9CisKKyAgcmV0dXJuIEVxRmFpbHVyZShsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAg
ICAgICByaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICBQcmludFRvU3RyaW5nKGxo
cyksCisgICAgICAgICAgICAgICAgICAgUHJpbnRUb1N0cmluZyhyaHMpLAorICAgICAgICAgICAg
ICAgICAgIGZhbHNlKTsKK30KKworLy8gVGhlIGhlbHBlciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxF
WFBFQ1R9X1NUUkNBU0VFUS4KK0Fzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJTVFJDQVNFRVEoY29u
c3QgY2hhciogbGhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiBsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIHJocykgeworICBpZiAoU3RyaW5nOjpDYXNlSW5zZW5zaXRpdmVD
U3RyaW5nRXF1YWxzKGxocywgcmhzKSkgeworICAgIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7
CisgIH0KKworICByZXR1cm4gRXFGYWlsdXJlKGxoc19leHByZXNzaW9uLAorICAgICAgICAgICAg
ICAgICAgIHJoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgIFByaW50VG9TdHJpbmco
bGhzKSwKKyAgICAgICAgICAgICAgICAgICBQcmludFRvU3RyaW5nKHJocyksCisgICAgICAgICAg
ICAgICAgICAgdHJ1ZSk7Cit9CisKKy8vIFRoZSBoZWxwZXIgZnVuY3Rpb24gZm9yIHtBU1NFUlR8
RVhQRUNUfV9TVFJORS4KK0Fzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJTVFJORShjb25zdCBjaGFy
KiBzMV9leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIHMyX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogczEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczIp
IHsKKyAgaWYgKCFTdHJpbmc6OkNTdHJpbmdFcXVhbHMoczEsIHMyKSkgeworICAgIHJldHVybiBB
c3NlcnRpb25TdWNjZXNzKCk7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1
cmUoKSA8PCAiRXhwZWN0ZWQ6ICgiIDw8IHMxX2V4cHJlc3Npb24gPDwgIikgIT0gKCIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHMyX2V4cHJlc3Npb24gPDwgIiksIGFjdHVhbDog
XCIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBzMSA8PCAiXCIgdnMgXCIiIDw8
IHMyIDw8ICJcIiI7CisgIH0KK30KKworLy8gVGhlIGhlbHBlciBmdW5jdGlvbiBmb3Ige0FTU0VS
VHxFWFBFQ1R9X1NUUkNBU0VORS4KK0Fzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJTVFJDQVNFTkUo
Y29uc3QgY2hhciogczFfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogczJfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogczEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIHMyKSB7CisgIGlmICghU3RyaW5nOjpDYXNlSW5zZW5zaXRpdmVD
U3RyaW5nRXF1YWxzKHMxLCBzMikpIHsKKyAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwor
ICB9IGVsc2UgeworICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkKKyAgICAgICAgPDwgIkV4
cGVjdGVkOiAoIiA8PCBzMV9leHByZXNzaW9uIDw8ICIpICE9ICgiCisgICAgICAgIDw8IHMyX2V4
cHJlc3Npb24gPDwgIikgKGlnbm9yaW5nIGNhc2UpLCBhY3R1YWw6IFwiIgorICAgICAgICA8PCBz
MSA8PCAiXCIgdnMgXCIiIDw8IHMyIDw8ICJcIiI7CisgIH0KK30KKworfSAgLy8gbmFtZXNwYWNl
IGludGVybmFsCisKK25hbWVzcGFjZSB7CisKKy8vIEhlbHBlciBmdW5jdGlvbnMgZm9yIGltcGxl
bWVudGluZyBJc1N1YlN0cmluZygpIGFuZCBJc05vdFN1YnN0cmluZygpLgorCisvLyBUaGlzIGdy
b3VwIG9mIG92ZXJsb2FkZWQgZnVuY3Rpb25zIHJldHVybiB0cnVlIGlmZiBuZWVkbGUgaXMgYQor
Ly8gc3Vic3RyaW5nIG9mIGhheXN0YWNrLiAgTlVMTCBpcyBjb25zaWRlcmVkIGEgc3Vic3RyaW5n
IG9mIGl0c2VsZgorLy8gb25seS4KKworYm9vbCBJc1N1YnN0cmluZ1ByZWQoY29uc3QgY2hhciog
bmVlZGxlLCBjb25zdCBjaGFyKiBoYXlzdGFjaykgeworICBpZiAobmVlZGxlID09IE5VTEwgfHwg
aGF5c3RhY2sgPT0gTlVMTCkKKyAgICByZXR1cm4gbmVlZGxlID09IGhheXN0YWNrOworCisgIHJl
dHVybiBzdHJzdHIoaGF5c3RhY2ssIG5lZWRsZSkgIT0gTlVMTDsKK30KKworYm9vbCBJc1N1YnN0
cmluZ1ByZWQoY29uc3Qgd2NoYXJfdCogbmVlZGxlLCBjb25zdCB3Y2hhcl90KiBoYXlzdGFjaykg
eworICBpZiAobmVlZGxlID09IE5VTEwgfHwgaGF5c3RhY2sgPT0gTlVMTCkKKyAgICByZXR1cm4g
bmVlZGxlID09IGhheXN0YWNrOworCisgIHJldHVybiB3Y3NzdHIoaGF5c3RhY2ssIG5lZWRsZSkg
IT0gTlVMTDsKK30KKworLy8gU3RyaW5nVHlwZSBoZXJlIGNhbiBiZSBlaXRoZXIgOjpzdGQ6OnN0
cmluZyBvciA6OnN0ZDo6d3N0cmluZy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBTdHJpbmdUeXBlPgor
Ym9vbCBJc1N1YnN0cmluZ1ByZWQoY29uc3QgU3RyaW5nVHlwZSYgbmVlZGxlLAorICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgU3RyaW5nVHlwZSYgaGF5c3RhY2spIHsKKyAgcmV0dXJuIGhheXN0
YWNrLmZpbmQobmVlZGxlKSAhPSBTdHJpbmdUeXBlOjpucG9zOworfQorCisvLyBUaGlzIGZ1bmN0
aW9uIGltcGxlbWVudHMgZWl0aGVyIElzU3Vic3RyaW5nKCkgb3IgSXNOb3RTdWJzdHJpbmcoKSwK
Ky8vIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgdGhlIGV4cGVjdGVkX3RvX2JlX3N1YnN0cmlu
ZyBwYXJhbWV0ZXIuCisvLyBTdHJpbmdUeXBlIGhlcmUgY2FuIGJlIGNvbnN0IGNoYXIqLCBjb25z
dCB3Y2hhcl90KiwgOjpzdGQ6OnN0cmluZywKKy8vIG9yIDo6c3RkOjp3c3RyaW5nLgordGVtcGxh
dGUgPHR5cGVuYW1lIFN0cmluZ1R5cGU+CitBc3NlcnRpb25SZXN1bHQgSXNTdWJzdHJpbmdJbXBs
KAorICAgIGJvb2wgZXhwZWN0ZWRfdG9fYmVfc3Vic3RyaW5nLAorICAgIGNvbnN0IGNoYXIqIG5l
ZWRsZV9leHByLCBjb25zdCBjaGFyKiBoYXlzdGFja19leHByLAorICAgIGNvbnN0IFN0cmluZ1R5
cGUmIG5lZWRsZSwgY29uc3QgU3RyaW5nVHlwZSYgaGF5c3RhY2spIHsKKyAgaWYgKElzU3Vic3Ry
aW5nUHJlZChuZWVkbGUsIGhheXN0YWNrKSA9PSBleHBlY3RlZF90b19iZV9zdWJzdHJpbmcpCisg
ICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKKworICBjb25zdCBib29sIGlzX3dpZGVfc3Ry
aW5nID0gc2l6ZW9mKG5lZWRsZVswXSkgPiAxOworICBjb25zdCBjaGFyKiBjb25zdCBiZWdpbl9z
dHJpbmdfcXVvdGUgPSBpc193aWRlX3N0cmluZyA/ICJMXCIiIDogIlwiIjsKKyAgcmV0dXJuIEFz
c2VydGlvbkZhaWx1cmUoKQorICAgICAgPDwgIlZhbHVlIG9mOiAiIDw8IG5lZWRsZV9leHByIDw8
ICJcbiIKKyAgICAgIDw8ICIgIEFjdHVhbDogIiA8PCBiZWdpbl9zdHJpbmdfcXVvdGUgPDwgbmVl
ZGxlIDw8ICJcIlxuIgorICAgICAgPDwgIkV4cGVjdGVkOiAiIDw8IChleHBlY3RlZF90b19iZV9z
dWJzdHJpbmcgPyAiIiA6ICJub3QgIikKKyAgICAgIDw8ICJhIHN1YnN0cmluZyBvZiAiIDw8IGhh
eXN0YWNrX2V4cHIgPDwgIlxuIgorICAgICAgPDwgIldoaWNoIGlzOiAiIDw8IGJlZ2luX3N0cmlu
Z19xdW90ZSA8PCBoYXlzdGFjayA8PCAiXCIiOworfQorCit9ICAvLyBuYW1lc3BhY2UKKworLy8g
SXNTdWJzdHJpbmcoKSBhbmQgSXNOb3RTdWJzdHJpbmcoKSBjaGVjayB3aGV0aGVyIG5lZWRsZSBp
cyBhCisvLyBzdWJzdHJpbmcgb2YgaGF5c3RhY2sgKE5VTEwgaXMgY29uc2lkZXJlZCBhIHN1YnN0
cmluZyBvZiBpdHNlbGYKKy8vIG9ubHkpLCBhbmQgcmV0dXJuIGFuIGFwcHJvcHJpYXRlIGVycm9y
IG1lc3NhZ2Ugd2hlbiB0aGV5IGZhaWwuCisKK0Fzc2VydGlvblJlc3VsdCBJc1N1YnN0cmluZygK
KyAgICBjb25zdCBjaGFyKiBuZWVkbGVfZXhwciwgY29uc3QgY2hhciogaGF5c3RhY2tfZXhwciwK
KyAgICBjb25zdCBjaGFyKiBuZWVkbGUsIGNvbnN0IGNoYXIqIGhheXN0YWNrKSB7CisgIHJldHVy
biBJc1N1YnN0cmluZ0ltcGwodHJ1ZSwgbmVlZGxlX2V4cHIsIGhheXN0YWNrX2V4cHIsIG5lZWRs
ZSwgaGF5c3RhY2spOworfQorCitBc3NlcnRpb25SZXN1bHQgSXNTdWJzdHJpbmcoCisgICAgY29u
c3QgY2hhciogbmVlZGxlX2V4cHIsIGNvbnN0IGNoYXIqIGhheXN0YWNrX2V4cHIsCisgICAgY29u
c3Qgd2NoYXJfdCogbmVlZGxlLCBjb25zdCB3Y2hhcl90KiBoYXlzdGFjaykgeworICByZXR1cm4g
SXNTdWJzdHJpbmdJbXBsKHRydWUsIG5lZWRsZV9leHByLCBoYXlzdGFja19leHByLCBuZWVkbGUs
IGhheXN0YWNrKTsKK30KKworQXNzZXJ0aW9uUmVzdWx0IElzTm90U3Vic3RyaW5nKAorICAgIGNv
bnN0IGNoYXIqIG5lZWRsZV9leHByLCBjb25zdCBjaGFyKiBoYXlzdGFja19leHByLAorICAgIGNv
bnN0IGNoYXIqIG5lZWRsZSwgY29uc3QgY2hhciogaGF5c3RhY2spIHsKKyAgcmV0dXJuIElzU3Vi
c3RyaW5nSW1wbChmYWxzZSwgbmVlZGxlX2V4cHIsIGhheXN0YWNrX2V4cHIsIG5lZWRsZSwgaGF5
c3RhY2spOworfQorCitBc3NlcnRpb25SZXN1bHQgSXNOb3RTdWJzdHJpbmcoCisgICAgY29uc3Qg
Y2hhciogbmVlZGxlX2V4cHIsIGNvbnN0IGNoYXIqIGhheXN0YWNrX2V4cHIsCisgICAgY29uc3Qg
d2NoYXJfdCogbmVlZGxlLCBjb25zdCB3Y2hhcl90KiBoYXlzdGFjaykgeworICByZXR1cm4gSXNT
dWJzdHJpbmdJbXBsKGZhbHNlLCBuZWVkbGVfZXhwciwgaGF5c3RhY2tfZXhwciwgbmVlZGxlLCBo
YXlzdGFjayk7Cit9CisKK0Fzc2VydGlvblJlc3VsdCBJc1N1YnN0cmluZygKKyAgICBjb25zdCBj
aGFyKiBuZWVkbGVfZXhwciwgY29uc3QgY2hhciogaGF5c3RhY2tfZXhwciwKKyAgICBjb25zdCA6
OnN0ZDo6c3RyaW5nJiBuZWVkbGUsIGNvbnN0IDo6c3RkOjpzdHJpbmcmIGhheXN0YWNrKSB7Cisg
IHJldHVybiBJc1N1YnN0cmluZ0ltcGwodHJ1ZSwgbmVlZGxlX2V4cHIsIGhheXN0YWNrX2V4cHIs
IG5lZWRsZSwgaGF5c3RhY2spOworfQorCitBc3NlcnRpb25SZXN1bHQgSXNOb3RTdWJzdHJpbmco
CisgICAgY29uc3QgY2hhciogbmVlZGxlX2V4cHIsIGNvbnN0IGNoYXIqIGhheXN0YWNrX2V4cHIs
CisgICAgY29uc3QgOjpzdGQ6OnN0cmluZyYgbmVlZGxlLCBjb25zdCA6OnN0ZDo6c3RyaW5nJiBo
YXlzdGFjaykgeworICByZXR1cm4gSXNTdWJzdHJpbmdJbXBsKGZhbHNlLCBuZWVkbGVfZXhwciwg
aGF5c3RhY2tfZXhwciwgbmVlZGxlLCBoYXlzdGFjayk7Cit9CisKKyNpZiBHVEVTVF9IQVNfU1RE
X1dTVFJJTkcKK0Fzc2VydGlvblJlc3VsdCBJc1N1YnN0cmluZygKKyAgICBjb25zdCBjaGFyKiBu
ZWVkbGVfZXhwciwgY29uc3QgY2hhciogaGF5c3RhY2tfZXhwciwKKyAgICBjb25zdCA6OnN0ZDo6
d3N0cmluZyYgbmVlZGxlLCBjb25zdCA6OnN0ZDo6d3N0cmluZyYgaGF5c3RhY2spIHsKKyAgcmV0
dXJuIElzU3Vic3RyaW5nSW1wbCh0cnVlLCBuZWVkbGVfZXhwciwgaGF5c3RhY2tfZXhwciwgbmVl
ZGxlLCBoYXlzdGFjayk7Cit9CisKK0Fzc2VydGlvblJlc3VsdCBJc05vdFN1YnN0cmluZygKKyAg
ICBjb25zdCBjaGFyKiBuZWVkbGVfZXhwciwgY29uc3QgY2hhciogaGF5c3RhY2tfZXhwciwKKyAg
ICBjb25zdCA6OnN0ZDo6d3N0cmluZyYgbmVlZGxlLCBjb25zdCA6OnN0ZDo6d3N0cmluZyYgaGF5
c3RhY2spIHsKKyAgcmV0dXJuIElzU3Vic3RyaW5nSW1wbChmYWxzZSwgbmVlZGxlX2V4cHIsIGhh
eXN0YWNrX2V4cHIsIG5lZWRsZSwgaGF5c3RhY2spOworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNf
U1REX1dTVFJJTkcKKworbmFtZXNwYWNlIGludGVybmFsIHsKKworI2lmIEdURVNUX09TX1dJTkRP
V1MKKworbmFtZXNwYWNlIHsKKworLy8gSGVscGVyIGZ1bmN0aW9uIGZvciBJc0hSRVNVTFR7U3Vj
Y2Vzc0ZhaWx1cmV9IHByZWRpY2F0ZXMKK0Fzc2VydGlvblJlc3VsdCBIUkVTVUxURmFpbHVyZUhl
bHBlcihjb25zdCBjaGFyKiBleHByLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxvbmcgaHIpIHsgIC8vIE5PTElOVAorIyBpZiBHVEVTVF9PU19XSU5ET1dTX01PQklM
RQorCisgIC8vIFdpbmRvd3MgQ0UgZG9lc24ndCBzdXBwb3J0IEZvcm1hdE1lc3NhZ2UuCisgIGNv
bnN0IGNoYXIgZXJyb3JfdGV4dFtdID0gIiI7CisKKyMgZWxzZQorCisgIC8vIExvb2tzIHVwIHRo
ZSBodW1hbi1yZWFkYWJsZSBzeXN0ZW0gbWVzc2FnZSBmb3IgdGhlIEhSRVNVTFQgY29kZQorICAv
LyBhbmQgc2luY2Ugd2UncmUgbm90IHBhc3NpbmcgYW55IHBhcmFtcyB0byBGb3JtYXRNZXNzYWdl
LCB3ZSBkb24ndAorICAvLyB3YW50IGluc2VydHMgZXhwYW5kZWQuCisgIGNvbnN0IERXT1JEIGtG
bGFncyA9IEZPUk1BVF9NRVNTQUdFX0ZST01fU1lTVEVNIHwKKyAgICAgICAgICAgICAgICAgICAg
ICAgRk9STUFUX01FU1NBR0VfSUdOT1JFX0lOU0VSVFM7CisgIGNvbnN0IERXT1JEIGtCdWZTaXpl
ID0gNDA5NjsKKyAgLy8gR2V0cyB0aGUgc3lzdGVtJ3MgaHVtYW4gcmVhZGFibGUgbWVzc2FnZSBz
dHJpbmcgZm9yIHRoaXMgSFJFU1VMVC4KKyAgY2hhciBlcnJvcl90ZXh0W2tCdWZTaXplXSA9IHsg
J1wwJyB9OworICBEV09SRCBtZXNzYWdlX2xlbmd0aCA9IDo6Rm9ybWF0TWVzc2FnZUEoa0ZsYWdz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgIC8vIG5vIHNv
dXJjZSwgd2UncmUgYXNraW5nIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaHIsICAvLyB0aGUgZXJyb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDAsICAvLyBubyBsaW5lIHdpZHRoIHJlc3RyaWN0aW9ucworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfdGV4dCwgIC8vIG91dHB1
dCBidWZmZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtCdWZT
aXplLCAgLy8gYnVmIHNpemUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE5VTEwpOyAgLy8gbm8gYXJndW1lbnRzIGZvciBpbnNlcnRzCisgIC8vIFRyaW1zIHRhaWxp
bmcgd2hpdGUgc3BhY2UgKEZvcm1hdE1lc3NhZ2UgbGVhdmVzIGEgdHJhaWxpbmcgQ1ItTEYpCisg
IGZvciAoOyBtZXNzYWdlX2xlbmd0aCAmJiBJc1NwYWNlKGVycm9yX3RleHRbbWVzc2FnZV9sZW5n
dGggLSAxXSk7CisgICAgICAgICAgLS1tZXNzYWdlX2xlbmd0aCkgeworICAgIGVycm9yX3RleHRb
bWVzc2FnZV9sZW5ndGggLSAxXSA9ICdcMCc7CisgIH0KKworIyBlbmRpZiAgLy8gR1RFU1RfT1Nf
V0lORE9XU19NT0JJTEUKKworICBjb25zdCBzdGQ6OnN0cmluZyBlcnJvcl9oZXgoIjB4IiArIFN0
cmluZzo6Rm9ybWF0SGV4SW50KGhyKSk7CisgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvbkZh
aWx1cmUoKQorICAgICAgPDwgIkV4cGVjdGVkOiAiIDw8IGV4cHIgPDwgIiAiIDw8IGV4cGVjdGVk
IDw8ICIuXG4iCisgICAgICA8PCAiICBBY3R1YWw6ICIgPDwgZXJyb3JfaGV4IDw8ICIgIiA8PCBl
cnJvcl90ZXh0IDw8ICJcbiI7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorCitBc3NlcnRpb25SZXN1
bHQgSXNIUkVTVUxUU3VjY2Vzcyhjb25zdCBjaGFyKiBleHByLCBsb25nIGhyKSB7ICAvLyBOT0xJ
TlQKKyAgaWYgKFNVQ0NFRURFRChocikpIHsKKyAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2Vzcygp
OworICB9CisgIHJldHVybiBIUkVTVUxURmFpbHVyZUhlbHBlcihleHByLCAic3VjY2VlZHMiLCBo
cik7Cit9CisKK0Fzc2VydGlvblJlc3VsdCBJc0hSRVNVTFRGYWlsdXJlKGNvbnN0IGNoYXIqIGV4
cHIsIGxvbmcgaHIpIHsgIC8vIE5PTElOVAorICBpZiAoRkFJTEVEKGhyKSkgeworICAgIHJldHVy
biBBc3NlcnRpb25TdWNjZXNzKCk7CisgIH0KKyAgcmV0dXJuIEhSRVNVTFRGYWlsdXJlSGVscGVy
KGV4cHIsICJmYWlscyIsIGhyKTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisK
Ky8vIFV0aWxpdHkgZnVuY3Rpb25zIGZvciBlbmNvZGluZyBVbmljb2RlIHRleHQgKHdpZGUgc3Ry
aW5ncykgaW4KKy8vIFVURi04LgorCisvLyBBIFVuaWNvZGUgY29kZS1wb2ludCBjYW4gaGF2ZSB1
cHRvIDIxIGJpdHMsIGFuZCBpcyBlbmNvZGVkIGluIFVURi04CisvLyBsaWtlIHRoaXM6CisvLwor
Ly8gQ29kZS1wb2ludCBsZW5ndGggICBFbmNvZGluZworLy8gICAwIC0gIDcgYml0cyAgICAgICAw
eHh4eHh4eAorLy8gICA4IC0gMTEgYml0cyAgICAgICAxMTB4eHh4eCAxMHh4eHh4eAorLy8gIDEy
IC0gMTYgYml0cyAgICAgICAxMTEweHh4eCAxMHh4eHh4eCAxMHh4eHh4eAorLy8gIDE3IC0gMjEg
Yml0cyAgICAgICAxMTExMHh4eCAxMHh4eHh4eCAxMHh4eHh4eCAxMHh4eHh4eAorCisvLyBUaGUg
bWF4aW11bSBjb2RlLXBvaW50IGEgb25lLWJ5dGUgVVRGLTggc2VxdWVuY2UgY2FuIHJlcHJlc2Vu
dC4KK2NvbnN0IFVJbnQzMiBrTWF4Q29kZVBvaW50MSA9IChzdGF0aWNfY2FzdDxVSW50MzI+KDEp
IDw8ICA3KSAtIDE7CisKKy8vIFRoZSBtYXhpbXVtIGNvZGUtcG9pbnQgYSB0d28tYnl0ZSBVVEYt
OCBzZXF1ZW5jZSBjYW4gcmVwcmVzZW50LgorY29uc3QgVUludDMyIGtNYXhDb2RlUG9pbnQyID0g
KHN0YXRpY19jYXN0PFVJbnQzMj4oMSkgPDwgKDUgKyA2KSkgLSAxOworCisvLyBUaGUgbWF4aW11
bSBjb2RlLXBvaW50IGEgdGhyZWUtYnl0ZSBVVEYtOCBzZXF1ZW5jZSBjYW4gcmVwcmVzZW50Lgor
Y29uc3QgVUludDMyIGtNYXhDb2RlUG9pbnQzID0gKHN0YXRpY19jYXN0PFVJbnQzMj4oMSkgPDwg
KDQgKyAyKjYpKSAtIDE7CisKKy8vIFRoZSBtYXhpbXVtIGNvZGUtcG9pbnQgYSBmb3VyLWJ5dGUg
VVRGLTggc2VxdWVuY2UgY2FuIHJlcHJlc2VudC4KK2NvbnN0IFVJbnQzMiBrTWF4Q29kZVBvaW50
NCA9IChzdGF0aWNfY2FzdDxVSW50MzI+KDEpIDw8ICgzICsgMyo2KSkgLSAxOworCisvLyBDaG9w
cyBvZmYgdGhlIG4gbG93ZXN0IGJpdHMgZnJvbSBhIGJpdCBwYXR0ZXJuLiAgUmV0dXJucyB0aGUg
bgorLy8gbG93ZXN0IGJpdHMuICBBcyBhIHNpZGUgZWZmZWN0LCB0aGUgb3JpZ2luYWwgYml0IHBh
dHRlcm4gd2lsbCBiZQorLy8gc2hpZnRlZCB0byB0aGUgcmlnaHQgYnkgbiBiaXRzLgoraW5saW5l
IFVJbnQzMiBDaG9wTG93Qml0cyhVSW50MzIqIGJpdHMsIGludCBuKSB7CisgIGNvbnN0IFVJbnQz
MiBsb3dfYml0cyA9ICpiaXRzICYgKChzdGF0aWNfY2FzdDxVSW50MzI+KDEpIDw8IG4pIC0gMSk7
CisgICpiaXRzID4+PSBuOworICByZXR1cm4gbG93X2JpdHM7Cit9CisKKy8vIENvbnZlcnRzIGEg
VW5pY29kZSBjb2RlIHBvaW50IHRvIGEgbmFycm93IHN0cmluZyBpbiBVVEYtOCBlbmNvZGluZy4K
Ky8vIGNvZGVfcG9pbnQgcGFyYW1ldGVyIGlzIG9mIHR5cGUgVUludDMyIGJlY2F1c2Ugd2NoYXJf
dCBtYXkgbm90IGJlCisvLyB3aWRlIGVub3VnaCB0byBjb250YWluIGEgY29kZSBwb2ludC4KKy8v
IElmIHRoZSBjb2RlX3BvaW50IGlzIG5vdCBhIHZhbGlkIFVuaWNvZGUgY29kZSBwb2ludAorLy8g
KGkuZS4gb3V0c2lkZSBvZiBVbmljb2RlIHJhbmdlIFUrMCB0byBVKzEwRkZGRikgaXQgd2lsbCBi
ZSBjb252ZXJ0ZWQKKy8vIHRvICIoSW52YWxpZCBVbmljb2RlIDB4WFhYWFhYWFgpIi4KK3N0ZDo6
c3RyaW5nIENvZGVQb2ludFRvVXRmOChVSW50MzIgY29kZV9wb2ludCkgeworICBpZiAoY29kZV9w
b2ludCA+IGtNYXhDb2RlUG9pbnQ0KSB7CisgICAgcmV0dXJuICIoSW52YWxpZCBVbmljb2RlIDB4
IiArIFN0cmluZzo6Rm9ybWF0SGV4SW50KGNvZGVfcG9pbnQpICsgIikiOworICB9CisKKyAgY2hh
ciBzdHJbNV07ICAvLyBCaWcgZW5vdWdoIGZvciB0aGUgbGFyZ2VzdCB2YWxpZCBjb2RlIHBvaW50
LgorICBpZiAoY29kZV9wb2ludCA8PSBrTWF4Q29kZVBvaW50MSkgeworICAgIHN0clsxXSA9ICdc
MCc7CisgICAgc3RyWzBdID0gc3RhdGljX2Nhc3Q8Y2hhcj4oY29kZV9wb2ludCk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyAweHh4eHh4eAorICB9IGVsc2UgaWYgKGNvZGVfcG9pbnQgPD0g
a01heENvZGVQb2ludDIpIHsKKyAgICBzdHJbMl0gPSAnXDAnOworICAgIHN0clsxXSA9IHN0YXRp
Y19jYXN0PGNoYXI+KDB4ODAgfCBDaG9wTG93Qml0cygmY29kZV9wb2ludCwgNikpOyAgLy8gMTB4
eHh4eHgKKyAgICBzdHJbMF0gPSBzdGF0aWNfY2FzdDxjaGFyPigweEMwIHwgY29kZV9wb2ludCk7
ICAgICAgICAgICAgICAgICAgIC8vIDExMHh4eHh4CisgIH0gZWxzZSBpZiAoY29kZV9wb2ludCA8
PSBrTWF4Q29kZVBvaW50MykgeworICAgIHN0clszXSA9ICdcMCc7CisgICAgc3RyWzJdID0gc3Rh
dGljX2Nhc3Q8Y2hhcj4oMHg4MCB8IENob3BMb3dCaXRzKCZjb2RlX3BvaW50LCA2KSk7ICAvLyAx
MHh4eHh4eAorICAgIHN0clsxXSA9IHN0YXRpY19jYXN0PGNoYXI+KDB4ODAgfCBDaG9wTG93Qml0
cygmY29kZV9wb2ludCwgNikpOyAgLy8gMTB4eHh4eHgKKyAgICBzdHJbMF0gPSBzdGF0aWNfY2Fz
dDxjaGFyPigweEUwIHwgY29kZV9wb2ludCk7ICAgICAgICAgICAgICAgICAgIC8vIDExMTB4eHh4
CisgIH0gZWxzZSB7ICAvLyBjb2RlX3BvaW50IDw9IGtNYXhDb2RlUG9pbnQ0CisgICAgc3RyWzRd
ID0gJ1wwJzsKKyAgICBzdHJbM10gPSBzdGF0aWNfY2FzdDxjaGFyPigweDgwIHwgQ2hvcExvd0Jp
dHMoJmNvZGVfcG9pbnQsIDYpKTsgIC8vIDEweHh4eHh4CisgICAgc3RyWzJdID0gc3RhdGljX2Nh
c3Q8Y2hhcj4oMHg4MCB8IENob3BMb3dCaXRzKCZjb2RlX3BvaW50LCA2KSk7ICAvLyAxMHh4eHh4
eAorICAgIHN0clsxXSA9IHN0YXRpY19jYXN0PGNoYXI+KDB4ODAgfCBDaG9wTG93Qml0cygmY29k
ZV9wb2ludCwgNikpOyAgLy8gMTB4eHh4eHgKKyAgICBzdHJbMF0gPSBzdGF0aWNfY2FzdDxjaGFy
PigweEYwIHwgY29kZV9wb2ludCk7ICAgICAgICAgICAgICAgICAgIC8vIDExMTEweHh4CisgIH0K
KyAgcmV0dXJuIHN0cjsKK30KKworLy8gVGhlIGZvbGxvd2luZyB0d28gZnVuY3Rpb25zIG9ubHkg
bWFrZSBzZW5zZSBpZiB0aGUgdGhlIHN5c3RlbQorLy8gdXNlcyBVVEYtMTYgZm9yIHdpZGUgc3Ry
aW5nIGVuY29kaW5nLiBBbGwgc3VwcG9ydGVkIHN5c3RlbXMKKy8vIHdpdGggMTYgYml0IHdjaGFy
X3QgKFdpbmRvd3MsIEN5Z3dpbiwgU3ltYmlhbiBPUykgZG8gdXNlIFVURi0xNi4KKworLy8gRGV0
ZXJtaW5lcyBpZiB0aGUgYXJndW1lbnRzIGNvbnN0aXR1dGUgVVRGLTE2IHN1cnJvZ2F0ZSBwYWly
CisvLyBhbmQgdGh1cyBzaG91bGQgYmUgY29tYmluZWQgaW50byBhIHNpbmdsZSBVbmljb2RlIGNv
ZGUgcG9pbnQKKy8vIHVzaW5nIENyZWF0ZUNvZGVQb2ludEZyb21VdGYxNlN1cnJvZ2F0ZVBhaXIu
CitpbmxpbmUgYm9vbCBJc1V0ZjE2U3Vycm9nYXRlUGFpcih3Y2hhcl90IGZpcnN0LCB3Y2hhcl90
IHNlY29uZCkgeworICByZXR1cm4gc2l6ZW9mKHdjaGFyX3QpID09IDIgJiYKKyAgICAgIChmaXJz
dCAmIDB4RkMwMCkgPT0gMHhEODAwICYmIChzZWNvbmQgJiAweEZDMDApID09IDB4REMwMDsKK30K
KworLy8gQ3JlYXRlcyBhIFVuaWNvZGUgY29kZSBwb2ludCBmcm9tIFVURjE2IHN1cnJvZ2F0ZSBw
YWlyLgoraW5saW5lIFVJbnQzMiBDcmVhdGVDb2RlUG9pbnRGcm9tVXRmMTZTdXJyb2dhdGVQYWly
KHdjaGFyX3QgZmlyc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd2NoYXJfdCBzZWNvbmQpIHsKKyAgY29uc3QgVUludDMyIG1hc2sgPSAoMSA8
PCAxMCkgLSAxOworICByZXR1cm4gKHNpemVvZih3Y2hhcl90KSA9PSAyKSA/CisgICAgICAoKChm
aXJzdCAmIG1hc2spIDw8IDEwKSB8IChzZWNvbmQgJiBtYXNrKSkgKyAweDEwMDAwIDoKKyAgICAg
IC8vIFRoaXMgZnVuY3Rpb24gc2hvdWxkIG5vdCBiZSBjYWxsZWQgd2hlbiB0aGUgY29uZGl0aW9u
IGlzCisgICAgICAvLyBmYWxzZSwgYnV0IHdlIHByb3ZpZGUgYSBzZW5zaWJsZSBkZWZhdWx0IGlu
IGNhc2UgaXQgaXMuCisgICAgICBzdGF0aWNfY2FzdDxVSW50MzI+KGZpcnN0KTsKK30KKworLy8g
Q29udmVydHMgYSB3aWRlIHN0cmluZyB0byBhIG5hcnJvdyBzdHJpbmcgaW4gVVRGLTggZW5jb2Rp
bmcuCisvLyBUaGUgd2lkZSBzdHJpbmcgaXMgYXNzdW1lZCB0byBoYXZlIHRoZSBmb2xsb3dpbmcg
ZW5jb2Rpbmc6CisvLyAgIFVURi0xNiBpZiBzaXplb2Yod2NoYXJfdCkgPT0gMiAob24gV2luZG93
cywgQ3lnd2luLCBTeW1iaWFuIE9TKQorLy8gICBVVEYtMzIgaWYgc2l6ZW9mKHdjaGFyX3QpID09
IDQgKG9uIExpbnV4KQorLy8gUGFyYW1ldGVyIHN0ciBwb2ludHMgdG8gYSBudWxsLXRlcm1pbmF0
ZWQgd2lkZSBzdHJpbmcuCisvLyBQYXJhbWV0ZXIgbnVtX2NoYXJzIG1heSBhZGRpdGlvbmFsbHkg
bGltaXQgdGhlIG51bWJlcgorLy8gb2Ygd2NoYXJfdCBjaGFyYWN0ZXJzIHByb2Nlc3NlZC4gLTEg
aXMgdXNlZCB3aGVuIHRoZSBlbnRpcmUgc3RyaW5nCisvLyBzaG91bGQgYmUgcHJvY2Vzc2VkLgor
Ly8gSWYgdGhlIHN0cmluZyBjb250YWlucyBjb2RlIHBvaW50cyB0aGF0IGFyZSBub3QgdmFsaWQg
VW5pY29kZSBjb2RlIHBvaW50cworLy8gKGkuZS4gb3V0c2lkZSBvZiBVbmljb2RlIHJhbmdlIFUr
MCB0byBVKzEwRkZGRikgdGhleSB3aWxsIGJlIG91dHB1dAorLy8gYXMgJyhJbnZhbGlkIFVuaWNv
ZGUgMHhYWFhYWFhYWCknLiBJZiB0aGUgc3RyaW5nIGlzIGluIFVURjE2IGVuY29kaW5nCisvLyBh
bmQgY29udGFpbnMgaW52YWxpZCBVVEYtMTYgc3Vycm9nYXRlIHBhaXJzLCB2YWx1ZXMgaW4gdGhv
c2UgcGFpcnMKKy8vIHdpbGwgYmUgZW5jb2RlZCBhcyBpbmRpdmlkdWFsIFVuaWNvZGUgY2hhcmFj
dGVycyBmcm9tIEJhc2ljIE5vcm1hbCBQbGFuZS4KK3N0ZDo6c3RyaW5nIFdpZGVTdHJpbmdUb1V0
ZjgoY29uc3Qgd2NoYXJfdCogc3RyLCBpbnQgbnVtX2NoYXJzKSB7CisgIGlmIChudW1fY2hhcnMg
PT0gLTEpCisgICAgbnVtX2NoYXJzID0gc3RhdGljX2Nhc3Q8aW50Pih3Y3NsZW4oc3RyKSk7CisK
KyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzdHJlYW07CisgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVt
X2NoYXJzOyArK2kpIHsKKyAgICBVSW50MzIgdW5pY29kZV9jb2RlX3BvaW50OworCisgICAgaWYg
KHN0cltpXSA9PSBMJ1wwJykgeworICAgICAgYnJlYWs7CisgICAgfSBlbHNlIGlmIChpICsgMSA8
IG51bV9jaGFycyAmJiBJc1V0ZjE2U3Vycm9nYXRlUGFpcihzdHJbaV0sIHN0cltpICsgMV0pKSB7
CisgICAgICB1bmljb2RlX2NvZGVfcG9pbnQgPSBDcmVhdGVDb2RlUG9pbnRGcm9tVXRmMTZTdXJy
b2dhdGVQYWlyKHN0cltpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyW2kgKyAxXSk7CisgICAgICBpKys7CisgICAg
fSBlbHNlIHsKKyAgICAgIHVuaWNvZGVfY29kZV9wb2ludCA9IHN0YXRpY19jYXN0PFVJbnQzMj4o
c3RyW2ldKTsKKyAgICB9CisKKyAgICBzdHJlYW0gPDwgQ29kZVBvaW50VG9VdGY4KHVuaWNvZGVf
Y29kZV9wb2ludCk7CisgIH0KKyAgcmV0dXJuIFN0cmluZ1N0cmVhbVRvU3RyaW5nKCZzdHJlYW0p
OworfQorCisvLyBDb252ZXJ0cyBhIHdpZGUgQyBzdHJpbmcgdG8gYW4gc3RkOjpzdHJpbmcgdXNp
bmcgdGhlIFVURi04IGVuY29kaW5nLgorLy8gTlVMTCB3aWxsIGJlIGNvbnZlcnRlZCB0byAiKG51
bGwpIi4KK3N0ZDo6c3RyaW5nIFN0cmluZzo6U2hvd1dpZGVDU3RyaW5nKGNvbnN0IHdjaGFyX3Qg
KiB3aWRlX2Nfc3RyKSB7CisgIGlmICh3aWRlX2Nfc3RyID09IE5VTEwpICByZXR1cm4gIihudWxs
KSI7CisKKyAgcmV0dXJuIGludGVybmFsOjpXaWRlU3RyaW5nVG9VdGY4KHdpZGVfY19zdHIsIC0x
KTsKK30KKworLy8gQ29tcGFyZXMgdHdvIHdpZGUgQyBzdHJpbmdzLiAgUmV0dXJucyB0cnVlIGlm
ZiB0aGV5IGhhdmUgdGhlIHNhbWUKKy8vIGNvbnRlbnQuCisvLworLy8gVW5saWtlIHdjc2NtcCgp
LCB0aGlzIGZ1bmN0aW9uIGNhbiBoYW5kbGUgTlVMTCBhcmd1bWVudChzKS4gIEEgTlVMTAorLy8g
QyBzdHJpbmcgaXMgY29uc2lkZXJlZCBkaWZmZXJlbnQgdG8gYW55IG5vbi1OVUxMIEMgc3RyaW5n
LAorLy8gaW5jbHVkaW5nIHRoZSBlbXB0eSBzdHJpbmcuCitib29sIFN0cmluZzo6V2lkZUNTdHJp
bmdFcXVhbHMoY29uc3Qgd2NoYXJfdCAqIGxocywgY29uc3Qgd2NoYXJfdCAqIHJocykgeworICBp
ZiAobGhzID09IE5VTEwpIHJldHVybiByaHMgPT0gTlVMTDsKKworICBpZiAocmhzID09IE5VTEwp
IHJldHVybiBmYWxzZTsKKworICByZXR1cm4gd2NzY21wKGxocywgcmhzKSA9PSAwOworfQorCisv
LyBIZWxwZXIgZnVuY3Rpb24gZm9yICpfU1RSRVEgb24gd2lkZSBzdHJpbmdzLgorQXNzZXJ0aW9u
UmVzdWx0IENtcEhlbHBlclNUUkVRKGNvbnN0IGNoYXIqIGxoc19leHByZXNzaW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdjaGFyX3QqIGxocywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3Y2hhcl90KiByaHMpIHsKKyAgaWYgKFN0cmlu
Zzo6V2lkZUNTdHJpbmdFcXVhbHMobGhzLCByaHMpKSB7CisgICAgcmV0dXJuIEFzc2VydGlvblN1
Y2Nlc3MoKTsKKyAgfQorCisgIHJldHVybiBFcUZhaWx1cmUobGhzX2V4cHJlc3Npb24sCisgICAg
ICAgICAgICAgICAgICAgcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgUHJpbnRU
b1N0cmluZyhsaHMpLAorICAgICAgICAgICAgICAgICAgIFByaW50VG9TdHJpbmcocmhzKSwKKyAg
ICAgICAgICAgICAgICAgICBmYWxzZSk7Cit9CisKKy8vIEhlbHBlciBmdW5jdGlvbiBmb3IgKl9T
VFJORSBvbiB3aWRlIHN0cmluZ3MuCitBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSTkUoY29u
c3QgY2hhciogczFfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiBzMl9leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHdjaGFyX3QqIHMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHdjaGFyX3QqIHMyKSB7CisgIGlmICghU3RyaW5nOjpXaWRlQ1N0cmluZ0VxdWFscyhzMSwgczIp
KSB7CisgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKKyAgfQorCisgIHJldHVybiBBc3Nl
cnRpb25GYWlsdXJlKCkgPDwgIkV4cGVjdGVkOiAoIiA8PCBzMV9leHByZXNzaW9uIDw8ICIpICE9
ICgiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgczJfZXhwcmVzc2lvbiA8PCAiKSwg
YWN0dWFsOiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgUHJpbnRUb1N0cmluZyhz
MSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiIHZzICIgPDwgUHJpbnRUb1N0cmlu
ZyhzMik7Cit9CisKKy8vIENvbXBhcmVzIHR3byBDIHN0cmluZ3MsIGlnbm9yaW5nIGNhc2UuICBS
ZXR1cm5zIHRydWUgaWZmIHRoZXkgaGF2ZQorLy8gdGhlIHNhbWUgY29udGVudC4KKy8vCisvLyBV
bmxpa2Ugc3RyY2FzZWNtcCgpLCB0aGlzIGZ1bmN0aW9uIGNhbiBoYW5kbGUgTlVMTCBhcmd1bWVu
dChzKS4gIEEKKy8vIE5VTEwgQyBzdHJpbmcgaXMgY29uc2lkZXJlZCBkaWZmZXJlbnQgdG8gYW55
IG5vbi1OVUxMIEMgc3RyaW5nLAorLy8gaW5jbHVkaW5nIHRoZSBlbXB0eSBzdHJpbmcuCitib29s
IFN0cmluZzo6Q2FzZUluc2Vuc2l0aXZlQ1N0cmluZ0VxdWFscyhjb25zdCBjaGFyICogbGhzLCBj
b25zdCBjaGFyICogcmhzKSB7CisgIGlmIChsaHMgPT0gTlVMTCkKKyAgICByZXR1cm4gcmhzID09
IE5VTEw7CisgIGlmIChyaHMgPT0gTlVMTCkKKyAgICByZXR1cm4gZmFsc2U7CisgIHJldHVybiBw
b3NpeDo6U3RyQ2FzZUNtcChsaHMsIHJocykgPT0gMDsKK30KKworICAvLyBDb21wYXJlcyB0d28g
d2lkZSBDIHN0cmluZ3MsIGlnbm9yaW5nIGNhc2UuICBSZXR1cm5zIHRydWUgaWZmIHRoZXkKKyAg
Ly8gaGF2ZSB0aGUgc2FtZSBjb250ZW50LgorICAvLworICAvLyBVbmxpa2Ugd2NzY2FzZWNtcCgp
LCB0aGlzIGZ1bmN0aW9uIGNhbiBoYW5kbGUgTlVMTCBhcmd1bWVudChzKS4KKyAgLy8gQSBOVUxM
IEMgc3RyaW5nIGlzIGNvbnNpZGVyZWQgZGlmZmVyZW50IHRvIGFueSBub24tTlVMTCB3aWRlIEMg
c3RyaW5nLAorICAvLyBpbmNsdWRpbmcgdGhlIGVtcHR5IHN0cmluZy4KKyAgLy8gTkI6IFRoZSBp
bXBsZW1lbnRhdGlvbnMgb24gZGlmZmVyZW50IHBsYXRmb3JtcyBzbGlnaHRseSBkaWZmZXIuCisg
IC8vIE9uIHdpbmRvd3MsIHRoaXMgbWV0aG9kIHVzZXMgX3djc2ljbXAgd2hpY2ggY29tcGFyZXMg
YWNjb3JkaW5nIHRvIExDX0NUWVBFCisgIC8vIGVudmlyb25tZW50IHZhcmlhYmxlLiBPbiBHTlUg
cGxhdGZvcm0gdGhpcyBtZXRob2QgdXNlcyB3Y3NjYXNlY21wCisgIC8vIHdoaWNoIGNvbXBhcmVz
IGFjY29yZGluZyB0byBMQ19DVFlQRSBjYXRlZ29yeSBvZiB0aGUgY3VycmVudCBsb2NhbGUuCisg
IC8vIE9uIE1hY09TIFgsIGl0IHVzZXMgdG93bG93ZXIsIHdoaWNoIGFsc28gdXNlcyBMQ19DVFlQ
RSBjYXRlZ29yeSBvZiB0aGUKKyAgLy8gY3VycmVudCBsb2NhbGUuCitib29sIFN0cmluZzo6Q2Fz
ZUluc2Vuc2l0aXZlV2lkZUNTdHJpbmdFcXVhbHMoY29uc3Qgd2NoYXJfdCogbGhzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdjaGFyX3QqIHJo
cykgeworICBpZiAobGhzID09IE5VTEwpIHJldHVybiByaHMgPT0gTlVMTDsKKworICBpZiAocmhz
ID09IE5VTEwpIHJldHVybiBmYWxzZTsKKworI2lmIEdURVNUX09TX1dJTkRPV1MKKyAgcmV0dXJu
IF93Y3NpY21wKGxocywgcmhzKSA9PSAwOworI2VsaWYgR1RFU1RfT1NfTElOVVggJiYgIUdURVNU
X09TX0xJTlVYX0FORFJPSUQKKyAgcmV0dXJuIHdjc2Nhc2VjbXAobGhzLCByaHMpID09IDA7Cisj
ZWxzZQorICAvLyBBbmRyb2lkLCBNYWMgT1MgWCBhbmQgQ3lnd2luIGRvbid0IGRlZmluZSB3Y3Nj
YXNlY21wLgorICAvLyBPdGhlciB1bmtub3duIE9TZXMgbWF5IG5vdCBkZWZpbmUgaXQgZWl0aGVy
LgorICB3aW50X3QgbGVmdCwgcmlnaHQ7CisgIGRvIHsKKyAgICBsZWZ0ID0gdG93bG93ZXIoKmxo
cysrKTsKKyAgICByaWdodCA9IHRvd2xvd2VyKCpyaHMrKyk7CisgIH0gd2hpbGUgKGxlZnQgJiYg
bGVmdCA9PSByaWdodCk7CisgIHJldHVybiBsZWZ0ID09IHJpZ2h0OworI2VuZGlmICAvLyBPUyBz
ZWxlY3RvcgorfQorCisvLyBSZXR1cm5zIHRydWUgaWZmIHN0ciBlbmRzIHdpdGggdGhlIGdpdmVu
IHN1ZmZpeCwgaWdub3JpbmcgY2FzZS4KKy8vIEFueSBzdHJpbmcgaXMgY29uc2lkZXJlZCB0byBl
bmQgd2l0aCBhbiBlbXB0eSBzdWZmaXguCitib29sIFN0cmluZzo6RW5kc1dpdGhDYXNlSW5zZW5z
aXRpdmUoCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHN0ciwgY29uc3Qgc3RkOjpzdHJpbmcmIHN1
ZmZpeCkgeworICBjb25zdCBzaXplX3Qgc3RyX2xlbiA9IHN0ci5sZW5ndGgoKTsKKyAgY29uc3Qg
c2l6ZV90IHN1ZmZpeF9sZW4gPSBzdWZmaXgubGVuZ3RoKCk7CisgIHJldHVybiAoc3RyX2xlbiA+
PSBzdWZmaXhfbGVuKSAmJgorICAgICAgICAgQ2FzZUluc2Vuc2l0aXZlQ1N0cmluZ0VxdWFscyhz
dHIuY19zdHIoKSArIHN0cl9sZW4gLSBzdWZmaXhfbGVuLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdWZmaXguY19zdHIoKSk7Cit9CisKKy8vIEZvcm1hdHMgYW4gaW50
IHZhbHVlIGFzICIlMDJkIi4KK3N0ZDo6c3RyaW5nIFN0cmluZzo6Rm9ybWF0SW50V2lkdGgyKGlu
dCB2YWx1ZSkgeworICBzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgc3MgPDwgc3RkOjpzZXRmaWxs
KCcwJykgPDwgc3RkOjpzZXR3KDIpIDw8IHZhbHVlOworICByZXR1cm4gc3Muc3RyKCk7Cit9CisK
Ky8vIEZvcm1hdHMgYW4gaW50IHZhbHVlIGFzICIlWCIuCitzdGQ6OnN0cmluZyBTdHJpbmc6OkZv
cm1hdEhleEludChpbnQgdmFsdWUpIHsKKyAgc3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIHNzIDw8
IHN0ZDo6aGV4IDw8IHN0ZDo6dXBwZXJjYXNlIDw8IHZhbHVlOworICByZXR1cm4gc3Muc3RyKCk7
Cit9CisKKy8vIEZvcm1hdHMgYSBieXRlIGFzICIlMDJYIi4KK3N0ZDo6c3RyaW5nIFN0cmluZzo6
Rm9ybWF0Qnl0ZSh1bnNpZ25lZCBjaGFyIHZhbHVlKSB7CisgIHN0ZDo6c3RyaW5nc3RyZWFtIHNz
OworICBzcyA8PCBzdGQ6OnNldGZpbGwoJzAnKSA8PCBzdGQ6OnNldHcoMikgPDwgc3RkOjpoZXgg
PDwgc3RkOjp1cHBlcmNhc2UKKyAgICAgPDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pih2YWx1
ZSk7CisgIHJldHVybiBzcy5zdHIoKTsKK30KKworLy8gQ29udmVydHMgdGhlIGJ1ZmZlciBpbiBh
IHN0cmluZ3N0cmVhbSB0byBhbiBzdGQ6OnN0cmluZywgY29udmVydGluZyBOVUwKKy8vIGJ5dGVz
IHRvICJcXDAiIGFsb25nIHRoZSB3YXkuCitzdGQ6OnN0cmluZyBTdHJpbmdTdHJlYW1Ub1N0cmlu
Zyg6OnN0ZDo6c3RyaW5nc3RyZWFtKiBzcykgeworICBjb25zdCA6OnN0ZDo6c3RyaW5nJiBzdHIg
PSBzcy0+c3RyKCk7CisgIGNvbnN0IGNoYXIqIGNvbnN0IHN0YXJ0ID0gc3RyLmNfc3RyKCk7Cisg
IGNvbnN0IGNoYXIqIGNvbnN0IGVuZCA9IHN0YXJ0ICsgc3RyLmxlbmd0aCgpOworCisgIHN0ZDo6
c3RyaW5nIHJlc3VsdDsKKyAgcmVzdWx0LnJlc2VydmUoMiAqIChlbmQgLSBzdGFydCkpOworICBm
b3IgKGNvbnN0IGNoYXIqIGNoID0gc3RhcnQ7IGNoICE9IGVuZDsgKytjaCkgeworICAgIGlmICgq
Y2ggPT0gJ1wwJykgeworICAgICAgcmVzdWx0ICs9ICJcXDAiOyAgLy8gUmVwbGFjZXMgTlVMIHdp
dGggIlxcMCI7CisgICAgfSBlbHNlIHsKKyAgICAgIHJlc3VsdCArPSAqY2g7CisgICAgfQorICB9
CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworLy8gQXBwZW5kcyB0aGUgdXNlci1zdXBwbGllZCBt
ZXNzYWdlIHRvIHRoZSBHb29nbGUtVGVzdC1nZW5lcmF0ZWQgbWVzc2FnZS4KK3N0ZDo6c3RyaW5n
IEFwcGVuZFVzZXJNZXNzYWdlKGNvbnN0IHN0ZDo6c3RyaW5nJiBndGVzdF9tc2csCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBNZXNzYWdlJiB1c2VyX21zZykgeworICAvLyBB
cHBlbmRzIHRoZSB1c2VyIG1lc3NhZ2UgaWYgaXQncyBub24tZW1wdHkuCisgIGNvbnN0IHN0ZDo6
c3RyaW5nIHVzZXJfbXNnX3N0cmluZyA9IHVzZXJfbXNnLkdldFN0cmluZygpOworICBpZiAodXNl
cl9tc2dfc3RyaW5nLmVtcHR5KCkpIHsKKyAgICByZXR1cm4gZ3Rlc3RfbXNnOworICB9CisKKyAg
cmV0dXJuIGd0ZXN0X21zZyArICJcbiIgKyB1c2VyX21zZ19zdHJpbmc7Cit9CisKK30gIC8vIG5h
bWVzcGFjZSBpbnRlcm5hbAorCisvLyBjbGFzcyBUZXN0UmVzdWx0CisKKy8vIENyZWF0ZXMgYW4g
ZW1wdHkgVGVzdFJlc3VsdC4KK1Rlc3RSZXN1bHQ6OlRlc3RSZXN1bHQoKQorICAgIDogZGVhdGhf
dGVzdF9jb3VudF8oMCksCisgICAgICBlbGFwc2VkX3RpbWVfKDApIHsKK30KKworLy8gRCd0b3Iu
CitUZXN0UmVzdWx0Ojp+VGVzdFJlc3VsdCgpIHsKK30KKworLy8gUmV0dXJucyB0aGUgaS10aCB0
ZXN0IHBhcnQgcmVzdWx0IGFtb25nIGFsbCB0aGUgcmVzdWx0cy4gaSBjYW4KKy8vIHJhbmdlIGZy
b20gMCB0byB0b3RhbF9wYXJ0X2NvdW50KCkgLSAxLiBJZiBpIGlzIG5vdCBpbiB0aGF0IHJhbmdl
LAorLy8gYWJvcnRzIHRoZSBwcm9ncmFtLgorY29uc3QgVGVzdFBhcnRSZXN1bHQmIFRlc3RSZXN1
bHQ6OkdldFRlc3RQYXJ0UmVzdWx0KGludCBpKSBjb25zdCB7CisgIGlmIChpIDwgMCB8fCBpID49
IHRvdGFsX3BhcnRfY291bnQoKSkKKyAgICBpbnRlcm5hbDo6cG9zaXg6OkFib3J0KCk7CisgIHJl
dHVybiB0ZXN0X3BhcnRfcmVzdWx0c18uYXQoaSk7Cit9CisKKy8vIFJldHVybnMgdGhlIGktdGgg
dGVzdCBwcm9wZXJ0eS4gaSBjYW4gcmFuZ2UgZnJvbSAwIHRvCisvLyB0ZXN0X3Byb3BlcnR5X2Nv
dW50KCkgLSAxLiBJZiBpIGlzIG5vdCBpbiB0aGF0IHJhbmdlLCBhYm9ydHMgdGhlCisvLyBwcm9n
cmFtLgorY29uc3QgVGVzdFByb3BlcnR5JiBUZXN0UmVzdWx0OjpHZXRUZXN0UHJvcGVydHkoaW50
IGkpIGNvbnN0IHsKKyAgaWYgKGkgPCAwIHx8IGkgPj0gdGVzdF9wcm9wZXJ0eV9jb3VudCgpKQor
ICAgIGludGVybmFsOjpwb3NpeDo6QWJvcnQoKTsKKyAgcmV0dXJuIHRlc3RfcHJvcGVydGllc18u
YXQoaSk7Cit9CisKKy8vIENsZWFycyB0aGUgdGVzdCBwYXJ0IHJlc3VsdHMuCit2b2lkIFRlc3RS
ZXN1bHQ6OkNsZWFyVGVzdFBhcnRSZXN1bHRzKCkgeworICB0ZXN0X3BhcnRfcmVzdWx0c18uY2xl
YXIoKTsKK30KKworLy8gQWRkcyBhIHRlc3QgcGFydCByZXN1bHQgdG8gdGhlIGxpc3QuCit2b2lk
IFRlc3RSZXN1bHQ6OkFkZFRlc3RQYXJ0UmVzdWx0KGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiB0ZXN0
X3BhcnRfcmVzdWx0KSB7CisgIHRlc3RfcGFydF9yZXN1bHRzXy5wdXNoX2JhY2sodGVzdF9wYXJ0
X3Jlc3VsdCk7Cit9CisKKy8vIEFkZHMgYSB0ZXN0IHByb3BlcnR5IHRvIHRoZSBsaXN0LiBJZiBh
IHByb3BlcnR5IHdpdGggdGhlIHNhbWUga2V5IGFzIHRoZQorLy8gc3VwcGxpZWQgcHJvcGVydHkg
aXMgYWxyZWFkeSByZXByZXNlbnRlZCwgdGhlIHZhbHVlIG9mIHRoaXMgdGVzdF9wcm9wZXJ0eQor
Ly8gcmVwbGFjZXMgdGhlIG9sZCB2YWx1ZSBmb3IgdGhhdCBrZXkuCit2b2lkIFRlc3RSZXN1bHQ6
OlJlY29yZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiB4bWxfZWxlbWVudCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGVzdFByb3BlcnR5JiB0ZXN0X3Byb3BlcnR5
KSB7CisgIGlmICghVmFsaWRhdGVUZXN0UHJvcGVydHkoeG1sX2VsZW1lbnQsIHRlc3RfcHJvcGVy
dHkpKSB7CisgICAgcmV0dXJuOworICB9CisgIGludGVybmFsOjpNdXRleExvY2sgbG9jaygmdGVz
dF9wcm9wZXJpdGVzX211dGV4Xyk7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPFRlc3RQcm9wZXJ0eT46
Oml0ZXJhdG9yIHByb3BlcnR5X3dpdGhfbWF0Y2hpbmdfa2V5ID0KKyAgICAgIHN0ZDo6ZmluZF9p
Zih0ZXN0X3Byb3BlcnRpZXNfLmJlZ2luKCksIHRlc3RfcHJvcGVydGllc18uZW5kKCksCisgICAg
ICAgICAgICAgICAgICAgaW50ZXJuYWw6OlRlc3RQcm9wZXJ0eUtleUlzKHRlc3RfcHJvcGVydHku
a2V5KCkpKTsKKyAgaWYgKHByb3BlcnR5X3dpdGhfbWF0Y2hpbmdfa2V5ID09IHRlc3RfcHJvcGVy
dGllc18uZW5kKCkpIHsKKyAgICB0ZXN0X3Byb3BlcnRpZXNfLnB1c2hfYmFjayh0ZXN0X3Byb3Bl
cnR5KTsKKyAgICByZXR1cm47CisgIH0KKyAgcHJvcGVydHlfd2l0aF9tYXRjaGluZ19rZXktPlNl
dFZhbHVlKHRlc3RfcHJvcGVydHkudmFsdWUoKSk7Cit9CisKKy8vIFRoZSBsaXN0IG9mIHJlc2Vy
dmVkIGF0dHJpYnV0ZXMgdXNlZCBpbiB0aGUgPHRlc3RzdWl0ZXM+IGVsZW1lbnQgb2YgWE1MCisv
LyBvdXRwdXQuCitzdGF0aWMgY29uc3QgY2hhciogY29uc3Qga1Jlc2VydmVkVGVzdFN1aXRlc0F0
dHJpYnV0ZXNbXSA9IHsKKyAgImRpc2FibGVkIiwKKyAgImVycm9ycyIsCisgICJmYWlsdXJlcyIs
CisgICJuYW1lIiwKKyAgInJhbmRvbV9zZWVkIiwKKyAgInRlc3RzIiwKKyAgInRpbWUiLAorICAi
dGltZXN0YW1wIgorfTsKKworLy8gVGhlIGxpc3Qgb2YgcmVzZXJ2ZWQgYXR0cmlidXRlcyB1c2Vk
IGluIHRoZSA8dGVzdHN1aXRlPiBlbGVtZW50IG9mIFhNTAorLy8gb3V0cHV0Lgorc3RhdGljIGNv
bnN0IGNoYXIqIGNvbnN0IGtSZXNlcnZlZFRlc3RTdWl0ZUF0dHJpYnV0ZXNbXSA9IHsKKyAgImRp
c2FibGVkIiwKKyAgImVycm9ycyIsCisgICJmYWlsdXJlcyIsCisgICJuYW1lIiwKKyAgInRlc3Rz
IiwKKyAgInRpbWUiCit9OworCisvLyBUaGUgbGlzdCBvZiByZXNlcnZlZCBhdHRyaWJ1dGVzIHVz
ZWQgaW4gdGhlIDx0ZXN0Y2FzZT4gZWxlbWVudCBvZiBYTUwgb3V0cHV0Lgorc3RhdGljIGNvbnN0
IGNoYXIqIGNvbnN0IGtSZXNlcnZlZFRlc3RDYXNlQXR0cmlidXRlc1tdID0geworICAiY2xhc3Nu
YW1lIiwKKyAgIm5hbWUiLAorICAic3RhdHVzIiwKKyAgInRpbWUiLAorICAidHlwZV9wYXJhbSIs
CisgICJ2YWx1ZV9wYXJhbSIKK307CisKK3RlbXBsYXRlIDxpbnQga1NpemU+CitzdGQ6OnZlY3Rv
cjxzdGQ6OnN0cmluZz4gQXJyYXlBc1ZlY3Rvcihjb25zdCBjaGFyKiBjb25zdCAoJmFycmF5KVtr
U2l6ZV0pIHsKKyAgcmV0dXJuIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPihhcnJheSwgYXJyYXkg
KyBrU2l6ZSk7Cit9CisKK3N0YXRpYyBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gR2V0UmVzZXJ2
ZWRBdHRyaWJ1dGVzRm9yRWxlbWVudCgKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgeG1sX2VsZW1l
bnQpIHsKKyAgaWYgKHhtbF9lbGVtZW50ID09ICJ0ZXN0c3VpdGVzIikgeworICAgIHJldHVybiBB
cnJheUFzVmVjdG9yKGtSZXNlcnZlZFRlc3RTdWl0ZXNBdHRyaWJ1dGVzKTsKKyAgfSBlbHNlIGlm
ICh4bWxfZWxlbWVudCA9PSAidGVzdHN1aXRlIikgeworICAgIHJldHVybiBBcnJheUFzVmVjdG9y
KGtSZXNlcnZlZFRlc3RTdWl0ZUF0dHJpYnV0ZXMpOworICB9IGVsc2UgaWYgKHhtbF9lbGVtZW50
ID09ICJ0ZXN0Y2FzZSIpIHsKKyAgICByZXR1cm4gQXJyYXlBc1ZlY3RvcihrUmVzZXJ2ZWRUZXN0
Q2FzZUF0dHJpYnV0ZXMpOworICB9IGVsc2UgeworICAgIEdURVNUX0NIRUNLXyhmYWxzZSkgPDwg
IlVucmVjb2duaXplZCB4bWxfZWxlbWVudCBwcm92aWRlZDogIiA8PCB4bWxfZWxlbWVudDsKKyAg
fQorICAvLyBUaGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgYnV0IHNvbWUgY29tcGlsZXJzIG1heSBu
b3QgcmVhbGl6ZXMgdGhhdC4KKyAgcmV0dXJuIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPigpOwor
fQorCitzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0V29yZExpc3QoY29uc3Qgc3RkOjp2ZWN0b3I8
c3RkOjpzdHJpbmc+JiB3b3JkcykgeworICBNZXNzYWdlIHdvcmRfbGlzdDsKKyAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCB3b3Jkcy5zaXplKCk7ICsraSkgeworICAgIGlmIChpID4gMCAmJiB3b3Jk
cy5zaXplKCkgPiAyKSB7CisgICAgICB3b3JkX2xpc3QgPDwgIiwgIjsKKyAgICB9CisgICAgaWYg
KGkgPT0gd29yZHMuc2l6ZSgpIC0gMSkgeworICAgICAgd29yZF9saXN0IDw8ICJhbmQgIjsKKyAg
ICB9CisgICAgd29yZF9saXN0IDw8ICInIiA8PCB3b3Jkc1tpXSA8PCAiJyI7CisgIH0KKyAgcmV0
dXJuIHdvcmRfbGlzdC5HZXRTdHJpbmcoKTsKK30KKworYm9vbCBWYWxpZGF0ZVRlc3RQcm9wZXJ0
eU5hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIHByb3BlcnR5X25hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIHJlc2VydmVkX25h
bWVzKSB7CisgIGlmIChzdGQ6OmZpbmQocmVzZXJ2ZWRfbmFtZXMuYmVnaW4oKSwgcmVzZXJ2ZWRf
bmFtZXMuZW5kKCksIHByb3BlcnR5X25hbWUpICE9CisgICAgICAgICAgcmVzZXJ2ZWRfbmFtZXMu
ZW5kKCkpIHsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJSZXNlcnZlZCBrZXkgdXNlZCBpbiBSZWNv
cmRQcm9wZXJ0eSgpOiAiIDw8IHByb3BlcnR5X25hbWUKKyAgICAgICAgICAgICAgICAgIDw8ICIg
KCIgPDwgRm9ybWF0V29yZExpc3QocmVzZXJ2ZWRfbmFtZXMpCisgICAgICAgICAgICAgICAgICA8
PCAiIGFyZSByZXNlcnZlZCBieSAiIDw8IEdURVNUX05BTUVfIDw8ICIpIjsKKyAgICByZXR1cm4g
ZmFsc2U7CisgIH0KKyAgcmV0dXJuIHRydWU7Cit9CisKKy8vIEFkZHMgYSBmYWlsdXJlIGlmIHRo
ZSBrZXkgaXMgYSByZXNlcnZlZCBhdHRyaWJ1dGUgb2YgdGhlIGVsZW1lbnQgbmFtZWQKKy8vIHht
bF9lbGVtZW50LiAgUmV0dXJucyB0cnVlIGlmIHRoZSBwcm9wZXJ0eSBpcyB2YWxpZC4KK2Jvb2wg
VGVzdFJlc3VsdDo6VmFsaWRhdGVUZXN0UHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIHhtbF9l
bGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXN0
UHJvcGVydHkmIHRlc3RfcHJvcGVydHkpIHsKKyAgcmV0dXJuIFZhbGlkYXRlVGVzdFByb3BlcnR5
TmFtZSh0ZXN0X3Byb3BlcnR5LmtleSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdldFJlc2VydmVkQXR0cmlidXRlc0ZvckVsZW1lbnQoeG1sX2VsZW1lbnQpKTsKK30KKwor
Ly8gQ2xlYXJzIHRoZSBvYmplY3QuCit2b2lkIFRlc3RSZXN1bHQ6OkNsZWFyKCkgeworICB0ZXN0
X3BhcnRfcmVzdWx0c18uY2xlYXIoKTsKKyAgdGVzdF9wcm9wZXJ0aWVzXy5jbGVhcigpOworICBk
ZWF0aF90ZXN0X2NvdW50XyA9IDA7CisgIGVsYXBzZWRfdGltZV8gPSAwOworfQorCisvLyBSZXR1
cm5zIHRydWUgaWZmIHRoZSB0ZXN0IGZhaWxlZC4KK2Jvb2wgVGVzdFJlc3VsdDo6RmFpbGVkKCkg
Y29uc3QgeworICBmb3IgKGludCBpID0gMDsgaSA8IHRvdGFsX3BhcnRfY291bnQoKTsgKytpKSB7
CisgICAgaWYgKEdldFRlc3RQYXJ0UmVzdWx0KGkpLmZhaWxlZCgpKQorICAgICAgcmV0dXJuIHRy
dWU7CisgIH0KKyAgcmV0dXJuIGZhbHNlOworfQorCisvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSB0
ZXN0IHBhcnQgZmF0YWxseSBmYWlsZWQuCitzdGF0aWMgYm9vbCBUZXN0UGFydEZhdGFsbHlGYWls
ZWQoY29uc3QgVGVzdFBhcnRSZXN1bHQmIHJlc3VsdCkgeworICByZXR1cm4gcmVzdWx0LmZhdGFs
bHlfZmFpbGVkKCk7Cit9CisKKy8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHRlc3QgZmF0YWxseSBm
YWlsZWQuCitib29sIFRlc3RSZXN1bHQ6Okhhc0ZhdGFsRmFpbHVyZSgpIGNvbnN0IHsKKyAgcmV0
dXJuIENvdW50SWYodGVzdF9wYXJ0X3Jlc3VsdHNfLCBUZXN0UGFydEZhdGFsbHlGYWlsZWQpID4g
MDsKK30KKworLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgdGVzdCBwYXJ0IG5vbi1mYXRhbGx5IGZh
aWxlZC4KK3N0YXRpYyBib29sIFRlc3RQYXJ0Tm9uZmF0YWxseUZhaWxlZChjb25zdCBUZXN0UGFy
dFJlc3VsdCYgcmVzdWx0KSB7CisgIHJldHVybiByZXN1bHQubm9uZmF0YWxseV9mYWlsZWQoKTsK
K30KKworLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgdGVzdCBoYXMgYSBub24tZmF0YWwgZmFpbHVy
ZS4KK2Jvb2wgVGVzdFJlc3VsdDo6SGFzTm9uZmF0YWxGYWlsdXJlKCkgY29uc3QgeworICByZXR1
cm4gQ291bnRJZih0ZXN0X3BhcnRfcmVzdWx0c18sIFRlc3RQYXJ0Tm9uZmF0YWxseUZhaWxlZCkg
PiAwOworfQorCisvLyBHZXRzIHRoZSBudW1iZXIgb2YgYWxsIHRlc3QgcGFydHMuICBUaGlzIGlz
IHRoZSBzdW0gb2YgdGhlIG51bWJlcgorLy8gb2Ygc3VjY2Vzc2Z1bCB0ZXN0IHBhcnRzIGFuZCB0
aGUgbnVtYmVyIG9mIGZhaWxlZCB0ZXN0IHBhcnRzLgoraW50IFRlc3RSZXN1bHQ6OnRvdGFsX3Bh
cnRfY291bnQoKSBjb25zdCB7CisgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHRlc3RfcGFydF9y
ZXN1bHRzXy5zaXplKCkpOworfQorCisvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdGhlIHRlc3Qg
cHJvcGVydGllcy4KK2ludCBUZXN0UmVzdWx0Ojp0ZXN0X3Byb3BlcnR5X2NvdW50KCkgY29uc3Qg
eworICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pih0ZXN0X3Byb3BlcnRpZXNfLnNpemUoKSk7Cit9
CisKKy8vIGNsYXNzIFRlc3QKKworLy8gQ3JlYXRlcyBhIFRlc3Qgb2JqZWN0LgorCisvLyBUaGUg
Yyd0b3Igc2F2ZXMgdGhlIHN0YXRlcyBvZiBhbGwgZmxhZ3MuCitUZXN0OjpUZXN0KCkKKyAgICA6
IGd0ZXN0X2ZsYWdfc2F2ZXJfKG5ldyBHVEVTVF9GTEFHX1NBVkVSXykgeworfQorCisvLyBUaGUg
ZCd0b3IgcmVzdG9yZXMgdGhlIHN0YXRlcyBvZiBhbGwgZmxhZ3MuICBUaGUgYWN0dWFsIHdvcmsg
aXMKKy8vIGRvbmUgYnkgdGhlIGQndG9yIG9mIHRoZSBndGVzdF9mbGFnX3NhdmVyXyBmaWVsZCwg
YW5kIHRodXMgbm90CisvLyB2aXNpYmxlIGhlcmUuCitUZXN0Ojp+VGVzdCgpIHsKK30KKworLy8g
U2V0cyB1cCB0aGUgdGVzdCBmaXh0dXJlLgorLy8KKy8vIEEgc3ViLWNsYXNzIG1heSBvdmVycmlk
ZSB0aGlzLgordm9pZCBUZXN0OjpTZXRVcCgpIHsKK30KKworLy8gVGVhcnMgZG93biB0aGUgdGVz
dCBmaXh0dXJlLgorLy8KKy8vIEEgc3ViLWNsYXNzIG1heSBvdmVycmlkZSB0aGlzLgordm9pZCBU
ZXN0OjpUZWFyRG93bigpIHsKK30KKworLy8gQWxsb3dzIHVzZXIgc3VwcGxpZWQga2V5IHZhbHVl
IHBhaXJzIHRvIGJlIHJlY29yZGVkIGZvciBsYXRlciBvdXRwdXQuCit2b2lkIFRlc3Q6OlJlY29y
ZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXksIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1
ZSkgeworICBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+UmVjb3JkUHJvcGVydHkoa2V5LCB2YWx1
ZSk7Cit9CisKKy8vIEFsbG93cyB1c2VyIHN1cHBsaWVkIGtleSB2YWx1ZSBwYWlycyB0byBiZSBy
ZWNvcmRlZCBmb3IgbGF0ZXIgb3V0cHV0Lgordm9pZCBUZXN0OjpSZWNvcmRQcm9wZXJ0eShjb25z
dCBzdGQ6OnN0cmluZyYga2V5LCBpbnQgdmFsdWUpIHsKKyAgTWVzc2FnZSB2YWx1ZV9tZXNzYWdl
OworICB2YWx1ZV9tZXNzYWdlIDw8IHZhbHVlOworICBSZWNvcmRQcm9wZXJ0eShrZXksIHZhbHVl
X21lc3NhZ2UuR2V0U3RyaW5nKCkuY19zdHIoKSk7Cit9CisKK25hbWVzcGFjZSBpbnRlcm5hbCB7
CisKK3ZvaWQgUmVwb3J0RmFpbHVyZUluVW5rbm93bkxvY2F0aW9uKFRlc3RQYXJ0UmVzdWx0OjpU
eXBlIHJlc3VsdF90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UpIHsKKyAgLy8gVGhpcyBmdW5jdGlvbiBpcyBhIGZyaWVu
ZCBvZiBVbml0VGVzdCBhbmQgYXMgc3VjaCBoYXMgYWNjZXNzIHRvCisgIC8vIEFkZFRlc3RQYXJ0
UmVzdWx0LgorICBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+QWRkVGVzdFBhcnRSZXN1bHQoCisg
ICAgICByZXN1bHRfdHlwZSwKKyAgICAgIE5VTEwsICAvLyBObyBpbmZvIGFib3V0IHRoZSBzb3Vy
Y2UgZmlsZSB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkLgorICAgICAgLTEsICAgIC8vIFdl
IGhhdmUgbm8gaW5mbyBvbiB3aGljaCBsaW5lIGNhdXNlZCB0aGUgZXhjZXB0aW9uLgorICAgICAg
bWVzc2FnZSwKKyAgICAgICIiKTsgICAvLyBObyBzdGFjayB0cmFjZSwgZWl0aGVyLgorfQorCit9
ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKKworLy8gR29vZ2xlIFRlc3QgcmVxdWlyZXMgYWxsIHRl
c3RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSB0byB1c2UgdGhlIHNhbWUgdGVzdAorLy8gZml4dHVy
ZSBjbGFzcy4gIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSBjdXJyZW50IHRlc3QgaGFzIHRo
ZQorLy8gc2FtZSBmaXh0dXJlIGNsYXNzIGFzIHRoZSBmaXJzdCB0ZXN0IGluIHRoZSBjdXJyZW50
IHRlc3QgY2FzZS4gIElmCisvLyB5ZXMsIGl0IHJldHVybnMgdHJ1ZTsgb3RoZXJ3aXNlIGl0IGdl
bmVyYXRlcyBhIEdvb2dsZSBUZXN0IGZhaWx1cmUgYW5kCisvLyByZXR1cm5zIGZhbHNlLgorYm9v
bCBUZXN0OjpIYXNTYW1lRml4dHVyZUNsYXNzKCkgeworICBpbnRlcm5hbDo6VW5pdFRlc3RJbXBs
KiBjb25zdCBpbXBsID0gaW50ZXJuYWw6OkdldFVuaXRUZXN0SW1wbCgpOworICBjb25zdCBUZXN0
Q2FzZSogY29uc3QgdGVzdF9jYXNlID0gaW1wbC0+Y3VycmVudF90ZXN0X2Nhc2UoKTsKKworICAv
LyBJbmZvIGFib3V0IHRoZSBmaXJzdCB0ZXN0IGluIHRoZSBjdXJyZW50IHRlc3QgY2FzZS4KKyAg
Y29uc3QgVGVzdEluZm8qIGNvbnN0IGZpcnN0X3Rlc3RfaW5mbyA9IHRlc3RfY2FzZS0+dGVzdF9p
bmZvX2xpc3QoKVswXTsKKyAgY29uc3QgaW50ZXJuYWw6OlR5cGVJZCBmaXJzdF9maXh0dXJlX2lk
ID0gZmlyc3RfdGVzdF9pbmZvLT5maXh0dXJlX2NsYXNzX2lkXzsKKyAgY29uc3QgY2hhciogY29u
c3QgZmlyc3RfdGVzdF9uYW1lID0gZmlyc3RfdGVzdF9pbmZvLT5uYW1lKCk7CisKKyAgLy8gSW5m
byBhYm91dCB0aGUgY3VycmVudCB0ZXN0LgorICBjb25zdCBUZXN0SW5mbyogY29uc3QgdGhpc190
ZXN0X2luZm8gPSBpbXBsLT5jdXJyZW50X3Rlc3RfaW5mbygpOworICBjb25zdCBpbnRlcm5hbDo6
VHlwZUlkIHRoaXNfZml4dHVyZV9pZCA9IHRoaXNfdGVzdF9pbmZvLT5maXh0dXJlX2NsYXNzX2lk
XzsKKyAgY29uc3QgY2hhciogY29uc3QgdGhpc190ZXN0X25hbWUgPSB0aGlzX3Rlc3RfaW5mby0+
bmFtZSgpOworCisgIGlmICh0aGlzX2ZpeHR1cmVfaWQgIT0gZmlyc3RfZml4dHVyZV9pZCkgewor
ICAgIC8vIElzIHRoZSBmaXJzdCB0ZXN0IGRlZmluZWQgdXNpbmcgVEVTVD8KKyAgICBjb25zdCBi
b29sIGZpcnN0X2lzX1RFU1QgPSBmaXJzdF9maXh0dXJlX2lkID09IGludGVybmFsOjpHZXRUZXN0
VHlwZUlkKCk7CisgICAgLy8gSXMgdGhpcyB0ZXN0IGRlZmluZWQgdXNpbmcgVEVTVD8KKyAgICBj
b25zdCBib29sIHRoaXNfaXNfVEVTVCA9IHRoaXNfZml4dHVyZV9pZCA9PSBpbnRlcm5hbDo6R2V0
VGVzdFR5cGVJZCgpOworCisgICAgaWYgKGZpcnN0X2lzX1RFU1QgfHwgdGhpc19pc19URVNUKSB7
CisgICAgICAvLyBCb3RoIFRFU1QgYW5kIFRFU1RfRiBhcHBlYXIgaW4gc2FtZSB0ZXN0IGNhc2Us
IHdoaWNoIGlzIGluY29ycmVjdC4KKyAgICAgIC8vIFRlbGwgdGhlIHVzZXIgaG93IHRvIGZpeCB0
aGlzLgorCisgICAgICAvLyBHZXRzIHRoZSBuYW1lIG9mIHRoZSBURVNUIGFuZCB0aGUgbmFtZSBv
ZiB0aGUgVEVTVF9GLiAgTm90ZQorICAgICAgLy8gdGhhdCBmaXJzdF9pc19URVNUIGFuZCB0aGlz
X2lzX1RFU1QgY2Fubm90IGJvdGggYmUgdHJ1ZSwgYXMKKyAgICAgIC8vIHRoZSBmaXh0dXJlIElE
cyBhcmUgZGlmZmVyZW50IGZvciB0aGUgdHdvIHRlc3RzLgorICAgICAgY29uc3QgY2hhciogY29u
c3QgVEVTVF9uYW1lID0KKyAgICAgICAgICBmaXJzdF9pc19URVNUID8gZmlyc3RfdGVzdF9uYW1l
IDogdGhpc190ZXN0X25hbWU7CisgICAgICBjb25zdCBjaGFyKiBjb25zdCBURVNUX0ZfbmFtZSA9
CisgICAgICAgICAgZmlyc3RfaXNfVEVTVCA/IHRoaXNfdGVzdF9uYW1lIDogZmlyc3RfdGVzdF9u
YW1lOworCisgICAgICBBRERfRkFJTFVSRSgpCisgICAgICAgICAgPDwgIkFsbCB0ZXN0cyBpbiB0
aGUgc2FtZSB0ZXN0IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUgdGVzdCBmaXh0dXJlXG4iCisgICAg
ICAgICAgPDwgImNsYXNzLCBzbyBtaXhpbmcgVEVTVF9GIGFuZCBURVNUIGluIHRoZSBzYW1lIHRl
c3QgY2FzZSBpc1xuIgorICAgICAgICAgIDw8ICJpbGxlZ2FsLiAgSW4gdGVzdCBjYXNlICIgPDwg
dGhpc190ZXN0X2luZm8tPnRlc3RfY2FzZV9uYW1lKCkKKyAgICAgICAgICA8PCAiLFxuIgorICAg
ICAgICAgIDw8ICJ0ZXN0ICIgPDwgVEVTVF9GX25hbWUgPDwgIiBpcyBkZWZpbmVkIHVzaW5nIFRF
U1RfRiBidXRcbiIKKyAgICAgICAgICA8PCAidGVzdCAiIDw8IFRFU1RfbmFtZSA8PCAiIGlzIGRl
ZmluZWQgdXNpbmcgVEVTVC4gIFlvdSBwcm9iYWJseVxuIgorICAgICAgICAgIDw8ICJ3YW50IHRv
IGNoYW5nZSB0aGUgVEVTVCB0byBURVNUX0Ygb3IgbW92ZSBpdCB0byBhbm90aGVyIHRlc3RcbiIK
KyAgICAgICAgICA8PCAiY2FzZS4iOworICAgIH0gZWxzZSB7CisgICAgICAvLyBUd28gZml4dHVy
ZSBjbGFzc2VzIHdpdGggdGhlIHNhbWUgbmFtZSBhcHBlYXIgaW4gdHdvIGRpZmZlcmVudAorICAg
ICAgLy8gbmFtZXNwYWNlcywgd2hpY2ggaXMgbm90IGFsbG93ZWQuIFRlbGwgdGhlIHVzZXIgaG93
IHRvIGZpeCB0aGlzLgorICAgICAgQUREX0ZBSUxVUkUoKQorICAgICAgICAgIDw8ICJBbGwgdGVz
dHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRoZSBzYW1lIHRlc3QgZml4dHVyZVxu
IgorICAgICAgICAgIDw8ICJjbGFzcy4gIEhvd2V2ZXIsIGluIHRlc3QgY2FzZSAiCisgICAgICAg
ICAgPDwgdGhpc190ZXN0X2luZm8tPnRlc3RfY2FzZV9uYW1lKCkgPDwgIixcbiIKKyAgICAgICAg
ICA8PCAieW91IGRlZmluZWQgdGVzdCAiIDw8IGZpcnN0X3Rlc3RfbmFtZQorICAgICAgICAgIDw8
ICIgYW5kIHRlc3QgIiA8PCB0aGlzX3Rlc3RfbmFtZSA8PCAiXG4iCisgICAgICAgICAgPDwgInVz
aW5nIHR3byBkaWZmZXJlbnQgdGVzdCBmaXh0dXJlIGNsYXNzZXMuICBUaGlzIGNhbiBoYXBwZW4g
aWZcbiIKKyAgICAgICAgICA8PCAidGhlIHR3byBjbGFzc2VzIGFyZSBmcm9tIGRpZmZlcmVudCBu
YW1lc3BhY2VzIG9yIHRyYW5zbGF0aW9uXG4iCisgICAgICAgICAgPDwgInVuaXRzIGFuZCBoYXZl
IHRoZSBzYW1lIG5hbWUuICBZb3Ugc2hvdWxkIHByb2JhYmx5IHJlbmFtZSBvbmVcbiIKKyAgICAg
ICAgICA8PCAib2YgdGhlIGNsYXNzZXMgdG8gcHV0IHRoZSB0ZXN0cyBpbnRvIGRpZmZlcmVudCB0
ZXN0IGNhc2VzLiI7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIHJldHVybiB0
cnVlOworfQorCisjaWYgR1RFU1RfSEFTX1NFSAorCisvLyBBZGRzIGFuICJleGNlcHRpb24gdGhy
b3duIiBmYXRhbCBmYWlsdXJlIHRvIHRoZSBjdXJyZW50IHRlc3QuICBUaGlzCisvLyBmdW5jdGlv
biByZXR1cm5zIGl0cyByZXN1bHQgdmlhIGFuIG91dHB1dCBwYXJhbWV0ZXIgcG9pbnRlciBiZWNh
dXNlIFZDKysKKy8vIHByb2hpYml0cyBjcmVhdGlvbiBvZiBvYmplY3RzIHdpdGggZGVzdHJ1Y3Rv
cnMgb24gc3RhY2sgaW4gZnVuY3Rpb25zCisvLyB1c2luZyBfX3RyeSAoc2VlIGVycm9yIEMyNzEy
KS4KK3N0YXRpYyBzdGQ6OnN0cmluZyogRm9ybWF0U2VoRXhjZXB0aW9uTWVzc2FnZShEV09SRCBl
eGNlcHRpb25fY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBsb2NhdGlvbikgeworICBNZXNzYWdlIG1lc3NhZ2U7CisgIG1lc3Nh
Z2UgPDwgIlNFSCBleGNlcHRpb24gd2l0aCBjb2RlIDB4IiA8PCBzdGQ6OnNldGJhc2UoMTYpIDw8
CisgICAgZXhjZXB0aW9uX2NvZGUgPDwgc3RkOjpzZXRiYXNlKDEwKSA8PCAiIHRocm93biBpbiAi
IDw8IGxvY2F0aW9uIDw8ICIuIjsKKworICByZXR1cm4gbmV3IHN0ZDo6c3RyaW5nKG1lc3NhZ2Uu
R2V0U3RyaW5nKCkpOworfQorCisjZW5kaWYgIC8vIEdURVNUX0hBU19TRUgKKworbmFtZXNwYWNl
IGludGVybmFsIHsKKworI2lmIEdURVNUX0hBU19FWENFUFRJT05TCisKKy8vIEFkZHMgYW4gImV4
Y2VwdGlvbiB0aHJvd24iIGZhdGFsIGZhaWx1cmUgdG8gdGhlIGN1cnJlbnQgdGVzdC4KK3N0YXRp
YyBzdGQ6OnN0cmluZyBGb3JtYXRDeHhFeGNlcHRpb25NZXNzYWdlKGNvbnN0IGNoYXIqIGRlc2Ny
aXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogbG9jYXRpb24pIHsKKyAgTWVzc2FnZSBtZXNzYWdlOworICBpZiAoZGVzY3JpcHRp
b24gIT0gTlVMTCkgeworICAgIG1lc3NhZ2UgPDwgIkMrKyBleGNlcHRpb24gd2l0aCBkZXNjcmlw
dGlvbiBcIiIgPDwgZGVzY3JpcHRpb24gPDwgIlwiIjsKKyAgfSBlbHNlIHsKKyAgICBtZXNzYWdl
IDw8ICJVbmtub3duIEMrKyBleGNlcHRpb24iOworICB9CisgIG1lc3NhZ2UgPDwgIiB0aHJvd24g
aW4gIiA8PCBsb2NhdGlvbiA8PCAiLiI7CisKKyAgcmV0dXJuIG1lc3NhZ2UuR2V0U3RyaW5nKCk7
Cit9CisKK3N0YXRpYyBzdGQ6OnN0cmluZyBQcmludFRlc3RQYXJ0UmVzdWx0VG9TdHJpbmcoCisg
ICAgY29uc3QgVGVzdFBhcnRSZXN1bHQmIHRlc3RfcGFydF9yZXN1bHQpOworCitHb29nbGVUZXN0
RmFpbHVyZUV4Y2VwdGlvbjo6R29vZ2xlVGVzdEZhaWx1cmVFeGNlcHRpb24oCisgICAgY29uc3Qg
VGVzdFBhcnRSZXN1bHQmIGZhaWx1cmUpCisgICAgOiA6OnN0ZDo6cnVudGltZV9lcnJvcihQcmlu
dFRlc3RQYXJ0UmVzdWx0VG9TdHJpbmcoZmFpbHVyZSkuY19zdHIoKSkge30KKworI2VuZGlmICAv
LyBHVEVTVF9IQVNfRVhDRVBUSU9OUworCisvLyBXZSBwdXQgdGhlc2UgaGVscGVyIGZ1bmN0aW9u
cyBpbiB0aGUgaW50ZXJuYWwgbmFtZXNwYWNlIGFzIElCTSdzIHhsQworLy8gY29tcGlsZXIgcmVq
ZWN0cyB0aGUgY29kZSBpZiB0aGV5IHdlcmUgZGVjbGFyZWQgc3RhdGljLgorCisvLyBSdW5zIHRo
ZSBnaXZlbiBtZXRob2QgYW5kIGhhbmRsZXMgU0VIIGV4Y2VwdGlvbnMgaXQgdGhyb3dzLCB3aGVu
CisvLyBTRUggaXMgc3VwcG9ydGVkOyByZXR1cm5zIHRoZSAwLXZhbHVlIGZvciB0eXBlIFJlc3Vs
dCBpbiBjYXNlIG9mIGFuCisvLyBTRUggZXhjZXB0aW9uLiAgKE1pY3Jvc29mdCBjb21waWxlcnMg
Y2Fubm90IGhhbmRsZSBTRUggYW5kIEMrKworLy8gZXhjZXB0aW9ucyBpbiB0aGUgc2FtZSBmdW5j
dGlvbi4gIFRoZXJlZm9yZSwgd2UgcHJvdmlkZSBhIHNlcGFyYXRlCisvLyB3cmFwcGVyIGZ1bmN0
aW9uIGZvciBoYW5kbGluZyBTRUggZXhjZXB0aW9ucy4pCit0ZW1wbGF0ZSA8Y2xhc3MgVCwgdHlw
ZW5hbWUgUmVzdWx0PgorUmVzdWx0IEhhbmRsZVNlaEV4Y2VwdGlvbnNJbk1ldGhvZElmU3VwcG9y
dGVkKAorICAgIFQqIG9iamVjdCwgUmVzdWx0IChUOjoqbWV0aG9kKSgpLCBjb25zdCBjaGFyKiBs
b2NhdGlvbikgeworI2lmIEdURVNUX0hBU19TRUgKKyAgX190cnkgeworICAgIHJldHVybiAob2Jq
ZWN0LT4qbWV0aG9kKSgpOworICB9IF9fZXhjZXB0IChpbnRlcm5hbDo6VW5pdFRlc3RPcHRpb25z
OjpHVGVzdFNob3VsZFByb2Nlc3NTRUgoICAvLyBOT0xJTlQKKyAgICAgIEdldEV4Y2VwdGlvbkNv
ZGUoKSkpIHsKKyAgICAvLyBXZSBjcmVhdGUgdGhlIGV4Y2VwdGlvbiBtZXNzYWdlIG9uIHRoZSBo
ZWFwIGJlY2F1c2UgVkMrKyBwcm9oaWJpdHMKKyAgICAvLyBjcmVhdGlvbiBvZiBvYmplY3RzIHdp
dGggZGVzdHJ1Y3RvcnMgb24gc3RhY2sgaW4gZnVuY3Rpb25zIHVzaW5nIF9fdHJ5CisgICAgLy8g
KHNlZSBlcnJvciBDMjcxMikuCisgICAgc3RkOjpzdHJpbmcqIGV4Y2VwdGlvbl9tZXNzYWdlID0g
Rm9ybWF0U2VoRXhjZXB0aW9uTWVzc2FnZSgKKyAgICAgICAgR2V0RXhjZXB0aW9uQ29kZSgpLCBs
b2NhdGlvbik7CisgICAgaW50ZXJuYWw6OlJlcG9ydEZhaWx1cmVJblVua25vd25Mb2NhdGlvbihU
ZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICpleGNlcHRpb25fbWVzc2FnZSk7CisgICAgZGVsZXRlIGV4Y2Vw
dGlvbl9tZXNzYWdlOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZXN1bHQ+KDApOworICB9Cisj
ZWxzZQorICAodm9pZClsb2NhdGlvbjsKKyAgcmV0dXJuIChvYmplY3QtPiptZXRob2QpKCk7Cisj
ZW5kaWYgIC8vIEdURVNUX0hBU19TRUgKK30KKworLy8gUnVucyB0aGUgZ2l2ZW4gbWV0aG9kIGFu
ZCBjYXRjaGVzIGFuZCByZXBvcnRzIEMrKyBhbmQvb3IgU0VILXN0eWxlCisvLyBleGNlcHRpb25z
LCBpZiB0aGV5IGFyZSBzdXBwb3J0ZWQ7IHJldHVybnMgdGhlIDAtdmFsdWUgZm9yIHR5cGUKKy8v
IFJlc3VsdCBpbiBjYXNlIG9mIGFuIFNFSCBleGNlcHRpb24uCit0ZW1wbGF0ZSA8Y2xhc3MgVCwg
dHlwZW5hbWUgUmVzdWx0PgorUmVzdWx0IEhhbmRsZUV4Y2VwdGlvbnNJbk1ldGhvZElmU3VwcG9y
dGVkKAorICAgIFQqIG9iamVjdCwgUmVzdWx0IChUOjoqbWV0aG9kKSgpLCBjb25zdCBjaGFyKiBs
b2NhdGlvbikgeworICAvLyBOT1RFOiBUaGUgdXNlciBjb2RlIGNhbiBhZmZlY3QgdGhlIHdheSBp
biB3aGljaCBHb29nbGUgVGVzdCBoYW5kbGVzCisgIC8vIGV4Y2VwdGlvbnMgYnkgc2V0dGluZyBH
VEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpLCBidXQgb25seSBiZWZvcmUKKyAgLy8gUlVOX0FM
TF9URVNUUygpIHN0YXJ0cy4gSXQgaXMgdGVjaG5pY2FsbHkgcG9zc2libGUgdG8gY2hlY2sgdGhl
IGZsYWcKKyAgLy8gYWZ0ZXIgdGhlIGV4Y2VwdGlvbiBpcyBjYXVnaHQgYW5kIGVpdGhlciByZXBv
cnQgb3IgcmUtdGhyb3cgdGhlCisgIC8vIGV4Y2VwdGlvbiBiYXNlZCBvbiB0aGUgZmxhZydzIHZh
bHVlOgorICAvLworICAvLyB0cnkgeworICAvLyAgIC8vIFBlcmZvcm0gdGhlIHRlc3QgbWV0aG9k
LgorICAvLyB9IGNhdGNoICguLi4pIHsKKyAgLy8gICBpZiAoR1RFU1RfRkxBRyhjYXRjaF9leGNl
cHRpb25zKSkKKyAgLy8gICAgIC8vIFJlcG9ydCB0aGUgZXhjZXB0aW9uIGFzIGZhaWx1cmUuCisg
IC8vICAgZWxzZQorICAvLyAgICAgdGhyb3c7ICAvLyBSZS10aHJvd3MgdGhlIG9yaWdpbmFsIGV4
Y2VwdGlvbi4KKyAgLy8gfQorICAvLworICAvLyBIb3dldmVyLCB0aGUgcHVycG9zZSBvZiB0aGlz
IGZsYWcgaXMgdG8gYWxsb3cgdGhlIHByb2dyYW0gdG8gZHJvcCBpbnRvCisgIC8vIHRoZSBkZWJ1
Z2dlciB3aGVuIHRoZSBleGNlcHRpb24gaXMgdGhyb3duLiBPbiBtb3N0IHBsYXRmb3Jtcywgb25j
ZSB0aGUKKyAgLy8gY29udHJvbCBlbnRlcnMgdGhlIGNhdGNoIGJsb2NrLCB0aGUgZXhjZXB0aW9u
IG9yaWdpbiBpbmZvcm1hdGlvbiBpcworICAvLyBsb3N0IGFuZCB0aGUgZGVidWdnZXIgd2lsbCBz
dG9wIHRoZSBwcm9ncmFtIGF0IHRoZSBwb2ludCBvZiB0aGUKKyAgLy8gcmUtdGhyb3cgaW4gdGhp
cyBmdW5jdGlvbiAtLSBpbnN0ZWFkIG9mIGF0IHRoZSBwb2ludCBvZiB0aGUgb3JpZ2luYWwKKyAg
Ly8gdGhyb3cgc3RhdGVtZW50IGluIHRoZSBjb2RlIHVuZGVyIHRlc3QuICBGb3IgdGhpcyByZWFz
b24sIHdlIHBlcmZvcm0KKyAgLy8gdGhlIGNoZWNrIGVhcmx5LCBzYWNyaWZpY2luZyB0aGUgYWJp
bGl0eSB0byBhZmZlY3QgR29vZ2xlIFRlc3QncworICAvLyBleGNlcHRpb24gaGFuZGxpbmcgaW4g
dGhlIG1ldGhvZCB3aGVyZSB0aGUgZXhjZXB0aW9uIGlzIHRocm93bi4KKyAgaWYgKGludGVybmFs
OjpHZXRVbml0VGVzdEltcGwoKS0+Y2F0Y2hfZXhjZXB0aW9ucygpKSB7CisjaWYgR1RFU1RfSEFT
X0VYQ0VQVElPTlMKKyAgICB0cnkgeworICAgICAgcmV0dXJuIEhhbmRsZVNlaEV4Y2VwdGlvbnNJ
bk1ldGhvZElmU3VwcG9ydGVkKG9iamVjdCwgbWV0aG9kLCBsb2NhdGlvbik7CisgICAgfSBjYXRj
aCAoY29uc3QgaW50ZXJuYWw6Okdvb2dsZVRlc3RGYWlsdXJlRXhjZXB0aW9uJikgeyAgLy8gTk9M
SU5UCisgICAgICAvLyBUaGlzIGV4Y2VwdGlvbiB0eXBlIGNhbiBvbmx5IGJlIHRocm93biBieSBh
IGZhaWxlZCBHb29nbGUKKyAgICAgIC8vIFRlc3QgYXNzZXJ0aW9uIHdpdGggdGhlIGludGVudGlv
biBvZiBsZXR0aW5nIGFub3RoZXIgdGVzdGluZworICAgICAgLy8gZnJhbWV3b3JrIGNhdGNoIGl0
LiAgVGhlcmVmb3JlIHdlIGp1c3QgcmUtdGhyb3cgaXQuCisgICAgICB0aHJvdzsKKyAgICB9IGNh
dGNoIChjb25zdCBzdGQ6OmV4Y2VwdGlvbiYgZSkgeyAgLy8gTk9MSU5UCisgICAgICBpbnRlcm5h
bDo6UmVwb3J0RmFpbHVyZUluVW5rbm93bkxvY2F0aW9uKAorICAgICAgICAgIFRlc3RQYXJ0UmVz
dWx0OjprRmF0YWxGYWlsdXJlLAorICAgICAgICAgIEZvcm1hdEN4eEV4Y2VwdGlvbk1lc3NhZ2Uo
ZS53aGF0KCksIGxvY2F0aW9uKSk7CisgICAgfSBjYXRjaCAoLi4uKSB7ICAvLyBOT0xJTlQKKyAg
ICAgIGludGVybmFsOjpSZXBvcnRGYWlsdXJlSW5Vbmtub3duTG9jYXRpb24oCisgICAgICAgICAg
VGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUsCisgICAgICAgICAgRm9ybWF0Q3h4RXhjZXB0
aW9uTWVzc2FnZShOVUxMLCBsb2NhdGlvbikpOworICAgIH0KKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8UmVzdWx0PigwKTsKKyNlbHNlCisgICAgcmV0dXJuIEhhbmRsZVNlaEV4Y2VwdGlvbnNJbk1l
dGhvZElmU3VwcG9ydGVkKG9iamVjdCwgbWV0aG9kLCBsb2NhdGlvbik7CisjZW5kaWYgIC8vIEdU
RVNUX0hBU19FWENFUFRJT05TCisgIH0gZWxzZSB7CisgICAgcmV0dXJuIChvYmplY3QtPiptZXRo
b2QpKCk7CisgIH0KK30KKworfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCisKKy8vIFJ1bnMgdGhl
IHRlc3QgYW5kIHVwZGF0ZXMgdGhlIHRlc3QgcmVzdWx0Lgordm9pZCBUZXN0OjpSdW4oKSB7Cisg
IGlmICghSGFzU2FtZUZpeHR1cmVDbGFzcygpKSByZXR1cm47CisKKyAgaW50ZXJuYWw6OlVuaXRU
ZXN0SW1wbCogY29uc3QgaW1wbCA9IGludGVybmFsOjpHZXRVbml0VGVzdEltcGwoKTsKKyAgaW1w
bC0+b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCktPlVwb25MZWF2aW5nR1Rlc3QoKTsKKyAgaW50ZXJu
YWw6OkhhbmRsZUV4Y2VwdGlvbnNJbk1ldGhvZElmU3VwcG9ydGVkKHRoaXMsICZUZXN0OjpTZXRV
cCwgIlNldFVwKCkiKTsKKyAgLy8gV2Ugd2lsbCBydW4gdGhlIHRlc3Qgb25seSBpZiBTZXRVcCgp
IHdhcyBzdWNjZXNzZnVsLgorICBpZiAoIUhhc0ZhdGFsRmFpbHVyZSgpKSB7CisgICAgaW1wbC0+
b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCktPlVwb25MZWF2aW5nR1Rlc3QoKTsKKyAgICBpbnRlcm5h
bDo6SGFuZGxlRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQoCisgICAgICAgIHRoaXMsICZU
ZXN0OjpUZXN0Qm9keSwgInRoZSB0ZXN0IGJvZHkiKTsKKyAgfQorCisgIC8vIEhvd2V2ZXIsIHdl
IHdhbnQgdG8gY2xlYW4gdXAgYXMgbXVjaCBhcyBwb3NzaWJsZS4gIEhlbmNlIHdlIHdpbGwKKyAg
Ly8gYWx3YXlzIGNhbGwgVGVhckRvd24oKSwgZXZlbiBpZiBTZXRVcCgpIG9yIHRoZSB0ZXN0IGJv
ZHkgaGFzCisgIC8vIGZhaWxlZC4KKyAgaW1wbC0+b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCktPlVw
b25MZWF2aW5nR1Rlc3QoKTsKKyAgaW50ZXJuYWw6OkhhbmRsZUV4Y2VwdGlvbnNJbk1ldGhvZElm
U3VwcG9ydGVkKAorICAgICAgdGhpcywgJlRlc3Q6OlRlYXJEb3duLCAiVGVhckRvd24oKSIpOwor
fQorCisvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSBjdXJyZW50IHRlc3QgaGFzIGEgZmF0YWwgZmFp
bHVyZS4KK2Jvb2wgVGVzdDo6SGFzRmF0YWxGYWlsdXJlKCkgeworICByZXR1cm4gaW50ZXJuYWw6
OkdldFVuaXRUZXN0SW1wbCgpLT5jdXJyZW50X3Rlc3RfcmVzdWx0KCktPkhhc0ZhdGFsRmFpbHVy
ZSgpOworfQorCisvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSBjdXJyZW50IHRlc3QgaGFzIGEgbm9u
LWZhdGFsIGZhaWx1cmUuCitib29sIFRlc3Q6Okhhc05vbmZhdGFsRmFpbHVyZSgpIHsKKyAgcmV0
dXJuIGludGVybmFsOjpHZXRVbml0VGVzdEltcGwoKS0+Y3VycmVudF90ZXN0X3Jlc3VsdCgpLT4K
KyAgICAgIEhhc05vbmZhdGFsRmFpbHVyZSgpOworfQorCisvLyBjbGFzcyBUZXN0SW5mbworCisv
LyBDb25zdHJ1Y3RzIGEgVGVzdEluZm8gb2JqZWN0LiBJdCBhc3N1bWVzIG93bmVyc2hpcCBvZiB0
aGUgdGVzdCBmYWN0b3J5CisvLyBvYmplY3QuCitUZXN0SW5mbzo6VGVzdEluZm8oY29uc3Qgc3Rk
OjpzdHJpbmcmIGFfdGVzdF9jYXNlX25hbWUsCisgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcmIGFfbmFtZSwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhX3R5cGVf
cGFyYW0sCisgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYV92YWx1ZV9wYXJhbSwKKyAg
ICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6Q29kZUxvY2F0aW9uIGFfY29kZV9sb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6VHlwZUlkIGZpeHR1cmVfY2xhc3NfaWQsCisg
ICAgICAgICAgICAgICAgICAgaW50ZXJuYWw6OlRlc3RGYWN0b3J5QmFzZSogZmFjdG9yeSkKKyAg
ICA6IHRlc3RfY2FzZV9uYW1lXyhhX3Rlc3RfY2FzZV9uYW1lKSwKKyAgICAgIG5hbWVfKGFfbmFt
ZSksCisgICAgICB0eXBlX3BhcmFtXyhhX3R5cGVfcGFyYW0gPyBuZXcgc3RkOjpzdHJpbmcoYV90
eXBlX3BhcmFtKSA6IE5VTEwpLAorICAgICAgdmFsdWVfcGFyYW1fKGFfdmFsdWVfcGFyYW0gPyBu
ZXcgc3RkOjpzdHJpbmcoYV92YWx1ZV9wYXJhbSkgOiBOVUxMKSwKKyAgICAgIGxvY2F0aW9uXyhh
X2NvZGVfbG9jYXRpb24pLAorICAgICAgZml4dHVyZV9jbGFzc19pZF8oZml4dHVyZV9jbGFzc19p
ZCksCisgICAgICBzaG91bGRfcnVuXyhmYWxzZSksCisgICAgICBpc19kaXNhYmxlZF8oZmFsc2Up
LAorICAgICAgbWF0Y2hlc19maWx0ZXJfKGZhbHNlKSwKKyAgICAgIGZhY3RvcnlfKGZhY3Rvcnkp
LAorICAgICAgcmVzdWx0XygpIHt9CisKKy8vIERlc3RydWN0cyBhIFRlc3RJbmZvIG9iamVjdC4K
K1Rlc3RJbmZvOjp+VGVzdEluZm8oKSB7IGRlbGV0ZSBmYWN0b3J5XzsgfQorCituYW1lc3BhY2Ug
aW50ZXJuYWwgeworCisvLyBDcmVhdGVzIGEgbmV3IFRlc3RJbmZvIG9iamVjdCBhbmQgcmVnaXN0
ZXJzIGl0IHdpdGggR29vZ2xlIFRlc3Q7CisvLyByZXR1cm5zIHRoZSBjcmVhdGVkIG9iamVjdC4K
Ky8vCisvLyBBcmd1bWVudHM6CisvLworLy8gICB0ZXN0X2Nhc2VfbmFtZTogICBuYW1lIG9mIHRo
ZSB0ZXN0IGNhc2UKKy8vICAgbmFtZTogICAgICAgICAgICAgbmFtZSBvZiB0aGUgdGVzdAorLy8g
ICB0eXBlX3BhcmFtOiAgICAgICB0aGUgbmFtZSBvZiB0aGUgdGVzdCdzIHR5cGUgcGFyYW1ldGVy
LCBvciBOVUxMIGlmCisvLyAgICAgICAgICAgICAgICAgICAgIHRoaXMgaXMgbm90IGEgdHlwZWQg
b3IgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdC4KKy8vICAgdmFsdWVfcGFyYW06ICAgICAgdGV4
dCByZXByZXNlbnRhdGlvbiBvZiB0aGUgdGVzdCdzIHZhbHVlIHBhcmFtZXRlciwKKy8vICAgICAg
ICAgICAgICAgICAgICAgb3IgTlVMTCBpZiB0aGlzIGlzIG5vdCBhIHZhbHVlLXBhcmFtZXRlcml6
ZWQgdGVzdC4KKy8vICAgY29kZV9sb2NhdGlvbjogICAgY29kZSBsb2NhdGlvbiB3aGVyZSB0aGUg
dGVzdCBpcyBkZWZpbmVkCisvLyAgIGZpeHR1cmVfY2xhc3NfaWQ6IElEIG9mIHRoZSB0ZXN0IGZp
eHR1cmUgY2xhc3MKKy8vICAgc2V0X3VwX3RjOiAgICAgICAgcG9pbnRlciB0byB0aGUgZnVuY3Rp
b24gdGhhdCBzZXRzIHVwIHRoZSB0ZXN0IGNhc2UKKy8vICAgdGVhcl9kb3duX3RjOiAgICAgcG9p
bnRlciB0byB0aGUgZnVuY3Rpb24gdGhhdCB0ZWFycyBkb3duIHRoZSB0ZXN0IGNhc2UKKy8vICAg
ZmFjdG9yeTogICAgICAgICAgcG9pbnRlciB0byB0aGUgZmFjdG9yeSB0aGF0IGNyZWF0ZXMgYSB0
ZXN0IG9iamVjdC4KKy8vICAgICAgICAgICAgICAgICAgICAgVGhlIG5ld2x5IGNyZWF0ZWQgVGVz
dEluZm8gaW5zdGFuY2Ugd2lsbCBhc3N1bWUKKy8vICAgICAgICAgICAgICAgICAgICAgb3duZXJz
aGlwIG9mIHRoZSBmYWN0b3J5IG9iamVjdC4KK1Rlc3RJbmZvKiBNYWtlQW5kUmVnaXN0ZXJUZXN0
SW5mbygKKyAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKKyAgICBjb25zdCBjaGFyKiBu
YW1lLAorICAgIGNvbnN0IGNoYXIqIHR5cGVfcGFyYW0sCisgICAgY29uc3QgY2hhciogdmFsdWVf
cGFyYW0sCisgICAgQ29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb24sCisgICAgVHlwZUlkIGZpeHR1
cmVfY2xhc3NfaWQsCisgICAgU2V0VXBUZXN0Q2FzZUZ1bmMgc2V0X3VwX3RjLAorICAgIFRlYXJE
b3duVGVzdENhc2VGdW5jIHRlYXJfZG93bl90YywKKyAgICBUZXN0RmFjdG9yeUJhc2UqIGZhY3Rv
cnkpIHsKKyAgVGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9CisgICAgICBuZXcgVGVzdEluZm8o
dGVzdF9jYXNlX25hbWUsIG5hbWUsIHR5cGVfcGFyYW0sIHZhbHVlX3BhcmFtLAorICAgICAgICAg
ICAgICAgICAgIGNvZGVfbG9jYXRpb24sIGZpeHR1cmVfY2xhc3NfaWQsIGZhY3RvcnkpOworICBH
ZXRVbml0VGVzdEltcGwoKS0+QWRkVGVzdEluZm8oc2V0X3VwX3RjLCB0ZWFyX2Rvd25fdGMsIHRl
c3RfaW5mbyk7CisgIHJldHVybiB0ZXN0X2luZm87Cit9CisKKyNpZiBHVEVTVF9IQVNfUEFSQU1f
VEVTVAordm9pZCBSZXBvcnRJbnZhbGlkVGVzdENhc2VUeXBlKGNvbnN0IGNoYXIqIHRlc3RfY2Fz
ZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbiBjb2Rl
X2xvY2F0aW9uKSB7CisgIE1lc3NhZ2UgZXJyb3JzOworICBlcnJvcnMKKyAgICAgIDw8ICJBdHRl
bXB0ZWQgcmVkZWZpbml0aW9uIG9mIHRlc3QgY2FzZSAiIDw8IHRlc3RfY2FzZV9uYW1lIDw8ICIu
XG4iCisgICAgICA8PCAiQWxsIHRlc3RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBtdXN0IHVzZSB0
aGUgc2FtZSB0ZXN0IGZpeHR1cmVcbiIKKyAgICAgIDw8ICJjbGFzcy4gIEhvd2V2ZXIsIGluIHRl
c3QgY2FzZSAiIDw8IHRlc3RfY2FzZV9uYW1lIDw8ICIsIHlvdSB0cmllZFxuIgorICAgICAgPDwg
InRvIGRlZmluZSBhIHRlc3QgdXNpbmcgYSBmaXh0dXJlIGNsYXNzIGRpZmZlcmVudCBmcm9tIHRo
ZSBvbmVcbiIKKyAgICAgIDw8ICJ1c2VkIGVhcmxpZXIuIFRoaXMgY2FuIGhhcHBlbiBpZiB0aGUg
dHdvIGZpeHR1cmUgY2xhc3NlcyBhcmVcbiIKKyAgICAgIDw8ICJmcm9tIGRpZmZlcmVudCBuYW1l
c3BhY2VzIGFuZCBoYXZlIHRoZSBzYW1lIG5hbWUuIFlvdSBzaG91bGRcbiIKKyAgICAgIDw8ICJw
cm9iYWJseSByZW5hbWUgb25lIG9mIHRoZSBjbGFzc2VzIHRvIHB1dCB0aGUgdGVzdHMgaW50byBk
aWZmZXJlbnRcbiIKKyAgICAgIDw8ICJ0ZXN0IGNhc2VzLiI7CisKKyAgZnByaW50ZihzdGRlcnIs
ICIlcyAlcyIsCisgICAgICAgICAgRm9ybWF0RmlsZUxvY2F0aW9uKGNvZGVfbG9jYXRpb24uZmls
ZS5jX3N0cigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlX2xvY2F0aW9uLmxp
bmUpLmNfc3RyKCksCisgICAgICAgICAgZXJyb3JzLkdldFN0cmluZygpLmNfc3RyKCkpOworfQor
I2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAorCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJu
YWwKKworbmFtZXNwYWNlIHsKKworLy8gQSBwcmVkaWNhdGUgdGhhdCBjaGVja3MgdGhlIHRlc3Qg
bmFtZSBvZiBhIFRlc3RJbmZvIGFnYWluc3QgYSBrbm93bgorLy8gdmFsdWUuCisvLworLy8gVGhp
cyBpcyB1c2VkIGZvciBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgVGVzdENhc2UgY2xhc3Mgb25seS4g
IFdlIHB1dAorLy8gaXQgaW4gdGhlIGFub255bW91cyBuYW1lc3BhY2UgdG8gcHJldmVudCBwb2xs
dXRpbmcgdGhlIG91dGVyCisvLyBuYW1lc3BhY2UuCisvLworLy8gVGVzdE5hbWVJcyBpcyBjb3B5
YWJsZS4KK2NsYXNzIFRlc3ROYW1lSXMgeworIHB1YmxpYzoKKyAgLy8gQ29uc3RydWN0b3IuCisg
IC8vCisgIC8vIFRlc3ROYW1lSXMgaGFzIE5PIGRlZmF1bHQgY29uc3RydWN0b3IuCisgIGV4cGxp
Y2l0IFRlc3ROYW1lSXMoY29uc3QgY2hhciogbmFtZSkKKyAgICAgIDogbmFtZV8obmFtZSkge30K
KworICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSB0ZXN0IG5hbWUgb2YgdGVzdF9pbmZvIG1hdGNo
ZXMgbmFtZV8uCisgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBUZXN0SW5mbyAqIHRlc3RfaW5mbykg
Y29uc3QgeworICAgIHJldHVybiB0ZXN0X2luZm8gJiYgdGVzdF9pbmZvLT5uYW1lKCkgPT0gbmFt
ZV87CisgIH0KKworIHByaXZhdGU6CisgIHN0ZDo6c3RyaW5nIG5hbWVfOworfTsKKworfSAgLy8g
bmFtZXNwYWNlCisKK25hbWVzcGFjZSBpbnRlcm5hbCB7CisKKy8vIFRoaXMgbWV0aG9kIGV4cGFu
ZHMgYWxsIHBhcmFtZXRlcml6ZWQgdGVzdHMgcmVnaXN0ZXJlZCB3aXRoIG1hY3JvcyBURVNUX1AK
Ky8vIGFuZCBJTlNUQU5USUFURV9URVNUX0NBU0VfUCBpbnRvIHJlZ3VsYXIgdGVzdHMgYW5kIHJl
Z2lzdGVycyB0aG9zZS4KKy8vIFRoaXMgd2lsbCBiZSBkb25lIGp1c3Qgb25jZSBkdXJpbmcgdGhl
IHByb2dyYW0gcnVudGltZS4KK3ZvaWQgVW5pdFRlc3RJbXBsOjpSZWdpc3RlclBhcmFtZXRlcml6
ZWRUZXN0cygpIHsKKyNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAorICBpZiAoIXBhcmFtZXRlcml6
ZWRfdGVzdHNfcmVnaXN0ZXJlZF8pIHsKKyAgICBwYXJhbWV0ZXJpemVkX3Rlc3RfcmVnaXN0cnlf
LlJlZ2lzdGVyVGVzdHMoKTsKKyAgICBwYXJhbWV0ZXJpemVkX3Rlc3RzX3JlZ2lzdGVyZWRfID0g
dHJ1ZTsKKyAgfQorI2VuZGlmCit9CisKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAorCisvLyBD
cmVhdGVzIHRoZSB0ZXN0IG9iamVjdCwgcnVucyBpdCwgcmVjb3JkcyBpdHMgcmVzdWx0LCBhbmQg
dGhlbgorLy8gZGVsZXRlcyBpdC4KK3ZvaWQgVGVzdEluZm86OlJ1bigpIHsKKyAgaWYgKCFzaG91
bGRfcnVuXykgcmV0dXJuOworCisgIC8vIFRlbGxzIFVuaXRUZXN0IHdoZXJlIHRvIHN0b3JlIHRl
c3QgcmVzdWx0LgorICBpbnRlcm5hbDo6VW5pdFRlc3RJbXBsKiBjb25zdCBpbXBsID0gaW50ZXJu
YWw6OkdldFVuaXRUZXN0SW1wbCgpOworICBpbXBsLT5zZXRfY3VycmVudF90ZXN0X2luZm8odGhp
cyk7CisKKyAgVGVzdEV2ZW50TGlzdGVuZXIqIHJlcGVhdGVyID0gVW5pdFRlc3Q6OkdldEluc3Rh
bmNlKCktPmxpc3RlbmVycygpLnJlcGVhdGVyKCk7CisKKyAgLy8gTm90aWZpZXMgdGhlIHVuaXQg
dGVzdCBldmVudCBsaXN0ZW5lcnMgdGhhdCBhIHRlc3QgaXMgYWJvdXQgdG8gc3RhcnQuCisgIHJl
cGVhdGVyLT5PblRlc3RTdGFydCgqdGhpcyk7CisKKyAgY29uc3QgVGltZUluTWlsbGlzIHN0YXJ0
ID0gaW50ZXJuYWw6OkdldFRpbWVJbk1pbGxpcygpOworCisgIGltcGwtPm9zX3N0YWNrX3RyYWNl
X2dldHRlcigpLT5VcG9uTGVhdmluZ0dUZXN0KCk7CisKKyAgLy8gQ3JlYXRlcyB0aGUgdGVzdCBv
YmplY3QuCisgIFRlc3QqIGNvbnN0IHRlc3QgPSBpbnRlcm5hbDo6SGFuZGxlRXhjZXB0aW9uc0lu
TWV0aG9kSWZTdXBwb3J0ZWQoCisgICAgICBmYWN0b3J5XywgJmludGVybmFsOjpUZXN0RmFjdG9y
eUJhc2U6OkNyZWF0ZVRlc3QsCisgICAgICAidGhlIHRlc3QgZml4dHVyZSdzIGNvbnN0cnVjdG9y
Iik7CisKKyAgLy8gUnVucyB0aGUgdGVzdCBvbmx5IGlmIHRoZSB0ZXN0IG9iamVjdCB3YXMgY3Jl
YXRlZCBhbmQgaXRzCisgIC8vIGNvbnN0cnVjdG9yIGRpZG4ndCBnZW5lcmF0ZSBhIGZhdGFsIGZh
aWx1cmUuCisgIGlmICgodGVzdCAhPSBOVUxMKSAmJiAhVGVzdDo6SGFzRmF0YWxGYWlsdXJlKCkp
IHsKKyAgICAvLyBUaGlzIGRvZXNuJ3QgdGhyb3cgYXMgYWxsIHVzZXIgY29kZSB0aGF0IGNhbiB0
aHJvdyBhcmUgd3JhcHBlZCBpbnRvCisgICAgLy8gZXhjZXB0aW9uIGhhbmRsaW5nIGNvZGUuCisg
ICAgdGVzdC0+UnVuKCk7CisgIH0KKworICAvLyBEZWxldGVzIHRoZSB0ZXN0IG9iamVjdC4KKyAg
aW1wbC0+b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCktPlVwb25MZWF2aW5nR1Rlc3QoKTsKKyAgaW50
ZXJuYWw6OkhhbmRsZUV4Y2VwdGlvbnNJbk1ldGhvZElmU3VwcG9ydGVkKAorICAgICAgdGVzdCwg
JlRlc3Q6OkRlbGV0ZVNlbGZfLCAidGhlIHRlc3QgZml4dHVyZSdzIGRlc3RydWN0b3IiKTsKKwor
ICByZXN1bHRfLnNldF9lbGFwc2VkX3RpbWUoaW50ZXJuYWw6OkdldFRpbWVJbk1pbGxpcygpIC0g
c3RhcnQpOworCisgIC8vIE5vdGlmaWVzIHRoZSB1bml0IHRlc3QgZXZlbnQgbGlzdGVuZXIgdGhh
dCBhIHRlc3QgaGFzIGp1c3QgZmluaXNoZWQuCisgIHJlcGVhdGVyLT5PblRlc3RFbmQoKnRoaXMp
OworCisgIC8vIFRlbGxzIFVuaXRUZXN0IHRvIHN0b3AgYXNzb2NpYXRpbmcgYXNzZXJ0aW9uIHJl
c3VsdHMgdG8gdGhpcworICAvLyB0ZXN0LgorICBpbXBsLT5zZXRfY3VycmVudF90ZXN0X2luZm8o
TlVMTCk7Cit9CisKKy8vIGNsYXNzIFRlc3RDYXNlCisKKy8vIEdldHMgdGhlIG51bWJlciBvZiBz
dWNjZXNzZnVsIHRlc3RzIGluIHRoaXMgdGVzdCBjYXNlLgoraW50IFRlc3RDYXNlOjpzdWNjZXNz
ZnVsX3Rlc3RfY291bnQoKSBjb25zdCB7CisgIHJldHVybiBDb3VudElmKHRlc3RfaW5mb19saXN0
XywgVGVzdFBhc3NlZCk7Cit9CisKKy8vIEdldHMgdGhlIG51bWJlciBvZiBmYWlsZWQgdGVzdHMg
aW4gdGhpcyB0ZXN0IGNhc2UuCitpbnQgVGVzdENhc2U6OmZhaWxlZF90ZXN0X2NvdW50KCkgY29u
c3QgeworICByZXR1cm4gQ291bnRJZih0ZXN0X2luZm9fbGlzdF8sIFRlc3RGYWlsZWQpOworfQor
CisvLyBHZXRzIHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMgdGhhdCB3aWxsIGJlIHJlcG9y
dGVkIGluIHRoZSBYTUwgcmVwb3J0LgoraW50IFRlc3RDYXNlOjpyZXBvcnRhYmxlX2Rpc2FibGVk
X3Rlc3RfY291bnQoKSBjb25zdCB7CisgIHJldHVybiBDb3VudElmKHRlc3RfaW5mb19saXN0Xywg
VGVzdFJlcG9ydGFibGVEaXNhYmxlZCk7Cit9CisKKy8vIEdldHMgdGhlIG51bWJlciBvZiBkaXNh
YmxlZCB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZS4KK2ludCBUZXN0Q2FzZTo6ZGlzYWJsZWRfdGVz
dF9jb3VudCgpIGNvbnN0IHsKKyAgcmV0dXJuIENvdW50SWYodGVzdF9pbmZvX2xpc3RfLCBUZXN0
RGlzYWJsZWQpOworfQorCisvLyBHZXRzIHRoZSBudW1iZXIgb2YgdGVzdHMgdG8gYmUgcHJpbnRl
ZCBpbiB0aGUgWE1MIHJlcG9ydC4KK2ludCBUZXN0Q2FzZTo6cmVwb3J0YWJsZV90ZXN0X2NvdW50
KCkgY29uc3QgeworICByZXR1cm4gQ291bnRJZih0ZXN0X2luZm9fbGlzdF8sIFRlc3RSZXBvcnRh
YmxlKTsKK30KKworLy8gR2V0IHRoZSBudW1iZXIgb2YgdGVzdHMgaW4gdGhpcyB0ZXN0IGNhc2Ug
dGhhdCBzaG91bGQgcnVuLgoraW50IFRlc3RDYXNlOjp0ZXN0X3RvX3J1bl9jb3VudCgpIGNvbnN0
IHsKKyAgcmV0dXJuIENvdW50SWYodGVzdF9pbmZvX2xpc3RfLCBTaG91bGRSdW5UZXN0KTsKK30K
KworLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGFsbCB0ZXN0cy4KK2ludCBUZXN0Q2FzZTo6dG90YWxf
dGVzdF9jb3VudCgpIGNvbnN0IHsKKyAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4odGVzdF9pbmZv
X2xpc3RfLnNpemUoKSk7Cit9CisKKy8vIENyZWF0ZXMgYSBUZXN0Q2FzZSB3aXRoIHRoZSBnaXZl
biBuYW1lLgorLy8KKy8vIEFyZ3VtZW50czoKKy8vCisvLyAgIG5hbWU6ICAgICAgICAgbmFtZSBv
ZiB0aGUgdGVzdCBjYXNlCisvLyAgIGFfdHlwZV9wYXJhbTogdGhlIG5hbWUgb2YgdGhlIHRlc3Qg
Y2FzZSdzIHR5cGUgcGFyYW1ldGVyLCBvciBOVUxMIGlmCisvLyAgICAgICAgICAgICAgICAgdGhp
cyBpcyBub3QgYSB0eXBlZCBvciBhIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0IGNhc2UuCisvLyAg
IHNldF91cF90YzogICAgcG9pbnRlciB0byB0aGUgZnVuY3Rpb24gdGhhdCBzZXRzIHVwIHRoZSB0
ZXN0IGNhc2UKKy8vICAgdGVhcl9kb3duX3RjOiBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0
IHRlYXJzIGRvd24gdGhlIHRlc3QgY2FzZQorVGVzdENhc2U6OlRlc3RDYXNlKGNvbnN0IGNoYXIq
IGFfbmFtZSwgY29uc3QgY2hhciogYV90eXBlX3BhcmFtLAorICAgICAgICAgICAgICAgICAgIFRl
c3Q6OlNldFVwVGVzdENhc2VGdW5jIHNldF91cF90YywKKyAgICAgICAgICAgICAgICAgICBUZXN0
OjpUZWFyRG93blRlc3RDYXNlRnVuYyB0ZWFyX2Rvd25fdGMpCisgICAgOiBuYW1lXyhhX25hbWUp
LAorICAgICAgdHlwZV9wYXJhbV8oYV90eXBlX3BhcmFtID8gbmV3IHN0ZDo6c3RyaW5nKGFfdHlw
ZV9wYXJhbSkgOiBOVUxMKSwKKyAgICAgIHNldF91cF90Y18oc2V0X3VwX3RjKSwKKyAgICAgIHRl
YXJfZG93bl90Y18odGVhcl9kb3duX3RjKSwKKyAgICAgIHNob3VsZF9ydW5fKGZhbHNlKSwKKyAg
ICAgIGVsYXBzZWRfdGltZV8oMCkgeworfQorCisvLyBEZXN0cnVjdG9yIG9mIFRlc3RDYXNlLgor
VGVzdENhc2U6On5UZXN0Q2FzZSgpIHsKKyAgLy8gRGVsZXRlcyBldmVyeSBUZXN0IGluIHRoZSBj
b2xsZWN0aW9uLgorICBGb3JFYWNoKHRlc3RfaW5mb19saXN0XywgaW50ZXJuYWw6OkRlbGV0ZTxU
ZXN0SW5mbz4pOworfQorCisvLyBSZXR1cm5zIHRoZSBpLXRoIHRlc3QgYW1vbmcgYWxsIHRoZSB0
ZXN0cy4gaSBjYW4gcmFuZ2UgZnJvbSAwIHRvCisvLyB0b3RhbF90ZXN0X2NvdW50KCkgLSAxLiBJ
ZiBpIGlzIG5vdCBpbiB0aGF0IHJhbmdlLCByZXR1cm5zIE5VTEwuCitjb25zdCBUZXN0SW5mbyog
VGVzdENhc2U6OkdldFRlc3RJbmZvKGludCBpKSBjb25zdCB7CisgIGNvbnN0IGludCBpbmRleCA9
IEdldEVsZW1lbnRPcih0ZXN0X2luZGljZXNfLCBpLCAtMSk7CisgIHJldHVybiBpbmRleCA8IDAg
PyBOVUxMIDogdGVzdF9pbmZvX2xpc3RfW2luZGV4XTsKK30KKworLy8gUmV0dXJucyB0aGUgaS10
aCB0ZXN0IGFtb25nIGFsbCB0aGUgdGVzdHMuIGkgY2FuIHJhbmdlIGZyb20gMCB0bworLy8gdG90
YWxfdGVzdF9jb3VudCgpIC0gMS4gSWYgaSBpcyBub3QgaW4gdGhhdCByYW5nZSwgcmV0dXJucyBO
VUxMLgorVGVzdEluZm8qIFRlc3RDYXNlOjpHZXRNdXRhYmxlVGVzdEluZm8oaW50IGkpIHsKKyAg
Y29uc3QgaW50IGluZGV4ID0gR2V0RWxlbWVudE9yKHRlc3RfaW5kaWNlc18sIGksIC0xKTsKKyAg
cmV0dXJuIGluZGV4IDwgMCA/IE5VTEwgOiB0ZXN0X2luZm9fbGlzdF9baW5kZXhdOworfQorCisv
LyBBZGRzIGEgdGVzdCB0byB0aGlzIHRlc3QgY2FzZS4gIFdpbGwgZGVsZXRlIHRoZSB0ZXN0IHVw
b24KKy8vIGRlc3RydWN0aW9uIG9mIHRoZSBUZXN0Q2FzZSBvYmplY3QuCit2b2lkIFRlc3RDYXNl
OjpBZGRUZXN0SW5mbyhUZXN0SW5mbyAqIHRlc3RfaW5mbykgeworICB0ZXN0X2luZm9fbGlzdF8u
cHVzaF9iYWNrKHRlc3RfaW5mbyk7CisgIHRlc3RfaW5kaWNlc18ucHVzaF9iYWNrKHN0YXRpY19j
YXN0PGludD4odGVzdF9pbmRpY2VzXy5zaXplKCkpKTsKK30KKworLy8gUnVucyBldmVyeSB0ZXN0
IGluIHRoaXMgVGVzdENhc2UuCit2b2lkIFRlc3RDYXNlOjpSdW4oKSB7CisgIGlmICghc2hvdWxk
X3J1bl8pIHJldHVybjsKKworICBpbnRlcm5hbDo6VW5pdFRlc3RJbXBsKiBjb25zdCBpbXBsID0g
aW50ZXJuYWw6OkdldFVuaXRUZXN0SW1wbCgpOworICBpbXBsLT5zZXRfY3VycmVudF90ZXN0X2Nh
c2UodGhpcyk7CisKKyAgVGVzdEV2ZW50TGlzdGVuZXIqIHJlcGVhdGVyID0gVW5pdFRlc3Q6Okdl
dEluc3RhbmNlKCktPmxpc3RlbmVycygpLnJlcGVhdGVyKCk7CisKKyAgcmVwZWF0ZXItPk9uVGVz
dENhc2VTdGFydCgqdGhpcyk7CisgIGltcGwtPm9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5VcG9u
TGVhdmluZ0dUZXN0KCk7CisgIGludGVybmFsOjpIYW5kbGVFeGNlcHRpb25zSW5NZXRob2RJZlN1
cHBvcnRlZCgKKyAgICAgIHRoaXMsICZUZXN0Q2FzZTo6UnVuU2V0VXBUZXN0Q2FzZSwgIlNldFVw
VGVzdENhc2UoKSIpOworCisgIGNvbnN0IGludGVybmFsOjpUaW1lSW5NaWxsaXMgc3RhcnQgPSBp
bnRlcm5hbDo6R2V0VGltZUluTWlsbGlzKCk7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgdG90YWxf
dGVzdF9jb3VudCgpOyBpKyspIHsKKyAgICBHZXRNdXRhYmxlVGVzdEluZm8oaSktPlJ1bigpOwor
ICB9CisgIGVsYXBzZWRfdGltZV8gPSBpbnRlcm5hbDo6R2V0VGltZUluTWlsbGlzKCkgLSBzdGFy
dDsKKworICBpbXBsLT5vc19zdGFja190cmFjZV9nZXR0ZXIoKS0+VXBvbkxlYXZpbmdHVGVzdCgp
OworICBpbnRlcm5hbDo6SGFuZGxlRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQoCisgICAg
ICB0aGlzLCAmVGVzdENhc2U6OlJ1blRlYXJEb3duVGVzdENhc2UsICJUZWFyRG93blRlc3RDYXNl
KCkiKTsKKworICByZXBlYXRlci0+T25UZXN0Q2FzZUVuZCgqdGhpcyk7CisgIGltcGwtPnNldF9j
dXJyZW50X3Rlc3RfY2FzZShOVUxMKTsKK30KKworLy8gQ2xlYXJzIHRoZSByZXN1bHRzIG9mIGFs
bCB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZS4KK3ZvaWQgVGVzdENhc2U6OkNsZWFyUmVzdWx0KCkg
eworICBhZF9ob2NfdGVzdF9yZXN1bHRfLkNsZWFyKCk7CisgIEZvckVhY2godGVzdF9pbmZvX2xp
c3RfLCBUZXN0SW5mbzo6Q2xlYXJUZXN0UmVzdWx0KTsKK30KKworLy8gU2h1ZmZsZXMgdGhlIHRl
c3RzIGluIHRoaXMgdGVzdCBjYXNlLgordm9pZCBUZXN0Q2FzZTo6U2h1ZmZsZVRlc3RzKGludGVy
bmFsOjpSYW5kb20qIHJhbmRvbSkgeworICBTaHVmZmxlKHJhbmRvbSwgJnRlc3RfaW5kaWNlc18p
OworfQorCisvLyBSZXN0b3JlcyB0aGUgdGVzdCBvcmRlciB0byBiZWZvcmUgdGhlIGZpcnN0IHNo
dWZmbGUuCit2b2lkIFRlc3RDYXNlOjpVbnNodWZmbGVUZXN0cygpIHsKKyAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCB0ZXN0X2luZGljZXNfLnNpemUoKTsgaSsrKSB7CisgICAgdGVzdF9pbmRpY2Vz
X1tpXSA9IHN0YXRpY19jYXN0PGludD4oaSk7CisgIH0KK30KKworLy8gRm9ybWF0cyBhIGNvdW50
YWJsZSBub3VuLiAgRGVwZW5kaW5nIG9uIGl0cyBxdWFudGl0eSwgZWl0aGVyIHRoZQorLy8gc2lu
Z3VsYXIgZm9ybSBvciB0aGUgcGx1cmFsIGZvcm0gaXMgdXNlZC4gZS5nLgorLy8KKy8vIEZvcm1h
dENvdW50YWJsZU5vdW4oMSwgImZvcm11bGEiLCAiZm9ybXVsaSIpIHJldHVybnMgIjEgZm9ybXVs
YSIuCisvLyBGb3JtYXRDb3VudGFibGVOb3VuKDUsICJib29rIiwgImJvb2tzIikgcmV0dXJucyAi
NSBib29rcyIuCitzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0Q291bnRhYmxlTm91bihpbnQgY291
bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICog
c2luZ3VsYXJfZm9ybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIgKiBwbHVyYWxfZm9ybSkgeworICByZXR1cm4gaW50ZXJuYWw6OlN0cmVhbWFibGVU
b1N0cmluZyhjb3VudCkgKyAiICIgKworICAgICAgKGNvdW50ID09IDEgPyBzaW5ndWxhcl9mb3Jt
IDogcGx1cmFsX2Zvcm0pOworfQorCisvLyBGb3JtYXRzIHRoZSBjb3VudCBvZiB0ZXN0cy4KK3N0
YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRUZXN0Q291bnQoaW50IHRlc3RfY291bnQpIHsKKyAgcmV0
dXJuIEZvcm1hdENvdW50YWJsZU5vdW4odGVzdF9jb3VudCwgInRlc3QiLCAidGVzdHMiKTsKK30K
KworLy8gRm9ybWF0cyB0aGUgY291bnQgb2YgdGVzdCBjYXNlcy4KK3N0YXRpYyBzdGQ6OnN0cmlu
ZyBGb3JtYXRUZXN0Q2FzZUNvdW50KGludCB0ZXN0X2Nhc2VfY291bnQpIHsKKyAgcmV0dXJuIEZv
cm1hdENvdW50YWJsZU5vdW4odGVzdF9jYXNlX2NvdW50LCAidGVzdCBjYXNlIiwgInRlc3QgY2Fz
ZXMiKTsKK30KKworLy8gQ29udmVydHMgYSBUZXN0UGFydFJlc3VsdDo6VHlwZSBlbnVtIHRvIGh1
bWFuLWZyaWVuZGx5IHN0cmluZworLy8gcmVwcmVzZW50YXRpb24uICBCb3RoIGtOb25GYXRhbEZh
aWx1cmUgYW5kIGtGYXRhbEZhaWx1cmUgYXJlIHRyYW5zbGF0ZWQKKy8vIHRvICJGYWlsdXJlIiwg
YXMgdGhlIHVzZXIgdXN1YWxseSBkb2Vzbid0IGNhcmUgYWJvdXQgdGhlIGRpZmZlcmVuY2UKKy8v
IGJldHdlZW4gdGhlIHR3byB3aGVuIHZpZXdpbmcgdGhlIHRlc3QgcmVzdWx0Lgorc3RhdGljIGNv
bnN0IGNoYXIgKiBUZXN0UGFydFJlc3VsdFR5cGVUb1N0cmluZyhUZXN0UGFydFJlc3VsdDo6VHlw
ZSB0eXBlKSB7CisgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgVGVzdFBhcnRSZXN1bHQ6OmtT
dWNjZXNzOgorICAgICAgcmV0dXJuICJTdWNjZXNzIjsKKworICAgIGNhc2UgVGVzdFBhcnRSZXN1
bHQ6OmtOb25GYXRhbEZhaWx1cmU6CisgICAgY2FzZSBUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFp
bHVyZToKKyNpZmRlZiBfTVNDX1ZFUgorICAgICAgcmV0dXJuICJlcnJvcjogIjsKKyNlbHNlCisg
ICAgICByZXR1cm4gIkZhaWx1cmVcbiI7CisjZW5kaWYKKyAgICBkZWZhdWx0OgorICAgICAgcmV0
dXJuICJVbmtub3duIHJlc3VsdCB0eXBlIjsKKyAgfQorfQorCituYW1lc3BhY2UgaW50ZXJuYWwg
eworCisvLyBQcmludHMgYSBUZXN0UGFydFJlc3VsdCB0byBhbiBzdGQ6OnN0cmluZy4KK3N0YXRp
YyBzdGQ6OnN0cmluZyBQcmludFRlc3RQYXJ0UmVzdWx0VG9TdHJpbmcoCisgICAgY29uc3QgVGVz
dFBhcnRSZXN1bHQmIHRlc3RfcGFydF9yZXN1bHQpIHsKKyAgcmV0dXJuIChNZXNzYWdlKCkKKyAg
ICAgICAgICA8PCBpbnRlcm5hbDo6Rm9ybWF0RmlsZUxvY2F0aW9uKHRlc3RfcGFydF9yZXN1bHQu
ZmlsZV9uYW1lKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0X3BhcnRfcmVzdWx0LmxpbmVfbnVtYmVyKCkpCisgICAgICAgICAgPDwgIiAiIDw8IFRlc3RQ
YXJ0UmVzdWx0VHlwZVRvU3RyaW5nKHRlc3RfcGFydF9yZXN1bHQudHlwZSgpKQorICAgICAgICAg
IDw8IHRlc3RfcGFydF9yZXN1bHQubWVzc2FnZSgpKS5HZXRTdHJpbmcoKTsKK30KKworLy8gUHJp
bnRzIGEgVGVzdFBhcnRSZXN1bHQuCitzdGF0aWMgdm9pZCBQcmludFRlc3RQYXJ0UmVzdWx0KGNv
bnN0IFRlc3RQYXJ0UmVzdWx0JiB0ZXN0X3BhcnRfcmVzdWx0KSB7CisgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiByZXN1bHQgPQorICAgICAgUHJpbnRUZXN0UGFydFJlc3VsdFRvU3RyaW5nKHRlc3RfcGFy
dF9yZXN1bHQpOworICBwcmludGYoIiVzXG4iLCByZXN1bHQuY19zdHIoKSk7CisgIGZmbHVzaChz
dGRvdXQpOworICAvLyBJZiB0aGUgdGVzdCBwcm9ncmFtIHJ1bnMgaW4gVmlzdWFsIFN0dWRpbyBv
ciBhIGRlYnVnZ2VyLCB0aGUKKyAgLy8gZm9sbG93aW5nIHN0YXRlbWVudHMgYWRkIHRoZSB0ZXN0
IHBhcnQgcmVzdWx0IG1lc3NhZ2UgdG8gdGhlIE91dHB1dAorICAvLyB3aW5kb3cgc3VjaCB0aGF0
IHRoZSB1c2VyIGNhbiBkb3VibGUtY2xpY2sgb24gaXQgdG8ganVtcCB0byB0aGUKKyAgLy8gY29y
cmVzcG9uZGluZyBzb3VyY2UgY29kZSBsb2NhdGlvbjsgb3RoZXJ3aXNlIHRoZXkgZG8gbm90aGlu
Zy4KKyNpZiBHVEVTVF9PU19XSU5ET1dTICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorICAv
LyBXZSBkb24ndCBjYWxsIE91dHB1dERlYnVnU3RyaW5nKigpIG9uIFdpbmRvd3MgTW9iaWxlLCBh
cyBwcmludGluZworICAvLyB0byBzdGRvdXQgaXMgZG9uZSBieSBPdXRwdXREZWJ1Z1N0cmluZygp
IHRoZXJlIGFscmVhZHkgLSB3ZSBkb24ndAorICAvLyB3YW50IHRoZSBzYW1lIG1lc3NhZ2UgcHJp
bnRlZCB0d2ljZS4KKyAgOjpPdXRwdXREZWJ1Z1N0cmluZ0EocmVzdWx0LmNfc3RyKCkpOworICA6
Ok91dHB1dERlYnVnU3RyaW5nQSgiXG4iKTsKKyNlbmRpZgorfQorCisvLyBjbGFzcyBQcmV0dHlV
bml0VGVzdFJlc3VsdFByaW50ZXIKKworZW51bSBHVGVzdENvbG9yIHsKKyAgQ09MT1JfREVGQVVM
VCwKKyAgQ09MT1JfUkVELAorICBDT0xPUl9HUkVFTiwKKyAgQ09MT1JfWUVMTE9XCit9OworCisj
aWYgR1RFU1RfT1NfV0lORE9XUyAmJiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgJiYgXAorICAg
ICFHVEVTVF9PU19XSU5ET1dTX1BIT05FICYmICFHVEVTVF9PU19XSU5ET1dTX1JUCisKKy8vIFJl
dHVybnMgdGhlIGNoYXJhY3RlciBhdHRyaWJ1dGUgZm9yIHRoZSBnaXZlbiBjb2xvci4KK1dPUkQg
R2V0Q29sb3JBdHRyaWJ1dGUoR1Rlc3RDb2xvciBjb2xvcikgeworICBzd2l0Y2ggKGNvbG9yKSB7
CisgICAgY2FzZSBDT0xPUl9SRUQ6ICAgIHJldHVybiBGT1JFR1JPVU5EX1JFRDsKKyAgICBjYXNl
IENPTE9SX0dSRUVOOiAgcmV0dXJuIEZPUkVHUk9VTkRfR1JFRU47CisgICAgY2FzZSBDT0xPUl9Z
RUxMT1c6IHJldHVybiBGT1JFR1JPVU5EX1JFRCB8IEZPUkVHUk9VTkRfR1JFRU47CisgICAgZGVm
YXVsdDogICAgICAgICAgIHJldHVybiAwOworICB9Cit9CisKKyNlbHNlCisKKy8vIFJldHVybnMg
dGhlIEFOU0kgY29sb3IgY29kZSBmb3IgdGhlIGdpdmVuIGNvbG9yLiAgQ09MT1JfREVGQVVMVCBp
cworLy8gYW4gaW52YWxpZCBpbnB1dC4KK2NvbnN0IGNoYXIqIEdldEFuc2lDb2xvckNvZGUoR1Rl
c3RDb2xvciBjb2xvcikgeworICBzd2l0Y2ggKGNvbG9yKSB7CisgICAgY2FzZSBDT0xPUl9SRUQ6
ICAgICByZXR1cm4gIjEiOworICAgIGNhc2UgQ09MT1JfR1JFRU46ICAgcmV0dXJuICIyIjsKKyAg
ICBjYXNlIENPTE9SX1lFTExPVzogIHJldHVybiAiMyI7CisgICAgZGVmYXVsdDogICAgICAgICAg
ICByZXR1cm4gTlVMTDsKKyAgfTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTICYm
ICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorCisvLyBSZXR1cm5zIHRydWUgaWZmIEdvb2dsZSBU
ZXN0IHNob3VsZCB1c2UgY29sb3JzIGluIHRoZSBvdXRwdXQuCitib29sIFNob3VsZFVzZUNvbG9y
KGJvb2wgc3Rkb3V0X2lzX3R0eSkgeworICBjb25zdCBjaGFyKiBjb25zdCBndGVzdF9jb2xvciA9
IEdURVNUX0ZMQUcoY29sb3IpLmNfc3RyKCk7CisKKyAgaWYgKFN0cmluZzo6Q2FzZUluc2Vuc2l0
aXZlQ1N0cmluZ0VxdWFscyhndGVzdF9jb2xvciwgImF1dG8iKSkgeworI2lmIEdURVNUX09TX1dJ
TkRPV1MKKyAgICAvLyBPbiBXaW5kb3dzIHRoZSBURVJNIHZhcmlhYmxlIGlzIHVzdWFsbHkgbm90
IHNldCwgYnV0IHRoZQorICAgIC8vIGNvbnNvbGUgdGhlcmUgZG9lcyBzdXBwb3J0IGNvbG9ycy4K
KyAgICByZXR1cm4gc3Rkb3V0X2lzX3R0eTsKKyNlbHNlCisgICAgLy8gT24gbm9uLVdpbmRvd3Mg
cGxhdGZvcm1zLCB3ZSByZWx5IG9uIHRoZSBURVJNIHZhcmlhYmxlLgorICAgIGNvbnN0IGNoYXIq
IGNvbnN0IHRlcm0gPSBwb3NpeDo6R2V0RW52KCJURVJNIik7CisgICAgY29uc3QgYm9vbCB0ZXJt
X3N1cHBvcnRzX2NvbG9yID0KKyAgICAgICAgU3RyaW5nOjpDU3RyaW5nRXF1YWxzKHRlcm0sICJ4
dGVybSIpIHx8CisgICAgICAgIFN0cmluZzo6Q1N0cmluZ0VxdWFscyh0ZXJtLCAieHRlcm0tY29s
b3IiKSB8fAorICAgICAgICBTdHJpbmc6OkNTdHJpbmdFcXVhbHModGVybSwgInh0ZXJtLTI1NmNv
bG9yIikgfHwKKyAgICAgICAgU3RyaW5nOjpDU3RyaW5nRXF1YWxzKHRlcm0sICJzY3JlZW4iKSB8
fAorICAgICAgICBTdHJpbmc6OkNTdHJpbmdFcXVhbHModGVybSwgInNjcmVlbi0yNTZjb2xvciIp
IHx8CisgICAgICAgIFN0cmluZzo6Q1N0cmluZ0VxdWFscyh0ZXJtLCAidG11eCIpIHx8CisgICAg
ICAgIFN0cmluZzo6Q1N0cmluZ0VxdWFscyh0ZXJtLCAidG11eC0yNTZjb2xvciIpIHx8CisgICAg
ICAgIFN0cmluZzo6Q1N0cmluZ0VxdWFscyh0ZXJtLCAicnh2dC11bmljb2RlIikgfHwKKyAgICAg
ICAgU3RyaW5nOjpDU3RyaW5nRXF1YWxzKHRlcm0sICJyeHZ0LXVuaWNvZGUtMjU2Y29sb3IiKSB8
fAorICAgICAgICBTdHJpbmc6OkNTdHJpbmdFcXVhbHModGVybSwgImxpbnV4IikgfHwKKyAgICAg
ICAgU3RyaW5nOjpDU3RyaW5nRXF1YWxzKHRlcm0sICJjeWd3aW4iKTsKKyAgICByZXR1cm4gc3Rk
b3V0X2lzX3R0eSAmJiB0ZXJtX3N1cHBvcnRzX2NvbG9yOworI2VuZGlmICAvLyBHVEVTVF9PU19X
SU5ET1dTCisgIH0KKworICByZXR1cm4gU3RyaW5nOjpDYXNlSW5zZW5zaXRpdmVDU3RyaW5nRXF1
YWxzKGd0ZXN0X2NvbG9yLCAieWVzIikgfHwKKyAgICAgIFN0cmluZzo6Q2FzZUluc2Vuc2l0aXZl
Q1N0cmluZ0VxdWFscyhndGVzdF9jb2xvciwgInRydWUiKSB8fAorICAgICAgU3RyaW5nOjpDYXNl
SW5zZW5zaXRpdmVDU3RyaW5nRXF1YWxzKGd0ZXN0X2NvbG9yLCAidCIpIHx8CisgICAgICBTdHJp
bmc6OkNTdHJpbmdFcXVhbHMoZ3Rlc3RfY29sb3IsICIxIik7CisgIC8vIFdlIHRha2UgInllcyIs
ICJ0cnVlIiwgInQiLCBhbmQgIjEiIGFzIG1lYW5pbmcgInllcyIuICBJZiB0aGUKKyAgLy8gdmFs
dWUgaXMgbmVpdGhlciBvbmUgb2YgdGhlc2Ugbm9yICJhdXRvIiwgd2UgdHJlYXQgaXQgYXMgIm5v
IiB0bworICAvLyBiZSBjb25zZXJ2YXRpdmUuCit9CisKKy8vIEhlbHBlcnMgZm9yIHByaW50aW5n
IGNvbG9yZWQgc3RyaW5ncyB0byBzdGRvdXQuIE5vdGUgdGhhdCBvbiBXaW5kb3dzLCB3ZQorLy8g
Y2Fubm90IHNpbXBseSBlbWl0IHNwZWNpYWwgY2hhcmFjdGVycyBhbmQgaGF2ZSB0aGUgdGVybWlu
YWwgY2hhbmdlIGNvbG9ycy4KKy8vIFRoaXMgcm91dGluZSBtdXN0IGFjdHVhbGx5IGVtaXQgdGhl
IGNoYXJhY3RlcnMgcmF0aGVyIHRoYW4gcmV0dXJuIGEgc3RyaW5nCisvLyB0aGF0IHdvdWxkIGJl
IGNvbG9yZWQgd2hlbiBwcmludGVkLCBhcyBjYW4gYmUgZG9uZSBvbiBMaW51eC4KK0dURVNUX0FU
VFJJQlVURV9QUklOVEZfKDIsIDMpCit2b2lkIENvbG9yZWRQcmludGYoR1Rlc3RDb2xvciBjb2xv
ciwgY29uc3QgY2hhciogZm10LCAuLi4pIHsKKyAgdmFfbGlzdCBhcmdzOworICB2YV9zdGFydChh
cmdzLCBmbXQpOworCisjaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgfHwgR1RFU1RfT1NfU1lN
QklBTiB8fCBHVEVTVF9PU19aT1MgfHwgXAorICAgIEdURVNUX09TX0lPUyB8fCBHVEVTVF9PU19X
SU5ET1dTX1BIT05FIHx8IEdURVNUX09TX1dJTkRPV1NfUlQKKyAgY29uc3QgYm9vbCB1c2VfY29s
b3IgPSBBbHdheXNGYWxzZSgpOworI2Vsc2UKKyAgc3RhdGljIGNvbnN0IGJvb2wgaW5fY29sb3Jf
bW9kZSA9CisgICAgICBTaG91bGRVc2VDb2xvcihwb3NpeDo6SXNBVFRZKHBvc2l4OjpGaWxlTm8o
c3Rkb3V0KSkgIT0gMCk7CisgIGNvbnN0IGJvb2wgdXNlX2NvbG9yID0gaW5fY29sb3JfbW9kZSAm
JiAoY29sb3IgIT0gQ09MT1JfREVGQVVMVCk7CisjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1Nf
TU9CSUxFIHx8IEdURVNUX09TX1NZTUJJQU4gfHwgR1RFU1RfT1NfWk9TCisgIC8vIFRoZSAnIT0g
MCcgY29tcGFyaXNvbiBpcyBuZWNlc3NhcnkgdG8gc2F0aXNmeSBNU1ZDIDcuMS4KKworICBpZiAo
IXVzZV9jb2xvcikgeworICAgIHZwcmludGYoZm10LCBhcmdzKTsKKyAgICB2YV9lbmQoYXJncyk7
CisgICAgcmV0dXJuOworICB9CisKKyNpZiBHVEVTVF9PU19XSU5ET1dTICYmICFHVEVTVF9PU19X
SU5ET1dTX01PQklMRSAmJiBcCisgICAgIUdURVNUX09TX1dJTkRPV1NfUEhPTkUgJiYgIUdURVNU
X09TX1dJTkRPV1NfUlQKKyAgY29uc3QgSEFORExFIHN0ZG91dF9oYW5kbGUgPSBHZXRTdGRIYW5k
bGUoU1REX09VVFBVVF9IQU5ETEUpOworCisgIC8vIEdldHMgdGhlIGN1cnJlbnQgdGV4dCBjb2xv
ci4KKyAgQ09OU09MRV9TQ1JFRU5fQlVGRkVSX0lORk8gYnVmZmVyX2luZm87CisgIEdldENvbnNv
bGVTY3JlZW5CdWZmZXJJbmZvKHN0ZG91dF9oYW5kbGUsICZidWZmZXJfaW5mbyk7CisgIGNvbnN0
IFdPUkQgb2xkX2NvbG9yX2F0dHJzID0gYnVmZmVyX2luZm8ud0F0dHJpYnV0ZXM7CisKKyAgLy8g
V2UgbmVlZCB0byBmbHVzaCB0aGUgc3RyZWFtIGJ1ZmZlcnMgaW50byB0aGUgY29uc29sZSBiZWZv
cmUgZWFjaAorICAvLyBTZXRDb25zb2xlVGV4dEF0dHJpYnV0ZSBjYWxsIGxlc3QgaXQgYWZmZWN0
IHRoZSB0ZXh0IHRoYXQgaXMgYWxyZWFkeQorICAvLyBwcmludGVkIGJ1dCBoYXMgbm90IHlldCBy
ZWFjaGVkIHRoZSBjb25zb2xlLgorICBmZmx1c2goc3Rkb3V0KTsKKyAgU2V0Q29uc29sZVRleHRB
dHRyaWJ1dGUoc3Rkb3V0X2hhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0Q29s
b3JBdHRyaWJ1dGUoY29sb3IpIHwgRk9SRUdST1VORF9JTlRFTlNJVFkpOworICB2cHJpbnRmKGZt
dCwgYXJncyk7CisKKyAgZmZsdXNoKHN0ZG91dCk7CisgIC8vIFJlc3RvcmVzIHRoZSB0ZXh0IGNv
bG9yLgorICBTZXRDb25zb2xlVGV4dEF0dHJpYnV0ZShzdGRvdXRfaGFuZGxlLCBvbGRfY29sb3Jf
YXR0cnMpOworI2Vsc2UKKyAgcHJpbnRmKCJcMDMzWzA7MyVzbSIsIEdldEFuc2lDb2xvckNvZGUo
Y29sb3IpKTsKKyAgdnByaW50ZihmbXQsIGFyZ3MpOworICBwcmludGYoIlwwMzNbbSIpOyAgLy8g
UmVzZXRzIHRoZSB0ZXJtaW5hbCB0byBkZWZhdWx0LgorI2VuZGlmICAvLyBHVEVTVF9PU19XSU5E
T1dTICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorICB2YV9lbmQoYXJncyk7Cit9CisKKy8v
IFRleHQgcHJpbnRlZCBpbiBHb29nbGUgVGVzdCdzIHRleHQgb3V0cHV0IGFuZCAtLWd1bml0X2xp
c3RfdGVzdHMKKy8vIG91dHB1dCB0byBsYWJlbCB0aGUgdHlwZSBwYXJhbWV0ZXIgYW5kIHZhbHVl
IHBhcmFtZXRlciBmb3IgYSB0ZXN0Lgorc3RhdGljIGNvbnN0IGNoYXIga1R5cGVQYXJhbUxhYmVs
W10gPSAiVHlwZVBhcmFtIjsKK3N0YXRpYyBjb25zdCBjaGFyIGtWYWx1ZVBhcmFtTGFiZWxbXSA9
ICJHZXRQYXJhbSgpIjsKKwordm9pZCBQcmludEZ1bGxUZXN0Q29tbWVudElmUHJlc2VudChjb25z
dCBUZXN0SW5mbyYgdGVzdF9pbmZvKSB7CisgIGNvbnN0IGNoYXIqIGNvbnN0IHR5cGVfcGFyYW0g
PSB0ZXN0X2luZm8udHlwZV9wYXJhbSgpOworICBjb25zdCBjaGFyKiBjb25zdCB2YWx1ZV9wYXJh
bSA9IHRlc3RfaW5mby52YWx1ZV9wYXJhbSgpOworCisgIGlmICh0eXBlX3BhcmFtICE9IE5VTEwg
fHwgdmFsdWVfcGFyYW0gIT0gTlVMTCkgeworICAgIHByaW50ZigiLCB3aGVyZSAiKTsKKyAgICBp
ZiAodHlwZV9wYXJhbSAhPSBOVUxMKSB7CisgICAgICBwcmludGYoIiVzID0gJXMiLCBrVHlwZVBh
cmFtTGFiZWwsIHR5cGVfcGFyYW0pOworICAgICAgaWYgKHZhbHVlX3BhcmFtICE9IE5VTEwpCisg
ICAgICAgIHByaW50ZigiIGFuZCAiKTsKKyAgICB9CisgICAgaWYgKHZhbHVlX3BhcmFtICE9IE5V
TEwpIHsKKyAgICAgIHByaW50ZigiJXMgPSAlcyIsIGtWYWx1ZVBhcmFtTGFiZWwsIHZhbHVlX3Bh
cmFtKTsKKyAgICB9CisgIH0KK30KKworLy8gVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHRoZSBUZXN0
RXZlbnRMaXN0ZW5lciBpbnRlcmZhY2UuCisvLworLy8gQ2xhc3MgUHJldHR5VW5pdFRlc3RSZXN1
bHRQcmludGVyIGlzIGNvcHlhYmxlLgorY2xhc3MgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmludGVy
IDogcHVibGljIFRlc3RFdmVudExpc3RlbmVyIHsKKyBwdWJsaWM6CisgIFByZXR0eVVuaXRUZXN0
UmVzdWx0UHJpbnRlcigpIHt9CisgIHN0YXRpYyB2b2lkIFByaW50VGVzdE5hbWUoY29uc3QgY2hh
ciAqIHRlc3RfY2FzZSwgY29uc3QgY2hhciAqIHRlc3QpIHsKKyAgICBwcmludGYoIiVzLiVzIiwg
dGVzdF9jYXNlLCB0ZXN0KTsKKyAgfQorCisgIC8vIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBvdmVy
cmlkZSB3aGF0J3MgaW4gdGhlIFRlc3RFdmVudExpc3RlbmVyIGNsYXNzLgorICB2aXJ0dWFsIHZv
aWQgT25UZXN0UHJvZ3JhbVN0YXJ0KGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovKSB7fQor
ICB2aXJ0dWFsIHZvaWQgT25UZXN0SXRlcmF0aW9uU3RhcnQoY29uc3QgVW5pdFRlc3QmIHVuaXRf
dGVzdCwgaW50IGl0ZXJhdGlvbik7CisgIHZpcnR1YWwgdm9pZCBPbkVudmlyb25tZW50c1NldFVw
U3RhcnQoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCk7CisgIHZpcnR1YWwgdm9pZCBPbkVudmly
b25tZW50c1NldFVwRW5kKGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovKSB7fQorICB2aXJ0
dWFsIHZvaWQgT25UZXN0Q2FzZVN0YXJ0KGNvbnN0IFRlc3RDYXNlJiB0ZXN0X2Nhc2UpOworICB2
aXJ0dWFsIHZvaWQgT25UZXN0U3RhcnQoY29uc3QgVGVzdEluZm8mIHRlc3RfaW5mbyk7CisgIHZp
cnR1YWwgdm9pZCBPblRlc3RQYXJ0UmVzdWx0KGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiByZXN1bHQp
OworICB2aXJ0dWFsIHZvaWQgT25UZXN0RW5kKGNvbnN0IFRlc3RJbmZvJiB0ZXN0X2luZm8pOwor
ICB2aXJ0dWFsIHZvaWQgT25UZXN0Q2FzZUVuZChjb25zdCBUZXN0Q2FzZSYgdGVzdF9jYXNlKTsK
KyAgdmlydHVhbCB2b2lkIE9uRW52aXJvbm1lbnRzVGVhckRvd25TdGFydChjb25zdCBVbml0VGVz
dCYgdW5pdF90ZXN0KTsKKyAgdmlydHVhbCB2b2lkIE9uRW52aXJvbm1lbnRzVGVhckRvd25FbmQo
Y29uc3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8pIHt9CisgIHZpcnR1YWwgdm9pZCBPblRlc3RJ
dGVyYXRpb25FbmQoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCwgaW50IGl0ZXJhdGlvbik7Cisg
IHZpcnR1YWwgdm9pZCBPblRlc3RQcm9ncmFtRW5kKGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVz
dCovKSB7fQorCisgcHJpdmF0ZToKKyAgc3RhdGljIHZvaWQgUHJpbnRGYWlsZWRUZXN0cyhjb25z
dCBVbml0VGVzdCYgdW5pdF90ZXN0KTsKK307CisKKyAgLy8gRmlyZWQgYmVmb3JlIGVhY2ggaXRl
cmF0aW9uIG9mIHRlc3RzIHN0YXJ0cy4KK3ZvaWQgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmludGVy
OjpPblRlc3RJdGVyYXRpb25TdGFydCgKKyAgICBjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0LCBp
bnQgaXRlcmF0aW9uKSB7CisgIGlmIChHVEVTVF9GTEFHKHJlcGVhdCkgIT0gMSkKKyAgICBwcmlu
dGYoIlxuUmVwZWF0aW5nIGFsbCB0ZXN0cyAoaXRlcmF0aW9uICVkKSAuIC4gLlxuXG4iLCBpdGVy
YXRpb24gKyAxKTsKKworICBjb25zdCBjaGFyKiBjb25zdCBmaWx0ZXIgPSBHVEVTVF9GTEFHKGZp
bHRlcikuY19zdHIoKTsKKworICAvLyBQcmludHMgdGhlIGZpbHRlciBpZiBpdCdzIG5vdCAqLiAg
VGhpcyByZW1pbmRzIHRoZSB1c2VyIHRoYXQgc29tZQorICAvLyB0ZXN0cyBtYXkgYmUgc2tpcHBl
ZC4KKyAgaWYgKCFTdHJpbmc6OkNTdHJpbmdFcXVhbHMoZmlsdGVyLCBrVW5pdmVyc2FsRmlsdGVy
KSkgeworICAgIENvbG9yZWRQcmludGYoQ09MT1JfWUVMTE9XLAorICAgICAgICAgICAgICAgICAg
Ik5vdGU6ICVzIGZpbHRlciA9ICVzXG4iLCBHVEVTVF9OQU1FXywgZmlsdGVyKTsKKyAgfQorCisg
IGlmIChpbnRlcm5hbDo6U2hvdWxkU2hhcmQoa1Rlc3RUb3RhbFNoYXJkcywga1Rlc3RTaGFyZElu
ZGV4LCBmYWxzZSkpIHsKKyAgICBjb25zdCBJbnQzMiBzaGFyZF9pbmRleCA9IEludDMyRnJvbUVu
dk9yRGllKGtUZXN0U2hhcmRJbmRleCwgLTEpOworICAgIENvbG9yZWRQcmludGYoQ09MT1JfWUVM
TE9XLAorICAgICAgICAgICAgICAgICAgIk5vdGU6IFRoaXMgaXMgdGVzdCBzaGFyZCAlZCBvZiAl
cy5cbiIsCisgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KHNoYXJkX2luZGV4KSAr
IDEsCisgICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6cG9zaXg6OkdldEVudihrVGVzdFRvdGFs
U2hhcmRzKSk7CisgIH0KKworICBpZiAoR1RFU1RfRkxBRyhzaHVmZmxlKSkgeworICAgIENvbG9y
ZWRQcmludGYoQ09MT1JfWUVMTE9XLAorICAgICAgICAgICAgICAgICAgIk5vdGU6IFJhbmRvbWl6
aW5nIHRlc3RzJyBvcmRlcnMgd2l0aCBhIHNlZWQgb2YgJWQgLlxuIiwKKyAgICAgICAgICAgICAg
ICAgIHVuaXRfdGVzdC5yYW5kb21fc2VlZCgpKTsKKyAgfQorCisgIENvbG9yZWRQcmludGYoQ09M
T1JfR1JFRU4sICAiWz09PT09PT09PT1dICIpOworICBwcmludGYoIlJ1bm5pbmcgJXMgZnJvbSAl
cy5cbiIsCisgICAgICAgICBGb3JtYXRUZXN0Q291bnQodW5pdF90ZXN0LnRlc3RfdG9fcnVuX2Nv
dW50KCkpLmNfc3RyKCksCisgICAgICAgICBGb3JtYXRUZXN0Q2FzZUNvdW50KHVuaXRfdGVzdC50
ZXN0X2Nhc2VfdG9fcnVuX2NvdW50KCkpLmNfc3RyKCkpOworICBmZmx1c2goc3Rkb3V0KTsKK30K
Kwordm9pZCBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok9uRW52aXJvbm1lbnRzU2V0VXBT
dGFydCgKKyAgICBjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykgeworICBDb2xvcmVkUHJp
bnRmKENPTE9SX0dSRUVOLCAgIlstLS0tLS0tLS0tXSAiKTsKKyAgcHJpbnRmKCJHbG9iYWwgdGVz
dCBlbnZpcm9ubWVudCBzZXQtdXAuXG4iKTsKKyAgZmZsdXNoKHN0ZG91dCk7Cit9CisKK3ZvaWQg
UHJldHR5VW5pdFRlc3RSZXN1bHRQcmludGVyOjpPblRlc3RDYXNlU3RhcnQoY29uc3QgVGVzdENh
c2UmIHRlc3RfY2FzZSkgeworICBjb25zdCBzdGQ6OnN0cmluZyBjb3VudHMgPQorICAgICAgRm9y
bWF0Q291bnRhYmxlTm91bih0ZXN0X2Nhc2UudGVzdF90b19ydW5fY291bnQoKSwgInRlc3QiLCAi
dGVzdHMiKTsKKyAgQ29sb3JlZFByaW50ZihDT0xPUl9HUkVFTiwgIlstLS0tLS0tLS0tXSAiKTsK
KyAgcHJpbnRmKCIlcyBmcm9tICVzIiwgY291bnRzLmNfc3RyKCksIHRlc3RfY2FzZS5uYW1lKCkp
OworICBpZiAodGVzdF9jYXNlLnR5cGVfcGFyYW0oKSA9PSBOVUxMKSB7CisgICAgcHJpbnRmKCJc
biIpOworICB9IGVsc2UgeworICAgIHByaW50ZigiLCB3aGVyZSAlcyA9ICVzXG4iLCBrVHlwZVBh
cmFtTGFiZWwsIHRlc3RfY2FzZS50eXBlX3BhcmFtKCkpOworICB9CisgIGZmbHVzaChzdGRvdXQp
OworfQorCit2b2lkIFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T25UZXN0U3RhcnQoY29u
c3QgVGVzdEluZm8mIHRlc3RfaW5mbykgeworICBDb2xvcmVkUHJpbnRmKENPTE9SX0dSRUVOLCAg
IlsgUlVOICAgICAgXSAiKTsKKyAgUHJpbnRUZXN0TmFtZSh0ZXN0X2luZm8udGVzdF9jYXNlX25h
bWUoKSwgdGVzdF9pbmZvLm5hbWUoKSk7CisgIHByaW50ZigiXG4iKTsKKyAgZmZsdXNoKHN0ZG91
dCk7Cit9CisKKy8vIENhbGxlZCBhZnRlciBhbiBhc3NlcnRpb24gZmFpbHVyZS4KK3ZvaWQgUHJl
dHR5VW5pdFRlc3RSZXN1bHRQcmludGVyOjpPblRlc3RQYXJ0UmVzdWx0KAorICAgIGNvbnN0IFRl
c3RQYXJ0UmVzdWx0JiByZXN1bHQpIHsKKyAgLy8gSWYgdGhlIHRlc3QgcGFydCBzdWNjZWVkZWQs
IHdlIGRvbid0IG5lZWQgdG8gZG8gYW55dGhpbmcuCisgIGlmIChyZXN1bHQudHlwZSgpID09IFRl
c3RQYXJ0UmVzdWx0OjprU3VjY2VzcykKKyAgICByZXR1cm47CisKKyAgLy8gUHJpbnQgZmFpbHVy
ZSBtZXNzYWdlIGZyb20gdGhlIGFzc2VydGlvbiAoZS5nLiBleHBlY3RlZCB0aGlzIGFuZCBnb3Qg
dGhhdCkuCisgIFByaW50VGVzdFBhcnRSZXN1bHQocmVzdWx0KTsKKyAgZmZsdXNoKHN0ZG91dCk7
Cit9CisKK3ZvaWQgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmludGVyOjpPblRlc3RFbmQoY29uc3Qg
VGVzdEluZm8mIHRlc3RfaW5mbykgeworICBpZiAodGVzdF9pbmZvLnJlc3VsdCgpLT5QYXNzZWQo
KSkgeworICAgIENvbG9yZWRQcmludGYoQ09MT1JfR1JFRU4sICJbICAgICAgIE9LIF0gIik7Cisg
IH0gZWxzZSB7CisgICAgQ29sb3JlZFByaW50ZihDT0xPUl9SRUQsICJbICBGQUlMRUQgIF0gIik7
CisgIH0KKyAgUHJpbnRUZXN0TmFtZSh0ZXN0X2luZm8udGVzdF9jYXNlX25hbWUoKSwgdGVzdF9p
bmZvLm5hbWUoKSk7CisgIGlmICh0ZXN0X2luZm8ucmVzdWx0KCktPkZhaWxlZCgpKQorICAgIFBy
aW50RnVsbFRlc3RDb21tZW50SWZQcmVzZW50KHRlc3RfaW5mbyk7CisKKyAgaWYgKEdURVNUX0ZM
QUcocHJpbnRfdGltZSkpIHsKKyAgICBwcmludGYoIiAoJXMgbXMpXG4iLCBpbnRlcm5hbDo6U3Ry
ZWFtYWJsZVRvU3RyaW5nKAorICAgICAgICAgICB0ZXN0X2luZm8ucmVzdWx0KCktPmVsYXBzZWRf
dGltZSgpKS5jX3N0cigpKTsKKyAgfSBlbHNlIHsKKyAgICBwcmludGYoIlxuIik7CisgIH0KKyAg
ZmZsdXNoKHN0ZG91dCk7Cit9CisKK3ZvaWQgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmludGVyOjpP
blRlc3RDYXNlRW5kKGNvbnN0IFRlc3RDYXNlJiB0ZXN0X2Nhc2UpIHsKKyAgaWYgKCFHVEVTVF9G
TEFHKHByaW50X3RpbWUpKSByZXR1cm47CisKKyAgY29uc3Qgc3RkOjpzdHJpbmcgY291bnRzID0K
KyAgICAgIEZvcm1hdENvdW50YWJsZU5vdW4odGVzdF9jYXNlLnRlc3RfdG9fcnVuX2NvdW50KCks
ICJ0ZXN0IiwgInRlc3RzIik7CisgIENvbG9yZWRQcmludGYoQ09MT1JfR1JFRU4sICJbLS0tLS0t
LS0tLV0gIik7CisgIHByaW50ZigiJXMgZnJvbSAlcyAoJXMgbXMgdG90YWwpXG5cbiIsCisgICAg
ICAgICBjb3VudHMuY19zdHIoKSwgdGVzdF9jYXNlLm5hbWUoKSwKKyAgICAgICAgIGludGVybmFs
OjpTdHJlYW1hYmxlVG9TdHJpbmcodGVzdF9jYXNlLmVsYXBzZWRfdGltZSgpKS5jX3N0cigpKTsK
KyAgZmZsdXNoKHN0ZG91dCk7Cit9CisKK3ZvaWQgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmludGVy
OjpPbkVudmlyb25tZW50c1RlYXJEb3duU3RhcnQoCisgICAgY29uc3QgVW5pdFRlc3QmIC8qdW5p
dF90ZXN0Ki8pIHsKKyAgQ29sb3JlZFByaW50ZihDT0xPUl9HUkVFTiwgICJbLS0tLS0tLS0tLV0g
Iik7CisgIHByaW50ZigiR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgdGVhci1kb3duXG4iKTsKKyAg
ZmZsdXNoKHN0ZG91dCk7Cit9CisKKy8vIEludGVybmFsIGhlbHBlciBmb3IgcHJpbnRpbmcgdGhl
IGxpc3Qgb2YgZmFpbGVkIHRlc3RzLgordm9pZCBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXI6
OlByaW50RmFpbGVkVGVzdHMoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCkgeworICBjb25zdCBp
bnQgZmFpbGVkX3Rlc3RfY291bnQgPSB1bml0X3Rlc3QuZmFpbGVkX3Rlc3RfY291bnQoKTsKKyAg
aWYgKGZhaWxlZF90ZXN0X2NvdW50ID09IDApIHsKKyAgICByZXR1cm47CisgIH0KKworICBmb3Ig
KGludCBpID0gMDsgaSA8IHVuaXRfdGVzdC50b3RhbF90ZXN0X2Nhc2VfY291bnQoKTsgKytpKSB7
CisgICAgY29uc3QgVGVzdENhc2UmIHRlc3RfY2FzZSA9ICp1bml0X3Rlc3QuR2V0VGVzdENhc2Uo
aSk7CisgICAgaWYgKCF0ZXN0X2Nhc2Uuc2hvdWxkX3J1bigpIHx8ICh0ZXN0X2Nhc2UuZmFpbGVk
X3Rlc3RfY291bnQoKSA9PSAwKSkgeworICAgICAgY29udGludWU7CisgICAgfQorICAgIGZvciAo
aW50IGogPSAwOyBqIDwgdGVzdF9jYXNlLnRvdGFsX3Rlc3RfY291bnQoKTsgKytqKSB7CisgICAg
ICBjb25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvID0gKnRlc3RfY2FzZS5HZXRUZXN0SW5mbyhqKTsK
KyAgICAgIGlmICghdGVzdF9pbmZvLnNob3VsZF9ydW4oKSB8fCB0ZXN0X2luZm8ucmVzdWx0KCkt
PlBhc3NlZCgpKSB7CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorICAgICAgQ29sb3JlZFBy
aW50ZihDT0xPUl9SRUQsICJbICBGQUlMRUQgIF0gIik7CisgICAgICBwcmludGYoIiVzLiVzIiwg
dGVzdF9jYXNlLm5hbWUoKSwgdGVzdF9pbmZvLm5hbWUoKSk7CisgICAgICBQcmludEZ1bGxUZXN0
Q29tbWVudElmUHJlc2VudCh0ZXN0X2luZm8pOworICAgICAgcHJpbnRmKCJcbiIpOworICAgIH0K
KyAgfQorfQorCit2b2lkIFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T25UZXN0SXRlcmF0
aW9uRW5kKGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAvKml0ZXJhdGlvbiovKSB7CisgIENv
bG9yZWRQcmludGYoQ09MT1JfR1JFRU4sICAiWz09PT09PT09PT1dICIpOworICBwcmludGYoIiVz
IGZyb20gJXMgcmFuLiIsCisgICAgICAgICBGb3JtYXRUZXN0Q291bnQodW5pdF90ZXN0LnRlc3Rf
dG9fcnVuX2NvdW50KCkpLmNfc3RyKCksCisgICAgICAgICBGb3JtYXRUZXN0Q2FzZUNvdW50KHVu
aXRfdGVzdC50ZXN0X2Nhc2VfdG9fcnVuX2NvdW50KCkpLmNfc3RyKCkpOworICBpZiAoR1RFU1Rf
RkxBRyhwcmludF90aW1lKSkgeworICAgIHByaW50ZigiICglcyBtcyB0b3RhbCkiLAorICAgICAg
ICAgICBpbnRlcm5hbDo6U3RyZWFtYWJsZVRvU3RyaW5nKHVuaXRfdGVzdC5lbGFwc2VkX3RpbWUo
KSkuY19zdHIoKSk7CisgIH0KKyAgcHJpbnRmKCJcbiIpOworICBDb2xvcmVkUHJpbnRmKENPTE9S
X0dSRUVOLCAgIlsgIFBBU1NFRCAgXSAiKTsKKyAgcHJpbnRmKCIlcy5cbiIsIEZvcm1hdFRlc3RD
b3VudCh1bml0X3Rlc3Quc3VjY2Vzc2Z1bF90ZXN0X2NvdW50KCkpLmNfc3RyKCkpOworCisgIGlu
dCBudW1fZmFpbHVyZXMgPSB1bml0X3Rlc3QuZmFpbGVkX3Rlc3RfY291bnQoKTsKKyAgaWYgKCF1
bml0X3Rlc3QuUGFzc2VkKCkpIHsKKyAgICBjb25zdCBpbnQgZmFpbGVkX3Rlc3RfY291bnQgPSB1
bml0X3Rlc3QuZmFpbGVkX3Rlc3RfY291bnQoKTsKKyAgICBDb2xvcmVkUHJpbnRmKENPTE9SX1JF
RCwgICJbICBGQUlMRUQgIF0gIik7CisgICAgcHJpbnRmKCIlcywgbGlzdGVkIGJlbG93OlxuIiwg
Rm9ybWF0VGVzdENvdW50KGZhaWxlZF90ZXN0X2NvdW50KS5jX3N0cigpKTsKKyAgICBQcmludEZh
aWxlZFRlc3RzKHVuaXRfdGVzdCk7CisgICAgcHJpbnRmKCJcbiUyZCBGQUlMRUQgJXNcbiIsIG51
bV9mYWlsdXJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgIG51bV9mYWlsdXJlcyA9PSAxID8g
IlRFU1QiIDogIlRFU1RTIik7CisgIH0KKworICBpbnQgbnVtX2Rpc2FibGVkID0gdW5pdF90ZXN0
LnJlcG9ydGFibGVfZGlzYWJsZWRfdGVzdF9jb3VudCgpOworICBpZiAobnVtX2Rpc2FibGVkICYm
ICFHVEVTVF9GTEFHKGFsc29fcnVuX2Rpc2FibGVkX3Rlc3RzKSkgeworICAgIGlmICghbnVtX2Zh
aWx1cmVzKSB7CisgICAgICBwcmludGYoIlxuIik7ICAvLyBBZGQgYSBzcGFjZXIgaWYgbm8gRkFJ
TFVSRSBiYW5uZXIgaXMgZGlzcGxheWVkLgorICAgIH0KKyAgICBDb2xvcmVkUHJpbnRmKENPTE9S
X1lFTExPVywKKyAgICAgICAgICAgICAgICAgICIgIFlPVSBIQVZFICVkIERJU0FCTEVEICVzXG5c
biIsCisgICAgICAgICAgICAgICAgICBudW1fZGlzYWJsZWQsCisgICAgICAgICAgICAgICAgICBu
dW1fZGlzYWJsZWQgPT0gMSA/ICJURVNUIiA6ICJURVNUUyIpOworICB9CisgIC8vIEVuc3VyZSB0
aGF0IEdvb2dsZSBUZXN0IG91dHB1dCBpcyBwcmludGVkIGJlZm9yZSwgZS5nLiwgaGVhcGNoZWNr
ZXIgb3V0cHV0LgorICBmZmx1c2goc3Rkb3V0KTsKK30KKworLy8gRW5kIFByZXR0eVVuaXRUZXN0
UmVzdWx0UHJpbnRlcgorCisvLyBjbGFzcyBUZXN0RXZlbnRSZXBlYXRlcgorLy8KKy8vIFRoaXMg
Y2xhc3MgZm9yd2FyZHMgZXZlbnRzIHRvIG90aGVyIGV2ZW50IGxpc3RlbmVycy4KK2NsYXNzIFRl
c3RFdmVudFJlcGVhdGVyIDogcHVibGljIFRlc3RFdmVudExpc3RlbmVyIHsKKyBwdWJsaWM6Cisg
IFRlc3RFdmVudFJlcGVhdGVyKCkgOiBmb3J3YXJkaW5nX2VuYWJsZWRfKHRydWUpIHt9CisgIHZp
cnR1YWwgflRlc3RFdmVudFJlcGVhdGVyKCk7CisgIHZvaWQgQXBwZW5kKFRlc3RFdmVudExpc3Rl
bmVyICpsaXN0ZW5lcik7CisgIFRlc3RFdmVudExpc3RlbmVyKiBSZWxlYXNlKFRlc3RFdmVudExp
c3RlbmVyKiBsaXN0ZW5lcik7CisKKyAgLy8gQ29udHJvbHMgd2hldGhlciBldmVudHMgd2lsbCBi
ZSBmb3J3YXJkZWQgdG8gbGlzdGVuZXJzXy4gU2V0IHRvIGZhbHNlCisgIC8vIGluIGRlYXRoIHRl
c3QgY2hpbGQgcHJvY2Vzc2VzLgorICBib29sIGZvcndhcmRpbmdfZW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIGZvcndhcmRpbmdfZW5hYmxlZF87IH0KKyAgdm9pZCBzZXRfZm9yd2FyZGluZ19lbmFi
bGVkKGJvb2wgZW5hYmxlKSB7IGZvcndhcmRpbmdfZW5hYmxlZF8gPSBlbmFibGU7IH0KKworICB2
aXJ0dWFsIHZvaWQgT25UZXN0UHJvZ3JhbVN0YXJ0KGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3Qp
OworICB2aXJ0dWFsIHZvaWQgT25UZXN0SXRlcmF0aW9uU3RhcnQoY29uc3QgVW5pdFRlc3QmIHVu
aXRfdGVzdCwgaW50IGl0ZXJhdGlvbik7CisgIHZpcnR1YWwgdm9pZCBPbkVudmlyb25tZW50c1Nl
dFVwU3RhcnQoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCk7CisgIHZpcnR1YWwgdm9pZCBPbkVu
dmlyb25tZW50c1NldFVwRW5kKGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QpOworICB2aXJ0dWFs
IHZvaWQgT25UZXN0Q2FzZVN0YXJ0KGNvbnN0IFRlc3RDYXNlJiB0ZXN0X2Nhc2UpOworICB2aXJ0
dWFsIHZvaWQgT25UZXN0U3RhcnQoY29uc3QgVGVzdEluZm8mIHRlc3RfaW5mbyk7CisgIHZpcnR1
YWwgdm9pZCBPblRlc3RQYXJ0UmVzdWx0KGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiByZXN1bHQpOwor
ICB2aXJ0dWFsIHZvaWQgT25UZXN0RW5kKGNvbnN0IFRlc3RJbmZvJiB0ZXN0X2luZm8pOworICB2
aXJ0dWFsIHZvaWQgT25UZXN0Q2FzZUVuZChjb25zdCBUZXN0Q2FzZSYgdGVzdF9jYXNlKTsKKyAg
dmlydHVhbCB2b2lkIE9uRW52aXJvbm1lbnRzVGVhckRvd25TdGFydChjb25zdCBVbml0VGVzdCYg
dW5pdF90ZXN0KTsKKyAgdmlydHVhbCB2b2lkIE9uRW52aXJvbm1lbnRzVGVhckRvd25FbmQoY29u
c3QgVW5pdFRlc3QmIHVuaXRfdGVzdCk7CisgIHZpcnR1YWwgdm9pZCBPblRlc3RJdGVyYXRpb25F
bmQoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCwgaW50IGl0ZXJhdGlvbik7CisgIHZpcnR1YWwg
dm9pZCBPblRlc3RQcm9ncmFtRW5kKGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QpOworCisgcHJp
dmF0ZToKKyAgLy8gQ29udHJvbHMgd2hldGhlciBldmVudHMgd2lsbCBiZSBmb3J3YXJkZWQgdG8g
bGlzdGVuZXJzXy4gU2V0IHRvIGZhbHNlCisgIC8vIGluIGRlYXRoIHRlc3QgY2hpbGQgcHJvY2Vz
c2VzLgorICBib29sIGZvcndhcmRpbmdfZW5hYmxlZF87CisgIC8vIFRoZSBsaXN0IG9mIGxpc3Rl
bmVycyB0aGF0IHJlY2VpdmUgZXZlbnRzLgorICBzdGQ6OnZlY3RvcjxUZXN0RXZlbnRMaXN0ZW5l
cio+IGxpc3RlbmVyc187CisKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUZXN0
RXZlbnRSZXBlYXRlcik7Cit9OworCitUZXN0RXZlbnRSZXBlYXRlcjo6flRlc3RFdmVudFJlcGVh
dGVyKCkgeworICBGb3JFYWNoKGxpc3RlbmVyc18sIERlbGV0ZTxUZXN0RXZlbnRMaXN0ZW5lcj4p
OworfQorCit2b2lkIFRlc3RFdmVudFJlcGVhdGVyOjpBcHBlbmQoVGVzdEV2ZW50TGlzdGVuZXIg
Kmxpc3RlbmVyKSB7CisgIGxpc3RlbmVyc18ucHVzaF9iYWNrKGxpc3RlbmVyKTsKK30KKworLy8g
VE9ETyh2bGFkbEBnb29nbGUuY29tKTogRmFjdG9yIHRoZSBzZWFyY2ggZnVuY3Rpb25hbGl0eSBp
bnRvIFZlY3Rvcjo6RmluZC4KK1Rlc3RFdmVudExpc3RlbmVyKiBUZXN0RXZlbnRSZXBlYXRlcjo6
UmVsZWFzZShUZXN0RXZlbnRMaXN0ZW5lciAqbGlzdGVuZXIpIHsKKyAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBsaXN0ZW5lcnNfLnNpemUoKTsgKytpKSB7CisgICAgaWYgKGxpc3RlbmVyc19baV0g
PT0gbGlzdGVuZXIpIHsKKyAgICAgIGxpc3RlbmVyc18uZXJhc2UobGlzdGVuZXJzXy5iZWdpbigp
ICsgaSk7CisgICAgICByZXR1cm4gbGlzdGVuZXI7CisgICAgfQorICB9CisKKyAgcmV0dXJuIE5V
TEw7Cit9CisKKy8vIFNpbmNlIG1vc3QgbWV0aG9kcyBhcmUgdmVyeSBzaW1pbGFyLCB1c2UgbWFj
cm9zIHRvIHJlZHVjZSBib2lsZXJwbGF0ZS4KKy8vIFRoaXMgZGVmaW5lcyBhIG1lbWJlciB0aGF0
IGZvcndhcmRzIHRoZSBjYWxsIHRvIGFsbCBsaXN0ZW5lcnMuCisjZGVmaW5lIEdURVNUX1JFUEVB
VEVSX01FVEhPRF8oTmFtZSwgVHlwZSkgXAordm9pZCBUZXN0RXZlbnRSZXBlYXRlcjo6TmFtZShj
b25zdCBUeXBlJiBwYXJhbWV0ZXIpIHsgXAorICBpZiAoZm9yd2FyZGluZ19lbmFibGVkXykgeyBc
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0ZW5lcnNfLnNpemUoKTsgaSsrKSB7IFwK
KyAgICAgIGxpc3RlbmVyc19baV0tPk5hbWUocGFyYW1ldGVyKTsgXAorICAgIH0gXAorICB9IFwK
K30KKy8vIFRoaXMgZGVmaW5lcyBhIG1lbWJlciB0aGF0IGZvcndhcmRzIHRoZSBjYWxsIHRvIGFs
bCBsaXN0ZW5lcnMgaW4gcmV2ZXJzZQorLy8gb3JkZXIuCisjZGVmaW5lIEdURVNUX1JFVkVSU0Vf
UkVQRUFURVJfTUVUSE9EXyhOYW1lLCBUeXBlKSBcCit2b2lkIFRlc3RFdmVudFJlcGVhdGVyOjpO
YW1lKGNvbnN0IFR5cGUmIHBhcmFtZXRlcikgeyBcCisgIGlmIChmb3J3YXJkaW5nX2VuYWJsZWRf
KSB7IFwKKyAgICBmb3IgKGludCBpID0gc3RhdGljX2Nhc3Q8aW50PihsaXN0ZW5lcnNfLnNpemUo
KSkgLSAxOyBpID49IDA7IGktLSkgeyBcCisgICAgICBsaXN0ZW5lcnNfW2ldLT5OYW1lKHBhcmFt
ZXRlcik7IFwKKyAgICB9IFwKKyAgfSBcCit9CisKK0dURVNUX1JFUEVBVEVSX01FVEhPRF8oT25U
ZXN0UHJvZ3JhbVN0YXJ0LCBVbml0VGVzdCkKK0dURVNUX1JFUEVBVEVSX01FVEhPRF8oT25FbnZp
cm9ubWVudHNTZXRVcFN0YXJ0LCBVbml0VGVzdCkKK0dURVNUX1JFUEVBVEVSX01FVEhPRF8oT25U
ZXN0Q2FzZVN0YXJ0LCBUZXN0Q2FzZSkKK0dURVNUX1JFUEVBVEVSX01FVEhPRF8oT25UZXN0U3Rh
cnQsIFRlc3RJbmZvKQorR1RFU1RfUkVQRUFURVJfTUVUSE9EXyhPblRlc3RQYXJ0UmVzdWx0LCBU
ZXN0UGFydFJlc3VsdCkKK0dURVNUX1JFUEVBVEVSX01FVEhPRF8oT25FbnZpcm9ubWVudHNUZWFy
RG93blN0YXJ0LCBVbml0VGVzdCkKK0dURVNUX1JFVkVSU0VfUkVQRUFURVJfTUVUSE9EXyhPbkVu
dmlyb25tZW50c1NldFVwRW5kLCBVbml0VGVzdCkKK0dURVNUX1JFVkVSU0VfUkVQRUFURVJfTUVU
SE9EXyhPbkVudmlyb25tZW50c1RlYXJEb3duRW5kLCBVbml0VGVzdCkKK0dURVNUX1JFVkVSU0Vf
UkVQRUFURVJfTUVUSE9EXyhPblRlc3RFbmQsIFRlc3RJbmZvKQorR1RFU1RfUkVWRVJTRV9SRVBF
QVRFUl9NRVRIT0RfKE9uVGVzdENhc2VFbmQsIFRlc3RDYXNlKQorR1RFU1RfUkVWRVJTRV9SRVBF
QVRFUl9NRVRIT0RfKE9uVGVzdFByb2dyYW1FbmQsIFVuaXRUZXN0KQorCisjdW5kZWYgR1RFU1Rf
UkVQRUFURVJfTUVUSE9EXworI3VuZGVmIEdURVNUX1JFVkVSU0VfUkVQRUFURVJfTUVUSE9EXwor
Cit2b2lkIFRlc3RFdmVudFJlcGVhdGVyOjpPblRlc3RJdGVyYXRpb25TdGFydChjb25zdCBVbml0
VGVzdCYgdW5pdF90ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGl0ZXJhdGlvbikgeworICBpZiAoZm9yd2FyZGluZ19lbmFibGVkXykgeworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdGVuZXJzXy5zaXplKCk7IGkrKykgeworICAgICAg
bGlzdGVuZXJzX1tpXS0+T25UZXN0SXRlcmF0aW9uU3RhcnQodW5pdF90ZXN0LCBpdGVyYXRpb24p
OworICAgIH0KKyAgfQorfQorCit2b2lkIFRlc3RFdmVudFJlcGVhdGVyOjpPblRlc3RJdGVyYXRp
b25FbmQoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgaXRlcmF0aW9uKSB7CisgIGlmIChmb3J3YXJkaW5nX2Vu
YWJsZWRfKSB7CisgICAgZm9yIChpbnQgaSA9IHN0YXRpY19jYXN0PGludD4obGlzdGVuZXJzXy5z
aXplKCkpIC0gMTsgaSA+PSAwOyBpLS0pIHsKKyAgICAgIGxpc3RlbmVyc19baV0tPk9uVGVzdEl0
ZXJhdGlvbkVuZCh1bml0X3Rlc3QsIGl0ZXJhdGlvbik7CisgICAgfQorICB9Cit9CisKKy8vIEVu
ZCBUZXN0RXZlbnRSZXBlYXRlcgorCisvLyBUaGlzIGNsYXNzIGdlbmVyYXRlcyBhbiBYTUwgb3V0
cHV0IGZpbGUuCitjbGFzcyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXIgOiBwdWJsaWMgRW1wdHlU
ZXN0RXZlbnRMaXN0ZW5lciB7CisgcHVibGljOgorICBleHBsaWNpdCBYbWxVbml0VGVzdFJlc3Vs
dFByaW50ZXIoY29uc3QgY2hhciogb3V0cHV0X2ZpbGUpOworCisgIHZpcnR1YWwgdm9pZCBPblRl
c3RJdGVyYXRpb25FbmQoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCwgaW50IGl0ZXJhdGlvbik7
CisKKyBwcml2YXRlOgorICAvLyBJcyBjIGEgd2hpdGVzcGFjZSBjaGFyYWN0ZXIgdGhhdCBpcyBu
b3JtYWxpemVkIHRvIGEgc3BhY2UgY2hhcmFjdGVyCisgIC8vIHdoZW4gaXQgYXBwZWFycyBpbiBh
biBYTUwgYXR0cmlidXRlIHZhbHVlPworICBzdGF0aWMgYm9vbCBJc05vcm1hbGl6YWJsZVdoaXRl
c3BhY2UoY2hhciBjKSB7CisgICAgcmV0dXJuIGMgPT0gMHg5IHx8IGMgPT0gMHhBIHx8IGMgPT0g
MHhEOworICB9CisKKyAgLy8gTWF5IGMgYXBwZWFyIGluIGEgd2VsbC1mb3JtZWQgWE1MIGRvY3Vt
ZW50PworICBzdGF0aWMgYm9vbCBJc1ZhbGlkWG1sQ2hhcmFjdGVyKGNoYXIgYykgeworICAgIHJl
dHVybiBJc05vcm1hbGl6YWJsZVdoaXRlc3BhY2UoYykgfHwgYyA+PSAweDIwOworICB9CisKKyAg
Ly8gUmV0dXJucyBhbiBYTUwtZXNjYXBlZCBjb3B5IG9mIHRoZSBpbnB1dCBzdHJpbmcgc3RyLiAg
SWYKKyAgLy8gaXNfYXR0cmlidXRlIGlzIHRydWUsIHRoZSB0ZXh0IGlzIG1lYW50IHRvIGFwcGVh
ciBhcyBhbiBhdHRyaWJ1dGUKKyAgLy8gdmFsdWUsIGFuZCBub3JtYWxpemFibGUgd2hpdGVzcGFj
ZSBpcyBwcmVzZXJ2ZWQgYnkgcmVwbGFjaW5nIGl0CisgIC8vIHdpdGggY2hhcmFjdGVyIHJlZmVy
ZW5jZXMuCisgIHN0YXRpYyBzdGQ6OnN0cmluZyBFc2NhcGVYbWwoY29uc3Qgc3RkOjpzdHJpbmcm
IHN0ciwgYm9vbCBpc19hdHRyaWJ1dGUpOworCisgIC8vIFJldHVybnMgdGhlIGdpdmVuIHN0cmlu
ZyB3aXRoIGFsbCBjaGFyYWN0ZXJzIGludmFsaWQgaW4gWE1MIHJlbW92ZWQuCisgIHN0YXRpYyBz
dGQ6OnN0cmluZyBSZW1vdmVJbnZhbGlkWG1sQ2hhcmFjdGVycyhjb25zdCBzdGQ6OnN0cmluZyYg
c3RyKTsKKworICAvLyBDb252ZW5pZW5jZSB3cmFwcGVyIGFyb3VuZCBFc2NhcGVYbWwgd2hlbiBz
dHIgaXMgYW4gYXR0cmlidXRlIHZhbHVlLgorICBzdGF0aWMgc3RkOjpzdHJpbmcgRXNjYXBlWG1s
QXR0cmlidXRlKGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIpIHsKKyAgICByZXR1cm4gRXNjYXBlWG1s
KHN0ciwgdHJ1ZSk7CisgIH0KKworICAvLyBDb252ZW5pZW5jZSB3cmFwcGVyIGFyb3VuZCBFc2Nh
cGVYbWwgd2hlbiBzdHIgaXMgbm90IGFuIGF0dHJpYnV0ZSB2YWx1ZS4KKyAgc3RhdGljIHN0ZDo6
c3RyaW5nIEVzY2FwZVhtbFRleHQoY29uc3QgY2hhciogc3RyKSB7CisgICAgcmV0dXJuIEVzY2Fw
ZVhtbChzdHIsIGZhbHNlKTsKKyAgfQorCisgIC8vIFZlcmlmaWVzIHRoYXQgdGhlIGdpdmVuIGF0
dHJpYnV0ZSBiZWxvbmdzIHRvIHRoZSBnaXZlbiBlbGVtZW50IGFuZAorICAvLyBzdHJlYW1zIHRo
ZSBhdHRyaWJ1dGUgYXMgWE1MLgorICBzdGF0aWMgdm9pZCBPdXRwdXRYbWxBdHRyaWJ1dGUoc3Rk
Ojpvc3RyZWFtKiBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBzdGQ6OnN0cmluZyYgZWxlbWVudF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUpOworCisgIC8vIFN0cmVhbXMgYW4gWE1M
IENEQVRBIHNlY3Rpb24sIGVzY2FwaW5nIGludmFsaWQgQ0RBVEEgc2VxdWVuY2VzIGFzIG5lZWRl
ZC4KKyAgc3RhdGljIHZvaWQgT3V0cHV0WG1sQ0RhdGFTZWN0aW9uKDo6c3RkOjpvc3RyZWFtKiBz
dHJlYW0sIGNvbnN0IGNoYXIqIGRhdGEpOworCisgIC8vIFN0cmVhbXMgYW4gWE1MIHJlcHJlc2Vu
dGF0aW9uIG9mIGEgVGVzdEluZm8gb2JqZWN0LgorICBzdGF0aWMgdm9pZCBPdXRwdXRYbWxUZXN0
SW5mbyg6OnN0ZDo6b3N0cmVhbSogc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVGVzdEluZm8mIHRlc3RfaW5mbyk7CisKKyAgLy8gUHJpbnRzIGFuIFhN
TCByZXByZXNlbnRhdGlvbiBvZiBhIFRlc3RDYXNlIG9iamVjdAorICBzdGF0aWMgdm9pZCBQcmlu
dFhtbFRlc3RDYXNlKDo6c3RkOjpvc3RyZWFtKiBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVGVzdENhc2UmIHRlc3RfY2FzZSk7CisKKyAgLy8gUHJpbnRzIGFu
IFhNTCBzdW1tYXJ5IG9mIHVuaXRfdGVzdCB0byBvdXRwdXQgc3RyZWFtIG91dC4KKyAgc3RhdGlj
IHZvaWQgUHJpbnRYbWxVbml0VGVzdCg6OnN0ZDo6b3N0cmVhbSogc3RyZWFtLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QpOworCisgIC8v
IFByb2R1Y2VzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdGVzdCBwcm9wZXJ0aWVzIGluIGEg
cmVzdWx0IGFzIHNwYWNlCisgIC8vIGRlbGltaXRlZCBYTUwgYXR0cmlidXRlcyBiYXNlZCBvbiB0
aGUgcHJvcGVydHkga2V5PSJ2YWx1ZSIgcGFpcnMuCisgIC8vIFdoZW4gdGhlIHN0ZDo6c3RyaW5n
IGlzIG5vdCBlbXB0eSwgaXQgaW5jbHVkZXMgYSBzcGFjZSBhdCB0aGUgYmVnaW5uaW5nLAorICAv
LyB0byBkZWxpbWl0IHRoaXMgYXR0cmlidXRlIGZyb20gcHJpb3IgYXR0cmlidXRlcy4KKyAgc3Rh
dGljIHN0ZDo6c3RyaW5nIFRlc3RQcm9wZXJ0aWVzQXNYbWxBdHRyaWJ1dGVzKGNvbnN0IFRlc3RS
ZXN1bHQmIHJlc3VsdCk7CisKKyAgLy8gVGhlIG91dHB1dCBmaWxlLgorICBjb25zdCBzdGQ6OnN0
cmluZyBvdXRwdXRfZmlsZV87CisKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhY
bWxVbml0VGVzdFJlc3VsdFByaW50ZXIpOworfTsKKworLy8gQ3JlYXRlcyBhIG5ldyBYbWxVbml0
VGVzdFJlc3VsdFByaW50ZXIuCitYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6OlhtbFVuaXRUZXN0
UmVzdWx0UHJpbnRlcihjb25zdCBjaGFyKiBvdXRwdXRfZmlsZSkKKyAgICA6IG91dHB1dF9maWxl
XyhvdXRwdXRfZmlsZSkgeworICBpZiAob3V0cHV0X2ZpbGVfLmNfc3RyKCkgPT0gTlVMTCB8fCBv
dXRwdXRfZmlsZV8uZW1wdHkoKSkgeworICAgIGZwcmludGYoc3RkZXJyLCAiWE1MIG91dHB1dCBm
aWxlIG1heSBub3QgYmUgbnVsbFxuIik7CisgICAgZmZsdXNoKHN0ZGVycik7CisgICAgZXhpdChF
WElUX0ZBSUxVUkUpOworICB9Cit9CisKKy8vIENhbGxlZCBhZnRlciB0aGUgdW5pdCB0ZXN0IGVu
ZHMuCit2b2lkIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T25UZXN0SXRlcmF0aW9uRW5kKGNv
bnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCAvKml0ZXJhdGlvbiovKSB7CisgIEZJTEUqIHhtbG91dCA9
IE5VTEw7CisgIEZpbGVQYXRoIG91dHB1dF9maWxlKG91dHB1dF9maWxlXyk7CisgIEZpbGVQYXRo
IG91dHB1dF9kaXIob3V0cHV0X2ZpbGUuUmVtb3ZlRmlsZU5hbWUoKSk7CisKKyAgaWYgKG91dHB1
dF9kaXIuQ3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVseSgpKSB7CisgICAgeG1sb3V0ID0gcG9z
aXg6OkZPcGVuKG91dHB1dF9maWxlXy5jX3N0cigpLCAidyIpOworICB9CisgIGlmICh4bWxvdXQg
PT0gTlVMTCkgeworICAgIC8vIFRPRE8od2FuKTogcmVwb3J0IHRoZSByZWFzb24gb2YgdGhlIGZh
aWx1cmUuCisgICAgLy8KKyAgICAvLyBXZSBkb24ndCBkbyBpdCBmb3Igbm93IGFzOgorICAgIC8v
CisgICAgLy8gICAxLiBUaGVyZSBpcyBubyB1cmdlbnQgbmVlZCBmb3IgaXQuCisgICAgLy8gICAy
LiBJdCdzIGEgYml0IGludm9sdmVkIHRvIG1ha2UgdGhlIGVycm5vIHZhcmlhYmxlIHRocmVhZC1z
YWZlIG9uCisgICAgLy8gICAgICBhbGwgdGhyZWUgb3BlcmF0aW5nIHN5c3RlbXMgKExpbnV4LCBX
aW5kb3dzLCBhbmQgTWFjIE9TKS4KKyAgICAvLyAgIDMuIFRvIGludGVycHJldCB0aGUgbWVhbmlu
ZyBvZiBlcnJubyBpbiBhIHRocmVhZC1zYWZlIHdheSwKKyAgICAvLyAgICAgIHdlIG5lZWQgdGhl
IHN0cmVycm9yX3IoKSBmdW5jdGlvbiwgd2hpY2ggaXMgbm90IGF2YWlsYWJsZSBvbgorICAgIC8v
ICAgICAgV2luZG93cy4KKyAgICBmcHJpbnRmKHN0ZGVyciwKKyAgICAgICAgICAgICJVbmFibGUg
dG8gb3BlbiBmaWxlIFwiJXNcIlxuIiwKKyAgICAgICAgICAgIG91dHB1dF9maWxlXy5jX3N0cigp
KTsKKyAgICBmZmx1c2goc3RkZXJyKTsKKyAgICBleGl0KEVYSVRfRkFJTFVSRSk7CisgIH0KKyAg
c3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFtOworICBQcmludFhtbFVuaXRUZXN0KCZzdHJlYW0sIHVu
aXRfdGVzdCk7CisgIGZwcmludGYoeG1sb3V0LCAiJXMiLCBTdHJpbmdTdHJlYW1Ub1N0cmluZygm
c3RyZWFtKS5jX3N0cigpKTsKKyAgZmNsb3NlKHhtbG91dCk7Cit9CisKKy8vIFJldHVybnMgYW4g
WE1MLWVzY2FwZWQgY29weSBvZiB0aGUgaW5wdXQgc3RyaW5nIHN0ci4gIElmIGlzX2F0dHJpYnV0
ZQorLy8gaXMgdHJ1ZSwgdGhlIHRleHQgaXMgbWVhbnQgdG8gYXBwZWFyIGFzIGFuIGF0dHJpYnV0
ZSB2YWx1ZSwgYW5kCisvLyBub3JtYWxpemFibGUgd2hpdGVzcGFjZSBpcyBwcmVzZXJ2ZWQgYnkg
cmVwbGFjaW5nIGl0IHdpdGggY2hhcmFjdGVyCisvLyByZWZlcmVuY2VzLgorLy8KKy8vIEludmFs
aWQgWE1MIGNoYXJhY3RlcnMgaW4gc3RyLCBpZiBhbnksIGFyZSBzdHJpcHBlZCBmcm9tIHRoZSBv
dXRwdXQuCisvLyBJdCBpcyBleHBlY3RlZCB0aGF0IG1vc3QsIGlmIG5vdCBhbGwsIG9mIHRoZSB0
ZXh0IHByb2Nlc3NlZCBieSB0aGlzCisvLyBtb2R1bGUgd2lsbCBjb25zaXN0IG9mIG9yZGluYXJ5
IEVuZ2xpc2ggdGV4dC4KKy8vIElmIHRoaXMgbW9kdWxlIGlzIGV2ZXIgbW9kaWZpZWQgdG8gcHJv
ZHVjZSB2ZXJzaW9uIDEuMSBYTUwgb3V0cHV0LAorLy8gbW9zdCBpbnZhbGlkIGNoYXJhY3RlcnMg
Y2FuIGJlIHJldGFpbmVkIHVzaW5nIGNoYXJhY3RlciByZWZlcmVuY2VzLgorLy8gVE9ETyh3YW4p
OiBJdCBtaWdodCBiZSBuaWNlIHRvIGhhdmUgYSBtaW5pbWFsbHkgaW52YXNpdmUsIGh1bWFuLXJl
YWRhYmxlCisvLyBlc2NhcGluZyBzY2hlbWUgZm9yIGludmFsaWQgY2hhcmFjdGVycywgcmF0aGVy
IHRoYW4gZHJvcHBpbmcgdGhlbS4KK3N0ZDo6c3RyaW5nIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRl
cjo6RXNjYXBlWG1sKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIsIGJvb2wgaXNfYXR0cmli
dXRlKSB7CisgIE1lc3NhZ2UgbTsKKworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0ci5zaXpl
KCk7ICsraSkgeworICAgIGNvbnN0IGNoYXIgY2ggPSBzdHJbaV07CisgICAgc3dpdGNoIChjaCkg
eworICAgICAgY2FzZSAnPCc6CisgICAgICAgIG0gPDwgIiZsdDsiOworICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgJz4nOgorICAgICAgICBtIDw8ICImZ3Q7IjsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICBjYXNlICcmJzoKKyAgICAgICAgbSA8PCAiJmFtcDsiOworICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgJ1wnJzoKKyAgICAgICAgaWYgKGlzX2F0dHJpYnV0ZSkKKyAgICAgICAgICBtIDw8
ICImYXBvczsiOworICAgICAgICBlbHNlCisgICAgICAgICAgbSA8PCAnXCcnOworICAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgJyInOgorICAgICAgICBpZiAoaXNfYXR0cmlidXRlKQorICAgICAg
ICAgIG0gPDwgIiZxdW90OyI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICBtIDw8ICciJzsKKyAg
ICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICBpZiAoSXNWYWxpZFhtbENoYXJh
Y3RlcihjaCkpIHsKKyAgICAgICAgICBpZiAoaXNfYXR0cmlidXRlICYmIElzTm9ybWFsaXphYmxl
V2hpdGVzcGFjZShjaCkpCisgICAgICAgICAgICBtIDw8ICImI3giIDw8IFN0cmluZzo6Rm9ybWF0
Qnl0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjaCkpCisgICAgICAgICAgICAgIDw8ICI7
IjsKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBtIDw8IGNoOworICAgICAgICB9CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgfQorCisgIHJldHVybiBtLkdldFN0cmluZygpOworfQorCisv
LyBSZXR1cm5zIHRoZSBnaXZlbiBzdHJpbmcgd2l0aCBhbGwgY2hhcmFjdGVycyBpbnZhbGlkIGlu
IFhNTCByZW1vdmVkLgorLy8gQ3VycmVudGx5IGludmFsaWQgY2hhcmFjdGVycyBhcmUgZHJvcHBl
ZCBmcm9tIHRoZSBzdHJpbmcuIEFuCisvLyBhbHRlcm5hdGl2ZSBpcyB0byByZXBsYWNlIHRoZW0g
d2l0aCBjZXJ0YWluIGNoYXJhY3RlcnMgc3VjaCBhcyAuIG9yID8uCitzdGQ6OnN0cmluZyBYbWxV
bml0VGVzdFJlc3VsdFByaW50ZXI6OlJlbW92ZUludmFsaWRYbWxDaGFyYWN0ZXJzKAorICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiBzdHIpIHsKKyAgc3RkOjpzdHJpbmcgb3V0cHV0OworICBvdXRwdXQu
cmVzZXJ2ZShzdHIuc2l6ZSgpKTsKKyAgZm9yIChzdGQ6OnN0cmluZzo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBzdHIuYmVnaW4oKTsgaXQgIT0gc3RyLmVuZCgpOyArK2l0KQorICAgIGlmIChJc1ZhbGlk
WG1sQ2hhcmFjdGVyKCppdCkpCisgICAgICBvdXRwdXQucHVzaF9iYWNrKCppdCk7CisKKyAgcmV0
dXJuIG91dHB1dDsKK30KKworLy8gVGhlIGZvbGxvd2luZyByb3V0aW5lcyBnZW5lcmF0ZSBhbiBY
TUwgcmVwcmVzZW50YXRpb24gb2YgYSBVbml0VGVzdAorLy8gb2JqZWN0LgorLy8KKy8vIFRoaXMg
aXMgaG93IEdvb2dsZSBUZXN0IGNvbmNlcHRzIG1hcCB0byB0aGUgRFREOgorLy8KKy8vIDx0ZXN0
c3VpdGVzIG5hbWU9IkFsbFRlc3RzIj4gICAgICAgIDwtLSBjb3JyZXNwb25kcyB0byBhIFVuaXRU
ZXN0IG9iamVjdAorLy8gICA8dGVzdHN1aXRlIG5hbWU9InRlc3RjYXNlLW5hbWUiPiAgPC0tIGNv
cnJlc3BvbmRzIHRvIGEgVGVzdENhc2Ugb2JqZWN0CisvLyAgICAgPHRlc3RjYXNlIG5hbWU9InRl
c3QtbmFtZSI+ICAgICA8LS0gY29ycmVzcG9uZHMgdG8gYSBUZXN0SW5mbyBvYmplY3QKKy8vICAg
ICAgIDxmYWlsdXJlIG1lc3NhZ2U9Ii4uLiI+Li4uPC9mYWlsdXJlPgorLy8gICAgICAgPGZhaWx1
cmUgbWVzc2FnZT0iLi4uIj4uLi48L2ZhaWx1cmU+CisvLyAgICAgICA8ZmFpbHVyZSBtZXNzYWdl
PSIuLi4iPi4uLjwvZmFpbHVyZT4KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDwtLSBpbmRpdmlkdWFsIGFzc2VydGlvbiBmYWlsdXJlcworLy8gICAgIDwvdGVzdGNhc2U+
CisvLyAgIDwvdGVzdHN1aXRlPgorLy8gPC90ZXN0c3VpdGVzPgorCisvLyBGb3JtYXRzIHRoZSBn
aXZlbiB0aW1lIGluIG1pbGxpc2Vjb25kcyBhcyBzZWNvbmRzLgorc3RkOjpzdHJpbmcgRm9ybWF0
VGltZUluTWlsbGlzQXNTZWNvbmRzKFRpbWVJbk1pbGxpcyBtcykgeworICA6OnN0ZDo6c3RyaW5n
c3RyZWFtIHNzOworICBzcyA8PCAoc3RhdGljX2Nhc3Q8ZG91YmxlPihtcykgKiAxZS0zKTsKKyAg
cmV0dXJuIHNzLnN0cigpOworfQorCitzdGF0aWMgYm9vbCBQb3J0YWJsZUxvY2FsdGltZSh0aW1l
X3Qgc2Vjb25kcywgc3RydWN0IHRtKiBvdXQpIHsKKyNpZiBkZWZpbmVkKF9NU0NfVkVSKQorICBy
ZXR1cm4gbG9jYWx0aW1lX3Mob3V0LCAmc2Vjb25kcykgPT0gMDsKKyNlbGlmIGRlZmluZWQoX19N
SU5HVzMyX18pIHx8IGRlZmluZWQoX19NSU5HVzY0X18pCisgIC8vIE1JTkdXIDx0aW1lLmg+IHBy
b3ZpZGVzIG5laXRoZXIgbG9jYWx0aW1lX3Igbm9yIGxvY2FsdGltZV9zLCBidXQgdXNlcworICAv
LyBXaW5kb3dzJyBsb2NhbHRpbWUoKSwgd2hpY2ggaGFzIGEgdGhyZWFkLWxvY2FsIHRtIGJ1ZmZl
ci4KKyAgc3RydWN0IHRtKiB0bV9wdHIgPSBsb2NhbHRpbWUoJnNlY29uZHMpOyAgLy8gTk9MSU5U
CisgIGlmICh0bV9wdHIgPT0gTlVMTCkKKyAgICByZXR1cm4gZmFsc2U7CisgICpvdXQgPSAqdG1f
cHRyOworICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgIHJldHVybiBsb2NhbHRpbWVfcigmc2Vjb25k
cywgb3V0KSAhPSBOVUxMOworI2VuZGlmCit9CisKKy8vIENvbnZlcnRzIHRoZSBnaXZlbiBlcG9j
aCB0aW1lIGluIG1pbGxpc2Vjb25kcyB0byBhIGRhdGUgc3RyaW5nIGluIHRoZSBJU08KKy8vIDg2
MDEgZm9ybWF0LCB3aXRob3V0IHRoZSB0aW1lem9uZSBpbmZvcm1hdGlvbi4KK3N0ZDo6c3RyaW5n
IEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxKFRpbWVJbk1pbGxpcyBtcykgeworICBz
dHJ1Y3QgdG0gdGltZV9zdHJ1Y3Q7CisgIGlmICghUG9ydGFibGVMb2NhbHRpbWUoc3RhdGljX2Nh
c3Q8dGltZV90PihtcyAvIDEwMDApLCAmdGltZV9zdHJ1Y3QpKQorICAgIHJldHVybiAiIjsKKyAg
Ly8gWVlZWS1NTS1ERFRoaDptbTpzcworICByZXR1cm4gU3RyZWFtYWJsZVRvU3RyaW5nKHRpbWVf
c3RydWN0LnRtX3llYXIgKyAxOTAwKSArICItIiArCisgICAgICBTdHJpbmc6OkZvcm1hdEludFdp
ZHRoMih0aW1lX3N0cnVjdC50bV9tb24gKyAxKSArICItIiArCisgICAgICBTdHJpbmc6OkZvcm1h
dEludFdpZHRoMih0aW1lX3N0cnVjdC50bV9tZGF5KSArICJUIiArCisgICAgICBTdHJpbmc6OkZv
cm1hdEludFdpZHRoMih0aW1lX3N0cnVjdC50bV9ob3VyKSArICI6IiArCisgICAgICBTdHJpbmc6
OkZvcm1hdEludFdpZHRoMih0aW1lX3N0cnVjdC50bV9taW4pICsgIjoiICsKKyAgICAgIFN0cmlu
Zzo6Rm9ybWF0SW50V2lkdGgyKHRpbWVfc3RydWN0LnRtX3NlYyk7Cit9CisKKy8vIFN0cmVhbXMg
YW4gWE1MIENEQVRBIHNlY3Rpb24sIGVzY2FwaW5nIGludmFsaWQgQ0RBVEEgc2VxdWVuY2VzIGFz
IG5lZWRlZC4KK3ZvaWQgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpPdXRwdXRYbWxDRGF0YVNl
Y3Rpb24oOjpzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZGF0YSkgeworICBjb25zdCBj
aGFyKiBzZWdtZW50ID0gZGF0YTsKKyAgKnN0cmVhbSA8PCAiPCFbQ0RBVEFbIjsKKyAgZm9yICg7
OykgeworICAgIGNvbnN0IGNoYXIqIGNvbnN0IG5leHRfc2VnbWVudCA9IHN0cnN0cihzZWdtZW50
LCAiXV0+Iik7CisgICAgaWYgKG5leHRfc2VnbWVudCAhPSBOVUxMKSB7CisgICAgICBzdHJlYW0t
PndyaXRlKAorICAgICAgICAgIHNlZ21lbnQsIHN0YXRpY19jYXN0PHN0ZDo6c3RyZWFtc2l6ZT4o
bmV4dF9zZWdtZW50IC0gc2VnbWVudCkpOworICAgICAgKnN0cmVhbSA8PCAiXV0+XV0mZ3Q7PCFb
Q0RBVEFbIjsKKyAgICAgIHNlZ21lbnQgPSBuZXh0X3NlZ21lbnQgKyBzdHJsZW4oIl1dPiIpOwor
ICAgIH0gZWxzZSB7CisgICAgICAqc3RyZWFtIDw8IHNlZ21lbnQ7CisgICAgICBicmVhazsKKyAg
ICB9CisgIH0KKyAgKnN0cmVhbSA8PCAiXV0+IjsKK30KKwordm9pZCBYbWxVbml0VGVzdFJlc3Vs
dFByaW50ZXI6Ok91dHB1dFhtbEF0dHJpYnV0ZSgKKyAgICBzdGQ6Om9zdHJlYW0qIHN0cmVhbSwK
KyAgICBjb25zdCBzdGQ6OnN0cmluZyYgZWxlbWVudF9uYW1lLAorICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBuYW1lLAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSkgeworICBjb25zdCBzdGQ6
OnZlY3RvcjxzdGQ6OnN0cmluZz4mIGFsbG93ZWRfbmFtZXMgPQorICAgICAgR2V0UmVzZXJ2ZWRB
dHRyaWJ1dGVzRm9yRWxlbWVudChlbGVtZW50X25hbWUpOworCisgIEdURVNUX0NIRUNLXyhzdGQ6
OmZpbmQoYWxsb3dlZF9uYW1lcy5iZWdpbigpLCBhbGxvd2VkX25hbWVzLmVuZCgpLCBuYW1lKSAh
PQorICAgICAgICAgICAgICAgICAgIGFsbG93ZWRfbmFtZXMuZW5kKCkpCisgICAgICA8PCAiQXR0
cmlidXRlICIgPDwgbmFtZSA8PCAiIGlzIG5vdCBhbGxvd2VkIGZvciBlbGVtZW50IDwiIDw8IGVs
ZW1lbnRfbmFtZQorICAgICAgPDwgIj4uIjsKKworICAqc3RyZWFtIDw8ICIgIiA8PCBuYW1lIDw8
ICI9XCIiIDw8IEVzY2FwZVhtbEF0dHJpYnV0ZSh2YWx1ZSkgPDwgIlwiIjsKK30KKworLy8gUHJp
bnRzIGFuIFhNTCByZXByZXNlbnRhdGlvbiBvZiBhIFRlc3RJbmZvIG9iamVjdC4KKy8vIFRPRE8o
d2FuKTogVGhlcmUgaXMgYWxzbyB2YWx1ZSBpbiBwcmludGluZyBwcm9wZXJ0aWVzIHdpdGggdGhl
IHBsYWluIHByaW50ZXIuCit2b2lkIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T3V0cHV0WG1s
VGVzdEluZm8oOjpzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXN0
SW5mbyYgdGVzdF9pbmZvKSB7CisgIGNvbnN0IFRlc3RSZXN1bHQmIHJlc3VsdCA9ICp0ZXN0X2lu
Zm8ucmVzdWx0KCk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGtUZXN0Y2FzZSA9ICJ0ZXN0Y2FzZSI7
CisKKyAgKnN0cmVhbSA8PCAiICAgIDx0ZXN0Y2FzZSI7CisgIE91dHB1dFhtbEF0dHJpYnV0ZShz
dHJlYW0sIGtUZXN0Y2FzZSwgIm5hbWUiLCB0ZXN0X2luZm8ubmFtZSgpKTsKKworICBpZiAodGVz
dF9pbmZvLnZhbHVlX3BhcmFtKCkgIT0gTlVMTCkgeworICAgIE91dHB1dFhtbEF0dHJpYnV0ZShz
dHJlYW0sIGtUZXN0Y2FzZSwgInZhbHVlX3BhcmFtIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
dGVzdF9pbmZvLnZhbHVlX3BhcmFtKCkpOworICB9CisgIGlmICh0ZXN0X2luZm8udHlwZV9wYXJh
bSgpICE9IE5VTEwpIHsKKyAgICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdGNhc2Us
ICJ0eXBlX3BhcmFtIiwgdGVzdF9pbmZvLnR5cGVfcGFyYW0oKSk7CisgIH0KKworICBPdXRwdXRY
bWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdGNhc2UsICJzdGF0dXMiLAorICAgICAgICAgICAgICAg
ICAgICAgdGVzdF9pbmZvLnNob3VsZF9ydW4oKSA/ICJydW4iIDogIm5vdHJ1biIpOworICBPdXRw
dXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdGNhc2UsICJ0aW1lIiwKKyAgICAgICAgICAgICAg
ICAgICAgIEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kcyhyZXN1bHQuZWxhcHNlZF90aW1lKCkp
KTsKKyAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RjYXNlLCAiY2xhc3NuYW1lIiwg
dGVzdF9jYXNlX25hbWUpOworICAqc3RyZWFtIDw8IFRlc3RQcm9wZXJ0aWVzQXNYbWxBdHRyaWJ1
dGVzKHJlc3VsdCk7CisKKyAgaW50IGZhaWx1cmVzID0gMDsKKyAgZm9yIChpbnQgaSA9IDA7IGkg
PCByZXN1bHQudG90YWxfcGFydF9jb3VudCgpOyArK2kpIHsKKyAgICBjb25zdCBUZXN0UGFydFJl
c3VsdCYgcGFydCA9IHJlc3VsdC5HZXRUZXN0UGFydFJlc3VsdChpKTsKKyAgICBpZiAocGFydC5m
YWlsZWQoKSkgeworICAgICAgaWYgKCsrZmFpbHVyZXMgPT0gMSkgeworICAgICAgICAqc3RyZWFt
IDw8ICI+XG4iOworICAgICAgfQorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgbG9jYXRpb24gPQor
ICAgICAgICAgIGludGVybmFsOjpGb3JtYXRDb21waWxlckluZGVwZW5kZW50RmlsZUxvY2F0aW9u
KHBhcnQuZmlsZV9uYW1lKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGFydC5saW5lX251bWJlcigpKTsKKyAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nIHN1bW1hcnkgPSBsb2NhdGlvbiArICJcbiIgKyBwYXJ0LnN1bW1hcnkoKTsKKyAg
ICAgICpzdHJlYW0gPDwgIiAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9XCIiCisgICAgICAgICAgICAg
IDw8IEVzY2FwZVhtbEF0dHJpYnV0ZShzdW1tYXJ5LmNfc3RyKCkpCisgICAgICAgICAgICAgIDw8
ICJcIiB0eXBlPVwiXCI+IjsKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGRldGFpbCA9IGxvY2F0
aW9uICsgIlxuIiArIHBhcnQubWVzc2FnZSgpOworICAgICAgT3V0cHV0WG1sQ0RhdGFTZWN0aW9u
KHN0cmVhbSwgUmVtb3ZlSW52YWxpZFhtbENoYXJhY3RlcnMoZGV0YWlsKS5jX3N0cigpKTsKKyAg
ICAgICpzdHJlYW0gPDwgIjwvZmFpbHVyZT5cbiI7CisgICAgfQorICB9CisKKyAgaWYgKGZhaWx1
cmVzID09IDApCisgICAgKnN0cmVhbSA8PCAiIC8+XG4iOworICBlbHNlCisgICAgKnN0cmVhbSA8
PCAiICAgIDwvdGVzdGNhc2U+XG4iOworfQorCisvLyBQcmludHMgYW4gWE1MIHJlcHJlc2VudGF0
aW9uIG9mIGEgVGVzdENhc2Ugb2JqZWN0Cit2b2lkIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6
UHJpbnRYbWxUZXN0Q2FzZShzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RDYXNlJiB0ZXN0X2Nhc2Up
IHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcga1Rlc3RzdWl0ZSA9ICJ0ZXN0c3VpdGUiOworICAqc3Ry
ZWFtIDw8ICIgIDwiIDw8IGtUZXN0c3VpdGU7CisgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0s
IGtUZXN0c3VpdGUsICJuYW1lIiwgdGVzdF9jYXNlLm5hbWUoKSk7CisgIE91dHB1dFhtbEF0dHJp
YnV0ZShzdHJlYW0sIGtUZXN0c3VpdGUsICJ0ZXN0cyIsCisgICAgICAgICAgICAgICAgICAgICBT
dHJlYW1hYmxlVG9TdHJpbmcodGVzdF9jYXNlLnJlcG9ydGFibGVfdGVzdF9jb3VudCgpKSk7Cisg
IE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0c3VpdGUsICJmYWlsdXJlcyIsCisgICAg
ICAgICAgICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcodGVzdF9jYXNlLmZhaWxlZF90ZXN0
X2NvdW50KCkpKTsKKyAgT3V0cHV0WG1sQXR0cmlidXRlKAorICAgICAgc3RyZWFtLCBrVGVzdHN1
aXRlLCAiZGlzYWJsZWQiLAorICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHRlc3RfY2FzZS5yZXBv
cnRhYmxlX2Rpc2FibGVkX3Rlc3RfY291bnQoKSkpOworICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3Ry
ZWFtLCBrVGVzdHN1aXRlLCAiZXJyb3JzIiwgIjAiKTsKKyAgT3V0cHV0WG1sQXR0cmlidXRlKHN0
cmVhbSwga1Rlc3RzdWl0ZSwgInRpbWUiLAorICAgICAgICAgICAgICAgICAgICAgRm9ybWF0VGlt
ZUluTWlsbGlzQXNTZWNvbmRzKHRlc3RfY2FzZS5lbGFwc2VkX3RpbWUoKSkpOworICAqc3RyZWFt
IDw8IFRlc3RQcm9wZXJ0aWVzQXNYbWxBdHRyaWJ1dGVzKHRlc3RfY2FzZS5hZF9ob2NfdGVzdF9y
ZXN1bHQoKSkKKyAgICAgICAgICA8PCAiPlxuIjsKKworICBmb3IgKGludCBpID0gMDsgaSA8IHRl
c3RfY2FzZS50b3RhbF90ZXN0X2NvdW50KCk7ICsraSkgeworICAgIGlmICh0ZXN0X2Nhc2UuR2V0
VGVzdEluZm8oaSktPmlzX3JlcG9ydGFibGUoKSkKKyAgICAgIE91dHB1dFhtbFRlc3RJbmZvKHN0
cmVhbSwgdGVzdF9jYXNlLm5hbWUoKSwgKnRlc3RfY2FzZS5HZXRUZXN0SW5mbyhpKSk7CisgIH0K
KyAgKnN0cmVhbSA8PCAiICA8LyIgPDwga1Rlc3RzdWl0ZSA8PCAiPlxuIjsKK30KKworLy8gUHJp
bnRzIGFuIFhNTCBzdW1tYXJ5IG9mIHVuaXRfdGVzdCB0byBvdXRwdXQgc3RyZWFtIG91dC4KK3Zv
aWQgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpQcmludFhtbFVuaXRUZXN0KHN0ZDo6b3N0cmVh
bSogc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCkgeworICBjb25zdCBzdGQ6OnN0cmluZyBrVGVz
dHN1aXRlcyA9ICJ0ZXN0c3VpdGVzIjsKKworICAqc3RyZWFtIDw8ICI8P3htbCB2ZXJzaW9uPVwi
MS4wXCIgZW5jb2Rpbmc9XCJVVEYtOFwiPz5cbiI7CisgICpzdHJlYW0gPDwgIjwiIDw8IGtUZXN0
c3VpdGVzOworCisgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0c3VpdGVzLCAidGVz
dHMiLAorICAgICAgICAgICAgICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHVuaXRfdGVzdC5y
ZXBvcnRhYmxlX3Rlc3RfY291bnQoKSkpOworICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBr
VGVzdHN1aXRlcywgImZhaWx1cmVzIiwKKyAgICAgICAgICAgICAgICAgICAgIFN0cmVhbWFibGVU
b1N0cmluZyh1bml0X3Rlc3QuZmFpbGVkX3Rlc3RfY291bnQoKSkpOworICBPdXRwdXRYbWxBdHRy
aWJ1dGUoCisgICAgICBzdHJlYW0sIGtUZXN0c3VpdGVzLCAiZGlzYWJsZWQiLAorICAgICAgU3Ry
ZWFtYWJsZVRvU3RyaW5nKHVuaXRfdGVzdC5yZXBvcnRhYmxlX2Rpc2FibGVkX3Rlc3RfY291bnQo
KSkpOworICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdHN1aXRlcywgImVycm9ycyIs
ICIwIik7CisgIE91dHB1dFhtbEF0dHJpYnV0ZSgKKyAgICAgIHN0cmVhbSwga1Rlc3RzdWl0ZXMs
ICJ0aW1lc3RhbXAiLAorICAgICAgRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDEodW5p
dF90ZXN0LnN0YXJ0X3RpbWVzdGFtcCgpKSk7CisgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0s
IGtUZXN0c3VpdGVzLCAidGltZSIsCisgICAgICAgICAgICAgICAgICAgICBGb3JtYXRUaW1lSW5N
aWxsaXNBc1NlY29uZHModW5pdF90ZXN0LmVsYXBzZWRfdGltZSgpKSk7CisKKyAgaWYgKEdURVNU
X0ZMQUcoc2h1ZmZsZSkpIHsKKyAgICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdHN1
aXRlcywgInJhbmRvbV9zZWVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgU3RyZWFtYWJsZVRv
U3RyaW5nKHVuaXRfdGVzdC5yYW5kb21fc2VlZCgpKSk7CisgIH0KKworICAqc3RyZWFtIDw8IFRl
c3RQcm9wZXJ0aWVzQXNYbWxBdHRyaWJ1dGVzKHVuaXRfdGVzdC5hZF9ob2NfdGVzdF9yZXN1bHQo
KSk7CisKKyAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJuYW1lIiwg
IkFsbFRlc3RzIik7CisgICpzdHJlYW0gPDwgIj5cbiI7CisKKyAgZm9yIChpbnQgaSA9IDA7IGkg
PCB1bml0X3Rlc3QudG90YWxfdGVzdF9jYXNlX2NvdW50KCk7ICsraSkgeworICAgIGlmICh1bml0
X3Rlc3QuR2V0VGVzdENhc2UoaSktPnJlcG9ydGFibGVfdGVzdF9jb3VudCgpID4gMCkKKyAgICAg
IFByaW50WG1sVGVzdENhc2Uoc3RyZWFtLCAqdW5pdF90ZXN0LkdldFRlc3RDYXNlKGkpKTsKKyAg
fQorICAqc3RyZWFtIDw8ICI8LyIgPDwga1Rlc3RzdWl0ZXMgPDwgIj5cbiI7Cit9CisKKy8vIFBy
b2R1Y2VzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdGVzdCBwcm9wZXJ0aWVzIGluIGEgcmVz
dWx0IGFzIHNwYWNlCisvLyBkZWxpbWl0ZWQgWE1MIGF0dHJpYnV0ZXMgYmFzZWQgb24gdGhlIHBy
b3BlcnR5IGtleT0idmFsdWUiIHBhaXJzLgorc3RkOjpzdHJpbmcgWG1sVW5pdFRlc3RSZXN1bHRQ
cmludGVyOjpUZXN0UHJvcGVydGllc0FzWG1sQXR0cmlidXRlcygKKyAgICBjb25zdCBUZXN0UmVz
dWx0JiByZXN1bHQpIHsKKyAgTWVzc2FnZSBhdHRyaWJ1dGVzOworICBmb3IgKGludCBpID0gMDsg
aSA8IHJlc3VsdC50ZXN0X3Byb3BlcnR5X2NvdW50KCk7ICsraSkgeworICAgIGNvbnN0IFRlc3RQ
cm9wZXJ0eSYgcHJvcGVydHkgPSByZXN1bHQuR2V0VGVzdFByb3BlcnR5KGkpOworICAgIGF0dHJp
YnV0ZXMgPDwgIiAiIDw8IHByb3BlcnR5LmtleSgpIDw8ICI9IgorICAgICAgICA8PCAiXCIiIDw8
IEVzY2FwZVhtbEF0dHJpYnV0ZShwcm9wZXJ0eS52YWx1ZSgpKSA8PCAiXCIiOworICB9CisgIHJl
dHVybiBhdHRyaWJ1dGVzLkdldFN0cmluZygpOworfQorCisvLyBFbmQgWG1sVW5pdFRlc3RSZXN1
bHRQcmludGVyCisKKyNpZiBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfCisKKy8vIENoZWNrcyBp
ZiBzdHIgY29udGFpbnMgJz0nLCAnJicsICclJyBvciAnXG4nIGNoYXJhY3RlcnMuIElmIHllcywK
Ky8vIHJlcGxhY2VzIHRoZW0gYnkgIiV4eCIgd2hlcmUgeHggaXMgdGhlaXIgaGV4YWRlY2ltYWwg
dmFsdWUuIEZvcgorLy8gZXhhbXBsZSwgcmVwbGFjZXMgIj0iIHdpdGggIiUzRCIuICBUaGlzIGFs
Z29yaXRobSBpcyBPKHN0cmxlbihzdHIpKQorLy8gaW4gYm90aCB0aW1lIGFuZCBzcGFjZSAtLSBp
bXBvcnRhbnQgYXMgdGhlIGlucHV0IHN0ciBtYXkgY29udGFpbiBhbgorLy8gYXJiaXRyYXJpbHkg
bG9uZyB0ZXN0IGZhaWx1cmUgbWVzc2FnZSBhbmQgc3RhY2sgdHJhY2UuCitzdGQ6OnN0cmluZyBT
dHJlYW1pbmdMaXN0ZW5lcjo6VXJsRW5jb2RlKGNvbnN0IGNoYXIqIHN0cikgeworICBzdGQ6OnN0
cmluZyByZXN1bHQ7CisgIHJlc3VsdC5yZXNlcnZlKHN0cmxlbihzdHIpICsgMSk7CisgIGZvciAo
Y2hhciBjaCA9ICpzdHI7IGNoICE9ICdcMCc7IGNoID0gKisrc3RyKSB7CisgICAgc3dpdGNoIChj
aCkgeworICAgICAgY2FzZSAnJSc6CisgICAgICBjYXNlICc9JzoKKyAgICAgIGNhc2UgJyYnOgor
ICAgICAgY2FzZSAnXG4nOgorICAgICAgICByZXN1bHQuYXBwZW5kKCIlIiArIFN0cmluZzo6Rm9y
bWF0Qnl0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjaCkpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgICBkZWZhdWx0OgorICAgICAgICByZXN1bHQucHVzaF9iYWNrKGNoKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgU3RyZWFtaW5n
TGlzdGVuZXI6OlNvY2tldFdyaXRlcjo6TWFrZUNvbm5lY3Rpb24oKSB7CisgIEdURVNUX0NIRUNL
Xyhzb2NrZmRfID09IC0xKQorICAgICAgPDwgIk1ha2VDb25uZWN0aW9uKCkgY2FuJ3QgYmUgY2Fs
bGVkIHdoZW4gdGhlcmUgaXMgYWxyZWFkeSBhIGNvbm5lY3Rpb24uIjsKKworICBhZGRyaW5mbyBo
aW50czsKKyAgbWVtc2V0KCZoaW50cywgMCwgc2l6ZW9mKGhpbnRzKSk7CisgIGhpbnRzLmFpX2Zh
bWlseSA9IEFGX1VOU1BFQzsgICAgLy8gVG8gYWxsb3cgYm90aCBJUHY0IGFuZCBJUHY2IGFkZHJl
c3Nlcy4KKyAgaGludHMuYWlfc29ja3R5cGUgPSBTT0NLX1NUUkVBTTsKKyAgYWRkcmluZm8qIHNl
cnZpbmZvID0gTlVMTDsKKworICAvLyBVc2UgdGhlIGdldGFkZHJpbmZvKCkgdG8gZ2V0IGEgbGlu
a2VkIGxpc3Qgb2YgSVAgYWRkcmVzc2VzIGZvcgorICAvLyB0aGUgZ2l2ZW4gaG9zdCBuYW1lLgor
ICBjb25zdCBpbnQgZXJyb3JfbnVtID0gZ2V0YWRkcmluZm8oCisgICAgICBob3N0X25hbWVfLmNf
c3RyKCksIHBvcnRfbnVtXy5jX3N0cigpLCAmaGludHMsICZzZXJ2aW5mbyk7CisgIGlmIChlcnJv
cl9udW0gIT0gMCkgeworICAgIEdURVNUX0xPR18oV0FSTklORykgPDwgInN0cmVhbV9yZXN1bHRf
dG86IGdldGFkZHJpbmZvKCkgZmFpbGVkOiAiCisgICAgICAgICAgICAgICAgICAgICAgICA8PCBn
YWlfc3RyZXJyb3IoZXJyb3JfbnVtKTsKKyAgfQorCisgIC8vIExvb3AgdGhyb3VnaCBhbGwgdGhl
IHJlc3VsdHMgYW5kIGNvbm5lY3QgdG8gdGhlIGZpcnN0IHdlIGNhbi4KKyAgZm9yIChhZGRyaW5m
byogY3VyX2FkZHIgPSBzZXJ2aW5mbzsgc29ja2ZkXyA9PSAtMSAmJiBjdXJfYWRkciAhPSBOVUxM
OworICAgICAgIGN1cl9hZGRyID0gY3VyX2FkZHItPmFpX25leHQpIHsKKyAgICBzb2NrZmRfID0g
c29ja2V0KAorICAgICAgICBjdXJfYWRkci0+YWlfZmFtaWx5LCBjdXJfYWRkci0+YWlfc29ja3R5
cGUsIGN1cl9hZGRyLT5haV9wcm90b2NvbCk7CisgICAgaWYgKHNvY2tmZF8gIT0gLTEpIHsKKyAg
ICAgIC8vIENvbm5lY3QgdGhlIGNsaWVudCBzb2NrZXQgdG8gdGhlIHNlcnZlciBzb2NrZXQuCisg
ICAgICBpZiAoY29ubmVjdChzb2NrZmRfLCBjdXJfYWRkci0+YWlfYWRkciwgY3VyX2FkZHItPmFp
X2FkZHJsZW4pID09IC0xKSB7CisgICAgICAgIGNsb3NlKHNvY2tmZF8pOworICAgICAgICBzb2Nr
ZmRfID0gLTE7CisgICAgICB9CisgICAgfQorICB9CisKKyAgZnJlZWFkZHJpbmZvKHNlcnZpbmZv
KTsgIC8vIGFsbCBkb25lIHdpdGggdGhpcyBzdHJ1Y3R1cmUKKworICBpZiAoc29ja2ZkXyA9PSAt
MSkgeworICAgIEdURVNUX0xPR18oV0FSTklORykgPDwgInN0cmVhbV9yZXN1bHRfdG86IGZhaWxl
ZCB0byBjb25uZWN0IHRvICIKKyAgICAgICAgICAgICAgICAgICAgICAgIDw8IGhvc3RfbmFtZV8g
PDwgIjoiIDw8IHBvcnRfbnVtXzsKKyAgfQorfQorCisvLyBFbmQgb2YgY2xhc3MgU3RyZWFtaW5n
IExpc3RlbmVyCisjZW5kaWYgIC8vIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU19fCisKKy8vIENs
YXNzIFNjb3BlZFRyYWNlCisKKy8vIFB1c2hlcyB0aGUgZ2l2ZW4gc291cmNlIGZpbGUgbG9jYXRp
b24gYW5kIG1lc3NhZ2Ugb250byBhIHBlci10aHJlYWQKKy8vIHRyYWNlIHN0YWNrIG1haW50YWlu
ZWQgYnkgR29vZ2xlIFRlc3QuCitTY29wZWRUcmFjZTo6U2NvcGVkVHJhY2UoY29uc3QgY2hhciog
ZmlsZSwgaW50IGxpbmUsIGNvbnN0IE1lc3NhZ2UmIG1lc3NhZ2UpCisgICAgR1RFU1RfTE9DS19F
WENMVURFRF8oJlVuaXRUZXN0OjptdXRleF8pIHsKKyAgVHJhY2VJbmZvIHRyYWNlOworICB0cmFj
ZS5maWxlID0gZmlsZTsKKyAgdHJhY2UubGluZSA9IGxpbmU7CisgIHRyYWNlLm1lc3NhZ2UgPSBt
ZXNzYWdlLkdldFN0cmluZygpOworCisgIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5QdXNoR1Rl
c3RUcmFjZSh0cmFjZSk7Cit9CisKKy8vIFBvcHMgdGhlIGluZm8gcHVzaGVkIGJ5IHRoZSBjJ3Rv
ci4KK1Njb3BlZFRyYWNlOjp+U2NvcGVkVHJhY2UoKQorICAgIEdURVNUX0xPQ0tfRVhDTFVERURf
KCZVbml0VGVzdDo6bXV0ZXhfKSB7CisgIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5Qb3BHVGVz
dFRyYWNlKCk7Cit9CisKKworLy8gY2xhc3MgT3NTdGFja1RyYWNlR2V0dGVyCisKK2NvbnN0IGNo
YXIqIGNvbnN0IE9zU3RhY2tUcmFjZUdldHRlckludGVyZmFjZTo6a0VsaWRlZEZyYW1lc01hcmtl
ciA9CisgICAgIi4uLiAiIEdURVNUX05BTUVfICIgaW50ZXJuYWwgZnJhbWVzIC4uLiI7CisKK3N0
ZDo6c3RyaW5nIE9zU3RhY2tUcmFjZUdldHRlcjo6Q3VycmVudFN0YWNrVHJhY2UoaW50IC8qbWF4
X2RlcHRoKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCAvKnNraXBfY291bnQqLykgeworICByZXR1cm4gIiI7Cit9CisKK3ZvaWQgT3NTdGFj
a1RyYWNlR2V0dGVyOjpVcG9uTGVhdmluZ0dUZXN0KCkge30KKworLy8gQSBoZWxwZXIgY2xhc3Mg
dGhhdCBjcmVhdGVzIHRoZSBwcmVtYXR1cmUtZXhpdCBmaWxlIGluIGl0cworLy8gY29uc3RydWN0
b3IgYW5kIGRlbGV0ZXMgdGhlIGZpbGUgaW4gaXRzIGRlc3RydWN0b3IuCitjbGFzcyBTY29wZWRQ
cmVtYXR1cmVFeGl0RmlsZSB7CisgcHVibGljOgorICBleHBsaWNpdCBTY29wZWRQcmVtYXR1cmVF
eGl0RmlsZShjb25zdCBjaGFyKiBwcmVtYXR1cmVfZXhpdF9maWxlcGF0aCkKKyAgICAgIDogcHJl
bWF0dXJlX2V4aXRfZmlsZXBhdGhfKHByZW1hdHVyZV9leGl0X2ZpbGVwYXRoKSB7CisgICAgLy8g
SWYgYSBwYXRoIHRvIHRoZSBwcmVtYXR1cmUtZXhpdCBmaWxlIGlzIHNwZWNpZmllZC4uLgorICAg
IGlmIChwcmVtYXR1cmVfZXhpdF9maWxlcGF0aCAhPSBOVUxMICYmICpwcmVtYXR1cmVfZXhpdF9m
aWxlcGF0aCAhPSAnXDAnKSB7CisgICAgICAvLyBjcmVhdGUgdGhlIGZpbGUgd2l0aCBhIHNpbmds
ZSAiMCIgY2hhcmFjdGVyIGluIGl0LiAgSS9PCisgICAgICAvLyBlcnJvcnMgYXJlIGlnbm9yZWQg
YXMgdGhlcmUncyBub3RoaW5nIGJldHRlciB3ZSBjYW4gZG8gYW5kIHdlCisgICAgICAvLyBkb24n
dCB3YW50IHRvIGZhaWwgdGhlIHRlc3QgYmVjYXVzZSBvZiB0aGlzLgorICAgICAgRklMRSogcGZp
bGUgPSBwb3NpeDo6Rk9wZW4ocHJlbWF0dXJlX2V4aXRfZmlsZXBhdGgsICJ3Iik7CisgICAgICBm
d3JpdGUoIjAiLCAxLCAxLCBwZmlsZSk7CisgICAgICBmY2xvc2UocGZpbGUpOworICAgIH0KKyAg
fQorCisgIH5TY29wZWRQcmVtYXR1cmVFeGl0RmlsZSgpIHsKKyAgICBpZiAocHJlbWF0dXJlX2V4
aXRfZmlsZXBhdGhfICE9IE5VTEwgJiYgKnByZW1hdHVyZV9leGl0X2ZpbGVwYXRoXyAhPSAnXDAn
KSB7CisgICAgICByZW1vdmUocHJlbWF0dXJlX2V4aXRfZmlsZXBhdGhfKTsKKyAgICB9CisgIH0K
KworIHByaXZhdGU6CisgIGNvbnN0IGNoYXIqIGNvbnN0IHByZW1hdHVyZV9leGl0X2ZpbGVwYXRo
XzsKKworICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFNjb3BlZFByZW1hdHVyZUV4
aXRGaWxlKTsKK307CisKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAorCisvLyBjbGFzcyBUZXN0
RXZlbnRMaXN0ZW5lcnMKKworVGVzdEV2ZW50TGlzdGVuZXJzOjpUZXN0RXZlbnRMaXN0ZW5lcnMo
KQorICAgIDogcmVwZWF0ZXJfKG5ldyBpbnRlcm5hbDo6VGVzdEV2ZW50UmVwZWF0ZXIoKSksCisg
ICAgICBkZWZhdWx0X3Jlc3VsdF9wcmludGVyXyhOVUxMKSwKKyAgICAgIGRlZmF1bHRfeG1sX2dl
bmVyYXRvcl8oTlVMTCkgeworfQorCitUZXN0RXZlbnRMaXN0ZW5lcnM6On5UZXN0RXZlbnRMaXN0
ZW5lcnMoKSB7IGRlbGV0ZSByZXBlYXRlcl87IH0KKworLy8gUmV0dXJucyB0aGUgc3RhbmRhcmQg
bGlzdGVuZXIgcmVzcG9uc2libGUgZm9yIHRoZSBkZWZhdWx0IGNvbnNvbGUKKy8vIG91dHB1dC4g
IENhbiBiZSByZW1vdmVkIGZyb20gdGhlIGxpc3RlbmVycyBsaXN0IHRvIHNodXQgZG93biBkZWZh
dWx0CisvLyBjb25zb2xlIG91dHB1dC4gIE5vdGUgdGhhdCByZW1vdmluZyB0aGlzIG9iamVjdCBm
cm9tIHRoZSBsaXN0ZW5lciBsaXN0CisvLyB3aXRoIFJlbGVhc2UgdHJhbnNmZXJzIGl0cyBvd25l
cnNoaXAgdG8gdGhlIHVzZXIuCit2b2lkIFRlc3RFdmVudExpc3RlbmVyczo6QXBwZW5kKFRlc3RF
dmVudExpc3RlbmVyKiBsaXN0ZW5lcikgeworICByZXBlYXRlcl8tPkFwcGVuZChsaXN0ZW5lcik7
Cit9CisKKy8vIFJlbW92ZXMgdGhlIGdpdmVuIGV2ZW50IGxpc3RlbmVyIGZyb20gdGhlIGxpc3Qg
YW5kIHJldHVybnMgaXQuICBJdCB0aGVuCisvLyBiZWNvbWVzIHRoZSBjYWxsZXIncyByZXNwb25z
aWJpbGl0eSB0byBkZWxldGUgdGhlIGxpc3RlbmVyLiBSZXR1cm5zCisvLyBOVUxMIGlmIHRoZSBs
aXN0ZW5lciBpcyBub3QgZm91bmQgaW4gdGhlIGxpc3QuCitUZXN0RXZlbnRMaXN0ZW5lciogVGVz
dEV2ZW50TGlzdGVuZXJzOjpSZWxlYXNlKFRlc3RFdmVudExpc3RlbmVyKiBsaXN0ZW5lcikgewor
ICBpZiAobGlzdGVuZXIgPT0gZGVmYXVsdF9yZXN1bHRfcHJpbnRlcl8pCisgICAgZGVmYXVsdF9y
ZXN1bHRfcHJpbnRlcl8gPSBOVUxMOworICBlbHNlIGlmIChsaXN0ZW5lciA9PSBkZWZhdWx0X3ht
bF9nZW5lcmF0b3JfKQorICAgIGRlZmF1bHRfeG1sX2dlbmVyYXRvcl8gPSBOVUxMOworICByZXR1
cm4gcmVwZWF0ZXJfLT5SZWxlYXNlKGxpc3RlbmVyKTsKK30KKworLy8gUmV0dXJucyByZXBlYXRl
ciB0aGF0IGJyb2FkY2FzdHMgdGhlIFRlc3RFdmVudExpc3RlbmVyIGV2ZW50cyB0byBhbGwKKy8v
IHN1YnNjcmliZXJzLgorVGVzdEV2ZW50TGlzdGVuZXIqIFRlc3RFdmVudExpc3RlbmVyczo6cmVw
ZWF0ZXIoKSB7IHJldHVybiByZXBlYXRlcl87IH0KKworLy8gU2V0cyB0aGUgZGVmYXVsdF9yZXN1
bHRfcHJpbnRlciBhdHRyaWJ1dGUgdG8gdGhlIHByb3ZpZGVkIGxpc3RlbmVyLgorLy8gVGhlIGxp
c3RlbmVyIGlzIGFsc28gYWRkZWQgdG8gdGhlIGxpc3RlbmVyIGxpc3QgYW5kIHByZXZpb3VzCisv
LyBkZWZhdWx0X3Jlc3VsdF9wcmludGVyIGlzIHJlbW92ZWQgZnJvbSBpdCBhbmQgZGVsZXRlZC4g
VGhlIGxpc3RlbmVyIGNhbgorLy8gYWxzbyBiZSBOVUxMIGluIHdoaWNoIGNhc2UgaXQgd2lsbCBu
b3QgYmUgYWRkZWQgdG8gdGhlIGxpc3QuIERvZXMKKy8vIG5vdGhpbmcgaWYgdGhlIHByZXZpb3Vz
IGFuZCB0aGUgY3VycmVudCBsaXN0ZW5lciBvYmplY3RzIGFyZSB0aGUgc2FtZS4KK3ZvaWQgVGVz
dEV2ZW50TGlzdGVuZXJzOjpTZXREZWZhdWx0UmVzdWx0UHJpbnRlcihUZXN0RXZlbnRMaXN0ZW5l
ciogbGlzdGVuZXIpIHsKKyAgaWYgKGRlZmF1bHRfcmVzdWx0X3ByaW50ZXJfICE9IGxpc3RlbmVy
KSB7CisgICAgLy8gSXQgaXMgYW4gZXJyb3IgdG8gcGFzcyB0aGlzIG1ldGhvZCBhIGxpc3RlbmVy
IHRoYXQgaXMgYWxyZWFkeSBpbiB0aGUKKyAgICAvLyBsaXN0LgorICAgIGRlbGV0ZSBSZWxlYXNl
KGRlZmF1bHRfcmVzdWx0X3ByaW50ZXJfKTsKKyAgICBkZWZhdWx0X3Jlc3VsdF9wcmludGVyXyA9
IGxpc3RlbmVyOworICAgIGlmIChsaXN0ZW5lciAhPSBOVUxMKQorICAgICAgQXBwZW5kKGxpc3Rl
bmVyKTsKKyAgfQorfQorCisvLyBTZXRzIHRoZSBkZWZhdWx0X3htbF9nZW5lcmF0b3IgYXR0cmli
dXRlIHRvIHRoZSBwcm92aWRlZCBsaXN0ZW5lci4gIFRoZQorLy8gbGlzdGVuZXIgaXMgYWxzbyBh
ZGRlZCB0byB0aGUgbGlzdGVuZXIgbGlzdCBhbmQgcHJldmlvdXMKKy8vIGRlZmF1bHRfeG1sX2dl
bmVyYXRvciBpcyByZW1vdmVkIGZyb20gaXQgYW5kIGRlbGV0ZWQuIFRoZSBsaXN0ZW5lciBjYW4K
Ky8vIGFsc28gYmUgTlVMTCBpbiB3aGljaCBjYXNlIGl0IHdpbGwgbm90IGJlIGFkZGVkIHRvIHRo
ZSBsaXN0LiBEb2VzCisvLyBub3RoaW5nIGlmIHRoZSBwcmV2aW91cyBhbmQgdGhlIGN1cnJlbnQg
bGlzdGVuZXIgb2JqZWN0cyBhcmUgdGhlIHNhbWUuCit2b2lkIFRlc3RFdmVudExpc3RlbmVyczo6
U2V0RGVmYXVsdFhtbEdlbmVyYXRvcihUZXN0RXZlbnRMaXN0ZW5lciogbGlzdGVuZXIpIHsKKyAg
aWYgKGRlZmF1bHRfeG1sX2dlbmVyYXRvcl8gIT0gbGlzdGVuZXIpIHsKKyAgICAvLyBJdCBpcyBh
biBlcnJvciB0byBwYXNzIHRoaXMgbWV0aG9kIGEgbGlzdGVuZXIgdGhhdCBpcyBhbHJlYWR5IGlu
IHRoZQorICAgIC8vIGxpc3QuCisgICAgZGVsZXRlIFJlbGVhc2UoZGVmYXVsdF94bWxfZ2VuZXJh
dG9yXyk7CisgICAgZGVmYXVsdF94bWxfZ2VuZXJhdG9yXyA9IGxpc3RlbmVyOworICAgIGlmIChs
aXN0ZW5lciAhPSBOVUxMKQorICAgICAgQXBwZW5kKGxpc3RlbmVyKTsKKyAgfQorfQorCisvLyBD
b250cm9scyB3aGV0aGVyIGV2ZW50cyB3aWxsIGJlIGZvcndhcmRlZCBieSB0aGUgcmVwZWF0ZXIg
dG8gdGhlCisvLyBsaXN0ZW5lcnMgaW4gdGhlIGxpc3QuCitib29sIFRlc3RFdmVudExpc3RlbmVy
czo6RXZlbnRGb3J3YXJkaW5nRW5hYmxlZCgpIGNvbnN0IHsKKyAgcmV0dXJuIHJlcGVhdGVyXy0+
Zm9yd2FyZGluZ19lbmFibGVkKCk7Cit9CisKK3ZvaWQgVGVzdEV2ZW50TGlzdGVuZXJzOjpTdXBw
cmVzc0V2ZW50Rm9yd2FyZGluZygpIHsKKyAgcmVwZWF0ZXJfLT5zZXRfZm9yd2FyZGluZ19lbmFi
bGVkKGZhbHNlKTsKK30KKworLy8gY2xhc3MgVW5pdFRlc3QKKworLy8gR2V0cyB0aGUgc2luZ2xl
dG9uIFVuaXRUZXN0IG9iamVjdC4gIFRoZSBmaXJzdCB0aW1lIHRoaXMgbWV0aG9kIGlzCisvLyBj
YWxsZWQsIGEgVW5pdFRlc3Qgb2JqZWN0IGlzIGNvbnN0cnVjdGVkIGFuZCByZXR1cm5lZC4gIENv
bnNlY3V0aXZlCisvLyBjYWxscyB3aWxsIHJldHVybiB0aGUgc2FtZSBvYmplY3QuCisvLworLy8g
V2UgZG9uJ3QgcHJvdGVjdCB0aGlzIHVuZGVyIG11dGV4XyBhcyBhIHVzZXIgaXMgbm90IHN1cHBv
c2VkIHRvCisvLyBjYWxsIHRoaXMgYmVmb3JlIG1haW4oKSBzdGFydHMsIGZyb20gd2hpY2ggcG9p
bnQgb24gdGhlIHJldHVybgorLy8gdmFsdWUgd2lsbCBuZXZlciBjaGFuZ2UuCitVbml0VGVzdCog
VW5pdFRlc3Q6OkdldEluc3RhbmNlKCkgeworICAvLyBXaGVuIGNvbXBpbGVkIHdpdGggTVNWQyA3
LjEgaW4gb3B0aW1pemVkIG1vZGUsIGRlc3Ryb3lpbmcgdGhlCisgIC8vIFVuaXRUZXN0IG9iamVj
dCB1cG9uIGV4aXRpbmcgdGhlIHByb2dyYW0gbWVzc2VzIHVwIHRoZSBleGl0IGNvZGUsCisgIC8v
IGNhdXNpbmcgc3VjY2Vzc2Z1bCB0ZXN0cyB0byBhcHBlYXIgZmFpbGVkLiAgV2UgaGF2ZSB0byB1
c2UgYQorICAvLyBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb24gaW4gdGhpcyBjYXNlIHRvIGJ5cGFz
cyB0aGUgY29tcGlsZXIgYnVnLgorICAvLyBUaGlzIGltcGxlbWVudGF0aW9uIG1ha2VzIHRoZSBj
b21waWxlciBoYXBweSwgYXQgdGhlIGNvc3Qgb2YKKyAgLy8gbGVha2luZyB0aGUgVW5pdFRlc3Qg
b2JqZWN0LgorCisgIC8vIENvZGVHZWFyIEMrK0J1aWxkZXIgaW5zaXN0cyBvbiBhIHB1YmxpYyBk
ZXN0cnVjdG9yIGZvciB0aGUKKyAgLy8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4gIFVzZSB0aGlz
IGltcGxlbWVudGF0aW9uIHRvIGtlZXAgZ29vZCBPTworICAvLyBkZXNpZ24gd2l0aCBwcml2YXRl
IGRlc3RydWN0b3IuCisKKyNpZiAoX01TQ19WRVIgPT0gMTMxMCAmJiAhZGVmaW5lZChfREVCVUcp
KSB8fCBkZWZpbmVkKF9fQk9STEFORENfXykKKyAgc3RhdGljIFVuaXRUZXN0KiBjb25zdCBpbnN0
YW5jZSA9IG5ldyBVbml0VGVzdDsKKyAgcmV0dXJuIGluc3RhbmNlOworI2Vsc2UKKyAgc3RhdGlj
IFVuaXRUZXN0IGluc3RhbmNlOworICByZXR1cm4gJmluc3RhbmNlOworI2VuZGlmICAvLyAoX01T
Q19WRVIgPT0gMTMxMCAmJiAhZGVmaW5lZChfREVCVUcpKSB8fCBkZWZpbmVkKF9fQk9STEFORENf
XykKK30KKworLy8gR2V0cyB0aGUgbnVtYmVyIG9mIHN1Y2Nlc3NmdWwgdGVzdCBjYXNlcy4KK2lu
dCBVbml0VGVzdDo6c3VjY2Vzc2Z1bF90ZXN0X2Nhc2VfY291bnQoKSBjb25zdCB7CisgIHJldHVy
biBpbXBsKCktPnN1Y2Nlc3NmdWxfdGVzdF9jYXNlX2NvdW50KCk7Cit9CisKKy8vIEdldHMgdGhl
IG51bWJlciBvZiBmYWlsZWQgdGVzdCBjYXNlcy4KK2ludCBVbml0VGVzdDo6ZmFpbGVkX3Rlc3Rf
Y2FzZV9jb3VudCgpIGNvbnN0IHsKKyAgcmV0dXJuIGltcGwoKS0+ZmFpbGVkX3Rlc3RfY2FzZV9j
b3VudCgpOworfQorCisvLyBHZXRzIHRoZSBudW1iZXIgb2YgYWxsIHRlc3QgY2FzZXMuCitpbnQg
VW5pdFRlc3Q6OnRvdGFsX3Rlc3RfY2FzZV9jb3VudCgpIGNvbnN0IHsKKyAgcmV0dXJuIGltcGwo
KS0+dG90YWxfdGVzdF9jYXNlX2NvdW50KCk7Cit9CisKKy8vIEdldHMgdGhlIG51bWJlciBvZiBh
bGwgdGVzdCBjYXNlcyB0aGF0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIHRlc3QKKy8vIHRoYXQgc2hv
dWxkIHJ1bi4KK2ludCBVbml0VGVzdDo6dGVzdF9jYXNlX3RvX3J1bl9jb3VudCgpIGNvbnN0IHsK
KyAgcmV0dXJuIGltcGwoKS0+dGVzdF9jYXNlX3RvX3J1bl9jb3VudCgpOworfQorCisvLyBHZXRz
IHRoZSBudW1iZXIgb2Ygc3VjY2Vzc2Z1bCB0ZXN0cy4KK2ludCBVbml0VGVzdDo6c3VjY2Vzc2Z1
bF90ZXN0X2NvdW50KCkgY29uc3QgeworICByZXR1cm4gaW1wbCgpLT5zdWNjZXNzZnVsX3Rlc3Rf
Y291bnQoKTsKK30KKworLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGZhaWxlZCB0ZXN0cy4KK2ludCBV
bml0VGVzdDo6ZmFpbGVkX3Rlc3RfY291bnQoKSBjb25zdCB7IHJldHVybiBpbXBsKCktPmZhaWxl
ZF90ZXN0X2NvdW50KCk7IH0KKworLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRlc3Rz
IHRoYXQgd2lsbCBiZSByZXBvcnRlZCBpbiB0aGUgWE1MIHJlcG9ydC4KK2ludCBVbml0VGVzdDo6
cmVwb3J0YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KCkgY29uc3QgeworICByZXR1cm4gaW1wbCgp
LT5yZXBvcnRhYmxlX2Rpc2FibGVkX3Rlc3RfY291bnQoKTsKK30KKworLy8gR2V0cyB0aGUgbnVt
YmVyIG9mIGRpc2FibGVkIHRlc3RzLgoraW50IFVuaXRUZXN0OjpkaXNhYmxlZF90ZXN0X2NvdW50
KCkgY29uc3QgeworICByZXR1cm4gaW1wbCgpLT5kaXNhYmxlZF90ZXN0X2NvdW50KCk7Cit9CisK
Ky8vIEdldHMgdGhlIG51bWJlciBvZiB0ZXN0cyB0byBiZSBwcmludGVkIGluIHRoZSBYTUwgcmVw
b3J0LgoraW50IFVuaXRUZXN0OjpyZXBvcnRhYmxlX3Rlc3RfY291bnQoKSBjb25zdCB7CisgIHJl
dHVybiBpbXBsKCktPnJlcG9ydGFibGVfdGVzdF9jb3VudCgpOworfQorCisvLyBHZXRzIHRoZSBu
dW1iZXIgb2YgYWxsIHRlc3RzLgoraW50IFVuaXRUZXN0Ojp0b3RhbF90ZXN0X2NvdW50KCkgY29u
c3QgeyByZXR1cm4gaW1wbCgpLT50b3RhbF90ZXN0X2NvdW50KCk7IH0KKworLy8gR2V0cyB0aGUg
bnVtYmVyIG9mIHRlc3RzIHRoYXQgc2hvdWxkIHJ1bi4KK2ludCBVbml0VGVzdDo6dGVzdF90b19y
dW5fY291bnQoKSBjb25zdCB7IHJldHVybiBpbXBsKCktPnRlc3RfdG9fcnVuX2NvdW50KCk7IH0K
KworLy8gR2V0cyB0aGUgdGltZSBvZiB0aGUgdGVzdCBwcm9ncmFtIHN0YXJ0LCBpbiBtcyBmcm9t
IHRoZSBzdGFydCBvZiB0aGUKKy8vIFVOSVggZXBvY2guCitpbnRlcm5hbDo6VGltZUluTWlsbGlz
IFVuaXRUZXN0OjpzdGFydF90aW1lc3RhbXAoKSBjb25zdCB7CisgICAgcmV0dXJuIGltcGwoKS0+
c3RhcnRfdGltZXN0YW1wKCk7Cit9CisKKy8vIEdldHMgdGhlIGVsYXBzZWQgdGltZSwgaW4gbWls
bGlzZWNvbmRzLgoraW50ZXJuYWw6OlRpbWVJbk1pbGxpcyBVbml0VGVzdDo6ZWxhcHNlZF90aW1l
KCkgY29uc3QgeworICByZXR1cm4gaW1wbCgpLT5lbGFwc2VkX3RpbWUoKTsKK30KKworLy8gUmV0
dXJucyB0cnVlIGlmZiB0aGUgdW5pdCB0ZXN0IHBhc3NlZCAoaS5lLiBhbGwgdGVzdCBjYXNlcyBw
YXNzZWQpLgorYm9vbCBVbml0VGVzdDo6UGFzc2VkKCkgY29uc3QgeyByZXR1cm4gaW1wbCgpLT5Q
YXNzZWQoKTsgfQorCisvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSB1bml0IHRlc3QgZmFpbGVkIChp
LmUuIHNvbWUgdGVzdCBjYXNlIGZhaWxlZAorLy8gb3Igc29tZXRoaW5nIG91dHNpZGUgb2YgYWxs
IHRlc3RzIGZhaWxlZCkuCitib29sIFVuaXRUZXN0OjpGYWlsZWQoKSBjb25zdCB7IHJldHVybiBp
bXBsKCktPkZhaWxlZCgpOyB9CisKKy8vIEdldHMgdGhlIGktdGggdGVzdCBjYXNlIGFtb25nIGFs
bCB0aGUgdGVzdCBjYXNlcy4gaSBjYW4gcmFuZ2UgZnJvbSAwIHRvCisvLyB0b3RhbF90ZXN0X2Nh
c2VfY291bnQoKSAtIDEuIElmIGkgaXMgbm90IGluIHRoYXQgcmFuZ2UsIHJldHVybnMgTlVMTC4K
K2NvbnN0IFRlc3RDYXNlKiBVbml0VGVzdDo6R2V0VGVzdENhc2UoaW50IGkpIGNvbnN0IHsKKyAg
cmV0dXJuIGltcGwoKS0+R2V0VGVzdENhc2UoaSk7Cit9CisKKy8vIFJldHVybnMgdGhlIFRlc3RS
ZXN1bHQgY29udGFpbmluZyBpbmZvcm1hdGlvbiBvbiB0ZXN0IGZhaWx1cmVzIGFuZAorLy8gcHJv
cGVydGllcyBsb2dnZWQgb3V0c2lkZSBvZiBpbmRpdmlkdWFsIHRlc3QgY2FzZXMuCitjb25zdCBU
ZXN0UmVzdWx0JiBVbml0VGVzdDo6YWRfaG9jX3Rlc3RfcmVzdWx0KCkgY29uc3QgeworICByZXR1
cm4gKmltcGwoKS0+YWRfaG9jX3Rlc3RfcmVzdWx0KCk7Cit9CisKKy8vIEdldHMgdGhlIGktdGgg
dGVzdCBjYXNlIGFtb25nIGFsbCB0aGUgdGVzdCBjYXNlcy4gaSBjYW4gcmFuZ2UgZnJvbSAwIHRv
CisvLyB0b3RhbF90ZXN0X2Nhc2VfY291bnQoKSAtIDEuIElmIGkgaXMgbm90IGluIHRoYXQgcmFu
Z2UsIHJldHVybnMgTlVMTC4KK1Rlc3RDYXNlKiBVbml0VGVzdDo6R2V0TXV0YWJsZVRlc3RDYXNl
KGludCBpKSB7CisgIHJldHVybiBpbXBsKCktPkdldE11dGFibGVUZXN0Q2FzZShpKTsKK30KKwor
Ly8gUmV0dXJucyB0aGUgbGlzdCBvZiBldmVudCBsaXN0ZW5lcnMgdGhhdCBjYW4gYmUgdXNlZCB0
byB0cmFjayBldmVudHMKKy8vIGluc2lkZSBHb29nbGUgVGVzdC4KK1Rlc3RFdmVudExpc3RlbmVy
cyYgVW5pdFRlc3Q6Omxpc3RlbmVycygpIHsKKyAgcmV0dXJuICppbXBsKCktPmxpc3RlbmVycygp
OworfQorCisvLyBSZWdpc3RlcnMgYW5kIHJldHVybnMgYSBnbG9iYWwgdGVzdCBlbnZpcm9ubWVu
dC4gIFdoZW4gYSB0ZXN0CisvLyBwcm9ncmFtIGlzIHJ1biwgYWxsIGdsb2JhbCB0ZXN0IGVudmly
b25tZW50cyB3aWxsIGJlIHNldC11cCBpbiB0aGUKKy8vIG9yZGVyIHRoZXkgd2VyZSByZWdpc3Rl
cmVkLiAgQWZ0ZXIgYWxsIHRlc3RzIGluIHRoZSBwcm9ncmFtIGhhdmUKKy8vIGZpbmlzaGVkLCBh
bGwgZ2xvYmFsIHRlc3QgZW52aXJvbm1lbnRzIHdpbGwgYmUgdG9ybi1kb3duIGluIHRoZQorLy8g
KnJldmVyc2UqIG9yZGVyIHRoZXkgd2VyZSByZWdpc3RlcmVkLgorLy8KKy8vIFRoZSBVbml0VGVz
dCBvYmplY3QgdGFrZXMgb3duZXJzaGlwIG9mIHRoZSBnaXZlbiBlbnZpcm9ubWVudC4KKy8vCisv
LyBXZSBkb24ndCBwcm90ZWN0IHRoaXMgdW5kZXIgbXV0ZXhfLCBhcyB3ZSBvbmx5IHN1cHBvcnQg
Y2FsbGluZyBpdAorLy8gZnJvbSB0aGUgbWFpbiB0aHJlYWQuCitFbnZpcm9ubWVudCogVW5pdFRl
c3Q6OkFkZEVudmlyb25tZW50KEVudmlyb25tZW50KiBlbnYpIHsKKyAgaWYgKGVudiA9PSBOVUxM
KSB7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KKworICBpbXBsXy0+ZW52aXJvbm1lbnRzKCkucHVz
aF9iYWNrKGVudik7CisgIHJldHVybiBlbnY7Cit9CisKKy8vIEFkZHMgYSBUZXN0UGFydFJlc3Vs
dCB0byB0aGUgY3VycmVudCBUZXN0UmVzdWx0IG9iamVjdC4gIEFsbCBHb29nbGUgVGVzdAorLy8g
YXNzZXJ0aW9uIG1hY3JvcyAoZS5nLiBBU1NFUlRfVFJVRSwgRVhQRUNUX0VRLCBldGMpIGV2ZW50
dWFsbHkgY2FsbAorLy8gdGhpcyB0byByZXBvcnQgdGhlaXIgcmVzdWx0cy4gIFRoZSB1c2VyIGNv
ZGUgc2hvdWxkIHVzZSB0aGUKKy8vIGFzc2VydGlvbiBtYWNyb3MgaW5zdGVhZCBvZiBjYWxsaW5n
IHRoaXMgZGlyZWN0bHkuCit2b2lkIFVuaXRUZXN0OjpBZGRUZXN0UGFydFJlc3VsdCgKKyAgICBU
ZXN0UGFydFJlc3VsdDo6VHlwZSByZXN1bHRfdHlwZSwKKyAgICBjb25zdCBjaGFyKiBmaWxlX25h
bWUsCisgICAgaW50IGxpbmVfbnVtYmVyLAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdl
LAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvc19zdGFja190cmFjZSkgR1RFU1RfTE9DS19FWENM
VURFRF8obXV0ZXhfKSB7CisgIE1lc3NhZ2UgbXNnOworICBtc2cgPDwgbWVzc2FnZTsKKworICBp
bnRlcm5hbDo6TXV0ZXhMb2NrIGxvY2soJm11dGV4Xyk7CisgIGlmIChpbXBsXy0+Z3Rlc3RfdHJh
Y2Vfc3RhY2soKS5zaXplKCkgPiAwKSB7CisgICAgbXNnIDw8ICJcbiIgPDwgR1RFU1RfTkFNRV8g
PDwgIiB0cmFjZToiOworCisgICAgZm9yIChpbnQgaSA9IHN0YXRpY19jYXN0PGludD4oaW1wbF8t
Pmd0ZXN0X3RyYWNlX3N0YWNrKCkuc2l6ZSgpKTsKKyAgICAgICAgIGkgPiAwOyAtLWkpIHsKKyAg
ICAgIGNvbnN0IGludGVybmFsOjpUcmFjZUluZm8mIHRyYWNlID0gaW1wbF8tPmd0ZXN0X3RyYWNl
X3N0YWNrKClbaSAtIDFdOworICAgICAgbXNnIDw8ICJcbiIgPDwgaW50ZXJuYWw6OkZvcm1hdEZp
bGVMb2NhdGlvbih0cmFjZS5maWxlLCB0cmFjZS5saW5lKQorICAgICAgICAgIDw8ICIgIiA8PCB0
cmFjZS5tZXNzYWdlOworICAgIH0KKyAgfQorCisgIGlmIChvc19zdGFja190cmFjZS5jX3N0cigp
ICE9IE5VTEwgJiYgIW9zX3N0YWNrX3RyYWNlLmVtcHR5KCkpIHsKKyAgICBtc2cgPDwgaW50ZXJu
YWw6OmtTdGFja1RyYWNlTWFya2VyIDw8IG9zX3N0YWNrX3RyYWNlOworICB9CisKKyAgY29uc3Qg
VGVzdFBhcnRSZXN1bHQgcmVzdWx0ID0KKyAgICBUZXN0UGFydFJlc3VsdChyZXN1bHRfdHlwZSwg
ZmlsZV9uYW1lLCBsaW5lX251bWJlciwKKyAgICAgICAgICAgICAgICAgICBtc2cuR2V0U3RyaW5n
KCkuY19zdHIoKSk7CisgIGltcGxfLT5HZXRUZXN0UGFydFJlc3VsdFJlcG9ydGVyRm9yQ3VycmVu
dFRocmVhZCgpLT4KKyAgICAgIFJlcG9ydFRlc3RQYXJ0UmVzdWx0KHJlc3VsdCk7CisKKyAgaWYg
KHJlc3VsdF90eXBlICE9IFRlc3RQYXJ0UmVzdWx0OjprU3VjY2VzcykgeworICAgIC8vIGd0ZXN0
X2JyZWFrX29uX2ZhaWx1cmUgdGFrZXMgcHJlY2VkZW5jZSBvdmVyCisgICAgLy8gZ3Rlc3RfdGhy
b3dfb25fZmFpbHVyZS4gIFRoaXMgYWxsb3dzIGEgdXNlciB0byBzZXQgdGhlIGxhdHRlcgorICAg
IC8vIGluIHRoZSBjb2RlIChwZXJoYXBzIGluIG9yZGVyIHRvIHVzZSBHb29nbGUgVGVzdCBhc3Nl
cnRpb25zCisgICAgLy8gd2l0aCBhbm90aGVyIHRlc3RpbmcgZnJhbWV3b3JrKSBhbmQgc3BlY2lm
eSB0aGUgZm9ybWVyIG9uIHRoZQorICAgIC8vIGNvbW1hbmQgbGluZSBmb3IgZGVidWdnaW5nLgor
ICAgIGlmIChHVEVTVF9GTEFHKGJyZWFrX29uX2ZhaWx1cmUpKSB7CisjaWYgR1RFU1RfT1NfV0lO
RE9XUyAmJiAhR1RFU1RfT1NfV0lORE9XU19QSE9ORSAmJiAhR1RFU1RfT1NfV0lORE9XU19SVAor
ICAgICAgLy8gVXNpbmcgRGVidWdCcmVhayBvbiBXaW5kb3dzIGFsbG93cyBndGVzdCB0byBzdGls
bCBicmVhayBpbnRvIGEgZGVidWdnZXIKKyAgICAgIC8vIHdoZW4gYSBmYWlsdXJlIGhhcHBlbnMg
YW5kIGJvdGggdGhlIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZSBhbmQKKyAgICAgIC8vIHRoZSAt
LWd0ZXN0X2NhdGNoX2V4Y2VwdGlvbnMgZmxhZ3MgYXJlIHNwZWNpZmllZC4KKyAgICAgIERlYnVn
QnJlYWsoKTsKKyNlbHNlCisgICAgICAvLyBEZXJlZmVyZW5jZSBOVUxMIHRocm91Z2ggYSB2b2xh
dGlsZSBwb2ludGVyIHRvIHByZXZlbnQgdGhlIGNvbXBpbGVyCisgICAgICAvLyBmcm9tIHJlbW92
aW5nLiBXZSB1c2UgdGhpcyByYXRoZXIgdGhhbiBhYm9ydCgpIG9yIF9fYnVpbHRpbl90cmFwKCkg
Zm9yCisgICAgICAvLyBwb3J0YWJpbGl0eTogU3ltYmlhbiBkb2Vzbid0IGltcGxlbWVudCBhYm9y
dCgpIHdlbGwsIGFuZCBzb21lIGRlYnVnZ2VycworICAgICAgLy8gZG9uJ3QgY29ycmVjdGx5IHRy
YXAgYWJvcnQoKS4KKyAgICAgICpzdGF0aWNfY2FzdDx2b2xhdGlsZSBpbnQqPihOVUxMKSA9IDE7
CisjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKyAgICB9IGVsc2UgaWYgKEdURVNUX0ZMQUco
dGhyb3dfb25fZmFpbHVyZSkpIHsKKyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUworICAgICAgdGhy
b3cgaW50ZXJuYWw6Okdvb2dsZVRlc3RGYWlsdXJlRXhjZXB0aW9uKHJlc3VsdCk7CisjZWxzZQor
ICAgICAgLy8gV2UgY2Fubm90IGNhbGwgYWJvcnQoKSBhcyBpdCBnZW5lcmF0ZXMgYSBwb3AtdXAg
aW4gZGVidWcgbW9kZQorICAgICAgLy8gdGhhdCBjYW5ub3QgYmUgc3VwcHJlc3NlZCBpbiBWQyA3
LjEgb3IgYmVsb3cuCisgICAgICBleGl0KDEpOworI2VuZGlmCisgICAgfQorICB9Cit9CisKKy8v
IEFkZHMgYSBUZXN0UHJvcGVydHkgdG8gdGhlIGN1cnJlbnQgVGVzdFJlc3VsdCBvYmplY3Qgd2hl
biBpbnZva2VkIGZyb20KKy8vIGluc2lkZSBhIHRlc3QsIHRvIGN1cnJlbnQgVGVzdENhc2UncyBh
ZF9ob2NfdGVzdF9yZXN1bHRfIHdoZW4gaW52b2tlZAorLy8gZnJvbSBTZXRVcFRlc3RDYXNlIG9y
IFRlYXJEb3duVGVzdENhc2UsIG9yIHRvIHRoZSBnbG9iYWwgcHJvcGVydHkgc2V0CisvLyB3aGVu
IGludm9rZWQgZWxzZXdoZXJlLiAgSWYgdGhlIHJlc3VsdCBhbHJlYWR5IGNvbnRhaW5zIGEgcHJv
cGVydHkgd2l0aAorLy8gdGhlIHNhbWUga2V5LCB0aGUgdmFsdWUgd2lsbCBiZSB1cGRhdGVkLgor
dm9pZCBVbml0VGVzdDo6UmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIGtleSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSkgewor
ICBpbXBsXy0+UmVjb3JkUHJvcGVydHkoVGVzdFByb3BlcnR5KGtleSwgdmFsdWUpKTsKK30KKwor
Ly8gUnVucyBhbGwgdGVzdHMgaW4gdGhpcyBVbml0VGVzdCBvYmplY3QgYW5kIHByaW50cyB0aGUg
cmVzdWx0LgorLy8gUmV0dXJucyAwIGlmIHN1Y2Nlc3NmdWwsIG9yIDEgb3RoZXJ3aXNlLgorLy8K
Ky8vIFdlIGRvbid0IHByb3RlY3QgdGhpcyB1bmRlciBtdXRleF8sIGFzIHdlIG9ubHkgc3VwcG9y
dCBjYWxsaW5nIGl0CisvLyBmcm9tIHRoZSBtYWluIHRocmVhZC4KK2ludCBVbml0VGVzdDo6UnVu
KCkgeworICBjb25zdCBib29sIGluX2RlYXRoX3Rlc3RfY2hpbGRfcHJvY2VzcyA9CisgICAgICBp
bnRlcm5hbDo6R1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkubGVuZ3RoKCkgPiAw
OworCisgIC8vIEdvb2dsZSBUZXN0IGltcGxlbWVudHMgdGhpcyBwcm90b2NvbCBmb3IgY2F0Y2hp
bmcgdGhhdCBhIHRlc3QKKyAgLy8gcHJvZ3JhbSBleGl0cyBiZWZvcmUgcmV0dXJuaW5nIGNvbnRy
b2wgdG8gR29vZ2xlIFRlc3Q6CisgIC8vCisgIC8vICAgMS4gVXBvbiBzdGFydCwgR29vZ2xlIFRl
c3QgY3JlYXRlcyBhIGZpbGUgd2hvc2UgYWJzb2x1dGUgcGF0aAorICAvLyAgICAgIGlzIHNwZWNp
ZmllZCBieSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKKyAgLy8gICAgICBURVNUX1BSRU1BVFVS
RV9FWElUX0ZJTEUuCisgIC8vICAgMi4gV2hlbiBHb29nbGUgVGVzdCBoYXMgZmluaXNoZWQgaXRz
IHdvcmssIGl0IGRlbGV0ZXMgdGhlIGZpbGUuCisgIC8vCisgIC8vIFRoaXMgYWxsb3dzIGEgdGVz
dCBydW5uZXIgdG8gc2V0IFRFU1RfUFJFTUFUVVJFX0VYSVRfRklMRSBiZWZvcmUKKyAgLy8gcnVu
bmluZyBhIEdvb2dsZS1UZXN0LWJhc2VkIHRlc3QgcHJvZ3JhbSBhbmQgY2hlY2sgdGhlIGV4aXN0
ZW5jZQorICAvLyBvZiB0aGUgZmlsZSBhdCB0aGUgZW5kIG9mIHRoZSB0ZXN0IGV4ZWN1dGlvbiB0
byBzZWUgaWYgaXQgaGFzCisgIC8vIGV4aXRlZCBwcmVtYXR1cmVseS4KKworICAvLyBJZiB3ZSBh
cmUgaW4gdGhlIGNoaWxkIHByb2Nlc3Mgb2YgYSBkZWF0aCB0ZXN0LCBkb24ndAorICAvLyBjcmVh
dGUvZGVsZXRlIHRoZSBwcmVtYXR1cmUgZXhpdCBmaWxlLCBhcyBkb2luZyBzbyBpcyB1bm5lY2Vz
c2FyeQorICAvLyBhbmQgd2lsbCBjb25mdXNlIHRoZSBwYXJlbnQgcHJvY2Vzcy4gIE90aGVyd2lz
ZSwgY3JlYXRlL2RlbGV0ZQorICAvLyB0aGUgZmlsZSB1cG9uIGVudGVyaW5nL2xlYXZpbmcgdGhp
cyBmdW5jdGlvbi4gIElmIHRoZSBwcm9ncmFtCisgIC8vIHNvbWVob3cgZXhpdHMgYmVmb3JlIHRo
aXMgZnVuY3Rpb24gaGFzIGEgY2hhbmNlIHRvIHJldHVybiwgdGhlCisgIC8vIHByZW1hdHVyZS1l
eGl0IGZpbGUgd2lsbCBiZSBsZWZ0IHVuZGVsZXRlZCwgY2F1c2luZyBhIHRlc3QgcnVubmVyCisg
IC8vIHRoYXQgdW5kZXJzdGFuZHMgdGhlIHByZW1hdHVyZS1leGl0LWZpbGUgcHJvdG9jb2wgdG8g
cmVwb3J0IHRoZQorICAvLyB0ZXN0IGFzIGhhdmluZyBmYWlsZWQuCisgIGNvbnN0IGludGVybmFs
OjpTY29wZWRQcmVtYXR1cmVFeGl0RmlsZSBwcmVtYXR1cmVfZXhpdF9maWxlKAorICAgICAgaW5f
ZGVhdGhfdGVzdF9jaGlsZF9wcm9jZXNzID8KKyAgICAgIE5VTEwgOiBpbnRlcm5hbDo6cG9zaXg6
OkdldEVudigiVEVTVF9QUkVNQVRVUkVfRVhJVF9GSUxFIikpOworCisgIC8vIENhcHR1cmVzIHRo
ZSB2YWx1ZSBvZiBHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpLiAgVGhpcyB2YWx1ZSB3aWxs
IGJlCisgIC8vIHVzZWQgZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUgcHJvZ3JhbS4KKyAgaW1wbCgp
LT5zZXRfY2F0Y2hfZXhjZXB0aW9ucyhHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpKTsKKwor
I2lmIEdURVNUX0hBU19TRUgKKyAgLy8gRWl0aGVyIHRoZSB1c2VyIHdhbnRzIEdvb2dsZSBUZXN0
IHRvIGNhdGNoIGV4Y2VwdGlvbnMgdGhyb3duIGJ5IHRoZQorICAvLyB0ZXN0cyBvciB0aGlzIGlz
IGV4ZWN1dGluZyBpbiB0aGUgY29udGV4dCBvZiBkZWF0aCB0ZXN0IGNoaWxkCisgIC8vIHByb2Nl
c3MuIEluIGVpdGhlciBjYXNlIHRoZSB1c2VyIGRvZXMgbm90IHdhbnQgdG8gc2VlIHBvcC11cCBk
aWFsb2dzCisgIC8vIGFib3V0IGNyYXNoZXMgLSB0aGV5IGFyZSBleHBlY3RlZC4KKyAgaWYgKGlt
cGwoKS0+Y2F0Y2hfZXhjZXB0aW9ucygpIHx8IGluX2RlYXRoX3Rlc3RfY2hpbGRfcHJvY2Vzcykg
eworIyBpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgJiYgIUdURVNUX09TX1dJTkRPV1NfUEhP
TkUgJiYgIUdURVNUX09TX1dJTkRPV1NfUlQKKyAgICAvLyBTZXRFcnJvck1vZGUgZG9lc24ndCBl
eGlzdCBvbiBDRS4KKyAgICBTZXRFcnJvck1vZGUoU0VNX0ZBSUxDUklUSUNBTEVSUk9SUyB8IFNF
TV9OT0FMSUdOTUVOVEZBVUxURVhDRVBUIHwKKyAgICAgICAgICAgICAgICAgU0VNX05PR1BGQVVM
VEVSUk9SQk9YIHwgU0VNX05PT1BFTkZJTEVFUlJPUkJPWCk7CisjIGVuZGlmICAvLyAhR1RFU1Rf
T1NfV0lORE9XU19NT0JJTEUKKworIyBpZiAoZGVmaW5lZChfTVNDX1ZFUikgfHwgR1RFU1RfT1Nf
V0lORE9XU19NSU5HVykgJiYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisgICAgLy8gRGVhdGgg
dGVzdCBjaGlsZHJlbiBjYW4gYmUgdGVybWluYXRlZCB3aXRoIF9hYm9ydCgpLiAgT24gV2luZG93
cywKKyAgICAvLyBfYWJvcnQoKSBjYW4gc2hvdyBhIGRpYWxvZyB3aXRoIGEgd2FybmluZyBtZXNz
YWdlLiAgVGhpcyBmb3JjZXMgdGhlCisgICAgLy8gYWJvcnQgbWVzc2FnZSB0byBnbyB0byBzdGRl
cnIgaW5zdGVhZC4KKyAgICBfc2V0X2Vycm9yX21vZGUoX09VVF9UT19TVERFUlIpOworIyBlbmRp
ZgorCisjIGlmIF9NU0NfVkVSID49IDE0MDAgJiYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisg
ICAgLy8gSW4gdGhlIGRlYnVnIHZlcnNpb24sIFZpc3VhbCBTdHVkaW8gcG9wcyB1cCBhIHNlcGFy
YXRlIGRpYWxvZworICAgIC8vIG9mZmVyaW5nIGEgY2hvaWNlIHRvIGRlYnVnIHRoZSBhYm9ydGVk
IHByb2dyYW0uIFdlIG5lZWQgdG8gc3VwcHJlc3MKKyAgICAvLyB0aGlzIGRpYWxvZyBvciBpdCB3
aWxsIHBvcCB1cCBmb3IgZXZlcnkgRVhQRUNUL0FTU0VSVF9ERUFUSCBzdGF0ZW1lbnQKKyAgICAv
LyBleGVjdXRlZC4gR29vZ2xlIFRlc3Qgd2lsbCBub3RpZnkgdGhlIHVzZXIgb2YgYW55IHVuZXhw
ZWN0ZWQKKyAgICAvLyBmYWlsdXJlIHZpYSBzdGRlcnIuCisgICAgLy8KKyAgICAvLyBWQysrIGRv
ZXNuJ3QgZGVmaW5lIF9zZXRfYWJvcnRfYmVoYXZpb3IoKSBwcmlvciB0byB0aGUgdmVyc2lvbiA4
LjAuCisgICAgLy8gVXNlcnMgb2YgcHJpb3IgVkMgdmVyc2lvbnMgc2hhbGwgc3VmZmVyIHRoZSBh
Z29ueSBhbmQgcGFpbiBvZgorICAgIC8vIGNsaWNraW5nIHRocm91Z2ggdGhlIGNvdW50bGVzcyBk
ZWJ1ZyBkaWFsb2dzLgorICAgIC8vIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IGZpbmQgYSB3YXkg
dG8gc3VwcHJlc3MgdGhlIGFib3J0IGRpYWxvZygpIGluIHRoZQorICAgIC8vIGRlYnVnIG1vZGUg
d2hlbiBjb21waWxlZCB3aXRoIFZDIDcuMSBvciBsb3dlci4KKyAgICBpZiAoIUdURVNUX0ZMQUco
YnJlYWtfb25fZmFpbHVyZSkpCisgICAgICBfc2V0X2Fib3J0X2JlaGF2aW9yKAorICAgICAgICAg
IDB4MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDbGVhciB0aGUgZm9s
bG93aW5nIGZsYWdzOgorICAgICAgICAgIF9XUklURV9BQk9SVF9NU0cgfCBfQ0FMTF9SRVBPUlRG
QVVMVCk7ICAvLyBwb3AtdXAgd2luZG93LCBjb3JlIGR1bXAuCisjIGVuZGlmCisgIH0KKyNlbmRp
ZiAgLy8gR1RFU1RfSEFTX1NFSAorCisgIHJldHVybiBpbnRlcm5hbDo6SGFuZGxlRXhjZXB0aW9u
c0luTWV0aG9kSWZTdXBwb3J0ZWQoCisgICAgICBpbXBsKCksCisgICAgICAmaW50ZXJuYWw6OlVu
aXRUZXN0SW1wbDo6UnVuQWxsVGVzdHMsCisgICAgICAiYXV4aWxpYXJ5IHRlc3QgY29kZSAoZW52
aXJvbm1lbnRzIG9yIGV2ZW50IGxpc3RlbmVycykiKSA/IDAgOiAxOworfQorCisvLyBSZXR1cm5z
IHRoZSB3b3JraW5nIGRpcmVjdG9yeSB3aGVuIHRoZSBmaXJzdCBURVNUKCkgb3IgVEVTVF9GKCkg
d2FzCisvLyBleGVjdXRlZC4KK2NvbnN0IGNoYXIqIFVuaXRUZXN0OjpvcmlnaW5hbF93b3JraW5n
X2RpcigpIGNvbnN0IHsKKyAgcmV0dXJuIGltcGxfLT5vcmlnaW5hbF93b3JraW5nX2Rpcl8uY19z
dHIoKTsKK30KKworLy8gUmV0dXJucyB0aGUgVGVzdENhc2Ugb2JqZWN0IGZvciB0aGUgdGVzdCB0
aGF0J3MgY3VycmVudGx5IHJ1bm5pbmcsCisvLyBvciBOVUxMIGlmIG5vIHRlc3QgaXMgcnVubmlu
Zy4KK2NvbnN0IFRlc3RDYXNlKiBVbml0VGVzdDo6Y3VycmVudF90ZXN0X2Nhc2UoKSBjb25zdAor
ICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKG11dGV4XykgeworICBpbnRlcm5hbDo6TXV0ZXhMb2Nr
IGxvY2soJm11dGV4Xyk7CisgIHJldHVybiBpbXBsXy0+Y3VycmVudF90ZXN0X2Nhc2UoKTsKK30K
KworLy8gUmV0dXJucyB0aGUgVGVzdEluZm8gb2JqZWN0IGZvciB0aGUgdGVzdCB0aGF0J3MgY3Vy
cmVudGx5IHJ1bm5pbmcsCisvLyBvciBOVUxMIGlmIG5vIHRlc3QgaXMgcnVubmluZy4KK2NvbnN0
IFRlc3RJbmZvKiBVbml0VGVzdDo6Y3VycmVudF90ZXN0X2luZm8oKSBjb25zdAorICAgIEdURVNU
X0xPQ0tfRVhDTFVERURfKG11dGV4XykgeworICBpbnRlcm5hbDo6TXV0ZXhMb2NrIGxvY2soJm11
dGV4Xyk7CisgIHJldHVybiBpbXBsXy0+Y3VycmVudF90ZXN0X2luZm8oKTsKK30KKworLy8gUmV0
dXJucyB0aGUgcmFuZG9tIHNlZWQgdXNlZCBhdCB0aGUgc3RhcnQgb2YgdGhlIGN1cnJlbnQgdGVz
dCBydW4uCitpbnQgVW5pdFRlc3Q6OnJhbmRvbV9zZWVkKCkgY29uc3QgeyByZXR1cm4gaW1wbF8t
PnJhbmRvbV9zZWVkKCk7IH0KKworI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCisvLyBSZXR1cm5z
IFBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5IG9iamVjdCB1c2VkIHRvIGtlZXAgdHJhY2sg
b2YKKy8vIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgYW5kIGluc3RhbnRpYXRlIGFuZCByZWdp
c3RlciB0aGVtLgoraW50ZXJuYWw6OlBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5JgorICAg
IFVuaXRUZXN0OjpwYXJhbWV0ZXJpemVkX3Rlc3RfcmVnaXN0cnkoKQorICAgICAgICBHVEVTVF9M
T0NLX0VYQ0xVREVEXyhtdXRleF8pIHsKKyAgcmV0dXJuIGltcGxfLT5wYXJhbWV0ZXJpemVkX3Rl
c3RfcmVnaXN0cnkoKTsKK30KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKKworLy8g
Q3JlYXRlcyBhbiBlbXB0eSBVbml0VGVzdC4KK1VuaXRUZXN0OjpVbml0VGVzdCgpIHsKKyAgaW1w
bF8gPSBuZXcgaW50ZXJuYWw6OlVuaXRUZXN0SW1wbCh0aGlzKTsKK30KKworLy8gRGVzdHJ1Y3Rv
ciBvZiBVbml0VGVzdC4KK1VuaXRUZXN0Ojp+VW5pdFRlc3QoKSB7CisgIGRlbGV0ZSBpbXBsXzsK
K30KKworLy8gUHVzaGVzIGEgdHJhY2UgZGVmaW5lZCBieSBTQ09QRURfVFJBQ0UoKSBvbiB0byB0
aGUgcGVyLXRocmVhZAorLy8gR29vZ2xlIFRlc3QgdHJhY2Ugc3RhY2suCit2b2lkIFVuaXRUZXN0
OjpQdXNoR1Rlc3RUcmFjZShjb25zdCBpbnRlcm5hbDo6VHJhY2VJbmZvJiB0cmFjZSkKKyAgICBH
VEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pIHsKKyAgaW50ZXJuYWw6Ok11dGV4TG9jayBsb2Nr
KCZtdXRleF8pOworICBpbXBsXy0+Z3Rlc3RfdHJhY2Vfc3RhY2soKS5wdXNoX2JhY2sodHJhY2Up
OworfQorCisvLyBQb3BzIGEgdHJhY2UgZnJvbSB0aGUgcGVyLXRocmVhZCBHb29nbGUgVGVzdCB0
cmFjZSBzdGFjay4KK3ZvaWQgVW5pdFRlc3Q6OlBvcEdUZXN0VHJhY2UoKQorICAgIEdURVNUX0xP
Q0tfRVhDTFVERURfKG11dGV4XykgeworICBpbnRlcm5hbDo6TXV0ZXhMb2NrIGxvY2soJm11dGV4
Xyk7CisgIGltcGxfLT5ndGVzdF90cmFjZV9zdGFjaygpLnBvcF9iYWNrKCk7Cit9CisKK25hbWVz
cGFjZSBpbnRlcm5hbCB7CisKK1VuaXRUZXN0SW1wbDo6VW5pdFRlc3RJbXBsKFVuaXRUZXN0KiBw
YXJlbnQpCisgICAgOiBwYXJlbnRfKHBhcmVudCksCisgICAgICBHVEVTVF9ESVNBQkxFX01TQ19X
QVJOSU5HU19QVVNIXyg0MzU1IC8qIHVzaW5nIHRoaXMgaW4gaW5pdGlhbGl6ZXIgKi8pCisgICAg
ICBkZWZhdWx0X2dsb2JhbF90ZXN0X3BhcnRfcmVzdWx0X3JlcG9ydGVyXyh0aGlzKSwKKyAgICAg
IGRlZmF1bHRfcGVyX3RocmVhZF90ZXN0X3BhcnRfcmVzdWx0X3JlcG9ydGVyXyh0aGlzKSwKKyAg
ICAgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKQorICAgICAgZ2xvYmFsX3Rlc3Rf
cGFydF9yZXN1bHRfcmVwb3Rlcl8oCisgICAgICAgICAgJmRlZmF1bHRfZ2xvYmFsX3Rlc3RfcGFy
dF9yZXN1bHRfcmVwb3J0ZXJfKSwKKyAgICAgIHBlcl90aHJlYWRfdGVzdF9wYXJ0X3Jlc3VsdF9y
ZXBvcnRlcl8oCisgICAgICAgICAgJmRlZmF1bHRfcGVyX3RocmVhZF90ZXN0X3BhcnRfcmVzdWx0
X3JlcG9ydGVyXyksCisjaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKKyAgICAgIHBhcmFtZXRlcml6
ZWRfdGVzdF9yZWdpc3RyeV8oKSwKKyAgICAgIHBhcmFtZXRlcml6ZWRfdGVzdHNfcmVnaXN0ZXJl
ZF8oZmFsc2UpLAorI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAorICAgICAgbGFzdF9k
ZWF0aF90ZXN0X2Nhc2VfKC0xKSwKKyAgICAgIGN1cnJlbnRfdGVzdF9jYXNlXyhOVUxMKSwKKyAg
ICAgIGN1cnJlbnRfdGVzdF9pbmZvXyhOVUxMKSwKKyAgICAgIGFkX2hvY190ZXN0X3Jlc3VsdF8o
KSwKKyAgICAgIG9zX3N0YWNrX3RyYWNlX2dldHRlcl8oTlVMTCksCisgICAgICBwb3N0X2ZsYWdf
cGFyc2VfaW5pdF9wZXJmb3JtZWRfKGZhbHNlKSwKKyAgICAgIHJhbmRvbV9zZWVkXygwKSwgIC8v
IFdpbGwgYmUgb3ZlcnJpZGRlbiBieSB0aGUgZmxhZyBiZWZvcmUgZmlyc3QgdXNlLgorICAgICAg
cmFuZG9tXygwKSwgIC8vIFdpbGwgYmUgcmVzZWVkZWQgYmVmb3JlIGZpcnN0IHVzZS4KKyAgICAg
IHN0YXJ0X3RpbWVzdGFtcF8oMCksCisgICAgICBlbGFwc2VkX3RpbWVfKDApLAorI2lmIEdURVNU
X0hBU19ERUFUSF9URVNUCisgICAgICBkZWF0aF90ZXN0X2ZhY3RvcnlfKG5ldyBEZWZhdWx0RGVh
dGhUZXN0RmFjdG9yeSksCisjZW5kaWYKKyAgICAgIC8vIFdpbGwgYmUgb3ZlcnJpZGRlbiBieSB0
aGUgZmxhZyBiZWZvcmUgZmlyc3QgdXNlLgorICAgICAgY2F0Y2hfZXhjZXB0aW9uc18oZmFsc2Up
IHsKKyAgbGlzdGVuZXJzKCktPlNldERlZmF1bHRSZXN1bHRQcmludGVyKG5ldyBQcmV0dHlVbml0
VGVzdFJlc3VsdFByaW50ZXIpOworfQorCitVbml0VGVzdEltcGw6On5Vbml0VGVzdEltcGwoKSB7
CisgIC8vIERlbGV0ZXMgZXZlcnkgVGVzdENhc2UuCisgIEZvckVhY2godGVzdF9jYXNlc18sIGlu
dGVybmFsOjpEZWxldGU8VGVzdENhc2U+KTsKKworICAvLyBEZWxldGVzIGV2ZXJ5IEVudmlyb25t
ZW50LgorICBGb3JFYWNoKGVudmlyb25tZW50c18sIGludGVybmFsOjpEZWxldGU8RW52aXJvbm1l
bnQ+KTsKKworICBkZWxldGUgb3Nfc3RhY2tfdHJhY2VfZ2V0dGVyXzsKK30KKworLy8gQWRkcyBh
IFRlc3RQcm9wZXJ0eSB0byB0aGUgY3VycmVudCBUZXN0UmVzdWx0IG9iamVjdCB3aGVuIGludm9r
ZWQgaW4gYQorLy8gY29udGV4dCBvZiBhIHRlc3QsIHRvIGN1cnJlbnQgdGVzdCBjYXNlJ3MgYWRf
aG9jX3Rlc3RfcmVzdWx0IHdoZW4gaW52b2tlCisvLyBmcm9tIFNldFVwVGVzdENhc2UvVGVhckRv
d25UZXN0Q2FzZSwgb3IgdG8gdGhlIGdsb2JhbCBwcm9wZXJ0eSBzZXQKKy8vIG90aGVyd2lzZS4g
IElmIHRoZSByZXN1bHQgYWxyZWFkeSBjb250YWlucyBhIHByb3BlcnR5IHdpdGggdGhlIHNhbWUg
a2V5LAorLy8gdGhlIHZhbHVlIHdpbGwgYmUgdXBkYXRlZC4KK3ZvaWQgVW5pdFRlc3RJbXBsOjpS
ZWNvcmRQcm9wZXJ0eShjb25zdCBUZXN0UHJvcGVydHkmIHRlc3RfcHJvcGVydHkpIHsKKyAgc3Rk
OjpzdHJpbmcgeG1sX2VsZW1lbnQ7CisgIFRlc3RSZXN1bHQqIHRlc3RfcmVzdWx0OyAgLy8gVGVz
dFJlc3VsdCBhcHByb3ByaWF0ZSBmb3IgcHJvcGVydHkgcmVjb3JkaW5nLgorCisgIGlmIChjdXJy
ZW50X3Rlc3RfaW5mb18gIT0gTlVMTCkgeworICAgIHhtbF9lbGVtZW50ID0gInRlc3RjYXNlIjsK
KyAgICB0ZXN0X3Jlc3VsdCA9ICYoY3VycmVudF90ZXN0X2luZm9fLT5yZXN1bHRfKTsKKyAgfSBl
bHNlIGlmIChjdXJyZW50X3Rlc3RfY2FzZV8gIT0gTlVMTCkgeworICAgIHhtbF9lbGVtZW50ID0g
InRlc3RzdWl0ZSI7CisgICAgdGVzdF9yZXN1bHQgPSAmKGN1cnJlbnRfdGVzdF9jYXNlXy0+YWRf
aG9jX3Rlc3RfcmVzdWx0Xyk7CisgIH0gZWxzZSB7CisgICAgeG1sX2VsZW1lbnQgPSAidGVzdHN1
aXRlcyI7CisgICAgdGVzdF9yZXN1bHQgPSAmYWRfaG9jX3Rlc3RfcmVzdWx0XzsKKyAgfQorICB0
ZXN0X3Jlc3VsdC0+UmVjb3JkUHJvcGVydHkoeG1sX2VsZW1lbnQsIHRlc3RfcHJvcGVydHkpOwor
fQorCisjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKKy8vIERpc2FibGVzIGV2ZW50IGZvcndhcmRp
bmcgaWYgdGhlIGNvbnRyb2wgaXMgY3VycmVudGx5IGluIGEgZGVhdGggdGVzdAorLy8gc3VicHJv
Y2Vzcy4gTXVzdCBub3QgYmUgY2FsbGVkIGJlZm9yZSBJbml0R29vZ2xlVGVzdC4KK3ZvaWQgVW5p
dFRlc3RJbXBsOjpTdXBwcmVzc1Rlc3RFdmVudHNJZkluU3VicHJvY2VzcygpIHsKKyAgaWYgKGlu
dGVybmFsX3J1bl9kZWF0aF90ZXN0X2ZsYWdfLmdldCgpICE9IE5VTEwpCisgICAgbGlzdGVuZXJz
KCktPlN1cHByZXNzRXZlbnRGb3J3YXJkaW5nKCk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19E
RUFUSF9URVNUCisKKy8vIEluaXRpYWxpemVzIGV2ZW50IGxpc3RlbmVycyBwZXJmb3JtaW5nIFhN
TCBvdXRwdXQgYXMgc3BlY2lmaWVkIGJ5CisvLyBVbml0VGVzdE9wdGlvbnMuIE11c3Qgbm90IGJl
IGNhbGxlZCBiZWZvcmUgSW5pdEdvb2dsZVRlc3QuCit2b2lkIFVuaXRUZXN0SW1wbDo6Q29uZmln
dXJlWG1sT3V0cHV0KCkgeworICBjb25zdCBzdGQ6OnN0cmluZyYgb3V0cHV0X2Zvcm1hdCA9IFVu
aXRUZXN0T3B0aW9uczo6R2V0T3V0cHV0Rm9ybWF0KCk7CisgIGlmIChvdXRwdXRfZm9ybWF0ID09
ICJ4bWwiKSB7CisgICAgbGlzdGVuZXJzKCktPlNldERlZmF1bHRYbWxHZW5lcmF0b3IobmV3IFht
bFVuaXRUZXN0UmVzdWx0UHJpbnRlcigKKyAgICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNv
bHV0ZVBhdGhUb091dHB1dEZpbGUoKS5jX3N0cigpKSk7CisgIH0gZWxzZSBpZiAob3V0cHV0X2Zv
cm1hdCAhPSAiIikgeworICAgIHByaW50ZigiV0FSTklORzogdW5yZWNvZ25pemVkIG91dHB1dCBm
b3JtYXQgXCIlc1wiIGlnbm9yZWQuXG4iLAorICAgICAgICAgICBvdXRwdXRfZm9ybWF0LmNfc3Ry
KCkpOworICAgIGZmbHVzaChzdGRvdXQpOworICB9Cit9CisKKyNpZiBHVEVTVF9DQU5fU1RSRUFN
X1JFU1VMVFNfCisvLyBJbml0aWFsaXplcyBldmVudCBsaXN0ZW5lcnMgZm9yIHN0cmVhbWluZyB0
ZXN0IHJlc3VsdHMgaW4gc3RyaW5nIGZvcm0uCisvLyBNdXN0IG5vdCBiZSBjYWxsZWQgYmVmb3Jl
IEluaXRHb29nbGVUZXN0Lgordm9pZCBVbml0VGVzdEltcGw6OkNvbmZpZ3VyZVN0cmVhbWluZ091
dHB1dCgpIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcmIHRhcmdldCA9IEdURVNUX0ZMQUcoc3RyZWFt
X3Jlc3VsdF90byk7CisgIGlmICghdGFyZ2V0LmVtcHR5KCkpIHsKKyAgICBjb25zdCBzaXplX3Qg
cG9zID0gdGFyZ2V0LmZpbmQoJzonKTsKKyAgICBpZiAocG9zICE9IHN0ZDo6c3RyaW5nOjpucG9z
KSB7CisgICAgICBsaXN0ZW5lcnMoKS0+QXBwZW5kKG5ldyBTdHJlYW1pbmdMaXN0ZW5lcih0YXJn
ZXQuc3Vic3RyKDAsIHBvcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0YXJnZXQuc3Vic3RyKHBvcysxKSkpOworICAgIH0gZWxzZSB7CisgICAgICBw
cmludGYoIldBUk5JTkc6IHVucmVjb2duaXplZCBzdHJlYW1pbmcgdGFyZ2V0IFwiJXNcIiBpZ25v
cmVkLlxuIiwKKyAgICAgICAgICAgICB0YXJnZXQuY19zdHIoKSk7CisgICAgICBmZmx1c2goc3Rk
b3V0KTsKKyAgICB9CisgIH0KK30KKyNlbmRpZiAgLy8gR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRT
XworCisvLyBQZXJmb3JtcyBpbml0aWFsaXphdGlvbiBkZXBlbmRlbnQgdXBvbiBmbGFnIHZhbHVl
cyBvYnRhaW5lZCBpbgorLy8gUGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5LiAgSXMgY2FsbGVkIGZy
b20gSW5pdEdvb2dsZVRlc3QgYWZ0ZXIgdGhlIGNhbGwgdG8KKy8vIFBhcnNlR29vZ2xlVGVzdEZs
YWdzT25seS4gIEluIGNhc2UgYSB1c2VyIG5lZ2xlY3RzIHRvIGNhbGwgSW5pdEdvb2dsZVRlc3QK
Ky8vIHRoaXMgZnVuY3Rpb24gaXMgYWxzbyBjYWxsZWQgZnJvbSBSdW5BbGxUZXN0cy4gIFNpbmNl
IHRoaXMgZnVuY3Rpb24gY2FuIGJlCisvLyBjYWxsZWQgbW9yZSB0aGFuIG9uY2UsIGl0IGhhcyB0
byBiZSBpZGVtcG90ZW50Lgordm9pZCBVbml0VGVzdEltcGw6OlBvc3RGbGFnUGFyc2luZ0luaXQo
KSB7CisgIC8vIEVuc3VyZXMgdGhhdCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90IGV4ZWN1dGUgbW9y
ZSB0aGFuIG9uY2UuCisgIGlmICghcG9zdF9mbGFnX3BhcnNlX2luaXRfcGVyZm9ybWVkXykgewor
ICAgIHBvc3RfZmxhZ19wYXJzZV9pbml0X3BlcmZvcm1lZF8gPSB0cnVlOworCisjaWYgZGVmaW5l
ZChHVEVTVF9DVVNUT01fVEVTVF9FVkVOVF9MSVNURU5FUl8pCisgICAgLy8gUmVnaXN0ZXIgdG8g
c2VuZCBub3RpZmljYXRpb25zIGFib3V0IGtleSBwcm9jZXNzIHN0YXRlIGNoYW5nZXMuCisgICAg
bGlzdGVuZXJzKCktPkFwcGVuZChuZXcgR1RFU1RfQ1VTVE9NX1RFU1RfRVZFTlRfTElTVEVORVJf
KCkpOworI2VuZGlmICAvLyBkZWZpbmVkKEdURVNUX0NVU1RPTV9URVNUX0VWRU5UX0xJU1RFTkVS
XykKKworI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCisgICAgSW5pdERlYXRoVGVzdFN1YnByb2Nl
c3NDb250cm9sSW5mbygpOworICAgIFN1cHByZXNzVGVzdEV2ZW50c0lmSW5TdWJwcm9jZXNzKCk7
CisjZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUCisKKyAgICAvLyBSZWdpc3RlcnMgcGFy
YW1ldGVyaXplZCB0ZXN0cy4gVGhpcyBtYWtlcyBwYXJhbWV0ZXJpemVkIHRlc3RzCisgICAgLy8g
YXZhaWxhYmxlIHRvIHRoZSBVbml0VGVzdCByZWZsZWN0aW9uIEFQSSB3aXRob3V0IHJ1bm5pbmcK
KyAgICAvLyBSVU5fQUxMX1RFU1RTLgorICAgIFJlZ2lzdGVyUGFyYW1ldGVyaXplZFRlc3RzKCk7
CisKKyAgICAvLyBDb25maWd1cmVzIGxpc3RlbmVycyBmb3IgWE1MIG91dHB1dC4gVGhpcyBtYWtl
cyBpdCBwb3NzaWJsZSBmb3IgdXNlcnMKKyAgICAvLyB0byBzaHV0IGRvd24gdGhlIGRlZmF1bHQg
WE1MIG91dHB1dCBiZWZvcmUgaW52b2tpbmcgUlVOX0FMTF9URVNUUy4KKyAgICBDb25maWd1cmVY
bWxPdXRwdXQoKTsKKworI2lmIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KKyAgICAvLyBDb25m
aWd1cmVzIGxpc3RlbmVycyBmb3Igc3RyZWFtaW5nIHRlc3QgcmVzdWx0cyB0byB0aGUgc3BlY2lm
aWVkIHNlcnZlci4KKyAgICBDb25maWd1cmVTdHJlYW1pbmdPdXRwdXQoKTsKKyNlbmRpZiAgLy8g
R1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXworICB9Cit9CisKKy8vIEEgcHJlZGljYXRlIHRoYXQg
Y2hlY2tzIHRoZSBuYW1lIG9mIGEgVGVzdENhc2UgYWdhaW5zdCBhIGtub3duCisvLyB2YWx1ZS4K
Ky8vCisvLyBUaGlzIGlzIHVzZWQgZm9yIGltcGxlbWVudGF0aW9uIG9mIHRoZSBVbml0VGVzdCBj
bGFzcyBvbmx5LiAgV2UgcHV0CisvLyBpdCBpbiB0aGUgYW5vbnltb3VzIG5hbWVzcGFjZSB0byBw
cmV2ZW50IHBvbGx1dGluZyB0aGUgb3V0ZXIKKy8vIG5hbWVzcGFjZS4KKy8vCisvLyBUZXN0Q2Fz
ZU5hbWVJcyBpcyBjb3B5YWJsZS4KK2NsYXNzIFRlc3RDYXNlTmFtZUlzIHsKKyBwdWJsaWM6Cisg
IC8vIENvbnN0cnVjdG9yLgorICBleHBsaWNpdCBUZXN0Q2FzZU5hbWVJcyhjb25zdCBzdGQ6OnN0
cmluZyYgbmFtZSkKKyAgICAgIDogbmFtZV8obmFtZSkge30KKworICAvLyBSZXR1cm5zIHRydWUg
aWZmIHRoZSBuYW1lIG9mIHRlc3RfY2FzZSBtYXRjaGVzIG5hbWVfLgorICBib29sIG9wZXJhdG9y
KCkoY29uc3QgVGVzdENhc2UqIHRlc3RfY2FzZSkgY29uc3QgeworICAgIHJldHVybiB0ZXN0X2Nh
c2UgIT0gTlVMTCAmJiBzdHJjbXAodGVzdF9jYXNlLT5uYW1lKCksIG5hbWVfLmNfc3RyKCkpID09
IDA7CisgIH0KKworIHByaXZhdGU6CisgIHN0ZDo6c3RyaW5nIG5hbWVfOworfTsKKworLy8gRmlu
ZHMgYW5kIHJldHVybnMgYSBUZXN0Q2FzZSB3aXRoIHRoZSBnaXZlbiBuYW1lLiAgSWYgb25lIGRv
ZXNuJ3QKKy8vIGV4aXN0LCBjcmVhdGVzIG9uZSBhbmQgcmV0dXJucyBpdC4gIEl0J3MgdGhlIENB
TExFUidTCisvLyBSRVNQT05TSUJJTElUWSB0byBlbnN1cmUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlz
IG9ubHkgY2FsbGVkIFdIRU4gVEhFCisvLyBURVNUUyBBUkUgTk9UIFNIVUZGTEVELgorLy8KKy8v
IEFyZ3VtZW50czoKKy8vCisvLyAgIHRlc3RfY2FzZV9uYW1lOiBuYW1lIG9mIHRoZSB0ZXN0IGNh
c2UKKy8vICAgdHlwZV9wYXJhbTogICAgIHRoZSBuYW1lIG9mIHRoZSB0ZXN0IGNhc2UncyB0eXBl
IHBhcmFtZXRlciwgb3IgTlVMTCBpZgorLy8gICAgICAgICAgICAgICAgICAgdGhpcyBpcyBub3Qg
YSB0eXBlZCBvciBhIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0IGNhc2UuCisvLyAgIHNldF91cF90
YzogICAgICBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHNldHMgdXAgdGhlIHRlc3QgY2Fz
ZQorLy8gICB0ZWFyX2Rvd25fdGM6ICAgcG9pbnRlciB0byB0aGUgZnVuY3Rpb24gdGhhdCB0ZWFy
cyBkb3duIHRoZSB0ZXN0IGNhc2UKK1Rlc3RDYXNlKiBVbml0VGVzdEltcGw6OkdldFRlc3RDYXNl
KGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogdHlwZV9wYXJhbSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRlc3Q6OlNldFVwVGVzdENhc2VGdW5jIHNldF91cF90YywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3Q6OlRlYXJEb3duVGVzdENhc2VGdW5jIHRl
YXJfZG93bl90YykgeworICAvLyBDYW4gd2UgZmluZCBhIFRlc3RDYXNlIHdpdGggdGhlIGdpdmVu
IG5hbWU/CisgIGNvbnN0IHN0ZDo6dmVjdG9yPFRlc3RDYXNlKj46OmNvbnN0X2l0ZXJhdG9yIHRl
c3RfY2FzZSA9CisgICAgICBzdGQ6OmZpbmRfaWYodGVzdF9jYXNlc18uYmVnaW4oKSwgdGVzdF9j
YXNlc18uZW5kKCksCisgICAgICAgICAgICAgICAgICAgVGVzdENhc2VOYW1lSXModGVzdF9jYXNl
X25hbWUpKTsKKworICBpZiAodGVzdF9jYXNlICE9IHRlc3RfY2FzZXNfLmVuZCgpKQorICAgIHJl
dHVybiAqdGVzdF9jYXNlOworCisgIC8vIE5vLiAgTGV0J3MgY3JlYXRlIG9uZS4KKyAgVGVzdENh
c2UqIGNvbnN0IG5ld190ZXN0X2Nhc2UgPQorICAgICAgbmV3IFRlc3RDYXNlKHRlc3RfY2FzZV9u
YW1lLCB0eXBlX3BhcmFtLCBzZXRfdXBfdGMsIHRlYXJfZG93bl90Yyk7CisKKyAgLy8gSXMgdGhp
cyBhIGRlYXRoIHRlc3QgY2FzZT8KKyAgaWYgKGludGVybmFsOjpVbml0VGVzdE9wdGlvbnM6Ok1h
dGNoZXNGaWx0ZXIodGVzdF9jYXNlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGtEZWF0aFRlc3RDYXNlRmlsdGVyKSkgeworICAgIC8vIFllcy4g
IEluc2VydHMgdGhlIHRlc3QgY2FzZSBhZnRlciB0aGUgbGFzdCBkZWF0aCB0ZXN0IGNhc2UKKyAg
ICAvLyBkZWZpbmVkIHNvIGZhci4gIFRoaXMgb25seSB3b3JrcyB3aGVuIHRoZSB0ZXN0IGNhc2Vz
IGhhdmVuJ3QKKyAgICAvLyBiZWVuIHNodWZmbGVkLiAgT3RoZXJ3aXNlIHdlIG1heSBlbmQgdXAg
cnVubmluZyBhIGRlYXRoIHRlc3QKKyAgICAvLyBhZnRlciBhIG5vbi1kZWF0aCB0ZXN0LgorICAg
ICsrbGFzdF9kZWF0aF90ZXN0X2Nhc2VfOworICAgIHRlc3RfY2FzZXNfLmluc2VydCh0ZXN0X2Nh
c2VzXy5iZWdpbigpICsgbGFzdF9kZWF0aF90ZXN0X2Nhc2VfLAorICAgICAgICAgICAgICAgICAg
ICAgICBuZXdfdGVzdF9jYXNlKTsKKyAgfSBlbHNlIHsKKyAgICAvLyBOby4gIEFwcGVuZHMgdG8g
dGhlIGVuZCBvZiB0aGUgbGlzdC4KKyAgICB0ZXN0X2Nhc2VzXy5wdXNoX2JhY2sobmV3X3Rlc3Rf
Y2FzZSk7CisgIH0KKworICB0ZXN0X2Nhc2VfaW5kaWNlc18ucHVzaF9iYWNrKHN0YXRpY19jYXN0
PGludD4odGVzdF9jYXNlX2luZGljZXNfLnNpemUoKSkpOworICByZXR1cm4gbmV3X3Rlc3RfY2Fz
ZTsKK30KKworLy8gSGVscGVycyBmb3Igc2V0dGluZyB1cCAvIHRlYXJpbmcgZG93biB0aGUgZ2l2
ZW4gZW52aXJvbm1lbnQuICBUaGV5CisvLyBhcmUgZm9yIHVzZSBpbiB0aGUgRm9yRWFjaCgpIGZ1
bmN0aW9uLgorc3RhdGljIHZvaWQgU2V0VXBFbnZpcm9ubWVudChFbnZpcm9ubWVudCogZW52KSB7
IGVudi0+U2V0VXAoKTsgfQorc3RhdGljIHZvaWQgVGVhckRvd25FbnZpcm9ubWVudChFbnZpcm9u
bWVudCogZW52KSB7IGVudi0+VGVhckRvd24oKTsgfQorCisvLyBSdW5zIGFsbCB0ZXN0cyBpbiB0
aGlzIFVuaXRUZXN0IG9iamVjdCwgcHJpbnRzIHRoZSByZXN1bHQsIGFuZAorLy8gcmV0dXJucyB0
cnVlIGlmIGFsbCB0ZXN0cyBhcmUgc3VjY2Vzc2Z1bC4gIElmIGFueSBleGNlcHRpb24gaXMKKy8v
IHRocm93biBkdXJpbmcgYSB0ZXN0LCB0aGUgdGVzdCBpcyBjb25zaWRlcmVkIHRvIGJlIGZhaWxl
ZCwgYnV0IHRoZQorLy8gcmVzdCBvZiB0aGUgdGVzdHMgd2lsbCBzdGlsbCBiZSBydW4uCisvLwor
Ly8gV2hlbiBwYXJhbWV0ZXJpemVkIHRlc3RzIGFyZSBlbmFibGVkLCBpdCBleHBhbmRzIGFuZCBy
ZWdpc3RlcnMKKy8vIHBhcmFtZXRlcml6ZWQgdGVzdHMgZmlyc3QgaW4gUmVnaXN0ZXJQYXJhbWV0
ZXJpemVkVGVzdHMoKS4KKy8vIEFsbCBvdGhlciBmdW5jdGlvbnMgY2FsbGVkIGZyb20gUnVuQWxs
VGVzdHMoKSBtYXkgc2FmZWx5IGFzc3VtZSB0aGF0CisvLyBwYXJhbWV0ZXJpemVkIHRlc3RzIGFy
ZSByZWFkeSB0byBiZSBjb3VudGVkIGFuZCBydW4uCitib29sIFVuaXRUZXN0SW1wbDo6UnVuQWxs
VGVzdHMoKSB7CisgIC8vIE1ha2VzIHN1cmUgSW5pdEdvb2dsZVRlc3QoKSB3YXMgY2FsbGVkLgor
ICBpZiAoIUdUZXN0SXNJbml0aWFsaXplZCgpKSB7CisgICAgcHJpbnRmKCIlcyIsCisgICAgICAg
ICAgICJcblRoaXMgdGVzdCBwcm9ncmFtIGRpZCBOT1QgY2FsbCA6OnRlc3Rpbmc6OkluaXRHb29n
bGVUZXN0ICIKKyAgICAgICAgICAgImJlZm9yZSBjYWxsaW5nIFJVTl9BTExfVEVTVFMoKS4gIFBs
ZWFzZSBmaXggaXQuXG4iKTsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICAvLyBEbyBub3Qg
cnVuIGFueSB0ZXN0IGlmIHRoZSAtLWhlbHAgZmxhZyB3YXMgc3BlY2lmaWVkLgorICBpZiAoZ19o
ZWxwX2ZsYWcpCisgICAgcmV0dXJuIHRydWU7CisKKyAgLy8gUmVwZWF0cyB0aGUgY2FsbCB0byB0
aGUgcG9zdC1mbGFnIHBhcnNpbmcgaW5pdGlhbGl6YXRpb24gaW4gY2FzZSB0aGUKKyAgLy8gdXNl
ciBkaWRuJ3QgY2FsbCBJbml0R29vZ2xlVGVzdC4KKyAgUG9zdEZsYWdQYXJzaW5nSW5pdCgpOwor
CisgIC8vIEV2ZW4gaWYgc2hhcmRpbmcgaXMgbm90IG9uLCB0ZXN0IHJ1bm5lcnMgbWF5IHdhbnQg
dG8gdXNlIHRoZQorICAvLyBHVEVTVF9TSEFSRF9TVEFUVVNfRklMRSB0byBxdWVyeSB3aGV0aGVy
IHRoZSB0ZXN0IHN1cHBvcnRzIHRoZSBzaGFyZGluZworICAvLyBwcm90b2NvbC4KKyAgaW50ZXJu
YWw6OldyaXRlVG9TaGFyZFN0YXR1c0ZpbGVJZk5lZWRlZCgpOworCisgIC8vIFRydWUgaWZmIHdl
IGFyZSBpbiBhIHN1YnByb2Nlc3MgZm9yIHJ1bm5pbmcgYSB0aHJlYWQtc2FmZS1zdHlsZQorICAv
LyBkZWF0aCB0ZXN0LgorICBib29sIGluX3N1YnByb2Nlc3NfZm9yX2RlYXRoX3Rlc3QgPSBmYWxz
ZTsKKworI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCisgIGluX3N1YnByb2Nlc3NfZm9yX2RlYXRo
X3Rlc3QgPSAoaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3RfZmxhZ18uZ2V0KCkgIT0gTlVMTCk7Cisj
IGlmIGRlZmluZWQoR1RFU1RfRVhUUkFfREVBVEhfVEVTVF9DSElMRF9TRVRVUF8pCisgIGlmIChp
bl9zdWJwcm9jZXNzX2Zvcl9kZWF0aF90ZXN0KSB7CisgICAgR1RFU1RfRVhUUkFfREVBVEhfVEVT
VF9DSElMRF9TRVRVUF8oKTsKKyAgfQorIyBlbmRpZiAgLy8gZGVmaW5lZChHVEVTVF9FWFRSQV9E
RUFUSF9URVNUX0NISUxEX1NFVFVQXykKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QK
KworICBjb25zdCBib29sIHNob3VsZF9zaGFyZCA9IFNob3VsZFNoYXJkKGtUZXN0VG90YWxTaGFy
ZHMsIGtUZXN0U2hhcmRJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbl9zdWJwcm9jZXNzX2Zvcl9kZWF0aF90ZXN0KTsKKworICAvLyBDb21wYXJlcyB0aGUg
ZnVsbCB0ZXN0IG5hbWVzIHdpdGggdGhlIGZpbHRlciB0byBkZWNpZGUgd2hpY2gKKyAgLy8gdGVz
dHMgdG8gcnVuLgorICBjb25zdCBib29sIGhhc190ZXN0c190b19ydW4gPSBGaWx0ZXJUZXN0cyhz
aG91bGRfc2hhcmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA/IEhPTk9SX1NIQVJESU5HX1BST1RPQ09MCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOiBJR05PUkVfU0hBUkRJTkdfUFJPVE9DT0wpID4gMDsKKworICAv
LyBMaXN0cyB0aGUgdGVzdHMgYW5kIGV4aXRzIGlmIHRoZSAtLWd0ZXN0X2xpc3RfdGVzdHMgZmxh
ZyB3YXMgc3BlY2lmaWVkLgorICBpZiAoR1RFU1RfRkxBRyhsaXN0X3Rlc3RzKSkgeworICAgIC8v
IFRoaXMgbXVzdCBiZSBjYWxsZWQgKmFmdGVyKiBGaWx0ZXJUZXN0cygpIGhhcyBiZWVuIGNhbGxl
ZC4KKyAgICBMaXN0VGVzdHNNYXRjaGluZ0ZpbHRlcigpOworICAgIHJldHVybiB0cnVlOworICB9
CisKKyAgcmFuZG9tX3NlZWRfID0gR1RFU1RfRkxBRyhzaHVmZmxlKSA/CisgICAgICBHZXRSYW5k
b21TZWVkRnJvbUZsYWcoR1RFU1RfRkxBRyhyYW5kb21fc2VlZCkpIDogMDsKKworICAvLyBUcnVl
IGlmZiBhdCBsZWFzdCBvbmUgdGVzdCBoYXMgZmFpbGVkLgorICBib29sIGZhaWxlZCA9IGZhbHNl
OworCisgIFRlc3RFdmVudExpc3RlbmVyKiByZXBlYXRlciA9IGxpc3RlbmVycygpLT5yZXBlYXRl
cigpOworCisgIHN0YXJ0X3RpbWVzdGFtcF8gPSBHZXRUaW1lSW5NaWxsaXMoKTsKKyAgcmVwZWF0
ZXItPk9uVGVzdFByb2dyYW1TdGFydCgqcGFyZW50Xyk7CisKKyAgLy8gSG93IG1hbnkgdGltZXMg
dG8gcmVwZWF0IHRoZSB0ZXN0cz8gIFdlIGRvbid0IHdhbnQgdG8gcmVwZWF0IHRoZW0KKyAgLy8g
d2hlbiB3ZSBhcmUgaW5zaWRlIHRoZSBzdWJwcm9jZXNzIG9mIGEgZGVhdGggdGVzdC4KKyAgY29u
c3QgaW50IHJlcGVhdCA9IGluX3N1YnByb2Nlc3NfZm9yX2RlYXRoX3Rlc3QgPyAxIDogR1RFU1Rf
RkxBRyhyZXBlYXQpOworICAvLyBSZXBlYXRzIGZvcmV2ZXIgaWYgdGhlIHJlcGVhdCBjb3VudCBp
cyBuZWdhdGl2ZS4KKyAgY29uc3QgYm9vbCBmb3JldmVyID0gcmVwZWF0IDwgMDsKKyAgZm9yIChp
bnQgaSA9IDA7IGZvcmV2ZXIgfHwgaSAhPSByZXBlYXQ7IGkrKykgeworICAgIC8vIFdlIHdhbnQg
dG8gcHJlc2VydmUgZmFpbHVyZXMgZ2VuZXJhdGVkIGJ5IGFkLWhvYyB0ZXN0CisgICAgLy8gYXNz
ZXJ0aW9ucyBleGVjdXRlZCBiZWZvcmUgUlVOX0FMTF9URVNUUygpLgorICAgIENsZWFyTm9uQWRI
b2NUZXN0UmVzdWx0KCk7CisKKyAgICBjb25zdCBUaW1lSW5NaWxsaXMgc3RhcnQgPSBHZXRUaW1l
SW5NaWxsaXMoKTsKKworICAgIC8vIFNodWZmbGVzIHRlc3QgY2FzZXMgYW5kIHRlc3RzIGlmIHJl
cXVlc3RlZC4KKyAgICBpZiAoaGFzX3Rlc3RzX3RvX3J1biAmJiBHVEVTVF9GTEFHKHNodWZmbGUp
KSB7CisgICAgICByYW5kb20oKS0+UmVzZWVkKHJhbmRvbV9zZWVkXyk7CisgICAgICAvLyBUaGlz
IHNob3VsZCBiZSBkb25lIGJlZm9yZSBjYWxsaW5nIE9uVGVzdEl0ZXJhdGlvblN0YXJ0KCksCisg
ICAgICAvLyBzdWNoIHRoYXQgYSB0ZXN0IGV2ZW50IGxpc3RlbmVyIGNhbiBzZWUgdGhlIGFjdHVh
bCB0ZXN0IG9yZGVyCisgICAgICAvLyBpbiB0aGUgZXZlbnQuCisgICAgICBTaHVmZmxlVGVzdHMo
KTsKKyAgICB9CisKKyAgICAvLyBUZWxscyB0aGUgdW5pdCB0ZXN0IGV2ZW50IGxpc3RlbmVycyB0
aGF0IHRoZSB0ZXN0cyBhcmUgYWJvdXQgdG8gc3RhcnQuCisgICAgcmVwZWF0ZXItPk9uVGVzdEl0
ZXJhdGlvblN0YXJ0KCpwYXJlbnRfLCBpKTsKKworICAgIC8vIFJ1bnMgZWFjaCB0ZXN0IGNhc2Ug
aWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHRlc3QgdG8gcnVuLgorICAgIGlmIChoYXNfdGVzdHNf
dG9fcnVuKSB7CisgICAgICAvLyBTZXRzIHVwIGFsbCBlbnZpcm9ubWVudHMgYmVmb3JlaGFuZC4K
KyAgICAgIHJlcGVhdGVyLT5PbkVudmlyb25tZW50c1NldFVwU3RhcnQoKnBhcmVudF8pOworICAg
ICAgRm9yRWFjaChlbnZpcm9ubWVudHNfLCBTZXRVcEVudmlyb25tZW50KTsKKyAgICAgIHJlcGVh
dGVyLT5PbkVudmlyb25tZW50c1NldFVwRW5kKCpwYXJlbnRfKTsKKworICAgICAgLy8gUnVucyB0
aGUgdGVzdHMgb25seSBpZiB0aGVyZSB3YXMgbm8gZmF0YWwgZmFpbHVyZSBkdXJpbmcgZ2xvYmFs
CisgICAgICAvLyBzZXQtdXAuCisgICAgICBpZiAoIVRlc3Q6Okhhc0ZhdGFsRmFpbHVyZSgpKSB7
CisgICAgICAgIGZvciAoaW50IHRlc3RfaW5kZXggPSAwOyB0ZXN0X2luZGV4IDwgdG90YWxfdGVz
dF9jYXNlX2NvdW50KCk7CisgICAgICAgICAgICAgdGVzdF9pbmRleCsrKSB7CisgICAgICAgICAg
R2V0TXV0YWJsZVRlc3RDYXNlKHRlc3RfaW5kZXgpLT5SdW4oKTsKKyAgICAgICAgfQorICAgICAg
fQorCisgICAgICAvLyBUZWFycyBkb3duIGFsbCBlbnZpcm9ubWVudHMgaW4gcmV2ZXJzZSBvcmRl
ciBhZnRlcndhcmRzLgorICAgICAgcmVwZWF0ZXItPk9uRW52aXJvbm1lbnRzVGVhckRvd25TdGFy
dCgqcGFyZW50Xyk7CisgICAgICBzdGQ6OmZvcl9lYWNoKGVudmlyb25tZW50c18ucmJlZ2luKCks
IGVudmlyb25tZW50c18ucmVuZCgpLAorICAgICAgICAgICAgICAgICAgICBUZWFyRG93bkVudmly
b25tZW50KTsKKyAgICAgIHJlcGVhdGVyLT5PbkVudmlyb25tZW50c1RlYXJEb3duRW5kKCpwYXJl
bnRfKTsKKyAgICB9CisKKyAgICBlbGFwc2VkX3RpbWVfID0gR2V0VGltZUluTWlsbGlzKCkgLSBz
dGFydDsKKworICAgIC8vIFRlbGxzIHRoZSB1bml0IHRlc3QgZXZlbnQgbGlzdGVuZXIgdGhhdCB0
aGUgdGVzdHMgaGF2ZSBqdXN0IGZpbmlzaGVkLgorICAgIHJlcGVhdGVyLT5PblRlc3RJdGVyYXRp
b25FbmQoKnBhcmVudF8sIGkpOworCisgICAgLy8gR2V0cyB0aGUgcmVzdWx0IGFuZCBjbGVhcnMg
aXQuCisgICAgaWYgKCFQYXNzZWQoKSkgeworICAgICAgZmFpbGVkID0gdHJ1ZTsKKyAgICB9CisK
KyAgICAvLyBSZXN0b3JlcyB0aGUgb3JpZ2luYWwgdGVzdCBvcmRlciBhZnRlciB0aGUgaXRlcmF0
aW9uLiAgVGhpcworICAgIC8vIGFsbG93cyB0aGUgdXNlciB0byBxdWlja2x5IHJlcHJvIGEgZmFp
bHVyZSB0aGF0IGhhcHBlbnMgaW4gdGhlCisgICAgLy8gTi10aCBpdGVyYXRpb24gd2l0aG91dCBy
ZXBlYXRpbmcgdGhlIGZpcnN0IChOIC0gMSkgaXRlcmF0aW9ucy4KKyAgICAvLyBUaGlzIGlzIG5v
dCBlbmNsb3NlZCBpbiAiaWYgKEdURVNUX0ZMQUcoc2h1ZmZsZSkpIHsgLi4uIH0iLCBpbgorICAg
IC8vIGNhc2UgdGhlIHVzZXIgc29tZWhvdyBjaGFuZ2VzIHRoZSB2YWx1ZSBvZiB0aGUgZmxhZyBz
b21ld2hlcmUKKyAgICAvLyAoaXQncyBhbHdheXMgc2FmZSB0byB1bnNodWZmbGUgdGhlIHRlc3Rz
KS4KKyAgICBVbnNodWZmbGVUZXN0cygpOworCisgICAgaWYgKEdURVNUX0ZMQUcoc2h1ZmZsZSkp
IHsKKyAgICAgIC8vIFBpY2tzIGEgbmV3IHJhbmRvbSBzZWVkIGZvciBlYWNoIGl0ZXJhdGlvbi4K
KyAgICAgIHJhbmRvbV9zZWVkXyA9IEdldE5leHRSYW5kb21TZWVkKHJhbmRvbV9zZWVkXyk7Cisg
ICAgfQorICB9CisKKyAgcmVwZWF0ZXItPk9uVGVzdFByb2dyYW1FbmQoKnBhcmVudF8pOworCisg
IHJldHVybiAhZmFpbGVkOworfQorCisvLyBSZWFkcyB0aGUgR1RFU1RfU0hBUkRfU1RBVFVTX0ZJ
TEUgZW52aXJvbm1lbnQgdmFyaWFibGUsIGFuZCBjcmVhdGVzIHRoZSBmaWxlCisvLyBpZiB0aGUg
dmFyaWFibGUgaXMgcHJlc2VudC4gSWYgYSBmaWxlIGFscmVhZHkgZXhpc3RzIGF0IHRoaXMgbG9j
YXRpb24sIHRoaXMKKy8vIGZ1bmN0aW9uIHdpbGwgd3JpdGUgb3ZlciBpdC4gSWYgdGhlIHZhcmlh
YmxlIGlzIHByZXNlbnQsIGJ1dCB0aGUgZmlsZSBjYW5ub3QKKy8vIGJlIGNyZWF0ZWQsIHByaW50
cyBhbiBlcnJvciBhbmQgZXhpdHMuCit2b2lkIFdyaXRlVG9TaGFyZFN0YXR1c0ZpbGVJZk5lZWRl
ZCgpIHsKKyAgY29uc3QgY2hhciogY29uc3QgdGVzdF9zaGFyZF9maWxlID0gcG9zaXg6OkdldEVu
dihrVGVzdFNoYXJkU3RhdHVzRmlsZSk7CisgIGlmICh0ZXN0X3NoYXJkX2ZpbGUgIT0gTlVMTCkg
eworICAgIEZJTEUqIGNvbnN0IGZpbGUgPSBwb3NpeDo6Rk9wZW4odGVzdF9zaGFyZF9maWxlLCAi
dyIpOworICAgIGlmIChmaWxlID09IE5VTEwpIHsKKyAgICAgIENvbG9yZWRQcmludGYoQ09MT1Jf
UkVELAorICAgICAgICAgICAgICAgICAgICAiQ291bGQgbm90IHdyaXRlIHRvIHRoZSB0ZXN0IHNo
YXJkIHN0YXR1cyBmaWxlIFwiJXNcIiAiCisgICAgICAgICAgICAgICAgICAgICJzcGVjaWZpZWQg
YnkgdGhlICVzIGVudmlyb25tZW50IHZhcmlhYmxlLlxuIiwKKyAgICAgICAgICAgICAgICAgICAg
dGVzdF9zaGFyZF9maWxlLCBrVGVzdFNoYXJkU3RhdHVzRmlsZSk7CisgICAgICBmZmx1c2goc3Rk
b3V0KTsKKyAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKKyAgICB9CisgICAgZmNsb3NlKGZpbGUp
OworICB9Cit9CisKKy8vIENoZWNrcyB3aGV0aGVyIHNoYXJkaW5nIGlzIGVuYWJsZWQgYnkgZXhh
bWluaW5nIHRoZSByZWxldmFudAorLy8gZW52aXJvbm1lbnQgdmFyaWFibGUgdmFsdWVzLiBJZiB0
aGUgdmFyaWFibGVzIGFyZSBwcmVzZW50LAorLy8gYnV0IGluY29uc2lzdGVudCAoaS5lLiwgc2hh
cmRfaW5kZXggPj0gdG90YWxfc2hhcmRzKSwgcHJpbnRzCisvLyBhbiBlcnJvciBhbmQgZXhpdHMu
IElmIGluX3N1YnByb2Nlc3NfZm9yX2RlYXRoX3Rlc3QsIHNoYXJkaW5nIGlzCisvLyBkaXNhYmxl
ZCBiZWNhdXNlIGl0IG11c3Qgb25seSBiZSBhcHBsaWVkIHRvIHRoZSBvcmlnaW5hbCB0ZXN0Cisv
LyBwcm9jZXNzLiBPdGhlcndpc2UsIHdlIGNvdWxkIGZpbHRlciBvdXQgZGVhdGggdGVzdHMgd2Ug
aW50ZW5kZWQgdG8gZXhlY3V0ZS4KK2Jvb2wgU2hvdWxkU2hhcmQoY29uc3QgY2hhciogdG90YWxf
c2hhcmRzX2VudiwKKyAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogc2hhcmRfaW5kZXhfZW52
LAorICAgICAgICAgICAgICAgICBib29sIGluX3N1YnByb2Nlc3NfZm9yX2RlYXRoX3Rlc3QpIHsK
KyAgaWYgKGluX3N1YnByb2Nlc3NfZm9yX2RlYXRoX3Rlc3QpIHsKKyAgICByZXR1cm4gZmFsc2U7
CisgIH0KKworICBjb25zdCBJbnQzMiB0b3RhbF9zaGFyZHMgPSBJbnQzMkZyb21FbnZPckRpZSh0
b3RhbF9zaGFyZHNfZW52LCAtMSk7CisgIGNvbnN0IEludDMyIHNoYXJkX2luZGV4ID0gSW50MzJG
cm9tRW52T3JEaWUoc2hhcmRfaW5kZXhfZW52LCAtMSk7CisKKyAgaWYgKHRvdGFsX3NoYXJkcyA9
PSAtMSAmJiBzaGFyZF9pbmRleCA9PSAtMSkgeworICAgIHJldHVybiBmYWxzZTsKKyAgfSBlbHNl
IGlmICh0b3RhbF9zaGFyZHMgPT0gLTEgJiYgc2hhcmRfaW5kZXggIT0gLTEpIHsKKyAgICBjb25z
dCBNZXNzYWdlIG1zZyA9IE1lc3NhZ2UoKQorICAgICAgPDwgIkludmFsaWQgZW52aXJvbm1lbnQg
dmFyaWFibGVzOiB5b3UgaGF2ZSAiCisgICAgICA8PCBrVGVzdFNoYXJkSW5kZXggPDwgIiA9ICIg
PDwgc2hhcmRfaW5kZXgKKyAgICAgIDw8ICIsIGJ1dCBoYXZlIGxlZnQgIiA8PCBrVGVzdFRvdGFs
U2hhcmRzIDw8ICIgdW5zZXQuXG4iOworICAgIENvbG9yZWRQcmludGYoQ09MT1JfUkVELCAiJXMi
LCBtc2cuR2V0U3RyaW5nKCkuY19zdHIoKSk7CisgICAgZmZsdXNoKHN0ZG91dCk7CisgICAgZXhp
dChFWElUX0ZBSUxVUkUpOworICB9IGVsc2UgaWYgKHRvdGFsX3NoYXJkcyAhPSAtMSAmJiBzaGFy
ZF9pbmRleCA9PSAtMSkgeworICAgIGNvbnN0IE1lc3NhZ2UgbXNnID0gTWVzc2FnZSgpCisgICAg
ICA8PCAiSW52YWxpZCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6IHlvdSBoYXZlICIKKyAgICAgIDw8
IGtUZXN0VG90YWxTaGFyZHMgPDwgIiA9ICIgPDwgdG90YWxfc2hhcmRzCisgICAgICA8PCAiLCBi
dXQgaGF2ZSBsZWZ0ICIgPDwga1Rlc3RTaGFyZEluZGV4IDw8ICIgdW5zZXQuXG4iOworICAgIENv
bG9yZWRQcmludGYoQ09MT1JfUkVELCAiJXMiLCBtc2cuR2V0U3RyaW5nKCkuY19zdHIoKSk7Cisg
ICAgZmZsdXNoKHN0ZG91dCk7CisgICAgZXhpdChFWElUX0ZBSUxVUkUpOworICB9IGVsc2UgaWYg
KHNoYXJkX2luZGV4IDwgMCB8fCBzaGFyZF9pbmRleCA+PSB0b3RhbF9zaGFyZHMpIHsKKyAgICBj
b25zdCBNZXNzYWdlIG1zZyA9IE1lc3NhZ2UoKQorICAgICAgPDwgIkludmFsaWQgZW52aXJvbm1l
bnQgdmFyaWFibGVzOiB3ZSByZXF1aXJlIDAgPD0gIgorICAgICAgPDwga1Rlc3RTaGFyZEluZGV4
IDw8ICIgPCAiIDw8IGtUZXN0VG90YWxTaGFyZHMKKyAgICAgIDw8ICIsIGJ1dCB5b3UgaGF2ZSAi
IDw8IGtUZXN0U2hhcmRJbmRleCA8PCAiPSIgPDwgc2hhcmRfaW5kZXgKKyAgICAgIDw8ICIsICIg
PDwga1Rlc3RUb3RhbFNoYXJkcyA8PCAiPSIgPDwgdG90YWxfc2hhcmRzIDw8ICIuXG4iOworICAg
IENvbG9yZWRQcmludGYoQ09MT1JfUkVELCAiJXMiLCBtc2cuR2V0U3RyaW5nKCkuY19zdHIoKSk7
CisgICAgZmZsdXNoKHN0ZG91dCk7CisgICAgZXhpdChFWElUX0ZBSUxVUkUpOworICB9CisKKyAg
cmV0dXJuIHRvdGFsX3NoYXJkcyA+IDE7Cit9CisKKy8vIFBhcnNlcyB0aGUgZW52aXJvbm1lbnQg
dmFyaWFibGUgdmFyIGFzIGFuIEludDMyLiBJZiBpdCBpcyB1bnNldCwKKy8vIHJldHVybnMgZGVm
YXVsdF92YWwuIElmIGl0IGlzIG5vdCBhbiBJbnQzMiwgcHJpbnRzIGFuIGVycm9yCisvLyBhbmQg
YWJvcnRzLgorSW50MzIgSW50MzJGcm9tRW52T3JEaWUoY29uc3QgY2hhciogdmFyLCBJbnQzMiBk
ZWZhdWx0X3ZhbCkgeworICBjb25zdCBjaGFyKiBzdHJfdmFsID0gcG9zaXg6OkdldEVudih2YXIp
OworICBpZiAoc3RyX3ZhbCA9PSBOVUxMKSB7CisgICAgcmV0dXJuIGRlZmF1bHRfdmFsOworICB9
CisKKyAgSW50MzIgcmVzdWx0OworICBpZiAoIVBhcnNlSW50MzIoTWVzc2FnZSgpIDw8ICJUaGUg
dmFsdWUgb2YgZW52aXJvbm1lbnQgdmFyaWFibGUgIiA8PCB2YXIsCisgICAgICAgICAgICAgICAg
ICBzdHJfdmFsLCAmcmVzdWx0KSkgeworICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKKyAgfQorICBy
ZXR1cm4gcmVzdWx0OworfQorCisvLyBHaXZlbiB0aGUgdG90YWwgbnVtYmVyIG9mIHNoYXJkcywg
dGhlIHNoYXJkIGluZGV4LCBhbmQgdGhlIHRlc3QgaWQsCisvLyByZXR1cm5zIHRydWUgaWZmIHRo
ZSB0ZXN0IHNob3VsZCBiZSBydW4gb24gdGhpcyBzaGFyZC4gVGhlIHRlc3QgaWQgaXMKKy8vIHNv
bWUgYXJiaXRyYXJ5IGJ1dCB1bmlxdWUgbm9uLW5lZ2F0aXZlIGludGVnZXIgYXNzaWduZWQgdG8g
ZWFjaCB0ZXN0CisvLyBtZXRob2QuIEFzc3VtZXMgdGhhdCAwIDw9IHNoYXJkX2luZGV4IDwgdG90
YWxfc2hhcmRzLgorYm9vbCBTaG91bGRSdW5UZXN0T25TaGFyZChpbnQgdG90YWxfc2hhcmRzLCBp
bnQgc2hhcmRfaW5kZXgsIGludCB0ZXN0X2lkKSB7CisgIHJldHVybiAodGVzdF9pZCAlIHRvdGFs
X3NoYXJkcykgPT0gc2hhcmRfaW5kZXg7Cit9CisKKy8vIENvbXBhcmVzIHRoZSBuYW1lIG9mIGVh
Y2ggdGVzdCB3aXRoIHRoZSB1c2VyLXNwZWNpZmllZCBmaWx0ZXIgdG8KKy8vIGRlY2lkZSB3aGV0
aGVyIHRoZSB0ZXN0IHNob3VsZCBiZSBydW4sIHRoZW4gcmVjb3JkcyB0aGUgcmVzdWx0IGluCisv
LyBlYWNoIFRlc3RDYXNlIGFuZCBUZXN0SW5mbyBvYmplY3QuCisvLyBJZiBzaGFyZF90ZXN0cyA9
PSB0cnVlLCBmdXJ0aGVyIGZpbHRlcnMgdGVzdHMgYmFzZWQgb24gc2hhcmRpbmcKKy8vIHZhcmlh
YmxlcyBpbiB0aGUgZW52aXJvbm1lbnQgLSBzZWUKKy8vIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20v
cC9nb29nbGV0ZXN0L3dpa2kvR29vZ2xlVGVzdEFkdmFuY2VkR3VpZGUuCisvLyBSZXR1cm5zIHRo
ZSBudW1iZXIgb2YgdGVzdHMgdGhhdCBzaG91bGQgcnVuLgoraW50IFVuaXRUZXN0SW1wbDo6Rmls
dGVyVGVzdHMoUmVhY3Rpb25Ub1NoYXJkaW5nIHNoYXJkX3Rlc3RzKSB7CisgIGNvbnN0IEludDMy
IHRvdGFsX3NoYXJkcyA9IHNoYXJkX3Rlc3RzID09IEhPTk9SX1NIQVJESU5HX1BST1RPQ09MID8K
KyAgICAgIEludDMyRnJvbUVudk9yRGllKGtUZXN0VG90YWxTaGFyZHMsIC0xKSA6IC0xOworICBj
b25zdCBJbnQzMiBzaGFyZF9pbmRleCA9IHNoYXJkX3Rlc3RzID09IEhPTk9SX1NIQVJESU5HX1BS
T1RPQ09MID8KKyAgICAgIEludDMyRnJvbUVudk9yRGllKGtUZXN0U2hhcmRJbmRleCwgLTEpIDog
LTE7CisKKyAgLy8gbnVtX3J1bm5hYmxlX3Rlc3RzIGFyZSB0aGUgbnVtYmVyIG9mIHRlc3RzIHRo
YXQgd2lsbAorICAvLyBydW4gYWNyb3NzIGFsbCBzaGFyZHMgKGkuZS4sIG1hdGNoIGZpbHRlciBh
bmQgYXJlIG5vdCBkaXNhYmxlZCkuCisgIC8vIG51bV9zZWxlY3RlZF90ZXN0cyBhcmUgdGhlIG51
bWJlciBvZiB0ZXN0cyB0byBiZSBydW4gb24KKyAgLy8gdGhpcyBzaGFyZC4KKyAgaW50IG51bV9y
dW5uYWJsZV90ZXN0cyA9IDA7CisgIGludCBudW1fc2VsZWN0ZWRfdGVzdHMgPSAwOworICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHRlc3RfY2FzZXNfLnNpemUoKTsgaSsrKSB7CisgICAgVGVzdENh
c2UqIGNvbnN0IHRlc3RfY2FzZSA9IHRlc3RfY2FzZXNfW2ldOworICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nICZ0ZXN0X2Nhc2VfbmFtZSA9IHRlc3RfY2FzZS0+bmFtZSgpOworICAgIHRlc3RfY2FzZS0+
c2V0X3Nob3VsZF9ydW4oZmFsc2UpOworCisgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCB0ZXN0
X2Nhc2UtPnRlc3RfaW5mb19saXN0KCkuc2l6ZSgpOyBqKyspIHsKKyAgICAgIFRlc3RJbmZvKiBj
b25zdCB0ZXN0X2luZm8gPSB0ZXN0X2Nhc2UtPnRlc3RfaW5mb19saXN0KClbal07CisgICAgICBj
b25zdCBzdGQ6OnN0cmluZyB0ZXN0X25hbWUodGVzdF9pbmZvLT5uYW1lKCkpOworICAgICAgLy8g
QSB0ZXN0IGlzIGRpc2FibGVkIGlmIHRlc3QgY2FzZSBuYW1lIG9yIHRlc3QgbmFtZSBtYXRjaGVz
CisgICAgICAvLyBrRGlzYWJsZVRlc3RGaWx0ZXIuCisgICAgICBjb25zdCBib29sIGlzX2Rpc2Fi
bGVkID0KKyAgICAgICAgICBpbnRlcm5hbDo6VW5pdFRlc3RPcHRpb25zOjpNYXRjaGVzRmlsdGVy
KHRlc3RfY2FzZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAga0Rpc2FibGVUZXN0RmlsdGVyKSB8fAorICAgICAgICAgIGludGVybmFsOjpV
bml0VGVzdE9wdGlvbnM6Ok1hdGNoZXNGaWx0ZXIodGVzdF9uYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0Rpc2FibGVUZXN0RmlsdGVyKTsK
KyAgICAgIHRlc3RfaW5mby0+aXNfZGlzYWJsZWRfID0gaXNfZGlzYWJsZWQ7CisKKyAgICAgIGNv
bnN0IGJvb2wgbWF0Y2hlc19maWx0ZXIgPQorICAgICAgICAgIGludGVybmFsOjpVbml0VGVzdE9w
dGlvbnM6OkZpbHRlck1hdGNoZXNUZXN0KHRlc3RfY2FzZV9uYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbmFtZSk7CisgICAg
ICB0ZXN0X2luZm8tPm1hdGNoZXNfZmlsdGVyXyA9IG1hdGNoZXNfZmlsdGVyOworCisgICAgICBj
b25zdCBib29sIGlzX3J1bm5hYmxlID0KKyAgICAgICAgICAoR1RFU1RfRkxBRyhhbHNvX3J1bl9k
aXNhYmxlZF90ZXN0cykgfHwgIWlzX2Rpc2FibGVkKSAmJgorICAgICAgICAgIG1hdGNoZXNfZmls
dGVyOworCisgICAgICBjb25zdCBib29sIGlzX3NlbGVjdGVkID0gaXNfcnVubmFibGUgJiYKKyAg
ICAgICAgICAoc2hhcmRfdGVzdHMgPT0gSUdOT1JFX1NIQVJESU5HX1BST1RPQ09MIHx8CisgICAg
ICAgICAgIFNob3VsZFJ1blRlc3RPblNoYXJkKHRvdGFsX3NoYXJkcywgc2hhcmRfaW5kZXgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bV9ydW5uYWJsZV90ZXN0cykpOworCisg
ICAgICBudW1fcnVubmFibGVfdGVzdHMgKz0gaXNfcnVubmFibGU7CisgICAgICBudW1fc2VsZWN0
ZWRfdGVzdHMgKz0gaXNfc2VsZWN0ZWQ7CisKKyAgICAgIHRlc3RfaW5mby0+c2hvdWxkX3J1bl8g
PSBpc19zZWxlY3RlZDsKKyAgICAgIHRlc3RfY2FzZS0+c2V0X3Nob3VsZF9ydW4odGVzdF9jYXNl
LT5zaG91bGRfcnVuKCkgfHwgaXNfc2VsZWN0ZWQpOworICAgIH0KKyAgfQorICByZXR1cm4gbnVt
X3NlbGVjdGVkX3Rlc3RzOworfQorCisvLyBQcmludHMgdGhlIGdpdmVuIEMtc3RyaW5nIG9uIGEg
c2luZ2xlIGxpbmUgYnkgcmVwbGFjaW5nIGFsbCAnXG4nCisvLyBjaGFyYWN0ZXJzIHdpdGggc3Ry
aW5nICJcXG4iLiAgSWYgdGhlIG91dHB1dCB0YWtlcyBtb3JlIHRoYW4KKy8vIG1heF9sZW5ndGgg
Y2hhcmFjdGVycywgb25seSBwcmludHMgdGhlIGZpcnN0IG1heF9sZW5ndGggY2hhcmFjdGVycwor
Ly8gYW5kICIuLi4iLgorc3RhdGljIHZvaWQgUHJpbnRPbk9uZUxpbmUoY29uc3QgY2hhciogc3Ry
LCBpbnQgbWF4X2xlbmd0aCkgeworICBpZiAoc3RyICE9IE5VTEwpIHsKKyAgICBmb3IgKGludCBp
ID0gMDsgKnN0ciAhPSAnXDAnOyArK3N0cikgeworICAgICAgaWYgKGkgPj0gbWF4X2xlbmd0aCkg
eworICAgICAgICBwcmludGYoIi4uLiIpOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAg
IGlmICgqc3RyID09ICdcbicpIHsKKyAgICAgICAgcHJpbnRmKCJcXG4iKTsKKyAgICAgICAgaSAr
PSAyOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHJpbnRmKCIlYyIsICpzdHIpOworICAgICAg
ICArK2k7CisgICAgICB9CisgICAgfQorICB9Cit9CisKKy8vIFByaW50cyB0aGUgbmFtZXMgb2Yg
dGhlIHRlc3RzIG1hdGNoaW5nIHRoZSB1c2VyLXNwZWNpZmllZCBmaWx0ZXIgZmxhZy4KK3ZvaWQg
VW5pdFRlc3RJbXBsOjpMaXN0VGVzdHNNYXRjaGluZ0ZpbHRlcigpIHsKKyAgLy8gUHJpbnQgYXQg
bW9zdCB0aGlzIG1hbnkgY2hhcmFjdGVycyBmb3IgZWFjaCB0eXBlL3ZhbHVlIHBhcmFtZXRlci4K
KyAgY29uc3QgaW50IGtNYXhQYXJhbUxlbmd0aCA9IDI1MDsKKworICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHRlc3RfY2FzZXNfLnNpemUoKTsgaSsrKSB7CisgICAgY29uc3QgVGVzdENhc2UqIGNv
bnN0IHRlc3RfY2FzZSA9IHRlc3RfY2FzZXNfW2ldOworICAgIGJvb2wgcHJpbnRlZF90ZXN0X2Nh
c2VfbmFtZSA9IGZhbHNlOworCisgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCB0ZXN0X2Nhc2Ut
PnRlc3RfaW5mb19saXN0KCkuc2l6ZSgpOyBqKyspIHsKKyAgICAgIGNvbnN0IFRlc3RJbmZvKiBj
b25zdCB0ZXN0X2luZm8gPQorICAgICAgICAgIHRlc3RfY2FzZS0+dGVzdF9pbmZvX2xpc3QoKVtq
XTsKKyAgICAgIGlmICh0ZXN0X2luZm8tPm1hdGNoZXNfZmlsdGVyXykgeworICAgICAgICBpZiAo
IXByaW50ZWRfdGVzdF9jYXNlX25hbWUpIHsKKyAgICAgICAgICBwcmludGVkX3Rlc3RfY2FzZV9u
YW1lID0gdHJ1ZTsKKyAgICAgICAgICBwcmludGYoIiVzLiIsIHRlc3RfY2FzZS0+bmFtZSgpKTsK
KyAgICAgICAgICBpZiAodGVzdF9jYXNlLT50eXBlX3BhcmFtKCkgIT0gTlVMTCkgeworICAgICAg
ICAgICAgcHJpbnRmKCIgICMgJXMgPSAiLCBrVHlwZVBhcmFtTGFiZWwpOworICAgICAgICAgICAg
Ly8gV2UgcHJpbnQgdGhlIHR5cGUgcGFyYW1ldGVyIG9uIGEgc2luZ2xlIGxpbmUgdG8gbWFrZQor
ICAgICAgICAgICAgLy8gdGhlIG91dHB1dCBlYXN5IHRvIHBhcnNlIGJ5IGEgcHJvZ3JhbS4KKyAg
ICAgICAgICAgIFByaW50T25PbmVMaW5lKHRlc3RfY2FzZS0+dHlwZV9wYXJhbSgpLCBrTWF4UGFy
YW1MZW5ndGgpOworICAgICAgICAgIH0KKyAgICAgICAgICBwcmludGYoIlxuIik7CisgICAgICAg
IH0KKyAgICAgICAgcHJpbnRmKCIgICVzIiwgdGVzdF9pbmZvLT5uYW1lKCkpOworICAgICAgICBp
ZiAodGVzdF9pbmZvLT52YWx1ZV9wYXJhbSgpICE9IE5VTEwpIHsKKyAgICAgICAgICBwcmludGYo
IiAgIyAlcyA9ICIsIGtWYWx1ZVBhcmFtTGFiZWwpOworICAgICAgICAgIC8vIFdlIHByaW50IHRo
ZSB2YWx1ZSBwYXJhbWV0ZXIgb24gYSBzaW5nbGUgbGluZSB0byBtYWtlIHRoZQorICAgICAgICAg
IC8vIG91dHB1dCBlYXN5IHRvIHBhcnNlIGJ5IGEgcHJvZ3JhbS4KKyAgICAgICAgICBQcmludE9u
T25lTGluZSh0ZXN0X2luZm8tPnZhbHVlX3BhcmFtKCksIGtNYXhQYXJhbUxlbmd0aCk7CisgICAg
ICAgIH0KKyAgICAgICAgcHJpbnRmKCJcbiIpOworICAgICAgfQorICAgIH0KKyAgfQorICBmZmx1
c2goc3Rkb3V0KTsKK30KKworLy8gU2V0cyB0aGUgT1Mgc3RhY2sgdHJhY2UgZ2V0dGVyLgorLy8K
Ky8vIERvZXMgbm90aGluZyBpZiB0aGUgaW5wdXQgYW5kIHRoZSBjdXJyZW50IE9TIHN0YWNrIHRy
YWNlIGdldHRlciBhcmUKKy8vIHRoZSBzYW1lOyBvdGhlcndpc2UsIGRlbGV0ZXMgdGhlIG9sZCBn
ZXR0ZXIgYW5kIG1ha2VzIHRoZSBpbnB1dCB0aGUKKy8vIGN1cnJlbnQgZ2V0dGVyLgordm9pZCBV
bml0VGVzdEltcGw6OnNldF9vc19zdGFja190cmFjZV9nZXR0ZXIoCisgICAgT3NTdGFja1RyYWNl
R2V0dGVySW50ZXJmYWNlKiBnZXR0ZXIpIHsKKyAgaWYgKG9zX3N0YWNrX3RyYWNlX2dldHRlcl8g
IT0gZ2V0dGVyKSB7CisgICAgZGVsZXRlIG9zX3N0YWNrX3RyYWNlX2dldHRlcl87CisgICAgb3Nf
c3RhY2tfdHJhY2VfZ2V0dGVyXyA9IGdldHRlcjsKKyAgfQorfQorCisvLyBSZXR1cm5zIHRoZSBj
dXJyZW50IE9TIHN0YWNrIHRyYWNlIGdldHRlciBpZiBpdCBpcyBub3QgTlVMTDsKKy8vIG90aGVy
d2lzZSwgY3JlYXRlcyBhbiBPc1N0YWNrVHJhY2VHZXR0ZXIsIG1ha2VzIGl0IHRoZSBjdXJyZW50
CisvLyBnZXR0ZXIsIGFuZCByZXR1cm5zIGl0LgorT3NTdGFja1RyYWNlR2V0dGVySW50ZXJmYWNl
KiBVbml0VGVzdEltcGw6Om9zX3N0YWNrX3RyYWNlX2dldHRlcigpIHsKKyAgaWYgKG9zX3N0YWNr
X3RyYWNlX2dldHRlcl8gPT0gTlVMTCkgeworI2lmZGVmIEdURVNUX09TX1NUQUNLX1RSQUNFX0dF
VFRFUl8KKyAgICBvc19zdGFja190cmFjZV9nZXR0ZXJfID0gbmV3IEdURVNUX09TX1NUQUNLX1RS
QUNFX0dFVFRFUl87CisjZWxzZQorICAgIG9zX3N0YWNrX3RyYWNlX2dldHRlcl8gPSBuZXcgT3NT
dGFja1RyYWNlR2V0dGVyOworI2VuZGlmICAvLyBHVEVTVF9PU19TVEFDS19UUkFDRV9HRVRURVJf
CisgIH0KKworICByZXR1cm4gb3Nfc3RhY2tfdHJhY2VfZ2V0dGVyXzsKK30KKworLy8gUmV0dXJu
cyB0aGUgVGVzdFJlc3VsdCBmb3IgdGhlIHRlc3QgdGhhdCdzIGN1cnJlbnRseSBydW5uaW5nLCBv
cgorLy8gdGhlIFRlc3RSZXN1bHQgZm9yIHRoZSBhZCBob2MgdGVzdCBpZiBubyB0ZXN0IGlzIHJ1
bm5pbmcuCitUZXN0UmVzdWx0KiBVbml0VGVzdEltcGw6OmN1cnJlbnRfdGVzdF9yZXN1bHQoKSB7
CisgIHJldHVybiBjdXJyZW50X3Rlc3RfaW5mb18gPworICAgICAgJihjdXJyZW50X3Rlc3RfaW5m
b18tPnJlc3VsdF8pIDogJmFkX2hvY190ZXN0X3Jlc3VsdF87Cit9CisKKy8vIFNodWZmbGVzIGFs
bCB0ZXN0IGNhc2VzLCBhbmQgdGhlIHRlc3RzIHdpdGhpbiBlYWNoIHRlc3QgY2FzZSwKKy8vIG1h
a2luZyBzdXJlIHRoYXQgZGVhdGggdGVzdHMgYXJlIHN0aWxsIHJ1biBmaXJzdC4KK3ZvaWQgVW5p
dFRlc3RJbXBsOjpTaHVmZmxlVGVzdHMoKSB7CisgIC8vIFNodWZmbGVzIHRoZSBkZWF0aCB0ZXN0
IGNhc2VzLgorICBTaHVmZmxlUmFuZ2UocmFuZG9tKCksIDAsIGxhc3RfZGVhdGhfdGVzdF9jYXNl
XyArIDEsICZ0ZXN0X2Nhc2VfaW5kaWNlc18pOworCisgIC8vIFNodWZmbGVzIHRoZSBub24tZGVh
dGggdGVzdCBjYXNlcy4KKyAgU2h1ZmZsZVJhbmdlKHJhbmRvbSgpLCBsYXN0X2RlYXRoX3Rlc3Rf
Y2FzZV8gKyAxLAorICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50Pih0ZXN0X2Nhc2VzXy5z
aXplKCkpLCAmdGVzdF9jYXNlX2luZGljZXNfKTsKKworICAvLyBTaHVmZmxlcyB0aGUgdGVzdHMg
aW5zaWRlIGVhY2ggdGVzdCBjYXNlLgorICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRlc3RfY2Fz
ZXNfLnNpemUoKTsgaSsrKSB7CisgICAgdGVzdF9jYXNlc19baV0tPlNodWZmbGVUZXN0cyhyYW5k
b20oKSk7CisgIH0KK30KKworLy8gUmVzdG9yZXMgdGhlIHRlc3QgY2FzZXMgYW5kIHRlc3RzIHRv
IHRoZWlyIG9yZGVyIGJlZm9yZSB0aGUgZmlyc3Qgc2h1ZmZsZS4KK3ZvaWQgVW5pdFRlc3RJbXBs
OjpVbnNodWZmbGVUZXN0cygpIHsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0ZXN0X2Nhc2Vz
Xy5zaXplKCk7IGkrKykgeworICAgIC8vIFVuc2h1ZmZsZXMgdGhlIHRlc3RzIGluIGVhY2ggdGVz
dCBjYXNlLgorICAgIHRlc3RfY2FzZXNfW2ldLT5VbnNodWZmbGVUZXN0cygpOworICAgIC8vIFJl
c2V0cyB0aGUgaW5kZXggb2YgZWFjaCB0ZXN0IGNhc2UuCisgICAgdGVzdF9jYXNlX2luZGljZXNf
W2ldID0gc3RhdGljX2Nhc3Q8aW50PihpKTsKKyAgfQorfQorCisvLyBSZXR1cm5zIHRoZSBjdXJy
ZW50IE9TIHN0YWNrIHRyYWNlIGFzIGFuIHN0ZDo6c3RyaW5nLgorLy8KKy8vIFRoZSBtYXhpbXVt
IG51bWJlciBvZiBzdGFjayBmcmFtZXMgdG8gYmUgaW5jbHVkZWQgaXMgc3BlY2lmaWVkIGJ5Cisv
LyB0aGUgZ3Rlc3Rfc3RhY2tfdHJhY2VfZGVwdGggZmxhZy4gIFRoZSBza2lwX2NvdW50IHBhcmFt
ZXRlcgorLy8gc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgdG9wIGZyYW1lcyB0byBiZSBza2lwcGVk
LCB3aGljaCBkb2Vzbid0CisvLyBjb3VudCBhZ2FpbnN0IHRoZSBudW1iZXIgb2YgZnJhbWVzIHRv
IGJlIGluY2x1ZGVkLgorLy8KKy8vIEZvciBleGFtcGxlLCBpZiBGb28oKSBjYWxscyBCYXIoKSwg
d2hpY2ggaW4gdHVybiBjYWxscworLy8gR2V0Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcCgu
Li4sIDEpLCBGb28oKSB3aWxsIGJlIGluY2x1ZGVkIGluCisvLyB0aGUgdHJhY2UgYnV0IEJhcigp
IGFuZCBHZXRDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKCkgd29uJ3QuCitzdGQ6OnN0cmlu
ZyBHZXRDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKFVuaXRUZXN0KiAvKnVuaXRfdGVzdCov
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2tpcF9j
b3VudCkgeworICAvLyBXZSBwYXNzIHNraXBfY291bnQgKyAxIHRvIHNraXAgdGhpcyB3cmFwcGVy
IGZ1bmN0aW9uIGluIGFkZGl0aW9uCisgIC8vIHRvIHdoYXQgdGhlIHVzZXIgcmVhbGx5IHdhbnRz
IHRvIHNraXAuCisgIHJldHVybiBHZXRVbml0VGVzdEltcGwoKS0+Q3VycmVudE9zU3RhY2tUcmFj
ZUV4Y2VwdFRvcChza2lwX2NvdW50ICsgMSk7Cit9CisKKy8vIFVzZWQgYnkgdGhlIEdURVNUX1NV
UFBSRVNTX1VOUkVBQ0hBQkxFX0NPREVfV0FSTklOR19CRUxPV18gbWFjcm8gdG8KKy8vIHN1cHBy
ZXNzIHVucmVhY2hhYmxlIGNvZGUgd2FybmluZ3MuCituYW1lc3BhY2UgeworY2xhc3MgQ2xhc3NV
bmlxdWVUb0Fsd2F5c1RydWUge307Cit9CisKK2Jvb2wgSXNUcnVlKGJvb2wgY29uZGl0aW9uKSB7
IHJldHVybiBjb25kaXRpb247IH0KKworYm9vbCBBbHdheXNUcnVlKCkgeworI2lmIEdURVNUX0hB
U19FWENFUFRJT05TCisgIC8vIFRoaXMgY29uZGl0aW9uIGlzIGFsd2F5cyBmYWxzZSBzbyBBbHdh
eXNUcnVlKCkgbmV2ZXIgYWN0dWFsbHkgdGhyb3dzLAorICAvLyBidXQgaXQgbWFrZXMgdGhlIGNv
bXBpbGVyIHRoaW5rIHRoYXQgaXQgbWF5IHRocm93LgorICBpZiAoSXNUcnVlKGZhbHNlKSkKKyAg
ICB0aHJvdyBDbGFzc1VuaXF1ZVRvQWx3YXlzVHJ1ZSgpOworI2VuZGlmICAvLyBHVEVTVF9IQVNf
RVhDRVBUSU9OUworICByZXR1cm4gdHJ1ZTsKK30KKworLy8gSWYgKnBzdHIgc3RhcnRzIHdpdGgg
dGhlIGdpdmVuIHByZWZpeCwgbW9kaWZpZXMgKnBzdHIgdG8gYmUgcmlnaHQKKy8vIHBhc3QgdGhl
IHByZWZpeCBhbmQgcmV0dXJucyB0cnVlOyBvdGhlcndpc2UgbGVhdmVzICpwc3RyIHVuY2hhbmdl
ZAorLy8gYW5kIHJldHVybnMgZmFsc2UuICBOb25lIG9mIHBzdHIsICpwc3RyLCBhbmQgcHJlZml4
IGNhbiBiZSBOVUxMLgorYm9vbCBTa2lwUHJlZml4KGNvbnN0IGNoYXIqIHByZWZpeCwgY29uc3Qg
Y2hhcioqIHBzdHIpIHsKKyAgY29uc3Qgc2l6ZV90IHByZWZpeF9sZW4gPSBzdHJsZW4ocHJlZml4
KTsKKyAgaWYgKHN0cm5jbXAoKnBzdHIsIHByZWZpeCwgcHJlZml4X2xlbikgPT0gMCkgeworICAg
ICpwc3RyICs9IHByZWZpeF9sZW47CisgICAgcmV0dXJuIHRydWU7CisgIH0KKyAgcmV0dXJuIGZh
bHNlOworfQorCisvLyBQYXJzZXMgYSBzdHJpbmcgYXMgYSBjb21tYW5kIGxpbmUgZmxhZy4gIFRo
ZSBzdHJpbmcgc2hvdWxkIGhhdmUKKy8vIHRoZSBmb3JtYXQgIi0tZmxhZz12YWx1ZSIuICBXaGVu
IGRlZl9vcHRpb25hbCBpcyB0cnVlLCB0aGUgIj12YWx1ZSIKKy8vIHBhcnQgY2FuIGJlIG9taXR0
ZWQuCisvLworLy8gUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIGZsYWcsIG9yIE5VTEwgaWYgdGhl
IHBhcnNpbmcgZmFpbGVkLgorY29uc3QgY2hhciogUGFyc2VGbGFnVmFsdWUoY29uc3QgY2hhciog
c3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZmxhZywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGVmX29wdGlvbmFsKSB7CisgIC8vIHN0ciBhbmQg
ZmxhZyBtdXN0IG5vdCBiZSBOVUxMLgorICBpZiAoc3RyID09IE5VTEwgfHwgZmxhZyA9PSBOVUxM
KSByZXR1cm4gTlVMTDsKKworICAvLyBUaGUgZmxhZyBtdXN0IHN0YXJ0IHdpdGggIi0tIiBmb2xs
b3dlZCBieSBHVEVTVF9GTEFHX1BSRUZJWF8uCisgIGNvbnN0IHN0ZDo6c3RyaW5nIGZsYWdfc3Ry
ID0gc3RkOjpzdHJpbmcoIi0tIikgKyBHVEVTVF9GTEFHX1BSRUZJWF8gKyBmbGFnOworICBjb25z
dCBzaXplX3QgZmxhZ19sZW4gPSBmbGFnX3N0ci5sZW5ndGgoKTsKKyAgaWYgKHN0cm5jbXAoc3Ry
LCBmbGFnX3N0ci5jX3N0cigpLCBmbGFnX2xlbikgIT0gMCkgcmV0dXJuIE5VTEw7CisKKyAgLy8g
U2tpcHMgdGhlIGZsYWcgbmFtZS4KKyAgY29uc3QgY2hhciogZmxhZ19lbmQgPSBzdHIgKyBmbGFn
X2xlbjsKKworICAvLyBXaGVuIGRlZl9vcHRpb25hbCBpcyB0cnVlLCBpdCdzIE9LIHRvIG5vdCBo
YXZlIGEgIj12YWx1ZSIgcGFydC4KKyAgaWYgKGRlZl9vcHRpb25hbCAmJiAoZmxhZ19lbmRbMF0g
PT0gJ1wwJykpIHsKKyAgICByZXR1cm4gZmxhZ19lbmQ7CisgIH0KKworICAvLyBJZiBkZWZfb3B0
aW9uYWwgaXMgdHJ1ZSBhbmQgdGhlcmUgYXJlIG1vcmUgY2hhcmFjdGVycyBhZnRlciB0aGUKKyAg
Ly8gZmxhZyBuYW1lLCBvciBpZiBkZWZfb3B0aW9uYWwgaXMgZmFsc2UsIHRoZXJlIG11c3QgYmUg
YSAnPScgYWZ0ZXIKKyAgLy8gdGhlIGZsYWcgbmFtZS4KKyAgaWYgKGZsYWdfZW5kWzBdICE9ICc9
JykgcmV0dXJuIE5VTEw7CisKKyAgLy8gUmV0dXJucyB0aGUgc3RyaW5nIGFmdGVyICI9Ii4KKyAg
cmV0dXJuIGZsYWdfZW5kICsgMTsKK30KKworLy8gUGFyc2VzIGEgc3RyaW5nIGZvciBhIGJvb2wg
ZmxhZywgaW4gdGhlIGZvcm0gb2YgZWl0aGVyCisvLyAiLS1mbGFnPXZhbHVlIiBvciAiLS1mbGFn
Ii4KKy8vCisvLyBJbiB0aGUgZm9ybWVyIGNhc2UsIHRoZSB2YWx1ZSBpcyB0YWtlbiBhcyB0cnVl
IGFzIGxvbmcgYXMgaXQgZG9lcworLy8gbm90IHN0YXJ0IHdpdGggJzAnLCAnZicsIG9yICdGJy4K
Ky8vCisvLyBJbiB0aGUgbGF0dGVyIGNhc2UsIHRoZSB2YWx1ZSBpcyB0YWtlbiBhcyB0cnVlLgor
Ly8KKy8vIE9uIHN1Y2Nlc3MsIHN0b3JlcyB0aGUgdmFsdWUgb2YgdGhlIGZsYWcgaW4gKnZhbHVl
LCBhbmQgcmV0dXJucworLy8gdHJ1ZS4gIE9uIGZhaWx1cmUsIHJldHVybnMgZmFsc2Ugd2l0aG91
dCBjaGFuZ2luZyAqdmFsdWUuCitib29sIFBhcnNlQm9vbEZsYWcoY29uc3QgY2hhciogc3RyLCBj
b25zdCBjaGFyKiBmbGFnLCBib29sKiB2YWx1ZSkgeworICAvLyBHZXRzIHRoZSB2YWx1ZSBvZiB0
aGUgZmxhZyBhcyBhIHN0cmluZy4KKyAgY29uc3QgY2hhciogY29uc3QgdmFsdWVfc3RyID0gUGFy
c2VGbGFnVmFsdWUoc3RyLCBmbGFnLCB0cnVlKTsKKworICAvLyBBYm9ydHMgaWYgdGhlIHBhcnNp
bmcgZmFpbGVkLgorICBpZiAodmFsdWVfc3RyID09IE5VTEwpIHJldHVybiBmYWxzZTsKKworICAv
LyBDb252ZXJ0cyB0aGUgc3RyaW5nIHZhbHVlIHRvIGEgYm9vbC4KKyAgKnZhbHVlID0gISgqdmFs
dWVfc3RyID09ICcwJyB8fCAqdmFsdWVfc3RyID09ICdmJyB8fCAqdmFsdWVfc3RyID09ICdGJyk7
CisgIHJldHVybiB0cnVlOworfQorCisvLyBQYXJzZXMgYSBzdHJpbmcgZm9yIGFuIEludDMyIGZs
YWcsIGluIHRoZSBmb3JtIG9mCisvLyAiLS1mbGFnPXZhbHVlIi4KKy8vCisvLyBPbiBzdWNjZXNz
LCBzdG9yZXMgdGhlIHZhbHVlIG9mIHRoZSBmbGFnIGluICp2YWx1ZSwgYW5kIHJldHVybnMKKy8v
IHRydWUuICBPbiBmYWlsdXJlLCByZXR1cm5zIGZhbHNlIHdpdGhvdXQgY2hhbmdpbmcgKnZhbHVl
LgorYm9vbCBQYXJzZUludDMyRmxhZyhjb25zdCBjaGFyKiBzdHIsIGNvbnN0IGNoYXIqIGZsYWcs
IEludDMyKiB2YWx1ZSkgeworICAvLyBHZXRzIHRoZSB2YWx1ZSBvZiB0aGUgZmxhZyBhcyBhIHN0
cmluZy4KKyAgY29uc3QgY2hhciogY29uc3QgdmFsdWVfc3RyID0gUGFyc2VGbGFnVmFsdWUoc3Ry
LCBmbGFnLCBmYWxzZSk7CisKKyAgLy8gQWJvcnRzIGlmIHRoZSBwYXJzaW5nIGZhaWxlZC4KKyAg
aWYgKHZhbHVlX3N0ciA9PSBOVUxMKSByZXR1cm4gZmFsc2U7CisKKyAgLy8gU2V0cyAqdmFsdWUg
dG8gdGhlIHZhbHVlIG9mIHRoZSBmbGFnLgorICByZXR1cm4gUGFyc2VJbnQzMihNZXNzYWdlKCkg
PDwgIlRoZSB2YWx1ZSBvZiBmbGFnIC0tIiA8PCBmbGFnLAorICAgICAgICAgICAgICAgICAgICB2
YWx1ZV9zdHIsIHZhbHVlKTsKK30KKworLy8gUGFyc2VzIGEgc3RyaW5nIGZvciBhIHN0cmluZyBm
bGFnLCBpbiB0aGUgZm9ybSBvZgorLy8gIi0tZmxhZz12YWx1ZSIuCisvLworLy8gT24gc3VjY2Vz
cywgc3RvcmVzIHRoZSB2YWx1ZSBvZiB0aGUgZmxhZyBpbiAqdmFsdWUsIGFuZCByZXR1cm5zCisv
LyB0cnVlLiAgT24gZmFpbHVyZSwgcmV0dXJucyBmYWxzZSB3aXRob3V0IGNoYW5naW5nICp2YWx1
ZS4KK2Jvb2wgUGFyc2VTdHJpbmdGbGFnKGNvbnN0IGNoYXIqIHN0ciwgY29uc3QgY2hhciogZmxh
Zywgc3RkOjpzdHJpbmcqIHZhbHVlKSB7CisgIC8vIEdldHMgdGhlIHZhbHVlIG9mIHRoZSBmbGFn
IGFzIGEgc3RyaW5nLgorICBjb25zdCBjaGFyKiBjb25zdCB2YWx1ZV9zdHIgPSBQYXJzZUZsYWdW
YWx1ZShzdHIsIGZsYWcsIGZhbHNlKTsKKworICAvLyBBYm9ydHMgaWYgdGhlIHBhcnNpbmcgZmFp
bGVkLgorICBpZiAodmFsdWVfc3RyID09IE5VTEwpIHJldHVybiBmYWxzZTsKKworICAvLyBTZXRz
ICp2YWx1ZSB0byB0aGUgdmFsdWUgb2YgdGhlIGZsYWcuCisgICp2YWx1ZSA9IHZhbHVlX3N0cjsK
KyAgcmV0dXJuIHRydWU7Cit9CisKKy8vIERldGVybWluZXMgd2hldGhlciBhIHN0cmluZyBoYXMg
YSBwcmVmaXggdGhhdCBHb29nbGUgVGVzdCB1c2VzIGZvciBpdHMKKy8vIGZsYWdzLCBpLmUuLCBz
dGFydHMgd2l0aCBHVEVTVF9GTEFHX1BSRUZJWF8gb3IgR1RFU1RfRkxBR19QUkVGSVhfREFTSF8u
CisvLyBJZiBHb29nbGUgVGVzdCBkZXRlY3RzIHRoYXQgYSBjb21tYW5kIGxpbmUgZmxhZyBoYXMg
aXRzIHByZWZpeCBidXQgaXMgbm90CisvLyByZWNvZ25pemVkLCBpdCB3aWxsIHByaW50IGl0cyBo
ZWxwIG1lc3NhZ2UuIEZsYWdzIHN0YXJ0aW5nIHdpdGgKKy8vIEdURVNUX0lOVEVSTkFMX1BSRUZJ
WF8gZm9sbG93ZWQgYnkgImludGVybmFsXyIgYXJlIGNvbnNpZGVyZWQgR29vZ2xlIFRlc3QKKy8v
IGludGVybmFsIGZsYWdzIGFuZCBkbyBub3QgdHJpZ2dlciB0aGUgaGVscCBtZXNzYWdlLgorc3Rh
dGljIGJvb2wgSGFzR29vZ2xlVGVzdEZsYWdQcmVmaXgoY29uc3QgY2hhciogc3RyKSB7CisgIHJl
dHVybiAoU2tpcFByZWZpeCgiLS0iLCAmc3RyKSB8fAorICAgICAgICAgIFNraXBQcmVmaXgoIi0i
LCAmc3RyKSB8fAorICAgICAgICAgIFNraXBQcmVmaXgoIi8iLCAmc3RyKSkgJiYKKyAgICAgICAg
ICFTa2lwUHJlZml4KEdURVNUX0ZMQUdfUFJFRklYXyAiaW50ZXJuYWxfIiwgJnN0cikgJiYKKyAg
ICAgICAgIChTa2lwUHJlZml4KEdURVNUX0ZMQUdfUFJFRklYXywgJnN0cikgfHwKKyAgICAgICAg
ICBTa2lwUHJlZml4KEdURVNUX0ZMQUdfUFJFRklYX0RBU0hfLCAmc3RyKSk7Cit9CisKKy8vIFBy
aW50cyBhIHN0cmluZyBjb250YWluaW5nIGNvZGUtZW5jb2RlZCB0ZXh0LiAgVGhlIGZvbGxvd2lu
ZyBlc2NhcGUKKy8vIHNlcXVlbmNlcyBjYW4gYmUgdXNlZCBpbiB0aGUgc3RyaW5nIHRvIGNvbnRy
b2wgdGhlIHRleHQgY29sb3I6CisvLworLy8gICBAQCAgICBwcmludHMgYSBzaW5nbGUgJ0AnIGNo
YXJhY3Rlci4KKy8vICAgQFIgICAgY2hhbmdlcyB0aGUgY29sb3IgdG8gcmVkLgorLy8gICBARyAg
ICBjaGFuZ2VzIHRoZSBjb2xvciB0byBncmVlbi4KKy8vICAgQFkgICAgY2hhbmdlcyB0aGUgY29s
b3IgdG8geWVsbG93LgorLy8gICBARCAgICBjaGFuZ2VzIHRvIHRoZSBkZWZhdWx0IHRlcm1pbmFs
IHRleHQgY29sb3IuCisvLworLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IFdyaXRlIHRlc3RzIGZv
ciB0aGlzIG9uY2Ugd2UgYWRkIHN0ZG91dAorLy8gY2FwdHVyaW5nIHRvIEdvb2dsZSBUZXN0Lgor
c3RhdGljIHZvaWQgUHJpbnRDb2xvckVuY29kZWQoY29uc3QgY2hhciogc3RyKSB7CisgIEdUZXN0
Q29sb3IgY29sb3IgPSBDT0xPUl9ERUZBVUxUOyAgLy8gVGhlIGN1cnJlbnQgY29sb3IuCisKKyAg
Ly8gQ29uY2VwdHVhbGx5LCB3ZSBzcGxpdCB0aGUgc3RyaW5nIGludG8gc2VnbWVudHMgZGl2aWRl
ZCBieSBlc2NhcGUKKyAgLy8gc2VxdWVuY2VzLiAgVGhlbiB3ZSBwcmludCBvbmUgc2VnbWVudCBh
dCBhIHRpbWUuICBBdCB0aGUgZW5kIG9mCisgIC8vIGVhY2ggaXRlcmF0aW9uLCB0aGUgc3RyIHBv
aW50ZXIgYWR2YW5jZXMgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUKKyAgLy8gbmV4dCBzZWdtZW50
LgorICBmb3IgKDs7KSB7CisgICAgY29uc3QgY2hhciogcCA9IHN0cmNocihzdHIsICdAJyk7Cisg
ICAgaWYgKHAgPT0gTlVMTCkgeworICAgICAgQ29sb3JlZFByaW50Zihjb2xvciwgIiVzIiwgc3Ry
KTsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBDb2xvcmVkUHJpbnRmKGNvbG9yLCAiJXMi
LCBzdGQ6OnN0cmluZyhzdHIsIHApLmNfc3RyKCkpOworCisgICAgY29uc3QgY2hhciBjaCA9IHBb
MV07CisgICAgc3RyID0gcCArIDI7CisgICAgaWYgKGNoID09ICdAJykgeworICAgICAgQ29sb3Jl
ZFByaW50Zihjb2xvciwgIkAiKTsKKyAgICB9IGVsc2UgaWYgKGNoID09ICdEJykgeworICAgICAg
Y29sb3IgPSBDT0xPUl9ERUZBVUxUOworICAgIH0gZWxzZSBpZiAoY2ggPT0gJ1InKSB7CisgICAg
ICBjb2xvciA9IENPTE9SX1JFRDsKKyAgICB9IGVsc2UgaWYgKGNoID09ICdHJykgeworICAgICAg
Y29sb3IgPSBDT0xPUl9HUkVFTjsKKyAgICB9IGVsc2UgaWYgKGNoID09ICdZJykgeworICAgICAg
Y29sb3IgPSBDT0xPUl9ZRUxMT1c7CisgICAgfSBlbHNlIHsKKyAgICAgIC0tc3RyOworICAgIH0K
KyAgfQorfQorCitzdGF0aWMgY29uc3QgY2hhciBrQ29sb3JFbmNvZGVkSGVscE1lc3NhZ2VbXSA9
CisiVGhpcyBwcm9ncmFtIGNvbnRhaW5zIHRlc3RzIHdyaXR0ZW4gdXNpbmcgIiBHVEVTVF9OQU1F
XyAiLiBZb3UgY2FuIHVzZSB0aGVcbiIKKyJmb2xsb3dpbmcgY29tbWFuZCBsaW5lIGZsYWdzIHRv
IGNvbnRyb2wgaXRzIGJlaGF2aW9yOlxuIgorIlxuIgorIlRlc3QgU2VsZWN0aW9uOlxuIgorIiAg
QEctLSIgR1RFU1RfRkxBR19QUkVGSVhfICJsaXN0X3Rlc3RzQERcbiIKKyIgICAgICBMaXN0IHRo
ZSBuYW1lcyBvZiBhbGwgdGVzdHMgaW5zdGVhZCBvZiBydW5uaW5nIHRoZW0uIFRoZSBuYW1lIG9m
XG4iCisiICAgICAgVEVTVChGb28sIEJhcikgaXMgXCJGb28uQmFyXCIuXG4iCisiICBARy0tIiBH
VEVTVF9GTEFHX1BSRUZJWF8gImZpbHRlcj1AWVBPU1RJVkVfUEFUVEVSTlMiCisgICAgIltARy1A
WU5FR0FUSVZFX1BBVFRFUk5TXUBEXG4iCisiICAgICAgUnVuIG9ubHkgdGhlIHRlc3RzIHdob3Nl
IG5hbWUgbWF0Y2hlcyBvbmUgb2YgdGhlIHBvc2l0aXZlIHBhdHRlcm5zIGJ1dFxuIgorIiAgICAg
IG5vbmUgb2YgdGhlIG5lZ2F0aXZlIHBhdHRlcm5zLiAnPycgbWF0Y2hlcyBhbnkgc2luZ2xlIGNo
YXJhY3RlcjsgJyonXG4iCisiICAgICAgbWF0Y2hlcyBhbnkgc3Vic3RyaW5nOyAnOicgc2VwYXJh
dGVzIHR3byBwYXR0ZXJucy5cbiIKKyIgIEBHLS0iIEdURVNUX0ZMQUdfUFJFRklYXyAiYWxzb19y
dW5fZGlzYWJsZWRfdGVzdHNARFxuIgorIiAgICAgIFJ1biBhbGwgZGlzYWJsZWQgdGVzdHMgdG9v
LlxuIgorIlxuIgorIlRlc3QgRXhlY3V0aW9uOlxuIgorIiAgQEctLSIgR1RFU1RfRkxBR19QUkVG
SVhfICJyZXBlYXQ9QFlbQ09VTlRdQERcbiIKKyIgICAgICBSdW4gdGhlIHRlc3RzIHJlcGVhdGVk
bHk7IHVzZSBhIG5lZ2F0aXZlIGNvdW50IHRvIHJlcGVhdCBmb3JldmVyLlxuIgorIiAgQEctLSIg
R1RFU1RfRkxBR19QUkVGSVhfICJzaHVmZmxlQERcbiIKKyIgICAgICBSYW5kb21pemUgdGVzdHMn
IG9yZGVycyBvbiBldmVyeSBpdGVyYXRpb24uXG4iCisiICBARy0tIiBHVEVTVF9GTEFHX1BSRUZJ
WF8gInJhbmRvbV9zZWVkPUBZW05VTUJFUl1ARFxuIgorIiAgICAgIFJhbmRvbSBudW1iZXIgc2Vl
ZCB0byB1c2UgZm9yIHNodWZmbGluZyB0ZXN0IG9yZGVycyAoYmV0d2VlbiAxIGFuZFxuIgorIiAg
ICAgIDk5OTk5LCBvciAwIHRvIHVzZSBhIHNlZWQgYmFzZWQgb24gdGhlIGN1cnJlbnQgdGltZSku
XG4iCisiXG4iCisiVGVzdCBPdXRwdXQ6XG4iCisiICBARy0tIiBHVEVTVF9GTEFHX1BSRUZJWF8g
ImNvbG9yPUBZKEBHeWVzQFl8QEdub0BZfEBHYXV0b0BZKUBEXG4iCisiICAgICAgRW5hYmxlL2Rp
c2FibGUgY29sb3JlZCBvdXRwdXQuIFRoZSBkZWZhdWx0IGlzIEBHYXV0b0BELlxuIgorIiAgLUBH
LSIgR1RFU1RfRkxBR19QUkVGSVhfICJwcmludF90aW1lPTBARFxuIgorIiAgICAgIERvbid0IHBy
aW50IHRoZSBlbGFwc2VkIHRpbWUgb2YgZWFjaCB0ZXN0LlxuIgorIiAgQEctLSIgR1RFU1RfRkxB
R19QUkVGSVhfICJvdXRwdXQ9eG1sQFlbQEc6QFlESVJFQ1RPUllfUEFUSEBHIgorICAgIEdURVNU
X1BBVEhfU0VQXyAiQFl8QEc6QFlGSUxFX1BBVEhdQERcbiIKKyIgICAgICBHZW5lcmF0ZSBhbiBY
TUwgcmVwb3J0IGluIHRoZSBnaXZlbiBkaXJlY3Rvcnkgb3Igd2l0aCB0aGUgZ2l2ZW4gZmlsZVxu
IgorIiAgICAgIG5hbWUuIEBZRklMRV9QQVRIQEQgZGVmYXVsdHMgdG8gQEd0ZXN0X2RldGFpbHMu
eG1sQEQuXG4iCisjaWYgR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXworIiAgQEctLSIgR1RFU1Rf
RkxBR19QUkVGSVhfICJzdHJlYW1fcmVzdWx0X3RvPUBZSE9TVEBHOkBZUE9SVEBEXG4iCisiICAg
ICAgU3RyZWFtIHRlc3QgcmVzdWx0cyB0byB0aGUgZ2l2ZW4gc2VydmVyLlxuIgorI2VuZGlmICAv
LyBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfCisiXG4iCisiQXNzZXJ0aW9uIEJlaGF2aW9yOlxu
IgorI2lmIEdURVNUX0hBU19ERUFUSF9URVNUICYmICFHVEVTVF9PU19XSU5ET1dTCisiICBARy0t
IiBHVEVTVF9GTEFHX1BSRUZJWF8gImRlYXRoX3Rlc3Rfc3R5bGU9QFkoQEdmYXN0QFl8QEd0aHJl
YWRzYWZlQFkpQERcbiIKKyIgICAgICBTZXQgdGhlIGRlZmF1bHQgZGVhdGggdGVzdCBzdHlsZS5c
biIKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QgJiYgIUdURVNUX09TX1dJTkRPV1MK
KyIgIEBHLS0iIEdURVNUX0ZMQUdfUFJFRklYXyAiYnJlYWtfb25fZmFpbHVyZUBEXG4iCisiICAg
ICAgVHVybiBhc3NlcnRpb24gZmFpbHVyZXMgaW50byBkZWJ1Z2dlciBicmVhay1wb2ludHMuXG4i
CisiICBARy0tIiBHVEVTVF9GTEFHX1BSRUZJWF8gInRocm93X29uX2ZhaWx1cmVARFxuIgorIiAg
ICAgIFR1cm4gYXNzZXJ0aW9uIGZhaWx1cmVzIGludG8gQysrIGV4Y2VwdGlvbnMuXG4iCisiICBA
Ry0tIiBHVEVTVF9GTEFHX1BSRUZJWF8gImNhdGNoX2V4Y2VwdGlvbnM9MEBEXG4iCisiICAgICAg
RG8gbm90IHJlcG9ydCBleGNlcHRpb25zIGFzIHRlc3QgZmFpbHVyZXMuIEluc3RlYWQsIGFsbG93
IHRoZW1cbiIKKyIgICAgICB0byBjcmFzaCB0aGUgcHJvZ3JhbSBvciB0aHJvdyBhIHBvcC11cCAo
b24gV2luZG93cykuXG4iCisiXG4iCisiRXhjZXB0IGZvciBARy0tIiBHVEVTVF9GTEFHX1BSRUZJ
WF8gImxpc3RfdGVzdHNARCwgeW91IGNhbiBhbHRlcm5hdGl2ZWx5IHNldCAiCisgICAgInRoZSBj
b3JyZXNwb25kaW5nXG4iCisiZW52aXJvbm1lbnQgdmFyaWFibGUgb2YgYSBmbGFnIChhbGwgbGV0
dGVycyBpbiB1cHBlci1jYXNlKS4gRm9yIGV4YW1wbGUsIHRvXG4iCisiZGlzYWJsZSBjb2xvcmVk
IHRleHQgb3V0cHV0LCB5b3UgY2FuIGVpdGhlciBzcGVjaWZ5IEBHLS0iIEdURVNUX0ZMQUdfUFJF
RklYXworICAgICJjb2xvcj1ub0BEIG9yIHNldFxuIgorInRoZSBARyIgR1RFU1RfRkxBR19QUkVG
SVhfVVBQRVJfICJDT0xPUkBEIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIEBHbm9ARC5cbiIKKyJc
biIKKyJGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHJlYWQgdGhlICIgR1RFU1RfTkFNRV8g
IiBkb2N1bWVudGF0aW9uIGF0XG4iCisiQEciIEdURVNUX1BST0pFQ1RfVVJMXyAiQEQuIElmIHlv
dSBmaW5kIGEgYnVnIGluICIgR1RFU1RfTkFNRV8gIlxuIgorIihub3Qgb25lIGluIHlvdXIgb3du
IGNvZGUgb3IgdGVzdHMpLCBwbGVhc2UgcmVwb3J0IGl0IHRvXG4iCisiQEc8IiBHVEVTVF9ERVZf
RU1BSUxfICI+QEQuXG4iOworCitib29sIFBhcnNlR29vZ2xlVGVzdEZsYWcoY29uc3QgY2hhciog
Y29uc3QgYXJnKSB7CisgIHJldHVybiBQYXJzZUJvb2xGbGFnKGFyZywga0Fsc29SdW5EaXNhYmxl
ZFRlc3RzRmxhZywKKyAgICAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUcoYWxzb19ydW5f
ZGlzYWJsZWRfdGVzdHMpKSB8fAorICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtCcmVha09uRmFp
bHVyZUZsYWcsCisgICAgICAgICAgICAgICAgICAgICZHVEVTVF9GTEFHKGJyZWFrX29uX2ZhaWx1
cmUpKSB8fAorICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtDYXRjaEV4Y2VwdGlvbnNGbGFnLAor
ICAgICAgICAgICAgICAgICAgICAmR1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSkgfHwKKyAg
ICAgIFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtDb2xvckZsYWcsICZHVEVTVF9GTEFHKGNvbG9yKSkg
fHwKKyAgICAgIFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtEZWF0aFRlc3RTdHlsZUZsYWcsCisgICAg
ICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkpIHx8CisgICAg
ICBQYXJzZUJvb2xGbGFnKGFyZywga0RlYXRoVGVzdFVzZUZvcmssCisgICAgICAgICAgICAgICAg
ICAgICZHVEVTVF9GTEFHKGRlYXRoX3Rlc3RfdXNlX2ZvcmspKSB8fAorICAgICAgUGFyc2VTdHJp
bmdGbGFnKGFyZywga0ZpbHRlckZsYWcsICZHVEVTVF9GTEFHKGZpbHRlcikpIHx8CisgICAgICBQ
YXJzZVN0cmluZ0ZsYWcoYXJnLCBrSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnLAorICAgICAgICAg
ICAgICAgICAgICAgICZHVEVTVF9GTEFHKGludGVybmFsX3J1bl9kZWF0aF90ZXN0KSkgfHwKKyAg
ICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBrTGlzdFRlc3RzRmxhZywgJkdURVNUX0ZMQUcobGlzdF90
ZXN0cykpIHx8CisgICAgICBQYXJzZVN0cmluZ0ZsYWcoYXJnLCBrT3V0cHV0RmxhZywgJkdURVNU
X0ZMQUcob3V0cHV0KSkgfHwKKyAgICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBrUHJpbnRUaW1lRmxh
ZywgJkdURVNUX0ZMQUcocHJpbnRfdGltZSkpIHx8CisgICAgICBQYXJzZUludDMyRmxhZyhhcmcs
IGtSYW5kb21TZWVkRmxhZywgJkdURVNUX0ZMQUcocmFuZG9tX3NlZWQpKSB8fAorICAgICAgUGFy
c2VJbnQzMkZsYWcoYXJnLCBrUmVwZWF0RmxhZywgJkdURVNUX0ZMQUcocmVwZWF0KSkgfHwKKyAg
ICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBrU2h1ZmZsZUZsYWcsICZHVEVTVF9GTEFHKHNodWZmbGUp
KSB8fAorICAgICAgUGFyc2VJbnQzMkZsYWcoYXJnLCBrU3RhY2tUcmFjZURlcHRoRmxhZywKKyAg
ICAgICAgICAgICAgICAgICAgICZHVEVTVF9GTEFHKHN0YWNrX3RyYWNlX2RlcHRoKSkgfHwKKyAg
ICAgIFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtTdHJlYW1SZXN1bHRUb0ZsYWcsCisgICAgICAgICAg
ICAgICAgICAgICAgJkdURVNUX0ZMQUcoc3RyZWFtX3Jlc3VsdF90bykpIHx8CisgICAgICBQYXJz
ZUJvb2xGbGFnKGFyZywga1Rocm93T25GYWlsdXJlRmxhZywKKyAgICAgICAgICAgICAgICAgICAg
JkdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSkpOworfQorCisjaWYgR1RFU1RfVVNFX09XTl9G
TEFHRklMRV9GTEFHXwordm9pZCBMb2FkRmxhZ3NGcm9tRmlsZShjb25zdCBzdGQ6OnN0cmluZyYg
cGF0aCkgeworICBGSUxFKiBmbGFnZmlsZSA9IHBvc2l4OjpGT3BlbihwYXRoLmNfc3RyKCksICJy
Iik7CisgIGlmICghZmxhZ2ZpbGUpIHsKKyAgICBmcHJpbnRmKHN0ZGVyciwKKyAgICAgICAgICAg
ICJVbmFibGUgdG8gb3BlbiBmaWxlIFwiJXNcIlxuIiwKKyAgICAgICAgICAgIEdURVNUX0ZMQUco
ZmxhZ2ZpbGUpLmNfc3RyKCkpOworICAgIGZmbHVzaChzdGRlcnIpOworICAgIGV4aXQoRVhJVF9G
QUlMVVJFKTsKKyAgfQorICBzdGQ6OnN0cmluZyBjb250ZW50cyhSZWFkRW50aXJlRmlsZShmbGFn
ZmlsZSkpOworICBwb3NpeDo6RkNsb3NlKGZsYWdmaWxlKTsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpz
dHJpbmc+IGxpbmVzOworICBTcGxpdFN0cmluZyhjb250ZW50cywgJ1xuJywgJmxpbmVzKTsKKyAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaW5lcy5zaXplKCk7ICsraSkgeworICAgIGlmIChsaW5l
c1tpXS5lbXB0eSgpKQorICAgICAgY29udGludWU7CisgICAgaWYgKCFQYXJzZUdvb2dsZVRlc3RG
bGFnKGxpbmVzW2ldLmNfc3RyKCkpKQorICAgICAgZ19oZWxwX2ZsYWcgPSB0cnVlOworICB9Cit9
CisjZW5kaWYgIC8vIEdURVNUX1VTRV9PV05fRkxBR0ZJTEVfRkxBR18KKworLy8gUGFyc2VzIHRo
ZSBjb21tYW5kIGxpbmUgZm9yIEdvb2dsZSBUZXN0IGZsYWdzLCB3aXRob3V0IGluaXRpYWxpemlu
ZworLy8gb3RoZXIgcGFydHMgb2YgR29vZ2xlIFRlc3QuICBUaGUgdHlwZSBwYXJhbWV0ZXIgQ2hh
clR5cGUgY2FuIGJlCisvLyBpbnN0YW50aWF0ZWQgdG8gZWl0aGVyIGNoYXIgb3Igd2NoYXJfdC4K
K3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KK3ZvaWQgUGFyc2VHb29nbGVUZXN0RmxhZ3NP
bmx5SW1wbChpbnQqIGFyZ2MsIENoYXJUeXBlKiogYXJndikgeworICBmb3IgKGludCBpID0gMTsg
aSA8ICphcmdjOyBpKyspIHsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBhcmdfc3RyaW5nID0gU3Ry
ZWFtYWJsZVRvU3RyaW5nKGFyZ3ZbaV0pOworICAgIGNvbnN0IGNoYXIqIGNvbnN0IGFyZyA9IGFy
Z19zdHJpbmcuY19zdHIoKTsKKworICAgIHVzaW5nIGludGVybmFsOjpQYXJzZUJvb2xGbGFnOwor
ICAgIHVzaW5nIGludGVybmFsOjpQYXJzZUludDMyRmxhZzsKKyAgICB1c2luZyBpbnRlcm5hbDo6
UGFyc2VTdHJpbmdGbGFnOworCisgICAgYm9vbCByZW1vdmVfZmxhZyA9IGZhbHNlOworICAgIGlm
IChQYXJzZUdvb2dsZVRlc3RGbGFnKGFyZykpIHsKKyAgICAgIHJlbW92ZV9mbGFnID0gdHJ1ZTsK
KyNpZiBHVEVTVF9VU0VfT1dOX0ZMQUdGSUxFX0ZMQUdfCisgICAgfSBlbHNlIGlmIChQYXJzZVN0
cmluZ0ZsYWcoYXJnLCBrRmxhZ2ZpbGVGbGFnLCAmR1RFU1RfRkxBRyhmbGFnZmlsZSkpKSB7Cisg
ICAgICBMb2FkRmxhZ3NGcm9tRmlsZShHVEVTVF9GTEFHKGZsYWdmaWxlKSk7CisgICAgICByZW1v
dmVfZmxhZyA9IHRydWU7CisjZW5kaWYgIC8vIEdURVNUX1VTRV9PV05fRkxBR0ZJTEVfRkxBR18K
KyAgICB9IGVsc2UgaWYgKGFyZ19zdHJpbmcgPT0gIi0taGVscCIgfHwgYXJnX3N0cmluZyA9PSAi
LWgiIHx8CisgICAgICAgICAgICAgICBhcmdfc3RyaW5nID09ICItPyIgfHwgYXJnX3N0cmluZyA9
PSAiLz8iIHx8CisgICAgICAgICAgICAgICBIYXNHb29nbGVUZXN0RmxhZ1ByZWZpeChhcmcpKSB7
CisgICAgICAvLyBCb3RoIGhlbHAgZmxhZyBhbmQgdW5yZWNvZ25pemVkIEdvb2dsZSBUZXN0IGZs
YWdzIChleGNsdWRpbmcKKyAgICAgIC8vIGludGVybmFsIG9uZXMpIHRyaWdnZXIgaGVscCBkaXNw
bGF5LgorICAgICAgZ19oZWxwX2ZsYWcgPSB0cnVlOworICAgIH0KKworICAgIGlmIChyZW1vdmVf
ZmxhZykgeworICAgICAgLy8gU2hpZnQgdGhlIHJlbWFpbmRlciBvZiB0aGUgYXJndiBsaXN0IGxl
ZnQgYnkgb25lLiAgTm90ZQorICAgICAgLy8gdGhhdCBhcmd2IGhhcyAoKmFyZ2MgKyAxKSBlbGVt
ZW50cywgdGhlIGxhc3Qgb25lIGFsd2F5cyBiZWluZworICAgICAgLy8gTlVMTC4gIFRoZSBmb2xs
b3dpbmcgbG9vcCBtb3ZlcyB0aGUgdHJhaWxpbmcgTlVMTCBlbGVtZW50IGFzCisgICAgICAvLyB3
ZWxsLgorICAgICAgZm9yIChpbnQgaiA9IGk7IGogIT0gKmFyZ2M7IGorKykgeworICAgICAgICBh
cmd2W2pdID0gYXJndltqICsgMV07CisgICAgICB9CisKKyAgICAgIC8vIERlY3JlbWVudHMgdGhl
IGFyZ3VtZW50IGNvdW50LgorICAgICAgKCphcmdjKS0tOworCisgICAgICAvLyBXZSBhbHNvIG5l
ZWQgdG8gZGVjcmVtZW50IHRoZSBpdGVyYXRvciBhcyB3ZSBqdXN0IHJlbW92ZWQKKyAgICAgIC8v
IGFuIGVsZW1lbnQuCisgICAgICBpLS07CisgICAgfQorICB9CisKKyAgaWYgKGdfaGVscF9mbGFn
KSB7CisgICAgLy8gV2UgcHJpbnQgdGhlIGhlbHAgaGVyZSBpbnN0ZWFkIG9mIGluIFJVTl9BTExf
VEVTVFMoKSwgYXMgdGhlCisgICAgLy8gbGF0dGVyIG1heSBub3QgYmUgY2FsbGVkIGF0IGFsbCBp
ZiB0aGUgdXNlciBpcyB1c2luZyBHb29nbGUKKyAgICAvLyBUZXN0IHdpdGggYW5vdGhlciB0ZXN0
aW5nIGZyYW1ld29yay4KKyAgICBQcmludENvbG9yRW5jb2RlZChrQ29sb3JFbmNvZGVkSGVscE1l
c3NhZ2UpOworICB9Cit9CisKKy8vIFBhcnNlcyB0aGUgY29tbWFuZCBsaW5lIGZvciBHb29nbGUg
VGVzdCBmbGFncywgd2l0aG91dCBpbml0aWFsaXppbmcKKy8vIG90aGVyIHBhcnRzIG9mIEdvb2ds
ZSBUZXN0Lgordm9pZCBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHkoaW50KiBhcmdjLCBjaGFyKiog
YXJndikgeworICBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHlJbXBsKGFyZ2MsIGFyZ3YpOworfQor
dm9pZCBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHkoaW50KiBhcmdjLCB3Y2hhcl90KiogYXJndikg
eworICBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHlJbXBsKGFyZ2MsIGFyZ3YpOworfQorCisvLyBU
aGUgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gb2YgSW5pdEdvb2dsZVRlc3QoKS4KKy8vCisvLyBU
aGUgdHlwZSBwYXJhbWV0ZXIgQ2hhclR5cGUgY2FuIGJlIGluc3RhbnRpYXRlZCB0byBlaXRoZXIg
Y2hhciBvcgorLy8gd2NoYXJfdC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KK3ZvaWQg
SW5pdEdvb2dsZVRlc3RJbXBsKGludCogYXJnYywgQ2hhclR5cGUqKiBhcmd2KSB7CisgIC8vIFdl
IGRvbid0IHdhbnQgdG8gcnVuIHRoZSBpbml0aWFsaXphdGlvbiBjb2RlIHR3aWNlLgorICBpZiAo
R1Rlc3RJc0luaXRpYWxpemVkKCkpIHJldHVybjsKKworICBpZiAoKmFyZ2MgPD0gMCkgcmV0dXJu
OworCisgIGdfYXJndnMuY2xlYXIoKTsKKyAgZm9yIChpbnQgaSA9IDA7IGkgIT0gKmFyZ2M7IGkr
KykgeworICAgIGdfYXJndnMucHVzaF9iYWNrKFN0cmVhbWFibGVUb1N0cmluZyhhcmd2W2ldKSk7
CisgIH0KKworICBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHkoYXJnYywgYXJndik7CisgIEdldFVu
aXRUZXN0SW1wbCgpLT5Qb3N0RmxhZ1BhcnNpbmdJbml0KCk7Cit9CisKK30gIC8vIG5hbWVzcGFj
ZSBpbnRlcm5hbAorCisvLyBJbml0aWFsaXplcyBHb29nbGUgVGVzdC4gIFRoaXMgbXVzdCBiZSBj
YWxsZWQgYmVmb3JlIGNhbGxpbmcKKy8vIFJVTl9BTExfVEVTVFMoKS4gIEluIHBhcnRpY3VsYXIs
IGl0IHBhcnNlcyBhIGNvbW1hbmQgbGluZSBmb3IgdGhlCisvLyBmbGFncyB0aGF0IEdvb2dsZSBU
ZXN0IHJlY29nbml6ZXMuICBXaGVuZXZlciBhIEdvb2dsZSBUZXN0IGZsYWcgaXMKKy8vIHNlZW4s
IGl0IGlzIHJlbW92ZWQgZnJvbSBhcmd2LCBhbmQgKmFyZ2MgaXMgZGVjcmVtZW50ZWQuCisvLwor
Ly8gTm8gdmFsdWUgaXMgcmV0dXJuZWQuICBJbnN0ZWFkLCB0aGUgR29vZ2xlIFRlc3QgZmxhZyB2
YXJpYWJsZXMgYXJlCisvLyB1cGRhdGVkLgorLy8KKy8vIENhbGxpbmcgdGhlIGZ1bmN0aW9uIGZv
ciB0aGUgc2Vjb25kIHRpbWUgaGFzIG5vIHVzZXItdmlzaWJsZSBlZmZlY3QuCit2b2lkIEluaXRH
b29nbGVUZXN0KGludCogYXJnYywgY2hhcioqIGFyZ3YpIHsKKyNpZiBkZWZpbmVkKEdURVNUX0NV
U1RPTV9JTklUX0dPT0dMRV9URVNUX0ZVTkNUSU9OXykKKyAgR1RFU1RfQ1VTVE9NX0lOSVRfR09P
R0xFX1RFU1RfRlVOQ1RJT05fKGFyZ2MsIGFyZ3YpOworI2Vsc2UgIC8vIGRlZmluZWQoR1RFU1Rf
Q1VTVE9NX0lOSVRfR09PR0xFX1RFU1RfRlVOQ1RJT05fKQorICBpbnRlcm5hbDo6SW5pdEdvb2ds
ZVRlc3RJbXBsKGFyZ2MsIGFyZ3YpOworI2VuZGlmICAvLyBkZWZpbmVkKEdURVNUX0NVU1RPTV9J
TklUX0dPT0dMRV9URVNUX0ZVTkNUSU9OXykKK30KKworLy8gVGhpcyBvdmVybG9hZGVkIHZlcnNp
b24gY2FuIGJlIHVzZWQgaW4gV2luZG93cyBwcm9ncmFtcyBjb21waWxlZCBpbgorLy8gVU5JQ09E
RSBtb2RlLgordm9pZCBJbml0R29vZ2xlVGVzdChpbnQqIGFyZ2MsIHdjaGFyX3QqKiBhcmd2KSB7
CisjaWYgZGVmaW5lZChHVEVTVF9DVVNUT01fSU5JVF9HT09HTEVfVEVTVF9GVU5DVElPTl8pCisg
IEdURVNUX0NVU1RPTV9JTklUX0dPT0dMRV9URVNUX0ZVTkNUSU9OXyhhcmdjLCBhcmd2KTsKKyNl
bHNlICAvLyBkZWZpbmVkKEdURVNUX0NVU1RPTV9JTklUX0dPT0dMRV9URVNUX0ZVTkNUSU9OXykK
KyAgaW50ZXJuYWw6OkluaXRHb29nbGVUZXN0SW1wbChhcmdjLCBhcmd2KTsKKyNlbmRpZiAgLy8g
ZGVmaW5lZChHVEVTVF9DVVNUT01fSU5JVF9HT09HTEVfVEVTVF9GVU5DVElPTl8pCit9CisKK3N0
ZDo6c3RyaW5nIFRlbXBEaXIoKSB7CisjaWYgZGVmaW5lZChHVEVTVF9DVVNUT01fVEVNUERJUl9G
VU5DVElPTl8pCisgICAgcmV0dXJuIEdURVNUX0NVU1RPTV9URU1QRElSX0ZVTkNUSU9OXygpOwor
I2VuZGlmCisjaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyAgcmV0dXJuICJcXHRlbXBcXCI7
CisjZWxpZiBHVEVTVF9PU19XSU5ET1dTCisgIGNvbnN0IGNoYXIqIHRlbXBfZGlyID0gaW50ZXJu
YWw6OnBvc2l4OjpHZXRFbnYoIlRFTVAiKTsKKyAgaWYgKHRlbXBfZGlyID09IE5VTEwgfHwgdGVt
cF9kaXJbMF0gPT0gJ1wwJykKKyAgICByZXR1cm4gIlxcdGVtcFxcIjsKKyAgZWxzZSBpZiAodGVt
cF9kaXJbc3RybGVuKHRlbXBfZGlyKSAtIDFdID09ICdcXCcpCisgICAgcmV0dXJuIHRlbXBfZGly
OworICBlbHNlCisgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKHRlbXBfZGlyKSArICJcXCI7CisjZWxp
ZiBHVEVTVF9PU19MSU5VWF9BTkRST0lECisgIHJldHVybiAiL3NkY2FyZC8iOworI2Vsc2UKKyAg
cmV0dXJuICIvdG1wLyI7CisjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCit9CisK
K30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zcmMvZ3Rl
c3RfbWFpbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NyYy9ndGVzdF9tYWluLmNjCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYz
MDI4MjI1NTIzMzA2ZWI5NjQ4Zjk0YmNiZTllM2E3ODAxNmJiN2UKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC9zcmMvZ3Rlc3RfbWFpbi5jYwpAQCAtMCwwICsxLDM4IEBACisvLyBDb3B5
cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8g
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
Ky8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1
dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
Ky8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpbmNsdWRlIDxzdGRpby5o
PgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworR1RFU1RfQVBJXyBpbnQgbWFpbihpbnQg
YXJnYywgY2hhciAqKmFyZ3YpIHsKKyAgcHJpbnRmKCJSdW5uaW5nIG1haW4oKSBmcm9tIGd0ZXN0
X21haW4uY2NcbiIpOworICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7Cisg
IHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0
L2d0ZXN0LWRlYXRoLXRlc3RfZXhfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3QtZGVh
dGgtdGVzdF9leF90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI1MGExM2Q1ZTJlMTRmNDZjNTUyYWIyYjEw
NzY0MDkxZjg1ZTI3NWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0
LWRlYXRoLXRlc3RfZXhfdGVzdC5jYwpAQCAtMCwwICsxLDkzIEBACisvLyBDb3B5cmlnaHQgMjAx
MCwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
Ky8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8v
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisv
LyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gQXV0aG9yOiB2bGFkbEBnb29nbGUu
Y29tIChWbGFkIExvc2V2KQorLy8KKy8vIFRlc3RzIHRoYXQgdmVyaWZ5IGludGVyYWN0aW9uIG9m
IGV4Y2VwdGlvbnMgYW5kIGRlYXRoIHRlc3RzLgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtZGVh
dGgtdGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKyNpZiBHVEVTVF9IQVNfREVB
VEhfVEVTVAorCisjIGlmIEdURVNUX0hBU19TRUgKKyMgIGluY2x1ZGUgPHdpbmRvd3MuaD4gICAg
ICAgICAgLy8gRm9yIFJhaXNlRXhjZXB0aW9uKCkuCisjIGVuZGlmCisKKyMgaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3Qtc3BpLmgiCisKKyMgaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKKworIyAgaW5jbHVk
ZSA8ZXhjZXB0aW9uPiAgLy8gRm9yIHN0ZDo6ZXhjZXB0aW9uLgorCisvLyBUZXN0cyB0aGF0IGRl
YXRoIHRlc3RzIHJlcG9ydCB0aHJvd24gZXhjZXB0aW9ucyBhcyBmYWlsdXJlcyBhbmQgdGhhdCB0
aGUKKy8vIGV4Y2VwdGlvbnMgZG8gbm90IGVzY2FwZSBkZWF0aCB0ZXN0IG1hY3Jvcy4KK1RFU1Qo
Q3h4RXhjZXB0aW9uRGVhdGhUZXN0LCBFeGNlcHRpb25Jc0ZhaWx1cmUpIHsKKyAgdHJ5IHsKKyAg
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfREVBVEgodGhyb3cgMSwgIiIpLCAidGhy
ZXcgYW4gZXhjZXB0aW9uIik7CisgIH0gY2F0Y2ggKC4uLikgeyAgLy8gTk9MSU5UCisgICAgRkFJ
TCgpIDw8ICJBbiBleGNlcHRpb24gZXNjYXBlZCBhIGRlYXRoIHRlc3QgbWFjcm8gaW52b2NhdGlv
biAiCisgICAgICAgICAgIDw8ICJ3aXRoIGNhdGNoX2V4Y2VwdGlvbnMgIgorICAgICAgICAgICA8
PCAodGVzdGluZzo6R1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSA/ICJlbmFibGVkIiA6ICJk
aXNhYmxlZCIpOworICB9Cit9CisKK2NsYXNzIFRlc3RFeGNlcHRpb24gOiBwdWJsaWMgc3RkOjpl
eGNlcHRpb24geworIHB1YmxpYzoKKyAgdmlydHVhbCBjb25zdCBjaGFyKiB3aGF0KCkgY29uc3Qg
dGhyb3coKSB7IHJldHVybiAiZXhjZXB0aW9uYWwgbWVzc2FnZSI7IH0KK307CisKK1RFU1QoQ3h4
RXhjZXB0aW9uRGVhdGhUZXN0LCBQcmludHNNZXNzYWdlRm9yU3RkRXhjZXB0aW9ucykgeworICAv
LyBWZXJpZmllcyB0aGF0IHRoZSBleGNlcHRpb24gbWVzc2FnZSBpcyBxdW90ZWQgaW4gdGhlIGZh
aWx1cmUgdGV4dC4KKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0RFQVRIKHRocm93
IFRlc3RFeGNlcHRpb24oKSwgIiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjZXB0
aW9uYWwgbWVzc2FnZSIpOworICAvLyBWZXJpZmllcyB0aGF0IHRoZSBsb2NhdGlvbiBpcyBtZW50
aW9uZWQgaW4gdGhlIGZhaWx1cmUgdGV4dC4KKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQ
RUNUX0RFQVRIKHRocm93IFRlc3RFeGNlcHRpb24oKSwgIiIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAiZ3Rlc3QtZGVhdGgtdGVzdF9leF90ZXN0LmNjIik7Cit9CisjIGVuZGlmICAvLyBH
VEVTVF9IQVNfRVhDRVBUSU9OUworCisjIGlmIEdURVNUX0hBU19TRUgKKy8vIFRlc3RzIHRoYXQg
ZW5hYmxpbmcgaW50ZXJjZXB0aW9uIG9mIFNFSCBleGNlcHRpb25zIHdpdGggdGhlCisvLyBjYXRj
aF9leGNlcHRpb25zIGZsYWcgZG9lcyBub3QgaW50ZXJmZXJlIHdpdGggU0VIIGV4Y2VwdGlvbnMg
YmVpbmcKKy8vIHRyZWF0ZWQgYXMgZGVhdGggYnkgZGVhdGggdGVzdHMuCitURVNUKFNlaEV4Y2Vw
dGlvbkRlYXNUZXN0LCBDYXRjaEV4Y2VwdGlvbnNEb2VzTm90SW50ZXJmZXJlKSB7CisgIEVYUEVD
VF9ERUFUSChSYWlzZUV4Y2VwdGlvbig0MiwgMHgwLCAwLCBOVUxMKSwgIiIpCisgICAgICA8PCAi
d2l0aCBjYXRjaF9leGNlcHRpb25zICIKKyAgICAgIDw8ICh0ZXN0aW5nOjpHVEVTVF9GTEFHKGNh
dGNoX2V4Y2VwdGlvbnMpID8gImVuYWJsZWQiIDogImRpc2FibGVkIik7Cit9CisjIGVuZGlmCisK
KyNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QKKworaW50IG1haW4oaW50IGFyZ2MsIGNo
YXIqKiBhcmd2KSB7CisgIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKyAg
dGVzdGluZzo6R1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSA9IEdURVNUX0VOQUJMRV9DQVRD
SF9FWENFUFRJT05TXyAhPSAwOworICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdC1kZWF0aC10ZXN0X3Rlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC90ZXN0L2d0ZXN0LWRlYXRoLXRlc3RfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTdmZTM4MjQ0
MmViYmYwOTBlYThlZjhhZGJlNGRhNmFmOWFiMjRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZXRlc3QvdGVzdC9ndGVzdC1kZWF0aC10ZXN0X3Rlc3QuY2MKQEAgLTAsMCArMSwxNDI3IEBACisv
LyBDb3B5cmlnaHQgMjAwNSwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRp
c3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
Ky8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gQXV0aG9y
OiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorLy8KKy8vIFRlc3RzIGZvciBkZWF0aCB0
ZXN0cy4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LWRlYXRoLXRlc3QuaCIKKyNpbmNsdWRlICJn
dGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmgi
CisKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNGYWxzZTsKK3VzaW5nIHRlc3Rpbmc6
OmludGVybmFsOjpBbHdheXNUcnVlOworCisjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKKworIyBp
ZiBHVEVTVF9PU19XSU5ET1dTCisjICBpbmNsdWRlIDxkaXJlY3QuaD4gICAgICAgICAgLy8gRm9y
IGNoZGlyKCkuCisjIGVsc2UKKyMgIGluY2x1ZGUgPHVuaXN0ZC5oPgorIyAgaW5jbHVkZSA8c3lz
L3dhaXQuaD4gICAgICAgIC8vIEZvciB3YWl0cGlkLgorIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lO
RE9XUworCisjIGluY2x1ZGUgPGxpbWl0cy5oPgorIyBpbmNsdWRlIDxzaWduYWwuaD4KKyMgaW5j
bHVkZSA8c3RkaW8uaD4KKworIyBpZiBHVEVTVF9PU19MSU5VWAorIyAgaW5jbHVkZSA8c3lzL3Rp
bWUuaD4KKyMgZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYCisKKyMgaW5jbHVkZSAiZ3Rlc3QvZ3Rl
c3Qtc3BpLmgiCisKKy8vIEluZGljYXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBpcyBw
YXJ0IG9mIEdvb2dsZSBUZXN0J3MKKy8vIGltcGxlbWVudGF0aW9uLiAgSXQgbXVzdCBjb21lIGJl
Zm9yZSBndGVzdC1pbnRlcm5hbC1pbmwuaCBpcworLy8gaW5jbHVkZWQsIG9yIHRoZXJlIHdpbGwg
YmUgYSBjb21waWxlciBlcnJvci4gIFRoaXMgdHJpY2sgaXMgdG8KKy8vIHByZXZlbnQgYSB1c2Vy
IGZyb20gYWNjaWRlbnRhbGx5IGluY2x1ZGluZyBndGVzdC1pbnRlcm5hbC1pbmwuaCBpbgorLy8g
aGlzIGNvZGUuCisjIGRlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8gMQorIyBpbmNsdWRlICJz
cmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCisjIHVuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwor
CituYW1lc3BhY2UgcG9zaXggPSA6OnRlc3Rpbmc6OmludGVybmFsOjpwb3NpeDsKKwordXNpbmcg
dGVzdGluZzo6TWVzc2FnZTsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpEZWF0aFRlc3Q7Cit1
c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6RGVhdGhUZXN0RmFjdG9yeTsKK3VzaW5nIHRlc3Rpbmc6
OmludGVybmFsOjpGaWxlUGF0aDsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRMYXN0RXJy
bm9EZXNjcmlwdGlvbjsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRVbml0VGVzdEltcGw7
Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6SW5EZWF0aFRlc3RDaGlsZDsKK3VzaW5nIHRlc3Rp
bmc6OmludGVybmFsOjpQYXJzZU5hdHVyYWxOdW1iZXI7CisKK25hbWVzcGFjZSB0ZXN0aW5nIHsK
K25hbWVzcGFjZSBpbnRlcm5hbCB7CisKKy8vIEEgaGVscGVyIGNsYXNzIHdob3NlIG9iamVjdHMg
cmVwbGFjZSB0aGUgZGVhdGggdGVzdCBmYWN0b3J5IGZvciBhCisvLyBzaW5nbGUgVW5pdFRlc3Qg
b2JqZWN0IGR1cmluZyB0aGVpciBsaWZldGltZXMuCitjbGFzcyBSZXBsYWNlRGVhdGhUZXN0RmFj
dG9yeSB7CisgcHVibGljOgorICBleHBsaWNpdCBSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeShEZWF0
aFRlc3RGYWN0b3J5KiBuZXdfZmFjdG9yeSkKKyAgICAgIDogdW5pdF90ZXN0X2ltcGxfKEdldFVu
aXRUZXN0SW1wbCgpKSB7CisgICAgb2xkX2ZhY3RvcnlfID0gdW5pdF90ZXN0X2ltcGxfLT5kZWF0
aF90ZXN0X2ZhY3RvcnlfLnJlbGVhc2UoKTsKKyAgICB1bml0X3Rlc3RfaW1wbF8tPmRlYXRoX3Rl
c3RfZmFjdG9yeV8ucmVzZXQobmV3X2ZhY3RvcnkpOworICB9CisKKyAgflJlcGxhY2VEZWF0aFRl
c3RGYWN0b3J5KCkgeworICAgIHVuaXRfdGVzdF9pbXBsXy0+ZGVhdGhfdGVzdF9mYWN0b3J5Xy5y
ZWxlYXNlKCk7CisgICAgdW5pdF90ZXN0X2ltcGxfLT5kZWF0aF90ZXN0X2ZhY3RvcnlfLnJlc2V0
KG9sZF9mYWN0b3J5Xyk7CisgIH0KKyBwcml2YXRlOgorICAvLyBQcmV2ZW50cyBjb3B5aW5nIFJl
cGxhY2VEZWF0aFRlc3RGYWN0b3J5IG9iamVjdHMuCisgIFJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5
KGNvbnN0IFJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5Jik7CisgIHZvaWQgb3BlcmF0b3I9KGNvbnN0
IFJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5Jik7CisKKyAgVW5pdFRlc3RJbXBsKiB1bml0X3Rlc3Rf
aW1wbF87CisgIERlYXRoVGVzdEZhY3RvcnkqIG9sZF9mYWN0b3J5XzsKK307CisKK30gIC8vIG5h
bWVzcGFjZSBpbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKKwordm9pZCBEaWVXaXRo
TWVzc2FnZShjb25zdCA6OnN0ZDo6c3RyaW5nJiBtZXNzYWdlKSB7CisgIGZwcmludGYoc3RkZXJy
LCAiJXMiLCBtZXNzYWdlLmNfc3RyKCkpOworICBmZmx1c2goc3RkZXJyKTsgIC8vIE1ha2Ugc3Vy
ZSB0aGUgdGV4dCBpcyBwcmludGVkIGJlZm9yZSB0aGUgcHJvY2VzcyBleGl0cy4KKworICAvLyBX
ZSBjYWxsIF9leGl0KCkgaW5zdGVhZCBvZiBleGl0KCksIGFzIHRoZSBmb3JtZXIgaXMgYSBkaXJl
Y3QKKyAgLy8gc3lzdGVtIGNhbGwgYW5kIHRodXMgc2FmZXIgaW4gdGhlIHByZXNlbmNlIG9mIHRo
cmVhZHMuICBleGl0KCkKKyAgLy8gd2lsbCBpbnZva2UgdXNlci1kZWZpbmVkIGV4aXQtaG9va3Ms
IHdoaWNoIG1heSBkbyBkYW5nZXJvdXMKKyAgLy8gdGhpbmdzIHRoYXQgY29uZmxpY3Qgd2l0aCBk
ZWF0aCB0ZXN0cy4KKyAgLy8KKyAgLy8gU29tZSBjb21waWxlcnMgY2FuIHJlY29nbml6ZSB0aGF0
IF9leGl0KCkgbmV2ZXIgcmV0dXJucyBhbmQgaXNzdWUgdGhlCisgIC8vICd1bnJlYWNoYWJsZSBj
b2RlJyB3YXJuaW5nIGZvciBjb2RlIGZvbGxvd2luZyB0aGlzIGZ1bmN0aW9uLCB1bmxlc3MKKyAg
Ly8gZm9vbGVkIGJ5IGEgZmFrZSBjb25kaXRpb24uCisgIGlmIChBbHdheXNUcnVlKCkpCisgICAg
X2V4aXQoMSk7Cit9CisKK3ZvaWQgRGllSW5zaWRlKGNvbnN0IDo6c3RkOjpzdHJpbmcmIGZ1bmN0
aW9uKSB7CisgIERpZVdpdGhNZXNzYWdlKCJkZWF0aCBpbnNpZGUgIiArIGZ1bmN0aW9uICsgIigp
LiIpOworfQorCisvLyBUZXN0cyB0aGF0IGRlYXRoIHRlc3RzIHdvcmsuCisKK2NsYXNzIFRlc3RG
b3JEZWF0aFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICBUZXN0
Rm9yRGVhdGhUZXN0KCkgOiBvcmlnaW5hbF9kaXJfKEZpbGVQYXRoOjpHZXRDdXJyZW50RGlyKCkp
IHt9CisKKyAgdmlydHVhbCB+VGVzdEZvckRlYXRoVGVzdCgpIHsKKyAgICBwb3NpeDo6Q2hEaXIo
b3JpZ2luYWxfZGlyXy5jX3N0cigpKTsKKyAgfQorCisgIC8vIEEgc3RhdGljIG1lbWJlciBmdW5j
dGlvbiB0aGF0J3MgZXhwZWN0ZWQgdG8gZGllLgorICBzdGF0aWMgdm9pZCBTdGF0aWNNZW1iZXJG
dW5jdGlvbigpIHsgRGllSW5zaWRlKCJTdGF0aWNNZW1iZXJGdW5jdGlvbiIpOyB9CisKKyAgLy8g
QSBtZXRob2Qgb2YgdGhlIHRlc3QgZml4dHVyZSB0aGF0IG1heSBkaWUuCisgIHZvaWQgTWVtYmVy
RnVuY3Rpb24oKSB7CisgICAgaWYgKHNob3VsZF9kaWVfKQorICAgICAgRGllSW5zaWRlKCJNZW1i
ZXJGdW5jdGlvbiIpOworICB9CisKKyAgLy8gVHJ1ZSBpZmYgTWVtYmVyRnVuY3Rpb24oKSBzaG91
bGQgZGllLgorICBib29sIHNob3VsZF9kaWVfOworICBjb25zdCBGaWxlUGF0aCBvcmlnaW5hbF9k
aXJfOworfTsKKworLy8gQSBjbGFzcyB3aXRoIGEgbWVtYmVyIGZ1bmN0aW9uIHRoYXQgbWF5IGRp
ZS4KK2NsYXNzIE1heURpZSB7CisgcHVibGljOgorICBleHBsaWNpdCBNYXlEaWUoYm9vbCBzaG91
bGRfZGllKSA6IHNob3VsZF9kaWVfKHNob3VsZF9kaWUpIHt9CisKKyAgLy8gQSBtZW1iZXIgZnVu
Y3Rpb24gdGhhdCBtYXkgZGllLgorICB2b2lkIE1lbWJlckZ1bmN0aW9uKCkgY29uc3QgeworICAg
IGlmIChzaG91bGRfZGllXykKKyAgICAgIERpZUluc2lkZSgiTWF5RGllOjpNZW1iZXJGdW5jdGlv
biIpOworICB9CisKKyBwcml2YXRlOgorICAvLyBUcnVlIGlmZiBNZW1iZXJGdW5jdGlvbigpIHNo
b3VsZCBkaWUuCisgIGJvb2wgc2hvdWxkX2RpZV87Cit9OworCisvLyBBIGdsb2JhbCBmdW5jdGlv
biB0aGF0J3MgZXhwZWN0ZWQgdG8gZGllLgordm9pZCBHbG9iYWxGdW5jdGlvbigpIHsgRGllSW5z
aWRlKCJHbG9iYWxGdW5jdGlvbiIpOyB9CisKKy8vIEEgbm9uLXZvaWQgZnVuY3Rpb24gdGhhdCdz
IGV4cGVjdGVkIHRvIGRpZS4KK2ludCBOb25Wb2lkRnVuY3Rpb24oKSB7CisgIERpZUluc2lkZSgi
Tm9uVm9pZEZ1bmN0aW9uIik7CisgIHJldHVybiAxOworfQorCisvLyBBIHVuYXJ5IGZ1bmN0aW9u
IHRoYXQgbWF5IGRpZS4KK3ZvaWQgRGllSWYoYm9vbCBzaG91bGRfZGllKSB7CisgIGlmIChzaG91
bGRfZGllKQorICAgIERpZUluc2lkZSgiRGllSWYiKTsKK30KKworLy8gQSBiaW5hcnkgZnVuY3Rp
b24gdGhhdCBtYXkgZGllLgorYm9vbCBEaWVJZkxlc3NUaGFuKGludCB4LCBpbnQgeSkgeworICBp
ZiAoeCA8IHkpIHsKKyAgICBEaWVJbnNpZGUoIkRpZUlmTGVzc1RoYW4iKTsKKyAgfQorICByZXR1
cm4gdHJ1ZTsKK30KKworLy8gVGVzdHMgdGhhdCBBU1NFUlRfREVBVEggY2FuIGJlIHVzZWQgb3V0
c2lkZSBhIFRFU1QsIFRFU1RfRiwgb3IgdGVzdCBmaXh0dXJlLgordm9pZCBEZWF0aFRlc3RTdWJy
b3V0aW5lKCkgeworICBFWFBFQ1RfREVBVEgoR2xvYmFsRnVuY3Rpb24oKSwgImRlYXRoLipHbG9i
YWxGdW5jdGlvbiIpOworICBBU1NFUlRfREVBVEgoR2xvYmFsRnVuY3Rpb24oKSwgImRlYXRoLipH
bG9iYWxGdW5jdGlvbiIpOworfQorCisvLyBEZWF0aCBpbiBkYmcsIG5vdCBvcHQuCitpbnQgRGll
SW5EZWJ1Z0Vsc2UxMihpbnQqIHNpZGVlZmZlY3QpIHsKKyAgaWYgKHNpZGVlZmZlY3QpICpzaWRl
ZWZmZWN0ID0gMTI7CisKKyMgaWZuZGVmIE5ERUJVRworCisgIERpZUluc2lkZSgiRGllSW5EZWJ1
Z0Vsc2UxMiIpOworCisjIGVuZGlmICAvLyBOREVCVUcKKworICByZXR1cm4gMTI7Cit9CisKKyMg
aWYgR1RFU1RfT1NfV0lORE9XUworCisvLyBUZXN0cyB0aGUgRXhpdGVkV2l0aENvZGUgcHJlZGlj
YXRlLgorVEVTVChFeGl0U3RhdHVzUHJlZGljYXRlVGVzdCwgRXhpdGVkV2l0aENvZGUpIHsKKyAg
Ly8gT24gV2luZG93cywgdGhlIHByb2Nlc3MncyBleGl0IGNvZGUgaXMgdGhlIHNhbWUgYXMgaXRz
IGV4aXQgc3RhdHVzLAorICAvLyBzbyB0aGUgcHJlZGljYXRlIGp1c3QgY29tcGFyZXMgdGhlIGl0
cyBpbnB1dCB3aXRoIGl0cyBwYXJhbWV0ZXIuCisgIEVYUEVDVF9UUlVFKHRlc3Rpbmc6OkV4aXRl
ZFdpdGhDb2RlKDApKDApKTsKKyAgRVhQRUNUX1RSVUUodGVzdGluZzo6RXhpdGVkV2l0aENvZGUo
MSkoMSkpOworICBFWFBFQ1RfVFJVRSh0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSg0MikoNDIpKTsK
KyAgRVhQRUNUX0ZBTFNFKHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDApKDEpKTsKKyAgRVhQRUNU
X0ZBTFNFKHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDEpKDApKTsKK30KKworIyBlbHNlCisKKy8v
IFJldHVybnMgdGhlIGV4aXQgc3RhdHVzIG9mIGEgcHJvY2VzcyB0aGF0IGNhbGxzIF9leGl0KDIp
IHdpdGggYQorLy8gZ2l2ZW4gZXhpdCBjb2RlLiAgVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiBm
b3IgdGhlCisvLyBFeGl0U3RhdHVzUHJlZGljYXRlVGVzdCB0ZXN0IHN1aXRlLgorc3RhdGljIGlu
dCBOb3JtYWxFeGl0U3RhdHVzKGludCBleGl0X2NvZGUpIHsKKyAgcGlkX3QgY2hpbGRfcGlkID0g
Zm9yaygpOworICBpZiAoY2hpbGRfcGlkID09IDApIHsKKyAgICBfZXhpdChleGl0X2NvZGUpOwor
ICB9CisgIGludCBzdGF0dXM7CisgIHdhaXRwaWQoY2hpbGRfcGlkLCAmc3RhdHVzLCAwKTsKKyAg
cmV0dXJuIHN0YXR1czsKK30KKworLy8gUmV0dXJucyB0aGUgZXhpdCBzdGF0dXMgb2YgYSBwcm9j
ZXNzIHRoYXQgcmFpc2VzIGEgZ2l2ZW4gc2lnbmFsLgorLy8gSWYgdGhlIHNpZ25hbCBkb2VzIG5v
dCBjYXVzZSB0aGUgcHJvY2VzcyB0byBkaWUsIHRoZW4gaXQgcmV0dXJucworLy8gaW5zdGVhZCB0
aGUgZXhpdCBzdGF0dXMgb2YgYSBwcm9jZXNzIHRoYXQgZXhpdHMgbm9ybWFsbHkgd2l0aCBleGl0
CisvLyBjb2RlIDEuICBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0aW9uIGZvciB0aGUgRXhpdFN0YXR1
c1ByZWRpY2F0ZVRlc3QKKy8vIHRlc3Qgc3VpdGUuCitzdGF0aWMgaW50IEtpbGxlZEV4aXRTdGF0
dXMoaW50IHNpZ251bSkgeworICBwaWRfdCBjaGlsZF9waWQgPSBmb3JrKCk7CisgIGlmIChjaGls
ZF9waWQgPT0gMCkgeworICAgIHJhaXNlKHNpZ251bSk7CisgICAgX2V4aXQoMSk7CisgIH0KKyAg
aW50IHN0YXR1czsKKyAgd2FpdHBpZChjaGlsZF9waWQsICZzdGF0dXMsIDApOworICByZXR1cm4g
c3RhdHVzOworfQorCisvLyBUZXN0cyB0aGUgRXhpdGVkV2l0aENvZGUgcHJlZGljYXRlLgorVEVT
VChFeGl0U3RhdHVzUHJlZGljYXRlVGVzdCwgRXhpdGVkV2l0aENvZGUpIHsKKyAgY29uc3QgaW50
IHN0YXR1czAgID0gTm9ybWFsRXhpdFN0YXR1cygwKTsKKyAgY29uc3QgaW50IHN0YXR1czEgID0g
Tm9ybWFsRXhpdFN0YXR1cygxKTsKKyAgY29uc3QgaW50IHN0YXR1czQyID0gTm9ybWFsRXhpdFN0
YXR1cyg0Mik7CisgIGNvbnN0IHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlIHByZWQwKDApOworICBj
b25zdCB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSBwcmVkMSgxKTsKKyAgY29uc3QgdGVzdGluZzo6
RXhpdGVkV2l0aENvZGUgcHJlZDQyKDQyKTsKKyAgRVhQRUNUX1BSRUQxKHByZWQwLCAgc3RhdHVz
MCk7CisgIEVYUEVDVF9QUkVEMShwcmVkMSwgIHN0YXR1czEpOworICBFWFBFQ1RfUFJFRDEocHJl
ZDQyLCBzdGF0dXM0Mik7CisgIEVYUEVDVF9GQUxTRShwcmVkMChzdGF0dXMxKSk7CisgIEVYUEVD
VF9GQUxTRShwcmVkNDIoc3RhdHVzMCkpOworICBFWFBFQ1RfRkFMU0UocHJlZDEoc3RhdHVzNDIp
KTsKK30KKworLy8gVGVzdHMgdGhlIEtpbGxlZEJ5U2lnbmFsIHByZWRpY2F0ZS4KK1RFU1QoRXhp
dFN0YXR1c1ByZWRpY2F0ZVRlc3QsIEtpbGxlZEJ5U2lnbmFsKSB7CisgIGNvbnN0IGludCBzdGF0
dXNfc2VndiA9IEtpbGxlZEV4aXRTdGF0dXMoU0lHU0VHVik7CisgIGNvbnN0IGludCBzdGF0dXNf
a2lsbCA9IEtpbGxlZEV4aXRTdGF0dXMoU0lHS0lMTCk7CisgIGNvbnN0IHRlc3Rpbmc6OktpbGxl
ZEJ5U2lnbmFsIHByZWRfc2VndihTSUdTRUdWKTsKKyAgY29uc3QgdGVzdGluZzo6S2lsbGVkQnlT
aWduYWwgcHJlZF9raWxsKFNJR0tJTEwpOworICBFWFBFQ1RfUFJFRDEocHJlZF9zZWd2LCBzdGF0
dXNfc2Vndik7CisgIEVYUEVDVF9QUkVEMShwcmVkX2tpbGwsIHN0YXR1c19raWxsKTsKKyAgRVhQ
RUNUX0ZBTFNFKHByZWRfc2VndihzdGF0dXNfa2lsbCkpOworICBFWFBFQ1RfRkFMU0UocHJlZF9r
aWxsKHN0YXR1c19zZWd2KSk7Cit9CisKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKwor
Ly8gVGVzdHMgdGhhdCB0aGUgZGVhdGggdGVzdCBtYWNyb3MgZXhwYW5kIHRvIGNvZGUgd2hpY2gg
bWF5IG9yIG1heSBub3QKKy8vIGJlIGZvbGxvd2VkIGJ5IG9wZXJhdG9yPDwsIGFuZCB0aGF0IGlu
IGVpdGhlciBjYXNlIHRoZSBjb21wbGV0ZSB0ZXh0CisvLyBjb21wcmlzZXMgb25seSBhIHNpbmds
ZSBDKysgc3RhdGVtZW50LgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFNpbmdsZVN0YXRlbWVu
dCkgeworICBpZiAoQWx3YXlzRmFsc2UoKSkKKyAgICAvLyBUaGlzIHdvdWxkIGZhaWwgaWYgZXhl
Y3V0ZWQ7IHRoaXMgaXMgYSBjb21waWxhdGlvbiB0ZXN0IG9ubHkKKyAgICBBU1NFUlRfREVBVEgo
cmV0dXJuLCAiIik7CisKKyAgaWYgKEFsd2F5c1RydWUoKSkKKyAgICBFWFBFQ1RfREVBVEgoX2V4
aXQoMSksICIiKTsKKyAgZWxzZQorICAgIC8vIFRoaXMgZW1wdHkgImVsc2UiIGJyYW5jaCBpcyBt
ZWFudCB0byBlbnN1cmUgdGhhdCBFWFBFQ1RfREVBVEgKKyAgICAvLyBkb2Vzbid0IGV4cGFuZCBp
bnRvIGFuICJpZiIgc3RhdGVtZW50IHdpdGhvdXQgYW4gImVsc2UiCisgICAgOworCisgIGlmIChB
bHdheXNGYWxzZSgpKQorICAgIEFTU0VSVF9ERUFUSChyZXR1cm4sICIiKSA8PCAiZGlkIG5vdCBk
aWUiOworCisgIGlmIChBbHdheXNGYWxzZSgpKQorICAgIDsKKyAgZWxzZQorICAgIEVYUEVDVF9E
RUFUSChfZXhpdCgxKSwgIiIpIDw8IDEgPDwgMiA8PCAzOworfQorCit2b2lkIERpZVdpdGhFbWJl
ZGRlZE51bCgpIHsKKyAgZnByaW50ZihzdGRlcnIsICJIZWxsbyVjbXkgbnVsbCB3b3JsZC5cbiIs
ICdcMCcpOworICBmZmx1c2goc3RkZXJyKTsKKyAgX2V4aXQoMSk7Cit9CisKKyMgaWYgR1RFU1Rf
VVNFU19QQ1JFCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9ERUFUSCBhbmQgQVNTRVJUX0RFQVRIIHdv
cmsgd2hlbiB0aGUgZXJyb3IKKy8vIG1lc3NhZ2UgaGFzIGEgTlVMIGNoYXJhY3RlciBpbiBpdC4K
K1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBFbWJlZGRlZE51bEluTWVzc2FnZSkgeworICAvLyBU
T0RPKHdhbkBnb29nbGUuY29tKTogPHJlZ2V4Lmg+IGRvZXNuJ3Qgc3VwcG9ydCBtYXRjaGluZyBz
dHJpbmdzCisgIC8vIHdpdGggZW1iZWRkZWQgTlVMIGNoYXJhY3RlcnMgLSBmaW5kIGEgd2F5IHRv
IHdvcmthcm91bmQgaXQuCisgIEVYUEVDVF9ERUFUSChEaWVXaXRoRW1iZWRkZWROdWwoKSwgIm15
IG51bGwgd29ybGQiKTsKKyAgQVNTRVJUX0RFQVRIKERpZVdpdGhFbWJlZGRlZE51bCgpLCAibXkg
bnVsbCB3b3JsZCIpOworfQorIyBlbmRpZiAgLy8gR1RFU1RfVVNFU19QQ1JFCisKKy8vIFRlc3Rz
IHRoYXQgZGVhdGggdGVzdCBtYWNyb3MgZXhwYW5kIHRvIGNvZGUgd2hpY2ggaW50ZXJhY3RzIHdl
bGwgd2l0aCBzd2l0Y2gKKy8vIHN0YXRlbWVudHMuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwg
U3dpdGNoU3RhdGVtZW50KSB7CisgIC8vIE1pY3Jvc29mdCBjb21waWxlciB1c3VhbGx5IGNvbXBs
YWlucyBhYm91dCBzd2l0Y2ggc3RhdGVtZW50cyB3aXRob3V0CisgIC8vIGNhc2UgbGFiZWxzLiBX
ZSBzdXBwcmVzcyB0aGF0IHdhcm5pbmcgZm9yIHRoaXMgdGVzdC4KKyAgR1RFU1RfRElTQUJMRV9N
U0NfV0FSTklOR1NfUFVTSF8oNDA2NSkKKworICBzd2l0Y2ggKDApCisgICAgZGVmYXVsdDoKKyAg
ICAgIEFTU0VSVF9ERUFUSChfZXhpdCgxKSwgIiIpIDw8ICJleGl0IGluIGRlZmF1bHQgc3dpdGNo
IGhhbmRsZXIiOworCisgIHN3aXRjaCAoMCkKKyAgICBjYXNlIDA6CisgICAgICBFWFBFQ1RfREVB
VEgoX2V4aXQoMSksICIiKSA8PCAiZXhpdCBpbiBzd2l0Y2ggY2FzZSI7CisKKyAgR1RFU1RfRElT
QUJMRV9NU0NfV0FSTklOR1NfUE9QXygpCit9CisKKy8vIFRlc3RzIHRoYXQgYSBzdGF0aWMgbWVt
YmVyIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIGluIGEgImZhc3QiIHN0eWxlCisvLyBkZWF0aCB0ZXN0
LgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFN0YXRpY01lbWJlckZ1bmN0aW9uRmFzdFN0eWxl
KSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7Cisg
IEFTU0VSVF9ERUFUSChTdGF0aWNNZW1iZXJGdW5jdGlvbigpLCAiZGVhdGguKlN0YXRpY01lbWJl
ciIpOworfQorCisvLyBUZXN0cyB0aGF0IGEgbWV0aG9kIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2Fu
IGJlIHVzZWQgaW4gYSAiZmFzdCIKKy8vIHN0eWxlIGRlYXRoIHRlc3QuCitURVNUX0YoVGVzdEZv
ckRlYXRoVGVzdCwgTWVtYmVyRnVuY3Rpb25GYXN0U3R5bGUpIHsKKyAgdGVzdGluZzo6R1RFU1Rf
RkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsKKyAgc2hvdWxkX2RpZV8gPSB0cnVlOwor
ICBFWFBFQ1RfREVBVEgoTWVtYmVyRnVuY3Rpb24oKSwgImluc2lkZS4qTWVtYmVyRnVuY3Rpb24i
KTsKK30KKwordm9pZCBDaGFuZ2VUb1Jvb3REaXIoKSB7IHBvc2l4OjpDaERpcihHVEVTVF9QQVRI
X1NFUF8pOyB9CisKKy8vIFRlc3RzIHRoYXQgZGVhdGggdGVzdHMgd29yayBldmVuIGlmIHRoZSBj
dXJyZW50IGRpcmVjdG9yeSBoYXMgYmVlbgorLy8gY2hhbmdlZC4KK1RFU1RfRihUZXN0Rm9yRGVh
dGhUZXN0LCBGYXN0RGVhdGhUZXN0SW5DaGFuZ2VkRGlyKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZM
QUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7CisKKyAgQ2hhbmdlVG9Sb290RGlyKCk7Cisg
IEVYUEVDVF9FWElUKF9leGl0KDEpLCB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgxKSwgIiIpOwor
CisgIENoYW5nZVRvUm9vdERpcigpOworICBBU1NFUlRfREVBVEgoX2V4aXQoMSksICIiKTsKK30K
KworIyBpZiBHVEVTVF9PU19MSU5VWAordm9pZCBTaWdwcm9mQWN0aW9uKGludCwgc2lnaW5mb190
Kiwgdm9pZCopIHsgLyogbm8gb3AgKi8gfQorCisvLyBTZXRzIFNJR1BST0YgYWN0aW9uIGFuZCBJ
VElNRVJfUFJPRiB0aW1lciAoaW50ZXJ2YWw6IDFtcykuCit2b2lkIFNldFNpZ3Byb2ZBY3Rpb25B
bmRUaW1lcigpIHsKKyAgc3RydWN0IGl0aW1lcnZhbCB0aW1lcjsKKyAgdGltZXIuaXRfaW50ZXJ2
YWwudHZfc2VjID0gMDsKKyAgdGltZXIuaXRfaW50ZXJ2YWwudHZfdXNlYyA9IDE7CisgIHRpbWVy
Lml0X3ZhbHVlID0gdGltZXIuaXRfaW50ZXJ2YWw7CisgIEFTU0VSVF9FUSgwLCBzZXRpdGltZXIo
SVRJTUVSX1BST0YsICZ0aW1lciwgTlVMTCkpOworICBzdHJ1Y3Qgc2lnYWN0aW9uIHNpZ25hbF9h
Y3Rpb247CisgIG1lbXNldCgmc2lnbmFsX2FjdGlvbiwgMCwgc2l6ZW9mKHNpZ25hbF9hY3Rpb24p
KTsKKyAgc2lnZW1wdHlzZXQoJnNpZ25hbF9hY3Rpb24uc2FfbWFzayk7CisgIHNpZ25hbF9hY3Rp
b24uc2Ffc2lnYWN0aW9uID0gU2lncHJvZkFjdGlvbjsKKyAgc2lnbmFsX2FjdGlvbi5zYV9mbGFn
cyA9IFNBX1JFU1RBUlQgfCBTQV9TSUdJTkZPOworICBBU1NFUlRfRVEoMCwgc2lnYWN0aW9uKFNJ
R1BST0YsICZzaWduYWxfYWN0aW9uLCBOVUxMKSk7Cit9CisKKy8vIERpc2FibGVzIElUSU1FUl9Q
Uk9GIHRpbWVyIGFuZCBpZ25vcmVzIFNJR1BST0Ygc2lnbmFsLgordm9pZCBEaXNhYmxlU2lncHJv
ZkFjdGlvbkFuZFRpbWVyKHN0cnVjdCBzaWdhY3Rpb24qIG9sZF9zaWduYWxfYWN0aW9uKSB7Cisg
IHN0cnVjdCBpdGltZXJ2YWwgdGltZXI7CisgIHRpbWVyLml0X2ludGVydmFsLnR2X3NlYyA9IDA7
CisgIHRpbWVyLml0X2ludGVydmFsLnR2X3VzZWMgPSAwOworICB0aW1lci5pdF92YWx1ZSA9IHRp
bWVyLml0X2ludGVydmFsOworICBBU1NFUlRfRVEoMCwgc2V0aXRpbWVyKElUSU1FUl9QUk9GLCAm
dGltZXIsIE5VTEwpKTsKKyAgc3RydWN0IHNpZ2FjdGlvbiBzaWduYWxfYWN0aW9uOworICBtZW1z
ZXQoJnNpZ25hbF9hY3Rpb24sIDAsIHNpemVvZihzaWduYWxfYWN0aW9uKSk7CisgIHNpZ2VtcHR5
c2V0KCZzaWduYWxfYWN0aW9uLnNhX21hc2spOworICBzaWduYWxfYWN0aW9uLnNhX2hhbmRsZXIg
PSBTSUdfSUdOOworICBBU1NFUlRfRVEoMCwgc2lnYWN0aW9uKFNJR1BST0YsICZzaWduYWxfYWN0
aW9uLCBvbGRfc2lnbmFsX2FjdGlvbikpOworfQorCisvLyBUZXN0cyB0aGF0IGRlYXRoIHRlc3Rz
IHdvcmsgd2hlbiBTSUdQUk9GIGhhbmRsZXIgYW5kIHRpbWVyIGFyZSBzZXQuCitURVNUX0YoVGVz
dEZvckRlYXRoVGVzdCwgRmFzdFNpZ3Byb2ZBY3Rpb25TZXQpIHsKKyAgdGVzdGluZzo6R1RFU1Rf
RkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsKKyAgU2V0U2lncHJvZkFjdGlvbkFuZFRp
bWVyKCk7CisgIEVYUEVDVF9ERUFUSChfZXhpdCgxKSwgIiIpOworICBzdHJ1Y3Qgc2lnYWN0aW9u
IG9sZF9zaWduYWxfYWN0aW9uOworICBEaXNhYmxlU2lncHJvZkFjdGlvbkFuZFRpbWVyKCZvbGRf
c2lnbmFsX2FjdGlvbik7CisgIEVYUEVDVF9UUlVFKG9sZF9zaWduYWxfYWN0aW9uLnNhX3NpZ2Fj
dGlvbiA9PSBTaWdwcm9mQWN0aW9uKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFRo
cmVhZFNhZmVTaWdwcm9mQWN0aW9uU2V0KSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhf
dGVzdF9zdHlsZSkgPSAidGhyZWFkc2FmZSI7CisgIFNldFNpZ3Byb2ZBY3Rpb25BbmRUaW1lcigp
OworICBFWFBFQ1RfREVBVEgoX2V4aXQoMSksICIiKTsKKyAgc3RydWN0IHNpZ2FjdGlvbiBvbGRf
c2lnbmFsX2FjdGlvbjsKKyAgRGlzYWJsZVNpZ3Byb2ZBY3Rpb25BbmRUaW1lcigmb2xkX3NpZ25h
bF9hY3Rpb24pOworICBFWFBFQ1RfVFJVRShvbGRfc2lnbmFsX2FjdGlvbi5zYV9zaWdhY3Rpb24g
PT0gU2lncHJvZkFjdGlvbik7Cit9CisjIGVuZGlmICAvLyBHVEVTVF9PU19MSU5VWAorCisvLyBS
ZXBlYXRzIGEgcmVwcmVzZW50YXRpdmUgc2FtcGxlIG9mIGRlYXRoIHRlc3RzIGluIHRoZSAidGhy
ZWFkc2FmZSIgc3R5bGU6CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBTdGF0aWNNZW1iZXJG
dW5jdGlvblRocmVhZHNhZmVTdHlsZSkgeworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rl
c3Rfc3R5bGUpID0gInRocmVhZHNhZmUiOworICBBU1NFUlRfREVBVEgoU3RhdGljTWVtYmVyRnVu
Y3Rpb24oKSwgImRlYXRoLipTdGF0aWNNZW1iZXIiKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0
aFRlc3QsIE1lbWJlckZ1bmN0aW9uVGhyZWFkc2FmZVN0eWxlKSB7CisgIHRlc3Rpbmc6OkdURVNU
X0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAidGhyZWFkc2FmZSI7CisgIHNob3VsZF9kaWVfID0g
dHJ1ZTsKKyAgRVhQRUNUX0RFQVRIKE1lbWJlckZ1bmN0aW9uKCksICJpbnNpZGUuKk1lbWJlckZ1
bmN0aW9uIik7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBUaHJlYWRzYWZlRGVhdGhU
ZXN0SW5Mb29wKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAi
dGhyZWFkc2FmZSI7CisKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyArK2kpCisgICAgRVhQRUNU
X0VYSVQoX2V4aXQoaSksIHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKGkpLCAiIikgPDwgIjogaSA9
ICIgPDwgaTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFRocmVhZHNhZmVEZWF0aFRl
c3RJbkNoYW5nZWREaXIpIHsKKyAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxl
KSA9ICJ0aHJlYWRzYWZlIjsKKworICBDaGFuZ2VUb1Jvb3REaXIoKTsKKyAgRVhQRUNUX0VYSVQo
X2V4aXQoMSksIHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDEpLCAiIik7CisKKyAgQ2hhbmdlVG9S
b290RGlyKCk7CisgIEFTU0VSVF9ERUFUSChfZXhpdCgxKSwgIiIpOworfQorCitURVNUX0YoVGVz
dEZvckRlYXRoVGVzdCwgTWl4ZWRTdHlsZXMpIHsKKyAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0
aF90ZXN0X3N0eWxlKSA9ICJ0aHJlYWRzYWZlIjsKKyAgRVhQRUNUX0RFQVRIKF9leGl0KDEpLCAi
Iik7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7Cisg
IEVYUEVDVF9ERUFUSChfZXhpdCgxKSwgIiIpOworfQorCisjIGlmIEdURVNUX0hBU19DTE9ORSAm
JiBHVEVTVF9IQVNfUFRIUkVBRAorCituYW1lc3BhY2UgeworCitib29sIHB0aHJlYWRfZmxhZzsK
Kwordm9pZCBTZXRQdGhyZWFkRmxhZygpIHsKKyAgcHRocmVhZF9mbGFnID0gdHJ1ZTsKK30KKwor
fSAgLy8gbmFtZXNwYWNlCisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBEb2VzTm90RXhlY3V0
ZUF0Zm9ya0hvb2tzKSB7CisgIGlmICghdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3Vz
ZV9mb3JrKSkgeworICAgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAi
dGhyZWFkc2FmZSI7CisgICAgcHRocmVhZF9mbGFnID0gZmFsc2U7CisgICAgQVNTRVJUX0VRKDAs
IHB0aHJlYWRfYXRmb3JrKCZTZXRQdGhyZWFkRmxhZywgTlVMTCwgTlVMTCkpOworICAgIEFTU0VS
VF9ERUFUSChfZXhpdCgxKSwgIiIpOworICAgIEFTU0VSVF9GQUxTRShwdGhyZWFkX2ZsYWcpOwor
ICB9Cit9CisKKyMgZW5kaWYgIC8vIEdURVNUX0hBU19DTE9ORSAmJiBHVEVTVF9IQVNfUFRIUkVB
RAorCisvLyBUZXN0cyB0aGF0IGEgbWV0aG9kIG9mIGFub3RoZXIgY2xhc3MgY2FuIGJlIHVzZWQg
aW4gYSBkZWF0aCB0ZXN0LgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIE1ldGhvZE9mQW5vdGhl
ckNsYXNzKSB7CisgIGNvbnN0IE1heURpZSB4KHRydWUpOworICBBU1NFUlRfREVBVEgoeC5NZW1i
ZXJGdW5jdGlvbigpLCAiTWF5RGllXFw6XFw6TWVtYmVyRnVuY3Rpb24iKTsKK30KKworLy8gVGVz
dHMgdGhhdCBhIGdsb2JhbCBmdW5jdGlvbiBjYW4gYmUgdXNlZCBpbiBhIGRlYXRoIHRlc3QuCitU
RVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgR2xvYmFsRnVuY3Rpb24pIHsKKyAgRVhQRUNUX0RFQVRI
KEdsb2JhbEZ1bmN0aW9uKCksICJHbG9iYWxGdW5jdGlvbiIpOworfQorCisvLyBUZXN0cyB0aGF0
IGFueSB2YWx1ZSBjb252ZXJ0aWJsZSB0byBhbiBSRSB3b3JrcyBhcyBhIHNlY29uZAorLy8gYXJn
dW1lbnQgdG8gRVhQRUNUX0RFQVRILgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEFjY2VwdHNB
bnl0aGluZ0NvbnZlcnRpYmxlVG9SRSkgeworICBzdGF0aWMgY29uc3QgY2hhciByZWdleF9jX3N0
cltdID0gIkdsb2JhbEZ1bmN0aW9uIjsKKyAgRVhQRUNUX0RFQVRIKEdsb2JhbEZ1bmN0aW9uKCks
IHJlZ2V4X2Nfc3RyKTsKKworICBjb25zdCB0ZXN0aW5nOjppbnRlcm5hbDo6UkUgcmVnZXgocmVn
ZXhfY19zdHIpOworICBFWFBFQ1RfREVBVEgoR2xvYmFsRnVuY3Rpb24oKSwgcmVnZXgpOworCisj
IGlmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisKKyAgY29uc3QgOjpzdHJpbmcgcmVnZXhfc3Ry
KHJlZ2V4X2Nfc3RyKTsKKyAgRVhQRUNUX0RFQVRIKEdsb2JhbEZ1bmN0aW9uKCksIHJlZ2V4X3N0
cik7CisKKyMgZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisKKyMgaWYgIUdURVNU
X1VTRVNfUENSRQorCisgIGNvbnN0IDo6c3RkOjpzdHJpbmcgcmVnZXhfc3RkX3N0cihyZWdleF9j
X3N0cik7CisgIEVYUEVDVF9ERUFUSChHbG9iYWxGdW5jdGlvbigpLCByZWdleF9zdGRfc3RyKTsK
KworIyBlbmRpZiAgLy8gIUdURVNUX1VTRVNfUENSRQorfQorCisvLyBUZXN0cyB0aGF0IGEgbm9u
LXZvaWQgZnVuY3Rpb24gY2FuIGJlIHVzZWQgaW4gYSBkZWF0aCB0ZXN0LgorVEVTVF9GKFRlc3RG
b3JEZWF0aFRlc3QsIE5vblZvaWRGdW5jdGlvbikgeworICBBU1NFUlRfREVBVEgoTm9uVm9pZEZ1
bmN0aW9uKCksICJOb25Wb2lkRnVuY3Rpb24iKTsKK30KKworLy8gVGVzdHMgdGhhdCBmdW5jdGlv
bnMgdGhhdCB0YWtlIHBhcmFtZXRlcihzKSBjYW4gYmUgdXNlZCBpbiBhIGRlYXRoIHRlc3QuCitU
RVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRnVuY3Rpb25XaXRoUGFyYW1ldGVyKSB7CisgIEVYUEVD
VF9ERUFUSChEaWVJZih0cnVlKSwgIkRpZUlmXFwoXFwpIik7CisgIEVYUEVDVF9ERUFUSChEaWVJ
Zkxlc3NUaGFuKDIsIDMpLCAiRGllSWZMZXNzVGhhbiIpOworfQorCisvLyBUZXN0cyB0aGF0IEFT
U0VSVF9ERUFUSCBjYW4gYmUgdXNlZCBvdXRzaWRlIGEgVEVTVCwgVEVTVF9GLCBvciB0ZXN0IGZp
eHR1cmUuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgT3V0c2lkZUZpeHR1cmUpIHsKKyAgRGVh
dGhUZXN0U3Vicm91dGluZSgpOworfQorCisvLyBUZXN0cyB0aGF0IGRlYXRoIHRlc3RzIGNhbiBi
ZSBkb25lIGluc2lkZSBhIGxvb3AuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgSW5zaWRlTG9v
cCkgeworICBmb3IgKGludCBpID0gMDsgaSA8IDU7IGkrKykgeworICAgIEVYUEVDVF9ERUFUSChE
aWVJZkxlc3NUaGFuKC0xLCBpKSwgIkRpZUlmTGVzc1RoYW4iKSA8PCAid2hlcmUgaSA9PSAiIDw8
IGk7CisgIH0KK30KKworLy8gVGVzdHMgdGhhdCBhIGNvbXBvdW5kIHN0YXRlbWVudCBjYW4gYmUg
dXNlZCBpbiBhIGRlYXRoIHRlc3QuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgQ29tcG91bmRT
dGF0ZW1lbnQpIHsKKyAgRVhQRUNUX0RFQVRIKHsgIC8vIE5PTElOVAorICAgIGNvbnN0IGludCB4
ID0gMjsKKyAgICBjb25zdCBpbnQgeSA9IHggKyAxOworICAgIERpZUlmTGVzc1RoYW4oeCwgeSk7
CisgIH0sCisgICJEaWVJZkxlc3NUaGFuIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgY29kZSB0aGF0
IGRvZXNuJ3QgZGllIGNhdXNlcyBhIGRlYXRoIHRlc3QgdG8gZmFpbC4KK1RFU1RfRihUZXN0Rm9y
RGVhdGhUZXN0LCBEb2VzTm90RGllKSB7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVD
VF9ERUFUSChEaWVJZihmYWxzZSksICJEaWVJZiIpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAiZmFpbGVkIHRvIGRpZSIpOworfQorCisvLyBUZXN0cyB0aGF0IGEgZGVhdGggdGVzdCBmYWls
cyB3aGVuIHRoZSBlcnJvciBtZXNzYWdlIGlzbid0IGV4cGVjdGVkLgorVEVTVF9GKFRlc3RGb3JE
ZWF0aFRlc3QsIEVycm9yTWVzc2FnZU1pc21hdGNoKSB7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKHsgIC8vIE5PTElOVAorICAgIEVYUEVDVF9ERUFUSChEaWVJZih0cnVlKSwgIkRpZUlmTGVz
c1RoYW4iKSA8PCAiRW5kIG9mIGRlYXRoIHRlc3QgbWVzc2FnZS4iOworICB9LCAiZGllZCBidXQg
bm90IHdpdGggZXhwZWN0ZWQgZXJyb3IiKTsKK30KKworLy8gT24gZXhpdCwgKmFib3J0ZWQgd2ls
bCBiZSB0cnVlIGlmZiB0aGUgRVhQRUNUX0RFQVRIKCkgc3RhdGVtZW50CisvLyBhYm9ydGVkIHRo
ZSBmdW5jdGlvbi4KK3ZvaWQgRXhwZWN0RGVhdGhUZXN0SGVscGVyKGJvb2wqIGFib3J0ZWQpIHsK
KyAgKmFib3J0ZWQgPSB0cnVlOworICBFWFBFQ1RfREVBVEgoRGllSWYoZmFsc2UpLCAiRGllSWYi
KTsgIC8vIFRoaXMgYXNzZXJ0aW9uIHNob3VsZCBmYWlsLgorICAqYWJvcnRlZCA9IGZhbHNlOwor
fQorCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9ERUFUSCBkb2Vzbid0IGFib3J0IHRoZSB0ZXN0IG9u
IGZhaWx1cmUuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRVhQRUNUX0RFQVRIKSB7CisgIGJv
b2wgYWJvcnRlZCA9IHRydWU7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEV4cGVjdERlYXRo
VGVzdEhlbHBlcigmYWJvcnRlZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICJmYWlsZWQg
dG8gZGllIik7CisgIEVYUEVDVF9GQUxTRShhYm9ydGVkKTsKK30KKworLy8gVGVzdHMgdGhhdCBB
U1NFUlRfREVBVEggZG9lcyBhYm9ydCB0aGUgdGVzdCBvbiBmYWlsdXJlLgorVEVTVF9GKFRlc3RG
b3JEZWF0aFRlc3QsIEFTU0VSVF9ERUFUSCkgeworICBzdGF0aWMgYm9vbCBhYm9ydGVkOworICBF
WFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBhYm9ydGVkID0gdHJ1ZTsKKyAg
ICBBU1NFUlRfREVBVEgoRGllSWYoZmFsc2UpLCAiRGllSWYiKTsgIC8vIFRoaXMgYXNzZXJ0aW9u
IHNob3VsZCBmYWlsLgorICAgIGFib3J0ZWQgPSBmYWxzZTsKKyAgfSwgImZhaWxlZCB0byBkaWUi
KTsKKyAgRVhQRUNUX1RSVUUoYWJvcnRlZCk7Cit9CisKKy8vIFRlc3RzIHRoYXQgRVhQRUNUX0RF
QVRIIGV2YWx1YXRlcyB0aGUgYXJndW1lbnRzIGV4YWN0bHkgb25jZS4KK1RFU1RfRihUZXN0Rm9y
RGVhdGhUZXN0LCBTaW5nbGVFdmFsdWF0aW9uKSB7CisgIGludCB4ID0gMzsKKyAgRVhQRUNUX0RF
QVRIKERpZUlmKCgrK3gpID09IDQpLCAiRGllSWYiKTsKKworICBjb25zdCBjaGFyKiByZWdleCA9
ICJEaWVJZiI7CisgIGNvbnN0IGNoYXIqIHJlZ2V4X3NhdmUgPSByZWdleDsKKyAgRVhQRUNUX0RF
QVRIKERpZUlmTGVzc1RoYW4oMywgNCksIHJlZ2V4KyspOworICBFWFBFQ1RfRVEocmVnZXhfc2F2
ZSArIDEsIHJlZ2V4KTsKK30KKworLy8gVGVzdHMgdGhhdCBydW4tYXdheSBkZWF0aCB0ZXN0cyBh
cmUgcmVwb3J0ZWQgYXMgZmFpbHVyZXMuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgUnVuYXdh
eUlzRmFpbHVyZSkgeworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfREVBVEgoc3Rh
dGljX2Nhc3Q8dm9pZD4oMCksICJGb28iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImZh
aWxlZCB0byBkaWUuIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgZGVhdGggdGVzdHMgcmVwb3J0IGV4
ZWN1dGluZyAncmV0dXJuJyBpbiB0aGUgc3RhdGVtZW50IGFzCisvLyBmYWlsdXJlLgorVEVTVF9G
KFRlc3RGb3JEZWF0aFRlc3QsIFJldHVybklzRmFpbHVyZSkgeworICBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRShBU1NFUlRfREVBVEgocmV0dXJuLCAiQmFyIiksCisgICAgICAgICAgICAgICAgICAgICAg
ICJpbGxlZ2FsIHJldHVybiBpbiB0ZXN0IHN0YXRlbWVudC4iKTsKK30KKworLy8gVGVzdHMgdGhh
dCBFWFBFQ1RfREVCVUdfREVBVEggd29ya3MgYXMgZXhwZWN0ZWQsIHRoYXQgaXMsIHlvdSBjYW4g
c3RyZWFtIGEKKy8vIG1lc3NhZ2UgdG8gaXQsIGFuZCBpbiBkZWJ1ZyBtb2RlIGl0OgorLy8gMS4g
QXNzZXJ0cyBvbiBkZWF0aC4KKy8vIDIuIEhhcyBubyBzaWRlIGVmZmVjdC4KKy8vCisvLyBBbmQg
aW4gb3B0IG1vZGUsIGl0OgorLy8gMS4gIEhhcyBzaWRlIGVmZmVjdHMgYnV0IGRvZXMgbm90IGFz
c2VydC4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBUZXN0RXhwZWN0RGVidWdEZWF0aCkgewor
ICBpbnQgc2lkZWVmZmVjdCA9IDA7CisKKyAgRVhQRUNUX0RFQlVHX0RFQVRIKERpZUluRGVidWdF
bHNlMTIoJnNpZGVlZmZlY3QpLCAiZGVhdGguKkRpZUluRGVidWdFbHNlMTIiKQorICAgICAgPDwg
Ik11c3QgYWNjZXB0IGEgc3RyZWFtZWQgbWVzc2FnZSI7CisKKyMgaWZkZWYgTkRFQlVHCisKKyAg
Ly8gQ2hlY2tzIHRoYXQgdGhlIGFzc2lnbm1lbnQgb2NjdXJzIGluIG9wdCBtb2RlIChzaWRlZWZm
ZWN0KS4KKyAgRVhQRUNUX0VRKDEyLCBzaWRlZWZmZWN0KTsKKworIyBlbHNlCisKKyAgLy8gQ2hl
Y2tzIHRoYXQgdGhlIGFzc2lnbm1lbnQgZG9lcyBub3Qgb2NjdXIgaW4gZGJnIG1vZGUgKG5vIHNp
ZGVlZmZlY3QpLgorICBFWFBFQ1RfRVEoMCwgc2lkZWVmZmVjdCk7CisKKyMgZW5kaWYKK30KKwor
Ly8gVGVzdHMgdGhhdCBBU1NFUlRfREVCVUdfREVBVEggd29ya3MgYXMgZXhwZWN0ZWQsIHRoYXQg
aXMsIHlvdSBjYW4gc3RyZWFtIGEKKy8vIG1lc3NhZ2UgdG8gaXQsIGFuZCBpbiBkZWJ1ZyBtb2Rl
IGl0OgorLy8gMS4gQXNzZXJ0cyBvbiBkZWF0aC4KKy8vIDIuIEhhcyBubyBzaWRlIGVmZmVjdC4K
Ky8vCisvLyBBbmQgaW4gb3B0IG1vZGUsIGl0OgorLy8gMS4gIEhhcyBzaWRlIGVmZmVjdHMgYnV0
IGRvZXMgbm90IGFzc2VydC4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBUZXN0QXNzZXJ0RGVi
dWdEZWF0aCkgeworICBpbnQgc2lkZWVmZmVjdCA9IDA7CisKKyAgQVNTRVJUX0RFQlVHX0RFQVRI
KERpZUluRGVidWdFbHNlMTIoJnNpZGVlZmZlY3QpLCAiZGVhdGguKkRpZUluRGVidWdFbHNlMTIi
KQorICAgICAgPDwgIk11c3QgYWNjZXB0IGEgc3RyZWFtZWQgbWVzc2FnZSI7CisKKyMgaWZkZWYg
TkRFQlVHCisKKyAgLy8gQ2hlY2tzIHRoYXQgdGhlIGFzc2lnbm1lbnQgb2NjdXJzIGluIG9wdCBt
b2RlIChzaWRlZWZmZWN0KS4KKyAgRVhQRUNUX0VRKDEyLCBzaWRlZWZmZWN0KTsKKworIyBlbHNl
CisKKyAgLy8gQ2hlY2tzIHRoYXQgdGhlIGFzc2lnbm1lbnQgZG9lcyBub3Qgb2NjdXIgaW4gZGJn
IG1vZGUgKG5vIHNpZGVlZmZlY3QpLgorICBFWFBFQ1RfRVEoMCwgc2lkZWVmZmVjdCk7CisKKyMg
ZW5kaWYKK30KKworIyBpZm5kZWYgTkRFQlVHCisKK3ZvaWQgRXhwZWN0RGVidWdEZWF0aEhlbHBl
cihib29sKiBhYm9ydGVkKSB7CisgICphYm9ydGVkID0gdHJ1ZTsKKyAgRVhQRUNUX0RFQlVHX0RF
QVRIKHJldHVybiwgIiIpIDw8ICJUaGlzIGlzIGV4cGVjdGVkIHRvIGZhaWwuIjsKKyAgKmFib3J0
ZWQgPSBmYWxzZTsKK30KKworIyAgaWYgR1RFU1RfT1NfV0lORE9XUworVEVTVChQb3BVcERlYXRo
VGVzdCwgRG9lc05vdFNob3dQb3BVcE9uQWJvcnQpIHsKKyAgcHJpbnRmKCJUaGlzIHRlc3Qgc2hv
dWxkIGJlIGNvbnNpZGVyZWQgZmFpbGluZyBpZiBpdCBzaG93cyAiCisgICAgICAgICAiYW55IHBv
cC11cCBkaWFsb2dzLlxuIik7CisgIGZmbHVzaChzdGRvdXQpOworCisgIEVYUEVDVF9ERUFUSCh7
CisgICAgdGVzdGluZzo6R1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSA9IGZhbHNlOworICAg
IGFib3J0KCk7CisgIH0sICIiKTsKK30KKyMgIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisK
Ky8vIFRlc3RzIHRoYXQgRVhQRUNUX0RFQlVHX0RFQVRIIGluIGRlYnVnIG1vZGUgZG9lcyBub3Qg
YWJvcnQKKy8vIHRoZSBmdW5jdGlvbi4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBFeHBlY3RE
ZWJ1Z0RlYXRoRG9lc05vdEFib3J0KSB7CisgIGJvb2wgYWJvcnRlZCA9IHRydWU7CisgIEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFKEV4cGVjdERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7
CisgIEVYUEVDVF9GQUxTRShhYm9ydGVkKTsKK30KKwordm9pZCBBc3NlcnREZWJ1Z0RlYXRoSGVs
cGVyKGJvb2wqIGFib3J0ZWQpIHsKKyAgKmFib3J0ZWQgPSB0cnVlOworICBHVEVTVF9MT0dfKElO
Rk8pIDw8ICJCZWZvcmUgQVNTRVJUX0RFQlVHX0RFQVRIIjsKKyAgQVNTRVJUX0RFQlVHX0RFQVRI
KEdURVNUX0xPR18oSU5GTykgPDwgIkluIEFTU0VSVF9ERUJVR19ERUFUSCI7IHJldHVybiwgIiIp
CisgICAgICA8PCAiVGhpcyBpcyBleHBlY3RlZCB0byBmYWlsLiI7CisgIEdURVNUX0xPR18oSU5G
TykgPDwgIkFmdGVyIEFTU0VSVF9ERUJVR19ERUFUSCI7CisgICphYm9ydGVkID0gZmFsc2U7Cit9
CisKKy8vIFRlc3RzIHRoYXQgQVNTRVJUX0RFQlVHX0RFQVRIIGluIGRlYnVnIG1vZGUgYWJvcnRz
IHRoZSBmdW5jdGlvbiBvbgorLy8gZmFpbHVyZS4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBB
c3NlcnREZWJ1Z0RlYXRoQWJvcnRzKSB7CisgIHN0YXRpYyBib29sIGFib3J0ZWQ7CisgIGFib3J0
ZWQgPSBmYWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQXNzZXJ0RGVidWdEZWF0aEhlbHBl
cigmYWJvcnRlZCksICIiKTsKKyAgRVhQRUNUX1RSVUUoYWJvcnRlZCk7Cit9CisKK1RFU1RfRihU
ZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRoQWJvcnRzMikgeworICBzdGF0aWMgYm9v
bCBhYm9ydGVkOworICBhYm9ydGVkID0gZmFsc2U7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFz
c2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7CisgIEVYUEVDVF9UUlVFKGFib3J0
ZWQpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgQXNzZXJ0RGVidWdEZWF0aEFib3J0
czMpIHsKKyAgc3RhdGljIGJvb2wgYWJvcnRlZDsKKyAgYWJvcnRlZCA9IGZhbHNlOworICBFWFBF
Q1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRoSGVscGVyKCZhYm9ydGVkKSwgIiIpOwor
ICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEFz
c2VydERlYnVnRGVhdGhBYm9ydHM0KSB7CisgIHN0YXRpYyBib29sIGFib3J0ZWQ7CisgIGFib3J0
ZWQgPSBmYWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQXNzZXJ0RGVidWdEZWF0aEhlbHBl
cigmYWJvcnRlZCksICIiKTsKKyAgRVhQRUNUX1RSVUUoYWJvcnRlZCk7Cit9CisKK1RFU1RfRihU
ZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRoQWJvcnRzNSkgeworICBzdGF0aWMgYm9v
bCBhYm9ydGVkOworICBhYm9ydGVkID0gZmFsc2U7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFz
c2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7CisgIEVYUEVDVF9UUlVFKGFib3J0
ZWQpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgQXNzZXJ0RGVidWdEZWF0aEFib3J0
czYpIHsKKyAgc3RhdGljIGJvb2wgYWJvcnRlZDsKKyAgYWJvcnRlZCA9IGZhbHNlOworICBFWFBF
Q1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRoSGVscGVyKCZhYm9ydGVkKSwgIiIpOwor
ICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEFz
c2VydERlYnVnRGVhdGhBYm9ydHM3KSB7CisgIHN0YXRpYyBib29sIGFib3J0ZWQ7CisgIGFib3J0
ZWQgPSBmYWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQXNzZXJ0RGVidWdEZWF0aEhlbHBl
cigmYWJvcnRlZCksICIiKTsKKyAgRVhQRUNUX1RSVUUoYWJvcnRlZCk7Cit9CisKK1RFU1RfRihU
ZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRoQWJvcnRzOCkgeworICBzdGF0aWMgYm9v
bCBhYm9ydGVkOworICBhYm9ydGVkID0gZmFsc2U7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFz
c2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7CisgIEVYUEVDVF9UUlVFKGFib3J0
ZWQpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgQXNzZXJ0RGVidWdEZWF0aEFib3J0
czkpIHsKKyAgc3RhdGljIGJvb2wgYWJvcnRlZDsKKyAgYWJvcnRlZCA9IGZhbHNlOworICBFWFBF
Q1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRoSGVscGVyKCZhYm9ydGVkKSwgIiIpOwor
ICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEFz
c2VydERlYnVnRGVhdGhBYm9ydHMxMCkgeworICBzdGF0aWMgYm9vbCBhYm9ydGVkOworICBhYm9y
dGVkID0gZmFsc2U7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFzc2VydERlYnVnRGVhdGhIZWxw
ZXIoJmFib3J0ZWQpLCAiIik7CisgIEVYUEVDVF9UUlVFKGFib3J0ZWQpOworfQorCisjIGVuZGlm
ICAvLyBfTkRFQlVHCisKKy8vIFRlc3RzIHRoZSAqX0VYSVQgZmFtaWx5IG9mIG1hY3JvcywgdXNp
bmcgYSB2YXJpZXR5IG9mIHByZWRpY2F0ZXMuCitzdGF0aWMgdm9pZCBUZXN0RXhpdE1hY3Jvcygp
IHsKKyAgRVhQRUNUX0VYSVQoX2V4aXQoMSksICB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgxKSwg
ICIiKTsKKyAgQVNTRVJUX0VYSVQoX2V4aXQoNDIpLCB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSg0
MiksICIiKTsKKworIyBpZiBHVEVTVF9PU19XSU5ET1dTCisKKyAgLy8gT2YgYWxsIHNpZ25hbHMg
ZWZmZWN0cyBvbiB0aGUgcHJvY2VzcyBleGl0IGNvZGUsIG9ubHkgdGhvc2Ugb2YgU0lHQUJSVAor
ICAvLyBhcmUgZG9jdW1lbnRlZCBvbiBXaW5kb3dzLgorICAvLyBTZWUgaHR0cDovL21zZG4ubWlj
cm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2R3d3prdDRjKFZTLjcxKS5hc3B4LgorICBFWFBFQ1Rf
RVhJVChyYWlzZShTSUdBQlJUKSwgdGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMyksICIiKSA8PCAi
Yl9hciI7CisKKyMgZWxzZQorCisgIEVYUEVDVF9FWElUKHJhaXNlKFNJR0tJTEwpLCB0ZXN0aW5n
OjpLaWxsZWRCeVNpZ25hbChTSUdLSUxMKSwgIiIpIDw8ICJmb28iOworICBBU1NFUlRfRVhJVChy
YWlzZShTSUdVU1IyKSwgdGVzdGluZzo6S2lsbGVkQnlTaWduYWwoU0lHVVNSMiksICIiKSA8PCAi
YmFyIjsKKworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBBU1NFUlRf
RVhJVChfZXhpdCgwKSwgdGVzdGluZzo6S2lsbGVkQnlTaWduYWwoU0lHU0VHViksICIiKQorICAg
ICAgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgdG9vLiI7CisgIH0sICJUaGlzIGZhaWx1
cmUgaXMgZXhwZWN0ZWQsIHRvby4iKTsKKworIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwor
CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEVYUEVDVF9FWElU
KHJhaXNlKFNJR1NFR1YpLCB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgwKSwgIiIpCisgICAgICA8
PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLiI7CisgIH0sICJUaGlzIGZhaWx1cmUgaXMgZXhw
ZWN0ZWQuIik7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBFeGl0TWFjcm9zKSB7Cisg
IFRlc3RFeGl0TWFjcm9zKCk7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBFeGl0TWFj
cm9zVXNpbmdGb3JrKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF91c2VfZm9y
aykgPSB0cnVlOworICBUZXN0RXhpdE1hY3JvcygpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRo
VGVzdCwgSW52YWxpZFN0eWxlKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9z
dHlsZSkgPSAicm9jb2NvIjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5U
CisgICAgRVhQRUNUX0RFQVRIKF9leGl0KDApLCAiIikgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBl
Y3RlZC4iOworICB9LCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLiIpOworfQorCitURVNUX0Yo
VGVzdEZvckRlYXRoVGVzdCwgRGVhdGhUZXN0RmFpbGVkT3V0cHV0KSB7CisgIHRlc3Rpbmc6OkdU
RVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7CisgIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKAorICAgICAgRVhQRUNUX0RFQVRIKERpZVdpdGhNZXNzYWdlKCJkZWF0aFxuIiksCisg
ICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIG1lc3NhZ2UiKSwKKyAgICAgICJBY3R1YWwgbXNn
OlxuIgorICAgICAgIlsgIERFQVRIICAgXSBkZWF0aFxuIik7Cit9CisKK1RFU1RfRihUZXN0Rm9y
RGVhdGhUZXN0LCBEZWF0aFRlc3RVbmV4cGVjdGVkUmV0dXJuT3V0cHV0KSB7CisgIHRlc3Rpbmc6
OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7CisgIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKAorICAgICAgRVhQRUNUX0RFQVRIKHsKKyAgICAgICAgICBmcHJpbnRmKHN0ZGVy
ciwgInJldHVybmluZ1xuIik7CisgICAgICAgICAgZmZsdXNoKHN0ZGVycik7CisgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9LCAiIiksCisgICAgICAiICAgIFJlc3VsdDogaWxsZWdhbCByZXR1
cm4gaW4gdGVzdCBzdGF0ZW1lbnQuXG4iCisgICAgICAiIEVycm9yIG1zZzpcbiIKKyAgICAgICJb
ICBERUFUSCAgIF0gcmV0dXJuaW5nXG4iKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3Qs
IERlYXRoVGVzdEJhZEV4aXRDb2RlT3V0cHV0KSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVh
dGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKAorICAg
ICAgRVhQRUNUX0VYSVQoRGllV2l0aE1lc3NhZ2UoImV4aXRpbmcgd2l0aCByYyAxXG4iKSwKKyAg
ICAgICAgICAgICAgICAgIHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDMpLAorICAgICAgICAgICAg
ICAgICAgImV4cGVjdGVkIG1lc3NhZ2UiKSwKKyAgICAgICIgICAgUmVzdWx0OiBkaWVkIGJ1dCBu
b3Qgd2l0aCBleHBlY3RlZCBleGl0IGNvZGU6XG4iCisgICAgICAiICAgICAgICAgICAgRXhpdGVk
IHdpdGggZXhpdCBzdGF0dXMgMVxuIgorICAgICAgIkFjdHVhbCBtc2c6XG4iCisgICAgICAiWyAg
REVBVEggICBdIGV4aXRpbmcgd2l0aCByYyAxXG4iKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0
aFRlc3QsIERlYXRoVGVzdE11bHRpTGluZU1hdGNoRmFpbCkgeworICB0ZXN0aW5nOjpHVEVTVF9G
TEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3QiOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RSgKKyAgICAgIEVYUEVDVF9ERUFUSChEaWVXaXRoTWVzc2FnZSgibGluZSAxXG5saW5lIDJcbmxp
bmUgM1xuIiksCisgICAgICAgICAgICAgICAgICAgImxpbmUgMVxueHl6XG5saW5lIDNcbiIpLAor
ICAgICAgIkFjdHVhbCBtc2c6XG4iCisgICAgICAiWyAgREVBVEggICBdIGxpbmUgMVxuIgorICAg
ICAgIlsgIERFQVRIICAgXSBsaW5lIDJcbiIKKyAgICAgICJbICBERUFUSCAgIF0gbGluZSAzXG4i
KTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIERlYXRoVGVzdE11bHRpTGluZU1hdGNo
UGFzcykgeworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3Qi
OworICBFWFBFQ1RfREVBVEgoRGllV2l0aE1lc3NhZ2UoImxpbmUgMVxubGluZSAyXG5saW5lIDNc
biIpLAorICAgICAgICAgICAgICAgImxpbmUgMVxubGluZSAyXG5saW5lIDNcbiIpOworfQorCisv
LyBBIERlYXRoVGVzdEZhY3RvcnkgdGhhdCByZXR1cm5zIE1vY2tEZWF0aFRlc3RzLgorY2xhc3Mg
TW9ja0RlYXRoVGVzdEZhY3RvcnkgOiBwdWJsaWMgRGVhdGhUZXN0RmFjdG9yeSB7CisgcHVibGlj
OgorICBNb2NrRGVhdGhUZXN0RmFjdG9yeSgpOworICB2aXJ0dWFsIGJvb2wgQ3JlYXRlKGNvbnN0
IGNoYXIqIHN0YXRlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCA6OnRlc3Rpbmc6
OmludGVybmFsOjpSRSogcmVnZXgsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
ZmlsZSwgaW50IGxpbmUsIERlYXRoVGVzdCoqIHRlc3QpOworCisgIC8vIFNldHMgdGhlIHBhcmFt
ZXRlcnMgZm9yIHN1YnNlcXVlbnQgY2FsbHMgdG8gQ3JlYXRlLgorICB2b2lkIFNldFBhcmFtZXRl
cnMoYm9vbCBjcmVhdGUsIERlYXRoVGVzdDo6VGVzdFJvbGUgcm9sZSwKKyAgICAgICAgICAgICAg
ICAgICAgIGludCBzdGF0dXMsIGJvb2wgcGFzc2VkKTsKKworICAvLyBBY2Nlc3NvcnMuCisgIGlu
dCBBc3N1bWVSb2xlQ2FsbHMoKSBjb25zdCB7IHJldHVybiBhc3N1bWVfcm9sZV9jYWxsc187IH0K
KyAgaW50IFdhaXRDYWxscygpIGNvbnN0IHsgcmV0dXJuIHdhaXRfY2FsbHNfOyB9CisgIHNpemVf
dCBQYXNzZWRDYWxscygpIGNvbnN0IHsgcmV0dXJuIHBhc3NlZF9hcmdzXy5zaXplKCk7IH0KKyAg
Ym9vbCBQYXNzZWRBcmd1bWVudChpbnQgbikgY29uc3QgeyByZXR1cm4gcGFzc2VkX2FyZ3NfW25d
OyB9CisgIHNpemVfdCBBYm9ydENhbGxzKCkgY29uc3QgeyByZXR1cm4gYWJvcnRfYXJnc18uc2l6
ZSgpOyB9CisgIERlYXRoVGVzdDo6QWJvcnRSZWFzb24gQWJvcnRBcmd1bWVudChpbnQgbikgY29u
c3QgeworICAgIHJldHVybiBhYm9ydF9hcmdzX1tuXTsKKyAgfQorICBib29sIFRlc3REZWxldGVk
KCkgY29uc3QgeyByZXR1cm4gdGVzdF9kZWxldGVkXzsgfQorCisgcHJpdmF0ZToKKyAgZnJpZW5k
IGNsYXNzIE1vY2tEZWF0aFRlc3Q7CisgIC8vIElmIHRydWUsIENyZWF0ZSB3aWxsIHJldHVybiBh
IE1vY2tEZWF0aFRlc3Q7IG90aGVyd2lzZSBpdCByZXR1cm5zCisgIC8vIE5VTEwuCisgIGJvb2wg
Y3JlYXRlXzsKKyAgLy8gVGhlIHZhbHVlIGEgTW9ja0RlYXRoVGVzdCB3aWxsIHJldHVybiBmcm9t
IGl0cyBBc3N1bWVSb2xlIG1ldGhvZC4KKyAgRGVhdGhUZXN0OjpUZXN0Um9sZSByb2xlXzsKKyAg
Ly8gVGhlIHZhbHVlIGEgTW9ja0RlYXRoVGVzdCB3aWxsIHJldHVybiBmcm9tIGl0cyBXYWl0IG1l
dGhvZC4KKyAgaW50IHN0YXR1c187CisgIC8vIFRoZSB2YWx1ZSBhIE1vY2tEZWF0aFRlc3Qgd2ls
bCByZXR1cm4gZnJvbSBpdHMgUGFzc2VkIG1ldGhvZC4KKyAgYm9vbCBwYXNzZWRfOworCisgIC8v
IE51bWJlciBvZiB0aW1lcyBBc3N1bWVSb2xlIHdhcyBjYWxsZWQuCisgIGludCBhc3N1bWVfcm9s
ZV9jYWxsc187CisgIC8vIE51bWJlciBvZiB0aW1lcyBXYWl0IHdhcyBjYWxsZWQuCisgIGludCB3
YWl0X2NhbGxzXzsKKyAgLy8gVGhlIGFyZ3VtZW50cyB0byB0aGUgY2FsbHMgdG8gUGFzc2VkIHNp
bmNlIHRoZSBsYXN0IGNhbGwgdG8KKyAgLy8gU2V0UGFyYW1ldGVycy4KKyAgc3RkOjp2ZWN0b3I8
Ym9vbD4gcGFzc2VkX2FyZ3NfOworICAvLyBUaGUgYXJndW1lbnRzIHRvIHRoZSBjYWxscyB0byBB
Ym9ydCBzaW5jZSB0aGUgbGFzdCBjYWxsIHRvCisgIC8vIFNldFBhcmFtZXRlcnMuCisgIHN0ZDo6
dmVjdG9yPERlYXRoVGVzdDo6QWJvcnRSZWFzb24+IGFib3J0X2FyZ3NfOworICAvLyBUcnVlIGlm
IHRoZSBsYXN0IE1vY2tEZWF0aFRlc3QgcmV0dXJuZWQgYnkgQ3JlYXRlIGhhcyBiZWVuCisgIC8v
IGRlbGV0ZWQuCisgIGJvb2wgdGVzdF9kZWxldGVkXzsKK307CisKKworLy8gQSBEZWF0aFRlc3Qg
aW1wbGVtZW50YXRpb24gdXNlZnVsIGluIHRlc3RpbmcuICBJdCByZXR1cm5zIHZhbHVlcyBzZXQK
Ky8vIGF0IGl0cyBjcmVhdGlvbiBmcm9tIGl0cyB2YXJpb3VzIGluaGVyaXRlZCBEZWF0aFRlc3Qg
bWV0aG9kcywgYW5kCisvLyByZXBvcnRzIGNhbGxzIHRvIHRob3NlIG1ldGhvZHMgdG8gaXRzIHBh
cmVudCBNb2NrRGVhdGhUZXN0RmFjdG9yeQorLy8gb2JqZWN0LgorY2xhc3MgTW9ja0RlYXRoVGVz
dCA6IHB1YmxpYyBEZWF0aFRlc3QgeworIHB1YmxpYzoKKyAgTW9ja0RlYXRoVGVzdChNb2NrRGVh
dGhUZXN0RmFjdG9yeSAqcGFyZW50LAorICAgICAgICAgICAgICAgIFRlc3RSb2xlIHJvbGUsIGlu
dCBzdGF0dXMsIGJvb2wgcGFzc2VkKSA6CisgICAgICBwYXJlbnRfKHBhcmVudCksIHJvbGVfKHJv
bGUpLCBzdGF0dXNfKHN0YXR1cyksIHBhc3NlZF8ocGFzc2VkKSB7CisgIH0KKyAgdmlydHVhbCB+
TW9ja0RlYXRoVGVzdCgpIHsKKyAgICBwYXJlbnRfLT50ZXN0X2RlbGV0ZWRfID0gdHJ1ZTsKKyAg
fQorICB2aXJ0dWFsIFRlc3RSb2xlIEFzc3VtZVJvbGUoKSB7CisgICAgKytwYXJlbnRfLT5hc3N1
bWVfcm9sZV9jYWxsc187CisgICAgcmV0dXJuIHJvbGVfOworICB9CisgIHZpcnR1YWwgaW50IFdh
aXQoKSB7CisgICAgKytwYXJlbnRfLT53YWl0X2NhbGxzXzsKKyAgICByZXR1cm4gc3RhdHVzXzsK
KyAgfQorICB2aXJ0dWFsIGJvb2wgUGFzc2VkKGJvb2wgZXhpdF9zdGF0dXNfb2spIHsKKyAgICBw
YXJlbnRfLT5wYXNzZWRfYXJnc18ucHVzaF9iYWNrKGV4aXRfc3RhdHVzX29rKTsKKyAgICByZXR1
cm4gcGFzc2VkXzsKKyAgfQorICB2aXJ0dWFsIHZvaWQgQWJvcnQoQWJvcnRSZWFzb24gcmVhc29u
KSB7CisgICAgcGFyZW50Xy0+YWJvcnRfYXJnc18ucHVzaF9iYWNrKHJlYXNvbik7CisgIH0KKwor
IHByaXZhdGU6CisgIE1vY2tEZWF0aFRlc3RGYWN0b3J5KiBjb25zdCBwYXJlbnRfOworICBjb25z
dCBUZXN0Um9sZSByb2xlXzsKKyAgY29uc3QgaW50IHN0YXR1c187CisgIGNvbnN0IGJvb2wgcGFz
c2VkXzsKK307CisKKworLy8gTW9ja0RlYXRoVGVzdEZhY3RvcnkgY29uc3RydWN0b3IuCitNb2Nr
RGVhdGhUZXN0RmFjdG9yeTo6TW9ja0RlYXRoVGVzdEZhY3RvcnkoKQorICAgIDogY3JlYXRlXyh0
cnVlKSwKKyAgICAgIHJvbGVfKERlYXRoVGVzdDo6T1ZFUlNFRV9URVNUKSwKKyAgICAgIHN0YXR1
c18oMCksCisgICAgICBwYXNzZWRfKHRydWUpLAorICAgICAgYXNzdW1lX3JvbGVfY2FsbHNfKDAp
LAorICAgICAgd2FpdF9jYWxsc18oMCksCisgICAgICBwYXNzZWRfYXJnc18oKSwKKyAgICAgIGFi
b3J0X2FyZ3NfKCkgeworfQorCisKKy8vIFNldHMgdGhlIHBhcmFtZXRlcnMgZm9yIHN1YnNlcXVl
bnQgY2FsbHMgdG8gQ3JlYXRlLgordm9pZCBNb2NrRGVhdGhUZXN0RmFjdG9yeTo6U2V0UGFyYW1l
dGVycyhib29sIGNyZWF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRGVhdGhUZXN0OjpUZXN0Um9sZSByb2xlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgc3RhdHVzLCBib29sIHBhc3NlZCkgeworICBjcmVhdGVfID0gY3Jl
YXRlOworICByb2xlXyA9IHJvbGU7CisgIHN0YXR1c18gPSBzdGF0dXM7CisgIHBhc3NlZF8gPSBw
YXNzZWQ7CisKKyAgYXNzdW1lX3JvbGVfY2FsbHNfID0gMDsKKyAgd2FpdF9jYWxsc18gPSAwOwor
ICBwYXNzZWRfYXJnc18uY2xlYXIoKTsKKyAgYWJvcnRfYXJnc18uY2xlYXIoKTsKK30KKworCisv
LyBTZXRzIHRlc3QgdG8gTlVMTCAoaWYgY3JlYXRlXyBpcyBmYWxzZSkgb3IgdG8gdGhlIGFkZHJl
c3Mgb2YgYSBuZXcKKy8vIE1vY2tEZWF0aFRlc3Qgb2JqZWN0IHdpdGggcGFyYW1ldGVycyB0YWtl
biBmcm9tIHRoZSBsYXN0IGNhbGwKKy8vIHRvIFNldFBhcmFtZXRlcnMgKGlmIGNyZWF0ZV8gaXMg
dHJ1ZSkuICBBbHdheXMgcmV0dXJucyB0cnVlLgorYm9vbCBNb2NrRGVhdGhUZXN0RmFjdG9yeTo6
Q3JlYXRlKGNvbnN0IGNoYXIqIC8qc3RhdGVtZW50Ki8sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UkUqIC8qcmVnZXgqLywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAvKmZpbGUqLywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgLypsaW5lKi8sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRGVhdGhUZXN0KiogdGVzdCkgeworICB0ZXN0X2RlbGV0
ZWRfID0gZmFsc2U7CisgIGlmIChjcmVhdGVfKSB7CisgICAgKnRlc3QgPSBuZXcgTW9ja0RlYXRo
VGVzdCh0aGlzLCByb2xlXywgc3RhdHVzXywgcGFzc2VkXyk7CisgIH0gZWxzZSB7CisgICAgKnRl
c3QgPSBOVUxMOworICB9CisgIHJldHVybiB0cnVlOworfQorCisvLyBBIHRlc3QgZml4dHVyZSBm
b3IgdGVzdGluZyB0aGUgbG9naWMgb2YgdGhlIEdURVNUX0RFQVRIX1RFU1RfIG1hY3JvLgorLy8g
SXQgaW5zdGFsbHMgYSBNb2NrRGVhdGhUZXN0RmFjdG9yeSB0aGF0IGlzIHVzZWQgZm9yIHRoZSBk
dXJhdGlvbgorLy8gb2YgdGhlIHRlc3QgY2FzZS4KK2NsYXNzIE1hY3JvTG9naWNEZWF0aFRlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICBzdGF0aWMgdGVzdGluZzo6
aW50ZXJuYWw6OlJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5KiByZXBsYWNlcl87CisgIHN0YXRpYyBN
b2NrRGVhdGhUZXN0RmFjdG9yeSogZmFjdG9yeV87CisKKyAgc3RhdGljIHZvaWQgU2V0VXBUZXN0
Q2FzZSgpIHsKKyAgICBmYWN0b3J5XyA9IG5ldyBNb2NrRGVhdGhUZXN0RmFjdG9yeTsKKyAgICBy
ZXBsYWNlcl8gPSBuZXcgdGVzdGluZzo6aW50ZXJuYWw6OlJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5
KGZhY3RvcnlfKTsKKyAgfQorCisgIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7Cisg
ICAgZGVsZXRlIHJlcGxhY2VyXzsKKyAgICByZXBsYWNlcl8gPSBOVUxMOworICAgIGRlbGV0ZSBm
YWN0b3J5XzsKKyAgICBmYWN0b3J5XyA9IE5VTEw7CisgIH0KKworICAvLyBSdW5zIGEgZGVhdGgg
dGVzdCB0aGF0IGJyZWFrcyB0aGUgcnVsZXMgYnkgcmV0dXJuaW5nLiAgU3VjaCBhIGRlYXRoCisg
IC8vIHRlc3QgY2Fubm90IGJlIHJ1biBkaXJlY3RseSBmcm9tIGEgdGVzdCByb3V0aW5lIHRoYXQg
dXNlcyBhCisgIC8vIE1vY2tEZWF0aFRlc3QsIG9yIHRoZSByZW1haW5kZXIgb2YgdGhlIHJvdXRp
bmUgd2lsbCBub3QgYmUgZXhlY3V0ZWQuCisgIHN0YXRpYyB2b2lkIFJ1blJldHVybmluZ0RlYXRo
VGVzdChib29sKiBmbGFnKSB7CisgICAgQVNTRVJUX0RFQVRIKHsgIC8vIE5PTElOVAorICAgICAg
KmZsYWcgPSB0cnVlOworICAgICAgcmV0dXJuOworICAgIH0sICIiKTsKKyAgfQorfTsKKwordGVz
dGluZzo6aW50ZXJuYWw6OlJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5KiBNYWNyb0xvZ2ljRGVhdGhU
ZXN0OjpyZXBsYWNlcl8KKyAgICA9IE5VTEw7CitNb2NrRGVhdGhUZXN0RmFjdG9yeSogTWFjcm9M
b2dpY0RlYXRoVGVzdDo6ZmFjdG9yeV8gPSBOVUxMOworCisKKy8vIFRlc3QgdGhhdCBub3RoaW5n
IGhhcHBlbnMgd2hlbiB0aGUgZmFjdG9yeSBkb2Vzbid0IHJldHVybiBhIERlYXRoVGVzdDoKK1RF
U1RfRihNYWNyb0xvZ2ljRGVhdGhUZXN0LCBOb3RoaW5nSGFwcGVucykgeworICBib29sIGZsYWcg
PSBmYWxzZTsKKyAgZmFjdG9yeV8tPlNldFBhcmFtZXRlcnMoZmFsc2UsIERlYXRoVGVzdDo6T1ZF
UlNFRV9URVNULCAwLCB0cnVlKTsKKyAgRVhQRUNUX0RFQVRIKGZsYWcgPSB0cnVlLCAiIik7Cisg
IEVYUEVDVF9GQUxTRShmbGFnKTsKKyAgRVhQRUNUX0VRKDAsIGZhY3RvcnlfLT5Bc3N1bWVSb2xl
Q2FsbHMoKSk7CisgIEVYUEVDVF9FUSgwLCBmYWN0b3J5Xy0+V2FpdENhbGxzKCkpOworICBFWFBF
Q1RfRVEoMFUsIGZhY3RvcnlfLT5QYXNzZWRDYWxscygpKTsKKyAgRVhQRUNUX0VRKDBVLCBmYWN0
b3J5Xy0+QWJvcnRDYWxscygpKTsKKyAgRVhQRUNUX0ZBTFNFKGZhY3RvcnlfLT5UZXN0RGVsZXRl
ZCgpKTsKK30KKworLy8gVGVzdCB0aGF0IHRoZSBwYXJlbnQgcHJvY2VzcyBkb2Vzbid0IHJ1biB0
aGUgZGVhdGggdGVzdCBjb2RlLAorLy8gYW5kIHRoYXQgdGhlIFBhc3NlZCBtZXRob2QgcmV0dXJu
cyBmYWxzZSB3aGVuIHRoZSAoc2ltdWxhdGVkKQorLy8gY2hpbGQgcHJvY2VzcyBleGl0cyB3aXRo
IHN0YXR1cyAwOgorVEVTVF9GKE1hY3JvTG9naWNEZWF0aFRlc3QsIENoaWxkRXhpdHNTdWNjZXNz
ZnVsbHkpIHsKKyAgYm9vbCBmbGFnID0gZmFsc2U7CisgIGZhY3RvcnlfLT5TZXRQYXJhbWV0ZXJz
KHRydWUsIERlYXRoVGVzdDo6T1ZFUlNFRV9URVNULCAwLCB0cnVlKTsKKyAgRVhQRUNUX0RFQVRI
KGZsYWcgPSB0cnVlLCAiIik7CisgIEVYUEVDVF9GQUxTRShmbGFnKTsKKyAgRVhQRUNUX0VRKDEs
IGZhY3RvcnlfLT5Bc3N1bWVSb2xlQ2FsbHMoKSk7CisgIEVYUEVDVF9FUSgxLCBmYWN0b3J5Xy0+
V2FpdENhbGxzKCkpOworICBBU1NFUlRfRVEoMVUsIGZhY3RvcnlfLT5QYXNzZWRDYWxscygpKTsK
KyAgRVhQRUNUX0ZBTFNFKGZhY3RvcnlfLT5QYXNzZWRBcmd1bWVudCgwKSk7CisgIEVYUEVDVF9F
USgwVSwgZmFjdG9yeV8tPkFib3J0Q2FsbHMoKSk7CisgIEVYUEVDVF9UUlVFKGZhY3RvcnlfLT5U
ZXN0RGVsZXRlZCgpKTsKK30KKworLy8gVGVzdHMgdGhhdCB0aGUgUGFzc2VkIG1ldGhvZCB3YXMg
Z2l2ZW4gdGhlIGFyZ3VtZW50ICJ0cnVlIiB3aGVuCisvLyB0aGUgKHNpbXVsYXRlZCkgY2hpbGQg
cHJvY2VzcyBleGl0cyB3aXRoIHN0YXR1cyAxOgorVEVTVF9GKE1hY3JvTG9naWNEZWF0aFRlc3Qs
IENoaWxkRXhpdHNVbnN1Y2Nlc3NmdWxseSkgeworICBib29sIGZsYWcgPSBmYWxzZTsKKyAgZmFj
dG9yeV8tPlNldFBhcmFtZXRlcnModHJ1ZSwgRGVhdGhUZXN0OjpPVkVSU0VFX1RFU1QsIDEsIHRy
dWUpOworICBFWFBFQ1RfREVBVEgoZmxhZyA9IHRydWUsICIiKTsKKyAgRVhQRUNUX0ZBTFNFKGZs
YWcpOworICBFWFBFQ1RfRVEoMSwgZmFjdG9yeV8tPkFzc3VtZVJvbGVDYWxscygpKTsKKyAgRVhQ
RUNUX0VRKDEsIGZhY3RvcnlfLT5XYWl0Q2FsbHMoKSk7CisgIEFTU0VSVF9FUSgxVSwgZmFjdG9y
eV8tPlBhc3NlZENhbGxzKCkpOworICBFWFBFQ1RfVFJVRShmYWN0b3J5Xy0+UGFzc2VkQXJndW1l
bnQoMCkpOworICBFWFBFQ1RfRVEoMFUsIGZhY3RvcnlfLT5BYm9ydENhbGxzKCkpOworICBFWFBF
Q1RfVFJVRShmYWN0b3J5Xy0+VGVzdERlbGV0ZWQoKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgdGhl
IChzaW11bGF0ZWQpIGNoaWxkIHByb2Nlc3MgZXhlY3V0ZXMgdGhlIGRlYXRoIHRlc3QKKy8vIGNv
ZGUsIGFuZCBpcyBhYm9ydGVkIHdpdGggdGhlIGNvcnJlY3QgQWJvcnRSZWFzb24gaWYgaXQKKy8v
IGV4ZWN1dGVzIGEgcmV0dXJuIHN0YXRlbWVudC4KK1RFU1RfRihNYWNyb0xvZ2ljRGVhdGhUZXN0
LCBDaGlsZFBlcmZvcm1zUmV0dXJuKSB7CisgIGJvb2wgZmxhZyA9IGZhbHNlOworICBmYWN0b3J5
Xy0+U2V0UGFyYW1ldGVycyh0cnVlLCBEZWF0aFRlc3Q6OkVYRUNVVEVfVEVTVCwgMCwgdHJ1ZSk7
CisgIFJ1blJldHVybmluZ0RlYXRoVGVzdCgmZmxhZyk7CisgIEVYUEVDVF9UUlVFKGZsYWcpOwor
ICBFWFBFQ1RfRVEoMSwgZmFjdG9yeV8tPkFzc3VtZVJvbGVDYWxscygpKTsKKyAgRVhQRUNUX0VR
KDAsIGZhY3RvcnlfLT5XYWl0Q2FsbHMoKSk7CisgIEVYUEVDVF9FUSgwVSwgZmFjdG9yeV8tPlBh
c3NlZENhbGxzKCkpOworICBFWFBFQ1RfRVEoMVUsIGZhY3RvcnlfLT5BYm9ydENhbGxzKCkpOwor
ICBFWFBFQ1RfRVEoRGVhdGhUZXN0OjpURVNUX0VOQ09VTlRFUkVEX1JFVFVSTl9TVEFURU1FTlQs
CisgICAgICAgICAgICBmYWN0b3J5Xy0+QWJvcnRBcmd1bWVudCgwKSk7CisgIEVYUEVDVF9UUlVF
KGZhY3RvcnlfLT5UZXN0RGVsZXRlZCgpKTsKK30KKworLy8gVGVzdHMgdGhhdCB0aGUgKHNpbXVs
YXRlZCkgY2hpbGQgcHJvY2VzcyBpcyBhYm9ydGVkIHdpdGggdGhlCisvLyBjb3JyZWN0IEFib3J0
UmVhc29uIGlmIGl0IGRvZXMgbm90IGRpZS4KK1RFU1RfRihNYWNyb0xvZ2ljRGVhdGhUZXN0LCBD
aGlsZERvZXNOb3REaWUpIHsKKyAgYm9vbCBmbGFnID0gZmFsc2U7CisgIGZhY3RvcnlfLT5TZXRQ
YXJhbWV0ZXJzKHRydWUsIERlYXRoVGVzdDo6RVhFQ1VURV9URVNULCAwLCB0cnVlKTsKKyAgRVhQ
RUNUX0RFQVRIKGZsYWcgPSB0cnVlLCAiIik7CisgIEVYUEVDVF9UUlVFKGZsYWcpOworICBFWFBF
Q1RfRVEoMSwgZmFjdG9yeV8tPkFzc3VtZVJvbGVDYWxscygpKTsKKyAgRVhQRUNUX0VRKDAsIGZh
Y3RvcnlfLT5XYWl0Q2FsbHMoKSk7CisgIEVYUEVDVF9FUSgwVSwgZmFjdG9yeV8tPlBhc3NlZENh
bGxzKCkpOworICAvLyBUaGlzIHRpbWUgdGhlcmUgYXJlIHR3byBjYWxscyB0byBBYm9ydDogb25l
IHNpbmNlIHRoZSB0ZXN0IGRpZG4ndAorICAvLyBkaWUsIGFuZCBhbm90aGVyIGZyb20gdGhlIFJl
dHVyblNlbnRpbmVsIHdoZW4gaXQncyBkZXN0cm95ZWQuICBUaGUKKyAgLy8gc2VudGluZWwgbm9y
bWFsbHkgaXNuJ3QgZGVzdHJveWVkIGlmIGEgdGVzdCBkb2Vzbid0IGRpZSwgc2luY2UKKyAgLy8g
X2V4aXQoMikgaXMgY2FsbGVkIGluIHRoYXQgY2FzZSBieSBGb3JraW5nRGVhdGhUZXN0LCBidXQg
bm90IGJ5CisgIC8vIG91ciBNb2NrRGVhdGhUZXN0LgorICBBU1NFUlRfRVEoMlUsIGZhY3Rvcnlf
LT5BYm9ydENhbGxzKCkpOworICBFWFBFQ1RfRVEoRGVhdGhUZXN0OjpURVNUX0RJRF9OT1RfRElF
LAorICAgICAgICAgICAgZmFjdG9yeV8tPkFib3J0QXJndW1lbnQoMCkpOworICBFWFBFQ1RfRVEo
RGVhdGhUZXN0OjpURVNUX0VOQ09VTlRFUkVEX1JFVFVSTl9TVEFURU1FTlQsCisgICAgICAgICAg
ICBmYWN0b3J5Xy0+QWJvcnRBcmd1bWVudCgxKSk7CisgIEVYUEVDVF9UUlVFKGZhY3RvcnlfLT5U
ZXN0RGVsZXRlZCgpKTsKK30KKworLy8gVGVzdHMgdGhhdCBhIHN1Y2Nlc3NmdWwgZGVhdGggdGVz
dCBkb2VzIG5vdCByZWdpc3RlciBhIHN1Y2Nlc3NmdWwKKy8vIHRlc3QgcGFydC4KK1RFU1QoU3Vj
Y2Vzc1JlZ2lzdHJhdGlvbkRlYXRoVGVzdCwgTm9TdWNjZXNzUGFydCkgeworICBFWFBFQ1RfREVB
VEgoX2V4aXQoMSksICIiKTsKKyAgRVhQRUNUX0VRKDAsIEdldFVuaXRUZXN0SW1wbCgpLT5jdXJy
ZW50X3Rlc3RfcmVzdWx0KCktPnRvdGFsX3BhcnRfY291bnQoKSk7Cit9CisKK1RFU1QoU3RyZWFt
aW5nQXNzZXJ0aW9uc0RlYXRoVGVzdCwgRGVhdGhUZXN0KSB7CisgIEVYUEVDVF9ERUFUSChfZXhp
dCgxKSwgIiIpIDw8ICJ1bmV4cGVjdGVkIGZhaWx1cmUiOworICBBU1NFUlRfREVBVEgoX2V4aXQo
MSksICIiKSA8PCAidW5leHBlY3RlZCBmYWlsdXJlIjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoeyAgLy8gTk9MSU5UCisgICAgRVhQRUNUX0RFQVRIKF9leGl0KDApLCAiIikgPDwgImV4cGVj
dGVkIGZhaWx1cmUiOworICB9LCAiZXhwZWN0ZWQgZmFpbHVyZSIpOworICBFWFBFQ1RfRkFUQUxf
RkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBBU1NFUlRfREVBVEgoX2V4aXQoMCksICIiKSA8PCAi
ZXhwZWN0ZWQgZmFpbHVyZSI7CisgIH0sICJleHBlY3RlZCBmYWlsdXJlIik7Cit9CisKKy8vIFRl
c3RzIHRoYXQgR2V0TGFzdEVycm5vRGVzY3JpcHRpb24gcmV0dXJucyBhbiBlbXB0eSBzdHJpbmcg
d2hlbiB0aGUKKy8vIGxhc3QgZXJyb3IgaXMgMCBhbmQgbm9uLWVtcHR5IHN0cmluZyB3aGVuIGl0
IGlzIG5vbi16ZXJvLgorVEVTVChHZXRMYXN0RXJybm9EZXNjcmlwdGlvbiwgR2V0TGFzdEVycm5v
RGVzY3JpcHRpb25Xb3JrcykgeworICBlcnJubyA9IEVOT0VOVDsKKyAgRVhQRUNUX1NUUk5FKCIi
LCBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbigpLmNfc3RyKCkpOworICBlcnJubyA9IDA7CisgIEVY
UEVDVF9TVFJFUSgiIiwgR2V0TGFzdEVycm5vRGVzY3JpcHRpb24oKS5jX3N0cigpKTsKK30KKwor
IyBpZiBHVEVTVF9PU19XSU5ET1dTCitURVNUKEF1dG9IYW5kbGVUZXN0LCBBdXRvSGFuZGxlV29y
a3MpIHsKKyAgSEFORExFIGhhbmRsZSA9IDo6Q3JlYXRlRXZlbnQoTlVMTCwgRkFMU0UsIEZBTFNF
LCBOVUxMKTsKKyAgQVNTRVJUX05FKElOVkFMSURfSEFORExFX1ZBTFVFLCBoYW5kbGUpOworCisg
IC8vIFRlc3RzIHRoYXQgdGhlIEF1dG9IYW5kbGUgaXMgY29ycmVjdGx5IGluaXRpYWxpemVkIHdp
dGggYSBoYW5kbGUuCisgIHRlc3Rpbmc6OmludGVybmFsOjpBdXRvSGFuZGxlIGF1dG9faGFuZGxl
KGhhbmRsZSk7CisgIEVYUEVDVF9FUShoYW5kbGUsIGF1dG9faGFuZGxlLkdldCgpKTsKKworICAv
LyBUZXN0cyB0aGF0IFJlc2V0IGFzc2lnbnMgSU5WQUxJRF9IQU5ETEVfVkFMVUUuCisgIC8vIE5v
dGUgdGhhdCB0aGlzIGNhbm5vdCB2ZXJpZnkgd2hldGhlciB0aGUgb3JpZ2luYWwgaGFuZGxlIGlz
IGNsb3NlZC4KKyAgYXV0b19oYW5kbGUuUmVzZXQoKTsKKyAgRVhQRUNUX0VRKElOVkFMSURfSEFO
RExFX1ZBTFVFLCBhdXRvX2hhbmRsZS5HZXQoKSk7CisKKyAgLy8gVGVzdHMgdGhhdCBSZXNldCBh
c3NpZ25zIHRoZSBuZXcgaGFuZGxlLgorICAvLyBOb3RlIHRoYXQgdGhpcyBjYW5ub3QgdmVyaWZ5
IHdoZXRoZXIgdGhlIG9yaWdpbmFsIGhhbmRsZSBpcyBjbG9zZWQuCisgIGhhbmRsZSA9IDo6Q3Jl
YXRlRXZlbnQoTlVMTCwgRkFMU0UsIEZBTFNFLCBOVUxMKTsKKyAgQVNTRVJUX05FKElOVkFMSURf
SEFORExFX1ZBTFVFLCBoYW5kbGUpOworICBhdXRvX2hhbmRsZS5SZXNldChoYW5kbGUpOworICBF
WFBFQ1RfRVEoaGFuZGxlLCBhdXRvX2hhbmRsZS5HZXQoKSk7CisKKyAgLy8gVGVzdHMgdGhhdCBB
dXRvSGFuZGxlIGNvbnRhaW5zIElOVkFMSURfSEFORExFX1ZBTFVFIGJ5IGRlZmF1bHQuCisgIHRl
c3Rpbmc6OmludGVybmFsOjpBdXRvSGFuZGxlIGF1dG9faGFuZGxlMjsKKyAgRVhQRUNUX0VRKElO
VkFMSURfSEFORExFX1ZBTFVFLCBhdXRvX2hhbmRsZTIuR2V0KCkpOworfQorIyBlbmRpZiAgLy8g
R1RFU1RfT1NfV0lORE9XUworCisjIGlmIEdURVNUX09TX1dJTkRPV1MKK3R5cGVkZWYgdW5zaWdu
ZWQgX19pbnQ2NCBCaWdnZXN0UGFyc2FibGU7Cit0eXBlZGVmIHNpZ25lZCBfX2ludDY0IEJpZ2dl
c3RTaWduZWRQYXJzYWJsZTsKKyMgZWxzZQordHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgQmln
Z2VzdFBhcnNhYmxlOwordHlwZWRlZiBzaWduZWQgbG9uZyBsb25nIEJpZ2dlc3RTaWduZWRQYXJz
YWJsZTsKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKworLy8gV2UgY2Fubm90IHVzZSBz
dGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgoKSBhcyBpdCBjbGFzaGVzIHdpdGggdGhlCisvLyBt
YXgoKSBtYWNybyBkZWZpbmVkIGJ5IDx3aW5kb3dzLmg+LgorY29uc3QgQmlnZ2VzdFBhcnNhYmxl
IGtCaWdnZXN0UGFyc2FibGVNYXggPSBVTExPTkdfTUFYOworY29uc3QgQmlnZ2VzdFNpZ25lZFBh
cnNhYmxlIGtCaWdnZXN0U2lnbmVkUGFyc2FibGVNYXggPSBMTE9OR19NQVg7CisKK1RFU1QoUGFy
c2VOYXR1cmFsTnVtYmVyVGVzdCwgUmVqZWN0c0ludmFsaWRGb3JtYXQpIHsKKyAgQmlnZ2VzdFBh
cnNhYmxlIHJlc3VsdCA9IDA7CisKKyAgLy8gUmVqZWN0cyBub24tbnVtYmVycy4KKyAgRVhQRUNU
X0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJlcigibm9uLW51bWJlciBzdHJpbmciLCAmcmVzdWx0KSk7
CisKKyAgLy8gUmVqZWN0cyBudW1iZXJzIHdpdGggd2hpdGVzcGFjZSBwcmVmaXguCisgIEVYUEVD
VF9GQUxTRShQYXJzZU5hdHVyYWxOdW1iZXIoIiAxMjMiLCAmcmVzdWx0KSk7CisKKyAgLy8gUmVq
ZWN0cyBuZWdhdGl2ZSBudW1iZXJzLgorICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVy
KCItMTIzIiwgJnJlc3VsdCkpOworCisgIC8vIFJlamVjdHMgbnVtYmVycyBzdGFydGluZyB3aXRo
IGEgcGx1cyBzaWduLgorICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVyKCIrMTIzIiwg
JnJlc3VsdCkpOworICBlcnJubyA9IDA7Cit9CisKK1RFU1QoUGFyc2VOYXR1cmFsTnVtYmVyVGVz
dCwgUmVqZWN0c092ZXJmbG93bk51bWJlcnMpIHsKKyAgQmlnZ2VzdFBhcnNhYmxlIHJlc3VsdCA9
IDA7CisKKyAgRVhQRUNUX0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJlcigiOTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTkiLCAmcmVzdWx0KSk7CisKKyAgc2lnbmVkIGNoYXIgY2hhcl9yZXN1bHQgPSAwOwor
ICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVyKCIyMDAiLCAmY2hhcl9yZXN1bHQpKTsK
KyAgZXJybm8gPSAwOworfQorCitURVNUKFBhcnNlTmF0dXJhbE51bWJlclRlc3QsIEFjY2VwdHNW
YWxpZE51bWJlcnMpIHsKKyAgQmlnZ2VzdFBhcnNhYmxlIHJlc3VsdCA9IDA7CisKKyAgcmVzdWx0
ID0gMDsKKyAgQVNTRVJUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKCIxMjMiLCAmcmVzdWx0KSk7
CisgIEVYUEVDVF9FUSgxMjNVLCByZXN1bHQpOworCisgIC8vIENoZWNrIDAgYXMgYW4gZWRnZSBj
YXNlLgorICByZXN1bHQgPSAxOworICBBU1NFUlRfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIoIjAi
LCAmcmVzdWx0KSk7CisgIEVYUEVDVF9FUSgwVSwgcmVzdWx0KTsKKworICByZXN1bHQgPSAxOwor
ICBBU1NFUlRfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIoIjAwMDAwIiwgJnJlc3VsdCkpOworICBF
WFBFQ1RfRVEoMFUsIHJlc3VsdCk7Cit9CisKK1RFU1QoUGFyc2VOYXR1cmFsTnVtYmVyVGVzdCwg
QWNjZXB0c1R5cGVMaW1pdHMpIHsKKyAgTWVzc2FnZSBtc2c7CisgIG1zZyA8PCBrQmlnZ2VzdFBh
cnNhYmxlTWF4OworCisgIEJpZ2dlc3RQYXJzYWJsZSByZXN1bHQgPSAwOworICBFWFBFQ1RfVFJV
RShQYXJzZU5hdHVyYWxOdW1iZXIobXNnLkdldFN0cmluZygpLCAmcmVzdWx0KSk7CisgIEVYUEVD
VF9FUShrQmlnZ2VzdFBhcnNhYmxlTWF4LCByZXN1bHQpOworCisgIE1lc3NhZ2UgbXNnMjsKKyAg
bXNnMiA8PCBrQmlnZ2VzdFNpZ25lZFBhcnNhYmxlTWF4OworCisgIEJpZ2dlc3RTaWduZWRQYXJz
YWJsZSBzaWduZWRfcmVzdWx0ID0gMDsKKyAgRVhQRUNUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVy
KG1zZzIuR2V0U3RyaW5nKCksICZzaWduZWRfcmVzdWx0KSk7CisgIEVYUEVDVF9FUShrQmlnZ2Vz
dFNpZ25lZFBhcnNhYmxlTWF4LCBzaWduZWRfcmVzdWx0KTsKKworICBNZXNzYWdlIG1zZzM7Cisg
IG1zZzMgPDwgSU5UX01BWDsKKworICBpbnQgaW50X3Jlc3VsdCA9IDA7CisgIEVYUEVDVF9UUlVF
KFBhcnNlTmF0dXJhbE51bWJlcihtc2czLkdldFN0cmluZygpLCAmaW50X3Jlc3VsdCkpOworICBF
WFBFQ1RfRVEoSU5UX01BWCwgaW50X3Jlc3VsdCk7CisKKyAgTWVzc2FnZSBtc2c0OworICBtc2c0
IDw8IFVJTlRfTUFYOworCisgIHVuc2lnbmVkIGludCB1aW50X3Jlc3VsdCA9IDA7CisgIEVYUEVD
VF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcihtc2c0LkdldFN0cmluZygpLCAmdWludF9yZXN1bHQp
KTsKKyAgRVhQRUNUX0VRKFVJTlRfTUFYLCB1aW50X3Jlc3VsdCk7Cit9CisKK1RFU1QoUGFyc2VO
YXR1cmFsTnVtYmVyVGVzdCwgV29ya3NGb3JTaG9ydGVySW50ZWdlcnMpIHsKKyAgc2hvcnQgc2hv
cnRfcmVzdWx0ID0gMDsKKyAgQVNTRVJUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKCIxMjMiLCAm
c2hvcnRfcmVzdWx0KSk7CisgIEVYUEVDVF9FUSgxMjMsIHNob3J0X3Jlc3VsdCk7CisKKyAgc2ln
bmVkIGNoYXIgY2hhcl9yZXN1bHQgPSAwOworICBBU1NFUlRfVFJVRShQYXJzZU5hdHVyYWxOdW1i
ZXIoIjEyMyIsICZjaGFyX3Jlc3VsdCkpOworICBFWFBFQ1RfRVEoMTIzLCBjaGFyX3Jlc3VsdCk7
Cit9CisKKyMgaWYgR1RFU1RfT1NfV0lORE9XUworVEVTVChFbnZpcm9ubWVudFRlc3QsIEhhbmRs
ZUZpdHNJbnRvU2l6ZVQpIHsKKyAgLy8gVE9ETyh2bGFkbEBnb29nbGUuY29tKTogUmVtb3ZlIHRo
aXMgdGVzdCBhZnRlciB0aGlzIGNvbmRpdGlvbiBpcyB2ZXJpZmllZAorICAvLyBpbiBhIHN0YXRp
YyBhc3NlcnRpb24gaW4gZ3Rlc3QtZGVhdGgtdGVzdC5jYyBpbiB0aGUgZnVuY3Rpb24KKyAgLy8g
R2V0U3RhdHVzRmlsZURlc2NyaXB0b3IuCisgIEFTU0VSVF9UUlVFKHNpemVvZihIQU5ETEUpIDw9
IHNpemVvZihzaXplX3QpKTsKK30KKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKworLy8g
VGVzdHMgdGhhdCBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEL0FTU0VSVF9ERUFUSF9JRl9TVVBQ
T1JURUQgdHJpZ2dlcgorLy8gZmFpbHVyZXMgd2hlbiBkZWF0aCB0ZXN0cyBhcmUgYXZhaWxhYmxl
IG9uIHRoZSBzeXN0ZW0uCitURVNUKENvbmRpdGlvbmFsRGVhdGhNYWNyb3NEZWF0aFRlc3QsIEV4
cGVjdHNEZWF0aFdoZW5EZWF0aFRlc3RzQXZhaWxhYmxlKSB7CisgIEVYUEVDVF9ERUFUSF9JRl9T
VVBQT1JURUQoRGllSW5zaWRlKCJDb25kRGVhdGhUZXN0RXhwZWN0TWFjcm8iKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiZGVhdGggaW5zaWRlIENvbmREZWF0aFRlc3RFeHBlY3RNYWNy
byIpOworICBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKERpZUluc2lkZSgiQ29uZERlYXRoVGVz
dEFzc2VydE1hY3JvIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlYXRoIGluc2lk
ZSBDb25kRGVhdGhUZXN0QXNzZXJ0TWFjcm8iKTsKKworICAvLyBFbXB0eSBzdGF0ZW1lbnQgd2ls
bCBub3QgY3Jhc2gsIHdoaWNoIG11c3QgdHJpZ2dlciBhIGZhaWx1cmUuCisgIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoOywgIiIpLCAiIik7CisgIEVY
UEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQoOywgIiIpLCAiIik7
Cit9CisKK1RFU1QoSW5EZWF0aFRlc3RDaGlsZERlYXRoVGVzdCwgUmVwb3J0c0RlYXRoVGVzdENv
cnJlY3RseUluRmFzdFN0eWxlKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9z
dHlsZSkgPSAiZmFzdCI7CisgIEVYUEVDVF9GQUxTRShJbkRlYXRoVGVzdENoaWxkKCkpOworICBF
WFBFQ1RfREVBVEgoeworICAgIGZwcmludGYoc3RkZXJyLCBJbkRlYXRoVGVzdENoaWxkKCkgPyAi
SW5zaWRlIiA6ICJPdXRzaWRlIik7CisgICAgZmZsdXNoKHN0ZGVycik7CisgICAgX2V4aXQoMSk7
CisgIH0sICJJbnNpZGUiKTsKK30KKworVEVTVChJbkRlYXRoVGVzdENoaWxkRGVhdGhUZXN0LCBS
ZXBvcnRzRGVhdGhUZXN0Q29ycmVjdGx5SW5UaHJlYWRTYWZlU3R5bGUpIHsKKyAgdGVzdGluZzo6
R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJ0aHJlYWRzYWZlIjsKKyAgRVhQRUNUX0ZB
TFNFKEluRGVhdGhUZXN0Q2hpbGQoKSk7CisgIEVYUEVDVF9ERUFUSCh7CisgICAgZnByaW50Zihz
dGRlcnIsIEluRGVhdGhUZXN0Q2hpbGQoKSA/ICJJbnNpZGUiIDogIk91dHNpZGUiKTsKKyAgICBm
Zmx1c2goc3RkZXJyKTsKKyAgICBfZXhpdCgxKTsKKyAgfSwgIkluc2lkZSIpOworfQorCisjZWxz
ZSAgLy8gIUdURVNUX0hBU19ERUFUSF9URVNUIGZvbGxvd3MKKwordXNpbmcgdGVzdGluZzo6aW50
ZXJuYWw6OkNhcHR1cmVTdGRlcnI7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6R2V0Q2FwdHVy
ZWRTdGRlcnI7CisKKy8vIFRlc3RzIHRoYXQgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRC9BU1NF
UlRfREVBVEhfSUZfU1VQUE9SVEVEIGFyZSBzdGlsbAorLy8gZGVmaW5lZCBidXQgZG8gbm90IHRy
aWdnZXIgZmFpbHVyZXMgd2hlbiBkZWF0aCB0ZXN0cyBhcmUgbm90IGF2YWlsYWJsZSBvbgorLy8g
dGhlIHN5c3RlbS4KK1RFU1QoQ29uZGl0aW9uYWxEZWF0aE1hY3Jvc1Rlc3QsIFdhcm5zV2hlbkRl
YXRoVGVzdHNOb3RBdmFpbGFibGUpIHsKKyAgLy8gRW1wdHkgc3RhdGVtZW50IHdpbGwgbm90IGNy
YXNoLCBidXQgdGhhdCBzaG91bGQgbm90IHRyaWdnZXIgYSBmYWlsdXJlCisgIC8vIHdoZW4gZGVh
dGggdGVzdHMgYXJlIG5vdCBzdXBwb3J0ZWQuCisgIENhcHR1cmVTdGRlcnIoKTsKKyAgRVhQRUNU
X0RFQVRIX0lGX1NVUFBPUlRFRCg7LCAiIik7CisgIHN0ZDo6c3RyaW5nIG91dHB1dCA9IEdldENh
cHR1cmVkU3RkZXJyKCk7CisgIEFTU0VSVF9UUlVFKE5VTEwgIT0gc3Ryc3RyKG91dHB1dC5jX3N0
cigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGVhdGggdGVzdHMgYXJlIG5vdCBz
dXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybSIpKTsKKyAgQVNTRVJUX1RSVUUoTlVMTCAhPSBzdHJz
dHIob3V0cHV0LmNfc3RyKCksICI7IikpOworCisgIC8vIFRoZSBzdHJlYW1lZCBtZXNzYWdlIHNo
b3VsZCBub3QgYmUgcHJpbnRlZCBhcyB0aGVyZSBpcyBubyB0ZXN0IGZhaWx1cmUuCisgIENhcHR1
cmVTdGRlcnIoKTsKKyAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCg7LCAiIikgPDwgInN0cmVh
bWVkIG1lc3NhZ2UiOworICBvdXRwdXQgPSBHZXRDYXB0dXJlZFN0ZGVycigpOworICBBU1NFUlRf
VFJVRShOVUxMID09IHN0cnN0cihvdXRwdXQuY19zdHIoKSwgInN0cmVhbWVkIG1lc3NhZ2UiKSk7
CisKKyAgQ2FwdHVyZVN0ZGVycigpOworICBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKDssICIi
KTsgIC8vIE5PTElOVAorICBvdXRwdXQgPSBHZXRDYXB0dXJlZFN0ZGVycigpOworICBBU1NFUlRf
VFJVRShOVUxMICE9IHN0cnN0cihvdXRwdXQuY19zdHIoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIkRlYXRoIHRlc3RzIGFyZSBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0i
KSk7CisgIEFTU0VSVF9UUlVFKE5VTEwgIT0gc3Ryc3RyKG91dHB1dC5jX3N0cigpLCAiOyIpKTsK
KworICBDYXB0dXJlU3RkZXJyKCk7CisgIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQoOywgIiIp
IDw8ICJzdHJlYW1lZCBtZXNzYWdlIjsgIC8vIE5PTElOVAorICBvdXRwdXQgPSBHZXRDYXB0dXJl
ZFN0ZGVycigpOworICBBU1NFUlRfVFJVRShOVUxMID09IHN0cnN0cihvdXRwdXQuY19zdHIoKSwg
InN0cmVhbWVkIG1lc3NhZ2UiKSk7Cit9CisKK3ZvaWQgRnVuY1dpdGhBc3NlcnQoaW50KiBuKSB7
CisgIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQocmV0dXJuOywgIiIpOworICAoKm4pKys7Cit9
CisKKy8vIFRlc3RzIHRoYXQgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRCBkb2VzIG5vdCByZXR1
cm4gZnJvbSB0aGUgY3VycmVudAorLy8gZnVuY3Rpb24gKGFzIEFTU0VSVF9ERUFUSCBkb2VzKSBp
ZiBkZWF0aCB0ZXN0cyBhcmUgbm90IHN1cHBvcnRlZC4KK1RFU1QoQ29uZGl0aW9uYWxEZWF0aE1h
Y3Jvc1Rlc3QsIEFzc2VydERlYXREb2VzTm90UmV0dXJuaElmVW5zdXBwb3J0ZWQpIHsKKyAgaW50
IG4gPSAwOworICBGdW5jV2l0aEFzc2VydCgmbik7CisgIEVYUEVDVF9FUSgxLCBuKTsKK30KKwor
I2VuZGlmICAvLyAhR1RFU1RfSEFTX0RFQVRIX1RFU1QKKworLy8gVGVzdHMgdGhhdCB0aGUgZGVh
dGggdGVzdCBtYWNyb3MgZXhwYW5kIHRvIGNvZGUgd2hpY2ggbWF5IG9yIG1heSBub3QKKy8vIGJl
IGZvbGxvd2VkIGJ5IG9wZXJhdG9yPDwsIGFuZCB0aGF0IGluIGVpdGhlciBjYXNlIHRoZSBjb21w
bGV0ZSB0ZXh0CisvLyBjb21wcmlzZXMgb25seSBhIHNpbmdsZSBDKysgc3RhdGVtZW50LgorLy8K
Ky8vIFRoZSBzeW50YXggc2hvdWxkIHdvcmsgd2hldGhlciBkZWF0aCB0ZXN0cyBhcmUgYXZhaWxh
YmxlIG9yIG5vdC4KK1RFU1QoQ29uZGl0aW9uYWxEZWF0aE1hY3Jvc1N5bnRheERlYXRoVGVzdCwg
U2luZ2xlU3RhdGVtZW50KSB7CisgIGlmIChBbHdheXNGYWxzZSgpKQorICAgIC8vIFRoaXMgd291
bGQgZmFpbCBpZiBleGVjdXRlZDsgdGhpcyBpcyBhIGNvbXBpbGF0aW9uIHRlc3Qgb25seQorICAg
IEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQocmV0dXJuLCAiIik7CisKKyAgaWYgKEFsd2F5c1Ry
dWUoKSkKKyAgICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKF9leGl0KDEpLCAiIik7CisgIGVs
c2UKKyAgICAvLyBUaGlzIGVtcHR5ICJlbHNlIiBicmFuY2ggaXMgbWVhbnQgdG8gZW5zdXJlIHRo
YXQgRVhQRUNUX0RFQVRICisgICAgLy8gZG9lc24ndCBleHBhbmQgaW50byBhbiAiaWYiIHN0YXRl
bWVudCB3aXRob3V0IGFuICJlbHNlIgorICAgIDsgIC8vIE5PTElOVAorCisgIGlmIChBbHdheXNG
YWxzZSgpKQorICAgIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQocmV0dXJuLCAiIikgPDwgImRp
ZCBub3QgZGllIjsKKworICBpZiAoQWx3YXlzRmFsc2UoKSkKKyAgICA7ICAvLyBOT0xJTlQKKyAg
ZWxzZQorICAgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoX2V4aXQoMSksICIiKSA8PCAxIDw8
IDIgPDwgMzsKK30KKworLy8gVGVzdHMgdGhhdCBjb25kaXRpb25hbCBkZWF0aCB0ZXN0IG1hY3Jv
cyBleHBhbmQgdG8gY29kZSB3aGljaCBpbnRlcmFjdHMKKy8vIHdlbGwgd2l0aCBzd2l0Y2ggc3Rh
dGVtZW50cy4KK1RFU1QoQ29uZGl0aW9uYWxEZWF0aE1hY3Jvc1N5bnRheERlYXRoVGVzdCwgU3dp
dGNoU3RhdGVtZW50KSB7CisgIC8vIE1pY3Jvc29mdCBjb21waWxlciB1c3VhbGx5IGNvbXBsYWlu
cyBhYm91dCBzd2l0Y2ggc3RhdGVtZW50cyB3aXRob3V0CisgIC8vIGNhc2UgbGFiZWxzLiBXZSBz
dXBwcmVzcyB0aGF0IHdhcm5pbmcgZm9yIHRoaXMgdGVzdC4KKyAgR1RFU1RfRElTQUJMRV9NU0Nf
V0FSTklOR1NfUFVTSF8oNDA2NSkKKworICBzd2l0Y2ggKDApCisgICAgZGVmYXVsdDoKKyAgICAg
IEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQoX2V4aXQoMSksICIiKQorICAgICAgICAgIDw8ICJl
eGl0IGluIGRlZmF1bHQgc3dpdGNoIGhhbmRsZXIiOworCisgIHN3aXRjaCAoMCkKKyAgICBjYXNl
IDA6CisgICAgICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKF9leGl0KDEpLCAiIikgPDwgImV4
aXQgaW4gc3dpdGNoIGNhc2UiOworCisgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8o
KQorfQorCisvLyBUZXN0cyB0aGF0IGEgdGVzdCBjYXNlIHdob3NlIG5hbWUgZW5kcyB3aXRoICJE
ZWF0aFRlc3QiIHdvcmtzIGZpbmUKKy8vIG9uIFdpbmRvd3MuCitURVNUKE5vdEFEZWF0aFRlc3Qs
IFRlc3QpIHsKKyAgU1VDQ0VFRCgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9n
dGVzdC1maWxlcGF0aF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdC1maWxlcGF0aF90
ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmRhNzI5ODY5MjZiNjg2NmEzMjQ3NjY1MzIwYmIxYjViMDAyNmQ1
NjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0LWZpbGVwYXRoX3Rl
c3QuY2MKQEAgLTAsMCArMSw2NjIgQEAKKy8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgor
Ly8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
Ly8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8g
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKy8vCisvLyBBdXRob3JzOiBrZWl0aC5yYXlAZ21haWwuY29tIChLZWl0aCBS
YXkpCisvLworLy8gR29vZ2xlIFRlc3QgZmlsZXBhdGggdXRpbGl0aWVzCisvLworLy8gVGhpcyBm
aWxlIHRlc3RzIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucyB1c2VkIGludGVybmFsbHkgYnkKKy8vIEdv
b2dsZSBUZXN0LiAgVGhleSBhcmUgc3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuCisv
LworLy8gVGhpcyBmaWxlIGlzICNpbmNsdWRlZCBmcm9tIGd0ZXN0X3VuaXR0ZXN0LmNjLCB0byBh
dm9pZCBjaGFuZ2luZworLy8gYnVpbGQgb3IgbWFrZS1maWxlcyBmb3Igc29tZSBleGlzdGluZyBH
b29nbGUgVGVzdCBjbGllbnRzLiBEbyBub3QKKy8vICNpbmNsdWRlIHRoaXMgZmlsZSBhbnl3aGVy
ZSBlbHNlIQorCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGguaCIKKyNp
bmNsdWRlICJndGVzdC9ndGVzdC5oIgorCisvLyBJbmRpY2F0ZXMgdGhhdCB0aGlzIHRyYW5zbGF0
aW9uIHVuaXQgaXMgcGFydCBvZiBHb29nbGUgVGVzdCdzCisvLyBpbXBsZW1lbnRhdGlvbi4gIEl0
IG11c3QgY29tZSBiZWZvcmUgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMKKy8vIGluY2x1ZGVkLCBv
ciB0aGVyZSB3aWxsIGJlIGEgY29tcGlsZXIgZXJyb3IuICBUaGlzIHRyaWNrIGlzIHRvCisvLyBw
cmV2ZW50IGEgdXNlciBmcm9tIGFjY2lkZW50YWxseSBpbmNsdWRpbmcgZ3Rlc3QtaW50ZXJuYWwt
aW5sLmggaW4KKy8vIGhpcyBjb2RlLgorI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8gMQor
I2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKKyN1bmRlZiBHVEVTVF9JTVBMRU1F
TlRBVElPTl8KKworI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisjIGluY2x1ZGUgPHdpbmRv
d3MuaD4gIC8vIE5PTElOVAorI2VsaWYgR1RFU1RfT1NfV0lORE9XUworIyBpbmNsdWRlIDxkaXJl
Y3QuaD4gIC8vIE5PTElOVAorI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorCitu
YW1lc3BhY2UgdGVzdGluZyB7CituYW1lc3BhY2UgaW50ZXJuYWwgeworbmFtZXNwYWNlIHsKKwor
I2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisvLyBUT0RPKHdhbkBnb29nbGUuY29tKTogTW92
ZSB0aGVzZSB0byB0aGUgUE9TSVggYWRhcHRlciBzZWN0aW9uIGluCisvLyBndGVzdC1wb3J0Lmgu
CisKKy8vIFdpbmRvd3MgQ0UgZG9lc24ndCBoYXZlIHRoZSByZW1vdmUgQyBmdW5jdGlvbi4KK2lu
dCByZW1vdmUoY29uc3QgY2hhciogcGF0aCkgeworICBMUENXU1RSIHdwYXRoID0gU3RyaW5nOjpB
bnNpVG9VdGYxNihwYXRoKTsKKyAgaW50IHJldCA9IERlbGV0ZUZpbGUod3BhdGgpID8gMCA6IC0x
OworICBkZWxldGUgW10gd3BhdGg7CisgIHJldHVybiByZXQ7Cit9CisvLyBXaW5kb3dzIENFIGRv
ZXNuJ3QgaGF2ZSB0aGUgX3JtZGlyIEMgZnVuY3Rpb24uCitpbnQgX3JtZGlyKGNvbnN0IGNoYXIq
IHBhdGgpIHsKKyAgRmlsZVBhdGggZmlsZXBhdGgocGF0aCk7CisgIExQQ1dTVFIgd3BhdGggPSBT
dHJpbmc6OkFuc2lUb1V0ZjE2KAorICAgICAgZmlsZXBhdGguUmVtb3ZlVHJhaWxpbmdQYXRoU2Vw
YXJhdG9yKCkuY19zdHIoKSk7CisgIGludCByZXQgPSBSZW1vdmVEaXJlY3Rvcnkod3BhdGgpID8g
MCA6IC0xOworICBkZWxldGUgW10gd3BhdGg7CisgIHJldHVybiByZXQ7Cit9CisKKyNlbHNlCisK
K1RFU1QoR2V0Q3VycmVudERpclRlc3QsIFJldHVybnNDdXJyZW50RGlyKSB7CisgIGNvbnN0IEZp
bGVQYXRoIG9yaWdpbmFsX2RpciA9IEZpbGVQYXRoOjpHZXRDdXJyZW50RGlyKCk7CisgIEVYUEVD
VF9GQUxTRShvcmlnaW5hbF9kaXIuSXNFbXB0eSgpKTsKKworICBwb3NpeDo6Q2hEaXIoR1RFU1Rf
UEFUSF9TRVBfKTsKKyAgY29uc3QgRmlsZVBhdGggY3dkID0gRmlsZVBhdGg6OkdldEN1cnJlbnRE
aXIoKTsKKyAgcG9zaXg6OkNoRGlyKG9yaWdpbmFsX2Rpci5jX3N0cigpKTsKKworIyBpZiBHVEVT
VF9PU19XSU5ET1dTCisKKyAgLy8gU2tpcHMgdGhlICI6Ii4KKyAgY29uc3QgY2hhciogY29uc3Qg
Y3dkX3dpdGhvdXRfZHJpdmUgPSBzdHJjaHIoY3dkLmNfc3RyKCksICc6Jyk7CisgIEFTU0VSVF9U
UlVFKGN3ZF93aXRob3V0X2RyaXZlICE9IE5VTEwpOworICBFWFBFQ1RfU1RSRVEoR1RFU1RfUEFU
SF9TRVBfLCBjd2Rfd2l0aG91dF9kcml2ZSArIDEpOworCisjIGVsc2UKKworICBFWFBFQ1RfRVEo
R1RFU1RfUEFUSF9TRVBfLCBjd2Quc3RyaW5nKCkpOworCisjIGVuZGlmCit9CisKKyNlbmRpZiAg
Ly8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKworVEVTVChJc0VtcHR5VGVzdCwgUmV0dXJuc1Ry
dWVGb3JFbXB0eVBhdGgpIHsKKyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIiIpLklzRW1wdHkoKSk7
Cit9CisKK1RFU1QoSXNFbXB0eVRlc3QsIFJldHVybnNGYWxzZUZvck5vbkVtcHR5UGF0aCkgewor
ICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoImEiKS5Jc0VtcHR5KCkpOworICBFWFBFQ1RfRkFMU0Uo
RmlsZVBhdGgoIi4iKS5Jc0VtcHR5KCkpOworICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoImEvYiIp
LklzRW1wdHkoKSk7CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiYVxcYlxcIikuSXNFbXB0eSgp
KTsKK30KKworLy8gUmVtb3ZlRGlyZWN0b3J5TmFtZSAiIiAtPiAiIgorVEVTVChSZW1vdmVEaXJl
Y3RvcnlOYW1lVGVzdCwgV2hlbkVtcHR5TmFtZSkgeworICBFWFBFQ1RfRVEoIiIsIEZpbGVQYXRo
KCIiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuc3RyaW5nKCkpOworfQorCisvLyBSZW1vdmVEaXJl
Y3RvcnlOYW1lICJhZmlsZSIgLT4gImFmaWxlIgorVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVz
dCwgQnV0Tm9EaXJlY3RvcnkpIHsKKyAgRVhQRUNUX0VRKCJhZmlsZSIsCisgICAgICBGaWxlUGF0
aCgiYWZpbGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuc3RyaW5nKCkpOworfQorCisvLyBSZW1v
dmVEaXJlY3RvcnlOYW1lICIvYWZpbGUiIC0+ICJhZmlsZSIKK1RFU1QoUmVtb3ZlRGlyZWN0b3J5
TmFtZVRlc3QsIFJvb3RGaWxlU2hvdWxkR2l2ZUZpbGVOYW1lKSB7CisgIEVYUEVDVF9FUSgiYWZp
bGUiLAorICAgICAgRmlsZVBhdGgoR1RFU1RfUEFUSF9TRVBfICJhZmlsZSIpLlJlbW92ZURpcmVj
dG9yeU5hbWUoKS5zdHJpbmcoKSk7Cit9CisKKy8vIFJlbW92ZURpcmVjdG9yeU5hbWUgImFkaXIv
IiAtPiAiIgorVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgV2hlcmVUaGVyZUlzTm9GaWxl
TmFtZSkgeworICBFWFBFQ1RfRVEoIiIsCisgICAgICBGaWxlUGF0aCgiYWRpciIgR1RFU1RfUEFU
SF9TRVBfKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuc3RyaW5nKCkpOworfQorCisvLyBSZW1vdmVE
aXJlY3RvcnlOYW1lICJhZGlyL2FmaWxlIiAtPiAiYWZpbGUiCitURVNUKFJlbW92ZURpcmVjdG9y
eU5hbWVUZXN0LCBTaG91bGRHaXZlRmlsZU5hbWUpIHsKKyAgRVhQRUNUX0VRKCJhZmlsZSIsCisg
ICAgICBGaWxlUGF0aCgiYWRpciIgR1RFU1RfUEFUSF9TRVBfICJhZmlsZSIpLlJlbW92ZURpcmVj
dG9yeU5hbWUoKS5zdHJpbmcoKSk7Cit9CisKKy8vIFJlbW92ZURpcmVjdG9yeU5hbWUgImFkaXIv
c3ViZGlyL2FmaWxlIiAtPiAiYWZpbGUiCitURVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBT
aG91bGRBbHNvR2l2ZUZpbGVOYW1lKSB7CisgIEVYUEVDVF9FUSgiYWZpbGUiLAorICAgICAgRmls
ZVBhdGgoImFkaXIiIEdURVNUX1BBVEhfU0VQXyAic3ViZGlyIiBHVEVTVF9QQVRIX1NFUF8gImFm
aWxlIikKKyAgICAgIC5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuc3RyaW5nKCkpOworfQorCisjaWYg
R1RFU1RfSEFTX0FMVF9QQVRIX1NFUF8KKworLy8gVGVzdHMgdGhhdCBSZW1vdmVEaXJlY3RvcnlO
YW1lKCkgd29ya3Mgd2l0aCB0aGUgYWx0ZXJuYXRlIHNlcGFyYXRvcgorLy8gb24gV2luZG93cy4K
KworLy8gUmVtb3ZlRGlyZWN0b3J5TmFtZSgiL2FmaWxlIikgLT4gImFmaWxlIgorVEVTVChSZW1v
dmVEaXJlY3RvcnlOYW1lVGVzdCwgUm9vdEZpbGVTaG91bGRHaXZlRmlsZU5hbWVGb3JBbHRlcm5h
dGVTZXBhcmF0b3IpIHsKKyAgRVhQRUNUX0VRKCJhZmlsZSIsIEZpbGVQYXRoKCIvYWZpbGUiKS5S
ZW1vdmVEaXJlY3RvcnlOYW1lKCkuc3RyaW5nKCkpOworfQorCisvLyBSZW1vdmVEaXJlY3RvcnlO
YW1lKCJhZGlyLyIpIC0+ICIiCitURVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBXaGVyZVRo
ZXJlSXNOb0ZpbGVOYW1lRm9yQWx0ZXJuYXRlU2VwYXJhdG9yKSB7CisgIEVYUEVDVF9FUSgiIiwg
RmlsZVBhdGgoImFkaXIvIikuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpLnN0cmluZygpKTsKK30KKwor
Ly8gUmVtb3ZlRGlyZWN0b3J5TmFtZSgiYWRpci9hZmlsZSIpIC0+ICJhZmlsZSIKK1RFU1QoUmVt
b3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFNob3VsZEdpdmVGaWxlTmFtZUZvckFsdGVybmF0ZVNlcGFy
YXRvcikgeworICBFWFBFQ1RfRVEoImFmaWxlIiwgRmlsZVBhdGgoImFkaXIvYWZpbGUiKS5SZW1v
dmVEaXJlY3RvcnlOYW1lKCkuc3RyaW5nKCkpOworfQorCisvLyBSZW1vdmVEaXJlY3RvcnlOYW1l
KCJhZGlyL3N1YmRpci9hZmlsZSIpIC0+ICJhZmlsZSIKK1RFU1QoUmVtb3ZlRGlyZWN0b3J5TmFt
ZVRlc3QsIFNob3VsZEFsc29HaXZlRmlsZU5hbWVGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKKyAg
RVhQRUNUX0VRKCJhZmlsZSIsCisgICAgICAgICAgICBGaWxlUGF0aCgiYWRpci9zdWJkaXIvYWZp
bGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuc3RyaW5nKCkpOworfQorCisjZW5kaWYKKworLy8g
UmVtb3ZlRmlsZU5hbWUgIiIgLT4gIi4vIgorVEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEVtcHR5
TmFtZSkgeworI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisgIC8vIE9uIFdpbmRvd3MgQ0Us
IHdlIHVzZSB0aGUgcm9vdCBhcyB0aGUgY3VycmVudCBkaXJlY3RvcnkuCisgIEVYUEVDVF9FUShH
VEVTVF9QQVRIX1NFUF8sIEZpbGVQYXRoKCIiKS5SZW1vdmVGaWxlTmFtZSgpLnN0cmluZygpKTsK
KyNlbHNlCisgIEVYUEVDVF9FUSgiLiIgR1RFU1RfUEFUSF9TRVBfLCBGaWxlUGF0aCgiIikuUmVt
b3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7CisjZW5kaWYKK30KKworLy8gUmVtb3ZlRmlsZU5hbWUg
ImFkaXIvIiAtPiAiYWRpci8iCitURVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgQnV0Tm9GaWxlKSB7
CisgIEVYUEVDVF9FUSgiYWRpciIgR1RFU1RfUEFUSF9TRVBfLAorICAgICAgRmlsZVBhdGgoImFk
aXIiIEdURVNUX1BBVEhfU0VQXykuUmVtb3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7Cit9CisKKy8v
IFJlbW92ZUZpbGVOYW1lICJhZGlyL2FmaWxlIiAtPiAiYWRpci8iCitURVNUKFJlbW92ZUZpbGVO
YW1lVGVzdCwgR2l2ZXNEaXJOYW1lKSB7CisgIEVYUEVDVF9FUSgiYWRpciIgR1RFU1RfUEFUSF9T
RVBfLAorICAgICAgICAgICAgRmlsZVBhdGgoImFkaXIiIEdURVNUX1BBVEhfU0VQXyAiYWZpbGUi
KS5SZW1vdmVGaWxlTmFtZSgpLnN0cmluZygpKTsKK30KKworLy8gUmVtb3ZlRmlsZU5hbWUgImFk
aXIvc3ViZGlyL2FmaWxlIiAtPiAiYWRpci9zdWJkaXIvIgorVEVTVChSZW1vdmVGaWxlTmFtZVRl
c3QsIEdpdmVzRGlyQW5kU3ViRGlyTmFtZSkgeworICBFWFBFQ1RfRVEoImFkaXIiIEdURVNUX1BB
VEhfU0VQXyAic3ViZGlyIiBHVEVTVF9QQVRIX1NFUF8sCisgICAgICBGaWxlUGF0aCgiYWRpciIg
R1RFU1RfUEFUSF9TRVBfICJzdWJkaXIiIEdURVNUX1BBVEhfU0VQXyAiYWZpbGUiKQorICAgICAg
LlJlbW92ZUZpbGVOYW1lKCkuc3RyaW5nKCkpOworfQorCisvLyBSZW1vdmVGaWxlTmFtZSAiL2Fm
aWxlIiAtPiAiLyIKK1RFU1QoUmVtb3ZlRmlsZU5hbWVUZXN0LCBHaXZlc1Jvb3REaXIpIHsKKyAg
RVhQRUNUX0VRKEdURVNUX1BBVEhfU0VQXywKKyAgICAgIEZpbGVQYXRoKEdURVNUX1BBVEhfU0VQ
XyAiYWZpbGUiKS5SZW1vdmVGaWxlTmFtZSgpLnN0cmluZygpKTsKK30KKworI2lmIEdURVNUX0hB
U19BTFRfUEFUSF9TRVBfCisKKy8vIFRlc3RzIHRoYXQgUmVtb3ZlRmlsZU5hbWUoKSB3b3JrcyB3
aXRoIHRoZSBhbHRlcm5hdGUgc2VwYXJhdG9yIG9uCisvLyBXaW5kb3dzLgorCisvLyBSZW1vdmVG
aWxlTmFtZSgiYWRpci8iKSAtPiAiYWRpci8iCitURVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgQnV0
Tm9GaWxlRm9yQWx0ZXJuYXRlU2VwYXJhdG9yKSB7CisgIEVYUEVDVF9FUSgiYWRpciIgR1RFU1Rf
UEFUSF9TRVBfLAorICAgICAgICAgICAgRmlsZVBhdGgoImFkaXIvIikuUmVtb3ZlRmlsZU5hbWUo
KS5zdHJpbmcoKSk7Cit9CisKKy8vIFJlbW92ZUZpbGVOYW1lKCJhZGlyL2FmaWxlIikgLT4gImFk
aXIvIgorVEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEdpdmVzRGlyTmFtZUZvckFsdGVybmF0ZVNl
cGFyYXRvcikgeworICBFWFBFQ1RfRVEoImFkaXIiIEdURVNUX1BBVEhfU0VQXywKKyAgICAgICAg
ICAgIEZpbGVQYXRoKCJhZGlyL2FmaWxlIikuUmVtb3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7Cit9
CisKKy8vIFJlbW92ZUZpbGVOYW1lKCJhZGlyL3N1YmRpci9hZmlsZSIpIC0+ICJhZGlyL3N1YmRp
ci8iCitURVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgR2l2ZXNEaXJBbmRTdWJEaXJOYW1lRm9yQWx0
ZXJuYXRlU2VwYXJhdG9yKSB7CisgIEVYUEVDVF9FUSgiYWRpciIgR1RFU1RfUEFUSF9TRVBfICJz
dWJkaXIiIEdURVNUX1BBVEhfU0VQXywKKyAgICAgICAgICAgIEZpbGVQYXRoKCJhZGlyL3N1YmRp
ci9hZmlsZSIpLlJlbW92ZUZpbGVOYW1lKCkuc3RyaW5nKCkpOworfQorCisvLyBSZW1vdmVGaWxl
TmFtZSgiL2FmaWxlIikgLT4gIlwiCitURVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgR2l2ZXNSb290
RGlyRm9yQWx0ZXJuYXRlU2VwYXJhdG9yKSB7CisgIEVYUEVDVF9FUShHVEVTVF9QQVRIX1NFUF8s
IEZpbGVQYXRoKCIvYWZpbGUiKS5SZW1vdmVGaWxlTmFtZSgpLnN0cmluZygpKTsKK30KKworI2Vu
ZGlmCisKK1RFU1QoTWFrZUZpbGVOYW1lVGVzdCwgR2VuZXJhdGVXaGVuTnVtYmVySXNaZXJvKSB7
CisgIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpNYWtlRmlsZU5hbWUoRmlsZVBhdGgoImZv
byIpLCBGaWxlUGF0aCgiYmFyIiksCisgICAgICAwLCAieG1sIik7CisgIEVYUEVDVF9FUSgiZm9v
IiBHVEVTVF9QQVRIX1NFUF8gImJhci54bWwiLCBhY3R1YWwuc3RyaW5nKCkpOworfQorCitURVNU
KE1ha2VGaWxlTmFtZVRlc3QsIEdlbmVyYXRlRmlsZU5hbWVOdW1iZXJHdFplcm8pIHsKKyAgRmls
ZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6Ok1ha2VGaWxlTmFtZShGaWxlUGF0aCgiZm9vIiksIEZp
bGVQYXRoKCJiYXIiKSwKKyAgICAgIDEyLCAieG1sIik7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVT
VF9QQVRIX1NFUF8gImJhcl8xMi54bWwiLCBhY3R1YWwuc3RyaW5nKCkpOworfQorCitURVNUKE1h
a2VGaWxlTmFtZVRlc3QsIEdlbmVyYXRlRmlsZU5hbWVXaXRoU2xhc2hOdW1iZXJJc1plcm8pIHsK
KyAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6Ok1ha2VGaWxlTmFtZShGaWxlUGF0aCgiZm9v
IiBHVEVTVF9QQVRIX1NFUF8pLAorICAgICAgRmlsZVBhdGgoImJhciIpLCAwLCAieG1sIik7Cisg
IEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhci54bWwiLCBhY3R1YWwuc3RyaW5n
KCkpOworfQorCitURVNUKE1ha2VGaWxlTmFtZVRlc3QsIEdlbmVyYXRlRmlsZU5hbWVXaXRoU2xh
c2hOdW1iZXJHdFplcm8pIHsKKyAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6Ok1ha2VGaWxl
TmFtZShGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8pLAorICAgICAgRmlsZVBhdGgoImJh
ciIpLCAxMiwgInhtbCIpOworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXJf
MTIueG1sIiwgYWN0dWFsLnN0cmluZygpKTsKK30KKworVEVTVChNYWtlRmlsZU5hbWVUZXN0LCBH
ZW5lcmF0ZVdoZW5OdW1iZXJJc1plcm9BbmREaXJJc0VtcHR5KSB7CisgIEZpbGVQYXRoIGFjdHVh
bCA9IEZpbGVQYXRoOjpNYWtlRmlsZU5hbWUoRmlsZVBhdGgoIiIpLCBGaWxlUGF0aCgiYmFyIiks
CisgICAgICAwLCAieG1sIik7CisgIEVYUEVDVF9FUSgiYmFyLnhtbCIsIGFjdHVhbC5zdHJpbmco
KSk7Cit9CisKK1RFU1QoTWFrZUZpbGVOYW1lVGVzdCwgR2VuZXJhdGVXaGVuTnVtYmVySXNOb3Ra
ZXJvQW5kRGlySXNFbXB0eSkgeworICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6TWFrZUZp
bGVOYW1lKEZpbGVQYXRoKCIiKSwgRmlsZVBhdGgoImJhciIpLAorICAgICAgMTQsICJ4bWwiKTsK
KyAgRVhQRUNUX0VRKCJiYXJfMTQueG1sIiwgYWN0dWFsLnN0cmluZygpKTsKK30KKworVEVTVChD
b25jYXRQYXRoc1Rlc3QsIFdvcmtzV2hlbkRpckRvZXNOb3RFbmRXaXRoUGF0aFNlcCkgeworICBG
aWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoRmlsZVBhdGgoImZvbyIpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoImJhci54
bWwiKSk7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhci54bWwiLCBhY3R1
YWwuc3RyaW5nKCkpOworfQorCitURVNUKENvbmNhdFBhdGhzVGVzdCwgV29ya3NXaGVuUGF0aDFF
bmRzV2l0aFBhdGhTZXApIHsKKyAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBh
dGhzKEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0aCgiYmFyLnhtbCIpKTsKKyAgRVhQRUNUX0VR
KCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyLnhtbCIsIGFjdHVhbC5zdHJpbmcoKSk7Cit9CisK
K1RFU1QoQ29uY2F0UGF0aHNUZXN0LCBQYXRoMUJlaW5nRW1wdHkpIHsKKyAgRmlsZVBhdGggYWN0
dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoKCIiKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJiYXIueG1sIikpOworICBFWFBF
Q1RfRVEoImJhci54bWwiLCBhY3R1YWwuc3RyaW5nKCkpOworfQorCitURVNUKENvbmNhdFBhdGhz
VGVzdCwgUGF0aDJCZWluZ0VtcHR5KSB7CisgIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpD
b25jYXRQYXRocyhGaWxlUGF0aCgiZm9vIiksIEZpbGVQYXRoKCIiKSk7CisgIEVYUEVDVF9FUSgi
Zm9vIiBHVEVTVF9QQVRIX1NFUF8sIGFjdHVhbC5zdHJpbmcoKSk7Cit9CisKK1RFU1QoQ29uY2F0
UGF0aHNUZXN0LCBCb3RoUGF0aEJlaW5nRW1wdHkpIHsKKyAgRmlsZVBhdGggYWN0dWFsID0gRmls
ZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoKCIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCIiKSk7CisgIEVYUEVDVF9FUSgiIiwgYWN0dWFs
LnN0cmluZygpKTsKK30KKworVEVTVChDb25jYXRQYXRoc1Rlc3QsIFBhdGgxQ29udGFpbnNQYXRo
U2VwKSB7CisgIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpDb25jYXRQYXRocyhGaWxlUGF0
aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoImZvb2Jhci54bWwiKSk7CisgIEVYUEVDVF9FUSgi
Zm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIgR1RFU1RfUEFUSF9TRVBfICJmb29iYXIueG1sIiwK
KyAgICAgICAgICAgIGFjdHVhbC5zdHJpbmcoKSk7Cit9CisKK1RFU1QoQ29uY2F0UGF0aHNUZXN0
LCBQYXRoMkNvbnRhaW5zUGF0aFNlcCkgeworICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6
Q29uY2F0UGF0aHMoCisgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8pLAorICAg
ICAgRmlsZVBhdGgoImJhciIgR1RFU1RfUEFUSF9TRVBfICJiYXIueG1sIikpOworICBFWFBFQ1Rf
RVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiIEdURVNUX1BBVEhfU0VQXyAiYmFyLnhtbCIs
CisgICAgICAgICAgICBhY3R1YWwuc3RyaW5nKCkpOworfQorCitURVNUKENvbmNhdFBhdGhzVGVz
dCwgUGF0aDJFbmRzV2l0aFBhdGhTZXApIHsKKyAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6
OkNvbmNhdFBhdGhzKEZpbGVQYXRoKCJmb28iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJiYXIiIEdURVNUX1BBVEhfU0VQXykpOworICBFWFBF
Q1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiIEdURVNUX1BBVEhfU0VQXywgYWN0dWFs
LnN0cmluZygpKTsKK30KKworLy8gUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yICIiIC0+ICIi
CitURVNUKFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvclRlc3QsIEVtcHR5U3RyaW5nKSB7Cisg
IEVYUEVDVF9FUSgiIiwgRmlsZVBhdGgoIiIpLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigp
LnN0cmluZygpKTsKK30KKworLy8gUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yICJmb28iIC0+
ICJmb28iCitURVNUKFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvclRlc3QsIEZpbGVOb1NsYXNo
U3RyaW5nKSB7CisgIEVYUEVDVF9FUSgiZm9vIiwgRmlsZVBhdGgoImZvbyIpLlJlbW92ZVRyYWls
aW5nUGF0aFNlcGFyYXRvcigpLnN0cmluZygpKTsKK30KKworLy8gUmVtb3ZlVHJhaWxpbmdQYXRo
U2VwYXJhdG9yICJmb28vIiAtPiAiZm9vIgorVEVTVChSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0
b3JUZXN0LCBTaG91bGRSZW1vdmVUcmFpbGluZ1NlcGFyYXRvcikgeworICBFWFBFQ1RfRVEoImZv
byIsCisgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8pLlJlbW92ZVRyYWlsaW5n
UGF0aFNlcGFyYXRvcigpLnN0cmluZygpKTsKKyNpZiBHVEVTVF9IQVNfQUxUX1BBVEhfU0VQXwor
ICBFWFBFQ1RfRVEoImZvbyIsIEZpbGVQYXRoKCJmb28vIikuUmVtb3ZlVHJhaWxpbmdQYXRoU2Vw
YXJhdG9yKCkuc3RyaW5nKCkpOworI2VuZGlmCit9CisKKy8vIFJlbW92ZVRyYWlsaW5nUGF0aFNl
cGFyYXRvciAiZm9vL2Jhci8iIC0+ICJmb28vYmFyLyIKK1RFU1QoUmVtb3ZlVHJhaWxpbmdQYXRo
U2VwYXJhdG9yVGVzdCwgU2hvdWxkUmVtb3ZlTGFzdFNlcGFyYXRvcikgeworICBFWFBFQ1RfRVEo
ImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiLAorICAgICAgICAgICAgRmlsZVBhdGgoImZvbyIg
R1RFU1RfUEFUSF9TRVBfICJiYXIiIEdURVNUX1BBVEhfU0VQXykKKyAgICAgICAgICAgICAgICAu
UmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkuc3RyaW5nKCkpOworfQorCisvLyBSZW1vdmVU
cmFpbGluZ1BhdGhTZXBhcmF0b3IgImZvby9iYXIiIC0+ICJmb28vYmFyIgorVEVTVChSZW1vdmVU
cmFpbGluZ1BhdGhTZXBhcmF0b3JUZXN0LCBTaG91bGRSZXR1cm5Vbm1vZGlmaWVkKSB7CisgIEVY
UEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIsCisgICAgICAgICAgICBGaWxlUGF0
aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIpCisgICAgICAgICAgICAgICAgLlJlbW92ZVRy
YWlsaW5nUGF0aFNlcGFyYXRvcigpLnN0cmluZygpKTsKK30KKworVEVTVChEaXJlY3RvcnlUZXN0
LCBSb290RGlyZWN0b3J5RXhpc3RzKSB7CisjaWYgR1RFU1RfT1NfV0lORE9XUyAgLy8gV2UgYXJl
IG9uIFdpbmRvd3MuCisgIGNoYXIgY3VycmVudF9kcml2ZVtfTUFYX1BBVEhdOyAgLy8gTk9MSU5U
CisgIGN1cnJlbnRfZHJpdmVbMF0gPSBzdGF0aWNfY2FzdDxjaGFyPihfZ2V0ZHJpdmUoKSArICdB
JyAtIDEpOworICBjdXJyZW50X2RyaXZlWzFdID0gJzonOworICBjdXJyZW50X2RyaXZlWzJdID0g
J1xcJzsKKyAgY3VycmVudF9kcml2ZVszXSA9ICdcMCc7CisgIEVYUEVDVF9UUlVFKEZpbGVQYXRo
KGN1cnJlbnRfZHJpdmUpLkRpcmVjdG9yeUV4aXN0cygpKTsKKyNlbHNlCisgIEVYUEVDVF9UUlVF
KEZpbGVQYXRoKCIvIikuRGlyZWN0b3J5RXhpc3RzKCkpOworI2VuZGlmICAvLyBHVEVTVF9PU19X
SU5ET1dTCit9CisKKyNpZiBHVEVTVF9PU19XSU5ET1dTCitURVNUKERpcmVjdG9yeVRlc3QsIFJv
b3RPZldyb25nRHJpdmVEb2VzTm90RXhpc3RzKSB7CisgIGNvbnN0IGludCBzYXZlZF9kcml2ZV8g
PSBfZ2V0ZHJpdmUoKTsKKyAgLy8gRmluZCBhIGRyaXZlIHRoYXQgZG9lc24ndCBleGlzdC4gU3Rh
cnQgd2l0aCAnWicgdG8gYXZvaWQgY29tbW9uIG9uZXMuCisgIGZvciAoY2hhciBkcml2ZSA9ICda
JzsgZHJpdmUgPj0gJ0EnOyBkcml2ZS0tKQorICAgIGlmIChfY2hkcml2ZShkcml2ZSAtICdBJyAr
IDEpID09IC0xKSB7CisgICAgICBjaGFyIG5vbl9kcml2ZVtfTUFYX1BBVEhdOyAgLy8gTk9MSU5U
CisgICAgICBub25fZHJpdmVbMF0gPSBkcml2ZTsKKyAgICAgIG5vbl9kcml2ZVsxXSA9ICc6JzsK
KyAgICAgIG5vbl9kcml2ZVsyXSA9ICdcXCc7CisgICAgICBub25fZHJpdmVbM10gPSAnXDAnOwor
ICAgICAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKG5vbl9kcml2ZSkuRGlyZWN0b3J5RXhpc3RzKCkp
OworICAgICAgYnJlYWs7CisgICAgfQorICBfY2hkcml2ZShzYXZlZF9kcml2ZV8pOworfQorI2Vu
ZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisKKyNpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUK
Ky8vIFdpbmRvd3MgQ0UgX2RvZXNfIGNvbnNpZGVyIGFuIGVtcHR5IGRpcmVjdG9yeSB0byBleGlz
dC4KK1RFU1QoRGlyZWN0b3J5VGVzdCwgRW1wdHlQYXRoRGlyZWN0b3J5RG9lc05vdEV4aXN0KSB7
CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiIikuRGlyZWN0b3J5RXhpc3RzKCkpOworfQorI2Vu
ZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKworVEVTVChEaXJlY3RvcnlUZXN0LCBD
dXJyZW50RGlyZWN0b3J5RXhpc3RzKSB7CisjaWYgR1RFU1RfT1NfV0lORE9XUyAgLy8gV2UgYXJl
IG9uIFdpbmRvd3MuCisjIGlmbmRlZiBfV0lOMzJfQ0UgIC8vIFdpbmRvd3MgQ0UgZG9lc24ndCBo
YXZlIGEgY3VycmVudCBkaXJlY3RvcnkuCisKKyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIi4iKS5E
aXJlY3RvcnlFeGlzdHMoKSk7CisgIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIuXFwiKS5EaXJlY3Rv
cnlFeGlzdHMoKSk7CisKKyMgZW5kaWYgIC8vIF9XSU4zMl9DRQorI2Vsc2UKKyAgRVhQRUNUX1RS
VUUoRmlsZVBhdGgoIi4iKS5EaXJlY3RvcnlFeGlzdHMoKSk7CisgIEVYUEVDVF9UUlVFKEZpbGVQ
YXRoKCIuLyIpLkRpcmVjdG9yeUV4aXN0cygpKTsKKyNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9X
UworfQorCisvLyAiZm9vL2JhciIgPT0gZm9vLy9iYXIiID09ICJmb28vLy9iYXIiCitURVNUKE5v
cm1hbGl6ZVRlc3QsIE11bHRpcGxlQ29uc2VjdXRpdmVTZXBhcGFyYXRvcnNJbk1pZHN0cmluZykg
eworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiLAorICAgICAgICAgICAg
RmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiKS5zdHJpbmcoKSk7CisgIEVYUEVD
VF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIsCisgICAgICAgICAgICBGaWxlUGF0aCgi
Zm9vIiBHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBfICJiYXIiKS5zdHJpbmcoKSk7Cisg
IEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIsCisgICAgICAgICAgICBGaWxl
UGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBfCisgICAgICAgICAgICAg
ICAgICAgICBHVEVTVF9QQVRIX1NFUF8gImJhciIpLnN0cmluZygpKTsKK30KKworLy8gIi9iYXIi
ID09IC8vYmFyIiA9PSAiLy8vYmFyIgorVEVTVChOb3JtYWxpemVUZXN0LCBNdWx0aXBsZUNvbnNl
Y3V0aXZlU2VwYXBhcmF0b3JzQXRTdHJpbmdTdGFydCkgeworICBFWFBFQ1RfRVEoR1RFU1RfUEFU
SF9TRVBfICJiYXIiLAorICAgIEZpbGVQYXRoKEdURVNUX1BBVEhfU0VQXyAiYmFyIikuc3RyaW5n
KCkpOworICBFWFBFQ1RfRVEoR1RFU1RfUEFUSF9TRVBfICJiYXIiLAorICAgIEZpbGVQYXRoKEdU
RVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8gImJhciIpLnN0cmluZygpKTsKKyAgRVhQRUNU
X0VRKEdURVNUX1BBVEhfU0VQXyAiYmFyIiwKKyAgICBGaWxlUGF0aChHVEVTVF9QQVRIX1NFUF8g
R1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXyAiYmFyIikuc3RyaW5nKCkpOworfQorCisv
LyAiZm9vLyIgPT0gZm9vLy8iID09ICJmb28vLy8iCitURVNUKE5vcm1hbGl6ZVRlc3QsIE11bHRp
cGxlQ29uc2VjdXRpdmVTZXBhcGFyYXRvcnNBdFN0cmluZ0VuZCkgeworICBFWFBFQ1RfRVEoImZv
byIgR1RFU1RfUEFUSF9TRVBfLAorICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyku
c3RyaW5nKCkpOworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfLAorICAgIEZpbGVQ
YXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8pLnN0cmluZygpKTsKKyAg
RVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXywKKyAgICBGaWxlUGF0aCgiZm9vIiBHVEVT
VF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXykuc3RyaW5nKCkpOwor
fQorCisjaWYgR1RFU1RfSEFTX0FMVF9QQVRIX1NFUF8KKworLy8gVGVzdHMgdGhhdCBzZXBhcmF0
b3JzIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZyBhcmUgbm9ybWFsaXplZAorLy8gcmVnYXJkbGVz
cyBvZiB0aGVpciBjb21iaW5hdGlvbiAoZS5nLiAiZm9vXCIgPT0iZm9vL1wiID09CisvLyAiZm9v
XFwvIikuCitURVNUKE5vcm1hbGl6ZVRlc3QsIE1peEFsdGVybmF0ZVNlcGFyYXRvckF0U3RyaW5n
RW5kKSB7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sCisgICAgICAgICAgICBG
aWxlUGF0aCgiZm9vLyIpLnN0cmluZygpKTsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhf
U0VQXywKKyAgICAgICAgICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiLyIpLnN0
cmluZygpKTsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXywKKyAgICAgICAgICAg
IEZpbGVQYXRoKCJmb28vLyIgR1RFU1RfUEFUSF9TRVBfKS5zdHJpbmcoKSk7Cit9CisKKyNlbmRp
ZgorCitURVNUKEFzc2lnbm1lbnRPcGVyYXRvclRlc3QsIERlZmF1bHRBc3NpZ25lZFRvTm9uRGVm
YXVsdCkgeworICBGaWxlUGF0aCBkZWZhdWx0X3BhdGg7CisgIEZpbGVQYXRoIG5vbl9kZWZhdWx0
X3BhdGgoInBhdGgiKTsKKyAgbm9uX2RlZmF1bHRfcGF0aCA9IGRlZmF1bHRfcGF0aDsKKyAgRVhQ
RUNUX0VRKCIiLCBub25fZGVmYXVsdF9wYXRoLnN0cmluZygpKTsKKyAgRVhQRUNUX0VRKCIiLCBk
ZWZhdWx0X3BhdGguc3RyaW5nKCkpOyAgLy8gUkhTIHZhciBpcyB1bmNoYW5nZWQuCit9CisKK1RF
U1QoQXNzaWdubWVudE9wZXJhdG9yVGVzdCwgTm9uRGVmYXVsdEFzc2lnbmVkVG9EZWZhdWx0KSB7
CisgIEZpbGVQYXRoIG5vbl9kZWZhdWx0X3BhdGgoInBhdGgiKTsKKyAgRmlsZVBhdGggZGVmYXVs
dF9wYXRoOworICBkZWZhdWx0X3BhdGggPSBub25fZGVmYXVsdF9wYXRoOworICBFWFBFQ1RfRVEo
InBhdGgiLCBkZWZhdWx0X3BhdGguc3RyaW5nKCkpOworICBFWFBFQ1RfRVEoInBhdGgiLCBub25f
ZGVmYXVsdF9wYXRoLnN0cmluZygpKTsgIC8vIFJIUyB2YXIgaXMgdW5jaGFuZ2VkLgorfQorCitU
RVNUKEFzc2lnbm1lbnRPcGVyYXRvclRlc3QsIENvbnN0QXNzaWduZWRUb05vbkNvbnN0KSB7Cisg
IGNvbnN0IEZpbGVQYXRoIGNvbnN0X2RlZmF1bHRfcGF0aCgiY29uc3RfcGF0aCIpOworICBGaWxl
UGF0aCBub25fZGVmYXVsdF9wYXRoKCJwYXRoIik7CisgIG5vbl9kZWZhdWx0X3BhdGggPSBjb25z
dF9kZWZhdWx0X3BhdGg7CisgIEVYUEVDVF9FUSgiY29uc3RfcGF0aCIsIG5vbl9kZWZhdWx0X3Bh
dGguc3RyaW5nKCkpOworfQorCitjbGFzcyBEaXJlY3RvcnlDcmVhdGlvblRlc3QgOiBwdWJsaWMg
VGVzdCB7CisgcHJvdGVjdGVkOgorICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgdGVzdGRh
dGFfcGF0aF8uU2V0KEZpbGVQYXRoKAorICAgICAgICBUZW1wRGlyKCkgKyBHZXRDdXJyZW50RXhl
Y3V0YWJsZU5hbWUoKS5zdHJpbmcoKSArCisgICAgICAgICJfZGlyZWN0b3J5X2NyZWF0aW9uIiBH
VEVTVF9QQVRIX1NFUF8gInRlc3QiIEdURVNUX1BBVEhfU0VQXykpOworICAgIHRlc3RkYXRhX2Zp
bGVfLlNldCh0ZXN0ZGF0YV9wYXRoXy5SZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IoKSk7CisK
KyAgICB1bmlxdWVfZmlsZTBfLlNldChGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKHRlc3RkYXRhX3Bh
dGhfLCBGaWxlUGF0aCgidW5pcXVlIiksCisgICAgICAgIDAsICJ0eHQiKSk7CisgICAgdW5pcXVl
X2ZpbGUxXy5TZXQoRmlsZVBhdGg6Ok1ha2VGaWxlTmFtZSh0ZXN0ZGF0YV9wYXRoXywgRmlsZVBh
dGgoInVuaXF1ZSIpLAorICAgICAgICAxLCAidHh0IikpOworCisgICAgcmVtb3ZlKHRlc3RkYXRh
X2ZpbGVfLmNfc3RyKCkpOworICAgIHJlbW92ZSh1bmlxdWVfZmlsZTBfLmNfc3RyKCkpOworICAg
IHJlbW92ZSh1bmlxdWVfZmlsZTFfLmNfc3RyKCkpOworICAgIHBvc2l4OjpSbURpcih0ZXN0ZGF0
YV9wYXRoXy5jX3N0cigpKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAg
ICByZW1vdmUodGVzdGRhdGFfZmlsZV8uY19zdHIoKSk7CisgICAgcmVtb3ZlKHVuaXF1ZV9maWxl
MF8uY19zdHIoKSk7CisgICAgcmVtb3ZlKHVuaXF1ZV9maWxlMV8uY19zdHIoKSk7CisgICAgcG9z
aXg6OlJtRGlyKHRlc3RkYXRhX3BhdGhfLmNfc3RyKCkpOworICB9CisKKyAgdm9pZCBDcmVhdGVU
ZXh0RmlsZShjb25zdCBjaGFyKiBmaWxlbmFtZSkgeworICAgIEZJTEUqIGYgPSBwb3NpeDo6Rk9w
ZW4oZmlsZW5hbWUsICJ3Iik7CisgICAgZnByaW50ZihmLCAidGV4dFxuIik7CisgICAgZmNsb3Nl
KGYpOworICB9CisKKyAgLy8gU3RyaW5ncyByZXByZXNlbnRpbmcgYSBkaXJlY3RvcnkgYW5kIGEg
ZmlsZSwgd2l0aCBpZGVudGljYWwgcGF0aHMKKyAgLy8gZXhjZXB0IGZvciB0aGUgdHJhaWxpbmcg
c2VwYXJhdG9yIGNoYXJhY3RlciB0aGF0IGRpc3RpbnF1aXNoZXMKKyAgLy8gYSBkaXJlY3Rvcnkg
bmFtZWQgJ3Rlc3QnIGZyb20gYSBmaWxlIG5hbWVkICd0ZXN0Jy4gRXhhbXBsZSBuYW1lczoKKyAg
RmlsZVBhdGggdGVzdGRhdGFfcGF0aF87ICAvLyAiL3RtcC9kaXJlY3RvcnlfY3JlYXRpb24vdGVz
dC8iCisgIEZpbGVQYXRoIHRlc3RkYXRhX2ZpbGVfOyAgLy8gIi90bXAvZGlyZWN0b3J5X2NyZWF0
aW9uL3Rlc3QiCisgIEZpbGVQYXRoIHVuaXF1ZV9maWxlMF87ICAvLyAiL3RtcC9kaXJlY3Rvcnlf
Y3JlYXRpb24vdGVzdC91bmlxdWUudHh0IgorICBGaWxlUGF0aCB1bmlxdWVfZmlsZTFfOyAgLy8g
Ii90bXAvZGlyZWN0b3J5X2NyZWF0aW9uL3Rlc3QvdW5pcXVlXzEudHh0IgorfTsKKworVEVTVF9G
KERpcmVjdG9yeUNyZWF0aW9uVGVzdCwgQ3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVseSkgewor
ICBFWFBFQ1RfRkFMU0UodGVzdGRhdGFfcGF0aF8uRGlyZWN0b3J5RXhpc3RzKCkpIDw8IHRlc3Rk
YXRhX3BhdGhfLnN0cmluZygpOworICBFWFBFQ1RfVFJVRSh0ZXN0ZGF0YV9wYXRoXy5DcmVhdGVE
aXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkpOworICBFWFBFQ1RfVFJVRSh0ZXN0ZGF0YV9wYXRoXy5E
aXJlY3RvcnlFeGlzdHMoKSk7Cit9CisKK1RFU1RfRihEaXJlY3RvcnlDcmVhdGlvblRlc3QsIENy
ZWF0ZURpcmVjdG9yaWVzRm9yQWxyZWFkeUV4aXN0aW5nUGF0aCkgeworICBFWFBFQ1RfRkFMU0Uo
dGVzdGRhdGFfcGF0aF8uRGlyZWN0b3J5RXhpc3RzKCkpIDw8IHRlc3RkYXRhX3BhdGhfLnN0cmlu
ZygpOworICBFWFBFQ1RfVFJVRSh0ZXN0ZGF0YV9wYXRoXy5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vy
c2l2ZWx5KCkpOworICAvLyBDYWxsICdjcmVhdGUnIGFnYWluLi4uIHNob3VsZCBzdGlsbCBzdWNj
ZWVkLgorICBFWFBFQ1RfVFJVRSh0ZXN0ZGF0YV9wYXRoXy5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vy
c2l2ZWx5KCkpOworfQorCitURVNUX0YoRGlyZWN0b3J5Q3JlYXRpb25UZXN0LCBDcmVhdGVEaXJl
Y3Rvcmllc0FuZFVuaXF1ZUZpbGVuYW1lKSB7CisgIEZpbGVQYXRoIGZpbGVfcGF0aChGaWxlUGF0
aDo6R2VuZXJhdGVVbmlxdWVGaWxlTmFtZSh0ZXN0ZGF0YV9wYXRoXywKKyAgICAgIEZpbGVQYXRo
KCJ1bmlxdWUiKSwgInR4dCIpKTsKKyAgRVhQRUNUX0VRKHVuaXF1ZV9maWxlMF8uc3RyaW5nKCks
IGZpbGVfcGF0aC5zdHJpbmcoKSk7CisgIEVYUEVDVF9GQUxTRShmaWxlX3BhdGguRmlsZU9yRGly
ZWN0b3J5RXhpc3RzKCkpOyAgLy8gZmlsZSBub3QgdGhlcmUKKworICB0ZXN0ZGF0YV9wYXRoXy5D
cmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCk7CisgIEVYUEVDVF9GQUxTRShmaWxlX3BhdGgu
RmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkpOyAgLy8gZmlsZSBzdGlsbCBub3QgdGhlcmUKKyAgQ3Jl
YXRlVGV4dEZpbGUoZmlsZV9wYXRoLmNfc3RyKCkpOworICBFWFBFQ1RfVFJVRShmaWxlX3BhdGgu
RmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkpOworCisgIEZpbGVQYXRoIGZpbGVfcGF0aDIoRmlsZVBh
dGg6OkdlbmVyYXRlVW5pcXVlRmlsZU5hbWUodGVzdGRhdGFfcGF0aF8sCisgICAgICBGaWxlUGF0
aCgidW5pcXVlIiksICJ0eHQiKSk7CisgIEVYUEVDVF9FUSh1bmlxdWVfZmlsZTFfLnN0cmluZygp
LCBmaWxlX3BhdGgyLnN0cmluZygpKTsKKyAgRVhQRUNUX0ZBTFNFKGZpbGVfcGF0aDIuRmlsZU9y
RGlyZWN0b3J5RXhpc3RzKCkpOyAgLy8gZmlsZSBub3QgdGhlcmUKKyAgQ3JlYXRlVGV4dEZpbGUo
ZmlsZV9wYXRoMi5jX3N0cigpKTsKKyAgRVhQRUNUX1RSVUUoZmlsZV9wYXRoMi5GaWxlT3JEaXJl
Y3RvcnlFeGlzdHMoKSk7Cit9CisKK1RFU1RfRihEaXJlY3RvcnlDcmVhdGlvblRlc3QsIENyZWF0
ZURpcmVjdG9yaWVzRmFpbCkgeworICAvLyBmb3JjZSBhIGZhaWx1cmUgYnkgcHV0dGluZyBhIGZp
bGUgd2hlcmUgd2Ugd2lsbCB0cnkgdG8gY3JlYXRlIGEgZGlyZWN0b3J5LgorICBDcmVhdGVUZXh0
RmlsZSh0ZXN0ZGF0YV9maWxlXy5jX3N0cigpKTsKKyAgRVhQRUNUX1RSVUUodGVzdGRhdGFfZmls
ZV8uRmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkpOworICBFWFBFQ1RfRkFMU0UodGVzdGRhdGFfZmls
ZV8uRGlyZWN0b3J5RXhpc3RzKCkpOworICBFWFBFQ1RfRkFMU0UodGVzdGRhdGFfZmlsZV8uQ3Jl
YXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVseSgpKTsKK30KKworVEVTVChOb0RpcmVjdG9yeUNyZWF0
aW9uVGVzdCwgQ3JlYXRlTm9EaXJlY3Rvcmllc0ZvckRlZmF1bHRYbWxGaWxlKSB7CisgIGNvbnN0
IEZpbGVQYXRoIHRlc3RfZGV0YWlsX3htbCgidGVzdF9kZXRhaWwueG1sIik7CisgIEVYUEVDVF9G
QUxTRSh0ZXN0X2RldGFpbF94bWwuQ3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVseSgpKTsKK30K
KworVEVTVChGaWxlUGF0aFRlc3QsIERlZmF1bHRDb25zdHJ1Y3RvcikgeworICBGaWxlUGF0aCBm
cDsKKyAgRVhQRUNUX0VRKCIiLCBmcC5zdHJpbmcoKSk7Cit9CisKK1RFU1QoRmlsZVBhdGhUZXN0
LCBDaGFyQW5kQ29weUNvbnN0cnVjdG9ycykgeworICBjb25zdCBGaWxlUGF0aCBmcCgic3BpY3ki
KTsKKyAgRVhQRUNUX0VRKCJzcGljeSIsIGZwLnN0cmluZygpKTsKKworICBjb25zdCBGaWxlUGF0
aCBmcF9jb3B5KGZwKTsKKyAgRVhQRUNUX0VRKCJzcGljeSIsIGZwX2NvcHkuc3RyaW5nKCkpOwor
fQorCitURVNUKEZpbGVQYXRoVGVzdCwgU3RyaW5nQ29uc3RydWN0b3IpIHsKKyAgY29uc3QgRmls
ZVBhdGggZnAoc3RkOjpzdHJpbmcoImNpZGVyIikpOworICBFWFBFQ1RfRVEoImNpZGVyIiwgZnAu
c3RyaW5nKCkpOworfQorCitURVNUKEZpbGVQYXRoVGVzdCwgU2V0KSB7CisgIGNvbnN0IEZpbGVQ
YXRoIGFwcGxlKCJhcHBsZSIpOworICBGaWxlUGF0aCBtYWMoIm1hYyIpOworICBtYWMuU2V0KGFw
cGxlKTsgIC8vIEltcGxlbWVudCBTZXQoKSBzaW5jZSBvdmVybG9hZGluZyBvcGVyYXRvcj0gaXMg
Zm9yYmlkZGVuLgorICBFWFBFQ1RfRVEoImFwcGxlIiwgbWFjLnN0cmluZygpKTsKKyAgRVhQRUNU
X0VRKCJhcHBsZSIsIGFwcGxlLnN0cmluZygpKTsKK30KKworVEVTVChGaWxlUGF0aFRlc3QsIFRv
U3RyaW5nKSB7CisgIGNvbnN0IEZpbGVQYXRoIGZpbGUoImRyaW5rIik7CisgIEVYUEVDVF9FUSgi
ZHJpbmsiLCBmaWxlLnN0cmluZygpKTsKK30KKworVEVTVChGaWxlUGF0aFRlc3QsIFJlbW92ZUV4
dGVuc2lvbikgeworICBFWFBFQ1RfRVEoImFwcCIsIEZpbGVQYXRoKCJhcHAuY2MiKS5SZW1vdmVF
eHRlbnNpb24oImNjIikuc3RyaW5nKCkpOworICBFWFBFQ1RfRVEoImFwcCIsIEZpbGVQYXRoKCJh
cHAuZXhlIikuUmVtb3ZlRXh0ZW5zaW9uKCJleGUiKS5zdHJpbmcoKSk7CisgIEVYUEVDVF9FUSgi
QVBQIiwgRmlsZVBhdGgoIkFQUC5FWEUiKS5SZW1vdmVFeHRlbnNpb24oImV4ZSIpLnN0cmluZygp
KTsKK30KKworVEVTVChGaWxlUGF0aFRlc3QsIFJlbW92ZUV4dGVuc2lvbldoZW5UaGVyZUlzTm9F
eHRlbnNpb24pIHsKKyAgRVhQRUNUX0VRKCJhcHAiLCBGaWxlUGF0aCgiYXBwIikuUmVtb3ZlRXh0
ZW5zaW9uKCJleGUiKS5zdHJpbmcoKSk7Cit9CisKK1RFU1QoRmlsZVBhdGhUZXN0LCBJc0RpcmVj
dG9yeSkgeworICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoImNvbGEiKS5Jc0RpcmVjdG9yeSgpKTsK
KyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoImtvYWxhIiBHVEVTVF9QQVRIX1NFUF8pLklzRGlyZWN0
b3J5KCkpOworI2lmIEdURVNUX0hBU19BTFRfUEFUSF9TRVBfCisgIEVYUEVDVF9UUlVFKEZpbGVQ
YXRoKCJrb2FsYS8iKS5Jc0RpcmVjdG9yeSgpKTsKKyNlbmRpZgorfQorCitURVNUKEZpbGVQYXRo
VGVzdCwgSXNBYnNvbHV0ZVBhdGgpIHsKKyAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCJpcyIgR1RF
U1RfUEFUSF9TRVBfICJyZWxhdGl2ZSIpLklzQWJzb2x1dGVQYXRoKCkpOworICBFWFBFQ1RfRkFM
U0UoRmlsZVBhdGgoIiIpLklzQWJzb2x1dGVQYXRoKCkpOworI2lmIEdURVNUX09TX1dJTkRPV1MK
KyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoImM6XFwiIEdURVNUX1BBVEhfU0VQXyAiaXNfbm90Igor
ICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9QQVRIX1NFUF8gInJlbGF0aXZlIikuSXNBYnNv
bHV0ZVBhdGgoKSk7CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiYzpmb28iIEdURVNUX1BBVEhf
U0VQXyAiYmFyIikuSXNBYnNvbHV0ZVBhdGgoKSk7CisgIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCJj
Oi8iIEdURVNUX1BBVEhfU0VQXyAiaXNfbm90IgorICAgICAgICAgICAgICAgICAgICAgICBHVEVT
VF9QQVRIX1NFUF8gInJlbGF0aXZlIikuSXNBYnNvbHV0ZVBhdGgoKSk7CisjZWxzZQorICBFWFBF
Q1RfVFJVRShGaWxlUGF0aChHVEVTVF9QQVRIX1NFUF8gImlzX25vdCIgR1RFU1RfUEFUSF9TRVBf
ICJyZWxhdGl2ZSIpCisgICAgICAgICAgICAgIC5Jc0Fic29sdXRlUGF0aCgpKTsKKyNlbmRpZiAg
Ly8gR1RFU1RfT1NfV0lORE9XUworfQorCitURVNUKEZpbGVQYXRoVGVzdCwgSXNSb290RGlyZWN0
b3J5KSB7CisjaWYgR1RFU1RfT1NfV0lORE9XUworICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgiYTpc
XCIpLklzUm9vdERpcmVjdG9yeSgpKTsKKyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIlo6LyIpLklz
Um9vdERpcmVjdG9yeSgpKTsKKyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoImU6Ly8iKS5Jc1Jvb3RE
aXJlY3RvcnkoKSk7CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiIikuSXNSb290RGlyZWN0b3J5
KCkpOworICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoImI6IikuSXNSb290RGlyZWN0b3J5KCkpOwor
ICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoImI6YSIpLklzUm9vdERpcmVjdG9yeSgpKTsKKyAgRVhQ
RUNUX0ZBTFNFKEZpbGVQYXRoKCI4Oi8iKS5Jc1Jvb3REaXJlY3RvcnkoKSk7CisgIEVYUEVDVF9G
QUxTRShGaWxlUGF0aCgiY3wvIikuSXNSb290RGlyZWN0b3J5KCkpOworI2Vsc2UKKyAgRVhQRUNU
X1RSVUUoRmlsZVBhdGgoIi8iKS5Jc1Jvb3REaXJlY3RvcnkoKSk7CisgIEVYUEVDVF9UUlVFKEZp
bGVQYXRoKCIvLyIpLklzUm9vdERpcmVjdG9yeSgpKTsKKyAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRo
KCIiKS5Jc1Jvb3REaXJlY3RvcnkoKSk7CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiXFwiKS5J
c1Jvb3REaXJlY3RvcnkoKSk7CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiL3giKS5Jc1Jvb3RE
aXJlY3RvcnkoKSk7CisjZW5kaWYKK30KKworfSAgLy8gbmFtZXNwYWNlCit9ICAvLyBuYW1lc3Bh
Y2UgaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC90ZXN0L2d0ZXN0LWxpbmtlZF9wdHJfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rl
c3QtbGlua2VkX3B0cl90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmY2Y1MTI0YThjMzFhZjg0OGZkMTA3
N2E0NTFhN2M0MTg0NGM0MzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0
ZXN0LWxpbmtlZF9wdHJfdGVzdC5jYwpAQCAtMCwwICsxLDE1NCBAQAorLy8gQ29weXJpZ2h0IDIw
MDMsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisv
LyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEF1dGhvcnM6IERhbiBFZ25vciAo
ZWdub3JAZ29vZ2xlLmNvbSkKKy8vIFBvcnRlZCB0byBXaW5kb3dzOiBWYWRpbSBCZXJtYW4gKHZh
ZGltYkBnb29nbGUuY29tKQorCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtbGlua2Vk
X3B0ci5oIgorCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIK
KworbmFtZXNwYWNlIHsKKwordXNpbmcgdGVzdGluZzo6TWVzc2FnZTsKK3VzaW5nIHRlc3Rpbmc6
OmludGVybmFsOjpsaW5rZWRfcHRyOworCitpbnQgbnVtOworTWVzc2FnZSogaGlzdG9yeSA9IE5V
TEw7CisKKy8vIENsYXNzIHdoaWNoIHRyYWNrcyBhbGxvY2F0aW9uL2RlYWxsb2NhdGlvbgorY2xh
c3MgQSB7CisgcHVibGljOgorICBBKCk6IG15bnVtKG51bSsrKSB7ICpoaXN0b3J5IDw8ICJBIiA8
PCBteW51bSA8PCAiIGN0b3JcbiI7IH0KKyAgdmlydHVhbCB+QSgpIHsgKmhpc3RvcnkgPDwgIkEi
IDw8IG15bnVtIDw8ICIgZHRvclxuIjsgfQorICB2aXJ0dWFsIHZvaWQgVXNlKCkgeyAqaGlzdG9y
eSA8PCAiQSIgPDwgbXludW0gPDwgIiB1c2VcbiI7IH0KKyBwcm90ZWN0ZWQ6CisgIGludCBteW51
bTsKK307CisKKy8vIFN1YmNsYXNzCitjbGFzcyBCIDogcHVibGljIEEgeworIHB1YmxpYzoKKyAg
QigpIHsgKmhpc3RvcnkgPDwgIkIiIDw8IG15bnVtIDw8ICIgY3RvclxuIjsgfQorICB+QigpIHsg
Kmhpc3RvcnkgPDwgIkIiIDw8IG15bnVtIDw8ICIgZHRvclxuIjsgfQorICB2aXJ0dWFsIHZvaWQg
VXNlKCkgeyAqaGlzdG9yeSA8PCAiQiIgPDwgbXludW0gPDwgIiB1c2VcbiI7IH0KK307CisKK2Ns
YXNzIExpbmtlZFB0clRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CisgcHVibGljOgorICBM
aW5rZWRQdHJUZXN0KCkgeworICAgIG51bSA9IDA7CisgICAgaGlzdG9yeSA9IG5ldyBNZXNzYWdl
OworICB9CisKKyAgdmlydHVhbCB+TGlua2VkUHRyVGVzdCgpIHsKKyAgICBkZWxldGUgaGlzdG9y
eTsKKyAgICBoaXN0b3J5ID0gTlVMTDsKKyAgfQorfTsKKworVEVTVF9GKExpbmtlZFB0clRlc3Qs
IEdlbmVyYWxUZXN0KSB7CisgIHsKKyAgICBsaW5rZWRfcHRyPEE+IGEwLCBhMSwgYTI7CisgICAg
Ly8gVXNlIGV4cGxpY2l0IGZ1bmN0aW9uIGNhbGwgbm90YXRpb24gaGVyZSB0byBzdXBwcmVzcyBz
ZWxmLWFzc2lnbiB3YXJuaW5nLgorICAgIGEwLm9wZXJhdG9yPShhMCk7CisgICAgYTEgPSBhMjsK
KyAgICBBU1NFUlRfRVEoYTAuZ2V0KCksIHN0YXRpY19jYXN0PEEqPihOVUxMKSk7CisgICAgQVNT
RVJUX0VRKGExLmdldCgpLCBzdGF0aWNfY2FzdDxBKj4oTlVMTCkpOworICAgIEFTU0VSVF9FUShh
Mi5nZXQoKSwgc3RhdGljX2Nhc3Q8QSo+KE5VTEwpKTsKKyAgICBBU1NFUlRfVFJVRShhMCA9PSBO
VUxMKTsKKyAgICBBU1NFUlRfVFJVRShhMSA9PSBOVUxMKTsKKyAgICBBU1NFUlRfVFJVRShhMiA9
PSBOVUxMKTsKKworICAgIHsKKyAgICAgIGxpbmtlZF9wdHI8QT4gYTMobmV3IEEpOworICAgICAg
YTAgPSBhMzsKKyAgICAgIEFTU0VSVF9UUlVFKGEwID09IGEzKTsKKyAgICAgIEFTU0VSVF9UUlVF
KGEwICE9IE5VTEwpOworICAgICAgQVNTRVJUX1RSVUUoYTAuZ2V0KCkgPT0gYTMpOworICAgICAg
QVNTRVJUX1RSVUUoYTAgPT0gYTMuZ2V0KCkpOworICAgICAgbGlua2VkX3B0cjxBPiBhNChhMCk7
CisgICAgICBhMSA9IGE0OworICAgICAgbGlua2VkX3B0cjxBPiBhNShuZXcgQSk7CisgICAgICBB
U1NFUlRfVFJVRShhNS5nZXQoKSAhPSBhMyk7CisgICAgICBBU1NFUlRfVFJVRShhNSAhPSBhMy5n
ZXQoKSk7CisgICAgICBhMiA9IGE1OworICAgICAgbGlua2VkX3B0cjxCPiBiMChuZXcgQik7Cisg
ICAgICBsaW5rZWRfcHRyPEE+IGE2KGIwKTsKKyAgICAgIEFTU0VSVF9UUlVFKGIwID09IGE2KTsK
KyAgICAgIEFTU0VSVF9UUlVFKGE2ID09IGIwKTsKKyAgICAgIEFTU0VSVF9UUlVFKGIwICE9IE5V
TEwpOworICAgICAgYTUgPSBiMDsKKyAgICAgIGE1ID0gYjA7CisgICAgICBhMy0+VXNlKCk7Cisg
ICAgICBhNC0+VXNlKCk7CisgICAgICBhNS0+VXNlKCk7CisgICAgICBhNi0+VXNlKCk7CisgICAg
ICBiMC0+VXNlKCk7CisgICAgICAoKmIwKS5Vc2UoKTsKKyAgICAgIGIwLmdldCgpLT5Vc2UoKTsK
KyAgICB9CisKKyAgICBhMC0+VXNlKCk7CisgICAgYTEtPlVzZSgpOworICAgIGEyLT5Vc2UoKTsK
KworICAgIGExID0gYTI7CisgICAgYTIucmVzZXQobmV3IEEpOworICAgIGEwLnJlc2V0KCk7CisK
KyAgICBsaW5rZWRfcHRyPEE+IGE3OworICB9CisKKyAgQVNTRVJUX1NUUkVRKAorICAgICJBMCBj
dG9yXG4iCisgICAgIkExIGN0b3JcbiIKKyAgICAiQTIgY3RvclxuIgorICAgICJCMiBjdG9yXG4i
CisgICAgIkEwIHVzZVxuIgorICAgICJBMCB1c2VcbiIKKyAgICAiQjIgdXNlXG4iCisgICAgIkIy
IHVzZVxuIgorICAgICJCMiB1c2VcbiIKKyAgICAiQjIgdXNlXG4iCisgICAgIkIyIHVzZVxuIgor
ICAgICJCMiBkdG9yXG4iCisgICAgIkEyIGR0b3JcbiIKKyAgICAiQTAgdXNlXG4iCisgICAgIkEw
IHVzZVxuIgorICAgICJBMSB1c2VcbiIKKyAgICAiQTMgY3RvclxuIgorICAgICJBMCBkdG9yXG4i
CisgICAgIkEzIGR0b3JcbiIKKyAgICAiQTEgZHRvclxuIiwKKyAgICBoaXN0b3J5LT5HZXRTdHJp
bmcoKS5jX3N0cigpKTsKK30KKworfSAgLy8gVW5uYW1lZCBuYW1lc3BhY2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3QtbGlzdGVuZXJfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rl
c3QvZ3Rlc3QtbGlzdGVuZXJfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDc0NzY4NWYwNzJiMjIxMDhm
Y2QxYzMxZDVjY2M1ZDQ2MjI5NjMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVz
dC9ndGVzdC1saXN0ZW5lcl90ZXN0LmNjCkBAIC0wLDAgKzEsMzExIEBACisvLyBDb3B5cmlnaHQg
MjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisv
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNv
bSAoVmxhZCBMb3NldikKKy8vCisvLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAo
R29vZ2xlIFRlc3QpCisvLworLy8gVGhpcyBmaWxlIHZlcmlmaWVzIEdvb2dsZSBUZXN0IGV2ZW50
IGxpc3RlbmVycyByZWNlaXZlIGV2ZW50cyBhdCB0aGUKKy8vIHJpZ2h0IHRpbWVzLgorCisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlIDx2ZWN0b3I+CisKK3VzaW5nIDo6dGVzdGlu
Zzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50OwordXNpbmcgOjp0ZXN0aW5nOjpFbnZpcm9ubWVu
dDsKK3VzaW5nIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3Q7Cit1c2luZyA6OnRlc3Rpbmc6OlRl
c3Q7Cit1c2luZyA6OnRlc3Rpbmc6OlRlc3RDYXNlOwordXNpbmcgOjp0ZXN0aW5nOjpUZXN0RXZl
bnRMaXN0ZW5lcjsKK3VzaW5nIDo6dGVzdGluZzo6VGVzdEluZm87Cit1c2luZyA6OnRlc3Rpbmc6
OlRlc3RQYXJ0UmVzdWx0OwordXNpbmcgOjp0ZXN0aW5nOjpVbml0VGVzdDsKKworLy8gVXNlZCBi
eSB0ZXN0cyB0byByZWdpc3RlciB0aGVpciBldmVudHMuCitzdGQ6OnZlY3RvcjxzdGQ6OnN0cmlu
Zz4qIGdfZXZlbnRzID0gTlVMTDsKKworbmFtZXNwYWNlIHRlc3RpbmcgeworbmFtZXNwYWNlIGlu
dGVybmFsIHsKKworY2xhc3MgRXZlbnRSZWNvcmRpbmdMaXN0ZW5lciA6IHB1YmxpYyBUZXN0RXZl
bnRMaXN0ZW5lciB7CisgcHVibGljOgorICBleHBsaWNpdCBFdmVudFJlY29yZGluZ0xpc3RlbmVy
KGNvbnN0IGNoYXIqIG5hbWUpIDogbmFtZV8obmFtZSkge30KKworIHByb3RlY3RlZDoKKyAgdmly
dHVhbCB2b2lkIE9uVGVzdFByb2dyYW1TdGFydChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3Qq
LykgeworICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uVGVzdFBy
b2dyYW1TdGFydCIpKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBPblRlc3RJdGVyYXRpb25TdGFy
dChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBpdGVyYXRpb24pIHsKKyAgICBNZXNzYWdlIG1lc3NhZ2U7CisgICAg
bWVzc2FnZSA8PCBHZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0SXRlcmF0aW9uU3RhcnQiKQorICAg
ICAgICAgICAgPDwgIigiIDw8IGl0ZXJhdGlvbiA8PCAiKSI7CisgICAgZ19ldmVudHMtPnB1c2hf
YmFjayhtZXNzYWdlLkdldFN0cmluZygpKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBPbkVudmly
b25tZW50c1NldFVwU3RhcnQoY29uc3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8pIHsKKyAgICBn
X2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPbkVudmlyb25tZW50c1NldFVw
U3RhcnQiKSk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgT25FbnZpcm9ubWVudHNTZXRVcEVuZChj
b25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykgeworICAgIGdfZXZlbnRzLT5wdXNoX2JhY2so
R2V0RnVsbE1ldGhvZE5hbWUoIk9uRW52aXJvbm1lbnRzU2V0VXBFbmQiKSk7CisgIH0KKworICB2
aXJ0dWFsIHZvaWQgT25UZXN0Q2FzZVN0YXJ0KGNvbnN0IFRlc3RDYXNlJiAvKnRlc3RfY2FzZSov
KSB7CisgICAgZ19ldmVudHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0Q2Fz
ZVN0YXJ0IikpOworICB9CisKKyAgdmlydHVhbCB2b2lkIE9uVGVzdFN0YXJ0KGNvbnN0IFRlc3RJ
bmZvJiAvKnRlc3RfaW5mbyovKSB7CisgICAgZ19ldmVudHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0
aG9kTmFtZSgiT25UZXN0U3RhcnQiKSk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgT25UZXN0UGFy
dFJlc3VsdChjb25zdCBUZXN0UGFydFJlc3VsdCYgLyp0ZXN0X3BhcnRfcmVzdWx0Ki8pIHsKKyAg
ICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPblRlc3RQYXJ0UmVzdWx0
IikpOworICB9CisKKyAgdmlydHVhbCB2b2lkIE9uVGVzdEVuZChjb25zdCBUZXN0SW5mbyYgLyp0
ZXN0X2luZm8qLykgeworICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUo
Ik9uVGVzdEVuZCIpKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBPblRlc3RDYXNlRW5kKGNvbnN0
IFRlc3RDYXNlJiAvKnRlc3RfY2FzZSovKSB7CisgICAgZ19ldmVudHMtPnB1c2hfYmFjayhHZXRG
dWxsTWV0aG9kTmFtZSgiT25UZXN0Q2FzZUVuZCIpKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBP
bkVudmlyb25tZW50c1RlYXJEb3duU3RhcnQoY29uc3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8p
IHsKKyAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPbkVudmlyb25t
ZW50c1RlYXJEb3duU3RhcnQiKSk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgT25FbnZpcm9ubWVu
dHNUZWFyRG93bkVuZChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykgeworICAgIGdfZXZl
bnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uRW52aXJvbm1lbnRzVGVhckRvd25F
bmQiKSk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgT25UZXN0SXRlcmF0aW9uRW5kKGNvbnN0IFVu
aXRUZXN0JiAvKnVuaXRfdGVzdCovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBpdGVyYXRpb24pIHsKKyAgICBNZXNzYWdlIG1lc3NhZ2U7CisgICAgbWVzc2FnZSA8PCBH
ZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0SXRlcmF0aW9uRW5kIikKKyAgICAgICAgICAgIDw8ICIo
IiAgPDwgaXRlcmF0aW9uIDw8ICIpIjsKKyAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKG1lc3NhZ2Uu
R2V0U3RyaW5nKCkpOworICB9CisKKyAgdmlydHVhbCB2b2lkIE9uVGVzdFByb2dyYW1FbmQoY29u
c3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8pIHsKKyAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdl
dEZ1bGxNZXRob2ROYW1lKCJPblRlc3RQcm9ncmFtRW5kIikpOworICB9CisKKyBwcml2YXRlOgor
ICBzdGQ6OnN0cmluZyBHZXRGdWxsTWV0aG9kTmFtZShjb25zdCBjaGFyKiBuYW1lKSB7CisgICAg
cmV0dXJuIG5hbWVfICsgIi4iICsgbmFtZTsKKyAgfQorCisgIHN0ZDo6c3RyaW5nIG5hbWVfOwor
fTsKKworY2xhc3MgRW52aXJvbm1lbnRJbnZvY2F0aW9uQ2F0Y2hlciA6IHB1YmxpYyBFbnZpcm9u
bWVudCB7CisgcHJvdGVjdGVkOgorICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgZ19ldmVu
dHMtPnB1c2hfYmFjaygiRW52aXJvbm1lbnQ6OlNldFVwIik7CisgIH0KKworICB2aXJ0dWFsIHZv
aWQgVGVhckRvd24oKSB7CisgICAgZ19ldmVudHMtPnB1c2hfYmFjaygiRW52aXJvbm1lbnQ6OlRl
YXJEb3duIik7CisgIH0KK307CisKK2NsYXNzIExpc3RlbmVyVGVzdCA6IHB1YmxpYyBUZXN0IHsK
KyBwcm90ZWN0ZWQ6CisgIHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7CisgICAgZ19ldmVu
dHMtPnB1c2hfYmFjaygiTGlzdGVuZXJUZXN0OjpTZXRVcFRlc3RDYXNlIik7CisgIH0KKworICBz
dGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeworICAgIGdfZXZlbnRzLT5wdXNoX2JhY2so
Ikxpc3RlbmVyVGVzdDo6VGVhckRvd25UZXN0Q2FzZSIpOworICB9CisKKyAgdmlydHVhbCB2b2lk
IFNldFVwKCkgeworICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soIkxpc3RlbmVyVGVzdDo6U2V0VXAi
KTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBnX2V2ZW50cy0+cHVz
aF9iYWNrKCJMaXN0ZW5lclRlc3Q6OlRlYXJEb3duIik7CisgIH0KK307CisKK1RFU1RfRihMaXN0
ZW5lclRlc3QsIERvZXNGb28pIHsKKyAgLy8gVGVzdCBleGVjdXRpb24gb3JkZXIgd2l0aGluIGEg
dGVzdCBjYXNlIGlzIG5vdCBndWFyYW50ZWVkIHNvIHdlIGFyZSBub3QKKyAgLy8gcmVjb3JkaW5n
IHRoZSB0ZXN0IG5hbWUuCisgIGdfZXZlbnRzLT5wdXNoX2JhY2soIkxpc3RlbmVyVGVzdDo6KiBU
ZXN0IEJvZHkiKTsKKyAgU1VDQ0VFRCgpOyAgLy8gVHJpZ2dlcnMgT25UZXN0UGFydFJlc3VsdC4K
K30KKworVEVTVF9GKExpc3RlbmVyVGVzdCwgRG9lc0JhcikgeworICBnX2V2ZW50cy0+cHVzaF9i
YWNrKCJMaXN0ZW5lclRlc3Q6OiogVGVzdCBCb2R5Iik7CisgIFNVQ0NFRUQoKTsgIC8vIFRyaWdn
ZXJzIE9uVGVzdFBhcnRSZXN1bHQuCit9CisKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAorCit9
ICAvLyBuYW1lc3BhY2UgdGVzdGluZworCit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpFbnZp
cm9ubWVudEludm9jYXRpb25DYXRjaGVyOwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RXZl
bnRSZWNvcmRpbmdMaXN0ZW5lcjsKKwordm9pZCBWZXJpZnlSZXN1bHRzKGNvbnN0IHN0ZDo6dmVj
dG9yPHN0ZDo6c3RyaW5nPiYgZGF0YSwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBj
b25zdCogZXhwZWN0ZWRfZGF0YSwKKyAgICAgICAgICAgICAgICAgICBzaXplX3QgZXhwZWN0ZWRf
ZGF0YV9zaXplKSB7CisgIGNvbnN0IHNpemVfdCBhY3R1YWxfc2l6ZSA9IGRhdGEuc2l6ZSgpOwor
ICAvLyBJZiB0aGUgZm9sbG93aW5nIGFzc2VydGlvbiBmYWlscywgYSBuZXcgZW50cnkgd2lsbCBi
ZSBhcHBlbmRlZCB0bworICAvLyBkYXRhLiAgSGVuY2Ugd2Ugc2F2ZSBkYXRhLnNpemUoKSBmaXJz
dC4KKyAgRVhQRUNUX0VRKGV4cGVjdGVkX2RhdGFfc2l6ZSwgYWN0dWFsX3NpemUpOworCisgIC8v
IENvbXBhcmVzIHRoZSBjb21tb24gcHJlZml4LgorICBjb25zdCBzaXplX3Qgc2hvcnRlcl9zaXpl
ID0gZXhwZWN0ZWRfZGF0YV9zaXplIDw9IGFjdHVhbF9zaXplID8KKyAgICAgIGV4cGVjdGVkX2Rh
dGFfc2l6ZSA6IGFjdHVhbF9zaXplOworICBzaXplX3QgaSA9IDA7CisgIGZvciAoOyBpIDwgc2hv
cnRlcl9zaXplOyArK2kpIHsKKyAgICBBU1NFUlRfU1RSRVEoZXhwZWN0ZWRfZGF0YVtpXSwgZGF0
YVtpXS5jX3N0cigpKQorICAgICAgICA8PCAiYXQgcG9zaXRpb24gIiA8PCBpOworICB9CisKKyAg
Ly8gUHJpbnRzIGV4dHJhIGVsZW1lbnRzIGluIHRoZSBhY3R1YWwgZGF0YS4KKyAgZm9yICg7IGkg
PCBhY3R1YWxfc2l6ZTsgKytpKSB7CisgICAgcHJpbnRmKCIgIEFjdHVhbCBldmVudCAjJWx1OiAl
c1xuIiwKKyAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oaSksIGRhdGFbaV0uY19z
dHIoKSk7CisgIH0KK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CisgIHN0
ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBldmVudHM7CisgIGdfZXZlbnRzID0gJmV2ZW50czsKKyAg
SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworCisgIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgp
LT5saXN0ZW5lcnMoKS5BcHBlbmQoCisgICAgICBuZXcgRXZlbnRSZWNvcmRpbmdMaXN0ZW5lcigi
MXN0IikpOworICBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+bGlzdGVuZXJzKCkuQXBwZW5kKAor
ICAgICAgbmV3IEV2ZW50UmVjb3JkaW5nTGlzdGVuZXIoIjJuZCIpKTsKKworICBBZGRHbG9iYWxU
ZXN0RW52aXJvbm1lbnQobmV3IEVudmlyb25tZW50SW52b2NhdGlvbkNhdGNoZXIpOworCisgIEdU
RVNUX0NIRUNLXyhldmVudHMuc2l6ZSgpID09IDApCisgICAgICA8PCAiQWRkR2xvYmFsVGVzdEVu
dmlyb25tZW50IHNob3VsZCBub3QgZ2VuZXJhdGUgYW55IGV2ZW50cyBpdHNlbGYuIjsKKworICA6
OnRlc3Rpbmc6OkdURVNUX0ZMQUcocmVwZWF0KSA9IDI7CisgIGludCByZXRfdmFsID0gUlVOX0FM
TF9URVNUUygpOworCisgIGNvbnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkX2V2ZW50c1tdID0gewor
ICAgICIxc3QuT25UZXN0UHJvZ3JhbVN0YXJ0IiwKKyAgICAiMm5kLk9uVGVzdFByb2dyYW1TdGFy
dCIsCisgICAgIjFzdC5PblRlc3RJdGVyYXRpb25TdGFydCgwKSIsCisgICAgIjJuZC5PblRlc3RJ
dGVyYXRpb25TdGFydCgwKSIsCisgICAgIjFzdC5PbkVudmlyb25tZW50c1NldFVwU3RhcnQiLAor
ICAgICIybmQuT25FbnZpcm9ubWVudHNTZXRVcFN0YXJ0IiwKKyAgICAiRW52aXJvbm1lbnQ6OlNl
dFVwIiwKKyAgICAiMm5kLk9uRW52aXJvbm1lbnRzU2V0VXBFbmQiLAorICAgICIxc3QuT25FbnZp
cm9ubWVudHNTZXRVcEVuZCIsCisgICAgIjFzdC5PblRlc3RDYXNlU3RhcnQiLAorICAgICIybmQu
T25UZXN0Q2FzZVN0YXJ0IiwKKyAgICAiTGlzdGVuZXJUZXN0OjpTZXRVcFRlc3RDYXNlIiwKKyAg
ICAiMXN0Lk9uVGVzdFN0YXJ0IiwKKyAgICAiMm5kLk9uVGVzdFN0YXJ0IiwKKyAgICAiTGlzdGVu
ZXJUZXN0OjpTZXRVcCIsCisgICAgIkxpc3RlbmVyVGVzdDo6KiBUZXN0IEJvZHkiLAorICAgICIx
c3QuT25UZXN0UGFydFJlc3VsdCIsCisgICAgIjJuZC5PblRlc3RQYXJ0UmVzdWx0IiwKKyAgICAi
TGlzdGVuZXJUZXN0OjpUZWFyRG93biIsCisgICAgIjJuZC5PblRlc3RFbmQiLAorICAgICIxc3Qu
T25UZXN0RW5kIiwKKyAgICAiMXN0Lk9uVGVzdFN0YXJ0IiwKKyAgICAiMm5kLk9uVGVzdFN0YXJ0
IiwKKyAgICAiTGlzdGVuZXJUZXN0OjpTZXRVcCIsCisgICAgIkxpc3RlbmVyVGVzdDo6KiBUZXN0
IEJvZHkiLAorICAgICIxc3QuT25UZXN0UGFydFJlc3VsdCIsCisgICAgIjJuZC5PblRlc3RQYXJ0
UmVzdWx0IiwKKyAgICAiTGlzdGVuZXJUZXN0OjpUZWFyRG93biIsCisgICAgIjJuZC5PblRlc3RF
bmQiLAorICAgICIxc3QuT25UZXN0RW5kIiwKKyAgICAiTGlzdGVuZXJUZXN0OjpUZWFyRG93blRl
c3RDYXNlIiwKKyAgICAiMm5kLk9uVGVzdENhc2VFbmQiLAorICAgICIxc3QuT25UZXN0Q2FzZUVu
ZCIsCisgICAgIjFzdC5PbkVudmlyb25tZW50c1RlYXJEb3duU3RhcnQiLAorICAgICIybmQuT25F
bnZpcm9ubWVudHNUZWFyRG93blN0YXJ0IiwKKyAgICAiRW52aXJvbm1lbnQ6OlRlYXJEb3duIiwK
KyAgICAiMm5kLk9uRW52aXJvbm1lbnRzVGVhckRvd25FbmQiLAorICAgICIxc3QuT25FbnZpcm9u
bWVudHNUZWFyRG93bkVuZCIsCisgICAgIjJuZC5PblRlc3RJdGVyYXRpb25FbmQoMCkiLAorICAg
ICIxc3QuT25UZXN0SXRlcmF0aW9uRW5kKDApIiwKKyAgICAiMXN0Lk9uVGVzdEl0ZXJhdGlvblN0
YXJ0KDEpIiwKKyAgICAiMm5kLk9uVGVzdEl0ZXJhdGlvblN0YXJ0KDEpIiwKKyAgICAiMXN0Lk9u
RW52aXJvbm1lbnRzU2V0VXBTdGFydCIsCisgICAgIjJuZC5PbkVudmlyb25tZW50c1NldFVwU3Rh
cnQiLAorICAgICJFbnZpcm9ubWVudDo6U2V0VXAiLAorICAgICIybmQuT25FbnZpcm9ubWVudHNT
ZXRVcEVuZCIsCisgICAgIjFzdC5PbkVudmlyb25tZW50c1NldFVwRW5kIiwKKyAgICAiMXN0Lk9u
VGVzdENhc2VTdGFydCIsCisgICAgIjJuZC5PblRlc3RDYXNlU3RhcnQiLAorICAgICJMaXN0ZW5l
clRlc3Q6OlNldFVwVGVzdENhc2UiLAorICAgICIxc3QuT25UZXN0U3RhcnQiLAorICAgICIybmQu
T25UZXN0U3RhcnQiLAorICAgICJMaXN0ZW5lclRlc3Q6OlNldFVwIiwKKyAgICAiTGlzdGVuZXJU
ZXN0OjoqIFRlc3QgQm9keSIsCisgICAgIjFzdC5PblRlc3RQYXJ0UmVzdWx0IiwKKyAgICAiMm5k
Lk9uVGVzdFBhcnRSZXN1bHQiLAorICAgICJMaXN0ZW5lclRlc3Q6OlRlYXJEb3duIiwKKyAgICAi
Mm5kLk9uVGVzdEVuZCIsCisgICAgIjFzdC5PblRlc3RFbmQiLAorICAgICIxc3QuT25UZXN0U3Rh
cnQiLAorICAgICIybmQuT25UZXN0U3RhcnQiLAorICAgICJMaXN0ZW5lclRlc3Q6OlNldFVwIiwK
KyAgICAiTGlzdGVuZXJUZXN0OjoqIFRlc3QgQm9keSIsCisgICAgIjFzdC5PblRlc3RQYXJ0UmVz
dWx0IiwKKyAgICAiMm5kLk9uVGVzdFBhcnRSZXN1bHQiLAorICAgICJMaXN0ZW5lclRlc3Q6OlRl
YXJEb3duIiwKKyAgICAiMm5kLk9uVGVzdEVuZCIsCisgICAgIjFzdC5PblRlc3RFbmQiLAorICAg
ICJMaXN0ZW5lclRlc3Q6OlRlYXJEb3duVGVzdENhc2UiLAorICAgICIybmQuT25UZXN0Q2FzZUVu
ZCIsCisgICAgIjFzdC5PblRlc3RDYXNlRW5kIiwKKyAgICAiMXN0Lk9uRW52aXJvbm1lbnRzVGVh
ckRvd25TdGFydCIsCisgICAgIjJuZC5PbkVudmlyb25tZW50c1RlYXJEb3duU3RhcnQiLAorICAg
ICJFbnZpcm9ubWVudDo6VGVhckRvd24iLAorICAgICIybmQuT25FbnZpcm9ubWVudHNUZWFyRG93
bkVuZCIsCisgICAgIjFzdC5PbkVudmlyb25tZW50c1RlYXJEb3duRW5kIiwKKyAgICAiMm5kLk9u
VGVzdEl0ZXJhdGlvbkVuZCgxKSIsCisgICAgIjFzdC5PblRlc3RJdGVyYXRpb25FbmQoMSkiLAor
ICAgICIybmQuT25UZXN0UHJvZ3JhbUVuZCIsCisgICAgIjFzdC5PblRlc3RQcm9ncmFtRW5kIgor
ICB9OworICBWZXJpZnlSZXN1bHRzKGV2ZW50cywKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9l
dmVudHMsCisgICAgICAgICAgICAgICAgc2l6ZW9mKGV4cGVjdGVkX2V2ZW50cykvc2l6ZW9mKGV4
cGVjdGVkX2V2ZW50c1swXSkpOworCisgIC8vIFdlIG5lZWQgdG8gY2hlY2sgbWFudWFsbHkgZm9y
IGFkIGhvYyB0ZXN0IGZhaWx1cmVzIHRoYXQgaGFwcGVuIGFmdGVyCisgIC8vIFJVTl9BTExfVEVT
VFMgZmluaXNoZXMuCisgIGlmIChVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+RmFpbGVkKCkpCisg
ICAgcmV0X3ZhbCA9IDE7CisKKyAgcmV0dXJuIHJldF92YWw7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xldGVzdC90ZXN0L2d0ZXN0LW1lc3NhZ2VfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rl
c3QtbWVzc2FnZV90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3NTIzOGVmNGU2NGFkYjRlMWY3ODhmMTNh
NGVkMDRkNjA2NTdlMTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0
LW1lc3NhZ2VfdGVzdC5jYwpAQCAtMCwwICsxLDE1OSBAQAorLy8gQ29weXJpZ2h0IDIwMDUsIEdv
b2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8g
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisv
LyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisv
LyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpo
YW55b25nIFdhbikKKy8vCisvLyBUZXN0cyBmb3IgdGhlIE1lc3NhZ2UgY2xhc3MuCisKKyNpbmNs
dWRlICJndGVzdC9ndGVzdC1tZXNzYWdlLmgiCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgor
CituYW1lc3BhY2UgeworCit1c2luZyA6OnRlc3Rpbmc6Ok1lc3NhZ2U7CisKKy8vIFRlc3RzIHRo
ZSB0ZXN0aW5nOjpNZXNzYWdlIGNsYXNzCisKKy8vIFRlc3RzIHRoZSBkZWZhdWx0IGNvbnN0cnVj
dG9yLgorVEVTVChNZXNzYWdlVGVzdCwgRGVmYXVsdENvbnN0cnVjdG9yKSB7CisgIGNvbnN0IE1l
c3NhZ2UgbXNnOworICBFWFBFQ1RfRVEoIiIsIG1zZy5HZXRTdHJpbmcoKSk7Cit9CisKKy8vIFRl
c3RzIHRoZSBjb3B5IGNvbnN0cnVjdG9yLgorVEVTVChNZXNzYWdlVGVzdCwgQ29weUNvbnN0cnVj
dG9yKSB7CisgIGNvbnN0IE1lc3NhZ2UgbXNnMSgiSGVsbG8iKTsKKyAgY29uc3QgTWVzc2FnZSBt
c2cyKG1zZzEpOworICBFWFBFQ1RfRVEoIkhlbGxvIiwgbXNnMi5HZXRTdHJpbmcoKSk7Cit9CisK
Ky8vIFRlc3RzIGNvbnN0cnVjdGluZyBhIE1lc3NhZ2UgZnJvbSBhIEMtc3RyaW5nLgorVEVTVChN
ZXNzYWdlVGVzdCwgQ29uc3RydWN0c0Zyb21DU3RyaW5nKSB7CisgIE1lc3NhZ2UgbXNnKCJIZWxs
byIpOworICBFWFBFQ1RfRVEoIkhlbGxvIiwgbXNnLkdldFN0cmluZygpKTsKK30KKworLy8gVGVz
dHMgc3RyZWFtaW5nIGEgZmxvYXQuCitURVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zRmxvYXQpIHsK
KyAgY29uc3Qgc3RkOjpzdHJpbmcgcyA9IChNZXNzYWdlKCkgPDwgMS4yMzQ1NkYgPDwgIiAiIDw8
IDIuMzQ1NjdGKS5HZXRTdHJpbmcoKTsKKyAgLy8gQm90aCBudW1iZXJzIHNob3VsZCBiZSBwcmlu
dGVkIHdpdGggZW5vdWdoIHByZWNpc2lvbi4KKyAgRVhQRUNUX1BSRURfRk9STUFUMih0ZXN0aW5n
OjpJc1N1YnN0cmluZywgIjEuMjM0NTYwIiwgcy5jX3N0cigpKTsKKyAgRVhQRUNUX1BSRURfRk9S
TUFUMih0ZXN0aW5nOjpJc1N1YnN0cmluZywgIiAyLjM0NTY2OSIsIHMuY19zdHIoKSk7Cit9CisK
Ky8vIFRlc3RzIHN0cmVhbWluZyBhIGRvdWJsZS4KK1RFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNE
b3VibGUpIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgcyA9IChNZXNzYWdlKCkgPDwgMTI2MDU3MDg4
MC40NTU1NDk3IDw8ICIgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IDEy
NjA1NzIyNjUuMTk1NDUzNCkuR2V0U3RyaW5nKCk7CisgIC8vIEJvdGggbnVtYmVycyBzaG91bGQg
YmUgcHJpbnRlZCB3aXRoIGVub3VnaCBwcmVjaXNpb24uCisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIo
dGVzdGluZzo6SXNTdWJzdHJpbmcsICIxMjYwNTcwODgwLjQ1Iiwgcy5jX3N0cigpKTsKKyAgRVhQ
RUNUX1BSRURfRk9STUFUMih0ZXN0aW5nOjpJc1N1YnN0cmluZywgIiAxMjYwNTcyMjY1LjE5Iiwg
cy5jX3N0cigpKTsKK30KKworLy8gVGVzdHMgc3RyZWFtaW5nIGEgbm9uLWNoYXIgcG9pbnRlci4K
K1RFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNQb2ludGVyKSB7CisgIGludCBuID0gMDsKKyAgaW50
KiBwID0gJm47CisgIEVYUEVDVF9ORSgiKG51bGwpIiwgKE1lc3NhZ2UoKSA8PCBwKS5HZXRTdHJp
bmcoKSk7Cit9CisKKy8vIFRlc3RzIHN0cmVhbWluZyBhIE5VTEwgbm9uLWNoYXIgcG9pbnRlci4K
K1RFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNOdWxsUG9pbnRlcikgeworICBpbnQqIHAgPSBOVUxM
OworICBFWFBFQ1RfRVEoIihudWxsKSIsIChNZXNzYWdlKCkgPDwgcCkuR2V0U3RyaW5nKCkpOwor
fQorCisvLyBUZXN0cyBzdHJlYW1pbmcgYSBDIHN0cmluZy4KK1RFU1QoTWVzc2FnZVRlc3QsIFN0
cmVhbXNDU3RyaW5nKSB7CisgIEVYUEVDVF9FUSgiRm9vIiwgKE1lc3NhZ2UoKSA8PCAiRm9vIiku
R2V0U3RyaW5nKCkpOworfQorCisvLyBUZXN0cyBzdHJlYW1pbmcgYSBOVUxMIEMgc3RyaW5nLgor
VEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc051bGxDU3RyaW5nKSB7CisgIGNoYXIqIHAgPSBOVUxM
OworICBFWFBFQ1RfRVEoIihudWxsKSIsIChNZXNzYWdlKCkgPDwgcCkuR2V0U3RyaW5nKCkpOwor
fQorCisvLyBUZXN0cyBzdHJlYW1pbmcgc3RkOjpzdHJpbmcuCitURVNUKE1lc3NhZ2VUZXN0LCBT
dHJlYW1zU3RyaW5nKSB7CisgIGNvbnN0IDo6c3RkOjpzdHJpbmcgc3RyKCJIZWxsbyIpOworICBF
WFBFQ1RfRVEoIkhlbGxvIiwgKE1lc3NhZ2UoKSA8PCBzdHIpLkdldFN0cmluZygpKTsKK30KKwor
Ly8gVGVzdHMgdGhhdCB3ZSBjYW4gb3V0cHV0IHN0cmluZ3MgY29udGFpbmluZyBlbWJlZGRlZCBO
VUxzLgorVEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc1N0cmluZ1dpdGhFbWJlZGRlZE5VTCkgewor
ICBjb25zdCBjaGFyIGNoYXJfYXJyYXlfd2l0aF9udWxbXSA9CisgICAgICAiSGVyZSdzIGEgTlVM
XDAgYW5kIHNvbWUgbW9yZSBzdHJpbmciOworICBjb25zdCA6OnN0ZDo6c3RyaW5nIHN0cmluZ193
aXRoX251bChjaGFyX2FycmF5X3dpdGhfbnVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplb2YoY2hhcl9hcnJheV93aXRoX251bCkgLSAxKTsKKyAgRVhQRUNUX0VR
KCJIZXJlJ3MgYSBOVUxcXDAgYW5kIHNvbWUgbW9yZSBzdHJpbmciLAorICAgICAgICAgICAgKE1l
c3NhZ2UoKSA8PCBzdHJpbmdfd2l0aF9udWwpLkdldFN0cmluZygpKTsKK30KKworLy8gVGVzdHMg
c3RyZWFtaW5nIGEgTlVMIGNoYXIuCitURVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zTlVMQ2hhcikg
eworICBFWFBFQ1RfRVEoIlxcMCIsIChNZXNzYWdlKCkgPDwgJ1wwJykuR2V0U3RyaW5nKCkpOwor
fQorCisvLyBUZXN0cyBzdHJlYW1pbmcgaW50LgorVEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc0lu
dCkgeworICBFWFBFQ1RfRVEoIjEyMyIsIChNZXNzYWdlKCkgPDwgMTIzKS5HZXRTdHJpbmcoKSk7
Cit9CisKKy8vIFRlc3RzIHRoYXQgYmFzaWMgSU8gbWFuaXB1bGF0b3JzIChlbmRsLCBlbmRzLCBh
bmQgZmx1c2gpIGNhbiBiZQorLy8gc3RyZWFtZWQgdG8gTWVzc2FnZS4KK1RFU1QoTWVzc2FnZVRl
c3QsIFN0cmVhbXNCYXNpY0lvTWFuaXApIHsKKyAgRVhQRUNUX0VRKCJMaW5lIDEuXG5BIE5VTCBj
aGFyIFxcMCBpbiBsaW5lIDIuIiwKKyAgICAgICAgICAgICAgIChNZXNzYWdlKCkgPDwgIkxpbmUg
MS4iIDw8IHN0ZDo6ZW5kbAorICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJBIE5VTCBjaGFy
ICIgPDwgc3RkOjplbmRzIDw8IHN0ZDo6Zmx1c2gKKyAgICAgICAgICAgICAgICAgICAgICAgICA8
PCAiIGluIGxpbmUgMi4iKS5HZXRTdHJpbmcoKSk7Cit9CisKKy8vIFRlc3RzIE1lc3NhZ2U6Okdl
dFN0cmluZygpCitURVNUKE1lc3NhZ2VUZXN0LCBHZXRTdHJpbmcpIHsKKyAgTWVzc2FnZSBtc2c7
CisgIG1zZyA8PCAxIDw8ICIgbGFtYiI7CisgIEVYUEVDVF9FUSgiMSBsYW1iIiwgbXNnLkdldFN0
cmluZygpKTsKK30KKworLy8gVGVzdHMgc3RyZWFtaW5nIGEgTWVzc2FnZSBvYmplY3QgdG8gYW4g
b3N0cmVhbS4KK1RFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNUb09TdHJlYW0pIHsKKyAgTWVzc2Fn
ZSBtc2coIkhlbGxvIik7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIHNzIDw8IG1zZzsK
KyAgRVhQRUNUX0VRKCJIZWxsbyIsIHRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmdTdHJlYW1Ub1N0
cmluZygmc3MpKTsKK30KKworLy8gVGVzdHMgdGhhdCBhIE1lc3NhZ2Ugb2JqZWN0IGRvZXNuJ3Qg
dGFrZSB1cCB0b28gbXVjaCBzdGFjayBzcGFjZS4KK1RFU1QoTWVzc2FnZVRlc3QsIERvZXNOb3RU
YWtlVXBNdWNoU3RhY2tTcGFjZSkgeworICBFWFBFQ1RfTEUoc2l6ZW9mKE1lc3NhZ2UpLCAxNlUp
OworfQorCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rl
c3Qtb3B0aW9uc190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdC1vcHRpb25zX3Rlc3Qu
Y2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTU4NmRjM2IxYjI1YzliOGVkYWZmNTAxZDk2OTdhYmVhYmIyNWYxMAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3Qtb3B0aW9uc190ZXN0LmNj
CkBAIC0wLDAgKzEsMjE1IEBACisvLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKy8vIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisv
LyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisv
LyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
Ly8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisvLworLy8gQXV0aG9yczoga2VpdGgucmF5QGdtYWlsLmNvbSAoS2VpdGggUmF5KQor
Ly8KKy8vIEdvb2dsZSBUZXN0IFVuaXRUZXN0T3B0aW9ucyB0ZXN0cworLy8KKy8vIFRoaXMgZmls
ZSB0ZXN0cyBjbGFzc2VzIGFuZCBmdW5jdGlvbnMgdXNlZCBpbnRlcm5hbGx5IGJ5CisvLyBHb29n
bGUgVGVzdC4gIFRoZXkgYXJlIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLgorLy8K
Ky8vIFRoaXMgZmlsZSBpcyAjaW5jbHVkZWQgZnJvbSBndGVzdC5jYywgdG8gYXZvaWQgY2hhbmdp
bmcgYnVpbGQgb3IKKy8vIG1ha2UtZmlsZXMgb24gV2luZG93cyBhbmQgb3RoZXIgcGxhdGZvcm1z
LiBEbyBub3QgI2luY2x1ZGUgdGhpcyBmaWxlCisvLyBhbnl3aGVyZSBlbHNlIQorCisjaW5jbHVk
ZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisjIGluY2x1
ZGUgPHdpbmRvd3MuaD4KKyNlbGlmIEdURVNUX09TX1dJTkRPV1MKKyMgaW5jbHVkZSA8ZGlyZWN0
Lmg+CisjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisKKy8vIEluZGljYXRlcyB0
aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBpcyBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MKKy8vIGlt
cGxlbWVudGF0aW9uLiAgSXQgbXVzdCBjb21lIGJlZm9yZSBndGVzdC1pbnRlcm5hbC1pbmwuaCBp
cworLy8gaW5jbHVkZWQsIG9yIHRoZXJlIHdpbGwgYmUgYSBjb21waWxlciBlcnJvci4gIFRoaXMg
dHJpY2sgaXMgdG8KKy8vIHByZXZlbnQgYSB1c2VyIGZyb20gYWNjaWRlbnRhbGx5IGluY2x1ZGlu
ZyBndGVzdC1pbnRlcm5hbC1pbmwuaCBpbgorLy8gaGlzIGNvZGUuCisjZGVmaW5lIEdURVNUX0lN
UExFTUVOVEFUSU9OXyAxCisjaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgorI3Vu
ZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXworCituYW1lc3BhY2UgdGVzdGluZyB7CituYW1lc3Bh
Y2UgaW50ZXJuYWwgeworbmFtZXNwYWNlIHsKKworLy8gVHVybnMgdGhlIGdpdmVuIHJlbGF0aXZl
IHBhdGggaW50byBhbiBhYnNvbHV0ZSBwYXRoLgorRmlsZVBhdGggR2V0QWJzb2x1dGVQYXRoT2Yo
Y29uc3QgRmlsZVBhdGgmIHJlbGF0aXZlX3BhdGgpIHsKKyAgcmV0dXJuIEZpbGVQYXRoOjpDb25j
YXRQYXRocyhGaWxlUGF0aDo6R2V0Q3VycmVudERpcigpLCByZWxhdGl2ZV9wYXRoKTsKK30KKwor
Ly8gVGVzdGluZyBVbml0VGVzdE9wdGlvbnM6OkdldE91dHB1dEZvcm1hdC9HZXRPdXRwdXRGaWxl
LgorCitURVNUKFhtbE91dHB1dFRlc3QsIEdldE91dHB1dEZvcm1hdERlZmF1bHQpIHsKKyAgR1RF
U1RfRkxBRyhvdXRwdXQpID0gIiI7CisgIEVYUEVDVF9TVFJFUSgiIiwgVW5pdFRlc3RPcHRpb25z
OjpHZXRPdXRwdXRGb3JtYXQoKS5jX3N0cigpKTsKK30KKworVEVTVChYbWxPdXRwdXRUZXN0LCBH
ZXRPdXRwdXRGb3JtYXQpIHsKKyAgR1RFU1RfRkxBRyhvdXRwdXQpID0gInhtbDpmaWxlbmFtZSI7
CisgIEVYUEVDVF9TVFJFUSgieG1sIiwgVW5pdFRlc3RPcHRpb25zOjpHZXRPdXRwdXRGb3JtYXQo
KS5jX3N0cigpKTsKK30KKworVEVTVChYbWxPdXRwdXRUZXN0LCBHZXRPdXRwdXRGaWxlRGVmYXVs
dCkgeworICBHVEVTVF9GTEFHKG91dHB1dCkgPSAiIjsKKyAgRVhQRUNUX0VRKEdldEFic29sdXRl
UGF0aE9mKEZpbGVQYXRoKCJ0ZXN0X2RldGFpbC54bWwiKSkuc3RyaW5nKCksCisgICAgICAgICAg
ICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpKTsKK30KKwor
VEVTVChYbWxPdXRwdXRUZXN0LCBHZXRPdXRwdXRGaWxlU2luZ2xlRmlsZSkgeworICBHVEVTVF9G
TEFHKG91dHB1dCkgPSAieG1sOmZpbGVuYW1lLmFiYyI7CisgIEVYUEVDVF9FUShHZXRBYnNvbHV0
ZVBhdGhPZihGaWxlUGF0aCgiZmlsZW5hbWUuYWJjIikpLnN0cmluZygpLAorICAgICAgICAgICAg
VW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKSk7Cit9CisKK1RF
U1QoWG1sT3V0cHV0VGVzdCwgR2V0T3V0cHV0RmlsZUZyb21EaXJlY3RvcnlQYXRoKSB7CisgIEdU
RVNUX0ZMQUcob3V0cHV0KSA9ICJ4bWw6cGF0aCIgR1RFU1RfUEFUSF9TRVBfOworICBjb25zdCBz
dGQ6OnN0cmluZyBleHBlY3RlZF9vdXRwdXRfZmlsZSA9CisgICAgICBHZXRBYnNvbHV0ZVBhdGhP
ZigKKyAgICAgICAgICBGaWxlUGF0aChzdGQ6OnN0cmluZygicGF0aCIpICsgR1RFU1RfUEFUSF9T
RVBfICsKKyAgICAgICAgICAgICAgICAgICBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUoKS5zdHJp
bmcoKSArICIueG1sIikpLnN0cmluZygpOworICBjb25zdCBzdGQ6OnN0cmluZyYgb3V0cHV0X2Zp
bGUgPQorICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUo
KTsKKyNpZiBHVEVTVF9PU19XSU5ET1dTCisgIEVYUEVDVF9TVFJDQVNFRVEoZXhwZWN0ZWRfb3V0
cHV0X2ZpbGUuY19zdHIoKSwgb3V0cHV0X2ZpbGUuY19zdHIoKSk7CisjZWxzZQorICBFWFBFQ1Rf
RVEoZXhwZWN0ZWRfb3V0cHV0X2ZpbGUsIG91dHB1dF9maWxlLmNfc3RyKCkpOworI2VuZGlmCit9
CisKK1RFU1QoT3V0cHV0RmlsZUhlbHBlcnNUZXN0LCBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUp
IHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZXhlX3N0ciA9IEdldEN1cnJlbnRFeGVjdXRhYmxlTmFt
ZSgpLnN0cmluZygpOworI2lmIEdURVNUX09TX1dJTkRPV1MKKyAgY29uc3QgYm9vbCBzdWNjZXNz
ID0KKyAgICAgIF9zdHJjbXBpKCJndGVzdC1vcHRpb25zX3Rlc3QiLCBleGVfc3RyLmNfc3RyKCkp
ID09IDAgfHwKKyAgICAgIF9zdHJjbXBpKCJndGVzdC1vcHRpb25zLWV4X3Rlc3QiLCBleGVfc3Ry
LmNfc3RyKCkpID09IDAgfHwKKyAgICAgIF9zdHJjbXBpKCJndGVzdF9hbGxfdGVzdCIsIGV4ZV9z
dHIuY19zdHIoKSkgPT0gMCB8fAorICAgICAgX3N0cmNtcGkoImd0ZXN0X2RsbF90ZXN0IiwgZXhl
X3N0ci5jX3N0cigpKSA9PSAwOworI2Vsc2UKKyAgLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IHJl
bW92ZSB0aGUgaGFyZC1jb2RlZCAibHQtIiBwcmVmaXggd2hlbgorICAvLyAgIENoYW5kbGVyIENh
cnJ1dGgncyBsaWJ0b29sIHJlcGxhY2VtZW50IGlzIHJlYWR5LgorICBjb25zdCBib29sIHN1Y2Nl
c3MgPQorICAgICAgZXhlX3N0ciA9PSAiZ3Rlc3Qtb3B0aW9uc190ZXN0IiB8fAorICAgICAgZXhl
X3N0ciA9PSAiZ3Rlc3RfYWxsX3Rlc3QiIHx8CisgICAgICBleGVfc3RyID09ICJsdC1ndGVzdF9h
bGxfdGVzdCIgfHwKKyAgICAgIGV4ZV9zdHIgPT0gImd0ZXN0X2RsbF90ZXN0IjsKKyNlbmRpZiAg
Ly8gR1RFU1RfT1NfV0lORE9XUworICBpZiAoIXN1Y2Nlc3MpCisgICAgRkFJTCgpIDw8ICJHZXRD
dXJyZW50RXhlY3V0YWJsZU5hbWUoKSByZXR1cm5zICIgPDwgZXhlX3N0cjsKK30KKworY2xhc3Mg
WG1sT3V0cHV0Q2hhbmdlRGlyVGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHZp
cnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICBvcmlnaW5hbF93b3JraW5nX2Rpcl8gPSBGaWxlUGF0
aDo6R2V0Q3VycmVudERpcigpOworICAgIHBvc2l4OjpDaERpcigiLi4iKTsKKyAgICAvLyBUaGlz
IHdpbGwgbWFrZSB0aGUgdGVzdCBmYWlsIGlmIHJ1biBmcm9tIHRoZSByb290IGRpcmVjdG9yeS4K
KyAgICBFWFBFQ1RfTkUob3JpZ2luYWxfd29ya2luZ19kaXJfLnN0cmluZygpLAorICAgICAgICAg
ICAgICBGaWxlUGF0aDo6R2V0Q3VycmVudERpcigpLnN0cmluZygpKTsKKyAgfQorCisgIHZpcnR1
YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBwb3NpeDo6Q2hEaXIob3JpZ2luYWxfd29ya2luZ19k
aXJfLnN0cmluZygpLmNfc3RyKCkpOworICB9CisKKyAgRmlsZVBhdGggb3JpZ2luYWxfd29ya2lu
Z19kaXJfOworfTsKKworVEVTVF9GKFhtbE91dHB1dENoYW5nZURpclRlc3QsIFByZXNlcnZlT3Jp
Z2luYWxXb3JraW5nRGlyV2l0aERlZmF1bHQpIHsKKyAgR1RFU1RfRkxBRyhvdXRwdXQpID0gIiI7
CisgIEVYUEVDVF9FUShGaWxlUGF0aDo6Q29uY2F0UGF0aHMob3JpZ2luYWxfd29ya2luZ19kaXJf
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJ0ZXN0X2RldGFp
bC54bWwiKSkuc3RyaW5nKCksCisgICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29s
dXRlUGF0aFRvT3V0cHV0RmlsZSgpKTsKK30KKworVEVTVF9GKFhtbE91dHB1dENoYW5nZURpclRl
c3QsIFByZXNlcnZlT3JpZ2luYWxXb3JraW5nRGlyV2l0aERlZmF1bHRYTUwpIHsKKyAgR1RFU1Rf
RkxBRyhvdXRwdXQpID0gInhtbCI7CisgIEVYUEVDVF9FUShGaWxlUGF0aDo6Q29uY2F0UGF0aHMo
b3JpZ2luYWxfd29ya2luZ19kaXJfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEZpbGVQYXRoKCJ0ZXN0X2RldGFpbC54bWwiKSkuc3RyaW5nKCksCisgICAgICAgICAgICBVbml0
VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpKTsKK30KKworVEVTVF9G
KFhtbE91dHB1dENoYW5nZURpclRlc3QsIFByZXNlcnZlT3JpZ2luYWxXb3JraW5nRGlyV2l0aFJl
bGF0aXZlRmlsZSkgeworICBHVEVTVF9GTEFHKG91dHB1dCkgPSAieG1sOmZpbGVuYW1lLmFiYyI7
CisgIEVYUEVDVF9FUShGaWxlUGF0aDo6Q29uY2F0UGF0aHMob3JpZ2luYWxfd29ya2luZ19kaXJf
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJmaWxlbmFtZS5h
YmMiKSkuc3RyaW5nKCksCisgICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRl
UGF0aFRvT3V0cHV0RmlsZSgpKTsKK30KKworVEVTVF9GKFhtbE91dHB1dENoYW5nZURpclRlc3Qs
IFByZXNlcnZlT3JpZ2luYWxXb3JraW5nRGlyV2l0aFJlbGF0aXZlUGF0aCkgeworICBHVEVTVF9G
TEFHKG91dHB1dCkgPSAieG1sOnBhdGgiIEdURVNUX1BBVEhfU0VQXzsKKyAgY29uc3Qgc3RkOjpz
dHJpbmcgZXhwZWN0ZWRfb3V0cHV0X2ZpbGUgPQorICAgICAgRmlsZVBhdGg6OkNvbmNhdFBhdGhz
KAorICAgICAgICAgIG9yaWdpbmFsX3dvcmtpbmdfZGlyXywKKyAgICAgICAgICBGaWxlUGF0aChz
dGQ6OnN0cmluZygicGF0aCIpICsgR1RFU1RfUEFUSF9TRVBfICsKKyAgICAgICAgICAgICAgICAg
ICBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUoKS5zdHJpbmcoKSArICIueG1sIikpLnN0cmluZygp
OworICBjb25zdCBzdGQ6OnN0cmluZyYgb3V0cHV0X2ZpbGUgPQorICAgICAgVW5pdFRlc3RPcHRp
b25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKTsKKyNpZiBHVEVTVF9PU19XSU5ET1dT
CisgIEVYUEVDVF9TVFJDQVNFRVEoZXhwZWN0ZWRfb3V0cHV0X2ZpbGUuY19zdHIoKSwgb3V0cHV0
X2ZpbGUuY19zdHIoKSk7CisjZWxzZQorICBFWFBFQ1RfRVEoZXhwZWN0ZWRfb3V0cHV0X2ZpbGUs
IG91dHB1dF9maWxlLmNfc3RyKCkpOworI2VuZGlmCit9CisKK1RFU1RfRihYbWxPdXRwdXRDaGFu
Z2VEaXJUZXN0LCBQcmVzZXJ2ZU9yaWdpbmFsV29ya2luZ0RpcldpdGhBYnNvbHV0ZUZpbGUpIHsK
KyNpZiBHVEVTVF9PU19XSU5ET1dTCisgIEdURVNUX0ZMQUcob3V0cHV0KSA9ICJ4bWw6YzpcXHRt
cFxcZmlsZW5hbWUuYWJjIjsKKyAgRVhQRUNUX0VRKEZpbGVQYXRoKCJjOlxcdG1wXFxmaWxlbmFt
ZS5hYmMiKS5zdHJpbmcoKSwKKyAgICAgICAgICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1
dGVQYXRoVG9PdXRwdXRGaWxlKCkpOworI2Vsc2UKKyAgR1RFU1RfRkxBRyhvdXRwdXQpID0ieG1s
Oi90bXAvZmlsZW5hbWUuYWJjIjsKKyAgRVhQRUNUX0VRKEZpbGVQYXRoKCIvdG1wL2ZpbGVuYW1l
LmFiYyIpLnN0cmluZygpLAorICAgICAgICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0
ZVBhdGhUb091dHB1dEZpbGUoKSk7CisjZW5kaWYKK30KKworVEVTVF9GKFhtbE91dHB1dENoYW5n
ZURpclRlc3QsIFByZXNlcnZlT3JpZ2luYWxXb3JraW5nRGlyV2l0aEFic29sdXRlUGF0aCkgewor
I2lmIEdURVNUX09TX1dJTkRPV1MKKyAgY29uc3Qgc3RkOjpzdHJpbmcgcGF0aCA9ICJjOlxcdG1w
XFwiOworI2Vsc2UKKyAgY29uc3Qgc3RkOjpzdHJpbmcgcGF0aCA9ICIvdG1wLyI7CisjZW5kaWYK
KworICBHVEVTVF9GTEFHKG91dHB1dCkgPSAieG1sOiIgKyBwYXRoOworICBjb25zdCBzdGQ6OnN0
cmluZyBleHBlY3RlZF9vdXRwdXRfZmlsZSA9CisgICAgICBwYXRoICsgR2V0Q3VycmVudEV4ZWN1
dGFibGVOYW1lKCkuc3RyaW5nKCkgKyAiLnhtbCI7CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvdXRw
dXRfZmlsZSA9CisgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0
RmlsZSgpOworCisjaWYgR1RFU1RfT1NfV0lORE9XUworICBFWFBFQ1RfU1RSQ0FTRUVRKGV4cGVj
dGVkX291dHB1dF9maWxlLmNfc3RyKCksIG91dHB1dF9maWxlLmNfc3RyKCkpOworI2Vsc2UKKyAg
RVhQRUNUX0VRKGV4cGVjdGVkX291dHB1dF9maWxlLCBvdXRwdXRfZmlsZS5jX3N0cigpKTsKKyNl
bmRpZgorfQorCit9ICAvLyBuYW1lc3BhY2UKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAorfSAg
Ly8gbmFtZXNwYWNlIHRlc3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3Qt
cGFyYW0tdGVzdDJfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdDJf
dGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40YTc4MmZlNzA4MzdhY2E4NGI0NzVhMzQ1NWExZTU0YWI4Mjgz
ODVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdC1wYXJhbS10ZXN0
Ml90ZXN0LmNjCkBAIC0wLDAgKzEsNjUgQEAKKy8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5j
LgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8g
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKy8vCisvLyBBdXRob3I6IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9z
ZXYpCisvLworLy8gVGVzdHMgZm9yIEdvb2dsZSBUZXN0IGl0c2VsZi4gIFRoaXMgdmVyaWZpZXMg
dGhhdCB0aGUgYmFzaWMgY29uc3RydWN0cyBvZgorLy8gR29vZ2xlIFRlc3Qgd29yay4KKworI2lu
Y2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKyNpbmNsdWRlICJ0ZXN0L2d0ZXN0LXBhcmFtLXRlc3Rf
dGVzdC5oIgorCisjaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKKwordXNpbmcgOjp0ZXN0aW5nOjpW
YWx1ZXM7Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpQYXJhbUdlbmVyYXRvcjsKKworLy8g
VGVzdHMgdGhhdCBnZW5lcmF0b3JzIGRlZmluZWQgaW4gYSBkaWZmZXJlbnQgdHJhbnNsYXRpb24g
dW5pdAorLy8gYXJlIGZ1bmN0aW9uYWwuIFRoZSB0ZXN0IHVzaW5nIGV4dGVybl9nZW4gaXMgZGVm
aW5lZAorLy8gaW4gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmNjLgorUGFyYW1HZW5lcmF0b3I8aW50
PiBleHRlcm5fZ2VuID0gVmFsdWVzKDMzKTsKKworLy8gVGVzdHMgdGhhdCBhIHBhcmFtZXRlcml6
ZWQgdGVzdCBjYXNlIGNhbiBiZSBkZWZpbmVkIGluIG9uZSB0cmFuc2xhdGlvbiB1bml0CisvLyBh
bmQgaW5zdGFudGlhdGVkIGluIGFub3RoZXIuIFRoZSB0ZXN0IGlzIGRlZmluZWQgaW4gZ3Rlc3Qt
cGFyYW0tdGVzdF90ZXN0LmNjCisvLyBhbmQgRXh0ZXJuYWxJbnN0YW50aWF0aW9uVGVzdCBmaXh0
dXJlIGNsYXNzIGlzIGRlZmluZWQgaW4KKy8vIGd0ZXN0LXBhcmFtLXRlc3RfdGVzdC5oLgorSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1AoTXVsdGlwbGVzT2YzMywKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEV4dGVybmFsSW5zdGFudGlhdGlvblRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBW
YWx1ZXMoMzMsIDY2KSk7CisKKy8vIFRlc3RzIHRoYXQgYSBwYXJhbWV0ZXJpemVkIHRlc3QgY2Fz
ZSBjYW4gYmUgaW5zdGFudGlhdGVkCisvLyBpbiBtdWx0aXBsZSB0cmFuc2xhdGlvbiB1bml0cy4g
QW5vdGhlciBpbnN0YW50aWF0aW9uIGlzIGRlZmluZWQKKy8vIGluIGd0ZXN0LXBhcmFtLXRlc3Rf
dGVzdC5jYyBhbmQgSW5zdGFudGlhdGlvbkluTXVsdGlwbGVUcmFuc2xhaW9uVW5pdHNUZXN0Cisv
LyBmaXh0dXJlIGlzIGRlZmluZWQgaW4gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmgKK0lOU1RBTlRJ
QVRFX1RFU1RfQ0FTRV9QKFNlcXVlbmNlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3Rh
bnRpYXRpb25Jbk11bHRpcGxlVHJhbnNsYWlvblVuaXRzVGVzdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFZhbHVlcyg0MiozLCA0Mio0LCA0Mio1KSk7CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFT
X1BBUkFNX1RFU1QKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3QtcGFyYW0tdGVz
dF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rlc3QuY2MKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOGIyNzhiYjk0Yjg1NmY3MWJhOGE5MmU3NzhiYWI0ZDJmMzAyMmI1ZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmNjCkBA
IC0wLDAgKzEsMTA1NSBAQAorLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCisvLyBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8g
bWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
Ky8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8v
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorLy8KKy8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKKy8vCisv
LyBUZXN0cyBmb3IgR29vZ2xlIFRlc3QgaXRzZWxmLiBUaGlzIGZpbGUgdmVyaWZpZXMgdGhhdCB0
aGUgcGFyYW1ldGVyCisvLyBnZW5lcmF0b3JzIG9iamVjdHMgcHJvZHVjZSBjb3JyZWN0IHBhcmFt
ZXRlciBzZXF1ZW5jZXMgYW5kIHRoYXQKKy8vIEdvb2dsZSBUZXN0IHJ1bnRpbWUgaW5zdGFudGlh
dGVzIGNvcnJlY3QgdGVzdHMgZnJvbSB0aG9zZSBzZXF1ZW5jZXMuCisKKyNpbmNsdWRlICJndGVz
dC9ndGVzdC5oIgorCisjaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKKworIyBpbmNsdWRlIDxhbGdv
cml0aG0+CisjIGluY2x1ZGUgPGlvc3RyZWFtPgorIyBpbmNsdWRlIDxsaXN0PgorIyBpbmNsdWRl
IDxzc3RyZWFtPgorIyBpbmNsdWRlIDxzdHJpbmc+CisjIGluY2x1ZGUgPHZlY3Rvcj4KKworLy8g
VG8gaW5jbHVkZSBndGVzdC1pbnRlcm5hbC1pbmwuaC4KKyMgZGVmaW5lIEdURVNUX0lNUExFTUVO
VEFUSU9OXyAxCisjIGluY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIgIC8vIGZvciBV
bml0VGVzdE9wdGlvbnMKKyMgdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCisKKyMgaW5jbHVk
ZSAidGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rlc3QuaCIKKwordXNpbmcgOjpzdGQ6OnZlY3RvcjsK
K3VzaW5nIDo6c3RkOjpzb3J0OworCit1c2luZyA6OnRlc3Rpbmc6OkFkZEdsb2JhbFRlc3RFbnZp
cm9ubWVudDsKK3VzaW5nIDo6dGVzdGluZzo6Qm9vbDsKK3VzaW5nIDo6dGVzdGluZzo6TWVzc2Fn
ZTsKK3VzaW5nIDo6dGVzdGluZzo6UmFuZ2U7Cit1c2luZyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFy
YW07Cit1c2luZyA6OnRlc3Rpbmc6OlZhbHVlczsKK3VzaW5nIDo6dGVzdGluZzo6VmFsdWVzSW47
CisKKyMgaWYgR1RFU1RfSEFTX0NPTUJJTkUKK3VzaW5nIDo6dGVzdGluZzo6Q29tYmluZTsKK3Vz
aW5nIDo6dGVzdGluZzo6Z2V0OwordXNpbmcgOjp0ZXN0aW5nOjptYWtlX3R1cGxlOwordXNpbmcg
Ojp0ZXN0aW5nOjp0dXBsZTsKKyMgZW5kaWYgIC8vIEdURVNUX0hBU19DT01CSU5FCisKK3VzaW5n
IDo6dGVzdGluZzo6aW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yOwordXNpbmcgOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6VW5pdFRlc3RPcHRpb25zOworCisvLyBQcmludHMgYSB2YWx1ZSB0byBhIHN0cmlu
Zy4KKy8vCisvLyBUT0RPKHdhbkBnb29nbGUuY29tKTogcmVtb3ZlIFByaW50VmFsdWUoKSB3aGVu
IHdlIG1vdmUgbWF0Y2hlcnMgYW5kCisvLyBFWFBFQ1RfVEhBVCgpIGZyb20gR29vZ2xlIE1vY2sg
dG8gR29vZ2xlIFRlc3QuICBBdCB0aGF0IHRpbWUsIHdlCisvLyBjYW4gd3JpdGUgRVhQRUNUX1RI
QVQoeCwgRXEoeSkpIHRvIGNvbXBhcmUgdHdvIHR1cGxlcyB4IGFuZCB5LCBhcworLy8gRVhQRUNU
X1RIQVQoKSBhbmQgdGhlIG1hdGNoZXJzIGtub3cgaG93IHRvIHByaW50IHR1cGxlcy4KK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPgorOjpzdGQ6OnN0cmluZyBQcmludFZhbHVlKGNvbnN0IFQmIHZhbHVl
KSB7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFtOworICBzdHJlYW0gPDwgdmFsdWU7Cisg
IHJldHVybiBzdHJlYW0uc3RyKCk7Cit9CisKKyMgaWYgR1RFU1RfSEFTX0NPTUJJTkUKKworLy8g
VGhlc2Ugb3ZlcmxvYWRzIGFsbG93IHByaW50aW5nIHR1cGxlcyBpbiBvdXIgdGVzdHMuICBXZSBj
YW5ub3QKKy8vIGRlZmluZSBhbiBvcGVyYXRvcjw8IGZvciB0dXBsZXMsIGFzIHRoYXQgZGVmaW5p
dGlvbiBuZWVkcyB0byBiZSBpbgorLy8gdGhlIHN0ZCBuYW1lc3BhY2UgaW4gb3JkZXIgdG8gYmUg
cGlja2VkIHVwIGJ5IEdvb2dsZSBUZXN0IHZpYQorLy8gQXJndW1lbnQtRGVwZW5kZW50IExvb2t1
cCwgeWV0IGRlZmluaW5nIGFueXRoaW5nIGluIHRoZSBzdGQKKy8vIG5hbWVzcGFjZSBpbiBub24t
U1RMIGNvZGUgaXMgdW5kZWZpbmVkIGJlaGF2aW9yLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEs
IHR5cGVuYW1lIFQyPgorOjpzdGQ6OnN0cmluZyBQcmludFZhbHVlKGNvbnN0IHR1cGxlPFQxLCBU
Mj4mIHZhbHVlKSB7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFtOworICBzdHJlYW0gPDwg
IigiIDw8IGdldDwwPih2YWx1ZSkgPDwgIiwgIiA8PCBnZXQ8MT4odmFsdWUpIDw8ICIpIjsKKyAg
cmV0dXJuIHN0cmVhbS5zdHIoKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFt
ZSBUMiwgdHlwZW5hbWUgVDM+Cis6OnN0ZDo6c3RyaW5nIFByaW50VmFsdWUoY29uc3QgdHVwbGU8
VDEsIFQyLCBUMz4mIHZhbHVlKSB7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFtOworICBz
dHJlYW0gPDwgIigiIDw8IGdldDwwPih2YWx1ZSkgPDwgIiwgIiA8PCBnZXQ8MT4odmFsdWUpCisg
ICAgICAgICA8PCAiLCAiPDwgZ2V0PDI+KHZhbHVlKSA8PCAiKSI7CisgIHJldHVybiBzdHJlYW0u
c3RyKCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1l
IFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCisgICAgICAgICAgdHlwZW5hbWUgVDYsIHR5
cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMD4KKzo6c3Rk
OjpzdHJpbmcgUHJpbnRWYWx1ZSgKKyAgICBjb25zdCB0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUs
IFQ2LCBUNywgVDgsIFQ5LCBUMTA+JiB2YWx1ZSkgeworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHN0
cmVhbTsKKyAgc3RyZWFtIDw8ICIoIiA8PCBnZXQ8MD4odmFsdWUpIDw8ICIsICIgPDwgZ2V0PDE+
KHZhbHVlKQorICAgICAgICAgPDwgIiwgIjw8IGdldDwyPih2YWx1ZSkgPDwgIiwgIiA8PCBnZXQ8
Mz4odmFsdWUpCisgICAgICAgICA8PCAiLCAiPDwgZ2V0PDQ+KHZhbHVlKSA8PCAiLCAiIDw8IGdl
dDw1Pih2YWx1ZSkKKyAgICAgICAgIDw8ICIsICI8PCBnZXQ8Nj4odmFsdWUpIDw8ICIsICIgPDwg
Z2V0PDc+KHZhbHVlKQorICAgICAgICAgPDwgIiwgIjw8IGdldDw4Pih2YWx1ZSkgPDwgIiwgIiA8
PCBnZXQ8OT4odmFsdWUpIDw8ICIpIjsKKyAgcmV0dXJuIHN0cmVhbS5zdHIoKTsKK30KKworIyBl
bmRpZiAgLy8gR1RFU1RfSEFTX0NPTUJJTkUKKworLy8gVmVyaWZpZXMgdGhhdCBhIHNlcXVlbmNl
IGdlbmVyYXRlZCBieSB0aGUgZ2VuZXJhdG9yIGFuZCBhY2Nlc3NlZAorLy8gdmlhIHRoZSBpdGVy
YXRvciBvYmplY3QgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgb25lIHVzaW5nIEdvb2dsZSBUZXN0Cisv
LyBhc3NlcnRpb25zLgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOPgordm9pZCBWZXJp
ZnlHZW5lcmF0b3IoY29uc3QgUGFyYW1HZW5lcmF0b3I8VD4mIGdlbmVyYXRvciwKKyAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFQgKCZleHBlY3RlZF92YWx1ZXMpW05dKSB7CisgIHR5cGVuYW1l
IFBhcmFtR2VuZXJhdG9yPFQ+OjppdGVyYXRvciBpdCA9IGdlbmVyYXRvci5iZWdpbigpOworICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IE47ICsraSkgeworICAgIEFTU0VSVF9GQUxTRShpdCA9PSBn
ZW5lcmF0b3IuZW5kKCkpCisgICAgICAgIDw8ICJBdCBlbGVtZW50ICIgPDwgaSA8PCAiIHdoZW4g
YWNjZXNzaW5nIHZpYSBhbiBpdGVyYXRvciAiCisgICAgICAgIDw8ICJjcmVhdGVkIHdpdGggdGhl
IGNvcHkgY29uc3RydWN0b3IuXG4iOworICAgIC8vIFdlIGNhbm5vdCB1c2UgRVhQRUNUX0VRKCkg
aGVyZSBhcyB0aGUgdmFsdWVzIG1heSBiZSB0dXBsZXMsCisgICAgLy8gd2hpY2ggZG9uJ3Qgc3Vw
cG9ydCA8PC4KKyAgICBFWFBFQ1RfVFJVRShleHBlY3RlZF92YWx1ZXNbaV0gPT0gKml0KQorICAg
ICAgICA8PCAid2hlcmUgaSBpcyAiIDw8IGkKKyAgICAgICAgPDwgIiwgZXhwZWN0ZWRfdmFsdWVz
W2ldIGlzICIgPDwgUHJpbnRWYWx1ZShleHBlY3RlZF92YWx1ZXNbaV0pCisgICAgICAgIDw8ICIs
ICppdCBpcyAiIDw8IFByaW50VmFsdWUoKml0KQorICAgICAgICA8PCAiLCBhbmQgJ2l0JyBpcyBh
biBpdGVyYXRvciBjcmVhdGVkIHdpdGggdGhlIGNvcHkgY29uc3RydWN0b3IuXG4iOworICAgIGl0
Kys7CisgIH0KKyAgRVhQRUNUX1RSVUUoaXQgPT0gZ2VuZXJhdG9yLmVuZCgpKQorICAgICAgICA8
PCAiQXQgdGhlIHByZXN1bWVkIGVuZCBvZiBzZXF1ZW5jZSB3aGVuIGFjY2Vzc2luZyB2aWEgYW4g
aXRlcmF0b3IgIgorICAgICAgICA8PCAiY3JlYXRlZCB3aXRoIHRoZSBjb3B5IGNvbnN0cnVjdG9y
LlxuIjsKKworICAvLyBUZXN0IHRoZSBpdGVyYXRvciBhc3NpZ25tZW50LiBUaGUgZm9sbG93aW5n
IGxpbmVzIHZlcmlmeSB0aGF0CisgIC8vIHRoZSBzZXF1ZW5jZSBhY2Nlc3NlZCB2aWEgYW4gaXRl
cmF0b3IgaW5pdGlhbGl6ZWQgdmlhIHRoZQorICAvLyBhc3NpZ25tZW50IG9wZXJhdG9yIChhcyBv
cHBvc2VkIHRvIGEgY29weSBjb25zdHJ1Y3RvcikgbWF0Y2hlcworICAvLyBqdXN0IHRoZSBzYW1l
LgorICBpdCA9IGdlbmVyYXRvci5iZWdpbigpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IE47
ICsraSkgeworICAgIEFTU0VSVF9GQUxTRShpdCA9PSBnZW5lcmF0b3IuZW5kKCkpCisgICAgICAg
IDw8ICJBdCBlbGVtZW50ICIgPDwgaSA8PCAiIHdoZW4gYWNjZXNzaW5nIHZpYSBhbiBpdGVyYXRv
ciAiCisgICAgICAgIDw8ICJjcmVhdGVkIHdpdGggdGhlIGFzc2lnbm1lbnQgb3BlcmF0b3IuXG4i
OworICAgIEVYUEVDVF9UUlVFKGV4cGVjdGVkX3ZhbHVlc1tpXSA9PSAqaXQpCisgICAgICAgIDw8
ICJ3aGVyZSBpIGlzICIgPDwgaQorICAgICAgICA8PCAiLCBleHBlY3RlZF92YWx1ZXNbaV0gaXMg
IiA8PCBQcmludFZhbHVlKGV4cGVjdGVkX3ZhbHVlc1tpXSkKKyAgICAgICAgPDwgIiwgKml0IGlz
ICIgPDwgUHJpbnRWYWx1ZSgqaXQpCisgICAgICAgIDw8ICIsIGFuZCAnaXQnIGlzIGFuIGl0ZXJh
dG9yIGNyZWF0ZWQgd2l0aCB0aGUgY29weSBjb25zdHJ1Y3Rvci5cbiI7CisgICAgaXQrKzsKKyAg
fQorICBFWFBFQ1RfVFJVRShpdCA9PSBnZW5lcmF0b3IuZW5kKCkpCisgICAgICAgIDw8ICJBdCB0
aGUgcHJlc3VtZWQgZW5kIG9mIHNlcXVlbmNlIHdoZW4gYWNjZXNzaW5nIHZpYSBhbiBpdGVyYXRv
ciAiCisgICAgICAgIDw8ICJjcmVhdGVkIHdpdGggdGhlIGFzc2lnbm1lbnQgb3BlcmF0b3IuXG4i
OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgVmVyaWZ5R2VuZXJhdG9ySXNFbXB0
eShjb25zdCBQYXJhbUdlbmVyYXRvcjxUPiYgZ2VuZXJhdG9yKSB7CisgIHR5cGVuYW1lIFBhcmFt
R2VuZXJhdG9yPFQ+OjppdGVyYXRvciBpdCA9IGdlbmVyYXRvci5iZWdpbigpOworICBFWFBFQ1Rf
VFJVRShpdCA9PSBnZW5lcmF0b3IuZW5kKCkpOworCisgIGl0ID0gZ2VuZXJhdG9yLmJlZ2luKCk7
CisgIEVYUEVDVF9UUlVFKGl0ID09IGdlbmVyYXRvci5lbmQoKSk7Cit9CisKKy8vIEdlbmVyYXRv
ciB0ZXN0cy4gVGhleSB0ZXN0IHRoYXQgZWFjaCBvZiB0aGUgcHJvdmlkZWQgZ2VuZXJhdG9yIGZ1
bmN0aW9ucworLy8gZ2VuZXJhdGVzIGFuIGV4cGVjdGVkIHNlcXVlbmNlIG9mIHZhbHVlcy4gVGhl
IGdlbmVyYWwgdGVzdCBwYXR0ZXJuCisvLyBpbnN0YW50aWF0ZXMgYSBnZW5lcmF0b3IgdXNpbmcg
b25lIG9mIHRoZSBnZW5lcmF0b3IgZnVuY3Rpb25zLAorLy8gY2hlY2tzIHRoZSBzZXF1ZW5jZSBw
cm9kdWNlZCBieSB0aGUgZ2VuZXJhdG9yIHVzaW5nIGl0cyBpdGVyYXRvciBBUEksCisvLyBhbmQg
dGhlbiByZXNldHMgdGhlIGl0ZXJhdG9yIGJhY2sgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgc2Vx
dWVuY2UKKy8vIGFuZCBjaGVja3MgdGhlIHNlcXVlbmNlIGFnYWluLgorCisvLyBUZXN0cyB0aGF0
IGl0ZXJhdG9ycyBwcm9kdWNlZCBieSBnZW5lcmF0b3IgZnVuY3Rpb25zIGNvbmZvcm0gdG8gdGhl
CisvLyBGb3J3YXJkSXRlcmF0b3IgY29uY2VwdC4KK1RFU1QoSXRlcmF0b3JUZXN0LCBQYXJhbUl0
ZXJhdG9yQ29uZm9ybXNUb0ZvcndhcmRJdGVyYXRvckNvbmNlcHQpIHsKKyAgY29uc3QgUGFyYW1H
ZW5lcmF0b3I8aW50PiBnZW4gPSBSYW5nZSgwLCAxMCk7CisgIFBhcmFtR2VuZXJhdG9yPGludD46
Oml0ZXJhdG9yIGl0ID0gZ2VuLmJlZ2luKCk7CisKKyAgLy8gVmVyaWZpZXMgdGhhdCBpdGVyYXRv
ciBpbml0aWFsaXphdGlvbiB3b3JrcyBhcyBleHBlY3RlZC4KKyAgUGFyYW1HZW5lcmF0b3I8aW50
Pjo6aXRlcmF0b3IgaXQyID0gaXQ7CisgIEVYUEVDVF9UUlVFKCppdCA9PSAqaXQyKSA8PCAiSW5p
dGlhbGl6ZWQgaXRlcmF0b3JzIG11c3QgcG9pbnQgdG8gdGhlICIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDw8ICJlbGVtZW50IHNhbWUgYXMgaXRzIHNvdXJjZSBwb2ludHMgdG8iOworCisg
IC8vIFZlcmlmaWVzIHRoYXQgaXRlcmF0b3IgYXNzaWdubWVudCB3b3JrcyBhcyBleHBlY3RlZC4K
KyAgaXQrKzsKKyAgRVhQRUNUX0ZBTFNFKCppdCA9PSAqaXQyKTsKKyAgaXQyID0gaXQ7CisgIEVY
UEVDVF9UUlVFKCppdCA9PSAqaXQyKSA8PCAiQXNzaWduZWQgaXRlcmF0b3JzIG11c3QgcG9pbnQg
dG8gdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJlbGVtZW50IHNhbWUgYXMg
aXRzIHNvdXJjZSBwb2ludHMgdG8iOworCisgIC8vIFZlcmlmaWVzIHRoYXQgcHJlZml4IG9wZXJh
dG9yKysoKSByZXR1cm5zICp0aGlzLgorICBFWFBFQ1RfRVEoJml0LCAmKCsraXQpKSA8PCAiUmVz
dWx0IG9mIHRoZSBwcmVmaXggb3BlcmF0b3IrKyBtdXN0IGJlICIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgPDwgInJlZmVyIHRvIHRoZSBvcmlnaW5hbCBvYmplY3QiOworCisgIC8vIFZlcmlm
aWVzIHRoYXQgdGhlIHJlc3VsdCBvZiB0aGUgcG9zdGZpeCBvcGVyYXRvcisrIHBvaW50cyB0byB0
aGUgdmFsdWUKKyAgLy8gcG9pbnRlZCB0byBieSB0aGUgb3JpZ2luYWwgaXRlcmF0b3IuCisgIGlu
dCBvcmlnaW5hbF92YWx1ZSA9ICppdDsgIC8vIEhhdmUgdG8gY29tcHV0ZSBpdCBvdXRzaWRlIG9m
IG1hY3JvIGNhbGwgdG8gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdW5hZmZl
Y3RlZCBieSB0aGUgcGFyYW1ldGVyIGV2YWx1YXRpb24gb3JkZXIuCisgIEVYUEVDVF9FUShvcmln
aW5hbF92YWx1ZSwgKihpdCsrKSk7CisKKyAgLy8gVmVyaWZpZXMgdGhhdCBwcmVmaXggYW5kIHBv
c3RmaXggb3BlcmF0b3IrKygpIGFkdmFuY2UgYW4gaXRlcmF0b3IKKyAgLy8gYWxsIHRoZSBzYW1l
LgorICBpdDIgPSBpdDsKKyAgaXQrKzsKKyAgKytpdDI7CisgIEVYUEVDVF9UUlVFKCppdCA9PSAq
aXQyKTsKK30KKworLy8gVGVzdHMgdGhhdCBSYW5nZSgpIGdlbmVyYXRlcyB0aGUgZXhwZWN0ZWQg
c2VxdWVuY2UuCitURVNUKFJhbmdlVGVzdCwgSW50UmFuZ2VXaXRoRGVmYXVsdFN0ZXApIHsKKyAg
Y29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBSYW5nZSgwLCAzKTsKKyAgY29uc3QgaW50
IGV4cGVjdGVkX3ZhbHVlc1tdID0gezAsIDEsIDJ9OworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBl
eHBlY3RlZF92YWx1ZXMpOworfQorCisvLyBFZGdlIGNhc2UuIFRlc3RzIHRoYXQgUmFuZ2UoKSBn
ZW5lcmF0ZXMgdGhlIHNpbmdsZSBlbGVtZW50IHNlcXVlbmNlCisvLyBhcyBleHBlY3RlZCB3aGVu
IHByb3ZpZGVkIHdpdGggcmFuZ2UgbGltaXRzIHRoYXQgYXJlIGVxdWFsLgorVEVTVChSYW5nZVRl
c3QsIEludFJhbmdlU2luZ2xlVmFsdWUpIHsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBn
ZW4gPSBSYW5nZSgwLCAxKTsKKyAgY29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0gezB9Owor
ICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOworfQorCisvLyBFZGdlIGNh
c2UuIFRlc3RzIHRoYXQgUmFuZ2UoKSB3aXRoIGdlbmVyYXRlcyBlbXB0eSBzZXF1ZW5jZSB3aGVu
CisvLyBzdXBwbGllZCB3aXRoIGFuIGVtcHR5IHJhbmdlLgorVEVTVChSYW5nZVRlc3QsIEludFJh
bmdlRW1wdHkpIHsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBSYW5nZSgwLCAw
KTsKKyAgVmVyaWZ5R2VuZXJhdG9ySXNFbXB0eShnZW4pOworfQorCisvLyBUZXN0cyB0aGF0IFJh
bmdlKCkgd2l0aCBjdXN0b20gc3RlcCAoZ3JlYXRlciB0aGVuIG9uZSkgZ2VuZXJhdGVzCisvLyB0
aGUgZXhwZWN0ZWQgc2VxdWVuY2UuCitURVNUKFJhbmdlVGVzdCwgSW50UmFuZ2VXaXRoQ3VzdG9t
U3RlcCkgeworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFJhbmdlKDAsIDksIDMp
OworICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7MCwgMywgNn07CisgIFZlcmlmeUdl
bmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Cit9CisKKy8vIFRlc3RzIHRoYXQgUmFuZ2Uo
KSB3aXRoIGN1c3RvbSBzdGVwIChncmVhdGVyIHRoZW4gb25lKSBnZW5lcmF0ZXMKKy8vIHRoZSBl
eHBlY3RlZCBzZXF1ZW5jZSB3aGVuIHRoZSBsYXN0IGVsZW1lbnQgZG9lcyBub3QgZmFsbCBvbiB0
aGUKKy8vIHVwcGVyIHJhbmdlIGxpbWl0LiBTZXF1ZW5jZXMgZ2VuZXJhdGVkIGJ5IFJhbmdlKCkg
bXVzdCBub3QgaGF2ZQorLy8gZWxlbWVudHMgYmV5b25kIHRoZSByYW5nZSBsaW1pdHMuCitURVNU
KFJhbmdlVGVzdCwgSW50UmFuZ2VXaXRoQ3VzdG9tU3RlcE92ZXJVcHBlckJvdW5kKSB7CisgIGNv
bnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gUmFuZ2UoMCwgNCwgMyk7CisgIGNvbnN0IGlu
dCBleHBlY3RlZF92YWx1ZXNbXSA9IHswLCAzfTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhw
ZWN0ZWRfdmFsdWVzKTsKK30KKworLy8gVmVyaWZpZXMgdGhhdCBSYW5nZSB3b3JrcyB3aXRoIHVz
ZXItZGVmaW5lZCB0eXBlcyB0aGF0IGRlZmluZQorLy8gY29weSBjb25zdHJ1Y3Rvciwgb3BlcmF0
b3I9KCksIG9wZXJhdG9yKygpLCBhbmQgb3BlcmF0b3I8KCkuCitjbGFzcyBEb2dBZGRlciB7Cisg
cHVibGljOgorICBleHBsaWNpdCBEb2dBZGRlcihjb25zdCBjaGFyKiBhX3ZhbHVlKSA6IHZhbHVl
XyhhX3ZhbHVlKSB7fQorICBEb2dBZGRlcihjb25zdCBEb2dBZGRlciYgb3RoZXIpIDogdmFsdWVf
KG90aGVyLnZhbHVlXy5jX3N0cigpKSB7fQorCisgIERvZ0FkZGVyIG9wZXJhdG9yPShjb25zdCBE
b2dBZGRlciYgb3RoZXIpIHsKKyAgICBpZiAodGhpcyAhPSAmb3RoZXIpCisgICAgICB2YWx1ZV8g
PSBvdGhlci52YWx1ZV87CisgICAgcmV0dXJuICp0aGlzOworICB9CisgIERvZ0FkZGVyIG9wZXJh
dG9yKyhjb25zdCBEb2dBZGRlciYgb3RoZXIpIGNvbnN0IHsKKyAgICBNZXNzYWdlIG1zZzsKKyAg
ICBtc2cgPDwgdmFsdWVfLmNfc3RyKCkgPDwgb3RoZXIudmFsdWVfLmNfc3RyKCk7CisgICAgcmV0
dXJuIERvZ0FkZGVyKG1zZy5HZXRTdHJpbmcoKS5jX3N0cigpKTsKKyAgfQorICBib29sIG9wZXJh
dG9yPChjb25zdCBEb2dBZGRlciYgb3RoZXIpIGNvbnN0IHsKKyAgICByZXR1cm4gdmFsdWVfIDwg
b3RoZXIudmFsdWVfOworICB9CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIHZhbHVlXzsgfQorCisgcHJpdmF0ZToKKyAgc3RkOjpzdHJpbmcgdmFsdWVfOworfTsK
KworVEVTVChSYW5nZVRlc3QsIFdvcmtzV2l0aEFDdXN0b21UeXBlKSB7CisgIGNvbnN0IFBhcmFt
R2VuZXJhdG9yPERvZ0FkZGVyPiBnZW4gPQorICAgICAgUmFuZ2UoRG9nQWRkZXIoImNhdCIpLCBE
b2dBZGRlcigiY2F0ZG9nZG9nIiksIERvZ0FkZGVyKCJkb2ciKSk7CisgIFBhcmFtR2VuZXJhdG9y
PERvZ0FkZGVyPjo6aXRlcmF0b3IgaXQgPSBnZW4uYmVnaW4oKTsKKworICBBU1NFUlRfRkFMU0Uo
aXQgPT0gZ2VuLmVuZCgpKTsKKyAgRVhQRUNUX1NUUkVRKCJjYXQiLCBpdC0+dmFsdWUoKS5jX3N0
cigpKTsKKworICBBU1NFUlRfRkFMU0UoKytpdCA9PSBnZW4uZW5kKCkpOworICBFWFBFQ1RfU1RS
RVEoImNhdGRvZyIsIGl0LT52YWx1ZSgpLmNfc3RyKCkpOworCisgIEVYUEVDVF9UUlVFKCsraXQg
PT0gZ2VuLmVuZCgpKTsKK30KKworY2xhc3MgSW50V3JhcHBlciB7CisgcHVibGljOgorICBleHBs
aWNpdCBJbnRXcmFwcGVyKGludCBhX3ZhbHVlKSA6IHZhbHVlXyhhX3ZhbHVlKSB7fQorICBJbnRX
cmFwcGVyKGNvbnN0IEludFdyYXBwZXImIG90aGVyKSA6IHZhbHVlXyhvdGhlci52YWx1ZV8pIHt9
CisKKyAgSW50V3JhcHBlciBvcGVyYXRvcj0oY29uc3QgSW50V3JhcHBlciYgb3RoZXIpIHsKKyAg
ICB2YWx1ZV8gPSBvdGhlci52YWx1ZV87CisgICAgcmV0dXJuICp0aGlzOworICB9CisgIC8vIG9w
ZXJhdG9yKygpIGFkZHMgYSBkaWZmZXJlbnQgdHlwZS4KKyAgSW50V3JhcHBlciBvcGVyYXRvciso
aW50IG90aGVyKSBjb25zdCB7IHJldHVybiBJbnRXcmFwcGVyKHZhbHVlXyArIG90aGVyKTsgfQor
ICBib29sIG9wZXJhdG9yPChjb25zdCBJbnRXcmFwcGVyJiBvdGhlcikgY29uc3QgeworICAgIHJl
dHVybiB2YWx1ZV8gPCBvdGhlci52YWx1ZV87CisgIH0KKyAgaW50IHZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gdmFsdWVfOyB9CisKKyBwcml2YXRlOgorICBpbnQgdmFsdWVfOworfTsKKworVEVTVChS
YW5nZVRlc3QsIFdvcmtzV2l0aEFDdXN0b21UeXBlV2l0aERpZmZlcmVudEluY3JlbWVudFR5cGUp
IHsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8SW50V3JhcHBlcj4gZ2VuID0gUmFuZ2UoSW50V3Jh
cHBlcigwKSwgSW50V3JhcHBlcigyKSk7CisgIFBhcmFtR2VuZXJhdG9yPEludFdyYXBwZXI+Ojpp
dGVyYXRvciBpdCA9IGdlbi5iZWdpbigpOworCisgIEFTU0VSVF9GQUxTRShpdCA9PSBnZW4uZW5k
KCkpOworICBFWFBFQ1RfRVEoMCwgaXQtPnZhbHVlKCkpOworCisgIEFTU0VSVF9GQUxTRSgrK2l0
ID09IGdlbi5lbmQoKSk7CisgIEVYUEVDVF9FUSgxLCBpdC0+dmFsdWUoKSk7CisKKyAgRVhQRUNU
X1RSVUUoKytpdCA9PSBnZW4uZW5kKCkpOworfQorCisvLyBUZXN0cyB0aGF0IFZhbHVlc0luKCkg
d2l0aCBhbiBhcnJheSBwYXJhbWV0ZXIgZ2VuZXJhdGVzCisvLyB0aGUgZXhwZWN0ZWQgc2VxdWVu
Y2UuCitURVNUKFZhbHVlc0luVGVzdCwgVmFsdWVzSW5BcnJheSkgeworICBpbnQgYXJyYXlbXSA9
IHszLCA1LCA4fTsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXNJbihh
cnJheSk7CisgIFZlcmlmeUdlbmVyYXRvcihnZW4sIGFycmF5KTsKK30KKworLy8gVGVzdHMgdGhh
dCBWYWx1ZXNJbigpIHdpdGggYSBjb25zdCBhcnJheSBwYXJhbWV0ZXIgZ2VuZXJhdGVzCisvLyB0
aGUgZXhwZWN0ZWQgc2VxdWVuY2UuCitURVNUKFZhbHVlc0luVGVzdCwgVmFsdWVzSW5Db25zdEFy
cmF5KSB7CisgIGNvbnN0IGludCBhcnJheVtdID0gezMsIDUsIDh9OworICBjb25zdCBQYXJhbUdl
bmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlc0luKGFycmF5KTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdl
biwgYXJyYXkpOworfQorCisvLyBFZGdlIGNhc2UuIFRlc3RzIHRoYXQgVmFsdWVzSW4oKSB3aXRo
IGFuIGFycmF5IHBhcmFtZXRlciBjb250YWluaW5nIGEKKy8vIHNpbmdsZSBlbGVtZW50IGdlbmVy
YXRlcyB0aGUgc2luZ2xlIGVsZW1lbnQgc2VxdWVuY2UuCitURVNUKFZhbHVlc0luVGVzdCwgVmFs
dWVzSW5TaW5nbGVFbGVtZW50QXJyYXkpIHsKKyAgaW50IGFycmF5W10gPSB7NDJ9OworICBjb25z
dCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlc0luKGFycmF5KTsKKyAgVmVyaWZ5R2Vu
ZXJhdG9yKGdlbiwgYXJyYXkpOworfQorCisvLyBUZXN0cyB0aGF0IFZhbHVlc0luKCkgZ2VuZXJh
dGVzIHRoZSBleHBlY3RlZCBzZXF1ZW5jZSBmb3IgYW4gU1RMCisvLyBjb250YWluZXIgKHZlY3Rv
cikuCitURVNUKFZhbHVlc0luVGVzdCwgVmFsdWVzSW5WZWN0b3IpIHsKKyAgdHlwZWRlZiA6OnN0
ZDo6dmVjdG9yPGludD4gQ29udGFpbmVyVHlwZTsKKyAgQ29udGFpbmVyVHlwZSB2YWx1ZXM7Cisg
IHZhbHVlcy5wdXNoX2JhY2soMyk7CisgIHZhbHVlcy5wdXNoX2JhY2soNSk7CisgIHZhbHVlcy5w
dXNoX2JhY2soOCk7CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzSW4o
dmFsdWVzKTsKKworICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7MywgNSwgOH07Cisg
IFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Cit9CisKKy8vIFRlc3RzIHRo
YXQgVmFsdWVzSW4oKSBnZW5lcmF0ZXMgdGhlIGV4cGVjdGVkIHNlcXVlbmNlLgorVEVTVChWYWx1
ZXNJblRlc3QsIFZhbHVlc0luSXRlcmF0b3JSYW5nZSkgeworICB0eXBlZGVmIDo6c3RkOjp2ZWN0
b3I8aW50PiBDb250YWluZXJUeXBlOworICBDb250YWluZXJUeXBlIHZhbHVlczsKKyAgdmFsdWVz
LnB1c2hfYmFjaygzKTsKKyAgdmFsdWVzLnB1c2hfYmFjayg1KTsKKyAgdmFsdWVzLnB1c2hfYmFj
ayg4KTsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXNJbih2YWx1ZXMu
YmVnaW4oKSwgdmFsdWVzLmVuZCgpKTsKKworICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10g
PSB7MywgNSwgOH07CisgIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Cit9
CisKKy8vIEVkZ2UgY2FzZS4gVGVzdHMgdGhhdCBWYWx1ZXNJbigpIHByb3ZpZGVkIHdpdGggYW4g
aXRlcmF0b3IgcmFuZ2Ugc3BlY2lmeWluZyBhCisvLyBzaW5nbGUgdmFsdWUgZ2VuZXJhdGVzIGEg
c2luZ2xlLWVsZW1lbnQgc2VxdWVuY2UuCitURVNUKFZhbHVlc0luVGVzdCwgVmFsdWVzSW5TaW5n
bGVFbGVtZW50SXRlcmF0b3JSYW5nZSkgeworICB0eXBlZGVmIDo6c3RkOjp2ZWN0b3I8aW50PiBD
b250YWluZXJUeXBlOworICBDb250YWluZXJUeXBlIHZhbHVlczsKKyAgdmFsdWVzLnB1c2hfYmFj
ayg0Mik7CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzSW4odmFsdWVz
LmJlZ2luKCksIHZhbHVlcy5lbmQoKSk7CisKKyAgY29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1td
ID0gezQyfTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKK30KKwor
Ly8gRWRnZSBjYXNlLiBUZXN0cyB0aGF0IFZhbHVlc0luKCkgcHJvdmlkZWQgd2l0aCBhbiBlbXB0
eSBpdGVyYXRvciByYW5nZQorLy8gZ2VuZXJhdGVzIGFuIGVtcHR5IHNlcXVlbmNlLgorVEVTVChW
YWx1ZXNJblRlc3QsIFZhbHVlc0luRW1wdHlJdGVyYXRvclJhbmdlKSB7CisgIHR5cGVkZWYgOjpz
dGQ6OnZlY3RvcjxpbnQ+IENvbnRhaW5lclR5cGU7CisgIENvbnRhaW5lclR5cGUgdmFsdWVzOwor
ICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlc0luKHZhbHVlcy5iZWdpbigp
LCB2YWx1ZXMuZW5kKCkpOworCisgIFZlcmlmeUdlbmVyYXRvcklzRW1wdHkoZ2VuKTsKK30KKwor
Ly8gVGVzdHMgdGhhdCB0aGUgVmFsdWVzKCkgZ2VuZXJhdGVzIHRoZSBleHBlY3RlZCBzZXF1ZW5j
ZS4KK1RFU1QoVmFsdWVzVGVzdCwgVmFsdWVzV29ya3MpIHsKKyAgY29uc3QgUGFyYW1HZW5lcmF0
b3I8aW50PiBnZW4gPSBWYWx1ZXMoMywgNSwgOCk7CisKKyAgY29uc3QgaW50IGV4cGVjdGVkX3Zh
bHVlc1tdID0gezMsIDUsIDh9OworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1
ZXMpOworfQorCisvLyBUZXN0cyB0aGF0IFZhbHVlcygpIGdlbmVyYXRlcyB0aGUgZXhwZWN0ZWQg
c2VxdWVuY2VzIGZyb20gZWxlbWVudHMgb2YKKy8vIGRpZmZlcmVudCB0eXBlcyBjb252ZXJ0aWJs
ZSB0byBQYXJhbUdlbmVyYXRvcidzIHBhcmFtZXRlciB0eXBlLgorVEVTVChWYWx1ZXNUZXN0LCBW
YWx1ZXNXb3Jrc0ZvclZhbHVlc09mQ29tcGF0aWJsZVR5cGVzKSB7CisgIGNvbnN0IFBhcmFtR2Vu
ZXJhdG9yPGRvdWJsZT4gZ2VuID0gVmFsdWVzKDMsIDUuMGYsIDguMCk7CisKKyAgY29uc3QgZG91
YmxlIGV4cGVjdGVkX3ZhbHVlc1tdID0gezMuMCwgNS4wLCA4LjB9OworICBWZXJpZnlHZW5lcmF0
b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOworfQorCitURVNUKFZhbHVlc1Rlc3QsIFZhbHVlc1dv
cmtzRm9yTWF4TGVuZ3RoTGlzdCkgeworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9
IFZhbHVlcygKKyAgICAgIDEwLCAyMCwgMzAsIDQwLCA1MCwgNjAsIDcwLCA4MCwgOTAsIDEwMCwK
KyAgICAgIDExMCwgMTIwLCAxMzAsIDE0MCwgMTUwLCAxNjAsIDE3MCwgMTgwLCAxOTAsIDIwMCwK
KyAgICAgIDIxMCwgMjIwLCAyMzAsIDI0MCwgMjUwLCAyNjAsIDI3MCwgMjgwLCAyOTAsIDMwMCwK
KyAgICAgIDMxMCwgMzIwLCAzMzAsIDM0MCwgMzUwLCAzNjAsIDM3MCwgMzgwLCAzOTAsIDQwMCwK
KyAgICAgIDQxMCwgNDIwLCA0MzAsIDQ0MCwgNDUwLCA0NjAsIDQ3MCwgNDgwLCA0OTAsIDUwMCk7
CisKKyAgY29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0geworICAgICAgMTAsIDIwLCAzMCwg
NDAsIDUwLCA2MCwgNzAsIDgwLCA5MCwgMTAwLAorICAgICAgMTEwLCAxMjAsIDEzMCwgMTQwLCAx
NTAsIDE2MCwgMTcwLCAxODAsIDE5MCwgMjAwLAorICAgICAgMjEwLCAyMjAsIDIzMCwgMjQwLCAy
NTAsIDI2MCwgMjcwLCAyODAsIDI5MCwgMzAwLAorICAgICAgMzEwLCAzMjAsIDMzMCwgMzQwLCAz
NTAsIDM2MCwgMzcwLCAzODAsIDM5MCwgNDAwLAorICAgICAgNDEwLCA0MjAsIDQzMCwgNDQwLCA0
NTAsIDQ2MCwgNDcwLCA0ODAsIDQ5MCwgNTAwfTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhw
ZWN0ZWRfdmFsdWVzKTsKK30KKworLy8gRWRnZSBjYXNlIHRlc3QuIFRlc3RzIHRoYXQgc2luZ2xl
LXBhcmFtZXRlciBWYWx1ZXMoKSBnZW5lcmF0ZXMgdGhlIHNlcXVlbmNlCisvLyB3aXRoIHRoZSBz
aW5nbGUgdmFsdWUuCitURVNUKFZhbHVlc1Rlc3QsIFZhbHVlc1dpdGhTaW5nbGVQYXJhbWV0ZXIp
IHsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXMoNDIpOworCisgIGNv
bnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHs0Mn07CisgIFZlcmlmeUdlbmVyYXRvcihnZW4s
IGV4cGVjdGVkX3ZhbHVlcyk7Cit9CisKKy8vIFRlc3RzIHRoYXQgQm9vbCgpIGdlbmVyYXRlcyBz
ZXF1ZW5jZSAoZmFsc2UsIHRydWUpLgorVEVTVChCb29sVGVzdCwgQm9vbFdvcmtzKSB7CisgIGNv
bnN0IFBhcmFtR2VuZXJhdG9yPGJvb2w+IGdlbiA9IEJvb2woKTsKKworICBjb25zdCBib29sIGV4
cGVjdGVkX3ZhbHVlc1tdID0ge2ZhbHNlLCB0cnVlfTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwg
ZXhwZWN0ZWRfdmFsdWVzKTsKK30KKworIyBpZiBHVEVTVF9IQVNfQ09NQklORQorCisvLyBUZXN0
cyB0aGF0IENvbWJpbmUoKSB3aXRoIHR3byBwYXJhbWV0ZXJzIGdlbmVyYXRlcyB0aGUgZXhwZWN0
ZWQgc2VxdWVuY2UuCitURVNUKENvbWJpbmVUZXN0LCBDb21iaW5lV2l0aFR3b1BhcmFtZXRlcnMp
IHsKKyAgY29uc3QgY2hhciogZm9vID0gImZvbyI7CisgIGNvbnN0IGNoYXIqIGJhciA9ICJiYXIi
OworICBjb25zdCBQYXJhbUdlbmVyYXRvcjx0dXBsZTxjb25zdCBjaGFyKiwgaW50PiA+IGdlbiA9
CisgICAgICBDb21iaW5lKFZhbHVlcyhmb28sIGJhciksIFZhbHVlcygzLCA0KSk7CisKKyAgdHVw
bGU8Y29uc3QgY2hhciosIGludD4gZXhwZWN0ZWRfdmFsdWVzW10gPSB7CisgICAgbWFrZV90dXBs
ZShmb28sIDMpLCBtYWtlX3R1cGxlKGZvbywgNCksCisgICAgbWFrZV90dXBsZShiYXIsIDMpLCBt
YWtlX3R1cGxlKGJhciwgNCl9OworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1
ZXMpOworfQorCisvLyBUZXN0cyB0aGF0IENvbWJpbmUoKSB3aXRoIHRocmVlIHBhcmFtZXRlcnMg
Z2VuZXJhdGVzIHRoZSBleHBlY3RlZCBzZXF1ZW5jZS4KK1RFU1QoQ29tYmluZVRlc3QsIENvbWJp
bmVXaXRoVGhyZWVQYXJhbWV0ZXJzKSB7CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPHR1cGxlPGlu
dCwgaW50LCBpbnQ+ID4gZ2VuID0gQ29tYmluZShWYWx1ZXMoMCwgMSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoMywg
NCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWx1ZXMoNSwgNikpOworICB0dXBsZTxpbnQsIGludCwgaW50PiBleHBlY3RlZF92
YWx1ZXNbXSA9IHsKKyAgICBtYWtlX3R1cGxlKDAsIDMsIDUpLCBtYWtlX3R1cGxlKDAsIDMsIDYp
LAorICAgIG1ha2VfdHVwbGUoMCwgNCwgNSksIG1ha2VfdHVwbGUoMCwgNCwgNiksCisgICAgbWFr
ZV90dXBsZSgxLCAzLCA1KSwgbWFrZV90dXBsZSgxLCAzLCA2KSwKKyAgICBtYWtlX3R1cGxlKDEs
IDQsIDUpLCBtYWtlX3R1cGxlKDEsIDQsIDYpfTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhw
ZWN0ZWRfdmFsdWVzKTsKK30KKworLy8gVGVzdHMgdGhhdCB0aGUgQ29tYmluZSgpIHdpdGggdGhl
IGZpcnN0IHBhcmFtZXRlciBnZW5lcmF0aW5nIGEgc2luZ2xlIHZhbHVlCisvLyBzZXF1ZW5jZSBn
ZW5lcmF0ZXMgYSBzZXF1ZW5jZSB3aXRoIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZXF1YWwgdG8g
dGhlCisvLyBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIHNlcXVlbmNlIGdlbmVyYXRlZCBieSB0
aGUgc2Vjb25kIHBhcmFtZXRlci4KK1RFU1QoQ29tYmluZVRlc3QsIENvbWJpbmVXaXRoRmlyc3RQ
YXJhbWV0ZXJTaW5nbGVWYWx1ZSkgeworICBjb25zdCBQYXJhbUdlbmVyYXRvcjx0dXBsZTxpbnQs
IGludD4gPiBnZW4gPSBDb21iaW5lKFZhbHVlcyg0MiksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDAsIDEpKTsKKworICB0dXBs
ZTxpbnQsIGludD4gZXhwZWN0ZWRfdmFsdWVzW10gPSB7bWFrZV90dXBsZSg0MiwgMCksIG1ha2Vf
dHVwbGUoNDIsIDEpfTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsK
K30KKworLy8gVGVzdHMgdGhhdCB0aGUgQ29tYmluZSgpIHdpdGggdGhlIHNlY29uZCBwYXJhbWV0
ZXIgZ2VuZXJhdGluZyBhIHNpbmdsZSB2YWx1ZQorLy8gc2VxdWVuY2UgZ2VuZXJhdGVzIGEgc2Vx
dWVuY2Ugd2l0aCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGVxdWFsIHRvIHRoZQorLy8gbnVtYmVy
IG9mIGVsZW1lbnRzIGluIHRoZSBzZXF1ZW5jZSBnZW5lcmF0ZWQgYnkgdGhlIGZpcnN0IHBhcmFt
ZXRlci4KK1RFU1QoQ29tYmluZVRlc3QsIENvbWJpbmVXaXRoU2Vjb25kUGFyYW1ldGVyU2luZ2xl
VmFsdWUpIHsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8dHVwbGU8aW50LCBpbnQ+ID4gZ2VuID0g
Q29tYmluZShWYWx1ZXMoMCwgMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDQyKSk7CisKKyAgdHVwbGU8aW50LCBpbnQ+IGV4
cGVjdGVkX3ZhbHVlc1tdID0ge21ha2VfdHVwbGUoMCwgNDIpLCBtYWtlX3R1cGxlKDEsIDQyKX07
CisgIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Cit9CisKKy8vIFRlc3Rz
IHRoYXQgd2hlbiB0aGUgZmlyc3QgcGFyYW1ldGVyIHByb2R1Y2VzIGFuIGVtcHR5IHNlcXVlbmNl
LAorLy8gQ29tYmluZSgpIHByb2R1Y2VzIGFuIGVtcHR5IHNlcXVlbmNlLCB0b28uCitURVNUKENv
bWJpbmVUZXN0LCBDb21iaW5lV2l0aEZpcnN0UGFyYW1ldGVyRW1wdHlSYW5nZSkgeworICBjb25z
dCBQYXJhbUdlbmVyYXRvcjx0dXBsZTxpbnQsIGludD4gPiBnZW4gPSBDb21iaW5lKFJhbmdlKDAs
IDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbHVlcygwLCAxKSk7CisgIFZlcmlmeUdlbmVyYXRvcklzRW1wdHkoZ2VuKTsKK30KKwor
Ly8gVGVzdHMgdGhhdCB3aGVuIHRoZSBzZWNvbmQgcGFyYW1ldGVyIHByb2R1Y2VzIGFuIGVtcHR5
IHNlcXVlbmNlLAorLy8gQ29tYmluZSgpIHByb2R1Y2VzIGFuIGVtcHR5IHNlcXVlbmNlLCB0b28u
CitURVNUKENvbWJpbmVUZXN0LCBDb21iaW5lV2l0aFNlY29uZFBhcmFtZXRlckVtcHR5UmFuZ2Up
IHsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8dHVwbGU8aW50LCBpbnQ+ID4gZ2VuID0gQ29tYmlu
ZShWYWx1ZXMoMCwgMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUmFuZ2UoMSwgMSkpOworICBWZXJpZnlHZW5lcmF0b3JJc0VtcHR5KGdl
bik7Cit9CisKKy8vIEVkZ2UgY2FzZS4gVGVzdHMgdGhhdCBjb21iaW5lIHdvcmtzIHdpdGggdGhl
IG1heGltdW0gbnVtYmVyCisvLyBvZiBwYXJhbWV0ZXJzIHN1cHBvcnRlZCBieSBHb29nbGUgVGVz
dCAoY3VycmVudGx5IDEwKS4KK1RFU1QoQ29tYmluZVRlc3QsIENvbWJpbmVXaXRoTWF4TnVtYmVy
T2ZQYXJhbWV0ZXJzKSB7CisgIGNvbnN0IGNoYXIqIGZvbyA9ICJmb28iOworICBjb25zdCBjaGFy
KiBiYXIgPSAiYmFyIjsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8dHVwbGU8Y29uc3QgY2hhcios
IGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50LCBpbnQ+ID4gZ2VuID0gQ29tYmluZShWYWx1ZXMoZm9vLCBiYXIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVl
cygxKSwgVmFsdWVzKDIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbHVlcygzKSwgVmFsdWVzKDQpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyg1KSwgVmFsdWVzKDYp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbHVlcyg3KSwgVmFsdWVzKDgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyg5KSk7CisKKyAgdHVwbGU8Y29uc3QgY2hhcios
IGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQ+CisgICAgICBleHBl
Y3RlZF92YWx1ZXNbXSA9IHttYWtlX3R1cGxlKGZvbywgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwg
OSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWtlX3R1cGxlKGJhciwgMSwgMiwgMywg
NCwgNSwgNiwgNywgOCwgOSl9OworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1
ZXMpOworfQorCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfQ09NQklORQorCisvLyBUZXN0cyB0aGF0
IGFuIGdlbmVyYXRvciBwcm9kdWNlcyBjb3JyZWN0IHNlcXVlbmNlIGFmdGVyIGJlaW5nCisvLyBh
c3NpZ25lZCBmcm9tIGFub3RoZXIgZ2VuZXJhdG9yLgorVEVTVChQYXJhbUdlbmVyYXRvclRlc3Qs
IEFzc2lnbm1lbnRXb3JrcykgeworICBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlcygx
LCAyKTsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4yID0gVmFsdWVzKDMsIDQpOwor
ICBnZW4gPSBnZW4yOworCisgIGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHszLCA0fTsK
KyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKK30KKworLy8gVGhpcyB0
ZXN0IHZlcmlmaWVzIHRoYXQgdGhlIHRlc3RzIGFyZSBleHBhbmRlZCBhbmQgcnVuIGFzIHNwZWNp
ZmllZDoKKy8vIG9uZSB0ZXN0IHBlciBlbGVtZW50IGZyb20gdGhlIHNlcXVlbmNlIHByb2R1Y2Vk
IGJ5IHRoZSBnZW5lcmF0b3IKKy8vIHNwZWNpZmllZCBpbiBJTlNUQU5USUFURV9URVNUX0NBU0Vf
UC4gSXQgYWxzbyB2ZXJpZmllcyB0aGF0IHRoZSB0ZXN0J3MKKy8vIGZpeHR1cmUgY29uc3RydWN0
b3IsIFNldFVwKCksIGFuZCBUZWFyRG93bigpIGhhdmUgcnVuIGFuZCBoYXZlIGJlZW4KKy8vIHN1
cHBsaWVkIHdpdGggdGhlIGNvcnJlY3QgcGFyYW1ldGVycy4KKworLy8gVGhlIHVzZSBvZiBlbnZp
cm9ubWVudCBvYmplY3QgYWxsb3dzIGRldGVjdGlvbiBvZiB0aGUgY2FzZSB3aGVyZSBubyB0ZXN0
CisvLyBjYXNlIGZ1bmN0aW9uYWxpdHkgaXMgcnVuIGF0IGFsbC4gSW4gdGhpcyBjYXNlIFRlc3RD
YXNlVGVhckRvd24gd2lsbCBub3QKKy8vIGJlIGFibGUgdG8gZGV0ZWN0IG1pc3NpbmcgdGVzdHMs
IG5hdHVyYWxseS4KK3RlbXBsYXRlIDxpbnQga0V4cGVjdGVkQ2FsbHM+CitjbGFzcyBUZXN0R2Vu
ZXJhdGlvbkVudmlyb25tZW50IDogcHVibGljIDo6dGVzdGluZzo6RW52aXJvbm1lbnQgeworIHB1
YmxpYzoKKyAgc3RhdGljIFRlc3RHZW5lcmF0aW9uRW52aXJvbm1lbnQqIEluc3RhbmNlKCkgewor
ICAgIHN0YXRpYyBUZXN0R2VuZXJhdGlvbkVudmlyb25tZW50KiBpbnN0YW5jZSA9IG5ldyBUZXN0
R2VuZXJhdGlvbkVudmlyb25tZW50OworICAgIHJldHVybiBpbnN0YW5jZTsKKyAgfQorCisgIHZv
aWQgRml4dHVyZUNvbnN0cnVjdG9yRXhlY3V0ZWQoKSB7IGZpeHR1cmVfY29uc3RydWN0b3JfY291
bnRfKys7IH0KKyAgdm9pZCBTZXRVcEV4ZWN1dGVkKCkgeyBzZXRfdXBfY291bnRfKys7IH0KKyAg
dm9pZCBUZWFyRG93bkV4ZWN1dGVkKCkgeyB0ZWFyX2Rvd25fY291bnRfKys7IH0KKyAgdm9pZCBU
ZXN0Qm9keUV4ZWN1dGVkKCkgeyB0ZXN0X2JvZHlfY291bnRfKys7IH0KKworICB2aXJ0dWFsIHZv
aWQgVGVhckRvd24oKSB7CisgICAgLy8gSWYgYWxsIE11bHRpcGxlVGVzdEdlbmVyYXRpb25UZXN0
IHRlc3RzIGhhdmUgYmVlbiBkZS1zZWxlY3RlZAorICAgIC8vIGJ5IHRoZSBmaWx0ZXIgZmxhZywg
dGhlIGZvbGxvd2luZyBjaGVja3MgbWFrZSBubyBzZW5zZS4KKyAgICBib29sIHBlcmZvcm1fY2hl
Y2sgPSBmYWxzZTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwga0V4cGVjdGVkQ2FsbHM7ICsr
aSkgeworICAgICAgTWVzc2FnZSBtc2c7CisgICAgICBtc2cgPDwgIlRlc3RzRXhwYW5kZWRBbmRS
dW4vIiA8PCBpOworICAgICAgaWYgKFVuaXRUZXN0T3B0aW9uczo6RmlsdGVyTWF0Y2hlc1Rlc3Qo
CisgICAgICAgICAgICAgIlRlc3RFeHBhbnNpb25Nb2R1bGUvTXVsdGlwbGVUZXN0R2VuZXJhdGlv
blRlc3QiLAorICAgICAgICAgICAgICBtc2cuR2V0U3RyaW5nKCkuY19zdHIoKSkpIHsKKyAgICAg
ICAgcGVyZm9ybV9jaGVjayA9IHRydWU7CisgICAgICB9CisgICAgfQorICAgIGlmIChwZXJmb3Jt
X2NoZWNrKSB7CisgICAgICBFWFBFQ1RfRVEoa0V4cGVjdGVkQ2FsbHMsIGZpeHR1cmVfY29uc3Ry
dWN0b3JfY291bnRfKQorICAgICAgICAgIDw8ICJGaXh0dXJlIGNvbnN0cnVjdG9yIG9mIFBhcmFt
VGVzdEdlbmVyYXRpb25UZXN0IHRlc3QgY2FzZSAiCisgICAgICAgICAgPDwgImhhcyBub3QgYmVl
biBydW4gYXMgZXhwZWN0ZWQuIjsKKyAgICAgIEVYUEVDVF9FUShrRXhwZWN0ZWRDYWxscywgc2V0
X3VwX2NvdW50XykKKyAgICAgICAgICA8PCAiRml4dHVyZSBTZXRVcCBtZXRob2Qgb2YgUGFyYW1U
ZXN0R2VuZXJhdGlvblRlc3QgdGVzdCBjYXNlICIKKyAgICAgICAgICA8PCAiaGFzIG5vdCBiZWVu
IHJ1biBhcyBleHBlY3RlZC4iOworICAgICAgRVhQRUNUX0VRKGtFeHBlY3RlZENhbGxzLCB0ZWFy
X2Rvd25fY291bnRfKQorICAgICAgICAgIDw8ICJGaXh0dXJlIFRlYXJEb3duIG1ldGhvZCBvZiBQ
YXJhbVRlc3RHZW5lcmF0aW9uVGVzdCB0ZXN0IGNhc2UgIgorICAgICAgICAgIDw8ICJoYXMgbm90
IGJlZW4gcnVuIGFzIGV4cGVjdGVkLiI7CisgICAgICBFWFBFQ1RfRVEoa0V4cGVjdGVkQ2FsbHMs
IHRlc3RfYm9keV9jb3VudF8pCisgICAgICAgICAgPDwgIlRlc3QgaW4gUGFyYW1UZXN0R2VuZXJh
dGlvblRlc3QgdGVzdCBjYXNlICIKKyAgICAgICAgICA8PCAiaGFzIG5vdCBiZWVuIHJ1biBhcyBl
eHBlY3RlZC4iOworICAgIH0KKyAgfQorCisgcHJpdmF0ZToKKyAgVGVzdEdlbmVyYXRpb25FbnZp
cm9ubWVudCgpIDogZml4dHVyZV9jb25zdHJ1Y3Rvcl9jb3VudF8oMCksIHNldF91cF9jb3VudF8o
MCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlYXJfZG93bl9jb3VudF8oMCks
IHRlc3RfYm9keV9jb3VudF8oMCkge30KKworICBpbnQgZml4dHVyZV9jb25zdHJ1Y3Rvcl9jb3Vu
dF87CisgIGludCBzZXRfdXBfY291bnRfOworICBpbnQgdGVhcl9kb3duX2NvdW50XzsKKyAgaW50
IHRlc3RfYm9keV9jb3VudF87CisKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhU
ZXN0R2VuZXJhdGlvbkVudmlyb25tZW50KTsKK307CisKK2NvbnN0IGludCB0ZXN0X2dlbmVyYXRp
b25fcGFyYW1zW10gPSB7MzYsIDQyLCA3Mn07CisKK2NsYXNzIFRlc3RHZW5lcmF0aW9uVGVzdCA6
IHB1YmxpYyBUZXN0V2l0aFBhcmFtPGludD4geworIHB1YmxpYzoKKyAgZW51bSB7CisgICAgUEFS
QU1FVEVSX0NPVU5UID0KKyAgICAgICAgc2l6ZW9mKHRlc3RfZ2VuZXJhdGlvbl9wYXJhbXMpL3Np
emVvZih0ZXN0X2dlbmVyYXRpb25fcGFyYW1zWzBdKQorICB9OworCisgIHR5cGVkZWYgVGVzdEdl
bmVyYXRpb25FbnZpcm9ubWVudDxQQVJBTUVURVJfQ09VTlQ+IEVudmlyb25tZW50OworCisgIFRl
c3RHZW5lcmF0aW9uVGVzdCgpIHsKKyAgICBFbnZpcm9ubWVudDo6SW5zdGFuY2UoKS0+Rml4dHVy
ZUNvbnN0cnVjdG9yRXhlY3V0ZWQoKTsKKyAgICBjdXJyZW50X3BhcmFtZXRlcl8gPSBHZXRQYXJh
bSgpOworICB9CisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICBFbnZpcm9ubWVudDo6SW5z
dGFuY2UoKS0+U2V0VXBFeGVjdXRlZCgpOworICAgIEVYUEVDVF9FUShjdXJyZW50X3BhcmFtZXRl
cl8sIEdldFBhcmFtKCkpOworICB9CisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBF
bnZpcm9ubWVudDo6SW5zdGFuY2UoKS0+VGVhckRvd25FeGVjdXRlZCgpOworICAgIEVYUEVDVF9F
UShjdXJyZW50X3BhcmFtZXRlcl8sIEdldFBhcmFtKCkpOworICB9CisKKyAgc3RhdGljIHZvaWQg
U2V0VXBUZXN0Q2FzZSgpIHsKKyAgICBib29sIGFsbF90ZXN0c19pbl90ZXN0X2Nhc2Vfc2VsZWN0
ZWQgPSB0cnVlOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBQQVJBTUVURVJfQ09VTlQ7ICsr
aSkgeworICAgICAgTWVzc2FnZSB0ZXN0X25hbWU7CisgICAgICB0ZXN0X25hbWUgPDwgIlRlc3Rz
RXhwYW5kZWRBbmRSdW4vIiA8PCBpOworICAgICAgaWYgKCAhVW5pdFRlc3RPcHRpb25zOjpGaWx0
ZXJNYXRjaGVzVGVzdCgKKyAgICAgICAgICAgICAgICAiVGVzdEV4cGFuc2lvbk1vZHVsZS9NdWx0
aXBsZVRlc3RHZW5lcmF0aW9uVGVzdCIsCisgICAgICAgICAgICAgICAgdGVzdF9uYW1lLkdldFN0
cmluZygpKSkgeworICAgICAgICBhbGxfdGVzdHNfaW5fdGVzdF9jYXNlX3NlbGVjdGVkID0gZmFs
c2U7CisgICAgICB9CisgICAgfQorICAgIEVYUEVDVF9UUlVFKGFsbF90ZXN0c19pbl90ZXN0X2Nh
c2Vfc2VsZWN0ZWQpCisgICAgICAgIDw8ICJXaGVuIHJ1bm5pbmcgdGhlIFRlc3RHZW5lcmF0aW9u
VGVzdCB0ZXN0IGNhc2UgYWxsIG9mIGl0cyB0ZXN0c1xuIgorICAgICAgICA8PCAibXVzdCBiZSBz
ZWxlY3RlZCBieSB0aGUgZmlsdGVyIGZsYWcgZm9yIHRoZSB0ZXN0IGNhc2UgdG8gcGFzcy5cbiIK
KyAgICAgICAgPDwgIklmIG5vdCBhbGwgb2YgdGhlbSBhcmUgZW5hYmxlZCwgd2UgY2FuJ3QgcmVs
aWFibHkgY29uY2x1ZGVcbiIKKyAgICAgICAgPDwgInRoYXQgdGhlIGNvcnJlY3QgbnVtYmVyIG9m
IHRlc3RzIGhhdmUgYmVlbiBnZW5lcmF0ZWQuIjsKKworICAgIGNvbGxlY3RlZF9wYXJhbWV0ZXJz
Xy5jbGVhcigpOworICB9CisKKyAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKKyAg
ICB2ZWN0b3I8aW50PiBleHBlY3RlZF92YWx1ZXModGVzdF9nZW5lcmF0aW9uX3BhcmFtcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9nZW5lcmF0aW9uX3BhcmFtcyArIFBB
UkFNRVRFUl9DT1VOVCk7CisgICAgLy8gVGVzdCBleGVjdXRpb24gb3JkZXIgaXMgbm90IGd1YXJh
bnRlZWQgYnkgR29vZ2xlIFRlc3QsCisgICAgLy8gc28gdGhlIG9yZGVyIG9mIHZhbHVlcyBpbiBj
b2xsZWN0ZWRfcGFyYW1ldGVyc18gY2FuIGJlCisgICAgLy8gZGlmZmVyZW50IGFuZCB3ZSBoYXZl
IHRvIHNvcnQgdG8gY29tcGFyZS4KKyAgICBzb3J0KGV4cGVjdGVkX3ZhbHVlcy5iZWdpbigpLCBl
eHBlY3RlZF92YWx1ZXMuZW5kKCkpOworICAgIHNvcnQoY29sbGVjdGVkX3BhcmFtZXRlcnNfLmJl
Z2luKCksIGNvbGxlY3RlZF9wYXJhbWV0ZXJzXy5lbmQoKSk7CisKKyAgICBFWFBFQ1RfVFJVRShj
b2xsZWN0ZWRfcGFyYW1ldGVyc18gPT0gZXhwZWN0ZWRfdmFsdWVzKTsKKyAgfQorCisgcHJvdGVj
dGVkOgorICBpbnQgY3VycmVudF9wYXJhbWV0ZXJfOworICBzdGF0aWMgdmVjdG9yPGludD4gY29s
bGVjdGVkX3BhcmFtZXRlcnNfOworCisgcHJpdmF0ZToKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9B
TkRfQVNTSUdOXyhUZXN0R2VuZXJhdGlvblRlc3QpOworfTsKK3ZlY3RvcjxpbnQ+IFRlc3RHZW5l
cmF0aW9uVGVzdDo6Y29sbGVjdGVkX3BhcmFtZXRlcnNfOworCitURVNUX1AoVGVzdEdlbmVyYXRp
b25UZXN0LCBUZXN0c0V4cGFuZGVkQW5kUnVuKSB7CisgIEVudmlyb25tZW50OjpJbnN0YW5jZSgp
LT5UZXN0Qm9keUV4ZWN1dGVkKCk7CisgIEVYUEVDVF9FUShjdXJyZW50X3BhcmFtZXRlcl8sIEdl
dFBhcmFtKCkpOworICBjb2xsZWN0ZWRfcGFyYW1ldGVyc18ucHVzaF9iYWNrKEdldFBhcmFtKCkp
OworfQorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoVGVzdEV4cGFuc2lvbk1vZHVsZSwgVGVzdEdl
bmVyYXRpb25UZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzSW4odGVzdF9nZW5l
cmF0aW9uX3BhcmFtcykpOworCisvLyBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB0aGUgZWxlbWVu
dCBzZXF1ZW5jZSAodGhpcmQgcGFyYW1ldGVyIG9mCisvLyBJTlNUQU5USUFURV9URVNUX0NBU0Vf
UCkgaXMgZXZhbHVhdGVkIGluIEluaXRHb29nbGVUZXN0KCkgYW5kIG5laXRoZXIgYXQKKy8vIHRo
ZSBjYWxsIHNpdGUgb2YgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1Agbm9yIGluIFJVTl9BTExfVEVT
VFMoKS4gIEZvcgorLy8gdGhhdCwgd2UgZGVjbGFyZSBwYXJhbV92YWx1ZV8gdG8gYmUgYSBzdGF0
aWMgbWVtYmVyIG9mCisvLyBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdCBhbmQgaW5pdGlhbGl6ZSBp
dCB0byAwLiAgV2Ugc2V0IGl0IHRvIDEgaW4KKy8vIG1haW4oKSwganVzdCBiZWZvcmUgaW52b2Nh
dGlvbiBvZiBJbml0R29vZ2xlVGVzdCgpLiAgQWZ0ZXIgY2FsbGluZworLy8gSW5pdEdvb2dsZVRl
c3QoKSwgd2Ugc2V0IHRoZSB2YWx1ZSB0byAyLiAgSWYgdGhlIHNlcXVlbmNlIGlzIGV2YWx1YXRl
ZAorLy8gYmVmb3JlIG9yIGFmdGVyIEluaXRHb29nbGVUZXN0LCBJTlNUQU5USUFURV9URVNUX0NB
U0VfUCB3aWxsIGNyZWF0ZSBhCisvLyB0ZXN0IHdpdGggcGFyYW1ldGVyIG90aGVyIHRoYW4gMSwg
YW5kIHRoZSB0ZXN0IGJvZHkgd2lsbCBmYWlsIHRoZQorLy8gYXNzZXJ0aW9uLgorY2xhc3MgR2Vu
ZXJhdG9yRXZhbHVhdGlvblRlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHsKKyBwdWJs
aWM6CisgIHN0YXRpYyBpbnQgcGFyYW1fdmFsdWUoKSB7IHJldHVybiBwYXJhbV92YWx1ZV87IH0K
KyAgc3RhdGljIHZvaWQgc2V0X3BhcmFtX3ZhbHVlKGludCBwYXJhbV92YWx1ZSkgeyBwYXJhbV92
YWx1ZV8gPSBwYXJhbV92YWx1ZTsgfQorCisgcHJpdmF0ZToKKyAgc3RhdGljIGludCBwYXJhbV92
YWx1ZV87Cit9OworaW50IEdlbmVyYXRvckV2YWx1YXRpb25UZXN0OjpwYXJhbV92YWx1ZV8gPSAw
OworCitURVNUX1AoR2VuZXJhdG9yRXZhbHVhdGlvblRlc3QsIEdlbmVyYXRvcnNFdmFsdWF0ZWRJ
bk1haW4pIHsKKyAgRVhQRUNUX0VRKDEsIEdldFBhcmFtKCkpOworfQorSU5TVEFOVElBVEVfVEVT
VF9DQVNFX1AoR2VuRXZhbE1vZHVsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRv
ckV2YWx1YXRpb25UZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKEdlbmVyYXRv
ckV2YWx1YXRpb25UZXN0OjpwYXJhbV92YWx1ZSgpKSk7CisKKy8vIFRlc3RzIHRoYXQgZ2VuZXJh
dG9ycyBkZWZpbmVkIGluIGEgZGlmZmVyZW50IHRyYW5zbGF0aW9uIHVuaXQgYXJlCisvLyBmdW5j
dGlvbmFsLiBHZW5lcmF0b3IgZXh0ZXJuX2dlbiBpcyBkZWZpbmVkIGluIGd0ZXN0LXBhcmFtLXRl
c3RfdGVzdDIuY2MuCitleHRlcm4gUGFyYW1HZW5lcmF0b3I8aW50PiBleHRlcm5fZ2VuOworY2xh
c3MgRXh0ZXJuYWxHZW5lcmF0b3JUZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08aW50PiB7fTsK
K1RFU1RfUChFeHRlcm5hbEdlbmVyYXRvclRlc3QsIEV4dGVybmFsR2VuZXJhdG9yKSB7CisgIC8v
IFNlcXVlbmNlIHByb2R1Y2VkIGJ5IGV4dGVybl9nZW4gY29udGFpbnMgb25seSBhIHNpbmdsZSB2
YWx1ZQorICAvLyB3aGljaCB3ZSB2ZXJpZnkgaGVyZS4KKyAgRVhQRUNUX0VRKEdldFBhcmFtKCks
IDMzKTsKK30KK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEV4dGVybmFsR2VuZXJhdG9yTW9kdWxl
LAorICAgICAgICAgICAgICAgICAgICAgICAgRXh0ZXJuYWxHZW5lcmF0b3JUZXN0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgZXh0ZXJuX2dlbik7CisKKy8vIFRlc3RzIHRoYXQgYSBwYXJhbWV0
ZXJpemVkIHRlc3QgY2FzZSBjYW4gYmUgZGVmaW5lZCBpbiBvbmUgdHJhbnNsYXRpb24KKy8vIHVu
aXQgYW5kIGluc3RhbnRpYXRlZCBpbiBhbm90aGVyLiBUaGlzIHRlc3Qgd2lsbCBiZSBpbnN0YW50
aWF0ZWQgaW4KKy8vIGd0ZXN0LXBhcmFtLXRlc3RfdGVzdDIuY2MuIEV4dGVybmFsSW5zdGFudGlh
dGlvblRlc3QgZml4dHVyZSBjbGFzcyBpcworLy8gZGVmaW5lZCBpbiBndGVzdC1wYXJhbS10ZXN0
X3Rlc3QuaC4KK1RFU1RfUChFeHRlcm5hbEluc3RhbnRpYXRpb25UZXN0LCBJc011bHRpcGxlT2Yz
MykgeworICBFWFBFQ1RfRVEoMCwgR2V0UGFyYW0oKSAlIDMzKTsKK30KKworLy8gVGVzdHMgdGhh
dCBhIHBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlIGNhbiBiZSBpbnN0YW50aWF0ZWQgd2l0aCBtdWx0
aXBsZQorLy8gZ2VuZXJhdG9ycy4KK2NsYXNzIE11bHRpcGxlSW5zdGFudGlhdGlvblRlc3QgOiBw
dWJsaWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHt9OworVEVTVF9QKE11bHRpcGxlSW5zdGFudGlhdGlv
blRlc3QsIEFsbG93c011bHRpcGxlSW5zdGFuY2VzKSB7Cit9CitJTlNUQU5USUFURV9URVNUX0NB
U0VfUChTZXF1ZW5jZTEsIE11bHRpcGxlSW5zdGFudGlhdGlvblRlc3QsIFZhbHVlcygxLCAyKSk7
CitJTlNUQU5USUFURV9URVNUX0NBU0VfUChTZXF1ZW5jZTIsIE11bHRpcGxlSW5zdGFudGlhdGlv
blRlc3QsIFJhbmdlKDMsIDUpKTsKKworLy8gVGVzdHMgdGhhdCBhIHBhcmFtZXRlcml6ZWQgdGVz
dCBjYXNlIGNhbiBiZSBpbnN0YW50aWF0ZWQKKy8vIGluIG11bHRpcGxlIHRyYW5zbGF0aW9uIHVu
aXRzLiBUaGlzIHRlc3Qgd2lsbCBiZSBpbnN0YW50aWF0ZWQKKy8vIGhlcmUgYW5kIGluIGd0ZXN0
LXBhcmFtLXRlc3RfdGVzdDIuY2MuCisvLyBJbnN0YW50aWF0aW9uSW5NdWx0aXBsZVRyYW5zbGF0
aW9uVW5pdHNUZXN0IGZpeHR1cmUgY2xhc3MKKy8vIGlzIGRlZmluZWQgaW4gZ3Rlc3QtcGFyYW0t
dGVzdF90ZXN0LmguCitURVNUX1AoSW5zdGFudGlhdGlvbkluTXVsdGlwbGVUcmFuc2xhaW9uVW5p
dHNUZXN0LCBJc011bHRpcGxlT2Y0MikgeworICBFWFBFQ1RfRVEoMCwgR2V0UGFyYW0oKSAlIDQy
KTsKK30KK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFNlcXVlbmNlMSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEluc3RhbnRpYXRpb25Jbk11bHRpcGxlVHJhbnNsYWlvblVuaXRzVGVzdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyg0MiwgNDIqMikpOworCisvLyBUZXN0cyB0aGF0
IGVhY2ggaXRlcmF0aW9uIG9mIHBhcmFtZXRlcml6ZWQgdGVzdCBydW5zIGluIGEgc2VwYXJhdGUg
dGVzdAorLy8gb2JqZWN0LgorY2xhc3MgU2VwYXJhdGVJbnN0YW5jZVRlc3QgOiBwdWJsaWMgVGVz
dFdpdGhQYXJhbTxpbnQ+IHsKKyBwdWJsaWM6CisgIFNlcGFyYXRlSW5zdGFuY2VUZXN0KCkgOiBj
b3VudF8oMCkge30KKworICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeworICAgIEVY
UEVDVF9HRShnbG9iYWxfY291bnRfLCAyKQorICAgICAgICA8PCAiSWYgc29tZSAoYnV0IG5vdCBh
bGwpIFNlcGFyYXRlSW5zdGFuY2VUZXN0IHRlc3RzIGhhdmUgYmVlbiAiCisgICAgICAgIDw8ICJm
aWx0ZXJlZCBvdXQgdGhpcyB0ZXN0IHdpbGwgZmFpbC4gTWFrZSBzdXJlIHRoYXQgYWxsICIKKyAg
ICAgICAgPDwgIkdlbmVyYXRvckV2YWx1YXRpb25UZXN0IGFyZSBzZWxlY3RlZCBvciBkZS1zZWxl
Y3RlZCB0b2dldGhlciAiCisgICAgICAgIDw8ICJieSB0aGUgdGVzdCBmaWx0ZXIuIjsKKyAgfQor
CisgcHJvdGVjdGVkOgorICBpbnQgY291bnRfOworICBzdGF0aWMgaW50IGdsb2JhbF9jb3VudF87
Cit9OworaW50IFNlcGFyYXRlSW5zdGFuY2VUZXN0OjpnbG9iYWxfY291bnRfID0gMDsKKworVEVT
VF9QKFNlcGFyYXRlSW5zdGFuY2VUZXN0LCBUZXN0c1J1bkluU2VwYXJhdGVJbnN0YW5jZXMpIHsK
KyAgRVhQRUNUX0VRKDAsIGNvdW50XysrKTsKKyAgZ2xvYmFsX2NvdW50XysrOworfQorSU5TVEFO
VElBVEVfVEVTVF9DQVNFX1AoRm91ckVsZW1TZXF1ZW5jZSwgU2VwYXJhdGVJbnN0YW5jZVRlc3Qs
IFJhbmdlKDEsIDQpKTsKKworLy8gVGVzdHMgdGhhdCBhbGwgaW5zdGFudGlhdGlvbnMgb2YgYSB0
ZXN0IGhhdmUgbmFtZWQgYXBwcm9wcmlhdGVseS4gVGVzdAorLy8gZGVmaW5lZCB3aXRoIFRFU1Rf
UChUZXN0Q2FzZU5hbWUsIFRlc3ROYW1lKSBhbmQgaW5zdGFudGlhdGVkIHdpdGgKKy8vIElOU1RB
TlRJQVRFX1RFU1RfQ0FTRV9QKFNlcXVlbmNlTmFtZSwgVGVzdENhc2VOYW1lLCBnZW5lcmF0b3Ip
IG11c3QgYmUgbmFtZWQKKy8vIFNlcXVlbmNlTmFtZS9UZXN0Q2FzZU5hbWUuVGVzdE5hbWUvaSwg
d2hlcmUgaSBpcyB0aGUgMC1iYXNlZCBpbmRleCBvZiB0aGUKKy8vIHNlcXVlbmNlIGVsZW1lbnQg
dXNlZCB0byBpbnN0YW50aWF0ZSB0aGUgdGVzdC4KK2NsYXNzIE5hbWluZ1Rlc3QgOiBwdWJsaWMg
VGVzdFdpdGhQYXJhbTxpbnQ+IHt9OworCitURVNUX1AoTmFtaW5nVGVzdCwgVGVzdHNSZXBvcnRD
b3JyZWN0TmFtZXNBbmRQYXJhbWV0ZXJzKSB7CisgIGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8q
IGNvbnN0IHRlc3RfaW5mbyA9CisgICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNl
KCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7CisKKyAgRVhQRUNUX1NUUkVRKCJaZXJvVG9GaXZlU2Vx
dWVuY2UvTmFtaW5nVGVzdCIsIHRlc3RfaW5mby0+dGVzdF9jYXNlX25hbWUoKSk7CisKKyAgTWVz
c2FnZSBpbmRleF9zdHJlYW07CisgIGluZGV4X3N0cmVhbSA8PCAiVGVzdHNSZXBvcnRDb3JyZWN0
TmFtZXNBbmRQYXJhbWV0ZXJzLyIgPDwgR2V0UGFyYW0oKTsKKyAgRVhQRUNUX1NUUkVRKGluZGV4
X3N0cmVhbS5HZXRTdHJpbmcoKS5jX3N0cigpLCB0ZXN0X2luZm8tPm5hbWUoKSk7CisKKyAgRVhQ
RUNUX0VRKDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhHZXRQYXJhbSgpKSwgdGVzdF9pbmZvLT52
YWx1ZV9wYXJhbSgpKTsKK30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoWmVyb1RvRml2ZVNl
cXVlbmNlLCBOYW1pbmdUZXN0LCBSYW5nZSgwLCA1KSk7CisKKy8vIFRlc3RzIHRoYXQgdXNlciBz
dXBwbGllZCBjdXN0b20gcGFyYW1ldGVyIG5hbWVzIGFyZSB3b3JraW5nIGNvcnJlY3RseS4KKy8v
IFJ1bnMgdGhlIHRlc3Qgd2l0aCBhIGJ1aWx0aW4gaGVscGVyIG1ldGhvZCB3aGljaCB1c2VzIFBy
aW50VG9TdHJpbmcsCisvLyBhcyB3ZWxsIGFzIGEgY3VzdG9tIGZ1bmN0aW9uIGFuZCBjdXN0b20g
ZnVuY3RvciB0byBlbnN1cmUgYWxsIHBvc3NpYmxlCisvLyB1c2VzIHdvcmsgY29ycmVjdGx5Lgor
Y2xhc3MgQ3VzdG9tRnVuY3Rvck5hbWluZ1Rlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxzdGQ6
OnN0cmluZz4ge307CitURVNUX1AoQ3VzdG9tRnVuY3Rvck5hbWluZ1Rlc3QsIEN1c3RvbVRlc3RO
YW1lcykge30KKworc3RydWN0IEN1c3RvbVBhcmFtTmFtZUZ1bmN0b3IgeworICBzdGQ6OnN0cmlu
ZyBvcGVyYXRvcigpKGNvbnN0IDo6dGVzdGluZzo6VGVzdFBhcmFtSW5mbzxzdGQ6OnN0cmluZz4m
IGluZm8pIHsKKyAgICByZXR1cm4gaW5mby5wYXJhbTsKKyAgfQorfTsKKworSU5TVEFOVElBVEVf
VEVTVF9DQVNFX1AoQ3VzdG9tUGFyYW1OYW1lRnVuY3RvciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEN1c3RvbUZ1bmN0b3JOYW1pbmdUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgVmFs
dWVzKHN0ZDo6c3RyaW5nKCJGdW5jdG9yTmFtZSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IEN1c3RvbVBhcmFtTmFtZUZ1bmN0b3IoKSk7CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEFs
bEFsbG93ZWRDaGFyYWN0ZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tRnVuY3Rv
ck5hbWluZ1Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoImFiY2RlZmdoaWpr
bG1ub3BxcnN0dXZ3eHl6IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQUJDREVG
R0hJSktMTU5PUFFSU1RVVldYWVoiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIw
MTIzNDU2Nzg5MF8iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbVBhcmFtTmFtZUZ1
bmN0b3IoKSk7CisKK2lubGluZSBzdGQ6OnN0cmluZyBDdXN0b21QYXJhbU5hbWVGdW5jdGlvbigK
KyAgICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RQYXJhbUluZm88c3RkOjpzdHJpbmc+JiBpbmZvKSB7
CisgIHJldHVybiBpbmZvLnBhcmFtOworfQorCitjbGFzcyBDdXN0b21GdW5jdGlvbk5hbWluZ1Rl
c3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxzdGQ6OnN0cmluZz4ge307CitURVNUX1AoQ3VzdG9t
RnVuY3Rpb25OYW1pbmdUZXN0LCBDdXN0b21UZXN0TmFtZXMpIHt9CisKK0lOU1RBTlRJQVRFX1RF
U1RfQ0FTRV9QKEN1c3RvbVBhcmFtTmFtZUZ1bmN0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgQ3VzdG9tRnVuY3Rpb25OYW1pbmdUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgVmFs
dWVzKHN0ZDo6c3RyaW5nKCJGdW5jdGlvbk5hbWUiKSksCisgICAgICAgICAgICAgICAgICAgICAg
ICBDdXN0b21QYXJhbU5hbWVGdW5jdGlvbik7CisKKyNpZiBHVEVTVF9MQU5HX0NYWDExCisKKy8v
IFRlc3QgY3VzdG9tIG5hbWluZyB3aXRoIGEgbGFtYmRhCisKK2NsYXNzIEN1c3RvbUxhbWJkYU5h
bWluZ1Rlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxzdGQ6OnN0cmluZz4ge307CitURVNUX1Ao
Q3VzdG9tTGFtYmRhTmFtaW5nVGVzdCwgQ3VzdG9tVGVzdE5hbWVzKSB7fQorCitJTlNUQU5USUFU
RV9URVNUX0NBU0VfUChDdXN0b21QYXJhbU5hbWVMYW1iZGEsCisgICAgICAgICAgICAgICAgICAg
ICAgICBDdXN0b21MYW1iZGFOYW1pbmdUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgVmFs
dWVzKHN0ZDo6c3RyaW5nKCJMYW1iZGFOYW1lIikpLAorICAgICAgICAgICAgICAgICAgICAgICAg
W10oY29uc3QgOjp0ZXN0aW5nOjpUZXN0UGFyYW1JbmZvPHN0ZDo6c3RyaW5nPiYgaW5mbykgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5mby5wYXJhbTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0pOworCisjZW5kaWYgIC8vIEdURVNUX0xBTkdfQ1hYMTEKKworVEVTVChD
dXN0b21OYW1pbmdUZXN0LCBDaGVja05hbWVSZWdpc3RyeSkgeworICA6OnRlc3Rpbmc6OlVuaXRU
ZXN0KiB1bml0X3Rlc3QgPSA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpOworICBz
dGQ6OnNldDxzdGQ6OnN0cmluZz4gdGVzdF9uYW1lczsKKyAgZm9yIChpbnQgY2FzZV9udW0gPSAw
OworICAgICAgIGNhc2VfbnVtIDwgdW5pdF90ZXN0LT50b3RhbF90ZXN0X2Nhc2VfY291bnQoKTsK
KyAgICAgICArK2Nhc2VfbnVtKSB7CisgICAgY29uc3QgOjp0ZXN0aW5nOjpUZXN0Q2FzZSogdGVz
dF9jYXNlID0gdW5pdF90ZXN0LT5HZXRUZXN0Q2FzZShjYXNlX251bSk7CisgICAgZm9yIChpbnQg
dGVzdF9udW0gPSAwOworICAgICAgICAgdGVzdF9udW0gPCB0ZXN0X2Nhc2UtPnRvdGFsX3Rlc3Rf
Y291bnQoKTsKKyAgICAgICAgICsrdGVzdF9udW0pIHsKKyAgICAgIGNvbnN0IDo6dGVzdGluZzo6
VGVzdEluZm8qIHRlc3RfaW5mbyA9IHRlc3RfY2FzZS0+R2V0VGVzdEluZm8odGVzdF9udW0pOwor
ICAgICAgdGVzdF9uYW1lcy5pbnNlcnQoc3RkOjpzdHJpbmcodGVzdF9pbmZvLT5uYW1lKCkpKTsK
KyAgICB9CisgIH0KKyAgRVhQRUNUX0VRKDF1LCB0ZXN0X25hbWVzLmNvdW50KCJDdXN0b21UZXN0
TmFtZXMvRnVuY3Rvck5hbWUiKSk7CisgIEVYUEVDVF9FUSgxdSwgdGVzdF9uYW1lcy5jb3VudCgi
Q3VzdG9tVGVzdE5hbWVzL0Z1bmN0aW9uTmFtZSIpKTsKKyNpZiBHVEVTVF9MQU5HX0NYWDExCisg
IEVYUEVDVF9FUSgxdSwgdGVzdF9uYW1lcy5jb3VudCgiQ3VzdG9tVGVzdE5hbWVzL0xhbWJkYU5h
bWUiKSk7CisjZW5kaWYgIC8vIEdURVNUX0xBTkdfQ1hYMTEKK30KKworLy8gVGVzdCBhIG51bWVy
aWMgbmFtZSB0byBlbnN1cmUgUHJpbnRUb1N0cmluZ1BhcmFtTmFtZSB3b3JrcyBjb3JyZWN0bHku
CisKK2NsYXNzIEN1c3RvbUludGVnZXJOYW1pbmdUZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08
aW50PiB7fTsKKworVEVTVF9QKEN1c3RvbUludGVnZXJOYW1pbmdUZXN0LCBUZXN0c1JlcG9ydENv
cnJlY3ROYW1lcykgeworICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCB0ZXN0X2lu
Zm8gPQorICAgICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rl
c3RfaW5mbygpOworICBNZXNzYWdlIHRlc3RfbmFtZV9zdHJlYW07CisgIHRlc3RfbmFtZV9zdHJl
YW0gPDwgIlRlc3RzUmVwb3J0Q29ycmVjdE5hbWVzLyIgPDwgR2V0UGFyYW0oKTsKKyAgRVhQRUNU
X1NUUkVRKHRlc3RfbmFtZV9zdHJlYW0uR2V0U3RyaW5nKCkuY19zdHIoKSwgdGVzdF9pbmZvLT5u
YW1lKCkpOworfQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChQcmludFRvU3RyaW5nLAorICAg
ICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tSW50ZWdlck5hbWluZ1Rlc3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICBSYW5nZSgwLCA1KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIDo6dGVz
dGluZzo6UHJpbnRUb1N0cmluZ1BhcmFtTmFtZSgpKTsKKworLy8gVGVzdCBhIGN1c3RvbSBzdHJ1
Y3Qgd2l0aCBQcmludFRvU3RyaW5nLgorCitzdHJ1Y3QgQ3VzdG9tU3RydWN0IHsKKyAgZXhwbGlj
aXQgQ3VzdG9tU3RydWN0KGludCB2YWx1ZSkgOiB4KHZhbHVlKSB7fQorICBpbnQgeDsKK307CisK
K3N0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIHN0cmVhbSwgY29uc3QgQ3Vz
dG9tU3RydWN0JiB2YWwpIHsKKyAgc3RyZWFtIDw8IHZhbC54OworICByZXR1cm4gc3RyZWFtOwor
fQorCitjbGFzcyBDdXN0b21TdHJ1Y3ROYW1pbmdUZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08
Q3VzdG9tU3RydWN0PiB7fTsKKworVEVTVF9QKEN1c3RvbVN0cnVjdE5hbWluZ1Rlc3QsIFRlc3Rz
UmVwb3J0Q29ycmVjdE5hbWVzKSB7CisgIGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0
IHRlc3RfaW5mbyA9CisgICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmN1
cnJlbnRfdGVzdF9pbmZvKCk7CisgIE1lc3NhZ2UgdGVzdF9uYW1lX3N0cmVhbTsKKyAgdGVzdF9u
YW1lX3N0cmVhbSA8PCAiVGVzdHNSZXBvcnRDb3JyZWN0TmFtZXMvIiA8PCBHZXRQYXJhbSgpOwor
ICBFWFBFQ1RfU1RSRVEodGVzdF9uYW1lX3N0cmVhbS5HZXRTdHJpbmcoKS5jX3N0cigpLCB0ZXN0
X2luZm8tPm5hbWUoKSk7Cit9CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFByaW50VG9TdHJp
bmcsCisgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21TdHJ1Y3ROYW1pbmdUZXN0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKEN1c3RvbVN0cnVjdCgwKSwgQ3VzdG9tU3RydWN0
KDEpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZ1Bh
cmFtTmFtZSgpKTsKKworLy8gVGVzdCB0aGF0IHVzaW5nIGEgc3RhdGVmdWwgcGFyYW1ldGVyIG5h
bWluZyBmdW5jdGlvbiB3b3JrcyBhcyBleHBlY3RlZC4KKworc3RydWN0IFN0YXRlZnVsTmFtaW5n
RnVuY3RvciB7CisgIFN0YXRlZnVsTmFtaW5nRnVuY3RvcigpIDogc3VtKDApIHt9CisgIHN0ZDo6
c3RyaW5nIG9wZXJhdG9yKCkoY29uc3QgOjp0ZXN0aW5nOjpUZXN0UGFyYW1JbmZvPGludD4mIGlu
Zm8pIHsKKyAgICBpbnQgdmFsdWUgPSBpbmZvLnBhcmFtICsgc3VtOworICAgIHN1bSArPSBpbmZv
LnBhcmFtOworICAgIHJldHVybiA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcodmFsdWUpOworICB9
CisgIGludCBzdW07Cit9OworCitjbGFzcyBTdGF0ZWZ1bE5hbWluZ1Rlc3QgOiBwdWJsaWMgOjp0
ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4geworIHByb3RlY3RlZDoKKyAgU3RhdGVmdWxOYW1p
bmdUZXN0KCkgOiBzdW1fKDApIHt9CisgIGludCBzdW1fOworfTsKKworVEVTVF9QKFN0YXRlZnVs
TmFtaW5nVGVzdCwgVGVzdHNSZXBvcnRDb3JyZWN0TmFtZXMpIHsKKyAgY29uc3QgOjp0ZXN0aW5n
OjpUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0KKyAgICAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6
R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKTsKKyAgc3VtXyArPSBHZXRQYXJhbSgp
OworICBNZXNzYWdlIHRlc3RfbmFtZV9zdHJlYW07CisgIHRlc3RfbmFtZV9zdHJlYW0gPDwgIlRl
c3RzUmVwb3J0Q29ycmVjdE5hbWVzLyIgPDwgc3VtXzsKKyAgRVhQRUNUX1NUUkVRKHRlc3RfbmFt
ZV9zdHJlYW0uR2V0U3RyaW5nKCkuY19zdHIoKSwgdGVzdF9pbmZvLT5uYW1lKCkpOworfQorCitJ
TlNUQU5USUFURV9URVNUX0NBU0VfUChTdGF0ZWZ1bE5hbWluZ0Z1bmN0b3IsCisgICAgICAgICAg
ICAgICAgICAgICAgICBTdGF0ZWZ1bE5hbWluZ1Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAg
ICBSYW5nZSgwLCA1KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRlZnVsTmFtaW5nRnVu
Y3RvcigpKTsKKworLy8gQ2xhc3MgdGhhdCBjYW5ub3QgYmUgc3RyZWFtZWQgaW50byBhbiBvc3Ry
ZWFtLiAgSXQgbmVlZHMgdG8gYmUgY29weWFibGUKKy8vIChhbmQsIGluIGNhc2Ugb2YgTVNWQywg
YWxzbyBhc3NpZ25hYmxlKSBpbiBvcmRlciB0byBiZSBhIHRlc3QgcGFyYW1ldGVyCisvLyB0eXBl
LiAgSXRzIGRlZmF1bHQgY29weSBjb25zdHJ1Y3RvciBhbmQgYXNzaWdubWVudCBvcGVyYXRvciBk
byBleGFjdGx5CisvLyB3aGF0IHdlIG5lZWQuCitjbGFzcyBVbnN0cmVhbWFibGUgeworIHB1Ymxp
YzoKKyAgZXhwbGljaXQgVW5zdHJlYW1hYmxlKGludCB2YWx1ZSkgOiB2YWx1ZV8odmFsdWUpIHt9
CisKKyBwcml2YXRlOgorICBpbnQgdmFsdWVfOworfTsKKworY2xhc3MgQ29tbWVudFRlc3QgOiBw
dWJsaWMgVGVzdFdpdGhQYXJhbTxVbnN0cmVhbWFibGU+IHt9OworCitURVNUX1AoQ29tbWVudFRl
c3QsIFRlc3RzQ29ycmVjdGx5UmVwb3J0VW5zdHJlYW1hYmxlUGFyYW1zKSB7CisgIGNvbnN0IDo6
dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9CisgICAgIDo6dGVzdGluZzo6VW5p
dFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7CisKKyAgRVhQRUNUX0VR
KDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhHZXRQYXJhbSgpKSwgdGVzdF9pbmZvLT52YWx1ZV9w
YXJhbSgpKTsKK30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoSW5zdGFudGlhdGlvbldpdGhD
b21tZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbW1lbnRUZXN0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsdWVzKFVuc3RyZWFtYWJsZSgxKSkpOworCisvLyBWZXJpZnkgdGhh
dCB3ZSBjYW4gY3JlYXRlIGEgaGllcmFyY2h5IG9mIHRlc3QgZml4dHVyZXMsIHdoZXJlIHRoZSBi
YXNlCisvLyBjbGFzcyBmaXh0dXJlIGlzIG5vdCBwYXJhbWV0ZXJpemVkIGFuZCB0aGUgZGVyaXZl
ZCBjbGFzcyBpcy4gSW4gdGhpcyBjYXNlCisvLyBQYXJhbWV0ZXJpemVkRGVyaXZlZFRlc3QgaW5o
ZXJpdHMgZnJvbSBOb25QYXJhbWV0ZXJpemVkQmFzZVRlc3QuICBXZQorLy8gcGVyZm9ybSBzaW1w
bGUgdGVzdHMgb24gYm90aC4KK2NsYXNzIE5vblBhcmFtZXRlcml6ZWRCYXNlVGVzdCA6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3QgeworIHB1YmxpYzoKKyAgTm9uUGFyYW1ldGVyaXplZEJhc2VUZXN0
KCkgOiBuXygxNykgeyB9CisgcHJvdGVjdGVkOgorICBpbnQgbl87Cit9OworCitjbGFzcyBQYXJh
bWV0ZXJpemVkRGVyaXZlZFRlc3QgOiBwdWJsaWMgTm9uUGFyYW1ldGVyaXplZEJhc2VUZXN0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIDo6dGVzdGluZzo6V2l0aFBh
cmFtSW50ZXJmYWNlPGludD4geworIHByb3RlY3RlZDoKKyAgUGFyYW1ldGVyaXplZERlcml2ZWRU
ZXN0KCkgOiBjb3VudF8oMCkgeyB9CisgIGludCBjb3VudF87CisgIHN0YXRpYyBpbnQgZ2xvYmFs
X2NvdW50XzsKK307CisKK2ludCBQYXJhbWV0ZXJpemVkRGVyaXZlZFRlc3Q6Omdsb2JhbF9jb3Vu
dF8gPSAwOworCitURVNUX0YoTm9uUGFyYW1ldGVyaXplZEJhc2VUZXN0LCBGaXh0dXJlSXNJbml0
aWFsaXplZCkgeworICBFWFBFQ1RfRVEoMTcsIG5fKTsKK30KKworVEVTVF9QKFBhcmFtZXRlcml6
ZWREZXJpdmVkVGVzdCwgU2Vlc1NlcXVlbmNlKSB7CisgIEVYUEVDVF9FUSgxNywgbl8pOworICBF
WFBFQ1RfRVEoMCwgY291bnRfKyspOworICBFWFBFQ1RfRVEoR2V0UGFyYW0oKSwgZ2xvYmFsX2Nv
dW50XysrKTsKK30KKworY2xhc3MgUGFyYW1ldGVyaXplZERlYXRoVGVzdCA6IHB1YmxpYyA6OnRl
c3Rpbmc6OlRlc3RXaXRoUGFyYW08aW50PiB7IH07CisKK1RFU1RfRihQYXJhbWV0ZXJpemVkRGVh
dGhUZXN0LCBHZXRQYXJhbURpZXNGcm9tVGVzdEYpIHsKKyAgRVhQRUNUX0RFQVRIX0lGX1NVUFBP
UlRFRChHZXRQYXJhbSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIuKiB2YWx1ZS1w
YXJhbWV0ZXJpemVkIHRlc3QgLioiKTsKK30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoUmFu
Z2VaZXJvVG9GaXZlLCBQYXJhbWV0ZXJpemVkRGVyaXZlZFRlc3QsIFJhbmdlKDAsIDUpKTsKKwor
I2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAorCitURVNUKENvbXBpbGVUZXN0LCBDb21i
aW5lSXNEZWZpbmVkT25seVdoZW5HdGVzdEhhc1BhcmFtVGVzdElzRGVmaW5lZCkgeworI2lmIEdU
RVNUX0hBU19DT01CSU5FICYmICFHVEVTVF9IQVNfUEFSQU1fVEVTVAorICBGQUlMKCkgPDwgIkdU
RVNUX0hBU19DT01CSU5FIGlzIGRlZmluZWQgd2hpbGUgR1RFU1RfSEFTX1BBUkFNX1RFU1QgaXMg
bm90XG4iCisjZW5kaWYKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7Cisj
aWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKKyAgLy8gVXNlZCBpbiBUZXN0R2VuZXJhdGlvblRlc3Qg
dGVzdCBjYXNlLgorICBBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoVGVzdEdlbmVyYXRpb25UZXN0
OjpFbnZpcm9ubWVudDo6SW5zdGFuY2UoKSk7CisgIC8vIFVzZWQgaW4gR2VuZXJhdG9yRXZhbHVh
dGlvblRlc3QgdGVzdCBjYXNlLiBUZXN0cyB0aGF0IHRoZSB1cGRhdGVkIHZhbHVlCisgIC8vIHdp
bGwgYmUgcGlja2VkIHVwIGZvciBpbnN0YW50aWF0aW5nIHRlc3RzIGluIEdlbmVyYXRvckV2YWx1
YXRpb25UZXN0LgorICBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdDo6c2V0X3BhcmFtX3ZhbHVlKDEp
OworI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAorCisgIDo6dGVzdGluZzo6SW5pdEdv
b2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworCisjaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKKyAgLy8g
VXNlZCBpbiBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdCB0ZXN0IGNhc2UuIFRlc3RzIHRoYXQgdmFs
dWUgdXBkYXRlZAorICAvLyBoZXJlIHdpbGwgTk9UIGJlIHVzZWQgZm9yIGluc3RhbnRpYXRpbmcg
dGVzdHMgaW4KKyAgLy8gR2VuZXJhdG9yRXZhbHVhdGlvblRlc3QuCisgIEdlbmVyYXRvckV2YWx1
YXRpb25UZXN0OjpzZXRfcGFyYW1fdmFsdWUoMik7CisjZW5kaWYgIC8vIEdURVNUX0hBU19QQVJB
TV9URVNUCisKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGV0ZXN0L3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0
ZXN0LXBhcmFtLXRlc3RfdGVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2ZWExMjJiMTBiOWY5Y2Q3MjQ5NmUx
ODllY2E5MGIyYmNkZmNjZWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0
ZXN0LXBhcmFtLXRlc3RfdGVzdC5oCkBAIC0wLDAgKzEsNTcgQEAKKy8vIENvcHlyaWdodCAyMDA4
LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
Ky8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8g
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8v
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBBdXRob3JzOiB2bGFkbEBnb29nbGUu
Y29tIChWbGFkIExvc2V2KQorLy8KKy8vIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3Jr
IChHb29nbGUgVGVzdCkKKy8vCisvLyBUaGlzIGhlYWRlciBmaWxlIHByb3ZpZGVzIGNsYXNzZXMg
YW5kIGZ1bmN0aW9ucyB1c2VkIGludGVybmFsbHkKKy8vIGZvciB0ZXN0aW5nIEdvb2dsZSBUZXN0
IGl0c2VsZi4KKworI2lmbmRlZiBHVEVTVF9URVNUX0dURVNUX1BBUkFNX1RFU1RfVEVTVF9IXwor
I2RlZmluZSBHVEVTVF9URVNUX0dURVNUX1BBUkFNX1RFU1RfVEVTVF9IXworCisjaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QuaCIKKworI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCisKKy8vIFRlc3QgZml4
dHVyZSBmb3IgdGVzdGluZyBkZWZpbml0aW9uIGFuZCBpbnN0YW50aWF0aW9uIG9mIGEgdGVzdAor
Ly8gaW4gc2VwYXJhdGUgdHJhbnNsYXRpb24gdW5pdHMuCitjbGFzcyBFeHRlcm5hbEluc3RhbnRp
YXRpb25UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxpbnQ+IHsKK307CisK
Ky8vIFRlc3QgZml4dHVyZSBmb3IgdGVzdGluZyBpbnN0YW50aWF0aW9uIG9mIGEgdGVzdCBpbiBt
dWx0aXBsZQorLy8gdHJhbnNsYXRpb24gdW5pdHMuCitjbGFzcyBJbnN0YW50aWF0aW9uSW5NdWx0
aXBsZVRyYW5zbGFpb25Vbml0c1Rlc3QKKyAgICA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRo
UGFyYW08aW50PiB7Cit9OworCisjZW5kaWYgIC8vIEdURVNUX0hBU19QQVJBTV9URVNUCisKKyNl
bmRpZiAgLy8gR1RFU1RfVEVTVF9HVEVTVF9QQVJBTV9URVNUX1RFU1RfSF8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3QtcG9ydF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9n
dGVzdC1wb3J0X3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzUwNjdhNDBkNGFhMDBkNTcxZGM1MjgxMjM5
YTg2MzE1YjAwNjBiZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3Qt
cG9ydF90ZXN0LmNjCkBAIC0wLDAgKzEsMTMxMSBAQAorLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2ds
ZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEF1dGhvcnM6IHZsYWRsQGdvb2dsZS5jb20gKFZs
YWQgTG9zZXYpLCB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorLy8KKy8vIFRoaXMgZmls
ZSB0ZXN0cyB0aGUgaW50ZXJuYWwgY3Jvc3MtcGxhdGZvcm0gc3VwcG9ydCB1dGlsaXRpZXMuCisK
KyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCisKKyNpbmNsdWRlIDxzdGRp
by5oPgorCisjaWYgR1RFU1RfT1NfTUFDCisjIGluY2x1ZGUgPHRpbWUuaD4KKyNlbmRpZiAgLy8g
R1RFU1RfT1NfTUFDCisKKyNpbmNsdWRlIDxsaXN0PgorI2luY2x1ZGUgPHV0aWxpdHk+ICAvLyBG
b3Igc3RkOjpwYWlyIGFuZCBzdGQ6Om1ha2VfcGFpci4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNp
bmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXNwaS5oIgorCisv
LyBJbmRpY2F0ZXMgdGhhdCB0aGlzIHRyYW5zbGF0aW9uIHVuaXQgaXMgcGFydCBvZiBHb29nbGUg
VGVzdCdzCisvLyBpbXBsZW1lbnRhdGlvbi4gIEl0IG11c3QgY29tZSBiZWZvcmUgZ3Rlc3QtaW50
ZXJuYWwtaW5sLmggaXMKKy8vIGluY2x1ZGVkLCBvciB0aGVyZSB3aWxsIGJlIGEgY29tcGlsZXIg
ZXJyb3IuICBUaGlzIHRyaWNrIGlzIHRvCisvLyBwcmV2ZW50IGEgdXNlciBmcm9tIGFjY2lkZW50
YWxseSBpbmNsdWRpbmcgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaW4KKy8vIGhpcyBjb2RlLgorI2Rl
ZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8gMQorI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5h
bC1pbmwuaCIKKyN1bmRlZiBHVEVTVF9JTVBMRU1FTlRBVElPTl8KKwordXNpbmcgc3RkOjptYWtl
X3BhaXI7Cit1c2luZyBzdGQ6OnBhaXI7CisKK25hbWVzcGFjZSB0ZXN0aW5nIHsKK25hbWVzcGFj
ZSBpbnRlcm5hbCB7CisKK1RFU1QoSXNYRGlnaXRUZXN0LCBXb3Jrc0Zvck5hcnJvd0FzY2lpKSB7
CisgIEVYUEVDVF9UUlVFKElzWERpZ2l0KCcwJykpOworICBFWFBFQ1RfVFJVRShJc1hEaWdpdCgn
OScpKTsKKyAgRVhQRUNUX1RSVUUoSXNYRGlnaXQoJ0EnKSk7CisgIEVYUEVDVF9UUlVFKElzWERp
Z2l0KCdGJykpOworICBFWFBFQ1RfVFJVRShJc1hEaWdpdCgnYScpKTsKKyAgRVhQRUNUX1RSVUUo
SXNYRGlnaXQoJ2YnKSk7CisKKyAgRVhQRUNUX0ZBTFNFKElzWERpZ2l0KCctJykpOworICBFWFBF
Q1RfRkFMU0UoSXNYRGlnaXQoJ2cnKSk7CisgIEVYUEVDVF9GQUxTRShJc1hEaWdpdCgnRycpKTsK
K30KKworVEVTVChJc1hEaWdpdFRlc3QsIFJldHVybnNGYWxzZUZvck5hcnJvd05vbkFzY2lpKSB7
CisgIEVYUEVDVF9GQUxTRShJc1hEaWdpdCgnXHg4MCcpKTsKKyAgRVhQRUNUX0ZBTFNFKElzWERp
Z2l0KHN0YXRpY19jYXN0PGNoYXI+KCcwJyB8ICdceDgwJykpKTsKK30KKworVEVTVChJc1hEaWdp
dFRlc3QsIFdvcmtzRm9yV2lkZUFzY2lpKSB7CisgIEVYUEVDVF9UUlVFKElzWERpZ2l0KEwnMCcp
KTsKKyAgRVhQRUNUX1RSVUUoSXNYRGlnaXQoTCc5JykpOworICBFWFBFQ1RfVFJVRShJc1hEaWdp
dChMJ0EnKSk7CisgIEVYUEVDVF9UUlVFKElzWERpZ2l0KEwnRicpKTsKKyAgRVhQRUNUX1RSVUUo
SXNYRGlnaXQoTCdhJykpOworICBFWFBFQ1RfVFJVRShJc1hEaWdpdChMJ2YnKSk7CisKKyAgRVhQ
RUNUX0ZBTFNFKElzWERpZ2l0KEwnLScpKTsKKyAgRVhQRUNUX0ZBTFNFKElzWERpZ2l0KEwnZycp
KTsKKyAgRVhQRUNUX0ZBTFNFKElzWERpZ2l0KEwnRycpKTsKK30KKworVEVTVChJc1hEaWdpdFRl
c3QsIFJldHVybnNGYWxzZUZvcldpZGVOb25Bc2NpaSkgeworICBFWFBFQ1RfRkFMU0UoSXNYRGln
aXQoc3RhdGljX2Nhc3Q8d2NoYXJfdD4oMHg4MCkpKTsKKyAgRVhQRUNUX0ZBTFNFKElzWERpZ2l0
KHN0YXRpY19jYXN0PHdjaGFyX3Q+KEwnMCcgfCAweDgwKSkpOworICBFWFBFQ1RfRkFMU0UoSXNY
RGlnaXQoc3RhdGljX2Nhc3Q8d2NoYXJfdD4oTCcwJyB8IDB4MTAwKSkpOworfQorCitjbGFzcyBC
YXNlIHsKKyBwdWJsaWM6CisgIC8vIENvcHkgY29uc3RydWN0b3IgYW5kIGFzc2lnbm1lbnQgb3Bl
cmF0b3IgZG8gZXhhY3RseSB3aGF0IHdlIG5lZWQsIHNvIHdlCisgIC8vIHVzZSB0aGVtLgorICBC
YXNlKCkgOiBtZW1iZXJfKDApIHt9CisgIGV4cGxpY2l0IEJhc2UoaW50IG4pIDogbWVtYmVyXyhu
KSB7fQorICB2aXJ0dWFsIH5CYXNlKCkge30KKyAgaW50IG1lbWJlcigpIHsgcmV0dXJuIG1lbWJl
cl87IH0KKworIHByaXZhdGU6CisgIGludCBtZW1iZXJfOworfTsKKworY2xhc3MgRGVyaXZlZCA6
IHB1YmxpYyBCYXNlIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IERlcml2ZWQoaW50IG4pIDogQmFz
ZShuKSB7fQorfTsKKworVEVTVChJbXBsaWNpdENhc3RUZXN0LCBDb252ZXJ0c1BvaW50ZXJzKSB7
CisgIERlcml2ZWQgZGVyaXZlZCgwKTsKKyAgRVhQRUNUX1RSVUUoJmRlcml2ZWQgPT0gOjp0ZXN0
aW5nOjppbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxCYXNlKj4oJmRlcml2ZWQpKTsKK30KKworVEVT
VChJbXBsaWNpdENhc3RUZXN0LCBDYW5Vc2VJbmhlcml0YW5jZSkgeworICBEZXJpdmVkIGRlcml2
ZWQoMSk7CisgIEJhc2UgYmFzZSA9IDo6dGVzdGluZzo6aW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88
QmFzZT4oZGVyaXZlZCk7CisgIEVYUEVDVF9FUShkZXJpdmVkLm1lbWJlcigpLCBiYXNlLm1lbWJl
cigpKTsKK30KKworY2xhc3MgQ2FzdGFibGUgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgQ2FzdGFi
bGUoYm9vbCogY29udmVydGVkKSA6IGNvbnZlcnRlZF8oY29udmVydGVkKSB7fQorICBvcGVyYXRv
ciBCYXNlKCkgeworICAgICpjb252ZXJ0ZWRfID0gdHJ1ZTsKKyAgICByZXR1cm4gQmFzZSgpOwor
ICB9CisKKyBwcml2YXRlOgorICBib29sKiBjb252ZXJ0ZWRfOworfTsKKworVEVTVChJbXBsaWNp
dENhc3RUZXN0LCBDYW5Vc2VOb25Db25zdENhc3RPcGVyYXRvcikgeworICBib29sIGNvbnZlcnRl
ZCA9IGZhbHNlOworICBDYXN0YWJsZSBjYXN0YWJsZSgmY29udmVydGVkKTsKKyAgQmFzZSBiYXNl
ID0gOjp0ZXN0aW5nOjppbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxCYXNlPihjYXN0YWJsZSk7Cisg
IEVYUEVDVF9UUlVFKGNvbnZlcnRlZCk7Cit9CisKK2NsYXNzIENvbnN0Q2FzdGFibGUgeworIHB1
YmxpYzoKKyAgZXhwbGljaXQgQ29uc3RDYXN0YWJsZShib29sKiBjb252ZXJ0ZWQpIDogY29udmVy
dGVkXyhjb252ZXJ0ZWQpIHt9CisgIG9wZXJhdG9yIEJhc2UoKSBjb25zdCB7CisgICAgKmNvbnZl
cnRlZF8gPSB0cnVlOworICAgIHJldHVybiBCYXNlKCk7CisgIH0KKworIHByaXZhdGU6CisgIGJv
b2wqIGNvbnZlcnRlZF87Cit9OworCitURVNUKEltcGxpY2l0Q2FzdFRlc3QsIENhblVzZUNvbnN0
Q2FzdE9wZXJhdG9yT25Db25zdFZhbHVlcykgeworICBib29sIGNvbnZlcnRlZCA9IGZhbHNlOwor
ICBjb25zdCBDb25zdENhc3RhYmxlIGNvbnN0X2Nhc3RhYmxlKCZjb252ZXJ0ZWQpOworICBCYXNl
IGJhc2UgPSA6OnRlc3Rpbmc6OmludGVybmFsOjpJbXBsaWNpdENhc3RfPEJhc2U+KGNvbnN0X2Nh
c3RhYmxlKTsKKyAgRVhQRUNUX1RSVUUoY29udmVydGVkKTsKK30KKworY2xhc3MgQ29uc3RBbmRO
b25Db25zdENhc3RhYmxlIHsKKyBwdWJsaWM6CisgIENvbnN0QW5kTm9uQ29uc3RDYXN0YWJsZShi
b29sKiBjb252ZXJ0ZWQsIGJvb2wqIGNvbnN0X2NvbnZlcnRlZCkKKyAgICAgIDogY29udmVydGVk
Xyhjb252ZXJ0ZWQpLCBjb25zdF9jb252ZXJ0ZWRfKGNvbnN0X2NvbnZlcnRlZCkge30KKyAgb3Bl
cmF0b3IgQmFzZSgpIHsKKyAgICAqY29udmVydGVkXyA9IHRydWU7CisgICAgcmV0dXJuIEJhc2Uo
KTsKKyAgfQorICBvcGVyYXRvciBCYXNlKCkgY29uc3QgeworICAgICpjb25zdF9jb252ZXJ0ZWRf
ID0gdHJ1ZTsKKyAgICByZXR1cm4gQmFzZSgpOworICB9CisKKyBwcml2YXRlOgorICBib29sKiBj
b252ZXJ0ZWRfOworICBib29sKiBjb25zdF9jb252ZXJ0ZWRfOworfTsKKworVEVTVChJbXBsaWNp
dENhc3RUZXN0LCBDYW5TZWxlY3RCZXR3ZWVuQ29uc3RBbmROb25Db25zdENhc3JBcHByb3ByaWF0
ZWx5KSB7CisgIGJvb2wgY29udmVydGVkID0gZmFsc2U7CisgIGJvb2wgY29uc3RfY29udmVydGVk
ID0gZmFsc2U7CisgIENvbnN0QW5kTm9uQ29uc3RDYXN0YWJsZSBjYXN0YWJsZSgmY29udmVydGVk
LCAmY29uc3RfY29udmVydGVkKTsKKyAgQmFzZSBiYXNlID0gOjp0ZXN0aW5nOjppbnRlcm5hbDo6
SW1wbGljaXRDYXN0XzxCYXNlPihjYXN0YWJsZSk7CisgIEVYUEVDVF9UUlVFKGNvbnZlcnRlZCk7
CisgIEVYUEVDVF9GQUxTRShjb25zdF9jb252ZXJ0ZWQpOworCisgIGNvbnZlcnRlZCA9IGZhbHNl
OworICBjb25zdF9jb252ZXJ0ZWQgPSBmYWxzZTsKKyAgY29uc3QgQ29uc3RBbmROb25Db25zdENh
c3RhYmxlIGNvbnN0X2Nhc3RhYmxlKCZjb252ZXJ0ZWQsICZjb25zdF9jb252ZXJ0ZWQpOworICBi
YXNlID0gOjp0ZXN0aW5nOjppbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxCYXNlPihjb25zdF9jYXN0
YWJsZSk7CisgIEVYUEVDVF9GQUxTRShjb252ZXJ0ZWQpOworICBFWFBFQ1RfVFJVRShjb25zdF9j
b252ZXJ0ZWQpOworfQorCitjbGFzcyBUbyB7CisgcHVibGljOgorICBUbyhib29sKiBjb252ZXJ0
ZWQpIHsgKmNvbnZlcnRlZCA9IHRydWU7IH0gIC8vIE5PTElOVAorfTsKKworVEVTVChJbXBsaWNp
dENhc3RUZXN0LCBDYW5Vc2VJbXBsaWNpdENvbnN0cnVjdG9yKSB7CisgIGJvb2wgY29udmVydGVk
ID0gZmFsc2U7CisgIFRvIHRvID0gOjp0ZXN0aW5nOjppbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxU
bz4oJmNvbnZlcnRlZCk7CisgICh2b2lkKXRvOworICBFWFBFQ1RfVFJVRShjb252ZXJ0ZWQpOwor
fQorCitURVNUKEl0ZXJhdG9yVHJhaXRzVGVzdCwgV29ya3NGb3JTVExDb250YWluZXJJdGVyYXRv
cnMpIHsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPGludCwKKyAgICAgIEl0ZXJhdG9yVHJhaXRzPCA6
OnN0ZDo6dmVjdG9yPGludD46OmNvbnN0X2l0ZXJhdG9yPjo6dmFsdWVfdHlwZT4oKTsKKyAgU3Rh
dGljQXNzZXJ0VHlwZUVxPGJvb2wsCisgICAgICBJdGVyYXRvclRyYWl0czwgOjpzdGQ6Omxpc3Q8
Ym9vbD46Oml0ZXJhdG9yPjo6dmFsdWVfdHlwZT4oKTsKK30KKworVEVTVChJdGVyYXRvclRyYWl0
c1Rlc3QsIFdvcmtzRm9yUG9pbnRlclRvTm9uQ29uc3QpIHsKKyAgU3RhdGljQXNzZXJ0VHlwZUVx
PGNoYXIsIEl0ZXJhdG9yVHJhaXRzPGNoYXIqPjo6dmFsdWVfdHlwZT4oKTsKKyAgU3RhdGljQXNz
ZXJ0VHlwZUVxPGNvbnN0IHZvaWQqLCBJdGVyYXRvclRyYWl0czxjb25zdCB2b2lkKio+Ojp2YWx1
ZV90eXBlPigpOworfQorCitURVNUKEl0ZXJhdG9yVHJhaXRzVGVzdCwgV29ya3NGb3JQb2ludGVy
VG9Db25zdCkgeworICBTdGF0aWNBc3NlcnRUeXBlRXE8Y2hhciwgSXRlcmF0b3JUcmFpdHM8Y29u
c3QgY2hhcio+Ojp2YWx1ZV90eXBlPigpOworICBTdGF0aWNBc3NlcnRUeXBlRXE8Y29uc3Qgdm9p
ZCosCisgICAgICBJdGVyYXRvclRyYWl0czxjb25zdCB2b2lkKiBjb25zdCo+Ojp2YWx1ZV90eXBl
PigpOworfQorCisvLyBUZXN0cyB0aGF0IHRoZSBlbGVtZW50X3R5cGUgdHlwZWRlZiBpcyBhdmFp
bGFibGUgaW4gc2NvcGVkX3B0ciBhbmQgcmVmZXJzCisvLyB0byB0aGUgcGFyYW1ldGVyIHR5cGUu
CitURVNUKFNjb3BlZFB0clRlc3QsIERlZmluZXNFbGVtZW50VHlwZSkgeworICBTdGF0aWNBc3Nl
cnRUeXBlRXE8aW50LCA6OnRlc3Rpbmc6OmludGVybmFsOjpzY29wZWRfcHRyPGludD46OmVsZW1l
bnRfdHlwZT4oKTsKK30KKworLy8gVE9ETyh2bGFkbEBnb29nbGUuY29tKTogSW1wbGVtZW50IFRI
RSBSRVNUIG9mIHNjb3BlZF9wdHIgdGVzdHMuCisKK1RFU1QoR3Rlc3RDaGVja1N5bnRheFRlc3Qs
IEJlaGF2ZXNMaWtlQVNpbmdsZVN0YXRlbWVudCkgeworICBpZiAoQWx3YXlzRmFsc2UoKSkKKyAg
ICBHVEVTVF9DSEVDS18oZmFsc2UpIDw8ICJUaGlzIHNob3VsZCBuZXZlciBiZSBleGVjdXRlZDsg
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIkl0J3MgYSBjb21waWxhdGlvbiB0ZXN0IG9u
bHkuIjsKKworICBpZiAoQWx3YXlzVHJ1ZSgpKQorICAgIEdURVNUX0NIRUNLXyh0cnVlKTsKKyAg
ZWxzZQorICAgIDsgIC8vIE5PTElOVAorCisgIGlmIChBbHdheXNGYWxzZSgpKQorICAgIDsgIC8v
IE5PTElOVAorICBlbHNlCisgICAgR1RFU1RfQ0hFQ0tfKHRydWUpIDw8ICIiOworfQorCitURVNU
KEd0ZXN0Q2hlY2tTeW50YXhUZXN0LCBXb3Jrc1dpdGhTd2l0Y2gpIHsKKyAgc3dpdGNoICgwKSB7
CisgICAgY2FzZSAxOgorICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIEdURVNUX0NI
RUNLXyh0cnVlKTsKKyAgfQorCisgIHN3aXRjaCAoMCkKKyAgICBjYXNlIDA6CisgICAgICBHVEVT
VF9DSEVDS18odHJ1ZSkgPDwgIkNoZWNrIGZhaWxlZCBpbiBzd2l0Y2ggY2FzZSI7Cit9CisKKy8v
IFZlcmlmaWVzIGJlaGF2aW9yIG9mIEZvcm1hdEZpbGVMb2NhdGlvbi4KK1RFU1QoRm9ybWF0Rmls
ZUxvY2F0aW9uVGVzdCwgRm9ybWF0c0ZpbGVMb2NhdGlvbikgeworICBFWFBFQ1RfUFJFRF9GT1JN
QVQyKElzU3Vic3RyaW5nLCAiZm9vLmNjIiwgRm9ybWF0RmlsZUxvY2F0aW9uKCJmb28uY2MiLCA0
MikpOworICBFWFBFQ1RfUFJFRF9GT1JNQVQyKElzU3Vic3RyaW5nLCAiNDIiLCBGb3JtYXRGaWxl
TG9jYXRpb24oImZvby5jYyIsIDQyKSk7Cit9CisKK1RFU1QoRm9ybWF0RmlsZUxvY2F0aW9uVGVz
dCwgRm9ybWF0c1Vua25vd25GaWxlKSB7CisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoCisgICAgICBJ
c1N1YnN0cmluZywgInVua25vd24gZmlsZSIsIEZvcm1hdEZpbGVMb2NhdGlvbihOVUxMLCA0Mikp
OworICBFWFBFQ1RfUFJFRF9GT1JNQVQyKElzU3Vic3RyaW5nLCAiNDIiLCBGb3JtYXRGaWxlTG9j
YXRpb24oTlVMTCwgNDIpKTsKK30KKworVEVTVChGb3JtYXRGaWxlTG9jYXRpb25UZXN0LCBGb3Jt
YXRzVWtub3duTGluZSkgeworICBFWFBFQ1RfRVEoImZvby5jYzoiLCBGb3JtYXRGaWxlTG9jYXRp
b24oImZvby5jYyIsIC0xKSk7Cit9CisKK1RFU1QoRm9ybWF0RmlsZUxvY2F0aW9uVGVzdCwgRm9y
bWF0c1Vrbm93bkZpbGVBbmRMaW5lKSB7CisgIEVYUEVDVF9FUSgidW5rbm93biBmaWxlOiIsIEZv
cm1hdEZpbGVMb2NhdGlvbihOVUxMLCAtMSkpOworfQorCisvLyBWZXJpZmllcyBiZWhhdmlvciBv
ZiBGb3JtYXRDb21waWxlckluZGVwZW5kZW50RmlsZUxvY2F0aW9uLgorVEVTVChGb3JtYXRDb21w
aWxlckluZGVwZW5kZW50RmlsZUxvY2F0aW9uVGVzdCwgRm9ybWF0c0ZpbGVMb2NhdGlvbikgewor
ICBFWFBFQ1RfRVEoImZvby5jYzo0MiIsIEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9j
YXRpb24oImZvby5jYyIsIDQyKSk7Cit9CisKK1RFU1QoRm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVu
dEZpbGVMb2NhdGlvblRlc3QsIEZvcm1hdHNVa25vd25GaWxlKSB7CisgIEVYUEVDVF9FUSgidW5r
bm93biBmaWxlOjQyIiwKKyAgICAgICAgICAgIEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxl
TG9jYXRpb24oTlVMTCwgNDIpKTsKK30KKworVEVTVChGb3JtYXRDb21waWxlckluZGVwZW5kZW50
RmlsZUxvY2F0aW9uVGVzdCwgRm9ybWF0c1Vrbm93bkxpbmUpIHsKKyAgRVhQRUNUX0VRKCJmb28u
Y2MiLCBGb3JtYXRDb21waWxlckluZGVwZW5kZW50RmlsZUxvY2F0aW9uKCJmb28uY2MiLCAtMSkp
OworfQorCitURVNUKEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb25UZXN0LCBG
b3JtYXRzVWtub3duRmlsZUFuZExpbmUpIHsKKyAgRVhQRUNUX0VRKCJ1bmtub3duIGZpbGUiLCBG
b3JtYXRDb21waWxlckluZGVwZW5kZW50RmlsZUxvY2F0aW9uKE5VTEwsIC0xKSk7Cit9CisKKyNp
ZiBHVEVTVF9PU19MSU5VWCB8fCBHVEVTVF9PU19NQUMgfHwgR1RFU1RfT1NfUU5YCit2b2lkKiBU
aHJlYWRGdW5jKHZvaWQqIGRhdGEpIHsKKyAgaW50ZXJuYWw6Ok11dGV4KiBtdXRleCA9IHN0YXRp
Y19jYXN0PGludGVybmFsOjpNdXRleCo+KGRhdGEpOworICBtdXRleC0+TG9jaygpOworICBtdXRl
eC0+VW5sb2NrKCk7CisgIHJldHVybiBOVUxMOworfQorCitURVNUKEdldFRocmVhZENvdW50VGVz
dCwgUmV0dXJuc0NvcnJlY3RWYWx1ZSkgeworICBjb25zdCBzaXplX3Qgc3RhcnRpbmdfY291bnQg
PSBHZXRUaHJlYWRDb3VudCgpOworICBwdGhyZWFkX3QgICAgICAgdGhyZWFkX2lkOworCisgIGlu
dGVybmFsOjpNdXRleCBtdXRleDsKKyAgeworICAgIGludGVybmFsOjpNdXRleExvY2sgbG9jaygm
bXV0ZXgpOworICAgIHB0aHJlYWRfYXR0cl90ICBhdHRyOworICAgIEFTU0VSVF9FUSgwLCBwdGhy
ZWFkX2F0dHJfaW5pdCgmYXR0cikpOworICAgIEFTU0VSVF9FUSgwLCBwdGhyZWFkX2F0dHJfc2V0
ZGV0YWNoc3RhdGUoJmF0dHIsIFBUSFJFQURfQ1JFQVRFX0pPSU5BQkxFKSk7CisKKyAgICBjb25z
dCBpbnQgc3RhdHVzID0gcHRocmVhZF9jcmVhdGUoJnRocmVhZF9pZCwgJmF0dHIsICZUaHJlYWRG
dW5jLCAmbXV0ZXgpOworICAgIEFTU0VSVF9FUSgwLCBwdGhyZWFkX2F0dHJfZGVzdHJveSgmYXR0
cikpOworICAgIEFTU0VSVF9FUSgwLCBzdGF0dXMpOworICAgIEVYUEVDVF9FUShzdGFydGluZ19j
b3VudCArIDEsIEdldFRocmVhZENvdW50KCkpOworICB9CisKKyAgdm9pZCogZHVtbXk7CisgIEFT
U0VSVF9FUSgwLCBwdGhyZWFkX2pvaW4odGhyZWFkX2lkLCAmZHVtbXkpKTsKKworICAvLyBUaGUg
T1MgbWF5IG5vdCBpbW1lZGlhdGVseSByZXBvcnQgdGhlIHVwZGF0ZWQgdGhyZWFkIGNvdW50IGFm
dGVyCisgIC8vIGpvaW5pbmcgYSB0aHJlYWQsIGNhdXNpbmcgZmxha2luZXNzIGluIHRoaXMgdGVz
dC4gVG8gY291bnRlciB0aGF0LCB3ZQorICAvLyB3YWl0IGZvciB1cCB0byAuNSBzZWNvbmRzIGZv
ciB0aGUgT1MgdG8gcmVwb3J0IHRoZSBjb3JyZWN0IHZhbHVlLgorICBmb3IgKGludCBpID0gMDsg
aSA8IDU7ICsraSkgeworICAgIGlmIChHZXRUaHJlYWRDb3VudCgpID09IHN0YXJ0aW5nX2NvdW50
KQorICAgICAgYnJlYWs7CisKKyAgICBTbGVlcE1pbGxpc2Vjb25kcygxMDApOworICB9CisKKyAg
RVhQRUNUX0VRKHN0YXJ0aW5nX2NvdW50LCBHZXRUaHJlYWRDb3VudCgpKTsKK30KKyNlbHNlCitU
RVNUKEdldFRocmVhZENvdW50VGVzdCwgUmV0dXJuc1plcm9XaGVuVW5hYmxlVG9Db3VudFRocmVh
ZHMpIHsKKyAgRVhQRUNUX0VRKDBVLCBHZXRUaHJlYWRDb3VudCgpKTsKK30KKyNlbmRpZiAgLy8g
R1RFU1RfT1NfTElOVVggfHwgR1RFU1RfT1NfTUFDIHx8IEdURVNUX09TX1FOWAorCitURVNUKEd0
ZXN0Q2hlY2tEZWF0aFRlc3QsIERpZXNXaXRoQ29ycmVjdE91dHB1dE9uRmFpbHVyZSkgeworICBj
b25zdCBib29sIGFfZmFsc2VfY29uZGl0aW9uID0gZmFsc2U7CisgIGNvbnN0IGNoYXIgcmVnZXhb
XSA9CisjaWZkZWYgX01TQ19WRVIKKyAgICAgImd0ZXN0LXBvcnRfdGVzdFxcLmNjXFwoXFxkK1xc
KToiCisjZWxpZiBHVEVTVF9VU0VTX1BPU0lYX1JFCisgICAgICJndGVzdC1wb3J0X3Rlc3RcXC5j
YzpbMC05XSsiCisjZWxzZQorICAgICAiZ3Rlc3QtcG9ydF90ZXN0XFwuY2M6XFxkKyIKKyNlbmRp
ZiAgLy8gX01TQ19WRVIKKyAgICAgIi4qYV9mYWxzZV9jb25kaXRpb24uKkV4dHJhIGluZm8uKiI7
CisKKyAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChHVEVTVF9DSEVDS18oYV9mYWxzZV9jb25k
aXRpb24pIDw8ICJFeHRyYSBpbmZvIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdl
eCk7Cit9CisKKyNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAorCitURVNUKEd0ZXN0Q2hlY2tEZWF0
aFRlc3QsIExpdmVzU2lsZW50bHlPblN1Y2Nlc3MpIHsKKyAgRVhQRUNUX0VYSVQoeworICAgICAg
R1RFU1RfQ0hFQ0tfKHRydWUpIDw8ICJFeHRyYSBpbmZvIjsKKyAgICAgIDo6c3RkOjpjZXJyIDw8
ICJTdWNjZXNzXG4iOworICAgICAgZXhpdCgwKTsgfSwKKyAgICAgIDo6dGVzdGluZzo6RXhpdGVk
V2l0aENvZGUoMCksICJTdWNjZXNzIik7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRI
X1RFU1QKKworLy8gVmVyaWZpZXMgdGhhdCBHb29nbGUgVGVzdCBjaG9vc2UgcmVndWxhciBleHBy
ZXNzaW9uIGVuZ2luZSBhcHByb3ByaWF0ZSB0bworLy8gdGhlIHBsYXRmb3JtLiBUaGUgdGVzdCB3
aWxsIHByb2R1Y2UgY29tcGlsZXIgZXJyb3JzIGluIGNhc2Ugb2YgZmFpbHVyZS4KKy8vIEZvciBz
aW1wbGljaXR5LCB3ZSBvbmx5IGNvdmVyIHRoZSBtb3N0IGltcG9ydGFudCBwbGF0Zm9ybXMgaGVy
ZS4KK1RFU1QoUmVnZXhFbmdpbmVTZWxlY3Rpb25UZXN0LCBTZWxlY3RzQ29ycmVjdFJlZ2V4RW5n
aW5lKSB7CisjaWYgIUdURVNUX1VTRVNfUENSRQorIyBpZiBHVEVTVF9IQVNfUE9TSVhfUkUKKwor
ICBFWFBFQ1RfVFJVRShHVEVTVF9VU0VTX1BPU0lYX1JFKTsKKworIyBlbHNlCisKKyAgRVhQRUNU
X1RSVUUoR1RFU1RfVVNFU19TSU1QTEVfUkUpOworCisjIGVuZGlmCisjZW5kaWYgIC8vICFHVEVT
VF9VU0VTX1BDUkUKK30KKworI2lmIEdURVNUX1VTRVNfUE9TSVhfUkUKKworIyBpZiBHVEVTVF9I
QVNfVFlQRURfVEVTVAorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgU3RyPgorY2xhc3MgUkVUZXN0IDog
cHVibGljIDo6dGVzdGluZzo6VGVzdCB7fTsKKworLy8gRGVmaW5lcyBTdHJpbmdUeXBlcyBhcyB0
aGUgbGlzdCBvZiBhbGwgc3RyaW5nIHR5cGVzIHRoYXQgY2xhc3MgUkUKKy8vIHN1cHBvcnRzLgor
dHlwZWRlZiB0ZXN0aW5nOjpUeXBlczwKKyAgICA6OnN0ZDo6c3RyaW5nLAorIyAgaWYgR1RFU1Rf
SEFTX0dMT0JBTF9TVFJJTkcKKyAgICA6OnN0cmluZywKKyMgIGVuZGlmICAvLyBHVEVTVF9IQVNf
R0xPQkFMX1NUUklORworICAgIGNvbnN0IGNoYXIqPiBTdHJpbmdUeXBlczsKKworVFlQRURfVEVT
VF9DQVNFKFJFVGVzdCwgU3RyaW5nVHlwZXMpOworCisvLyBUZXN0cyBSRSdzIGltcGxpY2l0IGNv
bnN0cnVjdG9ycy4KK1RZUEVEX1RFU1QoUkVUZXN0LCBJbXBsaWNpdENvbnN0cnVjdG9yV29ya3Mp
IHsKKyAgY29uc3QgUkUgZW1wdHkoVHlwZVBhcmFtKCIiKSk7CisgIEVYUEVDVF9TVFJFUSgiIiwg
ZW1wdHkucGF0dGVybigpKTsKKworICBjb25zdCBSRSBzaW1wbGUoVHlwZVBhcmFtKCJoZWxsbyIp
KTsKKyAgRVhQRUNUX1NUUkVRKCJoZWxsbyIsIHNpbXBsZS5wYXR0ZXJuKCkpOworCisgIGNvbnN0
IFJFIG5vcm1hbChUeXBlUGFyYW0oIi4qKFxcdyspIikpOworICBFWFBFQ1RfU1RSRVEoIi4qKFxc
dyspIiwgbm9ybWFsLnBhdHRlcm4oKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgUkUncyBjb25zdHJ1
Y3RvcnMgcmVqZWN0IGludmFsaWQgcmVndWxhciBleHByZXNzaW9ucy4KK1RZUEVEX1RFU1QoUkVU
ZXN0LCBSZWplY3RzSW52YWxpZFJlZ2V4KSB7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsK
KyAgICBjb25zdCBSRSBpbnZhbGlkKFR5cGVQYXJhbSgiPyIpKTsKKyAgfSwgIlwiP1wiIGlzIG5v
dCBhIHZhbGlkIFBPU0lYIEV4dGVuZGVkIHJlZ3VsYXIgZXhwcmVzc2lvbi4iKTsKK30KKworLy8g
VGVzdHMgUkU6OkZ1bGxNYXRjaCgpLgorVFlQRURfVEVTVChSRVRlc3QsIEZ1bGxNYXRjaFdvcmtz
KSB7CisgIGNvbnN0IFJFIGVtcHR5KFR5cGVQYXJhbSgiIikpOworICBFWFBFQ1RfVFJVRShSRTo6
RnVsbE1hdGNoKFR5cGVQYXJhbSgiIiksIGVtcHR5KSk7CisgIEVYUEVDVF9GQUxTRShSRTo6RnVs
bE1hdGNoKFR5cGVQYXJhbSgiYSIpLCBlbXB0eSkpOworCisgIGNvbnN0IFJFIHJlKFR5cGVQYXJh
bSgiYS4qeiIpKTsKKyAgRVhQRUNUX1RSVUUoUkU6OkZ1bGxNYXRjaChUeXBlUGFyYW0oImF6Iiks
IHJlKSk7CisgIEVYUEVDVF9UUlVFKFJFOjpGdWxsTWF0Y2goVHlwZVBhcmFtKCJheHl6IiksIHJl
KSk7CisgIEVYUEVDVF9GQUxTRShSRTo6RnVsbE1hdGNoKFR5cGVQYXJhbSgiYmF6IiksIHJlKSk7
CisgIEVYUEVDVF9GQUxTRShSRTo6RnVsbE1hdGNoKFR5cGVQYXJhbSgiYXp5IiksIHJlKSk7Cit9
CisKKy8vIFRlc3RzIFJFOjpQYXJ0aWFsTWF0Y2goKS4KK1RZUEVEX1RFU1QoUkVUZXN0LCBQYXJ0
aWFsTWF0Y2hXb3JrcykgeworICBjb25zdCBSRSBlbXB0eShUeXBlUGFyYW0oIiIpKTsKKyAgRVhQ
RUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaChUeXBlUGFyYW0oIiIpLCBlbXB0eSkpOworICBFWFBF
Q1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKFR5cGVQYXJhbSgiYSIpLCBlbXB0eSkpOworCisgIGNv
bnN0IFJFIHJlKFR5cGVQYXJhbSgiYS4qeiIpKTsKKyAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxN
YXRjaChUeXBlUGFyYW0oImF6IiksIHJlKSk7CisgIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0
Y2goVHlwZVBhcmFtKCJheHl6IiksIHJlKSk7CisgIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0
Y2goVHlwZVBhcmFtKCJiYXoiKSwgcmUpKTsKKyAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRj
aChUeXBlUGFyYW0oImF6eSIpLCByZSkpOworICBFWFBFQ1RfRkFMU0UoUkU6OlBhcnRpYWxNYXRj
aChUeXBlUGFyYW0oInp6YSIpLCByZSkpOworfQorCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfVFlQ
RURfVEVTVAorCisjZWxpZiBHVEVTVF9VU0VTX1NJTVBMRV9SRQorCitURVNUKElzSW5TZXRUZXN0
LCBOdWxDaGFySXNOb3RJbkFueVNldCkgeworICBFWFBFQ1RfRkFMU0UoSXNJblNldCgnXDAnLCAi
IikpOworICBFWFBFQ1RfRkFMU0UoSXNJblNldCgnXDAnLCAiXDAiKSk7CisgIEVYUEVDVF9GQUxT
RShJc0luU2V0KCdcMCcsICJhIikpOworfQorCitURVNUKElzSW5TZXRUZXN0LCBXb3Jrc0Zvck5v
bk51bENoYXJzKSB7CisgIEVYUEVDVF9GQUxTRShJc0luU2V0KCdhJywgIkFiIikpOworICBFWFBF
Q1RfRkFMU0UoSXNJblNldCgnYycsICIiKSk7CisKKyAgRVhQRUNUX1RSVUUoSXNJblNldCgnYics
ICJiY2QiKSk7CisgIEVYUEVDVF9UUlVFKElzSW5TZXQoJ2InLCAiYWIiKSk7Cit9CisKK1RFU1Qo
SXNBc2NpaURpZ2l0VGVzdCwgSXNGYWxzZUZvck5vbkRpZ2l0KSB7CisgIEVYUEVDVF9GQUxTRShJ
c0FzY2lpRGlnaXQoJ1wwJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaURpZ2l0KCcgJykpOwor
ICBFWFBFQ1RfRkFMU0UoSXNBc2NpaURpZ2l0KCcrJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2Np
aURpZ2l0KCctJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaURpZ2l0KCcuJykpOworICBFWFBF
Q1RfRkFMU0UoSXNBc2NpaURpZ2l0KCdhJykpOworfQorCitURVNUKElzQXNjaWlEaWdpdFRlc3Qs
IElzVHJ1ZUZvckRpZ2l0KSB7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlEaWdpdCgnMCcpKTsKKyAg
RVhQRUNUX1RSVUUoSXNBc2NpaURpZ2l0KCcxJykpOworICBFWFBFQ1RfVFJVRShJc0FzY2lpRGln
aXQoJzUnKSk7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlEaWdpdCgnOScpKTsKK30KKworVEVTVChJ
c0FzY2lpUHVuY3RUZXN0LCBJc0ZhbHNlRm9yTm9uUHVuY3QpIHsKKyAgRVhQRUNUX0ZBTFNFKElz
QXNjaWlQdW5jdCgnXDAnKSk7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpUHVuY3QoJyAnKSk7Cisg
IEVYUEVDVF9GQUxTRShJc0FzY2lpUHVuY3QoJ1xuJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2Np
aVB1bmN0KCdhJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVB1bmN0KCcwJykpOworfQorCitU
RVNUKElzQXNjaWlQdW5jdFRlc3QsIElzVHJ1ZUZvclB1bmN0KSB7CisgIGZvciAoY29uc3QgY2hh
ciogcCA9ICJeLSFcIiMkJSYnKCkqKywuLzo7PD0+P0BbXFxdX2B7fH1+IjsgKnA7IHArKykgewor
ICAgIEVYUEVDVF9QUkVEMShJc0FzY2lpUHVuY3QsICpwKTsKKyAgfQorfQorCitURVNUKElzUmVw
ZWF0VGVzdCwgSXNGYWxzZUZvck5vblJlcGVhdENoYXIpIHsKKyAgRVhQRUNUX0ZBTFNFKElzUmVw
ZWF0KCdcMCcpKTsKKyAgRVhQRUNUX0ZBTFNFKElzUmVwZWF0KCcgJykpOworICBFWFBFQ1RfRkFM
U0UoSXNSZXBlYXQoJ2EnKSk7CisgIEVYUEVDVF9GQUxTRShJc1JlcGVhdCgnMScpKTsKKyAgRVhQ
RUNUX0ZBTFNFKElzUmVwZWF0KCctJykpOworfQorCitURVNUKElzUmVwZWF0VGVzdCwgSXNUcnVl
Rm9yUmVwZWF0Q2hhcikgeworICBFWFBFQ1RfVFJVRShJc1JlcGVhdCgnPycpKTsKKyAgRVhQRUNU
X1RSVUUoSXNSZXBlYXQoJyonKSk7CisgIEVYUEVDVF9UUlVFKElzUmVwZWF0KCcrJykpOworfQor
CitURVNUKElzQXNjaWlXaGl0ZVNwYWNlVGVzdCwgSXNGYWxzZUZvck5vbldoaXRlU3BhY2UpIHsK
KyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlXaGl0ZVNwYWNlKCdcMCcpKTsKKyAgRVhQRUNUX0ZBTFNF
KElzQXNjaWlXaGl0ZVNwYWNlKCdhJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVdoaXRlU3Bh
Y2UoJzEnKSk7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpV2hpdGVTcGFjZSgnKycpKTsKKyAgRVhQ
RUNUX0ZBTFNFKElzQXNjaWlXaGl0ZVNwYWNlKCdfJykpOworfQorCitURVNUKElzQXNjaWlXaGl0
ZVNwYWNlVGVzdCwgSXNUcnVlRm9yV2hpdGVTcGFjZSkgeworICBFWFBFQ1RfVFJVRShJc0FzY2lp
V2hpdGVTcGFjZSgnICcpKTsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdoaXRlU3BhY2UoJ1xuJykp
OworICBFWFBFQ1RfVFJVRShJc0FzY2lpV2hpdGVTcGFjZSgnXHInKSk7CisgIEVYUEVDVF9UUlVF
KElzQXNjaWlXaGl0ZVNwYWNlKCdcdCcpKTsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdoaXRlU3Bh
Y2UoJ1x2JykpOworICBFWFBFQ1RfVFJVRShJc0FzY2lpV2hpdGVTcGFjZSgnXGYnKSk7Cit9CisK
K1RFU1QoSXNBc2NpaVdvcmRDaGFyVGVzdCwgSXNGYWxzZUZvck5vbldvcmRDaGFyKSB7CisgIEVY
UEVDVF9GQUxTRShJc0FzY2lpV29yZENoYXIoJ1wwJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2Np
aVdvcmRDaGFyKCcrJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVdvcmRDaGFyKCcuJykpOwor
ICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVdvcmRDaGFyKCcgJykpOworICBFWFBFQ1RfRkFMU0UoSXNB
c2NpaVdvcmRDaGFyKCdcbicpKTsKK30KKworVEVTVChJc0FzY2lpV29yZENoYXJUZXN0LCBJc1Ry
dWVGb3JMZXR0ZXIpIHsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdvcmRDaGFyKCdhJykpOworICBF
WFBFQ1RfVFJVRShJc0FzY2lpV29yZENoYXIoJ2InKSk7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlX
b3JkQ2hhcignQScpKTsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdvcmRDaGFyKCdaJykpOworfQor
CitURVNUKElzQXNjaWlXb3JkQ2hhclRlc3QsIElzVHJ1ZUZvckRpZ2l0KSB7CisgIEVYUEVDVF9U
UlVFKElzQXNjaWlXb3JkQ2hhcignMCcpKTsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdvcmRDaGFy
KCcxJykpOworICBFWFBFQ1RfVFJVRShJc0FzY2lpV29yZENoYXIoJzcnKSk7CisgIEVYUEVDVF9U
UlVFKElzQXNjaWlXb3JkQ2hhcignOScpKTsKK30KKworVEVTVChJc0FzY2lpV29yZENoYXJUZXN0
LCBJc1RydWVGb3JVbmRlcnNjb3JlKSB7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlXb3JkQ2hhcign
XycpKTsKK30KKworVEVTVChJc1ZhbGlkRXNjYXBlVGVzdCwgSXNGYWxzZUZvck5vblByaW50YWJs
ZSkgeworICBFWFBFQ1RfRkFMU0UoSXNWYWxpZEVzY2FwZSgnXDAnKSk7CisgIEVYUEVDVF9GQUxT
RShJc1ZhbGlkRXNjYXBlKCdcMDA3JykpOworfQorCitURVNUKElzVmFsaWRFc2NhcGVUZXN0LCBJ
c0ZhbHNlRm9yRGlnaXQpIHsKKyAgRVhQRUNUX0ZBTFNFKElzVmFsaWRFc2NhcGUoJzAnKSk7Cisg
IEVYUEVDVF9GQUxTRShJc1ZhbGlkRXNjYXBlKCc5JykpOworfQorCitURVNUKElzVmFsaWRFc2Nh
cGVUZXN0LCBJc0ZhbHNlRm9yV2hpdGVTcGFjZSkgeworICBFWFBFQ1RfRkFMU0UoSXNWYWxpZEVz
Y2FwZSgnICcpKTsKKyAgRVhQRUNUX0ZBTFNFKElzVmFsaWRFc2NhcGUoJ1xuJykpOworfQorCitU
RVNUKElzVmFsaWRFc2NhcGVUZXN0LCBJc0ZhbHNlRm9yU29tZUxldHRlcikgeworICBFWFBFQ1Rf
RkFMU0UoSXNWYWxpZEVzY2FwZSgnYScpKTsKKyAgRVhQRUNUX0ZBTFNFKElzVmFsaWRFc2NhcGUo
J1onKSk7Cit9CisKK1RFU1QoSXNWYWxpZEVzY2FwZVRlc3QsIElzVHJ1ZUZvclB1bmN0KSB7Cisg
IEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJy4nKSk7CisgIEVYUEVDVF9UUlVFKElzVmFsaWRF
c2NhcGUoJy0nKSk7CisgIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJ14nKSk7CisgIEVYUEVD
VF9UUlVFKElzVmFsaWRFc2NhcGUoJyQnKSk7CisgIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUo
JygnKSk7CisgIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJ10nKSk7CisgIEVYUEVDVF9UUlVF
KElzVmFsaWRFc2NhcGUoJ3snKSk7CisgIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJ3wnKSk7
Cit9CisKK1RFU1QoSXNWYWxpZEVzY2FwZVRlc3QsIElzVHJ1ZUZvclNvbWVMZXR0ZXIpIHsKKyAg
RVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnZCcpKTsKKyAgRVhQRUNUX1RSVUUoSXNWYWxpZEVz
Y2FwZSgnRCcpKTsKKyAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgncycpKTsKKyAgRVhQRUNU
X1RSVUUoSXNWYWxpZEVzY2FwZSgnUycpKTsKKyAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgn
dycpKTsKKyAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnVycpKTsKK30KKworVEVTVChBdG9t
TWF0Y2hlc0NoYXJUZXN0LCBFc2NhcGVkUHVuY3QpIHsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRj
aGVzQ2hhcih0cnVlLCAnXFwnLCAnXDAnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0No
YXIodHJ1ZSwgJ1xcJywgJyAnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1
ZSwgJ18nLCAnLicpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnLics
ICdhJykpOworCisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnXFwnLCAnXFwn
KSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnXycsICdfJykpOworICBF
WFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJysnLCAnKycpKTsKKyAgRVhQRUNUX1RS
VUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICcuJywgJy4nKSk7Cit9CisKK1RFU1QoQXRvbU1hdGNo
ZXNDaGFyVGVzdCwgRXNjYXBlZF9kKSB7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIo
dHJ1ZSwgJ2QnLCAnXDAnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwg
J2QnLCAnYScpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnZCcsICcu
JykpOworCisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnZCcsICcwJykpOwor
ICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ2QnLCAnOScpKTsKK30KKworVEVT
VChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBFc2NhcGVkX0QpIHsKKyAgRVhQRUNUX0ZBTFNFKEF0b21N
YXRjaGVzQ2hhcih0cnVlLCAnRCcsICcwJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXND
aGFyKHRydWUsICdEJywgJzknKSk7CisKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRy
dWUsICdEJywgJ1wwJykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ0Qn
LCAnYScpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdEJywgJy0nKSk7
Cit9CisKK1RFU1QoQXRvbU1hdGNoZXNDaGFyVGVzdCwgRXNjYXBlZF9zKSB7CisgIEVYUEVDVF9G
QUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3MnLCAnXDAnKSk7CisgIEVYUEVDVF9GQUxTRShB
dG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3MnLCAnYScpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRj
aGVzQ2hhcih0cnVlLCAncycsICcuJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFy
KHRydWUsICdzJywgJzknKSk7CisKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUs
ICdzJywgJyAnKSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncycsICdc
bicpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdzJywgJ1x0JykpOwor
fQorCitURVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIEVzY2FwZWRfUykgeworICBFWFBFQ1RfRkFM
U0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdTJywgJyAnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9t
TWF0Y2hlc0NoYXIodHJ1ZSwgJ1MnLCAnXHInKSk7CisKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNo
ZXNDaGFyKHRydWUsICdTJywgJ1wwJykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIo
dHJ1ZSwgJ1MnLCAnYScpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdT
JywgJzknKSk7Cit9CisKK1RFU1QoQXRvbU1hdGNoZXNDaGFyVGVzdCwgRXNjYXBlZF93KSB7Cisg
IEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3cnLCAnXDAnKSk7CisgIEVYUEVD
VF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3cnLCAnKycpKTsKKyAgRVhQRUNUX0ZBTFNF
KEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndycsICcgJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1h
dGNoZXNDaGFyKHRydWUsICd3JywgJ1xuJykpOworCisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVz
Q2hhcih0cnVlLCAndycsICcwJykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1
ZSwgJ3cnLCAnYicpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd3Jywg
J0MnKSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndycsICdfJykpOwor
fQorCitURVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIEVzY2FwZWRfVykgeworICBFWFBFQ1RfRkFM
U0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdXJywgJ0EnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9t
TWF0Y2hlc0NoYXIodHJ1ZSwgJ1cnLCAnYicpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVz
Q2hhcih0cnVlLCAnVycsICc5JykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRy
dWUsICdXJywgJ18nKSk7CisKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdX
JywgJ1wwJykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1cnLCAnKicp
KTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdXJywgJ1xuJykpOworfQor
CitURVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIEVzY2FwZWRXaGl0ZVNwYWNlKSB7CisgIEVYUEVD
VF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ2YnLCAnXDAnKSk7CisgIEVYUEVDVF9GQUxT
RShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ2YnLCAnXG4nKSk7CisgIEVYUEVDVF9GQUxTRShBdG9t
TWF0Y2hlc0NoYXIodHJ1ZSwgJ24nLCAnXDAnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hl
c0NoYXIodHJ1ZSwgJ24nLCAnXHInKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIo
dHJ1ZSwgJ3InLCAnXDAnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwg
J3InLCAnYScpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndCcsICdc
MCcpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndCcsICd0JykpOwor
ICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd2JywgJ1wwJykpOworICBFWFBF
Q1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd2JywgJ1xmJykpOworCisgIEVYUEVDVF9U
UlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnZicsICdcZicpKTsKKyAgRVhQRUNUX1RSVUUoQXRv
bU1hdGNoZXNDaGFyKHRydWUsICduJywgJ1xuJykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hl
c0NoYXIodHJ1ZSwgJ3InLCAnXHInKSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0
cnVlLCAndCcsICdcdCcpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd2
JywgJ1x2JykpOworfQorCitURVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIFVuZXNjYXBlZERvdCkg
eworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnLicsICdcbicpKTsKKwor
ICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICcuJywgJ1wwJykpOworICBFWFBF
Q1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICcuJywgJy4nKSk7CisgIEVYUEVDVF9UUlVF
KEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJy4nLCAnYScpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1h
dGNoZXNDaGFyKGZhbHNlLCAnLicsICcgJykpOworfQorCitURVNUKEF0b21NYXRjaGVzQ2hhclRl
c3QsIFVuZXNjYXBlZENoYXIpIHsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcihmYWxz
ZSwgJ2EnLCAnXDAnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICdh
JywgJ2InKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICckJywgJ2En
KSk7CisKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnJCcsICckJykpOwor
ICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICc1JywgJzUnKSk7CisgIEVYUEVD
VF9UUlVFKEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJ1onLCAnWicpKTsKK30KKworVEVTVChWYWxp
ZGF0ZVJlZ2V4VGVzdCwgR2VuZXJhdGVzRmFpbHVyZUFuZFJldHVybnNGYWxzZUZvckludmFsaWQp
IHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgo
TlVMTCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiTlVMTCBpcyBub3QgYSB2YWxpZCBz
aW1wbGUgcmVndWxhciBleHByZXNzaW9uIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKAor
ICAgICAgQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoImFcXCIpKSwKKyAgICAgICJTeW50YXgg
ZXJyb3IgYXQgaW5kZXggMSBpbiBzaW1wbGUgcmVndWxhciBleHByZXNzaW9uIFwiYVxcXCI6ICIp
OworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgi
YVxcIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiJ1xcJyBjYW5ub3QgYXBwZWFyIGF0
IHRoZSBlbmQiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlk
YXRlUmVnZXgoIlxcblxcIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiJ1xcJyBjYW5u
b3QgYXBwZWFyIGF0IHRoZSBlbmQiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJU
X0ZBTFNFKFZhbGlkYXRlUmVnZXgoIlxcc1xcaGIiKSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICJpbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZSBcIlxcaFwiIik7CisgIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJeXiIpKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIideJyBjYW4gb25seSBhcHBlYXIgYXQgdGhlIGJlZ2lubmluZyIpOwor
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiLipe
YiIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIideJyBjYW4gb25seSBhcHBlYXIgYXQg
dGhlIGJlZ2lubmluZyIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0Uo
VmFsaWRhdGVSZWdleCgiJCQiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICInJCcgY2Fu
IG9ubHkgYXBwZWFyIGF0IHRoZSBlbmQiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNT
RVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoIl4kYSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIickJyBjYW4gb25seSBhcHBlYXIgYXQgdGhlIGVuZCIpOworICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiYShiIikpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAiJygnIGlzIHVuc3VwcG9ydGVkIik7CisgIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJhYikiKSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICInKScgaXMgdW5zdXBwb3J0ZWQiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoIlthYiIpKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIidbJyBpcyB1bnN1cHBvcnRlZCIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiYXsyIikpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAiJ3snIGlzIHVuc3VwcG9ydGVkIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCI/IikpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAiJz8nIGNhbiBvbmx5IGZvbGxvdyBhIHJlcGVhdGFibGUgdG9rZW4iKTsKKyAgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoIl4qIikpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAiJyonIGNhbiBvbmx5IGZvbGxvdyBhIHJlcGVhdGFi
bGUgdG9rZW4iKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlk
YXRlUmVnZXgoIjUqKyIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIicrJyBjYW4gb25s
eSBmb2xsb3cgYSByZXBlYXRhYmxlIHRva2VuIik7Cit9CisKK1RFU1QoVmFsaWRhdGVSZWdleFRl
c3QsIFJldHVybnNUcnVlRm9yVmFsaWQpIHsKKyAgRVhQRUNUX1RSVUUoVmFsaWRhdGVSZWdleCgi
IikpOworICBFWFBFQ1RfVFJVRShWYWxpZGF0ZVJlZ2V4KCJhIikpOworICBFWFBFQ1RfVFJVRShW
YWxpZGF0ZVJlZ2V4KCIuKiIpKTsKKyAgRVhQRUNUX1RSVUUoVmFsaWRhdGVSZWdleCgiXmFfKyIp
KTsKKyAgRVhQRUNUX1RSVUUoVmFsaWRhdGVSZWdleCgiXmFcXHRcXCY/IikpOworICBFWFBFQ1Rf
VFJVRShWYWxpZGF0ZVJlZ2V4KCIwOSokIikpOworICBFWFBFQ1RfVFJVRShWYWxpZGF0ZVJlZ2V4
KCJeWiQiKSk7CisgIEVYUEVDVF9UUlVFKFZhbGlkYXRlUmVnZXgoImFcXF5aXFwkXFwoXFwpXFx8
XFxbXFxdXFx7XFx9IikpOworfQorCitURVNUKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFk
VGVzdCwgV29ya3NGb3JaZXJvT3JPbmUpIHsKKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVwZXRpdGlv
bkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnYScsICc/JywgImEiLCAiYmEiKSk7CisgIC8vIFJlcGVh
dGluZyBtb3JlIHRoYW4gb25jZS4KKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVwZXRpdGlvbkFuZFJl
Z2V4QXRIZWFkKGZhbHNlLCAnYScsICc/JywgImIiLCAiYWFiIikpOworCisgIC8vIFJlcGVhdGlu
ZyB6ZXJvIHRpbWVzLgorICBFWFBFQ1RfVFJVRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVh
ZChmYWxzZSwgJ2EnLCAnPycsICJiIiwgImJhIikpOworICAvLyBSZXBlYXRpbmcgb25jZS4KKyAg
RVhQRUNUX1RSVUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICdhJywgJz8n
LCAiYiIsICJhYiIpKTsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhl
YWQoZmFsc2UsICcjJywgJz8nLCAiLiIsICIjIyIpKTsKK30KKworVEVTVChNYXRjaFJlcGV0aXRp
b25BbmRSZWdleEF0SGVhZFRlc3QsIFdvcmtzRm9yWmVyb09yTWFueSkgeworICBFWFBFQ1RfRkFM
U0UoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICcuJywgJyonLCAiYSQiLCAi
YmFhYiIpKTsKKworICAvLyBSZXBlYXRpbmcgemVybyB0aW1lcy4KKyAgRVhQRUNUX1RSVUUoTWF0
Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICcuJywgJyonLCAiYiIsICJiYyIpKTsK
KyAgLy8gUmVwZWF0aW5nIG9uY2UuCisgIEVYUEVDVF9UUlVFKE1hdGNoUmVwZXRpdGlvbkFuZFJl
Z2V4QXRIZWFkKGZhbHNlLCAnLicsICcqJywgImIiLCAiYWJjIikpOworICAvLyBSZXBlYXRpbmcg
bW9yZSB0aGFuIG9uY2UuCisgIEVYUEVDVF9UUlVFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRI
ZWFkKHRydWUsICd3JywgJyonLCAiLSIsICJhYl8xLWciKSk7Cit9CisKK1RFU1QoTWF0Y2hSZXBl
dGl0aW9uQW5kUmVnZXhBdEhlYWRUZXN0LCBXb3Jrc0Zvck9uZU9yTWFueSkgeworICBFWFBFQ1Rf
RkFMU0UoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICcuJywgJysnLCAiYSQi
LCAiYmFhYiIpKTsKKyAgLy8gUmVwZWF0aW5nIHplcm8gdGltZXMuCisgIEVYUEVDVF9GQUxTRShN
YXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZChmYWxzZSwgJy4nLCAnKycsICJiIiwgImJjIikp
OworCisgIC8vIFJlcGVhdGluZyBvbmNlLgorICBFWFBFQ1RfVFJVRShNYXRjaFJlcGV0aXRpb25B
bmRSZWdleEF0SGVhZChmYWxzZSwgJy4nLCAnKycsICJiIiwgImFiYyIpKTsKKyAgLy8gUmVwZWF0
aW5nIG1vcmUgdGhhbiBvbmNlLgorICBFWFBFQ1RfVFJVRShNYXRjaFJlcGV0aXRpb25BbmRSZWdl
eEF0SGVhZCh0cnVlLCAndycsICcrJywgIi0iLCAiYWJfMS1nIikpOworfQorCitURVNUKE1hdGNo
UmVnZXhBdEhlYWRUZXN0LCBSZXR1cm5zVHJ1ZUZvckVtcHR5UmVnZXgpIHsKKyAgRVhQRUNUX1RS
VUUoTWF0Y2hSZWdleEF0SGVhZCgiIiwgIiIpKTsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0
SGVhZCgiIiwgImFiIikpOworfQorCitURVNUKE1hdGNoUmVnZXhBdEhlYWRUZXN0LCBXb3Jrc1do
ZW5Eb2xsYXJJc0luUmVnZXgpIHsKKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhlYWQoIiQi
LCAiYSIpKTsKKworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCIkIiwgIiIpKTsKKyAg
RVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiYSQiLCAiYSIpKTsKK30KKworVEVTVChNYXRj
aFJlZ2V4QXRIZWFkVGVzdCwgV29ya3NXaGVuUmVnZXhTdGFydHNXaXRoRXNjYXBlU2VxdWVuY2Up
IHsKKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhlYWQoIlxcdyIsICIrIikpOworICBFWFBF
Q1RfRkFMU0UoTWF0Y2hSZWdleEF0SGVhZCgiXFxXIiwgImFiIikpOworCisgIEVYUEVDVF9UUlVF
KE1hdGNoUmVnZXhBdEhlYWQoIlxcc2EiLCAiXG5hYiIpKTsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hS
ZWdleEF0SGVhZCgiXFxkIiwgIjFhIikpOworfQorCitURVNUKE1hdGNoUmVnZXhBdEhlYWRUZXN0
LCBXb3Jrc1doZW5SZWdleFN0YXJ0c1dpdGhSZXBldGl0aW9uKSB7CisgIEVYUEVDVF9GQUxTRShN
YXRjaFJlZ2V4QXRIZWFkKCIuK2EiLCAiYWJjIikpOworICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdl
eEF0SGVhZCgiYT9iIiwgImFhYiIpKTsKKworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFk
KCIuKmEiLCAiYmMxMi1hYiIpKTsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiYT9i
IiwgImIiKSk7CisgIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoImE/YiIsICJhYiIpKTsK
K30KKworVEVTVChNYXRjaFJlZ2V4QXRIZWFkVGVzdCwKKyAgICAgV29ya3NXaGVuUmVnZXhTdGFy
dHNXaXRoUmVwZXRpb25PZkVzY2FwZVNlcXVlbmNlKSB7CisgIEVYUEVDVF9GQUxTRShNYXRjaFJl
Z2V4QXRIZWFkKCJcXC4rYSIsICJhYmMiKSk7CisgIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QXRI
ZWFkKCJcXHM/YiIsICIgIGIiKSk7CisKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgi
XFwoKmEiLCAiKCgoKGFiIikpOworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJcXF4/
YiIsICJeYiIpKTsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiXFxcXD9iIiwgImIi
KSk7CisgIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIlxcXFw/YiIsICJcXGIiKSk7Cit9
CisKK1RFU1QoTWF0Y2hSZWdleEF0SGVhZFRlc3QsIE1hdGNoZXNTZXF1ZW50aWFsbHkpIHsKKyAg
RVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhlYWQoImFiLipjIiwgImFjYWJjIikpOworCisgIEVY
UEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoImFiLipjIiwgImFiLWZzYyIpKTsKK30KKworVEVT
VChNYXRjaFJlZ2V4QW55d2hlcmVUZXN0LCBSZXR1cm5zRmFsc2VXaGVuU3RyaW5nSXNOdWxsKSB7
CisgIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QW55d2hlcmUoIiIsIE5VTEwpKTsKK30KKworVEVT
VChNYXRjaFJlZ2V4QW55d2hlcmVUZXN0LCBXb3Jrc1doZW5SZWdleFN0YXJ0c1dpdGhDYXJldCkg
eworICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEFueXdoZXJlKCJeYSIsICJiYSIpKTsKKyAgRVhQ
RUNUX0ZBTFNFKE1hdGNoUmVnZXhBbnl3aGVyZSgiXiQiLCAiYSIpKTsKKworICBFWFBFQ1RfVFJV
RShNYXRjaFJlZ2V4QW55d2hlcmUoIl5hIiwgImFiIikpOworICBFWFBFQ1RfVFJVRShNYXRjaFJl
Z2V4QW55d2hlcmUoIl4iLCAiYWIiKSk7CisgIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBbnl3aGVy
ZSgiXiQiLCAiIikpOworfQorCitURVNUKE1hdGNoUmVnZXhBbnl3aGVyZVRlc3QsIFJldHVybnNG
YWxzZVdoZW5Ob01hdGNoKSB7CisgIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QW55d2hlcmUoImEi
LCAiYmNkZTEyMyIpKTsKKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBbnl3aGVyZSgiYS4rYSIs
ICItLWFhODg4ODg4ODgiKSk7Cit9CisKK1RFU1QoTWF0Y2hSZWdleEFueXdoZXJlVGVzdCwgUmV0
dXJuc1RydWVXaGVuTWF0Y2hpbmdQcmVmaXgpIHsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEFu
eXdoZXJlKCJcXHcrIiwgImFiMV8gLSA1IikpOworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QW55
d2hlcmUoIi4qPSIsICI9IikpOworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QW55d2hlcmUoIngu
KmFiPy4qYmMiLCAieGFhYWJjIikpOworfQorCitURVNUKE1hdGNoUmVnZXhBbnl3aGVyZVRlc3Qs
IFJldHVybnNUcnVlV2hlbk1hdGNoaW5nTm9uUHJlZml4KSB7CisgIEVYUEVDVF9UUlVFKE1hdGNo
UmVnZXhBbnl3aGVyZSgiXFx3KyIsICIkJCQgYWIxXyAtIDUiKSk7CisgIEVYUEVDVF9UUlVFKE1h
dGNoUmVnZXhBbnl3aGVyZSgiXFwuKz0iLCAiPSAgLi4uPSIpKTsKK30KKworLy8gVGVzdHMgUkUn
cyBpbXBsaWNpdCBjb25zdHJ1Y3RvcnMuCitURVNUKFJFVGVzdCwgSW1wbGljaXRDb25zdHJ1Y3Rv
cldvcmtzKSB7CisgIGNvbnN0IFJFIGVtcHR5KCIiKTsKKyAgRVhQRUNUX1NUUkVRKCIiLCBlbXB0
eS5wYXR0ZXJuKCkpOworCisgIGNvbnN0IFJFIHNpbXBsZSgiaGVsbG8iKTsKKyAgRVhQRUNUX1NU
UkVRKCJoZWxsbyIsIHNpbXBsZS5wYXR0ZXJuKCkpOworfQorCisvLyBUZXN0cyB0aGF0IFJFJ3Mg
Y29uc3RydWN0b3JzIHJlamVjdCBpbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbnMuCitURVNUKFJF
VGVzdCwgUmVqZWN0c0ludmFsaWRSZWdleCkgeworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7
CisgICAgY29uc3QgUkUgbm9ybWFsKE5VTEwpOworICB9LCAiTlVMTCBpcyBub3QgYSB2YWxpZCBz
aW1wbGUgcmVndWxhciBleHByZXNzaW9uIik7CisKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
eworICAgIGNvbnN0IFJFIG5vcm1hbCgiLiooXFx3KyIpOworICB9LCAiJygnIGlzIHVuc3VwcG9y
dGVkIik7CisKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeworICAgIGNvbnN0IFJFIGludmFs
aWQoIl4/Iik7CisgIH0sICInPycgY2FuIG9ubHkgZm9sbG93IGEgcmVwZWF0YWJsZSB0b2tlbiIp
OworfQorCisvLyBUZXN0cyBSRTo6RnVsbE1hdGNoKCkuCitURVNUKFJFVGVzdCwgRnVsbE1hdGNo
V29ya3MpIHsKKyAgY29uc3QgUkUgZW1wdHkoIiIpOworICBFWFBFQ1RfVFJVRShSRTo6RnVsbE1h
dGNoKCIiLCBlbXB0eSkpOworICBFWFBFQ1RfRkFMU0UoUkU6OkZ1bGxNYXRjaCgiYSIsIGVtcHR5
KSk7CisKKyAgY29uc3QgUkUgcmUxKCJhIik7CisgIEVYUEVDVF9UUlVFKFJFOjpGdWxsTWF0Y2go
ImEiLCByZTEpKTsKKworICBjb25zdCBSRSByZSgiYS4qeiIpOworICBFWFBFQ1RfVFJVRShSRTo6
RnVsbE1hdGNoKCJheiIsIHJlKSk7CisgIEVYUEVDVF9UUlVFKFJFOjpGdWxsTWF0Y2goImF4eXoi
LCByZSkpOworICBFWFBFQ1RfRkFMU0UoUkU6OkZ1bGxNYXRjaCgiYmF6IiwgcmUpKTsKKyAgRVhQ
RUNUX0ZBTFNFKFJFOjpGdWxsTWF0Y2goImF6eSIsIHJlKSk7Cit9CisKKy8vIFRlc3RzIFJFOjpQ
YXJ0aWFsTWF0Y2goKS4KK1RFU1QoUkVUZXN0LCBQYXJ0aWFsTWF0Y2hXb3JrcykgeworICBjb25z
dCBSRSBlbXB0eSgiIik7CisgIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goIiIsIGVtcHR5
KSk7CisgIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goImEiLCBlbXB0eSkpOworCisgIGNv
bnN0IFJFIHJlKCJhLip6Iik7CisgIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goImF6Iiwg
cmUpKTsKKyAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaCgiYXh5eiIsIHJlKSk7CisgIEVY
UEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goImJheiIsIHJlKSk7CisgIEVYUEVDVF9UUlVFKFJF
OjpQYXJ0aWFsTWF0Y2goImF6eSIsIHJlKSk7CisgIEVYUEVDVF9GQUxTRShSRTo6UGFydGlhbE1h
dGNoKCJ6emEiLCByZSkpOworfQorCisjZW5kaWYgIC8vIEdURVNUX1VTRVNfUE9TSVhfUkUKKwor
I2lmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorCitURVNUKENhcHR1cmVUZXN0LCBDYXB0dXJl
c1N0ZG91dCkgeworICBDYXB0dXJlU3Rkb3V0KCk7CisgIGZwcmludGYoc3Rkb3V0LCAiYWJjIik7
CisgIEVYUEVDVF9TVFJFUSgiYWJjIiwgR2V0Q2FwdHVyZWRTdGRvdXQoKS5jX3N0cigpKTsKKwor
ICBDYXB0dXJlU3Rkb3V0KCk7CisgIGZwcmludGYoc3Rkb3V0LCAiZGVmJWNnaGkiLCAnXDAnKTsK
KyAgRVhQRUNUX0VRKDo6c3RkOjpzdHJpbmcoImRlZlwwZ2hpIiwgNyksIDo6c3RkOjpzdHJpbmco
R2V0Q2FwdHVyZWRTdGRvdXQoKSkpOworfQorCitURVNUKENhcHR1cmVUZXN0LCBDYXB0dXJlc1N0
ZGVycikgeworICBDYXB0dXJlU3RkZXJyKCk7CisgIGZwcmludGYoc3RkZXJyLCAiamtsIik7Cisg
IEVYUEVDVF9TVFJFUSgiamtsIiwgR2V0Q2FwdHVyZWRTdGRlcnIoKS5jX3N0cigpKTsKKworICBD
YXB0dXJlU3RkZXJyKCk7CisgIGZwcmludGYoc3RkZXJyLCAiamtsJWNtbm8iLCAnXDAnKTsKKyAg
RVhQRUNUX0VRKDo6c3RkOjpzdHJpbmcoImprbFwwbW5vIiwgNyksIDo6c3RkOjpzdHJpbmcoR2V0
Q2FwdHVyZWRTdGRlcnIoKSkpOworfQorCisvLyBUZXN0cyB0aGF0IHN0ZG91dCBhbmQgc3RkZXJy
IGNhcHR1cmUgZG9uJ3QgaW50ZXJmZXJlIHdpdGggZWFjaCBvdGhlci4KK1RFU1QoQ2FwdHVyZVRl
c3QsIENhcHR1cmVzU3Rkb3V0QW5kU3RkZXJyKSB7CisgIENhcHR1cmVTdGRvdXQoKTsKKyAgQ2Fw
dHVyZVN0ZGVycigpOworICBmcHJpbnRmKHN0ZG91dCwgInBxciIpOworICBmcHJpbnRmKHN0ZGVy
ciwgInN0dSIpOworICBFWFBFQ1RfU1RSRVEoInBxciIsIEdldENhcHR1cmVkU3Rkb3V0KCkuY19z
dHIoKSk7CisgIEVYUEVDVF9TVFJFUSgic3R1IiwgR2V0Q2FwdHVyZWRTdGRlcnIoKS5jX3N0cigp
KTsKK30KKworVEVTVChDYXB0dXJlRGVhdGhUZXN0LCBDYW5ub3RSZWVudGVyU3Rkb3V0Q2FwdHVy
ZSkgeworICBDYXB0dXJlU3Rkb3V0KCk7CisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoQ2Fw
dHVyZVN0ZG91dCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPbmx5IG9uZSBzdGRv
dXQgY2FwdHVyZXIgY2FuIGV4aXN0IGF0IGEgdGltZSIpOworICBHZXRDYXB0dXJlZFN0ZG91dCgp
OworCisgIC8vIFdlIGNhbm5vdCB0ZXN0IHN0ZGVyciBjYXB0dXJpbmcgdXNpbmcgZGVhdGggdGVz
dHMgYXMgdGhleSB1c2UgaXQKKyAgLy8gdGhlbXNlbHZlcy4KK30KKworI2VuZGlmICAvLyAhR1RF
U1RfT1NfV0lORE9XU19NT0JJTEUKKworVEVTVChUaHJlYWRMb2NhbFRlc3QsIERlZmF1bHRDb25z
dHJ1Y3RvckluaXRpYWxpemVzVG9EZWZhdWx0VmFsdWVzKSB7CisgIFRocmVhZExvY2FsPGludD4g
dDE7CisgIEVYUEVDVF9FUSgwLCB0MS5nZXQoKSk7CisKKyAgVGhyZWFkTG9jYWw8dm9pZCo+IHQy
OworICBFWFBFQ1RfVFJVRSh0Mi5nZXQoKSA9PSBOVUxMKTsKK30KKworVEVTVChUaHJlYWRMb2Nh
bFRlc3QsIFNpbmdsZVBhcmFtQ29uc3RydWN0b3JJbml0aWFsaXplc1RvUGFyYW0pIHsKKyAgVGhy
ZWFkTG9jYWw8aW50PiB0MSgxMjMpOworICBFWFBFQ1RfRVEoMTIzLCB0MS5nZXQoKSk7CisKKyAg
aW50IGkgPSAwOworICBUaHJlYWRMb2NhbDxpbnQqPiB0MigmaSk7CisgIEVYUEVDVF9FUSgmaSwg
dDIuZ2V0KCkpOworfQorCitjbGFzcyBOb0RlZmF1bHRDb250cnVjdG9yIHsKKyBwdWJsaWM6Cisg
IGV4cGxpY2l0IE5vRGVmYXVsdENvbnRydWN0b3IoY29uc3QgY2hhciopIHt9CisgIE5vRGVmYXVs
dENvbnRydWN0b3IoY29uc3QgTm9EZWZhdWx0Q29udHJ1Y3RvciYpIHt9Cit9OworCitURVNUKFRo
cmVhZExvY2FsVGVzdCwgVmFsdWVEZWZhdWx0Q29udHJ1Y3RvcklzTm90UmVxdWlyZWRGb3JQYXJh
bVZlcnNpb24pIHsKKyAgVGhyZWFkTG9jYWw8Tm9EZWZhdWx0Q29udHJ1Y3Rvcj4gYmFyKE5vRGVm
YXVsdENvbnRydWN0b3IoImZvbyIpKTsKKyAgYmFyLnBvaW50ZXIoKTsKK30KKworVEVTVChUaHJl
YWRMb2NhbFRlc3QsIEdldEFuZFBvaW50ZXJSZXR1cm5TYW1lVmFsdWUpIHsKKyAgVGhyZWFkTG9j
YWw8c3RkOjpzdHJpbmc+IHRocmVhZF9sb2NhbF9zdHJpbmc7CisKKyAgRVhQRUNUX0VRKHRocmVh
ZF9sb2NhbF9zdHJpbmcucG9pbnRlcigpLCAmKHRocmVhZF9sb2NhbF9zdHJpbmcuZ2V0KCkpKTsK
KworICAvLyBWZXJpZmllcyB0aGUgY29uZGl0aW9uIHN0aWxsIGhvbGRzIGFmdGVyIGNhbGxpbmcg
c2V0LgorICB0aHJlYWRfbG9jYWxfc3RyaW5nLnNldCgiZm9vIik7CisgIEVYUEVDVF9FUSh0aHJl
YWRfbG9jYWxfc3RyaW5nLnBvaW50ZXIoKSwgJih0aHJlYWRfbG9jYWxfc3RyaW5nLmdldCgpKSk7
Cit9CisKK1RFU1QoVGhyZWFkTG9jYWxUZXN0LCBQb2ludGVyQW5kQ29uc3RQb2ludGVyUmV0dXJu
U2FtZVZhbHVlKSB7CisgIFRocmVhZExvY2FsPHN0ZDo6c3RyaW5nPiB0aHJlYWRfbG9jYWxfc3Ry
aW5nOworICBjb25zdCBUaHJlYWRMb2NhbDxzdGQ6OnN0cmluZz4mIGNvbnN0X3RocmVhZF9sb2Nh
bF9zdHJpbmcgPQorICAgICAgdGhyZWFkX2xvY2FsX3N0cmluZzsKKworICBFWFBFQ1RfRVEodGhy
ZWFkX2xvY2FsX3N0cmluZy5wb2ludGVyKCksIGNvbnN0X3RocmVhZF9sb2NhbF9zdHJpbmcucG9p
bnRlcigpKTsKKworICB0aHJlYWRfbG9jYWxfc3RyaW5nLnNldCgiZm9vIik7CisgIEVYUEVDVF9F
USh0aHJlYWRfbG9jYWxfc3RyaW5nLnBvaW50ZXIoKSwgY29uc3RfdGhyZWFkX2xvY2FsX3N0cmlu
Zy5wb2ludGVyKCkpOworfQorCisjaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQorCit2b2lkIEFkZFR3
byhpbnQqIHBhcmFtKSB7ICpwYXJhbSArPSAyOyB9CisKK1RFU1QoVGhyZWFkV2l0aFBhcmFtVGVz
dCwgQ29uc3RydWN0b3JFeGVjdXRlc1RocmVhZEZ1bmMpIHsKKyAgaW50IGkgPSA0MDsKKyAgVGhy
ZWFkV2l0aFBhcmFtPGludCo+IHRocmVhZCgmQWRkVHdvLCAmaSwgTlVMTCk7CisgIHRocmVhZC5K
b2luKCk7CisgIEVYUEVDVF9FUSg0MiwgaSk7Cit9CisKK1RFU1QoTXV0ZXhEZWF0aFRlc3QsIEFz
c2VydEhlbGRTaG91bGRBc3NlcnRXaGVuTm90TG9ja2VkKSB7CisgIC8vIEFzc2VydEhlbGQoKSBp
cyBmbGFreSBvbmx5IGluIHRoZSBwcmVzZW5jZSBvZiBtdWx0aXBsZSB0aHJlYWRzIGFjY2Vzc2lu
ZworICAvLyB0aGUgbG9jay4gSW4gdGhpcyBjYXNlLCB0aGUgdGVzdCBpcyByb2J1c3QuCisgIEVY
UEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoeworICAgIE11dGV4IG07CisgICAgeyBNdXRleExvY2sg
bG9jaygmbSk7IH0KKyAgICBtLkFzc2VydEhlbGQoKTsKKyAgfSwKKyAgInRocmVhZCAuKmhvbGQi
KTsKK30KKworVEVTVChNdXRleFRlc3QsIEFzc2VydEhlbGRTaG91bGROb3RBc3NlcnRXaGVuTG9j
a2VkKSB7CisgIE11dGV4IG07CisgIE11dGV4TG9jayBsb2NrKCZtKTsKKyAgbS5Bc3NlcnRIZWxk
KCk7Cit9CisKK2NsYXNzIEF0b21pY0NvdW50ZXJXaXRoTXV0ZXggeworIHB1YmxpYzoKKyAgZXhw
bGljaXQgQXRvbWljQ291bnRlcldpdGhNdXRleChNdXRleCogbXV0ZXgpIDoKKyAgICB2YWx1ZV8o
MCksIG11dGV4XyhtdXRleCksIHJhbmRvbV8oNDIpIHt9CisKKyAgdm9pZCBJbmNyZW1lbnQoKSB7
CisgICAgTXV0ZXhMb2NrIGxvY2sobXV0ZXhfKTsKKyAgICBpbnQgdGVtcCA9IHZhbHVlXzsKKyAg
ICB7CisgICAgICAvLyBXZSBuZWVkIHRvIHB1dCB1cCBhIG1lbW9yeSBiYXJyaWVyIHRvIHByZXZl
bnQgcmVhZHMgYW5kIHdyaXRlcyB0bworICAgICAgLy8gdmFsdWVfIHJlYXJyYW5nZWQgd2l0aCB0
aGUgY2FsbCB0byBTbGVlcE1pbGxpc2Vjb25kcyB3aGVuIG9ic2VydmVkCisgICAgICAvLyBmcm9t
IG90aGVyIHRocmVhZHMuCisjaWYgR1RFU1RfSEFTX1BUSFJFQUQKKyAgICAgIC8vIE9uIFBPU0lY
LCBsb2NraW5nIGEgbXV0ZXggcHV0cyB1cCBhIG1lbW9yeSBiYXJyaWVyLiAgV2UgY2Fubm90IHVz
ZQorICAgICAgLy8gTXV0ZXggYW5kIE11dGV4TG9jayBoZXJlIG9yIHJlbHkgb24gdGhlaXIgbWVt
b3J5IGJhcnJpZXIKKyAgICAgIC8vIGZ1bmN0aW9uYWxpdHkgYXMgd2UgYXJlIHRlc3RpbmcgdGhl
bSBoZXJlLgorICAgICAgcHRocmVhZF9tdXRleF90IG1lbW9yeV9iYXJyaWVyX211dGV4OworICAg
ICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18oCisgICAgICAgICAgcHRocmVhZF9tdXRleF9p
bml0KCZtZW1vcnlfYmFycmllcl9tdXRleCwgTlVMTCkpOworICAgICAgR1RFU1RfQ0hFQ0tfUE9T
SVhfU1VDQ0VTU18ocHRocmVhZF9tdXRleF9sb2NrKCZtZW1vcnlfYmFycmllcl9tdXRleCkpOwor
CisgICAgICBTbGVlcE1pbGxpc2Vjb25kcyhyYW5kb21fLkdlbmVyYXRlKDMwKSk7CisKKyAgICAg
IEdURVNUX0NIRUNLX1BPU0lYX1NVQ0NFU1NfKHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZtZW1vcnlf
YmFycmllcl9tdXRleCkpOworICAgICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18ocHRocmVh
ZF9tdXRleF9kZXN0cm95KCZtZW1vcnlfYmFycmllcl9tdXRleCkpOworI2VsaWYgR1RFU1RfT1Nf
V0lORE9XUworICAgICAgLy8gT24gV2luZG93cywgcGVyZm9ybWluZyBhbiBpbnRlcmxvY2tlZCBh
Y2Nlc3MgcHV0cyB1cCBhIG1lbW9yeSBiYXJyaWVyLgorICAgICAgdm9sYXRpbGUgTE9ORyBkdW1t
eSA9IDA7CisgICAgICA6OkludGVybG9ja2VkSW5jcmVtZW50KCZkdW1teSk7CisgICAgICBTbGVl
cE1pbGxpc2Vjb25kcyhyYW5kb21fLkdlbmVyYXRlKDMwKSk7CisgICAgICA6OkludGVybG9ja2Vk
SW5jcmVtZW50KCZkdW1teSk7CisjZWxzZQorIyBlcnJvciAiTWVtb3J5IGJhcnJpZXIgbm90IGlt
cGxlbWVudGVkIG9uIHRoaXMgcGxhdGZvcm0uIgorI2VuZGlmICAvLyBHVEVTVF9IQVNfUFRIUkVB
RAorICAgIH0KKyAgICB2YWx1ZV8gPSB0ZW1wICsgMTsKKyAgfQorICBpbnQgdmFsdWUoKSBjb25z
dCB7IHJldHVybiB2YWx1ZV87IH0KKworIHByaXZhdGU6CisgIHZvbGF0aWxlIGludCB2YWx1ZV87
CisgIE11dGV4KiBjb25zdCBtdXRleF87ICAvLyBQcm90ZWN0cyB2YWx1ZV8uCisgIFJhbmRvbSAg
ICAgICByYW5kb21fOworfTsKKwordm9pZCBDb3VudGluZ1RocmVhZEZ1bmMocGFpcjxBdG9taWND
b3VudGVyV2l0aE11dGV4KiwgaW50PiBwYXJhbSkgeworICBmb3IgKGludCBpID0gMDsgaSA8IHBh
cmFtLnNlY29uZDsgKytpKQorICAgICAgcGFyYW0uZmlyc3QtPkluY3JlbWVudCgpOworfQorCisv
LyBUZXN0cyB0aGF0IHRoZSBtdXRleCBvbmx5IGxldHMgb25lIHRocmVhZCBhdCBhIHRpbWUgdG8g
bG9jayBpdC4KK1RFU1QoTXV0ZXhUZXN0LCBPbmx5T25lVGhyZWFkQ2FuTG9ja0F0QVRpbWUpIHsK
KyAgTXV0ZXggbXV0ZXg7CisgIEF0b21pY0NvdW50ZXJXaXRoTXV0ZXggbG9ja2VkX2NvdW50ZXIo
Jm11dGV4KTsKKworICB0eXBlZGVmIFRocmVhZFdpdGhQYXJhbTxwYWlyPEF0b21pY0NvdW50ZXJX
aXRoTXV0ZXgqLCBpbnQ+ID4gVGhyZWFkVHlwZTsKKyAgY29uc3QgaW50IGtDeWNsZUNvdW50ID0g
MjA7CisgIGNvbnN0IGludCBrVGhyZWFkQ291bnQgPSA3OworICBzY29wZWRfcHRyPFRocmVhZFR5
cGU+IGNvdW50aW5nX3RocmVhZHNba1RocmVhZENvdW50XTsKKyAgTm90aWZpY2F0aW9uIHRocmVh
ZHNfY2FuX3N0YXJ0OworICAvLyBDcmVhdGVzIGFuZCBydW5zIGtUaHJlYWRDb3VudCB0aHJlYWRz
IHRoYXQgaW5jcmVtZW50IGxvY2tlZF9jb3VudGVyCisgIC8vIGtDeWNsZUNvdW50IHRpbWVzIGVh
Y2guCisgIGZvciAoaW50IGkgPSAwOyBpIDwga1RocmVhZENvdW50OyArK2kpIHsKKyAgICBjb3Vu
dGluZ190aHJlYWRzW2ldLnJlc2V0KG5ldyBUaHJlYWRUeXBlKCZDb3VudGluZ1RocmVhZEZ1bmMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWtlX3BhaXIo
JmxvY2tlZF9jb3VudGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGtDeWNsZUNvdW50KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZ0aHJlYWRzX2Nhbl9zdGFydCkpOworICB9CisgIHRocmVhZHNf
Y2FuX3N0YXJ0Lk5vdGlmeSgpOworICBmb3IgKGludCBpID0gMDsgaSA8IGtUaHJlYWRDb3VudDsg
KytpKQorICAgIGNvdW50aW5nX3RocmVhZHNbaV0tPkpvaW4oKTsKKworICAvLyBJZiB0aGUgbXV0
ZXggbGV0cyBtb3JlIHRoYW4gb25lIHRocmVhZCB0byBpbmNyZW1lbnQgdGhlIGNvdW50ZXIgYXQg
YQorICAvLyB0aW1lLCB0aGV5IGFyZSBsaWtlbHkgdG8gZW5jb3VudGVyIGEgcmFjZSBjb25kaXRp
b24gYW5kIGhhdmUgc29tZQorICAvLyBpbmNyZW1lbnRzIG92ZXJ3cml0dGVuLCByZXN1bHRpbmcg
aW4gdGhlIGxvd2VyIHRoZW4gZXhwZWN0ZWQgY291bnRlcgorICAvLyB2YWx1ZS4KKyAgRVhQRUNU
X0VRKGtDeWNsZUNvdW50ICoga1RocmVhZENvdW50LCBsb2NrZWRfY291bnRlci52YWx1ZSgpKTsK
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIFJ1bkZyb21UaHJlYWQodm9pZCAoZnVu
YykoVCksIFQgcGFyYW0pIHsKKyAgVGhyZWFkV2l0aFBhcmFtPFQ+IHRocmVhZChmdW5jLCBwYXJh
bSwgTlVMTCk7CisgIHRocmVhZC5Kb2luKCk7Cit9CisKK3ZvaWQgUmV0cmlldmVUaHJlYWRMb2Nh
bFZhbHVlKAorICAgIHBhaXI8VGhyZWFkTG9jYWw8c3RkOjpzdHJpbmc+Kiwgc3RkOjpzdHJpbmcq
PiBwYXJhbSkgeworICAqcGFyYW0uc2Vjb25kID0gcGFyYW0uZmlyc3QtPmdldCgpOworfQorCitU
RVNUKFRocmVhZExvY2FsVGVzdCwgUGFyYW1ldGVyaXplZENvbnN0cnVjdG9yU2V0c0RlZmF1bHQp
IHsKKyAgVGhyZWFkTG9jYWw8c3RkOjpzdHJpbmc+IHRocmVhZF9sb2NhbF9zdHJpbmcoImZvbyIp
OworICBFWFBFQ1RfU1RSRVEoImZvbyIsIHRocmVhZF9sb2NhbF9zdHJpbmcuZ2V0KCkuY19zdHIo
KSk7CisKKyAgdGhyZWFkX2xvY2FsX3N0cmluZy5zZXQoImJhciIpOworICBFWFBFQ1RfU1RSRVEo
ImJhciIsIHRocmVhZF9sb2NhbF9zdHJpbmcuZ2V0KCkuY19zdHIoKSk7CisKKyAgc3RkOjpzdHJp
bmcgcmVzdWx0OworICBSdW5Gcm9tVGhyZWFkKCZSZXRyaWV2ZVRocmVhZExvY2FsVmFsdWUsCisg
ICAgICAgICAgICAgICAgbWFrZV9wYWlyKCZ0aHJlYWRfbG9jYWxfc3RyaW5nLCAmcmVzdWx0KSk7
CisgIEVYUEVDVF9TVFJFUSgiZm9vIiwgcmVzdWx0LmNfc3RyKCkpOworfQorCisvLyBLZWVwcyB0
cmFjayBvZiB3aGV0aGVyIG9mIGRlc3RydWN0b3JzIGJlaW5nIGNhbGxlZCBvbiBpbnN0YW5jZXMg
b2YKKy8vIERlc3RydWN0b3JUcmFja2VyLiAgT24gV2luZG93cywgd2FpdHMgZm9yIHRoZSBkZXN0
cnVjdG9yIGNhbGwgcmVwb3J0cy4KK2NsYXNzIERlc3RydWN0b3JDYWxsIHsKKyBwdWJsaWM6Cisg
IERlc3RydWN0b3JDYWxsKCkgeworICAgIGludm9rZWRfID0gZmFsc2U7CisjaWYgR1RFU1RfT1Nf
V0lORE9XUworICAgIHdhaXRfZXZlbnRfLlJlc2V0KDo6Q3JlYXRlRXZlbnQoTlVMTCwgVFJVRSwg
RkFMU0UsIE5VTEwpKTsKKyAgICBHVEVTVF9DSEVDS18od2FpdF9ldmVudF8uR2V0KCkgIT0gTlVM
TCk7CisjZW5kaWYKKyAgfQorCisgIGJvb2wgQ2hlY2tEZXN0cm95ZWQoKSBjb25zdCB7CisjaWYg
R1RFU1RfT1NfV0lORE9XUworICAgIGlmICg6OldhaXRGb3JTaW5nbGVPYmplY3Qod2FpdF9ldmVu
dF8uR2V0KCksIDEwMDApICE9IFdBSVRfT0JKRUNUXzApCisgICAgICByZXR1cm4gZmFsc2U7Cisj
ZW5kaWYKKyAgICByZXR1cm4gaW52b2tlZF87CisgIH0KKworICB2b2lkIFJlcG9ydERlc3Ryb3ll
ZCgpIHsKKyAgICBpbnZva2VkXyA9IHRydWU7CisjaWYgR1RFU1RfT1NfV0lORE9XUworICAgIDo6
U2V0RXZlbnQod2FpdF9ldmVudF8uR2V0KCkpOworI2VuZGlmCisgIH0KKworICBzdGF0aWMgc3Rk
Ojp2ZWN0b3I8RGVzdHJ1Y3RvckNhbGwqPiYgTGlzdCgpIHsgcmV0dXJuICpsaXN0XzsgfQorCisg
IHN0YXRpYyB2b2lkIFJlc2V0TGlzdCgpIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxp
c3RfLT5zaXplKCk7ICsraSkgeworICAgICAgZGVsZXRlIGxpc3RfLT5hdChpKTsKKyAgICB9Cisg
ICAgbGlzdF8tPmNsZWFyKCk7CisgIH0KKworIHByaXZhdGU6CisgIGJvb2wgaW52b2tlZF87Cisj
aWYgR1RFU1RfT1NfV0lORE9XUworICBBdXRvSGFuZGxlIHdhaXRfZXZlbnRfOworI2VuZGlmCisg
IHN0YXRpYyBzdGQ6OnZlY3RvcjxEZXN0cnVjdG9yQ2FsbCo+KiBjb25zdCBsaXN0XzsKKworICBH
VEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKERlc3RydWN0b3JDYWxsKTsKK307CisKK3N0
ZDo6dmVjdG9yPERlc3RydWN0b3JDYWxsKj4qIGNvbnN0IERlc3RydWN0b3JDYWxsOjpsaXN0XyA9
CisgICAgbmV3IHN0ZDo6dmVjdG9yPERlc3RydWN0b3JDYWxsKj47CisKKy8vIERlc3RydWN0b3JU
cmFja2VyIGtlZXBzIHRyYWNrIG9mIHdoZXRoZXIgaXRzIGluc3RhbmNlcyBoYXZlIGJlZW4KKy8v
IGRlc3Ryb3llZC4KK2NsYXNzIERlc3RydWN0b3JUcmFja2VyIHsKKyBwdWJsaWM6CisgIERlc3Ry
dWN0b3JUcmFja2VyKCkgOiBpbmRleF8oR2V0TmV3SW5kZXgoKSkge30KKyAgRGVzdHJ1Y3RvclRy
YWNrZXIoY29uc3QgRGVzdHJ1Y3RvclRyYWNrZXImIC8qIHJocyAqLykKKyAgICAgIDogaW5kZXhf
KEdldE5ld0luZGV4KCkpIHt9CisgIH5EZXN0cnVjdG9yVHJhY2tlcigpIHsKKyAgICAvLyBXZSBu
ZXZlciBhY2Nlc3MgRGVzdHJ1Y3RvckNhbGw6Okxpc3QoKSBjb25jdXJyZW50bHksIHNvIHdlIGRv
bid0IG5lZWQKKyAgICAvLyB0byBwcm90ZWN0IHRoaXMgYWNjY2VzcyB3aXRoIGEgbXV0ZXguCisg
ICAgRGVzdHJ1Y3RvckNhbGw6Okxpc3QoKVtpbmRleF9dLT5SZXBvcnREZXN0cm95ZWQoKTsKKyAg
fQorCisgcHJpdmF0ZToKKyAgc3RhdGljIHNpemVfdCBHZXROZXdJbmRleCgpIHsKKyAgICBEZXN0
cnVjdG9yQ2FsbDo6TGlzdCgpLnB1c2hfYmFjayhuZXcgRGVzdHJ1Y3RvckNhbGwpOworICAgIHJl
dHVybiBEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpLnNpemUoKSAtIDE7CisgIH0KKyAgY29uc3Qgc2l6
ZV90IGluZGV4XzsKKworICBHVEVTVF9ESVNBTExPV19BU1NJR05fKERlc3RydWN0b3JUcmFja2Vy
KTsKK307CisKK3R5cGVkZWYgVGhyZWFkTG9jYWw8RGVzdHJ1Y3RvclRyYWNrZXI+KiBUaHJlYWRQ
YXJhbTsKKwordm9pZCBDYWxsVGhyZWFkTG9jYWxHZXQoVGhyZWFkUGFyYW0gdGhyZWFkX2xvY2Fs
X3BhcmFtKSB7CisgIHRocmVhZF9sb2NhbF9wYXJhbS0+Z2V0KCk7Cit9CisKKy8vIFRlc3RzIHRo
YXQgd2hlbiBhIFRocmVhZExvY2FsIG9iamVjdCBkaWVzIGluIGEgdGhyZWFkLCBpdCBkZXN0cm95
cworLy8gdGhlIG1hbmFnZWQgb2JqZWN0IGZvciB0aGF0IHRocmVhZC4KK1RFU1QoVGhyZWFkTG9j
YWxUZXN0LCBEZXN0cm95c01hbmFnZWRPYmplY3RGb3JPd25UaHJlYWRXaGVuRHlpbmcpIHsKKyAg
RGVzdHJ1Y3RvckNhbGw6OlJlc2V0TGlzdCgpOworCisgIHsKKyAgICBUaHJlYWRMb2NhbDxEZXN0
cnVjdG9yVHJhY2tlcj4gdGhyZWFkX2xvY2FsX3RyYWNrZXI7CisgICAgQVNTRVJUX0VRKDBVLCBE
ZXN0cnVjdG9yQ2FsbDo6TGlzdCgpLnNpemUoKSk7CisKKyAgICAvLyBUaGlzIGNyZWF0ZXMgYW5v
dGhlciBEZXN0cnVjdG9yVHJhY2tlciBvYmplY3QgZm9yIHRoZSBtYWluIHRocmVhZC4KKyAgICB0
aHJlYWRfbG9jYWxfdHJhY2tlci5nZXQoKTsKKyAgICBBU1NFUlRfRVEoMVUsIERlc3RydWN0b3JD
YWxsOjpMaXN0KCkuc2l6ZSgpKTsKKyAgICBBU1NFUlRfRkFMU0UoRGVzdHJ1Y3RvckNhbGw6Okxp
c3QoKVswXS0+Q2hlY2tEZXN0cm95ZWQoKSk7CisgIH0KKworICAvLyBOb3cgdGhyZWFkX2xvY2Fs
X3RyYWNrZXIgaGFzIGRpZWQuCisgIEFTU0VSVF9FUSgxVSwgRGVzdHJ1Y3RvckNhbGw6Okxpc3Qo
KS5zaXplKCkpOworICBFWFBFQ1RfVFJVRShEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpWzBdLT5DaGVj
a0Rlc3Ryb3llZCgpKTsKKworICBEZXN0cnVjdG9yQ2FsbDo6UmVzZXRMaXN0KCk7Cit9CisKKy8v
IFRlc3RzIHRoYXQgd2hlbiBhIHRocmVhZCBleGl0cywgdGhlIHRocmVhZC1sb2NhbCBvYmplY3Qg
Zm9yIHRoYXQKKy8vIHRocmVhZCBpcyBkZXN0cm95ZWQuCitURVNUKFRocmVhZExvY2FsVGVzdCwg
RGVzdHJveXNNYW5hZ2VkT2JqZWN0QXRUaHJlYWRFeGl0KSB7CisgIERlc3RydWN0b3JDYWxsOjpS
ZXNldExpc3QoKTsKKworICB7CisgICAgVGhyZWFkTG9jYWw8RGVzdHJ1Y3RvclRyYWNrZXI+IHRo
cmVhZF9sb2NhbF90cmFja2VyOworICAgIEFTU0VSVF9FUSgwVSwgRGVzdHJ1Y3RvckNhbGw6Okxp
c3QoKS5zaXplKCkpOworCisgICAgLy8gVGhpcyBjcmVhdGVzIGFub3RoZXIgRGVzdHJ1Y3RvclRy
YWNrZXIgb2JqZWN0IGluIHRoZSBuZXcgdGhyZWFkLgorICAgIFRocmVhZFdpdGhQYXJhbTxUaHJl
YWRQYXJhbT4gdGhyZWFkKAorICAgICAgICAmQ2FsbFRocmVhZExvY2FsR2V0LCAmdGhyZWFkX2xv
Y2FsX3RyYWNrZXIsIE5VTEwpOworICAgIHRocmVhZC5Kb2luKCk7CisKKyAgICAvLyBUaGUgdGhy
ZWFkIGhhcyBleGl0ZWQsIGFuZCB3ZSBzaG91bGQgaGF2ZSBhIERlc3Ryb3llZFRyYWNrZXIKKyAg
ICAvLyBpbnN0YW5jZSBjcmVhdGVkIGZvciBpdC4gQnV0IGl0IG1heSBub3QgaGF2ZSBiZWVuIGRl
c3Ryb3llZCB5ZXQuCisgICAgQVNTRVJUX0VRKDFVLCBEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpLnNp
emUoKSk7CisgIH0KKworICAvLyBUaGUgdGhyZWFkIGhhcyBleGl0ZWQgYW5kIHRocmVhZF9sb2Nh
bF90cmFja2VyIGhhcyBkaWVkLgorICBBU1NFUlRfRVEoMVUsIERlc3RydWN0b3JDYWxsOjpMaXN0
KCkuc2l6ZSgpKTsKKyAgRVhQRUNUX1RSVUUoRGVzdHJ1Y3RvckNhbGw6Okxpc3QoKVswXS0+Q2hl
Y2tEZXN0cm95ZWQoKSk7CisKKyAgRGVzdHJ1Y3RvckNhbGw6OlJlc2V0TGlzdCgpOworfQorCitU
RVNUKFRocmVhZExvY2FsVGVzdCwgVGhyZWFkTG9jYWxNdXRhdGlvbnNBZmZlY3RPbmx5Q3VycmVu
dFRocmVhZCkgeworICBUaHJlYWRMb2NhbDxzdGQ6OnN0cmluZz4gdGhyZWFkX2xvY2FsX3N0cmlu
ZzsKKyAgdGhyZWFkX2xvY2FsX3N0cmluZy5zZXQoIkZvbyIpOworICBFWFBFQ1RfU1RSRVEoIkZv
byIsIHRocmVhZF9sb2NhbF9zdHJpbmcuZ2V0KCkuY19zdHIoKSk7CisKKyAgc3RkOjpzdHJpbmcg
cmVzdWx0OworICBSdW5Gcm9tVGhyZWFkKCZSZXRyaWV2ZVRocmVhZExvY2FsVmFsdWUsCisgICAg
ICAgICAgICAgICAgbWFrZV9wYWlyKCZ0aHJlYWRfbG9jYWxfc3RyaW5nLCAmcmVzdWx0KSk7Cisg
IEVYUEVDVF9UUlVFKHJlc3VsdC5lbXB0eSgpKTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9JU19U
SFJFQURTQUZFCisKKyNpZiBHVEVTVF9PU19XSU5ET1dTCitURVNUKFdpbmRvd3NUeXBlc1Rlc3Qs
IEhBTkRMRUlzVm9pZFN0YXIpIHsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPEhBTkRMRSwgdm9pZCo+
KCk7Cit9CisKKyNpZiBHVEVTVF9PU19XSU5ET1dTX01JTkdXICYmICFkZWZpbmVkKF9fTUlOR1c2
NF9WRVJTSU9OX01BSk9SKQorVEVTVChXaW5kb3dzVHlwZXNUZXN0LCBfQ1JJVElDQUxfU0VDVElP
TklzX0NSSVRJQ0FMX1NFQ1RJT04pIHsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPENSSVRJQ0FMX1NF
Q1RJT04sIF9DUklUSUNBTF9TRUNUSU9OPigpOworfQorI2Vsc2UKK1RFU1QoV2luZG93c1R5cGVz
VGVzdCwgQ1JJVElDQUxfU0VDVElPTklzX1JUTF9DUklUSUNBTF9TRUNUSU9OKSB7CisgIFN0YXRp
Y0Fzc2VydFR5cGVFcTxDUklUSUNBTF9TRUNUSU9OLCBfUlRMX0NSSVRJQ0FMX1NFQ1RJT04+KCk7
Cit9CisjZW5kaWYKKworI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisKK30gIC8vIG5hbWVz
cGFjZSBpbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGV0ZXN0L3Rlc3QvZ3Rlc3QtcHJpbnRlcnNfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rl
c3QtcHJpbnRlcnNfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMGE4MzQxMGQxZjAzZGU4ODVmNjI3NjIz
ZTU4OGIwN2U1YmVkZDZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVz
dC1wcmludGVyc190ZXN0LmNjCkBAIC0wLDAgKzEsMTYzNyBAQAorLy8gQ29weXJpZ2h0IDIwMDcs
IEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisv
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20g
KFpoYW55b25nIFdhbikKKworLy8gR29vZ2xlIFRlc3QgLSBUaGUgR29vZ2xlIEMrKyBUZXN0aW5n
IEZyYW1ld29yaworLy8KKy8vIFRoaXMgZmlsZSB0ZXN0cyB0aGUgdW5pdmVyc2FsIHZhbHVlIHBy
aW50ZXIuCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1wcmludGVycy5oIgorCisjaW5jbHVkZSA8
Y3R5cGUuaD4KKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNs
dWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8ZGVxdWU+CisjaW5jbHVkZSA8bGlzdD4KKyNpbmNs
dWRlIDxtYXA+CisjaW5jbHVkZSA8c2V0PgorI2luY2x1ZGUgPHNzdHJlYW0+CisjaW5jbHVkZSA8
c3RyaW5nPgorI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVk
ZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworLy8gaGFzaF9tYXAgYW5kIGhhc2hfc2V0IGFyZSBhdmFpbGFi
bGUgdW5kZXIgVmlzdWFsIEMrKywgb3Igb24gTGludXguCisjaWYgR1RFU1RfSEFTX0hBU0hfTUFQ
XworIyBpbmNsdWRlIDxoYXNoX21hcD4gICAgICAgICAgICAvLyBOT0xJTlQKKyNlbmRpZiAgLy8g
R1RFU1RfSEFTX0hBU0hfTUFQXworI2lmIEdURVNUX0hBU19IQVNIX1NFVF8KKyMgaW5jbHVkZSA8
aGFzaF9zZXQ+ICAgICAgICAgICAgLy8gTk9MSU5UCisjZW5kaWYgIC8vIEdURVNUX0hBU19IQVNI
X1NFVF8KKworI2lmIEdURVNUX0hBU19TVERfRk9SV0FSRF9MSVNUXworIyBpbmNsdWRlIDxmb3J3
YXJkX2xpc3Q+IC8vIE5PTElOVAorI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX0ZPUldBUkRfTElT
VF8KKworLy8gU29tZSB1c2VyLWRlZmluZWQgdHlwZXMgZm9yIHRlc3RpbmcgdGhlIHVuaXZlcnNh
bCB2YWx1ZSBwcmludGVyLgorCisvLyBBbiBhbm9ueW1vdXMgZW51bSB0eXBlLgorZW51bSBBbm9u
eW1vdXNFbnVtIHsKKyAga0FFMSA9IC0xLAorICBrQUUyID0gMQorfTsKKworLy8gQW4gZW51bSB3
aXRob3V0IGEgdXNlci1kZWZpbmVkIHByaW50ZXIuCitlbnVtIEVudW1XaXRob3V0UHJpbnRlciB7
CisgIGtFV1AxID0gLTIsCisgIGtFV1AyID0gNDIKK307CisKKy8vIEFuIGVudW0gd2l0aCBhIDw8
IG9wZXJhdG9yLgorZW51bSBFbnVtV2l0aFN0cmVhbWluZyB7CisgIGtFV1MxID0gMTAKK307CisK
K3N0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBFbnVtV2l0aFN0cmVh
bWluZyBlKSB7CisgIHJldHVybiBvcyA8PCAoZSA9PSBrRVdTMSA/ICJrRVdTMSIgOiAiaW52YWxp
ZCIpOworfQorCisvLyBBbiBlbnVtIHdpdGggYSBQcmludFRvKCkgZnVuY3Rpb24uCitlbnVtIEVu
dW1XaXRoUHJpbnRUbyB7CisgIGtFV1BUMSA9IDEKK307CisKK3ZvaWQgUHJpbnRUbyhFbnVtV2l0
aFByaW50VG8gZSwgc3RkOjpvc3RyZWFtKiBvcykgeworICAqb3MgPDwgKGUgPT0ga0VXUFQxID8g
ImtFV1BUMSIgOiAiaW52YWxpZCIpOworfQorCisvLyBBIGNsYXNzIGltcGxpY2l0bHkgY29udmVy
dGlibGUgdG8gQmlnZ2VzdEludC4KK2NsYXNzIEJpZ2dlc3RJbnRDb252ZXJ0aWJsZSB7CisgcHVi
bGljOgorICBvcGVyYXRvciA6OnRlc3Rpbmc6OmludGVybmFsOjpCaWdnZXN0SW50KCkgY29uc3Qg
eyByZXR1cm4gNDI7IH0KK307CisKKy8vIEEgdXNlci1kZWZpbmVkIHVucHJpbnRhYmxlIGNsYXNz
IHRlbXBsYXRlIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CitjbGFzcyBVbnByaW50YWJsZVRlbXBsYXRlSW5HbG9iYWwgeworIHB1YmxpYzoKKyAgVW5wcmlu
dGFibGVUZW1wbGF0ZUluR2xvYmFsKCkgOiB2YWx1ZV8oKSB7fQorIHByaXZhdGU6CisgIFQgdmFs
dWVfOworfTsKKworLy8gQSB1c2VyLWRlZmluZWQgc3RyZWFtYWJsZSB0eXBlIGluIHRoZSBnbG9i
YWwgbmFtZXNwYWNlLgorY2xhc3MgU3RyZWFtYWJsZUluR2xvYmFsIHsKKyBwdWJsaWM6CisgIHZp
cnR1YWwgflN0cmVhbWFibGVJbkdsb2JhbCgpIHt9Cit9OworCitpbmxpbmUgdm9pZCBvcGVyYXRv
cjw8KDo6c3RkOjpvc3RyZWFtJiBvcywgY29uc3QgU3RyZWFtYWJsZUluR2xvYmFsJiAvKiB4ICov
KSB7CisgIG9zIDw8ICJTdHJlYW1hYmxlSW5HbG9iYWwiOworfQorCit2b2lkIG9wZXJhdG9yPDwo
OjpzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBTdHJlYW1hYmxlSW5HbG9iYWwqIC8qIHggKi8pIHsK
KyAgb3MgPDwgIlN0cmVhbWFibGVJbkdsb2JhbCoiOworfQorCituYW1lc3BhY2UgZm9vIHsKKwor
Ly8gQSB1c2VyLWRlZmluZWQgdW5wcmludGFibGUgdHlwZSBpbiBhIHVzZXIgbmFtZXNwYWNlLgor
Y2xhc3MgVW5wcmludGFibGVJbkZvbyB7CisgcHVibGljOgorICBVbnByaW50YWJsZUluRm9vKCkg
OiB6XygwKSB7IG1lbWNweSh4eV8sICJceEVGXHgxMlx4MFx4MFx4MzRceEFCXHgwXHgwIiwgOCk7
IH0KKyAgZG91YmxlIHooKSBjb25zdCB7IHJldHVybiB6XzsgfQorIHByaXZhdGU6CisgIGNoYXIg
eHlfWzhdOworICBkb3VibGUgel87Cit9OworCisvLyBBIHVzZXItZGVmaW5lZCBwcmludGFibGUg
dHlwZSBpbiBhIHVzZXItY2hvc2VuIG5hbWVzcGFjZS4KK3N0cnVjdCBQcmludGFibGVWaWFQcmlu
dFRvIHsKKyAgUHJpbnRhYmxlVmlhUHJpbnRUbygpIDogdmFsdWUoKSB7fQorICBpbnQgdmFsdWU7
Cit9OworCit2b2lkIFByaW50VG8oY29uc3QgUHJpbnRhYmxlVmlhUHJpbnRUbyYgeCwgOjpzdGQ6
Om9zdHJlYW0qIG9zKSB7CisgICpvcyA8PCAiUHJpbnRhYmxlVmlhUHJpbnRUbzogIiA8PCB4LnZh
bHVlOworfQorCisvLyBBIHR5cGUgd2l0aCBhIHVzZXItZGVmaW5lZCA8PCBmb3IgcHJpbnRpbmcg
aXRzIHBvaW50ZXIuCitzdHJ1Y3QgUG9pbnRlclByaW50YWJsZSB7Cit9OworCis6OnN0ZDo6b3N0
cmVhbSYgb3BlcmF0b3I8PCg6OnN0ZDo6b3N0cmVhbSYgb3MsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBQb2ludGVyUHJpbnRhYmxlKiAvKiB4ICovKSB7CisgIHJldHVybiBvcyA8
PCAiUG9pbnRlclByaW50YWJsZSoiOworfQorCisvLyBBIHVzZXItZGVmaW5lZCBwcmludGFibGUg
Y2xhc3MgdGVtcGxhdGUgaW4gYSB1c2VyLWNob3NlbiBuYW1lc3BhY2UuCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK2NsYXNzIFByaW50YWJsZVZpYVByaW50VG9UZW1wbGF0ZSB7CisgcHVibGljOgor
ICBleHBsaWNpdCBQcmludGFibGVWaWFQcmludFRvVGVtcGxhdGUoY29uc3QgVCYgYV92YWx1ZSkg
OiB2YWx1ZV8oYV92YWx1ZSkge30KKworICBjb25zdCBUJiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IHZhbHVlXzsgfQorIHByaXZhdGU6CisgIFQgdmFsdWVfOworfTsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Cit2b2lkIFByaW50VG8oY29uc3QgUHJpbnRhYmxlVmlhUHJpbnRUb1RlbXBsYXRlPFQ+
JiB4LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgKm9zIDw8ICJQcmludGFibGVWaWFQcmludFRv
VGVtcGxhdGU6ICIgPDwgeC52YWx1ZSgpOworfQorCisvLyBBIHVzZXItZGVmaW5lZCBzdHJlYW1h
YmxlIGNsYXNzIHRlbXBsYXRlIGluIGEgdXNlciBuYW1lc3BhY2UuCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KK2NsYXNzIFN0cmVhbWFibGVUZW1wbGF0ZUluRm9vIHsKKyBwdWJsaWM6CisgIFN0cmVh
bWFibGVUZW1wbGF0ZUluRm9vKCkgOiB2YWx1ZV8oKSB7fQorCisgIGNvbnN0IFQmIHZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gdmFsdWVfOyB9CisgcHJpdmF0ZToKKyAgVCB2YWx1ZV87Cit9OworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2lubGluZSA6OnN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PCg6
OnN0ZDo6b3N0cmVhbSYgb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgU3RyZWFtYWJsZVRlbXBsYXRlSW5Gb288VD4mIHgpIHsKKyAgcmV0dXJuIG9zIDw8ICJTdHJl
YW1hYmxlVGVtcGxhdGVJbkZvbzogIiA8PCB4LnZhbHVlKCk7Cit9CisKK30gIC8vIG5hbWVzcGFj
ZSBmb28KKworbmFtZXNwYWNlIHRlc3RpbmcgeworbmFtZXNwYWNlIGd0ZXN0X3ByaW50ZXJzX3Rl
c3QgeworCit1c2luZyA6OnN0ZDo6ZGVxdWU7Cit1c2luZyA6OnN0ZDo6bGlzdDsKK3VzaW5nIDo6
c3RkOjptYWtlX3BhaXI7Cit1c2luZyA6OnN0ZDo6bWFwOwordXNpbmcgOjpzdGQ6Om11bHRpbWFw
OwordXNpbmcgOjpzdGQ6Om11bHRpc2V0OwordXNpbmcgOjpzdGQ6OnBhaXI7Cit1c2luZyA6OnN0
ZDo6c2V0OwordXNpbmcgOjpzdGQ6OnZlY3RvcjsKK3VzaW5nIDo6dGVzdGluZzo6UHJpbnRUb1N0
cmluZzsKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZvcm1hdEZvckNvbXBhcmlzb25GYWls
dXJlTWVzc2FnZTsKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OkltcGxpY2l0Q2FzdF87Cit1
c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpOYXRpdmVBcnJheTsKK3VzaW5nIDo6dGVzdGluZzo6
aW50ZXJuYWw6OlJFOwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UmVsYXRpb25Ub1NvdXJj
ZVJlZmVyZW5jZTsKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlN0cmluZ3M7Cit1c2luZyA6
OnRlc3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxQcmludDsKK3VzaW5nIDo6dGVzdGluZzo6aW50
ZXJuYWw6OlVuaXZlcnNhbFByaW50ZXI7Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpVbml2
ZXJzYWxUZXJzZVByaW50OworI2lmIEdURVNUX0hBU19UUjFfVFVQTEUgfHwgR1RFU1RfSEFTX1NU
RF9UVVBMRV8KK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlVuaXZlcnNhbFRlcnNlUHJpbnRU
dXBsZUZpZWxkc1RvU3RyaW5nczsKKyNlbmRpZgordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6
c3RyaW5nOworCisjaWYgR1RFU1RfSEFTX0hBU0hfTUFQXworLy8gVGhlIGhhc2hfKiBjbGFzc2Vz
IGFyZSBub3QgcGFydCBvZiB0aGUgQysrIHN0YW5kYXJkLiAgU1RMcG9ydAorLy8gZGVmaW5lcyB0
aGVtIGluIG5hbWVzcGFjZSBzdGQuICBNU1ZDIGRlZmluZXMgdGhlbSBpbiA6OnN0ZGV4dC4gIEdD
QworLy8gZGVmaW5lcyB0aGVtIGluIDo6LgorI2lmZGVmIF9TVExQX0hBU0hfTUFQICAvLyBXZSBn
b3QgPGhhc2hfbWFwPiBmcm9tIFNUTHBvcnQuCit1c2luZyA6OnN0ZDo6aGFzaF9tYXA7Cit1c2lu
ZyA6OnN0ZDo6aGFzaF9zZXQ7Cit1c2luZyA6OnN0ZDo6aGFzaF9tdWx0aW1hcDsKK3VzaW5nIDo6
c3RkOjpoYXNoX211bHRpc2V0OworI2VsaWYgX01TQ19WRVIKK3VzaW5nIDo6c3RkZXh0OjpoYXNo
X21hcDsKK3VzaW5nIDo6c3RkZXh0OjpoYXNoX3NldDsKK3VzaW5nIDo6c3RkZXh0OjpoYXNoX211
bHRpbWFwOwordXNpbmcgOjpzdGRleHQ6Omhhc2hfbXVsdGlzZXQ7CisjZW5kaWYKKyNlbmRpZgor
CisvLyBQcmludHMgYSB2YWx1ZSB0byBhIHN0cmluZyB1c2luZyB0aGUgdW5pdmVyc2FsIHZhbHVl
IHByaW50ZXIuICBUaGlzCisvLyBpcyBhIGhlbHBlciBmb3IgdGVzdGluZyBVbml2ZXJzYWxQcmlu
dGVyPFQ+OjpQcmludCgpIGZvciB2YXJpb3VzIHR5cGVzLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CitzdGQ6OnN0cmluZyBQcmludChjb25zdCBUJiB2YWx1ZSkgeworICA6OnN0ZDo6c3RyaW5nc3Ry
ZWFtIHNzOworICBVbml2ZXJzYWxQcmludGVyPFQ+OjpQcmludCh2YWx1ZSwgJnNzKTsKKyAgcmV0
dXJuIHNzLnN0cigpOworfQorCisvLyBQcmludHMgYSB2YWx1ZSBwYXNzZWQgYnkgcmVmZXJlbmNl
IHRvIGEgc3RyaW5nLCB1c2luZyB0aGUgdW5pdmVyc2FsCisvLyB2YWx1ZSBwcmludGVyLiAgVGhp
cyBpcyBhIGhlbHBlciBmb3IgdGVzdGluZworLy8gVW5pdmVyc2FsUHJpbnRlcjxUJj46OlByaW50
KCkgZm9yIHZhcmlvdXMgdHlwZXMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0ZDo6c3RyaW5n
IFByaW50QnlSZWYoY29uc3QgVCYgdmFsdWUpIHsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczsK
KyAgVW5pdmVyc2FsUHJpbnRlcjxUJj46OlByaW50KHZhbHVlLCAmc3MpOworICByZXR1cm4gc3Mu
c3RyKCk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIHZhcmlvdXMgZW51bSB0eXBlcy4KKworVEVT
VChQcmludEVudW1UZXN0LCBBbm9ueW1vdXNFbnVtKSB7CisgIEVYUEVDVF9FUSgiLTEiLCBQcmlu
dChrQUUxKSk7CisgIEVYUEVDVF9FUSgiMSIsIFByaW50KGtBRTIpKTsKK30KKworVEVTVChQcmlu
dEVudW1UZXN0LCBFbnVtV2l0aG91dFByaW50ZXIpIHsKKyAgRVhQRUNUX0VRKCItMiIsIFByaW50
KGtFV1AxKSk7CisgIEVYUEVDVF9FUSgiNDIiLCBQcmludChrRVdQMikpOworfQorCitURVNUKFBy
aW50RW51bVRlc3QsIEVudW1XaXRoU3RyZWFtaW5nKSB7CisgIEVYUEVDVF9FUSgia0VXUzEiLCBQ
cmludChrRVdTMSkpOworICBFWFBFQ1RfRVEoImludmFsaWQiLCBQcmludChzdGF0aWNfY2FzdDxF
bnVtV2l0aFN0cmVhbWluZz4oMCkpKTsKK30KKworVEVTVChQcmludEVudW1UZXN0LCBFbnVtV2l0
aFByaW50VG8pIHsKKyAgRVhQRUNUX0VRKCJrRVdQVDEiLCBQcmludChrRVdQVDEpKTsKKyAgRVhQ
RUNUX0VRKCJpbnZhbGlkIiwgUHJpbnQoc3RhdGljX2Nhc3Q8RW51bVdpdGhQcmludFRvPigwKSkp
OworfQorCisvLyBUZXN0cyBwcmludGluZyBhIGNsYXNzIGltcGxpY2l0bHkgY29udmVydGlibGUg
dG8gQmlnZ2VzdEludC4KKworVEVTVChQcmludENsYXNzVGVzdCwgQmlnZ2VzdEludENvbnZlcnRp
YmxlKSB7CisgIEVYUEVDVF9FUSgiNDIiLCBQcmludChCaWdnZXN0SW50Q29udmVydGlibGUoKSkp
OworfQorCisvLyBUZXN0cyBwcmludGluZyB2YXJpb3VzIGNoYXIgdHlwZXMuCisKKy8vIGNoYXIu
CitURVNUKFByaW50Q2hhclRlc3QsIFBsYWluQ2hhcikgeworICBFWFBFQ1RfRVEoIidcXDAnIiwg
UHJpbnQoJ1wwJykpOworICBFWFBFQ1RfRVEoIidcXCcnICgzOSwgMHgyNykiLCBQcmludCgnXCcn
KSk7CisgIEVYUEVDVF9FUSgiJ1wiJyAoMzQsIDB4MjIpIiwgUHJpbnQoJyInKSk7CisgIEVYUEVD
VF9FUSgiJz8nICg2MywgMHgzRikiLCBQcmludCgnPycpKTsKKyAgRVhQRUNUX0VRKCInXFxcXCcg
KDkyLCAweDVDKSIsIFByaW50KCdcXCcpKTsKKyAgRVhQRUNUX0VRKCInXFxhJyAoNykiLCBQcmlu
dCgnXGEnKSk7CisgIEVYUEVDVF9FUSgiJ1xcYicgKDgpIiwgUHJpbnQoJ1xiJykpOworICBFWFBF
Q1RfRVEoIidcXGYnICgxMiwgMHhDKSIsIFByaW50KCdcZicpKTsKKyAgRVhQRUNUX0VRKCInXFxu
JyAoMTAsIDB4QSkiLCBQcmludCgnXG4nKSk7CisgIEVYUEVDVF9FUSgiJ1xccicgKDEzLCAweEQp
IiwgUHJpbnQoJ1xyJykpOworICBFWFBFQ1RfRVEoIidcXHQnICg5KSIsIFByaW50KCdcdCcpKTsK
KyAgRVhQRUNUX0VRKCInXFx2JyAoMTEsIDB4QikiLCBQcmludCgnXHYnKSk7CisgIEVYUEVDVF9F
USgiJ1xceDdGJyAoMTI3KSIsIFByaW50KCdceDdGJykpOworICBFWFBFQ1RfRVEoIidcXHhGRicg
KDI1NSkiLCBQcmludCgnXHhGRicpKTsKKyAgRVhQRUNUX0VRKCInICcgKDMyLCAweDIwKSIsIFBy
aW50KCcgJykpOworICBFWFBFQ1RfRVEoIidhJyAoOTcsIDB4NjEpIiwgUHJpbnQoJ2EnKSk7Cit9
CisKKy8vIHNpZ25lZCBjaGFyLgorVEVTVChQcmludENoYXJUZXN0LCBTaWduZWRDaGFyKSB7Cisg
IEVYUEVDVF9FUSgiJ1xcMCciLCBQcmludChzdGF0aWNfY2FzdDxzaWduZWQgY2hhcj4oJ1wwJykp
KTsKKyAgRVhQRUNUX0VRKCInXFx4Q0UnICgtNTApIiwKKyAgICAgICAgICAgIFByaW50KHN0YXRp
Y19jYXN0PHNpZ25lZCBjaGFyPigtNTApKSk7Cit9CisKKy8vIHVuc2lnbmVkIGNoYXIuCitURVNU
KFByaW50Q2hhclRlc3QsIFVuc2lnbmVkQ2hhcikgeworICBFWFBFQ1RfRVEoIidcXDAnIiwgUHJp
bnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oJ1wwJykpKTsKKyAgRVhQRUNUX0VRKCInYicg
KDk4LCAweDYyKSIsCisgICAgICAgICAgICBQcmludChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFy
PignYicpKSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIG90aGVyIHNpbXBsZSwgYnVpbHQtaW4g
dHlwZXMuCisKKy8vIGJvb2wuCitURVNUKFByaW50QnVpbHRJblR5cGVUZXN0LCBCb29sKSB7Cisg
IEVYUEVDVF9FUSgiZmFsc2UiLCBQcmludChmYWxzZSkpOworICBFWFBFQ1RfRVEoInRydWUiLCBQ
cmludCh0cnVlKSk7Cit9CisKKy8vIHdjaGFyX3QuCitURVNUKFByaW50QnVpbHRJblR5cGVUZXN0
LCBXY2hhcl90KSB7CisgIEVYUEVDVF9FUSgiTCdcXDAnIiwgUHJpbnQoTCdcMCcpKTsKKyAgRVhQ
RUNUX0VRKCJMJ1xcJycgKDM5LCAweDI3KSIsIFByaW50KEwnXCcnKSk7CisgIEVYUEVDVF9FUSgi
TCdcIicgKDM0LCAweDIyKSIsIFByaW50KEwnIicpKTsKKyAgRVhQRUNUX0VRKCJMJz8nICg2Mywg
MHgzRikiLCBQcmludChMJz8nKSk7CisgIEVYUEVDVF9FUSgiTCdcXFxcJyAoOTIsIDB4NUMpIiwg
UHJpbnQoTCdcXCcpKTsKKyAgRVhQRUNUX0VRKCJMJ1xcYScgKDcpIiwgUHJpbnQoTCdcYScpKTsK
KyAgRVhQRUNUX0VRKCJMJ1xcYicgKDgpIiwgUHJpbnQoTCdcYicpKTsKKyAgRVhQRUNUX0VRKCJM
J1xcZicgKDEyLCAweEMpIiwgUHJpbnQoTCdcZicpKTsKKyAgRVhQRUNUX0VRKCJMJ1xcbicgKDEw
LCAweEEpIiwgUHJpbnQoTCdcbicpKTsKKyAgRVhQRUNUX0VRKCJMJ1xccicgKDEzLCAweEQpIiwg
UHJpbnQoTCdccicpKTsKKyAgRVhQRUNUX0VRKCJMJ1xcdCcgKDkpIiwgUHJpbnQoTCdcdCcpKTsK
KyAgRVhQRUNUX0VRKCJMJ1xcdicgKDExLCAweEIpIiwgUHJpbnQoTCdcdicpKTsKKyAgRVhQRUNU
X0VRKCJMJ1xceDdGJyAoMTI3KSIsIFByaW50KEwnXHg3RicpKTsKKyAgRVhQRUNUX0VRKCJMJ1xc
eEZGJyAoMjU1KSIsIFByaW50KEwnXHhGRicpKTsKKyAgRVhQRUNUX0VRKCJMJyAnICgzMiwgMHgy
MCkiLCBQcmludChMJyAnKSk7CisgIEVYUEVDVF9FUSgiTCdhJyAoOTcsIDB4NjEpIiwgUHJpbnQo
TCdhJykpOworICBFWFBFQ1RfRVEoIkwnXFx4NTc2JyAoMTM5OCkiLCBQcmludChzdGF0aWNfY2Fz
dDx3Y2hhcl90PigweDU3NikpKTsKKyAgRVhQRUNUX0VRKCJMJ1xceEM3NEQnICg1MTAyMSkiLCBQ
cmludChzdGF0aWNfY2FzdDx3Y2hhcl90PigweEM3NEQpKSk7Cit9CisKKy8vIFRlc3QgdGhhdCBJ
bnQ2NCBwcm92aWRlcyBtb3JlIHN0b3JhZ2UgdGhhbiB3Y2hhcl90LgorVEVTVChQcmludFR5cGVT
aXplVGVzdCwgV2NoYXJfdCkgeworICBFWFBFQ1RfTFQoc2l6ZW9mKHdjaGFyX3QpLCBzaXplb2Yo
dGVzdGluZzo6aW50ZXJuYWw6OkludDY0KSk7Cit9CisKKy8vIFZhcmlvdXMgaW50ZWdlciB0eXBl
cy4KK1RFU1QoUHJpbnRCdWlsdEluVHlwZVRlc3QsIEludGVnZXIpIHsKKyAgRVhQRUNUX0VRKCIn
XFx4RkYnICgyNTUpIiwgUHJpbnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMjU1KSkpOyAg
Ly8gdWludDgKKyAgRVhQRUNUX0VRKCInXFx4ODAnICgtMTI4KSIsIFByaW50KHN0YXRpY19jYXN0
PHNpZ25lZCBjaGFyPigtMTI4KSkpOyAgLy8gaW50OAorICBFWFBFQ1RfRVEoIjY1NTM1IiwgUHJp
bnQoVVNIUlRfTUFYKSk7ICAvLyB1aW50MTYKKyAgRVhQRUNUX0VRKCItMzI3NjgiLCBQcmludChT
SFJUX01JTikpOyAgLy8gaW50MTYKKyAgRVhQRUNUX0VRKCI0Mjk0OTY3Mjk1IiwgUHJpbnQoVUlO
VF9NQVgpKTsgIC8vIHVpbnQzMgorICBFWFBFQ1RfRVEoIi0yMTQ3NDgzNjQ4IiwgUHJpbnQoSU5U
X01JTikpOyAgLy8gaW50MzIKKyAgRVhQRUNUX0VRKCIxODQ0Njc0NDA3MzcwOTU1MTYxNSIsCisg
ICAgICAgICAgICBQcmludChzdGF0aWNfY2FzdDx0ZXN0aW5nOjppbnRlcm5hbDo6VUludDY0Pigt
MSkpKTsgIC8vIHVpbnQ2NAorICBFWFBFQ1RfRVEoIi05MjIzMzcyMDM2ODU0Nzc1ODA4IiwKKyAg
ICAgICAgICAgIFByaW50KHN0YXRpY19jYXN0PHRlc3Rpbmc6OmludGVybmFsOjpJbnQ2ND4oMSkg
PDwgNjMpKTsgIC8vIGludDY0Cit9CisKKy8vIFNpemUgdHlwZXMuCitURVNUKFByaW50QnVpbHRJ
blR5cGVUZXN0LCBTaXplX3QpIHsKKyAgRVhQRUNUX0VRKCIxIiwgUHJpbnQoc2l6ZW9mKCdhJykp
KTsgIC8vIHNpemVfdC4KKyNpZiAhR1RFU1RfT1NfV0lORE9XUworICAvLyBXaW5kb3dzIGhhcyBu
byBzc2l6ZV90IHR5cGUuCisgIEVYUEVDVF9FUSgiLTIiLCBQcmludChzdGF0aWNfY2FzdDxzc2l6
ZV90PigtMikpKTsgIC8vIHNzaXplX3QuCisjZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTCit9
CisKKy8vIEZsb2F0aW5nLXBvaW50cy4KK1RFU1QoUHJpbnRCdWlsdEluVHlwZVRlc3QsIEZsb2F0
aW5nUG9pbnRzKSB7CisgIEVYUEVDVF9FUSgiMS41IiwgUHJpbnQoMS41ZikpOyAgIC8vIGZsb2F0
CisgIEVYUEVDVF9FUSgiLTIuNSIsIFByaW50KC0yLjUpKTsgIC8vIGRvdWJsZQorfQorCisvLyBT
aW5jZSA6OnN0ZDo6c3RyaW5nc3RyZWFtOjpvcGVyYXRvcjw8KGNvbnN0IHZvaWQgKikgZm9ybWF0
cyB0aGUgcG9pbnRlcgorLy8gb3V0cHV0IGRpZmZlcmVudGx5IHdpdGggZGlmZmVyZW50IGNvbXBp
bGVycywgd2UgaGF2ZSB0byBjcmVhdGUgdGhlIGV4cGVjdGVkCisvLyBvdXRwdXQgZmlyc3QgYW5k
IHVzZSBpdCBhcyBvdXIgZXhwZWN0YXRpb24uCitzdGF0aWMgc3RkOjpzdHJpbmcgUHJpbnRQb2lu
dGVyKGNvbnN0IHZvaWQqIHApIHsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBleHBlY3RlZF9yZXN1
bHRfc3RyZWFtOworICBleHBlY3RlZF9yZXN1bHRfc3RyZWFtIDw8IHA7CisgIHJldHVybiBleHBl
Y3RlZF9yZXN1bHRfc3RyZWFtLnN0cigpOworfQorCisvLyBUZXN0cyBwcmludGluZyBDIHN0cmlu
Z3MuCisKKy8vIGNvbnN0IGNoYXIqLgorVEVTVChQcmludENTdHJpbmdUZXN0LCBDb25zdCkgewor
ICBjb25zdCBjaGFyKiBwID0gIldvcmxkIjsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihwKSAr
ICIgcG9pbnRpbmcgdG8gXCJXb3JsZFwiIiwgUHJpbnQocCkpOworfQorCisvLyBjaGFyKi4KK1RF
U1QoUHJpbnRDU3RyaW5nVGVzdCwgTm9uQ29uc3QpIHsKKyAgY2hhciBwW10gPSAiSGkiOworICBF
WFBFQ1RfRVEoUHJpbnRQb2ludGVyKHApICsgIiBwb2ludGluZyB0byBcIkhpXCIiLAorICAgICAg
ICAgICAgUHJpbnQoc3RhdGljX2Nhc3Q8Y2hhcio+KHApKSk7Cit9CisKKy8vIE5VTEwgQyBzdHJp
bmcuCitURVNUKFByaW50Q1N0cmluZ1Rlc3QsIE51bGwpIHsKKyAgY29uc3QgY2hhciogcCA9IE5V
TEw7CisgIEVYUEVDVF9FUSgiTlVMTCIsIFByaW50KHApKTsKK30KKworLy8gVGVzdHMgdGhhdCBD
IHN0cmluZ3MgYXJlIGVzY2FwZWQgcHJvcGVybHkuCitURVNUKFByaW50Q1N0cmluZ1Rlc3QsIEVz
Y2FwZXNQcm9wZXJseSkgeworICBjb25zdCBjaGFyKiBwID0gIidcIj9cXFxhXGJcZlxuXHJcdFx2
XHg3Rlx4RkYgYSI7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIocCkgKyAiIHBvaW50aW5nIHRv
IFwiJ1xcXCI/XFxcXFxcYVxcYlxcZiIKKyAgICAgICAgICAgICJcXG5cXHJcXHRcXHZcXHg3Rlxc
eEZGIGFcIiIsCisgICAgICAgICAgICBQcmludChwKSk7Cit9CisKKy8vIE1TVkMgY29tcGlsZXIg
Y2FuIGJlIGNvbmZpZ3VyZWQgdG8gZGVmaW5lIHdoYXJfdCBhcyBhIHR5cGVkZWYKKy8vIG9mIHVu
c2lnbmVkIHNob3J0LiBEZWZpbmluZyBhbiBvdmVybG9hZCBmb3IgY29uc3Qgd2NoYXJfdCogaW4g
dGhhdCBjYXNlCisvLyB3b3VsZCBjYXVzZSBwb2ludGVycyB0byB1bnNpZ25lZCBzaG9ydHMgYmUg
cHJpbnRlZCBhcyB3aWRlIHN0cmluZ3MsCisvLyBwb3NzaWJseSBhY2Nlc3NpbmcgbW9yZSBtZW1v
cnkgdGhhbiBpbnRlbmRlZCBhbmQgY2F1c2luZyBpbnZhbGlkCisvLyBtZW1vcnkgYWNjZXNzZXMu
IE1TVkMgZGVmaW5lcyBfTkFUSVZFX1dDSEFSX1RfREVGSU5FRCBzeW1ib2wgd2hlbgorLy8gd2No
YXJfdCBpcyBpbXBsZW1lbnRlZCBhcyBhIG5hdGl2ZSB0eXBlLgorI2lmICFkZWZpbmVkKF9NU0Nf
VkVSKSB8fCBkZWZpbmVkKF9OQVRJVkVfV0NIQVJfVF9ERUZJTkVEKQorCisvLyBjb25zdCB3Y2hh
cl90Ki4KK1RFU1QoUHJpbnRXaWRlQ1N0cmluZ1Rlc3QsIENvbnN0KSB7CisgIGNvbnN0IHdjaGFy
X3QqIHAgPSBMIldvcmxkIjsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihwKSArICIgcG9pbnRp
bmcgdG8gTFwiV29ybGRcIiIsIFByaW50KHApKTsKK30KKworLy8gd2NoYXJfdCouCitURVNUKFBy
aW50V2lkZUNTdHJpbmdUZXN0LCBOb25Db25zdCkgeworICB3Y2hhcl90IHBbXSA9IEwiSGkiOwor
ICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHApICsgIiBwb2ludGluZyB0byBMXCJIaVwiIiwKKyAg
ICAgICAgICAgIFByaW50KHN0YXRpY19jYXN0PHdjaGFyX3QqPihwKSkpOworfQorCisvLyBOVUxM
IHdpZGUgQyBzdHJpbmcuCitURVNUKFByaW50V2lkZUNTdHJpbmdUZXN0LCBOdWxsKSB7CisgIGNv
bnN0IHdjaGFyX3QqIHAgPSBOVUxMOworICBFWFBFQ1RfRVEoIk5VTEwiLCBQcmludChwKSk7Cit9
CisKKy8vIFRlc3RzIHRoYXQgd2lkZSBDIHN0cmluZ3MgYXJlIGVzY2FwZWQgcHJvcGVybHkuCitU
RVNUKFByaW50V2lkZUNTdHJpbmdUZXN0LCBFc2NhcGVzUHJvcGVybHkpIHsKKyAgY29uc3Qgd2No
YXJfdCBzW10gPSB7J1wnJywgJyInLCAnPycsICdcXCcsICdcYScsICdcYicsICdcZicsICdcbics
ICdccicsCisgICAgICAgICAgICAgICAgICAgICAgICdcdCcsICdcdicsIDB4RDMsIDB4NTc2LCAw
eDhEMywgMHhDNzRELCAnICcsICdhJywgJ1wwJ307CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIo
cykgKyAiIHBvaW50aW5nIHRvIExcIidcXFwiP1xcXFxcXGFcXGJcXGYiCisgICAgICAgICAgICAi
XFxuXFxyXFx0XFx2XFx4RDNcXHg1NzZcXHg4RDNcXHhDNzREIGFcIiIsCisgICAgICAgICAgICBQ
cmludChzdGF0aWNfY2FzdDxjb25zdCB3Y2hhcl90Kj4ocykpKTsKK30KKyNlbmRpZiAgLy8gbmF0
aXZlIHdjaGFyX3QKKworLy8gVGVzdHMgcHJpbnRpbmcgcG9pbnRlcnMgdG8gb3RoZXIgY2hhciB0
eXBlcy4KKworLy8gc2lnbmVkIGNoYXIqLgorVEVTVChQcmludENoYXJQb2ludGVyVGVzdCwgU2ln
bmVkQ2hhcikgeworICBzaWduZWQgY2hhciogcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8c2lnbmVkIGNo
YXIqPigweDEyMzQpOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHApLCBQcmludChwKSk7Cisg
IHAgPSBOVUxMOworICBFWFBFQ1RfRVEoIk5VTEwiLCBQcmludChwKSk7Cit9CisKKy8vIGNvbnN0
IHNpZ25lZCBjaGFyKi4KK1RFU1QoUHJpbnRDaGFyUG9pbnRlclRlc3QsIENvbnN0U2lnbmVkQ2hh
cikgeworICBzaWduZWQgY2hhciogcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8c2lnbmVkIGNoYXIqPigw
eDEyMzQpOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHApLCBQcmludChwKSk7CisgIHAgPSBO
VUxMOworICBFWFBFQ1RfRVEoIk5VTEwiLCBQcmludChwKSk7Cit9CisKKy8vIHVuc2lnbmVkIGNo
YXIqLgorVEVTVChQcmludENoYXJQb2ludGVyVGVzdCwgVW5zaWduZWRDaGFyKSB7CisgIHVuc2ln
bmVkIGNoYXIqIHAgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPigweDEyMzQpOwor
ICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHApLCBQcmludChwKSk7CisgIHAgPSBOVUxMOworICBF
WFBFQ1RfRVEoIk5VTEwiLCBQcmludChwKSk7Cit9CisKKy8vIGNvbnN0IHVuc2lnbmVkIGNoYXIq
LgorVEVTVChQcmludENoYXJQb2ludGVyVGVzdCwgQ29uc3RVbnNpZ25lZENoYXIpIHsKKyAgY29u
c3QgdW5zaWduZWQgY2hhciogcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hh
cio+KDB4MTIzNCk7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIocCksIFByaW50KHApKTsKKyAg
cCA9IE5VTEw7CisgIEVYUEVDVF9FUSgiTlVMTCIsIFByaW50KHApKTsKK30KKworLy8gVGVzdHMg
cHJpbnRpbmcgcG9pbnRlcnMgdG8gc2ltcGxlLCBidWlsdC1pbiB0eXBlcy4KKworLy8gYm9vbCou
CitURVNUKFByaW50UG9pbnRlclRvQnVpbHRJblR5cGVUZXN0LCBCb29sKSB7CisgIGJvb2wqIHAg
PSByZWludGVycHJldF9jYXN0PGJvb2wqPigweEFCQ0QpOworICBFWFBFQ1RfRVEoUHJpbnRQb2lu
dGVyKHApLCBQcmludChwKSk7CisgIHAgPSBOVUxMOworICBFWFBFQ1RfRVEoIk5VTEwiLCBQcmlu
dChwKSk7Cit9CisKKy8vIHZvaWQqLgorVEVTVChQcmludFBvaW50ZXJUb0J1aWx0SW5UeXBlVGVz
dCwgVm9pZCkgeworICB2b2lkKiBwID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMHhBQkNEKTsK
KyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihwKSwgUHJpbnQocCkpOworICBwID0gTlVMTDsKKyAg
RVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQocCkpOworfQorCisvLyBjb25zdCB2b2lkKi4KK1RFU1Qo
UHJpbnRQb2ludGVyVG9CdWlsdEluVHlwZVRlc3QsIENvbnN0Vm9pZCkgeworICBjb25zdCB2b2lk
KiBwID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4oMHhBQkNEKTsKKyAgRVhQRUNUX0VR
KFByaW50UG9pbnRlcihwKSwgUHJpbnQocCkpOworICBwID0gTlVMTDsKKyAgRVhQRUNUX0VRKCJO
VUxMIiwgUHJpbnQocCkpOworfQorCisvLyBUZXN0cyBwcmludGluZyBwb2ludGVycyB0byBwb2lu
dGVycy4KK1RFU1QoUHJpbnRQb2ludGVyVG9Qb2ludGVyVGVzdCwgSW50UG9pbnRlclBvaW50ZXIp
IHsKKyAgaW50KiogcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50Kio+KDB4QUJDRCk7CisgIEVYUEVD
VF9FUShQcmludFBvaW50ZXIocCksIFByaW50KHApKTsKKyAgcCA9IE5VTEw7CisgIEVYUEVDVF9F
USgiTlVMTCIsIFByaW50KHApKTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgKG5vbi1tZW1iZXIp
IGZ1bmN0aW9uIHBvaW50ZXJzLgorCit2b2lkIE15RnVuY3Rpb24oaW50IC8qIG4gKi8pIHt9CisK
K1RFU1QoUHJpbnRQb2ludGVyVGVzdCwgTm9uTWVtYmVyRnVuY3Rpb25Qb2ludGVyKSB7CisgIC8v
IFdlIGNhbm5vdCBkaXJlY3RseSBjYXN0ICZNeUZ1bmN0aW9uIHRvIGNvbnN0IHZvaWQqIGJlY2F1
c2UgdGhlCisgIC8vIHN0YW5kYXJkIGRpc2FsbG93cyBjYXN0aW5nIGJldHdlZW4gcG9pbnRlcnMg
dG8gZnVuY3Rpb25zIGFuZAorICAvLyBwb2ludGVycyB0byBvYmplY3RzLCBhbmQgc29tZSBjb21w
aWxlcnMgKGUuZy4gR0NDIDMuNCkgZW5mb3JjZQorICAvLyB0aGlzIGxpbWl0YXRpb24uCisgIEVY
UEVDVF9FUSgKKyAgICAgIFByaW50UG9pbnRlcihyZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQq
PigKKyAgICAgICAgICByZWludGVycHJldF9jYXN0PGludGVybmFsOjpCaWdnZXN0SW50PigmTXlG
dW5jdGlvbikpKSwKKyAgICAgIFByaW50KCZNeUZ1bmN0aW9uKSk7CisgIGludCAoKnApKGJvb2wp
ID0gTlVMTDsgIC8vIE5PTElOVAorICBFWFBFQ1RfRVEoIk5VTEwiLCBQcmludChwKSk7Cit9CisK
Ky8vIEFuIGFzc2VydGlvbiBwcmVkaWNhdGUgZGV0ZXJtaW5pbmcgd2hldGhlciBhIG9uZSBzdHJp
bmcgaXMgYSBwcmVmaXggZm9yCisvLyBhbm90aGVyLgordGVtcGxhdGUgPHR5cGVuYW1lIFN0cmlu
Z1R5cGU+CitBc3NlcnRpb25SZXN1bHQgSGFzUHJlZml4KGNvbnN0IFN0cmluZ1R5cGUmIHN0ciwg
Y29uc3QgU3RyaW5nVHlwZSYgcHJlZml4KSB7CisgIGlmIChzdHIuZmluZChwcmVmaXgsIDApID09
IDApCisgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKKworICBjb25zdCBib29sIGlzX3dp
ZGVfc3RyaW5nID0gc2l6ZW9mKHByZWZpeFswXSkgPiAxOworICBjb25zdCBjaGFyKiBjb25zdCBi
ZWdpbl9zdHJpbmdfcXVvdGUgPSBpc193aWRlX3N0cmluZyA/ICJMXCIiIDogIlwiIjsKKyAgcmV0
dXJuIEFzc2VydGlvbkZhaWx1cmUoKQorICAgICAgPDwgYmVnaW5fc3RyaW5nX3F1b3RlIDw8IHBy
ZWZpeCA8PCAiXCIgaXMgbm90IGEgcHJlZml4IG9mICIKKyAgICAgIDw8IGJlZ2luX3N0cmluZ19x
dW90ZSA8PCBzdHIgPDwgIlwiXG4iOworfQorCisvLyBUZXN0cyBwcmludGluZyBtZW1iZXIgdmFy
aWFibGUgcG9pbnRlcnMuICBBbHRob3VnaCB0aGV5IGFyZSBjYWxsZWQKKy8vIHBvaW50ZXJzLCB0
aGV5IGRvbid0IHBvaW50IHRvIGEgbG9jYXRpb24gaW4gdGhlIGFkZHJlc3Mgc3BhY2UuCisvLyBU
aGVpciByZXByZXNlbnRhdGlvbiBpcyBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkLiAgVGh1cyB0aGV5
IHdpbGwgYmUKKy8vIHByaW50ZWQgYXMgcmF3IGJ5dGVzLgorCitzdHJ1Y3QgRm9vIHsKKyBwdWJs
aWM6CisgIHZpcnR1YWwgfkZvbygpIHt9CisgIGludCBNeU1ldGhvZChjaGFyIHgpIHsgcmV0dXJu
IHggKyAxOyB9CisgIHZpcnR1YWwgY2hhciBNeVZpcnR1YWxNZXRob2QoaW50IC8qIG4gKi8pIHsg
cmV0dXJuICdhJzsgfQorCisgIGludCB2YWx1ZTsKK307CisKK1RFU1QoUHJpbnRQb2ludGVyVGVz
dCwgTWVtYmVyVmFyaWFibGVQb2ludGVyKSB7CisgIEVYUEVDVF9UUlVFKEhhc1ByZWZpeChQcmlu
dCgmRm9vOjp2YWx1ZSksCisgICAgICAgICAgICAgICAgICAgICAgICBQcmludChzaXplb2YoJkZv
bzo6dmFsdWUpKSArICItYnl0ZSBvYmplY3QgIikpOworICBpbnQgKEZvbzo6KnApID0gTlVMTDsg
IC8vIE5PTElOVAorICBFWFBFQ1RfVFJVRShIYXNQcmVmaXgoUHJpbnQocCksCisgICAgICAgICAg
ICAgICAgICAgICAgICBQcmludChzaXplb2YocCkpICsgIi1ieXRlIG9iamVjdCAiKSk7Cit9CisK
Ky8vIFRlc3RzIHByaW50aW5nIG1lbWJlciBmdW5jdGlvbiBwb2ludGVycy4gIEFsdGhvdWdoIHRo
ZXkgYXJlIGNhbGxlZAorLy8gcG9pbnRlcnMsIHRoZXkgZG9uJ3QgcG9pbnQgdG8gYSBsb2NhdGlv
biBpbiB0aGUgYWRkcmVzcyBzcGFjZS4KKy8vIFRoZWlyIHJlcHJlc2VudGF0aW9uIGlzIGltcGxl
bWVudGF0aW9uLWRlZmluZWQuICBUaHVzIHRoZXkgd2lsbCBiZQorLy8gcHJpbnRlZCBhcyByYXcg
Ynl0ZXMuCitURVNUKFByaW50UG9pbnRlclRlc3QsIE1lbWJlckZ1bmN0aW9uUG9pbnRlcikgewor
ICBFWFBFQ1RfVFJVRShIYXNQcmVmaXgoUHJpbnQoJkZvbzo6TXlNZXRob2QpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgUHJpbnQoc2l6ZW9mKCZGb286Ok15TWV0aG9kKSkgKyAiLWJ5dGUgb2Jq
ZWN0ICIpKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBIYXNQcmVmaXgoUHJpbnQoJkZvbzo6TXlW
aXJ0dWFsTWV0aG9kKSwKKyAgICAgICAgICAgICAgICBQcmludChzaXplb2YoKCZGb286Ok15Vmly
dHVhbE1ldGhvZCkpKSArICItYnl0ZSBvYmplY3QgIikpOworICBpbnQgKEZvbzo6KnApKGNoYXIp
ID0gTlVMTDsgIC8vIE5PTElOVAorICBFWFBFQ1RfVFJVRShIYXNQcmVmaXgoUHJpbnQocCksCisg
ICAgICAgICAgICAgICAgICAgICAgICBQcmludChzaXplb2YocCkpICsgIi1ieXRlIG9iamVjdCAi
KSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIEMgYXJyYXlzLgorCisvLyBUaGUgZGlmZmVyZW5j
ZSBiZXR3ZWVuIHRoaXMgYW5kIFByaW50KCkgaXMgdGhhdCBpdCBlbnN1cmVzIHRoYXQgdGhlCisv
LyBhcmd1bWVudCBpcyBhIHJlZmVyZW5jZSB0byBhbiBhcnJheS4KK3RlbXBsYXRlIDx0eXBlbmFt
ZSBULCBzaXplX3QgTj4KK3N0ZDo6c3RyaW5nIFByaW50QXJyYXlIZWxwZXIoVCAoJmEpW05dKSB7
CisgIHJldHVybiBQcmludChhKTsKK30KKworLy8gT25lLWRpbWVuc2lvbmFsIGFycmF5LgorVEVT
VChQcmludEFycmF5VGVzdCwgT25lRGltZW5zaW9uYWxBcnJheSkgeworICBpbnQgYVs1XSA9IHsg
MSwgMiwgMywgNCwgNSB9OworICBFWFBFQ1RfRVEoInsgMSwgMiwgMywgNCwgNSB9IiwgUHJpbnRB
cnJheUhlbHBlcihhKSk7Cit9CisKKy8vIFR3by1kaW1lbnNpb25hbCBhcnJheS4KK1RFU1QoUHJp
bnRBcnJheVRlc3QsIFR3b0RpbWVuc2lvbmFsQXJyYXkpIHsKKyAgaW50IGFbMl1bNV0gPSB7Cisg
ICAgeyAxLCAyLCAzLCA0LCA1IH0sCisgICAgeyA2LCA3LCA4LCA5LCAwIH0KKyAgfTsKKyAgRVhQ
RUNUX0VRKCJ7IHsgMSwgMiwgMywgNCwgNSB9LCB7IDYsIDcsIDgsIDksIDAgfSB9IiwgUHJpbnRB
cnJheUhlbHBlcihhKSk7Cit9CisKKy8vIEFycmF5IG9mIGNvbnN0IGVsZW1lbnRzLgorVEVTVChQ
cmludEFycmF5VGVzdCwgQ29uc3RBcnJheSkgeworICBjb25zdCBib29sIGFbMV0gPSB7IGZhbHNl
IH07CisgIEVYUEVDVF9FUSgieyBmYWxzZSB9IiwgUHJpbnRBcnJheUhlbHBlcihhKSk7Cit9CisK
Ky8vIGNoYXIgYXJyYXkgd2l0aG91dCB0ZXJtaW5hdGluZyBOVUwuCitURVNUKFByaW50QXJyYXlU
ZXN0LCBDaGFyQXJyYXlXaXRoTm9UZXJtaW5hdGluZ051bCkgeworICAvLyBBcnJheSBhIGNvbnRh
aW5zICdcMCcgaW4gdGhlIG1pZGRsZSBhbmQgZG9lc24ndCBlbmQgd2l0aCAnXDAnLgorICBjaGFy
IGFbXSA9IHsgJ0gnLCAnXDAnLCAnaScgfTsKKyAgRVhQRUNUX0VRKCJcIkhcXDBpXCIgKG5vIHRl
cm1pbmF0aW5nIE5VTCkiLCBQcmludEFycmF5SGVscGVyKGEpKTsKK30KKworLy8gY29uc3QgY2hh
ciBhcnJheSB3aXRoIHRlcm1pbmF0aW5nIE5VTC4KK1RFU1QoUHJpbnRBcnJheVRlc3QsIENvbnN0
Q2hhckFycmF5V2l0aFRlcm1pbmF0aW5nTnVsKSB7CisgIGNvbnN0IGNoYXIgYVtdID0gIlwwSGki
OworICBFWFBFQ1RfRVEoIlwiXFwwSGlcIiIsIFByaW50QXJyYXlIZWxwZXIoYSkpOworfQorCisv
LyBjb25zdCB3Y2hhcl90IGFycmF5IHdpdGhvdXQgdGVybWluYXRpbmcgTlVMLgorVEVTVChQcmlu
dEFycmF5VGVzdCwgV0NoYXJBcnJheVdpdGhOb1Rlcm1pbmF0aW5nTnVsKSB7CisgIC8vIEFycmF5
IGEgY29udGFpbnMgJ1wwJyBpbiB0aGUgbWlkZGxlIGFuZCBkb2Vzbid0IGVuZCB3aXRoICdcMCcu
CisgIGNvbnN0IHdjaGFyX3QgYVtdID0geyBMJ0gnLCBMJ1wwJywgTCdpJyB9OworICBFWFBFQ1Rf
RVEoIkxcIkhcXDBpXCIgKG5vIHRlcm1pbmF0aW5nIE5VTCkiLCBQcmludEFycmF5SGVscGVyKGEp
KTsKK30KKworLy8gd2NoYXJfdCBhcnJheSB3aXRoIHRlcm1pbmF0aW5nIE5VTC4KK1RFU1QoUHJp
bnRBcnJheVRlc3QsIFdDb25zdENoYXJBcnJheVdpdGhUZXJtaW5hdGluZ051bCkgeworICBjb25z
dCB3Y2hhcl90IGFbXSA9IEwiXDBIaSI7CisgIEVYUEVDVF9FUSgiTFwiXFwwSGlcIiIsIFByaW50
QXJyYXlIZWxwZXIoYSkpOworfQorCisvLyBBcnJheSBvZiBvYmplY3RzLgorVEVTVChQcmludEFy
cmF5VGVzdCwgT2JqZWN0QXJyYXkpIHsKKyAgc3RkOjpzdHJpbmcgYVszXSA9IHsiSGkiLCAiSGVs
bG8iLCAiTmkgaGFvIn07CisgIEVYUEVDVF9FUSgieyBcIkhpXCIsIFwiSGVsbG9cIiwgXCJOaSBo
YW9cIiB9IiwgUHJpbnRBcnJheUhlbHBlcihhKSk7Cit9CisKKy8vIEFycmF5IHdpdGggbWFueSBl
bGVtZW50cy4KK1RFU1QoUHJpbnRBcnJheVRlc3QsIEJpZ0FycmF5KSB7CisgIGludCBhWzEwMF0g
PSB7IDEsIDIsIDMgfTsKKyAgRVhQRUNUX0VRKCJ7IDEsIDIsIDMsIDAsIDAsIDAsIDAsIDAsIC4u
LiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCB9IiwKKyAgICAgICAgICAgIFByaW50QXJyYXlIZWxw
ZXIoYSkpOworfQorCisvLyBUZXN0cyBwcmludGluZyA6OnN0cmluZyBhbmQgOjpzdGQ6OnN0cmlu
Zy4KKworI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisvLyA6OnN0cmluZy4KK1RFU1QoUHJp
bnRTdHJpbmdUZXN0LCBTdHJpbmdJbkdsb2JhbE5hbWVzcGFjZSkgeworICBjb25zdCBjaGFyIHNb
XSA9ICInXCI/XFxcYVxiXGZcblwwXHJcdFx2XHg3Rlx4RkYgYSI7CisgIGNvbnN0IDo6c3RyaW5n
IHN0cihzLCBzaXplb2YocykpOworICBFWFBFQ1RfRVEoIlwiJ1xcXCI/XFxcXFxcYVxcYlxcZlxc
blxcMFxcclxcdFxcdlxceDdGXFx4RkYgYVxcMFwiIiwKKyAgICAgICAgICAgIFByaW50KHN0cikp
OworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworCisvLyA6OnN0ZDo6c3Ry
aW5nLgorVEVTVChQcmludFN0cmluZ1Rlc3QsIFN0cmluZ0luU3RkTmFtZXNwYWNlKSB7CisgIGNv
bnN0IGNoYXIgc1tdID0gIidcIj9cXFxhXGJcZlxuXDBcclx0XHZceDdGXHhGRiBhIjsKKyAgY29u
c3QgOjpzdGQ6OnN0cmluZyBzdHIocywgc2l6ZW9mKHMpKTsKKyAgRVhQRUNUX0VRKCJcIidcXFwi
P1xcXFxcXGFcXGJcXGZcXG5cXDBcXHJcXHRcXHZcXHg3RlxceEZGIGFcXDBcIiIsCisgICAgICAg
ICAgICBQcmludChzdHIpKTsKK30KKworVEVTVChQcmludFN0cmluZ1Rlc3QsIFN0cmluZ0FtYmln
dW91c0hleCkgeworICAvLyAiXHg2QkFOQU5BIiBpcyBhbWJpZ3VvdXMsIGl0IGNhbiBiZSBpbnRl
cnByZXRlZCBhcyBzdGFydGluZyB3aXRoIGVpdGhlciBvZjoKKyAgLy8gJ1x4NicsICdceDZCJywg
b3IgJ1x4NkJBJy4KKworICAvLyBhIGhleCBlc2NhcGluZyBzZXF1ZW5jZSBmb2xsb3dpbmcgYnkg
YSBkZWNpbWFsIGRpZ2l0CisgIEVYUEVDVF9FUSgiXCIwXFx4MTJcIiBcIjNcIiIsIFByaW50KDo6
c3RkOjpzdHJpbmcoIjBceDEyIiAiMyIpKSk7CisgIC8vIGEgaGV4IGVzY2FwaW5nIHNlcXVlbmNl
IGZvbGxvd2luZyBieSBhIGhleCBkaWdpdCAobG93ZXItY2FzZSkKKyAgRVhQRUNUX0VRKCJcIm1t
XFx4NlwiIFwiYmFuYW5hc1wiIiwgUHJpbnQoOjpzdGQ6OnN0cmluZygibW1ceDYiICJiYW5hbmFz
IikpKTsKKyAgLy8gYSBoZXggZXNjYXBpbmcgc2VxdWVuY2UgZm9sbG93aW5nIGJ5IGEgaGV4IGRp
Z2l0ICh1cHBlci1jYXNlKQorICBFWFBFQ1RfRVEoIlwiTk9NXFx4NlwiIFwiQkFOQU5BXCIiLCBQ
cmludCg6OnN0ZDo6c3RyaW5nKCJOT01ceDYiICJCQU5BTkEiKSkpOworICAvLyBhIGhleCBlc2Nh
cGluZyBzZXF1ZW5jZSBmb2xsb3dpbmcgYnkgYSBub24teGRpZ2l0CisgIEVYUEVDVF9FUSgiXCIh
XFx4NS0hXCIiLCBQcmludCg6OnN0ZDo6c3RyaW5nKCIhXHg1LSEiKSkpOworfQorCisvLyBUZXN0
cyBwcmludGluZyA6OndzdHJpbmcgYW5kIDo6c3RkOjp3c3RyaW5nLgorCisjaWYgR1RFU1RfSEFT
X0dMT0JBTF9XU1RSSU5HCisvLyA6OndzdHJpbmcuCitURVNUKFByaW50V2lkZVN0cmluZ1Rlc3Qs
IFN0cmluZ0luR2xvYmFsTmFtZXNwYWNlKSB7CisgIGNvbnN0IHdjaGFyX3Qgc1tdID0gTCInXCI/
XFxcYVxiXGZcblwwXHJcdFx2XHhEM1x4NTc2XHg4RDNceEM3NEQgYSI7CisgIGNvbnN0IDo6d3N0
cmluZyBzdHIocywgc2l6ZW9mKHMpL3NpemVvZih3Y2hhcl90KSk7CisgIEVYUEVDVF9FUSgiTFwi
J1xcXCI/XFxcXFxcYVxcYlxcZlxcblxcMFxcclxcdFxcdiIKKyAgICAgICAgICAgICJcXHhEM1xc
eDU3NlxceDhEM1xceEM3NEQgYVxcMFwiIiwKKyAgICAgICAgICAgIFByaW50KHN0cikpOworfQor
I2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKKworI2lmIEdURVNUX0hBU19TVERf
V1NUUklORworLy8gOjpzdGQ6OndzdHJpbmcuCitURVNUKFByaW50V2lkZVN0cmluZ1Rlc3QsIFN0
cmluZ0luU3RkTmFtZXNwYWNlKSB7CisgIGNvbnN0IHdjaGFyX3Qgc1tdID0gTCInXCI/XFxcYVxi
XGZcblwwXHJcdFx2XHhEM1x4NTc2XHg4RDNceEM3NEQgYSI7CisgIGNvbnN0IDo6c3RkOjp3c3Ry
aW5nIHN0cihzLCBzaXplb2Yocykvc2l6ZW9mKHdjaGFyX3QpKTsKKyAgRVhQRUNUX0VRKCJMXCIn
XFxcIj9cXFxcXFxhXFxiXFxmXFxuXFwwXFxyXFx0XFx2IgorICAgICAgICAgICAgIlxceEQzXFx4
NTc2XFx4OEQzXFx4Qzc0RCBhXFwwXCIiLAorICAgICAgICAgICAgUHJpbnQoc3RyKSk7Cit9CisK
K1RFU1QoUHJpbnRXaWRlU3RyaW5nVGVzdCwgU3RyaW5nQW1iaWd1b3VzSGV4KSB7CisgIC8vIHNh
bWUgZm9yIHdpZGUgc3RyaW5ncy4KKyAgRVhQRUNUX0VRKCJMXCIwXFx4MTJcIiBMXCIzXCIiLCBQ
cmludCg6OnN0ZDo6d3N0cmluZyhMIjBceDEyIiBMIjMiKSkpOworICBFWFBFQ1RfRVEoIkxcIm1t
XFx4NlwiIExcImJhbmFuYXNcIiIsCisgICAgICAgICAgICBQcmludCg6OnN0ZDo6d3N0cmluZyhM
Im1tXHg2IiBMImJhbmFuYXMiKSkpOworICBFWFBFQ1RfRVEoIkxcIk5PTVxceDZcIiBMXCJCQU5B
TkFcIiIsCisgICAgICAgICAgICBQcmludCg6OnN0ZDo6d3N0cmluZyhMIk5PTVx4NiIgTCJCQU5B
TkEiKSkpOworICBFWFBFQ1RfRVEoIkxcIiFcXHg1LSFcIiIsIFByaW50KDo6c3RkOjp3c3RyaW5n
KEwiIVx4NS0hIikpKTsKK30KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9XU1RSSU5HCisKKy8v
IFRlc3RzIHByaW50aW5nIHR5cGVzIHRoYXQgc3VwcG9ydCBnZW5lcmljIHN0cmVhbWluZyAoaS5l
LiBzdHJlYW1pbmcKKy8vIHRvIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLCBDaGFyVHJhaXRzPiBm
b3IgYW55IHZhbGlkIENoYXIgYW5kCisvLyBDaGFyVHJhaXRzIHR5cGVzKS4KKworLy8gVGVzdHMg
cHJpbnRpbmcgYSBub24tdGVtcGxhdGUgdHlwZSB0aGF0IHN1cHBvcnRzIGdlbmVyaWMgc3RyZWFt
aW5nLgorCitjbGFzcyBBbGxvd3NHZW5lcmljU3RyZWFtaW5nIHt9OworCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ2hhciwgdHlwZW5hbWUgQ2hhclRyYWl0cz4KK3N0ZDo6YmFzaWNfb3N0cmVhbTxDaGFy
LCBDaGFyVHJhaXRzPiYgb3BlcmF0b3I8PCgKKyAgICBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhciwg
Q2hhclRyYWl0cz4mIG9zLAorICAgIGNvbnN0IEFsbG93c0dlbmVyaWNTdHJlYW1pbmcmIC8qIGEg
Ki8pIHsKKyAgcmV0dXJuIG9zIDw8ICJBbGxvd3NHZW5lcmljU3RyZWFtaW5nIjsKK30KKworVEVT
VChQcmludFR5cGVXaXRoR2VuZXJpY1N0cmVhbWluZ1Rlc3QsIE5vblRlbXBsYXRlVHlwZSkgewor
ICBBbGxvd3NHZW5lcmljU3RyZWFtaW5nIGE7CisgIEVYUEVDVF9FUSgiQWxsb3dzR2VuZXJpY1N0
cmVhbWluZyIsIFByaW50KGEpKTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgYSB0ZW1wbGF0ZSB0
eXBlIHRoYXQgc3VwcG9ydHMgZ2VuZXJpYyBzdHJlYW1pbmcuCisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorY2xhc3MgQWxsb3dzR2VuZXJpY1N0cmVhbWluZ1RlbXBsYXRlIHt9OworCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ2hhciwgdHlwZW5hbWUgQ2hhclRyYWl0cywgdHlwZW5hbWUgVD4KK3N0ZDo6
YmFzaWNfb3N0cmVhbTxDaGFyLCBDaGFyVHJhaXRzPiYgb3BlcmF0b3I8PCgKKyAgICBzdGQ6OmJh
c2ljX29zdHJlYW08Q2hhciwgQ2hhclRyYWl0cz4mIG9zLAorICAgIGNvbnN0IEFsbG93c0dlbmVy
aWNTdHJlYW1pbmdUZW1wbGF0ZTxUPiYgLyogYSAqLykgeworICByZXR1cm4gb3MgPDwgIkFsbG93
c0dlbmVyaWNTdHJlYW1pbmdUZW1wbGF0ZSI7Cit9CisKK1RFU1QoUHJpbnRUeXBlV2l0aEdlbmVy
aWNTdHJlYW1pbmdUZXN0LCBUZW1wbGF0ZVR5cGUpIHsKKyAgQWxsb3dzR2VuZXJpY1N0cmVhbWlu
Z1RlbXBsYXRlPGludD4gYTsKKyAgRVhQRUNUX0VRKCJBbGxvd3NHZW5lcmljU3RyZWFtaW5nVGVt
cGxhdGUiLCBQcmludChhKSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIGEgdHlwZSB0aGF0IHN1
cHBvcnRzIGdlbmVyaWMgc3RyZWFtaW5nIGFuZCBjYW4gYmUKKy8vIGltcGxpY2l0bHkgY29udmVy
dGVkIHRvIGFub3RoZXIgcHJpbnRhYmxlIHR5cGUuCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
Y2xhc3MgQWxsb3dzR2VuZXJpY1N0cmVhbWluZ0FuZEltcGxpY2l0Q29udmVyc2lvblRlbXBsYXRl
IHsKKyBwdWJsaWM6CisgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQor
fTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXIsIHR5cGVuYW1lIENoYXJUcmFpdHMsIHR5cGVu
YW1lIFQ+CitzdGQ6OmJhc2ljX29zdHJlYW08Q2hhciwgQ2hhclRyYWl0cz4mIG9wZXJhdG9yPDwo
CisgICAgc3RkOjpiYXNpY19vc3RyZWFtPENoYXIsIENoYXJUcmFpdHM+JiBvcywKKyAgICBjb25z
dCBBbGxvd3NHZW5lcmljU3RyZWFtaW5nQW5kSW1wbGljaXRDb252ZXJzaW9uVGVtcGxhdGU8VD4m
IC8qIGEgKi8pIHsKKyAgcmV0dXJuIG9zIDw8ICJBbGxvd3NHZW5lcmljU3RyZWFtaW5nQW5kSW1w
bGljaXRDb252ZXJzaW9uVGVtcGxhdGUiOworfQorCitURVNUKFByaW50VHlwZVdpdGhHZW5lcmlj
U3RyZWFtaW5nVGVzdCwgVHlwZUltcGxpY2l0bHlDb252ZXJ0aWJsZSkgeworICBBbGxvd3NHZW5l
cmljU3RyZWFtaW5nQW5kSW1wbGljaXRDb252ZXJzaW9uVGVtcGxhdGU8aW50PiBhOworICBFWFBF
Q1RfRVEoIkFsbG93c0dlbmVyaWNTdHJlYW1pbmdBbmRJbXBsaWNpdENvbnZlcnNpb25UZW1wbGF0
ZSIsIFByaW50KGEpKTsKK30KKworI2lmIEdURVNUX0hBU19TVFJJTkdfUElFQ0VfCisKKy8vIFRl
c3RzIHByaW50aW5nIFN0cmluZ1BpZWNlLgorCitURVNUKFByaW50U3RyaW5nUGllY2VUZXN0LCBT
aW1wbGVTdHJpbmdQaWVjZSkgeworICBjb25zdCBTdHJpbmdQaWVjZSBzcCA9ICJIZWxsbyI7Cisg
IEVYUEVDVF9FUSgiXCJIZWxsb1wiIiwgUHJpbnQoc3ApKTsKK30KKworVEVTVChQcmludFN0cmlu
Z1BpZWNlVGVzdCwgVW5wcmludGFibGVDaGFyYWN0ZXJzKSB7CisgIGNvbnN0IGNoYXIgc3RyW10g
PSAiTlVMIChcMCkgYW5kIFxyXHQiOworICBjb25zdCBTdHJpbmdQaWVjZSBzcChzdHIsIHNpemVv
ZihzdHIpIC0gMSk7CisgIEVYUEVDVF9FUSgiXCJOVUwgKFxcMCkgYW5kIFxcclxcdFwiIiwgUHJp
bnQoc3ApKTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9IQVNfU1RSSU5HX1BJRUNFXworCisvLyBU
ZXN0cyBwcmludGluZyBTVEwgY29udGFpbmVycy4KKworVEVTVChQcmludFN0bENvbnRhaW5lclRl
c3QsIEVtcHR5RGVxdWUpIHsKKyAgZGVxdWU8Y2hhcj4gZW1wdHk7CisgIEVYUEVDVF9FUSgie30i
LCBQcmludChlbXB0eSkpOworfQorCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgTm9uRW1w
dHlEZXF1ZSkgeworICBkZXF1ZTxpbnQ+IG5vbl9lbXB0eTsKKyAgbm9uX2VtcHR5LnB1c2hfYmFj
aygxKTsKKyAgbm9uX2VtcHR5LnB1c2hfYmFjaygzKTsKKyAgRVhQRUNUX0VRKCJ7IDEsIDMgfSIs
IFByaW50KG5vbl9lbXB0eSkpOworfQorCisjaWYgR1RFU1RfSEFTX0hBU0hfTUFQXworCitURVNU
KFByaW50U3RsQ29udGFpbmVyVGVzdCwgT25lRWxlbWVudEhhc2hNYXApIHsKKyAgaGFzaF9tYXA8
aW50LCBjaGFyPiBtYXAxOworICBtYXAxWzFdID0gJ2EnOworICBFWFBFQ1RfRVEoInsgKDEsICdh
JyAoOTcsIDB4NjEpKSB9IiwgUHJpbnQobWFwMSkpOworfQorCitURVNUKFByaW50U3RsQ29udGFp
bmVyVGVzdCwgSGFzaE11bHRpTWFwKSB7CisgIGhhc2hfbXVsdGltYXA8aW50LCBib29sPiBtYXAx
OworICBtYXAxLmluc2VydChtYWtlX3BhaXIoNSwgdHJ1ZSkpOworICBtYXAxLmluc2VydChtYWtl
X3BhaXIoNSwgZmFsc2UpKTsKKworICAvLyBFbGVtZW50cyBvZiBoYXNoX211bHRpbWFwIGNhbiBi
ZSBwcmludGVkIGluIGFueSBvcmRlci4KKyAgY29uc3Qgc3RkOjpzdHJpbmcgcmVzdWx0ID0gUHJp
bnQobWFwMSk7CisgIEVYUEVDVF9UUlVFKHJlc3VsdCA9PSAieyAoNSwgdHJ1ZSksICg1LCBmYWxz
ZSkgfSIgfHwKKyAgICAgICAgICAgICAgcmVzdWx0ID09ICJ7ICg1LCBmYWxzZSksICg1LCB0cnVl
KSB9IikKKyAgICAgICAgICAgICAgICAgIDw8ICIgd2hlcmUgUHJpbnQobWFwMSkgcmV0dXJucyBc
IiIgPDwgcmVzdWx0IDw8ICJcIi4iOworfQorCisjZW5kaWYgIC8vIEdURVNUX0hBU19IQVNIX01B
UF8KKworI2lmIEdURVNUX0hBU19IQVNIX1NFVF8KKworVEVTVChQcmludFN0bENvbnRhaW5lclRl
c3QsIEhhc2hTZXQpIHsKKyAgaGFzaF9zZXQ8aW50PiBzZXQxOworICBzZXQxLmluc2VydCgxKTsK
KyAgRVhQRUNUX0VRKCJ7IDEgfSIsIFByaW50KHNldDEpKTsKK30KKworVEVTVChQcmludFN0bENv
bnRhaW5lclRlc3QsIEhhc2hNdWx0aVNldCkgeworICBjb25zdCBpbnQga1NpemUgPSA1OworICBp
bnQgYVtrU2l6ZV0gPSB7IDEsIDEsIDIsIDUsIDEgfTsKKyAgaGFzaF9tdWx0aXNldDxpbnQ+IHNl
dDEoYSwgYSArIGtTaXplKTsKKworICAvLyBFbGVtZW50cyBvZiBoYXNoX211bHRpc2V0IGNhbiBi
ZSBwcmludGVkIGluIGFueSBvcmRlci4KKyAgY29uc3Qgc3RkOjpzdHJpbmcgcmVzdWx0ID0gUHJp
bnQoc2V0MSk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGV4cGVjdGVkX3BhdHRlcm4gPSAieyBkLCBk
LCBkLCBkLCBkIH0iOyAgLy8gZCBtZWFucyBhIGRpZ2l0LgorCisgIC8vIFZlcmlmaWVzIHRoZSBy
ZXN1bHQgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgcGF0dGVybjsgYWxzbyBleHRyYWN0cworICAvLyB0
aGUgbnVtYmVycyBpbiB0aGUgcmVzdWx0LgorICBBU1NFUlRfRVEoZXhwZWN0ZWRfcGF0dGVybi5s
ZW5ndGgoKSwgcmVzdWx0Lmxlbmd0aCgpKTsKKyAgc3RkOjp2ZWN0b3I8aW50PiBudW1iZXJzOwor
ICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSByZXN1bHQubGVuZ3RoKCk7IGkrKykgeworICAgIGlm
IChleHBlY3RlZF9wYXR0ZXJuW2ldID09ICdkJykgeworICAgICAgQVNTRVJUX05FKGlzZGlnaXQo
c3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4ocmVzdWx0W2ldKSksIDApOworICAgICAgbnVtYmVy
cy5wdXNoX2JhY2socmVzdWx0W2ldIC0gJzAnKTsKKyAgICB9IGVsc2UgeworICAgICAgRVhQRUNU
X0VRKGV4cGVjdGVkX3BhdHRlcm5baV0sIHJlc3VsdFtpXSkgPDwgIiB3aGVyZSByZXN1bHQgaXMg
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgcmVz
dWx0OworICAgIH0KKyAgfQorCisgIC8vIE1ha2VzIHN1cmUgdGhlIHJlc3VsdCBjb250YWlucyB0
aGUgcmlnaHQgbnVtYmVycy4KKyAgc3RkOjpzb3J0KG51bWJlcnMuYmVnaW4oKSwgbnVtYmVycy5l
bmQoKSk7CisgIHN0ZDo6c29ydChhLCBhICsga1NpemUpOworICBFWFBFQ1RfVFJVRShzdGQ6OmVx
dWFsKGEsIGEgKyBrU2l6ZSwgbnVtYmVycy5iZWdpbigpKSk7Cit9CisKKyNlbmRpZiAgLy8gR1RF
U1RfSEFTX0hBU0hfU0VUXworCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgTGlzdCkgewor
ICBjb25zdCBzdGQ6OnN0cmluZyBhW10gPSB7ImhlbGxvIiwgIndvcmxkIn07CisgIGNvbnN0IGxp
c3Q8c3RkOjpzdHJpbmc+IHN0cmluZ3MoYSwgYSArIDIpOworICBFWFBFQ1RfRVEoInsgXCJoZWxs
b1wiLCBcIndvcmxkXCIgfSIsIFByaW50KHN0cmluZ3MpKTsKK30KKworVEVTVChQcmludFN0bENv
bnRhaW5lclRlc3QsIE1hcCkgeworICBtYXA8aW50LCBib29sPiBtYXAxOworICBtYXAxWzFdID0g
dHJ1ZTsKKyAgbWFwMVs1XSA9IGZhbHNlOworICBtYXAxWzNdID0gdHJ1ZTsKKyAgRVhQRUNUX0VR
KCJ7ICgxLCB0cnVlKSwgKDMsIHRydWUpLCAoNSwgZmFsc2UpIH0iLCBQcmludChtYXAxKSk7Cit9
CisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBNdWx0aU1hcCkgeworICBtdWx0aW1hcDxi
b29sLCBpbnQ+IG1hcDE7CisgIC8vIFRoZSBtYWtlX3BhaXIgdGVtcGxhdGUgZnVuY3Rpb24gd291
bGQgZGVkdWNlIHRoZSB0eXBlIGFzCisgIC8vIHBhaXI8Ym9vbCwgaW50PiBoZXJlLCBhbmQgc2lu
Y2UgdGhlIGtleSBwYXJ0IGluIGEgbXVsdGltYXAgaGFzIHRvCisgIC8vIGJlIGNvbnN0YW50LCB3
aXRob3V0IGEgdGVtcGxhdGVkIGN0b3IgaW4gdGhlIHBhaXIgY2xhc3MgKGFzIGluCisgIC8vIGxp
YkNzdGQgb24gU29sYXJpcyksIG1ha2VfcGFpciBjYWxsIHdvdWxkIGZhaWwgdG8gY29tcGlsZSBh
cyBubworICAvLyBpbXBsaWNpdCBjb252ZXJzaW9uIGlzIGZvdW5kLiAgVGh1cyBleHBsaWNpdCB0
eXBlbmFtZSBpcyB1c2VkCisgIC8vIGhlcmUgaW5zdGVhZC4KKyAgbWFwMS5pbnNlcnQocGFpcjxj
b25zdCBib29sLCBpbnQ+KHRydWUsIDApKTsKKyAgbWFwMS5pbnNlcnQocGFpcjxjb25zdCBib29s
LCBpbnQ+KHRydWUsIDEpKTsKKyAgbWFwMS5pbnNlcnQocGFpcjxjb25zdCBib29sLCBpbnQ+KGZh
bHNlLCAyKSk7CisgIEVYUEVDVF9FUSgieyAoZmFsc2UsIDIpLCAodHJ1ZSwgMCksICh0cnVlLCAx
KSB9IiwgUHJpbnQobWFwMSkpOworfQorCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgU2V0
KSB7CisgIGNvbnN0IHVuc2lnbmVkIGludCBhW10gPSB7IDMsIDAsIDUgfTsKKyAgc2V0PHVuc2ln
bmVkIGludD4gc2V0MShhLCBhICsgMyk7CisgIEVYUEVDVF9FUSgieyAwLCAzLCA1IH0iLCBQcmlu
dChzZXQxKSk7Cit9CisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBNdWx0aVNldCkgewor
ICBjb25zdCBpbnQgYVtdID0geyAxLCAxLCAyLCA1LCAxIH07CisgIG11bHRpc2V0PGludD4gc2V0
MShhLCBhICsgNSk7CisgIEVYUEVDVF9FUSgieyAxLCAxLCAxLCAyLCA1IH0iLCBQcmludChzZXQx
KSk7Cit9CisKKyNpZiBHVEVTVF9IQVNfU1REX0ZPUldBUkRfTElTVF8KKy8vIDxzbGlzdD4gaXMg
YXZhaWxhYmxlIG9uIExpbnV4IGluIHRoZSBnb29nbGUzIG1vZGUsIGJ1dCBub3Qgb24KKy8vIFdp
bmRvd3Mgb3IgTWFjIE9TIFguCisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBTaW5nbHlM
aW5rZWRMaXN0KSB7CisgIGludCBhW10gPSB7IDksIDIsIDggfTsKKyAgY29uc3Qgc3RkOjpmb3J3
YXJkX2xpc3Q8aW50PiBpbnRzKGEsIGEgKyAzKTsKKyAgRVhQRUNUX0VRKCJ7IDksIDIsIDggfSIs
IFByaW50KGludHMpKTsKK30KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9GT1JXQVJEX0xJU1Rf
CisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBQYWlyKSB7CisgIHBhaXI8Y29uc3QgYm9v
bCwgaW50PiBwKHRydWUsIDUpOworICBFWFBFQ1RfRVEoIih0cnVlLCA1KSIsIFByaW50KHApKTsK
K30KKworVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIFZlY3RvcikgeworICB2ZWN0b3I8aW50
PiB2OworICB2LnB1c2hfYmFjaygxKTsKKyAgdi5wdXNoX2JhY2soMik7CisgIEVYUEVDVF9FUSgi
eyAxLCAyIH0iLCBQcmludCh2KSk7Cit9CisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBM
b25nU2VxdWVuY2UpIHsKKyAgY29uc3QgaW50IGFbMTAwXSA9IHsgMSwgMiwgMyB9OworICBjb25z
dCB2ZWN0b3I8aW50PiB2KGEsIGEgKyAxMDApOworICBFWFBFQ1RfRVEoInsgMSwgMiwgMywgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgIgorICAgICAgICAgICAgIjAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIC4uLiB9IiwgUHJpbnQo
dikpOworfQorCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgTmVzdGVkQ29udGFpbmVyKSB7
CisgIGNvbnN0IGludCBhMVtdID0geyAxLCAyIH07CisgIGNvbnN0IGludCBhMltdID0geyAzLCA0
LCA1IH07CisgIGNvbnN0IGxpc3Q8aW50PiBsMShhMSwgYTEgKyAyKTsKKyAgY29uc3QgbGlzdDxp
bnQ+IGwyKGEyLCBhMiArIDMpOworCisgIHZlY3RvcjxsaXN0PGludD4gPiB2OworICB2LnB1c2hf
YmFjayhsMSk7CisgIHYucHVzaF9iYWNrKGwyKTsKKyAgRVhQRUNUX0VRKCJ7IHsgMSwgMiB9LCB7
IDMsIDQsIDUgfSB9IiwgUHJpbnQodikpOworfQorCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVz
dCwgT25lRGltZW5zaW9uYWxOYXRpdmVBcnJheSkgeworICBjb25zdCBpbnQgYVszXSA9IHsgMSwg
MiwgMyB9OworICBOYXRpdmVBcnJheTxpbnQ+IGIoYSwgMywgUmVsYXRpb25Ub1NvdXJjZVJlZmVy
ZW5jZSgpKTsKKyAgRVhQRUNUX0VRKCJ7IDEsIDIsIDMgfSIsIFByaW50KGIpKTsKK30KKworVEVT
VChQcmludFN0bENvbnRhaW5lclRlc3QsIFR3b0RpbWVuc2lvbmFsTmF0aXZlQXJyYXkpIHsKKyAg
Y29uc3QgaW50IGFbMl1bM10gPSB7IHsgMSwgMiwgMyB9LCB7IDQsIDUsIDYgfSB9OworICBOYXRp
dmVBcnJheTxpbnRbM10+IGIoYSwgMiwgUmVsYXRpb25Ub1NvdXJjZVJlZmVyZW5jZSgpKTsKKyAg
RVhQRUNUX0VRKCJ7IHsgMSwgMiwgMyB9LCB7IDQsIDUsIDYgfSB9IiwgUHJpbnQoYikpOworfQor
CisvLyBUZXN0cyB0aGF0IGEgY2xhc3MgbmFtZWQgaXRlcmF0b3IgaXNuJ3QgdHJlYXRlZCBhcyBh
IGNvbnRhaW5lci4KKworc3RydWN0IGl0ZXJhdG9yIHsKKyAgY2hhciB4OworfTsKKworVEVTVChQ
cmludFN0bENvbnRhaW5lclRlc3QsIEl0ZXJhdG9yKSB7CisgIGl0ZXJhdG9yIGl0ID0ge307Cisg
IEVYUEVDVF9FUSgiMS1ieXRlIG9iamVjdCA8MDA+IiwgUHJpbnQoaXQpKTsKK30KKworLy8gVGVz
dHMgdGhhdCBhIGNsYXNzIG5hbWVkIGNvbnN0X2l0ZXJhdG9yIGlzbid0IHRyZWF0ZWQgYXMgYSBj
b250YWluZXIuCisKK3N0cnVjdCBjb25zdF9pdGVyYXRvciB7CisgIGNoYXIgeDsKK307CisKK1RF
U1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBDb25zdEl0ZXJhdG9yKSB7CisgIGNvbnN0X2l0ZXJh
dG9yIGl0ID0ge307CisgIEVYUEVDVF9FUSgiMS1ieXRlIG9iamVjdCA8MDA+IiwgUHJpbnQoaXQp
KTsKK30KKworI2lmIEdURVNUX0hBU19UUjFfVFVQTEUKKy8vIFRlc3RzIHByaW50aW5nIDo6c3Rk
Ojp0cjE6OnR1cGxlcy4KKworLy8gVHVwbGVzIG9mIHZhcmlvdXMgYXJpdGllcy4KK1RFU1QoUHJp
bnRUcjFUdXBsZVRlc3QsIFZhcmlvdXNTaXplcykgeworICA6OnN0ZDo6dHIxOjp0dXBsZTw+IHQw
OworICBFWFBFQ1RfRVEoIigpIiwgUHJpbnQodDApKTsKKworICA6OnN0ZDo6dHIxOjp0dXBsZTxp
bnQ+IHQxKDUpOworICBFWFBFQ1RfRVEoIig1KSIsIFByaW50KHQxKSk7CisKKyAgOjpzdGQ6OnRy
MTo6dHVwbGU8Y2hhciwgYm9vbD4gdDIoJ2EnLCB0cnVlKTsKKyAgRVhQRUNUX0VRKCIoJ2EnICg5
NywgMHg2MSksIHRydWUpIiwgUHJpbnQodDIpKTsKKworICA6OnN0ZDo6dHIxOjp0dXBsZTxib29s
LCBpbnQsIGludD4gdDMoZmFsc2UsIDIsIDMpOworICBFWFBFQ1RfRVEoIihmYWxzZSwgMiwgMyki
LCBQcmludCh0MykpOworCisgIDo6c3RkOjp0cjE6OnR1cGxlPGJvb2wsIGludCwgaW50LCBpbnQ+
IHQ0KGZhbHNlLCAyLCAzLCA0KTsKKyAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMsIDQpIiwgUHJp
bnQodDQpKTsKKworICA6OnN0ZDo6dHIxOjp0dXBsZTxib29sLCBpbnQsIGludCwgaW50LCBib29s
PiB0NShmYWxzZSwgMiwgMywgNCwgdHJ1ZSk7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzLCA0
LCB0cnVlKSIsIFByaW50KHQ1KSk7CisKKyAgOjpzdGQ6OnRyMTo6dHVwbGU8Ym9vbCwgaW50LCBp
bnQsIGludCwgYm9vbCwgaW50PiB0NihmYWxzZSwgMiwgMywgNCwgdHJ1ZSwgNik7CisgIEVYUEVD
VF9FUSgiKGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2KSIsIFByaW50KHQ2KSk7CisKKyAgOjpzdGQ6
OnRyMTo6dHVwbGU8Ym9vbCwgaW50LCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQ+IHQ3KAorICAg
ICAgZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcpOworICBFWFBFQ1RfRVEoIihmYWxzZSwgMiwg
MywgNCwgdHJ1ZSwgNiwgNykiLCBQcmludCh0NykpOworCisgIDo6c3RkOjp0cjE6OnR1cGxlPGJv
b2wsIGludCwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50LCBib29sPiB0OCgKKyAgICAgIGZhbHNl
LCAyLCAzLCA0LCB0cnVlLCA2LCA3LCB0cnVlKTsKKyAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMs
IDQsIHRydWUsIDYsIDcsIHRydWUpIiwgUHJpbnQodDgpKTsKKworICA6OnN0ZDo6dHIxOjp0dXBs
ZTxib29sLCBpbnQsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgYm9vbCwgaW50PiB0OSgKKyAg
ICAgIGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2LCA3LCB0cnVlLCA5KTsKKyAgRVhQRUNUX0VRKCIo
ZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcsIHRydWUsIDkpIiwgUHJpbnQodDkpKTsKKworICBj
b25zdCBjaGFyKiBjb25zdCBzdHIgPSAiOCI7CisgIC8vIFZDKysgMjAxMCdzIGltcGxlbWVudGF0
aW9uIG9mIHR1cGxlIG9mIEMrKzB4IGlzIGRlZmljaWVudCwgcmVxdWlyaW5nCisgIC8vIGFuIGV4
cGxpY2l0IHR5cGUgY2FzdCBvZiBOVUxMIHRvIGJlIHVzZWQuCisgIDo6c3RkOjp0cjE6OnR1cGxl
PGJvb2wsIGNoYXIsIHNob3J0LCB0ZXN0aW5nOjppbnRlcm5hbDo6SW50MzIsICAvLyBOT0xJTlQK
KyAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6aW50ZXJuYWw6OkludDY0LCBmbG9hdCwgZG91
YmxlLCBjb25zdCBjaGFyKiwgdm9pZCosCisgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5n
PgorICAgICAgdDEwKGZhbHNlLCAnYScsIDMsIDQsIDUsIDEuNUYsIC0yLjUsIHN0ciwgSW1wbGlj
aXRDYXN0Xzx2b2lkKj4oTlVMTCksCisgICAgICAgICAgIjEwIik7CisgIEVYUEVDVF9FUSgiKGZh
bHNlLCAnYScgKDk3LCAweDYxKSwgMywgNCwgNSwgMS41LCAtMi41LCAiICsgUHJpbnRQb2ludGVy
KHN0cikgKworICAgICAgICAgICAgIiBwb2ludGluZyB0byBcIjhcIiwgTlVMTCwgXCIxMFwiKSIs
CisgICAgICAgICAgICBQcmludCh0MTApKTsKK30KKworLy8gTmVzdGVkIHR1cGxlcy4KK1RFU1Qo
UHJpbnRUcjFUdXBsZVRlc3QsIE5lc3RlZFR1cGxlKSB7CisgIDo6c3RkOjp0cjE6OnR1cGxlPCA6
OnN0ZDo6dHIxOjp0dXBsZTxpbnQsIGJvb2w+LCBjaGFyPiBuZXN0ZWQoCisgICAgICA6OnN0ZDo6
dHIxOjptYWtlX3R1cGxlKDUsIHRydWUpLCAnYScpOworICBFWFBFQ1RfRVEoIigoNSwgdHJ1ZSks
ICdhJyAoOTcsIDB4NjEpKSIsIFByaW50KG5lc3RlZCkpOworfQorCisjZW5kaWYgIC8vIEdURVNU
X0hBU19UUjFfVFVQTEUKKworI2lmIEdURVNUX0hBU19TVERfVFVQTEVfCisvLyBUZXN0cyBwcmlu
dGluZyA6OnN0ZDo6dHVwbGVzLgorCisvLyBUdXBsZXMgb2YgdmFyaW91cyBhcml0aWVzLgorVEVT
VChQcmludFN0ZFR1cGxlVGVzdCwgVmFyaW91c1NpemVzKSB7CisgIDo6c3RkOjp0dXBsZTw+IHQw
OworICBFWFBFQ1RfRVEoIigpIiwgUHJpbnQodDApKTsKKworICA6OnN0ZDo6dHVwbGU8aW50PiB0
MSg1KTsKKyAgRVhQRUNUX0VRKCIoNSkiLCBQcmludCh0MSkpOworCisgIDo6c3RkOjp0dXBsZTxj
aGFyLCBib29sPiB0MignYScsIHRydWUpOworICBFWFBFQ1RfRVEoIignYScgKDk3LCAweDYxKSwg
dHJ1ZSkiLCBQcmludCh0MikpOworCisgIDo6c3RkOjp0dXBsZTxib29sLCBpbnQsIGludD4gdDMo
ZmFsc2UsIDIsIDMpOworICBFWFBFQ1RfRVEoIihmYWxzZSwgMiwgMykiLCBQcmludCh0MykpOwor
CisgIDo6c3RkOjp0dXBsZTxib29sLCBpbnQsIGludCwgaW50PiB0NChmYWxzZSwgMiwgMywgNCk7
CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzLCA0KSIsIFByaW50KHQ0KSk7CisKKyAgOjpzdGQ6
OnR1cGxlPGJvb2wsIGludCwgaW50LCBpbnQsIGJvb2w+IHQ1KGZhbHNlLCAyLCAzLCA0LCB0cnVl
KTsKKyAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMsIDQsIHRydWUpIiwgUHJpbnQodDUpKTsKKwor
ICA6OnN0ZDo6dHVwbGU8Ym9vbCwgaW50LCBpbnQsIGludCwgYm9vbCwgaW50PiB0NihmYWxzZSwg
MiwgMywgNCwgdHJ1ZSwgNik7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2
KSIsIFByaW50KHQ2KSk7CisKKyAgOjpzdGQ6OnR1cGxlPGJvb2wsIGludCwgaW50LCBpbnQsIGJv
b2wsIGludCwgaW50PiB0NygKKyAgICAgIGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2LCA3KTsKKyAg
RVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcpIiwgUHJpbnQodDcpKTsKKwor
ICA6OnN0ZDo6dHVwbGU8Ym9vbCwgaW50LCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGJvb2w+
IHQ4KAorICAgICAgZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcsIHRydWUpOworICBFWFBFQ1Rf
RVEoIihmYWxzZSwgMiwgMywgNCwgdHJ1ZSwgNiwgNywgdHJ1ZSkiLCBQcmludCh0OCkpOworCisg
IDo6c3RkOjp0dXBsZTxib29sLCBpbnQsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgYm9vbCwg
aW50PiB0OSgKKyAgICAgIGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2LCA3LCB0cnVlLCA5KTsKKyAg
RVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcsIHRydWUsIDkpIiwgUHJpbnQo
dDkpKTsKKworICBjb25zdCBjaGFyKiBjb25zdCBzdHIgPSAiOCI7CisgIC8vIFZDKysgMjAxMCdz
IGltcGxlbWVudGF0aW9uIG9mIHR1cGxlIG9mIEMrKzB4IGlzIGRlZmljaWVudCwgcmVxdWlyaW5n
CisgIC8vIGFuIGV4cGxpY2l0IHR5cGUgY2FzdCBvZiBOVUxMIHRvIGJlIHVzZWQuCisgIDo6c3Rk
Ojp0dXBsZTxib29sLCBjaGFyLCBzaG9ydCwgdGVzdGluZzo6aW50ZXJuYWw6OkludDMyLCAgLy8g
Tk9MSU5UCisgICAgICAgICAgICAgICB0ZXN0aW5nOjppbnRlcm5hbDo6SW50NjQsIGZsb2F0LCBk
b3VibGUsIGNvbnN0IGNoYXIqLCB2b2lkKiwKKyAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nPgor
ICAgICAgdDEwKGZhbHNlLCAnYScsIDMsIDQsIDUsIDEuNUYsIC0yLjUsIHN0ciwgSW1wbGljaXRD
YXN0Xzx2b2lkKj4oTlVMTCksCisgICAgICAgICAgIjEwIik7CisgIEVYUEVDVF9FUSgiKGZhbHNl
LCAnYScgKDk3LCAweDYxKSwgMywgNCwgNSwgMS41LCAtMi41LCAiICsgUHJpbnRQb2ludGVyKHN0
cikgKworICAgICAgICAgICAgIiBwb2ludGluZyB0byBcIjhcIiwgTlVMTCwgXCIxMFwiKSIsCisg
ICAgICAgICAgICBQcmludCh0MTApKTsKK30KKworLy8gTmVzdGVkIHR1cGxlcy4KK1RFU1QoUHJp
bnRTdGRUdXBsZVRlc3QsIE5lc3RlZFR1cGxlKSB7CisgIDo6c3RkOjp0dXBsZTwgOjpzdGQ6OnR1
cGxlPGludCwgYm9vbD4sIGNoYXI+IG5lc3RlZCgKKyAgICAgIDo6c3RkOjptYWtlX3R1cGxlKDUs
IHRydWUpLCAnYScpOworICBFWFBFQ1RfRVEoIigoNSwgdHJ1ZSksICdhJyAoOTcsIDB4NjEpKSIs
IFByaW50KG5lc3RlZCkpOworfQorCisjZW5kaWYgIC8vIEdURVNUX0xBTkdfQ1hYMTEKKworLy8g
VGVzdHMgcHJpbnRpbmcgdXNlci1kZWZpbmVkIHVucHJpbnRhYmxlIHR5cGVzLgorCisvLyBVbnBy
aW50YWJsZSB0eXBlcyBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4KK1RFU1QoUHJpbnRVbnByaW50
YWJsZVR5cGVUZXN0LCBJbkdsb2JhbE5hbWVzcGFjZSkgeworICBFWFBFQ1RfRVEoIjEtYnl0ZSBv
YmplY3QgPDAwPiIsCisgICAgICAgICAgICBQcmludChVbnByaW50YWJsZVRlbXBsYXRlSW5HbG9i
YWw8Y2hhcj4oKSkpOworfQorCisvLyBVbnByaW50YWJsZSB0eXBlcyBpbiBhIHVzZXIgbmFtZXNw
YWNlLgorVEVTVChQcmludFVucHJpbnRhYmxlVHlwZVRlc3QsIEluVXNlck5hbWVzcGFjZSkgewor
ICBFWFBFQ1RfRVEoIjE2LWJ5dGUgb2JqZWN0IDxFRi0xMiAwMC0wMCAzNC1BQiAwMC0wMCAwMC0w
MCAwMC0wMCAwMC0wMCAwMC0wMD4iLAorICAgICAgICAgICAgUHJpbnQoOjpmb286OlVucHJpbnRh
YmxlSW5Gb28oKSkpOworfQorCisvLyBVbnByaW50YWJsZSB0eXBlcyBhcmUgdGhhdCB0b28gYmln
IHRvIGJlIHByaW50ZWQgY29tcGxldGVseS4KKworc3RydWN0IEJpZyB7CisgIEJpZygpIHsgbWVt
c2V0KGFycmF5LCAwLCBzaXplb2YoYXJyYXkpKTsgfQorICBjaGFyIGFycmF5WzI1N107Cit9Owor
CitURVNUKFByaW50VW5wcml0YWJsZVR5cGVUZXN0LCBCaWdPYmplY3QpIHsKKyAgRVhQRUNUX0VR
KCIyNTctYnl0ZSBvYmplY3QgPDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwICIK
KyAgICAgICAgICAgICIwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAw
MC0wMCAwMC0wMCAwMC0wMCAiCisgICAgICAgICAgICAiMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAg
MDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgIgorICAgICAgICAgICAgIjAwLTAw
IDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIC4uLiAwMC0wMCAwMC0wMCAwMC0wMCAiCisg
ICAgICAgICAgICAiMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAt
MDAgMDAtMDAgMDAtMDAgIgorICAgICAgICAgICAgIjAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAw
LTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwICIKKyAgICAgICAgICAgICIwMC0wMCAw
MC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMD4iLAorICAgICAgICAg
ICAgUHJpbnQoQmlnKCkpKTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgdXNlci1kZWZpbmVkIHN0
cmVhbWFibGUgdHlwZXMuCisKKy8vIFN0cmVhbWFibGUgdHlwZXMgaW4gdGhlIGdsb2JhbCBuYW1l
c3BhY2UuCitURVNUKFByaW50U3RyZWFtYWJsZVR5cGVUZXN0LCBJbkdsb2JhbE5hbWVzcGFjZSkg
eworICBTdHJlYW1hYmxlSW5HbG9iYWwgeDsKKyAgRVhQRUNUX0VRKCJTdHJlYW1hYmxlSW5HbG9i
YWwiLCBQcmludCh4KSk7CisgIEVYUEVDVF9FUSgiU3RyZWFtYWJsZUluR2xvYmFsKiIsIFByaW50
KCZ4KSk7Cit9CisKKy8vIFByaW50YWJsZSB0ZW1wbGF0ZSB0eXBlcyBpbiBhIHVzZXIgbmFtZXNw
YWNlLgorVEVTVChQcmludFN0cmVhbWFibGVUeXBlVGVzdCwgVGVtcGxhdGVUeXBlSW5Vc2VyTmFt
ZXNwYWNlKSB7CisgIEVYUEVDVF9FUSgiU3RyZWFtYWJsZVRlbXBsYXRlSW5Gb286IDAiLAorICAg
ICAgICAgICAgUHJpbnQoOjpmb286OlN0cmVhbWFibGVUZW1wbGF0ZUluRm9vPGludD4oKSkpOwor
fQorCisvLyBUZXN0cyBwcmludGluZyB1c2VyLWRlZmluZWQgdHlwZXMgdGhhdCBoYXZlIGEgUHJp
bnRUbygpIGZ1bmN0aW9uLgorVEVTVChQcmludFByaW50YWJsZVR5cGVUZXN0LCBJblVzZXJOYW1l
c3BhY2UpIHsKKyAgRVhQRUNUX0VRKCJQcmludGFibGVWaWFQcmludFRvOiAwIiwKKyAgICAgICAg
ICAgIFByaW50KDo6Zm9vOjpQcmludGFibGVWaWFQcmludFRvKCkpKTsKK30KKworLy8gVGVzdHMg
cHJpbnRpbmcgYSBwb2ludGVyIHRvIGEgdXNlci1kZWZpbmVkIHR5cGUgdGhhdCBoYXMgYSA8PAor
Ly8gb3BlcmF0b3IgZm9yIGl0cyBwb2ludGVyLgorVEVTVChQcmludFByaW50YWJsZVR5cGVUZXN0
LCBQb2ludGVySW5Vc2VyTmFtZXNwYWNlKSB7CisgIDo6Zm9vOjpQb2ludGVyUHJpbnRhYmxlIHg7
CisgIEVYUEVDVF9FUSgiUG9pbnRlclByaW50YWJsZSoiLCBQcmludCgmeCkpOworfQorCisvLyBU
ZXN0cyBwcmludGluZyB1c2VyLWRlZmluZWQgY2xhc3MgdGVtcGxhdGUgdGhhdCBoYXZlIGEgUHJp
bnRUbygpIGZ1bmN0aW9uLgorVEVTVChQcmludFByaW50YWJsZVR5cGVUZXN0LCBUZW1wbGF0ZUlu
VXNlck5hbWVzcGFjZSkgeworICBFWFBFQ1RfRVEoIlByaW50YWJsZVZpYVByaW50VG9UZW1wbGF0
ZTogNSIsCisgICAgICAgICAgICBQcmludCg6OmZvbzo6UHJpbnRhYmxlVmlhUHJpbnRUb1RlbXBs
YXRlPGludD4oNSkpKTsKK30KKworLy8gVGVzdHMgdGhhdCB0aGUgdW5pdmVyc2FsIHByaW50ZXIg
cHJpbnRzIGJvdGggdGhlIGFkZHJlc3MgYW5kIHRoZQorLy8gdmFsdWUgb2YgYSByZWZlcmVuY2Uu
CitURVNUKFByaW50UmVmZXJlbmNlVGVzdCwgUHJpbnRzQWRkcmVzc0FuZFZhbHVlKSB7CisgIGlu
dCBuID0gNTsKKyAgRVhQRUNUX0VRKCJAIiArIFByaW50UG9pbnRlcigmbikgKyAiIDUiLCBQcmlu
dEJ5UmVmKG4pKTsKKworICBpbnQgYVsyXVszXSA9IHsKKyAgICB7IDAsIDEsIDIgfSwKKyAgICB7
IDMsIDQsIDUgfQorICB9OworICBFWFBFQ1RfRVEoIkAiICsgUHJpbnRQb2ludGVyKGEpICsgIiB7
IHsgMCwgMSwgMiB9LCB7IDMsIDQsIDUgfSB9IiwKKyAgICAgICAgICAgIFByaW50QnlSZWYoYSkp
OworCisgIGNvbnN0IDo6Zm9vOjpVbnByaW50YWJsZUluRm9vIHg7CisgIEVYUEVDVF9FUSgiQCIg
KyBQcmludFBvaW50ZXIoJngpICsgIiAxNi1ieXRlIG9iamVjdCAiCisgICAgICAgICAgICAiPEVG
LTEyIDAwLTAwIDM0LUFCIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwPiIsCisgICAgICAg
ICAgICBQcmludEJ5UmVmKHgpKTsKK30KKworLy8gVGVzdHMgdGhhdCB0aGUgdW5pdmVyc2FsIHBy
aW50ZXIgcHJpbnRzIGEgZnVuY3Rpb24gcG9pbnRlciBwYXNzZWQgYnkKKy8vIHJlZmVyZW5jZS4K
K1RFU1QoUHJpbnRSZWZlcmVuY2VUZXN0LCBIYW5kbGVzRnVuY3Rpb25Qb2ludGVyKSB7CisgIHZv
aWQgKCpmcCkoaW50IG4pID0gJk15RnVuY3Rpb247CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGZwX3Bv
aW50ZXJfc3RyaW5nID0KKyAgICAgIFByaW50UG9pbnRlcihyZWludGVycHJldF9jYXN0PGNvbnN0
IHZvaWQqPigmZnApKTsKKyAgLy8gV2UgY2Fubm90IGRpcmVjdGx5IGNhc3QgJk15RnVuY3Rpb24g
dG8gY29uc3Qgdm9pZCogYmVjYXVzZSB0aGUKKyAgLy8gc3RhbmRhcmQgZGlzYWxsb3dzIGNhc3Rp
bmcgYmV0d2VlbiBwb2ludGVycyB0byBmdW5jdGlvbnMgYW5kCisgIC8vIHBvaW50ZXJzIHRvIG9i
amVjdHMsIGFuZCBzb21lIGNvbXBpbGVycyAoZS5nLiBHQ0MgMy40KSBlbmZvcmNlCisgIC8vIHRo
aXMgbGltaXRhdGlvbi4KKyAgY29uc3Qgc3RkOjpzdHJpbmcgZnBfc3RyaW5nID0gUHJpbnRQb2lu
dGVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KAorICAgICAgcmVpbnRlcnByZXRfY2Fz
dDxpbnRlcm5hbDo6QmlnZ2VzdEludD4oZnApKSk7CisgIEVYUEVDVF9FUSgiQCIgKyBmcF9wb2lu
dGVyX3N0cmluZyArICIgIiArIGZwX3N0cmluZywKKyAgICAgICAgICAgIFByaW50QnlSZWYoZnAp
KTsKK30KKworLy8gVGVzdHMgdGhhdCB0aGUgdW5pdmVyc2FsIHByaW50ZXIgcHJpbnRzIGEgbWVt
YmVyIGZ1bmN0aW9uIHBvaW50ZXIKKy8vIHBhc3NlZCBieSByZWZlcmVuY2UuCitURVNUKFByaW50
UmVmZXJlbmNlVGVzdCwgSGFuZGxlc01lbWJlckZ1bmN0aW9uUG9pbnRlcikgeworICBpbnQgKEZv
bzo6KnApKGNoYXIgY2gpID0gJkZvbzo6TXlNZXRob2Q7CisgIEVYUEVDVF9UUlVFKEhhc1ByZWZp
eCgKKyAgICAgIFByaW50QnlSZWYocCksCisgICAgICAiQCIgKyBQcmludFBvaW50ZXIocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB2b2lkKj4oJnApKSArICIgIiArCisgICAgICAgICAgUHJpbnQoc2l6
ZW9mKHApKSArICItYnl0ZSBvYmplY3QgIikpOworCisgIGNoYXIgKEZvbzo6KnAyKShpbnQgbikg
PSAmRm9vOjpNeVZpcnR1YWxNZXRob2Q7CisgIEVYUEVDVF9UUlVFKEhhc1ByZWZpeCgKKyAgICAg
IFByaW50QnlSZWYocDIpLAorICAgICAgIkAiICsgUHJpbnRQb2ludGVyKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3Qgdm9pZCo+KCZwMikpICsgIiAiICsKKyAgICAgICAgICBQcmludChzaXplb2YocDIp
KSArICItYnl0ZSBvYmplY3QgIikpOworfQorCisvLyBUZXN0cyB0aGF0IHRoZSB1bml2ZXJzYWwg
cHJpbnRlciBwcmludHMgYSBtZW1iZXIgdmFyaWFibGUgcG9pbnRlcgorLy8gcGFzc2VkIGJ5IHJl
ZmVyZW5jZS4KK1RFU1QoUHJpbnRSZWZlcmVuY2VUZXN0LCBIYW5kbGVzTWVtYmVyVmFyaWFibGVQ
b2ludGVyKSB7CisgIGludCAoRm9vOjoqcCkgPSAmRm9vOjp2YWx1ZTsgIC8vIE5PTElOVAorICBF
WFBFQ1RfVFJVRShIYXNQcmVmaXgoCisgICAgICBQcmludEJ5UmVmKHApLAorICAgICAgIkAiICsg
UHJpbnRQb2ludGVyKCZwKSArICIgIiArIFByaW50KHNpemVvZihwKSkgKyAiLWJ5dGUgb2JqZWN0
ICIpKTsKK30KKworLy8gVGVzdHMgdGhhdCBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3Nh
Z2UoKSwgd2hpY2ggaXMgdXNlZCB0byBwcmludAorLy8gYW4gb3BlcmFuZCBpbiBhIGNvbXBhcmlz
b24gYXNzZXJ0aW9uIChlLmcuIEFTU0VSVF9FUSkgd2hlbiB0aGUgYXNzZXJ0aW9uCisvLyBmYWls
cywgZm9ybWF0cyB0aGUgb3BlcmFuZCBpbiB0aGUgZGVzaXJlZCB3YXkuCisKKy8vIHNjYWxhcgor
VEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvclNjYWxh
cikgeworICBFWFBFQ1RfU1RSRVEoIjEyMyIsCisgICAgICAgICAgICAgICBGb3JtYXRGb3JDb21w
YXJpc29uRmFpbHVyZU1lc3NhZ2UoMTIzLCAxMjQpLmNfc3RyKCkpOworfQorCisvLyBub24tY2hh
ciBwb2ludGVyCitURVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdv
cmtzRm9yTm9uQ2hhclBvaW50ZXIpIHsKKyAgaW50IG4gPSAwOworICBFWFBFQ1RfRVEoUHJpbnRQ
b2ludGVyKCZuKSwKKyAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2Fn
ZSgmbiwgJm4pLmNfc3RyKCkpOworfQorCisvLyBub24tY2hhciBhcnJheQorVEVTVChGb3JtYXRG
b3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBGb3JtYXRzTm9uQ2hhckFycmF5QXNQb2lu
dGVyKSB7CisgIC8vIEluIGV4cHJlc3Npb24gJ2FycmF5ID09IHgnLCAnYXJyYXknIGlzIGNvbXBh
cmVkIGJ5IHBvaW50ZXIuCisgIC8vIFRoZXJlZm9yZSB3ZSB3YW50IHRvIHByaW50IGFuIGFycmF5
IG9wZXJhbmQgYXMgYSBwb2ludGVyLgorICBpbnQgbltdID0geyAxLCAyLCAzIH07CisgIEVYUEVD
VF9FUShQcmludFBvaW50ZXIobiksCisgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFp
bHVyZU1lc3NhZ2UobiwgbikuY19zdHIoKSk7Cit9CisKKy8vIFRlc3RzIGZvcm1hdHRpbmcgYSBj
aGFyIHBvaW50ZXIgd2hlbiBpdCdzIGNvbXBhcmVkIHdpdGggYW5vdGhlciBwb2ludGVyLgorLy8g
SW4gdGhpcyBjYXNlIHdlIHdhbnQgdG8gcHJpbnQgaXQgYXMgYSByYXcgcG9pbnRlciwgYXMgdGhl
IGNvbXBhcmlzaW9uIGlzIGJ5CisvLyBwb2ludGVyLgorCisvLyBjaGFyIHBvaW50ZXIgdnMgcG9p
bnRlcgorVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0Zv
ckNoYXJQb2ludGVyVnNQb2ludGVyKSB7CisgIC8vIEluIGV4cHJlc3Npb24gJ3AgPT0geCcsIHdo
ZXJlICdwJyBhbmQgJ3gnIGFyZSAoY29uc3Qgb3Igbm90KSBjaGFyCisgIC8vIHBvaW50ZXJzLCB0
aGUgb3BlcmFuZHMgYXJlIGNvbXBhcmVkIGJ5IHBvaW50ZXIuICBUaGVyZWZvcmUgd2UKKyAgLy8g
d2FudCB0byBwcmludCAncCcgYXMgYSBwb2ludGVyIGluc3RlYWQgb2YgYSBDIHN0cmluZyAod2Ug
ZG9uJ3QKKyAgLy8gZXZlbiBrbm93IGlmIGl0J3Mgc3VwcG9zZWQgdG8gcG9pbnQgdG8gYSB2YWxp
ZCBDIHN0cmluZykuCisKKyAgLy8gY29uc3QgY2hhcioKKyAgY29uc3QgY2hhciogcyA9ICJoZWxs
byI7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIocyksCisgICAgICAgICAgICBGb3JtYXRGb3JD
b21wYXJpc29uRmFpbHVyZU1lc3NhZ2UocywgcykuY19zdHIoKSk7CisKKyAgLy8gY2hhcioKKyAg
Y2hhciBjaCA9ICdhJzsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcigmY2gpLAorICAgICAgICAg
ICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKCZjaCwgJmNoKS5jX3N0cigpKTsK
K30KKworLy8gd2NoYXJfdCBwb2ludGVyIHZzIHBvaW50ZXIKK1RFU1QoRm9ybWF0Rm9yQ29tcGFy
aXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JXQ2hhclBvaW50ZXJWc1BvaW50ZXIpIHsK
KyAgLy8gSW4gZXhwcmVzc2lvbiAncCA9PSB4Jywgd2hlcmUgJ3AnIGFuZCAneCcgYXJlIChjb25z
dCBvciBub3QpIGNoYXIKKyAgLy8gcG9pbnRlcnMsIHRoZSBvcGVyYW5kcyBhcmUgY29tcGFyZWQg
YnkgcG9pbnRlci4gIFRoZXJlZm9yZSB3ZQorICAvLyB3YW50IHRvIHByaW50ICdwJyBhcyBhIHBv
aW50ZXIgaW5zdGVhZCBvZiBhIHdpZGUgQyBzdHJpbmcgKHdlIGRvbid0CisgIC8vIGV2ZW4ga25v
dyBpZiBpdCdzIHN1cHBvc2VkIHRvIHBvaW50IHRvIGEgdmFsaWQgd2lkZSBDIHN0cmluZykuCisK
KyAgLy8gY29uc3Qgd2NoYXJfdCoKKyAgY29uc3Qgd2NoYXJfdCogcyA9IEwiaGVsbG8iOworICBF
WFBFQ1RfRVEoUHJpbnRQb2ludGVyKHMpLAorICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNv
bkZhaWx1cmVNZXNzYWdlKHMsIHMpLmNfc3RyKCkpOworCisgIC8vIHdjaGFyX3QqCisgIHdjaGFy
X3QgY2ggPSBMJ2EnOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKCZjaCksCisgICAgICAgICAg
ICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UoJmNoLCAmY2gpLmNfc3RyKCkpOwor
fQorCisvLyBUZXN0cyBmb3JtYXR0aW5nIGEgY2hhciBwb2ludGVyIHdoZW4gaXQncyBjb21wYXJl
ZCB0byBhIHN0cmluZyBvYmplY3QuCisvLyBJbiB0aGlzIGNhc2Ugd2Ugd2FudCB0byBwcmludCB0
aGUgY2hhciBwb2ludGVyIGFzIGEgQyBzdHJpbmcuCisKKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1NU
UklORworLy8gY2hhciBwb2ludGVyIHZzIDo6c3RyaW5nCitURVNUKEZvcm1hdEZvckNvbXBhcmlz
b25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yQ2hhclBvaW50ZXJWc1N0cmluZykgeworICBj
b25zdCBjaGFyKiBzID0gImhlbGxvIFwid29ybGQiOworICBFWFBFQ1RfU1RSRVEoIlwiaGVsbG8g
XFxcIndvcmxkXCIiLCAgLy8gVGhlIHN0cmluZyBjb250ZW50IHNob3VsZCBiZSBlc2NhcGVkLgor
ICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHMsIDo6c3Ry
aW5nKCkpLmNfc3RyKCkpOworCisgIC8vIGNoYXIqCisgIGNoYXIgc3RyW10gPSAiaGlcMSI7Cisg
IGNoYXIqIHAgPSBzdHI7CisgIEVYUEVDVF9TVFJFUSgiXCJoaVxceDFcIiIsICAvLyBUaGUgc3Ry
aW5nIGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCisgICAgICAgICAgICAgICBGb3JtYXRGb3JD
b21wYXJpc29uRmFpbHVyZU1lc3NhZ2UocCwgOjpzdHJpbmcoKSkuY19zdHIoKSk7Cit9CisjZW5k
aWYKKworLy8gY2hhciBwb2ludGVyIHZzIHN0ZDo6c3RyaW5nCitURVNUKEZvcm1hdEZvckNvbXBh
cmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yQ2hhclBvaW50ZXJWc1N0ZFN0cmluZykg
eworICBjb25zdCBjaGFyKiBzID0gImhlbGxvIFwid29ybGQiOworICBFWFBFQ1RfU1RSRVEoIlwi
aGVsbG8gXFxcIndvcmxkXCIiLCAgLy8gVGhlIHN0cmluZyBjb250ZW50IHNob3VsZCBiZSBlc2Nh
cGVkLgorICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHMs
IDo6c3RkOjpzdHJpbmcoKSkuY19zdHIoKSk7CisKKyAgLy8gY2hhcioKKyAgY2hhciBzdHJbXSA9
ICJoaVwxIjsKKyAgY2hhciogcCA9IHN0cjsKKyAgRVhQRUNUX1NUUkVRKCJcImhpXFx4MVwiIiwg
IC8vIFRoZSBzdHJpbmcgY29udGVudCBzaG91bGQgYmUgZXNjYXBlZC4KKyAgICAgICAgICAgICAg
IEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShwLCA6OnN0ZDo6c3RyaW5nKCkpLmNf
c3RyKCkpOworfQorCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCisvLyB3Y2hhcl90IHBv
aW50ZXIgdnMgOjp3c3RyaW5nCitURVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2Fn
ZVRlc3QsIFdvcmtzRm9yV0NoYXJQb2ludGVyVnNXU3RyaW5nKSB7CisgIGNvbnN0IHdjaGFyX3Qq
IHMgPSBMImhpIFwid29ybGQiOworICBFWFBFQ1RfU1RSRVEoIkxcImhpIFxcXCJ3b3JsZFwiIiwg
IC8vIFRoZSBzdHJpbmcgY29udGVudCBzaG91bGQgYmUgZXNjYXBlZC4KKyAgICAgICAgICAgICAg
IEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShzLCA6OndzdHJpbmcoKSkuY19zdHIo
KSk7CisKKyAgLy8gd2NoYXJfdCoKKyAgd2NoYXJfdCBzdHJbXSA9IEwiaGlcMSI7CisgIHdjaGFy
X3QqIHAgPSBzdHI7CisgIEVYUEVDVF9TVFJFUSgiTFwiaGlcXHgxXCIiLCAgLy8gVGhlIHN0cmlu
ZyBjb250ZW50IHNob3VsZCBiZSBlc2NhcGVkLgorICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29t
cGFyaXNvbkZhaWx1cmVNZXNzYWdlKHAsIDo6d3N0cmluZygpKS5jX3N0cigpKTsKK30KKyNlbmRp
ZgorCisjaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCisvLyB3Y2hhcl90IHBvaW50ZXIgdnMgc3Rk
Ojp3c3RyaW5nCitURVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdv
cmtzRm9yV0NoYXJQb2ludGVyVnNTdGRXU3RyaW5nKSB7CisgIGNvbnN0IHdjaGFyX3QqIHMgPSBM
ImhpIFwid29ybGQiOworICBFWFBFQ1RfU1RSRVEoIkxcImhpIFxcXCJ3b3JsZFwiIiwgIC8vIFRo
ZSBzdHJpbmcgY29udGVudCBzaG91bGQgYmUgZXNjYXBlZC4KKyAgICAgICAgICAgICAgIEZvcm1h
dEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShzLCA6OnN0ZDo6d3N0cmluZygpKS5jX3N0cigp
KTsKKworICAvLyB3Y2hhcl90KgorICB3Y2hhcl90IHN0cltdID0gTCJoaVwxIjsKKyAgd2NoYXJf
dCogcCA9IHN0cjsKKyAgRVhQRUNUX1NUUkVRKCJMXCJoaVxceDFcIiIsICAvLyBUaGUgc3RyaW5n
IGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCisgICAgICAgICAgICAgICBGb3JtYXRGb3JDb21w
YXJpc29uRmFpbHVyZU1lc3NhZ2UocCwgOjpzdGQ6OndzdHJpbmcoKSkuY19zdHIoKSk7Cit9Cisj
ZW5kaWYKKworLy8gVGVzdHMgZm9ybWF0dGluZyBhIGNoYXIgYXJyYXkgd2hlbiBpdCdzIGNvbXBh
cmVkIHdpdGggYSBwb2ludGVyIG9yIGFycmF5LgorLy8gSW4gdGhpcyBjYXNlIHdlIHdhbnQgdG8g
cHJpbnQgdGhlIGFycmF5IGFzIGEgcm93IHBvaW50ZXIsIGFzIHRoZSBjb21wYXJpc29uCisvLyBp
cyBieSBwb2ludGVyLgorCisvLyBjaGFyIGFycmF5IHZzIHBvaW50ZXIKK1RFU1QoRm9ybWF0Rm9y
Q29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JDaGFyQXJyYXlWc1BvaW50ZXIp
IHsKKyAgY2hhciBzdHJbXSA9ICJoaSBcIndvcmxkXCIiOworICBjaGFyKiBwID0gTlVMTDsKKyAg
RVhQRUNUX0VRKFByaW50UG9pbnRlcihzdHIpLAorICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFy
aXNvbkZhaWx1cmVNZXNzYWdlKHN0ciwgcCkuY19zdHIoKSk7Cit9CisKKy8vIGNoYXIgYXJyYXkg
dnMgY2hhciBhcnJheQorVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0
LCBXb3Jrc0ZvckNoYXJBcnJheVZzQ2hhckFycmF5KSB7CisgIGNvbnN0IGNoYXIgc3RyW10gPSAi
aGkgXCJ3b3JsZFwiIjsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihzdHIpLAorICAgICAgICAg
ICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHN0ciwgc3RyKS5jX3N0cigpKTsK
K30KKworLy8gd2NoYXJfdCBhcnJheSB2cyBwb2ludGVyCitURVNUKEZvcm1hdEZvckNvbXBhcmlz
b25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yV0NoYXJBcnJheVZzUG9pbnRlcikgeworICB3
Y2hhcl90IHN0cltdID0gTCJoaSBcIndvcmxkXCIiOworICB3Y2hhcl90KiBwID0gTlVMTDsKKyAg
RVhQRUNUX0VRKFByaW50UG9pbnRlcihzdHIpLAorICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFy
aXNvbkZhaWx1cmVNZXNzYWdlKHN0ciwgcCkuY19zdHIoKSk7Cit9CisKKy8vIHdjaGFyX3QgYXJy
YXkgdnMgd2NoYXJfdCBhcnJheQorVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3Nh
Z2VUZXN0LCBXb3Jrc0ZvcldDaGFyQXJyYXlWc1dDaGFyQXJyYXkpIHsKKyAgY29uc3Qgd2NoYXJf
dCBzdHJbXSA9IEwiaGkgXCJ3b3JsZFwiIjsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihzdHIp
LAorICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHN0ciwgc3Ry
KS5jX3N0cigpKTsKK30KKworLy8gVGVzdHMgZm9ybWF0dGluZyBhIGNoYXIgYXJyYXkgd2hlbiBp
dCdzIGNvbXBhcmVkIHdpdGggYSBzdHJpbmcgb2JqZWN0LgorLy8gSW4gdGhpcyBjYXNlIHdlIHdh
bnQgdG8gcHJpbnQgdGhlIGFycmF5IGFzIGEgQyBzdHJpbmcuCisKKyNpZiBHVEVTVF9IQVNfR0xP
QkFMX1NUUklORworLy8gY2hhciBhcnJheSB2cyBzdHJpbmcKK1RFU1QoRm9ybWF0Rm9yQ29tcGFy
aXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JDaGFyQXJyYXlWc1N0cmluZykgeworICBj
b25zdCBjaGFyIHN0cltdID0gImhpIFwid1wwcmxkXCIiOworICBFWFBFQ1RfU1RSRVEoIlwiaGkg
XFxcIndcIiIsICAvLyBUaGUgY29udGVudCBzaG91bGQgYmUgZXNjYXBlZC4KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gRW1iZWRkZWQgTlVMIHRlcm1pbmF0ZXMgdGhlIHN0cmlu
Zy4KKyAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShzdHIs
IDo6c3RyaW5nKCkpLmNfc3RyKCkpOworfQorI2VuZGlmCisKKy8vIGNoYXIgYXJyYXkgdnMgc3Rk
OjpzdHJpbmcKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29y
a3NGb3JDaGFyQXJyYXlWc1N0ZFN0cmluZykgeworICBjb25zdCBjaGFyIHN0cltdID0gImhpIFwi
d29ybGRcIiI7CisgIEVYUEVDVF9TVFJFUSgiXCJoaSBcXFwid29ybGRcXFwiXCIiLCAgLy8gVGhl
IGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCisgICAgICAgICAgICAgICBGb3JtYXRGb3JDb21w
YXJpc29uRmFpbHVyZU1lc3NhZ2Uoc3RyLCA6OnN0ZDo6c3RyaW5nKCkpLmNfc3RyKCkpOworfQor
CisjaWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCisvLyB3Y2hhcl90IGFycmF5IHZzIHdzdHJp
bmcKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JX
Q2hhckFycmF5VnNXU3RyaW5nKSB7CisgIGNvbnN0IHdjaGFyX3Qgc3RyW10gPSBMImhpIFwid29y
bGRcIiI7CisgIEVYUEVDVF9TVFJFUSgiTFwiaGkgXFxcIndvcmxkXFxcIlwiIiwgIC8vIFRoZSBj
b250ZW50IHNob3VsZCBiZSBlc2NhcGVkLgorICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFy
aXNvbkZhaWx1cmVNZXNzYWdlKHN0ciwgOjp3c3RyaW5nKCkpLmNfc3RyKCkpOworfQorI2VuZGlm
CisKKyNpZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKKy8vIHdjaGFyX3QgYXJyYXkgdnMgc3RkOjp3
c3RyaW5nCitURVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtz
Rm9yV0NoYXJBcnJheVZzU3RkV1N0cmluZykgeworICBjb25zdCB3Y2hhcl90IHN0cltdID0gTCJo
aSBcIndcMHJsZFwiIjsKKyAgRVhQRUNUX1NUUkVRKAorICAgICAgIkxcImhpIFxcXCJ3XCIiLCAg
Ly8gVGhlIGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCisgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBFbWJlZGRlZCBOVUwgdGVybWluYXRlcyB0aGUgc3RyaW5nLgorICAgICAgRm9ybWF0Rm9y
Q29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHN0ciwgOjpzdGQ6OndzdHJpbmcoKSkuY19zdHIoKSk7
Cit9CisjZW5kaWYKKworLy8gVXNlZnVsIGZvciB0ZXN0aW5nIFByaW50VG9TdHJpbmcoKS4gIFdl
IGNhbm5vdCB1c2UgRVhQRUNUX0VRKCkKKy8vIHRoZXJlIGFzIGl0cyBpbXBsZW1lbnRhdGlvbiB1
c2VzIFByaW50VG9TdHJpbmcoKS4gIFRoZSBjYWxsZXIgbXVzdAorLy8gZW5zdXJlIHRoYXQgJ3Zh
bHVlJyBoYXMgbm8gc2lkZSBlZmZlY3QuCisjZGVmaW5lIEVYUEVDVF9QUklOVF9UT19TVFJJTkdf
KHZhbHVlLCBleHBlY3RlZF9zdHJpbmcpICAgICAgICAgXAorICBFWFBFQ1RfVFJVRShQcmludFRv
U3RyaW5nKHZhbHVlKSA9PSAoZXhwZWN0ZWRfc3RyaW5nKSkgICAgICAgIFwKKyAgICAgIDw8ICIg
d2hlcmUgIiAjdmFsdWUgIiBwcmludHMgYXMgIiA8PCAoUHJpbnRUb1N0cmluZyh2YWx1ZSkpCisK
K1RFU1QoUHJpbnRUb1N0cmluZ1Rlc3QsIFdvcmtzRm9yU2NhbGFyKSB7CisgIEVYUEVDVF9QUklO
VF9UT19TVFJJTkdfKDEyMywgIjEyMyIpOworfQorCitURVNUKFByaW50VG9TdHJpbmdUZXN0LCBX
b3Jrc0ZvclBvaW50ZXJUb0NvbnN0Q2hhcikgeworICBjb25zdCBjaGFyKiBwID0gImhlbGxvIjsK
KyAgRVhQRUNUX1BSSU5UX1RPX1NUUklOR18ocCwgIlwiaGVsbG9cIiIpOworfQorCitURVNUKFBy
aW50VG9TdHJpbmdUZXN0LCBXb3Jrc0ZvclBvaW50ZXJUb05vbkNvbnN0Q2hhcikgeworICBjaGFy
IHNbXSA9ICJoZWxsbyI7CisgIGNoYXIqIHAgPSBzOworICBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5H
XyhwLCAiXCJoZWxsb1wiIik7Cit9CisKK1RFU1QoUHJpbnRUb1N0cmluZ1Rlc3QsIEVzY2FwZXNG
b3JQb2ludGVyVG9Db25zdENoYXIpIHsKKyAgY29uc3QgY2hhciogcCA9ICJoZWxsb1xuIjsKKyAg
RVhQRUNUX1BSSU5UX1RPX1NUUklOR18ocCwgIlwiaGVsbG9cXG5cIiIpOworfQorCitURVNUKFBy
aW50VG9TdHJpbmdUZXN0LCBFc2NhcGVzRm9yUG9pbnRlclRvTm9uQ29uc3RDaGFyKSB7CisgIGNo
YXIgc1tdID0gImhlbGxvXDEiOworICBjaGFyKiBwID0gczsKKyAgRVhQRUNUX1BSSU5UX1RPX1NU
UklOR18ocCwgIlwiaGVsbG9cXHgxXCIiKTsKK30KKworVEVTVChQcmludFRvU3RyaW5nVGVzdCwg
V29ya3NGb3JBcnJheSkgeworICBpbnQgblszXSA9IHsgMSwgMiwgMyB9OworICBFWFBFQ1RfUFJJ
TlRfVE9fU1RSSU5HXyhuLCAieyAxLCAyLCAzIH0iKTsKK30KKworVEVTVChQcmludFRvU3RyaW5n
VGVzdCwgV29ya3NGb3JDaGFyQXJyYXkpIHsKKyAgY2hhciBzW10gPSAiaGVsbG8iOworICBFWFBF
Q1RfUFJJTlRfVE9fU1RSSU5HXyhzLCAiXCJoZWxsb1wiIik7Cit9CisKK1RFU1QoUHJpbnRUb1N0
cmluZ1Rlc3QsIFdvcmtzRm9yQ2hhckFycmF5V2l0aEVtYmVkZGVkTnVsKSB7CisgIGNvbnN0IGNo
YXIgc3RyX3dpdGhfbnVsW10gPSAiaGVsbG9cMCB3b3JsZCI7CisgIEVYUEVDVF9QUklOVF9UT19T
VFJJTkdfKHN0cl93aXRoX251bCwgIlwiaGVsbG9cXDAgd29ybGRcIiIpOworCisgIGNoYXIgbXV0
YWJsZV9zdHJfd2l0aF9udWxbXSA9ICJoZWxsb1wwIHdvcmxkIjsKKyAgRVhQRUNUX1BSSU5UX1RP
X1NUUklOR18obXV0YWJsZV9zdHJfd2l0aF9udWwsICJcImhlbGxvXFwwIHdvcmxkXCIiKTsKK30K
KworI3VuZGVmIEVYUEVDVF9QUklOVF9UT19TVFJJTkdfCisKK1RFU1QoVW5pdmVyc2FsVGVyc2VQ
cmludFRlc3QsIFdvcmtzRm9yTm9uUmVmZXJlbmNlKSB7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0g
c3M7CisgIFVuaXZlcnNhbFRlcnNlUHJpbnQoMTIzLCAmc3MpOworICBFWFBFQ1RfRVEoIjEyMyIs
IHNzLnN0cigpKTsKK30KKworVEVTVChVbml2ZXJzYWxUZXJzZVByaW50VGVzdCwgV29ya3NGb3JS
ZWZlcmVuY2UpIHsKKyAgY29uc3QgaW50JiBuID0gMTIzOworICA6OnN0ZDo6c3RyaW5nc3RyZWFt
IHNzOworICBVbml2ZXJzYWxUZXJzZVByaW50KG4sICZzcyk7CisgIEVYUEVDVF9FUSgiMTIzIiwg
c3Muc3RyKCkpOworfQorCitURVNUKFVuaXZlcnNhbFRlcnNlUHJpbnRUZXN0LCBXb3Jrc0ZvckNT
dHJpbmcpIHsKKyAgY29uc3QgY2hhciogczEgPSAiYWJjIjsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVh
bSBzczE7CisgIFVuaXZlcnNhbFRlcnNlUHJpbnQoczEsICZzczEpOworICBFWFBFQ1RfRVEoIlwi
YWJjXCIiLCBzczEuc3RyKCkpOworCisgIGNoYXIqIHMyID0gY29uc3RfY2FzdDxjaGFyKj4oczEp
OworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzMjsKKyAgVW5pdmVyc2FsVGVyc2VQcmludChzMiwg
JnNzMik7CisgIEVYUEVDVF9FUSgiXCJhYmNcIiIsIHNzMi5zdHIoKSk7CisKKyAgY29uc3QgY2hh
ciogczMgPSBOVUxMOworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzMzsKKyAgVW5pdmVyc2FsVGVy
c2VQcmludChzMywgJnNzMyk7CisgIEVYUEVDVF9FUSgiTlVMTCIsIHNzMy5zdHIoKSk7Cit9CisK
K1RFU1QoVW5pdmVyc2FsUHJpbnRUZXN0LCBXb3Jrc0Zvck5vblJlZmVyZW5jZSkgeworICA6OnN0
ZDo6c3RyaW5nc3RyZWFtIHNzOworICBVbml2ZXJzYWxQcmludCgxMjMsICZzcyk7CisgIEVYUEVD
VF9FUSgiMTIzIiwgc3Muc3RyKCkpOworfQorCitURVNUKFVuaXZlcnNhbFByaW50VGVzdCwgV29y
a3NGb3JSZWZlcmVuY2UpIHsKKyAgY29uc3QgaW50JiBuID0gMTIzOworICA6OnN0ZDo6c3RyaW5n
c3RyZWFtIHNzOworICBVbml2ZXJzYWxQcmludChuLCAmc3MpOworICBFWFBFQ1RfRVEoIjEyMyIs
IHNzLnN0cigpKTsKK30KKworVEVTVChVbml2ZXJzYWxQcmludFRlc3QsIFdvcmtzRm9yQ1N0cmlu
ZykgeworICBjb25zdCBjaGFyKiBzMSA9ICJhYmMiOworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNz
MTsKKyAgVW5pdmVyc2FsUHJpbnQoczEsICZzczEpOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVy
KHMxKSArICIgcG9pbnRpbmcgdG8gXCJhYmNcIiIsIHN0ZDo6c3RyaW5nKHNzMS5zdHIoKSkpOwor
CisgIGNoYXIqIHMyID0gY29uc3RfY2FzdDxjaGFyKj4oczEpOworICA6OnN0ZDo6c3RyaW5nc3Ry
ZWFtIHNzMjsKKyAgVW5pdmVyc2FsUHJpbnQoczIsICZzczIpOworICBFWFBFQ1RfRVEoUHJpbnRQ
b2ludGVyKHMyKSArICIgcG9pbnRpbmcgdG8gXCJhYmNcIiIsIHN0ZDo6c3RyaW5nKHNzMi5zdHIo
KSkpOworCisgIGNvbnN0IGNoYXIqIHMzID0gTlVMTDsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBz
czM7CisgIFVuaXZlcnNhbFByaW50KHMzLCAmc3MzKTsKKyAgRVhQRUNUX0VRKCJOVUxMIiwgc3Mz
LnN0cigpKTsKK30KKworVEVTVChVbml2ZXJzYWxQcmludFRlc3QsIFdvcmtzRm9yQ2hhckFycmF5
KSB7CisgIGNvbnN0IGNoYXIgc3RyW10gPSAiXCJMaW5lXDAgMVwiXG5MaW5lIDIiOworICA6OnN0
ZDo6c3RyaW5nc3RyZWFtIHNzMTsKKyAgVW5pdmVyc2FsUHJpbnQoc3RyLCAmc3MxKTsKKyAgRVhQ
RUNUX0VRKCJcIlxcXCJMaW5lXFwwIDFcXFwiXFxuTGluZSAyXCIiLCBzczEuc3RyKCkpOworCisg
IGNvbnN0IGNoYXIgbXV0YWJsZV9zdHJbXSA9ICJcIkxpbmVcMCAxXCJcbkxpbmUgMiI7CisgIDo6
c3RkOjpzdHJpbmdzdHJlYW0gc3MyOworICBVbml2ZXJzYWxQcmludChtdXRhYmxlX3N0ciwgJnNz
Mik7CisgIEVYUEVDVF9FUSgiXCJcXFwiTGluZVxcMCAxXFxcIlxcbkxpbmUgMlwiIiwgc3MyLnN0
cigpKTsKK30KKworI2lmIEdURVNUX0hBU19UUjFfVFVQTEUKKworVEVTVChVbml2ZXJzYWxUZXJz
ZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3NUZXN0V2l0aFRyMSwgUHJpbnRzRW1wdHlUdXBsZSkg
eworICBTdHJpbmdzIHJlc3VsdCA9IFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3Ry
aW5ncygKKyAgICAgIDo6c3RkOjp0cjE6Om1ha2VfdHVwbGUoKSk7CisgIEVYUEVDVF9FUSgwdSwg
cmVzdWx0LnNpemUoKSk7Cit9CisKK1RFU1QoVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRz
VG9TdHJpbmdzVGVzdFdpdGhUcjEsIFByaW50c09uZVR1cGxlKSB7CisgIFN0cmluZ3MgcmVzdWx0
ID0gVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKAorICAgICAgOjpzdGQ6
OnRyMTo6bWFrZV90dXBsZSgxKSk7CisgIEFTU0VSVF9FUSgxdSwgcmVzdWx0LnNpemUoKSk7Cisg
IEVYUEVDVF9FUSgiMSIsIHJlc3VsdFswXSk7Cit9CisKK1RFU1QoVW5pdmVyc2FsVGVyc2VQcmlu
dFR1cGxlRmllbGRzVG9TdHJpbmdzVGVzdFdpdGhUcjEsIFByaW50c1R3b1R1cGxlKSB7CisgIFN0
cmluZ3MgcmVzdWx0ID0gVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKAor
ICAgICAgOjpzdGQ6OnRyMTo6bWFrZV90dXBsZSgxLCAnYScpKTsKKyAgQVNTRVJUX0VRKDJ1LCBy
ZXN1bHQuc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKCIxIiwgcmVzdWx0WzBdKTsKKyAgRVhQRUNUX0VR
KCInYScgKDk3LCAweDYxKSIsIHJlc3VsdFsxXSk7Cit9CisKK1RFU1QoVW5pdmVyc2FsVGVyc2VQ
cmludFR1cGxlRmllbGRzVG9TdHJpbmdzVGVzdFdpdGhUcjEsIFByaW50c1RlcnNlbHkpIHsKKyAg
Y29uc3QgaW50IG4gPSAxOworICBTdHJpbmdzIHJlc3VsdCA9IFVuaXZlcnNhbFRlcnNlUHJpbnRU
dXBsZUZpZWxkc1RvU3RyaW5ncygKKyAgICAgIDo6c3RkOjp0cjE6OnR1cGxlPGNvbnN0IGludCYs
IGNvbnN0IGNoYXIqPihuLCAiYSIpKTsKKyAgQVNTRVJUX0VRKDJ1LCByZXN1bHQuc2l6ZSgpKTsK
KyAgRVhQRUNUX0VRKCIxIiwgcmVzdWx0WzBdKTsKKyAgRVhQRUNUX0VRKCJcImFcIiIsIHJlc3Vs
dFsxXSk7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1RSMV9UVVBMRQorCisjaWYgR1RFU1Rf
SEFTX1NURF9UVVBMRV8KKworVEVTVChVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0
cmluZ3NUZXN0V2l0aFN0ZCwgUHJpbnRzRW1wdHlUdXBsZSkgeworICBTdHJpbmdzIHJlc3VsdCA9
IFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5ncyg6OnN0ZDo6bWFrZV90dXBs
ZSgpKTsKKyAgRVhQRUNUX0VRKDB1LCByZXN1bHQuc2l6ZSgpKTsKK30KKworVEVTVChVbml2ZXJz
YWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3NUZXN0V2l0aFN0ZCwgUHJpbnRzT25lVHVw
bGUpIHsKKyAgU3RyaW5ncyByZXN1bHQgPSBVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNU
b1N0cmluZ3MoCisgICAgICA6OnN0ZDo6bWFrZV90dXBsZSgxKSk7CisgIEFTU0VSVF9FUSgxdSwg
cmVzdWx0LnNpemUoKSk7CisgIEVYUEVDVF9FUSgiMSIsIHJlc3VsdFswXSk7Cit9CisKK1RFU1Qo
VW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzVGVzdFdpdGhTdGQsIFByaW50
c1R3b1R1cGxlKSB7CisgIFN0cmluZ3MgcmVzdWx0ID0gVW5pdmVyc2FsVGVyc2VQcmludFR1cGxl
RmllbGRzVG9TdHJpbmdzKAorICAgICAgOjpzdGQ6Om1ha2VfdHVwbGUoMSwgJ2EnKSk7CisgIEFT
U0VSVF9FUSgydSwgcmVzdWx0LnNpemUoKSk7CisgIEVYUEVDVF9FUSgiMSIsIHJlc3VsdFswXSk7
CisgIEVYUEVDVF9FUSgiJ2EnICg5NywgMHg2MSkiLCByZXN1bHRbMV0pOworfQorCitURVNUKFVu
aXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5nc1Rlc3RXaXRoU3RkLCBQcmludHNU
ZXJzZWx5KSB7CisgIGNvbnN0IGludCBuID0gMTsKKyAgU3RyaW5ncyByZXN1bHQgPSBVbml2ZXJz
YWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3MoCisgICAgICA6OnN0ZDo6dHVwbGU8Y29u
c3QgaW50JiwgY29uc3QgY2hhcio+KG4sICJhIikpOworICBBU1NFUlRfRVEoMnUsIHJlc3VsdC5z
aXplKCkpOworICBFWFBFQ1RfRVEoIjEiLCByZXN1bHRbMF0pOworICBFWFBFQ1RfRVEoIlwiYVwi
IiwgcmVzdWx0WzFdKTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX1RVUExFXworCit9
ICAvLyBuYW1lc3BhY2UgZ3Rlc3RfcHJpbnRlcnNfdGVzdAorfSAgLy8gbmFtZXNwYWNlIHRlc3Rp
bmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0X3Rlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0LXRlc3QtcGFydF90ZXN0LmNjCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNh
OGJhOTMzYWVmOTAxNzcwYWNhNzhlMWU0NGI5YmRlNTBlODY1MGMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0LXRlc3QtcGFydF90ZXN0LmNjCkBAIC0wLDAgKzEsMjA4
IEBACisvLyBDb3B5cmlnaHQgMjAwOCBHb29nbGUgSW5jLgorLy8gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
Ly8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
Ky8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBB
dXRob3I6IG1oZXVsZUBnb29nbGUuY29tIChNYXJrdXMgSGV1bGUpCisvLworCisjaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0LmgiCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCit1
c2luZyB0ZXN0aW5nOjpNZXNzYWdlOwordXNpbmcgdGVzdGluZzo6VGVzdDsKK3VzaW5nIHRlc3Rp
bmc6OlRlc3RQYXJ0UmVzdWx0OwordXNpbmcgdGVzdGluZzo6VGVzdFBhcnRSZXN1bHRBcnJheTsK
KworbmFtZXNwYWNlIHsKKworLy8gVGVzdHMgdGhlIFRlc3RQYXJ0UmVzdWx0IGNsYXNzLgorCisv
LyBUaGUgdGVzdCBmaXh0dXJlIGZvciB0ZXN0aW5nIFRlc3RQYXJ0UmVzdWx0LgorY2xhc3MgVGVz
dFBhcnRSZXN1bHRUZXN0IDogcHVibGljIFRlc3QgeworIHByb3RlY3RlZDoKKyAgVGVzdFBhcnRS
ZXN1bHRUZXN0KCkKKyAgICAgIDogcjFfKFRlc3RQYXJ0UmVzdWx0OjprU3VjY2VzcywgImZvby9i
YXIuY2MiLCAxMCwgIlN1Y2Nlc3MhIiksCisgICAgICAgIHIyXyhUZXN0UGFydFJlc3VsdDo6a05v
bkZhdGFsRmFpbHVyZSwgImZvby9iYXIuY2MiLCAtMSwgIkZhaWx1cmUhIiksCisgICAgICAgIHIz
XyhUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSwgTlVMTCwgLTEsICJGYWlsdXJlISIpIHt9
CisKKyAgVGVzdFBhcnRSZXN1bHQgcjFfLCByMl8sIHIzXzsKK307CisKKworVEVTVF9GKFRlc3RQ
YXJ0UmVzdWx0VGVzdCwgQ29uc3RydWN0b3JXb3JrcykgeworICBNZXNzYWdlIG1lc3NhZ2U7Cisg
IG1lc3NhZ2UgPDwgInNvbWV0aGluZyBpcyB0ZXJyaWJseSB3cm9uZyI7CisgIG1lc3NhZ2UgPDwg
c3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHRlc3Rpbmc6OmludGVybmFsOjprU3RhY2tUcmFjZU1h
cmtlcik7CisgIG1lc3NhZ2UgPDwgInNvbWUgdW5pbXBvcnRhbnQgc3RhY2sgdHJhY2UiOworCisg
IGNvbnN0IFRlc3RQYXJ0UmVzdWx0IHJlc3VsdChUZXN0UGFydFJlc3VsdDo6a05vbkZhdGFsRmFp
bHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzb21lX2ZpbGUuY2MiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNDIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtZXNzYWdlLkdldFN0cmluZygpLmNfc3RyKCkpOworCisgIEVYUEVDVF9FUShUZXN0UGFy
dFJlc3VsdDo6a05vbkZhdGFsRmFpbHVyZSwgcmVzdWx0LnR5cGUoKSk7CisgIEVYUEVDVF9TVFJF
USgic29tZV9maWxlLmNjIiwgcmVzdWx0LmZpbGVfbmFtZSgpKTsKKyAgRVhQRUNUX0VRKDQyLCBy
ZXN1bHQubGluZV9udW1iZXIoKSk7CisgIEVYUEVDVF9TVFJFUShtZXNzYWdlLkdldFN0cmluZygp
LmNfc3RyKCksIHJlc3VsdC5tZXNzYWdlKCkpOworICBFWFBFQ1RfU1RSRVEoInNvbWV0aGluZyBp
cyB0ZXJyaWJseSB3cm9uZyIsIHJlc3VsdC5zdW1tYXJ5KCkpOworfQorCitURVNUX0YoVGVzdFBh
cnRSZXN1bHRUZXN0LCBSZXN1bHRBY2Nlc3NvcnNXb3JrKSB7CisgIGNvbnN0IFRlc3RQYXJ0UmVz
dWx0IHN1Y2Nlc3MoVGVzdFBhcnRSZXN1bHQ6OmtTdWNjZXNzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJmaWxlLmNjIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0
MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWVzc2FnZSIpOworICBFWFBFQ1Rf
VFJVRShzdWNjZXNzLnBhc3NlZCgpKTsKKyAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3MuZmFpbGVkKCkp
OworICBFWFBFQ1RfRkFMU0Uoc3VjY2Vzcy5ub25mYXRhbGx5X2ZhaWxlZCgpKTsKKyAgRVhQRUNU
X0ZBTFNFKHN1Y2Nlc3MuZmF0YWxseV9mYWlsZWQoKSk7CisKKyAgY29uc3QgVGVzdFBhcnRSZXN1
bHQgbm9uZmF0YWxfZmFpbHVyZShUZXN0UGFydFJlc3VsdDo6a05vbkZhdGFsRmFpbHVyZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZS5jYyIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIm1lc3NhZ2UiKTsKKyAgRVhQRUNUX0ZBTFNFKG5vbmZhdGFs
X2ZhaWx1cmUucGFzc2VkKCkpOworICBFWFBFQ1RfVFJVRShub25mYXRhbF9mYWlsdXJlLmZhaWxl
ZCgpKTsKKyAgRVhQRUNUX1RSVUUobm9uZmF0YWxfZmFpbHVyZS5ub25mYXRhbGx5X2ZhaWxlZCgp
KTsKKyAgRVhQRUNUX0ZBTFNFKG5vbmZhdGFsX2ZhaWx1cmUuZmF0YWxseV9mYWlsZWQoKSk7CisK
KyAgY29uc3QgVGVzdFBhcnRSZXN1bHQgZmF0YWxfZmFpbHVyZShUZXN0UGFydFJlc3VsdDo6a0Zh
dGFsRmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZS5j
YyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1lc3NhZ2UiKTsKKyAgRVhQRUNUX0ZBTFNFKGZh
dGFsX2ZhaWx1cmUucGFzc2VkKCkpOworICBFWFBFQ1RfVFJVRShmYXRhbF9mYWlsdXJlLmZhaWxl
ZCgpKTsKKyAgRVhQRUNUX0ZBTFNFKGZhdGFsX2ZhaWx1cmUubm9uZmF0YWxseV9mYWlsZWQoKSk7
CisgIEVYUEVDVF9UUlVFKGZhdGFsX2ZhaWx1cmUuZmF0YWxseV9mYWlsZWQoKSk7Cit9CisKKy8v
IFRlc3RzIFRlc3RQYXJ0UmVzdWx0Ojp0eXBlKCkuCitURVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0
LCB0eXBlKSB7CisgIEVYUEVDVF9FUShUZXN0UGFydFJlc3VsdDo6a1N1Y2Nlc3MsIHIxXy50eXBl
KCkpOworICBFWFBFQ1RfRVEoVGVzdFBhcnRSZXN1bHQ6OmtOb25GYXRhbEZhaWx1cmUsIHIyXy50
eXBlKCkpOworICBFWFBFQ1RfRVEoVGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUsIHIzXy50
eXBlKCkpOworfQorCisvLyBUZXN0cyBUZXN0UGFydFJlc3VsdDo6ZmlsZV9uYW1lKCkuCitURVNU
X0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBmaWxlX25hbWUpIHsKKyAgRVhQRUNUX1NUUkVRKCJmb28v
YmFyLmNjIiwgcjFfLmZpbGVfbmFtZSgpKTsKKyAgRVhQRUNUX1NUUkVRKE5VTEwsIHIzXy5maWxl
X25hbWUoKSk7Cit9CisKKy8vIFRlc3RzIFRlc3RQYXJ0UmVzdWx0OjpsaW5lX251bWJlcigpLgor
VEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgbGluZV9udW1iZXIpIHsKKyAgRVhQRUNUX0VRKDEw
LCByMV8ubGluZV9udW1iZXIoKSk7CisgIEVYUEVDVF9FUSgtMSwgcjJfLmxpbmVfbnVtYmVyKCkp
OworfQorCisvLyBUZXN0cyBUZXN0UGFydFJlc3VsdDo6bWVzc2FnZSgpLgorVEVTVF9GKFRlc3RQ
YXJ0UmVzdWx0VGVzdCwgbWVzc2FnZSkgeworICBFWFBFQ1RfU1RSRVEoIlN1Y2Nlc3MhIiwgcjFf
Lm1lc3NhZ2UoKSk7Cit9CisKKy8vIFRlc3RzIFRlc3RQYXJ0UmVzdWx0OjpwYXNzZWQoKS4KK1RF
U1RfRihUZXN0UGFydFJlc3VsdFRlc3QsIFBhc3NlZCkgeworICBFWFBFQ1RfVFJVRShyMV8ucGFz
c2VkKCkpOworICBFWFBFQ1RfRkFMU0UocjJfLnBhc3NlZCgpKTsKKyAgRVhQRUNUX0ZBTFNFKHIz
Xy5wYXNzZWQoKSk7Cit9CisKKy8vIFRlc3RzIFRlc3RQYXJ0UmVzdWx0OjpmYWlsZWQoKS4KK1RF
U1RfRihUZXN0UGFydFJlc3VsdFRlc3QsIEZhaWxlZCkgeworICBFWFBFQ1RfRkFMU0UocjFfLmZh
aWxlZCgpKTsKKyAgRVhQRUNUX1RSVUUocjJfLmZhaWxlZCgpKTsKKyAgRVhQRUNUX1RSVUUocjNf
LmZhaWxlZCgpKTsKK30KKworLy8gVGVzdHMgVGVzdFBhcnRSZXN1bHQ6OmZhdGFsbHlfZmFpbGVk
KCkuCitURVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBGYXRhbGx5RmFpbGVkKSB7CisgIEVYUEVD
VF9GQUxTRShyMV8uZmF0YWxseV9mYWlsZWQoKSk7CisgIEVYUEVDVF9GQUxTRShyMl8uZmF0YWxs
eV9mYWlsZWQoKSk7CisgIEVYUEVDVF9UUlVFKHIzXy5mYXRhbGx5X2ZhaWxlZCgpKTsKK30KKwor
Ly8gVGVzdHMgVGVzdFBhcnRSZXN1bHQ6Om5vbmZhdGFsbHlfZmFpbGVkKCkuCitURVNUX0YoVGVz
dFBhcnRSZXN1bHRUZXN0LCBOb25mYXRhbGx5RmFpbGVkKSB7CisgIEVYUEVDVF9GQUxTRShyMV8u
bm9uZmF0YWxseV9mYWlsZWQoKSk7CisgIEVYUEVDVF9UUlVFKHIyXy5ub25mYXRhbGx5X2ZhaWxl
ZCgpKTsKKyAgRVhQRUNUX0ZBTFNFKHIzXy5ub25mYXRhbGx5X2ZhaWxlZCgpKTsKK30KKworLy8g
VGVzdHMgdGhlIFRlc3RQYXJ0UmVzdWx0QXJyYXkgY2xhc3MuCisKK2NsYXNzIFRlc3RQYXJ0UmVz
dWx0QXJyYXlUZXN0IDogcHVibGljIFRlc3QgeworIHByb3RlY3RlZDoKKyAgVGVzdFBhcnRSZXN1
bHRBcnJheVRlc3QoKQorICAgICAgOiByMV8oVGVzdFBhcnRSZXN1bHQ6OmtOb25GYXRhbEZhaWx1
cmUsICJmb28vYmFyLmNjIiwgLTEsICJGYWlsdXJlIDEiKSwKKyAgICAgICAgcjJfKFRlc3RQYXJ0
UmVzdWx0OjprRmF0YWxGYWlsdXJlLCAiZm9vL2Jhci5jYyIsIC0xLCAiRmFpbHVyZSAyIikge30K
KworICBjb25zdCBUZXN0UGFydFJlc3VsdCByMV8sIHIyXzsKK307CisKKy8vIFRlc3RzIHRoYXQg
VGVzdFBhcnRSZXN1bHRBcnJheSBpbml0aWFsbHkgaGFzIHNpemUgMC4KK1RFU1RfRihUZXN0UGFy
dFJlc3VsdEFycmF5VGVzdCwgSW5pdGlhbFNpemVJc1plcm8pIHsKKyAgVGVzdFBhcnRSZXN1bHRB
cnJheSByZXN1bHRzOworICBFWFBFQ1RfRVEoMCwgcmVzdWx0cy5zaXplKCkpOworfQorCisvLyBU
ZXN0cyB0aGF0IFRlc3RQYXJ0UmVzdWx0QXJyYXkgY29udGFpbnMgdGhlIGdpdmVuIFRlc3RQYXJ0
UmVzdWx0CisvLyBhZnRlciBvbmUgQXBwZW5kKCkgb3BlcmF0aW9uLgorVEVTVF9GKFRlc3RQYXJ0
UmVzdWx0QXJyYXlUZXN0LCBDb250YWluc0dpdmVuUmVzdWx0QWZ0ZXJBcHBlbmQpIHsKKyAgVGVz
dFBhcnRSZXN1bHRBcnJheSByZXN1bHRzOworICByZXN1bHRzLkFwcGVuZChyMV8pOworICBFWFBF
Q1RfRVEoMSwgcmVzdWx0cy5zaXplKCkpOworICBFWFBFQ1RfU1RSRVEoIkZhaWx1cmUgMSIsIHJl
c3VsdHMuR2V0VGVzdFBhcnRSZXN1bHQoMCkubWVzc2FnZSgpKTsKK30KKworLy8gVGVzdHMgdGhh
dCBUZXN0UGFydFJlc3VsdEFycmF5IGNvbnRhaW5zIHRoZSBnaXZlbiBUZXN0UGFydFJlc3VsdHMK
Ky8vIGFmdGVyIHR3byBBcHBlbmQoKSBvcGVyYXRpb25zLgorVEVTVF9GKFRlc3RQYXJ0UmVzdWx0
QXJyYXlUZXN0LCBDb250YWluc0dpdmVuUmVzdWx0c0FmdGVyVHdvQXBwZW5kcykgeworICBUZXN0
UGFydFJlc3VsdEFycmF5IHJlc3VsdHM7CisgIHJlc3VsdHMuQXBwZW5kKHIxXyk7CisgIHJlc3Vs
dHMuQXBwZW5kKHIyXyk7CisgIEVYUEVDVF9FUSgyLCByZXN1bHRzLnNpemUoKSk7CisgIEVYUEVD
VF9TVFJFUSgiRmFpbHVyZSAxIiwgcmVzdWx0cy5HZXRUZXN0UGFydFJlc3VsdCgwKS5tZXNzYWdl
KCkpOworICBFWFBFQ1RfU1RSRVEoIkZhaWx1cmUgMiIsIHJlc3VsdHMuR2V0VGVzdFBhcnRSZXN1
bHQoMSkubWVzc2FnZSgpKTsKK30KKwordHlwZWRlZiBUZXN0UGFydFJlc3VsdEFycmF5VGVzdCBU
ZXN0UGFydFJlc3VsdEFycmF5RGVhdGhUZXN0OworCisvLyBUZXN0cyB0aGF0IHRoZSBwcm9ncmFt
IGRpZXMgd2hlbiBHZXRUZXN0UGFydFJlc3VsdCgpIGlzIGNhbGxlZCB3aXRoCisvLyBhbiBpbnZh
bGlkIGluZGV4LgorVEVTVF9GKFRlc3RQYXJ0UmVzdWx0QXJyYXlEZWF0aFRlc3QsIERpZXNXaGVu
SW5kZXhJc091dE9mQm91bmQpIHsKKyAgVGVzdFBhcnRSZXN1bHRBcnJheSByZXN1bHRzOworICBy
ZXN1bHRzLkFwcGVuZChyMV8pOworCisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQocmVzdWx0
cy5HZXRUZXN0UGFydFJlc3VsdCgtMSksICIiKTsKKyAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRF
RChyZXN1bHRzLkdldFRlc3RQYXJ0UmVzdWx0KDEpLCAiIik7Cit9CisKKy8vIFRPRE8obWhldWxl
QGdvb2dsZS5jb20pOiBBZGQgYSB0ZXN0IGZvciB0aGUgY2xhc3MgSGFzTmV3RmF0YWxGYWlsdXJl
SGVscGVyLgorCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3Qv
Z3Rlc3QtdHVwbGVfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3QtdHVwbGVfdGVzdC5j
YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iZmFhM2UwYWM0YjIyOTBkOWZhMmI2OTQ3YWQ4MDlmMTBiOGQyNDMzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdC10dXBsZV90ZXN0LmNjCkBA
IC0wLDAgKzEsMzIwIEBACisvLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KKy8vIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBt
ZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
Ly8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8g
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisvLworLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorCisjaW5j
bHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaCIKKyNpbmNsdWRlIDx1dGlsaXR5Pgor
I2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB7CisKK3VzaW5nIDo6c3RkOjp0
cjE6OmdldDsKK3VzaW5nIDo6c3RkOjp0cjE6Om1ha2VfdHVwbGU7Cit1c2luZyA6OnN0ZDo6dHIx
Ojp0dXBsZTsKK3VzaW5nIDo6c3RkOjp0cjE6OnR1cGxlX2VsZW1lbnQ7Cit1c2luZyA6OnN0ZDo6
dHIxOjp0dXBsZV9zaXplOwordXNpbmcgOjp0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE7CisK
Ky8vIFRlc3RzIHRoYXQgdHVwbGVfZWxlbWVudDxLLCB0dXBsZTxUMCwgVDEsIC4uLiwgVE4+ID46
OnR5cGUgcmV0dXJucyBUSy4KK1RFU1QodHVwbGVfZWxlbWVudF9UZXN0LCBSZXR1cm5zRWxlbWVu
dFR5cGUpIHsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPGludCwgdHVwbGVfZWxlbWVudDwwLCB0dXBs
ZTxpbnQsIGNoYXI+ID46OnR5cGU+KCk7CisgIFN0YXRpY0Fzc2VydFR5cGVFcTxpbnQmLCB0dXBs
ZV9lbGVtZW50PDEsIHR1cGxlPGRvdWJsZSwgaW50Jj4gPjo6dHlwZT4oKTsKKyAgU3RhdGljQXNz
ZXJ0VHlwZUVxPGJvb2wsIHR1cGxlX2VsZW1lbnQ8MiwgdHVwbGU8ZG91YmxlLCBpbnQsIGJvb2w+
ID46OnR5cGU+KCk7Cit9CisKKy8vIFRlc3RzIHRoYXQgdHVwbGVfc2l6ZTxUPjo6dmFsdWUgZ2l2
ZXMgdGhlIG51bWJlciBvZiBmaWVsZHMgaW4gdHVwbGUKKy8vIHR5cGUgVC4KK1RFU1QodHVwbGVf
c2l6ZV9UZXN0LCBSZXR1cm5zTnVtYmVyT2ZGaWVsZHMpIHsKKyAgRVhQRUNUX0VRKDAsICt0dXBs
ZV9zaXplPHR1cGxlPD4gPjo6dmFsdWUpOworICBFWFBFQ1RfRVEoMSwgK3R1cGxlX3NpemU8dHVw
bGU8dm9pZCo+ID46OnZhbHVlKTsKKyAgRVhQRUNUX0VRKDEsICt0dXBsZV9zaXplPHR1cGxlPGNo
YXI+ID46OnZhbHVlKTsKKyAgRVhQRUNUX0VRKDEsICsodHVwbGVfc2l6ZTx0dXBsZTx0dXBsZTxp
bnQsIGRvdWJsZT4gPiA+Ojp2YWx1ZSkpOworICBFWFBFQ1RfRVEoMiwgKyh0dXBsZV9zaXplPHR1
cGxlPGludCYsIGNvbnN0IGNoYXI+ID46OnZhbHVlKSk7CisgIEVYUEVDVF9FUSgzLCArKHR1cGxl
X3NpemU8dHVwbGU8Y2hhciosIHZvaWQsIGNvbnN0IGJvb2wmPiA+Ojp2YWx1ZSkpOworfQorCisv
LyBUZXN0cyBjb21wYXJpbmcgYSB0dXBsZSB3aXRoIGl0c2VsZi4KK1RFU1QoQ29tcGFyaXNvblRl
c3QsIENvbXBhcmVzV2l0aFNlbGYpIHsKKyAgY29uc3QgdHVwbGU8aW50LCBjaGFyLCBib29sPiBh
KDUsICdhJywgZmFsc2UpOworCisgIEVYUEVDVF9UUlVFKGEgPT0gYSk7CisgIEVYUEVDVF9GQUxT
RShhICE9IGEpOworfQorCisvLyBUZXN0cyBjb21wYXJpbmcgdHdvIHR1cGxlcyB3aXRoIHRoZSBz
YW1lIHZhbHVlLgorVEVTVChDb21wYXJpc29uVGVzdCwgQ29tcGFyZXNFcXVhbFR1cGxlcykgewor
ICBjb25zdCB0dXBsZTxpbnQsIGJvb2w+IGEoNSwgdHJ1ZSksIGIoNSwgdHJ1ZSk7CisKKyAgRVhQ
RUNUX1RSVUUoYSA9PSBiKTsKKyAgRVhQRUNUX0ZBTFNFKGEgIT0gYik7Cit9CisKKy8vIFRlc3Rz
IGNvbXBhcmluZyB0d28gZGlmZmVyZW50IHR1cGxlcyB0aGF0IGhhdmUgbm8gcmVmZXJlbmNlIGZp
ZWxkcy4KK1RFU1QoQ29tcGFyaXNvblRlc3QsIENvbXBhcmVzVW5lcXVhbFR1cGxlc1dpdGhvdXRS
ZWZlcmVuY2VGaWVsZHMpIHsKKyAgdHlwZWRlZiB0dXBsZTxjb25zdCBpbnQsIGNoYXI+IEZvb1R1
cGxlOworCisgIGNvbnN0IEZvb1R1cGxlIGEoMCwgJ3gnKTsKKyAgY29uc3QgRm9vVHVwbGUgYigx
LCAnYScpOworCisgIEVYUEVDVF9UUlVFKGEgIT0gYik7CisgIEVYUEVDVF9GQUxTRShhID09IGIp
OworCisgIGNvbnN0IEZvb1R1cGxlIGMoMSwgJ2InKTsKKworICBFWFBFQ1RfVFJVRShiICE9IGMp
OworICBFWFBFQ1RfRkFMU0UoYiA9PSBjKTsKK30KKworLy8gVGVzdHMgY29tcGFyaW5nIHR3byBk
aWZmZXJlbnQgdHVwbGVzIHRoYXQgaGF2ZSByZWZlcmVuY2UgZmllbGRzLgorVEVTVChDb21wYXJp
c29uVGVzdCwgQ29tcGFyZXNVbmVxdWFsVHVwbGVzV2l0aFJlZmVyZW5jZUZpZWxkcykgeworICB0
eXBlZGVmIHR1cGxlPGludCYsIGNvbnN0IGNoYXImPiBGb29UdXBsZTsKKworICBpbnQgaSA9IDU7
CisgIGNvbnN0IGNoYXIgY2ggPSAnYSc7CisgIGNvbnN0IEZvb1R1cGxlIGEoaSwgY2gpOworCisg
IGludCBqID0gNjsKKyAgY29uc3QgRm9vVHVwbGUgYihqLCBjaCk7CisKKyAgRVhQRUNUX1RSVUUo
YSAhPSBiKTsKKyAgRVhQRUNUX0ZBTFNFKGEgPT0gYik7CisKKyAgaiA9IDU7CisgIGNvbnN0IGNo
YXIgY2gyID0gJ2InOworICBjb25zdCBGb29UdXBsZSBjKGosIGNoMik7CisKKyAgRVhQRUNUX1RS
VUUoYiAhPSBjKTsKKyAgRVhQRUNUX0ZBTFNFKGIgPT0gYyk7Cit9CisKKy8vIFRlc3RzIHRoYXQg
YSB0dXBsZSBmaWVsZCB3aXRoIGEgcmVmZXJlbmNlIHR5cGUgaXMgYW4gYWxpYXMgb2YgdGhlCisv
LyB2YXJpYWJsZSBpdCdzIHN1cHBvc2VkIHRvIHJlZmVyZW5jZS4KK1RFU1QoUmVmZXJlbmNlRmll
bGRUZXN0LCBJc0FsaWFzT2ZSZWZlcmVuY2VkVmFyaWFibGUpIHsKKyAgaW50IG4gPSAwOworICB0
dXBsZTxib29sLCBpbnQmPiB0KHRydWUsIG4pOworCisgIG4gPSAxOworICBFWFBFQ1RfRVEobiwg
Z2V0PDE+KHQpKQorICAgICAgPDwgIkNoYW5naW5nIGEgdW5kZXJseWluZyB2YXJpYWJsZSBzaG91
bGQgdXBkYXRlIHRoZSByZWZlcmVuY2UgZmllbGQuIjsKKworICAvLyBNYWtlcyBzdXJlIHRoYXQg
dGhlIGltcGxlbWVudGF0aW9uIGRvZXNuJ3QgZG8gYW55dGhpbmcgZnVubnkgd2l0aAorICAvLyB0
aGUgJiBvcGVyYXRvciBmb3IgdGhlIHJldHVybiB0eXBlIG9mIGdldDw+KCkuCisgIEVYUEVDVF9F
USgmbiwgJihnZXQ8MT4odCkpKQorICAgICAgPDwgIlRoZSBhZGRyZXNzIG9mIGEgcmVmZXJlbmNl
IGZpZWxkIHNob3VsZCBlcXVhbCB0aGUgYWRkcmVzcyBvZiAiCisgICAgICA8PCAidGhlIHVuZGVy
bHlpbmcgdmFyaWFibGUuIjsKKworICBnZXQ8MT4odCkgPSAyOworICBFWFBFQ1RfRVEoMiwgbikK
KyAgICAgIDw8ICJDaGFuZ2luZyBhIHJlZmVyZW5jZSBmaWVsZCBzaG91bGQgdXBkYXRlIHRoZSB1
bmRlcmx5aW5nIHZhcmlhYmxlLiI7Cit9CisKKy8vIFRlc3RzIHRoYXQgdHVwbGUncyBkZWZhdWx0
IGNvbnN0cnVjdG9yIGRlZmF1bHQgaW5pdGlhbGl6ZXMgZWFjaCBmaWVsZC4KKy8vIFRoaXMgdGVz
dCBuZWVkcyB0byBjb21waWxlIHdpdGhvdXQgZ2VuZXJhdGluZyB3YXJuaW5ncy4KK1RFU1QoVHVw
bGVDb25zdHJ1Y3RvclRlc3QsIERlZmF1bHRDb25zdHJ1Y3RvckRlZmF1bHRJbml0aWFsaXplc0Vh
Y2hGaWVsZCkgeworICAvLyBUaGUgVFIxIHJlcG9ydCByZXF1aXJlcyB0aGF0IHR1cGxlJ3MgZGVm
YXVsdCBjb25zdHJ1Y3RvciBkZWZhdWx0CisgIC8vIGluaXRpYWxpemVzIGVhY2ggZmllbGQsIGV2
ZW4gaWYgaXQncyBhIHByaW1pdGl2ZSB0eXBlLiAgSWYgdGhlCisgIC8vIGltcGxlbWVudGF0aW9u
IGZvcmdldHMgdG8gZG8gdGhpcywgdGhpcyB0ZXN0IHdpbGwgY2F0Y2ggaXQgYnkKKyAgLy8gZ2Vu
ZXJhdGluZyB3YXJuaW5ncyBhYm91dCB1c2luZyB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyAoYXNz
dW1pbmcKKyAgLy8gYSBkZWNlbnQgY29tcGlsZXIpLgorCisgIHR1cGxlPD4gZW1wdHk7CisKKyAg
dHVwbGU8aW50PiBhMSwgYjE7CisgIGIxID0gYTE7CisgIEVYUEVDVF9FUSgwLCBnZXQ8MD4oYjEp
KTsKKworICB0dXBsZTxpbnQsIGRvdWJsZT4gYTIsIGIyOworICBiMiA9IGEyOworICBFWFBFQ1Rf
RVEoMCwgZ2V0PDA+KGIyKSk7CisgIEVYUEVDVF9FUSgwLjAsIGdldDwxPihiMikpOworCisgIHR1
cGxlPGRvdWJsZSwgY2hhciwgYm9vbCo+IGEzLCBiMzsKKyAgYjMgPSBhMzsKKyAgRVhQRUNUX0VR
KDAuMCwgZ2V0PDA+KGIzKSk7CisgIEVYUEVDVF9FUSgnXDAnLCBnZXQ8MT4oYjMpKTsKKyAgRVhQ
RUNUX1RSVUUoZ2V0PDI+KGIzKSA9PSBOVUxMKTsKKworICB0dXBsZTxpbnQsIGludCwgaW50LCBp
bnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQ+IGExMCwgYjEwOworICBiMTAgPSBhMTA7
CisgIEVYUEVDVF9FUSgwLCBnZXQ8MD4oYjEwKSk7CisgIEVYUEVDVF9FUSgwLCBnZXQ8MT4oYjEw
KSk7CisgIEVYUEVDVF9FUSgwLCBnZXQ8Mj4oYjEwKSk7CisgIEVYUEVDVF9FUSgwLCBnZXQ8Mz4o
YjEwKSk7CisgIEVYUEVDVF9FUSgwLCBnZXQ8ND4oYjEwKSk7CisgIEVYUEVDVF9FUSgwLCBnZXQ8
NT4oYjEwKSk7CisgIEVYUEVDVF9FUSgwLCBnZXQ8Nj4oYjEwKSk7CisgIEVYUEVDVF9FUSgwLCBn
ZXQ8Nz4oYjEwKSk7CisgIEVYUEVDVF9FUSgwLCBnZXQ8OD4oYjEwKSk7CisgIEVYUEVDVF9FUSgw
LCBnZXQ8OT4oYjEwKSk7Cit9CisKKy8vIFRlc3RzIGNvbnN0cnVjdGluZyBhIHR1cGxlIGZyb20g
aXRzIGZpZWxkcy4KK1RFU1QoVHVwbGVDb25zdHJ1Y3RvclRlc3QsIENvbnN0cnVjdHNGcm9tRmll
bGRzKSB7CisgIGludCBuID0gMTsKKyAgLy8gUmVmZXJlbmNlIGZpZWxkLgorICB0dXBsZTxpbnQm
PiBhKG4pOworICBFWFBFQ1RfRVEoJm4sICYoZ2V0PDA+KGEpKSk7CisKKyAgLy8gTm9uLXJlZmVy
ZW5jZSBmaWVsZHMuCisgIHR1cGxlPGludCwgY2hhcj4gYig1LCAnYScpOworICBFWFBFQ1RfRVEo
NSwgZ2V0PDA+KGIpKTsKKyAgRVhQRUNUX0VRKCdhJywgZ2V0PDE+KGIpKTsKKworICAvLyBDb25z
dCByZWZlcmVuY2UgZmllbGQuCisgIGNvbnN0IGludCBtID0gMjsKKyAgdHVwbGU8Ym9vbCwgY29u
c3QgaW50Jj4gYyh0cnVlLCBtKTsKKyAgRVhQRUNUX1RSVUUoZ2V0PDA+KGMpKTsKKyAgRVhQRUNU
X0VRKCZtLCAmKGdldDwxPihjKSkpOworfQorCisvLyBUZXN0cyB0dXBsZSdzIGNvcHkgY29uc3Ry
dWN0b3IuCitURVNUKFR1cGxlQ29uc3RydWN0b3JUZXN0LCBDb3B5Q29uc3RydWN0b3IpIHsKKyAg
dHVwbGU8ZG91YmxlLCBib29sPiBhKDAuMCwgdHJ1ZSk7CisgIHR1cGxlPGRvdWJsZSwgYm9vbD4g
YihhKTsKKworICBFWFBFQ1RfRE9VQkxFX0VRKDAuMCwgZ2V0PDA+KGIpKTsKKyAgRVhQRUNUX1RS
VUUoZ2V0PDE+KGIpKTsKK30KKworLy8gVGVzdHMgY29uc3RydWN0aW5nIGEgdHVwbGUgZnJvbSBh
bm90aGVyIHR1cGxlIHRoYXQgaGFzIGEgY29tcGF0aWJsZQorLy8gYnV0IGRpZmZlcmVudCB0eXBl
LgorVEVTVChUdXBsZUNvbnN0cnVjdG9yVGVzdCwgQ29uc3RydWN0c0Zyb21EaWZmZXJlbnRUdXBs
ZVR5cGUpIHsKKyAgdHVwbGU8aW50LCBpbnQsIGNoYXI+IGEoMCwgMSwgJ2EnKTsKKyAgdHVwbGU8
ZG91YmxlLCBsb25nLCBpbnQ+IGIoYSk7CisKKyAgRVhQRUNUX0RPVUJMRV9FUSgwLjAsIGdldDww
PihiKSk7CisgIEVYUEVDVF9FUSgxLCBnZXQ8MT4oYikpOworICBFWFBFQ1RfRVEoJ2EnLCBnZXQ8
Mj4oYikpOworfQorCisvLyBUZXN0cyBjb25zdHJ1Y3RpbmcgYSAyLXR1cGxlIGZyb20gYW4gc3Rk
OjpwYWlyLgorVEVTVChUdXBsZUNvbnN0cnVjdG9yVGVzdCwgQ29uc3RydWN0c0Zyb21QYWlyKSB7
CisgIDo6c3RkOjpwYWlyPGludCwgY2hhcj4gYSgxLCAnYScpOworICB0dXBsZTxpbnQsIGNoYXI+
IGIoYSk7CisgIHR1cGxlPGludCwgY29uc3QgY2hhciY+IGMoYSk7Cit9CisKKy8vIFRlc3RzIGFz
c2lnbmluZyBhIHR1cGxlIHRvIGFub3RoZXIgdHVwbGUgd2l0aCB0aGUgc2FtZSB0eXBlLgorVEVT
VChUdXBsZUFzc2lnbm1lbnRUZXN0LCBBc3NpZ25zVG9TYW1lVHVwbGVUeXBlKSB7CisgIGNvbnN0
IHR1cGxlPGludCwgbG9uZz4gYSg1LCA3TCk7CisgIHR1cGxlPGludCwgbG9uZz4gYjsKKyAgYiA9
IGE7CisgIEVYUEVDVF9FUSg1LCBnZXQ8MD4oYikpOworICBFWFBFQ1RfRVEoN0wsIGdldDwxPihi
KSk7Cit9CisKKy8vIFRlc3RzIGFzc2lnbmluZyBhIHR1cGxlIHRvIGFub3RoZXIgdHVwbGUgd2l0
aCBhIGRpZmZlcmVudCBidXQKKy8vIGNvbXBhdGlibGUgdHlwZS4KK1RFU1QoVHVwbGVBc3NpZ25t
ZW50VGVzdCwgQXNzaWduc1RvRGlmZmVyZW50VHVwbGVUeXBlKSB7CisgIGNvbnN0IHR1cGxlPGlu
dCwgbG9uZywgYm9vbD4gYSgxLCA3TCwgdHJ1ZSk7CisgIHR1cGxlPGxvbmcsIGludCwgYm9vbD4g
YjsKKyAgYiA9IGE7CisgIEVYUEVDVF9FUSgxTCwgZ2V0PDA+KGIpKTsKKyAgRVhQRUNUX0VRKDcs
IGdldDwxPihiKSk7CisgIEVYUEVDVF9UUlVFKGdldDwyPihiKSk7Cit9CisKKy8vIFRlc3RzIGFz
c2lnbmluZyBhbiBzdGQ6OnBhaXIgdG8gYSAyLXR1cGxlLgorVEVTVChUdXBsZUFzc2lnbm1lbnRU
ZXN0LCBBc3NpZ25zRnJvbVBhaXIpIHsKKyAgY29uc3QgOjpzdGQ6OnBhaXI8aW50LCBib29sPiBh
KDUsIHRydWUpOworICB0dXBsZTxpbnQsIGJvb2w+IGI7CisgIGIgPSBhOworICBFWFBFQ1RfRVEo
NSwgZ2V0PDA+KGIpKTsKKyAgRVhQRUNUX1RSVUUoZ2V0PDE+KGIpKTsKKworICB0dXBsZTxsb25n
LCBib29sPiBjOworICBjID0gYTsKKyAgRVhQRUNUX0VRKDVMLCBnZXQ8MD4oYykpOworICBFWFBF
Q1RfVFJVRShnZXQ8MT4oYykpOworfQorCisvLyBBIGZpeHR1cmUgZm9yIHRlc3RpbmcgYmlnIHR1
cGxlcy4KK2NsYXNzIEJpZ1R1cGxlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKKyBwcm90
ZWN0ZWQ6CisgIHR5cGVkZWYgdHVwbGU8aW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50
LCBpbnQsIGludCwgaW50PiBCaWdUdXBsZTsKKworICBCaWdUdXBsZVRlc3QoKSA6CisgICAgICBh
XygxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyKSwKKyAgICAgIGJfKDEsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDMpIHt9CisKKyAgQmlnVHVwbGUgYV8sIGJfOworfTsKKworLy8gVGVzdHMg
Y29uc3RydWN0aW5nIGJpZyB0dXBsZXMuCitURVNUX0YoQmlnVHVwbGVUZXN0LCBDb25zdHJ1Y3Rp
b24pIHsKKyAgQmlnVHVwbGUgYTsKKyAgQmlnVHVwbGUgYihiXyk7Cit9CisKKy8vIFRlc3RzIHRo
YXQgZ2V0PE4+KHQpIHJldHVybnMgdGhlIE4tdGggKDAtYmFzZWQpIGZpZWxkIG9mIHR1cGxlIHQu
CitURVNUX0YoQmlnVHVwbGVUZXN0LCBnZXQpIHsKKyAgRVhQRUNUX0VRKDEsIGdldDwwPihhXykp
OworICBFWFBFQ1RfRVEoMiwgZ2V0PDk+KGFfKSk7CisKKyAgLy8gVGVzdHMgdGhhdCBnZXQoKSB3
b3JrcyBvbiBhIGNvbnN0IHR1cGxlIHRvby4KKyAgY29uc3QgQmlnVHVwbGUgYShhXyk7CisgIEVY
UEVDVF9FUSgxLCBnZXQ8MD4oYSkpOworICBFWFBFQ1RfRVEoMiwgZ2V0PDk+KGEpKTsKK30KKwor
Ly8gVGVzdHMgY29tcGFyaW5nIGJpZyB0dXBsZXMuCitURVNUX0YoQmlnVHVwbGVUZXN0LCBDb21w
YXJpc29ucykgeworICBFWFBFQ1RfVFJVRShhXyA9PSBhXyk7CisgIEVYUEVDVF9GQUxTRShhXyAh
PSBhXyk7CisKKyAgRVhQRUNUX1RSVUUoYV8gIT0gYl8pOworICBFWFBFQ1RfRkFMU0UoYV8gPT0g
Yl8pOworfQorCitURVNUKE1ha2VUdXBsZVRlc3QsIFdvcmtzRm9yU2NhbGFyVHlwZXMpIHsKKyAg
dHVwbGU8Ym9vbCwgaW50PiBhOworICBhID0gbWFrZV90dXBsZSh0cnVlLCA1KTsKKyAgRVhQRUNU
X1RSVUUoZ2V0PDA+KGEpKTsKKyAgRVhQRUNUX0VRKDUsIGdldDwxPihhKSk7CisKKyAgdHVwbGU8
Y2hhciwgaW50LCBsb25nPiBiOworICBiID0gbWFrZV90dXBsZSgnYScsICdiJywgNSk7CisgIEVY
UEVDVF9FUSgnYScsIGdldDwwPihiKSk7CisgIEVYUEVDVF9FUSgnYicsIGdldDwxPihiKSk7Cisg
IEVYUEVDVF9FUSg1LCBnZXQ8Mj4oYikpOworfQorCitURVNUKE1ha2VUdXBsZVRlc3QsIFdvcmtz
Rm9yUG9pbnRlcnMpIHsKKyAgaW50IGFbXSA9IHsgMSwgMiwgMywgNCB9OworICBjb25zdCBjaGFy
KiBjb25zdCBzdHIgPSAiaGkiOworICBpbnQqIGNvbnN0IHAgPSBhOworCisgIHR1cGxlPGNvbnN0
IGNoYXIqLCBpbnQqPiB0OworICB0ID0gbWFrZV90dXBsZShzdHIsIHApOworICBFWFBFQ1RfRVEo
c3RyLCBnZXQ8MD4odCkpOworICBFWFBFQ1RfRVEocCwgZ2V0PDE+KHQpKTsKK30KKworfSAgLy8g
bmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0LXR5cGVkLXRlc3Qy
X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0LXR5cGVkLXRlc3QyX3Rlc3QuY2MKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYzI4NDcwMGIwMjBiNTI0OTE3NWJmY2ZhM2E1YmFlODVlNmYzOGFhYgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdDJfdGVzdC5jYwpA
QCAtMCwwICsxLDQ1IEBACisvLyBDb3B5cmlnaHQgMjAwOCBHb29nbGUgSW5jLgorLy8gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1l
dDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisv
LworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKy8vCisvLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisKKyNpbmNs
dWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJ0ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5oIgor
I2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKyNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCisK
Ky8vIFRlc3RzIHRoYXQgdGhlIHNhbWUgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QgY2FzZSBjYW4g
YmUKKy8vIGluc3RhbnRpYXRlZCBpbiBkaWZmZXJlbnQgdHJhbnNsYXRpb24gdW5pdHMgbGlua2Vk
IHRvZ2V0aGVyLgorLy8gKENvbnRhaW5lclRlc3QgaXMgYWxzbyBpbnN0YW50aWF0ZWQgaW4gZ3Rl
c3QtdHlwZWQtdGVzdF90ZXN0LmNjLikKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKFZl
Y3RvciwgQ29udGFpbmVyVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rp
bmc6OlR5cGVzPHN0ZDo6dmVjdG9yPGludD4gPik7CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZ
UEVEX1RFU1RfUApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdC10eXBlZC10ZXN0
X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5jYwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45MzYyOGJhMDgwY2NlZWEzZDYzNTU2NjgzNDczMGQwNDRkNWI0NTAxCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdC10eXBlZC10ZXN0X3Rlc3QuY2MKQEAg
LTAsMCArMSwzODAgQEAKKy8vIENvcHlyaWdodCAyMDA4IEdvb2dsZSBJbmMuCisvLyBBbGwgUmln
aHRzIFJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0
OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8v
CisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorLy8KKy8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKworI2luY2x1
ZGUgInRlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmgiCisKKyNpbmNsdWRlIDxzZXQ+CisjaW5j
bHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKwordXNpbmcgdGVzdGlu
Zzo6VGVzdDsKKworLy8gVXNlZCBmb3IgdGVzdGluZyB0aGF0IFNldFVwVGVzdENhc2UoKS9UZWFy
RG93blRlc3RDYXNlKCksIGZpeHR1cmUKKy8vIGN0b3IvZHRvciwgYW5kIFNldFVwKCkvVGVhckRv
d24oKSB3b3JrIGNvcnJlY3RseSBpbiB0eXBlZCB0ZXN0cyBhbmQKKy8vIHR5cGUtcGFyYW1ldGVy
aXplZCB0ZXN0LgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBDb21tb25UZXN0IDogcHVi
bGljIFRlc3QgeworICAvLyBGb3Igc29tZSB0ZWNobmljYWwgcmVhc29uLCBTZXRVcFRlc3RDYXNl
KCkgYW5kIFRlYXJEb3duVGVzdENhc2UoKQorICAvLyBtdXN0IGJlIHB1YmxpYy4KKyBwdWJsaWM6
CisgIHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7CisgICAgc2hhcmVkXyA9IG5ldyBUKDUp
OworICB9CisKKyAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKKyAgICBkZWxldGUg
c2hhcmVkXzsKKyAgICBzaGFyZWRfID0gTlVMTDsKKyAgfQorCisgIC8vIFRoaXMgJ3Byb3RlY3Rl
ZDonIGlzIG9wdGlvbmFsLiAgVGhlcmUncyBubyBoYXJtIGluIG1ha2luZyBhbGwKKyAgLy8gbWVt
YmVycyBvZiB0aGlzIGZpeHR1cmUgY2xhc3MgdGVtcGxhdGUgcHVibGljLgorIHByb3RlY3RlZDoK
KyAgLy8gV2UgdXNlZCB0byB1c2Ugc3RkOjpsaXN0IGhlcmUsIGJ1dCBzd2l0Y2hlZCB0byBzdGQ6
OnZlY3RvciBzaW5jZQorICAvLyBNU1ZDJ3MgPGxpc3Q+IGRvZXNuJ3QgY29tcGlsZSBjbGVhbmx5
IHdpdGggL1c0LgorICB0eXBlZGVmIHN0ZDo6dmVjdG9yPFQ+IFZlY3RvcjsKKyAgdHlwZWRlZiBz
dGQ6OnNldDxpbnQ+IEludFNldDsKKworICBDb21tb25UZXN0KCkgOiB2YWx1ZV8oMSkge30KKwor
ICB2aXJ0dWFsIH5Db21tb25UZXN0KCkgeyBFWFBFQ1RfRVEoMywgdmFsdWVfKTsgfQorCisgIHZp
cnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICBFWFBFQ1RfRVEoMSwgdmFsdWVfKTsKKyAgICB2YWx1
ZV8rKzsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBFWFBFQ1RfRVEo
MiwgdmFsdWVfKTsKKyAgICB2YWx1ZV8rKzsKKyAgfQorCisgIFQgdmFsdWVfOworICBzdGF0aWMg
VCogc2hhcmVkXzsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorVCogQ29tbW9uVGVzdDxU
Pjo6c2hhcmVkXyA9IE5VTEw7CisKKy8vIFRoaXMgI2lmZGVmIGJsb2NrIHRlc3RzIHR5cGVkIHRl
c3RzLgorI2lmIEdURVNUX0hBU19UWVBFRF9URVNUCisKK3VzaW5nIHRlc3Rpbmc6OlR5cGVzOwor
CisvLyBUZXN0cyB0aGF0IFNldFVwVGVzdENhc2UoKS9UZWFyRG93blRlc3RDYXNlKCksIGZpeHR1
cmUgY3Rvci9kdG9yLAorLy8gYW5kIFNldFVwKCkvVGVhckRvd24oKSB3b3JrIGNvcnJlY3RseSBp
biB0eXBlZCB0ZXN0cworCit0eXBlZGVmIFR5cGVzPGNoYXIsIGludD4gVHdvVHlwZXM7CitUWVBF
RF9URVNUX0NBU0UoQ29tbW9uVGVzdCwgVHdvVHlwZXMpOworCitUWVBFRF9URVNUKENvbW1vblRl
c3QsIFZhbHVlc0FyZUNvcnJlY3QpIHsKKyAgLy8gU3RhdGljIG1lbWJlcnMgb2YgdGhlIGZpeHR1
cmUgY2xhc3MgdGVtcGxhdGUgY2FuIGJlIHZpc2l0ZWQgdmlhCisgIC8vIHRoZSBUZXN0Rml4dHVy
ZTo6IHByZWZpeC4KKyAgRVhQRUNUX0VRKDUsICpUZXN0Rml4dHVyZTo6c2hhcmVkXyk7CisKKyAg
Ly8gVHlwZWRlZnMgaW4gdGhlIGZpeHR1cmUgY2xhc3MgdGVtcGxhdGUgY2FuIGJlIHZpc2l0ZWQg
dmlhIHRoZQorICAvLyAidHlwZW5hbWUgVGVzdEZpeHR1cmU6OiIgcHJlZml4LgorICB0eXBlbmFt
ZSBUZXN0Rml4dHVyZTo6VmVjdG9yIGVtcHR5OworICBFWFBFQ1RfRVEoMFUsIGVtcHR5LnNpemUo
KSk7CisKKyAgdHlwZW5hbWUgVGVzdEZpeHR1cmU6OkludFNldCBlbXB0eTI7CisgIEVYUEVDVF9F
USgwVSwgZW1wdHkyLnNpemUoKSk7CisKKyAgLy8gTm9uLXN0YXRpYyBtZW1iZXJzIG9mIHRoZSBm
aXh0dXJlIGNsYXNzIG11c3QgYmUgdmlzaXRlZCB2aWEKKyAgLy8gJ3RoaXMnLCBhcyByZXF1aXJl
ZCBieSBDKysgZm9yIGNsYXNzIHRlbXBsYXRlcy4KKyAgRVhQRUNUX0VRKDIsIHRoaXMtPnZhbHVl
Xyk7Cit9CisKKy8vIFRoZSBzZWNvbmQgdGVzdCBtYWtlcyBzdXJlIHNoYXJlZF8gaXMgbm90IGRl
bGV0ZWQgYWZ0ZXIgdGhlIGZpcnN0CisvLyB0ZXN0LgorVFlQRURfVEVTVChDb21tb25UZXN0LCBW
YWx1ZXNBcmVTdGlsbENvcnJlY3QpIHsKKyAgLy8gU3RhdGljIG1lbWJlcnMgb2YgdGhlIGZpeHR1
cmUgY2xhc3MgdGVtcGxhdGUgY2FuIGFsc28gYmUgdmlzaXRlZAorICAvLyB2aWEgJ3RoaXMnLgor
ICBBU1NFUlRfVFJVRSh0aGlzLT5zaGFyZWRfICE9IE5VTEwpOworICBFWFBFQ1RfRVEoNSwgKnRo
aXMtPnNoYXJlZF8pOworCisgIC8vIFR5cGVQYXJhbSBjYW4gYmUgdXNlZCB0byByZWZlciB0byB0
aGUgdHlwZSBwYXJhbWV0ZXIuCisgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxUeXBlUGFyYW0+KDIp
LCB0aGlzLT52YWx1ZV8pOworfQorCisvLyBUZXN0cyB0aGF0IG11bHRpcGxlIFRZUEVEX1RFU1Rf
Q0FTRSdzIGNhbiBiZSBkZWZpbmVkIGluIHRoZSBzYW1lCisvLyB0cmFuc2xhdGlvbiB1bml0Lgor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFR5cGVkVGVzdDEgOiBwdWJsaWMgVGVzdCB7
Cit9OworCisvLyBWZXJpZmllcyB0aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQgb2YgVFlQRURfVEVT
VF9DQVNFIGNhbiBiZSBhCisvLyBzaW5nbGUgdHlwZS4KK1RZUEVEX1RFU1RfQ0FTRShUeXBlZFRl
c3QxLCBpbnQpOworVFlQRURfVEVTVChUeXBlZFRlc3QxLCBBKSB7fQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK2NsYXNzIFR5cGVkVGVzdDIgOiBwdWJsaWMgVGVzdCB7Cit9OworCisvLyBWZXJp
ZmllcyB0aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQgb2YgVFlQRURfVEVTVF9DQVNFIGNhbiBiZSBh
CisvLyBUeXBlczwuLi4+IHR5cGUgbGlzdC4KK1RZUEVEX1RFU1RfQ0FTRShUeXBlZFRlc3QyLCBU
eXBlczxpbnQ+KTsKKworLy8gVGhpcyBhbHNvIHZlcmlmaWVzIHRoYXQgdGVzdHMgZnJvbSBkaWZm
ZXJlbnQgdHlwZWQgdGVzdCBjYXNlcyBjYW4KKy8vIHNoYXJlIHRoZSBzYW1lIG5hbWUuCitUWVBF
RF9URVNUKFR5cGVkVGVzdDIsIEEpIHt9CisKKy8vIFRlc3RzIHRoYXQgYSB0eXBlZCB0ZXN0IGNh
c2UgY2FuIGJlIGRlZmluZWQgaW4gYSBuYW1lc3BhY2UuCisKK25hbWVzcGFjZSBsaWJyYXJ5MSB7
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgTnVtZXJpY1Rlc3QgOiBwdWJsaWMgVGVz
dCB7Cit9OworCit0eXBlZGVmIFR5cGVzPGludCwgbG9uZz4gTnVtZXJpY1R5cGVzOworVFlQRURf
VEVTVF9DQVNFKE51bWVyaWNUZXN0LCBOdW1lcmljVHlwZXMpOworCitUWVBFRF9URVNUKE51bWVy
aWNUZXN0LCBEZWZhdWx0SXNaZXJvKSB7CisgIEVYUEVDVF9FUSgwLCBUeXBlUGFyYW0oKSk7Cit9
CisKK30gIC8vIG5hbWVzcGFjZSBsaWJyYXJ5MQorCisjZW5kaWYgIC8vIEdURVNUX0hBU19UWVBF
RF9URVNUCisKKy8vIFRoaXMgI2lmZGVmIGJsb2NrIHRlc3RzIHR5cGUtcGFyYW1ldGVyaXplZCB0
ZXN0cy4KKyNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCisKK3VzaW5nIHRlc3Rpbmc6OlR5cGVz
OwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlR5cGVkVGVzdENhc2VQU3RhdGU7CisKKy8vIFRl
c3RzIFR5cGVkVGVzdENhc2VQU3RhdGUuCisKK2NsYXNzIFR5cGVkVGVzdENhc2VQU3RhdGVUZXN0
IDogcHVibGljIFRlc3QgeworIHByb3RlY3RlZDoKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgewor
ICAgIHN0YXRlXy5BZGRUZXN0TmFtZSgiZm9vLmNjIiwgMCwgIkZvb1Rlc3QiLCAiQSIpOworICAg
IHN0YXRlXy5BZGRUZXN0TmFtZSgiZm9vLmNjIiwgMCwgIkZvb1Rlc3QiLCAiQiIpOworICAgIHN0
YXRlXy5BZGRUZXN0TmFtZSgiZm9vLmNjIiwgMCwgIkZvb1Rlc3QiLCAiQyIpOworICB9CisKKyAg
VHlwZWRUZXN0Q2FzZVBTdGF0ZSBzdGF0ZV87Cit9OworCitURVNUX0YoVHlwZWRUZXN0Q2FzZVBT
dGF0ZVRlc3QsIFN1Y2NlZWRzRm9yTWF0Y2hpbmdMaXN0KSB7CisgIGNvbnN0IGNoYXIqIHRlc3Rz
ID0gIkEsIEIsIEMiOworICBFWFBFQ1RfRVEodGVzdHMsCisgICAgICAgICAgICBzdGF0ZV8uVmVy
aWZ5UmVnaXN0ZXJlZFRlc3ROYW1lcygiZm9vLmNjIiwgMSwgdGVzdHMpKTsKK30KKworLy8gTWFr
ZXMgc3VyZSB0aGF0IHRoZSBvcmRlciBvZiB0aGUgdGVzdHMgYW5kIHNwYWNlcyBhcm91bmQgdGhl
IG5hbWVzCisvLyBkb24ndCBtYXR0ZXIuCitURVNUX0YoVHlwZWRUZXN0Q2FzZVBTdGF0ZVRlc3Qs
IElnbm9yZXNPcmRlckFuZFNwYWNlcykgeworICBjb25zdCBjaGFyKiB0ZXN0cyA9ICJBLEMsICAg
QiI7CisgIEVYUEVDVF9FUSh0ZXN0cywKKyAgICAgICAgICAgIHN0YXRlXy5WZXJpZnlSZWdpc3Rl
cmVkVGVzdE5hbWVzKCJmb28uY2MiLCAxLCB0ZXN0cykpOworfQorCit0eXBlZGVmIFR5cGVkVGVz
dENhc2VQU3RhdGVUZXN0IFR5cGVkVGVzdENhc2VQU3RhdGVEZWF0aFRlc3Q7CisKK1RFU1RfRihU
eXBlZFRlc3RDYXNlUFN0YXRlRGVhdGhUZXN0LCBEZXRlY3RzRHVwbGljYXRlcykgeworICBFWFBF
Q1RfREVBVEhfSUZfU1VQUE9SVEVEKAorICAgICAgc3RhdGVfLlZlcmlmeVJlZ2lzdGVyZWRUZXN0
TmFtZXMoImZvby5jYyIsIDEsICJBLCBCLCBBLCBDIiksCisgICAgICAiZm9vXFwuY2MuMS4/OiBU
ZXN0IEEgaXMgbGlzdGVkIG1vcmUgdGhhbiBvbmNlXFwuIik7Cit9CisKK1RFU1RfRihUeXBlZFRl
c3RDYXNlUFN0YXRlRGVhdGhUZXN0LCBEZXRlY3RzRXh0cmFUZXN0KSB7CisgIEVYUEVDVF9ERUFU
SF9JRl9TVVBQT1JURUQoCisgICAgICBzdGF0ZV8uVmVyaWZ5UmVnaXN0ZXJlZFRlc3ROYW1lcygi
Zm9vLmNjIiwgMSwgIkEsIEIsIEMsIEQiKSwKKyAgICAgICJmb29cXC5jYy4xLj86IE5vIHRlc3Qg
bmFtZWQgRCBjYW4gYmUgZm91bmQgaW4gdGhpcyB0ZXN0IGNhc2VcXC4iKTsKK30KKworVEVTVF9G
KFR5cGVkVGVzdENhc2VQU3RhdGVEZWF0aFRlc3QsIERldGVjdHNNaXNzZWRUZXN0KSB7CisgIEVY
UEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoCisgICAgICBzdGF0ZV8uVmVyaWZ5UmVnaXN0ZXJlZFRl
c3ROYW1lcygiZm9vLmNjIiwgMSwgIkEsIEMiKSwKKyAgICAgICJmb29cXC5jYy4xLj86IFlvdSBm
b3Jnb3QgdG8gbGlzdCB0ZXN0IEJcXC4iKTsKK30KKworLy8gVGVzdHMgdGhhdCBkZWZpbmluZyBh
IHRlc3QgZm9yIGEgcGFyYW1ldGVyaXplZCB0ZXN0IGNhc2UgZ2VuZXJhdGVzCisvLyBhIHJ1bi10
aW1lIGVycm9yIGlmIHRoZSB0ZXN0IGNhc2UgaGFzIGJlZW4gcmVnaXN0ZXJlZC4KK1RFU1RfRihU
eXBlZFRlc3RDYXNlUFN0YXRlRGVhdGhUZXN0LCBEZXRlY3RzVGVzdEFmdGVyUmVnaXN0cmF0aW9u
KSB7CisgIHN0YXRlXy5WZXJpZnlSZWdpc3RlcmVkVGVzdE5hbWVzKCJmb28uY2MiLCAxLCAiQSwg
QiwgQyIpOworICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKAorICAgICAgc3RhdGVfLkFkZFRl
c3ROYW1lKCJmb28uY2MiLCAyLCAiRm9vVGVzdCIsICJEIiksCisgICAgICAiZm9vXFwuY2MuMi4/
OiBUZXN0IEQgbXVzdCBiZSBkZWZpbmVkIGJlZm9yZSBSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0Vf
UCIKKyAgICAgICJcXChGb29UZXN0LCBcXC5cXC5cXC5cXClcXC4iKTsKK30KKworLy8gVGVzdHMg
dGhhdCBTZXRVcFRlc3RDYXNlKCkvVGVhckRvd25UZXN0Q2FzZSgpLCBmaXh0dXJlIGN0b3IvZHRv
ciwKKy8vIGFuZCBTZXRVcCgpL1RlYXJEb3duKCkgd29yayBjb3JyZWN0bHkgaW4gdHlwZS1wYXJh
bWV0ZXJpemVkIHRlc3RzLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIERlcml2ZWRU
ZXN0IDogcHVibGljIENvbW1vblRlc3Q8VD4geworfTsKKworVFlQRURfVEVTVF9DQVNFX1AoRGVy
aXZlZFRlc3QpOworCitUWVBFRF9URVNUX1AoRGVyaXZlZFRlc3QsIFZhbHVlc0FyZUNvcnJlY3Qp
IHsKKyAgLy8gU3RhdGljIG1lbWJlcnMgb2YgdGhlIGZpeHR1cmUgY2xhc3MgdGVtcGxhdGUgY2Fu
IGJlIHZpc2l0ZWQgdmlhCisgIC8vIHRoZSBUZXN0Rml4dHVyZTo6IHByZWZpeC4KKyAgRVhQRUNU
X0VRKDUsICpUZXN0Rml4dHVyZTo6c2hhcmVkXyk7CisKKyAgLy8gTm9uLXN0YXRpYyBtZW1iZXJz
IG9mIHRoZSBmaXh0dXJlIGNsYXNzIG11c3QgYmUgdmlzaXRlZCB2aWEKKyAgLy8gJ3RoaXMnLCBh
cyByZXF1aXJlZCBieSBDKysgZm9yIGNsYXNzIHRlbXBsYXRlcy4KKyAgRVhQRUNUX0VRKDIsIHRo
aXMtPnZhbHVlXyk7Cit9CisKKy8vIFRoZSBzZWNvbmQgdGVzdCBtYWtlcyBzdXJlIHNoYXJlZF8g
aXMgbm90IGRlbGV0ZWQgYWZ0ZXIgdGhlIGZpcnN0CisvLyB0ZXN0LgorVFlQRURfVEVTVF9QKERl
cml2ZWRUZXN0LCBWYWx1ZXNBcmVTdGlsbENvcnJlY3QpIHsKKyAgLy8gU3RhdGljIG1lbWJlcnMg
b2YgdGhlIGZpeHR1cmUgY2xhc3MgdGVtcGxhdGUgY2FuIGFsc28gYmUgdmlzaXRlZAorICAvLyB2
aWEgJ3RoaXMnLgorICBBU1NFUlRfVFJVRSh0aGlzLT5zaGFyZWRfICE9IE5VTEwpOworICBFWFBF
Q1RfRVEoNSwgKnRoaXMtPnNoYXJlZF8pOworICBFWFBFQ1RfRVEoMiwgdGhpcy0+dmFsdWVfKTsK
K30KKworUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoRGVyaXZlZFRlc3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWx1ZXNBcmVDb3JyZWN0LCBWYWx1ZXNBcmVTdGlsbENvcnJlY3Qp
OworCit0eXBlZGVmIFR5cGVzPHNob3J0LCBsb25nPiBNeVR3b1R5cGVzOworSU5TVEFOVElBVEVf
VFlQRURfVEVTVF9DQVNFX1AoTXksIERlcml2ZWRUZXN0LCBNeVR3b1R5cGVzKTsKKworLy8gVGVz
dHMgdGhhdCBtdWx0aXBsZSBUWVBFRF9URVNUX0NBU0VfUCdzIGNhbiBiZSBkZWZpbmVkIGluIHRo
ZSBzYW1lCisvLyB0cmFuc2xhdGlvbiB1bml0LgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2Ns
YXNzIFR5cGVkVGVzdFAxIDogcHVibGljIFRlc3QgeworfTsKKworVFlQRURfVEVTVF9DQVNFX1Ao
VHlwZWRUZXN0UDEpOworCisvLyBGb3IgdGVzdGluZyB0aGF0IHRoZSBjb2RlIGJldHdlZW4gVFlQ
RURfVEVTVF9DQVNFX1AoKSBhbmQKKy8vIFRZUEVEX1RFU1RfUCgpIGlzIG5vdCBlbmNsb3NlZCBp
biBhIG5hbWVzcGFjZS4KK3R5cGVkZWYgaW50IEludEFmdGVyVHlwZWRUZXN0Q2FzZVA7CisKK1RZ
UEVEX1RFU1RfUChUeXBlZFRlc3RQMSwgQSkge30KK1RZUEVEX1RFU1RfUChUeXBlZFRlc3RQMSwg
Qikge30KKworLy8gRm9yIHRlc3RpbmcgdGhhdCB0aGUgY29kZSBiZXR3ZWVuIFRZUEVEX1RFU1Rf
UCgpIGFuZAorLy8gUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoKSBpcyBub3QgZW5jbG9zZWQg
aW4gYSBuYW1lc3BhY2UuCit0eXBlZGVmIGludCBJbnRCZWZvcmVSZWdpc3RlclR5cGVkVGVzdENh
c2VQOworCitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChUeXBlZFRlc3RQMSwgQSwgQik7CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVHlwZWRUZXN0UDIgOiBwdWJsaWMgVGVzdCB7
Cit9OworCitUWVBFRF9URVNUX0NBU0VfUChUeXBlZFRlc3RQMik7CisKKy8vIFRoaXMgYWxzbyB2
ZXJpZmllcyB0aGF0IHRlc3RzIGZyb20gZGlmZmVyZW50IHR5cGUtcGFyYW1ldGVyaXplZAorLy8g
dGVzdCBjYXNlcyBjYW4gc2hhcmUgdGhlIHNhbWUgbmFtZS4KK1RZUEVEX1RFU1RfUChUeXBlZFRl
c3RQMiwgQSkge30KKworUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoVHlwZWRUZXN0UDIsIEEp
OworCisvLyBWZXJpZmllcyB0aGF0IHRoZSBjb2RlIGJldHdlZW4gVFlQRURfVEVTVF9DQVNFX1Ao
KSBhbmQKKy8vIFJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKCkgaXMgbm90IGVuY2xvc2VkIGlu
IGEgbmFtZXNwYWNlLgorSW50QWZ0ZXJUeXBlZFRlc3RDYXNlUCBhZnRlciA9IDA7CitJbnRCZWZv
cmVSZWdpc3RlclR5cGVkVGVzdENhc2VQIGJlZm9yZSA9IDA7CisKKy8vIFZlcmlmaWVzIHRoYXQg
dGhlIGxhc3QgYXJndW1lbnQgb2YgSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoKQorLy8g
Y2FuIGJlIGVpdGhlciBhIHNpbmdsZSB0eXBlIG9yIGEgVHlwZXM8Li4uPiB0eXBlIGxpc3QuCitJ
TlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChJbnQsIFR5cGVkVGVzdFAxLCBpbnQpOworSU5T
VEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoSW50LCBUeXBlZFRlc3RQMiwgVHlwZXM8aW50Pik7
CisKKy8vIFRlc3RzIHRoYXQgdGhlIHNhbWUgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QgY2FzZSBj
YW4gYmUKKy8vIGluc3RhbnRpYXRlZCBtb3JlIHRoYW4gb25jZSBpbiB0aGUgc2FtZSB0cmFuc2xh
dGlvbiB1bml0LgorSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoRG91YmxlLCBUeXBlZFRl
c3RQMiwgVHlwZXM8ZG91YmxlPik7CisKKy8vIFRlc3RzIHRoYXQgdGhlIHNhbWUgdHlwZS1wYXJh
bWV0ZXJpemVkIHRlc3QgY2FzZSBjYW4gYmUKKy8vIGluc3RhbnRpYXRlZCBpbiBkaWZmZXJlbnQg
dHJhbnNsYXRpb24gdW5pdHMgbGlua2VkIHRvZ2V0aGVyLgorLy8gKENvbnRhaW5lclRlc3QgaXMg
YWxzbyBpbnN0YW50aWF0ZWQgaW4gZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmNjLikKK3R5cGVkZWYg
VHlwZXM8c3RkOjp2ZWN0b3I8ZG91YmxlPiwgc3RkOjpzZXQ8Y2hhcj4gPiBNeUNvbnRhaW5lcnM7
CitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgQ29udGFpbmVyVGVzdCwgTXlDb250
YWluZXJzKTsKKworLy8gVGVzdHMgdGhhdCBhIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0IGNhc2Ug
Y2FuIGJlIGRlZmluZWQgYW5kCisvLyBpbnN0YW50aWF0ZWQgaW4gYSBuYW1lc3BhY2UuCisKK25h
bWVzcGFjZSBsaWJyYXJ5MiB7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgTnVtZXJp
Y1Rlc3QgOiBwdWJsaWMgVGVzdCB7Cit9OworCitUWVBFRF9URVNUX0NBU0VfUChOdW1lcmljVGVz
dCk7CisKK1RZUEVEX1RFU1RfUChOdW1lcmljVGVzdCwgRGVmYXVsdElzWmVybykgeworICBFWFBF
Q1RfRVEoMCwgVHlwZVBhcmFtKCkpOworfQorCitUWVBFRF9URVNUX1AoTnVtZXJpY1Rlc3QsIFpl
cm9Jc0xlc3NUaGFuT25lKSB7CisgIEVYUEVDVF9MVChUeXBlUGFyYW0oMCksIFR5cGVQYXJhbSgx
KSk7Cit9CisKK1JFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKE51bWVyaWNUZXN0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdElzWmVybywgWmVyb0lzTGVzc1RoYW5PbmUpOwor
dHlwZWRlZiBUeXBlczxpbnQsIGRvdWJsZT4gTnVtZXJpY1R5cGVzOworSU5TVEFOVElBVEVfVFlQ
RURfVEVTVF9DQVNFX1AoTXksIE51bWVyaWNUZXN0LCBOdW1lcmljVHlwZXMpOworCitzdGF0aWMg
Y29uc3QgY2hhciogR2V0VGVzdE5hbWUoKSB7CisgIHJldHVybiB0ZXN0aW5nOjpVbml0VGVzdDo6
R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKS0+bmFtZSgpOworfQorLy8gVGVzdCB0
aGUgc3RyaXBwaW5nIG9mIHNwYWNlIGZyb20gdGVzdCBuYW1lcwordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IGNsYXNzIFRyaW1tZWRUZXN0IDogcHVibGljIFRlc3QgeyB9OworVFlQRURfVEVTVF9DQVNF
X1AoVHJpbW1lZFRlc3QpOworVFlQRURfVEVTVF9QKFRyaW1tZWRUZXN0LCBUZXN0MSkgeyBFWFBF
Q1RfU1RSRVEoIlRlc3QxIiwgR2V0VGVzdE5hbWUoKSk7IH0KK1RZUEVEX1RFU1RfUChUcmltbWVk
VGVzdCwgVGVzdDIpIHsgRVhQRUNUX1NUUkVRKCJUZXN0MiIsIEdldFRlc3ROYW1lKCkpOyB9CitU
WVBFRF9URVNUX1AoVHJpbW1lZFRlc3QsIFRlc3QzKSB7IEVYUEVDVF9TVFJFUSgiVGVzdDMiLCBH
ZXRUZXN0TmFtZSgpKTsgfQorVFlQRURfVEVTVF9QKFRyaW1tZWRUZXN0LCBUZXN0NCkgeyBFWFBF
Q1RfU1RSRVEoIlRlc3Q0IiwgR2V0VGVzdE5hbWUoKSk7IH0KK1RZUEVEX1RFU1RfUChUcmltbWVk
VGVzdCwgVGVzdDUpIHsgRVhQRUNUX1NUUkVRKCJUZXN0NSIsIEdldFRlc3ROYW1lKCkpOyB9CitS
RUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUCgKKyAgICBUcmltbWVkVGVzdCwKKyAgICBUZXN0MSwg
VGVzdDIsVGVzdDMgLCBUZXN0NCAsVGVzdDUgKTsgIC8vIE5PTElOVAordGVtcGxhdGUgPHR5cGVu
YW1lIFQxLCB0eXBlbmFtZSBUMj4gc3RydWN0IE15UGFpciB7fTsKKy8vIEJlIHN1cmUgdG8gdHJ5
IGEgdHlwZSB3aXRoIGEgY29tbWEgaW4gaXRzIG5hbWUganVzdCBpbiBjYXNlIGl0IG1hdHRlcnMu
Cit0eXBlZGVmIFR5cGVzPGludCwgZG91YmxlLCBNeVBhaXI8aW50LCBpbnQ+ID4gVHJpbVR5cGVz
OworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIFRyaW1tZWRUZXN0LCBUcmltVHlw
ZXMpOworCit9ICAvLyBuYW1lc3BhY2UgbGlicmFyeTIKKworI2VuZGlmICAvLyBHVEVTVF9IQVNf
VFlQRURfVEVTVF9QCisKKyNpZiAhZGVmaW5lZChHVEVTVF9IQVNfVFlQRURfVEVTVCkgJiYgIWRl
ZmluZWQoR1RFU1RfSEFTX1RZUEVEX1RFU1RfUCkKKworLy8gR29vZ2xlIFRlc3QgbWF5IG5vdCBz
dXBwb3J0IHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cyB3aXRoIHNvbWUKKy8vIGNvbXBpbGVycy4g
SWYgd2UgdXNlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIGNvbXBpbGUgb3V0IGFsbAorLy8g
Y29kZSByZWZlcnJpbmcgdG8gdGhlIGd0ZXN0X21haW4gbGlicmFyeSwgTVNWQyBsaW5rZXIgd2ls
bCBub3QgbGluaworLy8gdGhhdCBsaWJyYXJ5IGF0IGFsbCBhbmQgY29uc2VxdWVudGx5IGNvbXBs
YWluIGFib3V0IG1pc3NpbmcgZW50cnkKKy8vIHBvaW50IGRlZmluZWQgaW4gdGhhdCBsaWJyYXJ5
IChmYXRhbCBlcnJvciBMTksxNTYxOiBlbnRyeSBwb2ludAorLy8gbXVzdCBiZSBkZWZpbmVkKS4g
VGhpcyBkdW1teSB0ZXN0IGtlZXBzIGd0ZXN0X21haW4gbGlua2VkIGluLgorVEVTVChEdW1teVRl
c3QsIFR5cGVkVGVzdHNBcmVOb3RTdXBwb3J0ZWRPblRoaXNQbGF0Zm9ybSkge30KKworI2VuZGlm
ICAvLyAjaWYgIWRlZmluZWQoR1RFU1RfSEFTX1RZUEVEX1RFU1QpICYmICFkZWZpbmVkKEdURVNU
X0hBU19UWVBFRF9URVNUX1ApCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0LXR5
cGVkLXRlc3RfdGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdC10eXBlZC10ZXN0X3Rlc3Qu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40MWQ3NTcwNGNmODRkOGJkMDU0OTBkOTkzNGI2NTIyMTMxNjllOGZkCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdC10eXBlZC10ZXN0X3Rlc3Qu
aApAQCAtMCwwICsxLDY2IEBACisvLyBDb3B5cmlnaHQgMjAwOCBHb29nbGUgSW5jLgorLy8gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8v
IG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8v
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisv
LyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKy8vCisvLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisKKyNp
Zm5kZWYgR1RFU1RfVEVTVF9HVEVTVF9UWVBFRF9URVNUX1RFU1RfSF8KKyNkZWZpbmUgR1RFU1Rf
VEVTVF9HVEVTVF9UWVBFRF9URVNUX1RFU1RfSF8KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0Lmgi
CisKKyNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCisKK3VzaW5nIHRlc3Rpbmc6OlRlc3Q7CisK
Ky8vIEZvciB0ZXN0aW5nIHRoYXQgdGhlIHNhbWUgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QgY2Fz
ZSBjYW4gYmUKKy8vIGluc3RhbnRpYXRlZCBpbiBkaWZmZXJlbnQgdHJhbnNsYXRpb24gdW5pdHMg
bGlua2VkIHRvZ2V0aGVyLgorLy8gQ29udGFpbmVyVGVzdCB3aWxsIGJlIGluc3RhbnRpYXRlZCBp
biBib3RoIGd0ZXN0LXR5cGVkLXRlc3RfdGVzdC5jYworLy8gYW5kIGd0ZXN0LXR5cGVkLXRlc3Qy
X3Rlc3QuY2MuCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgQ29udGFpbmVyVGVzdCA6
IHB1YmxpYyBUZXN0IHsKK307CisKK1RZUEVEX1RFU1RfQ0FTRV9QKENvbnRhaW5lclRlc3QpOwor
CitUWVBFRF9URVNUX1AoQ29udGFpbmVyVGVzdCwgQ2FuQmVEZWZhdWx0Q29uc3RydWN0ZWQpIHsK
KyAgVHlwZVBhcmFtIGNvbnRhaW5lcjsKK30KKworVFlQRURfVEVTVF9QKENvbnRhaW5lclRlc3Qs
IEluaXRpYWxTaXplSXNaZXJvKSB7CisgIFR5cGVQYXJhbSBjb250YWluZXI7CisgIEVYUEVDVF9F
USgwVSwgY29udGFpbmVyLnNpemUoKSk7Cit9CisKK1JFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9Q
KENvbnRhaW5lclRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW5CZURlZmF1bHRD
b25zdHJ1Y3RlZCwgSW5pdGlhbFNpemVJc1plcm8pOworCisjZW5kaWYgIC8vIEdURVNUX0hBU19U
WVBFRF9URVNUX1AKKworI2VuZGlmICAvLyBHVEVTVF9URVNUX0dURVNUX1RZUEVEX1RFU1RfVEVT
VF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdC11bml0dGVzdC1hcGlfdGVz
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3QtdW5pdHRlc3QtYXBpX3Rlc3QuY2MKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjFmNTE2ODhhZjc1MzNiNDMxNjcxNDljYTI0ZTlkY2Q2YzU1ZDViNQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3QtdW5pdHRlc3QtYXBpX3Rlc3QuY2MKQEAg
LTAsMCArMSwzNDEgQEAKKy8vIENvcHlyaWdodCAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0Ogor
Ly8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisv
LyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisv
LyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
Ly8KKy8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKKy8vCisvLyBUaGUg
R29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCisvLworLy8gVGhpcyBm
aWxlIGNvbnRhaW5zIHRlc3RzIHZlcmlmeWluZyBjb3JyZWN0bmVzcyBvZiBkYXRhIHByb3ZpZGVk
IHZpYQorLy8gVW5pdFRlc3QncyBwdWJsaWMgbWV0aG9kcy4KKworI2luY2x1ZGUgImd0ZXN0L2d0
ZXN0LmgiCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4gIC8vIEZvciBzdHJjbXAuCisjaW5jbHVkZSA8
YWxnb3JpdGhtPgorCit1c2luZyA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0OworCituYW1lc3Bh
Y2UgdGVzdGluZyB7CituYW1lc3BhY2UgaW50ZXJuYWwgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KK3N0cnVjdCBMZXNzQnlOYW1lIHsKKyAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IFQqIGEsIGNv
bnN0IFQqIGIpIHsKKyAgICByZXR1cm4gc3RyY21wKGEtPm5hbWUoKSwgYi0+bmFtZSgpKSA8IDA7
CisgIH0KK307CisKK2NsYXNzIFVuaXRUZXN0SGVscGVyIHsKKyBwdWJsaWM6CisgIC8vIFJldHVy
bnMgdGhlIGFycmF5IG9mIHBvaW50ZXJzIHRvIGFsbCB0ZXN0IGNhc2VzIHNvcnRlZCBieSB0aGUg
dGVzdCBjYXNlCisgIC8vIG5hbWUuICBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBkZWxl
dGluZyB0aGUgYXJyYXkuCisgIHN0YXRpYyBUZXN0Q2FzZSBjb25zdCoqIEdldFNvcnRlZFRlc3RD
YXNlcygpIHsKKyAgICBVbml0VGVzdCYgdW5pdF90ZXN0ID0gKlVuaXRUZXN0OjpHZXRJbnN0YW5j
ZSgpOworICAgIFRlc3RDYXNlIGNvbnN0KiogY29uc3QgdGVzdF9jYXNlcyA9CisgICAgICAgIG5l
dyBjb25zdCBUZXN0Q2FzZSpbdW5pdF90ZXN0LnRvdGFsX3Rlc3RfY2FzZV9jb3VudCgpXTsKKwor
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdW5pdF90ZXN0LnRvdGFsX3Rlc3RfY2FzZV9jb3VudCgp
OyArK2kpCisgICAgICB0ZXN0X2Nhc2VzW2ldID0gdW5pdF90ZXN0LkdldFRlc3RDYXNlKGkpOwor
CisgICAgc3RkOjpzb3J0KHRlc3RfY2FzZXMsCisgICAgICAgICAgICAgIHRlc3RfY2FzZXMgKyB1
bml0X3Rlc3QudG90YWxfdGVzdF9jYXNlX2NvdW50KCksCisgICAgICAgICAgICAgIExlc3NCeU5h
bWU8VGVzdENhc2U+KCkpOworICAgIHJldHVybiB0ZXN0X2Nhc2VzOworICB9CisKKyAgLy8gUmV0
dXJucyB0aGUgdGVzdCBjYXNlIGJ5IGl0cyBuYW1lLiAgVGhlIGNhbGxlciBkb2Vzbid0IG93biB0
aGUgcmV0dXJuZWQKKyAgLy8gcG9pbnRlci4KKyAgc3RhdGljIGNvbnN0IFRlc3RDYXNlKiBGaW5k
VGVzdENhc2UoY29uc3QgY2hhciogbmFtZSkgeworICAgIFVuaXRUZXN0JiB1bml0X3Rlc3QgPSAq
VW5pdFRlc3Q6OkdldEluc3RhbmNlKCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB1bml0X3Rl
c3QudG90YWxfdGVzdF9jYXNlX2NvdW50KCk7ICsraSkgeworICAgICAgY29uc3QgVGVzdENhc2Uq
IHRlc3RfY2FzZSA9IHVuaXRfdGVzdC5HZXRUZXN0Q2FzZShpKTsKKyAgICAgIGlmICgwID09IHN0
cmNtcCh0ZXN0X2Nhc2UtPm5hbWUoKSwgbmFtZSkpCisgICAgICAgIHJldHVybiB0ZXN0X2Nhc2U7
CisgICAgfQorICAgIHJldHVybiBOVUxMOworICB9CisKKyAgLy8gUmV0dXJucyB0aGUgYXJyYXkg
b2YgcG9pbnRlcnMgdG8gYWxsIHRlc3RzIGluIGEgcGFydGljdWxhciB0ZXN0IGNhc2UKKyAgLy8g
c29ydGVkIGJ5IHRoZSB0ZXN0IG5hbWUuICBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBk
ZWxldGluZyB0aGUKKyAgLy8gYXJyYXkuCisgIHN0YXRpYyBUZXN0SW5mbyBjb25zdCoqIEdldFNv
cnRlZFRlc3RzKGNvbnN0IFRlc3RDYXNlKiB0ZXN0X2Nhc2UpIHsKKyAgICBUZXN0SW5mbyBjb25z
dCoqIGNvbnN0IHRlc3RzID0KKyAgICAgICAgbmV3IGNvbnN0IFRlc3RJbmZvKlt0ZXN0X2Nhc2Ut
PnRvdGFsX3Rlc3RfY291bnQoKV07CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHRlc3RfY2Fz
ZS0+dG90YWxfdGVzdF9jb3VudCgpOyArK2kpCisgICAgICB0ZXN0c1tpXSA9IHRlc3RfY2FzZS0+
R2V0VGVzdEluZm8oaSk7CisKKyAgICBzdGQ6OnNvcnQodGVzdHMsIHRlc3RzICsgdGVzdF9jYXNl
LT50b3RhbF90ZXN0X2NvdW50KCksCisgICAgICAgICAgICAgIExlc3NCeU5hbWU8VGVzdEluZm8+
KCkpOworICAgIHJldHVybiB0ZXN0czsKKyAgfQorfTsKKworI2lmIEdURVNUX0hBU19UWVBFRF9U
RVNUCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgVGVzdENhc2VXaXRoQ29tbWVudFRlc3Qg
OiBwdWJsaWMgVGVzdCB7fTsKK1RZUEVEX1RFU1RfQ0FTRShUZXN0Q2FzZVdpdGhDb21tZW50VGVz
dCwgVHlwZXM8aW50Pik7CitUWVBFRF9URVNUKFRlc3RDYXNlV2l0aENvbW1lbnRUZXN0LCBEdW1t
eSkge30KKworY29uc3QgaW50IGtUeXBlZFRlc3RDYXNlcyA9IDE7Citjb25zdCBpbnQga1R5cGVk
VGVzdHMgPSAxOworI2Vsc2UKK2NvbnN0IGludCBrVHlwZWRUZXN0Q2FzZXMgPSAwOworY29uc3Qg
aW50IGtUeXBlZFRlc3RzID0gMDsKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1QKKwor
Ly8gV2UgY2FuIG9ubHkgdGVzdCB0aGUgYWNjZXNzb3JzIHRoYXQgZG8gbm90IGNoYW5nZSB2YWx1
ZSB3aGlsZSB0ZXN0cyBydW4uCisvLyBTaW5jZSB0ZXN0cyBjYW4gYmUgcnVuIGluIGFueSBvcmRl
ciwgdGhlIHZhbHVlcyB0aGUgYWNjZXNzb3JzIHRoYXQgdHJhY2sKKy8vIHRlc3QgZXhlY3V0aW9u
IChzdWNoIGFzIGZhaWxlZF90ZXN0X2NvdW50KSBjYW4gbm90IGJlIHByZWRpY3RlZC4KK1RFU1Qo
QXBpVGVzdCwgVW5pdFRlc3RJbW11dGFibGVBY2Nlc3NvcnNXb3JrKSB7CisgIFVuaXRUZXN0KiB1
bml0X3Rlc3QgPSBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKTsKKworICBBU1NFUlRfRVEoMiArIGtU
eXBlZFRlc3RDYXNlcywgdW5pdF90ZXN0LT50b3RhbF90ZXN0X2Nhc2VfY291bnQoKSk7CisgIEVY
UEVDVF9FUSgxICsga1R5cGVkVGVzdENhc2VzLCB1bml0X3Rlc3QtPnRlc3RfY2FzZV90b19ydW5f
Y291bnQoKSk7CisgIEVYUEVDVF9FUSgyLCB1bml0X3Rlc3QtPmRpc2FibGVkX3Rlc3RfY291bnQo
KSk7CisgIEVYUEVDVF9FUSg1ICsga1R5cGVkVGVzdHMsIHVuaXRfdGVzdC0+dG90YWxfdGVzdF9j
b3VudCgpKTsKKyAgRVhQRUNUX0VRKDMgKyBrVHlwZWRUZXN0cywgdW5pdF90ZXN0LT50ZXN0X3Rv
X3J1bl9jb3VudCgpKTsKKworICBjb25zdCBUZXN0Q2FzZSoqIGNvbnN0IHRlc3RfY2FzZXMgPSBV
bml0VGVzdEhlbHBlcjo6R2V0U29ydGVkVGVzdENhc2VzKCk7CisKKyAgRVhQRUNUX1NUUkVRKCJB
cGlUZXN0IiwgdGVzdF9jYXNlc1swXS0+bmFtZSgpKTsKKyAgRVhQRUNUX1NUUkVRKCJESVNBQkxF
RF9UZXN0IiwgdGVzdF9jYXNlc1sxXS0+bmFtZSgpKTsKKyNpZiBHVEVTVF9IQVNfVFlQRURfVEVT
VAorICBFWFBFQ1RfU1RSRVEoIlRlc3RDYXNlV2l0aENvbW1lbnRUZXN0LzAiLCB0ZXN0X2Nhc2Vz
WzJdLT5uYW1lKCkpOworI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVAorCisgIGRlbGV0
ZVtdIHRlc3RfY2FzZXM7CisKKyAgLy8gVGhlIGZvbGxvd2luZyBsaW5lcyBpbml0aWF0ZSBhY3Rp
b25zIHRvIHZlcmlmeSBjZXJ0YWluIG1ldGhvZHMgaW4KKyAgLy8gRmluYWxTdWNjZXNzQ2hlY2tl
cjo6VGVhckRvd24uCisKKyAgLy8gUmVjb3JkcyBhIHRlc3QgcHJvcGVydHkgdG8gdmVyaWZ5IFRl
c3RSZXN1bHQ6OkdldFRlc3RQcm9wZXJ0eSgpLgorICBSZWNvcmRQcm9wZXJ0eSgia2V5IiwgInZh
bHVlIik7Cit9CisKK0Fzc2VydGlvblJlc3VsdCBJc051bGwoY29uc3QgY2hhciogc3RyKSB7Cisg
IGlmIChzdHIgIT0gTlVMTCkgeworICAgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJl
KCkgPDwgImFyZ3VtZW50IGlzICIgPDwgc3RyOworICB9CisgIHJldHVybiBBc3NlcnRpb25TdWNj
ZXNzKCk7Cit9CisKK1RFU1QoQXBpVGVzdCwgVGVzdENhc2VJbW11dGFibGVBY2Nlc3NvcnNXb3Jr
KSB7CisgIGNvbnN0IFRlc3RDYXNlKiB0ZXN0X2Nhc2UgPSBVbml0VGVzdEhlbHBlcjo6RmluZFRl
c3RDYXNlKCJBcGlUZXN0Iik7CisgIEFTU0VSVF9UUlVFKHRlc3RfY2FzZSAhPSBOVUxMKTsKKwor
ICBFWFBFQ1RfU1RSRVEoIkFwaVRlc3QiLCB0ZXN0X2Nhc2UtPm5hbWUoKSk7CisgIEVYUEVDVF9U
UlVFKElzTnVsbCh0ZXN0X2Nhc2UtPnR5cGVfcGFyYW0oKSkpOworICBFWFBFQ1RfVFJVRSh0ZXN0
X2Nhc2UtPnNob3VsZF9ydW4oKSk7CisgIEVYUEVDVF9FUSgxLCB0ZXN0X2Nhc2UtPmRpc2FibGVk
X3Rlc3RfY291bnQoKSk7CisgIEVYUEVDVF9FUSgzLCB0ZXN0X2Nhc2UtPnRlc3RfdG9fcnVuX2Nv
dW50KCkpOworICBBU1NFUlRfRVEoNCwgdGVzdF9jYXNlLT50b3RhbF90ZXN0X2NvdW50KCkpOwor
CisgIGNvbnN0IFRlc3RJbmZvKiogdGVzdHMgPSBVbml0VGVzdEhlbHBlcjo6R2V0U29ydGVkVGVz
dHModGVzdF9jYXNlKTsKKworICBFWFBFQ1RfU1RSRVEoIkRJU0FCTEVEX0R1bW15MSIsIHRlc3Rz
WzBdLT5uYW1lKCkpOworICBFWFBFQ1RfU1RSRVEoIkFwaVRlc3QiLCB0ZXN0c1swXS0+dGVzdF9j
YXNlX25hbWUoKSk7CisgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1swXS0+dmFsdWVfcGFyYW0o
KSkpOworICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbMF0tPnR5cGVfcGFyYW0oKSkpOworICBF
WFBFQ1RfRkFMU0UodGVzdHNbMF0tPnNob3VsZF9ydW4oKSk7CisKKyAgRVhQRUNUX1NUUkVRKCJU
ZXN0Q2FzZURpc2FibGVkQWNjZXNzb3JzV29yayIsIHRlc3RzWzFdLT5uYW1lKCkpOworICBFWFBF
Q1RfU1RSRVEoIkFwaVRlc3QiLCB0ZXN0c1sxXS0+dGVzdF9jYXNlX25hbWUoKSk7CisgIEVYUEVD
VF9UUlVFKElzTnVsbCh0ZXN0c1sxXS0+dmFsdWVfcGFyYW0oKSkpOworICBFWFBFQ1RfVFJVRShJ
c051bGwodGVzdHNbMV0tPnR5cGVfcGFyYW0oKSkpOworICBFWFBFQ1RfVFJVRSh0ZXN0c1sxXS0+
c2hvdWxkX3J1bigpKTsKKworICBFWFBFQ1RfU1RSRVEoIlRlc3RDYXNlSW1tdXRhYmxlQWNjZXNz
b3JzV29yayIsIHRlc3RzWzJdLT5uYW1lKCkpOworICBFWFBFQ1RfU1RSRVEoIkFwaVRlc3QiLCB0
ZXN0c1syXS0+dGVzdF9jYXNlX25hbWUoKSk7CisgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1sy
XS0+dmFsdWVfcGFyYW0oKSkpOworICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbMl0tPnR5cGVf
cGFyYW0oKSkpOworICBFWFBFQ1RfVFJVRSh0ZXN0c1syXS0+c2hvdWxkX3J1bigpKTsKKworICBF
WFBFQ1RfU1RSRVEoIlVuaXRUZXN0SW1tdXRhYmxlQWNjZXNzb3JzV29yayIsIHRlc3RzWzNdLT5u
YW1lKCkpOworICBFWFBFQ1RfU1RSRVEoIkFwaVRlc3QiLCB0ZXN0c1szXS0+dGVzdF9jYXNlX25h
bWUoKSk7CisgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1szXS0+dmFsdWVfcGFyYW0oKSkpOwor
ICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbM10tPnR5cGVfcGFyYW0oKSkpOworICBFWFBFQ1Rf
VFJVRSh0ZXN0c1szXS0+c2hvdWxkX3J1bigpKTsKKworICBkZWxldGVbXSB0ZXN0czsKKyAgdGVz
dHMgPSBOVUxMOworCisjaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QKKyAgdGVzdF9jYXNlID0gVW5p
dFRlc3RIZWxwZXI6OkZpbmRUZXN0Q2FzZSgiVGVzdENhc2VXaXRoQ29tbWVudFRlc3QvMCIpOwor
ICBBU1NFUlRfVFJVRSh0ZXN0X2Nhc2UgIT0gTlVMTCk7CisKKyAgRVhQRUNUX1NUUkVRKCJUZXN0
Q2FzZVdpdGhDb21tZW50VGVzdC8wIiwgdGVzdF9jYXNlLT5uYW1lKCkpOworICBFWFBFQ1RfU1RS
RVEoR2V0VHlwZU5hbWU8aW50PigpLmNfc3RyKCksIHRlc3RfY2FzZS0+dHlwZV9wYXJhbSgpKTsK
KyAgRVhQRUNUX1RSVUUodGVzdF9jYXNlLT5zaG91bGRfcnVuKCkpOworICBFWFBFQ1RfRVEoMCwg
dGVzdF9jYXNlLT5kaXNhYmxlZF90ZXN0X2NvdW50KCkpOworICBFWFBFQ1RfRVEoMSwgdGVzdF9j
YXNlLT50ZXN0X3RvX3J1bl9jb3VudCgpKTsKKyAgQVNTRVJUX0VRKDEsIHRlc3RfY2FzZS0+dG90
YWxfdGVzdF9jb3VudCgpKTsKKworICB0ZXN0cyA9IFVuaXRUZXN0SGVscGVyOjpHZXRTb3J0ZWRU
ZXN0cyh0ZXN0X2Nhc2UpOworCisgIEVYUEVDVF9TVFJFUSgiRHVtbXkiLCB0ZXN0c1swXS0+bmFt
ZSgpKTsKKyAgRVhQRUNUX1NUUkVRKCJUZXN0Q2FzZVdpdGhDb21tZW50VGVzdC8wIiwgdGVzdHNb
MF0tPnRlc3RfY2FzZV9uYW1lKCkpOworICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbMF0tPnZh
bHVlX3BhcmFtKCkpKTsKKyAgRVhQRUNUX1NUUkVRKEdldFR5cGVOYW1lPGludD4oKS5jX3N0cigp
LCB0ZXN0c1swXS0+dHlwZV9wYXJhbSgpKTsKKyAgRVhQRUNUX1RSVUUodGVzdHNbMF0tPnNob3Vs
ZF9ydW4oKSk7CisKKyAgZGVsZXRlW10gdGVzdHM7CisjZW5kaWYgIC8vIEdURVNUX0hBU19UWVBF
RF9URVNUCit9CisKK1RFU1QoQXBpVGVzdCwgVGVzdENhc2VEaXNhYmxlZEFjY2Vzc29yc1dvcmsp
IHsKKyAgY29uc3QgVGVzdENhc2UqIHRlc3RfY2FzZSA9IFVuaXRUZXN0SGVscGVyOjpGaW5kVGVz
dENhc2UoIkRJU0FCTEVEX1Rlc3QiKTsKKyAgQVNTRVJUX1RSVUUodGVzdF9jYXNlICE9IE5VTEwp
OworCisgIEVYUEVDVF9TVFJFUSgiRElTQUJMRURfVGVzdCIsIHRlc3RfY2FzZS0+bmFtZSgpKTsK
KyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RfY2FzZS0+dHlwZV9wYXJhbSgpKSk7CisgIEVYUEVD
VF9GQUxTRSh0ZXN0X2Nhc2UtPnNob3VsZF9ydW4oKSk7CisgIEVYUEVDVF9FUSgxLCB0ZXN0X2Nh
c2UtPmRpc2FibGVkX3Rlc3RfY291bnQoKSk7CisgIEVYUEVDVF9FUSgwLCB0ZXN0X2Nhc2UtPnRl
c3RfdG9fcnVuX2NvdW50KCkpOworICBBU1NFUlRfRVEoMSwgdGVzdF9jYXNlLT50b3RhbF90ZXN0
X2NvdW50KCkpOworCisgIGNvbnN0IFRlc3RJbmZvKiBjb25zdCB0ZXN0X2luZm8gPSB0ZXN0X2Nh
c2UtPkdldFRlc3RJbmZvKDApOworICBFWFBFQ1RfU1RSRVEoIkR1bW15MiIsIHRlc3RfaW5mby0+
bmFtZSgpKTsKKyAgRVhQRUNUX1NUUkVRKCJESVNBQkxFRF9UZXN0IiwgdGVzdF9pbmZvLT50ZXN0
X2Nhc2VfbmFtZSgpKTsKKyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RfaW5mby0+dmFsdWVfcGFy
YW0oKSkpOworICBFWFBFQ1RfVFJVRShJc051bGwodGVzdF9pbmZvLT50eXBlX3BhcmFtKCkpKTsK
KyAgRVhQRUNUX0ZBTFNFKHRlc3RfaW5mby0+c2hvdWxkX3J1bigpKTsKK30KKworLy8gVGhlc2Ug
dHdvIHRlc3RzIGFyZSBoZXJlIHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGVzdGluZworLy8gdGVz
dF9jYXNlX3RvX3J1bl9jb3VudCwgZGlzYWJsZWRfdGVzdF9jb3VudCwgYW5kIHRlc3RfdG9fcnVu
X2NvdW50LgorVEVTVChBcGlUZXN0LCBESVNBQkxFRF9EdW1teTEpIHt9CitURVNUKERJU0FCTEVE
X1Rlc3QsIER1bW15Mikge30KKworY2xhc3MgRmluYWxTdWNjZXNzQ2hlY2tlciA6IHB1YmxpYyBF
bnZpcm9ubWVudCB7CisgcHJvdGVjdGVkOgorICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Cisg
ICAgVW5pdFRlc3QqIHVuaXRfdGVzdCA9IFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpOworCisgICAg
RVhQRUNUX0VRKDEgKyBrVHlwZWRUZXN0Q2FzZXMsIHVuaXRfdGVzdC0+c3VjY2Vzc2Z1bF90ZXN0
X2Nhc2VfY291bnQoKSk7CisgICAgRVhQRUNUX0VRKDMgKyBrVHlwZWRUZXN0cywgdW5pdF90ZXN0
LT5zdWNjZXNzZnVsX3Rlc3RfY291bnQoKSk7CisgICAgRVhQRUNUX0VRKDAsIHVuaXRfdGVzdC0+
ZmFpbGVkX3Rlc3RfY2FzZV9jb3VudCgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgdW5pdF90ZXN0LT5m
YWlsZWRfdGVzdF9jb3VudCgpKTsKKyAgICBFWFBFQ1RfVFJVRSh1bml0X3Rlc3QtPlBhc3NlZCgp
KTsKKyAgICBFWFBFQ1RfRkFMU0UodW5pdF90ZXN0LT5GYWlsZWQoKSk7CisgICAgQVNTRVJUX0VR
KDIgKyBrVHlwZWRUZXN0Q2FzZXMsIHVuaXRfdGVzdC0+dG90YWxfdGVzdF9jYXNlX2NvdW50KCkp
OworCisgICAgY29uc3QgVGVzdENhc2UqKiBjb25zdCB0ZXN0X2Nhc2VzID0gVW5pdFRlc3RIZWxw
ZXI6OkdldFNvcnRlZFRlc3RDYXNlcygpOworCisgICAgRVhQRUNUX1NUUkVRKCJBcGlUZXN0Iiwg
dGVzdF9jYXNlc1swXS0+bmFtZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShJc051bGwodGVzdF9jYXNl
c1swXS0+dHlwZV9wYXJhbSgpKSk7CisgICAgRVhQRUNUX1RSVUUodGVzdF9jYXNlc1swXS0+c2hv
dWxkX3J1bigpKTsKKyAgICBFWFBFQ1RfRVEoMSwgdGVzdF9jYXNlc1swXS0+ZGlzYWJsZWRfdGVz
dF9jb3VudCgpKTsKKyAgICBBU1NFUlRfRVEoNCwgdGVzdF9jYXNlc1swXS0+dG90YWxfdGVzdF9j
b3VudCgpKTsKKyAgICBFWFBFQ1RfRVEoMywgdGVzdF9jYXNlc1swXS0+c3VjY2Vzc2Z1bF90ZXN0
X2NvdW50KCkpOworICAgIEVYUEVDVF9FUSgwLCB0ZXN0X2Nhc2VzWzBdLT5mYWlsZWRfdGVzdF9j
b3VudCgpKTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0X2Nhc2VzWzBdLT5QYXNzZWQoKSk7CisgICAg
RVhQRUNUX0ZBTFNFKHRlc3RfY2FzZXNbMF0tPkZhaWxlZCgpKTsKKworICAgIEVYUEVDVF9TVFJF
USgiRElTQUJMRURfVGVzdCIsIHRlc3RfY2FzZXNbMV0tPm5hbWUoKSk7CisgICAgRVhQRUNUX1RS
VUUoSXNOdWxsKHRlc3RfY2FzZXNbMV0tPnR5cGVfcGFyYW0oKSkpOworICAgIEVYUEVDVF9GQUxT
RSh0ZXN0X2Nhc2VzWzFdLT5zaG91bGRfcnVuKCkpOworICAgIEVYUEVDVF9FUSgxLCB0ZXN0X2Nh
c2VzWzFdLT5kaXNhYmxlZF90ZXN0X2NvdW50KCkpOworICAgIEFTU0VSVF9FUSgxLCB0ZXN0X2Nh
c2VzWzFdLT50b3RhbF90ZXN0X2NvdW50KCkpOworICAgIEVYUEVDVF9FUSgwLCB0ZXN0X2Nhc2Vz
WzFdLT5zdWNjZXNzZnVsX3Rlc3RfY291bnQoKSk7CisgICAgRVhQRUNUX0VRKDAsIHRlc3RfY2Fz
ZXNbMV0tPmZhaWxlZF90ZXN0X2NvdW50KCkpOworCisjaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QK
KyAgICBFWFBFQ1RfU1RSRVEoIlRlc3RDYXNlV2l0aENvbW1lbnRUZXN0LzAiLCB0ZXN0X2Nhc2Vz
WzJdLT5uYW1lKCkpOworICAgIEVYUEVDVF9TVFJFUShHZXRUeXBlTmFtZTxpbnQ+KCkuY19zdHIo
KSwgdGVzdF9jYXNlc1syXS0+dHlwZV9wYXJhbSgpKTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0X2Nh
c2VzWzJdLT5zaG91bGRfcnVuKCkpOworICAgIEVYUEVDVF9FUSgwLCB0ZXN0X2Nhc2VzWzJdLT5k
aXNhYmxlZF90ZXN0X2NvdW50KCkpOworICAgIEFTU0VSVF9FUSgxLCB0ZXN0X2Nhc2VzWzJdLT50
b3RhbF90ZXN0X2NvdW50KCkpOworICAgIEVYUEVDVF9FUSgxLCB0ZXN0X2Nhc2VzWzJdLT5zdWNj
ZXNzZnVsX3Rlc3RfY291bnQoKSk7CisgICAgRVhQRUNUX0VRKDAsIHRlc3RfY2FzZXNbMl0tPmZh
aWxlZF90ZXN0X2NvdW50KCkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RfY2FzZXNbMl0tPlBhc3Nl
ZCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UodGVzdF9jYXNlc1syXS0+RmFpbGVkKCkpOworI2VuZGlm
ICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVAorCisgICAgY29uc3QgVGVzdENhc2UqIHRlc3RfY2Fz
ZSA9IFVuaXRUZXN0SGVscGVyOjpGaW5kVGVzdENhc2UoIkFwaVRlc3QiKTsKKyAgICBjb25zdCBU
ZXN0SW5mbyoqIHRlc3RzID0gVW5pdFRlc3RIZWxwZXI6OkdldFNvcnRlZFRlc3RzKHRlc3RfY2Fz
ZSk7CisgICAgRVhQRUNUX1NUUkVRKCJESVNBQkxFRF9EdW1teTEiLCB0ZXN0c1swXS0+bmFtZSgp
KTsKKyAgICBFWFBFQ1RfU1RSRVEoIkFwaVRlc3QiLCB0ZXN0c1swXS0+dGVzdF9jYXNlX25hbWUo
KSk7CisgICAgRVhQRUNUX0ZBTFNFKHRlc3RzWzBdLT5zaG91bGRfcnVuKCkpOworCisgICAgRVhQ
RUNUX1NUUkVRKCJUZXN0Q2FzZURpc2FibGVkQWNjZXNzb3JzV29yayIsIHRlc3RzWzFdLT5uYW1l
KCkpOworICAgIEVYUEVDVF9TVFJFUSgiQXBpVGVzdCIsIHRlc3RzWzFdLT50ZXN0X2Nhc2VfbmFt
ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbMV0tPnZhbHVlX3BhcmFtKCkpKTsK
KyAgICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbMV0tPnR5cGVfcGFyYW0oKSkpOworICAgIEVY
UEVDVF9UUlVFKHRlc3RzWzFdLT5zaG91bGRfcnVuKCkpOworICAgIEVYUEVDVF9UUlVFKHRlc3Rz
WzFdLT5yZXN1bHQoKS0+UGFzc2VkKCkpOworICAgIEVYUEVDVF9FUSgwLCB0ZXN0c1sxXS0+cmVz
dWx0KCktPnRlc3RfcHJvcGVydHlfY291bnQoKSk7CisKKyAgICBFWFBFQ1RfU1RSRVEoIlRlc3RD
YXNlSW1tdXRhYmxlQWNjZXNzb3JzV29yayIsIHRlc3RzWzJdLT5uYW1lKCkpOworICAgIEVYUEVD
VF9TVFJFUSgiQXBpVGVzdCIsIHRlc3RzWzJdLT50ZXN0X2Nhc2VfbmFtZSgpKTsKKyAgICBFWFBF
Q1RfVFJVRShJc051bGwodGVzdHNbMl0tPnZhbHVlX3BhcmFtKCkpKTsKKyAgICBFWFBFQ1RfVFJV
RShJc051bGwodGVzdHNbMl0tPnR5cGVfcGFyYW0oKSkpOworICAgIEVYUEVDVF9UUlVFKHRlc3Rz
WzJdLT5zaG91bGRfcnVuKCkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RzWzJdLT5yZXN1bHQoKS0+
UGFzc2VkKCkpOworICAgIEVYUEVDVF9FUSgwLCB0ZXN0c1syXS0+cmVzdWx0KCktPnRlc3RfcHJv
cGVydHlfY291bnQoKSk7CisKKyAgICBFWFBFQ1RfU1RSRVEoIlVuaXRUZXN0SW1tdXRhYmxlQWNj
ZXNzb3JzV29yayIsIHRlc3RzWzNdLT5uYW1lKCkpOworICAgIEVYUEVDVF9TVFJFUSgiQXBpVGVz
dCIsIHRlc3RzWzNdLT50ZXN0X2Nhc2VfbmFtZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShJc051bGwo
dGVzdHNbM10tPnZhbHVlX3BhcmFtKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNb
M10tPnR5cGVfcGFyYW0oKSkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RzWzNdLT5zaG91bGRfcnVu
KCkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RzWzNdLT5yZXN1bHQoKS0+UGFzc2VkKCkpOworICAg
IEVYUEVDVF9FUSgxLCB0ZXN0c1szXS0+cmVzdWx0KCktPnRlc3RfcHJvcGVydHlfY291bnQoKSk7
CisgICAgY29uc3QgVGVzdFByb3BlcnR5JiBwcm9wZXJ0eSA9IHRlc3RzWzNdLT5yZXN1bHQoKS0+
R2V0VGVzdFByb3BlcnR5KDApOworICAgIEVYUEVDVF9TVFJFUSgia2V5IiwgcHJvcGVydHkua2V5
KCkpOworICAgIEVYUEVDVF9TVFJFUSgidmFsdWUiLCBwcm9wZXJ0eS52YWx1ZSgpKTsKKworICAg
IGRlbGV0ZVtdIHRlc3RzOworCisjaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QKKyAgICB0ZXN0X2Nh
c2UgPSBVbml0VGVzdEhlbHBlcjo6RmluZFRlc3RDYXNlKCJUZXN0Q2FzZVdpdGhDb21tZW50VGVz
dC8wIik7CisgICAgdGVzdHMgPSBVbml0VGVzdEhlbHBlcjo6R2V0U29ydGVkVGVzdHModGVzdF9j
YXNlKTsKKworICAgIEVYUEVDVF9TVFJFUSgiRHVtbXkiLCB0ZXN0c1swXS0+bmFtZSgpKTsKKyAg
ICBFWFBFQ1RfU1RSRVEoIlRlc3RDYXNlV2l0aENvbW1lbnRUZXN0LzAiLCB0ZXN0c1swXS0+dGVz
dF9jYXNlX25hbWUoKSk7CisgICAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzBdLT52YWx1ZV9w
YXJhbSgpKSk7CisgICAgRVhQRUNUX1NUUkVRKEdldFR5cGVOYW1lPGludD4oKS5jX3N0cigpLCB0
ZXN0c1swXS0+dHlwZV9wYXJhbSgpKTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0c1swXS0+c2hvdWxk
X3J1bigpKTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0c1swXS0+cmVzdWx0KCktPlBhc3NlZCgpKTsK
KyAgICBFWFBFQ1RfRVEoMCwgdGVzdHNbMF0tPnJlc3VsdCgpLT50ZXN0X3Byb3BlcnR5X2NvdW50
KCkpOworCisgICAgZGVsZXRlW10gdGVzdHM7CisjZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9U
RVNUCisgICAgZGVsZXRlW10gdGVzdF9jYXNlczsKKyAgfQorfTsKKworfSAgLy8gbmFtZXNwYWNl
IGludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZworCitpbnQgbWFpbihpbnQgYXJnYywg
Y2hhciAqKmFyZ3YpIHsKKyAgSW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworCisgIEFkZEds
b2JhbFRlc3RFbnZpcm9ubWVudChuZXcgdGVzdGluZzo6aW50ZXJuYWw6OkZpbmFsU3VjY2Vzc0No
ZWNrZXIoKSk7CisKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfYWxsX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0
X2FsbF90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1NWFhNjI4Mjg0ODMzZGI2YzRkZTg4YTIwYWVkNjNm
NmYxOGRjY2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X2FsbF90
ZXN0LmNjCkBAIC0wLDAgKzEsNDcgQEAKKy8vIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgor
Ly8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
Ly8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8g
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKy8vCisvLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4p
CisvLworLy8gVGVzdHMgZm9yIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBU
ZXN0KQorLy8KKy8vIFNvbWV0aW1lcyBpdCdzIGRlc2lyYWJsZSB0byBidWlsZCBtb3N0IG9mIEdv
b2dsZSBUZXN0J3Mgb3duIHRlc3RzCisvLyBieSBjb21waWxpbmcgYSBzaW5nbGUgZmlsZS4gIFRo
aXMgZmlsZSBzZXJ2ZXMgdGhpcyBwdXJwb3NlLgorI2luY2x1ZGUgInRlc3QvZ3Rlc3QtZmlsZXBh
dGhfdGVzdC5jYyIKKyNpbmNsdWRlICJ0ZXN0L2d0ZXN0LWxpbmtlZF9wdHJfdGVzdC5jYyIKKyNp
bmNsdWRlICJ0ZXN0L2d0ZXN0LW1lc3NhZ2VfdGVzdC5jYyIKKyNpbmNsdWRlICJ0ZXN0L2d0ZXN0
LW9wdGlvbnNfdGVzdC5jYyIKKyNpbmNsdWRlICJ0ZXN0L2d0ZXN0LXBvcnRfdGVzdC5jYyIKKyNp
bmNsdWRlICJ0ZXN0L2d0ZXN0X3ByZWRfaW1wbF91bml0dGVzdC5jYyIKKyNpbmNsdWRlICJ0ZXN0
L2d0ZXN0X3Byb2RfdGVzdC5jYyIKKyNpbmNsdWRlICJ0ZXN0L2d0ZXN0LXRlc3QtcGFydF90ZXN0
LmNjIgorI2luY2x1ZGUgInRlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmNjIgorI2luY2x1ZGUg
InRlc3QvZ3Rlc3QtdHlwZWQtdGVzdDJfdGVzdC5jYyIKKyNpbmNsdWRlICJ0ZXN0L2d0ZXN0X3Vu
aXR0ZXN0LmNjIgorI2luY2x1ZGUgInRlc3QvcHJvZHVjdGlvbi5jYyIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdC5weSBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGV0ZXN0L3Rlc3QvZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdC5weQpuZXcgZmlsZSBt
b2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43OGYzZTBmNTNiNzkxY2UyMjhhN2FkZjAzMDg2NmJiMjg4M2I5ZmVhCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9icmVha19vbl9mYWlsdXJlX3VuaXR0ZXN0LnB5
CkBAIC0wLDAgKzEsMjEyIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0
IDIwMDYsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisiIiJVbml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0J3MgYnJlYWstb24tZmFpbHVyZSBt
b2RlLgorCitBIHVzZXIgY2FuIGFzayBHb29nbGUgVGVzdCB0byBzZWctZmF1bHQgd2hlbiBhbiBh
c3NlcnRpb24gZmFpbHMsIHVzaW5nCitlaXRoZXIgdGhlIEdURVNUX0JSRUFLX09OX0ZBSUxVUkUg
ZW52aXJvbm1lbnQgdmFyaWFibGUgb3IgdGhlCistLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUgZmxh
Zy4gIFRoaXMgc2NyaXB0IHRlc3RzIHN1Y2ggZnVuY3Rpb25hbGl0eQorYnkgaW52b2tpbmcgZ3Rl
c3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdF8gKGEgcHJvZ3JhbSB3cml0dGVuIHdpdGgKK0dv
b2dsZSBUZXN0KSB3aXRoIGRpZmZlcmVudCBlbnZpcm9ubWVudHMgYW5kIGNvbW1hbmQgbGluZSBm
bGFncy4KKyIiIgorCitfX2F1dGhvcl9fID0gJ3dhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4p
JworCitpbXBvcnQgZ3Rlc3RfdGVzdF91dGlscworaW1wb3J0IG9zCitpbXBvcnQgc3lzCisKKwor
IyBDb25zdGFudHMuCisKK0lTX1dJTkRPV1MgPSBvcy5uYW1lID09ICdudCcKKworIyBUaGUgZW52
aXJvbm1lbnQgdmFyaWFibGUgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyB0aGUgYnJlYWstb24tZmFp
bHVyZSBtb2RlLgorQlJFQUtfT05fRkFJTFVSRV9FTlZfVkFSID0gJ0dURVNUX0JSRUFLX09OX0ZB
SUxVUkUnCisKKyMgVGhlIGNvbW1hbmQgbGluZSBmbGFnIGZvciBlbmFibGluZy9kaXNhYmxpbmcg
dGhlIGJyZWFrLW9uLWZhaWx1cmUgbW9kZS4KK0JSRUFLX09OX0ZBSUxVUkVfRkxBRyA9ICdndGVz
dF9icmVha19vbl9mYWlsdXJlJworCisjIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBmb3IgZW5h
YmxpbmcvZGlzYWJsaW5nIHRoZSB0aHJvdy1vbi1mYWlsdXJlIG1vZGUuCitUSFJPV19PTl9GQUlM
VVJFX0VOVl9WQVIgPSAnR1RFU1RfVEhST1dfT05fRkFJTFVSRScKKworIyBUaGUgZW52aXJvbm1l
bnQgdmFyaWFibGUgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyB0aGUgY2F0Y2gtZXhjZXB0aW9ucyBt
b2RlLgorQ0FUQ0hfRVhDRVBUSU9OU19FTlZfVkFSID0gJ0dURVNUX0NBVENIX0VYQ0VQVElPTlMn
CisKKyMgUGF0aCB0byB0aGUgZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdF8gcHJvZ3Jh
bS4KK0VYRV9QQVRIID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoCisg
ICAgJ2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3RfJykKKworCitlbnZpcm9uID0gZ3Rl
c3RfdGVzdF91dGlscy5lbnZpcm9uCitTZXRFbnZWYXIgPSBndGVzdF90ZXN0X3V0aWxzLlNldEVu
dlZhcgorCisjIFRlc3RzIGluIHRoaXMgZmlsZSBydW4gYSBHb29nbGUtVGVzdC1iYXNlZCB0ZXN0
IHByb2dyYW0gYW5kIGV4cGVjdCBpdAorIyB0byB0ZXJtaW5hdGUgcHJlbWF0dXJlbHkuICBUaGVy
ZWZvcmUgdGhleSBhcmUgaW5jb21wYXRpYmxlIHdpdGgKKyMgdGhlIHByZW1hdHVyZS1leGl0LWZp
bGUgcHJvdG9jb2wgYnkgZGVzaWduLiAgVW5zZXQgdGhlCisjIHByZW1hdHVyZS1leGl0IGZpbGVw
YXRoIHRvIHByZXZlbnQgR29vZ2xlIFRlc3QgZnJvbSBjcmVhdGluZworIyB0aGUgZmlsZS4KK1Nl
dEVudlZhcihndGVzdF90ZXN0X3V0aWxzLlBSRU1BVFVSRV9FWElUX0ZJTEVfRU5WX1ZBUiwgTm9u
ZSkKKworCitkZWYgUnVuKGNvbW1hbmQpOgorICAiIiJSdW5zIGEgY29tbWFuZDsgcmV0dXJucyAx
IGlmIGl0IHdhcyBraWxsZWQgYnkgYSBzaWduYWwsIG9yIDAgb3RoZXJ3aXNlLiIiIgorCisgIHAg
PSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoY29tbWFuZCwgZW52PWVudmlyb24pCisgIGlm
IHAudGVybWluYXRlZF9ieV9zaWduYWw6CisgICAgcmV0dXJuIDEKKyAgZWxzZToKKyAgICByZXR1
cm4gMAorCisKKyMgVGhlIHRlc3RzLgorCisKK2NsYXNzIEdUZXN0QnJlYWtPbkZhaWx1cmVVbml0
VGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKKyAgIiIiVGVzdHMgdXNpbmcgdGhlIEdU
RVNUX0JSRUFLX09OX0ZBSUxVUkUgZW52aXJvbm1lbnQgdmFyaWFibGUgb3IKKyAgdGhlIC0tZ3Rl
c3RfYnJlYWtfb25fZmFpbHVyZSBmbGFnIHRvIHR1cm4gYXNzZXJ0aW9uIGZhaWx1cmVzIGludG8K
KyAgc2VnbWVudGF0aW9uIGZhdWx0cy4KKyAgIiIiCisKKyAgZGVmIFJ1bkFuZFZlcmlmeShzZWxm
LCBlbnZfdmFyX3ZhbHVlLCBmbGFnX3ZhbHVlLCBleHBlY3Rfc2VnX2ZhdWx0KToKKyAgICAiIiJS
dW5zIGd0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3RfIGFuZCB2ZXJpZmllcyB0aGF0IGl0
IGRvZXMKKyAgICAob3IgZG9lcyBub3QpIGhhdmUgYSBzZWctZmF1bHQuCisKKyAgICBBcmdzOgor
ICAgICAgZW52X3Zhcl92YWx1ZTogICAgdmFsdWUgb2YgdGhlIEdURVNUX0JSRUFLX09OX0ZBSUxV
UkUgZW52aXJvbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlOyBOb25lIGlm
IHRoZSB2YXJpYWJsZSBzaG91bGQgYmUgdW5zZXQuCisgICAgICBmbGFnX3ZhbHVlOiAgICAgICB2
YWx1ZSBvZiB0aGUgLS1ndGVzdF9icmVha19vbl9mYWlsdXJlIGZsYWc7CisgICAgICAgICAgICAg
ICAgICAgICAgICBOb25lIGlmIHRoZSBmbGFnIHNob3VsZCBub3QgYmUgcHJlc2VudC4KKyAgICAg
IGV4cGVjdF9zZWdfZmF1bHQ6IDEgaWYgdGhlIHByb2dyYW0gaXMgZXhwZWN0ZWQgdG8gZ2VuZXJh
dGUgYSBzZWctZmF1bHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAwIG90aGVyd2lzZS4KKyAg
ICAiIiIKKworICAgIFNldEVudlZhcihCUkVBS19PTl9GQUlMVVJFX0VOVl9WQVIsIGVudl92YXJf
dmFsdWUpCisKKyAgICBpZiBlbnZfdmFyX3ZhbHVlIGlzIE5vbmU6CisgICAgICBlbnZfdmFyX3Zh
bHVlX21zZyA9ICcgaXMgbm90IHNldCcKKyAgICBlbHNlOgorICAgICAgZW52X3Zhcl92YWx1ZV9t
c2cgPSAnPScgKyBlbnZfdmFyX3ZhbHVlCisKKyAgICBpZiBmbGFnX3ZhbHVlIGlzIE5vbmU6Cisg
ICAgICBmbGFnID0gJycKKyAgICBlbGlmIGZsYWdfdmFsdWUgPT0gJzAnOgorICAgICAgZmxhZyA9
ICctLSVzPTAnICUgQlJFQUtfT05fRkFJTFVSRV9GTEFHCisgICAgZWxzZToKKyAgICAgIGZsYWcg
PSAnLS0lcycgJSBCUkVBS19PTl9GQUlMVVJFX0ZMQUcKKworICAgIGNvbW1hbmQgPSBbRVhFX1BB
VEhdCisgICAgaWYgZmxhZzoKKyAgICAgIGNvbW1hbmQuYXBwZW5kKGZsYWcpCisKKyAgICBpZiBl
eHBlY3Rfc2VnX2ZhdWx0OgorICAgICAgc2hvdWxkX29yX25vdCA9ICdzaG91bGQnCisgICAgZWxz
ZToKKyAgICAgIHNob3VsZF9vcl9ub3QgPSAnc2hvdWxkIG5vdCcKKworICAgIGhhc19zZWdfZmF1
bHQgPSBSdW4oY29tbWFuZCkKKworICAgIFNldEVudlZhcihCUkVBS19PTl9GQUlMVVJFX0VOVl9W
QVIsIE5vbmUpCisKKyAgICBtc2cgPSAoJ3doZW4gJXMlcywgYW4gYXNzZXJ0aW9uIGZhaWx1cmUg
aW4gIiVzIiAlcyBjYXVzZSBhIHNlZy1mYXVsdC4nICUKKyAgICAgICAgICAgKEJSRUFLX09OX0ZB
SUxVUkVfRU5WX1ZBUiwgZW52X3Zhcl92YWx1ZV9tc2csICcgJy5qb2luKGNvbW1hbmQpLAorICAg
ICAgICAgICAgc2hvdWxkX29yX25vdCkpCisgICAgc2VsZi5hc3NlcnRfKGhhc19zZWdfZmF1bHQg
PT0gZXhwZWN0X3NlZ19mYXVsdCwgbXNnKQorCisgIGRlZiB0ZXN0RGVmYXVsdEJlaGF2aW9yKHNl
bGYpOgorICAgICIiIlRlc3RzIHRoZSBiZWhhdmlvciBvZiB0aGUgZGVmYXVsdCBtb2RlLiIiIgor
CisgICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT1Ob25lLAorICAgICAgICAgICAg
ICAgICAgICAgIGZsYWdfdmFsdWU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rf
c2VnX2ZhdWx0PTApCisKKyAgZGVmIHRlc3RFbnZWYXIoc2VsZik6CisgICAgIiIiVGVzdHMgdXNp
bmcgdGhlIEdURVNUX0JSRUFLX09OX0ZBSUxVUkUgZW52aXJvbm1lbnQgdmFyaWFibGUuIiIiCisK
KyAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScwJywKKyAgICAgICAgICAgICAg
ICAgICAgICBmbGFnX3ZhbHVlPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0X3Nl
Z19mYXVsdD0wKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzEnLAorICAg
ICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAg
ICBleHBlY3Rfc2VnX2ZhdWx0PTEpCisKKyAgZGVmIHRlc3RGbGFnKHNlbGYpOgorICAgICIiIlRl
c3RzIHVzaW5nIHRoZSAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUgZmxhZy4iIiIKKworICAgIHNl
bGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAg
ICBmbGFnX3ZhbHVlPScwJywKKyAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0
PTApCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT1Ob25lLAorICAgICAgICAg
ICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzEnLAorICAgICAgICAgICAgICAgICAgICAgIGV4cGVj
dF9zZWdfZmF1bHQ9MSkKKworICBkZWYgdGVzdEZsYWdPdmVycmlkZXNFbnZWYXIoc2VsZik6Cisg
ICAgIiIiVGVzdHMgdGhhdCB0aGUgZmxhZyBvdmVycmlkZXMgdGhlIGVudmlyb25tZW50IHZhcmlh
YmxlLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMCcsCisgICAg
ICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMCcsCisgICAgICAgICAgICAgICAgICAgICAg
ZXhwZWN0X3NlZ19mYXVsdD0wKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9
JzAnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzEnLAorICAgICAgICAgICAg
ICAgICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9MSkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZf
dmFyX3ZhbHVlPScxJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScwJywKKyAg
ICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTApCisgICAgc2VsZi5SdW5BbmRW
ZXJpZnkoZW52X3Zhcl92YWx1ZT0nMScsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1
ZT0nMScsCisgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0xKQorCisgIGRl
ZiB0ZXN0QnJlYWtPbkZhaWx1cmVPdmVycmlkZXNUaHJvd09uRmFpbHVyZShzZWxmKToKKyAgICAi
IiJUZXN0cyB0aGF0IGd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUgb3ZlcnJpZGVzIGd0ZXN0X3Rocm93
X29uX2ZhaWx1cmUuIiIiCisKKyAgICBTZXRFbnZWYXIoVEhST1dfT05fRkFJTFVSRV9FTlZfVkFS
LCAnMScpCisgICAgdHJ5OgorICAgICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT1O
b25lLAorICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMScsCisgICAgICAgICAg
ICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTEpCisgICAgZmluYWxseToKKyAgICAgIFNl
dEVudlZhcihUSFJPV19PTl9GQUlMVVJFX0VOVl9WQVIsIE5vbmUpCisKKyAgaWYgSVNfV0lORE9X
UzoKKyAgICBkZWYgdGVzdENhdGNoRXhjZXB0aW9uc0RvZXNOb3RJbnRlcmZlcmUoc2VsZik6Cisg
ICAgICAiIiJUZXN0cyB0aGF0IGd0ZXN0X2NhdGNoX2V4Y2VwdGlvbnMgZG9lc24ndCBpbnRlcmZl
cmUuIiIiCisKKyAgICAgIFNldEVudlZhcihDQVRDSF9FWENFUFRJT05TX0VOVl9WQVIsICcxJykK
KyAgICAgIHRyeToKKyAgICAgICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMScs
CisgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzEnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTEpCisgICAgICBmaW5hbGx5OgorICAgICAg
ICBTZXRFbnZWYXIoQ0FUQ0hfRVhDRVBUSU9OU19FTlZfVkFSLCBOb25lKQorCisKK2lmIF9fbmFt
ZV9fID09ICdfX21haW5fXyc6CisgIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3RfLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9icmVha19vbl9mYWlsdXJlX3VuaXR0ZXN0Xy5jYwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kZDA3NDc4YzA3NTdjNzRjZDU0OGE4ZjNlOTI3NDM1YTZlNDI5Nzg5Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9icmVha19vbl9mYWlsdXJlX3VuaXR0
ZXN0Xy5jYwpAQCAtMCwwICsxLDg4IEBACisvLyBDb3B5cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4K
Ky8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
Ky8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8v
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisvLworLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2Fu
KQorCisvLyBVbml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0J3MgYnJlYWstb24tZmFpbHVyZSBtb2Rl
LgorLy8KKy8vIEEgdXNlciBjYW4gYXNrIEdvb2dsZSBUZXN0IHRvIHNlZy1mYXVsdCB3aGVuIGFu
IGFzc2VydGlvbiBmYWlscywgdXNpbmcKKy8vIGVpdGhlciB0aGUgR1RFU1RfQlJFQUtfT05fRkFJ
TFVSRSBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciB0aGUKKy8vIC0tZ3Rlc3RfYnJlYWtfb25fZmFp
bHVyZSBmbGFnLiAgVGhpcyBmaWxlIGlzIHVzZWQgZm9yIHRlc3Rpbmcgc3VjaAorLy8gZnVuY3Rp
b25hbGl0eS4KKy8vCisvLyBUaGlzIHByb2dyYW0gd2lsbCBiZSBpbnZva2VkIGZyb20gYSBQeXRo
b24gdW5pdCB0ZXN0LiAgSXQgaXMKKy8vIGV4cGVjdGVkIHRvIGZhaWwuICBEb24ndCBydW4gaXQg
ZGlyZWN0bHkuCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCisjaWYgR1RFU1RfT1NfV0lO
RE9XUworIyBpbmNsdWRlIDx3aW5kb3dzLmg+CisjIGluY2x1ZGUgPHN0ZGxpYi5oPgorI2VuZGlm
CisKK25hbWVzcGFjZSB7CisKKy8vIEEgdGVzdCB0aGF0J3MgZXhwZWN0ZWQgdG8gZmFpbC4KK1RF
U1QoRm9vLCBCYXIpIHsKKyAgRVhQRUNUX0VRKDIsIDMpOworfQorCisjaWYgR1RFU1RfSEFTX1NF
SCAmJiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKy8vIE9uIFdpbmRvd3MgTW9iaWxlIGdsb2Jh
bCBleGNlcHRpb24gaGFuZGxlcnMgYXJlIG5vdCBzdXBwb3J0ZWQuCitMT05HIFdJTkFQSSBFeGl0
V2l0aEV4Y2VwdGlvbkNvZGUoCisgICAgc3RydWN0IF9FWENFUFRJT05fUE9JTlRFUlMqIGV4Y2Vw
dGlvbl9wb2ludGVycykgeworICBleGl0KGV4Y2VwdGlvbl9wb2ludGVycy0+RXhjZXB0aW9uUmVj
b3JkLT5FeGNlcHRpb25Db2RlKTsKK30KKyNlbmRpZgorCit9ICAvLyBuYW1lc3BhY2UKKworaW50
IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CisjaWYgR1RFU1RfT1NfV0lORE9XUworICAv
LyBTdXBwcmVzc2VzIGRpc3BsYXkgb2YgdGhlIFdpbmRvd3MgZXJyb3IgZGlhbG9nIHVwb24gZW5j
b3VudGVyaW5nCisgIC8vIGEgZ2VuZXJhbCBwcm90ZWN0aW9uIGZhdWx0IChzZWdtZW50IHZpb2xh
dGlvbikuCisgIFNldEVycm9yTW9kZShTRU1fTk9HUEZBVUxURVJST1JCT1ggfCBTRU1fRkFJTENS
SVRJQ0FMRVJST1JTKTsKKworIyBpZiBHVEVTVF9IQVNfU0VIICYmICFHVEVTVF9PU19XSU5ET1dT
X01PQklMRQorCisgIC8vIFRoZSBkZWZhdWx0IHVuaGFuZGxlZCBleGNlcHRpb24gZmlsdGVyIGRv
ZXMgbm90IGFsd2F5cyBleGl0CisgIC8vIHdpdGggdGhlIGV4Y2VwdGlvbiBjb2RlIGFzIGV4aXQg
Y29kZSAtIGZvciBleGFtcGxlIGl0IGV4aXRzIHdpdGgKKyAgLy8gMCBmb3IgRVhDRVBUSU9OX0FD
Q0VTU19WSU9MQVRJT04gYW5kIDEgZm9yIEVYQ0VQVElPTl9CUkVBS1BPSU5UCisgIC8vIGlmIHRo
ZSBhcHBsaWNhdGlvbiBpcyBjb21waWxlZCBpbiBkZWJ1ZyBtb2RlLiBUaHVzIHdlIHVzZSBvdXIg
b3duCisgIC8vIGZpbHRlciB3aGljaCBhbHdheXMgZXhpdHMgd2l0aCB0aGUgZXhjZXB0aW9uIGNv
ZGUgZm9yIHVuaGFuZGxlZAorICAvLyBleGNlcHRpb25zLgorICBTZXRVbmhhbmRsZWRFeGNlcHRp
b25GaWx0ZXIoRXhpdFdpdGhFeGNlcHRpb25Db2RlKTsKKworIyBlbmRpZgorI2VuZGlmCisKKyAg
dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworCisgIHJldHVybiBSVU5fQUxM
X1RFU1RTKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X2NhdGNoX2V4
Y2VwdGlvbnNfdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9u
c190ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2ZmMyMmZkMWZlNWMwYzRlYmRjOGRlN2I0MjIzNmExNjY5
YjBkMDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X2NhdGNoX2V4
Y2VwdGlvbnNfdGVzdC5weQpAQCAtMCwwICsxLDIzNyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9u
CisjCisjIENvcHlyaWdodCAyMDEwIEdvb2dsZSBJbmMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9u
LgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworIiIiVGVzdHMgR29vZ2xlIFRlc3QncyBleGNlcHRpb24gY2F0
Y2hpbmcgYmVoYXZpb3IuCisKK1RoaXMgc2NyaXB0IGludm9rZXMgZ3Rlc3RfY2F0Y2hfZXhjZXB0
aW9uc190ZXN0XyBhbmQKK2d0ZXN0X2NhdGNoX2V4Y2VwdGlvbnNfZXhfdGVzdF8gKHByb2dyYW1z
IHdyaXR0ZW4gd2l0aAorR29vZ2xlIFRlc3QpIGFuZCB2ZXJpZmllcyB0aGVpciBvdXRwdXQuCisi
IiIKKworX19hdXRob3JfXyA9ICd2bGFkbEBnb29nbGUuY29tIChWbGFkIExvc2V2KScKKworaW1w
b3J0IG9zCisKK2ltcG9ydCBndGVzdF90ZXN0X3V0aWxzCisKKyMgQ29uc3RhbnRzLgorRkxBR19Q
UkVGSVggPSAnLS1ndGVzdF8nCitMSVNUX1RFU1RTX0ZMQUcgPSBGTEFHX1BSRUZJWCArICdsaXN0
X3Rlc3RzJworTk9fQ0FUQ0hfRVhDRVBUSU9OU19GTEFHID0gRkxBR19QUkVGSVggKyAnY2F0Y2hf
ZXhjZXB0aW9ucz0wJworRklMVEVSX0ZMQUcgPSBGTEFHX1BSRUZJWCArICdmaWx0ZXInCisKKyMg
UGF0aCB0byB0aGUgZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9uc19leF90ZXN0XyBiaW5hcnksIGNvbXBp
bGVkIHdpdGgKKyMgZXhjZXB0aW9ucyBlbmFibGVkLgorRVhfRVhFX1BBVEggPSBndGVzdF90ZXN0
X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgKKyAgICAnZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9u
c19leF90ZXN0XycpCisKKyMgUGF0aCB0byB0aGUgZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9uc190ZXN0
XyBiaW5hcnksIGNvbXBpbGVkIHdpdGgKKyMgZXhjZXB0aW9ucyBkaXNhYmxlZC4KK0VYRV9QQVRI
ID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoCisgICAgJ2d0ZXN0X2Nh
dGNoX2V4Y2VwdGlvbnNfbm9fZXhfdGVzdF8nKQorCitlbnZpcm9uID0gZ3Rlc3RfdGVzdF91dGls
cy5lbnZpcm9uCitTZXRFbnZWYXIgPSBndGVzdF90ZXN0X3V0aWxzLlNldEVudlZhcgorCisjIFRl
c3RzIGluIHRoaXMgZmlsZSBydW4gYSBHb29nbGUtVGVzdC1iYXNlZCB0ZXN0IHByb2dyYW0gYW5k
IGV4cGVjdCBpdAorIyB0byB0ZXJtaW5hdGUgcHJlbWF0dXJlbHkuICBUaGVyZWZvcmUgdGhleSBh
cmUgaW5jb21wYXRpYmxlIHdpdGgKKyMgdGhlIHByZW1hdHVyZS1leGl0LWZpbGUgcHJvdG9jb2wg
YnkgZGVzaWduLiAgVW5zZXQgdGhlCisjIHByZW1hdHVyZS1leGl0IGZpbGVwYXRoIHRvIHByZXZl
bnQgR29vZ2xlIFRlc3QgZnJvbSBjcmVhdGluZworIyB0aGUgZmlsZS4KK1NldEVudlZhcihndGVz
dF90ZXN0X3V0aWxzLlBSRU1BVFVSRV9FWElUX0ZJTEVfRU5WX1ZBUiwgTm9uZSkKKworVEVTVF9M
SVNUID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKAorICAgIFtFWEVfUEFUSCwgTElTVF9U
RVNUU19GTEFHXSwgZW52PWVudmlyb24pLm91dHB1dAorCitTVVBQT1JUU19TRUhfRVhDRVBUSU9O
UyA9ICdUaHJvd3NTZWhFeGNlcHRpb24nIGluIFRFU1RfTElTVAorCitpZiBTVVBQT1JUU19TRUhf
RVhDRVBUSU9OUzoKKyAgQklOQVJZX09VVFBVVCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2Vz
cyhbRVhFX1BBVEhdLCBlbnY9ZW52aXJvbikub3V0cHV0CisKK0VYX0JJTkFSWV9PVVRQVVQgPSBn
dGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoCisgICAgW0VYX0VYRV9QQVRIXSwgZW52PWVudmly
b24pLm91dHB1dAorCisKKyMgVGhlIHRlc3RzLgoraWYgU1VQUE9SVFNfU0VIX0VYQ0VQVElPTlM6
CisgICMgcHlsaW50OmRpc2FibGUtbXNnPUM2MzAyCisgIGNsYXNzIENhdGNoU2VoRXhjZXB0aW9u
c1Rlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdHMgZXhjZXB0aW9u
LWNhdGNoaW5nIGJlaGF2aW9yLiIiIgorCisKKyAgICBkZWYgVGVzdFNlaEV4Y2VwdGlvbnMoc2Vs
ZiwgdGVzdF9vdXRwdXQpOgorICAgICAgc2VsZi5hc3NlcnRfKCdTRUggZXhjZXB0aW9uIHdpdGgg
Y29kZSAweDJhIHRocm93biAnCisgICAgICAgICAgICAgICAgICAgJ2luIHRoZSB0ZXN0IGZpeHR1
cmVcJ3MgY29uc3RydWN0b3InCisgICAgICAgICAgICAgICAgICAgaW4gdGVzdF9vdXRwdXQpCisg
ICAgICBzZWxmLmFzc2VydF8oJ1NFSCBleGNlcHRpb24gd2l0aCBjb2RlIDB4MmEgdGhyb3duICcK
KyAgICAgICAgICAgICAgICAgICAnaW4gdGhlIHRlc3QgZml4dHVyZVwncyBkZXN0cnVjdG9yJwor
ICAgICAgICAgICAgICAgICAgIGluIHRlc3Rfb3V0cHV0KQorICAgICAgc2VsZi5hc3NlcnRfKCdT
RUggZXhjZXB0aW9uIHdpdGggY29kZSAweDJhIHRocm93biBpbiBTZXRVcFRlc3RDYXNlKCknCisg
ICAgICAgICAgICAgICAgICAgaW4gdGVzdF9vdXRwdXQpCisgICAgICBzZWxmLmFzc2VydF8oJ1NF
SCBleGNlcHRpb24gd2l0aCBjb2RlIDB4MmEgdGhyb3duIGluIFRlYXJEb3duVGVzdENhc2UoKScK
KyAgICAgICAgICAgICAgICAgICBpbiB0ZXN0X291dHB1dCkKKyAgICAgIHNlbGYuYXNzZXJ0Xygn
U0VIIGV4Y2VwdGlvbiB3aXRoIGNvZGUgMHgyYSB0aHJvd24gaW4gU2V0VXAoKScKKyAgICAgICAg
ICAgICAgICAgICBpbiB0ZXN0X291dHB1dCkKKyAgICAgIHNlbGYuYXNzZXJ0XygnU0VIIGV4Y2Vw
dGlvbiB3aXRoIGNvZGUgMHgyYSB0aHJvd24gaW4gVGVhckRvd24oKScKKyAgICAgICAgICAgICAg
ICAgICBpbiB0ZXN0X291dHB1dCkKKyAgICAgIHNlbGYuYXNzZXJ0XygnU0VIIGV4Y2VwdGlvbiB3
aXRoIGNvZGUgMHgyYSB0aHJvd24gaW4gdGhlIHRlc3QgYm9keScKKyAgICAgICAgICAgICAgICAg
ICBpbiB0ZXN0X291dHB1dCkKKworICAgIGRlZiB0ZXN0Q2F0Y2hlc1NlaEV4Y2VwdGlvbnNXaXRo
Q3h4RXhjZXB0aW9uc0VuYWJsZWQoc2VsZik6CisgICAgICBzZWxmLlRlc3RTZWhFeGNlcHRpb25z
KEVYX0JJTkFSWV9PVVRQVVQpCisKKyAgICBkZWYgdGVzdENhdGNoZXNTZWhFeGNlcHRpb25zV2l0
aEN4eEV4Y2VwdGlvbnNEaXNhYmxlZChzZWxmKToKKyAgICAgIHNlbGYuVGVzdFNlaEV4Y2VwdGlv
bnMoQklOQVJZX09VVFBVVCkKKworCitjbGFzcyBDYXRjaEN4eEV4Y2VwdGlvbnNUZXN0KGd0ZXN0
X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgorICAiIiJUZXN0cyBDKysgZXhjZXB0aW9uLWNhdGNoaW5n
IGJlaGF2aW9yLgorCisgICAgIFRlc3RzIGluIHRoaXMgdGVzdCBjYXNlIHZlcmlmeSB0aGF0Ogor
ICAgICAqIEMrKyBleGNlcHRpb25zIGFyZSBjYXVnaHQgYW5kIGxvZ2dlZCBhcyBDKysgKG5vdCBT
RUgpIGV4Y2VwdGlvbnMKKyAgICAgKiBFeGNlcHRpb24gdGhyb3duIGFmZmVjdCB0aGUgcmVtYWlu
ZGVyIG9mIHRoZSB0ZXN0IHdvcmsgZmxvdyBpbiB0aGUKKyAgICAgICBleHBlY3RlZCBtYW5uZXIu
CisgICIiIgorCisgIGRlZiB0ZXN0Q2F0Y2hlc0N4eEV4Y2VwdGlvbnNJbkZpeHR1cmVDb25zdHJ1
Y3RvcihzZWxmKToKKyAgICBzZWxmLmFzc2VydF8oJ0MrKyBleGNlcHRpb24gd2l0aCBkZXNjcmlw
dGlvbiAnCisgICAgICAgICAgICAgICAgICciU3RhbmRhcmQgQysrIGV4Y2VwdGlvbiIgdGhyb3du
ICcKKyAgICAgICAgICAgICAgICAgJ2luIHRoZSB0ZXN0IGZpeHR1cmVcJ3MgY29uc3RydWN0b3In
CisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisgICAgc2VsZi5hc3NlcnRf
KCd1bmV4cGVjdGVkJyBub3QgaW4gRVhfQklOQVJZX09VVFBVVCwKKyAgICAgICAgICAgICAgICAg
J1RoaXMgZmFpbHVyZSBiZWxvbmdzIGluIHRoaXMgdGVzdCBvbmx5IGlmICcKKyAgICAgICAgICAg
ICAgICAgJyJDeHhFeGNlcHRpb25JbkNvbnN0cnVjdG9yVGVzdCIgKG5vIHF1b3RlcykgJworICAg
ICAgICAgICAgICAgICAnYXBwZWFycyBvbiB0aGUgc2FtZSBsaW5lIGFzIHdvcmRzICJjYWxsZWQg
dW5leHBlY3RlZGx5IicpCisKKyAgaWYgKCdDeHhFeGNlcHRpb25JbkRlc3RydWN0b3JUZXN0LlRo
cm93c0V4Y2VwdGlvbkluRGVzdHJ1Y3RvcicgaW4KKyAgICAgIEVYX0JJTkFSWV9PVVRQVVQpOgor
CisgICAgZGVmIHRlc3RDYXRjaGVzQ3h4RXhjZXB0aW9uc0luRml4dHVyZURlc3RydWN0b3Ioc2Vs
Zik6CisgICAgICBzZWxmLmFzc2VydF8oJ0MrKyBleGNlcHRpb24gd2l0aCBkZXNjcmlwdGlvbiAn
CisgICAgICAgICAgICAgICAgICAgJyJTdGFuZGFyZCBDKysgZXhjZXB0aW9uIiB0aHJvd24gJwor
ICAgICAgICAgICAgICAgICAgICdpbiB0aGUgdGVzdCBmaXh0dXJlXCdzIGRlc3RydWN0b3InCisg
ICAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICAgIHNlbGYuYXNzZXJ0
XygnQ3h4RXhjZXB0aW9uSW5EZXN0cnVjdG9yVGVzdDo6VGVhckRvd25UZXN0Q2FzZSgpICcKKyAg
ICAgICAgICAgICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicKKyAgICAgICAgICAgICAgICAg
ICBpbiBFWF9CSU5BUllfT1VUUFVUKQorCisgIGRlZiB0ZXN0Q2F0Y2hlc0N4eEV4Y2VwdGlvbnNJ
blNldFVwVGVzdENhc2Uoc2VsZik6CisgICAgc2VsZi5hc3NlcnRfKCdDKysgZXhjZXB0aW9uIHdp
dGggZGVzY3JpcHRpb24gIlN0YW5kYXJkIEMrKyBleGNlcHRpb24iJworICAgICAgICAgICAgICAg
ICAnIHRocm93biBpbiBTZXRVcFRlc3RDYXNlKCknCisgICAgICAgICAgICAgICAgIGluIEVYX0JJ
TkFSWV9PVVRQVVQpCisgICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRpb25JbkNvbnN0cnVjdG9y
VGVzdDo6VGVhckRvd25UZXN0Q2FzZSgpICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBl
eHBlY3RlZC4nCisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisgICAgc2Vs
Zi5hc3NlcnRfKCdDeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0IGNvbnN0cnVjdG9yICcK
KyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4nCisgICAgICAgICAgICAgICAg
IGluIEVYX0JJTkFSWV9PVVRQVVQpCisgICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRpb25JblNl
dFVwVGVzdENhc2VUZXN0IGRlc3RydWN0b3IgJworICAgICAgICAgICAgICAgICAnY2FsbGVkIGFz
IGV4cGVjdGVkLicKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBz
ZWxmLmFzc2VydF8oJ0N4eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3Q6OlNldFVwKCkgJwor
ICAgICAgICAgICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicKKyAgICAgICAgICAgICAgICAg
aW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2VwdGlvbkluU2V0
VXBUZXN0Q2FzZVRlc3Q6OlRlYXJEb3duKCkgJworICAgICAgICAgICAgICAgICAnY2FsbGVkIGFz
IGV4cGVjdGVkLicKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBz
ZWxmLmFzc2VydF8oJ0N4eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3QgdGVzdCBib2R5ICcK
KyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4nCisgICAgICAgICAgICAgICAg
IGluIEVYX0JJTkFSWV9PVVRQVVQpCisKKyAgZGVmIHRlc3RDYXRjaGVzQ3h4RXhjZXB0aW9uc0lu
VGVhckRvd25UZXN0Q2FzZShzZWxmKToKKyAgICBzZWxmLmFzc2VydF8oJ0MrKyBleGNlcHRpb24g
d2l0aCBkZXNjcmlwdGlvbiAiU3RhbmRhcmQgQysrIGV4Y2VwdGlvbiInCisgICAgICAgICAgICAg
ICAgICcgdGhyb3duIGluIFRlYXJEb3duVGVzdENhc2UoKScKKyAgICAgICAgICAgICAgICAgaW4g
RVhfQklOQVJZX09VVFBVVCkKKworICBkZWYgdGVzdENhdGNoZXNDeHhFeGNlcHRpb25zSW5TZXRV
cChzZWxmKToKKyAgICBzZWxmLmFzc2VydF8oJ0MrKyBleGNlcHRpb24gd2l0aCBkZXNjcmlwdGlv
biAiU3RhbmRhcmQgQysrIGV4Y2VwdGlvbiInCisgICAgICAgICAgICAgICAgICcgdGhyb3duIGlu
IFNldFVwKCknCisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisgICAgc2Vs
Zi5hc3NlcnRfKCdDeHhFeGNlcHRpb25JblNldFVwVGVzdDo6VGVhckRvd25UZXN0Q2FzZSgpICcK
KyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4nCisgICAgICAgICAgICAgICAg
IGluIEVYX0JJTkFSWV9PVVRQVVQpCisgICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRpb25JblNl
dFVwVGVzdCBkZXN0cnVjdG9yICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3Rl
ZC4nCisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisgICAgc2VsZi5hc3Nl
cnRfKCdDeHhFeGNlcHRpb25JblNldFVwVGVzdDo6VGVhckRvd24oKSAnCisgICAgICAgICAgICAg
ICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllf
T1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygndW5leHBlY3RlZCcgbm90IGluIEVYX0JJTkFSWV9P
VVRQVVQsCisgICAgICAgICAgICAgICAgICdUaGlzIGZhaWx1cmUgYmVsb25ncyBpbiB0aGlzIHRl
c3Qgb25seSBpZiAnCisgICAgICAgICAgICAgICAgICciQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3Qi
IChubyBxdW90ZXMpICcKKyAgICAgICAgICAgICAgICAgJ2FwcGVhcnMgb24gdGhlIHNhbWUgbGlu
ZSBhcyB3b3JkcyAiY2FsbGVkIHVuZXhwZWN0ZWRseSInKQorCisgIGRlZiB0ZXN0Q2F0Y2hlc0N4
eEV4Y2VwdGlvbnNJblRlYXJEb3duKHNlbGYpOgorICAgIHNlbGYuYXNzZXJ0XygnQysrIGV4Y2Vw
dGlvbiB3aXRoIGRlc2NyaXB0aW9uICJTdGFuZGFyZCBDKysgZXhjZXB0aW9uIicKKyAgICAgICAg
ICAgICAgICAgJyB0aHJvd24gaW4gVGVhckRvd24oKScKKyAgICAgICAgICAgICAgICAgaW4gRVhf
QklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2VwdGlvbkluVGVhckRvd25U
ZXN0OjpUZWFyRG93blRlc3RDYXNlKCkgJworICAgICAgICAgICAgICAgICAnY2FsbGVkIGFzIGV4
cGVjdGVkLicKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxm
LmFzc2VydF8oJ0N4eEV4Y2VwdGlvbkluVGVhckRvd25UZXN0IGRlc3RydWN0b3IgJworICAgICAg
ICAgICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicKKyAgICAgICAgICAgICAgICAgaW4gRVhf
QklOQVJZX09VVFBVVCkKKworICBkZWYgdGVzdENhdGNoZXNDeHhFeGNlcHRpb25zSW5UZXN0Qm9k
eShzZWxmKToKKyAgICBzZWxmLmFzc2VydF8oJ0MrKyBleGNlcHRpb24gd2l0aCBkZXNjcmlwdGlv
biAiU3RhbmRhcmQgQysrIGV4Y2VwdGlvbiInCisgICAgICAgICAgICAgICAgICcgdGhyb3duIGlu
IHRoZSB0ZXN0IGJvZHknCisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisg
ICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRpb25JblRlc3RCb2R5VGVzdDo6VGVhckRvd25UZXN0
Q2FzZSgpICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4nCisgICAgICAg
ICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisgICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNl
cHRpb25JblRlc3RCb2R5VGVzdCBkZXN0cnVjdG9yICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxl
ZCBhcyBleHBlY3RlZC4nCisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisg
ICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRpb25JblRlc3RCb2R5VGVzdDo6VGVhckRvd24oKSAn
CisgICAgICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJworICAgICAgICAgICAgICAg
ICBpbiBFWF9CSU5BUllfT1VUUFVUKQorCisgIGRlZiB0ZXN0Q2F0Y2hlc05vblN0ZEN4eEV4Y2Vw
dGlvbnMoc2VsZik6CisgICAgc2VsZi5hc3NlcnRfKCdVbmtub3duIEMrKyBleGNlcHRpb24gdGhy
b3duIGluIHRoZSB0ZXN0IGJvZHknCisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQ
VVQpCisKKyAgZGVmIHRlc3RVbmhhbmRsZWRDeHhFeGNlcHRpb25zQWJvcnRUaGVQcm9ncmFtKHNl
bGYpOgorICAgICMgRmlsdGVycyBvdXQgU0VIIGV4Y2VwdGlvbiB0ZXN0cyBvbiBXaW5kb3dzLiBV
bmhhbmRsZWQgU0VIIGV4Y2VwdGlvbnMKKyAgICAjIGNhdXNlIHRlc3RzIHRvIHNob3cgcG9wLXVw
IHdpbmRvd3MgdGhlcmUuCisgICAgRklUTEVSX09VVF9TRUhfVEVTVFNfRkxBRyA9IEZJTFRFUl9G
TEFHICsgJz0tKlNlaConCisgICAgIyBCeSBkZWZhdWx0LCBHb29nbGUgVGVzdCBkb2Vzbid0IGNh
dGNoIHRoZSBleGNlcHRpb25zLgorICAgIHVuY2F1Z2h0X2V4Y2VwdGlvbnNfZXhfYmluYXJ5X291
dHB1dCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcygKKyAgICAgICAgW0VYX0VYRV9QQVRI
LAorICAgICAgICAgTk9fQ0FUQ0hfRVhDRVBUSU9OU19GTEFHLAorICAgICAgICAgRklUTEVSX09V
VF9TRUhfVEVTVFNfRkxBR10sCisgICAgICAgIGVudj1lbnZpcm9uKS5vdXRwdXQKKworICAgIHNl
bGYuYXNzZXJ0XygnVW5oYW5kbGVkIEMrKyBleGNlcHRpb24gdGVybWluYXRpbmcgdGhlIHByb2dy
YW0nCisgICAgICAgICAgICAgICAgIGluIHVuY2F1Z2h0X2V4Y2VwdGlvbnNfZXhfYmluYXJ5X291
dHB1dCkKKyAgICBzZWxmLmFzc2VydF8oJ3VuZXhwZWN0ZWQnIG5vdCBpbiB1bmNhdWdodF9leGNl
cHRpb25zX2V4X2JpbmFyeV9vdXRwdXQpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoK
KyAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3Qv
Z3Rlc3RfY2F0Y2hfZXhjZXB0aW9uc190ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3Rf
Y2F0Y2hfZXhjZXB0aW9uc190ZXN0Xy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNDI2MzdlYzhiYjNhOTNjNjcx
NDY3MmRiNWE3ZDI0ZTYxNGQwMjhkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVz
dC9ndGVzdF9jYXRjaF9leGNlcHRpb25zX3Rlc3RfLmNjCkBAIC0wLDAgKzEsMzExIEBACisvLyBD
b3B5cmlnaHQgMjAxMCwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLwor
Ly8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3Ry
aWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8v
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gQXV0aG9yOiB2
bGFkbEBnb29nbGUuY29tIChWbGFkIExvc2V2KQorLy8KKy8vIFRlc3RzIGZvciBHb29nbGUgVGVz
dCBpdHNlbGYuIFRlc3RzIGluIHRoaXMgZmlsZSB0aHJvdyBDKysgb3IgU0VICisvLyBleGNlcHRp
b25zLCBhbmQgdGhlIG91dHB1dCBpcyB2ZXJpZmllZCBieSBndGVzdF9jYXRjaF9leGNlcHRpb25z
X3Rlc3QucHkuCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCisjaW5jbHVkZSA8c3RkaW8u
aD4gIC8vIE5PTElOVAorI2luY2x1ZGUgPHN0ZGxpYi5oPiAgLy8gRm9yIGV4aXQoKS4KKworI2lm
IEdURVNUX0hBU19TRUgKKyMgaW5jbHVkZSA8d2luZG93cy5oPgorI2VuZGlmCisKKyNpZiBHVEVT
VF9IQVNfRVhDRVBUSU9OUworIyBpbmNsdWRlIDxleGNlcHRpb24+ICAvLyBGb3Igc2V0X3Rlcm1p
bmF0ZSgpLgorIyBpbmNsdWRlIDxzdGRleGNlcHQ+CisjZW5kaWYKKwordXNpbmcgdGVzdGluZzo6
VGVzdDsKKworI2lmIEdURVNUX0hBU19TRUgKKworY2xhc3MgU2VoRXhjZXB0aW9uSW5Db25zdHJ1
Y3RvclRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHVibGljOgorICBTZWhFeGNlcHRpb25JbkNvbnN0
cnVjdG9yVGVzdCgpIHsgUmFpc2VFeGNlcHRpb24oNDIsIDAsIDAsIE5VTEwpOyB9Cit9OworCitU
RVNUX0YoU2VoRXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3QsIFRocm93c0V4Y2VwdGlvbkluQ29u
c3RydWN0b3IpIHt9CisKK2NsYXNzIFNlaEV4Y2VwdGlvbkluRGVzdHJ1Y3RvclRlc3QgOiBwdWJs
aWMgVGVzdCB7CisgcHVibGljOgorICB+U2VoRXhjZXB0aW9uSW5EZXN0cnVjdG9yVGVzdCgpIHsg
UmFpc2VFeGNlcHRpb24oNDIsIDAsIDAsIE5VTEwpOyB9Cit9OworCitURVNUX0YoU2VoRXhjZXB0
aW9uSW5EZXN0cnVjdG9yVGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5EZXN0cnVjdG9yKSB7fQorCitj
bGFzcyBTZWhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0IDogcHVibGljIFRlc3QgeworIHB1
YmxpYzoKKyAgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpIHsgUmFpc2VFeGNlcHRpb24oNDIs
IDAsIDAsIE5VTEwpOyB9Cit9OworCitURVNUX0YoU2VoRXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNl
VGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlKSB7fQorCitjbGFzcyBTZWhFeGNl
cHRpb25JblRlYXJEb3duVGVzdENhc2VUZXN0IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAg
c3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsgUmFpc2VFeGNlcHRpb24oNDIsIDAsIDAs
IE5VTEwpOyB9Cit9OworCitURVNUX0YoU2VoRXhjZXB0aW9uSW5UZWFyRG93blRlc3RDYXNlVGVz
dCwgVGhyb3dzRXhjZXB0aW9uSW5UZWFyRG93blRlc3RDYXNlKSB7fQorCitjbGFzcyBTZWhFeGNl
cHRpb25JblNldFVwVGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHZpcnR1YWwg
dm9pZCBTZXRVcCgpIHsgUmFpc2VFeGNlcHRpb24oNDIsIDAsIDAsIE5VTEwpOyB9Cit9OworCitU
RVNUX0YoU2VoRXhjZXB0aW9uSW5TZXRVcFRlc3QsIFRocm93c0V4Y2VwdGlvbkluU2V0VXApIHt9
CisKK2NsYXNzIFNlaEV4Y2VwdGlvbkluVGVhckRvd25UZXN0IDogcHVibGljIFRlc3QgeworIHBy
b3RlY3RlZDoKKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeyBSYWlzZUV4Y2VwdGlvbig0Miwg
MCwgMCwgTlVMTCk7IH0KK307CisKK1RFU1RfRihTZWhFeGNlcHRpb25JblRlYXJEb3duVGVzdCwg
VGhyb3dzRXhjZXB0aW9uSW5UZWFyRG93bikge30KKworVEVTVChTZWhFeGNlcHRpb25UZXN0LCBU
aHJvd3NTZWhFeGNlcHRpb24pIHsKKyAgUmFpc2VFeGNlcHRpb24oNDIsIDAsIDAsIE5VTEwpOwor
fQorCisjZW5kaWYgIC8vIEdURVNUX0hBU19TRUgKKworI2lmIEdURVNUX0hBU19FWENFUFRJT05T
CisKK2NsYXNzIEN4eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0IDogcHVibGljIFRlc3Qgewor
IHB1YmxpYzoKKyAgQ3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3QoKSB7CisgICAgLy8gV2l0
aG91dCB0aGlzIG1hY3JvIFZDKysgY29tcGxhaW5zIGFib3V0IHVucmVhY2hhYmxlIGNvZGUgYXQg
dGhlIGVuZCBvZgorICAgIC8vIHRoZSBjb25zdHJ1Y3Rvci4KKyAgICBHVEVTVF9TVVBQUkVTU19V
TlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVMT1dfKAorICAgICAgICB0aHJvdyBzdGQ6OnJ1bnRp
bWVfZXJyb3IoIlN0YW5kYXJkIEMrKyBleGNlcHRpb24iKSk7CisgIH0KKworICBzdGF0aWMgdm9p
ZCBUZWFyRG93blRlc3RDYXNlKCkgeworICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAiQ3h4
RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3Q6OlRlYXJEb3duVGVzdENhc2UoKSAiCisgICAgICAg
ICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQorCisgcHJvdGVjdGVkOgorICB+Q3h4
RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3QoKSB7CisgICAgQUREX0ZBSUxVUkUoKSA8PCAiQ3h4
RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3QgZGVzdHJ1Y3RvciAiCisgICAgICAgICAgICAgICAg
ICA8PCAiY2FsbGVkIHVuZXhwZWN0ZWRseS4iOworICB9CisKKyAgdmlydHVhbCB2b2lkIFNldFVw
KCkgeworICAgIEFERF9GQUlMVVJFKCkgPDwgIkN4eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0
OjpTZXRVcCgpICIKKyAgICAgICAgICAgICAgICAgIDw8ICJjYWxsZWQgdW5leHBlY3RlZGx5LiI7
CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgQUREX0ZBSUxVUkUoKSA8
PCAiQ3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3Q6OlRlYXJEb3duKCkgIgorICAgICAgICAg
ICAgICAgICAgPDwgImNhbGxlZCB1bmV4cGVjdGVkbHkuIjsKKyAgfQorfTsKKworVEVTVF9GKEN4
eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0LCBUaHJvd3NFeGNlcHRpb25JbkNvbnN0cnVjdG9y
KSB7CisgIEFERF9GQUlMVVJFKCkgPDwgIkN4eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0IHRl
c3QgYm9keSAiCisgICAgICAgICAgICAgICAgPDwgImNhbGxlZCB1bmV4cGVjdGVkbHkuIjsKK30K
KworLy8gRXhjZXB0aW9ucyBpbiBkZXN0cnVjdG9ycyBhcmUgbm90IHN1cHBvcnRlZCBpbiBDKysx
MS4KKyNpZiAhZGVmaW5lZChfX0dYWF9FWFBFUklNRU5UQUxfQ1hYMFhfXykgJiYgIF9fY3BsdXNw
bHVzIDwgMjAxMTAzTCAmJiBfTVNDX1ZFUiA8IDE5MDAKK2NsYXNzIEN4eEV4Y2VwdGlvbkluRGVz
dHJ1Y3RvclRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBUZWFy
RG93blRlc3RDYXNlKCkgeworICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0
aW9uSW5EZXN0cnVjdG9yVGVzdDo6VGVhckRvd25UZXN0Q2FzZSgpICIKKyAgICAgICAgICAgImNh
bGxlZCBhcyBleHBlY3RlZC5cbiIpOworICB9CisKKyBwcm90ZWN0ZWQ6CisgIH5DeHhFeGNlcHRp
b25JbkRlc3RydWN0b3JUZXN0KCkgeworICAgIEdURVNUX1NVUFBSRVNTX1VOUkVBQ0hBQkxFX0NP
REVfV0FSTklOR19CRUxPV18oCisgICAgICAgIHRocm93IHN0ZDo6cnVudGltZV9lcnJvcigiU3Rh
bmRhcmQgQysrIGV4Y2VwdGlvbiIpKTsKKyAgfQorfTsKKworVEVTVF9GKEN4eEV4Y2VwdGlvbklu
RGVzdHJ1Y3RvclRlc3QsIFRocm93c0V4Y2VwdGlvbkluRGVzdHJ1Y3Rvcikge30KKyNlbmRpZiAg
Ly8gQysrMTEgbW9kZQorCitjbGFzcyBDeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0IDog
cHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAgQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVz
dCgpIHsKKyAgICBwcmludGYoIiVzIiwKKyAgICAgICAgICAgIkN4eEV4Y2VwdGlvbkluU2V0VXBU
ZXN0Q2FzZVRlc3QgY29uc3RydWN0b3IgIgorICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVjdGVk
LlxuIik7CisgIH0KKworICBzdGF0aWMgdm9pZCBTZXRVcFRlc3RDYXNlKCkgeworICAgIHRocm93
IHN0ZDo6cnVudGltZV9lcnJvcigiU3RhbmRhcmQgQysrIGV4Y2VwdGlvbiIpOworICB9CisKKyAg
c3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKKyAgICBwcmludGYoIiVzIiwKKyAgICAg
ICAgICAgIkN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3Q6OlRlYXJEb3duVGVzdENhc2Uo
KSAiCisgICAgICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQorCisgcHJvdGVj
dGVkOgorICB+Q3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCgpIHsKKyAgICBwcmludGYo
IiVzIiwKKyAgICAgICAgICAgIkN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3QgZGVzdHJ1
Y3RvciAiCisgICAgICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQorCisgIHZp
cnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICBwcmludGYoIiVzIiwKKyAgICAgICAgICAgIkN4eEV4
Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3Q6OlNldFVwKCkgIgorICAgICAgICAgICAiY2FsbGVk
IGFzIGV4cGVjdGVkLlxuIik7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Cisg
ICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJDeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VU
ZXN0OjpUZWFyRG93bigpICIKKyAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOwor
ICB9Cit9OworCitURVNUX0YoQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCwgVGhyb3dz
RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlKSB7CisgIHByaW50ZigiJXMiLAorICAgICAgICAgIkN4
eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3QgdGVzdCBib2R5ICIKKyAgICAgICAgICJjYWxs
ZWQgYXMgZXhwZWN0ZWQuXG4iKTsKK30KKworY2xhc3MgQ3h4RXhjZXB0aW9uSW5UZWFyRG93blRl
c3RDYXNlVGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2b2lkIFRlYXJE
b3duVGVzdENhc2UoKSB7CisgICAgdGhyb3cgc3RkOjpydW50aW1lX2Vycm9yKCJTdGFuZGFyZCBD
KysgZXhjZXB0aW9uIik7CisgIH0KK307CisKK1RFU1RfRihDeHhFeGNlcHRpb25JblRlYXJEb3du
VGVzdENhc2VUZXN0LCBUaHJvd3NFeGNlcHRpb25JblRlYXJEb3duVGVzdENhc2UpIHt9CisKK2Ns
YXNzIEN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAg
c3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKKyAgICBwcmludGYoIiVzIiwKKyAgICAg
ICAgICAgIkN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0OjpUZWFyRG93blRlc3RDYXNlKCkgIgorICAg
ICAgICAgICAiY2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7CisgIH0KKworIHByb3RlY3RlZDoKKyAg
fkN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0KCkgeworICAgIHByaW50ZigiJXMiLAorICAgICAgICAg
ICAiQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3QgZGVzdHJ1Y3RvciAiCisgICAgICAgICAgICJjYWxs
ZWQgYXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsgdGhy
b3cgc3RkOjpydW50aW1lX2Vycm9yKCJTdGFuZGFyZCBDKysgZXhjZXB0aW9uIik7IH0KKworICB2
aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJD
eHhFeGNlcHRpb25JblNldFVwVGVzdDo6VGVhckRvd24oKSAiCisgICAgICAgICAgICJjYWxsZWQg
YXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQorfTsKKworVEVTVF9GKEN4eEV4Y2VwdGlvbkluU2V0VXBU
ZXN0LCBUaHJvd3NFeGNlcHRpb25JblNldFVwKSB7CisgIEFERF9GQUlMVVJFKCkgPDwgIkN4eEV4
Y2VwdGlvbkluU2V0VXBUZXN0IHRlc3QgYm9keSAiCisgICAgICAgICAgICAgICAgPDwgImNhbGxl
ZCB1bmV4cGVjdGVkbHkuIjsKK30KKworY2xhc3MgQ3h4RXhjZXB0aW9uSW5UZWFyRG93blRlc3Qg
OiBwdWJsaWMgVGVzdCB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNl
KCkgeworICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5UZWFyRG93
blRlc3Q6OlRlYXJEb3duVGVzdENhc2UoKSAiCisgICAgICAgICAgICJjYWxsZWQgYXMgZXhwZWN0
ZWQuXG4iKTsKKyAgfQorCisgcHJvdGVjdGVkOgorICB+Q3h4RXhjZXB0aW9uSW5UZWFyRG93blRl
c3QoKSB7CisgICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJDeHhFeGNlcHRpb25JblRlYXJE
b3duVGVzdCBkZXN0cnVjdG9yICIKKyAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIp
OworICB9CisKKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAgIHRocm93IHN0ZDo6cnVu
dGltZV9lcnJvcigiU3RhbmRhcmQgQysrIGV4Y2VwdGlvbiIpOworICB9Cit9OworCitURVNUX0Yo
Q3h4RXhjZXB0aW9uSW5UZWFyRG93blRlc3QsIFRocm93c0V4Y2VwdGlvbkluVGVhckRvd24pIHt9
CisKK2NsYXNzIEN4eEV4Y2VwdGlvbkluVGVzdEJvZHlUZXN0IDogcHVibGljIFRlc3QgeworIHB1
YmxpYzoKKyAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKKyAgICBwcmludGYoIiVz
IiwKKyAgICAgICAgICAgIkN4eEV4Y2VwdGlvbkluVGVzdEJvZHlUZXN0OjpUZWFyRG93blRlc3RD
YXNlKCkgIgorICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7CisgIH0KKworIHBy
b3RlY3RlZDoKKyAgfkN4eEV4Y2VwdGlvbkluVGVzdEJvZHlUZXN0KCkgeworICAgIHByaW50Zigi
JXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5UZXN0Qm9keVRlc3QgZGVzdHJ1Y3RvciAi
CisgICAgICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQorCisgIHZpcnR1YWwg
dm9pZCBUZWFyRG93bigpIHsKKyAgICBwcmludGYoIiVzIiwKKyAgICAgICAgICAgIkN4eEV4Y2Vw
dGlvbkluVGVzdEJvZHlUZXN0OjpUZWFyRG93bigpICIKKyAgICAgICAgICAgImNhbGxlZCBhcyBl
eHBlY3RlZC5cbiIpOworICB9Cit9OworCitURVNUX0YoQ3h4RXhjZXB0aW9uSW5UZXN0Qm9keVRl
c3QsIFRocm93c1N0ZEN4eEV4Y2VwdGlvbikgeworICB0aHJvdyBzdGQ6OnJ1bnRpbWVfZXJyb3Io
IlN0YW5kYXJkIEMrKyBleGNlcHRpb24iKTsKK30KKworVEVTVChDeHhFeGNlcHRpb25UZXN0LCBU
aHJvd3NOb25TdGRDeHhFeGNlcHRpb24pIHsKKyAgdGhyb3cgIkMtc3RyaW5nIjsKK30KKworLy8g
VGhpcyB0ZXJtaW5hdGUgaGFuZGxlciBhYm9ydHMgdGhlIHByb2dyYW0gdXNpbmcgZXhpdCgpIHJh
dGhlciB0aGFuIGFib3J0KCkuCisvLyBUaGlzIGF2b2lkcyBzaG93aW5nIHBvcC11cHMgb24gV2lu
ZG93cyBzeXN0ZW1zIGFuZCBjb3JlIGR1bXBzIG9uIFVuaXgtbGlrZQorLy8gb25lcy4KK3ZvaWQg
VGVybWluYXRlSGFuZGxlcigpIHsKKyAgZnByaW50ZihzdGRlcnIsICIlc1xuIiwgIlVuaGFuZGxl
ZCBDKysgZXhjZXB0aW9uIHRlcm1pbmF0aW5nIHRoZSBwcm9ncmFtLiIpOworICBmZmx1c2goTlVM
TCk7CisgIGV4aXQoMyk7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0VYQ0VQVElPTlMKKwor
aW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CisjaWYgR1RFU1RfSEFTX0VYQ0VQVElP
TlMKKyAgc3RkOjpzZXRfdGVybWluYXRlKCZUZXJtaW5hdGVIYW5kbGVyKTsKKyNlbmRpZgorICB0
ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisgIHJldHVybiBSVU5fQUxMX1RF
U1RTKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X2NvbG9yX3Rlc3Qu
cHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2ds
ZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHkKbmV3IGZpbGUgbW9kZSAx
MDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDAy
YTUzZWQ4NTdjNzRjODAwYmNjZDY3YmM0MThhNTFhMDlkNjkzNwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weQpAQCAtMCwwICsxLDEzMCBAQAor
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgor
IyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
IyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiVmVyaWZpZXMg
dGhhdCBHb29nbGUgVGVzdCBjb3JyZWN0bHkgZGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHVzZSBjb2xv
cnMuIiIiCisKK19fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCisK
K2ltcG9ydCBvcworaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKKworCitJU19XSU5ET1dTID0gb3Mu
bmFtZSA9ICdudCcKKworQ09MT1JfRU5WX1ZBUiA9ICdHVEVTVF9DT0xPUicKK0NPTE9SX0ZMQUcg
PSAnZ3Rlc3RfY29sb3InCitDT01NQU5EID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0
YWJsZVBhdGgoJ2d0ZXN0X2NvbG9yX3Rlc3RfJykKKworCitkZWYgU2V0RW52VmFyKGVudl92YXIs
IHZhbHVlKToKKyAgIiIiU2V0cyB0aGUgZW52IHZhcmlhYmxlIHRvICd2YWx1ZSc7IHVuc2V0cyBp
dCB3aGVuICd2YWx1ZScgaXMgTm9uZS4iIiIKKworICBpZiB2YWx1ZSBpcyBub3QgTm9uZToKKyAg
ICBvcy5lbnZpcm9uW2Vudl92YXJdID0gdmFsdWUKKyAgZWxpZiBlbnZfdmFyIGluIG9zLmVudmly
b246CisgICAgZGVsIG9zLmVudmlyb25bZW52X3Zhcl0KKworCitkZWYgVXNlc0NvbG9yKHRlcm0s
IGNvbG9yX2Vudl92YXIsIGNvbG9yX2ZsYWcpOgorICAiIiJSdW5zIGd0ZXN0X2NvbG9yX3Rlc3Rf
IGFuZCByZXR1cm5zIGl0cyBleGl0IGNvZGUuIiIiCisKKyAgU2V0RW52VmFyKCdURVJNJywgdGVy
bSkKKyAgU2V0RW52VmFyKENPTE9SX0VOVl9WQVIsIGNvbG9yX2Vudl92YXIpCisKKyAgaWYgY29s
b3JfZmxhZyBpcyBOb25lOgorICAgIGFyZ3MgPSBbXQorICBlbHNlOgorICAgIGFyZ3MgPSBbJy0t
JXM9JXMnICUgKENPTE9SX0ZMQUcsIGNvbG9yX2ZsYWcpXQorICBwID0gZ3Rlc3RfdGVzdF91dGls
cy5TdWJwcm9jZXNzKFtDT01NQU5EXSArIGFyZ3MpCisgIHJldHVybiBub3QgcC5leGl0ZWQgb3Ig
cC5leGl0X2NvZGUKKworCitjbGFzcyBHVGVzdENvbG9yVGVzdChndGVzdF90ZXN0X3V0aWxzLlRl
c3RDYXNlKToKKyAgZGVmIHRlc3ROb0VudlZhck5vRmxhZyhzZWxmKToKKyAgICAiIiJUZXN0cyB0
aGUgY2FzZSB3aGVuIHRoZXJlJ3MgbmVpdGhlciBHVEVTVF9DT0xPUiBub3IgLS1ndGVzdF9jb2xv
ci4iIiIKKworICAgIGlmIG5vdCBJU19XSU5ET1dTOgorICAgICAgc2VsZi5hc3NlcnRfKG5vdCBV
c2VzQ29sb3IoJ2R1bWInLCBOb25lLCBOb25lKSkKKyAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNl
c0NvbG9yKCdlbWFjcycsIE5vbmUsIE5vbmUpKQorICAgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2Vz
Q29sb3IoJ3h0ZXJtLW1vbm8nLCBOb25lLCBOb25lKSkKKyAgICAgIHNlbGYuYXNzZXJ0Xyhub3Qg
VXNlc0NvbG9yKCd1bmtub3duJywgTm9uZSwgTm9uZSkpCisgICAgICBzZWxmLmFzc2VydF8obm90
IFVzZXNDb2xvcihOb25lLCBOb25lLCBOb25lKSkKKyAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9y
KCdsaW51eCcsIE5vbmUsIE5vbmUpKQorICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ2N5Z3dp
bicsIE5vbmUsIE5vbmUpKQorICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ3h0ZXJtJywgTm9u
ZSwgTm9uZSkpCisgICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcigneHRlcm0tY29sb3InLCBOb25l
LCBOb25lKSkKKyAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCd4dGVybS0yNTZjb2xvcicsIE5v
bmUsIE5vbmUpKQorCisgIGRlZiB0ZXN0RmxhZ09ubHkoc2VsZik6CisgICAgIiIiVGVzdHMgdGhl
IGNhc2Ugd2hlbiB0aGVyZSdzIC0tZ3Rlc3RfY29sb3IgYnV0IG5vdCBHVEVTVF9DT0xPUi4iIiIK
KworICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCdkdW1iJywgTm9uZSwgJ25vJykpCisg
ICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ3h0ZXJtLWNvbG9yJywgTm9uZSwgJ25vJykp
CisgICAgaWYgbm90IElTX1dJTkRPV1M6CisgICAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xv
cignZW1hY3MnLCBOb25lLCAnYXV0bycpKQorICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ3h0
ZXJtJywgTm9uZSwgJ2F1dG8nKSkKKyAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCdkdW1iJywg
Tm9uZSwgJ3llcycpKQorICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ3h0ZXJtJywgTm9uZSwg
J3llcycpKQorCisgIGRlZiB0ZXN0RW52VmFyT25seShzZWxmKToKKyAgICAiIiJUZXN0cyB0aGUg
Y2FzZSB3aGVuIHRoZXJlJ3MgR1RFU1RfQ09MT1IgYnV0IG5vdCAtLWd0ZXN0X2NvbG9yLiIiIgor
CisgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ2R1bWInLCAnbm8nLCBOb25lKSkKKyAg
ICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcigneHRlcm0tY29sb3InLCAnbm8nLCBOb25lKSkK
KyAgICBpZiBub3QgSVNfV0lORE9XUzoKKyAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9y
KCdkdW1iJywgJ2F1dG8nLCBOb25lKSkKKyAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCd4dGVy
bS1jb2xvcicsICdhdXRvJywgTm9uZSkpCisgICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcignZHVt
YicsICd5ZXMnLCBOb25lKSkKKyAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCd4dGVybS1jb2xv
cicsICd5ZXMnLCBOb25lKSkKKworICBkZWYgdGVzdEVudlZhckFuZEZsYWcoc2VsZik6CisgICAg
IiIiVGVzdHMgdGhlIGNhc2Ugd2hlbiB0aGVyZSBhcmUgYm90aCBHVEVTVF9DT0xPUiBhbmQgLS1n
dGVzdF9jb2xvci4iIiIKKworICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCd4dGVybS1j
b2xvcicsICdubycsICdubycpKQorICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ2R1bWInLCAn
bm8nLCAneWVzJykpCisgICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcigneHRlcm0tY29sb3InLCAn
bm8nLCAnYXV0bycpKQorCisgIGRlZiB0ZXN0QWxpYXNlc09mWWVzQW5kTm8oc2VsZik6CisgICAg
IiIiVGVzdHMgdXNpbmcgYWxpYXNlcyBpbiBzcGVjaWZ5aW5nIC0tZ3Rlc3RfY29sb3IuIiIiCisK
KyAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCdkdW1iJywgTm9uZSwgJ3RydWUnKSkKKyAgICBz
ZWxmLmFzc2VydF8oVXNlc0NvbG9yKCdkdW1iJywgTm9uZSwgJ1lFUycpKQorICAgIHNlbGYuYXNz
ZXJ0XyhVc2VzQ29sb3IoJ2R1bWInLCBOb25lLCAnVCcpKQorICAgIHNlbGYuYXNzZXJ0XyhVc2Vz
Q29sb3IoJ2R1bWInLCBOb25lLCAnMScpKQorCisgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29s
b3IoJ3h0ZXJtJywgTm9uZSwgJ2YnKSkKKyAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcign
eHRlcm0nLCBOb25lLCAnZmFsc2UnKSkKKyAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcign
eHRlcm0nLCBOb25lLCAnMCcpKQorICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCd4dGVy
bScsIE5vbmUsICd1bmtub3duJykpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAg
Z3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rl
c3RfY29sb3JfdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X2NvbG9yX3Rlc3RfLmNj
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmY2MWViYjg5Yjg0ZThlMDNlNWVmZGQ0MTMyNDA2MTEzNzZhZmU2YTAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X2NvbG9yX3Rlc3RfLmNjCkBA
IC0wLDAgKzEsNzEgQEAKKy8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgorLy8gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1l
dDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisv
LworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKy8vCisvLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisKKy8vIEEg
aGVscGVyIHByb2dyYW0gZm9yIHRlc3RpbmcgaG93IEdvb2dsZSBUZXN0IGRldGVybWluZXMgd2hl
dGhlciB0byB1c2UKKy8vIGNvbG9ycyBpbiB0aGUgb3V0cHV0LiAgSXQgcHJpbnRzICJZRVMiIGFu
ZCByZXR1cm5zIDEgaWYgR29vZ2xlIFRlc3QKKy8vIGRlY2lkZXMgdG8gdXNlIGNvbG9ycywgYW5k
IHByaW50cyAiTk8iIGFuZCByZXR1cm5zIDAgb3RoZXJ3aXNlLgorCisjaW5jbHVkZSA8c3RkaW8u
aD4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKy8vIEluZGljYXRlcyB0aGF0IHRoaXMg
dHJhbnNsYXRpb24gdW5pdCBpcyBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MKKy8vIGltcGxlbWVudGF0
aW9uLiAgSXQgbXVzdCBjb21lIGJlZm9yZSBndGVzdC1pbnRlcm5hbC1pbmwuaCBpcworLy8gaW5j
bHVkZWQsIG9yIHRoZXJlIHdpbGwgYmUgYSBjb21waWxlciBlcnJvci4gIFRoaXMgdHJpY2sgaXMg
dG8KKy8vIHByZXZlbnQgYSB1c2VyIGZyb20gYWNjaWRlbnRhbGx5IGluY2x1ZGluZyBndGVzdC1p
bnRlcm5hbC1pbmwuaCBpbgorLy8gaGlzIGNvZGUuCisjZGVmaW5lIEdURVNUX0lNUExFTUVOVEFU
SU9OXyAxCisjaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgorI3VuZGVmIEdURVNU
X0lNUExFTUVOVEFUSU9OXworCit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U2hvdWxkVXNlQ29s
b3I7CisKKy8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgdGhlIFVuaXRU
ZXN0IHNpbmdsZXRvbiBpcworLy8gY3JlYXRlZCBiZWZvcmUgbWFpbigpIGlzIGVudGVyZWQsIGFu
ZCB0aHVzIHRoYXQgU2hvdWxkVXNlQ29sb3IoKQorLy8gd29ya3MgdGhlIHNhbWUgd2F5IGFzIGlu
IGEgcmVhbCBHb29nbGUtVGVzdC1iYXNlZCB0ZXN0LiAgV2UgZG9uJ3QgYWN0dWFsCisvLyBydW4g
dGhlIFRFU1QgaXRzZWxmLgorVEVTVChHVGVzdENvbG9yVGVzdCwgRHVtbXkpIHsKK30KKworaW50
IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CisgIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0
KCZhcmdjLCBhcmd2KTsKKworICBpZiAoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpIHsKKyAgICAvLyBH
b29nbGUgVGVzdCBkZWNpZGVzIHRvIHVzZSBjb2xvcnMgaW4gdGhlIG91dHB1dCAoYXNzdW1pbmcg
aXQKKyAgICAvLyBnb2VzIHRvIGEgVFRZKS4KKyAgICBwcmludGYoIllFU1xuIik7CisgICAgcmV0
dXJuIDE7CisgIH0gZWxzZSB7CisgICAgLy8gR29vZ2xlIFRlc3QgZGVjaWRlcyBub3QgdG8gdXNl
IGNvbG9ycyBpbiB0aGUgb3V0cHV0LgorICAgIHByaW50ZigiTk9cbiIpOworICAgIHJldHVybiAw
OworICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X2Vudl92YXJfdGVz
dC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfZW52X3Zhcl90ZXN0LnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQyNDA3NWNmYTM3NDc2Y2NkOGM3ZDRmZjAyNzJiMjdkODg3ODcxM2UKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2ds
ZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X2Vudl92YXJfdGVzdC5weQpAQCAtMCwwICsxLDEx
NyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDA4LCBHb29nbGUg
SW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiVmVy
aWZpZXMgdGhhdCBHb29nbGUgVGVzdCBjb3JyZWN0bHkgcGFyc2VzIGVudmlyb25tZW50IHZhcmlh
Ymxlcy4iIiIKKworX19hdXRob3JfXyA9ICd3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKScK
KworaW1wb3J0IG9zCitpbXBvcnQgZ3Rlc3RfdGVzdF91dGlscworCisKK0lTX1dJTkRPV1MgPSBv
cy5uYW1lID09ICdudCcKK0lTX0xJTlVYID0gb3MubmFtZSA9PSAncG9zaXgnIGFuZCBvcy51bmFt
ZSgpWzBdID09ICdMaW51eCcKKworQ09NTUFORCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4
ZWN1dGFibGVQYXRoKCdndGVzdF9lbnZfdmFyX3Rlc3RfJykKKworZW52aXJvbiA9IG9zLmVudmly
b24uY29weSgpCisKKworZGVmIEFzc2VydEVxKGV4cGVjdGVkLCBhY3R1YWwpOgorICBpZiBleHBl
Y3RlZCAhPSBhY3R1YWw6CisgICAgcHJpbnQoJ0V4cGVjdGVkOiAlcycgJSAoZXhwZWN0ZWQsKSkK
KyAgICBwcmludCgnICBBY3R1YWw6ICVzJyAlIChhY3R1YWwsKSkKKyAgICByYWlzZSBBc3NlcnRp
b25FcnJvcgorCisKK2RlZiBTZXRFbnZWYXIoZW52X3ZhciwgdmFsdWUpOgorICAiIiJTZXRzIHRo
ZSBlbnYgdmFyaWFibGUgdG8gJ3ZhbHVlJzsgdW5zZXRzIGl0IHdoZW4gJ3ZhbHVlJyBpcyBOb25l
LiIiIgorCisgIGlmIHZhbHVlIGlzIG5vdCBOb25lOgorICAgIGVudmlyb25bZW52X3Zhcl0gPSB2
YWx1ZQorICBlbGlmIGVudl92YXIgaW4gZW52aXJvbjoKKyAgICBkZWwgZW52aXJvbltlbnZfdmFy
XQorCisKK2RlZiBHZXRGbGFnKGZsYWcpOgorICAiIiJSdW5zIGd0ZXN0X2Vudl92YXJfdGVzdF8g
YW5kIHJldHVybnMgaXRzIG91dHB1dC4iIiIKKworICBhcmdzID0gW0NPTU1BTkRdCisgIGlmIGZs
YWcgaXMgbm90IE5vbmU6CisgICAgYXJncyArPSBbZmxhZ10KKyAgcmV0dXJuIGd0ZXN0X3Rlc3Rf
dXRpbHMuU3VicHJvY2VzcyhhcmdzLCBlbnY9ZW52aXJvbikub3V0cHV0CisKKworZGVmIFRlc3RG
bGFnKGZsYWcsIHRlc3RfdmFsLCBkZWZhdWx0X3ZhbCk6CisgICIiIlZlcmlmaWVzIHRoYXQgdGhl
IGdpdmVuIGZsYWcgaXMgYWZmZWN0ZWQgYnkgdGhlIGNvcnJlc3BvbmRpbmcgZW52IHZhci4iIiIK
KworICBlbnZfdmFyID0gJ0dURVNUXycgKyBmbGFnLnVwcGVyKCkKKyAgU2V0RW52VmFyKGVudl92
YXIsIHRlc3RfdmFsKQorICBBc3NlcnRFcSh0ZXN0X3ZhbCwgR2V0RmxhZyhmbGFnKSkKKyAgU2V0
RW52VmFyKGVudl92YXIsIE5vbmUpCisgIEFzc2VydEVxKGRlZmF1bHRfdmFsLCBHZXRGbGFnKGZs
YWcpKQorCisKK2NsYXNzIEdUZXN0RW52VmFyVGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNl
KToKKyAgZGVmIHRlc3RFbnZWYXJBZmZlY3RzRmxhZyhzZWxmKToKKyAgICAiIiJUZXN0cyB0aGF0
IGVudmlyb25tZW50IHZhcmlhYmxlIHNob3VsZCBhZmZlY3QgdGhlIGNvcnJlc3BvbmRpbmcgZmxh
Zy4iIiIKKworICAgIFRlc3RGbGFnKCdicmVha19vbl9mYWlsdXJlJywgJzEnLCAnMCcpCisgICAg
VGVzdEZsYWcoJ2NvbG9yJywgJ3llcycsICdhdXRvJykKKyAgICBUZXN0RmxhZygnZmlsdGVyJywg
J0Zvb1Rlc3QuQmFyJywgJyonKQorICAgIFNldEVudlZhcignWE1MX09VVFBVVF9GSUxFJywgTm9u
ZSkgIyBGb3IgJ291dHB1dCcgdGVzdAorICAgIFRlc3RGbGFnKCdvdXRwdXQnLCAneG1sOnRtcC9m
b28ueG1sJywgJycpCisgICAgVGVzdEZsYWcoJ3ByaW50X3RpbWUnLCAnMCcsICcxJykKKyAgICBU
ZXN0RmxhZygncmVwZWF0JywgJzk5OScsICcxJykKKyAgICBUZXN0RmxhZygndGhyb3dfb25fZmFp
bHVyZScsICcxJywgJzAnKQorICAgIFRlc3RGbGFnKCdkZWF0aF90ZXN0X3N0eWxlJywgJ3RocmVh
ZHNhZmUnLCAnZmFzdCcpCisgICAgVGVzdEZsYWcoJ2NhdGNoX2V4Y2VwdGlvbnMnLCAnMCcsICcx
JykKKworICAgIGlmIElTX0xJTlVYOgorICAgICAgVGVzdEZsYWcoJ2RlYXRoX3Rlc3RfdXNlX2Zv
cmsnLCAnMScsICcwJykKKyAgICAgIFRlc3RGbGFnKCdzdGFja190cmFjZV9kZXB0aCcsICcwJywg
JzEwMCcpCisKKyAgZGVmIHRlc3RYbWxPdXRwdXRGaWxlKHNlbGYpOgorICAgICIiIlRlc3RzIHRo
YXQgJFhNTF9PVVRQVVRfRklMRSBhZmZlY3RzIHRoZSBvdXRwdXQgZmxhZy4iIiIKKworICAgIFNl
dEVudlZhcignR1RFU1RfT1VUUFVUJywgTm9uZSkKKyAgICBTZXRFbnZWYXIoJ1hNTF9PVVRQVVRf
RklMRScsICd0bXAvYmFyLnhtbCcpCisgICAgQXNzZXJ0RXEoJ3htbDp0bXAvYmFyLnhtbCcsIEdl
dEZsYWcoJ291dHB1dCcpKQorCisgIGRlZiB0ZXN0WG1sT3V0cHV0RmlsZU92ZXJyaWRlKHNlbGYp
OgorICAgICIiIlRlc3RzIHRoYXQgJFhNTF9PVVRQVVRfRklMRSBpcyBvdmVycmlkZGVuIGJ5ICRH
VEVTVF9PVVRQVVQiIiIKKworICAgIFNldEVudlZhcignR1RFU1RfT1VUUFVUJywgJ3htbDp0bXAv
Zm9vLnhtbCcpCisgICAgU2V0RW52VmFyKCdYTUxfT1VUUFVUX0ZJTEUnLCAndG1wL2Jhci54bWwn
KQorICAgIEFzc2VydEVxKCd4bWw6dG1wL2Zvby54bWwnLCBHZXRGbGFnKCdvdXRwdXQnKSkKKwor
aWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfZW52X3Zhcl90ZXN0Xy5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGV0ZXN0L3Rlc3QvZ3Rlc3RfZW52X3Zhcl90ZXN0Xy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MzlhZmM5Njgz
N2UzZTczNmQwODFiYjIwYTQzNjRlNWRlODU2Zjk3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZXRlc3QvdGVzdC9ndGVzdF9lbnZfdmFyX3Rlc3RfLmNjCkBAIC0wLDAgKzEsMTI2IEBACisvLyBD
b3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLwor
Ly8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3Ry
aWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8v
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gQXV0aG9yOiB3
YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorCisvLyBBIGhlbHBlciBwcm9ncmFtIGZvciB0
ZXN0aW5nIHRoYXQgR29vZ2xlIFRlc3QgcGFyc2VzIHRoZSBlbnZpcm9ubWVudAorLy8gdmFyaWFi
bGVzIGNvcnJlY3RseS4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKyNpbmNsdWRlIDxp
b3N0cmVhbT4KKworI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8gMQorI2luY2x1ZGUgInNy
Yy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKKyN1bmRlZiBHVEVTVF9JTVBMRU1FTlRBVElPTl8KKwor
dXNpbmcgOjpzdGQ6OmNvdXQ7CisKK25hbWVzcGFjZSB0ZXN0aW5nIHsKKworLy8gVGhlIHB1cnBv
c2Ugb2YgdGhpcyBpcyB0byBtYWtlIHRoZSB0ZXN0IG1vcmUgcmVhbGlzdGljIGJ5IGVuc3VyaW5n
CisvLyB0aGF0IHRoZSBVbml0VGVzdCBzaW5nbGV0b24gaXMgY3JlYXRlZCBiZWZvcmUgbWFpbigp
IGlzIGVudGVyZWQuCisvLyBXZSBkb24ndCBhY3R1YWwgcnVuIHRoZSBURVNUIGl0c2VsZi4KK1RF
U1QoR1Rlc3RFbnZWYXJUZXN0LCBEdW1teSkgeworfQorCit2b2lkIFByaW50RmxhZyhjb25zdCBj
aGFyKiBmbGFnKSB7CisgIGlmIChzdHJjbXAoZmxhZywgImJyZWFrX29uX2ZhaWx1cmUiKSA9PSAw
KSB7CisgICAgY291dCA8PCBHVEVTVF9GTEFHKGJyZWFrX29uX2ZhaWx1cmUpOworICAgIHJldHVy
bjsKKyAgfQorCisgIGlmIChzdHJjbXAoZmxhZywgImNhdGNoX2V4Y2VwdGlvbnMiKSA9PSAwKSB7
CisgICAgY291dCA8PCBHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpOworICAgIHJldHVybjsK
KyAgfQorCisgIGlmIChzdHJjbXAoZmxhZywgImNvbG9yIikgPT0gMCkgeworICAgIGNvdXQgPDwg
R1RFU1RfRkxBRyhjb2xvcik7CisgICAgcmV0dXJuOworICB9CisKKyAgaWYgKHN0cmNtcChmbGFn
LCAiZGVhdGhfdGVzdF9zdHlsZSIpID09IDApIHsKKyAgICBjb3V0IDw8IEdURVNUX0ZMQUcoZGVh
dGhfdGVzdF9zdHlsZSk7CisgICAgcmV0dXJuOworICB9CisKKyAgaWYgKHN0cmNtcChmbGFnLCAi
ZGVhdGhfdGVzdF91c2VfZm9yayIpID09IDApIHsKKyAgICBjb3V0IDw8IEdURVNUX0ZMQUcoZGVh
dGhfdGVzdF91c2VfZm9yayk7CisgICAgcmV0dXJuOworICB9CisKKyAgaWYgKHN0cmNtcChmbGFn
LCAiZmlsdGVyIikgPT0gMCkgeworICAgIGNvdXQgPDwgR1RFU1RfRkxBRyhmaWx0ZXIpOworICAg
IHJldHVybjsKKyAgfQorCisgIGlmIChzdHJjbXAoZmxhZywgIm91dHB1dCIpID09IDApIHsKKyAg
ICBjb3V0IDw8IEdURVNUX0ZMQUcob3V0cHV0KTsKKyAgICByZXR1cm47CisgIH0KKworICBpZiAo
c3RyY21wKGZsYWcsICJwcmludF90aW1lIikgPT0gMCkgeworICAgIGNvdXQgPDwgR1RFU1RfRkxB
RyhwcmludF90aW1lKTsKKyAgICByZXR1cm47CisgIH0KKworICBpZiAoc3RyY21wKGZsYWcsICJy
ZXBlYXQiKSA9PSAwKSB7CisgICAgY291dCA8PCBHVEVTVF9GTEFHKHJlcGVhdCk7CisgICAgcmV0
dXJuOworICB9CisKKyAgaWYgKHN0cmNtcChmbGFnLCAic3RhY2tfdHJhY2VfZGVwdGgiKSA9PSAw
KSB7CisgICAgY291dCA8PCBHVEVTVF9GTEFHKHN0YWNrX3RyYWNlX2RlcHRoKTsKKyAgICByZXR1
cm47CisgIH0KKworICBpZiAoc3RyY21wKGZsYWcsICJ0aHJvd19vbl9mYWlsdXJlIikgPT0gMCkg
eworICAgIGNvdXQgPDwgR1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKTsKKyAgICByZXR1cm47
CisgIH0KKworICBjb3V0IDw8ICJJbnZhbGlkIGZsYWcgbmFtZSAiIDw8IGZsYWcKKyAgICAgICA8
PCAiLiAgVmFsaWQgbmFtZXMgYXJlIGJyZWFrX29uX2ZhaWx1cmUsIGNvbG9yLCBmaWx0ZXIsIGV0
Yy5cbiI7CisgIGV4aXQoMSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCisKK2ludCBt
YWluKGludCBhcmdjLCBjaGFyKiogYXJndikgeworICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgm
YXJnYywgYXJndik7CisKKyAgaWYgKGFyZ2MgIT0gMikgeworICAgIGNvdXQgPDwgIlVzYWdlOiBn
dGVzdF9lbnZfdmFyX3Rlc3RfIE5BTUVfT0ZfRkxBR1xuIjsKKyAgICByZXR1cm4gMTsKKyAgfQor
CisgIHRlc3Rpbmc6OlByaW50RmxhZyhhcmd2WzFdKTsKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2ds
ZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X2Vudmlyb25tZW50X3Rlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC90ZXN0L2d0ZXN0X2Vudmlyb25tZW50X3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2NmZjE5ZTcw
ZWRjY2EwZDI2MjE0NWVkZTU4MTBhZTlhMDc0MzdhOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGV0ZXN0L3Rlc3QvZ3Rlc3RfZW52aXJvbm1lbnRfdGVzdC5jYwpAQCAtMCwwICsxLDE5MiBAQAor
Ly8gQ29weXJpZ2h0IDIwMDcsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBk
aXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8g
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEF1dGhv
cjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKy8vCisvLyBUZXN0cyB1c2luZyBnbG9i
YWwgdGVzdCBlbnZpcm9ubWVudHMuCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxz
dGRpby5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKyNkZWZpbmUgR1RFU1RfSU1QTEVN
RU5UQVRJT05fIDEgIC8vIFJlcXVpcmVkIGZvciB0aGUgbmV4dCAjaW5jbHVkZS4KKyNpbmNsdWRl
ICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCisjdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05f
CisKK25hbWVzcGFjZSB0ZXN0aW5nIHsKK0dURVNUX0RFQ0xBUkVfc3RyaW5nXyhmaWx0ZXIpOwor
fQorCituYW1lc3BhY2UgeworCitlbnVtIEZhaWx1cmVUeXBlIHsKKyAgTk9fRkFJTFVSRSwgTk9O
X0ZBVEFMX0ZBSUxVUkUsIEZBVEFMX0ZBSUxVUkUKK307CisKKy8vIEZvciB0ZXN0aW5nIHVzaW5n
IGdsb2JhbCB0ZXN0IGVudmlyb25tZW50cy4KK2NsYXNzIE15RW52aXJvbm1lbnQgOiBwdWJsaWMg
dGVzdGluZzo6RW52aXJvbm1lbnQgeworIHB1YmxpYzoKKyAgTXlFbnZpcm9ubWVudCgpIHsgUmVz
ZXQoKTsgfQorCisgIC8vIERlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgZmFpbHVyZV9pbl9zZXRf
dXBfLCBTZXRVcCgpIHdpbGwKKyAgLy8gZ2VuZXJhdGUgYSBub24tZmF0YWwgZmFpbHVyZSwgZ2Vu
ZXJhdGUgYSBmYXRhbCBmYWlsdXJlLCBvcgorICAvLyBzdWNjZWVkLgorICB2aXJ0dWFsIHZvaWQg
U2V0VXAoKSB7CisgICAgc2V0X3VwX3dhc19ydW5fID0gdHJ1ZTsKKworICAgIHN3aXRjaCAoZmFp
bHVyZV9pbl9zZXRfdXBfKSB7CisgICAgICBjYXNlIE5PTl9GQVRBTF9GQUlMVVJFOgorICAgICAg
ICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZSBpbiBnbG9iYWwg
c2V0LXVwLiI7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBGQVRBTF9GQUlMVVJFOgorICAg
ICAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUgaW4gZ2xvYmFsIHNldC11cC4i
OworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgfQorCisgIC8vIEdlbmVyYXRlcyBhIG5vbi1mYXRhbCBmYWlsdXJlLgorICB2aXJ0dWFsIHZv
aWQgVGVhckRvd24oKSB7CisgICAgdGVhcl9kb3duX3dhc19ydW5fID0gdHJ1ZTsKKyAgICBBRERf
RkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZSBpbiBnbG9iYWwgdGVhci1k
b3duLiI7CisgIH0KKworICAvLyBSZXNldHMgdGhlIHN0YXRlIG9mIHRoZSBlbnZpcm9ubWVudCBz
LnQuIGl0IGNhbiBiZSByZXVzZWQuCisgIHZvaWQgUmVzZXQoKSB7CisgICAgZmFpbHVyZV9pbl9z
ZXRfdXBfID0gTk9fRkFJTFVSRTsKKyAgICBzZXRfdXBfd2FzX3J1bl8gPSBmYWxzZTsKKyAgICB0
ZWFyX2Rvd25fd2FzX3J1bl8gPSBmYWxzZTsKKyAgfQorCisgIC8vIFdlIGNhbGwgdGhpcyBmdW5j
dGlvbiB0byBzZXQgdGhlIHR5cGUgb2YgZmFpbHVyZSBTZXRVcCgpIHNob3VsZAorICAvLyBnZW5l
cmF0ZS4KKyAgdm9pZCBzZXRfZmFpbHVyZV9pbl9zZXRfdXAoRmFpbHVyZVR5cGUgdHlwZSkgewor
ICAgIGZhaWx1cmVfaW5fc2V0X3VwXyA9IHR5cGU7CisgIH0KKworICAvLyBXYXMgU2V0VXAoKSBy
dW4/CisgIGJvb2wgc2V0X3VwX3dhc19ydW4oKSBjb25zdCB7IHJldHVybiBzZXRfdXBfd2FzX3J1
bl87IH0KKworICAvLyBXYXMgVGVhckRvd24oKSBydW4/CisgIGJvb2wgdGVhcl9kb3duX3dhc19y
dW4oKSBjb25zdCB7IHJldHVybiB0ZWFyX2Rvd25fd2FzX3J1bl87IH0KKworIHByaXZhdGU6Cisg
IEZhaWx1cmVUeXBlIGZhaWx1cmVfaW5fc2V0X3VwXzsKKyAgYm9vbCBzZXRfdXBfd2FzX3J1bl87
CisgIGJvb2wgdGVhcl9kb3duX3dhc19ydW5fOworfTsKKworLy8gV2FzIHRoZSBURVNUIHJ1bj8K
K2Jvb2wgdGVzdF93YXNfcnVuOworCisvLyBUaGUgc29sZSBwdXJwb3NlIG9mIHRoaXMgVEVTVCBp
cyB0byBlbmFibGUgdXMgdG8gY2hlY2sgd2hldGhlciBpdAorLy8gd2FzIHJ1bi4KK1RFU1QoRm9v
VGVzdCwgQmFyKSB7CisgIHRlc3Rfd2FzX3J1biA9IHRydWU7Cit9CisKKy8vIFByaW50cyB0aGUg
bWVzc2FnZSBhbmQgYWJvcnRzIHRoZSBwcm9ncmFtIGlmIGNvbmRpdGlvbiBpcyBmYWxzZS4KK3Zv
aWQgQ2hlY2soYm9vbCBjb25kaXRpb24sIGNvbnN0IGNoYXIqIG1zZykgeworICBpZiAoIWNvbmRp
dGlvbikgeworICAgIHByaW50ZigiRkFJTEVEOiAlc1xuIiwgbXNnKTsKKyAgICB0ZXN0aW5nOjpp
bnRlcm5hbDo6cG9zaXg6OkFib3J0KCk7CisgIH0KK30KKworLy8gUnVucyB0aGUgdGVzdHMuICBS
ZXR1cm4gdHJ1ZSBpZmYgc3VjY2Vzc2Z1bC4KKy8vCisvLyBUaGUgJ2ZhaWx1cmUnIHBhcmFtZXRl
ciBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgZmFpbHVyZSB0aGF0IHNob3VsZAorLy8gYmUgZ2VuZXJh
dGVkIGJ5IHRoZSBnbG9iYWwgc2V0LXVwLgoraW50IFJ1bkFsbFRlc3RzKE15RW52aXJvbm1lbnQq
IGVudiwgRmFpbHVyZVR5cGUgZmFpbHVyZSkgeworICBlbnYtPlJlc2V0KCk7CisgIGVudi0+c2V0
X2ZhaWx1cmVfaW5fc2V0X3VwKGZhaWx1cmUpOworICB0ZXN0X3dhc19ydW4gPSBmYWxzZTsKKyAg
dGVzdGluZzo6aW50ZXJuYWw6OkdldFVuaXRUZXN0SW1wbCgpLT5DbGVhckFkSG9jVGVzdFJlc3Vs
dCgpOworICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworfQorCit9ICAvLyBuYW1lc3BhY2UKKwor
aW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CisgIHRlc3Rpbmc6OkluaXRHb29nbGVU
ZXN0KCZhcmdjLCBhcmd2KTsKKworICAvLyBSZWdpc3RlcnMgYSBnbG9iYWwgdGVzdCBlbnZpcm9u
bWVudCwgYW5kIHZlcmlmaWVzIHRoYXQgdGhlCisgIC8vIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbiBy
ZXR1cm5zIGl0cyBhcmd1bWVudC4KKyAgTXlFbnZpcm9ubWVudCogY29uc3QgZW52ID0gbmV3IE15
RW52aXJvbm1lbnQ7CisgIENoZWNrKHRlc3Rpbmc6OkFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChl
bnYpID09IGVudiwKKyAgICAgICAgIkFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudCgpIHNob3VsZCBy
ZXR1cm4gaXRzIGFyZ3VtZW50LiIpOworCisgIC8vIFZlcmlmaWVzIHRoYXQgUlVOX0FMTF9URVNU
UygpIHJ1bnMgdGhlIHRlc3RzIHdoZW4gdGhlIGdsb2JhbAorICAvLyBzZXQtdXAgaXMgc3VjY2Vz
c2Z1bC4KKyAgQ2hlY2soUnVuQWxsVGVzdHMoZW52LCBOT19GQUlMVVJFKSAhPSAwLAorICAgICAg
ICAiUlVOX0FMTF9URVNUUygpIHNob3VsZCByZXR1cm4gbm9uLXplcm8sIGFzIHRoZSBnbG9iYWwg
dGVhci1kb3duICIKKyAgICAgICAgInNob3VsZCBnZW5lcmF0ZSBhIGZhaWx1cmUuIik7CisgIENo
ZWNrKHRlc3Rfd2FzX3J1biwKKyAgICAgICAgIlRoZSB0ZXN0cyBzaG91bGQgcnVuLCBhcyB0aGUg
Z2xvYmFsIHNldC11cCBzaG91bGQgZ2VuZXJhdGUgbm8gIgorICAgICAgICAiZmFpbHVyZSIpOwor
ICBDaGVjayhlbnYtPnRlYXJfZG93bl93YXNfcnVuKCksCisgICAgICAgICJUaGUgZ2xvYmFsIHRl
YXItZG93biBzaG91bGQgcnVuLCBhcyB0aGUgZ2xvYmFsIHNldC11cCB3YXMgcnVuLiIpOworCisg
IC8vIFZlcmlmaWVzIHRoYXQgUlVOX0FMTF9URVNUUygpIHJ1bnMgdGhlIHRlc3RzIHdoZW4gdGhl
IGdsb2JhbAorICAvLyBzZXQtdXAgZ2VuZXJhdGVzIG5vIGZhdGFsIGZhaWx1cmUuCisgIENoZWNr
KFJ1bkFsbFRlc3RzKGVudiwgTk9OX0ZBVEFMX0ZBSUxVUkUpICE9IDAsCisgICAgICAgICJSVU5f
QUxMX1RFU1RTKCkgc2hvdWxkIHJldHVybiBub24temVybywgYXMgYm90aCB0aGUgZ2xvYmFsIHNl
dC11cCAiCisgICAgICAgICJhbmQgdGhlIGdsb2JhbCB0ZWFyLWRvd24gc2hvdWxkIGdlbmVyYXRl
IGEgbm9uLWZhdGFsIGZhaWx1cmUuIik7CisgIENoZWNrKHRlc3Rfd2FzX3J1biwKKyAgICAgICAg
IlRoZSB0ZXN0cyBzaG91bGQgcnVuLCBhcyB0aGUgZ2xvYmFsIHNldC11cCBzaG91bGQgZ2VuZXJh
dGUgbm8gIgorICAgICAgICAiZmF0YWwgZmFpbHVyZS4iKTsKKyAgQ2hlY2soZW52LT50ZWFyX2Rv
d25fd2FzX3J1bigpLAorICAgICAgICAiVGhlIGdsb2JhbCB0ZWFyLWRvd24gc2hvdWxkIHJ1biwg
YXMgdGhlIGdsb2JhbCBzZXQtdXAgd2FzIHJ1bi4iKTsKKworICAvLyBWZXJpZmllcyB0aGF0IFJV
Tl9BTExfVEVTVFMoKSBydW5zIG5vIHRlc3Qgd2hlbiB0aGUgZ2xvYmFsIHNldC11cAorICAvLyBn
ZW5lcmF0ZXMgYSBmYXRhbCBmYWlsdXJlLgorICBDaGVjayhSdW5BbGxUZXN0cyhlbnYsIEZBVEFM
X0ZBSUxVUkUpICE9IDAsCisgICAgICAgICJSVU5fQUxMX1RFU1RTKCkgc2hvdWxkIHJldHVybiBu
b24temVybywgYXMgdGhlIGdsb2JhbCBzZXQtdXAgIgorICAgICAgICAic2hvdWxkIGdlbmVyYXRl
IGEgZmF0YWwgZmFpbHVyZS4iKTsKKyAgQ2hlY2soIXRlc3Rfd2FzX3J1biwKKyAgICAgICAgIlRo
ZSB0ZXN0cyBzaG91bGQgbm90IHJ1biwgYXMgdGhlIGdsb2JhbCBzZXQtdXAgc2hvdWxkIGdlbmVy
YXRlICIKKyAgICAgICAgImEgZmF0YWwgZmFpbHVyZS4iKTsKKyAgQ2hlY2soZW52LT50ZWFyX2Rv
d25fd2FzX3J1bigpLAorICAgICAgICAiVGhlIGdsb2JhbCB0ZWFyLWRvd24gc2hvdWxkIHJ1biwg
YXMgdGhlIGdsb2JhbCBzZXQtdXAgd2FzIHJ1bi4iKTsKKworICAvLyBWZXJpZmllcyB0aGF0IFJV
Tl9BTExfVEVTVFMoKSBkb2Vzbid0IGRvIGdsb2JhbCBzZXQtdXAgb3IKKyAgLy8gdGVhci1kb3du
IHdoZW4gdGhlcmUgaXMgbm8gdGVzdCB0byBydW4uCisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZmls
dGVyKSA9ICItKiI7CisgIENoZWNrKFJ1bkFsbFRlc3RzKGVudiwgTk9fRkFJTFVSRSkgPT0gMCwK
KyAgICAgICAgIlJVTl9BTExfVEVTVFMoKSBzaG91bGQgcmV0dXJuIHplcm8sIGFzIHRoZXJlIGlz
IG5vIHRlc3QgdG8gcnVuLiIpOworICBDaGVjayghZW52LT5zZXRfdXBfd2FzX3J1bigpLAorICAg
ICAgICAiVGhlIGdsb2JhbCBzZXQtdXAgc2hvdWxkIG5vdCBydW4sIGFzIHRoZXJlIGlzIG5vIHRl
c3QgdG8gcnVuLiIpOworICBDaGVjayghZW52LT50ZWFyX2Rvd25fd2FzX3J1bigpLAorICAgICAg
ICAiVGhlIGdsb2JhbCB0ZWFyLWRvd24gc2hvdWxkIG5vdCBydW4sICIKKyAgICAgICAgImFzIHRo
ZSBnbG9iYWwgc2V0LXVwIHdhcyBub3QgcnVuLiIpOworCisgIHByaW50ZigiUEFTU1xuIik7Cisg
IHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9maWx0ZXJf
dW5pdHRlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X2ZpbHRlcl91bml0dGVzdC5weQpu
ZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lYzBiMTUxYjExYmRiNWY3OTk5OTYyMjFiMTM4ZGU3NGI3NjliMTMxCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9maWx0ZXJfdW5pdHRlc3QucHkK
QEAgLTAsMCArMSw2MzYgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQg
MjAwNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
IyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworIiIiVW5pdCB0ZXN0IGZvciBHb29nbGUgVGVzdCB0ZXN0IGZpbHRlcnMuCisKK0EgdXNlciBj
YW4gc3BlY2lmeSB3aGljaCB0ZXN0KHMpIGluIGEgR29vZ2xlIFRlc3QgcHJvZ3JhbSB0byBydW4g
dmlhIGVpdGhlcgordGhlIEdURVNUX0ZJTFRFUiBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciB0aGUg
LS1ndGVzdF9maWx0ZXIgZmxhZy4KK1RoaXMgc2NyaXB0IHRlc3RzIHN1Y2ggZnVuY3Rpb25hbGl0
eSBieSBpbnZva2luZworZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0XyAoYSBwcm9ncmFtIHdyaXR0ZW4g
d2l0aCBHb29nbGUgVGVzdCkgd2l0aCBkaWZmZXJlbnQKK2Vudmlyb25tZW50cyBhbmQgY29tbWFu
ZCBsaW5lIGZsYWdzLgorCitOb3RlIHRoYXQgdGVzdCBzaGFyZGluZyBtYXkgYWxzbyBpbmZsdWVu
Y2Ugd2hpY2ggdGVzdHMgYXJlIGZpbHRlcmVkLiBUaGVyZWZvcmUsCit3ZSB0ZXN0IHRoYXQgaGVy
ZSBhbHNvLgorIiIiCisKK19fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdh
biknCisKK2ltcG9ydCBvcworaW1wb3J0IHJlCit0cnk6CisgIGZyb20gc2V0cyBpbXBvcnQgU2V0
IGFzIHNldCAgIyBGb3IgUHl0aG9uIDIuMyBjb21wYXRpYmlsaXR5CitleGNlcHQgSW1wb3J0RXJy
b3I6CisgIHBhc3MKK2ltcG9ydCBzeXMKKworaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKKworIyBD
b25zdGFudHMuCisKKyMgQ2hlY2tzIGlmIHRoaXMgcGxhdGZvcm0gY2FuIHBhc3MgZW1wdHkgZW52
aXJvbm1lbnQgdmFyaWFibGVzIHRvIGNoaWxkCisjIHByb2Nlc3Nlcy4gIFdlIHNldCBhbiBlbnYg
dmFyaWFibGUgdG8gYW4gZW1wdHkgc3RyaW5nIGFuZCBpbnZva2UgYSBweXRob24KKyMgc2NyaXB0
IGluIGEgc3VicHJvY2VzcyB0byBwcmludCB3aGV0aGVyIHRoZSB2YXJpYWJsZSBpcyBTVElMTCBp
bgorIyBvcy5lbnZpcm9uLiAgV2UgdGhlbiB1c2UgJ2V2YWwnIHRvIHBhcnNlIHRoZSBjaGlsZCdz
IG91dHB1dCBzbyB0aGF0IGFuCisjIGV4Y2VwdGlvbiBpcyB0aHJvd24gaWYgdGhlIGlucHV0IGlz
IGFueXRoaW5nIG90aGVyIHRoYW4gJ1RydWUnIG5vciAnRmFsc2UnLgorb3MuZW52aXJvblsnRU1Q
VFlfVkFSJ10gPSAnJworY2hpbGQgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoCisgICAg
W3N5cy5leGVjdXRhYmxlLCAnLWMnLCAnaW1wb3J0IG9zOyBwcmludChcJ0VNUFRZX1ZBUlwnIGlu
IG9zLmVudmlyb24pJ10pCitDQU5fUEFTU19FTVBUWV9FTlYgPSBldmFsKGNoaWxkLm91dHB1dCkK
KworCisjIENoZWNrIGlmIHRoaXMgcGxhdGZvcm0gY2FuIHVuc2V0IGVudmlyb25tZW50IHZhcmlh
YmxlcyBpbiBjaGlsZCBwcm9jZXNzZXMuCisjIFdlIHNldCBhbiBlbnYgdmFyaWFibGUgdG8gYSBu
b24tZW1wdHkgc3RyaW5nLCB1bnNldCBpdCwgYW5kIGludm9rZQorIyBhIHB5dGhvbiBzY3JpcHQg
aW4gYSBzdWJwcm9jZXNzIHRvIHByaW50IHdoZXRoZXIgdGhlIHZhcmlhYmxlCisjIGlzIE5PIExP
TkdFUiBpbiBvcy5lbnZpcm9uLgorIyBXZSB1c2UgJ2V2YWwnIHRvIHBhcnNlIHRoZSBjaGlsZCdz
IG91dHB1dCBzbyB0aGF0IGFuIGV4Y2VwdGlvbgorIyBpcyB0aHJvd24gaWYgdGhlIGlucHV0IGlz
IG5laXRoZXIgJ1RydWUnIG5vciAnRmFsc2UnLgorb3MuZW52aXJvblsnVU5TRVRfVkFSJ10gPSAn
WCcKK2RlbCBvcy5lbnZpcm9uWydVTlNFVF9WQVInXQorY2hpbGQgPSBndGVzdF90ZXN0X3V0aWxz
LlN1YnByb2Nlc3MoCisgICAgW3N5cy5leGVjdXRhYmxlLCAnLWMnLCAnaW1wb3J0IG9zOyBwcmlu
dChcJ1VOU0VUX1ZBUlwnIG5vdCBpbiBvcy5lbnZpcm9uKSddKQorQ0FOX1VOU0VUX0VOViA9IGV2
YWwoY2hpbGQub3V0cHV0KQorCisKKyMgQ2hlY2tzIGlmIHdlIHNob3VsZCB0ZXN0IHdpdGggYW4g
ZW1wdHkgZmlsdGVyLiBUaGlzIGRvZXNuJ3QKKyMgbWFrZSBzZW5zZSBvbiBwbGF0Zm9ybXMgdGhh
dCBjYW5ub3QgcGFzcyBlbXB0eSBlbnYgdmFyaWFibGVzIChXaW4zMikKKyMgYW5kIG9uIHBsYXRm
b3JtcyB0aGF0IGNhbm5vdCB1bnNldCB2YXJpYWJsZXMgKHNpbmNlIHdlIGNhbm5vdCB0ZWxsCisj
IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gIiIgYW5kIE5VTEwgLS0gQm9ybGFuZCBhbmQgU29sYXJp
cyA8IDUuMTApCitDQU5fVEVTVF9FTVBUWV9GSUxURVIgPSAoQ0FOX1BBU1NfRU1QVFlfRU5WIGFu
ZCBDQU5fVU5TRVRfRU5WKQorCisKKyMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGZvciBzcGVj
aWZ5aW5nIHRoZSB0ZXN0IGZpbHRlcnMuCitGSUxURVJfRU5WX1ZBUiA9ICdHVEVTVF9GSUxURVIn
CisKKyMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGVzdCBzaGFyZGluZy4KK1RPVEFM
X1NIQVJEU19FTlZfVkFSID0gJ0dURVNUX1RPVEFMX1NIQVJEUycKK1NIQVJEX0lOREVYX0VOVl9W
QVIgPSAnR1RFU1RfU0hBUkRfSU5ERVgnCitTSEFSRF9TVEFUVVNfRklMRV9FTlZfVkFSID0gJ0dU
RVNUX1NIQVJEX1NUQVRVU19GSUxFJworCisjIFRoZSBjb21tYW5kIGxpbmUgZmxhZyBmb3Igc3Bl
Y2lmeWluZyB0aGUgdGVzdCBmaWx0ZXJzLgorRklMVEVSX0ZMQUcgPSAnZ3Rlc3RfZmlsdGVyJwor
CisjIFRoZSBjb21tYW5kIGxpbmUgZmxhZyBmb3IgaW5jbHVkaW5nIGRpc2FibGVkIHRlc3RzLgor
QUxTT19SVU5fRElTQUJFRF9URVNUU19GTEFHID0gJ2d0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rl
c3RzJworCisjIENvbW1hbmQgdG8gcnVuIHRoZSBndGVzdF9maWx0ZXJfdW5pdHRlc3RfIHByb2dy
YW0uCitDT01NQU5EID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoJ2d0
ZXN0X2ZpbHRlcl91bml0dGVzdF8nKQorCisjIFJlZ2V4IGZvciBkZXRlcm1pbmluZyB3aGV0aGVy
IHBhcmFtZXRlcml6ZWQgdGVzdHMgYXJlIGVuYWJsZWQgaW4gdGhlIGJpbmFyeS4KK1BBUkFNX1RF
U1RfUkVHRVggPSByZS5jb21waWxlKHInL1BhcmFtVGVzdCcpCisKKyMgUmVnZXggZm9yIHBhcnNp
bmcgdGVzdCBjYXNlIG5hbWVzIGZyb20gR29vZ2xlIFRlc3QncyBvdXRwdXQuCitURVNUX0NBU0Vf
UkVHRVggPSByZS5jb21waWxlKHInXlxbXC0rXF0gXGQrIHRlc3RzPyBmcm9tIChcdysoL1x3Kyk/
KScpCisKKyMgUmVnZXggZm9yIHBhcnNpbmcgdGVzdCBuYW1lcyBmcm9tIEdvb2dsZSBUZXN0J3Mg
b3V0cHV0LgorVEVTVF9SRUdFWCA9IHJlLmNvbXBpbGUocideXFtccypSVU5ccypcXS4qXC4oXHcr
KC9cdyspPyknKQorCisjIFRoZSBjb21tYW5kIGxpbmUgZmxhZyB0byB0ZWxsIEdvb2dsZSBUZXN0
IHRvIG91dHB1dCB0aGUgbGlzdCBvZiB0ZXN0cyBpdAorIyB3aWxsIHJ1bi4KK0xJU1RfVEVTVFNf
RkxBRyA9ICctLWd0ZXN0X2xpc3RfdGVzdHMnCisKKyMgSW5kaWNhdGVzIHdoZXRoZXIgR29vZ2xl
IFRlc3Qgc3VwcG9ydHMgZGVhdGggdGVzdHMuCitTVVBQT1JUU19ERUFUSF9URVNUUyA9ICdIYXNE
ZWF0aFRlc3QnIGluIGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcygKKyAgICBbQ09NTUFORCwg
TElTVF9URVNUU19GTEFHXSkub3V0cHV0CisKKyMgRnVsbCBuYW1lcyBvZiBhbGwgdGVzdHMgaW4g
Z3Rlc3RfZmlsdGVyX3VuaXR0ZXN0c18uCitQQVJBTV9URVNUUyA9IFsKKyAgICAnU2VxUC9QYXJh
bVRlc3QuVGVzdFgvMCcsCisgICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RYLzEnLAorICAgICdTZXFQ
L1BhcmFtVGVzdC5UZXN0WS8wJywKKyAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFkvMScsCisgICAg
J1NlcVEvUGFyYW1UZXN0LlRlc3RYLzAnLAorICAgICdTZXFRL1BhcmFtVGVzdC5UZXN0WC8xJywK
KyAgICAnU2VxUS9QYXJhbVRlc3QuVGVzdFkvMCcsCisgICAgJ1NlcVEvUGFyYW1UZXN0LlRlc3RZ
LzEnLAorICAgIF0KKworRElTQUJMRURfVEVTVFMgPSBbCisgICAgJ0JhclRlc3QuRElTQUJMRURf
VGVzdEZvdXInLAorICAgICdCYXJUZXN0LkRJU0FCTEVEX1Rlc3RGaXZlJywKKyAgICAnQmF6VGVz
dC5ESVNBQkxFRF9UZXN0QycsCisgICAgJ0RJU0FCTEVEX0Zvb2JhclRlc3QuVGVzdDEnLAorICAg
ICdESVNBQkxFRF9Gb29iYXJUZXN0LkRJU0FCTEVEX1Rlc3QyJywKKyAgICAnRElTQUJMRURfRm9v
YmFyYmF6VGVzdC5UZXN0QScsCisgICAgXQorCitpZiBTVVBQT1JUU19ERUFUSF9URVNUUzoKKyAg
REVBVEhfVEVTVFMgPSBbCisgICAgJ0hhc0RlYXRoVGVzdC5UZXN0MScsCisgICAgJ0hhc0RlYXRo
VGVzdC5UZXN0MicsCisgICAgXQorZWxzZToKKyAgREVBVEhfVEVTVFMgPSBbXQorCisjIEFsbCB0
aGUgbm9uLWRpc2FibGVkIHRlc3RzLgorQUNUSVZFX1RFU1RTID0gWworICAgICdGb29UZXN0LkFi
YycsCisgICAgJ0Zvb1Rlc3QuWHl6JywKKworICAgICdCYXJUZXN0LlRlc3RPbmUnLAorICAgICdC
YXJUZXN0LlRlc3RUd28nLAorICAgICdCYXJUZXN0LlRlc3RUaHJlZScsCisKKyAgICAnQmF6VGVz
dC5UZXN0T25lJywKKyAgICAnQmF6VGVzdC5UZXN0QScsCisgICAgJ0JhelRlc3QuVGVzdEInLAor
ICAgIF0gKyBERUFUSF9URVNUUyArIFBBUkFNX1RFU1RTCisKK3BhcmFtX3Rlc3RzX3ByZXNlbnQg
PSBOb25lCisKKyMgVXRpbGl0aWVzLgorCitlbnZpcm9uID0gb3MuZW52aXJvbi5jb3B5KCkKKwor
CitkZWYgU2V0RW52VmFyKGVudl92YXIsIHZhbHVlKToKKyAgIiIiU2V0cyB0aGUgZW52IHZhcmlh
YmxlIHRvICd2YWx1ZSc7IHVuc2V0cyBpdCB3aGVuICd2YWx1ZScgaXMgTm9uZS4iIiIKKworICBp
ZiB2YWx1ZSBpcyBub3QgTm9uZToKKyAgICBlbnZpcm9uW2Vudl92YXJdID0gdmFsdWUKKyAgZWxp
ZiBlbnZfdmFyIGluIGVudmlyb246CisgICAgZGVsIGVudmlyb25bZW52X3Zhcl0KKworCitkZWYg
UnVuQW5kUmV0dXJuT3V0cHV0KGFyZ3MgPSBOb25lKToKKyAgIiIiUnVucyB0aGUgdGVzdCBwcm9n
cmFtIGFuZCByZXR1cm5zIGl0cyBvdXRwdXQuIiIiCisKKyAgcmV0dXJuIGd0ZXN0X3Rlc3RfdXRp
bHMuU3VicHJvY2VzcyhbQ09NTUFORF0gKyAoYXJncyBvciBbXSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZW52PWVudmlyb24pLm91dHB1dAorCisKK2RlZiBSdW5BbmRF
eHRyYWN0VGVzdExpc3QoYXJncyA9IE5vbmUpOgorICAiIiJSdW5zIHRoZSB0ZXN0IHByb2dyYW0g
YW5kIHJldHVybnMgaXRzIGV4aXQgY29kZSBhbmQgYSBsaXN0IG9mIHRlc3RzIHJ1bi4iIiIKKwor
ICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKFtDT01NQU5EXSArIChhcmdzIG9yIFtd
KSwgZW52PWVudmlyb24pCisgIHRlc3RzX3J1biA9IFtdCisgIHRlc3RfY2FzZSA9ICcnCisgIHRl
c3QgPSAnJworICBmb3IgbGluZSBpbiBwLm91dHB1dC5zcGxpdCgnXG4nKToKKyAgICBtYXRjaCA9
IFRFU1RfQ0FTRV9SRUdFWC5tYXRjaChsaW5lKQorICAgIGlmIG1hdGNoIGlzIG5vdCBOb25lOgor
ICAgICAgdGVzdF9jYXNlID0gbWF0Y2guZ3JvdXAoMSkKKyAgICBlbHNlOgorICAgICAgbWF0Y2gg
PSBURVNUX1JFR0VYLm1hdGNoKGxpbmUpCisgICAgICBpZiBtYXRjaCBpcyBub3QgTm9uZToKKyAg
ICAgICAgdGVzdCA9IG1hdGNoLmdyb3VwKDEpCisgICAgICAgIHRlc3RzX3J1bi5hcHBlbmQodGVz
dF9jYXNlICsgJy4nICsgdGVzdCkKKyAgcmV0dXJuICh0ZXN0c19ydW4sIHAuZXhpdF9jb2RlKQor
CisKK2RlZiBJbnZva2VXaXRoTW9kaWZpZWRFbnYoZXh0cmFfZW52LCBmdW5jdGlvbiwgKmFyZ3Ms
ICoqa3dhcmdzKToKKyAgIiIiUnVucyB0aGUgZ2l2ZW4gZnVuY3Rpb24gYW5kIGFyZ3VtZW50cyBp
biBhIG1vZGlmaWVkIGVudmlyb25tZW50LiIiIgorICB0cnk6CisgICAgb3JpZ2luYWxfZW52ID0g
ZW52aXJvbi5jb3B5KCkKKyAgICBlbnZpcm9uLnVwZGF0ZShleHRyYV9lbnYpCisgICAgcmV0dXJu
IGZ1bmN0aW9uKCphcmdzLCAqKmt3YXJncykKKyAgZmluYWxseToKKyAgICBlbnZpcm9uLmNsZWFy
KCkKKyAgICBlbnZpcm9uLnVwZGF0ZShvcmlnaW5hbF9lbnYpCisKKworZGVmIFJ1bldpdGhTaGFy
ZGluZyh0b3RhbF9zaGFyZHMsIHNoYXJkX2luZGV4LCBjb21tYW5kKToKKyAgIiIiUnVucyBhIHRl
c3QgcHJvZ3JhbSBzaGFyZCBhbmQgcmV0dXJucyBleGl0IGNvZGUgYW5kIGEgbGlzdCBvZiB0ZXN0
cyBydW4uIiIiCisKKyAgZXh0cmFfZW52ID0ge1NIQVJEX0lOREVYX0VOVl9WQVI6IHN0cihzaGFy
ZF9pbmRleCksCisgICAgICAgICAgICAgICBUT1RBTF9TSEFSRFNfRU5WX1ZBUjogc3RyKHRvdGFs
X3NoYXJkcyl9CisgIHJldHVybiBJbnZva2VXaXRoTW9kaWZpZWRFbnYoZXh0cmFfZW52LCBSdW5B
bmRFeHRyYWN0VGVzdExpc3QsIGNvbW1hbmQpCisKKyMgVGhlIHVuaXQgdGVzdC4KKworCitjbGFz
cyBHVGVzdEZpbHRlclVuaXRUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgorICAiIiJU
ZXN0cyB0aGUgZW52IHZhcmlhYmxlIG9yIHRoZSBjb21tYW5kIGxpbmUgZmxhZyB0byBmaWx0ZXIg
dGVzdHMuIiIiCisKKyAgIyBVdGlsaXRpZXMuCisKKyAgZGVmIEFzc2VydFNldEVxdWFsKHNlbGYs
IGxocywgcmhzKToKKyAgICAiIiJBc3NlcnRzIHRoYXQgdHdvIHNldHMgYXJlIGVxdWFsLiIiIgor
CisgICAgZm9yIGVsZW0gaW4gbGhzOgorICAgICAgc2VsZi5hc3NlcnRfKGVsZW0gaW4gcmhzLCAn
JXMgaW4gJXMnICUgKGVsZW0sIHJocykpCisKKyAgICBmb3IgZWxlbSBpbiByaHM6CisgICAgICBz
ZWxmLmFzc2VydF8oZWxlbSBpbiBsaHMsICclcyBpbiAlcycgJSAoZWxlbSwgbGhzKSkKKworICBk
ZWYgQXNzZXJ0UGFydGl0aW9uSXNWYWxpZChzZWxmLCBzZXRfdmFyLCBsaXN0X29mX3NldHMpOgor
ICAgICIiIkFzc2VydHMgdGhhdCBsaXN0X29mX3NldHMgaXMgYSB2YWxpZCBwYXJ0aXRpb24gb2Yg
c2V0X3Zhci4iIiIKKworICAgIGZ1bGxfcGFydGl0aW9uID0gW10KKyAgICBmb3Igc2xpY2VfdmFy
IGluIGxpc3Rfb2Zfc2V0czoKKyAgICAgIGZ1bGxfcGFydGl0aW9uLmV4dGVuZChzbGljZV92YXIp
CisgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2V0X3ZhciksIGxlbihmdWxsX3BhcnRpdGlvbikp
CisgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoc2V0X3ZhciksIHNldChmdWxsX3BhcnRpdGlvbikp
CisKKyAgZGVmIEFkanVzdEZvclBhcmFtZXRlcml6ZWRUZXN0cyhzZWxmLCB0ZXN0c190b19ydW4p
OgorICAgICIiIkFkanVzdCB0ZXN0c190b19ydW4gaW4gY2FzZSB2YWx1ZSBwYXJhbWV0ZXJpemVk
IHRlc3RzIGFyZSBkaXNhYmxlZC4iIiIKKworICAgIGdsb2JhbCBwYXJhbV90ZXN0c19wcmVzZW50
CisgICAgaWYgbm90IHBhcmFtX3Rlc3RzX3ByZXNlbnQ6CisgICAgICByZXR1cm4gbGlzdChzZXQo
dGVzdHNfdG9fcnVuKSAtIHNldChQQVJBTV9URVNUUykpCisgICAgZWxzZToKKyAgICAgIHJldHVy
biB0ZXN0c190b19ydW4KKworICBkZWYgUnVuQW5kVmVyaWZ5KHNlbGYsIGd0ZXN0X2ZpbHRlciwg
dGVzdHNfdG9fcnVuKToKKyAgICAiIiJDaGVja3MgdGhhdCB0aGUgYmluYXJ5IHJ1bnMgY29ycmVj
dCBzZXQgb2YgdGVzdHMgZm9yIGEgZ2l2ZW4gZmlsdGVyLiIiIgorCisgICAgdGVzdHNfdG9fcnVu
ID0gc2VsZi5BZGp1c3RGb3JQYXJhbWV0ZXJpemVkVGVzdHModGVzdHNfdG9fcnVuKQorCisgICAg
IyBGaXJzdCwgdGVzdHMgdXNpbmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlLgorCisgICAgIyBX
aW5kb3dzIHJlbW92ZXMgZW1wdHkgdmFyaWFibGVzIGZyb20gdGhlIGVudmlyb25tZW50IHdoZW4g
cGFzc2luZyBpdAorICAgICMgdG8gYSBuZXcgcHJvY2Vzcy4gIFRoaXMgbWVhbnMgaXQgaXMgaW1w
b3NzaWJsZSB0byBwYXNzIGFuIGVtcHR5IGZpbHRlcgorICAgICMgaW50byBhIHByb2Nlc3MgdXNp
bmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlLiAgSG93ZXZlciwgd2UgY2FuIHN0aWxsCisgICAg
IyB0ZXN0IHRoZSBjYXNlIHdoZW4gdGhlIHZhcmlhYmxlIGlzIG5vdCBzdXBwbGllZCAoaS5lLiwg
Z3Rlc3RfZmlsdGVyIGlzCisgICAgIyBOb25lKS4KKyAgICAjIHB5bGludDogZGlzYWJsZS1tc2c9
QzY0MDMKKyAgICBpZiBDQU5fVEVTVF9FTVBUWV9GSUxURVIgb3IgZ3Rlc3RfZmlsdGVyICE9ICcn
OgorICAgICAgU2V0RW52VmFyKEZJTFRFUl9FTlZfVkFSLCBndGVzdF9maWx0ZXIpCisgICAgICB0
ZXN0c19ydW4gPSBSdW5BbmRFeHRyYWN0VGVzdExpc3QoKVswXQorICAgICAgU2V0RW52VmFyKEZJ
TFRFUl9FTlZfVkFSLCBOb25lKQorICAgICAgc2VsZi5Bc3NlcnRTZXRFcXVhbCh0ZXN0c19ydW4s
IHRlc3RzX3RvX3J1bikKKyAgICAjIHB5bGludDogZW5hYmxlLW1zZz1DNjQwMworCisgICAgIyBO
ZXh0LCB0ZXN0cyB1c2luZyB0aGUgY29tbWFuZCBsaW5lIGZsYWcuCisKKyAgICBpZiBndGVzdF9m
aWx0ZXIgaXMgTm9uZToKKyAgICAgIGFyZ3MgPSBbXQorICAgIGVsc2U6CisgICAgICBhcmdzID0g
WyctLSVzPSVzJyAlIChGSUxURVJfRkxBRywgZ3Rlc3RfZmlsdGVyKV0KKworICAgIHRlc3RzX3J1
biA9IFJ1bkFuZEV4dHJhY3RUZXN0TGlzdChhcmdzKVswXQorICAgIHNlbGYuQXNzZXJ0U2V0RXF1
YWwodGVzdHNfcnVuLCB0ZXN0c190b19ydW4pCisKKyAgZGVmIFJ1bkFuZFZlcmlmeVdpdGhTaGFy
ZGluZyhzZWxmLCBndGVzdF9maWx0ZXIsIHRvdGFsX3NoYXJkcywgdGVzdHNfdG9fcnVuLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9Tm9uZSwgY2hlY2tfZXhpdF8wPUZhbHNl
KToKKyAgICAiIiJDaGVja3MgdGhhdCBiaW5hcnkgcnVucyBjb3JyZWN0IHRlc3RzIGZvciB0aGUg
Z2l2ZW4gZmlsdGVyIGFuZCBzaGFyZC4KKworICAgIFJ1bnMgYWxsIHNoYXJkcyBvZiBndGVzdF9m
aWx0ZXJfdW5pdHRlc3RfIHdpdGggdGhlIGdpdmVuIGZpbHRlciwgYW5kCisgICAgdmVyaWZpZXMg
dGhhdCB0aGUgcmlnaHQgc2V0IG9mIHRlc3RzIHdlcmUgcnVuLiBUaGUgdW5pb24gb2YgdGVzdHMg
cnVuCisgICAgb24gZWFjaCBzaGFyZCBzaG91bGQgYmUgaWRlbnRpY2FsIHRvIHRlc3RzX3RvX3J1
biwgd2l0aG91dCBkdXBsaWNhdGVzLgorCisgICAgQXJnczoKKyAgICAgIGd0ZXN0X2ZpbHRlcjog
QSBmaWx0ZXIgdG8gYXBwbHkgdG8gdGhlIHRlc3RzLgorICAgICAgdG90YWxfc2hhcmRzOiBBIHRv
dGFsIG51bWJlciBvZiBzaGFyZHMgdG8gc3BsaXQgdGVzdCBydW4gaW50by4KKyAgICAgIHRlc3Rz
X3RvX3J1bjogQSBzZXQgb2YgdGVzdHMgZXhwZWN0ZWQgdG8gcnVuLgorICAgICAgYXJncyAgIDog
ICAgICBBcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgdG8gdGhlIHRlc3QgYmluYXJ5LgorICAgICAg
Y2hlY2tfZXhpdF8wOiBXaGVuIHNldCB0byBhIHRydWUgdmFsdWUsIG1ha2Ugc3VyZSB0aGF0IGFs
bCBzaGFyZHMKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAuCisgICAgIiIiCisKKyAgICB0
ZXN0c190b19ydW4gPSBzZWxmLkFkanVzdEZvclBhcmFtZXRlcml6ZWRUZXN0cyh0ZXN0c190b19y
dW4pCisKKyAgICAjIFdpbmRvd3MgcmVtb3ZlcyBlbXB0eSB2YXJpYWJsZXMgZnJvbSB0aGUgZW52
aXJvbm1lbnQgd2hlbiBwYXNzaW5nIGl0CisgICAgIyB0byBhIG5ldyBwcm9jZXNzLiAgVGhpcyBt
ZWFucyBpdCBpcyBpbXBvc3NpYmxlIHRvIHBhc3MgYW4gZW1wdHkgZmlsdGVyCisgICAgIyBpbnRv
IGEgcHJvY2VzcyB1c2luZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUuICBIb3dldmVyLCB3ZSBj
YW4gc3RpbGwKKyAgICAjIHRlc3QgdGhlIGNhc2Ugd2hlbiB0aGUgdmFyaWFibGUgaXMgbm90IHN1
cHBsaWVkIChpLmUuLCBndGVzdF9maWx0ZXIgaXMKKyAgICAjIE5vbmUpLgorICAgICMgcHlsaW50
OiBkaXNhYmxlLW1zZz1DNjQwMworICAgIGlmIENBTl9URVNUX0VNUFRZX0ZJTFRFUiBvciBndGVz
dF9maWx0ZXIgIT0gJyc6CisgICAgICBTZXRFbnZWYXIoRklMVEVSX0VOVl9WQVIsIGd0ZXN0X2Zp
bHRlcikKKyAgICAgIHBhcnRpdGlvbiA9IFtdCisgICAgICBmb3IgaSBpbiByYW5nZSgwLCB0b3Rh
bF9zaGFyZHMpOgorICAgICAgICAodGVzdHNfcnVuLCBleGl0X2NvZGUpID0gUnVuV2l0aFNoYXJk
aW5nKHRvdGFsX3NoYXJkcywgaSwgYXJncykKKyAgICAgICAgaWYgY2hlY2tfZXhpdF8wOgorICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgZXhpdF9jb2RlKQorICAgICAgICBwYXJ0aXRpb24u
YXBwZW5kKHRlc3RzX3J1bikKKworICAgICAgc2VsZi5Bc3NlcnRQYXJ0aXRpb25Jc1ZhbGlkKHRl
c3RzX3RvX3J1biwgcGFydGl0aW9uKQorICAgICAgU2V0RW52VmFyKEZJTFRFUl9FTlZfVkFSLCBO
b25lKQorICAgICMgcHlsaW50OiBlbmFibGUtbXNnPUM2NDAzCisKKyAgZGVmIFJ1bkFuZFZlcmlm
eUFsbG93aW5nRGlzYWJsZWQoc2VsZiwgZ3Rlc3RfZmlsdGVyLCB0ZXN0c190b19ydW4pOgorICAg
ICIiIkNoZWNrcyB0aGF0IHRoZSBiaW5hcnkgcnVucyBjb3JyZWN0IHNldCBvZiB0ZXN0cyBmb3Ig
dGhlIGdpdmVuIGZpbHRlci4KKworICAgIFJ1bnMgZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0XyB3aXRo
IHRoZSBnaXZlbiBmaWx0ZXIsIGFuZCBlbmFibGVzCisgICAgZGlzYWJsZWQgdGVzdHMuIFZlcmlm
aWVzIHRoYXQgdGhlIHJpZ2h0IHNldCBvZiB0ZXN0cyB3ZXJlIHJ1bi4KKworICAgIEFyZ3M6Cisg
ICAgICBndGVzdF9maWx0ZXI6IEEgZmlsdGVyIHRvIGFwcGx5IHRvIHRoZSB0ZXN0cy4KKyAgICAg
IHRlc3RzX3RvX3J1bjogQSBzZXQgb2YgdGVzdHMgZXhwZWN0ZWQgdG8gcnVuLgorICAgICIiIgor
CisgICAgdGVzdHNfdG9fcnVuID0gc2VsZi5BZGp1c3RGb3JQYXJhbWV0ZXJpemVkVGVzdHModGVz
dHNfdG9fcnVuKQorCisgICAgIyBDb25zdHJ1Y3QgdGhlIGNvbW1hbmQgbGluZS4KKyAgICBhcmdz
ID0gWyctLSVzJyAlIEFMU09fUlVOX0RJU0FCRURfVEVTVFNfRkxBR10KKyAgICBpZiBndGVzdF9m
aWx0ZXIgaXMgbm90IE5vbmU6CisgICAgICBhcmdzLmFwcGVuZCgnLS0lcz0lcycgJSAoRklMVEVS
X0ZMQUcsIGd0ZXN0X2ZpbHRlcikpCisKKyAgICB0ZXN0c19ydW4gPSBSdW5BbmRFeHRyYWN0VGVz
dExpc3QoYXJncylbMF0KKyAgICBzZWxmLkFzc2VydFNldEVxdWFsKHRlc3RzX3J1biwgdGVzdHNf
dG9fcnVuKQorCisgIGRlZiBzZXRVcChzZWxmKToKKyAgICAiIiJTZXRzIHVwIHRlc3QgY2FzZS4K
KworICAgIERldGVybWluZXMgd2hldGhlciB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGFyZSBl
bmFibGVkIGluIHRoZSBiaW5hcnkgYW5kCisgICAgc2V0cyB0aGUgZmxhZ3MgYWNjb3JkaW5nbHku
CisgICAgIiIiCisKKyAgICBnbG9iYWwgcGFyYW1fdGVzdHNfcHJlc2VudAorICAgIGlmIHBhcmFt
X3Rlc3RzX3ByZXNlbnQgaXMgTm9uZToKKyAgICAgIHBhcmFtX3Rlc3RzX3ByZXNlbnQgPSBQQVJB
TV9URVNUX1JFR0VYLnNlYXJjaCgKKyAgICAgICAgICBSdW5BbmRSZXR1cm5PdXRwdXQoKSkgaXMg
bm90IE5vbmUKKworICBkZWYgdGVzdERlZmF1bHRCZWhhdmlvcihzZWxmKToKKyAgICAiIiJUZXN0
cyB0aGUgYmVoYXZpb3Igb2Ygbm90IHNwZWNpZnlpbmcgdGhlIGZpbHRlci4iIiIKKworICAgIHNl
bGYuUnVuQW5kVmVyaWZ5KE5vbmUsIEFDVElWRV9URVNUUykKKworICBkZWYgdGVzdERlZmF1bHRC
ZWhhdmlvcldpdGhTaGFyZHMoc2VsZik6CisgICAgIiIiVGVzdHMgdGhlIGJlaGF2aW9yIHdpdGhv
dXQgdGhlIGZpbHRlciwgd2l0aCBzaGFyZGluZyBlbmFibGVkLiIiIgorCisgICAgc2VsZi5SdW5B
bmRWZXJpZnlXaXRoU2hhcmRpbmcoTm9uZSwgMSwgQUNUSVZFX1RFU1RTKQorICAgIHNlbGYuUnVu
QW5kVmVyaWZ5V2l0aFNoYXJkaW5nKE5vbmUsIDIsIEFDVElWRV9URVNUUykKKyAgICBzZWxmLlJ1
bkFuZFZlcmlmeVdpdGhTaGFyZGluZyhOb25lLCBsZW4oQUNUSVZFX1RFU1RTKSAtIDEsIEFDVElW
RV9URVNUUykKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZyhOb25lLCBsZW4oQUNU
SVZFX1RFU1RTKSwgQUNUSVZFX1RFU1RTKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJk
aW5nKE5vbmUsIGxlbihBQ1RJVkVfVEVTVFMpICsgMSwgQUNUSVZFX1RFU1RTKQorCisgIGRlZiB0
ZXN0RW1wdHlGaWx0ZXIoc2VsZik6CisgICAgIiIiVGVzdHMgYW4gZW1wdHkgZmlsdGVyLiIiIgor
CisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJycsIFtdKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0
aFNoYXJkaW5nKCcnLCAxLCBbXSkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZygn
JywgMiwgW10pCisKKyAgZGVmIHRlc3RCYWRGaWx0ZXIoc2VsZik6CisgICAgIiIiVGVzdHMgYSBm
aWx0ZXIgdGhhdCBtYXRjaGVzIG5vdGhpbmcuIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgn
QmFkRmlsdGVyJywgW10pCisgICAgc2VsZi5SdW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCdC
YWRGaWx0ZXInLCBbXSkKKworICBkZWYgdGVzdEZ1bGxOYW1lKHNlbGYpOgorICAgICIiIlRlc3Rz
IGZpbHRlcmluZyBieSBmdWxsIG5hbWUuIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnRm9v
VGVzdC5YeXonLCBbJ0Zvb1Rlc3QuWHl6J10pCisgICAgc2VsZi5SdW5BbmRWZXJpZnlBbGxvd2lu
Z0Rpc2FibGVkKCdGb29UZXN0Llh5eicsIFsnRm9vVGVzdC5YeXonXSkKKyAgICBzZWxmLlJ1bkFu
ZFZlcmlmeVdpdGhTaGFyZGluZygnRm9vVGVzdC5YeXonLCA1LCBbJ0Zvb1Rlc3QuWHl6J10pCisK
KyAgZGVmIHRlc3RVbml2ZXJzYWxGaWx0ZXJzKHNlbGYpOgorICAgICIiIlRlc3RzIGZpbHRlcnMg
dGhhdCBtYXRjaCBldmVyeXRoaW5nLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJyonLCBB
Q1RJVkVfVEVTVFMpCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJyouKicsIEFDVElWRV9URVNUUykK
KyAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZygnKi4qJywgbGVuKEFDVElWRV9URVNU
UykgLSAzLCBBQ1RJVkVfVEVTVFMpCisgICAgc2VsZi5SdW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2Fi
bGVkKCcqJywgQUNUSVZFX1RFU1RTICsgRElTQUJMRURfVEVTVFMpCisgICAgc2VsZi5SdW5BbmRW
ZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCcqLionLCBBQ1RJVkVfVEVTVFMgKyBESVNBQkxFRF9URVNU
UykKKworICBkZWYgdGVzdEZpbHRlckJ5VGVzdENhc2Uoc2VsZik6CisgICAgIiIiVGVzdHMgZmls
dGVyaW5nIGJ5IHRlc3QgY2FzZSBuYW1lLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJ0Zv
b1Rlc3QuKicsIFsnRm9vVGVzdC5BYmMnLCAnRm9vVGVzdC5YeXonXSkKKworICAgIEJBWl9URVNU
UyA9IFsnQmF6VGVzdC5UZXN0T25lJywgJ0JhelRlc3QuVGVzdEEnLCAnQmF6VGVzdC5UZXN0Qidd
CisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJ0JhelRlc3QuKicsIEJBWl9URVNUUykKKyAgICBzZWxm
LlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJ0JhelRlc3QuKicsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEJBWl9URVNUUyArIFsnQmF6VGVzdC5ESVNBQkxFRF9U
ZXN0QyddKQorCisgIGRlZiB0ZXN0RmlsdGVyQnlUZXN0KHNlbGYpOgorICAgICIiIlRlc3RzIGZp
bHRlcmluZyBieSB0ZXN0IG5hbWUuIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKi5UZXN0
T25lJywgWydCYXJUZXN0LlRlc3RPbmUnLCAnQmF6VGVzdC5UZXN0T25lJ10pCisKKyAgZGVmIHRl
c3RGaWx0ZXJEaXNhYmxlZFRlc3RzKHNlbGYpOgorICAgICIiIlNlbGVjdCBvbmx5IHRoZSBkaXNh
YmxlZCB0ZXN0cyB0byBydW4uIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnRElTQUJMRURf
Rm9vYmFyVGVzdC5UZXN0MScsIFtdKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNh
YmxlZCgnRElTQUJMRURfRm9vYmFyVGVzdC5UZXN0MScsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFsnRElTQUJMRURfRm9vYmFyVGVzdC5UZXN0MSddKQorCisgICAgc2Vs
Zi5SdW5BbmRWZXJpZnkoJypESVNBQkxFRF8qJywgW10pCisgICAgc2VsZi5SdW5BbmRWZXJpZnlB
bGxvd2luZ0Rpc2FibGVkKCcqRElTQUJMRURfKicsIERJU0FCTEVEX1RFU1RTKQorCisgICAgc2Vs
Zi5SdW5BbmRWZXJpZnkoJyouRElTQUJMRURfKicsIFtdKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5
QWxsb3dpbmdEaXNhYmxlZCgnKi5ESVNBQkxFRF8qJywgWworICAgICAgICAnQmFyVGVzdC5ESVNB
QkxFRF9UZXN0Rm91cicsCisgICAgICAgICdCYXJUZXN0LkRJU0FCTEVEX1Rlc3RGaXZlJywKKyAg
ICAgICAgJ0JhelRlc3QuRElTQUJMRURfVGVzdEMnLAorICAgICAgICAnRElTQUJMRURfRm9vYmFy
VGVzdC5ESVNBQkxFRF9UZXN0MicsCisgICAgICAgIF0pCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlm
eSgnRElTQUJMRURfKicsIFtdKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxl
ZCgnRElTQUJMRURfKicsIFsKKyAgICAgICAgJ0RJU0FCTEVEX0Zvb2JhclRlc3QuVGVzdDEnLAor
ICAgICAgICAnRElTQUJMRURfRm9vYmFyVGVzdC5ESVNBQkxFRF9UZXN0MicsCisgICAgICAgICdE
SVNBQkxFRF9Gb29iYXJiYXpUZXN0LlRlc3RBJywKKyAgICAgICAgXSkKKworICBkZWYgdGVzdFdp
bGRjYXJkSW5UZXN0Q2FzZU5hbWUoc2VsZik6CisgICAgIiIiVGVzdHMgdXNpbmcgd2lsZGNhcmQg
aW4gdGhlIHRlc3QgY2FzZSBuYW1lLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJyphKi4q
JywgWworICAgICAgICAnQmFyVGVzdC5UZXN0T25lJywKKyAgICAgICAgJ0JhclRlc3QuVGVzdFR3
bycsCisgICAgICAgICdCYXJUZXN0LlRlc3RUaHJlZScsCisKKyAgICAgICAgJ0JhelRlc3QuVGVz
dE9uZScsCisgICAgICAgICdCYXpUZXN0LlRlc3RBJywKKyAgICAgICAgJ0JhelRlc3QuVGVzdEIn
LCBdICsgREVBVEhfVEVTVFMgKyBQQVJBTV9URVNUUykKKworICBkZWYgdGVzdFdpbGRjYXJkSW5U
ZXN0TmFtZShzZWxmKToKKyAgICAiIiJUZXN0cyB1c2luZyB3aWxkY2FyZCBpbiB0aGUgdGVzdCBu
YW1lLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJyouKkEqJywgWydGb29UZXN0LkFiYycs
ICdCYXpUZXN0LlRlc3RBJ10pCisKKyAgZGVmIHRlc3RGaWx0ZXJXaXRob3V0RG90KHNlbGYpOgor
ICAgICIiIlRlc3RzIGEgZmlsdGVyIHRoYXQgaGFzIG5vICcuJyBpbiBpdC4iIiIKKworICAgIHNl
bGYuUnVuQW5kVmVyaWZ5KCcqeionLCBbCisgICAgICAgICdGb29UZXN0Llh5eicsCisKKyAgICAg
ICAgJ0JhelRlc3QuVGVzdE9uZScsCisgICAgICAgICdCYXpUZXN0LlRlc3RBJywKKyAgICAgICAg
J0JhelRlc3QuVGVzdEInLAorICAgICAgICBdKQorCisgIGRlZiB0ZXN0VHdvUGF0dGVybnMoc2Vs
Zik6CisgICAgIiIiVGVzdHMgZmlsdGVycyB0aGF0IGNvbnNpc3Qgb2YgdHdvIHBhdHRlcm5zLiIi
IgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJ0ZvbyouKjoqQSonLCBbCisgICAgICAgICdGb29U
ZXN0LkFiYycsCisgICAgICAgICdGb29UZXN0Llh5eicsCisKKyAgICAgICAgJ0JhelRlc3QuVGVz
dEEnLAorICAgICAgICBdKQorCisgICAgIyBBbiBlbXB0eSBwYXR0ZXJuICsgYSBub24tZW1wdHkg
b25lCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJzoqQSonLCBbJ0Zvb1Rlc3QuQWJjJywgJ0JhelRl
c3QuVGVzdEEnXSkKKworICBkZWYgdGVzdFRocmVlUGF0dGVybnMoc2VsZik6CisgICAgIiIiVGVz
dHMgZmlsdGVycyB0aGF0IGNvbnNpc3Qgb2YgdGhyZWUgcGF0dGVybnMuIiIiCisKKyAgICBzZWxm
LlJ1bkFuZFZlcmlmeSgnKm9vKjoqQSo6Kk9uZScsIFsKKyAgICAgICAgJ0Zvb1Rlc3QuQWJjJywK
KyAgICAgICAgJ0Zvb1Rlc3QuWHl6JywKKworICAgICAgICAnQmFyVGVzdC5UZXN0T25lJywKKwor
ICAgICAgICAnQmF6VGVzdC5UZXN0T25lJywKKyAgICAgICAgJ0JhelRlc3QuVGVzdEEnLAorICAg
ICAgICBdKQorCisgICAgIyBUaGUgMm5kIHBhdHRlcm4gaXMgZW1wdHkuCisgICAgc2VsZi5SdW5B
bmRWZXJpZnkoJypvbyo6OipPbmUnLCBbCisgICAgICAgICdGb29UZXN0LkFiYycsCisgICAgICAg
ICdGb29UZXN0Llh5eicsCisKKyAgICAgICAgJ0JhclRlc3QuVGVzdE9uZScsCisKKyAgICAgICAg
J0JhelRlc3QuVGVzdE9uZScsCisgICAgICAgIF0pCisKKyAgICAjIFRoZSBsYXN0IDIgcGF0dGVy
bnMgYXJlIGVtcHR5LgorICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqb28qOjonLCBbCisgICAgICAg
ICdGb29UZXN0LkFiYycsCisgICAgICAgICdGb29UZXN0Llh5eicsCisgICAgICAgIF0pCisKKyAg
ZGVmIHRlc3ROZWdhdGl2ZUZpbHRlcnMoc2VsZik6CisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJyot
QmF6VGVzdC5UZXN0T25lJywgWworICAgICAgICAnRm9vVGVzdC5BYmMnLAorICAgICAgICAnRm9v
VGVzdC5YeXonLAorCisgICAgICAgICdCYXJUZXN0LlRlc3RPbmUnLAorICAgICAgICAnQmFyVGVz
dC5UZXN0VHdvJywKKyAgICAgICAgJ0JhclRlc3QuVGVzdFRocmVlJywKKworICAgICAgICAnQmF6
VGVzdC5UZXN0QScsCisgICAgICAgICdCYXpUZXN0LlRlc3RCJywKKyAgICAgICAgXSArIERFQVRI
X1RFU1RTICsgUEFSQU1fVEVTVFMpCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKi1Gb29UZXN0
LkFiYzpCYXpUZXN0LionLCBbCisgICAgICAgICdGb29UZXN0Llh5eicsCisKKyAgICAgICAgJ0Jh
clRlc3QuVGVzdE9uZScsCisgICAgICAgICdCYXJUZXN0LlRlc3RUd28nLAorICAgICAgICAnQmFy
VGVzdC5UZXN0VGhyZWUnLAorICAgICAgICBdICsgREVBVEhfVEVTVFMgKyBQQVJBTV9URVNUUykK
KworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCdCYXJUZXN0LiotQmFyVGVzdC5UZXN0T25lJywgWwor
ICAgICAgICAnQmFyVGVzdC5UZXN0VHdvJywKKyAgICAgICAgJ0JhclRlc3QuVGVzdFRocmVlJywK
KyAgICAgICAgXSkKKworICAgICMgVGVzdHMgd2l0aG91dCBsZWFkaW5nICcqJy4KKyAgICBzZWxm
LlJ1bkFuZFZlcmlmeSgnLUZvb1Rlc3QuQWJjOkZvb1Rlc3QuWHl6OkJhelRlc3QuKicsIFsKKyAg
ICAgICAgJ0JhclRlc3QuVGVzdE9uZScsCisgICAgICAgICdCYXJUZXN0LlRlc3RUd28nLAorICAg
ICAgICAnQmFyVGVzdC5UZXN0VGhyZWUnLAorICAgICAgICBdICsgREVBVEhfVEVTVFMgKyBQQVJB
TV9URVNUUykKKworICAgICMgVmFsdWUgcGFyYW1ldGVyaXplZCB0ZXN0cy4KKyAgICBzZWxmLlJ1
bkFuZFZlcmlmeSgnKi8qJywgUEFSQU1fVEVTVFMpCisKKyAgICAjIFZhbHVlIHBhcmFtZXRlcml6
ZWQgdGVzdHMgZmlsdGVyaW5nIGJ5IHRoZSBzZXF1ZW5jZSBuYW1lLgorICAgIHNlbGYuUnVuQW5k
VmVyaWZ5KCdTZXFQLyonLCBbCisgICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WC8wJywKKyAg
ICAgICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RYLzEnLAorICAgICAgICAnU2VxUC9QYXJhbVRlc3Qu
VGVzdFkvMCcsCisgICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WS8xJywKKyAgICAgICAgXSkK
KworICAgICMgVmFsdWUgcGFyYW1ldGVyaXplZCB0ZXN0cyBmaWx0ZXJpbmcgYnkgdGhlIHRlc3Qg
bmFtZS4KKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKi8wJywgWworICAgICAgICAnU2VxUC9QYXJh
bVRlc3QuVGVzdFgvMCcsCisgICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WS8wJywKKyAgICAg
ICAgJ1NlcVEvUGFyYW1UZXN0LlRlc3RYLzAnLAorICAgICAgICAnU2VxUS9QYXJhbVRlc3QuVGVz
dFkvMCcsCisgICAgICAgIF0pCisKKyAgZGVmIHRlc3RGbGFnT3ZlcnJpZGVzRW52VmFyKHNlbGYp
OgorICAgICIiIlRlc3RzIHRoYXQgdGhlIGZpbHRlciBmbGFnIG92ZXJyaWRlcyB0aGUgZmlsdGVy
aW5nIGVudi4gdmFyaWFibGUuIiIiCisKKyAgICBTZXRFbnZWYXIoRklMVEVSX0VOVl9WQVIsICdG
b28qJykKKyAgICBhcmdzID0gWyctLSVzPSVzJyAlIChGSUxURVJfRkxBRywgJypPbmUnKV0KKyAg
ICB0ZXN0c19ydW4gPSBSdW5BbmRFeHRyYWN0VGVzdExpc3QoYXJncylbMF0KKyAgICBTZXRFbnZW
YXIoRklMVEVSX0VOVl9WQVIsIE5vbmUpCisKKyAgICBzZWxmLkFzc2VydFNldEVxdWFsKHRlc3Rz
X3J1biwgWydCYXJUZXN0LlRlc3RPbmUnLCAnQmF6VGVzdC5UZXN0T25lJ10pCisKKyAgZGVmIHRl
c3RTaGFyZFN0YXR1c0ZpbGVJc0NyZWF0ZWQoc2VsZik6CisgICAgIiIiVGVzdHMgdGhhdCB0aGUg
c2hhcmQgZmlsZSBpcyBjcmVhdGVkIGlmIHNwZWNpZmllZCBpbiB0aGUgZW52aXJvbm1lbnQuIiIi
CisKKyAgICBzaGFyZF9zdGF0dXNfZmlsZSA9IG9zLnBhdGguam9pbihndGVzdF90ZXN0X3V0aWxz
LkdldFRlbXBEaXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hh
cmRfc3RhdHVzX2ZpbGUnKQorICAgIHNlbGYuYXNzZXJ0Xyhub3Qgb3MucGF0aC5leGlzdHMoc2hh
cmRfc3RhdHVzX2ZpbGUpKQorCisgICAgZXh0cmFfZW52ID0ge1NIQVJEX1NUQVRVU19GSUxFX0VO
Vl9WQVI6IHNoYXJkX3N0YXR1c19maWxlfQorICAgIHRyeToKKyAgICAgIEludm9rZVdpdGhNb2Rp
ZmllZEVudihleHRyYV9lbnYsIFJ1bkFuZFJldHVybk91dHB1dCkKKyAgICBmaW5hbGx5OgorICAg
ICAgc2VsZi5hc3NlcnRfKG9zLnBhdGguZXhpc3RzKHNoYXJkX3N0YXR1c19maWxlKSkKKyAgICAg
IG9zLnJlbW92ZShzaGFyZF9zdGF0dXNfZmlsZSkKKworICBkZWYgdGVzdFNoYXJkU3RhdHVzRmls
ZUlzQ3JlYXRlZFdpdGhMaXN0VGVzdHMoc2VsZik6CisgICAgIiIiVGVzdHMgdGhhdCB0aGUgc2hh
cmQgZmlsZSBpcyBjcmVhdGVkIHdpdGggdGhlICJsaXN0X3Rlc3RzIiBmbGFnLiIiIgorCisgICAg
c2hhcmRfc3RhdHVzX2ZpbGUgPSBvcy5wYXRoLmpvaW4oZ3Rlc3RfdGVzdF91dGlscy5HZXRUZW1w
RGlyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NoYXJkX3N0YXR1
c19maWxlMicpCisgICAgc2VsZi5hc3NlcnRfKG5vdCBvcy5wYXRoLmV4aXN0cyhzaGFyZF9zdGF0
dXNfZmlsZSkpCisKKyAgICBleHRyYV9lbnYgPSB7U0hBUkRfU1RBVFVTX0ZJTEVfRU5WX1ZBUjog
c2hhcmRfc3RhdHVzX2ZpbGV9CisgICAgdHJ5OgorICAgICAgb3V0cHV0ID0gSW52b2tlV2l0aE1v
ZGlmaWVkRW52KGV4dHJhX2VudiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBSdW5BbmRSZXR1cm5PdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgW0xJU1RfVEVTVFNfRkxBR10pCisgICAgZmluYWxseToKKyAgICAgICMgVGhpcyBhc3NlcnRp
b24gZW5zdXJlcyB0aGF0IEdvb2dsZSBUZXN0IGVudW1lcmF0ZWQgdGhlIHRlc3RzIGFzCisgICAg
ICAjIG9wcG9zZWQgdG8gcnVubmluZyB0aGVtLgorICAgICAgc2VsZi5hc3NlcnRfKCdbPT09PT09
PT09PV0nIG5vdCBpbiBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgb3V0
cHV0IGR1cmluZyB0ZXN0IGVudW1lcmF0aW9uLlxuJworICAgICAgICAgICAgICAgICAgICdQbGVh
c2UgZW5zdXJlIHRoYXQgTElTVF9URVNUU19GTEFHIGlzIGFzc2lnbmVkIHRoZVxuJworICAgICAg
ICAgICAgICAgICAgICdjb3JyZWN0IGZsYWcgdmFsdWUgZm9yIGxpc3RpbmcgR29vZ2xlIFRlc3Qg
dGVzdHMuJykKKworICAgICAgc2VsZi5hc3NlcnRfKG9zLnBhdGguZXhpc3RzKHNoYXJkX3N0YXR1
c19maWxlKSkKKyAgICAgIG9zLnJlbW92ZShzaGFyZF9zdGF0dXNfZmlsZSkKKworICBpZiBTVVBQ
T1JUU19ERUFUSF9URVNUUzoKKyAgICBkZWYgdGVzdFNoYXJkaW5nV29ya3NXaXRoRGVhdGhUZXN0
cyhzZWxmKToKKyAgICAgICIiIlRlc3RzIGludGVncmF0aW9uIHdpdGggZGVhdGggdGVzdHMgYW5k
IHNoYXJkaW5nLiIiIgorCisgICAgICBndGVzdF9maWx0ZXIgPSAnSGFzRGVhdGhUZXN0Lio6U2Vx
UC8qJworICAgICAgZXhwZWN0ZWRfdGVzdHMgPSBbCisgICAgICAgICAgJ0hhc0RlYXRoVGVzdC5U
ZXN0MScsCisgICAgICAgICAgJ0hhc0RlYXRoVGVzdC5UZXN0MicsCisKKyAgICAgICAgICAnU2Vx
UC9QYXJhbVRlc3QuVGVzdFgvMCcsCisgICAgICAgICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RYLzEn
LAorICAgICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WS8wJywKKyAgICAgICAgICAnU2VxUC9Q
YXJhbVRlc3QuVGVzdFkvMScsCisgICAgICAgICAgXQorCisgICAgICBmb3IgZmxhZyBpbiBbJy0t
Z3Rlc3RfZGVhdGhfdGVzdF9zdHlsZT10aHJlYWRzYWZlJywKKyAgICAgICAgICAgICAgICAgICAn
LS1ndGVzdF9kZWF0aF90ZXN0X3N0eWxlPWZhc3QnXToKKyAgICAgICAgc2VsZi5SdW5BbmRWZXJp
ZnlXaXRoU2hhcmRpbmcoZ3Rlc3RfZmlsdGVyLCAzLCBleHBlY3RlZF90ZXN0cywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfZXhpdF8wPVRydWUsIGFyZ3M9W2Zs
YWddKQorICAgICAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZyhndGVzdF9maWx0ZXIs
IDUsIGV4cGVjdGVkX3Rlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGVja19leGl0XzA9VHJ1ZSwgYXJncz1bZmxhZ10pCisKK2lmIF9fbmFtZV9fID09ICdfX21h
aW5fXyc6CisgIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVz
dC90ZXN0L2d0ZXN0X2ZpbHRlcl91bml0dGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0
X2ZpbHRlcl91bml0dGVzdF8uY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzdkZWZmYzM4ZjdkZjFkZGJlNjVhNTFl
YjlhYTVmOGI0MGU1MmE0NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rl
c3RfZmlsdGVyX3VuaXR0ZXN0Xy5jYwpAQCAtMCwwICsxLDE0MCBAQAorLy8gQ29weXJpZ2h0IDIw
MDUsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisv
LyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEF1dGhvcjogd2FuQGdvb2dsZS5j
b20gKFpoYW55b25nIFdhbikKKworLy8gVW5pdCB0ZXN0IGZvciBHb29nbGUgVGVzdCB0ZXN0IGZp
bHRlcnMuCisvLworLy8gQSB1c2VyIGNhbiBzcGVjaWZ5IHdoaWNoIHRlc3QocykgaW4gYSBHb29n
bGUgVGVzdCBwcm9ncmFtIHRvIHJ1biB2aWEKKy8vIGVpdGhlciB0aGUgR1RFU1RfRklMVEVSIGVu
dmlyb25tZW50IHZhcmlhYmxlIG9yIHRoZSAtLWd0ZXN0X2ZpbHRlcgorLy8gZmxhZy4gIFRoaXMg
aXMgdXNlZCBmb3IgdGVzdGluZyBzdWNoIGZ1bmN0aW9uYWxpdHkuCisvLworLy8gVGhlIHByb2dy
YW0gd2lsbCBiZSBpbnZva2VkIGZyb20gYSBQeXRob24gdW5pdCB0ZXN0LiAgRG9uJ3QgcnVuIGl0
CisvLyBkaXJlY3RseS4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB7
CisKKy8vIFRlc3QgY2FzZSBGb29UZXN0LgorCitjbGFzcyBGb29UZXN0IDogcHVibGljIHRlc3Rp
bmc6OlRlc3QgeworfTsKKworVEVTVF9GKEZvb1Rlc3QsIEFiYykgeworfQorCitURVNUX0YoRm9v
VGVzdCwgWHl6KSB7CisgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4iOworfQorCisvLyBU
ZXN0IGNhc2UgQmFyVGVzdC4KKworVEVTVChCYXJUZXN0LCBUZXN0T25lKSB7Cit9CisKK1RFU1Qo
QmFyVGVzdCwgVGVzdFR3bykgeworfQorCitURVNUKEJhclRlc3QsIFRlc3RUaHJlZSkgeworfQor
CitURVNUKEJhclRlc3QsIERJU0FCTEVEX1Rlc3RGb3VyKSB7CisgIEZBSUwoKSA8PCAiRXhwZWN0
ZWQgZmFpbHVyZS4iOworfQorCitURVNUKEJhclRlc3QsIERJU0FCTEVEX1Rlc3RGaXZlKSB7Cisg
IEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4iOworfQorCisvLyBUZXN0IGNhc2UgQmF6VGVz
dC4KKworVEVTVChCYXpUZXN0LCBUZXN0T25lKSB7CisgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFp
bHVyZS4iOworfQorCitURVNUKEJhelRlc3QsIFRlc3RBKSB7Cit9CisKK1RFU1QoQmF6VGVzdCwg
VGVzdEIpIHsKK30KKworVEVTVChCYXpUZXN0LCBESVNBQkxFRF9UZXN0QykgeworICBGQUlMKCkg
PDwgIkV4cGVjdGVkIGZhaWx1cmUuIjsKK30KKworLy8gVGVzdCBjYXNlIEhhc0RlYXRoVGVzdAor
CitURVNUKEhhc0RlYXRoVGVzdCwgVGVzdDEpIHsKKyAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRF
RChleGl0KDEpLCAiLioiKTsKK30KKworLy8gV2UgbmVlZCBhdCBsZWFzdCB0d28gZGVhdGggdGVz
dHMgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGFsbCBkZWF0aCB0ZXN0cworLy8gYXJlbid0IG9uIHRo
ZSBmaXJzdCBzaGFyZC4KK1RFU1QoSGFzRGVhdGhUZXN0LCBUZXN0MikgeworICBFWFBFQ1RfREVB
VEhfSUZfU1VQUE9SVEVEKGV4aXQoMSksICIuKiIpOworfQorCisvLyBUZXN0IGNhc2UgRm9vYmFy
VGVzdAorCitURVNUKERJU0FCTEVEX0Zvb2JhclRlc3QsIFRlc3QxKSB7CisgIEZBSUwoKSA8PCAi
RXhwZWN0ZWQgZmFpbHVyZS4iOworfQorCitURVNUKERJU0FCTEVEX0Zvb2JhclRlc3QsIERJU0FC
TEVEX1Rlc3QyKSB7CisgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4iOworfQorCisvLyBU
ZXN0IGNhc2UgRm9vYmFyYmF6VGVzdAorCitURVNUKERJU0FCTEVEX0Zvb2JhcmJhelRlc3QsIFRl
c3RBKSB7CisgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4iOworfQorCisjaWYgR1RFU1Rf
SEFTX1BBUkFNX1RFU1QKK2NsYXNzIFBhcmFtVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0
aFBhcmFtPGludD4geworfTsKKworVEVTVF9QKFBhcmFtVGVzdCwgVGVzdFgpIHsKK30KKworVEVT
VF9QKFBhcmFtVGVzdCwgVGVzdFkpIHsKK30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2Vx
UCwgUGFyYW1UZXN0LCB0ZXN0aW5nOjpWYWx1ZXMoMSwgMikpOworSU5TVEFOVElBVEVfVEVTVF9D
QVNFX1AoU2VxUSwgUGFyYW1UZXN0LCB0ZXN0aW5nOjpWYWx1ZXMoNSwgNikpOworI2VuZGlmICAv
LyBHVEVTVF9IQVNfUEFSQU1fVEVTVAorCit9ICAvLyBuYW1lc3BhY2UKKworaW50IG1haW4oaW50
IGFyZ2MsIGNoYXIgKiphcmd2KSB7CisgIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2Ms
IGFyZ3YpOworCisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xldGVzdC90ZXN0L2d0ZXN0X2hlbHBfdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3Rf
aGVscF90ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5M2M4MzhkOWU0NzJmYmRlMmUxMjVmMjBkNzNjMTdl
YWVlOTUwZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X2hlbHBf
dGVzdC5weQpAQCAtMCwwICsxLDE3MiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENv
cHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworIiIiVGVzdHMgdGhlIC0taGVscCBmbGFnIG9mIEdvb2dsZSBDKysgVGVz
dGluZyBGcmFtZXdvcmsuCisKK1NZTk9QU0lTCisgICAgICAgZ3Rlc3RfaGVscF90ZXN0LnB5IC0t
YnVpbGRfZGlyPUJVSUxEL0RJUgorICAgICAgICAgIyB3aGVyZSBCVUlMRC9ESVIgY29udGFpbnMg
dGhlIGJ1aWx0IGd0ZXN0X2hlbHBfdGVzdF8gZmlsZS4KKyAgICAgICBndGVzdF9oZWxwX3Rlc3Qu
cHkKKyIiIgorCitfX2F1dGhvcl9fID0gJ3dhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pJwor
CitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKKworCitJU19M
SU5VWCA9IG9zLm5hbWUgPT0gJ3Bvc2l4JyBhbmQgb3MudW5hbWUoKVswXSA9PSAnTGludXgnCitJ
U19XSU5ET1dTID0gb3MubmFtZSA9PSAnbnQnCisKK1BST0dSQU1fUEFUSCA9IGd0ZXN0X3Rlc3Rf
dXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKCdndGVzdF9oZWxwX3Rlc3RfJykKK0ZMQUdfUFJF
RklYID0gJy0tZ3Rlc3RfJworREVBVEhfVEVTVF9TVFlMRV9GTEFHID0gRkxBR19QUkVGSVggKyAn
ZGVhdGhfdGVzdF9zdHlsZScKK1NUUkVBTV9SRVNVTFRfVE9fRkxBRyA9IEZMQUdfUFJFRklYICsg
J3N0cmVhbV9yZXN1bHRfdG8nCitVTktOT1dOX0ZMQUcgPSBGTEFHX1BSRUZJWCArICd1bmtub3du
X2ZsYWdfZm9yX3Rlc3RpbmcnCitMSVNUX1RFU1RTX0ZMQUcgPSBGTEFHX1BSRUZJWCArICdsaXN0
X3Rlc3RzJworSU5DT1JSRUNUX0ZMQUdfVkFSSUFOVFMgPSBbcmUuc3ViKCdeLS0nLCAnLScsIExJ
U1RfVEVTVFNfRkxBRyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICByZS5zdWIoJ14tLScs
ICcvJywgTElTVF9URVNUU19GTEFHKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlLnN1
YignXycsICctJywgTElTVF9URVNUU19GTEFHKV0KK0lOVEVSTkFMX0ZMQUdfRk9SX1RFU1RJTkcg
PSBGTEFHX1BSRUZJWCArICdpbnRlcm5hbF9mbGFnX2Zvcl90ZXN0aW5nJworCitTVVBQT1JUU19E
RUFUSF9URVNUUyA9ICJEZWF0aFRlc3QiIGluIGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcygK
KyAgICBbUFJPR1JBTV9QQVRILCBMSVNUX1RFU1RTX0ZMQUddKS5vdXRwdXQKKworIyBUaGUgaGVs
cCBtZXNzYWdlIG11c3QgbWF0Y2ggdGhpcyByZWdleC4KK0hFTFBfUkVHRVggPSByZS5jb21waWxl
KAorICAgIEZMQUdfUFJFRklYICsgcidsaXN0X3Rlc3RzLionICsKKyAgICBGTEFHX1BSRUZJWCAr
IHInZmlsdGVyPS4qJyArCisgICAgRkxBR19QUkVGSVggKyByJ2Fsc29fcnVuX2Rpc2FibGVkX3Rl
c3RzLionICsKKyAgICBGTEFHX1BSRUZJWCArIHIncmVwZWF0PS4qJyArCisgICAgRkxBR19QUkVG
SVggKyByJ3NodWZmbGUuKicgKworICAgIEZMQUdfUFJFRklYICsgcidyYW5kb21fc2VlZD0uKicg
KworICAgIEZMQUdfUFJFRklYICsgcidjb2xvcj0uKicgKworICAgIEZMQUdfUFJFRklYICsgcidw
cmludF90aW1lLionICsKKyAgICBGTEFHX1BSRUZJWCArIHInb3V0cHV0PS4qJyArCisgICAgRkxB
R19QUkVGSVggKyByJ2JyZWFrX29uX2ZhaWx1cmUuKicgKworICAgIEZMQUdfUFJFRklYICsgcid0
aHJvd19vbl9mYWlsdXJlLionICsKKyAgICBGTEFHX1BSRUZJWCArIHInY2F0Y2hfZXhjZXB0aW9u
cz0wLionLAorICAgIHJlLkRPVEFMTCkKKworCitkZWYgUnVuV2l0aEZsYWcoZmxhZyk6CisgICIi
IlJ1bnMgZ3Rlc3RfaGVscF90ZXN0XyB3aXRoIHRoZSBnaXZlbiBmbGFnLgorCisgIFJldHVybnM6
CisgICAgdGhlIGV4aXQgY29kZSBhbmQgdGhlIHRleHQgb3V0cHV0IGFzIGEgdHVwbGUuCisgIEFy
Z3M6CisgICAgZmxhZzogdGhlIGNvbW1hbmQtbGluZSBmbGFnIHRvIHBhc3MgdG8gZ3Rlc3RfaGVs
cF90ZXN0Xywgb3IgTm9uZS4KKyAgIiIiCisKKyAgaWYgZmxhZyBpcyBOb25lOgorICAgIGNvbW1h
bmQgPSBbUFJPR1JBTV9QQVRIXQorICBlbHNlOgorICAgIGNvbW1hbmQgPSBbUFJPR1JBTV9QQVRI
LCBmbGFnXQorICBjaGlsZCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2Vzcyhjb21tYW5kKQor
ICByZXR1cm4gY2hpbGQuZXhpdF9jb2RlLCBjaGlsZC5vdXRwdXQKKworCitjbGFzcyBHVGVzdEhl
bHBUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgorICAiIiJUZXN0cyB0aGUgLS1oZWxw
IGZsYWcgYW5kIGl0cyBlcXVpdmFsZW50IGZvcm1zLiIiIgorCisgIGRlZiBUZXN0SGVscEZsYWco
c2VsZiwgZmxhZyk6CisgICAgIiIiVmVyaWZpZXMgY29ycmVjdCBiZWhhdmlvciB3aGVuIGhlbHAg
ZmxhZyBpcyBzcGVjaWZpZWQuCisKKyAgICBUaGUgcmlnaHQgbWVzc2FnZSBtdXN0IGJlIHByaW50
ZWQgYW5kIHRoZSB0ZXN0cyBtdXN0CisgICAgc2tpcHBlZCB3aGVuIHRoZSBnaXZlbiBmbGFnIGlz
IHNwZWNpZmllZC4KKworICAgIEFyZ3M6CisgICAgICBmbGFnOiAgQSBmbGFnIHRvIHBhc3MgdG8g
dGhlIGJpbmFyeSBvciBOb25lLgorICAgICIiIgorCisgICAgZXhpdF9jb2RlLCBvdXRwdXQgPSBS
dW5XaXRoRmxhZyhmbGFnKQorICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDAsIGV4aXRfY29kZSkKKyAg
ICBzZWxmLmFzc2VydF8oSEVMUF9SRUdFWC5zZWFyY2gob3V0cHV0KSwgb3V0cHV0KQorCisgICAg
aWYgSVNfTElOVVg6CisgICAgICBzZWxmLmFzc2VydF8oU1RSRUFNX1JFU1VMVF9UT19GTEFHIGlu
IG91dHB1dCwgb3V0cHV0KQorICAgIGVsc2U6CisgICAgICBzZWxmLmFzc2VydF8oU1RSRUFNX1JF
U1VMVF9UT19GTEFHIG5vdCBpbiBvdXRwdXQsIG91dHB1dCkKKworICAgIGlmIFNVUFBPUlRTX0RF
QVRIX1RFU1RTIGFuZCBub3QgSVNfV0lORE9XUzoKKyAgICAgIHNlbGYuYXNzZXJ0XyhERUFUSF9U
RVNUX1NUWUxFX0ZMQUcgaW4gb3V0cHV0LCBvdXRwdXQpCisgICAgZWxzZToKKyAgICAgIHNlbGYu
YXNzZXJ0XyhERUFUSF9URVNUX1NUWUxFX0ZMQUcgbm90IGluIG91dHB1dCwgb3V0cHV0KQorCisg
IGRlZiBUZXN0Tm9uSGVscEZsYWcoc2VsZiwgZmxhZyk6CisgICAgIiIiVmVyaWZpZXMgY29ycmVj
dCBiZWhhdmlvciB3aGVuIG5vIGhlbHAgZmxhZyBpcyBzcGVjaWZpZWQuCisKKyAgICBWZXJpZmll
cyB0aGF0IHdoZW4gbm8gaGVscCBmbGFnIGlzIHNwZWNpZmllZCwgdGhlIHRlc3RzIGFyZSBydW4K
KyAgICBhbmQgdGhlIGhlbHAgbWVzc2FnZSBpcyBub3QgcHJpbnRlZC4KKworICAgIEFyZ3M6Cisg
ICAgICBmbGFnOiAgQSBmbGFnIHRvIHBhc3MgdG8gdGhlIGJpbmFyeSBvciBOb25lLgorICAgICIi
IgorCisgICAgZXhpdF9jb2RlLCBvdXRwdXQgPSBSdW5XaXRoRmxhZyhmbGFnKQorICAgIHNlbGYu
YXNzZXJ0XyhleGl0X2NvZGUgIT0gMCkKKyAgICBzZWxmLmFzc2VydF8obm90IEhFTFBfUkVHRVgu
c2VhcmNoKG91dHB1dCksIG91dHB1dCkKKworICBkZWYgdGVzdFByaW50c0hlbHBXaXRoRnVsbEZs
YWcoc2VsZik6CisgICAgc2VsZi5UZXN0SGVscEZsYWcoJy0taGVscCcpCisKKyAgZGVmIHRlc3RQ
cmludHNIZWxwV2l0aFNob3J0RmxhZyhzZWxmKToKKyAgICBzZWxmLlRlc3RIZWxwRmxhZygnLWgn
KQorCisgIGRlZiB0ZXN0UHJpbnRzSGVscFdpdGhRdWVzdGlvbkZsYWcoc2VsZik6CisgICAgc2Vs
Zi5UZXN0SGVscEZsYWcoJy0/JykKKworICBkZWYgdGVzdFByaW50c0hlbHBXaXRoV2luZG93c1N0
eWxlUXVlc3Rpb25GbGFnKHNlbGYpOgorICAgIHNlbGYuVGVzdEhlbHBGbGFnKCcvPycpCisKKyAg
ZGVmIHRlc3RQcmludHNIZWxwV2l0aFVucmVjb2duaXplZEdvb2dsZVRlc3RGbGFnKHNlbGYpOgor
ICAgIHNlbGYuVGVzdEhlbHBGbGFnKFVOS05PV05fRkxBRykKKworICBkZWYgdGVzdFByaW50c0hl
bHBXaXRoSW5jb3JyZWN0RmxhZ1N0eWxlKHNlbGYpOgorICAgIGZvciBpbmNvcnJlY3RfZmxhZyBp
biBJTkNPUlJFQ1RfRkxBR19WQVJJQU5UUzoKKyAgICAgIHNlbGYuVGVzdEhlbHBGbGFnKGluY29y
cmVjdF9mbGFnKQorCisgIGRlZiB0ZXN0UnVuc1Rlc3RzV2l0aG91dEhlbHBGbGFnKHNlbGYpOgor
ICAgICIiIlZlcmlmaWVzIHRoYXQgd2hlbiBubyBoZWxwIGZsYWcgaXMgc3BlY2lmaWVkLCB0aGUg
dGVzdHMgYXJlIHJ1bgorICAgIGFuZCB0aGUgaGVscCBtZXNzYWdlIGlzIG5vdCBwcmludGVkLiIi
IgorCisgICAgc2VsZi5UZXN0Tm9uSGVscEZsYWcoTm9uZSkKKworICBkZWYgdGVzdFJ1bnNUZXN0
c1dpdGhHdGVzdEludGVybmFsRmxhZyhzZWxmKToKKyAgICAiIiJWZXJpZmllcyB0aGF0IHRoZSB0
ZXN0cyBhcmUgcnVuIGFuZCBubyBoZWxwIG1lc3NhZ2UgaXMgcHJpbnRlZCB3aGVuCisgICAgYSBm
bGFnIHN0YXJ0aW5nIHdpdGggR29vZ2xlIFRlc3QgcHJlZml4IGFuZCAnaW50ZXJuYWxfJyBpcyBz
dXBwbGllZC4iIiIKKworICAgIHNlbGYuVGVzdE5vbkhlbHBGbGFnKElOVEVSTkFMX0ZMQUdfRk9S
X1RFU1RJTkcpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgZ3Rlc3RfdGVzdF91
dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfaGVscF90ZXN0
Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfaGVscF90ZXN0Xy5jYwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
MWY3OGMyNDQxYmU2Njg4MWY4ZWRmNTliZjdhYzQ5ZDQ3YjE1OTYwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9oZWxwX3Rlc3RfLmNjCkBAIC0wLDAgKzEsNDYgQEAK
Ky8vIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8g
ZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8v
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBBdXRo
b3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisKKy8vIFRoaXMgcHJvZ3JhbSBpcyBt
ZWFudCB0byBiZSBydW4gYnkgZ3Rlc3RfaGVscF90ZXN0LnB5LiAgRG8gbm90IHJ1bgorLy8gaXQg
ZGlyZWN0bHkuCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCisvLyBXaGVuIGEgaGVscCBm
bGFnIGlzIHNwZWNpZmllZCwgdGhpcyBwcm9ncmFtIHNob3VsZCBza2lwIHRoZSB0ZXN0cworLy8g
YW5kIGV4aXQgd2l0aCAwOyBvdGhlcndpc2UgdGhlIGZvbGxvd2luZyB0ZXN0IHdpbGwgYmUgZXhl
Y3V0ZWQsCisvLyBjYXVzaW5nIHRoaXMgcHJvZ3JhbSB0byBleGl0IHdpdGggYSBub24temVybyBj
b2RlLgorVEVTVChIZWxwRmxhZ1Rlc3QsIFNob3VsZE5vdEJlUnVuKSB7CisgIEFTU0VSVF9UUlVF
KGZhbHNlKSA8PCAiVGVzdHMgc2hvdWxkbid0IGJlIHJ1biB3aGVuIC0taGVscCBpcyBzcGVjaWZp
ZWQuIjsKK30KKworI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCitURVNUKERlYXRoVGVzdCwgVXNl
ZEJ5UHl0aG9uU2NyaXB0VG9EZXRlY3RTdXBwb3J0Rm9yRGVhdGhUZXN0c0luVGhpc0JpbmFyeSkg
e30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9saXN0X3Rlc3Rz
X3VuaXR0ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmYyZDJmZDFiMWM1ZDVlMDFjMTc0Njc0MGZlOTY4NDcwMzVhYjRkYWIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X2xpc3RfdGVzdHNfdW5p
dHRlc3QucHkKQEAgLTAsMCArMSwyMDcgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBD
b3B5cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMg
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKKyIiIlVuaXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QncyAtLWd0ZXN0X2xp
c3RfdGVzdHMgZmxhZy4KKworQSB1c2VyIGNhbiBhc2sgR29vZ2xlIFRlc3QgdG8gbGlzdCBhbGwg
dGVzdHMgYnkgc3BlY2lmeWluZyB0aGUKKy0tZ3Rlc3RfbGlzdF90ZXN0cyBmbGFnLiAgVGhpcyBz
Y3JpcHQgdGVzdHMgc3VjaCBmdW5jdGlvbmFsaXR5CitieSBpbnZva2luZyBndGVzdF9saXN0X3Rl
c3RzX3VuaXR0ZXN0XyAoYSBwcm9ncmFtIHdyaXR0ZW4gd2l0aAorR29vZ2xlIFRlc3QpIHRoZSBj
b21tYW5kIGxpbmUgZmxhZ3MuCisiIiIKKworX19hdXRob3JfXyA9ICdwaGFubmFAZ29vZ2xlLmNv
bSAoUGF0cmljayBIYW5uYSknCisKK2ltcG9ydCBndGVzdF90ZXN0X3V0aWxzCitpbXBvcnQgcmUK
KworCisjIENvbnN0YW50cy4KKworIyBUaGUgY29tbWFuZCBsaW5lIGZsYWcgZm9yIGVuYWJsaW5n
L2Rpc2FibGluZyBsaXN0aW5nIGFsbCB0ZXN0cy4KK0xJU1RfVEVTVFNfRkxBRyA9ICdndGVzdF9s
aXN0X3Rlc3RzJworCisjIFBhdGggdG8gdGhlIGd0ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3RfIHBy
b2dyYW0uCitFWEVfUEFUSCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRo
KCdndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0XycpCisKKyMgVGhlIGV4cGVjdGVkIG91dHB1dCB3
aGVuIHJ1bm5pbmcgZ3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdF8gd2l0aAorIyAtLWd0ZXN0X2xp
c3RfdGVzdHMKK0VYUEVDVEVEX09VVFBVVF9OT19GSUxURVJfUkUgPSByZS5jb21waWxlKHIiIiJG
b29EZWF0aFRlc3RcLgorICBUZXN0MQorRm9vXC4KKyAgQmFyMQorICBCYXIyCisgIERJU0FCTEVE
X0JhcjMKK0FiY1wuCisgIFh5egorICBEZWYKK0Zvb0JhclwuCisgIEJhegorRm9vVGVzdFwuCisg
IFRlc3QxCisgIERJU0FCTEVEX1Rlc3QyCisgIFRlc3QzCitUeXBlZFRlc3QvMFwuICAjIFR5cGVQ
YXJhbSA9IChWZXJ5TG97MjQ1fXxjbGFzcyBWZXJ5TG97MjM5fSlcLlwuXC4KKyAgVGVzdEEKKyAg
VGVzdEIKK1R5cGVkVGVzdC8xXC4gICMgVHlwZVBhcmFtID0gaW50XHMqXCooIF9fcHRyNjQpPwor
ICBUZXN0QQorICBUZXN0QgorVHlwZWRUZXN0LzJcLiAgIyBUeXBlUGFyYW0gPSAuKk15QXJyYXk8
Ym9vbCxccyo0Mj4KKyAgVGVzdEEKKyAgVGVzdEIKK015L1R5cGVQYXJhbVRlc3QvMFwuICAjIFR5
cGVQYXJhbSA9IChWZXJ5TG97MjQ1fXxjbGFzcyBWZXJ5TG97MjM5fSlcLlwuXC4KKyAgVGVzdEEK
KyAgVGVzdEIKK015L1R5cGVQYXJhbVRlc3QvMVwuICAjIFR5cGVQYXJhbSA9IGludFxzKlwqKCBf
X3B0cjY0KT8KKyAgVGVzdEEKKyAgVGVzdEIKK015L1R5cGVQYXJhbVRlc3QvMlwuICAjIFR5cGVQ
YXJhbSA9IC4qTXlBcnJheTxib29sLFxzKjQyPgorICBUZXN0QQorICBUZXN0QgorTXlJbnN0YW50
aWF0aW9uL1ZhbHVlUGFyYW1UZXN0XC4KKyAgVGVzdEEvMCAgIyBHZXRQYXJhbVwoXCkgPSBvbmUg
bGluZQorICBUZXN0QS8xICAjIEdldFBhcmFtXChcKSA9IHR3b1xcbmxpbmVzCisgIFRlc3RBLzIg
ICMgR2V0UGFyYW1cKFwpID0gYSB2ZXJ5XFxubG97MjQxfVwuXC5cLgorICBUZXN0Qi8wICAjIEdl
dFBhcmFtXChcKSA9IG9uZSBsaW5lCisgIFRlc3RCLzEgICMgR2V0UGFyYW1cKFwpID0gdHdvXFxu
bGluZXMKKyAgVGVzdEIvMiAgIyBHZXRQYXJhbVwoXCkgPSBhIHZlcnlcXG5sb3syNDF9XC5cLlwu
CisiIiIpCisKKyMgVGhlIGV4cGVjdGVkIG91dHB1dCB3aGVuIHJ1bm5pbmcgZ3Rlc3RfbGlzdF90
ZXN0c191bml0dGVzdF8gd2l0aAorIyAtLWd0ZXN0X2xpc3RfdGVzdHMgYW5kIC0tZ3Rlc3RfZmls
dGVyPUZvbyouCitFWFBFQ1RFRF9PVVRQVVRfRklMVEVSX0ZPT19SRSA9IHJlLmNvbXBpbGUociIi
IkZvb0RlYXRoVGVzdFwuCisgIFRlc3QxCitGb29cLgorICBCYXIxCisgIEJhcjIKKyAgRElTQUJM
RURfQmFyMworRm9vQmFyXC4KKyAgQmF6CitGb29UZXN0XC4KKyAgVGVzdDEKKyAgRElTQUJMRURf
VGVzdDIKKyAgVGVzdDMKKyIiIikKKworIyBVdGlsaXRpZXMuCisKKworZGVmIFJ1bihhcmdzKToK
KyAgIiIiUnVucyBndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0XyBhbmQgcmV0dXJucyB0aGUgbGlz
dCBvZiB0ZXN0cyBwcmludGVkLiIiIgorCisgIHJldHVybiBndGVzdF90ZXN0X3V0aWxzLlN1YnBy
b2Nlc3MoW0VYRV9QQVRIXSArIGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2FwdHVyZV9zdGRlcnI9RmFsc2UpLm91dHB1dAorCisKKyMgVGhlIHVuaXQgdGVzdC4K
KworY2xhc3MgR1Rlc3RMaXN0VGVzdHNVbml0VGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNl
KToKKyAgIiIiVGVzdHMgdXNpbmcgdGhlIC0tZ3Rlc3RfbGlzdF90ZXN0cyBmbGFnIHRvIGxpc3Qg
YWxsIHRlc3RzLiIiIgorCisgIGRlZiBSdW5BbmRWZXJpZnkoc2VsZiwgZmxhZ192YWx1ZSwgZXhw
ZWN0ZWRfb3V0cHV0X3JlLCBvdGhlcl9mbGFnKToKKyAgICAiIiJSdW5zIGd0ZXN0X2xpc3RfdGVz
dHNfdW5pdHRlc3RfIGFuZCB2ZXJpZmllcyB0aGF0IGl0IHByaW50cworICAgIHRoZSBjb3JyZWN0
IHRlc3RzLgorCisgICAgQXJnczoKKyAgICAgIGZsYWdfdmFsdWU6ICAgICAgICAgdmFsdWUgb2Yg
dGhlIC0tZ3Rlc3RfbGlzdF90ZXN0cyBmbGFnOworICAgICAgICAgICAgICAgICAgICAgICAgICBO
b25lIGlmIHRoZSBmbGFnIHNob3VsZCBub3QgYmUgcHJlc2VudC4KKyAgICAgIGV4cGVjdGVkX291
dHB1dF9yZTogcmVndWxhciBleHByZXNzaW9uIHRoYXQgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0IGFmdGVyIHJ1bm5pbmcgY29tbWFuZDsKKyAg
ICAgIG90aGVyX2ZsYWc6ICAgICAgICAgYSBkaWZmZXJlbnQgZmxhZyB0byBiZSBwYXNzZWQgdG8g
Y29tbWFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICBhbG9uZyB3aXRoIGd0ZXN0X2xpc3Rf
dGVzdHM7CisgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUgaWYgdGhlIGZsYWcgc2hvdWxk
IG5vdCBiZSBwcmVzZW50LgorICAgICIiIgorCisgICAgaWYgZmxhZ192YWx1ZSBpcyBOb25lOgor
ICAgICAgZmxhZyA9ICcnCisgICAgICBmbGFnX2V4cHJlc3Npb24gPSAnbm90IHNldCcKKyAgICBl
bGlmIGZsYWdfdmFsdWUgPT0gJzAnOgorICAgICAgZmxhZyA9ICctLSVzPTAnICUgTElTVF9URVNU
U19GTEFHCisgICAgICBmbGFnX2V4cHJlc3Npb24gPSAnMCcKKyAgICBlbHNlOgorICAgICAgZmxh
ZyA9ICctLSVzJyAlIExJU1RfVEVTVFNfRkxBRworICAgICAgZmxhZ19leHByZXNzaW9uID0gJzEn
CisKKyAgICBhcmdzID0gW2ZsYWddCisKKyAgICBpZiBvdGhlcl9mbGFnIGlzIG5vdCBOb25lOgor
ICAgICAgYXJncyArPSBbb3RoZXJfZmxhZ10KKworICAgIG91dHB1dCA9IFJ1bihhcmdzKQorCisg
ICAgaWYgZXhwZWN0ZWRfb3V0cHV0X3JlOgorICAgICAgc2VsZi5hc3NlcnRfKAorICAgICAgICAg
IGV4cGVjdGVkX291dHB1dF9yZS5tYXRjaChvdXRwdXQpLAorICAgICAgICAgICgnd2hlbiAlcyBp
cyAlcywgdGhlIG91dHB1dCBvZiAiJXMiIGlzICIlcyIsXG4nCisgICAgICAgICAgICd3aGljaCBk
b2VzIG5vdCBtYXRjaCByZWdleCAiJXMiJyAlCisgICAgICAgICAgIChMSVNUX1RFU1RTX0ZMQUcs
IGZsYWdfZXhwcmVzc2lvbiwgJyAnLmpvaW4oYXJncyksIG91dHB1dCwKKyAgICAgICAgICAgIGV4
cGVjdGVkX291dHB1dF9yZS5wYXR0ZXJuKSkpCisgICAgZWxzZToKKyAgICAgIHNlbGYuYXNzZXJ0
XygKKyAgICAgICAgICBub3QgRVhQRUNURURfT1VUUFVUX05PX0ZJTFRFUl9SRS5tYXRjaChvdXRw
dXQpLAorICAgICAgICAgICgnd2hlbiAlcyBpcyAlcywgdGhlIG91dHB1dCBvZiAiJXMiIGlzICIl
cyInJQorICAgICAgICAgICAoTElTVF9URVNUU19GTEFHLCBmbGFnX2V4cHJlc3Npb24sICcgJy5q
b2luKGFyZ3MpLCBvdXRwdXQpKSkKKworICBkZWYgdGVzdERlZmF1bHRCZWhhdmlvcihzZWxmKToK
KyAgICAiIiJUZXN0cyB0aGUgYmVoYXZpb3Igb2YgdGhlIGRlZmF1bHQgbW9kZS4iIiIKKworICAg
IHNlbGYuUnVuQW5kVmVyaWZ5KGZsYWdfdmFsdWU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAg
ICBleHBlY3RlZF9vdXRwdXRfcmU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBvdGhlcl9m
bGFnPU5vbmUpCisKKyAgZGVmIHRlc3RGbGFnKHNlbGYpOgorICAgICIiIlRlc3RzIHVzaW5nIHRo
ZSAtLWd0ZXN0X2xpc3RfdGVzdHMgZmxhZy4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGZs
YWdfdmFsdWU9JzAnLAorICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX291dHB1dF9yZT1O
b25lLAorICAgICAgICAgICAgICAgICAgICAgIG90aGVyX2ZsYWc9Tm9uZSkKKyAgICBzZWxmLlJ1
bkFuZFZlcmlmeShmbGFnX3ZhbHVlPScxJywKKyAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rl
ZF9vdXRwdXRfcmU9RVhQRUNURURfT1VUUFVUX05PX0ZJTFRFUl9SRSwKKyAgICAgICAgICAgICAg
ICAgICAgICBvdGhlcl9mbGFnPU5vbmUpCisKKyAgZGVmIHRlc3RPdmVycmlkZU5vbkZpbHRlckZs
YWdzKHNlbGYpOgorICAgICIiIlRlc3RzIHRoYXQgLS1ndGVzdF9saXN0X3Rlc3RzIG92ZXJyaWRl
cyB0aGUgbm9uLWZpbHRlciBmbGFncy4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGZsYWdf
dmFsdWU9JzEnLAorICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX291dHB1dF9yZT1FWFBF
Q1RFRF9PVVRQVVRfTk9fRklMVEVSX1JFLAorICAgICAgICAgICAgICAgICAgICAgIG90aGVyX2Zs
YWc9Jy0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZScpCisKKyAgZGVmIHRlc3RXaXRoRmlsdGVyRmxh
Z3Moc2VsZik6CisgICAgIiIiVGVzdHMgdGhhdCAtLWd0ZXN0X2xpc3RfdGVzdHMgdGFrZXMgaW50
byBhY2NvdW50IHRoZQorICAgIC0tZ3Rlc3RfZmlsdGVyIGZsYWcuIiIiCisKKyAgICBzZWxmLlJ1
bkFuZFZlcmlmeShmbGFnX3ZhbHVlPScxJywKKyAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rl
ZF9vdXRwdXRfcmU9RVhQRUNURURfT1VUUFVUX0ZJTFRFUl9GT09fUkUsCisgICAgICAgICAgICAg
ICAgICAgICAgb3RoZXJfZmxhZz0nLS1ndGVzdF9maWx0ZXI9Rm9vKicpCisKKworaWYgX19uYW1l
X18gPT0gJ19fbWFpbl9fJzoKKyAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdF8uY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC90ZXN0L2d0ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3RfLmNjCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwN2Mx
NzZiYTk1NTVkNjhjNzRmNGRmY2NiOTY3ZmRjOTFlOTgyYjAKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xldGVzdC90ZXN0L2d0ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3RfLmNjCkBAIC0wLDAgKzEs
MTU3IEBACisvLyBDb3B5cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLwor
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisv
LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLwor
Ly8gQXV0aG9yOiBwaGFubmFAZ29vZ2xlLmNvbSAoUGF0cmljayBIYW5uYSkKKworLy8gVW5pdCB0
ZXN0IGZvciBHb29nbGUgVGVzdCdzIC0tZ3Rlc3RfbGlzdF90ZXN0cyBmbGFnLgorLy8KKy8vIEEg
dXNlciBjYW4gYXNrIEdvb2dsZSBUZXN0IHRvIGxpc3QgYWxsIHRlc3RzIHRoYXQgd2lsbCBydW4K
Ky8vIHNvIHRoYXQgd2hlbiB1c2luZyBhIGZpbHRlciwgYSB1c2VyIHdpbGwga25vdyB3aGF0Cisv
LyB0ZXN0cyB0byBsb29rIGZvci4gVGhlIHRlc3RzIHdpbGwgbm90IGJlIHJ1biBhZnRlciBsaXN0
aW5nLgorLy8KKy8vIFRoaXMgcHJvZ3JhbSB3aWxsIGJlIGludm9rZWQgZnJvbSBhIFB5dGhvbiB1
bml0IHRlc3QuCisvLyBEb24ndCBydW4gaXQgZGlyZWN0bHkuCisKKyNpbmNsdWRlICJndGVzdC9n
dGVzdC5oIgorCisvLyBTZXZlcmFsIGRpZmZlcmVudCB0ZXN0IGNhc2VzIGFuZCB0ZXN0cyB0aGF0
IHdpbGwgYmUgbGlzdGVkLgorVEVTVChGb28sIEJhcjEpIHsKK30KKworVEVTVChGb28sIEJhcjIp
IHsKK30KKworVEVTVChGb28sIERJU0FCTEVEX0JhcjMpIHsKK30KKworVEVTVChBYmMsIFh5eikg
eworfQorCitURVNUKEFiYywgRGVmKSB7Cit9CisKK1RFU1QoRm9vQmFyLCBCYXopIHsKK30KKwor
Y2xhc3MgRm9vVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK307CisKK1RFU1RfRihGb29U
ZXN0LCBUZXN0MSkgeworfQorCitURVNUX0YoRm9vVGVzdCwgRElTQUJMRURfVGVzdDIpIHsKK30K
KworVEVTVF9GKEZvb1Rlc3QsIFRlc3QzKSB7Cit9CisKK1RFU1QoRm9vRGVhdGhUZXN0LCBUZXN0
MSkgeworfQorCisvLyBBIGdyb3VwIG9mIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMuCisKK2Ns
YXNzIE15VHlwZSB7CisgcHVibGljOgorICBleHBsaWNpdCBNeVR5cGUoY29uc3Qgc3RkOjpzdHJp
bmcmIGFfdmFsdWUpIDogdmFsdWVfKGFfdmFsdWUpIHt9CisKKyAgY29uc3Qgc3RkOjpzdHJpbmcm
IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gdmFsdWVfOyB9CisKKyBwcml2YXRlOgorICBzdGQ6OnN0
cmluZyB2YWx1ZV87Cit9OworCisvLyBUZWFjaGVzIEdvb2dsZSBUZXN0IGhvdyB0byBwcmludCBh
IE15VHlwZS4KK3ZvaWQgUHJpbnRUbyhjb25zdCBNeVR5cGUmIHgsIHN0ZDo6b3N0cmVhbSogb3Mp
IHsKKyAgKm9zIDw8IHgudmFsdWUoKTsKK30KKworY2xhc3MgVmFsdWVQYXJhbVRlc3QgOiBwdWJs
aWMgdGVzdGluZzo6VGVzdFdpdGhQYXJhbTxNeVR5cGU+IHsKK307CisKK1RFU1RfUChWYWx1ZVBh
cmFtVGVzdCwgVGVzdEEpIHsKK30KKworVEVTVF9QKFZhbHVlUGFyYW1UZXN0LCBUZXN0Qikgewor
fQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUCgKKyAgICBNeUluc3RhbnRpYXRpb24sIFZhbHVl
UGFyYW1UZXN0LAorICAgIHRlc3Rpbmc6OlZhbHVlcyhNeVR5cGUoIm9uZSBsaW5lIiksCisgICAg
ICAgICAgICAgICAgICAgIE15VHlwZSgidHdvXG5saW5lcyIpLAorICAgICAgICAgICAgICAgICAg
ICBNeVR5cGUoImEgdmVyeVxubG9vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29uZyBsaW5lIikpKTsgIC8v
IE5PTElOVAorCisvLyBBIGdyb3VwIG9mIHR5cGVkIHRlc3RzLgorCisvLyBBIGRlbGliZXJhdGVs
eSBsb25nIHR5cGUgbmFtZSBmb3IgdGVzdGluZyB0aGUgbGluZS10cnVuY2F0aW5nCisvLyBiZWhh
dmlvciB3aGVuIHByaW50aW5nIGEgdHlwZSBwYXJhbWV0ZXIuCitjbGFzcyBWZXJ5TG9vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29nTmFtZSB7ICAvLyBOT0xJTlQKK307CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorY2xhc3MgVHlwZWRUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworfTsKKwordGVt
cGxhdGUgPHR5cGVuYW1lIFQsIGludCBrU2l6ZT4KK2NsYXNzIE15QXJyYXkgeworfTsKKwordHlw
ZWRlZiB0ZXN0aW5nOjpUeXBlczxWZXJ5TG9vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29nTmFtZSwgIC8v
IE5PTElOVAorICAgICAgICAgICAgICAgICAgICAgICBpbnQqLCBNeUFycmF5PGJvb2wsIDQyPiA+
IE15VHlwZXM7CisKK1RZUEVEX1RFU1RfQ0FTRShUeXBlZFRlc3QsIE15VHlwZXMpOworCitUWVBF
RF9URVNUKFR5cGVkVGVzdCwgVGVzdEEpIHsKK30KKworVFlQRURfVEVTVChUeXBlZFRlc3QsIFRl
c3RCKSB7Cit9CisKKy8vIEEgZ3JvdXAgb2YgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFR5cGVQYXJhbVRlc3QgOiBwdWJsaWMgdGVzdGlu
Zzo6VGVzdCB7Cit9OworCitUWVBFRF9URVNUX0NBU0VfUChUeXBlUGFyYW1UZXN0KTsKKworVFlQ
RURfVEVTVF9QKFR5cGVQYXJhbVRlc3QsIFRlc3RBKSB7Cit9CisKK1RZUEVEX1RFU1RfUChUeXBl
UGFyYW1UZXN0LCBUZXN0QikgeworfQorCitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChUeXBl
UGFyYW1UZXN0LCBUZXN0QSwgVGVzdEIpOworCitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0Vf
UChNeSwgVHlwZVBhcmFtVGVzdCwgTXlUeXBlcyk7CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFy
ICoqYXJndikgeworICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKwor
ICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVz
dC9ndGVzdF9tYWluX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9tYWluX3Vu
aXR0ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVjZDliYjg3NmZmN2NlOWU4Y2VhM2QzMDIyNGQyODhhOWIx
OWU3MDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X21haW5fdW5p
dHRlc3QuY2MKQEAgLTAsMCArMSw0NSBAQAorLy8gQ29weXJpZ2h0IDIwMDYsIEdvb2dsZSBJbmMu
CisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisv
LyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorLy8KKy8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdh
bikKKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKy8vIFRlc3RzIHRoYXQgd2UgZG9uJ3Qg
aGF2ZSB0byBkZWZpbmUgbWFpbigpIHdoZW4gd2UgbGluayB0bworLy8gZ3Rlc3RfbWFpbiBpbnN0
ZWFkIG9mIGd0ZXN0LgorCituYW1lc3BhY2UgeworCitURVNUKEdUZXN0TWFpblRlc3QsIFNob3Vs
ZFN1Y2NlZWQpIHsKK30KKworfSAgLy8gbmFtZXNwYWNlCisKKy8vIFdlIGFyZSB1c2luZyB0aGUg
bWFpbigpIGZ1bmN0aW9uIGRlZmluZWQgaW4gc3JjL2d0ZXN0X21haW4uY2MsIHNvCisvLyB3ZSBk
b24ndCBkZWZpbmUgaXQgaGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3Rf
bm9fdGVzdF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3Rfbm9fdGVzdF91bml0
dGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yOTI1OTlhZjhkMDhkNjgzZDhhZjg2ZmVlOTdmYTNjNWE2MTZh
NjZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9ub190ZXN0X3Vu
aXR0ZXN0LmNjCkBAIC0wLDAgKzEsNTYgQEAKKy8vIENvcHlyaWdodCAyMDA2LCBHb29nbGUgSW5j
LgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8g
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworLy8gVGVzdHMgdGhhdCBhIEdvb2dsZSBUZXN0IHByb2dyYW0gdGhh
dCBoYXMgbm8gdGVzdCBkZWZpbmVkIGNhbiBydW4KKy8vIHN1Y2Nlc3NmdWxseS4KKy8vCisvLyBB
dXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisKKyNpbmNsdWRlICJndGVzdC9n
dGVzdC5oIgorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKKyAgdGVzdGluZzo6
SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworCisgIC8vIEFuIGFkLWhvYyBhc3NlcnRpb24g
b3V0c2lkZSBvZiBhbGwgdGVzdHMuCisgIC8vCisgIC8vIFRoaXMgc2VydmVzIHRocmVlIHB1cnBv
c2VzOgorICAvLworICAvLyAxLiBJdCB2ZXJpZmllcyB0aGF0IGFuIGFkLWhvYyBhc3NlcnRpb24g
Y2FuIGJlIGV4ZWN1dGVkIGV2ZW4gaWYKKyAgLy8gICAgbm8gdGVzdCBpcyBkZWZpbmVkLgorICAv
LyAyLiBJdCB2ZXJpZmllcyB0aGF0IGEgZmFpbGVkIGFkLWhvYyBhc3NlcnRpb24gY2F1c2VzIHRo
ZSB0ZXN0CisgIC8vICAgIHByb2dyYW0gdG8gZmFpbC4KKyAgLy8gMy4gV2UgaGFkIGEgYnVnIHdo
ZXJlIHRoZSBYTUwgb3V0cHV0IHdvbid0IGJlIGdlbmVyYXRlZCBpZiBhbgorICAvLyAgICBhc3Nl
cnRpb24gaXMgZXhlY3V0ZWQgYmVmb3JlIFJVTl9BTExfVEVTVFMoKSBpcyBjYWxsZWQsIGV2ZW4K
KyAgLy8gICAgdGhvdWdoIC0tZ3Rlc3Rfb3V0cHV0PXhtbCBpcyBzcGVjaWZpZWQuICBUaGlzIG1h
a2VzIHN1cmUgdGhlCisgIC8vICAgIGJ1ZyBpcyBmaXhlZCBhbmQgZG9lc24ndCByZWdyZXNzLgor
ICBFWFBFQ1RfRVEoMSwgMik7CisKKyAgLy8gVGhlIGFib3ZlIEVYUEVDVF9FUSgpIHNob3VsZCBj
YXVzZSBSVU5fQUxMX1RFU1RTKCkgdG8gcmV0dXJuIG5vbi16ZXJvLgorICByZXR1cm4gUlVOX0FM
TF9URVNUUygpID8gMCA6IDE7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0
X291dHB1dF90ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9vdXRwdXRfdGVzdC5weQpu
ZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNmRiZWUwOTgwNTA2ODVlNWMwYzViNWM0NWEzNDdhZjc5OTk3M2U2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9vdXRwdXRfdGVzdC5weQpAQCAt
MCwwICsxLDM0MCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDA4
LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
IyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworIiIiVGVzdHMgdGhlIHRleHQgb3V0cHV0IG9mIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdv
cmsuCisKK1NZTk9QU0lTCisgICAgICAgZ3Rlc3Rfb3V0cHV0X3Rlc3QucHkgLS1idWlsZF9kaXI9
QlVJTEQvRElSIC0tZ2VuZ29sZGVuCisgICAgICAgICAjIHdoZXJlIEJVSUxEL0RJUiBjb250YWlu
cyB0aGUgYnVpbHQgZ3Rlc3Rfb3V0cHV0X3Rlc3RfIGZpbGUuCisgICAgICAgZ3Rlc3Rfb3V0cHV0
X3Rlc3QucHkgLS1nZW5nb2xkZW4KKyAgICAgICBndGVzdF9vdXRwdXRfdGVzdC5weQorIiIiCisK
K19fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCisKK2ltcG9ydCBk
aWZmbGliCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHN5cworaW1wb3J0IGd0ZXN0X3Rl
c3RfdXRpbHMKKworCisjIFRoZSBmbGFnIGZvciBnZW5lcmF0aW5nIHRoZSBnb2xkZW4gZmlsZQor
R0VOR09MREVOX0ZMQUcgPSAnLS1nZW5nb2xkZW4nCitDQVRDSF9FWENFUFRJT05TX0VOVl9WQVJf
TkFNRSA9ICdHVEVTVF9DQVRDSF9FWENFUFRJT05TJworCitJU19XSU5ET1dTID0gb3MubmFtZSA9
PSAnbnQnCisKKyMgVE9ETyh2bGFkbEBnb29nbGUuY29tKTogcmVtb3ZlIHRoZSBfbGluIHN1ZmZp
eC4KK0dPTERFTl9OQU1FID0gJ2d0ZXN0X291dHB1dF90ZXN0X2dvbGRlbl9saW4udHh0JworCitQ
Uk9HUkFNX1BBVEggPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgnZ3Rl
c3Rfb3V0cHV0X3Rlc3RfJykKKworIyBBdCBsZWFzdCBvbmUgY29tbWFuZCB3ZSBleGVyY2lzZSBt
dXN0IG5vdCBoYXZlIHRoZQorIyAnaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRfaG9j
X3Rlc3RzJyBhcmd1bWVudC4KK0NPTU1BTkRfTElTVF9URVNUUyA9ICh7fSwgW1BST0dSQU1fUEFU
SCwgJy0tZ3Rlc3RfbGlzdF90ZXN0cyddKQorQ09NTUFORF9XSVRIX0NPTE9SID0gKHt9LCBbUFJP
R1JBTV9QQVRILCAnLS1ndGVzdF9jb2xvcj15ZXMnXSkKK0NPTU1BTkRfV0lUSF9USU1FID0gKHt9
LCBbUFJPR1JBTV9QQVRILAorICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1ndGVzdF9wcmlu
dF90aW1lJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludGVybmFsX3NraXBfZW52aXJv
bm1lbnRfYW5kX2FkX2hvY190ZXN0cycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICctLWd0
ZXN0X2ZpbHRlcj1GYXRhbEZhaWx1cmVUZXN0Lio6TG9nZ2luZ1Rlc3QuKiddKQorQ09NTUFORF9X
SVRIX0RJU0FCTEVEID0gKAorICAgIHt9LCBbUFJPR1JBTV9QQVRILAorICAgICAgICAgJy0tZ3Rl
c3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMnLAorICAgICAgICAgJ2ludGVybmFsX3NraXBfZW52
aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0cycsCisgICAgICAgICAnLS1ndGVzdF9maWx0ZXI9KkRJ
U0FCTEVEXyonXSkKK0NPTU1BTkRfV0lUSF9TSEFSRElORyA9ICgKKyAgICB7J0dURVNUX1NIQVJE
X0lOREVYJzogJzEnLCAnR1RFU1RfVE9UQUxfU0hBUkRTJzogJzInfSwKKyAgICBbUFJPR1JBTV9Q
QVRILAorICAgICAnaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3RzJywK
KyAgICAgJy0tZ3Rlc3RfZmlsdGVyPVBhc3NpbmdUZXN0LionXSkKKworR09MREVOX1BBVEggPSBv
cy5wYXRoLmpvaW4oZ3Rlc3RfdGVzdF91dGlscy5HZXRTb3VyY2VEaXIoKSwgR09MREVOX05BTUUp
CisKKworZGVmIFRvVW5peExpbmVFbmRpbmcocyk6CisgICIiIkNoYW5nZXMgYWxsIFdpbmRvd3Mv
TWFjIGxpbmUgZW5kaW5ncyBpbiBzIHRvIFVOSVggbGluZSBlbmRpbmdzLiIiIgorCisgIHJldHVy
biBzLnJlcGxhY2UoJ1xyXG4nLCAnXG4nKS5yZXBsYWNlKCdccicsICdcbicpCisKKworZGVmIFJl
bW92ZUxvY2F0aW9ucyh0ZXN0X291dHB1dCk6CisgICIiIlJlbW92ZXMgYWxsIGZpbGUgbG9jYXRp
b24gaW5mbyBmcm9tIGEgR29vZ2xlIFRlc3QgcHJvZ3JhbSdzIG91dHB1dC4KKworICBBcmdzOgor
ICAgICAgIHRlc3Rfb3V0cHV0OiAgdGhlIG91dHB1dCBvZiBhIEdvb2dsZSBUZXN0IHByb2dyYW0u
CisKKyAgUmV0dXJuczoKKyAgICAgICBvdXRwdXQgd2l0aCBhbGwgZmlsZSBsb2NhdGlvbiBpbmZv
IChpbiB0aGUgZm9ybSBvZgorICAgICAgICdESVJFQ1RPUlkvRklMRV9OQU1FOkxJTkVfTlVNQkVS
OiAnb3IKKyAgICAgICAnRElSRUNUT1JZXFxGSUxFX05BTUUoTElORV9OVU1CRVIpOiAnKSByZXBs
YWNlZCBieQorICAgICAgICdGSUxFX05BTUU6IzogJy4KKyAgIiIiCisKKyAgcmV0dXJuIHJlLnN1
YihyJy4qWy9cXF0oLispKFw6XGQrfFwoXGQrXCkpXDogJywgcidcMTojOiAnLCB0ZXN0X291dHB1
dCkKKworCitkZWYgUmVtb3ZlU3RhY2tUcmFjZURldGFpbHMob3V0cHV0KToKKyAgIiIiUmVtb3Zl
cyBhbGwgc3RhY2sgdHJhY2VzIGZyb20gYSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LiIi
IgorCisgICMgKj8gbWVhbnMgImZpbmQgdGhlIHNob3J0ZXN0IHN0cmluZyB0aGF0IG1hdGNoZXMi
LgorICByZXR1cm4gcmUuc3ViKHInU3RhY2sgdHJhY2U6KC58XG4pKj9cblxuJywKKyAgICAgICAg
ICAgICAgICAnU3RhY2sgdHJhY2U6IChvbWl0dGVkKVxuXG4nLCBvdXRwdXQpCisKKworZGVmIFJl
bW92ZVN0YWNrVHJhY2VzKG91dHB1dCk6CisgICIiIlJlbW92ZXMgYWxsIHRyYWNlcyBvZiBzdGFj
ayB0cmFjZXMgZnJvbSBhIEdvb2dsZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuIiIiCisKKyAgIyAq
PyBtZWFucyAiZmluZCB0aGUgc2hvcnRlc3Qgc3RyaW5nIHRoYXQgbWF0Y2hlcyIuCisgIHJldHVy
biByZS5zdWIocidTdGFjayB0cmFjZTooLnxcbikqP1xuXG4nLCAnJywgb3V0cHV0KQorCisKK2Rl
ZiBSZW1vdmVUaW1lKG91dHB1dCk6CisgICIiIlJlbW92ZXMgYWxsIHRpbWUgaW5mb3JtYXRpb24g
ZnJvbSBhIEdvb2dsZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuIiIiCisKKyAgcmV0dXJuIHJlLnN1
YihyJ1woXGQrIG1zJywgJyg/IG1zJywgb3V0cHV0KQorCisKK2RlZiBSZW1vdmVUeXBlSW5mb0Rl
dGFpbHModGVzdF9vdXRwdXQpOgorICAiIiJSZW1vdmVzIGNvbXBpbGVyLXNwZWNpZmljIHR5cGUg
aW5mbyBmcm9tIEdvb2dsZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuCisKKyAgQXJnczoKKyAgICAg
ICB0ZXN0X291dHB1dDogIHRoZSBvdXRwdXQgb2YgYSBHb29nbGUgVGVzdCBwcm9ncmFtLgorCisg
IFJldHVybnM6CisgICAgICAgb3V0cHV0IHdpdGggdHlwZSBpbmZvcm1hdGlvbiBub3JtYWxpemVk
IHRvIGNhbm9uaWNhbCBmb3JtLgorICAiIiIKKworICAjIHNvbWUgY29tcGlsZXJzIG91dHB1dCB0
aGUgbmFtZSBvZiB0eXBlICd1bnNpZ25lZCBpbnQnIGFzICd1bnNpZ25lZCcKKyAgcmV0dXJuIHJl
LnN1YihyJ3Vuc2lnbmVkIGludCcsICd1bnNpZ25lZCcsIHRlc3Rfb3V0cHV0KQorCisKK2RlZiBO
b3JtYWxpemVUb0N1cnJlbnRQbGF0Zm9ybSh0ZXN0X291dHB1dCk6CisgICIiIk5vcm1hbGl6ZXMg
cGxhdGZvcm0gc3BlY2lmaWMgb3V0cHV0IGRldGFpbHMgZm9yIGVhc2llciBjb21wYXJpc29uLiIi
IgorCisgIGlmIElTX1dJTkRPV1M6CisgICAgIyBSZW1vdmVzIHRoZSBjb2xvciBpbmZvcm1hdGlv
biB0aGF0IGlzIG5vdCBwcmVzZW50IG9uIFdpbmRvd3MuCisgICAgdGVzdF9vdXRwdXQgPSByZS5z
dWIoJ1x4MWJcXFsoMDszXGQpP20nLCAnJywgdGVzdF9vdXRwdXQpCisgICAgIyBDaGFuZ2VzIGZh
aWx1cmUgbWVzc2FnZSBoZWFkZXJzIGludG8gdGhlIFdpbmRvd3MgZm9ybWF0LgorICAgIHRlc3Rf
b3V0cHV0ID0gcmUuc3ViKHInOiBGYWlsdXJlXG4nLCByJzogZXJyb3I6ICcsIHRlc3Rfb3V0cHV0
KQorICAgICMgQ2hhbmdlcyBmaWxlKGxpbmVfbnVtYmVyKSB0byBmaWxlOmxpbmVfbnVtYmVyLgor
ICAgIHRlc3Rfb3V0cHV0ID0gcmUuc3ViKHInKChcd3xcLikrKVwoKFxkKylcKTonLCByJ1wxOlwz
OicsIHRlc3Rfb3V0cHV0KQorCisgIHJldHVybiB0ZXN0X291dHB1dAorCisKK2RlZiBSZW1vdmVU
ZXN0Q291bnRzKG91dHB1dCk6CisgICIiIlJlbW92ZXMgdGVzdCBjb3VudHMgZnJvbSBhIEdvb2ds
ZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuIiIiCisKKyAgb3V0cHV0ID0gcmUuc3ViKHInXGQrIHRl
c3RzPywgbGlzdGVkIGJlbG93JywKKyAgICAgICAgICAgICAgICAgICc/IHRlc3RzLCBsaXN0ZWQg
YmVsb3cnLCBvdXRwdXQpCisgIG91dHB1dCA9IHJlLnN1YihyJ1xkKyBGQUlMRUQgVEVTVFMnLAor
ICAgICAgICAgICAgICAgICAgJz8gRkFJTEVEIFRFU1RTJywgb3V0cHV0KQorICBvdXRwdXQgPSBy
ZS5zdWIocidcZCsgdGVzdHM/IGZyb20gXGQrIHRlc3QgY2FzZXM/JywKKyAgICAgICAgICAgICAg
ICAgICc/IHRlc3RzIGZyb20gPyB0ZXN0IGNhc2VzJywgb3V0cHV0KQorICBvdXRwdXQgPSByZS5z
dWIocidcZCsgdGVzdHM/IGZyb20gKFthLXpBLVpfXSknLAorICAgICAgICAgICAgICAgICAgcic/
IHRlc3RzIGZyb20gXDEnLCBvdXRwdXQpCisgIHJldHVybiByZS5zdWIocidcZCsgdGVzdHM/XC4n
LCAnPyB0ZXN0cy4nLCBvdXRwdXQpCisKKworZGVmIFJlbW92ZU1hdGNoaW5nVGVzdHModGVzdF9v
dXRwdXQsIHBhdHRlcm4pOgorICAiIiJSZW1vdmVzIG91dHB1dCBvZiBzcGVjaWZpZWQgdGVzdHMg
ZnJvbSBhIEdvb2dsZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuCisKKyAgVGhpcyBmdW5jdGlvbiBz
dHJpcHMgbm90IG9ubHkgdGhlIGJlZ2lubmluZyBhbmQgdGhlIGVuZCBvZiBhIHRlc3QgYnV0IGFs
c28KKyAgYWxsIG91dHB1dCBpbiBiZXR3ZWVuLgorCisgIEFyZ3M6CisgICAgdGVzdF9vdXRwdXQ6
ICAgICAgIEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHRlc3Qgb3V0cHV0LgorICAgIHBhdHRlcm46
ICAgICAgICAgICBBIHJlZ2V4IHN0cmluZyB0aGF0IG1hdGNoZXMgbmFtZXMgb2YgdGVzdCBjYXNl
cyBvcgorICAgICAgICAgICAgICAgICAgICAgICB0ZXN0cyB0byByZW1vdmUuCisKKyAgUmV0dXJu
czoKKyAgICBDb250ZW50cyBvZiB0ZXN0X291dHB1dCB3aXRoIHRlc3RzIHdob3NlIG5hbWVzIG1h
dGNoIHBhdHRlcm4gcmVtb3ZlZC4KKyAgIiIiCisKKyAgdGVzdF9vdXRwdXQgPSByZS5zdWIoCisg
ICAgICByJy4qXFsgUlVOICAgICAgXF0gLiolcygufFxuKSo/XFsoICBGQUlMRUQgIHwgICAgICAg
T0sgKVxdIC4qJXMuKlxuJyAlICgKKyAgICAgICAgICBwYXR0ZXJuLCBwYXR0ZXJuKSwKKyAgICAg
ICcnLAorICAgICAgdGVzdF9vdXRwdXQpCisgIHJldHVybiByZS5zdWIocicuKiVzLipcbicgJSBw
YXR0ZXJuLCAnJywgdGVzdF9vdXRwdXQpCisKKworZGVmIE5vcm1hbGl6ZU91dHB1dChvdXRwdXQp
OgorICAiIiJOb3JtYWxpemVzIG91dHB1dCAodGhlIG91dHB1dCBvZiBndGVzdF9vdXRwdXRfdGVz
dF8uZXhlKS4iIiIKKworICBvdXRwdXQgPSBUb1VuaXhMaW5lRW5kaW5nKG91dHB1dCkKKyAgb3V0
cHV0ID0gUmVtb3ZlTG9jYXRpb25zKG91dHB1dCkKKyAgb3V0cHV0ID0gUmVtb3ZlU3RhY2tUcmFj
ZURldGFpbHMob3V0cHV0KQorICBvdXRwdXQgPSBSZW1vdmVUaW1lKG91dHB1dCkKKyAgcmV0dXJu
IG91dHB1dAorCisKK2RlZiBHZXRTaGVsbENvbW1hbmRPdXRwdXQoZW52X2NtZCk6CisgICIiIlJ1
bnMgYSBjb21tYW5kIGluIGEgc3ViLXByb2Nlc3MsIGFuZCByZXR1cm5zIGl0cyBvdXRwdXQgaW4g
YSBzdHJpbmcuCisKKyAgQXJnczoKKyAgICBlbnZfY21kOiBUaGUgc2hlbGwgY29tbWFuZC4gQSAy
LXR1cGxlIHdoZXJlIGVsZW1lbnQgMCBpcyBhIGRpY3Qgb2YgZXh0cmEKKyAgICAgICAgICAgICBl
bnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gc2V0LCBhbmQgZWxlbWVudCAxIGlzIGEgc3RyaW5nIHdp
dGgKKyAgICAgICAgICAgICB0aGUgY29tbWFuZCBhbmQgYW55IGZsYWdzLgorCisgIFJldHVybnM6
CisgICAgQSBzdHJpbmcgd2l0aCB0aGUgY29tbWFuZCdzIGNvbWJpbmVkIHN0YW5kYXJkIGFuZCBk
aWFnbm9zdGljIG91dHB1dC4KKyAgIiIiCisKKyAgIyBTcGF3bnMgY21kIGluIGEgc3ViLXByb2Nl
c3MsIGFuZCBnZXRzIGl0cyBzdGFuZGFyZCBJL08gZmlsZSBvYmplY3RzLgorICAjIFNldCBhbmQg
c2F2ZSB0aGUgZW52aXJvbm1lbnQgcHJvcGVybHkuCisgIGVudmlyb24gPSBvcy5lbnZpcm9uLmNv
cHkoKQorICBlbnZpcm9uLnVwZGF0ZShlbnZfY21kWzBdKQorICBwID0gZ3Rlc3RfdGVzdF91dGls
cy5TdWJwcm9jZXNzKGVudl9jbWRbMV0sIGVudj1lbnZpcm9uKQorCisgIHJldHVybiBwLm91dHB1
dAorCisKK2RlZiBHZXRDb21tYW5kT3V0cHV0KGVudl9jbWQpOgorICAiIiJSdW5zIGEgY29tbWFu
ZCBhbmQgcmV0dXJucyBpdHMgb3V0cHV0IHdpdGggYWxsIGZpbGUgbG9jYXRpb24KKyAgaW5mbyBz
dHJpcHBlZCBvZmYuCisKKyAgQXJnczoKKyAgICBlbnZfY21kOiAgVGhlIHNoZWxsIGNvbW1hbmQu
IEEgMi10dXBsZSB3aGVyZSBlbGVtZW50IDAgaXMgYSBkaWN0IG9mIGV4dHJhCisgICAgICAgICAg
ICAgIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBzZXQsIGFuZCBlbGVtZW50IDEgaXMgYSBzdHJp
bmcgd2l0aAorICAgICAgICAgICAgICB0aGUgY29tbWFuZCBhbmQgYW55IGZsYWdzLgorICAiIiIK
KworICAjIERpc2FibGVzIGV4Y2VwdGlvbiBwb3AtdXBzIG9uIFdpbmRvd3MuCisgIGVudmlyb24s
IGNtZGxpbmUgPSBlbnZfY21kCisgIGVudmlyb24gPSBkaWN0KGVudmlyb24pICAjIEVuc3VyZXMg
d2UgYXJlIG1vZGlmeWluZyBhIGNvcHkuCisgIGVudmlyb25bQ0FUQ0hfRVhDRVBUSU9OU19FTlZf
VkFSX05BTUVdID0gJzEnCisgIHJldHVybiBOb3JtYWxpemVPdXRwdXQoR2V0U2hlbGxDb21tYW5k
T3V0cHV0KChlbnZpcm9uLCBjbWRsaW5lKSkpCisKKworZGVmIEdldE91dHB1dE9mQWxsQ29tbWFu
ZHMoKToKKyAgIiIiUmV0dXJucyBjb25jYXRlbmF0ZWQgb3V0cHV0IGZyb20gc2V2ZXJhbCByZXBy
ZXNlbnRhdGl2ZSBjb21tYW5kcy4iIiIKKworICByZXR1cm4gKEdldENvbW1hbmRPdXRwdXQoQ09N
TUFORF9XSVRIX0NPTE9SKSArCisgICAgICAgICAgR2V0Q29tbWFuZE91dHB1dChDT01NQU5EX1dJ
VEhfVElNRSkgKworICAgICAgICAgIEdldENvbW1hbmRPdXRwdXQoQ09NTUFORF9XSVRIX0RJU0FC
TEVEKSArCisgICAgICAgICAgR2V0Q29tbWFuZE91dHB1dChDT01NQU5EX1dJVEhfU0hBUkRJTkcp
KQorCisKK3Rlc3RfbGlzdCA9IEdldFNoZWxsQ29tbWFuZE91dHB1dChDT01NQU5EX0xJU1RfVEVT
VFMpCitTVVBQT1JUU19ERUFUSF9URVNUUyA9ICdEZWF0aFRlc3QnIGluIHRlc3RfbGlzdAorU1VQ
UE9SVFNfVFlQRURfVEVTVFMgPSAnVHlwZWRUZXN0JyBpbiB0ZXN0X2xpc3QKK1NVUFBPUlRTX1RI
UkVBRFMgPSAnRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdCcgaW4gdGVzdF9saXN0CitTVVBQ
T1JUU19TVEFDS19UUkFDRVMgPSBGYWxzZQorCitDQU5fR0VORVJBVEVfR09MREVOX0ZJTEUgPSAo
U1VQUE9SVFNfREVBVEhfVEVTVFMgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1VQ
UE9SVFNfVFlQRURfVEVTVFMgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1VQUE9S
VFNfVEhSRUFEUyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3QgSVNfV0lORE9X
UykKKworY2xhc3MgR1Rlc3RPdXRwdXRUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgor
ICBkZWYgUmVtb3ZlVW5zdXBwb3J0ZWRUZXN0cyhzZWxmLCB0ZXN0X291dHB1dCk6CisgICAgaWYg
bm90IFNVUFBPUlRTX0RFQVRIX1RFU1RTOgorICAgICAgdGVzdF9vdXRwdXQgPSBSZW1vdmVNYXRj
aGluZ1Rlc3RzKHRlc3Rfb3V0cHV0LCAnRGVhdGhUZXN0JykKKyAgICBpZiBub3QgU1VQUE9SVFNf
VFlQRURfVEVTVFM6CisgICAgICB0ZXN0X291dHB1dCA9IFJlbW92ZU1hdGNoaW5nVGVzdHModGVz
dF9vdXRwdXQsICdUeXBlZFRlc3QnKQorICAgICAgdGVzdF9vdXRwdXQgPSBSZW1vdmVNYXRjaGlu
Z1Rlc3RzKHRlc3Rfb3V0cHV0LCAnVHlwZWREZWF0aFRlc3QnKQorICAgICAgdGVzdF9vdXRwdXQg
PSBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rfb3V0cHV0LCAnVHlwZVBhcmFtRGVhdGhUZXN0JykK
KyAgICBpZiBub3QgU1VQUE9SVFNfVEhSRUFEUzoKKyAgICAgIHRlc3Rfb3V0cHV0ID0gUmVtb3Zl
TWF0Y2hpbmdUZXN0cyh0ZXN0X291dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdCcpCisgICAgICB0ZXN0X291
dHB1dCA9IFJlbW92ZU1hdGNoaW5nVGVzdHModGVzdF9vdXRwdXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ1Njb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVy
VGVzdCcpCisgICAgICB0ZXN0X291dHB1dCA9IFJlbW92ZU1hdGNoaW5nVGVzdHModGVzdF9vdXRw
dXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1dvcmtzQ29uY3Vy
cmVudGx5JykKKyAgICBpZiBub3QgU1VQUE9SVFNfU1RBQ0tfVFJBQ0VTOgorICAgICAgdGVzdF9v
dXRwdXQgPSBSZW1vdmVTdGFja1RyYWNlcyh0ZXN0X291dHB1dCkKKworICAgIHJldHVybiB0ZXN0
X291dHB1dAorCisgIGRlZiB0ZXN0T3V0cHV0KHNlbGYpOgorICAgIG91dHB1dCA9IEdldE91dHB1
dE9mQWxsQ29tbWFuZHMoKQorCisgICAgZ29sZGVuX2ZpbGUgPSBvcGVuKEdPTERFTl9QQVRILCAn
cicpCisgICAgIyBBIG1pcy1jb25maWd1cmVkIHNvdXJjZSBjb250cm9sIHN5c3RlbSBjYW4gY2F1
c2UgXHIgYXBwZWFyIGluIEVPTAorICAgICMgc2VxdWVuY2VzIHdoZW4gd2UgcmVhZCB0aGUgZ29s
ZGVuIGZpbGUgaXJyZXNwZWN0aXZlIG9mIGFuIG9wZXJhdGluZworICAgICMgc3lzdGVtIHVzZWQu
IFRoZXJlZm9yZSwgd2UgbmVlZCB0byBzdHJpcCB0aG9zZSBccidzIGZyb20gbmV3bGluZXMKKyAg
ICAjIHVuY29uZGl0aW9uYWxseS4KKyAgICBnb2xkZW4gPSBUb1VuaXhMaW5lRW5kaW5nKGdvbGRl
bl9maWxlLnJlYWQoKSkKKyAgICBnb2xkZW5fZmlsZS5jbG9zZSgpCisKKyAgICAjIFdlIHdhbnQg
dGhlIHRlc3QgdG8gcGFzcyByZWdhcmRsZXNzIG9mIGNlcnRhaW4gZmVhdHVyZXMgYmVpbmcKKyAg
ICAjIHN1cHBvcnRlZCBvciBub3QuCisKKyAgICAjIFdlIHN0aWxsIGhhdmUgdG8gcmVtb3ZlIHR5
cGUgbmFtZSBzcGVjaWZpY3MgaW4gYWxsIGNhc2VzLgorICAgIG5vcm1hbGl6ZWRfYWN0dWFsID0g
UmVtb3ZlVHlwZUluZm9EZXRhaWxzKG91dHB1dCkKKyAgICBub3JtYWxpemVkX2dvbGRlbiA9IFJl
bW92ZVR5cGVJbmZvRGV0YWlscyhnb2xkZW4pCisKKyAgICBpZiBDQU5fR0VORVJBVEVfR09MREVO
X0ZJTEU6CisgICAgICBzZWxmLmFzc2VydEVxdWFsKG5vcm1hbGl6ZWRfZ29sZGVuLCBub3JtYWxp
emVkX2FjdHVhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJy5qb2luKGRpZmZsaWIudW5p
ZmllZF9kaWZmKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZF9nb2xkZW4u
c3BsaXQoJ1xuJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkX2FjdHVh
bC5zcGxpdCgnXG4nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdnb2xkZW4nLCAnYWN0
dWFsJykpKQorICAgIGVsc2U6CisgICAgICBub3JtYWxpemVkX2FjdHVhbCA9IE5vcm1hbGl6ZVRv
Q3VycmVudFBsYXRmb3JtKAorICAgICAgICAgIFJlbW92ZVRlc3RDb3VudHMobm9ybWFsaXplZF9h
Y3R1YWwpKQorICAgICAgbm9ybWFsaXplZF9nb2xkZW4gPSBOb3JtYWxpemVUb0N1cnJlbnRQbGF0
Zm9ybSgKKyAgICAgICAgICBSZW1vdmVUZXN0Q291bnRzKHNlbGYuUmVtb3ZlVW5zdXBwb3J0ZWRU
ZXN0cyhub3JtYWxpemVkX2dvbGRlbikpKQorCisgICAgICAjIFRoaXMgY29kZSBpcyB2ZXJ5IGhh
bmR5IHdoZW4gZGVidWdnaW5nIGdvbGRlbiBmaWxlIGRpZmZlcmVuY2VzOgorICAgICAgaWYgb3Mu
Z2V0ZW52KCdERUJVR19HVEVTVF9PVVRQVVRfVEVTVCcpOgorICAgICAgICBvcGVuKG9zLnBhdGgu
am9pbigKKyAgICAgICAgICAgIGd0ZXN0X3Rlc3RfdXRpbHMuR2V0U291cmNlRGlyKCksCisgICAg
ICAgICAgICAnX2d0ZXN0X291dHB1dF90ZXN0X25vcm1hbGl6ZWRfYWN0dWFsLnR4dCcpLCAnd2In
KS53cml0ZSgKKyAgICAgICAgICAgICAgICBub3JtYWxpemVkX2FjdHVhbCkKKyAgICAgICAgb3Bl
bihvcy5wYXRoLmpvaW4oCisgICAgICAgICAgICBndGVzdF90ZXN0X3V0aWxzLkdldFNvdXJjZURp
cigpLAorICAgICAgICAgICAgJ19ndGVzdF9vdXRwdXRfdGVzdF9ub3JtYWxpemVkX2dvbGRlbi50
eHQnKSwgJ3diJykud3JpdGUoCisgICAgICAgICAgICAgICAgbm9ybWFsaXplZF9nb2xkZW4pCisK
KyAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm9ybWFsaXplZF9nb2xkZW4sIG5vcm1hbGl6ZWRfYWN0
dWFsKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIGlmIHN5cy5hcmd2WzE6XSA9
PSBbR0VOR09MREVOX0ZMQUddOgorICAgIGlmIENBTl9HRU5FUkFURV9HT0xERU5fRklMRToKKyAg
ICAgIG91dHB1dCA9IEdldE91dHB1dE9mQWxsQ29tbWFuZHMoKQorICAgICAgZ29sZGVuX2ZpbGUg
PSBvcGVuKEdPTERFTl9QQVRILCAnd2InKQorICAgICAgZ29sZGVuX2ZpbGUud3JpdGUob3V0cHV0
KQorICAgICAgZ29sZGVuX2ZpbGUuY2xvc2UoKQorICAgIGVsc2U6CisgICAgICBtZXNzYWdlID0g
KAorICAgICAgICAgICIiIlVuYWJsZSB0byB3cml0ZSBhIGdvbGRlbiBmaWxlIHdoZW4gY29tcGls
ZWQgaW4gYW4gZW52aXJvbm1lbnQKK3RoYXQgZG9lcyBub3Qgc3VwcG9ydCBhbGwgdGhlIHJlcXVp
cmVkIGZlYXR1cmVzIChkZWF0aCB0ZXN0cywgdHlwZWQgdGVzdHMsCithbmQgbXVsdGlwbGUgdGhy
ZWFkcykuICBQbGVhc2UgZ2VuZXJhdGUgdGhlIGdvbGRlbiBmaWxlIHVzaW5nIGEgYmluYXJ5IGJ1
aWx0Cit3aXRoIHRob3NlIGZlYXR1cmVzIGVuYWJsZWQuIiIiKQorCisgICAgICBzeXMuc3RkZXJy
LndyaXRlKG1lc3NhZ2UpCisgICAgICBzeXMuZXhpdCgxKQorICBlbHNlOgorICAgIGd0ZXN0X3Rl
c3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X291dHB1
dF90ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjEwNzBhOWYyNmZlNTA5ODhmODBiM2M2N2Q5ZDA0NmEyYjViZjk5ZTYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0Xy5jYwpAQCAtMCww
ICsxLDEwNjIgQEAKKy8vIENvcHlyaWdodCAyMDA1LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoK
Ky8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
Ly8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLwor
Ly8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
Ky8vCisvLyBUaGUgcHVycG9zZSBvZiB0aGlzIGZpbGUgaXMgdG8gZ2VuZXJhdGUgR29vZ2xlIFRl
c3Qgb3V0cHV0IHVuZGVyCisvLyB2YXJpb3VzIGNvbmRpdGlvbnMuICBUaGUgb3V0cHV0IHdpbGwg
dGhlbiBiZSB2ZXJpZmllZCBieQorLy8gZ3Rlc3Rfb3V0cHV0X3Rlc3QucHkgdG8gZW5zdXJlIHRo
YXQgR29vZ2xlIFRlc3QgZ2VuZXJhdGVzIHRoZQorLy8gZGVzaXJlZCBtZXNzYWdlcy4gIFRoZXJl
Zm9yZSwgbW9zdCB0ZXN0cyBpbiB0aGlzIGZpbGUgYXJlIE1FQU5UIFRPCisvLyBGQUlMLgorLy8K
Ky8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKworI2luY2x1ZGUgImd0
ZXN0L2d0ZXN0LXNwaS5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKy8vIEluZGljYXRl
cyB0aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBpcyBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MKKy8v
IGltcGxlbWVudGF0aW9uLiAgSXQgbXVzdCBjb21lIGJlZm9yZSBndGVzdC1pbnRlcm5hbC1pbmwu
aCBpcworLy8gaW5jbHVkZWQsIG9yIHRoZXJlIHdpbGwgYmUgYSBjb21waWxlciBlcnJvci4gIFRo
aXMgdHJpY2sgaXMgdG8KKy8vIHByZXZlbnQgYSB1c2VyIGZyb20gYWNjaWRlbnRhbGx5IGluY2x1
ZGluZyBndGVzdC1pbnRlcm5hbC1pbmwuaCBpbgorLy8gaGlzIGNvZGUuCisjZGVmaW5lIEdURVNU
X0lNUExFTUVOVEFUSU9OXyAxCisjaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgor
I3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXworCisjaW5jbHVkZSA8c3RkbGliLmg+CisKKyNp
ZiBHVEVTVF9JU19USFJFQURTQUZFCit1c2luZyB0ZXN0aW5nOjpTY29wZWRGYWtlVGVzdFBhcnRS
ZXN1bHRSZXBvcnRlcjsKK3VzaW5nIHRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0QXJyYXk7CisKK3Vz
aW5nIHRlc3Rpbmc6OmludGVybmFsOjpOb3RpZmljYXRpb247Cit1c2luZyB0ZXN0aW5nOjppbnRl
cm5hbDo6VGhyZWFkV2l0aFBhcmFtOworI2VuZGlmCisKK25hbWVzcGFjZSBwb3NpeCA9IDo6dGVz
dGluZzo6aW50ZXJuYWw6OnBvc2l4OworCisvLyBUZXN0cyBjYXRjaGluZyBmYXRhbCBmYWlsdXJl
cy4KKworLy8gQSBzdWJyb3V0aW5lIHVzZWQgYnkgdGhlIGZvbGxvd2luZyB0ZXN0Lgordm9pZCBU
ZXN0RXExKGludCB4KSB7CisgIEFTU0VSVF9FUSgxLCB4KTsKK30KKworLy8gVGhpcyBmdW5jdGlv
biBjYWxscyBhIHRlc3Qgc3Vicm91dGluZSwgY2F0Y2hlcyB0aGUgZmF0YWwgZmFpbHVyZSBpdAor
Ly8gZ2VuZXJhdGVzLCBhbmQgdGhlbiByZXR1cm5zIGVhcmx5Lgordm9pZCBUcnlUZXN0U3Vicm91
dGluZSgpIHsKKyAgLy8gQ2FsbHMgYSBzdWJyb3VudGluZSB0aGF0IHlpZWxkcyBhIGZhdGFsIGZh
aWx1cmUuCisgIFRlc3RFcTEoMik7CisKKyAgLy8gQ2F0Y2hlcyB0aGUgZmF0YWwgZmFpbHVyZSBh
bmQgYWJvcnRzIHRoZSB0ZXN0LgorICAvLworICAvLyBUaGUgdGVzdGluZzo6VGVzdDo6IHByZWZp
eCBpcyBuZWNlc3Nhcnkgd2hlbiBjYWxsaW5nCisgIC8vIEhhc0ZhdGFsRmFpbHVyZSgpIG91dHNp
ZGUgb2YgYSBURVNULCBURVNUX0YsIG9yIHRlc3QgZml4dHVyZS4KKyAgaWYgKHRlc3Rpbmc6OlRl
c3Q6Okhhc0ZhdGFsRmFpbHVyZSgpKSByZXR1cm47CisKKyAgLy8gSWYgd2UgZ2V0IGhlcmUsIHNv
bWV0aGluZyBpcyB3cm9uZy4KKyAgRkFJTCgpIDw8ICJUaGlzIHNob3VsZCBuZXZlciBiZSByZWFj
aGVkLiI7Cit9CisKK1RFU1QoUGFzc2luZ1Rlc3QsIFBhc3NpbmdUZXN0MSkgeworfQorCitURVNU
KFBhc3NpbmdUZXN0LCBQYXNzaW5nVGVzdDIpIHsKK30KKworLy8gVGVzdHMgdGhhdCBwYXJhbWV0
ZXJzIG9mIGZhaWxpbmcgcGFyYW1ldGVyaXplZCB0ZXN0cyBhcmUgcHJpbnRlZCBpbiB0aGUKKy8v
IGZhaWxpbmcgdGVzdCBzdW1tYXJ5LgorY2xhc3MgRmFpbGluZ1BhcmFtVGVzdCA6IHB1YmxpYyB0
ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4ge307CisKK1RFU1RfUChGYWlsaW5nUGFyYW1UZXN0
LCBGYWlscykgeworICBFWFBFQ1RfRVEoMSwgR2V0UGFyYW0oKSk7Cit9CisKKy8vIFRoaXMgZ2Vu
ZXJhdGVzIGEgdGVzdCB3aGljaCB3aWxsIGZhaWwuIEdvb2dsZSBUZXN0IGlzIGV4cGVjdGVkIHRv
IHByaW50CisvLyBpdHMgcGFyYW1ldGVyIHdoZW4gaXQgb3V0cHV0cyB0aGUgbGlzdCBvZiBhbGwg
ZmFpbGVkIHRlc3RzLgorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoUHJpbnRpbmdGYWlsaW5nUGFy
YW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgRmFpbGluZ1BhcmFtVGVzdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3Rpbmc6OlZhbHVlcygyKSk7CisKK3N0YXRpYyBjb25zdCBjaGFy
IGtHb2xkZW5TdHJpbmdbXSA9ICJcIkxpbmVcMCAxXCJcbkxpbmUgMiI7CisKK1RFU1QoTm9uZmF0
YWxGYWlsdXJlVGVzdCwgRXNjYXBlc1N0cmluZ09wZXJhbmRzKSB7CisgIHN0ZDo6c3RyaW5nIGFj
dHVhbCA9ICJhY3R1YWwgXCJzdHJpbmdcIiI7CisgIEVYUEVDVF9FUShrR29sZGVuU3RyaW5nLCBh
Y3R1YWwpOworCisgIGNvbnN0IGNoYXIqIGdvbGRlbiA9IGtHb2xkZW5TdHJpbmc7CisgIEVYUEVD
VF9FUShnb2xkZW4sIGFjdHVhbCk7Cit9CisKK1RFU1QoTm9uZmF0YWxGYWlsdXJlVGVzdCwgRGlm
ZkZvckxvbmdTdHJpbmdzKSB7CisgIHN0ZDo6c3RyaW5nIGdvbGRlbl9zdHIoa0dvbGRlblN0cmlu
Zywgc2l6ZW9mKGtHb2xkZW5TdHJpbmcpIC0gMSk7CisgIEVYUEVDVF9FUShnb2xkZW5fc3RyLCAi
TGluZSAyIik7Cit9CisKKy8vIFRlc3RzIGNhdGNoaW5nIGEgZmF0YWwgZmFpbHVyZSBpbiBhIHN1
YnJvdXRpbmUuCitURVNUKEZhdGFsRmFpbHVyZVRlc3QsIEZhdGFsRmFpbHVyZUluU3Vicm91dGlu
ZSkgeworICBwcmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUgMSlc
biIpOworCisgIFRyeVRlc3RTdWJyb3V0aW5lKCk7Cit9CisKKy8vIFRlc3RzIGNhdGNoaW5nIGEg
ZmF0YWwgZmFpbHVyZSBpbiBhIG5lc3RlZCBzdWJyb3V0aW5lLgorVEVTVChGYXRhbEZhaWx1cmVU
ZXN0LCBGYXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUpIHsKKyAgcHJpbnRmKCIoZXhwZWN0
aW5nIGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpXG4iKTsKKworICAvLyBDYWxscyBhIHN1
YnJvdW50aW5lIHRoYXQgeWllbGRzIGEgZmF0YWwgZmFpbHVyZS4KKyAgVHJ5VGVzdFN1YnJvdXRp
bmUoKTsKKworICAvLyBDYXRjaGVzIHRoZSBmYXRhbCBmYWlsdXJlIGFuZCBhYm9ydHMgdGhlIHRl
c3QuCisgIC8vCisgIC8vIFdoZW4gY2FsbGluZyBIYXNGYXRhbEZhaWx1cmUoKSBpbnNpZGUgYSBU
RVNULCBURVNUX0YsIG9yIHRlc3QKKyAgLy8gZml4dHVyZSwgdGhlIHRlc3Rpbmc6OlRlc3Q6OiBw
cmVmaXggaXMgbm90IG5lZWRlZC4KKyAgaWYgKEhhc0ZhdGFsRmFpbHVyZSgpKSByZXR1cm47CisK
KyAgLy8gSWYgd2UgZ2V0IGhlcmUsIHNvbWV0aGluZyBpcyB3cm9uZy4KKyAgRkFJTCgpIDw8ICJU
aGlzIHNob3VsZCBuZXZlciBiZSByZWFjaGVkLiI7Cit9CisKKy8vIFRlc3RzIEhhc0ZhdGFsRmFp
bHVyZSgpIGFmdGVyIGEgZmFpbGVkIEVYUEVDVCBjaGVjay4KK1RFU1QoRmF0YWxGYWlsdXJlVGVz
dCwgTm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lKSB7CisgIHByaW50ZigiKGV4cGVjdGluZyBh
IGZhaWx1cmUgb24gZmFsc2UpXG4iKTsKKyAgRVhQRUNUX1RSVUUoZmFsc2UpOyAgLy8gR2VuZXJh
dGVzIGEgbm9uZmF0YWwgZmFpbHVyZQorICBBU1NFUlRfRkFMU0UoSGFzRmF0YWxGYWlsdXJlKCkp
OyAgLy8gVGhpcyBzaG91bGQgc3VjY2VlZC4KK30KKworLy8gVGVzdHMgaW50ZXJsZWF2aW5nIHVz
ZXIgbG9nZ2luZyBhbmQgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucy4KK1RFU1QoTG9nZ2luZ1Rlc3Qs
IEludGVybGVhdmluZ0xvZ2dpbmdBbmRBc3NlcnRpb25zKSB7CisgIHN0YXRpYyBjb25zdCBpbnQg
YVs0XSA9IHsKKyAgICAzLCA5LCAyLCA2CisgIH07CisKKyAgcHJpbnRmKCIoZXhwZWN0aW5nIDIg
ZmFpbHVyZXMgb24gKDMpID49IChhW2ldKSlcbiIpOworICBmb3IgKGludCBpID0gMDsgaSA8IHN0
YXRpY19jYXN0PGludD4oc2l6ZW9mKGEpL3NpemVvZigqYSkpOyBpKyspIHsKKyAgICBwcmludGYo
ImkgPT0gJWRcbiIsIGkpOworICAgIEVYUEVDVF9HRSgzLCBhW2ldKTsKKyAgfQorfQorCisvLyBU
ZXN0cyB0aGUgU0NPUEVEX1RSQUNFIG1hY3JvLgorCisvLyBBIGhlbHBlciBmdW5jdGlvbiBmb3Ig
dGVzdGluZyBTQ09QRURfVFJBQ0UuCit2b2lkIFN1YldpdGhvdXRUcmFjZShpbnQgbikgeworICBF
WFBFQ1RfRVEoMSwgbik7CisgIEFTU0VSVF9FUSgyLCBuKTsKK30KKworLy8gQW5vdGhlciBoZWxw
ZXIgZnVuY3Rpb24gZm9yIHRlc3RpbmcgU0NPUEVEX1RSQUNFLgordm9pZCBTdWJXaXRoVHJhY2Uo
aW50IG4pIHsKKyAgU0NPUEVEX1RSQUNFKHRlc3Rpbmc6Ok1lc3NhZ2UoKSA8PCAibiA9ICIgPDwg
bik7CisKKyAgU3ViV2l0aG91dFRyYWNlKG4pOworfQorCisvLyBUZXN0cyB0aGF0IFNDT1BFRF9U
UkFDRSgpIG9iZXlzIGxleGljYWwgc2NvcGVzLgorVEVTVChTQ09QRURfVFJBQ0VUZXN0LCBPYmV5
c1Njb3BlcykgeworICBwcmludGYoIihleHBlY3RlZCB0byBmYWlsKVxuIik7CisKKyAgLy8gVGhl
cmUgc2hvdWxkIGJlIG5vIHRyYWNlIGJlZm9yZSBTQ09QRURfVFJBQ0UoKSBpcyBpbnZva2VkLgor
ICBBRERfRkFJTFVSRSgpIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGRu
J3QgaGF2ZSBhIHRyYWNlLiI7CisKKyAgeworICAgIFNDT1BFRF9UUkFDRSgiRXhwZWN0ZWQgdHJh
Y2UiKTsKKyAgICAvLyBBZnRlciBTQ09QRURfVFJBQ0UoKSwgYSBmYWlsdXJlIGluIHRoZSBjdXJy
ZW50IHNjb3BlIHNob3VsZCBjb250YWluCisgICAgLy8gdGhlIHRyYWNlLgorICAgIEFERF9GQUlM
VVJFKCkgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBoYXZlIGEgdHJh
Y2UuIjsKKyAgfQorCisgIC8vIE9uY2UgdGhlIGNvbnRyb2wgbGVhdmVzIHRoZSBzY29wZSBvZiB0
aGUgU0NPUEVEX1RSQUNFKCksIHRoZXJlCisgIC8vIHNob3VsZCBiZSBubyB0cmFjZSBhZ2Fpbi4K
KyAgQUREX0ZBSUxVUkUoKSA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxk
bid0IGhhdmUgYSB0cmFjZS4iOworfQorCisvLyBUZXN0cyB0aGF0IFNDT1BFRF9UUkFDRSB3b3Jr
cyBpbnNpZGUgYSBsb29wLgorVEVTVChTQ09QRURfVFJBQ0VUZXN0LCBXb3Jrc0luTG9vcCkgewor
ICBwcmludGYoIihleHBlY3RlZCB0byBmYWlsKVxuIik7CisKKyAgZm9yIChpbnQgaSA9IDE7IGkg
PD0gMjsgaSsrKSB7CisgICAgU0NPUEVEX1RSQUNFKHRlc3Rpbmc6Ok1lc3NhZ2UoKSA8PCAiaSA9
ICIgPDwgaSk7CisKKyAgICBTdWJXaXRob3V0VHJhY2UoaSk7CisgIH0KK30KKworLy8gVGVzdHMg
dGhhdCBTQ09QRURfVFJBQ0Ugd29ya3MgaW4gYSBzdWJyb3V0aW5lLgorVEVTVChTQ09QRURfVFJB
Q0VUZXN0LCBXb3Jrc0luU3Vicm91dGluZSkgeworICBwcmludGYoIihleHBlY3RlZCB0byBmYWls
KVxuIik7CisKKyAgU3ViV2l0aFRyYWNlKDEpOworICBTdWJXaXRoVHJhY2UoMik7Cit9CisKKy8v
IFRlc3RzIHRoYXQgU0NPUEVEX1RSQUNFIGNhbiBiZSBuZXN0ZWQuCitURVNUKFNDT1BFRF9UUkFD
RVRlc3QsIENhbkJlTmVzdGVkKSB7CisgIHByaW50ZigiKGV4cGVjdGVkIHRvIGZhaWwpXG4iKTsK
KworICBTQ09QRURfVFJBQ0UoIiIpOyAgLy8gQSB0cmFjZSB3aXRob3V0IGEgbWVzc2FnZS4KKwor
ICBTdWJXaXRoVHJhY2UoMik7Cit9CisKKy8vIFRlc3RzIHRoYXQgbXVsdGlwbGUgU0NPUEVEX1RS
QUNFcyBjYW4gYmUgdXNlZCBpbiB0aGUgc2FtZSBzY29wZS4KK1RFU1QoU0NPUEVEX1RSQUNFVGVz
dCwgQ2FuQmVSZXBlYXRlZCkgeworICBwcmludGYoIihleHBlY3RlZCB0byBmYWlsKVxuIik7CisK
KyAgU0NPUEVEX1RSQUNFKCJBIik7CisgIEFERF9GQUlMVVJFKCkKKyAgICAgIDw8ICJUaGlzIGZh
aWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29udGFpbiB0cmFjZSBwb2ludCBBLiI7CisK
KyAgU0NPUEVEX1RSQUNFKCJCIik7CisgIEFERF9GQUlMVVJFKCkKKyAgICAgIDw8ICJUaGlzIGZh
aWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29udGFpbiB0cmFjZSBwb2ludCBBIGFuZCBC
LiI7CisKKyAgeworICAgIFNDT1BFRF9UUkFDRSgiQyIpOworICAgIEFERF9GQUlMVVJFKCkgPDwg
IlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCAiCisgICAgICAgICAgICAgICAg
ICA8PCAiY29udGFpbiB0cmFjZSBwb2ludCBBLCBCLCBhbmQgQy4iOworICB9CisKKyAgU0NPUEVE
X1RSQUNFKCJEIik7CisgIEFERF9GQUlMVVJFKCkgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3Rl
ZCwgYW5kIHNob3VsZCAiCisgICAgICAgICAgICAgICAgPDwgImNvbnRhaW4gdHJhY2UgcG9pbnQg
QSwgQiwgYW5kIEQuIjsKK30KKworI2lmIEdURVNUX0lTX1RIUkVBRFNBRkUKKy8vIFRlc3RzIHRo
YXQgU0NPUEVEX1RSQUNFKClzIGNhbiBiZSB1c2VkIGNvbmN1cnJlbnRseSBmcm9tIG11bHRpcGxl
CisvLyB0aHJlYWRzLiAgTmFtZWx5LCBhbiBhc3NlcnRpb24gc2hvdWxkIGJlIGFmZmVjdGVkIGJ5
CisvLyBTQ09QRURfVFJBQ0UoKXMgaW4gaXRzIG93biB0aHJlYWQgb25seS4KKworLy8gSGVyZSdz
IHRoZSBzZXF1ZW5jZSBvZiBhY3Rpb25zIHRoYXQgaGFwcGVuIGluIHRoZSB0ZXN0OgorLy8KKy8v
ICAgVGhyZWFkIEEgKG1haW4pICAgICAgICAgICAgICAgIHwgVGhyZWFkIEIgKHNwYXduZWQpCisv
LyAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT18PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KKy8vICAgc3Bhd25zIHRocmVhZCBCICAgICAgICAgICAgICAgIHwKKy8vICAg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorLy8gICB3YWl0cyBmb3IgbjEgICAgICAgICAgICAgICAgICAgfCBTQ09QRURfVFJB
Q0UoIlRyYWNlIEIiKTsKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZ2Vu
ZXJhdGVzIGZhaWx1cmUgIzEKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
bm90aWZpZXMgbjEKKy8vICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICBTQ09QRURfVFJBQ0UoIlRyYWNlIEEiKTsg
ICAgICAgfCB3YWl0cyBmb3IgbjIKKy8vICAgZ2VuZXJhdGVzIGZhaWx1cmUgIzIgICAgICAgICAg
IHwKKy8vICAgbm90aWZpZXMgbjIgICAgICAgICAgICAgICAgICAgIHwKKy8vICAgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
Ly8gICB3YWl0cyBmb3IgbjMgICAgICAgICAgICAgICAgICAgfCBnZW5lcmF0ZXMgZmFpbHVyZSAj
MworLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0cmFjZSBCIGRpZXMKKy8v
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZ2VuZXJhdGVzIGZhaWx1cmUgIzQK
Ky8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbm90aWZpZXMgbjMKKy8vICAg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorLy8gICBnZW5lcmF0ZXMgZmFpbHVyZSAjNSAgICAgICAgICAgfCBmaW5pc2hlcwor
Ly8gICB0cmFjZSBBIGRpZXMgICAgICAgICAgICAgICAgICAgfAorLy8gICBnZW5lcmF0ZXMgZmFp
bHVyZSAjNiAgICAgICAgICAgfAorLy8gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
fC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgIHdhaXRzIGZvciB0aHJlYWQg
QiB0byBmaW5pc2ggICB8CisKK3N0cnVjdCBDaGVja1BvaW50cyB7CisgIE5vdGlmaWNhdGlvbiBu
MTsKKyAgTm90aWZpY2F0aW9uIG4yOworICBOb3RpZmljYXRpb24gbjM7Cit9OworCitzdGF0aWMg
dm9pZCBUaHJlYWRXaXRoU2NvcGVkVHJhY2UoQ2hlY2tQb2ludHMqIGNoZWNrX3BvaW50cykgewor
ICB7CisgICAgU0NPUEVEX1RSQUNFKCJUcmFjZSBCIik7CisgICAgQUREX0ZBSUxVUkUoKQorICAg
ICAgICA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMSAoaW4gdGhyZWFkIEIsIG9ubHkgdHJhY2UgQiBh
bGl2ZSkuIjsKKyAgICBjaGVja19wb2ludHMtPm4xLk5vdGlmeSgpOworICAgIGNoZWNrX3BvaW50
cy0+bjIuV2FpdEZvck5vdGlmaWNhdGlvbigpOworCisgICAgQUREX0ZBSUxVUkUoKQorICAgICAg
ICA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMyAoaW4gdGhyZWFkIEIsIHRyYWNlIEEgJiBCIGJvdGgg
YWxpdmUpLiI7CisgIH0gIC8vIFRyYWNlIEIgZGllcyBoZXJlLgorICBBRERfRkFJTFVSRSgpCisg
ICAgICA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjNCAoaW4gdGhyZWFkIEIsIG9ubHkgdHJhY2UgQSBh
bGl2ZSkuIjsKKyAgY2hlY2tfcG9pbnRzLT5uMy5Ob3RpZnkoKTsKK30KKworVEVTVChTQ09QRURf
VFJBQ0VUZXN0LCBXb3Jrc0NvbmN1cnJlbnRseSkgeworICBwcmludGYoIihleHBlY3RpbmcgNiBm
YWlsdXJlcylcbiIpOworCisgIENoZWNrUG9pbnRzIGNoZWNrX3BvaW50czsKKyAgVGhyZWFkV2l0
aFBhcmFtPENoZWNrUG9pbnRzKj4gdGhyZWFkKCZUaHJlYWRXaXRoU2NvcGVkVHJhY2UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2hlY2tfcG9pbnRzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgIGNoZWNrX3BvaW50cy5u
MS5XYWl0Rm9yTm90aWZpY2F0aW9uKCk7CisKKyAgeworICAgIFNDT1BFRF9UUkFDRSgiVHJhY2Ug
QSIpOworICAgIEFERF9GQUlMVVJFKCkKKyAgICAgICAgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzIg
KGluIHRocmVhZCBBLCB0cmFjZSBBICYgQiBib3RoIGFsaXZlKS4iOworICAgIGNoZWNrX3BvaW50
cy5uMi5Ob3RpZnkoKTsKKyAgICBjaGVja19wb2ludHMubjMuV2FpdEZvck5vdGlmaWNhdGlvbigp
OworCisgICAgQUREX0ZBSUxVUkUoKQorICAgICAgICA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjNSAo
aW4gdGhyZWFkIEEsIG9ubHkgdHJhY2UgQSBhbGl2ZSkuIjsKKyAgfSAgLy8gVHJhY2UgQSBkaWVz
IGhlcmUuCisgIEFERF9GQUlMVVJFKCkKKyAgICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM2IChp
biB0aHJlYWQgQSwgbm8gdHJhY2UgYWxpdmUpLiI7CisgIHRocmVhZC5Kb2luKCk7Cit9CisjZW5k
aWYgIC8vIEdURVNUX0lTX1RIUkVBRFNBRkUKKworVEVTVChEaXNhYmxlZFRlc3RzV2FybmluZ1Rl
c3QsCisgICAgIERJU0FCTEVEX0Fsc29SdW5EaXNhYmxlZFRlc3RzRmxhZ1N1cHByZXNzZXNXYXJu
aW5nKSB7CisgIC8vIFRoaXMgdGVzdCBib2R5IGlzIGludGVudGlvbmFsbHkgZW1wdHkuICBJdHMg
c29sZSBwdXJwb3NlIGlzIGZvcgorICAvLyB2ZXJpZnlpbmcgdGhhdCB0aGUgLS1ndGVzdF9hbHNv
X3J1bl9kaXNhYmxlZF90ZXN0cyBmbGFnCisgIC8vIHN1cHByZXNzZXMgdGhlICJZT1UgSEFWRSAx
MiBESVNBQkxFRCBURVNUUyIgd2FybmluZyBhdCB0aGUgZW5kIG9mCisgIC8vIHRoZSB0ZXN0IG91
dHB1dC4KK30KKworLy8gVGVzdHMgdXNpbmcgYXNzZXJ0aW9ucyBvdXRzaWRlIG9mIFRFU1QgYW5k
IFRFU1RfRi4KKy8vCisvLyBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgdHdvIGZhaWx1cmVzIGludGVu
dGlvbmFsbHkuCit2b2lkIEFkSG9jVGVzdCgpIHsKKyAgcHJpbnRmKCJUaGUgbm9uLXRlc3QgcGFy
dCBvZiB0aGUgY29kZSBpcyBleHBlY3RlZCB0byBoYXZlIDIgZmFpbHVyZXMuXG5cbiIpOworICBF
WFBFQ1RfVFJVRShmYWxzZSk7CisgIEVYUEVDVF9FUSgyLCAzKTsKK30KKworLy8gUnVucyBhbGwg
VEVTVHMsIGFsbCBURVNUX0ZzLCBhbmQgdGhlIGFkIGhvYyB0ZXN0LgoraW50IFJ1bkFsbFRlc3Rz
KCkgeworICBBZEhvY1Rlc3QoKTsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KKworLy8g
VGVzdHMgbm9uLWZhdGFsIGZhaWx1cmVzIGluIHRoZSBmaXh0dXJlIGNvbnN0cnVjdG9yLgorY2xh
c3MgTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0IDogcHVibGljIHRlc3Rp
bmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3Ry
dWN0b3JUZXN0KCkgeworICAgIHByaW50ZigiKGV4cGVjdGluZyA1IGZhaWx1cmVzKVxuIik7Cisg
ICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gdGhlIHRlc3QgZml4
dHVyZSBjJ3Rvci4iOworICB9CisKKyAgfk5vbkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVj
dG9yVGVzdCgpIHsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM1LCBp
biB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLiI7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgU2V0VXAo
KSB7CisgICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gU2V0VXAo
KS4iOworICB9CisKKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAgIEFERF9GQUlMVVJF
KCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzQsIGluIFRlYXJEb3duLiI7CisgIH0KK307CisKK1RF
U1RfRihOb25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QsIEZhaWx1cmVJbkNv
bnN0cnVjdG9yKSB7CisgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzMsIGlu
IHRoZSB0ZXN0IGJvZHkuIjsKK30KKworLy8gVGVzdHMgZmF0YWwgZmFpbHVyZXMgaW4gdGhlIGZp
eHR1cmUgY29uc3RydWN0b3IuCitjbGFzcyBGYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3Rv
clRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICBGYXRhbEZhaWx1
cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QoKSB7CisgICAgcHJpbnRmKCIoZXhwZWN0aW5nIDIg
ZmFpbHVyZXMpXG4iKTsKKyAgICBJbml0KCk7CisgIH0KKworICB+RmF0YWxGYWlsdXJlSW5GaXh0
dXJlQ29uc3RydWN0b3JUZXN0KCkgeworICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIGZh
aWx1cmUgIzIsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuIjsKKyAgfQorCisgIHZpcnR1YWwg
dm9pZCBTZXRVcCgpIHsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJVTkVYUEVDVEVEIGZhaWx1cmUg
aW4gU2V0VXAoKS4gICIKKyAgICAgICAgICAgICAgICAgIDw8ICJXZSBzaG91bGQgbmV2ZXIgZ2V0
IGhlcmUsIGFzIHRoZSB0ZXN0IGZpeHR1cmUgYyd0b3IgIgorICAgICAgICAgICAgICAgICAgPDwg
ImhhZCBhIGZhdGFsIGZhaWx1cmUuIjsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigp
IHsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJVTkVYUEVDVEVEIGZhaWx1cmUgaW4gVGVhckRvd24o
KS4gICIKKyAgICAgICAgICAgICAgICAgIDw8ICJXZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGFz
IHRoZSB0ZXN0IGZpeHR1cmUgYyd0b3IgIgorICAgICAgICAgICAgICAgICAgPDwgImhhZCBhIGZh
dGFsIGZhaWx1cmUuIjsKKyAgfQorCisgcHJpdmF0ZToKKyAgdm9pZCBJbml0KCkgeworICAgIEZB
SUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gdGhlIHRlc3QgZml4dHVyZSBjJ3Rvci4i
OworICB9Cit9OworCitURVNUX0YoRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0
LCBGYWlsdXJlSW5Db25zdHJ1Y3RvcikgeworICBBRERfRkFJTFVSRSgpIDw8ICJVTkVYUEVDVEVE
IGZhaWx1cmUgaW4gdGhlIHRlc3QgYm9keS4gICIKKyAgICAgICAgICAgICAgICA8PCAiV2Ugc2hv
dWxkIG5ldmVyIGdldCBoZXJlLCBhcyB0aGUgdGVzdCBmaXh0dXJlIGMndG9yICIKKyAgICAgICAg
ICAgICAgICA8PCAiaGFkIGEgZmF0YWwgZmFpbHVyZS4iOworfQorCisvLyBUZXN0cyBub24tZmF0
YWwgZmFpbHVyZXMgaW4gU2V0VXAoKS4KK2NsYXNzIE5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0
IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgdmlydHVhbCB+Tm9uRmF0
YWxGYWlsdXJlSW5TZXRVcFRlc3QoKSB7CisgICAgRGVpbml0KCk7CisgIH0KKworICB2aXJ0dWFs
IHZvaWQgU2V0VXAoKSB7CisgICAgcHJpbnRmKCIoZXhwZWN0aW5nIDQgZmFpbHVyZXMpXG4iKTsK
KyAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBTZXRVcCgpLiI7
CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgRkFJTCgpIDw8ICJFeHBl
Y3RlZCBmYWlsdXJlICMzLCBpbiBUZWFyRG93bigpLiI7CisgIH0KKyBwcml2YXRlOgorICB2b2lk
IERlaW5pdCgpIHsKKyAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzQsIGluIHRoZSB0
ZXN0IGZpeHR1cmUgZCd0b3IuIjsKKyAgfQorfTsKKworVEVTVF9GKE5vbkZhdGFsRmFpbHVyZUlu
U2V0VXBUZXN0LCBGYWlsdXJlSW5TZXRVcCkgeworICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1
cmUgIzIsIGluIHRoZSB0ZXN0IGZ1bmN0aW9uLiI7Cit9CisKKy8vIFRlc3RzIGZhdGFsIGZhaWx1
cmVzIGluIFNldFVwKCkuCitjbGFzcyBGYXRhbEZhaWx1cmVJblNldFVwVGVzdCA6IHB1YmxpYyB0
ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHZpcnR1YWwgfkZhdGFsRmFpbHVyZUluU2V0
VXBUZXN0KCkgeworICAgIERlaW5pdCgpOworICB9CisKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkg
eworICAgIHByaW50ZigiKGV4cGVjdGluZyAzIGZhaWx1cmVzKVxuIik7CisgICAgRkFJTCgpIDw8
ICJFeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBTZXRVcCgpLiI7CisgIH0KKworICB2aXJ0dWFsIHZv
aWQgVGVhckRvd24oKSB7CisgICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMyLCBpbiBU
ZWFyRG93bigpLiI7CisgIH0KKyBwcml2YXRlOgorICB2b2lkIERlaW5pdCgpIHsKKyAgICBGQUlM
KCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuIjsK
KyAgfQorfTsKKworVEVTVF9GKEZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LCBGYWlsdXJlSW5TZXRV
cCkgeworICBGQUlMKCkgPDwgIlVORVhQRUNURUQgZmFpbHVyZSBpbiB0aGUgdGVzdCBmdW5jdGlv
bi4gICIKKyAgICAgICAgIDw8ICJXZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGFzIFNldFVwKCkg
ZmFpbGVkLiI7Cit9CisKK1RFU1QoQWRkRmFpbHVyZUF0VGVzdCwgTWVzc2FnZUNvbnRhaW5zU3Bl
Y2lmaWVkRmlsZUFuZExpbmVOdW1iZXIpIHsKKyAgQUREX0ZBSUxVUkVfQVQoImZvby5jYyIsIDQy
KSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSBpbiBmb28uY2MiOworfQorCisjaWYgR1RFU1RfSVNfVEhS
RUFEU0FGRQorCisvLyBBIHVuYXJ5IGZ1bmN0aW9uIHRoYXQgbWF5IGRpZS4KK3ZvaWQgRGllSWYo
Ym9vbCBzaG91bGRfZGllKSB7CisgIEdURVNUX0NIRUNLXyghc2hvdWxkX2RpZSkgPDwgIiAtIGRl
YXRoIGluc2lkZSBEaWVJZigpLiI7Cit9CisKKy8vIFRlc3RzIHJ1bm5pbmcgZGVhdGggdGVzdHMg
aW4gYSBtdWx0aS10aHJlYWRlZCBjb250ZXh0LgorCisvLyBVc2VkIGZvciBjb29yZGluYXRpb24g
YmV0d2VlbiB0aGUgbWFpbiBhbmQgdGhlIHNwYXduIHRocmVhZC4KK3N0cnVjdCBTcGF3blRocmVh
ZE5vdGlmaWNhdGlvbnMgeworICBTcGF3blRocmVhZE5vdGlmaWNhdGlvbnMoKSB7fQorCisgIE5v
dGlmaWNhdGlvbiBzcGF3bl90aHJlYWRfc3RhcnRlZDsKKyAgTm90aWZpY2F0aW9uIHNwYXduX3Ro
cmVhZF9va190b190ZXJtaW5hdGU7CisKKyBwcml2YXRlOgorICBHVEVTVF9ESVNBTExPV19DT1BZ
X0FORF9BU1NJR05fKFNwYXduVGhyZWFkTm90aWZpY2F0aW9ucyk7Cit9OworCisvLyBUaGUgZnVu
Y3Rpb24gdG8gYmUgZXhlY3V0ZWQgaW4gdGhlIHRocmVhZCBzcGF3biBieSB0aGUKKy8vIE11bHRp
cGxlVGhyZWFkcyB0ZXN0IChiZWxvdykuCitzdGF0aWMgdm9pZCBUaHJlYWRSb3V0aW5lKFNwYXdu
VGhyZWFkTm90aWZpY2F0aW9ucyogbm90aWZpY2F0aW9ucykgeworICAvLyBTaWduYWxzIHRoZSBt
YWluIHRocmVhZCB0aGF0IHRoaXMgdGhyZWFkIGhhcyBzdGFydGVkLgorICBub3RpZmljYXRpb25z
LT5zcGF3bl90aHJlYWRfc3RhcnRlZC5Ob3RpZnkoKTsKKworICAvLyBXYWl0cyBmb3IgcGVybWlz
c2lvbiB0byBmaW5pc2ggZnJvbSB0aGUgbWFpbiB0aHJlYWQuCisgIG5vdGlmaWNhdGlvbnMtPnNw
YXduX3RocmVhZF9va190b190ZXJtaW5hdGUuV2FpdEZvck5vdGlmaWNhdGlvbigpOworfQorCisv
LyBUaGlzIGlzIGEgZGVhdGgtdGVzdCB0ZXN0LCBidXQgaXQncyBub3QgbmFtZWQgd2l0aCBhIERl
YXRoVGVzdAorLy8gc3VmZml4LiAgSXQgc3RhcnRzIHRocmVhZHMgd2hpY2ggbWlnaHQgaW50ZXJm
ZXJlIHdpdGggbGF0ZXIKKy8vIGRlYXRoIHRlc3RzLCBzbyBpdCBtdXN0IHJ1biBhZnRlciBhbGwg
b3RoZXIgZGVhdGggdGVzdHMuCitjbGFzcyBEZWF0aFRlc3RBbmRNdWx0aVRocmVhZHNUZXN0IDog
cHVibGljIHRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgLy8gU3RhcnRzIGEgdGhyZWFk
IGFuZCB3YWl0cyBmb3IgaXQgdG8gYmVnaW4uCisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAg
ICB0aHJlYWRfLnJlc2V0KG5ldyBUaHJlYWRXaXRoUGFyYW08U3Bhd25UaHJlYWROb3RpZmljYXRp
b25zKj4oCisgICAgICAgICZUaHJlYWRSb3V0aW5lLCAmbm90aWZpY2F0aW9uc18sIE5VTEwpKTsK
KyAgICBub3RpZmljYXRpb25zXy5zcGF3bl90aHJlYWRfc3RhcnRlZC5XYWl0Rm9yTm90aWZpY2F0
aW9uKCk7CisgIH0KKyAgLy8gVGVsbHMgdGhlIHRocmVhZCB0byBmaW5pc2gsIGFuZCByZWFwcyBp
dC4KKyAgLy8gRGVwZW5kaW5nIG9uIHRoZSB2ZXJzaW9uIG9mIHRoZSB0aHJlYWQgbGlicmFyeSBp
biB1c2UsCisgIC8vIGEgbWFuYWdlciB0aHJlYWQgbWlnaHQgc3RpbGwgYmUgbGVmdCBydW5uaW5n
IHRoYXQgd2lsbCBpbnRlcmZlcmUKKyAgLy8gd2l0aCBsYXRlciBkZWF0aCB0ZXN0cy4gIFRoaXMg
aXMgdW5mb3J0dW5hdGUsIGJ1dCB0aGlzIGNsYXNzCisgIC8vIGNsZWFucyB1cCBhZnRlciBpdHNl
bGYgYXMgYmVzdCBpdCBjYW4uCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBub3Rp
ZmljYXRpb25zXy5zcGF3bl90aHJlYWRfb2tfdG9fdGVybWluYXRlLk5vdGlmeSgpOworICB9CisK
KyBwcml2YXRlOgorICBTcGF3blRocmVhZE5vdGlmaWNhdGlvbnMgbm90aWZpY2F0aW9uc187Cisg
IHRlc3Rpbmc6OmludGVybmFsOjpzY29wZWRfcHRyPFRocmVhZFdpdGhQYXJhbTxTcGF3blRocmVh
ZE5vdGlmaWNhdGlvbnMqPiA+CisgICAgICB0aHJlYWRfOworfTsKKworI2VuZGlmICAvLyBHVEVT
VF9JU19USFJFQURTQUZFCisKKy8vIFRoZSBNaXhlZFVwVGVzdENhc2VUZXN0IHRlc3QgY2FzZSB2
ZXJpZmllcyB0aGF0IEdvb2dsZSBUZXN0IHdpbGwgZmFpbCBhCisvLyB0ZXN0IGlmIGl0IHVzZXMg
YSBkaWZmZXJlbnQgZml4dHVyZSBjbGFzcyB0aGFuIHdoYXQgb3RoZXIgdGVzdHMgaW4KKy8vIHRo
ZSBzYW1lIHRlc3QgY2FzZSB1c2UuICBJdCBkZWxpYmVyYXRlbHkgY29udGFpbnMgdHdvIGZpeHR1
cmUKKy8vIGNsYXNzZXMgd2l0aCB0aGUgc2FtZSBuYW1lIGJ1dCBkZWZpbmVkIGluIGRpZmZlcmVu
dCBuYW1lc3BhY2VzLgorCisvLyBUaGUgTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRl
c3QgdGVzdCBjYXNlIHZlcmlmaWVzIHRoYXQKKy8vIHdoZW4gdGhlIHVzZXIgZGVmaW5lcyB0d28g
dGVzdHMgd2l0aCB0aGUgc2FtZSB0ZXN0IGNhc2UgbmFtZSBBTkQKKy8vIHNhbWUgdGVzdCBuYW1l
IChidXQgaW4gZGlmZmVyZW50IG5hbWVzcGFjZXMpLCB0aGUgc2Vjb25kIHRlc3Qgd2lsbAorLy8g
ZmFpbC4KKworbmFtZXNwYWNlIGZvbyB7CisKK2NsYXNzIE1peGVkVXBUZXN0Q2FzZVRlc3QgOiBw
dWJsaWMgdGVzdGluZzo6VGVzdCB7Cit9OworCitURVNUX0YoTWl4ZWRVcFRlc3RDYXNlVGVzdCwg
Rmlyc3RUZXN0RnJvbU5hbWVzcGFjZUZvbykge30KK1RFU1RfRihNaXhlZFVwVGVzdENhc2VUZXN0
LCBTZWNvbmRUZXN0RnJvbU5hbWVzcGFjZUZvbykge30KKworY2xhc3MgTWl4ZWRVcFRlc3RDYXNl
V2l0aFNhbWVUZXN0TmFtZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cit9OworCitURVNU
X0YoTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QsCisgICAgICAgVGhlU2Vjb25k
VGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwpIHt9CisKK30gIC8vIG5hbWVzcGFjZSBmb28KKwor
bmFtZXNwYWNlIGJhciB7CisKK2NsYXNzIE1peGVkVXBUZXN0Q2FzZVRlc3QgOiBwdWJsaWMgdGVz
dGluZzo6VGVzdCB7Cit9OworCisvLyBUaGUgZm9sbG93aW5nIHR3byB0ZXN0cyBhcmUgZXhwZWN0
ZWQgdG8gZmFpbC4gIFdlIHJlbHkgb24gdGhlCisvLyBnb2xkZW4gZmlsZSB0byBjaGVjayB0aGF0
IEdvb2dsZSBUZXN0IGdlbmVyYXRlcyB0aGUgcmlnaHQgZXJyb3IgbWVzc2FnZS4KK1RFU1RfRihN
aXhlZFVwVGVzdENhc2VUZXN0LCBUaGlzU2hvdWxkRmFpbCkge30KK1RFU1RfRihNaXhlZFVwVGVz
dENhc2VUZXN0LCBUaGlzU2hvdWxkRmFpbFRvbykge30KKworY2xhc3MgTWl4ZWRVcFRlc3RDYXNl
V2l0aFNhbWVUZXN0TmFtZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cit9OworCisvLyBF
eHBlY3RlZCB0byBmYWlsLiAgV2UgcmVseSBvbiB0aGUgZ29sZGVuIGZpbGUgdG8gY2hlY2sgdGhh
dCBHb29nbGUgVGVzdAorLy8gZ2VuZXJhdGVzIHRoZSByaWdodCBlcnJvciBtZXNzYWdlLgorVEVT
VF9GKE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LAorICAgICAgIFRoZVNlY29u
ZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsKSB7fQorCit9ICAvLyBuYW1lc3BhY2UgYmFyCisK
Ky8vIFRoZSBmb2xsb3dpbmcgdHdvIHRlc3QgY2FzZXMgdmVyaWZ5IHRoYXQgR29vZ2xlIFRlc3Qg
Y2F0Y2hlcyB0aGUgdXNlcgorLy8gZXJyb3Igb2YgbWl4aW5nIFRFU1QgYW5kIFRFU1RfRiBpbiB0
aGUgc2FtZSB0ZXN0IGNhc2UuICBUaGUgZmlyc3QKKy8vIHRlc3QgY2FzZSBjaGVja3MgdGhlIHNj
ZW5hcmlvIHdoZXJlIFRFU1RfRiBhcHBlYXJzIGJlZm9yZSBURVNULCBhbmQKKy8vIHRoZSBzZWNv
bmQgb25lIGNoZWNrcyB3aGVyZSBURVNUIGFwcGVhcnMgYmVmb3JlIFRFU1RfRi4KKworY2xhc3Mg
VEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlIDogcHVibGljIHRlc3Rpbmc6OlRl
c3QgeworfTsKKworVEVTVF9GKFRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZSwg
RGVmaW5lZFVzaW5nVEVTVF9GKSB7fQorCisvLyBFeHBlY3RlZCB0byBmYWlsLiAgV2UgcmVseSBv
biB0aGUgZ29sZGVuIGZpbGUgdG8gY2hlY2sgdGhhdCBHb29nbGUgVGVzdAorLy8gZ2VuZXJhdGVz
IHRoZSByaWdodCBlcnJvciBtZXNzYWdlLgorVEVTVChURVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2Ft
ZV90ZXN0X2Nhc2UsIERlZmluZWRVc2luZ1RFU1RBbmRTaG91bGRGYWlsKSB7fQorCitjbGFzcyBU
RVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCB7Cit9OworCitURVNUKFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZSwgRGVm
aW5lZFVzaW5nVEVTVCkge30KKworLy8gRXhwZWN0ZWQgdG8gZmFpbC4gIFdlIHJlbHkgb24gdGhl
IGdvbGRlbiBmaWxlIHRvIGNoZWNrIHRoYXQgR29vZ2xlIFRlc3QKKy8vIGdlbmVyYXRlcyB0aGUg
cmlnaHQgZXJyb3IgbWVzc2FnZS4KK1RFU1RfRihURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90
ZXN0X2Nhc2UsIERlZmluZWRVc2luZ1RFU1RfRkFuZFNob3VsZEZhaWwpIHsKK30KKworLy8gVXNl
ZCBmb3IgdGVzdGluZyBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGFuZCBFWFBFQ1RfRkFUQUxf
RkFJTFVSRSgpLgoraW50IGdsb2JhbF9pbnRlZ2VyID0gMDsKKworLy8gVGVzdHMgdGhhdCBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRSgpIGNhbiByZWZlcmVuY2UgZ2xvYmFsIHZhcmlhYmxlcy4KK1RF
U1QoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgQ2FuUmVmZXJlbmNlR2xvYmFsVmFyaWFibGVz
KSB7CisgIGdsb2JhbF9pbnRlZ2VyID0gMDsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoewor
ICAgIEVYUEVDVF9FUSgxLCBnbG9iYWxfaW50ZWdlcikgPDwgIkV4cGVjdGVkIG5vbi1mYXRhbCBm
YWlsdXJlLiI7CisgIH0sICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKTsKK30KKworLy8g
VGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGNhbiByZWZlcmVuY2UgbG9jYWwg
dmFyaWFibGVzCisvLyAoc3RhdGljIG9yIG5vdCkuCitURVNUKEV4cGVjdE5vbmZhdGFsRmFpbHVy
ZVRlc3QsIENhblJlZmVyZW5jZUxvY2FsVmFyaWFibGVzKSB7CisgIGludCBtID0gMDsKKyAgc3Rh
dGljIGludCBuOworICBuID0gMTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeworICAgIEVY
UEVDVF9FUShtLCBuKSA8PCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIjsKKyAgfSwgIkV4
cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiIpOworfQorCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9O
T05GQVRBTF9GQUlMVVJFKCkgc3VjY2VlZHMgd2hlbiB0aGVyZSBpcyBleGFjdGx5CisvLyBvbmUg
bm9uLWZhdGFsIGZhaWx1cmUgYW5kIG5vIGZhdGFsIGZhaWx1cmUuCitURVNUKEV4cGVjdE5vbmZh
dGFsRmFpbHVyZVRlc3QsIFN1Y2NlZWRzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUpIHsK
KyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeworICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVj
dGVkIG5vbi1mYXRhbCBmYWlsdXJlLiI7CisgIH0sICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVy
ZS4iKTsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGZhaWxz
IHdoZW4gdGhlcmUgaXMgbm8KKy8vIG5vbi1mYXRhbCBmYWlsdXJlLgorVEVTVChFeHBlY3ROb25m
YXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5UaGVyZUlzTm9Ob25mYXRhbEZhaWx1cmUpIHsKKyAg
cHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRSh7CisgIH0sICIiKTsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRSgpIGZhaWxzIHdoZW4gdGhlcmUgYXJlIHR3bworLy8gbm9uLWZhdGFsIGZhaWx1cmVzLgor
VEVTVChFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5UaGVyZUFyZVR3b05vbmZh
dGFsRmFpbHVyZXMpIHsKKyAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOworICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7CisgICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQg
bm9uLWZhdGFsIGZhaWx1cmUgMS4iOworICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIG5v
bi1mYXRhbCBmYWlsdXJlIDIuIjsKKyAgfSwgIiIpOworfQorCisvLyBUZXN0cyB0aGF0IEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFKCkgZmFpbHMgd2hlbiB0aGVyZSBpcyBvbmUgZmF0YWwKKy8vIGZh
aWx1cmUuCitURVNUKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblRoZXJlSXNP
bmVGYXRhbEZhaWx1cmUpIHsKKyAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOwor
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7CisgICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYXRh
bCBmYWlsdXJlLiI7CisgIH0sICIiKTsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlIHN0YXRlbWVudCBiZWluZworLy8gdGVzdGVkIHJl
dHVybnMuCitURVNUKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblN0YXRlbWVu
dFJldHVybnMpIHsKKyAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOworICBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRSh7CisgICAgcmV0dXJuOworICB9LCAiIik7Cit9CisKKyNpZiBH
VEVTVF9IQVNfRVhDRVBUSU9OUworCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKCkgZmFpbHMgd2hlbiB0aGUgc3RhdGVtZW50IGJlaW5nCisvLyB0ZXN0ZWQgdGhyb3dzLgor
VEVTVChFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3Mp
IHsKKyAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOworICB0cnkgeworICAgIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKKyAgICAgIHRocm93IDA7CisgICAgfSwgIiIpOworICB9
IGNhdGNoKGludCkgeyAgLy8gTk9MSU5UCisgIH0KK30KKworI2VuZGlmICAvLyBHVEVTVF9IQVNf
RVhDRVBUSU9OUworCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgY2FuIHJl
ZmVyZW5jZSBnbG9iYWwgdmFyaWFibGVzLgorVEVTVChFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBD
YW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJsZXMpIHsKKyAgZ2xvYmFsX2ludGVnZXIgPSAwOworICBF
WFBFQ1RfRkFUQUxfRkFJTFVSRSh7CisgICAgQVNTRVJUX0VRKDEsIGdsb2JhbF9pbnRlZ2VyKSA8
PCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iOworICB9LCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVy
ZS4iKTsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGNhbiByZWZl
cmVuY2UgbG9jYWwgc3RhdGljCisvLyB2YXJpYWJsZXMuCitURVNUKEV4cGVjdEZhdGFsRmFpbHVy
ZVRlc3QsIENhblJlZmVyZW5jZUxvY2FsU3RhdGljVmFyaWFibGVzKSB7CisgIHN0YXRpYyBpbnQg
bjsKKyAgbiA9IDE7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsKKyAgICBBU1NFUlRfRVEoMCwg
bikgPDwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIjsKKyAgfSwgIkV4cGVjdGVkIGZhdGFsIGZh
aWx1cmUuIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKSBzdWNj
ZWVkcyB3aGVuIHRoZXJlIGlzIGV4YWN0bHkKKy8vIG9uZSBmYXRhbCBmYWlsdXJlIGFuZCBubyBu
b24tZmF0YWwgZmFpbHVyZS4KK1RFU1QoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgU3VjY2VlZHNX
aGVuVGhlcmVJc09uZUZhdGFsRmFpbHVyZSkgeworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7Cisg
ICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiI7CisgIH0sICJFeHBlY3RlZCBm
YXRhbCBmYWlsdXJlLiIpOworfQorCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJF
KCkgZmFpbHMgd2hlbiB0aGVyZSBpcyBubyBmYXRhbAorLy8gZmFpbHVyZS4KK1RFU1QoRXhwZWN0
RmF0YWxGYWlsdXJlVGVzdCwgRmFpbHNXaGVuVGhlcmVJc05vRmF0YWxGYWlsdXJlKSB7CisgIHBy
aW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUo
eworICB9LCAiIik7Cit9CisKKy8vIEEgaGVscGVyIGZvciBnZW5lcmF0aW5nIGEgZmF0YWwgZmFp
bHVyZS4KK3ZvaWQgRmF0YWxGYWlsdXJlKCkgeworICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhdGFs
IGZhaWx1cmUuIjsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGZh
aWxzIHdoZW4gdGhlcmUgYXJlIHR3bworLy8gZmF0YWwgZmFpbHVyZXMuCitURVNUKEV4cGVjdEZh
dGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblRoZXJlQXJlVHdvRmF0YWxGYWlsdXJlcykgeworICBw
cmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlKVxuIik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJF
KHsKKyAgICBGYXRhbEZhaWx1cmUoKTsKKyAgICBGYXRhbEZhaWx1cmUoKTsKKyAgfSwgIiIpOwor
fQorCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgZmFpbHMgd2hlbiB0aGVy
ZSBpcyBvbmUgbm9uLWZhdGFsCisvLyBmYWlsdXJlLgorVEVTVChFeHBlY3RGYXRhbEZhaWx1cmVU
ZXN0LCBGYWlsc1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlKSB7CisgIHByaW50ZigiKGV4
cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeworICAgIEFE
RF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiI7CisgIH0sICIiKTsK
K30KKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhl
IHN0YXRlbWVudCBiZWluZworLy8gdGVzdGVkIHJldHVybnMuCitURVNUKEV4cGVjdEZhdGFsRmFp
bHVyZVRlc3QsIEZhaWxzV2hlblN0YXRlbWVudFJldHVybnMpIHsKKyAgcHJpbnRmKCIoZXhwZWN0
aW5nIGEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7CisgICAgcmV0dXJu
OworICB9LCAiIik7Cit9CisKKyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUworCisvLyBUZXN0cyB0
aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgZmFpbHMgd2hlbiB0aGUgc3RhdGVtZW50IGJlaW5n
CisvLyB0ZXN0ZWQgdGhyb3dzLgorVEVTVChFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1do
ZW5TdGF0ZW1lbnRUaHJvd3MpIHsKKyAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIp
OworICB0cnkgeworICAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsKKyAgICAgIHRocm93IDA7Cisg
ICAgfSwgIiIpOworICB9IGNhdGNoKGludCkgeyAgLy8gTk9MSU5UCisgIH0KK30KKworI2VuZGlm
ICAvLyBHVEVTVF9IQVNfRVhDRVBUSU9OUworCisvLyBUaGlzICNpZmRlZiBibG9jayB0ZXN0cyB0
aGUgb3V0cHV0IG9mIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMuCisKKyNpZiBHVEVTVF9IQVNf
UEFSQU1fVEVTVAorCitzdGQ6OnN0cmluZyBQYXJhbU5hbWVGdW5jKGNvbnN0IHRlc3Rpbmc6OlRl
c3RQYXJhbUluZm88c3RkOjpzdHJpbmc+JiBpbmZvKSB7CisgIHJldHVybiBpbmZvLnBhcmFtOwor
fQorCitjbGFzcyBQYXJhbVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQYXJhbTxzdGQ6
OnN0cmluZz4geworfTsKKworVEVTVF9QKFBhcmFtVGVzdCwgU3VjY2VzcykgeworICBFWFBFQ1Rf
RVEoImEiLCBHZXRQYXJhbSgpKTsKK30KKworVEVTVF9QKFBhcmFtVGVzdCwgRmFpbHVyZSkgewor
ICBFWFBFQ1RfRVEoImIiLCBHZXRQYXJhbSgpKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSI7Cit9CisK
K0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFByaW50aW5nU3RyaW5ncywKKyAgICAgICAgICAgICAg
ICAgICAgICAgIFBhcmFtVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OlZh
bHVlcyhzdGQ6OnN0cmluZygiYSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtTmFt
ZUZ1bmMpOworCisjZW5kaWYgIC8vIEdURVNUX0hBU19QQVJBTV9URVNUCisKKy8vIFRoaXMgI2lm
ZGVmIGJsb2NrIHRlc3RzIHRoZSBvdXRwdXQgb2YgdHlwZWQgdGVzdHMuCisjaWYgR1RFU1RfSEFT
X1RZUEVEX1RFU1QKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBUeXBlZFRlc3QgOiBw
dWJsaWMgdGVzdGluZzo6VGVzdCB7Cit9OworCitUWVBFRF9URVNUX0NBU0UoVHlwZWRUZXN0LCB0
ZXN0aW5nOjpUeXBlczxpbnQ+KTsKKworVFlQRURfVEVTVChUeXBlZFRlc3QsIFN1Y2Nlc3MpIHsK
KyAgRVhQRUNUX0VRKDAsIFR5cGVQYXJhbSgpKTsKK30KKworVFlQRURfVEVTVChUeXBlZFRlc3Qs
IEZhaWx1cmUpIHsKKyAgRVhQRUNUX0VRKDEsIFR5cGVQYXJhbSgpKSA8PCAiRXhwZWN0ZWQgZmFp
bHVyZSI7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1QKKworLy8gVGhpcyAj
aWZkZWYgYmxvY2sgdGVzdHMgdGhlIG91dHB1dCBvZiB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMu
CisjaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2Ns
YXNzIFR5cGVkVGVzdFAgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cit9OworCitUWVBFRF9URVNU
X0NBU0VfUChUeXBlZFRlc3RQKTsKKworVFlQRURfVEVTVF9QKFR5cGVkVGVzdFAsIFN1Y2Nlc3Mp
IHsKKyAgRVhQRUNUX0VRKDBVLCBUeXBlUGFyYW0oKSk7Cit9CisKK1RZUEVEX1RFU1RfUChUeXBl
ZFRlc3RQLCBGYWlsdXJlKSB7CisgIEVYUEVDVF9FUSgxVSwgVHlwZVBhcmFtKCkpIDw8ICJFeHBl
Y3RlZCBmYWlsdXJlIjsKK30KKworUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoVHlwZWRUZXN0
UCwgU3VjY2VzcywgRmFpbHVyZSk7CisKK3R5cGVkZWYgdGVzdGluZzo6VHlwZXM8dW5zaWduZWQg
Y2hhciwgdW5zaWduZWQgaW50PiBVbnNpZ25lZFR5cGVzOworSU5TVEFOVElBVEVfVFlQRURfVEVT
VF9DQVNFX1AoVW5zaWduZWQsIFR5cGVkVGVzdFAsIFVuc2lnbmVkVHlwZXMpOworCisjZW5kaWYg
IC8vIEdURVNUX0hBU19UWVBFRF9URVNUX1AKKworI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCisK
Ky8vIFdlIHJlbHkgb24gdGhlIGdvbGRlbiBmaWxlIHRvIHZlcmlmeSB0aGF0IHRlc3RzIHdob3Nl
IHRlc3QgY2FzZQorLy8gbmFtZSBlbmRzIHdpdGggRGVhdGhUZXN0IGFyZSBydW4gZmlyc3QuCisK
K1RFU1QoQURlYXRoVGVzdCwgU2hvdWxkUnVuRmlyc3QpIHsKK30KKworIyBpZiBHVEVTVF9IQVNf
VFlQRURfVEVTVAorCisvLyBXZSByZWx5IG9uIHRoZSBnb2xkZW4gZmlsZSB0byB2ZXJpZnkgdGhh
dCB0eXBlZCB0ZXN0cyB3aG9zZSB0ZXN0CisvLyBjYXNlIG5hbWUgZW5kcyB3aXRoIERlYXRoVGVz
dCBhcmUgcnVuIGZpcnN0LgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIEFUeXBlZERl
YXRoVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK307CisKK3R5cGVkZWYgdGVzdGluZzo6
VHlwZXM8aW50LCBkb3VibGU+IE51bWVyaWNUeXBlczsKK1RZUEVEX1RFU1RfQ0FTRShBVHlwZWRE
ZWF0aFRlc3QsIE51bWVyaWNUeXBlcyk7CisKK1RZUEVEX1RFU1QoQVR5cGVkRGVhdGhUZXN0LCBT
aG91bGRSdW5GaXJzdCkgeworfQorCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVAor
CisjIGlmIEdURVNUX0hBU19UWVBFRF9URVNUX1AKKworCisvLyBXZSByZWx5IG9uIHRoZSBnb2xk
ZW4gZmlsZSB0byB2ZXJpZnkgdGhhdCB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMKKy8vIHdob3Nl
IHRlc3QgY2FzZSBuYW1lIGVuZHMgd2l0aCBEZWF0aFRlc3QgYXJlIHJ1biBmaXJzdC4KKwordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBBVHlwZVBhcmFtRGVhdGhUZXN0IDogcHVibGljIHRl
c3Rpbmc6OlRlc3QgeworfTsKKworVFlQRURfVEVTVF9DQVNFX1AoQVR5cGVQYXJhbURlYXRoVGVz
dCk7CisKK1RZUEVEX1RFU1RfUChBVHlwZVBhcmFtRGVhdGhUZXN0LCBTaG91bGRSdW5GaXJzdCkg
eworfQorCitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChBVHlwZVBhcmFtRGVhdGhUZXN0LCBT
aG91bGRSdW5GaXJzdCk7CisKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBBVHlw
ZVBhcmFtRGVhdGhUZXN0LCBOdW1lcmljVHlwZXMpOworCisjIGVuZGlmICAvLyBHVEVTVF9IQVNf
VFlQRURfVEVTVF9QCisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QKKworLy8gVGVz
dHMgdmFyaW91cyBmYWlsdXJlIGNvbmRpdGlvbnMgb2YKKy8vIEVYUEVDVF97LE5PTn1GQVRBTF9G
QUlMVVJFeyxfT05fQUxMX1RIUkVBRFN9LgorY2xhc3MgRXhwZWN0RmFpbHVyZVRlc3QgOiBwdWJs
aWMgdGVzdGluZzo6VGVzdCB7CisgcHVibGljOiAgLy8gTXVzdCBiZSBwdWJsaWMgYW5kIG5vdCBw
cm90ZWN0ZWQgZHVlIHRvIGEgYnVnIGluIGcrKyAzLjQuMi4KKyAgZW51bSBGYWlsdXJlTW9kZSB7
CisgICAgRkFUQUxfRkFJTFVSRSwKKyAgICBOT05GQVRBTF9GQUlMVVJFCisgIH07CisgIHN0YXRp
YyB2b2lkIEFkZEZhaWx1cmUoRmFpbHVyZU1vZGUgZmFpbHVyZSkgeworICAgIGlmIChmYWlsdXJl
ID09IEZBVEFMX0ZBSUxVUkUpIHsKKyAgICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmF0YWwgZmFp
bHVyZS4iOworICAgIH0gZWxzZSB7CisgICAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBu
b24tZmF0YWwgZmFpbHVyZS4iOworICAgIH0KKyAgfQorfTsKKworVEVTVF9GKEV4cGVjdEZhaWx1
cmVUZXN0LCBFeHBlY3RGYXRhbEZhaWx1cmUpIHsKKyAgLy8gRXhwZWN0ZWQgZmF0YWwgZmFpbHVy
ZSwgYnV0IHN1Y2NlZWRzLgorICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7Cisg
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKFNVQ0NFRUQoKSwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUu
Iik7CisgIC8vIEV4cGVjdGVkIGZhdGFsIGZhaWx1cmUsIGJ1dCBnb3QgYSBub24tZmF0YWwgZmFp
bHVyZS4KKyAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfRkFU
QUxfRkFJTFVSRShBZGRGYWlsdXJlKE5PTkZBVEFMX0ZBSUxVUkUpLCAiRXhwZWN0ZWQgbm9uLWZh
dGFsICIKKyAgICAgICAgICAgICAgICAgICAgICAgImZhaWx1cmUuIik7CisgIC8vIFdyb25nIG1l
c3NhZ2UuCisgIHByaW50ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUpXG4iKTsKKyAgRVhQRUNUX0ZB
VEFMX0ZBSUxVUkUoQWRkRmFpbHVyZShGQVRBTF9GQUlMVVJFKSwgIlNvbWUgb3RoZXIgZmF0YWwg
ZmFpbHVyZSAiCisgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZC4iKTsKK30KKworVEVT
VF9GKEV4cGVjdEZhaWx1cmVUZXN0LCBFeHBlY3ROb25GYXRhbEZhaWx1cmUpIHsKKyAgLy8gRXhw
ZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUsIGJ1dCBzdWNjZWVkcy4KKyAgcHJpbnRmKCIoZXhwZWN0
aW5nIDEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShTVUNDRUVEKCks
ICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKTsKKyAgLy8gRXhwZWN0ZWQgbm9uLWZhdGFs
IGZhaWx1cmUsIGJ1dCBnb3QgYSBmYXRhbCBmYWlsdXJlLgorICBwcmludGYoIihleHBlY3Rpbmcg
MSBmYWlsdXJlKVxuIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFkZEZhaWx1cmUoRkFU
QUxfRkFJTFVSRSksICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiIpOworICAvLyBXcm9uZyBtZXNz
YWdlLgorICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7CisgIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKEFkZEZhaWx1cmUoTk9ORkFUQUxfRkFJTFVSRSksICJTb21lIG90aGVyIG5v
bi1mYXRhbCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJmYWlsdXJlLiIpOworfQorCisj
aWYgR1RFU1RfSVNfVEhSRUFEU0FGRQorCitjbGFzcyBFeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNU
ZXN0IDogcHVibGljIEV4cGVjdEZhaWx1cmVUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHN0YXRpYyB2
b2lkIEFkZEZhaWx1cmVJbk90aGVyVGhyZWFkKEZhaWx1cmVNb2RlIGZhaWx1cmUpIHsKKyAgICBU
aHJlYWRXaXRoUGFyYW08RmFpbHVyZU1vZGU+IHRocmVhZCgmQWRkRmFpbHVyZSwgZmFpbHVyZSwg
TlVMTCk7CisgICAgdGhyZWFkLkpvaW4oKTsKKyAgfQorfTsKKworVEVTVF9GKEV4cGVjdEZhaWx1
cmVXaXRoVGhyZWFkc1Rlc3QsIEV4cGVjdEZhdGFsRmFpbHVyZSkgeworICAvLyBXZSBvbmx5IGlu
dGVyY2VwdCB0aGUgY3VycmVudCB0aHJlYWQuCisgIHByaW50ZigiKGV4cGVjdGluZyAyIGZhaWx1
cmVzKVxuIik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFkZEZhaWx1cmVJbk90aGVyVGhyZWFk
KEZBVEFMX0ZBSUxVUkUpLAorICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgZmF0YWwg
ZmFpbHVyZS4iKTsKK30KKworVEVTVF9GKEV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QsIEV4
cGVjdE5vbkZhdGFsRmFpbHVyZSkgeworICAvLyBXZSBvbmx5IGludGVyY2VwdCB0aGUgY3VycmVu
dCB0aHJlYWQuCisgIHByaW50ZigiKGV4cGVjdGluZyAyIGZhaWx1cmVzKVxuIik7CisgIEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFKEFkZEZhaWx1cmVJbk90aGVyVGhyZWFkKE5PTkZBVEFMX0ZBSUxV
UkUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1
cmUuIik7Cit9CisKK3R5cGVkZWYgRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdCBTY29wZWRG
YWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlclRlc3Q7CisKKy8vIFRlc3RzIHRoYXQgdGhlIFNjb3Bl
ZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyIG9ubHkgY2F0Y2hlcyBmYWlsdXJlcyBmcm9tCisv
LyB0aGUgY3VycmVudCB0aHJlYWQgaWYgaXQgaXMgaW5zdGFudGlhdGVkIHdpdGggSU5URVJDRVBU
X09OTFlfQ1VSUkVOVF9USFJFQUQuCitURVNUX0YoU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVw
b3J0ZXJUZXN0LCBJbnRlcmNlcHRPbmx5Q3VycmVudFRocmVhZCkgeworICBwcmludGYoIihleHBl
Y3RpbmcgMiBmYWlsdXJlcylcbiIpOworICBUZXN0UGFydFJlc3VsdEFycmF5IHJlc3VsdHM7Cisg
IHsKKyAgICBTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlciByZXBvcnRlcigKKyAgICAg
ICAgU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI6OklOVEVSQ0VQVF9PTkxZX0NVUlJF
TlRfVEhSRUFELAorICAgICAgICAmcmVzdWx0cyk7CisgICAgQWRkRmFpbHVyZUluT3RoZXJUaHJl
YWQoRkFUQUxfRkFJTFVSRSk7CisgICAgQWRkRmFpbHVyZUluT3RoZXJUaHJlYWQoTk9ORkFUQUxf
RkFJTFVSRSk7CisgIH0KKyAgLy8gVGhlIHR3byBmYWlsdXJlcyBzaG91bGQgbm90IGhhdmUgYmVl
biBpbnRlcmNlcHRlZC4KKyAgRVhQRUNUX0VRKDAsIHJlc3VsdHMuc2l6ZSgpKSA8PCAiVGhpcyBz
aG91bGRuJ3QgZmFpbC4iOworfQorCisjZW5kaWYgIC8vIEdURVNUX0lTX1RIUkVBRFNBRkUKKwor
VEVTVF9GKEV4cGVjdEZhaWx1cmVUZXN0LCBFeHBlY3RGYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMp
IHsKKyAgLy8gRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZSwgYnV0IHN1Y2NlZWRzLgorICBwcmludGYo
IihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFX09OX0FM
TF9USFJFQURTKFNVQ0NFRUQoKSwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIik7CisgIC8vIEV4
cGVjdGVkIGZhdGFsIGZhaWx1cmUsIGJ1dCBnb3QgYSBub24tZmF0YWwgZmFpbHVyZS4KKyAgcHJp
bnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRV9P
Tl9BTExfVEhSRUFEUyhBZGRGYWlsdXJlKE5PTkZBVEFMX0ZBSUxVUkUpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIik7
CisgIC8vIFdyb25nIG1lc3NhZ2UuCisgIHByaW50ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUpXG4i
KTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoQWRkRmFpbHVyZShGQVRB
TF9GQUlMVVJFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNvbWUg
b3RoZXIgZmF0YWwgZmFpbHVyZSBleHBlY3RlZC4iKTsKK30KKworVEVTVF9GKEV4cGVjdEZhaWx1
cmVUZXN0LCBFeHBlY3ROb25GYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMpIHsKKyAgLy8gRXhwZWN0
ZWQgbm9uLWZhdGFsIGZhaWx1cmUsIGJ1dCBzdWNjZWVkcy4KKyAgcHJpbnRmKCIoZXhwZWN0aW5n
IDEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFE
UyhTVUNDRUVEKCksICJFeHBlY3RlZCBub24tZmF0YWwgIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiZmFpbHVyZS4iKTsKKyAgLy8gRXhwZWN0ZWQgbm9uLWZhdGFs
IGZhaWx1cmUsIGJ1dCBnb3QgYSBmYXRhbCBmYWlsdXJlLgorICBwcmludGYoIihleHBlY3Rpbmcg
MSBmYWlsdXJlKVxuIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURT
KEFkZEZhaWx1cmUoRkFUQUxfRkFJTFVSRSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiIpOworICAvLyBXcm9uZyBtZXNz
YWdlLgorICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7CisgIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTKEFkZEZhaWx1cmUoTk9ORkFUQUxfRkFJTFVSRSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTb21lIG90aGVyIG5v
bi1mYXRhbCBmYWlsdXJlLiIpOworfQorCisKKy8vIFR3byB0ZXN0IGVudmlyb25tZW50cyBmb3Ig
dGVzdGluZyB0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoKS4KKworY2xhc3MgRm9v
RW52aXJvbm1lbnQgOiBwdWJsaWMgdGVzdGluZzo6RW52aXJvbm1lbnQgeworIHB1YmxpYzoKKyAg
dmlydHVhbCB2b2lkIFNldFVwKCkgeworICAgIHByaW50ZigiJXMiLCAiRm9vRW52aXJvbm1lbnQ6
OlNldFVwKCkgY2FsbGVkLlxuIik7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7
CisgICAgcHJpbnRmKCIlcyIsICJGb29FbnZpcm9ubWVudDo6VGVhckRvd24oKSBjYWxsZWQuXG4i
KTsKKyAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIjsKKyAgfQorfTsKKwor
Y2xhc3MgQmFyRW52aXJvbm1lbnQgOiBwdWJsaWMgdGVzdGluZzo6RW52aXJvbm1lbnQgeworIHB1
YmxpYzoKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeworICAgIHByaW50ZigiJXMiLCAiQmFyRW52
aXJvbm1lbnQ6OlNldFVwKCkgY2FsbGVkLlxuIik7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVh
ckRvd24oKSB7CisgICAgcHJpbnRmKCIlcyIsICJCYXJFbnZpcm9ubWVudDo6VGVhckRvd24oKSBj
YWxsZWQuXG4iKTsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBub24tZmF0YWwgZmFp
bHVyZS4iOworICB9Cit9OworCisvLyBUaGUgbWFpbiBmdW5jdGlvbi4KKy8vCisvLyBUaGUgaWRl
YSBpcyB0byB1c2UgR29vZ2xlIFRlc3QgdG8gcnVuIGFsbCB0aGUgdGVzdHMgd2UgaGF2ZSBkZWZp
bmVkIChzb21lCisvLyBvZiB0aGVtIGFyZSBpbnRlbmRlZCB0byBmYWlsKSwgYW5kIHRoZW4gY29t
cGFyZSB0aGUgdGVzdCByZXN1bHRzCisvLyB3aXRoIHRoZSAiZ29sZGVuIiBmaWxlLgoraW50IG1h
aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcocHJpbnRf
dGltZSkgPSBmYWxzZTsKKworICAvLyBXZSBqdXN0IHJ1biB0aGUgdGVzdHMsIGtub3dpbmcgc29t
ZSBvZiB0aGVtIGFyZSBpbnRlbmRlZCB0byBmYWlsLgorICAvLyBXZSB3aWxsIHVzZSBhIHNlcGFy
YXRlIFB5dGhvbiBzY3JpcHQgdG8gY29tcGFyZSB0aGUgb3V0cHV0IG9mCisgIC8vIHRoaXMgcHJv
Z3JhbSB3aXRoIHRoZSBnb2xkZW4gZmlsZS4KKworICAvLyBJdCdzIGhhcmQgdG8gdGVzdCBJbml0
R29vZ2xlVGVzdCgpIGRpcmVjdGx5LCBhcyBpdCBoYXMgbWFueQorICAvLyBnbG9iYWwgc2lkZSBl
ZmZlY3RzLiAgVGhlIGZvbGxvd2luZyBsaW5lIHNlcnZlcyBhcyBhIHNhbml0eSB0ZXN0CisgIC8v
IGZvciBpdC4KKyAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworICBib29s
IGludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0cyA9CisgICAgICBzdGQ6
OmNvdW50KGFyZ3YsIGFyZ3YgKyBhcmdjLAorICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZygi
aW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3RzIikpID4gMDsKKworI2lm
IEdURVNUX0hBU19ERUFUSF9URVNUCisgIGlmICh0ZXN0aW5nOjppbnRlcm5hbDo6R1RFU1RfRkxB
RyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkgIT0gIiIpIHsKKyAgICAvLyBTa2lwIHRoZSB1c3Vh
bCBvdXRwdXQgY2FwdHVyaW5nIGlmIHdlJ3JlIHJ1bm5pbmcgYXMgdGhlIGNoaWxkCisgICAgLy8g
cHJvY2VzcyBvZiBhbiB0aHJlYWRzYWZlLXN0eWxlIGRlYXRoIHRlc3QuCisjIGlmIEdURVNUX09T
X1dJTkRPV1MKKyAgICBwb3NpeDo6RlJlb3BlbigibnVsOiIsICJ3Iiwgc3Rkb3V0KTsKKyMgZWxz
ZQorICAgIHBvc2l4OjpGUmVvcGVuKCIvZGV2L251bGwiLCAidyIsIHN0ZG91dCk7CisjIGVuZGlm
ICAvLyBHVEVTVF9PU19XSU5ET1dTCisgICAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKKyAgfQor
I2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAorCisgIGlmIChpbnRlcm5hbF9za2lwX2Vu
dmlyb25tZW50X2FuZF9hZF9ob2NfdGVzdHMpCisgICAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsK
KworICAvLyBSZWdpc3RlcnMgdHdvIGdsb2JhbCB0ZXN0IGVudmlyb25tZW50cy4KKyAgLy8gVGhl
IGdvbGRlbiBmaWxlIHZlcmlmaWVzIHRoYXQgdGhleSBhcmUgc2V0IHVwIGluIHRoZSBvcmRlciB0
aGV5CisgIC8vIGFyZSByZWdpc3RlcmVkLCBhbmQgdG9ybiBkb3duIGluIHRoZSByZXZlcnNlIG9y
ZGVyLgorICB0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQobmV3IEZvb0Vudmlyb25t
ZW50KTsKKyAgdGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50KG5ldyBCYXJFbnZpcm9u
bWVudCk7CisKKyAgcmV0dXJuIFJ1bkFsbFRlc3RzKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0X2dvbGRlbl9saW4udHh0IGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
dGVzdC9ndGVzdF9vdXRwdXRfdGVzdF9nb2xkZW5fbGluLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMjIzZDU2
MGUyZDljMmFlNDcwYjZhMmNjZWM0ZGNiZTE4ZmE1NzZjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZXRlc3QvdGVzdC9ndGVzdF9vdXRwdXRfdGVzdF9nb2xkZW5fbGluLnR4dApAQCAtMCwwICsx
LDc0MyBAQAorVGhlIG5vbi10ZXN0IHBhcnQgb2YgdGhlIGNvZGUgaXMgZXhwZWN0ZWQgdG8gaGF2
ZSAyIGZhaWx1cmVzLgorCitndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQorVmFsdWUg
b2Y6IGZhbHNlCisgIEFjdHVhbDogZmFsc2UKK0V4cGVjdGVkOiB0cnVlCitndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogRmFpbHVyZQorICAgICAgRXhwZWN0ZWQ6IDIKK1RvIGJlIGVxdWFsIHRvOiAz
CisbWzA7MzJtWz09PT09PT09PT1dIBtbbVJ1bm5pbmcgNjYgdGVzdHMgZnJvbSAyOSB0ZXN0IGNh
c2VzLgorG1swOzMybVstLS0tLS0tLS0tXSAbW21HbG9iYWwgdGVzdCBlbnZpcm9ubWVudCBzZXQt
dXAuCitGb29FbnZpcm9ubWVudDo6U2V0VXAoKSBjYWxsZWQuCitCYXJFbnZpcm9ubWVudDo6U2V0
VXAoKSBjYWxsZWQuCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIEFEZWF0aFRl
c3QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttQURlYXRoVGVzdC5TaG91bGRSdW5GaXJzdAorG1sw
OzMybVsgICAgICAgT0sgXSAbW21BRGVhdGhUZXN0LlNob3VsZFJ1bkZpcnN0CisbWzA7MzJtWy0t
LS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIEFUeXBlZERlYXRoVGVzdC8wLCB3aGVyZSBUeXBlUGFy
YW0gPSBpbnQKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttQVR5cGVkRGVhdGhUZXN0LzAuU2hvdWxk
UnVuRmlyc3QKKxtbMDszMm1bICAgICAgIE9LIF0gG1ttQVR5cGVkRGVhdGhUZXN0LzAuU2hvdWxk
UnVuRmlyc3QKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZyb20gQVR5cGVkRGVhdGhU
ZXN0LzEsIHdoZXJlIFR5cGVQYXJhbSA9IGRvdWJsZQorG1swOzMybVsgUlVOICAgICAgXSAbW21B
VHlwZWREZWF0aFRlc3QvMS5TaG91bGRSdW5GaXJzdAorG1swOzMybVsgICAgICAgT0sgXSAbW21B
VHlwZWREZWF0aFRlc3QvMS5TaG91bGRSdW5GaXJzdAorG1swOzMybVstLS0tLS0tLS0tXSAbW20x
IHRlc3QgZnJvbSBNeS9BVHlwZVBhcmFtRGVhdGhUZXN0LzAsIHdoZXJlIFR5cGVQYXJhbSA9IGlu
dAorG1swOzMybVsgUlVOICAgICAgXSAbW21NeS9BVHlwZVBhcmFtRGVhdGhUZXN0LzAuU2hvdWxk
UnVuRmlyc3QKKxtbMDszMm1bICAgICAgIE9LIF0gG1ttTXkvQVR5cGVQYXJhbURlYXRoVGVzdC8w
LlNob3VsZFJ1bkZpcnN0CisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIE15L0FU
eXBlUGFyYW1EZWF0aFRlc3QvMSwgd2hlcmUgVHlwZVBhcmFtID0gZG91YmxlCisbWzA7MzJtWyBS
VU4gICAgICBdIBtbbU15L0FUeXBlUGFyYW1EZWF0aFRlc3QvMS5TaG91bGRSdW5GaXJzdAorG1sw
OzMybVsgICAgICAgT0sgXSAbW21NeS9BVHlwZVBhcmFtRGVhdGhUZXN0LzEuU2hvdWxkUnVuRmly
c3QKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0cyBmcm9tIFBhc3NpbmdUZXN0CisbWzA7
MzJtWyBSVU4gICAgICBdIBtbbVBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0MQorG1swOzMybVsgICAg
ICAgT0sgXSAbW21QYXNzaW5nVGVzdC5QYXNzaW5nVGVzdDEKKxtbMDszMm1bIFJVTiAgICAgIF0g
G1ttUGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3QyCisbWzA7MzJtWyAgICAgICBPSyBdIBtbbVBhc3Np
bmdUZXN0LlBhc3NpbmdUZXN0MgorG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20g
Tm9uZmF0YWxGYWlsdXJlVGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21Ob25mYXRhbEZhaWx1
cmVUZXN0LkVzY2FwZXNTdHJpbmdPcGVyYW5kcworZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZh
aWx1cmUKKyAgICAgIEV4cGVjdGVkOiBrR29sZGVuU3RyaW5nCisgICAgICBXaGljaCBpczogIlwi
TGluZSIKK1RvIGJlIGVxdWFsIHRvOiBhY3R1YWwKKyAgICAgIFdoaWNoIGlzOiAiYWN0dWFsIFwi
c3RyaW5nXCIiCitndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQorICAgICAgRXhwZWN0
ZWQ6IGdvbGRlbgorICAgICAgV2hpY2ggaXM6ICJcIkxpbmUiCitUbyBiZSBlcXVhbCB0bzogYWN0
dWFsCisgICAgICBXaGljaCBpczogImFjdHVhbCBcInN0cmluZ1wiIgorG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21Ob25mYXRhbEZhaWx1cmVUZXN0LkVzY2FwZXNTdHJpbmdPcGVyYW5kcworG1swOzMy
bVsgUlVOICAgICAgXSAbW21Ob25mYXRhbEZhaWx1cmVUZXN0LkRpZmZGb3JMb25nU3RyaW5ncwor
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKKyAgICAgIEV4cGVjdGVkOiBnb2xkZW5f
c3RyCisgICAgICBXaGljaCBpczogIlwiTGluZVwwIDFcIlxuTGluZSAyIgorVG8gYmUgZXF1YWwg
dG86ICJMaW5lIDIiCitXaXRoIGRpZmY6CitAQCAtMSwyIEBACistXCJMaW5lXDAgMVwiCisgTGlu
ZSAyCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttTm9uZmF0YWxGYWlsdXJlVGVzdC5EaWZmRm9y
TG9uZ1N0cmluZ3MKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMyB0ZXN0cyBmcm9tIEZhdGFsRmFp
bHVyZVRlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZh
aWx1cmVJblN1YnJvdXRpbmUKKyhleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUg
MSkKK2d0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCisgICAgICBFeHBlY3RlZDogMQor
VG8gYmUgZXF1YWwgdG86IHgKKyAgICAgIFdoaWNoIGlzOiAyCisbWzA7MzFtWyAgRkFJTEVEICBd
IBtbbUZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCisbWzA7MzJtWyBS
VU4gICAgICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0
aW5lCisoZXhwZWN0aW5nIGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpCitndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogRmFpbHVyZQorICAgICAgRXhwZWN0ZWQ6IDEKK1RvIGJlIGVxdWFsIHRv
OiB4CisgICAgICBXaGljaCBpczogMgorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21GYXRhbEZhaWx1
cmVUZXN0LkZhdGFsRmFpbHVyZUluTmVzdGVkU3Vicm91dGluZQorG1swOzMybVsgUlVOICAgICAg
XSAbW21GYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVyZUluU3Vicm91dGluZQorKGV4cGVj
dGluZyBhIGZhaWx1cmUgb24gZmFsc2UpCitndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVy
ZQorVmFsdWUgb2Y6IGZhbHNlCisgIEFjdHVhbDogZmFsc2UKK0V4cGVjdGVkOiB0cnVlCisbWzA7
MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJlSW5TdWJy
b3V0aW5lCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIExvZ2dpbmdUZXN0Cisb
WzA7MzJtWyBSVU4gICAgICBdIBtbbUxvZ2dpbmdUZXN0LkludGVybGVhdmluZ0xvZ2dpbmdBbmRB
c3NlcnRpb25zCisoZXhwZWN0aW5nIDIgZmFpbHVyZXMgb24gKDMpID49IChhW2ldKSkKK2kgPT0g
MAoraSA9PSAxCitndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6ICgz
KSA+PSAoYVtpXSksIGFjdHVhbDogMyB2cyA5CitpID09IDIKK2kgPT0gMworZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAoMykgPj0gKGFbaV0pLCBhY3R1YWw6IDMg
dnMgNgorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21Mb2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dn
aW5nQW5kQXNzZXJ0aW9ucworG1swOzMybVstLS0tLS0tLS0tXSAbW202IHRlc3RzIGZyb20gU0NP
UEVEX1RSQUNFVGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21TQ09QRURfVFJBQ0VUZXN0Lk9i
ZXlzU2NvcGVzCisoZXhwZWN0ZWQgdG8gZmFpbCkKK2d0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBG
YWlsdXJlCitGYWlsZWQKK1RoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZG4ndCBo
YXZlIGEgdHJhY2UuCitndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitU
aGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgaGF2ZSBhIHRyYWNlLgorR29vZ2xl
IFRlc3QgdHJhY2U6CitndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRXhwZWN0ZWQgdHJhY2UKK2d0
ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK1RoaXMgZmFpbHVyZSBpcyBl
eHBlY3RlZCwgYW5kIHNob3VsZG4ndCBoYXZlIGEgdHJhY2UuCisbWzA7MzFtWyAgRkFJTEVEICBd
IBtbbVNDT1BFRF9UUkFDRVRlc3QuT2JleXNTY29wZXMKKxtbMDszMm1bIFJVTiAgICAgIF0gG1tt
U0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luTG9vcAorKGV4cGVjdGVkIHRvIGZhaWwpCitndGVzdF9v
dXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQorICAgICAgRXhwZWN0ZWQ6IDIKK1RvIGJlIGVxdWFs
IHRvOiBuCisgICAgICBXaGljaCBpczogMQorR29vZ2xlIFRlc3QgdHJhY2U6CitndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogaSA9IDEKK2d0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCisg
ICAgICBFeHBlY3RlZDogMQorVG8gYmUgZXF1YWwgdG86IG4KKyAgICAgIFdoaWNoIGlzOiAyCitH
b29nbGUgVGVzdCB0cmFjZToKK2d0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBpID0gMgorG1swOzMx
bVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LldvcmtzSW5Mb29wCisbWzA7MzJtWyBS
VU4gICAgICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuV29ya3NJblN1YnJvdXRpbmUKKyhleHBlY3Rl
ZCB0byBmYWlsKQorZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKKyAgICAgIEV4cGVj
dGVkOiAyCitUbyBiZSBlcXVhbCB0bzogbgorICAgICAgV2hpY2ggaXM6IDEKK0dvb2dsZSBUZXN0
IHRyYWNlOgorZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IG4gPSAxCitndGVzdF9vdXRwdXRfdGVz
dF8uY2M6IzogRmFpbHVyZQorICAgICAgRXhwZWN0ZWQ6IDEKK1RvIGJlIGVxdWFsIHRvOiBuCisg
ICAgICBXaGljaCBpczogMgorR29vZ2xlIFRlc3QgdHJhY2U6CitndGVzdF9vdXRwdXRfdGVzdF8u
Y2M6IzogbiA9IDIKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5Xb3Jr
c0luU3Vicm91dGluZQorG1swOzMybVsgUlVOICAgICAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LkNh
bkJlTmVzdGVkCisoZXhwZWN0ZWQgdG8gZmFpbCkKK2d0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBG
YWlsdXJlCisgICAgICBFeHBlY3RlZDogMQorVG8gYmUgZXF1YWwgdG86IG4KKyAgICAgIFdoaWNo
IGlzOiAyCitHb29nbGUgVGVzdCB0cmFjZToKK2d0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBuID0g
MgorZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IAorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09Q
RURfVFJBQ0VUZXN0LkNhbkJlTmVzdGVkCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVNDT1BFRF9U
UkFDRVRlc3QuQ2FuQmVSZXBlYXRlZAorKGV4cGVjdGVkIHRvIGZhaWwpCitndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFu
ZCBzaG91bGQgY29udGFpbiB0cmFjZSBwb2ludCBBLgorR29vZ2xlIFRlc3QgdHJhY2U6CitndGVz
dF9vdXRwdXRfdGVzdF8uY2M6IzogQQorZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUK
K0ZhaWxlZAorVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gdHJh
Y2UgcG9pbnQgQSBhbmQgQi4KK0dvb2dsZSBUZXN0IHRyYWNlOgorZ3Rlc3Rfb3V0cHV0X3Rlc3Rf
LmNjOiM6IEIKK2d0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBBCitndGVzdF9vdXRwdXRfdGVzdF8u
Y2M6IzogRmFpbHVyZQorRmFpbGVkCitUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91
bGQgY29udGFpbiB0cmFjZSBwb2ludCBBLCBCLCBhbmQgQy4KK0dvb2dsZSBUZXN0IHRyYWNlOgor
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEMKK2d0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBCCitn
dGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogQQorZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1
cmUKK0ZhaWxlZAorVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4g
dHJhY2UgcG9pbnQgQSwgQiwgYW5kIEQuCitHb29nbGUgVGVzdCB0cmFjZToKK2d0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBECitndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogQgorZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IEEKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5D
YW5CZVJlcGVhdGVkCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuV29y
a3NDb25jdXJyZW50bHkKKyhleHBlY3RpbmcgNiBmYWlsdXJlcykKK2d0ZXN0X291dHB1dF90ZXN0
Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzEgKGluIHRocmVhZCBC
LCBvbmx5IHRyYWNlIEIgYWxpdmUpLgorR29vZ2xlIFRlc3QgdHJhY2U6CitndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogVHJhY2UgQgorZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKK0Zh
aWxlZAorRXhwZWN0ZWQgZmFpbHVyZSAjMiAoaW4gdGhyZWFkIEEsIHRyYWNlIEEgJiBCIGJvdGgg
YWxpdmUpLgorR29vZ2xlIFRlc3QgdHJhY2U6CitndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogVHJh
Y2UgQQorZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQg
ZmFpbHVyZSAjMyAoaW4gdGhyZWFkIEIsIHRyYWNlIEEgJiBCIGJvdGggYWxpdmUpLgorR29vZ2xl
IFRlc3QgdHJhY2U6CitndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogVHJhY2UgQgorZ3Rlc3Rfb3V0
cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQgZmFpbHVyZSAjNCAoaW4g
dGhyZWFkIEIsIG9ubHkgdHJhY2UgQSBhbGl2ZSkuCitndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
RmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYWlsdXJlICM1IChpbiB0aHJlYWQgQSwgb25seSB0
cmFjZSBBIGFsaXZlKS4KK0dvb2dsZSBUZXN0IHRyYWNlOgorZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNj
OiM6IFRyYWNlIEEKK2d0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4
cGVjdGVkIGZhaWx1cmUgIzYgKGluIHRocmVhZCBBLCBubyB0cmFjZSBhbGl2ZSkuCisbWzA7MzFt
WyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuV29ya3NDb25jdXJyZW50bHkKKxtbMDsz
Mm1bLS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZyb20gTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29u
c3RydWN0b3JUZXN0CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbU5vbkZhdGFsRmFpbHVyZUluRml4
dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3RvcgorKGV4cGVjdGluZyA1IGZh
aWx1cmVzKQorZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0
ZWQgZmFpbHVyZSAjMSwgaW4gdGhlIHRlc3QgZml4dHVyZSBjJ3Rvci4KK2d0ZXN0X291dHB1dF90
ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzIsIGluIFNldFVw
KCkuCitndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBm
YWlsdXJlICMzLCBpbiB0aGUgdGVzdCBib2R5LgorZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZh
aWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQgZmFpbHVyZSAjNCwgaW4gVGVhckRvd24uCitndGVzdF9v
dXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYWlsdXJlICM1LCBp
biB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21Ob25GYXRh
bEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0b3IKKxtb
MDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZyb20gRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29u
c3RydWN0b3JUZXN0CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUZhdGFsRmFpbHVyZUluRml4dHVy
ZUNvbnN0cnVjdG9yVGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3RvcgorKGV4cGVjdGluZyAyIGZhaWx1
cmVzKQorZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQg
ZmFpbHVyZSAjMSwgaW4gdGhlIHRlc3QgZml4dHVyZSBjJ3Rvci4KK2d0ZXN0X291dHB1dF90ZXN0
Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzIsIGluIHRoZSB0ZXN0
IGZpeHR1cmUgZCd0b3IuCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZUluRml4
dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3RvcgorG1swOzMybVstLS0tLS0t
LS0tXSAbW20xIHRlc3QgZnJvbSBOb25GYXRhbEZhaWx1cmVJblNldFVwVGVzdAorG1swOzMybVsg
UlVOICAgICAgXSAbW21Ob25GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAor
KGV4cGVjdGluZyA0IGZhaWx1cmVzKQorZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUK
K0ZhaWxlZAorRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gU2V0VXAoKS4KK2d0ZXN0X291dHB1dF90
ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzIsIGluIHRoZSB0
ZXN0IGZ1bmN0aW9uLgorZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAor
RXhwZWN0ZWQgZmFpbHVyZSAjMywgaW4gVGVhckRvd24oKS4KK2d0ZXN0X291dHB1dF90ZXN0Xy5j
YzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzQsIGluIHRoZSB0ZXN0IGZp
eHR1cmUgZCd0b3IuCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbU5vbkZhdGFsRmFpbHVyZUluU2V0
VXBUZXN0LkZhaWx1cmVJblNldFVwCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9t
IEZhdGFsRmFpbHVyZUluU2V0VXBUZXN0CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUZhdGFsRmFp
bHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVwCisoZXhwZWN0aW5nIDMgZmFpbHVyZXMpCitn
dGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYWlsdXJl
ICMxLCBpbiBTZXRVcCgpLgorZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxl
ZAorRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gVGVhckRvd24oKS4KK2d0ZXN0X291dHB1dF90ZXN0
Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0
IGZpeHR1cmUgZCd0b3IuCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZUluU2V0
VXBUZXN0LkZhaWx1cmVJblNldFVwCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9t
IEFkZEZhaWx1cmVBdFRlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttQWRkRmFpbHVyZUF0VGVz
dC5NZXNzYWdlQ29udGFpbnNTcGVjaWZpZWRGaWxlQW5kTGluZU51bWJlcgorZm9vLmNjOjQyOiBG
YWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgaW4gZm9vLmNjCisbWzA7MzFtWyAgRkFJ
TEVEICBdIBtbbUFkZEZhaWx1cmVBdFRlc3QuTWVzc2FnZUNvbnRhaW5zU3BlY2lmaWVkRmlsZUFu
ZExpbmVOdW1iZXIKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttNCB0ZXN0cyBmcm9tIE1peGVkVXBU
ZXN0Q2FzZVRlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVzdC5G
aXJzdFRlc3RGcm9tTmFtZXNwYWNlRm9vCisbWzA7MzJtWyAgICAgICBPSyBdIBtbbU1peGVkVXBU
ZXN0Q2FzZVRlc3QuRmlyc3RUZXN0RnJvbU5hbWVzcGFjZUZvbworG1swOzMybVsgUlVOICAgICAg
XSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LlNlY29uZFRlc3RGcm9tTmFtZXNwYWNlRm9vCisbWzA7
MzJtWyAgICAgICBPSyBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuU2Vjb25kVGVzdEZyb21OYW1l
c3BhY2VGb28KKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVzdC5UaGlz
U2hvdWxkRmFpbAorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRmFpbGVkCitBbGwgdGVzdHMgaW4gdGhl
IHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRoZSBzYW1lIHRlc3QgZml4dHVyZQorY2xhc3MuICBI
b3dldmVyLCBpbiB0ZXN0IGNhc2UgTWl4ZWRVcFRlc3RDYXNlVGVzdCwKK3lvdSBkZWZpbmVkIHRl
c3QgRmlyc3RUZXN0RnJvbU5hbWVzcGFjZUZvbyBhbmQgdGVzdCBUaGlzU2hvdWxkRmFpbAordXNp
bmcgdHdvIGRpZmZlcmVudCB0ZXN0IGZpeHR1cmUgY2xhc3Nlcy4gIFRoaXMgY2FuIGhhcHBlbiBp
ZgordGhlIHR3byBjbGFzc2VzIGFyZSBmcm9tIGRpZmZlcmVudCBuYW1lc3BhY2VzIG9yIHRyYW5z
bGF0aW9uCit1bml0cyBhbmQgaGF2ZSB0aGUgc2FtZSBuYW1lLiAgWW91IHNob3VsZCBwcm9iYWJs
eSByZW5hbWUgb25lCitvZiB0aGUgY2xhc3NlcyB0byBwdXQgdGhlIHRlc3RzIGludG8gZGlmZmVy
ZW50IHRlc3QgY2FzZXMuCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRl
c3QuVGhpc1Nob3VsZEZhaWwKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttTWl4ZWRVcFRlc3RDYXNl
VGVzdC5UaGlzU2hvdWxkRmFpbFRvbworZ3Rlc3QuY2M6IzogRmFpbHVyZQorRmFpbGVkCitBbGwg
dGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRoZSBzYW1lIHRlc3QgZml4dHVy
ZQorY2xhc3MuICBIb3dldmVyLCBpbiB0ZXN0IGNhc2UgTWl4ZWRVcFRlc3RDYXNlVGVzdCwKK3lv
dSBkZWZpbmVkIHRlc3QgRmlyc3RUZXN0RnJvbU5hbWVzcGFjZUZvbyBhbmQgdGVzdCBUaGlzU2hv
dWxkRmFpbFRvbwordXNpbmcgdHdvIGRpZmZlcmVudCB0ZXN0IGZpeHR1cmUgY2xhc3Nlcy4gIFRo
aXMgY2FuIGhhcHBlbiBpZgordGhlIHR3byBjbGFzc2VzIGFyZSBmcm9tIGRpZmZlcmVudCBuYW1l
c3BhY2VzIG9yIHRyYW5zbGF0aW9uCit1bml0cyBhbmQgaGF2ZSB0aGUgc2FtZSBuYW1lLiAgWW91
IHNob3VsZCBwcm9iYWJseSByZW5hbWUgb25lCitvZiB0aGUgY2xhc3NlcyB0byBwdXQgdGhlIHRl
c3RzIGludG8gZGlmZmVyZW50IHRlc3QgY2FzZXMuCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbU1p
eGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1Nob3VsZEZhaWxUb28KKxtbMDszMm1bLS0tLS0tLS0tLV0g
G1ttMiB0ZXN0cyBmcm9tIE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0CisbWzA7
MzJtWyBSVU4gICAgICBdIBtbbU1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LlRo
ZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsCisbWzA7MzJtWyAgICAgICBPSyBdIBtb
bU1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LlRoZVNlY29uZFRlc3RXaXRoVGhp
c05hbWVTaG91bGRGYWlsCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbU1peGVkVXBUZXN0Q2FzZVdp
dGhTYW1lVGVzdE5hbWVUZXN0LlRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsCitn
dGVzdC5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0FsbCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNh
c2UgbXVzdCB1c2UgdGhlIHNhbWUgdGVzdCBmaXh0dXJlCitjbGFzcy4gIEhvd2V2ZXIsIGluIHRl
c3QgY2FzZSBNaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdCwKK3lvdSBkZWZpbmVk
IHRlc3QgVGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwgYW5kIHRlc3QgVGhlU2Vj
b25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwKK3VzaW5nIHR3byBkaWZmZXJlbnQgdGVzdCBm
aXh0dXJlIGNsYXNzZXMuICBUaGlzIGNhbiBoYXBwZW4gaWYKK3RoZSB0d28gY2xhc3NlcyBhcmUg
ZnJvbSBkaWZmZXJlbnQgbmFtZXNwYWNlcyBvciB0cmFuc2xhdGlvbgordW5pdHMgYW5kIGhhdmUg
dGhlIHNhbWUgbmFtZS4gIFlvdSBzaG91bGQgcHJvYmFibHkgcmVuYW1lIG9uZQorb2YgdGhlIGNs
YXNzZXMgdG8gcHV0IHRoZSB0ZXN0cyBpbnRvIGRpZmZlcmVudCB0ZXN0IGNhc2VzLgorG1swOzMx
bVsgIEZBSUxFRCAgXSAbW21NaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVT
ZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAorG1swOzMybVstLS0tLS0tLS0tXSAbW20y
IHRlc3RzIGZyb20gVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlCisbWzA7MzJt
WyBSVU4gICAgICBdIBtbbVRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZp
bmVkVXNpbmdURVNUX0YKKxtbMDszMm1bICAgICAgIE9LIF0gG1ttVEVTVF9GX2JlZm9yZV9URVNU
X2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RfRgorG1swOzMybVsgUlVOICAgICAg
XSAbW21URVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVT
VEFuZFNob3VsZEZhaWwKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorQWxsIHRlc3RzIGlu
IHRoZSBzYW1lIHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUKK2NsYXNz
LCBzbyBtaXhpbmcgVEVTVF9GIGFuZCBURVNUIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBpcworaWxs
ZWdhbC4gIEluIHRlc3QgY2FzZSBURVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2Us
Cit0ZXN0IERlZmluZWRVc2luZ1RFU1RfRiBpcyBkZWZpbmVkIHVzaW5nIFRFU1RfRiBidXQKK3Rl
c3QgRGVmaW5lZFVzaW5nVEVTVEFuZFNob3VsZEZhaWwgaXMgZGVmaW5lZCB1c2luZyBURVNULiAg
WW91IHByb2JhYmx5Cit3YW50IHRvIGNoYW5nZSB0aGUgVEVTVCB0byBURVNUX0Ygb3IgbW92ZSBp
dCB0byBhbm90aGVyIHRlc3QKK2Nhc2UuCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVRFU1RfRl9i
ZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUQW5kU2hvdWxkRmFp
bAorG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20gVEVTVF9iZWZvcmVfVEVTVF9G
X2luX3NhbWVfdGVzdF9jYXNlCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVRFU1RfYmVmb3JlX1RF
U1RfRl9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUCisbWzA7MzJtWyAgICAgICBP
SyBdIBtbbVRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdU
RVNUCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rl
c3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUX0ZBbmRTaG91bGRGYWlsCitndGVzdC5jYzojOiBGYWls
dXJlCitGYWlsZWQKK0FsbCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgbXVzdCB1c2UgdGhl
IHNhbWUgdGVzdCBmaXh0dXJlCitjbGFzcywgc28gbWl4aW5nIFRFU1RfRiBhbmQgVEVTVCBpbiB0
aGUgc2FtZSB0ZXN0IGNhc2UgaXMKK2lsbGVnYWwuICBJbiB0ZXN0IGNhc2UgVEVTVF9iZWZvcmVf
VEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLAordGVzdCBEZWZpbmVkVXNpbmdURVNUX0ZBbmRTaG91
bGRGYWlsIGlzIGRlZmluZWQgdXNpbmcgVEVTVF9GIGJ1dAordGVzdCBEZWZpbmVkVXNpbmdURVNU
IGlzIGRlZmluZWQgdXNpbmcgVEVTVC4gIFlvdSBwcm9iYWJseQord2FudCB0byBjaGFuZ2UgdGhl
IFRFU1QgdG8gVEVTVF9GIG9yIG1vdmUgaXQgdG8gYW5vdGhlciB0ZXN0CitjYXNlLgorG1swOzMx
bVsgIEZBSUxFRCAgXSAbW21URVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UuRGVm
aW5lZFVzaW5nVEVTVF9GQW5kU2hvdWxkRmFpbAorG1swOzMybVstLS0tLS0tLS0tXSAbW204IHRl
c3RzIGZyb20gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdAorG1swOzMybVsgUlVOICAgICAgXSAb
W21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUdsb2JhbFZhcmlhYmxlcwor
G1swOzMybVsgICAgICAgT0sgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVy
ZW5jZUdsb2JhbFZhcmlhYmxlcworG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3ROb25mYXRh
bEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUxvY2FsVmFyaWFibGVzCisbWzA7MzJtWyAgICAgICBP
SyBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlTG9jYWxWYXJpYWJs
ZXMKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5TdWNj
ZWVkc1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlCisbWzA7MzJtWyAgICAgICBPSyBdIBtb
bUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuU3VjY2VlZHNXaGVuVGhlcmVJc09uZU5vbmZhdGFs
RmFpbHVyZQorG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0
LkZhaWxzV2hlblRoZXJlSXNOb05vbmZhdGFsRmFpbHVyZQorKGV4cGVjdGluZyBhIGZhaWx1cmUp
CitndGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQorICBB
Y3R1YWw6IDAgZmFpbHVyZXMKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxG
YWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9Ob25mYXRhbEZhaWx1cmUKKxtbMDszMm1bIFJV
TiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3
b05vbmZhdGFsRmFpbHVyZXMKKyhleHBlY3RpbmcgYSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFp
bHVyZQorRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOiAyIGZhaWx1cmVz
CitndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6CitGYWlsZWQKK0V4
cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlIDEuCisKK2d0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBO
b24tZmF0YWwgZmFpbHVyZToKK0ZhaWxlZAorRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUgMi4K
KworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxz
V2hlblRoZXJlQXJlVHdvTm9uZmF0YWxGYWlsdXJlcworG1swOzMybVsgUlVOICAgICAgXSAbW21F
eHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUK
KyhleHBlY3RpbmcgYSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEg
bm9uLWZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOgorZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZh
dGFsIGZhaWx1cmU6CitGYWlsZWQKK0V4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCisKKxtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlz
T25lRmF0YWxGYWlsdXJlCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFp
bHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucworKGV4cGVjdGluZyBhIGZhaWx1cmUp
CitndGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQorICBB
Y3R1YWw6IDAgZmFpbHVyZXMKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxG
YWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCisbWzA7MzJtWyBSVU4gICAgICBd
IBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCiso
ZXhwZWN0aW5nIGEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIG5v
bi1mYXRhbCBmYWlsdXJlCisgIEFjdHVhbDogMCBmYWlsdXJlcworG1swOzMxbVsgIEZBSUxFRCAg
XSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFRocm93cwor
G1swOzMybVstLS0tLS0tLS0tXSAbW204IHRlc3RzIGZyb20gRXhwZWN0RmF0YWxGYWlsdXJlVGVz
dAorG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVy
ZW5jZUdsb2JhbFZhcmlhYmxlcworG1swOzMybVsgICAgICAgT0sgXSAbW21FeHBlY3RGYXRhbEZh
aWx1cmVUZXN0LkNhblJlZmVyZW5jZUdsb2JhbFZhcmlhYmxlcworG1swOzMybVsgUlVOICAgICAg
XSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUxvY2FsU3RhdGljVmFyaWFi
bGVzCisbWzA7MzJtWyAgICAgICBPSyBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVm
ZXJlbmNlTG9jYWxTdGF0aWNWYXJpYWJsZXMKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0
RmF0YWxGYWlsdXJlVGVzdC5TdWNjZWVkc1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlCisbWzA7
MzJtWyAgICAgICBPSyBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuU3VjY2VlZHNXaGVuVGhl
cmVJc09uZUZhdGFsRmFpbHVyZQorG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYXRhbEZh
aWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNOb0ZhdGFsRmFpbHVyZQorKGV4cGVjdGluZyBhIGZh
aWx1cmUpCitndGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCisg
IEFjdHVhbDogMCBmYWlsdXJlcworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZh
aWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNOb0ZhdGFsRmFpbHVyZQorG1swOzMybVsgUlVOICAg
ICAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlQXJlVHdvRmF0YWxG
YWlsdXJlcworKGV4cGVjdGluZyBhIGZhaWx1cmUpCitndGVzdC5jYzojOiBGYWlsdXJlCitFeHBl
Y3RlZDogMSBmYXRhbCBmYWlsdXJlCisgIEFjdHVhbDogMiBmYWlsdXJlcworZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6CitGYWlsZWQKK0V4cGVjdGVkIGZhdGFsIGZhaWx1
cmUuCisKK2d0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgorRmFpbGVkCitF
eHBlY3RlZCBmYXRhbCBmYWlsdXJlLgorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZh
dGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVBcmVUd29GYXRhbEZhaWx1cmVzCisbWzA7MzJt
WyBSVU4gICAgICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09u
ZU5vbmZhdGFsRmFpbHVyZQorKGV4cGVjdGluZyBhIGZhaWx1cmUpCitndGVzdC5jYzojOiBGYWls
dXJlCitFeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCisgIEFjdHVhbDoKK2d0ZXN0X291dHB1dF90
ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToKK0ZhaWxlZAorRXhwZWN0ZWQgbm9uLWZhdGFs
IGZhaWx1cmUuCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVz
dC5GYWlsc1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlCisbWzA7MzJtWyBSVU4gICAgICBd
IBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucworKGV4
cGVjdGluZyBhIGZhaWx1cmUpCitndGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBmYXRh
bCBmYWlsdXJlCisgIEFjdHVhbDogMCBmYWlsdXJlcworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21F
eHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMKKxtbMDszMm1b
IFJVTiAgICAgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRU
aHJvd3MKKyhleHBlY3RpbmcgYSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0
ZWQ6IDEgZmF0YWwgZmFpbHVyZQorICBBY3R1YWw6IDAgZmFpbHVyZXMKKxtbMDszMW1bICBGQUlM
RUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MK
KxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0cyBmcm9tIFR5cGVkVGVzdC8wLCB3aGVyZSBU
eXBlUGFyYW0gPSBpbnQKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttVHlwZWRUZXN0LzAuU3VjY2Vz
cworG1swOzMybVsgICAgICAgT0sgXSAbW21UeXBlZFRlc3QvMC5TdWNjZXNzCisbWzA7MzJtWyBS
VU4gICAgICBdIBtbbVR5cGVkVGVzdC8wLkZhaWx1cmUKK2d0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBGYWlsdXJlCisgICAgICBFeHBlY3RlZDogMQorVG8gYmUgZXF1YWwgdG86IFR5cGVQYXJhbSgp
CisgICAgICBXaGljaCBpczogMAorRXhwZWN0ZWQgZmFpbHVyZQorG1swOzMxbVsgIEZBSUxFRCAg
XSAbW21UeXBlZFRlc3QvMC5GYWlsdXJlLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKKxtbMDszMm1b
LS0tLS0tLS0tLV0gG1ttMiB0ZXN0cyBmcm9tIFVuc2lnbmVkL1R5cGVkVGVzdFAvMCwgd2hlcmUg
VHlwZVBhcmFtID0gdW5zaWduZWQgY2hhcgorG1swOzMybVsgUlVOICAgICAgXSAbW21VbnNpZ25l
ZC9UeXBlZFRlc3RQLzAuU3VjY2VzcworG1swOzMybVsgICAgICAgT0sgXSAbW21VbnNpZ25lZC9U
eXBlZFRlc3RQLzAuU3VjY2VzcworG1swOzMybVsgUlVOICAgICAgXSAbW21VbnNpZ25lZC9UeXBl
ZFRlc3RQLzAuRmFpbHVyZQorZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKKyAgICAg
IEV4cGVjdGVkOiAxVQorICAgICAgV2hpY2ggaXM6IDEKK1RvIGJlIGVxdWFsIHRvOiBUeXBlUGFy
YW0oKQorICAgICAgV2hpY2ggaXM6ICdcMCcKK0V4cGVjdGVkIGZhaWx1cmUKKxtbMDszMW1bICBG
QUlMRUQgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8wLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJh
bSA9IHVuc2lnbmVkIGNoYXIKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0cyBmcm9tIFVu
c2lnbmVkL1R5cGVkVGVzdFAvMSwgd2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQgaW50CisbWzA7
MzJtWyBSVU4gICAgICBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMS5TdWNjZXNzCisbWzA7MzJt
WyAgICAgICBPSyBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMS5TdWNjZXNzCisbWzA7MzJtWyBS
VU4gICAgICBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMS5GYWlsdXJlCitndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogRmFpbHVyZQorICAgICAgRXhwZWN0ZWQ6IDFVCisgICAgICBXaGljaCBpczog
MQorVG8gYmUgZXF1YWwgdG86IFR5cGVQYXJhbSgpCisgICAgICBXaGljaCBpczogMAorRXhwZWN0
ZWQgZmFpbHVyZQorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzEu
RmFpbHVyZSwgd2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQgaW50CisbWzA7MzJtWy0tLS0tLS0t
LS1dIBtbbTQgdGVzdHMgZnJvbSBFeHBlY3RGYWlsdXJlVGVzdAorG1swOzMybVsgUlVOICAgICAg
XSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKKyhleHBlY3RpbmcgMSBm
YWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQor
ICBBY3R1YWw6CitndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogU3VjY2VzczoKK1N1Y2NlZWRlZAor
CisoZXhwZWN0aW5nIDEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAx
IGZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOgorZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IE5vbi1m
YXRhbCBmYWlsdXJlOgorRmFpbGVkCitFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4KKworKGV4
cGVjdGluZyAxIGZhaWx1cmUpCitndGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBmYXRh
bCBmYWlsdXJlIGNvbnRhaW5pbmcgIlNvbWUgb3RoZXIgZmF0YWwgZmFpbHVyZSBleHBlY3RlZC4i
CisgIEFjdHVhbDoKK2d0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgorRmFp
bGVkCitFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4
cGVjdEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZQorG1swOzMybVsgUlVOICAgICAgXSAb
W21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmUKKyhleHBlY3RpbmcgMSBm
YWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1
cmUKKyAgQWN0dWFsOgorZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IFN1Y2Nlc3M6CitTdWNjZWVk
ZWQKKworKGV4cGVjdGluZyAxIGZhaWx1cmUpCitndGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3Rl
ZDogMSBub24tZmF0YWwgZmFpbHVyZQorICBBY3R1YWw6CitndGVzdF9vdXRwdXRfdGVzdF8uY2M6
IzogRmF0YWwgZmFpbHVyZToKK0ZhaWxlZAorRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KKworKGV4
cGVjdGluZyAxIGZhaWx1cmUpCitndGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBub24t
ZmF0YWwgZmFpbHVyZSBjb250YWluaW5nICJTb21lIG90aGVyIG5vbi1mYXRhbCBmYWlsdXJlLiIK
KyAgQWN0dWFsOgorZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IE5vbi1mYXRhbCBmYWlsdXJlOgor
RmFpbGVkCitFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4KKworG1swOzMxbVsgIEZBSUxFRCAg
XSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmUKKxtbMDszMm1bIFJV
TiAgICAgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0RmF0YWxGYWlsdXJlT25BbGxUaHJl
YWRzCisoZXhwZWN0aW5nIDEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVk
OiAxIGZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOgorZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IFN1
Y2Nlc3M6CitTdWNjZWVkZWQKKworKGV4cGVjdGluZyAxIGZhaWx1cmUpCitndGVzdC5jYzojOiBG
YWlsdXJlCitFeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCisgIEFjdHVhbDoKK2d0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToKK0ZhaWxlZAorRXhwZWN0ZWQgbm9uLWZh
dGFsIGZhaWx1cmUuCisKKyhleHBlY3RpbmcgMSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVy
ZQorRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZSBjb250YWluaW5nICJTb21lIG90aGVyIGZhdGFs
IGZhaWx1cmUgZXhwZWN0ZWQuIgorICBBY3R1YWw6CitndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
RmF0YWwgZmFpbHVyZToKK0ZhaWxlZAorRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KKworG1swOzMx
bVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmVPbkFs
bFRocmVhZHMKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0
Tm9uRmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzCisoZXhwZWN0aW5nIDEgZmFpbHVyZSkKK2d0ZXN0
LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCisgIEFjdHVhbDoK
K2d0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBTdWNjZXNzOgorU3VjY2VlZGVkCisKKyhleHBlY3Rp
bmcgMSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgbm9uLWZhdGFs
IGZhaWx1cmUKKyAgQWN0dWFsOgorZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhdGFsIGZhaWx1
cmU6CitGYWlsZWQKK0V4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCisKKyhleHBlY3RpbmcgMSBmYWls
dXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUg
Y29udGFpbmluZyAiU29tZSBvdGhlciBub24tZmF0YWwgZmFpbHVyZS4iCisgIEFjdHVhbDoKK2d0
ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToKK0ZhaWxlZAorRXhwZWN0
ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFp
bHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzCisbWzA7MzJtWy0tLS0t
LS0tLS1dIBtbbTIgdGVzdHMgZnJvbSBFeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0CisbWzA7
MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QuRXhwZWN0RmF0
YWxGYWlsdXJlCisoZXhwZWN0aW5nIDIgZmFpbHVyZXMpCitndGVzdF9vdXRwdXRfdGVzdF8uY2M6
IzogRmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgorZ3Rlc3QuY2M6Izog
RmFpbHVyZQorRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQorICBBY3R1YWw6IDAgZmFpbHVyZXMK
KxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdC5FeHBl
Y3RGYXRhbEZhaWx1cmUKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmFpbHVyZVdpdGhU
aHJlYWRzVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmUKKyhleHBlY3RpbmcgMiBmYWlsdXJlcykK
K2d0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIG5vbi1m
YXRhbCBmYWlsdXJlLgorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgbm9uLWZhdGFs
IGZhaWx1cmUKKyAgQWN0dWFsOiAwIGZhaWx1cmVzCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4
cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCisbWzA7MzJt
Wy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIFNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9y
dGVyVGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21TY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRS
ZXBvcnRlclRlc3QuSW50ZXJjZXB0T25seUN1cnJlbnRUaHJlYWQKKyhleHBlY3RpbmcgMiBmYWls
dXJlcykKK2d0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVk
IGZhdGFsIGZhaWx1cmUuCitndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVk
CitFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4KKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU2Nv
cGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJUZXN0LkludGVyY2VwdE9ubHlDdXJyZW50VGhy
ZWFkCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIFByaW50aW5nRmFpbGluZ1Bh
cmFtcy9GYWlsaW5nUGFyYW1UZXN0CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVByaW50aW5nRmFp
bGluZ1BhcmFtcy9GYWlsaW5nUGFyYW1UZXN0LkZhaWxzLzAKK2d0ZXN0X291dHB1dF90ZXN0Xy5j
YzojOiBGYWlsdXJlCisgICAgICBFeHBlY3RlZDogMQorVG8gYmUgZXF1YWwgdG86IEdldFBhcmFt
KCkKKyAgICAgIFdoaWNoIGlzOiAyCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVByaW50aW5nRmFp
bGluZ1BhcmFtcy9GYWlsaW5nUGFyYW1UZXN0LkZhaWxzLzAsIHdoZXJlIEdldFBhcmFtKCkgPSAy
CisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJvbSBQcmludGluZ1N0cmluZ3MvUGFy
YW1UZXN0CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVByaW50aW5nU3RyaW5ncy9QYXJhbVRlc3Qu
U3VjY2Vzcy9hCisbWzA7MzJtWyAgICAgICBPSyBdIBtbbVByaW50aW5nU3RyaW5ncy9QYXJhbVRl
c3QuU3VjY2Vzcy9hCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVByaW50aW5nU3RyaW5ncy9QYXJh
bVRlc3QuRmFpbHVyZS9hCitndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQorICAgICAg
RXhwZWN0ZWQ6ICJiIgorVG8gYmUgZXF1YWwgdG86IEdldFBhcmFtKCkKKyAgICAgIFdoaWNoIGlz
OiAiYSIKK0V4cGVjdGVkIGZhaWx1cmUKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttUHJpbnRpbmdT
dHJpbmdzL1BhcmFtVGVzdC5GYWlsdXJlL2EsIHdoZXJlIEdldFBhcmFtKCkgPSAiYSIKKxtbMDsz
Mm1bLS0tLS0tLS0tLV0gG1ttR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgdGVhci1kb3duCitCYXJF
bnZpcm9ubWVudDo6VGVhckRvd24oKSBjYWxsZWQuCitndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
RmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4KK0Zvb0Vudmlyb25t
ZW50OjpUZWFyRG93bigpIGNhbGxlZC4KK2d0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJl
CitGYWlsZWQKK0V4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCisbWzA7MzJtWz09PT09PT09PT1dIBtb
bTY2IHRlc3RzIGZyb20gMjkgdGVzdCBjYXNlcyByYW4uCisbWzA7MzJtWyAgUEFTU0VEICBdIBtb
bTIyIHRlc3RzLgorG1swOzMxbVsgIEZBSUxFRCAgXSAbW200NCB0ZXN0cywgbGlzdGVkIGJlbG93
OgorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21Ob25mYXRhbEZhaWx1cmVUZXN0LkVzY2FwZXNTdHJp
bmdPcGVyYW5kcworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21Ob25mYXRhbEZhaWx1cmVUZXN0LkRp
ZmZGb3JMb25nU3RyaW5ncworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21GYXRhbEZhaWx1cmVUZXN0
LkZhdGFsRmFpbHVyZUluU3Vicm91dGluZQorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21GYXRhbEZh
aWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluTmVzdGVkU3Vicm91dGluZQorG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21GYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVyZUluU3Vicm91dGluZQorG1sw
OzMxbVsgIEZBSUxFRCAgXSAbW21Mb2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5kQXNz
ZXJ0aW9ucworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0Lk9iZXlzU2Nv
cGVzCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuV29ya3NJbkxvb3AK
KxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luU3Vicm91dGlu
ZQorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LkNhbkJlTmVzdGVkCisb
WzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVSZXBlYXRlZAorG1sw
OzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LldvcmtzQ29uY3VycmVudGx5Cisb
WzA7MzFtWyAgRkFJTEVEICBdIBtbbU5vbkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9y
VGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3RvcgorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21GYXRhbEZh
aWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0b3IKKxtbMDsz
MW1bICBGQUlMRUQgIF0gG1ttTm9uRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QuRmFpbHVyZUluU2V0
VXAKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QuRmFpbHVy
ZUluU2V0VXAKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttQWRkRmFpbHVyZUF0VGVzdC5NZXNzYWdl
Q29udGFpbnNTcGVjaWZpZWRGaWxlQW5kTGluZU51bWJlcgorG1swOzMxbVsgIEZBSUxFRCAgXSAb
W21NaXhlZFVwVGVzdENhc2VUZXN0LlRoaXNTaG91bGRGYWlsCisbWzA7MzFtWyAgRkFJTEVEICBd
IBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1Nob3VsZEZhaWxUb28KKxtbMDszMW1bICBGQUlM
RUQgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QuVGhlU2Vjb25kVGVz
dFdpdGhUaGlzTmFtZVNob3VsZEZhaWwKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttVEVTVF9GX2Jl
Zm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RBbmRTaG91bGRGYWls
CisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3Rf
Y2FzZS5EZWZpbmVkVXNpbmdURVNUX0ZBbmRTaG91bGRGYWlsCisbWzA7MzFtWyAgRkFJTEVEICBd
IBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc05vTm9uZmF0YWxG
YWlsdXJlCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3Qu
RmFpbHNXaGVuVGhlcmVBcmVUd29Ob25mYXRhbEZhaWx1cmVzCisbWzA7MzFtWyAgRkFJTEVEICBd
IBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09uZUZhdGFsRmFp
bHVyZQorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZh
aWxzV2hlblN0YXRlbWVudFJldHVybnMKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9u
ZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MKKxtbMDszMW1bICBGQUlM
RUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9GYXRhbEZh
aWx1cmUKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWls
c1doZW5UaGVyZUFyZVR3b0ZhdGFsRmFpbHVyZXMKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhw
ZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlCisb
WzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3Rh
dGVtZW50UmV0dXJucworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVU
ZXN0LkZhaWxzV2hlblN0YXRlbWVudFRocm93cworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21UeXBl
ZFRlc3QvMC5GYWlsdXJlLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKKxtbMDszMW1bICBGQUlMRUQg
IF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8wLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9IHVu
c2lnbmVkIGNoYXIKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8x
LkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGludAorG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKKxtbMDszMW1bICBG
QUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCisbWzA7
MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZU9u
QWxsVGhyZWFkcworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBl
Y3ROb25GYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhw
ZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKKxtbMDszMW1bICBG
QUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdC5FeHBlY3ROb25GYXRhbEZh
aWx1cmUKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVw
b3J0ZXJUZXN0LkludGVyY2VwdE9ubHlDdXJyZW50VGhyZWFkCisbWzA7MzFtWyAgRkFJTEVEICBd
IBtbbVByaW50aW5nRmFpbGluZ1BhcmFtcy9GYWlsaW5nUGFyYW1UZXN0LkZhaWxzLzAsIHdoZXJl
IEdldFBhcmFtKCkgPSAyCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVByaW50aW5nU3RyaW5ncy9Q
YXJhbVRlc3QuRmFpbHVyZS9hLCB3aGVyZSBHZXRQYXJhbSgpID0gImEiCisKKzQ0IEZBSUxFRCBU
RVNUUworG1swOzMzbSAgWU9VIEhBVkUgMSBESVNBQkxFRCBURVNUCisKKxtbbU5vdGU6IEdvb2ds
ZSBUZXN0IGZpbHRlciA9IEZhdGFsRmFpbHVyZVRlc3QuKjpMb2dnaW5nVGVzdC4qCitbPT09PT09
PT09PV0gUnVubmluZyA0IHRlc3RzIGZyb20gMiB0ZXN0IGNhc2VzLgorWy0tLS0tLS0tLS1dIEds
b2JhbCB0ZXN0IGVudmlyb25tZW50IHNldC11cC4KK1stLS0tLS0tLS0tXSAzIHRlc3RzIGZyb20g
RmF0YWxGYWlsdXJlVGVzdAorWyBSVU4gICAgICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWls
dXJlSW5TdWJyb3V0aW5lCisoZXhwZWN0aW5nIGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEp
CitndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQorICAgICAgRXhwZWN0ZWQ6IDEKK1Rv
IGJlIGVxdWFsIHRvOiB4CisgICAgICBXaGljaCBpczogMgorWyAgRkFJTEVEICBdIEZhdGFsRmFp
bHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lICg/IG1zKQorWyBSVU4gICAgICBdIEZh
dGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCisoZXhwZWN0aW5n
IGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpCitndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
RmFpbHVyZQorICAgICAgRXhwZWN0ZWQ6IDEKK1RvIGJlIGVxdWFsIHRvOiB4CisgICAgICBXaGlj
aCBpczogMgorWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0
ZWRTdWJyb3V0aW5lICg/IG1zKQorWyBSVU4gICAgICBdIEZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0
YWxGYWlsdXJlSW5TdWJyb3V0aW5lCisoZXhwZWN0aW5nIGEgZmFpbHVyZSBvbiBmYWxzZSkKK2d0
ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCitWYWx1ZSBvZjogZmFsc2UKKyAgQWN0dWFs
OiBmYWxzZQorRXhwZWN0ZWQ6IHRydWUKK1sgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0Lk5v
bmZhdGFsRmFpbHVyZUluU3Vicm91dGluZSAoPyBtcykKK1stLS0tLS0tLS0tXSAzIHRlc3RzIGZy
b20gRmF0YWxGYWlsdXJlVGVzdCAoPyBtcyB0b3RhbCkKKworWy0tLS0tLS0tLS1dIDEgdGVzdCBm
cm9tIExvZ2dpbmdUZXN0CitbIFJVTiAgICAgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9n
Z2luZ0FuZEFzc2VydGlvbnMKKyhleHBlY3RpbmcgMiBmYWlsdXJlcyBvbiAoMykgPj0gKGFbaV0p
KQoraSA9PSAwCitpID09IDEKK2d0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCitFeHBl
Y3RlZDogKDMpID49IChhW2ldKSwgYWN0dWFsOiAzIHZzIDkKK2kgPT0gMgoraSA9PSAzCitndGVz
dF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6ICgzKSA+PSAoYVtpXSksIGFj
dHVhbDogMyB2cyA2CitbICBGQUlMRUQgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2lu
Z0FuZEFzc2VydGlvbnMgKD8gbXMpCitbLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gTG9nZ2luZ1Rl
c3QgKD8gbXMgdG90YWwpCisKK1stLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCB0
ZWFyLWRvd24KK1s9PT09PT09PT09XSA0IHRlc3RzIGZyb20gMiB0ZXN0IGNhc2VzIHJhbi4gKD8g
bXMgdG90YWwpCitbICBQQVNTRUQgIF0gMCB0ZXN0cy4KK1sgIEZBSUxFRCAgXSA0IHRlc3RzLCBs
aXN0ZWQgYmVsb3c6CitbICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJ
blN1YnJvdXRpbmUKK1sgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUlu
TmVzdGVkU3Vicm91dGluZQorWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxG
YWlsdXJlSW5TdWJyb3V0aW5lCitbICBGQUlMRUQgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5n
TG9nZ2luZ0FuZEFzc2VydGlvbnMKKworIDQgRkFJTEVEIFRFU1RTCitOb3RlOiBHb29nbGUgVGVz
dCBmaWx0ZXIgPSAqRElTQUJMRURfKgorWz09PT09PT09PT1dIFJ1bm5pbmcgMSB0ZXN0IGZyb20g
MSB0ZXN0IGNhc2UuCitbLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0LXVw
LgorWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIERpc2FibGVkVGVzdHNXYXJuaW5nVGVzdAorWyBS
VU4gICAgICBdIERpc2FibGVkVGVzdHNXYXJuaW5nVGVzdC5ESVNBQkxFRF9BbHNvUnVuRGlzYWJs
ZWRUZXN0c0ZsYWdTdXBwcmVzc2VzV2FybmluZworWyAgICAgICBPSyBdIERpc2FibGVkVGVzdHNX
YXJuaW5nVGVzdC5ESVNBQkxFRF9BbHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWdTdXBwcmVzc2VzV2Fy
bmluZworWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHRlYXItZG93bgorWz09
PT09PT09PT1dIDEgdGVzdCBmcm9tIDEgdGVzdCBjYXNlIHJhbi4KK1sgIFBBU1NFRCAgXSAxIHRl
c3QuCitOb3RlOiBHb29nbGUgVGVzdCBmaWx0ZXIgPSBQYXNzaW5nVGVzdC4qCitOb3RlOiBUaGlz
IGlzIHRlc3Qgc2hhcmQgMiBvZiAyLgorWz09PT09PT09PT1dIFJ1bm5pbmcgMSB0ZXN0IGZyb20g
MSB0ZXN0IGNhc2UuCitbLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0LXVw
LgorWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIFBhc3NpbmdUZXN0CitbIFJVTiAgICAgIF0gUGFz
c2luZ1Rlc3QuUGFzc2luZ1Rlc3QyCitbICAgICAgIE9LIF0gUGFzc2luZ1Rlc3QuUGFzc2luZ1Rl
c3QyCitbLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgdGVhci1kb3duCitbPT09
PT09PT09PV0gMSB0ZXN0IGZyb20gMSB0ZXN0IGNhc2UgcmFuLgorWyAgUEFTU0VEICBdIDEgdGVz
dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfcHJlZF9pbXBsX3VuaXR0ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9wcmVkX2ltcGxfdW5pdHRlc3QuY2MKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYTg0ZWZmODYwYTRkN2RjOGI4NTYzZjhlMWU3ZjQ3OWUyOTJlYTMzYwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfcHJlZF9pbXBsX3VuaXR0ZXN0LmNjCkBA
IC0wLDAgKzEsMjQyNyBAQAorLy8gQ29weXJpZ2h0IDIwMDYsIEdvb2dsZSBJbmMuCisvLyBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8g
bWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
Ky8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8v
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisvLyBUaGlzIGZpbGUgaXMgQVVUT01BVElDQUxMWSBHRU5FUkFURUQgb24gMTAvMzEv
MjAxMSBieSBjb21tYW5kCisvLyAnZ2VuX2d0ZXN0X3ByZWRfaW1wbC5weSA1Jy4gIERPIE5PVCBF
RElUIEJZIEhBTkQhCisKKy8vIFJlZ3Jlc3Npb24gdGVzdCBmb3IgZ3Rlc3RfcHJlZF9pbXBsLmgK
Ky8vCisvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGEgc2NyaXB0IGFuZCBxdWl0ZSBsb25n
LiAgSWYgeW91IGludGVuZCB0bworLy8gbGVhcm4gaG93IEdvb2dsZSBUZXN0IHdvcmtzIGJ5IHJl
YWRpbmcgaXRzIHVuaXQgdGVzdHMsIHJlYWQKKy8vIGd0ZXN0X3VuaXR0ZXN0LmNjIGluc3RlYWQu
CisvLworLy8gVGhpcyBpcyBpbnRlbmRlZCBhcyBhIHJlZ3Jlc3Npb24gdGVzdCBmb3IgdGhlIEdv
b2dsZSBUZXN0IHByZWRpY2F0ZQorLy8gYXNzZXJ0aW9ucy4gIFdlIGNvbXBpbGUgaXQgYXMgcGFy
dCBvZiB0aGUgZ3Rlc3RfdW5pdHRlc3QgdGFyZ2V0CisvLyBvbmx5IHRvIGtlZXAgdGhlIGltcGxl
bWVudGF0aW9uIHRpZHkgYW5kIGNvbXBhY3QsIGFzIGl0IGlzIHF1aXRlCisvLyBpbnZvbHZlZCB0
byBzZXQgdXAgdGhlIHN0YWdlIGZvciB0ZXN0aW5nIEdvb2dsZSBUZXN0IHVzaW5nIEdvb2dsZQor
Ly8gVGVzdCBpdHNlbGYuCisvLworLy8gQ3VycmVudGx5LCBndGVzdF91bml0dGVzdCB0YWtlcyB+
MTEgc2Vjb25kcyB0byBydW4gaW4gdGhlIHRlc3RpbmcKKy8vIGRhZW1vbi4gIEluIHRoZSBmdXR1
cmUsIGlmIGl0IGdyb3dzIHRvbyBsYXJnZSBhbmQgbmVlZHMgbXVjaCBtb3JlCisvLyB0aW1lIHRv
IGZpbmlzaCwgd2Ugc2hvdWxkIGNvbnNpZGVyIHNlcGFyYXRpbmcgdGhpcyBmaWxlIGludG8gYQor
Ly8gc3RhbmQtYWxvbmUgcmVncmVzc2lvbiB0ZXN0LgorCisjaW5jbHVkZSA8aW9zdHJlYW0+CisK
KyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXNwaS5oIgor
CisvLyBBIHVzZXItZGVmaW5lZCBkYXRhIHR5cGUuCitzdHJ1Y3QgQm9vbCB7CisgIGV4cGxpY2l0
IEJvb2woaW50IHZhbCkgOiB2YWx1ZSh2YWwgIT0gMCkge30KKworICBib29sIG9wZXJhdG9yPihp
bnQgbikgY29uc3QgeyByZXR1cm4gdmFsdWUgPiBCb29sKG4pLnZhbHVlOyB9CisKKyAgQm9vbCBv
cGVyYXRvcisoY29uc3QgQm9vbCYgcmhzKSBjb25zdCB7IHJldHVybiBCb29sKHZhbHVlICsgcmhz
LnZhbHVlKTsgfQorCisgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCb29sJiByaHMpIGNvbnN0IHsg
cmV0dXJuIHZhbHVlID09IHJocy52YWx1ZTsgfQorCisgIGJvb2wgdmFsdWU7Cit9OworCisvLyBF
bmFibGVzIEJvb2wgdG8gYmUgdXNlZCBpbiBhc3NlcnRpb25zLgorc3RkOjpvc3RyZWFtJiBvcGVy
YXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IEJvb2wmIHgpIHsKKyAgcmV0dXJuIG9zIDw8
ICh4LnZhbHVlID8gInRydWUiIDogImZhbHNlIik7Cit9CisKKy8vIFNhbXBsZSBmdW5jdGlvbnMv
ZnVuY3RvcnMgZm9yIHRlc3RpbmcgdW5hcnkgcHJlZGljYXRlIGFzc2VydGlvbnMuCisKKy8vIEEg
dW5hcnkgcHJlZGljYXRlIGZ1bmN0aW9uLgordGVtcGxhdGUgPHR5cGVuYW1lIFQxPgorYm9vbCBQ
cmVkRnVuY3Rpb24xKFQxIHYxKSB7CisgIHJldHVybiB2MSA+IDA7Cit9CisKKy8vIFRoZSBmb2xs
b3dpbmcgdHdvIGZ1bmN0aW9ucyBhcmUgbmVlZGVkIHRvIGNpcmN1bXZlbnQgYSBidWcgaW4KKy8v
IGdjYyAyLjk1LjMsIHdoaWNoIHNvbWV0aW1lcyBoYXMgcHJvYmxlbSB3aXRoIHRoZSBhYm92ZSB0
ZW1wbGF0ZQorLy8gZnVuY3Rpb24uCitib29sIFByZWRGdW5jdGlvbjFJbnQoaW50IHYxKSB7Cisg
IHJldHVybiB2MSA+IDA7Cit9Citib29sIFByZWRGdW5jdGlvbjFCb29sKEJvb2wgdjEpIHsKKyAg
cmV0dXJuIHYxID4gMDsKK30KKworLy8gQSB1bmFyeSBwcmVkaWNhdGUgZnVuY3Rvci4KK3N0cnVj
dCBQcmVkRnVuY3RvcjEgeworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDE+CisgIGJvb2wgb3BlcmF0
b3IoKShjb25zdCBUMSYgdjEpIHsKKyAgICByZXR1cm4gdjEgPiAwOworICB9Cit9OworCisvLyBB
IHVuYXJ5IHByZWRpY2F0ZS1mb3JtYXR0ZXIgZnVuY3Rpb24uCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VDE+Cit0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgUHJlZEZvcm1hdEZ1bmN0aW9uMShjb25zdCBj
aGFyKiBlMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFQxJiB2MSkgeworICBpZiAoUHJlZEZ1bmN0aW9uMSh2MSkpCisgICAgcmV0dXJuIHRlc3Rp
bmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKKworICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFp
bHVyZSgpCisgICAgICA8PCBlMQorICAgICAgPDwgIiBpcyBleHBlY3RlZCB0byBiZSBwb3NpdGl2
ZSwgYnV0IGV2YWx1YXRlcyB0byAiCisgICAgICA8PCB2MSA8PCAiLiI7Cit9CisKKy8vIEEgdW5h
cnkgcHJlZGljYXRlLWZvcm1hdHRlciBmdW5jdG9yLgorc3RydWN0IFByZWRGb3JtYXRGdW5jdG9y
MSB7CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMT4KKyAgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0
IG9wZXJhdG9yKCkoY29uc3QgY2hhciogZTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFQxJiB2MSkgY29uc3QgeworICAgIHJldHVybiBQcmVkRm9ybWF0RnVu
Y3Rpb24xKGUxLCB2MSk7CisgIH0KK307CisKKy8vIFRlc3RzIGZvciB7RVhQRUNUfEFTU0VSVH1f
UFJFRF9GT1JNQVQxLgorCitjbGFzcyBQcmVkaWNhdGUxVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpU
ZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICBleHBlY3Rl
ZF90b19maW5pc2hfID0gdHJ1ZTsKKyAgICBmaW5pc2hlZF8gPSBmYWxzZTsKKyAgICBuMV8gPSAw
OworICB9CisKKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAgIC8vIFZlcmlmaWVzIHRo
YXQgZWFjaCBvZiB0aGUgcHJlZGljYXRlJ3MgYXJndW1lbnRzIHdhcyBldmFsdWF0ZWQKKyAgICAv
LyBleGFjdGx5IG9uY2UuCisgICAgRVhQRUNUX0VRKDEsIG4xXykgPDwKKyAgICAgICAgIlRoZSBw
cmVkaWNhdGUgYXNzZXJ0aW9uIGRpZG4ndCBldmFsdWF0ZSBhcmd1bWVudCAyICIKKyAgICAgICAg
ImV4YWN0bHkgb25jZS4iOworCisgICAgLy8gVmVyaWZpZXMgdGhhdCB0aGUgY29udHJvbCBmbG93
IGluIHRoZSB0ZXN0IGZ1bmN0aW9uIGlzIGV4cGVjdGVkLgorICAgIGlmIChleHBlY3RlZF90b19m
aW5pc2hfICYmICFmaW5pc2hlZF8pIHsKKyAgICAgIEZBSUwoKSA8PCAiVGhlIHByZWRpY2F0ZSBh
c3NlcnRpb24gdW5leHBhY3RlZGx5IGFib3J0ZWQgdGhlIHRlc3QuIjsKKyAgICB9IGVsc2UgaWYg
KCFleHBlY3RlZF90b19maW5pc2hfICYmIGZpbmlzaGVkXykgeworICAgICAgRkFJTCgpIDw8ICJU
aGUgZmFpbGVkIHByZWRpY2F0ZSBhc3NlcnRpb24gZGlkbid0IGFib3J0IHRoZSB0ZXN0ICIKKyAg
ICAgICAgICAgICAgICAiYXMgZXhwZWN0ZWQuIjsKKyAgICB9CisgIH0KKworICAvLyB0cnVlIGlm
ZiB0aGUgdGVzdCBmdW5jdGlvbiBpcyBleHBlY3RlZCB0byBydW4gdG8gZmluaXNoLgorICBzdGF0
aWMgYm9vbCBleHBlY3RlZF90b19maW5pc2hfOworCisgIC8vIHRydWUgaWZmIHRoZSB0ZXN0IGZ1
bmN0aW9uIGRpZCBydW4gdG8gZmluaXNoLgorICBzdGF0aWMgYm9vbCBmaW5pc2hlZF87CisKKyAg
c3RhdGljIGludCBuMV87Cit9OworCitib29sIFByZWRpY2F0ZTFUZXN0OjpleHBlY3RlZF90b19m
aW5pc2hfOworYm9vbCBQcmVkaWNhdGUxVGVzdDo6ZmluaXNoZWRfOworaW50IFByZWRpY2F0ZTFU
ZXN0OjpuMV87CisKK3R5cGVkZWYgUHJlZGljYXRlMVRlc3QgRVhQRUNUX1BSRURfRk9STUFUMVRl
c3Q7Cit0eXBlZGVmIFByZWRpY2F0ZTFUZXN0IEFTU0VSVF9QUkVEX0ZPUk1BVDFUZXN0OwordHlw
ZWRlZiBQcmVkaWNhdGUxVGVzdCBFWFBFQ1RfUFJFRDFUZXN0OwordHlwZWRlZiBQcmVkaWNhdGUx
VGVzdCBBU1NFUlRfUFJFRDFUZXN0OworCisvLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgRVhQRUNUX1BS
RUQxIHdoZXJlIHRoZQorLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEg
YnVpbHQtaW4gdHlwZSAoaW50KS4KK1RFU1RfRihFWFBFQ1RfUFJFRDFUZXN0LCBGdW5jdGlvbk9u
QnVpbHRJblR5cGVTdWNjZXNzKSB7CisgIEVYUEVDVF9QUkVEMShQcmVkRnVuY3Rpb24xSW50LAor
ICAgICAgICAgICAgICAgKytuMV8pOworICBmaW5pc2hlZF8gPSB0cnVlOworfQorCisvLyBUZXN0
cyBhIHN1Y2Nlc3NmdWwgRVhQRUNUX1BSRUQxIHdoZXJlIHRoZQorLy8gcHJlZGljYXRlLWZvcm1h
dHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgorVEVTVF9G
KEVYUEVDVF9QUkVEMVRlc3QsIEZ1bmN0aW9uT25Vc2VyVHlwZVN1Y2Nlc3MpIHsKKyAgRVhQRUNU
X1BSRUQxKFByZWRGdW5jdGlvbjFCb29sLAorICAgICAgICAgICAgICAgQm9vbCgrK24xXykpOwor
ICBmaW5pc2hlZF8gPSB0cnVlOworfQorCisvLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgRVhQRUNUX1BS
RUQxIHdoZXJlIHRoZQorLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igb24gYSBi
dWlsdC1pbiB0eXBlIChpbnQpLgorVEVTVF9GKEVYUEVDVF9QUkVEMVRlc3QsIEZ1bmN0b3JPbkJ1
aWx0SW5UeXBlU3VjY2VzcykgeworICBFWFBFQ1RfUFJFRDEoUHJlZEZ1bmN0b3IxKCksCisgICAg
ICAgICAgICAgICArK24xXyk7CisgIGZpbmlzaGVkXyA9IHRydWU7Cit9CisKKy8vIFRlc3RzIGEg
c3VjY2Vzc2Z1bCBFWFBFQ1RfUFJFRDEgd2hlcmUgdGhlCisvLyBwcmVkaWNhdGUtZm9ybWF0dGVy
IGlzIGEgZnVuY3RvciBvbiBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4KK1RFU1RfRihFWFBF
Q1RfUFJFRDFUZXN0LCBGdW5jdG9yT25Vc2VyVHlwZVN1Y2Nlc3MpIHsKKyAgRVhQRUNUX1BSRUQx
KFByZWRGdW5jdG9yMSgpLAorICAgICAgICAgICAgICAgQm9vbCgrK24xXykpOworICBmaW5pc2hl
ZF8gPSB0cnVlOworfQorCisvLyBUZXN0cyBhIGZhaWxlZCBFWFBFQ1RfUFJFRDEgd2hlcmUgdGhl
CisvLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSBidWlsdC1pbiB0eXBl
IChpbnQpLgorVEVTVF9GKEVYUEVDVF9QUkVEMVRlc3QsIEZ1bmN0aW9uT25CdWlsdEluVHlwZUZh
aWx1cmUpIHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAgRVhQ
RUNUX1BSRUQxKFByZWRGdW5jdGlvbjFJbnQsCisgICAgICAgICAgICAgICAgIG4xXysrKTsKKyAg
ICBmaW5pc2hlZF8gPSB0cnVlOworICB9LCAiIik7Cit9CisKKy8vIFRlc3RzIGEgZmFpbGVkIEVY
UEVDVF9QUkVEMSB3aGVyZSB0aGUKKy8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlv
biBvbiBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4KK1RFU1RfRihFWFBFQ1RfUFJFRDFUZXN0
LCBGdW5jdGlvbk9uVXNlclR5cGVGYWlsdXJlKSB7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KHsgIC8vIE5PTElOVAorICAgIEVYUEVDVF9QUkVEMShQcmVkRnVuY3Rpb24xQm9vbCwKKyAgICAg
ICAgICAgICAgICAgQm9vbChuMV8rKykpOworICAgIGZpbmlzaGVkXyA9IHRydWU7CisgIH0sICIi
KTsKK30KKworLy8gVGVzdHMgYSBmYWlsZWQgRVhQRUNUX1BSRUQxIHdoZXJlIHRoZQorLy8gcHJl
ZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgor
VEVTVF9GKEVYUEVDVF9QUkVEMVRlc3QsIEZ1bmN0b3JPbkJ1aWx0SW5UeXBlRmFpbHVyZSkgewor
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBFWFBFQ1RfUFJFRDEo
UHJlZEZ1bmN0b3IxKCksCisgICAgICAgICAgICAgICAgIG4xXysrKTsKKyAgICBmaW5pc2hlZF8g
PSB0cnVlOworICB9LCAiIik7Cit9CisKKy8vIFRlc3RzIGEgZmFpbGVkIEVYUEVDVF9QUkVEMSB3
aGVyZSB0aGUKKy8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgdXNlci1k
ZWZpbmVkIHR5cGUgKEJvb2wpLgorVEVTVF9GKEVYUEVDVF9QUkVEMVRlc3QsIEZ1bmN0b3JPblVz
ZXJUeXBlRmFpbHVyZSkgeworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQK
KyAgICBFWFBFQ1RfUFJFRDEoUHJlZEZ1bmN0b3IxKCksCisgICAgICAgICAgICAgICAgIEJvb2wo
bjFfKyspKTsKKyAgICBmaW5pc2hlZF8gPSB0cnVlOworICB9LCAiIik7Cit9CisKKy8vIFRlc3Rz
IGEgc3VjY2Vzc2Z1bCBBU1NFUlRfUFJFRDEgd2hlcmUgdGhlCisvLyBwcmVkaWNhdGUtZm9ybWF0
dGVyIGlzIGEgZnVuY3Rpb24gb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgorVEVTVF9GKEFTU0VS
VF9QUkVEMVRlc3QsIEZ1bmN0aW9uT25CdWlsdEluVHlwZVN1Y2Nlc3MpIHsKKyAgQVNTRVJUX1BS
RUQxKFByZWRGdW5jdGlvbjFJbnQsCisgICAgICAgICAgICAgICArK24xXyk7CisgIGZpbmlzaGVk
XyA9IHRydWU7Cit9CisKKy8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBBU1NFUlRfUFJFRDEgd2hlcmUg
dGhlCisvLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSB1c2VyLWRlZmlu
ZWQgdHlwZSAoQm9vbCkuCitURVNUX0YoQVNTRVJUX1BSRUQxVGVzdCwgRnVuY3Rpb25PblVzZXJU
eXBlU3VjY2VzcykgeworICBBU1NFUlRfUFJFRDEoUHJlZEZ1bmN0aW9uMUJvb2wsCisgICAgICAg
ICAgICAgICBCb29sKCsrbjFfKSk7CisgIGZpbmlzaGVkXyA9IHRydWU7Cit9CisKKy8vIFRlc3Rz
IGEgc3VjY2Vzc2Z1bCBBU1NFUlRfUFJFRDEgd2hlcmUgdGhlCisvLyBwcmVkaWNhdGUtZm9ybWF0
dGVyIGlzIGEgZnVuY3RvciBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCitURVNUX0YoQVNTRVJU
X1BSRUQxVGVzdCwgRnVuY3Rvck9uQnVpbHRJblR5cGVTdWNjZXNzKSB7CisgIEFTU0VSVF9QUkVE
MShQcmVkRnVuY3RvcjEoKSwKKyAgICAgICAgICAgICAgICsrbjFfKTsKKyAgZmluaXNoZWRfID0g
dHJ1ZTsKK30KKworLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEFTU0VSVF9QUkVEMSB3aGVyZSB0aGUK
Ky8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgdXNlci1kZWZpbmVkIHR5
cGUgKEJvb2wpLgorVEVTVF9GKEFTU0VSVF9QUkVEMVRlc3QsIEZ1bmN0b3JPblVzZXJUeXBlU3Vj
Y2VzcykgeworICBBU1NFUlRfUFJFRDEoUHJlZEZ1bmN0b3IxKCksCisgICAgICAgICAgICAgICBC
b29sKCsrbjFfKSk7CisgIGZpbmlzaGVkXyA9IHRydWU7Cit9CisKKy8vIFRlc3RzIGEgZmFpbGVk
IEFTU0VSVF9QUkVEMSB3aGVyZSB0aGUKKy8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5j
dGlvbiBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCitURVNUX0YoQVNTRVJUX1BSRUQxVGVzdCwg
RnVuY3Rpb25PbkJ1aWx0SW5UeXBlRmFpbHVyZSkgeworICBleHBlY3RlZF90b19maW5pc2hfID0g
ZmFsc2U7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEFTU0VSVF9Q
UkVEMShQcmVkRnVuY3Rpb24xSW50LAorICAgICAgICAgICAgICAgICBuMV8rKyk7CisgICAgZmlu
aXNoZWRfID0gdHJ1ZTsKKyAgfSwgIiIpOworfQorCisvLyBUZXN0cyBhIGZhaWxlZCBBU1NFUlRf
UFJFRDEgd2hlcmUgdGhlCisvLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24g
YSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCitURVNUX0YoQVNTRVJUX1BSRUQxVGVzdCwgRnVu
Y3Rpb25PblVzZXJUeXBlRmFpbHVyZSkgeworICBleHBlY3RlZF90b19maW5pc2hfID0gZmFsc2U7
CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEFTU0VSVF9QUkVEMShQ
cmVkRnVuY3Rpb24xQm9vbCwKKyAgICAgICAgICAgICAgICAgQm9vbChuMV8rKykpOworICAgIGZp
bmlzaGVkXyA9IHRydWU7CisgIH0sICIiKTsKK30KKworLy8gVGVzdHMgYSBmYWlsZWQgQVNTRVJU
X1BSRUQxIHdoZXJlIHRoZQorLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igb24g
YSBidWlsdC1pbiB0eXBlIChpbnQpLgorVEVTVF9GKEFTU0VSVF9QUkVEMVRlc3QsIEZ1bmN0b3JP
bkJ1aWx0SW5UeXBlRmFpbHVyZSkgeworICBleHBlY3RlZF90b19maW5pc2hfID0gZmFsc2U7Cisg
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEFTU0VSVF9QUkVEMShQcmVk
RnVuY3RvcjEoKSwKKyAgICAgICAgICAgICAgICAgbjFfKyspOworICAgIGZpbmlzaGVkXyA9IHRy
dWU7CisgIH0sICIiKTsKK30KKworLy8gVGVzdHMgYSBmYWlsZWQgQVNTRVJUX1BSRUQxIHdoZXJl
IHRoZQorLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igb24gYSB1c2VyLWRlZmlu
ZWQgdHlwZSAoQm9vbCkuCitURVNUX0YoQVNTRVJUX1BSRUQxVGVzdCwgRnVuY3Rvck9uVXNlclR5
cGVGYWlsdXJlKSB7CisgIGV4cGVjdGVkX3RvX2ZpbmlzaF8gPSBmYWxzZTsKKyAgRVhQRUNUX0ZB
VEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAgQVNTRVJUX1BSRUQxKFByZWRGdW5jdG9yMSgp
LAorICAgICAgICAgICAgICAgICBCb29sKG4xXysrKSk7CisgICAgZmluaXNoZWRfID0gdHJ1ZTsK
KyAgfSwgIiIpOworfQorCisvLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgRVhQRUNUX1BSRURfRk9STUFU
MSB3aGVyZSB0aGUKKy8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIGJ1
aWx0LWluIHR5cGUgKGludCkuCitURVNUX0YoRVhQRUNUX1BSRURfRk9STUFUMVRlc3QsIEZ1bmN0
aW9uT25CdWlsdEluVHlwZVN1Y2Nlc3MpIHsKKyAgRVhQRUNUX1BSRURfRk9STUFUMShQcmVkRm9y
bWF0RnVuY3Rpb24xLAorICAgICAgICAgICAgICAgICAgICAgICsrbjFfKTsKKyAgZmluaXNoZWRf
ID0gdHJ1ZTsKK30KKworLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEVYUEVDVF9QUkVEX0ZPUk1BVDEg
d2hlcmUgdGhlCisvLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSB1c2Vy
LWRlZmluZWQgdHlwZSAoQm9vbCkuCitURVNUX0YoRVhQRUNUX1BSRURfRk9STUFUMVRlc3QsIEZ1
bmN0aW9uT25Vc2VyVHlwZVN1Y2Nlc3MpIHsKKyAgRVhQRUNUX1BSRURfRk9STUFUMShQcmVkRm9y
bWF0RnVuY3Rpb24xLAorICAgICAgICAgICAgICAgICAgICAgIEJvb2woKytuMV8pKTsKKyAgZmlu
aXNoZWRfID0gdHJ1ZTsKK30KKworLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEVYUEVDVF9QUkVEX0ZP
Uk1BVDEgd2hlcmUgdGhlCisvLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBh
IGJ1aWx0LWluIHR5cGUgKGludCkuCitURVNUX0YoRVhQRUNUX1BSRURfRk9STUFUMVRlc3QsIEZ1
bmN0b3JPbkJ1aWx0SW5UeXBlU3VjY2VzcykgeworICBFWFBFQ1RfUFJFRF9GT1JNQVQxKFByZWRG
b3JtYXRGdW5jdG9yMSgpLAorICAgICAgICAgICAgICAgICAgICAgICsrbjFfKTsKKyAgZmluaXNo
ZWRfID0gdHJ1ZTsKK30KKworLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEVYUEVDVF9QUkVEX0ZPUk1B
VDEgd2hlcmUgdGhlCisvLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBhIHVz
ZXItZGVmaW5lZCB0eXBlIChCb29sKS4KK1RFU1RfRihFWFBFQ1RfUFJFRF9GT1JNQVQxVGVzdCwg
RnVuY3Rvck9uVXNlclR5cGVTdWNjZXNzKSB7CisgIEVYUEVDVF9QUkVEX0ZPUk1BVDEoUHJlZEZv
cm1hdEZ1bmN0b3IxKCksCisgICAgICAgICAgICAgICAgICAgICAgQm9vbCgrK24xXykpOworICBm
aW5pc2hlZF8gPSB0cnVlOworfQorCisvLyBUZXN0cyBhIGZhaWxlZCBFWFBFQ1RfUFJFRF9GT1JN
QVQxIHdoZXJlIHRoZQorLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEg
YnVpbHQtaW4gdHlwZSAoaW50KS4KK1RFU1RfRihFWFBFQ1RfUFJFRF9GT1JNQVQxVGVzdCwgRnVu
Y3Rpb25PbkJ1aWx0SW5UeXBlRmFpbHVyZSkgeworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7
ICAvLyBOT0xJTlQKKyAgICBFWFBFQ1RfUFJFRF9GT1JNQVQxKFByZWRGb3JtYXRGdW5jdGlvbjEs
CisgICAgICAgICAgICAgICAgICAgICAgICBuMV8rKyk7CisgICAgZmluaXNoZWRfID0gdHJ1ZTsK
KyAgfSwgIiIpOworfQorCisvLyBUZXN0cyBhIGZhaWxlZCBFWFBFQ1RfUFJFRF9GT1JNQVQxIHdo
ZXJlIHRoZQorLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgdXNlci1k
ZWZpbmVkIHR5cGUgKEJvb2wpLgorVEVTVF9GKEVYUEVDVF9QUkVEX0ZPUk1BVDFUZXN0LCBGdW5j
dGlvbk9uVXNlclR5cGVGYWlsdXJlKSB7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8v
IE5PTElOVAorICAgIEVYUEVDVF9QUkVEX0ZPUk1BVDEoUHJlZEZvcm1hdEZ1bmN0aW9uMSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIEJvb2wobjFfKyspKTsKKyAgICBmaW5pc2hlZF8gPSB0cnVl
OworICB9LCAiIik7Cit9CisKKy8vIFRlc3RzIGEgZmFpbGVkIEVYUEVDVF9QUkVEX0ZPUk1BVDEg
d2hlcmUgdGhlCisvLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBhIGJ1aWx0
LWluIHR5cGUgKGludCkuCitURVNUX0YoRVhQRUNUX1BSRURfRk9STUFUMVRlc3QsIEZ1bmN0b3JP
bkJ1aWx0SW5UeXBlRmFpbHVyZSkgeworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBO
T0xJTlQKKyAgICBFWFBFQ1RfUFJFRF9GT1JNQVQxKFByZWRGb3JtYXRGdW5jdG9yMSgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgbjFfKyspOworICAgIGZpbmlzaGVkXyA9IHRydWU7CisgIH0s
ICIiKTsKK30KKworLy8gVGVzdHMgYSBmYWlsZWQgRVhQRUNUX1BSRURfRk9STUFUMSB3aGVyZSB0
aGUKKy8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgdXNlci1kZWZpbmVk
IHR5cGUgKEJvb2wpLgorVEVTVF9GKEVYUEVDVF9QUkVEX0ZPUk1BVDFUZXN0LCBGdW5jdG9yT25V
c2VyVHlwZUZhaWx1cmUpIHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5U
CisgICAgRVhQRUNUX1BSRURfRk9STUFUMShQcmVkRm9ybWF0RnVuY3RvcjEoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEJvb2wobjFfKyspKTsKKyAgICBmaW5pc2hlZF8gPSB0cnVlOworICB9
LCAiIik7Cit9CisKKy8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBBU1NFUlRfUFJFRF9GT1JNQVQxIHdo
ZXJlIHRoZQorLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgYnVpbHQt
aW4gdHlwZSAoaW50KS4KK1RFU1RfRihBU1NFUlRfUFJFRF9GT1JNQVQxVGVzdCwgRnVuY3Rpb25P
bkJ1aWx0SW5UeXBlU3VjY2VzcykgeworICBBU1NFUlRfUFJFRF9GT1JNQVQxKFByZWRGb3JtYXRG
dW5jdGlvbjEsCisgICAgICAgICAgICAgICAgICAgICAgKytuMV8pOworICBmaW5pc2hlZF8gPSB0
cnVlOworfQorCisvLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgQVNTRVJUX1BSRURfRk9STUFUMSB3aGVy
ZSB0aGUKKy8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIHVzZXItZGVm
aW5lZCB0eXBlIChCb29sKS4KK1RFU1RfRihBU1NFUlRfUFJFRF9GT1JNQVQxVGVzdCwgRnVuY3Rp
b25PblVzZXJUeXBlU3VjY2VzcykgeworICBBU1NFUlRfUFJFRF9GT1JNQVQxKFByZWRGb3JtYXRG
dW5jdGlvbjEsCisgICAgICAgICAgICAgICAgICAgICAgQm9vbCgrK24xXykpOworICBmaW5pc2hl
ZF8gPSB0cnVlOworfQorCisvLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgQVNTRVJUX1BSRURfRk9STUFU
MSB3aGVyZSB0aGUKKy8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgYnVp
bHQtaW4gdHlwZSAoaW50KS4KK1RFU1RfRihBU1NFUlRfUFJFRF9GT1JNQVQxVGVzdCwgRnVuY3Rv
ck9uQnVpbHRJblR5cGVTdWNjZXNzKSB7CisgIEFTU0VSVF9QUkVEX0ZPUk1BVDEoUHJlZEZvcm1h
dEZ1bmN0b3IxKCksCisgICAgICAgICAgICAgICAgICAgICAgKytuMV8pOworICBmaW5pc2hlZF8g
PSB0cnVlOworfQorCisvLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgQVNTRVJUX1BSRURfRk9STUFUMSB3
aGVyZSB0aGUKKy8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgdXNlci1k
ZWZpbmVkIHR5cGUgKEJvb2wpLgorVEVTVF9GKEFTU0VSVF9QUkVEX0ZPUk1BVDFUZXN0LCBGdW5j
dG9yT25Vc2VyVHlwZVN1Y2Nlc3MpIHsKKyAgQVNTRVJUX1BSRURfRk9STUFUMShQcmVkRm9ybWF0
RnVuY3RvcjEoKSwKKyAgICAgICAgICAgICAgICAgICAgICBCb29sKCsrbjFfKSk7CisgIGZpbmlz
aGVkXyA9IHRydWU7Cit9CisKKy8vIFRlc3RzIGEgZmFpbGVkIEFTU0VSVF9QUkVEX0ZPUk1BVDEg
d2hlcmUgdGhlCisvLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSBidWls
dC1pbiB0eXBlIChpbnQpLgorVEVTVF9GKEFTU0VSVF9QUkVEX0ZPUk1BVDFUZXN0LCBGdW5jdGlv
bk9uQnVpbHRJblR5cGVGYWlsdXJlKSB7CisgIGV4cGVjdGVkX3RvX2ZpbmlzaF8gPSBmYWxzZTsK
KyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAgQVNTRVJUX1BSRURfRk9S
TUFUMShQcmVkRm9ybWF0RnVuY3Rpb24xLAorICAgICAgICAgICAgICAgICAgICAgICAgbjFfKysp
OworICAgIGZpbmlzaGVkXyA9IHRydWU7CisgIH0sICIiKTsKK30KKworLy8gVGVzdHMgYSBmYWls
ZWQgQVNTRVJUX1BSRURfRk9STUFUMSB3aGVyZSB0aGUKKy8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIg
aXMgYSBmdW5jdGlvbiBvbiBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4KK1RFU1RfRihBU1NF
UlRfUFJFRF9GT1JNQVQxVGVzdCwgRnVuY3Rpb25PblVzZXJUeXBlRmFpbHVyZSkgeworICBleHBl
Y3RlZF90b19maW5pc2hfID0gZmFsc2U7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5P
TElOVAorICAgIEFTU0VSVF9QUkVEX0ZPUk1BVDEoUHJlZEZvcm1hdEZ1bmN0aW9uMSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIEJvb2wobjFfKyspKTsKKyAgICBmaW5pc2hlZF8gPSB0cnVlOwor
ICB9LCAiIik7Cit9CisKKy8vIFRlc3RzIGEgZmFpbGVkIEFTU0VSVF9QUkVEX0ZPUk1BVDEgd2hl
cmUgdGhlCisvLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBhIGJ1aWx0LWlu
IHR5cGUgKGludCkuCitURVNUX0YoQVNTRVJUX1BSRURfRk9STUFUMVRlc3QsIEZ1bmN0b3JPbkJ1
aWx0SW5UeXBlRmFpbHVyZSkgeworICBleHBlY3RlZF90b19maW5pc2hfID0gZmFsc2U7CisgIEVY
UEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEFTU0VSVF9QUkVEX0ZPUk1BVDEo
UHJlZEZvcm1hdEZ1bmN0b3IxKCksCisgICAgICAgICAgICAgICAgICAgICAgICBuMV8rKyk7Cisg
ICAgZmluaXNoZWRfID0gdHJ1ZTsKKyAgfSwgIiIpOworfQorCisvLyBUZXN0cyBhIGZhaWxlZCBB
U1NFUlRfUFJFRF9GT1JNQVQxIHdoZXJlIHRoZQorLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBh
IGZ1bmN0b3Igb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCitURVNUX0YoQVNTRVJUX1BS
RURfRk9STUFUMVRlc3QsIEZ1bmN0b3JPblVzZXJUeXBlRmFpbHVyZSkgeworICBleHBlY3RlZF90
b19maW5pc2hfID0gZmFsc2U7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAor
ICAgIEFTU0VSVF9QUkVEX0ZPUk1BVDEoUHJlZEZvcm1hdEZ1bmN0b3IxKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICBCb29sKG4xXysrKSk7CisgICAgZmluaXNoZWRfID0gdHJ1ZTsKKyAgfSwg
IiIpOworfQorLy8gU2FtcGxlIGZ1bmN0aW9ucy9mdW5jdG9ycyBmb3IgdGVzdGluZyBiaW5hcnkg
cHJlZGljYXRlIGFzc2VydGlvbnMuCisKKy8vIEEgYmluYXJ5IHByZWRpY2F0ZSBmdW5jdGlvbi4K
K3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Citib29sIFByZWRGdW5jdGlvbjIo
VDEgdjEsIFQyIHYyKSB7CisgIHJldHVybiB2MSArIHYyID4gMDsKK30KKworLy8gVGhlIGZvbGxv
d2luZyB0d28gZnVuY3Rpb25zIGFyZSBuZWVkZWQgdG8gY2lyY3VtdmVudCBhIGJ1ZyBpbgorLy8g
Z2NjIDIuOTUuMywgd2hpY2ggc29tZXRpbWVzIGhhcyBwcm9ibGVtIHdpdGggdGhlIGFib3ZlIHRl
bXBsYXRlCisvLyBmdW5jdGlvbi4KK2Jvb2wgUHJlZEZ1bmN0aW9uMkludChpbnQgdjEsIGludCB2
MikgeworICByZXR1cm4gdjEgKyB2MiA+IDA7Cit9Citib29sIFByZWRGdW5jdGlvbjJCb29sKEJv
b2wgdjEsIEJvb2wgdjIpIHsKKyAgcmV0dXJuIHYxICsgdjIgPiAwOworfQorCisvLyBBIGJpbmFy
eSBwcmVkaWNhdGUgZnVuY3Rvci4KK3N0cnVjdCBQcmVkRnVuY3RvcjIgeworICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgorICBib29sIG9wZXJhdG9yKCkoY29uc3QgVDEmIHYx
LAorICAgICAgICAgICAgICAgICAgY29uc3QgVDImIHYyKSB7CisgICAgcmV0dXJuIHYxICsgdjIg
PiAwOworICB9Cit9OworCisvLyBBIGJpbmFyeSBwcmVkaWNhdGUtZm9ybWF0dGVyIGZ1bmN0aW9u
LgordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK3Rlc3Rpbmc6OkFzc2VydGlv
blJlc3VsdCBQcmVkRm9ybWF0RnVuY3Rpb24yKGNvbnN0IGNoYXIqIGUxLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZTIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMSYgdjEsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMiYgdjIpIHsK
KyAgaWYgKFByZWRGdW5jdGlvbjIodjEsIHYyKSkKKyAgICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0
aW9uU3VjY2VzcygpOworCisgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkKKyAg
ICAgIDw8IGUxIDw8ICIgKyAiIDw8IGUyCisgICAgICA8PCAiIGlzIGV4cGVjdGVkIHRvIGJlIHBv
c2l0aXZlLCBidXQgZXZhbHVhdGVzIHRvICIKKyAgICAgIDw8IHYxICsgdjIgPDwgIi4iOworfQor
CisvLyBBIGJpbmFyeSBwcmVkaWNhdGUtZm9ybWF0dGVyIGZ1bmN0b3IuCitzdHJ1Y3QgUHJlZEZv
cm1hdEZ1bmN0b3IyIHsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KKyAg
dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IG9wZXJhdG9yKCkoY29uc3QgY2hhciogZTEsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGUyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMSYgdjEsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQyJiB2MikgY29uc3QgeworICAgIHJl
dHVybiBQcmVkRm9ybWF0RnVuY3Rpb24yKGUxLCBlMiwgdjEsIHYyKTsKKyAgfQorfTsKKworLy8g
VGVzdHMgZm9yIHtFWFBFQ1R8QVNTRVJUfV9QUkVEX0ZPUk1BVDIuCisKK2NsYXNzIFByZWRpY2F0
ZTJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgdmlydHVhbCB2
b2lkIFNldFVwKCkgeworICAgIGV4cGVjdGVkX3RvX2ZpbmlzaF8gPSB0cnVlOworICAgIGZpbmlz
aGVkXyA9IGZhbHNlOworICAgIG4xXyA9IG4yXyA9IDA7CisgIH0KKworICB2aXJ0dWFsIHZvaWQg
VGVhckRvd24oKSB7CisgICAgLy8gVmVyaWZpZXMgdGhhdCBlYWNoIG9mIHRoZSBwcmVkaWNhdGUn
cyBhcmd1bWVudHMgd2FzIGV2YWx1YXRlZAorICAgIC8vIGV4YWN0bHkgb25jZS4KKyAgICBFWFBF
Q1RfRVEoMSwgbjFfKSA8PAorICAgICAgICAiVGhlIHByZWRpY2F0ZSBhc3NlcnRpb24gZGlkbid0
IGV2YWx1YXRlIGFyZ3VtZW50IDIgIgorICAgICAgICAiZXhhY3RseSBvbmNlLiI7CisgICAgRVhQ
RUNUX0VRKDEsIG4yXykgPDwKKyAgICAgICAgIlRoZSBwcmVkaWNhdGUgYXNzZXJ0aW9uIGRpZG4n
dCBldmFsdWF0ZSBhcmd1bWVudCAzICIKKyAgICAgICAgImV4YWN0bHkgb25jZS4iOworCisgICAg
Ly8gVmVyaWZpZXMgdGhhdCB0aGUgY29udHJvbCBmbG93IGluIHRoZSB0ZXN0IGZ1bmN0aW9uIGlz
IGV4cGVjdGVkLgorICAgIGlmIChleHBlY3RlZF90b19maW5pc2hfICYmICFmaW5pc2hlZF8pIHsK
KyAgICAgIEZBSUwoKSA8PCAiVGhlIHByZWRpY2F0ZSBhc3NlcnRpb24gdW5leHBhY3RlZGx5IGFi
b3J0ZWQgdGhlIHRlc3QuIjsKKyAgICB9IGVsc2UgaWYgKCFleHBlY3RlZF90b19maW5pc2hfICYm
IGZpbmlzaGVkXykgeworICAgICAgRkFJTCgpIDw8ICJUaGUgZmFpbGVkIHByZWRpY2F0ZSBhc3Nl
cnRpb24gZGlkbid0IGFib3J0IHRoZSB0ZXN0ICIKKyAgICAgICAgICAgICAgICAiYXMgZXhwZWN0
ZWQuIjsKKyAgICB9CisgIH0KKworICAvLyB0cnVlIGlmZiB0aGUgdGVzdCBmdW5jdGlvbiBpcyBl
eHBlY3RlZCB0byBydW4gdG8gZmluaXNoLgorICBzdGF0aWMgYm9vbCBleHBlY3RlZF90b19maW5p
c2hfOworCisgIC8vIHRydWUgaWZmIHRoZSB0ZXN0IGZ1bmN0aW9uIGRpZCBydW4gdG8gZmluaXNo
LgorICBzdGF0aWMgYm9vbCBmaW5pc2hlZF87CisKKyAgc3RhdGljIGludCBuMV87CisgIHN0YXRp
YyBpbnQgbjJfOworfTsKKworYm9vbCBQcmVkaWNhdGUyVGVzdDo6ZXhwZWN0ZWRfdG9fZmluaXNo
XzsKK2Jvb2wgUHJlZGljYXRlMlRlc3Q6OmZpbmlzaGVkXzsKK2ludCBQcmVkaWNhdGUyVGVzdDo6
bjFfOworaW50IFByZWRpY2F0ZTJUZXN0OjpuMl87CisKK3R5cGVkZWYgUHJlZGljYXRlMlRlc3Qg
RVhQRUNUX1BSRURfRk9STUFUMlRlc3Q7Cit0eXBlZGVmIFByZWRpY2F0ZTJUZXN0IEFTU0VSVF9Q
UkVEX0ZPUk1BVDJUZXN0OwordHlwZWRlZiBQcmVkaWNhdGUyVGVzdCBFWFBFQ1RfUFJFRDJUZXN0
OwordHlwZWRlZiBQcmVkaWNhdGUyVGVzdCBBU1NFUlRfUFJFRDJUZXN0OworCisvLyBUZXN0cyBh
IHN1Y2Nlc3NmdWwgRVhQRUNUX1BSRUQyIHdoZXJlIHRoZQorLy8gcHJlZGljYXRlLWZvcm1hdHRl
ciBpcyBhIGZ1bmN0aW9uIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KK1RFU1RfRihFWFBFQ1Rf
UFJFRDJUZXN0LCBGdW5jdGlvbk9uQnVpbHRJblR5cGVTdWNjZXNzKSB7CisgIEVYUEVDVF9QUkVE
MihQcmVkRnVuY3Rpb24ySW50LAorICAgICAgICAgICAgICAgKytuMV8sCisgICAgICAgICAgICAg
ICArK24yXyk7CisgIGZpbmlzaGVkXyA9IHRydWU7Cit9CisKKy8vIFRlc3RzIGEgc3VjY2Vzc2Z1
bCBFWFBFQ1RfUFJFRDIgd2hlcmUgdGhlCisvLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVu
Y3Rpb24gb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCitURVNUX0YoRVhQRUNUX1BSRUQy
VGVzdCwgRnVuY3Rpb25PblVzZXJUeXBlU3VjY2VzcykgeworICBFWFBFQ1RfUFJFRDIoUHJlZEZ1
bmN0aW9uMkJvb2wsCisgICAgICAgICAgICAgICBCb29sKCsrbjFfKSwKKyAgICAgICAgICAgICAg
IEJvb2woKytuMl8pKTsKKyAgZmluaXNoZWRfID0gdHJ1ZTsKK30KKworLy8gVGVzdHMgYSBzdWNj
ZXNzZnVsIEVYUEVDVF9QUkVEMiB3aGVyZSB0aGUKKy8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMg
YSBmdW5jdG9yIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KK1RFU1RfRihFWFBFQ1RfUFJFRDJU
ZXN0LCBGdW5jdG9yT25CdWlsdEluVHlwZVN1Y2Nlc3MpIHsKKyAgRVhQRUNUX1BSRUQyKFByZWRG
dW5jdG9yMigpLAorICAgICAgICAgICAgICAgKytuMV8sCisgICAgICAgICAgICAgICArK24yXyk7
CisgIGZpbmlzaGVkXyA9IHRydWU7Cit9CisKKy8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBFWFBFQ1Rf
UFJFRDIgd2hlcmUgdGhlCisvLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBh
IHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4KK1RFU1RfRihFWFBFQ1RfUFJFRDJUZXN0LCBGdW5j
dG9yT25Vc2VyVHlwZVN1Y2Nlc3MpIHsKKyAgRVhQRUNUX1BSRUQyKFByZWRGdW5jdG9yMigpLAor
ICAgICAgICAgICAgICAgQm9vbCgrK24xXyksCisgICAgICAgICAgICAgICBCb29sKCsrbjJfKSk7
CisgIGZpbmlzaGVkXyA9IHRydWU7Cit9CisKKy8vIFRlc3RzIGEgZmFpbGVkIEVYUEVDVF9QUkVE
MiB3aGVyZSB0aGUKKy8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIGJ1
aWx0LWluIHR5cGUgKGludCkuCitURVNUX0YoRVhQRUNUX1BSRUQyVGVzdCwgRnVuY3Rpb25PbkJ1
aWx0SW5UeXBlRmFpbHVyZSkgeworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJ
TlQKKyAgICBFWFBFQ1RfUFJFRDIoUHJlZEZ1bmN0aW9uMkludCwKKyAgICAgICAgICAgICAgICAg
bjFfKyssCisgICAgICAgICAgICAgICAgIG4yXysrKTsKKyAgICBmaW5pc2hlZF8gPSB0cnVlOwor
ICB9LCAiIik7Cit9CisKKy8vIFRlc3RzIGEgZmFpbGVkIEVYUEVDVF9QUkVEMiB3aGVyZSB0aGUK
Ky8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIHVzZXItZGVmaW5lZCB0
eXBlIChCb29sKS4KK1RFU1RfRihFWFBFQ1RfUFJFRDJUZXN0LCBGdW5jdGlvbk9uVXNlclR5cGVG
YWlsdXJlKSB7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEVY
UEVDVF9QUkVEMihQcmVkRnVuY3Rpb24yQm9vbCwKKyAgICAgICAgICAgICAgICAgQm9vbChuMV8r
KyksCisgICAgICAgICAgICAgICAgIEJvb2wobjJfKyspKTsKKyAgICBmaW5pc2hlZF8gPSB0cnVl
OworICB9LCAiIik7Cit9CisKKy8vIFRlc3RzIGEgZmFpbGVkIEVYUEVDVF9QUkVEMiB3aGVyZSB0
aGUKKy8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgYnVpbHQtaW4gdHlw
ZSAoaW50KS4KK1RFU1RfRihFWFBFQ1RfUFJFRDJUZXN0LCBGdW5jdG9yT25CdWlsdEluVHlwZUZh
aWx1cmUpIHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAgRVhQ
RUNUX1BSRUQyKFByZWRGdW5jdG9yMigpLAorICAgICAgICAgICAgICAgICBuMV8rKywKKyAgICAg
ICAgICAgICAgICAgbjJfKyspOworICAgIGZpbmlzaGVkXyA9IHRydWU7CisgIH0sICIiKTsKK30K
KworLy8gVGVzdHMgYSBmYWlsZWQgRVhQRUNUX1BSRUQyIHdoZXJlIHRoZQorLy8gcHJlZGljYXRl
LWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCitU
RVNUX0YoRVhQRUNUX1BSRUQyVGVzdCwgRnVuY3Rvck9uVXNlclR5cGVGYWlsdXJlKSB7CisgIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEVYUEVDVF9QUkVEMihQcmVk
RnVuY3RvcjIoKSwKKyAgICAgICAgICAgICAgICAgQm9vbChuMV8rKyksCisgICAgICAgICAgICAg
ICAgIEJvb2wobjJfKyspKTsKKyAgICBmaW5pc2hlZF8gPSB0cnVlOworICB9LCAiIik7Cit9CisK
Ky8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBBU1NFUlRfUFJFRDIgd2hlcmUgdGhlCisvLyBwcmVkaWNh
dGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgorVEVT
VF9GKEFTU0VSVF9QUkVEMlRlc3QsIEZ1bmN0aW9uT25CdWlsdEluVHlwZVN1Y2Nlc3MpIHsKKyAg
QVNTRVJUX1BSRUQyKFByZWRGdW5jdGlvbjJJbnQsCisgICAgICAgICAgICAgICArK24xXywKKyAg
ICAgICAgICAgICAgICsrbjJfKTsKKyAgZmluaXNoZWRfID0gdHJ1ZTsKK30KKworLy8gVGVzdHMg
YSBzdWNjZXNzZnVsIEFTU0VSVF9QUkVEMiB3aGVyZSB0aGUKKy8vIHByZWRpY2F0ZS1mb3JtYXR0
ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4KK1RFU1RfRihB
U1NFUlRfUFJFRDJUZXN0LCBGdW5jdGlvbk9uVXNlclR5cGVTdWNjZXNzKSB7CisgIEFTU0VSVF9Q
UkVEMihQcmVkRnVuY3Rpb24yQm9vbCwKKyAgICAgICAgICAgICAgIEJvb2woKytuMV8pLAorICAg
ICAgICAgICAgICAgQm9vbCgrK24yXykpOworICBmaW5pc2hlZF8gPSB0cnVlOworfQorCisvLyBU
ZXN0cyBhIHN1Y2Nlc3NmdWwgQVNTRVJUX1BSRUQyIHdoZXJlIHRoZQorLy8gcHJlZGljYXRlLWZv
cm1hdHRlciBpcyBhIGZ1bmN0b3Igb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgorVEVTVF9GKEFT
U0VSVF9QUkVEMlRlc3QsIEZ1bmN0b3JPbkJ1aWx0SW5UeXBlU3VjY2VzcykgeworICBBU1NFUlRf
UFJFRDIoUHJlZEZ1bmN0b3IyKCksCisgICAgICAgICAgICAgICArK24xXywKKyAgICAgICAgICAg
ICAgICsrbjJfKTsKKyAgZmluaXNoZWRfID0gdHJ1ZTsKK30KKworLy8gVGVzdHMgYSBzdWNjZXNz
ZnVsIEFTU0VSVF9QUkVEMiB3aGVyZSB0aGUKKy8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBm
dW5jdG9yIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgorVEVTVF9GKEFTU0VSVF9QUkVE
MlRlc3QsIEZ1bmN0b3JPblVzZXJUeXBlU3VjY2VzcykgeworICBBU1NFUlRfUFJFRDIoUHJlZEZ1
bmN0b3IyKCksCisgICAgICAgICAgICAgICBCb29sKCsrbjFfKSwKKyAgICAgICAgICAgICAgIEJv
b2woKytuMl8pKTsKKyAgZmluaXNoZWRfID0gdHJ1ZTsKK30KKworLy8gVGVzdHMgYSBmYWlsZWQg
QVNTRVJUX1BSRUQyIHdoZXJlIHRoZQorLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0
aW9uIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KK1RFU1RfRihBU1NFUlRfUFJFRDJUZXN0LCBG
dW5jdGlvbk9uQnVpbHRJblR5cGVGYWlsdXJlKSB7CisgIGV4cGVjdGVkX3RvX2ZpbmlzaF8gPSBm
YWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAgQVNTRVJUX1BS
RUQyKFByZWRGdW5jdGlvbjJJbnQsCisgICAgICAgICAgICAgICAgIG4xXysrLAorICAgICAgICAg
ICAgICAgICBuMl8rKyk7CisgICAgZmluaXNoZWRfID0gdHJ1ZTsKKyAgfSwgIiIpOworfQorCisv
LyBUZXN0cyBhIGZhaWxlZCBBU1NFUlRfUFJFRDIgd2hlcmUgdGhlCisvLyBwcmVkaWNhdGUtZm9y
bWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCitURVNU
X0YoQVNTRVJUX1BSRUQyVGVzdCwgRnVuY3Rpb25PblVzZXJUeXBlRmFpbHVyZSkgeworICBleHBl
Y3RlZF90b19maW5pc2hfID0gZmFsc2U7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5P
TElOVAorICAgIEFTU0VSVF9QUkVEMihQcmVkRnVuY3Rpb24yQm9vbCwKKyAgICAgICAgICAgICAg
ICAgQm9vbChuMV8rKyksCisgICAgICAgICAgICAgICAgIEJvb2wobjJfKyspKTsKKyAgICBmaW5p
c2hlZF8gPSB0cnVlOworICB9LCAiIik7Cit9CisKKy8vIFRlc3RzIGEgZmFpbGVkIEFTU0VSVF9Q
UkVEMiB3aGVyZSB0aGUKKy8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEg
YnVpbHQtaW4gdHlwZSAoaW50KS4KK1RFU1RfRihBU1NFUlRfUFJFRDJUZXN0LCBGdW5jdG9yT25C
dWlsdEluVHlwZUZhaWx1cmUpIHsKKyAgZXhwZWN0ZWRfdG9fZmluaXNoXyA9IGZhbHNlOworICBF
WFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBBU1NFUlRfUFJFRDIoUHJlZEZ1
bmN0b3IyKCksCisgICAgICAgICAgICAgICAgIG4xXysrLAorICAgICAgICAgICAgICAgICBuMl8r
Kyk7CisgICAgZmluaXNoZWRfID0gdHJ1ZTsKKyAgfSwgIiIpOworfQorCisvLyBUZXN0cyBhIGZh
aWxlZCBBU1NFUlRfUFJFRDIgd2hlcmUgdGhlCisvLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEg
ZnVuY3RvciBvbiBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4KK1RFU1RfRihBU1NFUlRfUFJF
RDJUZXN0LCBGdW5jdG9yT25Vc2VyVHlwZUZhaWx1cmUpIHsKKyAgZXhwZWN0ZWRfdG9fZmluaXNo
XyA9IGZhbHNlOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBBU1NF
UlRfUFJFRDIoUHJlZEZ1bmN0b3IyKCksCisgICAgICAgICAgICAgICAgIEJvb2wobjFfKyspLAor
ICAgICAgICAgICAgICAgICBCb29sKG4yXysrKSk7CisgICAgZmluaXNoZWRfID0gdHJ1ZTsKKyAg
fSwgIiIpOworfQorCisvLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgRVhQRUNUX1BSRURfRk9STUFUMiB3
aGVyZSB0aGUKKy8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIGJ1aWx0
LWluIHR5cGUgKGludCkuCitURVNUX0YoRVhQRUNUX1BSRURfRk9STUFUMlRlc3QsIEZ1bmN0aW9u
T25CdWlsdEluVHlwZVN1Y2Nlc3MpIHsKKyAgRVhQRUNUX1BSRURfRk9STUFUMihQcmVkRm9ybWF0
RnVuY3Rpb24yLAorICAgICAgICAgICAgICAgICAgICAgICsrbjFfLAorICAgICAgICAgICAgICAg
ICAgICAgICsrbjJfKTsKKyAgZmluaXNoZWRfID0gdHJ1ZTsKK30KKworLy8gVGVzdHMgYSBzdWNj
ZXNzZnVsIEVYUEVDVF9QUkVEX0ZPUk1BVDIgd2hlcmUgdGhlCisvLyBwcmVkaWNhdGUtZm9ybWF0
dGVyIGlzIGEgZnVuY3Rpb24gb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCitURVNUX0Yo
RVhQRUNUX1BSRURfRk9STUFUMlRlc3QsIEZ1bmN0aW9uT25Vc2VyVHlwZVN1Y2Nlc3MpIHsKKyAg
RVhQRUNUX1BSRURfRk9STUFUMihQcmVkRm9ybWF0RnVuY3Rpb24yLAorICAgICAgICAgICAgICAg
ICAgICAgIEJvb2woKytuMV8pLAorICAgICAgICAgICAgICAgICAgICAgIEJvb2woKytuMl8pKTsK
KyAgZmluaXNoZWRfID0gdHJ1ZTsKK30KKworLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEVYUEVDVF9Q
UkVEX0ZPUk1BVDIgd2hlcmUgdGhlCisvLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rv
ciBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCitURVNUX0YoRVhQRUNUX1BSRURfRk9STUFUMlRl
c3QsIEZ1bmN0b3JPbkJ1aWx0SW5UeXBlU3VjY2VzcykgeworICBFWFBFQ1RfUFJFRF9GT1JNQVQy
KFByZWRGb3JtYXRGdW5jdG9yMigpLAorICAgICAgICAgICAgICAgICAgICAgICsrbjFfLAorICAg
ICAgICAgICAgICAgICAgICAgICsrbjJfKTsKKyAgZmluaXNoZWRfID0gdHJ1ZTsKK30KKworLy8g
VGVzdHMgYSBzdWNjZXNzZnVsIEVYUEVDVF9QUkVEX0ZPUk1BVDIgd2hlcmUgdGhlCisvLyBwcmVk
aWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29s
KS4KK1RFU1RfRihFWFBFQ1RfUFJFRF9GT1JNQVQyVGVzdCwgRnVuY3Rvck9uVXNlclR5cGVTdWNj
ZXNzKSB7CisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoUHJlZEZvcm1hdEZ1bmN0b3IyKCksCisgICAg
ICAgICAgICAgICAgICAgICAgQm9vbCgrK24xXyksCisgICAgICAgICAgICAgICAgICAgICAgQm9v
bCgrK24yXykpOworICBmaW5pc2hlZF8gPSB0cnVlOworfQorCisvLyBUZXN0cyBhIGZhaWxlZCBF
WFBFQ1RfUFJFRF9GT1JNQVQyIHdoZXJlIHRoZQorLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBh
IGZ1bmN0aW9uIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KK1RFU1RfRihFWFBFQ1RfUFJFRF9G
T1JNQVQyVGVzdCwgRnVuY3Rpb25PbkJ1aWx0SW5UeXBlRmFpbHVyZSkgeworICBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBFWFBFQ1RfUFJFRF9GT1JNQVQyKFByZWRG
b3JtYXRGdW5jdGlvbjIsCisgICAgICAgICAgICAgICAgICAgICAgICBuMV8rKywKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG4yXysrKTsKKyAgICBmaW5pc2hlZF8gPSB0cnVlOworICB9LCAiIik7
Cit9CisKKy8vIFRlc3RzIGEgZmFpbGVkIEVYUEVDVF9QUkVEX0ZPUk1BVDIgd2hlcmUgdGhlCisv
LyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSB1c2VyLWRlZmluZWQgdHlw
ZSAoQm9vbCkuCitURVNUX0YoRVhQRUNUX1BSRURfRk9STUFUMlRlc3QsIEZ1bmN0aW9uT25Vc2Vy
VHlwZUZhaWx1cmUpIHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisg
ICAgRVhQRUNUX1BSRURfRk9STUFUMihQcmVkRm9ybWF0RnVuY3Rpb24yLAorICAgICAgICAgICAg
ICAgICAgICAgICAgQm9vbChuMV8rKyksCisgICAgICAgICAgICAgICAgICAgICAgICBCb29sKG4y
XysrKSk7CisgICAgZmluaXNoZWRfID0gdHJ1ZTsKKyAgfSwgIiIpOworfQorCisvLyBUZXN0cyBh
IGZhaWxlZCBFWFBFQ1RfUFJFRF9GT1JNQVQyIHdoZXJlIHRoZQorLy8gcHJlZGljYXRlLWZvcm1h
dHRlciBpcyBhIGZ1bmN0b3Igb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgorVEVTVF9GKEVYUEVD
VF9QUkVEX0ZPUk1BVDJUZXN0LCBGdW5jdG9yT25CdWlsdEluVHlwZUZhaWx1cmUpIHsKKyAgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAgRVhQRUNUX1BSRURfRk9STUFU
MihQcmVkRm9ybWF0RnVuY3RvcjIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG4xXysrLAor
ICAgICAgICAgICAgICAgICAgICAgICAgbjJfKyspOworICAgIGZpbmlzaGVkXyA9IHRydWU7Cisg
IH0sICIiKTsKK30KKworLy8gVGVzdHMgYSBmYWlsZWQgRVhQRUNUX1BSRURfRk9STUFUMiB3aGVy
ZSB0aGUKKy8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgdXNlci1kZWZp
bmVkIHR5cGUgKEJvb2wpLgorVEVTVF9GKEVYUEVDVF9QUkVEX0ZPUk1BVDJUZXN0LCBGdW5jdG9y
T25Vc2VyVHlwZUZhaWx1cmUpIHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9M
SU5UCisgICAgRVhQRUNUX1BSRURfRk9STUFUMihQcmVkRm9ybWF0RnVuY3RvcjIoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIEJvb2wobjFfKyspLAorICAgICAgICAgICAgICAgICAgICAgICAg
Qm9vbChuMl8rKykpOworICAgIGZpbmlzaGVkXyA9IHRydWU7CisgIH0sICIiKTsKK30KKworLy8g
VGVzdHMgYSBzdWNjZXNzZnVsIEFTU0VSVF9QUkVEX0ZPUk1BVDIgd2hlcmUgdGhlCisvLyBwcmVk
aWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgor
VEVTVF9GKEFTU0VSVF9QUkVEX0ZPUk1BVDJUZXN0LCBGdW5jdGlvbk9uQnVpbHRJblR5cGVTdWNj
ZXNzKSB7CisgIEFTU0VSVF9QUkVEX0ZPUk1BVDIoUHJlZEZvcm1hdEZ1bmN0aW9uMiwKKyAgICAg
ICAgICAgICAgICAgICAgICArK24xXywKKyAgICAgICAgICAgICAgICAgICAgICArK24yXyk7Cisg
IGZpbmlzaGVkXyA9IHRydWU7Cit9CisKKy8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBBU1NFUlRfUFJF
RF9GT1JNQVQyIHdoZXJlIHRoZQorLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9u
IG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgorVEVTVF9GKEFTU0VSVF9QUkVEX0ZPUk1B
VDJUZXN0LCBGdW5jdGlvbk9uVXNlclR5cGVTdWNjZXNzKSB7CisgIEFTU0VSVF9QUkVEX0ZPUk1B
VDIoUHJlZEZvcm1hdEZ1bmN0aW9uMiwKKyAgICAgICAgICAgICAgICAgICAgICBCb29sKCsrbjFf
KSwKKyAgICAgICAgICAgICAgICAgICAgICBCb29sKCsrbjJfKSk7CisgIGZpbmlzaGVkXyA9IHRy
dWU7Cit9CisKKy8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBBU1NFUlRfUFJFRF9GT1JNQVQyIHdoZXJl
IHRoZQorLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igb24gYSBidWlsdC1pbiB0
eXBlIChpbnQpLgorVEVTVF9GKEFTU0VSVF9QUkVEX0ZPUk1BVDJUZXN0LCBGdW5jdG9yT25CdWls
dEluVHlwZVN1Y2Nlc3MpIHsKKyAgQVNTRVJUX1BSRURfRk9STUFUMihQcmVkRm9ybWF0RnVuY3Rv
cjIoKSwKKyAgICAgICAgICAgICAgICAgICAgICArK24xXywKKyAgICAgICAgICAgICAgICAgICAg
ICArK24yXyk7CisgIGZpbmlzaGVkXyA9IHRydWU7Cit9CisKKy8vIFRlc3RzIGEgc3VjY2Vzc2Z1
bCBBU1NFUlRfUFJFRF9GT1JNQVQyIHdoZXJlIHRoZQorLy8gcHJlZGljYXRlLWZvcm1hdHRlciBp
cyBhIGZ1bmN0b3Igb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCitURVNUX0YoQVNTRVJU
X1BSRURfRk9STUFUMlRlc3QsIEZ1bmN0b3JPblVzZXJUeXBlU3VjY2VzcykgeworICBBU1NFUlRf
UFJFRF9GT1JNQVQyKFByZWRGb3JtYXRGdW5jdG9yMigpLAorICAgICAgICAgICAgICAgICAgICAg
IEJvb2woKytuMV8pLAorICAgICAgICAgICAgICAgICAgICAgIEJvb2woKytuMl8pKTsKKyAgZmlu
aXNoZWRfID0gdHJ1ZTsKK30KKworLy8gVGVzdHMgYSBmYWlsZWQgQVNTRVJUX1BSRURfRk9STUFU
MiB3aGVyZSB0aGUKKy8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIGJ1
aWx0LWluIHR5cGUgKGludCkuCitURVNUX0YoQVNTRVJUX1BSRURfRk9STUFUMlRlc3QsIEZ1bmN0
aW9uT25CdWlsdEluVHlwZUZhaWx1cmUpIHsKKyAgZXhwZWN0ZWRfdG9fZmluaXNoXyA9IGZhbHNl
OworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBBU1NFUlRfUFJFRF9G
T1JNQVQyKFByZWRGb3JtYXRGdW5jdGlvbjIsCisgICAgICAgICAgICAgICAgICAgICAgICBuMV8r
KywKKyAgICAgICAgICAgICAgICAgICAgICAgIG4yXysrKTsKKyAgICBmaW5pc2hlZF8gPSB0cnVl
OworICB9LCAiIik7Cit9CisKKy8vIFRlc3RzIGEgZmFpbGVkIEFTU0VSVF9QUkVEX0ZPUk1BVDIg
d2hlcmUgdGhlCisvLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSB1c2Vy
LWRlZmluZWQgdHlwZSAoQm9vbCkuCitURVNUX0YoQVNTRVJUX1BSRURfRk9STUFUMlRlc3QsIEZ1
bmN0aW9uT25Vc2VyVHlwZUZhaWx1cmUpIHsKKyAgZXhwZWN0ZWRfdG9fZmluaXNoXyA9IGZhbHNl
OworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBBU1NFUlRfUFJFRF9G
T1JNQVQyKFByZWRGb3JtYXRGdW5jdGlvbjIsCisgICAgICAgICAgICAgICAgICAgICAgICBCb29s
KG4xXysrKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wobjJfKyspKTsKKyAgICBmaW5p
c2hlZF8gPSB0cnVlOworICB9LCAiIik7Cit9CisKKy8vIFRlc3RzIGEgZmFpbGVkIEFTU0VSVF9Q
UkVEX0ZPUk1BVDIgd2hlcmUgdGhlCisvLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rv
ciBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCitURVNUX0YoQVNTRVJUX1BSRURfRk9STUFUMlRl
c3QsIEZ1bmN0b3JPbkJ1aWx0SW5UeXBlRmFpbHVyZSkgeworICBleHBlY3RlZF90b19maW5pc2hf
ID0gZmFsc2U7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEFTU0VS
VF9QUkVEX0ZPUk1BVDIoUHJlZEZvcm1hdEZ1bmN0b3IyKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICBuMV8rKywKKyAgICAgICAgICAgICAgICAgICAgICAgIG4yXysrKTsKKyAgICBmaW5pc2hl
ZF8gPSB0cnVlOworICB9LCAiIik7Cit9CisKKy8vIFRlc3RzIGEgZmFpbGVkIEFTU0VSVF9QUkVE
X0ZPUk1BVDIgd2hlcmUgdGhlCisvLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBv
biBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4KK1RFU1RfRihBU1NFUlRfUFJFRF9GT1JNQVQy
VGVzdCwgRnVuY3Rvck9uVXNlclR5cGVGYWlsdXJlKSB7CisgIGV4cGVjdGVkX3RvX2ZpbmlzaF8g
PSBmYWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAgQVNTRVJU
X1BSRURfRk9STUFUMihQcmVkRm9ybWF0RnVuY3RvcjIoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEJvb2wobjFfKyspLAorICAgICAgICAgICAgICAgICAgICAgICAgQm9vbChuMl8rKykpOwor
ICAgIGZpbmlzaGVkXyA9IHRydWU7CisgIH0sICIiKTsKK30KKy8vIFNhbXBsZSBmdW5jdGlvbnMv
ZnVuY3RvcnMgZm9yIHRlc3RpbmcgdGVybmFyeSBwcmVkaWNhdGUgYXNzZXJ0aW9ucy4KKworLy8g
QSB0ZXJuYXJ5IHByZWRpY2F0ZSBmdW5jdGlvbi4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlw
ZW5hbWUgVDIsIHR5cGVuYW1lIFQzPgorYm9vbCBQcmVkRnVuY3Rpb24zKFQxIHYxLCBUMiB2Miwg
VDMgdjMpIHsKKyAgcmV0dXJuIHYxICsgdjIgKyB2MyA+IDA7Cit9CisKKy8vIFRoZSBmb2xsb3dp
bmcgdHdvIGZ1bmN0aW9ucyBhcmUgbmVlZGVkIHRvIGNpcmN1bXZlbnQgYSBidWcgaW4KKy8vIGdj
YyAyLjk1LjMsIHdoaWNoIHNvbWV0aW1lcyBoYXMgcHJvYmxlbSB3aXRoIHRoZSBhYm92ZSB0ZW1w
bGF0ZQorLy8gZnVuY3Rpb24uCitib29sIFByZWRGdW5jdGlvbjNJbnQoaW50IHYxLCBpbnQgdjIs
IGludCB2MykgeworICByZXR1cm4gdjEgKyB2MiArIHYzID4gMDsKK30KK2Jvb2wgUHJlZEZ1bmN0
aW9uM0Jvb2woQm9vbCB2MSwgQm9vbCB2MiwgQm9vbCB2MykgeworICByZXR1cm4gdjEgKyB2MiAr
IHYzID4gMDsKK30KKworLy8gQSB0ZXJuYXJ5IHByZWRpY2F0ZSBmdW5jdG9yLgorc3RydWN0IFBy
ZWRGdW5jdG9yMyB7CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVu
YW1lIFQzPgorICBib29sIG9wZXJhdG9yKCkoY29uc3QgVDEmIHYxLAorICAgICAgICAgICAgICAg
ICAgY29uc3QgVDImIHYyLAorICAgICAgICAgICAgICAgICAgY29uc3QgVDMmIHYzKSB7CisgICAg
cmV0dXJuIHYxICsgdjIgKyB2MyA+IDA7CisgIH0KK307CisKKy8vIEEgdGVybmFyeSBwcmVkaWNh
dGUtZm9ybWF0dGVyIGZ1bmN0aW9uLgordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBU
MiwgdHlwZW5hbWUgVDM+Cit0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgUHJlZEZvcm1hdEZ1bmN0
aW9uMyhjb25zdCBjaGFyKiBlMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIGUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogZTMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUMSYgdjEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMiYgdjIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMyYgdjMpIHsKKyAgaWYgKFByZWRGdW5j
dGlvbjModjEsIHYyLCB2MykpCisgICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3Mo
KTsKKworICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpCisgICAgICA8PCBlMSA8
PCAiICsgIiA8PCBlMiA8PCAiICsgIiA8PCBlMworICAgICAgPDwgIiBpcyBleHBlY3RlZCB0byBi
ZSBwb3NpdGl2ZSwgYnV0IGV2YWx1YXRlcyB0byAiCisgICAgICA8PCB2MSArIHYyICsgdjMgPDwg
Ii4iOworfQorCisvLyBBIHRlcm5hcnkgcHJlZGljYXRlLWZvcm1hdHRlciBmdW5jdG9yLgorc3Ry
dWN0IFByZWRGb3JtYXRGdW5jdG9yMyB7CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5h
bWUgVDIsIHR5cGVuYW1lIFQzPgorICB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgb3BlcmF0b3Io
KShjb25zdCBjaGFyKiBlMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogZTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIGUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUMSYgdjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQy
JiB2MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDMmIHYz
KSBjb25zdCB7CisgICAgcmV0dXJuIFByZWRGb3JtYXRGdW5jdGlvbjMoZTEsIGUyLCBlMywgdjEs
IHYyLCB2Myk7CisgIH0KK307CisKKy8vIFRlc3RzIGZvciB7RVhQRUNUfEFTU0VSVH1fUFJFRF9G
T1JNQVQzLgorCitjbGFzcyBQcmVkaWNhdGUzVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsK
KyBwcm90ZWN0ZWQ6CisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICBleHBlY3RlZF90b19m
aW5pc2hfID0gdHJ1ZTsKKyAgICBmaW5pc2hlZF8gPSBmYWxzZTsKKyAgICBuMV8gPSBuMl8gPSBu
M18gPSAwOworICB9CisKKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAgIC8vIFZlcmlm
aWVzIHRoYXQgZWFjaCBvZiB0aGUgcHJlZGljYXRlJ3MgYXJndW1lbnRzIHdhcyBldmFsdWF0ZWQK
KyAgICAvLyBleGFjdGx5IG9uY2UuCisgICAgRVhQRUNUX0VRKDEsIG4xXykgPDwKKyAgICAgICAg
IlRoZSBwcmVkaWNhdGUgYXNzZXJ0aW9uIGRpZG4ndCBldmFsdWF0ZSBhcmd1bWVudCAyICIKKyAg
ICAgICAgImV4YWN0bHkgb25jZS4iOworICAgIEVYUEVDVF9FUSgxLCBuMl8pIDw8CisgICAgICAg
ICJUaGUgcHJlZGljYXRlIGFzc2VydGlvbiBkaWRuJ3QgZXZhbHVhdGUgYXJndW1lbnQgMyAiCisg
ICAgICAgICJleGFjdGx5IG9uY2UuIjsKKyAgICBFWFBFQ1RfRVEoMSwgbjNfKSA8PAorICAgICAg
ICAiVGhlIHByZWRpY2F0ZSBhc3NlcnRpb24gZGlkbid0IGV2YWx1YXRlIGFyZ3VtZW50IDQgIgor
ICAgICAgICAiZXhhY3RseSBvbmNlLiI7CisKKyAgICAvLyBWZXJpZmllcyB0aGF0IHRoZSBjb250
cm9sIGZsb3cgaW4gdGhlIHRlc3QgZnVuY3Rpb24gaXMgZXhwZWN0ZWQuCisgICAgaWYgKGV4cGVj
dGVkX3RvX2ZpbmlzaF8gJiYgIWZpbmlzaGVkXykgeworICAgICAgRkFJTCgpIDw8ICJUaGUgcHJl
ZGljYXRlIGFzc2VydGlvbiB1bmV4cGFjdGVkbHkgYWJvcnRlZCB0aGUgdGVzdC4iOworICAgIH0g
ZWxzZSBpZiAoIWV4cGVjdGVkX3RvX2ZpbmlzaF8gJiYgZmluaXNoZWRfKSB7CisgICAgICBGQUlM
KCkgPDwgIlRoZSBmYWlsZWQgcHJlZGljYXRlIGFzc2VydGlvbiBkaWRuJ3QgYWJvcnQgdGhlIHRl
c3QgIgorICAgICAgICAgICAgICAgICJhcyBleHBlY3RlZC4iOworICAgIH0KKyAgfQorCisgIC8v
IHRydWUgaWZmIHRoZSB0ZXN0IGZ1bmN0aW9uIGlzIGV4cGVjdGVkIHRvIHJ1biB0byBmaW5pc2gu
CisgIHN0YXRpYyBib29sIGV4cGVjdGVkX3RvX2ZpbmlzaF87CisKKyAgLy8gdHJ1ZSBpZmYgdGhl
IHRlc3QgZnVuY3Rpb24gZGlkIHJ1biB0byBmaW5pc2guCisgIHN0YXRpYyBib29sIGZpbmlzaGVk
XzsKKworICBzdGF0aWMgaW50IG4xXzsKKyAgc3RhdGljIGludCBuMl87CisgIHN0YXRpYyBpbnQg
bjNfOworfTsKKworYm9vbCBQcmVkaWNhdGUzVGVzdDo6ZXhwZWN0ZWRfdG9fZmluaXNoXzsKK2Jv
b2wgUHJlZGljYXRlM1Rlc3Q6OmZpbmlzaGVkXzsKK2ludCBQcmVkaWNhdGUzVGVzdDo6bjFfOwor
aW50IFByZWRpY2F0ZTNUZXN0OjpuMl87CitpbnQgUHJlZGljYXRlM1Rlc3Q6Om4zXzsKKwordHlw
ZWRlZiBQcmVkaWNhdGUzVGVzdCBFWFBFQ1RfUFJFRF9GT1JNQVQzVGVzdDsKK3R5cGVkZWYgUHJl
ZGljYXRlM1Rlc3QgQVNTRVJUX1BSRURfRk9STUFUM1Rlc3Q7Cit0eXBlZGVmIFByZWRpY2F0ZTNU
ZXN0IEVYUEVDVF9QUkVEM1Rlc3Q7Cit0eXBlZGVmIFByZWRpY2F0ZTNUZXN0IEFTU0VSVF9QUkVE
M1Rlc3Q7CisKKy8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBFWFBFQ1RfUFJFRDMgd2hlcmUgdGhlCisv
LyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSBidWlsdC1pbiB0eXBlIChp
bnQpLgorVEVTVF9GKEVYUEVDVF9QUkVEM1Rlc3QsIEZ1bmN0aW9uT25CdWlsdEluVHlwZVN1Y2Nl
c3MpIHsKKyAgRVhQRUNUX1BSRUQzKFByZWRGdW5jdGlvbjNJbnQsCisgICAgICAgICAgICAgICAr
K24xXywKKyAgICAgICAgICAgICAgICsrbjJfLAorICAgICAgICAgICAgICAgKytuM18pOworICBm
aW5pc2hlZF8gPSB0cnVlOworfQorCisvLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgRVhQRUNUX1BSRUQz
IHdoZXJlIHRoZQorLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgdXNl
ci1kZWZpbmVkIHR5cGUgKEJvb2wpLgorVEVTVF9GKEVYUEVDVF9QUkVEM1Rlc3QsIEZ1bmN0aW9u
T25Vc2VyVHlwZVN1Y2Nlc3MpIHsKKyAgRVhQRUNUX1BSRUQzKFByZWRGdW5jdGlvbjNCb29sLAor
ICAgICAgICAgICAgICAgQm9vbCgrK24xXyksCisgICAgICAgICAgICAgICBCb29sKCsrbjJfKSwK
KyAgICAgICAgICAgICAgIEJvb2woKytuM18pKTsKKyAgZmluaXNoZWRfID0gdHJ1ZTsKK30KKwor
Ly8gVGVzdHMgYSBzdWNjZXNzZnVsIEVYUEVDVF9QUkVEMyB3aGVyZSB0aGUKKy8vIHByZWRpY2F0
ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KK1RFU1Rf
RihFWFBFQ1RfUFJFRDNUZXN0LCBGdW5jdG9yT25CdWlsdEluVHlwZVN1Y2Nlc3MpIHsKKyAgRVhQ
RUNUX1BSRUQzKFByZWRGdW5jdG9yMygpLAorICAgICAgICAgICAgICAgKytuMV8sCisgICAgICAg
ICAgICAgICArK24yXywKKyAgICAgICAgICAgICAgICsrbjNfKTsKKyAgZmluaXNoZWRfID0gdHJ1
ZTsKK30KKworLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEVYUEVDVF9QUkVEMyB3aGVyZSB0aGUKKy8v
IHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUg
KEJvb2wpLgorVEVTVF9GKEVYUEVDVF9QUkVEM1Rlc3QsIEZ1bmN0b3JPblVzZXJUeXBlU3VjY2Vz
cykgeworICBFWFBFQ1RfUFJFRDMoUHJlZEZ1bmN0b3IzKCksCisgICAgICAgICAgICAgICBCb29s
KCsrbjFfKSwKKyAgICAgICAgICAgICAgIEJvb2woKytuMl8pLAorICAgICAgICAgICAgICAgQm9v
bCgrK24zXykpOworICBmaW5pc2hlZF8gPSB0cnVlOworfQorCisvLyBUZXN0cyBhIGZhaWxlZCBF
WFBFQ1RfUFJFRDMgd2hlcmUgdGhlCisvLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rp
b24gb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgorVEVTVF9GKEVYUEVDVF9QUkVEM1Rlc3QsIEZ1
bmN0aW9uT25CdWlsdEluVHlwZUZhaWx1cmUpIHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
eyAgLy8gTk9MSU5UCisgICAgRVhQRUNUX1BSRUQzKFByZWRGdW5jdGlvbjNJbnQsCisgICAgICAg
ICAgICAgICAgIG4xXysrLAorICAgICAgICAgICAgICAgICBuMl8rKywKKyAgICAgICAgICAgICAg
ICAgbjNfKyspOworICAgIGZpbmlzaGVkXyA9IHRydWU7CisgIH0sICIiKTsKK30KKworLy8gVGVz
dHMgYSBmYWlsZWQgRVhQRUNUX1BSRUQzIHdoZXJlIHRoZQorLy8gcHJlZGljYXRlLWZvcm1hdHRl
ciBpcyBhIGZ1bmN0aW9uIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgorVEVTVF9GKEVY
UEVDVF9QUkVEM1Rlc3QsIEZ1bmN0aW9uT25Vc2VyVHlwZUZhaWx1cmUpIHsKKyAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAgRVhQRUNUX1BSRUQzKFByZWRGdW5jdGlv
bjNCb29sLAorICAgICAgICAgICAgICAgICBCb29sKG4xXysrKSwKKyAgICAgICAgICAgICAgICAg
Qm9vbChuMl8rKyksCisgICAgICAgICAgICAgICAgIEJvb2wobjNfKyspKTsKKyAgICBmaW5pc2hl
ZF8gPSB0cnVlOworICB9LCAiIik7Cit9CisKKy8vIFRlc3RzIGEgZmFpbGVkIEVYUEVDVF9QUkVE
MyB3aGVyZSB0aGUKKy8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgYnVp
bHQtaW4gdHlwZSAoaW50KS4KK1RFU1RfRihFWFBFQ1RfUFJFRDNUZXN0LCBGdW5jdG9yT25CdWls
dEluVHlwZUZhaWx1cmUpIHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5U
CisgICAgRVhQRUNUX1BSRUQzKFByZWRGdW5jdG9yMygpLAorICAgICAgICAgICAgICAgICBuMV8r
KywKKyAgICAgICAgICAgICAgICAgbjJfKyssCisgICAgICAgICAgICAgICAgIG4zXysrKTsKKyAg
ICBmaW5pc2hlZF8gPSB0cnVlOworICB9LCAiIik7Cit9CisKKy8vIFRlc3RzIGEgZmFpbGVkIEVY
UEVDVF9QUkVEMyB3aGVyZSB0aGUKKy8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9y
IG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgorVEVTVF9GKEVYUEVDVF9QUkVEM1Rlc3Qs
IEZ1bmN0b3JPblVzZXJUeXBlRmFpbHVyZSkgeworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7
ICAvLyBOT0xJTlQKKyAgICBFWFBFQ1RfUFJFRDMoUHJlZEZ1bmN0b3IzKCksCisgICAgICAgICAg
ICAgICAgIEJvb2wobjFfKyspLAorICAgICAgICAgICAgICAgICBCb29sKG4yXysrKSwKKyAgICAg
ICAgICAgICAgICAgQm9vbChuM18rKykpOworICAgIGZpbmlzaGVkXyA9IHRydWU7CisgIH0sICIi
KTsKK30KKworLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEFTU0VSVF9QUkVEMyB3aGVyZSB0aGUKKy8v
IHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIGJ1aWx0LWluIHR5cGUgKGlu
dCkuCitURVNUX0YoQVNTRVJUX1BSRUQzVGVzdCwgRnVuY3Rpb25PbkJ1aWx0SW5UeXBlU3VjY2Vz
cykgeworICBBU1NFUlRfUFJFRDMoUHJlZEZ1bmN0aW9uM0ludCwKKyAgICAgICAgICAgICAgICsr
bjFfLAorICAgICAgICAgICAgICAgKytuMl8sCisgICAgICAgICAgICAgICArK24zXyk7CisgIGZp
bmlzaGVkXyA9IHRydWU7Cit9CisKKy8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBBU1NFUlRfUFJFRDMg
d2hlcmUgdGhlCisvLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSB1c2Vy
LWRlZmluZWQgdHlwZSAoQm9vbCkuCitURVNUX0YoQVNTRVJUX1BSRUQzVGVzdCwgRnVuY3Rpb25P
blVzZXJUeXBlU3VjY2VzcykgeworICBBU1NFUlRfUFJFRDMoUHJlZEZ1bmN0aW9uM0Jvb2wsCisg
ICAgICAgICAgICAgICBCb29sKCsrbjFfKSwKKyAgICAgICAgICAgICAgIEJvb2woKytuMl8pLAor
ICAgICAgICAgICAgICAgQm9vbCgrK24zXykpOworICBmaW5pc2hlZF8gPSB0cnVlOworfQorCisv
LyBUZXN0cyBhIHN1Y2Nlc3NmdWwgQVNTRVJUX1BSRUQzIHdoZXJlIHRoZQorLy8gcHJlZGljYXRl
LWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgorVEVTVF9G
KEFTU0VSVF9QUkVEM1Rlc3QsIEZ1bmN0b3JPbkJ1aWx0SW5UeXBlU3VjY2VzcykgeworICBBU1NF
UlRfUFJFRDMoUHJlZEZ1bmN0b3IzKCksCisgICAgICAgICAgICAgICArK24xXywKKyAgICAgICAg
ICAgICAgICsrbjJfLAorICAgICAgICAgICAgICAgKytuM18pOworICBmaW5pc2hlZF8gPSB0cnVl
OworfQorCisvLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgQVNTRVJUX1BSRUQzIHdoZXJlIHRoZQorLy8g
cHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igb24gYSB1c2VyLWRlZmluZWQgdHlwZSAo
Qm9vbCkuCitURVNUX0YoQVNTRVJUX1BSRUQzVGVzdCwgRnVuY3Rvck9uVXNlclR5cGVTdWNjZXNz
KSB7CisgIEFTU0VSVF9QUkVEMyhQcmVkRnVuY3RvcjMoKSwKKyAgICAgICAgICAgICAgIEJvb2wo
KytuMV8pLAorICAgICAgICAgICAgICAgQm9vbCgrK24yXyksCisgICAgICAgICAgICAgICBCb29s
KCsrbjNfKSk7CisgIGZpbmlzaGVkXyA9IHRydWU7Cit9CisKKy8vIFRlc3RzIGEgZmFpbGVkIEFT
U0VSVF9QUkVEMyB3aGVyZSB0aGUKKy8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlv
biBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCitURVNUX0YoQVNTRVJUX1BSRUQzVGVzdCwgRnVu
Y3Rpb25PbkJ1aWx0SW5UeXBlRmFpbHVyZSkgeworICBleHBlY3RlZF90b19maW5pc2hfID0gZmFs
c2U7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEFTU0VSVF9QUkVE
MyhQcmVkRnVuY3Rpb24zSW50LAorICAgICAgICAgICAgICAgICBuMV8rKywKKyAgICAgICAgICAg
ICAgICAgbjJfKyssCisgICAgICAgICAgICAgICAgIG4zXysrKTsKKyAgICBmaW5pc2hlZF8gPSB0
cnVlOworICB9LCAiIik7Cit9CisKKy8vIFRlc3RzIGEgZmFpbGVkIEFTU0VSVF9QUkVEMyB3aGVy
ZSB0aGUKKy8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIHVzZXItZGVm
aW5lZCB0eXBlIChCb29sKS4KK1RFU1RfRihBU1NFUlRfUFJFRDNUZXN0LCBGdW5jdGlvbk9uVXNl
clR5cGVGYWlsdXJlKSB7CisgIGV4cGVjdGVkX3RvX2ZpbmlzaF8gPSBmYWxzZTsKKyAgRVhQRUNU
X0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAgQVNTRVJUX1BSRUQzKFByZWRGdW5jdGlv
bjNCb29sLAorICAgICAgICAgICAgICAgICBCb29sKG4xXysrKSwKKyAgICAgICAgICAgICAgICAg
Qm9vbChuMl8rKyksCisgICAgICAgICAgICAgICAgIEJvb2wobjNfKyspKTsKKyAgICBmaW5pc2hl
ZF8gPSB0cnVlOworICB9LCAiIik7Cit9CisKKy8vIFRlc3RzIGEgZmFpbGVkIEFTU0VSVF9QUkVE
MyB3aGVyZSB0aGUKKy8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgYnVp
bHQtaW4gdHlwZSAoaW50KS4KK1RFU1RfRihBU1NFUlRfUFJFRDNUZXN0LCBGdW5jdG9yT25CdWls
dEluVHlwZUZhaWx1cmUpIHsKKyAgZXhwZWN0ZWRfdG9fZmluaXNoXyA9IGZhbHNlOworICBFWFBF
Q1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBBU1NFUlRfUFJFRDMoUHJlZEZ1bmN0
b3IzKCksCisgICAgICAgICAgICAgICAgIG4xXysrLAorICAgICAgICAgICAgICAgICBuMl8rKywK
KyAgICAgICAgICAgICAgICAgbjNfKyspOworICAgIGZpbmlzaGVkXyA9IHRydWU7CisgIH0sICIi
KTsKK30KKworLy8gVGVzdHMgYSBmYWlsZWQgQVNTRVJUX1BSRUQzIHdoZXJlIHRoZQorLy8gcHJl
ZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9v
bCkuCitURVNUX0YoQVNTRVJUX1BSRUQzVGVzdCwgRnVuY3Rvck9uVXNlclR5cGVGYWlsdXJlKSB7
CisgIGV4cGVjdGVkX3RvX2ZpbmlzaF8gPSBmYWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUo
eyAgLy8gTk9MSU5UCisgICAgQVNTRVJUX1BSRUQzKFByZWRGdW5jdG9yMygpLAorICAgICAgICAg
ICAgICAgICBCb29sKG4xXysrKSwKKyAgICAgICAgICAgICAgICAgQm9vbChuMl8rKyksCisgICAg
ICAgICAgICAgICAgIEJvb2wobjNfKyspKTsKKyAgICBmaW5pc2hlZF8gPSB0cnVlOworICB9LCAi
Iik7Cit9CisKKy8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBFWFBFQ1RfUFJFRF9GT1JNQVQzIHdoZXJl
IHRoZQorLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgYnVpbHQtaW4g
dHlwZSAoaW50KS4KK1RFU1RfRihFWFBFQ1RfUFJFRF9GT1JNQVQzVGVzdCwgRnVuY3Rpb25PbkJ1
aWx0SW5UeXBlU3VjY2VzcykgeworICBFWFBFQ1RfUFJFRF9GT1JNQVQzKFByZWRGb3JtYXRGdW5j
dGlvbjMsCisgICAgICAgICAgICAgICAgICAgICAgKytuMV8sCisgICAgICAgICAgICAgICAgICAg
ICAgKytuMl8sCisgICAgICAgICAgICAgICAgICAgICAgKytuM18pOworICBmaW5pc2hlZF8gPSB0
cnVlOworfQorCisvLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgRVhQRUNUX1BSRURfRk9STUFUMyB3aGVy
ZSB0aGUKKy8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIHVzZXItZGVm
aW5lZCB0eXBlIChCb29sKS4KK1RFU1RfRihFWFBFQ1RfUFJFRF9GT1JNQVQzVGVzdCwgRnVuY3Rp
b25PblVzZXJUeXBlU3VjY2VzcykgeworICBFWFBFQ1RfUFJFRF9GT1JNQVQzKFByZWRGb3JtYXRG
dW5jdGlvbjMsCisgICAgICAgICAgICAgICAgICAgICAgQm9vbCgrK24xXyksCisgICAgICAgICAg
ICAgICAgICAgICAgQm9vbCgrK24yXyksCisgICAgICAgICAgICAgICAgICAgICAgQm9vbCgrK24z
XykpOworICBmaW5pc2hlZF8gPSB0cnVlOworfQorCisvLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgRVhQ
RUNUX1BSRURfRk9STUFUMyB3aGVyZSB0aGUKKy8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBm
dW5jdG9yIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KK1RFU1RfRihFWFBFQ1RfUFJFRF9GT1JN
QVQzVGVzdCwgRnVuY3Rvck9uQnVpbHRJblR5cGVTdWNjZXNzKSB7CisgIEVYUEVDVF9QUkVEX0ZP
Uk1BVDMoUHJlZEZvcm1hdEZ1bmN0b3IzKCksCisgICAgICAgICAgICAgICAgICAgICAgKytuMV8s
CisgICAgICAgICAgICAgICAgICAgICAgKytuMl8sCisgICAgICAgICAgICAgICAgICAgICAgKytu
M18pOworICBmaW5pc2hlZF8gPSB0cnVlOworfQorCisvLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgRVhQ
RUNUX1BSRURfRk9STUFUMyB3aGVyZSB0aGUKKy8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBm
dW5jdG9yIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgorVEVTVF9GKEVYUEVDVF9QUkVE
X0ZPUk1BVDNUZXN0LCBGdW5jdG9yT25Vc2VyVHlwZVN1Y2Nlc3MpIHsKKyAgRVhQRUNUX1BSRURf
Rk9STUFUMyhQcmVkRm9ybWF0RnVuY3RvcjMoKSwKKyAgICAgICAgICAgICAgICAgICAgICBCb29s
KCsrbjFfKSwKKyAgICAgICAgICAgICAgICAgICAgICBCb29sKCsrbjJfKSwKKyAgICAgICAgICAg
ICAgICAgICAgICBCb29sKCsrbjNfKSk7CisgIGZpbmlzaGVkXyA9IHRydWU7Cit9CisKKy8vIFRl
c3RzIGEgZmFpbGVkIEVYUEVDVF9QUkVEX0ZPUk1BVDMgd2hlcmUgdGhlCisvLyBwcmVkaWNhdGUt
Zm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgorVEVTVF9G
KEVYUEVDVF9QUkVEX0ZPUk1BVDNUZXN0LCBGdW5jdGlvbk9uQnVpbHRJblR5cGVGYWlsdXJlKSB7
CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEVYUEVDVF9QUkVE
X0ZPUk1BVDMoUHJlZEZvcm1hdEZ1bmN0aW9uMywKKyAgICAgICAgICAgICAgICAgICAgICAgIG4x
XysrLAorICAgICAgICAgICAgICAgICAgICAgICAgbjJfKyssCisgICAgICAgICAgICAgICAgICAg
ICAgICBuM18rKyk7CisgICAgZmluaXNoZWRfID0gdHJ1ZTsKKyAgfSwgIiIpOworfQorCisvLyBU
ZXN0cyBhIGZhaWxlZCBFWFBFQ1RfUFJFRF9GT1JNQVQzIHdoZXJlIHRoZQorLy8gcHJlZGljYXRl
LWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgor
VEVTVF9GKEVYUEVDVF9QUkVEX0ZPUk1BVDNUZXN0LCBGdW5jdGlvbk9uVXNlclR5cGVGYWlsdXJl
KSB7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEVYUEVDVF9Q
UkVEX0ZPUk1BVDMoUHJlZEZvcm1hdEZ1bmN0aW9uMywKKyAgICAgICAgICAgICAgICAgICAgICAg
IEJvb2wobjFfKyspLAorICAgICAgICAgICAgICAgICAgICAgICAgQm9vbChuMl8rKyksCisgICAg
ICAgICAgICAgICAgICAgICAgICBCb29sKG4zXysrKSk7CisgICAgZmluaXNoZWRfID0gdHJ1ZTsK
KyAgfSwgIiIpOworfQorCisvLyBUZXN0cyBhIGZhaWxlZCBFWFBFQ1RfUFJFRF9GT1JNQVQzIHdo
ZXJlIHRoZQorLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igb24gYSBidWlsdC1p
biB0eXBlIChpbnQpLgorVEVTVF9GKEVYUEVDVF9QUkVEX0ZPUk1BVDNUZXN0LCBGdW5jdG9yT25C
dWlsdEluVHlwZUZhaWx1cmUpIHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9M
SU5UCisgICAgRVhQRUNUX1BSRURfRk9STUFUMyhQcmVkRm9ybWF0RnVuY3RvcjMoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG4xXysrLAorICAgICAgICAgICAgICAgICAgICAgICAgbjJfKyss
CisgICAgICAgICAgICAgICAgICAgICAgICBuM18rKyk7CisgICAgZmluaXNoZWRfID0gdHJ1ZTsK
KyAgfSwgIiIpOworfQorCisvLyBUZXN0cyBhIGZhaWxlZCBFWFBFQ1RfUFJFRF9GT1JNQVQzIHdo
ZXJlIHRoZQorLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igb24gYSB1c2VyLWRl
ZmluZWQgdHlwZSAoQm9vbCkuCitURVNUX0YoRVhQRUNUX1BSRURfRk9STUFUM1Rlc3QsIEZ1bmN0
b3JPblVzZXJUeXBlRmFpbHVyZSkgeworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBO
T0xJTlQKKyAgICBFWFBFQ1RfUFJFRF9GT1JNQVQzKFByZWRGb3JtYXRGdW5jdG9yMygpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgQm9vbChuMV8rKyksCisgICAgICAgICAgICAgICAgICAgICAg
ICBCb29sKG4yXysrKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wobjNfKyspKTsKKyAg
ICBmaW5pc2hlZF8gPSB0cnVlOworICB9LCAiIik7Cit9CisKKy8vIFRlc3RzIGEgc3VjY2Vzc2Z1
bCBBU1NFUlRfUFJFRF9GT1JNQVQzIHdoZXJlIHRoZQorLy8gcHJlZGljYXRlLWZvcm1hdHRlciBp
cyBhIGZ1bmN0aW9uIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KK1RFU1RfRihBU1NFUlRfUFJF
RF9GT1JNQVQzVGVzdCwgRnVuY3Rpb25PbkJ1aWx0SW5UeXBlU3VjY2VzcykgeworICBBU1NFUlRf
UFJFRF9GT1JNQVQzKFByZWRGb3JtYXRGdW5jdGlvbjMsCisgICAgICAgICAgICAgICAgICAgICAg
KytuMV8sCisgICAgICAgICAgICAgICAgICAgICAgKytuMl8sCisgICAgICAgICAgICAgICAgICAg
ICAgKytuM18pOworICBmaW5pc2hlZF8gPSB0cnVlOworfQorCisvLyBUZXN0cyBhIHN1Y2Nlc3Nm
dWwgQVNTRVJUX1BSRURfRk9STUFUMyB3aGVyZSB0aGUKKy8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIg
aXMgYSBmdW5jdGlvbiBvbiBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4KK1RFU1RfRihBU1NF
UlRfUFJFRF9GT1JNQVQzVGVzdCwgRnVuY3Rpb25PblVzZXJUeXBlU3VjY2VzcykgeworICBBU1NF
UlRfUFJFRF9GT1JNQVQzKFByZWRGb3JtYXRGdW5jdGlvbjMsCisgICAgICAgICAgICAgICAgICAg
ICAgQm9vbCgrK24xXyksCisgICAgICAgICAgICAgICAgICAgICAgQm9vbCgrK24yXyksCisgICAg
ICAgICAgICAgICAgICAgICAgQm9vbCgrK24zXykpOworICBmaW5pc2hlZF8gPSB0cnVlOworfQor
CisvLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgQVNTRVJUX1BSRURfRk9STUFUMyB3aGVyZSB0aGUKKy8v
IHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50
KS4KK1RFU1RfRihBU1NFUlRfUFJFRF9GT1JNQVQzVGVzdCwgRnVuY3Rvck9uQnVpbHRJblR5cGVT
dWNjZXNzKSB7CisgIEFTU0VSVF9QUkVEX0ZPUk1BVDMoUHJlZEZvcm1hdEZ1bmN0b3IzKCksCisg
ICAgICAgICAgICAgICAgICAgICAgKytuMV8sCisgICAgICAgICAgICAgICAgICAgICAgKytuMl8s
CisgICAgICAgICAgICAgICAgICAgICAgKytuM18pOworICBmaW5pc2hlZF8gPSB0cnVlOworfQor
CisvLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgQVNTRVJUX1BSRURfRk9STUFUMyB3aGVyZSB0aGUKKy8v
IHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUg
KEJvb2wpLgorVEVTVF9GKEFTU0VSVF9QUkVEX0ZPUk1BVDNUZXN0LCBGdW5jdG9yT25Vc2VyVHlw
ZVN1Y2Nlc3MpIHsKKyAgQVNTRVJUX1BSRURfRk9STUFUMyhQcmVkRm9ybWF0RnVuY3RvcjMoKSwK
KyAgICAgICAgICAgICAgICAgICAgICBCb29sKCsrbjFfKSwKKyAgICAgICAgICAgICAgICAgICAg
ICBCb29sKCsrbjJfKSwKKyAgICAgICAgICAgICAgICAgICAgICBCb29sKCsrbjNfKSk7CisgIGZp
bmlzaGVkXyA9IHRydWU7Cit9CisKKy8vIFRlc3RzIGEgZmFpbGVkIEFTU0VSVF9QUkVEX0ZPUk1B
VDMgd2hlcmUgdGhlCisvLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSBi
dWlsdC1pbiB0eXBlIChpbnQpLgorVEVTVF9GKEFTU0VSVF9QUkVEX0ZPUk1BVDNUZXN0LCBGdW5j
dGlvbk9uQnVpbHRJblR5cGVGYWlsdXJlKSB7CisgIGV4cGVjdGVkX3RvX2ZpbmlzaF8gPSBmYWxz
ZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAgQVNTRVJUX1BSRURf
Rk9STUFUMyhQcmVkRm9ybWF0RnVuY3Rpb24zLAorICAgICAgICAgICAgICAgICAgICAgICAgbjFf
KyssCisgICAgICAgICAgICAgICAgICAgICAgICBuMl8rKywKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG4zXysrKTsKKyAgICBmaW5pc2hlZF8gPSB0cnVlOworICB9LCAiIik7Cit9CisKKy8vIFRl
c3RzIGEgZmFpbGVkIEFTU0VSVF9QUkVEX0ZPUk1BVDMgd2hlcmUgdGhlCisvLyBwcmVkaWNhdGUt
Zm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCitU
RVNUX0YoQVNTRVJUX1BSRURfRk9STUFUM1Rlc3QsIEZ1bmN0aW9uT25Vc2VyVHlwZUZhaWx1cmUp
IHsKKyAgZXhwZWN0ZWRfdG9fZmluaXNoXyA9IGZhbHNlOworICBFWFBFQ1RfRkFUQUxfRkFJTFVS
RSh7ICAvLyBOT0xJTlQKKyAgICBBU1NFUlRfUFJFRF9GT1JNQVQzKFByZWRGb3JtYXRGdW5jdGlv
bjMsCisgICAgICAgICAgICAgICAgICAgICAgICBCb29sKG4xXysrKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEJvb2wobjJfKyspLAorICAgICAgICAgICAgICAgICAgICAgICAgQm9vbChuM18r
KykpOworICAgIGZpbmlzaGVkXyA9IHRydWU7CisgIH0sICIiKTsKK30KKworLy8gVGVzdHMgYSBm
YWlsZWQgQVNTRVJUX1BSRURfRk9STUFUMyB3aGVyZSB0aGUKKy8vIHByZWRpY2F0ZS1mb3JtYXR0
ZXIgaXMgYSBmdW5jdG9yIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KK1RFU1RfRihBU1NFUlRf
UFJFRF9GT1JNQVQzVGVzdCwgRnVuY3Rvck9uQnVpbHRJblR5cGVGYWlsdXJlKSB7CisgIGV4cGVj
dGVkX3RvX2ZpbmlzaF8gPSBmYWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9M
SU5UCisgICAgQVNTRVJUX1BSRURfRk9STUFUMyhQcmVkRm9ybWF0RnVuY3RvcjMoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG4xXysrLAorICAgICAgICAgICAgICAgICAgICAgICAgbjJfKyss
CisgICAgICAgICAgICAgICAgICAgICAgICBuM18rKyk7CisgICAgZmluaXNoZWRfID0gdHJ1ZTsK
KyAgfSwgIiIpOworfQorCisvLyBUZXN0cyBhIGZhaWxlZCBBU1NFUlRfUFJFRF9GT1JNQVQzIHdo
ZXJlIHRoZQorLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igb24gYSB1c2VyLWRl
ZmluZWQgdHlwZSAoQm9vbCkuCitURVNUX0YoQVNTRVJUX1BSRURfRk9STUFUM1Rlc3QsIEZ1bmN0
b3JPblVzZXJUeXBlRmFpbHVyZSkgeworICBleHBlY3RlZF90b19maW5pc2hfID0gZmFsc2U7Cisg
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEFTU0VSVF9QUkVEX0ZPUk1B
VDMoUHJlZEZvcm1hdEZ1bmN0b3IzKCksCisgICAgICAgICAgICAgICAgICAgICAgICBCb29sKG4x
XysrKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wobjJfKyspLAorICAgICAgICAgICAg
ICAgICAgICAgICAgQm9vbChuM18rKykpOworICAgIGZpbmlzaGVkXyA9IHRydWU7CisgIH0sICIi
KTsKK30KKy8vIFNhbXBsZSBmdW5jdGlvbnMvZnVuY3RvcnMgZm9yIHRlc3RpbmcgNC1hcnkgcHJl
ZGljYXRlIGFzc2VydGlvbnMuCisKKy8vIEEgNC1hcnkgcHJlZGljYXRlIGZ1bmN0aW9uLgordGVt
cGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0
PgorYm9vbCBQcmVkRnVuY3Rpb240KFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0KSB7CisgIHJl
dHVybiB2MSArIHYyICsgdjMgKyB2NCA+IDA7Cit9CisKKy8vIFRoZSBmb2xsb3dpbmcgdHdvIGZ1
bmN0aW9ucyBhcmUgbmVlZGVkIHRvIGNpcmN1bXZlbnQgYSBidWcgaW4KKy8vIGdjYyAyLjk1LjMs
IHdoaWNoIHNvbWV0aW1lcyBoYXMgcHJvYmxlbSB3aXRoIHRoZSBhYm92ZSB0ZW1wbGF0ZQorLy8g
ZnVuY3Rpb24uCitib29sIFByZWRGdW5jdGlvbjRJbnQoaW50IHYxLCBpbnQgdjIsIGludCB2Mywg
aW50IHY0KSB7CisgIHJldHVybiB2MSArIHYyICsgdjMgKyB2NCA+IDA7Cit9Citib29sIFByZWRG
dW5jdGlvbjRCb29sKEJvb2wgdjEsIEJvb2wgdjIsIEJvb2wgdjMsIEJvb2wgdjQpIHsKKyAgcmV0
dXJuIHYxICsgdjIgKyB2MyArIHY0ID4gMDsKK30KKworLy8gQSA0LWFyeSBwcmVkaWNhdGUgZnVu
Y3Rvci4KK3N0cnVjdCBQcmVkRnVuY3RvcjQgeworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5
cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQ+CisgIGJvb2wgb3BlcmF0b3IoKShj
b25zdCBUMSYgdjEsCisgICAgICAgICAgICAgICAgICBjb25zdCBUMiYgdjIsCisgICAgICAgICAg
ICAgICAgICBjb25zdCBUMyYgdjMsCisgICAgICAgICAgICAgICAgICBjb25zdCBUNCYgdjQpIHsK
KyAgICByZXR1cm4gdjEgKyB2MiArIHYzICsgdjQgPiAwOworICB9Cit9OworCisvLyBBIDQtYXJ5
IHByZWRpY2F0ZS1mb3JtYXR0ZXIgZnVuY3Rpb24uCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5
cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQ+Cit0ZXN0aW5nOjpBc3NlcnRpb25S
ZXN1bHQgUHJlZEZvcm1hdEZ1bmN0aW9uNChjb25zdCBjaGFyKiBlMSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGUyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZTMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBlNCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQxJiB2
MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQy
JiB2MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFQzJiB2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFQ0JiB2NCkgeworICBpZiAoUHJlZEZ1bmN0aW9uNCh2MSwgdjIsIHYzLCB2NCkpCisgICAg
cmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKKworICByZXR1cm4gdGVzdGluZzo6
QXNzZXJ0aW9uRmFpbHVyZSgpCisgICAgICA8PCBlMSA8PCAiICsgIiA8PCBlMiA8PCAiICsgIiA8
PCBlMyA8PCAiICsgIiA8PCBlNAorICAgICAgPDwgIiBpcyBleHBlY3RlZCB0byBiZSBwb3NpdGl2
ZSwgYnV0IGV2YWx1YXRlcyB0byAiCisgICAgICA8PCB2MSArIHYyICsgdjMgKyB2NCA8PCAiLiI7
Cit9CisKKy8vIEEgNC1hcnkgcHJlZGljYXRlLWZvcm1hdHRlciBmdW5jdG9yLgorc3RydWN0IFBy
ZWRGb3JtYXRGdW5jdG9yNCB7CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIs
IHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUND4KKyAgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IG9w
ZXJhdG9yKCkoY29uc3QgY2hhciogZTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIGUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBlMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciogZTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFQxJiB2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgVDImIHYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBU
MyYgdjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQ0JiB2
NCkgY29uc3QgeworICAgIHJldHVybiBQcmVkRm9ybWF0RnVuY3Rpb240KGUxLCBlMiwgZTMsIGU0
LCB2MSwgdjIsIHYzLCB2NCk7CisgIH0KK307CisKKy8vIFRlc3RzIGZvciB7RVhQRUNUfEFTU0VS
VH1fUFJFRF9GT1JNQVQ0LgorCitjbGFzcyBQcmVkaWNhdGU0VGVzdCA6IHB1YmxpYyB0ZXN0aW5n
OjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICBleHBl
Y3RlZF90b19maW5pc2hfID0gdHJ1ZTsKKyAgICBmaW5pc2hlZF8gPSBmYWxzZTsKKyAgICBuMV8g
PSBuMl8gPSBuM18gPSBuNF8gPSAwOworICB9CisKKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkg
eworICAgIC8vIFZlcmlmaWVzIHRoYXQgZWFjaCBvZiB0aGUgcHJlZGljYXRlJ3MgYXJndW1lbnRz
IHdhcyBldmFsdWF0ZWQKKyAgICAvLyBleGFjdGx5IG9uY2UuCisgICAgRVhQRUNUX0VRKDEsIG4x
XykgPDwKKyAgICAgICAgIlRoZSBwcmVkaWNhdGUgYXNzZXJ0aW9uIGRpZG4ndCBldmFsdWF0ZSBh
cmd1bWVudCAyICIKKyAgICAgICAgImV4YWN0bHkgb25jZS4iOworICAgIEVYUEVDVF9FUSgxLCBu
Ml8pIDw8CisgICAgICAgICJUaGUgcHJlZGljYXRlIGFzc2VydGlvbiBkaWRuJ3QgZXZhbHVhdGUg
YXJndW1lbnQgMyAiCisgICAgICAgICJleGFjdGx5IG9uY2UuIjsKKyAgICBFWFBFQ1RfRVEoMSwg
bjNfKSA8PAorICAgICAgICAiVGhlIHByZWRpY2F0ZSBhc3NlcnRpb24gZGlkbid0IGV2YWx1YXRl
IGFyZ3VtZW50IDQgIgorICAgICAgICAiZXhhY3RseSBvbmNlLiI7CisgICAgRVhQRUNUX0VRKDEs
IG40XykgPDwKKyAgICAgICAgIlRoZSBwcmVkaWNhdGUgYXNzZXJ0aW9uIGRpZG4ndCBldmFsdWF0
ZSBhcmd1bWVudCA1ICIKKyAgICAgICAgImV4YWN0bHkgb25jZS4iOworCisgICAgLy8gVmVyaWZp
ZXMgdGhhdCB0aGUgY29udHJvbCBmbG93IGluIHRoZSB0ZXN0IGZ1bmN0aW9uIGlzIGV4cGVjdGVk
LgorICAgIGlmIChleHBlY3RlZF90b19maW5pc2hfICYmICFmaW5pc2hlZF8pIHsKKyAgICAgIEZB
SUwoKSA8PCAiVGhlIHByZWRpY2F0ZSBhc3NlcnRpb24gdW5leHBhY3RlZGx5IGFib3J0ZWQgdGhl
IHRlc3QuIjsKKyAgICB9IGVsc2UgaWYgKCFleHBlY3RlZF90b19maW5pc2hfICYmIGZpbmlzaGVk
XykgeworICAgICAgRkFJTCgpIDw8ICJUaGUgZmFpbGVkIHByZWRpY2F0ZSBhc3NlcnRpb24gZGlk
bid0IGFib3J0IHRoZSB0ZXN0ICIKKyAgICAgICAgICAgICAgICAiYXMgZXhwZWN0ZWQuIjsKKyAg
ICB9CisgIH0KKworICAvLyB0cnVlIGlmZiB0aGUgdGVzdCBmdW5jdGlvbiBpcyBleHBlY3RlZCB0
byBydW4gdG8gZmluaXNoLgorICBzdGF0aWMgYm9vbCBleHBlY3RlZF90b19maW5pc2hfOworCisg
IC8vIHRydWUgaWZmIHRoZSB0ZXN0IGZ1bmN0aW9uIGRpZCBydW4gdG8gZmluaXNoLgorICBzdGF0
aWMgYm9vbCBmaW5pc2hlZF87CisKKyAgc3RhdGljIGludCBuMV87CisgIHN0YXRpYyBpbnQgbjJf
OworICBzdGF0aWMgaW50IG4zXzsKKyAgc3RhdGljIGludCBuNF87Cit9OworCitib29sIFByZWRp
Y2F0ZTRUZXN0OjpleHBlY3RlZF90b19maW5pc2hfOworYm9vbCBQcmVkaWNhdGU0VGVzdDo6Zmlu
aXNoZWRfOworaW50IFByZWRpY2F0ZTRUZXN0OjpuMV87CitpbnQgUHJlZGljYXRlNFRlc3Q6Om4y
XzsKK2ludCBQcmVkaWNhdGU0VGVzdDo6bjNfOworaW50IFByZWRpY2F0ZTRUZXN0OjpuNF87CisK
K3R5cGVkZWYgUHJlZGljYXRlNFRlc3QgRVhQRUNUX1BSRURfRk9STUFUNFRlc3Q7Cit0eXBlZGVm
IFByZWRpY2F0ZTRUZXN0IEFTU0VSVF9QUkVEX0ZPUk1BVDRUZXN0OwordHlwZWRlZiBQcmVkaWNh
dGU0VGVzdCBFWFBFQ1RfUFJFRDRUZXN0OwordHlwZWRlZiBQcmVkaWNhdGU0VGVzdCBBU1NFUlRf
UFJFRDRUZXN0OworCisvLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgRVhQRUNUX1BSRUQ0IHdoZXJlIHRo
ZQorLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgYnVpbHQtaW4gdHlw
ZSAoaW50KS4KK1RFU1RfRihFWFBFQ1RfUFJFRDRUZXN0LCBGdW5jdGlvbk9uQnVpbHRJblR5cGVT
dWNjZXNzKSB7CisgIEVYUEVDVF9QUkVENChQcmVkRnVuY3Rpb240SW50LAorICAgICAgICAgICAg
ICAgKytuMV8sCisgICAgICAgICAgICAgICArK24yXywKKyAgICAgICAgICAgICAgICsrbjNfLAor
ICAgICAgICAgICAgICAgKytuNF8pOworICBmaW5pc2hlZF8gPSB0cnVlOworfQorCisvLyBUZXN0
cyBhIHN1Y2Nlc3NmdWwgRVhQRUNUX1BSRUQ0IHdoZXJlIHRoZQorLy8gcHJlZGljYXRlLWZvcm1h
dHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgorVEVTVF9G
KEVYUEVDVF9QUkVENFRlc3QsIEZ1bmN0aW9uT25Vc2VyVHlwZVN1Y2Nlc3MpIHsKKyAgRVhQRUNU
X1BSRUQ0KFByZWRGdW5jdGlvbjRCb29sLAorICAgICAgICAgICAgICAgQm9vbCgrK24xXyksCisg
ICAgICAgICAgICAgICBCb29sKCsrbjJfKSwKKyAgICAgICAgICAgICAgIEJvb2woKytuM18pLAor
ICAgICAgICAgICAgICAgQm9vbCgrK240XykpOworICBmaW5pc2hlZF8gPSB0cnVlOworfQorCisv
LyBUZXN0cyBhIHN1Y2Nlc3NmdWwgRVhQRUNUX1BSRUQ0IHdoZXJlIHRoZQorLy8gcHJlZGljYXRl
LWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgorVEVTVF9G
KEVYUEVDVF9QUkVENFRlc3QsIEZ1bmN0b3JPbkJ1aWx0SW5UeXBlU3VjY2VzcykgeworICBFWFBF
Q1RfUFJFRDQoUHJlZEZ1bmN0b3I0KCksCisgICAgICAgICAgICAgICArK24xXywKKyAgICAgICAg
ICAgICAgICsrbjJfLAorICAgICAgICAgICAgICAgKytuM18sCisgICAgICAgICAgICAgICArK240
Xyk7CisgIGZpbmlzaGVkXyA9IHRydWU7Cit9CisKKy8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBFWFBF
Q1RfUFJFRDQgd2hlcmUgdGhlCisvLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBv
biBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4KK1RFU1RfRihFWFBFQ1RfUFJFRDRUZXN0LCBG
dW5jdG9yT25Vc2VyVHlwZVN1Y2Nlc3MpIHsKKyAgRVhQRUNUX1BSRUQ0KFByZWRGdW5jdG9yNCgp
LAorICAgICAgICAgICAgICAgQm9vbCgrK24xXyksCisgICAgICAgICAgICAgICBCb29sKCsrbjJf
KSwKKyAgICAgICAgICAgICAgIEJvb2woKytuM18pLAorICAgICAgICAgICAgICAgQm9vbCgrK240
XykpOworICBmaW5pc2hlZF8gPSB0cnVlOworfQorCisvLyBUZXN0cyBhIGZhaWxlZCBFWFBFQ1Rf
UFJFRDQgd2hlcmUgdGhlCisvLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24g
YSBidWlsdC1pbiB0eXBlIChpbnQpLgorVEVTVF9GKEVYUEVDVF9QUkVENFRlc3QsIEZ1bmN0aW9u
T25CdWlsdEluVHlwZUZhaWx1cmUpIHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8g
Tk9MSU5UCisgICAgRVhQRUNUX1BSRUQ0KFByZWRGdW5jdGlvbjRJbnQsCisgICAgICAgICAgICAg
ICAgIG4xXysrLAorICAgICAgICAgICAgICAgICBuMl8rKywKKyAgICAgICAgICAgICAgICAgbjNf
KyssCisgICAgICAgICAgICAgICAgIG40XysrKTsKKyAgICBmaW5pc2hlZF8gPSB0cnVlOworICB9
LCAiIik7Cit9CisKKy8vIFRlc3RzIGEgZmFpbGVkIEVYUEVDVF9QUkVENCB3aGVyZSB0aGUKKy8v
IHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIHVzZXItZGVmaW5lZCB0eXBl
IChCb29sKS4KK1RFU1RfRihFWFBFQ1RfUFJFRDRUZXN0LCBGdW5jdGlvbk9uVXNlclR5cGVGYWls
dXJlKSB7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEVYUEVD
VF9QUkVENChQcmVkRnVuY3Rpb240Qm9vbCwKKyAgICAgICAgICAgICAgICAgQm9vbChuMV8rKyks
CisgICAgICAgICAgICAgICAgIEJvb2wobjJfKyspLAorICAgICAgICAgICAgICAgICBCb29sKG4z
XysrKSwKKyAgICAgICAgICAgICAgICAgQm9vbChuNF8rKykpOworICAgIGZpbmlzaGVkXyA9IHRy
dWU7CisgIH0sICIiKTsKK30KKworLy8gVGVzdHMgYSBmYWlsZWQgRVhQRUNUX1BSRUQ0IHdoZXJl
IHRoZQorLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igb24gYSBidWlsdC1pbiB0
eXBlIChpbnQpLgorVEVTVF9GKEVYUEVDVF9QUkVENFRlc3QsIEZ1bmN0b3JPbkJ1aWx0SW5UeXBl
RmFpbHVyZSkgeworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBF
WFBFQ1RfUFJFRDQoUHJlZEZ1bmN0b3I0KCksCisgICAgICAgICAgICAgICAgIG4xXysrLAorICAg
ICAgICAgICAgICAgICBuMl8rKywKKyAgICAgICAgICAgICAgICAgbjNfKyssCisgICAgICAgICAg
ICAgICAgIG40XysrKTsKKyAgICBmaW5pc2hlZF8gPSB0cnVlOworICB9LCAiIik7Cit9CisKKy8v
IFRlc3RzIGEgZmFpbGVkIEVYUEVDVF9QUkVENCB3aGVyZSB0aGUKKy8vIHByZWRpY2F0ZS1mb3Jt
YXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgorVEVTVF9G
KEVYUEVDVF9QUkVENFRlc3QsIEZ1bmN0b3JPblVzZXJUeXBlRmFpbHVyZSkgeworICBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBFWFBFQ1RfUFJFRDQoUHJlZEZ1bmN0
b3I0KCksCisgICAgICAgICAgICAgICAgIEJvb2wobjFfKyspLAorICAgICAgICAgICAgICAgICBC
b29sKG4yXysrKSwKKyAgICAgICAgICAgICAgICAgQm9vbChuM18rKyksCisgICAgICAgICAgICAg
ICAgIEJvb2wobjRfKyspKTsKKyAgICBmaW5pc2hlZF8gPSB0cnVlOworICB9LCAiIik7Cit9CisK
Ky8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBBU1NFUlRfUFJFRDQgd2hlcmUgdGhlCisvLyBwcmVkaWNh
dGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgorVEVT
VF9GKEFTU0VSVF9QUkVENFRlc3QsIEZ1bmN0aW9uT25CdWlsdEluVHlwZVN1Y2Nlc3MpIHsKKyAg
QVNTRVJUX1BSRUQ0KFByZWRGdW5jdGlvbjRJbnQsCisgICAgICAgICAgICAgICArK24xXywKKyAg
ICAgICAgICAgICAgICsrbjJfLAorICAgICAgICAgICAgICAgKytuM18sCisgICAgICAgICAgICAg
ICArK240Xyk7CisgIGZpbmlzaGVkXyA9IHRydWU7Cit9CisKKy8vIFRlc3RzIGEgc3VjY2Vzc2Z1
bCBBU1NFUlRfUFJFRDQgd2hlcmUgdGhlCisvLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVu
Y3Rpb24gb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCitURVNUX0YoQVNTRVJUX1BSRUQ0
VGVzdCwgRnVuY3Rpb25PblVzZXJUeXBlU3VjY2VzcykgeworICBBU1NFUlRfUFJFRDQoUHJlZEZ1
bmN0aW9uNEJvb2wsCisgICAgICAgICAgICAgICBCb29sKCsrbjFfKSwKKyAgICAgICAgICAgICAg
IEJvb2woKytuMl8pLAorICAgICAgICAgICAgICAgQm9vbCgrK24zXyksCisgICAgICAgICAgICAg
ICBCb29sKCsrbjRfKSk7CisgIGZpbmlzaGVkXyA9IHRydWU7Cit9CisKKy8vIFRlc3RzIGEgc3Vj
Y2Vzc2Z1bCBBU1NFUlRfUFJFRDQgd2hlcmUgdGhlCisvLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlz
IGEgZnVuY3RvciBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCitURVNUX0YoQVNTRVJUX1BSRUQ0
VGVzdCwgRnVuY3Rvck9uQnVpbHRJblR5cGVTdWNjZXNzKSB7CisgIEFTU0VSVF9QUkVENChQcmVk
RnVuY3RvcjQoKSwKKyAgICAgICAgICAgICAgICsrbjFfLAorICAgICAgICAgICAgICAgKytuMl8s
CisgICAgICAgICAgICAgICArK24zXywKKyAgICAgICAgICAgICAgICsrbjRfKTsKKyAgZmluaXNo
ZWRfID0gdHJ1ZTsKK30KKworLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEFTU0VSVF9QUkVENCB3aGVy
ZSB0aGUKKy8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgdXNlci1kZWZp
bmVkIHR5cGUgKEJvb2wpLgorVEVTVF9GKEFTU0VSVF9QUkVENFRlc3QsIEZ1bmN0b3JPblVzZXJU
eXBlU3VjY2VzcykgeworICBBU1NFUlRfUFJFRDQoUHJlZEZ1bmN0b3I0KCksCisgICAgICAgICAg
ICAgICBCb29sKCsrbjFfKSwKKyAgICAgICAgICAgICAgIEJvb2woKytuMl8pLAorICAgICAgICAg
ICAgICAgQm9vbCgrK24zXyksCisgICAgICAgICAgICAgICBCb29sKCsrbjRfKSk7CisgIGZpbmlz
aGVkXyA9IHRydWU7Cit9CisKKy8vIFRlc3RzIGEgZmFpbGVkIEFTU0VSVF9QUkVENCB3aGVyZSB0
aGUKKy8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIGJ1aWx0LWluIHR5
cGUgKGludCkuCitURVNUX0YoQVNTRVJUX1BSRUQ0VGVzdCwgRnVuY3Rpb25PbkJ1aWx0SW5UeXBl
RmFpbHVyZSkgeworICBleHBlY3RlZF90b19maW5pc2hfID0gZmFsc2U7CisgIEVYUEVDVF9GQVRB
TF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEFTU0VSVF9QUkVENChQcmVkRnVuY3Rpb240SW50
LAorICAgICAgICAgICAgICAgICBuMV8rKywKKyAgICAgICAgICAgICAgICAgbjJfKyssCisgICAg
ICAgICAgICAgICAgIG4zXysrLAorICAgICAgICAgICAgICAgICBuNF8rKyk7CisgICAgZmluaXNo
ZWRfID0gdHJ1ZTsKKyAgfSwgIiIpOworfQorCisvLyBUZXN0cyBhIGZhaWxlZCBBU1NFUlRfUFJF
RDQgd2hlcmUgdGhlCisvLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSB1
c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCitURVNUX0YoQVNTRVJUX1BSRUQ0VGVzdCwgRnVuY3Rp
b25PblVzZXJUeXBlRmFpbHVyZSkgeworICBleHBlY3RlZF90b19maW5pc2hfID0gZmFsc2U7Cisg
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEFTU0VSVF9QUkVENChQcmVk
RnVuY3Rpb240Qm9vbCwKKyAgICAgICAgICAgICAgICAgQm9vbChuMV8rKyksCisgICAgICAgICAg
ICAgICAgIEJvb2wobjJfKyspLAorICAgICAgICAgICAgICAgICBCb29sKG4zXysrKSwKKyAgICAg
ICAgICAgICAgICAgQm9vbChuNF8rKykpOworICAgIGZpbmlzaGVkXyA9IHRydWU7CisgIH0sICIi
KTsKK30KKworLy8gVGVzdHMgYSBmYWlsZWQgQVNTRVJUX1BSRUQ0IHdoZXJlIHRoZQorLy8gcHJl
ZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgor
VEVTVF9GKEFTU0VSVF9QUkVENFRlc3QsIEZ1bmN0b3JPbkJ1aWx0SW5UeXBlRmFpbHVyZSkgewor
ICBleHBlY3RlZF90b19maW5pc2hfID0gZmFsc2U7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsg
IC8vIE5PTElOVAorICAgIEFTU0VSVF9QUkVENChQcmVkRnVuY3RvcjQoKSwKKyAgICAgICAgICAg
ICAgICAgbjFfKyssCisgICAgICAgICAgICAgICAgIG4yXysrLAorICAgICAgICAgICAgICAgICBu
M18rKywKKyAgICAgICAgICAgICAgICAgbjRfKyspOworICAgIGZpbmlzaGVkXyA9IHRydWU7Cisg
IH0sICIiKTsKK30KKworLy8gVGVzdHMgYSBmYWlsZWQgQVNTRVJUX1BSRUQ0IHdoZXJlIHRoZQor
Ly8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igb24gYSB1c2VyLWRlZmluZWQgdHlw
ZSAoQm9vbCkuCitURVNUX0YoQVNTRVJUX1BSRUQ0VGVzdCwgRnVuY3Rvck9uVXNlclR5cGVGYWls
dXJlKSB7CisgIGV4cGVjdGVkX3RvX2ZpbmlzaF8gPSBmYWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZB
SUxVUkUoeyAgLy8gTk9MSU5UCisgICAgQVNTRVJUX1BSRUQ0KFByZWRGdW5jdG9yNCgpLAorICAg
ICAgICAgICAgICAgICBCb29sKG4xXysrKSwKKyAgICAgICAgICAgICAgICAgQm9vbChuMl8rKyks
CisgICAgICAgICAgICAgICAgIEJvb2wobjNfKyspLAorICAgICAgICAgICAgICAgICBCb29sKG40
XysrKSk7CisgICAgZmluaXNoZWRfID0gdHJ1ZTsKKyAgfSwgIiIpOworfQorCisvLyBUZXN0cyBh
IHN1Y2Nlc3NmdWwgRVhQRUNUX1BSRURfRk9STUFUNCB3aGVyZSB0aGUKKy8vIHByZWRpY2F0ZS1m
b3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCitURVNUX0Yo
RVhQRUNUX1BSRURfRk9STUFUNFRlc3QsIEZ1bmN0aW9uT25CdWlsdEluVHlwZVN1Y2Nlc3MpIHsK
KyAgRVhQRUNUX1BSRURfRk9STUFUNChQcmVkRm9ybWF0RnVuY3Rpb240LAorICAgICAgICAgICAg
ICAgICAgICAgICsrbjFfLAorICAgICAgICAgICAgICAgICAgICAgICsrbjJfLAorICAgICAgICAg
ICAgICAgICAgICAgICsrbjNfLAorICAgICAgICAgICAgICAgICAgICAgICsrbjRfKTsKKyAgZmlu
aXNoZWRfID0gdHJ1ZTsKK30KKworLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEVYUEVDVF9QUkVEX0ZP
Uk1BVDQgd2hlcmUgdGhlCisvLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24g
YSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCitURVNUX0YoRVhQRUNUX1BSRURfRk9STUFUNFRl
c3QsIEZ1bmN0aW9uT25Vc2VyVHlwZVN1Y2Nlc3MpIHsKKyAgRVhQRUNUX1BSRURfRk9STUFUNChQ
cmVkRm9ybWF0RnVuY3Rpb240LAorICAgICAgICAgICAgICAgICAgICAgIEJvb2woKytuMV8pLAor
ICAgICAgICAgICAgICAgICAgICAgIEJvb2woKytuMl8pLAorICAgICAgICAgICAgICAgICAgICAg
IEJvb2woKytuM18pLAorICAgICAgICAgICAgICAgICAgICAgIEJvb2woKytuNF8pKTsKKyAgZmlu
aXNoZWRfID0gdHJ1ZTsKK30KKworLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEVYUEVDVF9QUkVEX0ZP
Uk1BVDQgd2hlcmUgdGhlCisvLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBh
IGJ1aWx0LWluIHR5cGUgKGludCkuCitURVNUX0YoRVhQRUNUX1BSRURfRk9STUFUNFRlc3QsIEZ1
bmN0b3JPbkJ1aWx0SW5UeXBlU3VjY2VzcykgeworICBFWFBFQ1RfUFJFRF9GT1JNQVQ0KFByZWRG
b3JtYXRGdW5jdG9yNCgpLAorICAgICAgICAgICAgICAgICAgICAgICsrbjFfLAorICAgICAgICAg
ICAgICAgICAgICAgICsrbjJfLAorICAgICAgICAgICAgICAgICAgICAgICsrbjNfLAorICAgICAg
ICAgICAgICAgICAgICAgICsrbjRfKTsKKyAgZmluaXNoZWRfID0gdHJ1ZTsKK30KKworLy8gVGVz
dHMgYSBzdWNjZXNzZnVsIEVYUEVDVF9QUkVEX0ZPUk1BVDQgd2hlcmUgdGhlCisvLyBwcmVkaWNh
dGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4K
K1RFU1RfRihFWFBFQ1RfUFJFRF9GT1JNQVQ0VGVzdCwgRnVuY3Rvck9uVXNlclR5cGVTdWNjZXNz
KSB7CisgIEVYUEVDVF9QUkVEX0ZPUk1BVDQoUHJlZEZvcm1hdEZ1bmN0b3I0KCksCisgICAgICAg
ICAgICAgICAgICAgICAgQm9vbCgrK24xXyksCisgICAgICAgICAgICAgICAgICAgICAgQm9vbCgr
K24yXyksCisgICAgICAgICAgICAgICAgICAgICAgQm9vbCgrK24zXyksCisgICAgICAgICAgICAg
ICAgICAgICAgQm9vbCgrK240XykpOworICBmaW5pc2hlZF8gPSB0cnVlOworfQorCisvLyBUZXN0
cyBhIGZhaWxlZCBFWFBFQ1RfUFJFRF9GT1JNQVQ0IHdoZXJlIHRoZQorLy8gcHJlZGljYXRlLWZv
cm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KK1RFU1RfRihF
WFBFQ1RfUFJFRF9GT1JNQVQ0VGVzdCwgRnVuY3Rpb25PbkJ1aWx0SW5UeXBlRmFpbHVyZSkgewor
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBFWFBFQ1RfUFJFRF9G
T1JNQVQ0KFByZWRGb3JtYXRGdW5jdGlvbjQsCisgICAgICAgICAgICAgICAgICAgICAgICBuMV8r
KywKKyAgICAgICAgICAgICAgICAgICAgICAgIG4yXysrLAorICAgICAgICAgICAgICAgICAgICAg
ICAgbjNfKyssCisgICAgICAgICAgICAgICAgICAgICAgICBuNF8rKyk7CisgICAgZmluaXNoZWRf
ID0gdHJ1ZTsKKyAgfSwgIiIpOworfQorCisvLyBUZXN0cyBhIGZhaWxlZCBFWFBFQ1RfUFJFRF9G
T1JNQVQ0IHdoZXJlIHRoZQorLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9u
IGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgorVEVTVF9GKEVYUEVDVF9QUkVEX0ZPUk1BVDRU
ZXN0LCBGdW5jdGlvbk9uVXNlclR5cGVGYWlsdXJlKSB7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKHsgIC8vIE5PTElOVAorICAgIEVYUEVDVF9QUkVEX0ZPUk1BVDQoUHJlZEZvcm1hdEZ1bmN0
aW9uNCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wobjFfKyspLAorICAgICAgICAgICAg
ICAgICAgICAgICAgQm9vbChuMl8rKyksCisgICAgICAgICAgICAgICAgICAgICAgICBCb29sKG4z
XysrKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wobjRfKyspKTsKKyAgICBmaW5pc2hl
ZF8gPSB0cnVlOworICB9LCAiIik7Cit9CisKKy8vIFRlc3RzIGEgZmFpbGVkIEVYUEVDVF9QUkVE
X0ZPUk1BVDQgd2hlcmUgdGhlCisvLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBv
biBhIGJ1aWx0LWluIHR5cGUgKGludCkuCitURVNUX0YoRVhQRUNUX1BSRURfRk9STUFUNFRlc3Qs
IEZ1bmN0b3JPbkJ1aWx0SW5UeXBlRmFpbHVyZSkgeworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RSh7ICAvLyBOT0xJTlQKKyAgICBFWFBFQ1RfUFJFRF9GT1JNQVQ0KFByZWRGb3JtYXRGdW5jdG9y
NCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgbjFfKyssCisgICAgICAgICAgICAgICAgICAg
ICAgICBuMl8rKywKKyAgICAgICAgICAgICAgICAgICAgICAgIG4zXysrLAorICAgICAgICAgICAg
ICAgICAgICAgICAgbjRfKyspOworICAgIGZpbmlzaGVkXyA9IHRydWU7CisgIH0sICIiKTsKK30K
KworLy8gVGVzdHMgYSBmYWlsZWQgRVhQRUNUX1BSRURfRk9STUFUNCB3aGVyZSB0aGUKKy8vIHBy
ZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJv
b2wpLgorVEVTVF9GKEVYUEVDVF9QUkVEX0ZPUk1BVDRUZXN0LCBGdW5jdG9yT25Vc2VyVHlwZUZh
aWx1cmUpIHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAgRVhQ
RUNUX1BSRURfRk9STUFUNChQcmVkRm9ybWF0RnVuY3RvcjQoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEJvb2wobjFfKyspLAorICAgICAgICAgICAgICAgICAgICAgICAgQm9vbChuMl8rKyks
CisgICAgICAgICAgICAgICAgICAgICAgICBCb29sKG4zXysrKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEJvb2wobjRfKyspKTsKKyAgICBmaW5pc2hlZF8gPSB0cnVlOworICB9LCAiIik7Cit9
CisKKy8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBBU1NFUlRfUFJFRF9GT1JNQVQ0IHdoZXJlIHRoZQor
Ly8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgYnVpbHQtaW4gdHlwZSAo
aW50KS4KK1RFU1RfRihBU1NFUlRfUFJFRF9GT1JNQVQ0VGVzdCwgRnVuY3Rpb25PbkJ1aWx0SW5U
eXBlU3VjY2VzcykgeworICBBU1NFUlRfUFJFRF9GT1JNQVQ0KFByZWRGb3JtYXRGdW5jdGlvbjQs
CisgICAgICAgICAgICAgICAgICAgICAgKytuMV8sCisgICAgICAgICAgICAgICAgICAgICAgKytu
Ml8sCisgICAgICAgICAgICAgICAgICAgICAgKytuM18sCisgICAgICAgICAgICAgICAgICAgICAg
KytuNF8pOworICBmaW5pc2hlZF8gPSB0cnVlOworfQorCisvLyBUZXN0cyBhIHN1Y2Nlc3NmdWwg
QVNTRVJUX1BSRURfRk9STUFUNCB3aGVyZSB0aGUKKy8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMg
YSBmdW5jdGlvbiBvbiBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4KK1RFU1RfRihBU1NFUlRf
UFJFRF9GT1JNQVQ0VGVzdCwgRnVuY3Rpb25PblVzZXJUeXBlU3VjY2VzcykgeworICBBU1NFUlRf
UFJFRF9GT1JNQVQ0KFByZWRGb3JtYXRGdW5jdGlvbjQsCisgICAgICAgICAgICAgICAgICAgICAg
Qm9vbCgrK24xXyksCisgICAgICAgICAgICAgICAgICAgICAgQm9vbCgrK24yXyksCisgICAgICAg
ICAgICAgICAgICAgICAgQm9vbCgrK24zXyksCisgICAgICAgICAgICAgICAgICAgICAgQm9vbCgr
K240XykpOworICBmaW5pc2hlZF8gPSB0cnVlOworfQorCisvLyBUZXN0cyBhIHN1Y2Nlc3NmdWwg
QVNTRVJUX1BSRURfRk9STUFUNCB3aGVyZSB0aGUKKy8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMg
YSBmdW5jdG9yIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KK1RFU1RfRihBU1NFUlRfUFJFRF9G
T1JNQVQ0VGVzdCwgRnVuY3Rvck9uQnVpbHRJblR5cGVTdWNjZXNzKSB7CisgIEFTU0VSVF9QUkVE
X0ZPUk1BVDQoUHJlZEZvcm1hdEZ1bmN0b3I0KCksCisgICAgICAgICAgICAgICAgICAgICAgKytu
MV8sCisgICAgICAgICAgICAgICAgICAgICAgKytuMl8sCisgICAgICAgICAgICAgICAgICAgICAg
KytuM18sCisgICAgICAgICAgICAgICAgICAgICAgKytuNF8pOworICBmaW5pc2hlZF8gPSB0cnVl
OworfQorCisvLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgQVNTRVJUX1BSRURfRk9STUFUNCB3aGVyZSB0
aGUKKy8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgdXNlci1kZWZpbmVk
IHR5cGUgKEJvb2wpLgorVEVTVF9GKEFTU0VSVF9QUkVEX0ZPUk1BVDRUZXN0LCBGdW5jdG9yT25V
c2VyVHlwZVN1Y2Nlc3MpIHsKKyAgQVNTRVJUX1BSRURfRk9STUFUNChQcmVkRm9ybWF0RnVuY3Rv
cjQoKSwKKyAgICAgICAgICAgICAgICAgICAgICBCb29sKCsrbjFfKSwKKyAgICAgICAgICAgICAg
ICAgICAgICBCb29sKCsrbjJfKSwKKyAgICAgICAgICAgICAgICAgICAgICBCb29sKCsrbjNfKSwK
KyAgICAgICAgICAgICAgICAgICAgICBCb29sKCsrbjRfKSk7CisgIGZpbmlzaGVkXyA9IHRydWU7
Cit9CisKKy8vIFRlc3RzIGEgZmFpbGVkIEFTU0VSVF9QUkVEX0ZPUk1BVDQgd2hlcmUgdGhlCisv
LyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSBidWlsdC1pbiB0eXBlIChp
bnQpLgorVEVTVF9GKEFTU0VSVF9QUkVEX0ZPUk1BVDRUZXN0LCBGdW5jdGlvbk9uQnVpbHRJblR5
cGVGYWlsdXJlKSB7CisgIGV4cGVjdGVkX3RvX2ZpbmlzaF8gPSBmYWxzZTsKKyAgRVhQRUNUX0ZB
VEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAgQVNTRVJUX1BSRURfRk9STUFUNChQcmVkRm9y
bWF0RnVuY3Rpb240LAorICAgICAgICAgICAgICAgICAgICAgICAgbjFfKyssCisgICAgICAgICAg
ICAgICAgICAgICAgICBuMl8rKywKKyAgICAgICAgICAgICAgICAgICAgICAgIG4zXysrLAorICAg
ICAgICAgICAgICAgICAgICAgICAgbjRfKyspOworICAgIGZpbmlzaGVkXyA9IHRydWU7CisgIH0s
ICIiKTsKK30KKworLy8gVGVzdHMgYSBmYWlsZWQgQVNTRVJUX1BSRURfRk9STUFUNCB3aGVyZSB0
aGUKKy8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIHVzZXItZGVmaW5l
ZCB0eXBlIChCb29sKS4KK1RFU1RfRihBU1NFUlRfUFJFRF9GT1JNQVQ0VGVzdCwgRnVuY3Rpb25P
blVzZXJUeXBlRmFpbHVyZSkgeworICBleHBlY3RlZF90b19maW5pc2hfID0gZmFsc2U7CisgIEVY
UEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEFTU0VSVF9QUkVEX0ZPUk1BVDQo
UHJlZEZvcm1hdEZ1bmN0aW9uNCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wobjFfKysp
LAorICAgICAgICAgICAgICAgICAgICAgICAgQm9vbChuMl8rKyksCisgICAgICAgICAgICAgICAg
ICAgICAgICBCb29sKG4zXysrKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wobjRfKysp
KTsKKyAgICBmaW5pc2hlZF8gPSB0cnVlOworICB9LCAiIik7Cit9CisKKy8vIFRlc3RzIGEgZmFp
bGVkIEFTU0VSVF9QUkVEX0ZPUk1BVDQgd2hlcmUgdGhlCisvLyBwcmVkaWNhdGUtZm9ybWF0dGVy
IGlzIGEgZnVuY3RvciBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCitURVNUX0YoQVNTRVJUX1BS
RURfRk9STUFUNFRlc3QsIEZ1bmN0b3JPbkJ1aWx0SW5UeXBlRmFpbHVyZSkgeworICBleHBlY3Rl
ZF90b19maW5pc2hfID0gZmFsc2U7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElO
VAorICAgIEFTU0VSVF9QUkVEX0ZPUk1BVDQoUHJlZEZvcm1hdEZ1bmN0b3I0KCksCisgICAgICAg
ICAgICAgICAgICAgICAgICBuMV8rKywKKyAgICAgICAgICAgICAgICAgICAgICAgIG4yXysrLAor
ICAgICAgICAgICAgICAgICAgICAgICAgbjNfKyssCisgICAgICAgICAgICAgICAgICAgICAgICBu
NF8rKyk7CisgICAgZmluaXNoZWRfID0gdHJ1ZTsKKyAgfSwgIiIpOworfQorCisvLyBUZXN0cyBh
IGZhaWxlZCBBU1NFUlRfUFJFRF9GT1JNQVQ0IHdoZXJlIHRoZQorLy8gcHJlZGljYXRlLWZvcm1h
dHRlciBpcyBhIGZ1bmN0b3Igb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCitURVNUX0Yo
QVNTRVJUX1BSRURfRk9STUFUNFRlc3QsIEZ1bmN0b3JPblVzZXJUeXBlRmFpbHVyZSkgeworICBl
eHBlY3RlZF90b19maW5pc2hfID0gZmFsc2U7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8v
IE5PTElOVAorICAgIEFTU0VSVF9QUkVEX0ZPUk1BVDQoUHJlZEZvcm1hdEZ1bmN0b3I0KCksCisg
ICAgICAgICAgICAgICAgICAgICAgICBCb29sKG4xXysrKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEJvb2wobjJfKyspLAorICAgICAgICAgICAgICAgICAgICAgICAgQm9vbChuM18rKyksCisg
ICAgICAgICAgICAgICAgICAgICAgICBCb29sKG40XysrKSk7CisgICAgZmluaXNoZWRfID0gdHJ1
ZTsKKyAgfSwgIiIpOworfQorLy8gU2FtcGxlIGZ1bmN0aW9ucy9mdW5jdG9ycyBmb3IgdGVzdGlu
ZyA1LWFyeSBwcmVkaWNhdGUgYXNzZXJ0aW9ucy4KKworLy8gQSA1LWFyeSBwcmVkaWNhdGUgZnVu
Y3Rpb24uCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywg
dHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1PgorYm9vbCBQcmVkRnVuY3Rpb241KFQxIHYxLCBUMiB2
MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSkgeworICByZXR1cm4gdjEgKyB2MiArIHYzICsgdjQgKyB2
NSA+IDA7Cit9CisKKy8vIFRoZSBmb2xsb3dpbmcgdHdvIGZ1bmN0aW9ucyBhcmUgbmVlZGVkIHRv
IGNpcmN1bXZlbnQgYSBidWcgaW4KKy8vIGdjYyAyLjk1LjMsIHdoaWNoIHNvbWV0aW1lcyBoYXMg
cHJvYmxlbSB3aXRoIHRoZSBhYm92ZSB0ZW1wbGF0ZQorLy8gZnVuY3Rpb24uCitib29sIFByZWRG
dW5jdGlvbjVJbnQoaW50IHYxLCBpbnQgdjIsIGludCB2MywgaW50IHY0LCBpbnQgdjUpIHsKKyAg
cmV0dXJuIHYxICsgdjIgKyB2MyArIHY0ICsgdjUgPiAwOworfQorYm9vbCBQcmVkRnVuY3Rpb241
Qm9vbChCb29sIHYxLCBCb29sIHYyLCBCb29sIHYzLCBCb29sIHY0LCBCb29sIHY1KSB7CisgIHJl
dHVybiB2MSArIHYyICsgdjMgKyB2NCArIHY1ID4gMDsKK30KKworLy8gQSA1LWFyeSBwcmVkaWNh
dGUgZnVuY3Rvci4KK3N0cnVjdCBQcmVkRnVuY3RvcjUgeworICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1Pgor
ICBib29sIG9wZXJhdG9yKCkoY29uc3QgVDEmIHYxLAorICAgICAgICAgICAgICAgICAgY29uc3Qg
VDImIHYyLAorICAgICAgICAgICAgICAgICAgY29uc3QgVDMmIHYzLAorICAgICAgICAgICAgICAg
ICAgY29uc3QgVDQmIHY0LAorICAgICAgICAgICAgICAgICAgY29uc3QgVDUmIHY1KSB7CisgICAg
cmV0dXJuIHYxICsgdjIgKyB2MyArIHY0ICsgdjUgPiAwOworICB9Cit9OworCisvLyBBIDUtYXJ5
IHByZWRpY2F0ZS1mb3JtYXR0ZXIgZnVuY3Rpb24uCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5
cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1PgordGVzdGlu
Zzo6QXNzZXJ0aW9uUmVzdWx0IFByZWRGb3JtYXRGdW5jdGlvbjUoY29uc3QgY2hhciogZTEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBl
MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIGUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogZTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBlNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFQxJiB2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFQyJiB2MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFQzJiB2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFQ0JiB2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFQ1JiB2NSkgeworICBpZiAoUHJlZEZ1bmN0aW9uNSh2
MSwgdjIsIHYzLCB2NCwgdjUpKQorICAgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNz
KCk7CisKKyAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKQorICAgICAgPDwgZTEg
PDwgIiArICIgPDwgZTIgPDwgIiArICIgPDwgZTMgPDwgIiArICIgPDwgZTQgPDwgIiArICIgPDwg
ZTUKKyAgICAgIDw8ICIgaXMgZXhwZWN0ZWQgdG8gYmUgcG9zaXRpdmUsIGJ1dCBldmFsdWF0ZXMg
dG8gIgorICAgICAgPDwgdjEgKyB2MiArIHYzICsgdjQgKyB2NSA8PCAiLiI7Cit9CisKKy8vIEEg
NS1hcnkgcHJlZGljYXRlLWZvcm1hdHRlciBmdW5jdG9yLgorc3RydWN0IFByZWRGb3JtYXRGdW5j
dG9yNSB7CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQz
LCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDU+CisgIHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBv
cGVyYXRvcigpKGNvbnN0IGNoYXIqIGUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogZTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIGU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBlNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVDEmIHYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUMiYgdjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQz
JiB2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDQmIHY0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUNSYgdjUpIGNv
bnN0IHsKKyAgICByZXR1cm4gUHJlZEZvcm1hdEZ1bmN0aW9uNShlMSwgZTIsIGUzLCBlNCwgZTUs
IHYxLCB2MiwgdjMsIHY0LCB2NSk7CisgIH0KK307CisKKy8vIFRlc3RzIGZvciB7RVhQRUNUfEFT
U0VSVH1fUFJFRF9GT1JNQVQ1LgorCitjbGFzcyBQcmVkaWNhdGU1VGVzdCA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICBl
eHBlY3RlZF90b19maW5pc2hfID0gdHJ1ZTsKKyAgICBmaW5pc2hlZF8gPSBmYWxzZTsKKyAgICBu
MV8gPSBuMl8gPSBuM18gPSBuNF8gPSBuNV8gPSAwOworICB9CisKKyAgdmlydHVhbCB2b2lkIFRl
YXJEb3duKCkgeworICAgIC8vIFZlcmlmaWVzIHRoYXQgZWFjaCBvZiB0aGUgcHJlZGljYXRlJ3Mg
YXJndW1lbnRzIHdhcyBldmFsdWF0ZWQKKyAgICAvLyBleGFjdGx5IG9uY2UuCisgICAgRVhQRUNU
X0VRKDEsIG4xXykgPDwKKyAgICAgICAgIlRoZSBwcmVkaWNhdGUgYXNzZXJ0aW9uIGRpZG4ndCBl
dmFsdWF0ZSBhcmd1bWVudCAyICIKKyAgICAgICAgImV4YWN0bHkgb25jZS4iOworICAgIEVYUEVD
VF9FUSgxLCBuMl8pIDw8CisgICAgICAgICJUaGUgcHJlZGljYXRlIGFzc2VydGlvbiBkaWRuJ3Qg
ZXZhbHVhdGUgYXJndW1lbnQgMyAiCisgICAgICAgICJleGFjdGx5IG9uY2UuIjsKKyAgICBFWFBF
Q1RfRVEoMSwgbjNfKSA8PAorICAgICAgICAiVGhlIHByZWRpY2F0ZSBhc3NlcnRpb24gZGlkbid0
IGV2YWx1YXRlIGFyZ3VtZW50IDQgIgorICAgICAgICAiZXhhY3RseSBvbmNlLiI7CisgICAgRVhQ
RUNUX0VRKDEsIG40XykgPDwKKyAgICAgICAgIlRoZSBwcmVkaWNhdGUgYXNzZXJ0aW9uIGRpZG4n
dCBldmFsdWF0ZSBhcmd1bWVudCA1ICIKKyAgICAgICAgImV4YWN0bHkgb25jZS4iOworICAgIEVY
UEVDVF9FUSgxLCBuNV8pIDw8CisgICAgICAgICJUaGUgcHJlZGljYXRlIGFzc2VydGlvbiBkaWRu
J3QgZXZhbHVhdGUgYXJndW1lbnQgNiAiCisgICAgICAgICJleGFjdGx5IG9uY2UuIjsKKworICAg
IC8vIFZlcmlmaWVzIHRoYXQgdGhlIGNvbnRyb2wgZmxvdyBpbiB0aGUgdGVzdCBmdW5jdGlvbiBp
cyBleHBlY3RlZC4KKyAgICBpZiAoZXhwZWN0ZWRfdG9fZmluaXNoXyAmJiAhZmluaXNoZWRfKSB7
CisgICAgICBGQUlMKCkgPDwgIlRoZSBwcmVkaWNhdGUgYXNzZXJ0aW9uIHVuZXhwYWN0ZWRseSBh
Ym9ydGVkIHRoZSB0ZXN0LiI7CisgICAgfSBlbHNlIGlmICghZXhwZWN0ZWRfdG9fZmluaXNoXyAm
JiBmaW5pc2hlZF8pIHsKKyAgICAgIEZBSUwoKSA8PCAiVGhlIGZhaWxlZCBwcmVkaWNhdGUgYXNz
ZXJ0aW9uIGRpZG4ndCBhYm9ydCB0aGUgdGVzdCAiCisgICAgICAgICAgICAgICAgImFzIGV4cGVj
dGVkLiI7CisgICAgfQorICB9CisKKyAgLy8gdHJ1ZSBpZmYgdGhlIHRlc3QgZnVuY3Rpb24gaXMg
ZXhwZWN0ZWQgdG8gcnVuIHRvIGZpbmlzaC4KKyAgc3RhdGljIGJvb2wgZXhwZWN0ZWRfdG9fZmlu
aXNoXzsKKworICAvLyB0cnVlIGlmZiB0aGUgdGVzdCBmdW5jdGlvbiBkaWQgcnVuIHRvIGZpbmlz
aC4KKyAgc3RhdGljIGJvb2wgZmluaXNoZWRfOworCisgIHN0YXRpYyBpbnQgbjFfOworICBzdGF0
aWMgaW50IG4yXzsKKyAgc3RhdGljIGludCBuM187CisgIHN0YXRpYyBpbnQgbjRfOworICBzdGF0
aWMgaW50IG41XzsKK307CisKK2Jvb2wgUHJlZGljYXRlNVRlc3Q6OmV4cGVjdGVkX3RvX2Zpbmlz
aF87Citib29sIFByZWRpY2F0ZTVUZXN0OjpmaW5pc2hlZF87CitpbnQgUHJlZGljYXRlNVRlc3Q6
Om4xXzsKK2ludCBQcmVkaWNhdGU1VGVzdDo6bjJfOworaW50IFByZWRpY2F0ZTVUZXN0OjpuM187
CitpbnQgUHJlZGljYXRlNVRlc3Q6Om40XzsKK2ludCBQcmVkaWNhdGU1VGVzdDo6bjVfOworCit0
eXBlZGVmIFByZWRpY2F0ZTVUZXN0IEVYUEVDVF9QUkVEX0ZPUk1BVDVUZXN0OwordHlwZWRlZiBQ
cmVkaWNhdGU1VGVzdCBBU1NFUlRfUFJFRF9GT1JNQVQ1VGVzdDsKK3R5cGVkZWYgUHJlZGljYXRl
NVRlc3QgRVhQRUNUX1BSRUQ1VGVzdDsKK3R5cGVkZWYgUHJlZGljYXRlNVRlc3QgQVNTRVJUX1BS
RUQ1VGVzdDsKKworLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEVYUEVDVF9QUkVENSB3aGVyZSB0aGUK
Ky8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIGJ1aWx0LWluIHR5cGUg
KGludCkuCitURVNUX0YoRVhQRUNUX1BSRUQ1VGVzdCwgRnVuY3Rpb25PbkJ1aWx0SW5UeXBlU3Vj
Y2VzcykgeworICBFWFBFQ1RfUFJFRDUoUHJlZEZ1bmN0aW9uNUludCwKKyAgICAgICAgICAgICAg
ICsrbjFfLAorICAgICAgICAgICAgICAgKytuMl8sCisgICAgICAgICAgICAgICArK24zXywKKyAg
ICAgICAgICAgICAgICsrbjRfLAorICAgICAgICAgICAgICAgKytuNV8pOworICBmaW5pc2hlZF8g
PSB0cnVlOworfQorCisvLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgRVhQRUNUX1BSRUQ1IHdoZXJlIHRo
ZQorLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgdXNlci1kZWZpbmVk
IHR5cGUgKEJvb2wpLgorVEVTVF9GKEVYUEVDVF9QUkVENVRlc3QsIEZ1bmN0aW9uT25Vc2VyVHlw
ZVN1Y2Nlc3MpIHsKKyAgRVhQRUNUX1BSRUQ1KFByZWRGdW5jdGlvbjVCb29sLAorICAgICAgICAg
ICAgICAgQm9vbCgrK24xXyksCisgICAgICAgICAgICAgICBCb29sKCsrbjJfKSwKKyAgICAgICAg
ICAgICAgIEJvb2woKytuM18pLAorICAgICAgICAgICAgICAgQm9vbCgrK240XyksCisgICAgICAg
ICAgICAgICBCb29sKCsrbjVfKSk7CisgIGZpbmlzaGVkXyA9IHRydWU7Cit9CisKKy8vIFRlc3Rz
IGEgc3VjY2Vzc2Z1bCBFWFBFQ1RfUFJFRDUgd2hlcmUgdGhlCisvLyBwcmVkaWNhdGUtZm9ybWF0
dGVyIGlzIGEgZnVuY3RvciBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCitURVNUX0YoRVhQRUNU
X1BSRUQ1VGVzdCwgRnVuY3Rvck9uQnVpbHRJblR5cGVTdWNjZXNzKSB7CisgIEVYUEVDVF9QUkVE
NShQcmVkRnVuY3RvcjUoKSwKKyAgICAgICAgICAgICAgICsrbjFfLAorICAgICAgICAgICAgICAg
KytuMl8sCisgICAgICAgICAgICAgICArK24zXywKKyAgICAgICAgICAgICAgICsrbjRfLAorICAg
ICAgICAgICAgICAgKytuNV8pOworICBmaW5pc2hlZF8gPSB0cnVlOworfQorCisvLyBUZXN0cyBh
IHN1Y2Nlc3NmdWwgRVhQRUNUX1BSRUQ1IHdoZXJlIHRoZQorLy8gcHJlZGljYXRlLWZvcm1hdHRl
ciBpcyBhIGZ1bmN0b3Igb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCitURVNUX0YoRVhQ
RUNUX1BSRUQ1VGVzdCwgRnVuY3Rvck9uVXNlclR5cGVTdWNjZXNzKSB7CisgIEVYUEVDVF9QUkVE
NShQcmVkRnVuY3RvcjUoKSwKKyAgICAgICAgICAgICAgIEJvb2woKytuMV8pLAorICAgICAgICAg
ICAgICAgQm9vbCgrK24yXyksCisgICAgICAgICAgICAgICBCb29sKCsrbjNfKSwKKyAgICAgICAg
ICAgICAgIEJvb2woKytuNF8pLAorICAgICAgICAgICAgICAgQm9vbCgrK241XykpOworICBmaW5p
c2hlZF8gPSB0cnVlOworfQorCisvLyBUZXN0cyBhIGZhaWxlZCBFWFBFQ1RfUFJFRDUgd2hlcmUg
dGhlCisvLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSBidWlsdC1pbiB0
eXBlIChpbnQpLgorVEVTVF9GKEVYUEVDVF9QUkVENVRlc3QsIEZ1bmN0aW9uT25CdWlsdEluVHlw
ZUZhaWx1cmUpIHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAg
RVhQRUNUX1BSRUQ1KFByZWRGdW5jdGlvbjVJbnQsCisgICAgICAgICAgICAgICAgIG4xXysrLAor
ICAgICAgICAgICAgICAgICBuMl8rKywKKyAgICAgICAgICAgICAgICAgbjNfKyssCisgICAgICAg
ICAgICAgICAgIG40XysrLAorICAgICAgICAgICAgICAgICBuNV8rKyk7CisgICAgZmluaXNoZWRf
ID0gdHJ1ZTsKKyAgfSwgIiIpOworfQorCisvLyBUZXN0cyBhIGZhaWxlZCBFWFBFQ1RfUFJFRDUg
d2hlcmUgdGhlCisvLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSB1c2Vy
LWRlZmluZWQgdHlwZSAoQm9vbCkuCitURVNUX0YoRVhQRUNUX1BSRUQ1VGVzdCwgRnVuY3Rpb25P
blVzZXJUeXBlRmFpbHVyZSkgeworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJ
TlQKKyAgICBFWFBFQ1RfUFJFRDUoUHJlZEZ1bmN0aW9uNUJvb2wsCisgICAgICAgICAgICAgICAg
IEJvb2wobjFfKyspLAorICAgICAgICAgICAgICAgICBCb29sKG4yXysrKSwKKyAgICAgICAgICAg
ICAgICAgQm9vbChuM18rKyksCisgICAgICAgICAgICAgICAgIEJvb2wobjRfKyspLAorICAgICAg
ICAgICAgICAgICBCb29sKG41XysrKSk7CisgICAgZmluaXNoZWRfID0gdHJ1ZTsKKyAgfSwgIiIp
OworfQorCisvLyBUZXN0cyBhIGZhaWxlZCBFWFBFQ1RfUFJFRDUgd2hlcmUgdGhlCisvLyBwcmVk
aWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCitU
RVNUX0YoRVhQRUNUX1BSRUQ1VGVzdCwgRnVuY3Rvck9uQnVpbHRJblR5cGVGYWlsdXJlKSB7Cisg
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEVYUEVDVF9QUkVENShQ
cmVkRnVuY3RvcjUoKSwKKyAgICAgICAgICAgICAgICAgbjFfKyssCisgICAgICAgICAgICAgICAg
IG4yXysrLAorICAgICAgICAgICAgICAgICBuM18rKywKKyAgICAgICAgICAgICAgICAgbjRfKyss
CisgICAgICAgICAgICAgICAgIG41XysrKTsKKyAgICBmaW5pc2hlZF8gPSB0cnVlOworICB9LCAi
Iik7Cit9CisKKy8vIFRlc3RzIGEgZmFpbGVkIEVYUEVDVF9QUkVENSB3aGVyZSB0aGUKKy8vIHBy
ZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJv
b2wpLgorVEVTVF9GKEVYUEVDVF9QUkVENVRlc3QsIEZ1bmN0b3JPblVzZXJUeXBlRmFpbHVyZSkg
eworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBFWFBFQ1RfUFJF
RDUoUHJlZEZ1bmN0b3I1KCksCisgICAgICAgICAgICAgICAgIEJvb2wobjFfKyspLAorICAgICAg
ICAgICAgICAgICBCb29sKG4yXysrKSwKKyAgICAgICAgICAgICAgICAgQm9vbChuM18rKyksCisg
ICAgICAgICAgICAgICAgIEJvb2wobjRfKyspLAorICAgICAgICAgICAgICAgICBCb29sKG41Xysr
KSk7CisgICAgZmluaXNoZWRfID0gdHJ1ZTsKKyAgfSwgIiIpOworfQorCisvLyBUZXN0cyBhIHN1
Y2Nlc3NmdWwgQVNTRVJUX1BSRUQ1IHdoZXJlIHRoZQorLy8gcHJlZGljYXRlLWZvcm1hdHRlciBp
cyBhIGZ1bmN0aW9uIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KK1RFU1RfRihBU1NFUlRfUFJF
RDVUZXN0LCBGdW5jdGlvbk9uQnVpbHRJblR5cGVTdWNjZXNzKSB7CisgIEFTU0VSVF9QUkVENShQ
cmVkRnVuY3Rpb241SW50LAorICAgICAgICAgICAgICAgKytuMV8sCisgICAgICAgICAgICAgICAr
K24yXywKKyAgICAgICAgICAgICAgICsrbjNfLAorICAgICAgICAgICAgICAgKytuNF8sCisgICAg
ICAgICAgICAgICArK241Xyk7CisgIGZpbmlzaGVkXyA9IHRydWU7Cit9CisKKy8vIFRlc3RzIGEg
c3VjY2Vzc2Z1bCBBU1NFUlRfUFJFRDUgd2hlcmUgdGhlCisvLyBwcmVkaWNhdGUtZm9ybWF0dGVy
IGlzIGEgZnVuY3Rpb24gb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCitURVNUX0YoQVNT
RVJUX1BSRUQ1VGVzdCwgRnVuY3Rpb25PblVzZXJUeXBlU3VjY2VzcykgeworICBBU1NFUlRfUFJF
RDUoUHJlZEZ1bmN0aW9uNUJvb2wsCisgICAgICAgICAgICAgICBCb29sKCsrbjFfKSwKKyAgICAg
ICAgICAgICAgIEJvb2woKytuMl8pLAorICAgICAgICAgICAgICAgQm9vbCgrK24zXyksCisgICAg
ICAgICAgICAgICBCb29sKCsrbjRfKSwKKyAgICAgICAgICAgICAgIEJvb2woKytuNV8pKTsKKyAg
ZmluaXNoZWRfID0gdHJ1ZTsKK30KKworLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEFTU0VSVF9QUkVE
NSB3aGVyZSB0aGUKKy8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgYnVp
bHQtaW4gdHlwZSAoaW50KS4KK1RFU1RfRihBU1NFUlRfUFJFRDVUZXN0LCBGdW5jdG9yT25CdWls
dEluVHlwZVN1Y2Nlc3MpIHsKKyAgQVNTRVJUX1BSRUQ1KFByZWRGdW5jdG9yNSgpLAorICAgICAg
ICAgICAgICAgKytuMV8sCisgICAgICAgICAgICAgICArK24yXywKKyAgICAgICAgICAgICAgICsr
bjNfLAorICAgICAgICAgICAgICAgKytuNF8sCisgICAgICAgICAgICAgICArK241Xyk7CisgIGZp
bmlzaGVkXyA9IHRydWU7Cit9CisKKy8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBBU1NFUlRfUFJFRDUg
d2hlcmUgdGhlCisvLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBhIHVzZXIt
ZGVmaW5lZCB0eXBlIChCb29sKS4KK1RFU1RfRihBU1NFUlRfUFJFRDVUZXN0LCBGdW5jdG9yT25V
c2VyVHlwZVN1Y2Nlc3MpIHsKKyAgQVNTRVJUX1BSRUQ1KFByZWRGdW5jdG9yNSgpLAorICAgICAg
ICAgICAgICAgQm9vbCgrK24xXyksCisgICAgICAgICAgICAgICBCb29sKCsrbjJfKSwKKyAgICAg
ICAgICAgICAgIEJvb2woKytuM18pLAorICAgICAgICAgICAgICAgQm9vbCgrK240XyksCisgICAg
ICAgICAgICAgICBCb29sKCsrbjVfKSk7CisgIGZpbmlzaGVkXyA9IHRydWU7Cit9CisKKy8vIFRl
c3RzIGEgZmFpbGVkIEFTU0VSVF9QUkVENSB3aGVyZSB0aGUKKy8vIHByZWRpY2F0ZS1mb3JtYXR0
ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCitURVNUX0YoQVNTRVJU
X1BSRUQ1VGVzdCwgRnVuY3Rpb25PbkJ1aWx0SW5UeXBlRmFpbHVyZSkgeworICBleHBlY3RlZF90
b19maW5pc2hfID0gZmFsc2U7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAor
ICAgIEFTU0VSVF9QUkVENShQcmVkRnVuY3Rpb241SW50LAorICAgICAgICAgICAgICAgICBuMV8r
KywKKyAgICAgICAgICAgICAgICAgbjJfKyssCisgICAgICAgICAgICAgICAgIG4zXysrLAorICAg
ICAgICAgICAgICAgICBuNF8rKywKKyAgICAgICAgICAgICAgICAgbjVfKyspOworICAgIGZpbmlz
aGVkXyA9IHRydWU7CisgIH0sICIiKTsKK30KKworLy8gVGVzdHMgYSBmYWlsZWQgQVNTRVJUX1BS
RUQ1IHdoZXJlIHRoZQorLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEg
dXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgorVEVTVF9GKEFTU0VSVF9QUkVENVRlc3QsIEZ1bmN0
aW9uT25Vc2VyVHlwZUZhaWx1cmUpIHsKKyAgZXhwZWN0ZWRfdG9fZmluaXNoXyA9IGZhbHNlOwor
ICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBBU1NFUlRfUFJFRDUoUHJl
ZEZ1bmN0aW9uNUJvb2wsCisgICAgICAgICAgICAgICAgIEJvb2wobjFfKyspLAorICAgICAgICAg
ICAgICAgICBCb29sKG4yXysrKSwKKyAgICAgICAgICAgICAgICAgQm9vbChuM18rKyksCisgICAg
ICAgICAgICAgICAgIEJvb2wobjRfKyspLAorICAgICAgICAgICAgICAgICBCb29sKG41XysrKSk7
CisgICAgZmluaXNoZWRfID0gdHJ1ZTsKKyAgfSwgIiIpOworfQorCisvLyBUZXN0cyBhIGZhaWxl
ZCBBU1NFUlRfUFJFRDUgd2hlcmUgdGhlCisvLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVu
Y3RvciBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCitURVNUX0YoQVNTRVJUX1BSRUQ1VGVzdCwg
RnVuY3Rvck9uQnVpbHRJblR5cGVGYWlsdXJlKSB7CisgIGV4cGVjdGVkX3RvX2ZpbmlzaF8gPSBm
YWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAgQVNTRVJUX1BS
RUQ1KFByZWRGdW5jdG9yNSgpLAorICAgICAgICAgICAgICAgICBuMV8rKywKKyAgICAgICAgICAg
ICAgICAgbjJfKyssCisgICAgICAgICAgICAgICAgIG4zXysrLAorICAgICAgICAgICAgICAgICBu
NF8rKywKKyAgICAgICAgICAgICAgICAgbjVfKyspOworICAgIGZpbmlzaGVkXyA9IHRydWU7Cisg
IH0sICIiKTsKK30KKworLy8gVGVzdHMgYSBmYWlsZWQgQVNTRVJUX1BSRUQ1IHdoZXJlIHRoZQor
Ly8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igb24gYSB1c2VyLWRlZmluZWQgdHlw
ZSAoQm9vbCkuCitURVNUX0YoQVNTRVJUX1BSRUQ1VGVzdCwgRnVuY3Rvck9uVXNlclR5cGVGYWls
dXJlKSB7CisgIGV4cGVjdGVkX3RvX2ZpbmlzaF8gPSBmYWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZB
SUxVUkUoeyAgLy8gTk9MSU5UCisgICAgQVNTRVJUX1BSRUQ1KFByZWRGdW5jdG9yNSgpLAorICAg
ICAgICAgICAgICAgICBCb29sKG4xXysrKSwKKyAgICAgICAgICAgICAgICAgQm9vbChuMl8rKyks
CisgICAgICAgICAgICAgICAgIEJvb2wobjNfKyspLAorICAgICAgICAgICAgICAgICBCb29sKG40
XysrKSwKKyAgICAgICAgICAgICAgICAgQm9vbChuNV8rKykpOworICAgIGZpbmlzaGVkXyA9IHRy
dWU7CisgIH0sICIiKTsKK30KKworLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEVYUEVDVF9QUkVEX0ZP
Uk1BVDUgd2hlcmUgdGhlCisvLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24g
YSBidWlsdC1pbiB0eXBlIChpbnQpLgorVEVTVF9GKEVYUEVDVF9QUkVEX0ZPUk1BVDVUZXN0LCBG
dW5jdGlvbk9uQnVpbHRJblR5cGVTdWNjZXNzKSB7CisgIEVYUEVDVF9QUkVEX0ZPUk1BVDUoUHJl
ZEZvcm1hdEZ1bmN0aW9uNSwKKyAgICAgICAgICAgICAgICAgICAgICArK24xXywKKyAgICAgICAg
ICAgICAgICAgICAgICArK24yXywKKyAgICAgICAgICAgICAgICAgICAgICArK24zXywKKyAgICAg
ICAgICAgICAgICAgICAgICArK240XywKKyAgICAgICAgICAgICAgICAgICAgICArK241Xyk7Cisg
IGZpbmlzaGVkXyA9IHRydWU7Cit9CisKKy8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBFWFBFQ1RfUFJF
RF9GT1JNQVQ1IHdoZXJlIHRoZQorLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9u
IG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgorVEVTVF9GKEVYUEVDVF9QUkVEX0ZPUk1B
VDVUZXN0LCBGdW5jdGlvbk9uVXNlclR5cGVTdWNjZXNzKSB7CisgIEVYUEVDVF9QUkVEX0ZPUk1B
VDUoUHJlZEZvcm1hdEZ1bmN0aW9uNSwKKyAgICAgICAgICAgICAgICAgICAgICBCb29sKCsrbjFf
KSwKKyAgICAgICAgICAgICAgICAgICAgICBCb29sKCsrbjJfKSwKKyAgICAgICAgICAgICAgICAg
ICAgICBCb29sKCsrbjNfKSwKKyAgICAgICAgICAgICAgICAgICAgICBCb29sKCsrbjRfKSwKKyAg
ICAgICAgICAgICAgICAgICAgICBCb29sKCsrbjVfKSk7CisgIGZpbmlzaGVkXyA9IHRydWU7Cit9
CisKKy8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBFWFBFQ1RfUFJFRF9GT1JNQVQ1IHdoZXJlIHRoZQor
Ly8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igb24gYSBidWlsdC1pbiB0eXBlIChp
bnQpLgorVEVTVF9GKEVYUEVDVF9QUkVEX0ZPUk1BVDVUZXN0LCBGdW5jdG9yT25CdWlsdEluVHlw
ZVN1Y2Nlc3MpIHsKKyAgRVhQRUNUX1BSRURfRk9STUFUNShQcmVkRm9ybWF0RnVuY3RvcjUoKSwK
KyAgICAgICAgICAgICAgICAgICAgICArK24xXywKKyAgICAgICAgICAgICAgICAgICAgICArK24y
XywKKyAgICAgICAgICAgICAgICAgICAgICArK24zXywKKyAgICAgICAgICAgICAgICAgICAgICAr
K240XywKKyAgICAgICAgICAgICAgICAgICAgICArK241Xyk7CisgIGZpbmlzaGVkXyA9IHRydWU7
Cit9CisKKy8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBFWFBFQ1RfUFJFRF9GT1JNQVQ1IHdoZXJlIHRo
ZQorLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igb24gYSB1c2VyLWRlZmluZWQg
dHlwZSAoQm9vbCkuCitURVNUX0YoRVhQRUNUX1BSRURfRk9STUFUNVRlc3QsIEZ1bmN0b3JPblVz
ZXJUeXBlU3VjY2VzcykgeworICBFWFBFQ1RfUFJFRF9GT1JNQVQ1KFByZWRGb3JtYXRGdW5jdG9y
NSgpLAorICAgICAgICAgICAgICAgICAgICAgIEJvb2woKytuMV8pLAorICAgICAgICAgICAgICAg
ICAgICAgIEJvb2woKytuMl8pLAorICAgICAgICAgICAgICAgICAgICAgIEJvb2woKytuM18pLAor
ICAgICAgICAgICAgICAgICAgICAgIEJvb2woKytuNF8pLAorICAgICAgICAgICAgICAgICAgICAg
IEJvb2woKytuNV8pKTsKKyAgZmluaXNoZWRfID0gdHJ1ZTsKK30KKworLy8gVGVzdHMgYSBmYWls
ZWQgRVhQRUNUX1BSRURfRk9STUFUNSB3aGVyZSB0aGUKKy8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIg
aXMgYSBmdW5jdGlvbiBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCitURVNUX0YoRVhQRUNUX1BS
RURfRk9STUFUNVRlc3QsIEZ1bmN0aW9uT25CdWlsdEluVHlwZUZhaWx1cmUpIHsKKyAgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAgRVhQRUNUX1BSRURfRk9STUFUNShQ
cmVkRm9ybWF0RnVuY3Rpb241LAorICAgICAgICAgICAgICAgICAgICAgICAgbjFfKyssCisgICAg
ICAgICAgICAgICAgICAgICAgICBuMl8rKywKKyAgICAgICAgICAgICAgICAgICAgICAgIG4zXysr
LAorICAgICAgICAgICAgICAgICAgICAgICAgbjRfKyssCisgICAgICAgICAgICAgICAgICAgICAg
ICBuNV8rKyk7CisgICAgZmluaXNoZWRfID0gdHJ1ZTsKKyAgfSwgIiIpOworfQorCisvLyBUZXN0
cyBhIGZhaWxlZCBFWFBFQ1RfUFJFRF9GT1JNQVQ1IHdoZXJlIHRoZQorLy8gcHJlZGljYXRlLWZv
cm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgorVEVT
VF9GKEVYUEVDVF9QUkVEX0ZPUk1BVDVUZXN0LCBGdW5jdGlvbk9uVXNlclR5cGVGYWlsdXJlKSB7
CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEVYUEVDVF9QUkVE
X0ZPUk1BVDUoUHJlZEZvcm1hdEZ1bmN0aW9uNSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEJv
b2wobjFfKyspLAorICAgICAgICAgICAgICAgICAgICAgICAgQm9vbChuMl8rKyksCisgICAgICAg
ICAgICAgICAgICAgICAgICBCb29sKG4zXysrKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEJv
b2wobjRfKyspLAorICAgICAgICAgICAgICAgICAgICAgICAgQm9vbChuNV8rKykpOworICAgIGZp
bmlzaGVkXyA9IHRydWU7CisgIH0sICIiKTsKK30KKworLy8gVGVzdHMgYSBmYWlsZWQgRVhQRUNU
X1BSRURfRk9STUFUNSB3aGVyZSB0aGUKKy8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5j
dG9yIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KK1RFU1RfRihFWFBFQ1RfUFJFRF9GT1JNQVQ1
VGVzdCwgRnVuY3Rvck9uQnVpbHRJblR5cGVGYWlsdXJlKSB7CisgIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEVYUEVDVF9QUkVEX0ZPUk1BVDUoUHJlZEZvcm1hdEZ1
bmN0b3I1KCksCisgICAgICAgICAgICAgICAgICAgICAgICBuMV8rKywKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG4yXysrLAorICAgICAgICAgICAgICAgICAgICAgICAgbjNfKyssCisgICAgICAg
ICAgICAgICAgICAgICAgICBuNF8rKywKKyAgICAgICAgICAgICAgICAgICAgICAgIG41XysrKTsK
KyAgICBmaW5pc2hlZF8gPSB0cnVlOworICB9LCAiIik7Cit9CisKKy8vIFRlc3RzIGEgZmFpbGVk
IEVYUEVDVF9QUkVEX0ZPUk1BVDUgd2hlcmUgdGhlCisvLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlz
IGEgZnVuY3RvciBvbiBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4KK1RFU1RfRihFWFBFQ1Rf
UFJFRF9GT1JNQVQ1VGVzdCwgRnVuY3Rvck9uVXNlclR5cGVGYWlsdXJlKSB7CisgIEVYUEVDVF9O
T05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEVYUEVDVF9QUkVEX0ZPUk1BVDUoUHJl
ZEZvcm1hdEZ1bmN0b3I1KCksCisgICAgICAgICAgICAgICAgICAgICAgICBCb29sKG4xXysrKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wobjJfKyspLAorICAgICAgICAgICAgICAgICAg
ICAgICAgQm9vbChuM18rKyksCisgICAgICAgICAgICAgICAgICAgICAgICBCb29sKG40XysrKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wobjVfKyspKTsKKyAgICBmaW5pc2hlZF8gPSB0
cnVlOworICB9LCAiIik7Cit9CisKKy8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBBU1NFUlRfUFJFRF9G
T1JNQVQ1IHdoZXJlIHRoZQorLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9u
IGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KK1RFU1RfRihBU1NFUlRfUFJFRF9GT1JNQVQ1VGVzdCwg
RnVuY3Rpb25PbkJ1aWx0SW5UeXBlU3VjY2VzcykgeworICBBU1NFUlRfUFJFRF9GT1JNQVQ1KFBy
ZWRGb3JtYXRGdW5jdGlvbjUsCisgICAgICAgICAgICAgICAgICAgICAgKytuMV8sCisgICAgICAg
ICAgICAgICAgICAgICAgKytuMl8sCisgICAgICAgICAgICAgICAgICAgICAgKytuM18sCisgICAg
ICAgICAgICAgICAgICAgICAgKytuNF8sCisgICAgICAgICAgICAgICAgICAgICAgKytuNV8pOwor
ICBmaW5pc2hlZF8gPSB0cnVlOworfQorCisvLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgQVNTRVJUX1BS
RURfRk9STUFUNSB3aGVyZSB0aGUKKy8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlv
biBvbiBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4KK1RFU1RfRihBU1NFUlRfUFJFRF9GT1JN
QVQ1VGVzdCwgRnVuY3Rpb25PblVzZXJUeXBlU3VjY2VzcykgeworICBBU1NFUlRfUFJFRF9GT1JN
QVQ1KFByZWRGb3JtYXRGdW5jdGlvbjUsCisgICAgICAgICAgICAgICAgICAgICAgQm9vbCgrK24x
XyksCisgICAgICAgICAgICAgICAgICAgICAgQm9vbCgrK24yXyksCisgICAgICAgICAgICAgICAg
ICAgICAgQm9vbCgrK24zXyksCisgICAgICAgICAgICAgICAgICAgICAgQm9vbCgrK240XyksCisg
ICAgICAgICAgICAgICAgICAgICAgQm9vbCgrK241XykpOworICBmaW5pc2hlZF8gPSB0cnVlOwor
fQorCisvLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgQVNTRVJUX1BSRURfRk9STUFUNSB3aGVyZSB0aGUK
Ky8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgYnVpbHQtaW4gdHlwZSAo
aW50KS4KK1RFU1RfRihBU1NFUlRfUFJFRF9GT1JNQVQ1VGVzdCwgRnVuY3Rvck9uQnVpbHRJblR5
cGVTdWNjZXNzKSB7CisgIEFTU0VSVF9QUkVEX0ZPUk1BVDUoUHJlZEZvcm1hdEZ1bmN0b3I1KCks
CisgICAgICAgICAgICAgICAgICAgICAgKytuMV8sCisgICAgICAgICAgICAgICAgICAgICAgKytu
Ml8sCisgICAgICAgICAgICAgICAgICAgICAgKytuM18sCisgICAgICAgICAgICAgICAgICAgICAg
KytuNF8sCisgICAgICAgICAgICAgICAgICAgICAgKytuNV8pOworICBmaW5pc2hlZF8gPSB0cnVl
OworfQorCisvLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgQVNTRVJUX1BSRURfRk9STUFUNSB3aGVyZSB0
aGUKKy8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgdXNlci1kZWZpbmVk
IHR5cGUgKEJvb2wpLgorVEVTVF9GKEFTU0VSVF9QUkVEX0ZPUk1BVDVUZXN0LCBGdW5jdG9yT25V
c2VyVHlwZVN1Y2Nlc3MpIHsKKyAgQVNTRVJUX1BSRURfRk9STUFUNShQcmVkRm9ybWF0RnVuY3Rv
cjUoKSwKKyAgICAgICAgICAgICAgICAgICAgICBCb29sKCsrbjFfKSwKKyAgICAgICAgICAgICAg
ICAgICAgICBCb29sKCsrbjJfKSwKKyAgICAgICAgICAgICAgICAgICAgICBCb29sKCsrbjNfKSwK
KyAgICAgICAgICAgICAgICAgICAgICBCb29sKCsrbjRfKSwKKyAgICAgICAgICAgICAgICAgICAg
ICBCb29sKCsrbjVfKSk7CisgIGZpbmlzaGVkXyA9IHRydWU7Cit9CisKKy8vIFRlc3RzIGEgZmFp
bGVkIEFTU0VSVF9QUkVEX0ZPUk1BVDUgd2hlcmUgdGhlCisvLyBwcmVkaWNhdGUtZm9ybWF0dGVy
IGlzIGEgZnVuY3Rpb24gb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgorVEVTVF9GKEFTU0VSVF9Q
UkVEX0ZPUk1BVDVUZXN0LCBGdW5jdGlvbk9uQnVpbHRJblR5cGVGYWlsdXJlKSB7CisgIGV4cGVj
dGVkX3RvX2ZpbmlzaF8gPSBmYWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9M
SU5UCisgICAgQVNTRVJUX1BSRURfRk9STUFUNShQcmVkRm9ybWF0RnVuY3Rpb241LAorICAgICAg
ICAgICAgICAgICAgICAgICAgbjFfKyssCisgICAgICAgICAgICAgICAgICAgICAgICBuMl8rKywK
KyAgICAgICAgICAgICAgICAgICAgICAgIG4zXysrLAorICAgICAgICAgICAgICAgICAgICAgICAg
bjRfKyssCisgICAgICAgICAgICAgICAgICAgICAgICBuNV8rKyk7CisgICAgZmluaXNoZWRfID0g
dHJ1ZTsKKyAgfSwgIiIpOworfQorCisvLyBUZXN0cyBhIGZhaWxlZCBBU1NFUlRfUFJFRF9GT1JN
QVQ1IHdoZXJlIHRoZQorLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEg
dXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgorVEVTVF9GKEFTU0VSVF9QUkVEX0ZPUk1BVDVUZXN0
LCBGdW5jdGlvbk9uVXNlclR5cGVGYWlsdXJlKSB7CisgIGV4cGVjdGVkX3RvX2ZpbmlzaF8gPSBm
YWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAgQVNTRVJUX1BS
RURfRk9STUFUNShQcmVkRm9ybWF0RnVuY3Rpb241LAorICAgICAgICAgICAgICAgICAgICAgICAg
Qm9vbChuMV8rKyksCisgICAgICAgICAgICAgICAgICAgICAgICBCb29sKG4yXysrKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIEJvb2wobjNfKyspLAorICAgICAgICAgICAgICAgICAgICAgICAg
Qm9vbChuNF8rKyksCisgICAgICAgICAgICAgICAgICAgICAgICBCb29sKG41XysrKSk7CisgICAg
ZmluaXNoZWRfID0gdHJ1ZTsKKyAgfSwgIiIpOworfQorCisvLyBUZXN0cyBhIGZhaWxlZCBBU1NF
UlRfUFJFRF9GT1JNQVQ1IHdoZXJlIHRoZQorLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1
bmN0b3Igb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgorVEVTVF9GKEFTU0VSVF9QUkVEX0ZPUk1B
VDVUZXN0LCBGdW5jdG9yT25CdWlsdEluVHlwZUZhaWx1cmUpIHsKKyAgZXhwZWN0ZWRfdG9fZmlu
aXNoXyA9IGZhbHNlOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBB
U1NFUlRfUFJFRF9GT1JNQVQ1KFByZWRGb3JtYXRGdW5jdG9yNSgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgbjFfKyssCisgICAgICAgICAgICAgICAgICAgICAgICBuMl8rKywKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG4zXysrLAorICAgICAgICAgICAgICAgICAgICAgICAgbjRfKyssCisg
ICAgICAgICAgICAgICAgICAgICAgICBuNV8rKyk7CisgICAgZmluaXNoZWRfID0gdHJ1ZTsKKyAg
fSwgIiIpOworfQorCisvLyBUZXN0cyBhIGZhaWxlZCBBU1NFUlRfUFJFRF9GT1JNQVQ1IHdoZXJl
IHRoZQorLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igb24gYSB1c2VyLWRlZmlu
ZWQgdHlwZSAoQm9vbCkuCitURVNUX0YoQVNTRVJUX1BSRURfRk9STUFUNVRlc3QsIEZ1bmN0b3JP
blVzZXJUeXBlRmFpbHVyZSkgeworICBleHBlY3RlZF90b19maW5pc2hfID0gZmFsc2U7CisgIEVY
UEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEFTU0VSVF9QUkVEX0ZPUk1BVDUo
UHJlZEZvcm1hdEZ1bmN0b3I1KCksCisgICAgICAgICAgICAgICAgICAgICAgICBCb29sKG4xXysr
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wobjJfKyspLAorICAgICAgICAgICAgICAg
ICAgICAgICAgQm9vbChuM18rKyksCisgICAgICAgICAgICAgICAgICAgICAgICBCb29sKG40Xysr
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wobjVfKyspKTsKKyAgICBmaW5pc2hlZF8g
PSB0cnVlOworICB9LCAiIik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0
X3ByZW1hdHVyZV9leGl0X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X3ByZW1hdHVy
ZV9leGl0X3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2I0ZGM3ZDQzZmQ2ZjQ4YjlhZmEzMmZjZWFlNjNk
YTg1M2M2NDQxOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfcHJl
bWF0dXJlX2V4aXRfdGVzdC5jYwpAQCAtMCwwICsxLDEyNyBAQAorLy8gQ29weXJpZ2h0IDIwMTMs
IEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisv
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20g
KFpoYW55b25nIFdhbikKKy8vCisvLyBUZXN0cyB0aGF0IEdvb2dsZSBUZXN0IG1hbmlwdWxhdGVz
IHRoZSBwcmVtYXR1cmUtZXhpdC1kZXRlY3Rpb24KKy8vIGZpbGUgY29ycmVjdGx5LgorCisjaW5j
bHVkZSA8c3RkaW8uaD4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK3VzaW5nIDo6dGVz
dGluZzo6SW5pdEdvb2dsZVRlc3Q7Cit1c2luZyA6OnRlc3Rpbmc6OlRlc3Q7Cit1c2luZyA6OnRl
c3Rpbmc6OmludGVybmFsOjpwb3NpeDo6R2V0RW52OwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5h
bDo6cG9zaXg6OlN0YXQ7Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpwb3NpeDo6U3RhdFN0
cnVjdDsKKworbmFtZXNwYWNlIHsKKworY2xhc3MgUHJlbWF0dXJlRXhpdFRlc3QgOiBwdWJsaWMg
VGVzdCB7CisgcHVibGljOgorICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSBnaXZlbiBmaWxlIGV4
aXN0cy4KKyAgc3RhdGljIGJvb2wgRmlsZUV4aXN0cyhjb25zdCBjaGFyKiBmaWxlcGF0aCkgewor
ICAgIFN0YXRTdHJ1Y3Qgc3RhdDsKKyAgICByZXR1cm4gU3RhdChmaWxlcGF0aCwgJnN0YXQpID09
IDA7CisgIH0KKworIHByb3RlY3RlZDoKKyAgUHJlbWF0dXJlRXhpdFRlc3QoKSB7CisgICAgcHJl
bWF0dXJlX2V4aXRfZmlsZV9wYXRoXyA9IEdldEVudigiVEVTVF9QUkVNQVRVUkVfRVhJVF9GSUxF
Iik7CisKKyAgICAvLyBOb3JtYWxpemUgTlVMTCB0byAiIiBmb3IgZWFzZSBvZiBoYW5kbGluZy4K
KyAgICBpZiAocHJlbWF0dXJlX2V4aXRfZmlsZV9wYXRoXyA9PSBOVUxMKSB7CisgICAgICBwcmVt
YXR1cmVfZXhpdF9maWxlX3BhdGhfID0gIiI7CisgICAgfQorICB9CisKKyAgLy8gUmV0dXJucyB0
cnVlIGlmZiB0aGUgcHJlbWF0dXJlLWV4aXQgZmlsZSBleGlzdHMuCisgIGJvb2wgUHJlbWF0dXJl
RXhpdEZpbGVFeGlzdHMoKSBjb25zdCB7CisgICAgcmV0dXJuIEZpbGVFeGlzdHMocHJlbWF0dXJl
X2V4aXRfZmlsZV9wYXRoXyk7CisgIH0KKworICBjb25zdCBjaGFyKiBwcmVtYXR1cmVfZXhpdF9m
aWxlX3BhdGhfOworfTsKKwordHlwZWRlZiBQcmVtYXR1cmVFeGl0VGVzdCBQcmVtYXR1cmVFeGl0
RGVhdGhUZXN0OworCisvLyBUZXN0cyB0aGF0OgorLy8gICAtIHRoZSBwcmVtYXR1cmUtZXhpdCBm
aWxlIGV4aXN0cyBkdXJpbmcgdGhlIGV4ZWN1dGlvbiBvZiBhCisvLyAgICAgZGVhdGggdGVzdCAo
RVhQRUNUX0RFQVRIKiksIGFuZAorLy8gICAtIGEgZGVhdGggdGVzdCBkb2Vzbid0IGludGVyZmVy
ZSB3aXRoIHRoZSBtYWluIHRlc3QgcHJvY2VzcydzCisvLyAgICAgaGFuZGxpbmcgb2YgdGhlIHBy
ZW1hdHVyZS1leGl0IGZpbGUuCitURVNUX0YoUHJlbWF0dXJlRXhpdERlYXRoVGVzdCwgRmlsZUV4
aXN0c0R1cmluZ0V4ZWN1dGlvbk9mRGVhdGhUZXN0KSB7CisgIGlmICgqcHJlbWF0dXJlX2V4aXRf
ZmlsZV9wYXRoXyA9PSAnXDAnKSB7CisgICAgcmV0dXJuOworICB9CisKKyAgRVhQRUNUX0RFQVRI
X0lGX1NVUFBPUlRFRCh7CisgICAgICAvLyBJZiB0aGUgZmlsZSBleGlzdHMsIGNyYXNoIHRoZSBw
cm9jZXNzIHN1Y2ggdGhhdCB0aGUgbWFpbiB0ZXN0CisgICAgICAvLyBwcm9jZXNzIHdpbGwgY2F0
Y2ggdGhlIChleHBlY3RlZCkgY3Jhc2ggYW5kIHJlcG9ydCBhIHN1Y2Nlc3M7CisgICAgICAvLyBv
dGhlcndpc2UgZG9uJ3QgY3Jhc2gsIHdoaWNoIHdpbGwgY2F1c2UgdGhlIG1haW4gdGVzdCBwcm9j
ZXNzCisgICAgICAvLyB0byByZXBvcnQgdGhhdCB0aGUgZGVhdGggdGVzdCBoYXMgZmFpbGVkLgor
ICAgICAgaWYgKFByZW1hdHVyZUV4aXRGaWxlRXhpc3RzKCkpIHsKKyAgICAgICAgZXhpdCgxKTsK
KyAgICAgIH0KKyAgICB9LCAiIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgdGhlIHByZW1hdHVyZS1l
eGl0IGZpbGUgZXhpc3RzIGR1cmluZyB0aGUgZXhlY3V0aW9uIG9mIGEKKy8vIG5vcm1hbCAobm9u
LWRlYXRoKSB0ZXN0LgorVEVTVF9GKFByZW1hdHVyZUV4aXRUZXN0LCBQcmVtYXR1cmVFeGl0Rmls
ZUV4aXN0c0R1cmluZ1Rlc3RFeGVjdXRpb24pIHsKKyAgaWYgKCpwcmVtYXR1cmVfZXhpdF9maWxl
X3BhdGhfID09ICdcMCcpIHsKKyAgICByZXR1cm47CisgIH0KKworICBFWFBFQ1RfVFJVRShQcmVt
YXR1cmVFeGl0RmlsZUV4aXN0cygpKQorICAgICAgPDwgIiBmaWxlICIgPDwgcHJlbWF0dXJlX2V4
aXRfZmlsZV9wYXRoXworICAgICAgPDwgIiBzaG91bGQgZXhpc3QgZHVyaW5nIHRlc3QgZXhlY3V0
aW9uLCBidXQgZG9lc24ndC4iOworfQorCit9ICAvLyBuYW1lc3BhY2UKKworaW50IG1haW4oaW50
IGFyZ2MsIGNoYXIgKiphcmd2KSB7CisgIEluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKyAg
Y29uc3QgaW50IGV4aXRfY29kZSA9IFJVTl9BTExfVEVTVFMoKTsKKworICAvLyBUZXN0IHRoYXQg
dGhlIHByZW1hdHVyZS1leGl0IGZpbGUgaXMgZGVsZXRlZCB1cG9uIHJldHVybiBmcm9tCisgIC8v
IFJVTl9BTExfVEVTVFMoKS4KKyAgY29uc3QgY2hhciogY29uc3QgZmlsZXBhdGggPSBHZXRFbnYo
IlRFU1RfUFJFTUFUVVJFX0VYSVRfRklMRSIpOworICBpZiAoZmlsZXBhdGggIT0gTlVMTCAmJiAq
ZmlsZXBhdGggIT0gJ1wwJykgeworICAgIGlmIChQcmVtYXR1cmVFeGl0VGVzdDo6RmlsZUV4aXN0
cyhmaWxlcGF0aCkpIHsKKyAgICAgIHByaW50ZigKKyAgICAgICAgICAiRmlsZSAlcyBzaG91bGRu
J3QgZXhpc3QgYWZ0ZXIgdGhlIHRlc3QgcHJvZ3JhbSBmaW5pc2hlcywgYnV0IGRvZXMuIiwKKyAg
ICAgICAgICBmaWxlcGF0aCk7CisgICAgICByZXR1cm4gMTsKKyAgICB9CisgIH0KKworICByZXR1
cm4gZXhpdF9jb2RlOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9wcm9k
X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X3Byb2RfdGVzdC5jYwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wNjBhYmNlMTg3MjQ0Y2ZjNDhiM2NkNWE2Y2I4MWIzZjllYjlhZDg1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9wcm9kX3Rlc3QuY2MKQEAgLTAsMCArMSw1NyBA
QAorLy8gQ29weXJpZ2h0IDIwMDYsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisv
LyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEF1
dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKy8vCisvLyBVbml0IHRlc3QgZm9y
IGluY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJvZC5oLgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIK
KyNpbmNsdWRlICJ0ZXN0L3Byb2R1Y3Rpb24uaCIKKworLy8gVGVzdHMgdGhhdCBwcml2YXRlIG1l
bWJlcnMgY2FuIGJlIGFjY2Vzc2VkIGZyb20gYSBURVNUIGRlY2xhcmVkIGFzCisvLyBhIGZyaWVu
ZCBvZiB0aGUgY2xhc3MuCitURVNUKFByaXZhdGVDb2RlVGVzdCwgQ2FuQWNjZXNzUHJpdmF0ZU1l
bWJlcnMpIHsKKyAgUHJpdmF0ZUNvZGUgYTsKKyAgRVhQRUNUX0VRKDAsIGEueF8pOworCisgIGEu
c2V0X3goMSk7CisgIEVYUEVDVF9FUSgxLCBhLnhfKTsKK30KKwordHlwZWRlZiB0ZXN0aW5nOjpU
ZXN0IFByaXZhdGVDb2RlRml4dHVyZVRlc3Q7CisKKy8vIFRlc3RzIHRoYXQgcHJpdmF0ZSBtZW1i
ZXJzIGNhbiBiZSBhY2Nlc3NlZCBmcm9tIGEgVEVTVF9GIGRlY2xhcmVkCisvLyBhcyBhIGZyaWVu
ZCBvZiB0aGUgY2xhc3MuCitURVNUX0YoUHJpdmF0ZUNvZGVGaXh0dXJlVGVzdCwgQ2FuQWNjZXNz
UHJpdmF0ZU1lbWJlcnMpIHsKKyAgUHJpdmF0ZUNvZGUgYTsKKyAgRVhQRUNUX0VRKDAsIGEueF8p
OworCisgIGEuc2V0X3goMik7CisgIEVYUEVDVF9FUSgyLCBhLnhfKTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfcmVwZWF0X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0
L2d0ZXN0X3JlcGVhdF90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4MTAxMmFkYzI0MDU0ZjRhODFmM2U3
NDllOGQyNTc0YzM2NGQwNzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0
ZXN0X3JlcGVhdF90ZXN0LmNjCkBAIC0wLDAgKzEsMjUzIEBACisvLyBDb3B5cmlnaHQgMjAwOCwg
R29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisv
LyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
Ky8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
Ky8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAo
WmhhbnlvbmcgV2FuKQorCisvLyBUZXN0cyB0aGUgLS1ndGVzdF9yZXBlYXQ9bnVtYmVyIGZsYWcu
CisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxpb3N0cmVhbT4KKyNpbmNsdWRlICJn
dGVzdC9ndGVzdC5oIgorCisvLyBJbmRpY2F0ZXMgdGhhdCB0aGlzIHRyYW5zbGF0aW9uIHVuaXQg
aXMgcGFydCBvZiBHb29nbGUgVGVzdCdzCisvLyBpbXBsZW1lbnRhdGlvbi4gIEl0IG11c3QgY29t
ZSBiZWZvcmUgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMKKy8vIGluY2x1ZGVkLCBvciB0aGVyZSB3
aWxsIGJlIGEgY29tcGlsZXIgZXJyb3IuICBUaGlzIHRyaWNrIGlzIHRvCisvLyBwcmV2ZW50IGEg
dXNlciBmcm9tIGFjY2lkZW50YWxseSBpbmNsdWRpbmcgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaW4K
Ky8vIGhpcyBjb2RlLgorI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8gMQorI2luY2x1ZGUg
InNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKKyN1bmRlZiBHVEVTVF9JTVBMRU1FTlRBVElPTl8K
KworbmFtZXNwYWNlIHRlc3RpbmcgeworCitHVEVTVF9ERUNMQVJFX3N0cmluZ18oZGVhdGhfdGVz
dF9zdHlsZSk7CitHVEVTVF9ERUNMQVJFX3N0cmluZ18oZmlsdGVyKTsKK0dURVNUX0RFQ0xBUkVf
aW50MzJfKHJlcGVhdCk7CisKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCisKK3VzaW5nIHRlc3Rp
bmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSk7Cit1c2luZyB0ZXN0aW5nOjpHVEVTVF9G
TEFHKGZpbHRlcik7Cit1c2luZyB0ZXN0aW5nOjpHVEVTVF9GTEFHKHJlcGVhdCk7CisKK25hbWVz
cGFjZSB7CisKKy8vIFdlIG5lZWQgdGhpcyB3aGVuIHdlIGFyZSB0ZXN0aW5nIEdvb2dsZSBUZXN0
IGl0c2VsZiBhbmQgdGhlcmVmb3JlCisvLyBjYW5ub3QgdXNlIEdvb2dsZSBUZXN0IGFzc2VydGlv
bnMuCisjZGVmaW5lIEdURVNUX0NIRUNLX0lOVF9FUV8oZXhwZWN0ZWQsIGFjdHVhbCkgXAorICBk
byB7XAorICAgIGNvbnN0IGludCBleHBlY3RlZF92YWwgPSAoZXhwZWN0ZWQpO1wKKyAgICBjb25z
dCBpbnQgYWN0dWFsX3ZhbCA9IChhY3R1YWwpO1wKKyAgICBpZiAoOjp0ZXN0aW5nOjppbnRlcm5h
bDo6SXNUcnVlKGV4cGVjdGVkX3ZhbCAhPSBhY3R1YWxfdmFsKSkge1wKKyAgICAgIDo6c3RkOjpj
b3V0IDw8ICJWYWx1ZSBvZjogIiAjYWN0dWFsICJcbiJcCisgICAgICAgICAgICAgICAgICA8PCAi
ICBBY3R1YWw6ICIgPDwgYWN0dWFsX3ZhbCA8PCAiXG4iXAorICAgICAgICAgICAgICAgICAgPDwg
IkV4cGVjdGVkOiAiICNleHBlY3RlZCAiXG4iXAorICAgICAgICAgICAgICAgICAgPDwgIldoaWNo
IGlzOiAiIDw8IGV4cGVjdGVkX3ZhbCA8PCAiXG4iO1wKKyAgICAgIDo6dGVzdGluZzo6aW50ZXJu
YWw6OnBvc2l4OjpBYm9ydCgpO1wKKyAgICB9XAorICB9IHdoaWxlICg6OnRlc3Rpbmc6OmludGVy
bmFsOjpBbHdheXNGYWxzZSgpKQorCisKKy8vIFVzZWQgZm9yIHZlcmlmeWluZyB0aGF0IGdsb2Jh
bCBlbnZpcm9ubWVudCBzZXQtdXAgYW5kIHRlYXItZG93biBhcmUKKy8vIGluc2lkZSB0aGUgZ3Rl
c3RfcmVwZWF0IGxvb3AuCisKK2ludCBnX2Vudmlyb25tZW50X3NldF91cF9jb3VudCA9IDA7Citp
bnQgZ19lbnZpcm9ubWVudF90ZWFyX2Rvd25fY291bnQgPSAwOworCitjbGFzcyBNeUVudmlyb25t
ZW50IDogcHVibGljIHRlc3Rpbmc6OkVudmlyb25tZW50IHsKKyBwdWJsaWM6CisgIE15RW52aXJv
bm1lbnQoKSB7fQorICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7IGdfZW52aXJvbm1lbnRfc2V0X3Vw
X2NvdW50Kys7IH0KKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeyBnX2Vudmlyb25tZW50X3Rl
YXJfZG93bl9jb3VudCsrOyB9Cit9OworCisvLyBBIHRlc3QgdGhhdCBzaG91bGQgZmFpbC4KKwor
aW50IGdfc2hvdWxkX2ZhaWxfY291bnQgPSAwOworCitURVNUKEZvb1Rlc3QsIFNob3VsZEZhaWwp
IHsKKyAgZ19zaG91bGRfZmFpbF9jb3VudCsrOworICBFWFBFQ1RfRVEoMCwgMSkgPDwgIkV4cGVj
dGVkIGZhaWx1cmUuIjsKK30KKworLy8gQSB0ZXN0IHRoYXQgc2hvdWxkIHBhc3MuCisKK2ludCBn
X3Nob3VsZF9wYXNzX2NvdW50ID0gMDsKKworVEVTVChGb29UZXN0LCBTaG91bGRQYXNzKSB7Cisg
IGdfc2hvdWxkX3Bhc3NfY291bnQrKzsKK30KKworLy8gQSB0ZXN0IHRoYXQgY29udGFpbnMgYSB0
aHJlYWQtc2FmZSBkZWF0aCB0ZXN0IGFuZCBhIGZhc3QgZGVhdGgKKy8vIHRlc3QuICBJdCBzaG91
bGQgcGFzcy4KKworaW50IGdfZGVhdGhfdGVzdF9jb3VudCA9IDA7CisKK1RFU1QoQmFyRGVhdGhU
ZXN0LCBUaHJlYWRTYWZlQW5kRmFzdCkgeworICBnX2RlYXRoX3Rlc3RfY291bnQrKzsKKworICBH
VEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gInRocmVhZHNhZmUiOworICBFWFBFQ1RfREVB
VEhfSUZfU1VQUE9SVEVEKDo6dGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OjpBYm9ydCgpLCAiIik7
CisKKyAgR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsKKyAgRVhQRUNUX0RF
QVRIX0lGX1NVUFBPUlRFRCg6OnRlc3Rpbmc6OmludGVybmFsOjpwb3NpeDo6QWJvcnQoKSwgIiIp
OworfQorCisjaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKK2ludCBnX3BhcmFtX3Rlc3RfY291bnQg
PSAwOworCitjb25zdCBpbnQga051bWJlck9mUGFyYW1UZXN0cyA9IDEwOworCitjbGFzcyBNeVBh
cmFtVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4ge307CisKK1RFU1Rf
UChNeVBhcmFtVGVzdCwgU2hvdWxkUGFzcykgeworICAvLyBUT0RPKHZsYWRsQGdvb2dsZS5jb20p
OiBNYWtlIHBhcmFtZXRlciB2YWx1ZSBjaGVja2luZyByb2J1c3QKKyAgLy8gICAgICAgICAgICAg
ICAgICAgICAgICAgV1JUIG9yZGVyIG9mIHRlc3RzLgorICBHVEVTVF9DSEVDS19JTlRfRVFfKGdf
cGFyYW1fdGVzdF9jb3VudCAlIGtOdW1iZXJPZlBhcmFtVGVzdHMsIEdldFBhcmFtKCkpOworICBn
X3BhcmFtX3Rlc3RfY291bnQrKzsKK30KK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKE15UGFyYW1T
ZXF1ZW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIE15UGFyYW1UZXN0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdGluZzo6UmFuZ2UoMCwga051bWJlck9mUGFyYW1UZXN0cykpOwor
I2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAorCisvLyBSZXNldHMgdGhlIGNvdW50IGZv
ciBlYWNoIHRlc3QuCit2b2lkIFJlc2V0Q291bnRzKCkgeworICBnX2Vudmlyb25tZW50X3NldF91
cF9jb3VudCA9IDA7CisgIGdfZW52aXJvbm1lbnRfdGVhcl9kb3duX2NvdW50ID0gMDsKKyAgZ19z
aG91bGRfZmFpbF9jb3VudCA9IDA7CisgIGdfc2hvdWxkX3Bhc3NfY291bnQgPSAwOworICBnX2Rl
YXRoX3Rlc3RfY291bnQgPSAwOworI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCisgIGdfcGFyYW1f
dGVzdF9jb3VudCA9IDA7CisjZW5kaWYgIC8vIEdURVNUX0hBU19QQVJBTV9URVNUCit9CisKKy8v
IENoZWNrcyB0aGF0IHRoZSBjb3VudCBmb3IgZWFjaCB0ZXN0IGlzIGV4cGVjdGVkLgordm9pZCBD
aGVja0NvdW50cyhpbnQgZXhwZWN0ZWQpIHsKKyAgR1RFU1RfQ0hFQ0tfSU5UX0VRXyhleHBlY3Rl
ZCwgZ19lbnZpcm9ubWVudF9zZXRfdXBfY291bnQpOworICBHVEVTVF9DSEVDS19JTlRfRVFfKGV4
cGVjdGVkLCBnX2Vudmlyb25tZW50X3RlYXJfZG93bl9jb3VudCk7CisgIEdURVNUX0NIRUNLX0lO
VF9FUV8oZXhwZWN0ZWQsIGdfc2hvdWxkX2ZhaWxfY291bnQpOworICBHVEVTVF9DSEVDS19JTlRf
RVFfKGV4cGVjdGVkLCBnX3Nob3VsZF9wYXNzX2NvdW50KTsKKyAgR1RFU1RfQ0hFQ0tfSU5UX0VR
XyhleHBlY3RlZCwgZ19kZWF0aF90ZXN0X2NvdW50KTsKKyNpZiBHVEVTVF9IQVNfUEFSQU1fVEVT
VAorICBHVEVTVF9DSEVDS19JTlRfRVFfKGV4cGVjdGVkICoga051bWJlck9mUGFyYW1UZXN0cywg
Z19wYXJhbV90ZXN0X2NvdW50KTsKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKK30K
KworLy8gVGVzdHMgdGhlIGJlaGF2aW9yIG9mIEdvb2dsZSBUZXN0IHdoZW4gLS1ndGVzdF9yZXBl
YXQgaXMgbm90IHNwZWNpZmllZC4KK3ZvaWQgVGVzdFJlcGVhdFVuc3BlY2lmaWVkKCkgeworICBS
ZXNldENvdW50cygpOworICBHVEVTVF9DSEVDS19JTlRfRVFfKDEsIFJVTl9BTExfVEVTVFMoKSk7
CisgIENoZWNrQ291bnRzKDEpOworfQorCisvLyBUZXN0cyB0aGUgYmVoYXZpb3Igb2YgR29vZ2xl
IFRlc3Qgd2hlbiAtLWd0ZXN0X3JlcGVhdCBoYXMgdGhlIGdpdmVuIHZhbHVlLgordm9pZCBUZXN0
UmVwZWF0KGludCByZXBlYXQpIHsKKyAgR1RFU1RfRkxBRyhyZXBlYXQpID0gcmVwZWF0OworCisg
IFJlc2V0Q291bnRzKCk7CisgIEdURVNUX0NIRUNLX0lOVF9FUV8ocmVwZWF0ID4gMCA/IDEgOiAw
LCBSVU5fQUxMX1RFU1RTKCkpOworICBDaGVja0NvdW50cyhyZXBlYXQpOworfQorCisvLyBUZXN0
cyB1c2luZyAtLWd0ZXN0X3JlcGVhdCB3aGVuIC0tZ3Rlc3RfZmlsdGVyIHNwZWNpZmllcyBhbiBl
bXB0eQorLy8gc2V0IG9mIHRlc3RzLgordm9pZCBUZXN0UmVwZWF0V2l0aEVtcHR5RmlsdGVyKGlu
dCByZXBlYXQpIHsKKyAgR1RFU1RfRkxBRyhyZXBlYXQpID0gcmVwZWF0OworICBHVEVTVF9GTEFH
KGZpbHRlcikgPSAiTm9uZSI7CisKKyAgUmVzZXRDb3VudHMoKTsKKyAgR1RFU1RfQ0hFQ0tfSU5U
X0VRXygwLCBSVU5fQUxMX1RFU1RTKCkpOworICBDaGVja0NvdW50cygwKTsKK30KKworLy8gVGVz
dHMgdXNpbmcgLS1ndGVzdF9yZXBlYXQgd2hlbiAtLWd0ZXN0X2ZpbHRlciBzcGVjaWZpZXMgYSBz
ZXQgb2YKKy8vIHN1Y2Nlc3NmdWwgdGVzdHMuCit2b2lkIFRlc3RSZXBlYXRXaXRoRmlsdGVyRm9y
U3VjY2Vzc2Z1bFRlc3RzKGludCByZXBlYXQpIHsKKyAgR1RFU1RfRkxBRyhyZXBlYXQpID0gcmVw
ZWF0OworICBHVEVTVF9GTEFHKGZpbHRlcikgPSAiKi0qU2hvdWxkRmFpbCI7CisKKyAgUmVzZXRD
b3VudHMoKTsKKyAgR1RFU1RfQ0hFQ0tfSU5UX0VRXygwLCBSVU5fQUxMX1RFU1RTKCkpOworICBH
VEVTVF9DSEVDS19JTlRfRVFfKHJlcGVhdCwgZ19lbnZpcm9ubWVudF9zZXRfdXBfY291bnQpOwor
ICBHVEVTVF9DSEVDS19JTlRfRVFfKHJlcGVhdCwgZ19lbnZpcm9ubWVudF90ZWFyX2Rvd25fY291
bnQpOworICBHVEVTVF9DSEVDS19JTlRfRVFfKDAsIGdfc2hvdWxkX2ZhaWxfY291bnQpOworICBH
VEVTVF9DSEVDS19JTlRfRVFfKHJlcGVhdCwgZ19zaG91bGRfcGFzc19jb3VudCk7CisgIEdURVNU
X0NIRUNLX0lOVF9FUV8ocmVwZWF0LCBnX2RlYXRoX3Rlc3RfY291bnQpOworI2lmIEdURVNUX0hB
U19QQVJBTV9URVNUCisgIEdURVNUX0NIRUNLX0lOVF9FUV8ocmVwZWF0ICoga051bWJlck9mUGFy
YW1UZXN0cywgZ19wYXJhbV90ZXN0X2NvdW50KTsKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFN
X1RFU1QKK30KKworLy8gVGVzdHMgdXNpbmcgLS1ndGVzdF9yZXBlYXQgd2hlbiAtLWd0ZXN0X2Zp
bHRlciBzcGVjaWZpZXMgYSBzZXQgb2YKKy8vIGZhaWxlZCB0ZXN0cy4KK3ZvaWQgVGVzdFJlcGVh
dFdpdGhGaWx0ZXJGb3JGYWlsZWRUZXN0cyhpbnQgcmVwZWF0KSB7CisgIEdURVNUX0ZMQUcocmVw
ZWF0KSA9IHJlcGVhdDsKKyAgR1RFU1RfRkxBRyhmaWx0ZXIpID0gIipTaG91bGRGYWlsIjsKKwor
ICBSZXNldENvdW50cygpOworICBHVEVTVF9DSEVDS19JTlRfRVFfKDEsIFJVTl9BTExfVEVTVFMo
KSk7CisgIEdURVNUX0NIRUNLX0lOVF9FUV8ocmVwZWF0LCBnX2Vudmlyb25tZW50X3NldF91cF9j
b3VudCk7CisgIEdURVNUX0NIRUNLX0lOVF9FUV8ocmVwZWF0LCBnX2Vudmlyb25tZW50X3RlYXJf
ZG93bl9jb3VudCk7CisgIEdURVNUX0NIRUNLX0lOVF9FUV8ocmVwZWF0LCBnX3Nob3VsZF9mYWls
X2NvdW50KTsKKyAgR1RFU1RfQ0hFQ0tfSU5UX0VRXygwLCBnX3Nob3VsZF9wYXNzX2NvdW50KTsK
KyAgR1RFU1RfQ0hFQ0tfSU5UX0VRXygwLCBnX2RlYXRoX3Rlc3RfY291bnQpOworI2lmIEdURVNU
X0hBU19QQVJBTV9URVNUCisgIEdURVNUX0NIRUNLX0lOVF9FUV8oMCwgZ19wYXJhbV90ZXN0X2Nv
dW50KTsKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKK30KKworfSAgLy8gbmFtZXNw
YWNlCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgeworICB0ZXN0aW5nOjpJbml0
R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisgIHRlc3Rpbmc6OkFkZEdsb2JhbFRlc3RFbnZpcm9u
bWVudChuZXcgTXlFbnZpcm9ubWVudCk7CisKKyAgVGVzdFJlcGVhdFVuc3BlY2lmaWVkKCk7Cisg
IFRlc3RSZXBlYXQoMCk7CisgIFRlc3RSZXBlYXQoMSk7CisgIFRlc3RSZXBlYXQoNSk7CisKKyAg
VGVzdFJlcGVhdFdpdGhFbXB0eUZpbHRlcigyKTsKKyAgVGVzdFJlcGVhdFdpdGhFbXB0eUZpbHRl
cigzKTsKKworICBUZXN0UmVwZWF0V2l0aEZpbHRlckZvclN1Y2Nlc3NmdWxUZXN0cygzKTsKKwor
ICBUZXN0UmVwZWF0V2l0aEZpbHRlckZvckZhaWxlZFRlc3RzKDQpOworCisgIC8vIEl0IHdvdWxk
IGJlIG5pY2UgdG8gdmVyaWZ5IHRoYXQgdGhlIHRlc3RzIGluZGVlZCBsb29wIGZvcmV2ZXIKKyAg
Ly8gd2hlbiBHVEVTVF9GTEFHKHJlcGVhdCkgaXMgbmVnYXRpdmUsIGJ1dCB0aGlzIHRlc3Qgd2ls
bCBiZSBxdWl0ZQorICAvLyBjb21wbGljYXRlZCB0byB3cml0ZS4gIFNpbmNlIHRoaXMgZmxhZyBp
cyBmb3IgaW50ZXJhY3RpdmUKKyAgLy8gZGVidWdnaW5nIG9ubHkgYW5kIGRvZXNuJ3QgYWZmZWN0
IHRoZSBub3JtYWwgdGVzdCByZXN1bHQsIHN1Y2ggYQorICAvLyB0ZXN0IHdvdWxkIGJlIGFuIG92
ZXJraWxsLgorCisgIHByaW50ZigiUEFTU1xuIik7CisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9zaHVmZmxlX3Rlc3QucHkgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90
ZXN0L2d0ZXN0X3NodWZmbGVfdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMGQwMzAzZDE5MzU1NGE1ZmQw
YjliMWY2YTUxZWY3ZDA5ZjMwNjEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVz
dC9ndGVzdF9zaHVmZmxlX3Rlc3QucHkKQEAgLTAsMCArMSwzMjUgQEAKKyMhL3Vzci9iaW4vZW52
IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAwOSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJp
YnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiVmVyaWZpZXMgdGhhdCB0ZXN0IHNodWZmbGlu
ZyB3b3Jrcy4iIiIKKworX19hdXRob3JfXyA9ICd3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2Fu
KScKKworaW1wb3J0IG9zCitpbXBvcnQgZ3Rlc3RfdGVzdF91dGlscworCisjIENvbW1hbmQgdG8g
cnVuIHRoZSBndGVzdF9zaHVmZmxlX3Rlc3RfIHByb2dyYW0uCitDT01NQU5EID0gZ3Rlc3RfdGVz
dF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoJ2d0ZXN0X3NodWZmbGVfdGVzdF8nKQorCisj
IFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHRlc3Qgc2hhcmRpbmcuCitUT1RBTF9TSEFS
RFNfRU5WX1ZBUiA9ICdHVEVTVF9UT1RBTF9TSEFSRFMnCitTSEFSRF9JTkRFWF9FTlZfVkFSID0g
J0dURVNUX1NIQVJEX0lOREVYJworCitURVNUX0ZJTFRFUiA9ICdBKi5BOkEqLkI6QyonCisKK0FM
TF9URVNUUyA9IFtdCitBQ1RJVkVfVEVTVFMgPSBbXQorRklMVEVSRURfVEVTVFMgPSBbXQorU0hB
UkRFRF9URVNUUyA9IFtdCisKK1NIVUZGTEVEX0FMTF9URVNUUyA9IFtdCitTSFVGRkxFRF9BQ1RJ
VkVfVEVTVFMgPSBbXQorU0hVRkZMRURfRklMVEVSRURfVEVTVFMgPSBbXQorU0hVRkZMRURfU0hB
UkRFRF9URVNUUyA9IFtdCisKKworZGVmIEFsc29SdW5EaXNhYmxlZFRlc3RzRmxhZygpOgorICBy
ZXR1cm4gJy0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMnCisKKworZGVmIEZpbHRlckZs
YWcodGVzdF9maWx0ZXIpOgorICByZXR1cm4gJy0tZ3Rlc3RfZmlsdGVyPSVzJyAlICh0ZXN0X2Zp
bHRlciwpCisKKworZGVmIFJlcGVhdEZsYWcobik6CisgIHJldHVybiAnLS1ndGVzdF9yZXBlYXQ9
JXMnICUgKG4sKQorCisKK2RlZiBTaHVmZmxlRmxhZygpOgorICByZXR1cm4gJy0tZ3Rlc3Rfc2h1
ZmZsZScKKworCitkZWYgUmFuZG9tU2VlZEZsYWcobik6CisgIHJldHVybiAnLS1ndGVzdF9yYW5k
b21fc2VlZD0lcycgJSAobiwpCisKKworZGVmIFJ1bkFuZFJldHVybk91dHB1dChleHRyYV9lbnYs
IGFyZ3MpOgorICAiIiJSdW5zIHRoZSB0ZXN0IHByb2dyYW0gYW5kIHJldHVybnMgaXRzIG91dHB1
dC4iIiIKKworICBlbnZpcm9uX2NvcHkgPSBvcy5lbnZpcm9uLmNvcHkoKQorICBlbnZpcm9uX2Nv
cHkudXBkYXRlKGV4dHJhX2VudikKKworICByZXR1cm4gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9j
ZXNzKFtDT01NQU5EXSArIGFyZ3MsIGVudj1lbnZpcm9uX2NvcHkpLm91dHB1dAorCisKK2RlZiBH
ZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoZXh0cmFfZW52LCBhcmdzKToKKyAgIiIiUnVucyB0aGUg
dGVzdCBwcm9ncmFtIGFuZCByZXR1cm5zIGEgbGlzdCBvZiB0ZXN0IGxpc3RzLgorCisgIEFyZ3M6
CisgICAgZXh0cmFfZW52OiBhIG1hcCBmcm9tIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byB0aGVp
ciB2YWx1ZXMKKyAgICBhcmdzOiBjb21tYW5kIGxpbmUgZmxhZ3MgdG8gcGFzcyB0byBndGVzdF9z
aHVmZmxlX3Rlc3RfCisKKyAgUmV0dXJuczoKKyAgICBBIGxpc3Qgd2hlcmUgdGhlIGktdGggZWxl
bWVudCBpcyB0aGUgbGlzdCBvZiB0ZXN0cyBydW4gaW4gdGhlIGktdGgKKyAgICB0ZXN0IGl0ZXJh
dGlvbi4KKyAgIiIiCisKKyAgdGVzdF9pdGVyYXRpb25zID0gW10KKyAgZm9yIGxpbmUgaW4gUnVu
QW5kUmV0dXJuT3V0cHV0KGV4dHJhX2VudiwgYXJncykuc3BsaXQoJ1xuJyk6CisgICAgaWYgbGlu
ZS5zdGFydHN3aXRoKCctLS0tJyk6CisgICAgICB0ZXN0cyA9IFtdCisgICAgICB0ZXN0X2l0ZXJh
dGlvbnMuYXBwZW5kKHRlc3RzKQorICAgIGVsaWYgbGluZS5zdHJpcCgpOgorICAgICAgdGVzdHMu
YXBwZW5kKGxpbmUuc3RyaXAoKSkgICMgJ1Rlc3RDYXNlTmFtZS5UZXN0TmFtZScKKworICByZXR1
cm4gdGVzdF9pdGVyYXRpb25zCisKKworZGVmIEdldFRlc3RDYXNlcyh0ZXN0cyk6CisgICIiIlJl
dHVybnMgYSBsaXN0IG9mIHRlc3QgY2FzZXMgaW4gdGhlIGdpdmVuIGZ1bGwgdGVzdCBuYW1lcy4K
KworICBBcmdzOgorICAgIHRlc3RzOiBhIGxpc3Qgb2YgZnVsbCB0ZXN0IG5hbWVzCisKKyAgUmV0
dXJuczoKKyAgICBBIGxpc3Qgb2YgdGVzdCBjYXNlcyBmcm9tICd0ZXN0cycsIGluIHRoZWlyIG9y
aWdpbmFsIG9yZGVyLgorICAgIENvbnNlY3V0aXZlIGR1cGxpY2F0ZXMgYXJlIHJlbW92ZWQuCisg
ICIiIgorCisgIHRlc3RfY2FzZXMgPSBbXQorICBmb3IgdGVzdCBpbiB0ZXN0czoKKyAgICB0ZXN0
X2Nhc2UgPSB0ZXN0LnNwbGl0KCcuJylbMF0KKyAgICBpZiBub3QgdGVzdF9jYXNlIGluIHRlc3Rf
Y2FzZXM6CisgICAgICB0ZXN0X2Nhc2VzLmFwcGVuZCh0ZXN0X2Nhc2UpCisKKyAgcmV0dXJuIHRl
c3RfY2FzZXMKKworCitkZWYgQ2FsY3VsYXRlVGVzdExpc3RzKCk6CisgICIiIkNhbGN1bGF0ZXMg
dGhlIGxpc3Qgb2YgdGVzdHMgcnVuIHVuZGVyIGRpZmZlcmVudCBmbGFncy4iIiIKKworICBpZiBu
b3QgQUxMX1RFU1RTOgorICAgIEFMTF9URVNUUy5leHRlbmQoCisgICAgICAgIEdldFRlc3RzRm9y
QWxsSXRlcmF0aW9ucyh7fSwgW0Fsc29SdW5EaXNhYmxlZFRlc3RzRmxhZygpXSlbMF0pCisKKyAg
aWYgbm90IEFDVElWRV9URVNUUzoKKyAgICBBQ1RJVkVfVEVTVFMuZXh0ZW5kKEdldFRlc3RzRm9y
QWxsSXRlcmF0aW9ucyh7fSwgW10pWzBdKQorCisgIGlmIG5vdCBGSUxURVJFRF9URVNUUzoKKyAg
ICBGSUxURVJFRF9URVNUUy5leHRlbmQoCisgICAgICAgIEdldFRlc3RzRm9yQWxsSXRlcmF0aW9u
cyh7fSwgW0ZpbHRlckZsYWcoVEVTVF9GSUxURVIpXSlbMF0pCisKKyAgaWYgbm90IFNIQVJERURf
VEVTVFM6CisgICAgU0hBUkRFRF9URVNUUy5leHRlbmQoCisgICAgICAgIEdldFRlc3RzRm9yQWxs
SXRlcmF0aW9ucyh7VE9UQUxfU0hBUkRTX0VOVl9WQVI6ICczJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTSEFSRF9JTkRFWF9FTlZfVkFSOiAnMSd9LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgW10pWzBdKQorCisgIGlmIG5vdCBTSFVGRkxFRF9BTExfVEVT
VFM6CisgICAgU0hVRkZMRURfQUxMX1RFU1RTLmV4dGVuZChHZXRUZXN0c0ZvckFsbEl0ZXJhdGlv
bnMoCisgICAgICAgIHt9LCBbQWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnKCksIFNodWZmbGVGbGFn
KCksIFJhbmRvbVNlZWRGbGFnKDEpXSlbMF0pCisKKyAgaWYgbm90IFNIVUZGTEVEX0FDVElWRV9U
RVNUUzoKKyAgICBTSFVGRkxFRF9BQ1RJVkVfVEVTVFMuZXh0ZW5kKEdldFRlc3RzRm9yQWxsSXRl
cmF0aW9ucygKKyAgICAgICAge30sIFtTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygxKV0p
WzBdKQorCisgIGlmIG5vdCBTSFVGRkxFRF9GSUxURVJFRF9URVNUUzoKKyAgICBTSFVGRkxFRF9G
SUxURVJFRF9URVNUUy5leHRlbmQoR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKAorICAgICAgICB7
fSwgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDEpLCBGaWx0ZXJGbGFnKFRFU1RfRklM
VEVSKV0pWzBdKQorCisgIGlmIG5vdCBTSFVGRkxFRF9TSEFSREVEX1RFU1RTOgorICAgIFNIVUZG
TEVEX1NIQVJERURfVEVTVFMuZXh0ZW5kKAorICAgICAgICBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlv
bnMoe1RPVEFMX1NIQVJEU19FTlZfVkFSOiAnMycsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU0hBUkRfSU5ERVhfRU5WX1ZBUjogJzEnfSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFtTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygxKV0pWzBdKQorCisK
K2NsYXNzIEdUZXN0U2h1ZmZsZVVuaXRUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgor
ICAiIiJUZXN0cyB0ZXN0IHNodWZmbGluZy4iIiIKKworICBkZWYgc2V0VXAoc2VsZik6CisgICAg
Q2FsY3VsYXRlVGVzdExpc3RzKCkKKworICBkZWYgdGVzdFNodWZmbGVQcmVzZXJ2ZXNOdW1iZXJP
ZlRlc3RzKHNlbGYpOgorICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKEFMTF9URVNUUyksIGxlbihT
SFVGRkxFRF9BTExfVEVTVFMpKQorICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKEFDVElWRV9URVNU
UyksIGxlbihTSFVGRkxFRF9BQ1RJVkVfVEVTVFMpKQorICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVu
KEZJTFRFUkVEX1RFU1RTKSwgbGVuKFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTKSkKKyAgICBzZWxm
LmFzc2VydEVxdWFsKGxlbihTSEFSREVEX1RFU1RTKSwgbGVuKFNIVUZGTEVEX1NIQVJERURfVEVT
VFMpKQorCisgIGRlZiB0ZXN0U2h1ZmZsZUNoYW5nZXNUZXN0T3JkZXIoc2VsZik6CisgICAgc2Vs
Zi5hc3NlcnRfKFNIVUZGTEVEX0FMTF9URVNUUyAhPSBBTExfVEVTVFMsIFNIVUZGTEVEX0FMTF9U
RVNUUykKKyAgICBzZWxmLmFzc2VydF8oU0hVRkZMRURfQUNUSVZFX1RFU1RTICE9IEFDVElWRV9U
RVNUUywgU0hVRkZMRURfQUNUSVZFX1RFU1RTKQorICAgIHNlbGYuYXNzZXJ0XyhTSFVGRkxFRF9G
SUxURVJFRF9URVNUUyAhPSBGSUxURVJFRF9URVNUUywKKyAgICAgICAgICAgICAgICAgU0hVRkZM
RURfRklMVEVSRURfVEVTVFMpCisgICAgc2VsZi5hc3NlcnRfKFNIVUZGTEVEX1NIQVJERURfVEVT
VFMgIT0gU0hBUkRFRF9URVNUUywKKyAgICAgICAgICAgICAgICAgU0hVRkZMRURfU0hBUkRFRF9U
RVNUUykKKworICBkZWYgdGVzdFNodWZmbGVDaGFuZ2VzVGVzdENhc2VPcmRlcihzZWxmKToKKyAg
ICBzZWxmLmFzc2VydF8oR2V0VGVzdENhc2VzKFNIVUZGTEVEX0FMTF9URVNUUykgIT0gR2V0VGVz
dENhc2VzKEFMTF9URVNUUyksCisgICAgICAgICAgICAgICAgIEdldFRlc3RDYXNlcyhTSFVGRkxF
RF9BTExfVEVTVFMpKQorICAgIHNlbGYuYXNzZXJ0XygKKyAgICAgICAgR2V0VGVzdENhc2VzKFNI
VUZGTEVEX0FDVElWRV9URVNUUykgIT0gR2V0VGVzdENhc2VzKEFDVElWRV9URVNUUyksCisgICAg
ICAgIEdldFRlc3RDYXNlcyhTSFVGRkxFRF9BQ1RJVkVfVEVTVFMpKQorICAgIHNlbGYuYXNzZXJ0
XygKKyAgICAgICAgR2V0VGVzdENhc2VzKFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTKSAhPSBHZXRU
ZXN0Q2FzZXMoRklMVEVSRURfVEVTVFMpLAorICAgICAgICBHZXRUZXN0Q2FzZXMoU0hVRkZMRURf
RklMVEVSRURfVEVTVFMpKQorICAgIHNlbGYuYXNzZXJ0XygKKyAgICAgICAgR2V0VGVzdENhc2Vz
KFNIVUZGTEVEX1NIQVJERURfVEVTVFMpICE9IEdldFRlc3RDYXNlcyhTSEFSREVEX1RFU1RTKSwK
KyAgICAgICAgR2V0VGVzdENhc2VzKFNIVUZGTEVEX1NIQVJERURfVEVTVFMpKQorCisgIGRlZiB0
ZXN0U2h1ZmZsZURvZXNOb3RSZXBlYXRUZXN0KHNlbGYpOgorICAgIGZvciB0ZXN0IGluIFNIVUZG
TEVEX0FMTF9URVNUUzoKKyAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgU0hVRkZMRURfQUxMX1RF
U1RTLmNvdW50KHRlc3QpLAorICAgICAgICAgICAgICAgICAgICAgICAnJXMgYXBwZWFycyBtb3Jl
IHRoYW4gb25jZScgJSAodGVzdCwpKQorICAgIGZvciB0ZXN0IGluIFNIVUZGTEVEX0FDVElWRV9U
RVNUUzoKKyAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgU0hVRkZMRURfQUNUSVZFX1RFU1RTLmNv
dW50KHRlc3QpLAorICAgICAgICAgICAgICAgICAgICAgICAnJXMgYXBwZWFycyBtb3JlIHRoYW4g
b25jZScgJSAodGVzdCwpKQorICAgIGZvciB0ZXN0IGluIFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RT
OgorICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBTSFVGRkxFRF9GSUxURVJFRF9URVNUUy5jb3Vu
dCh0ZXN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgJyVzIGFwcGVhcnMgbW9yZSB0aGFuIG9u
Y2UnICUgKHRlc3QsKSkKKyAgICBmb3IgdGVzdCBpbiBTSFVGRkxFRF9TSEFSREVEX1RFU1RTOgor
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBTSFVGRkxFRF9TSEFSREVEX1RFU1RTLmNvdW50KHRl
c3QpLAorICAgICAgICAgICAgICAgICAgICAgICAnJXMgYXBwZWFycyBtb3JlIHRoYW4gb25jZScg
JSAodGVzdCwpKQorCisgIGRlZiB0ZXN0U2h1ZmZsZURvZXNOb3RDcmVhdGVOZXdUZXN0KHNlbGYp
OgorICAgIGZvciB0ZXN0IGluIFNIVUZGTEVEX0FMTF9URVNUUzoKKyAgICAgIHNlbGYuYXNzZXJ0
Xyh0ZXN0IGluIEFMTF9URVNUUywgJyVzIGlzIGFuIGludmFsaWQgdGVzdCcgJSAodGVzdCwpKQor
ICAgIGZvciB0ZXN0IGluIFNIVUZGTEVEX0FDVElWRV9URVNUUzoKKyAgICAgIHNlbGYuYXNzZXJ0
Xyh0ZXN0IGluIEFDVElWRV9URVNUUywgJyVzIGlzIGFuIGludmFsaWQgdGVzdCcgJSAodGVzdCwp
KQorICAgIGZvciB0ZXN0IGluIFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTOgorICAgICAgc2VsZi5h
c3NlcnRfKHRlc3QgaW4gRklMVEVSRURfVEVTVFMsICclcyBpcyBhbiBpbnZhbGlkIHRlc3QnICUg
KHRlc3QsKSkKKyAgICBmb3IgdGVzdCBpbiBTSFVGRkxFRF9TSEFSREVEX1RFU1RTOgorICAgICAg
c2VsZi5hc3NlcnRfKHRlc3QgaW4gU0hBUkRFRF9URVNUUywgJyVzIGlzIGFuIGludmFsaWQgdGVz
dCcgJSAodGVzdCwpKQorCisgIGRlZiB0ZXN0U2h1ZmZsZUluY2x1ZGVzQWxsVGVzdHMoc2VsZik6
CisgICAgZm9yIHRlc3QgaW4gQUxMX1RFU1RTOgorICAgICAgc2VsZi5hc3NlcnRfKHRlc3QgaW4g
U0hVRkZMRURfQUxMX1RFU1RTLCAnJXMgaXMgbWlzc2luZycgJSAodGVzdCwpKQorICAgIGZvciB0
ZXN0IGluIEFDVElWRV9URVNUUzoKKyAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0IGluIFNIVUZGTEVE
X0FDVElWRV9URVNUUywgJyVzIGlzIG1pc3NpbmcnICUgKHRlc3QsKSkKKyAgICBmb3IgdGVzdCBp
biBGSUxURVJFRF9URVNUUzoKKyAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0IGluIFNIVUZGTEVEX0ZJ
TFRFUkVEX1RFU1RTLCAnJXMgaXMgbWlzc2luZycgJSAodGVzdCwpKQorICAgIGZvciB0ZXN0IGlu
IFNIQVJERURfVEVTVFM6CisgICAgICBzZWxmLmFzc2VydF8odGVzdCBpbiBTSFVGRkxFRF9TSEFS
REVEX1RFU1RTLCAnJXMgaXMgbWlzc2luZycgJSAodGVzdCwpKQorCisgIGRlZiB0ZXN0U2h1ZmZs
ZUxlYXZlc0RlYXRoVGVzdHNBdEZyb250KHNlbGYpOgorICAgIG5vbl9kZWF0aF90ZXN0X2ZvdW5k
ID0gRmFsc2UKKyAgICBmb3IgdGVzdCBpbiBTSFVGRkxFRF9BQ1RJVkVfVEVTVFM6CisgICAgICBp
ZiAnRGVhdGhUZXN0LicgaW4gdGVzdDoKKyAgICAgICAgc2VsZi5hc3NlcnRfKG5vdCBub25fZGVh
dGhfdGVzdF9mb3VuZCwKKyAgICAgICAgICAgICAgICAgICAgICclcyBhcHBlYXJzIGFmdGVyIGEg
bm9uLWRlYXRoIHRlc3QnICUgKHRlc3QsKSkKKyAgICAgIGVsc2U6CisgICAgICAgIG5vbl9kZWF0
aF90ZXN0X2ZvdW5kID0gVHJ1ZQorCisgIGRlZiBfVmVyaWZ5VGVzdENhc2VzRG9Ob3RJbnRlcmxl
YXZlKHNlbGYsIHRlc3RzKToKKyAgICB0ZXN0X2Nhc2VzID0gW10KKyAgICBmb3IgdGVzdCBpbiB0
ZXN0czoKKyAgICAgIFt0ZXN0X2Nhc2UsIF9dID0gdGVzdC5zcGxpdCgnLicpCisgICAgICBpZiB0
ZXN0X2Nhc2VzIGFuZCB0ZXN0X2Nhc2VzWy0xXSAhPSB0ZXN0X2Nhc2U6CisgICAgICAgIHRlc3Rf
Y2FzZXMuYXBwZW5kKHRlc3RfY2FzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCB0ZXN0
X2Nhc2VzLmNvdW50KHRlc3RfY2FzZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1Rlc3Qg
Y2FzZSAlcyBpcyBub3QgZ3JvdXBlZCB0b2dldGhlciBpbiAlcycgJQorICAgICAgICAgICAgICAg
ICAgICAgICAgICh0ZXN0X2Nhc2UsIHRlc3RzKSkKKworICBkZWYgdGVzdFNodWZmbGVEb2VzTm90
SW50ZXJsZWF2ZVRlc3RDYXNlcyhzZWxmKToKKyAgICBzZWxmLl9WZXJpZnlUZXN0Q2FzZXNEb05v
dEludGVybGVhdmUoU0hVRkZMRURfQUxMX1RFU1RTKQorICAgIHNlbGYuX1ZlcmlmeVRlc3RDYXNl
c0RvTm90SW50ZXJsZWF2ZShTSFVGRkxFRF9BQ1RJVkVfVEVTVFMpCisgICAgc2VsZi5fVmVyaWZ5
VGVzdENhc2VzRG9Ob3RJbnRlcmxlYXZlKFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTKQorICAgIHNl
bGYuX1ZlcmlmeVRlc3RDYXNlc0RvTm90SW50ZXJsZWF2ZShTSFVGRkxFRF9TSEFSREVEX1RFU1RT
KQorCisgIGRlZiB0ZXN0U2h1ZmZsZVJlc3RvcmVzT3JkZXJBZnRlckVhY2hJdGVyYXRpb24oc2Vs
Zik6CisgICAgIyBHZXQgdGhlIHRlc3QgbGlzdHMgaW4gYWxsIDMgaXRlcmF0aW9ucywgdXNpbmcg
cmFuZG9tIHNlZWQgMSwgMiwKKyAgICAjIGFuZCAzIHJlc3BlY3RpdmVseS4gIEdvb2dsZSBUZXN0
IHBpY2tzIGEgZGlmZmVyZW50IHNlZWQgaW4gZWFjaAorICAgICMgaXRlcmF0aW9uLCBhbmQgdGhp
cyB0ZXN0IGRlcGVuZHMgb24gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24KKyAgICAjIHBpY2tp
bmcgc3VjY2Vzc2l2ZSBudW1iZXJzLiAgVGhpcyBkZXBlbmRlbmN5IGlzIG5vdCBpZGVhbCwgYnV0
CisgICAgIyBtYWtlcyB0aGUgdGVzdCBtdWNoIGVhc2llciB0byB3cml0ZS4KKyAgICBbdGVzdHNf
aW5faXRlcmF0aW9uMSwgdGVzdHNfaW5faXRlcmF0aW9uMiwgdGVzdHNfaW5faXRlcmF0aW9uM10g
PSAoCisgICAgICAgIEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucygKKyAgICAgICAgICAgIHt9LCBb
U2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWcoMSksIFJlcGVhdEZsYWcoMyldKSkKKworICAg
ICMgTWFrZSBzdXJlIHJ1bm5pbmcgdGhlIHRlc3RzIHdpdGggcmFuZG9tIHNlZWQgMSBnZXRzIHRo
ZSBzYW1lCisgICAgIyBvcmRlciBhcyBpbiBpdGVyYXRpb24gMSBhYm92ZS4KKyAgICBbdGVzdHNf
d2l0aF9zZWVkMV0gPSBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCisgICAgICAgIHt9LCBbU2h1
ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWcoMSldKQorICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVz
dHNfaW5faXRlcmF0aW9uMSwgdGVzdHNfd2l0aF9zZWVkMSkKKworICAgICMgTWFrZSBzdXJlIHJ1
bm5pbmcgdGhlIHRlc3RzIHdpdGggcmFuZG9tIHNlZWQgMiBnZXRzIHRoZSBzYW1lCisgICAgIyBv
cmRlciBhcyBpbiBpdGVyYXRpb24gMiBhYm92ZS4gIFN1Y2Nlc3MgbWVhbnMgdGhhdCBHb29nbGUg
VGVzdAorICAgICMgY29ycmVjdGx5IHJlc3RvcmVzIHRoZSB0ZXN0IG9yZGVyIGJlZm9yZSByZS1z
aHVmZmxpbmcgYXQgdGhlCisgICAgIyBiZWdpbm5pbmcgb2YgaXRlcmF0aW9uIDIuCisgICAgW3Rl
c3RzX3dpdGhfc2VlZDJdID0gR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKAorICAgICAgICB7fSwg
W1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDIpXSkKKyAgICBzZWxmLmFzc2VydEVxdWFs
KHRlc3RzX2luX2l0ZXJhdGlvbjIsIHRlc3RzX3dpdGhfc2VlZDIpCisKKyAgICAjIE1ha2Ugc3Vy
ZSBydW5uaW5nIHRoZSB0ZXN0cyB3aXRoIHJhbmRvbSBzZWVkIDMgZ2V0cyB0aGUgc2FtZQorICAg
ICMgb3JkZXIgYXMgaW4gaXRlcmF0aW9uIDMgYWJvdmUuICBTdWNjZXNzIG1lYW5zIHRoYXQgR29v
Z2xlIFRlc3QKKyAgICAjIGNvcnJlY3RseSByZXN0b3JlcyB0aGUgdGVzdCBvcmRlciBiZWZvcmUg
cmUtc2h1ZmZsaW5nIGF0IHRoZQorICAgICMgYmVnaW5uaW5nIG9mIGl0ZXJhdGlvbiAzLgorICAg
IFt0ZXN0c193aXRoX3NlZWQzXSA9IEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucygKKyAgICAgICAg
e30sIFtTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygzKV0pCisgICAgc2VsZi5hc3NlcnRF
cXVhbCh0ZXN0c19pbl9pdGVyYXRpb24zLCB0ZXN0c193aXRoX3NlZWQzKQorCisgIGRlZiB0ZXN0
U2h1ZmZsZUdlbmVyYXRlc05ld09yZGVySW5FYWNoSXRlcmF0aW9uKHNlbGYpOgorICAgIFt0ZXN0
c19pbl9pdGVyYXRpb24xLCB0ZXN0c19pbl9pdGVyYXRpb24yLCB0ZXN0c19pbl9pdGVyYXRpb24z
XSA9ICgKKyAgICAgICAgR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKAorICAgICAgICAgICAge30s
IFtTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygxKSwgUmVwZWF0RmxhZygzKV0pKQorCisg
ICAgc2VsZi5hc3NlcnRfKHRlc3RzX2luX2l0ZXJhdGlvbjEgIT0gdGVzdHNfaW5faXRlcmF0aW9u
MiwKKyAgICAgICAgICAgICAgICAgdGVzdHNfaW5faXRlcmF0aW9uMSkKKyAgICBzZWxmLmFzc2Vy
dF8odGVzdHNfaW5faXRlcmF0aW9uMSAhPSB0ZXN0c19pbl9pdGVyYXRpb24zLAorICAgICAgICAg
ICAgICAgICB0ZXN0c19pbl9pdGVyYXRpb24xKQorICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0c19pbl9p
dGVyYXRpb24yICE9IHRlc3RzX2luX2l0ZXJhdGlvbjMsCisgICAgICAgICAgICAgICAgIHRlc3Rz
X2luX2l0ZXJhdGlvbjIpCisKKyAgZGVmIHRlc3RTaHVmZmxlU2hhcmRlZFRlc3RzUHJlc2VydmVz
UGFydGl0aW9uKHNlbGYpOgorICAgICMgSWYgd2UgcnVuIE0gdGVzdHMgb24gTiBzaGFyZHMsIHRo
ZSBzYW1lIE0gdGVzdHMgc2hvdWxkIGJlIHJ1biBpbgorICAgICMgdG90YWwsIHJlZ2FyZGxlc3Mg
b2YgdGhlIHJhbmRvbSBzZWVkcyB1c2VkIGJ5IHRoZSBzaGFyZHMuCisgICAgW3Rlc3RzMV0gPSBH
ZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoe1RPVEFMX1NIQVJEU19FTlZfVkFSOiAnMycsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNIQVJEX0lOREVYX0VOVl9WQVI6
ICcwJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1NodWZmbGVG
bGFnKCksIFJhbmRvbVNlZWRGbGFnKDEpXSkKKyAgICBbdGVzdHMyXSA9IEdldFRlc3RzRm9yQWxs
SXRlcmF0aW9ucyh7VE9UQUxfU0hBUkRTX0VOVl9WQVI6ICczJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU0hBUkRfSU5ERVhfRU5WX1ZBUjogJzEnfSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9t
U2VlZEZsYWcoMjApXSkKKyAgICBbdGVzdHMzXSA9IEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucyh7
VE9UQUxfU0hBUkRTX0VOVl9WQVI6ICczJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU0hBUkRfSU5ERVhfRU5WX1ZBUjogJzInfSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWcoMjUp
XSkKKyAgICBzb3J0ZWRfc2hhcmRlZF90ZXN0cyA9IHRlc3RzMSArIHRlc3RzMiArIHRlc3RzMwor
ICAgIHNvcnRlZF9zaGFyZGVkX3Rlc3RzLnNvcnQoKQorICAgIHNvcnRlZF9hY3RpdmVfdGVzdHMg
PSBbXQorICAgIHNvcnRlZF9hY3RpdmVfdGVzdHMuZXh0ZW5kKEFDVElWRV9URVNUUykKKyAgICBz
b3J0ZWRfYWN0aXZlX3Rlc3RzLnNvcnQoKQorICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkX2Fj
dGl2ZV90ZXN0cywgc29ydGVkX3NoYXJkZWRfdGVzdHMpCisKK2lmIF9fbmFtZV9fID09ICdfX21h
aW5fXyc6CisgIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVz
dC90ZXN0L2d0ZXN0X3NodWZmbGVfdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X3No
dWZmbGVfdGVzdF8uY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmZiNDQxYmQ0ZDQ2NjIxZjY5ODdjYWQ0Yjc2YWU1
OTQ5OWQ3ZmZkMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3Rfc2h1
ZmZsZV90ZXN0Xy5jYwpAQCAtMCwwICsxLDEwMyBAQAorLy8gQ29weXJpZ2h0IDIwMDksIEdvb2ds
ZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55
b25nIFdhbikKKworLy8gVmVyaWZpZXMgdGhhdCB0ZXN0IHNodWZmbGluZyB3b3Jrcy4KKworI2lu
Y2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB7CisKK3VzaW5nIDo6dGVzdGluZzo6
RW1wdHlUZXN0RXZlbnRMaXN0ZW5lcjsKK3VzaW5nIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3Q7
Cit1c2luZyA6OnRlc3Rpbmc6Ok1lc3NhZ2U7Cit1c2luZyA6OnRlc3Rpbmc6OlRlc3Q7Cit1c2lu
ZyA6OnRlc3Rpbmc6OlRlc3RFdmVudExpc3RlbmVyczsKK3VzaW5nIDo6dGVzdGluZzo6VGVzdElu
Zm87Cit1c2luZyA6OnRlc3Rpbmc6OlVuaXRUZXN0OwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5h
bDo6c2NvcGVkX3B0cjsKKworLy8gVGhlIHRlc3QgbWV0aG9kcyBhcmUgZW1wdHksIGFzIHRoZSBz
b2xlIHB1cnBvc2Ugb2YgdGhpcyBwcm9ncmFtIGlzCisvLyB0byBwcmludCB0aGUgdGVzdCBuYW1l
cyBiZWZvcmUvYWZ0ZXIgc2h1ZmZsaW5nLgorCitjbGFzcyBBIDogcHVibGljIFRlc3Qge307CitU
RVNUX0YoQSwgQSkge30KK1RFU1RfRihBLCBCKSB7fQorCitURVNUKEFEZWF0aFRlc3QsIEEpIHt9
CitURVNUKEFEZWF0aFRlc3QsIEIpIHt9CitURVNUKEFEZWF0aFRlc3QsIEMpIHt9CisKK1RFU1Qo
QiwgQSkge30KK1RFU1QoQiwgQikge30KK1RFU1QoQiwgQykge30KK1RFU1QoQiwgRElTQUJMRURf
RCkge30KK1RFU1QoQiwgRElTQUJMRURfRSkge30KKworVEVTVChCRGVhdGhUZXN0LCBBKSB7fQor
VEVTVChCRGVhdGhUZXN0LCBCKSB7fQorCitURVNUKEMsIEEpIHt9CitURVNUKEMsIEIpIHt9CitU
RVNUKEMsIEMpIHt9CitURVNUKEMsIERJU0FCTEVEX0QpIHt9CisKK1RFU1QoQ0RlYXRoVGVzdCwg
QSkge30KKworVEVTVChESVNBQkxFRF9ELCBBKSB7fQorVEVTVChESVNBQkxFRF9ELCBESVNBQkxF
RF9CKSB7fQorCisvLyBUaGlzIHByaW50ZXIgcHJpbnRzIHRoZSBmdWxsIHRlc3QgbmFtZXMgb25s
eSwgc3RhcnRpbmcgZWFjaCB0ZXN0CisvLyBpdGVyYXRpb24gd2l0aCBhICItLS0tIiBtYXJrZXIu
CitjbGFzcyBUZXN0TmFtZVByaW50ZXIgOiBwdWJsaWMgRW1wdHlUZXN0RXZlbnRMaXN0ZW5lciB7
CisgcHVibGljOgorICB2aXJ0dWFsIHZvaWQgT25UZXN0SXRlcmF0aW9uU3RhcnQoY29uc3QgVW5p
dFRlc3QmIC8qIHVuaXRfdGVzdCAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCAvKiBpdGVyYXRpb24gKi8pIHsKKyAgICBwcmludGYoIi0tLS1cbiIpOworICB9CisK
KyAgdmlydHVhbCB2b2lkIE9uVGVzdFN0YXJ0KGNvbnN0IFRlc3RJbmZvJiB0ZXN0X2luZm8pIHsK
KyAgICBwcmludGYoIiVzLiVzXG4iLCB0ZXN0X2luZm8udGVzdF9jYXNlX25hbWUoKSwgdGVzdF9p
bmZvLm5hbWUoKSk7CisgIH0KK307CisKK30gIC8vIG5hbWVzcGFjZQorCitpbnQgbWFpbihpbnQg
YXJnYywgY2hhciAqKmFyZ3YpIHsKKyAgSW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworCisg
IC8vIFJlcGxhY2VzIHRoZSBkZWZhdWx0IHByaW50ZXIgd2l0aCBUZXN0TmFtZVByaW50ZXIsIHdo
aWNoIHByaW50cworICAvLyB0aGUgdGVzdCBuYW1lIG9ubHkuCisgIFRlc3RFdmVudExpc3RlbmVy
cyYgbGlzdGVuZXJzID0gVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmxpc3RlbmVycygpOworICBk
ZWxldGUgbGlzdGVuZXJzLlJlbGVhc2UobGlzdGVuZXJzLmRlZmF1bHRfcmVzdWx0X3ByaW50ZXIo
KSk7CisgIGxpc3RlbmVycy5BcHBlbmQobmV3IFRlc3ROYW1lUHJpbnRlcik7CisKKyAgcmV0dXJu
IFJVTl9BTExfVEVTVFMoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3Rf
c29sZV9oZWFkZXJfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3Rfc29sZV9oZWFkZXJf
dGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jY2QwOTFhMjgxZDNjMzAyZWM2ZTczNjAyMmZkNjE4ODE2YzEx
OWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9zb2xlX2hlYWRl
cl90ZXN0LmNjCkBAIC0wLDAgKzEsNTcgQEAKKy8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5j
LgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8g
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKy8vCisvLyBBdXRob3I6IG1oZXVsZUBnb29nbGUuY29tIChNYXJrdXMg
SGV1bGUpCisvLworLy8gVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgaXQncyBwb3NzaWJsZSB0byB1
c2UgR29vZ2xlIFRlc3QgYnkgaW5jbHVkaW5nCisvLyB0aGUgZ3Rlc3QuaCBoZWFkZXIgZmlsZSBh
bG9uZS4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB7CisKK3ZvaWQg
U3Vicm91dGluZSgpIHsKKyAgRVhQRUNUX0VRKDQyLCA0Mik7Cit9CisKK1RFU1QoTm9GYXRhbEZh
aWx1cmVUZXN0LCBFeHBlY3ROb0ZhdGFsRmFpbHVyZSkgeworICBFWFBFQ1RfTk9fRkFUQUxfRkFJ
TFVSRSg7KTsKKyAgRVhQRUNUX05PX0ZBVEFMX0ZBSUxVUkUoU1VDQ0VFRCgpKTsKKyAgRVhQRUNU
X05PX0ZBVEFMX0ZBSUxVUkUoU3Vicm91dGluZSgpKTsKKyAgRVhQRUNUX05PX0ZBVEFMX0ZBSUxV
UkUoeyBTVUNDRUVEKCk7IH0pOworfQorCitURVNUKE5vRmF0YWxGYWlsdXJlVGVzdCwgQXNzZXJ0
Tm9GYXRhbEZhaWx1cmUpIHsKKyAgQVNTRVJUX05PX0ZBVEFMX0ZBSUxVUkUoOyk7CisgIEFTU0VS
VF9OT19GQVRBTF9GQUlMVVJFKFNVQ0NFRUQoKSk7CisgIEFTU0VSVF9OT19GQVRBTF9GQUlMVVJF
KFN1YnJvdXRpbmUoKSk7CisgIEFTU0VSVF9OT19GQVRBTF9GQUlMVVJFKHsgU1VDQ0VFRCgpOyB9
KTsKK30KKworfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0
ZXN0X3N0cmVzc190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9zdHJlc3NfdGVzdC5j
YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lN2RhYTQzMGRmYmU1MGYxMDRhM2E0M2I3ZjBiNGE2YmUyMTczMjQyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9zdHJlc3NfdGVzdC5jYwpA
QCAtMCwwICsxLDI1NiBAQAorLy8gQ29weXJpZ2h0IDIwMDcsIEdvb2dsZSBJbmMuCisvLyBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8g
bWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
Ky8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8v
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorLy8KKy8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKworLy8g
VGVzdHMgdGhhdCBTQ09QRURfVFJBQ0UoKSBhbmQgdmFyaW91cyBHb29nbGUgVGVzdCBhc3NlcnRp
b25zIGNhbiBiZQorLy8gdXNlZCBpbiBhIGxhcmdlIG51bWJlciBvZiB0aHJlYWRzIGNvbmN1cnJl
bnRseS4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKyNpbmNsdWRlIDxpb3N0cmVhbT4K
KyNpbmNsdWRlIDx2ZWN0b3I+CisKKy8vIFdlIG11c3QgZGVmaW5lIHRoaXMgbWFjcm8gaW4gb3Jk
ZXIgdG8gI2luY2x1ZGUKKy8vIGd0ZXN0LWludGVybmFsLWlubC5oLiAgVGhpcyBpcyBob3cgR29v
Z2xlIFRlc3QgcHJldmVudHMgYSB1c2VyIGZyb20KKy8vIGFjY2lkZW50YWxseSBkZXBlbmRpbmcg
b24gaXRzIGludGVybmFsIGltcGxlbWVudGF0aW9uLgorI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRB
VElPTl8gMQorI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKKyN1bmRlZiBHVEVT
VF9JTVBMRU1FTlRBVElPTl8KKworI2lmIEdURVNUX0lTX1RIUkVBRFNBRkUKKworbmFtZXNwYWNl
IHRlc3RpbmcgeworbmFtZXNwYWNlIHsKKwordXNpbmcgaW50ZXJuYWw6Ok5vdGlmaWNhdGlvbjsK
K3VzaW5nIGludGVybmFsOjpUZXN0UHJvcGVydHlLZXlJczsKK3VzaW5nIGludGVybmFsOjpUaHJl
YWRXaXRoUGFyYW07Cit1c2luZyBpbnRlcm5hbDo6c2NvcGVkX3B0cjsKKworLy8gSW4gb3JkZXIg
dG8gcnVuIHRlc3RzIGluIHRoaXMgZmlsZSwgZm9yIHBsYXRmb3JtcyB3aGVyZSBHb29nbGUgVGVz
dCBpcworLy8gdGhyZWFkIHNhZmUsIGltcGxlbWVudCBUaHJlYWRXaXRoUGFyYW0uIFNlZSB0aGUg
ZGVzY3JpcHRpb24gb2YgaXRzIEFQSQorLy8gaW4gZ3Rlc3QtcG9ydC5oLCB3aGVyZSBpdCBpcyBk
ZWZpbmVkIGZvciBhbHJlYWR5IHN1cHBvcnRlZCBwbGF0Zm9ybXMuCisKKy8vIEhvdyBtYW55IHRo
cmVhZHMgdG8gY3JlYXRlPworY29uc3QgaW50IGtUaHJlYWRDb3VudCA9IDUwOworCitzdGQ6OnN0
cmluZyBJZFRvS2V5KGludCBpZCwgY29uc3QgY2hhciogc3VmZml4KSB7CisgIE1lc3NhZ2Uga2V5
OworICBrZXkgPDwgImtleV8iIDw8IGlkIDw8ICJfIiA8PCBzdWZmaXg7CisgIHJldHVybiBrZXku
R2V0U3RyaW5nKCk7Cit9CisKK3N0ZDo6c3RyaW5nIElkVG9TdHJpbmcoaW50IGlkKSB7CisgIE1l
c3NhZ2UgaWRfbWVzc2FnZTsKKyAgaWRfbWVzc2FnZSA8PCBpZDsKKyAgcmV0dXJuIGlkX21lc3Nh
Z2UuR2V0U3RyaW5nKCk7Cit9CisKK3ZvaWQgRXhwZWN0S2V5QW5kVmFsdWVXZXJlUmVjb3JkZWRG
b3JJZCgKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxUZXN0UHJvcGVydHk+JiBwcm9wZXJ0aWVzLAor
ICAgIGludCBpZCwgY29uc3QgY2hhciogc3VmZml4KSB7CisgIFRlc3RQcm9wZXJ0eUtleUlzIG1h
dGNoZXNfa2V5KElkVG9LZXkoaWQsIHN1ZmZpeCkuY19zdHIoKSk7CisgIGNvbnN0IHN0ZDo6dmVj
dG9yPFRlc3RQcm9wZXJ0eT46OmNvbnN0X2l0ZXJhdG9yIHByb3BlcnR5ID0KKyAgICAgIHN0ZDo6
ZmluZF9pZihwcm9wZXJ0aWVzLmJlZ2luKCksIHByb3BlcnRpZXMuZW5kKCksIG1hdGNoZXNfa2V5
KTsKKyAgQVNTRVJUX1RSVUUocHJvcGVydHkgIT0gcHJvcGVydGllcy5lbmQoKSkKKyAgICAgIDw8
ICJleHBlY3RpbmcgIiA8PCBzdWZmaXggPDwgIiB2YWx1ZSBmb3IgaWQgIiA8PCBpZDsKKyAgRVhQ
RUNUX1NUUkVRKElkVG9TdHJpbmcoaWQpLmNfc3RyKCksIHByb3BlcnR5LT52YWx1ZSgpKTsKK30K
KworLy8gQ2FsbHMgYSBsYXJnZSBudW1iZXIgb2YgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucywgd2hl
cmUgZXhhY3RseSBvbmUgb2YgdGhlbQorLy8gd2lsbCBmYWlsLgordm9pZCBNYW55QXNzZXJ0cyhp
bnQgaWQpIHsKKyAgR1RFU1RfTE9HXyhJTkZPKSA8PCAiVGhyZWFkICMiIDw8IGlkIDw8ICIgcnVu
bmluZy4uLiI7CisKKyAgU0NPUEVEX1RSQUNFKE1lc3NhZ2UoKSA8PCAiVGhyZWFkICMiIDw8IGlk
KTsKKworICBmb3IgKGludCBpID0gMDsgaSA8IGtUaHJlYWRDb3VudDsgaSsrKSB7CisgICAgU0NP
UEVEX1RSQUNFKE1lc3NhZ2UoKSA8PCAiSXRlcmF0aW9uICMiIDw8IGkpOworCisgICAgLy8gQSBi
dW5jaCBvZiBhc3NlcnRpb25zIHRoYXQgc2hvdWxkIHN1Y2NlZWQuCisgICAgRVhQRUNUX1RSVUUo
dHJ1ZSk7CisgICAgQVNTRVJUX0ZBTFNFKGZhbHNlKSA8PCAiVGhpcyBzaG91bGRuJ3QgZmFpbC4i
OworICAgIEVYUEVDVF9TVFJFUSgiYSIsICJhIik7CisgICAgQVNTRVJUX0xFKDUsIDYpOworICAg
IEVYUEVDVF9FUShpLCBpKSA8PCAiVGhpcyBzaG91bGRuJ3QgZmFpbC4iOworCisgICAgLy8gUmVj
b3JkUHJvcGVydHkoKSBzaG91bGQgaW50ZXJhY3Qgc2FmZWx5IHdpdGggb3RoZXIgdGhyZWFkcyBh
cyB3ZWxsLgorICAgIC8vIFRoZSBzaGFyZWRfa2V5IGZvcmNlcyBwcm9wZXJ0eSB1cGRhdGVzLgor
ICAgIFRlc3Q6OlJlY29yZFByb3BlcnR5KElkVG9LZXkoaWQsICJzdHJpbmciKS5jX3N0cigpLCBJ
ZFRvU3RyaW5nKGlkKS5jX3N0cigpKTsKKyAgICBUZXN0OjpSZWNvcmRQcm9wZXJ0eShJZFRvS2V5
KGlkLCAiaW50IikuY19zdHIoKSwgaWQpOworICAgIFRlc3Q6OlJlY29yZFByb3BlcnR5KCJzaGFy
ZWRfa2V5IiwgSWRUb1N0cmluZyhpZCkuY19zdHIoKSk7CisKKyAgICAvLyBUaGlzIGFzc2VydGlv
biBzaG91bGQgZmFpbCBrVGhyZWFkQ291bnQgdGltZXMgcGVyIHRocmVhZC4gIEl0CisgICAgLy8g
aXMgZm9yIHRlc3Rpbmcgd2hldGhlciBHb29nbGUgVGVzdCBjYW4gaGFuZGxlIGZhaWxlZCBhc3Nl
cnRpb25zIGluIGEKKyAgICAvLyBtdWx0aS10aHJlYWRlZCBjb250ZXh0LgorICAgIEVYUEVDVF9M
VChpLCAwKSA8PCAiVGhpcyBzaG91bGQgYWx3YXlzIGZhaWwuIjsKKyAgfQorfQorCit2b2lkIENo
ZWNrVGVzdEZhaWx1cmVDb3VudChpbnQgZXhwZWN0ZWRfZmFpbHVyZXMpIHsKKyAgY29uc3QgVGVz
dEluZm8qIGNvbnN0IGluZm8gPSBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0
X2luZm8oKTsKKyAgY29uc3QgVGVzdFJlc3VsdCogY29uc3QgcmVzdWx0ID0gaW5mby0+cmVzdWx0
KCk7CisgIEdURVNUX0NIRUNLXyhleHBlY3RlZF9mYWlsdXJlcyA9PSByZXN1bHQtPnRvdGFsX3Bh
cnRfY291bnQoKSkKKyAgICAgIDw8ICJMb2dnZWQgIiA8PCByZXN1bHQtPnRvdGFsX3BhcnRfY291
bnQoKSA8PCAiIGZhaWx1cmVzICIKKyAgICAgIDw8ICIgdnMuICIgPDwgZXhwZWN0ZWRfZmFpbHVy
ZXMgPDwgIiBleHBlY3RlZCI7Cit9CisKKy8vIFRlc3RzIHVzaW5nIFNDT1BFRF9UUkFDRSgpIGFu
ZCBHb29nbGUgVGVzdCBhc3NlcnRpb25zIGluIG1hbnkgdGhyZWFkcworLy8gY29uY3VycmVudGx5
LgorVEVTVChTdHJlc3NUZXN0LCBDYW5Vc2VTY29wZWRUcmFjZUFuZEFzc2VydGlvbnNJbk1hbnlU
aHJlYWRzKSB7CisgIHsKKyAgICBzY29wZWRfcHRyPFRocmVhZFdpdGhQYXJhbTxpbnQ+ID4gdGhy
ZWFkc1trVGhyZWFkQ291bnRdOworICAgIE5vdGlmaWNhdGlvbiB0aHJlYWRzX2Nhbl9zdGFydDsK
KyAgICBmb3IgKGludCBpID0gMDsgaSAhPSBrVGhyZWFkQ291bnQ7IGkrKykKKyAgICAgIHRocmVh
ZHNbaV0ucmVzZXQobmV3IFRocmVhZFdpdGhQYXJhbTxpbnQ+KCZNYW55QXNzZXJ0cywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGhyZWFkc19jYW5fc3RhcnQp
KTsKKworICAgIHRocmVhZHNfY2FuX3N0YXJ0Lk5vdGlmeSgpOworCisgICAgLy8gQmxvY2tzIHVu
dGlsIGFsbCB0aGUgdGhyZWFkcyBhcmUgZG9uZS4KKyAgICBmb3IgKGludCBpID0gMDsgaSAhPSBr
VGhyZWFkQ291bnQ7IGkrKykKKyAgICAgIHRocmVhZHNbaV0tPkpvaW4oKTsKKyAgfQorCisgIC8v
IEVuc3VyZXMgdGhhdCBrVGhyZWFkQ291bnQqa1RocmVhZENvdW50IGZhaWx1cmVzIGhhdmUgYmVl
biByZXBvcnRlZC4KKyAgY29uc3QgVGVzdEluZm8qIGNvbnN0IGluZm8gPSBVbml0VGVzdDo6R2V0
SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKTsKKyAgY29uc3QgVGVzdFJlc3VsdCogY29u
c3QgcmVzdWx0ID0gaW5mby0+cmVzdWx0KCk7CisKKyAgc3RkOjp2ZWN0b3I8VGVzdFByb3BlcnR5
PiBwcm9wZXJ0aWVzOworICAvLyBXZSBoYXZlIG5vIGFjY2VzcyB0byB0aGUgVGVzdFJlc3VsdCdz
IGxpc3Qgb2YgcHJvcGVydGllcyBidXQgd2UgY2FuCisgIC8vIGNvcHkgdGhlbSBvbmUgYnkgb25l
LgorICBmb3IgKGludCBpID0gMDsgaSA8IHJlc3VsdC0+dGVzdF9wcm9wZXJ0eV9jb3VudCgpOyAr
K2kpCisgICAgcHJvcGVydGllcy5wdXNoX2JhY2socmVzdWx0LT5HZXRUZXN0UHJvcGVydHkoaSkp
OworCisgIEVYUEVDVF9FUShrVGhyZWFkQ291bnQgKiAyICsgMSwgcmVzdWx0LT50ZXN0X3Byb3Bl
cnR5X2NvdW50KCkpCisgICAgICA8PCAiU3RyaW5nIGFuZCBpbnQgdmFsdWVzIHJlY29yZGVkIG9u
IGVhY2ggdGhyZWFkLCAiCisgICAgICA8PCAiYXMgd2VsbCBhcyBvbmUgc2hhcmVkX2tleSI7Cisg
IGZvciAoaW50IGkgPSAwOyBpIDwga1RocmVhZENvdW50OyArK2kpIHsKKyAgICBFeHBlY3RLZXlB
bmRWYWx1ZVdlcmVSZWNvcmRlZEZvcklkKHByb3BlcnRpZXMsIGksICJzdHJpbmciKTsKKyAgICBF
eHBlY3RLZXlBbmRWYWx1ZVdlcmVSZWNvcmRlZEZvcklkKHByb3BlcnRpZXMsIGksICJpbnQiKTsK
KyAgfQorICBDaGVja1Rlc3RGYWlsdXJlQ291bnQoa1RocmVhZENvdW50KmtUaHJlYWRDb3VudCk7
Cit9CisKK3ZvaWQgRmFpbGluZ1RocmVhZChib29sIGlzX2ZhdGFsKSB7CisgIGlmIChpc19mYXRh
bCkKKyAgICBGQUlMKCkgPDwgIkZhdGFsIGZhaWx1cmUgaW4gc29tZSBvdGhlciB0aHJlYWQuICIK
KyAgICAgICAgICAgPDwgIihUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQuKSI7CisgIGVsc2UKKyAg
ICBBRERfRkFJTFVSRSgpIDw8ICJOb24tZmF0YWwgZmFpbHVyZSBpbiBzb21lIG90aGVyIHRocmVh
ZC4gIgorICAgICAgICAgICAgICAgICAgPDwgIihUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQuKSI7
Cit9CisKK3ZvaWQgR2VuZXJhdGVGYXRhbEZhaWx1cmVJbkFub3RoZXJUaHJlYWQoYm9vbCBpc19m
YXRhbCkgeworICBUaHJlYWRXaXRoUGFyYW08Ym9vbD4gdGhyZWFkKCZGYWlsaW5nVGhyZWFkLCBp
c19mYXRhbCwgTlVMTCk7CisgIHRocmVhZC5Kb2luKCk7Cit9CisKK1RFU1QoTm9GYXRhbEZhaWx1
cmVUZXN0LCBFeHBlY3ROb0ZhdGFsRmFpbHVyZUlnbm9yZXNGYWlsdXJlc0luT3RoZXJUaHJlYWRz
KSB7CisgIEVYUEVDVF9OT19GQVRBTF9GQUlMVVJFKEdlbmVyYXRlRmF0YWxGYWlsdXJlSW5Bbm90
aGVyVGhyZWFkKHRydWUpKTsKKyAgLy8gV2Ugc2hvdWxkIG9ubHkgaGF2ZSBvbmUgZmFpbHVyZSAo
dGhlIG9uZSBmcm9tCisgIC8vIEdlbmVyYXRlRmF0YWxGYWlsdXJlSW5Bbm90aGVyVGhyZWFkKCkp
LCBzaW5jZSB0aGUgRVhQRUNUX05PX0ZBVEFMX0ZBSUxVUkUKKyAgLy8gc2hvdWxkIHN1Y2NlZWQu
CisgIENoZWNrVGVzdEZhaWx1cmVDb3VudCgxKTsKK30KKwordm9pZCBBc3NlcnROb0ZhdGFsRmFp
bHVyZUlnbm9yZXNGYWlsdXJlc0luT3RoZXJUaHJlYWRzKCkgeworICBBU1NFUlRfTk9fRkFUQUxf
RkFJTFVSRShHZW5lcmF0ZUZhdGFsRmFpbHVyZUluQW5vdGhlclRocmVhZCh0cnVlKSk7Cit9CitU
RVNUKE5vRmF0YWxGYWlsdXJlVGVzdCwgQXNzZXJ0Tm9GYXRhbEZhaWx1cmVJZ25vcmVzRmFpbHVy
ZXNJbk90aGVyVGhyZWFkcykgeworICAvLyBVc2luZyBhIHN1YnJvdXRpbmUsIHRvIG1ha2Ugc3Vy
ZSwgdGhhdCB0aGUgdGVzdCBjb250aW51ZXMuCisgIEFzc2VydE5vRmF0YWxGYWlsdXJlSWdub3Jl
c0ZhaWx1cmVzSW5PdGhlclRocmVhZHMoKTsKKyAgLy8gV2Ugc2hvdWxkIG9ubHkgaGF2ZSBvbmUg
ZmFpbHVyZSAodGhlIG9uZSBmcm9tCisgIC8vIEdlbmVyYXRlRmF0YWxGYWlsdXJlSW5Bbm90aGVy
VGhyZWFkKCkpLCBzaW5jZSB0aGUgRVhQRUNUX05PX0ZBVEFMX0ZBSUxVUkUKKyAgLy8gc2hvdWxk
IHN1Y2NlZWQuCisgIENoZWNrVGVzdEZhaWx1cmVDb3VudCgxKTsKK30KKworVEVTVChGYXRhbEZh
aWx1cmVUZXN0LCBFeHBlY3RGYXRhbEZhaWx1cmVJZ25vcmVzRmFpbHVyZXNJbk90aGVyVGhyZWFk
cykgeworICAvLyBUaGlzIHN0YXRlbWVudCBzaG91bGQgZmFpbCwgc2luY2UgdGhlIGN1cnJlbnQg
dGhyZWFkIGRvZXNuJ3QgZ2VuZXJhdGUgYQorICAvLyBmYXRhbCBmYWlsdXJlLCBvbmx5IGFub3Ro
ZXIgb25lIGRvZXMuCisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEdlbmVyYXRlRmF0YWxGYWlsdXJl
SW5Bbm90aGVyVGhyZWFkKHRydWUpLCAiZXhwZWN0ZWQiKTsKKyAgQ2hlY2tUZXN0RmFpbHVyZUNv
dW50KDIpOworfQorCitURVNUKEZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkc1Rlc3QsIEV4cGVjdEZh
dGFsRmFpbHVyZU9uQWxsVGhyZWFkcykgeworICAvLyBUaGlzIHN0YXRlbWVudCBzaG91bGQgc3Vj
Y2VlZCwgYmVjYXVzZSBmYWlsdXJlcyBpbiBhbGwgdGhyZWFkcyBhcmUKKyAgLy8gY29uc2lkZXJl
ZC4KKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoCisgICAgICBHZW5lcmF0
ZUZhdGFsRmFpbHVyZUluQW5vdGhlclRocmVhZCh0cnVlKSwgImV4cGVjdGVkIik7CisgIENoZWNr
VGVzdEZhaWx1cmVDb3VudCgwKTsKKyAgLy8gV2UgbmVlZCB0byBhZGQgYSBmYWlsdXJlLCBiZWNh
dXNlIG1haW4oKSBjaGVja3MgdGhhdCB0aGVyZSBhcmUgZmFpbHVyZXMuCisgIC8vIEJ1dCB3aGVu
IG9ubHkgdGhpcyB0ZXN0IGlzIHJ1biwgd2Ugc2hvdWxkbid0IGhhdmUgYW55IGZhaWx1cmVzLgor
ICBBRERfRkFJTFVSRSgpIDw8ICJUaGlzIGlzIGFuIGV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJl
LiI7Cit9CisKK1RFU1QoTm9uRmF0YWxGYWlsdXJlVGVzdCwgRXhwZWN0Tm9uRmF0YWxGYWlsdXJl
SWdub3Jlc0ZhaWx1cmVzSW5PdGhlclRocmVhZHMpIHsKKyAgLy8gVGhpcyBzdGF0ZW1lbnQgc2hv
dWxkIGZhaWwsIHNpbmNlIHRoZSBjdXJyZW50IHRocmVhZCBkb2Vzbid0IGdlbmVyYXRlIGEKKyAg
Ly8gZmF0YWwgZmFpbHVyZSwgb25seSBhbm90aGVyIG9uZSBkb2VzLgorICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRShHZW5lcmF0ZUZhdGFsRmFpbHVyZUluQW5vdGhlclRocmVhZChmYWxzZSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCIpOworICBDaGVja1Rlc3RGYWlsdXJl
Q291bnQoMik7Cit9CisKK1RFU1QoTm9uRmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzVGVzdCwgRXhw
ZWN0Tm9uRmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzKSB7CisgIC8vIFRoaXMgc3RhdGVtZW50IHNo
b3VsZCBzdWNjZWVkLCBiZWNhdXNlIGZhaWx1cmVzIGluIGFsbCB0aHJlYWRzIGFyZQorICAvLyBj
b25zaWRlcmVkLgorICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUygKKyAg
ICAgIEdlbmVyYXRlRmF0YWxGYWlsdXJlSW5Bbm90aGVyVGhyZWFkKGZhbHNlKSwgImV4cGVjdGVk
Iik7CisgIENoZWNrVGVzdEZhaWx1cmVDb3VudCgwKTsKKyAgLy8gV2UgbmVlZCB0byBhZGQgYSBm
YWlsdXJlLCBiZWNhdXNlIG1haW4oKSBjaGVja3MgdGhhdCB0aGVyZSBhcmUgZmFpbHVyZXMsCisg
IC8vIEJ1dCB3aGVuIG9ubHkgdGhpcyB0ZXN0IGlzIHJ1biwgd2Ugc2hvdWxkbid0IGhhdmUgYW55
IGZhaWx1cmVzLgorICBBRERfRkFJTFVSRSgpIDw8ICJUaGlzIGlzIGFuIGV4cGVjdGVkIG5vbi1m
YXRhbCBmYWlsdXJlLiI7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorfSAgLy8gbmFtZXNwYWNlIHRl
c3RpbmcKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CisgIHRlc3Rpbmc6Oklu
aXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKworICBjb25zdCBpbnQgcmVzdWx0ID0gUlVOX0FM
TF9URVNUUygpOyAgLy8gRXhwZWN0ZWQgdG8gZmFpbC4KKyAgR1RFU1RfQ0hFQ0tfKHJlc3VsdCA9
PSAxKSA8PCAiUlVOX0FMTF9URVNUUygpIGRpZCBub3QgZmFpbCBhcyBleHBlY3RlZCI7CisKKyAg
cHJpbnRmKCJcblBBU1NcbiIpOworICByZXR1cm4gMDsKK30KKworI2Vsc2UKK1RFU1QoU3RyZXNz
VGVzdCwKKyAgICAgRElTQUJMRURfVGhyZWFkU2FmZXR5VGVzdHNBcmVTa2lwcGVkV2hlbkdvb2ds
ZVRlc3RJc05vdFRocmVhZFNhZmUpIHsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiph
cmd2KSB7CisgIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKyAgcmV0dXJu
IFJVTl9BTExfVEVTVFMoKTsKK30KKyNlbmRpZiAgLy8gR1RFU1RfSVNfVEhSRUFEU0FGRQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF90ZXN0X3V0aWxzLnB5IGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRl
c3QvdGVzdC9ndGVzdF90ZXN0X3V0aWxzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhY2QzNmM5NzVjMGExYzI4
ZTVlNTBjZDc5M2ExMzE5MDc3NDUwYzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90
ZXN0L2d0ZXN0X3Rlc3RfdXRpbHMucHkKQEAgLTAsMCArMSwzMjAgQEAKKyMhL3Vzci9iaW4vZW52
IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRp
c3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlVuaXQgdGVzdCB1dGlsaXRpZXMgZm9y
IEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsuIiIiCisKK19fYXV0aG9yX18gPSAnd2FuQGdv
b2dsZS5jb20gKFpoYW55b25nIFdhbiknCisKK2ltcG9ydCBhdGV4aXQKK2ltcG9ydCBvcworaW1w
b3J0IHNodXRpbAoraW1wb3J0IHN5cworaW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgdW5pdHRlc3QK
K190ZXN0X21vZHVsZSA9IHVuaXR0ZXN0CisKKyMgU3VwcHJlc3NlcyB0aGUgJ0ltcG9ydCBub3Qg
YXQgdGhlIHRvcCBvZiB0aGUgZmlsZScgbGludCBjb21wbGFpbnQuCisjIHB5bGludDogZGlzYWJs
ZS1tc2c9QzYyMDQKK3RyeToKKyAgaW1wb3J0IHN1YnByb2Nlc3MKKyAgX1NVQlBST0NFU1NfTU9E
VUxFX0FWQUlMQUJMRSA9IFRydWUKK2V4Y2VwdDoKKyAgaW1wb3J0IHBvcGVuMgorICBfU1VCUFJP
Q0VTU19NT0RVTEVfQVZBSUxBQkxFID0gRmFsc2UKKyMgcHlsaW50OiBlbmFibGUtbXNnPUM2MjA0
CisKK0dURVNUX09VVFBVVF9WQVJfTkFNRSA9ICdHVEVTVF9PVVRQVVQnCisKK0lTX1dJTkRPV1Mg
PSBvcy5uYW1lID09ICdudCcKK0lTX0NZR1dJTiA9IG9zLm5hbWUgPT0gJ3Bvc2l4JyBhbmQgJ0NZ
R1dJTicgaW4gb3MudW5hbWUoKVswXQorCisjIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBmb3Ig
c3BlY2lmeWluZyB0aGUgcGF0aCB0byB0aGUgcHJlbWF0dXJlLWV4aXQgZmlsZS4KK1BSRU1BVFVS
RV9FWElUX0ZJTEVfRU5WX1ZBUiA9ICdURVNUX1BSRU1BVFVSRV9FWElUX0ZJTEUnCisKK2Vudmly
b24gPSBvcy5lbnZpcm9uLmNvcHkoKQorCisKK2RlZiBTZXRFbnZWYXIoZW52X3ZhciwgdmFsdWUp
OgorICAiIiJTZXRzL3Vuc2V0cyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBhIGdpdmVuIHZh
bHVlLiIiIgorCisgIGlmIHZhbHVlIGlzIG5vdCBOb25lOgorICAgIGVudmlyb25bZW52X3Zhcl0g
PSB2YWx1ZQorICBlbGlmIGVudl92YXIgaW4gZW52aXJvbjoKKyAgICBkZWwgZW52aXJvbltlbnZf
dmFyXQorCisKKyMgSGVyZSB3ZSBleHBvc2UgYSBjbGFzcyBmcm9tIGEgcGFydGljdWxhciBtb2R1
bGUsIGRlcGVuZGluZyBvbiB0aGUKKyMgZW52aXJvbm1lbnQuIFRoZSBjb21tZW50IHN1cHByZXNz
ZXMgdGhlICdJbnZhbGlkIHZhcmlhYmxlIG5hbWUnIGxpbnQKKyMgY29tcGxhaW50LgorVGVzdENh
c2UgPSBfdGVzdF9tb2R1bGUuVGVzdENhc2UgICMgcHlsaW50OiBkaXNhYmxlLW1zZz1DNjQwOQor
CisjIEluaXRpYWxseSBtYXBzIGEgZmxhZyB0byBpdHMgZGVmYXVsdCB2YWx1ZS4gQWZ0ZXIKKyMg
X1BhcnNlQW5kU3RyaXBHVGVzdEZsYWdzKCkgaXMgY2FsbGVkLCBtYXBzIGEgZmxhZyB0byBpdHMg
YWN0dWFsIHZhbHVlLgorX2ZsYWdfbWFwID0geydzb3VyY2VfZGlyJzogb3MucGF0aC5kaXJuYW1l
KHN5cy5hcmd2WzBdKSwKKyAgICAgICAgICAgICAnYnVpbGRfZGlyJzogb3MucGF0aC5kaXJuYW1l
KHN5cy5hcmd2WzBdKX0KK19ndGVzdF9mbGFnc19hcmVfcGFyc2VkID0gRmFsc2UKKworCitkZWYg
X1BhcnNlQW5kU3RyaXBHVGVzdEZsYWdzKGFyZ3YpOgorICAiIiJQYXJzZXMgYW5kIHN0cmlwcyBH
b29nbGUgVGVzdCBmbGFncyBmcm9tIGFyZ3YuICBUaGlzIGlzIGlkZW1wb3RlbnQuIiIiCisKKyAg
IyBTdXBwcmVzc2VzIHRoZSBsaW50IGNvbXBsYWludCBhYm91dCBhIGdsb2JhbCB2YXJpYWJsZSBz
aW5jZSB3ZSBuZWVkIGl0CisgICMgaGVyZSB0byBtYWludGFpbiBtb2R1bGUtd2lkZSBzdGF0ZS4K
KyAgZ2xvYmFsIF9ndGVzdF9mbGFnc19hcmVfcGFyc2VkICAjIHB5bGludDogZGlzYWJsZS1tc2c9
VzA2MDMKKyAgaWYgX2d0ZXN0X2ZsYWdzX2FyZV9wYXJzZWQ6CisgICAgcmV0dXJuCisKKyAgX2d0
ZXN0X2ZsYWdzX2FyZV9wYXJzZWQgPSBUcnVlCisgIGZvciBmbGFnIGluIF9mbGFnX21hcDoKKyAg
ICAjIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBvdmVycmlkZXMgdGhlIGRlZmF1bHQgdmFsdWUu
CisgICAgaWYgZmxhZy51cHBlcigpIGluIG9zLmVudmlyb246CisgICAgICBfZmxhZ19tYXBbZmxh
Z10gPSBvcy5lbnZpcm9uW2ZsYWcudXBwZXIoKV0KKworICAgICMgVGhlIGNvbW1hbmQgbGluZSBm
bGFnIG92ZXJyaWRlcyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUuCisgICAgaSA9IDEgICMgU2tp
cHMgdGhlIHByb2dyYW0gbmFtZS4KKyAgICB3aGlsZSBpIDwgbGVuKGFyZ3YpOgorICAgICAgcHJl
Zml4ID0gJy0tJyArIGZsYWcgKyAnPScKKyAgICAgIGlmIGFyZ3ZbaV0uc3RhcnRzd2l0aChwcmVm
aXgpOgorICAgICAgICBfZmxhZ19tYXBbZmxhZ10gPSBhcmd2W2ldW2xlbihwcmVmaXgpOl0KKyAg
ICAgICAgZGVsIGFyZ3ZbaV0KKyAgICAgICAgYnJlYWsKKyAgICAgIGVsc2U6CisgICAgICAgICMg
V2UgZG9uJ3QgaW5jcmVtZW50IGkgaW4gY2FzZSB3ZSBqdXN0IGZvdW5kIGEgLS1ndGVzdF8qIGZs
YWcKKyAgICAgICAgIyBhbmQgcmVtb3ZlZCBpdCBmcm9tIGFyZ3YuCisgICAgICAgIGkgKz0gMQor
CisKK2RlZiBHZXRGbGFnKGZsYWcpOgorICAiIiJSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgZ2l2
ZW4gZmxhZy4iIiIKKworICAjIEluIGNhc2UgR2V0RmxhZygpIGlzIGNhbGxlZCBiZWZvcmUgTWFp
bigpLCB3ZSBhbHdheXMgY2FsbAorICAjIF9QYXJzZUFuZFN0cmlwR1Rlc3RGbGFncygpIGhlcmUg
dG8gbWFrZSBzdXJlIHRoZSAtLWd0ZXN0XyogZmxhZ3MKKyAgIyBhcmUgcGFyc2VkLgorICBfUGFy
c2VBbmRTdHJpcEdUZXN0RmxhZ3Moc3lzLmFyZ3YpCisKKyAgcmV0dXJuIF9mbGFnX21hcFtmbGFn
XQorCisKK2RlZiBHZXRTb3VyY2VEaXIoKToKKyAgIiIiUmV0dXJucyB0aGUgYWJzb2x1dGUgcGF0
aCBvZiB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSAucHkgZmlsZXMgYXJlLiIiIgorCisgIHJldHVy
biBvcy5wYXRoLmFic3BhdGgoR2V0RmxhZygnc291cmNlX2RpcicpKQorCisKK2RlZiBHZXRCdWls
ZERpcigpOgorICAiIiJSZXR1cm5zIHRoZSBhYnNvbHV0ZSBwYXRoIG9mIHRoZSBkaXJlY3Rvcnkg
d2hlcmUgdGhlIHRlc3QgYmluYXJpZXMgYXJlLiIiIgorCisgIHJldHVybiBvcy5wYXRoLmFic3Bh
dGgoR2V0RmxhZygnYnVpbGRfZGlyJykpCisKKworX3RlbXBfZGlyID0gTm9uZQorCitkZWYgX1Jl
bW92ZVRlbXBEaXIoKToKKyAgaWYgX3RlbXBfZGlyOgorICAgIHNodXRpbC5ybXRyZWUoX3RlbXBf
ZGlyLCBpZ25vcmVfZXJyb3JzPVRydWUpCisKK2F0ZXhpdC5yZWdpc3RlcihfUmVtb3ZlVGVtcERp
cikKKworCitkZWYgR2V0VGVtcERpcigpOgorICAiIiJSZXR1cm5zIGEgZGlyZWN0b3J5IGZvciB0
ZW1wb3JhcnkgZmlsZXMuIiIiCisKKyAgZ2xvYmFsIF90ZW1wX2RpcgorICBpZiBub3QgX3RlbXBf
ZGlyOgorICAgIF90ZW1wX2RpciA9IHRlbXBmaWxlLm1rZHRlbXAoKQorICByZXR1cm4gX3RlbXBf
ZGlyCisKKworZGVmIEdldFRlc3RFeGVjdXRhYmxlUGF0aChleGVjdXRhYmxlX25hbWUsIGJ1aWxk
X2Rpcj1Ob25lKToKKyAgIiIiUmV0dXJucyB0aGUgYWJzb2x1dGUgcGF0aCBvZiB0aGUgdGVzdCBi
aW5hcnkgZ2l2ZW4gaXRzIG5hbWUuCisKKyAgVGhlIGZ1bmN0aW9uIHdpbGwgcHJpbnQgYSBtZXNz
YWdlIGFuZCBhYm9ydCB0aGUgcHJvZ3JhbSBpZiB0aGUgcmVzdWx0aW5nIGZpbGUKKyAgZG9lc24n
dCBleGlzdC4KKworICBBcmdzOgorICAgIGV4ZWN1dGFibGVfbmFtZTogbmFtZSBvZiB0aGUgdGVz
dCBiaW5hcnkgdGhhdCB0aGUgdGVzdCBzY3JpcHQgcnVucy4KKyAgICBidWlsZF9kaXI6ICAgICAg
IGRpcmVjdG9yeSB3aGVyZSB0byBsb29rIGZvciBleGVjdXRhYmxlcywgYnkgZGVmYXVsdAorICAg
ICAgICAgICAgICAgICAgICAgdGhlIHJlc3VsdCBvZiBHZXRCdWlsZERpcigpLgorCisgIFJldHVy
bnM6CisgICAgVGhlIGFic29sdXRlIHBhdGggb2YgdGhlIHRlc3QgYmluYXJ5LgorICAiIiIKKwor
ICBwYXRoID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihidWlsZF9kaXIgb3IgR2V0QnVp
bGREaXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJs
ZV9uYW1lKSkKKyAgaWYgKElTX1dJTkRPV1Mgb3IgSVNfQ1lHV0lOKSBhbmQgbm90IHBhdGguZW5k
c3dpdGgoJy5leGUnKToKKyAgICBwYXRoICs9ICcuZXhlJworCisgIGlmIG5vdCBvcy5wYXRoLmV4
aXN0cyhwYXRoKToKKyAgICBtZXNzYWdlID0gKAorICAgICAgICAnVW5hYmxlIHRvIGZpbmQgdGhl
IHRlc3QgYmluYXJ5ICIlcyIuIFBsZWFzZSBtYWtlIHN1cmUgdG8gcHJvdmlkZVxuJworICAgICAg
ICAnYSBwYXRoIHRvIHRoZSBiaW5hcnkgdmlhIHRoZSAtLWJ1aWxkX2RpciBmbGFnIG9yIHRoZSBC
VUlMRF9ESVJcbicKKyAgICAgICAgJ2Vudmlyb25tZW50IHZhcmlhYmxlLicgJSBwYXRoKQorICAg
IHN5cy5zdGRvdXQud3JpdGUobWVzc2FnZSkKKyAgICBzeXMuZXhpdCgxKQorCisgIHJldHVybiBw
YXRoCisKKworZGVmIEdldEV4aXRTdGF0dXMoZXhpdF9jb2RlKToKKyAgIiIiUmV0dXJucyB0aGUg
YXJndW1lbnQgdG8gZXhpdCgpLCBvciAtMSBpZiBleGl0KCkgd2Fzbid0IGNhbGxlZC4KKworICBB
cmdzOgorICAgIGV4aXRfY29kZTogdGhlIHJlc3VsdCB2YWx1ZSBvZiBvcy5zeXN0ZW0oY29tbWFu
ZCkuCisgICIiIgorCisgIGlmIG9zLm5hbWUgPT0gJ250JzoKKyAgICAjIE9uIFdpbmRvd3MsIG9z
LldFWElUU1RBVFVTKCkgZG9lc24ndCB3b3JrIGFuZCBvcy5zeXN0ZW0oKSByZXR1cm5zCisgICAg
IyB0aGUgYXJndW1lbnQgdG8gZXhpdCgpIGRpcmVjdGx5LgorICAgIHJldHVybiBleGl0X2NvZGUK
KyAgZWxzZToKKyAgICAjIE9uIFVuaXgsIG9zLldFWElUU1RBVFVTKCkgbXVzdCBiZSB1c2VkIHRv
IGV4dHJhY3QgdGhlIGV4aXQgc3RhdHVzCisgICAgIyBmcm9tIHRoZSByZXN1bHQgb2Ygb3Muc3lz
dGVtKCkuCisgICAgaWYgb3MuV0lGRVhJVEVEKGV4aXRfY29kZSk6CisgICAgICByZXR1cm4gb3Mu
V0VYSVRTVEFUVVMoZXhpdF9jb2RlKQorICAgIGVsc2U6CisgICAgICByZXR1cm4gLTEKKworCitj
bGFzcyBTdWJwcm9jZXNzOgorICBkZWYgX19pbml0X18oc2VsZiwgY29tbWFuZCwgd29ya2luZ19k
aXI9Tm9uZSwgY2FwdHVyZV9zdGRlcnI9VHJ1ZSwgZW52PU5vbmUpOgorICAgICIiIkNoYW5nZXMg
aW50byBhIHNwZWNpZmllZCBkaXJlY3RvcnksIGlmIHByb3ZpZGVkLCBhbmQgZXhlY3V0ZXMgYSBj
b21tYW5kLgorCisgICAgUmVzdG9yZXMgdGhlIG9sZCBkaXJlY3RvcnkgYWZ0ZXJ3YXJkcy4KKwor
ICAgIEFyZ3M6CisgICAgICBjb21tYW5kOiAgICAgICAgVGhlIGNvbW1hbmQgdG8gcnVuLCBpbiB0
aGUgZm9ybSBvZiBzeXMuYXJndi4KKyAgICAgIHdvcmtpbmdfZGlyOiAgICBUaGUgZGlyZWN0b3J5
IHRvIGNoYW5nZSBpbnRvLgorICAgICAgY2FwdHVyZV9zdGRlcnI6IERldGVybWluZXMgd2hldGhl
ciB0byBjYXB0dXJlIHN0ZGVyciBpbiB0aGUgb3V0cHV0IG1lbWJlcgorICAgICAgICAgICAgICAg
ICAgICAgIG9yIHRvIGRpc2NhcmQgaXQuCisgICAgICBlbnY6ICAgICAgICAgICAgRGljdGlvbmFy
eSB3aXRoIGVudmlyb25tZW50IHRvIHBhc3MgdG8gdGhlIHN1YnByb2Nlc3MuCisKKyAgICBSZXR1
cm5zOgorICAgICAgQW4gb2JqZWN0IHRoYXQgcmVwcmVzZW50cyBvdXRjb21lIG9mIHRoZSBleGVj
dXRlZCBwcm9jZXNzLiBJdCBoYXMgdGhlCisgICAgICBmb2xsb3dpbmcgYXR0cmlidXRlczoKKyAg
ICAgICAgdGVybWluYXRlZF9ieV9zaWduYWwgICBUcnVlIGlmZiB0aGUgY2hpbGQgcHJvY2VzcyBo
YXMgYmVlbiB0ZXJtaW5hdGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgYSBz
aWduYWwuCisgICAgICAgIHNpZ25hbCAgICAgICAgICAgICAgICAgU3lnbmFsIHRoYXQgdGVybWlu
YXRlZCB0aGUgY2hpbGQgcHJvY2Vzcy4KKyAgICAgICAgZXhpdGVkICAgICAgICAgICAgICAgICBU
cnVlIGlmZiB0aGUgY2hpbGQgcHJvY2VzcyBleGl0ZWQgbm9ybWFsbHkuCisgICAgICAgIGV4aXRf
Y29kZSAgICAgICAgICAgICAgVGhlIGNvZGUgd2l0aCB3aGljaCB0aGUgY2hpbGQgcHJvY2VzcyBl
eGl0ZWQuCisgICAgICAgIG91dHB1dCAgICAgICAgICAgICAgICAgQ2hpbGQgcHJvY2VzcydzIHN0
ZG91dCBhbmQgc3RkZXJyIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bWJpbmVkIGluIGEgc3RyaW5nLgorICAgICIiIgorCisgICAgIyBUaGUgc3VicHJvY2VzcyBtb2R1
bGUgaXMgdGhlIHByZWZlcnJhYmxlIHdheSBvZiBydW5uaW5nIHByb2dyYW1zCisgICAgIyBzaW5j
ZSBpdCBpcyBhdmFpbGFibGUgYW5kIGJlaGF2ZXMgY29uc2lzdGVudGx5IG9uIGFsbCBwbGF0Zm9y
bXMsCisgICAgIyBpbmNsdWRpbmcgV2luZG93cy4gQnV0IGl0IGlzIG9ubHkgYXZhaWxhYmxlIHN0
YXJ0aW5nIGluIHB5dGhvbiAyLjQuCisgICAgIyBJbiBlYXJsaWVyIHB5dGhvbiB2ZXJzaW9ucywg
d2UgcmV2ZXJ0IHRvIHRoZSBwb3BlbjIgbW9kdWxlLCB3aGljaCBpcworICAgICMgYXZhaWxhYmxl
IGluIHB5dGhvbiAyLjAgYW5kIGxhdGVyIGJ1dCBkb2Vzbid0IHByb3ZpZGUgcmVxdWlyZWQKKyAg
ICAjIGZ1bmN0aW9uYWxpdHkgKFBvcGVuNCkgdW5kZXIgV2luZG93cy4gVGhpcyBhbGxvd3MgdXMg
dG8gc3VwcG9ydCBNYWMKKyAgICAjIE9TIFggMTAuNCBUaWdlciwgd2hpY2ggaGFzIHB5dGhvbiAy
LjMgaW5zdGFsbGVkLgorICAgIGlmIF9TVUJQUk9DRVNTX01PRFVMRV9BVkFJTEFCTEU6CisgICAg
ICBpZiBjYXB0dXJlX3N0ZGVycjoKKyAgICAgICAgc3RkZXJyID0gc3VicHJvY2Vzcy5TVERPVVQK
KyAgICAgIGVsc2U6CisgICAgICAgIHN0ZGVyciA9IHN1YnByb2Nlc3MuUElQRQorCisgICAgICBw
ID0gc3VicHJvY2Vzcy5Qb3Blbihjb21tYW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN0ZGVyciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGN3ZD13b3JraW5nX2RpciwgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUsIGVudj1l
bnYpCisgICAgICAjIGNvbW11bmljYXRlIHJldHVybnMgYSB0dXBsZSB3aXRoIHRoZSBmaWxlIG9i
ZWN0IGZvciB0aGUgY2hpbGQncworICAgICAgIyBvdXRwdXQuCisgICAgICBzZWxmLm91dHB1dCA9
IHAuY29tbXVuaWNhdGUoKVswXQorICAgICAgc2VsZi5fcmV0dXJuX2NvZGUgPSBwLnJldHVybmNv
ZGUKKyAgICBlbHNlOgorICAgICAgb2xkX2RpciA9IG9zLmdldGN3ZCgpCisKKyAgICAgIGRlZiBf
UmVwbGFjZUVudkRpY3QoZGVzdCwgc3JjKToKKyAgICAgICAgIyBDaGFuZ2VzIG1hZGUgYnkgb3Mu
ZW52aXJvbi5jbGVhciBhcmUgbm90IGluaGVyaXRhYmxlIGJ5IGNoaWxkCisgICAgICAgICMgcHJv
Y2Vzc2VzIHVudGlsIFB5dGhvbiAyLjYuIFRvIHByb2R1Y2UgaW5oZXJpdGFibGUgY2hhbmdlcyB3
ZSBoYXZlCisgICAgICAgICMgdG8gZGVsZXRlIGVudmlyb25tZW50IGl0ZW1zIHdpdGggdGhlIGRl
bCBzdGF0ZW1lbnQuCisgICAgICAgIGZvciBrZXkgaW4gZGVzdC5rZXlzKCk6CisgICAgICAgICAg
ZGVsIGRlc3Rba2V5XQorICAgICAgICBkZXN0LnVwZGF0ZShzcmMpCisKKyAgICAgICMgV2hlbiAn
ZW52JyBpcyBub3QgTm9uZSwgYmFja3VwIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYW5kIHJl
cGxhY2UKKyAgICAgICMgdGhlbSB3aXRoIHRoZSBwYXNzZWQgJ2VudicuIFdoZW4gJ2VudicgaXMg
Tm9uZSwgd2Ugc2ltcGx5IHVzZSB0aGUKKyAgICAgICMgY3VycmVudCAnb3MuZW52aXJvbicgZm9y
IGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgc3VicHJvY2Vzcy5Qb3BlbgorICAgICAgIyBzZW1hbnRp
Y3MgdXNlZCBhYm92ZS4KKyAgICAgIGlmIGVudiBpcyBub3QgTm9uZToKKyAgICAgICAgb2xkX2Vu
dmlyb24gPSBvcy5lbnZpcm9uLmNvcHkoKQorICAgICAgICBfUmVwbGFjZUVudkRpY3Qob3MuZW52
aXJvbiwgZW52KQorCisgICAgICB0cnk6CisgICAgICAgIGlmIHdvcmtpbmdfZGlyIGlzIG5vdCBO
b25lOgorICAgICAgICAgIG9zLmNoZGlyKHdvcmtpbmdfZGlyKQorICAgICAgICBpZiBjYXB0dXJl
X3N0ZGVycjoKKyAgICAgICAgICBwID0gcG9wZW4yLlBvcGVuNChjb21tYW5kKQorICAgICAgICBl
bHNlOgorICAgICAgICAgIHAgPSBwb3BlbjIuUG9wZW4zKGNvbW1hbmQpCisgICAgICAgIHAudG9j
aGlsZC5jbG9zZSgpCisgICAgICAgIHNlbGYub3V0cHV0ID0gcC5mcm9tY2hpbGQucmVhZCgpCisg
ICAgICAgIHJldF9jb2RlID0gcC53YWl0KCkKKyAgICAgIGZpbmFsbHk6CisgICAgICAgIG9zLmNo
ZGlyKG9sZF9kaXIpCisKKyAgICAgICAgIyBSZXN0b3JlIHRoZSBvbGQgZW52aXJvbm1lbnQgdmFy
aWFibGVzCisgICAgICAgICMgaWYgdGhleSB3ZXJlIHJlcGxhY2VkLgorICAgICAgICBpZiBlbnYg
aXMgbm90IE5vbmU6CisgICAgICAgICAgX1JlcGxhY2VFbnZEaWN0KG9zLmVudmlyb24sIG9sZF9l
bnZpcm9uKQorCisgICAgICAjIENvbnZlcnRzIHJldF9jb2RlIHRvIG1hdGNoIHRoZSBzZW1hbnRp
Y3Mgb2YKKyAgICAgICMgc3VicHJvY2Vzcy5Qb3Blbi5yZXR1cm5jb2RlLgorICAgICAgaWYgb3Mu
V0lGU0lHTkFMRUQocmV0X2NvZGUpOgorICAgICAgICBzZWxmLl9yZXR1cm5fY29kZSA9IC1vcy5X
VEVSTVNJRyhyZXRfY29kZSkKKyAgICAgIGVsc2U6ICAjIG9zLldJRkVYSVRFRChyZXRfY29kZSkg
c2hvdWxkIHJldHVybiBUcnVlIGhlcmUuCisgICAgICAgIHNlbGYuX3JldHVybl9jb2RlID0gb3Mu
V0VYSVRTVEFUVVMocmV0X2NvZGUpCisKKyAgICBpZiBzZWxmLl9yZXR1cm5fY29kZSA8IDA6Cisg
ICAgICBzZWxmLnRlcm1pbmF0ZWRfYnlfc2lnbmFsID0gVHJ1ZQorICAgICAgc2VsZi5leGl0ZWQg
PSBGYWxzZQorICAgICAgc2VsZi5zaWduYWwgPSAtc2VsZi5fcmV0dXJuX2NvZGUKKyAgICBlbHNl
OgorICAgICAgc2VsZi50ZXJtaW5hdGVkX2J5X3NpZ25hbCA9IEZhbHNlCisgICAgICBzZWxmLmV4
aXRlZCA9IFRydWUKKyAgICAgIHNlbGYuZXhpdF9jb2RlID0gc2VsZi5fcmV0dXJuX2NvZGUKKwor
CitkZWYgTWFpbigpOgorICAiIiJSdW5zIHRoZSB1bml0IHRlc3QuIiIiCisKKyAgIyBXZSBtdXN0
IGNhbGwgX1BhcnNlQW5kU3RyaXBHVGVzdEZsYWdzKCkgYmVmb3JlIGNhbGxpbmcKKyAgIyB1bml0
dGVzdC5tYWluKCkuICBPdGhlcndpc2UgdGhlIGxhdHRlciB3aWxsIGJlIGNvbmZ1c2VkIGJ5IHRo
ZQorICAjIC0tZ3Rlc3RfKiBmbGFncy4KKyAgX1BhcnNlQW5kU3RyaXBHVGVzdEZsYWdzKHN5cy5h
cmd2KQorICAjIFRoZSB0ZXN0ZWQgYmluYXJpZXMgc2hvdWxkIG5vdCBiZSB3cml0aW5nIFhNTCBv
dXRwdXQgZmlsZXMgdW5sZXNzIHRoZQorICAjIHNjcmlwdCBleHBsaWNpdGx5IGluc3RydWN0cyB0
aGVtIHRvLgorICAjIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IE1vdmUgdGhpcyBpbnRvIFN1YnBy
b2Nlc3Mgd2hlbiB3ZSBpbXBsZW1lbnQKKyAgIyBwYXNzaW5nIGVudmlyb25tZW50IGludG8gaXQg
YXMgYSBwYXJhbWV0ZXIuCisgIGlmIEdURVNUX09VVFBVVF9WQVJfTkFNRSBpbiBvcy5lbnZpcm9u
OgorICAgIGRlbCBvcy5lbnZpcm9uW0dURVNUX09VVFBVVF9WQVJfTkFNRV0KKworICBfdGVzdF9t
b2R1bGUubWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X3Rocm93X29u
X2ZhaWx1cmVfZXhfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3dfb25fZmFp
bHVyZV9leF90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkNDZjNzZmMTYxMjFmZDFmNDdjOTc0MTBmM2Uw
OGVmNGExMTZlZGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X3Ro
cm93X29uX2ZhaWx1cmVfZXhfdGVzdC5jYwpAQCAtMCwwICsxLDkyIEBACisvLyBDb3B5cmlnaHQg
MjAwOSwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4K
Ky8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisv
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gQXV0aG9yOiB3YW5AZ29vZ2xl
LmNvbSAoWmhhbnlvbmcgV2FuKQorCisvLyBUZXN0cyBHb29nbGUgVGVzdCdzIHRocm93LW9uLWZh
aWx1cmUgbW9kZSB3aXRoIGV4Y2VwdGlvbnMgZW5hYmxlZC4KKworI2luY2x1ZGUgImd0ZXN0L2d0
ZXN0LmgiCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1
ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KKworLy8gUHJpbnRzIHRoZSBnaXZl
biBmYWlsdXJlIG1lc3NhZ2UgYW5kIGV4aXRzIHRoZSBwcm9ncmFtIHdpdGgKKy8vIG5vbi16ZXJv
LiAgV2UgdXNlIHRoaXMgaW5zdGVhZCBvZiBhIEdvb2dsZSBUZXN0IGFzc2VydGlvbiB0bworLy8g
aW5kaWNhdGUgYSBmYWlsdXJlLCBhcyB0aGUgbGF0dGVyIGlzIGJlZW4gdGVzdGVkIGFuZCBjYW5u
b3QgYmUKKy8vIHJlbGllZCBvbi4KK3ZvaWQgRmFpbChjb25zdCBjaGFyKiBtc2cpIHsKKyAgcHJp
bnRmKCJGQUlMVVJFOiAlc1xuIiwgbXNnKTsKKyAgZmZsdXNoKHN0ZG91dCk7CisgIGV4aXQoMSk7
Cit9CisKKy8vIFRlc3RzIHRoYXQgYW4gYXNzZXJ0aW9uIGZhaWx1cmUgdGhyb3dzIGEgc3ViY2xh
c3Mgb2YKKy8vIHN0ZDo6cnVudGltZV9lcnJvci4KK3ZvaWQgVGVzdEZhaWx1cmVUaHJvd3NSdW50
aW1lRXJyb3IoKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSkgPSB0
cnVlOworCisgIC8vIEEgc3VjY2Vzc2Z1bCBhc3NlcnRpb24gc2hvdWxkbid0IHRocm93LgorICB0
cnkgeworICAgIEVYUEVDVF9FUSgzLCAzKTsKKyAgfSBjYXRjaCguLi4pIHsKKyAgICBGYWlsKCJB
IHN1Y2Nlc3NmdWwgYXNzZXJ0aW9uIHdyb25nZnVsbHkgdGhyZXcuIik7CisgIH0KKworICAvLyBB
IGZhaWxlZCBhc3NlcnRpb24gc2hvdWxkIHRocm93IGEgc3ViY2xhc3Mgb2Ygc3RkOjpydW50aW1l
X2Vycm9yLgorICB0cnkgeworICAgIEVYUEVDVF9FUSgyLCAzKSA8PCAiRXhwZWN0ZWQgZmFpbHVy
ZSI7CisgIH0gY2F0Y2goY29uc3Qgc3RkOjpydW50aW1lX2Vycm9yJiBlKSB7CisgICAgaWYgKHN0
cnN0cihlLndoYXQoKSwgIkV4cGVjdGVkIGZhaWx1cmUiKSAhPSBOVUxMKQorICAgICAgcmV0dXJu
OworCisgICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJBIGZhaWxlZCBhc3NlcnRpb24gZGlk
IHRocm93IGFuIGV4Y2VwdGlvbiBvZiB0aGUgcmlnaHQgdHlwZSwgIgorICAgICAgICAgICAiYnV0
IHRoZSBtZXNzYWdlIGlzIGluY29ycmVjdC4gIEluc3RlYWQgb2YgY29udGFpbmluZyBcIkV4cGVj
dGVkICIKKyAgICAgICAgICAgImZhaWx1cmVcIiwgaXQgaXM6XG4iKTsKKyAgICBGYWlsKGUud2hh
dCgpKTsKKyAgfSBjYXRjaCguLi4pIHsKKyAgICBGYWlsKCJBIGZhaWxlZCBhc3NlcnRpb24gdGhy
ZXcgdGhlIHdyb25nIHR5cGUgb2YgZXhjZXB0aW9uLiIpOworICB9CisgIEZhaWwoIkEgZmFpbGVk
IGFzc2VydGlvbiBzaG91bGQndmUgdGhyb3duIGJ1dCBkaWRuJ3QuIik7Cit9CisKK2ludCBtYWlu
KGludCBhcmdjLCBjaGFyKiogYXJndikgeworICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJn
YywgYXJndik7CisKKyAgLy8gV2Ugd2FudCB0byBlbnN1cmUgdGhhdCBwZW9wbGUgY2FuIHVzZSBH
b29nbGUgVGVzdCBhc3NlcnRpb25zIGluCisgIC8vIG90aGVyIHRlc3RpbmcgZnJhbWV3b3Jrcywg
YXMgbG9uZyBhcyB0aGV5IGluaXRpYWxpemUgR29vZ2xlIFRlc3QKKyAgLy8gcHJvcGVybHkgYW5k
IHNldCB0aGUgdGhyb3duLW9uLWZhaWx1cmUgbW9kZS4gIFRoZXJlZm9yZSwgd2UgZG9uJ3QKKyAg
Ly8gdXNlIEdvb2dsZSBUZXN0J3MgY29uc3RydWN0cyBmb3IgZGVmaW5pbmcgYW5kIHJ1bm5pbmcg
dGVzdHMKKyAgLy8gKGUuZy4gVEVTVCBhbmQgUlVOX0FMTF9URVNUUykgaGVyZS4KKworICBUZXN0
RmFpbHVyZVRocm93c1J1bnRpbWVFcnJvcigpOworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90ZXN0LnB5IGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZXRlc3QvdGVzdC9ndGVzdF90aHJvd19vbl9mYWlsdXJlX3Rlc3QucHkKbmV3IGZpbGUgbW9kZSAx
MDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2U3
NzQwY2FiYjhhY2ZkMjEyYzM3ZWI4MTY5MzcyMjI2MTc0M2E3MQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90ZXN0LnB5CkBAIC0wLDAg
KzEsMTcxIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMDksIEdv
b2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisi
IiJUZXN0cyBHb29nbGUgVGVzdCdzIHRocm93LW9uLWZhaWx1cmUgbW9kZSB3aXRoIGV4Y2VwdGlv
bnMgZGlzYWJsZWQuCisKK1RoaXMgc2NyaXB0IGludm9rZXMgZ3Rlc3RfdGhyb3dfb25fZmFpbHVy
ZV90ZXN0XyAoYSBwcm9ncmFtIHdyaXR0ZW4gd2l0aAorR29vZ2xlIFRlc3QpIHdpdGggZGlmZmVy
ZW50IGVudmlyb25tZW50cyBhbmQgY29tbWFuZCBsaW5lIGZsYWdzLgorIiIiCisKK19fYXV0aG9y
X18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCisKK2ltcG9ydCBvcworaW1wb3J0
IGd0ZXN0X3Rlc3RfdXRpbHMKKworCisjIENvbnN0YW50cy4KKworIyBUaGUgY29tbWFuZCBsaW5l
IGZsYWcgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyB0aGUgdGhyb3ctb24tZmFpbHVyZSBtb2RlLgor
VEhST1dfT05fRkFJTFVSRSA9ICdndGVzdF90aHJvd19vbl9mYWlsdXJlJworCisjIFBhdGggdG8g
dGhlIGd0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdF8gcHJvZ3JhbSwgY29tcGlsZWQgd2l0aAor
IyBleGNlcHRpb25zIGRpc2FibGVkLgorRVhFX1BBVEggPSBndGVzdF90ZXN0X3V0aWxzLkdldFRl
c3RFeGVjdXRhYmxlUGF0aCgKKyAgICAnZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90ZXN0XycpCisK
KworIyBVdGlsaXRpZXMuCisKKworZGVmIFNldEVudlZhcihlbnZfdmFyLCB2YWx1ZSk6CisgICIi
IlNldHMgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYSBnaXZlbiB2YWx1ZTsgdW5zZXRzIGl0
IHdoZW4gdGhlCisgIGdpdmVuIHZhbHVlIGlzIE5vbmUuCisgICIiIgorCisgIGVudl92YXIgPSBl
bnZfdmFyLnVwcGVyKCkKKyAgaWYgdmFsdWUgaXMgbm90IE5vbmU6CisgICAgb3MuZW52aXJvbltl
bnZfdmFyXSA9IHZhbHVlCisgIGVsaWYgZW52X3ZhciBpbiBvcy5lbnZpcm9uOgorICAgIGRlbCBv
cy5lbnZpcm9uW2Vudl92YXJdCisKKworZGVmIFJ1bihjb21tYW5kKToKKyAgIiIiUnVucyBhIGNv
bW1hbmQ7IHJldHVybnMgVHJ1ZS9GYWxzZSBpZiBpdHMgZXhpdCBjb2RlIGlzL2lzbid0IDAuIiIi
CisKKyAgcHJpbnQoJ1J1bm5pbmcgIiVzIi4gLiAuJyAlICcgJy5qb2luKGNvbW1hbmQpKQorICBw
ID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKGNvbW1hbmQpCisgIHJldHVybiBwLmV4aXRl
ZCBhbmQgcC5leGl0X2NvZGUgPT0gMAorCisKKyMgVGhlIHRlc3RzLiAgVE9ETyh3YW5AZ29vZ2xl
LmNvbSk6IHJlZmFjdG9yIHRoZSBjbGFzcyB0byBzaGFyZSBjb21tb24KKyMgbG9naWMgd2l0aCBj
b2RlIGluIGd0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3QucHkuCitjbGFzcyBUaHJvd09u
RmFpbHVyZVRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CisgICIiIlRlc3RzIHRoZSB0
aHJvdy1vbi1mYWlsdXJlIG1vZGUuIiIiCisKKyAgZGVmIFJ1bkFuZFZlcmlmeShzZWxmLCBlbnZf
dmFyX3ZhbHVlLCBmbGFnX3ZhbHVlLCBzaG91bGRfZmFpbCk6CisgICAgIiIiUnVucyBndGVzdF90
aHJvd19vbl9mYWlsdXJlX3Rlc3RfIGFuZCB2ZXJpZmllcyB0aGF0IGl0IGRvZXMKKyAgICAob3Ig
ZG9lcyBub3QpIGV4aXQgd2l0aCBhIG5vbi16ZXJvIGNvZGUuCisKKyAgICBBcmdzOgorICAgICAg
ZW52X3Zhcl92YWx1ZTogICAgdmFsdWUgb2YgdGhlIEdURVNUX0JSRUFLX09OX0ZBSUxVUkUgZW52
aXJvbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlOyBOb25lIGlmIHRoZSB2
YXJpYWJsZSBzaG91bGQgYmUgdW5zZXQuCisgICAgICBmbGFnX3ZhbHVlOiAgICAgICB2YWx1ZSBv
ZiB0aGUgLS1ndGVzdF9icmVha19vbl9mYWlsdXJlIGZsYWc7CisgICAgICAgICAgICAgICAgICAg
ICAgICBOb25lIGlmIHRoZSBmbGFnIHNob3VsZCBub3QgYmUgcHJlc2VudC4KKyAgICAgIHNob3Vs
ZF9mYWlsOiAgICAgIFRydWUgaWZmIHRoZSBwcm9ncmFtIGlzIGV4cGVjdGVkIHRvIGZhaWwuCisg
ICAgIiIiCisKKyAgICBTZXRFbnZWYXIoVEhST1dfT05fRkFJTFVSRSwgZW52X3Zhcl92YWx1ZSkK
KworICAgIGlmIGVudl92YXJfdmFsdWUgaXMgTm9uZToKKyAgICAgIGVudl92YXJfdmFsdWVfbXNn
ID0gJyBpcyBub3Qgc2V0JworICAgIGVsc2U6CisgICAgICBlbnZfdmFyX3ZhbHVlX21zZyA9ICc9
JyArIGVudl92YXJfdmFsdWUKKworICAgIGlmIGZsYWdfdmFsdWUgaXMgTm9uZToKKyAgICAgIGZs
YWcgPSAnJworICAgIGVsaWYgZmxhZ192YWx1ZSA9PSAnMCc6CisgICAgICBmbGFnID0gJy0tJXM9
MCcgJSBUSFJPV19PTl9GQUlMVVJFCisgICAgZWxzZToKKyAgICAgIGZsYWcgPSAnLS0lcycgJSBU
SFJPV19PTl9GQUlMVVJFCisKKyAgICBjb21tYW5kID0gW0VYRV9QQVRIXQorICAgIGlmIGZsYWc6
CisgICAgICBjb21tYW5kLmFwcGVuZChmbGFnKQorCisgICAgaWYgc2hvdWxkX2ZhaWw6CisgICAg
ICBzaG91bGRfb3Jfbm90ID0gJ3Nob3VsZCcKKyAgICBlbHNlOgorICAgICAgc2hvdWxkX29yX25v
dCA9ICdzaG91bGQgbm90JworCisgICAgZmFpbGVkID0gbm90IFJ1bihjb21tYW5kKQorCisgICAg
U2V0RW52VmFyKFRIUk9XX09OX0ZBSUxVUkUsIE5vbmUpCisKKyAgICBtc2cgPSAoJ3doZW4gJXMl
cywgYW4gYXNzZXJ0aW9uIGZhaWx1cmUgaW4gIiVzIiAlcyBjYXVzZSBhIG5vbi16ZXJvICcKKyAg
ICAgICAgICAgJ2V4aXQgY29kZS4nICUKKyAgICAgICAgICAgKFRIUk9XX09OX0ZBSUxVUkUsIGVu
dl92YXJfdmFsdWVfbXNnLCAnICcuam9pbihjb21tYW5kKSwKKyAgICAgICAgICAgIHNob3VsZF9v
cl9ub3QpKQorICAgIHNlbGYuYXNzZXJ0XyhmYWlsZWQgPT0gc2hvdWxkX2ZhaWwsIG1zZykKKwor
ICBkZWYgdGVzdERlZmF1bHRCZWhhdmlvcihzZWxmKToKKyAgICAiIiJUZXN0cyB0aGUgYmVoYXZp
b3Igb2YgdGhlIGRlZmF1bHQgbW9kZS4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92
YXJfdmFsdWU9Tm9uZSwgZmxhZ192YWx1ZT1Ob25lLCBzaG91bGRfZmFpbD1GYWxzZSkKKworICBk
ZWYgdGVzdFRocm93T25GYWlsdXJlRW52VmFyKHNlbGYpOgorICAgICIiIlRlc3RzIHVzaW5nIHRo
ZSBHVEVTVF9USFJPV19PTl9GQUlMVVJFIGVudmlyb25tZW50IHZhcmlhYmxlLiIiIgorCisgICAg
c2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMCcsCisgICAgICAgICAgICAgICAgICAg
ICAgZmxhZ192YWx1ZT1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgIHNob3VsZF9mYWlsPUZh
bHNlKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzEnLAorICAgICAgICAg
ICAgICAgICAgICAgIGZsYWdfdmFsdWU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBzaG91
bGRfZmFpbD1UcnVlKQorCisgIGRlZiB0ZXN0VGhyb3dPbkZhaWx1cmVGbGFnKHNlbGYpOgorICAg
ICIiIlRlc3RzIHVzaW5nIHRoZSAtLWd0ZXN0X3Rocm93X29uX2ZhaWx1cmUgZmxhZy4iIiIKKwor
ICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9Tm9uZSwKKyAgICAgICAgICAgICAg
ICAgICAgICBmbGFnX3ZhbHVlPScwJywKKyAgICAgICAgICAgICAgICAgICAgICBzaG91bGRfZmFp
bD1GYWxzZSkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPU5vbmUsCisgICAg
ICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMScsCisgICAgICAgICAgICAgICAgICAgICAg
c2hvdWxkX2ZhaWw9VHJ1ZSkKKworICBkZWYgdGVzdFRocm93T25GYWlsdXJlRmxhZ092ZXJyaWRl
c0VudlZhcihzZWxmKToKKyAgICAiIiJUZXN0cyB0aGF0IC0tZ3Rlc3RfdGhyb3dfb25fZmFpbHVy
ZSBvdmVycmlkZXMgR1RFU1RfVEhST1dfT05fRkFJTFVSRS4iIiIKKworICAgIHNlbGYuUnVuQW5k
VmVyaWZ5KGVudl92YXJfdmFsdWU9JzAnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFs
dWU9JzAnLAorICAgICAgICAgICAgICAgICAgICAgIHNob3VsZF9mYWlsPUZhbHNlKQorICAgIHNl
bGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzAnLAorICAgICAgICAgICAgICAgICAgICAg
IGZsYWdfdmFsdWU9JzEnLAorICAgICAgICAgICAgICAgICAgICAgIHNob3VsZF9mYWlsPVRydWUp
CisgICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMScsCisgICAgICAgICAgICAg
ICAgICAgICAgZmxhZ192YWx1ZT0nMCcsCisgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkX2Zh
aWw9RmFsc2UpCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMScsCisgICAg
ICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMScsCisgICAgICAgICAgICAgICAgICAgICAg
c2hvdWxkX2ZhaWw9VHJ1ZSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICBndGVz
dF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF90
aHJvd19vbl9mYWlsdXJlX3Rlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF90aHJvd19v
bl9mYWlsdXJlX3Rlc3RfLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiODhmZTNkOWIzYjhiNWYwZTM2NGRiMGRk
NjlmZjdkYjE4YWE2M2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0
X3Rocm93X29uX2ZhaWx1cmVfdGVzdF8uY2MKQEAgLTAsMCArMSw3MiBAQAorLy8gQ29weXJpZ2h0
IDIwMDksIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24u
CisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEF1dGhvcjogd2FuQGdvb2ds
ZS5jb20gKFpoYW55b25nIFdhbikKKworLy8gVGVzdHMgR29vZ2xlIFRlc3QncyB0aHJvdy1vbi1m
YWlsdXJlIG1vZGUgd2l0aCBleGNlcHRpb25zIGRpc2FibGVkLgorLy8KKy8vIFRoaXMgcHJvZ3Jh
bSBtdXN0IGJlIGNvbXBpbGVkIHdpdGggZXhjZXB0aW9ucyBkaXNhYmxlZC4gIEl0IHdpbGwgYmUK
Ky8vIGludm9rZWQgYnkgZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90ZXN0LnB5LCBhbmQgaXMgZXhw
ZWN0ZWQgdG8gZXhpdAorLy8gd2l0aCBub24temVybyBpbiB0aGUgdGhyb3ctb24tZmFpbHVyZSBt
b2RlIG9yIDAgb3RoZXJ3aXNlLgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworI2luY2x1
ZGUgPHN0ZGlvLmg+ICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBmZmx1c2gsIGZwcmludGYs
IE5VTEwsIGV0Yy4KKyNpbmNsdWRlIDxzdGRsaWIuaD4gICAgICAgICAgICAgICAgICAgICAvLyBm
b3IgZXhpdAorI2luY2x1ZGUgPGV4Y2VwdGlvbj4gICAgICAgICAgICAgICAgICAgIC8vIGZvciBz
ZXRfdGVybWluYXRlCisKKy8vIFRoaXMgdGVybWluYXRlIGhhbmRsZXIgYWJvcnRzIHRoZSBwcm9n
cmFtIHVzaW5nIGV4aXQoKSByYXRoZXIgdGhhbiBhYm9ydCgpLgorLy8gVGhpcyBhdm9pZHMgc2hv
d2luZyBwb3AtdXBzIG9uIFdpbmRvd3Mgc3lzdGVtcyBhbmQgY29yZSBkdW1wcyBvbiBVbml4LWxp
a2UKKy8vIG9uZXMuCit2b2lkIFRlcm1pbmF0ZUhhbmRsZXIoKSB7CisgIGZwcmludGYoc3RkZXJy
LCAiJXNcbiIsICJVbmhhbmRsZWQgQysrIGV4Y2VwdGlvbiB0ZXJtaW5hdGluZyB0aGUgcHJvZ3Jh
bS4iKTsKKyAgZmZsdXNoKE5VTEwpOworICBleGl0KDEpOworfQorCitpbnQgbWFpbihpbnQgYXJn
YywgY2hhcioqIGFyZ3YpIHsKKyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUworICBzdGQ6OnNldF90
ZXJtaW5hdGUoJlRlcm1pbmF0ZUhhbmRsZXIpOworI2VuZGlmCisgIHRlc3Rpbmc6OkluaXRHb29n
bGVUZXN0KCZhcmdjLCBhcmd2KTsKKworICAvLyBXZSB3YW50IHRvIGVuc3VyZSB0aGF0IHBlb3Bs
ZSBjYW4gdXNlIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgaW4KKyAgLy8gb3RoZXIgdGVzdGluZyBm
cmFtZXdvcmtzLCBhcyBsb25nIGFzIHRoZXkgaW5pdGlhbGl6ZSBHb29nbGUgVGVzdAorICAvLyBw
cm9wZXJseSBhbmQgc2V0IHRoZSB0aHJvdy1vbi1mYWlsdXJlIG1vZGUuICBUaGVyZWZvcmUsIHdl
IGRvbid0CisgIC8vIHVzZSBHb29nbGUgVGVzdCdzIGNvbnN0cnVjdHMgZm9yIGRlZmluaW5nIGFu
ZCBydW5uaW5nIHRlc3RzCisgIC8vIChlLmcuIFRFU1QgYW5kIFJVTl9BTExfVEVTVFMpIGhlcmUu
CisKKyAgLy8gSW4gdGhlIHRocm93LW9uLWZhaWx1cmUgbW9kZSB3aXRoIGV4Y2VwdGlvbnMgZGlz
YWJsZWQsIHRoaXMKKyAgLy8gYXNzZXJ0aW9uIHdpbGwgY2F1c2UgdGhlIHByb2dyYW0gdG8gZXhp
dCB3aXRoIGEgbm9uLXplcm8gY29kZS4KKyAgRVhQRUNUX0VRKDIsIDMpOworCisgIC8vIFdoZW4g
bm90IGluIHRoZSB0aHJvdy1vbi1mYWlsdXJlIG1vZGUsIHRoZSBjb250cm9sIHdpbGwgcmVhY2gK
KyAgLy8gaGVyZS4KKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0
L2d0ZXN0X3VuaW5pdGlhbGl6ZWRfdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfdW5p
bml0aWFsaXplZF90ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzNTgzNzAwOTdmYjg0YzUzYWFjZmYzMTM3
MGE0NWEyNGY4N2YyNjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0
X3VuaW5pdGlhbGl6ZWRfdGVzdC5weQpAQCAtMCwwICsxLDcwIEBACisjIS91c3IvYmluL2VudiBw
eXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0
cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJWZXJpZmllcyB0aGF0IEdvb2dsZSBUZXN0
IHdhcm5zIHRoZSB1c2VyIHdoZW4gbm90IGluaXRpYWxpemVkIHByb3Blcmx5LiIiIgorCitfX2F1
dGhvcl9fID0gJ3dhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pJworCitpbXBvcnQgZ3Rlc3Rf
dGVzdF91dGlscworCisKK0NPTU1BTkQgPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRh
YmxlUGF0aCgnZ3Rlc3RfdW5pbml0aWFsaXplZF90ZXN0XycpCisKKworZGVmIEFzc2VydChjb25k
aXRpb24pOgorICBpZiBub3QgY29uZGl0aW9uOgorICAgIHJhaXNlIEFzc2VydGlvbkVycm9yCisK
KworZGVmIEFzc2VydEVxKGV4cGVjdGVkLCBhY3R1YWwpOgorICBpZiBleHBlY3RlZCAhPSBhY3R1
YWw6CisgICAgcHJpbnQoJ0V4cGVjdGVkOiAlcycgJSAoZXhwZWN0ZWQsKSkKKyAgICBwcmludCgn
ICBBY3R1YWw6ICVzJyAlIChhY3R1YWwsKSkKKyAgICByYWlzZSBBc3NlcnRpb25FcnJvcgorCisK
K2RlZiBUZXN0RXhpdENvZGVBbmRPdXRwdXQoY29tbWFuZCk6CisgICIiIlJ1bnMgdGhlIGdpdmVu
IGNvbW1hbmQgYW5kIHZlcmlmaWVzIGl0cyBleGl0IGNvZGUgYW5kIG91dHB1dC4iIiIKKworICAj
IFZlcmlmaWVzIHRoYXQgJ2NvbW1hbmQnIGV4aXRzIHdpdGggY29kZSAxLgorICBwID0gZ3Rlc3Rf
dGVzdF91dGlscy5TdWJwcm9jZXNzKGNvbW1hbmQpCisgIEFzc2VydChwLmV4aXRlZCkKKyAgQXNz
ZXJ0RXEoMSwgcC5leGl0X2NvZGUpCisgIEFzc2VydCgnSW5pdEdvb2dsZVRlc3QnIGluIHAub3V0
cHV0KQorCisKK2NsYXNzIEdUZXN0VW5pbml0aWFsaXplZFRlc3QoZ3Rlc3RfdGVzdF91dGlscy5U
ZXN0Q2FzZSk6CisgIGRlZiB0ZXN0RXhpdENvZGVBbmRPdXRwdXQoc2VsZik6CisgICAgVGVzdEV4
aXRDb2RlQW5kT3V0cHV0KENPTU1BTkQpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoK
KyAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3Qv
Z3Rlc3RfdW5pbml0aWFsaXplZF90ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfdW5p
bml0aWFsaXplZF90ZXN0Xy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDMxNjk4N2ZiYjVkNmRjMDg5MDkyNTVh
MzcyOGNlMzVhMmVjN2IyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVz
dF91bmluaXRpYWxpemVkX3Rlc3RfLmNjCkBAIC0wLDAgKzEsNDMgQEAKKy8vIENvcHlyaWdodCAy
MDA4LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgor
Ly8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
Ky8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8v
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBBdXRob3I6IHdhbkBnb29nbGUu
Y29tIChaaGFueW9uZyBXYW4pCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCitURVNUKER1
bW15VGVzdCwgRHVtbXkpIHsKKyAgLy8gVGhpcyB0ZXN0IGRvZXNuJ3QgdmVyaWZ5IGFueXRoaW5n
LiAgV2UganVzdCBuZWVkIGl0IHRvIGNyZWF0ZSBhCisgIC8vIHJlYWxpc3RpYyBzdGFnZSBmb3Ig
dGVzdGluZyB0aGUgYmVoYXZpb3Igb2YgR29vZ2xlIFRlc3Qgd2hlbgorICAvLyBSVU5fQUxMX1RF
U1RTKCkgaXMgY2FsbGVkIHdpdGhvdXQgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoKSBiZWluZwor
ICAvLyBjYWxsZWQgZmlyc3QuCit9CisKK2ludCBtYWluKCkgeworICByZXR1cm4gUlVOX0FMTF9U
RVNUUygpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF91bml0dGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfdW5pdHRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzYyN2I4
ODBhNWI5ZTdmZjQzNTRkZjkxMzQ5NDhiZDBmMWNjYjBlNAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfdW5pdHRlc3QuY2MKQEAgLTAsMCArMSw3NzA1IEBACisvLyBD
b3B5cmlnaHQgMjAwNSwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLwor
Ly8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3Ry
aWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8v
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gQXV0aG9yOiB3
YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorLy8KKy8vIFRlc3RzIGZvciBHb29nbGUgVGVz
dCBpdHNlbGYuICBUaGlzIHZlcmlmaWVzIHRoYXQgdGhlIGJhc2ljIGNvbnN0cnVjdHMgb2YKKy8v
IEdvb2dsZSBUZXN0IHdvcmsuCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCisvLyBWZXJp
ZmllcyB0aGF0IHRoZSBjb21tYW5kIGxpbmUgZmxhZyB2YXJpYWJsZXMgY2FuIGJlIGFjY2Vzc2Vk
CisvLyBpbiBjb2RlIG9uY2UgPGd0ZXN0L2d0ZXN0Lmg+IGhhcyBiZWVuICNpbmNsdWRlZC4KKy8v
IERvIG5vdCBtb3ZlIGl0IGFmdGVyIG90aGVyICNpbmNsdWRlcy4KK1RFU1QoQ29tbWFuZExpbmVG
bGFnc1Rlc3QsIENhbkJlQWNjZXNzZWRJbkNvZGVPbmNlR1Rlc3RISXNJbmNsdWRlZCkgeworICBi
b29sIGR1bW15ID0gdGVzdGluZzo6R1RFU1RfRkxBRyhhbHNvX3J1bl9kaXNhYmxlZF90ZXN0cykK
KyAgICAgIHx8IHRlc3Rpbmc6OkdURVNUX0ZMQUcoYnJlYWtfb25fZmFpbHVyZSkKKyAgICAgIHx8
IHRlc3Rpbmc6OkdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykKKyAgICAgIHx8IHRlc3Rpbmc6
OkdURVNUX0ZMQUcoY29sb3IpICE9ICJ1bmtub3duIgorICAgICAgfHwgdGVzdGluZzo6R1RFU1Rf
RkxBRyhmaWx0ZXIpICE9ICJ1bmtub3duIgorICAgICAgfHwgdGVzdGluZzo6R1RFU1RfRkxBRyhs
aXN0X3Rlc3RzKQorICAgICAgfHwgdGVzdGluZzo6R1RFU1RfRkxBRyhvdXRwdXQpICE9ICJ1bmtu
b3duIgorICAgICAgfHwgdGVzdGluZzo6R1RFU1RfRkxBRyhwcmludF90aW1lKQorICAgICAgfHwg
dGVzdGluZzo6R1RFU1RfRkxBRyhyYW5kb21fc2VlZCkKKyAgICAgIHx8IHRlc3Rpbmc6OkdURVNU
X0ZMQUcocmVwZWF0KSA+IDAKKyAgICAgIHx8IHRlc3Rpbmc6OkdURVNUX0ZMQUcoc2hvd19pbnRl
cm5hbF9zdGFja19mcmFtZXMpCisgICAgICB8fCB0ZXN0aW5nOjpHVEVTVF9GTEFHKHNodWZmbGUp
CisgICAgICB8fCB0ZXN0aW5nOjpHVEVTVF9GTEFHKHN0YWNrX3RyYWNlX2RlcHRoKSA+IDAKKyAg
ICAgIHx8IHRlc3Rpbmc6OkdURVNUX0ZMQUcoc3RyZWFtX3Jlc3VsdF90bykgIT0gInVua25vd24i
CisgICAgICB8fCB0ZXN0aW5nOjpHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpOworICBFWFBF
Q1RfVFJVRShkdW1teSB8fCAhZHVtbXkpOyAgLy8gU3VwcHJlc3NlcyB3YXJuaW5nIHRoYXQgZHVt
bXkgaXMgdW51c2VkLgorfQorCisjaW5jbHVkZSA8bGltaXRzLmg+ICAvLyBGb3IgSU5UX01BWC4K
KyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx0aW1l
Lmg+CisKKyNpbmNsdWRlIDxtYXA+CisjaW5jbHVkZSA8dmVjdG9yPgorI2luY2x1ZGUgPG9zdHJl
YW0+CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1zcGkuaCIKKworLy8gSW5kaWNhdGVzIHRoYXQg
dGhpcyB0cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3QncworLy8gaW1wbGVt
ZW50YXRpb24uICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlubC5oIGlzCisv
LyBpbmNsdWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVycm9yLiAgVGhpcyB0cmlj
ayBpcyB0bworLy8gcHJldmVudCBhIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkgaW5jbHVkaW5nIGd0
ZXN0LWludGVybmFsLWlubC5oIGluCisvLyBoaXMgY29kZS4KKyNkZWZpbmUgR1RFU1RfSU1QTEVN
RU5UQVRJT05fIDEKKyNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCisjdW5kZWYg
R1RFU1RfSU1QTEVNRU5UQVRJT05fCisKK25hbWVzcGFjZSB0ZXN0aW5nIHsKK25hbWVzcGFjZSBp
bnRlcm5hbCB7CisKKyNpZiBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfCisKK2NsYXNzIFN0cmVh
bWluZ0xpc3RlbmVyVGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwdWJsaWM6CisgIGNsYXNzIEZha2VT
b2NrZXRXcml0ZXIgOiBwdWJsaWMgU3RyZWFtaW5nTGlzdGVuZXI6OkFic3RyYWN0U29ja2V0V3Jp
dGVyIHsKKyAgIHB1YmxpYzoKKyAgICAvLyBTZW5kcyBhIHN0cmluZyB0byB0aGUgc29ja2V0Lgor
ICAgIHZpcnR1YWwgdm9pZCBTZW5kKGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKSB7IG91dHB1
dF8gKz0gbWVzc2FnZTsgfQorCisgICAgc3RkOjpzdHJpbmcgb3V0cHV0XzsKKyAgfTsKKworICBT
dHJlYW1pbmdMaXN0ZW5lclRlc3QoKQorICAgICAgOiBmYWtlX3NvY2tfd3JpdGVyXyhuZXcgRmFr
ZVNvY2tldFdyaXRlciksCisgICAgICAgIHN0cmVhbWVyXyhmYWtlX3NvY2tfd3JpdGVyXyksCisg
ICAgICAgIHRlc3RfaW5mb19vYmpfKCJGb29UZXN0IiwgIkJhciIsIE5VTEwsIE5VTEwsCisgICAg
ICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbihfX0ZJTEVfXywgX19MSU5FX18pLCAwLCBO
VUxMKSB7fQorCisgcHJvdGVjdGVkOgorICBzdGQ6OnN0cmluZyogb3V0cHV0KCkgeyByZXR1cm4g
JihmYWtlX3NvY2tfd3JpdGVyXy0+b3V0cHV0Xyk7IH0KKworICBGYWtlU29ja2V0V3JpdGVyKiBj
b25zdCBmYWtlX3NvY2tfd3JpdGVyXzsKKyAgU3RyZWFtaW5nTGlzdGVuZXIgc3RyZWFtZXJfOwor
ICBVbml0VGVzdCB1bml0X3Rlc3RfOworICBUZXN0SW5mbyB0ZXN0X2luZm9fb2JqXzsgIC8vIFRo
ZSBuYW1lIHRlc3RfaW5mb18gd2FzIHRha2VuIGJ5IHRlc3Rpbmc6OlRlc3QuCit9OworCitURVNU
X0YoU3RyZWFtaW5nTGlzdGVuZXJUZXN0LCBPblRlc3RQcm9ncmFtRW5kKSB7CisgICpvdXRwdXQo
KSA9ICIiOworICBzdHJlYW1lcl8uT25UZXN0UHJvZ3JhbUVuZCh1bml0X3Rlc3RfKTsKKyAgRVhQ
RUNUX0VRKCJldmVudD1UZXN0UHJvZ3JhbUVuZCZwYXNzZWQ9MVxuIiwgKm91dHB1dCgpKTsKK30K
KworVEVTVF9GKFN0cmVhbWluZ0xpc3RlbmVyVGVzdCwgT25UZXN0SXRlcmF0aW9uRW5kKSB7Cisg
ICpvdXRwdXQoKSA9ICIiOworICBzdHJlYW1lcl8uT25UZXN0SXRlcmF0aW9uRW5kKHVuaXRfdGVz
dF8sIDQyKTsKKyAgRVhQRUNUX0VRKCJldmVudD1UZXN0SXRlcmF0aW9uRW5kJnBhc3NlZD0xJmVs
YXBzZWRfdGltZT0wbXNcbiIsICpvdXRwdXQoKSk7Cit9CisKK1RFU1RfRihTdHJlYW1pbmdMaXN0
ZW5lclRlc3QsIE9uVGVzdENhc2VTdGFydCkgeworICAqb3V0cHV0KCkgPSAiIjsKKyAgc3RyZWFt
ZXJfLk9uVGVzdENhc2VTdGFydChUZXN0Q2FzZSgiRm9vVGVzdCIsICJCYXIiLCBOVUxMLCBOVUxM
KSk7CisgIEVYUEVDVF9FUSgiZXZlbnQ9VGVzdENhc2VTdGFydCZuYW1lPUZvb1Rlc3RcbiIsICpv
dXRwdXQoKSk7Cit9CisKK1RFU1RfRihTdHJlYW1pbmdMaXN0ZW5lclRlc3QsIE9uVGVzdENhc2VF
bmQpIHsKKyAgKm91dHB1dCgpID0gIiI7CisgIHN0cmVhbWVyXy5PblRlc3RDYXNlRW5kKFRlc3RD
YXNlKCJGb29UZXN0IiwgIkJhciIsIE5VTEwsIE5VTEwpKTsKKyAgRVhQRUNUX0VRKCJldmVudD1U
ZXN0Q2FzZUVuZCZwYXNzZWQ9MSZlbGFwc2VkX3RpbWU9MG1zXG4iLCAqb3V0cHV0KCkpOworfQor
CitURVNUX0YoU3RyZWFtaW5nTGlzdGVuZXJUZXN0LCBPblRlc3RTdGFydCkgeworICAqb3V0cHV0
KCkgPSAiIjsKKyAgc3RyZWFtZXJfLk9uVGVzdFN0YXJ0KHRlc3RfaW5mb19vYmpfKTsKKyAgRVhQ
RUNUX0VRKCJldmVudD1UZXN0U3RhcnQmbmFtZT1CYXJcbiIsICpvdXRwdXQoKSk7Cit9CisKK1RF
U1RfRihTdHJlYW1pbmdMaXN0ZW5lclRlc3QsIE9uVGVzdEVuZCkgeworICAqb3V0cHV0KCkgPSAi
IjsKKyAgc3RyZWFtZXJfLk9uVGVzdEVuZCh0ZXN0X2luZm9fb2JqXyk7CisgIEVYUEVDVF9FUSgi
ZXZlbnQ9VGVzdEVuZCZwYXNzZWQ9MSZlbGFwc2VkX3RpbWU9MG1zXG4iLCAqb3V0cHV0KCkpOwor
fQorCitURVNUX0YoU3RyZWFtaW5nTGlzdGVuZXJUZXN0LCBPblRlc3RQYXJ0UmVzdWx0KSB7Cisg
ICpvdXRwdXQoKSA9ICIiOworICBzdHJlYW1lcl8uT25UZXN0UGFydFJlc3VsdChUZXN0UGFydFJl
c3VsdCgKKyAgICAgIFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlLCAiZm9vLmNjIiwgNDIs
ICJmYWlsZWQ9XG4mJSIpKTsKKworICAvLyBNZXRhIGNoYXJhY3RlcnMgaW4gdGhlIGZhaWx1cmUg
bWVzc2FnZSBzaG91bGQgYmUgcHJvcGVybHkgZXNjYXBlZC4KKyAgRVhQRUNUX0VRKAorICAgICAg
ImV2ZW50PVRlc3RQYXJ0UmVzdWx0JmZpbGU9Zm9vLmNjJmxpbmU9NDImbWVzc2FnZT1mYWlsZWQl
M0QlMEElMjYlMjVcbiIsCisgICAgICAqb3V0cHV0KCkpOworfQorCisjZW5kaWYgIC8vIEdURVNU
X0NBTl9TVFJFQU1fUkVTVUxUU18KKworLy8gUHJvdmlkZXMgYWNjZXNzIHRvIG90aGVyd2lzZSBw
cml2YXRlIHBhcnRzIG9mIHRoZSBUZXN0RXZlbnRMaXN0ZW5lcnMgY2xhc3MKKy8vIHRoYXQgYXJl
IG5lZWRlZCB0byB0ZXN0IGl0LgorY2xhc3MgVGVzdEV2ZW50TGlzdGVuZXJzQWNjZXNzb3Igewor
IHB1YmxpYzoKKyAgc3RhdGljIFRlc3RFdmVudExpc3RlbmVyKiBHZXRSZXBlYXRlcihUZXN0RXZl
bnRMaXN0ZW5lcnMqIGxpc3RlbmVycykgeworICAgIHJldHVybiBsaXN0ZW5lcnMtPnJlcGVhdGVy
KCk7CisgIH0KKworICBzdGF0aWMgdm9pZCBTZXREZWZhdWx0UmVzdWx0UHJpbnRlcihUZXN0RXZl
bnRMaXN0ZW5lcnMqIGxpc3RlbmVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVGVzdEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyKSB7CisgICAgbGlzdGVuZXJzLT5TZXRE
ZWZhdWx0UmVzdWx0UHJpbnRlcihsaXN0ZW5lcik7CisgIH0KKyAgc3RhdGljIHZvaWQgU2V0RGVm
YXVsdFhtbEdlbmVyYXRvcihUZXN0RXZlbnRMaXN0ZW5lcnMqIGxpc3RlbmVycywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0RXZlbnRMaXN0ZW5lciogbGlzdGVuZXIp
IHsKKyAgICBsaXN0ZW5lcnMtPlNldERlZmF1bHRYbWxHZW5lcmF0b3IobGlzdGVuZXIpOworICB9
CisKKyAgc3RhdGljIGJvb2wgRXZlbnRGb3J3YXJkaW5nRW5hYmxlZChjb25zdCBUZXN0RXZlbnRM
aXN0ZW5lcnMmIGxpc3RlbmVycykgeworICAgIHJldHVybiBsaXN0ZW5lcnMuRXZlbnRGb3J3YXJk
aW5nRW5hYmxlZCgpOworICB9CisKKyAgc3RhdGljIHZvaWQgU3VwcHJlc3NFdmVudEZvcndhcmRp
bmcoVGVzdEV2ZW50TGlzdGVuZXJzKiBsaXN0ZW5lcnMpIHsKKyAgICBsaXN0ZW5lcnMtPlN1cHBy
ZXNzRXZlbnRGb3J3YXJkaW5nKCk7CisgIH0KK307CisKK2NsYXNzIFVuaXRUZXN0UmVjb3JkUHJv
cGVydHlUZXN0SGVscGVyIDogcHVibGljIFRlc3QgeworIHByb3RlY3RlZDoKKyAgVW5pdFRlc3RS
ZWNvcmRQcm9wZXJ0eVRlc3RIZWxwZXIoKSB7fQorCisgIC8vIEZvcndhcmRzIHRvIFVuaXRUZXN0
OjpSZWNvcmRQcm9wZXJ0eSgpIHRvIGJ5cGFzcyBhY2Nlc3MgY29udHJvbHMuCisgIHZvaWQgVW5p
dFRlc3RSZWNvcmRQcm9wZXJ0eShjb25zdCBjaGFyKiBrZXksIGNvbnN0IHN0ZDo6c3RyaW5nJiB2
YWx1ZSkgeworICAgIHVuaXRfdGVzdF8uUmVjb3JkUHJvcGVydHkoa2V5LCB2YWx1ZSk7CisgIH0K
KworICBVbml0VGVzdCB1bml0X3Rlc3RfOworfTsKKworfSAgLy8gbmFtZXNwYWNlIGludGVybmFs
Cit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZworCit1c2luZyB0ZXN0aW5nOjpBc3NlcnRpb25GYWls
dXJlOwordXNpbmcgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0OwordXNpbmcgdGVzdGluZzo6QXNz
ZXJ0aW9uU3VjY2VzczsKK3VzaW5nIHRlc3Rpbmc6OkRvdWJsZUxFOwordXNpbmcgdGVzdGluZzo6
RW1wdHlUZXN0RXZlbnRMaXN0ZW5lcjsKK3VzaW5nIHRlc3Rpbmc6OkVudmlyb25tZW50OwordXNp
bmcgdGVzdGluZzo6RmxvYXRMRTsKK3VzaW5nIHRlc3Rpbmc6OkdURVNUX0ZMQUcoYWxzb19ydW5f
ZGlzYWJsZWRfdGVzdHMpOwordXNpbmcgdGVzdGluZzo6R1RFU1RfRkxBRyhicmVha19vbl9mYWls
dXJlKTsKK3VzaW5nIHRlc3Rpbmc6OkdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucyk7Cit1c2lu
ZyB0ZXN0aW5nOjpHVEVTVF9GTEFHKGNvbG9yKTsKK3VzaW5nIHRlc3Rpbmc6OkdURVNUX0ZMQUco
ZGVhdGhfdGVzdF91c2VfZm9yayk7Cit1c2luZyB0ZXN0aW5nOjpHVEVTVF9GTEFHKGZpbHRlcik7
Cit1c2luZyB0ZXN0aW5nOjpHVEVTVF9GTEFHKGxpc3RfdGVzdHMpOwordXNpbmcgdGVzdGluZzo6
R1RFU1RfRkxBRyhvdXRwdXQpOwordXNpbmcgdGVzdGluZzo6R1RFU1RfRkxBRyhwcmludF90aW1l
KTsKK3VzaW5nIHRlc3Rpbmc6OkdURVNUX0ZMQUcocmFuZG9tX3NlZWQpOwordXNpbmcgdGVzdGlu
Zzo6R1RFU1RfRkxBRyhyZXBlYXQpOwordXNpbmcgdGVzdGluZzo6R1RFU1RfRkxBRyhzaG93X2lu
dGVybmFsX3N0YWNrX2ZyYW1lcyk7Cit1c2luZyB0ZXN0aW5nOjpHVEVTVF9GTEFHKHNodWZmbGUp
OwordXNpbmcgdGVzdGluZzo6R1RFU1RfRkxBRyhzdGFja190cmFjZV9kZXB0aCk7Cit1c2luZyB0
ZXN0aW5nOjpHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRfdG8pOwordXNpbmcgdGVzdGluZzo6R1RF
U1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKTsKK3VzaW5nIHRlc3Rpbmc6OklzTm90U3Vic3RyaW5n
OwordXNpbmcgdGVzdGluZzo6SXNTdWJzdHJpbmc7Cit1c2luZyB0ZXN0aW5nOjpNZXNzYWdlOwor
dXNpbmcgdGVzdGluZzo6U2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI7Cit1c2luZyB0
ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE7Cit1c2luZyB0ZXN0aW5nOjpUZXN0OwordXNpbmcg
dGVzdGluZzo6VGVzdENhc2U7Cit1c2luZyB0ZXN0aW5nOjpUZXN0RXZlbnRMaXN0ZW5lcnM7Cit1
c2luZyB0ZXN0aW5nOjpUZXN0SW5mbzsKK3VzaW5nIHRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0Owor
dXNpbmcgdGVzdGluZzo6VGVzdFBhcnRSZXN1bHRBcnJheTsKK3VzaW5nIHRlc3Rpbmc6OlRlc3RQ
cm9wZXJ0eTsKK3VzaW5nIHRlc3Rpbmc6OlRlc3RSZXN1bHQ7Cit1c2luZyB0ZXN0aW5nOjpUaW1l
SW5NaWxsaXM7Cit1c2luZyB0ZXN0aW5nOjpVbml0VGVzdDsKK3VzaW5nIHRlc3Rpbmc6OmludGVy
bmFsOjpBZGRSZWZlcmVuY2U7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzRmFsc2U7
Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZTsKK3VzaW5nIHRlc3Rpbmc6Omlu
dGVybmFsOjpBcHBlbmRVc2VyTWVzc2FnZTsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpBcnJh
eUF3YXJlRmluZDsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpBcnJheUVxOwordXNpbmcgdGVz
dGluZzo6aW50ZXJuYWw6OkNvZGVQb2ludFRvVXRmODsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFs
OjpDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpDb3B5
QXJyYXk7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Q291bnRJZjsKK3VzaW5nIHRlc3Rpbmc6
OmludGVybmFsOjpFcUZhaWx1cmU7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6RmxvYXRpbmdQ
b2ludDsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpGb3JFYWNoOwordXNpbmcgdGVzdGluZzo6
aW50ZXJuYWw6OkZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxOwordXNpbmcgdGVzdGlu
Zzo6aW50ZXJuYWw6OkZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kczsKK3VzaW5nIHRlc3Rpbmc6
OmludGVybmFsOjpHVGVzdEZsYWdTYXZlcjsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRD
dXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6Okdl
dEVsZW1lbnRPcjsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXROZXh0UmFuZG9tU2VlZDsK
K3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRSYW5kb21TZWVkRnJvbUZsYWc7Cit1c2luZyB0
ZXN0aW5nOjppbnRlcm5hbDo6R2V0VGVzdFR5cGVJZDsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFs
OjpHZXRUaW1lSW5NaWxsaXM7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6R2V0VHlwZUlkOwor
dXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkdldFVuaXRUZXN0SW1wbDsKK3VzaW5nIHRlc3Rpbmc6
OmludGVybmFsOjpJbXBsaWNpdGx5Q29udmVydGlibGU7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5h
bDo6SW50MzI7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6SW50MzJGcm9tRW52T3JEaWU7Cit1
c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6SXNBUHJvdG9jb2xNZXNzYWdlOwordXNpbmcgdGVzdGlu
Zzo6aW50ZXJuYWw6OklzQ29udGFpbmVyOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OklzQ29u
dGFpbmVyVGVzdDsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpJc05vdENvbnRhaW5lcjsKK3Vz
aW5nIHRlc3Rpbmc6OmludGVybmFsOjpOYXRpdmVBcnJheTsKK3VzaW5nIHRlc3Rpbmc6OmludGVy
bmFsOjpQYXJzZUludDMyRmxhZzsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpSZWxhdGlvblRv
U291cmNlQ29weTsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpSZWxhdGlvblRvU291cmNlUmVm
ZXJlbmNlOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlJlbW92ZUNvbnN0OwordXNpbmcgdGVz
dGluZzo6aW50ZXJuYWw6OlJlbW92ZVJlZmVyZW5jZTsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFs
OjpTaG91bGRSdW5UZXN0T25TaGFyZDsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpTaG91bGRT
aGFyZDsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpTaG91bGRVc2VDb2xvcjsKK3VzaW5nIHRl
c3Rpbmc6OmludGVybmFsOjpTaHVmZmxlOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlNodWZm
bGVSYW5nZTsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpTa2lwUHJlZml4OwordXNpbmcgdGVz
dGluZzo6aW50ZXJuYWw6OlN0cmVhbWFibGVUb1N0cmluZzsKK3VzaW5nIHRlc3Rpbmc6OmludGVy
bmFsOjpTdHJpbmc7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6VGVzdEV2ZW50TGlzdGVuZXJz
QWNjZXNzb3I7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6VGVzdFJlc3VsdEFjY2Vzc29yOwor
dXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlVJbnQzMjsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFs
OjpXaWRlU3RyaW5nVG9VdGY4OwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OmVkaXRfZGlzdGFu
Y2U6OkNhbGN1bGF0ZU9wdGltYWxFZGl0czsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjplZGl0
X2Rpc3RhbmNlOjpDcmVhdGVVbmlmaWVkRGlmZjsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpl
ZGl0X2Rpc3RhbmNlOjpFZGl0VHlwZTsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjprTWF4UmFu
ZG9tU2VlZDsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjprVGVzdFR5cGVJZEluR29vZ2xlVGVz
dDsKK3VzaW5nIHRlc3Rpbmc6OmtNYXhTdGFja1RyYWNlRGVwdGg7CisKKyNpZiBHVEVTVF9IQVNf
U1RSRUFNX1JFRElSRUNUSU9OCit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Q2FwdHVyZVN0ZG91
dDsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRDYXB0dXJlZFN0ZG91dDsKKyNlbmRpZgor
CisjaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlRocmVh
ZFdpdGhQYXJhbTsKKyNlbmRpZgorCitjbGFzcyBUZXN0aW5nVmVjdG9yIDogcHVibGljIHN0ZDo6
dmVjdG9yPGludD4geworfTsKKworOjpzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoOjpzdGQ6Om9z
dHJlYW0mIG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGVzdGluZ1ZlY3Rv
ciYgdmVjdG9yKSB7CisgIG9zIDw8ICJ7ICI7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmVj
dG9yLnNpemUoKTsgaSsrKSB7CisgICAgb3MgPDwgdmVjdG9yW2ldIDw8ICIgIjsKKyAgfQorICBv
cyA8PCAifSI7CisgIHJldHVybiBvczsKK30KKworLy8gVGhpcyBsaW5lIHRlc3RzIHRoYXQgd2Ug
Y2FuIGRlZmluZSB0ZXN0cyBpbiBhbiB1bm5hbWVkIG5hbWVzcGFjZS4KK25hbWVzcGFjZSB7CisK
K1RFU1QoR2V0UmFuZG9tU2VlZEZyb21GbGFnVGVzdCwgSGFuZGxlc1plcm8pIHsKKyAgY29uc3Qg
aW50IHNlZWQgPSBHZXRSYW5kb21TZWVkRnJvbUZsYWcoMCk7CisgIEVYUEVDVF9MRSgxLCBzZWVk
KTsKKyAgRVhQRUNUX0xFKHNlZWQsIHN0YXRpY19jYXN0PGludD4oa01heFJhbmRvbVNlZWQpKTsK
K30KKworVEVTVChHZXRSYW5kb21TZWVkRnJvbUZsYWdUZXN0LCBQcmVzZXJ2ZXNWYWxpZFNlZWQp
IHsKKyAgRVhQRUNUX0VRKDEsIEdldFJhbmRvbVNlZWRGcm9tRmxhZygxKSk7CisgIEVYUEVDVF9F
USgyLCBHZXRSYW5kb21TZWVkRnJvbUZsYWcoMikpOworICBFWFBFQ1RfRVEoa01heFJhbmRvbVNl
ZWQgLSAxLCBHZXRSYW5kb21TZWVkRnJvbUZsYWcoa01heFJhbmRvbVNlZWQgLSAxKSk7CisgIEVY
UEVDVF9FUShzdGF0aWNfY2FzdDxpbnQ+KGtNYXhSYW5kb21TZWVkKSwKKyAgICAgICAgICAgIEdl
dFJhbmRvbVNlZWRGcm9tRmxhZyhrTWF4UmFuZG9tU2VlZCkpOworfQorCitURVNUKEdldFJhbmRv
bVNlZWRGcm9tRmxhZ1Rlc3QsIE5vcm1hbGl6ZXNJbnZhbGlkU2VlZCkgeworICBjb25zdCBpbnQg
c2VlZDEgPSBHZXRSYW5kb21TZWVkRnJvbUZsYWcoLTEpOworICBFWFBFQ1RfTEUoMSwgc2VlZDEp
OworICBFWFBFQ1RfTEUoc2VlZDEsIHN0YXRpY19jYXN0PGludD4oa01heFJhbmRvbVNlZWQpKTsK
KworICBjb25zdCBpbnQgc2VlZDIgPSBHZXRSYW5kb21TZWVkRnJvbUZsYWcoa01heFJhbmRvbVNl
ZWQgKyAxKTsKKyAgRVhQRUNUX0xFKDEsIHNlZWQyKTsKKyAgRVhQRUNUX0xFKHNlZWQyLCBzdGF0
aWNfY2FzdDxpbnQ+KGtNYXhSYW5kb21TZWVkKSk7Cit9CisKK1RFU1QoR2V0TmV4dFJhbmRvbVNl
ZWRUZXN0LCBXb3Jrc0ZvclZhbGlkSW5wdXQpIHsKKyAgRVhQRUNUX0VRKDIsIEdldE5leHRSYW5k
b21TZWVkKDEpKTsKKyAgRVhQRUNUX0VRKDMsIEdldE5leHRSYW5kb21TZWVkKDIpKTsKKyAgRVhQ
RUNUX0VRKHN0YXRpY19jYXN0PGludD4oa01heFJhbmRvbVNlZWQpLAorICAgICAgICAgICAgR2V0
TmV4dFJhbmRvbVNlZWQoa01heFJhbmRvbVNlZWQgLSAxKSk7CisgIEVYUEVDVF9FUSgxLCBHZXRO
ZXh0UmFuZG9tU2VlZChrTWF4UmFuZG9tU2VlZCkpOworCisgIC8vIFdlIGRlbGliZXJhdGVseSBk
b24ndCB0ZXN0IEdldE5leHRSYW5kb21TZWVkKCkgd2l0aCBpbnZhbGlkCisgIC8vIGlucHV0cywg
YXMgdGhhdCByZXF1aXJlcyBkZWF0aCB0ZXN0cywgd2hpY2ggYXJlIGV4cGVuc2l2ZS4gIFRoaXMK
KyAgLy8gaXMgZmluZSBhcyBHZXROZXh0UmFuZG9tU2VlZCgpIGlzIGludGVybmFsIGFuZCBoYXMg
YQorICAvLyBzdHJhaWdodGZvcndhcmQgZGVmaW5pdGlvbi4KK30KKworc3RhdGljIHZvaWQgQ2xl
YXJDdXJyZW50VGVzdFBhcnRSZXN1bHRzKCkgeworICBUZXN0UmVzdWx0QWNjZXNzb3I6OkNsZWFy
VGVzdFBhcnRSZXN1bHRzKAorICAgICAgR2V0VW5pdFRlc3RJbXBsKCktPmN1cnJlbnRfdGVzdF9y
ZXN1bHQoKSk7Cit9CisKKy8vIFRlc3RzIEdldFR5cGVJZC4KKworVEVTVChHZXRUeXBlSWRUZXN0
LCBSZXR1cm5zU2FtZVZhbHVlRm9yU2FtZVR5cGUpIHsKKyAgRVhQRUNUX0VRKEdldFR5cGVJZDxp
bnQ+KCksIEdldFR5cGVJZDxpbnQ+KCkpOworICBFWFBFQ1RfRVEoR2V0VHlwZUlkPFRlc3Q+KCks
IEdldFR5cGVJZDxUZXN0PigpKTsKK30KKworY2xhc3MgU3ViQ2xhc3NPZlRlc3QgOiBwdWJsaWMg
VGVzdCB7fTsKK2NsYXNzIEFub3RoZXJTdWJDbGFzc09mVGVzdCA6IHB1YmxpYyBUZXN0IHt9Owor
CitURVNUKEdldFR5cGVJZFRlc3QsIFJldHVybnNEaWZmZXJlbnRWYWx1ZXNGb3JEaWZmZXJlbnRU
eXBlcykgeworICBFWFBFQ1RfTkUoR2V0VHlwZUlkPGludD4oKSwgR2V0VHlwZUlkPGNvbnN0IGlu
dD4oKSk7CisgIEVYUEVDVF9ORShHZXRUeXBlSWQ8aW50PigpLCBHZXRUeXBlSWQ8Y2hhcj4oKSk7
CisgIEVYUEVDVF9ORShHZXRUeXBlSWQ8aW50PigpLCBHZXRUZXN0VHlwZUlkKCkpOworICBFWFBF
Q1RfTkUoR2V0VHlwZUlkPFN1YkNsYXNzT2ZUZXN0PigpLCBHZXRUZXN0VHlwZUlkKCkpOworICBF
WFBFQ1RfTkUoR2V0VHlwZUlkPEFub3RoZXJTdWJDbGFzc09mVGVzdD4oKSwgR2V0VGVzdFR5cGVJ
ZCgpKTsKKyAgRVhQRUNUX05FKEdldFR5cGVJZDxBbm90aGVyU3ViQ2xhc3NPZlRlc3Q+KCksIEdl
dFR5cGVJZDxTdWJDbGFzc09mVGVzdD4oKSk7Cit9CisKKy8vIFZlcmlmaWVzIHRoYXQgR2V0VGVz
dFR5cGVJZCgpIHJldHVybnMgdGhlIHNhbWUgdmFsdWUsIG5vIG1hdHRlciBpdAorLy8gaXMgY2Fs
bGVkIGZyb20gaW5zaWRlIEdvb2dsZSBUZXN0IG9yIG91dHNpZGUgb2YgaXQuCitURVNUKEdldFRl
c3RUeXBlSWRUZXN0LCBSZXR1cm5zVGhlU2FtZVZhbHVlSW5zaWRlT3JPdXRzaWRlT2ZHb29nbGVU
ZXN0KSB7CisgIEVYUEVDVF9FUShrVGVzdFR5cGVJZEluR29vZ2xlVGVzdCwgR2V0VGVzdFR5cGVJ
ZCgpKTsKK30KKworLy8gVGVzdHMgRm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzKCkuCisKK1RF
U1QoRm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzVGVzdCwgRm9ybWF0c1plcm8pIHsKKyAgRVhQ
RUNUX0VRKCIwIiwgRm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzKDApKTsKK30KKworVEVTVChG
b3JtYXRUaW1lSW5NaWxsaXNBc1NlY29uZHNUZXN0LCBGb3JtYXRzUG9zaXRpdmVOdW1iZXIpIHsK
KyAgRVhQRUNUX0VRKCIwLjAwMyIsIEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kcygzKSk7Cisg
IEVYUEVDVF9FUSgiMC4wMSIsIEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kcygxMCkpOworICBF
WFBFQ1RfRVEoIjAuMiIsIEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kcygyMDApKTsKKyAgRVhQ
RUNUX0VRKCIxLjIiLCBGb3JtYXRUaW1lSW5NaWxsaXNBc1NlY29uZHMoMTIwMCkpOworICBFWFBF
Q1RfRVEoIjMiLCBGb3JtYXRUaW1lSW5NaWxsaXNBc1NlY29uZHMoMzAwMCkpOworfQorCitURVNU
KEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kc1Rlc3QsIEZvcm1hdHNOZWdhdGl2ZU51bWJlcikg
eworICBFWFBFQ1RfRVEoIi0wLjAwMyIsIEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kcygtMykp
OworICBFWFBFQ1RfRVEoIi0wLjAxIiwgRm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzKC0xMCkp
OworICBFWFBFQ1RfRVEoIi0wLjIiLCBGb3JtYXRUaW1lSW5NaWxsaXNBc1NlY29uZHMoLTIwMCkp
OworICBFWFBFQ1RfRVEoIi0xLjIiLCBGb3JtYXRUaW1lSW5NaWxsaXNBc1NlY29uZHMoLTEyMDAp
KTsKKyAgRVhQRUNUX0VRKCItMyIsIEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kcygtMzAwMCkp
OworfQorCisvLyBUZXN0cyBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMSgpLiAgVGhl
IGNvcnJlY3RuZXNzIG9mIGNvbnZlcnNpb24KKy8vIGZvciBwYXJ0aWN1bGFyIGRhdGVzIGJlbG93
IHdhcyB2ZXJpZmllZCBpbiBQeXRob24gdXNpbmcKKy8vIGRhdGV0aW1lLmRhdGV0aW1lLmZyb211
dGN0aW1lc3RhbXAoPHRpbWV0YW1wPi8xMDAwKS4KKworLy8gRm9ybWF0RXBvY2hUaW1lSW5NaWxs
aXNBc0lzbzg2MDEgZGVwZW5kcyBvbiB0aGUgY3VycmVudCB0aW1lem9uZSwgc28gd2UKKy8vIGhh
dmUgdG8gc2V0IHVwIGEgcGFydGljdWxhciB0aW1lem9uZSB0byBvYnRhaW4gcHJlZGljdGFibGUg
cmVzdWx0cy4KK2NsYXNzIEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxVGVzdCA6IHB1
YmxpYyBUZXN0IHsKKyBwdWJsaWM6CisgIC8vIE9uIEN5Z3dpbiwgR0NDIGRvZXNuJ3QgYWxsb3cg
dW5xdWFsaWZpZWQgaW50ZWdlciBsaXRlcmFscyB0byBleGNlZWQKKyAgLy8gMzIgYml0cywgZXZl
biB3aGVuIDY0LWJpdCBpbnRlZ2VyIHR5cGVzIGFyZSBhdmFpbGFibGUuICBXZSBoYXZlIHRvCisg
IC8vIGZvcmNlIHRoZSBjb25zdGFudHMgdG8gaGF2ZSBhIDY0LWJpdCB0eXBlIGhlcmUuCisgIHN0
YXRpYyBjb25zdCBUaW1lSW5NaWxsaXMga01pbGxpc1BlclNlYyA9IDEwMDA7CisKKyBwcml2YXRl
OgorICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgc2F2ZWRfdHpfID0gTlVMTDsKKworICAg
IEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQ5OTYgLyogZ2V0ZW52LCBzdHJkdXA6
IGRlcHJlY2F0ZWQgKi8pCisgICAgaWYgKGdldGVudigiVFoiKSkKKyAgICAgIHNhdmVkX3R6XyA9
IHN0cmR1cChnZXRlbnYoIlRaIikpOworICAgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BP
UF8oKQorCisgICAgLy8gU2V0IHVwIHRoZSB0aW1lIHpvbmUgZm9yIEZvcm1hdEVwb2NoVGltZUlu
TWlsbGlzQXNJc284NjAxIHRvIHVzZS4gIFdlCisgICAgLy8gY2Fubm90IHVzZSB0aGUgbG9jYWwg
dGltZSB6b25lIGJlY2F1c2UgdGhlIGZ1bmN0aW9uJ3Mgb3V0cHV0IGRlcGVuZHMKKyAgICAvLyBv
biB0aGUgdGltZSB6b25lLgorICAgIFNldFRpbWVab25lKCJVVEMrMDAiKTsKKyAgfQorCisgIHZp
cnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBTZXRUaW1lWm9uZShzYXZlZF90el8pOworICAg
IGZyZWUoY29uc3RfY2FzdDxjaGFyKj4oc2F2ZWRfdHpfKSk7CisgICAgc2F2ZWRfdHpfID0gTlVM
TDsKKyAgfQorCisgIHN0YXRpYyB2b2lkIFNldFRpbWVab25lKGNvbnN0IGNoYXIqIHRpbWVfem9u
ZSkgeworICAgIC8vIHR6c2V0KCkgZGlzdGluZ3Vpc2hlcyBiZXR3ZWVuIHRoZSBUWiB2YXJpYWJs
ZSBiZWluZyBwcmVzZW50IGFuZCBlbXB0eQorICAgIC8vIGFuZCBub3QgYmVpbmcgcHJlc2VudCwg
c28gd2UgaGF2ZSB0byBjb25zaWRlciB0aGUgY2FzZSBvZiB0aW1lX3pvbmUKKyAgICAvLyBiZWlu
ZyBOVUxMLgorI2lmIF9NU0NfVkVSIHx8IEdURVNUX09TX1dJTkRPV1NfTUlOR1cKKyAgICAvLyAu
Li5Vbmxlc3MgaXQncyBNU1ZDLCB3aG9zZSBzdGFuZGFyZCBsaWJyYXJ5J3MgX3B1dGVudiBkb2Vz
bid0CisgICAgLy8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBhbiBlbXB0eSBhbmQgYSBtaXNzaW5nIHZh
cmlhYmxlLgorICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGVudl92YXIgPQorICAgICAgICBzdGQ6OnN0
cmluZygiVFo9IikgKyAodGltZV96b25lID8gdGltZV96b25lIDogIiIpOworICAgIF9wdXRlbnYo
ZW52X3Zhci5jX3N0cigpKTsKKyAgICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0
OTk2IC8qIGRlcHJlY2F0ZWQgZnVuY3Rpb24gKi8pCisgICAgdHpzZXQoKTsKKyAgICBHVEVTVF9E
SVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKKyNlbHNlCisgICAgaWYgKHRpbWVfem9uZSkgewor
ICAgICAgc2V0ZW52KCgiVFoiKSwgdGltZV96b25lLCAxKTsKKyAgICB9IGVsc2UgeworICAgICAg
dW5zZXRlbnYoIlRaIik7CisgICAgfQorICAgIHR6c2V0KCk7CisjZW5kaWYKKyAgfQorCisgIGNv
bnN0IGNoYXIqIHNhdmVkX3R6XzsKK307CisKK2NvbnN0IFRpbWVJbk1pbGxpcyBGb3JtYXRFcG9j
aFRpbWVJbk1pbGxpc0FzSXNvODYwMVRlc3Q6OmtNaWxsaXNQZXJTZWM7CisKK1RFU1RfRihGb3Jt
YXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMVRlc3QsIFByaW50c1R3b0RpZ2l0U2VnbWVudHMp
IHsKKyAgRVhQRUNUX0VRKCIyMDExLTEwLTMxVDE4OjUyOjQyIiwKKyAgICAgICAgICAgIEZvcm1h
dEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxKDEzMjAwODcxNjIgKiBrTWlsbGlzUGVyU2VjKSk7
Cit9CisKK1RFU1RfRihGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMVRlc3QsIE1pbGxp
c2Vjb25kc0RvTm90QWZmZWN0UmVzdWx0KSB7CisgIEVYUEVDVF9FUSgKKyAgICAgICIyMDExLTEw
LTMxVDE4OjUyOjQyIiwKKyAgICAgIEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxKDEz
MjAwODcxNjIgKiBrTWlsbGlzUGVyU2VjICsgMjM0KSk7Cit9CisKK1RFU1RfRihGb3JtYXRFcG9j
aFRpbWVJbk1pbGxpc0FzSXNvODYwMVRlc3QsIFByaW50c0xlYWRpbmdaZXJvZXMpIHsKKyAgRVhQ
RUNUX0VRKCIyMDExLTA5LTAzVDA1OjA3OjAyIiwKKyAgICAgICAgICAgIEZvcm1hdEVwb2NoVGlt
ZUluTWlsbGlzQXNJc284NjAxKDEzMTUwMjY0MjIgKiBrTWlsbGlzUGVyU2VjKSk7Cit9CisKK1RF
U1RfRihGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMVRlc3QsIFByaW50czI0SG91clRp
bWUpIHsKKyAgRVhQRUNUX0VRKCIyMDExLTA5LTI4VDE3OjA4OjIyIiwKKyAgICAgICAgICAgIEZv
cm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxKDEzMTcyMjk3MDIgKiBrTWlsbGlzUGVyU2Vj
KSk7Cit9CisKK1RFU1RfRihGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMVRlc3QsIFBy
aW50c0Vwb2NoU3RhcnQpIHsKKyAgRVhQRUNUX0VRKCIxOTcwLTAxLTAxVDAwOjAwOjAwIiwgRm9y
bWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDEoMCkpOworfQorCisjaWYgR1RFU1RfQ0FOX0NP
TVBBUkVfTlVMTAorCisjIGlmZGVmIF9fQk9STEFORENfXworLy8gU2lsZW5jZXMgd2FybmluZ3M6
ICJDb25kaXRpb24gaXMgYWx3YXlzIHRydWUiLCAiVW5yZWFjaGFibGUgY29kZSIKKyMgIHByYWdt
YSBvcHRpb24gcHVzaCAtdy1jY2MgLXctcmNoCisjIGVuZGlmCisKKy8vIFRlc3RzIHRoYXQgR1RF
U1RfSVNfTlVMTF9MSVRFUkFMXyh4KSBpcyB0cnVlIHdoZW4geCBpcyBhIG51bGwKKy8vIHBvaW50
ZXIgbGl0ZXJhbC4KK1RFU1QoTnVsbExpdGVyYWxUZXN0LCBJc1RydWVGb3JOdWxsTGl0ZXJhbHMp
IHsKKyAgRVhQRUNUX1RSVUUoR1RFU1RfSVNfTlVMTF9MSVRFUkFMXyhOVUxMKSk7CisgIEVYUEVD
VF9UUlVFKEdURVNUX0lTX05VTExfTElURVJBTF8oMCkpOworICBFWFBFQ1RfVFJVRShHVEVTVF9J
U19OVUxMX0xJVEVSQUxfKDBVKSk7CisgIEVYUEVDVF9UUlVFKEdURVNUX0lTX05VTExfTElURVJB
TF8oMEwpKTsKK30KKworLy8gVGVzdHMgdGhhdCBHVEVTVF9JU19OVUxMX0xJVEVSQUxfKHgpIGlz
IGZhbHNlIHdoZW4geCBpcyBub3QgYSBudWxsCisvLyBwb2ludGVyIGxpdGVyYWwuCitURVNUKE51
bGxMaXRlcmFsVGVzdCwgSXNGYWxzZUZvck5vbk51bGxMaXRlcmFscykgeworICBFWFBFQ1RfRkFM
U0UoR1RFU1RfSVNfTlVMTF9MSVRFUkFMXygxKSk7CisgIEVYUEVDVF9GQUxTRShHVEVTVF9JU19O
VUxMX0xJVEVSQUxfKDAuMCkpOworICBFWFBFQ1RfRkFMU0UoR1RFU1RfSVNfTlVMTF9MSVRFUkFM
XygnYScpKTsKKyAgRVhQRUNUX0ZBTFNFKEdURVNUX0lTX05VTExfTElURVJBTF8oc3RhdGljX2Nh
c3Q8dm9pZCo+KE5VTEwpKSk7Cit9CisKKyMgaWZkZWYgX19CT1JMQU5EQ19fCisvLyBSZXN0b3Jl
cyB3YXJuaW5ncyBhZnRlciBwcmV2aW91cyAiI3ByYWdtYSBvcHRpb24gcHVzaCIgc3VwcHJlc3Nl
ZCB0aGVtLgorIyAgcHJhZ21hIG9wdGlvbiBwb3AKKyMgZW5kaWYKKworI2VuZGlmICAvLyBHVEVT
VF9DQU5fQ09NUEFSRV9OVUxMCisvLworLy8gVGVzdHMgQ29kZVBvaW50VG9VdGY4KCkuCisKKy8v
IFRlc3RzIHRoYXQgdGhlIE5VTCBjaGFyYWN0ZXIgTCdcMCcgaXMgZW5jb2RlZCBjb3JyZWN0bHku
CitURVNUKENvZGVQb2ludFRvVXRmOFRlc3QsIENhbkVuY29kZU51bCkgeworICBFWFBFQ1RfRVEo
IiIsIENvZGVQb2ludFRvVXRmOChMJ1wwJykpOworfQorCisvLyBUZXN0cyB0aGF0IEFTQ0lJIGNo
YXJhY3RlcnMgYXJlIGVuY29kZWQgY29ycmVjdGx5LgorVEVTVChDb2RlUG9pbnRUb1V0ZjhUZXN0
LCBDYW5FbmNvZGVBc2NpaSkgeworICBFWFBFQ1RfRVEoImEiLCBDb2RlUG9pbnRUb1V0ZjgoTCdh
JykpOworICBFWFBFQ1RfRVEoIloiLCBDb2RlUG9pbnRUb1V0ZjgoTCdaJykpOworICBFWFBFQ1Rf
RVEoIiYiLCBDb2RlUG9pbnRUb1V0ZjgoTCcmJykpOworICBFWFBFQ1RfRVEoIlx4N0YiLCBDb2Rl
UG9pbnRUb1V0ZjgoTCdceDdGJykpOworfQorCisvLyBUZXN0cyB0aGF0IFVuaWNvZGUgY29kZS1w
b2ludHMgdGhhdCBoYXZlIDggdG8gMTEgYml0cyBhcmUgZW5jb2RlZAorLy8gYXMgMTEweHh4eHgg
MTB4eHh4eHguCitURVNUKENvZGVQb2ludFRvVXRmOFRlc3QsIENhbkVuY29kZThUbzExQml0cykg
eworICAvLyAwMDAgMTEwMSAwMDExID0+IDExMC0wMDAxMSAxMC0wMTAwMTEKKyAgRVhQRUNUX0VR
KCJceEMzXHg5MyIsIENvZGVQb2ludFRvVXRmOChMJ1x4RDMnKSk7CisKKyAgLy8gMTAxIDAxMTEg
MDExMCA9PiAxMTAtMTAxMDEgMTAtMTEwMTEwCisgIC8vIFNvbWUgY29tcGlsZXJzIChlLmcuLCBH
Q0Mgb24gTWluR1cpIGNhbm5vdCBoYW5kbGUgbm9uLUFTQ0lJIGNvZGVwb2ludHMKKyAgLy8gaW4g
d2lkZSBzdHJpbmdzIGFuZCB3aWRlIGNoYXJzLiBJbiBvcmRlciB0byBhY2NvbW9kYXRlIHRoZW0s
IHdlIGhhdmUgdG8KKyAgLy8gaW50cm9kdWNlIHN1Y2ggY2hhcmFjdGVyIGNvbnN0YW50cyBhcyBp
bnRlZ2Vycy4KKyAgRVhQRUNUX0VRKCJceEQ1XHhCNiIsCisgICAgICAgICAgICBDb2RlUG9pbnRU
b1V0Zjgoc3RhdGljX2Nhc3Q8d2NoYXJfdD4oMHg1NzYpKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQg
VW5pY29kZSBjb2RlLXBvaW50cyB0aGF0IGhhdmUgMTIgdG8gMTYgYml0cyBhcmUgZW5jb2RlZAor
Ly8gYXMgMTExMHh4eHggMTB4eHh4eHggMTB4eHh4eHguCitURVNUKENvZGVQb2ludFRvVXRmOFRl
c3QsIENhbkVuY29kZTEyVG8xNkJpdHMpIHsKKyAgLy8gMDAwMCAxMDAwIDExMDEgMDAxMSA9PiAx
MTEwLTAwMDAgMTAtMTAwMDExIDEwLTAxMDAxMQorICBFWFBFQ1RfRVEoIlx4RTBceEEzXHg5MyIs
CisgICAgICAgICAgICBDb2RlUG9pbnRUb1V0Zjgoc3RhdGljX2Nhc3Q8d2NoYXJfdD4oMHg4RDMp
KSk7CisKKyAgLy8gMTEwMCAwMTExIDAxMDAgMTEwMSA9PiAxMTEwLTExMDAgMTAtMDExMTAxIDEw
LTAwMTEwMQorICBFWFBFQ1RfRVEoIlx4RUNceDlEXHg4RCIsCisgICAgICAgICAgICBDb2RlUG9p
bnRUb1V0Zjgoc3RhdGljX2Nhc3Q8d2NoYXJfdD4oMHhDNzREKSkpOworfQorCisjaWYgIUdURVNU
X1dJREVfU1RSSU5HX1VTRVNfVVRGMTZfCisvLyBUZXN0cyBpbiB0aGlzIGdyb3VwIHJlcXVpcmUg
YSB3Y2hhcl90IHRvIGhvbGQgPiAxNiBiaXRzLCBhbmQgdGh1cworLy8gYXJlIHNraXBwZWQgb24g
V2luZG93cywgQ3lnd2luLCBhbmQgU3ltYmlhbiwgd2hlcmUgYSB3Y2hhcl90IGlzCisvLyAxNi1i
aXQgd2lkZS4gVGhpcyBjb2RlIG1heSBub3QgY29tcGlsZSBvbiB0aG9zZSBzeXN0ZW1zLgorCisv
LyBUZXN0cyB0aGF0IFVuaWNvZGUgY29kZS1wb2ludHMgdGhhdCBoYXZlIDE3IHRvIDIxIGJpdHMg
YXJlIGVuY29kZWQKKy8vIGFzIDExMTEweHh4IDEweHh4eHh4IDEweHh4eHh4IDEweHh4eHh4Lgor
VEVTVChDb2RlUG9pbnRUb1V0ZjhUZXN0LCBDYW5FbmNvZGUxN1RvMjFCaXRzKSB7CisgIC8vIDAg
MDAwMSAwMDAwIDEwMDAgMTEwMSAwMDExID0+IDExMTEwLTAwMCAxMC0wMTAwMDAgMTAtMTAwMDEx
IDEwLTAxMDAxMQorICBFWFBFQ1RfRVEoIlx4RjBceDkwXHhBM1x4OTMiLCBDb2RlUG9pbnRUb1V0
ZjgoTCdceDEwOEQzJykpOworCisgIC8vIDAgMDAwMSAwMDAwIDAxMDAgMDAwMCAwMDAwID0+IDEx
MTEwLTAwMCAxMC0wMTAwMDAgMTAtMDEwMDAwIDEwLTAwMDAwMAorICBFWFBFQ1RfRVEoIlx4RjBc
eDkwXHg5MFx4ODAiLCBDb2RlUG9pbnRUb1V0ZjgoTCdceDEwNDAwJykpOworCisgIC8vIDEgMDAw
MCAxMDAwIDAxMTAgMDAxMSAwMTAwID0+IDExMTEwLTEwMCAxMC0wMDEwMDAgMTAtMDExMDAwIDEw
LTExMDEwMAorICBFWFBFQ1RfRVEoIlx4RjRceDg4XHg5OFx4QjQiLCBDb2RlUG9pbnRUb1V0Zjgo
TCdceDEwODYzNCcpKTsKK30KKworLy8gVGVzdHMgdGhhdCBlbmNvZGluZyBhbiBpbnZhbGlkIGNv
ZGUtcG9pbnQgZ2VuZXJhdGVzIHRoZSBleHBlY3RlZCByZXN1bHQuCitURVNUKENvZGVQb2ludFRv
VXRmOFRlc3QsIENhbkVuY29kZUludmFsaWRDb2RlUG9pbnQpIHsKKyAgRVhQRUNUX0VRKCIoSW52
YWxpZCBVbmljb2RlIDB4MTIzNEFCQ0QpIiwgQ29kZVBvaW50VG9VdGY4KEwnXHgxMjM0QUJDRCcp
KTsKK30KKworI2VuZGlmICAvLyAhR1RFU1RfV0lERV9TVFJJTkdfVVNFU19VVEYxNl8KKworLy8g
VGVzdHMgV2lkZVN0cmluZ1RvVXRmOCgpLgorCisvLyBUZXN0cyB0aGF0IHRoZSBOVUwgY2hhcmFj
dGVyIEwnXDAnIGlzIGVuY29kZWQgY29ycmVjdGx5LgorVEVTVChXaWRlU3RyaW5nVG9VdGY4VGVz
dCwgQ2FuRW5jb2RlTnVsKSB7CisgIEVYUEVDVF9TVFJFUSgiIiwgV2lkZVN0cmluZ1RvVXRmOChM
IiIsIDApLmNfc3RyKCkpOworICBFWFBFQ1RfU1RSRVEoIiIsIFdpZGVTdHJpbmdUb1V0ZjgoTCIi
LCAtMSkuY19zdHIoKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgQVNDSUkgc3RyaW5ncyBhcmUgZW5j
b2RlZCBjb3JyZWN0bHkuCitURVNUKFdpZGVTdHJpbmdUb1V0ZjhUZXN0LCBDYW5FbmNvZGVBc2Np
aSkgeworICBFWFBFQ1RfU1RSRVEoImEiLCBXaWRlU3RyaW5nVG9VdGY4KEwiYSIsIDEpLmNfc3Ry
KCkpOworICBFWFBFQ1RfU1RSRVEoImFiIiwgV2lkZVN0cmluZ1RvVXRmOChMImFiIiwgMikuY19z
dHIoKSk7CisgIEVYUEVDVF9TVFJFUSgiYSIsIFdpZGVTdHJpbmdUb1V0ZjgoTCJhIiwgLTEpLmNf
c3RyKCkpOworICBFWFBFQ1RfU1RSRVEoImFiIiwgV2lkZVN0cmluZ1RvVXRmOChMImFiIiwgLTEp
LmNfc3RyKCkpOworfQorCisvLyBUZXN0cyB0aGF0IFVuaWNvZGUgY29kZS1wb2ludHMgdGhhdCBo
YXZlIDggdG8gMTEgYml0cyBhcmUgZW5jb2RlZAorLy8gYXMgMTEweHh4eHggMTB4eHh4eHguCitU
RVNUKFdpZGVTdHJpbmdUb1V0ZjhUZXN0LCBDYW5FbmNvZGU4VG8xMUJpdHMpIHsKKyAgLy8gMDAw
IDExMDEgMDAxMSA9PiAxMTAtMDAwMTEgMTAtMDEwMDExCisgIEVYUEVDVF9TVFJFUSgiXHhDM1x4
OTMiLCBXaWRlU3RyaW5nVG9VdGY4KEwiXHhEMyIsIDEpLmNfc3RyKCkpOworICBFWFBFQ1RfU1RS
RVEoIlx4QzNceDkzIiwgV2lkZVN0cmluZ1RvVXRmOChMIlx4RDMiLCAtMSkuY19zdHIoKSk7CisK
KyAgLy8gMTAxIDAxMTEgMDExMCA9PiAxMTAtMTAxMDEgMTAtMTEwMTEwCisgIGNvbnN0IHdjaGFy
X3Qgc1tdID0geyAweDU3NiwgJ1wwJyB9OworICBFWFBFQ1RfU1RSRVEoIlx4RDVceEI2IiwgV2lk
ZVN0cmluZ1RvVXRmOChzLCAxKS5jX3N0cigpKTsKKyAgRVhQRUNUX1NUUkVRKCJceEQ1XHhCNiIs
IFdpZGVTdHJpbmdUb1V0ZjgocywgLTEpLmNfc3RyKCkpOworfQorCisvLyBUZXN0cyB0aGF0IFVu
aWNvZGUgY29kZS1wb2ludHMgdGhhdCBoYXZlIDEyIHRvIDE2IGJpdHMgYXJlIGVuY29kZWQKKy8v
IGFzIDExMTB4eHh4IDEweHh4eHh4IDEweHh4eHh4LgorVEVTVChXaWRlU3RyaW5nVG9VdGY4VGVz
dCwgQ2FuRW5jb2RlMTJUbzE2Qml0cykgeworICAvLyAwMDAwIDEwMDAgMTEwMSAwMDExID0+IDEx
MTAtMDAwMCAxMC0xMDAwMTEgMTAtMDEwMDExCisgIGNvbnN0IHdjaGFyX3QgczFbXSA9IHsgMHg4
RDMsICdcMCcgfTsKKyAgRVhQRUNUX1NUUkVRKCJceEUwXHhBM1x4OTMiLCBXaWRlU3RyaW5nVG9V
dGY4KHMxLCAxKS5jX3N0cigpKTsKKyAgRVhQRUNUX1NUUkVRKCJceEUwXHhBM1x4OTMiLCBXaWRl
U3RyaW5nVG9VdGY4KHMxLCAtMSkuY19zdHIoKSk7CisKKyAgLy8gMTEwMCAwMTExIDAxMDAgMTEw
MSA9PiAxMTEwLTExMDAgMTAtMDExMTAxIDEwLTAwMTEwMQorICBjb25zdCB3Y2hhcl90IHMyW10g
PSB7IDB4Qzc0RCwgJ1wwJyB9OworICBFWFBFQ1RfU1RSRVEoIlx4RUNceDlEXHg4RCIsIFdpZGVT
dHJpbmdUb1V0ZjgoczIsIDEpLmNfc3RyKCkpOworICBFWFBFQ1RfU1RSRVEoIlx4RUNceDlEXHg4
RCIsIFdpZGVTdHJpbmdUb1V0ZjgoczIsIC0xKS5jX3N0cigpKTsKK30KKworLy8gVGVzdHMgdGhh
dCB0aGUgY29udmVyc2lvbiBzdG9wcyB3aGVuIHRoZSBmdW5jdGlvbiBlbmNvdW50ZXJzIFwwIGNo
YXJhY3Rlci4KK1RFU1QoV2lkZVN0cmluZ1RvVXRmOFRlc3QsIFN0b3BzT25OdWxDaGFyYWN0ZXIp
IHsKKyAgRVhQRUNUX1NUUkVRKCJBQkMiLCBXaWRlU3RyaW5nVG9VdGY4KEwiQUJDXDBYWVoiLCAx
MDApLmNfc3RyKCkpOworfQorCisvLyBUZXN0cyB0aGF0IHRoZSBjb252ZXJzaW9uIHN0b3BzIHdo
ZW4gdGhlIGZ1bmN0aW9uIHJlYWNoZXMgdGhlIGxpbWl0CisvLyBzcGVjaWZpZWQgYnkgdGhlICds
ZW5ndGgnIHBhcmFtZXRlci4KK1RFU1QoV2lkZVN0cmluZ1RvVXRmOFRlc3QsIFN0b3BzV2hlbkxl
bmd0aExpbWl0UmVhY2hlZCkgeworICBFWFBFQ1RfU1RSRVEoIkFCQyIsIFdpZGVTdHJpbmdUb1V0
ZjgoTCJBQkNERUYiLCAzKS5jX3N0cigpKTsKK30KKworI2lmICFHVEVTVF9XSURFX1NUUklOR19V
U0VTX1VURjE2XworLy8gVGVzdHMgdGhhdCBVbmljb2RlIGNvZGUtcG9pbnRzIHRoYXQgaGF2ZSAx
NyB0byAyMSBiaXRzIGFyZSBlbmNvZGVkCisvLyBhcyAxMTExMHh4eCAxMHh4eHh4eCAxMHh4eHh4
eCAxMHh4eHh4eC4gVGhpcyBjb2RlIG1heSBub3QgY29tcGlsZQorLy8gb24gdGhlIHN5c3RlbXMg
dXNpbmcgVVRGLTE2IGVuY29kaW5nLgorVEVTVChXaWRlU3RyaW5nVG9VdGY4VGVzdCwgQ2FuRW5j
b2RlMTdUbzIxQml0cykgeworICAvLyAwIDAwMDEgMDAwMCAxMDAwIDExMDEgMDAxMSA9PiAxMTEx
MC0wMDAgMTAtMDEwMDAwIDEwLTEwMDAxMSAxMC0wMTAwMTEKKyAgRVhQRUNUX1NUUkVRKCJceEYw
XHg5MFx4QTNceDkzIiwgV2lkZVN0cmluZ1RvVXRmOChMIlx4MTA4RDMiLCAxKS5jX3N0cigpKTsK
KyAgRVhQRUNUX1NUUkVRKCJceEYwXHg5MFx4QTNceDkzIiwgV2lkZVN0cmluZ1RvVXRmOChMIlx4
MTA4RDMiLCAtMSkuY19zdHIoKSk7CisKKyAgLy8gMSAwMDAwIDEwMDAgMDExMCAwMDExIDAxMDAg
PT4gMTExMTAtMTAwIDEwLTAwMTAwMCAxMC0wMTEwMDAgMTAtMTEwMTAwCisgIEVYUEVDVF9TVFJF
USgiXHhGNFx4ODhceDk4XHhCNCIsIFdpZGVTdHJpbmdUb1V0ZjgoTCJceDEwODYzNCIsIDEpLmNf
c3RyKCkpOworICBFWFBFQ1RfU1RSRVEoIlx4RjRceDg4XHg5OFx4QjQiLCBXaWRlU3RyaW5nVG9V
dGY4KEwiXHgxMDg2MzQiLCAtMSkuY19zdHIoKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgZW5jb2Rp
bmcgYW4gaW52YWxpZCBjb2RlLXBvaW50IGdlbmVyYXRlcyB0aGUgZXhwZWN0ZWQgcmVzdWx0Lgor
VEVTVChXaWRlU3RyaW5nVG9VdGY4VGVzdCwgQ2FuRW5jb2RlSW52YWxpZENvZGVQb2ludCkgewor
ICBFWFBFQ1RfU1RSRVEoIihJbnZhbGlkIFVuaWNvZGUgMHhBQkNERkYpIiwKKyAgICAgICAgICAg
ICAgIFdpZGVTdHJpbmdUb1V0ZjgoTCJceEFCQ0RGRiIsIC0xKS5jX3N0cigpKTsKK30KKyNlbHNl
ICAvLyAhR1RFU1RfV0lERV9TVFJJTkdfVVNFU19VVEYxNl8KKy8vIFRlc3RzIHRoYXQgc3Vycm9n
YXRlIHBhaXJzIGFyZSBlbmNvZGVkIGNvcnJlY3RseSBvbiB0aGUgc3lzdGVtcyB1c2luZworLy8g
VVRGLTE2IGVuY29kaW5nIGluIHRoZSB3aWRlIHN0cmluZ3MuCitURVNUKFdpZGVTdHJpbmdUb1V0
ZjhUZXN0LCBDYW5FbmNvZGVWYWxpZFV0ZjE2U1Vycm9nYXRlUGFpcnMpIHsKKyAgY29uc3Qgd2No
YXJfdCBzW10gPSB7IDB4RDgwMSwgMHhEQzAwLCAnXDAnIH07CisgIEVYUEVDVF9TVFJFUSgiXHhG
MFx4OTBceDkwXHg4MCIsIFdpZGVTdHJpbmdUb1V0ZjgocywgLTEpLmNfc3RyKCkpOworfQorCisv
LyBUZXN0cyB0aGF0IGVuY29kaW5nIGFuIGludmFsaWQgVVRGLTE2IHN1cnJvZ2F0ZSBwYWlyCisv
LyBnZW5lcmF0ZXMgdGhlIGV4cGVjdGVkIHJlc3VsdC4KK1RFU1QoV2lkZVN0cmluZ1RvVXRmOFRl
c3QsIENhbkVuY29kZUludmFsaWRVdGYxNlN1cnJvZ2F0ZVBhaXIpIHsKKyAgLy8gTGVhZGluZyBz
dXJyb2dhdGUgaXMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLgorICBjb25zdCB3Y2hhcl90IHMx
W10gPSB7IDB4RDgwMCwgJ1wwJyB9OworICBFWFBFQ1RfU1RSRVEoIlx4RURceEEwXHg4MCIsIFdp
ZGVTdHJpbmdUb1V0ZjgoczEsIC0xKS5jX3N0cigpKTsKKyAgLy8gTGVhZGluZyBzdXJyb2dhdGUg
aXMgbm90IGZvbGxvd2VkIGJ5IHRoZSB0cmFpbGluZyBzdXJyb2dhdGUuCisgIGNvbnN0IHdjaGFy
X3QgczJbXSA9IHsgMHhEODAwLCAnTScsICdcMCcgfTsKKyAgRVhQRUNUX1NUUkVRKCJceEVEXHhB
MFx4ODBNIiwgV2lkZVN0cmluZ1RvVXRmOChzMiwgLTEpLmNfc3RyKCkpOworICAvLyBUcmFpbGlu
ZyBzdXJyb2dhdGUgYXBwZWFyYXMgd2l0aG91dCBhIGxlYWRpbmcgc3Vycm9nYXRlLgorICBjb25z
dCB3Y2hhcl90IHMzW10gPSB7IDB4REMwMCwgJ1AnLCAnUScsICdSJywgJ1wwJyB9OworICBFWFBF
Q1RfU1RSRVEoIlx4RURceEIwXHg4MFBRUiIsIFdpZGVTdHJpbmdUb1V0ZjgoczMsIC0xKS5jX3N0
cigpKTsKK30KKyNlbmRpZiAgLy8gIUdURVNUX1dJREVfU1RSSU5HX1VTRVNfVVRGMTZfCisKKy8v
IFRlc3RzIHRoYXQgY29kZXBvaW50IGNvbmNhdGVuYXRpb24gd29ya3MgY29ycmVjdGx5LgorI2lm
ICFHVEVTVF9XSURFX1NUUklOR19VU0VTX1VURjE2XworVEVTVChXaWRlU3RyaW5nVG9VdGY4VGVz
dCwgQ29uY2F0ZW5hdGVzQ29kZXBvaW50c0NvcnJlY3RseSkgeworICBjb25zdCB3Y2hhcl90IHNb
XSA9IHsgMHgxMDg2MzQsIDB4Qzc0RCwgJ1xuJywgMHg1NzYsIDB4OEQzLCAweDEwODYzNCwgJ1ww
J307CisgIEVYUEVDVF9TVFJFUSgKKyAgICAgICJceEY0XHg4OFx4OThceEI0IgorICAgICAgICAg
ICJceEVDXHg5RFx4OEQiCisgICAgICAgICAgIlxuIgorICAgICAgICAgICJceEQ1XHhCNiIKKyAg
ICAgICAgICAiXHhFMFx4QTNceDkzIgorICAgICAgICAgICJceEY0XHg4OFx4OThceEI0IiwKKyAg
ICAgIFdpZGVTdHJpbmdUb1V0ZjgocywgLTEpLmNfc3RyKCkpOworfQorI2Vsc2UKK1RFU1QoV2lk
ZVN0cmluZ1RvVXRmOFRlc3QsIENvbmNhdGVuYXRlc0NvZGVwb2ludHNDb3JyZWN0bHkpIHsKKyAg
Y29uc3Qgd2NoYXJfdCBzW10gPSB7IDB4Qzc0RCwgJ1xuJywgMHg1NzYsIDB4OEQzLCAnXDAnfTsK
KyAgRVhQRUNUX1NUUkVRKAorICAgICAgIlx4RUNceDlEXHg4RCIgIlxuIiAiXHhENVx4QjYiICJc
eEUwXHhBM1x4OTMiLAorICAgICAgV2lkZVN0cmluZ1RvVXRmOChzLCAtMSkuY19zdHIoKSk7Cit9
CisjZW5kaWYgIC8vICFHVEVTVF9XSURFX1NUUklOR19VU0VTX1VURjE2XworCisvLyBUZXN0cyB0
aGUgUmFuZG9tIGNsYXNzLgorCitURVNUKFJhbmRvbURlYXRoVGVzdCwgR2VuZXJhdGVzQ3Jhc2hl
c09uSW52YWxpZFJhbmdlKSB7CisgIHRlc3Rpbmc6OmludGVybmFsOjpSYW5kb20gcmFuZG9tKDQy
KTsKKyAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCgKKyAgICAgIHJhbmRvbS5HZW5lcmF0ZSgw
KSwKKyAgICAgICJDYW5ub3QgZ2VuZXJhdGUgYSBudW1iZXIgaW4gdGhlIHJhbmdlIFxcWzAsIDBc
XCkiKTsKKyAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCgKKyAgICAgIHJhbmRvbS5HZW5lcmF0
ZSh0ZXN0aW5nOjppbnRlcm5hbDo6UmFuZG9tOjprTWF4UmFuZ2UgKyAxKSwKKyAgICAgICJHZW5l
cmF0aW9uIG9mIGEgbnVtYmVyIGluIFxcWzAsIDIxNDc0ODM2NDlcXCkgd2FzIHJlcXVlc3RlZCwg
IgorICAgICAgImJ1dCB0aGlzIGNhbiBvbmx5IGdlbmVyYXRlIG51bWJlcnMgaW4gXFxbMCwgMjE0
NzQ4MzY0OFxcKSIpOworfQorCitURVNUKFJhbmRvbVRlc3QsIEdlbmVyYXRlc051bWJlcnNXaXRo
aW5SYW5nZSkgeworICBjb25zdCBVSW50MzIga1JhbmdlID0gMTAwMDA7CisgIHRlc3Rpbmc6Omlu
dGVybmFsOjpSYW5kb20gcmFuZG9tKDEyMzQ1KTsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDsg
aSsrKSB7CisgICAgRVhQRUNUX0xUKHJhbmRvbS5HZW5lcmF0ZShrUmFuZ2UpLCBrUmFuZ2UpIDw8
ICIgZm9yIGl0ZXJhdGlvbiAiIDw8IGk7CisgIH0KKworICB0ZXN0aW5nOjppbnRlcm5hbDo6UmFu
ZG9tIHJhbmRvbTIodGVzdGluZzo6aW50ZXJuYWw6OlJhbmRvbTo6a01heFJhbmdlKTsKKyAgZm9y
IChpbnQgaSA9IDA7IGkgPCAxMDsgaSsrKSB7CisgICAgRVhQRUNUX0xUKHJhbmRvbTIuR2VuZXJh
dGUoa1JhbmdlKSwga1JhbmdlKSA8PCAiIGZvciBpdGVyYXRpb24gIiA8PCBpOworICB9Cit9CisK
K1RFU1QoUmFuZG9tVGVzdCwgUmVwZWF0c1doZW5SZXNlZWRlZCkgeworICBjb25zdCBpbnQga1Nl
ZWQgPSAxMjM7CisgIGNvbnN0IGludCBrQXJyYXlTaXplID0gMTA7CisgIGNvbnN0IFVJbnQzMiBr
UmFuZ2UgPSAxMDAwMDsKKyAgVUludDMyIHZhbHVlc1trQXJyYXlTaXplXTsKKworICB0ZXN0aW5n
OjppbnRlcm5hbDo6UmFuZG9tIHJhbmRvbShrU2VlZCk7CisgIGZvciAoaW50IGkgPSAwOyBpIDwg
a0FycmF5U2l6ZTsgaSsrKSB7CisgICAgdmFsdWVzW2ldID0gcmFuZG9tLkdlbmVyYXRlKGtSYW5n
ZSk7CisgIH0KKworICByYW5kb20uUmVzZWVkKGtTZWVkKTsKKyAgZm9yIChpbnQgaSA9IDA7IGkg
PCBrQXJyYXlTaXplOyBpKyspIHsKKyAgICBFWFBFQ1RfRVEodmFsdWVzW2ldLCByYW5kb20uR2Vu
ZXJhdGUoa1JhbmdlKSkgPDwgIiBmb3IgaXRlcmF0aW9uICIgPDwgaTsKKyAgfQorfQorCisvLyBU
ZXN0cyBTVEwgY29udGFpbmVyIHV0aWxpdGllcy4KKworLy8gVGVzdHMgQ291bnRJZigpLgorCitz
dGF0aWMgYm9vbCBJc1Bvc2l0aXZlKGludCBuKSB7IHJldHVybiBuID4gMDsgfQorCitURVNUKENv
bnRhaW5lclV0aWxpdHlUZXN0LCBDb3VudElmKSB7CisgIHN0ZDo6dmVjdG9yPGludD4gdjsKKyAg
RVhQRUNUX0VRKDAsIENvdW50SWYodiwgSXNQb3NpdGl2ZSkpOyAgLy8gV29ya3MgZm9yIGFuIGVt
cHR5IGNvbnRhaW5lci4KKworICB2LnB1c2hfYmFjaygtMSk7CisgIHYucHVzaF9iYWNrKDApOwor
ICBFWFBFQ1RfRVEoMCwgQ291bnRJZih2LCBJc1Bvc2l0aXZlKSk7ICAvLyBXb3JrcyB3aGVuIG5v
IHZhbHVlIHNhdGlzZmllcy4KKworICB2LnB1c2hfYmFjaygyKTsKKyAgdi5wdXNoX2JhY2soLTEw
KTsKKyAgdi5wdXNoX2JhY2soMTApOworICBFWFBFQ1RfRVEoMiwgQ291bnRJZih2LCBJc1Bvc2l0
aXZlKSk7Cit9CisKKy8vIFRlc3RzIEZvckVhY2goKS4KKworc3RhdGljIGludCBnX3N1bSA9IDA7
CitzdGF0aWMgdm9pZCBBY2N1bXVsYXRlKGludCBuKSB7IGdfc3VtICs9IG47IH0KKworVEVTVChD
b250YWluZXJVdGlsaXR5VGVzdCwgRm9yRWFjaCkgeworICBzdGQ6OnZlY3RvcjxpbnQ+IHY7Cisg
IGdfc3VtID0gMDsKKyAgRm9yRWFjaCh2LCBBY2N1bXVsYXRlKTsKKyAgRVhQRUNUX0VRKDAsIGdf
c3VtKTsgIC8vIFdvcmtzIGZvciBhbiBlbXB0eSBjb250YWluZXI7CisKKyAgZ19zdW0gPSAwOwor
ICB2LnB1c2hfYmFjaygxKTsKKyAgRm9yRWFjaCh2LCBBY2N1bXVsYXRlKTsKKyAgRVhQRUNUX0VR
KDEsIGdfc3VtKTsgIC8vIFdvcmtzIGZvciBhIGNvbnRhaW5lciB3aXRoIG9uZSBlbGVtZW50Lgor
CisgIGdfc3VtID0gMDsKKyAgdi5wdXNoX2JhY2soMjApOworICB2LnB1c2hfYmFjaygzMDApOwor
ICBGb3JFYWNoKHYsIEFjY3VtdWxhdGUpOworICBFWFBFQ1RfRVEoMzIxLCBnX3N1bSk7Cit9CisK
Ky8vIFRlc3RzIEdldEVsZW1lbnRPcigpLgorVEVTVChDb250YWluZXJVdGlsaXR5VGVzdCwgR2V0
RWxlbWVudE9yKSB7CisgIHN0ZDo6dmVjdG9yPGNoYXI+IGE7CisgIEVYUEVDVF9FUSgneCcsIEdl
dEVsZW1lbnRPcihhLCAwLCAneCcpKTsKKworICBhLnB1c2hfYmFjaygnYScpOworICBhLnB1c2hf
YmFjaygnYicpOworICBFWFBFQ1RfRVEoJ2EnLCBHZXRFbGVtZW50T3IoYSwgMCwgJ3gnKSk7Cisg
IEVYUEVDVF9FUSgnYicsIEdldEVsZW1lbnRPcihhLCAxLCAneCcpKTsKKyAgRVhQRUNUX0VRKCd4
JywgR2V0RWxlbWVudE9yKGEsIC0yLCAneCcpKTsKKyAgRVhQRUNUX0VRKCd4JywgR2V0RWxlbWVu
dE9yKGEsIDIsICd4JykpOworfQorCitURVNUKENvbnRhaW5lclV0aWxpdHlEZWF0aFRlc3QsIFNo
dWZmbGVSYW5nZSkgeworICBzdGQ6OnZlY3RvcjxpbnQ+IGE7CisgIGEucHVzaF9iYWNrKDApOwor
ICBhLnB1c2hfYmFjaygxKTsKKyAgYS5wdXNoX2JhY2soMik7CisgIHRlc3Rpbmc6OmludGVybmFs
OjpSYW5kb20gcmFuZG9tKDEpOworCisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoCisgICAg
ICBTaHVmZmxlUmFuZ2UoJnJhbmRvbSwgLTEsIDEsICZhKSwKKyAgICAgICJJbnZhbGlkIHNodWZm
bGUgcmFuZ2Ugc3RhcnQgLTE6IG11c3QgYmUgaW4gcmFuZ2UgXFxbMCwgM1xcXSIpOworICBFWFBF
Q1RfREVBVEhfSUZfU1VQUE9SVEVEKAorICAgICAgU2h1ZmZsZVJhbmdlKCZyYW5kb20sIDQsIDQs
ICZhKSwKKyAgICAgICJJbnZhbGlkIHNodWZmbGUgcmFuZ2Ugc3RhcnQgNDogbXVzdCBiZSBpbiBy
YW5nZSBcXFswLCAzXFxdIik7CisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoCisgICAgICBT
aHVmZmxlUmFuZ2UoJnJhbmRvbSwgMywgMiwgJmEpLAorICAgICAgIkludmFsaWQgc2h1ZmZsZSBy
YW5nZSBmaW5pc2ggMjogbXVzdCBiZSBpbiByYW5nZSBcXFszLCAzXFxdIik7CisgIEVYUEVDVF9E
RUFUSF9JRl9TVVBQT1JURUQoCisgICAgICBTaHVmZmxlUmFuZ2UoJnJhbmRvbSwgMywgNCwgJmEp
LAorICAgICAgIkludmFsaWQgc2h1ZmZsZSByYW5nZSBmaW5pc2ggNDogbXVzdCBiZSBpbiByYW5n
ZSBcXFszLCAzXFxdIik7Cit9CisKK2NsYXNzIFZlY3RvclNodWZmbGVUZXN0IDogcHVibGljIFRl
c3QgeworIHByb3RlY3RlZDoKKyAgc3RhdGljIGNvbnN0IGludCBrVmVjdG9yU2l6ZSA9IDIwOwor
CisgIFZlY3RvclNodWZmbGVUZXN0KCkgOiByYW5kb21fKDEpIHsKKyAgICBmb3IgKGludCBpID0g
MDsgaSA8IGtWZWN0b3JTaXplOyBpKyspIHsKKyAgICAgIHZlY3Rvcl8ucHVzaF9iYWNrKGkpOwor
ICAgIH0KKyAgfQorCisgIHN0YXRpYyBib29sIFZlY3RvcklzQ29ycnVwdChjb25zdCBUZXN0aW5n
VmVjdG9yJiB2ZWN0b3IpIHsKKyAgICBpZiAoa1ZlY3RvclNpemUgIT0gc3RhdGljX2Nhc3Q8aW50
Pih2ZWN0b3Iuc2l6ZSgpKSkgeworICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgYm9v
bCBmb3VuZF9pbl92ZWN0b3Jba1ZlY3RvclNpemVdID0geyBmYWxzZSB9OworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgdmVjdG9yLnNpemUoKTsgaSsrKSB7CisgICAgICBjb25zdCBpbnQgZSA9
IHZlY3RvcltpXTsKKyAgICAgIGlmIChlIDwgMCB8fCBlID49IGtWZWN0b3JTaXplIHx8IGZvdW5k
X2luX3ZlY3RvcltlXSkgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIH0KKyAgICAgIGZv
dW5kX2luX3ZlY3RvcltlXSA9IHRydWU7CisgICAgfQorCisgICAgLy8gVmVjdG9yIHNpemUgaXMg
Y29ycmVjdCwgZWxlbWVudHMnIHJhbmdlIGlzIGNvcnJlY3QsIG5vCisgICAgLy8gZHVwbGljYXRl
IGVsZW1lbnRzLiAgVGhlcmVmb3JlIG5vIGNvcnJ1cHRpb24gaGFzIG9jY3VycmVkLgorICAgIHJl
dHVybiBmYWxzZTsKKyAgfQorCisgIHN0YXRpYyBib29sIFZlY3RvcklzTm90Q29ycnVwdChjb25z
dCBUZXN0aW5nVmVjdG9yJiB2ZWN0b3IpIHsKKyAgICByZXR1cm4gIVZlY3RvcklzQ29ycnVwdCh2
ZWN0b3IpOworICB9CisKKyAgc3RhdGljIGJvb2wgUmFuZ2VJc1NodWZmbGVkKGNvbnN0IFRlc3Rp
bmdWZWN0b3ImIHZlY3RvciwgaW50IGJlZ2luLCBpbnQgZW5kKSB7CisgICAgZm9yIChpbnQgaSA9
IGJlZ2luOyBpIDwgZW5kOyBpKyspIHsKKyAgICAgIGlmIChpICE9IHZlY3RvcltpXSkgeworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworICB9
CisKKyAgc3RhdGljIGJvb2wgUmFuZ2VJc1Vuc2h1ZmZsZWQoCisgICAgICBjb25zdCBUZXN0aW5n
VmVjdG9yJiB2ZWN0b3IsIGludCBiZWdpbiwgaW50IGVuZCkgeworICAgIHJldHVybiAhUmFuZ2VJ
c1NodWZmbGVkKHZlY3RvciwgYmVnaW4sIGVuZCk7CisgIH0KKworICBzdGF0aWMgYm9vbCBWZWN0
b3JJc1NodWZmbGVkKGNvbnN0IFRlc3RpbmdWZWN0b3ImIHZlY3RvcikgeworICAgIHJldHVybiBS
YW5nZUlzU2h1ZmZsZWQodmVjdG9yLCAwLCBzdGF0aWNfY2FzdDxpbnQ+KHZlY3Rvci5zaXplKCkp
KTsKKyAgfQorCisgIHN0YXRpYyBib29sIFZlY3RvcklzVW5zaHVmZmxlZChjb25zdCBUZXN0aW5n
VmVjdG9yJiB2ZWN0b3IpIHsKKyAgICByZXR1cm4gIVZlY3RvcklzU2h1ZmZsZWQodmVjdG9yKTsK
KyAgfQorCisgIHRlc3Rpbmc6OmludGVybmFsOjpSYW5kb20gcmFuZG9tXzsKKyAgVGVzdGluZ1Zl
Y3RvciB2ZWN0b3JfOworfTsgIC8vIGNsYXNzIFZlY3RvclNodWZmbGVUZXN0CisKK2NvbnN0IGlu
dCBWZWN0b3JTaHVmZmxlVGVzdDo6a1ZlY3RvclNpemU7CisKK1RFU1RfRihWZWN0b3JTaHVmZmxl
VGVzdCwgSGFuZGxlc0VtcHR5UmFuZ2UpIHsKKyAgLy8gVGVzdHMgYW4gZW1wdHkgcmFuZ2UgYXQg
dGhlIGJlZ2lubmluZy4uLgorICBTaHVmZmxlUmFuZ2UoJnJhbmRvbV8sIDAsIDAsICZ2ZWN0b3Jf
KTsKKyAgQVNTRVJUX1BSRUQxKFZlY3RvcklzTm90Q29ycnVwdCwgdmVjdG9yXyk7CisgIEFTU0VS
VF9QUkVEMShWZWN0b3JJc1Vuc2h1ZmZsZWQsIHZlY3Rvcl8pOworCisgIC8vIC4uLmluIHRoZSBt
aWRkbGUuLi4KKyAgU2h1ZmZsZVJhbmdlKCZyYW5kb21fLCBrVmVjdG9yU2l6ZS8yLCBrVmVjdG9y
U2l6ZS8yLCAmdmVjdG9yXyk7CisgIEFTU0VSVF9QUkVEMShWZWN0b3JJc05vdENvcnJ1cHQsIHZl
Y3Rvcl8pOworICBBU1NFUlRfUFJFRDEoVmVjdG9ySXNVbnNodWZmbGVkLCB2ZWN0b3JfKTsKKwor
ICAvLyAuLi5hdCB0aGUgZW5kLi4uCisgIFNodWZmbGVSYW5nZSgmcmFuZG9tXywga1ZlY3RvclNp
emUgLSAxLCBrVmVjdG9yU2l6ZSAtIDEsICZ2ZWN0b3JfKTsKKyAgQVNTRVJUX1BSRUQxKFZlY3Rv
cklzTm90Q29ycnVwdCwgdmVjdG9yXyk7CisgIEFTU0VSVF9QUkVEMShWZWN0b3JJc1Vuc2h1ZmZs
ZWQsIHZlY3Rvcl8pOworCisgIC8vIC4uLmFuZCBwYXN0IHRoZSBlbmQuCisgIFNodWZmbGVSYW5n
ZSgmcmFuZG9tXywga1ZlY3RvclNpemUsIGtWZWN0b3JTaXplLCAmdmVjdG9yXyk7CisgIEFTU0VS
VF9QUkVEMShWZWN0b3JJc05vdENvcnJ1cHQsIHZlY3Rvcl8pOworICBBU1NFUlRfUFJFRDEoVmVj
dG9ySXNVbnNodWZmbGVkLCB2ZWN0b3JfKTsKK30KKworVEVTVF9GKFZlY3RvclNodWZmbGVUZXN0
LCBIYW5kbGVzUmFuZ2VPZlNpemVPbmUpIHsKKyAgLy8gVGVzdHMgYSBzaXplIG9uZSByYW5nZSBh
dCB0aGUgYmVnaW5uaW5nLi4uCisgIFNodWZmbGVSYW5nZSgmcmFuZG9tXywgMCwgMSwgJnZlY3Rv
cl8pOworICBBU1NFUlRfUFJFRDEoVmVjdG9ySXNOb3RDb3JydXB0LCB2ZWN0b3JfKTsKKyAgQVNT
RVJUX1BSRUQxKFZlY3RvcklzVW5zaHVmZmxlZCwgdmVjdG9yXyk7CisKKyAgLy8gLi4uaW4gdGhl
IG1pZGRsZS4uLgorICBTaHVmZmxlUmFuZ2UoJnJhbmRvbV8sIGtWZWN0b3JTaXplLzIsIGtWZWN0
b3JTaXplLzIgKyAxLCAmdmVjdG9yXyk7CisgIEFTU0VSVF9QUkVEMShWZWN0b3JJc05vdENvcnJ1
cHQsIHZlY3Rvcl8pOworICBBU1NFUlRfUFJFRDEoVmVjdG9ySXNVbnNodWZmbGVkLCB2ZWN0b3Jf
KTsKKworICAvLyAuLi5hbmQgYXQgdGhlIGVuZC4KKyAgU2h1ZmZsZVJhbmdlKCZyYW5kb21fLCBr
VmVjdG9yU2l6ZSAtIDEsIGtWZWN0b3JTaXplLCAmdmVjdG9yXyk7CisgIEFTU0VSVF9QUkVEMShW
ZWN0b3JJc05vdENvcnJ1cHQsIHZlY3Rvcl8pOworICBBU1NFUlRfUFJFRDEoVmVjdG9ySXNVbnNo
dWZmbGVkLCB2ZWN0b3JfKTsKK30KKworLy8gQmVjYXVzZSB3ZSB1c2Ugb3VyIG93biByYW5kb20g
bnVtYmVyIGdlbmVyYXRvciBhbmQgYSBmaXhlZCBzZWVkLAorLy8gd2UgY2FuIGd1YXJhbnRlZSB0
aGF0IHRoZSBmb2xsb3dpbmcgInJhbmRvbSIgdGVzdHMgd2lsbCBzdWNjZWVkLgorCitURVNUX0Yo
VmVjdG9yU2h1ZmZsZVRlc3QsIFNodWZmbGVzRW50aXJlVmVjdG9yKSB7CisgIFNodWZmbGUoJnJh
bmRvbV8sICZ2ZWN0b3JfKTsKKyAgQVNTRVJUX1BSRUQxKFZlY3RvcklzTm90Q29ycnVwdCwgdmVj
dG9yXyk7CisgIEVYUEVDVF9GQUxTRShWZWN0b3JJc1Vuc2h1ZmZsZWQodmVjdG9yXykpIDw8IHZl
Y3Rvcl87CisKKyAgLy8gVGVzdHMgdGhlIGZpcnN0IGFuZCBsYXN0IGVsZW1lbnRzIGluIHBhcnRp
Y3VsYXIgdG8gZW5zdXJlIHRoYXQKKyAgLy8gdGhlcmUgYXJlIG5vIG9mZi1ieS1vbmUgcHJvYmxl
bXMgaW4gb3VyIHNodWZmbGUgYWxnb3JpdGhtLgorICBFWFBFQ1RfTkUoMCwgdmVjdG9yX1swXSk7
CisgIEVYUEVDVF9ORShrVmVjdG9yU2l6ZSAtIDEsIHZlY3Rvcl9ba1ZlY3RvclNpemUgLSAxXSk7
Cit9CisKK1RFU1RfRihWZWN0b3JTaHVmZmxlVGVzdCwgU2h1ZmZsZXNTdGFydE9mVmVjdG9yKSB7
CisgIGNvbnN0IGludCBrUmFuZ2VTaXplID0ga1ZlY3RvclNpemUvMjsKKworICBTaHVmZmxlUmFu
Z2UoJnJhbmRvbV8sIDAsIGtSYW5nZVNpemUsICZ2ZWN0b3JfKTsKKworICBBU1NFUlRfUFJFRDEo
VmVjdG9ySXNOb3RDb3JydXB0LCB2ZWN0b3JfKTsKKyAgRVhQRUNUX1BSRUQzKFJhbmdlSXNTaHVm
ZmxlZCwgdmVjdG9yXywgMCwga1JhbmdlU2l6ZSk7CisgIEVYUEVDVF9QUkVEMyhSYW5nZUlzVW5z
aHVmZmxlZCwgdmVjdG9yXywga1JhbmdlU2l6ZSwga1ZlY3RvclNpemUpOworfQorCitURVNUX0Yo
VmVjdG9yU2h1ZmZsZVRlc3QsIFNodWZmbGVzRW5kT2ZWZWN0b3IpIHsKKyAgY29uc3QgaW50IGtS
YW5nZVNpemUgPSBrVmVjdG9yU2l6ZSAvIDI7CisgIFNodWZmbGVSYW5nZSgmcmFuZG9tXywga1Jh
bmdlU2l6ZSwga1ZlY3RvclNpemUsICZ2ZWN0b3JfKTsKKworICBBU1NFUlRfUFJFRDEoVmVjdG9y
SXNOb3RDb3JydXB0LCB2ZWN0b3JfKTsKKyAgRVhQRUNUX1BSRUQzKFJhbmdlSXNVbnNodWZmbGVk
LCB2ZWN0b3JfLCAwLCBrUmFuZ2VTaXplKTsKKyAgRVhQRUNUX1BSRUQzKFJhbmdlSXNTaHVmZmxl
ZCwgdmVjdG9yXywga1JhbmdlU2l6ZSwga1ZlY3RvclNpemUpOworfQorCitURVNUX0YoVmVjdG9y
U2h1ZmZsZVRlc3QsIFNodWZmbGVzTWlkZGxlT2ZWZWN0b3IpIHsKKyAgaW50IGtSYW5nZVNpemUg
PSBrVmVjdG9yU2l6ZS8zOworICBTaHVmZmxlUmFuZ2UoJnJhbmRvbV8sIGtSYW5nZVNpemUsIDIq
a1JhbmdlU2l6ZSwgJnZlY3Rvcl8pOworCisgIEFTU0VSVF9QUkVEMShWZWN0b3JJc05vdENvcnJ1
cHQsIHZlY3Rvcl8pOworICBFWFBFQ1RfUFJFRDMoUmFuZ2VJc1Vuc2h1ZmZsZWQsIHZlY3Rvcl8s
IDAsIGtSYW5nZVNpemUpOworICBFWFBFQ1RfUFJFRDMoUmFuZ2VJc1NodWZmbGVkLCB2ZWN0b3Jf
LCBrUmFuZ2VTaXplLCAyKmtSYW5nZVNpemUpOworICBFWFBFQ1RfUFJFRDMoUmFuZ2VJc1Vuc2h1
ZmZsZWQsIHZlY3Rvcl8sIDIqa1JhbmdlU2l6ZSwga1ZlY3RvclNpemUpOworfQorCitURVNUX0Yo
VmVjdG9yU2h1ZmZsZVRlc3QsIFNodWZmbGVzUmVwZWF0YWJseSkgeworICBUZXN0aW5nVmVjdG9y
IHZlY3RvcjI7CisgIGZvciAoaW50IGkgPSAwOyBpIDwga1ZlY3RvclNpemU7IGkrKykgeworICAg
IHZlY3RvcjIucHVzaF9iYWNrKGkpOworICB9CisKKyAgcmFuZG9tXy5SZXNlZWQoMTIzNCk7Cisg
IFNodWZmbGUoJnJhbmRvbV8sICZ2ZWN0b3JfKTsKKyAgcmFuZG9tXy5SZXNlZWQoMTIzNCk7Cisg
IFNodWZmbGUoJnJhbmRvbV8sICZ2ZWN0b3IyKTsKKworICBBU1NFUlRfUFJFRDEoVmVjdG9ySXNO
b3RDb3JydXB0LCB2ZWN0b3JfKTsKKyAgQVNTRVJUX1BSRUQxKFZlY3RvcklzTm90Q29ycnVwdCwg
dmVjdG9yMik7CisKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBrVmVjdG9yU2l6ZTsgaSsrKSB7Cisg
ICAgRVhQRUNUX0VRKHZlY3Rvcl9baV0sIHZlY3RvcjJbaV0pIDw8ICIgd2hlcmUgaSBpcyAiIDw8
IGk7CisgIH0KK30KKworLy8gVGVzdHMgdGhlIHNpemUgb2YgdGhlIEFzc2VydEhlbHBlciBjbGFz
cy4KKworVEVTVChBc3NlcnRIZWxwZXJUZXN0LCBBc3NlcnRIZWxwZXJJc1NtYWxsKSB7CisgIC8v
IFRvIGF2b2lkIGJyZWFraW5nIGNsaWVudHMgdGhhdCB1c2UgbG90cyBvZiBhc3NlcnRpb25zIGlu
IG9uZQorICAvLyBmdW5jdGlvbiwgd2UgY2Fubm90IGdyb3cgdGhlIHNpemUgb2YgQXNzZXJ0SGVs
cGVyLgorICBFWFBFQ1RfTEUoc2l6ZW9mKHRlc3Rpbmc6OmludGVybmFsOjpBc3NlcnRIZWxwZXIp
LCBzaXplb2Yodm9pZCopKTsKK30KKworLy8gVGVzdHMgU3RyaW5nOjpFbmRzV2l0aENhc2VJbnNl
bnNpdGl2ZSgpLgorVEVTVChTdHJpbmdUZXN0LCBFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSkgewor
ICBFWFBFQ1RfVFJVRShTdHJpbmc6OkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKCJmb29iYXIiLCAi
QkFSIikpOworICBFWFBFQ1RfVFJVRShTdHJpbmc6OkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKCJm
b29iYVIiLCAiYmFyIikpOworICBFWFBFQ1RfVFJVRShTdHJpbmc6OkVuZHNXaXRoQ2FzZUluc2Vu
c2l0aXZlKCJmb29iYXIiLCAiIikpOworICBFWFBFQ1RfVFJVRShTdHJpbmc6OkVuZHNXaXRoQ2Fz
ZUluc2Vuc2l0aXZlKCIiLCAiIikpOworCisgIEVYUEVDVF9GQUxTRShTdHJpbmc6OkVuZHNXaXRo
Q2FzZUluc2Vuc2l0aXZlKCJGb29iYXIiLCAiZm9vIikpOworICBFWFBFQ1RfRkFMU0UoU3RyaW5n
OjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgiZm9vYmFyIiwgIkZvbyIpKTsKKyAgRVhQRUNUX0ZB
TFNFKFN0cmluZzo6RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoIiIsICJmb28iKSk7Cit9CisKKy8v
IEMrK0J1aWxkZXIncyBwcmVwcm9jZXNzb3IgaXMgYnVnZ3k7IGl0IGZhaWxzIHRvIGV4cGFuZCBt
YWNyb3MgdGhhdAorLy8gYXBwZWFyIGluIG1hY3JvIHBhcmFtZXRlcnMgYWZ0ZXIgd2lkZSBjaGFy
IGxpdGVyYWxzLiAgUHJvdmlkZSBhbiBhbGlhcworLy8gZm9yIE5VTEwgYXMgYSB3b3JrYXJvdW5k
Lgorc3RhdGljIGNvbnN0IHdjaGFyX3QqIGNvbnN0IGtOdWxsID0gTlVMTDsKKworLy8gVGVzdHMg
U3RyaW5nOjpDYXNlSW5zZW5zaXRpdmVXaWRlQ1N0cmluZ0VxdWFscworVEVTVChTdHJpbmdUZXN0
LCBDYXNlSW5zZW5zaXRpdmVXaWRlQ1N0cmluZ0VxdWFscykgeworICBFWFBFQ1RfVFJVRShTdHJp
bmc6OkNhc2VJbnNlbnNpdGl2ZVdpZGVDU3RyaW5nRXF1YWxzKE5VTEwsIE5VTEwpKTsKKyAgRVhQ
RUNUX0ZBTFNFKFN0cmluZzo6Q2FzZUluc2Vuc2l0aXZlV2lkZUNTdHJpbmdFcXVhbHMoa051bGws
IEwiIikpOworICBFWFBFQ1RfRkFMU0UoU3RyaW5nOjpDYXNlSW5zZW5zaXRpdmVXaWRlQ1N0cmlu
Z0VxdWFscyhMIiIsIGtOdWxsKSk7CisgIEVYUEVDVF9GQUxTRShTdHJpbmc6OkNhc2VJbnNlbnNp
dGl2ZVdpZGVDU3RyaW5nRXF1YWxzKGtOdWxsLCBMImZvb2JhciIpKTsKKyAgRVhQRUNUX0ZBTFNF
KFN0cmluZzo6Q2FzZUluc2Vuc2l0aXZlV2lkZUNTdHJpbmdFcXVhbHMoTCJmb29iYXIiLCBrTnVs
bCkpOworICBFWFBFQ1RfVFJVRShTdHJpbmc6OkNhc2VJbnNlbnNpdGl2ZVdpZGVDU3RyaW5nRXF1
YWxzKEwiZm9vYmFyIiwgTCJmb29iYXIiKSk7CisgIEVYUEVDVF9UUlVFKFN0cmluZzo6Q2FzZUlu
c2Vuc2l0aXZlV2lkZUNTdHJpbmdFcXVhbHMoTCJmb29iYXIiLCBMIkZPT0JBUiIpKTsKKyAgRVhQ
RUNUX1RSVUUoU3RyaW5nOjpDYXNlSW5zZW5zaXRpdmVXaWRlQ1N0cmluZ0VxdWFscyhMIkZPT0JB
UiIsIEwiZm9vYmFyIikpOworfQorCisjaWYgR1RFU1RfT1NfV0lORE9XUworCisvLyBUZXN0cyBT
dHJpbmc6OlNob3dXaWRlQ1N0cmluZygpLgorVEVTVChTdHJpbmdUZXN0LCBTaG93V2lkZUNTdHJp
bmcpIHsKKyAgRVhQRUNUX1NUUkVRKCIobnVsbCkiLAorICAgICAgICAgICAgICAgU3RyaW5nOjpT
aG93V2lkZUNTdHJpbmcoTlVMTCkuY19zdHIoKSk7CisgIEVYUEVDVF9TVFJFUSgiIiwgU3RyaW5n
OjpTaG93V2lkZUNTdHJpbmcoTCIiKS5jX3N0cigpKTsKKyAgRVhQRUNUX1NUUkVRKCJmb28iLCBT
dHJpbmc6OlNob3dXaWRlQ1N0cmluZyhMImZvbyIpLmNfc3RyKCkpOworfQorCisjIGlmIEdURVNU
X09TX1dJTkRPV1NfTU9CSUxFCitURVNUKFN0cmluZ1Rlc3QsIEFuc2lBbmRVdGYxNk51bGwpIHsK
KyAgRVhQRUNUX0VRKE5VTEwsIFN0cmluZzo6QW5zaVRvVXRmMTYoTlVMTCkpOworICBFWFBFQ1Rf
RVEoTlVMTCwgU3RyaW5nOjpVdGYxNlRvQW5zaShOVUxMKSk7Cit9CisKK1RFU1QoU3RyaW5nVGVz
dCwgQW5zaUFuZFV0ZjE2Q29udmVydEJhc2ljKSB7CisgIGNvbnN0IGNoYXIqIGFuc2kgPSBTdHJp
bmc6OlV0ZjE2VG9BbnNpKEwic3RyIik7CisgIEVYUEVDVF9TVFJFUSgic3RyIiwgYW5zaSk7Cisg
IGRlbGV0ZSBbXSBhbnNpOworICBjb25zdCBXQ0hBUiogdXRmMTYgPSBTdHJpbmc6OkFuc2lUb1V0
ZjE2KCJzdHIiKTsKKyAgRVhQRUNUX0VRKDAsIHdjc25jbXAoTCJzdHIiLCB1dGYxNiwgMykpOwor
ICBkZWxldGUgW10gdXRmMTY7Cit9CisKK1RFU1QoU3RyaW5nVGVzdCwgQW5zaUFuZFV0ZjE2Q29u
dmVydFBhdGhDaGFycykgeworICBjb25zdCBjaGFyKiBhbnNpID0gU3RyaW5nOjpVdGYxNlRvQW5z
aShMIi46XFwgXCIqPyIpOworICBFWFBFQ1RfU1RSRVEoIi46XFwgXCIqPyIsIGFuc2kpOworICBk
ZWxldGUgW10gYW5zaTsKKyAgY29uc3QgV0NIQVIqIHV0ZjE2ID0gU3RyaW5nOjpBbnNpVG9VdGYx
NigiLjpcXCBcIio/Iik7CisgIEVYUEVDVF9FUSgwLCB3Y3NuY21wKEwiLjpcXCBcIio/IiwgdXRm
MTYsIDMpKTsKKyAgZGVsZXRlIFtdIHV0ZjE2OworfQorIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lO
RE9XU19NT0JJTEUKKworI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisKKy8vIFRlc3RzIFRl
c3RQcm9wZXJ0eSBjb25zdHJ1Y3Rpb24uCitURVNUKFRlc3RQcm9wZXJ0eVRlc3QsIFN0cmluZ1Zh
bHVlKSB7CisgIFRlc3RQcm9wZXJ0eSBwcm9wZXJ0eSgia2V5IiwgIjEiKTsKKyAgRVhQRUNUX1NU
UkVRKCJrZXkiLCBwcm9wZXJ0eS5rZXkoKSk7CisgIEVYUEVDVF9TVFJFUSgiMSIsIHByb3BlcnR5
LnZhbHVlKCkpOworfQorCisvLyBUZXN0cyBUZXN0UHJvcGVydHkgcmVwbGFjaW5nIGEgdmFsdWUu
CitURVNUKFRlc3RQcm9wZXJ0eVRlc3QsIFJlcGxhY2VTdHJpbmdWYWx1ZSkgeworICBUZXN0UHJv
cGVydHkgcHJvcGVydHkoImtleSIsICIxIik7CisgIEVYUEVDVF9TVFJFUSgiMSIsIHByb3BlcnR5
LnZhbHVlKCkpOworICBwcm9wZXJ0eS5TZXRWYWx1ZSgiMiIpOworICBFWFBFQ1RfU1RSRVEoIjIi
LCBwcm9wZXJ0eS52YWx1ZSgpKTsKK30KKworLy8gQWRkRmF0YWxGYWlsdXJlKCkgYW5kIEFkZE5v
bmZhdGFsRmFpbHVyZSgpIG11c3QgYmUgc3RhbmQtYWxvbmUKKy8vIGZ1bmN0aW9ucyAoaS5lLiB0
aGVpciBkZWZpbml0aW9ucyBjYW5ub3QgYmUgaW5saW5lZCBhdCB0aGUgY2FsbAorLy8gc2l0ZXMp
LCBvciBDKytCdWlsZGVyIHdvbid0IGNvbXBpbGUgdGhlIGNvZGUuCitzdGF0aWMgdm9pZCBBZGRG
YXRhbEZhaWx1cmUoKSB7CisgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iOwor
fQorCitzdGF0aWMgdm9pZCBBZGROb25mYXRhbEZhaWx1cmUoKSB7CisgIEFERF9GQUlMVVJFKCkg
PDwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiI7Cit9CisKK2NsYXNzIFNjb3BlZEZha2VU
ZXN0UGFydFJlc3VsdFJlcG9ydGVyVGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwdWJsaWM6ICAvLyBN
dXN0IGJlIHB1YmxpYyBhbmQgbm90IHByb3RlY3RlZCBkdWUgdG8gYSBidWcgaW4gZysrIDMuNC4y
LgorICBlbnVtIEZhaWx1cmVNb2RlIHsKKyAgICBGQVRBTF9GQUlMVVJFLAorICAgIE5PTkZBVEFM
X0ZBSUxVUkUKKyAgfTsKKyAgc3RhdGljIHZvaWQgQWRkRmFpbHVyZShGYWlsdXJlTW9kZSBmYWls
dXJlKSB7CisgICAgaWYgKGZhaWx1cmUgPT0gRkFUQUxfRkFJTFVSRSkgeworICAgICAgQWRkRmF0
YWxGYWlsdXJlKCk7CisgICAgfSBlbHNlIHsKKyAgICAgIEFkZE5vbmZhdGFsRmFpbHVyZSgpOwor
ICAgIH0KKyAgfQorfTsKKworLy8gVGVzdHMgdGhhdCBTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRS
ZXBvcnRlciBpbnRlcmNlcHRzIHRlc3QKKy8vIGZhaWx1cmVzLgorVEVTVF9GKFNjb3BlZEZha2VU
ZXN0UGFydFJlc3VsdFJlcG9ydGVyVGVzdCwgSW50ZXJjZXB0c1Rlc3RGYWlsdXJlcykgeworICBU
ZXN0UGFydFJlc3VsdEFycmF5IHJlc3VsdHM7CisgIHsKKyAgICBTY29wZWRGYWtlVGVzdFBhcnRS
ZXN1bHRSZXBvcnRlciByZXBvcnRlcigKKyAgICAgICAgU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0
UmVwb3J0ZXI6OklOVEVSQ0VQVF9PTkxZX0NVUlJFTlRfVEhSRUFELAorICAgICAgICAmcmVzdWx0
cyk7CisgICAgQWRkRmFpbHVyZShOT05GQVRBTF9GQUlMVVJFKTsKKyAgICBBZGRGYWlsdXJlKEZB
VEFMX0ZBSUxVUkUpOworICB9CisKKyAgRVhQRUNUX0VRKDIsIHJlc3VsdHMuc2l6ZSgpKTsKKyAg
RVhQRUNUX1RSVUUocmVzdWx0cy5HZXRUZXN0UGFydFJlc3VsdCgwKS5ub25mYXRhbGx5X2ZhaWxl
ZCgpKTsKKyAgRVhQRUNUX1RSVUUocmVzdWx0cy5HZXRUZXN0UGFydFJlc3VsdCgxKS5mYXRhbGx5
X2ZhaWxlZCgpKTsKK30KKworVEVTVF9GKFNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVy
VGVzdCwgRGVwcmVjYXRlZENvbnN0cnVjdG9yKSB7CisgIFRlc3RQYXJ0UmVzdWx0QXJyYXkgcmVz
dWx0czsKKyAgeworICAgIC8vIFRlc3RzLCB0aGF0IHRoZSBkZXByZWNhdGVkIGNvbnN0cnVjdG9y
IHN0aWxsIHdvcmtzLgorICAgIFNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyIHJlcG9y
dGVyKCZyZXN1bHRzKTsKKyAgICBBZGRGYWlsdXJlKE5PTkZBVEFMX0ZBSUxVUkUpOworICB9Cisg
IEVYUEVDVF9FUSgxLCByZXN1bHRzLnNpemUoKSk7Cit9CisKKyNpZiBHVEVTVF9JU19USFJFQURT
QUZFCisKK2NsYXNzIFNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyV2l0aFRocmVhZHNU
ZXN0CisgIDogcHVibGljIFNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyVGVzdCB7Cisg
cHJvdGVjdGVkOgorICBzdGF0aWMgdm9pZCBBZGRGYWlsdXJlSW5PdGhlclRocmVhZChGYWlsdXJl
TW9kZSBmYWlsdXJlKSB7CisgICAgVGhyZWFkV2l0aFBhcmFtPEZhaWx1cmVNb2RlPiB0aHJlYWQo
JkFkZEZhaWx1cmUsIGZhaWx1cmUsIE5VTEwpOworICAgIHRocmVhZC5Kb2luKCk7CisgIH0KK307
CisKK1RFU1RfRihTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlcldpdGhUaHJlYWRzVGVz
dCwKKyAgICAgICBJbnRlcmNlcHRzVGVzdEZhaWx1cmVzSW5BbGxUaHJlYWRzKSB7CisgIFRlc3RQ
YXJ0UmVzdWx0QXJyYXkgcmVzdWx0czsKKyAgeworICAgIFNjb3BlZEZha2VUZXN0UGFydFJlc3Vs
dFJlcG9ydGVyIHJlcG9ydGVyKAorICAgICAgICBTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBv
cnRlcjo6SU5URVJDRVBUX0FMTF9USFJFQURTLCAmcmVzdWx0cyk7CisgICAgQWRkRmFpbHVyZShO
T05GQVRBTF9GQUlMVVJFKTsKKyAgICBBZGRGYWlsdXJlKEZBVEFMX0ZBSUxVUkUpOworICAgIEFk
ZEZhaWx1cmVJbk90aGVyVGhyZWFkKE5PTkZBVEFMX0ZBSUxVUkUpOworICAgIEFkZEZhaWx1cmVJ
bk90aGVyVGhyZWFkKEZBVEFMX0ZBSUxVUkUpOworICB9CisKKyAgRVhQRUNUX0VRKDQsIHJlc3Vs
dHMuc2l6ZSgpKTsKKyAgRVhQRUNUX1RSVUUocmVzdWx0cy5HZXRUZXN0UGFydFJlc3VsdCgwKS5u
b25mYXRhbGx5X2ZhaWxlZCgpKTsKKyAgRVhQRUNUX1RSVUUocmVzdWx0cy5HZXRUZXN0UGFydFJl
c3VsdCgxKS5mYXRhbGx5X2ZhaWxlZCgpKTsKKyAgRVhQRUNUX1RSVUUocmVzdWx0cy5HZXRUZXN0
UGFydFJlc3VsdCgyKS5ub25mYXRhbGx5X2ZhaWxlZCgpKTsKKyAgRVhQRUNUX1RSVUUocmVzdWx0
cy5HZXRUZXN0UGFydFJlc3VsdCgzKS5mYXRhbGx5X2ZhaWxlZCgpKTsKK30KKworI2VuZGlmICAv
LyBHVEVTVF9JU19USFJFQURTQUZFCisKKy8vIFRlc3RzIEVYUEVDVF9GQVRBTF9GQUlMVVJFeyxP
Tl9BTExfVEhSRUFEU30uICBNYWtlcyBzdXJlIHRoYXQgdGhleQorLy8gd29yayBldmVuIGlmIHRo
ZSBmYWlsdXJlIGlzIGdlbmVyYXRlZCBpbiBhIGNhbGxlZCBmdW5jdGlvbiByYXRoZXIgdGhhbgor
Ly8gdGhlIGN1cnJlbnQgY29udGV4dC4KKwordHlwZWRlZiBTY29wZWRGYWtlVGVzdFBhcnRSZXN1
bHRSZXBvcnRlclRlc3QgRXhwZWN0RmF0YWxGYWlsdXJlVGVzdDsKKworVEVTVF9GKEV4cGVjdEZh
dGFsRmFpbHVyZVRlc3QsIENhdGNoZXNGYXRhbEZhbGl1cmUpIHsKKyAgRVhQRUNUX0ZBVEFMX0ZB
SUxVUkUoQWRkRmF0YWxGYWlsdXJlKCksICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiIpOworfQor
CisjaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKK1RFU1RfRihFeHBlY3RGYXRhbEZhaWx1cmVU
ZXN0LCBBY2NlcHRzU3RyaW5nT2JqZWN0KSB7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFkZEZh
dGFsRmFpbHVyZSgpLCA6OnN0cmluZygiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKSk7Cit9Cisj
ZW5kaWYKKworVEVTVF9GKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIEFjY2VwdHNTdGRTdHJpbmdP
YmplY3QpIHsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQWRkRmF0YWxGYWlsdXJlKCksCisgICAg
ICAgICAgICAgICAgICAgICAgIDo6c3RkOjpzdHJpbmcoIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUu
IikpOworfQorCitURVNUX0YoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgQ2F0Y2hlc0ZhdGFsRmFp
bHVyZU9uQWxsVGhyZWFkcykgeworICAvLyBXZSBoYXZlIGFub3RoZXIgdGVzdCBiZWxvdyB0byB2
ZXJpZnkgdGhhdCB0aGUgbWFjcm8gY2F0Y2hlcyBmYXRhbAorICAvLyBmYWlsdXJlcyBnZW5lcmF0
ZWQgb24gYW5vdGhlciB0aHJlYWQuCisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJF
QURTKEFkZEZhdGFsRmFpbHVyZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKTsKK30KKworI2lmZGVmIF9fQk9STEFORENf
XworLy8gU2lsZW5jZXMgd2FybmluZ3M6ICJDb25kaXRpb24gaXMgYWx3YXlzIHRydWUiCisjIHBy
YWdtYSBvcHRpb24gcHVzaCAtdy1jY2MKKyNlbmRpZgorCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9G
QVRBTF9GQUlMVVJFKCkgY2FuIGJlIHVzZWQgaW4gYSBub24tdm9pZAorLy8gZnVuY3Rpb24gZXZl
biB3aGVuIHRoZSBzdGF0ZW1lbnQgaW4gaXQgY29udGFpbnMgQVNTRVJUXyouCisKK2ludCBOb25W
b2lkRnVuY3Rpb24oKSB7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9UUlVFKGZhbHNl
KSwgIiIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUyhGQUlMKCksICIi
KTsKKyAgcmV0dXJuIDA7Cit9CisKK1RFU1RfRihFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBDYW5C
ZVVzZWRJbk5vblZvaWRGdW5jdGlvbikgeworICBOb25Wb2lkRnVuY3Rpb24oKTsKK30KKworLy8g
VGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRShzdGF0ZW1lbnQsIC4uLikgZG9lc24ndCBh
Ym9ydCB0aGUKKy8vIGN1cnJlbnQgZnVuY3Rpb24gZXZlbiB0aG91Z2ggJ3N0YXRlbWVudCcgZ2Vu
ZXJhdGVzIGEgZmF0YWwgZmFpbHVyZS4KKwordm9pZCBEb2VzTm90QWJvcnRIZWxwZXIoYm9vbCog
YWJvcnRlZCkgeworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfVFJVRShmYWxzZSksICIi
KTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoRkFJTCgpLCAiIik7CisK
KyAgKmFib3J0ZWQgPSBmYWxzZTsKK30KKworI2lmZGVmIF9fQk9STEFORENfXworLy8gUmVzdG9y
ZXMgd2FybmluZ3MgYWZ0ZXIgcHJldmlvdXMgIiNwcmFnbWEgb3B0aW9uIHB1c2giIHN1cHByZXNz
ZWQgdGhlbS4KKyMgcHJhZ21hIG9wdGlvbiBwb3AKKyNlbmRpZgorCitURVNUX0YoRXhwZWN0RmF0
YWxGYWlsdXJlVGVzdCwgRG9lc05vdEFib3J0KSB7CisgIGJvb2wgYWJvcnRlZCA9IHRydWU7Cisg
IERvZXNOb3RBYm9ydEhlbHBlcigmYWJvcnRlZCk7CisgIEVYUEVDVF9GQUxTRShhYm9ydGVkKTsK
K30KKworLy8gVGVzdHMgdGhhdCB0aGUgRVhQRUNUX0ZBVEFMX0ZBSUxVUkV7LF9PTl9BTExfVEhS
RUFEU30gYWNjZXB0cyBhCisvLyBzdGF0ZW1lbnQgdGhhdCBjb250YWlucyBhIG1hY3JvIHdoaWNo
IGV4cGFuZHMgdG8gY29kZSBjb250YWluaW5nIGFuCisvLyB1bnByb3RlY3RlZCBjb21tYS4KKwor
c3RhdGljIGludCBnbG9iYWxfdmFyID0gMDsKKyNkZWZpbmUgR1RFU1RfVVNFX1VOUFJPVEVDVEVE
X0NPTU1BXyBnbG9iYWxfdmFyKyssIGdsb2JhbF92YXIrKworCitURVNUX0YoRXhwZWN0RmF0YWxG
YWlsdXJlVGVzdCwgQWNjZXB0c01hY3JvVGhhdEV4cGFuZHNUb1VucHJvdGVjdGVkQ29tbWEpIHsK
KyNpZm5kZWYgX19CT1JMQU5EQ19fCisgIC8vIElDRSdzIGluIEMrK0J1aWxkZXIuCisgIEVYUEVD
VF9GQVRBTF9GQUlMVVJFKHsKKyAgICBHVEVTVF9VU0VfVU5QUk9URUNURURfQ09NTUFfOworICAg
IEFkZEZhdGFsRmFpbHVyZSgpOworICB9LCAiIik7CisjZW5kaWYKKworICBFWFBFQ1RfRkFUQUxf
RkFJTFVSRV9PTl9BTExfVEhSRUFEUyh7CisgICAgR1RFU1RfVVNFX1VOUFJPVEVDVEVEX0NPTU1B
XzsKKyAgICBBZGRGYXRhbEZhaWx1cmUoKTsKKyAgfSwgIiIpOworfQorCisvLyBUZXN0cyBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRXssT05fQUxMX1RIUkVBRFN9LgorCit0eXBlZGVmIFNjb3BlZEZh
a2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyVGVzdCBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0Owor
CitURVNUX0YoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgQ2F0Y2hlc05vbmZhdGFsRmFpbHVy
ZSkgeworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBZGROb25mYXRhbEZhaWx1cmUoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiIpOwor
fQorCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKK1RFU1RfRihFeHBlY3ROb25mYXRhbEZh
aWx1cmVUZXN0LCBBY2NlcHRzU3RyaW5nT2JqZWN0KSB7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKEFkZE5vbmZhdGFsRmFpbHVyZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICA6OnN0
cmluZygiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIikpOworfQorI2VuZGlmCisKK1RFU1Rf
RihFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LCBBY2NlcHRzU3RkU3RyaW5nT2JqZWN0KSB7Cisg
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFkZE5vbmZhdGFsRmFpbHVyZSgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICA6OnN0ZDo6c3RyaW5nKCJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVy
ZS4iKSk7Cit9CisKK1RFU1RfRihFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LCBDYXRjaGVzTm9u
ZmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzKSB7CisgIC8vIFdlIGhhdmUgYW5vdGhlciB0ZXN0IGJl
bG93IHRvIHZlcmlmeSB0aGF0IHRoZSBtYWNybyBjYXRjaGVzCisgIC8vIG5vbi1mYXRhbCBmYWls
dXJlcyBnZW5lcmF0ZWQgb24gYW5vdGhlciB0aHJlYWQuCisgIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFX09OX0FMTF9USFJFQURTKEFkZE5vbmZhdGFsRmFpbHVyZSgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIik7
Cit9CisKKy8vIFRlc3RzIHRoYXQgdGhlIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFeyxfT05fQUxM
X1RIUkVBRFN9IGFjY2VwdHMgYQorLy8gc3RhdGVtZW50IHRoYXQgY29udGFpbnMgYSBtYWNybyB3
aGljaCBleHBhbmRzIHRvIGNvZGUgY29udGFpbmluZyBhbgorLy8gdW5wcm90ZWN0ZWQgY29tbWEu
CitURVNUX0YoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgQWNjZXB0c01hY3JvVGhhdEV4cGFu
ZHNUb1VucHJvdGVjdGVkQ29tbWEpIHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeworICAg
IEdURVNUX1VTRV9VTlBST1RFQ1RFRF9DT01NQV87CisgICAgQWRkTm9uZmF0YWxGYWlsdXJlKCk7
CisgIH0sICIiKTsKKworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUyh7
CisgICAgR1RFU1RfVVNFX1VOUFJPVEVDVEVEX0NPTU1BXzsKKyAgICBBZGROb25mYXRhbEZhaWx1
cmUoKTsKKyAgfSwgIiIpOworfQorCisjaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQorCit0eXBlZGVm
IFNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyV2l0aFRocmVhZHNUZXN0CisgICAgRXhw
ZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdDsKKworVEVTVF9GKEV4cGVjdEZhaWx1cmVXaXRoVGhy
ZWFkc1Rlc3QsIEV4cGVjdEZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcykgeworICBFWFBFQ1RfRkFU
QUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUyhBZGRGYWlsdXJlSW5PdGhlclRocmVhZChGQVRBTF9G
QUlMVVJFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVk
IGZhdGFsIGZhaWx1cmUuIik7Cit9CisKK1RFU1RfRihFeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNU
ZXN0LCBFeHBlY3ROb25GYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMpIHsKKyAgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoCisgICAgICBBZGRGYWlsdXJlSW5PdGhlclRocmVh
ZChOT05GQVRBTF9GQUlMVVJFKSwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiIpOworfQor
CisjZW5kaWYgIC8vIEdURVNUX0lTX1RIUkVBRFNBRkUKKworLy8gVGVzdHMgdGhlIFRlc3RQcm9w
ZXJ0eSBjbGFzcy4KKworVEVTVChUZXN0UHJvcGVydHlUZXN0LCBDb25zdHJ1Y3RvcldvcmtzKSB7
CisgIGNvbnN0IFRlc3RQcm9wZXJ0eSBwcm9wZXJ0eSgia2V5IiwgInZhbHVlIik7CisgIEVYUEVD
VF9TVFJFUSgia2V5IiwgcHJvcGVydHkua2V5KCkpOworICBFWFBFQ1RfU1RSRVEoInZhbHVlIiwg
cHJvcGVydHkudmFsdWUoKSk7Cit9CisKK1RFU1QoVGVzdFByb3BlcnR5VGVzdCwgU2V0VmFsdWUp
IHsKKyAgVGVzdFByb3BlcnR5IHByb3BlcnR5KCJrZXkiLCAidmFsdWVfMSIpOworICBFWFBFQ1Rf
U1RSRVEoImtleSIsIHByb3BlcnR5LmtleSgpKTsKKyAgcHJvcGVydHkuU2V0VmFsdWUoInZhbHVl
XzIiKTsKKyAgRVhQRUNUX1NUUkVRKCJrZXkiLCBwcm9wZXJ0eS5rZXkoKSk7CisgIEVYUEVDVF9T
VFJFUSgidmFsdWVfMiIsIHByb3BlcnR5LnZhbHVlKCkpOworfQorCisvLyBUZXN0cyB0aGUgVGVz
dFJlc3VsdCBjbGFzcworCisvLyBUaGUgdGVzdCBmaXh0dXJlIGZvciB0ZXN0aW5nIFRlc3RSZXN1
bHQuCitjbGFzcyBUZXN0UmVzdWx0VGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwcm90ZWN0ZWQ6Cisg
IHR5cGVkZWYgc3RkOjp2ZWN0b3I8VGVzdFBhcnRSZXN1bHQ+IFRQUlZlY3RvcjsKKworICAvLyBX
ZSBtYWtlIHVzZSBvZiAyIFRlc3RQYXJ0UmVzdWx0IG9iamVjdHMsCisgIFRlc3RQYXJ0UmVzdWx0
ICogcHIxLCAqIHByMjsKKworICAvLyAuLi4gYW5kIDMgVGVzdFJlc3VsdCBvYmplY3RzLgorICBU
ZXN0UmVzdWx0ICogcjAsICogcjEsICogcjI7CisKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgewor
ICAgIC8vIHByMSBpcyBmb3Igc3VjY2Vzcy4KKyAgICBwcjEgPSBuZXcgVGVzdFBhcnRSZXN1bHQo
VGVzdFBhcnRSZXN1bHQ6OmtTdWNjZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
Zm9vL2Jhci5jYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiU3VjY2VzcyEiKTsKKworICAgIC8vIHByMiBpcyBmb3IgZmF0
YWwgZmFpbHVyZS4KKyAgICBwcjIgPSBuZXcgVGVzdFBhcnRSZXN1bHQoVGVzdFBhcnRSZXN1bHQ6
OmtGYXRhbEZhaWx1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb28vYmFyLmNj
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsICAvLyBUaGlzIGxpbmUgbnVtYmVy
IG1lYW5zICJ1bmtub3duIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbHVyZSEi
KTsKKworICAgIC8vIENyZWF0ZXMgdGhlIFRlc3RSZXN1bHQgb2JqZWN0cy4KKyAgICByMCA9IG5l
dyBUZXN0UmVzdWx0KCk7CisgICAgcjEgPSBuZXcgVGVzdFJlc3VsdCgpOworICAgIHIyID0gbmV3
IFRlc3RSZXN1bHQoKTsKKworICAgIC8vIEluIG9yZGVyIHRvIHRlc3QgVGVzdFJlc3VsdCwgd2Ug
bmVlZCB0byBtb2RpZnkgaXRzIGludGVybmFsCisgICAgLy8gc3RhdGUsIGluIHBhcnRpY3VsYXIg
dGhlIFRlc3RQYXJ0UmVzdWx0IHZlY3RvciBpdCBob2xkcy4KKyAgICAvLyB0ZXN0X3BhcnRfcmVz
dWx0cygpIHJldHVybnMgYSBjb25zdCByZWZlcmVuY2UgdG8gdGhpcyB2ZWN0b3IuCisgICAgLy8g
V2UgY2FzdCBpdCB0byBhIG5vbi1jb25zdCBvYmplY3Qgcy50LiBpdCBjYW4gYmUgbW9kaWZpZWQg
KHllcywKKyAgICAvLyB0aGlzIGlzIGEgaGFjaykuCisgICAgVFBSVmVjdG9yKiByZXN1bHRzMSA9
IGNvbnN0X2Nhc3Q8VFBSVmVjdG9yKj4oCisgICAgICAgICZUZXN0UmVzdWx0QWNjZXNzb3I6OnRl
c3RfcGFydF9yZXN1bHRzKCpyMSkpOworICAgIFRQUlZlY3RvciogcmVzdWx0czIgPSBjb25zdF9j
YXN0PFRQUlZlY3Rvcio+KAorICAgICAgICAmVGVzdFJlc3VsdEFjY2Vzc29yOjp0ZXN0X3BhcnRf
cmVzdWx0cygqcjIpKTsKKworICAgIC8vIHIwIGlzIGFuIGVtcHR5IFRlc3RSZXN1bHQuCisKKyAg
ICAvLyByMSBjb250YWlucyBhIHNpbmdsZSBTVUNDRVNTIFRlc3RQYXJ0UmVzdWx0LgorICAgIHJl
c3VsdHMxLT5wdXNoX2JhY2soKnByMSk7CisKKyAgICAvLyByMiBjb250YWlucyBhIFNVQ0NFU1Ms
IGFuZCBhIEZBSUxVUkUuCisgICAgcmVzdWx0czItPnB1c2hfYmFjaygqcHIxKTsKKyAgICByZXN1
bHRzMi0+cHVzaF9iYWNrKCpwcjIpOworICB9CisKKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkg
eworICAgIGRlbGV0ZSBwcjE7CisgICAgZGVsZXRlIHByMjsKKworICAgIGRlbGV0ZSByMDsKKyAg
ICBkZWxldGUgcjE7CisgICAgZGVsZXRlIHIyOworICB9CisKKyAgLy8gSGVscGVyIHRoYXQgY29t
cGFyZXMgdHdvIHR3byBUZXN0UGFydFJlc3VsdHMuCisgIHN0YXRpYyB2b2lkIENvbXBhcmVUZXN0
UGFydFJlc3VsdChjb25zdCBUZXN0UGFydFJlc3VsdCYgZXhwZWN0ZWQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXN0UGFydFJlc3VsdCYgYWN0dWFsKSB7Cisg
ICAgRVhQRUNUX0VRKGV4cGVjdGVkLnR5cGUoKSwgYWN0dWFsLnR5cGUoKSk7CisgICAgRVhQRUNU
X1NUUkVRKGV4cGVjdGVkLmZpbGVfbmFtZSgpLCBhY3R1YWwuZmlsZV9uYW1lKCkpOworICAgIEVY
UEVDVF9FUShleHBlY3RlZC5saW5lX251bWJlcigpLCBhY3R1YWwubGluZV9udW1iZXIoKSk7Cisg
ICAgRVhQRUNUX1NUUkVRKGV4cGVjdGVkLnN1bW1hcnkoKSwgYWN0dWFsLnN1bW1hcnkoKSk7Cisg
ICAgRVhQRUNUX1NUUkVRKGV4cGVjdGVkLm1lc3NhZ2UoKSwgYWN0dWFsLm1lc3NhZ2UoKSk7Cisg
ICAgRVhQRUNUX0VRKGV4cGVjdGVkLnBhc3NlZCgpLCBhY3R1YWwucGFzc2VkKCkpOworICAgIEVY
UEVDVF9FUShleHBlY3RlZC5mYWlsZWQoKSwgYWN0dWFsLmZhaWxlZCgpKTsKKyAgICBFWFBFQ1Rf
RVEoZXhwZWN0ZWQubm9uZmF0YWxseV9mYWlsZWQoKSwgYWN0dWFsLm5vbmZhdGFsbHlfZmFpbGVk
KCkpOworICAgIEVYUEVDVF9FUShleHBlY3RlZC5mYXRhbGx5X2ZhaWxlZCgpLCBhY3R1YWwuZmF0
YWxseV9mYWlsZWQoKSk7CisgIH0KK307CisKKy8vIFRlc3RzIFRlc3RSZXN1bHQ6OnRvdGFsX3Bh
cnRfY291bnQoKS4KK1RFU1RfRihUZXN0UmVzdWx0VGVzdCwgdG90YWxfcGFydF9jb3VudCkgewor
ICBBU1NFUlRfRVEoMCwgcjAtPnRvdGFsX3BhcnRfY291bnQoKSk7CisgIEFTU0VSVF9FUSgxLCBy
MS0+dG90YWxfcGFydF9jb3VudCgpKTsKKyAgQVNTRVJUX0VRKDIsIHIyLT50b3RhbF9wYXJ0X2Nv
dW50KCkpOworfQorCisvLyBUZXN0cyBUZXN0UmVzdWx0OjpQYXNzZWQoKS4KK1RFU1RfRihUZXN0
UmVzdWx0VGVzdCwgUGFzc2VkKSB7CisgIEFTU0VSVF9UUlVFKHIwLT5QYXNzZWQoKSk7CisgIEFT
U0VSVF9UUlVFKHIxLT5QYXNzZWQoKSk7CisgIEFTU0VSVF9GQUxTRShyMi0+UGFzc2VkKCkpOwor
fQorCisvLyBUZXN0cyBUZXN0UmVzdWx0OjpGYWlsZWQoKS4KK1RFU1RfRihUZXN0UmVzdWx0VGVz
dCwgRmFpbGVkKSB7CisgIEFTU0VSVF9GQUxTRShyMC0+RmFpbGVkKCkpOworICBBU1NFUlRfRkFM
U0UocjEtPkZhaWxlZCgpKTsKKyAgQVNTRVJUX1RSVUUocjItPkZhaWxlZCgpKTsKK30KKworLy8g
VGVzdHMgVGVzdFJlc3VsdDo6R2V0VGVzdFBhcnRSZXN1bHQoKS4KKwordHlwZWRlZiBUZXN0UmVz
dWx0VGVzdCBUZXN0UmVzdWx0RGVhdGhUZXN0OworCitURVNUX0YoVGVzdFJlc3VsdERlYXRoVGVz
dCwgR2V0VGVzdFBhcnRSZXN1bHQpIHsKKyAgQ29tcGFyZVRlc3RQYXJ0UmVzdWx0KCpwcjEsIHIy
LT5HZXRUZXN0UGFydFJlc3VsdCgwKSk7CisgIENvbXBhcmVUZXN0UGFydFJlc3VsdCgqcHIyLCBy
Mi0+R2V0VGVzdFBhcnRSZXN1bHQoMSkpOworICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKHIy
LT5HZXRUZXN0UGFydFJlc3VsdCgyKSwgIiIpOworICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVE
KHIyLT5HZXRUZXN0UGFydFJlc3VsdCgtMSksICIiKTsKK30KKworLy8gVGVzdHMgVGVzdFJlc3Vs
dCBoYXMgbm8gcHJvcGVydGllcyB3aGVuIG5vbmUgYXJlIGFkZGVkLgorVEVTVChUZXN0UmVzdWx0
UHJvcGVydHlUZXN0LCBOb1Byb3BlcnRpZXNGb3VuZFdoZW5Ob25lQXJlQWRkZWQpIHsKKyAgVGVz
dFJlc3VsdCB0ZXN0X3Jlc3VsdDsKKyAgQVNTRVJUX0VRKDAsIHRlc3RfcmVzdWx0LnRlc3RfcHJv
cGVydHlfY291bnQoKSk7Cit9CisKKy8vIFRlc3RzIFRlc3RSZXN1bHQgaGFzIHRoZSBleHBlY3Rl
ZCBwcm9wZXJ0eSB3aGVuIGFkZGVkLgorVEVTVChUZXN0UmVzdWx0UHJvcGVydHlUZXN0LCBPbmVQ
cm9wZXJ0eUZvdW5kV2hlbkFkZGVkKSB7CisgIFRlc3RSZXN1bHQgdGVzdF9yZXN1bHQ7CisgIFRl
c3RQcm9wZXJ0eSBwcm9wZXJ0eSgia2V5XzEiLCAiMSIpOworICBUZXN0UmVzdWx0QWNjZXNzb3I6
OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgInRlc3RjYXNlIiwgcHJvcGVydHkpOworICBB
U1NFUlRfRVEoMSwgdGVzdF9yZXN1bHQudGVzdF9wcm9wZXJ0eV9jb3VudCgpKTsKKyAgY29uc3Qg
VGVzdFByb3BlcnR5JiBhY3R1YWxfcHJvcGVydHkgPSB0ZXN0X3Jlc3VsdC5HZXRUZXN0UHJvcGVy
dHkoMCk7CisgIEVYUEVDVF9TVFJFUSgia2V5XzEiLCBhY3R1YWxfcHJvcGVydHkua2V5KCkpOwor
ICBFWFBFQ1RfU1RSRVEoIjEiLCBhY3R1YWxfcHJvcGVydHkudmFsdWUoKSk7Cit9CisKKy8vIFRl
c3RzIFRlc3RSZXN1bHQgaGFzIG11bHRpcGxlIHByb3BlcnRpZXMgd2hlbiBhZGRlZC4KK1RFU1Qo
VGVzdFJlc3VsdFByb3BlcnR5VGVzdCwgTXVsdGlwbGVQcm9wZXJ0aWVzRm91bmRXaGVuQWRkZWQp
IHsKKyAgVGVzdFJlc3VsdCB0ZXN0X3Jlc3VsdDsKKyAgVGVzdFByb3BlcnR5IHByb3BlcnR5XzEo
ImtleV8xIiwgIjEiKTsKKyAgVGVzdFByb3BlcnR5IHByb3BlcnR5XzIoImtleV8yIiwgIjIiKTsK
KyAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsICJ0ZXN0
Y2FzZSIsIHByb3BlcnR5XzEpOworICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5
KCZ0ZXN0X3Jlc3VsdCwgInRlc3RjYXNlIiwgcHJvcGVydHlfMik7CisgIEFTU0VSVF9FUSgyLCB0
ZXN0X3Jlc3VsdC50ZXN0X3Byb3BlcnR5X2NvdW50KCkpOworICBjb25zdCBUZXN0UHJvcGVydHkm
IGFjdHVhbF9wcm9wZXJ0eV8xID0gdGVzdF9yZXN1bHQuR2V0VGVzdFByb3BlcnR5KDApOworICBF
WFBFQ1RfU1RSRVEoImtleV8xIiwgYWN0dWFsX3Byb3BlcnR5XzEua2V5KCkpOworICBFWFBFQ1Rf
U1RSRVEoIjEiLCBhY3R1YWxfcHJvcGVydHlfMS52YWx1ZSgpKTsKKworICBjb25zdCBUZXN0UHJv
cGVydHkmIGFjdHVhbF9wcm9wZXJ0eV8yID0gdGVzdF9yZXN1bHQuR2V0VGVzdFByb3BlcnR5KDEp
OworICBFWFBFQ1RfU1RSRVEoImtleV8yIiwgYWN0dWFsX3Byb3BlcnR5XzIua2V5KCkpOworICBF
WFBFQ1RfU1RSRVEoIjIiLCBhY3R1YWxfcHJvcGVydHlfMi52YWx1ZSgpKTsKK30KKworLy8gVGVz
dHMgVGVzdFJlc3VsdDo6UmVjb3JkUHJvcGVydHkoKSBvdmVycmlkZXMgdmFsdWVzIGZvciBkdXBs
aWNhdGUga2V5cy4KK1RFU1QoVGVzdFJlc3VsdFByb3BlcnR5VGVzdCwgT3ZlcnJpZGVzVmFsdWVz
Rm9yRHVwbGljYXRlS2V5cykgeworICBUZXN0UmVzdWx0IHRlc3RfcmVzdWx0OworICBUZXN0UHJv
cGVydHkgcHJvcGVydHlfMV8xKCJrZXlfMSIsICIxIik7CisgIFRlc3RQcm9wZXJ0eSBwcm9wZXJ0
eV8yXzEoImtleV8yIiwgIjIiKTsKKyAgVGVzdFByb3BlcnR5IHByb3BlcnR5XzFfMigia2V5XzEi
LCAiMTIiKTsKKyAgVGVzdFByb3BlcnR5IHByb3BlcnR5XzJfMigia2V5XzIiLCAiMjIiKTsKKyAg
VGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsICJ0ZXN0Y2Fz
ZSIsIHByb3BlcnR5XzFfMSk7CisgIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHko
JnRlc3RfcmVzdWx0LCAidGVzdGNhc2UiLCBwcm9wZXJ0eV8yXzEpOworICBUZXN0UmVzdWx0QWNj
ZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgInRlc3RjYXNlIiwgcHJvcGVydHlf
MV8yKTsKKyAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQs
ICJ0ZXN0Y2FzZSIsIHByb3BlcnR5XzJfMik7CisKKyAgQVNTRVJUX0VRKDIsIHRlc3RfcmVzdWx0
LnRlc3RfcHJvcGVydHlfY291bnQoKSk7CisgIGNvbnN0IFRlc3RQcm9wZXJ0eSYgYWN0dWFsX3By
b3BlcnR5XzEgPSB0ZXN0X3Jlc3VsdC5HZXRUZXN0UHJvcGVydHkoMCk7CisgIEVYUEVDVF9TVFJF
USgia2V5XzEiLCBhY3R1YWxfcHJvcGVydHlfMS5rZXkoKSk7CisgIEVYUEVDVF9TVFJFUSgiMTIi
LCBhY3R1YWxfcHJvcGVydHlfMS52YWx1ZSgpKTsKKworICBjb25zdCBUZXN0UHJvcGVydHkmIGFj
dHVhbF9wcm9wZXJ0eV8yID0gdGVzdF9yZXN1bHQuR2V0VGVzdFByb3BlcnR5KDEpOworICBFWFBF
Q1RfU1RSRVEoImtleV8yIiwgYWN0dWFsX3Byb3BlcnR5XzIua2V5KCkpOworICBFWFBFQ1RfU1RS
RVEoIjIyIiwgYWN0dWFsX3Byb3BlcnR5XzIudmFsdWUoKSk7Cit9CisKKy8vIFRlc3RzIFRlc3RS
ZXN1bHQ6OkdldFRlc3RQcm9wZXJ0eSgpLgorVEVTVChUZXN0UmVzdWx0UHJvcGVydHlUZXN0LCBH
ZXRUZXN0UHJvcGVydHkpIHsKKyAgVGVzdFJlc3VsdCB0ZXN0X3Jlc3VsdDsKKyAgVGVzdFByb3Bl
cnR5IHByb3BlcnR5XzEoImtleV8xIiwgIjEiKTsKKyAgVGVzdFByb3BlcnR5IHByb3BlcnR5XzIo
ImtleV8yIiwgIjIiKTsKKyAgVGVzdFByb3BlcnR5IHByb3BlcnR5XzMoImtleV8zIiwgIjMiKTsK
KyAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsICJ0ZXN0
Y2FzZSIsIHByb3BlcnR5XzEpOworICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5
KCZ0ZXN0X3Jlc3VsdCwgInRlc3RjYXNlIiwgcHJvcGVydHlfMik7CisgIFRlc3RSZXN1bHRBY2Nl
c3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCAidGVzdGNhc2UiLCBwcm9wZXJ0eV8z
KTsKKworICBjb25zdCBUZXN0UHJvcGVydHkmIGZldGNoZWRfcHJvcGVydHlfMSA9IHRlc3RfcmVz
dWx0LkdldFRlc3RQcm9wZXJ0eSgwKTsKKyAgY29uc3QgVGVzdFByb3BlcnR5JiBmZXRjaGVkX3By
b3BlcnR5XzIgPSB0ZXN0X3Jlc3VsdC5HZXRUZXN0UHJvcGVydHkoMSk7CisgIGNvbnN0IFRlc3RQ
cm9wZXJ0eSYgZmV0Y2hlZF9wcm9wZXJ0eV8zID0gdGVzdF9yZXN1bHQuR2V0VGVzdFByb3BlcnR5
KDIpOworCisgIEVYUEVDVF9TVFJFUSgia2V5XzEiLCBmZXRjaGVkX3Byb3BlcnR5XzEua2V5KCkp
OworICBFWFBFQ1RfU1RSRVEoIjEiLCBmZXRjaGVkX3Byb3BlcnR5XzEudmFsdWUoKSk7CisKKyAg
RVhQRUNUX1NUUkVRKCJrZXlfMiIsIGZldGNoZWRfcHJvcGVydHlfMi5rZXkoKSk7CisgIEVYUEVD
VF9TVFJFUSgiMiIsIGZldGNoZWRfcHJvcGVydHlfMi52YWx1ZSgpKTsKKworICBFWFBFQ1RfU1RS
RVEoImtleV8zIiwgZmV0Y2hlZF9wcm9wZXJ0eV8zLmtleSgpKTsKKyAgRVhQRUNUX1NUUkVRKCIz
IiwgZmV0Y2hlZF9wcm9wZXJ0eV8zLnZhbHVlKCkpOworCisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQ
T1JURUQodGVzdF9yZXN1bHQuR2V0VGVzdFByb3BlcnR5KDMpLCAiIik7CisgIEVYUEVDVF9ERUFU
SF9JRl9TVVBQT1JURUQodGVzdF9yZXN1bHQuR2V0VGVzdFByb3BlcnR5KC0xKSwgIiIpOworfQor
CisvLyBUZXN0cyB0aGUgVGVzdCBjbGFzcy4KKy8vCisvLyBJdCdzIGRpZmZpY3VsdCB0byB0ZXN0
IGV2ZXJ5IHB1YmxpYyBtZXRob2Qgb2YgdGhpcyBjbGFzcyAod2UgYXJlCisvLyBhbHJlYWR5IHN0
cmV0Y2hpbmcgdGhlIGxpbWl0IG9mIEdvb2dsZSBUZXN0IGJ5IHVzaW5nIGl0IHRvIHRlc3QgaXRz
ZWxmISkuCisvLyBGb3J0dW5hdGVseSwgd2UgZG9uJ3QgaGF2ZSB0byBkbyB0aGF0LCBhcyB3ZSBh
cmUgYWxyZWFkeSB0ZXN0aW5nCisvLyB0aGUgZnVuY3Rpb25hbGl0aWVzIG9mIHRoZSBUZXN0IGNs
YXNzIGV4dGVuc2l2ZWx5IGJ5IHVzaW5nIEdvb2dsZSBUZXN0CisvLyBhbG9uZS4KKy8vCisvLyBU
aGVyZWZvcmUsIHRoaXMgc2VjdGlvbiBvbmx5IGNvbnRhaW5zIG9uZSB0ZXN0LgorCisvLyBUZXN0
cyB0aGF0IEdUZXN0RmxhZ1NhdmVyIHdvcmtzIG9uIFdpbmRvd3MgYW5kIE1hYy4KKworY2xhc3Mg
R1Rlc3RGbGFnU2F2ZXJUZXN0IDogcHVibGljIFRlc3QgeworIHByb3RlY3RlZDoKKyAgLy8gU2F2
ZXMgdGhlIEdvb2dsZSBUZXN0IGZsYWdzIHN1Y2ggdGhhdCB3ZSBjYW4gcmVzdG9yZSB0aGVtIGxh
dGVyLCBhbmQKKyAgLy8gdGhlbiBzZXRzIHRoZW0gdG8gdGhlaXIgZGVmYXVsdCB2YWx1ZXMuICBU
aGlzIHdpbGwgYmUgY2FsbGVkCisgIC8vIGJlZm9yZSB0aGUgZmlyc3QgdGVzdCBpbiB0aGlzIHRl
c3QgY2FzZSBpcyBydW4uCisgIHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7CisgICAgc2F2
ZXJfID0gbmV3IEdUZXN0RmxhZ1NhdmVyOworCisgICAgR1RFU1RfRkxBRyhhbHNvX3J1bl9kaXNh
YmxlZF90ZXN0cykgPSBmYWxzZTsKKyAgICBHVEVTVF9GTEFHKGJyZWFrX29uX2ZhaWx1cmUpID0g
ZmFsc2U7CisgICAgR1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSA9IGZhbHNlOworICAgIEdU
RVNUX0ZMQUcoZGVhdGhfdGVzdF91c2VfZm9yaykgPSBmYWxzZTsKKyAgICBHVEVTVF9GTEFHKGNv
bG9yKSA9ICJhdXRvIjsKKyAgICBHVEVTVF9GTEFHKGZpbHRlcikgPSAiIjsKKyAgICBHVEVTVF9G
TEFHKGxpc3RfdGVzdHMpID0gZmFsc2U7CisgICAgR1RFU1RfRkxBRyhvdXRwdXQpID0gIiI7Cisg
ICAgR1RFU1RfRkxBRyhwcmludF90aW1lKSA9IHRydWU7CisgICAgR1RFU1RfRkxBRyhyYW5kb21f
c2VlZCkgPSAwOworICAgIEdURVNUX0ZMQUcocmVwZWF0KSA9IDE7CisgICAgR1RFU1RfRkxBRyhz
aHVmZmxlKSA9IGZhbHNlOworICAgIEdURVNUX0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpID0ga01h
eFN0YWNrVHJhY2VEZXB0aDsKKyAgICBHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRfdG8pID0gIiI7
CisgICAgR1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSA9IGZhbHNlOworICB9CisKKyAgLy8g
UmVzdG9yZXMgdGhlIEdvb2dsZSBUZXN0IGZsYWdzIHRoYXQgdGhlIHRlc3RzIGhhdmUgbW9kaWZp
ZWQuICBUaGlzIHdpbGwKKyAgLy8gYmUgY2FsbGVkIGFmdGVyIHRoZSBsYXN0IHRlc3QgaW4gdGhp
cyB0ZXN0IGNhc2UgaXMgcnVuLgorICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgewor
ICAgIGRlbGV0ZSBzYXZlcl87CisgICAgc2F2ZXJfID0gTlVMTDsKKyAgfQorCisgIC8vIFZlcmlm
aWVzIHRoYXQgdGhlIEdvb2dsZSBUZXN0IGZsYWdzIGhhdmUgdGhlaXIgZGVmYXVsdCB2YWx1ZXMs
IGFuZCB0aGVuCisgIC8vIG1vZGlmaWVzIGVhY2ggb2YgdGhlbS4KKyAgdm9pZCBWZXJpZnlBbmRN
b2RpZnlGbGFncygpIHsKKyAgICBFWFBFQ1RfRkFMU0UoR1RFU1RfRkxBRyhhbHNvX3J1bl9kaXNh
YmxlZF90ZXN0cykpOworICAgIEVYUEVDVF9GQUxTRShHVEVTVF9GTEFHKGJyZWFrX29uX2ZhaWx1
cmUpKTsKKyAgICBFWFBFQ1RfRkFMU0UoR1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSk7Cisg
ICAgRVhQRUNUX1NUUkVRKCJhdXRvIiwgR1RFU1RfRkxBRyhjb2xvcikuY19zdHIoKSk7CisgICAg
RVhQRUNUX0ZBTFNFKEdURVNUX0ZMQUcoZGVhdGhfdGVzdF91c2VfZm9yaykpOworICAgIEVYUEVD
VF9TVFJFUSgiIiwgR1RFU1RfRkxBRyhmaWx0ZXIpLmNfc3RyKCkpOworICAgIEVYUEVDVF9GQUxT
RShHVEVTVF9GTEFHKGxpc3RfdGVzdHMpKTsKKyAgICBFWFBFQ1RfU1RSRVEoIiIsIEdURVNUX0ZM
QUcob3V0cHV0KS5jX3N0cigpKTsKKyAgICBFWFBFQ1RfVFJVRShHVEVTVF9GTEFHKHByaW50X3Rp
bWUpKTsKKyAgICBFWFBFQ1RfRVEoMCwgR1RFU1RfRkxBRyhyYW5kb21fc2VlZCkpOworICAgIEVY
UEVDVF9FUSgxLCBHVEVTVF9GTEFHKHJlcGVhdCkpOworICAgIEVYUEVDVF9GQUxTRShHVEVTVF9G
TEFHKHNodWZmbGUpKTsKKyAgICBFWFBFQ1RfRVEoa01heFN0YWNrVHJhY2VEZXB0aCwgR1RFU1Rf
RkxBRyhzdGFja190cmFjZV9kZXB0aCkpOworICAgIEVYUEVDVF9TVFJFUSgiIiwgR1RFU1RfRkxB
RyhzdHJlYW1fcmVzdWx0X3RvKS5jX3N0cigpKTsKKyAgICBFWFBFQ1RfRkFMU0UoR1RFU1RfRkxB
Ryh0aHJvd19vbl9mYWlsdXJlKSk7CisKKyAgICBHVEVTVF9GTEFHKGFsc29fcnVuX2Rpc2FibGVk
X3Rlc3RzKSA9IHRydWU7CisgICAgR1RFU1RfRkxBRyhicmVha19vbl9mYWlsdXJlKSA9IHRydWU7
CisgICAgR1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSA9IHRydWU7CisgICAgR1RFU1RfRkxB
Ryhjb2xvcikgPSAibm8iOworICAgIEdURVNUX0ZMQUcoZGVhdGhfdGVzdF91c2VfZm9yaykgPSB0
cnVlOworICAgIEdURVNUX0ZMQUcoZmlsdGVyKSA9ICJhYmMiOworICAgIEdURVNUX0ZMQUcobGlz
dF90ZXN0cykgPSB0cnVlOworICAgIEdURVNUX0ZMQUcob3V0cHV0KSA9ICJ4bWw6Zm9vLnhtbCI7
CisgICAgR1RFU1RfRkxBRyhwcmludF90aW1lKSA9IGZhbHNlOworICAgIEdURVNUX0ZMQUcocmFu
ZG9tX3NlZWQpID0gMTsKKyAgICBHVEVTVF9GTEFHKHJlcGVhdCkgPSAxMDA7CisgICAgR1RFU1Rf
RkxBRyhzaHVmZmxlKSA9IHRydWU7CisgICAgR1RFU1RfRkxBRyhzdGFja190cmFjZV9kZXB0aCkg
PSAxOworICAgIEdURVNUX0ZMQUcoc3RyZWFtX3Jlc3VsdF90bykgPSAibG9jYWxob3N0OjEyMzQi
OworICAgIEdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSkgPSB0cnVlOworICB9CisKKyBwcml2
YXRlOgorICAvLyBGb3Igc2F2aW5nIEdvb2dsZSBUZXN0IGZsYWdzIGR1cmluZyB0aGlzIHRlc3Qg
Y2FzZS4KKyAgc3RhdGljIEdUZXN0RmxhZ1NhdmVyKiBzYXZlcl87Cit9OworCitHVGVzdEZsYWdT
YXZlciogR1Rlc3RGbGFnU2F2ZXJUZXN0OjpzYXZlcl8gPSBOVUxMOworCisvLyBHb29nbGUgVGVz
dCBkb2Vzbid0IGd1YXJhbnRlZSB0aGUgb3JkZXIgb2YgdGVzdHMuICBUaGUgZm9sbG93aW5nIHR3
bworLy8gdGVzdHMgYXJlIGRlc2lnbmVkIHRvIHdvcmsgcmVnYXJkbGVzcyBvZiB0aGVpciBvcmRl
ci4KKworLy8gTW9kaWZpZXMgdGhlIEdvb2dsZSBUZXN0IGZsYWdzIGluIHRoZSB0ZXN0IGJvZHku
CitURVNUX0YoR1Rlc3RGbGFnU2F2ZXJUZXN0LCBNb2RpZnlHVGVzdEZsYWdzKSB7CisgIFZlcmlm
eUFuZE1vZGlmeUZsYWdzKCk7Cit9CisKKy8vIFZlcmlmaWVzIHRoYXQgdGhlIEdvb2dsZSBUZXN0
IGZsYWdzIGluIHRoZSBib2R5IG9mIHRoZSBwcmV2aW91cyB0ZXN0IHdlcmUKKy8vIHJlc3RvcmVk
IHRvIHRoZWlyIG9yaWdpbmFsIHZhbHVlcy4KK1RFU1RfRihHVGVzdEZsYWdTYXZlclRlc3QsIFZl
cmlmeUdUZXN0RmxhZ3MpIHsKKyAgVmVyaWZ5QW5kTW9kaWZ5RmxhZ3MoKTsKK30KKworLy8gU2V0
cyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSB3aXRoIHRoZSBnaXZlbiBuYW1lIHRvIHRoZSBnaXZl
bgorLy8gdmFsdWUuICBJZiB0aGUgdmFsdWUgYXJndW1lbnQgaXMgIiIsIHVuc2V0cyB0aGUgZW52
aXJvbm1lbnQKKy8vIHZhcmlhYmxlLiAgVGhlIGNhbGxlciBtdXN0IGVuc3VyZSB0aGF0IGJvdGgg
YXJndW1lbnRzIGFyZSBub3QgTlVMTC4KK3N0YXRpYyB2b2lkIFNldEVudihjb25zdCBjaGFyKiBu
YW1lLCBjb25zdCBjaGFyKiB2YWx1ZSkgeworI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisg
IC8vIEVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUgbm90IHN1cHBvcnRlZCBvbiBXaW5kb3dzIENF
LgorICByZXR1cm47CisjZWxpZiBkZWZpbmVkKF9fQk9STEFORENfXykgfHwgZGVmaW5lZChfX1N1
bk9TXzVfOCkgfHwgZGVmaW5lZChfX1N1bk9TXzVfOSkKKyAgLy8gQysrQnVpbGRlcidzIHB1dGVu
diBvbmx5IHN0b3JlcyBhIHBvaW50ZXIgdG8gaXRzIHBhcmFtZXRlcjsgd2UgaGF2ZSB0bworICAv
LyBlbnN1cmUgdGhhdCB0aGUgc3RyaW5nIHJlbWFpbnMgdmFsaWQgYXMgbG9uZyBhcyBpdCBtaWdo
dCBiZSBuZWVkZWQuCisgIC8vIFdlIHVzZSBhbiBzdGQ6Om1hcCB0byBkbyBzby4KKyAgc3RhdGlj
IHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZyo+IGFkZGVkX2VudjsKKworICAvLyBC
ZWNhdXNlIHB1dGVudiBzdG9yZXMgYSBwb2ludGVyIHRvIHRoZSBzdHJpbmcgYnVmZmVyLCB3ZSBj
YW4ndCBkZWxldGUgdGhlCisgIC8vIHByZXZpb3VzIHN0cmluZyAoaWYgcHJlc2VudCkgdW50aWwg
YWZ0ZXIgaXQncyByZXBsYWNlZC4KKyAgc3RkOjpzdHJpbmcgKnByZXZfZW52ID0gTlVMTDsKKyAg
aWYgKGFkZGVkX2Vudi5maW5kKG5hbWUpICE9IGFkZGVkX2Vudi5lbmQoKSkgeworICAgIHByZXZf
ZW52ID0gYWRkZWRfZW52W25hbWVdOworICB9CisgIGFkZGVkX2VudltuYW1lXSA9IG5ldyBzdGQ6
OnN0cmluZygKKyAgICAgIChNZXNzYWdlKCkgPDwgbmFtZSA8PCAiPSIgPDwgdmFsdWUpLkdldFN0
cmluZygpKTsKKworICAvLyBUaGUgc3RhbmRhcmQgc2lnbmF0dXJlIG9mIHB1dGVudiBhY2NlcHRz
IGEgJ2NoYXIqJyBhcmd1bWVudC4gT3RoZXIKKyAgLy8gaW1wbGVtZW50YXRpb25zLCBsaWtlIEMr
K0J1aWxkZXIncywgYWNjZXB0IGEgJ2NvbnN0IGNoYXIqJy4KKyAgLy8gV2UgY2FzdCBhd2F5IHRo
ZSAnY29uc3QnIHNpbmNlIHRoYXQgd291bGQgd29yayBmb3IgYm90aCB2YXJpYW50cy4KKyAgcHV0
ZW52KGNvbnN0X2Nhc3Q8Y2hhcio+KGFkZGVkX2VudltuYW1lXS0+Y19zdHIoKSkpOworICBkZWxl
dGUgcHJldl9lbnY7CisjZWxpZiBHVEVTVF9PU19XSU5ET1dTICAvLyBJZiB3ZSBhcmUgb24gV2lu
ZG93cyBwcm9wZXIuCisgIF9wdXRlbnYoKE1lc3NhZ2UoKSA8PCBuYW1lIDw8ICI9IiA8PCB2YWx1
ZSkuR2V0U3RyaW5nKCkuY19zdHIoKSk7CisjZWxzZQorICBpZiAoKnZhbHVlID09ICdcMCcpIHsK
KyAgICB1bnNldGVudihuYW1lKTsKKyAgfSBlbHNlIHsKKyAgICBzZXRlbnYobmFtZSwgdmFsdWUs
IDEpOworICB9CisjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCit9CisKKyNpZiAh
R1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKy8vIEVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUgbm90
IHN1cHBvcnRlZCBvbiBXaW5kb3dzIENFLgorCit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6SW50
MzJGcm9tR1Rlc3RFbnY7CisKKy8vIFRlc3RzIEludDMyRnJvbUdUZXN0RW52KCkuCisKKy8vIFRl
c3RzIHRoYXQgSW50MzJGcm9tR1Rlc3RFbnYoKSByZXR1cm5zIHRoZSBkZWZhdWx0IHZhbHVlIHdo
ZW4gdGhlCisvLyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3Qgc2V0LgorVEVTVChJbnQzMkZy
b21HVGVzdEVudlRlc3QsIFJldHVybnNEZWZhdWx0V2hlblZhcmlhYmxlSXNOb3RTZXQpIHsKKyAg
U2V0RW52KEdURVNUX0ZMQUdfUFJFRklYX1VQUEVSXyAiVEVNUCIsICIiKTsKKyAgRVhQRUNUX0VR
KDEwLCBJbnQzMkZyb21HVGVzdEVudigidGVtcCIsIDEwKSk7Cit9CisKKyMgaWYgIWRlZmluZWQo
R1RFU1RfR0VUX0lOVDMyX0ZST01fRU5WXykKKworLy8gVGVzdHMgdGhhdCBJbnQzMkZyb21HVGVz
dEVudigpIHJldHVybnMgdGhlIGRlZmF1bHQgdmFsdWUgd2hlbiB0aGUKKy8vIGVudmlyb25tZW50
IHZhcmlhYmxlIG92ZXJmbG93cyBhcyBhbiBJbnQzMi4KK1RFU1QoSW50MzJGcm9tR1Rlc3RFbnZU
ZXN0LCBSZXR1cm5zRGVmYXVsdFdoZW5WYWx1ZU92ZXJmbG93cykgeworICBwcmludGYoIihleHBl
Y3RpbmcgMiB3YXJuaW5ncylcbiIpOworCisgIFNldEVudihHVEVTVF9GTEFHX1BSRUZJWF9VUFBF
Ul8gIlRFTVAiLCAiMTIzNDU2Nzg5ODc2NTQzMjEiKTsKKyAgRVhQRUNUX0VRKDIwLCBJbnQzMkZy
b21HVGVzdEVudigidGVtcCIsIDIwKSk7CisKKyAgU2V0RW52KEdURVNUX0ZMQUdfUFJFRklYX1VQ
UEVSXyAiVEVNUCIsICItMTIzNDU2Nzg5ODc2NTQzMjEiKTsKKyAgRVhQRUNUX0VRKDMwLCBJbnQz
MkZyb21HVGVzdEVudigidGVtcCIsIDMwKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgSW50MzJGcm9t
R1Rlc3RFbnYoKSByZXR1cm5zIHRoZSBkZWZhdWx0IHZhbHVlIHdoZW4gdGhlCisvLyBlbnZpcm9u
bWVudCB2YXJpYWJsZSBkb2VzIG5vdCByZXByZXNlbnQgYSB2YWxpZCBkZWNpbWFsIGludGVnZXIu
CitURVNUKEludDMyRnJvbUdUZXN0RW52VGVzdCwgUmV0dXJuc0RlZmF1bHRXaGVuVmFsdWVJc0lu
dmFsaWQpIHsKKyAgcHJpbnRmKCIoZXhwZWN0aW5nIDIgd2FybmluZ3MpXG4iKTsKKworICBTZXRF
bnYoR1RFU1RfRkxBR19QUkVGSVhfVVBQRVJfICJURU1QIiwgIkExIik7CisgIEVYUEVDVF9FUSg0
MCwgSW50MzJGcm9tR1Rlc3RFbnYoInRlbXAiLCA0MCkpOworCisgIFNldEVudihHVEVTVF9GTEFH
X1BSRUZJWF9VUFBFUl8gIlRFTVAiLCAiMTJYIik7CisgIEVYUEVDVF9FUSg1MCwgSW50MzJGcm9t
R1Rlc3RFbnYoInRlbXAiLCA1MCkpOworfQorCisjIGVuZGlmICAvLyAhZGVmaW5lZChHVEVTVF9H
RVRfSU5UMzJfRlJPTV9FTlZfKQorCisvLyBUZXN0cyB0aGF0IEludDMyRnJvbUdUZXN0RW52KCkg
cGFyc2VzIGFuZCByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUKKy8vIGVudmlyb25tZW50IHZhcmlh
YmxlIHdoZW4gaXQgcmVwcmVzZW50cyBhIHZhbGlkIGRlY2ltYWwgaW50ZWdlciBpbgorLy8gdGhl
IHJhbmdlIG9mIGFuIEludDMyLgorVEVTVChJbnQzMkZyb21HVGVzdEVudlRlc3QsIFBhcnNlc0Fu
ZFJldHVybnNWYWxpZFZhbHVlKSB7CisgIFNldEVudihHVEVTVF9GTEFHX1BSRUZJWF9VUFBFUl8g
IlRFTVAiLCAiMTIzIik7CisgIEVYUEVDVF9FUSgxMjMsIEludDMyRnJvbUdUZXN0RW52KCJ0ZW1w
IiwgMCkpOworCisgIFNldEVudihHVEVTVF9GTEFHX1BSRUZJWF9VUFBFUl8gIlRFTVAiLCAiLTMy
MSIpOworICBFWFBFQ1RfRVEoLTMyMSwgSW50MzJGcm9tR1Rlc3RFbnYoInRlbXAiLCAwKSk7Cit9
CisjZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorCisvLyBUZXN0cyBQYXJzZUlu
dDMyRmxhZygpLgorCisvLyBUZXN0cyB0aGF0IFBhcnNlSW50MzJGbGFnKCkgcmV0dXJucyBmYWxz
ZSBhbmQgZG9lc24ndCBjaGFuZ2UgdGhlCisvLyBvdXRwdXQgdmFsdWUgd2hlbiB0aGUgZmxhZyBo
YXMgd3JvbmcgZm9ybWF0CitURVNUKFBhcnNlSW50MzJGbGFnVGVzdCwgUmV0dXJuc0ZhbHNlRm9y
SW52YWxpZEZsYWcpIHsKKyAgSW50MzIgdmFsdWUgPSAxMjM7CisgIEVYUEVDVF9GQUxTRShQYXJz
ZUludDMyRmxhZygiLS1hPTEwMCIsICJiIiwgJnZhbHVlKSk7CisgIEVYUEVDVF9FUSgxMjMsIHZh
bHVlKTsKKworICBFWFBFQ1RfRkFMU0UoUGFyc2VJbnQzMkZsYWcoImE9MTAwIiwgImEiLCAmdmFs
dWUpKTsKKyAgRVhQRUNUX0VRKDEyMywgdmFsdWUpOworfQorCisvLyBUZXN0cyB0aGF0IFBhcnNl
SW50MzJGbGFnKCkgcmV0dXJucyBmYWxzZSBhbmQgZG9lc24ndCBjaGFuZ2UgdGhlCisvLyBvdXRw
dXQgdmFsdWUgd2hlbiB0aGUgZmxhZyBvdmVyZmxvd3MgYXMgYW4gSW50MzIuCitURVNUKFBhcnNl
SW50MzJGbGFnVGVzdCwgUmV0dXJuc0RlZmF1bHRXaGVuVmFsdWVPdmVyZmxvd3MpIHsKKyAgcHJp
bnRmKCIoZXhwZWN0aW5nIDIgd2FybmluZ3MpXG4iKTsKKworICBJbnQzMiB2YWx1ZSA9IDEyMzsK
KyAgRVhQRUNUX0ZBTFNFKFBhcnNlSW50MzJGbGFnKCItLWFiYz0xMjM0NTY3ODk4NzY1NDMyMSIs
ICJhYmMiLCAmdmFsdWUpKTsKKyAgRVhQRUNUX0VRKDEyMywgdmFsdWUpOworCisgIEVYUEVDVF9G
QUxTRShQYXJzZUludDMyRmxhZygiLS1hYmM9LTEyMzQ1Njc4OTg3NjU0MzIxIiwgImFiYyIsICZ2
YWx1ZSkpOworICBFWFBFQ1RfRVEoMTIzLCB2YWx1ZSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgUGFy
c2VJbnQzMkZsYWcoKSByZXR1cm5zIGZhbHNlIGFuZCBkb2Vzbid0IGNoYW5nZSB0aGUKKy8vIG91
dHB1dCB2YWx1ZSB3aGVuIHRoZSBmbGFnIGRvZXMgbm90IHJlcHJlc2VudCBhIHZhbGlkIGRlY2lt
YWwKKy8vIGludGVnZXIuCitURVNUKFBhcnNlSW50MzJGbGFnVGVzdCwgUmV0dXJuc0RlZmF1bHRX
aGVuVmFsdWVJc0ludmFsaWQpIHsKKyAgcHJpbnRmKCIoZXhwZWN0aW5nIDIgd2FybmluZ3MpXG4i
KTsKKworICBJbnQzMiB2YWx1ZSA9IDEyMzsKKyAgRVhQRUNUX0ZBTFNFKFBhcnNlSW50MzJGbGFn
KCItLWFiYz1BMSIsICJhYmMiLCAmdmFsdWUpKTsKKyAgRVhQRUNUX0VRKDEyMywgdmFsdWUpOwor
CisgIEVYUEVDVF9GQUxTRShQYXJzZUludDMyRmxhZygiLS1hYmM9MTJYIiwgImFiYyIsICZ2YWx1
ZSkpOworICBFWFBFQ1RfRVEoMTIzLCB2YWx1ZSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgUGFyc2VJ
bnQzMkZsYWcoKSBwYXJzZXMgdGhlIHZhbHVlIG9mIHRoZSBmbGFnIGFuZAorLy8gcmV0dXJucyB0
cnVlIHdoZW4gdGhlIGZsYWcgcmVwcmVzZW50cyBhIHZhbGlkIGRlY2ltYWwgaW50ZWdlciBpbgor
Ly8gdGhlIHJhbmdlIG9mIGFuIEludDMyLgorVEVTVChQYXJzZUludDMyRmxhZ1Rlc3QsIFBhcnNl
c0FuZFJldHVybnNWYWxpZFZhbHVlKSB7CisgIEludDMyIHZhbHVlID0gMTIzOworICBFWFBFQ1Rf
VFJVRShQYXJzZUludDMyRmxhZygiLS0iIEdURVNUX0ZMQUdfUFJFRklYXyAiYWJjPTQ1NiIsICJh
YmMiLCAmdmFsdWUpKTsKKyAgRVhQRUNUX0VRKDQ1NiwgdmFsdWUpOworCisgIEVYUEVDVF9UUlVF
KFBhcnNlSW50MzJGbGFnKCItLSIgR1RFU1RfRkxBR19QUkVGSVhfICJhYmM9LTc4OSIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJhYmMiLCAmdmFsdWUpKTsKKyAgRVhQRUNUX0VRKC03
ODksIHZhbHVlKTsKK30KKworLy8gVGVzdHMgdGhhdCBJbnQzMkZyb21FbnZPckRpZSgpIHBhcnNl
cyB0aGUgdmFsdWUgb2YgdGhlIHZhciBvcgorLy8gcmV0dXJucyB0aGUgY29ycmVjdCBkZWZhdWx0
LgorLy8gRW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZSBub3Qgc3VwcG9ydGVkIG9uIFdpbmRvd3Mg
Q0UuCisjaWYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCitURVNUKEludDMyRnJvbUVudk9yRGll
VGVzdCwgUGFyc2VzQW5kUmV0dXJuc1ZhbGlkVmFsdWUpIHsKKyAgRVhQRUNUX0VRKDMzMywgSW50
MzJGcm9tRW52T3JEaWUoR1RFU1RfRkxBR19QUkVGSVhfVVBQRVJfICJVbnNldFZhciIsIDMzMykp
OworICBTZXRFbnYoR1RFU1RfRkxBR19QUkVGSVhfVVBQRVJfICJVbnNldFZhciIsICIxMjMiKTsK
KyAgRVhQRUNUX0VRKDEyMywgSW50MzJGcm9tRW52T3JEaWUoR1RFU1RfRkxBR19QUkVGSVhfVVBQ
RVJfICJVbnNldFZhciIsIDMzMykpOworICBTZXRFbnYoR1RFU1RfRkxBR19QUkVGSVhfVVBQRVJf
ICJVbnNldFZhciIsICItMTIzIik7CisgIEVYUEVDVF9FUSgtMTIzLCBJbnQzMkZyb21FbnZPckRp
ZShHVEVTVF9GTEFHX1BSRUZJWF9VUFBFUl8gIlVuc2V0VmFyIiwgMzMzKSk7Cit9CisjZW5kaWYg
IC8vICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorCisvLyBUZXN0cyB0aGF0IEludDMyRnJvbUVu
dk9yRGllKCkgYWJvcnRzIHdpdGggYW4gZXJyb3IgbWVzc2FnZQorLy8gaWYgdGhlIHZhcmlhYmxl
IGlzIG5vdCBhbiBJbnQzMi4KK1RFU1QoSW50MzJGcm9tRW52T3JEaWVEZWF0aFRlc3QsIEFib3J0
c09uRmFpbHVyZSkgeworICBTZXRFbnYoR1RFU1RfRkxBR19QUkVGSVhfVVBQRVJfICJWQVIiLCAi
eHh4Iik7CisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoCisgICAgICBJbnQzMkZyb21FbnZP
ckRpZShHVEVTVF9GTEFHX1BSRUZJWF9VUFBFUl8gIlZBUiIsIDEyMyksCisgICAgICAiLioiKTsK
K30KKworLy8gVGVzdHMgdGhhdCBJbnQzMkZyb21FbnZPckRpZSgpIGFib3J0cyB3aXRoIGFuIGVy
cm9yIG1lc3NhZ2UKKy8vIGlmIHRoZSB2YXJpYWJsZSBjYW5ub3QgYmUgcmVwcmVzbnRlZCBieSBh
biBJbnQzMi4KK1RFU1QoSW50MzJGcm9tRW52T3JEaWVEZWF0aFRlc3QsIEFib3J0c09uSW50MzJP
dmVyZmxvdykgeworICBTZXRFbnYoR1RFU1RfRkxBR19QUkVGSVhfVVBQRVJfICJWQVIiLCAiMTIz
NDU2Nzg5MTIzNDU2Nzg5MTIzNCIpOworICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKAorICAg
ICAgSW50MzJGcm9tRW52T3JEaWUoR1RFU1RfRkxBR19QUkVGSVhfVVBQRVJfICJWQVIiLCAxMjMp
LAorICAgICAgIi4qIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgU2hvdWxkUnVuVGVzdE9uU2hhcmQo
KSBzZWxlY3RzIGFsbCB0ZXN0cworLy8gd2hlcmUgdGhlcmUgaXMgMSBzaGFyZC4KK1RFU1QoU2hv
dWxkUnVuVGVzdE9uU2hhcmRUZXN0LCBJc1BhcnRpdGlvbldoZW5UaGVyZUlzT25lU2hhcmQpIHsK
KyAgRVhQRUNUX1RSVUUoU2hvdWxkUnVuVGVzdE9uU2hhcmQoMSwgMCwgMCkpOworICBFWFBFQ1Rf
VFJVRShTaG91bGRSdW5UZXN0T25TaGFyZCgxLCAwLCAxKSk7CisgIEVYUEVDVF9UUlVFKFNob3Vs
ZFJ1blRlc3RPblNoYXJkKDEsIDAsIDIpKTsKKyAgRVhQRUNUX1RSVUUoU2hvdWxkUnVuVGVzdE9u
U2hhcmQoMSwgMCwgMykpOworICBFWFBFQ1RfVFJVRShTaG91bGRSdW5UZXN0T25TaGFyZCgxLCAw
LCA0KSk7Cit9CisKK2NsYXNzIFNob3VsZFNoYXJkVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
IHsKKyBwcm90ZWN0ZWQ6CisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICBpbmRleF92YXJf
ID0gR1RFU1RfRkxBR19QUkVGSVhfVVBQRVJfICJJTkRFWCI7CisgICAgdG90YWxfdmFyXyA9IEdU
RVNUX0ZMQUdfUFJFRklYX1VQUEVSXyAiVE9UQUwiOworICB9CisKKyAgdmlydHVhbCB2b2lkIFRl
YXJEb3duKCkgeworICAgIFNldEVudihpbmRleF92YXJfLCAiIik7CisgICAgU2V0RW52KHRvdGFs
X3Zhcl8sICIiKTsKKyAgfQorCisgIGNvbnN0IGNoYXIqIGluZGV4X3Zhcl87CisgIGNvbnN0IGNo
YXIqIHRvdGFsX3Zhcl87Cit9OworCisvLyBUZXN0cyB0aGF0IHNoYXJkaW5nIGlzIGRpc2FibGVk
IGlmIG5laXRoZXIgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcworLy8gYXJlIHNldC4KK1RF
U1RfRihTaG91bGRTaGFyZFRlc3QsIFJldHVybnNGYWxzZVdoZW5OZWl0aGVyRW52VmFySXNTZXQp
IHsKKyAgU2V0RW52KGluZGV4X3Zhcl8sICIiKTsKKyAgU2V0RW52KHRvdGFsX3Zhcl8sICIiKTsK
KworICBFWFBFQ1RfRkFMU0UoU2hvdWxkU2hhcmQodG90YWxfdmFyXywgaW5kZXhfdmFyXywgZmFs
c2UpKTsKKyAgRVhQRUNUX0ZBTFNFKFNob3VsZFNoYXJkKHRvdGFsX3Zhcl8sIGluZGV4X3Zhcl8s
IHRydWUpKTsKK30KKworLy8gVGVzdHMgdGhhdCBzaGFyZGluZyBpcyBub3QgZW5hYmxlZCBpZiB0
b3RhbF9zaGFyZHMgID09IDEuCitURVNUX0YoU2hvdWxkU2hhcmRUZXN0LCBSZXR1cm5zRmFsc2VX
aGVuVG90YWxTaGFyZElzT25lKSB7CisgIFNldEVudihpbmRleF92YXJfLCAiMCIpOworICBTZXRF
bnYodG90YWxfdmFyXywgIjEiKTsKKyAgRVhQRUNUX0ZBTFNFKFNob3VsZFNoYXJkKHRvdGFsX3Zh
cl8sIGluZGV4X3Zhcl8sIGZhbHNlKSk7CisgIEVYUEVDVF9GQUxTRShTaG91bGRTaGFyZCh0b3Rh
bF92YXJfLCBpbmRleF92YXJfLCB0cnVlKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgc2hhcmRpbmcg
aXMgZW5hYmxlZCBpZiB0b3RhbF9zaGFyZHMgPiAxIGFuZAorLy8gd2UgYXJlIG5vdCBpbiBhIGRl
YXRoIHRlc3Qgc3VicHJvY2Vzcy4KKy8vIEVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUgbm90IHN1
cHBvcnRlZCBvbiBXaW5kb3dzIENFLgorI2lmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorVEVT
VF9GKFNob3VsZFNoYXJkVGVzdCwgV29ya3NXaGVuU2hhcmRFbnZWYXJzQXJlVmFsaWQpIHsKKyAg
U2V0RW52KGluZGV4X3Zhcl8sICI0Iik7CisgIFNldEVudih0b3RhbF92YXJfLCAiMjIiKTsKKyAg
RVhQRUNUX1RSVUUoU2hvdWxkU2hhcmQodG90YWxfdmFyXywgaW5kZXhfdmFyXywgZmFsc2UpKTsK
KyAgRVhQRUNUX0ZBTFNFKFNob3VsZFNoYXJkKHRvdGFsX3Zhcl8sIGluZGV4X3Zhcl8sIHRydWUp
KTsKKworICBTZXRFbnYoaW5kZXhfdmFyXywgIjgiKTsKKyAgU2V0RW52KHRvdGFsX3Zhcl8sICI5
Iik7CisgIEVYUEVDVF9UUlVFKFNob3VsZFNoYXJkKHRvdGFsX3Zhcl8sIGluZGV4X3Zhcl8sIGZh
bHNlKSk7CisgIEVYUEVDVF9GQUxTRShTaG91bGRTaGFyZCh0b3RhbF92YXJfLCBpbmRleF92YXJf
LCB0cnVlKSk7CisKKyAgU2V0RW52KGluZGV4X3Zhcl8sICIwIik7CisgIFNldEVudih0b3RhbF92
YXJfLCAiOSIpOworICBFWFBFQ1RfVFJVRShTaG91bGRTaGFyZCh0b3RhbF92YXJfLCBpbmRleF92
YXJfLCBmYWxzZSkpOworICBFWFBFQ1RfRkFMU0UoU2hvdWxkU2hhcmQodG90YWxfdmFyXywgaW5k
ZXhfdmFyXywgdHJ1ZSkpOworfQorI2VuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUK
KworLy8gVGVzdHMgdGhhdCB3ZSBleGl0IGluIGVycm9yIGlmIHRoZSBzaGFyZGluZyB2YWx1ZXMg
YXJlIG5vdCB2YWxpZC4KKwordHlwZWRlZiBTaG91bGRTaGFyZFRlc3QgU2hvdWxkU2hhcmREZWF0
aFRlc3Q7CisKK1RFU1RfRihTaG91bGRTaGFyZERlYXRoVGVzdCwgQWJvcnRzV2hlblNoYXJkaW5n
RW52VmFyc0FyZUludmFsaWQpIHsKKyAgU2V0RW52KGluZGV4X3Zhcl8sICI0Iik7CisgIFNldEVu
dih0b3RhbF92YXJfLCAiNCIpOworICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKFNob3VsZFNo
YXJkKHRvdGFsX3Zhcl8sIGluZGV4X3Zhcl8sIGZhbHNlKSwgIi4qIik7CisKKyAgU2V0RW52KGlu
ZGV4X3Zhcl8sICI0Iik7CisgIFNldEVudih0b3RhbF92YXJfLCAiLTIiKTsKKyAgRVhQRUNUX0RF
QVRIX0lGX1NVUFBPUlRFRChTaG91bGRTaGFyZCh0b3RhbF92YXJfLCBpbmRleF92YXJfLCBmYWxz
ZSksICIuKiIpOworCisgIFNldEVudihpbmRleF92YXJfLCAiNSIpOworICBTZXRFbnYodG90YWxf
dmFyXywgIiIpOworICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKFNob3VsZFNoYXJkKHRvdGFs
X3Zhcl8sIGluZGV4X3Zhcl8sIGZhbHNlKSwgIi4qIik7CisKKyAgU2V0RW52KGluZGV4X3Zhcl8s
ICIiKTsKKyAgU2V0RW52KHRvdGFsX3Zhcl8sICI1Iik7CisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQ
T1JURUQoU2hvdWxkU2hhcmQodG90YWxfdmFyXywgaW5kZXhfdmFyXywgZmFsc2UpLCAiLioiKTsK
K30KKworLy8gVGVzdHMgdGhhdCBTaG91bGRSdW5UZXN0T25TaGFyZCBpcyBhIHBhcnRpdGlvbiB3
aGVuIDUKKy8vIHNoYXJkcyBhcmUgdXNlZC4KK1RFU1QoU2hvdWxkUnVuVGVzdE9uU2hhcmRUZXN0
LCBJc1BhcnRpdGlvbldoZW5UaGVyZUFyZUZpdmVTaGFyZHMpIHsKKyAgLy8gQ2hvb3NlIGFuIGFy
Yml0cmFyeSBudW1iZXIgb2YgdGVzdHMgYW5kIHNoYXJkcy4KKyAgY29uc3QgaW50IG51bV90ZXN0
cyA9IDE3OworICBjb25zdCBpbnQgbnVtX3NoYXJkcyA9IDU7CisKKyAgLy8gQ2hlY2sgcGFydGl0
aW9uaW5nOiBlYWNoIHRlc3Qgc2hvdWxkIGJlIG9uIGV4YWN0bHkgMSBzaGFyZC4KKyAgZm9yIChp
bnQgdGVzdF9pZCA9IDA7IHRlc3RfaWQgPCBudW1fdGVzdHM7IHRlc3RfaWQrKykgeworICAgIGlu
dCBwcmV2X3NlbGVjdGVkX3NoYXJkX2luZGV4ID0gLTE7CisgICAgZm9yIChpbnQgc2hhcmRfaW5k
ZXggPSAwOyBzaGFyZF9pbmRleCA8IG51bV9zaGFyZHM7IHNoYXJkX2luZGV4KyspIHsKKyAgICAg
IGlmIChTaG91bGRSdW5UZXN0T25TaGFyZChudW1fc2hhcmRzLCBzaGFyZF9pbmRleCwgdGVzdF9p
ZCkpIHsKKyAgICAgICAgaWYgKHByZXZfc2VsZWN0ZWRfc2hhcmRfaW5kZXggPCAwKSB7CisgICAg
ICAgICAgcHJldl9zZWxlY3RlZF9zaGFyZF9pbmRleCA9IHNoYXJkX2luZGV4OworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgIEFERF9GQUlMVVJFKCkgPDwgIlNoYXJkICIgPDwgcHJldl9zZWxl
Y3RlZF9zaGFyZF9pbmRleCA8PCAiIGFuZCAiCisgICAgICAgICAgICA8PCBzaGFyZF9pbmRleCA8
PCAiIGFyZSBib3RoIHNlbGVjdGVkIHRvIHJ1biB0ZXN0ICIgPDwgdGVzdF9pZDsKKyAgICAgICAg
fQorICAgICAgfQorICAgIH0KKyAgfQorCisgIC8vIENoZWNrIGJhbGFuY2U6IFRoaXMgaXMgbm90
IHJlcXVpcmVkIGJ5IHRoZSBzaGFyZGluZyBwcm90b2NvbCwgYnV0IGlzIGEKKyAgLy8gZGVzaXJh
YmxlIHByb3BlcnR5IGZvciBwZXJmb3JtYW5jZS4KKyAgZm9yIChpbnQgc2hhcmRfaW5kZXggPSAw
OyBzaGFyZF9pbmRleCA8IG51bV9zaGFyZHM7IHNoYXJkX2luZGV4KyspIHsKKyAgICBpbnQgbnVt
X3Rlc3RzX29uX3NoYXJkID0gMDsKKyAgICBmb3IgKGludCB0ZXN0X2lkID0gMDsgdGVzdF9pZCA8
IG51bV90ZXN0czsgdGVzdF9pZCsrKSB7CisgICAgICBudW1fdGVzdHNfb25fc2hhcmQgKz0KKyAg
ICAgICAgU2hvdWxkUnVuVGVzdE9uU2hhcmQobnVtX3NoYXJkcywgc2hhcmRfaW5kZXgsIHRlc3Rf
aWQpOworICAgIH0KKyAgICBFWFBFQ1RfR0UobnVtX3Rlc3RzX29uX3NoYXJkLCBudW1fdGVzdHMg
LyBudW1fc2hhcmRzKTsKKyAgfQorfQorCisvLyBGb3IgdGhlIHNhbWUgcmVhc29uIHdlIGFyZSBu
b3QgZXhwbGljaXRseSB0ZXN0aW5nIGV2ZXJ5dGhpbmcgaW4gdGhlCisvLyBUZXN0IGNsYXNzLCB0
aGVyZSBhcmUgbm8gc2VwYXJhdGUgdGVzdHMgZm9yIHRoZSBmb2xsb3dpbmcgY2xhc3NlcworLy8g
KGV4Y2VwdCBmb3Igc29tZSB0cml2aWFsIGNhc2VzKToKKy8vCisvLyAgIFRlc3RDYXNlLCBVbml0
VGVzdCwgVW5pdFRlc3RSZXN1bHRQcmludGVyLgorLy8KKy8vIFNpbWlsYXJseSwgdGhlcmUgYXJl
IG5vIHNlcGFyYXRlIHRlc3RzIGZvciB0aGUgZm9sbG93aW5nIG1hY3JvczoKKy8vCisvLyAgIFRF
U1QsIFRFU1RfRiwgUlVOX0FMTF9URVNUUworCitURVNUKFVuaXRUZXN0VGVzdCwgQ2FuR2V0T3Jp
Z2luYWxXb3JraW5nRGlyKSB7CisgIEFTU0VSVF9UUlVFKFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgp
LT5vcmlnaW5hbF93b3JraW5nX2RpcigpICE9IE5VTEwpOworICBFWFBFQ1RfU1RSTkUoVW5pdFRl
c3Q6OkdldEluc3RhbmNlKCktPm9yaWdpbmFsX3dvcmtpbmdfZGlyKCksICIiKTsKK30KKworVEVT
VChVbml0VGVzdFRlc3QsIFJldHVybnNQbGF1c2libGVUaW1lc3RhbXApIHsKKyAgRVhQRUNUX0xU
KDAsIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5zdGFydF90aW1lc3RhbXAoKSk7CisgIEVYUEVD
VF9MRShVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+c3RhcnRfdGltZXN0YW1wKCksIEdldFRpbWVJ
bk1pbGxpcygpKTsKK30KKworLy8gV2hlbiBhIHByb3BlcnR5IHVzaW5nIGEgcmVzZXJ2ZWQga2V5
IGlzIHN1cHBsaWVkIHRvIHRoaXMgZnVuY3Rpb24sIGl0CisvLyB0ZXN0cyB0aGF0IGEgbm9uLWZh
dGFsIGZhaWx1cmUgaXMgYWRkZWQsIGEgZmF0YWwgZmFpbHVyZSBpcyBub3QgYWRkZWQsCisvLyBh
bmQgdGhhdCB0aGUgcHJvcGVydHkgaXMgbm90IHJlY29yZGVkLgordm9pZCBFeHBlY3ROb25GYXRh
bEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleSgKKyAgICBjb25zdCBUZXN0
UmVzdWx0JiB0ZXN0X3Jlc3VsdCwgY29uc3QgY2hhcioga2V5KSB7CisgIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKFRlc3Q6OlJlY29yZFByb3BlcnR5KGtleSwgIjEiKSwgIlJlc2VydmVkIGtleSIp
OworICBBU1NFUlRfRVEoMCwgdGVzdF9yZXN1bHQudGVzdF9wcm9wZXJ0eV9jb3VudCgpKSA8PCAi
UHJvcGVydHkgZm9yIGtleSAnIiA8PCBrZXkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPDwgIicgcmVjb3JkZWQgdW5leHBlY3RlZGx5LiI7Cit9CisK
K3ZvaWQgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRL
ZXlGb3JDdXJyZW50VGVzdCgKKyAgICBjb25zdCBjaGFyKiBrZXkpIHsKKyAgY29uc3QgVGVzdElu
Zm8qIHRlc3RfaW5mbyA9IFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rlc3RfaW5m
bygpOworICBBU1NFUlRfVFJVRSh0ZXN0X2luZm8gIT0gTlVMTCk7CisgIEV4cGVjdE5vbkZhdGFs
RmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5KCp0ZXN0X2luZm8tPnJlc3Vs
dCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBrZXkpOworfQorCit2b2lkIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3Bl
cnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3RDYXNlKAorICAgIGNvbnN0IGNoYXIqIGtl
eSkgeworICBjb25zdCBUZXN0Q2FzZSogdGVzdF9jYXNlID0gVW5pdFRlc3Q6OkdldEluc3RhbmNl
KCktPmN1cnJlbnRfdGVzdF9jYXNlKCk7CisgIEFTU0VSVF9UUlVFKHRlc3RfY2FzZSAhPSBOVUxM
KTsKKyAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRL
ZXkoCisgICAgICB0ZXN0X2Nhc2UtPmFkX2hvY190ZXN0X3Jlc3VsdCgpLCBrZXkpOworfQorCit2
b2lkIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5
T3V0c2lkZU9mVGVzdENhc2UoCisgICAgY29uc3QgY2hhcioga2V5KSB7CisgIEV4cGVjdE5vbkZh
dGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5KAorICAgICAgVW5pdFRl
c3Q6OkdldEluc3RhbmNlKCktPmFkX2hvY190ZXN0X3Jlc3VsdCgpLCBrZXkpOworfQorCisvLyBU
ZXN0cyB0aGF0IHByb3BlcnR5IHJlY29yZGluZyBmdW5jdGlvbnMgaW4gVW5pdFRlc3Qgb3V0c2lk
ZSBvZiB0ZXN0cworLy8gZnVuY3Rpb25zIGNvcnJlY2x5LiAgQ3JlYXRpbmcgYSBzZXBhcmF0ZSBp
bnN0YW5jZSBvZiBVbml0VGVzdCBlbnN1cmVzIGl0CisvLyBpcyBpbiBhIHN0YXRlIHNpbWlsYXIg
dG8gdGhlIFVuaXRUZXN0J3Mgc2luZ2xldG9uJ3MgYmV0d2VlbiB0ZXN0cy4KK2NsYXNzIFVuaXRU
ZXN0UmVjb3JkUHJvcGVydHlUZXN0IDoKKyAgICBwdWJsaWMgdGVzdGluZzo6aW50ZXJuYWw6OlVu
aXRUZXN0UmVjb3JkUHJvcGVydHlUZXN0SGVscGVyIHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2b2lk
IFNldFVwVGVzdENhc2UoKSB7CisgICAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJv
cGVydHlXaXRoUmVzZXJ2ZWRLZXlGb3JDdXJyZW50VGVzdENhc2UoCisgICAgICAgICJkaXNhYmxl
ZCIpOworICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2Vy
dmVkS2V5Rm9yQ3VycmVudFRlc3RDYXNlKAorICAgICAgICAiZXJyb3JzIik7CisgICAgRXhwZWN0
Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlGb3JDdXJyZW50
VGVzdENhc2UoCisgICAgICAgICJmYWlsdXJlcyIpOworICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVy
ZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3RDYXNlKAorICAg
ICAgICAibmFtZSIpOworICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5
V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3RDYXNlKAorICAgICAgICAidGVzdHMiKTsKKyAg
ICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZv
ckN1cnJlbnRUZXN0Q2FzZSgKKyAgICAgICAgInRpbWUiKTsKKworICAgIFRlc3Q6OlJlY29yZFBy
b3BlcnR5KCJ0ZXN0X2Nhc2Vfa2V5XzEiLCAiMSIpOworICAgIGNvbnN0IFRlc3RDYXNlKiB0ZXN0
X2Nhc2UgPSBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2Nhc2UoKTsKKyAg
ICBBU1NFUlRfVFJVRSh0ZXN0X2Nhc2UgIT0gTlVMTCk7CisKKyAgICBBU1NFUlRfRVEoMSwgdGVz
dF9jYXNlLT5hZF9ob2NfdGVzdF9yZXN1bHQoKS50ZXN0X3Byb3BlcnR5X2NvdW50KCkpOworICAg
IEVYUEVDVF9TVFJFUSgidGVzdF9jYXNlX2tleV8xIiwKKyAgICAgICAgICAgICAgICAgdGVzdF9j
YXNlLT5hZF9ob2NfdGVzdF9yZXN1bHQoKS5HZXRUZXN0UHJvcGVydHkoMCkua2V5KCkpOworICAg
IEVYUEVDVF9TVFJFUSgiMSIsCisgICAgICAgICAgICAgICAgIHRlc3RfY2FzZS0+YWRfaG9jX3Rl
c3RfcmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5KDApLnZhbHVlKCkpOworICB9Cit9OworCisvLyBU
ZXN0cyBUZXN0UmVzdWx0IGhhcyB0aGUgZXhwZWN0ZWQgcHJvcGVydHkgd2hlbiBhZGRlZC4KK1RF
U1RfRihVbml0VGVzdFJlY29yZFByb3BlcnR5VGVzdCwgT25lUHJvcGVydHlGb3VuZFdoZW5BZGRl
ZCkgeworICBVbml0VGVzdFJlY29yZFByb3BlcnR5KCJrZXlfMSIsICIxIik7CisKKyAgQVNTRVJU
X0VRKDEsIHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCkudGVzdF9wcm9wZXJ0eV9jb3Vu
dCgpKTsKKworICBFWFBFQ1RfU1RSRVEoImtleV8xIiwKKyAgICAgICAgICAgICAgIHVuaXRfdGVz
dF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5KDApLmtleSgpKTsKKyAgRVhQ
RUNUX1NUUkVRKCIxIiwKKyAgICAgICAgICAgICAgIHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVz
dWx0KCkuR2V0VGVzdFByb3BlcnR5KDApLnZhbHVlKCkpOworfQorCisvLyBUZXN0cyBUZXN0UmVz
dWx0IGhhcyBtdWx0aXBsZSBwcm9wZXJ0aWVzIHdoZW4gYWRkZWQuCitURVNUX0YoVW5pdFRlc3RS
ZWNvcmRQcm9wZXJ0eVRlc3QsIE11bHRpcGxlUHJvcGVydGllc0ZvdW5kV2hlbkFkZGVkKSB7Cisg
IFVuaXRUZXN0UmVjb3JkUHJvcGVydHkoImtleV8xIiwgIjEiKTsKKyAgVW5pdFRlc3RSZWNvcmRQ
cm9wZXJ0eSgia2V5XzIiLCAiMiIpOworCisgIEFTU0VSVF9FUSgyLCB1bml0X3Rlc3RfLmFkX2hv
Y190ZXN0X3Jlc3VsdCgpLnRlc3RfcHJvcGVydHlfY291bnQoKSk7CisKKyAgRVhQRUNUX1NUUkVR
KCJrZXlfMSIsCisgICAgICAgICAgICAgICB1bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgp
LkdldFRlc3RQcm9wZXJ0eSgwKS5rZXkoKSk7CisgIEVYUEVDVF9TVFJFUSgiMSIsIHVuaXRfdGVz
dF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5KDApLnZhbHVlKCkpOworCisg
IEVYUEVDVF9TVFJFUSgia2V5XzIiLAorICAgICAgICAgICAgICAgdW5pdF90ZXN0Xy5hZF9ob2Nf
dGVzdF9yZXN1bHQoKS5HZXRUZXN0UHJvcGVydHkoMSkua2V5KCkpOworICBFWFBFQ1RfU1RSRVEo
IjIiLCB1bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgxKS52
YWx1ZSgpKTsKK30KKworLy8gVGVzdHMgVGVzdFJlc3VsdDo6UmVjb3JkUHJvcGVydHkoKSBvdmVy
cmlkZXMgdmFsdWVzIGZvciBkdXBsaWNhdGUga2V5cy4KK1RFU1RfRihVbml0VGVzdFJlY29yZFBy
b3BlcnR5VGVzdCwgT3ZlcnJpZGVzVmFsdWVzRm9yRHVwbGljYXRlS2V5cykgeworICBVbml0VGVz
dFJlY29yZFByb3BlcnR5KCJrZXlfMSIsICIxIik7CisgIFVuaXRUZXN0UmVjb3JkUHJvcGVydHko
ImtleV8yIiwgIjIiKTsKKyAgVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eSgia2V5XzEiLCAiMTIiKTsK
KyAgVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eSgia2V5XzIiLCAiMjIiKTsKKworICBBU1NFUlRfRVEo
MiwgdW5pdF90ZXN0Xy5hZF9ob2NfdGVzdF9yZXN1bHQoKS50ZXN0X3Byb3BlcnR5X2NvdW50KCkp
OworCisgIEVYUEVDVF9TVFJFUSgia2V5XzEiLAorICAgICAgICAgICAgICAgdW5pdF90ZXN0Xy5h
ZF9ob2NfdGVzdF9yZXN1bHQoKS5HZXRUZXN0UHJvcGVydHkoMCkua2V5KCkpOworICBFWFBFQ1Rf
U1RSRVEoIjEyIiwKKyAgICAgICAgICAgICAgIHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVzdWx0
KCkuR2V0VGVzdFByb3BlcnR5KDApLnZhbHVlKCkpOworCisgIEVYUEVDVF9TVFJFUSgia2V5XzIi
LAorICAgICAgICAgICAgICAgdW5pdF90ZXN0Xy5hZF9ob2NfdGVzdF9yZXN1bHQoKS5HZXRUZXN0
UHJvcGVydHkoMSkua2V5KCkpOworICBFWFBFQ1RfU1RSRVEoIjIyIiwKKyAgICAgICAgICAgICAg
IHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5KDEpLnZhbHVl
KCkpOworfQorCitURVNUX0YoVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eVRlc3QsCisgICAgICAgQWRk
RmFpbHVyZUluc2lkZVRlc3RzV2hlblVzaW5nVGVzdENhc2VSZXNlcnZlZEtleXMpIHsKKyAgRXhw
ZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlGb3JDdXJy
ZW50VGVzdCgKKyAgICAgICJuYW1lIik7CisgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGlu
Z1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3QoCisgICAgICAidmFsdWVfcGFy
YW0iKTsKKyAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2
ZWRLZXlGb3JDdXJyZW50VGVzdCgKKyAgICAgICJ0eXBlX3BhcmFtIik7CisgIEV4cGVjdE5vbkZh
dGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3Qo
CisgICAgICAic3RhdHVzIik7CisgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3Bl
cnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3QoCisgICAgICAidGltZSIpOworICBFeHBl
Y3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJl
bnRUZXN0KAorICAgICAgImNsYXNzbmFtZSIpOworfQorCitURVNUX0YoVW5pdFRlc3RSZWNvcmRQ
cm9wZXJ0eVRlc3QsCisgICAgICAgQWRkUmVjb3JkV2l0aFJlc2VydmVkS2V5c0dlbmVyYXRlc0Nv
cnJlY3RQcm9wZXJ0eUxpc3QpIHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoCisgICAgICBU
ZXN0OjpSZWNvcmRQcm9wZXJ0eSgibmFtZSIsICIxIiksCisgICAgICAiJ2NsYXNzbmFtZScsICdu
YW1lJywgJ3N0YXR1cycsICd0aW1lJywgJ3R5cGVfcGFyYW0nLCBhbmQgJ3ZhbHVlX3BhcmFtJyIK
KyAgICAgICIgYXJlIHJlc2VydmVkIik7Cit9CisKK2NsYXNzIFVuaXRUZXN0UmVjb3JkUHJvcGVy
dHlUZXN0RW52aXJvbm1lbnQgOiBwdWJsaWMgRW52aXJvbm1lbnQgeworIHB1YmxpYzoKKyAgdmly
dHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGlu
Z1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5T3V0c2lkZU9mVGVzdENhc2UoCisgICAgICAgICJ0ZXN0
cyIpOworICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2Vy
dmVkS2V5T3V0c2lkZU9mVGVzdENhc2UoCisgICAgICAgICJmYWlsdXJlcyIpOworICAgIEV4cGVj
dE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5T3V0c2lkZU9m
VGVzdENhc2UoCisgICAgICAgICJkaXNhYmxlZCIpOworICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVy
ZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5T3V0c2lkZU9mVGVzdENhc2UoCisgICAg
ICAgICJlcnJvcnMiKTsKKyAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0
eVdpdGhSZXNlcnZlZEtleU91dHNpZGVPZlRlc3RDYXNlKAorICAgICAgICAibmFtZSIpOworICAg
IEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5T3V0
c2lkZU9mVGVzdENhc2UoCisgICAgICAgICJ0aW1lc3RhbXAiKTsKKyAgICBFeHBlY3ROb25GYXRh
bEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleU91dHNpZGVPZlRlc3RDYXNl
KAorICAgICAgICAidGltZSIpOworICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1By
b3BlcnR5V2l0aFJlc2VydmVkS2V5T3V0c2lkZU9mVGVzdENhc2UoCisgICAgICAgICJyYW5kb21f
c2VlZCIpOworICB9Cit9OworCisvLyBUaGlzIHdpbGwgdGVzdCBwcm9wZXJ0eSByZWNvcmRpbmcg
b3V0c2lkZSBvZiBhbnkgdGVzdCBvciB0ZXN0IGNhc2UuCitzdGF0aWMgRW52aXJvbm1lbnQqIHJl
Y29yZF9wcm9wZXJ0eV9lbnYgPQorICAgIEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChuZXcgVW5p
dFRlc3RSZWNvcmRQcm9wZXJ0eVRlc3RFbnZpcm9ubWVudCk7CisKKy8vIFRoaXMgZ3JvdXAgb2Yg
dGVzdHMgaXMgZm9yIHByZWRpY2F0ZSBhc3NlcnRpb25zIChBU1NFUlRfUFJFRCosIGV0YykKKy8v
IG9mIHZhcmlvdXMgYXJpdGllcy4gIFRoZXkgZG8gbm90IGF0dGVtcHQgdG8gYmUgZXhoYXVzdGl2
ZS4gIFJhdGhlciwKKy8vIHZpZXcgdGhlbSBhcyBzbW9rZSB0ZXN0cyB0aGF0IGNhbiBiZSBlYXNp
bHkgcmV2aWV3ZWQgYW5kIHZlcmlmaWVkLgorLy8gQSBtb3JlIGNvbXBsZXRlIHNldCBvZiB0ZXN0
cyBmb3IgcHJlZGljYXRlIGFzc2VydGlvbnMgY2FuIGJlIGZvdW5kCisvLyBpbiBndGVzdF9wcmVk
X2ltcGxfdW5pdHRlc3QuY2MuCisKKy8vIEZpcnN0LCBzb21lIHByZWRpY2F0ZXMgYW5kIHByZWRp
Y2F0ZS1mb3JtYXR0ZXJzIG5lZWRlZCBieSB0aGUgdGVzdHMuCisKKy8vIFJldHVybnMgdHJ1ZSBp
ZmYgdGhlIGFyZ3VtZW50IGlzIGFuIGV2ZW4gbnVtYmVyLgorYm9vbCBJc0V2ZW4oaW50IG4pIHsK
KyAgcmV0dXJuIChuICUgMikgPT0gMDsKK30KKworLy8gQSBmdW5jdG9yIHRoYXQgcmV0dXJucyB0
cnVlIGlmZiB0aGUgYXJndW1lbnQgaXMgYW4gZXZlbiBudW1iZXIuCitzdHJ1Y3QgSXNFdmVuRnVu
Y3RvciB7CisgIGJvb2wgb3BlcmF0b3IoKShpbnQgbikgeyByZXR1cm4gSXNFdmVuKG4pOyB9Cit9
OworCisvLyBBIHByZWRpY2F0ZS1mb3JtYXR0ZXIgZnVuY3Rpb24gdGhhdCBhc3NlcnRzIHRoZSBh
cmd1bWVudCBpcyBhbiBldmVuCisvLyBudW1iZXIuCitBc3NlcnRpb25SZXN1bHQgQXNzZXJ0SXNF
dmVuKGNvbnN0IGNoYXIqIGV4cHIsIGludCBuKSB7CisgIGlmIChJc0V2ZW4obikpIHsKKyAgICBy
ZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOworICB9CisKKyAgTWVzc2FnZSBtc2c7CisgIG1zZyA8
PCBleHByIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgbiA8PCAiLCB3aGljaCBpcyBub3QgZXZlbi4i
OworICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOworfQorCisvLyBBIHByZWRpY2F0ZSBm
dW5jdGlvbiB0aGF0IHJldHVybnMgQXNzZXJ0aW9uUmVzdWx0IGZvciB1c2UgaW4KKy8vIEVYUEVD
VC9BU1NFUlRfVFJVRS9GQUxTRS4KK0Fzc2VydGlvblJlc3VsdCBSZXN1bHRJc0V2ZW4oaW50IG4p
IHsKKyAgaWYgKElzRXZlbihuKSkKKyAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpIDw8IG4g
PDwgIiBpcyBldmVuIjsKKyAgZWxzZQorICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwg
biA8PCAiIGlzIG9kZCI7Cit9CisKKy8vIEEgcHJlZGljYXRlIGZ1bmN0aW9uIHRoYXQgcmV0dXJu
cyBBc3NlcnRpb25SZXN1bHQgYnV0IGdpdmVzIG5vCisvLyBleHBsYW5hdGlvbiB3aHkgaXQgc3Vj
Y2VlZHMuIE5lZWRlZCBmb3IgdGVzdGluZyB0aGF0CisvLyBFWFBFQ1QvQVNTRVJUX0ZBTFNFIGhh
bmRsZXMgc3VjaCBmdW5jdGlvbnMgY29ycmVjdGx5LgorQXNzZXJ0aW9uUmVzdWx0IFJlc3VsdElz
RXZlbk5vRXhwbGFuYXRpb24oaW50IG4pIHsKKyAgaWYgKElzRXZlbihuKSkKKyAgICByZXR1cm4g
QXNzZXJ0aW9uU3VjY2VzcygpOworICBlbHNlCisgICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUo
KSA8PCBuIDw8ICIgaXMgb2RkIjsKK30KKworLy8gQSBwcmVkaWNhdGUtZm9ybWF0dGVyIGZ1bmN0
b3IgdGhhdCBhc3NlcnRzIHRoZSBhcmd1bWVudCBpcyBhbiBldmVuCisvLyBudW1iZXIuCitzdHJ1
Y3QgQXNzZXJ0SXNFdmVuRnVuY3RvciB7CisgIEFzc2VydGlvblJlc3VsdCBvcGVyYXRvcigpKGNv
bnN0IGNoYXIqIGV4cHIsIGludCBuKSB7CisgICAgcmV0dXJuIEFzc2VydElzRXZlbihleHByLCBu
KTsKKyAgfQorfTsKKworLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgc3VtIG9mIHRoZSBhcmd1bWVu
dHMgaXMgYW4gZXZlbiBudW1iZXIuCitib29sIFN1bUlzRXZlbjIoaW50IG4xLCBpbnQgbjIpIHsK
KyAgcmV0dXJuIElzRXZlbihuMSArIG4yKTsKK30KKworLy8gQSBmdW5jdG9yIHRoYXQgcmV0dXJu
cyB0cnVlIGlmZiB0aGUgc3VtIG9mIHRoZSBhcmd1bWVudHMgaXMgYW4gZXZlbgorLy8gbnVtYmVy
Lgorc3RydWN0IFN1bUlzRXZlbjNGdW5jdG9yIHsKKyAgYm9vbCBvcGVyYXRvcigpKGludCBuMSwg
aW50IG4yLCBpbnQgbjMpIHsKKyAgICByZXR1cm4gSXNFdmVuKG4xICsgbjIgKyBuMyk7CisgIH0K
K307CisKKy8vIEEgcHJlZGljYXRlLWZvcm1hdHRlciBmdW5jdGlvbiB0aGF0IGFzc2VydHMgdGhl
IHN1bSBvZiB0aGUKKy8vIGFyZ3VtZW50cyBpcyBhbiBldmVuIG51bWJlci4KK0Fzc2VydGlvblJl
c3VsdCBBc3NlcnRTdW1Jc0V2ZW40KAorICAgIGNvbnN0IGNoYXIqIGUxLCBjb25zdCBjaGFyKiBl
MiwgY29uc3QgY2hhciogZTMsIGNvbnN0IGNoYXIqIGU0LAorICAgIGludCBuMSwgaW50IG4yLCBp
bnQgbjMsIGludCBuNCkgeworICBjb25zdCBpbnQgc3VtID0gbjEgKyBuMiArIG4zICsgbjQ7Cisg
IGlmIChJc0V2ZW4oc3VtKSkgeworICAgIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CisgIH0K
KworICBNZXNzYWdlIG1zZzsKKyAgbXNnIDw8IGUxIDw8ICIgKyAiIDw8IGUyIDw8ICIgKyAiIDw8
IGUzIDw8ICIgKyAiIDw8IGU0CisgICAgICA8PCAiICgiIDw8IG4xIDw8ICIgKyAiIDw8IG4yIDw8
ICIgKyAiIDw8IG4zIDw8ICIgKyAiIDw8IG40CisgICAgICA8PCAiKSBldmFsdWF0ZXMgdG8gIiA8
PCBzdW0gPDwgIiwgd2hpY2ggaXMgbm90IGV2ZW4uIjsKKyAgcmV0dXJuIEFzc2VydGlvbkZhaWx1
cmUobXNnKTsKK30KKworLy8gQSBwcmVkaWNhdGUtZm9ybWF0dGVyIGZ1bmN0b3IgdGhhdCBhc3Nl
cnRzIHRoZSBzdW0gb2YgdGhlIGFyZ3VtZW50cworLy8gaXMgYW4gZXZlbiBudW1iZXIuCitzdHJ1
Y3QgQXNzZXJ0U3VtSXNFdmVuNUZ1bmN0b3IgeworICBBc3NlcnRpb25SZXN1bHQgb3BlcmF0b3Io
KSgKKyAgICAgIGNvbnN0IGNoYXIqIGUxLCBjb25zdCBjaGFyKiBlMiwgY29uc3QgY2hhciogZTMs
IGNvbnN0IGNoYXIqIGU0LAorICAgICAgY29uc3QgY2hhciogZTUsIGludCBuMSwgaW50IG4yLCBp
bnQgbjMsIGludCBuNCwgaW50IG41KSB7CisgICAgY29uc3QgaW50IHN1bSA9IG4xICsgbjIgKyBu
MyArIG40ICsgbjU7CisgICAgaWYgKElzRXZlbihzdW0pKSB7CisgICAgICByZXR1cm4gQXNzZXJ0
aW9uU3VjY2VzcygpOworICAgIH0KKworICAgIE1lc3NhZ2UgbXNnOworICAgIG1zZyA8PCBlMSA8
PCAiICsgIiA8PCBlMiA8PCAiICsgIiA8PCBlMyA8PCAiICsgIiA8PCBlNCA8PCAiICsgIiA8PCBl
NQorICAgICAgICA8PCAiICgiCisgICAgICAgIDw8IG4xIDw8ICIgKyAiIDw8IG4yIDw8ICIgKyAi
IDw8IG4zIDw8ICIgKyAiIDw8IG40IDw8ICIgKyAiIDw8IG41CisgICAgICAgIDw8ICIpIGV2YWx1
YXRlcyB0byAiIDw8IHN1bSA8PCAiLCB3aGljaCBpcyBub3QgZXZlbi4iOworICAgIHJldHVybiBB
c3NlcnRpb25GYWlsdXJlKG1zZyk7CisgIH0KK307CisKKworLy8gVGVzdHMgdW5hcnkgcHJlZGlj
YXRlIGFzc2VydGlvbnMuCisKKy8vIFRlc3RzIHVuYXJ5IHByZWRpY2F0ZSBhc3NlcnRpb25zIHRo
YXQgZG9uJ3QgdXNlIGEgY3VzdG9tIGZvcm1hdHRlci4KK1RFU1QoUHJlZDFUZXN0LCBXaXRob3V0
Rm9ybWF0KSB7CisgIC8vIFN1Y2Nlc3MgY2FzZXMuCisgIEVYUEVDVF9QUkVEMShJc0V2ZW5GdW5j
dG9yKCksIDIpIDw8ICJUaGlzIGZhaWx1cmUgaXMgVU5FWFBFQ1RFRCEiOworICBBU1NFUlRfUFJF
RDEoSXNFdmVuLCA0KTsKKworICAvLyBGYWlsdXJlIGNhc2VzLgorICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBFWFBFQ1RfUFJFRDEoSXNFdmVuLCA1KSA8PCAiVGhp
cyBmYWlsdXJlIGlzIGV4cGVjdGVkLiI7CisgIH0sICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQu
Iik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9QUkVEMShJc0V2ZW5GdW5jdG9yKCks
IDUpLAorICAgICAgICAgICAgICAgICAgICAgICAiZXZhbHVhdGVzIHRvIGZhbHNlIik7Cit9CisK
Ky8vIFRlc3RzIHVuYXJ5IHByZWRpY2F0ZSBhc3NlcnRpb25zIHRoYXQgdXNlIGEgY3VzdG9tIGZv
cm1hdHRlci4KK1RFU1QoUHJlZDFUZXN0LCBXaXRoRm9ybWF0KSB7CisgIC8vIFN1Y2Nlc3MgY2Fz
ZXMuCisgIEVYUEVDVF9QUkVEX0ZPUk1BVDEoQXNzZXJ0SXNFdmVuLCAyKTsKKyAgQVNTRVJUX1BS
RURfRk9STUFUMShBc3NlcnRJc0V2ZW5GdW5jdG9yKCksIDQpCisgICAgPDwgIlRoaXMgZmFpbHVy
ZSBpcyBVTkVYUEVDVEVEISI7CisKKyAgLy8gRmFpbHVyZSBjYXNlcy4KKyAgY29uc3QgaW50IG4g
PSA1OworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfUFJFRF9GT1JNQVQxKEFzc2Vy
dElzRXZlbkZ1bmN0b3IoKSwgbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICJuIGV2YWx1
YXRlcyB0byA1LCB3aGljaCBpcyBub3QgZXZlbi4iKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUo
eyAgLy8gTk9MSU5UCisgICAgQVNTRVJUX1BSRURfRk9STUFUMShBc3NlcnRJc0V2ZW4sIDUpIDw8
ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQuIjsKKyAgfSwgIlRoaXMgZmFpbHVyZSBpcyBleHBl
Y3RlZC4iKTsKK30KKworLy8gVGVzdHMgdGhhdCB1bmFyeSBwcmVkaWNhdGUgYXNzZXJ0aW9ucyBl
dmFsdWF0ZXMgdGhlaXIgYXJndW1lbnRzCisvLyBleGFjdGx5IG9uY2UuCitURVNUKFByZWQxVGVz
dCwgU2luZ2xlRXZhbHVhdGlvbk9uRmFpbHVyZSkgeworICAvLyBBIHN1Y2Nlc3MgY2FzZS4KKyAg
c3RhdGljIGludCBuID0gMDsKKyAgRVhQRUNUX1BSRUQxKElzRXZlbiwgbisrKTsKKyAgRVhQRUNU
X0VRKDEsIG4pIDw8ICJUaGUgYXJndW1lbnQgaXMgbm90IGV2YWx1YXRlZCBleGFjdGx5IG9uY2Uu
IjsKKworICAvLyBBIGZhaWx1cmUgY2FzZS4KKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8g
Tk9MSU5UCisgICAgQVNTRVJUX1BSRURfRk9STUFUMShBc3NlcnRJc0V2ZW5GdW5jdG9yKCksIG4r
KykKKyAgICAgICAgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZC4iOworICB9LCAiVGhpcyBm
YWlsdXJlIGlzIGV4cGVjdGVkLiIpOworICBFWFBFQ1RfRVEoMiwgbikgPDwgIlRoZSBhcmd1bWVu
dCBpcyBub3QgZXZhbHVhdGVkIGV4YWN0bHkgb25jZS4iOworfQorCisKKy8vIFRlc3RzIHByZWRp
Y2F0ZSBhc3NlcnRpb25zIHdob3NlIGFyaXR5IGlzID49IDIuCisKKy8vIFRlc3RzIHByZWRpY2F0
ZSBhc3NlcnRpb25zIHRoYXQgZG9uJ3QgdXNlIGEgY3VzdG9tIGZvcm1hdHRlci4KK1RFU1QoUHJl
ZFRlc3QsIFdpdGhvdXRGb3JtYXQpIHsKKyAgLy8gU3VjY2VzcyBjYXNlcy4KKyAgQVNTRVJUX1BS
RUQyKFN1bUlzRXZlbjIsIDIsIDQpIDw8ICJUaGlzIGZhaWx1cmUgaXMgVU5FWFBFQ1RFRCEiOwor
ICBFWFBFQ1RfUFJFRDMoU3VtSXNFdmVuM0Z1bmN0b3IoKSwgNCwgNiwgOCk7CisKKyAgLy8gRmFp
bHVyZSBjYXNlcy4KKyAgY29uc3QgaW50IG4xID0gMTsKKyAgY29uc3QgaW50IG4yID0gMjsKKyAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAgRVhQRUNUX1BSRUQyKFN1
bUlzRXZlbjIsIG4xLCBuMikgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZC4iOworICB9LCAi
VGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLiIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAv
LyBOT0xJTlQKKyAgICBBU1NFUlRfUFJFRDMoU3VtSXNFdmVuM0Z1bmN0b3IoKSwgMSwgMiwgNCk7
CisgIH0sICJldmFsdWF0ZXMgdG8gZmFsc2UiKTsKK30KKworLy8gVGVzdHMgcHJlZGljYXRlIGFz
c2VydGlvbnMgdGhhdCB1c2UgYSBjdXN0b20gZm9ybWF0dGVyLgorVEVTVChQcmVkVGVzdCwgV2l0
aEZvcm1hdCkgeworICAvLyBTdWNjZXNzIGNhc2VzLgorICBBU1NFUlRfUFJFRF9GT1JNQVQ0KEFz
c2VydFN1bUlzRXZlbjQsIDQsIDYsIDgsIDEwKSA8PAorICAgICJUaGlzIGZhaWx1cmUgaXMgVU5F
WFBFQ1RFRCEiOworICBFWFBFQ1RfUFJFRF9GT1JNQVQ1KEFzc2VydFN1bUlzRXZlbjVGdW5jdG9y
KCksIDIsIDQsIDYsIDgsIDEwKTsKKworICAvLyBGYWlsdXJlIGNhc2VzLgorICBjb25zdCBpbnQg
bjEgPSAxOworICBjb25zdCBpbnQgbjIgPSAyOworICBjb25zdCBpbnQgbjMgPSA0OworICBjb25z
dCBpbnQgbjQgPSA2OworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAg
ICBFWFBFQ1RfUFJFRF9GT1JNQVQ0KEFzc2VydFN1bUlzRXZlbjQsIG4xLCBuMiwgbjMsIG40KTsK
KyAgfSwgImV2YWx1YXRlcyB0byAxMywgd2hpY2ggaXMgbm90IGV2ZW4uIik7CisgIEVYUEVDVF9G
QVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEFTU0VSVF9QUkVEX0ZPUk1BVDUoQXNzZXJ0
U3VtSXNFdmVuNUZ1bmN0b3IoKSwgMSwgMiwgNCwgNiwgOCkKKyAgICAgICAgPDwgIlRoaXMgZmFp
bHVyZSBpcyBleHBlY3RlZC4iOworICB9LCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLiIpOwor
fQorCisvLyBUZXN0cyB0aGF0IHByZWRpY2F0ZSBhc3NlcnRpb25zIGV2YWx1YXRlcyB0aGVpciBh
cmd1bWVudHMKKy8vIGV4YWN0bHkgb25jZS4KK1RFU1QoUHJlZFRlc3QsIFNpbmdsZUV2YWx1YXRp
b25PbkZhaWx1cmUpIHsKKyAgLy8gQSBzdWNjZXNzIGNhc2UuCisgIGludCBuMSA9IDA7CisgIGlu
dCBuMiA9IDA7CisgIEVYUEVDVF9QUkVEMihTdW1Jc0V2ZW4yLCBuMSsrLCBuMisrKTsKKyAgRVhQ
RUNUX0VRKDEsIG4xKSA8PCAiQXJndW1lbnQgMSBpcyBub3QgZXZhbHVhdGVkIGV4YWN0bHkgb25j
ZS4iOworICBFWFBFQ1RfRVEoMSwgbjIpIDw8ICJBcmd1bWVudCAyIGlzIG5vdCBldmFsdWF0ZWQg
ZXhhY3RseSBvbmNlLiI7CisKKyAgLy8gQW5vdGhlciBzdWNjZXNzIGNhc2UuCisgIG4xID0gbjIg
PSAwOworICBpbnQgbjMgPSAwOworICBpbnQgbjQgPSAwOworICBpbnQgbjUgPSAwOworICBBU1NF
UlRfUFJFRF9GT1JNQVQ1KEFzc2VydFN1bUlzRXZlbjVGdW5jdG9yKCksCisgICAgICAgICAgICAg
ICAgICAgICAgbjErKywgbjIrKywgbjMrKywgbjQrKywgbjUrKykKKyAgICAgICAgICAgICAgICAg
ICAgICAgIDw8ICJUaGlzIGZhaWx1cmUgaXMgVU5FWFBFQ1RFRCEiOworICBFWFBFQ1RfRVEoMSwg
bjEpIDw8ICJBcmd1bWVudCAxIGlzIG5vdCBldmFsdWF0ZWQgZXhhY3RseSBvbmNlLiI7CisgIEVY
UEVDVF9FUSgxLCBuMikgPDwgIkFyZ3VtZW50IDIgaXMgbm90IGV2YWx1YXRlZCBleGFjdGx5IG9u
Y2UuIjsKKyAgRVhQRUNUX0VRKDEsIG4zKSA8PCAiQXJndW1lbnQgMyBpcyBub3QgZXZhbHVhdGVk
IGV4YWN0bHkgb25jZS4iOworICBFWFBFQ1RfRVEoMSwgbjQpIDw8ICJBcmd1bWVudCA0IGlzIG5v
dCBldmFsdWF0ZWQgZXhhY3RseSBvbmNlLiI7CisgIEVYUEVDVF9FUSgxLCBuNSkgPDwgIkFyZ3Vt
ZW50IDUgaXMgbm90IGV2YWx1YXRlZCBleGFjdGx5IG9uY2UuIjsKKworICAvLyBBIGZhaWx1cmUg
Y2FzZS4KKyAgbjEgPSBuMiA9IG4zID0gMDsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAg
Ly8gTk9MSU5UCisgICAgRVhQRUNUX1BSRUQzKFN1bUlzRXZlbjNGdW5jdG9yKCksICsrbjEsIG4y
KyssIG4zKyspCisgICAgICAgIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQuIjsKKyAgfSwg
IlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZC4iKTsKKyAgRVhQRUNUX0VRKDEsIG4xKSA8PCAiQXJn
dW1lbnQgMSBpcyBub3QgZXZhbHVhdGVkIGV4YWN0bHkgb25jZS4iOworICBFWFBFQ1RfRVEoMSwg
bjIpIDw8ICJBcmd1bWVudCAyIGlzIG5vdCBldmFsdWF0ZWQgZXhhY3RseSBvbmNlLiI7CisgIEVY
UEVDVF9FUSgxLCBuMykgPDwgIkFyZ3VtZW50IDMgaXMgbm90IGV2YWx1YXRlZCBleGFjdGx5IG9u
Y2UuIjsKKworICAvLyBBbm90aGVyIGZhaWx1cmUgY2FzZS4KKyAgbjEgPSBuMiA9IG4zID0gbjQg
PSAwOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBFWFBFQ1Rf
UFJFRF9GT1JNQVQ0KEFzc2VydFN1bUlzRXZlbjQsICsrbjEsIG4yKyssIG4zKyssIG40KyspOwor
ICB9LCAiZXZhbHVhdGVzIHRvIDEsIHdoaWNoIGlzIG5vdCBldmVuLiIpOworICBFWFBFQ1RfRVEo
MSwgbjEpIDw8ICJBcmd1bWVudCAxIGlzIG5vdCBldmFsdWF0ZWQgZXhhY3RseSBvbmNlLiI7Cisg
IEVYUEVDVF9FUSgxLCBuMikgPDwgIkFyZ3VtZW50IDIgaXMgbm90IGV2YWx1YXRlZCBleGFjdGx5
IG9uY2UuIjsKKyAgRVhQRUNUX0VRKDEsIG4zKSA8PCAiQXJndW1lbnQgMyBpcyBub3QgZXZhbHVh
dGVkIGV4YWN0bHkgb25jZS4iOworICBFWFBFQ1RfRVEoMSwgbjQpIDw8ICJBcmd1bWVudCA0IGlz
IG5vdCBldmFsdWF0ZWQgZXhhY3RseSBvbmNlLiI7Cit9CisKKworLy8gU29tZSBoZWxwZXIgZnVu
Y3Rpb25zIGZvciB0ZXN0aW5nIHVzaW5nIG92ZXJsb2FkZWQvdGVtcGxhdGUKKy8vIGZ1bmN0aW9u
cyB3aXRoIEFTU0VSVF9QUkVEbiBhbmQgRVhQRUNUX1BSRURuLgorCitib29sIElzUG9zaXRpdmUo
ZG91YmxlIHgpIHsKKyAgcmV0dXJuIHggPiAwOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K2Jvb2wgSXNOZWdhdGl2ZShUIHgpIHsKKyAgcmV0dXJuIHggPCAwOworfQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgorYm9vbCBHcmVhdGVyVGhhbihUMSB4MSwgVDIgeDIp
IHsKKyAgcmV0dXJuIHgxID4geDI7Cit9CisKKy8vIFRlc3RzIHRoYXQgb3ZlcmxvYWRlZCBmdW5j
dGlvbnMgY2FuIGJlIHVzZWQgaW4gKl9QUkVEKiBhcyBsb25nIGFzCisvLyB0aGVpciB0eXBlcyBh
cmUgZXhwbGljaXRseSBzcGVjaWZpZWQuCitURVNUKFByZWRpY2F0ZUFzc2VydGlvblRlc3QsIEFj
Y2VwdHNPdmVybG9hZGVkRnVuY3Rpb24pIHsKKyAgLy8gQysrQnVpbGRlciByZXF1aXJlcyBDLXN0
eWxlIGNhc3RzIHJhdGhlciB0aGFuIHN0YXRpY19jYXN0LgorICBFWFBFQ1RfUFJFRDEoKGJvb2wg
KCopKGludCkpKElzUG9zaXRpdmUpLCA1KTsgIC8vIE5PTElOVAorICBBU1NFUlRfUFJFRDEoKGJv
b2wgKCopKGRvdWJsZSkpKElzUG9zaXRpdmUpLCA2LjApOyAgLy8gTk9MSU5UCit9CisKKy8vIFRl
c3RzIHRoYXQgdGVtcGxhdGUgZnVuY3Rpb25zIGNhbiBiZSB1c2VkIGluICpfUFJFRCogYXMgbG9u
ZyBhcworLy8gdGhlaXIgdHlwZXMgYXJlIGV4cGxpY2l0bHkgc3BlY2lmaWVkLgorVEVTVChQcmVk
aWNhdGVBc3NlcnRpb25UZXN0LCBBY2NlcHRzVGVtcGxhdGVGdW5jdGlvbikgeworICBFWFBFQ1Rf
UFJFRDEoSXNOZWdhdGl2ZTxpbnQ+LCAtNSk7CisgIC8vIE1ha2VzIHN1cmUgdGhhdCB3ZSBjYW4g
aGFuZGxlIHRlbXBsYXRlcyB3aXRoIG1vcmUgdGhhbiBvbmUKKyAgLy8gcGFyYW1ldGVyLgorICBB
U1NFUlRfUFJFRDIoKEdyZWF0ZXJUaGFuPGludCwgaW50PiksIDUsIDApOworfQorCisKKy8vIFNv
bWUgaGVscGVyIGZ1bmN0aW9ucyBmb3IgdGVzdGluZyB1c2luZyBvdmVybG9hZGVkL3RlbXBsYXRl
CisvLyBmdW5jdGlvbnMgd2l0aCBBU1NFUlRfUFJFRF9GT1JNQVRuIGFuZCBFWFBFQ1RfUFJFRF9G
T1JNQVRuLgorCitBc3NlcnRpb25SZXN1bHQgSXNQb3NpdGl2ZUZvcm1hdChjb25zdCBjaGFyKiAv
KiBleHByICovLCBpbnQgbikgeworICByZXR1cm4gbiA+IDAgPyBBc3NlcnRpb25TdWNjZXNzKCkg
OgorICAgICAgQXNzZXJ0aW9uRmFpbHVyZShNZXNzYWdlKCkgPDwgIkZhaWx1cmUiKTsKK30KKwor
QXNzZXJ0aW9uUmVzdWx0IElzUG9zaXRpdmVGb3JtYXQoY29uc3QgY2hhciogLyogZXhwciAqLywg
ZG91YmxlIHgpIHsKKyAgcmV0dXJuIHggPiAwID8gQXNzZXJ0aW9uU3VjY2VzcygpIDoKKyAgICAg
IEFzc2VydGlvbkZhaWx1cmUoTWVzc2FnZSgpIDw8ICJGYWlsdXJlIik7Cit9CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPgorQXNzZXJ0aW9uUmVzdWx0IElzTmVnYXRpdmVGb3JtYXQoY29uc3QgY2hh
ciogLyogZXhwciAqLywgVCB4KSB7CisgIHJldHVybiB4IDwgMCA/IEFzc2VydGlvblN1Y2Nlc3Mo
KSA6CisgICAgICBBc3NlcnRpb25GYWlsdXJlKE1lc3NhZ2UoKSA8PCAiRmFpbHVyZSIpOworfQor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgorQXNzZXJ0aW9uUmVzdWx0IEVx
dWFsc0Zvcm1hdChjb25zdCBjaGFyKiAvKiBleHByMSAqLywgY29uc3QgY2hhciogLyogZXhwcjIg
Ki8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQxJiB4MSwgY29uc3QgVDIm
IHgyKSB7CisgIHJldHVybiB4MSA9PSB4MiA/IEFzc2VydGlvblN1Y2Nlc3MoKSA6CisgICAgICBB
c3NlcnRpb25GYWlsdXJlKE1lc3NhZ2UoKSA8PCAiRmFpbHVyZSIpOworfQorCisvLyBUZXN0cyB0
aGF0IG92ZXJsb2FkZWQgZnVuY3Rpb25zIGNhbiBiZSB1c2VkIGluICpfUFJFRF9GT1JNQVQqCisv
LyB3aXRob3V0IGV4cGxpY2l0bHkgc3BlY2lmeWluZyB0aGVpciB0eXBlcy4KK1RFU1QoUHJlZGlj
YXRlRm9ybWF0QXNzZXJ0aW9uVGVzdCwgQWNjZXB0c092ZXJsb2FkZWRGdW5jdGlvbikgeworICBF
WFBFQ1RfUFJFRF9GT1JNQVQxKElzUG9zaXRpdmVGb3JtYXQsIDUpOworICBBU1NFUlRfUFJFRF9G
T1JNQVQxKElzUG9zaXRpdmVGb3JtYXQsIDYuMCk7Cit9CisKKy8vIFRlc3RzIHRoYXQgdGVtcGxh
dGUgZnVuY3Rpb25zIGNhbiBiZSB1c2VkIGluICpfUFJFRF9GT1JNQVQqIHdpdGhvdXQKKy8vIGV4
cGxpY2l0bHkgc3BlY2lmeWluZyB0aGVpciB0eXBlcy4KK1RFU1QoUHJlZGljYXRlRm9ybWF0QXNz
ZXJ0aW9uVGVzdCwgQWNjZXB0c1RlbXBsYXRlRnVuY3Rpb24pIHsKKyAgRVhQRUNUX1BSRURfRk9S
TUFUMShJc05lZ2F0aXZlRm9ybWF0LCAtNSk7CisgIEFTU0VSVF9QUkVEX0ZPUk1BVDIoRXF1YWxz
Rm9ybWF0LCAzLCAzKTsKK30KKworCisvLyBUZXN0cyBzdHJpbmcgYXNzZXJ0aW9ucy4KKworLy8g
VGVzdHMgQVNTRVJUX1NUUkVRIHdpdGggbm9uLU5VTEwgYXJndW1lbnRzLgorVEVTVChTdHJpbmdB
c3NlcnRpb25UZXN0LCBBU1NFUlRfU1RSRVEpIHsKKyAgY29uc3QgY2hhciAqIGNvbnN0IHAxID0g
Imdvb2QiOworICBBU1NFUlRfU1RSRVEocDEsIHAxKTsKKworICAvLyBMZXQgcDIgaGF2ZSB0aGUg
c2FtZSBjb250ZW50IGFzIHAxLCBidXQgYmUgYXQgYSBkaWZmZXJlbnQgYWRkcmVzcy4KKyAgY29u
c3QgY2hhciBwMltdID0gImdvb2QiOworICBBU1NFUlRfU1RSRVEocDEsIHAyKTsKKworICBFWFBF
Q1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfU1RSRVEoImJhZCIsICJnb29kIiksCisgICAgICAgICAg
ICAgICAgICAgICAgICJFeHBlY3RlZDogXCJiYWRcIiIpOworfQorCisvLyBUZXN0cyBBU1NFUlRf
U1RSRVEgd2l0aCBOVUxMIGFyZ3VtZW50cy4KK1RFU1QoU3RyaW5nQXNzZXJ0aW9uVGVzdCwgQVNT
RVJUX1NUUkVRX051bGwpIHsKKyAgQVNTRVJUX1NUUkVRKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIg
Kj4oTlVMTCksIE5VTEwpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfU1RSRVEoTlVM
TCwgIm5vbi1udWxsIiksCisgICAgICAgICAgICAgICAgICAgICAgICJub24tbnVsbCIpOworfQor
CisvLyBUZXN0cyBBU1NFUlRfU1RSRVEgd2l0aCBOVUxMIGFyZ3VtZW50cy4KK1RFU1QoU3RyaW5n
QXNzZXJ0aW9uVGVzdCwgQVNTRVJUX1NUUkVRX051bGwyKSB7CisgIEVYUEVDVF9GQVRBTF9GQUlM
VVJFKEFTU0VSVF9TVFJFUSgibm9uLW51bGwiLCBOVUxMKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIm5vbi1udWxsIik7Cit9CisKKy8vIFRlc3RzIEFTU0VSVF9TVFJORS4KK1RFU1QoU3RyaW5n
QXNzZXJ0aW9uVGVzdCwgQVNTRVJUX1NUUk5FKSB7CisgIEFTU0VSVF9TVFJORSgiaGkiLCAiSGki
KTsKKyAgQVNTRVJUX1NUUk5FKCJIaSIsIE5VTEwpOworICBBU1NFUlRfU1RSTkUoTlVMTCwgIkhp
Iik7CisgIEFTU0VSVF9TVFJORSgiIiwgTlVMTCk7CisgIEFTU0VSVF9TVFJORShOVUxMLCAiIik7
CisgIEFTU0VSVF9TVFJORSgiIiwgIkhpIik7CisgIEFTU0VSVF9TVFJORSgiSGkiLCAiIik7Cisg
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9TVFJORSgiSGkiLCAiSGkiKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIlwiSGlcIiB2cyBcIkhpXCIiKTsKK30KKworLy8gVGVzdHMgQVNTRVJU
X1NUUkNBU0VFUS4KK1RFU1QoU3RyaW5nQXNzZXJ0aW9uVGVzdCwgQVNTRVJUX1NUUkNBU0VFUSkg
eworICBBU1NFUlRfU1RSQ0FTRUVRKCJoaSIsICJIaSIpOworICBBU1NFUlRfU1RSQ0FTRUVRKHN0
YXRpY19jYXN0PGNvbnN0IGNoYXIgKj4oTlVMTCksIE5VTEwpOworCisgIEFTU0VSVF9TVFJDQVNF
RVEoIiIsICIiKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX1NUUkNBU0VFUSgiSGki
LCAiaGkyIiksCisgICAgICAgICAgICAgICAgICAgICAgICJJZ25vcmluZyBjYXNlIik7Cit9CisK
Ky8vIFRlc3RzIEFTU0VSVF9TVFJDQVNFTkUuCitURVNUKFN0cmluZ0Fzc2VydGlvblRlc3QsIEFT
U0VSVF9TVFJDQVNFTkUpIHsKKyAgQVNTRVJUX1NUUkNBU0VORSgiaGkxIiwgIkhpMiIpOworICBB
U1NFUlRfU1RSQ0FTRU5FKCJIaSIsIE5VTEwpOworICBBU1NFUlRfU1RSQ0FTRU5FKE5VTEwsICJI
aSIpOworICBBU1NFUlRfU1RSQ0FTRU5FKCIiLCBOVUxMKTsKKyAgQVNTRVJUX1NUUkNBU0VORShO
VUxMLCAiIik7CisgIEFTU0VSVF9TVFJDQVNFTkUoIiIsICJIaSIpOworICBBU1NFUlRfU1RSQ0FT
RU5FKCJIaSIsICIiKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX1NUUkNBU0VORSgi
SGkiLCAiaGkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIihpZ25vcmluZyBjYXNlKSIpOwor
fQorCisvLyBUZXN0cyAqX1NUUkVRIG9uIHdpZGUgc3RyaW5ncy4KK1RFU1QoU3RyaW5nQXNzZXJ0
aW9uVGVzdCwgU1RSRVFfV2lkZSkgeworICAvLyBOVUxMIHN0cmluZ3MuCisgIEFTU0VSVF9TVFJF
UShzdGF0aWNfY2FzdDxjb25zdCB3Y2hhcl90ICo+KE5VTEwpLCBOVUxMKTsKKworICAvLyBFbXB0
eSBzdHJpbmdzLgorICBBU1NFUlRfU1RSRVEoTCIiLCBMIiIpOworCisgIC8vIE5vbi1udWxsIHZz
IE5VTEwuCisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9TVFJFUShMIm5vbi1udWxs
IiwgTlVMTCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICJub24tbnVsbCIpOworCisgIC8v
IEVxdWFsIHN0cmluZ3MuCisgIEVYUEVDVF9TVFJFUShMIkhpIiwgTCJIaSIpOworCisgIC8vIFVu
ZXF1YWwgc3RyaW5ncy4KKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1NUUkVRKEwi
YWJjIiwgTCJBYmMiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkFiYyIpOworCisgIC8v
IFN0cmluZ3MgY29udGFpbmluZyB3aWRlIGNoYXJhY3RlcnMuCisgIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKEVYUEVDVF9TVFJFUShMImFiY1x4ODExOSIsIEwiYWJjXHg4MTIwIiksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICJhYmMiKTsKKworICAvLyBUaGUgc3RyZWFtaW5nIHZhcmlhdGlv
bi4KKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAgRVhQRUNUX1NU
UkVRKEwiYWJjXHg4MTE5IiwgTCJhYmNceDgxMjEiKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSI7Cisg
IH0sICJFeHBlY3RlZCBmYWlsdXJlIik7Cit9CisKKy8vIFRlc3RzICpfU1RSTkUgb24gd2lkZSBz
dHJpbmdzLgorVEVTVChTdHJpbmdBc3NlcnRpb25UZXN0LCBTVFJORV9XaWRlKSB7CisgIC8vIE5V
TEwgc3RyaW5ncy4KKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAg
RVhQRUNUX1NUUk5FKHN0YXRpY19jYXN0PGNvbnN0IHdjaGFyX3QgKj4oTlVMTCksIE5VTEwpOwor
ICB9LCAiIik7CisKKyAgLy8gRW1wdHkgc3RyaW5ncy4KKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoRVhQRUNUX1NUUk5FKEwiIiwgTCIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkxc
IlwiIik7CisKKyAgLy8gTm9uLW51bGwgdnMgTlVMTC4KKyAgQVNTRVJUX1NUUk5FKEwibm9uLW51
bGwiLCBOVUxMKTsKKworICAvLyBFcXVhbCBzdHJpbmdzLgorICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRShFWFBFQ1RfU1RSTkUoTCJIaSIsIEwiSGkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIkxcIkhpXCIiKTsKKworICAvLyBVbmVxdWFsIHN0cmluZ3MuCisgIEVYUEVDVF9TVFJORShM
ImFiYyIsIEwiQWJjIik7CisKKyAgLy8gU3RyaW5ncyBjb250YWluaW5nIHdpZGUgY2hhcmFjdGVy
cy4KKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1NUUk5FKEwiYWJjXHg4MTE5Iiwg
TCJhYmNceDgxMTkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImFiYyIpOworCisgIC8v
IFRoZSBzdHJlYW1pbmcgdmFyaWF0aW9uLgorICBBU1NFUlRfU1RSTkUoTCJhYmNceDgxMTkiLCBM
ImFiY1x4ODEyMCIpIDw8ICJUaGlzIHNob3VsZG4ndCBoYXBwZW4iOworfQorCisvLyBUZXN0cyBm
b3IgOjp0ZXN0aW5nOjpJc1N1YnN0cmluZygpLgorCisvLyBUZXN0cyB0aGF0IElzU3Vic3RyaW5n
KCkgcmV0dXJucyB0aGUgY29ycmVjdCByZXN1bHQgd2hlbiB0aGUgaW5wdXQKKy8vIGFyZ3VtZW50
IHR5cGUgaXMgY29uc3QgY2hhciouCitURVNUKElzU3Vic3RyaW5nVGVzdCwgUmV0dXJuc0NvcnJl
Y3RSZXN1bHRGb3JDU3RyaW5nKSB7CisgIEVYUEVDVF9GQUxTRShJc1N1YnN0cmluZygiIiwgIiIs
IE5VTEwsICJhIikpOworICBFWFBFQ1RfRkFMU0UoSXNTdWJzdHJpbmcoIiIsICIiLCAiYiIsIE5V
TEwpKTsKKyAgRVhQRUNUX0ZBTFNFKElzU3Vic3RyaW5nKCIiLCAiIiwgIm5lZWRsZSIsICJoYXlz
dGFjayIpKTsKKworICBFWFBFQ1RfVFJVRShJc1N1YnN0cmluZygiIiwgIiIsIHN0YXRpY19jYXN0
PGNvbnN0IGNoYXIqPihOVUxMKSwgTlVMTCkpOworICBFWFBFQ1RfVFJVRShJc1N1YnN0cmluZygi
IiwgIiIsICJuZWVkbGUiLCAidHdvIG5lZWRsZXMiKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgSXNT
dWJzdHJpbmcoKSByZXR1cm5zIHRoZSBjb3JyZWN0IHJlc3VsdCB3aGVuIHRoZSBpbnB1dAorLy8g
YXJndW1lbnQgdHlwZSBpcyBjb25zdCB3Y2hhcl90Ki4KK1RFU1QoSXNTdWJzdHJpbmdUZXN0LCBS
ZXR1cm5zQ29ycmVjdFJlc3VsdEZvcldpZGVDU3RyaW5nKSB7CisgIEVYUEVDVF9GQUxTRShJc1N1
YnN0cmluZygiIiwgIiIsIGtOdWxsLCBMImEiKSk7CisgIEVYUEVDVF9GQUxTRShJc1N1YnN0cmlu
ZygiIiwgIiIsIEwiYiIsIGtOdWxsKSk7CisgIEVYUEVDVF9GQUxTRShJc1N1YnN0cmluZygiIiwg
IiIsIEwibmVlZGxlIiwgTCJoYXlzdGFjayIpKTsKKworICBFWFBFQ1RfVFJVRShJc1N1YnN0cmlu
ZygiIiwgIiIsIHN0YXRpY19jYXN0PGNvbnN0IHdjaGFyX3QqPihOVUxMKSwgTlVMTCkpOworICBF
WFBFQ1RfVFJVRShJc1N1YnN0cmluZygiIiwgIiIsIEwibmVlZGxlIiwgTCJ0d28gbmVlZGxlcyIp
KTsKK30KKworLy8gVGVzdHMgdGhhdCBJc1N1YnN0cmluZygpIGdlbmVyYXRlcyB0aGUgY29ycmVj
dCBtZXNzYWdlIHdoZW4gdGhlIGlucHV0CisvLyBhcmd1bWVudCB0eXBlIGlzIGNvbnN0IGNoYXIq
LgorVEVTVChJc1N1YnN0cmluZ1Rlc3QsIEdlbmVyYXRlc0NvcnJlY3RNZXNzYWdlRm9yQ1N0cmlu
ZykgeworICBFWFBFQ1RfU1RSRVEoIlZhbHVlIG9mOiBuZWVkbGVfZXhwclxuIgorICAgICAgICAg
ICAgICAgIiAgQWN0dWFsOiBcIm5lZWRsZVwiXG4iCisgICAgICAgICAgICAgICAiRXhwZWN0ZWQ6
IGEgc3Vic3RyaW5nIG9mIGhheXN0YWNrX2V4cHJcbiIKKyAgICAgICAgICAgICAgICJXaGljaCBp
czogXCJoYXlzdGFja1wiIiwKKyAgICAgICAgICAgICAgIElzU3Vic3RyaW5nKCJuZWVkbGVfZXhw
ciIsICJoYXlzdGFja19leHByIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJuZWVkbGUi
LCAiaGF5c3RhY2siKS5mYWlsdXJlX21lc3NhZ2UoKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgSXNT
dWJzdHJpbmcgcmV0dXJucyB0aGUgY29ycmVjdCByZXN1bHQgd2hlbiB0aGUgaW5wdXQKKy8vIGFy
Z3VtZW50IHR5cGUgaXMgOjpzdGQ6OnN0cmluZy4KK1RFU1QoSXNTdWJzdHJpbmdUZXN0LCBSZXR1
cm5zQ29ycmVjdFJlc3VsdHNGb3JTdGRTdHJpbmcpIHsKKyAgRVhQRUNUX1RSVUUoSXNTdWJzdHJp
bmcoIiIsICIiLCBzdGQ6OnN0cmluZygiaGVsbG8iKSwgImFoZWxsb2IiKSk7CisgIEVYUEVDVF9G
QUxTRShJc1N1YnN0cmluZygiIiwgIiIsICJoZWxsbyIsIHN0ZDo6c3RyaW5nKCJ3b3JsZCIpKSk7
Cit9CisKKyNpZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKKy8vIFRlc3RzIHRoYXQgSXNTdWJzdHJp
bmcgcmV0dXJucyB0aGUgY29ycmVjdCByZXN1bHQgd2hlbiB0aGUgaW5wdXQKKy8vIGFyZ3VtZW50
IHR5cGUgaXMgOjpzdGQ6OndzdHJpbmcuCitURVNUKElzU3Vic3RyaW5nVGVzdCwgUmV0dXJuc0Nv
cnJlY3RSZXN1bHRGb3JTdGRXc3RyaW5nKSB7CisgIEVYUEVDVF9UUlVFKElzU3Vic3RyaW5nKCIi
LCAiIiwgOjpzdGQ6OndzdHJpbmcoTCJuZWVkbGUiKSwgTCJ0d28gbmVlZGxlcyIpKTsKKyAgRVhQ
RUNUX0ZBTFNFKElzU3Vic3RyaW5nKCIiLCAiIiwgTCJuZWVkbGUiLCA6OnN0ZDo6d3N0cmluZyhM
ImhheXN0YWNrIikpKTsKK30KKworLy8gVGVzdHMgdGhhdCBJc1N1YnN0cmluZygpIGdlbmVyYXRl
cyB0aGUgY29ycmVjdCBtZXNzYWdlIHdoZW4gdGhlIGlucHV0CisvLyBhcmd1bWVudCB0eXBlIGlz
IDo6c3RkOjp3c3RyaW5nLgorVEVTVChJc1N1YnN0cmluZ1Rlc3QsIEdlbmVyYXRlc0NvcnJlY3RN
ZXNzYWdlRm9yV3N0cmluZykgeworICBFWFBFQ1RfU1RSRVEoIlZhbHVlIG9mOiBuZWVkbGVfZXhw
clxuIgorICAgICAgICAgICAgICAgIiAgQWN0dWFsOiBMXCJuZWVkbGVcIlxuIgorICAgICAgICAg
ICAgICAgIkV4cGVjdGVkOiBhIHN1YnN0cmluZyBvZiBoYXlzdGFja19leHByXG4iCisgICAgICAg
ICAgICAgICAiV2hpY2ggaXM6IExcImhheXN0YWNrXCIiLAorICAgICAgICAgICAgICAgSXNTdWJz
dHJpbmcoCisgICAgICAgICAgICAgICAgICAgIm5lZWRsZV9leHByIiwgImhheXN0YWNrX2V4cHIi
LAorICAgICAgICAgICAgICAgICAgIDo6c3RkOjp3c3RyaW5nKEwibmVlZGxlIiksIEwiaGF5c3Rh
Y2siKS5mYWlsdXJlX21lc3NhZ2UoKSk7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9X
U1RSSU5HCisKKy8vIFRlc3RzIGZvciA6OnRlc3Rpbmc6OklzTm90U3Vic3RyaW5nKCkuCisKKy8v
IFRlc3RzIHRoYXQgSXNOb3RTdWJzdHJpbmcoKSByZXR1cm5zIHRoZSBjb3JyZWN0IHJlc3VsdCB3
aGVuIHRoZSBpbnB1dAorLy8gYXJndW1lbnQgdHlwZSBpcyBjb25zdCBjaGFyKi4KK1RFU1QoSXNO
b3RTdWJzdHJpbmdUZXN0LCBSZXR1cm5zQ29ycmVjdFJlc3VsdEZvckNTdHJpbmcpIHsKKyAgRVhQ
RUNUX1RSVUUoSXNOb3RTdWJzdHJpbmcoIiIsICIiLCAibmVlZGxlIiwgImhheXN0YWNrIikpOwor
ICBFWFBFQ1RfRkFMU0UoSXNOb3RTdWJzdHJpbmcoIiIsICIiLCAibmVlZGxlIiwgInR3byBuZWVk
bGVzIikpOworfQorCisvLyBUZXN0cyB0aGF0IElzTm90U3Vic3RyaW5nKCkgcmV0dXJucyB0aGUg
Y29ycmVjdCByZXN1bHQgd2hlbiB0aGUgaW5wdXQKKy8vIGFyZ3VtZW50IHR5cGUgaXMgY29uc3Qg
d2NoYXJfdCouCitURVNUKElzTm90U3Vic3RyaW5nVGVzdCwgUmV0dXJuc0NvcnJlY3RSZXN1bHRG
b3JXaWRlQ1N0cmluZykgeworICBFWFBFQ1RfVFJVRShJc05vdFN1YnN0cmluZygiIiwgIiIsIEwi
bmVlZGxlIiwgTCJoYXlzdGFjayIpKTsKKyAgRVhQRUNUX0ZBTFNFKElzTm90U3Vic3RyaW5nKCIi
LCAiIiwgTCJuZWVkbGUiLCBMInR3byBuZWVkbGVzIikpOworfQorCisvLyBUZXN0cyB0aGF0IElz
Tm90U3Vic3RyaW5nKCkgZ2VuZXJhdGVzIHRoZSBjb3JyZWN0IG1lc3NhZ2Ugd2hlbiB0aGUgaW5w
dXQKKy8vIGFyZ3VtZW50IHR5cGUgaXMgY29uc3Qgd2NoYXJfdCouCitURVNUKElzTm90U3Vic3Ry
aW5nVGVzdCwgR2VuZXJhdGVzQ29ycmVjdE1lc3NhZ2VGb3JXaWRlQ1N0cmluZykgeworICBFWFBF
Q1RfU1RSRVEoIlZhbHVlIG9mOiBuZWVkbGVfZXhwclxuIgorICAgICAgICAgICAgICAgIiAgQWN0
dWFsOiBMXCJuZWVkbGVcIlxuIgorICAgICAgICAgICAgICAgIkV4cGVjdGVkOiBub3QgYSBzdWJz
dHJpbmcgb2YgaGF5c3RhY2tfZXhwclxuIgorICAgICAgICAgICAgICAgIldoaWNoIGlzOiBMXCJ0
d28gbmVlZGxlc1wiIiwKKyAgICAgICAgICAgICAgIElzTm90U3Vic3RyaW5nKAorICAgICAgICAg
ICAgICAgICAgICJuZWVkbGVfZXhwciIsICJoYXlzdGFja19leHByIiwKKyAgICAgICAgICAgICAg
ICAgICBMIm5lZWRsZSIsIEwidHdvIG5lZWRsZXMiKS5mYWlsdXJlX21lc3NhZ2UoKSk7Cit9CisK
Ky8vIFRlc3RzIHRoYXQgSXNOb3RTdWJzdHJpbmcgcmV0dXJucyB0aGUgY29ycmVjdCByZXN1bHQg
d2hlbiB0aGUgaW5wdXQKKy8vIGFyZ3VtZW50IHR5cGUgaXMgOjpzdGQ6OnN0cmluZy4KK1RFU1Qo
SXNOb3RTdWJzdHJpbmdUZXN0LCBSZXR1cm5zQ29ycmVjdFJlc3VsdHNGb3JTdGRTdHJpbmcpIHsK
KyAgRVhQRUNUX0ZBTFNFKElzTm90U3Vic3RyaW5nKCIiLCAiIiwgc3RkOjpzdHJpbmcoImhlbGxv
IiksICJhaGVsbG9iIikpOworICBFWFBFQ1RfVFJVRShJc05vdFN1YnN0cmluZygiIiwgIiIsICJo
ZWxsbyIsIHN0ZDo6c3RyaW5nKCJ3b3JsZCIpKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgSXNOb3RT
dWJzdHJpbmcoKSBnZW5lcmF0ZXMgdGhlIGNvcnJlY3QgbWVzc2FnZSB3aGVuIHRoZSBpbnB1dAor
Ly8gYXJndW1lbnQgdHlwZSBpcyA6OnN0ZDo6c3RyaW5nLgorVEVTVChJc05vdFN1YnN0cmluZ1Rl
c3QsIEdlbmVyYXRlc0NvcnJlY3RNZXNzYWdlRm9yU3RkU3RyaW5nKSB7CisgIEVYUEVDVF9TVFJF
USgiVmFsdWUgb2Y6IG5lZWRsZV9leHByXG4iCisgICAgICAgICAgICAgICAiICBBY3R1YWw6IFwi
bmVlZGxlXCJcbiIKKyAgICAgICAgICAgICAgICJFeHBlY3RlZDogbm90IGEgc3Vic3RyaW5nIG9m
IGhheXN0YWNrX2V4cHJcbiIKKyAgICAgICAgICAgICAgICJXaGljaCBpczogXCJ0d28gbmVlZGxl
c1wiIiwKKyAgICAgICAgICAgICAgIElzTm90U3Vic3RyaW5nKAorICAgICAgICAgICAgICAgICAg
ICJuZWVkbGVfZXhwciIsICJoYXlzdGFja19leHByIiwKKyAgICAgICAgICAgICAgICAgICA6OnN0
ZDo6c3RyaW5nKCJuZWVkbGUiKSwgInR3byBuZWVkbGVzIikuZmFpbHVyZV9tZXNzYWdlKCkpOwor
fQorCisjaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCisKKy8vIFRlc3RzIHRoYXQgSXNOb3RTdWJz
dHJpbmcgcmV0dXJucyB0aGUgY29ycmVjdCByZXN1bHQgd2hlbiB0aGUgaW5wdXQKKy8vIGFyZ3Vt
ZW50IHR5cGUgaXMgOjpzdGQ6OndzdHJpbmcuCitURVNUKElzTm90U3Vic3RyaW5nVGVzdCwgUmV0
dXJuc0NvcnJlY3RSZXN1bHRGb3JTdGRXc3RyaW5nKSB7CisgIEVYUEVDVF9GQUxTRSgKKyAgICAg
IElzTm90U3Vic3RyaW5nKCIiLCAiIiwgOjpzdGQ6OndzdHJpbmcoTCJuZWVkbGUiKSwgTCJ0d28g
bmVlZGxlcyIpKTsKKyAgRVhQRUNUX1RSVUUoSXNOb3RTdWJzdHJpbmcoIiIsICIiLCBMIm5lZWRs
ZSIsIDo6c3RkOjp3c3RyaW5nKEwiaGF5c3RhY2siKSkpOworfQorCisjZW5kaWYgIC8vIEdURVNU
X0hBU19TVERfV1NUUklORworCisvLyBUZXN0cyBmbG9hdGluZy1wb2ludCBhc3NlcnRpb25zLgor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgUmF3VHlwZT4KK2NsYXNzIEZsb2F0aW5nUG9pbnRUZXN0IDog
cHVibGljIFRlc3QgeworIHByb3RlY3RlZDoKKyAgLy8gUHJlLWNhbGN1bGF0ZWQgbnVtYmVycyB0
byBiZSB1c2VkIGJ5IHRoZSB0ZXN0cy4KKyAgc3RydWN0IFRlc3RWYWx1ZXMgeworICAgIFJhd1R5
cGUgY2xvc2VfdG9fcG9zaXRpdmVfemVybzsKKyAgICBSYXdUeXBlIGNsb3NlX3RvX25lZ2F0aXZl
X3plcm87CisgICAgUmF3VHlwZSBmdXJ0aGVyX2Zyb21fbmVnYXRpdmVfemVybzsKKworICAgIFJh
d1R5cGUgY2xvc2VfdG9fb25lOworICAgIFJhd1R5cGUgZnVydGhlcl9mcm9tX29uZTsKKworICAg
IFJhd1R5cGUgaW5maW5pdHk7CisgICAgUmF3VHlwZSBjbG9zZV90b19pbmZpbml0eTsKKyAgICBS
YXdUeXBlIGZ1cnRoZXJfZnJvbV9pbmZpbml0eTsKKworICAgIFJhd1R5cGUgbmFuMTsKKyAgICBS
YXdUeXBlIG5hbjI7CisgIH07CisKKyAgdHlwZWRlZiB0eXBlbmFtZSB0ZXN0aW5nOjppbnRlcm5h
bDo6RmxvYXRpbmdQb2ludDxSYXdUeXBlPiBGbG9hdGluZzsKKyAgdHlwZWRlZiB0eXBlbmFtZSBG
bG9hdGluZzo6Qml0cyBCaXRzOworCisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICBjb25z
dCBzaXplX3QgbWF4X3VscHMgPSBGbG9hdGluZzo6a01heFVscHM7CisKKyAgICAvLyBUaGUgYml0
cyB0aGF0IHJlcHJlc2VudCAwLjAuCisgICAgY29uc3QgQml0cyB6ZXJvX2JpdHMgPSBGbG9hdGlu
ZygwKS5iaXRzKCk7CisKKyAgICAvLyBNYWtlcyBzb21lIG51bWJlcnMgY2xvc2UgdG8gMC4wLgor
ICAgIHZhbHVlc18uY2xvc2VfdG9fcG9zaXRpdmVfemVybyA9IEZsb2F0aW5nOjpSZWludGVycHJl
dEJpdHMoCisgICAgICAgIHplcm9fYml0cyArIG1heF91bHBzLzIpOworICAgIHZhbHVlc18uY2xv
c2VfdG9fbmVnYXRpdmVfemVybyA9IC1GbG9hdGluZzo6UmVpbnRlcnByZXRCaXRzKAorICAgICAg
ICB6ZXJvX2JpdHMgKyBtYXhfdWxwcyAtIG1heF91bHBzLzIpOworICAgIHZhbHVlc18uZnVydGhl
cl9mcm9tX25lZ2F0aXZlX3plcm8gPSAtRmxvYXRpbmc6OlJlaW50ZXJwcmV0Qml0cygKKyAgICAg
ICAgemVyb19iaXRzICsgbWF4X3VscHMgKyAxIC0gbWF4X3VscHMvMik7CisKKyAgICAvLyBUaGUg
Yml0cyB0aGF0IHJlcHJlc2VudCAxLjAuCisgICAgY29uc3QgQml0cyBvbmVfYml0cyA9IEZsb2F0
aW5nKDEpLmJpdHMoKTsKKworICAgIC8vIE1ha2VzIHNvbWUgbnVtYmVycyBjbG9zZSB0byAxLjAu
CisgICAgdmFsdWVzXy5jbG9zZV90b19vbmUgPSBGbG9hdGluZzo6UmVpbnRlcnByZXRCaXRzKG9u
ZV9iaXRzICsgbWF4X3VscHMpOworICAgIHZhbHVlc18uZnVydGhlcl9mcm9tX29uZSA9IEZsb2F0
aW5nOjpSZWludGVycHJldEJpdHMoCisgICAgICAgIG9uZV9iaXRzICsgbWF4X3VscHMgKyAxKTsK
KworICAgIC8vICtpbmZpbml0eS4KKyAgICB2YWx1ZXNfLmluZmluaXR5ID0gRmxvYXRpbmc6Oklu
ZmluaXR5KCk7CisKKyAgICAvLyBUaGUgYml0cyB0aGF0IHJlcHJlc2VudCAraW5maW5pdHkuCisg
ICAgY29uc3QgQml0cyBpbmZpbml0eV9iaXRzID0gRmxvYXRpbmcodmFsdWVzXy5pbmZpbml0eSku
Yml0cygpOworCisgICAgLy8gTWFrZXMgc29tZSBudW1iZXJzIGNsb3NlIHRvIGluZmluaXR5Lgor
ICAgIHZhbHVlc18uY2xvc2VfdG9faW5maW5pdHkgPSBGbG9hdGluZzo6UmVpbnRlcnByZXRCaXRz
KAorICAgICAgICBpbmZpbml0eV9iaXRzIC0gbWF4X3VscHMpOworICAgIHZhbHVlc18uZnVydGhl
cl9mcm9tX2luZmluaXR5ID0gRmxvYXRpbmc6OlJlaW50ZXJwcmV0Qml0cygKKyAgICAgICAgaW5m
aW5pdHlfYml0cyAtIG1heF91bHBzIC0gMSk7CisKKyAgICAvLyBNYWtlcyBzb21lIE5BTidzLiAg
U2V0cyB0aGUgbW9zdCBzaWduaWZpY2FudCBiaXQgb2YgdGhlIGZyYWN0aW9uIHNvIHRoYXQKKyAg
ICAvLyBvdXIgTmFOJ3MgYXJlIHF1aWV0OyB0cnlpbmcgdG8gcHJvY2VzcyBhIHNpZ25hbGluZyBO
YU4gd291bGQgcmFpc2UgYW4KKyAgICAvLyBleGNlcHRpb24gaWYgb3VyIGVudmlyb25tZW50IGVu
YWJsZXMgZmxvYXRpbmcgcG9pbnQgZXhjZXB0aW9ucy4KKyAgICB2YWx1ZXNfLm5hbjEgPSBGbG9h
dGluZzo6UmVpbnRlcnByZXRCaXRzKEZsb2F0aW5nOjprRXhwb25lbnRCaXRNYXNrCisgICAgICAg
IHwgKHN0YXRpY19jYXN0PEJpdHM+KDEpIDw8IChGbG9hdGluZzo6a0ZyYWN0aW9uQml0Q291bnQg
LSAxKSkgfCAxKTsKKyAgICB2YWx1ZXNfLm5hbjIgPSBGbG9hdGluZzo6UmVpbnRlcnByZXRCaXRz
KEZsb2F0aW5nOjprRXhwb25lbnRCaXRNYXNrCisgICAgICAgIHwgKHN0YXRpY19jYXN0PEJpdHM+
KDEpIDw8IChGbG9hdGluZzo6a0ZyYWN0aW9uQml0Q291bnQgLSAxKSkgfCAyMDApOworICB9CisK
KyAgdm9pZCBUZXN0U2l6ZSgpIHsKKyAgICBFWFBFQ1RfRVEoc2l6ZW9mKFJhd1R5cGUpLCBzaXpl
b2YoQml0cykpOworICB9CisKKyAgc3RhdGljIFRlc3RWYWx1ZXMgdmFsdWVzXzsKK307CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBSYXdUeXBlPgordHlwZW5hbWUgRmxvYXRpbmdQb2ludFRlc3Q8UmF3
VHlwZT46OlRlc3RWYWx1ZXMKKyAgICBGbG9hdGluZ1BvaW50VGVzdDxSYXdUeXBlPjo6dmFsdWVz
XzsKKworLy8gSW5zdGFudGlhdGVzIEZsb2F0aW5nUG9pbnRUZXN0IGZvciB0ZXN0aW5nICpfRkxP
QVRfRVEuCit0eXBlZGVmIEZsb2F0aW5nUG9pbnRUZXN0PGZsb2F0PiBGbG9hdFRlc3Q7CisKKy8v
IFRlc3RzIHRoYXQgdGhlIHNpemUgb2YgRmxvYXQ6OkJpdHMgbWF0Y2hlcyB0aGUgc2l6ZSBvZiBm
bG9hdC4KK1RFU1RfRihGbG9hdFRlc3QsIFNpemUpIHsKKyAgVGVzdFNpemUoKTsKK30KKworLy8g
VGVzdHMgY29tcGFyaW5nIHdpdGggKzAgYW5kIC0wLgorVEVTVF9GKEZsb2F0VGVzdCwgWmVyb3Mp
IHsKKyAgRVhQRUNUX0ZMT0FUX0VRKDAuMCwgLTAuMCk7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKEVYUEVDVF9GTE9BVF9FUSgtMC4wLCAxLjApLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAiMS4wIik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9GTE9BVF9FUSgwLjAsIDEu
NSksCisgICAgICAgICAgICAgICAgICAgICAgICIxLjUiKTsKK30KKworLy8gVGVzdHMgY29tcGFy
aW5nIG51bWJlcnMgY2xvc2UgdG8gMC4KKy8vCisvLyBUaGlzIGVuc3VyZXMgdGhhdCAqX0ZMT0FU
X0VRIGhhbmRsZXMgdGhlIHNpZ24gY29ycmVjdGx5IGFuZCBubworLy8gb3ZlcmZsb3cgb2NjdXJz
IHdoZW4gY29tcGFyaW5nIG51bWJlcnMgd2hvc2UgYWJzb2x1dGUgdmFsdWUgaXMgdmVyeQorLy8g
c21hbGwuCitURVNUX0YoRmxvYXRUZXN0LCBBbG1vc3RaZXJvcykgeworICAvLyBJbiBDKytCdWls
ZGVyLCBuYW1lcyB3aXRoaW4gbG9jYWwgY2xhc3NlcyAoc3VjaCBhcyB1c2VkIGJ5CisgIC8vIEVY
UEVDVF9GQVRBTF9GQUlMVVJFKSBjYW5ub3QgYmUgcmVzb2x2ZWQgYWdhaW5zdCBzdGF0aWMgbWVt
YmVycyBvZiB0aGUKKyAgLy8gc2NvcGluZyBjbGFzcy4gIFVzZSBhIHN0YXRpYyBsb2NhbCBhbGlh
cyBhcyBhIHdvcmthcm91bmQuCisgIC8vIFdlIHVzZSB0aGUgYXNzaWdubWVudCBzeW50YXggc2lu
Y2Ugc29tZSBjb21waWxlcnMsIGxpa2UgU3VuIFN0dWRpbywKKyAgLy8gZG9uJ3QgYWxsb3cgaW5p
dGlhbGl6aW5nIHJlZmVyZW5jZXMgdXNpbmcgY29uc3RydWN0aW9uIHN5bnRheAorICAvLyAocGFy
ZW50aGVzZXMpLgorICBzdGF0aWMgY29uc3QgRmxvYXRUZXN0OjpUZXN0VmFsdWVzJiB2ID0gdGhp
cy0+dmFsdWVzXzsKKworICBFWFBFQ1RfRkxPQVRfRVEoMC4wLCB2LmNsb3NlX3RvX3Bvc2l0aXZl
X3plcm8pOworICBFWFBFQ1RfRkxPQVRfRVEoLTAuMCwgdi5jbG9zZV90b19uZWdhdGl2ZV96ZXJv
KTsKKyAgRVhQRUNUX0ZMT0FUX0VRKHYuY2xvc2VfdG9fcG9zaXRpdmVfemVybywgdi5jbG9zZV90
b19uZWdhdGl2ZV96ZXJvKTsKKworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQK
KyAgICBBU1NFUlRfRkxPQVRfRVEodi5jbG9zZV90b19wb3NpdGl2ZV96ZXJvLAorICAgICAgICAg
ICAgICAgICAgICB2LmZ1cnRoZXJfZnJvbV9uZWdhdGl2ZV96ZXJvKTsKKyAgfSwgInYuZnVydGhl
cl9mcm9tX25lZ2F0aXZlX3plcm8iKTsKK30KKworLy8gVGVzdHMgY29tcGFyaW5nIG51bWJlcnMg
Y2xvc2UgdG8gZWFjaCBvdGhlci4KK1RFU1RfRihGbG9hdFRlc3QsIFNtYWxsRGlmZikgeworICBF
WFBFQ1RfRkxPQVRfRVEoMS4wLCB2YWx1ZXNfLmNsb3NlX3RvX29uZSk7CisgIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKEVYUEVDVF9GTE9BVF9FUSgxLjAsIHZhbHVlc18uZnVydGhlcl9mcm9tX29u
ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZXNfLmZ1cnRoZXJfZnJvbV9vbmUi
KTsKK30KKworLy8gVGVzdHMgY29tcGFyaW5nIG51bWJlcnMgZmFyIGFwYXJ0LgorVEVTVF9GKEZs
b2F0VGVzdCwgTGFyZ2VEaWZmKSB7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9G
TE9BVF9FUSgyLjUsIDMuMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICIzLjAiKTsKK30K
KworLy8gVGVzdHMgY29tcGFyaW5nIHdpdGggaW5maW5pdHkuCisvLworLy8gVGhpcyBlbnN1cmVz
IHRoYXQgbm8gb3ZlcmZsb3cgb2NjdXJzIHdoZW4gY29tcGFyaW5nIG51bWJlcnMgd2hvc2UKKy8v
IGFic29sdXRlIHZhbHVlIGlzIHZlcnkgbGFyZ2UuCitURVNUX0YoRmxvYXRUZXN0LCBJbmZpbml0
eSkgeworICBFWFBFQ1RfRkxPQVRfRVEodmFsdWVzXy5pbmZpbml0eSwgdmFsdWVzXy5jbG9zZV90
b19pbmZpbml0eSk7CisgIEVYUEVDVF9GTE9BVF9FUSgtdmFsdWVzXy5pbmZpbml0eSwgLXZhbHVl
c18uY2xvc2VfdG9faW5maW5pdHkpOworI2lmICFHVEVTVF9PU19TWU1CSUFOCisgIC8vIE5va2lh
J3MgU1RMcG9ydCBjcmFzaGVzIGlmIHdlIHRyeSB0byBvdXRwdXQgaW5maW5pdHkgb3IgTmFOLgor
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRkxPQVRfRVEodmFsdWVzXy5pbmZpbml0
eSwgLXZhbHVlc18uaW5maW5pdHkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiLXZhbHVl
c18uaW5maW5pdHkiKTsKKworICAvLyBUaGlzIGlzIGludGVyZXN0aW5nIGFzIHRoZSByZXByZXNl
bnRhdGlvbnMgb2YgaW5maW5pdHkgYW5kIG5hbjEKKyAgLy8gYXJlIG9ubHkgMSBETFAgYXBhcnQu
CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9GTE9BVF9FUSh2YWx1ZXNfLmluZmlu
aXR5LCB2YWx1ZXNfLm5hbjEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWVzXy5u
YW4xIik7CisjZW5kaWYgIC8vICFHVEVTVF9PU19TWU1CSUFOCit9CisKKy8vIFRlc3RzIHRoYXQg
Y29tcGFyaW5nIHdpdGggTkFOIGFsd2F5cyByZXR1cm5zIGZhbHNlLgorVEVTVF9GKEZsb2F0VGVz
dCwgTmFOKSB7CisjaWYgIUdURVNUX09TX1NZTUJJQU4KKy8vIE5va2lhJ3MgU1RMcG9ydCBjcmFz
aGVzIGlmIHdlIHRyeSB0byBvdXRwdXQgaW5maW5pdHkgb3IgTmFOLgorCisgIC8vIEluIEMrK0J1
aWxkZXIsIG5hbWVzIHdpdGhpbiBsb2NhbCBjbGFzc2VzIChzdWNoIGFzIHVzZWQgYnkKKyAgLy8g
RVhQRUNUX0ZBVEFMX0ZBSUxVUkUpIGNhbm5vdCBiZSByZXNvbHZlZCBhZ2FpbnN0IHN0YXRpYyBt
ZW1iZXJzIG9mIHRoZQorICAvLyBzY29waW5nIGNsYXNzLiAgVXNlIGEgc3RhdGljIGxvY2FsIGFs
aWFzIGFzIGEgd29ya2Fyb3VuZC4KKyAgLy8gV2UgdXNlIHRoZSBhc3NpZ25tZW50IHN5bnRheCBz
aW5jZSBzb21lIGNvbXBpbGVycywgbGlrZSBTdW4gU3R1ZGlvLAorICAvLyBkb24ndCBhbGxvdyBp
bml0aWFsaXppbmcgcmVmZXJlbmNlcyB1c2luZyBjb25zdHJ1Y3Rpb24gc3ludGF4CisgIC8vIChw
YXJlbnRoZXNlcykuCisgIHN0YXRpYyBjb25zdCBGbG9hdFRlc3Q6OlRlc3RWYWx1ZXMmIHYgPSB0
aGlzLT52YWx1ZXNfOworCisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9GTE9BVF9F
USh2Lm5hbjEsIHYubmFuMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICJ2Lm5hbjEiKTsK
KyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0ZMT0FUX0VRKHYubmFuMSwgdi5uYW4y
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInYubmFuMiIpOworICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRShFWFBFQ1RfRkxPQVRfRVEoMS4wLCB2Lm5hbjEpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAidi5uYW4xIik7CisKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZM
T0FUX0VRKHYubmFuMSwgdi5pbmZpbml0eSksCisgICAgICAgICAgICAgICAgICAgICAgICJ2Lmlu
ZmluaXR5Iik7CisjZW5kaWYgIC8vICFHVEVTVF9PU19TWU1CSUFOCit9CisKKy8vIFRlc3RzIHRo
YXQgKl9GTE9BVF9FUSBhcmUgcmVmbGV4aXZlLgorVEVTVF9GKEZsb2F0VGVzdCwgUmVmbGV4aXZl
KSB7CisgIEVYUEVDVF9GTE9BVF9FUSgwLjAsIDAuMCk7CisgIEVYUEVDVF9GTE9BVF9FUSgxLjAs
IDEuMCk7CisgIEFTU0VSVF9GTE9BVF9FUSh2YWx1ZXNfLmluZmluaXR5LCB2YWx1ZXNfLmluZmlu
aXR5KTsKK30KKworLy8gVGVzdHMgdGhhdCAqX0ZMT0FUX0VRIGFyZSBjb21tdXRhdGl2ZS4KK1RF
U1RfRihGbG9hdFRlc3QsIENvbW11dGF0aXZlKSB7CisgIC8vIFdlIGFscmVhZHkgdGVzdGVkIEVY
UEVDVF9GTE9BVF9FUSgxLjAsIHZhbHVlc18uY2xvc2VfdG9fb25lKS4KKyAgRVhQRUNUX0ZMT0FU
X0VRKHZhbHVlc18uY2xvc2VfdG9fb25lLCAxLjApOworCisgIC8vIFdlIGFscmVhZHkgdGVzdGVk
IEVYUEVDVF9GTE9BVF9FUSgxLjAsIHZhbHVlc18uZnVydGhlcl9mcm9tX29uZSkuCisgIEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9GTE9BVF9FUSh2YWx1ZXNfLmZ1cnRoZXJfZnJvbV9v
bmUsIDEuMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICIxLjAiKTsKK30KKworLy8gVGVz
dHMgRVhQRUNUX05FQVIuCitURVNUX0YoRmxvYXRUZXN0LCBFWFBFQ1RfTkVBUikgeworICBFWFBF
Q1RfTkVBUigtMS4wZiwgLTEuMWYsIDAuMmYpOworICBFWFBFQ1RfTkVBUigyLjBmLCAzLjBmLCAx
LjBmKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX05FQVIoMS4wZiwxLjVmLCAw
LjI1ZiksICAvLyBOT0xJTlQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBkaWZmZXJl
bmNlIGJldHdlZW4gMS4wZiBhbmQgMS41ZiBpcyAwLjUsICIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIndoaWNoIGV4Y2VlZHMgMC4yNWYiKTsKKyAgLy8gVG8gd29yayBhcm91bmQgYSBidWcg
aW4gZ2NjIDIuOTUuMCwgdGhlcmUgaXMgaW50ZW50aW9uYWxseSBubworICAvLyBzcGFjZSBhZnRl
ciB0aGUgZmlyc3QgY29tbWEgaW4gdGhlIHByZXZpb3VzIGxpbmUuCit9CisKKy8vIFRlc3RzIEFT
U0VSVF9ORUFSLgorVEVTVF9GKEZsb2F0VGVzdCwgQVNTRVJUX05FQVIpIHsKKyAgQVNTRVJUX05F
QVIoLTEuMGYsIC0xLjFmLCAwLjJmKTsKKyAgQVNTRVJUX05FQVIoMi4wZiwgMy4wZiwgMS4wZik7
CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9ORUFSKDEuMGYsMS41ZiwgMC4yNWYpLCAg
Ly8gTk9MSU5UCisgICAgICAgICAgICAgICAgICAgICAgICJUaGUgZGlmZmVyZW5jZSBiZXR3ZWVu
IDEuMGYgYW5kIDEuNWYgaXMgMC41LCAiCisgICAgICAgICAgICAgICAgICAgICAgICJ3aGljaCBl
eGNlZWRzIDAuMjVmIik7CisgIC8vIFRvIHdvcmsgYXJvdW5kIGEgYnVnIGluIGdjYyAyLjk1LjAs
IHRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8KKyAgLy8gc3BhY2UgYWZ0ZXIgdGhlIGZpcnN0IGNv
bW1hIGluIHRoZSBwcmV2aW91cyBsaW5lLgorfQorCisvLyBUZXN0cyB0aGUgY2FzZXMgd2hlcmUg
RmxvYXRMRSgpIHNob3VsZCBzdWNjZWVkLgorVEVTVF9GKEZsb2F0VGVzdCwgRmxvYXRMRVN1Y2Nl
ZWRzKSB7CisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoRmxvYXRMRSwgMS4wZiwgMi4wZik7ICAvLyBX
aGVuIHZhbDEgPCB2YWwyLAorICBBU1NFUlRfUFJFRF9GT1JNQVQyKEZsb2F0TEUsIDEuMGYsIDEu
MGYpOyAgLy8gdmFsMSA9PSB2YWwyLAorCisgIC8vIG9yIHdoZW4gdmFsMSBpcyBncmVhdGVyIHRo
YW4sIGJ1dCBhbG1vc3QgZXF1YWxzIHRvLCB2YWwyLgorICBFWFBFQ1RfUFJFRF9GT1JNQVQyKEZs
b2F0TEUsIHZhbHVlc18uY2xvc2VfdG9fcG9zaXRpdmVfemVybywgMC4wZik7Cit9CisKKy8vIFRl
c3RzIHRoZSBjYXNlcyB3aGVyZSBGbG9hdExFKCkgc2hvdWxkIGZhaWwuCitURVNUX0YoRmxvYXRU
ZXN0LCBGbG9hdExFRmFpbHMpIHsKKyAgLy8gV2hlbiB2YWwxIGlzIGdyZWF0ZXIgdGhhbiB2YWwy
IGJ5IGEgbGFyZ2UgbWFyZ2luLAorICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfUFJF
RF9GT1JNQVQyKEZsb2F0TEUsIDIuMGYsIDEuMGYpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAiKDIuMGYpIDw9ICgxLjBmKSIpOworCisgIC8vIG9yIGJ5IGEgc21hbGwgeWV0IG5vbi1uZWds
aWdpYmxlIG1hcmdpbiwKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisg
ICAgRVhQRUNUX1BSRURfRk9STUFUMihGbG9hdExFLCB2YWx1ZXNfLmZ1cnRoZXJfZnJvbV9vbmUs
IDEuMGYpOworICB9LCAiKHZhbHVlc18uZnVydGhlcl9mcm9tX29uZSkgPD0gKDEuMGYpIik7CisK
KyNpZiAhR1RFU1RfT1NfU1lNQklBTiAmJiAhZGVmaW5lZChfX0JPUkxBTkRDX18pCisgIC8vIE5v
a2lhJ3MgU1RMcG9ydCBjcmFzaGVzIGlmIHdlIHRyeSB0byBvdXRwdXQgaW5maW5pdHkgb3IgTmFO
LgorICAvLyBDKytCdWlsZGVyIGdpdmVzIGJhZCByZXN1bHRzIGZvciBvcmRlcmVkIGNvbXBhcmlz
b25zIGludm9sdmluZyBOYU5zCisgIC8vIGR1ZSB0byBjb21waWxlciBidWdzLgorICBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBFWFBFQ1RfUFJFRF9GT1JNQVQyKEZs
b2F0TEUsIHZhbHVlc18ubmFuMSwgdmFsdWVzXy5pbmZpbml0eSk7CisgIH0sICIodmFsdWVzXy5u
YW4xKSA8PSAodmFsdWVzXy5pbmZpbml0eSkiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
eyAgLy8gTk9MSU5UCisgICAgRVhQRUNUX1BSRURfRk9STUFUMihGbG9hdExFLCAtdmFsdWVzXy5p
bmZpbml0eSwgdmFsdWVzXy5uYW4xKTsKKyAgfSwgIigtdmFsdWVzXy5pbmZpbml0eSkgPD0gKHZh
bHVlc18ubmFuMSkiKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAg
QVNTRVJUX1BSRURfRk9STUFUMihGbG9hdExFLCB2YWx1ZXNfLm5hbjEsIHZhbHVlc18ubmFuMSk7
CisgIH0sICIodmFsdWVzXy5uYW4xKSA8PSAodmFsdWVzXy5uYW4xKSIpOworI2VuZGlmICAvLyAh
R1RFU1RfT1NfU1lNQklBTiAmJiAhZGVmaW5lZChfX0JPUkxBTkRDX18pCit9CisKKy8vIEluc3Rh
bnRpYXRlcyBGbG9hdGluZ1BvaW50VGVzdCBmb3IgdGVzdGluZyAqX0RPVUJMRV9FUS4KK3R5cGVk
ZWYgRmxvYXRpbmdQb2ludFRlc3Q8ZG91YmxlPiBEb3VibGVUZXN0OworCisvLyBUZXN0cyB0aGF0
IHRoZSBzaXplIG9mIERvdWJsZTo6Qml0cyBtYXRjaGVzIHRoZSBzaXplIG9mIGRvdWJsZS4KK1RF
U1RfRihEb3VibGVUZXN0LCBTaXplKSB7CisgIFRlc3RTaXplKCk7Cit9CisKKy8vIFRlc3RzIGNv
bXBhcmluZyB3aXRoICswIGFuZCAtMC4KK1RFU1RfRihEb3VibGVUZXN0LCBaZXJvcykgeworICBF
WFBFQ1RfRE9VQkxFX0VRKDAuMCwgLTAuMCk7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVY
UEVDVF9ET1VCTEVfRVEoLTAuMCwgMS4wKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIjEu
MCIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfRE9VQkxFX0VRKDAuMCwgMS4wKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIjEuMCIpOworfQorCisvLyBUZXN0cyBjb21wYXJpbmcg
bnVtYmVycyBjbG9zZSB0byAwLgorLy8KKy8vIFRoaXMgZW5zdXJlcyB0aGF0ICpfRE9VQkxFX0VR
IGhhbmRsZXMgdGhlIHNpZ24gY29ycmVjdGx5IGFuZCBubworLy8gb3ZlcmZsb3cgb2NjdXJzIHdo
ZW4gY29tcGFyaW5nIG51bWJlcnMgd2hvc2UgYWJzb2x1dGUgdmFsdWUgaXMgdmVyeQorLy8gc21h
bGwuCitURVNUX0YoRG91YmxlVGVzdCwgQWxtb3N0WmVyb3MpIHsKKyAgLy8gSW4gQysrQnVpbGRl
ciwgbmFtZXMgd2l0aGluIGxvY2FsIGNsYXNzZXMgKHN1Y2ggYXMgdXNlZCBieQorICAvLyBFWFBF
Q1RfRkFUQUxfRkFJTFVSRSkgY2Fubm90IGJlIHJlc29sdmVkIGFnYWluc3Qgc3RhdGljIG1lbWJl
cnMgb2YgdGhlCisgIC8vIHNjb3BpbmcgY2xhc3MuICBVc2UgYSBzdGF0aWMgbG9jYWwgYWxpYXMg
YXMgYSB3b3JrYXJvdW5kLgorICAvLyBXZSB1c2UgdGhlIGFzc2lnbm1lbnQgc3ludGF4IHNpbmNl
IHNvbWUgY29tcGlsZXJzLCBsaWtlIFN1biBTdHVkaW8sCisgIC8vIGRvbid0IGFsbG93IGluaXRp
YWxpemluZyByZWZlcmVuY2VzIHVzaW5nIGNvbnN0cnVjdGlvbiBzeW50YXgKKyAgLy8gKHBhcmVu
dGhlc2VzKS4KKyAgc3RhdGljIGNvbnN0IERvdWJsZVRlc3Q6OlRlc3RWYWx1ZXMmIHYgPSB0aGlz
LT52YWx1ZXNfOworCisgIEVYUEVDVF9ET1VCTEVfRVEoMC4wLCB2LmNsb3NlX3RvX3Bvc2l0aXZl
X3plcm8pOworICBFWFBFQ1RfRE9VQkxFX0VRKC0wLjAsIHYuY2xvc2VfdG9fbmVnYXRpdmVfemVy
byk7CisgIEVYUEVDVF9ET1VCTEVfRVEodi5jbG9zZV90b19wb3NpdGl2ZV96ZXJvLCB2LmNsb3Nl
X3RvX25lZ2F0aXZlX3plcm8pOworCisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElO
VAorICAgIEFTU0VSVF9ET1VCTEVfRVEodi5jbG9zZV90b19wb3NpdGl2ZV96ZXJvLAorICAgICAg
ICAgICAgICAgICAgICAgdi5mdXJ0aGVyX2Zyb21fbmVnYXRpdmVfemVybyk7CisgIH0sICJ2LmZ1
cnRoZXJfZnJvbV9uZWdhdGl2ZV96ZXJvIik7Cit9CisKKy8vIFRlc3RzIGNvbXBhcmluZyBudW1i
ZXJzIGNsb3NlIHRvIGVhY2ggb3RoZXIuCitURVNUX0YoRG91YmxlVGVzdCwgU21hbGxEaWZmKSB7
CisgIEVYUEVDVF9ET1VCTEVfRVEoMS4wLCB2YWx1ZXNfLmNsb3NlX3RvX29uZSk7CisgIEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9ET1VCTEVfRVEoMS4wLCB2YWx1ZXNfLmZ1cnRoZXJf
ZnJvbV9vbmUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWVzXy5mdXJ0aGVyX2Zy
b21fb25lIik7Cit9CisKKy8vIFRlc3RzIGNvbXBhcmluZyBudW1iZXJzIGZhciBhcGFydC4KK1RF
U1RfRihEb3VibGVUZXN0LCBMYXJnZURpZmYpIHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
RVhQRUNUX0RPVUJMRV9FUSgyLjAsIDMuMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICIz
LjAiKTsKK30KKworLy8gVGVzdHMgY29tcGFyaW5nIHdpdGggaW5maW5pdHkuCisvLworLy8gVGhp
cyBlbnN1cmVzIHRoYXQgbm8gb3ZlcmZsb3cgb2NjdXJzIHdoZW4gY29tcGFyaW5nIG51bWJlcnMg
d2hvc2UKKy8vIGFic29sdXRlIHZhbHVlIGlzIHZlcnkgbGFyZ2UuCitURVNUX0YoRG91YmxlVGVz
dCwgSW5maW5pdHkpIHsKKyAgRVhQRUNUX0RPVUJMRV9FUSh2YWx1ZXNfLmluZmluaXR5LCB2YWx1
ZXNfLmNsb3NlX3RvX2luZmluaXR5KTsKKyAgRVhQRUNUX0RPVUJMRV9FUSgtdmFsdWVzXy5pbmZp
bml0eSwgLXZhbHVlc18uY2xvc2VfdG9faW5maW5pdHkpOworI2lmICFHVEVTVF9PU19TWU1CSUFO
CisgIC8vIE5va2lhJ3MgU1RMcG9ydCBjcmFzaGVzIGlmIHdlIHRyeSB0byBvdXRwdXQgaW5maW5p
dHkgb3IgTmFOLgorICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRE9VQkxFX0VRKHZh
bHVlc18uaW5maW5pdHksIC12YWx1ZXNfLmluZmluaXR5KSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIi12YWx1ZXNfLmluZmluaXR5Iik7CisKKyAgLy8gVGhpcyBpcyBpbnRlcmVzdGluZyBh
cyB0aGUgcmVwcmVzZW50YXRpb25zIG9mIGluZmluaXR5XyBhbmQgbmFuMV8KKyAgLy8gYXJlIG9u
bHkgMSBETFAgYXBhcnQuCisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9ET1VCTEVf
RVEodmFsdWVzXy5pbmZpbml0eSwgdmFsdWVzXy5uYW4xKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgInZhbHVlc18ubmFuMSIpOworI2VuZGlmICAvLyAhR1RFU1RfT1NfU1lNQklBTgorfQor
CisvLyBUZXN0cyB0aGF0IGNvbXBhcmluZyB3aXRoIE5BTiBhbHdheXMgcmV0dXJucyBmYWxzZS4K
K1RFU1RfRihEb3VibGVUZXN0LCBOYU4pIHsKKyNpZiAhR1RFU1RfT1NfU1lNQklBTgorICAvLyBJ
biBDKytCdWlsZGVyLCBuYW1lcyB3aXRoaW4gbG9jYWwgY2xhc3NlcyAoc3VjaCBhcyB1c2VkIGJ5
CisgIC8vIEVYUEVDVF9GQVRBTF9GQUlMVVJFKSBjYW5ub3QgYmUgcmVzb2x2ZWQgYWdhaW5zdCBz
dGF0aWMgbWVtYmVycyBvZiB0aGUKKyAgLy8gc2NvcGluZyBjbGFzcy4gIFVzZSBhIHN0YXRpYyBs
b2NhbCBhbGlhcyBhcyBhIHdvcmthcm91bmQuCisgIC8vIFdlIHVzZSB0aGUgYXNzaWdubWVudCBz
eW50YXggc2luY2Ugc29tZSBjb21waWxlcnMsIGxpa2UgU3VuIFN0dWRpbywKKyAgLy8gZG9uJ3Qg
YWxsb3cgaW5pdGlhbGl6aW5nIHJlZmVyZW5jZXMgdXNpbmcgY29uc3RydWN0aW9uIHN5bnRheAor
ICAvLyAocGFyZW50aGVzZXMpLgorICBzdGF0aWMgY29uc3QgRG91YmxlVGVzdDo6VGVzdFZhbHVl
cyYgdiA9IHRoaXMtPnZhbHVlc187CisKKyAgLy8gTm9raWEncyBTVExwb3J0IGNyYXNoZXMgaWYg
d2UgdHJ5IHRvIG91dHB1dCBpbmZpbml0eSBvciBOYU4uCisgIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKEVYUEVDVF9ET1VCTEVfRVEodi5uYW4xLCB2Lm5hbjEpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAidi5uYW4xIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9ET1VC
TEVfRVEodi5uYW4xLCB2Lm5hbjIpLCAidi5uYW4yIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKEVYUEVDVF9ET1VCTEVfRVEoMS4wLCB2Lm5hbjEpLCAidi5uYW4xIik7CisgIEVYUEVDVF9G
QVRBTF9GQUlMVVJFKEFTU0VSVF9ET1VCTEVfRVEodi5uYW4xLCB2LmluZmluaXR5KSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgInYuaW5maW5pdHkiKTsKKyNlbmRpZiAgLy8gIUdURVNUX09TX1NZ
TUJJQU4KK30KKworLy8gVGVzdHMgdGhhdCAqX0RPVUJMRV9FUSBhcmUgcmVmbGV4aXZlLgorVEVT
VF9GKERvdWJsZVRlc3QsIFJlZmxleGl2ZSkgeworICBFWFBFQ1RfRE9VQkxFX0VRKDAuMCwgMC4w
KTsKKyAgRVhQRUNUX0RPVUJMRV9FUSgxLjAsIDEuMCk7CisjaWYgIUdURVNUX09TX1NZTUJJQU4K
KyAgLy8gTm9raWEncyBTVExwb3J0IGNyYXNoZXMgaWYgd2UgdHJ5IHRvIG91dHB1dCBpbmZpbml0
eSBvciBOYU4uCisgIEFTU0VSVF9ET1VCTEVfRVEodmFsdWVzXy5pbmZpbml0eSwgdmFsdWVzXy5p
bmZpbml0eSk7CisjZW5kaWYgIC8vICFHVEVTVF9PU19TWU1CSUFOCit9CisKKy8vIFRlc3RzIHRo
YXQgKl9ET1VCTEVfRVEgYXJlIGNvbW11dGF0aXZlLgorVEVTVF9GKERvdWJsZVRlc3QsIENvbW11
dGF0aXZlKSB7CisgIC8vIFdlIGFscmVhZHkgdGVzdGVkIEVYUEVDVF9ET1VCTEVfRVEoMS4wLCB2
YWx1ZXNfLmNsb3NlX3RvX29uZSkuCisgIEVYUEVDVF9ET1VCTEVfRVEodmFsdWVzXy5jbG9zZV90
b19vbmUsIDEuMCk7CisKKyAgLy8gV2UgYWxyZWFkeSB0ZXN0ZWQgRVhQRUNUX0RPVUJMRV9FUSgx
LjAsIHZhbHVlc18uZnVydGhlcl9mcm9tX29uZSkuCisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KEVYUEVDVF9ET1VCTEVfRVEodmFsdWVzXy5mdXJ0aGVyX2Zyb21fb25lLCAxLjApLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAiMS4wIik7Cit9CisKKy8vIFRlc3RzIEVYUEVDVF9ORUFSLgor
VEVTVF9GKERvdWJsZVRlc3QsIEVYUEVDVF9ORUFSKSB7CisgIEVYUEVDVF9ORUFSKC0xLjAsIC0x
LjEsIDAuMik7CisgIEVYUEVDVF9ORUFSKDIuMCwgMy4wLCAxLjApOworICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRShFWFBFQ1RfTkVBUigxLjAsIDEuNSwgMC4yNSksICAvLyBOT0xJTlQKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIlRoZSBkaWZmZXJlbmNlIGJldHdlZW4gMS4wIGFuZCAxLjUg
aXMgMC41LCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aGljaCBleGNlZWRzIDAuMjUi
KTsKKyAgLy8gVG8gd29yayBhcm91bmQgYSBidWcgaW4gZ2NjIDIuOTUuMCwgdGhlcmUgaXMgaW50
ZW50aW9uYWxseSBubworICAvLyBzcGFjZSBhZnRlciB0aGUgZmlyc3QgY29tbWEgaW4gdGhlIHBy
ZXZpb3VzIHN0YXRlbWVudC4KK30KKworLy8gVGVzdHMgQVNTRVJUX05FQVIuCitURVNUX0YoRG91
YmxlVGVzdCwgQVNTRVJUX05FQVIpIHsKKyAgQVNTRVJUX05FQVIoLTEuMCwgLTEuMSwgMC4yKTsK
KyAgQVNTRVJUX05FQVIoMi4wLCAzLjAsIDEuMCk7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFT
U0VSVF9ORUFSKDEuMCwgMS41LCAwLjI1KSwgIC8vIE5PTElOVAorICAgICAgICAgICAgICAgICAg
ICAgICAiVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiAxLjAgYW5kIDEuNSBpcyAwLjUsICIKKyAgICAg
ICAgICAgICAgICAgICAgICAgIndoaWNoIGV4Y2VlZHMgMC4yNSIpOworICAvLyBUbyB3b3JrIGFy
b3VuZCBhIGJ1ZyBpbiBnY2MgMi45NS4wLCB0aGVyZSBpcyBpbnRlbnRpb25hbGx5IG5vCisgIC8v
IHNwYWNlIGFmdGVyIHRoZSBmaXJzdCBjb21tYSBpbiB0aGUgcHJldmlvdXMgc3RhdGVtZW50Lgor
fQorCisvLyBUZXN0cyB0aGUgY2FzZXMgd2hlcmUgRG91YmxlTEUoKSBzaG91bGQgc3VjY2VlZC4K
K1RFU1RfRihEb3VibGVUZXN0LCBEb3VibGVMRVN1Y2NlZWRzKSB7CisgIEVYUEVDVF9QUkVEX0ZP
Uk1BVDIoRG91YmxlTEUsIDEuMCwgMi4wKTsgIC8vIFdoZW4gdmFsMSA8IHZhbDIsCisgIEFTU0VS
VF9QUkVEX0ZPUk1BVDIoRG91YmxlTEUsIDEuMCwgMS4wKTsgIC8vIHZhbDEgPT0gdmFsMiwKKwor
ICAvLyBvciB3aGVuIHZhbDEgaXMgZ3JlYXRlciB0aGFuLCBidXQgYWxtb3N0IGVxdWFscyB0bywg
dmFsMi4KKyAgRVhQRUNUX1BSRURfRk9STUFUMihEb3VibGVMRSwgdmFsdWVzXy5jbG9zZV90b19w
b3NpdGl2ZV96ZXJvLCAwLjApOworfQorCisvLyBUZXN0cyB0aGUgY2FzZXMgd2hlcmUgRG91Ymxl
TEUoKSBzaG91bGQgZmFpbC4KK1RFU1RfRihEb3VibGVUZXN0LCBEb3VibGVMRUZhaWxzKSB7Cisg
IC8vIFdoZW4gdmFsMSBpcyBncmVhdGVyIHRoYW4gdmFsMiBieSBhIGxhcmdlIG1hcmdpbiwKKyAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1BSRURfRk9STUFUMihEb3VibGVMRSwgMi4w
LCAxLjApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiKDIuMCkgPD0gKDEuMCkiKTsKKwor
ICAvLyBvciBieSBhIHNtYWxsIHlldCBub24tbmVnbGlnaWJsZSBtYXJnaW4sCisgIEVYUEVDVF9O
T05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoRG91
YmxlTEUsIHZhbHVlc18uZnVydGhlcl9mcm9tX29uZSwgMS4wKTsKKyAgfSwgIih2YWx1ZXNfLmZ1
cnRoZXJfZnJvbV9vbmUpIDw9ICgxLjApIik7CisKKyNpZiAhR1RFU1RfT1NfU1lNQklBTiAmJiAh
ZGVmaW5lZChfX0JPUkxBTkRDX18pCisgIC8vIE5va2lhJ3MgU1RMcG9ydCBjcmFzaGVzIGlmIHdl
IHRyeSB0byBvdXRwdXQgaW5maW5pdHkgb3IgTmFOLgorICAvLyBDKytCdWlsZGVyIGdpdmVzIGJh
ZCByZXN1bHRzIGZvciBvcmRlcmVkIGNvbXBhcmlzb25zIGludm9sdmluZyBOYU5zCisgIC8vIGR1
ZSB0byBjb21waWxlciBidWdzLgorICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJ
TlQKKyAgICBFWFBFQ1RfUFJFRF9GT1JNQVQyKERvdWJsZUxFLCB2YWx1ZXNfLm5hbjEsIHZhbHVl
c18uaW5maW5pdHkpOworICB9LCAiKHZhbHVlc18ubmFuMSkgPD0gKHZhbHVlc18uaW5maW5pdHkp
Iik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEVYUEVDVF9Q
UkVEX0ZPUk1BVDIoRG91YmxlTEUsIC12YWx1ZXNfLmluZmluaXR5LCB2YWx1ZXNfLm5hbjEpOwor
ICB9LCAiICgtdmFsdWVzXy5pbmZpbml0eSkgPD0gKHZhbHVlc18ubmFuMSkiKTsKKyAgRVhQRUNU
X0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAgQVNTRVJUX1BSRURfRk9STUFUMihEb3Vi
bGVMRSwgdmFsdWVzXy5uYW4xLCB2YWx1ZXNfLm5hbjEpOworICB9LCAiKHZhbHVlc18ubmFuMSkg
PD0gKHZhbHVlc18ubmFuMSkiKTsKKyNlbmRpZiAgLy8gIUdURVNUX09TX1NZTUJJQU4gJiYgIWRl
ZmluZWQoX19CT1JMQU5EQ19fKQorfQorCisKKy8vIFZlcmlmaWVzIHRoYXQgYSB0ZXN0IG9yIHRl
c3QgY2FzZSB3aG9zZSBuYW1lIHN0YXJ0cyB3aXRoIERJU0FCTEVEXyBpcworLy8gbm90IHJ1bi4K
KworLy8gQSB0ZXN0IHdob3NlIG5hbWUgc3RhcnRzIHdpdGggRElTQUJMRURfLgorLy8gU2hvdWxk
IG5vdCBydW4uCitURVNUKERpc2FibGVkVGVzdCwgRElTQUJMRURfVGVzdFNob3VsZE5vdFJ1bikg
eworICBGQUlMKCkgPDwgIlVuZXhwZWN0ZWQgZmFpbHVyZTogRGlzYWJsZWQgdGVzdCBzaG91bGQg
bm90IGJlIHJ1bi4iOworfQorCisvLyBBIHRlc3Qgd2hvc2UgbmFtZSBkb2VzIG5vdCBzdGFydCB3
aXRoIERJU0FCTEVEXy4KKy8vIFNob3VsZCBydW4uCitURVNUKERpc2FibGVkVGVzdCwgTm90RElT
QUJMRURfVGVzdFNob3VsZFJ1bikgeworICBFWFBFQ1RfRVEoMSwgMSk7Cit9CisKKy8vIEEgdGVz
dCBjYXNlIHdob3NlIG5hbWUgc3RhcnRzIHdpdGggRElTQUJMRURfLgorLy8gU2hvdWxkIG5vdCBy
dW4uCitURVNUKERJU0FCTEVEX1Rlc3RDYXNlLCBUZXN0U2hvdWxkTm90UnVuKSB7CisgIEZBSUwo
KSA8PCAiVW5leHBlY3RlZCBmYWlsdXJlOiBUZXN0IGluIGRpc2FibGVkIHRlc3QgY2FzZSBzaG91
bGQgbm90IGJlIHJ1bi4iOworfQorCisvLyBBIHRlc3QgY2FzZSBhbmQgdGVzdCB3aG9zZSBuYW1l
cyBzdGFydCB3aXRoIERJU0FCTEVEXy4KKy8vIFNob3VsZCBub3QgcnVuLgorVEVTVChESVNBQkxF
RF9UZXN0Q2FzZSwgRElTQUJMRURfVGVzdFNob3VsZE5vdFJ1bikgeworICBGQUlMKCkgPDwgIlVu
ZXhwZWN0ZWQgZmFpbHVyZTogVGVzdCBpbiBkaXNhYmxlZCB0ZXN0IGNhc2Ugc2hvdWxkIG5vdCBi
ZSBydW4uIjsKK30KKworLy8gQ2hlY2sgdGhhdCB3aGVuIGFsbCB0ZXN0cyBpbiBhIHRlc3QgY2Fz
ZSBhcmUgZGlzYWJsZWQsIFNldHVwVGVzdENhc2UoKSBhbmQKKy8vIFRlYXJEb3duVGVzdENhc2Uo
KSBhcmUgbm90IGNhbGxlZC4KK2NsYXNzIERpc2FibGVkVGVzdHNUZXN0IDogcHVibGljIFRlc3Qg
eworIHByb3RlY3RlZDoKKyAgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpIHsKKyAgICBGQUlM
KCkgPDwgIlVuZXhwZWN0ZWQgZmFpbHVyZTogQWxsIHRlc3RzIGRpc2FibGVkIGluIHRlc3QgY2Fz
ZS4gIgorICAgICAgICAgICAgICAiU2V0dXBUZXN0Q2FzZSgpIHNob3VsZCBub3QgYmUgY2FsbGVk
LiI7CisgIH0KKworICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeworICAgIEZBSUwo
KSA8PCAiVW5leHBlY3RlZCBmYWlsdXJlOiBBbGwgdGVzdHMgZGlzYWJsZWQgaW4gdGVzdCBjYXNl
LiAiCisgICAgICAgICAgICAgICJUZWFyRG93blRlc3RDYXNlKCkgc2hvdWxkIG5vdCBiZSBjYWxs
ZWQuIjsKKyAgfQorfTsKKworVEVTVF9GKERpc2FibGVkVGVzdHNUZXN0LCBESVNBQkxFRF9UZXN0
U2hvdWxkTm90UnVuXzEpIHsKKyAgRkFJTCgpIDw8ICJVbmV4cGVjdGVkIGZhaWx1cmU6IERpc2Fi
bGVkIHRlc3Qgc2hvdWxkIG5vdCBiZSBydW4uIjsKK30KKworVEVTVF9GKERpc2FibGVkVGVzdHNU
ZXN0LCBESVNBQkxFRF9UZXN0U2hvdWxkTm90UnVuXzIpIHsKKyAgRkFJTCgpIDw8ICJVbmV4cGVj
dGVkIGZhaWx1cmU6IERpc2FibGVkIHRlc3Qgc2hvdWxkIG5vdCBiZSBydW4uIjsKK30KKworLy8g
VGVzdHMgdGhhdCBkaXNhYmxlZCB0eXBlZCB0ZXN0cyBhcmVuJ3QgcnVuLgorCisjaWYgR1RFU1Rf
SEFTX1RZUEVEX1RFU1QKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBUeXBlZFRlc3Qg
OiBwdWJsaWMgVGVzdCB7Cit9OworCit0eXBlZGVmIHRlc3Rpbmc6OlR5cGVzPGludCwgZG91Ymxl
PiBOdW1lcmljVHlwZXM7CitUWVBFRF9URVNUX0NBU0UoVHlwZWRUZXN0LCBOdW1lcmljVHlwZXMp
OworCitUWVBFRF9URVNUKFR5cGVkVGVzdCwgRElTQUJMRURfU2hvdWxkTm90UnVuKSB7CisgIEZB
SUwoKSA8PCAiVW5leHBlY3RlZCBmYWlsdXJlOiBEaXNhYmxlZCB0eXBlZCB0ZXN0IHNob3VsZCBu
b3QgcnVuLiI7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgRElTQUJMRURfVHlw
ZWRUZXN0IDogcHVibGljIFRlc3QgeworfTsKKworVFlQRURfVEVTVF9DQVNFKERJU0FCTEVEX1R5
cGVkVGVzdCwgTnVtZXJpY1R5cGVzKTsKKworVFlQRURfVEVTVChESVNBQkxFRF9UeXBlZFRlc3Qs
IFNob3VsZE5vdFJ1bikgeworICBGQUlMKCkgPDwgIlVuZXhwZWN0ZWQgZmFpbHVyZTogRGlzYWJs
ZWQgdHlwZWQgdGVzdCBzaG91bGQgbm90IHJ1bi4iOworfQorCisjZW5kaWYgIC8vIEdURVNUX0hB
U19UWVBFRF9URVNUCisKKy8vIFRlc3RzIHRoYXQgZGlzYWJsZWQgdHlwZS1wYXJhbWV0ZXJpemVk
IHRlc3RzIGFyZW4ndCBydW4uCisKKyNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVHlwZWRUZXN0UCA6IHB1YmxpYyBUZXN0IHsKK307CisK
K1RZUEVEX1RFU1RfQ0FTRV9QKFR5cGVkVGVzdFApOworCitUWVBFRF9URVNUX1AoVHlwZWRUZXN0
UCwgRElTQUJMRURfU2hvdWxkTm90UnVuKSB7CisgIEZBSUwoKSA8PCAiVW5leHBlY3RlZCBmYWls
dXJlOiAiCisgICAgICAgICA8PCAiRGlzYWJsZWQgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3Qgc2hv
dWxkIG5vdCBydW4uIjsKK30KKworUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoVHlwZWRUZXN0
UCwgRElTQUJMRURfU2hvdWxkTm90UnVuKTsKKworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNF
X1AoTXksIFR5cGVkVGVzdFAsIE51bWVyaWNUeXBlcyk7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
PgorY2xhc3MgRElTQUJMRURfVHlwZWRUZXN0UCA6IHB1YmxpYyBUZXN0IHsKK307CisKK1RZUEVE
X1RFU1RfQ0FTRV9QKERJU0FCTEVEX1R5cGVkVGVzdFApOworCitUWVBFRF9URVNUX1AoRElTQUJM
RURfVHlwZWRUZXN0UCwgU2hvdWxkTm90UnVuKSB7CisgIEZBSUwoKSA8PCAiVW5leHBlY3RlZCBm
YWlsdXJlOiAiCisgICAgICAgICA8PCAiRGlzYWJsZWQgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3Qg
c2hvdWxkIG5vdCBydW4uIjsKK30KKworUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoRElTQUJM
RURfVHlwZWRUZXN0UCwgU2hvdWxkTm90UnVuKTsKKworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9D
QVNFX1AoTXksIERJU0FCTEVEX1R5cGVkVGVzdFAsIE51bWVyaWNUeXBlcyk7CisKKyNlbmRpZiAg
Ly8gR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAorCisvLyBUZXN0cyB0aGF0IGFzc2VydGlvbiBtYWNy
b3MgZXZhbHVhdGUgdGhlaXIgYXJndW1lbnRzIGV4YWN0bHkgb25jZS4KKworY2xhc3MgU2luZ2xl
RXZhbHVhdGlvblRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHVibGljOiAgLy8gTXVzdCBiZSBwdWJs
aWMgYW5kIG5vdCBwcm90ZWN0ZWQgZHVlIHRvIGEgYnVnIGluIGcrKyAzLjQuMi4KKyAgLy8gVGhp
cyBoZWxwZXIgZnVuY3Rpb24gaXMgbmVlZGVkIGJ5IHRoZSBGYWlsZWRBU1NFUlRfU1RSRVEgdGVz
dAorICAvLyBiZWxvdy4gIEl0J3MgcHVibGljIHRvIHdvcmsgYXJvdW5kIEMrK0J1aWxkZXIncyBi
dWcgd2l0aCBzY29waW5nIGxvY2FsCisgIC8vIGNsYXNzZXMuCisgIHN0YXRpYyB2b2lkIENvbXBh
cmVBbmRJbmNyZW1lbnRDaGFyUHRycygpIHsKKyAgICBBU1NFUlRfU1RSRVEocDFfKyssIHAyXysr
KTsKKyAgfQorCisgIC8vIFRoaXMgaGVscGVyIGZ1bmN0aW9uIGlzIG5lZWRlZCBieSB0aGUgRmFp
bGVkQVNTRVJUX05FIHRlc3QgYmVsb3cuICBJdCdzCisgIC8vIHB1YmxpYyB0byB3b3JrIGFyb3Vu
ZCBDKytCdWlsZGVyJ3MgYnVnIHdpdGggc2NvcGluZyBsb2NhbCBjbGFzc2VzLgorICBzdGF0aWMg
dm9pZCBDb21wYXJlQW5kSW5jcmVtZW50SW50cygpIHsKKyAgICBBU1NFUlRfTkUoYV8rKywgYl8r
Kyk7CisgIH0KKworIHByb3RlY3RlZDoKKyAgU2luZ2xlRXZhbHVhdGlvblRlc3QoKSB7CisgICAg
cDFfID0gczFfOworICAgIHAyXyA9IHMyXzsKKyAgICBhXyA9IDA7CisgICAgYl8gPSAwOworICB9
CisKKyAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHMxXzsKKyAgc3RhdGljIGNvbnN0IGNoYXIq
IGNvbnN0IHMyXzsKKyAgc3RhdGljIGNvbnN0IGNoYXIqIHAxXzsKKyAgc3RhdGljIGNvbnN0IGNo
YXIqIHAyXzsKKworICBzdGF0aWMgaW50IGFfOworICBzdGF0aWMgaW50IGJfOworfTsKKworY29u
c3QgY2hhciogY29uc3QgU2luZ2xlRXZhbHVhdGlvblRlc3Q6OnMxXyA9ICIwMTIzNCI7Citjb25z
dCBjaGFyKiBjb25zdCBTaW5nbGVFdmFsdWF0aW9uVGVzdDo6czJfID0gImFiY2RlIjsKK2NvbnN0
IGNoYXIqIFNpbmdsZUV2YWx1YXRpb25UZXN0OjpwMV87Citjb25zdCBjaGFyKiBTaW5nbGVFdmFs
dWF0aW9uVGVzdDo6cDJfOworaW50IFNpbmdsZUV2YWx1YXRpb25UZXN0OjphXzsKK2ludCBTaW5n
bGVFdmFsdWF0aW9uVGVzdDo6Yl87CisKKy8vIFRlc3RzIHRoYXQgd2hlbiBBU1NFUlRfU1RSRVEg
ZmFpbHMsIGl0IGV2YWx1YXRlcyBpdHMgYXJndW1lbnRzCisvLyBleGFjdGx5IG9uY2UuCitURVNU
X0YoU2luZ2xlRXZhbHVhdGlvblRlc3QsIEZhaWxlZEFTU0VSVF9TVFJFUSkgeworICBFWFBFQ1Rf
RkFUQUxfRkFJTFVSRShTaW5nbGVFdmFsdWF0aW9uVGVzdDo6Q29tcGFyZUFuZEluY3JlbWVudENo
YXJQdHJzKCksCisgICAgICAgICAgICAgICAgICAgICAgICJwMl8rKyIpOworICBFWFBFQ1RfRVEo
czFfICsgMSwgcDFfKTsKKyAgRVhQRUNUX0VRKHMyXyArIDEsIHAyXyk7Cit9CisKKy8vIFRlc3Rz
IHRoYXQgc3RyaW5nIGFzc2VydGlvbiBhcmd1bWVudHMgYXJlIGV2YWx1YXRlZCBleGFjdGx5IG9u
Y2UuCitURVNUX0YoU2luZ2xlRXZhbHVhdGlvblRlc3QsIEFTU0VSVF9TVFIpIHsKKyAgLy8gc3Vj
Y2Vzc2Z1bCBFWFBFQ1RfU1RSTkUKKyAgRVhQRUNUX1NUUk5FKHAxXysrLCBwMl8rKyk7CisgIEVY
UEVDVF9FUShzMV8gKyAxLCBwMV8pOworICBFWFBFQ1RfRVEoczJfICsgMSwgcDJfKTsKKworICAv
LyBmYWlsZWQgRVhQRUNUX1NUUkNBU0VFUQorICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBF
Q1RfU1RSQ0FTRUVRKHAxXysrLCBwMl8rKyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICJJ
Z25vcmluZyBjYXNlIik7CisgIEVYUEVDVF9FUShzMV8gKyAyLCBwMV8pOworICBFWFBFQ1RfRVEo
czJfICsgMiwgcDJfKTsKK30KKworLy8gVGVzdHMgdGhhdCB3aGVuIEFTU0VSVF9ORSBmYWlscywg
aXQgZXZhbHVhdGVzIGl0cyBhcmd1bWVudHMgZXhhY3RseQorLy8gb25jZS4KK1RFU1RfRihTaW5n
bGVFdmFsdWF0aW9uVGVzdCwgRmFpbGVkQVNTRVJUX05FKSB7CisgIEVYUEVDVF9GQVRBTF9GQUlM
VVJFKFNpbmdsZUV2YWx1YXRpb25UZXN0OjpDb21wYXJlQW5kSW5jcmVtZW50SW50cygpLAorICAg
ICAgICAgICAgICAgICAgICAgICAiKGFfKyspICE9IChiXysrKSIpOworICBFWFBFQ1RfRVEoMSwg
YV8pOworICBFWFBFQ1RfRVEoMSwgYl8pOworfQorCisvLyBUZXN0cyB0aGF0IGFzc2VydGlvbiBh
cmd1bWVudHMgYXJlIGV2YWx1YXRlZCBleGFjdGx5IG9uY2UuCitURVNUX0YoU2luZ2xlRXZhbHVh
dGlvblRlc3QsIE90aGVyQ2FzZXMpIHsKKyAgLy8gc3VjY2Vzc2Z1bCBFWFBFQ1RfVFJVRQorICBF
WFBFQ1RfVFJVRSgwID09IGFfKyspOyAgLy8gTk9MSU5UCisgIEVYUEVDVF9FUSgxLCBhXyk7CisK
KyAgLy8gZmFpbGVkIEVYUEVDVF9UUlVFCisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVD
VF9UUlVFKC0xID09IGFfKyspLCAiLTEgPT0gYV8rKyIpOworICBFWFBFQ1RfRVEoMiwgYV8pOwor
CisgIC8vIHN1Y2Nlc3NmdWwgRVhQRUNUX0dUCisgIEVYUEVDVF9HVChhXysrLCBiXysrKTsKKyAg
RVhQRUNUX0VRKDMsIGFfKTsKKyAgRVhQRUNUX0VRKDEsIGJfKTsKKworICAvLyBmYWlsZWQgRVhQ
RUNUX0xUCisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9MVChhXysrLCBiXysrKSwg
IihhXysrKSA8IChiXysrKSIpOworICBFWFBFQ1RfRVEoNCwgYV8pOworICBFWFBFQ1RfRVEoMiwg
Yl8pOworCisgIC8vIHN1Y2Nlc3NmdWwgQVNTRVJUX1RSVUUKKyAgQVNTRVJUX1RSVUUoMCA8IGFf
KyspOyAgLy8gTk9MSU5UCisgIEVYUEVDVF9FUSg1LCBhXyk7CisKKyAgLy8gc3VjY2Vzc2Z1bCBB
U1NFUlRfR1QKKyAgQVNTRVJUX0dUKGFfKyssIGJfKyspOworICBFWFBFQ1RfRVEoNiwgYV8pOwor
ICBFWFBFQ1RfRVEoMywgYl8pOworfQorCisjaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKKwordm9p
ZCBUaHJvd0FuSW50ZWdlcigpIHsKKyAgdGhyb3cgMTsKK30KKworLy8gVGVzdHMgdGhhdCBhc3Nl
cnRpb24gYXJndW1lbnRzIGFyZSBldmFsdWF0ZWQgZXhhY3RseSBvbmNlLgorVEVTVF9GKFNpbmds
ZUV2YWx1YXRpb25UZXN0LCBFeGNlcHRpb25UZXN0cykgeworICAvLyBzdWNjZXNzZnVsIEVYUEVD
VF9USFJPVworICBFWFBFQ1RfVEhST1coeyAgLy8gTk9MSU5UCisgICAgYV8rKzsKKyAgICBUaHJv
d0FuSW50ZWdlcigpOworICB9LCBpbnQpOworICBFWFBFQ1RfRVEoMSwgYV8pOworCisgIC8vIGZh
aWxlZCBFWFBFQ1RfVEhST1csIHRocm93cyBkaWZmZXJlbnQKKyAgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoRVhQRUNUX1RIUk9XKHsgIC8vIE5PTElOVAorICAgIGFfKys7CisgICAgVGhyb3dBbklu
dGVnZXIoKTsKKyAgfSwgYm9vbCksICJ0aHJvd3MgYSBkaWZmZXJlbnQgdHlwZSIpOworICBFWFBF
Q1RfRVEoMiwgYV8pOworCisgIC8vIGZhaWxlZCBFWFBFQ1RfVEhST1csIHRocm93cyBub3RoaW5n
CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9USFJPVyhhXysrLCBib29sKSwgInRo
cm93cyBub3RoaW5nIik7CisgIEVYUEVDVF9FUSgzLCBhXyk7CisKKyAgLy8gc3VjY2Vzc2Z1bCBF
WFBFQ1RfTk9fVEhST1cKKyAgRVhQRUNUX05PX1RIUk9XKGFfKyspOworICBFWFBFQ1RfRVEoNCwg
YV8pOworCisgIC8vIGZhaWxlZCBFWFBFQ1RfTk9fVEhST1cKKyAgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoRVhQRUNUX05PX1RIUk9XKHsgIC8vIE5PTElOVAorICAgIGFfKys7CisgICAgVGhyb3dB
bkludGVnZXIoKTsKKyAgfSksICJpdCB0aHJvd3MiKTsKKyAgRVhQRUNUX0VRKDUsIGFfKTsKKwor
ICAvLyBzdWNjZXNzZnVsIEVYUEVDVF9BTllfVEhST1cKKyAgRVhQRUNUX0FOWV9USFJPVyh7ICAv
LyBOT0xJTlQKKyAgICBhXysrOworICAgIFRocm93QW5JbnRlZ2VyKCk7CisgIH0pOworICBFWFBF
Q1RfRVEoNiwgYV8pOworCisgIC8vIGZhaWxlZCBFWFBFQ1RfQU5ZX1RIUk9XCisgIEVYUEVDVF9O
T05GQVRBTF9GQUlMVVJFKEVYUEVDVF9BTllfVEhST1coYV8rKyksICJpdCBkb2Vzbid0Iik7Cisg
IEVYUEVDVF9FUSg3LCBhXyk7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0VYQ0VQVElPTlMK
KworLy8gVGVzdHMge0FTU0VSVHxFWFBFQ1R9X05PX0ZBVEFMX0ZBSUxVUkUuCitjbGFzcyBOb0Zh
dGFsRmFpbHVyZVRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHJvdGVjdGVkOgorICB2b2lkIFN1Y2Nl
ZWRzKCkge30KKyAgdm9pZCBGYWlsc05vbkZhdGFsKCkgeworICAgIEFERF9GQUlMVVJFKCkgPDwg
InNvbWUgbm9uLWZhdGFsIGZhaWx1cmUiOworICB9CisgIHZvaWQgRmFpbHMoKSB7CisgICAgRkFJ
TCgpIDw8ICJzb21lIGZhdGFsIGZhaWx1cmUiOworICB9CisKKyAgdm9pZCBEb0Fzc2VydE5vRmF0
YWxGYWlsdXJlT25GYWlscygpIHsKKyAgICBBU1NFUlRfTk9fRkFUQUxfRkFJTFVSRShGYWlscygp
KTsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJzaG9sZCBub3QgcmVhY2ggaGVyZS4iOworICB9CisK
KyAgdm9pZCBEb0V4cGVjdE5vRmF0YWxGYWlsdXJlT25GYWlscygpIHsKKyAgICBFWFBFQ1RfTk9f
RkFUQUxfRkFJTFVSRShGYWlscygpKTsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJvdGhlciBmYWls
dXJlIjsKKyAgfQorfTsKKworVEVTVF9GKE5vRmF0YWxGYWlsdXJlVGVzdCwgTm9GYWlsdXJlKSB7
CisgIEVYUEVDVF9OT19GQVRBTF9GQUlMVVJFKFN1Y2NlZWRzKCkpOworICBBU1NFUlRfTk9fRkFU
QUxfRkFJTFVSRShTdWNjZWVkcygpKTsKK30KKworVEVTVF9GKE5vRmF0YWxGYWlsdXJlVGVzdCwg
Tm9uRmF0YWxJc05vRmFpbHVyZSkgeworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgKKyAgICAg
IEVYUEVDVF9OT19GQVRBTF9GQUlMVVJFKEZhaWxzTm9uRmF0YWwoKSksCisgICAgICAic29tZSBu
b24tZmF0YWwgZmFpbHVyZSIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgKKyAgICAgIEFT
U0VSVF9OT19GQVRBTF9GQUlMVVJFKEZhaWxzTm9uRmF0YWwoKSksCisgICAgICAic29tZSBub24t
ZmF0YWwgZmFpbHVyZSIpOworfQorCitURVNUX0YoTm9GYXRhbEZhaWx1cmVUZXN0LCBBc3NlcnRO
b0ZhdGFsRmFpbHVyZU9uRmF0YWxGYWlsdXJlKSB7CisgIFRlc3RQYXJ0UmVzdWx0QXJyYXkgZ3Rl
c3RfZmFpbHVyZXM7CisgIHsKKyAgICBTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlciBn
dGVzdF9yZXBvcnRlcigmZ3Rlc3RfZmFpbHVyZXMpOworICAgIERvQXNzZXJ0Tm9GYXRhbEZhaWx1
cmVPbkZhaWxzKCk7CisgIH0KKyAgQVNTRVJUX0VRKDIsIGd0ZXN0X2ZhaWx1cmVzLnNpemUoKSk7
CisgIEVYUEVDVF9FUShUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSwKKyAgICAgICAgICAg
IGd0ZXN0X2ZhaWx1cmVzLkdldFRlc3RQYXJ0UmVzdWx0KDApLnR5cGUoKSk7CisgIEVYUEVDVF9F
UShUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSwKKyAgICAgICAgICAgIGd0ZXN0X2ZhaWx1
cmVzLkdldFRlc3RQYXJ0UmVzdWx0KDEpLnR5cGUoKSk7CisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIo
dGVzdGluZzo6SXNTdWJzdHJpbmcsICJzb21lIGZhdGFsIGZhaWx1cmUiLAorICAgICAgICAgICAg
ICAgICAgICAgIGd0ZXN0X2ZhaWx1cmVzLkdldFRlc3RQYXJ0UmVzdWx0KDApLm1lc3NhZ2UoKSk7
CisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIodGVzdGluZzo6SXNTdWJzdHJpbmcsICJpdCBkb2VzIiwK
KyAgICAgICAgICAgICAgICAgICAgICBndGVzdF9mYWlsdXJlcy5HZXRUZXN0UGFydFJlc3VsdCgx
KS5tZXNzYWdlKCkpOworfQorCitURVNUX0YoTm9GYXRhbEZhaWx1cmVUZXN0LCBFeHBlY3ROb0Zh
dGFsRmFpbHVyZU9uRmF0YWxGYWlsdXJlKSB7CisgIFRlc3RQYXJ0UmVzdWx0QXJyYXkgZ3Rlc3Rf
ZmFpbHVyZXM7CisgIHsKKyAgICBTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlciBndGVz
dF9yZXBvcnRlcigmZ3Rlc3RfZmFpbHVyZXMpOworICAgIERvRXhwZWN0Tm9GYXRhbEZhaWx1cmVP
bkZhaWxzKCk7CisgIH0KKyAgQVNTRVJUX0VRKDMsIGd0ZXN0X2ZhaWx1cmVzLnNpemUoKSk7Cisg
IEVYUEVDVF9FUShUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSwKKyAgICAgICAgICAgIGd0
ZXN0X2ZhaWx1cmVzLkdldFRlc3RQYXJ0UmVzdWx0KDApLnR5cGUoKSk7CisgIEVYUEVDVF9FUShU
ZXN0UGFydFJlc3VsdDo6a05vbkZhdGFsRmFpbHVyZSwKKyAgICAgICAgICAgIGd0ZXN0X2ZhaWx1
cmVzLkdldFRlc3RQYXJ0UmVzdWx0KDEpLnR5cGUoKSk7CisgIEVYUEVDVF9FUShUZXN0UGFydFJl
c3VsdDo6a05vbkZhdGFsRmFpbHVyZSwKKyAgICAgICAgICAgIGd0ZXN0X2ZhaWx1cmVzLkdldFRl
c3RQYXJ0UmVzdWx0KDIpLnR5cGUoKSk7CisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIodGVzdGluZzo6
SXNTdWJzdHJpbmcsICJzb21lIGZhdGFsIGZhaWx1cmUiLAorICAgICAgICAgICAgICAgICAgICAg
IGd0ZXN0X2ZhaWx1cmVzLkdldFRlc3RQYXJ0UmVzdWx0KDApLm1lc3NhZ2UoKSk7CisgIEVYUEVD
VF9QUkVEX0ZPUk1BVDIodGVzdGluZzo6SXNTdWJzdHJpbmcsICJpdCBkb2VzIiwKKyAgICAgICAg
ICAgICAgICAgICAgICBndGVzdF9mYWlsdXJlcy5HZXRUZXN0UGFydFJlc3VsdCgxKS5tZXNzYWdl
KCkpOworICBFWFBFQ1RfUFJFRF9GT1JNQVQyKHRlc3Rpbmc6OklzU3Vic3RyaW5nLCAib3RoZXIg
ZmFpbHVyZSIsCisgICAgICAgICAgICAgICAgICAgICAgZ3Rlc3RfZmFpbHVyZXMuR2V0VGVzdFBh
cnRSZXN1bHQoMikubWVzc2FnZSgpKTsKK30KKworVEVTVF9GKE5vRmF0YWxGYWlsdXJlVGVzdCwg
TWVzc2FnZUlzU3RyZWFtYWJsZSkgeworICBUZXN0UGFydFJlc3VsdEFycmF5IGd0ZXN0X2ZhaWx1
cmVzOworICB7CisgICAgU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIgZ3Rlc3RfcmVw
b3J0ZXIoJmd0ZXN0X2ZhaWx1cmVzKTsKKyAgICBFWFBFQ1RfTk9fRkFUQUxfRkFJTFVSRShGQUlM
KCkgPDwgImZvbyIpIDw8ICJteSBtZXNzYWdlIjsKKyAgfQorICBBU1NFUlRfRVEoMiwgZ3Rlc3Rf
ZmFpbHVyZXMuc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKFRlc3RQYXJ0UmVzdWx0OjprTm9uRmF0YWxG
YWlsdXJlLAorICAgICAgICAgICAgZ3Rlc3RfZmFpbHVyZXMuR2V0VGVzdFBhcnRSZXN1bHQoMCku
dHlwZSgpKTsKKyAgRVhQRUNUX0VRKFRlc3RQYXJ0UmVzdWx0OjprTm9uRmF0YWxGYWlsdXJlLAor
ICAgICAgICAgICAgZ3Rlc3RfZmFpbHVyZXMuR2V0VGVzdFBhcnRSZXN1bHQoMSkudHlwZSgpKTsK
KyAgRVhQRUNUX1BSRURfRk9STUFUMih0ZXN0aW5nOjpJc1N1YnN0cmluZywgImZvbyIsCisgICAg
ICAgICAgICAgICAgICAgICAgZ3Rlc3RfZmFpbHVyZXMuR2V0VGVzdFBhcnRSZXN1bHQoMCkubWVz
c2FnZSgpKTsKKyAgRVhQRUNUX1BSRURfRk9STUFUMih0ZXN0aW5nOjpJc1N1YnN0cmluZywgIm15
IG1lc3NhZ2UiLAorICAgICAgICAgICAgICAgICAgICAgIGd0ZXN0X2ZhaWx1cmVzLkdldFRlc3RQ
YXJ0UmVzdWx0KDEpLm1lc3NhZ2UoKSk7Cit9CisKKy8vIFRlc3RzIG5vbi1zdHJpbmcgYXNzZXJ0
aW9ucy4KKworc3RkOjpzdHJpbmcgRWRpdHNUb1N0cmluZyhjb25zdCBzdGQ6OnZlY3RvcjxFZGl0
VHlwZT4mIGVkaXRzKSB7CisgIHN0ZDo6c3RyaW5nIG91dDsKKyAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBlZGl0cy5zaXplKCk7ICsraSkgeworICAgIHN0YXRpYyBjb25zdCBjaGFyIGtFZGl0c1td
ID0gIiArLS8iOworICAgIG91dC5hcHBlbmQoMSwga0VkaXRzW2VkaXRzW2ldXSk7CisgIH0KKyAg
cmV0dXJuIG91dDsKK30KKworc3RkOjp2ZWN0b3I8c2l6ZV90PiBDaGFyc1RvSW5kaWNlcyhjb25z
dCBzdGQ6OnN0cmluZyYgc3RyKSB7CisgIHN0ZDo6dmVjdG9yPHNpemVfdD4gb3V0OworICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHN0ci5zaXplKCk7ICsraSkgeworICAgIG91dC5wdXNoX2JhY2so
c3RyW2ldKTsKKyAgfQorICByZXR1cm4gb3V0OworfQorCitzdGQ6OnZlY3RvcjxzdGQ6OnN0cmlu
Zz4gQ2hhcnNUb0xpbmVzKGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIpIHsKKyAgc3RkOjp2ZWN0b3I8
c3RkOjpzdHJpbmc+IG91dDsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHIuc2l6ZSgpOyAr
K2kpIHsKKyAgICBvdXQucHVzaF9iYWNrKHN0ci5zdWJzdHIoaSwgMSkpOworICB9CisgIHJldHVy
biBvdXQ7Cit9CisKK1RFU1QoRWRpdERpc3RhbmNlLCBUZXN0Q2FzZXMpIHsKKyAgc3RydWN0IENh
c2UgeworICAgIGludCBsaW5lOworICAgIGNvbnN0IGNoYXIqIGxlZnQ7CisgICAgY29uc3QgY2hh
ciogcmlnaHQ7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWRfZWRpdHM7CisgICAgY29uc3QgY2hh
ciogZXhwZWN0ZWRfZGlmZjsKKyAgfTsKKyAgc3RhdGljIGNvbnN0IENhc2Uga0Nhc2VzW10gPSB7
CisgICAgICAvLyBObyBjaGFuZ2UuCisgICAgICB7X19MSU5FX18sICJBIiwgIkEiLCAiICIsICIi
fSwKKyAgICAgIHtfX0xJTkVfXywgIkFCQ0RFIiwgIkFCQ0RFIiwgIiAgICAgIiwgIiJ9LAorICAg
ICAgLy8gU2ltcGxlIGFkZHMuCisgICAgICB7X19MSU5FX18sICJYIiwgIlhBIiwgIiArIiwgIkBA
ICsxLDIgQEBcbiBYXG4rQVxuIn0sCisgICAgICB7X19MSU5FX18sICJYIiwgIlhBQkNEIiwgIiAr
KysrIiwgIkBAICsxLDUgQEBcbiBYXG4rQVxuK0JcbitDXG4rRFxuIn0sCisgICAgICAvLyBTaW1w
bGUgcmVtb3Zlcy4KKyAgICAgIHtfX0xJTkVfXywgIlhBIiwgIlgiLCAiIC0iLCAiQEAgLTEsMiBA
QFxuIFhcbi1BXG4ifSwKKyAgICAgIHtfX0xJTkVfXywgIlhBQkNEIiwgIlgiLCAiIC0tLS0iLCAi
QEAgLTEsNSBAQFxuIFhcbi1BXG4tQlxuLUNcbi1EXG4ifSwKKyAgICAgIC8vIFNpbXBsZSByZXBs
YWNlcy4KKyAgICAgIHtfX0xJTkVfXywgIkEiLCAiYSIsICIvIiwgIkBAIC0xLDEgKzEsMSBAQFxu
LUFcbithXG4ifSwKKyAgICAgIHtfX0xJTkVfXywgIkFCQ0QiLCAiYWJjZCIsICIvLy8vIiwKKyAg
ICAgICAiQEAgLTEsNCArMSw0IEBAXG4tQVxuLUJcbi1DXG4tRFxuK2FcbitiXG4rY1xuK2RcbiJ9
LAorICAgICAgLy8gUGF0aCBmaW5kaW5nLgorICAgICAge19fTElORV9fLCAiQUJDREVGR0giLCAi
QUJYRUdIMSIsICIgIC0vIC0gICsiLAorICAgICAgICJAQCAtMSw4ICsxLDcgQEBcbiBBXG4gQlxu
LUNcbi1EXG4rWFxuIEVcbi1GXG4gR1xuIEhcbisxXG4ifSwKKyAgICAgIHtfX0xJTkVfXywgIkFB
QUFCQ0NDQyIsICJBQkFCQ0RDREMiLCAiLSAvICAgKyAvICIsCisgICAgICAgIkBAIC0xLDkgKzEs
OSBAQFxuLUFcbiBBXG4tQVxuK0JcbiBBXG4gQlxuIENcbitEXG4gQ1xuLUNcbitEXG4gQ1xuIn0s
CisgICAgICB7X19MSU5FX18sICJBQkNERSIsICJCQ0RDRCIsICItICAgKy8iLAorICAgICAgICJA
QCAtMSw1ICsxLDUgQEBcbi1BXG4gQlxuIENcbiBEXG4tRVxuK0NcbitEXG4ifSwKKyAgICAgIHtf
X0xJTkVfXywgIkFCQ0RFRkdISUpLTCIsICJCQ0RDREVGR0pLTEpLIiwgIi0gKysgICAgIC0tICAg
KysiLAorICAgICAgICJAQCAtMSw0ICsxLDUgQEBcbi1BXG4gQlxuK0NcbitEXG4gQ1xuIERcbiIK
KyAgICAgICAiQEAgLTYsNyArNyw3IEBAXG4gRlxuIEdcbi1IXG4tSVxuIEpcbiBLXG4gTFxuK0pc
bitLXG4ifSwKKyAgICAgIHt9fTsKKyAgZm9yIChjb25zdCBDYXNlKiBjID0ga0Nhc2VzOyBjLT5s
ZWZ0OyArK2MpIHsKKyAgICBFWFBFQ1RfVFJVRShjLT5leHBlY3RlZF9lZGl0cyA9PQorICAgICAg
ICAgICAgICAgIEVkaXRzVG9TdHJpbmcoQ2FsY3VsYXRlT3B0aW1hbEVkaXRzKENoYXJzVG9JbmRp
Y2VzKGMtPmxlZnQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENoYXJzVG9JbmRpY2VzKGMtPnJpZ2h0KSkpKQorICAgICAgICA8PCAiTGVmdCA8
IiA8PCBjLT5sZWZ0IDw8ICI+IFJpZ2h0IDwiIDw8IGMtPnJpZ2h0IDw8ICI+IEVkaXRzIDwiCisg
ICAgICAgIDw8IEVkaXRzVG9TdHJpbmcoQ2FsY3VsYXRlT3B0aW1hbEVkaXRzKAorICAgICAgICAg
ICAgICAgQ2hhcnNUb0luZGljZXMoYy0+bGVmdCksIENoYXJzVG9JbmRpY2VzKGMtPnJpZ2h0KSkp
IDw8ICI+IjsKKyAgICBFWFBFQ1RfVFJVRShjLT5leHBlY3RlZF9kaWZmID09IENyZWF0ZVVuaWZp
ZWREaWZmKENoYXJzVG9MaW5lcyhjLT5sZWZ0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJzVG9MaW5lcyhjLT5yaWdodCkpKQorICAg
ICAgICA8PCAiTGVmdCA8IiA8PCBjLT5sZWZ0IDw8ICI+IFJpZ2h0IDwiIDw8IGMtPnJpZ2h0IDw8
ICI+IERpZmYgPCIKKyAgICAgICAgPDwgQ3JlYXRlVW5pZmllZERpZmYoQ2hhcnNUb0xpbmVzKGMt
PmxlZnQpLCBDaGFyc1RvTGluZXMoYy0+cmlnaHQpKQorICAgICAgICA8PCAiPiI7CisgIH0KK30K
KworLy8gVGVzdHMgRXFGYWlsdXJlKCksIHVzZWQgZm9yIGltcGxlbWVudGluZyAqRVEqIGFzc2Vy
dGlvbnMuCitURVNUKEFzc2VydGlvblRlc3QsIEVxRmFpbHVyZSkgeworICBjb25zdCBzdGQ6OnN0
cmluZyBmb29fdmFsKCI1IiksIGJhcl92YWwoIjYiKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgbXNn
MSgKKyAgICAgIEVxRmFpbHVyZSgiZm9vIiwgImJhciIsIGZvb192YWwsIGJhcl92YWwsIGZhbHNl
KQorICAgICAgLmZhaWx1cmVfbWVzc2FnZSgpKTsKKyAgRVhQRUNUX1NUUkVRKAorICAgICAgIiAg
ICAgIEV4cGVjdGVkOiBmb29cbiIKKyAgICAgICIgICAgICBXaGljaCBpczogNVxuIgorICAgICAg
IlRvIGJlIGVxdWFsIHRvOiBiYXJcbiIKKyAgICAgICIgICAgICBXaGljaCBpczogNiIsCisgICAg
ICBtc2cxLmNfc3RyKCkpOworCisgIGNvbnN0IHN0ZDo6c3RyaW5nIG1zZzIoCisgICAgICBFcUZh
aWx1cmUoImZvbyIsICI2IiwgZm9vX3ZhbCwgYmFyX3ZhbCwgZmFsc2UpCisgICAgICAuZmFpbHVy
ZV9tZXNzYWdlKCkpOworICBFWFBFQ1RfU1RSRVEoCisgICAgICAiICAgICAgRXhwZWN0ZWQ6IGZv
b1xuIgorICAgICAgIiAgICAgIFdoaWNoIGlzOiA1XG4iCisgICAgICAiVG8gYmUgZXF1YWwgdG86
IDYiLAorICAgICAgbXNnMi5jX3N0cigpKTsKKworICBjb25zdCBzdGQ6OnN0cmluZyBtc2czKAor
ICAgICAgRXFGYWlsdXJlKCI1IiwgImJhciIsIGZvb192YWwsIGJhcl92YWwsIGZhbHNlKQorICAg
ICAgLmZhaWx1cmVfbWVzc2FnZSgpKTsKKyAgRVhQRUNUX1NUUkVRKAorICAgICAgIiAgICAgIEV4
cGVjdGVkOiA1XG4iCisgICAgICAiVG8gYmUgZXF1YWwgdG86IGJhclxuIgorICAgICAgIiAgICAg
IFdoaWNoIGlzOiA2IiwKKyAgICAgIG1zZzMuY19zdHIoKSk7CisKKyAgY29uc3Qgc3RkOjpzdHJp
bmcgbXNnNCgKKyAgICAgIEVxRmFpbHVyZSgiNSIsICI2IiwgZm9vX3ZhbCwgYmFyX3ZhbCwgZmFs
c2UpLmZhaWx1cmVfbWVzc2FnZSgpKTsKKyAgRVhQRUNUX1NUUkVRKAorICAgICAgIiAgICAgIEV4
cGVjdGVkOiA1XG4iCisgICAgICAiVG8gYmUgZXF1YWwgdG86IDYiLAorICAgICAgbXNnNC5jX3N0
cigpKTsKKworICBjb25zdCBzdGQ6OnN0cmluZyBtc2c1KAorICAgICAgRXFGYWlsdXJlKCJmb28i
LCAiYmFyIiwKKyAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZygiXCJ4XCIiKSwgc3RkOjpzdHJp
bmcoIlwieVwiIiksCisgICAgICAgICAgICAgICAgdHJ1ZSkuZmFpbHVyZV9tZXNzYWdlKCkpOwor
ICBFWFBFQ1RfU1RSRVEoCisgICAgICAiICAgICAgRXhwZWN0ZWQ6IGZvb1xuIgorICAgICAgIiAg
ICAgIFdoaWNoIGlzOiBcInhcIlxuIgorICAgICAgIlRvIGJlIGVxdWFsIHRvOiBiYXJcbiIKKyAg
ICAgICIgICAgICBXaGljaCBpczogXCJ5XCJcbiIKKyAgICAgICJJZ25vcmluZyBjYXNlIiwKKyAg
ICAgIG1zZzUuY19zdHIoKSk7Cit9CisKK1RFU1QoQXNzZXJ0aW9uVGVzdCwgRXFGYWlsdXJlV2l0
aERpZmYpIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgbGVmdCgKKyAgICAgICIxXFxuMlhYWFxcbjNc
XG41XFxuNlxcbjdcXG44XFxuOVxcbjEwXFxuMTFcXG4xMlhYWFxcbjEzXFxuMTRcXG4xNSIpOwor
ICBjb25zdCBzdGQ6OnN0cmluZyByaWdodCgKKyAgICAgICIxXFxuMlxcbjNcXG40XFxuNVxcbjZc
XG43XFxuOFxcbjlcXG4xMVxcbjEyXFxuMTNcXG4xNCIpOworICBjb25zdCBzdGQ6OnN0cmluZyBt
c2cxKAorICAgICAgRXFGYWlsdXJlKCJsZWZ0IiwgInJpZ2h0IiwgbGVmdCwgcmlnaHQsIGZhbHNl
KS5mYWlsdXJlX21lc3NhZ2UoKSk7CisgIEVYUEVDVF9TVFJFUSgKKyAgICAgICIgICAgICBFeHBl
Y3RlZDogbGVmdFxuIgorICAgICAgIiAgICAgIFdoaWNoIGlzOiAiCisgICAgICAiMVxcbjJYWFhc
XG4zXFxuNVxcbjZcXG43XFxuOFxcbjlcXG4xMFxcbjExXFxuMTJYWFhcXG4xM1xcbjE0XFxuMTVc
biIKKyAgICAgICJUbyBiZSBlcXVhbCB0bzogcmlnaHRcbiIKKyAgICAgICIgICAgICBXaGljaCBp
czogMVxcbjJcXG4zXFxuNFxcbjVcXG42XFxuN1xcbjhcXG45XFxuMTFcXG4xMlxcbjEzXFxuMTRc
biIKKyAgICAgICJXaXRoIGRpZmY6XG5AQCAtMSw1ICsxLDYgQEBcbiAxXG4tMlhYWFxuKzJcbiAz
XG4rNFxuIDVcbiA2XG4iCisgICAgICAiQEAgLTcsOCArOCw2IEBAXG4gOFxuIDlcbi0xMFxuIDEx
XG4tMTJYWFhcbisxMlxuIDEzXG4gMTRcbi0xNVxuIiwKKyAgICAgIG1zZzEuY19zdHIoKSk7Cit9
CisKKy8vIFRlc3RzIEFwcGVuZFVzZXJNZXNzYWdlKCksIHVzZWQgZm9yIGltcGxlbWVudGluZyB0
aGUgKkVRKiBtYWNyb3MuCitURVNUKEFzc2VydGlvblRlc3QsIEFwcGVuZFVzZXJNZXNzYWdlKSB7
CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGZvbygiZm9vIik7CisKKyAgTWVzc2FnZSBtc2c7CisgIEVY
UEVDVF9TVFJFUSgiZm9vIiwKKyAgICAgICAgICAgICAgIEFwcGVuZFVzZXJNZXNzYWdlKGZvbywg
bXNnKS5jX3N0cigpKTsKKworICBtc2cgPDwgImJhciI7CisgIEVYUEVDVF9TVFJFUSgiZm9vXG5i
YXIiLAorICAgICAgICAgICAgICAgQXBwZW5kVXNlck1lc3NhZ2UoZm9vLCBtc2cpLmNfc3RyKCkp
OworfQorCisjaWZkZWYgX19CT1JMQU5EQ19fCisvLyBTaWxlbmNlcyB3YXJuaW5nczogIkNvbmRp
dGlvbiBpcyBhbHdheXMgdHJ1ZSIsICJVbnJlYWNoYWJsZSBjb2RlIgorIyBwcmFnbWEgb3B0aW9u
IHB1c2ggLXctY2NjIC13LXJjaAorI2VuZGlmCisKKy8vIFRlc3RzIEFTU0VSVF9UUlVFLgorVEVT
VChBc3NlcnRpb25UZXN0LCBBU1NFUlRfVFJVRSkgeworICBBU1NFUlRfVFJVRSgyID4gMSk7ICAv
LyBOT0xJTlQKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX1RSVUUoMiA8IDEpLAorICAg
ICAgICAgICAgICAgICAgICAgICAiMiA8IDEiKTsKK30KKworLy8gVGVzdHMgQVNTRVJUX1RSVUUo
cHJlZGljYXRlKSBmb3IgcHJlZGljYXRlcyByZXR1cm5pbmcgQXNzZXJ0aW9uUmVzdWx0LgorVEVT
VChBc3NlcnRpb25UZXN0LCBBc3NlcnRUcnVlV2l0aEFzc2VydGlvblJlc3VsdCkgeworICBBU1NF
UlRfVFJVRShSZXN1bHRJc0V2ZW4oMikpOworI2lmbmRlZiBfX0JPUkxBTkRDX18KKyAgLy8gSUNF
J3MgaW4gQysrQnVpbGRlci4KKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX1RSVUUoUmVz
dWx0SXNFdmVuKDMpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiBSZXN1bHRJ
c0V2ZW4oMylcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgQWN0dWFsOiBmYWxzZSAoMyBp
cyBvZGQpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZDogdHJ1ZSIpOworI2Vu
ZGlmCisgIEFTU0VSVF9UUlVFKFJlc3VsdElzRXZlbk5vRXhwbGFuYXRpb24oMikpOworICBFWFBF
Q1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfVFJVRShSZXN1bHRJc0V2ZW5Ob0V4cGxhbmF0aW9uKDMp
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiBSZXN1bHRJc0V2ZW5Ob0V4cGxh
bmF0aW9uKDMpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgIEFjdHVhbDogZmFsc2UgKDMg
aXMgb2RkKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQ6IHRydWUiKTsKK30K
KworLy8gVGVzdHMgQVNTRVJUX0ZBTFNFLgorVEVTVChBc3NlcnRpb25UZXN0LCBBU1NFUlRfRkFM
U0UpIHsKKyAgQVNTRVJUX0ZBTFNFKDIgPCAxKTsgIC8vIE5PTElOVAorICBFWFBFQ1RfRkFUQUxf
RkFJTFVSRShBU1NFUlRfRkFMU0UoMiA+IDEpLAorICAgICAgICAgICAgICAgICAgICAgICAiVmFs
dWUgb2Y6IDIgPiAxXG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgIEFjdHVhbDogdHJ1ZVxu
IgorICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQ6IGZhbHNlIik7Cit9CisKKy8vIFRl
c3RzIEFTU0VSVF9GQUxTRShwcmVkaWNhdGUpIGZvciBwcmVkaWNhdGVzIHJldHVybmluZyBBc3Nl
cnRpb25SZXN1bHQuCitURVNUKEFzc2VydGlvblRlc3QsIEFzc2VydEZhbHNlV2l0aEFzc2VydGlv
blJlc3VsdCkgeworICBBU1NFUlRfRkFMU0UoUmVzdWx0SXNFdmVuKDMpKTsKKyNpZm5kZWYgX19C
T1JMQU5EQ19fCisgIC8vIElDRSdzIGluIEMrK0J1aWxkZXIuCisgIEVYUEVDVF9GQVRBTF9GQUlM
VVJFKEFTU0VSVF9GQUxTRShSZXN1bHRJc0V2ZW4oMikpLAorICAgICAgICAgICAgICAgICAgICAg
ICAiVmFsdWUgb2Y6IFJlc3VsdElzRXZlbigyKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAi
ICBBY3R1YWw6IHRydWUgKDIgaXMgZXZlbilcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIkV4
cGVjdGVkOiBmYWxzZSIpOworI2VuZGlmCisgIEFTU0VSVF9GQUxTRShSZXN1bHRJc0V2ZW5Ob0V4
cGxhbmF0aW9uKDMpKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFJlc3Vs
dElzRXZlbk5vRXhwbGFuYXRpb24oMikpLAorICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUg
b2Y6IFJlc3VsdElzRXZlbk5vRXhwbGFuYXRpb24oMilcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgIiAgQWN0dWFsOiB0cnVlXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZDog
ZmFsc2UiKTsKK30KKworI2lmZGVmIF9fQk9STEFORENfXworLy8gUmVzdG9yZXMgd2FybmluZ3Mg
YWZ0ZXIgcHJldmlvdXMgIiNwcmFnbWEgb3B0aW9uIHB1c2giIHN1cHJlc3NlZCB0aGVtCisjIHBy
YWdtYSBvcHRpb24gcG9wCisjZW5kaWYKKworLy8gVGVzdHMgdXNpbmcgQVNTRVJUX0VRIG9uIGRv
dWJsZSB2YWx1ZXMuICBUaGUgcHVycG9zZSBpcyB0byBtYWtlCisvLyBzdXJlIHRoYXQgdGhlIHNw
ZWNpYWxpemF0aW9uIHdlIGRpZCBmb3IgaW50ZWdlciBhbmQgYW5vbnltb3VzIGVudW1zCisvLyBp
c24ndCB1c2VkIGZvciBkb3VibGUgYXJndW1lbnRzLgorVEVTVChFeHBlY3RUZXN0LCBBU1NFUlRf
RVFfRG91YmxlKSB7CisgIC8vIEEgc3VjY2Vzcy4KKyAgQVNTRVJUX0VRKDUuNiwgNS42KTsKKwor
ICAvLyBBIGZhaWx1cmUuCisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUSg1LjEsIDUu
MiksCisgICAgICAgICAgICAgICAgICAgICAgICI1LjEiKTsKK30KKworLy8gVGVzdHMgQVNTRVJU
X0VRLgorVEVTVChBc3NlcnRpb25UZXN0LCBBU1NFUlRfRVEpIHsKKyAgQVNTRVJUX0VRKDUsIDIg
KyAzKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0VRKDUsIDIqMyksCisgICAgICAg
ICAgICAgICAgICAgICAgICIgICAgICBFeHBlY3RlZDogNVxuIgorICAgICAgICAgICAgICAgICAg
ICAgICAiVG8gYmUgZXF1YWwgdG86IDIqM1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAg
ICAgV2hpY2ggaXM6IDYiKTsKK30KKworLy8gVGVzdHMgQVNTRVJUX0VRKE5VTEwsIHBvaW50ZXIp
LgorI2lmIEdURVNUX0NBTl9DT01QQVJFX05VTEwKK1RFU1QoQXNzZXJ0aW9uVGVzdCwgQVNTRVJU
X0VRX05VTEwpIHsKKyAgLy8gQSBzdWNjZXNzLgorICBjb25zdCBjaGFyKiBwID0gTlVMTDsKKyAg
Ly8gU29tZSBvbGRlciBHQ0MgdmVyc2lvbnMgbWF5IGlzc3VlIGEgc3B1cmlvdXMgd2FyaW5nIGlu
IHRoaXMgb3IgdGhlIG5leHQKKyAgLy8gYXNzZXJ0aW9uIHN0YXRlbWVudC4gVGhpcyB3YXJuaW5n
IHNob3VsZCBub3QgYmUgc3VwcHJlc3NlZCB3aXRoCisgIC8vIHN0YXRpY19jYXN0IHNpbmNlIHRo
ZSB0ZXN0IHZlcmlmaWVzIHRoZSBhYmlsaXR5IHRvIHVzZSBiYXJlIE5VTEwgYXMgdGhlCisgIC8v
IGV4cGVjdGVkIHBhcmFtZXRlciB0byB0aGUgbWFjcm8uCisgIEFTU0VSVF9FUShOVUxMLCBwKTsK
KworICAvLyBBIGZhaWx1cmUuCisgIHN0YXRpYyBpbnQgbiA9IDA7CisgIEVYUEVDVF9GQVRBTF9G
QUlMVVJFKEFTU0VSVF9FUShOVUxMLCAmbiksCisgICAgICAgICAgICAgICAgICAgICAgICJUbyBi
ZSBlcXVhbCB0bzogJm5cbiIpOworfQorI2VuZGlmICAvLyBHVEVTVF9DQU5fQ09NUEFSRV9OVUxM
CisKKy8vIFRlc3RzIEFTU0VSVF9FUSgwLCBub25fcG9pbnRlcikuICBTaW5jZSB0aGUgbGl0ZXJh
bCAwIGNhbiBiZQorLy8gdHJlYXRlZCBhcyBhIG51bGwgcG9pbnRlciBieSB0aGUgY29tcGlsZXIs
IHdlIG5lZWQgdG8gbWFrZSBzdXJlCisvLyB0aGF0IEFTU0VSVF9FUSgwLCBub25fcG9pbnRlcikg
aXNuJ3QgaW50ZXJwcmV0ZWQgYnkgR29vZ2xlIFRlc3QgYXMKKy8vIEFTU0VSVF9FUShzdGF0aWNf
Y2FzdDx2b2lkKj4oTlVMTCksIG5vbl9wb2ludGVyKS4KK1RFU1QoRXhwZWN0VGVzdCwgQVNTRVJU
X0VRXzApIHsKKyAgaW50IG4gPSAwOworCisgIC8vIEEgc3VjY2Vzcy4KKyAgQVNTRVJUX0VRKDAs
IG4pOworCisgIC8vIEEgZmFpbHVyZS4KKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0VR
KDAsIDUuNiksCisgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZDogMCIpOworfQorCisv
LyBUZXN0cyBBU1NFUlRfTkUuCitURVNUKEFzc2VydGlvblRlc3QsIEFTU0VSVF9ORSkgeworICBB
U1NFUlRfTkUoNiwgNyk7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9ORSgnYScsICdh
JyksCisgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZDogKCdhJykgIT0gKCdhJyksICIK
KyAgICAgICAgICAgICAgICAgICAgICAgImFjdHVhbDogJ2EnICg5NywgMHg2MSkgdnMgJ2EnICg5
NywgMHg2MSkiKTsKK30KKworLy8gVGVzdHMgQVNTRVJUX0xFLgorVEVTVChBc3NlcnRpb25UZXN0
LCBBU1NFUlRfTEUpIHsKKyAgQVNTRVJUX0xFKDIsIDMpOworICBBU1NFUlRfTEUoMiwgMik7Cisg
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9MRSgyLCAwKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIkV4cGVjdGVkOiAoMikgPD0gKDApLCBhY3R1YWw6IDIgdnMgMCIpOworfQorCisvLyBU
ZXN0cyBBU1NFUlRfTFQuCitURVNUKEFzc2VydGlvblRlc3QsIEFTU0VSVF9MVCkgeworICBBU1NF
UlRfTFQoMiwgMyk7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9MVCgyLCAyKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkOiAoMikgPCAoMiksIGFjdHVhbDogMiB2cyAy
Iik7Cit9CisKKy8vIFRlc3RzIEFTU0VSVF9HRS4KK1RFU1QoQXNzZXJ0aW9uVGVzdCwgQVNTRVJU
X0dFKSB7CisgIEFTU0VSVF9HRSgyLCAxKTsKKyAgQVNTRVJUX0dFKDIsIDIpOworICBFWFBFQ1Rf
RkFUQUxfRkFJTFVSRShBU1NFUlRfR0UoMiwgMyksCisgICAgICAgICAgICAgICAgICAgICAgICJF
eHBlY3RlZDogKDIpID49ICgzKSwgYWN0dWFsOiAyIHZzIDMiKTsKK30KKworLy8gVGVzdHMgQVNT
RVJUX0dULgorVEVTVChBc3NlcnRpb25UZXN0LCBBU1NFUlRfR1QpIHsKKyAgQVNTRVJUX0dUKDIs
IDEpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfR1QoMiwgMiksCisgICAgICAgICAg
ICAgICAgICAgICAgICJFeHBlY3RlZDogKDIpID4gKDIpLCBhY3R1YWw6IDIgdnMgMiIpOworfQor
CisjaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKKwordm9pZCBUaHJvd05vdGhpbmcoKSB7fQorCisv
LyBUZXN0cyBBU1NFUlRfVEhST1cuCitURVNUKEFzc2VydGlvblRlc3QsIEFTU0VSVF9USFJPVykg
eworICBBU1NFUlRfVEhST1coVGhyb3dBbkludGVnZXIoKSwgaW50KTsKKworIyBpZm5kZWYgX19C
T1JMQU5EQ19fCisKKyAgLy8gSUNFJ3MgaW4gQysrQnVpbGRlciAyMDA3IGFuZCAyMDA5LgorICBF
WFBFQ1RfRkFUQUxfRkFJTFVSRSgKKyAgICAgIEFTU0VSVF9USFJPVyhUaHJvd0FuSW50ZWdlcigp
LCBib29sKSwKKyAgICAgICJFeHBlY3RlZDogVGhyb3dBbkludGVnZXIoKSB0aHJvd3MgYW4gZXhj
ZXB0aW9uIG9mIHR5cGUgYm9vbC5cbiIKKyAgICAgICIgIEFjdHVhbDogaXQgdGhyb3dzIGEgZGlm
ZmVyZW50IHR5cGUuIik7CisjIGVuZGlmCisKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoCisgICAg
ICBBU1NFUlRfVEhST1coVGhyb3dOb3RoaW5nKCksIGJvb2wpLAorICAgICAgIkV4cGVjdGVkOiBU
aHJvd05vdGhpbmcoKSB0aHJvd3MgYW4gZXhjZXB0aW9uIG9mIHR5cGUgYm9vbC5cbiIKKyAgICAg
ICIgIEFjdHVhbDogaXQgdGhyb3dzIG5vdGhpbmcuIik7Cit9CisKKy8vIFRlc3RzIEFTU0VSVF9O
T19USFJPVy4KK1RFU1QoQXNzZXJ0aW9uVGVzdCwgQVNTRVJUX05PX1RIUk9XKSB7CisgIEFTU0VS
VF9OT19USFJPVyhUaHJvd05vdGhpbmcoKSk7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VS
VF9OT19USFJPVyhUaHJvd0FuSW50ZWdlcigpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIkV4
cGVjdGVkOiBUaHJvd0FuSW50ZWdlcigpIGRvZXNuJ3QgdGhyb3cgYW4gZXhjZXB0aW9uLiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgIlxuICBBY3R1YWw6IGl0IHRocm93cy4iKTsKK30KKworLy8g
VGVzdHMgQVNTRVJUX0FOWV9USFJPVy4KK1RFU1QoQXNzZXJ0aW9uVGVzdCwgQVNTRVJUX0FOWV9U
SFJPVykgeworICBBU1NFUlRfQU5ZX1RIUk9XKFRocm93QW5JbnRlZ2VyKCkpOworICBFWFBFQ1Rf
RkFUQUxfRkFJTFVSRSgKKyAgICAgIEFTU0VSVF9BTllfVEhST1coVGhyb3dOb3RoaW5nKCkpLAor
ICAgICAgIkV4cGVjdGVkOiBUaHJvd05vdGhpbmcoKSB0aHJvd3MgYW4gZXhjZXB0aW9uLlxuIgor
ICAgICAgIiAgQWN0dWFsOiBpdCBkb2Vzbid0LiIpOworfQorCisjZW5kaWYgIC8vIEdURVNUX0hB
U19FWENFUFRJT05TCisKKy8vIE1ha2VzIHN1cmUgd2UgZGVhbCB3aXRoIHRoZSBwcmVjZWRlbmNl
IG9mIDw8LiAgVGhpcyB0ZXN0IHNob3VsZAorLy8gY29tcGlsZS4KK1RFU1QoQXNzZXJ0aW9uVGVz
dCwgQXNzZXJ0UHJlY2VkZW5jZSkgeworICBBU1NFUlRfRVEoMSA8IDIsIHRydWUpOworICBib29s
IGZhbHNlX3ZhbHVlID0gZmFsc2U7CisgIEFTU0VSVF9FUSh0cnVlICYmIGZhbHNlX3ZhbHVlLCBm
YWxzZSk7Cit9CisKKy8vIEEgc3Vicm91dGluZSB1c2VkIGJ5IHRoZSBmb2xsb3dpbmcgdGVzdC4K
K3ZvaWQgVGVzdEVxMShpbnQgeCkgeworICBBU1NFUlRfRVEoMSwgeCk7Cit9CisKKy8vIFRlc3Rz
IGNhbGxpbmcgYSB0ZXN0IHN1YnJvdXRpbmUgdGhhdCdzIG5vdCBwYXJ0IG9mIGEgZml4dHVyZS4K
K1RFU1QoQXNzZXJ0aW9uVGVzdCwgTm9uRml4dHVyZVN1YnJvdXRpbmUpIHsKKyAgRVhQRUNUX0ZB
VEFMX0ZBSUxVUkUoVGVzdEVxMSgyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIlRvIGJlIGVx
dWFsIHRvOiB4Iik7Cit9CisKKy8vIEFuIHVuY29weWFibGUgY2xhc3MuCitjbGFzcyBVbmNvcHlh
YmxlIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IFVuY29weWFibGUoaW50IGFfdmFsdWUpIDogdmFs
dWVfKGFfdmFsdWUpIHt9CisKKyAgaW50IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gdmFsdWVfOyB9
CisgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVbmNvcHlhYmxlJiByaHMpIGNvbnN0IHsKKyAgICBy
ZXR1cm4gdmFsdWUoKSA9PSByaHMudmFsdWUoKTsKKyAgfQorIHByaXZhdGU6CisgIC8vIFRoaXMg
Y29uc3RydWN0b3IgZGVsaWJlcmF0ZWx5IGhhcyBubyBpbXBsZW1lbnRhdGlvbiwgYXMgd2UgZG9u
J3QKKyAgLy8gd2FudCB0aGlzIGNsYXNzIHRvIGJlIGNvcHlhYmxlLgorICBVbmNvcHlhYmxlKGNv
bnN0IFVuY29weWFibGUmKTsgIC8vIE5PTElOVAorCisgIGludCB2YWx1ZV87Cit9OworCis6OnN0
ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PCg6OnN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IFVuY29weWFi
bGUmIHZhbHVlKSB7CisgIHJldHVybiBvcyA8PCB2YWx1ZS52YWx1ZSgpOworfQorCisKK2Jvb2wg
SXNQb3NpdGl2ZVVuY29weWFibGUoY29uc3QgVW5jb3B5YWJsZSYgeCkgeworICByZXR1cm4geC52
YWx1ZSgpID4gMDsKK30KKworLy8gQSBzdWJyb3V0aW5lIHVzZWQgYnkgdGhlIGZvbGxvd2luZyB0
ZXN0Lgordm9pZCBUZXN0QXNzZXJ0Tm9uUG9zaXRpdmUoKSB7CisgIFVuY29weWFibGUgeSgtMSk7
CisgIEFTU0VSVF9QUkVEMShJc1Bvc2l0aXZlVW5jb3B5YWJsZSwgeSk7Cit9CisvLyBBIHN1YnJv
dXRpbmUgdXNlZCBieSB0aGUgZm9sbG93aW5nIHRlc3QuCit2b2lkIFRlc3RBc3NlcnRFcXVhbHNV
bmNvcHlhYmxlKCkgeworICBVbmNvcHlhYmxlIHgoNSk7CisgIFVuY29weWFibGUgeSgtMSk7Cisg
IEFTU0VSVF9FUSh4LCB5KTsKK30KKworLy8gVGVzdHMgdGhhdCB1bmNvcHlhYmxlIG9iamVjdHMg
Y2FuIGJlIHVzZWQgaW4gYXNzZXJ0aW9ucy4KK1RFU1QoQXNzZXJ0aW9uVGVzdCwgQXNzZXJ0V29y
a3NXaXRoVW5jb3B5YWJsZU9iamVjdCkgeworICBVbmNvcHlhYmxlIHgoNSk7CisgIEFTU0VSVF9Q
UkVEMShJc1Bvc2l0aXZlVW5jb3B5YWJsZSwgeCk7CisgIEFTU0VSVF9FUSh4LCB4KTsKKyAgRVhQ
RUNUX0ZBVEFMX0ZBSUxVUkUoVGVzdEFzc2VydE5vblBvc2l0aXZlKCksCisgICAgIklzUG9zaXRp
dmVVbmNvcHlhYmxlKHkpIGV2YWx1YXRlcyB0byBmYWxzZSwgd2hlcmVcbnkgZXZhbHVhdGVzIHRv
IC0xIik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKFRlc3RBc3NlcnRFcXVhbHNVbmNvcHlhYmxl
KCksCisgICAgIkV4cGVjdGVkOiB4XG4gICAgICBXaGljaCBpczogNVxuVG8gYmUgZXF1YWwgdG86
IHlcbiAgICAgIFdoaWNoIGlzOiAtMSIpOworfQorCisvLyBUZXN0cyB0aGF0IHVuY29weWFibGUg
b2JqZWN0cyBjYW4gYmUgdXNlZCBpbiBleHBlY3RzLgorVEVTVChBc3NlcnRpb25UZXN0LCBFeHBl
Y3RXb3Jrc1dpdGhVbmNvcHlhYmxlT2JqZWN0KSB7CisgIFVuY29weWFibGUgeCg1KTsKKyAgRVhQ
RUNUX1BSRUQxKElzUG9zaXRpdmVVbmNvcHlhYmxlLCB4KTsKKyAgVW5jb3B5YWJsZSB5KC0xKTsK
KyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1BSRUQxKElzUG9zaXRpdmVVbmNvcHlh
YmxlLCB5KSwKKyAgICAiSXNQb3NpdGl2ZVVuY29weWFibGUoeSkgZXZhbHVhdGVzIHRvIGZhbHNl
LCB3aGVyZVxueSBldmFsdWF0ZXMgdG8gLTEiKTsKKyAgRVhQRUNUX0VRKHgsIHgpOworICBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoeCwgeSksCisgICAgIkV4cGVjdGVkOiB4XG4g
ICAgICBXaGljaCBpczogNVxuVG8gYmUgZXF1YWwgdG86IHlcbiAgICAgIFdoaWNoIGlzOiAtMSIp
OworfQorCitlbnVtIE5hbWVkRW51bSB7CisgIGtFMSA9IDAsCisgIGtFMiA9IDEKK307CisKK1RF
U1QoQXNzZXJ0aW9uVGVzdCwgTmFtZWRFbnVtKSB7CisgIEVYUEVDVF9FUShrRTEsIGtFMSk7Cisg
IEVYUEVDVF9MVChrRTEsIGtFMik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9F
UShrRTEsIGtFMiksICJXaGljaCBpczogMCIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShF
WFBFQ1RfRVEoa0UxLCBrRTIpLCAiV2hpY2ggaXM6IDEiKTsKK30KKworLy8gVGhlIHZlcnNpb24g
b2YgZ2NjIHVzZWQgaW4gWENvZGUgMi4yIGhhcyBhIGJ1ZyBhbmQgZG9lc24ndCBhbGxvdworLy8g
YW5vbnltb3VzIGVudW1zIGluIGFzc2VydGlvbnMuICBUaGVyZWZvcmUgdGhlIGZvbGxvd2luZyB0
ZXN0IGlzIG5vdAorLy8gZG9uZSBvbiBNYWMuCisvLyBTdW4gU3R1ZGlvIGFuZCBIUCBhQ0MgYWxz
byByZWplY3QgdGhpcyBjb2RlLgorI2lmICFHVEVTVF9PU19NQUMgJiYgIWRlZmluZWQoX19TVU5Q
Uk9fQ0MpICYmICFkZWZpbmVkKF9fSFBfYUNDKQorCisvLyBUZXN0cyB1c2luZyBhc3NlcnRpb25z
IHdpdGggYW5vbnltb3VzIGVudW1zLgorZW51bSB7CisgIGtDYXNlQSA9IC0xLAorCisjIGlmIEdU
RVNUX09TX0xJTlVYCisKKyAgLy8gV2Ugd2FudCB0byB0ZXN0IHRoZSBjYXNlIHdoZXJlIHRoZSBz
aXplIG9mIHRoZSBhbm9ueW1vdXMgZW51bSBpcworICAvLyBsYXJnZXIgdGhhbiBzaXplb2YoaW50
KSwgdG8gbWFrZSBzdXJlIG91ciBpbXBsZW1lbnRhdGlvbiBvZiB0aGUKKyAgLy8gYXNzZXJ0aW9u
cyBkb2Vzbid0IHRydW5jYXRlIHRoZSBlbnVtcy4gIEhvd2V2ZXIsIE1TVkMKKyAgLy8gKGluY29y
cmVjdGx5KSBkb2Vzbid0IGFsbG93IGFuIGVudW0gdmFsdWUgdG8gZXhjZWVkIHRoZSByYW5nZSBv
ZgorICAvLyBhbiBpbnQsIHNvIHRoaXMgaGFzIHRvIGJlIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQu
CisgIC8vCisgIC8vIE9uIExpbnV4LCBrQ2FzZUIgYW5kIGtDYXNlQSBoYXZlIHRoZSBzYW1lIHZh
bHVlIHdoZW4gdHJ1bmNhdGVkIHRvCisgIC8vIGludCBzaXplLiAgV2Ugd2FudCB0byB0ZXN0IHdo
ZXRoZXIgdGhpcyB3aWxsIGNvbmZ1c2UgdGhlCisgIC8vIGFzc2VydGlvbnMuCisgIGtDYXNlQiA9
IHRlc3Rpbmc6OmludGVybmFsOjprTWF4QmlnZ2VzdEludCwKKworIyBlbHNlCisKKyAga0Nhc2VC
ID0gSU5UX01BWCwKKworIyBlbmRpZiAgLy8gR1RFU1RfT1NfTElOVVgKKworICBrQ2FzZUMgPSA0
MgorfTsKKworVEVTVChBc3NlcnRpb25UZXN0LCBBbm9ueW1vdXNFbnVtKSB7CisjIGlmIEdURVNU
X09TX0xJTlVYCisKKyAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGludD4oa0Nhc2VBKSwgc3RhdGlj
X2Nhc3Q8aW50PihrQ2FzZUIpKTsKKworIyBlbmRpZiAgLy8gR1RFU1RfT1NfTElOVVgKKworICBF
WFBFQ1RfRVEoa0Nhc2VBLCBrQ2FzZUEpOworICBFWFBFQ1RfTkUoa0Nhc2VBLCBrQ2FzZUIpOwor
ICBFWFBFQ1RfTFQoa0Nhc2VBLCBrQ2FzZUIpOworICBFWFBFQ1RfTEUoa0Nhc2VBLCBrQ2FzZUIp
OworICBFWFBFQ1RfR1Qoa0Nhc2VCLCBrQ2FzZUEpOworICBFWFBFQ1RfR0Uoa0Nhc2VBLCBrQ2Fz
ZUEpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfR0Uoa0Nhc2VBLCBrQ2FzZUIp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAiKGtDYXNlQSkgPj0gKGtDYXNlQikiKTsKKyAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0dFKGtDYXNlQSwga0Nhc2VDKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIi0xIHZzIDQyIik7CisKKyAgQVNTRVJUX0VRKGtDYXNlQSwg
a0Nhc2VBKTsKKyAgQVNTRVJUX05FKGtDYXNlQSwga0Nhc2VCKTsKKyAgQVNTRVJUX0xUKGtDYXNl
QSwga0Nhc2VCKTsKKyAgQVNTRVJUX0xFKGtDYXNlQSwga0Nhc2VCKTsKKyAgQVNTRVJUX0dUKGtD
YXNlQiwga0Nhc2VBKTsKKyAgQVNTRVJUX0dFKGtDYXNlQSwga0Nhc2VBKTsKKworIyBpZm5kZWYg
X19CT1JMQU5EQ19fCisKKyAgLy8gSUNFJ3MgaW4gQysrQnVpbGRlci4KKyAgRVhQRUNUX0ZBVEFM
X0ZBSUxVUkUoQVNTRVJUX0VRKGtDYXNlQSwga0Nhc2VCKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIlRvIGJlIGVxdWFsIHRvOiBrQ2FzZUIiKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNT
RVJUX0VRKGtDYXNlQSwga0Nhc2VDKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIldoaWNoIGlz
OiA0MiIpOworIyBlbmRpZgorCisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUShrQ2Fz
ZUEsIGtDYXNlQyksCisgICAgICAgICAgICAgICAgICAgICAgICJXaGljaCBpczogLTEiKTsKK30K
KworI2VuZGlmICAvLyAhR1RFU1RfT1NfTUFDICYmICFkZWZpbmVkKF9fU1VOUFJPX0NDKQorCisj
aWYgR1RFU1RfT1NfV0lORE9XUworCitzdGF0aWMgSFJFU1VMVCBVbmV4cGVjdGVkSFJFU1VMVEZh
aWx1cmUoKSB7CisgIHJldHVybiBFX1VORVhQRUNURUQ7Cit9CisKK3N0YXRpYyBIUkVTVUxUIE9r
SFJFU1VMVFN1Y2Nlc3MoKSB7CisgIHJldHVybiBTX09LOworfQorCitzdGF0aWMgSFJFU1VMVCBG
YWxzZUhSRVNVTFRTdWNjZXNzKCkgeworICByZXR1cm4gU19GQUxTRTsKK30KKworLy8gSFJFU1VM
VCBhc3NlcnRpb24gdGVzdHMgdGVzdCBib3RoIHplcm8gYW5kIG5vbi16ZXJvCisvLyBzdWNjZXNz
IGNvZGVzIGFzIHdlbGwgYXMgZmFpbHVyZSBtZXNzYWdlIGZvciBlYWNoLgorLy8KKy8vIFdpbmRv
d3MgQ0UgZG9lc24ndCBzdXBwb3J0IG1lc3NhZ2UgdGV4dHMuCitURVNUKEhSRVNVTFRBc3NlcnRp
b25UZXN0LCBFWFBFQ1RfSFJFU1VMVF9TVUNDRUVERUQpIHsKKyAgRVhQRUNUX0hSRVNVTFRfU1VD
Q0VFREVEKFNfT0spOworICBFWFBFQ1RfSFJFU1VMVF9TVUNDRUVERUQoU19GQUxTRSk7CisKKyAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0hSRVNVTFRfU1VDQ0VFREVEKFVuZXhwZWN0
ZWRIUkVTVUxURmFpbHVyZSgpKSwKKyAgICAiRXhwZWN0ZWQ6IChVbmV4cGVjdGVkSFJFU1VMVEZh
aWx1cmUoKSkgc3VjY2VlZHMuXG4iCisgICAgIiAgQWN0dWFsOiAweDgwMDBGRkZGIik7Cit9CisK
K1RFU1QoSFJFU1VMVEFzc2VydGlvblRlc3QsIEFTU0VSVF9IUkVTVUxUX1NVQ0NFRURFRCkgewor
ICBBU1NFUlRfSFJFU1VMVF9TVUNDRUVERUQoU19PSyk7CisgIEFTU0VSVF9IUkVTVUxUX1NVQ0NF
RURFRChTX0ZBTFNFKTsKKworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfSFJFU1VMVF9T
VUNDRUVERUQoVW5leHBlY3RlZEhSRVNVTFRGYWlsdXJlKCkpLAorICAgICJFeHBlY3RlZDogKFVu
ZXhwZWN0ZWRIUkVTVUxURmFpbHVyZSgpKSBzdWNjZWVkcy5cbiIKKyAgICAiICBBY3R1YWw6IDB4
ODAwMEZGRkYiKTsKK30KKworVEVTVChIUkVTVUxUQXNzZXJ0aW9uVGVzdCwgRVhQRUNUX0hSRVNV
TFRfRkFJTEVEKSB7CisgIEVYUEVDVF9IUkVTVUxUX0ZBSUxFRChFX1VORVhQRUNURUQpOworCisg
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9IUkVTVUxUX0ZBSUxFRChPa0hSRVNVTFRT
dWNjZXNzKCkpLAorICAgICJFeHBlY3RlZDogKE9rSFJFU1VMVFN1Y2Nlc3MoKSkgZmFpbHMuXG4i
CisgICAgIiAgQWN0dWFsOiAweDAiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNU
X0hSRVNVTFRfRkFJTEVEKEZhbHNlSFJFU1VMVFN1Y2Nlc3MoKSksCisgICAgIkV4cGVjdGVkOiAo
RmFsc2VIUkVTVUxUU3VjY2VzcygpKSBmYWlscy5cbiIKKyAgICAiICBBY3R1YWw6IDB4MSIpOwor
fQorCitURVNUKEhSRVNVTFRBc3NlcnRpb25UZXN0LCBBU1NFUlRfSFJFU1VMVF9GQUlMRUQpIHsK
KyAgQVNTRVJUX0hSRVNVTFRfRkFJTEVEKEVfVU5FWFBFQ1RFRCk7CisKKyMgaWZuZGVmIF9fQk9S
TEFORENfXworCisgIC8vIElDRSdzIGluIEMrK0J1aWxkZXIgMjAwNyBhbmQgMjAwOS4KKyAgRVhQ
RUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0hSRVNVTFRfRkFJTEVEKE9rSFJFU1VMVFN1Y2Nlc3Mo
KSksCisgICAgIkV4cGVjdGVkOiAoT2tIUkVTVUxUU3VjY2VzcygpKSBmYWlscy5cbiIKKyAgICAi
ICBBY3R1YWw6IDB4MCIpOworIyBlbmRpZgorCisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VS
VF9IUkVTVUxUX0ZBSUxFRChGYWxzZUhSRVNVTFRTdWNjZXNzKCkpLAorICAgICJFeHBlY3RlZDog
KEZhbHNlSFJFU1VMVFN1Y2Nlc3MoKSkgZmFpbHMuXG4iCisgICAgIiAgQWN0dWFsOiAweDEiKTsK
K30KKworLy8gVGVzdHMgdGhhdCBzdHJlYW1pbmcgdG8gdGhlIEhSRVNVTFQgbWFjcm9zIHdvcmtz
LgorVEVTVChIUkVTVUxUQXNzZXJ0aW9uVGVzdCwgU3RyZWFtaW5nKSB7CisgIEVYUEVDVF9IUkVT
VUxUX1NVQ0NFRURFRChTX09LKSA8PCAidW5leHBlY3RlZCBmYWlsdXJlIjsKKyAgQVNTRVJUX0hS
RVNVTFRfU1VDQ0VFREVEKFNfT0spIDw8ICJ1bmV4cGVjdGVkIGZhaWx1cmUiOworICBFWFBFQ1Rf
SFJFU1VMVF9GQUlMRUQoRV9VTkVYUEVDVEVEKSA8PCAidW5leHBlY3RlZCBmYWlsdXJlIjsKKyAg
QVNTRVJUX0hSRVNVTFRfRkFJTEVEKEVfVU5FWFBFQ1RFRCkgPDwgInVuZXhwZWN0ZWQgZmFpbHVy
ZSI7CisKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoCisgICAgICBFWFBFQ1RfSFJFU1VMVF9T
VUNDRUVERUQoRV9VTkVYUEVDVEVEKSA8PCAiZXhwZWN0ZWQgZmFpbHVyZSIsCisgICAgICAiZXhw
ZWN0ZWQgZmFpbHVyZSIpOworCisjIGlmbmRlZiBfX0JPUkxBTkRDX18KKworICAvLyBJQ0UncyBp
biBDKytCdWlsZGVyIDIwMDcgYW5kIDIwMDkuCisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKAorICAg
ICAgQVNTRVJUX0hSRVNVTFRfU1VDQ0VFREVEKEVfVU5FWFBFQ1RFRCkgPDwgImV4cGVjdGVkIGZh
aWx1cmUiLAorICAgICAgImV4cGVjdGVkIGZhaWx1cmUiKTsKKyMgZW5kaWYKKworICBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRSgKKyAgICAgIEVYUEVDVF9IUkVTVUxUX0ZBSUxFRChTX09LKSA8PCAi
ZXhwZWN0ZWQgZmFpbHVyZSIsCisgICAgICAiZXhwZWN0ZWQgZmFpbHVyZSIpOworCisgIEVYUEVD
VF9GQVRBTF9GQUlMVVJFKAorICAgICAgQVNTRVJUX0hSRVNVTFRfRkFJTEVEKFNfT0spIDw8ICJl
eHBlY3RlZCBmYWlsdXJlIiwKKyAgICAgICJleHBlY3RlZCBmYWlsdXJlIik7Cit9CisKKyNlbmRp
ZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCisjaWZkZWYgX19CT1JMQU5EQ19fCisvLyBTaWxlbmNl
cyB3YXJuaW5nczogIkNvbmRpdGlvbiBpcyBhbHdheXMgdHJ1ZSIsICJVbnJlYWNoYWJsZSBjb2Rl
IgorIyBwcmFnbWEgb3B0aW9uIHB1c2ggLXctY2NjIC13LXJjaAorI2VuZGlmCisKKy8vIFRlc3Rz
IHRoYXQgdGhlIGFzc2VydGlvbiBtYWNyb3MgYmVoYXZlIGxpa2Ugc2luZ2xlIHN0YXRlbWVudHMu
CitURVNUKEFzc2VydGlvblN5bnRheFRlc3QsIEJhc2ljQXNzZXJ0aW9uc0JlaGF2ZXNMaWtlU2lu
Z2xlU3RhdGVtZW50KSB7CisgIGlmIChBbHdheXNGYWxzZSgpKQorICAgIEFTU0VSVF9UUlVFKGZh
bHNlKSA8PCAiVGhpcyBzaG91bGQgbmV2ZXIgYmUgZXhlY3V0ZWQ7ICIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIkl0J3MgYSBjb21waWxhdGlvbiB0ZXN0IG9ubHkuIjsKKworICBpZiAoQWx3
YXlzVHJ1ZSgpKQorICAgIEVYUEVDVF9GQUxTRShmYWxzZSk7CisgIGVsc2UKKyAgICA7ICAvLyBO
T0xJTlQKKworICBpZiAoQWx3YXlzRmFsc2UoKSkKKyAgICBBU1NFUlRfTFQoMSwgMyk7CisKKyAg
aWYgKEFsd2F5c0ZhbHNlKCkpCisgICAgOyAgLy8gTk9MSU5UCisgIGVsc2UKKyAgICBFWFBFQ1Rf
R1QoMywgMikgPDwgIiI7Cit9CisKKyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUworLy8gVGVzdHMg
dGhhdCB0aGUgY29tcGlsZXIgd2lsbCBub3QgY29tcGxhaW4gYWJvdXQgdW5yZWFjaGFibGUgY29k
ZSBpbiB0aGUKKy8vIEVYUEVDVF9USFJPVy9FWFBFQ1RfQU5ZX1RIUk9XL0VYUEVDVF9OT19USFJP
VyBtYWNyb3MuCitURVNUKEV4cGVjdFRocm93VGVzdCwgRG9lc05vdEdlbmVyYXRlVW5yZWFjaGFi
bGVDb2RlV2FybmluZykgeworICBpbnQgbiA9IDA7CisKKyAgRVhQRUNUX1RIUk9XKHRocm93IDEs
IGludCk7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9USFJPVyhuKyssIGludCks
ICIiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1RIUk9XKHRocm93IDEsIGNv
bnN0IGNoYXIqKSwgIiIpOworICBFWFBFQ1RfTk9fVEhST1cobisrKTsKKyAgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoRVhQRUNUX05PX1RIUk9XKHRocm93IDEpLCAiIik7CisgIEVYUEVDVF9BTllf
VEhST1codGhyb3cgMSk7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9BTllfVEhS
T1cobisrKSwgIiIpOworfQorCitURVNUKEFzc2VydGlvblN5bnRheFRlc3QsIEV4Y2VwdGlvbkFz
c2VydGlvbnNCZWhhdmVzTGlrZVNpbmdsZVN0YXRlbWVudCkgeworICBpZiAoQWx3YXlzRmFsc2Uo
KSkKKyAgICBFWFBFQ1RfVEhST1coVGhyb3dOb3RoaW5nKCksIGJvb2wpOworCisgIGlmIChBbHdh
eXNUcnVlKCkpCisgICAgRVhQRUNUX1RIUk9XKFRocm93QW5JbnRlZ2VyKCksIGludCk7CisgIGVs
c2UKKyAgICA7ICAvLyBOT0xJTlQKKworICBpZiAoQWx3YXlzRmFsc2UoKSkKKyAgICBFWFBFQ1Rf
Tk9fVEhST1coVGhyb3dBbkludGVnZXIoKSk7CisKKyAgaWYgKEFsd2F5c1RydWUoKSkKKyAgICBF
WFBFQ1RfTk9fVEhST1coVGhyb3dOb3RoaW5nKCkpOworICBlbHNlCisgICAgOyAgLy8gTk9MSU5U
CisKKyAgaWYgKEFsd2F5c0ZhbHNlKCkpCisgICAgRVhQRUNUX0FOWV9USFJPVyhUaHJvd05vdGhp
bmcoKSk7CisKKyAgaWYgKEFsd2F5c1RydWUoKSkKKyAgICBFWFBFQ1RfQU5ZX1RIUk9XKFRocm93
QW5JbnRlZ2VyKCkpOworICBlbHNlCisgICAgOyAgLy8gTk9MSU5UCit9CisjZW5kaWYgIC8vIEdU
RVNUX0hBU19FWENFUFRJT05TCisKK1RFU1QoQXNzZXJ0aW9uU3ludGF4VGVzdCwgTm9GYXRhbEZh
aWx1cmVBc3NlcnRpb25zQmVoYXZlc0xpa2VTaW5nbGVTdGF0ZW1lbnQpIHsKKyAgaWYgKEFsd2F5
c0ZhbHNlKCkpCisgICAgRVhQRUNUX05PX0ZBVEFMX0ZBSUxVUkUoRkFJTCgpKSA8PCAiVGhpcyBz
aG91bGQgbmV2ZXIgYmUgZXhlY3V0ZWQuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDw8ICJJdCdzIGEgY29tcGlsYXRpb24gdGVzdCBvbmx5LiI7CisgIGVsc2UKKyAgICA7
ICAvLyBOT0xJTlQKKworICBpZiAoQWx3YXlzRmFsc2UoKSkKKyAgICBBU1NFUlRfTk9fRkFUQUxf
RkFJTFVSRShGQUlMKCkpIDw8ICIiOworICBlbHNlCisgICAgOyAgLy8gTk9MSU5UCisKKyAgaWYg
KEFsd2F5c1RydWUoKSkKKyAgICBFWFBFQ1RfTk9fRkFUQUxfRkFJTFVSRShTVUNDRUVEKCkpOwor
ICBlbHNlCisgICAgOyAgLy8gTk9MSU5UCisKKyAgaWYgKEFsd2F5c0ZhbHNlKCkpCisgICAgOyAg
Ly8gTk9MSU5UCisgIGVsc2UKKyAgICBBU1NFUlRfTk9fRkFUQUxfRkFJTFVSRShTVUNDRUVEKCkp
OworfQorCisvLyBUZXN0cyB0aGF0IHRoZSBhc3NlcnRpb24gbWFjcm9zIHdvcmsgd2VsbCB3aXRo
IHN3aXRjaCBzdGF0ZW1lbnRzLgorVEVTVChBc3NlcnRpb25TeW50YXhUZXN0LCBXb3Jrc1dpdGhT
d2l0Y2gpIHsKKyAgc3dpdGNoICgwKSB7CisgICAgY2FzZSAxOgorICAgICAgYnJlYWs7CisgICAg
ZGVmYXVsdDoKKyAgICAgIEFTU0VSVF9UUlVFKHRydWUpOworICB9CisKKyAgc3dpdGNoICgwKQor
ICAgIGNhc2UgMDoKKyAgICAgIEVYUEVDVF9GQUxTRShmYWxzZSkgPDwgIkVYUEVDVF9GQUxTRSBm
YWlsZWQgaW4gc3dpdGNoIGNhc2UiOworCisgIC8vIEJpbmFyeSBhc3NlcnRpb25zIGFyZSBpbXBs
ZW1lbnRlZCB1c2luZyBhIGRpZmZlcmVudCBjb2RlIHBhdGgKKyAgLy8gdGhhbiB0aGUgQm9vbGVh
biBhc3NlcnRpb25zLiAgSGVuY2Ugd2UgdGVzdCB0aGVtIHNlcGFyYXRlbHkuCisgIHN3aXRjaCAo
MCkgeworICAgIGNhc2UgMToKKyAgICBkZWZhdWx0OgorICAgICAgQVNTRVJUX0VRKDEsIDEpIDw8
ICJBU1NFUlRfRVEgZmFpbGVkIGluIGRlZmF1bHQgc3dpdGNoIGhhbmRsZXIiOworICB9CisKKyAg
c3dpdGNoICgwKQorICAgIGNhc2UgMDoKKyAgICAgIEVYUEVDVF9ORSgxLCAyKTsKK30KKworI2lm
IEdURVNUX0hBU19FWENFUFRJT05TCisKK3ZvaWQgVGhyb3dBU3RyaW5nKCkgeworICAgIHRocm93
ICJzdGQ6OnN0cmluZyI7Cit9CisKKy8vIFRlc3QgdGhhdCB0aGUgZXhjZXB0aW9uIGFzc2VydGlv
biBtYWNyb3MgY29tcGlsZSBhbmQgd29yayB3aXRoIGNvbnN0CisvLyB0eXBlIHF1YWxpZmllci4K
K1RFU1QoQXNzZXJ0aW9uU3ludGF4VGVzdCwgV29ya3NXaXRoQ29uc3QpIHsKKyAgICBBU1NFUlRf
VEhST1coVGhyb3dBU3RyaW5nKCksIGNvbnN0IGNoYXIqKTsKKworICAgIEVYUEVDVF9USFJPVyhU
aHJvd0FTdHJpbmcoKSwgY29uc3QgY2hhciopOworfQorCisjZW5kaWYgIC8vIEdURVNUX0hBU19F
WENFUFRJT05TCisKK30gIC8vIG5hbWVzcGFjZQorCituYW1lc3BhY2UgdGVzdGluZyB7CisKKy8v
IFRlc3RzIHRoYXQgR29vZ2xlIFRlc3QgdHJhY2tzIFNVQ0NFRUQqLgorVEVTVChTdWNjZXNzZnVs
QXNzZXJ0aW9uVGVzdCwgU1VDQ0VFRCkgeworICBTVUNDRUVEKCk7CisgIFNVQ0NFRUQoKSA8PCAi
T0siOworICBFWFBFQ1RfRVEoMiwgR2V0VW5pdFRlc3RJbXBsKCktPmN1cnJlbnRfdGVzdF9yZXN1
bHQoKS0+dG90YWxfcGFydF9jb3VudCgpKTsKK30KKworLy8gVGVzdHMgdGhhdCBHb29nbGUgVGVz
dCBkb2Vzbid0IHRyYWNrIHN1Y2Nlc3NmdWwgRVhQRUNUXyouCitURVNUKFN1Y2Nlc3NmdWxBc3Nl
cnRpb25UZXN0LCBFWFBFQ1QpIHsKKyAgRVhQRUNUX1RSVUUodHJ1ZSk7CisgIEVYUEVDVF9FUSgw
LCBHZXRVbml0VGVzdEltcGwoKS0+Y3VycmVudF90ZXN0X3Jlc3VsdCgpLT50b3RhbF9wYXJ0X2Nv
dW50KCkpOworfQorCisvLyBUZXN0cyB0aGF0IEdvb2dsZSBUZXN0IGRvZXNuJ3QgdHJhY2sgc3Vj
Y2Vzc2Z1bCBFWFBFQ1RfU1RSKi4KK1RFU1QoU3VjY2Vzc2Z1bEFzc2VydGlvblRlc3QsIEVYUEVD
VF9TVFIpIHsKKyAgRVhQRUNUX1NUUkVRKCIiLCAiIik7CisgIEVYUEVDVF9FUSgwLCBHZXRVbml0
VGVzdEltcGwoKS0+Y3VycmVudF90ZXN0X3Jlc3VsdCgpLT50b3RhbF9wYXJ0X2NvdW50KCkpOwor
fQorCisvLyBUZXN0cyB0aGF0IEdvb2dsZSBUZXN0IGRvZXNuJ3QgdHJhY2sgc3VjY2Vzc2Z1bCBB
U1NFUlRfKi4KK1RFU1QoU3VjY2Vzc2Z1bEFzc2VydGlvblRlc3QsIEFTU0VSVCkgeworICBBU1NF
UlRfVFJVRSh0cnVlKTsKKyAgRVhQRUNUX0VRKDAsIEdldFVuaXRUZXN0SW1wbCgpLT5jdXJyZW50
X3Rlc3RfcmVzdWx0KCktPnRvdGFsX3BhcnRfY291bnQoKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQg
R29vZ2xlIFRlc3QgZG9lc24ndCB0cmFjayBzdWNjZXNzZnVsIEFTU0VSVF9TVFIqLgorVEVTVChT
dWNjZXNzZnVsQXNzZXJ0aW9uVGVzdCwgQVNTRVJUX1NUUikgeworICBBU1NFUlRfU1RSRVEoIiIs
ICIiKTsKKyAgRVhQRUNUX0VRKDAsIEdldFVuaXRUZXN0SW1wbCgpLT5jdXJyZW50X3Rlc3RfcmVz
dWx0KCktPnRvdGFsX3BhcnRfY291bnQoKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5n
CisKK25hbWVzcGFjZSB7CisKKy8vIFRlc3RzIHRoZSBtZXNzYWdlIHN0cmVhbWluZyB2YXJpYXRp
b24gb2YgYXNzZXJ0aW9ucy4KKworVEVTVChBc3NlcnRpb25XaXRoTWVzc2FnZVRlc3QsIEVYUEVD
VCkgeworICBFWFBFQ1RfRVEoMSwgMSkgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX05FKDEsIDEpIDw8ICJFeHBlY3RlZCBmYWlsdXJl
ICMxLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBmYWlsdXJlICMxIik7
CisgIEVYUEVDVF9MRSgxLCAyKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfTFQoMSwgMCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzIu
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGZhaWx1cmUgIzIuIik7Cisg
IEVYUEVDVF9HRSgxLCAwKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRShFWFBFQ1RfR1QoMSwgMikgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzMuIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGZhaWx1cmUgIzMuIik7CisKKyAg
RVhQRUNUX1NUUkVRKCIxIiwgIjEiKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfU1RSTkUoIjEiLCAiMSIpIDw8ICJFeHBlY3RlZCBm
YWlsdXJlICM0LiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBmYWlsdXJl
ICM0LiIpOworICBFWFBFQ1RfU1RSQ0FTRUVRKCJhIiwgIkEiKSA8PCAiVGhpcyBzaG91bGQgc3Vj
Y2VlZC4iOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfU1RSQ0FTRU5FKCJhIiwg
IkEiKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjNS4iLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAiRXhwZWN0ZWQgZmFpbHVyZSAjNS4iKTsKKworICBFWFBFQ1RfRkxPQVRfRVEoMSwgMSkgPDwg
IlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNU
X0RPVUJMRV9FUSgxLCAxLjIpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM2LiIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICJFeHBlY3RlZCBmYWlsdXJlICM2LiIpOworICBFWFBFQ1RfTkVBUigx
LCAxLjEsIDAuMikgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKK30KKworVEVTVChBc3NlcnRp
b25XaXRoTWVzc2FnZVRlc3QsIEFTU0VSVCkgeworICBBU1NFUlRfRVEoMSwgMSkgPDwgIlRoaXMg
c2hvdWxkIHN1Y2NlZWQuIjsKKyAgQVNTRVJUX05FKDEsIDIpIDw8ICJUaGlzIHNob3VsZCBzdWNj
ZWVkLiI7CisgIEFTU0VSVF9MRSgxLCAyKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBB
U1NFUlRfTFQoMSwgMikgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgQVNTRVJUX0dFKDEs
IDApIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFT
U0VSVF9HVCgxLCAyKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4iLAorICAgICAgICAgICAgICAgICAg
ICAgICAiRXhwZWN0ZWQgZmFpbHVyZS4iKTsKK30KKworVEVTVChBc3NlcnRpb25XaXRoTWVzc2Fn
ZVRlc3QsIEFTU0VSVF9TVFIpIHsKKyAgQVNTRVJUX1NUUkVRKCIxIiwgIjEiKSA8PCAiVGhpcyBz
aG91bGQgc3VjY2VlZC4iOworICBBU1NFUlRfU1RSTkUoIjEiLCAiMiIpIDw8ICJUaGlzIHNob3Vs
ZCBzdWNjZWVkLiI7CisgIEFTU0VSVF9TVFJDQVNFRVEoImEiLCAiQSIpIDw8ICJUaGlzIHNob3Vs
ZCBzdWNjZWVkLiI7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9TVFJDQVNFTkUoImEi
LCAiQSIpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiIsCisgICAgICAgICAgICAgICAgICAgICAgICJF
eHBlY3RlZCBmYWlsdXJlLiIpOworfQorCitURVNUKEFzc2VydGlvbldpdGhNZXNzYWdlVGVzdCwg
QVNTRVJUX0ZMT0FUSU5HKSB7CisgIEFTU0VSVF9GTE9BVF9FUSgxLCAxKSA8PCAiVGhpcyBzaG91
bGQgc3VjY2VlZC4iOworICBBU1NFUlRfRE9VQkxFX0VRKDEsIDEpIDw8ICJUaGlzIHNob3VsZCBz
dWNjZWVkLiI7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9ORUFSKDEsMS4yLCAwLjEp
IDw8ICJFeHBlY3QgZmFpbHVyZS4iLCAgLy8gTk9MSU5UCisgICAgICAgICAgICAgICAgICAgICAg
ICJFeHBlY3QgZmFpbHVyZS4iKTsKKyAgLy8gVG8gd29yayBhcm91bmQgYSBidWcgaW4gZ2NjIDIu
OTUuMCwgdGhlcmUgaXMgaW50ZW50aW9uYWxseSBubworICAvLyBzcGFjZSBhZnRlciB0aGUgZmly
c3QgY29tbWEgaW4gdGhlIHByZXZpb3VzIHN0YXRlbWVudC4KK30KKworLy8gVGVzdHMgdXNpbmcg
QVNTRVJUX0ZBTFNFIHdpdGggYSBzdHJlYW1lZCBtZXNzYWdlLgorVEVTVChBc3NlcnRpb25XaXRo
TWVzc2FnZVRlc3QsIEFTU0VSVF9GQUxTRSkgeworICBBU1NFUlRfRkFMU0UoZmFsc2UpIDw8ICJU
aGlzIHNob3VsZG4ndCBmYWlsLiI7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElO
VAorICAgIEFTU0VSVF9GQUxTRSh0cnVlKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZTogIiA8PCAyIDw8
ICIgPiAiIDw8IDEKKyAgICAgICAgICAgICAgICAgICAgICAgPDwgIiBldmFsdWF0ZXMgdG8gIiA8
PCB0cnVlOworICB9LCAiRXhwZWN0ZWQgZmFpbHVyZSIpOworfQorCisvLyBUZXN0cyB1c2luZyBG
QUlMIHdpdGggYSBzdHJlYW1lZCBtZXNzYWdlLgorVEVTVChBc3NlcnRpb25XaXRoTWVzc2FnZVRl
c3QsIEZBSUwpIHsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoRkFJTCgpIDw8IDAsCisgICAgICAg
ICAgICAgICAgICAgICAgICIwIik7Cit9CisKKy8vIFRlc3RzIHVzaW5nIFNVQ0NFRUQgd2l0aCBh
IHN0cmVhbWVkIG1lc3NhZ2UuCitURVNUKEFzc2VydGlvbldpdGhNZXNzYWdlVGVzdCwgU1VDQ0VF
RCkgeworICBTVUNDRUVEKCkgPDwgIlN1Y2Nlc3MgPT0gIiA8PCAxOworfQorCisvLyBUZXN0cyB1
c2luZyBBU1NFUlRfVFJVRSB3aXRoIGEgc3RyZWFtZWQgbWVzc2FnZS4KK1RFU1QoQXNzZXJ0aW9u
V2l0aE1lc3NhZ2VUZXN0LCBBU1NFUlRfVFJVRSkgeworICBBU1NFUlRfVFJVRSh0cnVlKSA8PCAi
VGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBBU1NFUlRfVFJVRSh0cnVlKSA8PCB0cnVlOworICBF
WFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBBU1NFUlRfVFJVRShmYWxzZSkg
PDwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhciAqPihOVUxMKQorICAgICAgICAgICAgICAgICAgICAg
ICA8PCBzdGF0aWNfY2FzdDxjaGFyICo+KE5VTEwpOworICB9LCAiKG51bGwpKG51bGwpIik7Cit9
CisKKyNpZiBHVEVTVF9PU19XSU5ET1dTCisvLyBUZXN0cyB1c2luZyB3aWRlIHN0cmluZ3MgaW4g
YXNzZXJ0aW9uIG1lc3NhZ2VzLgorVEVTVChBc3NlcnRpb25XaXRoTWVzc2FnZVRlc3QsIFdpZGVT
dHJpbmdNZXNzYWdlKSB7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAor
ICAgIEVYUEVDVF9UUlVFKGZhbHNlKSA8PCBMIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZC5ceDgx
MTkiOworICB9LCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLiIpOworICBFWFBFQ1RfRkFUQUxf
RkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBBU1NFUlRfRVEoMSwgMikgPDwgIlRoaXMgZmFpbHVy
ZSBpcyAiCisgICAgICAgICAgICAgICAgICAgIDw8IEwiZXhwZWN0ZWQgdG9vLlx4ODEyMCI7Cisg
IH0sICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQgdG9vLiIpOworfQorI2VuZGlmICAvLyBHVEVT
VF9PU19XSU5ET1dTCisKKy8vIFRlc3RzIEVYUEVDVF9UUlVFLgorVEVTVChFeHBlY3RUZXN0LCBF
WFBFQ1RfVFJVRSkgeworICBFWFBFQ1RfVFJVRSh0cnVlKSA8PCAiSW50ZW50aW9uYWwgc3VjY2Vz
cyI7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9UUlVFKGZhbHNlKSA8PCAiSW50
ZW50aW9uYWwgZmFpbHVyZSAjMS4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiSW50ZW50
aW9uYWwgZmFpbHVyZSAjMS4iKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1RS
VUUoZmFsc2UpIDw8ICJJbnRlbnRpb25hbCBmYWlsdXJlICMyLiIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICJJbnRlbnRpb25hbCBmYWlsdXJlICMyLiIpOworICBFWFBFQ1RfVFJVRSgyID4g
MSk7ICAvLyBOT0xJTlQKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1RSVUUoMiA8
IDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6IDIgPCAxXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICIgIEFjdHVhbDogZmFsc2VcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIkV4cGVjdGVkOiB0cnVlIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KEVYUEVDVF9UUlVFKDIgPiAzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIjIgPiAzIik7
Cit9CisKKy8vIFRlc3RzIEVYUEVDVF9UUlVFKHByZWRpY2F0ZSkgZm9yIHByZWRpY2F0ZXMgcmV0
dXJuaW5nIEFzc2VydGlvblJlc3VsdC4KK1RFU1QoRXhwZWN0VGVzdCwgRXhwZWN0VHJ1ZVdpdGhB
c3NlcnRpb25SZXN1bHQpIHsKKyAgRVhQRUNUX1RSVUUoUmVzdWx0SXNFdmVuKDIpKTsKKyAgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1RSVUUoUmVzdWx0SXNFdmVuKDMpKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiBSZXN1bHRJc0V2ZW4oMylcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIiAgQWN0dWFsOiBmYWxzZSAoMyBpcyBvZGQpXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZDogdHJ1ZSIpOworICBFWFBFQ1RfVFJVRShS
ZXN1bHRJc0V2ZW5Ob0V4cGxhbmF0aW9uKDIpKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
RVhQRUNUX1RSVUUoUmVzdWx0SXNFdmVuTm9FeHBsYW5hdGlvbigzKSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICJWYWx1ZSBvZjogUmVzdWx0SXNFdmVuTm9FeHBsYW5hdGlvbigzKVxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAiICBBY3R1YWw6IGZhbHNlICgzIGlzIG9kZClcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkOiB0cnVlIik7Cit9CisKKy8vIFRl
c3RzIEVYUEVDVF9GQUxTRSB3aXRoIGEgc3RyZWFtZWQgbWVzc2FnZS4KK1RFU1QoRXhwZWN0VGVz
dCwgRVhQRUNUX0ZBTFNFKSB7CisgIEVYUEVDVF9GQUxTRSgyIDwgMSk7ICAvLyBOT0xJTlQKKyAg
RVhQRUNUX0ZBTFNFKGZhbHNlKSA8PCAiSW50ZW50aW9uYWwgc3VjY2VzcyI7CisgIEVYUEVDVF9O
T05GQVRBTF9GQUlMVVJFKEVYUEVDVF9GQUxTRSh0cnVlKSA8PCAiSW50ZW50aW9uYWwgZmFpbHVy
ZSAjMS4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiSW50ZW50aW9uYWwgZmFpbHVyZSAj
MS4iKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0ZBTFNFKHRydWUpIDw8ICJJ
bnRlbnRpb25hbCBmYWlsdXJlICMyLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnRl
bnRpb25hbCBmYWlsdXJlICMyLiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1Rf
RkFMU0UoMiA+IDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6IDIgPiAx
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICIgIEFjdHVhbDogdHJ1ZVxuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQ6IGZhbHNlIik7CisgIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKEVYUEVDVF9GQUxTRSgyIDwgMyksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICIyIDwgMyIpOworfQorCisvLyBUZXN0cyBFWFBFQ1RfRkFMU0UocHJlZGljYXRlKSBmb3IgcHJl
ZGljYXRlcyByZXR1cm5pbmcgQXNzZXJ0aW9uUmVzdWx0LgorVEVTVChFeHBlY3RUZXN0LCBFeHBl
Y3RGYWxzZVdpdGhBc3NlcnRpb25SZXN1bHQpIHsKKyAgRVhQRUNUX0ZBTFNFKFJlc3VsdElzRXZl
bigzKSk7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9GQUxTRShSZXN1bHRJc0V2
ZW4oMikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6IFJlc3VsdElzRXZl
bigyKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiICBBY3R1YWw6IHRydWUgKDIgaXMg
ZXZlbilcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkOiBmYWxzZSIpOwor
ICBFWFBFQ1RfRkFMU0UoUmVzdWx0SXNFdmVuTm9FeHBsYW5hdGlvbigzKSk7CisgIEVYUEVDVF9O
T05GQVRBTF9GQUlMVVJFKEVYUEVDVF9GQUxTRShSZXN1bHRJc0V2ZW5Ob0V4cGxhbmF0aW9uKDIp
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiBSZXN1bHRJc0V2ZW5Ob0V4
cGxhbmF0aW9uKDIpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICIgIEFjdHVhbDogdHJ1
ZVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQ6IGZhbHNlIik7Cit9CisK
KyNpZmRlZiBfX0JPUkxBTkRDX18KKy8vIFJlc3RvcmVzIHdhcm5pbmdzIGFmdGVyIHByZXZpb3Vz
ICIjcHJhZ21hIG9wdGlvbiBwdXNoIiBzdXByZXNzZWQgdGhlbQorIyBwcmFnbWEgb3B0aW9uIHBv
cAorI2VuZGlmCisKKy8vIFRlc3RzIEVYUEVDVF9FUS4KK1RFU1QoRXhwZWN0VGVzdCwgRVhQRUNU
X0VRKSB7CisgIEVYUEVDVF9FUSg1LCAyICsgMyk7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KEVYUEVDVF9FUSg1LCAyKjMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgRXhw
ZWN0ZWQ6IDVcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlRvIGJlIGVxdWFsIHRvOiAy
KjNcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgIFdoaWNoIGlzOiA2Iik7Cisg
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUSg1LCAyIC0gMyksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICIyIC0gMyIpOworfQorCisvLyBUZXN0cyB1c2luZyBFWFBFQ1RfRVEg
b24gZG91YmxlIHZhbHVlcy4gIFRoZSBwdXJwb3NlIGlzIHRvIG1ha2UKKy8vIHN1cmUgdGhhdCB0
aGUgc3BlY2lhbGl6YXRpb24gd2UgZGlkIGZvciBpbnRlZ2VyIGFuZCBhbm9ueW1vdXMgZW51bXMK
Ky8vIGlzbid0IHVzZWQgZm9yIGRvdWJsZSBhcmd1bWVudHMuCitURVNUKEV4cGVjdFRlc3QsIEVY
UEVDVF9FUV9Eb3VibGUpIHsKKyAgLy8gQSBzdWNjZXNzLgorICBFWFBFQ1RfRVEoNS42LCA1LjYp
OworCisgIC8vIEEgZmFpbHVyZS4KKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VR
KDUuMSwgNS4yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIjUuMSIpOworfQorCisjaWYg
R1RFU1RfQ0FOX0NPTVBBUkVfTlVMTAorLy8gVGVzdHMgRVhQRUNUX0VRKE5VTEwsIHBvaW50ZXIp
LgorVEVTVChFeHBlY3RUZXN0LCBFWFBFQ1RfRVFfTlVMTCkgeworICAvLyBBIHN1Y2Nlc3MuCisg
IGNvbnN0IGNoYXIqIHAgPSBOVUxMOworICAvLyBTb21lIG9sZGVyIEdDQyB2ZXJzaW9ucyBtYXkg
aXNzdWUgYSBzcHVyaW91cyB3YXJuaW5nIGluIHRoaXMgb3IgdGhlIG5leHQKKyAgLy8gYXNzZXJ0
aW9uIHN0YXRlbWVudC4gVGhpcyB3YXJuaW5nIHNob3VsZCBub3QgYmUgc3VwcHJlc3NlZCB3aXRo
CisgIC8vIHN0YXRpY19jYXN0IHNpbmNlIHRoZSB0ZXN0IHZlcmlmaWVzIHRoZSBhYmlsaXR5IHRv
IHVzZSBiYXJlIE5VTEwgYXMgdGhlCisgIC8vIGV4cGVjdGVkIHBhcmFtZXRlciB0byB0aGUgbWFj
cm8uCisgIEVYUEVDVF9FUShOVUxMLCBwKTsKKworICAvLyBBIGZhaWx1cmUuCisgIGludCBuID0g
MDsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKE5VTEwsICZuKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIlRvIGJlIGVxdWFsIHRvOiAmblxuIik7Cit9CisjZW5kaWYg
IC8vIEdURVNUX0NBTl9DT01QQVJFX05VTEwKKworLy8gVGVzdHMgRVhQRUNUX0VRKDAsIG5vbl9w
b2ludGVyKS4gIFNpbmNlIHRoZSBsaXRlcmFsIDAgY2FuIGJlCisvLyB0cmVhdGVkIGFzIGEgbnVs
bCBwb2ludGVyIGJ5IHRoZSBjb21waWxlciwgd2UgbmVlZCB0byBtYWtlIHN1cmUKKy8vIHRoYXQg
RVhQRUNUX0VRKDAsIG5vbl9wb2ludGVyKSBpc24ndCBpbnRlcnByZXRlZCBieSBHb29nbGUgVGVz
dCBhcworLy8gRVhQRUNUX0VRKHN0YXRpY19jYXN0PHZvaWQqPihOVUxMKSwgbm9uX3BvaW50ZXIp
LgorVEVTVChFeHBlY3RUZXN0LCBFWFBFQ1RfRVFfMCkgeworICBpbnQgbiA9IDA7CisKKyAgLy8g
QSBzdWNjZXNzLgorICBFWFBFQ1RfRVEoMCwgbik7CisKKyAgLy8gQSBmYWlsdXJlLgorICBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoMCwgNS42KSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIkV4cGVjdGVkOiAwIik7Cit9CisKKy8vIFRlc3RzIEVYUEVDVF9ORS4KK1RFU1Qo
RXhwZWN0VGVzdCwgRVhQRUNUX05FKSB7CisgIEVYUEVDVF9ORSg2LCA3KTsKKworICBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfTkUoJ2EnLCAnYScpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAiRXhwZWN0ZWQ6ICgnYScpICE9ICgnYScpLCAiCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICJhY3R1YWw6ICdhJyAoOTcsIDB4NjEpIHZzICdhJyAoOTcsIDB4NjEpIik7CisgIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9ORSgyLCAyKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIjIiKTsKKyAgY2hhciogY29uc3QgcDAgPSBOVUxMOworICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRShFWFBFQ1RfTkUocDAsIHAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
InAwIik7CisgIC8vIE9ubHkgd2F5IHRvIGdldCB0aGUgTm9raWEgY29tcGlsZXIgdG8gY29tcGls
ZSB0aGUgY2FzdAorICAvLyBpcyB0byBoYXZlIGEgc2VwYXJhdGUgdm9pZCogdmFyaWFibGUgZmly
c3QuIFB1dHRpbmcKKyAgLy8gdGhlIHR3byBjYXN0cyBvbiB0aGUgc2FtZSBsaW5lIGRvZXNuJ3Qg
d29yaywgbmVpdGhlciBkb2VzCisgIC8vIGEgZGlyZWN0IEMtc3R5bGUgdG8gY2hhciouCisgIHZv
aWQqIHB2MSA9ICh2b2lkKikweDEyMzQ7ICAvLyBOT0xJTlQKKyAgY2hhciogY29uc3QgcDEgPSBy
ZWludGVycHJldF9jYXN0PGNoYXIqPihwdjEpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShF
WFBFQ1RfTkUocDEsIHAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInAxIik7Cit9CisK
Ky8vIFRlc3RzIEVYUEVDVF9MRS4KK1RFU1QoRXhwZWN0VGVzdCwgRVhQRUNUX0xFKSB7CisgIEVY
UEVDVF9MRSgyLCAzKTsKKyAgRVhQRUNUX0xFKDIsIDIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRShFWFBFQ1RfTEUoMiwgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3Rl
ZDogKDIpIDw9ICgwKSwgYWN0dWFsOiAyIHZzIDAiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoRVhQRUNUX0xFKDEuMSwgMC45KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIigxLjEp
IDw9ICgwLjkpIik7Cit9CisKKy8vIFRlc3RzIEVYUEVDVF9MVC4KK1RFU1QoRXhwZWN0VGVzdCwg
RVhQRUNUX0xUKSB7CisgIEVYUEVDVF9MVCgyLCAzKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoRVhQRUNUX0xUKDIsIDIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQ6
ICgyKSA8ICgyKSwgYWN0dWFsOiAyIHZzIDIiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
RVhQRUNUX0xUKDIsIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiKDIpIDwgKDEpIik7
Cit9CisKKy8vIFRlc3RzIEVYUEVDVF9HRS4KK1RFU1QoRXhwZWN0VGVzdCwgRVhQRUNUX0dFKSB7
CisgIEVYUEVDVF9HRSgyLCAxKTsKKyAgRVhQRUNUX0dFKDIsIDIpOworICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRShFWFBFQ1RfR0UoMiwgMyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICJF
eHBlY3RlZDogKDIpID49ICgzKSwgYWN0dWFsOiAyIHZzIDMiKTsKKyAgRVhQRUNUX05PTkZBVEFM
X0ZBSUxVUkUoRVhQRUNUX0dFKDAuOSwgMS4xKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IigwLjkpID49ICgxLjEpIik7Cit9CisKKy8vIFRlc3RzIEVYUEVDVF9HVC4KK1RFU1QoRXhwZWN0
VGVzdCwgRVhQRUNUX0dUKSB7CisgIEVYUEVDVF9HVCgyLCAxKTsKKyAgRVhQRUNUX05PTkZBVEFM
X0ZBSUxVUkUoRVhQRUNUX0dUKDIsIDIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhw
ZWN0ZWQ6ICgyKSA+ICgyKSwgYWN0dWFsOiAyIHZzIDIiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoRVhQRUNUX0dUKDIsIDMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiKDIpID4g
KDMpIik7Cit9CisKKyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUworCisvLyBUZXN0cyBFWFBFQ1Rf
VEhST1cuCitURVNUKEV4cGVjdFRlc3QsIEVYUEVDVF9USFJPVykgeworICBFWFBFQ1RfVEhST1co
VGhyb3dBbkludGVnZXIoKSwgaW50KTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNU
X1RIUk9XKFRocm93QW5JbnRlZ2VyKCksIGJvb2wpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAiRXhwZWN0ZWQ6IFRocm93QW5JbnRlZ2VyKCkgdGhyb3dzIGFuIGV4Y2VwdGlvbiBvZiAiCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIGJvb2wuXG4gIEFjdHVhbDogaXQgdGhyb3dz
IGEgZGlmZmVyZW50IHR5cGUuIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKAorICAgICAg
RVhQRUNUX1RIUk9XKFRocm93Tm90aGluZygpLCBib29sKSwKKyAgICAgICJFeHBlY3RlZDogVGhy
b3dOb3RoaW5nKCkgdGhyb3dzIGFuIGV4Y2VwdGlvbiBvZiB0eXBlIGJvb2wuXG4iCisgICAgICAi
ICBBY3R1YWw6IGl0IHRocm93cyBub3RoaW5nLiIpOworfQorCisvLyBUZXN0cyBFWFBFQ1RfTk9f
VEhST1cuCitURVNUKEV4cGVjdFRlc3QsIEVYUEVDVF9OT19USFJPVykgeworICBFWFBFQ1RfTk9f
VEhST1coVGhyb3dOb3RoaW5nKCkpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1Rf
Tk9fVEhST1coVGhyb3dBbkludGVnZXIoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICJF
eHBlY3RlZDogVGhyb3dBbkludGVnZXIoKSBkb2Vzbid0IHRocm93IGFuICIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgImV4Y2VwdGlvbi5cbiAgQWN0dWFsOiBpdCB0aHJvd3MuIik7Cit9CisK
Ky8vIFRlc3RzIEVYUEVDVF9BTllfVEhST1cuCitURVNUKEV4cGVjdFRlc3QsIEVYUEVDVF9BTllf
VEhST1cpIHsKKyAgRVhQRUNUX0FOWV9USFJPVyhUaHJvd0FuSW50ZWdlcigpKTsKKyAgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoCisgICAgICBFWFBFQ1RfQU5ZX1RIUk9XKFRocm93Tm90aGluZygp
KSwKKyAgICAgICJFeHBlY3RlZDogVGhyb3dOb3RoaW5nKCkgdGhyb3dzIGFuIGV4Y2VwdGlvbi5c
biIKKyAgICAgICIgIEFjdHVhbDogaXQgZG9lc24ndC4iKTsKK30KKworI2VuZGlmICAvLyBHVEVT
VF9IQVNfRVhDRVBUSU9OUworCisvLyBNYWtlIHN1cmUgd2UgZGVhbCB3aXRoIHRoZSBwcmVjZWRl
bmNlIG9mIDw8LgorVEVTVChFeHBlY3RUZXN0LCBFeHBlY3RQcmVjZWRlbmNlKSB7CisgIEVYUEVD
VF9FUSgxIDwgMiwgdHJ1ZSk7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUSh0
cnVlLCB0cnVlICYmIGZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlRvIGJlIGVx
dWFsIHRvOiB0cnVlICYmIGZhbHNlIik7Cit9CisKKworLy8gVGVzdHMgdGhlIFN0cmVhbWFibGVU
b1N0cmluZygpIGZ1bmN0aW9uLgorCisvLyBUZXN0cyB1c2luZyBTdHJlYW1hYmxlVG9TdHJpbmco
KSBvbiBhIHNjYWxhci4KK1RFU1QoU3RyZWFtYWJsZVRvU3RyaW5nVGVzdCwgU2NhbGFyKSB7Cisg
IEVYUEVDVF9TVFJFUSgiNSIsIFN0cmVhbWFibGVUb1N0cmluZyg1KS5jX3N0cigpKTsKK30KKwor
Ly8gVGVzdHMgdXNpbmcgU3RyZWFtYWJsZVRvU3RyaW5nKCkgb24gYSBub24tY2hhciBwb2ludGVy
LgorVEVTVChTdHJlYW1hYmxlVG9TdHJpbmdUZXN0LCBQb2ludGVyKSB7CisgIGludCBuID0gMDsK
KyAgaW50KiBwID0gJm47CisgIEVYUEVDVF9TVFJORSgiKG51bGwpIiwgU3RyZWFtYWJsZVRvU3Ry
aW5nKHApLmNfc3RyKCkpOworfQorCisvLyBUZXN0cyB1c2luZyBTdHJlYW1hYmxlVG9TdHJpbmco
KSBvbiBhIE5VTEwgbm9uLWNoYXIgcG9pbnRlci4KK1RFU1QoU3RyZWFtYWJsZVRvU3RyaW5nVGVz
dCwgTnVsbFBvaW50ZXIpIHsKKyAgaW50KiBwID0gTlVMTDsKKyAgRVhQRUNUX1NUUkVRKCIobnVs
bCkiLCBTdHJlYW1hYmxlVG9TdHJpbmcocCkuY19zdHIoKSk7Cit9CisKKy8vIFRlc3RzIHVzaW5n
IFN0cmVhbWFibGVUb1N0cmluZygpIG9uIGEgQyBzdHJpbmcuCitURVNUKFN0cmVhbWFibGVUb1N0
cmluZ1Rlc3QsIENTdHJpbmcpIHsKKyAgRVhQRUNUX1NUUkVRKCJGb28iLCBTdHJlYW1hYmxlVG9T
dHJpbmcoIkZvbyIpLmNfc3RyKCkpOworfQorCisvLyBUZXN0cyB1c2luZyBTdHJlYW1hYmxlVG9T
dHJpbmcoKSBvbiBhIE5VTEwgQyBzdHJpbmcuCitURVNUKFN0cmVhbWFibGVUb1N0cmluZ1Rlc3Qs
IE51bGxDU3RyaW5nKSB7CisgIGNoYXIqIHAgPSBOVUxMOworICBFWFBFQ1RfU1RSRVEoIihudWxs
KSIsIFN0cmVhbWFibGVUb1N0cmluZyhwKS5jX3N0cigpKTsKK30KKworLy8gVGVzdHMgdXNpbmcg
c3RyZWFtYWJsZSB2YWx1ZXMgYXMgYXNzZXJ0aW9uIG1lc3NhZ2VzLgorCisvLyBUZXN0cyB1c2lu
ZyBzdGQ6OnN0cmluZyBhcyBhbiBhc3NlcnRpb24gbWVzc2FnZS4KK1RFU1QoU3RyZWFtYWJsZVRl
c3QsIHN0cmluZykgeworICBzdGF0aWMgY29uc3Qgc3RkOjpzdHJpbmcgc3RyKAorICAgICAgIlRo
aXMgZmFpbHVyZSBtZXNzYWdlIGlzIGEgc3RkOjpzdHJpbmcsIGFuZCBpcyBleHBlY3RlZC4iKTsK
KyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoRkFJTCgpIDw8IHN0ciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgc3RyLmNfc3RyKCkpOworfQorCisvLyBUZXN0cyB0aGF0IHdlIGNhbiBvdXRwdXQgc3Ry
aW5ncyBjb250YWluaW5nIGVtYmVkZGVkIE5VTHMuCisvLyBMaW1pdGVkIHRvIExpbnV4IGJlY2F1
c2Ugd2UgY2FuIG9ubHkgZG8gdGhpcyB3aXRoIHN0ZDo6c3RyaW5nJ3MuCitURVNUKFN0cmVhbWFi
bGVUZXN0LCBzdHJpbmdXaXRoRW1iZWRkZWROVUwpIHsKKyAgc3RhdGljIGNvbnN0IGNoYXIgY2hh
cl9hcnJheV93aXRoX251bFtdID0KKyAgICAgICJIZXJlJ3MgYSBOVUxcMCBhbmQgc29tZSBtb3Jl
IHN0cmluZyI7CisgIHN0YXRpYyBjb25zdCBzdGQ6OnN0cmluZyBzdHJpbmdfd2l0aF9udWwoY2hh
cl9hcnJheV93aXRoX251bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplb2YoY2hhcl9hcnJheV93aXRoX251bCkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAtIDEpOyAgLy8gZHJvcHMgdGhlIHRyYWlsaW5nIE5VTAorICBF
WFBFQ1RfRkFUQUxfRkFJTFVSRShGQUlMKCkgPDwgc3RyaW5nX3dpdGhfbnVsLAorICAgICAgICAg
ICAgICAgICAgICAgICAiSGVyZSdzIGEgTlVMXFwwIGFuZCBzb21lIG1vcmUgc3RyaW5nIik7Cit9
CisKKy8vIFRlc3RzIHRoYXQgd2UgY2FuIG91dHB1dCBhIE5VTCBjaGFyLgorVEVTVChTdHJlYW1h
YmxlVGVzdCwgTlVMQ2hhcikgeworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQK
KyAgICBGQUlMKCkgPDwgIkEgTlVMIiA8PCAnXDAnIDw8ICIgYW5kIHNvbWUgbW9yZSBzdHJpbmci
OworICB9LCAiQSBOVUxcXDAgYW5kIHNvbWUgbW9yZSBzdHJpbmciKTsKK30KKworLy8gVGVzdHMg
dXNpbmcgaW50IGFzIGFuIGFzc2VydGlvbiBtZXNzYWdlLgorVEVTVChTdHJlYW1hYmxlVGVzdCwg
aW50KSB7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEZBSUwoKSA8PCA5MDA5MTMsCisgICAgICAg
ICAgICAgICAgICAgICAgICI5MDA5MTMiKTsKK30KKworLy8gVGVzdHMgdXNpbmcgTlVMTCBjaGFy
IHBvaW50ZXIgYXMgYW4gYXNzZXJ0aW9uIG1lc3NhZ2UuCisvLworLy8gSW4gTVNWQywgc3RyZWFt
aW5nIGEgTlVMTCBjaGFyICogY2F1c2VzIGFjY2VzcyB2aW9sYXRpb24uICBHb29nbGUgVGVzdAor
Ly8gaW1wbGVtZW50ZWQgYSB3b3JrYXJvdW5kIChzdWJzdGl0dXRpbmcgIihudWxsKSIgZm9yIE5V
TEwpLiAgVGhpcworLy8gdGVzdHMgd2hldGhlciB0aGUgd29ya2Fyb3VuZCB3b3Jrcy4KK1RFU1Qo
U3RyZWFtYWJsZVRlc3QsIE51bGxDaGFyUHRyKSB7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEZB
SUwoKSA8PCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oTlVMTCksCisgICAgICAgICAgICAgICAg
ICAgICAgICIobnVsbCkiKTsKK30KKworLy8gVGVzdHMgdGhhdCBiYXNpYyBJTyBtYW5pcHVsYXRv
cnMgKGVuZGwsIGVuZHMsIGFuZCBmbHVzaCkgY2FuIGJlCisvLyBzdHJlYW1lZCB0byB0ZXN0aW5n
OjpNZXNzYWdlLgorVEVTVChTdHJlYW1hYmxlVGVzdCwgQmFzaWNJb01hbmlwKSB7CisgIEVYUEVD
VF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEZBSUwoKSA8PCAiTGluZSAxLiIgPDwg
c3RkOjplbmRsCisgICAgICAgICAgIDw8ICJBIE5VTCBjaGFyICIgPDwgc3RkOjplbmRzIDw8IHN0
ZDo6Zmx1c2ggPDwgIiBpbiBsaW5lIDIuIjsKKyAgfSwgIkxpbmUgMS5cbkEgTlVMIGNoYXIgXFww
IGluIGxpbmUgMi4iKTsKK30KKworLy8gVGVzdHMgdGhlIG1hY3JvcyB0aGF0IGhhdmVuJ3QgYmVl
biBjb3ZlcmVkIHNvIGZhci4KKwordm9pZCBBZGRGYWlsdXJlSGVscGVyKGJvb2wqIGFib3J0ZWQp
IHsKKyAgKmFib3J0ZWQgPSB0cnVlOworICBBRERfRkFJTFVSRSgpIDw8ICJJbnRlbnRpb25hbCBm
YWlsdXJlLiI7CisgICphYm9ydGVkID0gZmFsc2U7Cit9CisKKy8vIFRlc3RzIEFERF9GQUlMVVJF
LgorVEVTVChNYWNyb1Rlc3QsIEFERF9GQUlMVVJFKSB7CisgIGJvb2wgYWJvcnRlZCA9IHRydWU7
CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFkZEZhaWx1cmVIZWxwZXIoJmFib3J0ZWQpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAiSW50ZW50aW9uYWwgZmFpbHVyZS4iKTsKKyAgRVhQ
RUNUX0ZBTFNFKGFib3J0ZWQpOworfQorCisvLyBUZXN0cyBBRERfRkFJTFVSRV9BVC4KK1RFU1Qo
TWFjcm9UZXN0LCBBRERfRkFJTFVSRV9BVCkgeworICAvLyBWZXJpZmllcyB0aGF0IEFERF9GQUlM
VVJFX0FUIGRvZXMgZ2VuZXJhdGUgYSBub25mYXRhbCBmYWlsdXJlIGFuZAorICAvLyB0aGUgZmFp
bHVyZSBtZXNzYWdlIGNvbnRhaW5zIHRoZSB1c2VyLXN0cmVhbWVkIHBhcnQuCisgIEVYUEVDVF9O
T05GQVRBTF9GQUlMVVJFKEFERF9GQUlMVVJFX0FUKCJmb28uY2MiLCA0MikgPDwgIldyb25nISIs
ICJXcm9uZyEiKTsKKworICAvLyBWZXJpZmllcyB0aGF0IHRoZSB1c2VyLXN0cmVhbWVkIHBhcnQg
aXMgb3B0aW9uYWwuCisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFERF9GQUlMVVJFX0FUKCJm
b28uY2MiLCA0MiksICJGYWlsZWQiKTsKKworICAvLyBVbmZvcnR1bmF0ZWx5LCB3ZSBjYW5ub3Qg
dmVyaWZ5IHRoYXQgdGhlIGZhaWx1cmUgbWVzc2FnZSBjb250YWlucworICAvLyB0aGUgcmlnaHQg
ZmlsZSBwYXRoIGFuZCBsaW5lIG51bWJlciB0aGUgc2FtZSB3YXksIGFzCisgIC8vIEVYUEVDVF9O
T05GQVRBTF9GQUlMVVJFKCkgZG9lc24ndCBnZXQgdG8gc2VlIHRoZSBmaWxlIHBhdGggYW5kCisg
IC8vIGxpbmUgbnVtYmVyLiAgSW5zdGVhZCwgd2UgZG8gdGhhdCBpbiBndGVzdF9vdXRwdXRfdGVz
dF8uY2MuCit9CisKKy8vIFRlc3RzIEZBSUwuCitURVNUKE1hY3JvVGVzdCwgRkFJTCkgeworICBF
WFBFQ1RfRkFUQUxfRkFJTFVSRShGQUlMKCksCisgICAgICAgICAgICAgICAgICAgICAgICJGYWls
ZWQiKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoRkFJTCgpIDw8ICJJbnRlbnRpb25hbCBmYWls
dXJlLiIsCisgICAgICAgICAgICAgICAgICAgICAgICJJbnRlbnRpb25hbCBmYWlsdXJlLiIpOwor
fQorCisvLyBUZXN0cyBTVUNDRUVECitURVNUKE1hY3JvVGVzdCwgU1VDQ0VFRCkgeworICBTVUND
RUVEKCk7CisgIFNVQ0NFRUQoKSA8PCAiRXhwbGljaXQgc3VjY2Vzcy4iOworfQorCisvLyBUZXN0
cyBmb3IgRVhQRUNUX0VRKCkgYW5kIEFTU0VSVF9FUSgpLgorLy8KKy8vIFRoZXNlIHRlc3RzIGZh
aWwgKmludGVudGlvbmFsbHkqLCBzLnQuIHRoZSBmYWlsdXJlIG1lc3NhZ2VzIGNhbiBiZQorLy8g
Z2VuZXJhdGVkIGFuZCB0ZXN0ZWQuCisvLworLy8gV2UgaGF2ZSBkaWZmZXJlbnQgdGVzdHMgZm9y
IGRpZmZlcmVudCBhcmd1bWVudCB0eXBlcy4KKworLy8gVGVzdHMgdXNpbmcgYm9vbCB2YWx1ZXMg
aW4ge0VYUEVDVHxBU1NFUlR9X0VRLgorVEVTVChFcUFzc2VydGlvblRlc3QsIEJvb2wpIHsKKyAg
RVhQRUNUX0VRKHRydWUsICB0cnVlKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeworICAgICAg
Ym9vbCBmYWxzZV92YWx1ZSA9IGZhbHNlOworICAgICAgQVNTRVJUX0VRKGZhbHNlX3ZhbHVlLCB0
cnVlKTsKKyAgICB9LCAiVG8gYmUgZXF1YWwgdG86IHRydWUiKTsKK30KKworLy8gVGVzdHMgdXNp
bmcgaW50IHZhbHVlcyBpbiB7RVhQRUNUfEFTU0VSVH1fRVEuCitURVNUKEVxQXNzZXJ0aW9uVGVz
dCwgSW50KSB7CisgIEFTU0VSVF9FUSgzMiwgMzIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RShFWFBFQ1RfRVEoMzIsIDMzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIjMzIik7Cit9
CisKKy8vIFRlc3RzIHVzaW5nIHRpbWVfdCB2YWx1ZXMgaW4ge0VYUEVDVHxBU1NFUlR9X0VRLgor
VEVTVChFcUFzc2VydGlvblRlc3QsIFRpbWVfVCkgeworICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8
dGltZV90PigwKSwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PHRpbWVfdD4oMCkpOworICBFWFBF
Q1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfRVEoc3RhdGljX2Nhc3Q8dGltZV90PigwKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHRpbWVfdD4oMTIzNCkpLAor
ICAgICAgICAgICAgICAgICAgICAgICAiMTIzNCIpOworfQorCisvLyBUZXN0cyB1c2luZyBjaGFy
IHZhbHVlcyBpbiB7RVhQRUNUfEFTU0VSVH1fRVEuCitURVNUKEVxQXNzZXJ0aW9uVGVzdCwgQ2hh
cikgeworICBBU1NFUlRfRVEoJ3onLCAneicpOworICBjb25zdCBjaGFyIGNoID0gJ2InOworICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoJ1wwJywgY2gpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAiY2giKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VR
KCdhJywgY2gpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiY2giKTsKK30KKworLy8gVGVz
dHMgdXNpbmcgd2NoYXJfdCB2YWx1ZXMgaW4ge0VYUEVDVHxBU1NFUlR9X0VRLgorVEVTVChFcUFz
c2VydGlvblRlc3QsIFdpZGVDaGFyKSB7CisgIEVYUEVDVF9FUShMJ2InLCBMJ2InKTsKKworICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoTCdcMCcsIEwneCcpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAiICAgICAgRXhwZWN0ZWQ6IEwnXDAnXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICIgICAgICBXaGljaCBpczogTCdcMCcgKDAsIDB4MClcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIlRvIGJlIGVxdWFsIHRvOiBMJ3gnXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICIgICAgICBXaGljaCBpczogTCd4JyAoMTIwLCAweDc4KSIpOworCisgIHN0
YXRpYyB3Y2hhcl90IHdjaGFyOworICB3Y2hhciA9IEwnYic7CisgIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKEVYUEVDVF9FUShMJ2EnLCB3Y2hhciksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICJ3Y2hhciIpOworICB3Y2hhciA9IDB4ODExOTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNT
RVJUX0VRKHN0YXRpY19jYXN0PHdjaGFyX3Q+KDB4ODEyMCksIHdjaGFyKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIlRvIGJlIGVxdWFsIHRvOiB3Y2hhciIpOworfQorCisvLyBUZXN0cyB1c2lu
ZyA6OnN0ZDo6c3RyaW5nIHZhbHVlcyBpbiB7RVhQRUNUfEFTU0VSVH1fRVEuCitURVNUKEVxQXNz
ZXJ0aW9uVGVzdCwgU3RkU3RyaW5nKSB7CisgIC8vIENvbXBhcmVzIGEgY29uc3QgY2hhciogdG8g
YW4gc3RkOjpzdHJpbmcgdGhhdCBoYXMgaWRlbnRpY2FsCisgIC8vIGNvbnRlbnQuCisgIEFTU0VS
VF9FUSgiVGVzdCIsIDo6c3RkOjpzdHJpbmcoIlRlc3QiKSk7CisKKyAgLy8gQ29tcGFyZXMgdHdv
IGlkZW50aWNhbCBzdGQ6OnN0cmluZ3MuCisgIHN0YXRpYyBjb25zdCA6OnN0ZDo6c3RyaW5nIHN0
cjEoIkEgKiBpbiB0aGUgbWlkZGxlIik7CisgIHN0YXRpYyBjb25zdCA6OnN0ZDo6c3RyaW5nIHN0
cjIoc3RyMSk7CisgIEVYUEVDVF9FUShzdHIxLCBzdHIyKTsKKworICAvLyBDb21wYXJlcyBhIGNv
bnN0IGNoYXIqIHRvIGFuIHN0ZDo6c3RyaW5nIHRoYXQgaGFzIGRpZmZlcmVudAorICAvLyBjb250
ZW50CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUSgiVGVzdCIsIDo6c3RkOjpz
dHJpbmcoInRlc3QiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcInRlc3RcIiIpOwor
CisgIC8vIENvbXBhcmVzIGFuIHN0ZDo6c3RyaW5nIHRvIGEgY2hhciogdGhhdCBoYXMgZGlmZmVy
ZW50IGNvbnRlbnQuCisgIGNoYXIqIGNvbnN0IHAxID0gY29uc3RfY2FzdDxjaGFyKj4oImZvbyIp
OworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoOjpzdGQ6OnN0cmluZygiYmFy
IiksIHAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInAxIik7CisKKyAgLy8gQ29tcGFy
ZXMgdHdvIHN0ZDo6c3RyaW5ncyB0aGF0IGhhdmUgZGlmZmVyZW50IGNvbnRlbnRzLCBvbmUgb2YK
KyAgLy8gd2hpY2ggaGF2aW5nIGEgTlVMIGNoYXJhY3RlciBpbiB0aGUgbWlkZGxlLiAgVGhpcyBz
aG91bGQgZmFpbC4KKyAgc3RhdGljIDo6c3RkOjpzdHJpbmcgc3RyMyhzdHIxKTsKKyAgc3RyMy5h
dCgyKSA9ICdcMCc7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUShzdHIxLCBzdHIz
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIlRvIGJlIGVxdWFsIHRvOiBzdHIzXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICIgICAgICBXaGljaCBpczogXCJBIFxcMCBpbiB0aGUgbWlkZGxl
XCIiKTsKK30KKworI2lmIEdURVNUX0hBU19TVERfV1NUUklORworCisvLyBUZXN0cyB1c2luZyA6
OnN0ZDo6d3N0cmluZyB2YWx1ZXMgaW4ge0VYUEVDVHxBU1NFUlR9X0VRLgorVEVTVChFcUFzc2Vy
dGlvblRlc3QsIFN0ZFdpZGVTdHJpbmcpIHsKKyAgLy8gQ29tcGFyZXMgdHdvIGlkZW50aWNhbCBz
dGQ6OndzdHJpbmdzLgorICBjb25zdCA6OnN0ZDo6d3N0cmluZyB3c3RyMShMIkEgKiBpbiB0aGUg
bWlkZGxlIik7CisgIGNvbnN0IDo6c3RkOjp3c3RyaW5nIHdzdHIyKHdzdHIxKTsKKyAgQVNTRVJU
X0VRKHdzdHIxLCB3c3RyMik7CisKKyAgLy8gQ29tcGFyZXMgYW4gc3RkOjp3c3RyaW5nIHRvIGEg
Y29uc3Qgd2NoYXJfdCogdGhhdCBoYXMgaWRlbnRpY2FsCisgIC8vIGNvbnRlbnQuCisgIGNvbnN0
IHdjaGFyX3Qga1Rlc3RYODExOVtdID0geyAnVCcsICdlJywgJ3MnLCAndCcsIDB4ODExOSwgJ1ww
JyB9OworICBFWFBFQ1RfRVEoOjpzdGQ6OndzdHJpbmcoa1Rlc3RYODExOSksIGtUZXN0WDgxMTkp
OworCisgIC8vIENvbXBhcmVzIGFuIHN0ZDo6d3N0cmluZyB0byBhIGNvbnN0IHdjaGFyX3QqIHRo
YXQgaGFzIGRpZmZlcmVudAorICAvLyBjb250ZW50LgorICBjb25zdCB3Y2hhcl90IGtUZXN0WDgx
MjBbXSA9IHsgJ1QnLCAnZScsICdzJywgJ3QnLCAweDgxMjAsICdcMCcgfTsKKyAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAgRVhQRUNUX0VRKDo6c3RkOjp3c3RyaW5n
KGtUZXN0WDgxMTkpLCBrVGVzdFg4MTIwKTsKKyAgfSwgImtUZXN0WDgxMjAiKTsKKworICAvLyBD
b21wYXJlcyB0d28gc3RkOjp3c3RyaW5ncyB0aGF0IGhhdmUgZGlmZmVyZW50IGNvbnRlbnRzLCBv
bmUgb2YKKyAgLy8gd2hpY2ggaGF2aW5nIGEgTlVMIGNoYXJhY3RlciBpbiB0aGUgbWlkZGxlLgor
ICA6OnN0ZDo6d3N0cmluZyB3c3RyMyh3c3RyMSk7CisgIHdzdHIzLmF0KDIpID0gTCdcMCc7Cisg
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUSh3c3RyMSwgd3N0cjMpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAid3N0cjMiKTsKKworICAvLyBDb21wYXJlcyBhIHdjaGFyX3Qq
IHRvIGFuIHN0ZDo6d3N0cmluZyB0aGF0IGhhcyBkaWZmZXJlbnQKKyAgLy8gY29udGVudC4KKyAg
RVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAgQVNTRVJUX0VRKGNvbnN0X2Nh
c3Q8d2NoYXJfdCo+KEwiZm9vIiksIDo6c3RkOjp3c3RyaW5nKEwiYmFyIikpOworICB9LCAiIik7
Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9XU1RSSU5HCisKKyNpZiBHVEVTVF9IQVNf
R0xPQkFMX1NUUklORworLy8gVGVzdHMgdXNpbmcgOjpzdHJpbmcgdmFsdWVzIGluIHtFWFBFQ1R8
QVNTRVJUfV9FUS4KK1RFU1QoRXFBc3NlcnRpb25UZXN0LCBHbG9iYWxTdHJpbmcpIHsKKyAgLy8g
Q29tcGFyZXMgYSBjb25zdCBjaGFyKiB0byBhIDo6c3RyaW5nIHRoYXQgaGFzIGlkZW50aWNhbCBj
b250ZW50LgorICBFWFBFQ1RfRVEoIlRlc3QiLCA6OnN0cmluZygiVGVzdCIpKTsKKworICAvLyBD
b21wYXJlcyB0d28gaWRlbnRpY2FsIDo6c3RyaW5ncy4KKyAgY29uc3QgOjpzdHJpbmcgc3RyMSgi
QSAqIGluIHRoZSBtaWRkbGUiKTsKKyAgY29uc3QgOjpzdHJpbmcgc3RyMihzdHIxKTsKKyAgQVNT
RVJUX0VRKHN0cjEsIHN0cjIpOworCisgIC8vIENvbXBhcmVzIGEgOjpzdHJpbmcgdG8gYSBjb25z
dCBjaGFyKiB0aGF0IGhhcyBkaWZmZXJlbnQgY29udGVudC4KKyAgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoRVhQRUNUX0VRKDo6c3RyaW5nKCJUZXN0IiksICJ0ZXN0IiksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICJ0ZXN0Iik7CisKKyAgLy8gQ29tcGFyZXMgdHdvIDo6c3RyaW5ncyB0aGF0
IGhhdmUgZGlmZmVyZW50IGNvbnRlbnRzLCBvbmUgb2Ygd2hpY2gKKyAgLy8gaGF2aW5nIGEgTlVM
IGNoYXJhY3RlciBpbiB0aGUgbWlkZGxlLgorICA6OnN0cmluZyBzdHIzKHN0cjEpOworICBzdHIz
LmF0KDIpID0gJ1wwJzsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKHN0cjEs
IHN0cjMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAic3RyMyIpOworCisgIC8vIENvbXBh
cmVzIGEgOjpzdHJpbmcgdG8gYSBjaGFyKiB0aGF0IGhhcyBkaWZmZXJlbnQgY29udGVudC4KKyAg
RVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAgQVNTRVJUX0VRKDo6c3RyaW5n
KCJiYXIiKSwgY29uc3RfY2FzdDxjaGFyKj4oImZvbyIpKTsKKyAgfSwgIiIpOworfQorCisjZW5k
aWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisKKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1dT
VFJJTkcKKworLy8gVGVzdHMgdXNpbmcgOjp3c3RyaW5nIHZhbHVlcyBpbiB7RVhQRUNUfEFTU0VS
VH1fRVEuCitURVNUKEVxQXNzZXJ0aW9uVGVzdCwgR2xvYmFsV2lkZVN0cmluZykgeworICAvLyBD
b21wYXJlcyB0d28gaWRlbnRpY2FsIDo6d3N0cmluZ3MuCisgIHN0YXRpYyBjb25zdCA6OndzdHJp
bmcgd3N0cjEoTCJBICogaW4gdGhlIG1pZGRsZSIpOworICBzdGF0aWMgY29uc3QgOjp3c3RyaW5n
IHdzdHIyKHdzdHIxKTsKKyAgRVhQRUNUX0VRKHdzdHIxLCB3c3RyMik7CisKKyAgLy8gQ29tcGFy
ZXMgYSBjb25zdCB3Y2hhcl90KiB0byBhIDo6d3N0cmluZyB0aGF0IGhhcyBpZGVudGljYWwgY29u
dGVudC4KKyAgY29uc3Qgd2NoYXJfdCBrVGVzdFg4MTE5W10gPSB7ICdUJywgJ2UnLCAncycsICd0
JywgMHg4MTE5LCAnXDAnIH07CisgIEFTU0VSVF9FUShrVGVzdFg4MTE5LCA6OndzdHJpbmcoa1Rl
c3RYODExOSkpOworCisgIC8vIENvbXBhcmVzIGEgY29uc3Qgd2NoYXJfdCogdG8gYSA6OndzdHJp
bmcgdGhhdCBoYXMgZGlmZmVyZW50CisgIC8vIGNvbnRlbnQuCisgIGNvbnN0IHdjaGFyX3Qga1Rl
c3RYODEyMFtdID0geyAnVCcsICdlJywgJ3MnLCAndCcsIDB4ODEyMCwgJ1wwJyB9OworICBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBFWFBFQ1RfRVEoa1Rlc3RYODEy
MCwgOjp3c3RyaW5nKGtUZXN0WDgxMTkpKTsKKyAgfSwgIlRlc3RcXHg4MTE5Iik7CisKKyAgLy8g
Q29tcGFyZXMgYSB3Y2hhcl90KiB0byBhIDo6d3N0cmluZyB0aGF0IGhhcyBkaWZmZXJlbnQgY29u
dGVudC4KKyAgd2NoYXJfdCogY29uc3QgcDEgPSBjb25zdF9jYXN0PHdjaGFyX3QqPihMImZvbyIp
OworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEocDEsIDo6d3N0cmluZyhMImJh
ciIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImJhciIpOworCisgIC8vIENvbXBhcmVz
IHR3byA6OndzdHJpbmdzIHRoYXQgaGF2ZSBkaWZmZXJlbnQgY29udGVudHMsIG9uZSBvZiB3aGlj
aAorICAvLyBoYXZpbmcgYSBOVUwgY2hhcmFjdGVyIGluIHRoZSBtaWRkbGUuCisgIHN0YXRpYyA6
OndzdHJpbmcgd3N0cjM7CisgIHdzdHIzID0gd3N0cjE7CisgIHdzdHIzLmF0KDIpID0gTCdcMCc7
CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUSh3c3RyMSwgd3N0cjMpLAorICAgICAg
ICAgICAgICAgICAgICAgICAid3N0cjMiKTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xP
QkFMX1dTVFJJTkcKKworLy8gVGVzdHMgdXNpbmcgY2hhciBwb2ludGVycyBpbiB7RVhQRUNUfEFT
U0VSVH1fRVEuCitURVNUKEVxQXNzZXJ0aW9uVGVzdCwgQ2hhclBvaW50ZXIpIHsKKyAgY2hhciog
Y29uc3QgcDAgPSBOVUxMOworICAvLyBPbmx5IHdheSB0byBnZXQgdGhlIE5va2lhIGNvbXBpbGVy
IHRvIGNvbXBpbGUgdGhlIGNhc3QKKyAgLy8gaXMgdG8gaGF2ZSBhIHNlcGFyYXRlIHZvaWQqIHZh
cmlhYmxlIGZpcnN0LiBQdXR0aW5nCisgIC8vIHRoZSB0d28gY2FzdHMgb24gdGhlIHNhbWUgbGlu
ZSBkb2Vzbid0IHdvcmssIG5laXRoZXIgZG9lcworICAvLyBhIGRpcmVjdCBDLXN0eWxlIHRvIGNo
YXIqLgorICB2b2lkKiBwdjEgPSAodm9pZCopMHgxMjM0OyAgLy8gTk9MSU5UCisgIHZvaWQqIHB2
MiA9ICh2b2lkKikweEFCQzA7ICAvLyBOT0xJTlQKKyAgY2hhciogY29uc3QgcDEgPSByZWludGVy
cHJldF9jYXN0PGNoYXIqPihwdjEpOworICBjaGFyKiBjb25zdCBwMiA9IHJlaW50ZXJwcmV0X2Nh
c3Q8Y2hhcio+KHB2Mik7CisgIEFTU0VSVF9FUShwMSwgcDEpOworCisgIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKEVYUEVDVF9FUShwMCwgcDIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAi
VG8gYmUgZXF1YWwgdG86IHAyIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9F
UShwMSwgcDIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAicDIiKTsKKyAgRVhQRUNUX0ZB
VEFMX0ZBSUxVUkUoQVNTRVJUX0VRKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KDB4MTIzNCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNoYXIqPigw
eEFCQzApKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIkFCQzAiKTsKK30KKworLy8gVGVzdHMg
dXNpbmcgd2NoYXJfdCBwb2ludGVycyBpbiB7RVhQRUNUfEFTU0VSVH1fRVEuCitURVNUKEVxQXNz
ZXJ0aW9uVGVzdCwgV2lkZUNoYXJQb2ludGVyKSB7CisgIHdjaGFyX3QqIGNvbnN0IHAwID0gTlVM
TDsKKyAgLy8gT25seSB3YXkgdG8gZ2V0IHRoZSBOb2tpYSBjb21waWxlciB0byBjb21waWxlIHRo
ZSBjYXN0CisgIC8vIGlzIHRvIGhhdmUgYSBzZXBhcmF0ZSB2b2lkKiB2YXJpYWJsZSBmaXJzdC4g
UHV0dGluZworICAvLyB0aGUgdHdvIGNhc3RzIG9uIHRoZSBzYW1lIGxpbmUgZG9lc24ndCB3b3Jr
LCBuZWl0aGVyIGRvZXMKKyAgLy8gYSBkaXJlY3QgQy1zdHlsZSB0byBjaGFyKi4KKyAgdm9pZCog
cHYxID0gKHZvaWQqKTB4MTIzNDsgIC8vIE5PTElOVAorICB2b2lkKiBwdjIgPSAodm9pZCopMHhB
QkMwOyAgLy8gTk9MSU5UCisgIHdjaGFyX3QqIGNvbnN0IHAxID0gcmVpbnRlcnByZXRfY2FzdDx3
Y2hhcl90Kj4ocHYxKTsKKyAgd2NoYXJfdCogY29uc3QgcDIgPSByZWludGVycHJldF9jYXN0PHdj
aGFyX3QqPihwdjIpOworICBFWFBFQ1RfRVEocDAsIHAwKTsKKworICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRShFWFBFQ1RfRVEocDAsIHAyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlRv
IGJlIGVxdWFsIHRvOiBwMiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEo
cDEsIHAyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInAyIik7CisgIHZvaWQqIHB2MyA9
ICh2b2lkKikweDEyMzQ7ICAvLyBOT0xJTlQKKyAgdm9pZCogcHY0ID0gKHZvaWQqKTB4QUJDMDsg
IC8vIE5PTElOVAorICBjb25zdCB3Y2hhcl90KiBwMyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
d2NoYXJfdCo+KHB2Myk7CisgIGNvbnN0IHdjaGFyX3QqIHA0ID0gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB3Y2hhcl90Kj4ocHY0KTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VR
KHAzLCBwNCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICJwNCIpOworfQorCisvLyBUZXN0
cyB1c2luZyBvdGhlciB0eXBlcyBvZiBwb2ludGVycyBpbiB7RVhQRUNUfEFTU0VSVH1fRVEuCitU
RVNUKEVxQXNzZXJ0aW9uVGVzdCwgT3RoZXJQb2ludGVyKSB7CisgIEFTU0VSVF9FUShzdGF0aWNf
Y2FzdDxjb25zdCBpbnQqPihOVUxMKSwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IGlu
dCo+KE5VTEwpKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0VRKHN0YXRpY19jYXN0
PGNvbnN0IGludCo+KE5VTEwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBpbnQqPigweDEyMzQpKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIjB4MTIzNCIpOworfQorCisvLyBBIGNsYXNzIHRoYXQgc3VwcG9ydHMgYmluYXJ5IGNvbXBh
cmlzb24gb3BlcmF0b3JzIGJ1dCBub3Qgc3RyZWFtaW5nLgorY2xhc3MgVW5wcmludGFibGVDaGFy
IHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IFVucHJpbnRhYmxlQ2hhcihjaGFyIGNoKSA6IGNoYXJf
KGNoKSB7fQorCisgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVbnByaW50YWJsZUNoYXImIHJocykg
Y29uc3QgeworICAgIHJldHVybiBjaGFyXyA9PSByaHMuY2hhcl87CisgIH0KKyAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFVucHJpbnRhYmxlQ2hhciYgcmhzKSBjb25zdCB7CisgICAgcmV0dXJuIGNo
YXJfICE9IHJocy5jaGFyXzsKKyAgfQorICBib29sIG9wZXJhdG9yPChjb25zdCBVbnByaW50YWJs
ZUNoYXImIHJocykgY29uc3QgeworICAgIHJldHVybiBjaGFyXyA8IHJocy5jaGFyXzsKKyAgfQor
ICBib29sIG9wZXJhdG9yPD0oY29uc3QgVW5wcmludGFibGVDaGFyJiByaHMpIGNvbnN0IHsKKyAg
ICByZXR1cm4gY2hhcl8gPD0gcmhzLmNoYXJfOworICB9CisgIGJvb2wgb3BlcmF0b3I+KGNvbnN0
IFVucHJpbnRhYmxlQ2hhciYgcmhzKSBjb25zdCB7CisgICAgcmV0dXJuIGNoYXJfID4gcmhzLmNo
YXJfOworICB9CisgIGJvb2wgb3BlcmF0b3I+PShjb25zdCBVbnByaW50YWJsZUNoYXImIHJocykg
Y29uc3QgeworICAgIHJldHVybiBjaGFyXyA+PSByaHMuY2hhcl87CisgIH0KKworIHByaXZhdGU6
CisgIGNoYXIgY2hhcl87Cit9OworCisvLyBUZXN0cyB0aGF0IEFTU0VSVF9FUSgpIGFuZCBmcmll
bmRzIGRvbid0IHJlcXVpcmUgdGhlIGFyZ3VtZW50cyB0bworLy8gYmUgcHJpbnRhYmxlLgorVEVT
VChDb21wYXJpc29uQXNzZXJ0aW9uVGVzdCwgQWNjZXB0c1VucHJpbnRhYmxlQXJncykgeworICBj
b25zdCBVbnByaW50YWJsZUNoYXIgeCgneCcpLCB5KCd5Jyk7CisgIEFTU0VSVF9FUSh4LCB4KTsK
KyAgRVhQRUNUX05FKHgsIHkpOworICBBU1NFUlRfTFQoeCwgeSk7CisgIEVYUEVDVF9MRSh4LCB5
KTsKKyAgQVNTRVJUX0dUKHksIHgpOworICBFWFBFQ1RfR0UoeCwgeCk7CisKKyAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKHgsIHkpLCAiMS1ieXRlIG9iamVjdCA8Nzg+Iik7Cisg
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUSh4LCB5KSwgIjEtYnl0ZSBvYmplY3Qg
PDc5PiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfTFQoeSwgeSksICIxLWJ5
dGUgb2JqZWN0IDw3OT4iKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0dUKHgs
IHkpLCAiMS1ieXRlIG9iamVjdCA8Nzg+Iik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVY
UEVDVF9HVCh4LCB5KSwgIjEtYnl0ZSBvYmplY3QgPDc5PiIpOworCisgIC8vIENvZGUgdGVzdGVk
IGJ5IEVYUEVDVF9GQVRBTF9GQUlMVVJFIGNhbm5vdCByZWZlcmVuY2UgbG9jYWwKKyAgLy8gdmFy
aWFibGVzLCBzbyB3ZSBoYXZlIHRvIHdyaXRlIFVucHJpbnRhYmxlQ2hhcigneCcpIGluc3RlYWQg
b2YgeC4KKyNpZm5kZWYgX19CT1JMQU5EQ19fCisgIC8vIElDRSdzIGluIEMrK0J1aWxkZXIuCisg
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9ORShVbnByaW50YWJsZUNoYXIoJ3gnKSwgVW5w
cmludGFibGVDaGFyKCd4JykpLAorICAgICAgICAgICAgICAgICAgICAgICAiMS1ieXRlIG9iamVj
dCA8Nzg+Iik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9MRShVbnByaW50YWJsZUNo
YXIoJ3knKSwgVW5wcmludGFibGVDaGFyKCd4JykpLAorICAgICAgICAgICAgICAgICAgICAgICAi
MS1ieXRlIG9iamVjdCA8Nzg+Iik7CisjZW5kaWYKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNT
RVJUX0xFKFVucHJpbnRhYmxlQ2hhcigneScpLCBVbnByaW50YWJsZUNoYXIoJ3gnKSksCisgICAg
ICAgICAgICAgICAgICAgICAgICIxLWJ5dGUgb2JqZWN0IDw3OT4iKTsKKyAgRVhQRUNUX0ZBVEFM
X0ZBSUxVUkUoQVNTRVJUX0dFKFVucHJpbnRhYmxlQ2hhcigneCcpLCBVbnByaW50YWJsZUNoYXIo
J3knKSksCisgICAgICAgICAgICAgICAgICAgICAgICIxLWJ5dGUgb2JqZWN0IDw3OD4iKTsKKyAg
RVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0dFKFVucHJpbnRhYmxlQ2hhcigneCcpLCBVbnBy
aW50YWJsZUNoYXIoJ3knKSksCisgICAgICAgICAgICAgICAgICAgICAgICIxLWJ5dGUgb2JqZWN0
IDw3OT4iKTsKK30KKworLy8gVGVzdHMgdGhlIEZSSUVORF9URVNUIG1hY3JvLgorCisvLyBUaGlz
IGNsYXNzIGhhcyBhIHByaXZhdGUgbWVtYmVyIHdlIHdhbnQgdG8gdGVzdC4gIFdlIHdpbGwgdGVz
dCBpdAorLy8gYm90aCBpbiBhIFRFU1QgYW5kIGluIGEgVEVTVF9GLgorY2xhc3MgRm9vIHsKKyBw
dWJsaWM6CisgIEZvbygpIHt9CisKKyBwcml2YXRlOgorICBpbnQgQmFyKCkgY29uc3QgeyByZXR1
cm4gMTsgfQorCisgIC8vIERlY2xhcmVzIHRoZSBmcmllbmQgdGVzdHMgdGhhdCBjYW4gYWNjZXNz
IHRoZSBwcml2YXRlIG1lbWJlcgorICAvLyBCYXIoKS4KKyAgRlJJRU5EX1RFU1QoRlJJRU5EX1RF
U1RfVGVzdCwgVEVTVCk7CisgIEZSSUVORF9URVNUKEZSSUVORF9URVNUX1Rlc3QyLCBURVNUX0Yp
OworfTsKKworLy8gVGVzdHMgdGhhdCB0aGUgRlJJRU5EX1RFU1QgZGVjbGFyYXRpb24gYWxsb3dz
IGEgVEVTVCB0byBhY2Nlc3MgYQorLy8gY2xhc3MncyBwcml2YXRlIG1lbWJlcnMuICBUaGlzIHNo
b3VsZCBjb21waWxlLgorVEVTVChGUklFTkRfVEVTVF9UZXN0LCBURVNUKSB7CisgIEFTU0VSVF9F
USgxLCBGb28oKS5CYXIoKSk7Cit9CisKKy8vIFRoZSBmaXh0dXJlIG5lZWRlZCB0byB0ZXN0IHVz
aW5nIEZSSUVORF9URVNUIHdpdGggVEVTVF9GLgorY2xhc3MgRlJJRU5EX1RFU1RfVGVzdDIgOiBw
dWJsaWMgVGVzdCB7CisgcHJvdGVjdGVkOgorICBGb28gZm9vOworfTsKKworLy8gVGVzdHMgdGhh
dCB0aGUgRlJJRU5EX1RFU1QgZGVjbGFyYXRpb24gYWxsb3dzIGEgVEVTVF9GIHRvIGFjY2VzcyBh
CisvLyBjbGFzcydzIHByaXZhdGUgbWVtYmVycy4gIFRoaXMgc2hvdWxkIGNvbXBpbGUuCitURVNU
X0YoRlJJRU5EX1RFU1RfVGVzdDIsIFRFU1RfRikgeworICBBU1NFUlRfRVEoMSwgZm9vLkJhcigp
KTsKK30KKworLy8gVGVzdHMgdGhlIGxpZmUgY3ljbGUgb2YgVGVzdCBvYmplY3RzLgorCisvLyBU
aGUgdGVzdCBmaXh0dXJlIGZvciB0ZXN0aW5nIHRoZSBsaWZlIGN5Y2xlIG9mIFRlc3Qgb2JqZWN0
cy4KKy8vCisvLyBUaGlzIGNsYXNzIGNvdW50cyB0aGUgbnVtYmVyIG9mIGxpdmUgdGVzdCBvYmpl
Y3RzIHRoYXQgdXNlcyB0aGlzCisvLyBmaXh0dXJlLgorY2xhc3MgVGVzdExpZmVDeWNsZVRlc3Qg
OiBwdWJsaWMgVGVzdCB7CisgcHJvdGVjdGVkOgorICAvLyBDb25zdHJ1Y3Rvci4gIEluY3JlbWVu
dHMgdGhlIG51bWJlciBvZiB0ZXN0IG9iamVjdHMgdGhhdCB1c2VzCisgIC8vIHRoaXMgZml4dHVy
ZS4KKyAgVGVzdExpZmVDeWNsZVRlc3QoKSB7IGNvdW50XysrOyB9CisKKyAgLy8gRGVzdHJ1Y3Rv
ci4gIERlY3JlbWVudHMgdGhlIG51bWJlciBvZiB0ZXN0IG9iamVjdHMgdGhhdCB1c2VzIHRoaXMK
KyAgLy8gZml4dHVyZS4KKyAgflRlc3RMaWZlQ3ljbGVUZXN0KCkgeyBjb3VudF8tLTsgfQorCisg
IC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBsaXZlIHRlc3Qgb2JqZWN0cyB0aGF0IHVzZXMgdGhp
cyBmaXh0dXJlLgorICBpbnQgY291bnQoKSBjb25zdCB7IHJldHVybiBjb3VudF87IH0KKworIHBy
aXZhdGU6CisgIHN0YXRpYyBpbnQgY291bnRfOworfTsKKworaW50IFRlc3RMaWZlQ3ljbGVUZXN0
Ojpjb3VudF8gPSAwOworCisvLyBUZXN0cyB0aGUgbGlmZSBjeWNsZSBvZiB0ZXN0IG9iamVjdHMu
CitURVNUX0YoVGVzdExpZmVDeWNsZVRlc3QsIFRlc3QxKSB7CisgIC8vIFRoZXJlIHNob3VsZCBi
ZSBvbmx5IG9uZSB0ZXN0IG9iamVjdCBpbiB0aGlzIHRlc3QgY2FzZSB0aGF0J3MKKyAgLy8gY3Vy
cmVudGx5IGFsaXZlLgorICBBU1NFUlRfRVEoMSwgY291bnQoKSk7Cit9CisKKy8vIFRlc3RzIHRo
ZSBsaWZlIGN5Y2xlIG9mIHRlc3Qgb2JqZWN0cy4KK1RFU1RfRihUZXN0TGlmZUN5Y2xlVGVzdCwg
VGVzdDIpIHsKKyAgLy8gQWZ0ZXIgVGVzdDEgaXMgZG9uZSBhbmQgVGVzdDIgaXMgc3RhcnRlZCwg
dGhlcmUgc2hvdWxkIHN0aWxsIGJlCisgIC8vIG9ubHkgb25lIGxpdmUgdGVzdCBvYmplY3QsIGFz
IHRoZSBvYmplY3QgZm9yIFRlc3QxIHNob3VsZCd2ZSBiZWVuCisgIC8vIGRlbGV0ZWQuCisgIEFT
U0VSVF9FUSgxLCBjb3VudCgpKTsKK30KKworfSAgLy8gbmFtZXNwYWNlCisKKy8vIFRlc3RzIHRo
YXQgdGhlIGNvcHkgY29uc3RydWN0b3Igd29ya3Mgd2hlbiBpdCBpcyBOT1Qgb3B0aW1pemVkIGF3
YXkgYnkKKy8vIHRoZSBjb21waWxlci4KK1RFU1QoQXNzZXJ0aW9uUmVzdWx0VGVzdCwgQ29weUNv
bnN0cnVjdG9yV29ya3NXaGVuTm90T3B0aW1pZWQpIHsKKyAgLy8gQ2hlY2tzIHRoYXQgdGhlIGNv
cHkgY29uc3RydWN0b3IgZG9lc24ndCB0cnkgdG8gZGVyZWZlcmVuY2UgTlVMTCBwb2ludGVycwor
ICAvLyBpbiB0aGUgc291cmNlIG9iamVjdC4KKyAgQXNzZXJ0aW9uUmVzdWx0IHIxID0gQXNzZXJ0
aW9uU3VjY2VzcygpOworICBBc3NlcnRpb25SZXN1bHQgcjIgPSByMTsKKyAgLy8gVGhlIGZvbGxv
d2luZyBsaW5lIGlzIGFkZGVkIHRvIHByZXZlbnQgdGhlIGNvbXBpbGVyIGZyb20gb3B0aW1pemlu
ZworICAvLyBhd2F5IHRoZSBjb25zdHJ1Y3RvciBjYWxsLgorICByMSA8PCAiYWJjIjsKKworICBB
c3NlcnRpb25SZXN1bHQgcjMgPSByMTsKKyAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGJvb2w+KHIz
KSwgc3RhdGljX2Nhc3Q8Ym9vbD4ocjEpKTsKKyAgRVhQRUNUX1NUUkVRKCJhYmMiLCByMS5tZXNz
YWdlKCkpOworfQorCisvLyBUZXN0cyB0aGF0IEFzc2VydGlvblN1Y2Nlc3MgYW5kIEFzc2VydGlv
bkZhaWx1cmUgY29uc3RydWN0CisvLyBBc3NlcnRpb25SZXN1bHQgb2JqZWN0cyBhcyBleHBlY3Rl
ZC4KK1RFU1QoQXNzZXJ0aW9uUmVzdWx0VGVzdCwgQ29uc3RydWN0aW9uV29ya3MpIHsKKyAgQXNz
ZXJ0aW9uUmVzdWx0IHIxID0gQXNzZXJ0aW9uU3VjY2VzcygpOworICBFWFBFQ1RfVFJVRShyMSk7
CisgIEVYUEVDVF9TVFJFUSgiIiwgcjEubWVzc2FnZSgpKTsKKworICBBc3NlcnRpb25SZXN1bHQg
cjIgPSBBc3NlcnRpb25TdWNjZXNzKCkgPDwgImFiYyI7CisgIEVYUEVDVF9UUlVFKHIyKTsKKyAg
RVhQRUNUX1NUUkVRKCJhYmMiLCByMi5tZXNzYWdlKCkpOworCisgIEFzc2VydGlvblJlc3VsdCBy
MyA9IEFzc2VydGlvbkZhaWx1cmUoKTsKKyAgRVhQRUNUX0ZBTFNFKHIzKTsKKyAgRVhQRUNUX1NU
UkVRKCIiLCByMy5tZXNzYWdlKCkpOworCisgIEFzc2VydGlvblJlc3VsdCByNCA9IEFzc2VydGlv
bkZhaWx1cmUoKSA8PCAiZGVmIjsKKyAgRVhQRUNUX0ZBTFNFKHI0KTsKKyAgRVhQRUNUX1NUUkVR
KCJkZWYiLCByNC5tZXNzYWdlKCkpOworCisgIEFzc2VydGlvblJlc3VsdCByNSA9IEFzc2VydGlv
bkZhaWx1cmUoTWVzc2FnZSgpIDw8ICJnaGkiKTsKKyAgRVhQRUNUX0ZBTFNFKHI1KTsKKyAgRVhQ
RUNUX1NUUkVRKCJnaGkiLCByNS5tZXNzYWdlKCkpOworfQorCisvLyBUZXN0cyB0aGF0IHRoZSBu
ZWdhdGlvbiBmbGlwcyB0aGUgcHJlZGljYXRlIHJlc3VsdCBidXQga2VlcHMgdGhlIG1lc3NhZ2Uu
CitURVNUKEFzc2VydGlvblJlc3VsdFRlc3QsIE5lZ2F0aW9uV29ya3MpIHsKKyAgQXNzZXJ0aW9u
UmVzdWx0IHIxID0gQXNzZXJ0aW9uU3VjY2VzcygpIDw8ICJhYmMiOworICBFWFBFQ1RfRkFMU0Uo
IXIxKTsKKyAgRVhQRUNUX1NUUkVRKCJhYmMiLCAoIXIxKS5tZXNzYWdlKCkpOworCisgIEFzc2Vy
dGlvblJlc3VsdCByMiA9IEFzc2VydGlvbkZhaWx1cmUoKSA8PCAiZGVmIjsKKyAgRVhQRUNUX1RS
VUUoIXIyKTsKKyAgRVhQRUNUX1NUUkVRKCJkZWYiLCAoIXIyKS5tZXNzYWdlKCkpOworfQorCitU
RVNUKEFzc2VydGlvblJlc3VsdFRlc3QsIFN0cmVhbWluZ1dvcmtzKSB7CisgIEFzc2VydGlvblJl
c3VsdCByID0gQXNzZXJ0aW9uU3VjY2VzcygpOworICByIDw8ICJhYmMiIDw8ICdkJyA8PCAwIDw8
IHRydWU7CisgIEVYUEVDVF9TVFJFUSgiYWJjZDB0cnVlIiwgci5tZXNzYWdlKCkpOworfQorCitU
RVNUKEFzc2VydGlvblJlc3VsdFRlc3QsIENhblN0cmVhbU9zdHJlYW1NYW5pcHVsYXRvcnMpIHsK
KyAgQXNzZXJ0aW9uUmVzdWx0IHIgPSBBc3NlcnRpb25TdWNjZXNzKCk7CisgIHIgPDwgIkRhdGEi
IDw8IHN0ZDo6ZW5kbCA8PCBzdGQ6OmZsdXNoIDw8IHN0ZDo6ZW5kcyA8PCAiV2lsbCBiZSB2aXNp
YmxlIjsKKyAgRVhQRUNUX1NUUkVRKCJEYXRhXG5cXDBXaWxsIGJlIHZpc2libGUiLCByLm1lc3Nh
Z2UoKSk7Cit9CisKKy8vIFRoZSBuZXh0IHRlc3QgdXNlcyBleHBsaWNpdCBjb252ZXJzaW9uIG9w
ZXJhdG9ycyAtLSBhIEMrKzExIGZlYXR1cmUuCisjaWYgR1RFU1RfTEFOR19DWFgxMQorCitURVNU
KEFzc2VydGlvblJlc3VsdFRlc3QsIENvbnN0cnVjdGlibGVGcm9tQ29udGV4dHVhbGx5Q29udmVy
dGlibGVUb0Jvb2wpIHsKKyAgc3RydWN0IEV4cGxpY2l0bHlDb252ZXJ0aWJsZVRvQm9vbCB7Cisg
ICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlOyB9CisgICAg
Ym9vbCB2YWx1ZTsKKyAgfTsKKyAgRXhwbGljaXRseUNvbnZlcnRpYmxlVG9Cb29sIHYxID0ge2Zh
bHNlfTsKKyAgRXhwbGljaXRseUNvbnZlcnRpYmxlVG9Cb29sIHYyID0ge3RydWV9OworICBFWFBF
Q1RfRkFMU0UodjEpOworICBFWFBFQ1RfVFJVRSh2Mik7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1Rf
TEFOR19DWFgxMQorCitzdHJ1Y3QgQ29udmVydGlibGVUb0Fzc2VydGlvblJlc3VsdCB7CisgIG9w
ZXJhdG9yIEFzc2VydGlvblJlc3VsdCgpIGNvbnN0IHsgcmV0dXJuIEFzc2VydGlvblJlc3VsdCh0
cnVlKTsgfQorfTsKKworVEVTVChBc3NlcnRpb25SZXN1bHRUZXN0LCBDb25zdHJ1Y3RpYmxlRnJv
bUltcGxpY2l0bHlDb252ZXJ0aWJsZSkgeworICBDb252ZXJ0aWJsZVRvQXNzZXJ0aW9uUmVzdWx0
IG9iajsKKyAgRVhQRUNUX1RSVUUob2JqKTsKK30KKworLy8gVGVzdHMgc3RyZWFtaW5nIGEgdXNl
ciB0eXBlIHdob3NlIGRlZmluaXRpb24gYW5kIG9wZXJhdG9yIDw8IGFyZQorLy8gYm90aCBpbiB0
aGUgZ2xvYmFsIG5hbWVzcGFjZS4KK2NsYXNzIEJhc2UgeworIHB1YmxpYzoKKyAgZXhwbGljaXQg
QmFzZShpbnQgYW5feCkgOiB4Xyhhbl94KSB7fQorICBpbnQgeCgpIGNvbnN0IHsgcmV0dXJuIHhf
OyB9CisgcHJpdmF0ZToKKyAgaW50IHhfOworfTsKK3N0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChz
dGQ6Om9zdHJlYW0mIG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJhc2UmIHZh
bCkgeworICByZXR1cm4gb3MgPDwgdmFsLngoKTsKK30KK3N0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8
PChzdGQ6Om9zdHJlYW0mIG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJhc2Uq
IHBvaW50ZXIpIHsKKyAgcmV0dXJuIG9zIDw8ICIoIiA8PCBwb2ludGVyLT54KCkgPDwgIikiOwor
fQorCitURVNUKE1lc3NhZ2VUZXN0LCBDYW5TdHJlYW1Vc2VyVHlwZUluR2xvYmFsTmFtZVNwYWNl
KSB7CisgIE1lc3NhZ2UgbXNnOworICBCYXNlIGEoMSk7CisKKyAgbXNnIDw8IGEgPDwgJmE7ICAv
LyBVc2VzIDo6b3BlcmF0b3I8PC4KKyAgRVhQRUNUX1NUUkVRKCIxKDEpIiwgbXNnLkdldFN0cmlu
ZygpLmNfc3RyKCkpOworfQorCisvLyBUZXN0cyBzdHJlYW1pbmcgYSB1c2VyIHR5cGUgd2hvc2Ug
ZGVmaW5pdGlvbiBhbmQgb3BlcmF0b3I8PCBhcmUKKy8vIGJvdGggaW4gYW4gdW5uYW1lZCBuYW1l
c3BhY2UuCituYW1lc3BhY2UgeworY2xhc3MgTXlUeXBlSW5Vbm5hbWVkTmFtZVNwYWNlIDogcHVi
bGljIEJhc2UgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgTXlUeXBlSW5Vbm5hbWVkTmFtZVNwYWNl
KGludCBhbl94KTogQmFzZShhbl94KSB7fQorfTsKK3N0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChz
dGQ6Om9zdHJlYW0mIG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE15VHlwZUlu
VW5uYW1lZE5hbWVTcGFjZSYgdmFsKSB7CisgIHJldHVybiBvcyA8PCB2YWwueCgpOworfQorc3Rk
Ojpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgTXlUeXBlSW5Vbm5hbWVkTmFtZVNwYWNlKiBwb2ludGVyKSB7CisgIHJl
dHVybiBvcyA8PCAiKCIgPDwgcG9pbnRlci0+eCgpIDw8ICIpIjsKK30KK30gIC8vIG5hbWVzcGFj
ZQorCitURVNUKE1lc3NhZ2VUZXN0LCBDYW5TdHJlYW1Vc2VyVHlwZUluVW5uYW1lZE5hbWVTcGFj
ZSkgeworICBNZXNzYWdlIG1zZzsKKyAgTXlUeXBlSW5Vbm5hbWVkTmFtZVNwYWNlIGEoMSk7CisK
KyAgbXNnIDw8IGEgPDwgJmE7ICAvLyBVc2VzIDx1bm5hbWVkX25hbWVzcGFjZT46Om9wZXJhdG9y
PDwuCisgIEVYUEVDVF9TVFJFUSgiMSgxKSIsIG1zZy5HZXRTdHJpbmcoKS5jX3N0cigpKTsKK30K
KworLy8gVGVzdHMgc3RyZWFtaW5nIGEgdXNlciB0eXBlIHdob3NlIGRlZmluaXRpb24gYW5kIG9w
ZXJhdG9yPDwgYXJlCisvLyBib3RoIGluIGEgdXNlciBuYW1lc3BhY2UuCituYW1lc3BhY2UgbmFt
ZXNwYWNlMSB7CitjbGFzcyBNeVR5cGVJbk5hbWVTcGFjZTEgOiBwdWJsaWMgQmFzZSB7CisgcHVi
bGljOgorICBleHBsaWNpdCBNeVR5cGVJbk5hbWVTcGFjZTEoaW50IGFuX3gpOiBCYXNlKGFuX3gp
IHt9Cit9Oworc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgTXlUeXBlSW5OYW1lU3BhY2UxJiB2YWwpIHsKKyAg
cmV0dXJuIG9zIDw8IHZhbC54KCk7Cit9CitzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpv
c3RyZWFtJiBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBNeVR5cGVJbk5hbWVT
cGFjZTEqIHBvaW50ZXIpIHsKKyAgcmV0dXJuIG9zIDw8ICIoIiA8PCBwb2ludGVyLT54KCkgPDwg
IikiOworfQorfSAgLy8gbmFtZXNwYWNlIG5hbWVzcGFjZTEKKworVEVTVChNZXNzYWdlVGVzdCwg
Q2FuU3RyZWFtVXNlclR5cGVJblVzZXJOYW1lU3BhY2UpIHsKKyAgTWVzc2FnZSBtc2c7CisgIG5h
bWVzcGFjZTE6Ok15VHlwZUluTmFtZVNwYWNlMSBhKDEpOworCisgIG1zZyA8PCBhIDw8ICZhOyAg
Ly8gVXNlcyBuYW1lc3BhY2UxOjpvcGVyYXRvcjw8LgorICBFWFBFQ1RfU1RSRVEoIjEoMSkiLCBt
c2cuR2V0U3RyaW5nKCkuY19zdHIoKSk7Cit9CisKKy8vIFRlc3RzIHN0cmVhbWluZyBhIHVzZXIg
dHlwZSB3aG9zZSBkZWZpbml0aW9uIGlzIGluIGEgdXNlciBuYW1lc3BhY2UKKy8vIGJ1dCB3aG9z
ZSBvcGVyYXRvcjw8IGlzIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLgorbmFtZXNwYWNlIG5hbWVz
cGFjZTIgeworY2xhc3MgTXlUeXBlSW5OYW1lU3BhY2UyIDogcHVibGljIDo6QmFzZSB7CisgcHVi
bGljOgorICBleHBsaWNpdCBNeVR5cGVJbk5hbWVTcGFjZTIoaW50IGFuX3gpOiBCYXNlKGFuX3gp
IHt9Cit9OworfSAgLy8gbmFtZXNwYWNlIG5hbWVzcGFjZTIKK3N0ZDo6b3N0cmVhbSYgb3BlcmF0
b3I8PChzdGQ6Om9zdHJlYW0mIG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5h
bWVzcGFjZTI6Ok15VHlwZUluTmFtZVNwYWNlMiYgdmFsKSB7CisgIHJldHVybiBvcyA8PCB2YWwu
eCgpOworfQorc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmFtZXNwYWNlMjo6TXlUeXBlSW5OYW1lU3BhY2Uy
KiBwb2ludGVyKSB7CisgIHJldHVybiBvcyA8PCAiKCIgPDwgcG9pbnRlci0+eCgpIDw8ICIpIjsK
K30KKworVEVTVChNZXNzYWdlVGVzdCwgQ2FuU3RyZWFtVXNlclR5cGVJblVzZXJOYW1lU3BhY2VX
aXRoU3RyZWFtT3BlcmF0b3JJbkdsb2JhbCkgeworICBNZXNzYWdlIG1zZzsKKyAgbmFtZXNwYWNl
Mjo6TXlUeXBlSW5OYW1lU3BhY2UyIGEoMSk7CisKKyAgbXNnIDw8IGEgPDwgJmE7ICAvLyBVc2Vz
IDo6b3BlcmF0b3I8PC4KKyAgRVhQRUNUX1NUUkVRKCIxKDEpIiwgbXNnLkdldFN0cmluZygpLmNf
c3RyKCkpOworfQorCisvLyBUZXN0cyBzdHJlYW1pbmcgTlVMTCBwb2ludGVycyB0byB0ZXN0aW5n
OjpNZXNzYWdlLgorVEVTVChNZXNzYWdlVGVzdCwgTnVsbFBvaW50ZXJzKSB7CisgIE1lc3NhZ2Ug
bXNnOworICBjaGFyKiBjb25zdCBwMSA9IE5VTEw7CisgIHVuc2lnbmVkIGNoYXIqIGNvbnN0IHAy
ID0gTlVMTDsKKyAgaW50KiBwMyA9IE5VTEw7CisgIGRvdWJsZSogcDQgPSBOVUxMOworICBib29s
KiBwNSA9IE5VTEw7CisgIE1lc3NhZ2UqIHA2ID0gTlVMTDsKKworICBtc2cgPDwgcDEgPDwgcDIg
PDwgcDMgPDwgcDQgPDwgcDUgPDwgcDY7CisgIEFTU0VSVF9TVFJFUSgiKG51bGwpKG51bGwpKG51
bGwpKG51bGwpKG51bGwpKG51bGwpIiwKKyAgICAgICAgICAgICAgIG1zZy5HZXRTdHJpbmcoKS5j
X3N0cigpKTsKK30KKworLy8gVGVzdHMgc3RyZWFtaW5nIHdpZGUgc3RyaW5ncyB0byB0ZXN0aW5n
OjpNZXNzYWdlLgorVEVTVChNZXNzYWdlVGVzdCwgV2lkZVN0cmluZ3MpIHsKKyAgLy8gU3RyZWFt
cyBhIE5VTEwgb2YgdHlwZSBjb25zdCB3Y2hhcl90Ki4KKyAgY29uc3Qgd2NoYXJfdCogY29uc3Rf
d3N0ciA9IE5VTEw7CisgIEVYUEVDVF9TVFJFUSgiKG51bGwpIiwKKyAgICAgICAgICAgICAgIChN
ZXNzYWdlKCkgPDwgY29uc3Rfd3N0cikuR2V0U3RyaW5nKCkuY19zdHIoKSk7CisKKyAgLy8gU3Ry
ZWFtcyBhIE5VTEwgb2YgdHlwZSB3Y2hhcl90Ki4KKyAgd2NoYXJfdCogd3N0ciA9IE5VTEw7Cisg
IEVYUEVDVF9TVFJFUSgiKG51bGwpIiwKKyAgICAgICAgICAgICAgIChNZXNzYWdlKCkgPDwgd3N0
cikuR2V0U3RyaW5nKCkuY19zdHIoKSk7CisKKyAgLy8gU3RyZWFtcyBhIG5vbi1OVUxMIG9mIHR5
cGUgY29uc3Qgd2NoYXJfdCouCisgIGNvbnN0X3dzdHIgPSBMImFiY1x4ODExOSI7CisgIEVYUEVD
VF9TVFJFUSgiYWJjXHhlOFx4ODRceDk5IiwKKyAgICAgICAgICAgICAgIChNZXNzYWdlKCkgPDwg
Y29uc3Rfd3N0cikuR2V0U3RyaW5nKCkuY19zdHIoKSk7CisKKyAgLy8gU3RyZWFtcyBhIG5vbi1O
VUxMIG9mIHR5cGUgd2NoYXJfdCouCisgIHdzdHIgPSBjb25zdF9jYXN0PHdjaGFyX3QqPihjb25z
dF93c3RyKTsKKyAgRVhQRUNUX1NUUkVRKCJhYmNceGU4XHg4NFx4OTkiLAorICAgICAgICAgICAg
ICAgKE1lc3NhZ2UoKSA8PCB3c3RyKS5HZXRTdHJpbmcoKS5jX3N0cigpKTsKK30KKworCisvLyBU
aGlzIGxpbmUgdGVzdHMgdGhhdCB3ZSBjYW4gZGVmaW5lIHRlc3RzIGluIHRoZSB0ZXN0aW5nIG5h
bWVzcGFjZS4KK25hbWVzcGFjZSB0ZXN0aW5nIHsKKworLy8gVGVzdHMgdGhlIFRlc3RJbmZvIGNs
YXNzLgorCitjbGFzcyBUZXN0SW5mb1Rlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHJvdGVjdGVkOgor
ICBzdGF0aWMgY29uc3QgVGVzdEluZm8qIEdldFRlc3RJbmZvKGNvbnN0IGNoYXIqIHRlc3RfbmFt
ZSkgeworICAgIGNvbnN0IFRlc3RDYXNlKiBjb25zdCB0ZXN0X2Nhc2UgPSBHZXRVbml0VGVzdElt
cGwoKS0+CisgICAgICAgIEdldFRlc3RDYXNlKCJUZXN0SW5mb1Rlc3QiLCAiIiwgTlVMTCwgTlVM
TCk7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHRlc3RfY2FzZS0+dG90YWxfdGVzdF9jb3Vu
dCgpOyArK2kpIHsKKyAgICAgIGNvbnN0IFRlc3RJbmZvKiBjb25zdCB0ZXN0X2luZm8gPSB0ZXN0
X2Nhc2UtPkdldFRlc3RJbmZvKGkpOworICAgICAgaWYgKHN0cmNtcCh0ZXN0X25hbWUsIHRlc3Rf
aW5mby0+bmFtZSgpKSA9PSAwKQorICAgICAgICByZXR1cm4gdGVzdF9pbmZvOworICAgIH0KKyAg
ICByZXR1cm4gTlVMTDsKKyAgfQorCisgIHN0YXRpYyBjb25zdCBUZXN0UmVzdWx0KiBHZXRUZXN0
UmVzdWx0KAorICAgICAgY29uc3QgVGVzdEluZm8qIHRlc3RfaW5mbykgeworICAgIHJldHVybiB0
ZXN0X2luZm8tPnJlc3VsdCgpOworICB9Cit9OworCisvLyBUZXN0cyBUZXN0SW5mbzo6dGVzdF9j
YXNlX25hbWUoKSBhbmQgVGVzdEluZm86Om5hbWUoKS4KK1RFU1RfRihUZXN0SW5mb1Rlc3QsIE5h
bWVzKSB7CisgIGNvbnN0IFRlc3RJbmZvKiBjb25zdCB0ZXN0X2luZm8gPSBHZXRUZXN0SW5mbygi
TmFtZXMiKTsKKworICBBU1NFUlRfU1RSRVEoIlRlc3RJbmZvVGVzdCIsIHRlc3RfaW5mby0+dGVz
dF9jYXNlX25hbWUoKSk7CisgIEFTU0VSVF9TVFJFUSgiTmFtZXMiLCB0ZXN0X2luZm8tPm5hbWUo
KSk7Cit9CisKKy8vIFRlc3RzIFRlc3RJbmZvOjpyZXN1bHQoKS4KK1RFU1RfRihUZXN0SW5mb1Rl
c3QsIHJlc3VsdCkgeworICBjb25zdCBUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0gR2V0VGVz
dEluZm8oInJlc3VsdCIpOworCisgIC8vIEluaXRpYWxseSwgdGhlcmUgaXMgbm8gVGVzdFBhcnRS
ZXN1bHQgZm9yIHRoaXMgdGVzdC4KKyAgQVNTRVJUX0VRKDAsIEdldFRlc3RSZXN1bHQodGVzdF9p
bmZvKS0+dG90YWxfcGFydF9jb3VudCgpKTsKKworICAvLyBBZnRlciB0aGUgcHJldmlvdXMgYXNz
ZXJ0aW9uLCB0aGVyZSBpcyBzdGlsbCBub25lLgorICBBU1NFUlRfRVEoMCwgR2V0VGVzdFJlc3Vs
dCh0ZXN0X2luZm8pLT50b3RhbF9wYXJ0X2NvdW50KCkpOworfQorCisjZGVmaW5lIFZFUklGWV9D
T0RFX0xPQ0FUSU9OIFwKKyAgY29uc3QgaW50IGV4cGVjdGVkX2xpbmUgPSBfX0xJTkVfXyAtIDE7
IFwKKyAgY29uc3QgVGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9IEdldFVuaXRUZXN0SW1wbCgp
LT5jdXJyZW50X3Rlc3RfaW5mbygpOyBcCisgIEFTU0VSVF9UUlVFKHRlc3RfaW5mbyk7IFwKKyAg
RVhQRUNUX1NUUkVRKF9fRklMRV9fLCB0ZXN0X2luZm8tPmZpbGUoKSk7IFwKKyAgRVhQRUNUX0VR
KGV4cGVjdGVkX2xpbmUsIHRlc3RfaW5mby0+bGluZSgpKQorCitURVNUKENvZGVMb2NhdGlvbkZv
clRFU1QsIFZlcmlmeSkgeworICBWRVJJRllfQ09ERV9MT0NBVElPTjsKK30KKworY2xhc3MgQ29k
ZUxvY2F0aW9uRm9yVEVTVEYgOiBwdWJsaWMgVGVzdCB7Cit9OworCitURVNUX0YoQ29kZUxvY2F0
aW9uRm9yVEVTVEYsIFZlcmlmeSkgeworICBWRVJJRllfQ09ERV9MT0NBVElPTjsKK30KKworY2xh
c3MgQ29kZUxvY2F0aW9uRm9yVEVTVFAgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHsKK307
CisKK1RFU1RfUChDb2RlTG9jYXRpb25Gb3JURVNUUCwgVmVyaWZ5KSB7CisgIFZFUklGWV9DT0RF
X0xPQ0FUSU9OOworfQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUCgsIENvZGVMb2NhdGlvbkZv
clRFU1RQLCBWYWx1ZXMoMCkpOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIENvZGVM
b2NhdGlvbkZvclRZUEVEVEVTVCA6IHB1YmxpYyBUZXN0IHsKK307CisKK1RZUEVEX1RFU1RfQ0FT
RShDb2RlTG9jYXRpb25Gb3JUWVBFRFRFU1QsIGludCk7CisKK1RZUEVEX1RFU1QoQ29kZUxvY2F0
aW9uRm9yVFlQRURURVNULCBWZXJpZnkpIHsKKyAgVkVSSUZZX0NPREVfTE9DQVRJT047Cit9CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgQ29kZUxvY2F0aW9uRm9yVFlQRURURVNUUCA6
IHB1YmxpYyBUZXN0IHsKK307CisKK1RZUEVEX1RFU1RfQ0FTRV9QKENvZGVMb2NhdGlvbkZvclRZ
UEVEVEVTVFApOworCitUWVBFRF9URVNUX1AoQ29kZUxvY2F0aW9uRm9yVFlQRURURVNUUCwgVmVy
aWZ5KSB7CisgIFZFUklGWV9DT0RFX0xPQ0FUSU9OOworfQorCitSRUdJU1RFUl9UWVBFRF9URVNU
X0NBU0VfUChDb2RlTG9jYXRpb25Gb3JUWVBFRFRFU1RQLCBWZXJpZnkpOworCitJTlNUQU5USUFU
RV9UWVBFRF9URVNUX0NBU0VfUChNeSwgQ29kZUxvY2F0aW9uRm9yVFlQRURURVNUUCwgaW50KTsK
KworI3VuZGVmIFZFUklGWV9DT0RFX0xPQ0FUSU9OCisKKy8vIFRlc3RzIHNldHRpbmcgdXAgYW5k
IHRlYXJpbmcgZG93biBhIHRlc3QgY2FzZS4KKworY2xhc3MgU2V0VXBUZXN0Q2FzZVRlc3QgOiBw
dWJsaWMgVGVzdCB7CisgcHJvdGVjdGVkOgorICAvLyBUaGlzIHdpbGwgYmUgY2FsbGVkIG9uY2Ug
YmVmb3JlIHRoZSBmaXJzdCB0ZXN0IGluIHRoaXMgdGVzdCBjYXNlCisgIC8vIGlzIHJ1bi4KKyAg
c3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpIHsKKyAgICBwcmludGYoIlNldHRpbmcgdXAgdGhl
IHRlc3QgY2FzZSAuIC4gLlxuIik7CisKKyAgICAvLyBJbml0aWFsaXplcyBzb21lIHNoYXJlZCBy
ZXNvdXJjZS4gIEluIHRoaXMgc2ltcGxlIGV4YW1wbGUsIHdlCisgICAgLy8ganVzdCBjcmVhdGUg
YSBDIHN0cmluZy4gIE1vcmUgY29tcGxleCBzdHVmZiBjYW4gYmUgZG9uZSBpZgorICAgIC8vIGRl
c2lyZWQuCisgICAgc2hhcmVkX3Jlc291cmNlXyA9ICIxMjMiOworCisgICAgLy8gSW5jcmVtZW50
cyB0aGUgbnVtYmVyIG9mIHRlc3QgY2FzZXMgdGhhdCBoYXZlIGJlZW4gc2V0IHVwLgorICAgIGNv
dW50ZXJfKys7CisKKyAgICAvLyBTZXRVcFRlc3RDYXNlKCkgc2hvdWxkIGJlIGNhbGxlZCBvbmx5
IG9uY2UuCisgICAgRVhQRUNUX0VRKDEsIGNvdW50ZXJfKTsKKyAgfQorCisgIC8vIFRoaXMgd2ls
bCBiZSBjYWxsZWQgb25jZSBhZnRlciB0aGUgbGFzdCB0ZXN0IGluIHRoaXMgdGVzdCBjYXNlIGlz
CisgIC8vIHJ1bi4KKyAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKKyAgICBwcmlu
dGYoIlRlYXJpbmcgZG93biB0aGUgdGVzdCBjYXNlIC4gLiAuXG4iKTsKKworICAgIC8vIERlY3Jl
bWVudHMgdGhlIG51bWJlciBvZiB0ZXN0IGNhc2VzIHRoYXQgaGF2ZSBiZWVuIHNldCB1cC4KKyAg
ICBjb3VudGVyXy0tOworCisgICAgLy8gVGVhckRvd25UZXN0Q2FzZSgpIHNob3VsZCBiZSBjYWxs
ZWQgb25seSBvbmNlLgorICAgIEVYUEVDVF9FUSgwLCBjb3VudGVyXyk7CisKKyAgICAvLyBDbGVh
bnMgdXAgdGhlIHNoYXJlZCByZXNvdXJjZS4KKyAgICBzaGFyZWRfcmVzb3VyY2VfID0gTlVMTDsK
KyAgfQorCisgIC8vIFRoaXMgd2lsbCBiZSBjYWxsZWQgYmVmb3JlIGVhY2ggdGVzdCBpbiB0aGlz
IHRlc3QgY2FzZS4KKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeworICAgIC8vIFNldFVwVGVzdENh
c2UoKSBzaG91bGQgYmUgY2FsbGVkIG9ubHkgb25jZSwgc28gY291bnRlcl8gc2hvdWxkCisgICAg
Ly8gYWx3YXlzIGJlIDEuCisgICAgRVhQRUNUX0VRKDEsIGNvdW50ZXJfKTsKKyAgfQorCisgIC8v
IE51bWJlciBvZiB0ZXN0IGNhc2VzIHRoYXQgaGF2ZSBiZWVuIHNldCB1cC4KKyAgc3RhdGljIGlu
dCBjb3VudGVyXzsKKworICAvLyBTb21lIHJlc291cmNlIHRvIGJlIHNoYXJlZCBieSBhbGwgdGVz
dHMgaW4gdGhpcyB0ZXN0IGNhc2UuCisgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFyZWRfcmVzb3Vy
Y2VfOworfTsKKworaW50IFNldFVwVGVzdENhc2VUZXN0Ojpjb3VudGVyXyA9IDA7Citjb25zdCBj
aGFyKiBTZXRVcFRlc3RDYXNlVGVzdDo6c2hhcmVkX3Jlc291cmNlXyA9IE5VTEw7CisKKy8vIEEg
dGVzdCB0aGF0IHVzZXMgdGhlIHNoYXJlZCByZXNvdXJjZS4KK1RFU1RfRihTZXRVcFRlc3RDYXNl
VGVzdCwgVGVzdDEpIHsKKyAgRVhQRUNUX1NUUk5FKE5VTEwsIHNoYXJlZF9yZXNvdXJjZV8pOwor
fQorCisvLyBBbm90aGVyIHRlc3QgdGhhdCB1c2VzIHRoZSBzaGFyZWQgcmVzb3VyY2UuCitURVNU
X0YoU2V0VXBUZXN0Q2FzZVRlc3QsIFRlc3QyKSB7CisgIEVYUEVDVF9TVFJFUSgiMTIzIiwgc2hh
cmVkX3Jlc291cmNlXyk7Cit9CisKKy8vIFRoZSBJbml0R29vZ2xlVGVzdFRlc3QgdGVzdCBjYXNl
IHRlc3RzIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCkuCisKKy8vIFRoZSBGbGFncyBzdHJ1Y3Qg
c3RvcmVzIGEgY29weSBvZiBhbGwgR29vZ2xlIFRlc3QgZmxhZ3MuCitzdHJ1Y3QgRmxhZ3Mgewor
ICAvLyBDb25zdHJ1Y3RzIGEgRmxhZ3Mgc3RydWN0IHdoZXJlIGVhY2ggZmxhZyBoYXMgaXRzIGRl
ZmF1bHQgdmFsdWUuCisgIEZsYWdzKCkgOiBhbHNvX3J1bl9kaXNhYmxlZF90ZXN0cyhmYWxzZSks
CisgICAgICAgICAgICBicmVha19vbl9mYWlsdXJlKGZhbHNlKSwKKyAgICAgICAgICAgIGNhdGNo
X2V4Y2VwdGlvbnMoZmFsc2UpLAorICAgICAgICAgICAgZGVhdGhfdGVzdF91c2VfZm9yayhmYWxz
ZSksCisgICAgICAgICAgICBmaWx0ZXIoIiIpLAorICAgICAgICAgICAgbGlzdF90ZXN0cyhmYWxz
ZSksCisgICAgICAgICAgICBvdXRwdXQoIiIpLAorICAgICAgICAgICAgcHJpbnRfdGltZSh0cnVl
KSwKKyAgICAgICAgICAgIHJhbmRvbV9zZWVkKDApLAorICAgICAgICAgICAgcmVwZWF0KDEpLAor
ICAgICAgICAgICAgc2h1ZmZsZShmYWxzZSksCisgICAgICAgICAgICBzdGFja190cmFjZV9kZXB0
aChrTWF4U3RhY2tUcmFjZURlcHRoKSwKKyAgICAgICAgICAgIHN0cmVhbV9yZXN1bHRfdG8oIiIp
LAorICAgICAgICAgICAgdGhyb3dfb25fZmFpbHVyZShmYWxzZSkge30KKworICAvLyBGYWN0b3J5
IG1ldGhvZHMuCisKKyAgLy8gQ3JlYXRlcyBhIEZsYWdzIHN0cnVjdCB3aGVyZSB0aGUgZ3Rlc3Rf
YWxzb19ydW5fZGlzYWJsZWRfdGVzdHMgZmxhZyBoYXMKKyAgLy8gdGhlIGdpdmVuIHZhbHVlLgor
ICBzdGF0aWMgRmxhZ3MgQWxzb1J1bkRpc2FibGVkVGVzdHMoYm9vbCBhbHNvX3J1bl9kaXNhYmxl
ZF90ZXN0cykgeworICAgIEZsYWdzIGZsYWdzOworICAgIGZsYWdzLmFsc29fcnVuX2Rpc2FibGVk
X3Rlc3RzID0gYWxzb19ydW5fZGlzYWJsZWRfdGVzdHM7CisgICAgcmV0dXJuIGZsYWdzOworICB9
CisKKyAgLy8gQ3JlYXRlcyBhIEZsYWdzIHN0cnVjdCB3aGVyZSB0aGUgZ3Rlc3RfYnJlYWtfb25f
ZmFpbHVyZSBmbGFnIGhhcworICAvLyB0aGUgZ2l2ZW4gdmFsdWUuCisgIHN0YXRpYyBGbGFncyBC
cmVha09uRmFpbHVyZShib29sIGJyZWFrX29uX2ZhaWx1cmUpIHsKKyAgICBGbGFncyBmbGFnczsK
KyAgICBmbGFncy5icmVha19vbl9mYWlsdXJlID0gYnJlYWtfb25fZmFpbHVyZTsKKyAgICByZXR1
cm4gZmxhZ3M7CisgIH0KKworICAvLyBDcmVhdGVzIGEgRmxhZ3Mgc3RydWN0IHdoZXJlIHRoZSBn
dGVzdF9jYXRjaF9leGNlcHRpb25zIGZsYWcgaGFzCisgIC8vIHRoZSBnaXZlbiB2YWx1ZS4KKyAg
c3RhdGljIEZsYWdzIENhdGNoRXhjZXB0aW9ucyhib29sIGNhdGNoX2V4Y2VwdGlvbnMpIHsKKyAg
ICBGbGFncyBmbGFnczsKKyAgICBmbGFncy5jYXRjaF9leGNlcHRpb25zID0gY2F0Y2hfZXhjZXB0
aW9uczsKKyAgICByZXR1cm4gZmxhZ3M7CisgIH0KKworICAvLyBDcmVhdGVzIGEgRmxhZ3Mgc3Ry
dWN0IHdoZXJlIHRoZSBndGVzdF9kZWF0aF90ZXN0X3VzZV9mb3JrIGZsYWcgaGFzCisgIC8vIHRo
ZSBnaXZlbiB2YWx1ZS4KKyAgc3RhdGljIEZsYWdzIERlYXRoVGVzdFVzZUZvcmsoYm9vbCBkZWF0
aF90ZXN0X3VzZV9mb3JrKSB7CisgICAgRmxhZ3MgZmxhZ3M7CisgICAgZmxhZ3MuZGVhdGhfdGVz
dF91c2VfZm9yayA9IGRlYXRoX3Rlc3RfdXNlX2Zvcms7CisgICAgcmV0dXJuIGZsYWdzOworICB9
CisKKyAgLy8gQ3JlYXRlcyBhIEZsYWdzIHN0cnVjdCB3aGVyZSB0aGUgZ3Rlc3RfZmlsdGVyIGZs
YWcgaGFzIHRoZSBnaXZlbgorICAvLyB2YWx1ZS4KKyAgc3RhdGljIEZsYWdzIEZpbHRlcihjb25z
dCBjaGFyKiBmaWx0ZXIpIHsKKyAgICBGbGFncyBmbGFnczsKKyAgICBmbGFncy5maWx0ZXIgPSBm
aWx0ZXI7CisgICAgcmV0dXJuIGZsYWdzOworICB9CisKKyAgLy8gQ3JlYXRlcyBhIEZsYWdzIHN0
cnVjdCB3aGVyZSB0aGUgZ3Rlc3RfbGlzdF90ZXN0cyBmbGFnIGhhcyB0aGUKKyAgLy8gZ2l2ZW4g
dmFsdWUuCisgIHN0YXRpYyBGbGFncyBMaXN0VGVzdHMoYm9vbCBsaXN0X3Rlc3RzKSB7CisgICAg
RmxhZ3MgZmxhZ3M7CisgICAgZmxhZ3MubGlzdF90ZXN0cyA9IGxpc3RfdGVzdHM7CisgICAgcmV0
dXJuIGZsYWdzOworICB9CisKKyAgLy8gQ3JlYXRlcyBhIEZsYWdzIHN0cnVjdCB3aGVyZSB0aGUg
Z3Rlc3Rfb3V0cHV0IGZsYWcgaGFzIHRoZSBnaXZlbgorICAvLyB2YWx1ZS4KKyAgc3RhdGljIEZs
YWdzIE91dHB1dChjb25zdCBjaGFyKiBvdXRwdXQpIHsKKyAgICBGbGFncyBmbGFnczsKKyAgICBm
bGFncy5vdXRwdXQgPSBvdXRwdXQ7CisgICAgcmV0dXJuIGZsYWdzOworICB9CisKKyAgLy8gQ3Jl
YXRlcyBhIEZsYWdzIHN0cnVjdCB3aGVyZSB0aGUgZ3Rlc3RfcHJpbnRfdGltZSBmbGFnIGhhcyB0
aGUgZ2l2ZW4KKyAgLy8gdmFsdWUuCisgIHN0YXRpYyBGbGFncyBQcmludFRpbWUoYm9vbCBwcmlu
dF90aW1lKSB7CisgICAgRmxhZ3MgZmxhZ3M7CisgICAgZmxhZ3MucHJpbnRfdGltZSA9IHByaW50
X3RpbWU7CisgICAgcmV0dXJuIGZsYWdzOworICB9CisKKyAgLy8gQ3JlYXRlcyBhIEZsYWdzIHN0
cnVjdCB3aGVyZSB0aGUgZ3Rlc3RfcmFuZG9tX3NlZWQgZmxhZyBoYXMKKyAgLy8gdGhlIGdpdmVu
IHZhbHVlLgorICBzdGF0aWMgRmxhZ3MgUmFuZG9tU2VlZChJbnQzMiByYW5kb21fc2VlZCkgewor
ICAgIEZsYWdzIGZsYWdzOworICAgIGZsYWdzLnJhbmRvbV9zZWVkID0gcmFuZG9tX3NlZWQ7Cisg
ICAgcmV0dXJuIGZsYWdzOworICB9CisKKyAgLy8gQ3JlYXRlcyBhIEZsYWdzIHN0cnVjdCB3aGVy
ZSB0aGUgZ3Rlc3RfcmVwZWF0IGZsYWcgaGFzIHRoZSBnaXZlbgorICAvLyB2YWx1ZS4KKyAgc3Rh
dGljIEZsYWdzIFJlcGVhdChJbnQzMiByZXBlYXQpIHsKKyAgICBGbGFncyBmbGFnczsKKyAgICBm
bGFncy5yZXBlYXQgPSByZXBlYXQ7CisgICAgcmV0dXJuIGZsYWdzOworICB9CisKKyAgLy8gQ3Jl
YXRlcyBhIEZsYWdzIHN0cnVjdCB3aGVyZSB0aGUgZ3Rlc3Rfc2h1ZmZsZSBmbGFnIGhhcworICAv
LyB0aGUgZ2l2ZW4gdmFsdWUuCisgIHN0YXRpYyBGbGFncyBTaHVmZmxlKGJvb2wgc2h1ZmZsZSkg
eworICAgIEZsYWdzIGZsYWdzOworICAgIGZsYWdzLnNodWZmbGUgPSBzaHVmZmxlOworICAgIHJl
dHVybiBmbGFnczsKKyAgfQorCisgIC8vIENyZWF0ZXMgYSBGbGFncyBzdHJ1Y3Qgd2hlcmUgdGhl
IEdURVNUX0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpIGZsYWcgaGFzCisgIC8vIHRoZSBnaXZlbiB2
YWx1ZS4KKyAgc3RhdGljIEZsYWdzIFN0YWNrVHJhY2VEZXB0aChJbnQzMiBzdGFja190cmFjZV9k
ZXB0aCkgeworICAgIEZsYWdzIGZsYWdzOworICAgIGZsYWdzLnN0YWNrX3RyYWNlX2RlcHRoID0g
c3RhY2tfdHJhY2VfZGVwdGg7CisgICAgcmV0dXJuIGZsYWdzOworICB9CisKKyAgLy8gQ3JlYXRl
cyBhIEZsYWdzIHN0cnVjdCB3aGVyZSB0aGUgR1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3RvKSBm
bGFnIGhhcworICAvLyB0aGUgZ2l2ZW4gdmFsdWUuCisgIHN0YXRpYyBGbGFncyBTdHJlYW1SZXN1
bHRUbyhjb25zdCBjaGFyKiBzdHJlYW1fcmVzdWx0X3RvKSB7CisgICAgRmxhZ3MgZmxhZ3M7Cisg
ICAgZmxhZ3Muc3RyZWFtX3Jlc3VsdF90byA9IHN0cmVhbV9yZXN1bHRfdG87CisgICAgcmV0dXJu
IGZsYWdzOworICB9CisKKyAgLy8gQ3JlYXRlcyBhIEZsYWdzIHN0cnVjdCB3aGVyZSB0aGUgZ3Rl
c3RfdGhyb3dfb25fZmFpbHVyZSBmbGFnIGhhcworICAvLyB0aGUgZ2l2ZW4gdmFsdWUuCisgIHN0
YXRpYyBGbGFncyBUaHJvd09uRmFpbHVyZShib29sIHRocm93X29uX2ZhaWx1cmUpIHsKKyAgICBG
bGFncyBmbGFnczsKKyAgICBmbGFncy50aHJvd19vbl9mYWlsdXJlID0gdGhyb3dfb25fZmFpbHVy
ZTsKKyAgICByZXR1cm4gZmxhZ3M7CisgIH0KKworICAvLyBUaGVzZSBmaWVsZHMgc3RvcmUgdGhl
IGZsYWcgdmFsdWVzLgorICBib29sIGFsc29fcnVuX2Rpc2FibGVkX3Rlc3RzOworICBib29sIGJy
ZWFrX29uX2ZhaWx1cmU7CisgIGJvb2wgY2F0Y2hfZXhjZXB0aW9uczsKKyAgYm9vbCBkZWF0aF90
ZXN0X3VzZV9mb3JrOworICBjb25zdCBjaGFyKiBmaWx0ZXI7CisgIGJvb2wgbGlzdF90ZXN0czsK
KyAgY29uc3QgY2hhciogb3V0cHV0OworICBib29sIHByaW50X3RpbWU7CisgIEludDMyIHJhbmRv
bV9zZWVkOworICBJbnQzMiByZXBlYXQ7CisgIGJvb2wgc2h1ZmZsZTsKKyAgSW50MzIgc3RhY2tf
dHJhY2VfZGVwdGg7CisgIGNvbnN0IGNoYXIqIHN0cmVhbV9yZXN1bHRfdG87CisgIGJvb2wgdGhy
b3dfb25fZmFpbHVyZTsKK307CisKKy8vIEZpeHR1cmUgZm9yIHRlc3RpbmcgSW5pdEdvb2dsZVRl
c3QoKS4KK2NsYXNzIEluaXRHb29nbGVUZXN0VGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwcm90ZWN0
ZWQ6CisgIC8vIENsZWFycyB0aGUgZmxhZ3MgYmVmb3JlIGVhY2ggdGVzdC4KKyAgdmlydHVhbCB2
b2lkIFNldFVwKCkgeworICAgIEdURVNUX0ZMQUcoYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMpID0g
ZmFsc2U7CisgICAgR1RFU1RfRkxBRyhicmVha19vbl9mYWlsdXJlKSA9IGZhbHNlOworICAgIEdU
RVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykgPSBmYWxzZTsKKyAgICBHVEVTVF9GTEFHKGRlYXRo
X3Rlc3RfdXNlX2ZvcmspID0gZmFsc2U7CisgICAgR1RFU1RfRkxBRyhmaWx0ZXIpID0gIiI7Cisg
ICAgR1RFU1RfRkxBRyhsaXN0X3Rlc3RzKSA9IGZhbHNlOworICAgIEdURVNUX0ZMQUcob3V0cHV0
KSA9ICIiOworICAgIEdURVNUX0ZMQUcocHJpbnRfdGltZSkgPSB0cnVlOworICAgIEdURVNUX0ZM
QUcocmFuZG9tX3NlZWQpID0gMDsKKyAgICBHVEVTVF9GTEFHKHJlcGVhdCkgPSAxOworICAgIEdU
RVNUX0ZMQUcoc2h1ZmZsZSkgPSBmYWxzZTsKKyAgICBHVEVTVF9GTEFHKHN0YWNrX3RyYWNlX2Rl
cHRoKSA9IGtNYXhTdGFja1RyYWNlRGVwdGg7CisgICAgR1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0
X3RvKSA9ICIiOworICAgIEdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSkgPSBmYWxzZTsKKyAg
fQorCisgIC8vIEFzc2VydHMgdGhhdCB0d28gbmFycm93IG9yIHdpZGUgc3RyaW5nIGFycmF5cyBh
cmUgZXF1YWwuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KKyAgc3RhdGljIHZvaWQg
QXNzZXJ0U3RyaW5nQXJyYXlFcShzaXplX3Qgc2l6ZTEsIENoYXJUeXBlKiogYXJyYXkxLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplMiwgQ2hhclR5cGUqKiBh
cnJheTIpIHsKKyAgICBBU1NFUlRfRVEoc2l6ZTEsIHNpemUyKSA8PCAiIEFycmF5IHNpemVzIGRp
ZmZlcmVudC4iOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gc2l6ZTE7IGkrKykgewor
ICAgICAgQVNTRVJUX1NUUkVRKGFycmF5MVtpXSwgYXJyYXkyW2ldKSA8PCAiIHdoZXJlIGkgPT0g
IiA8PCBpOworICAgIH0KKyAgfQorCisgIC8vIFZlcmlmaWVzIHRoYXQgdGhlIGZsYWcgdmFsdWVz
IG1hdGNoIHRoZSBleHBlY3RlZCB2YWx1ZXMuCisgIHN0YXRpYyB2b2lkIENoZWNrRmxhZ3MoY29u
c3QgRmxhZ3MmIGV4cGVjdGVkKSB7CisgICAgRVhQRUNUX0VRKGV4cGVjdGVkLmFsc29fcnVuX2Rp
c2FibGVkX3Rlc3RzLAorICAgICAgICAgICAgICBHVEVTVF9GTEFHKGFsc29fcnVuX2Rpc2FibGVk
X3Rlc3RzKSk7CisgICAgRVhQRUNUX0VRKGV4cGVjdGVkLmJyZWFrX29uX2ZhaWx1cmUsIEdURVNU
X0ZMQUcoYnJlYWtfb25fZmFpbHVyZSkpOworICAgIEVYUEVDVF9FUShleHBlY3RlZC5jYXRjaF9l
eGNlcHRpb25zLCBHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpKTsKKyAgICBFWFBFQ1RfRVEo
ZXhwZWN0ZWQuZGVhdGhfdGVzdF91c2VfZm9yaywgR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3VzZV9m
b3JrKSk7CisgICAgRVhQRUNUX1NUUkVRKGV4cGVjdGVkLmZpbHRlciwgR1RFU1RfRkxBRyhmaWx0
ZXIpLmNfc3RyKCkpOworICAgIEVYUEVDVF9FUShleHBlY3RlZC5saXN0X3Rlc3RzLCBHVEVTVF9G
TEFHKGxpc3RfdGVzdHMpKTsKKyAgICBFWFBFQ1RfU1RSRVEoZXhwZWN0ZWQub3V0cHV0LCBHVEVT
VF9GTEFHKG91dHB1dCkuY19zdHIoKSk7CisgICAgRVhQRUNUX0VRKGV4cGVjdGVkLnByaW50X3Rp
bWUsIEdURVNUX0ZMQUcocHJpbnRfdGltZSkpOworICAgIEVYUEVDVF9FUShleHBlY3RlZC5yYW5k
b21fc2VlZCwgR1RFU1RfRkxBRyhyYW5kb21fc2VlZCkpOworICAgIEVYUEVDVF9FUShleHBlY3Rl
ZC5yZXBlYXQsIEdURVNUX0ZMQUcocmVwZWF0KSk7CisgICAgRVhQRUNUX0VRKGV4cGVjdGVkLnNo
dWZmbGUsIEdURVNUX0ZMQUcoc2h1ZmZsZSkpOworICAgIEVYUEVDVF9FUShleHBlY3RlZC5zdGFj
a190cmFjZV9kZXB0aCwgR1RFU1RfRkxBRyhzdGFja190cmFjZV9kZXB0aCkpOworICAgIEVYUEVD
VF9TVFJFUShleHBlY3RlZC5zdHJlYW1fcmVzdWx0X3RvLAorICAgICAgICAgICAgICAgICBHVEVT
VF9GTEFHKHN0cmVhbV9yZXN1bHRfdG8pLmNfc3RyKCkpOworICAgIEVYUEVDVF9FUShleHBlY3Rl
ZC50aHJvd19vbl9mYWlsdXJlLCBHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpKTsKKyAgfQor
CisgIC8vIFBhcnNlcyBhIGNvbW1hbmQgbGluZSAoc3BlY2lmaWVkIGJ5IGFyZ2MxIGFuZCBhcmd2
MSksIHRoZW4KKyAgLy8gdmVyaWZpZXMgdGhhdCB0aGUgZmxhZyB2YWx1ZXMgYXJlIGV4cGVjdGVk
IGFuZCB0aGF0IHRoZQorICAvLyByZWNvZ25pemVkIGZsYWdzIGFyZSByZW1vdmVkIGZyb20gdGhl
IGNvbW1hbmQgbGluZS4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgorICBzdGF0aWMg
dm9pZCBUZXN0UGFyc2luZ0ZsYWdzKGludCBhcmdjMSwgY29uc3QgQ2hhclR5cGUqKiBhcmd2MSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYXJnYzIsIGNvbnN0IENoYXJUeXBl
KiogYXJndjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxhZ3MmIGV4
cGVjdGVkLCBib29sIHNob3VsZF9wcmludF9oZWxwKSB7CisgICAgY29uc3QgYm9vbCBzYXZlZF9o
ZWxwX2ZsYWcgPSA6OnRlc3Rpbmc6OmludGVybmFsOjpnX2hlbHBfZmxhZzsKKyAgICA6OnRlc3Rp
bmc6OmludGVybmFsOjpnX2hlbHBfZmxhZyA9IGZhbHNlOworCisjaWYgR1RFU1RfSEFTX1NUUkVB
TV9SRURJUkVDVElPTgorICAgIENhcHR1cmVTdGRvdXQoKTsKKyNlbmRpZgorCisgICAgLy8gUGFy
c2VzIHRoZSBjb21tYW5kIGxpbmUuCisgICAgaW50ZXJuYWw6OlBhcnNlR29vZ2xlVGVzdEZsYWdz
T25seSgmYXJnYzEsIGNvbnN0X2Nhc3Q8Q2hhclR5cGUqKj4oYXJndjEpKTsKKworI2lmIEdURVNU
X0hBU19TVFJFQU1fUkVESVJFQ1RJT04KKyAgICBjb25zdCBzdGQ6OnN0cmluZyBjYXB0dXJlZF9z
dGRvdXQgPSBHZXRDYXB0dXJlZFN0ZG91dCgpOworI2VuZGlmCisKKyAgICAvLyBWZXJpZmllcyB0
aGUgZmxhZyB2YWx1ZXMuCisgICAgQ2hlY2tGbGFncyhleHBlY3RlZCk7CisKKyAgICAvLyBWZXJp
ZmllcyB0aGF0IHRoZSByZWNvZ25pemVkIGZsYWdzIGFyZSByZW1vdmVkIGZyb20gdGhlIGNvbW1h
bmQKKyAgICAvLyBsaW5lLgorICAgIEFzc2VydFN0cmluZ0FycmF5RXEoYXJnYzEgKyAxLCBhcmd2
MSwgYXJnYzIgKyAxLCBhcmd2Mik7CisKKyAgICAvLyBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHkg
c2hvdWxkIG5laXRoZXIgc2V0IGdfaGVscF9mbGFnIG5vciBwcmludCB0aGUKKyAgICAvLyBoZWxw
IG1lc3NhZ2UgZm9yIHRoZSBmbGFncyBpdCByZWNvZ25pemVzLgorICAgIEVYUEVDVF9FUShzaG91
bGRfcHJpbnRfaGVscCwgOjp0ZXN0aW5nOjppbnRlcm5hbDo6Z19oZWxwX2ZsYWcpOworCisjaWYg
R1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgorICAgIGNvbnN0IGNoYXIqIGNvbnN0IGV4cGVj
dGVkX2hlbHBfZnJhZ21lbnQgPQorICAgICAgICAiVGhpcyBwcm9ncmFtIGNvbnRhaW5zIHRlc3Rz
IHdyaXR0ZW4gdXNpbmciOworICAgIGlmIChzaG91bGRfcHJpbnRfaGVscCkgeworICAgICAgRVhQ
RUNUX1BSRURfRk9STUFUMihJc1N1YnN0cmluZywgZXhwZWN0ZWRfaGVscF9mcmFnbWVudCwgY2Fw
dHVyZWRfc3Rkb3V0KTsKKyAgICB9IGVsc2UgeworICAgICAgRVhQRUNUX1BSRURfRk9STUFUMihJ
c05vdFN1YnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfaGVscF9m
cmFnbWVudCwgY2FwdHVyZWRfc3Rkb3V0KTsKKyAgICB9CisjZW5kaWYgIC8vIEdURVNUX0hBU19T
VFJFQU1fUkVESVJFQ1RJT04KKworICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OmdfaGVscF9mbGFn
ID0gc2F2ZWRfaGVscF9mbGFnOworICB9CisKKyAgLy8gVGhpcyBtYWNybyB3cmFwcyBUZXN0UGFy
c2luZ0ZsYWdzIHMudC4gdGhlIHVzZXIgZG9lc24ndCBuZWVkCisgIC8vIHRvIHNwZWNpZnkgdGhl
IGFycmF5IHNpemVzLgorCisjZGVmaW5lIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndjEs
IGFyZ3YyLCBleHBlY3RlZCwgc2hvdWxkX3ByaW50X2hlbHApIFwKKyAgVGVzdFBhcnNpbmdGbGFn
cyhzaXplb2YoYXJndjEpL3NpemVvZigqYXJndjEpIC0gMSwgYXJndjEsIFwKKyAgICAgICAgICAg
ICAgICAgICBzaXplb2YoYXJndjIpL3NpemVvZigqYXJndjIpIC0gMSwgYXJndjIsIFwKKyAgICAg
ICAgICAgICAgICAgICBleHBlY3RlZCwgc2hvdWxkX3ByaW50X2hlbHApCit9OworCisvLyBUZXN0
cyBwYXJzaW5nIGFuIGVtcHR5IGNvbW1hbmQgbGluZS4KK1RFU1RfRihJbml0R29vZ2xlVGVzdFRl
c3QsIEVtcHR5KSB7CisgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKKyAgICBOVUxMCisgIH07CisK
KyAgY29uc3QgY2hhciogYXJndjJbXSA9IHsKKyAgICBOVUxMCisgIH07CisKKyAgR1RFU1RfVEVT
VF9QQVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2MiwgRmxhZ3MoKSwgZmFsc2UpOworfQorCisvLyBU
ZXN0cyBwYXJzaW5nIGEgY29tbWFuZCBsaW5lIHRoYXQgaGFzIG5vIGZsYWcuCitURVNUX0YoSW5p
dEdvb2dsZVRlc3RUZXN0LCBOb0ZsYWcpIHsKKyAgY29uc3QgY2hhciogYXJndltdID0geworICAg
ICJmb28uZXhlIiwKKyAgICBOVUxMCisgIH07CisKKyAgY29uc3QgY2hhciogYXJndjJbXSA9IHsK
KyAgICAiZm9vLmV4ZSIsCisgICAgTlVMTAorICB9OworCisgIEdURVNUX1RFU1RfUEFSU0lOR19G
TEFHU18oYXJndiwgYXJndjIsIEZsYWdzKCksIGZhbHNlKTsKK30KKworLy8gVGVzdHMgcGFyc2lu
ZyBhIGJhZCAtLWd0ZXN0X2ZpbHRlciBmbGFnLgorVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwg
RmlsdGVyQmFkKSB7CisgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKKyAgICAiZm9vLmV4ZSIsCisg
ICAgIi0tZ3Rlc3RfZmlsdGVyIiwKKyAgICBOVUxMCisgIH07CisKKyAgY29uc3QgY2hhciogYXJn
djJbXSA9IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgIi0tZ3Rlc3RfZmlsdGVyIiwKKyAgICBOVUxM
CisgIH07CisKKyAgR1RFU1RfVEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2MiwgRmxhZ3M6
OkZpbHRlcigiIiksIHRydWUpOworfQorCisvLyBUZXN0cyBwYXJzaW5nIGFuIGVtcHR5IC0tZ3Rl
c3RfZmlsdGVyIGZsYWcuCitURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBGaWx0ZXJFbXB0eSkg
eworICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CisgICAgImZvby5leGUiLAorICAgICItLWd0ZXN0
X2ZpbHRlcj0iLAorICAgIE5VTEwKKyAgfTsKKworICBjb25zdCBjaGFyKiBhcmd2MltdID0gewor
ICAgICJmb28uZXhlIiwKKyAgICBOVUxMCisgIH07CisKKyAgR1RFU1RfVEVTVF9QQVJTSU5HX0ZM
QUdTXyhhcmd2LCBhcmd2MiwgRmxhZ3M6OkZpbHRlcigiIiksIGZhbHNlKTsKK30KKworLy8gVGVz
dHMgcGFyc2luZyBhIG5vbi1lbXB0eSAtLWd0ZXN0X2ZpbHRlciBmbGFnLgorVEVTVF9GKEluaXRH
b29nbGVUZXN0VGVzdCwgRmlsdGVyTm9uRW1wdHkpIHsKKyAgY29uc3QgY2hhciogYXJndltdID0g
eworICAgICJmb28uZXhlIiwKKyAgICAiLS1ndGVzdF9maWx0ZXI9YWJjIiwKKyAgICBOVUxMCisg
IH07CisKKyAgY29uc3QgY2hhciogYXJndjJbXSA9IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgTlVM
TAorICB9OworCisgIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIsIEZsYWdz
OjpGaWx0ZXIoImFiYyIpLCBmYWxzZSk7Cit9CisKKy8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9i
cmVha19vbl9mYWlsdXJlLgorVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgQnJlYWtPbkZhaWx1
cmVXaXRob3V0VmFsdWUpIHsKKyAgY29uc3QgY2hhciogYXJndltdID0geworICAgICJmb28uZXhl
IiwKKyAgICAiLS1ndGVzdF9icmVha19vbl9mYWlsdXJlIiwKKyAgICBOVUxMCit9OworCisgIGNv
bnN0IGNoYXIqIGFyZ3YyW10gPSB7CisgICAgImZvby5leGUiLAorICAgIE5VTEwKKyAgfTsKKwor
ICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLCBGbGFnczo6QnJlYWtPbkZh
aWx1cmUodHJ1ZSksIGZhbHNlKTsKK30KKworLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X2JyZWFr
X29uX2ZhaWx1cmU9MC4KK1RFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEJyZWFrT25GYWlsdXJl
RmFsc2VfMCkgeworICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CisgICAgImZvby5leGUiLAorICAg
ICItLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmU9MCIsCisgICAgTlVMTAorICB9OworCisgIGNvbnN0
IGNoYXIqIGFyZ3YyW10gPSB7CisgICAgImZvby5leGUiLAorICAgIE5VTEwKKyAgfTsKKworICBH
VEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLCBGbGFnczo6QnJlYWtPbkZhaWx1
cmUoZmFsc2UpLCBmYWxzZSk7Cit9CisKKy8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9icmVha19v
bl9mYWlsdXJlPWYuCitURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBCcmVha09uRmFpbHVyZUZh
bHNlX2YpIHsKKyAgY29uc3QgY2hhciogYXJndltdID0geworICAgICJmb28uZXhlIiwKKyAgICAi
LS1ndGVzdF9icmVha19vbl9mYWlsdXJlPWYiLAorICAgIE5VTEwKKyAgfTsKKworICBjb25zdCBj
aGFyKiBhcmd2MltdID0geworICAgICJmb28uZXhlIiwKKyAgICBOVUxMCisgIH07CisKKyAgR1RF
U1RfVEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2MiwgRmxhZ3M6OkJyZWFrT25GYWlsdXJl
KGZhbHNlKSwgZmFsc2UpOworfQorCisvLyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3RfYnJlYWtfb25f
ZmFpbHVyZT1GLgorVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgQnJlYWtPbkZhaWx1cmVGYWxz
ZV9GKSB7CisgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgIi0t
Z3Rlc3RfYnJlYWtfb25fZmFpbHVyZT1GIiwKKyAgICBOVUxMCisgIH07CisKKyAgY29uc3QgY2hh
ciogYXJndjJbXSA9IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgTlVMTAorICB9OworCisgIEdURVNU
X1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIsIEZsYWdzOjpCcmVha09uRmFpbHVyZShm
YWxzZSksIGZhbHNlKTsKK30KKworLy8gVGVzdHMgcGFyc2luZyBhIC0tZ3Rlc3RfYnJlYWtfb25f
ZmFpbHVyZSBmbGFnIHRoYXQgaGFzIGEgInRydWUiCisvLyBkZWZpbml0aW9uLgorVEVTVF9GKElu
aXRHb29nbGVUZXN0VGVzdCwgQnJlYWtPbkZhaWx1cmVUcnVlKSB7CisgIGNvbnN0IGNoYXIqIGFy
Z3ZbXSA9IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgIi0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZT0x
IiwKKyAgICBOVUxMCisgIH07CisKKyAgY29uc3QgY2hhciogYXJndjJbXSA9IHsKKyAgICAiZm9v
LmV4ZSIsCisgICAgTlVMTAorICB9OworCisgIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJn
diwgYXJndjIsIEZsYWdzOjpCcmVha09uRmFpbHVyZSh0cnVlKSwgZmFsc2UpOworfQorCisvLyBU
ZXN0cyBwYXJzaW5nIC0tZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9ucy4KK1RFU1RfRihJbml0R29vZ2xl
VGVzdFRlc3QsIENhdGNoRXhjZXB0aW9ucykgeworICBjb25zdCBjaGFyKiBhcmd2W10gPSB7Cisg
ICAgImZvby5leGUiLAorICAgICItLWd0ZXN0X2NhdGNoX2V4Y2VwdGlvbnMiLAorICAgIE5VTEwK
KyAgfTsKKworICBjb25zdCBjaGFyKiBhcmd2MltdID0geworICAgICJmb28uZXhlIiwKKyAgICBO
VUxMCisgIH07CisKKyAgR1RFU1RfVEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2MiwgRmxh
Z3M6OkNhdGNoRXhjZXB0aW9ucyh0cnVlKSwgZmFsc2UpOworfQorCisvLyBUZXN0cyBwYXJzaW5n
IC0tZ3Rlc3RfZGVhdGhfdGVzdF91c2VfZm9yay4KK1RFU1RfRihJbml0R29vZ2xlVGVzdFRlc3Qs
IERlYXRoVGVzdFVzZUZvcmspIHsKKyAgY29uc3QgY2hhciogYXJndltdID0geworICAgICJmb28u
ZXhlIiwKKyAgICAiLS1ndGVzdF9kZWF0aF90ZXN0X3VzZV9mb3JrIiwKKyAgICBOVUxMCisgIH07
CisKKyAgY29uc3QgY2hhciogYXJndjJbXSA9IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgTlVMTAor
ICB9OworCisgIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIsIEZsYWdzOjpE
ZWF0aFRlc3RVc2VGb3JrKHRydWUpLCBmYWxzZSk7Cit9CisKKy8vIFRlc3RzIGhhdmluZyB0aGUg
c2FtZSBmbGFnIHR3aWNlIHdpdGggZGlmZmVyZW50IHZhbHVlcy4gIFRoZQorLy8gZXhwZWN0ZWQg
YmVoYXZpb3IgaXMgdGhhdCB0aGUgb25lIGNvbWluZyBsYXN0IHRha2VzIHByZWNlZGVuY2UuCitU
RVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBEdXBsaWNhdGVkRmxhZ3MpIHsKKyAgY29uc3QgY2hh
ciogYXJndltdID0geworICAgICJmb28uZXhlIiwKKyAgICAiLS1ndGVzdF9maWx0ZXI9YSIsCisg
ICAgIi0tZ3Rlc3RfZmlsdGVyPWIiLAorICAgIE5VTEwKKyAgfTsKKworICBjb25zdCBjaGFyKiBh
cmd2MltdID0geworICAgICJmb28uZXhlIiwKKyAgICBOVUxMCisgIH07CisKKyAgR1RFU1RfVEVT
VF9QQVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2MiwgRmxhZ3M6OkZpbHRlcigiYiIpLCBmYWxzZSk7
Cit9CisKKy8vIFRlc3RzIGhhdmluZyBhbiB1bnJlY29nbml6ZWQgZmxhZyBvbiB0aGUgY29tbWFu
ZCBsaW5lLgorVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgVW5yZWNvZ25pemVkRmxhZykgewor
ICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CisgICAgImZvby5leGUiLAorICAgICItLWd0ZXN0X2Jy
ZWFrX29uX2ZhaWx1cmUiLAorICAgICJiYXIiLCAgLy8gVW5yZWNvZ25pemVkIGJ5IEdvb2dsZSBU
ZXN0LgorICAgICItLWd0ZXN0X2ZpbHRlcj1iIiwKKyAgICBOVUxMCisgIH07CisKKyAgY29uc3Qg
Y2hhciogYXJndjJbXSA9IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgImJhciIsCisgICAgTlVMTAor
ICB9OworCisgIEZsYWdzIGZsYWdzOworICBmbGFncy5icmVha19vbl9mYWlsdXJlID0gdHJ1ZTsK
KyAgZmxhZ3MuZmlsdGVyID0gImIiOworICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3Ys
IGFyZ3YyLCBmbGFncywgZmFsc2UpOworfQorCisvLyBUZXN0cyBoYXZpbmcgYSAtLWd0ZXN0X2xp
c3RfdGVzdHMgZmxhZworVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgTGlzdFRlc3RzRmxhZykg
eworICAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKKyAgICAgICJmb28uZXhlIiwKKyAgICAgICIt
LWd0ZXN0X2xpc3RfdGVzdHMiLAorICAgICAgTlVMTAorICAgIH07CisKKyAgICBjb25zdCBjaGFy
KiBhcmd2MltdID0geworICAgICAgImZvby5leGUiLAorICAgICAgTlVMTAorICAgIH07CisKKyAg
ICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLCBGbGFnczo6TGlzdFRlc3Rz
KHRydWUpLCBmYWxzZSk7Cit9CisKKy8vIFRlc3RzIGhhdmluZyBhIC0tZ3Rlc3RfbGlzdF90ZXN0
cyBmbGFnIHdpdGggYSAidHJ1ZSIgdmFsdWUKK1RFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIExp
c3RUZXN0c1RydWUpIHsKKyAgICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CisgICAgICAiZm9vLmV4
ZSIsCisgICAgICAiLS1ndGVzdF9saXN0X3Rlc3RzPTEiLAorICAgICAgTlVMTAorICAgIH07CisK
KyAgICBjb25zdCBjaGFyKiBhcmd2MltdID0geworICAgICAgImZvby5leGUiLAorICAgICAgTlVM
TAorICAgIH07CisKKyAgICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLCBG
bGFnczo6TGlzdFRlc3RzKHRydWUpLCBmYWxzZSk7Cit9CisKKy8vIFRlc3RzIGhhdmluZyBhIC0t
Z3Rlc3RfbGlzdF90ZXN0cyBmbGFnIHdpdGggYSAiZmFsc2UiIHZhbHVlCitURVNUX0YoSW5pdEdv
b2dsZVRlc3RUZXN0LCBMaXN0VGVzdHNGYWxzZSkgeworICAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9
IHsKKyAgICAgICJmb28uZXhlIiwKKyAgICAgICItLWd0ZXN0X2xpc3RfdGVzdHM9MCIsCisgICAg
ICBOVUxMCisgICAgfTsKKworICAgIGNvbnN0IGNoYXIqIGFyZ3YyW10gPSB7CisgICAgICAiZm9v
LmV4ZSIsCisgICAgICBOVUxMCisgICAgfTsKKworICAgIEdURVNUX1RFU1RfUEFSU0lOR19GTEFH
U18oYXJndiwgYXJndjIsIEZsYWdzOjpMaXN0VGVzdHMoZmFsc2UpLCBmYWxzZSk7Cit9CisKKy8v
IFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9saXN0X3Rlc3RzPWYuCitURVNUX0YoSW5pdEdvb2dsZVRl
c3RUZXN0LCBMaXN0VGVzdHNGYWxzZV9mKSB7CisgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKKyAg
ICAiZm9vLmV4ZSIsCisgICAgIi0tZ3Rlc3RfbGlzdF90ZXN0cz1mIiwKKyAgICBOVUxMCisgIH07
CisKKyAgY29uc3QgY2hhciogYXJndjJbXSA9IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgTlVMTAor
ICB9OworCisgIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIsIEZsYWdzOjpM
aXN0VGVzdHMoZmFsc2UpLCBmYWxzZSk7Cit9CisKKy8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9s
aXN0X3Rlc3RzPUYuCitURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBMaXN0VGVzdHNGYWxzZV9G
KSB7CisgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgIi0tZ3Rl
c3RfbGlzdF90ZXN0cz1GIiwKKyAgICBOVUxMCisgIH07CisKKyAgY29uc3QgY2hhciogYXJndjJb
XSA9IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgTlVMTAorICB9OworCisgIEdURVNUX1RFU1RfUEFS
U0lOR19GTEFHU18oYXJndiwgYXJndjIsIEZsYWdzOjpMaXN0VGVzdHMoZmFsc2UpLCBmYWxzZSk7
Cit9CisKKy8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9vdXRwdXQgKGludmFsaWQpLgorVEVTVF9G
KEluaXRHb29nbGVUZXN0VGVzdCwgT3V0cHV0RW1wdHkpIHsKKyAgY29uc3QgY2hhciogYXJndltd
ID0geworICAgICJmb28uZXhlIiwKKyAgICAiLS1ndGVzdF9vdXRwdXQiLAorICAgIE5VTEwKKyAg
fTsKKworICBjb25zdCBjaGFyKiBhcmd2MltdID0geworICAgICJmb28uZXhlIiwKKyAgICAiLS1n
dGVzdF9vdXRwdXQiLAorICAgIE5VTEwKKyAgfTsKKworICBHVEVTVF9URVNUX1BBUlNJTkdfRkxB
R1NfKGFyZ3YsIGFyZ3YyLCBGbGFncygpLCB0cnVlKTsKK30KKworLy8gVGVzdHMgcGFyc2luZyAt
LWd0ZXN0X291dHB1dD14bWwKK1RFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIE91dHB1dFhtbCkg
eworICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CisgICAgImZvby5leGUiLAorICAgICItLWd0ZXN0
X291dHB1dD14bWwiLAorICAgIE5VTEwKKyAgfTsKKworICBjb25zdCBjaGFyKiBhcmd2MltdID0g
eworICAgICJmb28uZXhlIiwKKyAgICBOVUxMCisgIH07CisKKyAgR1RFU1RfVEVTVF9QQVJTSU5H
X0ZMQUdTXyhhcmd2LCBhcmd2MiwgRmxhZ3M6Ok91dHB1dCgieG1sIiksIGZhbHNlKTsKK30KKwor
Ly8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X291dHB1dD14bWw6ZmlsZQorVEVTVF9GKEluaXRHb29n
bGVUZXN0VGVzdCwgT3V0cHV0WG1sRmlsZSkgeworICBjb25zdCBjaGFyKiBhcmd2W10gPSB7Cisg
ICAgImZvby5leGUiLAorICAgICItLWd0ZXN0X291dHB1dD14bWw6ZmlsZSIsCisgICAgTlVMTAor
ICB9OworCisgIGNvbnN0IGNoYXIqIGFyZ3YyW10gPSB7CisgICAgImZvby5leGUiLAorICAgIE5V
TEwKKyAgfTsKKworICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLCBGbGFn
czo6T3V0cHV0KCJ4bWw6ZmlsZSIpLCBmYWxzZSk7Cit9CisKKy8vIFRlc3RzIHBhcnNpbmcgLS1n
dGVzdF9vdXRwdXQ9eG1sOmRpcmVjdG9yeS9wYXRoLworVEVTVF9GKEluaXRHb29nbGVUZXN0VGVz
dCwgT3V0cHV0WG1sRGlyZWN0b3J5KSB7CisgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKKyAgICAi
Zm9vLmV4ZSIsCisgICAgIi0tZ3Rlc3Rfb3V0cHV0PXhtbDpkaXJlY3RvcnkvcGF0aC8iLAorICAg
IE5VTEwKKyAgfTsKKworICBjb25zdCBjaGFyKiBhcmd2MltdID0geworICAgICJmb28uZXhlIiwK
KyAgICBOVUxMCisgIH07CisKKyAgR1RFU1RfVEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2
MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbGFnczo6T3V0cHV0KCJ4bWw6ZGlyZWN0
b3J5L3BhdGgvIiksIGZhbHNlKTsKK30KKworLy8gVGVzdHMgaGF2aW5nIGEgLS1ndGVzdF9wcmlu
dF90aW1lIGZsYWcKK1RFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFByaW50VGltZUZsYWcpIHsK
KyAgICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CisgICAgICAiZm9vLmV4ZSIsCisgICAgICAiLS1n
dGVzdF9wcmludF90aW1lIiwKKyAgICAgIE5VTEwKKyAgICB9OworCisgICAgY29uc3QgY2hhciog
YXJndjJbXSA9IHsKKyAgICAgICJmb28uZXhlIiwKKyAgICAgIE5VTEwKKyAgICB9OworCisgICAg
R1RFU1RfVEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2MiwgRmxhZ3M6OlByaW50VGltZSh0
cnVlKSwgZmFsc2UpOworfQorCisvLyBUZXN0cyBoYXZpbmcgYSAtLWd0ZXN0X3ByaW50X3RpbWUg
ZmxhZyB3aXRoIGEgInRydWUiIHZhbHVlCitURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBQcmlu
dFRpbWVUcnVlKSB7CisgICAgY29uc3QgY2hhciogYXJndltdID0geworICAgICAgImZvby5leGUi
LAorICAgICAgIi0tZ3Rlc3RfcHJpbnRfdGltZT0xIiwKKyAgICAgIE5VTEwKKyAgICB9OworCisg
ICAgY29uc3QgY2hhciogYXJndjJbXSA9IHsKKyAgICAgICJmb28uZXhlIiwKKyAgICAgIE5VTEwK
KyAgICB9OworCisgICAgR1RFU1RfVEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2MiwgRmxh
Z3M6OlByaW50VGltZSh0cnVlKSwgZmFsc2UpOworfQorCisvLyBUZXN0cyBoYXZpbmcgYSAtLWd0
ZXN0X3ByaW50X3RpbWUgZmxhZyB3aXRoIGEgImZhbHNlIiB2YWx1ZQorVEVTVF9GKEluaXRHb29n
bGVUZXN0VGVzdCwgUHJpbnRUaW1lRmFsc2UpIHsKKyAgICBjb25zdCBjaGFyKiBhcmd2W10gPSB7
CisgICAgICAiZm9vLmV4ZSIsCisgICAgICAiLS1ndGVzdF9wcmludF90aW1lPTAiLAorICAgICAg
TlVMTAorICAgIH07CisKKyAgICBjb25zdCBjaGFyKiBhcmd2MltdID0geworICAgICAgImZvby5l
eGUiLAorICAgICAgTlVMTAorICAgIH07CisKKyAgICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1Nf
KGFyZ3YsIGFyZ3YyLCBGbGFnczo6UHJpbnRUaW1lKGZhbHNlKSwgZmFsc2UpOworfQorCisvLyBU
ZXN0cyBwYXJzaW5nIC0tZ3Rlc3RfcHJpbnRfdGltZT1mLgorVEVTVF9GKEluaXRHb29nbGVUZXN0
VGVzdCwgUHJpbnRUaW1lRmFsc2VfZikgeworICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CisgICAg
ImZvby5leGUiLAorICAgICItLWd0ZXN0X3ByaW50X3RpbWU9ZiIsCisgICAgTlVMTAorICB9Owor
CisgIGNvbnN0IGNoYXIqIGFyZ3YyW10gPSB7CisgICAgImZvby5leGUiLAorICAgIE5VTEwKKyAg
fTsKKworICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLCBGbGFnczo6UHJp
bnRUaW1lKGZhbHNlKSwgZmFsc2UpOworfQorCisvLyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3RfcHJp
bnRfdGltZT1GLgorVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgUHJpbnRUaW1lRmFsc2VfRikg
eworICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CisgICAgImZvby5leGUiLAorICAgICItLWd0ZXN0
X3ByaW50X3RpbWU9RiIsCisgICAgTlVMTAorICB9OworCisgIGNvbnN0IGNoYXIqIGFyZ3YyW10g
PSB7CisgICAgImZvby5leGUiLAorICAgIE5VTEwKKyAgfTsKKworICBHVEVTVF9URVNUX1BBUlNJ
TkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLCBGbGFnczo6UHJpbnRUaW1lKGZhbHNlKSwgZmFsc2UpOwor
fQorCisvLyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3RfcmFuZG9tX3NlZWQ9bnVtYmVyCitURVNUX0Yo
SW5pdEdvb2dsZVRlc3RUZXN0LCBSYW5kb21TZWVkKSB7CisgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9
IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgIi0tZ3Rlc3RfcmFuZG9tX3NlZWQ9MTAwMCIsCisgICAg
TlVMTAorICB9OworCisgIGNvbnN0IGNoYXIqIGFyZ3YyW10gPSB7CisgICAgImZvby5leGUiLAor
ICAgIE5VTEwKKyAgfTsKKworICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3Yy
LCBGbGFnczo6UmFuZG9tU2VlZCgxMDAwKSwgZmFsc2UpOworfQorCisvLyBUZXN0cyBwYXJzaW5n
IC0tZ3Rlc3RfcmVwZWF0PW51bWJlcgorVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgUmVwZWF0
KSB7CisgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgIi0tZ3Rl
c3RfcmVwZWF0PTEwMDAiLAorICAgIE5VTEwKKyAgfTsKKworICBjb25zdCBjaGFyKiBhcmd2Mltd
ID0geworICAgICJmb28uZXhlIiwKKyAgICBOVUxMCisgIH07CisKKyAgR1RFU1RfVEVTVF9QQVJT
SU5HX0ZMQUdTXyhhcmd2LCBhcmd2MiwgRmxhZ3M6OlJlcGVhdCgxMDAwKSwgZmFsc2UpOworfQor
CisvLyBUZXN0cyBoYXZpbmcgYSAtLWd0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzIGZsYWcK
K1RFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEFsc29SdW5EaXNhYmxlZFRlc3RzRmxhZykgewor
ICAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKKyAgICAgICJmb28uZXhlIiwKKyAgICAgICItLWd0
ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzIiwKKyAgICAgIE5VTEwKKyAgICB9OworCisgICAg
Y29uc3QgY2hhciogYXJndjJbXSA9IHsKKyAgICAgICJmb28uZXhlIiwKKyAgICAgIE5VTEwKKyAg
ICB9OworCisgICAgR1RFU1RfVEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2MiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZsYWdzOjpBbHNvUnVuRGlzYWJsZWRUZXN0cyh0cnVl
KSwgZmFsc2UpOworfQorCisvLyBUZXN0cyBoYXZpbmcgYSAtLWd0ZXN0X2Fsc29fcnVuX2Rpc2Fi
bGVkX3Rlc3RzIGZsYWcgd2l0aCBhICJ0cnVlIiB2YWx1ZQorVEVTVF9GKEluaXRHb29nbGVUZXN0
VGVzdCwgQWxzb1J1bkRpc2FibGVkVGVzdHNUcnVlKSB7CisgICAgY29uc3QgY2hhciogYXJndltd
ID0geworICAgICAgImZvby5leGUiLAorICAgICAgIi0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRf
dGVzdHM9MSIsCisgICAgICBOVUxMCisgICAgfTsKKworICAgIGNvbnN0IGNoYXIqIGFyZ3YyW10g
PSB7CisgICAgICAiZm9vLmV4ZSIsCisgICAgICBOVUxMCisgICAgfTsKKworICAgIEdURVNUX1RF
U1RfUEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBGbGFnczo6QWxzb1J1bkRpc2FibGVkVGVzdHModHJ1ZSksIGZhbHNlKTsKK30KKworLy8g
VGVzdHMgaGF2aW5nIGEgLS1ndGVzdF9hbHNvX3J1bl9kaXNhYmxlZF90ZXN0cyBmbGFnIHdpdGgg
YSAiZmFsc2UiIHZhbHVlCitURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBBbHNvUnVuRGlzYWJs
ZWRUZXN0c0ZhbHNlKSB7CisgICAgY29uc3QgY2hhciogYXJndltdID0geworICAgICAgImZvby5l
eGUiLAorICAgICAgIi0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHM9MCIsCisgICAgICBO
VUxMCisgICAgfTsKKworICAgIGNvbnN0IGNoYXIqIGFyZ3YyW10gPSB7CisgICAgICAiZm9vLmV4
ZSIsCisgICAgICBOVUxMCisgICAgfTsKKworICAgIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18o
YXJndiwgYXJndjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbGFnczo6QWxzb1J1
bkRpc2FibGVkVGVzdHMoZmFsc2UpLCBmYWxzZSk7Cit9CisKKy8vIFRlc3RzIHBhcnNpbmcgLS1n
dGVzdF9zaHVmZmxlLgorVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgU2h1ZmZsZVdpdGhvdXRW
YWx1ZSkgeworICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CisgICAgImZvby5leGUiLAorICAgICIt
LWd0ZXN0X3NodWZmbGUiLAorICAgIE5VTEwKK307CisKKyAgY29uc3QgY2hhciogYXJndjJbXSA9
IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgTlVMTAorICB9OworCisgIEdURVNUX1RFU1RfUEFSU0lO
R19GTEFHU18oYXJndiwgYXJndjIsIEZsYWdzOjpTaHVmZmxlKHRydWUpLCBmYWxzZSk7Cit9CisK
Ky8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9zaHVmZmxlPTAuCitURVNUX0YoSW5pdEdvb2dsZVRl
c3RUZXN0LCBTaHVmZmxlRmFsc2VfMCkgeworICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CisgICAg
ImZvby5leGUiLAorICAgICItLWd0ZXN0X3NodWZmbGU9MCIsCisgICAgTlVMTAorICB9OworCisg
IGNvbnN0IGNoYXIqIGFyZ3YyW10gPSB7CisgICAgImZvby5leGUiLAorICAgIE5VTEwKKyAgfTsK
KworICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLCBGbGFnczo6U2h1ZmZs
ZShmYWxzZSksIGZhbHNlKTsKK30KKworLy8gVGVzdHMgcGFyc2luZyBhIC0tZ3Rlc3Rfc2h1ZmZs
ZSBmbGFnIHRoYXQgaGFzIGEgInRydWUiCisvLyBkZWZpbml0aW9uLgorVEVTVF9GKEluaXRHb29n
bGVUZXN0VGVzdCwgU2h1ZmZsZVRydWUpIHsKKyAgY29uc3QgY2hhciogYXJndltdID0geworICAg
ICJmb28uZXhlIiwKKyAgICAiLS1ndGVzdF9zaHVmZmxlPTEiLAorICAgIE5VTEwKKyAgfTsKKwor
ICBjb25zdCBjaGFyKiBhcmd2MltdID0geworICAgICJmb28uZXhlIiwKKyAgICBOVUxMCisgIH07
CisKKyAgR1RFU1RfVEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2MiwgRmxhZ3M6OlNodWZm
bGUodHJ1ZSksIGZhbHNlKTsKK30KKworLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X3N0YWNrX3Ry
YWNlX2RlcHRoPW51bWJlci4KK1RFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFN0YWNrVHJhY2VE
ZXB0aCkgeworICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CisgICAgImZvby5leGUiLAorICAgICIt
LWd0ZXN0X3N0YWNrX3RyYWNlX2RlcHRoPTUiLAorICAgIE5VTEwKKyAgfTsKKworICBjb25zdCBj
aGFyKiBhcmd2MltdID0geworICAgICJmb28uZXhlIiwKKyAgICBOVUxMCisgIH07CisKKyAgR1RF
U1RfVEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2MiwgRmxhZ3M6OlN0YWNrVHJhY2VEZXB0
aCg1KSwgZmFsc2UpOworfQorCitURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBTdHJlYW1SZXN1
bHRUbykgeworICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CisgICAgImZvby5leGUiLAorICAgICIt
LWd0ZXN0X3N0cmVhbV9yZXN1bHRfdG89bG9jYWxob3N0OjEyMzQiLAorICAgIE5VTEwKKyAgfTsK
KworICBjb25zdCBjaGFyKiBhcmd2MltdID0geworICAgICJmb28uZXhlIiwKKyAgICBOVUxMCisg
IH07CisKKyAgR1RFU1RfVEVTVF9QQVJTSU5HX0ZMQUdTXygKKyAgICAgIGFyZ3YsIGFyZ3YyLCBG
bGFnczo6U3RyZWFtUmVzdWx0VG8oImxvY2FsaG9zdDoxMjM0IiksIGZhbHNlKTsKK30KKworLy8g
VGVzdHMgcGFyc2luZyAtLWd0ZXN0X3Rocm93X29uX2ZhaWx1cmUuCitURVNUX0YoSW5pdEdvb2ds
ZVRlc3RUZXN0LCBUaHJvd09uRmFpbHVyZVdpdGhvdXRWYWx1ZSkgeworICBjb25zdCBjaGFyKiBh
cmd2W10gPSB7CisgICAgImZvby5leGUiLAorICAgICItLWd0ZXN0X3Rocm93X29uX2ZhaWx1cmUi
LAorICAgIE5VTEwKK307CisKKyAgY29uc3QgY2hhciogYXJndjJbXSA9IHsKKyAgICAiZm9vLmV4
ZSIsCisgICAgTlVMTAorICB9OworCisgIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwg
YXJndjIsIEZsYWdzOjpUaHJvd09uRmFpbHVyZSh0cnVlKSwgZmFsc2UpOworfQorCisvLyBUZXN0
cyBwYXJzaW5nIC0tZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZT0wLgorVEVTVF9GKEluaXRHb29nbGVU
ZXN0VGVzdCwgVGhyb3dPbkZhaWx1cmVGYWxzZV8wKSB7CisgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9
IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgIi0tZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZT0wIiwKKyAg
ICBOVUxMCisgIH07CisKKyAgY29uc3QgY2hhciogYXJndjJbXSA9IHsKKyAgICAiZm9vLmV4ZSIs
CisgICAgTlVMTAorICB9OworCisgIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwgYXJn
djIsIEZsYWdzOjpUaHJvd09uRmFpbHVyZShmYWxzZSksIGZhbHNlKTsKK30KKworLy8gVGVzdHMg
cGFyc2luZyBhIC0tZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZSBmbGFnIHRoYXQgaGFzIGEgInRydWUi
CisvLyBkZWZpbml0aW9uLgorVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgVGhyb3dPbkZhaWx1
cmVUcnVlKSB7CisgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKKyAgICAiZm9vLmV4ZSIsCisgICAg
Ii0tZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZT0xIiwKKyAgICBOVUxMCisgIH07CisKKyAgY29uc3Qg
Y2hhciogYXJndjJbXSA9IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgTlVMTAorICB9OworCisgIEdU
RVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIsIEZsYWdzOjpUaHJvd09uRmFpbHVy
ZSh0cnVlKSwgZmFsc2UpOworfQorCisjaWYgR1RFU1RfT1NfV0lORE9XUworLy8gVGVzdHMgcGFy
c2luZyB3aWRlIHN0cmluZ3MuCitURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBXaWRlU3RyaW5n
cykgeworICBjb25zdCB3Y2hhcl90KiBhcmd2W10gPSB7CisgICAgTCJmb28uZXhlIiwKKyAgICBM
Ii0tZ3Rlc3RfZmlsdGVyPUZvbyoiLAorICAgIEwiLS1ndGVzdF9saXN0X3Rlc3RzPTEiLAorICAg
IEwiLS1ndGVzdF9icmVha19vbl9mYWlsdXJlIiwKKyAgICBMIi0tbm9uX2d0ZXN0X2ZsYWciLAor
ICAgIE5VTEwKKyAgfTsKKworICBjb25zdCB3Y2hhcl90KiBhcmd2MltdID0geworICAgIEwiZm9v
LmV4ZSIsCisgICAgTCItLW5vbl9ndGVzdF9mbGFnIiwKKyAgICBOVUxMCisgIH07CisKKyAgRmxh
Z3MgZXhwZWN0ZWRfZmxhZ3M7CisgIGV4cGVjdGVkX2ZsYWdzLmJyZWFrX29uX2ZhaWx1cmUgPSB0
cnVlOworICBleHBlY3RlZF9mbGFncy5maWx0ZXIgPSAiRm9vKiI7CisgIGV4cGVjdGVkX2ZsYWdz
Lmxpc3RfdGVzdHMgPSB0cnVlOworCisgIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwg
YXJndjIsIGV4cGVjdGVkX2ZsYWdzLCBmYWxzZSk7Cit9CisjIGVuZGlmICAvLyBHVEVTVF9PU19X
SU5ET1dTCisKKyNpZiBHVEVTVF9VU0VfT1dOX0ZMQUdGSUxFX0ZMQUdfCitjbGFzcyBGbGFnZmls
ZVRlc3QgOiBwdWJsaWMgSW5pdEdvb2dsZVRlc3RUZXN0IHsKKyBwdWJsaWM6CisgIHZpcnR1YWwg
dm9pZCBTZXRVcCgpIHsKKyAgICBJbml0R29vZ2xlVGVzdFRlc3Q6OlNldFVwKCk7CisKKyAgICB0
ZXN0ZGF0YV9wYXRoXy5TZXQoaW50ZXJuYWw6OkZpbGVQYXRoKAorICAgICAgICB0ZXN0aW5nOjpU
ZW1wRGlyKCkgKyBpbnRlcm5hbDo6R2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkuc3RyaW5nKCkg
KworICAgICAgICAiX2ZsYWdmaWxlX3Rlc3QiKSk7CisgICAgdGVzdGluZzo6aW50ZXJuYWw6OnBv
c2l4OjpSbURpcih0ZXN0ZGF0YV9wYXRoXy5jX3N0cigpKTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0
ZGF0YV9wYXRoXy5DcmVhdGVGb2xkZXIoKSk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRv
d24oKSB7CisgICAgdGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OjpSbURpcih0ZXN0ZGF0YV9wYXRo
Xy5jX3N0cigpKTsKKyAgICBJbml0R29vZ2xlVGVzdFRlc3Q6OlRlYXJEb3duKCk7CisgIH0KKwor
ICBpbnRlcm5hbDo6RmlsZVBhdGggQ3JlYXRlRmxhZ2ZpbGUoY29uc3QgY2hhciogY29udGVudHMp
IHsKKyAgICBpbnRlcm5hbDo6RmlsZVBhdGggZmlsZV9wYXRoKGludGVybmFsOjpGaWxlUGF0aDo6
R2VuZXJhdGVVbmlxdWVGaWxlTmFtZSgKKyAgICAgICAgdGVzdGRhdGFfcGF0aF8sIGludGVybmFs
OjpGaWxlUGF0aCgidW5pcXVlIiksICJ0eHQiKSk7CisgICAgRklMRSogZiA9IHRlc3Rpbmc6Omlu
dGVybmFsOjpwb3NpeDo6Rk9wZW4oZmlsZV9wYXRoLmNfc3RyKCksICJ3Iik7CisgICAgZnByaW50
ZihmLCAiJXMiLCBjb250ZW50cyk7CisgICAgZmNsb3NlKGYpOworICAgIHJldHVybiBmaWxlX3Bh
dGg7CisgIH0KKworIHByaXZhdGU6CisgIGludGVybmFsOjpGaWxlUGF0aCB0ZXN0ZGF0YV9wYXRo
XzsKK307CisKKy8vIFRlc3RzIGFuIGVtcHR5IGZsYWdmaWxlLgorVEVTVF9GKEZsYWdmaWxlVGVz
dCwgRW1wdHkpIHsKKyAgaW50ZXJuYWw6OkZpbGVQYXRoIGZsYWdmaWxlX3BhdGgoQ3JlYXRlRmxh
Z2ZpbGUoIiIpKTsKKyAgc3RkOjpzdHJpbmcgZmxhZ2ZpbGVfZmxhZyA9CisgICAgICBzdGQ6OnN0
cmluZygiLS0iIEdURVNUX0ZMQUdfUFJFRklYXyAiZmxhZ2ZpbGU9IikgKyBmbGFnZmlsZV9wYXRo
LmNfc3RyKCk7CisKKyAgY29uc3QgY2hhciogYXJndltdID0geworICAgICJmb28uZXhlIiwKKyAg
ICBmbGFnZmlsZV9mbGFnLmNfc3RyKCksCisgICAgTlVMTAorICB9OworCisgIGNvbnN0IGNoYXIq
IGFyZ3YyW10gPSB7CisgICAgImZvby5leGUiLAorICAgIE5VTEwKKyAgfTsKKworICBHVEVTVF9U
RVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLCBGbGFncygpLCBmYWxzZSk7Cit9CisKKy8v
IFRlc3RzIHBhc3NpbmcgYSBub24tZW1wdHkgLS1ndGVzdF9maWx0ZXIgZmxhZyB2aWEgLS1ndGVz
dF9mbGFnZmlsZS4KK1RFU1RfRihGbGFnZmlsZVRlc3QsIEZpbHRlck5vbkVtcHR5KSB7CisgIGlu
dGVybmFsOjpGaWxlUGF0aCBmbGFnZmlsZV9wYXRoKENyZWF0ZUZsYWdmaWxlKAorICAgICAgIi0t
IiAgR1RFU1RfRkxBR19QUkVGSVhfICAiZmlsdGVyPWFiYyIpKTsKKyAgc3RkOjpzdHJpbmcgZmxh
Z2ZpbGVfZmxhZyA9CisgICAgICBzdGQ6OnN0cmluZygiLS0iIEdURVNUX0ZMQUdfUFJFRklYXyAi
ZmxhZ2ZpbGU9IikgKyBmbGFnZmlsZV9wYXRoLmNfc3RyKCk7CisKKyAgY29uc3QgY2hhciogYXJn
dltdID0geworICAgICJmb28uZXhlIiwKKyAgICBmbGFnZmlsZV9mbGFnLmNfc3RyKCksCisgICAg
TlVMTAorICB9OworCisgIGNvbnN0IGNoYXIqIGFyZ3YyW10gPSB7CisgICAgImZvby5leGUiLAor
ICAgIE5VTEwKKyAgfTsKKworICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3Yy
LCBGbGFnczo6RmlsdGVyKCJhYmMiKSwgZmFsc2UpOworfQorCisvLyBUZXN0cyBwYXNzaW5nIHNl
dmVyYWwgZmxhZ3MgdmlhIC0tZ3Rlc3RfZmxhZ2ZpbGUuCitURVNUX0YoRmxhZ2ZpbGVUZXN0LCBT
ZXZlcmFsRmxhZ3MpIHsKKyAgaW50ZXJuYWw6OkZpbGVQYXRoIGZsYWdmaWxlX3BhdGgoQ3JlYXRl
RmxhZ2ZpbGUoCisgICAgICAiLS0iICBHVEVTVF9GTEFHX1BSRUZJWF8gICJmaWx0ZXI9YWJjXG4i
CisgICAgICAiLS0iICBHVEVTVF9GTEFHX1BSRUZJWF8gICJicmVha19vbl9mYWlsdXJlXG4iCisg
ICAgICAiLS0iICBHVEVTVF9GTEFHX1BSRUZJWF8gICJsaXN0X3Rlc3RzIikpOworICBzdGQ6OnN0
cmluZyBmbGFnZmlsZV9mbGFnID0KKyAgICAgIHN0ZDo6c3RyaW5nKCItLSIgR1RFU1RfRkxBR19Q
UkVGSVhfICJmbGFnZmlsZT0iKSArIGZsYWdmaWxlX3BhdGguY19zdHIoKTsKKworICBjb25zdCBj
aGFyKiBhcmd2W10gPSB7CisgICAgImZvby5leGUiLAorICAgIGZsYWdmaWxlX2ZsYWcuY19zdHIo
KSwKKyAgICBOVUxMCisgIH07CisKKyAgY29uc3QgY2hhciogYXJndjJbXSA9IHsKKyAgICAiZm9v
LmV4ZSIsCisgICAgTlVMTAorICB9OworCisgIEZsYWdzIGV4cGVjdGVkX2ZsYWdzOworICBleHBl
Y3RlZF9mbGFncy5icmVha19vbl9mYWlsdXJlID0gdHJ1ZTsKKyAgZXhwZWN0ZWRfZmxhZ3MuZmls
dGVyID0gImFiYyI7CisgIGV4cGVjdGVkX2ZsYWdzLmxpc3RfdGVzdHMgPSB0cnVlOworCisgIEdU
RVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIsIGV4cGVjdGVkX2ZsYWdzLCBmYWxz
ZSk7Cit9CisjZW5kaWYgIC8vIEdURVNUX1VTRV9PV05fRkxBR0ZJTEVfRkxBR18KKworLy8gVGVz
dHMgY3VycmVudF90ZXN0X2luZm8oKSBpbiBVbml0VGVzdC4KK2NsYXNzIEN1cnJlbnRUZXN0SW5m
b1Rlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHJvdGVjdGVkOgorICAvLyBUZXN0cyB0aGF0IGN1cnJl
bnRfdGVzdF9pbmZvKCkgcmV0dXJucyBOVUxMIGJlZm9yZSB0aGUgZmlyc3QgdGVzdCBpbgorICAv
LyB0aGUgdGVzdCBjYXNlIGlzIHJ1bi4KKyAgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpIHsK
KyAgICAvLyBUaGVyZSBzaG91bGQgYmUgbm8gdGVzdHMgcnVubmluZyBhdCB0aGlzIHBvaW50Lgor
ICAgIGNvbnN0IFRlc3RJbmZvKiB0ZXN0X2luZm8gPQorICAgICAgVW5pdFRlc3Q6OkdldEluc3Rh
bmNlKCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7CisgICAgRVhQRUNUX1RSVUUodGVzdF9pbmZvID09
IE5VTEwpCisgICAgICAgIDw8ICJUaGVyZSBzaG91bGQgYmUgbm8gdGVzdHMgcnVubmluZyBhdCB0
aGlzIHBvaW50LiI7CisgIH0KKworICAvLyBUZXN0cyB0aGF0IGN1cnJlbnRfdGVzdF9pbmZvKCkg
cmV0dXJucyBOVUxMIGFmdGVyIHRoZSBsYXN0IHRlc3QgaW4KKyAgLy8gdGhlIHRlc3QgY2FzZSBo
YXMgcnVuLgorICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeworICAgIGNvbnN0IFRl
c3RJbmZvKiB0ZXN0X2luZm8gPQorICAgICAgVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJl
bnRfdGVzdF9pbmZvKCk7CisgICAgRVhQRUNUX1RSVUUodGVzdF9pbmZvID09IE5VTEwpCisgICAg
ICAgIDw8ICJUaGVyZSBzaG91bGQgYmUgbm8gdGVzdHMgcnVubmluZyBhdCB0aGlzIHBvaW50LiI7
CisgIH0KK307CisKKy8vIFRlc3RzIHRoYXQgY3VycmVudF90ZXN0X2luZm8oKSByZXR1cm5zIFRl
c3RJbmZvIGZvciBjdXJyZW50bHkgcnVubmluZworLy8gdGVzdCBieSBjaGVja2luZyB0aGUgZXhw
ZWN0ZWQgdGVzdCBuYW1lIGFnYWluc3QgdGhlIGFjdHVhbCBvbmUuCitURVNUX0YoQ3VycmVudFRl
c3RJbmZvVGVzdCwgV29ya3NGb3JGaXJzdFRlc3RJbkFUZXN0Q2FzZSkgeworICBjb25zdCBUZXN0
SW5mbyogdGVzdF9pbmZvID0KKyAgICBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90
ZXN0X2luZm8oKTsKKyAgQVNTRVJUX1RSVUUoTlVMTCAhPSB0ZXN0X2luZm8pCisgICAgICA8PCAi
VGhlcmUgaXMgYSB0ZXN0IHJ1bm5pbmcgc28gd2Ugc2hvdWxkIGhhdmUgYSB2YWxpZCBUZXN0SW5m
by4iOworICBFWFBFQ1RfU1RSRVEoIkN1cnJlbnRUZXN0SW5mb1Rlc3QiLCB0ZXN0X2luZm8tPnRl
c3RfY2FzZV9uYW1lKCkpCisgICAgICA8PCAiRXhwZWN0ZWQgdGhlIG5hbWUgb2YgdGhlIGN1cnJl
bnRseSBydW5uaW5nIHRlc3QgY2FzZS4iOworICBFWFBFQ1RfU1RSRVEoIldvcmtzRm9yRmlyc3RU
ZXN0SW5BVGVzdENhc2UiLCB0ZXN0X2luZm8tPm5hbWUoKSkKKyAgICAgIDw8ICJFeHBlY3RlZCB0
aGUgbmFtZSBvZiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdGVzdC4iOworfQorCisvLyBUZXN0cyB0
aGF0IGN1cnJlbnRfdGVzdF9pbmZvKCkgcmV0dXJucyBUZXN0SW5mbyBmb3IgY3VycmVudGx5IHJ1
bm5pbmcKKy8vIHRlc3QgYnkgY2hlY2tpbmcgdGhlIGV4cGVjdGVkIHRlc3QgbmFtZSBhZ2FpbnN0
IHRoZSBhY3R1YWwgb25lLiAgV2UKKy8vIHVzZSB0aGlzIHRlc3QgdG8gc2VlIHRoYXQgdGhlIFRl
c3RJbmZvIG9iamVjdCBhY3R1YWxseSBjaGFuZ2VkIGZyb20KKy8vIHRoZSBwcmV2aW91cyBpbnZv
Y2F0aW9uLgorVEVTVF9GKEN1cnJlbnRUZXN0SW5mb1Rlc3QsIFdvcmtzRm9yU2Vjb25kVGVzdElu
QVRlc3RDYXNlKSB7CisgIGNvbnN0IFRlc3RJbmZvKiB0ZXN0X2luZm8gPQorICAgIFVuaXRUZXN0
OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rlc3RfaW5mbygpOworICBBU1NFUlRfVFJVRShOVUxM
ICE9IHRlc3RfaW5mbykKKyAgICAgIDw8ICJUaGVyZSBpcyBhIHRlc3QgcnVubmluZyBzbyB3ZSBz
aG91bGQgaGF2ZSBhIHZhbGlkIFRlc3RJbmZvLiI7CisgIEVYUEVDVF9TVFJFUSgiQ3VycmVudFRl
c3RJbmZvVGVzdCIsIHRlc3RfaW5mby0+dGVzdF9jYXNlX25hbWUoKSkKKyAgICAgIDw8ICJFeHBl
Y3RlZCB0aGUgbmFtZSBvZiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdGVzdCBjYXNlLiI7CisgIEVY
UEVDVF9TVFJFUSgiV29ya3NGb3JTZWNvbmRUZXN0SW5BVGVzdENhc2UiLCB0ZXN0X2luZm8tPm5h
bWUoKSkKKyAgICAgIDw8ICJFeHBlY3RlZCB0aGUgbmFtZSBvZiB0aGUgY3VycmVudGx5IHJ1bm5p
bmcgdGVzdC4iOworfQorCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZworCisvLyBUaGVzZSB0d28g
bGluZXMgdGVzdCB0aGF0IHdlIGNhbiBkZWZpbmUgdGVzdHMgaW4gYSBuYW1lc3BhY2UgdGhhdAor
Ly8gaGFzIHRoZSBuYW1lICJ0ZXN0aW5nIiBhbmQgaXMgbmVzdGVkIGluIGFub3RoZXIgbmFtZXNw
YWNlLgorbmFtZXNwYWNlIG15X25hbWVzcGFjZSB7CituYW1lc3BhY2UgdGVzdGluZyB7CisKKy8v
IE1ha2VzIHN1cmUgdGhhdCBURVNUIGtub3dzIHRvIHVzZSA6OnRlc3Rpbmc6OlRlc3QgaW5zdGVh
ZCBvZgorLy8gOjpteV9uYW1lc3BhY2U6OnRlc3Rpbmc6OlRlc3QuCitjbGFzcyBUZXN0IHt9Owor
CisvLyBNYWtlcyBzdXJlIHRoYXQgYW4gYXNzZXJ0aW9uIGtub3dzIHRvIHVzZSA6OnRlc3Rpbmc6
Ok1lc3NhZ2UgaW5zdGVhZCBvZgorLy8gOjpteV9uYW1lc3BhY2U6OnRlc3Rpbmc6Ok1lc3NhZ2Uu
CitjbGFzcyBNZXNzYWdlIHt9OworCisvLyBNYWtlcyBzdXJlIHRoYXQgYW4gYXNzZXJ0aW9uIGtu
b3dzIHRvIHVzZQorLy8gOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgaW5zdGVhZCBvZgorLy8g
OjpteV9uYW1lc3BhY2U6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdC4KK2NsYXNzIEFzc2VydGlv
blJlc3VsdCB7fTsKKworLy8gVGVzdHMgdGhhdCBhbiBhc3NlcnRpb24gdGhhdCBzaG91bGQgc3Vj
Y2VlZCB3b3JrcyBhcyBleHBlY3RlZC4KK1RFU1QoTmVzdGVkVGVzdGluZ05hbWVzcGFjZVRlc3Qs
IFN1Y2Nlc3MpIHsKKyAgRVhQRUNUX0VRKDEsIDEpIDw8ICJUaGlzIHNob3VsZG4ndCBmYWlsLiI7
Cit9CisKKy8vIFRlc3RzIHRoYXQgYW4gYXNzZXJ0aW9uIHRoYXQgc2hvdWxkIGZhaWwgd29ya3Mg
YXMgZXhwZWN0ZWQuCitURVNUKE5lc3RlZFRlc3RpbmdOYW1lc3BhY2VUZXN0LCBGYWlsdXJlKSB7
CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEZBSUwoKSA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVj
dGVkLiIsCisgICAgICAgICAgICAgICAgICAgICAgICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQu
Iik7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCit9ICAvLyBuYW1lc3BhY2UgbXlfbmFt
ZXNwYWNlCisKKy8vIFRlc3RzIHRoYXQgb25lIGNhbiBjYWxsIHN1cGVyY2xhc3MgU2V0VXAgYW5k
IFRlYXJEb3duIG1ldGhvZHMtLQorLy8gdGhhdCBpcywgdGhhdCB0aGV5IGFyZSBub3QgcHJpdmF0
ZS4KKy8vIE5vIHRlc3RzIGFyZSBiYXNlZCBvbiB0aGlzIGZpeHR1cmU7IHRoZSB0ZXN0ICJwYXNz
ZXMiIGlmIGl0IGNvbXBpbGVzCisvLyBzdWNjZXNzZnVsbHkuCitjbGFzcyBQcm90ZWN0ZWRGaXh0
dXJlTWV0aG9kc1Rlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHJvdGVjdGVkOgorICB2aXJ0dWFsIHZv
aWQgU2V0VXAoKSB7CisgICAgVGVzdDo6U2V0VXAoKTsKKyAgfQorICB2aXJ0dWFsIHZvaWQgVGVh
ckRvd24oKSB7CisgICAgVGVzdDo6VGVhckRvd24oKTsKKyAgfQorfTsKKworLy8gU3RyZWFtaW5n
QXNzZXJ0aW9uc1Rlc3QgdGVzdHMgdGhlIHN0cmVhbWluZyB2ZXJzaW9ucyBvZiBhIHJlcHJlc2Vu
dGF0aXZlCisvLyBzYW1wbGUgb2YgYXNzZXJ0aW9ucy4KK1RFU1QoU3RyZWFtaW5nQXNzZXJ0aW9u
c1Rlc3QsIFVuY29uZGl0aW9uYWwpIHsKKyAgU1VDQ0VFRCgpIDw8ICJleHBlY3RlZCBzdWNjZXNz
IjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQUREX0ZBSUxVUkUoKSA8PCAiZXhwZWN0ZWQg
ZmFpbHVyZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBmYWlsdXJlIik7
CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEZBSUwoKSA8PCAiZXhwZWN0ZWQgZmFpbHVyZSIsCisg
ICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBmYWlsdXJlIik7Cit9CisKKyNpZmRlZiBf
X0JPUkxBTkRDX18KKy8vIFNpbGVuY2VzIHdhcm5pbmdzOiAiQ29uZGl0aW9uIGlzIGFsd2F5cyB0
cnVlIiwgIlVucmVhY2hhYmxlIGNvZGUiCisjIHByYWdtYSBvcHRpb24gcHVzaCAtdy1jY2MgLXct
cmNoCisjZW5kaWYKKworVEVTVChTdHJlYW1pbmdBc3NlcnRpb25zVGVzdCwgVHJ1dGgpIHsKKyAg
RVhQRUNUX1RSVUUodHJ1ZSkgPDwgInVuZXhwZWN0ZWQgZmFpbHVyZSI7CisgIEFTU0VSVF9UUlVF
KHRydWUpIDw8ICJ1bmV4cGVjdGVkIGZhaWx1cmUiOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RShFWFBFQ1RfVFJVRShmYWxzZSkgPDwgImV4cGVjdGVkIGZhaWx1cmUiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAiZXhwZWN0ZWQgZmFpbHVyZSIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVS
RShBU1NFUlRfVFJVRShmYWxzZSkgPDwgImV4cGVjdGVkIGZhaWx1cmUiLAorICAgICAgICAgICAg
ICAgICAgICAgICAiZXhwZWN0ZWQgZmFpbHVyZSIpOworfQorCitURVNUKFN0cmVhbWluZ0Fzc2Vy
dGlvbnNUZXN0LCBUcnV0aDIpIHsKKyAgRVhQRUNUX0ZBTFNFKGZhbHNlKSA8PCAidW5leHBlY3Rl
ZCBmYWlsdXJlIjsKKyAgQVNTRVJUX0ZBTFNFKGZhbHNlKSA8PCAidW5leHBlY3RlZCBmYWlsdXJl
IjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0ZBTFNFKHRydWUpIDw8ICJleHBl
Y3RlZCBmYWlsdXJlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIGZhaWx1
cmUiKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKHRydWUpIDw8ICJleHBl
Y3RlZCBmYWlsdXJlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIGZhaWx1cmUi
KTsKK30KKworI2lmZGVmIF9fQk9STEFORENfXworLy8gUmVzdG9yZXMgd2FybmluZ3MgYWZ0ZXIg
cHJldmlvdXMgIiNwcmFnbWEgb3B0aW9uIHB1c2giIHN1cHJlc3NlZCB0aGVtCisjIHByYWdtYSBv
cHRpb24gcG9wCisjZW5kaWYKKworVEVTVChTdHJlYW1pbmdBc3NlcnRpb25zVGVzdCwgSW50ZWdl
ckVxdWFscykgeworICBFWFBFQ1RfRVEoMSwgMSkgPDwgInVuZXhwZWN0ZWQgZmFpbHVyZSI7Cisg
IEFTU0VSVF9FUSgxLCAxKSA8PCAidW5leHBlY3RlZCBmYWlsdXJlIjsKKyAgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoRVhQRUNUX0VRKDEsIDIpIDw8ICJleHBlY3RlZCBmYWlsdXJlIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIGZhaWx1cmUiKTsKKyAgRVhQRUNUX0ZBVEFM
X0ZBSUxVUkUoQVNTRVJUX0VRKDEsIDIpIDw8ICJleHBlY3RlZCBmYWlsdXJlIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgImV4cGVjdGVkIGZhaWx1cmUiKTsKK30KKworVEVTVChTdHJlYW1pbmdB
c3NlcnRpb25zVGVzdCwgSW50ZWdlckxlc3NUaGFuKSB7CisgIEVYUEVDVF9MVCgxLCAyKSA8PCAi
dW5leHBlY3RlZCBmYWlsdXJlIjsKKyAgQVNTRVJUX0xUKDEsIDIpIDw8ICJ1bmV4cGVjdGVkIGZh
aWx1cmUiOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfTFQoMiwgMSkgPDwgImV4
cGVjdGVkIGZhaWx1cmUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgZmFp
bHVyZSIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfTFQoMiwgMSkgPDwgImV4cGVj
dGVkIGZhaWx1cmUiLAorICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgZmFpbHVyZSIp
OworfQorCitURVNUKFN0cmVhbWluZ0Fzc2VydGlvbnNUZXN0LCBTdHJpbmdzRXF1YWwpIHsKKyAg
RVhQRUNUX1NUUkVRKCJmb28iLCAiZm9vIikgPDwgInVuZXhwZWN0ZWQgZmFpbHVyZSI7CisgIEFT
U0VSVF9TVFJFUSgiZm9vIiwgImZvbyIpIDw8ICJ1bmV4cGVjdGVkIGZhaWx1cmUiOworICBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfU1RSRVEoImZvbyIsICJiYXIiKSA8PCAiZXhwZWN0
ZWQgZmFpbHVyZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBmYWlsdXJl
Iik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9TVFJFUSgiZm9vIiwgImJhciIpIDw8
ICJleHBlY3RlZCBmYWlsdXJlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIGZh
aWx1cmUiKTsKK30KKworVEVTVChTdHJlYW1pbmdBc3NlcnRpb25zVGVzdCwgU3RyaW5nc05vdEVx
dWFsKSB7CisgIEVYUEVDVF9TVFJORSgiZm9vIiwgImJhciIpIDw8ICJ1bmV4cGVjdGVkIGZhaWx1
cmUiOworICBBU1NFUlRfU1RSTkUoImZvbyIsICJiYXIiKSA8PCAidW5leHBlY3RlZCBmYWlsdXJl
IjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1NUUk5FKCJmb28iLCAiZm9vIikg
PDwgImV4cGVjdGVkIGZhaWx1cmUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0
ZWQgZmFpbHVyZSIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfU1RSTkUoImZvbyIs
ICJmb28iKSA8PCAiZXhwZWN0ZWQgZmFpbHVyZSIsCisgICAgICAgICAgICAgICAgICAgICAgICJl
eHBlY3RlZCBmYWlsdXJlIik7Cit9CisKK1RFU1QoU3RyZWFtaW5nQXNzZXJ0aW9uc1Rlc3QsIFN0
cmluZ3NFcXVhbElnbm9yaW5nQ2FzZSkgeworICBFWFBFQ1RfU1RSQ0FTRUVRKCJmb28iLCAiRk9P
IikgPDwgInVuZXhwZWN0ZWQgZmFpbHVyZSI7CisgIEFTU0VSVF9TVFJDQVNFRVEoImZvbyIsICJG
T08iKSA8PCAidW5leHBlY3RlZCBmYWlsdXJlIjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
RVhQRUNUX1NUUkNBU0VFUSgiZm9vIiwgImJhciIpIDw8ICJleHBlY3RlZCBmYWlsdXJlIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIGZhaWx1cmUiKTsKKyAgRVhQRUNUX0ZB
VEFMX0ZBSUxVUkUoQVNTRVJUX1NUUkNBU0VFUSgiZm9vIiwgImJhciIpIDw8ICJleHBlY3RlZCBm
YWlsdXJlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIGZhaWx1cmUiKTsKK30K
KworVEVTVChTdHJlYW1pbmdBc3NlcnRpb25zVGVzdCwgU3RyaW5nTm90RXF1YWxJZ25vcmluZ0Nh
c2UpIHsKKyAgRVhQRUNUX1NUUkNBU0VORSgiZm9vIiwgImJhciIpIDw8ICJ1bmV4cGVjdGVkIGZh
aWx1cmUiOworICBBU1NFUlRfU1RSQ0FTRU5FKCJmb28iLCAiYmFyIikgPDwgInVuZXhwZWN0ZWQg
ZmFpbHVyZSI7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9TVFJDQVNFTkUoImZv
byIsICJGT08iKSA8PCAiZXhwZWN0ZWQgZmFpbHVyZSIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICJleHBlY3RlZCBmYWlsdXJlIik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9T
VFJDQVNFTkUoImJhciIsICJCQVIiKSA8PCAiZXhwZWN0ZWQgZmFpbHVyZSIsCisgICAgICAgICAg
ICAgICAgICAgICAgICJleHBlY3RlZCBmYWlsdXJlIik7Cit9CisKK1RFU1QoU3RyZWFtaW5nQXNz
ZXJ0aW9uc1Rlc3QsIEZsb2F0aW5nUG9pbnRFcXVhbHMpIHsKKyAgRVhQRUNUX0ZMT0FUX0VRKDEu
MCwgMS4wKSA8PCAidW5leHBlY3RlZCBmYWlsdXJlIjsKKyAgQVNTRVJUX0ZMT0FUX0VRKDEuMCwg
MS4wKSA8PCAidW5leHBlY3RlZCBmYWlsdXJlIjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
RVhQRUNUX0ZMT0FUX0VRKDAuMCwgMS4wKSA8PCAiZXhwZWN0ZWQgZmFpbHVyZSIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBmYWlsdXJlIik7CisgIEVYUEVDVF9GQVRBTF9G
QUlMVVJFKEFTU0VSVF9GTE9BVF9FUSgwLjAsIDEuMCkgPDwgImV4cGVjdGVkIGZhaWx1cmUiLAor
ICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgZmFpbHVyZSIpOworfQorCisjaWYgR1RF
U1RfSEFTX0VYQ0VQVElPTlMKKworVEVTVChTdHJlYW1pbmdBc3NlcnRpb25zVGVzdCwgVGhyb3cp
IHsKKyAgRVhQRUNUX1RIUk9XKFRocm93QW5JbnRlZ2VyKCksIGludCkgPDwgInVuZXhwZWN0ZWQg
ZmFpbHVyZSI7CisgIEFTU0VSVF9USFJPVyhUaHJvd0FuSW50ZWdlcigpLCBpbnQpIDw8ICJ1bmV4
cGVjdGVkIGZhaWx1cmUiOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfVEhST1co
VGhyb3dBbkludGVnZXIoKSwgYm9vbCkgPDwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImV4
cGVjdGVkIGZhaWx1cmUiLCAiZXhwZWN0ZWQgZmFpbHVyZSIpOworICBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRShBU1NFUlRfVEhST1coVGhyb3dBbkludGVnZXIoKSwgYm9vbCkgPDwKKyAgICAgICAgICAg
ICAgICAgICAgICAgImV4cGVjdGVkIGZhaWx1cmUiLCAiZXhwZWN0ZWQgZmFpbHVyZSIpOworfQor
CitURVNUKFN0cmVhbWluZ0Fzc2VydGlvbnNUZXN0LCBOb1Rocm93KSB7CisgIEVYUEVDVF9OT19U
SFJPVyhUaHJvd05vdGhpbmcoKSkgPDwgInVuZXhwZWN0ZWQgZmFpbHVyZSI7CisgIEFTU0VSVF9O
T19USFJPVyhUaHJvd05vdGhpbmcoKSkgPDwgInVuZXhwZWN0ZWQgZmFpbHVyZSI7CisgIEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9OT19USFJPVyhUaHJvd0FuSW50ZWdlcigpKSA8PAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgZmFpbHVyZSIsICJleHBlY3RlZCBm
YWlsdXJlIik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9OT19USFJPVyhUaHJvd0Fu
SW50ZWdlcigpKSA8PAorICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgZmFpbHVyZSIs
ICJleHBlY3RlZCBmYWlsdXJlIik7Cit9CisKK1RFU1QoU3RyZWFtaW5nQXNzZXJ0aW9uc1Rlc3Qs
IEFueVRocm93KSB7CisgIEVYUEVDVF9BTllfVEhST1coVGhyb3dBbkludGVnZXIoKSkgPDwgInVu
ZXhwZWN0ZWQgZmFpbHVyZSI7CisgIEFTU0VSVF9BTllfVEhST1coVGhyb3dBbkludGVnZXIoKSkg
PDwgInVuZXhwZWN0ZWQgZmFpbHVyZSI7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVD
VF9BTllfVEhST1coVGhyb3dOb3RoaW5nKCkpIDw8CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICJleHBlY3RlZCBmYWlsdXJlIiwgImV4cGVjdGVkIGZhaWx1cmUiKTsKKyAgRVhQRUNUX0ZBVEFM
X0ZBSUxVUkUoQVNTRVJUX0FOWV9USFJPVyhUaHJvd05vdGhpbmcoKSkgPDwKKyAgICAgICAgICAg
ICAgICAgICAgICAgImV4cGVjdGVkIGZhaWx1cmUiLCAiZXhwZWN0ZWQgZmFpbHVyZSIpOworfQor
CisjZW5kaWYgIC8vIEdURVNUX0hBU19FWENFUFRJT05TCisKKy8vIFRlc3RzIHRoYXQgR29vZ2xl
IFRlc3QgY29ycmVjdGx5IGRlY2lkZXMgd2hldGhlciB0byB1c2UgY29sb3JzIGluIHRoZSBvdXRw
dXQuCisKK1RFU1QoQ29sb3JlZE91dHB1dFRlc3QsIFVzZXNDb2xvcnNXaGVuR1Rlc3RDb2xvckZs
YWdJc1llcykgeworICBHVEVTVF9GTEFHKGNvbG9yKSA9ICJ5ZXMiOworCisgIFNldEVudigiVEVS
TSIsICJ4dGVybSIpOyAgLy8gVEVSTSBzdXBwb3J0cyBjb2xvcnMuCisgIEVYUEVDVF9UUlVFKFNo
b3VsZFVzZUNvbG9yKHRydWUpKTsgIC8vIFN0ZG91dCBpcyBhIFRUWS4KKyAgRVhQRUNUX1RSVUUo
U2hvdWxkVXNlQ29sb3IoZmFsc2UpKTsgIC8vIFN0ZG91dCBpcyBub3QgYSBUVFkuCisKKyAgU2V0
RW52KCJURVJNIiwgImR1bWIiKTsgIC8vIFRFUk0gZG9lc24ndCBzdXBwb3J0IGNvbG9ycy4KKyAg
RVhQRUNUX1RSVUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlzIGEgVFRZLgor
ICBFWFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcihmYWxzZSkpOyAgLy8gU3Rkb3V0IGlzIG5vdCBh
IFRUWS4KK30KKworVEVTVChDb2xvcmVkT3V0cHV0VGVzdCwgVXNlc0NvbG9yc1doZW5HVGVzdENv
bG9yRmxhZ0lzQWxpYXNPZlllcykgeworICBTZXRFbnYoIlRFUk0iLCAiZHVtYiIpOyAgLy8gVEVS
TSBkb2Vzbid0IHN1cHBvcnQgY29sb3JzLgorCisgIEdURVNUX0ZMQUcoY29sb3IpID0gIlRydWUi
OworICBFWFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcihmYWxzZSkpOyAgLy8gU3Rkb3V0IGlzIG5v
dCBhIFRUWS4KKworICBHVEVTVF9GTEFHKGNvbG9yKSA9ICJ0IjsKKyAgRVhQRUNUX1RSVUUoU2hv
dWxkVXNlQ29sb3IoZmFsc2UpKTsgIC8vIFN0ZG91dCBpcyBub3QgYSBUVFkuCisKKyAgR1RFU1Rf
RkxBRyhjb2xvcikgPSAiMSI7CisgIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKGZhbHNlKSk7
ICAvLyBTdGRvdXQgaXMgbm90IGEgVFRZLgorfQorCitURVNUKENvbG9yZWRPdXRwdXRUZXN0LCBV
c2VzTm9Db2xvcldoZW5HVGVzdENvbG9yRmxhZ0lzTm8pIHsKKyAgR1RFU1RfRkxBRyhjb2xvcikg
PSAibm8iOworCisgIFNldEVudigiVEVSTSIsICJ4dGVybSIpOyAgLy8gVEVSTSBzdXBwb3J0cyBj
b2xvcnMuCisgIEVYUEVDVF9GQUxTRShTaG91bGRVc2VDb2xvcih0cnVlKSk7ICAvLyBTdGRvdXQg
aXMgYSBUVFkuCisgIEVYUEVDVF9GQUxTRShTaG91bGRVc2VDb2xvcihmYWxzZSkpOyAgLy8gU3Rk
b3V0IGlzIG5vdCBhIFRUWS4KKworICBTZXRFbnYoIlRFUk0iLCAiZHVtYiIpOyAgLy8gVEVSTSBk
b2Vzbid0IHN1cHBvcnQgY29sb3JzLgorICBFWFBFQ1RfRkFMU0UoU2hvdWxkVXNlQ29sb3IodHJ1
ZSkpOyAgLy8gU3Rkb3V0IGlzIGEgVFRZLgorICBFWFBFQ1RfRkFMU0UoU2hvdWxkVXNlQ29sb3Io
ZmFsc2UpKTsgIC8vIFN0ZG91dCBpcyBub3QgYSBUVFkuCit9CisKK1RFU1QoQ29sb3JlZE91dHB1
dFRlc3QsIFVzZXNOb0NvbG9yV2hlbkdUZXN0Q29sb3JGbGFnSXNJbnZhbGlkKSB7CisgIFNldEVu
digiVEVSTSIsICJ4dGVybSIpOyAgLy8gVEVSTSBzdXBwb3J0cyBjb2xvcnMuCisKKyAgR1RFU1Rf
RkxBRyhjb2xvcikgPSAiRiI7CisgIEVYUEVDVF9GQUxTRShTaG91bGRVc2VDb2xvcih0cnVlKSk7
ICAvLyBTdGRvdXQgaXMgYSBUVFkuCisKKyAgR1RFU1RfRkxBRyhjb2xvcikgPSAiMCI7CisgIEVY
UEVDVF9GQUxTRShTaG91bGRVc2VDb2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCisK
KyAgR1RFU1RfRkxBRyhjb2xvcikgPSAidW5rbm93biI7CisgIEVYUEVDVF9GQUxTRShTaG91bGRV
c2VDb2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCit9CisKK1RFU1QoQ29sb3JlZE91
dHB1dFRlc3QsIFVzZXNDb2xvcnNXaGVuU3Rkb3V0SXNUdHkpIHsKKyAgR1RFU1RfRkxBRyhjb2xv
cikgPSAiYXV0byI7CisKKyAgU2V0RW52KCJURVJNIiwgInh0ZXJtIik7ICAvLyBURVJNIHN1cHBv
cnRzIGNvbG9ycy4KKyAgRVhQRUNUX0ZBTFNFKFNob3VsZFVzZUNvbG9yKGZhbHNlKSk7ICAvLyBT
dGRvdXQgaXMgbm90IGEgVFRZLgorICBFWFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcih0cnVlKSk7
ICAgIC8vIFN0ZG91dCBpcyBhIFRUWS4KK30KKworVEVTVChDb2xvcmVkT3V0cHV0VGVzdCwgVXNl
c0NvbG9yc1doZW5UZXJtU3VwcG9ydHNDb2xvcnMpIHsKKyAgR1RFU1RfRkxBRyhjb2xvcikgPSAi
YXV0byI7CisKKyNpZiBHVEVTVF9PU19XSU5ET1dTCisgIC8vIE9uIFdpbmRvd3MsIHdlIGlnbm9y
ZSB0aGUgVEVSTSB2YXJpYWJsZSBhcyBpdCdzIHVzdWFsbHkgbm90IHNldC4KKworICBTZXRFbnYo
IlRFUk0iLCAiZHVtYiIpOworICBFWFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcih0cnVlKSk7ICAv
LyBTdGRvdXQgaXMgYSBUVFkuCisKKyAgU2V0RW52KCJURVJNIiwgIiIpOworICBFWFBFQ1RfVFJV
RShTaG91bGRVc2VDb2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCisKKyAgU2V0RW52
KCJURVJNIiwgInh0ZXJtIik7CisgIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKHRydWUpKTsg
IC8vIFN0ZG91dCBpcyBhIFRUWS4KKyNlbHNlCisgIC8vIE9uIG5vbi1XaW5kb3dzIHBsYXRmb3Jt
cywgd2UgcmVseSBvbiBURVJNIHRvIGRldGVybWluZSBpZiB0aGUKKyAgLy8gdGVybWluYWwgc3Vw
cG9ydHMgY29sb3JzLgorCisgIFNldEVudigiVEVSTSIsICJkdW1iIik7ICAvLyBURVJNIGRvZXNu
J3Qgc3VwcG9ydCBjb2xvcnMuCisgIEVYUEVDVF9GQUxTRShTaG91bGRVc2VDb2xvcih0cnVlKSk7
ICAvLyBTdGRvdXQgaXMgYSBUVFkuCisKKyAgU2V0RW52KCJURVJNIiwgImVtYWNzIik7ICAvLyBU
RVJNIGRvZXNuJ3Qgc3VwcG9ydCBjb2xvcnMuCisgIEVYUEVDVF9GQUxTRShTaG91bGRVc2VDb2xv
cih0cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCisKKyAgU2V0RW52KCJURVJNIiwgInZ0MTAw
Iik7ICAvLyBURVJNIGRvZXNuJ3Qgc3VwcG9ydCBjb2xvcnMuCisgIEVYUEVDVF9GQUxTRShTaG91
bGRVc2VDb2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCisKKyAgU2V0RW52KCJURVJN
IiwgInh0ZXJtLW1vbm8iKTsgIC8vIFRFUk0gZG9lc24ndCBzdXBwb3J0IGNvbG9ycy4KKyAgRVhQ
RUNUX0ZBTFNFKFNob3VsZFVzZUNvbG9yKHRydWUpKTsgIC8vIFN0ZG91dCBpcyBhIFRUWS4KKwor
ICBTZXRFbnYoIlRFUk0iLCAieHRlcm0iKTsgIC8vIFRFUk0gc3VwcG9ydHMgY29sb3JzLgorICBF
WFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCisK
KyAgU2V0RW52KCJURVJNIiwgInh0ZXJtLWNvbG9yIik7ICAvLyBURVJNIHN1cHBvcnRzIGNvbG9y
cy4KKyAgRVhQRUNUX1RSVUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlzIGEg
VFRZLgorCisgIFNldEVudigiVEVSTSIsICJ4dGVybS0yNTZjb2xvciIpOyAgLy8gVEVSTSBzdXBw
b3J0cyBjb2xvcnMuCisgIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKHRydWUpKTsgIC8vIFN0
ZG91dCBpcyBhIFRUWS4KKworICBTZXRFbnYoIlRFUk0iLCAic2NyZWVuIik7ICAvLyBURVJNIHN1
cHBvcnRzIGNvbG9ycy4KKyAgRVhQRUNUX1RSVUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8g
U3Rkb3V0IGlzIGEgVFRZLgorCisgIFNldEVudigiVEVSTSIsICJzY3JlZW4tMjU2Y29sb3IiKTsg
IC8vIFRFUk0gc3VwcG9ydHMgY29sb3JzLgorICBFWFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcih0
cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCisKKyAgU2V0RW52KCJURVJNIiwgInRtdXgiKTsg
IC8vIFRFUk0gc3VwcG9ydHMgY29sb3JzLgorICBFWFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcih0
cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCisKKyAgU2V0RW52KCJURVJNIiwgInRtdXgtMjU2
Y29sb3IiKTsgIC8vIFRFUk0gc3VwcG9ydHMgY29sb3JzLgorICBFWFBFQ1RfVFJVRShTaG91bGRV
c2VDb2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCisKKyAgU2V0RW52KCJURVJNIiwg
InJ4dnQtdW5pY29kZSIpOyAgLy8gVEVSTSBzdXBwb3J0cyBjb2xvcnMuCisgIEVYUEVDVF9UUlVF
KFNob3VsZFVzZUNvbG9yKHRydWUpKTsgIC8vIFN0ZG91dCBpcyBhIFRUWS4KKworICBTZXRFbnYo
IlRFUk0iLCAicnh2dC11bmljb2RlLTI1NmNvbG9yIik7ICAvLyBURVJNIHN1cHBvcnRzIGNvbG9y
cy4KKyAgRVhQRUNUX1RSVUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlzIGEg
VFRZLgorCisgIFNldEVudigiVEVSTSIsICJsaW51eCIpOyAgLy8gVEVSTSBzdXBwb3J0cyBjb2xv
cnMuCisgIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKHRydWUpKTsgIC8vIFN0ZG91dCBpcyBh
IFRUWS4KKworICBTZXRFbnYoIlRFUk0iLCAiY3lnd2luIik7ICAvLyBURVJNIHN1cHBvcnRzIGNv
bG9ycy4KKyAgRVhQRUNUX1RSVUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlz
IGEgVFRZLgorI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCit9CisKKy8vIFZlcmlmaWVzIHRo
YXQgU3RhdGljQXNzZXJ0VHlwZUVxIHdvcmtzIGluIGEgbmFtZXNwYWNlIHNjb3BlLgorCitzdGF0
aWMgYm9vbCBkdW1teTEgR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8gPSBTdGF0aWNBc3NlcnRUeXBl
RXE8Ym9vbCwgYm9vbD4oKTsKK3N0YXRpYyBib29sIGR1bW15MiBHVEVTVF9BVFRSSUJVVEVfVU5V
U0VEXyA9CisgICAgU3RhdGljQXNzZXJ0VHlwZUVxPGNvbnN0IGludCwgY29uc3QgaW50PigpOwor
CisvLyBWZXJpZmllcyB0aGF0IFN0YXRpY0Fzc2VydFR5cGVFcSB3b3JrcyBpbiBhIGNsYXNzLgor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFN0YXRpY0Fzc2VydFR5cGVFcVRlc3RIZWxw
ZXIgeworIHB1YmxpYzoKKyAgU3RhdGljQXNzZXJ0VHlwZUVxVGVzdEhlbHBlcigpIHsgU3RhdGlj
QXNzZXJ0VHlwZUVxPGJvb2wsIFQ+KCk7IH0KK307CisKK1RFU1QoU3RhdGljQXNzZXJ0VHlwZUVx
VGVzdCwgV29ya3NJbkNsYXNzKSB7CisgIFN0YXRpY0Fzc2VydFR5cGVFcVRlc3RIZWxwZXI8Ym9v
bD4oKTsKK30KKworLy8gVmVyaWZpZXMgdGhhdCBTdGF0aWNBc3NlcnRUeXBlRXEgd29ya3MgaW5z
aWRlIGEgZnVuY3Rpb24uCisKK3R5cGVkZWYgaW50IEludEFsaWFzOworCitURVNUKFN0YXRpY0Fz
c2VydFR5cGVFcVRlc3QsIENvbXBpbGVzRm9yRXF1YWxUeXBlcykgeworICBTdGF0aWNBc3NlcnRU
eXBlRXE8aW50LCBJbnRBbGlhcz4oKTsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPGludCosIEludEFs
aWFzKj4oKTsKK30KKworVEVTVChHZXRDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wVGVzdCwg
UmV0dXJuc1RoZVN0YWNrVHJhY2UpIHsKKyAgdGVzdGluZzo6VW5pdFRlc3QqIGNvbnN0IHVuaXRf
dGVzdCA9IHRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpOworCisgIC8vIFdlIGRvbid0
IGhhdmUgYSBzdGFjayB3YWxrZXIgaW4gR29vZ2xlIFRlc3QgeWV0LgorICBFWFBFQ1RfU1RSRVEo
IiIsIEdldEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AodW5pdF90ZXN0LCAwKS5jX3N0cigp
KTsKKyAgRVhQRUNUX1NUUkVRKCIiLCBHZXRDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKHVu
aXRfdGVzdCwgMSkuY19zdHIoKSk7Cit9CisKK1RFU1QoSGFzTm9uZmF0YWxGYWlsdXJlVGVzdCwg
UmV0dXJuc0ZhbHNlV2hlblRoZXJlSXNOb0ZhaWx1cmUpIHsKKyAgRVhQRUNUX0ZBTFNFKEhhc05v
bmZhdGFsRmFpbHVyZSgpKTsKK30KKworc3RhdGljIHZvaWQgRmFpbEZhdGFsbHkoKSB7IEZBSUwo
KTsgfQorCitURVNUKEhhc05vbmZhdGFsRmFpbHVyZVRlc3QsIFJldHVybnNGYWxzZVdoZW5UaGVy
ZUlzT25seUZhdGFsRmFpbHVyZSkgeworICBGYWlsRmF0YWxseSgpOworICBjb25zdCBib29sIGhh
c19ub25mYXRhbF9mYWlsdXJlID0gSGFzTm9uZmF0YWxGYWlsdXJlKCk7CisgIENsZWFyQ3VycmVu
dFRlc3RQYXJ0UmVzdWx0cygpOworICBFWFBFQ1RfRkFMU0UoaGFzX25vbmZhdGFsX2ZhaWx1cmUp
OworfQorCitURVNUKEhhc05vbmZhdGFsRmFpbHVyZVRlc3QsIFJldHVybnNUcnVlV2hlblRoZXJl
SXNOb25mYXRhbEZhaWx1cmUpIHsKKyAgQUREX0ZBSUxVUkUoKTsKKyAgY29uc3QgYm9vbCBoYXNf
bm9uZmF0YWxfZmFpbHVyZSA9IEhhc05vbmZhdGFsRmFpbHVyZSgpOworICBDbGVhckN1cnJlbnRU
ZXN0UGFydFJlc3VsdHMoKTsKKyAgRVhQRUNUX1RSVUUoaGFzX25vbmZhdGFsX2ZhaWx1cmUpOwor
fQorCitURVNUKEhhc05vbmZhdGFsRmFpbHVyZVRlc3QsIFJldHVybnNUcnVlV2hlblRoZXJlQXJl
RmF0YWxBbmROb25mYXRhbEZhaWx1cmVzKSB7CisgIEZhaWxGYXRhbGx5KCk7CisgIEFERF9GQUlM
VVJFKCk7CisgIGNvbnN0IGJvb2wgaGFzX25vbmZhdGFsX2ZhaWx1cmUgPSBIYXNOb25mYXRhbEZh
aWx1cmUoKTsKKyAgQ2xlYXJDdXJyZW50VGVzdFBhcnRSZXN1bHRzKCk7CisgIEVYUEVDVF9UUlVF
KGhhc19ub25mYXRhbF9mYWlsdXJlKTsKK30KKworLy8gQSB3cmFwcGVyIGZvciBjYWxsaW5nIEhh
c05vbmZhdGFsRmFpbHVyZSBvdXRzaWRlIG9mIGEgdGVzdCBib2R5Lgorc3RhdGljIGJvb2wgSGFz
Tm9uZmF0YWxGYWlsdXJlSGVscGVyKCkgeworICByZXR1cm4gdGVzdGluZzo6VGVzdDo6SGFzTm9u
ZmF0YWxGYWlsdXJlKCk7Cit9CisKK1RFU1QoSGFzTm9uZmF0YWxGYWlsdXJlVGVzdCwgV29ya3NP
dXRzaWRlT2ZUZXN0Qm9keSkgeworICBFWFBFQ1RfRkFMU0UoSGFzTm9uZmF0YWxGYWlsdXJlSGVs
cGVyKCkpOworfQorCitURVNUKEhhc05vbmZhdGFsRmFpbHVyZVRlc3QsIFdvcmtzT3V0c2lkZU9m
VGVzdEJvZHkyKSB7CisgIEFERF9GQUlMVVJFKCk7CisgIGNvbnN0IGJvb2wgaGFzX25vbmZhdGFs
X2ZhaWx1cmUgPSBIYXNOb25mYXRhbEZhaWx1cmVIZWxwZXIoKTsKKyAgQ2xlYXJDdXJyZW50VGVz
dFBhcnRSZXN1bHRzKCk7CisgIEVYUEVDVF9UUlVFKGhhc19ub25mYXRhbF9mYWlsdXJlKTsKK30K
KworVEVTVChIYXNGYWlsdXJlVGVzdCwgUmV0dXJuc0ZhbHNlV2hlblRoZXJlSXNOb0ZhaWx1cmUp
IHsKKyAgRVhQRUNUX0ZBTFNFKEhhc0ZhaWx1cmUoKSk7Cit9CisKK1RFU1QoSGFzRmFpbHVyZVRl
c3QsIFJldHVybnNUcnVlV2hlblRoZXJlSXNGYXRhbEZhaWx1cmUpIHsKKyAgRmFpbEZhdGFsbHko
KTsKKyAgY29uc3QgYm9vbCBoYXNfZmFpbHVyZSA9IEhhc0ZhaWx1cmUoKTsKKyAgQ2xlYXJDdXJy
ZW50VGVzdFBhcnRSZXN1bHRzKCk7CisgIEVYUEVDVF9UUlVFKGhhc19mYWlsdXJlKTsKK30KKwor
VEVTVChIYXNGYWlsdXJlVGVzdCwgUmV0dXJuc1RydWVXaGVuVGhlcmVJc05vbmZhdGFsRmFpbHVy
ZSkgeworICBBRERfRkFJTFVSRSgpOworICBjb25zdCBib29sIGhhc19mYWlsdXJlID0gSGFzRmFp
bHVyZSgpOworICBDbGVhckN1cnJlbnRUZXN0UGFydFJlc3VsdHMoKTsKKyAgRVhQRUNUX1RSVUUo
aGFzX2ZhaWx1cmUpOworfQorCitURVNUKEhhc0ZhaWx1cmVUZXN0LCBSZXR1cm5zVHJ1ZVdoZW5U
aGVyZUFyZUZhdGFsQW5kTm9uZmF0YWxGYWlsdXJlcykgeworICBGYWlsRmF0YWxseSgpOworICBB
RERfRkFJTFVSRSgpOworICBjb25zdCBib29sIGhhc19mYWlsdXJlID0gSGFzRmFpbHVyZSgpOwor
ICBDbGVhckN1cnJlbnRUZXN0UGFydFJlc3VsdHMoKTsKKyAgRVhQRUNUX1RSVUUoaGFzX2ZhaWx1
cmUpOworfQorCisvLyBBIHdyYXBwZXIgZm9yIGNhbGxpbmcgSGFzRmFpbHVyZSBvdXRzaWRlIG9m
IGEgdGVzdCBib2R5Lgorc3RhdGljIGJvb2wgSGFzRmFpbHVyZUhlbHBlcigpIHsgcmV0dXJuIHRl
c3Rpbmc6OlRlc3Q6Okhhc0ZhaWx1cmUoKTsgfQorCitURVNUKEhhc0ZhaWx1cmVUZXN0LCBXb3Jr
c091dHNpZGVPZlRlc3RCb2R5KSB7CisgIEVYUEVDVF9GQUxTRShIYXNGYWlsdXJlSGVscGVyKCkp
OworfQorCitURVNUKEhhc0ZhaWx1cmVUZXN0LCBXb3Jrc091dHNpZGVPZlRlc3RCb2R5Mikgewor
ICBBRERfRkFJTFVSRSgpOworICBjb25zdCBib29sIGhhc19mYWlsdXJlID0gSGFzRmFpbHVyZUhl
bHBlcigpOworICBDbGVhckN1cnJlbnRUZXN0UGFydFJlc3VsdHMoKTsKKyAgRVhQRUNUX1RSVUUo
aGFzX2ZhaWx1cmUpOworfQorCitjbGFzcyBUZXN0TGlzdGVuZXIgOiBwdWJsaWMgRW1wdHlUZXN0
RXZlbnRMaXN0ZW5lciB7CisgcHVibGljOgorICBUZXN0TGlzdGVuZXIoKSA6IG9uX3N0YXJ0X2Nv
dW50ZXJfKE5VTEwpLCBpc19kZXN0cm95ZWRfKE5VTEwpIHt9CisgIFRlc3RMaXN0ZW5lcihpbnQq
IG9uX3N0YXJ0X2NvdW50ZXIsIGJvb2wqIGlzX2Rlc3Ryb3llZCkKKyAgICAgIDogb25fc3RhcnRf
Y291bnRlcl8ob25fc3RhcnRfY291bnRlciksCisgICAgICAgIGlzX2Rlc3Ryb3llZF8oaXNfZGVz
dHJveWVkKSB7fQorCisgIHZpcnR1YWwgflRlc3RMaXN0ZW5lcigpIHsKKyAgICBpZiAoaXNfZGVz
dHJveWVkXykKKyAgICAgICppc19kZXN0cm95ZWRfID0gdHJ1ZTsKKyAgfQorCisgcHJvdGVjdGVk
OgorICB2aXJ0dWFsIHZvaWQgT25UZXN0UHJvZ3JhbVN0YXJ0KGNvbnN0IFVuaXRUZXN0JiAvKnVu
aXRfdGVzdCovKSB7CisgICAgaWYgKG9uX3N0YXJ0X2NvdW50ZXJfICE9IE5VTEwpCisgICAgICAo
Km9uX3N0YXJ0X2NvdW50ZXJfKSsrOworICB9CisKKyBwcml2YXRlOgorICBpbnQqIG9uX3N0YXJ0
X2NvdW50ZXJfOworICBib29sKiBpc19kZXN0cm95ZWRfOworfTsKKworLy8gVGVzdHMgdGhlIGNv
bnN0cnVjdG9yLgorVEVTVChUZXN0RXZlbnRMaXN0ZW5lcnNUZXN0LCBDb25zdHJ1Y3Rpb25Xb3Jr
cykgeworICBUZXN0RXZlbnRMaXN0ZW5lcnMgbGlzdGVuZXJzOworCisgIEVYUEVDVF9UUlVFKFRl
c3RFdmVudExpc3RlbmVyc0FjY2Vzc29yOjpHZXRSZXBlYXRlcigmbGlzdGVuZXJzKSAhPSBOVUxM
KTsKKyAgRVhQRUNUX1RSVUUobGlzdGVuZXJzLmRlZmF1bHRfcmVzdWx0X3ByaW50ZXIoKSA9PSBO
VUxMKTsKKyAgRVhQRUNUX1RSVUUobGlzdGVuZXJzLmRlZmF1bHRfeG1sX2dlbmVyYXRvcigpID09
IE5VTEwpOworfQorCisvLyBUZXN0cyB0aGF0IHRoZSBUZXN0RXZlbnRMaXN0ZW5lcnMgZGVzdHJ1
Y3RvciBkZWxldGVzIGFsbCB0aGUgbGlzdGVuZXJzIGl0CisvLyBvd25zLgorVEVTVChUZXN0RXZl
bnRMaXN0ZW5lcnNUZXN0LCBEZXN0cnVjdGlvbldvcmtzKSB7CisgIGJvb2wgZGVmYXVsdF9yZXN1
bHRfcHJpbnRlcl9pc19kZXN0cm95ZWQgPSBmYWxzZTsKKyAgYm9vbCBkZWZhdWx0X3htbF9wcmlu
dGVyX2lzX2Rlc3Ryb3llZCA9IGZhbHNlOworICBib29sIGV4dHJhX2xpc3RlbmVyX2lzX2Rlc3Ry
b3llZCA9IGZhbHNlOworICBUZXN0TGlzdGVuZXIqIGRlZmF1bHRfcmVzdWx0X3ByaW50ZXIgPSBu
ZXcgVGVzdExpc3RlbmVyKAorICAgICAgTlVMTCwgJmRlZmF1bHRfcmVzdWx0X3ByaW50ZXJfaXNf
ZGVzdHJveWVkKTsKKyAgVGVzdExpc3RlbmVyKiBkZWZhdWx0X3htbF9wcmludGVyID0gbmV3IFRl
c3RMaXN0ZW5lcigKKyAgICAgIE5VTEwsICZkZWZhdWx0X3htbF9wcmludGVyX2lzX2Rlc3Ryb3ll
ZCk7CisgIFRlc3RMaXN0ZW5lciogZXh0cmFfbGlzdGVuZXIgPSBuZXcgVGVzdExpc3RlbmVyKAor
ICAgICAgTlVMTCwgJmV4dHJhX2xpc3RlbmVyX2lzX2Rlc3Ryb3llZCk7CisKKyAgeworICAgIFRl
c3RFdmVudExpc3RlbmVycyBsaXN0ZW5lcnM7CisgICAgVGVzdEV2ZW50TGlzdGVuZXJzQWNjZXNz
b3I6OlNldERlZmF1bHRSZXN1bHRQcmludGVyKCZsaXN0ZW5lcnMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfcmVzdWx0X3By
aW50ZXIpOworICAgIFRlc3RFdmVudExpc3RlbmVyc0FjY2Vzc29yOjpTZXREZWZhdWx0WG1sR2Vu
ZXJhdG9yKCZsaXN0ZW5lcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGVmYXVsdF94bWxfcHJpbnRlcik7CisgICAgbGlzdGVuZXJzLkFw
cGVuZChleHRyYV9saXN0ZW5lcik7CisgIH0KKyAgRVhQRUNUX1RSVUUoZGVmYXVsdF9yZXN1bHRf
cHJpbnRlcl9pc19kZXN0cm95ZWQpOworICBFWFBFQ1RfVFJVRShkZWZhdWx0X3htbF9wcmludGVy
X2lzX2Rlc3Ryb3llZCk7CisgIEVYUEVDVF9UUlVFKGV4dHJhX2xpc3RlbmVyX2lzX2Rlc3Ryb3ll
ZCk7Cit9CisKKy8vIFRlc3RzIHRoYXQgYSBsaXN0ZW5lciBBcHBlbmQnZWQgdG8gYSBUZXN0RXZl
bnRMaXN0ZW5lcnMgbGlzdCBzdGFydHMKKy8vIHJlY2VpdmluZyBldmVudHMuCitURVNUKFRlc3RF
dmVudExpc3RlbmVyc1Rlc3QsIEFwcGVuZCkgeworICBpbnQgb25fc3RhcnRfY291bnRlciA9IDA7
CisgIGJvb2wgaXNfZGVzdHJveWVkID0gZmFsc2U7CisgIFRlc3RMaXN0ZW5lciogbGlzdGVuZXIg
PSBuZXcgVGVzdExpc3RlbmVyKCZvbl9zdGFydF9jb3VudGVyLCAmaXNfZGVzdHJveWVkKTsKKyAg
eworICAgIFRlc3RFdmVudExpc3RlbmVycyBsaXN0ZW5lcnM7CisgICAgbGlzdGVuZXJzLkFwcGVu
ZChsaXN0ZW5lcik7CisgICAgVGVzdEV2ZW50TGlzdGVuZXJzQWNjZXNzb3I6OkdldFJlcGVhdGVy
KCZsaXN0ZW5lcnMpLT5PblRlc3RQcm9ncmFtU3RhcnQoCisgICAgICAgICpVbml0VGVzdDo6R2V0
SW5zdGFuY2UoKSk7CisgICAgRVhQRUNUX0VRKDEsIG9uX3N0YXJ0X2NvdW50ZXIpOworICB9Cisg
IEVYUEVDVF9UUlVFKGlzX2Rlc3Ryb3llZCk7Cit9CisKKy8vIFRlc3RzIHRoYXQgbGlzdGVuZXJz
IHJlY2VpdmUgZXZlbnRzIGluIHRoZSBvcmRlciB0aGV5IHdlcmUgYXBwZW5kZWQgdG8KKy8vIHRo
ZSBsaXN0LCBleGNlcHQgZm9yICpFbmQgcmVxdWVzdHMsIHdoaWNoIG11c3QgYmUgcmVjZWl2ZWQg
aW4gdGhlIHJldmVyc2UKKy8vIG9yZGVyLgorY2xhc3MgU2VxdWVuY2VUZXN0aW5nTGlzdGVuZXIg
OiBwdWJsaWMgRW1wdHlUZXN0RXZlbnRMaXN0ZW5lciB7CisgcHVibGljOgorICBTZXF1ZW5jZVRl
c3RpbmdMaXN0ZW5lcihzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4qIHZlY3RvciwgY29uc3QgY2hh
ciogaWQpCisgICAgICA6IHZlY3Rvcl8odmVjdG9yKSwgaWRfKGlkKSB7fQorCisgcHJvdGVjdGVk
OgorICB2aXJ0dWFsIHZvaWQgT25UZXN0UHJvZ3JhbVN0YXJ0KGNvbnN0IFVuaXRUZXN0JiAvKnVu
aXRfdGVzdCovKSB7CisgICAgdmVjdG9yXy0+cHVzaF9iYWNrKEdldEV2ZW50RGVzY3JpcHRpb24o
Ik9uVGVzdFByb2dyYW1TdGFydCIpKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBPblRlc3RQcm9n
cmFtRW5kKGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovKSB7CisgICAgdmVjdG9yXy0+cHVz
aF9iYWNrKEdldEV2ZW50RGVzY3JpcHRpb24oIk9uVGVzdFByb2dyYW1FbmQiKSk7CisgIH0KKwor
ICB2aXJ0dWFsIHZvaWQgT25UZXN0SXRlcmF0aW9uU3RhcnQoY29uc3QgVW5pdFRlc3QmIC8qdW5p
dF90ZXN0Ki8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgLyppdGVy
YXRpb24qLykgeworICAgIHZlY3Rvcl8tPnB1c2hfYmFjayhHZXRFdmVudERlc2NyaXB0aW9uKCJP
blRlc3RJdGVyYXRpb25TdGFydCIpKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBPblRlc3RJdGVy
YXRpb25FbmQoY29uc3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IC8qaXRlcmF0aW9uKi8pIHsKKyAgICB2ZWN0b3JfLT5wdXNo
X2JhY2soR2V0RXZlbnREZXNjcmlwdGlvbigiT25UZXN0SXRlcmF0aW9uRW5kIikpOworICB9CisK
KyBwcml2YXRlOgorICBzdGQ6OnN0cmluZyBHZXRFdmVudERlc2NyaXB0aW9uKGNvbnN0IGNoYXIq
IG1ldGhvZCkgeworICAgIE1lc3NhZ2UgbWVzc2FnZTsKKyAgICBtZXNzYWdlIDw8IGlkXyA8PCAi
LiIgPDwgbWV0aG9kOworICAgIHJldHVybiBtZXNzYWdlLkdldFN0cmluZygpOworICB9CisKKyAg
c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KiB2ZWN0b3JfOworICBjb25zdCBjaGFyKiBjb25zdCBp
ZF87CisKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhTZXF1ZW5jZVRlc3RpbmdM
aXN0ZW5lcik7Cit9OworCitURVNUKEV2ZW50TGlzdGVuZXJUZXN0LCBBcHBlbmRLZWVwc09yZGVy
KSB7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB2ZWM7CisgIFRlc3RFdmVudExpc3RlbmVy
cyBsaXN0ZW5lcnM7CisgIGxpc3RlbmVycy5BcHBlbmQobmV3IFNlcXVlbmNlVGVzdGluZ0xpc3Rl
bmVyKCZ2ZWMsICIxc3QiKSk7CisgIGxpc3RlbmVycy5BcHBlbmQobmV3IFNlcXVlbmNlVGVzdGlu
Z0xpc3RlbmVyKCZ2ZWMsICIybmQiKSk7CisgIGxpc3RlbmVycy5BcHBlbmQobmV3IFNlcXVlbmNl
VGVzdGluZ0xpc3RlbmVyKCZ2ZWMsICIzcmQiKSk7CisKKyAgVGVzdEV2ZW50TGlzdGVuZXJzQWNj
ZXNzb3I6OkdldFJlcGVhdGVyKCZsaXN0ZW5lcnMpLT5PblRlc3RQcm9ncmFtU3RhcnQoCisgICAg
ICAqVW5pdFRlc3Q6OkdldEluc3RhbmNlKCkpOworICBBU1NFUlRfRVEoM1UsIHZlYy5zaXplKCkp
OworICBFWFBFQ1RfU1RSRVEoIjFzdC5PblRlc3RQcm9ncmFtU3RhcnQiLCB2ZWNbMF0uY19zdHIo
KSk7CisgIEVYUEVDVF9TVFJFUSgiMm5kLk9uVGVzdFByb2dyYW1TdGFydCIsIHZlY1sxXS5jX3N0
cigpKTsKKyAgRVhQRUNUX1NUUkVRKCIzcmQuT25UZXN0UHJvZ3JhbVN0YXJ0IiwgdmVjWzJdLmNf
c3RyKCkpOworCisgIHZlYy5jbGVhcigpOworICBUZXN0RXZlbnRMaXN0ZW5lcnNBY2Nlc3Nvcjo6
R2V0UmVwZWF0ZXIoJmxpc3RlbmVycyktPk9uVGVzdFByb2dyYW1FbmQoCisgICAgICAqVW5pdFRl
c3Q6OkdldEluc3RhbmNlKCkpOworICBBU1NFUlRfRVEoM1UsIHZlYy5zaXplKCkpOworICBFWFBF
Q1RfU1RSRVEoIjNyZC5PblRlc3RQcm9ncmFtRW5kIiwgdmVjWzBdLmNfc3RyKCkpOworICBFWFBF
Q1RfU1RSRVEoIjJuZC5PblRlc3RQcm9ncmFtRW5kIiwgdmVjWzFdLmNfc3RyKCkpOworICBFWFBF
Q1RfU1RSRVEoIjFzdC5PblRlc3RQcm9ncmFtRW5kIiwgdmVjWzJdLmNfc3RyKCkpOworCisgIHZl
Yy5jbGVhcigpOworICBUZXN0RXZlbnRMaXN0ZW5lcnNBY2Nlc3Nvcjo6R2V0UmVwZWF0ZXIoJmxp
c3RlbmVycyktPk9uVGVzdEl0ZXJhdGlvblN0YXJ0KAorICAgICAgKlVuaXRUZXN0OjpHZXRJbnN0
YW5jZSgpLCAwKTsKKyAgQVNTRVJUX0VRKDNVLCB2ZWMuc2l6ZSgpKTsKKyAgRVhQRUNUX1NUUkVR
KCIxc3QuT25UZXN0SXRlcmF0aW9uU3RhcnQiLCB2ZWNbMF0uY19zdHIoKSk7CisgIEVYUEVDVF9T
VFJFUSgiMm5kLk9uVGVzdEl0ZXJhdGlvblN0YXJ0IiwgdmVjWzFdLmNfc3RyKCkpOworICBFWFBF
Q1RfU1RSRVEoIjNyZC5PblRlc3RJdGVyYXRpb25TdGFydCIsIHZlY1syXS5jX3N0cigpKTsKKwor
ICB2ZWMuY2xlYXIoKTsKKyAgVGVzdEV2ZW50TGlzdGVuZXJzQWNjZXNzb3I6OkdldFJlcGVhdGVy
KCZsaXN0ZW5lcnMpLT5PblRlc3RJdGVyYXRpb25FbmQoCisgICAgICAqVW5pdFRlc3Q6OkdldElu
c3RhbmNlKCksIDApOworICBBU1NFUlRfRVEoM1UsIHZlYy5zaXplKCkpOworICBFWFBFQ1RfU1RS
RVEoIjNyZC5PblRlc3RJdGVyYXRpb25FbmQiLCB2ZWNbMF0uY19zdHIoKSk7CisgIEVYUEVDVF9T
VFJFUSgiMm5kLk9uVGVzdEl0ZXJhdGlvbkVuZCIsIHZlY1sxXS5jX3N0cigpKTsKKyAgRVhQRUNU
X1NUUkVRKCIxc3QuT25UZXN0SXRlcmF0aW9uRW5kIiwgdmVjWzJdLmNfc3RyKCkpOworfQorCisv
LyBUZXN0cyB0aGF0IGEgbGlzdGVuZXIgcmVtb3ZlZCBmcm9tIGEgVGVzdEV2ZW50TGlzdGVuZXJz
IGxpc3Qgc3RvcHMgcmVjZWl2aW5nCisvLyBldmVudHMgYW5kIGlzIG5vdCBkZWxldGVkIHdoZW4g
dGhlIGxpc3QgaXMgZGVzdHJveWVkLgorVEVTVChUZXN0RXZlbnRMaXN0ZW5lcnNUZXN0LCBSZWxl
YXNlKSB7CisgIGludCBvbl9zdGFydF9jb3VudGVyID0gMDsKKyAgYm9vbCBpc19kZXN0cm95ZWQg
PSBmYWxzZTsKKyAgLy8gQWx0aG91Z2ggQXBwZW5kIHBhc3NlcyB0aGUgb3duZXJzaGlwIG9mIHRo
aXMgb2JqZWN0IHRvIHRoZSBsaXN0LAorICAvLyB0aGUgZm9sbG93aW5nIGNhbGxzIHJlbGVhc2Ug
aXQsIGFuZCB3ZSBuZWVkIHRvIGRlbGV0ZSBpdCBiZWZvcmUgdGhlCisgIC8vIHRlc3QgZW5kcy4K
KyAgVGVzdExpc3RlbmVyKiBsaXN0ZW5lciA9IG5ldyBUZXN0TGlzdGVuZXIoJm9uX3N0YXJ0X2Nv
dW50ZXIsICZpc19kZXN0cm95ZWQpOworICB7CisgICAgVGVzdEV2ZW50TGlzdGVuZXJzIGxpc3Rl
bmVyczsKKyAgICBsaXN0ZW5lcnMuQXBwZW5kKGxpc3RlbmVyKTsKKyAgICBFWFBFQ1RfRVEobGlz
dGVuZXIsIGxpc3RlbmVycy5SZWxlYXNlKGxpc3RlbmVyKSk7CisgICAgVGVzdEV2ZW50TGlzdGVu
ZXJzQWNjZXNzb3I6OkdldFJlcGVhdGVyKCZsaXN0ZW5lcnMpLT5PblRlc3RQcm9ncmFtU3RhcnQo
CisgICAgICAgICpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKSk7CisgICAgRVhQRUNUX1RSVUUobGlz
dGVuZXJzLlJlbGVhc2UobGlzdGVuZXIpID09IE5VTEwpOworICB9CisgIEVYUEVDVF9FUSgwLCBv
bl9zdGFydF9jb3VudGVyKTsKKyAgRVhQRUNUX0ZBTFNFKGlzX2Rlc3Ryb3llZCk7CisgIGRlbGV0
ZSBsaXN0ZW5lcjsKK30KKworLy8gVGVzdHMgdGhhdCBubyBldmVudHMgYXJlIGZvcndhcmRlZCB3
aGVuIGV2ZW50IGZvcndhcmRpbmcgaXMgZGlzYWJsZWQuCitURVNUKEV2ZW50TGlzdGVuZXJUZXN0
LCBTdXBwcmVzc0V2ZW50Rm9yd2FyZGluZykgeworICBpbnQgb25fc3RhcnRfY291bnRlciA9IDA7
CisgIFRlc3RMaXN0ZW5lciogbGlzdGVuZXIgPSBuZXcgVGVzdExpc3RlbmVyKCZvbl9zdGFydF9j
b3VudGVyLCBOVUxMKTsKKworICBUZXN0RXZlbnRMaXN0ZW5lcnMgbGlzdGVuZXJzOworICBsaXN0
ZW5lcnMuQXBwZW5kKGxpc3RlbmVyKTsKKyAgQVNTRVJUX1RSVUUoVGVzdEV2ZW50TGlzdGVuZXJz
QWNjZXNzb3I6OkV2ZW50Rm9yd2FyZGluZ0VuYWJsZWQobGlzdGVuZXJzKSk7CisgIFRlc3RFdmVu
dExpc3RlbmVyc0FjY2Vzc29yOjpTdXBwcmVzc0V2ZW50Rm9yd2FyZGluZygmbGlzdGVuZXJzKTsK
KyAgQVNTRVJUX0ZBTFNFKFRlc3RFdmVudExpc3RlbmVyc0FjY2Vzc29yOjpFdmVudEZvcndhcmRp
bmdFbmFibGVkKGxpc3RlbmVycykpOworICBUZXN0RXZlbnRMaXN0ZW5lcnNBY2Nlc3Nvcjo6R2V0
UmVwZWF0ZXIoJmxpc3RlbmVycyktPk9uVGVzdFByb2dyYW1TdGFydCgKKyAgICAgICpVbml0VGVz
dDo6R2V0SW5zdGFuY2UoKSk7CisgIEVYUEVDVF9FUSgwLCBvbl9zdGFydF9jb3VudGVyKTsKK30K
KworLy8gVGVzdHMgdGhhdCBldmVudHMgZ2VuZXJhdGVkIGJ5IEdvb2dsZSBUZXN0IGFyZSBub3Qg
Zm9yd2FyZGVkIGluCisvLyBkZWF0aCB0ZXN0IHN1YnByb2Nlc3Nlcy4KK1RFU1QoRXZlbnRMaXN0
ZW5lckRlYXRoVGVzdCwgRXZlbnRzTm90Rm9yd2FyZGVkSW5EZWF0aFRlc3RTdWJwcmVjZXNzZXMp
IHsKKyAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCh7CisgICAgICBHVEVTVF9DSEVDS18oVGVz
dEV2ZW50TGlzdGVuZXJzQWNjZXNzb3I6OkV2ZW50Rm9yd2FyZGluZ0VuYWJsZWQoCisgICAgICAg
ICAgKkdldFVuaXRUZXN0SW1wbCgpLT5saXN0ZW5lcnMoKSkpIDw8ICJleHBlY3RlZCBmYWlsdXJl
Ijt9LAorICAgICAgImV4cGVjdGVkIGZhaWx1cmUiKTsKK30KKworLy8gVGVzdHMgdGhhdCBhIGxp
c3RlbmVyIGluc3RhbGxlZCB2aWEgU2V0RGVmYXVsdFJlc3VsdFByaW50ZXIoKSBzdGFydHMKKy8v
IHJlY2VpdmluZyBldmVudHMgYW5kIGlzIHJldHVybmVkIHZpYSBkZWZhdWx0X3Jlc3VsdF9wcmlu
dGVyKCkgYW5kIHRoYXQKKy8vIHRoZSBwcmV2aW91cyBkZWZhdWx0X3Jlc3VsdF9wcmludGVyIGlz
IHJlbW92ZWQgZnJvbSB0aGUgbGlzdCBhbmQgZGVsZXRlZC4KK1RFU1QoRXZlbnRMaXN0ZW5lclRl
c3QsIGRlZmF1bHRfcmVzdWx0X3ByaW50ZXIpIHsKKyAgaW50IG9uX3N0YXJ0X2NvdW50ZXIgPSAw
OworICBib29sIGlzX2Rlc3Ryb3llZCA9IGZhbHNlOworICBUZXN0TGlzdGVuZXIqIGxpc3RlbmVy
ID0gbmV3IFRlc3RMaXN0ZW5lcigmb25fc3RhcnRfY291bnRlciwgJmlzX2Rlc3Ryb3llZCk7CisK
KyAgVGVzdEV2ZW50TGlzdGVuZXJzIGxpc3RlbmVyczsKKyAgVGVzdEV2ZW50TGlzdGVuZXJzQWNj
ZXNzb3I6OlNldERlZmF1bHRSZXN1bHRQcmludGVyKCZsaXN0ZW5lcnMsIGxpc3RlbmVyKTsKKwor
ICBFWFBFQ1RfRVEobGlzdGVuZXIsIGxpc3RlbmVycy5kZWZhdWx0X3Jlc3VsdF9wcmludGVyKCkp
OworCisgIFRlc3RFdmVudExpc3RlbmVyc0FjY2Vzc29yOjpHZXRSZXBlYXRlcigmbGlzdGVuZXJz
KS0+T25UZXN0UHJvZ3JhbVN0YXJ0KAorICAgICAgKlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpKTsK
KworICBFWFBFQ1RfRVEoMSwgb25fc3RhcnRfY291bnRlcik7CisKKyAgLy8gUmVwbGFjaW5nIGRl
ZmF1bHRfcmVzdWx0X3ByaW50ZXIgd2l0aCBzb21ldGhpbmcgZWxzZSBzaG91bGQgcmVtb3ZlIGl0
CisgIC8vIGZyb20gdGhlIGxpc3QgYW5kIGRlc3Ryb3kgaXQuCisgIFRlc3RFdmVudExpc3RlbmVy
c0FjY2Vzc29yOjpTZXREZWZhdWx0UmVzdWx0UHJpbnRlcigmbGlzdGVuZXJzLCBOVUxMKTsKKwor
ICBFWFBFQ1RfVFJVRShsaXN0ZW5lcnMuZGVmYXVsdF9yZXN1bHRfcHJpbnRlcigpID09IE5VTEwp
OworICBFWFBFQ1RfVFJVRShpc19kZXN0cm95ZWQpOworCisgIC8vIEFmdGVyIGJyb2FkY2FzdGlu
ZyBhbiBldmVudCB0aGUgY291bnRlciBpcyBzdGlsbCB0aGUgc2FtZSwgaW5kaWNhdGluZworICAv
LyB0aGUgbGlzdGVuZXIgaXMgbm90IGluIHRoZSBsaXN0IGFueW1vcmUuCisgIFRlc3RFdmVudExp
c3RlbmVyc0FjY2Vzc29yOjpHZXRSZXBlYXRlcigmbGlzdGVuZXJzKS0+T25UZXN0UHJvZ3JhbVN0
YXJ0KAorICAgICAgKlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpKTsKKyAgRVhQRUNUX0VRKDEsIG9u
X3N0YXJ0X2NvdW50ZXIpOworfQorCisvLyBUZXN0cyB0aGF0IHRoZSBkZWZhdWx0X3Jlc3VsdF9w
cmludGVyIGxpc3RlbmVyIHN0b3BzIHJlY2VpdmluZyBldmVudHMKKy8vIHdoZW4gcmVtb3ZlZCB2
aWEgUmVsZWFzZSBhbmQgdGhhdCBpcyBub3Qgb3duZWQgYnkgdGhlIGxpc3QgYW55bW9yZS4KK1RF
U1QoRXZlbnRMaXN0ZW5lclRlc3QsIFJlbW92aW5nRGVmYXVsdFJlc3VsdFByaW50ZXJXb3Jrcykg
eworICBpbnQgb25fc3RhcnRfY291bnRlciA9IDA7CisgIGJvb2wgaXNfZGVzdHJveWVkID0gZmFs
c2U7CisgIC8vIEFsdGhvdWdoIEFwcGVuZCBwYXNzZXMgdGhlIG93bmVyc2hpcCBvZiB0aGlzIG9i
amVjdCB0byB0aGUgbGlzdCwKKyAgLy8gdGhlIGZvbGxvd2luZyBjYWxscyByZWxlYXNlIGl0LCBh
bmQgd2UgbmVlZCB0byBkZWxldGUgaXQgYmVmb3JlIHRoZQorICAvLyB0ZXN0IGVuZHMuCisgIFRl
c3RMaXN0ZW5lciogbGlzdGVuZXIgPSBuZXcgVGVzdExpc3RlbmVyKCZvbl9zdGFydF9jb3VudGVy
LCAmaXNfZGVzdHJveWVkKTsKKyAgeworICAgIFRlc3RFdmVudExpc3RlbmVycyBsaXN0ZW5lcnM7
CisgICAgVGVzdEV2ZW50TGlzdGVuZXJzQWNjZXNzb3I6OlNldERlZmF1bHRSZXN1bHRQcmludGVy
KCZsaXN0ZW5lcnMsIGxpc3RlbmVyKTsKKworICAgIEVYUEVDVF9FUShsaXN0ZW5lciwgbGlzdGVu
ZXJzLlJlbGVhc2UobGlzdGVuZXIpKTsKKyAgICBFWFBFQ1RfVFJVRShsaXN0ZW5lcnMuZGVmYXVs
dF9yZXN1bHRfcHJpbnRlcigpID09IE5VTEwpOworICAgIEVYUEVDVF9GQUxTRShpc19kZXN0cm95
ZWQpOworCisgICAgLy8gQnJvYWRjYXN0aW5nIGV2ZW50cyBub3cgc2hvdWxkIG5vdCBhZmZlY3Qg
ZGVmYXVsdF9yZXN1bHRfcHJpbnRlci4KKyAgICBUZXN0RXZlbnRMaXN0ZW5lcnNBY2Nlc3Nvcjo6
R2V0UmVwZWF0ZXIoJmxpc3RlbmVycyktPk9uVGVzdFByb2dyYW1TdGFydCgKKyAgICAgICAgKlVu
aXRUZXN0OjpHZXRJbnN0YW5jZSgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgb25fc3RhcnRfY291bnRl
cik7CisgIH0KKyAgLy8gRGVzdHJveWluZyB0aGUgbGlzdCBzaG91bGQgbm90IGFmZmVjdCB0aGUg
bGlzdGVuZXIgbm93LCB0b28uCisgIEVYUEVDVF9GQUxTRShpc19kZXN0cm95ZWQpOworICBkZWxl
dGUgbGlzdGVuZXI7Cit9CisKKy8vIFRlc3RzIHRoYXQgYSBsaXN0ZW5lciBpbnN0YWxsZWQgdmlh
IFNldERlZmF1bHRYbWxHZW5lcmF0b3IoKSBzdGFydHMKKy8vIHJlY2VpdmluZyBldmVudHMgYW5k
IGlzIHJldHVybmVkIHZpYSBkZWZhdWx0X3htbF9nZW5lcmF0b3IoKSBhbmQgdGhhdAorLy8gdGhl
IHByZXZpb3VzIGRlZmF1bHRfeG1sX2dlbmVyYXRvciBpcyByZW1vdmVkIGZyb20gdGhlIGxpc3Qg
YW5kIGRlbGV0ZWQuCitURVNUKEV2ZW50TGlzdGVuZXJUZXN0LCBkZWZhdWx0X3htbF9nZW5lcmF0
b3IpIHsKKyAgaW50IG9uX3N0YXJ0X2NvdW50ZXIgPSAwOworICBib29sIGlzX2Rlc3Ryb3llZCA9
IGZhbHNlOworICBUZXN0TGlzdGVuZXIqIGxpc3RlbmVyID0gbmV3IFRlc3RMaXN0ZW5lcigmb25f
c3RhcnRfY291bnRlciwgJmlzX2Rlc3Ryb3llZCk7CisKKyAgVGVzdEV2ZW50TGlzdGVuZXJzIGxp
c3RlbmVyczsKKyAgVGVzdEV2ZW50TGlzdGVuZXJzQWNjZXNzb3I6OlNldERlZmF1bHRYbWxHZW5l
cmF0b3IoJmxpc3RlbmVycywgbGlzdGVuZXIpOworCisgIEVYUEVDVF9FUShsaXN0ZW5lciwgbGlz
dGVuZXJzLmRlZmF1bHRfeG1sX2dlbmVyYXRvcigpKTsKKworICBUZXN0RXZlbnRMaXN0ZW5lcnNB
Y2Nlc3Nvcjo6R2V0UmVwZWF0ZXIoJmxpc3RlbmVycyktPk9uVGVzdFByb2dyYW1TdGFydCgKKyAg
ICAgICpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKSk7CisKKyAgRVhQRUNUX0VRKDEsIG9uX3N0YXJ0
X2NvdW50ZXIpOworCisgIC8vIFJlcGxhY2luZyBkZWZhdWx0X3htbF9nZW5lcmF0b3Igd2l0aCBz
b21ldGhpbmcgZWxzZSBzaG91bGQgcmVtb3ZlIGl0CisgIC8vIGZyb20gdGhlIGxpc3QgYW5kIGRl
c3Ryb3kgaXQuCisgIFRlc3RFdmVudExpc3RlbmVyc0FjY2Vzc29yOjpTZXREZWZhdWx0WG1sR2Vu
ZXJhdG9yKCZsaXN0ZW5lcnMsIE5VTEwpOworCisgIEVYUEVDVF9UUlVFKGxpc3RlbmVycy5kZWZh
dWx0X3htbF9nZW5lcmF0b3IoKSA9PSBOVUxMKTsKKyAgRVhQRUNUX1RSVUUoaXNfZGVzdHJveWVk
KTsKKworICAvLyBBZnRlciBicm9hZGNhc3RpbmcgYW4gZXZlbnQgdGhlIGNvdW50ZXIgaXMgc3Rp
bGwgdGhlIHNhbWUsIGluZGljYXRpbmcKKyAgLy8gdGhlIGxpc3RlbmVyIGlzIG5vdCBpbiB0aGUg
bGlzdCBhbnltb3JlLgorICBUZXN0RXZlbnRMaXN0ZW5lcnNBY2Nlc3Nvcjo6R2V0UmVwZWF0ZXIo
Jmxpc3RlbmVycyktPk9uVGVzdFByb2dyYW1TdGFydCgKKyAgICAgICpVbml0VGVzdDo6R2V0SW5z
dGFuY2UoKSk7CisgIEVYUEVDVF9FUSgxLCBvbl9zdGFydF9jb3VudGVyKTsKK30KKworLy8gVGVz
dHMgdGhhdCB0aGUgZGVmYXVsdF94bWxfZ2VuZXJhdG9yIGxpc3RlbmVyIHN0b3BzIHJlY2Vpdmlu
ZyBldmVudHMKKy8vIHdoZW4gcmVtb3ZlZCB2aWEgUmVsZWFzZSBhbmQgdGhhdCBpcyBub3Qgb3du
ZWQgYnkgdGhlIGxpc3QgYW55bW9yZS4KK1RFU1QoRXZlbnRMaXN0ZW5lclRlc3QsIFJlbW92aW5n
RGVmYXVsdFhtbEdlbmVyYXRvcldvcmtzKSB7CisgIGludCBvbl9zdGFydF9jb3VudGVyID0gMDsK
KyAgYm9vbCBpc19kZXN0cm95ZWQgPSBmYWxzZTsKKyAgLy8gQWx0aG91Z2ggQXBwZW5kIHBhc3Nl
cyB0aGUgb3duZXJzaGlwIG9mIHRoaXMgb2JqZWN0IHRvIHRoZSBsaXN0LAorICAvLyB0aGUgZm9s
bG93aW5nIGNhbGxzIHJlbGVhc2UgaXQsIGFuZCB3ZSBuZWVkIHRvIGRlbGV0ZSBpdCBiZWZvcmUg
dGhlCisgIC8vIHRlc3QgZW5kcy4KKyAgVGVzdExpc3RlbmVyKiBsaXN0ZW5lciA9IG5ldyBUZXN0
TGlzdGVuZXIoJm9uX3N0YXJ0X2NvdW50ZXIsICZpc19kZXN0cm95ZWQpOworICB7CisgICAgVGVz
dEV2ZW50TGlzdGVuZXJzIGxpc3RlbmVyczsKKyAgICBUZXN0RXZlbnRMaXN0ZW5lcnNBY2Nlc3Nv
cjo6U2V0RGVmYXVsdFhtbEdlbmVyYXRvcigmbGlzdGVuZXJzLCBsaXN0ZW5lcik7CisKKyAgICBF
WFBFQ1RfRVEobGlzdGVuZXIsIGxpc3RlbmVycy5SZWxlYXNlKGxpc3RlbmVyKSk7CisgICAgRVhQ
RUNUX1RSVUUobGlzdGVuZXJzLmRlZmF1bHRfeG1sX2dlbmVyYXRvcigpID09IE5VTEwpOworICAg
IEVYUEVDVF9GQUxTRShpc19kZXN0cm95ZWQpOworCisgICAgLy8gQnJvYWRjYXN0aW5nIGV2ZW50
cyBub3cgc2hvdWxkIG5vdCBhZmZlY3QgZGVmYXVsdF94bWxfZ2VuZXJhdG9yLgorICAgIFRlc3RF
dmVudExpc3RlbmVyc0FjY2Vzc29yOjpHZXRSZXBlYXRlcigmbGlzdGVuZXJzKS0+T25UZXN0UHJv
Z3JhbVN0YXJ0KAorICAgICAgICAqVW5pdFRlc3Q6OkdldEluc3RhbmNlKCkpOworICAgIEVYUEVD
VF9FUSgwLCBvbl9zdGFydF9jb3VudGVyKTsKKyAgfQorICAvLyBEZXN0cm95aW5nIHRoZSBsaXN0
IHNob3VsZCBub3QgYWZmZWN0IHRoZSBsaXN0ZW5lciBub3csIHRvby4KKyAgRVhQRUNUX0ZBTFNF
KGlzX2Rlc3Ryb3llZCk7CisgIGRlbGV0ZSBsaXN0ZW5lcjsKK30KKworLy8gU2FuaXR5IHRlc3Rz
IHRvIGVuc3VyZSB0aGF0IHRoZSBhbHRlcm5hdGl2ZSwgdmVyYm9zZSBzcGVsbGluZ3Mgb2YKKy8v
IHNvbWUgb2YgdGhlIG1hY3JvcyB3b3JrLiAgV2UgZG9uJ3QgdGVzdCB0aGVtIHRob3JvdWdobHkg
YXMgdGhhdAorLy8gd291bGQgYmUgcXVpdGUgaW52b2x2ZWQuICBTaW5jZSB0aGVpciBpbXBsZW1l
bnRhdGlvbnMgYXJlCisvLyBzdHJhaWdodGZvcndhcmQsIGFuZCB0aGV5IGFyZSByYXJlbHkgdXNl
ZCwgd2UnbGwganVzdCByZWx5IG9uIHRoZQorLy8gdXNlcnMgdG8gdGVsbCB1cyB3aGVuIHRoZXkg
YXJlIGJyb2tlbi4KK0dURVNUX1RFU1QoQWx0ZXJuYXRpdmVOYW1lVGVzdCwgV29ya3MpIHsgIC8v
IEdURVNUX1RFU1QgaXMgdGhlIHNhbWUgYXMgVEVTVC4KKyAgR1RFU1RfU1VDQ0VFRCgpIDw8ICJP
SyI7ICAvLyBHVEVTVF9TVUNDRUVEIGlzIHRoZSBzYW1lIGFzIFNVQ0NFRUQuCisKKyAgLy8gR1RF
U1RfRkFJTCBpcyB0aGUgc2FtZSBhcyBGQUlMLgorICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVT
VF9GQUlMKCkgPDwgIkFuIGV4cGVjdGVkIGZhaWx1cmUiLAorICAgICAgICAgICAgICAgICAgICAg
ICAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIpOworCisgIC8vIEdURVNUX0FTU0VSVF9YWSBpcyB0aGUg
c2FtZSBhcyBBU1NFUlRfWFkuCisKKyAgR1RFU1RfQVNTRVJUX0VRKDAsIDApOworICBFWFBFQ1Rf
RkFUQUxfRkFJTFVSRShHVEVTVF9BU1NFUlRfRVEoMCwgMSkgPDwgIkFuIGV4cGVjdGVkIGZhaWx1
cmUiLAorICAgICAgICAgICAgICAgICAgICAgICAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIpOworICBF
WFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVTVF9BU1NFUlRfRVEoMSwgMCkgPDwgIkFuIGV4cGVjdGVk
IGZhaWx1cmUiLAorICAgICAgICAgICAgICAgICAgICAgICAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIp
OworCisgIEdURVNUX0FTU0VSVF9ORSgwLCAxKTsKKyAgR1RFU1RfQVNTRVJUX05FKDEsIDApOwor
ICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVTVF9BU1NFUlRfTkUoMCwgMCkgPDwgIkFuIGV4cGVj
dGVkIGZhaWx1cmUiLAorICAgICAgICAgICAgICAgICAgICAgICAiQW4gZXhwZWN0ZWQgZmFpbHVy
ZSIpOworCisgIEdURVNUX0FTU0VSVF9MRSgwLCAwKTsKKyAgR1RFU1RfQVNTRVJUX0xFKDAsIDEp
OworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVTVF9BU1NFUlRfTEUoMSwgMCkgPDwgIkFuIGV4
cGVjdGVkIGZhaWx1cmUiLAorICAgICAgICAgICAgICAgICAgICAgICAiQW4gZXhwZWN0ZWQgZmFp
bHVyZSIpOworCisgIEdURVNUX0FTU0VSVF9MVCgwLCAxKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxV
UkUoR1RFU1RfQVNTRVJUX0xUKDAsIDApIDw8ICJBbiBleHBlY3RlZCBmYWlsdXJlIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1cmUiKTsKKyAgRVhQRUNUX0ZBVEFM
X0ZBSUxVUkUoR1RFU1RfQVNTRVJUX0xUKDEsIDApIDw8ICJBbiBleHBlY3RlZCBmYWlsdXJlIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1cmUiKTsKKworICBHVEVT
VF9BU1NFUlRfR0UoMCwgMCk7CisgIEdURVNUX0FTU0VSVF9HRSgxLCAwKTsKKyAgRVhQRUNUX0ZB
VEFMX0ZBSUxVUkUoR1RFU1RfQVNTRVJUX0dFKDAsIDEpIDw8ICJBbiBleHBlY3RlZCBmYWlsdXJl
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1cmUiKTsKKworICBH
VEVTVF9BU1NFUlRfR1QoMSwgMCk7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEdURVNUX0FTU0VS
VF9HVCgwLCAxKSA8PCAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIsCisgICAgICAgICAgICAgICAgICAg
ICAgICJBbiBleHBlY3RlZCBmYWlsdXJlIik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEdURVNU
X0FTU0VSVF9HVCgxLCAxKSA8PCAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIsCisgICAgICAgICAgICAg
ICAgICAgICAgICJBbiBleHBlY3RlZCBmYWlsdXJlIik7Cit9CisKKy8vIFRlc3RzIGZvciBpbnRl
cm5hbCB1dGlsaXRpZXMgbmVjZXNzYXJ5IGZvciBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgdW5pdmVy
c2FsCisvLyBwcmludGluZy4KKy8vIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IEZpbmQgYSBiZXR0
ZXIgaG9tZSBmb3IgdGhlbS4KKworY2xhc3MgQ29udmVyc2lvbkhlbHBlckJhc2Uge307CitjbGFz
cyBDb252ZXJzaW9uSGVscGVyRGVyaXZlZCA6IHB1YmxpYyBDb252ZXJzaW9uSGVscGVyQmFzZSB7
fTsKKworLy8gVGVzdHMgdGhhdCBJc0FQcm90b2NvbE1lc3NhZ2U8VD46OnZhbHVlIGlzIGEgY29t
cGlsZS10aW1lIGNvbnN0YW50LgorVEVTVChJc0FQcm90b2NvbE1lc3NhZ2VUZXN0LCBWYWx1ZUlz
Q29tcGlsZVRpbWVDb25zdGFudCkgeworICBHVEVTVF9DT01QSUxFX0FTU0VSVF8oSXNBUHJvdG9j
b2xNZXNzYWdlPFByb3RvY29sTWVzc2FnZT46OnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3RfdHJ1ZSk7CisgIEdURVNUX0NPTVBJTEVfQVNTRVJUXyghSXNBUHJvdG9jb2xNZXNz
YWdlPGludD46OnZhbHVlLCBjb25zdF9mYWxzZSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgSXNBUHJv
dG9jb2xNZXNzYWdlPFQ+Ojp2YWx1ZSBpcyB0cnVlIHdoZW4gVCBpcworLy8gcHJvdG8yOjpNZXNz
YWdlIG9yIGEgc3ViLWNsYXNzIG9mIGl0LgorVEVTVChJc0FQcm90b2NvbE1lc3NhZ2VUZXN0LCBW
YWx1ZUlzVHJ1ZVdoZW5UeXBlSXNBUHJvdG9jb2xNZXNzYWdlKSB7CisgIEVYUEVDVF9UUlVFKElz
QVByb3RvY29sTWVzc2FnZTwgOjpwcm90bzI6Ok1lc3NhZ2U+Ojp2YWx1ZSk7CisgIEVYUEVDVF9U
UlVFKElzQVByb3RvY29sTWVzc2FnZTxQcm90b2NvbE1lc3NhZ2U+Ojp2YWx1ZSk7Cit9CisKKy8v
IFRlc3RzIHRoYXQgSXNBUHJvdG9jb2xNZXNzYWdlPFQ+Ojp2YWx1ZSBpcyBmYWxzZSB3aGVuIFQg
aXMgbmVpdGhlcgorLy8gUHJvdG9jb2xNZXNzYWdlIG5vciBhIHN1Yi1jbGFzcyBvZiBpdC4KK1RF
U1QoSXNBUHJvdG9jb2xNZXNzYWdlVGVzdCwgVmFsdWVJc0ZhbHNlV2hlblR5cGVJc05vdEFQcm90
b2NvbE1lc3NhZ2UpIHsKKyAgRVhQRUNUX0ZBTFNFKElzQVByb3RvY29sTWVzc2FnZTxpbnQ+Ojp2
YWx1ZSk7CisgIEVYUEVDVF9GQUxTRShJc0FQcm90b2NvbE1lc3NhZ2U8Y29uc3QgQ29udmVyc2lv
bkhlbHBlckJhc2U+Ojp2YWx1ZSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgQ29tcGlsZUFzc2VydFR5
cGVzRXF1YWwgY29tcGlsZXMgd2hlbiB0aGUgdHlwZSBhcmd1bWVudHMgYXJlCisvLyBlcXVhbC4K
K1RFU1QoQ29tcGlsZUFzc2VydFR5cGVzRXF1YWwsIENvbXBpbGVzV2hlblR5cGVzQXJlRXF1YWwp
IHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8dm9pZCwgdm9pZD4oKTsKKyAgQ29tcGlsZUFz
c2VydFR5cGVzRXF1YWw8aW50KiwgaW50Kj4oKTsKK30KKworLy8gVGVzdHMgdGhhdCBSZW1vdmVS
ZWZlcmVuY2UgZG9lcyBub3QgYWZmZWN0IG5vbi1yZWZlcmVuY2UgdHlwZXMuCitURVNUKFJlbW92
ZVJlZmVyZW5jZVRlc3QsIERvZXNOb3RBZmZlY3ROb25SZWZlcmVuY2VUeXBlKSB7CisgIENvbXBp
bGVBc3NlcnRUeXBlc0VxdWFsPGludCwgUmVtb3ZlUmVmZXJlbmNlPGludD46OnR5cGU+KCk7Cisg
IENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGNvbnN0IGNoYXIsIFJlbW92ZVJlZmVyZW5jZTxjb25z
dCBjaGFyPjo6dHlwZT4oKTsKK30KKworLy8gVGVzdHMgdGhhdCBSZW1vdmVSZWZlcmVuY2UgcmVt
b3ZlcyByZWZlcmVuY2UgZnJvbSByZWZlcmVuY2UgdHlwZXMuCitURVNUKFJlbW92ZVJlZmVyZW5j
ZVRlc3QsIFJlbW92ZXNSZWZlcmVuY2UpIHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8aW50
LCBSZW1vdmVSZWZlcmVuY2U8aW50Jj46OnR5cGU+KCk7CisgIENvbXBpbGVBc3NlcnRUeXBlc0Vx
dWFsPGNvbnN0IGNoYXIsIFJlbW92ZVJlZmVyZW5jZTxjb25zdCBjaGFyJj46OnR5cGU+KCk7Cit9
CisKKy8vIFRlc3RzIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfLgorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVDEsIHR5cGVuYW1lIFQyPgordm9pZCBUZXN0R1Rlc3RSZW1vdmVSZWZlcmVuY2UoKSB7Cisg
IENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPFQxLCBHVEVTVF9SRU1PVkVfUkVGRVJFTkNFXyhUMik+
KCk7Cit9CisKK1RFU1QoUmVtb3ZlUmVmZXJlbmNlVGVzdCwgTWFjcm9WZXJzaW9uKSB7CisgIFRl
c3RHVGVzdFJlbW92ZVJlZmVyZW5jZTxpbnQsIGludD4oKTsKKyAgVGVzdEdUZXN0UmVtb3ZlUmVm
ZXJlbmNlPGNvbnN0IGNoYXIsIGNvbnN0IGNoYXImPigpOworfQorCisKKy8vIFRlc3RzIHRoYXQg
UmVtb3ZlQ29uc3QgZG9lcyBub3QgYWZmZWN0IG5vbi1jb25zdCB0eXBlcy4KK1RFU1QoUmVtb3Zl
Q29uc3RUZXN0LCBEb2VzTm90QWZmZWN0Tm9uQ29uc3RUeXBlKSB7CisgIENvbXBpbGVBc3NlcnRU
eXBlc0VxdWFsPGludCwgUmVtb3ZlQ29uc3Q8aW50Pjo6dHlwZT4oKTsKKyAgQ29tcGlsZUFzc2Vy
dFR5cGVzRXF1YWw8Y2hhciYsIFJlbW92ZUNvbnN0PGNoYXImPjo6dHlwZT4oKTsKK30KKworLy8g
VGVzdHMgdGhhdCBSZW1vdmVDb25zdCByZW1vdmVzIGNvbnN0IGZyb20gY29uc3QgdHlwZXMuCitU
RVNUKFJlbW92ZUNvbnN0VGVzdCwgUmVtb3Zlc0NvbnN0KSB7CisgIENvbXBpbGVBc3NlcnRUeXBl
c0VxdWFsPGludCwgUmVtb3ZlQ29uc3Q8Y29uc3QgaW50Pjo6dHlwZT4oKTsKKyAgQ29tcGlsZUFz
c2VydFR5cGVzRXF1YWw8Y2hhclsyXSwgUmVtb3ZlQ29uc3Q8Y29uc3QgY2hhclsyXT46OnR5cGU+
KCk7CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGNoYXJbMl1bM10sIFJlbW92ZUNvbnN0PGNv
bnN0IGNoYXJbMl1bM10+Ojp0eXBlPigpOworfQorCisvLyBUZXN0cyBHVEVTVF9SRU1PVkVfQ09O
U1RfLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgordm9pZCBUZXN0R1Rl
c3RSZW1vdmVDb25zdCgpIHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8VDEsIEdURVNUX1JF
TU9WRV9DT05TVF8oVDIpPigpOworfQorCitURVNUKFJlbW92ZUNvbnN0VGVzdCwgTWFjcm9WZXJz
aW9uKSB7CisgIFRlc3RHVGVzdFJlbW92ZUNvbnN0PGludCwgaW50PigpOworICBUZXN0R1Rlc3RS
ZW1vdmVDb25zdDxkb3VibGUmLCBkb3VibGUmPigpOworICBUZXN0R1Rlc3RSZW1vdmVDb25zdDxj
aGFyLCBjb25zdCBjaGFyPigpOworfQorCisvLyBUZXN0cyBHVEVTVF9SRU1PVkVfUkVGRVJFTkNF
X0FORF9DT05TVF8uCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Cit2b2lk
IFRlc3RHVGVzdFJlbW92ZVJlZmVyZW5jZUFuZENvbnN0KCkgeworICBDb21waWxlQXNzZXJ0VHlw
ZXNFcXVhbDxUMSwgR1RFU1RfUkVNT1ZFX1JFRkVSRU5DRV9BTkRfQ09OU1RfKFQyKT4oKTsKK30K
KworVEVTVChSZW1vdmVSZWZlcmVuY2VUb0NvbnN0VGVzdCwgV29ya3MpIHsKKyAgVGVzdEdUZXN0
UmVtb3ZlUmVmZXJlbmNlQW5kQ29uc3Q8aW50LCBpbnQ+KCk7CisgIFRlc3RHVGVzdFJlbW92ZVJl
ZmVyZW5jZUFuZENvbnN0PGRvdWJsZSwgZG91YmxlJj4oKTsKKyAgVGVzdEdUZXN0UmVtb3ZlUmVm
ZXJlbmNlQW5kQ29uc3Q8Y2hhciwgY29uc3QgY2hhcj4oKTsKKyAgVGVzdEdUZXN0UmVtb3ZlUmVm
ZXJlbmNlQW5kQ29uc3Q8Y2hhciwgY29uc3QgY2hhciY+KCk7CisgIFRlc3RHVGVzdFJlbW92ZVJl
ZmVyZW5jZUFuZENvbnN0PGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKj4oKTsKK30KKworLy8gVGVz
dHMgdGhhdCBBZGRSZWZlcmVuY2UgZG9lcyBub3QgYWZmZWN0IHJlZmVyZW5jZSB0eXBlcy4KK1RF
U1QoQWRkUmVmZXJlbmNlVGVzdCwgRG9lc05vdEFmZmVjdFJlZmVyZW5jZVR5cGUpIHsKKyAgQ29t
cGlsZUFzc2VydFR5cGVzRXF1YWw8aW50JiwgQWRkUmVmZXJlbmNlPGludCY+Ojp0eXBlPigpOwor
ICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxjb25zdCBjaGFyJiwgQWRkUmVmZXJlbmNlPGNvbnN0
IGNoYXImPjo6dHlwZT4oKTsKK30KKworLy8gVGVzdHMgdGhhdCBBZGRSZWZlcmVuY2UgYWRkcyBy
ZWZlcmVuY2UgdG8gbm9uLXJlZmVyZW5jZSB0eXBlcy4KK1RFU1QoQWRkUmVmZXJlbmNlVGVzdCwg
QWRkc1JlZmVyZW5jZSkgeworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxpbnQmLCBBZGRSZWZl
cmVuY2U8aW50Pjo6dHlwZT4oKTsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8Y29uc3QgY2hh
ciYsIEFkZFJlZmVyZW5jZTxjb25zdCBjaGFyPjo6dHlwZT4oKTsKK30KKworLy8gVGVzdHMgR1RF
U1RfQUREX1JFRkVSRU5DRV8uCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+
Cit2b2lkIFRlc3RHVGVzdEFkZFJlZmVyZW5jZSgpIHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1
YWw8VDEsIEdURVNUX0FERF9SRUZFUkVOQ0VfKFQyKT4oKTsKK30KKworVEVTVChBZGRSZWZlcmVu
Y2VUZXN0LCBNYWNyb1ZlcnNpb24pIHsKKyAgVGVzdEdUZXN0QWRkUmVmZXJlbmNlPGludCYsIGlu
dD4oKTsKKyAgVGVzdEdUZXN0QWRkUmVmZXJlbmNlPGNvbnN0IGNoYXImLCBjb25zdCBjaGFyJj4o
KTsKK30KKworLy8gVGVzdHMgR1RFU1RfUkVGRVJFTkNFX1RPX0NPTlNUXy4KKwordGVtcGxhdGUg
PHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK3ZvaWQgVGVzdEdUZXN0UmVmZXJlbmNlVG9Db25z
dCgpIHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8VDEsIEdURVNUX1JFRkVSRU5DRV9UT19D
T05TVF8oVDIpPigpOworfQorCitURVNUKEdUZXN0UmVmZXJlbmNlVG9Db25zdFRlc3QsIFdvcmtz
KSB7CisgIFRlc3RHVGVzdFJlZmVyZW5jZVRvQ29uc3Q8Y29uc3QgY2hhciYsIGNoYXI+KCk7Cisg
IFRlc3RHVGVzdFJlZmVyZW5jZVRvQ29uc3Q8Y29uc3QgaW50JiwgY29uc3QgaW50PigpOworICBU
ZXN0R1Rlc3RSZWZlcmVuY2VUb0NvbnN0PGNvbnN0IGRvdWJsZSYsIGRvdWJsZT4oKTsKKyAgVGVz
dEdUZXN0UmVmZXJlbmNlVG9Db25zdDxjb25zdCBzdGQ6OnN0cmluZyYsIGNvbnN0IHN0ZDo6c3Ry
aW5nJj4oKTsKK30KKworLy8gVGVzdHMgdGhhdCBJbXBsaWNpdGx5Q29udmVydGlibGU8VDEsIFQy
Pjo6dmFsdWUgaXMgYSBjb21waWxlLXRpbWUgY29uc3RhbnQuCitURVNUKEltcGxpY2l0bHlDb252
ZXJ0aWJsZVRlc3QsIFZhbHVlSXNDb21waWxlVGltZUNvbnN0YW50KSB7CisgIEdURVNUX0NPTVBJ
TEVfQVNTRVJUXygoSW1wbGljaXRseUNvbnZlcnRpYmxlPGludCwgaW50Pjo6dmFsdWUpLCBjb25z
dF90cnVlKTsKKyAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKCghSW1wbGljaXRseUNvbnZlcnRpYmxl
PHZvaWQqLCBpbnQqPjo6dmFsdWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RfZmFs
c2UpOworfQorCisvLyBUZXN0cyB0aGF0IEltcGxpY2l0bHlDb252ZXJ0aWJsZTxUMSwgVDI+Ojp2
YWx1ZSBpcyB0cnVlIHdoZW4gVDEgY2FuCisvLyBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byBU
Mi4KK1RFU1QoSW1wbGljaXRseUNvbnZlcnRpYmxlVGVzdCwgVmFsdWVJc1RydWVXaGVuQ29udmVy
dGlibGUpIHsKKyAgRVhQRUNUX1RSVUUoKEltcGxpY2l0bHlDb252ZXJ0aWJsZTxpbnQsIGRvdWJs
ZT46OnZhbHVlKSk7CisgIEVYUEVDVF9UUlVFKChJbXBsaWNpdGx5Q29udmVydGlibGU8ZG91Ymxl
LCBpbnQ+Ojp2YWx1ZSkpOworICBFWFBFQ1RfVFJVRSgoSW1wbGljaXRseUNvbnZlcnRpYmxlPGlu
dCosIHZvaWQqPjo6dmFsdWUpKTsKKyAgRVhQRUNUX1RSVUUoKEltcGxpY2l0bHlDb252ZXJ0aWJs
ZTxpbnQqLCBjb25zdCBpbnQqPjo6dmFsdWUpKTsKKyAgRVhQRUNUX1RSVUUoKEltcGxpY2l0bHlD
b252ZXJ0aWJsZTxDb252ZXJzaW9uSGVscGVyRGVyaXZlZCYsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgQ29udmVyc2lvbkhlbHBlckJhc2UmPjo6dmFsdWUpKTsK
KyAgRVhQRUNUX1RSVUUoKEltcGxpY2l0bHlDb252ZXJ0aWJsZTxjb25zdCBDb252ZXJzaW9uSGVs
cGVyQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb252ZXJzaW9u
SGVscGVyQmFzZT46OnZhbHVlKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgSW1wbGljaXRseUNvbnZl
cnRpYmxlPFQxLCBUMj46OnZhbHVlIGlzIGZhbHNlIHdoZW4gVDEKKy8vIGNhbm5vdCBiZSBpbXBs
aWNpdGx5IGNvbnZlcnRlZCB0byBUMi4KK1RFU1QoSW1wbGljaXRseUNvbnZlcnRpYmxlVGVzdCwg
VmFsdWVJc0ZhbHNlV2hlbk5vdENvbnZlcnRpYmxlKSB7CisgIEVYUEVDVF9GQUxTRSgoSW1wbGlj
aXRseUNvbnZlcnRpYmxlPGRvdWJsZSwgaW50Kj46OnZhbHVlKSk7CisgIEVYUEVDVF9GQUxTRSgo
SW1wbGljaXRseUNvbnZlcnRpYmxlPHZvaWQqLCBpbnQqPjo6dmFsdWUpKTsKKyAgRVhQRUNUX0ZB
TFNFKChJbXBsaWNpdGx5Q29udmVydGlibGU8Y29uc3QgaW50KiwgaW50Kj46OnZhbHVlKSk7Cisg
IEVYUEVDVF9GQUxTRSgoSW1wbGljaXRseUNvbnZlcnRpYmxlPENvbnZlcnNpb25IZWxwZXJCYXNl
JiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVyc2lvbkhlbHBl
ckRlcml2ZWQmPjo6dmFsdWUpKTsKK30KKworLy8gVGVzdHMgSXNDb250YWluZXJUZXN0LgorCitj
bGFzcyBOb25Db250YWluZXIge307CisKK1RFU1QoSXNDb250YWluZXJUZXN0VGVzdCwgV29ya3NG
b3JOb25Db250YWluZXIpIHsKKyAgRVhQRUNUX0VRKHNpemVvZihJc05vdENvbnRhaW5lciksIHNp
emVvZihJc0NvbnRhaW5lclRlc3Q8aW50PigwKSkpOworICBFWFBFQ1RfRVEoc2l6ZW9mKElzTm90
Q29udGFpbmVyKSwgc2l6ZW9mKElzQ29udGFpbmVyVGVzdDxjaGFyWzVdPigwKSkpOworICBFWFBF
Q1RfRVEoc2l6ZW9mKElzTm90Q29udGFpbmVyKSwgc2l6ZW9mKElzQ29udGFpbmVyVGVzdDxOb25D
b250YWluZXI+KDApKSk7Cit9CisKK1RFU1QoSXNDb250YWluZXJUZXN0VGVzdCwgV29ya3NGb3JD
b250YWluZXIpIHsKKyAgRVhQRUNUX0VRKHNpemVvZihJc0NvbnRhaW5lciksCisgICAgICAgICAg
ICBzaXplb2YoSXNDb250YWluZXJUZXN0PHN0ZDo6dmVjdG9yPGJvb2w+ID4oMCkpKTsKKyAgRVhQ
RUNUX0VRKHNpemVvZihJc0NvbnRhaW5lciksCisgICAgICAgICAgICBzaXplb2YoSXNDb250YWlu
ZXJUZXN0PHN0ZDo6bWFwPGludCwgZG91YmxlPiA+KDApKSk7Cit9CisKKy8vIFRlc3RzIEFycmF5
RXEoKS4KKworVEVTVChBcnJheUVxVGVzdCwgV29ya3NGb3JEZWdlbmVyYXRlZEFycmF5cykgewor
ICBFWFBFQ1RfVFJVRShBcnJheUVxKDUsIDVMKSk7CisgIEVYUEVDVF9GQUxTRShBcnJheUVxKCdh
JywgMCkpOworfQorCitURVNUKEFycmF5RXFUZXN0LCBXb3Jrc0Zvck9uZURpbWVuc2lvbmFsQXJy
YXlzKSB7CisgIC8vIE5vdGUgdGhhdCBhIGFuZCBiIGFyZSBkaXN0aW5jdCBidXQgY29tcGF0aWJs
ZSB0eXBlcy4KKyAgY29uc3QgaW50IGFbXSA9IHsgMCwgMSB9OworICBsb25nIGJbXSA9IHsgMCwg
MSB9OworICBFWFBFQ1RfVFJVRShBcnJheUVxKGEsIGIpKTsKKyAgRVhQRUNUX1RSVUUoQXJyYXlF
cShhLCAyLCBiKSk7CisKKyAgYlswXSA9IDI7CisgIEVYUEVDVF9GQUxTRShBcnJheUVxKGEsIGIp
KTsKKyAgRVhQRUNUX0ZBTFNFKEFycmF5RXEoYSwgMSwgYikpOworfQorCitURVNUKEFycmF5RXFU
ZXN0LCBXb3Jrc0ZvclR3b0RpbWVuc2lvbmFsQXJyYXlzKSB7CisgIGNvbnN0IGNoYXIgYVtdWzNd
ID0geyAiaGkiLCAibG8iIH07CisgIGNvbnN0IGNoYXIgYltdWzNdID0geyAiaGkiLCAibG8iIH07
CisgIGNvbnN0IGNoYXIgY1tdWzNdID0geyAiaGkiLCAibGkiIH07CisKKyAgRVhQRUNUX1RSVUUo
QXJyYXlFcShhLCBiKSk7CisgIEVYUEVDVF9UUlVFKEFycmF5RXEoYSwgMiwgYikpOworCisgIEVY
UEVDVF9GQUxTRShBcnJheUVxKGEsIGMpKTsKKyAgRVhQRUNUX0ZBTFNFKEFycmF5RXEoYSwgMiwg
YykpOworfQorCisvLyBUZXN0cyBBcnJheUF3YXJlRmluZCgpLgorCitURVNUKEFycmF5QXdhcmVG
aW5kVGVzdCwgV29ya3NGb3JPbmVEaW1lbnNpb25hbEFycmF5KSB7CisgIGNvbnN0IGNoYXIgYVtd
ID0gImhlbGxvIjsKKyAgRVhQRUNUX0VRKGEgKyA0LCBBcnJheUF3YXJlRmluZChhLCBhICsgNSwg
J28nKSk7CisgIEVYUEVDVF9FUShhICsgNSwgQXJyYXlBd2FyZUZpbmQoYSwgYSArIDUsICd4Jykp
OworfQorCitURVNUKEFycmF5QXdhcmVGaW5kVGVzdCwgV29ya3NGb3JUd29EaW1lbnNpb25hbEFy
cmF5KSB7CisgIGludCBhW11bMl0gPSB7IHsgMCwgMSB9LCB7IDIsIDMgfSwgeyA0LCA1IH0gfTsK
KyAgY29uc3QgaW50IGJbMl0gPSB7IDIsIDMgfTsKKyAgRVhQRUNUX0VRKGEgKyAxLCBBcnJheUF3
YXJlRmluZChhLCBhICsgMywgYikpOworCisgIGNvbnN0IGludCBjWzJdID0geyA2LCA3IH07Cisg
IEVYUEVDVF9FUShhICsgMywgQXJyYXlBd2FyZUZpbmQoYSwgYSArIDMsIGMpKTsKK30KKworLy8g
VGVzdHMgQ29weUFycmF5KCkuCisKK1RFU1QoQ29weUFycmF5VGVzdCwgV29ya3NGb3JEZWdlbmVy
YXRlZEFycmF5cykgeworICBpbnQgbiA9IDA7CisgIENvcHlBcnJheSgnYScsICZuKTsKKyAgRVhQ
RUNUX0VRKCdhJywgbik7Cit9CisKK1RFU1QoQ29weUFycmF5VGVzdCwgV29ya3NGb3JPbmVEaW1l
bnNpb25hbEFycmF5cykgeworICBjb25zdCBjaGFyIGFbM10gPSAiaGkiOworICBpbnQgYlszXTsK
KyNpZm5kZWYgX19CT1JMQU5EQ19fICAvLyBDKytCdWlsZGVyIGNhbm5vdCBjb21waWxlIHNvbWUg
YXJyYXkgc2l6ZSBkZWR1Y3Rpb25zLgorICBDb3B5QXJyYXkoYSwgJmIpOworICBFWFBFQ1RfVFJV
RShBcnJheUVxKGEsIGIpKTsKKyNlbmRpZgorCisgIGludCBjWzNdOworICBDb3B5QXJyYXkoYSwg
MywgYyk7CisgIEVYUEVDVF9UUlVFKEFycmF5RXEoYSwgYykpOworfQorCitURVNUKENvcHlBcnJh
eVRlc3QsIFdvcmtzRm9yVHdvRGltZW5zaW9uYWxBcnJheXMpIHsKKyAgY29uc3QgaW50IGFbMl1b
M10gPSB7IHsgMCwgMSwgMiB9LCB7IDMsIDQsIDUgfSB9OworICBpbnQgYlsyXVszXTsKKyNpZm5k
ZWYgX19CT1JMQU5EQ19fICAvLyBDKytCdWlsZGVyIGNhbm5vdCBjb21waWxlIHNvbWUgYXJyYXkg
c2l6ZSBkZWR1Y3Rpb25zLgorICBDb3B5QXJyYXkoYSwgJmIpOworICBFWFBFQ1RfVFJVRShBcnJh
eUVxKGEsIGIpKTsKKyNlbmRpZgorCisgIGludCBjWzJdWzNdOworICBDb3B5QXJyYXkoYSwgMiwg
Yyk7CisgIEVYUEVDVF9UUlVFKEFycmF5RXEoYSwgYykpOworfQorCisvLyBUZXN0cyBOYXRpdmVB
cnJheS4KKworVEVTVChOYXRpdmVBcnJheVRlc3QsIENvbnN0cnVjdG9yRnJvbUFycmF5V29ya3Mp
IHsKKyAgY29uc3QgaW50IGFbM10gPSB7IDAsIDEsIDIgfTsKKyAgTmF0aXZlQXJyYXk8aW50PiBu
YShhLCAzLCBSZWxhdGlvblRvU291cmNlUmVmZXJlbmNlKCkpOworICBFWFBFQ1RfRVEoM1UsIG5h
LnNpemUoKSk7CisgIEVYUEVDVF9FUShhLCBuYS5iZWdpbigpKTsKK30KKworVEVTVChOYXRpdmVB
cnJheVRlc3QsIENyZWF0ZXNBbmREZWxldGVzQ29weU9mQXJyYXlXaGVuQXNrZWRUbykgeworICB0
eXBlZGVmIGludCBBcnJheVsyXTsKKyAgQXJyYXkqIGEgPSBuZXcgQXJyYXlbMV07CisgICgqYSlb
MF0gPSAwOworICAoKmEpWzFdID0gMTsKKyAgTmF0aXZlQXJyYXk8aW50PiBuYSgqYSwgMiwgUmVs
YXRpb25Ub1NvdXJjZUNvcHkoKSk7CisgIEVYUEVDVF9ORSgqYSwgbmEuYmVnaW4oKSk7CisgIGRl
bGV0ZVtdIGE7CisgIEVYUEVDVF9FUSgwLCBuYS5iZWdpbigpWzBdKTsKKyAgRVhQRUNUX0VRKDEs
IG5hLmJlZ2luKClbMV0pOworCisgIC8vIFdlIHJlbHkgb24gdGhlIGhlYXAgY2hlY2tlciB0byB2
ZXJpZnkgdGhhdCBuYSBkZWxldGVzIHRoZSBjb3B5IG9mCisgIC8vIGFycmF5LgorfQorCitURVNU
KE5hdGl2ZUFycmF5VGVzdCwgVHlwZU1lbWJlcnNBcmVDb3JyZWN0KSB7CisgIFN0YXRpY0Fzc2Vy
dFR5cGVFcTxjaGFyLCBOYXRpdmVBcnJheTxjaGFyPjo6dmFsdWVfdHlwZT4oKTsKKyAgU3RhdGlj
QXNzZXJ0VHlwZUVxPGludFsyXSwgTmF0aXZlQXJyYXk8aW50WzJdPjo6dmFsdWVfdHlwZT4oKTsK
KworICBTdGF0aWNBc3NlcnRUeXBlRXE8Y29uc3QgY2hhciosIE5hdGl2ZUFycmF5PGNoYXI+Ojpj
b25zdF9pdGVyYXRvcj4oKTsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPGNvbnN0IGJvb2woKilbMl0s
IE5hdGl2ZUFycmF5PGJvb2xbMl0+Ojpjb25zdF9pdGVyYXRvcj4oKTsKK30KKworVEVTVChOYXRp
dmVBcnJheVRlc3QsIE1ldGhvZHNXb3JrKSB7CisgIGNvbnN0IGludCBhWzNdID0geyAwLCAxLCAy
IH07CisgIE5hdGl2ZUFycmF5PGludD4gbmEoYSwgMywgUmVsYXRpb25Ub1NvdXJjZUNvcHkoKSk7
CisgIEFTU0VSVF9FUSgzVSwgbmEuc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKDMsIG5hLmVuZCgpIC0g
bmEuYmVnaW4oKSk7CisKKyAgTmF0aXZlQXJyYXk8aW50Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBu
YS5iZWdpbigpOworICBFWFBFQ1RfRVEoMCwgKml0KTsKKyAgKytpdDsKKyAgRVhQRUNUX0VRKDEs
ICppdCk7CisgIGl0Kys7CisgIEVYUEVDVF9FUSgyLCAqaXQpOworICArK2l0OworICBFWFBFQ1Rf
RVEobmEuZW5kKCksIGl0KTsKKworICBFWFBFQ1RfVFJVRShuYSA9PSBuYSk7CisKKyAgTmF0aXZl
QXJyYXk8aW50PiBuYTIoYSwgMywgUmVsYXRpb25Ub1NvdXJjZVJlZmVyZW5jZSgpKTsKKyAgRVhQ
RUNUX1RSVUUobmEgPT0gbmEyKTsKKworICBjb25zdCBpbnQgYjFbM10gPSB7IDAsIDEsIDEgfTsK
KyAgY29uc3QgaW50IGIyWzRdID0geyAwLCAxLCAyLCAzIH07CisgIEVYUEVDVF9GQUxTRShuYSA9
PSBOYXRpdmVBcnJheTxpbnQ+KGIxLCAzLCBSZWxhdGlvblRvU291cmNlUmVmZXJlbmNlKCkpKTsK
KyAgRVhQRUNUX0ZBTFNFKG5hID09IE5hdGl2ZUFycmF5PGludD4oYjIsIDQsIFJlbGF0aW9uVG9T
b3VyY2VDb3B5KCkpKTsKK30KKworVEVTVChOYXRpdmVBcnJheVRlc3QsIFdvcmtzRm9yVHdvRGlt
ZW5zaW9uYWxBcnJheSkgeworICBjb25zdCBjaGFyIGFbMl1bM10gPSB7ICJoaSIsICJsbyIgfTsK
KyAgTmF0aXZlQXJyYXk8Y2hhclszXT4gbmEoYSwgMiwgUmVsYXRpb25Ub1NvdXJjZVJlZmVyZW5j
ZSgpKTsKKyAgQVNTRVJUX0VRKDJVLCBuYS5zaXplKCkpOworICBFWFBFQ1RfRVEoYSwgbmEuYmVn
aW4oKSk7Cit9CisKKy8vIFRlc3RzIFNraXBQcmVmaXgoKS4KKworVEVTVChTa2lwUHJlZml4VGVz
dCwgU2tpcHNXaGVuUHJlZml4TWF0Y2hlcykgeworICBjb25zdCBjaGFyKiBjb25zdCBzdHIgPSAi
aGVsbG8iOworCisgIGNvbnN0IGNoYXIqIHAgPSBzdHI7CisgIEVYUEVDVF9UUlVFKFNraXBQcmVm
aXgoIiIsICZwKSk7CisgIEVYUEVDVF9FUShzdHIsIHApOworCisgIHAgPSBzdHI7CisgIEVYUEVD
VF9UUlVFKFNraXBQcmVmaXgoImhlbGwiLCAmcCkpOworICBFWFBFQ1RfRVEoc3RyICsgNCwgcCk7
Cit9CisKK1RFU1QoU2tpcFByZWZpeFRlc3QsIERvZXNOb3RTa2lwV2hlblByZWZpeERvZXNOb3RN
YXRjaCkgeworICBjb25zdCBjaGFyKiBjb25zdCBzdHIgPSAid29ybGQiOworCisgIGNvbnN0IGNo
YXIqIHAgPSBzdHI7CisgIEVYUEVDVF9GQUxTRShTa2lwUHJlZml4KCJXIiwgJnApKTsKKyAgRVhQ
RUNUX0VRKHN0ciwgcCk7CisKKyAgcCA9IHN0cjsKKyAgRVhQRUNUX0ZBTFNFKFNraXBQcmVmaXgo
IndvcmxkISIsICZwKSk7CisgIEVYUEVDVF9FUShzdHIsIHApOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZXRlc3QvdGVzdC9ndGVzdF94bWxfb3V0ZmlsZTFfdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90
ZXN0L2d0ZXN0X3htbF9vdXRmaWxlMV90ZXN0Xy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MzFjZWQ0OWQ0MTA4
NzYyOWRlOTI1NDRmMDU5Y2JkZWEyNzBiNWIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRl
c3QvdGVzdC9ndGVzdF94bWxfb3V0ZmlsZTFfdGVzdF8uY2MKQEAgLTAsMCArMSw0OSBAQAorLy8g
Q29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8K
Ky8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0
cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisv
LyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEF1dGhvcjog
a2VpdGgucmF5QGdtYWlsLmNvbSAoS2VpdGggUmF5KQorLy8KKy8vIGd0ZXN0X3htbF9vdXRmaWxl
MV90ZXN0XyB3cml0ZXMgc29tZSB4bWwgdmlhIFRlc3RQcm9wZXJ0eSB1c2VkIGJ5CisvLyBndGVz
dF94bWxfb3V0ZmlsZXNfdGVzdC5weQorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworY2xh
c3MgUHJvcGVydHlPbmUgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICB2
aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgUmVjb3JkUHJvcGVydHkoIlNldFVwUHJvcCIsIDEp
OworICB9CisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBSZWNvcmRQcm9wZXJ0eSgi
VGVhckRvd25Qcm9wIiwgMSk7CisgIH0KK307CisKK1RFU1RfRihQcm9wZXJ0eU9uZSwgVGVzdFNv
bWVQcm9wZXJ0aWVzKSB7CisgIFJlY29yZFByb3BlcnR5KCJUZXN0U29tZVByb3BlcnR5IiwgMSk7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRmaWxlMl90ZXN0
Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dGZpbGUyX3Rlc3RfLmNjCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjdiNDAwYjI3NjA1N2NmNjI0YjRkZWU2NDVkZTMzYTNjNDlmMGVlYzcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRmaWxlMl90ZXN0Xy5jYwpA
QCAtMCwwICsxLDQ5IEBACisvLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKy8vIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBt
ZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
Ly8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8g
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisvLworLy8gQXV0aG9yOiBrZWl0aC5yYXlAZ21haWwuY29tIChLZWl0aCBSYXkpCisvLwor
Ly8gZ3Rlc3RfeG1sX291dGZpbGUyX3Rlc3RfIHdyaXRlcyBzb21lIHhtbCB2aWEgVGVzdFByb3Bl
cnR5IHVzZWQgYnkKKy8vIGd0ZXN0X3htbF9vdXRmaWxlc190ZXN0LnB5CisKKyNpbmNsdWRlICJn
dGVzdC9ndGVzdC5oIgorCitjbGFzcyBQcm9wZXJ0eVR3byA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
IHsKKyBwcm90ZWN0ZWQ6CisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICBSZWNvcmRQcm9w
ZXJ0eSgiU2V0VXBQcm9wIiwgMik7CisgIH0KKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewor
ICAgIFJlY29yZFByb3BlcnR5KCJUZWFyRG93blByb3AiLCAyKTsKKyAgfQorfTsKKworVEVTVF9G
KFByb3BlcnR5VHdvLCBUZXN0U29tZVByb3BlcnRpZXMpIHsKKyAgUmVjb3JkUHJvcGVydHkoIlRl
c3RTb21lUHJvcGVydHkiLCAyKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rl
c3RfeG1sX291dGZpbGVzX3Rlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRm
aWxlc190ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyNGU0MzdlNmMxNzY3OGJkMmI2ZDI4YWQyYTQ3OTk4
MTAyNTkyYzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X3htbF9v
dXRmaWxlc190ZXN0LnB5CkBAIC0wLDAgKzEsMTMyIEBACisjIS91c3IvYmluL2VudiBweXRob24K
KyMKKyMgQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRp
b24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJVbml0IHRlc3QgZm9yIHRoZSBndGVzdF94bWxfb3V0
cHV0IG1vZHVsZS4iIiIKKworX19hdXRob3JfXyA9ICJrZWl0aC5yYXlAZ21haWwuY29tIChLZWl0
aCBSYXkpIgorCitpbXBvcnQgb3MKK2Zyb20geG1sLmRvbSBpbXBvcnQgbWluaWRvbSwgTm9kZQor
CitpbXBvcnQgZ3Rlc3RfdGVzdF91dGlscworaW1wb3J0IGd0ZXN0X3htbF90ZXN0X3V0aWxzCisK
KworR1RFU1RfT1VUUFVUX1NVQkRJUiA9ICJ4bWxfb3V0ZmlsZXMiCitHVEVTVF9PVVRQVVRfMV9U
RVNUID0gImd0ZXN0X3htbF9vdXRmaWxlMV90ZXN0XyIKK0dURVNUX09VVFBVVF8yX1RFU1QgPSAi
Z3Rlc3RfeG1sX291dGZpbGUyX3Rlc3RfIgorCitFWFBFQ1RFRF9YTUxfMSA9ICIiIjw/eG1sIHZl
cnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8dGVzdHN1aXRlcyB0ZXN0cz0iMSIgZmFp
bHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiIHRpbWVzdGFtcD0iKiIg
bmFtZT0iQWxsVGVzdHMiPgorICA8dGVzdHN1aXRlIG5hbWU9IlByb3BlcnR5T25lIiB0ZXN0cz0i
MSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgorICAgIDx0
ZXN0Y2FzZSBuYW1lPSJUZXN0U29tZVByb3BlcnRpZXMiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBj
bGFzc25hbWU9IlByb3BlcnR5T25lIiBTZXRVcFByb3A9IjEiIFRlc3RTb21lUHJvcGVydHk9IjEi
IFRlYXJEb3duUHJvcD0iMSIgLz4KKyAgPC90ZXN0c3VpdGU+Cis8L3Rlc3RzdWl0ZXM+CisiIiIK
KworRVhQRUNURURfWE1MXzIgPSAiIiI8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYt
OCI/PgorPHRlc3RzdWl0ZXMgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJy
b3JzPSIwIiB0aW1lPSIqIiB0aW1lc3RhbXA9IioiIG5hbWU9IkFsbFRlc3RzIj4KKyAgPHRlc3Rz
dWl0ZSBuYW1lPSJQcm9wZXJ0eVR3byIgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0i
MCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KKyAgICA8dGVzdGNhc2UgbmFtZT0iVGVzdFNvbWVQcm9w
ZXJ0aWVzIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJQcm9wZXJ0eVR3byIgU2V0
VXBQcm9wPSIyIiBUZXN0U29tZVByb3BlcnR5PSIyIiBUZWFyRG93blByb3A9IjIiIC8+CisgIDwv
dGVzdHN1aXRlPgorPC90ZXN0c3VpdGVzPgorIiIiCisKKworY2xhc3MgR1Rlc3RYTUxPdXRGaWxl
c1Rlc3QoZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMuR1Rlc3RYTUxUZXN0Q2FzZSk6CisgICIiIlVuaXQg
dGVzdCBmb3IgR29vZ2xlIFRlc3QncyBYTUwgb3V0cHV0IGZ1bmN0aW9uYWxpdHkuIiIiCisKKyAg
ZGVmIHNldFVwKHNlbGYpOgorICAgICMgV2Ugd2FudCB0aGUgdHJhaWxpbmcgJy8nIHRoYXQgdGhl
IGxhc3QgIiIgcHJvdmlkZXMgaW4gb3MucGF0aC5qb2luLCBmb3IKKyAgICAjIHRlbGxpbmcgR29v
Z2xlIFRlc3QgdG8gY3JlYXRlIGFuIG91dHB1dCBkaXJlY3RvcnkgaW5zdGVhZCBvZiBhIHNpbmds
ZSBmaWxlCisgICAgIyBmb3IgeG1sIG91dHB1dC4KKyAgICBzZWxmLm91dHB1dF9kaXJfID0gb3Mu
cGF0aC5qb2luKGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVtcERpcigpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR1RFU1RfT1VUUFVUX1NVQkRJUiwgIiIpCisgICAgc2VsZi5E
ZWxldGVGaWxlc0FuZERpcigpCisKKyAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgIHNlbGYuRGVs
ZXRlRmlsZXNBbmREaXIoKQorCisgIGRlZiBEZWxldGVGaWxlc0FuZERpcihzZWxmKToKKyAgICB0
cnk6CisgICAgICBvcy5yZW1vdmUob3MucGF0aC5qb2luKHNlbGYub3V0cHV0X2Rpcl8sIEdURVNU
X09VVFBVVF8xX1RFU1QgKyAiLnhtbCIpKQorICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICAgIHBh
c3MKKyAgICB0cnk6CisgICAgICBvcy5yZW1vdmUob3MucGF0aC5qb2luKHNlbGYub3V0cHV0X2Rp
cl8sIEdURVNUX09VVFBVVF8yX1RFU1QgKyAiLnhtbCIpKQorICAgIGV4Y2VwdCBvcy5lcnJvcjoK
KyAgICAgIHBhc3MKKyAgICB0cnk6CisgICAgICBvcy5ybWRpcihzZWxmLm91dHB1dF9kaXJfKQor
ICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICAgIHBhc3MKKworICBkZWYgdGVzdE91dGZpbGUxKHNl
bGYpOgorICAgIHNlbGYuX1Rlc3RPdXRGaWxlKEdURVNUX09VVFBVVF8xX1RFU1QsIEVYUEVDVEVE
X1hNTF8xKQorCisgIGRlZiB0ZXN0T3V0ZmlsZTIoc2VsZik6CisgICAgc2VsZi5fVGVzdE91dEZp
bGUoR1RFU1RfT1VUUFVUXzJfVEVTVCwgRVhQRUNURURfWE1MXzIpCisKKyAgZGVmIF9UZXN0T3V0
RmlsZShzZWxmLCB0ZXN0X25hbWUsIGV4cGVjdGVkX3htbCk6CisgICAgZ3Rlc3RfcHJvZ19wYXRo
ID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgodGVzdF9uYW1lKQorICAg
IGNvbW1hbmQgPSBbZ3Rlc3RfcHJvZ19wYXRoLCAiLS1ndGVzdF9vdXRwdXQ9eG1sOiVzIiAlIHNl
bGYub3V0cHV0X2Rpcl9dCisgICAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2Vzcyhjb21t
YW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya2luZ19kaXI9Z3Rl
c3RfdGVzdF91dGlscy5HZXRUZW1wRGlyKCkpCisgICAgc2VsZi5hc3NlcnRfKHAuZXhpdGVkKQor
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDAsIHAuZXhpdF9jb2RlKQorCisgICAgIyBUT0RPKHdhbkBn
b29nbGUuY29tKTogbGlidG9vbCBjYXVzZXMgdGhlIGJ1aWx0IHRlc3QgYmluYXJ5IHRvIGJlCisg
ICAgIyAgIG5hbWVkIGx0LWd0ZXN0X3htbF9vdXRmaWxlc190ZXN0XyBpbnN0ZWFkIG9mCisgICAg
IyAgIGd0ZXN0X3htbF9vdXRmaWxlc190ZXN0Xy4gIFRvIGFjY291bnQgZm9yIHRoaXMgcG9zc2li
aWxsaXR5LCB3ZQorICAgICMgICBhbGxvdyBib3RoIG5hbWVzIGluIHRoZSBmb2xsb3dpbmcgY29k
ZS4gIFdlIHNob3VsZCByZW1vdmUgdGhpcworICAgICMgICBoYWNrIHdoZW4gQ2hhbmRsZXIgQ2Fy
cnV0aCdzIGxpYnRvb2wgcmVwbGFjZW1lbnQgdG9vbCBpcyByZWFkeS4KKyAgICBvdXRwdXRfZmls
ZV9uYW1lMSA9IHRlc3RfbmFtZSArICIueG1sIgorICAgIG91dHB1dF9maWxlMSA9IG9zLnBhdGgu
am9pbihzZWxmLm91dHB1dF9kaXJfLCBvdXRwdXRfZmlsZV9uYW1lMSkKKyAgICBvdXRwdXRfZmls
ZV9uYW1lMiA9ICdsdC0nICsgb3V0cHV0X2ZpbGVfbmFtZTEKKyAgICBvdXRwdXRfZmlsZTIgPSBv
cy5wYXRoLmpvaW4oc2VsZi5vdXRwdXRfZGlyXywgb3V0cHV0X2ZpbGVfbmFtZTIpCisgICAgc2Vs
Zi5hc3NlcnRfKG9zLnBhdGguaXNmaWxlKG91dHB1dF9maWxlMSkgb3Igb3MucGF0aC5pc2ZpbGUo
b3V0cHV0X2ZpbGUyKSwKKyAgICAgICAgICAgICAgICAgb3V0cHV0X2ZpbGUxKQorCisgICAgZXhw
ZWN0ZWQgPSBtaW5pZG9tLnBhcnNlU3RyaW5nKGV4cGVjdGVkX3htbCkKKyAgICBpZiBvcy5wYXRo
LmlzZmlsZShvdXRwdXRfZmlsZTEpOgorICAgICAgYWN0dWFsID0gbWluaWRvbS5wYXJzZShvdXRw
dXRfZmlsZTEpCisgICAgZWxzZToKKyAgICAgIGFjdHVhbCA9IG1pbmlkb20ucGFyc2Uob3V0cHV0
X2ZpbGUyKQorICAgIHNlbGYuTm9ybWFsaXplWG1sKGFjdHVhbC5kb2N1bWVudEVsZW1lbnQpCisg
ICAgc2VsZi5Bc3NlcnRFcXVpdmFsZW50Tm9kZXMoZXhwZWN0ZWQuZG9jdW1lbnRFbGVtZW50LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbC5kb2N1bWVudEVsZW1lbnQpCisg
ICAgZXhwZWN0ZWQudW5saW5rKCkKKyAgICBhY3R1YWwudW5saW5rKCkKKworCitpZiBfX25hbWVf
XyA9PSAiX19tYWluX18iOgorICBvcy5lbnZpcm9uWyJHVEVTVF9TVEFDS19UUkFDRV9ERVBUSCJd
ID0gIjAiCisgIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVz
dC90ZXN0L2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0
ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmNkNTk3NTk5MWQ3NDM2NzI5
Y2Q4NmU2YzgyZDIzYzhmMzU1YThlYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rl
c3QvZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdC5weQpAQCAtMCwwICsxLDMwOCBAQAorIyEvdXNy
L2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDA2LCBHb29nbGUgSW5jLgorIyBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6
CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiVW5pdCB0ZXN0IGZvciB0
aGUgZ3Rlc3RfeG1sX291dHB1dCBtb2R1bGUiIiIKKworX19hdXRob3JfXyA9ICdlZWZhY21AZ21h
aWwuY29tIChTZWFuIE1jYWZlZSknCisKK2ltcG9ydCBkYXRldGltZQoraW1wb3J0IGVycm5vCitp
bXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHN5cworZnJvbSB4bWwuZG9tIGltcG9ydCBtaW5p
ZG9tLCBOb2RlCisKK2ltcG9ydCBndGVzdF90ZXN0X3V0aWxzCitpbXBvcnQgZ3Rlc3RfeG1sX3Rl
c3RfdXRpbHMKKworCitHVEVTVF9GSUxURVJfRkxBRyA9ICctLWd0ZXN0X2ZpbHRlcicKK0dURVNU
X0xJU1RfVEVTVFNfRkxBRyA9ICctLWd0ZXN0X2xpc3RfdGVzdHMnCitHVEVTVF9PVVRQVVRfRkxB
RyAgICAgICAgID0gIi0tZ3Rlc3Rfb3V0cHV0IgorR1RFU1RfREVGQVVMVF9PVVRQVVRfRklMRSA9
ICJ0ZXN0X2RldGFpbC54bWwiCitHVEVTVF9QUk9HUkFNX05BTUUgPSAiZ3Rlc3RfeG1sX291dHB1
dF91bml0dGVzdF8iCisKK1NVUFBPUlRTX1NUQUNLX1RSQUNFUyA9IEZhbHNlCisKK2lmIFNVUFBP
UlRTX1NUQUNLX1RSQUNFUzoKKyAgU1RBQ0tfVFJBQ0VfVEVNUExBVEUgPSAnXG5TdGFjayB0cmFj
ZTpcbionCitlbHNlOgorICBTVEFDS19UUkFDRV9URU1QTEFURSA9ICcnCisKK0VYUEVDVEVEX05P
Tl9FTVBUWV9YTUwgPSAiIiI8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pgor
PHRlc3RzdWl0ZXMgdGVzdHM9IjIzIiBmYWlsdXJlcz0iNCIgZGlzYWJsZWQ9IjIiIGVycm9ycz0i
MCIgdGltZT0iKiIgdGltZXN0YW1wPSIqIiBuYW1lPSJBbGxUZXN0cyIgYWRfaG9jX3Byb3BlcnR5
PSI0MiI+CisgIDx0ZXN0c3VpdGUgbmFtZT0iU3VjY2Vzc2Z1bFRlc3QiIHRlc3RzPSIxIiBmYWls
dXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiI+CisgICAgPHRlc3RjYXNl
IG5hbWU9IlN1Y2NlZWRzIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJTdWNjZXNz
ZnVsVGVzdCIvPgorICA8L3Rlc3RzdWl0ZT4KKyAgPHRlc3RzdWl0ZSBuYW1lPSJGYWlsZWRUZXN0
IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjEiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9Iioi
PgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJGYWlscyIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNz
bmFtZT0iRmFpbGVkVGVzdCI+CisgICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJndGVzdF94bWxfb3V0
cHV0X3VuaXR0ZXN0Xy5jYzoqJiN4MEE7ICAgICAgRXhwZWN0ZWQ6IDEmI3gwQTtUbyBiZSBlcXVh
bCB0bzogMiIgdHlwZT0iIj48IVtDREFUQVtndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoq
CisgICAgICBFeHBlY3RlZDogMQorVG8gYmUgZXF1YWwgdG86IDIlKHN0YWNrKXNdXT48L2ZhaWx1
cmU+CisgICAgPC90ZXN0Y2FzZT4KKyAgPC90ZXN0c3VpdGU+CisgIDx0ZXN0c3VpdGUgbmFtZT0i
TWl4ZWRSZXN1bHRUZXN0IiB0ZXN0cz0iMyIgZmFpbHVyZXM9IjEiIGRpc2FibGVkPSIxIiBlcnJv
cnM9IjAiIHRpbWU9IioiPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJTdWNjZWVkcyIgc3RhdHVzPSJy
dW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iTWl4ZWRSZXN1bHRUZXN0Ii8+CisgICAgPHRlc3RjYXNl
IG5hbWU9IkZhaWxzIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJNaXhlZFJlc3Vs
dFRlc3QiPgorICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iZ3Rlc3RfeG1sX291dHB1dF91bml0dGVz
dF8uY2M6KiYjeDBBOyAgICAgIEV4cGVjdGVkOiAxJiN4MEE7VG8gYmUgZXF1YWwgdG86IDIiIHR5
cGU9IiI+PCFbQ0RBVEFbZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KgorICAgICAgRXhw
ZWN0ZWQ6IDEKK1RvIGJlIGVxdWFsIHRvOiAyJShzdGFjaylzXV0+PC9mYWlsdXJlPgorICAgICAg
PGZhaWx1cmUgbWVzc2FnZT0iZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KiYjeDBBOyAg
ICAgIEV4cGVjdGVkOiAyJiN4MEE7VG8gYmUgZXF1YWwgdG86IDMiIHR5cGU9IiI+PCFbQ0RBVEFb
Z3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KgorICAgICAgRXhwZWN0ZWQ6IDIKK1RvIGJl
IGVxdWFsIHRvOiAzJShzdGFjaylzXV0+PC9mYWlsdXJlPgorICAgIDwvdGVzdGNhc2U+CisgICAg
PHRlc3RjYXNlIG5hbWU9IkRJU0FCTEVEX3Rlc3QiIHN0YXR1cz0ibm90cnVuIiB0aW1lPSIqIiBj
bGFzc25hbWU9Ik1peGVkUmVzdWx0VGVzdCIvPgorICA8L3Rlc3RzdWl0ZT4KKyAgPHRlc3RzdWl0
ZSBuYW1lPSJYbWxRdW90aW5nVGVzdCIgdGVzdHM9IjEiIGZhaWx1cmVzPSIxIiBkaXNhYmxlZD0i
MCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KKyAgICA8dGVzdGNhc2UgbmFtZT0iT3V0cHV0c0NEYXRh
IiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJYbWxRdW90aW5nVGVzdCI+CisgICAg
ICA8ZmFpbHVyZSBtZXNzYWdlPSJndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqJiN4MEE7
RmFpbGVkJiN4MEE7WE1MIG91dHB1dDogJmx0Oz94bWwgZW5jb2Rpbmc9JnF1b3Q7dXRmLTgmcXVv
dDsmZ3Q7Jmx0O3RvcCZndDsmbHQ7IVtDREFUQVtjZGF0YSB0ZXh0XV0mZ3Q7Jmx0Oy90b3AmZ3Q7
IiB0eXBlPSIiPjwhW0NEQVRBW2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjOioKK0ZhaWxl
ZAorWE1MIG91dHB1dDogPD94bWwgZW5jb2Rpbmc9InV0Zi04Ij48dG9wPjwhW0NEQVRBW2NkYXRh
IHRleHRdXT5dXSZndDs8IVtDREFUQVs8L3RvcD4lKHN0YWNrKXNdXT48L2ZhaWx1cmU+CisgICAg
PC90ZXN0Y2FzZT4KKyAgPC90ZXN0c3VpdGU+CisgIDx0ZXN0c3VpdGUgbmFtZT0iSW52YWxpZENo
YXJhY3RlcnNUZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjEiIGRpc2FibGVkPSIwIiBlcnJvcnM9
IjAiIHRpbWU9IioiPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJJbnZhbGlkQ2hhcmFjdGVyc0luTWVz
c2FnZSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iSW52YWxpZENoYXJhY3RlcnNU
ZXN0Ij4KKyAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9Imd0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3Rf
LmNjOiomI3gwQTtGYWlsZWQmI3gwQTtJbnZhbGlkIGNoYXJhY3RlcnMgaW4gYnJhY2tldHMgW10i
IHR5cGU9IiI+PCFbQ0RBVEFbZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KgorRmFpbGVk
CitJbnZhbGlkIGNoYXJhY3RlcnMgaW4gYnJhY2tldHMgW10lKHN0YWNrKXNdXT48L2ZhaWx1cmU+
CisgICAgPC90ZXN0Y2FzZT4KKyAgPC90ZXN0c3VpdGU+CisgIDx0ZXN0c3VpdGUgbmFtZT0iRGlz
YWJsZWRUZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIxIiBlcnJvcnM9IjAi
IHRpbWU9IioiPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJESVNBQkxFRF90ZXN0X25vdF9ydW4iIHN0
YXR1cz0ibm90cnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IkRpc2FibGVkVGVzdCIvPgorICA8L3Rl
c3RzdWl0ZT4KKyAgPHRlc3RzdWl0ZSBuYW1lPSJQcm9wZXJ0eVJlY29yZGluZ1Rlc3QiIHRlc3Rz
PSI0IiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiIgU2V0VXBU
ZXN0Q2FzZT0ieWVzIiBUZWFyRG93blRlc3RDYXNlPSJheWUiPgorICAgIDx0ZXN0Y2FzZSBuYW1l
PSJPbmVQcm9wZXJ0eSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iUHJvcGVydHlS
ZWNvcmRpbmdUZXN0IiBrZXlfMT0iMSIvPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJJbnRWYWx1ZWRQ
cm9wZXJ0eSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iUHJvcGVydHlSZWNvcmRp
bmdUZXN0IiBrZXlfaW50PSIxIi8+CisgICAgPHRlc3RjYXNlIG5hbWU9IlRocmVlUHJvcGVydGll
cyIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iUHJvcGVydHlSZWNvcmRpbmdUZXN0
IiBrZXlfMT0iMSIga2V5XzI9IjIiIGtleV8zPSIzIi8+CisgICAgPHRlc3RjYXNlIG5hbWU9IlR3
b1ZhbHVlc0Zvck9uZUtleVVzZXNMYXN0VmFsdWUiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFz
c25hbWU9IlByb3BlcnR5UmVjb3JkaW5nVGVzdCIga2V5XzE9IjIiLz4KKyAgPC90ZXN0c3VpdGU+
CisgIDx0ZXN0c3VpdGUgbmFtZT0iTm9GaXh0dXJlVGVzdCIgdGVzdHM9IjMiIGZhaWx1cmVzPSIw
IiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KKyAgICAgPHRlc3RjYXNlIG5hbWU9
IlJlY29yZFByb3BlcnR5IiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJOb0ZpeHR1
cmVUZXN0IiBrZXk9IjEiLz4KKyAgICAgPHRlc3RjYXNlIG5hbWU9IkV4dGVybmFsVXRpbGl0eVRo
YXRDYWxsc1JlY29yZEludFZhbHVlZFByb3BlcnR5IiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xh
c3NuYW1lPSJOb0ZpeHR1cmVUZXN0IiBrZXlfZm9yX3V0aWxpdHlfaW50PSIxIi8+CisgICAgIDx0
ZXN0Y2FzZSBuYW1lPSJFeHRlcm5hbFV0aWxpdHlUaGF0Q2FsbHNSZWNvcmRTdHJpbmdWYWx1ZWRQ
cm9wZXJ0eSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iTm9GaXh0dXJlVGVzdCIg
a2V5X2Zvcl91dGlsaXR5X3N0cmluZz0iMSIvPgorICA8L3Rlc3RzdWl0ZT4KKyAgPHRlc3RzdWl0
ZSBuYW1lPSJTaW5nbGUvVmFsdWVQYXJhbVRlc3QiIHRlc3RzPSI0IiBmYWlsdXJlcz0iMCIgZGlz
YWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiI+CisgICAgPHRlc3RjYXNlIG5hbWU9Ikhhc1Zh
bHVlUGFyYW1BdHRyaWJ1dGUvMCIgdmFsdWVfcGFyYW09IjMzIiBzdGF0dXM9InJ1biIgdGltZT0i
KiIgY2xhc3NuYW1lPSJTaW5nbGUvVmFsdWVQYXJhbVRlc3QiIC8+CisgICAgPHRlc3RjYXNlIG5h
bWU9Ikhhc1ZhbHVlUGFyYW1BdHRyaWJ1dGUvMSIgdmFsdWVfcGFyYW09IjQyIiBzdGF0dXM9InJ1
biIgdGltZT0iKiIgY2xhc3NuYW1lPSJTaW5nbGUvVmFsdWVQYXJhbVRlc3QiIC8+CisgICAgPHRl
c3RjYXNlIG5hbWU9IkFub3RoZXJUZXN0VGhhdEhhc1ZhbHVlUGFyYW1BdHRyaWJ1dGUvMCIgdmFs
dWVfcGFyYW09IjMzIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJTaW5nbGUvVmFs
dWVQYXJhbVRlc3QiIC8+CisgICAgPHRlc3RjYXNlIG5hbWU9IkFub3RoZXJUZXN0VGhhdEhhc1Zh
bHVlUGFyYW1BdHRyaWJ1dGUvMSIgdmFsdWVfcGFyYW09IjQyIiBzdGF0dXM9InJ1biIgdGltZT0i
KiIgY2xhc3NuYW1lPSJTaW5nbGUvVmFsdWVQYXJhbVRlc3QiIC8+CisgIDwvdGVzdHN1aXRlPgor
ICA8dGVzdHN1aXRlIG5hbWU9IlR5cGVkVGVzdC8wIiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRp
c2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJIYXNU
eXBlUGFyYW1BdHRyaWJ1dGUiIHR5cGVfcGFyYW09IioiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBj
bGFzc25hbWU9IlR5cGVkVGVzdC8wIiAvPgorICA8L3Rlc3RzdWl0ZT4KKyAgPHRlc3RzdWl0ZSBu
YW1lPSJUeXBlZFRlc3QvMSIgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJy
b3JzPSIwIiB0aW1lPSIqIj4KKyAgICA8dGVzdGNhc2UgbmFtZT0iSGFzVHlwZVBhcmFtQXR0cmli
dXRlIiB0eXBlX3BhcmFtPSIqIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJUeXBl
ZFRlc3QvMSIgLz4KKyAgPC90ZXN0c3VpdGU+CisgIDx0ZXN0c3VpdGUgbmFtZT0iU2luZ2xlL1R5
cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UvMCIgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxl
ZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KKyAgICA8dGVzdGNhc2UgbmFtZT0iSGFzVHlwZVBh
cmFtQXR0cmlidXRlIiB0eXBlX3BhcmFtPSIqIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3Nu
YW1lPSJTaW5nbGUvVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZS8wIiAvPgorICA8L3Rlc3RzdWl0
ZT4KKyAgPHRlc3RzdWl0ZSBuYW1lPSJTaW5nbGUvVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZS8x
IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9Iioi
PgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJIYXNUeXBlUGFyYW1BdHRyaWJ1dGUiIHR5cGVfcGFyYW09
IioiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlNpbmdsZS9UeXBlUGFyYW1ldGVy
aXplZFRlc3RDYXNlLzEiIC8+CisgIDwvdGVzdHN1aXRlPgorPC90ZXN0c3VpdGVzPiIiIiAlIHsn
c3RhY2snOiBTVEFDS19UUkFDRV9URU1QTEFURX0KKworRVhQRUNURURfRklMVEVSRURfVEVTVF9Y
TUwgPSAiIiI8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHRlc3RzdWl0
ZXMgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIq
IgorICAgICAgICAgICAgdGltZXN0YW1wPSIqIiBuYW1lPSJBbGxUZXN0cyIgYWRfaG9jX3Byb3Bl
cnR5PSI0MiI+CisgIDx0ZXN0c3VpdGUgbmFtZT0iU3VjY2Vzc2Z1bFRlc3QiIHRlc3RzPSIxIiBm
YWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiCisgICAgICAgICAgICAgZXJyb3JzPSIwIiB0aW1lPSIq
Ij4KKyAgICA8dGVzdGNhc2UgbmFtZT0iU3VjY2VlZHMiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBj
bGFzc25hbWU9IlN1Y2Nlc3NmdWxUZXN0Ii8+CisgIDwvdGVzdHN1aXRlPgorPC90ZXN0c3VpdGVz
PiIiIgorCitFWFBFQ1RFRF9FTVBUWV9YTUwgPSAiIiI8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29k
aW5nPSJVVEYtOCI/PgorPHRlc3RzdWl0ZXMgdGVzdHM9IjAiIGZhaWx1cmVzPSIwIiBkaXNhYmxl
ZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIgorICAgICAgICAgICAgdGltZXN0YW1wPSIqIiBuYW1l
PSJBbGxUZXN0cyI+Cis8L3Rlc3RzdWl0ZXM+IiIiCisKK0dURVNUX1BST0dSQU1fUEFUSCA9IGd0
ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKEdURVNUX1BST0dSQU1fTkFNRSkK
KworU1VQUE9SVFNfVFlQRURfVEVTVFMgPSAnVHlwZWRUZXN0JyBpbiBndGVzdF90ZXN0X3V0aWxz
LlN1YnByb2Nlc3MoCisgICAgW0dURVNUX1BST0dSQU1fUEFUSCwgR1RFU1RfTElTVF9URVNUU19G
TEFHXSwgY2FwdHVyZV9zdGRlcnI9RmFsc2UpLm91dHB1dAorCisKK2NsYXNzIEdUZXN0WE1MT3V0
cHV0VW5pdFRlc3QoZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMuR1Rlc3RYTUxUZXN0Q2FzZSk6CisgICIi
IgorICBVbml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0J3MgWE1MIG91dHB1dCBmdW5jdGlvbmFsaXR5
LgorICAiIiIKKworICAjIFRoaXMgdGVzdCBjdXJyZW50bHkgYnJlYWtzIG9uIHBsYXRmb3JtcyB0
aGF0IGRvIG5vdCBzdXBwb3J0IHR5cGVkIGFuZAorICAjIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0
cywgc28gd2UgZG9uJ3QgcnVuIGl0IHVuZGVyIHRoZW0uCisgIGlmIFNVUFBPUlRTX1RZUEVEX1RF
U1RTOgorICAgIGRlZiB0ZXN0Tm9uRW1wdHlYbWxPdXRwdXQoc2VsZik6CisgICAgICAiIiIKKyAg
ICAgIFJ1bnMgYSB0ZXN0IHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgYSBub24tZW1wdHkgWE1MIG91
dHB1dCwgYW5kCisgICAgICB0ZXN0cyB0aGF0IHRoZSBYTUwgb3V0cHV0IGlzIGV4cGVjdGVkLgor
ICAgICAgIiIiCisgICAgICBzZWxmLl9UZXN0WG1sT3V0cHV0KEdURVNUX1BST0dSQU1fTkFNRSwg
RVhQRUNURURfTk9OX0VNUFRZX1hNTCwgMSkKKworICBkZWYgdGVzdEVtcHR5WG1sT3V0cHV0KHNl
bGYpOgorICAgICIiIlZlcmlmaWVzIFhNTCBvdXRwdXQgZm9yIGEgR29vZ2xlIFRlc3QgYmluYXJ5
IHdpdGhvdXQgYWN0dWFsIHRlc3RzLgorCisgICAgUnVucyBhIHRlc3QgcHJvZ3JhbSB0aGF0IGdl
bmVyYXRlcyBhbiBlbXB0eSBYTUwgb3V0cHV0LCBhbmQKKyAgICB0ZXN0cyB0aGF0IHRoZSBYTUwg
b3V0cHV0IGlzIGV4cGVjdGVkLgorICAgICIiIgorCisgICAgc2VsZi5fVGVzdFhtbE91dHB1dCgn
Z3Rlc3Rfbm9fdGVzdF91bml0dGVzdCcsIEVYUEVDVEVEX0VNUFRZX1hNTCwgMCkKKworICBkZWYg
dGVzdFRpbWVzdGFtcFZhbHVlKHNlbGYpOgorICAgICIiIkNoZWNrcyB3aGV0aGVyIHRoZSB0aW1l
c3RhbXAgYXR0cmlidXRlIGluIHRoZSBYTUwgb3V0cHV0IGlzIHZhbGlkLgorCisgICAgUnVucyBh
IHRlc3QgcHJvZ3JhbSB0aGF0IGdlbmVyYXRlcyBhbiBlbXB0eSBYTUwgb3V0cHV0LCBhbmQgY2hl
Y2tzIGlmCisgICAgdGhlIHRpbWVzdGFtcCBhdHRyaWJ1dGUgaW4gdGhlIHRlc3RzdWl0ZXMgdGFn
IGlzIHZhbGlkLgorICAgICIiIgorICAgIGFjdHVhbCA9IHNlbGYuX0dldFhtbE91dHB1dCgnZ3Rl
c3Rfbm9fdGVzdF91bml0dGVzdCcsIFtdLCAwKQorICAgIGRhdGVfdGltZV9zdHIgPSBhY3R1YWwu
ZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZU5vZGUoJ3RpbWVzdGFtcCcpLnZhbHVlCisgICAg
IyBkYXRldGltZS5zdHJwdGltZSgpIGlzIG9ubHkgYXZhaWxhYmxlIGluIFB5dGhvbiAyLjUrIHNv
IHdlIGhhdmUgdG8KKyAgICAjIHBhcnNlIHRoZSBleHBlY3RlZCBkYXRldGltZSBtYW51YWxseS4K
KyAgICBtYXRjaCA9IHJlLm1hdGNoKHInKFxkKyktKFxkXGQpLShcZFxkKVQoXGRcZCk6KFxkXGQp
OihcZFxkKScsIGRhdGVfdGltZV9zdHIpCisgICAgc2VsZi5hc3NlcnRUcnVlKAorICAgICAgICBy
ZS5tYXRjaCwKKyAgICAgICAgJ1hNTCBkYXRldHRpbWUgc3RyaW5nICVzIGhhcyBpbmNvcnJlY3Qg
Zm9ybWF0JyAlIGRhdGVfdGltZV9zdHIpCisgICAgZGF0ZV90aW1lX2Zyb21feG1sID0gZGF0ZXRp
bWUuZGF0ZXRpbWUoCisgICAgICAgIHllYXI9aW50KG1hdGNoLmdyb3VwKDEpKSwgbW9udGg9aW50
KG1hdGNoLmdyb3VwKDIpKSwKKyAgICAgICAgZGF5PWludChtYXRjaC5ncm91cCgzKSksIGhvdXI9
aW50KG1hdGNoLmdyb3VwKDQpKSwKKyAgICAgICAgbWludXRlPWludChtYXRjaC5ncm91cCg1KSks
IHNlY29uZD1pbnQobWF0Y2guZ3JvdXAoNikpKQorCisgICAgdGltZV9kZWx0YSA9IGFicyhkYXRl
dGltZS5kYXRldGltZS5ub3coKSAtIGRhdGVfdGltZV9mcm9tX3htbCkKKyAgICAjIHRpbWVzdGFt
cCB2YWx1ZSBzaG91bGQgYmUgbmVhciB0aGUgY3VycmVudCBsb2NhbCB0aW1lCisgICAgc2VsZi5h
c3NlcnRUcnVlKHRpbWVfZGVsdGEgPCBkYXRldGltZS50aW1lZGVsdGEoc2Vjb25kcz02MDApLAor
ICAgICAgICAgICAgICAgICAgICAndGltZV9kZWx0YSBpcyAlcycgJSB0aW1lX2RlbHRhKQorICAg
IGFjdHVhbC51bmxpbmsoKQorCisgIGRlZiB0ZXN0RGVmYXVsdE91dHB1dEZpbGUoc2VsZik6Cisg
ICAgIiIiCisgICAgQ29uZmlybXMgdGhhdCBHb29nbGUgVGVzdCBwcm9kdWNlcyBhbiBYTUwgb3V0
cHV0IGZpbGUgd2l0aCB0aGUgZXhwZWN0ZWQKKyAgICBkZWZhdWx0IG5hbWUgaWYgbm8gbmFtZSBp
cyBleHBsaWNpdGx5IHNwZWNpZmllZC4KKyAgICAiIiIKKyAgICBvdXRwdXRfZmlsZSA9IG9zLnBh
dGguam9pbihndGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHVEVTVF9ERUZBVUxUX09VVFBVVF9GSUxFKQorICAgIGd0ZXN0X3Byb2df
cGF0aCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKAorICAgICAgICAn
Z3Rlc3Rfbm9fdGVzdF91bml0dGVzdCcpCisgICAgdHJ5OgorICAgICAgb3MucmVtb3ZlKG91dHB1
dF9maWxlKQorICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgZSA9IHN5cy5leGNfaW5mbygpWzFd
CisgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVOT0VOVDoKKyAgICAgICAgcmFpc2UKKworICAg
IHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoCisgICAgICAgIFtndGVzdF9wcm9nX3Bh
dGgsICclcz14bWwnICUgR1RFU1RfT1VUUFVUX0ZMQUddLAorICAgICAgICB3b3JraW5nX2Rpcj1n
dGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSkKKyAgICBzZWxmLmFzc2VydF8ocC5leGl0ZWQp
CisgICAgc2VsZi5hc3NlcnRFcXVhbHMoMCwgcC5leGl0X2NvZGUpCisgICAgc2VsZi5hc3NlcnRf
KG9zLnBhdGguaXNmaWxlKG91dHB1dF9maWxlKSkKKworICBkZWYgdGVzdFN1cHByZXNzZWRYbWxP
dXRwdXQoc2VsZik6CisgICAgIiIiCisgICAgVGVzdHMgdGhhdCBubyBYTUwgZmlsZSBpcyBnZW5l
cmF0ZWQgaWYgdGhlIGRlZmF1bHQgWE1MIGxpc3RlbmVyIGlzCisgICAgc2h1dCBkb3duIGJlZm9y
ZSBSVU5fQUxMX1RFU1RTIGlzIGludm9rZWQuCisgICAgIiIiCisKKyAgICB4bWxfcGF0aCA9IG9z
LnBhdGguam9pbihndGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHVEVTVF9QUk9HUkFNX05BTUUgKyAnb3V0LnhtbCcpCisgICAgaWYgb3Mu
cGF0aC5pc2ZpbGUoeG1sX3BhdGgpOgorICAgICAgb3MucmVtb3ZlKHhtbF9wYXRoKQorCisgICAg
Y29tbWFuZCA9IFtHVEVTVF9QUk9HUkFNX1BBVEgsCisgICAgICAgICAgICAgICAnJXM9eG1sOiVz
JyAlIChHVEVTVF9PVVRQVVRfRkxBRywgeG1sX3BhdGgpLAorICAgICAgICAgICAgICAgJy0tc2h1
dF9kb3duX3htbCddCisgICAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2Vzcyhjb21tYW5k
KQorICAgIGlmIHAudGVybWluYXRlZF9ieV9zaWduYWw6CisgICAgICAjIHAuc2lnbmFsIGlzIGF2
YWxhYmxlIG9ubHkgaWYgcC50ZXJtaW5hdGVkX2J5X3NpZ25hbCBpcyBUcnVlLgorICAgICAgc2Vs
Zi5hc3NlcnRGYWxzZSgKKyAgICAgICAgICBwLnRlcm1pbmF0ZWRfYnlfc2lnbmFsLAorICAgICAg
ICAgICclcyB3YXMga2lsbGVkIGJ5IHNpZ25hbCAlZCcgJSAoR1RFU1RfUFJPR1JBTV9OQU1FLCBw
LnNpZ25hbCkpCisgICAgZWxzZToKKyAgICAgIHNlbGYuYXNzZXJ0XyhwLmV4aXRlZCkKKyAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKDEsIHAuZXhpdF9jb2RlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIiclcycgZXhpdGVkIHdpdGggY29kZSAlcywgd2hpY2ggZG9lc24ndCBtYXRjaCAiCisgICAg
ICAgICAgICAgICAgICAgICAgICAndGhlIGV4cGVjdGVkIGV4aXQgY29kZSAlcy4nCisgICAgICAg
ICAgICAgICAgICAgICAgICAlIChjb21tYW5kLCBwLmV4aXRfY29kZSwgMSkpCisKKyAgICBzZWxm
LmFzc2VydF8obm90IG9zLnBhdGguaXNmaWxlKHhtbF9wYXRoKSkKKworICBkZWYgdGVzdEZpbHRl
cmVkVGVzdFhtbE91dHB1dChzZWxmKToKKyAgICAiIiJWZXJpZmllcyBYTUwgb3V0cHV0IHdoZW4g
YSBmaWx0ZXIgaXMgYXBwbGllZC4KKworICAgIFJ1bnMgYSB0ZXN0IHByb2dyYW0gdGhhdCBleGVj
dXRlcyBvbmx5IHNvbWUgdGVzdHMgYW5kIHZlcmlmaWVzIHRoYXQKKyAgICBub24tc2VsZWN0ZWQg
dGVzdHMgZG8gbm90IHNob3cgdXAgaW4gdGhlIFhNTCBvdXRwdXQuCisgICAgIiIiCisKKyAgICBz
ZWxmLl9UZXN0WG1sT3V0cHV0KEdURVNUX1BST0dSQU1fTkFNRSwgRVhQRUNURURfRklMVEVSRURf
VEVTVF9YTUwsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICBleHRyYV9hcmdzPVsnJXM9U3Vj
Y2Vzc2Z1bFRlc3QuKicgJSBHVEVTVF9GSUxURVJfRkxBR10pCisKKyAgZGVmIF9HZXRYbWxPdXRw
dXQoc2VsZiwgZ3Rlc3RfcHJvZ19uYW1lLCBleHRyYV9hcmdzLCBleHBlY3RlZF9leGl0X2NvZGUp
OgorICAgICIiIgorICAgIFJldHVybnMgdGhlIHhtbCBvdXRwdXQgZ2VuZXJhdGVkIGJ5IHJ1bm5p
bmcgdGhlIHByb2dyYW0gZ3Rlc3RfcHJvZ19uYW1lLgorICAgIEZ1cnRoZXJtb3JlLCB0aGUgcHJv
Z3JhbSdzIGV4aXQgY29kZSBtdXN0IGJlIGV4cGVjdGVkX2V4aXRfY29kZS4KKyAgICAiIiIKKyAg
ICB4bWxfcGF0aCA9IG9zLnBhdGguam9pbihndGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBndGVzdF9wcm9nX25hbWUgKyAnb3V0LnhtbCcp
CisgICAgZ3Rlc3RfcHJvZ19wYXRoID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJs
ZVBhdGgoZ3Rlc3RfcHJvZ19uYW1lKQorCisgICAgY29tbWFuZCA9IChbZ3Rlc3RfcHJvZ19wYXRo
LCAnJXM9eG1sOiVzJyAlIChHVEVTVF9PVVRQVVRfRkxBRywgeG1sX3BhdGgpXSArCisgICAgICAg
ICAgICAgICBleHRyYV9hcmdzKQorICAgIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3Mo
Y29tbWFuZCkKKyAgICBpZiBwLnRlcm1pbmF0ZWRfYnlfc2lnbmFsOgorICAgICAgc2VsZi5hc3Nl
cnRfKEZhbHNlLAorICAgICAgICAgICAgICAgICAgICclcyB3YXMga2lsbGVkIGJ5IHNpZ25hbCAl
ZCcgJSAoZ3Rlc3RfcHJvZ19uYW1lLCBwLnNpZ25hbCkpCisgICAgZWxzZToKKyAgICAgIHNlbGYu
YXNzZXJ0XyhwLmV4aXRlZCkKKyAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cGVjdGVkX2V4aXRf
Y29kZSwgcC5leGl0X2NvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAiJyVzJyBleGl0ZWQg
d2l0aCBjb2RlICVzLCB3aGljaCBkb2Vzbid0IG1hdGNoICIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICd0aGUgZXhwZWN0ZWQgZXhpdCBjb2RlICVzLicKKyAgICAgICAgICAgICAgICAgICAgICAg
ICUgKGNvbW1hbmQsIHAuZXhpdF9jb2RlLCBleHBlY3RlZF9leGl0X2NvZGUpKQorICAgIGFjdHVh
bCA9IG1pbmlkb20ucGFyc2UoeG1sX3BhdGgpCisgICAgcmV0dXJuIGFjdHVhbAorCisgIGRlZiBf
VGVzdFhtbE91dHB1dChzZWxmLCBndGVzdF9wcm9nX25hbWUsIGV4cGVjdGVkX3htbCwKKyAgICAg
ICAgICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZSwgZXh0cmFfYXJncz1Ob25lKToKKyAg
ICAiIiIKKyAgICBBc3NlcnRzIHRoYXQgdGhlIFhNTCBkb2N1bWVudCBnZW5lcmF0ZWQgYnkgcnVu
bmluZyB0aGUgcHJvZ3JhbQorICAgIGd0ZXN0X3Byb2dfbmFtZSBtYXRjaGVzIGV4cGVjdGVkX3ht
bCwgYSBzdHJpbmcgY29udGFpbmluZyBhbm90aGVyCisgICAgWE1MIGRvY3VtZW50LiAgRnVydGhl
cm1vcmUsIHRoZSBwcm9ncmFtJ3MgZXhpdCBjb2RlIG11c3QgYmUKKyAgICBleHBlY3RlZF9leGl0
X2NvZGUuCisgICAgIiIiCisKKyAgICBhY3R1YWwgPSBzZWxmLl9HZXRYbWxPdXRwdXQoZ3Rlc3Rf
cHJvZ19uYW1lLCBleHRyYV9hcmdzIG9yIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBleHBlY3RlZF9leGl0X2NvZGUpCisgICAgZXhwZWN0ZWQgPSBtaW5pZG9tLnBhcnNlU3Ry
aW5nKGV4cGVjdGVkX3htbCkKKyAgICBzZWxmLk5vcm1hbGl6ZVhtbChhY3R1YWwuZG9jdW1lbnRF
bGVtZW50KQorICAgIHNlbGYuQXNzZXJ0RXF1aXZhbGVudE5vZGVzKGV4cGVjdGVkLmRvY3VtZW50
RWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWwuZG9jdW1lbnRF
bGVtZW50KQorICAgIGV4cGVjdGVkLnVubGluaygpCisgICAgYWN0dWFsLnVubGluaygpCisKKwor
aWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgb3MuZW52aXJvblsnR1RFU1RfU1RBQ0tfVFJB
Q0VfREVQVEgnXSA9ICcxJworICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0
ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2MKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDhiODc3
MWI1MjQ2YzE0MWY0Y2RiYTBkOWZlOGEyZGM5YTZlNzc5YQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2MKQEAgLTAsMCArMSwx
ODEgQEAKKy8vIENvcHlyaWdodCAyMDA2LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisv
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8v
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworLy8g
QXV0aG9yOiBlZWZhY21AZ21haWwuY29tIChTZWFuIE1jYWZlZSkKKworLy8gVW5pdCB0ZXN0IGZv
ciBHb29nbGUgVGVzdCBYTUwgb3V0cHV0LgorLy8KKy8vIEEgdXNlciBjYW4gc3BlY2lmeSBYTUwg
b3V0cHV0IGluIGEgR29vZ2xlIFRlc3QgcHJvZ3JhbSB0byBydW4gdmlhCisvLyBlaXRoZXIgdGhl
IEdURVNUX09VVFBVVCBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciB0aGUgLS1ndGVzdF9vdXRwdXQK
Ky8vIGZsYWcuICBUaGlzIGlzIHVzZWQgZm9yIHRlc3Rpbmcgc3VjaCBmdW5jdGlvbmFsaXR5Lgor
Ly8KKy8vIFRoaXMgcHJvZ3JhbSB3aWxsIGJlIGludm9rZWQgZnJvbSBhIFB5dGhvbiB1bml0IHRl
c3QuICBEb24ndCBydW4gaXQKKy8vIGRpcmVjdGx5LgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qu
aCIKKwordXNpbmcgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdDsKK3VzaW5nIDo6dGVzdGluZzo6
VGVzdEV2ZW50TGlzdGVuZXJzOwordXNpbmcgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtOwordXNp
bmcgOjp0ZXN0aW5nOjpVbml0VGVzdDsKK3VzaW5nIDo6dGVzdGluZzo6VGVzdDsKK3VzaW5nIDo6
dGVzdGluZzo6VmFsdWVzOworCitjbGFzcyBTdWNjZXNzZnVsVGVzdCA6IHB1YmxpYyBUZXN0IHsK
K307CisKK1RFU1RfRihTdWNjZXNzZnVsVGVzdCwgU3VjY2VlZHMpIHsKKyAgU1VDQ0VFRCgpIDw8
ICJUaGlzIGlzIGEgc3VjY2Vzcy4iOworICBBU1NFUlRfRVEoMSwgMSk7Cit9CisKK2NsYXNzIEZh
aWxlZFRlc3QgOiBwdWJsaWMgVGVzdCB7Cit9OworCitURVNUX0YoRmFpbGVkVGVzdCwgRmFpbHMp
IHsKKyAgQVNTRVJUX0VRKDEsIDIpOworfQorCitjbGFzcyBEaXNhYmxlZFRlc3QgOiBwdWJsaWMg
VGVzdCB7Cit9OworCitURVNUX0YoRGlzYWJsZWRUZXN0LCBESVNBQkxFRF90ZXN0X25vdF9ydW4p
IHsKKyAgRkFJTCgpIDw8ICJVbmV4cGVjdGVkIGZhaWx1cmU6IERpc2FibGVkIHRlc3Qgc2hvdWxk
IG5vdCBiZSBydW4iOworfQorCitURVNUKE1peGVkUmVzdWx0VGVzdCwgU3VjY2VlZHMpIHsKKyAg
RVhQRUNUX0VRKDEsIDEpOworICBBU1NFUlRfRVEoMSwgMSk7Cit9CisKK1RFU1QoTWl4ZWRSZXN1
bHRUZXN0LCBGYWlscykgeworICBFWFBFQ1RfRVEoMSwgMik7CisgIEFTU0VSVF9FUSgyLCAzKTsK
K30KKworVEVTVChNaXhlZFJlc3VsdFRlc3QsIERJU0FCTEVEX3Rlc3QpIHsKKyAgRkFJTCgpIDw8
ICJVbmV4cGVjdGVkIGZhaWx1cmU6IERpc2FibGVkIHRlc3Qgc2hvdWxkIG5vdCBiZSBydW4iOwor
fQorCitURVNUKFhtbFF1b3RpbmdUZXN0LCBPdXRwdXRzQ0RhdGEpIHsKKyAgRkFJTCgpIDw8ICJY
TUwgb3V0cHV0OiAiCisgICAgICAgICAgICAiPD94bWwgZW5jb2Rpbmc9XCJ1dGYtOFwiPjx0b3A+
PCFbQ0RBVEFbY2RhdGEgdGV4dF1dPjwvdG9wPiI7Cit9CisKKy8vIEhlbHBzIHRvIHRlc3QgdGhh
dCBpbnZhbGlkIGNoYXJhY3RlcnMgcHJvZHVjZWQgYnkgdGVzdCBjb2RlIGRvIG5vdCBtYWtlCisv
LyBpdCBpbnRvIHRoZSBYTUwgZmlsZS4KK1RFU1QoSW52YWxpZENoYXJhY3RlcnNUZXN0LCBJbnZh
bGlkQ2hhcmFjdGVyc0luTWVzc2FnZSkgeworICBGQUlMKCkgPDwgIkludmFsaWQgY2hhcmFjdGVy
cyBpbiBicmFja2V0cyBbXHgxXHgyXSI7Cit9CisKK2NsYXNzIFByb3BlcnR5UmVjb3JkaW5nVGVz
dCA6IHB1YmxpYyBUZXN0IHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2Uo
KSB7IFJlY29yZFByb3BlcnR5KCJTZXRVcFRlc3RDYXNlIiwgInllcyIpOyB9CisgIHN0YXRpYyB2
b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7IFJlY29yZFByb3BlcnR5KCJUZWFyRG93blRlc3RDYXNl
IiwgImF5ZSIpOyB9Cit9OworCitURVNUX0YoUHJvcGVydHlSZWNvcmRpbmdUZXN0LCBPbmVQcm9w
ZXJ0eSkgeworICBSZWNvcmRQcm9wZXJ0eSgia2V5XzEiLCAiMSIpOworfQorCitURVNUX0YoUHJv
cGVydHlSZWNvcmRpbmdUZXN0LCBJbnRWYWx1ZWRQcm9wZXJ0eSkgeworICBSZWNvcmRQcm9wZXJ0
eSgia2V5X2ludCIsIDEpOworfQorCitURVNUX0YoUHJvcGVydHlSZWNvcmRpbmdUZXN0LCBUaHJl
ZVByb3BlcnRpZXMpIHsKKyAgUmVjb3JkUHJvcGVydHkoImtleV8xIiwgIjEiKTsKKyAgUmVjb3Jk
UHJvcGVydHkoImtleV8yIiwgIjIiKTsKKyAgUmVjb3JkUHJvcGVydHkoImtleV8zIiwgIjMiKTsK
K30KKworVEVTVF9GKFByb3BlcnR5UmVjb3JkaW5nVGVzdCwgVHdvVmFsdWVzRm9yT25lS2V5VXNl
c0xhc3RWYWx1ZSkgeworICBSZWNvcmRQcm9wZXJ0eSgia2V5XzEiLCAiMSIpOworICBSZWNvcmRQ
cm9wZXJ0eSgia2V5XzEiLCAiMiIpOworfQorCitURVNUKE5vRml4dHVyZVRlc3QsIFJlY29yZFBy
b3BlcnR5KSB7CisgIFJlY29yZFByb3BlcnR5KCJrZXkiLCAiMSIpOworfQorCit2b2lkIEV4dGVy
bmFsVXRpbGl0eVRoYXRDYWxsc1JlY29yZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXks
IGludCB2YWx1ZSkgeworICB0ZXN0aW5nOjpUZXN0OjpSZWNvcmRQcm9wZXJ0eShrZXksIHZhbHVl
KTsKK30KKwordm9pZCBFeHRlcm5hbFV0aWxpdHlUaGF0Q2FsbHNSZWNvcmRQcm9wZXJ0eShjb25z
dCBzdGQ6OnN0cmluZyYga2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUpIHsKKyAgdGVzdGluZzo6VGVzdDo6UmVj
b3JkUHJvcGVydHkoa2V5LCB2YWx1ZSk7Cit9CisKK1RFU1QoTm9GaXh0dXJlVGVzdCwgRXh0ZXJu
YWxVdGlsaXR5VGhhdENhbGxzUmVjb3JkSW50VmFsdWVkUHJvcGVydHkpIHsKKyAgRXh0ZXJuYWxV
dGlsaXR5VGhhdENhbGxzUmVjb3JkUHJvcGVydHkoImtleV9mb3JfdXRpbGl0eV9pbnQiLCAxKTsK
K30KKworVEVTVChOb0ZpeHR1cmVUZXN0LCBFeHRlcm5hbFV0aWxpdHlUaGF0Q2FsbHNSZWNvcmRT
dHJpbmdWYWx1ZWRQcm9wZXJ0eSkgeworICBFeHRlcm5hbFV0aWxpdHlUaGF0Q2FsbHNSZWNvcmRQ
cm9wZXJ0eSgia2V5X2Zvcl91dGlsaXR5X3N0cmluZyIsICIxIik7Cit9CisKKy8vIFZlcmlmaWVz
IHRoYXQgdGhlIHRlc3QgcGFyYW1ldGVyIHZhbHVlIGlzIG91dHB1dCBpbiB0aGUgJ3ZhbHVlX3Bh
cmFtJworLy8gWE1MIGF0dHJpYnV0ZSBmb3IgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KK2Ns
YXNzIFZhbHVlUGFyYW1UZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08aW50PiB7fTsKK1RFU1Rf
UChWYWx1ZVBhcmFtVGVzdCwgSGFzVmFsdWVQYXJhbUF0dHJpYnV0ZSkge30KK1RFU1RfUChWYWx1
ZVBhcmFtVGVzdCwgQW5vdGhlclRlc3RUaGF0SGFzVmFsdWVQYXJhbUF0dHJpYnV0ZSkge30KK0lO
U1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFNpbmdsZSwgVmFsdWVQYXJhbVRlc3QsIFZhbHVlcygzMywg
NDIpKTsKKworI2lmIEdURVNUX0hBU19UWVBFRF9URVNUCisvLyBWZXJpZmllcyB0aGF0IHRoZSB0
eXBlIHBhcmFtZXRlciBuYW1lIGlzIG91dHB1dCBpbiB0aGUgJ3R5cGVfcGFyYW0nCisvLyBYTUwg
YXR0cmlidXRlIGZvciB0eXBlZCB0ZXN0cy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBU
eXBlZFRlc3QgOiBwdWJsaWMgVGVzdCB7fTsKK3R5cGVkZWYgdGVzdGluZzo6VHlwZXM8aW50LCBs
b25nPiBUeXBlZFRlc3RUeXBlczsKK1RZUEVEX1RFU1RfQ0FTRShUeXBlZFRlc3QsIFR5cGVkVGVz
dFR5cGVzKTsKK1RZUEVEX1RFU1QoVHlwZWRUZXN0LCBIYXNUeXBlUGFyYW1BdHRyaWJ1dGUpIHt9
CisjZW5kaWYKKworI2lmIEdURVNUX0hBU19UWVBFRF9URVNUX1AKKy8vIFZlcmlmaWVzIHRoYXQg
dGhlIHR5cGUgcGFyYW1ldGVyIG5hbWUgaXMgb3V0cHV0IGluIHRoZSAndHlwZV9wYXJhbScKKy8v
IFhNTCBhdHRyaWJ1dGUgZm9yIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPiBjbGFzcyBUeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlIDogcHVibGljIFRlc3Qg
e307CitUWVBFRF9URVNUX0NBU0VfUChUeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlKTsKK1RZUEVE
X1RFU1RfUChUeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlLCBIYXNUeXBlUGFyYW1BdHRyaWJ1dGUp
IHt9CitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChUeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNl
LCBIYXNUeXBlUGFyYW1BdHRyaWJ1dGUpOwordHlwZWRlZiB0ZXN0aW5nOjpUeXBlczxpbnQsIGxv
bmc+IFR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2VUeXBlczsKK0lOU1RBTlRJQVRFX1RZUEVEX1RF
U1RfQ0FTRV9QKFNpbmdsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVQYXJh
bWV0ZXJpemVkVGVzdENhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlUGFy
YW1ldGVyaXplZFRlc3RDYXNlVHlwZXMpOworI2VuZGlmCisKK2ludCBtYWluKGludCBhcmdjLCBj
aGFyKiogYXJndikgeworICBJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisKKyAgaWYgKGFy
Z2MgPiAxICYmIHN0cmNtcChhcmd2WzFdLCAiLS1zaHV0X2Rvd25feG1sIikgPT0gMCkgeworICAg
IFRlc3RFdmVudExpc3RlbmVycyYgbGlzdGVuZXJzID0gVW5pdFRlc3Q6OkdldEluc3RhbmNlKCkt
Pmxpc3RlbmVycygpOworICAgIGRlbGV0ZSBsaXN0ZW5lcnMuUmVsZWFzZShsaXN0ZW5lcnMuZGVm
YXVsdF94bWxfZ2VuZXJhdG9yKCkpOworICB9CisgIHRlc3Rpbmc6OlRlc3Q6OlJlY29yZFByb3Bl
cnR5KCJhZF9ob2NfcHJvcGVydHkiLCAiNDIiKTsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMucHkg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X3htbF90ZXN0X3V0aWxzLnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0
MTk1NmI1NGRkZmZmZGM3Y2ZlOGNiY2EzZjBkOWIxNDljMmRiMjYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X3htbF90ZXN0X3V0aWxzLnB5CkBAIC0wLDAgKzEsMTk0
IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMDYsIEdvb2dsZSBJ
bmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJVbml0
IHRlc3QgdXRpbGl0aWVzIGZvciBndGVzdF94bWxfb3V0cHV0IiIiCisKK19fYXV0aG9yX18gPSAn
ZWVmYWNtQGdtYWlsLmNvbSAoU2VhbiBNY2FmZWUpJworCitpbXBvcnQgcmUKK2Zyb20geG1sLmRv
bSBpbXBvcnQgbWluaWRvbSwgTm9kZQorCitpbXBvcnQgZ3Rlc3RfdGVzdF91dGlscworCisKK0dU
RVNUX09VVFBVVF9GTEFHICAgICAgICAgPSAnLS1ndGVzdF9vdXRwdXQnCitHVEVTVF9ERUZBVUxU
X09VVFBVVF9GSUxFID0gJ3Rlc3RfZGV0YWlsLnhtbCcKKworY2xhc3MgR1Rlc3RYTUxUZXN0Q2Fz
ZShndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKKyAgIiIiCisgIEJhc2UgY2xhc3MgZm9yIHRl
c3RzIG9mIEdvb2dsZSBUZXN0J3MgWE1MIG91dHB1dCBmdW5jdGlvbmFsaXR5LgorICAiIiIKKwor
CisgIGRlZiBBc3NlcnRFcXVpdmFsZW50Tm9kZXMoc2VsZiwgZXhwZWN0ZWRfbm9kZSwgYWN0dWFs
X25vZGUpOgorICAgICIiIgorICAgIEFzc2VydHMgdGhhdCBhY3R1YWxfbm9kZSAoYSBET00gbm9k
ZSBvYmplY3QpIGlzIGVxdWl2YWxlbnQgdG8KKyAgICBleHBlY3RlZF9ub2RlIChhbm90aGVyIERP
TSBub2RlIG9iamVjdCksIGluIHRoYXQgZWl0aGVyIGJvdGggb2YKKyAgICB0aGVtIGFyZSBDREFU
QSBub2RlcyBhbmQgaGF2ZSB0aGUgc2FtZSB2YWx1ZSwgb3IgYm90aCBhcmUgRE9NCisgICAgZWxl
bWVudHMgYW5kIGFjdHVhbF9ub2RlIG1lZXRzIGFsbCBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnM6CisKKyAgICAqICBJdCBoYXMgdGhlIHNhbWUgdGFnIG5hbWUgYXMgZXhwZWN0ZWRfbm9kZS4K
KyAgICAqICBJdCBoYXMgdGhlIHNhbWUgc2V0IG9mIGF0dHJpYnV0ZXMgYXMgZXhwZWN0ZWRfbm9k
ZSwgZWFjaCB3aXRoCisgICAgICAgdGhlIHNhbWUgdmFsdWUgYXMgdGhlIGNvcnJlc3BvbmRpbmcg
YXR0cmlidXRlIG9mIGV4cGVjdGVkX25vZGUuCisgICAgICAgRXhjZXB0aW9ucyBhcmUgYW55IGF0
dHJpYnV0ZSBuYW1lZCAidGltZSIsIHdoaWNoIG5lZWRzIG9ubHkgYmUKKyAgICAgICBjb252ZXJ0
aWJsZSB0byBhIGZsb2F0aW5nLXBvaW50IG51bWJlciBhbmQgYW55IGF0dHJpYnV0ZSBuYW1lZAor
ICAgICAgICJ0eXBlX3BhcmFtIiB3aGljaCBvbmx5IGhhcyB0byBiZSBub24tZW1wdHkuCisgICAg
KiAgSXQgaGFzIGFuIGVxdWl2YWxlbnQgc2V0IG9mIGNoaWxkIG5vZGVzIChpbmNsdWRpbmcgZWxl
bWVudHMgYW5kCisgICAgICAgQ0RBVEEgc2VjdGlvbnMpIGFzIGV4cGVjdGVkX25vZGUuICBOb3Rl
IHRoYXQgd2UgaWdub3JlIHRoZQorICAgICAgIG9yZGVyIG9mIHRoZSBjaGlsZHJlbiBhcyB0aGV5
IGFyZSBub3QgZ3VhcmFudGVlZCB0byBiZSBpbiBhbnkKKyAgICAgICBwYXJ0aWN1bGFyIG9yZGVy
LgorICAgICIiIgorCisgICAgaWYgZXhwZWN0ZWRfbm9kZS5ub2RlVHlwZSA9PSBOb2RlLkNEQVRB
X1NFQ1RJT05fTk9ERToKKyAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKE5vZGUuQ0RBVEFfU0VDVElP
Tl9OT0RFLCBhY3R1YWxfbm9kZS5ub2RlVHlwZSkKKyAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4
cGVjdGVkX25vZGUubm9kZVZhbHVlLCBhY3R1YWxfbm9kZS5ub2RlVmFsdWUpCisgICAgICByZXR1
cm4KKworICAgIHNlbGYuYXNzZXJ0RXF1YWxzKE5vZGUuRUxFTUVOVF9OT0RFLCBhY3R1YWxfbm9k
ZS5ub2RlVHlwZSkKKyAgICBzZWxmLmFzc2VydEVxdWFscyhOb2RlLkVMRU1FTlRfTk9ERSwgZXhw
ZWN0ZWRfbm9kZS5ub2RlVHlwZSkKKyAgICBzZWxmLmFzc2VydEVxdWFscyhleHBlY3RlZF9ub2Rl
LnRhZ05hbWUsIGFjdHVhbF9ub2RlLnRhZ05hbWUpCisKKyAgICBleHBlY3RlZF9hdHRyaWJ1dGVz
ID0gZXhwZWN0ZWRfbm9kZS5hdHRyaWJ1dGVzCisgICAgYWN0dWFsX2F0dHJpYnV0ZXMgICA9IGFj
dHVhbF9ub2RlICAuYXR0cmlidXRlcworICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAorICAgICAgICBl
eHBlY3RlZF9hdHRyaWJ1dGVzLmxlbmd0aCwgYWN0dWFsX2F0dHJpYnV0ZXMubGVuZ3RoLAorICAg
ICAgICAnYXR0cmlidXRlIG51bWJlcnMgZGlmZmVyIGluIGVsZW1lbnQgJXM6XG5FeHBlY3RlZDog
JXJcbkFjdHVhbDogJXInICUgKAorICAgICAgICAgICAgYWN0dWFsX25vZGUudGFnTmFtZSwgZXhw
ZWN0ZWRfYXR0cmlidXRlcy5rZXlzKCksCisgICAgICAgICAgICBhY3R1YWxfYXR0cmlidXRlcy5r
ZXlzKCkpKQorICAgIGZvciBpIGluIHJhbmdlKGV4cGVjdGVkX2F0dHJpYnV0ZXMubGVuZ3RoKToK
KyAgICAgIGV4cGVjdGVkX2F0dHIgPSBleHBlY3RlZF9hdHRyaWJ1dGVzLml0ZW0oaSkKKyAgICAg
IGFjdHVhbF9hdHRyICAgPSBhY3R1YWxfYXR0cmlidXRlcy5nZXQoZXhwZWN0ZWRfYXR0ci5uYW1l
KQorICAgICAgc2VsZi5hc3NlcnRfKAorICAgICAgICAgIGFjdHVhbF9hdHRyIGlzIG5vdCBOb25l
LAorICAgICAgICAgICdleHBlY3RlZCBhdHRyaWJ1dGUgJXMgbm90IGZvdW5kIGluIGVsZW1lbnQg
JXMnICUKKyAgICAgICAgICAoZXhwZWN0ZWRfYXR0ci5uYW1lLCBhY3R1YWxfbm9kZS50YWdOYW1l
KSkKKyAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAorICAgICAgICAgIGV4cGVjdGVkX2F0dHIudmFs
dWUsIGFjdHVhbF9hdHRyLnZhbHVlLAorICAgICAgICAgICcgdmFsdWVzIG9mIGF0dHJpYnV0ZSAl
cyBpbiBlbGVtZW50ICVzIGRpZmZlcjogJXMgdnMgJXMnICUKKyAgICAgICAgICAoZXhwZWN0ZWRf
YXR0ci5uYW1lLCBhY3R1YWxfbm9kZS50YWdOYW1lLAorICAgICAgICAgICBleHBlY3RlZF9hdHRy
LnZhbHVlLCBhY3R1YWxfYXR0ci52YWx1ZSkpCisKKyAgICBleHBlY3RlZF9jaGlsZHJlbiA9IHNl
bGYuX0dldENoaWxkcmVuKGV4cGVjdGVkX25vZGUpCisgICAgYWN0dWFsX2NoaWxkcmVuID0gc2Vs
Zi5fR2V0Q2hpbGRyZW4oYWN0dWFsX25vZGUpCisgICAgc2VsZi5hc3NlcnRFcXVhbHMoCisgICAg
ICAgIGxlbihleHBlY3RlZF9jaGlsZHJlbiksIGxlbihhY3R1YWxfY2hpbGRyZW4pLAorICAgICAg
ICAnbnVtYmVyIG9mIGNoaWxkIGVsZW1lbnRzIGRpZmZlciBpbiBlbGVtZW50ICcgKyBhY3R1YWxf
bm9kZS50YWdOYW1lKQorICAgIGZvciBjaGlsZF9pZCwgY2hpbGQgaW4gZXhwZWN0ZWRfY2hpbGRy
ZW4uaXRlbXMoKToKKyAgICAgIHNlbGYuYXNzZXJ0XyhjaGlsZF9pZCBpbiBhY3R1YWxfY2hpbGRy
ZW4sCisgICAgICAgICAgICAgICAgICAgJzwlcz4gaXMgbm90IGluIDwlcz4gKGluIGVsZW1lbnQg
JXMpJyAlCisgICAgICAgICAgICAgICAgICAgKGNoaWxkX2lkLCBhY3R1YWxfY2hpbGRyZW4sIGFj
dHVhbF9ub2RlLnRhZ05hbWUpKQorICAgICAgc2VsZi5Bc3NlcnRFcXVpdmFsZW50Tm9kZXMoY2hp
bGQsIGFjdHVhbF9jaGlsZHJlbltjaGlsZF9pZF0pCisKKyAgaWRlbnRpZnlpbmdfYXR0cmlidXRl
ID0geworICAgICd0ZXN0c3VpdGVzJzogJ25hbWUnLAorICAgICd0ZXN0c3VpdGUnOiAnbmFtZScs
CisgICAgJ3Rlc3RjYXNlJzogICduYW1lJywKKyAgICAnZmFpbHVyZSc6ICAgJ21lc3NhZ2UnLAor
ICAgIH0KKworICBkZWYgX0dldENoaWxkcmVuKHNlbGYsIGVsZW1lbnQpOgorICAgICIiIgorICAg
IEZldGNoZXMgYWxsIG9mIHRoZSBjaGlsZCBub2RlcyBvZiBlbGVtZW50LCBhIERPTSBFbGVtZW50
IG9iamVjdC4KKyAgICBSZXR1cm5zIHRoZW0gYXMgdGhlIHZhbHVlcyBvZiBhIGRpY3Rpb25hcnkg
a2V5ZWQgYnkgdGhlIElEcyBvZiB0aGUKKyAgICBjaGlsZHJlbi4gIEZvciA8dGVzdHN1aXRlcz4s
IDx0ZXN0c3VpdGU+IGFuZCA8dGVzdGNhc2U+IGVsZW1lbnRzLCB0aGUgSUQKKyAgICBpcyB0aGUg
dmFsdWUgb2YgdGhlaXIgIm5hbWUiIGF0dHJpYnV0ZTsgZm9yIDxmYWlsdXJlPiBlbGVtZW50cywg
aXQgaXMKKyAgICB0aGUgdmFsdWUgb2YgdGhlICJtZXNzYWdlIiBhdHRyaWJ1dGU7IENEQVRBIHNl
Y3Rpb25zIGFuZCBub24td2hpdGVzcGFjZQorICAgIHRleHQgbm9kZXMgYXJlIGNvbmNhdGVuYXRl
ZCBpbnRvIGEgc2luZ2xlIENEQVRBIHNlY3Rpb24gd2l0aCBJRAorICAgICJkZXRhaWwiLiAgQW4g
ZXhjZXB0aW9uIGlzIHJhaXNlZCBpZiBhbnkgZWxlbWVudCBvdGhlciB0aGFuIHRoZSBhYm92ZQor
ICAgIGZvdXIgaXMgZW5jb3VudGVyZWQsIGlmIHR3byBjaGlsZCBlbGVtZW50cyB3aXRoIHRoZSBz
YW1lIGlkZW50aWZ5aW5nCisgICAgYXR0cmlidXRlcyBhcmUgZW5jb3VudGVyZWQsIG9yIGlmIGFu
eSBvdGhlciB0eXBlIG9mIG5vZGUgaXMgZW5jb3VudGVyZWQuCisgICAgIiIiCisKKyAgICBjaGls
ZHJlbiA9IHt9CisgICAgZm9yIGNoaWxkIGluIGVsZW1lbnQuY2hpbGROb2RlczoKKyAgICAgIGlm
IGNoaWxkLm5vZGVUeXBlID09IE5vZGUuRUxFTUVOVF9OT0RFOgorICAgICAgICBzZWxmLmFzc2Vy
dF8oY2hpbGQudGFnTmFtZSBpbiBzZWxmLmlkZW50aWZ5aW5nX2F0dHJpYnV0ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICdFbmNvdW50ZXJlZCB1bmtub3duIGVsZW1lbnQgPCVzPicgJSBjaGlsZC50
YWdOYW1lKQorICAgICAgICBjaGlsZElEID0gY2hpbGQuZ2V0QXR0cmlidXRlKHNlbGYuaWRlbnRp
ZnlpbmdfYXR0cmlidXRlW2NoaWxkLnRhZ05hbWVdKQorICAgICAgICBzZWxmLmFzc2VydF8oY2hp
bGRJRCBub3QgaW4gY2hpbGRyZW4pCisgICAgICAgIGNoaWxkcmVuW2NoaWxkSURdID0gY2hpbGQK
KyAgICAgIGVsaWYgY2hpbGQubm9kZVR5cGUgaW4gW05vZGUuVEVYVF9OT0RFLCBOb2RlLkNEQVRB
X1NFQ1RJT05fTk9ERV06CisgICAgICAgIGlmICdkZXRhaWwnIG5vdCBpbiBjaGlsZHJlbjoKKyAg
ICAgICAgICBpZiAoY2hpbGQubm9kZVR5cGUgPT0gTm9kZS5DREFUQV9TRUNUSU9OX05PREUgb3IK
KyAgICAgICAgICAgICAgbm90IGNoaWxkLm5vZGVWYWx1ZS5pc3NwYWNlKCkpOgorICAgICAgICAg
ICAgY2hpbGRyZW5bJ2RldGFpbCddID0gY2hpbGQub3duZXJEb2N1bWVudC5jcmVhdGVDREFUQVNl
Y3Rpb24oCisgICAgICAgICAgICAgICAgY2hpbGQubm9kZVZhbHVlKQorICAgICAgICBlbHNlOgor
ICAgICAgICAgIGNoaWxkcmVuWydkZXRhaWwnXS5ub2RlVmFsdWUgKz0gY2hpbGQubm9kZVZhbHVl
CisgICAgICBlbHNlOgorICAgICAgICBzZWxmLmZhaWwoJ0VuY291bnRlcmVkIHVuZXhwZWN0ZWQg
bm9kZSB0eXBlICVkJyAlIGNoaWxkLm5vZGVUeXBlKQorICAgIHJldHVybiBjaGlsZHJlbgorCisg
IGRlZiBOb3JtYWxpemVYbWwoc2VsZiwgZWxlbWVudCk6CisgICAgIiIiCisgICAgTm9ybWFsaXpl
cyBHb29nbGUgVGVzdCdzIFhNTCBvdXRwdXQgdG8gZWxpbWluYXRlIHJlZmVyZW5jZXMgdG8gdHJh
bnNpZW50CisgICAgaW5mb3JtYXRpb24gdGhhdCBtYXkgY2hhbmdlIGZyb20gcnVuIHRvIHJ1bi4K
KworICAgICogIFRoZSAidGltZSIgYXR0cmlidXRlIG9mIDx0ZXN0c3VpdGVzPiwgPHRlc3RzdWl0
ZT4gYW5kIDx0ZXN0Y2FzZT4KKyAgICAgICBlbGVtZW50cyBpcyByZXBsYWNlZCB3aXRoIGEgc2lu
Z2xlIGFzdGVyaXNrLCBpZiBpdCBjb250YWlucworICAgICAgIG9ubHkgZGlnaXQgY2hhcmFjdGVy
cy4KKyAgICAqICBUaGUgInRpbWVzdGFtcCIgYXR0cmlidXRlIG9mIDx0ZXN0c3VpdGVzPiBlbGVt
ZW50cyBpcyByZXBsYWNlZCB3aXRoIGEKKyAgICAgICBzaW5nbGUgYXN0ZXJpc2ssIGlmIGl0IGNv
bnRhaW5zIGEgdmFsaWQgSVNPODYwMSBkYXRldGltZSB2YWx1ZS4KKyAgICAqICBUaGUgInR5cGVf
cGFyYW0iIGF0dHJpYnV0ZSBvZiA8dGVzdGNhc2U+IGVsZW1lbnRzIGlzIHJlcGxhY2VkIHdpdGgg
YQorICAgICAgIHNpbmdsZSBhc3RlcmlzayAoaWYgaXQgc24gbm9uLWVtcHR5KSBhcyBpdCBpcyB0
aGUgdHlwZSBuYW1lIHJldHVybmVkCisgICAgICAgYnkgdGhlIGNvbXBpbGVyIGFuZCBpcyBwbGF0
Zm9ybSBkZXBlbmRlbnQuCisgICAgKiAgVGhlIGxpbmUgaW5mbyByZXBvcnRlZCBpbiB0aGUgZmly
c3QgbGluZSBvZiB0aGUgIm1lc3NhZ2UiCisgICAgICAgYXR0cmlidXRlIGFuZCBDREFUQSBzZWN0
aW9uIG9mIDxmYWlsdXJlPiBlbGVtZW50cyBpcyByZXBsYWNlZCB3aXRoIHRoZQorICAgICAgIGZp
bGUncyBiYXNlbmFtZSBhbmQgYSBzaW5nbGUgYXN0ZXJpc2sgZm9yIHRoZSBsaW5lIG51bWJlci4K
KyAgICAqICBUaGUgZGlyZWN0b3J5IG5hbWVzIGluIGZpbGUgcGF0aHMgYXJlIHJlbW92ZWQuCisg
ICAgKiAgVGhlIHN0YWNrIHRyYWNlcyBhcmUgcmVtb3ZlZC4KKyAgICAiIiIKKworICAgIGlmIGVs
ZW1lbnQudGFnTmFtZSA9PSAndGVzdHN1aXRlcyc6CisgICAgICB0aW1lc3RhbXAgPSBlbGVtZW50
LmdldEF0dHJpYnV0ZU5vZGUoJ3RpbWVzdGFtcCcpCisgICAgICB0aW1lc3RhbXAudmFsdWUgPSBy
ZS5zdWIocideXGR7NH0tXGRcZC1cZFxkVFxkXGQ6XGRcZDpcZFxkJCcsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJyonLCB0aW1lc3RhbXAudmFsdWUpCisgICAgaWYgZWxlbWVudC50
YWdOYW1lIGluICgndGVzdHN1aXRlcycsICd0ZXN0c3VpdGUnLCAndGVzdGNhc2UnKToKKyAgICAg
IHRpbWUgPSBlbGVtZW50LmdldEF0dHJpYnV0ZU5vZGUoJ3RpbWUnKQorICAgICAgdGltZS52YWx1
ZSA9IHJlLnN1YihyJ15cZCsoXC5cZCspPyQnLCAnKicsIHRpbWUudmFsdWUpCisgICAgICB0eXBl
X3BhcmFtID0gZWxlbWVudC5nZXRBdHRyaWJ1dGVOb2RlKCd0eXBlX3BhcmFtJykKKyAgICAgIGlm
IHR5cGVfcGFyYW0gYW5kIHR5cGVfcGFyYW0udmFsdWU6CisgICAgICAgIHR5cGVfcGFyYW0udmFs
dWUgPSAnKicKKyAgICBlbGlmIGVsZW1lbnQudGFnTmFtZSA9PSAnZmFpbHVyZSc6CisgICAgICBz
b3VyY2VfbGluZV9wYXQgPSByJ14uKlsvXFxdKC4qOilcZCtcbicKKyAgICAgICMgUmVwbGFjZXMg
dGhlIHNvdXJjZSBsaW5lIGluZm9ybWF0aW9uIHdpdGggYSBub3JtYWxpemVkIGZvcm0uCisgICAg
ICBtZXNzYWdlID0gZWxlbWVudC5nZXRBdHRyaWJ1dGVOb2RlKCdtZXNzYWdlJykKKyAgICAgIG1l
c3NhZ2UudmFsdWUgPSByZS5zdWIoc291cmNlX2xpbmVfcGF0LCAnXFwxKlxuJywgbWVzc2FnZS52
YWx1ZSkKKyAgICAgIGZvciBjaGlsZCBpbiBlbGVtZW50LmNoaWxkTm9kZXM6CisgICAgICAgIGlm
IGNoaWxkLm5vZGVUeXBlID09IE5vZGUuQ0RBVEFfU0VDVElPTl9OT0RFOgorICAgICAgICAgICMg
UmVwbGFjZXMgdGhlIHNvdXJjZSBsaW5lIGluZm9ybWF0aW9uIHdpdGggYSBub3JtYWxpemVkIGZv
cm0uCisgICAgICAgICAgY2RhdGEgPSByZS5zdWIoc291cmNlX2xpbmVfcGF0LCAnXFwxKlxuJywg
Y2hpbGQubm9kZVZhbHVlKQorICAgICAgICAgICMgUmVtb3ZlcyB0aGUgYWN0dWFsIHN0YWNrIHRy
YWNlLgorICAgICAgICAgIGNoaWxkLm5vZGVWYWx1ZSA9IHJlLnN1YihyJ1xuU3RhY2sgdHJhY2U6
XG4oLnxcbikqJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsIGNkYXRh
KQorICAgIGZvciBjaGlsZCBpbiBlbGVtZW50LmNoaWxkTm9kZXM6CisgICAgICBpZiBjaGlsZC5u
b2RlVHlwZSA9PSBOb2RlLkVMRU1FTlRfTk9ERToKKyAgICAgICAgc2VsZi5Ob3JtYWxpemVYbWwo
Y2hpbGQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L3Byb2R1Y3Rpb24uY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xldGVzdC90ZXN0L3Byb2R1Y3Rpb24uY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGI4YTQwYjQ0ZTliNDFmNGMy
OWQ3NTUyNjkwODU2OGFmMjM3OTEyZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rl
c3QvcHJvZHVjdGlvbi5jYwpAQCAtMCwwICsxLDM2IEBACisvLyBDb3B5cmlnaHQgMjAwNiwgR29v
Z2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8v
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8v
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhh
bnlvbmcgV2FuKQorLy8KKy8vIFRoaXMgaXMgcGFydCBvZiB0aGUgdW5pdCB0ZXN0IGZvciBpbmNs
dWRlL2d0ZXN0L2d0ZXN0X3Byb2QuaC4KKworI2luY2x1ZGUgInByb2R1Y3Rpb24uaCIKKworUHJp
dmF0ZUNvZGU6OlByaXZhdGVDb2RlKCkgOiB4XygwKSB7fQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRl
c3QvdGVzdC9wcm9kdWN0aW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L3Byb2R1Y3Rpb24uaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45OGZkNWU0NzZjODg0ZmExNmI0Nzg2YWQ4YTg4NTBjZjZlNGFhOWMyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9wcm9kdWN0aW9uLmgKQEAgLTAsMCArMSw1NSBA
QAorLy8gQ29weXJpZ2h0IDIwMDYsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisv
LyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEF1
dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKy8vCisvLyBUaGlzIGlzIHBhcnQg
b2YgdGhlIHVuaXQgdGVzdCBmb3IgaW5jbHVkZS9ndGVzdC9ndGVzdF9wcm9kLmguCisKKyNpZm5k
ZWYgR1RFU1RfVEVTVF9QUk9EVUNUSU9OX0hfCisjZGVmaW5lIEdURVNUX1RFU1RfUFJPRFVDVElP
Tl9IXworCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3RfcHJvZC5oIgorCitjbGFzcyBQcml2YXRlQ29k
ZSB7CisgcHVibGljOgorICAvLyBEZWNsYXJlcyBhIGZyaWVuZCB0ZXN0IHRoYXQgZG9lcyBub3Qg
dXNlIGEgZml4dHVyZS4KKyAgRlJJRU5EX1RFU1QoUHJpdmF0ZUNvZGVUZXN0LCBDYW5BY2Nlc3NQ
cml2YXRlTWVtYmVycyk7CisKKyAgLy8gRGVjbGFyZXMgYSBmcmllbmQgdGVzdCB0aGF0IHVzZXMg
YSBmaXh0dXJlLgorICBGUklFTkRfVEVTVChQcml2YXRlQ29kZUZpeHR1cmVUZXN0LCBDYW5BY2Nl
c3NQcml2YXRlTWVtYmVycyk7CisKKyAgUHJpdmF0ZUNvZGUoKTsKKworICBpbnQgeCgpIGNvbnN0
IHsgcmV0dXJuIHhfOyB9CisgcHJpdmF0ZToKKyAgdm9pZCBzZXRfeChpbnQgYW5feCkgeyB4XyA9
IGFuX3g7IH0KKyAgaW50IHhfOworfTsKKworI2VuZGlmICAvLyBHVEVTVF9URVNUX1BST0RVQ1RJ
T05fSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3hjb2RlL0NvbmZpZy9EZWJ1Z1Byb2plY3Qu
eGNjb25maWcgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC94Y29kZS9Db25maWcvRGVidWdQcm9qZWN0LnhjY29uZmln
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjNkNjgxNTdkNWQ1MTJhODgwZjE4Njg1NmMzYmExMGI0YTJiMTgwMDAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC94Y29kZS9Db25maWcvRGVidWdQcm9qZWN0Lnhj
Y29uZmlnCkBAIC0wLDAgKzEsMzAgQEAKKy8vCisvLyAgRGVidWdQcm9qZWN0LnhjY29uZmlnCisv
LworLy8gIFRoZXNlIGFyZSBEZWJ1ZyBDb25maWd1cmF0aW9uIHByb2plY3Qgc2V0dGluZ3MgZm9y
IHRoZSBndGVzdCBmcmFtZXdvcmsgYW5kCisvLyAgZXhhbXBsZXMuIEl0IGlzIHNldCBpbiB0aGUg
IkJhc2VkIE9uOiIgZHJvcGRvd24gaW4gdGhlICJQcm9qZWN0IiBpbmZvCisvLyAgZGlhbG9nLgor
Ly8gIFRoaXMgZmlsZSBpcyBiYXNlZCBvbiB0aGUgWGNvZGUgQ29uZmlndXJhdGlvbiBmaWxlcyBp
bjoKKy8vICBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlLXRvb2xib3gtZm9yLW1hYy8K
Ky8vIAorCisjaW5jbHVkZSAiR2VuZXJhbC54Y2NvbmZpZyIKKworLy8gTm8gb3B0aW1pemF0aW9u
CitHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gMAorCisvLyBEZXBsb3ltZW50IHBvc3Rwcm9jZXNz
aW5nIGlzIHdoYXQgdHJpZ2dlcnMgWGNvZGUgdG8gc3RyaXAsIHR1cm4gaXQgb2ZmCitERVBMT1lN
RU5UX1BPU1RQUk9DRVNTSU5HID0gTk8KKworLy8gRGVhZCBjb2RlIHN0cmlwcGluZyBvZmYKK0RF
QURfQ09ERV9TVFJJUFBJTkcgPSBOTworCisvLyBEZWJ1ZyBzeW1ib2xzIHNob3VsZCBiZSBvbiBv
YnZpb3VzbHkKK0dDQ19HRU5FUkFURV9ERUJVR0dJTkdfU1lNQk9MUyA9IFlFUworCisvLyBEZWZp
bmUgdGhlIERFQlVHIG1hY3JvIGluIGFsbCBkZWJ1ZyBidWlsZHMKK09USEVSX0NGTEFHUyA9ICQo
T1RIRVJfQ0ZMQUdTKSAtRERFQlVHPTEKKworLy8gVGhlc2UgYXJlIHR1cm5lZCBvZmYgdG8gYXZv
aWQgU1RMIGluY29tcGF0aWJpbGl0aWVzIHdpdGggY2xpZW50IGNvZGUKKy8vIC8vIFR1cm5zIG9u
IHNwZWNpYWwgQysrIFNUTCBjaGVja3MgdG8gImVuY291cmFnZSIgZ29vZCBTVEwgdXNlCisvLyBH
Q0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gJChHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJ
T05TKSBfR0xJQkNYWF9ERUJVR19QRURBTlRJQyBfR0xJQkNYWF9ERUJVRyBfR0xJQkNQUF9DT05D
RVBUX0NIRUNLUwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUvQ29uZmlnL0ZyYW1ld29y
a1RhcmdldC54Y2NvbmZpZyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3hjb2RlL0NvbmZpZy9GcmFtZXdvcmtUYXJn
ZXQueGNjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzU3YjFjOGZiZmEyMzFkYTNlY2YyZGMzN2NjZTE3Mjgz
MDQyOTExYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3hjb2RlL0NvbmZpZy9GcmFt
ZXdvcmtUYXJnZXQueGNjb25maWcKQEAgLTAsMCArMSwxNyBAQAorLy8KKy8vICBGcmFtZXdvcmtU
YXJnZXQueGNjb25maWcKKy8vCisvLyAgVGhlc2UgYXJlIEZyYW1ld29yayB0YXJnZXQgc2V0dGlu
Z3MgZm9yIHRoZSBndGVzdCBmcmFtZXdvcmsgYW5kIGV4YW1wbGVzLiBJdAorLy8gIGlzIHNldCBp
biB0aGUgIkJhc2VkIE9uOiIgZHJvcGRvd24gaW4gdGhlICJUYXJnZXQiIGluZm8gZGlhbG9nLgor
Ly8gIFRoaXMgZmlsZSBpcyBiYXNlZCBvbiB0aGUgWGNvZGUgQ29uZmlndXJhdGlvbiBmaWxlcyBp
bjoKKy8vICBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlLXRvb2xib3gtZm9yLW1hYy8K
Ky8vIAorCisvLyBEeW5hbWljIGxpYnMgbmVlZCB0byBiZSBwb3NpdGlvbiBpbmRlcGVuZGVudAor
R0NDX0RZTkFNSUNfTk9fUElDID0gTk8KKworLy8gRHluYW1pYyBsaWJzIHNob3VsZCBub3QgaGF2
ZSB0aGVpciBleHRlcm5hbCBzeW1ib2xzIHN0cmlwcGVkLgorU1RSSVBfU1RZTEUgPSBub24tZ2xv
YmFsCisKKy8vIExldCB0aGUgdXNlciBpbnN0YWxsIGJ5IHNwZWNpZnlpbmcgdGhlICREU1RST09U
IHdpdGggeGNvZGVidWlsZAorU0tJUF9JTlNUQUxMID0gTk8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0
ZXN0L3hjb2RlL0NvbmZpZy9HZW5lcmFsLnhjY29uZmlnIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUvQ29u
ZmlnL0dlbmVyYWwueGNjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjIzZTMyMjI3Mjc1NjM0M2MwNGY1MGMy
Zjc5OTc0NDAwOGI0NWIwYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3hjb2RlL0Nv
bmZpZy9HZW5lcmFsLnhjY29uZmlnCkBAIC0wLDAgKzEsNDEgQEAKKy8vCisvLyAgR2VuZXJhbC54
Y2NvbmZpZworLy8KKy8vICBUaGVzZSBhcmUgR2VuZXJhbCBjb25maWd1cmF0aW9uIHNldHRpbmdz
IGZvciB0aGUgZ3Rlc3QgZnJhbWV3b3JrIGFuZAorLy8gIGV4YW1wbGVzLgorLy8gIFRoaXMgZmls
ZSBpcyBiYXNlZCBvbiB0aGUgWGNvZGUgQ29uZmlndXJhdGlvbiBmaWxlcyBpbjoKKy8vICBodHRw
Oi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlLXRvb2xib3gtZm9yLW1hYy8KKy8vIAorCisvLyBC
dWlsZCBmb3IgUFBDIGFuZCBJbnRlbCwgMzItIGFuZCA2NC1iaXQKK0FSQ0hTID0gaTM4NiB4ODZf
NjQgcHBjIHBwYzY0CisKKy8vIFplcm9saW5rIHByZXZlbnRzIGxpbmsgd2FybmluZ3Mgc28gdHVy
biBpdCBvZmYKK1pFUk9fTElOSyA9IE5PCisKKy8vIFByZWJpbmRpbmcgY29uc2lkZXJlZCB1bmhl
bHBmdWwgaW4gMTAuMyBhbmQgbGF0ZXIKK1BSRUJJTkRJTkcgPSBOTworCisvLyBTdHJpY3Rlc3Qg
d2FybmluZyBwb2xpY3kKK1dBUk5JTkdfQ0ZMQUdTID0gLVdhbGwgLVdlcnJvciAtV2VuZGlmLWxh
YmVscyAtV25ld2xpbmUtZW9mIC1Xbm8tc2lnbi1jb21wYXJlIC1Xc2hhZG93CisKKy8vIFdvcmsg
YXJvdW5kIFhjb2RlIGJ1Z3MgYnkgdXNpbmcgZXh0ZXJuYWwgc3RyaXAuIFNlZToKKy8vIGh0dHA6
Ly9saXN0cy5hcHBsZS5jb20vYXJjaGl2ZXMvWGNvZGUtdXNlcnMvMjAwNi9GZWIvbXNnMDAwNTAu
aHRtbAorU0VQQVJBVEVfU1RSSVAgPSBZRVMKKworLy8gRm9yY2UgQzk5IGRpYWxlY3QKK0dDQ19D
X0xBTkdVQUdFX1NUQU5EQVJEID0gYzk5CisKKy8vIG5vdCBzdXJlIHdoeSBhcHBsZSBkZWZhdWx0
cyB0aGlzIG9uLCBidXQgaXQncyBwcmV0dHkgcmlza3kKK0FMV0FZU19TRUFSQ0hfVVNFUl9QQVRI
UyA9IE5PCisKKy8vIFR1cm4gb24gcG9zaXRpb24gZGVwZW5kZW50IGNvZGUgZm9yIG1vc3QgY2Fz
ZXMgKG92ZXJyaWRkZW4gd2hlcmUgYXBwcm9wcmlhdGUpCitHQ0NfRFlOQU1JQ19OT19QSUMgPSBZ
RVMKKworLy8gRGVmYXVsdCBTREsgYW5kIG1pbmltdW0gT1MgdmVyc2lvbiBpcyAxMC40CitTREtS
T09UID0gJChERVZFTE9QRVJfU0RLX0RJUikvTWFjT1NYMTAuNHUuc2RrCitNQUNPU1hfREVQTE9Z
TUVOVF9UQVJHRVQgPSAxMC40CitHQ0NfVkVSU0lPTiA9IDQuMAorCisvLyBWRVJTSU9OSU5HIEJV
SUxEIFNFVFRJTkdTICh1c2VkIGluIEluZm8ucGxpc3QpCitHVEVTVF9WRVJTSU9OSU5GT19BQk9V
VCA9ICDCqSAyMDA4IEdvb2dsZSBJbmMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC94Y29kZS9D
b25maWcvUmVsZWFzZVByb2plY3QueGNjb25maWcgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC94Y29kZS9Db25maWcv
UmVsZWFzZVByb2plY3QueGNjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTM0OWYwYTA0YWZjNzgzNzc4Nzgy
OGQzZjQyNGE4ODk4NzRlYzkzMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3hjb2Rl
L0NvbmZpZy9SZWxlYXNlUHJvamVjdC54Y2NvbmZpZwpAQCAtMCwwICsxLDMyIEBACisvLworLy8g
IFJlbGVhc2VQcm9qZWN0LnhjY29uZmlnCisvLworLy8gIFRoZXNlIGFyZSBSZWxlYXNlIENvbmZp
Z3VyYXRpb24gcHJvamVjdCBzZXR0aW5ncyBmb3IgdGhlIGd0ZXN0IGZyYW1ld29yaworLy8gIGFu
ZCBleGFtcGxlcy4gSXQgaXMgc2V0IGluIHRoZSAiQmFzZWQgT246IiBkcm9wZG93biBpbiB0aGUg
IlByb2plY3QiIGluZm8KKy8vICBkaWFsb2cuCisvLyAgVGhpcyBmaWxlIGlzIGJhc2VkIG9uIHRo
ZSBYY29kZSBDb25maWd1cmF0aW9uIGZpbGVzIGluOgorLy8gIGh0dHA6Ly9jb2RlLmdvb2dsZS5j
b20vcC9nb29nbGUtdG9vbGJveC1mb3ItbWFjLworLy8gCisKKyNpbmNsdWRlICJHZW5lcmFsLnhj
Y29uZmlnIgorCisvLyBzdWJjb25maWcvUmVsZWFzZS54Y2NvbmZpZworCisvLyBPcHRpbWl6ZSBm
b3Igc3BhY2UgYW5kIHNpemUgKEFwcGxlIHJlY29tbWVuZGF0aW9uKQorR0NDX09QVElNSVpBVElP
Tl9MRVZFTCA9IHMKKworLy8gRGVwbG9tZW50IHBvc3Rwcm9jZXNzaW5nIGlzIHdoYXQgdHJpZ2dl
cnMgWGNvZGUgdG8gc3RyaXAKK0RFUExPWU1FTlRfUE9TVFBST0NFU1NJTkcgPSBZRVMKKworLy8g
Tm8gc3ltYm9scworR0NDX0dFTkVSQVRFX0RFQlVHR0lOR19TWU1CT0xTID0gTk8KKworLy8gRGVh
ZCBjb2RlIHN0cmlwIGRvZXMgbm90IGFmZmVjdCBPYmpDIGNvZGUgYnV0IGNhbiBoZWxwIGZvciBD
CitERUFEX0NPREVfU1RSSVBQSU5HID0gWUVTCisKKy8vIE5ERUJVRyBpcyB1c2VkIGJ5IHRoaW5n
cyBsaWtlIGFzc2VydC5oLCBzbyBkZWZpbmUgaXQgZm9yIGdlbmVyYWwgY29tcGF0LgorLy8gQVNT
RVJUIGdvaW5nIGF3YXkgaW4gcmVsZWFzZSB0ZW5kcyB0byBjcmVhdGUgdW51c2VkIHZhcnMuCitP
VEhFUl9DRkxBR1MgPSAkKE9USEVSX0NGTEFHUykgLUROREVCVUc9MSAtV25vLXVudXNlZC12YXJp
YWJsZQorCisvLyBXaGVuIHdlIHN0cmlwIHdlIHdhbnQgdG8gc3RyaXAgYWxsIHN5bWJvbHMgaW4g
cmVsZWFzZSwgYnV0IHNhdmUgZXh0ZXJuYWxzLgorU1RSSVBfU1RZTEUgPSBhbGwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGV0ZXN0L3hjb2RlL0NvbmZpZy9TdGF0aWNMaWJyYXJ5VGFyZ2V0LnhjY29uZmln
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZXRlc3QveGNvZGUvQ29uZmlnL1N0YXRpY0xpYnJhcnlUYXJnZXQueGNjb25maWcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzkyMmZhNTFkNTJkNWZmMGYzMDQ2ZmY1MWMwYWQ2YTk2ZmI0OGJlNAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3hjb2RlL0NvbmZpZy9TdGF0aWNMaWJyYXJ5VGFy
Z2V0LnhjY29uZmlnCkBAIC0wLDAgKzEsMTggQEAKKy8vCisvLyAgU3RhdGljTGlicmFyeVRhcmdl
dC54Y2NvbmZpZworLy8KKy8vICBUaGVzZSBhcmUgc3RhdGljIGxpYnJhcnkgdGFyZ2V0IHNldHRp
bmdzIGZvciBsaWJndGVzdC5hLiBJdAorLy8gIGlzIHNldCBpbiB0aGUgIkJhc2VkIE9uOiIgZHJv
cGRvd24gaW4gdGhlICJUYXJnZXQiIGluZm8gZGlhbG9nLgorLy8gIFRoaXMgZmlsZSBpcyBiYXNl
ZCBvbiB0aGUgWGNvZGUgQ29uZmlndXJhdGlvbiBmaWxlcyBpbjoKKy8vICBodHRwOi8vY29kZS5n
b29nbGUuY29tL3AvZ29vZ2xlLXRvb2xib3gtZm9yLW1hYy8KKy8vIAorCisvLyBTdGF0aWMgbGli
cyBjYW4gYmUgaW5jbHVkZWQgaW4gYnVuZGxlcyBzbyBtYWtlIHRoZW0gcG9zaXRpb24gaW5kZXBl
bmRlbnQKK0dDQ19EWU5BTUlDX05PX1BJQyA9IE5PCisKKy8vIFN0YXRpYyBsaWJzIHNob3VsZCBu
b3QgaGF2ZSB0aGVpciBpbnRlcm5hbCBnbG9iYWxzIG9yIGV4dGVybmFsIHN5bWJvbHMKKy8vIHN0
cmlwcGVkLgorU1RSSVBfU1RZTEUgPSBkZWJ1Z2dpbmcKKworLy8gTGV0IHRoZSB1c2VyIGluc3Rh
bGwgYnkgc3BlY2lmeWluZyB0aGUgJERTVFJPT1Qgd2l0aCB4Y29kZWJ1aWxkCitTS0lQX0lOU1RB
TEwgPSBOTwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUvQ29uZmlnL1Rlc3RUYXJnZXQu
eGNjb25maWcgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC94Y29kZS9Db25maWcvVGVzdFRhcmdldC54Y2NvbmZpZwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lNjY1MmJhODU5OTA2ZGYwNzQ4NzZmMzUwZjhkNjExN2RiODk3ZDg3Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUvQ29uZmlnL1Rlc3RUYXJnZXQueGNjb25m
aWcKQEAgLTAsMCArMSw4IEBACisvLworLy8gIFRlc3RUYXJnZXQueGNjb25maWcKKy8vCisvLyAg
VGhlc2UgYXJlIFRlc3QgdGFyZ2V0IHNldHRpbmdzIGZvciB0aGUgZ3Rlc3QgZnJhbWV3b3JrIGFu
ZCBleGFtcGxlcy4gSXQKKy8vICBpcyBzZXQgaW4gdGhlICJCYXNlZCBPbjoiIGRyb3Bkb3duIGlu
IHRoZSAiVGFyZ2V0IiBpbmZvIGRpYWxvZy4KKworUFJPRFVDVF9OQU1FID0gJChUQVJHRVRfTkFN
RSkKK0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAuLi9pbmNsdWRlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC94Y29kZS9SZXNvdXJjZXMvSW5mby5wbGlzdCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3hjb2RlL1Jlc291
cmNlcy9JbmZvLnBsaXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlkZDI4ZWExNDg1YWI1MjdlNjI3NWJmMzk4NTBj
YjBlODRjZGRiMzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC94Y29kZS9SZXNvdXJj
ZXMvSW5mby5wbGlzdApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29k
aW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBwbGUvL0RURCBQTElT
VCAxLjAvL0VOIiAiaHR0cDovL3d3dy5hcHBsZS5jb20vRFREcy9Qcm9wZXJ0eUxpc3QtMS4wLmR0
ZCI+Cis8cGxpc3QgdmVyc2lvbj0iMS4wIj4KKzxkaWN0PgorCTxrZXk+Q0ZCdW5kbGVEZXZlbG9w
bWVudFJlZ2lvbjwva2V5PgorCTxzdHJpbmc+RW5nbGlzaDwvc3RyaW5nPgorCTxrZXk+Q0ZCdW5k
bGVFeGVjdXRhYmxlPC9rZXk+CisJPHN0cmluZz4ke0VYRUNVVEFCTEVfTkFNRX08L3N0cmluZz4K
Kwk8a2V5PkNGQnVuZGxlSWNvbkZpbGU8L2tleT4KKwk8c3RyaW5nPjwvc3RyaW5nPgorCTxrZXk+
Q0ZCdW5kbGVJZGVudGlmaWVyPC9rZXk+CisJPHN0cmluZz5jb20uZ29vZ2xlLiR7UFJPRFVDVF9O
QU1FfTwvc3RyaW5nPgorCTxrZXk+Q0ZCdW5kbGVJbmZvRGljdGlvbmFyeVZlcnNpb248L2tleT4K
Kwk8c3RyaW5nPjYuMDwvc3RyaW5nPgorCTxrZXk+Q0ZCdW5kbGVQYWNrYWdlVHlwZTwva2V5Pgor
CTxzdHJpbmc+Rk1XSzwvc3RyaW5nPgorCTxrZXk+Q0ZCdW5kbGVTaWduYXR1cmU8L2tleT4KKwk8
c3RyaW5nPj8/Pz88L3N0cmluZz4KKwk8a2V5PkNGQnVuZGxlVmVyc2lvbjwva2V5PgorCTxzdHJp
bmc+R1RFU1RfVkVSU0lPTklORk9fTE9ORzwvc3RyaW5nPgorCTxrZXk+Q0ZCdW5kbGVTaG9ydFZl
cnNpb25TdHJpbmc8L2tleT4KKwk8c3RyaW5nPkdURVNUX1ZFUlNJT05JTkZPX1NIT1JUPC9zdHJp
bmc+CisJPGtleT5DRkJ1bmRsZUdldEluZm9TdHJpbmc8L2tleT4KKwk8c3RyaW5nPiR7UFJPRFVD
VF9OQU1FfSBHVEVTVF9WRVJTSU9OSU5GT19MT05HLCAke0dURVNUX1ZFUlNJT05JTkZPX0FCT1VU
fTwvc3RyaW5nPgorCTxrZXk+TlNIdW1hblJlYWRhYmxlQ29weXJpZ2h0PC9rZXk+CisJPHN0cmlu
Zz4ke0dURVNUX1ZFUlNJT05JTkZPX0FCT1VUfTwvc3RyaW5nPgorCTxrZXk+Q1NSZXNvdXJjZXNG
aWxlTWFwcGVkPC9rZXk+CisJPHRydWUvPgorPC9kaWN0PgorPC9wbGlzdD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L3hjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL0luZm8ucGxpc3QgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xldGVzdC94Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS9JbmZvLnBsaXN0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmYzODUyZWRlYTI3N2M0OTAzMjMzYjBmNDJkNjc2NWIxZjkwMmI4YmUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC94Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS9JbmZv
LnBsaXN0CkBAIC0wLDAgKzEsMjggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVU
Ri04Ij8+Cis8IURPQ1RZUEUgcGxpc3QgUFVCTElDICItLy9BcHBsZS8vRFREIFBMSVNUIDEuMC8v
RU4iICJodHRwOi8vd3d3LmFwcGxlLmNvbS9EVERzL1Byb3BlcnR5TGlzdC0xLjAuZHRkIj4KKzxw
bGlzdCB2ZXJzaW9uPSIxLjAiPgorPGRpY3Q+CisJPGtleT5DRkJ1bmRsZURldmVsb3BtZW50UmVn
aW9uPC9rZXk+CisJPHN0cmluZz5FbmdsaXNoPC9zdHJpbmc+CisJPGtleT5DRkJ1bmRsZUV4ZWN1
dGFibGU8L2tleT4KKwk8c3RyaW5nPiR7RVhFQ1VUQUJMRV9OQU1FfTwvc3RyaW5nPgorCTxrZXk+
Q0ZCdW5kbGVJY29uRmlsZTwva2V5PgorCTxzdHJpbmc+PC9zdHJpbmc+CisJPGtleT5DRkJ1bmRs
ZUlkZW50aWZpZXI8L2tleT4KKwk8c3RyaW5nPmNvbS5nb29nbGUuZ3Rlc3QuJHtQUk9EVUNUX05B
TUU6aWRlbnRpZmllcn08L3N0cmluZz4KKwk8a2V5PkNGQnVuZGxlSW5mb0RpY3Rpb25hcnlWZXJz
aW9uPC9rZXk+CisJPHN0cmluZz42LjA8L3N0cmluZz4KKwk8a2V5PkNGQnVuZGxlTmFtZTwva2V5
PgorCTxzdHJpbmc+JHtQUk9EVUNUX05BTUV9PC9zdHJpbmc+CisJPGtleT5DRkJ1bmRsZVBhY2th
Z2VUeXBlPC9rZXk+CisJPHN0cmluZz5GTVdLPC9zdHJpbmc+CisJPGtleT5DRkJ1bmRsZVNob3J0
VmVyc2lvblN0cmluZzwva2V5PgorCTxzdHJpbmc+MS4wPC9zdHJpbmc+CisJPGtleT5DRkJ1bmRs
ZVNpZ25hdHVyZTwva2V5PgorCTxzdHJpbmc+Pz8/Pzwvc3RyaW5nPgorCTxrZXk+Q0ZCdW5kbGVW
ZXJzaW9uPC9rZXk+CisJPHN0cmluZz4xLjA8L3N0cmluZz4KKwk8a2V5PkNTUmVzb3VyY2VzRmls
ZU1hcHBlZDwva2V5PgorCTx0cnVlLz4KKzwvZGljdD4KKzwvcGxpc3Q+CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xldGVzdC94Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS9XaWRnZXRGcmFtZXdvcmsu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3hjb2RlL1NhbXBsZXMvRnJh
bWV3b3JrU2FtcGxlL1dpZGdldEZyYW1ld29yay54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmVhZGE2MDI0NDQ3MDExNGMyOTA5YWRjMzk5MzMzNDg2NmZkNjkzNmMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC94Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS9X
aWRnZXRGcmFtZXdvcmsueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMCwwICsxLDQ1NyBA
QAorLy8gISQqVVRGOCokIQoreworCWFyY2hpdmVWZXJzaW9uID0gMTsKKwljbGFzc2VzID0gewor
CX07CisJb2JqZWN0VmVyc2lvbiA9IDQyOworCW9iamVjdHMgPSB7CisKKy8qIEJlZ2luIFBCWEFn
Z3JlZ2F0ZVRhcmdldCBzZWN0aW9uICovCisJCTQwMjREMTYyMTEzRDdEMjQwMEM3MDU5RSAvKiBU
ZXN0ICovID0geworCQkJaXNhID0gUEJYQWdncmVnYXRlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1
cmF0aW9uTGlzdCA9IDQwMjREMTY5MTEzRDdENDYwMEM3MDU5RSAvKiBCdWlsZCBjb25maWd1cmF0
aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiVGVzdCIgKi87CisJCQlidWlsZFBoYXNl
cyA9ICgKKwkJCQk0MDI0RDE2MTExM0Q3RDI0MDBDNzA1OUUgLyogU2hlbGxTY3JpcHQgKi8sCisJ
CQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJCTQwMjREMTY2MTEzRDdEMzEwMEM3MDU5RSAv
KiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJKTsKKwkJCW5hbWUgPSBUZXN0OworCQkJcHJv
ZHVjdE5hbWUgPSBUZXN0QW5kQnVpbGQ7CisJCX07CisJCTQwMjREMUU5MTEzRDgzRkYwMEM3MDU5
RSAvKiBUZXN0QW5kQnVpbGQgKi8gPSB7CisJCQlpc2EgPSBQQlhBZ2dyZWdhdGVUYXJnZXQ7CisJ
CQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gNDAyNEQxRjAxMTNEODQyQjAwQzcwNTlFIC8qIEJ1
aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJUZXN0QW5kQnVp
bGQiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAor
CQkJCTQwMjREMUVEMTEzRDg0MDkwMEM3MDU5RSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAor
CQkJCTQwMjREMUVGMTEzRDg0MEQwMEM3MDU5RSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAor
CQkJKTsKKwkJCW5hbWUgPSBUZXN0QW5kQnVpbGQ7CisJCQlwcm9kdWN0TmFtZSA9IFRlc3RBbmRC
dWlsZDsKKwkJfTsKKy8qIEVuZCBQQlhBZ2dyZWdhdGVUYXJnZXQgc2VjdGlvbiAqLworCisvKiBC
ZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLworCQkzQjdFQjEyNTBFNUFFRTM1MDBDN0YyMzkg
Lyogd2lkZ2V0LmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gM0I3RUIxMjMwRTVBRUUzNTAwQzdGMjM5IC8qIHdpZGdldC5jYyAqLzsgfTsKKwkJM0I3RUIx
MjYwRTVBRUUzNTAwQzdGMjM5IC8qIHdpZGdldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gM0I3RUIxMjQwRTVBRUUzNTAwQzdGMjM5IC8qIHdpZGdldC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJM0I3RUIx
MjgwRTVBRUU0NjAwQzdGMjM5IC8qIHdpZGdldF90ZXN0LmNjIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0I3RUIxMjcwRTVBRUU0NjAwQzdGMjM5IC8qIHdp
ZGdldF90ZXN0LmNjICovOyB9OworCQkzQjdFQjE0ODBFNUFGM0I0MDBDN0YyMzkgLyogV2lkZ2V0
LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDhEMDdGMkM4MDQ4NkNDN0EwMDdDRDFEMCAvKiBXaWRnZXQuZnJhbWV3b3JrICovOyB9Owor
CQk0MDI0RDE4ODExM0Q3RDc4MDBDNzA1OUUgLyogbGliZ3Rlc3QuYSBpbiBGcmFtZXdvcmtzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwMjREMTg1MTEzRDdENTUwMEM3MDU5
RSAvKiBsaWJndGVzdC5hICovOyB9OworCQk0MDI0RDE4OTExM0Q3RDdBMDBDNzA1OUUgLyogbGli
Z3Rlc3RfbWFpbi5hIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDAyNEQxODMxMTNEN0Q1NTAwQzcwNTlFIC8qIGxpYmd0ZXN0X21haW4uYSAqLzsgfTsK
Ky8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhDb250YWluZXJJ
dGVtUHJveHkgc2VjdGlvbiAqLworCQkzQjA3QkRGMDBFM0YzRkFFMDA2NDc4NjkgLyogUEJYQ29u
dGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5Owor
CQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qg
b2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0g
OEQwN0YyQkMwNDg2Q0M3QTAwN0NEMUQwOworCQkJcmVtb3RlSW5mbyA9IGdUZXN0RXhhbXBsZTsK
KwkJfTsKKwkJNDAyNEQxNjUxMTNEN0QzMTAwQzcwNTlFIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94
eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBv
cnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJ
CXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDNCMDdCREU5MEUzRjNG
OUUwMDY0Nzg2OTsKKwkJCXJlbW90ZUluZm8gPSBXaWRnZXRGcmFtZXdvcmtUZXN0OworCQl9Owor
CQk0MDI0RDFFQzExM0Q4NDA5MDBDNzA1OUUgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0g
eworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0g
MDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlU
eXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gOEQwN0YyQkMwNDg2Q0M3QTAwN0NE
MUQwOworCQkJcmVtb3RlSW5mbyA9IFdpZGdldEZyYW1ld29yazsKKwkJfTsKKwkJNDAyNEQxRUUx
MTNEODQwRDAwQzcwNTlFIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9
IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4
NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJ
CQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDQwMjREMTYyMTEzRDdEMjQwMEM3MDU5RTsKKwkJCXJl
bW90ZUluZm8gPSBUZXN0OworCQl9OworLyogRW5kIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0
aW9uICovCisKKy8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLworCQkzQjA3QkRF
QTBFM0YzRjlFMDA2NDc4NjkgLyogV2lkZ2V0RnJhbWV3b3JrVGVzdCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRh
YmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gV2lkZ2V0RnJhbWV3b3JrVGVzdDsgc291
cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJM0I3RUIxMjMwRTVBRUUzNTAwQzdG
MjM5IC8qIHdpZGdldC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHdp
ZGdldC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJM0I3RUIxMjQwRTVBRUUzNTAw
QzdGMjM5IC8qIHdpZGdldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSB3aWRn
ZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJM0I3RUIxMjcwRTVBRUU0NjAwQzdG
MjM5IC8qIHdpZGdldF90ZXN0LmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gd2lkZ2V0X3Rlc3QuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQwMjREMTgz
MTEzRDdENTUwMEM3MDU5RSAvKiBsaWJndGVzdF9tYWluLmEgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBuYW1lID0gbGliZ3Rlc3Rf
bWFpbi5hOyBwYXRoID0gL3Vzci9sb2NhbC9saWIvbGliZ3Rlc3RfbWFpbi5hOyBzb3VyY2VUcmVl
ID0gIjxhYnNvbHV0ZT4iOyB9OworCQk0MDI0RDE4NTExM0Q3RDU1MDBDNzA1OUUgLyogbGliZ3Rl
c3QuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGFy
Y2hpdmUuYXI7IG5hbWUgPSBsaWJndGVzdC5hOyBwYXRoID0gL3Vzci9sb2NhbC9saWIvbGliZ3Rl
c3QuYTsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKKwkJNDAyNEQxRTIxMTNEODM4MjAw
QzcwNTlFIC8qIHJ1bnRlc3RzLnNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQuc2g7IHBhdGggPSBy
dW50ZXN0cy5zaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOEQwN0YyQzcwNDg2Q0M3
QTAwN0NEMUQwIC8qIEluZm8ucGxpc3QgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0OyBwYXRoID0gSW5m
by5wbGlzdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOEQwN0YyQzgwNDg2Q0M3QTAw
N0NEMUQwIC8qIFdpZGdldC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZXhwbGljaXRGaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBpbmNsdWRlSW5JbmRleCA9IDA7
IHBhdGggPSBXaWRnZXQuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OworLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhG
cmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTNCMDdCREU4MEUzRjNGOUUwMDY0Nzg2
OSAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7
CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJNDAy
NEQxODgxMTNEN0Q3ODAwQzcwNTlFIC8qIGxpYmd0ZXN0LmEgaW4gRnJhbWV3b3JrcyAqLywKKwkJ
CQk0MDI0RDE4OTExM0Q3RDdBMDBDNzA1OUUgLyogbGliZ3Rlc3RfbWFpbi5hIGluIEZyYW1ld29y
a3MgKi8sCisJCQkJM0I3RUIxNDgwRTVBRjNCNDAwQzdGMjM5IC8qIFdpZGdldC5mcmFtZXdvcmsg
aW4gRnJhbWV3b3JrcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKKwkJfTsKKwkJOEQwN0YyQzMwNDg2Q0M3QTAwN0NEMUQwIC8qIEZyYW1ld29y
a3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0
aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhGcmFtZXdvcmtz
QnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEdyb3VwIHNlY3Rpb24gKi8KKwkJ
MDM0NzY4RERGRjM4QTQ1QTExREI5QzhCIC8qIFByb2R1Y3RzICovID0geworCQkJaXNhID0gUEJY
R3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkzQjA3QkRFQTBFM0YzRjlFMDA2NDc4NjkgLyog
V2lkZ2V0RnJhbWV3b3JrVGVzdCAqLywKKwkJCQk4RDA3RjJDODA0ODZDQzdBMDA3Q0QxRDAgLyog
V2lkZ2V0LmZyYW1ld29yayAqLywKKwkJCSk7CisJCQluYW1lID0gUHJvZHVjdHM7CisJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkwODY3RDY5MUZFODQwMjhGQzAyQUFDMDcgLyog
Z1Rlc3RFeGFtcGxlICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgK
KwkJCQk0MDI0RDFFMTExM0Q4MzZDMDBDNzA1OUUgLyogU2NyaXB0cyAqLywKKwkJCQkwOEZCNzdB
Q0ZFODQxNzA3QzAyQUFDMDcgLyogU291cmNlICovLAorCQkJCTA4OUMxNjY1RkU4NDExNThDMDJB
QUMwNyAvKiBSZXNvdXJjZXMgKi8sCisJCQkJM0IwN0JFMzUwRTQwOTRFNDAwNjQ3ODY5IC8qIFRl
c3QgKi8sCisJCQkJMDg2N0Q2OUFGRTg0MDI4RkMwMkFBQzA3IC8qIEV4dGVybmFsIEZyYW1ld29y
a3MgYW5kIExpYnJhcmllcyAqLywKKwkJCQkwMzQ3NjhEREZGMzhBNDVBMTFEQjlDOEIgLyogUHJv
ZHVjdHMgKi8sCisJCQkpOworCQkJbmFtZSA9IGdUZXN0RXhhbXBsZTsKKwkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CisJCX07CisJCTA4NjdENjlBRkU4NDAyOEZDMDJBQUMwNyAvKiBFeHRlcm5h
bCBGcmFtZXdvcmtzIGFuZCBMaWJyYXJpZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJ
CWNoaWxkcmVuID0gKAorCQkJCTQwMjREMTg1MTEzRDdENTUwMEM3MDU5RSAvKiBsaWJndGVzdC5h
ICovLAorCQkJCTQwMjREMTgzMTEzRDdENTUwMEM3MDU5RSAvKiBsaWJndGVzdF9tYWluLmEgKi8s
CisJCQkpOworCQkJbmFtZSA9ICJFeHRlcm5hbCBGcmFtZXdvcmtzIGFuZCBMaWJyYXJpZXMiOwor
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMDg5QzE2NjVGRTg0MTE1OEMwMkFB
QzA3IC8qIFJlc291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4g
PSAoCisJCQkJOEQwN0YyQzcwNDg2Q0M3QTAwN0NEMUQwIC8qIEluZm8ucGxpc3QgKi8sCisJCQkp
OworCQkJbmFtZSA9IFJlc291cmNlczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07
CisJCTA4RkI3N0FDRkU4NDE3MDdDMDJBQUMwNyAvKiBTb3VyY2UgKi8gPSB7CisJCQlpc2EgPSBQ
QlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTNCN0VCMTIzMEU1QUVFMzUwMEM3RjIzOSAv
KiB3aWRnZXQuY2MgKi8sCisJCQkJM0I3RUIxMjQwRTVBRUUzNTAwQzdGMjM5IC8qIHdpZGdldC5o
ICovLAorCQkJKTsKKwkJCW5hbWUgPSBTb3VyY2U7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OworCQl9OworCQkzQjA3QkUzNTBFNDA5NEU0MDA2NDc4NjkgLyogVGVzdCAqLyA9IHsKKwkJCWlz
YSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJM0I3RUIxMjcwRTVBRUU0NjAwQzdG
MjM5IC8qIHdpZGdldF90ZXN0LmNjICovLAorCQkJKTsKKwkJCW5hbWUgPSBUZXN0OworCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJNDAyNEQxRTExMTNEODM2QzAwQzcwNTlFIC8q
IFNjcmlwdHMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJ
CTQwMjREMUUyMTEzRDgzODIwMEM3MDU5RSAvKiBydW50ZXN0cy5zaCAqLywKKwkJCSk7CisJCQlu
YW1lID0gU2NyaXB0czsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisvKiBFbmQg
UEJYR3JvdXAgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhIZWFkZXJzQnVpbGRQaGFzZSBzZWN0
aW9uICovCisJCThEMDdGMkJEMDQ4NkNDN0EwMDdDRDFEMCAvKiBIZWFkZXJzICovID0geworCQkJ
aXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OworCQkJZmlsZXMgPSAoCisJCQkJM0I3RUIxMjYwRTVBRUUzNTAwQzdGMjM5IC8qIHdpZGdl
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAq
LworCisvKiBCZWdpbiBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCQkzQjA3QkRFOTBFM0Yz
RjlFMDA2NDc4NjkgLyogV2lkZ2V0RnJhbWV3b3JrVGVzdCAqLyA9IHsKKwkJCWlzYSA9IFBCWE5h
dGl2ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAzQjA3QkRGNDBFM0YzRkI2
MDA2NDc4NjkgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQg
IldpZGdldEZyYW1ld29ya1Rlc3QiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJM0IwN0JE
RTcwRTNGM0Y5RTAwNjQ3ODY5IC8qIFNvdXJjZXMgKi8sCisJCQkJM0IwN0JERTgwRTNGM0Y5RTAw
NjQ3ODY5IC8qIEZyYW1ld29ya3MgKi8sCisJCQkpOworCQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7
CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJM0IwN0JERjEwRTNGM0ZBRTAwNjQ3ODY5IC8qIFBC
WFRhcmdldERlcGVuZGVuY3kgKi8sCisJCQkpOworCQkJbmFtZSA9IFdpZGdldEZyYW1ld29ya1Rl
c3Q7CisJCQlwcm9kdWN0TmFtZSA9IGdUZXN0RXhhbXBsZVRlc3Q7CisJCQlwcm9kdWN0UmVmZXJl
bmNlID0gM0IwN0JERUEwRTNGM0Y5RTAwNjQ3ODY5IC8qIFdpZGdldEZyYW1ld29ya1Rlc3QgKi87
CisJCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLnRvb2wiOworCQl9Owor
CQk4RDA3RjJCQzA0ODZDQzdBMDA3Q0QxRDAgLyogV2lkZ2V0RnJhbWV3b3JrICovID0geworCQkJ
aXNhID0gUEJYTmF0aXZlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDRGQURD
MjQyMDhCNDE1NkQwMEFCRTU1RSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5h
dGl2ZVRhcmdldCAiV2lkZ2V0RnJhbWV3b3JrIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJ
CThEMDdGMkMxMDQ4NkNDN0EwMDdDRDFEMCAvKiBTb3VyY2VzICovLAorCQkJCThEMDdGMkMzMDQ4
NkNDN0EwMDdDRDFEMCAvKiBGcmFtZXdvcmtzICovLAorCQkJCThEMDdGMkJEMDQ4NkNDN0EwMDdD
RDFEMCAvKiBIZWFkZXJzICovLAorCQkJCThEMDdGMkJGMDQ4NkNDN0EwMDdDRDFEMCAvKiBSZXNv
dXJjZXMgKi8sCisJCQkJOEQwN0YyQzUwNDg2Q0M3QTAwN0NEMUQwIC8qIFJleiAqLywKKwkJCSk7
CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCSk7CisJ
CQluYW1lID0gV2lkZ2V0RnJhbWV3b3JrOworCQkJcHJvZHVjdEluc3RhbGxQYXRoID0gIiQoSE9N
RSkvTGlicmFyeS9GcmFtZXdvcmtzIjsKKwkJCXByb2R1Y3ROYW1lID0gZ1Rlc3RFeGFtcGxlOwor
CQkJcHJvZHVjdFJlZmVyZW5jZSA9IDhEMDdGMkM4MDQ4NkNDN0EwMDdDRDFEMCAvKiBXaWRnZXQu
ZnJhbWV3b3JrICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS5m
cmFtZXdvcmsiOworCQl9OworLyogRW5kIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICovCisKKy8q
IEJlZ2luIFBCWFByb2plY3Qgc2VjdGlvbiAqLworCQkwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcg
LyogUHJvamVjdCBvYmplY3QgKi8gPSB7CisJCQlpc2EgPSBQQlhQcm9qZWN0OworCQkJYnVpbGRD
b25maWd1cmF0aW9uTGlzdCA9IDRGQURDMjQ2MDhCNDE1NkQwMEFCRTU1RSAvKiBCdWlsZCBjb25m
aWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIldpZGdldEZyYW1ld29yayIgKi87CisJCQlj
b21wYXRpYmlsaXR5VmVyc2lvbiA9ICJYY29kZSAyLjQiOworCQkJaGFzU2Nhbm5lZEZvckVuY29k
aW5ncyA9IDE7CisJCQltYWluR3JvdXAgPSAwODY3RDY5MUZFODQwMjhGQzAyQUFDMDcgLyogZ1Rl
c3RFeGFtcGxlICovOworCQkJcHJvZHVjdFJlZkdyb3VwID0gMDM0NzY4RERGRjM4QTQ1QTExREI5
QzhCIC8qIFByb2R1Y3RzICovOworCQkJcHJvamVjdERpclBhdGggPSAiIjsKKwkJCXByb2plY3RS
b290ID0gIiI7CisJCQl0YXJnZXRzID0gKAorCQkJCThEMDdGMkJDMDQ4NkNDN0EwMDdDRDFEMCAv
KiBXaWRnZXRGcmFtZXdvcmsgKi8sCisJCQkJM0IwN0JERTkwRTNGM0Y5RTAwNjQ3ODY5IC8qIFdp
ZGdldEZyYW1ld29ya1Rlc3QgKi8sCisJCQkJNDAyNEQxNjIxMTNEN0QyNDAwQzcwNTlFIC8qIFRl
c3QgKi8sCisJCQkJNDAyNEQxRTkxMTNEODNGRjAwQzcwNTlFIC8qIFRlc3RBbmRCdWlsZCAqLywK
KwkJCSk7CisJCX07CisvKiBFbmQgUEJYUHJvamVjdCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBC
WFJlc291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQk4RDA3RjJCRjA0ODZDQzdBMDA3Q0Qx
RDAgLyogUmVzb3VyY2VzICovID0geworCQkJaXNhID0gUEJYUmVzb3VyY2VzQnVpbGRQaGFzZTsK
KwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQ
QlhSZXNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYUmV6QnVpbGRQ
aGFzZSBzZWN0aW9uICovCisJCThEMDdGMkM1MDQ4NkNDN0EwMDdDRDFEMCAvKiBSZXogKi8gPSB7
CisJCQlpc2EgPSBQQlhSZXpCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4
MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOworCQl9OworLyogRW5kIFBCWFJlekJ1aWxkUGhhc2Ugc2VjdGlvbiAqLwor
CisvKiBCZWdpbiBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQk0MDI0RDE2
MTExM0Q3RDI0MDBDNzA1OUUgLyogU2hlbGxTY3JpcHQgKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVs
bFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJ
ZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCSk7CisJCQlvdXRwdXRQYXRo
cyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
KwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICIvYmluL2Jhc2ggJFNS
Q1JPT1QvcnVudGVzdHMuc2ggJEJVSUxUX1BST0RVQ1RTX0RJUi9XaWRnZXRGcmFtZXdvcmtUZXN0
XG4iOworCQl9OworLyogRW5kIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICovCisK
Ky8qIEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJM0IwN0JERTcwRTNG
M0Y5RTAwNjQ3ODY5IC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQ
aGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJ
CQkzQjdFQjEyODBFNUFFRTQ2MDBDN0YyMzkgLyogd2lkZ2V0X3Rlc3QuY2MgaW4gU291cmNlcyAq
LywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJ
fTsKKwkJOEQwN0YyQzEwNDg2Q0M3QTAwN0NEMUQwIC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2Eg
PSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7
CisJCQlmaWxlcyA9ICgKKwkJCQkzQjdFQjEyNTBFNUFFRTM1MDBDN0YyMzkgLyogd2lkZ2V0LmNj
IGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwor
CisvKiBCZWdpbiBQQlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rpb24gKi8KKwkJM0IwN0JERjEwRTNG
M0ZBRTAwNjQ3ODY5IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhU
YXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0gOEQwN0YyQkMwNDg2Q0M3QTAwN0NEMUQwIC8q
IFdpZGdldEZyYW1ld29yayAqLzsKKwkJCXRhcmdldFByb3h5ID0gM0IwN0JERjAwRTNGM0ZBRTAw
NjQ3ODY5IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsKKwkJNDAyNEQxNjYxMTNE
N0QzMTAwQzcwNTlFIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhU
YXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0gM0IwN0JERTkwRTNGM0Y5RTAwNjQ3ODY5IC8q
IFdpZGdldEZyYW1ld29ya1Rlc3QgKi87CisJCQl0YXJnZXRQcm94eSA9IDQwMjREMTY1MTEzRDdE
MzEwMEM3MDU5RSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07CisJCTQwMjREMUVE
MTEzRDg0MDkwMEM3MDU5RSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0g
UEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDhEMDdGMkJDMDQ4NkNDN0EwMDdDRDFE
MCAvKiBXaWRnZXRGcmFtZXdvcmsgKi87CisJCQl0YXJnZXRQcm94eSA9IDQwMjREMUVDMTEzRDg0
MDkwMEM3MDU5RSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07CisJCTQwMjREMUVG
MTEzRDg0MEQwMEM3MDU5RSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0g
UEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDQwMjREMTYyMTEzRDdEMjQwMEM3MDU5
RSAvKiBUZXN0ICovOworCQkJdGFyZ2V0UHJveHkgPSA0MDI0RDFFRTExM0Q4NDBEMDBDNzA1OUUg
LyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworLyogRW5kIFBCWFRhcmdldERlcGVu
ZGVuY3kgc2VjdGlvbiAqLworCisvKiBCZWdpbiBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9u
ICovCisJCTNCMDdCREVDMEUzRjNGOUYwMDY0Nzg2OSAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9
IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNU
X05BTUUgPSBXaWRnZXRGcmFtZXdvcmtUZXN0OworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJ
fTsKKwkJM0IwN0JERUQwRTNGM0Y5RjAwNjQ3ODY5IC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2Eg
PSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVD
VF9OQU1FID0gV2lkZ2V0RnJhbWV3b3JrVGVzdDsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsK
KwkJfTsKKwkJNDAyNEQxNjMxMTNEN0QyNDAwQzcwNTlFIC8qIERlYnVnICovID0geworCQkJaXNh
ID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RV
Q1RfTkFNRSA9IFRlc3RBbmRCdWlsZDsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJ
CTQwMjREMTY0MTEzRDdEMjQwMEM3MDU5RSAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENC
dWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFN
RSA9IFRlc3RBbmRCdWlsZDsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJNDAy
NEQxRUExMTNEODNGRjAwQzcwNTlFIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENv
bmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9IFRl
c3RBbmRCdWlsZDsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTQwMjREMUVCMTEz
RDgzRkYwMEM3MDU5RSAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3Vy
YXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9IFRlc3RBbmRC
dWlsZDsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJNEZBREMyNDMwOEI0MTU2
RDAwQUJFNTVFIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247
CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCURZTElCX0NPTVBBVElCSUxJVFlfVkVSU0lPTiA9
IDE7CisJCQkJRFlMSUJfQ1VSUkVOVF9WRVJTSU9OID0gMTsKKwkJCQlGUkFNRVdPUktfVkVSU0lP
TiA9IEE7CisJCQkJSU5GT1BMSVNUX0ZJTEUgPSBJbmZvLnBsaXN0OworCQkJCUlOU1RBTExfUEFU
SCA9ICJAbG9hZGVyX3BhdGgvLi4vRnJhbWV3b3JrcyI7CisJCQkJUFJPRFVDVF9OQU1FID0gV2lk
Z2V0OworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJNEZBREMyNDQwOEI0MTU2RDAw
QUJFNTVFIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsK
KwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRFlMSUJfQ09NUEFUSUJJTElUWV9WRVJTSU9OID0g
MTsKKwkJCQlEWUxJQl9DVVJSRU5UX1ZFUlNJT04gPSAxOworCQkJCUZSQU1FV09SS19WRVJTSU9O
ID0gQTsKKwkJCQlJTkZPUExJU1RfRklMRSA9IEluZm8ucGxpc3Q7CisJCQkJSU5TVEFMTF9QQVRI
ID0gIkBsb2FkZXJfcGF0aC8uLi9GcmFtZXdvcmtzIjsKKwkJCQlQUk9EVUNUX05BTUUgPSBXaWRn
ZXQ7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTRGQURDMjQ3MDhCNDE1NkQw
MEFCRTU1RSAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwor
CQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlHQ0NfVkVSU0lPTiA9IDQuMDsKKwkJCQlTREtST09U
ID0gL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkazsKKwkJCX07CisJCQluYW1lID0gRGVi
dWc7CisJCX07CisJCTRGQURDMjQ4MDhCNDE1NkQwMEFCRTU1RSAvKiBSZWxlYXNlICovID0gewor
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJ
CUdDQ19WRVJTSU9OID0gNC4wOworCQkJCVNES1JPT1QgPSAvRGV2ZWxvcGVyL1NES3MvTWFjT1NY
MTAuNHUuc2RrOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworLyogRW5kIFhDQnVp
bGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKworLyogQmVnaW4gWENDb25maWd1cmF0aW9uTGlz
dCBzZWN0aW9uICovCisJCTNCMDdCREY0MEUzRjNGQjYwMDY0Nzg2OSAvKiBCdWlsZCBjb25maWd1
cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiV2lkZ2V0RnJhbWV3b3JrVGVzdCIgKi8g
PSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9u
cyA9ICgKKwkJCQkzQjA3QkRFQzBFM0YzRjlGMDA2NDc4NjkgLyogRGVidWcgKi8sCisJCQkJM0Iw
N0JERUQwRTNGM0Y5RjAwNjQ3ODY5IC8qIFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENv
bmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0g
UmVsZWFzZTsKKwkJfTsKKwkJNDAyNEQxNjkxMTNEN0Q0NjAwQzcwNTlFIC8qIEJ1aWxkIGNvbmZp
Z3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJUZXN0IiAqLyA9IHsKKwkJCWlz
YSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJ
CTQwMjREMTYzMTEzRDdEMjQwMEM3MDU5RSAvKiBEZWJ1ZyAqLywKKwkJCQk0MDI0RDE2NDExM0Q3
RDI0MDBDNzA1OUUgLyogUmVsZWFzZSAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlv
bklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOwor
CQl9OworCQk0MDI0RDFGMDExM0Q4NDJCMDBDNzA1OUUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBs
aXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIlRlc3RBbmRCdWlsZCIgKi8gPSB7CisJCQlpc2Eg
PSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQk0
MDI0RDFFQTExM0Q4M0ZGMDBDNzA1OUUgLyogRGVidWcgKi8sCisJCQkJNDAyNEQxRUIxMTNEODNG
RjAwQzcwNTlFIC8qIFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25J
c1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKKwkJ
fTsKKwkJNEZBREMyNDIwOEI0MTU2RDAwQUJFNTVFIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlz
dCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJXaWRnZXRGcmFtZXdvcmsiICovID0geworCQkJaXNhID0g
WENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJNEZB
REMyNDMwOEI0MTU2RDAwQUJFNTVFIC8qIERlYnVnICovLAorCQkJCTRGQURDMjQ0MDhCNDE1NkQw
MEFCRTU1RSAvKiBSZWxlYXNlICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNW
aXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7CisJCX07
CisJCTRGQURDMjQ2MDhCNDE1NkQwMEFCRTU1RSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3Qg
Zm9yIFBCWFByb2plY3QgIldpZGdldEZyYW1ld29yayIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZp
Z3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQk0RkFEQzI0NzA4
QjQxNTZEMDBBQkU1NUUgLyogRGVidWcgKi8sCisJCQkJNEZBREMyNDgwOEI0MTU2RDAwQUJFNTVF
IC8qIFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUg
PSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKKwkJfTsKKy8qIEVu
ZCBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwl9OworCXJvb3RPYmplY3QgPSAwODY3
RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC94Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS9ydW50ZXN0cy5zaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L3hjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL3J1bnRlc3RzLnNoCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRhMGQ0MTNlNTJkZjc1ZDE1YzJhNGE5NTI1NmIzMmI2MDdmM2IzYWIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC94Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS9y
dW50ZXN0cy5zaApAQCAtMCwwICsxLDYyIEBACisjIS9iaW4vYmFzaAorIworIyBDb3B5cmlnaHQg
MjAwOCwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKKyMgRXhlY3V0ZXMgdGhlIHNhbXBsZXMgYW5kIHRlc3RzIGZvciB0aGUgR29vZ2xlIFRl
c3QgRnJhbWV3b3JrLgorCisjIEhlbHAgdGhlIGR5bmFtaWMgbGlua2VyIGZpbmQgdGhlIHBhdGgg
dG8gdGhlIGxpYnJhcmllcy4KK2V4cG9ydCBEWUxEX0ZSQU1FV09SS19QQVRIPSRCVUlMVF9QUk9E
VUNUU19ESVIKK2V4cG9ydCBEWUxEX0xJQlJBUllfUEFUSD0kQlVJTFRfUFJPRFVDVFNfRElSCisK
KyMgQ3JlYXRlIHNvbWUgZXhlY3V0YWJsZXMuCit0ZXN0X2V4ZWN1dGFibGVzPSRACisKKyMgTm93
IGV4ZWN1dGUgZWFjaCBvbmUgaW4gdHVybiBrZWVwaW5nIHRyYWNrIG9mIGhvdyBtYW55IHN1Y2Nl
ZWRlZCBhbmQgZmFpbGVkLgorc3VjY2VlZGVkPTAKK2ZhaWxlZD0wCitmYWlsZWRfbGlzdD0oKQor
Zm9yIHRlc3QgaW4gJHt0ZXN0X2V4ZWN1dGFibGVzWypdfTsgZG8KKyAgIiR0ZXN0IgorICByZXN1
bHQ9JD8KKyAgaWYgWyAkcmVzdWx0IC1lcSAwIF07IHRoZW4KKyAgICBzdWNjZWVkZWQ9JCgoICRz
dWNjZWVkZWQgKyAxICkpCisgIGVsc2UKKyAgICBmYWlsZWQ9JCgoIGZhaWxlZCArIDEgKSkKKyAg
ICBmYWlsZWRfbGlzdD0iJGZhaWxlZF9saXN0ICR0ZXN0IgorICBmaQorZG9uZQorCisjIFJlcG9y
dCB0aGUgc3VjY2Vzc2VzIGFuZCBmYWlsdXJlcyB0byB0aGUgY29uc29sZS4KK2VjaG8gIlRlc3Rz
IGNvbXBsZXRlIHdpdGggJHN1Y2NlZWRlZCBzdWNjZXNzZXMgYW5kICRmYWlsZWQgZmFpbHVyZXMu
IgoraWYgWyAkZmFpbGVkIC1uZSAwIF07IHRoZW4KKyAgZWNobyAiVGhlIGZvbGxvd2luZyB0ZXN0
cyBmYWlsZWQ6IgorICBlY2hvICRmYWlsZWRfbGlzdAorZmkKK2V4aXQgJGZhaWxlZApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvd2lkZ2V0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZXRlc3QveGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvd2lkZ2V0LmNjCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmJmYzRlN2ZjZmQwZTdhMDMyZjI2N2NjMGFhMTg3NTRjNzBhN2NhM2QKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC94Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS93
aWRnZXQuY2MKQEAgLTAsMCArMSw2MyBAQAorLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMu
CisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisv
LyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorLy8KKy8vIEF1dGhvcjogcHJlc3Rvbi5hLmphY2tzb25AZ21haWwuY29t
IChQcmVzdG9uIEphY2tzb24pCisvLworLy8gR29vZ2xlIFRlc3QgLSBGcmFtZXdvcmtTYW1wbGUK
Ky8vIHdpZGdldC5jYworLy8KKworLy8gV2lkZ2V0IGlzIGEgdmVyeSBzaW1wbGUgY2xhc3MgdXNl
ZCBmb3IgZGVtb25zdHJhdGluZyB0aGUgdXNlIG9mIGd0ZXN0CisKKyNpbmNsdWRlICJ3aWRnZXQu
aCIKKworV2lkZ2V0OjpXaWRnZXQoaW50IG51bWJlciwgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUp
CisgICAgOiBudW1iZXJfKG51bWJlciksCisgICAgICBuYW1lXyhuYW1lKSB7fQorCitXaWRnZXQ6
On5XaWRnZXQoKSB7fQorCitmbG9hdCBXaWRnZXQ6OkdldEZsb2F0VmFsdWUoKSBjb25zdCB7Cisg
IHJldHVybiBudW1iZXJfOworfQorCitpbnQgV2lkZ2V0OjpHZXRJbnRWYWx1ZSgpIGNvbnN0IHsK
KyAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4obnVtYmVyXyk7Cit9CisKK3N0ZDo6c3RyaW5nIFdp
ZGdldDo6R2V0U3RyaW5nVmFsdWUoKSBjb25zdCB7CisgIHJldHVybiBuYW1lXzsKK30KKwordm9p
ZCBXaWRnZXQ6OkdldENoYXJQdHJWYWx1ZShjaGFyKiBidWZmZXIsIHNpemVfdCBtYXhfc2l6ZSkg
Y29uc3QgeworICAvLyBDb3B5IHRoZSBjaGFyKiByZXByZXNlbnRhdGlvbiBvZiBuYW1lXyBpbnRv
IGJ1ZmZlciwgdXAgdG8gbWF4X3NpemUuCisgIHN0cm5jcHkoYnVmZmVyLCBuYW1lXy5jX3N0cigp
LCBtYXhfc2l6ZS0xKTsKKyAgYnVmZmVyW21heF9zaXplLTFdID0gJ1wwJzsKKyAgcmV0dXJuOwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUv
d2lkZ2V0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC94Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS93aWRn
ZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wYzU1Y2RjOGNmMDhhODM3MGUwMzMzM2FkN2U1OTNlMmIwYWQ0ZDkx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtT
YW1wbGUvd2lkZ2V0LmgKQEAgLTAsMCArMSw1OSBAQAorLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2ds
ZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEF1dGhvcjogcHJlc3Rvbi5hLmphY2tzb25AZ21h
aWwuY29tIChQcmVzdG9uIEphY2tzb24pCisvLworLy8gR29vZ2xlIFRlc3QgLSBGcmFtZXdvcmtT
YW1wbGUKKy8vIHdpZGdldC5oCisvLworCisvLyBXaWRnZXQgaXMgYSB2ZXJ5IHNpbXBsZSBjbGFz
cyB1c2VkIGZvciBkZW1vbnN0cmF0aW5nIHRoZSB1c2Ugb2YgZ3Rlc3QuIEl0CisvLyBzaW1wbHkg
c3RvcmVzIHR3byB2YWx1ZXMgYSBzdHJpbmcgYW5kIGFuIGludGVnZXIsIHdoaWNoIGFyZSByZXR1
cm5lZCB2aWEKKy8vIHB1YmxpYyBhY2Nlc3NvcnMgaW4gbXVsdGlwbGUgZm9ybXMuCisKKyNpbXBv
cnQgPHN0cmluZz4KKworY2xhc3MgV2lkZ2V0IHsKKyBwdWJsaWM6CisgIFdpZGdldChpbnQgbnVt
YmVyLCBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSk7CisgIH5XaWRnZXQoKTsKKworICAvLyBQdWJs
aWMgYWNjZXNzb3JzIHRvIG51bWJlciBkYXRhCisgIGZsb2F0IEdldEZsb2F0VmFsdWUoKSBjb25z
dDsKKyAgaW50IEdldEludFZhbHVlKCkgY29uc3Q7CisKKyAgLy8gUHVibGljIGFjY2Vzc29ycyB0
byB0aGUgc3RyaW5nIGRhdGEKKyAgc3RkOjpzdHJpbmcgR2V0U3RyaW5nVmFsdWUoKSBjb25zdDsK
KyAgdm9pZCBHZXRDaGFyUHRyVmFsdWUoY2hhciogYnVmZmVyLCBzaXplX3QgbWF4X3NpemUpIGNv
bnN0OworCisgcHJpdmF0ZToKKyAgLy8gRGF0YSBtZW1iZXJzCisgIGZsb2F0IG51bWJlcl87Cisg
IHN0ZDo6c3RyaW5nIG5hbWVfOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3hjb2RlL1Nh
bXBsZXMvRnJhbWV3b3JrU2FtcGxlL3dpZGdldF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUv
U2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvd2lkZ2V0X3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODcyNTk5
NDIxODUxNDA4ZTc2YWFiNmM1NjBiODE4OTI0NTliYmQyZAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGV0ZXN0L3hjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL3dpZGdldF90ZXN0LmNjCkBA
IC0wLDAgKzEsNjggQEAKKy8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgorLy8gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1l
dDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisv
LworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKy8vCisvLyBBdXRob3I6IHByZXN0b24uYS5qYWNrc29uQGdtYWlsLmNvbSAoUHJlc3RvbiBK
YWNrc29uKQorLy8KKy8vIEdvb2dsZSBUZXN0IC0gRnJhbWV3b3JrU2FtcGxlCisvLyB3aWRnZXRf
dGVzdC5jYworLy8KKworLy8gVGhpcyBpcyBhIHNpbXBsZSB0ZXN0IGZpbGUgZm9yIHRoZSBXaWRn
ZXQgY2xhc3MgaW4gdGhlIFdpZGdldC5mcmFtZXdvcmsKKworI2luY2x1ZGUgPHN0cmluZz4KKyNp
bmNsdWRlICJndGVzdC9ndGVzdC5oIgorCisjaW5jbHVkZSA8V2lkZ2V0L3dpZGdldC5oPgorCisv
LyBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB0aGUgY29uc3RydWN0b3Igc2V0cyB0aGUgaW50ZXJu
YWwgc3RhdGUgb2YgdGhlCisvLyBXaWRnZXQgY2xhc3MgY29ycmVjdGx5LgorVEVTVChXaWRnZXRJ
bml0aWFsaXplclRlc3QsIFRlc3RDb25zdHJ1Y3RvcikgeworICBXaWRnZXQgd2lkZ2V0KDEuMGYs
ICJuYW1lIik7CisgIEVYUEVDVF9GTE9BVF9FUSgxLjBmLCB3aWRnZXQuR2V0RmxvYXRWYWx1ZSgp
KTsKKyAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5nKCJuYW1lIiksIHdpZGdldC5HZXRTdHJpbmdWYWx1
ZSgpKTsKK30KKworLy8gVGhpcyB0ZXN0IHZlcmlmaWVzIHRoZSBjb252ZXJzaW9uIG9mIHRoZSBm
bG9hdCBhbmQgc3RyaW5nIHZhbHVlcyB0byBpbnQgYW5kCisvLyBjaGFyKiwgcmVzcGVjdGl2ZWx5
LgorVEVTVChXaWRnZXRJbml0aWFsaXplclRlc3QsIFRlc3RDb252ZXJzaW9uKSB7CisgIFdpZGdl
dCB3aWRnZXQoMS4wZiwgIm5hbWUiKTsKKyAgRVhQRUNUX0VRKDEsIHdpZGdldC5HZXRJbnRWYWx1
ZSgpKTsKKworICBzaXplX3QgbWF4X3NpemUgPSAxMjg7CisgIGNoYXIgYnVmZmVyW21heF9zaXpl
XTsKKyAgd2lkZ2V0LkdldENoYXJQdHJWYWx1ZShidWZmZXIsIG1heF9zaXplKTsKKyAgRVhQRUNU
X1NUUkVRKCJuYW1lIiwgYnVmZmVyKTsKK30KKworLy8gVXNlIHRoZSBHb29nbGUgVGVzdCBtYWlu
IHRoYXQgaXMgbGlua2VkIGludG8gdGhlIGZyYW1ld29yay4gSXQgZG9lcyBzb21ldGhpbmcKKy8v
IGxpa2UgdGhpczoKKy8vIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgeworLy8gICB0
ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisvLyAgIHJldHVybiBSVU5fQUxM
X1RFU1RTKCk7CisvLyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC94Y29kZS9TY3JpcHRzL3J1
bnRlc3RzLnNoIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUvU2NyaXB0cy9ydW50ZXN0cy5zaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zZmMyMjlmMWQ0YWI2ZjI3Y2Q4N2QzNTY3YWM4YmI5NjAzNDg2MmExCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUvU2NyaXB0cy9ydW50ZXN0cy5zaApAQCAtMCwwICsx
LDY1IEBACisjIS9iaW4vYmFzaAorIworIyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKyMg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMg
bWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
IyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgRXhlY3V0ZXMgdGhl
IHNhbXBsZXMgYW5kIHRlc3RzIGZvciB0aGUgR29vZ2xlIFRlc3QgRnJhbWV3b3JrLgorCisjIEhl
bHAgdGhlIGR5bmFtaWMgbGlua2VyIGZpbmQgdGhlIHBhdGggdG8gdGhlIGxpYnJhcmllcy4KK2V4
cG9ydCBEWUxEX0ZSQU1FV09SS19QQVRIPSRCVUlMVF9QUk9EVUNUU19ESVIKK2V4cG9ydCBEWUxE
X0xJQlJBUllfUEFUSD0kQlVJTFRfUFJPRFVDVFNfRElSCisKKyMgQ3JlYXRlIHNvbWUgZXhlY3V0
YWJsZXMuCit0ZXN0X2V4ZWN1dGFibGVzPSgiJEJVSUxUX1BST0RVQ1RTX0RJUi9ndGVzdF91bml0
dGVzdC1mcmFtZXdvcmsiCisgICAgICAgICAgICAgICAgICAiJEJVSUxUX1BST0RVQ1RTX0RJUi9n
dGVzdF91bml0dGVzdCIKKyAgICAgICAgICAgICAgICAgICIkQlVJTFRfUFJPRFVDVFNfRElSL3Nh
bXBsZTFfdW5pdHRlc3QtZnJhbWV3b3JrIgorICAgICAgICAgICAgICAgICAgIiRCVUlMVF9QUk9E
VUNUU19ESVIvc2FtcGxlMV91bml0dGVzdC1zdGF0aWMiKQorCisjIE5vdyBleGVjdXRlIGVhY2gg
b25lIGluIHR1cm4ga2VlcGluZyB0cmFjayBvZiBob3cgbWFueSBzdWNjZWVkZWQgYW5kIGZhaWxl
ZC4gCitzdWNjZWVkZWQ9MAorZmFpbGVkPTAKK2ZhaWxlZF9saXN0PSgpCitmb3IgdGVzdCBpbiAk
e3Rlc3RfZXhlY3V0YWJsZXNbKl19OyBkbworICAiJHRlc3QiCisgIHJlc3VsdD0kPworICBpZiBb
ICRyZXN1bHQgLWVxIDAgXTsgdGhlbgorICAgIHN1Y2NlZWRlZD0kKCggJHN1Y2NlZWRlZCArIDEg
KSkKKyAgZWxzZQorICAgIGZhaWxlZD0kKCggZmFpbGVkICsgMSApKQorICAgIGZhaWxlZF9saXN0
PSIkZmFpbGVkX2xpc3QgJHRlc3QiCisgIGZpCitkb25lCisKKyMgUmVwb3J0IHRoZSBzdWNjZXNz
ZXMgYW5kIGZhaWx1cmVzIHRvIHRoZSBjb25zb2xlLgorZWNobyAiVGVzdHMgY29tcGxldGUgd2l0
aCAkc3VjY2VlZGVkIHN1Y2Nlc3NlcyBhbmQgJGZhaWxlZCBmYWlsdXJlcy4iCitpZiBbICRmYWls
ZWQgLW5lIDAgXTsgdGhlbgorICBlY2hvICJUaGUgZm9sbG93aW5nIHRlc3RzIGZhaWxlZDoiCisg
IGVjaG8gJGZhaWxlZF9saXN0CitmaQorZXhpdCAkZmFpbGVkCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC94Y29kZS9TY3JpcHRzL3ZlcnNpb25nZW5lcmF0ZS5weSBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3hjb2Rl
L1NjcmlwdHMvdmVyc2lvbmdlbmVyYXRlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxZGU4Yzk2YWM1ZDg2Y2E2
Mzk0NTZjOTBjNDMzMDY3YmRmZDQwZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC94
Y29kZS9TY3JpcHRzL3ZlcnNpb25nZW5lcmF0ZS5weQpAQCAtMCwwICsxLDEwMCBAQAorIyEvdXNy
L2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgorIyBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6
CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiQSBzY3JpcHQgdG8gcHJl
cGFyZSB2ZXJzaW9uIGluZm9ybXRpb24gZm9yIHVzZSB0aGUgZ3Rlc3QgSW5mby5wbGlzdCBmaWxl
LgorCisgIFRoaXMgc2NyaXB0IGV4dHJhY3RzIHRoZSB2ZXJzaW9uIGluZm9ybWF0aW9uIGZyb20g
dGhlIGNvbmZpZ3VyZS5hYyBmaWxlIGFuZAorICB1c2VzIGl0IHRvIGdlbmVyYXRlIGEgaGVhZGVy
IGZpbGUgY29udGFpbmluZyB0aGUgc2FtZSBpbmZvcm1hdGlvbi4gVGhlCisgICNkZWZpbmVzIGlu
IHRoaXMgaGVhZGVyIGZpbGUgd2lsbCBiZSBpbmNsdWRlZCBpbiBkdXJpbmcgdGhlIGdlbmVyYXRp
b24gb2YKKyAgdGhlIEluZm8ucGxpc3Qgb2YgdGhlIGZyYW1ld29yaywgZ2l2aW5nIHRoZSBjb3Jy
ZWN0IHZhbHVlIHRvIHRoZSB2ZXJzaW9uCisgIHNob3duIGluIHRoZSBGaW5kZXIuCisKKyAgVGhp
cyBzY3JpcHQgbWFrZXMgdGhlIGZvbGxvd2luZyBhc3N1bXB0aW9ucyAodGhlc2UgYXJlIGZhdWx0
cyBvZiB0aGUgc2NyaXB0LAorICBub3QgcHJvYmxlbXMgd2l0aCB0aGUgQXV0b2NvbmYpOgorICAg
IDEuIFRoZSBBQ19JTklUIG1hY3JvIHdpbGwgYmUgY29udGFpbmVkIHdpdGhpbiB0aGUgZmlyc3Qg
MTAyNCBjaGFyYWN0ZXJzCisgICAgICAgb2YgY29uZmlndXJlLmFjCisgICAgMi4gVGhlIHZlcnNp
b24gc3RyaW5nIHdpbGwgYmUgMyBpbnRlZ2VycyBzZXBhcmF0ZWQgYnkgcGVyaW9kcyBhbmQgd2ls
bCBiZQorICAgICAgIHN1cnJvdW5kZWQgYnkgc3F1cmUgYnJhY2tldHMsICJbIiBhbmQgIl0iIChl
LmcuIFsxLjAuMV0pLiBUaGUgZmlyc3QKKyAgICAgICBzZWdtZW50IHJlcHJlc2VudHMgdGhlIG1h
am9yIHZlcnNpb24sIHRoZSBzZWNvbmQgcmVwcmVzZW50cyB0aGUgbWlub3IKKyAgICAgICB2ZXJz
aW9uIGFuZCB0aGUgdGhpcmQgcmVwcmVzZW50cyB0aGUgZml4IHZlcnNpb24uCisgICAgMy4gTm8g
IikiIGNoYXJhY3RlciBleGlzdHMgYmV0d2VlbiB0aGUgb3BlbmluZyAiKCIgYW5kIGNsb3Npbmcg
IikiIG9mCisgICAgICAgQUNfSU5JVCwgaW5jbHVkaW5nIGluIGNvbW1lbnRzIGFuZCBjaGFyYWN0
ZXIgc3RyaW5ncy4KKyIiIgorCitpbXBvcnQgc3lzCitpbXBvcnQgcmUKKworIyBSZWFkIHRoZSBj
b21tYW5kIGxpbmUgYXJndW1lbnQgKHRoZSBvdXRwdXQgZGlyZWN0b3J5IGZvciBWZXJzaW9uLmgp
CitpZiAobGVuKHN5cy5hcmd2KSA8IDMpOgorICBwcmludCAiVXNhZ2U6IHZlcnNpb25nZW5lcmF0
ZS5weSBpbnB1dF9kaXIgb3V0cHV0X2RpciIKKyAgc3lzLmV4aXQoMSkKK2Vsc2U6CisgIGlucHV0
X2RpciA9IHN5cy5hcmd2WzFdCisgIG91dHB1dF9kaXIgPSBzeXMuYXJndlsyXQorCisjIFJlYWQg
dGhlIGZpcnN0IDEwMjQgY2hhcmFjdGVycyBvZiB0aGUgY29uZmlndXJlLmFjIGZpbGUKK2NvbmZp
Z19maWxlID0gb3BlbigiJXMvY29uZmlndXJlLmFjIiAlIGlucHV0X2RpciwgJ3InKQorYnVmZmVy
X3NpemUgPSAxMDI0CitvcGVuaW5nX3N0cmluZyA9IGNvbmZpZ19maWxlLnJlYWQoYnVmZmVyX3Np
emUpCitjb25maWdfZmlsZS5jbG9zZSgpCisKKyMgRXh0cmFjdCB0aGUgdmVyc2lvbiBzdHJpbmcg
ZnJvbSB0aGUgQUNfSU5JVCBtYWNybworIyAgIFRoZSBmb2xsb3dpbmcgaW5pdF9leHByZXNzaW9u
IG1lYW5zOgorIyAgICAgRXh0cmFjdCB0aHJlZSBpbnRlZ2VycyBzZXBhcmF0ZWQgYnkgcGVyaW9k
cyBhbmQgc3Vycm91bmRlZCBieSBzcXVyZQorIyAgICAgYnJhY2tldHMoZS5nLiAiWzEuMC4xXSIp
IGJldHdlZW4gIkFDX0lOSVQoIiBhbmQgIikiLiBEbyBub3QgYmUgZ3JlZWR5CisjICAgICAoKj8g
aXMgdGhlIG5vbi1ncmVlZHkgZmxhZykgc2luY2UgdGhhdCB3b3VsZCBwdWxsIGluIGV2ZXJ5dGhp
bmcgYmV0d2VlbgorIyAgICAgdGhlIGZpcnN0ICIoIiBhbmQgdGhlIGxhc3QgIikiIGluIHRoZSBm
aWxlLgordmVyc2lvbl9leHByZXNzaW9uID0gcmUuY29tcGlsZShyIkFDX0lOSVRcKC4qP1xbKFxk
KylcLihcZCspXC4oXGQrKVxdLio/XCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZS5ET1RBTEwpCit2ZXJzaW9uX3ZhbHVlcyA9IHZlcnNpb25fZXhwcmVzc2lvbi5zZWFyY2go
b3BlbmluZ19zdHJpbmcpCittYWpvcl92ZXJzaW9uID0gdmVyc2lvbl92YWx1ZXMuZ3JvdXAoMSkK
K21pbm9yX3ZlcnNpb24gPSB2ZXJzaW9uX3ZhbHVlcy5ncm91cCgyKQorZml4X3ZlcnNpb24gPSB2
ZXJzaW9uX3ZhbHVlcy5ncm91cCgzKQorCisjIFdyaXRlIHRoZSB2ZXJzaW9uIGluZm9ybWF0aW9u
IHRvIGEgaGVhZGVyIGZpbGUgdG8gYmUgaW5jbHVkZWQgaW4gdGhlCisjIEluZm8ucGxpc3QgZmls
ZS4KK2ZpbGVfZGF0YSA9ICIiIi8vCisvLyBETyBOT1QgTU9ESUZZIFRISVMgRklMRSAoYnV0IHlv
dSBjYW4gZGVsZXRlIGl0KQorLy8KKy8vIFRoaXMgZmlsZSBpcyBhdXRvZ2VuZXJhdGVkIGJ5IHRo
ZSB2ZXJzaW9uZ2VuZXJhdGUucHkgc2NyaXB0LiBUaGlzIHNjcmlwdAorLy8gaXMgZXhlY3V0ZWQg
aW4gYSAiUnVuIFNjcmlwdCIgYnVpbGQgcGhhc2Ugd2hlbiBjcmVhdGluZyBndGVzdC5mcmFtZXdv
cmsuIFRoaXMKKy8vIGhlYWRlciBmaWxlIGlzIG5vdCB1c2VkIGR1cmluZyBjb21waWxhdGlvbiBv
ZiBDLXNvdXJjZS4gUmF0aGVyLCBpdCBzaW1wbHkKKy8vIGRlZmluZXMgc29tZSB2ZXJzaW9uIHN0
cmluZ3MgZm9yIHN1YnN0aXR1dGlvbiBpbiB0aGUgSW5mby5wbGlzdC4gQmVjYXVzZSBvZgorLy8g
dGhpcywgd2UgYXJlIG5vdCBub3QgcmVzdHJpY3RlZCB0byBDLXN5bnRheCBub3IgYXJlIHdlIHVz
aW5nIGluY2x1ZGUgZ3VhcmRzLgorLy8KKworI2RlZmluZSBHVEVTVF9WRVJTSU9OSU5GT19TSE9S
VCAlcy4lcworI2RlZmluZSBHVEVTVF9WRVJTSU9OSU5GT19MT05HICVzLiVzLiVzCisKKyIiIiAl
IChtYWpvcl92ZXJzaW9uLCBtaW5vcl92ZXJzaW9uLCBtYWpvcl92ZXJzaW9uLCBtaW5vcl92ZXJz
aW9uLCBmaXhfdmVyc2lvbikKK3ZlcnNpb25fZmlsZSA9IG9wZW4oIiVzL1ZlcnNpb24uaCIgJSBv
dXRwdXRfZGlyLCAndycpCit2ZXJzaW9uX2ZpbGUud3JpdGUoZmlsZV9kYXRhKQordmVyc2lvbl9m
aWxlLmNsb3NlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3hjb2RlL2d0ZXN0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC94Y29kZS9ndGVzdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwNWQ5NmZmYTg4ZTY2MDY5ODhmMGVmOGE0YzZkN2Q4
NjM5YzdiZjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC94Y29kZS9ndGVzdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0wLDAgKzEsMTE4MiBAQAorLy8gISQqVVRGOCokIQor
eworCWFyY2hpdmVWZXJzaW9uID0gMTsKKwljbGFzc2VzID0geworCX07CisJb2JqZWN0VmVyc2lv
biA9IDQ2OworCW9iamVjdHMgPSB7CisKKy8qIEJlZ2luIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0
aW9uICovCisJCTNCMjM4RjVGMEU4MjhCNTQwMDg0NkUxMSAvKiBDaGVjayAqLyA9IHsKKwkJCWlz
YSA9IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAzQjIz
OEZBMzBFODI4QkI2MDA4NDZFMTEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhB
Z2dyZWdhdGVUYXJnZXQgIkNoZWNrIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTNCMjM4
RjVFMEU4MjhCNTQwMDg0NkUxMSAvKiBTaGVsbFNjcmlwdCAqLywKKwkJCSk7CisJCQlkZXBlbmRl
bmNpZXMgPSAoCisJCQkJNDA4OTlGOUQwRkZBNzQwRjAwMEIyOUFFIC8qIFBCWFRhcmdldERlcGVu
ZGVuY3kgKi8sCisJCQkJNDBDODQ5RjcxMDFBNDM0NDAwODM2NDJBIC8qIFBCWFRhcmdldERlcGVu
ZGVuY3kgKi8sCisJCQkJNDA4OUEwOTgwRkZBRDM0QTAwMEIyOUFFIC8qIFBCWFRhcmdldERlcGVu
ZGVuY3kgKi8sCisJCQkJNDBDODQ5RjkxMDFBNDM0OTAwODM2NDJBIC8qIFBCWFRhcmdldERlcGVu
ZGVuY3kgKi8sCisJCQkpOworCQkJbmFtZSA9IENoZWNrOworCQkJcHJvZHVjdE5hbWUgPSBDaGVj
azsKKwkJfTsKKwkJNDBDNDRBREMwRTM3OThGNDAwOEZDQzUxIC8qIFZlcnNpb24gSW5mbyAqLyA9
IHsKKwkJCWlzYSA9IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxp
c3QgPSA0MEM0NEFFNDBFMzc5OTA1MDA4RkNDNTEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0
IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIlZlcnNpb24gSW5mbyIgKi87CisJCQlidWlsZFBoYXNl
cyA9ICgKKwkJCQk0MEM0NEFEQjBFMzc5OEY0MDA4RkNDNTEgLyogR2VuZXJhdGUgVmVyc2lvbi5o
ICovLAorCQkJKTsKKwkJCWNvbW1lbnRzID0gIlRoZSBnZW5lcmF0aW9uIG9mIFZlcnNpb24uaCBt
dXN0IGJlIHBlcmZvcm1lZCBpbiBpdHMgb3duIHRhcmdldC4gU2luY2UgdGhlIEluZm8ucGxpc3Qg
aXMgcHJlcHJvY2Vzc2VkIGJlZm9yZSBhbnkgb2YgdGhlIG90aGVyIGJ1aWxkIHBoYXNlcyBpbiBn
dGVzdCwgdGhlIFZlcnNpb24uaCBmaWxlIHdvdWxkIG5vdCBiZSByZWFkeSBpZiBpbmNsdWRlZCBh
cyBhIGJ1aWxkIHBoYXNlIG9mIHRoYXQgdGFyZ2V0LiI7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJ
CQkpOworCQkJbmFtZSA9ICJWZXJzaW9uIEluZm8iOworCQkJcHJvZHVjdE5hbWUgPSBWZXJzaW9u
Lmg7CisJCX07CisvKiBFbmQgUEJYQWdncmVnYXRlVGFyZ2V0IHNlY3Rpb24gKi8KKworLyogQmVn
aW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KKwkJMjI0QTEyQTMwRTlFQURDQzAwQkQxN0ZEIC8q
IGd0ZXN0LXRlc3QtcGFydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMjI0QTEyQTIwRTlFQURDQzAwQkQxN0ZEIC8qIGd0ZXN0LXRlc3QtcGFydC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJM0JGNkYyQTAw
RTc5QjVBRDAwMEYyRUVFIC8qIGd0ZXN0LXR5cGUtdXRpbC5oIGluIENvcHkgSGVhZGVycyBJbnRl
cm5hbCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzQkY2RjI5RjBFNzlCNUFE
MDAwRjJFRUUgLyogZ3Rlc3QtdHlwZS11dGlsLmggKi87IH07CisJCTNCRjZGMkE1MEU3OUI2MTYw
MDBGMkVFRSAvKiBndGVzdC10eXBlZC10ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzQkY2RjJBNDBFNzlCNjE2MDAwRjJFRUUgLyogZ3Rlc3QtdHlw
ZWQtdGVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsK
KwkJNDA0ODg0MzgwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LWRlYXRoLXRlc3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4M0RCMEUyRjc5OUIw
MENGNzY1OCAvKiBndGVzdC1kZWF0aC10ZXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHVibGljLCApOyB9OyB9OworCQk0MDQ4ODQzOTBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3Qt
bWVzc2FnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDA0ODgzREMwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LW1lc3NhZ2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCTQwNDg4NDNBMEUyRjc5OUIwMENG
NzY1OCAvKiBndGVzdC1zcGkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQwNDg4M0REMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1zcGkuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCTQwNDg4NDNCMEUyRjc5
OUIwMENGNzY1OCAvKiBndGVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDA0ODgzREUwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQk0MDQ4ODQzQzBFMkY3OTlC
MDBDRjc2NTggLyogZ3Rlc3RfcHJlZF9pbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MDQ4ODNERjBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3RfcHJl
ZF9pbXBsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9Owor
CQk0MDQ4ODQzRDBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3RfcHJvZC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA0ODgzRTAwRTJGNzk5QjAwQ0Y3NjU4
IC8qIGd0ZXN0X3Byb2QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7
IH07IH07CisJCTQwNDg4NDUwMEUyRjc5OUIwMENGNzY1OCAvKiBSRUFETUUubWQgaW4gUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4M0Y2MEUyRjc5OUIw
MENGNzY1OCAvKiBSRUFETUUubWQgKi87IH07CisJCTQwNDg4NEEwMEUyRjdCRTYwMENGNzY1OCAv
KiBndGVzdC1kZWF0aC10ZXN0LWludGVybmFsLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4M0UyMEUyRjc5OUIwMENGNzY1
OCAvKiBndGVzdC1kZWF0aC10ZXN0LWludGVybmFsLmggKi87IH07CisJCTQwNDg4NEExMEUyRjdC
RTYwMENGNzY1OCAvKiBndGVzdC1maWxlcGF0aC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDQ4ODNFMzBFMkY3OTlCMDBDRjc2
NTggLyogZ3Rlc3QtZmlsZXBhdGguaCAqLzsgfTsKKwkJNDA0ODg0QTIwRTJGN0JFNjAwQ0Y3NjU4
IC8qIGd0ZXN0LWludGVybmFsLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4M0U0MEUyRjc5OUIwMENGNzY1OCAvKiBndGVz
dC1pbnRlcm5hbC5oICovOyB9OworCQk0MDQ4ODRBMzBFMkY3QkU2MDBDRjc2NTggLyogZ3Rlc3Qt
cG9ydC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MDQ4ODNFNTBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QtcG9ydC5oICovOyB9
OworCQk0MDQ4ODRBNDBFMkY3QkU2MDBDRjc2NTggLyogZ3Rlc3Qtc3RyaW5nLmggaW4gQ29weSBI
ZWFkZXJzIEludGVybmFsICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4
M0U2MEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1zdHJpbmcuaCAqLzsgfTsKKwkJNDA0ODg0QUMw
RTJGN0NEOTAwQ0Y3NjU4IC8qIENIQU5HRVMgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4NEE5MEUyRjdDRDkwMENGNzY1OCAvKiBDSEFOR0VTICov
OyB9OworCQk0MDQ4ODRBRDBFMkY3Q0Q5MDBDRjc2NTggLyogQ09OVFJJQlVUT1JTIGluIFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDQ4ODRBQTBFMkY3Q0Q5
MDBDRjc2NTggLyogQ09OVFJJQlVUT1JTICovOyB9OworCQk0MDQ4ODRBRTBFMkY3Q0Q5MDBDRjc2
NTggLyogTElDRU5TRSBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDA0ODg0QUIwRTJGN0NEOTAwQ0Y3NjU4IC8qIExJQ0VOU0UgKi87IH07CisJCTQwODk5
RjNBMEZGQTcwRDQwMDBCMjlBRSAvKiBndGVzdC1hbGwuY2MgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMjRBMTJBMTBFOUVBREE3MDBCRDE3RkQgLyogZ3Rl
c3QtYWxsLmNjICovOyB9OworCQk0MDg5OUY1MDBGRkE3MjgxMDAwQjI5QUUgLyogZ3Rlc3QtdHVw
bGUuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDA4OTlGNEQwRkZBNzI3MTAwMEIyOUFFIC8qIGd0ZXN0LXR1cGxlLmggKi87IH07
CisJCTQwODk5RjUzMEZGQTcyQTAwMDBCMjlBRSAvKiBndGVzdF91bml0dGVzdC5jYyBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNCMjM4QzEyMEU3RkUxM0Mw
MDg0NkUxMSAvKiBndGVzdF91bml0dGVzdC5jYyAqLzsgfTsKKwkJNDA4OUEwNDQwRkZBRDFCRTAw
MEIyOUFFIC8qIHNhbXBsZTEuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MDg5QTAyQzBGRkFDRjdGMDAwQjI5QUUgLyogc2FtcGxlMS5jYyAqLzsgfTsK
KwkJNDA4OUEwNDYwRkZBRDFCRTAwMEIyOUFFIC8qIHNhbXBsZTFfdW5pdHRlc3QuY2MgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDg5QTAyRTBGRkFDRjdG
MDAwQjI5QUUgLyogc2FtcGxlMV91bml0dGVzdC5jYyAqLzsgfTsKKwkJNDBDODQ4RkYxMDFBMjEx
NTAwODM2NDJBIC8qIGd0ZXN0LWFsbC5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDIyNEExMkExMEU5RUFEQTcwMEJEMTdGRCAvKiBndGVzdC1hbGwuY2Mg
Ki87IH07CisJCTQwQzg0OTE1MTAxQTIxREYwMDgzNjQyQSAvKiBndGVzdF9tYWluLmNjIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA0ODg0MEQwRTJGNzk5
QjAwQ0Y3NjU4IC8qIGd0ZXN0X21haW4uY2MgKi87IH07CisJCTQwQzg0OTE2MTAxQTIzNUIwMDgz
NjQyQSAvKiBsaWJndGVzdF9tYWluLmEgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MEM4NDkwQjEwMUEyMTdFMDA4MzY0MkEgLyogbGliZ3Rlc3RfbWFp
bi5hICovOyB9OworCQk0MEM4NDkyMTEwMUEyM0FEMDA4MzY0MkEgLyogbGliZ3Rlc3RfbWFpbi5h
IGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDBDODQ5
MEIxMDFBMjE3RTAwODM2NDJBIC8qIGxpYmd0ZXN0X21haW4uYSAqLzsgfTsKKwkJNDBDODQ5Nzgx
MDFBMzY1NDAwODM2NDJBIC8qIGxpYmd0ZXN0X21haW4uYSBpbiBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDBDODQ5MEIxMDFBMjE3RTAwODM2NDJBIC8qIGxp
Ymd0ZXN0X21haW4uYSAqLzsgfTsKKwkJNDBDODQ5ODAxMDFBMzY4NTAwODM2NDJBIC8qIGd0ZXN0
X3VuaXR0ZXN0LmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gM0IyMzhDMTIwRTdGRTEzQzAwODQ2RTExIC8qIGd0ZXN0X3VuaXR0ZXN0LmNjICovOyB9Owor
CQk0MEM4NDk4MjEwMUEzNjg1MDA4MzY0MkEgLyogbGliZ3Rlc3QuYSBpbiBGcmFtZXdvcmtzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwQzg0OEZBMTAxQTIwOUMwMDgzNjQy
QSAvKiBsaWJndGVzdC5hICovOyB9OworCQk0MEM4NDk4MzEwMUEzNjg1MDA4MzY0MkEgLyogbGli
Z3Rlc3RfbWFpbi5hIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDBDODQ5MEIxMDFBMjE3RTAwODM2NDJBIC8qIGxpYmd0ZXN0X21haW4uYSAqLzsgfTsK
KwkJNDBDODQ5OEYxMDFBMzZBNjAwODM2NDJBIC8qIHNhbXBsZTEuY2MgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDg5QTAyQzBGRkFDRjdGMDAwQjI5QUUg
Lyogc2FtcGxlMS5jYyAqLzsgfTsKKwkJNDBDODQ5OTAxMDFBMzZBNjAwODM2NDJBIC8qIHNhbXBs
ZTFfdW5pdHRlc3QuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MDg5QTAyRTBGRkFDRjdGMDAwQjI5QUUgLyogc2FtcGxlMV91bml0dGVzdC5jYyAqLzsg
fTsKKwkJNDBDODQ5OTIxMDFBMzZBNjAwODM2NDJBIC8qIGxpYmd0ZXN0LmEgaW4gRnJhbWV3b3Jr
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MEM4NDhGQTEwMUEyMDlDMDA4
MzY0MkEgLyogbGliZ3Rlc3QuYSAqLzsgfTsKKwkJNDBDODQ5OTMxMDFBMzZBNjAwODM2NDJBIC8q
IGxpYmd0ZXN0X21haW4uYSBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQwQzg0OTBCMTAxQTIxN0UwMDgzNjQyQSAvKiBsaWJndGVzdF9tYWluLmEgKi87
IH07CisJCTQwQzg0OUEyMTAxQTM3MDUwMDgzNjQyQSAvKiBndGVzdC5mcmFtZXdvcmsgaW4gRnJh
bWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NTM5QzhGRjBFQzI3
RjY0MDBBNzBGNEMgLyogZ3Rlc3QuZnJhbWV3b3JrICovOyB9OworCQk0MEM4NDlBNDEwMUEzNzE1
MDA4MzY0MkEgLyogZ3Rlc3QuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDUzOUM4RkYwRUMyN0Y2NDAwQTcwRjRDIC8qIGd0ZXN0LmZy
YW1ld29yayAqLzsgfTsKKwkJNDUzOUM5MzQwRUMyODBBRTAwQTcwRjRDIC8qIGd0ZXN0LXBhcmFt
LXRlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1
MzlDOTMzMEVDMjgwQUUwMEE3MEY0QyAvKiBndGVzdC1wYXJhbS10ZXN0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQk0NTM5QzkzODBFQzI4MEUyMDBB
NzBGNEMgLyogZ3Rlc3QtbGlua2VkX3B0ci5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NTM5QzkzNTBFQzI4MEUyMDBBNzBGNEMg
LyogZ3Rlc3QtbGlua2VkX3B0ci5oICovOyB9OworCQk0NTM5QzkzOTBFQzI4MEUyMDBBNzBGNEMg
LyogZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDUzOUM5MzYwRUMyODBFMjAwQTcw
RjRDIC8qIGd0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmggKi87IH07CisJCTQ1MzlDOTNBMEVD
MjgwRTIwMEE3MEY0QyAvKiBndGVzdC1wYXJhbS11dGlsLmggaW4gQ29weSBIZWFkZXJzIEludGVy
bmFsICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1MzlDOTM3MEVDMjgwRTIw
MEE3MEY0QyAvKiBndGVzdC1wYXJhbS11dGlsLmggKi87IH07CisJCTQ1NjdDODE4MTI2NEZGNzEw
MDc3NDBCRSAvKiBndGVzdC1wcmludGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDU2N0M4MTcxMjY0RkY3MTAwNzc0MEJFIC8qIGd0ZXN0LXByaW50
ZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQlG
NjdENEYzRTFDN0Y1RDhCMDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC1hcmNoLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjdENEYzRDFDN0Y1RDhCMDAxN0M3
MjkgLyogZ3Rlc3QtcG9ydC1hcmNoLmggKi87IH07CisJCUY2N0Q0RjNGMUM3RjVEQTcwMDE3Qzcy
OSAvKiBndGVzdC1wb3J0LWFyY2guaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY3RDRGM0QxQzdGNUQ4QjAwMTdDNzI5IC8qIGd0
ZXN0LXBvcnQtYXJjaC5oICovOyB9OworCQlGNjdENEY0NDFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rl
c3QtcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjY3RDRGNDExQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LXBvcnQuaCAqLzsgfTsKKwkJRjY3RDRG
NDUxQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LXByaW50ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjdENEY0MjFDN0Y1REQwMDAxN0M3MjkgLyog
Z3Rlc3QtcHJpbnRlcnMuaCAqLzsgfTsKKwkJRjY3RDRGNDYxQzdGNUREMDAwMTdDNzI5IC8qIGd0
ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjdE
NEY0MzFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QuaCAqLzsgfTsKKwkJRjY3RDRGNDgxQzdGNUUx
NjAwMTdDNzI5IC8qIGd0ZXN0LXBvcnQuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgQ3VzdG9t
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2N0Q0RjQxMUM3RjVERDAwMDE3
QzcyOSAvKiBndGVzdC1wb3J0LmggKi87IH07CisJCUY2N0Q0RjQ5MUM3RjVFMjYwMDE3QzcyOSAv
KiBndGVzdC1wcmludGVycy5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCBDdXN0b20gKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY3RDRGNDIxQzdGNUREMDAwMTdDNzI5IC8q
IGd0ZXN0LXByaW50ZXJzLmggKi87IH07CisvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8K
KworLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KKwkJNDA4OTlGOUMw
RkZBNzQwRjAwMEIyOUFFIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9
IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4
NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJ
CQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDQwODk5RjQyMEZGQTcxODQwMDBCMjlBRTsKKwkJCXJl
bW90ZUluZm8gPSBndGVzdF91bml0dGVzdDsKKwkJfTsKKwkJNDA4OUEwOTcwRkZBRDM0QTAwMEIy
OUFFIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5l
ckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMw
NyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9i
YWxJRFN0cmluZyA9IDQwODlBMDEyMEZGQUNFRkMwMDBCMjlBRTsKKwkJCXJlbW90ZUluZm8gPSBz
YW1wbGUxX3VuaXR0ZXN0OworCQl9OworCQk0MDhCRUMwRjEwNDZDRkU5MDBERUY1MjIgLyogUEJY
Q29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5
OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2pl
Y3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5n
ID0gNDBDODQ4RjkxMDFBMjA5QzAwODM2NDJBOworCQkJcmVtb3RlSW5mbyA9ICJndGVzdC1zdGF0
aWMiOworCQl9OworCQk0MEM0NEFFNTBFMzc5OTIyMDA4RkNDNTEgLyogUEJYQ29udGFpbmVySXRl
bVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFp
bmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICov
OworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gNDBDNDRBREMw
RTM3OThGNDAwOEZDQzUxOworCQkJcmVtb3RlSW5mbyA9IFZlcnNpb24uaDsKKwkJfTsKKwkJNDBD
ODQ5N0MxMDFBMzY4NTAwODM2NDJBIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJ
CWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdE
NjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9
IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDQwQzg0OEY5MTAxQTIwOUMwMDgzNjQyQTsK
KwkJCXJlbW90ZUluZm8gPSAiZ3Rlc3Qtc3RhdGljIjsKKwkJfTsKKwkJNDBDODQ5N0UxMDFBMzY4
NTAwODM2NDJBIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENv
bnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZD
MDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1v
dGVHbG9iYWxJRFN0cmluZyA9IDQwQzg0OTBBMTAxQTIxN0UwMDgzNjQyQTsKKwkJCXJlbW90ZUlu
Zm8gPSAiZ3Rlc3RfbWFpbi1zdGF0aWMiOworCQl9OworCQk0MEM4NDk4QjEwMUEzNkE2MDA4MzY0
MkEgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVy
SXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3
IC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2Jh
bElEU3RyaW5nID0gNDBDODQ4RjkxMDFBMjA5QzAwODM2NDJBOworCQkJcmVtb3RlSW5mbyA9ICJn
dGVzdC1zdGF0aWMiOworCQl9OworCQk0MEM4NDk4RDEwMUEzNkE2MDA4MzY0MkEgLyogUEJYQ29u
dGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5Owor
CQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qg
b2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0g
NDBDODQ5MEExMDFBMjE3RTAwODM2NDJBOworCQkJcmVtb3RlSW5mbyA9ICJndGVzdF9tYWluLXN0
YXRpYyI7CisJCX07CisJCTQwQzg0OTlCMTAxQTM2REMwMDgzNjQyQSAvKiBQQlhDb250YWluZXJJ
dGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250
YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3Qg
Ki87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSA0MEM4NDkw
QTEwMUEyMTdFMDA4MzY0MkE7CisJCQlyZW1vdGVJbmZvID0gImd0ZXN0X21haW4tc3RhdGljIjsK
KwkJfTsKKwkJNDBDODQ5OUQxMDFBMzZFNTAwODM2NDJBIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94
eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBv
cnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJ
CXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDhEMDdGMkJDMDQ4NkND
N0EwMDdDRDFEMDsKKwkJCXJlbW90ZUluZm8gPSAiZ3Rlc3QtZnJhbWV3b3JrIjsKKwkJfTsKKwkJ
NDBDODQ5OUYxMDFBMzZGMTAwODM2NDJBIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsK
KwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4
NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlw
ZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDhEMDdGMkJDMDQ4NkNDN0EwMDdDRDFE
MDsKKwkJCXJlbW90ZUluZm8gPSAiZ3Rlc3QtZnJhbWV3b3JrIjsKKwkJfTsKKwkJNDBDODQ5RjYx
MDFBNDM0NDAwODM2NDJBIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9
IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4
NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJ
CQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDQwQzg0OTdBMTAxQTM2ODUwMDgzNjQyQTsKKwkJCXJl
bW90ZUluZm8gPSAiZ3Rlc3RfdW5pdHRlc3Qtc3RhdGljIjsKKwkJfTsKKwkJNDBDODQ5RjgxMDFB
NDM0OTAwODM2NDJBIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBC
WENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAy
OEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQly
ZW1vdGVHbG9iYWxJRFN0cmluZyA9IDQwQzg0OTg5MTAxQTM2QTYwMDgzNjQyQTsKKwkJCXJlbW90
ZUluZm8gPSAic2FtcGxlMV91bml0dGVzdC1zdGF0aWMiOworCQl9OworLyogRW5kIFBCWENvbnRh
aW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWENvcHlGaWxlc0J1aWxkUGhh
c2Ugc2VjdGlvbiAqLworCQk0MDQ4ODRBNTBFMkY3QzA0MDBDRjc2NTggLyogQ29weSBIZWFkZXJz
IEludGVybmFsICovID0geworCQkJaXNhID0gUEJYQ29weUZpbGVzQnVpbGRQaGFzZTsKKwkJCWJ1
aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlkc3RQYXRoID0gSGVhZGVycy9pbnRlcm5h
bDsKKwkJCWRzdFN1YmZvbGRlclNwZWMgPSA2OworCQkJZmlsZXMgPSAoCisJCQkJNDA0ODg0QTAw
RTJGN0JFNjAwQ0Y3NjU4IC8qIGd0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwuaCBpbiBDb3B5IEhl
YWRlcnMgSW50ZXJuYWwgKi8sCisJCQkJNDA0ODg0QTEwRTJGN0JFNjAwQ0Y3NjU4IC8qIGd0ZXN0
LWZpbGVwYXRoLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovLAorCQkJCTQwNDg4NEEyMEUy
RjdCRTYwMENGNzY1OCAvKiBndGVzdC1pbnRlcm5hbC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5h
bCAqLywKKwkJCQk0NTM5QzkzODBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3QtbGlua2VkX3B0ci5o
IGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLywKKwkJCQk0NTM5QzkzOTBFQzI4MEUyMDBBNzBG
NEMgLyogZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJu
YWwgKi8sCisJCQkJNDUzOUM5M0EwRUMyODBFMjAwQTcwRjRDIC8qIGd0ZXN0LXBhcmFtLXV0aWwu
aCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8sCisJCQkJRjY3RDRGM0YxQzdGNURBNzAwMTdD
NzI5IC8qIGd0ZXN0LXBvcnQtYXJjaC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLywKKwkJ
CQk0MDQ4ODRBMzBFMkY3QkU2MDBDRjc2NTggLyogZ3Rlc3QtcG9ydC5oIGluIENvcHkgSGVhZGVy
cyBJbnRlcm5hbCAqLywKKwkJCQk0MDQ4ODRBNDBFMkY3QkU2MDBDRjc2NTggLyogZ3Rlc3Qtc3Ry
aW5nLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovLAorCQkJCTQwODk5RjUwMEZGQTcyODEw
MDBCMjlBRSAvKiBndGVzdC10dXBsZS5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLywKKwkJ
CQkzQkY2RjJBMDBFNzlCNUFEMDAwRjJFRUUgLyogZ3Rlc3QtdHlwZS11dGlsLmggaW4gQ29weSBI
ZWFkZXJzIEludGVybmFsICovLAorCQkJKTsKKwkJCW5hbWUgPSAiQ29weSBIZWFkZXJzIEludGVy
bmFsIjsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9Owor
CQlGNjdENEY0NzFDN0Y1REY2MDAxN0M3MjkgLyogQ29weSBIZWFkZXJzIEludGVybmFsIEN1c3Rv
bSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlv
bk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZHN0UGF0aCA9IEhlYWRlcnMvaW50ZXJuYWwvY3VzdG9t
OworCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDY7CisJCQlmaWxlcyA9ICgKKwkJCQlGNjdENEY0ODFD
N0Y1RTE2MDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCBD
dXN0b20gKi8sCisJCQkJRjY3RDRGNDkxQzdGNUUyNjAwMTdDNzI5IC8qIGd0ZXN0LXByaW50ZXJz
LmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsIEN1c3RvbSAqLywKKwkJCSk7CisJCQluYW1lID0g
IkNvcHkgSGVhZGVycyBJbnRlcm5hbCBDdXN0b20iOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBz
ZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLworCQkyMjRB
MTJBMTBFOUVBREE3MDBCRDE3RkQgLyogZ3Rlc3QtYWxsLmNjICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9ICJndGVzdC1hbGwuY2MiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkyMjRBMTJBMjBFOUVBRENDMDBCRDE3RkQgLyogZ3Rlc3QtdGVzdC1wYXJ0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSAiZ3Rlc3QtdGVzdC1wYXJ0LmgiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzQjIzOEMxMjBFN0ZFMTNDMDA4NDZFMTEgLyogZ3Rl
c3RfdW5pdHRlc3QuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBndGVz
dF91bml0dGVzdC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJM0I4N0QyMTAwRTk2
QjkyRTAwMEQxODUyIC8qIHJ1bnRlc3RzLnNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQuc2g7IHBh
dGggPSBydW50ZXN0cy5zaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJM0JGNkYyOUYw
RTc5QjVBRDAwMEYyRUVFIC8qIGd0ZXN0LXR5cGUtdXRpbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSAiZ3Rlc3QtdHlwZS11dGlsLmgiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkzQkY2RjJBNDBFNzlCNjE2MDAwRjJFRUUgLyogZ3Rlc3QtdHlwZWQtdGVzdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSAiZ3Rlc3QtdHlwZWQtdGVzdC5oIjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDAzRUUzN0MwRTM3NzgyMjAwNEJEMUUyIC8qIHZl
cnNpb25nZW5lcmF0ZS5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IHZl
cnNpb25nZW5lcmF0ZS5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDA0ODgzREIw
RTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LWRlYXRoLXRlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gImd0ZXN0LWRlYXRoLXRlc3QuaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQwNDg4M0RDMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1tZXNzYWdlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1tZXNzYWdlLmgiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0MDQ4ODNERDBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3Qt
c3BpLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1zcGkuaCI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQwNDg4M0RFMEUyRjc5OUIwMENGNzY1OCAvKiBn
dGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBndGVzdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0MDQ4ODNERjBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3Rf
cHJlZF9pbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGd0ZXN0X3ByZWRf
aW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MDQ4ODNFMDBFMkY3OTlCMDBD
Rjc2NTggLyogZ3Rlc3RfcHJvZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBn
dGVzdF9wcm9kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQwNDg4M0UyMEUyRjc5
OUIwMENGNzY1OCAvKiBndGVzdC1kZWF0aC10ZXN0LWludGVybmFsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1kZWF0aC10ZXN0LWludGVybmFsLmgiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0MDQ4ODNFMzBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3Qt
ZmlsZXBhdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gImd0ZXN0LWZpbGVw
YXRoLmgiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MDQ4ODNFNDBFMkY3OTlCMDBD
Rjc2NTggLyogZ3Rlc3QtaW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gImd0ZXN0LWludGVybmFsLmgiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MDQ4
ODNFNTBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QtcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSAiZ3Rlc3QtcG9ydC5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDA0ODgzRTYwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LXN0cmluZy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSAiZ3Rlc3Qtc3RyaW5nLmgiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0MDQ4ODNGNjBFMkY3OTlCMDBDRjc2NTggLyogUkVBRE1FLm1kICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgbmFtZSA9IFJFQURNRS5tZDsgcGF0aCA9IC4uL1JFQURNRS5tZDsgc291cmNl
VHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQk0MDQ4ODQwRDBFMkY3OTlCMDBDRjc2NTggLyogZ3Rl
c3RfbWFpbi5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGd0ZXN0X21h
aW4uY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQwNDg4NEE5MEUyRjdDRDkwMENG
NzY1OCAvKiBDSEFOR0VTICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IENIQU5HRVM7IHBhdGggPSAu
Li9DSEFOR0VTOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTQwNDg4NEFBMEUyRjdD
RDkwMENGNzY1OCAvKiBDT05UUklCVVRPUlMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gQ09OVFJJ
QlVUT1JTOyBwYXRoID0gLi4vQ09OVFJJQlVUT1JTOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7
IH07CisJCTQwNDg4NEFCMEUyRjdDRDkwMENGNzY1OCAvKiBMSUNFTlNFICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgbmFtZSA9IExJQ0VOU0U7IHBhdGggPSAuLi9MSUNFTlNFOyBzb3VyY2VUcmVlID0gU09VUkNF
X1JPT1Q7IH07CisJCTQwODk5RjQzMEZGQTcxODQwMDBCMjlBRSAvKiBndGVzdF91bml0dGVzdC1m
cmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9
ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9
ICJndGVzdF91bml0dGVzdC1mcmFtZXdvcmsiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OworCQk0MDg5OUY0RDBGRkE3MjcxMDAwQjI5QUUgLyogZ3Rlc3QtdHVwbGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gImd0ZXN0LXR1cGxlLmgiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0MDg5OUZCMzBGRkE3NTY3MDAwQjI5QUUgLyogU3RhdGljTGli
cmFyeVRhcmdldC54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBTdGF0
aWNMaWJyYXJ5VGFyZ2V0LnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
MDg5QTAxMzBGRkFDRUZDMDAwQjI5QUUgLyogc2FtcGxlMV91bml0dGVzdC1mcmFtZXdvcmsgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5t
YWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9ICJzYW1wbGUxX3Vu
aXR0ZXN0LWZyYW1ld29yayI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJ
CTQwODlBMDJDMEZGQUNGN0YwMDBCMjlBRSAvKiBzYW1wbGUxLmNjICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gc2FtcGxlMS5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDA4OUEwMkQwRkZBQ0Y3RjAwMEIyOUFFIC8qIHNhbXBsZTEuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gc2FtcGxlMS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MDg5QTAyRTBGRkFDRjdGMDAwQjI5QUUgLyogc2FtcGxlMV91bml0dGVzdC5jYyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHNhbXBsZTFfdW5pdHRlc3QuY2M7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQwQzg0OEZBMTAxQTIwOUMwMDgzNjQyQSAvKiBs
aWJndGVzdC5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUg
PSBhcmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJndGVzdC5hOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk0MEM4NDkwQjEwMUEyMTdFMDA4MzY0
MkEgLyogbGliZ3Rlc3RfbWFpbi5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxp
Y2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJn
dGVzdF9tYWluLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTQwQzg0
OTg3MTAxQTM2ODUwMDgzNjQyQSAvKiBndGVzdF91bml0dGVzdCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxl
IjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gZ3Rlc3RfdW5pdHRlc3Q7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTQwQzg0OTk3MTAxQTM2QTYwMDgzNjQyQSAvKiBz
YW1wbGUxX3VuaXR0ZXN0LXN0YXRpYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBs
aWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5k
ZXggPSAwOyBwYXRoID0gInNhbXBsZTFfdW5pdHRlc3Qtc3RhdGljIjsgc291cmNlVHJlZSA9IEJV
SUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJNDBENENERjEwRTMwRTA3NDAwMjk0ODAxIC8qIERlYnVn
UHJvamVjdC54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBEZWJ1Z1By
b2plY3QueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQwRDRDREYyMEUz
MEUwNzQwMDI5NDgwMSAvKiBGcmFtZXdvcmtUYXJnZXQueGNjb25maWcgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
LnhjY29uZmlnOyBwYXRoID0gRnJhbWV3b3JrVGFyZ2V0LnhjY29uZmlnOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0MEQ0Q0RGMzBFMzBFMDc0MDAyOTQ4MDEgLyogR2VuZXJhbC54Y2Nv
bmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBHZW5lcmFsLnhjY29uZmlnOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MEQ0Q0RGNDBFMzBFMDc0MDAyOTQ4MDEgLyog
UmVsZWFzZVByb2plY3QueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0g
UmVsZWFzZVByb2plY3QueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQw
RDRDRjUxMEUzMEY1RTIwMDI5NDgwMSAvKiBJbmZvLnBsaXN0ICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlz
dC54bWw7IHBhdGggPSBJbmZvLnBsaXN0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
NTM5QzhGRjBFQzI3RjY0MDBBNzBGNEMgLyogZ3Rlc3QuZnJhbWV3b3JrICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgaW5j
bHVkZUluSW5kZXggPSAwOyBwYXRoID0gZ3Rlc3QuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gQlVJ
TFRfUFJPRFVDVFNfRElSOyB9OworCQk0NTM5QzkzMzBFQzI4MEFFMDBBNzBGNEMgLyogZ3Rlc3Qt
cGFyYW0tdGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSAiZ3Rlc3QtcGFy
YW0tdGVzdC5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDUzOUM5MzUwRUMyODBF
MjAwQTcwRjRDIC8qIGd0ZXN0LWxpbmtlZF9wdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gImd0ZXN0LWxpbmtlZF9wdHIuaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQ1MzlDOTM2MEVDMjgwRTIwMEE3MEY0QyAvKiBndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRl
ZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSAiZ3Rlc3QtcGFyYW0tdXRpbC1n
ZW5lcmF0ZWQuaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ1MzlDOTM3MEVDMjgw
RTIwMEE3MEY0QyAvKiBndGVzdC1wYXJhbS11dGlsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9ICJndGVzdC1wYXJhbS11dGlsLmgiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0NTY3QzgxNzEyNjRGRjcxMDA3NzQwQkUgLyogZ3Rlc3QtcHJpbnRlcnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gImd0ZXN0LXByaW50ZXJzLmgiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGNjdENEYzRDFDN0Y1RDhCMDAxN0M3MjkgLyogZ3Rlc3QtcG9y
dC1hcmNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1wb3J0LWFy
Y2guaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY2N0Q0RjQxMUM3RjVERDAwMDE3
QzcyOSAvKiBndGVzdC1wb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJn
dGVzdC1wb3J0LmgiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNjdENEY0MjFDN0Y1
REQwMDAxN0M3MjkgLyogZ3Rlc3QtcHJpbnRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gImd0ZXN0LXByaW50ZXJzLmgiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGNjdENEY0MzFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gZ3Rlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKy8qIEVu
ZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1
aWxkUGhhc2Ugc2VjdGlvbiAqLworCQk0MDg5OUY0MTBGRkE3MTg0MDAwQjI5QUUgLyogRnJhbWV3
b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOworCQkJYnVpbGRB
Y3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTQwQzg0OUE0MTAxQTM3
MTUwMDgzNjQyQSAvKiBndGVzdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQk0MEM4
NDkxNjEwMUEyMzVCMDA4MzY0MkEgLyogbGliZ3Rlc3RfbWFpbi5hIGluIEZyYW1ld29ya3MgKi8s
CisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07
CisJCTQwODlBMDExMEZGQUNFRkMwMDBCMjlBRSAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNh
ID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OworCQkJZmlsZXMgPSAoCisJCQkJNDBDODQ5QTIxMDFBMzcwNTAwODM2NDJBIC8qIGd0ZXN0
LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAorCQkJCTQwQzg0OTIxMTAxQTIzQUQwMDgzNjQy
QSAvKiBsaWJndGVzdF9tYWluLmEgaW4gRnJhbWV3b3JrcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKwkJNDBDODQ5ODExMDFBMzY4
NTAwODM2NDJBIC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVp
bGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgK
KwkJCQk0MEM4NDk4MjEwMUEzNjg1MDA4MzY0MkEgLyogbGliZ3Rlc3QuYSBpbiBGcmFtZXdvcmtz
ICovLAorCQkJCTQwQzg0OTgzMTAxQTM2ODUwMDgzNjQyQSAvKiBsaWJndGVzdF9tYWluLmEgaW4g
RnJhbWV3b3JrcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKKwkJfTsKKwkJNDBDODQ5OTExMDFBMzZBNjAwODM2NDJBIC8qIEZyYW1ld29ya3Mg
Ki8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9u
TWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQk0MEM4NDk5MjEwMUEzNkE2MDA4
MzY0MkEgLyogbGliZ3Rlc3QuYSBpbiBGcmFtZXdvcmtzICovLAorCQkJCTQwQzg0OTkzMTAxQTM2
QTYwMDgzNjQyQSAvKiBsaWJndGVzdF9tYWluLmEgaW4gRnJhbWV3b3JrcyAqLywKKwkJCSk7CisJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQ
QlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEdyb3VwIHNl
Y3Rpb24gKi8KKwkJMDM0NzY4RERGRjM4QTQ1QTExREI5QzhCIC8qIFByb2R1Y3RzICovID0gewor
CQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk0MEM4NDk4NzEwMUEzNjg1
MDA4MzY0MkEgLyogZ3Rlc3RfdW5pdHRlc3QgKi8sCisJCQkJNDA4OTlGNDMwRkZBNzE4NDAwMEIy
OUFFIC8qIGd0ZXN0X3VuaXR0ZXN0LWZyYW1ld29yayAqLywKKwkJCQk0MDg5QTAxMzBGRkFDRUZD
MDAwQjI5QUUgLyogc2FtcGxlMV91bml0dGVzdC1mcmFtZXdvcmsgKi8sCisJCQkJNDBDODQ5OTcx
MDFBMzZBNjAwODM2NDJBIC8qIHNhbXBsZTFfdW5pdHRlc3Qtc3RhdGljICovLAorCQkJCTQ1MzlD
OEZGMEVDMjdGNjQwMEE3MEY0QyAvKiBndGVzdC5mcmFtZXdvcmsgKi8sCisJCQkJNDBDODQ4RkEx
MDFBMjA5QzAwODM2NDJBIC8qIGxpYmd0ZXN0LmEgKi8sCisJCQkJNDBDODQ5MEIxMDFBMjE3RTAw
ODM2NDJBIC8qIGxpYmd0ZXN0X21haW4uYSAqLywKKwkJCSk7CisJCQluYW1lID0gUHJvZHVjdHM7
CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkwODY3RDY5MUZFODQwMjhGQzAy
QUFDMDcgLyogZ3Rlc3QgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0g
KAorCQkJCTQwRDRDREYwMEUzMEUwNzQwMDI5NDgwMSAvKiBDb25maWcgKi8sCisJCQkJMDhGQjc3
QUNGRTg0MTcwN0MwMkFBQzA3IC8qIFNvdXJjZSAqLywKKwkJCQk0MEQ0Q0Y0RTBFMzBGNUUyMDAy
OTQ4MDEgLyogUmVzb3VyY2VzICovLAorCQkJCTQwM0VFMzdCMEUzNzc4MjIwMDRCRDFFMiAvKiBT
Y3JpcHRzICovLAorCQkJCTAzNDc2OERERkYzOEE0NUExMURCOUM4QiAvKiBQcm9kdWN0cyAqLywK
KwkJCSk7CisJCQluYW1lID0gZ3Rlc3Q7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9
OworCQkwOEZCNzdBQ0ZFODQxNzA3QzAyQUFDMDcgLyogU291cmNlICovID0geworCQkJaXNhID0g
UEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk0MDQ4ODRBOTBFMkY3Q0Q5MDBDRjc2NTgg
LyogQ0hBTkdFUyAqLywKKwkJCQk0MDQ4ODRBQTBFMkY3Q0Q5MDBDRjc2NTggLyogQ09OVFJJQlVU
T1JTICovLAorCQkJCTQwNDg4M0Q5MEUyRjc5OUIwMENGNzY1OCAvKiBpbmNsdWRlICovLAorCQkJ
CTQwNDg4NEFCMEUyRjdDRDkwMENGNzY1OCAvKiBMSUNFTlNFICovLAorCQkJCTQwODlBMDJGMEZG
QUNGODQwMDBCMjlBRSAvKiBzYW1wbGVzICovLAorCQkJCTQwNDg4NDA3MEUyRjc5OUIwMENGNzY1
OCAvKiBzcmMgKi8sCisJCQkJM0IyMzhCRjAwRTdGRTEzQjAwODQ2RTExIC8qIHRlc3QgKi8sCisJ
CQkJNDA0ODgzRjYwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJFQURNRS5tZCAqLywKKwkJCSk7CisJCQlu
YW1lID0gU291cmNlOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJM0IyMzhC
RjAwRTdGRTEzQjAwODQ2RTExIC8qIHRlc3QgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJ
CWNoaWxkcmVuID0gKAorCQkJCTNCMjM4QzEyMEU3RkUxM0MwMDg0NkUxMSAvKiBndGVzdF91bml0
dGVzdC5jYyAqLywKKwkJCSk7CisJCQluYW1lID0gdGVzdDsKKwkJCXBhdGggPSAuLi90ZXN0Owor
CQkJc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOworCQl9OworCQk0MDNFRTM3QjBFMzc3ODIyMDA0
QkQxRTIgLyogU2NyaXB0cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4g
PSAoCisJCQkJM0I4N0QyMTAwRTk2QjkyRTAwMEQxODUyIC8qIHJ1bnRlc3RzLnNoICovLAorCQkJ
CTQwM0VFMzdDMEUzNzc4MjIwMDRCRDFFMiAvKiB2ZXJzaW9uZ2VuZXJhdGUucHkgKi8sCisJCQkp
OworCQkJcGF0aCA9IFNjcmlwdHM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9Owor
CQk0MDQ4ODNEOTBFMkY3OTlCMDBDRjc2NTggLyogaW5jbHVkZSAqLyA9IHsKKwkJCWlzYSA9IFBC
WEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNDA0ODgzREEwRTJGNzk5QjAwQ0Y3NjU4IC8q
IGd0ZXN0ICovLAorCQkJKTsKKwkJCW5hbWUgPSBpbmNsdWRlOworCQkJcGF0aCA9IC4uL2luY2x1
ZGU7CisJCQlzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7CisJCX07CisJCTQwNDg4M0RBMEUyRjc5
OUIwMENGNzY1OCAvKiBndGVzdCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRy
ZW4gPSAoCisJCQkJNDA0ODgzRTEwRTJGNzk5QjAwQ0Y3NjU4IC8qIGludGVybmFsICovLAorCQkJ
CTQwNDg4M0RCMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1kZWF0aC10ZXN0LmggKi8sCisJCQkJ
NDA0ODgzREMwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LW1lc3NhZ2UuaCAqLywKKwkJCQk0NTM5
QzkzMzBFQzI4MEFFMDBBNzBGNEMgLyogZ3Rlc3QtcGFyYW0tdGVzdC5oICovLAorCQkJCTQ1NjdD
ODE3MTI2NEZGNzEwMDc3NDBCRSAvKiBndGVzdC1wcmludGVycy5oICovLAorCQkJCTQwNDg4M0RE
MEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1zcGkuaCAqLywKKwkJCQkyMjRBMTJBMjBFOUVBREND
MDBCRDE3RkQgLyogZ3Rlc3QtdGVzdC1wYXJ0LmggKi8sCisJCQkJM0JGNkYyQTQwRTc5QjYxNjAw
MEYyRUVFIC8qIGd0ZXN0LXR5cGVkLXRlc3QuaCAqLywKKwkJCQk0MDQ4ODNERTBFMkY3OTlCMDBD
Rjc2NTggLyogZ3Rlc3QuaCAqLywKKwkJCQk0MDQ4ODNERjBFMkY3OTlCMDBDRjc2NTggLyogZ3Rl
c3RfcHJlZF9pbXBsLmggKi8sCisJCQkJNDA0ODgzRTAwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0
X3Byb2QuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gZ3Rlc3Q7CisJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOworCQl9OworCQk0MDQ4ODNFMTBFMkY3OTlCMDBDRjc2NTggLyogaW50ZXJuYWwgKi8g
PSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUY2N0Q0RjQwMUM3
RjVERDAwMDE3QzcyOSAvKiBjdXN0b20gKi8sCisJCQkJNDA0ODgzRTIwRTJGNzk5QjAwQ0Y3NjU4
IC8qIGd0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwuaCAqLywKKwkJCQk0MDQ4ODNFMzBFMkY3OTlC
MDBDRjc2NTggLyogZ3Rlc3QtZmlsZXBhdGguaCAqLywKKwkJCQk0MDQ4ODNFNDBFMkY3OTlCMDBD
Rjc2NTggLyogZ3Rlc3QtaW50ZXJuYWwuaCAqLywKKwkJCQk0NTM5QzkzNTBFQzI4MEUyMDBBNzBG
NEMgLyogZ3Rlc3QtbGlua2VkX3B0ci5oICovLAorCQkJCTQ1MzlDOTM2MEVDMjgwRTIwMEE3MEY0
QyAvKiBndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oICovLAorCQkJCTQ1MzlDOTM3MEVDMjgw
RTIwMEE3MEY0QyAvKiBndGVzdC1wYXJhbS11dGlsLmggKi8sCisJCQkJRjY3RDRGM0QxQzdGNUQ4
QjAwMTdDNzI5IC8qIGd0ZXN0LXBvcnQtYXJjaC5oICovLAorCQkJCTQwNDg4M0U1MEUyRjc5OUIw
MENGNzY1OCAvKiBndGVzdC1wb3J0LmggKi8sCisJCQkJNDA0ODgzRTYwRTJGNzk5QjAwQ0Y3NjU4
IC8qIGd0ZXN0LXN0cmluZy5oICovLAorCQkJCTQwODk5RjREMEZGQTcyNzEwMDBCMjlBRSAvKiBn
dGVzdC10dXBsZS5oICovLAorCQkJCTNCRjZGMjlGMEU3OUI1QUQwMDBGMkVFRSAvKiBndGVzdC10
eXBlLXV0aWwuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gaW50ZXJuYWw7CisJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOworCQl9OworCQk0MDQ4ODQwNzBFMkY3OTlCMDBDRjc2NTggLyogc3JjICov
ID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkyMjRBMTJBMTBF
OUVBREE3MDBCRDE3RkQgLyogZ3Rlc3QtYWxsLmNjICovLAorCQkJCTQwNDg4NDBEMEUyRjc5OUIw
MENGNzY1OCAvKiBndGVzdF9tYWluLmNjICovLAorCQkJKTsKKwkJCW5hbWUgPSBzcmM7CisJCQlw
YXRoID0gLi4vc3JjOworCQkJc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOworCQl9OworCQk0MDg5
QTAyRjBGRkFDRjg0MDAwQjI5QUUgLyogc2FtcGxlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3Vw
OworCQkJY2hpbGRyZW4gPSAoCisJCQkJNDA4OUEwMkMwRkZBQ0Y3RjAwMEIyOUFFIC8qIHNhbXBs
ZTEuY2MgKi8sCisJCQkJNDA4OUEwMkQwRkZBQ0Y3RjAwMEIyOUFFIC8qIHNhbXBsZTEuaCAqLywK
KwkJCQk0MDg5QTAyRTBGRkFDRjdGMDAwQjI5QUUgLyogc2FtcGxlMV91bml0dGVzdC5jYyAqLywK
KwkJCSk7CisJCQluYW1lID0gc2FtcGxlczsKKwkJCXBhdGggPSAuLi9zYW1wbGVzOworCQkJc291
cmNlVHJlZSA9IFNPVVJDRV9ST09UOworCQl9OworCQk0MEQ0Q0RGMDBFMzBFMDc0MDAyOTQ4MDEg
LyogQ29uZmlnICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJ
CQk0MEQ0Q0RGMTBFMzBFMDc0MDAyOTQ4MDEgLyogRGVidWdQcm9qZWN0LnhjY29uZmlnICovLAor
CQkJCTQwRDRDREYyMEUzMEUwNzQwMDI5NDgwMSAvKiBGcmFtZXdvcmtUYXJnZXQueGNjb25maWcg
Ki8sCisJCQkJNDBENENERjMwRTMwRTA3NDAwMjk0ODAxIC8qIEdlbmVyYWwueGNjb25maWcgKi8s
CisJCQkJNDBENENERjQwRTMwRTA3NDAwMjk0ODAxIC8qIFJlbGVhc2VQcm9qZWN0LnhjY29uZmln
ICovLAorCQkJCTQwODk5RkIzMEZGQTc1NjcwMDBCMjlBRSAvKiBTdGF0aWNMaWJyYXJ5VGFyZ2V0
LnhjY29uZmlnICovLAorCQkJKTsKKwkJCXBhdGggPSBDb25maWc7CisJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOworCQl9OworCQk0MEQ0Q0Y0RTBFMzBGNUUyMDAyOTQ4MDEgLyogUmVzb3VyY2Vz
ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk0MEQ0Q0Y1
MTBFMzBGNUUyMDAyOTQ4MDEgLyogSW5mby5wbGlzdCAqLywKKwkJCSk7CisJCQlwYXRoID0gUmVz
b3VyY2VzOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJRjY3RDRGNDAxQzdG
NUREMDAwMTdDNzI5IC8qIGN1c3RvbSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hp
bGRyZW4gPSAoCisJCQkJRjY3RDRGNDExQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LXBvcnQuaCAq
LywKKwkJCQlGNjdENEY0MjFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QtcHJpbnRlcnMuaCAqLywK
KwkJCQlGNjdENEY0MzFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QuaCAqLywKKwkJCSk7CisJCQlw
YXRoID0gY3VzdG9tOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKy8qIEVuZCBQ
QlhHcm91cCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rp
b24gKi8KKwkJOEQwN0YyQkQwNDg2Q0M3QTAwN0NEMUQwIC8qIEhlYWRlcnMgKi8gPSB7CisJCQlp
c2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2
NDc7CisJCQlmaWxlcyA9ICgKKwkJCQk0MDQ4ODQzODBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3Qt
ZGVhdGgtdGVzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDA0ODg0MzkwRTJGNzk5QjAwQ0Y3NjU4
IC8qIGd0ZXN0LW1lc3NhZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ1MzlDOTM0MEVDMjgwQUUw
MEE3MEY0QyAvKiBndGVzdC1wYXJhbS10ZXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlGNjdENEYz
RTFDN0Y1RDhCMDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC1hcmNoLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlGNjdENEY0NDFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRjY3RDRGNDUxQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LXByaW50ZXJzLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk0NTY3QzgxODEyNjRGRjcxMDA3NzQwQkUgLyogZ3Rlc3QtcHJpbnRlcnMu
aCBpbiBIZWFkZXJzICovLAorCQkJCTQwNDg4NDNBMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1z
cGkuaCBpbiBIZWFkZXJzICovLAorCQkJCTIyNEExMkEzMEU5RUFEQ0MwMEJEMTdGRCAvKiBndGVz
dC10ZXN0LXBhcnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTNCRjZGMkE1MEU3OUI2MTYwMDBGMkVF
RSAvKiBndGVzdC10eXBlZC10ZXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlGNjdENEY0NjFDN0Y1
REQwMDAxN0M3MjkgLyogZ3Rlc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTQwNDg4NDNCMEUyRjc5
OUIwMENGNzY1OCAvKiBndGVzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDA0ODg0M0MwRTJGNzk5
QjAwQ0Y3NjU4IC8qIGd0ZXN0X3ByZWRfaW1wbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDA0ODg0
M0QwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0X3Byb2QuaCBpbiBIZWFkZXJzICovLAorCQkJKTsK
KwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworLyogRW5k
IFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYTmF0aXZlVGFy
Z2V0IHNlY3Rpb24gKi8KKwkJNDA4OTlGNDIwRkZBNzE4NDAwMEIyOUFFIC8qIGd0ZXN0X3VuaXR0
ZXN0LWZyYW1ld29yayAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJCWJ1aWxk
Q29uZmlndXJhdGlvbkxpc3QgPSA0MDg5OUY0QTBGRkE3MUJDMDAwQjI5QUUgLyogQnVpbGQgY29u
ZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgImd0ZXN0X3VuaXR0ZXN0LWZyYW1l
d29yayIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQk0MDg5OUY0MDBGRkE3MTg0MDAwQjI5
QUUgLyogU291cmNlcyAqLywKKwkJCQk0MDg5OUY0MTBGRkE3MTg0MDAwQjI5QUUgLyogRnJhbWV3
b3JrcyAqLywKKwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2ll
cyA9ICgKKwkJCQk0MEM4NDlBMDEwMUEzNkYxMDA4MzY0MkEgLyogUEJYVGFyZ2V0RGVwZW5kZW5j
eSAqLywKKwkJCSk7CisJCQluYW1lID0gImd0ZXN0X3VuaXR0ZXN0LWZyYW1ld29yayI7CisJCQlw
cm9kdWN0TmFtZSA9IGd0ZXN0X3VuaXR0ZXN0OworCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDQwODk5
RjQzMEZGQTcxODQwMDBCMjlBRSAvKiBndGVzdF91bml0dGVzdC1mcmFtZXdvcmsgKi87CisJCQlw
cm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLnRvb2wiOworCQl9OworCQk0MDg5
QTAxMjBGRkFDRUZDMDAwQjI5QUUgLyogc2FtcGxlMV91bml0dGVzdC1mcmFtZXdvcmsgKi8gPSB7
CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0g
NDA4OUEwMjQwRkZBQ0YwMTAwMEIyOUFFIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3Ig
UEJYTmF0aXZlVGFyZ2V0ICJzYW1wbGUxX3VuaXR0ZXN0LWZyYW1ld29yayIgKi87CisJCQlidWls
ZFBoYXNlcyA9ICgKKwkJCQk0MDg5QTAxMDBGRkFDRUZDMDAwQjI5QUUgLyogU291cmNlcyAqLywK
KwkJCQk0MDg5QTAxMTBGRkFDRUZDMDAwQjI5QUUgLyogRnJhbWV3b3JrcyAqLywKKwkJCSk7CisJ
CQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCQk0MEM4NDk5
RTEwMUEzNkU1MDA4MzY0MkEgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKKwkJCSk7CisJCQlu
YW1lID0gInNhbXBsZTFfdW5pdHRlc3QtZnJhbWV3b3JrIjsKKwkJCXByb2R1Y3ROYW1lID0gc2Ft
cGxlMV91bml0dGVzdDsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSA0MDg5QTAxMzBGRkFDRUZDMDAw
QjI5QUUgLyogc2FtcGxlMV91bml0dGVzdC1mcmFtZXdvcmsgKi87CisJCQlwcm9kdWN0VHlwZSA9
ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLnRvb2wiOworCQl9OworCQk0MEM4NDhGOTEwMUEyMDlD
MDA4MzY0MkEgLyogZ3Rlc3Qtc3RhdGljICovID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0
OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDQwQzg0OTAyMTAxQTIxMkUwMDgzNjQyQSAv
KiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiZ3Rlc3Qtc3Rh
dGljIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTQwQzg0OEY3MTAxQTIwOUMwMDgzNjQy
QSAvKiBTb3VyY2VzICovLAorCQkJKTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVw
ZW5kZW5jaWVzID0gKAorCQkJKTsKKwkJCW5hbWUgPSAiZ3Rlc3Qtc3RhdGljIjsKKwkJCXByb2R1
Y3ROYW1lID0gImd0ZXN0LXN0YXRpYyI7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gNDBDODQ4RkEx
MDFBMjA5QzAwODM2NDJBIC8qIGxpYmd0ZXN0LmEgKi87CisJCQlwcm9kdWN0VHlwZSA9ICJjb20u
YXBwbGUucHJvZHVjdC10eXBlLmxpYnJhcnkuc3RhdGljIjsKKwkJfTsKKwkJNDBDODQ5MEExMDFB
MjE3RTAwODM2NDJBIC8qIGd0ZXN0X21haW4tc3RhdGljICovID0geworCQkJaXNhID0gUEJYTmF0
aXZlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDQwQzg0OTEyMTAxQTIxRDIw
MDgzNjQyQSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAi
Z3Rlc3RfbWFpbi1zdGF0aWMiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJNDBDODQ5MDgx
MDFBMjE3RTAwODM2NDJBIC8qIFNvdXJjZXMgKi8sCisJCQkpOworCQkJYnVpbGRSdWxlcyA9ICgK
KwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkpOworCQkJbmFtZSA9ICJndGVzdF9tYWlu
LXN0YXRpYyI7CisJCQlwcm9kdWN0TmFtZSA9ICJndGVzdF9tYWluLXN0YXRpYyI7CisJCQlwcm9k
dWN0UmVmZXJlbmNlID0gNDBDODQ5MEIxMDFBMjE3RTAwODM2NDJBIC8qIGxpYmd0ZXN0X21haW4u
YSAqLzsKKwkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUubGlicmFyeS5z
dGF0aWMiOworCQl9OworCQk0MEM4NDk3QTEwMUEzNjg1MDA4MzY0MkEgLyogZ3Rlc3RfdW5pdHRl
c3Qtc3RhdGljICovID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OworCQkJYnVpbGRDb25m
aWd1cmF0aW9uTGlzdCA9IDQwQzg0OTg0MTAxQTM2ODUwMDgzNjQyQSAvKiBCdWlsZCBjb25maWd1
cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiZ3Rlc3RfdW5pdHRlc3Qtc3RhdGljIiAq
LzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTQwQzg0OTdGMTAxQTM2ODUwMDgzNjQyQSAvKiBT
b3VyY2VzICovLAorCQkJCTQwQzg0OTgxMTAxQTM2ODUwMDgzNjQyQSAvKiBGcmFtZXdvcmtzICov
LAorCQkJKTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAor
CQkJCTQwQzg0OTdCMTAxQTM2ODUwMDgzNjQyQSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAor
CQkJCTQwQzg0OTdEMTAxQTM2ODUwMDgzNjQyQSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAor
CQkJKTsKKwkJCW5hbWUgPSAiZ3Rlc3RfdW5pdHRlc3Qtc3RhdGljIjsKKwkJCXByb2R1Y3ROYW1l
ID0gZ3Rlc3RfdW5pdHRlc3Q7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gNDBDODQ5ODcxMDFBMzY4
NTAwODM2NDJBIC8qIGd0ZXN0X3VuaXR0ZXN0ICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFw
cGxlLnByb2R1Y3QtdHlwZS50b29sIjsKKwkJfTsKKwkJNDBDODQ5ODkxMDFBMzZBNjAwODM2NDJB
IC8qIHNhbXBsZTFfdW5pdHRlc3Qtc3RhdGljICovID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFy
Z2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDQwQzg0OTk0MTAxQTM2QTYwMDgzNjQy
QSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAic2FtcGxl
MV91bml0dGVzdC1zdGF0aWMiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJNDBDODQ5OEUx
MDFBMzZBNjAwODM2NDJBIC8qIFNvdXJjZXMgKi8sCisJCQkJNDBDODQ5OTExMDFBMzZBNjAwODM2
NDJBIC8qIEZyYW1ld29ya3MgKi8sCisJCQkpOworCQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJ
CQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJNDBDODQ5OEExMDFBMzZBNjAwODM2NDJBIC8qIFBCWFRh
cmdldERlcGVuZGVuY3kgKi8sCisJCQkJNDBDODQ5OEMxMDFBMzZBNjAwODM2NDJBIC8qIFBCWFRh
cmdldERlcGVuZGVuY3kgKi8sCisJCQkpOworCQkJbmFtZSA9ICJzYW1wbGUxX3VuaXR0ZXN0LXN0
YXRpYyI7CisJCQlwcm9kdWN0TmFtZSA9IHNhbXBsZTFfdW5pdHRlc3Q7CisJCQlwcm9kdWN0UmVm
ZXJlbmNlID0gNDBDODQ5OTcxMDFBMzZBNjAwODM2NDJBIC8qIHNhbXBsZTFfdW5pdHRlc3Qtc3Rh
dGljICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS50b29sIjsK
KwkJfTsKKwkJOEQwN0YyQkMwNDg2Q0M3QTAwN0NEMUQwIC8qIGd0ZXN0LWZyYW1ld29yayAqLyA9
IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3Qg
PSA0RkFEQzI0MjA4QjQxNTZEMDBBQkU1NUUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZv
ciBQQlhOYXRpdmVUYXJnZXQgImd0ZXN0LWZyYW1ld29yayIgKi87CisJCQlidWlsZFBoYXNlcyA9
ICgKKwkJCQk4RDA3RjJDMTA0ODZDQzdBMDA3Q0QxRDAgLyogU291cmNlcyAqLywKKwkJCQk4RDA3
RjJCRDA0ODZDQzdBMDA3Q0QxRDAgLyogSGVhZGVycyAqLywKKwkJCQk0MDQ4ODRBNTBFMkY3QzA0
MDBDRjc2NTggLyogQ29weSBIZWFkZXJzIEludGVybmFsICovLAorCQkJCUY2N0Q0RjQ3MUM3RjVE
RjYwMDE3QzcyOSAvKiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgQ3VzdG9tICovLAorCQkJCThEMDdG
MkJGMDQ4NkNDN0EwMDdDRDFEMCAvKiBSZXNvdXJjZXMgKi8sCisJCQkpOworCQkJYnVpbGRSdWxl
cyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJNDBDNDRBRTYwRTM3OTkyMjAw
OEZDQzUxIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJCQkJNDA4QkVDMTAxMDQ2Q0ZFOTAw
REVGNTIyIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJCQkJNDBDODQ5OUMxMDFBMzZEQzAw
ODM2NDJBIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJCQkpOworCQkJbmFtZSA9ICJndGVz
dC1mcmFtZXdvcmsiOworCQkJcHJvZHVjdEluc3RhbGxQYXRoID0gIiQoSE9NRSkvTGlicmFyeS9G
cmFtZXdvcmtzIjsKKwkJCXByb2R1Y3ROYW1lID0gZ3Rlc3Q7CisJCQlwcm9kdWN0UmVmZXJlbmNl
ID0gNDUzOUM4RkYwRUMyN0Y2NDAwQTcwRjRDIC8qIGd0ZXN0LmZyYW1ld29yayAqLzsKKwkJCXBy
b2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUuZnJhbWV3b3JrIjsKKwkJfTsKKy8q
IEVuZCBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhQcm9qZWN0IHNl
Y3Rpb24gKi8KKwkJMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICov
ID0geworCQkJaXNhID0gUEJYUHJvamVjdDsKKwkJCWF0dHJpYnV0ZXMgPSB7CisJCQkJTGFzdFVw
Z3JhZGVDaGVjayA9IDA0NjA7CisJCQl9OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDRG
QURDMjQ2MDhCNDE1NkQwMEFCRTU1RSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBC
WFByb2plY3QgImd0ZXN0IiAqLzsKKwkJCWNvbXBhdGliaWxpdHlWZXJzaW9uID0gIlhjb2RlIDMu
MiI7CisJCQlkZXZlbG9wbWVudFJlZ2lvbiA9IEVuZ2xpc2g7CisJCQloYXNTY2FubmVkRm9yRW5j
b2RpbmdzID0gMTsKKwkJCWtub3duUmVnaW9ucyA9ICgKKwkJCQlFbmdsaXNoLAorCQkJCUphcGFu
ZXNlLAorCQkJCUZyZW5jaCwKKwkJCQlHZXJtYW4sCisJCQkJZW4sCisJCQkpOworCQkJbWFpbkdy
b3VwID0gMDg2N0Q2OTFGRTg0MDI4RkMwMkFBQzA3IC8qIGd0ZXN0ICovOworCQkJcHJvZHVjdFJl
Zkdyb3VwID0gMDM0NzY4RERGRjM4QTQ1QTExREI5QzhCIC8qIFByb2R1Y3RzICovOworCQkJcHJv
amVjdERpclBhdGggPSAiIjsKKwkJCXByb2plY3RSb290ID0gIiI7CisJCQl0YXJnZXRzID0gKAor
CQkJCThEMDdGMkJDMDQ4NkNDN0EwMDdDRDFEMCAvKiBndGVzdC1mcmFtZXdvcmsgKi8sCisJCQkJ
NDBDODQ4RjkxMDFBMjA5QzAwODM2NDJBIC8qIGd0ZXN0LXN0YXRpYyAqLywKKwkJCQk0MEM4NDkw
QTEwMUEyMTdFMDA4MzY0MkEgLyogZ3Rlc3RfbWFpbi1zdGF0aWMgKi8sCisJCQkJNDA4OTlGNDIw
RkZBNzE4NDAwMEIyOUFFIC8qIGd0ZXN0X3VuaXR0ZXN0LWZyYW1ld29yayAqLywKKwkJCQk0MEM4
NDk3QTEwMUEzNjg1MDA4MzY0MkEgLyogZ3Rlc3RfdW5pdHRlc3Qtc3RhdGljICovLAorCQkJCTQw
ODlBMDEyMEZGQUNFRkMwMDBCMjlBRSAvKiBzYW1wbGUxX3VuaXR0ZXN0LWZyYW1ld29yayAqLywK
KwkJCQk0MEM4NDk4OTEwMUEzNkE2MDA4MzY0MkEgLyogc2FtcGxlMV91bml0dGVzdC1zdGF0aWMg
Ki8sCisJCQkJM0IyMzhGNUYwRTgyOEI1NDAwODQ2RTExIC8qIENoZWNrICovLAorCQkJCTQwQzQ0
QURDMEUzNzk4RjQwMDhGQ0M1MSAvKiBWZXJzaW9uIEluZm8gKi8sCisJCQkpOworCQl9OworLyog
RW5kIFBCWFByb2plY3Qgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhSZXNvdXJjZXNCdWlsZFBo
YXNlIHNlY3Rpb24gKi8KKwkJOEQwN0YyQkYwNDg2Q0M3QTAwN0NEMUQwIC8qIFJlc291cmNlcyAq
LyA9IHsKKwkJCWlzYSA9IFBCWFJlc291cmNlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1h
c2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJNDA0ODg0QUMwRTJGN0NEOTAwQ0Y3
NjU4IC8qIENIQU5HRVMgaW4gUmVzb3VyY2VzICovLAorCQkJCTQwNDg4NEFEMEUyRjdDRDkwMENG
NzY1OCAvKiBDT05UUklCVVRPUlMgaW4gUmVzb3VyY2VzICovLAorCQkJCTQwQzg0OTc4MTAxQTM2
NTQwMDgzNjQyQSAvKiBsaWJndGVzdF9tYWluLmEgaW4gUmVzb3VyY2VzICovLAorCQkJCTQwNDg4
NEFFMEUyRjdDRDkwMENGNzY1OCAvKiBMSUNFTlNFIGluIFJlc291cmNlcyAqLywKKwkJCQk0MDQ4
ODQ1MDBFMkY3OTlCMDBDRjc2NTggLyogUkVBRE1FLm1kIGluIFJlc291cmNlcyAqLywKKwkJCSk7
CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVu
ZCBQQlhSZXNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYU2hlbGxT
Y3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJM0IyMzhGNUUwRTgyOEI1NDAwODQ2RTExIC8q
IFNoZWxsU2NyaXB0ICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwor
CQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJ
CWlucHV0UGF0aHMgPSAoCisJCQkpOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkpOworCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmlu
L3NoOworCQkJc2hlbGxTY3JpcHQgPSAiIyBSZW1lbWJlciwgdGhpcyBcIlJ1biBTY3JpcHRcIiBi
dWlsZCBwaGFzZSB3aWxsIGJlIGV4ZWN1dGVkIGZyb20gJFNSQ1JPT1Rcbi9iaW4vYmFzaCBTY3Jp
cHRzL3J1bnRlc3RzLnNoIjsKKwkJfTsKKwkJNDBDNDRBREIwRTM3OThGNDAwOEZDQzUxIC8qIEdl
bmVyYXRlIFZlcnNpb24uaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFz
ZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7
CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFNSQ1JPT1QpL1NjcmlwdHMvdmVyc2lvbmdlbmVy
YXRlLnB5IiwKKwkJCQkiJChTUkNST09UKS8uLi9jb25maWd1cmUuYWMiLAorCQkJKTsKKwkJCW5h
bWUgPSAiR2VuZXJhdGUgVmVyc2lvbi5oIjsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKFBS
T0pFQ1RfVEVNUF9ESVIpL1ZlcnNpb24uaCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxT
Y3JpcHQgPSAiIyBSZW1lbWJlciwgdGhpcyBcIlJ1biBTY3JpcHRcIiBidWlsZCBwaGFzZSB3aWxs
IGJlIGV4ZWN1dGVkIGZyb20gJFNSQ1JPT1Rcbi91c3IvYmluL3B5dGhvbiBTY3JpcHRzL3ZlcnNp
b25nZW5lcmF0ZS5weSAuLi8gJFBST0pFQ1RfVEVNUF9ESVIiOworCQl9OworLyogRW5kIFBCWFNo
ZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWFNvdXJjZXNCdWls
ZFBoYXNlIHNlY3Rpb24gKi8KKwkJNDA4OTlGNDAwRkZBNzE4NDAwMEIyOUFFIC8qIFNvdXJjZXMg
Ki8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFz
ayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQk0MDg5OUY1MzBGRkE3MkEwMDAwQjI5
QUUgLyogZ3Rlc3RfdW5pdHRlc3QuY2MgaW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKwkJNDA4OUEwMTAwRkZBQ0VG
QzAwMEIyOUFFIC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFz
ZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQk0
MDg5QTA0NDBGRkFEMUJFMDAwQjI5QUUgLyogc2FtcGxlMS5jYyBpbiBTb3VyY2VzICovLAorCQkJ
CTQwODlBMDQ2MEZGQUQxQkUwMDBCMjlBRSAvKiBzYW1wbGUxX3VuaXR0ZXN0LmNjIGluIFNvdXJj
ZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CisJCX07CisJCTQwQzg0OEY3MTAxQTIwOUMwMDgzNjQyQSAvKiBTb3VyY2VzICovID0geworCQkJ
aXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OworCQkJZmlsZXMgPSAoCisJCQkJNDBDODQ4RkYxMDFBMjExNTAwODM2NDJBIC8qIGd0ZXN0
LWFsbC5jYyBpbiBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOworCQl9OworCQk0MEM4NDkwODEwMUEyMTdFMDA4MzY0MkEgLyogU291
cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTQwQzg0OTE1MTAxQTIxREYw
MDgzNjQyQSAvKiBndGVzdF9tYWluLmNjIGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisJCTQwQzg0OTdGMTAxQTM2
ODUwMDgzNjQyQSAvKiBTb3VyY2VzICovID0geworCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhh
c2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJ
NDBDODQ5ODAxMDFBMzY4NTAwODM2NDJBIC8qIGd0ZXN0X3VuaXR0ZXN0LmNjIGluIFNvdXJjZXMg
Ki8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJ
CX07CisJCTQwQzg0OThFMTAxQTM2QTYwMDgzNjQyQSAvKiBTb3VyY2VzICovID0geworCQkJaXNh
ID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3
OworCQkJZmlsZXMgPSAoCisJCQkJNDBDODQ5OEYxMDFBMzZBNjAwODM2NDJBIC8qIHNhbXBsZTEu
Y2MgaW4gU291cmNlcyAqLywKKwkJCQk0MEM4NDk5MDEwMUEzNkE2MDA4MzY0MkEgLyogc2FtcGxl
MV91bml0dGVzdC5jYyBpbiBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworCQk4RDA3RjJDMTA0ODZDQzdBMDA3Q0QxRDAg
LyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVp
bGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTQwODk5RjNBMEZG
QTcwRDQwMDBCMjlBRSAvKiBndGVzdC1hbGwuY2MgaW4gU291cmNlcyAqLywKKwkJCSk7CisJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhT
b3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWFRhcmdldERlcGVuZGVu
Y3kgc2VjdGlvbiAqLworCQk0MDg5OUY5RDBGRkE3NDBGMDAwQjI5QUUgLyogUEJYVGFyZ2V0RGVw
ZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQg
PSA0MDg5OUY0MjBGRkE3MTg0MDAwQjI5QUUgLyogZ3Rlc3RfdW5pdHRlc3QtZnJhbWV3b3JrICov
OworCQkJdGFyZ2V0UHJveHkgPSA0MDg5OUY5QzBGRkE3NDBGMDAwQjI5QUUgLyogUEJYQ29udGFp
bmVySXRlbVByb3h5ICovOworCQl9OworCQk0MDg5QTA5ODBGRkFEMzRBMDAwQjI5QUUgLyogUEJY
VGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJ
CQl0YXJnZXQgPSA0MDg5QTAxMjBGRkFDRUZDMDAwQjI5QUUgLyogc2FtcGxlMV91bml0dGVzdC1m
cmFtZXdvcmsgKi87CisJCQl0YXJnZXRQcm94eSA9IDQwODlBMDk3MEZGQUQzNEEwMDBCMjlBRSAv
KiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07CisJCTQwOEJFQzEwMTA0NkNGRTkwMERF
RjUyMiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVw
ZW5kZW5jeTsKKwkJCXRhcmdldCA9IDQwQzg0OEY5MTAxQTIwOUMwMDgzNjQyQSAvKiBndGVzdC1z
dGF0aWMgKi87CisJCQl0YXJnZXRQcm94eSA9IDQwOEJFQzBGMTA0NkNGRTkwMERFRjUyMiAvKiBQ
QlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07CisJCTQwQzQ0QUU2MEUzNzk5MjIwMDhGQ0M1
MSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5k
ZW5jeTsKKwkJCXRhcmdldCA9IDQwQzQ0QURDMEUzNzk4RjQwMDhGQ0M1MSAvKiBWZXJzaW9uIElu
Zm8gKi87CisJCQl0YXJnZXRQcm94eSA9IDQwQzQ0QUU1MEUzNzk5MjIwMDhGQ0M1MSAvKiBQQlhD
b250YWluZXJJdGVtUHJveHkgKi87CisJCX07CisJCTQwQzg0OTdCMTAxQTM2ODUwMDgzNjQyQSAv
KiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5j
eTsKKwkJCXRhcmdldCA9IDQwQzg0OEY5MTAxQTIwOUMwMDgzNjQyQSAvKiBndGVzdC1zdGF0aWMg
Ki87CisJCQl0YXJnZXRQcm94eSA9IDQwQzg0OTdDMTAxQTM2ODUwMDgzNjQyQSAvKiBQQlhDb250
YWluZXJJdGVtUHJveHkgKi87CisJCX07CisJCTQwQzg0OTdEMTAxQTM2ODUwMDgzNjQyQSAvKiBQ
QlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsK
KwkJCXRhcmdldCA9IDQwQzg0OTBBMTAxQTIxN0UwMDgzNjQyQSAvKiBndGVzdF9tYWluLXN0YXRp
YyAqLzsKKwkJCXRhcmdldFByb3h5ID0gNDBDODQ5N0UxMDFBMzY4NTAwODM2NDJBIC8qIFBCWENv
bnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsKKwkJNDBDODQ5OEExMDFBMzZBNjAwODM2NDJBIC8q
IFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5
OworCQkJdGFyZ2V0ID0gNDBDODQ4RjkxMDFBMjA5QzAwODM2NDJBIC8qIGd0ZXN0LXN0YXRpYyAq
LzsKKwkJCXRhcmdldFByb3h5ID0gNDBDODQ5OEIxMDFBMzZBNjAwODM2NDJBIC8qIFBCWENvbnRh
aW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsKKwkJNDBDODQ5OEMxMDFBMzZBNjAwODM2NDJBIC8qIFBC
WFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5Owor
CQkJdGFyZ2V0ID0gNDBDODQ5MEExMDFBMjE3RTAwODM2NDJBIC8qIGd0ZXN0X21haW4tc3RhdGlj
ICovOworCQkJdGFyZ2V0UHJveHkgPSA0MEM4NDk4RDEwMUEzNkE2MDA4MzY0MkEgLyogUEJYQ29u
dGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQk0MEM4NDk5QzEwMUEzNkRDMDA4MzY0MkEgLyog
UEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7
CisJCQl0YXJnZXQgPSA0MEM4NDkwQTEwMUEyMTdFMDA4MzY0MkEgLyogZ3Rlc3RfbWFpbi1zdGF0
aWMgKi87CisJCQl0YXJnZXRQcm94eSA9IDQwQzg0OTlCMTAxQTM2REMwMDgzNjQyQSAvKiBQQlhD
b250YWluZXJJdGVtUHJveHkgKi87CisJCX07CisJCTQwQzg0OTlFMTAxQTM2RTUwMDgzNjQyQSAv
KiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5j
eTsKKwkJCXRhcmdldCA9IDhEMDdGMkJDMDQ4NkNDN0EwMDdDRDFEMCAvKiBndGVzdC1mcmFtZXdv
cmsgKi87CisJCQl0YXJnZXRQcm94eSA9IDQwQzg0OTlEMTAxQTM2RTUwMDgzNjQyQSAvKiBQQlhD
b250YWluZXJJdGVtUHJveHkgKi87CisJCX07CisJCTQwQzg0OUEwMTAxQTM2RjEwMDgzNjQyQSAv
KiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5j
eTsKKwkJCXRhcmdldCA9IDhEMDdGMkJDMDQ4NkNDN0EwMDdDRDFEMCAvKiBndGVzdC1mcmFtZXdv
cmsgKi87CisJCQl0YXJnZXRQcm94eSA9IDQwQzg0OTlGMTAxQTM2RjEwMDgzNjQyQSAvKiBQQlhD
b250YWluZXJJdGVtUHJveHkgKi87CisJCX07CisJCTQwQzg0OUY3MTAxQTQzNDQwMDgzNjQyQSAv
KiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5j
eTsKKwkJCXRhcmdldCA9IDQwQzg0OTdBMTAxQTM2ODUwMDgzNjQyQSAvKiBndGVzdF91bml0dGVz
dC1zdGF0aWMgKi87CisJCQl0YXJnZXRQcm94eSA9IDQwQzg0OUY2MTAxQTQzNDQwMDgzNjQyQSAv
KiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07CisJCTQwQzg0OUY5MTAxQTQzNDkwMDgz
NjQyQSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVw
ZW5kZW5jeTsKKwkJCXRhcmdldCA9IDQwQzg0OTg5MTAxQTM2QTYwMDgzNjQyQSAvKiBzYW1wbGUx
X3VuaXR0ZXN0LXN0YXRpYyAqLzsKKwkJCXRhcmdldFByb3h5ID0gNDBDODQ5RjgxMDFBNDM0OTAw
ODM2NDJBIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsKKy8qIEVuZCBQQlhUYXJn
ZXREZXBlbmRlbmN5IHNlY3Rpb24gKi8KKworLyogQmVnaW4gWENCdWlsZENvbmZpZ3VyYXRpb24g
c2VjdGlvbiAqLworCQkzQjIzOEY2MDBFODI4QjU0MDA4NDZFMTEgLyogRGVidWcgKi8gPSB7CisJ
CQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJ
Q09NQklORV9ISURQSV9JTUFHRVMgPSBZRVM7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5POwor
CQkJCUdDQ19EWU5BTUlDX05PX1BJQyA9IE5POworCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwg
PSAwOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFf
MDsKKwkJCQlQUk9EVUNUX05BTUUgPSBDaGVjazsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJ
fTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJM0IyMzhGNjEwRTgyOEI1NDAwODQ2RTExIC8q
IFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxk
U2V0dGluZ3MgPSB7CisJCQkJQ09NQklORV9ISURQSV9JTUFHRVMgPSBZRVM7CisJCQkJQ09QWV9Q
SEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYt
d2l0aC1kc3ltIjsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5j
bGFuZy4xXzA7CisJCQkJUFJPRFVDVF9OQU1FID0gQ2hlY2s7CisJCQkJU0RLUk9PVCA9IG1hY29z
eDsKKwkJCQlaRVJPX0xJTksgPSBOTzsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsK
KwkJNDA4OTlGNDUwRkZBNzE4NTAwMEIyOUFFIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENC
dWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUdDQ19WRVJTSU9O
ID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlIRUFERVJfU0VBUkNI
X1BBVEhTID0gLi4vOworCQkJCVBST0RVQ1RfTkFNRSA9ICJndGVzdF91bml0dGVzdC1mcmFtZXdv
cmsiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9
OworCQk0MDg5OUY0NjBGRkE3MTg1MDAwQjI5QUUgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9
IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlHQ0NfVkVS
U0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJSEVBREVSX1NF
QVJDSF9QQVRIUyA9IC4uLzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiZ3Rlc3RfdW5pdHRlc3QtZnJh
bWV3b3JrIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNl
OworCQl9OworCQk0MDg5QTAxNTBGRkFDRUZEMDAwQjI5QUUgLyogRGVidWcgKi8gPSB7CisJCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJR0ND
X1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCVBST0RV
Q1RfTkFNRSA9ICJzYW1wbGUxX3VuaXR0ZXN0LWZyYW1ld29yayI7CisJCQkJU0RLUk9PVCA9IG1h
Y29zeDsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTQwODlBMDE2MEZGQUNFRkQw
MDBCMjlBRSAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247
CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBp
bGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlQUk9EVUNUX05BTUUgPSAic2FtcGxlMV91bml0dGVz
dC1mcmFtZXdvcmsiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQl9OworCQkJbmFtZSA9IFJl
bGVhc2U7CisJCX07CisJCTQwQzQ0QURGMEUzNzk4RjQwMDhGQ0M1MSAvKiBEZWJ1ZyAqLyA9IHsK
KwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJ
CQlDT01CSU5FX0hJRFBJX0lNQUdFUyA9IFlFUzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBs
ZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VU
ID0gMTAuNzsKKwkJCQlQUk9EVUNUX05BTUUgPSBndGVzdDsKKwkJCQlTREtST09UID0gbWFjb3N4
OworCQkJCVRBUkdFVF9OQU1FID0gZ3Rlc3Q7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9
OworCQk0MEM0NEFFMDBFMzc5OEY0MDA4RkNDNTEgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9
IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlDT01CSU5F
X0hJRFBJX0lNQUdFUyA9IFlFUzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxl
cnMubGx2bS5jbGFuZy4xXzA7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsK
KwkJCQlQUk9EVUNUX05BTUUgPSBndGVzdDsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVRB
UkdFVF9OQU1FID0gZ3Rlc3Q7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTQw
Qzg0OEZCMTAxQTIwOUQwMDgzNjQyQSAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRD
b25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA0MDg5OUZCMzBG
RkE3NTY3MDAwQjI5QUUgLyogU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZpZyAqLzsKKwkJCWJ1
aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09NQklORV9ISURQSV9JTUFHRVMgPSBZRVM7CisJCQkJR0ND
X0lOTElORVNfQVJFX1BSSVZBVEVfRVhURVJOID0gWUVTOworCQkJCUdDQ19TWU1CT0xTX1BSSVZB
VEVfRVhURVJOID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5s
bHZtLmNsYW5nLjFfMDsKKwkJCQlIRUFERVJfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkuLi8sCisJ
CQkJCS4uL2luY2x1ZGUvLAorCQkJCSk7CisJCQkJUFJPRFVDVF9OQU1FID0gZ3Rlc3Q7CisJCQkJ
U0RLUk9PVCA9IG1hY29zeDsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTQwQzg0
OEZDMTAxQTIwOUQwMDgzNjQyQSAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENv
bmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDQwODk5RkIzMEZG
QTc1NjcwMDBCMjlBRSAvKiBTdGF0aWNMaWJyYXJ5VGFyZ2V0LnhjY29uZmlnICovOworCQkJYnVp
bGRTZXR0aW5ncyA9IHsKKwkJCQlDT01CSU5FX0hJRFBJX0lNQUdFUyA9IFlFUzsKKwkJCQlHQ0Nf
SU5MSU5FU19BUkVfUFJJVkFURV9FWFRFUk4gPSBZRVM7CisJCQkJR0NDX1NZTUJPTFNfUFJJVkFU
RV9FWFRFUk4gPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxs
dm0uY2xhbmcuMV8wOworCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAoCisJCQkJCS4uLywKKwkJ
CQkJLi4vaW5jbHVkZS8sCisJCQkJKTsKKwkJCQlQUk9EVUNUX05BTUUgPSBndGVzdDsKKwkJCQlT
REtST09UID0gbWFjb3N4OworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQk0MEM4
NDkwRTEwMUEyMTdGMDA4MzY0MkEgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29u
ZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gNDA4OTlGQjMwRkZB
NzU2NzAwMEIyOUFFIC8qIFN0YXRpY0xpYnJhcnlUYXJnZXQueGNjb25maWcgKi87CisJCQlidWls
ZFNldHRpbmdzID0geworCQkJCUNPTUJJTkVfSElEUElfSU1BR0VTID0gWUVTOworCQkJCUdDQ19W
RVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlIRUFERVJf
U0VBUkNIX1BBVEhTID0gKAorCQkJCQkuLi8sCisJCQkJCS4uL2luY2x1ZGUvLAorCQkJCSk7CisJ
CQkJUFJPRFVDVF9OQU1FID0gZ3Rlc3RfbWFpbjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJ
fTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJNDBDODQ5MEYxMDFBMjE3RjAwODM2NDJBIC8q
IFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VD
b25maWd1cmF0aW9uUmVmZXJlbmNlID0gNDA4OTlGQjMwRkZBNzU2NzAwMEIyOUFFIC8qIFN0YXRp
Y0xpYnJhcnlUYXJnZXQueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUNP
TUJJTkVfSElEUElfSU1BR0VTID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNv
bXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlIRUFERVJfU0VBUkNIX1BBVEhTID0gKAorCQkJ
CQkuLi8sCisJCQkJCS4uL2luY2x1ZGUvLAorCQkJCSk7CisJCQkJUFJPRFVDVF9OQU1FID0gZ3Rl
c3RfbWFpbjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNl
OworCQl9OworCQk0MEM4NDk4NTEwMUEzNjg1MDA4MzY0MkEgLyogRGVidWcgKi8gPSB7CisJCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJR0ND
X1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUhFQURF
Ul9TRUFSQ0hfUEFUSFMgPSAuLi87CisJCQkJUFJPRFVDVF9OQU1FID0gZ3Rlc3RfdW5pdHRlc3Q7
CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJ
CTQwQzg0OTg2MTAxQTM2ODUwMDgzNjQyQSAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENC
dWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUdDQ19WRVJTSU9O
ID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlIRUFERVJfU0VBUkNI
X1BBVEhTID0gLi4vOworCQkJCVBST0RVQ1RfTkFNRSA9IGd0ZXN0X3VuaXR0ZXN0OworCQkJCVNE
S1JPT1QgPSBtYWNvc3g7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTQwQzg0
OTk1MTAxQTM2QTYwMDgzNjQyQSAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25m
aWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5h
cHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJUFJPRFVDVF9OQU1FID0gInNhbXBs
ZTFfdW5pdHRlc3Qtc3RhdGljIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJfTsKKwkJCW5h
bWUgPSBEZWJ1ZzsKKwkJfTsKKwkJNDBDODQ5OTYxMDFBMzZBNjAwODM2NDJBIC8qIFJlbGVhc2Ug
Ki8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3Mg
PSB7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8w
OworCQkJCVBST0RVQ1RfTkFNRSA9ICJzYW1wbGUxX3VuaXR0ZXN0LXN0YXRpYyI7CisJCQkJU0RL
Uk9PVCA9IG1hY29zeDsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJNEZBREMy
NDMwOEI0MTU2RDAwQUJFNTVFIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZp
Z3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDQwRDRDREYyMEUzMEUw
NzQwMDI5NDgwMSAvKiBGcmFtZXdvcmtUYXJnZXQueGNjb25maWcgKi87CisJCQlidWlsZFNldHRp
bmdzID0geworCQkJCUNPTUJJTkVfSElEUElfSU1BR0VTID0gWUVTOworCQkJCURZTElCX0NPTVBB
VElCSUxJVFlfVkVSU0lPTiA9IDE7CisJCQkJRFlMSUJfQ1VSUkVOVF9WRVJTSU9OID0gMTsKKwkJ
CQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJ
SEVBREVSX1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJLi4vLAorCQkJCQkuLi9pbmNsdWRlLywKKwkJ
CQkpOworCQkJCUlORk9QTElTVF9GSUxFID0gUmVzb3VyY2VzL0luZm8ucGxpc3Q7CisJCQkJSU5G
T1BMSVNUX1BSRUZJWF9IRUFERVIgPSAiJChQUk9KRUNUX1RFTVBfRElSKS9WZXJzaW9uLmgiOwor
CQkJCUlORk9QTElTVF9QUkVQUk9DRVNTID0gWUVTOworCQkJCVBST0RVQ1RfTkFNRSA9IGd0ZXN0
OworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVkVSU0lPTklOR19TWVNURU0gPSAiYXBwbGUt
Z2VuZXJpYyI7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQk0RkFEQzI0NDA4QjQx
NTZEMDBBQkU1NUUgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0
aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA0MEQ0Q0RGMjBFMzBFMDc0MDAy
OTQ4MDEgLyogRnJhbWV3b3JrVGFyZ2V0LnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9
IHsKKwkJCQlDT01CSU5FX0hJRFBJX0lNQUdFUyA9IFlFUzsKKwkJCQlEWUxJQl9DT01QQVRJQklM
SVRZX1ZFUlNJT04gPSAxOworCQkJCURZTElCX0NVUlJFTlRfVkVSU0lPTiA9IDE7CisJCQkJR0ND
X1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUhFQURF
Ul9TRUFSQ0hfUEFUSFMgPSAoCisJCQkJCS4uLywKKwkJCQkJLi4vaW5jbHVkZS8sCisJCQkJKTsK
KwkJCQlJTkZPUExJU1RfRklMRSA9IFJlc291cmNlcy9JbmZvLnBsaXN0OworCQkJCUlORk9QTElT
VF9QUkVGSVhfSEVBREVSID0gIiQoUFJPSkVDVF9URU1QX0RJUikvVmVyc2lvbi5oIjsKKwkJCQlJ
TkZPUExJU1RfUFJFUFJPQ0VTUyA9IFlFUzsKKwkJCQlQUk9EVUNUX05BTUUgPSBndGVzdDsKKwkJ
CQlTREtST09UID0gbWFjb3N4OworCQkJCVZFUlNJT05JTkdfU1lTVEVNID0gImFwcGxlLWdlbmVy
aWMiOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQk0RkFEQzI0NzA4QjQxNTZE
MDBBQkU1NUUgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsK
KwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gNDBENENERjEwRTMwRTA3NDAwMjk0ODAx
IC8qIERlYnVnUHJvamVjdC54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJ
Q0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJEID0gImdudSsrMHgiOworCQkJCUNMQU5HX0NYWF9M
SUJSQVJZID0gImxpYmMrKyI7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsK
KwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTRGQURDMjQ4MDhCNDE1NkQwMEFCRTU1
RSAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQli
YXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDQwRDRDREY0MEUzMEUwNzQwMDI5NDgwMSAvKiBS
ZWxlYXNlUHJvamVjdC54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ0xB
TkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJEID0gImdudSsrMHgiOworCQkJCUNMQU5HX0NYWF9MSUJS
QVJZID0gImxpYmMrKyI7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJ
CX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKy8qIEVuZCBYQ0J1aWxkQ29uZmlndXJhdGlv
biBzZWN0aW9uICovCisKKy8qIEJlZ2luIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLwor
CQkzQjIzOEZBMzBFODI4QkI2MDA4NDZFMTEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZv
ciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkNoZWNrIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJh
dGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTNCMjM4RjYwMEU4MjhC
NTQwMDg0NkUxMSAvKiBEZWJ1ZyAqLywKKwkJCQkzQjIzOEY2MTBFODI4QjU0MDA4NDZFMTEgLyog
UmVsZWFzZSAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7
CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOworCQl9OworCQk0MDg5OUY0
QTBGRkE3MUJDMDAwQjI5QUUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRp
dmVUYXJnZXQgImd0ZXN0X3VuaXR0ZXN0LWZyYW1ld29yayIgKi8gPSB7CisJCQlpc2EgPSBYQ0Nv
bmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQk0MDg5OUY0
NTBGRkE3MTg1MDAwQjI5QUUgLyogRGVidWcgKi8sCisJCQkJNDA4OTlGNDYwRkZBNzE4NTAwMEIy
OUFFIC8qIFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2li
bGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJ
NDA4OUEwMjQwRkZBQ0YwMTAwMEIyOUFFIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3Ig
UEJYTmF0aXZlVGFyZ2V0ICJzYW1wbGUxX3VuaXR0ZXN0LWZyYW1ld29yayIgKi8gPSB7CisJCQlp
c2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJ
CQk0MDg5QTAxNTBGRkFDRUZEMDAwQjI5QUUgLyogRGVidWcgKi8sCisJCQkJNDA4OUEwMTYwRkZB
Q0VGRDAwMEIyOUFFIC8qIFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRp
b25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsK
KwkJfTsKKwkJNDBDNDRBRTQwRTM3OTkwNTAwOEZDQzUxIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24g
bGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJWZXJzaW9uIEluZm8iICovID0geworCQkJaXNh
ID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJ
NDBDNDRBREYwRTM3OThGNDAwOEZDQzUxIC8qIERlYnVnICovLAorCQkJCTQwQzQ0QUUwMEUzNzk4
RjQwMDhGQ0M1MSAvKiBSZWxlYXNlICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9u
SXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7CisJ
CX07CisJCTQwQzg0OTAyMTAxQTIxMkUwMDgzNjQyQSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxp
c3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiZ3Rlc3Qtc3RhdGljIiAqLyA9IHsKKwkJCWlzYSA9IFhD
Q29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTQwQzg0
OEZCMTAxQTIwOUQwMDgzNjQyQSAvKiBEZWJ1ZyAqLywKKwkJCQk0MEM4NDhGQzEwMUEyMDlEMDA4
MzY0MkEgLyogUmVsZWFzZSAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlz
aWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOworCQl9Owor
CQk0MEM4NDkxMjEwMUEyMUQyMDA4MzY0MkEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZv
ciBQQlhOYXRpdmVUYXJnZXQgImd0ZXN0X21haW4tc3RhdGljIiAqLyA9IHsKKwkJCWlzYSA9IFhD
Q29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTQwQzg0
OTBFMTAxQTIxN0YwMDgzNjQyQSAvKiBEZWJ1ZyAqLywKKwkJCQk0MEM4NDkwRjEwMUEyMTdGMDA4
MzY0MkEgLyogUmVsZWFzZSAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlz
aWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOworCQl9Owor
CQk0MEM4NDk4NDEwMUEzNjg1MDA4MzY0MkEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZv
ciBQQlhOYXRpdmVUYXJnZXQgImd0ZXN0X3VuaXR0ZXN0LXN0YXRpYyIgKi8gPSB7CisJCQlpc2Eg
PSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQk0
MEM4NDk4NTEwMUEzNjg1MDA4MzY0MkEgLyogRGVidWcgKi8sCisJCQkJNDBDODQ5ODYxMDFBMzY4
NTAwODM2NDJBIC8qIFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25J
c1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKKwkJ
fTsKKwkJNDBDODQ5OTQxMDFBMzZBNjAwODM2NDJBIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlz
dCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJzYW1wbGUxX3VuaXR0ZXN0LXN0YXRpYyIgKi8gPSB7CisJ
CQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgK
KwkJCQk0MEM4NDk5NTEwMUEzNkE2MDA4MzY0MkEgLyogRGVidWcgKi8sCisJCQkJNDBDODQ5OTYx
MDFBMzZBNjAwODM2NDJBIC8qIFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3Vy
YXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFz
ZTsKKwkJfTsKKwkJNEZBREMyNDIwOEI0MTU2RDAwQUJFNTVFIC8qIEJ1aWxkIGNvbmZpZ3VyYXRp
b24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJndGVzdC1mcmFtZXdvcmsiICovID0geworCQkJ
aXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJ
CQkJNEZBREMyNDMwOEI0MTU2RDAwQUJFNTVFIC8qIERlYnVnICovLAorCQkJCTRGQURDMjQ0MDhC
NDE1NkQwMEFCRTU1RSAvKiBSZWxlYXNlICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0
aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7
CisJCX07CisJCTRGQURDMjQ2MDhCNDE1NkQwMEFCRTU1RSAvKiBCdWlsZCBjb25maWd1cmF0aW9u
IGxpc3QgZm9yIFBCWFByb2plY3QgImd0ZXN0IiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJh
dGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTRGQURDMjQ3MDhCNDE1
NkQwMEFCRTU1RSAvKiBEZWJ1ZyAqLywKKwkJCQk0RkFEQzI0ODA4QjQxNTZEMDBBQkU1NUUgLyog
UmVsZWFzZSAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7
CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOworCQl9OworLyogRW5kIFhD
Q29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLworCX07CisJcm9vdE9iamVjdCA9IDA4NjdENjkw
RkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC90
cmF2aXMuc2ggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvdHJhdmlzLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkZWNiZDk2NGRiOGQ2YjExYmZkMjM4
MDEyMTc5MjU3ZDc5MDU2MjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvdHJhdmlzLnNoCkBAIC0wLDAg
KzEsMTUgQEAKKyMhL3Vzci9iaW4vZW52IHNoCitzZXQgLWV2eAorZW52IHwgc29ydAorCitta2Rp
ciBidWlsZCB8fCB0cnVlCitta2RpciBidWlsZC8kR1RFU1RfVEFSR0VUIHx8IHRydWUKK2NkIGJ1
aWxkLyRHVEVTVF9UQVJHRVQKK2NtYWtlIC1EZ3Rlc3RfYnVpbGRfc2FtcGxlcz1PTiBcCisgICAg
ICAtRGdtb2NrX2J1aWxkX3NhbXBsZXM9T04gXAorICAgICAgLURndGVzdF9idWlsZF90ZXN0cz1P
TiBcCisgICAgICAtRGdtb2NrX2J1aWxkX3Rlc3RzPU9OIFwKKyAgICAgIC1EQ01BS0VfQ1hYX0ZM
QUdTPSRDWFhfRkxBR1MgXAorICAgICAgLi4vLi4vJEdURVNUX1RBUkdFVAorbWFrZQorQ1RFU1Rf
T1VUUFVUX09OX0ZBSUxVUkU9MSBtYWtlIHRlc3QK
</data>

          </attachment>
      

    </bug>

</bugzilla>