Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 12 Aug 2003 18:05:41 +0800
From:      "PC32 XHChen" <XHChen@Winbond.com.tw>
To:        <freebsd-cvsweb@freebsd.org>
Subject:   Graph of revisions for cvsweb.cgi
Message-ID:  <E36E0C5C92D97049B4855B5498A945470CB98B@weshml02.winbond.com.tw>

next in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.

------_=_NextPart_001_01C360B9.49C45A42
Content-Type: text/plain;
	charset="UTF-8"
Content-Transfer-Encoding: base64

RGVhciBhbGw6DQoJSSBtb2RpZmllZCBjdnN3ZWIuY2dpIGZvciBzdXBwb3J0aW5nICJncmFwaCBz
ZWxlY3Rpb24iIGFzIHdoYXQncyBpbiB3aW5jdnMuDQoJVGhhbmtzIGZvciB0cnlpbmcgaXQgIQ0K
DQpCZXN0IHJlZ2FyZHMuDQp4aGNoZW5Ad2luYm9uZC5jb20udHcNCigyMS02MjM2NTk5OS0xODEx
KQ0KQ2hlbiBYaWFvaHVpDQo=

Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1UaGUgcHJpdmlsZWdlZCBjb25maWRl
bnRpYWwgaW5mb3JtYXRpb24gY29udGFpbmVkIGluIHRoaXMgZW1haWwgaXMgaW50ZW5kZWQgZm9y
IHVzZSBvbmx5IGJ5IHRoZSBhZGRyZXNzZWVzIGFzIGluZGljYXRlZCBieSB0aGUgb3JpZ2luYWwg
YXV0aG9yIG9mIHRoaXMgZW1haWwuIElmIHlvdSBhcmUgbm90IHRoZSBhZGRyZXNzZWUgaW5kaWNh
dGVkIGluIHRoaXMgZW1haWwgb3IgYXJlIG5vdCByZXNwb25zaWJsZSBmb3IgZGVsaXZlcnkgb2Yg
dGhlIGVtYWlsIHRvIHN1Y2ggcGVyc29uLCBwbGVhc2Uga2luZGx5IHJlcGx5IHRoZSBzZW5kZXIg
aW5kaWNhdGluZyBhY2NvcmRpbmdseSBhbmQgZGVsZXRlIGFsbCBjb3BpZXMgb2YgaXQgZnJvbSB5
b3VyIGNvbXB1dGVyIGFuZCBuZXR3b3JrIHNlcnZlciBpbW1lZGlhdGVseS4gV2UgdGhhbmsgeW91
IGZvciB5b3VyIGNvb3BlcmF0aW9uLiBJdCBpcyBhZHZpc2FibGUgdGhhdCBhbnkgdW5hdXRob3Jp
emVkIHVzZSBvZiBjb25maWRlbnRpYWwgaW5mb3JtYXRpb24gb2YgV2luYm9uZCBpcyBzdHJpY3Rs
eSBwcm9oaWJpdGVkOyBhbmQgYW55IGluZm9ybWF0aW9uIGluIHRoaXMgZW1haWwgdGhhdCBkb2Vz
IG5vdCByZWxhdGUgdG8gdGhlIG9mZmljaWFsIGJ1c2luZXNzIG9mIFdpbmJvbmQgc2hhbGwgYmUg
ZGVlbWVkIGFzIG5laXRoZXIgZ2l2ZW4gbm9yIGVuZG9yc2VkIGJ5IFdpbmJvbmQuPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PUlmIHlvdXIgY29tcHV0ZXIgaXMgdW5hYmxlIHRvIGRl
Y29kZSBDaGluZXNlIGZvbnQsIHBsZWFzZSBpZ25vcmUgdGhlIGZvbGxvd2luZyBtZXNzYWdlLiBU
aGV5IGVzc2VudGlhbGx5IHJlcGVhdCB0aGUmbmJzcDsgRW5nbGlzaCBzdGF0ZW1lbnQgYWJvdmUu
pburSKXzpLqp0qd0tdioublxpGyqurBdsqOpyr73sUupyrjqsFQsILbIscLFdq3stW+rSKRIq/yp
d6SnpqyrSKRIqPq+XKSnpc4uILCyqM+xeqjDq0SzUav8qXekp6asq0ikSKnOpl2l9KbzreymXaZi
pby4Z7HCxXaqurGhp86kp6RVpqyo7KW7q0il8ywgvdCxeqdpqr6t7LVvq0ikSKjDpd+nWbFOq0il
87FxuXG4o7tQuvS49Kb4qkG+uaSkpKmlSK74sKMuILnvqfOxeqq6plinQCwgp9qtzKX9prmtUMHC
LiCvU6a5tKO/9CwgpfSm86W8uGexwsV2vtWm26jPpc612Ki5uXGkbKq6vvexS7jqsFSquqbmrLCs
T7NRxFmu5rhUpO6qui4gq0il87tQtdioublxpGzA57d+tUzD9qSnpLquZSyko7FvtfissLXYqLm5
caRspKel37P1qc63TqijLg0K
------_=_NextPart_001_01C360B9.49C45A42
Content-Type: application/octet-stream;
	name="cvsweb.cgi"
Content-Transfer-Encoding: base64
Content-Description: cvsweb.cgi
Content-Disposition: attachment;
	filename="cvsweb.cgi"

IyEvdXNyL2Jpbi9wZXJsIC13VAojCiMgY3Zzd2ViIC0gYSBDR0kgaW50ZXJmYWNlIHRvIENWUyB0
cmVlcy4KIwojIFdyaXR0ZW4gaW4gdGhlaXIgc3BhcmUgdGltZSBieQojICAgICAgICAgICAgIEJp
bGwgRmVubmVyICAgICAgICAgIDxmZW5uZXJARnJlZUJTRC5vcmc+ICAgKG9yaWdpbmFsIHdvcmsp
CiMgZXh0ZW5kZWQgYnkgSGVubmVyIFplbGxlciAgICAgICAgPHplbGxlckB0aGluay5kZT4sCiMg
ICAgICAgICAgICAgSGVucmlrIE5vcmRzdHJvbSAgICAgPGhub0BoZW0ucGFzc2FnZW4uc2U+CiMg
ICAgICAgICAgICAgS2VuIENvYXIgICAgICAgICAgICAgPGNvYXJAQXBhY2hlLk9yZz4KIyAgICAg
ICAgICAgICBEaWNrIEJhbGFza2EgICAgICAgICA8ZGlja0BidWNrb3NvZnQuY29tPgojICAgICAg
ICAgICAgIEFraW5vcmkgTVVTSEEgICAgICAgIDxrbnVARnJlZUJTRC5vcmc+CiMgICAgICAgICAg
ICAgSmVucy1Vd2UgTWFnZXIgICAgICAgPGp1bUBoZWxpb3MuZGU+CiMgICAgICAgICAgICAgVmls
bGUgU2t5dHTkICAgICAgICAgPHNjb3BARnJlZUJTRC5vcmc+CiMgICAgICAgICAgICAgVmFzc2ls
aWkgS2hhY2hhdHVyb3YgPHZhc3NpbGlpQHRhcnVuei5vcmc+CiMKIyBCYXNlZCBvbjoKIyAqIEJp
bGwgRmVubmVycyBjdnN3ZWIuY2dpIHJldmlzaW9uIDEuMjggYXZhaWxhYmxlIGZyb206CiMgICBo
dHRwOi8vd3d3LkZyZWVCU0Qub3JnL2NnaS9jdnN3ZWIuY2dpL3d3dy9lbi9jZ2kvY3Zzd2ViLmNn
aQojCiMgQ29weXJpZ2h0IChjKSAxOTk2LTE5OTggQmlsbCBGZW5uZXIKIyAgICAgICAgICAgKGMp
IDE5OTgtMTk5OSBIZW5uZXIgWmVsbGVyCiMgICAgICAgICAgIChjKSAxOTk5ICAgICAgSGVucmlr
IE5vcmRzdHJvbQojICAgICAgICAgICAoYykgMjAwMC0yMDAyIEFraW5vcmkgTVVTSEEKIyAgICAg
ICAgICAgKGMpIDIwMDIgICAgICBWaWxsZSBTa3l0dOQKIyBBbGwgcmlnaHRzIHJlc2VydmVkLgoj
CiMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCiMgYXJlIG1ldDoKIyAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAojICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
IyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAojICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgojCiMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORAojIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQojIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCiMgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUKIyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAojIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCiMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCiMg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QKIyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCiMgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgojIFNV
Q0ggREFNQUdFLgojCiMgJEZyZWVCU0Q6IHByb2plY3RzL2N2c3dlYi9jdnN3ZWIuY2dpLHYgMS4x
MTkuMi42IDIwMDIvMDkvMjYgMjA6NTY6MDUgc2NvcCBFeHAgJAojICRJZDogY3Zzd2ViLmNnaSx2
IDEuMTEyIDIwMDEvMDcvMjQgMTM6MDM6MTYgaHplbGxlciBFeHAgJAojICRJZGFlbW9uczogL2hv
bWUvY3ZzL2N2c3dlYi9jdnN3ZWIuY2dpLHYgMS44NCAyMDAxLzEwLzA3IDIwOjUwOjEwIGtudSBF
eHAgJAojCiMjIwoKcmVxdWlyZSA1LjAwMDsKCnVzZSBzdHJpY3Q7Cgp1c2UgdmFycyBxdyAoCiAg
ICAkY3Zzd2ViX3JldmlzaW9uCiAgICAkbXlkaXIgJHVuYW1lICRjb25maWcgJGFsbG93X3ZlcnNp
b25fc2VsZWN0ICR2ZXJib3NlCiAgICBAQ1ZTcmVwb3NpdG9yaWVzIEBDVlNST09UICVDVlNST09U
ICVDVlNST09UZGVzY3IKICAgICVNSVJST1JTICVERUZBVUxUVkFMVUUgJUlDT05TICVNVFlQRVMK
ICAgIEBESUZGVFlQRVMgJURJRkZUWVBFUyBATE9HU09SVEtFWVMgJUxPR1NPUlRLRVlTCiAgICAl
YWxsdGFncyBAdGFiY29sb3JzICVmaWxlaW5mbyAldGFncyBAYnJhbmNobmFtZXMgJW5hbWVwcmlu
dGVkCiAgICAlc3ltcmV2ICVyZXZzeW0gQGFsbHJldmlzaW9ucyAlZGF0ZSAlYXV0aG9yIEByZXZk
aXNwbGF5b3JkZXIKICAgIEByZXZpc2lvbnMgJXN0YXRlICVkaWZmbGluZXMgJWxvZyAlYnJhbmNo
cG9pbnQgQHJldm9yZGVyCiAgICAkcHJjZ2kgQHByY2F0ZWdvcmllcyAkcmVfcHJjYXRlZ29yaWVz
ICRwcmtleXdvcmQgJHJlX3Bya2V5d29yZCAkbWFuY2dpCiAgICAkY2hlY2tvdXRNYWdpYyAkZG9D
aGVja291dCAkc2NyaXB0bmFtZSAkc2NyaXB0d2hlcmUKICAgICR3aGVyZSAkcGF0aGluZm8gJEJy
b3dzZXIgJG5vZmlsZWxpbmtzICRtYXljb21wcmVzcwogICAgQHN0aWNreXZhcnMgQHVuc2FmZXZh
cnMKICAgICVmdW5jbGluZV9yZWdleHAgJGlzX21vZF9wZXJsCiAgICAkaXNfbGlua3MgJGlzX2x5
bnggJGlzX3czbSAkaXNfbXNpZSAkaXNfbW96aWxsYTMgJGlzX3RleHRiYXNlZAogICAgJWlucHV0
ICRxdWVyeSAkYmFyZXF1ZXJ5ICRzb3J0YnkgJGJ5ZGF0ZSAkYnlyZXYgJGJ5YXV0aG9yCiAgICAk
Ynlsb2cgJGJ5ZmlsZSAkZGVmYXVsdERpZmZUeXBlICRsb2dzb3J0ICRjdnN0cmVlICRjdnNyb290
CiAgICAkbWltZXR5cGUgJGNoYXJzZXQgJG91dHB1dF9maWx0ZXIgJGRlZmF1bHRUZXh0UGxhaW4g
JGRlZmF1bHRWaWV3YWJsZQogICAgJGNvbW1hbmRfcGF0aCAlQ01EICRhbGxvd19jb21wcmVzcwog
ICAgJGJhY2tpY29uICRkaXJpY29uICRmaWxlaWNvbgogICAgJGZ1bGxuYW1lICRuZXduYW1lICRj
dnN0cmVlZGVmYXVsdAogICAgJGJvZHlfdGFnICRib2R5X3RhZ19mb3Jfc3JjICRsb2dvICRkZWZh
dWx0dGl0bGUgJGFkZHJlc3MKICAgICRsb25nX2ludHJvICRzaG9ydF9pbnN0cnVjdGlvbiAkc2hv
cnRMb2dMZW4KICAgICRzaG93X2F1dGhvciAkZGlydGFibGUgJHRhYmxlcGFkZGluZyAkY29sdW1u
SGVhZGVyQ29sb3JEZWZhdWx0CiAgICAkY29sdW1uSGVhZGVyQ29sb3JTb3J0ZWQgJGhyX2JyZWFr
YWJsZSAkc2hvd2Z1bmMgJGhyX2lnbndoaXRlCiAgICAkaHJfaWdua2V5c3Vic3QgJGRpZmZjb2xv
ckhlYWRpbmcgJGRpZmZjb2xvckVtcHR5ICRkaWZmY29sb3JSZW1vdmUKICAgICRkaWZmY29sb3JD
aGFuZ2UgJGRpZmZjb2xvckFkZCAkZGlmZmNvbG9yRGFya0NoYW5nZSAkZGlmZmZvbnRmYWNlCiAg
ICAkZGlmZmZvbnRzaXplICRpbnB1dFRleHRTaXplICRtaW1lX3R5cGVzCiAgICAkYWxsb3dfYW5u
b3RhdGUgJGFsbG93X21hcmt1cAogICAgJGFsbG93X2xvZ19leHRyYSAkYWxsb3dfZGlyX2V4dHJh
ICRhbGxvd19zb3VyY2VfZXh0cmEKICAgICR1c2VfamF2YV9zY3JpcHQgJG9wZW5fZXh0ZXJuX3dp
bmRvdwogICAgJGV4dGVybl93aW5kb3dfd2lkdGggJGV4dGVybl93aW5kb3dfaGVpZ2h0ICRlZGl0
X29wdGlvbl9mb3JtCiAgICAkc2hvd19zdWJkaXJfbGFzdG1vZCAkc2hvd19sb2dfaW5fbWFya3Vw
ICRwcmVmb3JtYXRfaW5fbWFya3VwICR2CiAgICAkbmF2aWdhdGlvbkhlYWRlckNvbG9yICR0YWJs
ZUJvcmRlckNvbG9yICRtYXJrdXBMb2dDb2xvcgogICAgJHRhYnN0b3AgJHN0YXRlICRhbm5UYWJs
ZSAkc2VsICRjdXJicmFuY2ggQEhpZGVNb2R1bGVzIEBGb3JiaWRkZW5GaWxlcwogICAgJG1vZHVs
ZSAkdXNlX2Rlc2NyaXB0aW9ucyAlZGVzY3JpcHRpb25zIEBteXR6ICRkd2hlcmUgJG1vZGRhdGUK
ICAgICR1c2VfbW9kZGF0ZSAkaGFzX3psaWIgJGd6aXBfb3BlbgogICAgJGFsbG93X3RhciBAdGFy
X29wdGlvbnMgQGd6aXBfb3B0aW9ucyBAemlwX29wdGlvbnMgQGN2c19vcHRpb25zCiAgICBAYW5u
b3RhdGVfb3B0aW9ucyAkTE9HX0ZJTEVTRVBBUkFUT1IgJExPR19SRVZTRVBBUkFUT1IKICAgICR0
bXBkaXIgJEhUTUxfRE9DVFlQRSAkSFRNTF9NRVRBCik7CgpzdWIgcHJpbnREaWZmU2VsZWN0KCQp
OwpzdWIgcHJpbnREaWZmTGlua3MoJCQpOwpzdWIgcHJpbnRMb2dTb3J0U2VsZWN0KCQpOwpzdWIg
ZmluZExhc3RNb2RpZmllZFN1YmRpcnMoQCk7CnN1YiBodG1saWZ5X3N1YigmJCk7CnN1YiBodG1s
aWZ5KCQ7JCk7CnN1YiBzcGFjZWRIdG1sVGV4dCgkOyQpOwpzdWIgbGluaygkJCk7CnN1YiByZXZj
bXAoJCQpOwpzdWIgZmF0YWwoJCRAKTsKc3ViIHJlZGlyZWN0KCQpOwpzdWIgc2FmZWdsb2IoJCk7
CnN1YiBzZWFyY2hfcGF0aCgkKTsKc3ViIGdldE1pbWVUeXBlRnJvbVN1ZmZpeCgkKTsKc3ViIGhl
YWQoJDskKTsKc3ViIHNjYW5fZGlyZWN0aXZlcyhAKTsKc3ViIG9wZW5PdXRwdXRGaWx0ZXIoKTsK
c3ViIGRvQW5ub3RhdGUoJCQpOwpzdWIgZG9DaGVja291dCgkJCk7CnN1YiBjdnN3ZWJNYXJrdXAo
JCQkKTsKc3ViIHZpZXdhYmxlKCQpOwpzdWIgZG9EaWZmKCQkJCQkJCk7CnN1YiBnZXREaXJMb2dz
KCQkQCk7CnN1YiByZWFkTG9nKCQ7JCk7CnN1YiBwcmludExvZygkOyQpOwpzdWIgZG9Mb2coJCk7
CnN1YiBkb0dyYXBoKCQpOyN4aGNoZW4Kc3ViIGZsdXNoX2RpZmZfcm93cygkJCQkKTsKc3ViIGh1
bWFuX3JlYWRhYmxlX2RpZmYoJCk7CnN1YiBuYXZpZ2F0ZUhlYWRlcigkJCQkJCk7CnN1YiBwbHVy
YWxfd3JpdGUoJCQpOwpzdWIgcmVhZGFibGVUaW1lKCQkKTsKc3ViIGNsaWNrYWJsZVBhdGgoJCQp
OwpzdWIgY2hvb3NlQ1ZTUm9vdCgpOwpzdWIgY2hvb3NlTWlycm9yKCk7CnN1YiBmaWxlU29ydENt
cCgpOwpzdWIgZG93bmxvYWRfdXJsKCQkOyQpOwpzdWIgZG93bmxvYWRfbGluaygkJCQ7JCk7CnN1
YiB0b2dnbGVRdWVyeSgkJCk7CnN1YiB1cmxlbmNvZGUoJCk7CnN1YiBodG1sanMoJCk7I3hoY2hl
bgpzdWIgaHRtbHF1b3RlKCQpOwpzdWIgaHRtbHVucXVvdGUoJCk7CnN1YiBocmVmcXVvdGUoJCk7
CnN1YiBodHRwX2hlYWRlcig7JCk7CnN1YiBodG1sX2hlYWRlcigkKTsKc3ViIGh0bWxfZm9vdGVy
KCk7CnN1YiBsaW5rX3RhZ3MoJCk7CnN1YiBmb3JiaWRkZW5fZmlsZSgkKTsKc3ViIGZvcmJpZGRl
bl9tb2R1bGUoJCk7CgojIyMjIyBTdGFydCBvZiBDb25maWd1cmF0aW9uIEFyZWEgIyMjIyMjIyMK
ZGVsZXRlICRFTlZ7UEFUSH07CgokY3Zzd2ViX3JldmlzaW9uID0gJzIuMC42JzsKCnVzZSBGaWxl
OjpCYXNlbmFtZSAoKTsKCigkbXlkaXIpID0gKEZpbGU6OkJhc2VuYW1lOjpkaXJuYW1lKCQwKSA9
fiAvKC4qKS8pOyAgICAjIHVudGFpbnQKCiMgPT0gRURJVCB0aGlzID09CiMgTG9jYXRpb25zIHRv
IHNlYXJjaCBmb3IgdXNlciBjb25maWd1cmF0aW9uLCBpbiBvcmRlcjoKZm9yICgiJG15ZGlyL2N2
c3dlYi5jb25mIiwgJy91c3IvbG9jYWwvZXRjL2N2c3dlYi9jdnN3ZWIuY29uZicpIHsKCWlmIChk
ZWZpbmVkKCRfKSAmJiAtciAkXykgewoJCSRjb25maWcgPSAkXzsKCQlsYXN0OwoJfQp9CgojID09
IENvbmZpZ3VyYXRpb24gZGVmYXVsdHMgPT0KIyBEZWZhdWx0cyBmb3IgY29uZmlndXJhdGlvbiB2
YXJpYWJsZXMgdGhhdCBzaG91bGRuJ3QgbmVlZAojIHRvIGJlIGNvbmZpZ3VyZWQuLgokYWxsb3df
dmVyc2lvbl9zZWxlY3QgPSAxOwokYWxsb3dfbG9nX2V4dHJhID0gMTsKCiMjIyMjIEVuZCBvZiBD
b25maWd1cmF0aW9uIEFyZWEgICAjIyMjIyMjIwoKIyMjIyMjIyMgQ29uZmlndXJhdGlvbiB2YXJp
YWJsZXMgIyMjIyMjIyMjCiMgVGhlc2UgYXJlIGRlZmluZWQgdG8gYWxsb3cgY2hlY2tpbmcgd2l0
aCBwZXJsIC1jdwpAQ1ZTcmVwb3NpdG9yaWVzID0gQENWU1JPT1QgPSAlQ1ZTUk9PVCA9ICVNSVJS
T1JTID0gJURFRkFVTFRWQUxVRSA9ICVJQ09OUyA9CiAgICAlTVRZUEVTID0gJXRhZ3MgPSAlYWxs
dGFncyA9IEB0YWJjb2xvcnMgPSAlZmlsZWluZm8gPSAoKTsKJGN2c3RyZWVkZWZhdWx0ID0gJGJv
ZHlfdGFnID0gJGJvZHlfdGFnX2Zvcl9zcmMgPSAkbG9nbyA9ICRkZWZhdWx0dGl0bGUgPQogICAg
JGFkZHJlc3MgPSAkbG9uZ19pbnRybyA9ICRzaG9ydF9pbnN0cnVjdGlvbiA9ICRzaG9ydExvZ0xl
biA9ICRzaG93X2F1dGhvciA9CiAgICAkZGlydGFibGUgPSAkdGFibGVwYWRkaW5nID0gJGNvbHVt
bkhlYWRlckNvbG9yRGVmYXVsdCA9CiAgICAkY29sdW1uSGVhZGVyQ29sb3JTb3J0ZWQgPSAkaHJf
YnJlYWthYmxlID0gJHNob3dmdW5jID0gJGhyX2lnbndoaXRlID0KICAgICRocl9pZ25rZXlzdWJz
dCA9ICRkaWZmY29sb3JIZWFkaW5nID0gJGRpZmZjb2xvckVtcHR5ID0gJGRpZmZjb2xvclJlbW92
ZSA9CiAgICAkZGlmZmNvbG9yQ2hhbmdlID0gJGRpZmZjb2xvckFkZCAgPSAkZGlmZmNvbG9yRGFy
a0NoYW5nZSA9ICRkaWZmZm9udGZhY2UgICA9CiAgICAkZGlmZmZvbnRzaXplICAgID0gJGlucHV0
VGV4dFNpemUgPSAkbWltZV90eXBlcyAgICAgICAgICA9ICRhbGxvd19hbm5vdGF0ZSA9CiAgICAk
YWxsb3dfbWFya3VwICAgICAgICA9ICR1c2VfamF2YV9zY3JpcHQgICAgICA9ICRvcGVuX2V4dGVy
bl93aW5kb3cgPQogICAgJGV4dGVybl93aW5kb3dfd2lkdGggPSAkZXh0ZXJuX3dpbmRvd19oZWln
aHQgPSAkZWRpdF9vcHRpb25fZm9ybSAgID0KICAgICRzaG93X3N1YmRpcl9sYXN0bW9kID0gJHNo
b3dfbG9nX2luX21hcmt1cCA9ICR2ID0gJG5hdmlnYXRpb25IZWFkZXJDb2xvciA9CiAgICAkdGFi
bGVCb3JkZXJDb2xvciA9ICRtYXJrdXBMb2dDb2xvciA9ICR0YWJzdG9wID0gJHVzZV9tb2RkYXRl
ID0gJG1vZGRhdGUgPQogICAgJGd6aXBfb3BlbiA9ICRIVE1MX0RPQ1RZUEUgPSAkSFRNTF9NRVRB
ID0gdW5kZWY7CiR0bXBkaXIgPSBkZWZpbmVkKCRFTlZ7VE1QRElSfSkgPyAkRU5We1RNUERJUn0g
OiAiL3Zhci90bXAiOwoKJExPR19GSUxFU0VQQVJBVE9SID0gcS9ePXs3N30kLzsKJExPR19SRVZT
RVBBUkFUT1IgID0gcS9eLXsyOH0kLzsKCkBESUZGVFlQRVMgPSBxdyhoIEggdSBjIHMpOwpARElG
RlRZUEVTe0BESUZGVFlQRVN9ID0gKAoJewoJCSdkZXNjcicgICA9PiAnY29sb3JlZCcsCgkJJ29w
dHMnICAgID0+IFsnLXUnXSwKCQknY29sb3JlZCcgPT4gMSwKCX0sCgl7CgkJJ2Rlc2NyJyAgID0+
ICdsb25nIGNvbG9yZWQnLAoJCSdvcHRzJyAgICA9PiBbJy0tdW5pZmllZD0xNSddLAoJCSdjb2xv
cmVkJyA9PiAxLAoJfSwKCXsKCQknZGVzY3InICAgPT4gJ3VuaWZpZWQnLAoJCSdvcHRzJyAgICA9
PiBbJy11J10sCgkJJ2NvbG9yZWQnID0+IDAsCgl9LAoJewoJCSdkZXNjcicgICA9PiAnY29udGV4
dCcsCgkJJ29wdHMnICAgID0+IFsnLWMnXSwKCQknY29sb3JlZCcgPT4gMCwKCX0sCgl7CgkJJ2Rl
c2NyJyAgID0+ICdzaWRlIGJ5IHNpZGUnLAoJCSdvcHRzJyAgICA9PiBbJy0tc2lkZS1ieS1zaWRl
JywgJy0td2lkdGg9MTY0J10sCgkJJ2NvbG9yZWQnID0+IDAsCgl9LAopOwoKQExPR1NPUlRLRVlT
ID0gcXcoY3ZzIGRhdGUgcmV2KTsKQExPR1NPUlRLRVlTe0BMT0dTT1JUS0VZU30gPSAoCgl7CgkJ
J2Rlc2NyJyA9PiAnTm90IHNvcnRlZCcsCgl9LAoJewoJCSdkZXNjcicgPT4gJ0NvbW1pdCBkYXRl
JywKCX0sCgl7CgkJJ2Rlc2NyJyA9PiAnUmV2aXNpb24nLAoJfSwKKTsKCiRIVE1MX0RPQ1RZUEUg
PQogICc8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0
aW9uYWwvL0VOIj4nOwoKJEhUTUxfTUVUQSA9IDw8RU9NOwo8bWV0YSBuYW1lPSJyb2JvdHMiIGNv
bnRlbnQ9Im5vZm9sbG93Ij4KPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJGcmVlQlNE
LUNWU3dlYiAkY3Zzd2ViX3JldmlzaW9uIj4KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1TY3Jp
cHQtVHlwZSIgY29udGVudD0idGV4dC9qYXZhc2NyaXB0Ij4KPG1ldGEgaHR0cC1lcXVpdj0iQ29u
dGVudC1TdHlsZS1UeXBlIiBjb250ZW50PSJ0ZXh0L2NzcyI+CkVPTQoKIyMjIyMgRW5kIG9mIGNv
bmZpZ3VyYXRpb24gdmFyaWFibGVzICMjIyMjCgp1c2UgVGltZTo6TG9jYWwgKCk7CnVzZSBJUEM6
Ok9wZW4yIHF3KG9wZW4yKTsKCiMgQ2hlY2sgaWYgdGhlIHpsaWIgQyBsaWJyYXJ5IGludGVyZmFj
ZSBpcyBpbnN0YWxsZWQsIGFuZCBpZiB5ZXMKIyB3ZSBjYW4gYXZvaWQgdXNpbmcgdGhlIGV4dHJh
IGd6aXAgcHJvY2Vzcy4KZXZhbCB7IHJlcXVpcmUgQ29tcHJlc3M6OlpsaWI7IH07CiRoYXNfemxp
YiA9ICEkQDsKCiR2ZXJib3NlICAgICAgID0gJHY7CiRjaGVja291dE1hZ2ljID0gIn5jaGVja291
dH4iOwokcGF0aGluZm8gICAgICA9IGRlZmluZWQoJEVOVntQQVRIX0lORk99KSA/ICRFTlZ7UEFU
SF9JTkZPfSA6ICcnOwokd2hlcmUgICAgICAgICA9ICRwYXRoaW5mbzsKJGRvQ2hlY2tvdXQgPSAo
JHdoZXJlID1+IG18Xi8kY2hlY2tvdXRNYWdpYy98KTsKJHdoZXJlID1+IHN8Xi8kY2hlY2tvdXRN
YWdpYy98L3w7CiR3aGVyZSA9fiBzfF4vfHw7CiRzY3JpcHRuYW1lID0gZGVmaW5lZCgkRU5We1ND
UklQVF9OQU1FfSkgPyAkRU5We1NDUklQVF9OQU1FfSA6ICcnOwokc2NyaXB0bmFtZSA9fiBzfF4v
KnwvfDsKCiMgTGV0J3Mgd29ya2Fyb3VuZCB0aHR0cGQncyBzdHVwaWRpdHkuLgppZiAoJHNjcmlw
dG5hbWUgPX4gbXwvJHwpIHsKCSRwYXRoaW5mbyAuPSAnLyc7CglteSAkcmUgPSBxdW90ZW1ldGEg
JHBhdGhpbmZvOwoJJHNjcmlwdG5hbWUgPX4gcy8kcmUkLy87Cn0KCiRzY3JpcHR3aGVyZSA9ICRz
Y3JpcHRuYW1lOwokc2NyaXB0d2hlcmUgLj0gJy8nIC4gdXJsZW5jb2RlKCR3aGVyZSk7CiR3aGVy
ZSA9ICcvJyBpZiAoJHdoZXJlIGVxICcnKTsKCiRpc19tb2RfcGVybCA9IGRlZmluZWQoJEVOVntN
T0RfUEVSTH0pOwoKIyBpbiBseW54LCBpdCBpdCB2ZXJ5IGFubm95aW5nIHRvIGhhdmUgdHdvIGxp
bmtzCiMgcGVyIGZpbGUsIHNvIGRpc2FibGUgdGhlIGxpbmsgYXQgdGhlIGljb24KIyBpbiB0aGlz
IGNhc2U6CiRCcm93c2VyID0gJEVOVntIVFRQX1VTRVJfQUdFTlR9IHx8ICcnOwokaXNfbGlua3Mg
ICAgPSAoJEJyb3dzZXIgPX4gbWBeTGlua3MgYCk7CiRpc19seW54ICAgICA9ICgkQnJvd3NlciA9
fiBtYF5MeW54L2BpKTsKJGlzX3czbSAgICAgID0gKCRCcm93c2VyID1+IG1gXnczbS9gaSk7CiRp
c19tc2llICAgICA9ICgkQnJvd3NlciA9fiBtYE1TSUVgKTsKJGlzX21vemlsbGEzID0gKCRCcm93
c2VyID1+IG1gXk1vemlsbGEvWzMtOV1gKTsKCiRpc190ZXh0YmFzZWQgPSAoJGlzX2xpbmtzIHx8
ICRpc19seW54IHx8ICRpc193M20pOwoKJG5vZmlsZWxpbmtzID0gJGlzX3RleHRiYXNlZDsKCiMg
bmV3ZXIgYnJvd3NlcnMgYWNjZXB0IGd6aXAgY29udGVudCBlbmNvZGluZwojIGFuZCBzdGF0ZSB0
aGlzIGluIGEgaGVhZGVyCiMgKG5ldHNjYXBlIGRpZCBhbHdheXMgYnV0IGRpZG4ndCBzdGF0ZSBp
dCkKIyBJdCBoYXMgYmVlbiByZXBvcnRlZCB0aGF0IHRoZXNlCiMgIGJyYWluZGFtYWdlZCBNUy1J
bnRlcm5ldCBFeHBsb2RlcnMgY2xhaW0gdGhhdCB0aGV5CiMgYWNjZXB0IGd6aXAgLi4gYnV0IGRv
bid0IGluIGZhY3QgYW5kCiMgZGlzcGxheSBnYXJiYWdlIHRoZW4gOi0vCiMgVHVybiBvZmYgZ3pp
cCBpZiBydW5uaW5nIHVuZGVyIG1vZF9wZXJsIGFuZCBubyB6bGliIGlzIGF2YWlsYWJsZSwKIyBw
aXBpbmcgZG9lcyBub3Qgd29yayBhcyBleHBlY3RlZCBpbnNpZGUgdGhlIHNlcnZlci4KJG1heWNv
bXByZXNzID0KICAgICgoKGRlZmluZWQoJEVOVntIVFRQX0FDQ0VQVF9FTkNPRElOR30pCiAgICAm
JiAkRU5We0hUVFBfQUNDRVBUX0VOQ09ESU5HfSA9fiBtYGd6aXBgKSB8fCAkaXNfbW96aWxsYTMp
ICYmICEkaXNfbXNpZQogICAgJiYgISgkaXNfbW9kX3BlcmwgJiYgISRoYXNfemxpYikpOwoKIyBw
dXQgaGVyZSB0aGUgdmFyaWFibGVzIHdlIG5lZWQgaW4gb3JkZXIKIyB0byBob2xkIG91ciBzdGF0
ZSAtIHRoZXkgd2lsbCBiZSBhZGRlZCAod2l0aAojIHRoZWlyIGN1cnJlbnQgdmFsdWUpIHRvIGFu
eSBsaW5rL3F1ZXJ5IHN0cmluZwojIHlvdSBjb25zdHJ1Y3QKQHN0aWNreXZhcnMgPSBxdyhjdnNy
b290IGhpZGVhdHRpYyBzb3J0YnkgbG9nc29ydCBmIG9ubHlfd2l0aF90YWcpOwpAdW5zYWZldmFy
cyA9IHF3KGxvZ3NvcnQgb25seV93aXRoX3RhZyByMSByMiByZXYgc29ydGJ5IHRyMSB0cjIpOwoK
aWYgKC1mICRjb25maWcpIHsKCWRvICIkY29uZmlnIiBvciBmYXRhbCgiNTAwIEludGVybmFsIEVy
cm9yIiwKCQkJICAgICAgJ0Vycm9yIGluIGxvYWRpbmcgY29uZmlndXJhdGlvbiBmaWxlOiAlczxi
cj48YnI+JXM8YnI+JywKCQkJICAgICAgJGNvbmZpZywgJEApOwp9IGVsc2UgewoJZmF0YWwoIjUw
MCBJbnRlcm5hbCBFcnJvciIsCgkgICAgICAnQ29uZmlndXJhdGlvbiBub3QgZm91bmQuICBTZXQg
dGhlIHZhcmlhYmxlIDxjb2RlPiRjb25maWc8L2NvZGU+IGluIGN2c3dlYi5jZ2kgdG8geW91ciA8
Yj5jdnN3ZWIuY29uZjwvYj4gY29uZmlndXJhdGlvbiBmaWxlIGZpcnN0LicKCSAgICAgKTsKfQoK
dW5kZWYgJWlucHV0OwokcXVlcnkgPSAkRU5We1FVRVJZX1NUUklOR307CgppZiAoZGVmaW5lZCgk
cXVlcnkpICYmICRxdWVyeSBuZSAnJykgewoJZm9yZWFjaCAoc3BsaXQgKC8mLywgJHF1ZXJ5KSkg
ewoJCXkvKy8gLzsKCQlzLyUoLi4pL3NwcmludGYoIiVjIiwgaGV4KCQxKSkvZ2U7ICAgICMgdW5x
dW90ZSAlLXF1b3RlZAoJCWlmICgvKFxTKyk9KC4qKS8pIHsKCQkJJGlucHV0eyQxfSA9ICQyIGlm
ICgkMiBuZSAiIik7CgkJfSBlbHNlIHsKCQkJJGlucHV0eyRffSsrOwoJCX0KCX0KfQoKIyBGb3Ig
YmFja3dhcmRzIGNvbXBhYmlsaXR5LCBzZXQgb25seV93aXRoX3RhZyB0byBvbmx5X29uX2JyYW5j
aCBpZiBzZXQuCiRpbnB1dHtvbmx5X3dpdGhfdGFnfSA9ICRpbnB1dHtvbmx5X29uX2JyYW5jaH0K
ICAgIGlmIChkZWZpbmVkKCRpbnB1dHtvbmx5X29uX2JyYW5jaH0pKTsKCiMgUHJldmVudCBjcm9z
cy1zaXRlIHNjcmlwdGluZwpmb3JlYWNoIChAdW5zYWZldmFycykgewoJIyBDb2xvbnMgYXJlIG5l
ZWRlZCBpbiBkaWZmcyBiZXR3ZWVuIHRhZ3MuCglpZiAoZGVmaW5lZCgkaW5wdXR7JF99KSAmJiAk
aW5wdXR7JF99ID1+IC9bXlx3XC0uOl0vKSB7CgkJZmF0YWwoIjUwMCBJbnRlcm5hbCBFcnJvciIs
CgkJICAgICAgJ01hbGZvcm1lZCBxdWVyeSAoJXM9JXMpJywKCQkgICAgICAkXywgJGlucHV0eyRf
fSk7Cgl9Cn0KCmlmIChkZWZpbmVkKCRpbnB1dHsiY29udGVudC10eXBlIn0pKSB7CglmYXRhbCgi
NTAwIEludGVybmFsIEVycm9yIiwgIlVuc3VwcG9ydGVkIGNvbnRlbnQtdHlwZSIpCgkgICAgaWYg
KCRpbnB1dHsiY29udGVudC10eXBlIn0gIX4gL15bLTAtOUEtWmEtel0rXC9bLTAtOUEtWmEtel0r
JC8pOwp9CgokREVGQVVMVFZBTFVFeydjdnNyb290J30gPSAkY3ZzdHJlZWRlZmF1bHQ7Cgpmb3Jl
YWNoIChrZXlzICVERUZBVUxUVkFMVUUpIHsKCgkjIHJlcGxhY2Ugbm90IGdpdmVuIHBhcmFtZXRl
cnMgd2l0aCB0aGUgZGVmYXVsdCBwYXJhbWV0ZXJzCglpZiAoIWRlZmluZWQoJGlucHV0eyRffSkg
fHwgJGlucHV0eyRffSBlcSAiIikgewoKCQkjIEVtcHR5IENoZWNrYm94ZXMgaW4gZm9ybXMgcmV0
dXJuIC0tIG5vdGhpbmcuIFNvIHdlIGRlZmluZSBhIGhlbHBlcgoJCSMgdmFyaWFibGUgaW4gdGhl
c2UgZm9ybXMgKGNvcHQpIHdoaWNoIGluZGljYXRlcyB0aGF0IHdlIGp1c3Qgc2V0CgkJIyBwYXJh
bWV0ZXJzIHdpdGggYSBjaGVja2JveAoJCWlmICghZGVmaW5lZCgkaW5wdXR7ImNvcHQifSkpIHsK
CgkJCSMgJ2NvcHQnIGlzbid0IGRlZmluZWQgLS0+IGVtcHR5IGlucHV0IGlzIG5vdCB0aGUgcmVz
dWx0CgkJCSMgb2YgZW1wdHkgaW5wdXQgY2hlY2tib3ggLS0+IHNldCBkZWZhdWx0CgkJCSRpbnB1
dHskX30gPSAkREVGQVVMVFZBTFVFeyRffQoJCQkgICAgaWYgKGRlZmluZWQoJERFRkFVTFRWQUxV
RXskX30pKTsKCQl9IGVsc2UgewoKCQkJIyAnY29wdCcgaXMgZGVmaW5lZCAtPiB0aGUgcmVzdWx0
IG9mIGVtcHR5IGlucHV0IGNoZWNrYm94CgkJCSMgLT4gc2V0IHRvIHplcm8gKGRpc2FibGUpIGlm
IGRlZmF1bHQgaXMgYSBib29sZWFuICgwfDEpLgoJCQkkaW5wdXR7JF99ID0gMAoJCQkgICAgaWYg
KGRlZmluZWQoJERFRkFVTFRWQUxVRXskX30pCgkJCSAgICAmJiAoJERFRkFVTFRWQUxVRXskX30g
ZXEgIjAiCgkJCSAgICB8fCAkREVGQVVMVFZBTFVFeyRffSBlcSAiMSIpKTsKCQl9Cgl9Cn0KCiRi
YXJlcXVlcnkgPSAiIjsKbXkgQGJhcmVxdWVyeTsKZm9yZWFjaCAoQHN0aWNreXZhcnMpIHsKCgkj
IGNvbnN0cnVjdCBhIHF1ZXJ5IHN0cmluZyB3aXRoIHRoZSBzdGlja3kgbm9uIGRlZmF1bHQgcGFy
YW1ldGVycyBzZXQKCWlmIChkZWZpbmVkKCRpbnB1dHskX30pICYmICRpbnB1dHskX30gbmUgJycK
CSAgICAmJiAhKGRlZmluZWQoJERFRkFVTFRWQUxVRXskX30pICYmICRpbnB1dHskX30gZXEgJERF
RkFVTFRWQUxVRXskX30pKQoJewoJCXB1c2ggQGJhcmVxdWVyeSwKCQkgICAgam9pbiAoJz0nLCB1
cmxlbmNvZGUoJF8pLCB1cmxlbmNvZGUoJGlucHV0eyRffSkpOwoJfQp9CgojIGlzIHRoZXJlIGFu
eSBxdWVyeSA/CmlmIChAYmFyZXF1ZXJ5KSB7CgkkYmFyZXF1ZXJ5ID0gam9pbiAoJyYnLCBAYmFy
ZXF1ZXJ5KTsKCSRxdWVyeSAgICAgPSAiPyRiYXJlcXVlcnkiOwoJJGJhcmVxdWVyeSA9ICImJGJh
cmVxdWVyeSI7Cn0gZWxzZSB7CgkkcXVlcnkgPSAiIjsKfQp1bmRlZiBAYmFyZXF1ZXJ5OwoKaWYg
KGRlZmluZWQoJGlucHV0e3BhdGh9KSkgewoJcmVkaXJlY3QoIiRzY3JpcHRuYW1lLyRpbnB1dHtw
YXRofSRxdWVyeSIpOwp9CgojIGdldCBhY3R1YWwgcGFyYW1ldGVycwokc29ydGJ5ICAgPSAkaW5w
dXR7InNvcnRieSJ9OwokYnlkYXRlICAgPSAwOwokYnlyZXYgICAgPSAwOwokYnlhdXRob3IgPSAw
OwokYnlsb2cgICAgPSAwOwokYnlmaWxlICAgPSAwOwppZiAoJHNvcnRieSBlcSAiZGF0ZSIpIHsK
CSRieWRhdGUgPSAxOwp9IGVsc2lmICgkc29ydGJ5IGVxICJyZXYiKSB7CgkkYnlyZXYgPSAxOwp9
IGVsc2lmICgkc29ydGJ5IGVxICJhdXRob3IiKSB7CgkkYnlhdXRob3IgPSAxOwp9IGVsc2lmICgk
c29ydGJ5IGVxICJsb2ciKSB7CgkkYnlsb2cgPSAxOwp9IGVsc2UgewoJJGJ5ZmlsZSA9IDE7Cn0K
CiRkZWZhdWx0RGlmZlR5cGUgPSAkaW5wdXR7J2YnfTsKCiRsb2dzb3J0ID0gJGlucHV0eydsb2dz
b3J0J307Cgp7CglteSBAdG1wID0gQENWU3JlcG9zaXRvcmllczsKCW15IEBwYWlyOwoKCXdoaWxl
IChAcGFpciA9IHNwbGljZShAdG1wLCAwLCAyKSkgewoJCW15ICgka2V5LCAgICR2YWwpICAgICA9
IEBwYWlyOwoJCW15ICgkZGVzY3IsICRjdnNyb290KSA9IEAkdmFsOwoKCQluZXh0IGlmICEtZCAk
Y3Zzcm9vdDsKCgkJJENWU1JPT1RkZXNjcnska2V5fSA9ICRkZXNjcjsKCQkkQ1ZTUk9PVHska2V5
fSAgICAgID0gJGN2c3Jvb3Q7CgkJcHVzaCBAQ1ZTUk9PVCwgJGtleTsKCX0KfQoKIyMgRGVmYXVs
dCBDVlMtVHJlZQppZiAoIWRlZmluZWQoJENWU1JPT1R7JGN2c3RyZWVkZWZhdWx0fSkpIHsKCWZh
dGFsKCI1MDAgSW50ZXJuYWwgRXJyb3IiLAoJICAgICAgJzxjb2RlPiRjdnN0cmVlZGVmYXVsdDwv
Y29kZT4gcG9pbnRzIHRvIGEgcmVwb3NpdG9yeSAoJXMpIG5vdCBkZWZpbmVkIGluIDxjb2RlPiUl
Q1ZTUk9PVDwvY29kZT4gKGVkaXQgeW91ciBjb25maWd1cmF0aW9uIGZpbGUgJXMpJywKCSAgICAg
ICRjdnN0cmVlZGVmYXVsdCwgJGNvbmZpZyk7Cn0KCiMgYWx0ZXJuYXRlIENWUy1UcmVlLCBjb25m
aWd1cmVkIGluIGN2c3dlYi5jb25mCmlmICgkaW5wdXR7J2N2c3Jvb3QnfSAmJiAkQ1ZTUk9PVHsk
aW5wdXR7J2N2c3Jvb3QnfX0pIHsKCSRjdnN0cmVlID0gJGlucHV0eydjdnNyb290J307Cn0gZWxz
ZSB7CgkkY3ZzdHJlZSA9ICRjdnN0cmVlZGVmYXVsdDsKfQoKJGN2c3Jvb3QgPSAkQ1ZTUk9PVHsk
Y3ZzdHJlZX07CgojIGNyZWF0ZSBpY29ucyBvdXQgb2YgZGVzY3JpcHRpb24KZm9yZWFjaCBteSAk
ayAoa2V5cyAlSUNPTlMpIHsKCW5vIHN0cmljdCAncmVmcyc7CglteSAoJGl0eHQsICRpcGF0aCwg
JGl3aWR0aCwgJGloZWlnaHQpID0gQHskSUNPTlN7JGt9fTsKCWlmICgkaXBhdGgpIHsKCQkkeyIk
e2t9aWNvbiJ9ID0KCQkgICAgc3ByaW50ZigKCQkJJzxpbWcgc3JjPSIlcyIgYWx0PSIlcyIgYm9y
ZGVyPSIwIiB3aWR0aD0iJWQiIGhlaWdodD0iJWQiPicsCgkJCWhyZWZxdW90ZSgkaXBhdGgpLCBo
dG1scXVvdGUoJGl0eHQpLCAkaXdpZHRoLCAkaWhlaWdodCkKCX0gZWxzZSB7CgkJJHsiJHtrfWlj
b24ifSA9ICRpdHh0OwoJfQp9CgpteSAkY29uZmlnX2N2c3RyZWUgPSAiJGNvbmZpZy0kY3ZzdHJl
ZSI7CgojIERvIHNvbWUgc3BlY2lhbCBjb25maWd1cmF0aW9uIGZvciBjdnN0cmVlcwppZiAoLWYg
JGNvbmZpZ19jdnN0cmVlKSB7CglkbyAiJGNvbmZpZ19jdnN0cmVlIiBvcgoJICAgIGZhdGFsKCI1
MDAgSW50ZXJuYWwgRXJyb3IiLAoJCSAgJ0Vycm9yIGluIGxvYWRpbmcgY29uZmlndXJhdGlvbiBm
aWxlOiAlczxicj48YnI+JXM8YnI+JywKCQkgICRjb25maWdfY3ZzdHJlZSwgJEApOwp9CnVuZGVm
ICRjb25maWdfY3ZzdHJlZTsKCiRyZV9wcmNhdGVnb3JpZXMgPSAnKD86JyAuIGpvaW4gKCd8Jywg
QHByY2F0ZWdvcmllcykgLiAnKScgaWYgQHByY2F0ZWdvcmllczsKJHJlX3Bya2V5d29yZCA9IHF1
b3RlbWV0YSgkcHJrZXl3b3JkKSBpZiBkZWZpbmVkKCRwcmtleXdvcmQpOwokcHJjZ2kgLj0gJyVz
JyBpZiBkZWZpbmVkKCRwcmNnaSkgJiYgJHByY2dpICF+IC8lcy87CgokZnVsbG5hbWUgICAgICAg
ICA9ICIkY3Zzcm9vdC8kd2hlcmUiOwokbWltZXR5cGUgICAgICAgICA9ICZnZXRNaW1lVHlwZUZy
b21TdWZmaXgoJGZ1bGxuYW1lKTsKJGRlZmF1bHRUZXh0UGxhaW4gPSAoJG1pbWV0eXBlIGVxICJ0
ZXh0L3BsYWluIik7CiRkZWZhdWx0Vmlld2FibGUgID0gJGFsbG93X21hcmt1cCAmJiB2aWV3YWJs
ZSgkbWltZXR5cGUpOwoKbXkgJHJld3JpdGUgPSAwOwoKaWYgKCRwYXRoaW5mbyA9fiBtfC8vfCkg
ewoJJHBhdGhpbmZvID1+IHl8L3wvfHM7CgkkcmV3cml0ZSA9IDE7Cn0KCmlmICgtZCAkZnVsbG5h
bWUgJiYgJHBhdGhpbmZvICF+IG18LyR8KSB7CgkkcGF0aGluZm8gLj0gJy8nOwoJJHJld3JpdGUg
PSAxOwp9CgppZiAoIS1kICRmdWxsbmFtZSAmJiAkcGF0aGluZm8gPX4gbXwvJHwpIHsKCWNob3Ag
JHBhdGhpbmZvOwoJJHJld3JpdGUgPSAxOwp9CgppZiAoJHJld3JpdGUpIHsKCXJlZGlyZWN0KCRz
Y3JpcHRuYW1lIC4gdXJsZW5jb2RlKCRwYXRoaW5mbykgLiAkcXVlcnkpOwp9Cgp1bmRlZiAkcmV3
cml0ZTsKCmlmICghLWQgJGN2c3Jvb3QpIHsKCWZhdGFsKCI1MDAgSW50ZXJuYWwgRXJyb3IiLAoJ
ICAgICAgJyRDVlNST09UIG5vdCBmb3VuZCE8cD5UaGUgc2VydmVyIG9uIHdoaWNoIHRoZSBDVlMg
dHJlZSBsaXZlcyBpcyBwcm9iYWJseSBkb3duLiAgUGxlYXNlIHRyeSBhZ2FpbiBpbiBhIGZldyBt
aW51dGVzLicpOwp9CgojCiMgU2VlIGlmIHRoZSBtb2R1bGUgaXMgaW4gb3VyIGZvcmJpZGRlbiBs
aXN0LgojCiR3aGVyZSA9fiBtOihbXi9dKik6OwokbW9kdWxlID0gJDE7CmlmICgkbW9kdWxlICYm
ICZmb3JiaWRkZW5fbW9kdWxlKCRtb2R1bGUpKSB7CglmYXRhbCgiNDAzIEZvcmJpZGRlbiIsCgkg
ICAgICAnQWNjZXNzIHRvICVzIGZvcmJpZGRlbi4nLAoJICAgICAgJHdoZXJlKTsKfQoKIwojIEhh
bmRsZSB0YXJiYWxsIGRvd25sb2FkcyBiZWZvcmUgYW55IGhlYWRlcnMgYXJlIG91dHB1dC4KIwpp
ZiAoJGlucHV0e3RhcmJhbGx9KSB7CglmYXRhbCgiNDAzIEZvcmJpZGRlbiIsCgkgICAgICAnRG93
bmxvYWRpbmcgdGFyYmFsbHMgaXMgcHJvaGliaXRlZC4nKQoJICAgIHVubGVzcyAkYWxsb3dfdGFy
OwoJbXkgKCRtb2R1bGUpID0gKCR3aGVyZSA9fiBtLF4vPyguKiksKTsgICAgIyB1bnRhaW50Cgkk
bW9kdWxlID1+IHMsLyhbXi9dKikkLCw7CglteSAoJGV4dCkgICAgID0gKCQxICAgICAgPX4gLyhc
LnRhclwuZ3p8XC56aXApJC8pOwoJbXkgKCRiYXNlZGlyKSA9ICgkbW9kdWxlID1+IG0sKFteL10r
KSQsKTsKCglpZiAoJGJhc2VkaXIgZXEgJycgfHwgJG1vZHVsZSBlcSAnJykgewoJCWZhdGFsKCI1
MDAgSW50ZXJuYWwgRXJyb3IiLAoJCSAgICAgICdZb3UgY2Fubm90IGRvd25sb2FkIHRoZSB0b3Ag
bGV2ZWwgZGlyZWN0b3J5LicpOwoJfQoKCW15ICR0bXBleHBvcnRkaXIgPSAiJHRtcGRpci8uY3Zz
d2ViLiQkLiIgLiBpbnQodGltZSk7CgoJbWtkaXIoJHRtcGV4cG9ydGRpciwgMDcwMCkKCSAgICBv
ciBmYXRhbCgiNTAwIEludGVybmFsIEVycm9yIiwKCQkgICAgICdVbmFibGUgdG8gbWFrZSB0ZW1w
b3JhcnkgZGlyZWN0b3J5OiAlcycsCgkJICAgICAkISk7CgoJbXkgQGZhdGFsOwoKCW15ICR0YWcg
PQoJICAgIChleGlzdHMgJGlucHV0e29ubHlfd2l0aF90YWd9ICYmIGxlbmd0aCAkaW5wdXR7b25s
eV93aXRoX3RhZ30pID8KCSAgICAkaW5wdXR7b25seV93aXRoX3RhZ30gOiAiSEVBRCI7CgoJaWYg
KCR0YWcgZXEgJ01BSU4nKSB7CgkgICAgJHRhZyA9ICdIRUFEJzsKCX0KCglpZiAoc3lzdGVtICRD
TUR7Y3ZzfSwgQGN2c19vcHRpb25zLCAnLVFkJywgJGN2c3Jvb3QsICdleHBvcnQnLCAnLXInLAoJ
ICAgICR0YWcsICctZCcsICIkdG1wZXhwb3J0ZGlyLyRiYXNlZGlyIiwgJG1vZHVsZSkKCXsKCQlA
ZmF0YWwgPSAoIjUwMCBJbnRlcm5hbCBFcnJvciIsCgkJCSAgJ2N2cyBjbyBmYWlsdXJlOiAlczog
JXMnLAoJCQkgICQhLCAkbW9kdWxlKTsKCX0gZWxzZSB7CgkJJHwgPSAxOyAgICAjIEVzc2VudGlh
bCB0byBnZXQgdGhlIGJ1ZmZlcmluZyByaWdodC4KCgkJaWYgKCRleHQgZXEgJy50YXIuZ3onKSB7
CgkJCXByaW50ICJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtZ3ppcFxyXG5cclxuIjsKCgkJ
CXN5c3RlbQoJCQkgICAgIiRDTUR7dGFyfSBAdGFyX29wdGlvbnMgLWNmIC0gLUMgJHRtcGV4cG9y
dGRpciAkYmFzZWRpciB8ICRDTUR7Z3ppcH0gQGd6aXBfb3B0aW9ucyAtYyIKCQkJICAgIGFuZCBA
ZmF0YWwgPQoJCQkJKCI1MDAgSW50ZXJuYWwgRXJyb3IiLAoJCQkJICd0YXIgemMgZmFpbHVyZTog
JXM6ICVzJywKCQkJICAgICAkISwgJGJhc2VkaXIpOwoJCX0gZWxzaWYgKCRleHQgZXEgJy56aXAn
ICYmICRDTUR7emlwfSkgewoJCQlwcmludCAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi96aXBc
clxuXHJcbiI7CgoJCQlzeXN0ZW0KCQkJICAgICJjZCAkdG1wZXhwb3J0ZGlyICYmICRDTUR7emlw
fSBAemlwX29wdGlvbnMgLXIgLSAkYmFzZWRpciIKCQkJICAgIGFuZCBAZmF0YWwgPQoJCQkJKCI1
MDAgSW50ZXJuYWwgRXJyb3IiLAoJCQkJICd6aXAgZmFpbHVyZTogJXM6ICVzJywKCQkJCSAkISwg
JGJhc2VkaXIpOwoJCX0gZWxzZSB7CgkJCUBmYXRhbCA9CgkJCSAgICAoIjUwMCBJbnRlcm5hbCBF
cnJvciIsCgkJCSAgICAgJ3Vuc3VwcG9ydGVkIGZpbGUgdHlwZScpOwoJCX0KCX0KCglzeXN0ZW0g
JENNRHtybX0sICctcmYnLCAkdG1wZXhwb3J0ZGlyIGlmIC1kICR0bXBleHBvcnRkaXI7CgoJJmZh
dGFsKEBmYXRhbCkgaWYgQGZhdGFsOwoKCWV4aXQ7Cn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIwojIFZpZXcgYSBkaXJlY3RvcnkKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IwppZiAoLWQgJGZ1bGxuYW1lKSB7CglteSAkZGggPSBkbyB7IGxvY2FsICgqREgpOyB9OwoJb3Bl
bmRpcigkZGgsICRmdWxsbmFtZSkgb3IgZmF0YWwoIjQwNCBOb3QgRm91bmQiLAoJCQkJCSAnJXM6
ICVzJywKCQkJCQkgJHdoZXJlLCAkISk7CglteSBAZGlyID0gcmVhZGRpcigkZGgpOwoJY2xvc2Vk
aXIoJGRoKTsKCW15IEBzdWJMZXZlbEZpbGVzID0gZmluZExhc3RNb2RpZmllZFN1YmRpcnMoQGRp
cikKCSAgICBpZiAoJHNob3dfc3ViZGlyX2xhc3Rtb2QpOwoJZ2V0RGlyTG9ncygkY3Zzcm9vdCwg
JHdoZXJlLCBAc3ViTGV2ZWxGaWxlcyk7CgoJaWYgKCR3aGVyZSBlcSAnLycpIHsKCQlodG1sX2hl
YWRlcigkZGVmYXVsdHRpdGxlKTsKCQkkbG9uZ19pbnRybyA9fiBzLyEhQ1ZTUk9PVGRlc2NyISEv
JENWU1JPT1RkZXNjcnskY3ZzdHJlZX0vZzsKCQlwcmludCAkbG9uZ19pbnRybzsKCX0gZWxzZSB7
CgkJaHRtbF9oZWFkZXIoJHdoZXJlKTsKCQlwcmludCAkc2hvcnRfaW5zdHJ1Y3Rpb247Cgl9CgoJ
aWYgKCR1c2VfZGVzY3JpcHRpb25zICYmIG9wZW4oREVTQywgIjwkY3Zzcm9vdC9DVlNST09UL2Rl
c2NyaXB0aW9ucyIpKQoJewoJCXdoaWxlICg8REVTQz4pIHsKCQkJY2hvbXA7CgkJCW15ICgkZGly
LCAkZGVzY3JpcHRpb24pID0gLyhcUyspXHMrKC4qKS87CgkJCSRkZXNjcmlwdGlvbnN7JGRpcn0g
PSAkZGVzY3JpcHRpb247CgkJfQoJCWNsb3NlKERFU0MpOwoJfQoKCXByaW50ICI8cD48YSBuYW1l
PVwiZGlybGlzdFwiPjwvYT48L3A+XG4iOwoKCSMgZ2l2ZSBkaXJlY3QgYWNjZXNzIHRvIGRpcnMK
CWlmICgkd2hlcmUgZXEgJy8nKSB7CgkJY2hvb3NlTWlycm9yICgpOwoJCWNob29zZUNWU1Jvb3Qg
KCk7Cgl9IGVsc2UgewoJCXByaW50ICI8cD5DdXJyZW50IGRpcmVjdG9yeTogPGI+IiwgJmNsaWNr
YWJsZVBhdGgoJHdoZXJlLCAwKSwKCQkgICAgIjwvYj48L3A+XG4iOwoKCQlwcmludCAiPHA+Q3Vy
cmVudCB0YWc6IDxiPiIsICRpbnB1dHtvbmx5X3dpdGhfdGFnfSwiPC9iPjwvcD5cbiIKCQkgICAg
aWYgJGlucHV0e29ubHlfd2l0aF90YWd9OwoKCX0KCglwcmludCAiPGhyIG5vc2hhZGU+XG4iOwoK
CSMgVXNpbmcgPG1lbnU+IGluIHRoaXMgbWFubmVyIHZpb2xhdGVzIHRoZSBIVE1MMi4wIHNwZWMg
YnV0CgkjIHByb3ZpZGVzIHRoZSByZXN1bHRzIHRoYXQgSSB3YW50IGluIG1vc3QgYnJvd3NlcnMu
ICBBbm90aGVyCgkjIGNhc2Ugb2YgbGF5b3V0IHNwb29naW5nIHVwIEhUTUwuCgoJbXkgJGluZm9j
b2xzID0gMDsKCWlmICgkZGlydGFibGUpIHsKCQlwcmludCAiPHRhYmxlIHN0eWxlPVwiYm9yZGVy
LXdpZHRoOiAwIjsKCQlwcmludCAiOyBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGVCb3JkZXJDb2xv
ciIKCQkgICAgaWYgKGRlZmluZWQgJHRhYmxlQm9yZGVyQ29sb3IpOwoJCXByaW50ICJcIiB3aWR0
aD1cIjEwMCVcIiBjZWxsc3BhY2luZz1cIjFcIiBjZWxscGFkZGluZz1cIiR0YWJsZXBhZGRpbmdc
Ij5cbiI7CgkJJGluZm9jb2xzKys7CgkJcHJpbnRmICI8dHI+XG48dGggc3R5bGU9XCJ0ZXh0LWFs
aWduOiBsZWZ0OyBiYWNrZ3JvdW5kLWNvbG9yOiAlc1wiPiIsCgkJICAgICRieWZpbGUgPyAkY29s
dW1uSGVhZGVyQ29sb3JTb3J0ZWQgOgoJCSAgICAkY29sdW1uSGVhZGVyQ29sb3JEZWZhdWx0OwoK
CQlpZiAoJGJ5ZmlsZSkgewoJCQlwcmludCAnRmlsZSc7CgkJfSBlbHNlIHsKCQkJcHJpbnQgJmxp
bmsoCgkJCQknRmlsZScsCgkJCQlzcHJpbnRmKAoJCQkJCScuLyVzI2Rpcmxpc3QnLAoJCQkJCSZ0
b2dnbGVRdWVyeSgic29ydGJ5IiwgImZpbGUiKQoJCQkJKQoJCQkpOwoJCX0KCQlwcmludCAiPC90
aD5cbiI7CgoJCSMgZG8gbm90IGRpc3BsYXkgdGhlIG90aGVyIGNvbHVtbi1oZWFkZXJzLCBpZiB3
ZSBkbyBub3QgaGF2ZSBhbnkgZmlsZXMKCQkjIHdpdGggcmV2aXNpb24gaW5mb3JtYXRpb246CgkJ
aWYgKHNjYWxhciglZmlsZWluZm8pKSB7CgkJCSRpbmZvY29scysrOwoJCQlwcmludGYgJzx0aCBz
dHlsZT0idGV4dC1hbGlnbjogbGVmdDsgYmFja2dyb3VuZC1jb2xvcjogJXMiPicsCgkJCSAgICAk
YnlyZXYgPyAkY29sdW1uSGVhZGVyQ29sb3JTb3J0ZWQgOgoJCQkgICAgJGNvbHVtbkhlYWRlckNv
bG9yRGVmYXVsdDsKCgkJCWlmICgkYnlyZXYpIHsKCQkJCXByaW50ICdSZXYuJzsKCQkJfSBlbHNl
IHsKCQkJCXByaW50ICZsaW5rKAoJCQkJCSdSZXYuJywKCQkJCQlzcHJpbnRmKAoJCQkJCQknLi8l
cyNkaXJsaXN0JywKCQkJCQkJJnRvZ2dsZVF1ZXJ5KCJzb3J0YnkiLCAicmV2IikKCQkJCQkpCgkJ
CQkpOwoJCQl9CgkJCXByaW50ICI8L3RoPlxuIjsKCQkJJGluZm9jb2xzKys7CgkJCXByaW50ZiAn
PHRoIHN0eWxlPSJ0ZXh0LWFsaWduOiBsZWZ0OyBiYWNrZ3JvdW5kLWNvbG9yOiAlcyI+JywKCQkJ
ICAgICRieWRhdGUgPyAkY29sdW1uSGVhZGVyQ29sb3JTb3J0ZWQgOgoJCQkgICAgJGNvbHVtbkhl
YWRlckNvbG9yRGVmYXVsdDsKCgkJCWlmICgkYnlkYXRlKSB7CgkJCQlwcmludCAnQWdlJzsKCQkJ
fSBlbHNlIHsKCQkJCXByaW50ICZsaW5rKAoJCQkJCSdBZ2UnLAoJCQkJCXNwcmludGYoCgkJCQkJ
CScuLyVzI2Rpcmxpc3QnLAoJCQkJCQkmdG9nZ2xlUXVlcnkoInNvcnRieSIsICJkYXRlIikKCQkJ
CQkpCgkJCQkpOwoJCQl9CgkJCXByaW50ICI8L3RoPlxuIjsKCgkJCWlmICgkc2hvd19hdXRob3Ip
IHsKCQkJCSRpbmZvY29scysrOwoJCQkJcHJpbnRmICc8dGggc3R5bGU9InRleHQtYWxpZ246IGxl
ZnQ7IGJhY2tncm91bmQtY29sb3I6ICVzIj4nLAoJCQkJICAgICRieWF1dGhvciA/ICRjb2x1bW5I
ZWFkZXJDb2xvclNvcnRlZCA6CgkJCQkgICAgJGNvbHVtbkhlYWRlckNvbG9yRGVmYXVsdDsKCgkJ
CQlpZiAoJGJ5YXV0aG9yKSB7CgkJCQkJcHJpbnQgJ0F1dGhvcic7CgkJCQl9IGVsc2UgewoJCQkJ
CXByaW50ICZsaW5rKAoJCQkJCQknQXV0aG9yJywKCQkJCQkJc3ByaW50ZigKCQkJCQkJCScuLyVz
I2Rpcmxpc3QnLAoJCQkJCQkJJnRvZ2dsZVF1ZXJ5KAoJCQkJCQkJCSJzb3J0YnkiLAoJCQkJCQkJ
CSJhdXRob3IiCgkJCQkJCQkpCgkJCQkJCSkKCQkJCQkpOwoJCQkJfQoJCQkJcHJpbnQgIjwvdGg+
XG4iOwoJCQl9CgkJCSRpbmZvY29scysrOwoJCQlwcmludGYgJzx0aCBzdHlsZT0idGV4dC1hbGln
bjogbGVmdDsgYmFja2dyb3VuZC1jb2xvcjogJXMiPicsCgkJCSAgICAkYnlsb2cgPyAkY29sdW1u
SGVhZGVyQ29sb3JTb3J0ZWQgOgoJCQkgICAgJGNvbHVtbkhlYWRlckNvbG9yRGVmYXVsdDsKCgkJ
CWlmICgkYnlsb2cpIHsKCQkJCXByaW50ICdMYXN0IGxvZyBlbnRyeSc7CgkJCX0gZWxzZSB7CgkJ
CQlwcmludCAmbGluaygKCQkJCQknTGFzdCBsb2cgZW50cnknLAoJCQkJCXNwcmludGYoCgkJCQkJ
CScuLyVzI2Rpcmxpc3QnLAoJCQkJCQkmdG9nZ2xlUXVlcnkoInNvcnRieSIsICJsb2ciKQoJCQkJ
CSkKCQkJCSk7CgkJCX0KCQkJcHJpbnQgIjwvdGg+XG4iOwoJCX0gZWxzaWYgKCR1c2VfZGVzY3Jp
cHRpb25zKSB7CgkJCXByaW50ZiAnPHRoIHN0eWxlPSJ0ZXh0LWFsaWduOiBsZWZ0OyBiYWNrZ3Jv
dW5kLWNvbG9yOiBzIj4nLAoJCQkgICAgJGNvbHVtbkhlYWRlckNvbG9yRGVmYXVsdDsKCQkJcHJp
bnQgIkRlc2NyaXB0aW9uPC90aD5cbiI7CgkJCSRpbmZvY29scysrOwoJCX0KCQlwcmludCAiPC90
cj5cbiI7Cgl9IGVsc2UgewoJCXByaW50ICI8bWVudT5cbiI7Cgl9CglteSAkZGlycm93ID0gMDsK
CglteSAkaTsKCWxvb2tpbmdmb3JhdHRpYzoKCWZvciAoJGkgPSAwIDsgJGkgPD0gJCNkaXIgOyAk
aSsrKSB7CgkJaWYgKCRkaXJbJGldIGVxICJBdHRpYyIpIHsKCQkJbGFzdCBsb29raW5nZm9yYXR0
aWM7CgkJfQoJfQoKCWlmICghJGlucHV0eydoaWRlYXR0aWMnfSAmJiAoJGkgPD0gJCNkaXIpCgkg
ICAgJiYgb3BlbmRpcigkZGgsICRmdWxsbmFtZSAuICIvQXR0aWMiKSkKCXsKCQlzcGxpY2UoQGRp
ciwgJGksIDEsIGdyZXAoKHN8XnxBdHRpYy98LCAhbXwvXC58KSwgcmVhZGRpcigkZGgpKSk7CgkJ
Y2xvc2VkaXIoJGRoKTsKCX0KCglteSAkaGlkZUF0dGljVG9nZ2xlTGluayA9CgkgICAgJGlucHV0
eydoaWRlYXR0aWMnfSA/ICcnIDoKCSAgICAmbGluaygnW0hpZGVdJywgc3ByaW50ZignLi8lcyNk
aXJsaXN0JywgJnRvZ2dsZVF1ZXJ5KCJoaWRlYXR0aWMiKSkpOwoKCSMgU29ydCB3aXRob3V0IHRo
ZSBBdHRpYy8gcGF0aG5hbWUuCgkjIHBsYWNlIGRpcmVjdG9yaWVzIGZpcnN0CgoJbXkgJGF0dGlj
OwoJbXkgJHVybDsKCW15ICRmaWxldXJsOwoJbXkgJGZpbGVzZXhpc3RzOwoJbXkgJGZpbGVzZm91
bmQ7CgoJZm9yZWFjaCBteSAkZmlsZSAoc29ydCB7ICZmaWxlU29ydENtcCB9IEBkaXIpIHsKCgkJ
bmV4dCBpZiAoJGZpbGUgZXEgJy4nKTsKCgkJIyBpZ25vcmUgQ1ZTIGxvY2sgYW5kIHN0YWxlIE5G
UyBmaWxlcwoJCW5leHQgaWYgKCRmaWxlID1+IC9eI2N2c1wufF4sfF5cLm5mcy8pOwoKCQkjIENo
ZWNrIHdoZXRoZXIgdG8gc2hvdyB0aGUgQ1ZTUk9PVCBwYXRoCgkJbmV4dCBpZiAoJGlucHV0eydo
aWRlY3Zzcm9vdCd9ICYmICRmaWxlIGVxICdDVlNST09UJyk7CgoJCSMgQ2hlY2sgd2hldGhlciB0
aGUgbW9kdWxlIGlzIGluIHRoZSByZXN0cmljdGVkIGxpc3QKCQluZXh0IGlmICgkZmlsZSAmJiAm
Zm9yYmlkZGVuX21vZHVsZSgkZmlsZSkpOwoKCQkjIElnbm9yZSBub24tcmVhZGFibGUgZmlsZXMK
CQluZXh0IGlmICgkaW5wdXR7J2hpZGVub25yZWFkYWJsZSd9ICYmICEoLXIgIiRmdWxsbmFtZS8k
ZmlsZSIpKTsKCgkJaWYgKCRmaWxlID1+IHN8XkF0dGljL3x8KSB7CgkJCSRhdHRpYyA9ICIgKGlu
IHRoZSBBdHRpYykmbmJzcDsiIC4gJGhpZGVBdHRpY1RvZ2dsZUxpbms7CgkJfSBlbHNlIHsKCQkJ
JGF0dGljID0gIiI7CgkJfQoKCQlpZiAoJGZpbGUgZXEgJy4uJyB8fCAtZCAiJGZ1bGxuYW1lLyRm
aWxlIikgewoJCQluZXh0IGlmICgkZmlsZSBlcSAnLi4nICYmICR3aGVyZSBlcSAnLycpOwoJCQlt
eSAoJHJldiwgJGRhdGUsICRsb2csICRhdXRob3IsICRmaWxlbmFtZSkgPQoJCQkgICAgQHskZmls
ZWluZm97JGZpbGV9fQoJCQkgICAgaWYgKGRlZmluZWQoJGZpbGVpbmZveyRmaWxlfSkpOwoJCQlw
cmludGYgIjx0ciBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6ICVzXCI+XG48dGQ+IiwKCQkJICAg
ICAkdGFiY29sb3JzWyRkaXJyb3cgJSAyXSBpZiAkZGlydGFibGU7CgoJCQlpZiAoJGZpbGUgZXEg
Jy4uJykgewoJCQkJJHVybCA9ICIuLi8kcXVlcnkiOwoJCQkJaWYgKCRub2ZpbGVsaW5rcykgewoJ
CQkJCXByaW50ICRiYWNraWNvbjsKCQkJCX0gZWxzZSB7CgkJCQkJcHJpbnQgJmxpbmsoJGJhY2tp
Y29uLCAkdXJsKTsKCQkJCX0KCQkJCXByaW50ICcmbmJzcDsnLCAmbGluaygiUGFyZW50IERpcmVj
dG9yeSIsICR1cmwpOwoJCQl9IGVsc2UgewoJCQkJJHVybCA9ICcuLycgLiB1cmxlbmNvZGUoJGZp
bGUpIC4gIi8kcXVlcnkiOwoJCQkJcHJpbnQgIjxhIG5hbWU9XCIkZmlsZVwiPjwvYT4iOwoKCQkJ
CWlmICgkbm9maWxlbGlua3MpIHsKCQkJCQlwcmludCAkZGlyaWNvbjsKCQkJCX0gZWxzZSB7CgkJ
CQkJcHJpbnQgJmxpbmsoJGRpcmljb24sICR1cmwpOwoJCQkJfQoJCQkJcHJpbnQgJyZuYnNwOycs
ICZsaW5rKCIkZmlsZS8iLCAkdXJsKSwgJGF0dGljOwoKCQkJCWlmICgkZmlsZSBlcSAiQXR0aWMi
KSB7CgkJCQkJcHJpbnQgIiZuYnNwOyAiOwoJCQkJCXByaW50ICZsaW5rKAoJCQkJCQkiW0Rvbid0
IGhpZGVdIiwKCQkJCQkJc3ByaW50ZigKCQkJCQkJCScuLyVzI2Rpcmxpc3QnLAoJCQkJCQkJJnRv
Z2dsZVF1ZXJ5KAoJCQkJCQkJCSJoaWRlYXR0aWMiKQoJCQkJCQkpCgkJCQkJKTsKCQkJCX0KCQkJ
fQoKCQkJIyBTaG93IGxhc3QgY2hhbmdlIGluIGRpcgoJCQlpZiAoJGZpbGVuYW1lKSB7CgkJCQlw
cmludCAiPC90ZD5cbjx0ZD4mbmJzcDs8L3RkPlxuPHRkPiZuYnNwOyIKCQkJCSAgICBpZiAoJGRp
cnRhYmxlKTsKCQkJCWlmICgkZGF0ZSkgewoJCQkJCXByaW50ICIgPGk+IiwKCQkJCQkgICAgcmVh
ZGFibGVUaW1lKHRpbWUoKSAtICRkYXRlLCAwKSwKCQkJCQkgICAgIjwvaT4iOwoJCQkJfQoKCQkJ
CWlmICgkc2hvd19hdXRob3IpIHsKCQkJCQlwcmludCAiPC90ZD5cbjx0ZD4mbmJzcDsiIGlmICgk
ZGlydGFibGUpOwoJCQkJCXByaW50ICRhdXRob3I7CgkJCQl9CgkJCQlwcmludCAiPC90ZD5cbjx0
ZD4mbmJzcDsiIGlmICgkZGlydGFibGUpOwoJCQkJJGZpbGVuYW1lID1+IHMlXlteL10rLyUlOwoJ
CQkJcHJpbnQgIiRmaWxlbmFtZS8kcmV2IjsKCQkJCXByaW50ICI8YnI+IiBpZiAoJGRpcnRhYmxl
KTsKCgkJCQlpZiAoJGxvZykgewoJCQkJCXByaW50ICImbmJzcDs8c3BhbiBzdHlsZT1cImZvbnQt
c2l6ZTogc21hbGxlclwiPiIsCgkJCQkJICAmaHRtbGlmeSgKCQkJCQkJc3Vic3RyKCRsb2csIDAs
ICRzaG9ydExvZ0xlbiksICRhbGxvd19kaXJfZXh0cmEpOwoJCQkJCWlmIChsZW5ndGggJGxvZyA+
IDgwKSB7CgkJCQkJCXByaW50ICIuLi4iOwoJCQkJCX0KCQkJCQlwcmludCAiPC9zcGFuPiI7CgkJ
CQl9CgkJCX0gZWxzZSB7CgkJCQlteSAoJGR3aGVyZSkgPQoJCQkJICAgICgkd2hlcmUgbmUgIi8i
ID8gJHdoZXJlIDogIiIpIC4gJGZpbGU7CgoJCQkJaWYgKCR1c2VfZGVzY3JpcHRpb25zCgkJCQkg
ICAgJiYgZGVmaW5lZCAkZGVzY3JpcHRpb25zeyRkd2hlcmV9KQoJCQkJewoJCQkJCXByaW50ICI8
dGQgY29sc3Bhbj1cIiIsKCRpbmZvY29scyAtIDEpLAoJCQkJCSAgICAiXCI+Jm5ic3A7IgoJCQkJ
CSAgICBpZiAkZGlydGFibGU7CgkJCQkJcHJpbnQgJGRlc2NyaXB0aW9uc3skZHdoZXJlfTsKCQkJ
CX0gZWxzaWYgKCRkaXJ0YWJsZSAmJiAkaW5mb2NvbHMgPiAxKSB7CgoJCQkJCSMgY2xvc2UgdGhl
IHJvdyB3aXRoIHRoZSBhcHByb3ByaWF0ZSBudW1iZXIgb2YKCQkJCQkjIGNvbHVtbnMsIHNvIHRo
YXQgdGhlIHZlcnRpY2FsIHNlcGVyYXRvcnMgYXJlIHZpc2libGUKCQkJCQlteSAoJGNvbHMpID0g
JGluZm9jb2xzOwoJCQkJCXdoaWxlICgkY29scyA+IDEpIHsKCQkJCQkJcHJpbnQgIjwvdGQ+XG48
dGQ+Jm5ic3A7IjsKCQkJCQkJJGNvbHMtLTsKCQkJCQl9CgkJCQl9CgkJCX0KCgkJCWlmICgkZGly
dGFibGUpIHsKCQkJCXByaW50ICI8L3RkPlxuPC90cj5cbiI7CgkJCX0gZWxzZSB7CgkJCQlwcmlu
dCAiPGJyPlxuIjsKCQkJfQoJCQkkZGlycm93Kys7CgkJfSBlbHNpZiAoJGZpbGUgPX4gcy8sdiQv
LykgewoKCQkJIyBTa2lwIGZvcmJpZGRlbiBmaWxlcyBub3cgc28gd2UnbGwgZ2l2ZSBubyBoaW50
CgkJCSMgYWJvdXQgdGhlaXIgZXhpc3RlbmNlLiAgVGhpcyBzaG91bGQgcHJvYmFibHkgaGF2ZQoJ
CQkjIGJlZW4gZG9uZSBlYXJsaWVyLCBidXQgaXQncyBzdHJhaWdodGZvcndhcmQgaGVyZS4KCQkJ
bmV4dCBpZiBmb3JiaWRkZW5fZmlsZSgiJGZ1bGxuYW1lLyRmaWxlIik7CgoJCQkkZmlsZXVybCA9
ICgkYXR0aWMgPyAiQXR0aWMvIiA6ICIiKSAuIHVybGVuY29kZSgkZmlsZSk7CgkJCSR1cmwgPSAn
Li8nIC4gJGZpbGV1cmwgLiAkcXVlcnk7CgkJCSRmaWxlc2V4aXN0cysrOwoJCQluZXh0IGlmICgh
ZGVmaW5lZCgkZmlsZWluZm97JGZpbGV9KSk7CgkJCW15ICgkcmV2LCAkZGF0ZSwgJGxvZywgJGF1
dGhvcikgPSBAeyRmaWxlaW5mb3skZmlsZX19OwoJCQkkZmlsZXNmb3VuZCsrOwoJCQlwcmludGYg
Ijx0ciBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6ICVzXCI+XG48dGQ+IiwKCQkJICAgICR0YWJj
b2xvcnNbJGRpcnJvdyAlIDJdIGlmICRkaXJ0YWJsZTsKCQkJcHJpbnQgIjxhIG5hbWU9XCIkZmls
ZVwiPjwvYT4iOwoKCQkJaWYgKCRub2ZpbGVsaW5rcykgewoJCQkJcHJpbnQgJGZpbGVpY29uOwoJ
CQl9IGVsc2UgewoJCQkJcHJpbnQgJmxpbmsoJGZpbGVpY29uLCAkdXJsKTsKCQkJfQoJCQlwcmlu
dCAnJm5ic3A7JywgJmxpbmsoaHRtbHF1b3RlKCRmaWxlKSwgJHVybCksICRhdHRpYzsKCQkJcHJp
bnQgIjwvdGQ+XG48dGQ+Jm5ic3A7IiBpZiAoJGRpcnRhYmxlKTsKCQkJZG93bmxvYWRfbGluaygk
ZmlsZXVybCwgJHJldiwgJHJldiwKCQkJCSRkZWZhdWx0Vmlld2FibGUgPyAidGV4dC94LWN2c3dl
Yi1tYXJrdXAiIDoKCQkJCXVuZGVmKTsKCQkJcHJpbnQgIjwvdGQ+XG48dGQ+Jm5ic3A7IiBpZiAo
JGRpcnRhYmxlKTsKCgkJCWlmICgkZGF0ZSkgewoJCQkJcHJpbnQgIiA8aT4iLCByZWFkYWJsZVRp
bWUodGltZSgpIC0gJGRhdGUsIDApLAoJCQkJICAgICI8L2k+IjsKCQkJfQoJCQlpZiAoJHNob3df
YXV0aG9yKSB7CgkJCQlwcmludCAiPC90ZD5cbjx0ZD4mbmJzcDsiIGlmICgkZGlydGFibGUpOwoJ
CQkJcHJpbnQgJGF1dGhvcjsKCQkJfQoJCQlwcmludCAiPC90ZD5cbjx0ZD4mbmJzcDsiIGlmICgk
ZGlydGFibGUpOwoKCQkJaWYgKCRsb2cpIHsKCQkJCXByaW50ICIgPHNwYW4gc3R5bGU9XCJmb250
LXNpemU6IHNtYWxsZXJcIj4iLAoJCQkJICAgICZodG1saWZ5KHN1YnN0cigkbG9nLCAwLCAkc2hv
cnRMb2dMZW4pLCAkYWxsb3dfZGlyX2V4dHJhKTsKCQkJCWlmIChsZW5ndGggJGxvZyA+IDgwKSB7
CgkJCQkJcHJpbnQgIi4uLiI7CgkJCQl9CgkJCQlwcmludCAiPC9zcGFuPiI7CgkJCX0KCQkJcHJp
bnQgIjwvdGQ+XG4iIGlmICgkZGlydGFibGUpOwoJCQlwcmludCgoJGRpcnRhYmxlKSA/ICI8L3Ry
PiIgOiAiPGJyPiIpOwoJCQkkZGlycm93Kys7CgkJfQoJCXByaW50ICJcbiI7Cgl9CgoJcHJpbnQo
JGRpcnRhYmxlID8gIjwvdGFibGU+XG4iIDogIjwvbWVudT5cbiIpOwoKCWlmICgkZmlsZXNleGlz
dHMgJiYgISRmaWxlc2ZvdW5kKSB7CgkJcHJpbnQKCQkgICAgIjxwPjxiPk5PVEU6PC9iPiBUaGVy
ZSBhcmUgJGZpbGVzZXhpc3RzIGZpbGVzLCBidXQgbm9uZSBtYXRjaGVzIHRoZSBjdXJyZW50IHRh
ZyAoJGlucHV0e29ubHlfd2l0aF90YWd9KS48L3A+XG4iOwoJfQoJaWYgKCRpbnB1dHtvbmx5X3dp
dGhfdGFnfSAmJiAoISV0YWdzIHx8ICEkdGFnc3skaW5wdXR7b25seV93aXRoX3RhZ319KSkKCXsK
CQkldGFncyA9ICVhbGx0YWdzCgl9CgoJaWYgKHNjYWxhciAldGFncyB8fCAkaW5wdXR7b25seV93
aXRoX3RhZ30gfHwgJGVkaXRfb3B0aW9uX2Zvcm0KCSAgICB8fCBkZWZpbmVkKCRpbnB1dHsib3B0
aW9ucyJ9KSkKCXsKCQlwcmludCAiPGhyIHNpemU9XCIxXCIgbm9zaGFkZT5cbiI7Cgl9CgoJaWYg
KHNjYWxhciAldGFncyB8fCAkaW5wdXR7b25seV93aXRoX3RhZ30pIHsKCQlwcmludCAiPGZvcm0g
bWV0aG9kPVwiZ2V0XCIgYWN0aW9uPVwiLi9cIj5cbiI7CgkJZm9yZWFjaCBteSAkdmFyIChAc3Rp
Y2t5dmFycykgewoJCQlwcmludAoJCQkgICAgIjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1c
IiR2YXJcIiB2YWx1ZT1cIiRpbnB1dHskdmFyfVwiPlxuIgoJCQkgICAgaWYgKGRlZmluZWQoJGlu
cHV0eyR2YXJ9KQoJCQkgICAgJiYgKCFkZWZpbmVkKCRERUZBVUxUVkFMVUV7JHZhcn0pCgkJCSAg
ICB8fCAkaW5wdXR7JHZhcn0gbmUgJERFRkFVTFRWQUxVRXskdmFyfSkKCQkJICAgICYmICRpbnB1
dHskdmFyfSBuZSAiIiAmJiAkdmFyIG5lICJvbmx5X3dpdGhfdGFnIik7CgkJfQoJCXByaW50ICI8
cD48bGFiZWwgZm9yPVwib25seV93aXRoX3RhZ1wiIGFjY2Vzc2tleT1cIlRcIj4iOwoJCXByaW50
ICJTaG93IG9ubHkgZmlsZXMgd2l0aCB0YWc6PC9sYWJlbD5cbiI7CgkJcHJpbnQgIjxzZWxlY3Qg
aWQ9XCJvbmx5X3dpdGhfdGFnXCIgbmFtZT1cIm9ubHlfd2l0aF90YWdcIiI7CgkJcHJpbnQgIiBv
bmNoYW5nZT1cInRoaXMuZm9ybS5zdWJtaXQoKVwiIiBpZiAkdXNlX2phdmFfc2NyaXB0OwoJCXBy
aW50ICI+IjsKCQlwcmludCAiPG9wdGlvbiB2YWx1ZT1cIlwiPkFsbCB0YWdzIC8gZGVmYXVsdCBi
cmFuY2g8L29wdGlvbj5cbiI7CgoJCWZvcmVhY2ggbXkgJHRhZyAocmV2ZXJzZSBzb3J0IHsgbGMg
JGEgY21wIGxjICRiIH0ga2V5cyAldGFncykgewoJCQlwcmludCAiPG9wdGlvbiIsCgkJCSAgICBk
ZWZpbmVkKCRpbnB1dHtvbmx5X3dpdGhfdGFnfSkKCQkJICAgICYmICRpbnB1dHtvbmx5X3dpdGhf
dGFnfSBlcSAkdGFnID8gIiBzZWxlY3RlZCIgOiAiIiwKCQkJICAgICI+JHRhZzwvb3B0aW9uPlxu
IjsKCQl9CgkJcHJpbnQgIjwvc2VsZWN0PlxuIjsKCQlwcmludCAiIDxsYWJlbCBmb3I9XCJwYXRo
XCIgYWNjZXNza2V5PVwiUFwiPiI7CgkJcHJpbnQgIk1vZHVsZSBwYXRoIG9yIGFsaWFzOjwvbGFi
ZWw+XG4iOwoJCXByaW50ZiAiPGlucHV0IHR5cGU9XCJ0ZXh0XCIgaWQ9XCJwYXRoXCIgbmFtZT1c
InBhdGhcIiB2YWx1ZT1cIiVzXCIgc2l6ZT1cIjE1XCI+XG4iLAoJCSAgICBodG1scXVvdGUoJHdo
ZXJlKTsKCQlwcmludCAiPGlucHV0IHR5cGU9XCJzdWJtaXRcIiB2YWx1ZT1cIkdvXCIgYWNjZXNz
a2V5PVwiR1wiPjwvcD5cbiI7CgkJcHJpbnQgIjwvZm9ybT5cbiI7Cgl9CgoJaWYgKCRhbGxvd190
YXIpIHsKCQlteSAoJGJhc2VmaWxlKSA9ICgkd2hlcmUgPX4gbSwoPzouKi8pPyhbXi9dKyksKTsK
CgkJaWYgKGRlZmluZWQoJGJhc2VmaWxlKSAmJiAkYmFzZWZpbGUgbmUgJycpIHsKCQkJcHJpbnQg
IjxociBub3NoYWRlPlxuIiwKCQkJICAgICI8ZGl2IGFsaWduPVwiY2VudGVyXCI+RG93bmxvYWQg
dGhpcyBkaXJlY3RvcnkgaW4gIjsKCgkJCSMgTWFuZ2xlIHRoZSBmaWxlbmFtZSBzbyBicm93c2Vy
cyBzaG93IGEgcmVhc29uYWJsZQoJCQkjIGZpbGVuYW1lIHRvIGRvd25sb2FkLgoJCQlwcmludCAm
bGluaygidGFyYmFsbCIsICIuLyRiYXNlZmlsZS50YXIuZ3okcXVlcnkiCgkJCQkuICgkcXVlcnkg
PyAiJiIgOiAiPyIpIC4gInRhcmJhbGw9MSIpOwoJCQlpZiAoJENNRHt6aXB9KSB7CgkJCQlwcmlu
dCAiIG9yICIsCgkJCQkgICAgJmxpbmsoInppcCBhcmNoaXZlIiwgIi4vJGJhc2VmaWxlLnppcCRx
dWVyeSIKCQkJCQkuICgkcXVlcnkgPyAiJiIgOiAiPyIpIC4gInRhcmJhbGw9MSIpOwoJCQl9CgkJ
CXByaW50ICI8L2Rpdj5cbiI7CgkJfQoJfQoKCWlmICgkZWRpdF9vcHRpb25fZm9ybSB8fCBkZWZp
bmVkKCRpbnB1dHsib3B0aW9ucyJ9KSkgewoKCQlteSAkZm9ybXdoZXJlID0gJHNjcmlwdHdoZXJl
OwoJCSRmb3Jtd2hlcmUgPX4gc3xBdHRpYy8/JHx8IGlmICgkaW5wdXR7J2hpZGVhdHRpYyd9KTsK
CgkJcHJpbnQgIjxmb3JtIG1ldGhvZD1cImdldFwiIGFjdGlvbj1cIiR7Zm9ybXdoZXJlfVwiPlxu
IjsKCQlwcmludCAiPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwiY29wdFwiIHZhbHVlPVwi
MVwiPlxuIjsKCQlpZiAoJGN2c3RyZWUgbmUgJGN2c3RyZWVkZWZhdWx0KSB7CgkJCXByaW50CgkJ
CSAgICAiPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwiY3Zzcm9vdFwiIHZhbHVlPVwiJGN2
c3RyZWVcIj5cbiI7CgkJfQoJCXByaW50ICI8Y2VudGVyPlxuPHRhYmxlIGNlbGxwYWRkaW5nPVwi
MFwiIGNlbGxzcGFjaW5nPVwiMFwiPiI7CgkJcHJpbnQgIlxuPHRyIHN0eWxlPVwiYmFja2dyb3Vu
ZC1jb2xvcjogJGNvbHVtbkhlYWRlckNvbG9yRGVmYXVsdFwiPlxuIjsKCQlwcmludCAiPHRoIGNv
bHNwYW49XCIyXCI+UHJlZmVyZW5jZXM8L3RoPlxuPC90cj5cbiI7CgkJcHJpbnQgIjx0cj5cbjx0
ZD4iOwoJCXByaW50ICI8bGFiZWwgZm9yPVwic29ydGJ5XCIgYWNjZXNza2V5PVwiRlwiPlNvcnQg
ZmlsZXMgYnkgIjsKCQlwcmludCAiPC9sYWJlbD48c2VsZWN0IGlkPVwic29ydGJ5XCIgbmFtZT1c
InNvcnRieVwiPlxuIjsKCQlwcmludCAiPG9wdGlvbiB2YWx1ZT1cIlwiPkZpbGU8L29wdGlvbj5c
biI7CgkJcHJpbnQgIjxvcHRpb24iLCAkYnlkYXRlID8gIiBzZWxlY3RlZCIgOiAiIiwKCQkgICAg
IiB2YWx1ZT1cImRhdGVcIj5BZ2U8L29wdGlvbj5cbiI7CgkJcHJpbnQgIjxvcHRpb24iLCAkYnlh
dXRob3IgPyAiIHNlbGVjdGVkIiA6ICIiLAoJCSAgICAiIHZhbHVlPVwiYXV0aG9yXCI+QXV0aG9y
PC9vcHRpb24+XG4iCgkJICAgIGlmICgkc2hvd19hdXRob3IpOwoJCXByaW50ICI8b3B0aW9uIiwg
JGJ5cmV2ID8gIiBzZWxlY3RlZCIgOiAiIiwKCQkgICAgIiB2YWx1ZT1cInJldlwiPlJldmlzaW9u
PC9vcHRpb24+XG4iOwoJCXByaW50ICI8b3B0aW9uIiwgJGJ5bG9nID8gIiBzZWxlY3RlZCIgOiAi
IiwKCQkgICAgIiB2YWx1ZT1cImxvZ1wiPkxvZyBtZXNzYWdlPC9vcHRpb24+XG4iOwoJCXByaW50
ICI8L3NlbGVjdD5cbjwvdGQ+XG4iOwoJCXByaW50ICI8dGQ+PGxhYmVsIGZvcj1cImxvZ3NvcnRc
IiBhY2Nlc3NrZXk9XCJMXCI+IjsKCQlwcmludCAiU29ydCBsb2cgYnk6IDwvbGFiZWw+IjsKCQlw
cmludExvZ1NvcnRTZWxlY3QoMCk7CgkJcHJpbnQgIjwvdGQ+XG48L3RyPlxuIjsKCQlwcmludCAi
PHRyPlxuPHRkPjxsYWJlbCBmb3I9XCJmXCIgYWNjZXNza2V5PVwiRFwiPiI7CgkJcHJpbnQgIkRp
ZmYgZm9ybWF0OiA8L2xhYmVsPiI7CgkJcHJpbnREaWZmU2VsZWN0KDApOwoJCXByaW50ICI8L3Rk
PlxuIjsKCQlwcmludCAiPHRkPjxsYWJlbCBmb3I9XCJoaWRlYXR0aWNcIiBhY2Nlc3NrZXk9XCJB
XCI+IjsKCQlwcmludCAiU2hvdyBBdHRpYyBmaWxlczogPC9sYWJlbD4iOwoJCXByaW50ICI8aW5w
dXQgaWQ9XCJoaWRlYXR0aWNcIiBuYW1lPVwiaGlkZWF0dGljXCIgdHlwZT1cImNoZWNrYm94XCIi
LAoJCSAgICAkaW5wdXR7J2hpZGVhdHRpYyd9ID8gIiBjaGVja2VkIiA6ICIiLAoJCSAgICAgIj48
L3RkPlxuPC90cj5cbiI7CgkJcHJpbnQgIjx0cj5cbjx0ZCBhbGlnbj1cImNlbnRlclwiIGNvbHNw
YW49XCIyXCI+IjsKCQlwcmludCAiPGlucHV0IHR5cGU9XCJzdWJtaXRcIiB2YWx1ZT1cIkNoYW5n
ZSBPcHRpb25zXCIgYWNjZXNza2V5PVwiQ1wiPiI7CgkJcHJpbnQgIjwvdGQ+XG48L3RyPlxuPC90
YWJsZT5cbjwvY2VudGVyPlxuPC9mb3JtPlxuIjsKCX0KCWh0bWxfZm9vdGVyKCk7Cn0KCiMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBWaWV3IEZpbGVzCiMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMKZWxzaWYgKC1mICRmdWxsbmFtZSAuICcsdicpIHsKCglpZiAoZm9yYmlk
ZGVuX2ZpbGUoJGZ1bGxuYW1lKSkgewoJCWZhdGFsKCc0MDMgRm9yYmlkZGVuJywKCQkgICAgICAn
QWNjZXNzIGZvcmJpZGRlbi4gIFRoaXMgZmlsZSBpcyBtZW50aW9uZWQgaW4gQEZvcmJpZGRlbkZp
bGVzJyk7CgkJcmV0dXJuOwoJfQoKCSN4aGNoZW4KCWlmIChkZWZpbmVkKCRpbnB1dHsnZ3JhcGgn
fSkpIHsKCQkmZG9HcmFwaCgkZnVsbG5hbWUpOwoJCWV4aXQ7Cgl9CgoJaWYgKGRlZmluZWQoJGlu
cHV0eydyZXYnfSkgfHwgJGRvQ2hlY2tvdXQpIHsKCQkmZG9DaGVja291dCgkZnVsbG5hbWUsICRp
bnB1dHsncmV2J30pOwoJCWd6aXBjbG9zZSgpOwoJCWV4aXQ7Cgl9CgoJaWYgKGRlZmluZWQoJGlu
cHV0eydhbm5vdGF0ZSd9KSAmJiAkYWxsb3dfYW5ub3RhdGUpIHsKCQkmZG9Bbm5vdGF0ZSgkaW5w
dXR7J2Fubm90YXRlJ30pOwoJCWd6aXBjbG9zZSgpOwoJCWV4aXQ7Cgl9CgoJaWYgKGRlZmluZWQo
JGlucHV0eydyMSd9KSAmJiBkZWZpbmVkKCRpbnB1dHsncjInfSkpIHsKCQkmZG9EaWZmKAoJCQkk
ZnVsbG5hbWUsICAgICAkaW5wdXR7J3IxJ30sCgkJCSRpbnB1dHsndHIxJ30sICRpbnB1dHsncjIn
fSwKCQkJJGlucHV0eyd0cjInfSwgJGlucHV0eydmJ30KCQkpOwoJCWd6aXBjbG9zZSgpOwoJCWV4
aXQ7Cgl9CglwcmludCgiZ29pbmcgdG8gZG9sb2coJGZ1bGxuYW1lKVxuIikgaWYgKCR2ZXJib3Nl
KTsKCSZkb0xvZygkZnVsbG5hbWUpOwoKCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoJ
IyBWaWV3IERpZmYKCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwp9IGVsc2lmICgkZnVs
bG5hbWUgPX4gcy9cLmRpZmYkLy8gJiYgLWYgJGZ1bGxuYW1lIC4gIix2IiAmJiAkaW5wdXR7J3Ix
J30KICAgICYmICRpbnB1dHsncjInfSkKewoKCSMgJHdoZXJlLWRpZmYtcmVtb3ZhbCBpZiAnY3Zz
IHJkaWZmJyBpcyB1c2VkCgkjIC4uIGJ1dCAnY3ZzIHJkaWZmJ2RvZXNuJ3Qgc3VwcG9ydCBzb21l
IG9wdGlvbnMKCSMgcmNzZGlmZiBkb2VzICgtdyBhbmQgLXApLCBzbyBpdCBpcyBkaXNhYmxlZAoJ
IyAkd2hlcmUgPX4gcy9cLmRpZmYkLy87CgoJIyBBbGxvdyBkaWZmcyB1c2luZyB0aGUgIi5kaWZm
IiBleHRlbnNpb24KCSMgc28gdGhhdCBicm93c2VycyB0aGF0IGRlZmF1bHQgdG8gdGhlIFVSTAoJ
IyBmb3IgYSBzYXZlIGZpbGVuYW1lIGRvbid0IHNhdmUgZGlmZidzIGFzCgkjIGUuZy4gZm9vLmMK
CSZkb0RpZmYoCgkJJGZ1bGxuYW1lLCAgICAgJGlucHV0eydyMSd9LCAkaW5wdXR7J3RyMSd9LCAk
aW5wdXR7J3IyJ30sCgkJJGlucHV0eyd0cjInfSwgJGlucHV0eydmJ30KCSk7CglnemlwY2xvc2Uo
KTsKCWV4aXQ7Cn0gZWxzaWYgKCgkbmV3bmFtZSA9ICRmdWxsbmFtZSkgPX4gc3wvKFteL10rKSR8
L0F0dGljLyQxfCAmJiAtZiAkbmV3bmFtZSAuICIsdiIpCnsKCgkjIFRoZSBmaWxlIGhhcyBiZWVu
IHJlbW92ZWQgYW5kIGlzIGluIHRoZSBBdHRpYy4KCSMgU2VuZCBhIHJlZGlyZWN0IHBvaW50aW5n
IHRvIHRoZSBmaWxlIGluIHRoZSBBdHRpYy4KCShteSAkbmV3cGxhY2UgPSAkc2NyaXB0d2hlcmUp
ID1+IHN8LyhbXi9dKykkfC9BdHRpYy8kMXw7CglpZiAoJEVOVntRVUVSWV9TVFJJTkd9IG5lICIi
KSB7CgkJcmVkaXJlY3QoIiR7bmV3cGxhY2V9PyRFTlZ7UVVFUllfU1RSSU5HfSIpOwoJfSBlbHNl
IHsKCQlyZWRpcmVjdCgkbmV3cGxhY2UpOwoJfQoJZXhpdDsKfSBlbHNpZiAoMCAmJiAobXkgQGZp
bGVzID0gJnNhZmVnbG9iKCRmdWxsbmFtZSAuICIsdiIpKSkgewoJaHR0cF9oZWFkZXIoInRleHQv
cGxhaW4iKTsKCXByaW50ICJZb3UgbWF0Y2hlZCB0aGUgZm9sbG93aW5nIGZpbGVzOlxuIjsKCXBy
aW50IGpvaW4gKCJcbiIsIEBmaWxlcyk7CgoJIyBGaW5kIHRoZSB0YWdzIGZyb20gZWFjaCBmaWxl
CgkjIERpc3BsYXkgYSBmb3JtIG9mZmVyaW5nIGRpZmZzIGJldHdlZW4gc2FpZCB0YWdzCn0gZWxz
ZSB7CglteSAkZmggPSBkbyB7IGxvY2FsICgqRkgpOyB9OwoJbXkgKCR4dHJhLCAkbW9kdWxlKTsK
CgkjIEFzc3VtZSBpdCdzIGEgbW9kdWxlIG5hbWUgd2l0aCBhIHBvdGVudGlhbCBwYXRoIGZvbGxv
d2luZyBpdC4KCSR4dHJhID0gKCgkbW9kdWxlID0gJHdoZXJlKSA9fiBzfC8uKnx8KSA/ICQmIDog
Jyc7CgoJIyBJcyB0aGVyZSBhbiBpbmRleGVkIHZlcnNpb24gb2YgbW9kdWxlcz8KCWlmIChvcGVu
KCRmaCwgIjwgJGN2c3Jvb3QvQ1ZTUk9PVC9tb2R1bGVzIikpIHsKCQl3aGlsZSAoPCRmaD4pIHsK
CQkJaWYgKC9eKFxTKylccysoXFMrKS9vICYmICRtb2R1bGUgZXEgJDEKCQkJICAgICYmIC1kICIk
Y3Zzcm9vdC8kMiIgJiYgJG1vZHVsZSBuZSAkMikKCQkJewoJCQkJcmVkaXJlY3QoIiRzY3JpcHRu
YW1lLyQyJHh0cmEkcXVlcnkiKTsKCQkJfQoJCX0KCX0KCWZhdGFsKCI0MDQgTm90IEZvdW5kIiwK
CSAgICAgICclczogbm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeScsCgkgICAgICAkd2hlcmUpOwp9
CgpnemlwY2xvc2UoKTsKCiMjIEVuZCBNQUlOCgpzdWIgcHJpbnREaWZmU2VsZWN0KCQpIHsKCW15
ICgkdXNlX2phdmFfc2NyaXB0KSA9IEBfOwoJbXkgJGYgPSAkaW5wdXR7J2YnfTsKCglwcmludCAn
PHNlbGVjdCBpZD0iZiIgbmFtZT0iZiInOwoJcHJpbnQgJyBvbmNoYW5nZT0idGhpcy5mb3JtLnN1
Ym1pdCgpIicgaWYgJHVzZV9qYXZhX3NjcmlwdDsKCXByaW50ICI+XG4iOwoKCWxvY2FsICRfOwoJ
Zm9yIChARElGRlRZUEVTKSB7CgkJcHJpbnRmKCI8b3B0aW9uIHZhbHVlPVwiJXNcIiVzPiVzPC9v
cHRpb24+XG4iLCAkXywKCQkgICAgJGYgZXEgJF8gPyAnIHNlbGVjdGVkJyA6ICcnLCAiXHUkRElG
RlRZUEVTeyRffXsnZGVzY3InfSIpOwoJfQoKCXByaW50ICI8L3NlbGVjdD4iOwp9CgpzdWIgcHJp
bnRMb2dTb3J0U2VsZWN0KCQpIHsKCW15ICgkdXNlX2phdmFfc2NyaXB0KSA9IEBfOwoKCXByaW50
ICc8c2VsZWN0IGlkPSJsb2dzb3J0IiBuYW1lPSJsb2dzb3J0Iic7CglwcmludCAnIG9uY2hhbmdl
PSJ0aGlzLmZvcm0uc3VibWl0KCkiJyBpZiAkdXNlX2phdmFfc2NyaXB0OwoJcHJpbnQgIj5cbiI7
CgoJbG9jYWwgJF87Cglmb3IgKEBMT0dTT1JUS0VZUykgewoJCXByaW50ZigiPG9wdGlvbiB2YWx1
ZT1cIiVzXCIlcz4lczwvb3B0aW9uPlxuIiwgJF8sCgkJICAgICRsb2dzb3J0IGVxICRfID8gJyBz
ZWxlY3RlZCcgOiAnJywKCQkgICAgIlx1JExPR1NPUlRLRVlTeyRffXsnZGVzY3InfSIpOwoJfQoK
CXByaW50ICI8L3NlbGVjdD4iOwp9CgpzdWIgZmluZExhc3RNb2RpZmllZFN1YmRpcnMoQCkgewoJ
bXkgKEBkaXJzKSA9IEBfOwoJbXkgKCRkaXJuYW1lLCBAZmlsZXMpOwoKCWZvcmVhY2ggJGRpcm5h
bWUgKEBkaXJzKSB7CgkJbmV4dCBpZiAoJGRpcm5hbWUgZXEgIi4iKTsKCQluZXh0IGlmICgkZGly
bmFtZSBlcSAiLi4iKTsKCQlteSAoJGRpcikgPSAiJGZ1bGxuYW1lLyRkaXJuYW1lIjsKCQluZXh0
IGlmICghLWQgJGRpcik7CgoJCW15ICgkbGFzdG1vZCkgICAgID0gdW5kZWY7CgkJbXkgKCRsYXN0
bW9kdGltZSkgPSB1bmRlZjsKCQlteSAkZGggPSBkbyB7IGxvY2FsICgqREgpOyB9OwoKCQlvcGVu
ZGlyKCRkaCwgJGRpcikgb3IgbmV4dDsKCQlteSAoQGZpbGVuYW1lcykgPSByZWFkZGlyKCRkaCk7
CgkJY2xvc2VkaXIoJGRoKTsKCgkJZm9yZWFjaCBteSAkZmlsZW5hbWUgKEBmaWxlbmFtZXMpIHsK
CQkJJGZpbGVuYW1lID0gIiRkaXJuYW1lLyRmaWxlbmFtZSI7CgkJCW15ICgkZmlsZSkgPSAiJGZ1
bGxuYW1lLyRmaWxlbmFtZSI7CgkJCW5leHQgaWYgKCRmaWxlbmFtZSAhfiAvLHYkLyB8fCAhLWYg
JGZpbGUpOwoKCQkJIyBTa2lwIGZvcmJpZGRlbiBmaWxlcy4KCQkJKG15ICRmID0gJGZpbGUpID1+
IHMvLHYkLy87CgkJCW5leHQgaWYgZm9yYmlkZGVuX2ZpbGUoJGYpOwoKCQkJJGZpbGVuYW1lID1+
IHMvLHYkLy87CgkJCW15ICRtb2R0aW1lID0gLU0gJGZpbGU7CgoJCQlpZiAoIWRlZmluZWQoJGxh
c3Rtb2QpIHx8ICRtb2R0aW1lIDwgJGxhc3Rtb2R0aW1lKSB7CgkJCQkkbGFzdG1vZCAgICAgPSAk
ZmlsZW5hbWU7CgkJCQkkbGFzdG1vZHRpbWUgPSAkbW9kdGltZTsKCQkJfQoJCX0KCQlwdXNoIChA
ZmlsZXMsICRsYXN0bW9kKSBpZiAoZGVmaW5lZCgkbGFzdG1vZCkpOwoJfQoJcmV0dXJuIEBmaWxl
czsKfQoKc3ViIGh0bWxpZnlfc3ViKCYkKSB7CgkobXkgJHByb2MsIGxvY2FsICRfKSA9IEBfOwoJ
bXkgQGEgPSBzcGxpdCAobWAoPGEgW14+XSs+W148XSo8L2E+KWBpKTsKCW15ICRsaW5rZWQ7Cglt
eSAkcmVzdWx0ID0gJyc7CgoJd2hpbGUgKCgkXywgJGxpbmtlZCkgPSBzcGxpY2UoQGEsIDAsIDIp
KSB7CgkJJiRwcm9jKCk7CgkJJHJlc3VsdCAuPSAkXyAgICAgIGlmIGRlZmluZWQoJF8pOwoJCSRy
ZXN1bHQgLj0gJGxpbmtlZCBpZiBkZWZpbmVkKCRsaW5rZWQpOwoJfQoKCSRyZXN1bHQ7Cn0KCnN1
YiBodG1saWZ5KCQ7JCkgewoJKGxvY2FsICRfLCBteSAkZXh0cmEpID0gQF87CgoJJF8gPSBodG1s
cXVvdGUoJF8pOwoKCSMgZ2V0IFVSTCdzIGFzIGxpbmsKCXN7CiAgICAgIChodHRwfGZ0cHxodHRw
cyk6Ly9cUysKICAgICB9ewoJICZsaW5rKCQmLCBodG1sdW5xdW90ZSgkJikpCiAgICAgfWVneDsK
CgkjIGdldCBlLW1haWxzIGFzIGxpbmsKCSRfID0gaHRtbGlmeV9zdWIgewoJCXM8CgkgIFtcdys9
XC0uIV0rQFtcd1wtXSsoXC5bXHdcLV0rKSsKCSAgICA+PAoJICAgICAgJmxpbmsoJCYsICJtYWls
dG86JCYiKQoJCT5lZ2l4OwoJICAgIH0KCSAgICAkXzsKCglpZiAoJGV4dHJhKSB7CgoJCSMgZ2V0
IFBSICMncyBhcyBsaW5rOiAiUFIjbm5ubiIgIlBSOiBubm5uLCAuLi4iICJQUiBubm5uLCAuLi4i
ICJiaW4vbm5ubiIKCQlpZiAoZGVmaW5lZCgkcHJjZ2kpICYmIGRlZmluZWQoJHJlX3Bya2V5d29y
ZCkpCgkJewoJCQlteSAkcHJldjsKCgkJCWRvIHsKCQkJCSRwcmV2ID0gJF87CgoJCQkJJF8gPSBo
dG1saWZ5X3N1YiB7CgkJCQkJc3sKCQkgICAgICAoXGIkcmVfcHJrZXl3b3JkWzpcI10/XHMqCgkJ
ICAgICAgICg/OgoJCQlcIz8KCQkJXGQrWyxcc11ccyoKCQkgICAgICAgKSoKCQkgICAgICAgXCM/
KQoJCSAgICAgIChcZCspXGIKCQkgICAgIH17CgkJCSAkMSAuICZsaW5rKCQyLCBzcHJpbnRmKCRw
cmNnaSwgJDIpKQoJCSAgICAgfWVnaXg7CgkJCQkgICAgfQoJCQkJICAgICRfOwoJCQl9IHdoaWxl
ICgkXyBuZSAkcHJldik7CgoJCQlpZiAoZGVmaW5lZCgkcmVfcHJjYXRlZ29yaWVzKSkgewoJCQkJ
JF8gPSBodG1saWZ5X3N1YiB7CgkJCQkJc3sKCQkJICAoXGIkcmVfcHJjYXRlZ29yaWVzLyhcZCsp
XGIpCgkJCX17CgkJCQkmbGluaygkMSwgc3ByaW50ZigkcHJjZ2ksICQyKSkKCQkJfWVnb3g7CgkJ
CQkgICAgfQoJCQkJICAgICRfOwoJCQl9CgkJfQoKCQkjIGdldCBtYW5wYWdlIHNwZWNzIGFzIGxp
bms6ICJmb28uMSIgImZvbygxKSIKCQlpZiAoZGVmaW5lZCgkbWFuY2dpKSkgewoJCQkkXyA9IGh0
bWxpZnlfc3ViIHsKCQkJCXN7CgkJICAoXGIoW2EtekEtWl1bXHcuXSspCgkJICAgKD86CgkJICAg
IFwoIChbMC05bl0pIFwpXEIKCQkgICAgfAoJCSAgICBcLihbMC05bl0pXGIKCQkgICApCgkJICAp
CgkJIH17CgkJICAgICAmbGluaygkMSwgc3ByaW50ZigkbWFuY2dpLCBkZWZpbmVkKCQzKSA/ICQz
IDogJDQsICQyKSkKCQkgfWVneDsKCQkJICAgIH0KCQkJICAgICRfOwoJCX0KCX0KCgkkXzsKfQoK
I3hoY2hlbgpzdWIgaHRtbGpzKCQpCnsKCWxvY2FsICgkXykgPSBAXzsKCglzL1xcL1xcXFwvZzsK
CXMvXCcvXFxcJy9nOwoJcy9cbi9cXG4vZzsKCXMvXC8vXFxcLy9nOwoJJF87Cn0KCnN1YiBzcGFj
ZWRIdG1sVGV4dCgkOyQpIHsKCWxvY2FsICRfID0gJF9bMF07CglteSAkdHMgPSAkX1sxXSB8fCAk
dGFic3RvcDsKCgkjIEN1dCB0cmFpbGluZyBzcGFjZXMgYW5kIHRhYnMKCXMvWyBcdF0rJC8vOwoK
CWlmIChkZWZpbmVkKCR0cykpIHsKCgkJIyBFeHBhbmQgdGFicwoJCTEgd2hpbGUgcy9cdCsvJyAn
IHggKGxlbmd0aCgkJikgKiAkdHMgLSBsZW5ndGgoJGApICUgJHRzKS9lCgl9CgoJIyByZXBsYWNl
IDx0YWI+IGFuZCA8c3BhY2U+IChcMDAxIGlzIHRvIHByb3RlY3QgdXMgZnJvbSBodG1saWZ5KQoJ
IyBnemlwIGNhbiBtYWtlIGV4Y2VsbGVudCB1c2Ugb2YgdGhpcyByZXBlYXRpbmcgcGF0dGVybiA6
LSkKCWlmICgkaHJfYnJlYWthYmxlKSB7CgoJCSMgbWFrZSBldmVyeSBvdGhlciBzcGFjZSAnYnJl
YWthYmxlJwoJCXMvICAvIFwwMDFuYnNwOy9nOyAgICAjIDIgKiA8c3BhY2U+CgkJICAgICAgICAg
ICAgICAgICAgICAgICMgbGVhdmUgc2luZ2xlIHNwYWNlIGFzIGl0IGlzCgl9IGVsc2UgewoJCXMv
IC9cMDAxbmJzcDsvZzsKCX0KCgkkXyA9IGh0bWxpZnkoJF8sICRhbGxvd19zb3VyY2VfZXh0cmEp
OwoKCSMgdW5lc2NhcGUKCXkvXDAwMS8mLzsKCglyZXR1cm4gJF87Cn0KCiMgTm90ZSB0aGF0IHRo
aXMgZG9lc24ndCBodG1scXVvdGUgdGhlIGZpcnN0IGFyZ3VtZW50Li4uCnN1YiBsaW5rKCQkKSB7
CglteSAoJG5hbWUsICR1cmwpID0gQF87CgoJJHVybCA9fiBzLzovc3ByaW50ZigiJSUlMDJ4Iiwg
b3JkKCQmKSkvZWcKCSAgICBpZiAkdXJsID1+IC9eW15hLXpdLzsgICAgIyByZWxhdGl2ZQoKCXNw
cmludGYgJzxhIGhyZWY9IiVzIj4lczwvYT4nLCBocmVmcXVvdGUoJHVybCksICRuYW1lOwp9Cgpz
dWIgcmV2Y21wKCQkKSB7CglteSAoJHJldjEsICRyZXYyKSA9IEBfOwoKCSMgbWFrZSBubyBjb21w
YXJpc29uIGZvciBhIHRhZyBvciBhIGJyYW5jaAoJcmV0dXJuIDAgaWYgJHJldjEgPX4gL1teXGQu
XS8gfHwgJHJldjIgPX4gL1teXGQuXS87CgoJbXkgKEByMSkgPSBzcGxpdCAoL1wuLywgJHJldjEp
OwoJbXkgKEByMikgPSBzcGxpdCAoL1wuLywgJHJldjIpOwoJbXkgKCRhLCAkYik7CgoJd2hpbGUg
KCgkYSA9IHNoaWZ0IChAcjEpKSAmJiAoJGIgPSBzaGlmdCAoQHIyKSkpIHsKCQlpZiAoJGEgIT0g
JGIpIHsKCQkJcmV0dXJuICRhIDw9PiAkYjsKCQl9Cgl9CglpZiAoQHIxKSB7IHJldHVybiAxOyB9
CglpZiAoQHIyKSB7IHJldHVybiAtMTsgfQoJcmV0dXJuIDA7Cn0KCnN1YiBmYXRhbCgkJEApIHsK
CW15ICgkZXJyY29kZSwgJGZvcm1hdCwgQGFyZ3MpID0gQF87CglpZiAoJGlzX21vZF9wZXJsKSB7
CgkJQXBhY2hlLT5yZXF1ZXN0LT5zdGF0dXMoKHNwbGl0ICgvIC8sICRlcnJjb2RlKSlbMF0pOwoJ
fSBlbHNlIHsKCQlwcmludCAiU3RhdHVzOiAkZXJyY29kZVxyXG4iOwoJfQoJaHRtbF9oZWFkZXIo
IkVycm9yIik7CglwcmludCAiPHA+RXJyb3I6ICIsCgkgIHNwcmludGYoJGZvcm1hdCwgbWFwKGh0
bWxxdW90ZSgkXyksIEBhcmdzKSksCgkgICI8L3A+XG4iOwoJaHRtbF9mb290ZXIoKTsKCWV4aXQo
MSk7Cn0KCnN1YiByZWRpcmVjdCgkKSB7CglteSAoJHVybCkgPSBAXzsKCWlmICgkaXNfbW9kX3Bl
cmwpIHsKCQlBcGFjaGUtPnJlcXVlc3QtPnN0YXR1cygzMDEpOwoJCUFwYWNoZS0+cmVxdWVzdC0+
aGVhZGVyX291dChMb2NhdGlvbiA9PiAkdXJsKTsKCX0gZWxzZSB7CgkJcHJpbnQgIlN0YXR1czog
MzAxIE1vdmVkXHJcbiI7CgkJcHJpbnQgIkxvY2F0aW9uOiAkdXJsXHJcbiI7Cgl9CglodG1sX2hl
YWRlcigiTW92ZWQiKTsKCXByaW50ICI8cD5UaGlzIGRvY3VtZW50IGlzIGxvY2F0ZWQgIiwgJmxp
bmsoJ2hlcmUnLCAkdXJsKSwgIjwvcD5cbiI7CglodG1sX2Zvb3RlcigpOwoJZXhpdCgxKTsKfQoK
c3ViIHNhZmVnbG9iKCQpIHsKCW15ICgkZmlsZW5hbWUpID0gQF87CglteSAoJGRpcm5hbWUpOwoJ
bXkgKEByZXN1bHRzKTsKCW15ICRkaCA9IGRvIHsgbG9jYWwgKCpESCk7IH07CgoJKCRkaXJuYW1l
ID0gJGZpbGVuYW1lKSA9fiBzfC9bXi9dKyR8fDsKCSRmaWxlbmFtZSA9fiBzfC4qL3x8OwoKCWlm
IChvcGVuZGlyKCRkaCwgJGRpcm5hbWUpKSB7CgkJbXkgJGdsb2IgPSAkZmlsZW5hbWU7CgkJbXkg
JHQ7CgoJCSMJdHJhbnNmb3JtIGZpbGVuYW1lIGZyb20gZ2xvYiB0byByZWdleC4gIERlYWwgd2l0
aDoKCQkjCVssIHssID8sICogYXMgZ2xvYiBjaGFycwoJCSMJbWFrZSBzdXJlIHRvIGVzY2FwZSBh
bGwgb3RoZXIgcmVnZXggY2hhcnMKCQkkZ2xvYiA9fiBzLyhbXC5cKFwpXHxcK10pL1xcJDEvZzsK
CQkkZ2xvYiA9fiBzL1wqLy4qL2c7CgkJJGdsb2IgPX4gcy9cPy8uL2c7CgkJJGdsb2IgPX4gcy97
KFtefV0rKX0vKCR0ID0gJDEpID1+IHMtLC18LWc7ICIoJHQpIi9lZzsKCQlmb3JlYWNoIChyZWFk
ZGlyKCRkaCkpIHsKCgkJCWlmICgvXiR7Z2xvYn0kLykgewoJCQkJcHVzaCAoQHJlc3VsdHMsICIk
ZGlybmFtZS8iIC4gJF8pOwoJCQl9CgkJfQoJCWNsb3NlZGlyKCRkaCk7Cgl9CgoJQHJlc3VsdHM7
Cn0KCnN1YiBzZWFyY2hfcGF0aCgkKSB7CglteSAoJGNvbW1hbmQpID0gQF87CglteSAkZDsKCglm
b3IgJGQgKHNwbGl0ICgvOi8sICRjb21tYW5kX3BhdGgpKSB7CgkJcmV0dXJuICIkZC8kY29tbWFu
ZCIgaWYgLXggIiRkLyRjb21tYW5kIjsKCX0KCgknJzsKfQoKc3ViIGdldE1pbWVUeXBlRnJvbVN1
ZmZpeCgkKSB7CglteSAoJGZ1bGxuYW1lKSA9IEBfOwoJbXkgKCRtaW1ldHlwZSwgJHN1ZmZpeCk7
CglteSAkZmggPSBkbyB7IGxvY2FsICgqRkgpOyB9OwoKCSgkc3VmZml4ID0gJGZ1bGxuYW1lKSA9
fiBzL14uKlwuKFteLl0qKSQvJDEvOwoJJG1pbWV0eXBlID0gJE1UWVBFU3skc3VmZml4fTsKCSRt
aW1ldHlwZSA9ICRNVFlQRVN7JyonfSBpZiAoISRtaW1ldHlwZSk7CgoJaWYgKCEkbWltZXR5cGUg
JiYgLWYgJG1pbWVfdHlwZXMpIHsKCgkJIyBva2V5LCB0aGlzIGlzIHNvbWV0aGluZyBzcGVjaWFs
IC0gc2VhcmNoIHRoZQoJCSMgbWltZS50eXBlcyBkYXRhYmFzZQoJCW9wZW4oJGZoLCAiPCRtaW1l
X3R5cGVzIik7CgkJd2hpbGUgKDwkZmg+KSB7CgkJCWlmICgkXyA9fiAvXlxzKihcUytcL1xTKyku
KlxiJHN1ZmZpeFxiLykgewoJCQkJJG1pbWV0eXBlID0gJDE7CgkJCQlsYXN0OwoJCQl9CgkJfQoJ
CWNsb3NlKCRmaCk7Cgl9CgoJIyBva2V5LCBkaWRuJ3QgZmluZCBhbnl0aGluZyB1c2VmdWwgLi4K
CWlmICghKCRtaW1ldHlwZSA9fiAvXFNcL1xTLykpIHsKCQkkbWltZXR5cGUgPSAidGV4dC9wbGFp
biI7Cgl9CglyZXR1cm4gJG1pbWV0eXBlOwp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjCiMgcmVhZCBmaXJzdCBsaW5lcyBsaWtlIGhlYWQoMSkKIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIwpzdWIgaGVhZCgkOyQpIHsKCW15ICRmaCAgICAgICAgPSAkX1swXTsKCW15ICRs
aW5lY291bnQgPSAkX1sxXSB8fCAxMDsKCglteSBAYnVmOwoKCWlmICgkbGluZWNvdW50ID4gMCkg
ewoJCW15ICRpOwoJCWZvciAoJGkgPSAwIDsgIWVvZigkZmgpICYmICRpIDwgJGxpbmVjb3VudCA7
ICRpKyspIHsKCQkJcHVzaCBAYnVmLCBzY2FsYXIgPCRmaD47CgkJfQoJfSBlbHNlIHsKCQlAYnVm
ID0gPCRmaD47Cgl9CgoJQGJ1ZjsKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoj
IHNjYW4gdmltIGFuZCBFbWFjcyBkaXJlY3RpdmVzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMKc3ViIHNjYW5fZGlyZWN0aXZlcyhAKSB7CglteSAkdHMgPSB1bmRlZjsKCglmb3IgKEBf
KSB7CgkJJHRzID0gJDEgaWYgL1xiKD86dHN8dGFic3RvcHx0YWItd2lkdGgpWzo9XVxzKihbMS05
XVxkKilcYi87Cgl9CgoJKCd0YWJzdG9wJyA9PiAkdHMpOwp9CgpzdWIgb3Blbk91dHB1dEZpbHRl
cigpIHsKCXJldHVybiBpZiAhZGVmaW5lZCgkb3V0cHV0X2ZpbHRlcikgfHwgJG91dHB1dF9maWx0
ZXIgZXEgJyc7CgoJb3BlbihTVERPVVQsICJ8LSIpIGFuZCByZXR1cm47CgoJIyBjaGlsZCBvZiBj
aGlsZAoJb3BlbihTVERFUlIsICc+L2Rldi9udWxsJyk7CglleGVjKCRvdXRwdXRfZmlsdGVyKSBv
ciBleGl0IC0xOwp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgc2hvdyBBbm5v
dGF0aW9uCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKc3ViIGRvQW5ub3RhdGUoJCQp
IHsKCW15ICgkcmV2KSA9IEBfOwoJbXkgKCRwaWQpOwoJbXkgKCRwYXRobmFtZSwgJGZpbGVuYW1l
KTsKCW15ICRyZWFkZXIgPSBkbyB7IGxvY2FsICgqRkgpOyB9OwoJbXkgJHdyaXRlciA9IGRvIHsg
bG9jYWwgKCpGSCk7IH07CgoJIyBtYWtlIHN1cmUgdGhlIHJldmlzaW9ucyBhcmUgd2VsbGZvcm1l
ZCwgZm9yIHNlY3VyaXR5CgkjIHJlYXNvbnMgLi4KCWlmICgkcmV2ID1+IC9bXlx3Ll0vKSB7CgkJ
ZmF0YWwoIjQwNCBOb3QgRm91bmQiLAoJCSAgICAgICdNYWxmb3JtZWQgcXVlcnkgIiVzIicsCgkJ
ICAgICAgJEVOVntRVUVSWV9TVFJJTkd9KTsKCX0KCgkoJHBhdGhuYW1lID0gJHdoZXJlKSA9fiBz
LyhBdHRpY1wvKT9bXlwvXSokLy87CgkoJGZpbGVuYW1lID0gJHdoZXJlKSA9fiBzL14uKlwvLy87
CgoJIyB0aGlzIHNlZW1zIHRvIGJlIG5lY2Vzc2FyeQoJJHwgPSAxOwoJJHwgPSAwOyAgICAjIEZs
dXNoCgoJIyBXb3JrIGFyb3VuZCBhIG1vZF9wZXJsIGJ1ZyAoPykgaW4gb3JkZXIgdG8gbWFrZSBv
cGVuMigpIHdvcmsuCgkjIFNlYXJjaCBmb3IgInVudGllIFNURElOIiBpbiBtb2RfcGVybCBtYWls
aW5nIGxpc3QgYXJjaGl2ZXMuCglteSAkb2xkX3N0ZGluOwoJaWYgKCRpc19tb2RfcGVybCAmJiAo
JG9sZF9zdGRpbiA9IHRpZWQgKlNURElOKSkgewoJICBsb2NhbCAkXlcgPSB1bmRlZjsKCSAgdW50
aWUgKlNURElOOwoJfQoKCSMgdGhpcyBhbm5vdGF0ZSB2ZXJzaW9uIGlzIGJhc2VkIG9uIHRoZQoJ
IyBjdnMgYW5ub3RhdGUtZGVtbyBQZXJsIHNjcmlwdCBieSBDeWNsaWMgU29mdHdhcmUKCSMgSXQg
d2FzIHdyaXR0ZW4gYnkgQ3ljbGljIFNvZnR3YXJlLCBodHRwOi8vd3d3LmN5Y2xpYy5jb20vLCBh
bmQgaXMgaW4KCSMgdGhlIHB1YmxpYyBkb21haW4uCgkjIHdlIGNvdWxkIGFiYW5kb24gdGhlIHVz
ZSBvZiBybG9nLCByY3NkaWZmIGFuZCBjbyB1c2luZwoJIyB0aGUgY3Zzc2VydmVyIGluIGEgc2lt
aWxpYXIgd2F5IG9uZSBkYXkgKC4uYWZ0ZXIgcmV3cml0ZSkKCSRwaWQgPSBvcGVuMigkcmVhZGVy
LCAkd3JpdGVyLCAkQ01Ee2N2c30sIEBhbm5vdGF0ZV9vcHRpb25zLCAnc2VydmVyJykKCSAgICBv
ciBmYXRhbCgiNTAwIEludGVybmFsIEVycm9yIiwKCQkgICAgICdGYXRhbCBFcnJvciAtIHVuYWJs
ZSB0byBvcGVuIGN2cyBmb3IgYW5ub3RhdGlvbicpOwoKCSMgUmUtdGllIFNURElOIGlmIHdlIGZp
ZGRsZWQgYXJvdW5kIHdpdGggaXQgZWFybGllciwganVzdCB0byBiZSBzdXJlLgoJdGllKCpTVERJ
TiwgcmVmKCRvbGRfc3RkaW4pLCAkb2xkX3N0ZGluKSBpZiAoJG9sZF9zdGRpbiAmJiAhdGllZCgq
U1RESU4pKTsKCgkjIE9LLCBmaXJzdCBzZW5kIHRoZSByZXF1ZXN0IHRvIHRoZSBzZXJ2ZXIuICBB
IHNpbXBsaWZpZWQgZXhhbXBsZSBpczoKCSMgICAgIFJvb3QgL2hvbWUva2luZ2Rvbi96d29yay9j
dnNyb290CgkjICAgICBBcmd1bWVudCBmb28veHgKCSMgICAgIERpcmVjdG9yeSBmb28KCSMgICAg
IC9ob21lL2tpbmdkb24vendvcmsvY3Zzcm9vdC9mb28KCSMgICAgIERpcmVjdG9yeSAuCgkjICAg
ICAvaG9tZS9raW5nZG9uL3p3b3JrL2N2c3Jvb3QKCSMgICAgIGFubm90YXRlCgkjIGFsdGhvdWdo
IGFzIHlvdSBjYW4gc2VlIHRoZXJlIGFyZSBhIGZldyBtb3JlIGRldGFpbHMuCgoJcHJpbnQgJHdy
aXRlciAiUm9vdCAkY3Zzcm9vdFxuIjsKCXByaW50ICR3cml0ZXIKCSAgICAiVmFsaWQtcmVzcG9u
c2VzIG9rIGVycm9yIFZhbGlkLXJlcXVlc3RzIENoZWNrZWQtaW4gVXBkYXRlZCBNZXJnZWQgUmVt
b3ZlZCBNIEVcbiI7CgoJIyBEb24ndCB3b3JyeSBhYm91dCBzZW5kaW5nIHZhbGlkLXJlcXVlc3Rz
LCB0aGUgc2VydmVyIGp1c3QgbmVlZHMgdG8KCSMgc3VwcG9ydCAiYW5ub3RhdGUiIGFuZCBpZiBp
dCBkb2Vzbid0LCB0aGVyZSBpc24ndCBhbnl0aGluZyB0byBiZSBkb25lLgoJcHJpbnQgJHdyaXRl
ciAiVXNlVW5jaGFuZ2VkXG4iOwoJcHJpbnQgJHdyaXRlciAiQXJndW1lbnQgLXJcbiI7Cglwcmlu
dCAkd3JpdGVyICJBcmd1bWVudCAkcmV2XG4iOwoJcHJpbnQgJHdyaXRlciAiQXJndW1lbnQgJHdo
ZXJlXG4iOwoKCSMgVGhlIHByb3RvY29sIHJlcXVpcmVzIHVzIHRvIGZ1bGx5IGZha2UgYSB3b3Jr
aW5nIGRpcmVjdG9yeSAoYXQKCSMgbGVhc3QgdG8gdGhlIHBvaW50IG9mIGluY2x1ZGluZyB0aGUg
ZGlyZWN0b3JpZXMgZG93biB0byB0aGUgb25lCgkjIGNvbnRhaW5pbmcgdGhlIGZpbGUgaW4gcXVl
c3Rpb24pLgoJIyBTbyBpZiAkd2hlcmUgaXMgImRpci9zZGlyL2ZpbGUiLCB0aGVuIEBkaXJzIHdp
bGwgYmUgKCJkaXIiLCJzZGlyIiwiZmlsZSIpCglteSBAZGlycyA9IHNwbGl0ICgnLycsICR3aGVy
ZSk7CglteSAkcGF0aCA9ICIiOwoJZm9yZWFjaCAoQGRpcnMpIHsKCgkJaWYgKCRwYXRoIGVxICIi
KSB7CgoJCQkjIEluIG91ciBleGFtcGxlLCAkXyBpcyAiZGlyIi4KCQkJJHBhdGggPSAkXzsKCQl9
IGVsc2UgewoJCQlwcmludCAkd3JpdGVyICJEaXJlY3RvcnkgJHBhdGhcbiI7CgkJCXByaW50ICR3
cml0ZXIgIiRjdnNyb290LyRwYXRoXG4iOwoKCQkJIyBJbiBvdXIgZXhhbXBsZSwgJF8gaXMgInNk
aXIiIGFuZCAkcGF0aCBiZWNvbWVzICJkaXIvc2RpciIKCQkJIyBBbmQgdGhlIG5leHQgdGltZSwg
ImZpbGUiIGFuZCAiZGlyL3NkaXIvZmlsZSIgKHdoaWNoIHRoZW4gZ2V0cwoJCQkjIGlnbm9yZWQs
IGJlY2F1c2Ugd2UgZG9uJ3QgbmVlZCB0byBzZW5kIERpcmVjdG9yeSBmb3IgdGhlIGZpbGUpLgoJ
CQkkcGF0aCAuPSAiLyRfIjsKCQl9Cgl9CgoJIyBBbmQgdGhlIGxhc3QgIkRpcmVjdG9yeSIgYmVm
b3JlICJhbm5vdGF0ZSIgaXMgdGhlIHRvcCBsZXZlbC4KCXByaW50ICR3cml0ZXIgIkRpcmVjdG9y
eSAuXG4iOwoJcHJpbnQgJHdyaXRlciAiJGN2c3Jvb3RcbiI7CgoJcHJpbnQgJHdyaXRlciAiYW5u
b3RhdGVcbiI7CgoJIyBPSywgd2UndmUgc2VudCBvdXIgY29tbWFuZCB0byB0aGUgc2VydmVyLiAg
VGhpbmcgdG8gZG8gaXMgdG8KCSMgY2xvc2UgdGhlIHdyaXRlciBzaWRlIGFuZCBnZXQgYWxsIHRo
ZSByZXNwb25zZXMuICBJZiAiY3ZzIHNlcnZlciIKCSMgd2VyZSBuaWNlciBhYm91dCBidWZmZXJp
bmcsIHRoZW4gd2UgY291bGQganVzdCBsZWF2ZSBpdCBvcGVuLCBJIHRoaW5rLgoJY2xvc2UoJHdy
aXRlcikgb3IgZGllICJjYW5ub3QgY2xvc2U6ICQhIjsKCglodHRwX2hlYWRlcigpOwoKCW5hdmln
YXRlSGVhZGVyKCRzY3JpcHR3aGVyZSwgJHBhdGhuYW1lLCAkZmlsZW5hbWUsICRyZXYsICJhbm5v
dGF0ZSIpOwoJcHJpbnQKCSAgICAiPGgzIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyXCI+QW5u
b3RhdGlvbiBvZiAkcGF0aG5hbWUkZmlsZW5hbWUsIFJldmlzaW9uICRyZXY8L2gzPlxuIjsKCgkj
IFJlYWR5IHRvIGdldCB0aGUgcmVzcG9uc2VzIGZyb20gdGhlIHNlcnZlci4KCSMgRm9yIGV4YW1w
bGU6CgkjICAgICBFIEFubm90YXRpb25zIGZvciBmb28veHgKCSMgICAgIEUgKioqKioqKioqKioq
KioqCgkjICAgICBNIDEuMyAgICAgICAgICAoa2luZ2RvbiAgMDYtU2VwLTk3KTogaGVsbG8KCSMg
ICAgIG9rCglteSAoJGxpbmVOcikgPSAwOwoJbXkgKCRvbGRMcmV2LCAkb2xkTHVzcikgPSAoIiIs
ICIiKTsKCW15ICgkcmV2cHJpbnQsICR1c3JwcmludCk7CgoJaWYgKCRhbm5UYWJsZSkgewoJCXBy
aW50ICI8dGFibGUgc3R5bGU9XCJib3JkZXI6IG5vbmVcIiBjZWxsc3BhY2luZz1cIjBcIiBjZWxs
cGFkZGluZz1cIjBcIj5cbiI7Cgl9IGVsc2UgewoJCXByaW50ICI8cHJlPiI7Cgl9CgoJIyBwcmVm
ZXRjaCBzZXZlcmFsIGxpbmVzCglteSBAYnVmID0gaGVhZCgkcmVhZGVyKTsKCglteSAlZCA9IHNj
YW5fZGlyZWN0aXZlcyhAYnVmKTsKCgl3aGlsZSAoQGJ1ZiB8fCAhZW9mKCRyZWFkZXIpKSB7CgkJ
JF8gPSBAYnVmID8gc2hpZnQgQGJ1ZiA6IDwkcmVhZGVyPjsKCgkJbXkgQHdvcmRzID0gc3BsaXQ7
CgoJCSMgQWRkaW5nIG9uZSBpcyBmb3IgdGhlIChzaW5nbGUpIHNwYWNlIHdoaWNoIGZvbGxvd3Mg
JHdvcmRzWzBdLgoJCW15ICRyZXN0ID0gc3Vic3RyKCRfLCBsZW5ndGgoJHdvcmRzWzBdKSArIDEp
OwoJCWlmICgkd29yZHNbMF0gZXEgIkUiKSB7CgkJCW5leHQ7CgkJfSBlbHNpZiAoJHdvcmRzWzBd
IGVxICJNIikgewoJCQkkbGluZU5yKys7CgkJCShteSAkbHJldiA9IHN1YnN0cigkXywgMiwgIDEz
KSkgPX4geS8gLy9kOwoJCQkobXkgJGx1c3IgPSBzdWJzdHIoJF8sIDE2LCA5KSkgID1+IHkvIC8v
ZDsKCQkJbXkgJGxpbmUgPSBzdWJzdHIoJF8sIDM2KTsKCQkJbXkgJGlzQ3VycmVudFJldiA9ICgk
cmV2IGVxICRscmV2KTsKCgkJCSMgd2Ugc2hvdWxkIHBhcnNlIHRoZSBkYXRlIGhlcmUgLi4KCQkJ
aWYgKCRscmV2IGVxICRvbGRMcmV2KSB7CgkJCQkkcmV2cHJpbnQgPSBzcHJpbnRmKCclLThzJywg
JycpOwoJCQl9IGVsc2UgewoJCQkJJHJldnByaW50ID0gc3ByaW50ZignJS04cycsICRscmV2KTsK
CQkJCSRyZXZwcmludCA9fgoJCQkJICAgIHNgXFMrYCZsaW5rKCQmLCAiJHNjcmlwdHdoZXJlJHF1
ZXJ5I3JldiQmIilgZQoJCQkJICAgIDsgICAgIyBgCgkJCQkkb2xkTHVzciA9ICcnOwoJCQl9CgoJ
CQlpZiAoJGx1c3IgZXEgJG9sZEx1c3IpIHsKCQkJCSR1c3JwcmludCA9ICcnOwoJCQl9IGVsc2Ug
ewoJCQkJJHVzcnByaW50ID0gJGx1c3I7CgkJCX0KCQkJJG9sZExyZXYgPSAkbHJldjsKCQkJJG9s
ZEx1c3IgPSAkbHVzcjsKCgkJCSMgU2V0IGJvbGQgZm9yIHRleHQtYmFzZWQgYnJvd3NlcnMgb25s
eSAtIGdyYXBoaWNhbAoJCQkjIGJyb3dzZXJzIHNob3cgYm9sZCBmb250cyBhIGJpdCB3aWRlciB0
aGFuIHJlZ3VsYXIgZm9udHMsCgkJCSMgc28gaXQgbG9va3MgaXJyZWd1bGFyLgoJCQlwcmludCAi
PGI+IiBpZiAoJGlzQ3VycmVudFJldiAmJiAkaXNfdGV4dGJhc2VkKTsKCgkJCXByaW50ZiAiJXMl
cyAlLThzICU0ZDoiLCAkcmV2cHJpbnQsCgkJCSAgICAkaXNDdXJyZW50UmV2ID8gJyEnIDogJyAn
LCAkdXNycHJpbnQsICRsaW5lTnI7CgkJCXByaW50IHNwYWNlZEh0bWxUZXh0KCRsaW5lLCAkZHsn
dGFic3RvcCd9KTsKCgkJCXByaW50ICI8L2I+IiBpZiAoJGlzQ3VycmVudFJldiAmJiAkaXNfdGV4
dGJhc2VkKTsKCQl9IGVsc2lmICgkd29yZHNbMF0gZXEgIm9rIikgewoKCQkJIyBXZSBjb3VsZCBj
b21wbGFpbiBhYm91dCBhbnkgdGV4dCByZWNlaXZlZCBhZnRlciB0aGlzLCBsaWtlIHRoZQoJCQkj
IENWUyBjb21tYW5kIGxpbmUgY2xpZW50LiAgQnV0IGZvciBzaW1wbGljaXR5LCB3ZSBkb24ndC4K
CQl9IGVsc2lmICgkd29yZHNbMF0gZXEgImVycm9yIikgewoJCQlmYXRhbCgiNTAwIEludGVybmFs
IEVycm9yIiwKCQkJICAgICAgJ0Vycm9yIG9jY3VyZWQgZHVyaW5nIGFubm90YXRlOiA8Yj4lczwv
Yj4nLAoJCQkgICAgICAkXyk7CgkJfQoJfQoKCWlmICgkYW5uVGFibGUpIHsKCQlwcmludCAiPC90
YWJsZT4iOwoJfSBlbHNlIHsKCQlwcmludCAiPC9wcmU+IjsKCX0KCWh0bWxfZm9vdGVyKCk7CgoJ
Y2xvc2UoJHJlYWRlcikgb3Igd2FybiAiY2Fubm90IGNsb3NlOiAkISI7Cgl3YWl0Owp9CgojIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgbWFrZSBDaGVja291dAojIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjCnN1YiBkb0NoZWNrb3V0KCQkKSB7CglteSAoJGZ1bGxuYW1lLCAk
cmV2KSA9IEBfOwoJbXkgKCRtaW1ldHlwZSwgJHJldm9wdCk7CglteSAkZmggPSBkbyB7IGxvY2Fs
ICgqRkgpOyB9OwoKCWlmICgkcmV2IGVxICdIRUFEJyB8fCAkcmV2IGVxICcuJykgewoJCSRyZXYg
PSB1bmRlZjsKCX0KCgkjIG1ha2Ugc3VyZSB0aGUgcmV2aXNpb25zIGEgd2VsbGZvcm1lZCwgZm9y
IHNlY3VyaXR5CgkjIHJlYXNvbnMgLi4KCWlmIChkZWZpbmVkKCRyZXYpICYmICRyZXYgPX4gL1te
XHcuXS8pIHsKCQlmYXRhbCgiNDA0IE5vdCBGb3VuZCIsCgkJICAgICAgJ01hbGZvcm1lZCBxdWVy
eSAiJXMiJywKCQkgICAgICAkRU5We1FVRVJZX1NUUklOR30pOwoJfQoKCSMgZ2V0IG1pbWV0eXBl
CglpZiAoZGVmaW5lZCgkaW5wdXR7ImNvbnRlbnQtdHlwZSJ9KQoJICAgICYmICgkaW5wdXR7ImNv
bnRlbnQtdHlwZSJ9ID1+IC9cU1wvXFMvKSkKCXsKCQkkbWltZXR5cGUgPSAkaW5wdXR7ImNvbnRl
bnQtdHlwZSJ9Cgl9IGVsc2UgewoJCSRtaW1ldHlwZSA9ICZnZXRNaW1lVHlwZUZyb21TdWZmaXgo
JGZ1bGxuYW1lKTsKCX0KCglpZiAoZGVmaW5lZCgkcmV2KSkgewoJCSRyZXZvcHQgPSAiLXIkcmV2
IjsKCQlpZiAoJHVzZV9tb2RkYXRlKSB7CgkJCXJlYWRMb2coJGZ1bGxuYW1lLCAkcmV2KTsKCQkJ
JG1vZGRhdGUgPSAkZGF0ZXskcmV2fTsKCQl9Cgl9IGVsc2UgewoJCSRyZXZvcHQgPSAiLXJIRUFE
IjsKCgkJaWYgKCR1c2VfbW9kZGF0ZSkgewoJCQlyZWFkTG9nKCRmdWxsbmFtZSk7CgkJCSRtb2Rk
YXRlID0gJGRhdGV7JHN5bXJldntIRUFEfX07CgkJfQoJfQoKCSMjIyBqdXN0IGZvciB0aGUgcmVj
b3JkOgoJIyMjICdjdnMgY28nIHNlZW1zIHRvIGhhdmUgYSBidWcgcmVnYXJkaW5nIHNpbmdsZSBj
aGVja291dCBvZgoJIyMjIGRpcmVjdG9yaWVzL2ZpbGVzIGhhdmluZyBzcGFjZXMgaW4gaXQ7Cgkj
IyMgdGhpcyBpcyBhbiBpc3N1ZSB0aGF0IHNob3VsZCBiZSByZXNvbHZlZCBvbiBjdnMncyBzaWRl
CgkjCgkjIFNhZmVseSBmb3IgYSBjaGlsZCBwcm9jZXNzIHRvIHJlYWQgZnJvbS4KCWlmICghb3Bl
bigkZmgsICItfCIpKSB7ICAgICMgY2hpbGQKCQkgIyBjaGRpciB0byAkdG1wZGlyIGJlZm9yZSB0
byBhdm9pZCBub24tcmVhZGFibGUgY2dpLWJpbiBkaXJlY3RvcmllcwoJCWNoZGlyKCR0bXBkaXIp
OwoJCW9wZW4oU1RERVJSLCAiPiZTVERPVVQiKTsgICAgIyBSZWRpcmVjdCBzdGRlcnIgdG8gc3Rk
b3V0CgoJCSMgd29yayBhcm91bmQgYSBidWcgb2YgY3ZzIC1wOyBleHBhbmQgc3ltbGlua3MKCQl1
c2UgQ3dkICdhYnNfcGF0aCc7CgkJZXhlYygkQ01Ee2N2c30sIEBjdnNfb3B0aW9ucywKCQkgICAg
ICctZCcsIGFic19wYXRoKCRjdnNyb290KSwKCQkgICAgICdjbycsICctcCcsCgkJICAgICAkcmV2
b3B0LCAkd2hlcmUpIG9yIGV4aXQgLTE7Cgl9CgoJaWYgKGVvZigkZmgpKSB7CgkJZmF0YWwoIjQw
NCBOb3QgRm91bmQiLAoJCSAgICAgICclcyBpcyBub3QgKGFueSBsb25nZXIpIHBlcnRpbmVudCcs
CgkJICAgICAgJHdoZXJlKTsKCX0KCgkjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoJI0NoZWNraW5nIG91dCBzcXVpZC9z
cmMvZnRwLmMKCSNSQ1M6ICAvdXNyL3NyYy9DVlMvc3F1aWQvc3JjL2Z0cC5jLHYKCSNWRVJTOiAx
LjEuMS4yOC42LjIKCSMqKioqKioqKioqKioqKioKCgkjIFBhcnNlIENWUyBoZWFkZXIKCW15ICgk
cmV2aXNpb24sICRmaWxlbmFtZSwgJGN2c2hlYWRlcik7CgkkZmlsZW5hbWUgPSAiIjsKCXdoaWxl
ICg8JGZoPikgewoJCWxhc3QgaWYgKC9eXCpcKlwqXCovKTsKCQkkcmV2aXNpb24gPSAkMSBpZiAo
L15WRVJTOiAoLiopJC8pOwoKCQlpZiAoL15DaGVja2luZyBvdXQgKC4qKSQvKSB7CgkJCSRmaWxl
bmFtZSA9ICQxOwoJCQkkZmlsZW5hbWUgPX4gcy9eXC5cLyovLzsKCQl9CgkJJGN2c2hlYWRlciAu
PSAkXzsKCX0KCglpZiAoJGZpbGVuYW1lIG5lICR3aGVyZSkgewoJCWZhdGFsKCI1MDAgSW50ZXJu
YWwgRXJyb3IiLAoJCSAgICAgICdVbmV4cGVjdGVkIG91dHB1dCBmcm9tIGN2cyBjbzogJXMnLAoJ
CSAgICAgICRjdnNoZWFkZXIpOwoJfQoJJHwgPSAxOwoKCWlmICgkbWltZXR5cGUgZXEgInRleHQv
eC1jdnN3ZWItbWFya3VwIikgewoJCSZjdnN3ZWJNYXJrdXAoJGZoLCAkZnVsbG5hbWUsICRyZXZp
c2lvbik7Cgl9IGVsc2UgewoJCWh0dHBfaGVhZGVyKCRtaW1ldHlwZSk7CgkJcHJpbnQgPCRmaD47
Cgl9CgljbG9zZSgkZmgpOwp9CgpzdWIgY3Zzd2ViTWFya3VwKCQkJCkgewoJbXkgKCRmaWxlaGFu
ZGxlLCAkZnVsbG5hbWUsICRyZXZpc2lvbikgPSBAXzsKCW15ICgkcGF0aG5hbWUsICAgJGZpbGVu
YW1lKTsKCgkoJHBhdGhuYW1lID0gJHdoZXJlKSA9fiBzLyhBdHRpY1wvKT9bXlwvXSokLy87Cgko
JGZpbGVuYW1lID0gJHdoZXJlKSA9fiBzL14uKlwvLy87CglteSAoJGZpbGV1cmwpID0gdXJsZW5j
b2RlKCRmaWxlbmFtZSk7CgoJaHR0cF9oZWFkZXIoKTsKCgluYXZpZ2F0ZUhlYWRlcigkc2NyaXB0
d2hlcmUsICRwYXRobmFtZSwgJGZpbGVuYW1lLCAkcmV2aXNpb24sICJ2aWV3Iik7CglwcmludCAi
PGhyIG5vc2hhZGU+IjsKCXByaW50ICI8dGFibGUgd2lkdGg9XCIxMDAlXCI+XG48dHI+XG48dGQg
c3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiAkbWFya3VwTG9nQ29sb3JcIj4iOwoJcHJpbnQgIkZp
bGU6ICIsICZjbGlja2FibGVQYXRoKCR3aGVyZSwgMSk7CglwcmludCAiJm5ic3A7KCI7CgkmZG93
bmxvYWRfbGluaygkZmlsZXVybCwgJHJldmlzaW9uLCAiZG93bmxvYWQiKTsKCXByaW50ICIpIjsK
CglpZiAoISRkZWZhdWx0VGV4dFBsYWluKSB7CgkJcHJpbnQgIiZuYnNwOygiOwoJCSZkb3dubG9h
ZF9saW5rKCRmaWxldXJsLCAkcmV2aXNpb24sICJhcyB0ZXh0IiwgInRleHQvcGxhaW4iKTsKCQlw
cmludCAiKSI7Cgl9CglwcmludCAiPGJyPlxuIjsKCglpZiAoJHNob3dfbG9nX2luX21hcmt1cCkg
ewoJCXJlYWRMb2coJGZ1bGxuYW1lKTsgICAgIywkcmV2aXNpb24pOwoJCXByaW50TG9nKCRyZXZp
c2lvbiwgMCk7Cgl9IGVsc2UgewoJCXByaW50ICJWZXJzaW9uOiA8Yj4kcmV2aXNpb248L2I+PGJy
PlxuIjsKCQlwcmludCAiVGFnOiA8Yj4iLCAkaW5wdXR7b25seV93aXRoX3RhZ30sICI8L2I+PGJy
PlxuIgoJCSAgICBpZiAkaW5wdXR7b25seV93aXRoX3RhZ307Cgl9CglwcmludCAiPC90ZD5cbjwv
dHI+XG48L3RhYmxlPiI7CglteSAkdXJsID0gZG93bmxvYWRfdXJsKCRmaWxldXJsLCAkcmV2aXNp
b24sICRtaW1ldHlwZSk7CglwcmludCAiPGhyIG5vc2hhZGU+IjsKCglpZiAoJG1pbWV0eXBlID1+
IC9eaW1hZ2UvKSB7CgkJcHJpbnRmICc8aW1nIHNyYz0iJXMiIGFsdD0iIj48YnI+JywgaHJlZnF1
b3RlKCIkdXJsJGJhcmVxdWVyeSIpOwoJfSBlbHNpZiAoJG1pbWV0eXBlID1+IG0lXmFwcGxpY2F0
aW9uL3BkZiUpIHsKCQlwcmludGYgJzxlbWJlZCBzcmM9IiVzIiB3aWR0aD0iMTAwJSI+PGJyPics
CgkJICAgIGhyZWZxdW90ZSgiJHVybCRiYXJlcXVlcnkiKTsKCX0gZWxzaWYgKCRwcmVmb3JtYXRf
aW5fbWFya3VwKSB7CgkJcHJpbnQgIjxwcmU+IjsKCgkJIyBwcmVmZXRjaCBzZXZlcmFsIGxpbmVz
CgkJbXkgQGJ1ZiA9IGhlYWQoJGZpbGVoYW5kbGUpOwoKCQlteSAlZCA9IHNjYW5fZGlyZWN0aXZl
cyhAYnVmKTsKCgkJd2hpbGUgKEBidWYgfHwgIWVvZigkZmlsZWhhbmRsZSkpIHsKCQkJJF8gPSBA
YnVmID8gc2hpZnQgQGJ1ZiA6IDwkZmlsZWhhbmRsZT47CgoJCQlwcmludCBzcGFjZWRIdG1sVGV4
dCgkXywgJGR7J3RhYnN0b3AnfSk7CgkJfQoJCXByaW50ICI8L3ByZT4iOwoJfSBlbHNlIHsKCQlw
cmludCAiPHByZT4iOwoKCQl3aGlsZSAoPCRmaWxlaGFuZGxlPikgewoJCQlwcmludCBodG1scXVv
dGUoJF8pOwoJCX0KCQlwcmludCAiPC9wcmU+IjsKCX0KfQoKc3ViIHZpZXdhYmxlKCQpIHsKCW15
ICgkbWltZXR5cGUpID0gQF87CgoJJG1pbWV0eXBlID1+IG0lXigodGV4dHxpbWFnZSkvfGFwcGxp
Y2F0aW9uL3BkZiklOwp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU2hvdyBD
b2xvcmVkIERpZmYKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpzdWIgZG9EaWZmKCQk
JCQkJCkgewoJbXkgKCRmdWxsbmFtZSwgJHIxLCAkdHIxLCAkcjIsICR0cjIsICRmKSA9IEBfOwoJ
bXkgJGZoID0gZG8geyBsb2NhbCAoKkZIKTsgfTsKCW15ICgkcmV2MSwgJHJldjIsICRzeW0xLCAk
c3ltMiwgJGYxLCAkZjIpOwoKCWlmICgmZm9yYmlkZGVuX2ZpbGUoJGZ1bGxuYW1lKSkgewoJCWZh
dGFsKCI0MDMgRm9yYmlkZGVuIiwKCQkgICAgICAnQWNjZXNzIGZvcmJpZGRlbi4gIFRoaXMgZmls
ZSBpcyBtZW50aW9uZWQgaW4gQEZvcmJpZGRlbkZpbGVzJyk7CgkJcmV0dXJuOwoJfQoKCWlmICgk
cjEgPX4gLyhbXjpdKykoOiguKykpPy8pIHsKCQkkcmV2MSA9ICQxOwoJCSRzeW0xID0gJDM7Cgl9
CglpZiAoJHIxIGVxICd0ZXh0JykgewoJCSRyZXYxID0gJHRyMTsKCQkkc3ltMSA9ICIiOwoJfQoK
CWlmICgkcjIgPX4gLyhbXjpdKykoOiguKykpPy8pIHsKCQkkcmV2MiA9ICQxOwoJCSRzeW0yID0g
JDM7Cgl9CglpZiAoJHIyIGVxICd0ZXh0JykgewoJCSRyZXYyID0gJHRyMjsKCQkkc3ltMiA9ICIi
OwoJfQoKCSMgbWFrZSBzdXJlIHRoZSByZXZpc2lvbnMgYSB3ZWxsZm9ybWVkLCBmb3Igc2VjdXJp
dHkKCSMgcmVhc29ucyAuLgoJaWYgKCRyZXYxID1+IC9bXlx3Ll0vIHx8ICRyZXYyID1+IC9bXlx3
Ll0vKSB7CgkJZmF0YWwoIjQwNCBOb3QgRm91bmQiLAoJCSAgICAgICdNYWxmb3JtZWQgcXVlcnkg
IiVzIicsCgkJICAgICAgJEVOVntRVUVSWV9TVFJJTkd9KTsKCX0KCgkjCgkjIHJldjEgYW5kIHJl
djIgYXJlIG5vdyBib3RoIG51bWVyaWMgcmV2aXNpb25zLgoJIyBUaHVzIHdlIGRvIGEgRFdJTSBo
ZXJlIGFuZCBzd2FwIHRoZW0gaWYgcmV2MSBpcyBhZnRlciByZXYyLgoJIyBYWFggc2hvdWxkIHdl
IHdhcm4gYWJvdXQgdGhlIGZhY3QgdGhhdCB3ZSBkbyB0aGlzPwoJaWYgKCZyZXZjbXAoJHJldjEs
ICRyZXYyKSA+IDApIHsKCQlteSAoJHRtcDEsICR0bXAyKSA9ICgkcmV2MSwgJHN5bTEpOwoJCSgk
cmV2MSwgJHN5bTEpID0gKCRyZXYyLCAkc3ltMik7CgkJKCRyZXYyLCAkc3ltMikgPSAoJHRtcDEs
ICR0bXAyKTsKCX0KCW15ICRkaWZmdHlwZSA9ICRESUZGVFlQRVN7JGZ9OwoKCWlmICghJGRpZmZ0
eXBlKSB7CgkJZmF0YWwoIjQwMCBCYWQgYXJndW1lbnRzIiwKCQkgICAgICAnRGlmZiBmb3JtYXQg
JXMgbm90IHVuZGVyc3Rvb2QnLAoJCSAgICAgICRmKTsKCX0KCglteSBAZGlmZnR5cGUgICAgICAg
PSBAeyRkaWZmdHlwZS0+eydvcHRzJ319OwoJbXkgJGh1bWFuX3JlYWRhYmxlID0gJGRpZmZ0eXBl
LT57J2NvbG9yZWQnfTsKCgkjIGFwcGx5IHNwZWNpYWwgb3B0aW9ucwoJaWYgKCRzaG93ZnVuYykg
ewoJCXB1c2ggQGRpZmZ0eXBlLCAnLXAnIGlmICRmIG5lICdzJzsKCgkJbXkgKCRyZTEsICRyZTIp
OwoKCQl3aGlsZSAoKCRyZTEsICRyZTIpID0gZWFjaCAlZnVuY2xpbmVfcmVnZXhwKSB7CgkJCWlm
ICgkZnVsbG5hbWUgPX4gLyRyZTEvKSB7CgkJCQlwdXNoIEBkaWZmdHlwZSwgJy1GJywgJHJlMjsK
CQkJCWxhc3Q7CgkJCX0KCQl9Cgl9CgoJaWYgKCRodW1hbl9yZWFkYWJsZSkgewoJCWlmICgkaHJf
aWdud2hpdGUpIHsKCQkJcHVzaCBAZGlmZnR5cGUsICctdyc7CgkJfQoJCWlmICgkaHJfaWdua2V5
c3Vic3QpIHsKCQkJcHVzaCBAZGlmZnR5cGUsICcta2snOwoJCX0KCX0KCglpZiAoIW9wZW4oJGZo
LCAiLXwiKSkgeyAgICAjIGNoaWxkCgkJb3BlbihTVERFUlIsICI+JlNURE9VVCIpOyAgICAjIFJl
ZGlyZWN0IHN0ZGVyciB0byBzdGRvdXQKCQlvcGVuT3V0cHV0RmlsdGVyKCk7CgkJZXhlYygkQ01E
e3Jjc2RpZmZ9LCBAZGlmZnR5cGUsICItciRyZXYxIiwgIi1yJHJldjIiLCAkZnVsbG5hbWUpIG9y
IGV4aXQgLTE7Cgl9CglpZiAoJGh1bWFuX3JlYWRhYmxlKSB7CgkJaHR0cF9oZWFkZXIoKTsKCQkm
aHVtYW5fcmVhZGFibGVfZGlmZigkZmgsICRyZXYyKTsKCQlodG1sX2Zvb3RlcigpOwoJCWd6aXBj
bG9zZSgpOwoJCWV4aXQ7Cgl9IGVsc2UgewoJCWh0dHBfaGVhZGVyKCJ0ZXh0L3BsYWluIik7Cgl9
CgoJIwoJIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KCSNSQ1MgZmlsZTogL2hvbWUvbmN2cy9zcmMvc3lzL25ldGluZXQv
dGNwX291dHB1dC5jLHYKCSNyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTYKCSNyZXRyaWV2aW5nIHJl
dmlzaW9uIDEuMTcKCSNkaWZmIC1jIC1yMS4xNiAtcjEuMTcKCSMqKiogL2hvbWUvbmN2cy9zcmMv
c3lzL25ldGluZXQvdGNwX291dHB1dC5jICAgICAxOTk1LzExLzAzIDIyOjA4OjA4ICAgICAxLjE2
CgkjLS0tIC9ob21lL25jdnMvc3JjL3N5cy9uZXRpbmV0L3RjcF9vdXRwdXQuYyAgICAgMTk5NS8x
Mi8wNSAxNzo0NjozNSAgICAgMS4xNwoJIwoJIyBJZGVhczoKCSMgLSBudWtlIHRoZSBzdGRlcnIg
b3V0cHV0IGlmIGl0J3Mgd2hhdCB3ZSBleHBlY3QgaXQgdG8gYmUKCSMgLSBBZGQgIm5vIGRpZmZl
cmVuY2VzIGZvdW5kIiBpZiB0aGUgZGlmZiBjb21tYW5kIHN1cHBsaWVkIG5vIG91dHB1dC4KCSMK
CSMqKiogc3JjL3N5cy9uZXRpbmV0L3RjcF9vdXRwdXQuYyAgICAgMTk5NS8xMS8wMyAyMjowODow
OCAgICAgMS4xNgoJIy0tLSBzcmMvc3lzL25ldGluZXQvdGNwX291dHB1dC5jICAgICAxOTk1LzEy
LzA1IDE3OjQ2OjM1ICAgICAxLjE3IFJFTEVOR18yXzFfMAoJIyAoYm9ndXMgZXhhbXBsZSwgYnV0
Li4uKQoJIwoJaWYgKGdyZXAgeyAkXyBlcSAnLXUnIH0gQGRpZmZ0eXBlKSB7CgkJJGYxID0gJy0t
LSc7CgkJJGYyID0gJ1wrXCtcKyc7Cgl9IGVsc2UgewoJCSRmMSA9ICdcKlwqXConOwoJCSRmMiA9
ICctLS0nOwoJfQoKCXdoaWxlICg8JGZoPikgewoJCWlmIChtfF4kZjEgJGN2c3Jvb3R8bykgewoJ
CQlzfCRjdnNyb290L3x8bzsKCQkJaWYgKCRzeW0xKSB7CgkJCQljaG9wOwoJCQkJJF8gLj0gIiAk
c3ltMVxuIjsKCQkJfQoJCX0gZWxzaWYgKG18XiRmMiAkY3Zzcm9vdHxvKSB7CgkJCXN8JGN2c3Jv
b3QvfHxvOwoKCQkJaWYgKCRzeW0yKSB7CgkJCQljaG9wOwoJCQkJJF8gLj0gIiAkc3ltMlxuIjsK
CQkJfQoJCX0KCQlwcmludCAkXzsKCX0KCWNsb3NlKCRmaCk7Cn0KCiMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMKIyBTaG93IExvZ3MgLi4KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIwpzdWIgZ2V0RGlyTG9ncygkJEApIHsKCW15ICgkY3Zzcm9vdCwgJGRpcm5hbWUsIEBvdGhl
ckZpbGVzKSA9IEBfOwoJbXkgKCRzdGF0ZSwgJG90aGVyRmlsZXMsICR0YWcsICRmaWxlLCAkZGF0
ZSwgJGJyYW5jaHBvaW50LCAkYnJhbmNoLAoJICAgICRsb2cpOwoJbXkgKCRyZXYsICRyZXZpc2lv
biwgJHJldndhbnRlZCwgJGZpbGVuYW1lLCAkaGVhZCwgJGF1dGhvcik7CgoJJHRhZyA9ICRpbnB1
dHtvbmx5X3dpdGhfdGFnfTsKCglteSAoJERpck5hbWUpID0gIiRjdnNyb290LyR3aGVyZSI7Cglt
eSAoQGZpbGVzLCBAZmlsZXRhZ3MpOwoJbXkgJGZoID0gZG8geyBsb2NhbCAoKkZIKTsgfTsKCglw
dXNoIChAZmlsZXMsICZzYWZlZ2xvYigiJERpck5hbWUvKix2IikpOwoJcHVzaCAoQGZpbGVzLCAm
c2FmZWdsb2IoIiREaXJOYW1lL0F0dGljLyosdiIpKQoJICAgIGlmICghJGlucHV0eydoaWRlYXR0
aWMnfSk7Cglmb3JlYWNoIG15ICRmaWxlIChAb3RoZXJGaWxlcykgewoJCXB1c2ggKEBmaWxlcywg
IiREaXJOYW1lLyRmaWxlIik7Cgl9CgoJIyBqdXN0IGV4ZWN1dGUgcmxvZyBpZiB0aGVyZSBhcmUg
YW55IGZpbGVzCglpZiAoJCNmaWxlcyA8IDApIHsKCQlyZXR1cm47Cgl9CgoJaWYgKGRlZmluZWQo
JHRhZykpIHsKCgkJI2Nhbid0IHVzZSAtcjx0YWc+IGFzIC0gaXMgYWxsb3dlZCBpbiB0YWduYW1l
cywgYnV0IG1pc2ludGVycHJlYXRlZCBieSBybG9nLi4KCQlpZiAoIW9wZW4oJGZoLCAiLXwiKSkg
eyAgICAjIGNoaWxkCgkJCW9wZW4oU1RERVJSLCAnPi9kZXYvbnVsbCcpOyAjIHJsb2cgbWF5IGNv
bXBsYWluOyBpZ25vcmUuCgkJCW9wZW5PdXRwdXRGaWx0ZXIoKTsKCQkJZXhlYygkQ01Ee3Jsb2d9
LCBAZmlsZXMpIG9yIGV4aXQgLTE7CgkJfQoJfSBlbHNlIHsKCgkJaWYgKCFvcGVuKCRmaCwgIi18
IikpIHsgICAgIyBjaGlsZAoJCQlvcGVuKFNUREVSUiwgJz4vZGV2L251bGwnKTsgIyBybG9nIG1h
eSBjb21wbGFpbjsgaWdub3JlLgoJCQlvcGVuT3V0cHV0RmlsdGVyKCk7CgkJCWV4ZWMoJENNRHty
bG9nfSwgJy1yJywgQGZpbGVzKSBvciBleGl0IC0xOwoJCX0KCX0KCSRzdGF0ZSA9ICJzdGFydCI7
CgoJd2hpbGUgKDwkZmg+KSB7CgkJaWYgKCRzdGF0ZSBlcSAic3RhcnQiKSB7CgoJCQkjTmV4dCBm
aWxlLiBJbml0aWFsaXplIGZpbGUgdmFyaWFibGVzCgkJCSRyZXYgICAgICAgICA9ICcnOwoJCQkk
cmV2d2FudGVkICAgPSAnJzsKCQkJJGJyYW5jaCAgICAgID0gJyc7CgkJCSRicmFuY2hwb2ludCA9
ICcnOwoJCQkkZmlsZW5hbWUgICAgPSAnJzsKCQkJJGxvZyAgICAgICAgID0gJyc7CgkJCSRyZXZp
c2lvbiAgICA9ICcnOwoJCQklc3ltcmV2ICAgICAgPSAoKTsKCQkJQGZpbGV0YWdzICAgID0gKCk7
CgoJCQkjanVtcCB0byBoZWFkIHN0YXRlCgkJCSRzdGF0ZSA9ICJoZWFkIjsKCQl9CgkJcHJpbnQg
IiRzdGF0ZTokXyIgaWYgKCR2ZXJib3NlKTsKCQlhZ2FpbjoKCgkJaWYgKCRzdGF0ZSBlcSAiaGVh
ZCIpIHsKCgkJCSMkcmNzZmlsZSA9ICQxIGlmICgvXlJDUyBmaWxlOiAoLispJC8pOyAjbm90IHVz
ZWQgKHlldCkKCgkJCWlmICgvXldvcmtpbmcgZmlsZTogKC4rKSQvKSB7CgkJCQkkZmlsZW5hbWUg
PSAkMTsKCQkJfSBlbHNpZiAoL15oZWFkOiAoLispJC8pIHsKCQkJCSRoZWFkID0gJDE7CgkJCX0g
ZWxzaWYgKC9eYnJhbmNoOiAoLispJC8pIHsKCQkJCSRicmFuY2ggPSAkMQoJCQl9IGVsc2lmICgv
XnN5bWJvbGljIG5hbWVzOi8pIHsKCQkJCSRzdGF0ZSA9ICJ0YWdzIjsKCQkJCSgkYnJhbmNoID0g
JGhlYWQpID1+IHMvXC5cZCskLy8KCQkJCSAgICBpZiAkYnJhbmNoIGVxICcnOwoJCQkJJGJyYW5j
aCA9fiBzLyhcZCspJC8wLiQxLzsKCQkJCSRzeW1yZXZ7TUFJTn0gID0gJGJyYW5jaDsKCQkJCSRz
eW1yZXZ7SEVBRH0gID0gJGJyYW5jaDsKCQkJCSRhbGx0YWdze01BSU59ID0gMTsKCQkJCSRhbGx0
YWdze0hFQUR9ID0gMTsKCQkJCXB1c2ggKEBmaWxldGFncywgIk1BSU4iLCAiSEVBRCIpOwoJCQl9
IGVsc2lmICgvJExPR19SRVZTRVBBUkFUT1IvbykgewoJCQkJJHN0YXRlID0gImxvZyI7CgkJCQkk
cmV2ICAgPSAnJzsKCQkJCSRkYXRlICA9ICcnOwoJCQkJJGxvZyAgID0gJyc7CgoJCQkJIyBUcnkg
dG8gcmVjb25zdHJ1Y3QgdGhlIHJlbGF0aXZlIGZpbGVuYW1lIGlmIFJDUyBzcGl0cyBvdXQgYSBm
dWxsIHBhdGgKCQkJCSRmaWxlbmFtZSA9fiBzJV5cUSREaXJOYW1lXEUvJSU7CgkJCX0KCQkJbmV4
dDsKCQl9CgoJCWlmICgkc3RhdGUgZXEgInRhZ3MiKSB7CgkJCWlmICgvXlxzKyhbXjpdKyk6XHMr
KFtcZFwuXSspXHMqJC8pIHsKCQkJCXB1c2ggKEBmaWxldGFncywgJDEpOwoJCQkJJHN5bXJldnsk
MX0gID0gJDI7CgkJCQkkYWxsdGFnc3skMX0gPSAxOwoJCQkJbmV4dDsKCQkJfSBlbHNpZiAoL15c
Uy8pIHsKCgkJCQlpZiAoZGVmaW5lZCgkdGFnKSkgewoJCQkJCWlmIChkZWZpbmVkKCRzeW1yZXZ7
JHRhZ30pCgkJCQkJICAgIHx8ICR0YWcgZXEgIkhFQUQiKQoJCQkJCXsKCQkJCQkJJHJldndhbnRl
ZCA9CgkJCQkJCSAgICAkc3ltcmV2eyR0YWcgZXEgIkhFQUQiID8KCQkJCQkJICAgICJNQUlOIiA6
ICR0YWd9OwoJCQkJCQkoJGJyYW5jaCA9ICRyZXZ3YW50ZWQpID1+CgkJCQkJCSAgICBzL1xiMFwu
Ly87CgkJCQkJCSgkYnJhbmNocG9pbnQgPSAkYnJhbmNoKSA9fgoJCQkJCQkgICAgcy9cLj9cZCsk
Ly87CgkJCQkJCSRyZXZ3YW50ZWQgPSAnJwoJCQkJCQkgICAgaWYgKCRyZXZ3YW50ZWQgbmUgJGJy
YW5jaCk7CgkJCQkJfSBlbHNpZiAoJHRhZyBuZSAiSEVBRCIpIHsKCQkJCQkJcHJpbnQKCQkJCQkJ
ICAgICJUYWcgbm90IGZvdW5kLCBza2lwIHRoaXMgZmlsZSIKCQkJCQkJICAgIGlmICgkdmVyYm9z
ZSk7CgkJCQkJCSRzdGF0ZSA9ICJza2lwIjsKCQkJCQkJbmV4dDsKCQkJCQl9CgkJCQl9CgoJCQkJ
Zm9yZWFjaCBteSAkdGFnZm91bmQgKEBmaWxldGFncykgewoJCQkJCSR0YWdzeyR0YWdmb3VuZH0g
PSAxOwoJCQkJfQoJCQkJJHN0YXRlID0gImhlYWQiOwoJCQkJZ290byBhZ2FpbjsKCQkJfQoJCX0K
CgkJaWYgKCRzdGF0ZSBlcSAibG9nIikgewoJCQlpZiAoLyRMT0dfUkVWU0VQQVJBVE9SL28gfHwg
LyRMT0dfRklMRVNFUEFSQVRPUi9vKSB7CgoJCQkJIyBFbmQgb2YgYSBsb2cgZW50cnkuCgkJCQlt
eSAkcmV2YnJhbmNoID0gJHJldjsKCQkJCSRyZXZicmFuY2ggPX4gcy9cLlxkKyQvLzsKCQkJCXBy
aW50ICIkZmlsZW5hbWUgJHJldiBXYW50ZWQ6ICRyZXZ3YW50ZWQgIiwKCQkJCSAgICAiUmV2YnJh
bmNoOiAkcmV2YnJhbmNoIEJyYW5jaDogJGJyYW5jaCAiLAoJCQkJICAgICJCcmFuY2hwb2ludDog
JGJyYW5jaHBvaW50XG4iCgkJCQkgICAgaWYgKCR2ZXJib3NlKTsKCgkJCQlpZiAoJHJldndhbnRl
ZCBlcSAnJyAmJiAkYnJhbmNoIG5lICcnCgkJCQkgICAgJiYgJGJyYW5jaCBlcSAkcmV2YnJhbmNo
IHx8ICFkZWZpbmVkKCR0YWcpKQoJCQkJewoJCQkJCXByaW50CgkJCQkJICAgICJGaWxlIHJldmlz
aW9uICRyZXYgZm91bmQgZm9yIGJyYW5jaCAkYnJhbmNoXG4iCgkJCQkJICAgIGlmICgkdmVyYm9z
ZSk7CgkJCQkJJHJldndhbnRlZCA9ICRyZXY7CgkJCQl9CgoJCQkJaWYgKCRyZXZ3YW50ZWQgbmUg
JycgPyAkcmV2IGVxICRyZXZ3YW50ZWQgOgoJCQkJICAgICRicmFuY2hwb2ludCBuZSAnJyA/ICRy
ZXYgZXEgJGJyYW5jaHBvaW50IDoKCQkJCSAgICAwICYmICgkcmV2IGVxICRoZWFkKSkKCQkJCXsg
ICAgIyBEb24ndCB0aGluayBoZWFkIGlzIG5lZWRlZCBoZXJlLi4KCQkJCQlwcmludAoJCQkJCSAg
ICAiRmlsZSBpbmZvICRyZXYgZm91bmQgZm9yICRmaWxlbmFtZVxuIgoJCQkJCSAgICBpZiAoJHZl
cmJvc2UpOwoJCQkJCW15IEBmaW5mbyA9CgkJCQkJICAgICgkcmV2LCAkZGF0ZSwgJGxvZywgJGF1
dGhvciwKCQkJCQkJJGZpbGVuYW1lKTsKCQkJCQlteSAoJG5hbWUpOwoJCQkJCSgkbmFtZSA9ICRm
aWxlbmFtZSkgPX4gcyUvLiolJTsKCQkJCQkkZmlsZWluZm97JG5hbWV9ID0gW0BmaW5mb107CgkJ
CQkJJHN0YXRlID0gImRvbmUiIGlmICgkcmV2IGVxICRyZXZ3YW50ZWQpOwoJCQkJfQoJCQkJJHJl
diAgPSAnJzsKCQkJCSRkYXRlID0gJyc7CgkJCQkkbG9nICA9ICcnOwoJCQl9IGVsc2lmICgkZGF0
ZSBlcSAnJwoJCQkgICAgJiYgbXxeZGF0ZTpccysoXGQrKS8oXGQrKS8oXGQrKVxzKyhcZCspOihc
ZCspOihcZCspO3wKCQkJICAgICkKCQkJewoJCQkJbXkgJHlyID0gJDE7CgoJCQkJIyBkYW1uIDIt
ZGlnaXQgeWVhciByb3V0aW5lcyA6LSkKCQkJCWlmICgkeXIgPiAxMDApIHsKCQkJCQkkeXIgLT0g
MTkwMDsKCQkJCX0KCQkJCSRkYXRlID0KCQkJCSAgICAmVGltZTo6TG9jYWw6OnRpbWVnbSgkNiwg
JDUsICQ0LCAkMywgJDIgLSAxLAoJCQkJCSR5cik7CgkJCQkoJGF1dGhvcikgPSAvYXV0aG9yOiAo
W147XSspLzsKCQkJCSRzdGF0ZSA9ICJsb2ciOwoJCQkJJGxvZyAgID0gJyc7CgkJCQluZXh0OwoJ
CQl9IGVsc2lmICgkcmV2IGVxICcnICYmIC9ecmV2aXNpb24gKFxkKyg/OlwuXGQrKSspLiokLykg
ewoJCQkJJHJldiA9ICQxOyAjIC4qJCBlYXRzIHVwIHRoZSBsb2NrZXIobG9ja2Vycz8pIGluZm8s
IGlmIGFueQoJCQkJbmV4dDsKCQkJfSBlbHNlIHsKCQkJCSRsb2cgLj0gJF87CgkJCX0KCQl9CgoJ
CWlmICgvJExPR19GSUxFU0VQQVJBVE9SL28pIHsKCQkJJHN0YXRlID0gInN0YXJ0IjsKCQkJbmV4
dDsKCQl9Cgl9CgoJaWYgKCQuID09IDApIHsKCQlmYXRhbCgiNTAwIEludGVybmFsIEVycm9yIiwK
CQkgICAgICAnRmFpbGVkIHRvIHNwYXduIEdOVSBybG9nIG9uIDxlbT4iJXMiPC9lbT4uICA8cD5E
aWQgeW91IHNldCB0aGUgPGI+JGNvbW1hbmRfcGF0aDwvYj4gaW4geW91ciBjb25maWd1cmF0aW9u
IGZpbGUgY29ycmVjdGx5ID8gKEN1cnJlbnRseSAiJXMiJywKCQkgICAgICBqb2luICgiLCAiLCBA
ZmlsZXMpLCAkY29tbWFuZF9wYXRoKTsKCX0KCWNsb3NlKCRmaCk7Cn0KCnN1YiByZWFkTG9nKCQ7
JCkgewoJbXkgKCRmdWxsbmFtZSwgJHJldmlzaW9uKSA9IEBfOwoJbXkgKCRzeW1uYW1lcywgJGhl
YWQsICRyZXYsICRiciwgJGJycCwgJGJyYW5jaCwgJGJyYW5jaHJldik7CglteSAkZmggPSBkbyB7
IGxvY2FsICgqRkgpOyB9OwoKCWlmIChkZWZpbmVkKCRyZXZpc2lvbikpIHsKCQkkcmV2aXNpb24g
PSAiLXIkcmV2aXNpb24iOwoJfSBlbHNlIHsKCQkkcmV2aXNpb24gPSAiIjsKCX0KCgl1bmRlZiAl
c3ltcmV2OwoJdW5kZWYgJXJldnN5bTsKCXVuZGVmIEBhbGxyZXZpc2lvbnM7Cgl1bmRlZiAlZGF0
ZTsKCXVuZGVmICVhdXRob3I7Cgl1bmRlZiAlc3RhdGU7Cgl1bmRlZiAlZGlmZmxpbmVzOwoJdW5k
ZWYgJWxvZzsKCglwcmludCgiR29pbmcgdG8gcmxvZyAnJGZ1bGxuYW1lJ1xuIikgaWYgKCR2ZXJi
b3NlKTsKCWlmICghb3BlbigkZmgsICItfCIpKSB7ICAgICMgY2hpbGQKCQlpZiAoJHJldmlzaW9u
IG5lICcnKSB7CgkJCW9wZW5PdXRwdXRGaWx0ZXIoKTsKCQkJZXhlYygkQ01Ee3Jsb2d9LCAkcmV2
aXNpb24sICRmdWxsbmFtZSkgb3IgZXhpdCAtMTsKCQl9IGVsc2UgewoJCQlvcGVuT3V0cHV0Rmls
dGVyKCk7CgkJCWV4ZWMoJENNRHtybG9nfSwgJGZ1bGxuYW1lKSBvciBleGl0IC0xOwoJCX0KCX0K
Cgl3aGlsZSAoPCRmaD4pIHsKCQlwcmludCBpZiAoJHZlcmJvc2UpOwoJCWlmICgkc3ltbmFtZXMp
IHsKCQkJaWYgKC9eXHMrKFteOl0rKTpccysoW1xkXC5dKykvKSB7CgkJCQkkc3ltcmV2eyQxfSA9
ICQyOwoJCQl9IGVsc2UgewoJCQkJJHN5bW5hbWVzID0gMDsKCQkJfQoJCX0gZWxzaWYgKC9eaGVh
ZDpccysoW1xkXC5dKykvKSB7CgkJCSRoZWFkID0gJDE7CgkJfSBlbHNpZiAoL15icmFuY2g6XHMr
KFtcZFwuXSspLykgewoJCQkkY3VyYnJhbmNoID0gJDE7CgkJfSBlbHNpZiAoL15zeW1ib2xpYyBu
YW1lcy8pIHsKCQkJJHN5bW5hbWVzID0gMTsKCQl9IGVsc2lmICgvXi0tLS0tLykgewoJCQlsYXN0
OwoJCX0KCX0KCSgkY3VyYnJhbmNoID0gJGhlYWQpID1+IHMvXC5cZCskLy8gaWYgKCFkZWZpbmVk
KCRjdXJicmFuY2gpKTsKCgkjIGVhY2ggbG9nIGVudHJ5IGlzIG9mIHRoZSBmb3JtOgoJIyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkjIHJldmlzaW9uIDMuNy4xLjEKCSMgZGF0ZTogMTk5
NS8xMS8yOSAyMjoxNTo1MjsgIGF1dGhvcjogZmVubmVyOyAgc3RhdGU6IEV4cDsgIGxpbmVzOiAr
NSAtMwoJIyBsb2cgaW5mbwoJIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJIyBGb3Ig
YSBsb2NrZWQgcmV2aXNpb24sIHRoZSBmaXJzdCBsaW5lIGFmdGVyIHRoZSBzZXBhcmF0b3IgCgkj
IGJlY29tZXMgc210aCBsaWtlCgkjIHJldmlzaW9uIDkuMTkJbG9ja2VkIGJ5OiB2YXNzaWxpaTsK
Cglsb2dlbnRyeToKCgl3aGlsZSAoIS8kTE9HX0ZJTEVTRVBBUkFUT1IvbykgewoJCSRfID0gPCRm
aD47CgkJbGFzdCBsb2dlbnRyeSBpZiAoIWRlZmluZWQoJF8pKTsgICAgIyBFT0YKCQlwcmludCAi
UjoiLCAkXyBpZiAoJHZlcmJvc2UpOwoJCWlmICgvXnJldmlzaW9uIChcZCsoPzpcLlxkKykrKS8p
IHsKCQkJJHJldiA9ICQxOwoJCQl1bnNoaWZ0IChAYWxscmV2aXNpb25zLCAkcmV2KTsKCQl9IGVs
c2lmICgvJExPR19GSUxFU0VQQVJBVE9SL28gfHwgLyRMT0dfUkVWU0VQQVJBVE9SL28pIHsKCQkJ
bmV4dCBsb2dlbnRyeTsKCQl9IGVsc2UgewoKCQkJIyBUaGUgcmxvZyBvdXRwdXQgaXMgc3ludGFj
dGljYWxseSBhbWJpZ3VvdXMuICBXZSBtdXN0CgkJCSMgaGF2ZSBndWVzc2VkIHdyb25nIGFib3V0
IHdoZXJlIHRoZSBlbmQgb2YgdGhlIGxhc3QgbG9nCgkJCSMgbWVzc2FnZSB3YXMuCgkJCSMgU2lu
Y2UgdGhpcyBpcyBsaWtlbHkgdG8gaGFwcGVuIHdoZW4gcGVvcGxlIHB1dCBybG9nIG91dHB1dAoJ
CQkjIGluIHRoZWlyIGNvbW1pdCBtZXNzYWdlcywgZG9uJ3QgZXZlbiBib3RoZXIga2VlcGluZwoJ
CQkjIHRoZXNlIGxpbmVzIHNpbmNlIHdlIGRvbid0IGtub3cgd2hhdCByZXZpc2lvbiB0aGV5IGdv
IHdpdGgKCQkJIyBhbnkgbW9yZS4KCQkJbmV4dCBsb2dlbnRyeTsKCQl9CgkJJF8gPSA8JGZoPjsK
CQlwcmludCAiRDoiLCAkXyBpZiAoJHZlcmJvc2UpOwoJCWlmICgKCQkgICAgbXxeZGF0ZTpccyso
XGQrKS8oXGQrKS8oXGQrKVxzKyhcZCspOihcZCspOihcZCspO1xzK2F1dGhvcjpccysoXFMrKTtc
cytzdGF0ZTpccysoXFMrKTtccysobGluZXM6XHMrKFswLTlccystXSspKT98CgkJICAgICkKCQl7
CgkJCW15ICR5ciA9ICQxOwoKCQkJIyBkYW1uIDItZGlnaXQgeWVhciByb3V0aW5lcyA6LSkKCQkJ
aWYgKCR5ciA+IDEwMCkgewoJCQkJJHlyIC09IDE5MDA7CgkJCX0KCQkJJGRhdGV7JHJldn0gPQoJ
CQkgICAgJlRpbWU6OkxvY2FsOjp0aW1lZ20oJDYsICQ1LCAkNCwgJDMsICQyIC0gMSwgJHlyKTsK
CQkJJGF1dGhvcnskcmV2fSAgICA9ICQ3OwoJCQkkc3RhdGV7JHJldn0gICAgID0gJDg7CgkJCSRk
aWZmbGluZXN7JHJldn0gPSAkMTA7CgkJfSBlbHNlIHsKCQkJZmF0YWwoIjUwMCBJbnRlcm5hbCBF
cnJvciIsCgkJCSAgICAgICdFcnJvciBwYXJzaW5nIFJDUyBvdXRwdXQ6ICVzJywKCQkJICAgICAg
JF8pOwoJCX0KCQlsaW5lOgoKCQl3aGlsZSAoPCRmaD4pIHsKCQkJcHJpbnQgIkw6IiwgJF8gaWYg
KCR2ZXJib3NlKTsKCQkJbmV4dCBsaW5lIGlmICgvXmJyYW5jaGVzOlxzLyk7CgkJCWxhc3QgbGlu
ZQoJCQkgICAgaWYgKC8kTE9HX0ZJTEVTRVBBUkFUT1IvbyB8fCAvJExPR19SRVZTRVBBUkFUT1Iv
byk7CgkJCSRsb2d7JHJldn0gLj0gJF87CgkJfQoJCXByaW50ICJFOiIsICRfIGlmICgkdmVyYm9z
ZSk7Cgl9CgljbG9zZSgkZmgpOwoJcHJpbnQgIkRvbmUgcmVhZGluZyBSQ1MgZmlsZVxuIiBpZiAo
JHZlcmJvc2UpOwoKCUByZXZvcmRlciA9IHJldmVyc2Ugc29ydCB7IHJldmNtcCgkYSwgJGIpIH0g
QGFsbHJldmlzaW9uczsKCXByaW50ICJEb25lIHNvcnRpbmcgcmV2aXNpb25zIiwgam9pbiAoIiAi
LCBAcmV2b3JkZXIpLCAiXG4iCgkgICAgaWYgKCR2ZXJib3NlKTsKCgkjCgkjIEhFQUQgaXMgYW4g
YXJ0aWZpY2lhbCB0YWcgd2hpY2ggaXMgc2ltcGx5IHRoZSBoaWdoZXN0IHRhZyBudW1iZXIgb24g
dGhlIG1haW4KCSMgYnJhbmNoLCB1bmxlc3MgdGhlcmUgaXMgYSBicmFuY2ggdGFnIGluIHRoZSBS
Q1MgZmlsZSBpbiB3aGljaCBjYXNlIGl0J3MgdGhlCgkjIGhpZ2hlc3QgcmV2aXNpb24gb24gdGhh
dCBicmFuY2guICBGaW5kIGl0IGJ5IGxvb2tpbmcgdGhyb3VnaCBAcmV2b3JkZXI7IGl0CgkjIGlz
IHRoZSBmaXJzdCBjb21taXQgbGlzdGVkIG9uIHRoZSBhcHByb3ByaWF0ZSBicmFuY2guCgkjIFRo
aXMgaXMgbm90IG5lY2Nlc2FyeSB0aGUgc2FtZSByZXZpc2lvbiBhcyBtYXJrZWQgYXMgaGVhZCBp
biB0aGUgUkNTIGZpbGUuCglteSAkaGVhZHJldiA9ICRjdXJicmFuY2ggfHwgIjEiOwoJKCRzeW1y
ZXZ7Ik1BSU4ifSA9ICRoZWFkcmV2KSA9fiBzLyhcZCspJC8wLiQxLzsKCglmb3JlYWNoICRyZXYg
KEByZXZvcmRlcikgewoJCWlmICgkcmV2ID1+IC9eKFxTKilcLlxkKyQvICYmICRoZWFkcmV2IGVx
ICQxKSB7CgkJCSRzeW1yZXZ7IkhFQUQifSA9ICRyZXY7CgkJCWxhc3Q7CgkJfQoJfQoJKCRzeW1y
ZXZ7IkhFQUQifSA9ICRoZWFkcmV2KSA9fiBzL1wuXGQrJC8vCgkgICAgaWYgKCFkZWZpbmVkKCRz
eW1yZXZ7IkhFQUQifSkpOwoJcHJpbnQgIkRvbmUgZmluZGluZyBIRUFEXG4iIGlmICgkdmVyYm9z
ZSk7CgoJIwoJIyBOb3cgdGhhdCB3ZSBrbm93IGFsbCBvZiB0aGUgcmV2aXNpb24gbnVtYmVycywg
d2UgY2FuIGFzc29jaWF0ZQoJIyBhYnNvbHV0ZSByZXZpc2lvbiBudW1iZXJzIHdpdGggYWxsIG9m
IHRoZSBzeW1ib2xpYyBuYW1lcywgYW5kCgkjIHBhc3MgdGhlbSB0byB0aGUgZm9ybSBzbyB0aGF0
IHRoZSBzYW1lIGFzc29jaWF0aW9uIGRvZXNuJ3QgaGF2ZQoJIyB0byBiZSBidWlsdCB0aGVuLgoJ
IwoJdW5kZWYgQGJyYW5jaG5hbWVzOwoJdW5kZWYgJWJyYW5jaHBvaW50OwoJdW5kZWYgJHNlbDsK
Cglmb3JlYWNoIChyZXZlcnNlIHNvcnQga2V5cyAlc3ltcmV2KSB7CgkJJHJldiA9ICRzeW1yZXZ7
JF99OwoJCWlmICgkcmV2ID1+IC9eKCguKilcLik/XGIwXC4oXGQrKSQvKSB7CgkJCXB1c2ggKEBi
cmFuY2huYW1lcywgJF8pOwoKCQkJIwoJCQkjIEEgcmV2aXNpb24gbnVtYmVyIG9mIEEuQi4wLkQg
cmVhbGx5IHRyYW5zbGF0ZXMgaW50bwoJCQkjICJ0aGUgaGlnaGVzdCBjdXJyZW50IHJldmlzaW9u
IG9uIGJyYW5jaCBBLkIuRCIuCgkJCSMKCQkJIyBJZiB0aGVyZSBpcyBubyBicmFuY2ggQS5CLkQs
IHRoZW4gaXQgdHJhbnNsYXRlcyBpbnRvCgkJCSMgdGhlIGhlYWQgQS5CIC4KCQkJIwoJCQkjIFRo
aXMgcmVhc29uaW5nIGFsc28gYXBwbGllcyB0byB0aGUgbWFpbiBicmFuY2ggQS5CLAoJCQkjIHdp
dGggdGhlIGJyYW5jaCBudW1iZXIgMC5BLCB3aXRoIHRoZSBleGNlcHRpb24gdGhhdAoJCQkjIGl0
IGhhcyBubyBoZWFkIHRvIHRyYW5zbGF0ZSB0byBpZiB0aGVyZSBpcyBub3RoaW5nIG9uCgkJCSMg
dGhlIGJyYW5jaCwgYnV0IEkgZ3Vlc3MgdGhpcyBjYW4gbmV2ZXIgaGFwcGVuPwoJCQkjCgkJCSMg
KHRoZSBjb2RlIGJlbG93IGdyYWNlZnVsbHkgZm9yZ2V0cyBhYm91dCB0aGUgYnJhbmNoCgkJCSMg
aWYgaXQgc2hvdWxkIGhhcHBlbikKCQkJIwoJCQkkaGVhZCA9IGRlZmluZWQoJDIpID8gJDIgOiAi
IjsKCQkJJGJyYW5jaCA9ICQzOwoJCQkkYnJhbmNocmV2ID0gJGhlYWQgLiAoJGhlYWQgbmUgIiIg
PyAiLiIgOiAiIikgLiAkYnJhbmNoOwoJCQlteSAkcmVnZXg7CgkJCSRyZWdleCA9IHF1b3RlbWV0
YSAkYnJhbmNocmV2OwoJCQkkcmV2ICAgPSAkaGVhZDsKCgkJCWZvcmVhY2ggbXkgJHIgKEByZXZv
cmRlcikgewoJCQkJaWYgKCRyID1+IC9eJHtyZWdleH1cYi8pIHsKCQkJCQkkcmV2ID0gJGJyYW5j
aHJldjsKCQkJCQlsYXN0OwoJCQkJfQoJCQl9CgkJCW5leHQgaWYgKCRyZXYgZXEgIiIpOwoKCQkJ
aWYgKCRyZXYgbmUgJGhlYWQgJiYgJGhlYWQgbmUgIiIpIHsKCQkJCSRicmFuY2hwb2ludHskaGVh
ZH0gLj0gIiwgIgoJCQkJICAgIGlmICgkYnJhbmNocG9pbnR7JGhlYWR9KTsKCQkJCSRicmFuY2hw
b2ludHskaGVhZH0gLj0gJF87CgkJCX0KCQl9CgkJJHJldnN5bXskcmV2fSAuPSAiLCAiIGlmICgk
cmV2c3lteyRyZXZ9KTsKCQkkcmV2c3lteyRyZXZ9IC49ICRfOwoJCSRzZWwgLj0gIjxvcHRpb24g
dmFsdWU9XCIke3Jldn06JHtffVwiPiRfPC9vcHRpb24+XG4iOwoJfQoJcHJpbnQgIkRvbmUgYXNz
b2NpYXRpbmcgcmV2aXNpb25zIHdpdGggYnJhbmNoZXNcbiIgaWYgKCR2ZXJib3NlKTsKCglteSAo
JG9ubHlvbmJyYW5jaCwgJG9ubHlicmFuY2hwb2ludCk7CglpZiAoJG9ubHlvbmJyYW5jaCA9ICRp
bnB1dHsnb25seV93aXRoX3RhZyd9KSB7CgkJJG9ubHlvbmJyYW5jaCA9ICRzeW1yZXZ7JG9ubHlv
bmJyYW5jaH07CgkJaWYgKCRvbmx5b25icmFuY2ggPX4gcy9cYjBcLi8vKSB7CgkJCSgkb25seWJy
YW5jaHBvaW50ID0gJG9ubHlvbmJyYW5jaCkgPX4gcy9cLlxkKyQvLzsKCQl9IGVsc2UgewoJCQkk
b25seWJyYW5jaHBvaW50ID0gJG9ubHlvbmJyYW5jaDsKCQl9CgoJCWlmICghZGVmaW5lZCgkb25s
eW9uYnJhbmNoKSB8fCAkb25seWJyYW5jaHBvaW50IGVxICIiKSB7CgkJCWZhdGFsKCI0MDQgVGFn
IG5vdCBmb3VuZCIsCgkJCSAgICAgICdUYWcgJXMgbm90IGRlZmluZWQnLAoJCQkgICAgICAkaW5w
dXR7J29ubHlfd2l0aF90YWcnfSk7CgkJfQoJfQoKCXVuZGVmIEByZXZpc2lvbnM7CgoJZm9yZWFj
aCAoQGFsbHJldmlzaW9ucykgewoJCSgkYnIgID0gJF8pICA9fiBzL1wuXGQrJC8vOwoJCSgkYnJw
ID0gJGJyKSA9fiBzL1wuXGQrJC8vOwoJCW5leHQKCQkgICAgaWYgKCRvbmx5b25icmFuY2ggJiYg
JGJyIG5lICRvbmx5b25icmFuY2gKCQkgICAgJiYgJF8gbmUgJG9ubHlicmFuY2hwb2ludCk7CgkJ
dW5zaGlmdCAoQHJldmlzaW9ucywgJF8pOwoJfQoKCWlmICgkbG9nc29ydCBlcSAiZGF0ZSIpIHsK
CgkJIyBTb3J0IHRoZSByZXZpc2lvbnMgaW4gY29tbWl0IG9yZGVyIGFuIHNlY29uZGFyeSBzb3J0
IG9uIHJldmlzaW9uCgkJIyAoc2Vjb25kYXJ5IHNvcnQgbmVlZGVkIGZvciBpbXBvcnRlZCBzb3Vy
Y2VzLCBvciB0aGUgZmlyc3QgbWFpbgoJCSMgcmV2aXNpb24gZ2V0cyBiZWZvcmUgdGhlIHNhbWUg
cmV2aXNpb24gb24gdGhlIDEuMS4xIGJyYW5jaCkKCQlAcmV2ZGlzcGxheW9yZGVyID0KCQkgICAg
c29ydCB7ICRkYXRleyRifSA8PT4gJGRhdGV7JGF9IHx8IC1yZXZjbXAoJGEsICRiKSB9CgkJICAg
IEByZXZpc2lvbnM7Cgl9IGVsc2lmICgkbG9nc29ydCBlcSAicmV2IikgewoKCQkjIFNvcnQgdGhl
IHJldmlzaW9ucyBpbiByZXZpc2lvbiBvcmRlciwgaGlnaGVzdCBmaXJzdAoJCUByZXZkaXNwbGF5
b3JkZXIgPSByZXZlcnNlIHNvcnQgeyByZXZjbXAoJGEsICRiKSB9IEByZXZpc2lvbnM7Cgl9IGVs
c2UgewoKCQkjIE5vIHNvcnRpbmcuIFByZXNlbnQgaW4gdGhlIHNhbWUgb3JkZXIgYXMgcmxvZyAv
IGN2cyBsb2cKCQlAcmV2ZGlzcGxheW9yZGVyID0gQHJldmlzaW9uczsKCX0KCn0KCnN1YiBwcmlu
dERpZmZMaW5rcygkJCkgewoJbXkgKCR0ZXh0LCAkdXJsKSA9IEBfOwoJbXkgQGV4dHJhOwoKCWxv
Y2FsICRfOwoJZm9yICgkRElGRlRZUEVTeyRkZWZhdWx0RGlmZlR5cGV9eydjb2xvcmVkJ30gPyBx
dyh1KSA6IHF3KGgpKSB7CgkJbXkgJGYgPSAkXyBlcSAkZGVmYXVsdERpZmZUeXBlID8gJycgOiAk
XzsKCgkJcHVzaCBAZXh0cmEsICZsaW5rKGxjICRESUZGVFlQRVN7JF99eydkZXNjcid9LCAiJHVy
bCZmPSRmIik7Cgl9CgoJcHJpbnQgJmxpbmsoJHRleHQsICR1cmwpLCAnICgnLCBqb2luICgnLCAn
LCBAZXh0cmEpLCAnKSc7Cn0KCnN1YiBwcmludExvZygkOyQpIHsKCW15ICgkbGluaywgJGJyLCAk
YnJwKTsKCSgkXywgJGxpbmspID0gQF87CgkoJGJyICA9ICRfKSAgPX4gcy9cLlxkKyQvLzsKCSgk
YnJwID0gJGJyKSA9fiBzL1wuP1xkKyQvLzsKCW15ICgkaXNEZWFkLCAkcHJldik7CgoJJGxpbmsg
PSAxIGlmICghZGVmaW5lZCgkbGluaykpOwoJJGlzRGVhZCA9ICgkc3RhdGV7JF99IGVxICJkZWFk
Iik7CgoJcHJpbnQgIjxwPlxuIjsKCWlmICgkbGluayAmJiAhJGlzRGVhZCkgewoJCW15ICgkZmls
ZW5hbWUpOwoJCSgkZmlsZW5hbWUgPSAkd2hlcmUpID1+IHMvXi4qXC8vLzsKCQlteSAoJGZpbGV1
cmwpID0gdXJsZW5jb2RlKCRmaWxlbmFtZSk7CgkJcHJpbnQgIjxhIG5hbWU9XCJyZXYkX1wiPjwv
YT4iOwoKCQlpZiAoZGVmaW5lZCgkcmV2c3lteyRffSkpIHsKCQkJZm9yZWFjaCBteSAkc3ltIChz
cGxpdCAoIiwgIiwgJHJldnN5bXskX30pKSB7CgkJCQlwcmludCAiPGEgbmFtZT1cIiRzeW1cIj48
L2E+IjsKCQkJfQoJCX0KCgkJaWYgKGRlZmluZWQoJHJldnN5bXskYnJ9KSAmJiAkcmV2c3lteyRi
cn0KCQkgICAgJiYgIWRlZmluZWQoJG5hbWVwcmludGVkeyRicn0pKQoJCXsKCQkJZm9yZWFjaCBt
eSAkc3ltIChzcGxpdCAoIiwgIiwgJHJldnN5bXskYnJ9KSkgewoJCQkJcHJpbnQgIjxhIG5hbWU9
XCIkc3ltXCI+PC9hPiI7CgkJCX0KCQkJJG5hbWVwcmludGVkeyRicn0gPSAxOwoJCX0KCQlwcmlu
dCAiXG4gUmV2aXNpb24gIjsKCQkmZG93bmxvYWRfbGluaygkZmlsZXVybCwgJF8sICRfLAoJCQkk
ZGVmYXVsdFZpZXdhYmxlID8gInRleHQveC1jdnN3ZWItbWFya3VwIiA6IHVuZGVmKTsKCgkJaWYg
KCRkZWZhdWx0Vmlld2FibGUpIHsKCQkJcHJpbnQgIiAvICgiOwoJCQkmZG93bmxvYWRfbGluaygk
ZmlsZXVybCwgJF8sICJkb3dubG9hZCIsICRtaW1ldHlwZSk7CgkJCXByaW50ICIpIjsKCQl9CgoJ
CWlmIChub3QgJGRlZmF1bHRUZXh0UGxhaW4pIHsKCQkJcHJpbnQgIiAvICgiOwoJCQkmZG93bmxv
YWRfbGluaygkZmlsZXVybCwgJF8sICJhcyB0ZXh0IiwgInRleHQvcGxhaW4iKTsKCQkJcHJpbnQg
IikiOwoJCX0KCgkJaWYgKCEkZGVmYXVsdFZpZXdhYmxlKSB7CgkJCXByaW50ICIgLyAoIjsKCQkJ
JmRvd25sb2FkX2xpbmsoJGZpbGV1cmwsICRfLCAidmlldyIsCgkJCQkidGV4dC94LWN2c3dlYi1t
YXJrdXAiKTsKCQkJcHJpbnQgIikiOwoJCX0KCgkJaWYgKCRhbGxvd19hbm5vdGF0ZSkgewoJCQlw
cmludCAiIC0gIjsKCQkJcHJpbnQgJmxpbmsoCgkJCQknYW5ub3RhdGUnLAoJCQkJc3ByaW50ZigK
CQkJCQknJXMvJXM/YW5ub3RhdGU9JXMlcycsICRzY3JpcHRuYW1lLAoJCQkJCXVybGVuY29kZSgk
d2hlcmUpLCAgICAgJF8sCgkJCQkJJGJhcmVxdWVyeQoJCQkJKQoJCQkpOwoJCX0KCgkJIyBQbHVz
IGEgc2VsZWN0IGxpbmsgaWYgZW5hYmxlZCwgYW5kIHRoaXMgdmVyc2lvbiBpc24ndCBzZWxlY3Rl
ZAoJCWlmICgkYWxsb3dfdmVyc2lvbl9zZWxlY3QpIHsKCQkJaWYgKCghZGVmaW5lZCgkaW5wdXR7
InIxIn0pIHx8ICRpbnB1dHsicjEifSBuZSAkXykpIHsKCQkJCXByaW50ICIgLSAiOwoJCQkJcHJp
bnQgJmxpbmsoCgkJCQkJJ1tzZWxlY3QgZm9yIGRpZmZzXScsCgkJCQkJc3ByaW50ZigKCQkJCQkJ
JyVzP3IxPSVzJXMnLCAkc2NyaXB0d2hlcmUsCgkJCQkJCSRfLCAgICAgICAgICAgJGJhcmVxdWVy
eQoJCQkJCSkKCQkJCSk7CgkJCX0gZWxzZSB7CgkJCQlwcmludCAiIC0gPGI+W3NlbGVjdGVkXTwv
Yj4iOwoJCQl9CgkJfQoJfSBlbHNlIHsKCQlwcmludCAiUmV2aXNpb24gPGI+JF88L2I+IjsKCX0K
CglpZiAoL14xXC4xXC4xXC5cZCskLykgewoJCXByaW50ICIgPGk+KHZlbmRvciBicmFuY2gpPC9p
PiI7Cgl9CglpZiAoZGVmaW5lZCBAbXl0eikgewoJCW15ICgkZXN0KSA9ICRteXR6Wyhsb2NhbHRp
bWUoJGRhdGV7JF99KSlbOF1dOwoJCXByaW50ICIsIDxpPiIsIHNjYWxhciBsb2NhbHRpbWUoJGRh
dGV7JF99KSwgIiAkZXN0PC9pPiAoIjsKCX0gZWxzZSB7CgkJcHJpbnQgIiwgPGk+Iiwgc2NhbGFy
IGdtdGltZSgkZGF0ZXskX30pLCAiIFVUQzwvaT4gKCI7Cgl9CglwcmludCByZWFkYWJsZVRpbWUo
dGltZSgpIC0gJGRhdGV7JF99LCAxKSwgIiBhZ28pIjsKCXByaW50ICIgYnkgIjsKCXByaW50ICI8
aT4iLCAkYXV0aG9yeyRffSwgIjwvaT5cbiI7CglwcmludCAiPGJyPkJyYW5jaDogPGI+IiwgJGxp
bmsgPyBsaW5rX3RhZ3MoJHJldnN5bXskYnJ9KSA6ICRyZXZzeW17JGJyfSwKCSAgICAiPC9iPlxu
IgoJICAgIGlmICgkcmV2c3lteyRicn0pOwoJcHJpbnQgIjxicj5DVlMgVGFnczogPGI+IiwgJGxp
bmsgPyBsaW5rX3RhZ3MoJHJldnN5bXskX30pIDogJHJldnN5bXskX30sCgkgICAgIjwvYj4iCgkg
ICAgaWYgKCRyZXZzeW17JF99KTsKCXByaW50ICI8YnI+QnJhbmNoIHBvaW50IGZvcjogPGI+IiwK
CSAgICAkbGluayA/IGxpbmtfdGFncygkYnJhbmNocG9pbnR7JF99KSA6ICRicmFuY2hwb2ludHsk
X30sICI8L2I+XG4iCgkgICAgaWYgKCRicmFuY2hwb2ludHskX30pOwoKCSMgRmluZCB0aGUgcHJl
dmlvdXMgcmV2aXNpb24KCW15IEBwcmV2cmV2ID0gc3BsaXQgKC9cLi8sICRfKTsKCWRvIHsKCQlp
ZiAoLS0kcHJldnJldlskI3ByZXZyZXZdIDw9IDApIHsKCgkJCSMgSWYgaXQgd2FzIFguWS5aLjEs
IGp1c3QgbWFrZSBpdCBYLlkKCQkJcG9wIChAcHJldnJldik7CgkJCXBvcCAoQHByZXZyZXYpOwoJ
CX0KCQkkcHJldiA9IGpvaW4gKCIuIiwgQHByZXZyZXYpOwoJfSB1bnRpbCAoZGVmaW5lZCgkZGF0
ZXskcHJldn0pIHx8ICRwcmV2IGVxICIiKTsKCglpZiAoJHByZXYgbmUgIiIpIHsKCQlpZiAoJGRp
ZmZsaW5lc3skX30pIHsKCQkJcHJpbnQKCQkJICAgICI8YnI+Q2hhbmdlcyBzaW5jZSA8Yj4kcHJl
djogJGRpZmZsaW5lc3skX30gbGluZXM8L2I+IjsKCQl9Cgl9CgoJaWYgKCRpc0RlYWQpIHsKCQlw
cmludCAiPGJyPjxiPjxpPkZJTEUgUkVNT1ZFRDwvaT48L2I+XG4iOwoJfSBlbHNpZiAoJGxpbmsp
IHsKCQlteSAlZGlmZnJldiA9ICgpOwoJCSRkaWZmcmV2eyRffSA9IDE7CgkJJGRpZmZyZXZ7IiJ9
ID0gMTsKCQlwcmludCAnPGJyPic7CgkJbXkgJGRpZmYgPSAnRGlmZic7CgoJCSMKCQkjIE9mZmVy
IGRpZmYgdG8gcHJldmlvdXMgcmV2aXNpb24KCQlpZiAoJHByZXYpIHsKCQkJJGRpZmZyZXZ7JHBy
ZXZ9ID0gMTsKCgkJCW15ICR1cmwgPQoJCQkgICAgc3ByaW50ZignJXMuZGlmZj9yMT0lcyZyMj0l
cyVzJywgJHNjcmlwdHdoZXJlLAoJCQkJJHByZXYsICRfLCAkYmFyZXF1ZXJ5KTsKCgkJCXByaW50
ICRkaWZmLCAiIHRvIHByZXZpb3VzICI7CgkJCSRkaWZmID0gJyc7CgkJCXByaW50RGlmZkxpbmtz
KCRwcmV2LCAkdXJsKTsKCQl9CgoJCSMKCQkjIFBsdXMsIGlmIGl0J3Mgb24gYSBicmFuY2gsIGFu
ZCBpdCdzIG5vdCBhIHZlbmRvciBicmFuY2gsCgkJIyBvZmZlciBhIGRpZmYgd2l0aCB0aGUgYnJh
bmNoIHBvaW50LgoJCWlmICgkcmV2c3lteyRicnB9ICYmICEvXjFcLjFcLjFcLlxkKyQvCgkJICAg
ICYmICFkZWZpbmVkKCRkaWZmcmV2eyRicnB9KSkKCQl7CgkJCW15ICR1cmwgPQoJCQkgICAgc3By
aW50ZignJXMuZGlmZj9yMT0lcyZyMj0lcyVzJywgJHNjcmlwdHdoZXJlLCAkYnJwLAoJCQkJJF8s
ICRiYXJlcXVlcnkpOwoKCQkJcHJpbnQgJGRpZmYsICIgdG8gYnJhbmNocG9pbnQgIjsKCQkJJGRp
ZmYgPSAnJzsKCQkJcHJpbnREaWZmTGlua3MoJGJycCwgJHVybCk7CgkJfQoKCQkjCgkJIyBQbHVz
LCBpZiBpdCdzIG9uIGEgYnJhbmNoLCBhbmQgaXQncyBub3QgYSB2ZW5kb3IgYnJhbmNoLAoJCSMg
b2ZmZXIgdG8gZGlmZiB3aXRoIHRoZSBuZXh0IHJldmlzaW9uIG9mIHRoZSBoaWdoZXIgYnJhbmNo
LgoJCSMgKGUuZy4gY2hhbmdlIGdldHMgY29tbWl0dGVkIGFuZCB0aGVuIGJyb3VnaHQKCQkjIG92
ZXIgdG8gLXN0YWJsZSkKCQlpZiAoL15cZCtcLlxkK1wuXGQrLyAmJiAhL14xXC4xXC4xXC5cZCsk
LykgewoJCQlteSAoJGksICRuZXh0bWFpbik7CgoJCQlmb3IgKCRpID0gMCA7ICRpIDwgJCNyZXZv
cmRlciAmJiAkcmV2b3JkZXJbJGldIG5lICRfIDsKCQkJICAgICRpKyspCgkJCXsKCQkJfQoJCQlt
eSBAdG1wMiA9IHNwbGl0ICgvXC4vLCAkXyk7CgkJCWZvciAoJG5leHRtYWluID0gIiIgOyAkaSA+
IDAgOyAkaS0tKSB7CgkJCQlteSAkbmV4dCA9ICRyZXZvcmRlclskaSAtIDFdOwoJCQkJbXkgQHRt
cDEgPSBzcGxpdCAoL1wuLywgJG5leHQpOwoKCQkJCWlmIChAdG1wMSA8IEB0bXAyKSB7CgkJCQkJ
JG5leHRtYWluID0gJG5leHQ7CgkJCQkJbGFzdDsKCQkJCX0KCgkJCQkjIE9ubHkgdGhlIGhpZ2hl
c3QgdmVyc2lvbiBvbiBhIGJyYW5jaCBzaG91bGQgaGF2ZQoJCQkJIyBhIGRpZmYgZm9yIHRoZSAi
bmV4dCBtYWluIi4KCQkJCWxhc3QKCQkJCSAgICBpZiAoQHRtcDEgLSAxIDw9IEB0bXAyCgkJCQkg
ICAgJiYgam9pbiAoIi4iLCBAdG1wMVswIC4uICQjdG1wMSAtIDFdKSBlcQoJCQkJICAgIGpvaW4g
KCIuIiwgQHRtcDJbMCAuLiAkI3RtcDEgLSAxXSkpOwoJCQl9CgoJCQlpZiAoIWRlZmluZWQoJGRp
ZmZyZXZ7JG5leHRtYWlufSkpIHsKCQkJCSRkaWZmcmV2eyRuZXh0bWFpbn0gPSAxOwoKCQkJCW15
ICR1cmwgPQoJCQkJICAgIHNwcmludGYoJyVzLmRpZmY/cjE9JXMmcjI9JXMlcycsCgkJCQkJJHNj
cmlwdHdoZXJlLCAkbmV4dG1haW4sICRfLAoJCQkJCSRiYXJlcXVlcnkpOwoKCQkJCXByaW50ICRk
aWZmLCAiIG5leHQgbWFpbiAiOwoJCQkJJGRpZmYgPSAnJzsKCQkJCXByaW50RGlmZkxpbmtzKCRu
ZXh0bWFpbiwgJHVybCk7CgkJCX0KCQl9CgoJCSMgUGx1cyBpZiB1c2VyIGhhcyBzZWxlY3RlZCBv
bmx5IHIxLCB0aGVuIHByZXNlbnQgYSBsaW5rCgkJIyB0byBtYWtlIGEgZGlmZiB0byB0aGF0IHJl
dmlzaW9uCgkJaWYgKGRlZmluZWQoJGlucHV0eyJyMSJ9KSAmJiAhZGVmaW5lZCgkZGlmZnJldnsk
aW5wdXR7InIxIn19KSkgewoJCQkkZGlmZnJldnskaW5wdXR7InIxIn19ID0gMTsKCgkJCW15ICR1
cmwgPQoJCQkgICAgc3ByaW50ZignJXMuZGlmZj9yMT0lcyZyMj0lcyVzJywgJHNjcmlwdHdoZXJl
LAoJCQkJJGlucHV0eydyMSd9LCAkXywgJGJhcmVxdWVyeSk7CgoJCQlwcmludCAkZGlmZiwgIiB0
byBzZWxlY3RlZCAiOwoJCQkkZGlmZiA9ICcnOwoJCQlwcmludERpZmZMaW5rcygkaW5wdXR7J3Ix
J30sICR1cmwpOwoJCX0KCgl9CglwcmludCAiXG48L3A+XG48cHJlPlxuIjsKCXByaW50ICZodG1s
aWZ5KCRsb2d7JF99LCAkYWxsb3dfbG9nX2V4dHJhKTsKCXByaW50ICI8L3ByZT5cbiI7Cn0KCiN4
aGNoZW4Kc3ViIGRvR3JhcGgoJCkgewoJbXkgKCRmdWxsbmFtZSkgPSBAXzsKCW15ICgkZGlmZnJl
diwgJHVwd2hlcmUsICRmaWxlbmFtZSwgJGJhY2t1cmwpOwoKCXJlYWRMb2coJGZ1bGxuYW1lKTsK
CWh0bWxfaGVhZGVyKCJDVlMgcmV2aXNpb25zIHRyZWUgZm9yICR3aGVyZSIpOwoJKCR1cHdoZXJl
ICA9ICR3aGVyZSkgPX4gc3woQXR0aWMvKT9bXi9dKyR8fDsKCSgkZmlsZW5hbWUgPSAkd2hlcmUp
ID0gfiBzfF4uKi98fDsKCSRiYWNrdXJsID0gJHNjcmlwdG5hbWUgLiAiLyIgLiB1cmxlbmNvZGUo
JHVwd2hlcmUpIC4gJHF1ZXJ5OwoJcHJpbnQgIjxwPlxuIjsKCXByaW50ICZsaW5rKCRiYWNraWNv
biwgIiRiYWNrdXJsIyRmaWxlbmFtZSIpLCAiIDxiPlVwIHRvICIsCiAgICAgICAgICAgICZjbGlj
a2FibGVQYXRoKCR1cHdoZXJlLCAxKSwgIjwvYj5cbjwvcD5cbiI7CiAgICAgICAgcHJpbnQgIjxw
PlxuICI7CglwcmludCAiXG48L3A+XG48aHIgbm9zaGFkZT5cbiI7CglwcmludCAiPGZvbnQgY29s
b3I9cmVkPjwvZm9udD48YnI+IjsKCglteSAkc2hvd2NvZGUgPSAwOwoJbXkgJGJBZGRDb21tYTsK
CglwcmludCAiPHhtcD4iIGlmICRzaG93Y29kZTsKCShteSAkZmlsZXVybCA9ICR3aGVyZSkgPX4g
cy9eLipcLy8vOwoJJGZpbGV1cmwgPSB1cmxlbmNvZGUoJGZpbGV1cmwpOwoJcHJpbnQgIjxzY3Jp
cHQ+XG4iOwoJcHJpbnQgInZhciBzQmFyZXF1ZXJ5ID0gXCIiLmh0bWxqcygkYmFyZXF1ZXJ5KS4i
XCI7XG4iOwoJcHJpbnQgInZhciBhc0JhcmVxdWVyeSA9IHNCYXJlcXVlcnkuc3BsaXQoXCcmXCcp
O1xuIjsKCXByaW50ICJzQmFyZXF1ZXJ5ID0gXCJcIjtcbiI7CglwcmludCAidmFyIHNJZ25vcmUg
PSBcIm9ubHlfd2l0aF90YWc9XCI7XG4iOwoJcHJpbnQgImZvciAodmFyIGkgPSAwOyBpIDwgYXNC
YXJlcXVlcnkubGVuZ3RoOyBpKyspXG4iOwoJcHJpbnQgIntcbiI7CglwcmludCAiCWlmIChhc0Jh
cmVxdWVyeVtpXS5sZW5ndGggPD0gMCkgY29udGludWU7XG4iOwoJcHJpbnQgIglpZiAoYXNCYXJl
cXVlcnlbaV0uc3Vic3RyKDAsIHNJZ25vcmUubGVuZ3RoKSA9PSBzSWdub3JlKSBjb250aW51ZTtc
biI7CglwcmludCAiCXNCYXJlcXVlcnkgKz0gXCImXCIgKyBhc0JhcmVxdWVyeVtpXTtcbiI7Cglw
cmludCAifVxuIjsKCXByaW50ICJ2YXIgYVJldiA9IFxuW1xuIjsKCSRiQWRkQ29tbWEgPSAwOwoJ
Zm9yZWFjaCAoQGFsbHJldmlzaW9ucykgewoJCWlmICgkYkFkZENvbW1hID09IDApIHsKCQkJJGJB
ZGRDb21tYSA9IDE7CgkJfQoJCWVsc2UgewoJCQlwcmludCAiLFxuIjsKCQl9CgkJcHJpbnQgIntc
biI7CgkJcHJpbnQgIglSZXY6IFwiJF9cIixcbiI7CgkJcHJpbnQgIglMb2c6IFwiIi5odG1sanMo
aHRtbGlmeSgkbG9neyRffSwgJGFsbG93X2xvZ19leHRyYSkpLiJcIlxuIjsKCQlwcmludGYgIn0i
OwoJfQoJcHJpbnRmICJcbl07XG4iOwoKCXByaW50ZiAidmFyIGFTeW0gPSBcbltcbiI7CgoJZm9y
ZWFjaCBteSAkaSAoa2V5cyAlc3ltcmV2KSB7CgkJcHJpbnQgIntcbiI7CgkJcHJpbnQgIglTeW06
CVwiIi5odG1sanMoaHRtbHF1b3RlKCRpKSkuIlwiLFxuIjsKCQlwcmludCAiCVJldjoJXCIkc3lt
cmV2eyRpfVwiXG4iOwoJCXByaW50ICJ9LFxuIjsKCX0KCXByaW50ICJ7XG4iOwoJcHJpbnQgIglT
eW06CVwiIi5odG1sanMoaHRtbHF1b3RlKCRmaWxldXJsKSkuIlwiLFxuIjsKCXByaW50ICIJUmV2
OglcIjFcIlxuIjsKCXByaW50ICJ9XG4iOwoJcHJpbnQgIl07XG4iOwoKCXByaW50ICJmb3IgKHZh
ciBpID0gMDsgaSA8IGFSZXYubGVuZ3RoOyBpKyspXHJcbiI7DQoJcHJpbnQgIntcclxuIjsNCglw
cmludCAiCWlmIChhUmV2W2ldLkxvZy5zdWJzdHIoYVJldltpXS5Mb2cubGVuZ3RoIC0gMSkgPT0g
XCdcXG5cJylcclxuIjsNCglwcmludCAiCQlhUmV2W2ldLkxvZyA9IGFSZXZbaV0uTG9nLnN1YnN0
cigwLCBhUmV2W2ldLkxvZy5sZW5ndGggLSAxKVxyXG4iOw0KCXByaW50ICJ9XHJcbiI7DQoJcHJp
bnQgInZhciBzRmlsZSA9IGFTeW1bYVN5bS5sZW5ndGggLSAxXS5TeW07XHJcbiI7DQoJcHJpbnQg
IlxyXG4iOwoKCXByaW50ICJmdW5jdGlvbiBTb3J0VmVyRnVuKHNhLCBzYilcclxuIjsNCglwcmlu
dCAie1xyXG4iOw0KCXByaW50ICIJdmFyIGEgPSBzYS5SZXYuc3BsaXQoXCIuXCIpO1xyXG4iOw0K
CXByaW50ICIJdmFyIGIgPSBzYi5SZXYuc3BsaXQoXCIuXCIpO1xyXG4iOw0KCXByaW50ICIJdmFy
IGlhLCBpYiwgbGEsIGxiO1xyXG4iOw0KCXByaW50ICJcclxuIjsNCglwcmludCAiCWxhID0gYS5s
ZW5ndGg7XHJcbiI7DQoJcHJpbnQgIglsYiA9IGIubGVuZ3RoO1xyXG4iOw0KCXByaW50ICIJZm9y
ICh2YXIgaSA9IDA7IGkgPCBsYSAmJiBpIDwgbGI7IGkrKylcclxuIjsNCglwcmludCAiCXtcclxu
IjsNCglwcmludCAiCQlpYSA9IHBhcnNlSW50KGFbaV0sIDEwKTtcclxuIjsNCglwcmludCAiCQlp
YiA9IHBhcnNlSW50KGJbaV0sIDEwKTtcclxuIjsNCglwcmludCAiCQlpZiAoaWEgPCBpYikgcmV0
dXJuIC0xO1xyXG4iOw0KCXByaW50ICIJCWVsc2UgaWYgKGlhID4gaWIpIHJldHVybiAxO1xyXG4i
Ow0KCXByaW50ICIJfVxyXG4iOw0KCXByaW50ICJcclxuIjsNCglwcmludCAiCWlmIChsYSA8IGxi
KSByZXR1cm4gLTE7XHJcbiI7DQoJcHJpbnQgIgllbHNlIGlmIChsYSA+IGxiKSByZXR1cm4gMTtc
clxuIjsNCglwcmludCAiCWVsc2UgcmV0dXJuIDA7XHJcbiI7DQoJcHJpbnQgIn1cclxuIjsNCglw
cmludCAiXHJcbiI7DQoJcHJpbnQgImZ1bmN0aW9uIENyZWF0ZVJldlN0cnVjdChhUmV2KVxyXG4i
Ow0KCXByaW50ICJ7XHJcbiI7DQoJcHJpbnQgIglhUmV2ID0gYVJldi5zb3J0KFNvcnRWZXJGdW4p
O1xyXG4iOw0KCXByaW50ICIJdmFyIHNSdCA9IFxyXG4iOw0KCXByaW50ICIJe1xyXG4iOw0KCXBy
aW50ICIJCVJldjogXCJcIixcclxuIjsNCglwcmludCAiCQlMb2c6IFwiXCIsXHJcbiI7DQoJcHJp
bnQgIgkJaUxlbjogMCxcclxuIjsNCglwcmludCAiCQlhUmV2OiBbXVxyXG4iOw0KCXByaW50ICIJ
fTtcclxuIjsNCglwcmludCAiXHJcbiI7DQoJcHJpbnQgIgl2YXIgaUxlbjtcclxuIjsNCglwcmlu
dCAiCXZhciBzO1xyXG4iOw0KCXByaW50ICIJdmFyIGJFeGl0O1xyXG4iOw0KCXByaW50ICIJZm9y
ICh2YXIgaSA9IDA7IGkgPCBhUmV2Lmxlbmd0aDsgaSsrKVxyXG4iOw0KCXByaW50ICIJe1xyXG4i
Ow0KCXByaW50ICIJCWlMZW4gPSBhUmV2W2ldLlJldi5zcGxpdChcIi5cIikubGVuZ3RoO1xyXG4i
Ow0KCXByaW50ICJcclxuIjsNCglwcmludCAiCQliRXhpdCA9IGZhbHNlO1xyXG4iOw0KCXByaW50
ICIJCWZvciAodmFyIGogPSBcInNSdFwiOyAhYkV4aXQ7KVxyXG4iOw0KCXByaW50ICIJCXtcclxu
IjsNCglwcmludCAiCQkJcyA9IGogKyBcIi5hUmV2XCI7XHJcbiI7DQoJcHJpbnQgIlxyXG4iOw0K
CXByaW50ICIJCQl2YXIgdiA9IChcclxuIjsNCglwcmludCAiCQkJCQlcImlmICggXCIgKyBzICsg
XCIubGVuZ3RoID09IDAgKVxcblwiXHJcbiI7DQoJcHJpbnQgIgkJCQkrCVwie1xcblwiXHJcbiI7
DQoJcHJpbnQgIgkJCQkrCQlcImJFeGl0ID0gdHJ1ZTtcXG5cIlxyXG4iOw0KCXByaW50ICIJCQkJ
KwkJcyArIFwiWzBdID0gYVJldltpXTtcXG5cIlxyXG4iOw0KCXByaW50ICIJCQkJKwkJcyArIFwi
WzBdLmlMZW4gPSBpTGVuO1xcblwiXHJcbiI7DQoJcHJpbnQgIgkJCQkrCQlzICsgXCJbMF0uYVJl
diA9IFtdO1xcblwiXHJcbiI7DQoJcHJpbnQgIgkJCQkrCVwifVxcblwiXHJcbiI7DQoJcHJpbnQg
IgkJCQkrCVwiZWxzZSBpZiAoIFwiICsgcyArIFwiWzBdLmlMZW4gPT0gaUxlbiApXFxuXCJcclxu
IjsNCglwcmludCAiCQkJCSsJXCJ7XFxuXCJcclxuIjsNCglwcmludCAiCQkJCSsJCVwiYkV4aXQg
PSB0cnVlO1xcblwiXHJcbiI7DQoJcHJpbnQgIgkJCQkrCQlzICsgXCJbXCIgKyBzICsgXCIubGVu
Z3RoXSA9IGFSZXZbaV07XFxuXCJcclxuIjsNCglwcmludCAiCQkJCSsJCXMgKyBcIltcIiArIHMg
KyBcIi5sZW5ndGggLSAxXS5pTGVuID0gaUxlbjtcXG5cIlxyXG4iOw0KCXByaW50ICIJCQkJKwkJ
cyArIFwiW1wiICsgcyArIFwiLmxlbmd0aCAtIDFdLmFSZXYgPSBbXTtcXG5cIlxyXG4iOw0KCXBy
aW50ICIJCQkJKwlcIn1cXG5cIlxyXG4iOw0KCXByaW50ICIJCQkJKwlcImVsc2VcXG5cIlxyXG4i
Ow0KCXByaW50ICIJCQkJKwlcIntcXG5cIlxyXG4iOw0KCXByaW50ICIJCQkJKwkJXCJqID0gXCdc
IiArIHMgKyBcIltcJyArICggXCIgKyBzICsgXCIubGVuZ3RoIC0gMSApICsgXCddXCc7XFxuXCJc
clxuIjsNCglwcmludCAiCQkJCSsJXCJ9XFxuXCJcclxuIjsNCglwcmludCAiCQkJCSk7XHJcbiI7
DQoJcHJpbnQgIgkJCWV2YWwodik7XHJcbiI7DQoJcHJpbnQgIgkJfVxyXG4iOw0KCXByaW50ICIJ
fVxyXG4iOw0KCXByaW50ICIJcmV0dXJuIHNSdDtcclxuIjsNCglwcmludCAifVxyXG4iOw0KCXBy
aW50ICJcclxuIjsNCglwcmludCAiZnVuY3Rpb24gR2V0VGFnKFJldiwgYVN5bSwgYk9uZSlcclxu
IjsNCglwcmludCAie1xyXG4iOw0KCXByaW50ICIJdmFyIHNSdCA9IFwiXCI7XHJcbiI7DQoJcHJp
bnQgIglpZiAoIWJPbmUpIHNSdCA9IFtdO1xyXG4iOw0KCXByaW50ICJcclxuIjsNCglwcmludCAi
CWZvciAodmFyIGkgPSAwOyBpIDwgYVN5bS5sZW5ndGg7IGkrKylcclxuIjsNCglwcmludCAiCXtc
clxuIjsNCglwcmludCAiCQlpZiAoYVN5bVtpXS5SZXYgPT0gUmV2KVxyXG4iOw0KCXByaW50ICIJ
CXtcclxuIjsNCglwcmludCAiCQkJcmV0dXJuIGFTeW1baV0uU3ltO1xyXG4iOw0KCXByaW50ICIJ
CX1cclxuIjsNCglwcmludCAiCX1cclxuIjsNCglwcmludCAiCXJldHVybiBzUnQ7XHJcbiI7DQoJ
cHJpbnQgIn1cclxuIjsNCglwcmludCAiXHJcbiI7DQoJcHJpbnQgImZ1bmN0aW9uIENyZWF0ZVJl
dkJyY2hTdHJ1Y3Qoc1JldiwgYVN5bSlcclxuIjsNCglwcmludCAie1xyXG4iOw0KCXByaW50ICIJ
aWYgKHNSZXYuYVJldi5sZW5ndGggPT0gMCkgcmV0dXJuIG51bGw7XHJcbiI7DQoJcHJpbnQgIlxy
XG4iOw0KCXByaW50ICIJdmFyIHNSZXZQYXIgPSBzUmV2LmFSZXZbMF0uUmV2LnN1YnN0cigwLCBz
UmV2LmFSZXZbMF0uUmV2Lmxhc3RJbmRleE9mKFwiLlwiKSk7XHJcbiI7DQoJcHJpbnQgIglzUmV2
UGFyID0gc1JldlBhci5zdWJzdHIoMCwgc1JldlBhci5sYXN0SW5kZXhPZihcIi5cIikpO1xyXG4i
Ow0KCXByaW50ICIJdmFyIHNSdCA9XHJcbiI7DQoJcHJpbnQgIgl7XHJcbiI7DQoJcHJpbnQgIgkJ
UmV2OiBzUmV2UGFyLFxyXG4iOw0KCXByaW50ICIJCUxvZzogXCJcIixcclxuIjsNCglwcmludCAi
CQlhVGFnOiBbXSxcclxuIjsNCglwcmludCAiCQlhQnJjaDogW11cclxuIjsNCglwcmludCAiCX1c
clxuIjsNCglwcmludCAiXHJcbiI7DQoJcHJpbnQgIgl2YXIgc0JyY2ggPSBudWxsO1xyXG4iOw0K
CXByaW50ICIJdmFyIHNCcjtcclxuIjsNCglwcmludCAiCXZhciBzVGhpc0JyY2g7XHJcbiI7DQoJ
cHJpbnQgIglmb3IgKHZhciBpID0gMDsgaSA8IHNSZXYuYVJldi5sZW5ndGg7IGkrKylcclxuIjsN
CglwcmludCAiCXtcclxuIjsNCglwcmludCAiCQlzVGhpc0JyY2ggPSBzUmV2LmFSZXZbaV0uUmV2
LnN1YnN0cigwLCBzUmV2LmFSZXZbaV0uUmV2Lmxhc3RJbmRleE9mKFwiLlwiKSk7XHJcbiI7DQoJ
cHJpbnQgIgkJXHJcbiI7DQoJcHJpbnQgIgkJaWYgKHNCcmNoICE9IHNUaGlzQnJjaClcclxuIjsN
CglwcmludCAiCQl7XHJcbiI7DQoJcHJpbnQgIgkJCXNCcmNoID0gc1RoaXNCcmNoO1xyXG4iOw0K
CXByaW50ICIJCQlzUnQuYUJyY2hbc1J0LmFCcmNoLmxlbmd0aF0gPVxyXG4iOw0KCXByaW50ICIJ
CQl7XHJcbiI7DQoJcHJpbnQgIgkJCQlCcmNoOiBzQnJjaCxcclxuIjsNCglwcmludCAiCQkJCVRh
ZzogR2V0VGFnKHNCcmNoLCBhU3ltLCB0cnVlKSxcclxuIjsNCglwcmludCAiCQkJCWFSZXY6IFtd
XHJcbiI7DQoJcHJpbnQgIgkJCX1cclxuIjsNCglwcmludCAiCQl9XHJcbiI7DQoJcHJpbnQgIlxy
XG4iOw0KCXByaW50ICIJCXNSdC5hQnJjaFtzUnQuYUJyY2gubGVuZ3RoIC0gMV0uYVJldltzUnQu
YUJyY2hbc1J0LmFCcmNoLmxlbmd0aCAtIDFdLmFSZXYubGVuZ3RoXSA9XHJcbiI7DQoJcHJpbnQg
IgkJe1xyXG4iOw0KCXByaW50ICIJCQlSZXY6IHNSZXYuYVJldltpXS5SZXYsXHJcbiI7DQoJcHJp
bnQgIgkJCUxvZzogc1Jldi5hUmV2W2ldLkxvZyxcclxuIjsNCglwcmludCAiCQkJYVRhZzogR2V0
VGFnKHNSZXYuYVJldltpXS5SZXYsIGFTeW0sIGZhbHNlKSxcclxuIjsNCglwcmludCAiCQkJYUJy
Y2g6IFtdXHJcbiI7DQoJcHJpbnQgIgkJfVxyXG4iOw0KCXByaW50ICJcclxuIjsNCglwcmludCAi
CQl2YXIgc1N1YiA9IENyZWF0ZVJldkJyY2hTdHJ1Y3Qoc1Jldi5hUmV2W2ldLCBhU3ltKTtcclxu
IjsNCglwcmludCAiCQlpZiAoc1N1YiAhPSBudWxsKVxyXG4iOw0KCXByaW50ICIJCQlzUnQuYUJy
Y2hbc1J0LmFCcmNoLmxlbmd0aCAtIDFdLmFSZXZbc1J0LmFCcmNoW3NSdC5hQnJjaC5sZW5ndGgg
LSAxXS5hUmV2Lmxlbmd0aCAtIDFdLmFCcmNoID0gQ3JlYXRlUmV2QnJjaFN0cnVjdChzUmV2LmFS
ZXZbaV0sIGFTeW0pLmFCcmNoO1xyXG4iOw0KCXByaW50ICIJfVxyXG4iOw0KCXByaW50ICJcclxu
IjsNCglwcmludCAiCXJldHVybiBzUnQ7XHJcbiI7DQoJcHJpbnQgIn1cclxuIjsNCglwcmludCAi
XHJcbiI7DQoJcHJpbnQgIlxyXG4iOw0KCXByaW50ICJmdW5jdGlvbiBDbGVhblN5bVRCKGFTeW0p
XHJcbiI7DQoJcHJpbnQgIntcclxuIjsNCglwcmludCAiCXZhciBhUnQgPSBbXTtcclxuIjsNCglw
cmludCAiCXZhciBpTG9vcCA9IGFTeW0ubGVuZ3RoO1xyXG4iOw0KCXByaW50ICIJdmFyIGlCcmNo
LCBzQnJjaCwgc0hlYWRlcjtcclxuIjsNCglwcmludCAiCXZhciBpUFQ7XHJcbiI7DQoJcHJpbnQg
Iglmb3IgKHZhciBpID0gMDsgaSA8IGlMb29wOyBpKyspXHJcbiI7DQoJcHJpbnQgIgl7XHJcbiI7
DQoJcHJpbnQgIgkJaVBUID0gYVN5bVtpXS5SZXYubGFzdEluZGV4T2YoXCcuXCcpO1xyXG4iOw0K
CXByaW50ICIJCWlmIChpUFQgPT0gLTEpIGNvbnRpbnVlO1xyXG4iOw0KCXByaW50ICIJCXNCcmNo
ID0gYVN5bVtpXS5SZXYuc3Vic3RyKDAsIGlQVCk7XHJcbiI7DQoJcHJpbnQgIgkJaUJyY2ggPSBh
U3ltW2ldLlJldi5zdWJzdHIoaVBUICsgMSk7XHJcbiI7DQoJcHJpbnQgIlxyXG4iOw0KCXByaW50
ICIJCWlQVCA9IHNCcmNoLmxhc3RJbmRleE9mKFwnLlwnKTtcclxuIjsNCglwcmludCAiCQlpZiAo
c0JyY2guc3Vic3RyKGlQVCArIDEpID09IFwiMFwiKVxyXG4iOw0KCXByaW50ICIJCXtcclxuIjsN
CglwcmludCAiCQkJc0hlYWRlciA9IHNCcmNoLnN1YnN0cigwLCBpUFQgKyAxKTtcclxuIjsNCglw
cmludCAiCQkJYVN5bVtpXS5SZXYgPSBzSGVhZGVyICsgaUJyY2g7XHJcbiI7DQoJcHJpbnQgIgkJ
fVxyXG4iOw0KCXByaW50ICIJfVxyXG4iOw0KCXByaW50ICJcclxuIjsNCglwcmludCAiCWFTeW0g
PSBhU3ltLnNvcnQoU29ydFZlckZ1bik7XHJcbiI7DQoJcHJpbnQgIgl2YXIgc1JldiA9IFwiXCI7
XHJcbiI7DQoJcHJpbnQgIglmb3IgKHZhciBpID0gMDsgaSA8IGlMb29wOyBpKyspXHJcbiI7DQoJ
cHJpbnQgIgl7XHJcbiI7DQoJcHJpbnQgIgkJaWYgKGFTeW1baV0uU3ltID09IFwiSEVBRFwiIHx8
IGFTeW1baV0uU3ltID09IFwiTUFJTlwiKVxyXG4iOw0KCXByaW50ICIJCQljb250aW51ZTtcclxu
IjsNCglwcmludCAiCQllbHNlIGlmIChzUmV2ICE9IGFTeW1baV0uUmV2KVxyXG4iOw0KCXByaW50
ICIJCXtcclxuIjsNCglwcmludCAiCQkJc1JldiA9IGFTeW1baV0uUmV2O1xyXG4iOw0KCXByaW50
ICIJCQlhUnRbYVJ0Lmxlbmd0aF0gPSBcclxuIjsNCglwcmludCAiCQkJe1xyXG4iOw0KCXByaW50
ICIJCQkJUmV2OiBzUmV2LFxyXG4iOw0KCXByaW50ICIJCQkJU3ltOiBhU3ltW2ldLlN5bVxyXG4i
Ow0KCXByaW50ICIJCQl9XHJcbiI7DQoJcHJpbnQgIgkJfVxyXG4iOw0KCXByaW50ICIJCWVsc2Vc
clxuIjsNCglwcmludCAiCQl7XHJcbiI7DQoJcHJpbnQgIgkJCWlmICh0eXBlb2YoYVJ0W2FSdC5s
ZW5ndGggLSAxXS5TeW0pID09IFwic3RyaW5nXCIpXHJcbiI7DQoJcHJpbnQgIgkJCQlhUnRbYVJ0
Lmxlbmd0aCAtIDFdLlN5bSA9IFthUnRbYVJ0Lmxlbmd0aCAtIDFdLlN5bSwgYVN5bVtpXS5TeW1d
O1xyXG4iOw0KCXByaW50ICIJCQllbHNlIGFSdFthUnQubGVuZ3RoIC0gMV0uU3ltW2FSdFthUnQu
bGVuZ3RoIC0gMV0uU3ltLmxlbmd0aF0gPSBhU3ltW2ldLlN5bTtcclxuIjsNCglwcmludCAiCQl9
XHJcbiI7DQoJcHJpbnQgIgl9XHJcbiI7DQoJcHJpbnQgIlxyXG4iOw0KCXByaW50ICIJZm9yICh2
YXIgaSA9IDA7IGkgPCBhUnQubGVuZ3RoOyBpKyspXHJcbiI7DQoJcHJpbnQgIgl7XHJcbiI7DQoJ
cHJpbnQgIgkJaUJyY2ggPSBhUnRbaV0uUmV2LnNwbGl0KFwnLlwnKS5sZW5ndGg7XHJcbiI7DQoJ
cHJpbnQgIgkJaWYgKE1hdGguZmxvb3IoaUJyY2ggLyAyKSAqIDIgIT0gaUJyY2gpXHJcbiI7DQoJ
cHJpbnQgIgkJe1xyXG4iOw0KCXByaW50ICIJCQlpZiAodHlwZW9mKGFSdFtpXS5TeW0pICE9IFwi
c3RyaW5nXCIpIGFSdFtpXS5TeW0gPSBhUnRbaV0uU3ltWzBdO1xyXG4iOw0KCXByaW50ICIJCX1c
clxuIjsNCglwcmludCAiCQllbHNlXHJcbiI7DQoJcHJpbnQgIgkJe1xyXG4iOw0KCXByaW50ICIJ
CQlpZiAodHlwZW9mKGFSdFtpXS5TeW0pID09IFwic3RyaW5nXCIpIGFSdFtpXS5TeW0gPSBbYVJ0
W2ldLlN5bV07XHJcbiI7DQoJcHJpbnQgIgkJfVxyXG4iOw0KCXByaW50ICIJfVxyXG4iOw0KCXBy
aW50ICIJcmV0dXJuIGFSdDtcclxuIjsNCglwcmludCAifVxyXG4iOw0KCXByaW50ICJcclxuIjsN
CglwcmludCAiZnVuY3Rpb24gQ3JlYXRlUmV2VHJlZShhUmV2LCBhU3ltKVxyXG4iOw0KCXByaW50
ICJ7XHJcbiI7DQoJcHJpbnQgIglhU3ltID0gQ2xlYW5TeW1UQihhU3ltKTtcclxuIjsNCglwcmlu
dCAiCXZhciBzUmV2ID0gQ3JlYXRlUmV2U3RydWN0KGFSZXYpO1xyXG4iOw0KCXByaW50ICIJYUJy
YW5jaE9uZSA9IENyZWF0ZVJldkJyY2hTdHJ1Y3Qoc1JldiwgYVN5bSkuYUJyY2hbMF07XHJcbiI7
DQoJcHJpbnQgIlxyXG4iOw0KCXByaW50ICIJcmV0dXJuIGFCcmFuY2hPbmU7XHJcbiI7DQoJcHJp
bnQgIn1cclxuIjsNCglwcmludCAiXHJcbiI7DQoJcHJpbnQgImFCcmFuY2hPbmUgPSBDcmVhdGVS
ZXZUcmVlKGFSZXYsIGFTeW0pO1xyXG4iOw0KCXByaW50ICJcclxuIjsNCglwcmludCAiZnVuY3Rp
b24gR2V0QnJjaFJvd3NwYW4oQnJjaClcclxuIjsNCglwcmludCAie1xyXG4iOw0KCXByaW50ICIJ
dmFyIGlTcGFuID0gMTtcclxuIjsNCglwcmludCAiCWZvciAodmFyIGkgPSAwOyBpIDwgQnJjaC5h
UmV2Lmxlbmd0aDsgaSsrKVxyXG4iOw0KCXByaW50ICIJCWlTcGFuICs9IEdldFJldlJvd3NwYW4o
QnJjaC5hUmV2W2ldKTtcclxuIjsNCglwcmludCAiCXJldHVybiBpU3BhbjtcclxuIjsNCglwcmlu
dCAifVxyXG4iOw0KCXByaW50ICJcclxuIjsNCglwcmludCAiZnVuY3Rpb24gR2V0UmV2Um93c3Bh
bihSZXYpXHJcbiI7DQoJcHJpbnQgIntcclxuIjsNCglwcmludCAiCXZhciBpU3BhbiA9IFJldi5h
VGFnLmxlbmd0aDtcclxuIjsNCglwcmludCAiXHJcbiI7DQoJcHJpbnQgIglpZiAoUmV2LmFCcmNo
Lmxlbmd0aCAhPSAwKVxyXG4iOw0KCXByaW50ICIJe1xyXG4iOw0KCXByaW50ICIJCWZvciAodmFy
IGkgPSAwIDsgaSA8IFJldi5hQnJjaC5sZW5ndGg7IGkrKylcclxuIjsNCglwcmludCAiCQkJaVNw
YW4gKz0gR2V0QnJjaFJvd3NwYW4oUmV2LmFCcmNoW2ldKTtcclxuIjsNCglwcmludCAiCQl9XHJc
biI7DQoJcHJpbnQgIgllbHNlIGlmIChpU3BhbiA9PSAwKSBpU3BhbiA9IDE7XHJcbiI7DQoJcHJp
bnQgIglyZXR1cm4gaVNwYW47XHJcbiI7DQoJcHJpbnQgIn1cclxuIjsNCglwcmludCAiXHJcbiI7
DQoJcHJpbnQgImZ1bmN0aW9uIEdldFJvd3NwYW4oQnJjaF9PUl9SZXYpXHJcbiI7DQoJcHJpbnQg
IntcclxuIjsNCglwcmludCAiCWlmICh0eXBlb2YoQnJjaF9PUl9SZXYuQnJjaCkgPT0gXCJzdHJp
bmdcIilcclxuIjsNCglwcmludCAiCQlyZXR1cm4gR2V0QnJjaFJvd3NwYW4oQnJjaF9PUl9SZXYp
O1xyXG4iOw0KCXByaW50ICIJZWxzZSBpZiAodHlwZW9mKEJyY2hfT1JfUmV2LlJldikgPT0gXCJz
dHJpbmdcIilcclxuIjsNCglwcmludCAiCQlyZXR1cm4gR2V0UmV2Um93c3BhbihCcmNoX09SX1Jl
dik7XHJcbiI7DQoJcHJpbnQgIgllbHNlIHJldHVybiAwO1xyXG4iOw0KCXByaW50ICJ9XHJcbiI7
DQoJcHJpbnQgIlxyXG4iOw0KCXByaW50ICJmdW5jdGlvbiBHZXRCcmNoQ29sc3BhbihCcmNoKVxy
XG4iOw0KCXByaW50ICJ7XHJcbiI7DQoJcHJpbnQgIglpZiAoQnJjaC5hUmV2Lmxlbmd0aCA8PSAw
KSByZXR1cm4gMTtcclxuIjsNCglwcmludCAiCWVsc2VcclxuIjsNCglwcmludCAiCXtcclxuIjsN
CglwcmludCAiCQl2YXIgaU1heCA9IDA7XHJcbiI7DQoJcHJpbnQgIgkJdmFyIGlTcGFuO1xyXG4i
Ow0KCXByaW50ICIJCWZvciAodmFyIGkgPSAwOyBpIDwgQnJjaC5hUmV2Lmxlbmd0aDsgaSsrKVxy
XG4iOw0KCXByaW50ICIJCXtcclxuIjsNCglwcmludCAiCQkJaVNwYW4gPSBHZXRSZXZDb2xzcGFu
KEJyY2guYVJldltpXSk7XHJcbiI7DQoJcHJpbnQgIgkJCWlmIChpU3BhbiA+IGlNYXgpIGlNYXgg
PSBpU3BhbjtcclxuIjsNCglwcmludCAiCQl9XHJcbiI7DQoJcHJpbnQgIgkJcmV0dXJuIGlNYXg7
XHJcbiI7DQoJcHJpbnQgIgl9XHJcbiI7DQoJcHJpbnQgIn1cclxuIjsNCglwcmludCAiXHJcbiI7
DQoJcHJpbnQgImZ1bmN0aW9uIEdldFJldkNvbHNwYW4oUmV2KVxyXG4iOw0KCXByaW50ICJ7XHJc
biI7DQoJcHJpbnQgIglpZiAoUmV2LmFCcmNoLmxlbmd0aCA8PSAwICYmIFJldi5hVGFnLmxlbmd0
aCA8PSAwKSByZXR1cm4gMTtcclxuIjsNCglwcmludCAiCWVsc2UgaWYgKFJldi5hQnJjaC5sZW5n
dGggPD0gMCkgcmV0dXJuIDI7XHJcbiI7DQoJcHJpbnQgIgllbHNlXHJcbiI7DQoJcHJpbnQgIgl7
XHJcbiI7DQoJcHJpbnQgIgkJdmFyIGlNYXggPSAwO1xyXG4iOw0KCXByaW50ICIJCXZhciBpU3Bh
bjtcclxuIjsNCglwcmludCAiCQlmb3IgKHZhciBpID0gMDsgaSA8IFJldi5hQnJjaC5sZW5ndGg7
IGkrKylcclxuIjsNCglwcmludCAiCQl7XHJcbiI7DQoJcHJpbnQgIgkJCWlTcGFuID0gR2V0QnJj
aENvbHNwYW4oUmV2LmFCcmNoW2ldKTtcclxuIjsNCglwcmludCAiCQkJaWYgKGlTcGFuID4gaU1h
eCkgaU1heCA9IGlTcGFuO1xyXG4iOw0KCXByaW50ICIJCX1cclxuIjsNCglwcmludCAiCQlyZXR1
cm4gMSArIGlNYXg7XHJcbiI7DQoJcHJpbnQgIgl9XHJcbiI7DQoJcHJpbnQgIn1cclxuIjsNCglw
cmludCAiXHJcbiI7DQoJcHJpbnQgImZ1bmN0aW9uIEdldENvbHNwYW4oQnJjaF9PUl9SZXYpXHJc
biI7DQoJcHJpbnQgIntcclxuIjsNCglwcmludCAiCWlmICh0eXBlb2YoQnJjaF9PUl9SZXYuQnJj
aCkgPT0gXCJzdHJpbmdcIilcclxuIjsNCglwcmludCAiCQlyZXR1cm4gR2V0QnJjaENvbHNwYW4o
QnJjaF9PUl9SZXYpO1xyXG4iOw0KCXByaW50ICIJZWxzZSBpZiAodHlwZW9mKEJyY2hfT1JfUmV2
LlJldikgPT0gXCJzdHJpbmdcIilcclxuIjsNCglwcmludCAiCQlyZXR1cm4gR2V0UmV2Q29sc3Bh
bihCcmNoX09SX1Jldik7XHJcbiI7DQoJcHJpbnQgIgllbHNlIHJldHVybiAwO1xyXG4iOw0KCXBy
aW50ICJ9XHJcbiI7DQoJcHJpbnQgIlxyXG4iOw0KCXByaW50ICJmdW5jdGlvbiBDcmVhdGVUQkFy
cmF5KGlSb3dzLCBpQ29scylcclxuIjsNCglwcmludCAie1xyXG4iOw0KCXByaW50ICIJaVJvd3Mg
PSBpUm93cyAqIDIgLSAxO1xyXG4iOw0KCXByaW50ICIJaUNvbHMgPSBpQ29scyAqIDIgLSAxO1xy
XG4iOw0KCXByaW50ICIJdmFyIGEgPSBuZXcgQXJyYXkoaVJvd3MpO1xyXG4iOw0KCXByaW50ICIJ
Zm9yICh2YXIgaSA9IDA7IGkgPCBpUm93czsgaSsrKVxyXG4iOw0KCXByaW50ICIJCWFbaV0gPSBu
ZXcgQXJyYXkoaUNvbHMpO1xyXG4iOw0KCXByaW50ICIJcmV0dXJuIGE7XHJcbiI7DQoJcHJpbnQg
In1cclxuIjsNCglwcmludCAiXHJcbiI7DQoJcHJpbnQgInZhciBhVEIgPSBDcmVhdGVUQkFycmF5
KEdldFJvd3NwYW4oYUJyYW5jaE9uZSksIEdldENvbHNwYW4oYUJyYW5jaE9uZSkpO1xyXG4iOw0K
CXByaW50ICJcclxuIjsNCglwcmludCAiZnVuY3Rpb24gU1YoaVJvdywgaUNvbCwgcylcclxuIjsN
CglwcmludCAie1xyXG4iOw0KCXByaW50ICIJaWYgKGlSb3cgPj0gYVRCLmxlbmd0aCkgYVRCW2lS
b3ddID0gbmV3IEFycmF5O1xyXG4iOw0KCXByaW50ICIJYVRCW2lSb3ddW2lDb2xdID0gcztcclxu
IjsNCglwcmludCAifVxyXG4iOw0KCXByaW50ICJcclxuIjsNCglwcmludCAiZnVuY3Rpb24gRmls
bEJyY2hUQihCcmNoLCBpUm93LCBpQ29sKVxyXG4iOw0KCXByaW50ICJ7XHJcbiI7DQoJcHJpbnQg
Igl2YXIgc1J0ID0ge2lSb3c6IDEsIGlDb2w6IDF9O1xyXG4iOw0KCXByaW50ICJcclxuIjsNCglw
cmludCAiCVNWKGlSb3crKywgaUNvbCwgXCJCXCIgKyBCcmNoLkJyY2ggKyBcIixcIiArIEJyY2gu
VGFnKTtcclxuIjsNCglwcmludCAiXHJcbiI7DQoJcHJpbnQgIglpZiAoQnJjaC5hUmV2Lmxlbmd0
aCA+IDApXHJcbiI7DQoJcHJpbnQgIgl7XHJcbiI7DQoJcHJpbnQgIgkJZm9yICh2YXIgaSA9IDA7
IGkgPCBCcmNoLmFSZXYubGVuZ3RoOyBpKyspXHJcbiI7DQoJcHJpbnQgIgkJe1xyXG4iOw0KCXBy
aW50ICIJCQlTVihpUm93KyssIGlDb2wsIFwifFwiKTtcclxuIjsNCglwcmludCAiCQkJc1J0LmlS
b3crKztcclxuIjsNCglwcmludCAiXHJcbiI7DQoJcHJpbnQgIgkJCVNWKGlSb3csIGlDb2wsIFwi
VlwiICsgQnJjaC5hUmV2W2ldLlJldiArIFwiLFwiICsgQnJjaC5hUmV2W2ldLkxvZyk7XHJcbiI7
DQoJcHJpbnQgIgkJCXZhciBzRmlsbCA9IEZpbGxSZXZUQihCcmNoLmFSZXZbaV0sIGlSb3crKywg
aUNvbCArIDEpO1xyXG4iOw0KCXByaW50ICIJCQlzUnQuaVJvdyArKztcclxuIjsNCglwcmludCAi
XHJcbiI7DQoJcHJpbnQgIgkJCWlmIChzRmlsbC5pUm93ID4gMSlcclxuIjsNCglwcmludCAiCQkJ
e1xyXG4iOw0KCXByaW50ICIJCQkJZm9yICh2YXIgaiA9IDE7IGogPCBzRmlsbC5pUm93OyBqKysp
XHJcbiI7DQoJcHJpbnQgIgkJCQl7XHJcbiI7DQoJcHJpbnQgIgkJCQkJaWYgKGkgKyAxIDwgQnJj
aC5hUmV2Lmxlbmd0aClcclxuIjsNCglwcmludCAiCQkJCQkJU1YoaVJvdysrLCBpQ29sLCBcInxc
Iik7XHJcbiI7DQoJcHJpbnQgIgkJCQkJc1J0LmlSb3crKztcclxuIjsNCglwcmludCAiCQkJCX1c
clxuIjsNCglwcmludCAiCQkJfVxyXG4iOw0KCXByaW50ICIJCX1cclxuIjsNCglwcmludCAiCX1c
clxuIjsNCglwcmludCAiXHJcbiI7DQoJcHJpbnQgIglyZXR1cm4gc1J0O1xyXG4iOw0KCXByaW50
ICJ9XHJcbiI7DQoJcHJpbnQgIlxyXG4iOw0KCXByaW50ICJmdW5jdGlvbiBGaWxsUmV2VEIoUmV2
LCBpUm93LCBpQ29sKVxyXG4iOw0KCXByaW50ICJ7XHJcbiI7DQoJcHJpbnQgIgl2YXIgc1J0ID0g
e2lSb3c6IDAsIGlDb2w6IDB9O1xyXG4iOw0KCXByaW50ICIJaWYgKFJldi5hQnJjaC5sZW5ndGgg
PD0gMCAmJiBSZXYuYVRhZy5sZW5ndGggPD0gMClcclxuIjsNCglwcmludCAiCXtcclxuIjsNCglw
cmludCAiCQlyZXR1cm4gc1J0O1xyXG4iOw0KCXByaW50ICIJfVxyXG4iOw0KCXByaW50ICJcclxu
IjsNCglwcmludCAiCXNSdC5pQ29sID0gMTtcclxuIjsNCglwcmludCAiXHJcbiI7DQoJcHJpbnQg
Igl2YXIgaU1heENvbCA9IDA7XHJcbiI7DQoJcHJpbnQgIgl2YXIgaVJvd0xhc3QgPSBpUm93O1xy
XG4iOw0KCXByaW50ICIJZm9yICh2YXIgaSA9IDA7IGkgPCBSZXYuYUJyY2gubGVuZ3RoOyBpKysp
XHJcbiI7DQoJcHJpbnQgIgl7XHJcbiI7DQoJcHJpbnQgIgkJZm9yICh2YXIgaiA9IGlSb3dMYXN0
ICsgMTsgaiA8IGlSb3c7IGorKylcclxuIjsNCglwcmludCAiCQkJU1YoaiwgaUNvbCwgXCJ8XCIp
O1xyXG4iOw0KCXByaW50ICIJCWlSb3dMYXN0ID0gaVJvdztcclxuIjsNCglwcmludCAiXHJcbiI7
DQoJcHJpbnQgIgkJaWYgKGkgPT0gMClcclxuIjsNCglwcmludCAiCQl7XHJcbiI7DQoJcHJpbnQg
IgkJCWlmIChSZXYuYUJyY2gubGVuZ3RoID4gMSB8fCBSZXYuYVRhZy5sZW5ndGggPiAwKVxyXG4i
Ow0KCXByaW50ICIJCQkJU1YoaVJvdywgaUNvbCwgXCJUXCIpO1xyXG4iOw0KCXByaW50ICIJCQll
bHNlIFNWKGlSb3csIGlDb2wsIFwiLVwiKTtcclxuIjsNCglwcmludCAiCQl9XHJcbiI7DQoJcHJp
bnQgIgkJZWxzZSBpZiAoaSArIDEgPT0gUmV2LmFCcmNoLmxlbmd0aClcclxuIjsNCglwcmludCAi
CQl7XHJcbiI7DQoJcHJpbnQgIgkJCWlmIChSZXYuYVRhZy5sZW5ndGggPiAwKVxyXG4iOw0KCXBy
aW50ICIJCQkJU1YoaVJvdywgaUNvbCwgXCJFXCIpO1xyXG4iOw0KCXByaW50ICIJCQllbHNlIFNW
KGlSb3csIGlDb2wsIFwiTFwiKTtcclxuIjsNCglwcmludCAiCQl9XHJcbiI7DQoJcHJpbnQgIgkJ
ZWxzZSBTVihpUm93LCBpQ29sLCBcIkVcIik7XHJcbiI7DQoJcHJpbnQgIlxyXG4iOw0KCXByaW50
ICJcclxuIjsNCglwcmludCAiCQl2YXIgc0ZpbGwgPSBGaWxsQnJjaFRCKFJldi5hQnJjaFtpXSwg
aVJvdywgaUNvbCArIDEpXHJcbiI7DQoJcHJpbnQgIgkJaVJvdyArPSBzRmlsbC5pUm93O1xyXG4i
Ow0KCXByaW50ICIJCXNSdC5pUm93ICs9IHNGaWxsLmlSb3c7XHJcbiI7DQoJcHJpbnQgIlxyXG4i
Ow0KCXByaW50ICIJCWlmIChpICsgMSA8IFJldi5hQnJjaC5sZW5ndGggfHwgUmV2LmFUYWcubGVu
Z3RoID4gMClcclxuIjsNCglwcmludCAiCQl7XHJcbiI7DQoJcHJpbnQgIgkJCWlSb3crKztcclxu
IjsNCglwcmludCAiCQkJc1J0LmlSb3crKztcclxuIjsNCglwcmludCAiCQl9XHJcbiI7DQoJcHJp
bnQgIlxyXG4iOw0KCXByaW50ICIJCWlmIChpTWF4Q29sIDwgc0ZpbGwuaUNvbCkgaU1heENvbCA9
IHNGaWxsLmlDb2w7XHJcbiI7DQoJcHJpbnQgIgl9XHJcbiI7DQoJcHJpbnQgIlxyXG4iOw0KCXBy
aW50ICIJZm9yICh2YXIgaSA9IDA7IGkgPCBSZXYuYVRhZy5sZW5ndGg7IGkrKylcclxuIjsNCglw
cmludCAiCXtcclxuIjsNCglwcmludCAiCQlmb3IgKHZhciBqID0gaVJvd0xhc3QgKyAxOyBqIDwg
aVJvdzsgaisrKVxyXG4iOw0KCXByaW50ICIJCQlTVihqLCBpQ29sLCBcInxcIik7XHJcbiI7DQoJ
cHJpbnQgIgkJaVJvd0xhc3QgPSBpUm93O1xyXG4iOw0KCXByaW50ICJcclxuIjsNCglwcmludCAi
CQlpZiAoaSA9PSAwKVxyXG4iOw0KCXByaW50ICIJCXtcclxuIjsNCglwcmludCAiCQkJaWYgKFJl
di5hQnJjaC5sZW5ndGggPT0gMClcclxuIjsNCglwcmludCAiCQkJe1xyXG4iOw0KCXByaW50ICIJ
CQkJaWYgKFJldi5hVGFnLmxlbmd0aCA+IDEpIFNWKGlSb3csIGlDb2wsIFwiVFwiKTtcclxuIjsN
CglwcmludCAiCQkJCWVsc2UgU1YoaVJvdywgaUNvbCwgXCItXCIpO1xyXG4iOw0KCXByaW50ICIJ
CQl9XHJcbiI7DQoJcHJpbnQgIgkJCWVsc2UgaWYgKFJldi5hVGFnLmxlbmd0aCA+IDEpIFNWKGlS
b3csIGlDb2wsIFwiRVwiKTtcclxuIjsNCglwcmludCAiCQkJZWxzZSBTVihpUm93LCBpQ29sLCBc
IkxcIik7XHJcbiI7DQoJcHJpbnQgIgkJfVxyXG4iOw0KCXByaW50ICIJCWVsc2VcclxuIjsNCglw
cmludCAiCQl7XHJcbiI7DQoJcHJpbnQgIgkJCWlmIChpICsgMSA9PSBSZXYuYVRhZy5sZW5ndGgp
IFNWKGlSb3csIGlDb2wsIFwiTFwiKTtcclxuIjsNCglwcmludCAiCQkJZWxzZSBTVihpUm93LCBp
Q29sLCBcIkVcIik7XHJcbiI7DQoJcHJpbnQgIgkJfVxyXG4iOw0KCXByaW50ICJcclxuIjsNCglw
cmludCAiCQlTVihpUm93KyssIGlDb2wgKyAxLCBcIkdcIiArIFJldi5hVGFnW2ldICsgXCIsXCIg
KyBSZXYuTG9nKTtcclxuIjsNCglwcmludCAiCQlzUnQuaVJvdysrO1xyXG4iOw0KCXByaW50ICIJ
CWlmIChpICsgMSA8IFJldi5hVGFnLmxlbmd0aClcclxuIjsNCglwcmludCAiCQl7XHJcbiI7DQoJ
cHJpbnQgIgkJCWlSb3crKztcclxuIjsNCglwcmludCAiCQkJc1J0LmlSb3crKztcclxuIjsNCglw
cmludCAiCQl9XHJcbiI7DQoJcHJpbnQgIlxyXG4iOw0KCXByaW50ICIJCWlmIChpTWF4Q29sIDwg
MSkgaU1heENvbCA9IDE7XHJcbiI7DQoJcHJpbnQgIgl9XHJcbiI7DQoJcHJpbnQgIglzUnQuaUNv
bCArPSBpTWF4Q29sO1xyXG4iOw0KCXByaW50ICJcclxuIjsNCglwcmludCAiCXJldHVybiBzUnQ7
XHJcbiI7DQoJcHJpbnQgIn1cclxuIjsNCglwcmludCAiXHJcbiI7DQoJcHJpbnQgIkZpbGxCcmNo
VEIoYUJyYW5jaE9uZSwgMCwgMCk7XHJcbiI7DQoJcHJpbnQgIlxyXG4iOw0KCXByaW50ICJmdW5j
dGlvbiBTaG93TG9nKHNMb2cpXHJcbiI7DQoJcHJpbnQgIntcclxuIjsNCglwcmludCAiCXdpbmRv
dy5zdGF0dXMgPSB1bmVzY2FwZShzTG9nKTtcclxuIjsNCglwcmludCAifVxyXG4iOw0KCXByaW50
ICJcclxuIjsNCglwcmludCAiZnVuY3Rpb24gQ3JlYXRlQlQoc1Nob3cpXHJcbiI7DQoJcHJpbnQg
IntcclxuIjsNCglwcmludCAiCXZhciBzVHlwZSA9IHNTaG93LnN1YnN0cigwLCAxKTtcclxuIjsN
CglwcmludCAiCXNTaG93ID0gc1Nob3cuc3Vic3RyKDEpO1xyXG4iOw0KCXByaW50ICIJXHJcbiI7
DQoJcHJpbnQgIglpZiAoc1R5cGUgPT0gXCJCXCIpXHJcbiI7CglwcmludCAiCXtcclxuIjsNCglw
cmludCAiCQl2YXIgc1Jldiwgc0JyY2g7XHJcbiI7DQoJcHJpbnQgIgkJc1Nob3cgPSBzU2hvdy5z
cGxpdChcIixcIiwgMik7XHJcbiI7DQoJcHJpbnQgIgkJc1JldiA9IHNTaG93WzBdO1xyXG4iOw0K
CXByaW50ICIJCWlmIChzU2hvdy5sZW5ndGggPj0gMikgc0JyY2ggPSBzU2hvd1sxXTtcclxuIjsN
CglwcmludCAiCQllbHNlIHNCcmNoID0gc1JldjtcclxuIjsKCXByaW50ICIJCXJldHVybiBcIjx0
YWJsZSB3aWR0aD0xMDAlIGhlaWdodD0qIGJvcmRlcj0xIGJvcmRlcmNvbG9yPSM5OWNjMDAgY2Vs
bHNwYWNpbmc9MD48dHI+PHRkIGFsaWduPWNlbnRlciBiZ2NvbG9yPSNjY2ZmNjY+PG5vYnI+PEI+
PGEgaHJlZj1cJ1wiICsgc0ZpbGUgKyAoc1JldiA9PSBcJzFcJyA/IFwiP1wiOihcIj9vbmx5X3dp
dGhfdGFnPVwiICsgc0JyY2gpKSArIHNCYXJlcXVlcnkgKyBcIlwnPlwiICsgc0JyY2ggKyBcIjwv
YT48L0I+PC9ub2JyPjwvdGQ+PC90cj48L3RhYmxlPlwiO1xyXG4iOw0KCXByaW50ICIJfVxyXG4i
OwoJcHJpbnQgIgllbHNlXHJcbiI7DQoJcHJpbnQgIgl7XHJcbiI7DQoJcHJpbnQgIgkJdmFyIHNS
ZXYsIHNMb2c7XHJcbiI7DQoJcHJpbnQgIgkJc1Nob3cgPSBzU2hvdy5zcGxpdChcIixcIiwgMik7
XHJcbiI7DQoJcHJpbnQgIgkJc1JldiA9IHNTaG93WzBdO1xyXG4iOw0KCXByaW50ICIJCWlmIChz
U2hvdy5sZW5ndGggPj0gMikgc0xvZyA9IHNTaG93WzFdO1xyXG4iOw0KCXByaW50ICIJCWVsc2Ug
c0xvZyA9IFwiXCI7XHJcbiI7DQoJcHJpbnQgIgkJc0xvZyA9IGVzY2FwZShzTG9nKTtcclxuIjsN
CglwcmludCAiXHJcbiI7DQoJcHJpbnQgIgkJaWYgKHNUeXBlID09IFwiR1wiKVxyXG4iOw0KCXBy
aW50ICIJCQlyZXR1cm4gXCI8dGFibGUgd2lkdGg9MTAwJSBoZWlnaHQ9KiBib3JkZXI9MSBib3Jk
ZXJjb2xvcj0jNjZjY2ZmIGNlbGxzcGFjaW5nPTA+PHRyPjx0ZCBhbGlnbj1jZW50ZXIgYmdjb2xv
cj0jY2NmZmZmPjxub2JyPjxCPjxhIG9ubW91c2Vtb3ZlPVwnU2hvd0xvZyhcXFwiXCIgKyBzTG9n
ICsgXCJcXFwiKVwnIGhyZWY9XCdcIiArIHNGaWxlICsgXCI/b25seV93aXRoX3RhZz1cIiArIHNS
ZXYgKyBzQmFyZXF1ZXJ5ICsgXCJcJz5cIiArIHNSZXYgKyBcIjwvYT48L0I+PC9ub2JyPjwvdGQ+
PC90cj48L3RhYmxlPlwiO1xyXG4iOw0KCXByaW50ICIJCWVsc2UgaWYgKHNUeXBlID09IFwiVlwi
KVxyXG4iOw0KCXByaW50ICIJCQlyZXR1cm4gXCI8dGFibGUgd2lkdGg9MTAwJSBoZWlnaHQ9KiBi
b3JkZXI9MSBib3JkZXJjb2xvcj0jZmZjYzY2IGNlbGxzcGFjaW5nPTA+PHRyPjx0ZCBhbGlnbj1j
ZW50ZXIgYmdjb2xvcj0jZmZmZmNjPjxub2JyPjxCPjxhIG9ubW91c2Vtb3ZlPVwnU2hvd0xvZyhc
XFwiXCIgKyBzTG9nICsgXCJcXFwiKVwnIGhyZWY9XCdcIiArIHNGaWxlICsgXCI/cmV2PVwiICsg
c1JldiArIFwiJmNvbnRlbnQtdHlwZT10ZXh0L3gtY3Zzd2ViLW1hcmt1cFwiICsgc0JhcmVxdWVy
eSArIFwiXCc+XCIgKyBzUmV2ICsgXCI8L2E+PC9CPjwvbm9icj48L3RkPjwvdHI+PC90YWJsZT5c
IjtcclxuIjsNCglwcmludCAiCX1cclxuIjsNCglwcmludCAifVxyXG4iOw0KCXByaW50ICJcclxu
IjsNCglwcmludCAidmFyIE5UQ29sID0gNztcclxuIjsNCglwcmludCAidmFyIE5UUm93ID0gMztc
clxuIjsNCglwcmludCAidmFyIHMgPSBcIlwiO1xyXG4iOw0KCXByaW50ICJmb3IgKHZhciBpID0g
MDsgaSA8IGFUQi5sZW5ndGg7IGkrKylcclxuIjsNCglwcmludCAie1xyXG4iOw0KCXByaW50ICIJ
Zm9yIChuID0gMDsgbiA8IE5UUm93OyBuKyspXHJcbiI7DQoJcHJpbnQgIgl7XHJcbiI7DQoJcHJp
bnQgIgkJcyArPSBcIjx0cj5cIjtcclxuIjsNCglwcmludCAiCQlmb3IgKHZhciBqID0gMDsgaiA8
IGFUQltpXS5sZW5ndGg7IGorKylcclxuIjsNCglwcmludCAiCQl7XHJcbiI7DQoJcHJpbnQgIgkJ
CWlmICh0eXBlb2YoYVRCW2ldW2pdKSA9PSBcInVuZGVmaW5lZFwiKVxyXG4iOw0KCXByaW50ICIJ
CQl7XHJcbiI7DQoJcHJpbnQgIgkJCQlpZiAobiA9PSAwKQlzICs9IFwiPHRkIGNvbHNwYW49XCIg
KyBOVENvbCArIFwiIHJvd3NwYW49XCIgKyBOVFJvdyArIFwiPjxmb250IHNpemU9MT4mbmJzcDs8
L2ZvbnQ+PC90ZD5cIjtcclxuIjsNCglwcmludCAiCQkJfVxyXG4iOw0KCXByaW50ICIJCQllbHNl
IGlmIChhVEJbaV1bal0gPT0gXCItXCIpXHJcbiI7DQoJcHJpbnQgIgkJCXtcclxuIjsNCglwcmlu
dCAiCQkJCWlmIChuICE9IE1hdGguZmxvb3IoTlRSb3cgLyAyKSkgcyArPSBcIjx0ZCBoZWlnaHQ9
NiBjb2xzcGFuPVwiICsgTlRDb2wgKyBcIj48L3RkPlwiO1xyXG4iOw0KCXByaW50ICIJCQkJZWxz
ZSBzICs9IFwiPHRkIGhlaWdodD0zIGNvbHNwYW49XCIgKyBOVENvbCArIFwiIGJnY29sb3I9I2Zm
Y2M2Nj48Zm9udCBzaXplPTE+Jm5ic3A7PC9mb250PjwvdGQ+XCI7XHJcbiI7DQoJcHJpbnQgIgkJ
CX1cclxuIjsNCglwcmludCAiCQkJZWxzZSBpZiAoYVRCW2ldW2pdID09IFwifFwiKVxyXG4iOw0K
CXByaW50ICIJCQl7XHJcbiI7DQoJcHJpbnQgIgkJCQlpZiAobiA9PSAwKVxyXG4iOw0KCXByaW50
ICIJCQkJe1xyXG4iOw0KCXByaW50ICIJCQkJCWZvciAodmFyIGsgPSAxOyBrIDwgTlRDb2wgLyAy
OyBrKyspXHJcbiI7DQoJcHJpbnQgIgkJCQkJCXMgKz0gXCI8dGQgcm93c3Bhbj1cIiArIE5UUm93
ICsgXCI+PGZvbnQgc2l6ZT0xPiZuYnNwOzwvZm9udD48L3RkPlwiO1xyXG4iOw0KCXByaW50ICIJ
CQkJCXMgKz0gXCI8dGQgd2lkdGg9OCByb3dzcGFuPVwiICsgTlRSb3cgKyBcIiBiZ2NvbG9yPSNm
ZmNjNjY+PGZvbnQgc2l6ZT0xPiZuYnNwOzwvZm9udD48L3RkPlwiO1xyXG4iOw0KCXByaW50ICIJ
CQkJCWZvciAodmFyIGsgPSAxOyBrIDwgTlRDb2wgLyAyOyBrKyspXHJcbiI7DQoJcHJpbnQgIgkJ
CQkJCXMgKz0gXCI8dGQgcm93c3Bhbj1cIiArIE5UUm93ICsgXCI+PGZvbnQgc2l6ZT0xPiZuYnNw
OzwvZm9udD48L3RkPlwiO1xyXG4iOw0KCXByaW50ICIJCQkJfVxyXG4iOw0KCXByaW50ICIJCQl9
XHJcbiI7DQoJcHJpbnQgIgkJCWVsc2UgaWYgKGFUQltpXVtqXSA9PSBcJ0VcJylcclxuIjsNCglw
cmludCAiCQkJe1xyXG4iOw0KCXByaW50ICIJCQkJaWYgKG4gIT0gTWF0aC5mbG9vcihOVFJvdyAv
IDIpKVxyXG4iOw0KCXByaW50ICIJCQkJe1xyXG4iOw0KCXByaW50ICIJCQkJCWZvciAodmFyIGsg
PSAxOyBrIDwgTlRDb2wgLyAyOyBrKyspXHJcbiI7DQoJcHJpbnQgIgkJCQkJCXMgKz0gXCI8dGQg
d2lkdGg9MyBoZWlnaHQ9Nj48L3RkPlwiO1xyXG4iOw0KCXByaW50ICIJCQkJCXMgKz0gXCI8dGQg
d2lkdGg9OCBoZWlnaHQ9MSBiZ2NvbG9yPSNmZmNjNjY+PC90ZD5cIjtcclxuIjsNCglwcmludCAi
CQkJCQlmb3IgKHZhciBrID0gMTsgayA8IE5UQ29sIC8gMjsgaysrKVxyXG4iOw0KCXByaW50ICIJ
CQkJCQlzICs9IFwiPHRkIHdpZHRoPTMgaGVpZ2h0PTY+PC90ZD5cIjtcclxuIjsNCglwcmludCAi
CQkJCX1cclxuIjsNCglwcmludCAiCQkJCWVsc2VcclxuIjsNCglwcmludCAiCQkJCXtcclxuIjsN
CglwcmludCAiCQkJCQlmb3IgKHZhciBrID0gMTsgayA8IE5UQ29sIC8gMjsgaysrKVxyXG4iOw0K
CXByaW50ICIJCQkJCQlzICs9IFwiPHRkPjwvdGQ+XCI7XHJcbiI7DQoJcHJpbnQgIgkJCQkJZm9y
ICgtLWs7IGsgPCBOVENvbDsgaysrKVxyXG4iOw0KCXByaW50ICIJCQkJCQlzICs9IFwiPHRkIGhl
aWdodD0zIGJnY29sb3I9I2ZmY2M2Nj48Zm9udCBzaXplPTE+Jm5ic3A7PC9mb250PjwvdGQ+XCI7
XHJcbiI7DQoJcHJpbnQgIgkJCQl9XHJcbiI7DQoJcHJpbnQgIgkJCX1cclxuIjsNCglwcmludCAi
CQkJZWxzZSBpZiAoYVRCW2ldW2pdID09IFwnTFwnKVxyXG4iOw0KCXByaW50ICIJCQl7XHJcbiI7
DQoJcHJpbnQgIgkJCQlpZiAobiA8IE1hdGguZmxvb3IoTlRSb3cgLyAyKSlcclxuIjsNCglwcmlu
dCAiCQkJCXtcclxuIjsNCglwcmludCAiCQkJCQlmb3IgKHZhciBrID0gMTsgayA8IE5UQ29sIC8g
MjsgaysrKVxyXG4iOw0KCXByaW50ICIJCQkJCQlzICs9IFwiPHRkIHdpZHRoPTMgaGVpZ2h0PTY+
PC90ZD5cIjtcclxuIjsNCglwcmludCAiCQkJCQlzICs9IFwiPHRkIHdpZHRoPTggaGVpZ2h0PTEg
Ymdjb2xvcj0jZmZjYzY2PjwvdGQ+XCI7XHJcbiI7DQoJcHJpbnQgIgkJCQkJZm9yICh2YXIgayA9
IDE7IGsgPCBOVENvbCAvIDI7IGsrKylcclxuIjsNCglwcmludCAiCQkJCQkJcyArPSBcIjx0ZCB3
aWR0aD0zIGhlaWdodD02PjwvdGQ+XCI7XHJcbiI7DQoJcHJpbnQgIgkJCQl9XHJcbiI7DQoJcHJp
bnQgIgkJCQllbHNlIGlmIChuID09IE1hdGguZmxvb3IoTlRSb3cgLyAyKSlcclxuIjsNCglwcmlu
dCAiCQkJCXtcclxuIjsNCglwcmludCAiCQkJCQlmb3IgKHZhciBrID0gMTsgayA8IE5UQ29sIC8g
MjsgaysrKVxyXG4iOw0KCXByaW50ICIJCQkJCQlzICs9IFwiPHRkID48Zm9udCBzaXplPTE+Jm5i
c3A7PC9mb250PjwvdGQ+XCI7XHJcbiI7DQoJcHJpbnQgIgkJCQkJZm9yICgtLWs7IGsgPCBOVENv
bDsgaysrKVxyXG4iOw0KCXByaW50ICIJCQkJCQlzICs9IFwiPHRkIGJnY29sb3I9I2ZmY2M2Nj48
Zm9udCBzaXplPTE+Jm5ic3A7PC9mb250PjwvdGQ+XCI7XHJcbiI7DQoJcHJpbnQgIgkJCQl9XHJc
biI7DQoJcHJpbnQgIgkJCQllbHNlXHJcbiI7DQoJcHJpbnQgIgkJCQl7XHJcbiI7DQoJcHJpbnQg
IgkJCQkJZm9yICh2YXIgayA9IDA7IGsgPCBOVENvbDsgaysrKVxyXG4iOw0KCXByaW50ICIJCQkJ
CQlzICs9IFwiPHRkIGhlaWdodD02PjwvdGQ+XCI7XHJcbiI7DQoJcHJpbnQgIgkJCQl9XHJcbiI7
DQoJcHJpbnQgIgkJCX1cclxuIjsNCglwcmludCAiCQkJZWxzZSBpZiAoYVRCW2ldW2pdID09IFwi
VFwiKVxyXG4iOw0KCXByaW50ICIJCQl7XHJcbiI7DQoJcHJpbnQgIgkJCQlpZiAobiA8IE1hdGgu
Zmxvb3IoTlRSb3cgLyAyKSlcclxuIjsNCglwcmludCAiCQkJCXtcclxuIjsNCglwcmludCAiCQkJ
CQlmb3IgKHZhciBrID0gMDsgayA8IE5UQ29sOyBrKyspXHJcbiI7DQoJcHJpbnQgIgkJCQkJCXMg
Kz0gXCI8dGQgaGVpZ2h0PTY+PC90ZD5cIjtcclxuIjsNCglwcmludCAiCQkJCX1cclxuIjsNCglw
cmludCAiCQkJCWVsc2UgaWYgKG4gPT0gTWF0aC5mbG9vcihOVFJvdyAvIDIpKVxyXG4iOw0KCXBy
aW50ICIJCQkJe1xyXG4iOw0KCXByaW50ICIJCQkJCWZvciAoayA9IDA7IGsgPCBOVENvbDsgaysr
KVxyXG4iOw0KCXByaW50ICIJCQkJCQlzICs9IFwiPHRkIGhlaWd0aD0zIGJnY29sb3I9I2ZmY2M2
Nj48Zm9udCBzaXplPTE+Jm5ic3A7PC9mb250PjwvdGQ+XCI7XHJcbiI7DQoJcHJpbnQgIgkJCQl9
XHJcbiI7DQoJcHJpbnQgIgkJCQllbHNlXHJcbiI7DQoJcHJpbnQgIgkJCQl7XHJcbiI7DQoJcHJp
bnQgIgkJCQkJZm9yICh2YXIgayA9IDE7IGsgPCBOVENvbCAvIDI7IGsrKylcclxuIjsNCglwcmlu
dCAiCQkJCQkJcyArPSBcIjx0ZCBoZWlnaHQ9NiB3aWR0aD0zPjwvdGQ+XCI7XHJcbiI7DQoJcHJp
bnQgIgkJCQkJcyArPSBcIjx0ZCB3aWR0aD04IGJnY29sb3I9I2ZmY2M2Nj48L3RkPlwiO1xyXG4i
Ow0KCXByaW50ICIJCQkJCWZvciAodmFyIGsgPSAxOyBrIDwgTlRDb2wgLyAyOyBrKyspXHJcbiI7
DQoJcHJpbnQgIgkJCQkJCXMgKz0gXCI8dGQgd2lkdGg9Mz48L3RkPlwiO1xyXG4iOw0KCXByaW50
ICIJCQkJfVxyXG4iOw0KCXByaW50ICIJCQl9XHJcbiI7DQoJcHJpbnQgIgkJCWVsc2VcclxuIjsN
CglwcmludCAiCQkJe1xyXG4iOw0KCXByaW50ICIJCQkJaWYgKG4gPT0gMCkJcyArPSBcIjx0ZCBh
bGlnbj1jZW50ZXIgY29sc3Bhbj1cIiArIE5UQ29sICsgXCIgcm93c3Bhbj1cIiArIE5UUm93ICsg
XCI+XCIgKyBDcmVhdGVCVChhVEJbaV1bal0pICsgXCI8L3RkPlwiO1xyXG4iOw0KCXByaW50ICIJ
CQl9XHJcbiI7DQoJcHJpbnQgIgkJfVxyXG4iOw0KCXByaW50ICIJCXMgKz0gXCI8L3RyPlwiO1xy
XG4iOw0KCXByaW50ICIJfVxyXG4iOw0KCXByaW50ICJ9XHJcbiI7DQoJcHJpbnQgImRvY3VtZW50
LndyaXRlKFwiPHRhYmxlIGJvcmRlcj0wIGNlbGxzcGFjaW5nPTAgY2VsbHBhZGRpbmc9MD48Zm9y
bT5cIiArIHMgKyBcIjwvZm9ybT48L3RhYmxlPlwiKTtcbiI7DQoKCXByaW50ICI8L3NjcmlwdD5c
biI7CglwcmludCAiPC94bXA+IiBpZiAkc2hvd2NvZGU7CgoKCWh0bWxfZm9vdGVyKCk7Cn0KCnN1
YiBkb0xvZygkKSB7CglteSAoJGZ1bGxuYW1lKSA9IEBfOwoJbXkgKCRkaWZmcmV2LCAkdXB3aGVy
ZSwgJGZpbGVuYW1lLCAkYmFja3VybCk7CgoJcmVhZExvZygkZnVsbG5hbWUpOwoKCWh0bWxfaGVh
ZGVyKCJDVlMgbG9nIGZvciAkd2hlcmUiKTsKCSgkdXB3aGVyZSAgPSAkd2hlcmUpID1+IHN8KEF0
dGljLyk/W14vXSskfHw7CgkoJGZpbGVuYW1lID0gJHdoZXJlKSA9fiBzfF4uKi98fDsKCSRiYWNr
dXJsID0gJHNjcmlwdG5hbWUgLiAiLyIgLiB1cmxlbmNvZGUoJHVwd2hlcmUpIC4gJHF1ZXJ5OwoJ
cHJpbnQgIjxwPlxuICI7CglwcmludCAmbGluaygkYmFja2ljb24sICIkYmFja3VybCMkZmlsZW5h
bWUiKSwgIiA8Yj5VcCB0byAiLAoJICAgICZjbGlja2FibGVQYXRoKCR1cHdoZXJlLCAxKSwgIjwv
Yj5cbjwvcD5cbiI7CglwcmludCAiPHA+XG4gIjsKCXByaW50ICZsaW5rKCdSZXF1ZXN0IGRpZmYg
YmV0d2VlbiBhcmJpdHJhcnkgcmV2aXNpb25zJywgJyNkaWZmJyk7CglwcmludCAiXG48L3A+XG48
aHIgbm9zaGFkZT5cbiI7CgoJcHJpbnQgIjxwPlxuIjsKCWlmICgkY3VyYnJhbmNoKSB7CgkJcHJp
bnQgIkRlZmF1bHQgYnJhbmNoOiAiLCAoJHJldnN5bXskY3VyYnJhbmNofSB8fCAkY3VyYnJhbmNo
KTsKCX0gZWxzZSB7CgkJcHJpbnQgIk5vIGRlZmF1bHQgYnJhbmNoIjsKCX0KCXByaW50ICI8YnI+
XG4iOwoKCWlmICgkaW5wdXR7b25seV93aXRoX3RhZ30pIHsKCQlwcmludCAiQ3VycmVudCB0YWc6
ICRpbnB1dHtvbmx5X3dpdGhfdGFnfTxicj5cbiI7Cgl9CglwcmludCAiPC9wPlxuIjsKCgl1bmRl
ZiAlbmFtZXByaW50ZWQ7CgoJZm9yIChteSAkaSA9IDAgOyAkaSA8PSAkI3JldmRpc3BsYXlvcmRl
ciA7ICRpKyspIHsKCQlwcmludCAiPGhyIHNpemU9XCIxXCIgbm9zaGFkZT5cbiI7CgkJcHJpbnRM
b2coJHJldmRpc3BsYXlvcmRlclskaV0pOwoJfQoKCXByaW50ICI8aHIgbm9zaGFkZT5cbjxwPlxu
IjsKCXByaW50ICI8YSBuYW1lPVwiZGlmZlwiPlxuIjsKCXByaW50ICJUaGlzIGZvcm0gYWxsb3dz
IHlvdSB0byByZXF1ZXN0IGRpZmYncyBiZXR3ZWVuIGFueSB0d29cbiI7CglwcmludCAicmV2aXNp
b25zIG9mIGEgZmlsZS4gIFlvdSBtYXkgc2VsZWN0IGEgc3ltYm9saWMgcmV2aXNpb25cbiI7Cglw
cmludCAibmFtZSB1c2luZyB0aGUgc2VsZWN0aW9uIGJveCBvciB5b3UgbWF5IHR5cGUgaW4gYSBu
dW1lcmljXG4iOwoJcHJpbnQgIm5hbWUgdXNpbmcgdGhlIHR5cGUtaW4gdGV4dCBib3guXG4iOwoJ
cHJpbnQgIjwvYT5cbjwvcD5cbiI7CglwcmludAoJICAgICI8Zm9ybSBtZXRob2Q9XCJnZXRcIiBh
Y3Rpb249XCIke3NjcmlwdHdoZXJlfS5kaWZmXCIgbmFtZT1cImRpZmZfc2VsZWN0XCI+XG4iOwoK
CWZvcmVhY2ggKEBzdGlja3l2YXJzKSB7CgkJcHJpbnRmKCc8aW5wdXQgdHlwZT0iaGlkZGVuIiBu
YW1lPSIlcyIgdmFsdWU9IiVzIj4nLCAkXywKCQkgICAgJGlucHV0eyRffSkKCQkgICAgaWYgKGRl
ZmluZWQoJGlucHV0eyRffSkKCQkgICAgJiYgKCghZGVmaW5lZCgkREVGQVVMVFZBTFVFeyRffSkK
CQkgICAgfHwgJGlucHV0eyRffSBuZSAkREVGQVVMVFZBTFVFeyRffSkgJiYgJGlucHV0eyRffSBu
ZSAiIikpOwoJfQoJcHJpbnQgIjx0YWJsZSBzdHlsZT1cImJvcmRlcjogbm9uZVwiPlxuPHRyPlxu
IjsKCXByaW50ICI8dGQgYWxpZ249XCJyaWdodFwiPiI7CglwcmludCAiPGxhYmVsIGZvcj1cInIx
XCIgYWNjZXNza2V5PVwiMVwiPkRpZmZzIGJldHdlZW4gPC9sYWJlbD5cbiI7CglwcmludCAiPHNl
bGVjdCBpZD1cInIxXCIgbmFtZT1cInIxXCI+XG4iOwoJcHJpbnQgIjxvcHRpb24gdmFsdWU9XCJ0
ZXh0XCIgc2VsZWN0ZWQ+VXNlIFRleHQgRmllbGQ8L29wdGlvbj5cbiI7CglwcmludCAkc2VsOwoJ
cHJpbnQgIjwvc2VsZWN0PlxuIjsKCSRkaWZmcmV2ID0gJHJldmRpc3BsYXlvcmRlclskI3JldmRp
c3BsYXlvcmRlcl07CgkkZGlmZnJldiA9ICRpbnB1dHsicjEifSBpZiAoZGVmaW5lZCgkaW5wdXR7
InIxIn0pKTsKCXByaW50CgkgICAgIjxpbnB1dCB0eXBlPVwidGV4dFwiIHNpemU9XCIkaW5wdXRU
ZXh0U2l6ZVwiIG5hbWU9XCJ0cjFcIiB2YWx1ZT1cIiRkaWZmcmV2XCIgb25jaGFuZ2U9XCJ0aGlz
LmZvcm0ucjEuc2VsZWN0ZWRJbmRleD0wXCI+PC90ZD5cbiI7CglwcmludCAiPHRkPjxicj48L3Rk
PlxuPC90cj5cbiI7CglwcmludCAiPHRyPlxuPHRkIGFsaWduPVwicmlnaHRcIj4iOwoJcHJpbnQg
IjxsYWJlbCBmb3I9XCJyMlwiIGFjY2Vzc2tleT1cIjJcIj5hbmQgPC9sYWJlbD5cbiI7Cglwcmlu
dCAiPHNlbGVjdCBpZD1cInIyXCIgbmFtZT1cInIyXCI+XG4iOwoJcHJpbnQgIjxvcHRpb24gdmFs
dWU9XCJ0ZXh0XCIgc2VsZWN0ZWQ+VXNlIFRleHQgRmllbGQ8L29wdGlvbj5cbiI7CglwcmludCAk
c2VsOwoJcHJpbnQgIjwvc2VsZWN0PlxuIjsKCSRkaWZmcmV2ID0gJHJldmRpc3BsYXlvcmRlclsw
XTsKCSRkaWZmcmV2ID0gJGlucHV0eyJyMiJ9IGlmIChkZWZpbmVkKCRpbnB1dHsicjIifSkpOwoJ
cHJpbnQKCSAgICAiPGlucHV0IHR5cGU9XCJ0ZXh0XCIgc2l6ZT1cIiRpbnB1dFRleHRTaXplXCIg
bmFtZT1cInRyMlwiIHZhbHVlPVwiJGRpZmZyZXZcIiBvbmNoYW5nZT1cInRoaXMuZm9ybS5yMi5z
ZWxlY3RlZEluZGV4PTBcIj48L3RkPlxuIjsKCXByaW50ICI8dGQ+PGlucHV0IHR5cGU9XCJzdWJt
aXRcIiB2YWx1ZT1cIiAgR2V0IERpZmZzICBcIiBhY2Nlc3NrZXk9XCJHXCI+PC90ZD5cbiI7Cglw
cmludCAiPC90cj5cbjwvdGFibGU+XG4iOwoJcHJpbnQgIjwvZm9ybT5cbiI7CglwcmludCAiPGhy
IG5vc2hhZGU+XG4iOwoJcHJpbnQgIjxmb3JtIG1ldGhvZD1cImdldFwiIGFjdGlvbj1cIiRzY3Jp
cHR3aGVyZVwiPlxuIjsKCXByaW50ICI8dGFibGUgc3R5bGU9XCJib3JkZXI6IG5vbmVcIj5cbiI7
CglwcmludCAiPHRyPlxuPHRkIGFsaWduPVwicmlnaHRcIj4iOwoJcHJpbnQgIjxsYWJlbCBmb3I9
XCJmXCIgYWNjZXNza2V5PVwiRFwiPlByZWZlcnJlZCBEaWZmIHR5cGU6IjsKCXByaW50ICI8L2xh
YmVsPjwvdGQ+XG4iOwoJcHJpbnQgIjx0ZD4iOwoJcHJpbnREaWZmU2VsZWN0KCR1c2VfamF2YV9z
Y3JpcHQpOwoJcHJpbnQgIjwvdGQ+XG48dGQ+PC90ZD5cbjwvdHI+XG4iOwoKCWlmIChAYnJhbmNo
bmFtZXMpIHsKCQlwcmludCAiPHRyPlxuPHRkIGFsaWduPVwicmlnaHRcIj4iOwoJCXByaW50ICI8
bGFiZWwgZm9yPVwib25seV93aXRoX3RhZ1wiIGFjY2Vzc2tleT1cIkJcIj4iOwoJCXByaW50ICJW
aWV3IG9ubHkgQnJhbmNoOjwvbGFiZWw+PC90ZD5cbiI7CgkJcHJpbnQgIjx0ZD4iOwoJCXByaW50
ICI8YSBuYW1lPVwiYnJhbmNoXCI+PC9hPlxuIjsKCQlwcmludCAiPHNlbGVjdCBpZD1cIm9ubHlf
d2l0aF90YWdcIiBuYW1lPVwib25seV93aXRoX3RhZ1wiIjsKCQlwcmludCAiIG9uY2hhbmdlPVwi
dGhpcy5mb3JtLnN1Ym1pdCgpXCIiIGlmICR1c2VfamF2YV9zY3JpcHQ7CgkJcHJpbnQgIj5cbiI7
CgkJcHJpbnQgIjxvcHRpb24gdmFsdWU9XCJcIiI7CgkJcHJpbnQgIiBzZWxlY3RlZCIKCQkgICAg
aWYgKGRlZmluZWQoJGlucHV0eyJvbmx5X3dpdGhfdGFnIn0pCgkJICAgICYmICRpbnB1dHsib25s
eV93aXRoX3RhZyJ9IGVxICIiKTsKCQlwcmludCAiPlNob3cgYWxsIGJyYW5jaGVzPC9vcHRpb24+
XG4iOwoKCQlmb3JlYWNoIChyZXZlcnNlIHNvcnQgQGJyYW5jaG5hbWVzKSB7CgkJCXByaW50ICI8
b3B0aW9uIjsKCQkJcHJpbnQgIiBzZWxlY3RlZCIKCQkJICAgIGlmIChkZWZpbmVkKCRpbnB1dHsi
b25seV93aXRoX3RhZyJ9KQoJCQkgICAgJiYgJGlucHV0eyJvbmx5X3dpdGhfdGFnIn0gZXEgJF8p
OwoJCQlwcmludCAiPiR7X308L29wdGlvbj5cbiI7CgkJfQoJCXByaW50ICI8L3NlbGVjdD48L3Rk
PlxuPHRkPjwvdGQ+XG48L3RyPlxuIjsKCX0KCglmb3JlYWNoIChAc3RpY2t5dmFycykgewoJCW5l
eHQgaWYgKCRfIGVxICJmIik7CgkJbmV4dCBpZiAoJF8gZXEgIm9ubHlfd2l0aF90YWciKTsKCQlu
ZXh0IGlmICgkXyBlcSAibG9nc29ydCIpOwoJCXByaW50ICI8aW5wdXQgdHlwZT1cImhpZGRlblwi
IG5hbWU9XCIkX1wiIHZhbHVlPVwiJGlucHV0eyRffVwiPlxuIgoJCSAgICBpZiAoZGVmaW5lZCgk
aW5wdXR7JF99KQoJCSAgICAmJiAoIWRlZmluZWQoJERFRkFVTFRWQUxVRXskX30pCgkJICAgIHx8
ICRpbnB1dHskX30gbmUgJERFRkFVTFRWQUxVRXskX30pICYmICRpbnB1dHskX30gbmUgIiIpOwoJ
fQoJcHJpbnQgIjx0cj5cbjx0ZCBhbGlnbj1cInJpZ2h0XCI+IjsKCXByaW50ICI8YSBuYW1lPVwi
bG9nc29ydFwiPjwvYT5cbiI7CglwcmludCAiPGxhYmVsIGZvcj1cImxvZ3NvcnRcIiBhY2Nlc3Nr
ZXk9XCJMXCI+U29ydCBsb2cgYnk6IjsKCXByaW50ICI8L2xhYmVsPjwvdGQ+XG48dGQ+IjsKCXBy
aW50TG9nU29ydFNlbGVjdCgkdXNlX2phdmFfc2NyaXB0KTsKCXByaW50ICI8L3RkPlxuIjsKCXBy
aW50ICI8dGQ+PGlucHV0IHR5cGU9XCJzdWJtaXRcIiB2YWx1ZT1cIiAgU2V0ICBcIiBhY2Nlc3Nr
ZXk9XCJTXCI+PC90ZD5cbiI7CglwcmludCAiPC90cj5cbjwvdGFibGU+XG4iOwoJcHJpbnQgIjwv
Zm9ybT5cbiI7CglodG1sX2Zvb3RlcigpOwp9CgpzdWIgZmx1c2hfZGlmZl9yb3dzKCQkJCQpIHsK
CW15ICRqOwoJbXkgKCRsZWZ0Q29sUmVmLCAkcmlnaHRDb2xSZWYsICRsZWZ0Um93LCAkcmlnaHRS
b3cpID0gQF87CgoJaWYgKCFkZWZpbmVkKCRzdGF0ZSkpIHsKCQlyZXR1cm47Cgl9CgoJaWYgKCRz
dGF0ZSBlcSAiUHJlQ2hhbmdlUmVtb3ZlIikgeyAgICAjIHdlIGp1c3QgZ290IHJlbW92ZS1saW5l
cyBiZWZvcmUKCQlmb3IgKCRqID0gMCA7ICRqIDwgJGxlZnRSb3cgOyAkaisrKSB7CgkJCXByaW50
CgkJCSAgICAiPHRyPlxuPHRkIGNsYXNzPVwiZGlmZi1yZW1vdmVkXCI+Jm5ic3A7QCRsZWZ0Q29s
UmVmWyRqXTwvdGQ+XG4iOwoJCQlwcmludAoJCQkgICAgIjx0ZCBjbGFzcz1cImRpZmYtZW1wdHlc
Ij4mbmJzcDs8L3RkPlxuPC90cj5cbiI7CgkJfQoJfSBlbHNpZiAoJHN0YXRlIGVxICJQcmVDaGFu
Z2UiKSB7ICAgICMgc3RhdGUgZXEgIlByZUNoYW5nZSIKCQkgICAgIyB3ZSBnb3QgcmVtb3ZlcyB3
aXRoIHN1YnNlcXVlbnQgYWRkcwoKCQlmb3IgKCRqID0gMCA7ICRqIDwgJGxlZnRSb3cgfHwgJGog
PCAkcmlnaHRSb3cgOyAkaisrKQoJCXsgICAgIyBkdW1wIG91dCBib3RoIGNvbHMKCQkJcHJpbnQg
Ijx0cj5cbiI7CgkJCWlmICgkaiA8ICRsZWZ0Um93KSB7CgkJCQlwcmludAoJCQkJICAgICI8dGQg
Y2xhc3M9XCJkaWZmLWNoYW5nZWRcIj4mbmJzcDtAJGxlZnRDb2xSZWZbJGpdPC90ZD4iOwoJCQl9
IGVsc2UgewoJCQkJcHJpbnQKCQkJCSAgICAiPHRkIGNsYXNzPVwiZGlmZi1jaGFuZ2VkLW1pc3Np
bmdcIj4mbmJzcDs8L3RkPiI7CgkJCX0KCQkJcHJpbnQgIlxuIjsKCgkJCWlmICgkaiA8ICRyaWdo
dFJvdykgewoJCQkJcHJpbnQKCQkJCSAgICAiPHRkIGNsYXNzPVwiZGlmZi1jaGFuZ2VkXCI+Jm5i
c3A7QCRyaWdodENvbFJlZlskal08L3RkPiI7CgkJCX0gZWxzZSB7CgkJCQlwcmludAoJCQkJICAg
ICI8dGQgY2xhc3M9XCJkaWZmLWNoYW5nZWQtbWlzc2luZ1wiPiZuYnNwOzwvdGQ+IjsKCQkJfQoJ
CQlwcmludCAiXG48L3RyPlxuIjsKCQl9Cgl9Cn0KCiMjCiMgRnVuY3Rpb24gdG8gZ2VuZXJhdGUg
SHVtYW4gcmVhZGFibGUgZGlmZi1maWxlcwojIGh1bWFuX3JlYWRhYmxlX2RpZmYoU3RyaW5nIHJl
dmlzaW9uX3RvX3JldHVybl90byk7CiMjCnN1YiBodW1hbl9yZWFkYWJsZV9kaWZmKCQpIHsKCW15
ICgkZGlmZnR4dCwgJHdoZXJlX25kLCAkZmlsZW5hbWUsICRwYXRobmFtZSwgJHNjcmlwdHdoZXJl
X25kKTsKCW15ICgkZmgsICRyZXYpID0gQF87CglteSAoJGRhdGUxLCAkZGF0ZTIsICRyMWQsICRy
MmQsICRyMXIsICRyMnIsICRyZXYxLCAkcmV2MiwgJHN5bTEsICRzeW0yKTsKCW15IChAcmlnaHRD
b2wsIEBsZWZ0Q29sKTsKCgkoJHdoZXJlX25kICAgICAgID0gJHdoZXJlKSAgICAgICA9fiBzLy5k
aWZmJC8vOwoJKCRmaWxlbmFtZSAgICAgICA9ICR3aGVyZV9uZCkgICAgPX4gcy9eLipcLy8vOwoJ
KCRwYXRobmFtZSAgICAgICA9ICR3aGVyZV9uZCkgICAgPX4gcy8oQXR0aWNcLyk/W15cL10qJC8v
OwoJKCRzY3JpcHR3aGVyZV9uZCA9ICRzY3JpcHR3aGVyZSkgPX4gcy8uZGlmZiQvLzsKCgluYXZp
Z2F0ZUhlYWRlcigkc2NyaXB0d2hlcmVfbmQsICRwYXRobmFtZSwgJGZpbGVuYW1lLCAkcmV2LCAi
ZGlmZiIpOwoKCSMgUmVhZCBoZWFkZXIgdG8gcGljayB1cCByZWFkIHJldmlzaW9uIGFuZCBkYXRl
LCBpZiBwb3NzaWJsZQoJd2hpbGUgKDwkZmg+KSB7CgkJKCRyMWQsICRyMXIpID0gL1x0KC4qKVx0
KC4qKSQvIGlmICgvXi0tLSAvKTsKCQkoJHIyZCwgJHIycikgPSAvXHQoLiopXHQoLiopJC8gaWYg
KC9eXCtcK1wrIC8pOwoJCWxhc3QgaWYgKC9eXCtcK1wrIC8pOwoJfQoKCWlmIChkZWZpbmVkKCRy
MXIpICYmICRyMXIgPX4gL14oXGQrXC4pK1xkKyQvKSB7CgkJJHJldjEgID0gJHIxcjsKCQkkZGF0
ZTEgPSAkcjFkOwoJfQoJaWYgKGRlZmluZWQoJHIycikgJiYgJHIyciA9fiAvXihcZCtcLikrXGQr
JC8pIHsKCQkkcmV2MiAgPSAkcjJyOwoJCSRkYXRlMiA9ICRyMmQ7Cgl9CgoJcHJpbnQKCSAgICAi
PGgzIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyXCI+RGlmZiBmb3IgLyR3aGVyZV9uZCBiZXR3
ZWVuIHZlcnNpb24gJHJldjEgYW5kICRyZXYyPC9oMz5cbiIsCgkgICAgIyBVc2luZyBzdHlsZT1c
ImJvcmRlcjogbm9uZVwiIGhlcmUgYnJlYWtzIE5TIDQueCBiYWRseS4uLgoJICAgICI8dGFibGUg
Ym9yZGVyPVwiMFwiIGNlbGxzcGFjaW5nPVwiMFwiIGNlbGxwYWRkaW5nPVwiMFwiIHdpZHRoPVwi
MTAwJVwiPlxuIiwKCSAgICAiPHRyIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZlwi
PlxuIiwgIjx0aCB3aWR0aD1cIjUwJVwiIHZhbGlnbj1cInRvcFwiPiIsCgkgICAgInZlcnNpb24g
JHJldjEiOwoJcHJpbnQgIiwgJGRhdGUxIiAgICAgICAgIGlmIChkZWZpbmVkKCRkYXRlMSkpOwoJ
cHJpbnQgIjxicj5UYWc6ICRzeW0xXG4iIGlmICgkc3ltMSk7CglwcmludCAiPC90aD5cbiIsICI8
dGggd2lkdGg9XCI1MCVcIiB2YWxpZ249XCJ0b3BcIj4iLCAidmVyc2lvbiAkcmV2MiI7Cglwcmlu
dCAiLCAkZGF0ZTIiICAgICAgICAgaWYgKGRlZmluZWQoJGRhdGUyKSk7CglwcmludCAiPGJyPlRh
ZzogJHN5bTJcbiIgaWYgKCRzeW0xKTsKCXByaW50ICI8L3RoPlxuIjsKCglteSAkbGVmdFJvdyAg
PSAwOwoJbXkgJHJpZ2h0Um93ID0gMDsKCW15ICgkb2xkbGluZSwgJG5ld2xpbmUsICRmdW5uYW1l
LCAkZGlmZmNvZGUsICRyZXN0KTsKCgkjIFByb2Nlc3MgZGlmZiB0ZXh0CgoJIyBwcmVmZXRjaCBz
ZXZlcmFsIGxpbmVzCglteSBAYnVmID0gaGVhZCgkZmgpOwoKCW15ICVkID0gc2Nhbl9kaXJlY3Rp
dmVzKEBidWYpOwoKCXdoaWxlIChAYnVmIHx8ICFlb2YoJGZoKSkgewoJCSRkaWZmdHh0ID0gQGJ1
ZiA/IHNoaWZ0IEBidWYgOiA8JGZoPjsKCgkJaWYgKCRkaWZmdHh0ID1+IC9eQEAvKSB7CgkJCSgk
b2xkbGluZSwgJG5ld2xpbmUsICRmdW5uYW1lKSA9CgkJCSAgICAkZGlmZnR4dCA9fiAvQEAgXC0o
WzAtOV0rKS4qXCsoWzAtOV0rKS4qQEAoLiopLzsKCQkJJGZ1bm5hbWUgPSBodG1scXVvdGUoJGZ1
bm5hbWUpOwoJCQkkZnVubmFtZSA9fiBzL1xzLyZuYnNwOy9nbzsKCQkJcHJpbnQKCQkJICAgICI8
dHIgY2xhc3M9XCJkaWZmLWhlYWRpbmdcIj5cbjx0ZCB3aWR0aD1cIjUwJVwiPiI7CgkJCXByaW50
CgkJCSAgICAiPHRhYmxlIHdpZHRoPVwiMTAwJVwiIGJvcmRlcj1cIjFcIiBjZWxscGFkZGluZz1c
IjVcIj5cbjx0cj5cbjx0ZD48Yj5MaW5lJm5ic3A7JG9sZGxpbmU8L2I+IjsKCQkJcHJpbnQKCQkJ
ICAgICImbmJzcDs8c3BhbiBzdHlsZT1cImZvbnQtc2l6ZTogc21hbGxlclwiPiRmdW5uYW1lPC9z
cGFuPjwvdGQ+XG48L3RyPlxuPC90YWJsZT4iOwoJCQlwcmludCAiPC90ZD5cbjx0ZCB3aWR0aD1c
IjUwJVwiPiI7CgkJCXByaW50CgkJCSAgICAiPHRhYmxlIHdpZHRoPVwiMTAwJVwiIGJvcmRlcj1c
IjFcIiBjZWxscGFkZGluZz1cIjVcIj5cbjx0cj5cbjx0ZD48Yj5MaW5lJm5ic3A7JG5ld2xpbmU8
L2I+IjsKCQkJcHJpbnQKCQkJICAgICImbmJzcDs8c3BhbiBzdHlsZT1cImZvbnQtc2l6ZTogc21h
bGxlclwiPiRmdW5uYW1lPC9zcGFuPjwvdGQ+XG48L3RyPlxuPC90YWJsZT5cbiI7CgkJCXByaW50
ICI8L3RkPlxuIjsKCQkJJHN0YXRlICAgID0gImR1bXAiOwoJCQkkbGVmdFJvdyAgPSAwOwoJCQkk
cmlnaHRSb3cgPSAwOwoJCX0gZWxzZSB7CgkJCSgkZGlmZmNvZGUsICRyZXN0KSA9ICRkaWZmdHh0
ID1+IC9eKFstKyBdKSguKikvOwoJCQkkXyA9IHNwYWNlZEh0bWxUZXh0KCRyZXN0LCAkZHsndGFi
c3RvcCd9KTsKCgkJCSMjIyMjIyMjIwoJCQkjIGxpdHRsZSBzdGF0ZSBtYWNoaW5lIHRvIHBhcnNl
IHVuaWZpZWQtZGlmZiBvdXRwdXQgKEhlbiwgemVsbGVyQHRoaW5rLmRlKQoJCQkjIGluIG9yZGVy
IHRvIGdldCBzb21lIG5pY2UgJ2VkaWZmJy1tb2RlIG91dHB1dAoJCQkjIHN0YXRlczoKCQkJIyAg
ImR1bXAiICAgICAgICAgICAgIC0ganVzdCBkdW1wIHRoZSB2YWx1ZQoJCQkjICAiUHJlQ2hhbmdl
UmVtb3ZlIiAgLSB3ZSBiZWdhbiB3aXRoICctJyAuLiBzbyB0aGlzIGNvdWxkIGJlIHRoZSBzdGFy
dCBvZiBhICdjaGFuZ2UnIGFyZWEgb3IganVzdCByZW1vdmUKCQkJIyAgIlByZUNoYW5nZSIgICAg
ICAgIC0gb2tleSwgd2UgZ290IHNldmVyYWwgJy0nIGxpbmVzIGFuZCBtb3ZlZCB0byAnKycgbGlu
ZXMgLT4gdGhpcyBpcyBhIGNoYW5nZSBibG9jawoJCQkjIyMjIyMjIyMjCgoJCQlpZiAoJGRpZmZj
b2RlIGVxICcrJykgewoJCQkJaWYgKCRzdGF0ZSBlcSAiZHVtcCIpCgkJCQl7ICMgJ2NoYW5nZScg
bmV2ZXIgYmVnaW5zIHdpdGggJysnOiBqdXN0IGR1bXAgb3V0IHZhbHVlCgkJCQkJcHJpbnQKCQkJ
CQkgICAgIjx0cj5cbjx0ZCBjbGFzcz1cImRpZmYtZW1wdHlcIj4mbmJzcDs8L3RkPlxuPHRkIGNs
YXNzPVwiZGlmZi1hZGRlZFwiPiZuYnNwOyRfPC90ZD5cbjwvdHI+XG4iOwoJCQkJfSBlbHNlIHsg
ICAgIyB3ZSBnb3QgbWludXMgYmVmb3JlCgkJCQkJJHN0YXRlID0gIlByZUNoYW5nZSI7CgkJCQkJ
JHJpZ2h0Q29sWyRyaWdodFJvdysrXSA9ICRfOwoJCQkJfQoJCQl9IGVsc2lmICgkZGlmZmNvZGUg
ZXEgJy0nKSB7CgkJCQkkc3RhdGUgPSAiUHJlQ2hhbmdlUmVtb3ZlIjsKCQkJCSRsZWZ0Q29sWyRs
ZWZ0Um93KytdID0gJF87CgkJCX0gZWxzZSB7ICAgICMgZW1wdHkgZGlmZmNvZGUKCQkJCWZsdXNo
X2RpZmZfcm93cyBcQGxlZnRDb2wsIFxAcmlnaHRDb2wsICRsZWZ0Um93LAoJCQkJICAgICRyaWdo
dFJvdzsKCQkJCXByaW50ICI8dHI+XG48dGQgY2xhc3M9XCJkaWZmLXNhbWVcIj4mbmJzcDskXzwv
dGQ+XG48dGQgY2xhc3M9XCJkaWZmLXNhbWVcIj4mbmJzcDskXzwvdGQ+XG48L3RyPlxuIjsKCQkJ
CSRzdGF0ZSAgICA9ICJkdW1wIjsKCQkJCSRsZWZ0Um93ICA9IDA7CgkJCQkkcmlnaHRSb3cgPSAw
OwoJCQl9CgkJfQoJfQoJY2xvc2UoJGZoKTsKCglmbHVzaF9kaWZmX3Jvd3MgXEBsZWZ0Q29sLCBc
QHJpZ2h0Q29sLCAkbGVmdFJvdywgJHJpZ2h0Um93OwoKCSMgc3RhdGUgaXMgZW1wdHkgaWYgd2Ug
ZGlkbid0IGhhdmUgYW55IGNoYW5nZQoJaWYgKCEkc3RhdGUpIHsKCQlwcmludCAiPHRyPlxuPHRk
IGNvbHNwYW49XCIyXCI+Jm5ic3A7PC90ZD5cbjwvdHI+XG4iOwoJCXByaW50ICI8dHIgY2xhc3M9
XCJkaWZmLWVtcHR5XCI+XG4iOwoJCXByaW50CgkJICAgICI8dGQgY29sc3Bhbj1cIjJcIiBhbGln
bj1cImNlbnRlclwiPjxiPi0gTm8gdmlld2FibGUgY2hhbmdlIC08L2I+PC90ZD5cbjwvdHI+XG4i
OwoJfQoJcHJpbnQgIjwvdGFibGU+XG4iOwoKCXByaW50ICI8aHIgc3R5bGU9XCJ3aWR0aDogMTAw
JVwiIG5vc2hhZGU+XG4iOwoJcHJpbnQgIjxmb3JtIG1ldGhvZD1cImdldFwiIGFjdGlvbj1cIiR7
c2NyaXB0d2hlcmV9XCI+XG4iOwoJcHJpbnQgIjx0YWJsZSBzdHlsZT1cImJvcmRlcjogbm9uZVwi
PlxuPHRyPlxuPHRkPlxuIjsKCgkjIHByaW50IGxlZ2VuZAoJcHJpbnQgIjx0YWJsZSBib3JkZXI9
XCIxXCI+XG48dHI+XG48dGQ+IjsKCXByaW50ICJMZWdlbmQ6PGJyPjx0YWJsZSBzdHlsZT1cImJv
cmRlcjogbm9uZVwiIGNlbGxzcGFjaW5nPVwiMFwiIGNlbGxwYWRkaW5nPVwiMVwiPlxuIjsKCXBy
aW50CgkgICAgIjx0cj5cbjx0ZCBhbGlnbj1cImNlbnRlclwiIGNsYXNzPVwiZGlmZi1yZW1vdmVk
XCI+UmVtb3ZlZCBmcm9tIHYuJHJldjE8L3RkPlxuPHRkIGNsYXNzPVwiZGlmZi1lbXB0eVwiPiZu
YnNwOzwvdGQ+XG48L3RyPlxuIjsKCXByaW50CgkgICAgIjx0ciBjbGFzcz1cImRpZmYtY2hhbmdl
ZFwiPlxuPHRkIGFsaWduPVwiY2VudGVyXCIgY29sc3Bhbj1cIjJcIj5jaGFuZ2VkIGxpbmVzPC90
ZD5cbjwvdHI+XG4iOwoJcHJpbnQKCSAgICAiPHRyPlxuPHRkIGNsYXNzPVwiZGlmZi1lbXB0eVwi
PiZuYnNwOzwvdGQ+XG48dGQgYWxpZ249XCJjZW50ZXJcIiBjbGFzcz1cImRpZmYtYWRkZWRcIj5B
ZGRlZCBpbiB2LiRyZXYyPC90ZD5cbjwvdHI+XG4iOwoJcHJpbnQgIjwvdGFibGU+XG48L3RkPlxu
PC90cj5cbjwvdGFibGU+XG48L3RkPlxuPHRkPiI7CgoJIyBQcmludCBmb3JtYXQgc2VsZWN0b3IK
CWZvcmVhY2ggbXkgJHZhciAoa2V5cyAlaW5wdXQpIHsKCQluZXh0IGlmICgkdmFyIGVxICJmIik7
CgkJbmV4dAoJCSAgICBpZiAoZGVmaW5lZCgkREVGQVVMVFZBTFVFeyR2YXJ9KQoJCSAgICAmJiAk
REVGQVVMVFZBTFVFeyR2YXJ9IGVxICRpbnB1dHskdmFyfSk7CgkJcHJpbnQgIjxpbnB1dCB0eXBl
PVwiaGlkZGVuXCIgbmFtZT1cIiIsIHVybGVuY29kZSgkdmFyKSwKCQkgICAgIlwiIHZhbHVlPVwi
IiwgdXJsZW5jb2RlKCRpbnB1dHskdmFyfSksICJcIj5cbiI7Cgl9CglwcmludERpZmZTZWxlY3Qo
JHVzZV9qYXZhX3NjcmlwdCk7CglwcmludCAiPGlucHV0IHR5cGU9XCJzdWJtaXRcIiB2YWx1ZT1c
IlNob3dcIj5cbiI7CglwcmludCAiPC90ZD5cbiI7CgoJcHJpbnQgIjwvdHI+XG48L3RhYmxlPlxu
IjsKCXByaW50ICI8L2Zvcm0+XG4iOwp9CgpzdWIgbmF2aWdhdGVIZWFkZXIoJCQkJCQpIHsKCW15
ICgkc3doZXJlLCAkcGF0aCwgJGZpbGVuYW1lLCAkcmV2LCAkdGl0bGUpID0gQF87Cgkkc3doZXJl
ID0gIiIgaWYgKCRzd2hlcmUgZXEgJHNjcmlwdHdoZXJlKTsKCSRzd2hlcmUgPSAnLi8nIC4gdXJs
ZW5jb2RlKCRmaWxlbmFtZSkgaWYgKCRzd2hlcmUgZXEgIiIpOwoKCSMgVE9ETzogdGhpcyBzaG91
bGQgYmUgbW92ZWQgaW50byBleHRlcm5hbCBDU1MgZmlsZS4KCW15ICRjc3MgPSAnJzsKCWlmICgk
dGl0bGUgZXEgJ2RpZmYnKSB7CgkgICAgJGNzcyA9ICIKPHN0eWxlIHR5cGU9XCJ0ZXh0L2Nzc1wi
PgouZGlmZi1oZWFkaW5nIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAkZGlmZmNvbG9ySGVhZGluZzsK
fQouZGlmZi1zYW1lIHsKICBmb250LWZhbWlseTogJGRpZmZmb250ZmFjZTsKICBmb250LXNpemU6
IHNtYWxsZXI7Cn0KLmRpZmYtZW1wdHkgewogIGJhY2tncm91bmQtY29sb3I6ICRkaWZmY29sb3JF
bXB0eTsKfQouZGlmZi1hZGRlZCB7CiAgYmFja2dyb3VuZC1jb2xvcjogJGRpZmZjb2xvckFkZDsK
ICBmb250LWZhbWlseTogJGRpZmZmb250ZmFjZTsKICBmb250LXNpemU6IHNtYWxsZXI7Cn0KLmRp
ZmYtcmVtb3ZlZCB7CiAgYmFja2dyb3VuZC1jb2xvcjogJGRpZmZjb2xvclJlbW92ZTsKICBmb250
LWZhbWlseTogJGRpZmZmb250ZmFjZTsKICBmb250LXNpemU6IHNtYWxsZXI7Cn0KLmRpZmYtY2hh
bmdlZCB7CiAgYmFja2dyb3VuZC1jb2xvcjogJGRpZmZjb2xvckNoYW5nZTsKICBmb250LWZhbWls
eTogJGRpZmZmb250ZmFjZTsKICBmb250LXNpemU6IHNtYWxsZXI7Cn0KLmRpZmYtY2hhbmdlZC1t
aXNzaW5nIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAkZGlmZmNvbG9yRGFya0NoYW5nZTsKfQo8L3N0
eWxlPiI7Cgl9CgoJcHJpbnQgPDxFT0Y7CiRIVE1MX0RPQ1RZUEUKPGh0bWw+CjxoZWFkPgo8dGl0
bGU+JHBhdGgkZmlsZW5hbWUgLSAkdGl0bGUgLSAkcmV2PC90aXRsZT4kY3NzCiRIVE1MX01FVEE8
L2hlYWQ+CiRib2R5X3RhZ19mb3Jfc3JjCjx0YWJsZSB3aWR0aD0iMTAwJSIgc3R5bGU9ImJvcmRl
cjogbm9uZTsgYmFja2dyb3VuZC1jb2xvcjogJG5hdmlnYXRpb25IZWFkZXJDb2xvciIgY2VsbHNw
YWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIxIj4KPHRyIHZhbGlnbj0iYm90dG9tIj48dGQ+CkVPRgoK
CXByaW50ICZsaW5rKCRiYWNraWNvbiwgIiRzd2hlcmUkcXVlcnkjcmV2JHJldiIpOwoJcHJpbnQg
IjxiPlJldHVybiB0byAiLCAmbGluaygkZmlsZW5hbWUsICIkc3doZXJlJHF1ZXJ5I3JldiRyZXYi
KSwKCSAgICAiIENWUyBsb2ciOwoJcHJpbnQgIjwvYj4gJGZpbGVpY29uPC90ZD4iOwoKCXByaW50
ICI8dGQgYWxpZ249XCJyaWdodFwiPiRkaXJpY29uIDxiPlVwIHRvICIsCgkgICZjbGlja2FibGVQ
YXRoKCRwYXRoLCAxKSwKCSAgICAiPC9iPjwvdGQ+IjsKCXByaW50ICI8L3RyPjwvdGFibGU+IjsK
fQoKc3ViIHBsdXJhbF93cml0ZSgkJCkgewoJbXkgKCRudW0sICR0ZXh0KSA9IEBfOwoJaWYgKCRu
dW0gIT0gMSkgewoJCSR0ZXh0IC49ICJzIjsKCX0KCglpZiAoJG51bSA+IDApIHsKCQlyZXR1cm4g
am9pbiAoJyAnLCAkbnVtLCAkdGV4dCk7Cgl9IGVsc2UgewoJCXJldHVybiAiIjsKCX0KfQoKIyMK
IyBwcmludCByZWFkYWJsZSB0aW1lc3RhbXAgaW4gdGVybXMgb2YKIyAnLi50aW1lIGFnbycKIyBI
LiBaZWxsZXIgPHplbGxlckB0aGluay5kZT4KIyMKc3ViIHJlYWRhYmxlVGltZSgkJCkgewoJbXkg
KCRpLCAkYnJlYWssICRyZXR2YWwpOwoJbXkgKCRzZWNzLCAkbG9uZykgPSBAXzsKCgkjIHRoaXMg
ZnVuY3Rpb24gd29ya3MgY29ycmVjdCBmb3IgdGltZSA+PSAyIHNlY29uZHMKCWlmICgkc2VjcyA8
IDIpIHsKCQlyZXR1cm4gInZlcnkgbGl0dGxlIHRpbWUiOwoJfQoKCW15ICVkZXNjID0gKAoJCTEs
ICAgICAgICAnc2Vjb25kJywgNjAsICAgICAnbWludXRlJywgMzYwMCwgICAgJ2hvdXInLAoJCTg2
NDAwLCAgICAnZGF5JywgICAgNjA0ODAwLCAnd2VlaycsICAgMjYyODAwMCwgJ21vbnRoJywKCQkz
MTUzNjAwMCwgJ3llYXInCgkpOwoJbXkgQGJyZWFrcyA9IHNvcnQgeyAkYSA8PT4gJGIgfSBrZXlz
ICVkZXNjOwoJJGkgPSAwOwoKCXdoaWxlICgkaSA8PSAkI2JyZWFrcyAmJiAkc2VjcyA+PSAyICog
JGJyZWFrc1skaV0pIHsKCQkkaSsrOwoJfQoJJGktLTsKCSRicmVhayAgPSAkYnJlYWtzWyRpXTsK
CSRyZXR2YWwgPSBwbHVyYWxfd3JpdGUoaW50KCRzZWNzIC8gJGJyZWFrKSwgJGRlc2N7JGJyZWFr
fSk7CgoJaWYgKCRsb25nID09IDEgJiYgJGkgPiAwKSB7CgkJbXkgJHJlc3QgPSAkc2VjcyAlICRi
cmVhazsKCQkkaS0tOwoJCSRicmVhayA9ICRicmVha3NbJGldOwoJCW15ICRyZXN0dGltZSA9IHBs
dXJhbF93cml0ZShpbnQoJHJlc3QgLyAkYnJlYWspLCAkZGVzY3skYnJlYWt9KTsKCQlpZiAoJHJl
c3R0aW1lKSB7CgkJCSRyZXR2YWwgLj0gIiwgJHJlc3R0aW1lIjsKCQl9Cgl9CgoJcmV0dXJuICRy
ZXR2YWw7Cn0KCiMjCiMgY2xpY2thYmxlUGF0aChTdHJpbmcgcGF0aG5hbWUsIGJvb2xlYW4gbGFz
dF9pdGVtX2NsaWNrYWJsZSkKIwojIHJldHVybnMgYSBodG1sLWlmaWVkIHBhdGggd2hlcmVhcyBl
YWNoIGRpcmVjdG9yeSBpcyBhIGxpbmsgZm9yCiMgZmFzdGVyIG5hdmlnYXRpb24uIGxhc3RfaXRl
bV9jbGlja2FibGUgY29udHJvbHMgd2hldGhlciB0aGUKIyBiYXNlbmFtZSAobGFzdCBkaXJlY3Rv
cnkvZmlsZSkgaXMgYSBsaW5rIGFzIHdlbGwKIyMKc3ViIGNsaWNrYWJsZVBhdGgoJCQpIHsKCW15
ICgkcGF0aG5hbWUsICRjbGlja0xhc3QpID0gQF87CglteSAkcmV0dmFsID0gJyc7CgoJaWYgKCRw
YXRobmFtZSBlcSAnLycpIHsKCgkJIyB0aGlzIHNob3VsZCBuZXZlciBoYXBwZW4gLSBjaG9vc2VD
VlNSb290KCkgaXMKCQkjIGludGVuZGVkIHRvIGRvIHRoaXMKCQkkcmV0dmFsID0gIlskY3ZzdHJl
ZV0iOwoJfSBlbHNlIHsKCQkkcmV0dmFsIC49ICcgJyAuICZsaW5rKCJbJGN2c3RyZWVdIiwKCQkJ
c3ByaW50ZignJXMvJXMjZGlybGlzdCcsICRzY3JpcHRuYW1lLCAkcXVlcnkpKTsKCQlteSAkd2hl
cmVwYXRoID0gJyc7CgkJbXkgKCRsYXN0c2xhc2gpID0gJHBhdGhuYW1lID1+IG18LyR8OwoKCQlm
b3JlYWNoIChzcGxpdCAoL1wvLywgJHBhdGhuYW1lKSkgewoJCQkkcmV0dmFsIC49ICIgLyAiOwoJ
CQkkd2hlcmVwYXRoIC49ICIvJF8iOwoJCQlteSAoJGxhc3QpID0gIiR3aGVyZXBhdGgvIiBlcSAi
LyRwYXRobmFtZSIKCQkJICAgIHx8ICR3aGVyZXBhdGggZXEgIi8kcGF0aG5hbWUiOwoKCQkJaWYg
KCRjbGlja0xhc3QgfHwgISRsYXN0KSB7CgkJCQkkcmV0dmFsIC49ICZsaW5rKCRfLAoJCQkJCWpv
aW4gKCcnLCAkc2NyaXB0bmFtZSwKCQkJCQl1cmxlbmNvZGUoJHdoZXJlcGF0aCksCgkJCQkJKCEk
bGFzdCB8fCAkbGFzdHNsYXNoID8gJy8nIDogJycpLAoJCQkJCSRxdWVyeSwKCQkJCQkoISRsYXN0
IHx8ICRsYXN0c2xhc2ggPyAiI2Rpcmxpc3QiIDogIiIpCgkJCQkpKTsKCQkJfSBlbHNlIHsgICAg
IyBkbyBub3QgbWFrZSBhIGxpbmsgdG8gdGhlIGN1cnJlbnQgZGlyCgkJCQkkcmV0dmFsIC49ICRf
OwoJCQl9CgkJfQoJfQoJcmV0dXJuICRyZXR2YWw7Cn0KCnN1YiBjaG9vc2VDVlNSb290KCkgewoK
CXByaW50ICI8Zm9ybSBtZXRob2Q9XCJnZXRcIiBhY3Rpb249XCIke3NjcmlwdHdoZXJlfVwiPlxu
IjsKCWlmICgyIDw9IEBDVlNST09UKSB7CgkJbXkgKCRrKTsKCQlmb3JlYWNoICRrIChrZXlzICVp
bnB1dCkgewoJCQlwcmludCAiPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwiJGtcIiB2YWx1
ZT1cIiRpbnB1dHska31cIj5cbiIKCQkJICAgIGlmICgkaW5wdXR7JGt9KSAmJiAoJGsgbmUgImN2
c3Jvb3QiKTsKCQl9CgoJCSMgRm9ybS1FbGVtZW50cyBsb29rIHdpZXJkIGluIE5ldHNjYXBlIGlm
IHRoZSBiYWNrZ3JvdW5kCgkJIyBpc24ndCBncmF5IGFuZCB0aGUgZm9ybSBlbGVtZW50cyBhcmUg
bm90IHBsYWNlZAoJCSMgd2l0aGluIGEgdGFibGUgLi4uCgkJcHJpbnQgIjx0YWJsZSBzdHlsZT1c
ImJvcmRlcjogbm9uZVwiPlxuPHRyPlxuIjsKCQlwcmludCAiPHRkPjxsYWJlbCBmb3I9XCJjdnNy
b290XCIgYWNjZXNza2V5PVwiQ1wiPkNWUyBSb290OjwvbGFiZWw+PC90ZD5cbiI7CgkJcHJpbnQg
Ijx0ZD5cbjxzZWxlY3QgaWQ9XCJjdnNyb290XCIgbmFtZT1cImN2c3Jvb3RcIiI7CgkJcHJpbnQg
IiBvbmNoYW5nZT1cInRoaXMuZm9ybS5zdWJtaXQoKVwiIiBpZiAkdXNlX2phdmFfc2NyaXB0OwoJ
CXByaW50ICI+XG4iOwoKCQlmb3JlYWNoICRrIChAQ1ZTUk9PVCkgewoJCQlwcmludCAiPG9wdGlv
biB2YWx1ZT1cIiRrXCIiOwoJCQlwcmludCAiIHNlbGVjdGVkIiBpZiAoJGsgZXEgJGN2c3RyZWUp
OwoJCQlwcmludCAiPiIsKCRDVlNST09UZGVzY3J7JGt9ID8gJENWU1JPT1RkZXNjcnska30gOiAk
ayksCgkJCSAgICAiPC9vcHRpb24+XG4iOwoJCX0KCQlwcmludCAiPC9zZWxlY3Q+XG48L3RkPlxu
PHRkPiI7Cgl9IGVsc2UgewoKCQkjIG5vIGNob2ljZSAtLSBidXQgd2UgbmVlZCB0aGUgZm9ybSB0
byBzZWxlY3QgbW9kdWxlL3BhdGgsCgkJIyBhdCBsZWFzdCBmb3IgTmV0c2NhcGUKCQlwcmludCAi
PHA+XG4iOwoJCXByaW50ICJDVlMgUm9vdDogPGI+WyRjdnN0cmVlXTwvYj4iOwoJfQoKCXByaW50
ICIgPGxhYmVsIGZvcj1cIm1wYXRoXCIgYWNjZXNza2V5PVwiTVwiPk1vZHVsZSBwYXRoIG9yIGFs
aWFzOiI7CglwcmludCAiPC9sYWJlbD5cbiI7CglwcmludCAiPGlucHV0IHR5cGU9XCJ0ZXh0XCIg
aWQ9XCJtcGF0aFwiIG5hbWU9XCJwYXRoXCIgdmFsdWU9XCJcIiBzaXplPVwiMTVcIj5cbiI7Cglw
cmludCAiPGlucHV0IHR5cGU9XCJzdWJtaXRcIiB2YWx1ZT1cIkdvXCIgYWNjZXNza2V5PVwiT1wi
PiI7CgoJaWYgKDIgPD0gQENWU1JPT1QpIHsKCQlwcmludCAiPC90ZD5cbjwvdHI+XG48L3RhYmxl
PiI7Cgl9IGVsc2UgewoJCXByaW50ICI8L3A+IjsKCX0KCXByaW50ICJcbjwvZm9ybT4iOwp9Cgpz
dWIgY2hvb3NlTWlycm9yKCkgewoKCSMgVGhpcyBjb2RlIGNvbWVzIGZyb20gdGhlIG9yaWdpbmFs
IEJTRC1jdnN3ZWIKCSMgYW5kIG1heSBub3QgYmUgdXNlZnVsIGZvciB5b3VyIHNpdGU7IElmIHlv
dSBkb24ndAoJIyBzZXQgJU1JUlJPUlMgdGhpcyB3b24ndCBzaG93IHVwLCBhbnl3YXkuCglzY2Fs
YXIoJU1JUlJPUlMpIG9yIHJldHVybjsKCgkjIFNob3VsZCBwZXJoYXBzIGV4Y2x1ZGUgdGhlIGN1
cnJlbnQgc2l0ZSBzb21laG93Li4uCglwcmludCAiXG48cD5cblRoaXMgQ1ZTd2ViIGlzIG1pcnJv
cmVkIGluXG4iOwoKCW15IEB0bXAgPSBtYXAoJmxpbmsoaHRtbHF1b3RlKCRfKSwgJE1JUlJPUlN7
JF99KSwKCQkgICAgICBzb3J0IGtleXMgJU1JUlJPUlMpOwoJbXkgJHRtcCA9IHBvcChAdG1wKTsK
CglpZiAoc2NhbGFyKEB0bXApKSB7CgkgICAgcHJpbnQgam9pbignLCAnLCBAdG1wKSwgJyBhbmQg
JzsKCX0KCglwcmludCAiJHRtcC5cbjwvcD5cbiI7Cn0KCnN1YiBmaWxlU29ydENtcCgpIHsKCW15
ICgkY29tcCkgPSAwOwoJbXkgKCRjLCAkZCwgJGFmLCAkYmYpOwoKCSgkYWYgPSAkYSkgPX4gcy8s
diQvLzsKCSgkYmYgPSAkYikgPX4gcy8sdiQvLzsKCW15ICgkcmV2MSwgJGRhdGUxLCAkbG9nMSwg
JGF1dGhvcjEsICRmaWxlbmFtZTEpID0gQHskZmlsZWluZm97JGFmfX0KCSAgICBpZiAoZGVmaW5l
ZCgkZmlsZWluZm97JGFmfSkpOwoJbXkgKCRyZXYyLCAkZGF0ZTIsICRsb2cyLCAkYXV0aG9yMiwg
JGZpbGVuYW1lMikgPSBAeyRmaWxlaW5mb3skYmZ9fQoJICAgIGlmIChkZWZpbmVkKCRmaWxlaW5m
b3skYmZ9KSk7CgoJaWYgKGRlZmluZWQoJGZpbGVuYW1lMSkgJiYgZGVmaW5lZCgkZmlsZW5hbWUy
KSAmJiAkYWYgZXEgJGZpbGVuYW1lMQoJICAgICYmICRiZiBlcSAkZmlsZW5hbWUyKQoJewoKCQkj
IFR3byBmaWxlcwoJCSRjb21wID0gLXJldmNtcCgkcmV2MSwgJHJldjIpIGlmICgkYnlyZXYgJiYg
JHJldjEgJiYgJHJldjIpOwoJCSRjb21wID0gKCRkYXRlMiA8PT4gJGRhdGUxKSBpZiAoJGJ5ZGF0
ZSAmJiAkZGF0ZTEgJiYgJGRhdGUyKTsKCQkkY29tcCA9ICgkbG9nMSBjbXAgJGxvZzIpIGlmICgk
Ynlsb2cgJiYgJGxvZzEgJiYgJGxvZzIpOwoJCSRjb21wID0gKCRhdXRob3IxIGNtcCAkYXV0aG9y
MikKCQkgICAgaWYgKCRieWF1dGhvciAmJiAkYXV0aG9yMSAmJiAkYXV0aG9yMik7Cgl9CgoJaWYg
KCRjb21wID09IDApIHsKCgkJIyBEaXJlY3RvcmllcyBmaXJzdCwgdGhlbiBmaWxlcyB1bmRlciB2
ZXJzaW9uIGNvbnRyb2wsCgkJIyB0aGVuIG90aGVyLCAicm9ndWUiIGZpbGVzLgoJCSMgU29ydCBi
eSBmaWxlbmFtZSBpZiBubyBvdGhlciBjcml0ZXJpYSBhdmFpbGFibGUuCgoJCW15ICRhZCA9ICgo
LWQgIiRmdWxsbmFtZS8kYSIpID8gJ0QnCgkJICAgIDogKGRlZmluZWQoJGZpbGVpbmZveyRhZn0p
ID8gJ0YnIDogJ1InKSk7CgkJbXkgJGJkID0gKCgtZCAiJGZ1bGxuYW1lLyRiIikgPyAnRCcKCQkg
ICAgOiAoZGVmaW5lZCgkZmlsZWluZm97JGJmfSkgPyAnRicgOiAnUicpKTsKCQkoJGMgPSAkYSkg
PX4gc3wuKi98fDsKCQkoJGQgPSAkYikgPX4gc3wuKi98fDsKCQkkY29tcCA9ICgiJGFkJGMiIGNt
cCAiJGJkJGQiKTsKCX0KCXJldHVybiAkY29tcDsKfQoKIyBtYWtlIEEgdXJsIGZvciBkb3dubG9h
ZGluZwpzdWIgZG93bmxvYWRfdXJsKCQkOyQpIHsKCW15ICgkdXJsLCAkcmV2aXNpb24sICRtaW1l
dHlwZSkgPSBAXzsKCgkkcmV2aXNpb24gPX4gcy9cYjBcLi8vOwoKCWlmIChkZWZpbmVkKCRjaGVj
a291dE1hZ2ljKQoJICAgICYmICghZGVmaW5lZCgkbWltZXR5cGUpIHx8ICRtaW1ldHlwZSBuZSAi
dGV4dC94LWN2c3dlYi1tYXJrdXAiKSkKCXsKCQlteSAkcGF0aCA9ICR3aGVyZTsKCQkkcGF0aCA9
fiBzfFteL10rJHx8OwoJCSR1cmwgPSAiJHNjcmlwdG5hbWUvJGNoZWNrb3V0TWFnaWMvJHtwYXRo
fSR1cmwiOwoJfQoJJHVybCAuPSAiP3Jldj0kcmV2aXNpb24iOwoJJHVybCAuPSAnJmNvbnRlbnQt
dHlwZT0nIC4gdXJsZW5jb2RlKCRtaW1ldHlwZSkgaWYgKGRlZmluZWQoJG1pbWV0eXBlKSk7CgoJ
JHVybDsKfQoKIyBQcmVzZW50cyBhIGxpbmsgdG8gZG93bmxvYWQgdGhlCiMgc2VsZWN0ZWQgcmV2
aXNpb24Kc3ViIGRvd25sb2FkX2xpbmsoJCQkOyQpIHsKCW15ICgkdXJsLCAkcmV2aXNpb24sICR0
ZXh0bGluaywgJG1pbWV0eXBlKSA9IEBfOwoJbXkgKCRmdWxsdXJsKSA9IGRvd25sb2FkX3VybCgk
dXJsLCAkcmV2aXNpb24sICRtaW1ldHlwZSk7CgoJJGZ1bGx1cmwgPX4gcy86L3NwcmludGYoIiUl
JTAyeCIsIG9yZCgkJikpL2VnOwoKCXByaW50ZiAnPGEgaHJlZj0iJXMiJywgaHJlZnF1b3RlKCIk
ZnVsbHVybCRiYXJlcXVlcnkiKTsKCglpZiAoJG9wZW5fZXh0ZXJuX3dpbmRvdwoJICAgICYmICgh
ZGVmaW5lZCgkbWltZXR5cGUpIHx8ICRtaW1ldHlwZSBuZSAidGV4dC94LWN2c3dlYi1tYXJrdXAi
KSkKCXsKCQlwcmludCAnIHRhcmdldD0iY3ZzX2NoZWNrb3V0Iic7CgoJCSMgd2Ugc2hvdWxkIGhh
dmUKCQkjICAgJ2lmIChkb2N1bWVudC5jdnN3aW49PW51bGwpIGRvY3VtZW50LmN2c3dpbj13aW5k
b3cub3BlbiguLi4nCgkJIyBpbiBvcmRlciB0byBhbGxvdyB0aGUgdXNlciB0byByZXNpemUgdGhl
IHdpbmRvdzsgb3RoZXJ3aXNlCgkJIyB0aGUgdXNlciBtYXkgcmVzaXplIHRoZSB3aW5kb3csIGJ1
dCBvbiBuZXh0IGNoZWNrb3V0IC0gemFwIC0KCQkjIGl0cyBvcmlnaW5hbCAoY29uZmlndXJlZCBz
LiBjdnN3ZWIuY29uZikgc2l6ZSBpcyBiYWNrIGFnYWluCgkJIyAuLiBhbm5veWluZyAoaWYgJGV4
dGVybl93aW5kb3dfKHdpZHRofGhlaWdodCkgaXMgZGVmaW5lZCkKCQkjIGJ1dCB0aGlzIGlmICgu
Likgc29sdXRpb24gaXMgZmFyIGZyb20gcGVyZmVjdAoJCSMgd2hhdCB3ZSBuZWVkIHRvIGRvIGFz
IHdlbGwgaXMKCQkjIDEpIHNhdmUgY3Zzd2luIGluIGFuIGludmlzaWJsZSBmcmFtZSB0aGF0IGFs
d2F5cyBleGlzdHMKCQkjICAgIChkb2N1bWVudC5jdnN3aW4gd2lsbCBiZSB2b2lkIG9uIG5leHQg
bG9hZCkKCQkjIDIpIG9uIGNsb3NlIG9mIHRoZSBjdnNfY2hlY2tvdXQgLSB3aW5kb3cgc2V0IHRo
ZSBjdnN3aW4KCQkjICAgIHZhcmlhYmxlIHRvICdudWxsJyBhZ2FpbiAtIHNvIHRoYXQgaXQgd2ls
bCBiZQoJCSMgICAgcmVvcGVuZW5kIHdpdGggdGhlIGNvbmZpZ3VyZWQgc2l6ZQoJCSMgYW55b25l
IGEgSmF2YVNjcmlwdCBwcm9ncmFtbWVyID8KCQkjIC4uIHNvIGhlcmUgd2l0aG91dCBpZiAoLi4p
OgoJCSMgY3VycmVudGx5LCB0aGUgYmVzdCB3YXkgaXMgdG8gY29tbWVudCBvdXQgdGhlIHNpemUg
cGFyYW1ldGVycwoJCSMgKCRleHRlcm5fd2luZG93Li4uKSBpbiBjdnN3ZWIuY29uZi4KCQlpZiAo
JHVzZV9qYXZhX3NjcmlwdCkgewoJCQlteSBAYXR0ciA9IHF3KHJlc2l6YWJsZSBzY3JvbGxiYXJz
KTsKCgkJCXB1c2ggQGF0dHIsIHF3KHN0YXR1cyB0b29sYmFyKQoJCQkgICAgaWYgKGRlZmluZWQo
JG1pbWV0eXBlKSAmJiAkbWltZXR5cGUgZXEgInRleHQvaHRtbCIpOwoKCQkJcHVzaCBAYXR0ciwg
IndpZHRoPSRleHRlcm5fd2luZG93X3dpZHRoIgoJCQkgICAgaWYgKGRlZmluZWQoJGV4dGVybl93
aW5kb3dfd2lkdGgpKTsKCgkJCXB1c2ggQGF0dHIsICJoZWlnaHQ9JGV4dGVybl93aW5kb3dfaGVp
Z2h0IgoJCQkgICAgaWYgKGRlZmluZWQoJGV4dGVybl93aW5kb3dfaGVpZ2h0KSk7CgoJCQkjIFdl
IG5lZWQgdGhlICJyZXR1cm4gZmFsc2UiIGhlcmUgdG8gcHJldmVudCBicm93c2VycwoJCQkjIGZy
b20gZm9sbG93aW5nIHRoZSBocmVmIGFmdGVyIHRoZSBvbmNsaWNrIGhhbmRsZXIuCgkJCSMgVGhp
cyB3b3VsZCBlZmZlY3RpdmVseSBsb2FkIHRoZSBzYW1lIGRvY3VtZW50IGluCgkJCSMgdGhlIHNh
bWUgd2luZG93ICp0d2ljZSouCgkJCXByaW50ZgoJCQkgICAgcWAgb25jbGljaz0id2luZG93Lm9w
ZW4oJyVzJywnY3ZzX2NoZWNrb3V0JywnJXMnKTtyZXR1cm4gZmFsc2UiYCwKCQkJICAgIGhyZWZx
dW90ZSgiJGZ1bGx1cmwkYmFyZXF1ZXJ5IiksIGpvaW4gKCcsJywgQGF0dHIpOwoJCX0KCX0KCXBy
aW50ICI+PGI+JHRleHRsaW5rPC9iPjwvYT4iOwp9CgojIFJldHVybnMgYSBRdWVyeSBzdHJpbmcg
d2l0aCB0aGUKIyBzcGVjaWZpZWQgcGFyYW1ldGVyIHRvZ2dsZWQKc3ViIHRvZ2dsZVF1ZXJ5KCQk
KSB7CglteSAoJHRvZ2dsZSwgJHZhbHVlKSA9IEBfOwoJbXkgKCRuZXdxdWVyeSwgJHZhcik7Cglt
eSAoJXZhcnMpOwoJJXZhcnMgPSAlaW5wdXQ7CgoJaWYgKGRlZmluZWQoJHZhbHVlKSkgewoJCSR2
YXJzeyR0b2dnbGV9ID0gJHZhbHVlOwoJfSBlbHNlIHsKCQkkdmFyc3skdG9nZ2xlfSA9ICR2YXJz
eyR0b2dnbGV9ID8gMCA6IDE7Cgl9CgoJIyBCdWlsZCBhIG5ldyBxdWVyeSBvZiBub24tZGVmYXVs
dCBwYXJhbWVudGVycwoJJG5ld3F1ZXJ5ID0gIiI7Cglmb3JlYWNoICR2YXIgKEBzdGlja3l2YXJz
KSB7CgkJbXkgKCR2YWx1ZSkgPSBkZWZpbmVkKCR2YXJzeyR2YXJ9KSA/ICR2YXJzeyR2YXJ9IDog
IiI7CgkJbXkgKCRkZWZhdWx0KSA9CgkJICAgIGRlZmluZWQoJERFRkFVTFRWQUxVRXskdmFyfSkg
PyAkREVGQVVMVFZBTFVFeyR2YXJ9IDogIiI7CgoJCWlmICgkdmFsdWUgbmUgJGRlZmF1bHQpIHsK
CQkJJG5ld3F1ZXJ5IC49ICImIiBpZiAoJG5ld3F1ZXJ5IG5lICIiKTsKCQkJJG5ld3F1ZXJ5IC49
IHVybGVuY29kZSgkdmFyKSAuICI9IiAuIHVybGVuY29kZSgkdmFsdWUpOwoJCX0KCX0KCglpZiAo
JG5ld3F1ZXJ5KSB7CgkJcmV0dXJuICc/JyAuICRuZXdxdWVyeTsKCX0KCXJldHVybiAiIjsKfQoK
c3ViIHVybGVuY29kZSgkKSB7Cglsb2NhbCAoJF8pID0gQF87CgoJcy9bXDAwMC0rey1cMzc3XS9z
cHJpbnRmKCIlJSUwMngiLCBvcmQoJCYpKS9nZTsKCgkkXzsKfQoKc3ViIGh0bWxxdW90ZSgkKSB7
Cglsb2NhbCAoJF8pID0gQF87CgoJIyBTcGVjaWFsIENoYXJhY3RlcnM7IFJGQyAxODY2CglzLyYv
JmFtcDsvZzsKCXMvXCIvJnF1b3Q7L2c7CglzLzwvJmx0Oy9nOwoJcy8+LyZndDsvZzsKCgkkXzsK
fQoKc3ViIGh0bWx1bnF1b3RlKCQpIHsKCWxvY2FsICgkXykgPSBAXzsKCgkjIFNwZWNpYWwgQ2hh
cmFjdGVyczsgUkZDIDE4NjYKCXMvJnF1b3Q7L1wiL2c7CglzLyZsdDsvPC9nOwoJcy8mZ3Q7Lz4v
ZzsKCXMvJmFtcDsvJi9nOwoKCSRfOwp9CgpzdWIgaHJlZnF1b3RlKCQpIHsKCWxvY2FsICgkXykg
PSBAXzsKCgl5LyAvKy87CgoJaHRtbHF1b3RlKCRfKQp9CgpzdWIgaHR0cF9oZWFkZXIoOyQpIHsK
CW15ICRjb250ZW50X3R5cGUgPSBzaGlmdCB8fCAidGV4dC9odG1sIjsKCgkkY29udGVudF90eXBl
IC49ICI7IGNoYXJzZXQ9JGNoYXJzZXQiCgkgICAgaWYgJGNvbnRlbnRfdHlwZSA9fiBtLF50ZXh0
LywgJiYgZGVmaW5lZCgkY2hhcnNldCkgJiYgJGNoYXJzZXQ7CgoJaWYgKGRlZmluZWQoJG1vZGRh
dGUpKSB7CgkJaWYgKCRpc19tb2RfcGVybCkgewoJCQlBcGFjaGUtPnJlcXVlc3QtPmhlYWRlcl9v
dXQoCgkJCQkiTGFzdC1Nb2RpZmllZCIgPT4gc2NhbGFyIGdtdGltZSgkbW9kZGF0ZSkKCQkJCS4g
IiBHTVQiKTsKCQl9IGVsc2UgewoJCQlwcmludCAiTGFzdC1Nb2RpZmllZDogIiwgc2NhbGFyIGdt
dGltZSgkbW9kZGF0ZSksCgkJCSAgICAiIEdNVFxyXG4iOwoJCX0KCX0KCglpZiAoJGlzX21vZF9w
ZXJsKSB7CgkJQXBhY2hlLT5yZXF1ZXN0LT5jb250ZW50X3R5cGUoJGNvbnRlbnRfdHlwZSk7Cgl9
IGVsc2UgewoJCXByaW50ICJDb250ZW50LVR5cGU6ICRjb250ZW50X3R5cGVcclxuIjsKCX0KCglp
ZiAoJGFsbG93X2NvbXByZXNzICYmICRtYXljb21wcmVzcykgewoJCWlmICgkaGFzX3psaWIKCQkg
ICAgfHwgKGRlZmluZWQoJENNRHtnemlwfSkgJiYgb3BlbihHWklQLCAifCAkQ01Ee2d6aXB9IC0x
IC1jIikpCgkJICAgICkKCQl7CgoJCQlpZiAoJGlzX21vZF9wZXJsKSB7CgkJCQlBcGFjaGUtPnJl
cXVlc3QtPmNvbnRlbnRfZW5jb2RpbmcoIngtZ3ppcCIpOwoJCQkJQXBhY2hlLT5yZXF1ZXN0LT5o
ZWFkZXJfb3V0KAoJCQkJCVZhcnkgPT4gIkFjY2VwdC1FbmNvZGluZyIpOwoJCQkJQXBhY2hlLT5y
ZXF1ZXN0LT5zZW5kX2h0dHBfaGVhZGVyOwoJCQl9IGVsc2UgewoJCQkJcHJpbnQgIkNvbnRlbnQt
RW5jb2Rpbmc6IHgtZ3ppcFxyXG4iOwoJCQkJcHJpbnQgIlZhcnk6IEFjY2VwdC1FbmNvZGluZ1xy
XG4iCgkJCQkgICAgOyAgICAgICAgICAgICNSRkMgMjA2OCwgMTQuNDMKCQkJCXByaW50ICJcclxu
IjsgICAgIyBDbG9zZSBoZWFkZXJzCgkJCX0KCQkJJHwgPSAxOwoJCQkkfCA9IDA7ICAgICMgRmx1
c2ggaGVhZGVyIG91dHB1dAoKCQkJaWYgKCRoYXNfemxpYikgewoJCQkJdGllICpHWklQLCBfX1BB
Q0tBR0VfXywgXCpTVERPVVQ7CgkJCX0KCQkJc2VsZWN0KEdaSVApOwoJCQkkZ3ppcF9vcGVuID0g
MTsKCgkJCSMJICAgIHByaW50ICI8IS0tIGd6aXBwZWQgLS0+IiBpZiAoJGNvbnRlbnRfdHlwZSA9
fiBtfF50ZXh0L2h0bWxcYnwpOwoJCX0gZWxzZSB7CgkJCWlmICgkaXNfbW9kX3BlcmwpIHsKCQkJ
CUFwYWNoZS0+cmVxdWVzdC0+c2VuZF9odHRwX2hlYWRlcjsKCQkJfSBlbHNlIHsKCQkJCXByaW50
ICJcclxuIjsgICAgIyBDbG9zZSBoZWFkZXJzCgkJCX0KCQkJcHJpbnQKCQkJICAgICI8c3BhbiBz
dHlsZT1cImZvbnQtc2l6ZTogc21hbGxlclwiPlVuYWJsZSB0byBmaW5kIGd6aXAgYmluYXJ5IGlu
IHRoZSA8Yj5cJGNvbW1hbmRfcGF0aDwvYj4gKCRjb21tYW5kX3BhdGgpIHRvIGNvbXByZXNzIG91
dHB1dDwvc3Bhbj48YnI+IjsKCQl9Cgl9IGVsc2UgewoKCQlpZiAoJGlzX21vZF9wZXJsKSB7CgkJ
CUFwYWNoZS0+cmVxdWVzdC0+c2VuZF9odHRwX2hlYWRlcjsKCQl9IGVsc2UgewoJCQlwcmludCAi
XHJcbiI7ICAgICMgQ2xvc2UgaGVhZGVycwoJCX0KCX0KfQoKc3ViIGh0bWxfaGVhZGVyKCQpIHsK
CW15ICgkdGl0bGUpID0gQF87CglodHRwX2hlYWRlcigidGV4dC9odG1sIik7CglwcmludCA8PEVP
SDsKJEhUTUxfRE9DVFlQRQo8aHRtbD4KPGhlYWQ+Cjx0aXRsZT4kdGl0bGU8L3RpdGxlPgokSFRN
TF9NRVRBPC9oZWFkPgokYm9keV90YWcKJGxvZ28gPGgxIGFsaWduPSJjZW50ZXIiPiR0aXRsZTwv
aDE+CkVPSAp9CgpzdWIgaHRtbF9mb290ZXIoKSB7CglwcmludCAiPGhyIG5vc2hhZGU+XG48YWRk
cmVzcz4kYWRkcmVzczwvYWRkcmVzcz5cbiIgaWYgJGFkZHJlc3M7CglwcmludCAiPC9ib2R5Plxu
PC9odG1sPlxuIjsKfQoKc3ViIGxpbmtfdGFncygkKSB7CglteSAoJHRhZ3MpID0gQF87CglteSAo
JHJldCkgID0gIiI7CglteSAoJGZpbGV1cmwsICRmaWxlbmFtZSk7CgoJKCRmaWxlbmFtZSA9ICR3
aGVyZSkgPX4gcy9eLipcLy8vOwoJJGZpbGV1cmwgPSAnLi8nIC4gdXJsZW5jb2RlKCRmaWxlbmFt
ZSk7CgoJZm9yZWFjaCBteSAkc3ltIChzcGxpdCAoIiwgIiwgJHRhZ3MpKSB7CgkJJHJldCAuPSAi
LFxuIiBpZiAoJHJldCBuZSAiIik7CgkJJHJldCAuPQoJCSAgICAmbGluaygkc3ltLCAkZmlsZXVy
bCAuIHRvZ2dsZVF1ZXJ5KCdvbmx5X3dpdGhfdGFnJywgJHN5bSkpOwoJfQoJcmV0dXJuICIkcmV0
XG4iOwp9CgojCiMgU2VlIGlmIGEgbW9kdWxlIGlzIGxpc3RlZCBpbiB0aGUgY29uZmlnIGZpbGUn
cyBASGlkZU1vZHVsZXMgbGlzdC4KIwpzdWIgZm9yYmlkZGVuX21vZHVsZSgkKSB7CglteSAoJG1v
ZHVsZSkgPSBAXzsKCWxvY2FsICRfOwoKCWZvciAoQEhpZGVNb2R1bGVzKSB7CgkJcmV0dXJuIDEg
aWYgJG1vZHVsZSA9fiAkXzsKCX0KCXJldHVybiAwOwp9CgpzdWIgZm9yYmlkZGVuX2ZpbGUoJCkg
ewoJbXkgKCRwYXRoKSA9IEBfOwoJJHBhdGggPSAgc3Vic3RyKCRwYXRoLCBsZW5ndGgoJGN2c3Jv
b3QpICsgMSk7Cglsb2NhbCAkXzsKCWZvciAoQEZvcmJpZGRlbkZpbGVzKSB7CgkJcmV0dXJuIDEg
aWYgJHBhdGggPX4gJF87Cgl9CglyZXR1cm4gMDsKfQoKIyBDbG9zZSB0aGUgR1pJUCBoYW5kbGUg
cmVtb3ZlIHRoZSB0aWUuCgpzdWIgZ3ppcGNsb3NlIHsKCWlmICgkZ3ppcF9vcGVuKSB7CgkJc2Vs
ZWN0KFNURE9VVCk7CgkJY2xvc2UoR1pJUCk7CgkJdW50aWUgKkdaSVA7CgkJJGd6aXBfb3BlbiA9
IDA7Cgl9Cn0KCiMgaW1wbGVtZW50IGEgZ3ppcHBlZCBmaWxlIGhhbmRsZSB2aWEgdGhlIENvbXBy
ZXNzOlpsaWIgY29tcHJlc3Npb24KIyBsaWJyYXJ5LgoKc3ViIE1BR0lDMSgpIHsgMHgxZiB9CnN1
YiBNQUdJQzIoKSB7IDB4OGIgfQpzdWIgT1NDT0RFKCkgeyAzIH0KCnN1YiBUSUVIQU5ETEUgewoJ
bXkgKCRjbGFzcywgJG91dCkgPSBAXzsKCW15ICgkZCkgPSBDb21wcmVzczo6WmxpYjo6ZGVmbGF0
ZUluaXQoCgkJLUxldmVsICAgICAgPT4gQ29tcHJlc3M6OlpsaWI6OlpfQkVTVF9DT01QUkVTU0lP
TigpLAoJCS1XaW5kb3dCaXRzID0+IC1Db21wcmVzczo6WmxpYjo6TUFYX1dCSVRTKCkKCSkgb3Ig
cmV0dXJuIHVuZGVmOwoJbXkgKCRvKSA9IHsKCQloYW5kbGUgPT4gJG91dCwKCQlkaCAgICAgPT4g
JGQsCgkJY3JjICAgID0+IDAsCgkJbGVuICAgID0+IDAsCgl9OwoJbXkgKCRoZWFkZXIpID0KCSAg
ICBwYWNrKCJjMTAiLCBNQUdJQzEsIE1BR0lDMiwgQ29tcHJlc3M6OlpsaWI6OlpfREVGTEFURUQo
KSwgMCwgMCwgMCwKCSAgICAwLCAwLCAwLCBPU0NPREUpOwoJcHJpbnQgeyRvLT57aGFuZGxlfX0g
JGhlYWRlcjsKCXJldHVybiBibGVzcygkbywgJGNsYXNzKTsKfQoKc3ViIFBSSU5UIHsKCW15ICgk
bykgICA9IHNoaWZ0OwoJbXkgKCRidWYpID0gam9pbiAoZGVmaW5lZCAkLCA/ICQsIDogIiIsIEBf
KTsKCW15ICgkbGVuKSA9IGxlbmd0aCgkYnVmKTsKCW15ICgkY29tcHJlc3NlZCwgJHN0YXR1cykg
PSAkby0+e2RofS0+ZGVmbGF0ZSgkYnVmKTsKCXByaW50IHskby0+e2hhbmRsZX19ICRjb21wcmVz
c2VkIGlmIGRlZmluZWQoJGNvbXByZXNzZWQpOwoJJG8tPntjcmN9ID0gQ29tcHJlc3M6OlpsaWI6
OmNyYzMyKCRidWYsICRvLT57Y3JjfSk7Cgkkby0+e2xlbn0gKz0gJGxlbjsKCXJldHVybiAkbGVu
Owp9CgpzdWIgUFJJTlRGIHsKCW15ICgkbykgICA9IHNoaWZ0OwoJbXkgKCRmbXQpID0gc2hpZnQ7
CglteSAoJGJ1ZikgPSBzcHJpbnRmKCRmbXQsIEBfKTsKCW15ICgkbGVuKSA9IGxlbmd0aCgkYnVm
KTsKCW15ICgkY29tcHJlc3NlZCwgJHN0YXR1cykgPSAkby0+e2RofS0+ZGVmbGF0ZSgkYnVmKTsK
CXByaW50IHskby0+e2hhbmRsZX19ICRjb21wcmVzc2VkIGlmIGRlZmluZWQoJGNvbXByZXNzZWQp
OwoJJG8tPntjcmN9ID0gQ29tcHJlc3M6OlpsaWI6OmNyYzMyKCRidWYsICRvLT57Y3JjfSk7Cgkk
by0+e2xlbn0gKz0gJGxlbjsKCXJldHVybiAkbGVuOwp9CgpzdWIgV1JJVEUgewoJbXkgKCRvLCAk
YnVmLCAkbGVuLCAkb2ZmKSA9IEBfOwoJbXkgKCRjb21wcmVzc2VkLCAkc3RhdHVzKSA9ICRvLT57
ZGh9LT5kZWZsYXRlKHN1YnN0cigkYnVmLCAwLCAkbGVuKSk7CglwcmludCB7JG8tPntoYW5kbGV9
fSAkY29tcHJlc3NlZCBpZiBkZWZpbmVkKCRjb21wcmVzc2VkKTsKCSRvLT57Y3JjfSA9IENvbXBy
ZXNzOjpabGliOjpjcmMzMihzdWJzdHIoJGJ1ZiwgMCwgJGxlbiksICRvLT57Y3JjfSk7Cgkkby0+
e2xlbn0gKz0gJGxlbjsKCXJldHVybiAkbGVuOwp9CgpzdWIgQ0xPU0UgewoJbXkgKCRvKSA9IEBf
OwoJcmV0dXJuIGlmICFkZWZpbmVkKCRvLT57ZGh9KTsKCW15ICgkYnVmKSA9ICRvLT57ZGh9LT5m
bHVzaCgpOwoJJGJ1ZiAuPSBwYWNrKCJWIFYiLCAkby0+e2NyY30sICRvLT57bGVufSk7Cglwcmlu
dCB7JG8tPntoYW5kbGV9fSAkYnVmOwoJdW5kZWYgJG8tPntkaH07Cn0KCnN1YiBERVNUUk9ZIHsK
CW15ICgkbykgPSBAXzsKCUNMT1NFKCRvKTsKfQo=

------_=_NextPart_001_01C360B9.49C45A42--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?E36E0C5C92D97049B4855B5498A945470CB98B>