Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 25 Jul 2005 15:38:50 -0700
From:      "Ross, Bryan M" <bryan.m.ross@boeing.com>
To:        <freebsd-cvsweb@FreeBSD.org>
Subject:   Cvsweb enhancements
Message-ID:  <8B568468E66F1042A45AB841E08A72D910C84E@XCH-NW-6V1.nw.nos.boeing.com>

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

------_=_NextPart_001_01C59169.A10F1B75
Content-Type: text/plain;
	charset="US-ASCII"
Content-Transfer-Encoding: quoted-printable

Hi,

Your cvsweb script has been very useful in our processes. A little while
back, I threw together an added feature: beside each folder is displayed
the Rev., Age, Author, and Last log entry information for the most
recently changed file in that directory. Our users have grown to like
that feature, which has us in a bit of a bind. We want to download your
latest updates, but we don't want to give up that feature.

My improvements are rough and not necessarily 100 percent reliable, and
I don't have the time to incorporate them into each new script you
release, so I am requesting that you incorporate this feature into your
standard releases. It can be very helpful to tell at a glance which
files in multiple packages (folders) have been changed most recently.

For what it is worth, I am enclosing the modified version we are using
(Version 1.28).

 <<cvsweb.cgi>>=20
I sincerely hope you can add this to your list of improvements.

Thanks,


Bryan Ross
Geometry Systems
(425)237-6772
bryan.m.ross@boeing.com


------_=_NextPart_001_01C59169.A10F1B75
Content-Type: application/octet-stream;
	name="cvsweb.cgi"
Content-Transfer-Encoding: base64
Content-Description: cvsweb.cgi
Content-Disposition: attachment;
	filename="cvsweb.cgi"

IyEvdXNyL2Jpbi9wZXJsIC13c1QKIwojIGN2c3dlYiAtIGEgQ0dJIGludGVyZmFjZSB0byBDVlMg
dHJlZXMuCiMKIyBXcml0dGVuIGluIHRoZWlyIHNwYXJlIHRpbWUgYnkKIyAgICAgICAgICAgICBC
aWxsIEZlbm5lciAgICAgIDxmZW5uZXJARnJlZUJTRC5vcmc+ICAgKG9yaWdpbmFsIHdvcmspCiMg
ZXh0ZW5kZWQgYnkgSGVubmVyIFplbGxlciAgICA8emVsbGVyQHRoaW5rLmRlPiwKIyAgICAgICAg
ICAgICBIZW5yaWsgTm9yZHN0cvZtIDxobm9AaGVtLnBhc3NhZ2VuLnNlPiAKIyAgICAgICAgICAg
ICBLZW4gQ29hciAgICAgICAgIDxjb2FyQEFwYWNoZS5Pcmc+CiMgICAgICAgICAgICAgRGljayBC
YWxhc2thICAgICA8ZGlja0BidWNrb3NvZnQuY29tPgojICAgICAgICAgICAgIEplbnMtVXdlIE1h
Z2VyICAgPGp1bUBoZWxpb3MuZGU+CiMKIyBCYXNlZCBvbjoKIyAqIEJpbGwgRmVubmVycyBjdnN3
ZWIuY2dpIHJldmlzaW9uIDEuMjggYXZhaWxhYmxlIGZyb206CiMgICBodHRwOi8vd3d3LkZyZWVC
U0Qub3JnL2NnaS9jdnN3ZWIuY2dpL3d3dy9lbi9jZ2kvY3Zzd2ViLmNnaQojCiMgQ29weXJpZ2h0
IChjKSAxOTk2LTE5OTggQmlsbCBGZW5uZXIKIyAgICAgICAgICAgKGMpIDE5OTgtMTk5OSBIZW5u
ZXIgWmVsbGVyCiMJICAgIChjKSAxOTk5ICAgICAgSGVucmlrIE5vcmRzdHL2bQojIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiMKIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKIyBhcmUgbWV0OgojIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CiMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgojIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQojICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCiMKIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5ECiMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCiMgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UK
IyBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRQojIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCiMgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKIyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikKIyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAojIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKIyBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GCiMgU1VDSCBEQU1BR0UuCiMKIyAkSWQ6IGN2c3dlYi5jZ2ksdiAxLjExMiAyMDAx
LzA3LzI0IDEzOjAzOjE2IGh6ZWxsZXIgRXhwICQKIwojIyMKcmVxdWlyZSA1LjAwMDsKCnVzZSBz
dHJpY3Q7Cgp1c2UgdmFycyBxdyAoCiAgICAkY29uZmlnICRhbGxvd192ZXJzaW9uX3NlbGVjdCAk
dmVyYm9zZQogICAgJUNWU1JPT1QgJUNWU1JPT1RkZXNjciAlTUlSUk9SUyAlREVGQVVMVFZBTFVF
ICVJQ09OUyAlTVRZUEVTCiAgICAlYWxsdGFncyBAdGFiY29sb3JzICVmaWxlaW5mbyAldGFncyBA
YnJhbmNobmFtZXMgJW5hbWVwcmludGVkCiAgICAlc3ltcmV2ICVyZXZzeW0gQGFsbHJldmlzaW9u
cyAlZGF0ZSAlYXV0aG9yIEByZXZkaXNwbGF5b3JkZXIKICAgIEByZXZpc2lvbnMgJXN0YXRlICVk
aWZmbGluZXMgJWxvZyAlYnJhbmNocG9pbnQgQHJldm9yZGVyCiAgICAkY2hlY2tvdXRNYWdpYyAk
ZG9DaGVja291dCAkc2NyaXB0bmFtZSAkc2NyaXB0d2hlcmUKICAgICR3aGVyZSAkQnJvd3NlciAk
bm9maWxlbGlua3MgJG1heWNvbXByZXNzIEBzdGlja3l2YXJzCiAgICAlaW5wdXQgJHF1ZXJ5ICRi
YXJlcXVlcnkgJHNvcnRieSAkYnlkYXRlICRieXJldiAkYnlhdXRob3IKICAgICRieWxvZyAkYnlm
aWxlICRocl9kZWZhdWx0ICRsb2dzb3J0ICRjdnN0cmVlICRjdnNyb290CiAgICAkbWltZXR5cGUg
JGRlZmF1bHRUZXh0UGxhaW4gJGRlZmF1bHRWaWV3YWJsZSAkYWxsb3dfY29tcHJlc3MKICAgICRH
WklQQklOICRiYWNraWNvbiAkZGlyaWNvbiAkZmlsZWljb24gJGZ1bGxuYW1lICRuZXduYW1lCiAg
ICAkY3ZzdHJlZWRlZmF1bHQgJGJvZHlfdGFnICRsb2dvICRkZWZhdWx0dGl0bGUgJGFkZHJlc3MK
ICAgICRiYWNrY29sb3IgJGxvbmdfaW50cm8gJHNob3J0X2luc3RydWN0aW9uICRzaG9ydExvZ0xl
bgogICAgJHNob3dfYXV0aG9yICRkaXJ0YWJsZSAkdGFibGVwYWRkaW5nICRjb2x1bW5IZWFkZXJD
b2xvckRlZmF1bHQKICAgICRjb2x1bW5IZWFkZXJDb2xvclNvcnRlZCAkaHJfYnJlYWthYmxlICRo
cl9mdW5vdXQgJGhyX2lnbndoaXRlCiAgICAkaHJfaWdua2V5c3Vic3QgJGRpZmZjb2xvckhlYWRp
bmcgJGRpZmZjb2xvckVtcHR5ICRkaWZmY29sb3JSZW1vdmUKICAgICRkaWZmY29sb3JDaGFuZ2Ug
JGRpZmZjb2xvckFkZCAkZGlmZmNvbG9yRGFya0NoYW5nZSAkZGlmZmZvbnRmYWNlCiAgICAkZGlm
ZmZvbnRzaXplICRpbnB1dFRleHRTaXplICRtaW1lX3R5cGVzICRhbGxvd19hbm5vdGF0ZQogICAg
JGFsbG93X21hcmt1cCAkdXNlX2phdmFfc2NyaXB0ICRvcGVuX2V4dGVybl93aW5kb3cKICAgICRl
eHRlcm5fd2luZG93X3dpZHRoICRleHRlcm5fd2luZG93X2hlaWdodCAkZWRpdF9vcHRpb25fZm9y
bQogICAgJGNoZWNrb3V0X21hZ2ljICRzaG93X3N1YmRpcl9sYXN0bW9kICRzaG93X2xvZ19pbl9t
YXJrdXAgJHYKICAgICRuYXZpZ2F0aW9uSGVhZGVyQ29sb3IgJHRhYmxlQm9yZGVyQ29sb3IgJG1h
cmt1cExvZ0NvbG9yCiAgICAkdGFic3RvcCAkc3RhdGUgJGFublRhYmxlICRzZWwgJGN1cmJyYW5j
aCBASGlkZU1vZHVsZXMgQERpc3NhbGxvd1JlYWQKICAgICRtb2R1bGUgJHVzZV9kZXNjcmlwdGlv
bnMgJWRlc2NyaXB0aW9ucyBAbXl0eiAkZHdoZXJlICRtb2RkYXRlCiAgICAkdXNlX21vZGRhdGUg
JGhhc196bGliICRnemlwX29wZW4gJGxhc3Rtb2QgJGxhc3Rtb2R0aW1lCik7CgojIyMjIyBwcm90
b3R5cGUgZGVjbGFyYXRpb25zICMjIyMjIyMjCnN1YiBwcmludERpZmZTZWxlY3QoJCk7CnN1YiBm
aW5kTGFzdE1vZGlmaWVkU3ViZGlycyhAKTsKc3ViIGZpbmRMYXN0Q2hhbmdlZEZpbGUoJCk7CnN1
YiBodG1saWZ5KCQpOwpzdWIgc3BhY2VkSHRtbFRleHQoJCk7CnN1YiBsaW5rKCQkKTsKc3ViIHJl
dmNtcCgkJCk7CnN1YiBmYXRhbCgkJCk7CnN1YiByZWRpcmVjdCgkKTsKc3ViIHNhZmVnbG9iKCQp
OwpzdWIgZ2V0TWltZVR5cGVGcm9tU3VmZml4KCQpOwpzdWIgZG9Bbm5vdGF0ZSAoJCQpOwpzdWIg
ZG9DaGVja291dCgkJCk7CnN1YiBjdnN3ZWJNYXJrdXAoJCQkKTsKc3ViIHZpZXdhYmxlKCQpOwpz
dWIgZG9EaWZmKCQkJCQkJCk7CnN1YiBnZXREaXJMb2dzKCQkQCk7CnN1YiByZWFkTG9nKCQ7JDsk
KTsKc3ViIHByaW50TG9nKCQ7JCk7CnN1YiBkb0xvZygkKTsKc3ViIGZsdXNoX2RpZmZfcm93cyAo
JCQkJCk7CnN1YiBodW1hbl9yZWFkYWJsZV9kaWZmKCQpOwpzdWIgbmF2aWdhdGVIZWFkZXIgKCQk
JCQkKTsKc3ViIHBsdXJhbF93cml0ZSAoJCQpOwpzdWIgcmVhZGFibGVUaW1lICgkJCk7CnN1YiBj
bGlja2FibGVQYXRoKCQkKTsKc3ViIGNob29zZUNWU1Jvb3QoKTsKc3ViIGNob29zZU1pcnJvcigp
OwpzdWIgZmlsZVNvcnRDbXAoKTsKc3ViIGRvd25sb2FkX3VybCgkJCQpOwpzdWIgZG93bmxvYWRf
bGluaygkJCQkKTsKc3ViIHRvZ2dsZVF1ZXJ5KCQkKTsKc3ViIHVybGVuY29kZSgkKTsKc3ViIGh0
dHBfaGVhZGVyKDskKTsKc3ViIGh0bWxfaGVhZGVyKCQpOwpzdWIgaHRtbF9mb290ZXIoKTsKc3Vi
IGxpbmtfdGFncygkKTsKc3ViIGZvcmJpZGRlbl9tb2R1bGUoJCk7CnN1YiBmb3JiaWRkZW5fZmls
ZSgkKTsKc3ViIGNoZWNrRm9yYmlkZGVuKCRAKTsKc3ViIGd6aXBjbG9zZSgpOwpzdWIgTUFHSUMx
KCk7CnN1YiBNQUdJQzIoKTsKc3ViIE9TQ09ERSgpOwoKIyMjIyMgU3RhcnQgb2YgQ29uZmlndXJh
dGlvbiBBcmVhICMjIyMjIyMjCiMgPT0gRURJVCB0aGlzID09IAojIFVzZXIgY29uZmlndXJhdGlv
biBpcyBzdG9yZWQgaW4KJGNvbmZpZyA9ICRFTlZ7J0NWU1dFQl9DT05GSUcnfSB8fCAnL3Zhci9z
Z2lfYXBhY2hlL2h0dHBkLW91dGJveC9ldGMvY3Zzd2ViLmNvbmYnOwoKIyA9PSBDb25maWd1cmF0
aW9uIGRlZmF1bHRzID09CiMgRGVmYXVsdHMgZm9yIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIHRo
YXQgc2hvdWxkbid0IG5lZWQKIyB0byBiZSBjb25maWd1cmVkLi4KJGFsbG93X3ZlcnNpb25fc2Vs
ZWN0ID0gMTsKCiMjIyMjIEVuZCBvZiBDb25maWd1cmF0aW9uIEFyZWEgICAjIyMjIyMjIwoKIyMj
IyMjIyMgQ29uZmlndXJhdGlvbiB2YXJpYWJsZXMgIyMjIyMjIyMjCiMgVGhlc2UgYXJlIGRlZmlu
ZWQgdG8gYWxsb3cgY2hlY2tpbmcgd2l0aCBwZXJsIC1jdwolQ1ZTUk9PVCA9ICVNSVJST1JTID0g
JURFRkFVTFRWQUxVRSA9ICVJQ09OUyA9ICVNVFlQRVMgPQoldGFncyA9ICVhbGx0YWdzID0gQHRh
YmNvbG9ycyA9ICVmaWxlaW5mbyA9ICgpOwokY3ZzdHJlZWRlZmF1bHQgPSAkYm9keV90YWcgPSAk
bG9nbyA9ICRkZWZhdWx0dGl0bGUgPSAkYWRkcmVzcyA9CiRiYWNrY29sb3IgPSAkbG9uZ19pbnRy
byA9ICRzaG9ydF9pbnN0cnVjdGlvbiA9ICRzaG9ydExvZ0xlbiA9CiRzaG93X2F1dGhvciA9ICRk
aXJ0YWJsZSA9ICR0YWJsZXBhZGRpbmcgPSAkY29sdW1uSGVhZGVyQ29sb3JEZWZhdWx0ID0KJGNv
bHVtbkhlYWRlckNvbG9yU29ydGVkID0gJGhyX2JyZWFrYWJsZSA9ICRocl9mdW5vdXQgPSAkaHJf
aWdud2hpdGUgPQokaHJfaWdua2V5c3Vic3QgPSAkZGlmZmNvbG9ySGVhZGluZyA9ICRkaWZmY29s
b3JFbXB0eSA9ICRkaWZmY29sb3JSZW1vdmUgPQokZGlmZmNvbG9yQ2hhbmdlID0gJGRpZmZjb2xv
ckFkZCA9ICRkaWZmY29sb3JEYXJrQ2hhbmdlID0gJGRpZmZmb250ZmFjZSA9CiRkaWZmZm9udHNp
emUgPSAkaW5wdXRUZXh0U2l6ZSA9ICRtaW1lX3R5cGVzID0gJGFsbG93X2Fubm90YXRlID0KJGFs
bG93X21hcmt1cCA9ICR1c2VfamF2YV9zY3JpcHQgPSAkb3Blbl9leHRlcm5fd2luZG93ID0KJGV4
dGVybl93aW5kb3dfd2lkdGggPSAkZXh0ZXJuX3dpbmRvd19oZWlnaHQgPSAkZWRpdF9vcHRpb25f
Zm9ybSA9CiRjaGVja291dF9tYWdpYyA9ICRzaG93X3N1YmRpcl9sYXN0bW9kID0gJHNob3dfbG9n
X2luX21hcmt1cCA9ICR2ID0KJG5hdmlnYXRpb25IZWFkZXJDb2xvciA9ICR0YWJsZUJvcmRlckNv
bG9yID0gJG1hcmt1cExvZ0NvbG9yID0gCiR0YWJzdG9wID0gJHVzZV9tb2RkYXRlID0gJG1vZGRh
dGUgPSAkZ3ppcF9vcGVuID0gdW5kZWY7CgojIyMjIyBFbmQgb2YgY29uZmlndXJhdGlvbiB2YXJp
YWJsZXMgIyMjIyMKCnVzZSBUaW1lOjpMb2NhbDsKdXNlIElQQzo6T3BlbjI7CnVzZSBGaWxlOjpz
dGF0OwoKIyBDaGVjayBpZiB0aGUgemxpYiBDIGxpYnJhcnkgaW50ZXJmYWNlIGlzIGluc3RhbGxl
ZCwgYW5kIGlmIHllcwojIHdlIGNhbiBhdm9pZCB1c2luZyB0aGUgZXh0cmEgZ3ppcCBwcm9jZXNz
LgpldmFsIHsKCXJlcXVpcmUgQ29tcHJlc3M6OlpsaWI7Cn07CiRoYXNfemxpYiA9ICEkQDsKCiR2
ZXJib3NlID0gJHY7CiRjaGVja291dE1hZ2ljID0gIn5jaGVja291dH4iOwokd2hlcmUgPSBkZWZp
bmVkKCRFTlZ7J1BBVEhfSU5GTyd9KSA/ICRFTlZ7J1BBVEhfSU5GTyd9IDogIiI7CiRkb0NoZWNr
b3V0ID0gKCR3aGVyZSA9fiAvXlwvJGNoZWNrb3V0TWFnaWMvKTsKJHdoZXJlID1+IHN8Xi8oJGNo
ZWNrb3V0TWFnaWMpP3x8Owokd2hlcmUgPX4gc3wvKyR8fDsKKCRzY3JpcHRuYW1lID0gJEVOVnsn
U0NSSVBUX05BTUUnfSkgPX4gc3xeLz98L3w7CiRzY3JpcHRuYW1lID1+IHN8LyskfHw7CmlmICgk
d2hlcmUpIHsKICAgICRzY3JpcHR3aGVyZSA9ICRzY3JpcHRuYW1lIC4gJy8nIC4gdXJsZW5jb2Rl
KCR3aGVyZSk7Cn0KZWxzZSB7CiAgICAkc2NyaXB0d2hlcmUgPSAkc2NyaXB0bmFtZTsKfQokc2Ny
aXB0d2hlcmUgPX4gc3wvKyR8fDsKCiMgaW4gbHlueCwgaXQgaXQgdmVyeSBhbm5veWluZyB0byBo
YXZlIHR3byBsaW5rcwojIHBlciBmaWxlLCBzbyBkaXNhYmxlIHRoZSBsaW5rIGF0IHRoZSBpY29u
CiMgaW4gdGhpcyBjYXNlOgokQnJvd3NlciA9ICRFTlZ7J0hUVFBfVVNFUl9BR0VOVCd9Owokbm9m
aWxlbGlua3MgPSAoJEJyb3dzZXIgPX4gbSdeTHlueC8nKTsKCiMgbmV3ZXIgYnJvd3NlcnMgYWNj
ZXB0IGd6aXAgY29udGVudCBlbmNvZGluZwojIGFuZCBzdGF0ZSB0aGlzIGluIGEgaGVhZGVyCiMg
KG5ldHNjYXBlIGRpZCBhbHdheXMgYnV0IGRpZG4ndCBzdGF0ZSBpdCkKIyBJdCBoYXMgYmVlbiBy
ZXBvcnRlZCB0aGF0IHRoZXNlCiMgIGJyYWluZGFtYWdlZCBNUy1JbnRlcm5ldCBFeHBsb2RlcnMg
Y2xhaW0gdGhhdCB0aGV5CiMgYWNjZXB0IGd6aXAgLi4gYnV0IGRvbid0IGluIGZhY3QgYW5kCiMg
ZGlzcGxheSBnYXJiYWdlIHRoZW4gOi0vCiMgVHVybiBvZmYgZ3ppcCBpZiBydW5uaW5nIHVuZGVy
IG1vZF9wZXJsIGFuZCBubyB6bGliIGlzIGF2YWlsYWJsZSwKIyBwaXBpbmcgZG9lcyBub3Qgd29y
ayBhcyBleHBlY3RlZCBpbnNpZGUgdGhlIHNlcnZlci4KJG1heWNvbXByZXNzID0gKCgoZGVmaW5l
ZCgkRU5WeydIVFRQX0FDQ0VQVF9FTkNPRElORyd9KQoJCSAmJiAkRU5WeydIVFRQX0FDQ0VQVF9F
TkNPRElORyd9ID1+IG18Z3ppcHwpCgkJfHwgJEJyb3dzZXIgPX4gbSVeTW96aWxsYS8zJSkKCSAg
ICAgICAmJiAoJEJyb3dzZXIgIX4gbS9NU0lFLykKCSAgICAgICAmJiAhKGRlZmluZWQoJEVOVnsn
TU9EX1BFUkwnfSkgJiYgISRoYXNfemxpYikpOwoKIyBwdXQgaGVyZSB0aGUgdmFyaWFibGVzIHdl
IG5lZWQgaW4gb3JkZXIKIyB0byBob2xkIG91ciBzdGF0ZSAtIHRoZXkgd2lsbCBiZSBhZGRlZCAo
d2l0aAojIHRoZWlyIGN1cnJlbnQgdmFsdWUpIHRvIGFueSBsaW5rL3F1ZXJ5IHN0cmluZwojIHlv
dSBjb25zdHJ1Y3QKQHN0aWNreXZhcnMgPSBxdyhjdnNyb290IGhpZGVhdHRpYyBzb3J0YnkgbG9n
c29ydCBmIG9ubHlfd2l0aF90YWcpOwoKaWYgKC1mICRjb25maWcpIHsKICAgIGRvICIkY29uZmln
IjsKfQplbHNlIHsKICAgJmZhdGFsKCI1MDAgSW50ZXJuYWwgRXJyb3IiLAoJICAnQ29uZmlndXJh
dGlvbiBub3QgZm91bmQuICBTZXQgdGhlIHZhcmlhYmxlIDxjb2RlPiRjb25maWc8L2NvZGU+ICcK
ICAgICAgICAgIC4gJ2luIGN2c3dlYi5jZ2ksIG9yIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSAn
CiAgICAgICAgICAuICc8Y29kZT5DVlNXRUJfQ09ORklHPC9jb2RlPiwgdG8geW91ciA8Yj5jdnN3
ZWIuY29uZjwvYj4gJwogICAgICAgICAgLiAnY29uZmlndXJhdGlvbiBmaWxlIGZpcnN0LicpOwp9
Cgp1bmRlZiAlaW5wdXQ7CmlmICgkcXVlcnkgPSAkRU5WeydRVUVSWV9TVFJJTkcnfSkgewogICAg
Zm9yZWFjaCAoc3BsaXQoLyYvLCAkcXVlcnkpKSB7Cgl5LysvIC87CglzLyUoLi4pL3NwcmludGYo
IiVjIiwgaGV4KCQxKSkvZ2U7CSMgdW5xdW90ZSAlLXF1b3RlZAoJaWYgKC8oXFMrKT0oLiopLykg
ewoJICAgICRpbnB1dHskMX0gPSAkMiBpZiAoJDIgbmUgIiIpOwoJfQoJZWxzZSB7CgkgICAgJGlu
cHV0eyRffSsrOwoJfQogICAgfQp9CgojIEZvciBiYWNrd2FyZHMgY29tcGFiaWxpdHksIHNldCBv
bmx5X3dpdGhfdGFnIHRvIG9ubHlfb25fYnJhbmNoIGlmIHNldC4gCiRpbnB1dHtvbmx5X3dpdGhf
dGFnfSA9ICRpbnB1dHtvbmx5X29uX2JyYW5jaH0KICAgIGlmIChkZWZpbmVkKCRpbnB1dHtvbmx5
X29uX2JyYW5jaH0pKTsKCmZvcmVhY2ggKGtleXMgJURFRkFVTFRWQUxVRSkKewogICAgIyByZXBs
YWNlIG5vdCBnaXZlbiBwYXJhbWV0ZXJzIHdpdGggdGhlIGRlZmF1bHQgcGFyYW1ldGVycwogICAg
aWYgKCFkZWZpbmVkKCRpbnB1dHskX30pIHx8ICRpbnB1dHskX30gZXEgIiIpIHsKCSMgRW1wdHkg
Q2hlY2tib3hlcyBpbiBmb3JtcyByZXR1cm4gLS0gbm90aGluZy4gU28gd2UgZGVmaW5lIGEgaGVs
cGVyCgkjIHZhcmlhYmxlIGluIHRoZXNlIGZvcm1zIChjb3B0KSB3aGljaCBpbmRpY2F0ZXMgdGhh
dCB3ZSBqdXN0IHNldAoJIyBwYXJhbWV0ZXJzIHdpdGggYSBjaGVja2JveAoJaWYgKCFkZWZpbmVk
KCRpbnB1dHsiY29wdCJ9KSkgewoJICAgICMgJ2NvcHQnIGlzbid0IGRlZmluZWQgLS0+IGVtcHR5
IGlucHV0IGlzIG5vdCB0aGUgcmVzdWx0CgkgICAgIyBvZiBlbXB0eSBpbnB1dCBjaGVja2JveCAt
LT4gc2V0IGRlZmF1bHQKCSAgICAkaW5wdXR7JF99ID0gJERFRkFVTFRWQUxVRXskX30gaWYgKGRl
ZmluZWQoJERFRkFVTFRWQUxVRXskX30pKTsKCX0KCWVsc2UgewoJICAgICMgJ2NvcHQnIGlzIGRl
ZmluZWQgLT4gdGhlIHJlc3VsdCBvZiBlbXB0eSBpbnB1dCBjaGVja2JveAoJICAgICMgLT4gc2V0
IHRvIHplcm8gKGRpc2FibGUpIGlmIGRlZmF1bHQgaXMgYSBib29sZWFuICgwfDEpLgoJICAgICRp
bnB1dHskX30gPSAwCgkJaWYgKGRlZmluZWQoJERFRkFVTFRWQUxVRXskX30pCgkJICAgICYmICgk
REVGQVVMVFZBTFVFeyRffSBlcSAiMCIgfHwgJERFRkFVTFRWQUxVRXskX30gZXEgIjEiKSk7Cgl9
CiAgICB9Cn0KICAgIAokYmFyZXF1ZXJ5ID0gIiI7CmZvcmVhY2ggKEBzdGlja3l2YXJzKSB7CiAg
ICAjIGNvbnN0cnVjdCBhIHF1ZXJ5IHN0cmluZyB3aXRoIHRoZSBzdGlja3kgbm9uIGRlZmF1bHQg
cGFyYW1ldGVycyBzZXQKCWlmIChkZWZpbmVkKCRpbnB1dHskX30pICYmICgkaW5wdXR7JF99IG5l
ICIiKSAmJiAKCSAgICAoIWRlZmluZWQoJERFRkFVTFRWQUxVRXskX30pIHx8ICRpbnB1dHskX30g
bmUgJERFRkFVTFRWQUxVRXskX30pKSB7CglpZiAoJGJhcmVxdWVyeSkgewoJICAgICRiYXJlcXVl
cnkgPSAkYmFyZXF1ZXJ5IC4gIiZhbXA7IjsKCX0KCW15ICR0aGlzdmFsID0gdXJsZW5jb2RlKCRf
KSAuICI9IiAuIHVybGVuY29kZSgkaW5wdXR7JF99KTsKCSRiYXJlcXVlcnkgLj0gJHRoaXN2YWw7
CiAgICB9Cn0KIyBpcyB0aGVyZSBhbnkgcXVlcnkgPwppZiAoJGJhcmVxdWVyeSkgewogICAgJHF1
ZXJ5ID0gIj8kYmFyZXF1ZXJ5IjsKICAgICRiYXJlcXVlcnkgPSAiJmFtcDsiIC4gJGJhcmVxdWVy
eTsKfQplbHNlIHsKICAgICRxdWVyeSA9ICIiOwp9CgojIGdldCBhY3R1YWwgcGFyYW1ldGVycwok
c29ydGJ5ID0gJGlucHV0eyJzb3J0YnkifTsKJGJ5ZGF0ZSA9IDA7CiRieXJldiA9IDA7CiRieWF1
dGhvciA9IDA7CiRieWxvZyA9IDA7CiRieWZpbGUgPSAwOwppZiAoJHNvcnRieSBlcSAiZGF0ZSIp
IHsKICAgICRieWRhdGUgPSAxOwp9CmVsc2lmICgkc29ydGJ5IGVxICJyZXYiKSB7CiAgICAkYnly
ZXYgPSAxOwp9CmVsc2lmICgkc29ydGJ5IGVxICJhdXRob3IiKSB7CiAgICAkYnlhdXRob3IgPSAx
Owp9CmVsc2lmICgkc29ydGJ5IGVxICJsb2ciKSB7CiAgICAkYnlsb2cgPSAxOwp9CmVsc2Ugewog
ICAgJGJ5ZmlsZSA9IDE7Cn0KCiRocl9kZWZhdWx0ID0gJGlucHV0eydmJ30gZXEgJ2gnOwoKJGxv
Z3NvcnQgPSAkaW5wdXR7ImxvZ3NvcnQifTsKCgojIyBEZWZhdWx0IENWUy1UcmVlCmlmICghZGVm
aW5lZCgkQ1ZTUk9PVHskY3ZzdHJlZWRlZmF1bHR9KSkgewogICAmZmF0YWwoIjUwMCBJbnRlcm5h
bCBFcnJvciIsCgkgICI8Y29kZT5cJGN2c3RyZWVkZWZhdWx0PC9jb2RlPiBwb2ludHMgdG8gYSBy
ZXBvc2l0b3J5ICgkY3ZzdHJlZWRlZmF1bHQpIgoJICAuICJub3QgZGVmaW5lZCBpbiA8Y29kZT4l
Q1ZTUk9PVDwvY29kZT4gIgoJICAuICIoZWRpdCB5b3VyIGNvbmZpZ3VyYXRpb24gZmlsZSAkY29u
ZmlnKSIpOwp9CiRjdnN0cmVlID0gJGN2c3RyZWVkZWZhdWx0OwokY3Zzcm9vdCA9ICRDVlNST09U
eyIkY3ZzdHJlZSJ9OwoKIyBhbHRlcm5hdGUgQ1ZTLVRyZWUsIGNvbmZpZ3VyZWQgaW4gY3Zzd2Vi
LmNvbmYKaWYgKCRpbnB1dHsnY3Zzcm9vdCd9KSB7CiAgICBpZiAoJENWU1JPT1R7JGlucHV0eydj
dnNyb290J319KSB7CgkkY3ZzdHJlZSA9ICRpbnB1dHsnY3Zzcm9vdCd9OwoJJGN2c3Jvb3QgPSAk
Q1ZTUk9PVHsiJGN2c3RyZWUifTsKICAgIH0KfQoKIyBjcmVhdGUgaWNvbnMgb3V0IG9mIGRlc2Ny
aXB0aW9uCmZvcmVhY2ggbXkgJGsgKGtleXMgJUlDT05TKSB7CiAgICBubyBzdHJpY3QgJ3JlZnMn
OwogICAgbXkgKCRpdHh0LCRpcGF0aCwkaXdpZHRoLCRpaGVpZ2h0KSA9IEB7JElDT05TeyRrfX07
CiAgICBpZiAoJGlwYXRoKSB7CgkkIHsiJHtrfWljb24ifSA9ICI8SU1HIFNSQz1cIiRpcGF0aFwi
IEFMVD1cIiRpdHh0XCIgQk9SREVSPVwiMFwiIFdJRFRIPVwiJGl3aWR0aFwiIEhFSUdIVD1cIiRp
aGVpZ2h0XCI+IjsKICAgIH0KICAgIGVsc2UgewoJJCB7IiR7a31pY29uIn0gPSAkaXR4dDsKICAg
IH0KfQoKIyBEbyBzb21lIHNwZWNpYWwgY29uZmlndXJhdGlvbiBmb3IgY3ZzdHJlZXMKZG8gIiRj
b25maWctJGN2c3RyZWUiIGlmICgtZiAiJGNvbmZpZy0kY3ZzdHJlZSIpOwoKJGZ1bGxuYW1lID0g
JGN2c3Jvb3QgLiAnLycgLiAkd2hlcmU7CiRtaW1ldHlwZSA9ICZnZXRNaW1lVHlwZUZyb21TdWZm
aXggKCRmdWxsbmFtZSk7CiRkZWZhdWx0VGV4dFBsYWluID0gKCRtaW1ldHlwZSBlcSAidGV4dC9w
bGFpbiIpOwokZGVmYXVsdFZpZXdhYmxlID0gJGFsbG93X21hcmt1cCAmJiB2aWV3YWJsZSgkbWlt
ZXR5cGUpOwoKIyBzZWFyY2ggZm9yIEdaSVAgaWYgY29tcHJlc3Npb24gYWxsb3dlZAojIFdlJ3Zl
IHRvIGZpbmQgb3V0IGlmIHRoZSBHWklQLWJpbmFyeSBleGlzdHMgLi4gb3RoZXJ3aXNlCiMgZ2Ug
Z2V0IGFuIEludGVybmFsIFNlcnZlciBFcnJvciBpZiB3ZSB0cnkgdG8gcGlwZSB0aGUKIyBvdXRw
dXQgdGhyb3VnaCB0aGUgbm9uZXhpc3RlbnQgZ3ppcCAuLiAKIyBhbnkgbW9yZSBlbGVnYW50IHdh
eXMgdG8gcHJldmVudCB0aGlzIGFyZSB3ZWxjb21lIQppZiAoJGFsbG93X2NvbXByZXNzICYmICRt
YXljb21wcmVzcyAmJiAhJGhhc196bGliKSB7CiAgICBmb3JlYWNoIChzcGxpdCgvOi8sICRFTlZ7
UEFUSH0pKSB7CglpZiAoLXggIiRfL2d6aXAiKSB7CgkgICAgJEdaSVBCSU4gPSAiJF8vZ3ppcCI7
CgkgICAgbGFzdDsKCX0KICAgIH0KfQoKaWYgKC1kICRmdWxsbmFtZSkgewogICAgIwogICAgIyBl
bnN1cmUsIHRoYXQgZGlyZWN0b3JpZXMgYWx3YXlzIGVuZCB3aXRoIChleGFjdGx5KSBvbmUgJy8n
CiAgICAjIHRvIGFsbG93IHJlbGF0aXZlIFVSTCdzLiBJZiB0aGV5J3JlIG5vdCwgbWFrZSBhIHJl
ZGlyZWN0LgogICAgIyMKICAgIG15ICRwYXRoaW5mbyA9IGRlZmluZWQoJEVOVnsnUEFUSF9JTkZP
J30pID8gJEVOVnsnUEFUSF9JTkZPJ30gOiAiIjsKICAgIGlmICghKCRwYXRoaW5mbyA9fiBtfC8k
fCkgfHwgKCRwYXRoaW5mbyA9fiBtIHwvezIsfSR8KSkgewoJcmVkaXJlY3QgKCRzY3JpcHR3aGVy
ZSAuICcvJyAuICRxdWVyeSk7CiAgICB9CiAgICBlbHNlIHsKCSR3aGVyZSAuPSAnLyc7Cgkkc2Ny
aXB0d2hlcmUgLj0gJy8nOwogICAgfQp9CgppZiAoIS1kICRjdnNyb290KSB7CiAgICAmZmF0YWwo
IjUwMCBJbnRlcm5hbCBFcnJvciIsJyRDVlNST09UIG5vdCBmb3VuZCE8UD5UaGUgc2VydmVyIG9u
IHdoaWNoIHRoZSBDVlMgdHJlZSBsaXZlcyBpcyBwcm9iYWJseSBkb3duLiAgUGxlYXNlIHRyeSBh
Z2FpbiBpbiBhIGZldyBtaW51dGVzLicpOwp9CgojCiMgU2VlIGlmIHRoZSBtb2R1bGUgaXMgaW4g
b3VyIGZvcmJpZGRlbiBsaXN0LgojCiR3aGVyZSA9fiBtOihbXi9dKik6OwokbW9kdWxlID0gJDE7
CmlmICgkbW9kdWxlICYmICZmb3JiaWRkZW5fbW9kdWxlKCRtb2R1bGUpKSB7CiAgICAmZmF0YWwo
IjQwMyBGb3JiaWRkZW4iLCAiQWNjZXNzIHRvICR3aGVyZSBmb3JiaWRkZW4uIik7Cn0KIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgVmlldyBhIGRpcmVjdG9yeQojIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjCmVsc2lmICgtZCAkZnVsbG5hbWUpIHsKCW15ICRkaCA9IGRvIHts
b2NhbCgqREgpO307CglvcGVuZGlyKCRkaCwgJGZ1bGxuYW1lKSB8fCAmZmF0YWwoIjQwNCBOb3Qg
Rm91bmQiLCIkd2hlcmU6ICQhIik7CglteSBAZGlyID0gcmVhZGRpcigkZGgpOwoJY2xvc2VkaXIo
JGRoKTsKCW15IEBzdWJMZXZlbEZpbGVzID0gZmluZExhc3RNb2RpZmllZFN1YmRpcnMoQGRpcikK
CSAgICBpZiAoJHNob3dfc3ViZGlyX2xhc3Rtb2QpOwoJZ2V0RGlyTG9ncygkY3Zzcm9vdCwkd2hl
cmUsQHN1YkxldmVsRmlsZXMpOwoKCWlmICgkd2hlcmUgZXEgJy8nKSB7CgkgICAgaHRtbF9oZWFk
ZXIoIiRkZWZhdWx0dGl0bGUiKTsKCSAgICBwcmludCAkbG9uZ19pbnRybzsKCX0KCWVsc2UgewoJ
ICAgIGh0bWxfaGVhZGVyKCIkd2hlcmUiKTsKCSAgICBwcmludCAkc2hvcnRfaW5zdHJ1Y3Rpb247
Cgl9CgoJbXkgJGRlc2NyaXB0aW9uczsKCWlmICgoJHVzZV9kZXNjcmlwdGlvbnMpICYmIG9wZW4g
KERFU0MsICI8JGN2c3Jvb3QvQ1ZTUk9PVC9kZXNjcmlwdGlvbnMiKSkgewoJICAgIHdoaWxlICg8
REVTQz4pIHsKCQljaG9tcDsKCQlteSAoJGRpciwkZGVzY3JpcHRpb24pID0gLyhcUyspXHMrKC4q
KS87CgkJJGRlc2NyaXB0aW9uc3skZGlyfSA9ICRkZXNjcmlwdGlvbjsKCSAgICB9Cgl9CgoJcHJp
bnQgIjxQPjxhIG5hbWU9XCJkaXJsaXN0XCI+PC9hPlxuIjsKCSMgZ2l2ZSBkaXJlY3QgYWNjZXNz
IHRvIGRpcnMKCWlmICgkd2hlcmUgZXEgJy8nKSB7CgkgICAgY2hvb3NlTWlycm9yKCk7CgkgICAg
Y2hvb3NlQ1ZTUm9vdCgpOwoJfQoJZWxzZSB7CgkgICAgcHJpbnQgIjxwPkN1cnJlbnQgZGlyZWN0
b3J5OiA8Yj4iLCAmY2xpY2thYmxlUGF0aCgkd2hlcmUsMCksICI8L2I+XG4iOwoKCSAgICBwcmlu
dCAiPFA+Q3VycmVudCB0YWc6IDxCPiIsICRpbnB1dHtvbmx5X3dpdGhfdGFnfSwgIjwvYj5cbiIg
aWYKCQkkaW5wdXR7b25seV93aXRoX3RhZ307CgoJfQoJIAoKCXByaW50ICI8SFIgTk9TSEFERT5c
biI7CgkjIFVzaW5nIDxNRU5VPiBpbiB0aGlzIG1hbm5lciB2aW9sYXRlcyB0aGUgSFRNTDIuMCBz
cGVjIGJ1dAoJIyBwcm92aWRlcyB0aGUgcmVzdWx0cyB0aGF0IEkgd2FudCBpbiBtb3N0IGJyb3dz
ZXJzLiAgQW5vdGhlcgoJIyBjYXNlIG9mIGxheW91dCBzcG9vZ2luZyB1cCBIVE1MLgoJCglteSAk
aW5mb2NvbHMgPSAwOwoJaWYgKCRkaXJ0YWJsZSkgewoJICAgIGlmIChkZWZpbmVkKCR0YWJsZUJv
cmRlckNvbG9yKSkgewoJCSMgQ2FuJ3QgdGhpcyBiZSBkb25lIGJ5IGRlZmluaW5nIHRoZSBib3Jk
ZXIgZm9yIHRoZSBpbm5lciB0YWJsZT8KCQlwcmludCAiPHRhYmxlIGJvcmRlcj0wIGNlbGxwYWRk
aW5nPTAgd2lkdGg9XCIxMDAlXCI+PHRyPjx0ZCBiZ2NvbG9yPVwiJHRhYmxlQm9yZGVyQ29sb3Jc
Ij4iOwoJICAgIH0KCSAgICBwcmludCAiPHRhYmxlICB3aWR0aD1cIjEwMCVcIiBib3JkZXI9MCBj
ZWxsc3BhY2luZz0xIGNlbGxwYWRkaW5nPSR0YWJsZXBhZGRpbmc+XG4iOwoJICAgICRpbmZvY29s
cysrOwoJICAgIHByaW50ICI8dHI+PHRoIGFsaWduPWxlZnQgYmdjb2xvcj1cIiIgLiAoKCRieWZp
bGUpID8gCgkJCQkJCSAgICRjb2x1bW5IZWFkZXJDb2xvclNvcnRlZCA6IAoJCQkJCQkgICAkY29s
dW1uSGVhZGVyQ29sb3JEZWZhdWx0KSAuICJcIj4iOwoJICAgIHByaW50ICI8YSBocmVmPVwiLi8i
IC4gJnRvZ2dsZVF1ZXJ5KCJzb3J0YnkiLCJmaWxlIikgLgoJCSIjZGlybGlzdFwiPiIgaWYgKCEk
YnlmaWxlKTsKCSAgICBwcmludCAiRmlsZSI7CgkgICAgcHJpbnQgIjwvYT4iIGlmICghJGJ5Zmls
ZSk7CgkgICAgcHJpbnQgIjwvdGg+IjsKCSAgICAjIGRpc3BsYXkgdGhlIG90aGVyIGNvbHVtbi1o
ZWFkZXJzLCBldmVuIGlmIHRoZXJlIGFyZSBubyBmaWxlcwoJICAgICMgd2l0aCByZXZpc2lvbiBp
bmZvcm1hdGlvbjsgZGlzcGxheSBpbmZvcm1hdGlvbiBmb3IgbGFzdCBjaGFuZ2VkCiAgICAgICAg
ICAgICMgZmlsZXMgaW4gdGhlIGRpcmVjdG9yaWVzOgoJCSRpbmZvY29scysrOwoJCXByaW50ICI8
dGggYWxpZ249bGVmdCBiZ2NvbG9yPVwiIiAuICgoJGJ5cmV2KSA/IAoJCQkJCQkgICAkY29sdW1u
SGVhZGVyQ29sb3JTb3J0ZWQgOiAKCQkJCQkJICAgJGNvbHVtbkhlYWRlckNvbG9yRGVmYXVsdCkg
LiAiXCI+IjsKCQlwcmludCAiPGEgaHJlZj1cIi4vIiAuICZ0b2dnbGVRdWVyeSAoInNvcnRieSIs
InJldiIpIC4KCQkgICAgIiNkaXJsaXN0XCI+IiBpZiAoISRieXJldik7CgkJcHJpbnQgIlJldi4i
OwoJCXByaW50ICI8L2E+IiBpZiAoISRieXJldik7CgkJcHJpbnQgIjwvdGg+IjsKCQkkaW5mb2Nv
bHMrKzsKCQlwcmludCAiPHRoIGFsaWduPWxlZnQgYmdjb2xvcj1cIiIgLiAoKCRieWRhdGUpID8g
CgkJCQkJCSAgICRjb2x1bW5IZWFkZXJDb2xvclNvcnRlZCA6IAoJCQkJCQkgICAkY29sdW1uSGVh
ZGVyQ29sb3JEZWZhdWx0KSAuICJcIj4iOwoJCXByaW50ICI8YSBocmVmPVwiLi8iIC4gJnRvZ2ds
ZVF1ZXJ5ICgic29ydGJ5IiwiZGF0ZSIpIC4KCQkgICAgIiNkaXJsaXN0XCI+IiBpZiAoISRieWRh
dGUpOwoJCXByaW50ICJBZ2UiOwoJCXByaW50ICI8L2E+IiBpZiAoISRieWRhdGUpOwoJCXByaW50
ICI8L3RoPiI7CgkJaWYgKCRzaG93X2F1dGhvcikgewoJCSAgICAkaW5mb2NvbHMrKzsKCQkgICAg
cHJpbnQgIjx0aCBhbGlnbj1sZWZ0IGJnY29sb3I9XCIiIC4gKCgkYnlhdXRob3IpID8gCgkJCQkJ
CSAgICRjb2x1bW5IZWFkZXJDb2xvclNvcnRlZCA6IAoJCQkJCQkgICAkY29sdW1uSGVhZGVyQ29s
b3JEZWZhdWx0KSAuICJcIj4iOwoJCSAgICBwcmludCAiPGEgaHJlZj1cIi4vIiAuICZ0b2dnbGVR
dWVyeSAoInNvcnRieSIsImF1dGhvciIpIC4KCQkJICAgICIjZGlybGlzdFwiPiIgaWYgKCEkYnlh
dXRob3IpOwoJCSAgICBwcmludCAiQXV0aG9yIjsKCQkgICAgcHJpbnQgIjwvYT4iIGlmICghJGJ5
YXV0aG9yKTsKCQkgICAgcHJpbnQgIjwvdGg+IjsKCQl9CgkJJGluZm9jb2xzKys7CgkJcHJpbnQg
Ijx0aCBhbGlnbj1sZWZ0IGJnY29sb3I9XCIiIC4gKCgkYnlsb2cpID8gCgkJCQkJICAgICAgICRj
b2x1bW5IZWFkZXJDb2xvclNvcnRlZCA6IAoJCQkJCSAgICAgICAkY29sdW1uSGVhZGVyQ29sb3JE
ZWZhdWx0KSAuICJcIj4iOwoJCXByaW50ICI8YSBocmVmPVwiLi8iLCB0b2dnbGVRdWVyeSgic29y
dGJ5IiwibG9nIiksICIjZGlybGlzdFwiPiIgaWYgKCEkYnlsb2cpOwoJCXByaW50ICJMYXN0IGxv
ZyBlbnRyeSI7CgkJcHJpbnQgIjwvYT4iIGlmICghJGJ5bG9nKTsKCQlwcmludCAiPC90aD4iOwoJ
ICAgIGlmICgkdXNlX2Rlc2NyaXB0aW9ucykgewoJCXByaW50ICI8dGggYWxpZ249bGVmdCBiZ2Nv
bG9yPVwiIi4gJGNvbHVtbkhlYWRlckNvbG9yRGVmYXVsdCAuICJcIj4iOwoJCXByaW50ICJEZXNj
cmlwdGlvbiI7CgkJJGluZm9jb2xzKys7CgkgICAgfQoJICAgIHByaW50ICI8L3RyPlxuIjsKCX0K
CWVsc2UgewoJICAgIHByaW50ICI8bWVudT5cbiI7Cgl9CglteSAkZGlycm93ID0gMDsKCQoJbXkg
JGk7Cglsb29raW5nZm9yYXR0aWM6Cglmb3IgKCRpID0gMDsgJGkgPD0gJCNkaXI7ICRpKyspIHsK
CQlpZiAoJGRpclskaV0gZXEgIkF0dGljIikgewoJCSAgICBsYXN0IGxvb2tpbmdmb3JhdHRpYzsK
CQl9Cgl9CglpZiAoISRpbnB1dHsnaGlkZWF0dGljJ30gJiYgKCRpIDw9ICQjZGlyKSAmJgoJICAg
IG9wZW5kaXIoJGRoLCAkZnVsbG5hbWUgLiAiL0F0dGljIikpIHsKCSAgICBzcGxpY2UoQGRpciwg
JGksIDEsCgkJCWdyZXAoKHN8XnxBdHRpYy98LCFtfC9cLnwpLCByZWFkZGlyKCRkaCkpKTsKCSAg
ICBjbG9zZWRpcigkZGgpOwoJfQoKCW15ICRoaWRlQXR0aWNUb2dnbGVMaW5rID0gIjxhIGhyZWY9
XCIuLyIgLiAKCSAgICAgICAgJnRvZ2dsZVF1ZXJ5ICgiaGlkZWF0dGljIikgLgoJCSIjZGlybGlz
dFwiPltIaWRlXTwvYT4iIGlmICghJGlucHV0eydoaWRlYXR0aWMnfSk7CgoJIyBTb3J0IHdpdGhv
dXQgdGhlIEF0dGljLyBwYXRobmFtZS4KCSMgcGxhY2UgZGlyZWN0b3JpZXMgZmlyc3QKCglteSAk
YXR0aWM7CglteSAkdXJsOwoJbXkgJGZpbGV1cmw7CglteSAkZmlsZXNleGlzdHM7CglteSAkZmls
ZXNmb3VuZDsKCglmb3JlYWNoIChzb3J0IHsgJmZpbGVTb3J0Q21wIH0gQGRpcikgewoJICAgIGlm
ICgkXyBlcSAnLicpIHsKCQluZXh0OwoJICAgIH0KCSAgICAjIGlnbm9yZSBDVlMgbG9jayBhbmQg
c3RhbGUgTkZTIGZpbGVzCgkgICAgbmV4dCBpZiAoL14jY3ZzXC58Xix8XlwubmZzLyk7CgoJICAg
ICMgQ2hlY2sgd2hldGhlciB0byBzaG93IHRoZSBDVlNST09UIHBhdGgKCSAgICBuZXh0IGlmICgk
aW5wdXR7J2hpZGVjdnNyb290J30gJiYgKCRfIGVxICdDVlNST09UJykpOwoKCSAgICAjIENoZWNr
IHdoZXRoZXIgdGhlIG1vZHVsZSBpcyBpbiB0aGUgcmVzdHJpY3RlZCBsaXN0CgkgICAgbmV4dCBp
ZiAoJF8gJiYgJmZvcmJpZGRlbl9tb2R1bGUoJF8pKTsKCgkgICAgIyBJZ25vcmUgbm9uLXJlYWRh
YmxlIGZpbGVzCgkgICAgbmV4dCBpZiAoJGlucHV0eydoaWRlbm9ucmVhZGFibGUnfSAmJiAhKC1y
ICIkZnVsbG5hbWUvJF8iKSk7CgoJICAgIGlmIChzfF5BdHRpYy98fCkgewoJCSRhdHRpYyAgPSAi
IChpbiB0aGUgQXR0aWMpJm5ic3A7IiAuICRoaWRlQXR0aWNUb2dnbGVMaW5rOwoJICAgIH0KCSAg
ICBlbHNlIHsKCQkkYXR0aWMgPSAiIjsKCSAgICB9CgoJICAgIGlmICgkXyBlcSAnLi4nIHx8IC1k
ICIkZnVsbG5hbWUvJF8iKSB7CgkJbmV4dCBpZiAoJF8gZXEgJy4uJyAmJiAkd2hlcmUgZXEgJy8n
KTsKCQlteSAoJHJldiwkZGF0ZSwkbG9nLCRhdXRob3IsJGZpbGVuYW1lKTsKCQkoJHJldiwkZGF0
ZSwkbG9nLCRhdXRob3IsJGZpbGVuYW1lKSA9IEB7JGZpbGVpbmZveyRffX0KCQkgICAgaWYgKGRl
ZmluZWQoJGZpbGVpbmZveyRffSkpOwoJCXByaW50ICI8dHIgYmdjb2xvcj1cIiIgLiBAdGFiY29s
b3JzWyRkaXJyb3clMl0gLiAiXCI+PHRkPiIgaWYgKCRkaXJ0YWJsZSk7CgkJaWYgKCRfIGVxICcu
LicpIHsKCQkgICAgJHVybCA9ICIuLi8iIC4gJHF1ZXJ5OwoJCSAgICBpZiAoJG5vZmlsZWxpbmtz
KSB7CgkJCXByaW50ICRiYWNraWNvbjsKCQkgICAgfQoJCSAgICBlbHNlIHsKCQkJcHJpbnQgJmxp
bmsoJGJhY2tpY29uLCR1cmwpOwoJCSAgICB9CgkJICAgIHByaW50ICIgIiwgJmxpbmsoIlByZXZp
b3VzIERpcmVjdG9yeSIsJHVybCk7CgkJfQoJCWVsc2UgewoJCSAgICAkdXJsID0gdXJsZW5jb2Rl
KCRfKSAuICcvJyAuICRxdWVyeTsKCQkgICAgcHJpbnQgIjxBIE5BTUU9XCIkX1wiPjwvQT4iOwoJ
CSAgICBpZiAoJG5vZmlsZWxpbmtzKSB7CgkJCXByaW50ICRkaXJpY29uOwoJCSAgICB9CgkJICAg
IGVsc2UgewoJCQlwcmludCAmbGluaygkZGlyaWNvbiwkdXJsKTsKCQkgICAgfQoJCSAgICBwcmlu
dCAiICIsICZsaW5rKCRfIC4gIi8iLCAkdXJsKSwgJGF0dGljOwoJCSAgICBpZiAoJF8gZXEgIkF0
dGljIikgewoJCQlwcmludCAiJm5ic3A7IDxhIGhyZWY9XCIuLyIgLiAKCQkJICAgICZ0b2dnbGVR
dWVyeSAoImhpZGVhdHRpYyIpIC4KCQkJCSIjZGlybGlzdFwiPltEb24ndCBoaWRlXTwvYT4iOwoJ
CSAgICB9CgkJfSAKCQkjIFNob3cgbGFzdCBjaGFuZ2UgaW4gZGlyCgkJaWYgKCRmaWxlbmFtZSkg
ewoJCSAgICBwcmludCAiPC90ZD48dGQ+Jm5ic3A7PC90ZD48dGQ+Jm5ic3A7IiBpZiAoJGRpcnRh
YmxlKTsKCQkgICAgaWYgKCRkYXRlKSB7CgkJCXByaW50ICIgPGk+IiAuIHJlYWRhYmxlVGltZSh0
aW1lKCkgLSAkZGF0ZSwwKSAuICI8L2k+IjsKCQkgICAgfQoJCSAgICBpZiAoJHNob3dfYXV0aG9y
KSB7CgkJCXByaW50ICI8L3RkPjx0ZD4mbmJzcDsiIGlmICgkZGlydGFibGUpOwoJCQlwcmludCAk
YXV0aG9yOwoJCSAgICB9CgkJICAgIHByaW50ICI8L3RkPjx0ZD4mbmJzcDsiIGlmICgkZGlydGFi
bGUpOwoJCSAgICAkZmlsZW5hbWUgPX4gcyVeW14vXSsvJSU7CgkJICAgIHByaW50ICIkZmlsZW5h
bWUvJHJldiI7CgkJICAgIHByaW50ICI8QlI+IiBpZiAoJGRpcnRhYmxlKTsKCQkgICAgaWYgKCRs
b2cpIHsKCQkJcHJpbnQgIiZuYnNwOzxmb250IHNpemU9LTE+IgoJCQkgICAgLiAmaHRtbGlmeShz
dWJzdHIoJGxvZywwLCRzaG9ydExvZ0xlbikpOwoJCQlpZiAobGVuZ3RoICRsb2cgPiA4MCkgewoJ
CQkgICAgcHJpbnQgIi4uLiI7CgkJCX0KCQkJcHJpbnQgIjwvZm9udD4iOwoJCSAgICB9CgkJfQoJ
CWVsc2UgeyAgICMgbm90IGEgZmlsZSBuYW1lCgkJICAgIG15ICgkZHdoZXJlKSA9ICgkd2hlcmUg
bmUgIi8iID8gJHdoZXJlIDogIiIpIC4gJF87CgkJICAgIGlmICgkdXNlX2Rlc2NyaXB0aW9ucyAm
JiBkZWZpbmVkICRkZXNjcmlwdGlvbnN7JGR3aGVyZX0pIHsKCQkJcHJpbnQgIjxURCBDT0xTUEFO
PSIgLiAoJGluZm9jb2xzLTEpIC4gIj4mbmJzcDsiIGlmICRkaXJ0YWJsZTsKCQkJcHJpbnQgJGRl
c2NyaXB0aW9uc3skZHdoZXJlfTsKCQkgICAgfSBlbHNpZiAoJGRpcnRhYmxlICYmICRpbmZvY29s
cyA+IDEpIHsKCQkJIyBjbG9zZSB0aGUgcm93IHdpdGggdGhlIGFwcHJvcHJpYXRlIG51bWJlciBv
ZgoJCQkjIGNvbHVtbnMKCQkJbXkoJGNvbHMpID0gJGluZm9jb2xzOwogICAgICAgICAgICAgICAg
ICAgICAgICBuZXh0IGlmICgkXyBlcSAnLi4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgJGxh
c3Rtb2QgPSB1bmRlZjsKICAgICAgICAgICAgICAgICAgICAgICAgJGxhc3Rtb2R0aW1lID0gdW5k
ZWY7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICVyZmlsZSA9ICZmaW5kTGFzdENoYW5nZWRG
aWxlKCIkZnVsbG5hbWUvJF8iKTsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGxhdGVzdGZp
bGUgPSAkcmZpbGV7Imxhc3RmaWxlIn07CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICV0aGlz
cmV2aW5mbyA9ICZyZWFkTG9nKCRsYXRlc3RmaWxlLCAwLCAidHJ1ZSIpOwogICAgICAgICAgICAg
ICAgICAgICAgICBteSAkcmV2ID0gJHRoaXNyZXZpbmZveydyZXYnfTsKICAgICAgICAgICAgICAg
ICAgICAgICAgbXkgJGRhdGUgPSAkdGhpc3JldmluZm97J2RhdGUnfTsKICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCEkZGF0ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAkZGF0ZSA9
ICcnOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAkZGF0ZSA9IHJlYWRhYmxlVGltZSh0aW1lKCkgLSAkZGF0ZSwwKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAjIG9taXQgdG9wIHJvb3Qg
ZnJvbSB0aGUgZmlsZSBwYXRoCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICR0b3Byb290ID0g
Ii9ob21lL2FncHMvY3ZzIjsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgKCRsb2cpID0gKCRs
YXRlc3RmaWxlID1+IC9eLiokdG9wcm9vdFwvKC4qJCkvKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgbXkgJGF1dGhvciA9ICR0aGlzcmV2aW5mb3snYXV0aG9yJ307CiAgICAgICAgICAgICAgICAg
ICAgICAgIG15IEBjbXNnOwogICAgICAgICAgICAgICAgICAgICAgICAkY21zZ1swXSA9ICImbmJz
cDsiOyAgIyBlbXB0eSBzcGFjZSBwbGFjZSBob2xkZXIKICAgICAgICAgICAgICAgICAgICAgICAg
JGNtc2dbMV0gPSAiJm5ic3A7IjsKICAgICAgICAgICAgICAgICAgICAgICAgJGNtc2dbMl0gPSAk
bG9nLiImbmJzcDsiOwogICAgICAgICAgICAgICAgICAgICAgICAkY21zZ1szXSA9ICRhdXRob3Iu
IiZuYnNwOyI7CiAgICAgICAgICAgICAgICAgICAgICAgICRjbXNnWzRdID0gJGRhdGUuIiZuYnNw
OyI7CiAgICAgICAgICAgICAgICAgICAgICAgICRjbXNnWzVdID0gJHJldi4iJm5ic3A7IjsKICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGRlZmluZWQoJGZpbGVpbmZveyRsYXRlc3RmaWxlfSkp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgKCRyZXYsJGRhdGUsJGxvZywkYXV0aG9yKSA9
IEB7JGZpbGVpbmZveyRsYXRlc3RmaWxlfX07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCQkJ
d2hpbGUgKCRjb2xzID4gMSkgewoJCQkgICAgcHJpbnQgIjwvdGQ+PHRkPiRjbXNnWyRjb2xzXSIu
IiZuYnNwOyI7CgkJCSAgICAkY29scy0tOwoJCQl9CgkJICAgIH0KCQl9CgkJaWYgKCRkaXJ0YWJs
ZSkgewoJCSAgICBwcmludCAiPC90ZD48L3RyPlxuIjsKCQl9CgkJZWxzZSB7CgkJICAgIHByaW50
ICI8YnI+XG4iOwoJCX0KCQkkZGlycm93Kys7CgkgICAgfQoJICAgIGVsc2lmIChzLyx2JC8vKSB7
ICAgIyB0aGlzIGlzIGEgZmlsZSwgc28gZGlzcGxheSByZXYsIGF1dGhvciwgZXRjLgoJCSRmaWxl
dXJsID0gKCRhdHRpYyA/ICJBdHRpYy8iIDogIiIpIC4gdXJsZW5jb2RlKCRfKTsKCQkkdXJsID0g
JGZpbGV1cmwgLiAkcXVlcnk7CgkJbXkgJHJldiA9ICcnOwoJCW15ICRkYXRlID0gJyc7CgkJbXkg
JGxvZyA9ICcnOwoJCW15ICRhdXRob3IgPSAnJzsKCQkkZmlsZXNleGlzdHMrKzsKCQluZXh0IGlm
ICghZGVmaW5lZCgkZmlsZWluZm97JF99KSk7CgkJKCRyZXYsJGRhdGUsJGxvZywkYXV0aG9yKSA9
IEB7JGZpbGVpbmZveyRffX07CgkJJGZpbGVzZm91bmQrKzsKCQlwcmludCAiPHRyIGJnY29sb3I9
XCIiIC4gQHRhYmNvbG9yc1skZGlycm93JTJdIC4gIlwiPjx0ZD4iIGlmICgkZGlydGFibGUpOwoJ
CXByaW50ICI8QSBOQU1FPVwiJF9cIj48L0E+IjsKCQlpZiAoJG5vZmlsZWxpbmtzKSB7CgkJICAg
IHByaW50ICRmaWxlaWNvbjsKCQl9CgkJZWxzZSB7CgkJICAgIHByaW50ICZsaW5rKCRmaWxlaWNv
biwkdXJsKTsKCQl9CgkJcHJpbnQgIiAiLCAmbGluaygkXywgJHVybCksICRhdHRpYzsKCQlwcmlu
dCAiPC90ZD48dGQ+Jm5ic3A7IiBpZiAoJGRpcnRhYmxlKTsKCQlkb3dubG9hZF9saW5rKCRmaWxl
dXJsLAoJCQkkcmV2LCAkcmV2LCAKCQkJJGRlZmF1bHRWaWV3YWJsZSA/ICJ0ZXh0L3gtY3Zzd2Vi
LW1hcmt1cCIgOiB1bmRlZik7CgkJcHJpbnQgIjwvdGQ+PHRkPiZuYnNwOyIgaWYgKCRkaXJ0YWJs
ZSk7CgkJaWYgKCRkYXRlKSB7CgkJICAgIHByaW50ICIgPGk+IiAuIHJlYWRhYmxlVGltZSh0aW1l
KCkgLSAkZGF0ZSwwKSAuICI8L2k+IjsKCQl9CgkJaWYgKCRzaG93X2F1dGhvcikgewoJCSAgICBw
cmludCAiPC90ZD48dGQ+Jm5ic3A7IiBpZiAoJGRpcnRhYmxlKTsKCQkgICAgcHJpbnQgJGF1dGhv
cjsKCQl9CgkJcHJpbnQgIjwvdGQ+PHRkPiZuYnNwOyIgaWYgKCRkaXJ0YWJsZSk7CgkJaWYgKCRs
b2cpIHsKCQkgICAgcHJpbnQgIiA8Zm9udCBzaXplPS0xPiIgLiAmaHRtbGlmeShzdWJzdHIoJGxv
ZywwLCRzaG9ydExvZ0xlbikpOwoJCSAgICBpZiAobGVuZ3RoICRsb2cgPiA4MCkgewoJCQlwcmlu
dCAiLi4uIjsKCQkgICAgfQoJCSAgICBwcmludCAiPC9mb250PiI7CgkJfQoJCXByaW50ICI8L3Rk
PiIgaWYgKCRkaXJ0YWJsZSk7CgkJcHJpbnQgKCgkZGlydGFibGUpID8gIjwvdHI+IiA6ICI8YnI+
Iik7CgkJJGRpcnJvdysrOwoJICAgIH0KCSAgICBwcmludCAiXG4iOwoJfQoJaWYgKCRkaXJ0YWJs
ZSAmJiBkZWZpbmVkKCR0YWJsZUJvcmRlckNvbG9yKSkgewoJICAgIHByaW50ICI8L3RkPjwvdHI+
PC90YWJsZT4iOwoJfQoJcHJpbnQgIiIuICgkZGlydGFibGUgPT0gMSkgPyAiPC90YWJsZT4iIDog
IjwvbWVudT4iIC4gIlxuIjsKCQoJaWYgKCRmaWxlc2V4aXN0cyAmJiAhJGZpbGVzZm91bmQpIHsK
CSAgICBwcmludCAiPFA+PEI+Tk9URTo8L0I+IFRoZXJlIGFyZSAkZmlsZXNleGlzdHMgZmlsZXMs
IGJ1dCBub25lIG1hdGNoZXMgdGhlIGN1cnJlbnQgdGFnICgkaW5wdXR7b25seV93aXRoX3RhZ30p
XG4iOwoJfQoJaWYgKCRpbnB1dHtvbmx5X3dpdGhfdGFnfSAmJiAoISV0YWdzIHx8ICEkdGFnc3sk
aW5wdXR7b25seV93aXRoX3RhZ319KSkgewoJICAgICV0YWdzID0gJWFsbHRhZ3MKCX0KCWlmIChz
Y2FsYXIgJXRhZ3MgCgkgICAgfHwgJGlucHV0e29ubHlfd2l0aF90YWd9IAoJICAgIHx8ICRlZGl0
X29wdGlvbl9mb3JtCgkgICAgfHwgZGVmaW5lZCgkaW5wdXR7Im9wdGlvbnMifSkpIHsKCSAgICBw
cmludCAiPGhyIHNpemU9MSBOT1NIQURFPiI7Cgl9CgoJaWYgKHNjYWxhciAldGFncyB8fCAkaW5w
dXR7b25seV93aXRoX3RhZ30pIHsKCSAgICBwcmludCAiPEZPUk0gTUVUSE9EPVwiR0VUXCIgQUNU
SU9OPVwiLi9cIj5cbiI7CgkgICAgZm9yZWFjaCBteSAkdmFyIChAc3RpY2t5dmFycykgewoJCXBy
aW50ICI8SU5QVVQgVFlQRT1ISURERU4gTkFNRT1cIiR2YXJcIiBWQUxVRT1cIiRpbnB1dHskdmFy
fVwiPlxuIgoJCSAgICBpZiAoZGVmaW5lZCgkaW5wdXR7JHZhcn0pCgkJCSYmICghZGVmaW5lZCgk
REVGQVVMVFZBTFVFeyR2YXJ9KQoJCQkgICAgfHwgJGlucHV0eyR2YXJ9IG5lICRERUZBVUxUVkFM
VUV7JHZhcn0pCgkJCSYmICRpbnB1dHskdmFyfSBuZSAiIgoJCQkmJiAkdmFyIG5lICJvbmx5X3dp
dGhfdGFnIik7CgkgICAgfQoJICAgIHByaW50ICJTaG93IG9ubHkgZmlsZXMgd2l0aCB0YWc6XG4i
OwoJICAgIHByaW50ICI8U0VMRUNUIE5BTUU9b25seV93aXRoX3RhZyI7CgkgICAgcHJpbnQgIiBv
bmNoYW5nZT1cInN1Ym1pdCgpXCIiIGlmICgkdXNlX2phdmFfc2NyaXB0KTsKCSAgICBwcmludCAi
PiI7CgkgICAgcHJpbnQgIjxPUFRJT04gVkFMVUU9XCJcIj5BbGwgdGFncyAvIGRlZmF1bHQgYnJh
bmNoXG4iOwoJICAgIGZvcmVhY2ggbXkgJHRhZyAocmV2ZXJzZSBzb3J0IHsgbGMgJGEgY21wIGxj
ICRiIH0ga2V5cyAldGFncykgewoJCXByaW50ICI8T1BUSU9OIixkZWZpbmVkKCRpbnB1dHtvbmx5
X3dpdGhfdGFnfSkgJiYgCgkJICAgICAgICRpbnB1dHtvbmx5X3dpdGhfdGFnfSBlcSAkdGFnID8g
IiBTRUxFQ1RFRCI6IiIsCgkJICAgICAgICI+JHRhZ1xuIjsKCSAgICB9CgkgICAgcHJpbnQgIjwv
U0VMRUNUPlxuIjsKCSAgICBwcmludCAiPElOUFVUIFRZUEU9U1VCTUlUIFZBTFVFPVwiR29cIj5c
biI7CgkgICAgcHJpbnQgIjwvRk9STT5cbiI7Cgl9CglteSAkZm9ybXdoZXJlID0gJHNjcmlwdHdo
ZXJlOwoJJGZvcm13aGVyZSA9fiBzfEF0dGljLz8kfHwgaWYgKCRpbnB1dHsnaGlkZWF0dGljJ30p
OwoKCWlmICgkZWRpdF9vcHRpb25fZm9ybSB8fCBkZWZpbmVkKCRpbnB1dHsib3B0aW9ucyJ9KSkg
ewoJICAgIHByaW50ICI8Rk9STSBNRVRIT0Q9XCJHRVRcIiBBQ1RJT049XCIke2Zvcm13aGVyZX1c
Ij5cbiI7CgkgICAgcHJpbnQgIjxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPVwiY29wdFwiIFZBTFVF
PVwiMVwiPlxuIjsKCSAgICBpZiAoJGN2c3RyZWUgbmUgJGN2c3RyZWVkZWZhdWx0KSB7CgkJcHJp
bnQgIjxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPVwiY3Zzcm9vdFwiIFZBTFVFPVwiJGN2c3RyZWVc
Ij5cbiI7CgkgICAgfQoJICAgIHByaW50ICI8Y2VudGVyPjx0YWJsZSBjZWxscGFkZGluZz0wIGNl
bGxzcGFjaW5nPTA+IjsKCSAgICBwcmludCAiPHRyIGJnY29sb3I9XCIkY29sdW1uSGVhZGVyQ29s
b3JEZWZhdWx0XCI+PHRoIGNvbHNwYW49Mj5QcmVmZXJlbmNlczwvdGg+PC90cj4iOwoJICAgIHBy
aW50ICI8dHI+PHRkPlNvcnQgZmlsZXMgYnkgPFNFTEVDVCBuYW1lPVwic29ydGJ5XCI+IjsKCSAg
ICBwcmludCAiPE9QVElPTiBWQUxVRT1cIlwiPkZpbGUiOwoJICAgIHByaW50ICI8T1BUSU9OIiwk
YnlkYXRlID8gIiBTRUxFQ1RFRCIgOiAiIiwiIFZBTFVFPWRhdGU+QWdlIjsKCSAgICBwcmludCAi
PE9QVElPTiIsJGJ5YXV0aG9yID8gIiBTRUxFQ1RFRCIgOiAiIiwiIFZBTFVFPWF1dGhvcj5BdXRo
b3IiCgkJaWYgKCRzaG93X2F1dGhvcik7CgkgICAgcHJpbnQgIjxPUFRJT04iLCRieXJldiA/ICIg
U0VMRUNURUQiIDogIiIsIiBWQUxVRT1yZXY+UmV2aXNpb24iOwoJICAgIHByaW50ICI8T1BUSU9O
IiwkYnlsb2cgPyAiIFNFTEVDVEVEIiA6ICIiLCIgVkFMVUU9bG9nPkxvZyBtZXNzYWdlIjsKCSAg
ICBwcmludCAiPC9TRUxFQ1Q+PC90ZD4iOwoJICAgIHByaW50ICI8dGQ+cmV2aXNpb25zIGJ5OiBc
biI7CgkgICAgcHJpbnQgIjxTRUxFQ1QgTkFNRT1sb2dzb3J0PlxuIjsKCSAgICBwcmludCAiPE9Q
VElPTiBWQUxVRT1jdnMiLCRsb2dzb3J0IGVxICJjdnMiID8gIiBTRUxFQ1RFRCIgOiAiIiwgIj5O
b3Qgc29ydGVkIjsKCSAgICBwcmludCAiPE9QVElPTiBWQUxVRT1kYXRlIiwkbG9nc29ydCBlcSAi
ZGF0ZSIgPyAiIFNFTEVDVEVEIiA6ICIiLCAiPkNvbW1pdCBkYXRlIjsKCSAgICBwcmludCAiPE9Q
VElPTiBWQUxVRT1yZXYiLCRsb2dzb3J0IGVxICJyZXYiID8gIiBTRUxFQ1RFRCIgOiAiIiwgIj5S
ZXZpc2lvbiI7CgkgICAgcHJpbnQgIjwvU0VMRUNUPjwvdGQ+PC90cj4iOwoJICAgIHByaW50ICI8
dHI+PHRkPkRpZmYgZm9ybWF0OiAiOwoJICAgIHByaW50RGlmZlNlbGVjdCgwKTsKCSAgICBwcmlu
dCAiPC90ZD4iOwoJICAgIHByaW50ICI8dGQ+U2hvdyBBdHRpYyBmaWxlczogIjsKCSAgICBwcmlu
dCAiPElOUFVUIE5BTUU9aGlkZWF0dGljIFRZUEU9Q0hFQ0tCT1giLCAkaW5wdXR7J2hpZGVhdHRp
Yyd9PyIgQ0hFQ0tFRCI6IiIsIAoJICAgICI+PC90ZD48L3RyPlxuIjsKCSAgICBwcmludCAiPHRy
Pjx0ZCBhbGlnbj1jZW50ZXIgY29sc3Bhbj0yPjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT1cIkNo
YW5nZSBPcHRpb25zXCI+IjsKCSAgICBwcmludCAiPC90ZD48L3RyPjwvdGFibGU+PC9jZW50ZXI+
PC9GT1JNPlxuIjsKCX0KCXByaW50ICZodG1sX2Zvb3RlcjsKCXByaW50ICI8L0JPRFk+PC9IVE1M
PlxuIjsKICAgIH0gCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgVmlldyBGaWxl
cwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICBlbHNpZiAoLWYgJGZ1bGxuYW1l
IC4gJyx2JykgewoJaWYgKGRlZmluZWQoJGlucHV0eydyZXYnfSkgfHwgJGRvQ2hlY2tvdXQpIHsK
CSAgICAmZG9DaGVja291dCgkZnVsbG5hbWUsICRpbnB1dHsncmV2J30pOwoJICAgIGd6aXBjbG9z
ZSgpOwoJICAgIGV4aXQ7Cgl9CglpZiAoZGVmaW5lZCgkaW5wdXR7J2Fubm90YXRlJ30pICYmICRh
bGxvd19hbm5vdGF0ZSkgewoJICAgICZkb0Fubm90YXRlKCRpbnB1dHsnYW5ub3RhdGUnfSk7Cgkg
ICAgZ3ppcGNsb3NlKCk7CgkgICAgZXhpdDsKCX0KCWlmIChkZWZpbmVkKCRpbnB1dHsncjEnfSkg
JiYgZGVmaW5lZCgkaW5wdXR7J3IyJ30pKSB7CgkgICAgJmRvRGlmZigkZnVsbG5hbWUsICRpbnB1
dHsncjEnfSwgJGlucHV0eyd0cjEnfSwKCQkgICAgJGlucHV0eydyMid9LCAkaW5wdXR7J3RyMid9
LCAkaW5wdXR7J2YnfSk7CgkgICAgZ3ppcGNsb3NlKCk7CgkgICAgZXhpdDsKCX0KCXByaW50KCJn
b2luZyB0byBkb2xvZygkZnVsbG5hbWUpXG4iKSBpZiAoJHZlcmJvc2UpOwoJJmRvTG9nKCRmdWxs
bmFtZSk7CiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZpZXcgRGlmZgojIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgIH0KICAgIGVsc2lmICgkZnVsbG5hbWUgPX4gcy9c
LmRpZmYkLy8gJiYgLWYgJGZ1bGxuYW1lIC4gIix2IiAmJgoJICAgJGlucHV0eydyMSd9ICYmICRp
bnB1dHsncjInfSkgewoKCSMgJHdoZXJlLWRpZmYtcmVtb3ZhbCBpZiAnY3ZzIHJkaWZmJyBpcyB1
c2VkCgkjIC4uIGJ1dCAnY3ZzIHJkaWZmJ2RvZXNuJ3Qgc3VwcG9ydCBzb21lIG9wdGlvbnMKCSMg
cmNzZGlmZiBkb2VzICgtdyBhbmQgLXApLCBzbyBpdCBpcyBkaXNhYmxlZAoJIyAkd2hlcmUgPX4g
cy9cLmRpZmYkLy87CgoJIyBBbGxvdyBkaWZmcyB1c2luZyB0aGUgIi5kaWZmIiBleHRlbnNpb24K
CSMgc28gdGhhdCBicm93c2VycyB0aGF0IGRlZmF1bHQgdG8gdGhlIFVSTAoJIyBmb3IgYSBzYXZl
IGZpbGVuYW1lIGRvbid0IHNhdmUgZGlmZidzIGFzCgkjIGUuZy4gZm9vLmMKCSZkb0RpZmYoJGZ1
bGxuYW1lLCAkaW5wdXR7J3IxJ30sICRpbnB1dHsndHIxJ30sCgkJJGlucHV0eydyMid9LCAkaW5w
dXR7J3RyMid9LCAkaW5wdXR7J2YnfSk7CglnemlwY2xvc2UoKTsKCWV4aXQ7CiAgICB9CiAgICBl
bHNpZiAoKCRuZXduYW1lID0gJGZ1bGxuYW1lKSA9fiBzfC8oW14vXSspJHwvQXR0aWMvJDF8ICYm
CgkgICAtZiAkbmV3bmFtZSAuICIsdiIpIHsKCSMgVGhlIGZpbGUgaGFzIGJlZW4gcmVtb3ZlZCBh
bmQgaXMgaW4gdGhlIEF0dGljLgoJIyBTZW5kIGEgcmVkaXJlY3QgcG9pbnRpbmcgdG8gdGhlIGZp
bGUgaW4gdGhlIEF0dGljLgoJKG15ICRuZXdwbGFjZSA9ICRzY3JpcHR3aGVyZSkgPX4gc3wvKFte
L10rKSR8L0F0dGljLyQxfDsKCSZyZWRpcmVjdCgkbmV3cGxhY2UgLiAiPyIgLiAkRU5We1FVRVJZ
X1NUUklOR30pOwoJZXhpdDsKICAgIH0KICAgIGVsc2lmICgwICYmIChteSBAZmlsZXMgPSAmc2Fm
ZWdsb2IoJGZ1bGxuYW1lIC4gIix2IikpKSB7CglodHRwX2hlYWRlcigidGV4dC9wbGFpbiIpOwoJ
cHJpbnQgIllvdSBtYXRjaGVkIHRoZSBmb2xsb3dpbmcgZmlsZXM6XG4iOwoJcHJpbnQgam9pbigi
XG4iLCBAZmlsZXMpOwoJIyBGaW5kIHRoZSB0YWdzIGZyb20gZWFjaCBmaWxlCgkjIERpc3BsYXkg
YSBmb3JtIG9mZmVyaW5nIGRpZmZzIGJldHdlZW4gc2FpZCB0YWdzCiAgICB9CiAgICBlbHNlIHsK
CW15ICRmaCA9IGRvIHtsb2NhbCgqRkgpO307CglteSAoJHh0cmEsICRtb2R1bGUpOwoJIyBBc3N1
bWUgaXQncyBhIG1vZHVsZSBuYW1lIHdpdGggYSBwb3RlbnRpYWwgcGF0aCBmb2xsb3dpbmcgaXQu
CgkkeHRyYSA9ICQmIGlmICgoJG1vZHVsZSA9ICR3aGVyZSkgPX4gc3wvLip8fCk7CgkjIElzIHRo
ZXJlIGFuIGluZGV4ZWQgdmVyc2lvbiBvZiBtb2R1bGVzPwoJaWYgKG9wZW4oJGZoLCAiJGN2c3Jv
b3QvQ1ZTUk9PVC9tb2R1bGVzIikpIHsKCSAgICB3aGlsZSAoPCRmaD4pIHsKCQlpZiAoL14oXFMr
KVxzKyhcUyspL28gJiYgJG1vZHVsZSBlcSAkMQoJCSAgICAmJiAtZCAiJHtjdnNyb290fS8kMiIg
JiYgJG1vZHVsZSBuZSAkMikgewoJCSAgICAmcmVkaXJlY3QoJHNjcmlwdG5hbWUgLiAnLycgLiAk
MiAuICR4dHJhKTsKCQl9CgkgICAgfQoJfQoJJmZhdGFsKCI0MDQgTm90IEZvdW5kIiwiJHdoZXJl
OiBubyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Iik7CiAgICB9CgpnemlwY2xvc2UoKTsKIyMgRW5k
IE1BSU4KCnN1YiBwcmludERpZmZTZWxlY3QoJCkgewogICAgbXkgKCR1c2VfamF2YV9zY3JpcHQp
ID0gQF87CiAgICAkdXNlX2phdmFfc2NyaXB0ID0gMCBpZiAoIWRlZmluZWQoJHVzZV9qYXZhX3Nj
cmlwdCkpOwogICAgbXkgKCRmKSA9ICRpbnB1dHsnZid9OwogICAgcHJpbnQgIjxTRUxFQ1QgTkFN
RT1cImZcIiI7CiAgICBwcmludCAiIG9uY2hhbmdlPVwic3VibWl0KClcIiIgaWYgKCR1c2VfamF2
YV9zY3JpcHQpOwogICAgcHJpbnQgIj5cbiI7CiAgICBwcmludCAiPE9QVElPTiBWQUxVRT1oIiwk
ZiBlcSAiaCIgPyAiIFNFTEVDVEVEIiA6ICIiLCAiPkNvbG9yZWQgRGlmZiI7CiAgICBwcmludCAi
PE9QVElPTiBWQUxVRT1IIiwkZiBlcSAiSCIgPyAiIFNFTEVDVEVEIiA6ICIiLCAiPkxvbmcgQ29s
b3JlZCBEaWZmIjsKICAgIHByaW50ICI8T1BUSU9OIFZBTFVFPXUiLCRmIGVxICJ1IiA/ICIgU0VM
RUNURUQiIDogIiIsICI+VW5pZGlmZiI7CiAgICBwcmludCAiPE9QVElPTiBWQUxVRT1jIiwkZiBl
cSAiYyIgPyAiIFNFTEVDVEVEIiA6ICIiLCAiPkNvbnRleHQgRGlmZiI7CiAgICAjcHJpbnQgIjxP
UFRJT04gVkFMVUU9cyIsJGYgZXEgInMiID8gIiBTRUxFQ1RFRCIgOiAiIiwgIj5TaWRlIGJ5IFNp
ZGUiOwogICAgcHJpbnQgIjwvU0VMRUNUPiI7Cn0KCnN1YiBmaW5kTGFzdE1vZGlmaWVkU3ViZGly
cyhAKSB7CiAgICBteSAoQGRpcnMpID0gQF87CiAgICBteSAoJGRpcm5hbWUsIEBmaWxlcyk7Cgog
ICAgZm9yZWFjaCAkZGlybmFtZSAoQGRpcnMpIHsKCW5leHQgaWYgKCRkaXJuYW1lIGVxICIuIik7
CgluZXh0IGlmICgkZGlybmFtZSBlcSAiLi4iKTsKCW15ICgkZGlyKSA9ICIkZnVsbG5hbWUvJGRp
cm5hbWUiOwoJbmV4dCBpZiAoIS1kICRkaXIpOwoKCW15ICgkbGFzdG1vZCkgPSB1bmRlZjsKCW15
ICgkbGFzdG1vZHRpbWUpID0gdW5kZWY7CglteSAkZGggPSBkbyB7bG9jYWwoKkRIKTt9OwoKCW9w
ZW5kaXIoJGRoLCRkaXIpIHx8IG5leHQ7CglteSAoQGZpbGVuYW1lcykgPSByZWFkZGlyKCRkaCk7
CgljbG9zZWRpcigkZGgpOwoKCWZvcmVhY2ggbXkgJGZpbGVuYW1lIChAZmlsZW5hbWVzKSB7Cgkg
ICAgJGZpbGVuYW1lID0gIiRkaXJuYW1lLyRmaWxlbmFtZSI7CgkgICAgbXkgKCRmaWxlKSA9ICIk
ZnVsbG5hbWUvJGZpbGVuYW1lIjsKCSAgICBuZXh0IGlmICgkZmlsZW5hbWUgIX4gLyx2JC8gfHwg
IS1mICRmaWxlKTsKCSAgICAkZmlsZW5hbWUgPX4gcy8sdiQvLzsKCSAgICBteSAkbW9kdGltZSA9
IC1NICRmaWxlOwoJICAgIGlmICghZGVmaW5lZCgkbGFzdG1vZCkgfHwgJG1vZHRpbWUgPCAkbGFz
dG1vZHRpbWUpIHsKCQkkbGFzdG1vZCA9ICRmaWxlbmFtZTsKCQkkbGFzdG1vZHRpbWUgPSAkbW9k
dGltZTsKCSAgICB9Cgl9CglwdXNoKEBmaWxlcywgJGxhc3Rtb2QpIGlmIChkZWZpbmVkKCRsYXN0
bW9kKSk7CiAgICB9CiAgICByZXR1cm4gQGZpbGVzOwp9ICMgZW5kIHN1YiBmaW5kTGFzdE1vZGlm
aWVkU3ViZGlycwoKc3ViIGZpbmRMYXN0Q2hhbmdlZEZpbGUoJCkgewogICAjIHJlY3Vyc2l2ZWx5
IHNlYXJjaCB0aGUgZGlyZWN0b3J5IGZvciBtb3N0IHJlY2VudCBmaWxlCiAgIG15ICgkZGRpcikg
PSBAXzsgICAjIGlucHV0IGRpcmVjdG9yeQogICBteSAlcmVjZW50RmlsZTsgICAgIyBvdXRwdXQg
aGFzaCB3aXRoIGZpbGUgbmFtZSBhbmQgY2hhbmdlIGRhdGUKICAgb3BlbmRpcihEREgsICRkZGly
KSB8fCAiQ2Fubm90IG9wZW4gJGRkaXIiOwogICBteSBAZGlycyA9IHJlYWRkaXIoRERIKTsKICAg
Y2xvc2VkaXIoRERIKTsKICAgZm9yZWFjaCBteSAkZGlyb3JmaWxlIChAZGlycykgewogICAgICBu
ZXh0IGlmICgkZGlyb3JmaWxlIGVxICIuIik7CiAgICAgIG5leHQgaWYgKCRkaXJvcmZpbGUgZXEg
Ii4uIik7CiAgICAgIG5leHQgaWYgKCRkaXJvcmZpbGUgZXEgIkNWUyIpOwogICAgICBteSAkZm5h
bWUgPSAkZGRpci4iLyIuJGRpcm9yZmlsZTsKICAgICAgaWYgKC1kICRmbmFtZSkgewogICAgICAg
ICAlcmVjZW50RmlsZSA9ICZmaW5kTGFzdENoYW5nZWRGaWxlKCRmbmFtZSk7CiAgICAgICAgIG5l
eHQ7CiAgICAgIH0gZWxzZSB7ICAgIyBtdXN0IGJlIGEgZmlsZQogICAgICAgICBteSAkZm5hbWUg
PSAkZGRpci4iLyIuJGRpcm9yZmlsZTsKICAgICAgICAgbXkgJG1vZHRpbWUgPSAtTSAkZm5hbWU7
CiAgICAgICAgICRkaXJvcmZpbGUgPX4gcy8sdiQvLzsKICAgICAgICAgJGZuYW1lID0gJGRkaXIu
Ii8iLiRkaXJvcmZpbGU7ICAgIyBjcmVhdGUgdHJpbW1lZCBuYW1lCiAgICAgICAgIGlmICghZGVm
aW5lZCgkbGFzdG1vZCkgfHwgJG1vZHRpbWUgPCAkbGFzdG1vZHRpbWUpIHsKICAgICAgICAgICAg
JGxhc3Rtb2QgPSAkZm5hbWU7CiAgICAgICAgICAgICRsYXN0bW9kdGltZSA9ICRtb2R0aW1lOwog
ICAgICAgICAgICAkcmVjZW50RmlsZXsibGFzdGZpbGUifSA9ICRsYXN0bW9kOwogICAgICAgICAg
ICAkcmVjZW50RmlsZXsibGFzdHRpbWUifSA9ICRsYXN0bW9kdGltZTsKICAgICAgICAgfSAjIGVu
ZCBpZgogICAgICB9ICAjIGVuZCBpZgogICB9ICAjIGVuZCBmb3JlYWNoCiAgICRyZWNlbnRGaWxl
eyJsYXN0ZmlsZSJ9ID0gJGxhc3Rtb2Q7CiAgICRyZWNlbnRGaWxleyJsYXN0dGltZSJ9ID0gJGxh
c3Rtb2R0aW1lOwogICByZXR1cm4gJXJlY2VudEZpbGU7Cn0gICMgZW5kIHN1YiBmaW5kTGFzdENo
YW5nZWRGaWxlCgpzdWIgaHRtbGlmeSgkKSB7CglteSgkc3RyaW5nKSA9IEBfOwoKCSMgU3BlY2lh
bCBDaGFyYWN0ZXJzOyBSRkMgMTg2NgoJJHN0cmluZyA9fiBzLyYvJmFtcDsvZzsKCSRzdHJpbmcg
PX4gcy9cIi8mcXVvdDsvZzsgCgkkc3RyaW5nID1+IHMvPC8mbHQ7L2c7Cgkkc3RyaW5nID1+IHMv
Pi8mZ3Q7L2c7CgoJIyBnZXQgVVJMJ3MgYXMgbGluayAuLgoJJHN0cmluZyA9fiBzpyhodHRwfGZ0
cHxodHRwcykoOi8vWy1hLXpBLVowLTklLn46Xy9dKykoWz8mXShbLWEtekEtWjAtOSUufjpfXSsp
PShbLWEtekEtWjAtOSUufjpfXSkrKSqnPEEgSFJFRj0iJDEkMiQzIj4kMSQyJDM8L0E+pzsKCSMg
Z2V0IGUtbWFpbHMgYXMgbGluawoJJHN0cmluZyA9fiBzpyhbLWEtekEtWjAtOV8uXStAKFstYS16
QS1aMC05XStcLikrW0EtWmEtel17Miw0fSmnPEEgSFJFRj0ibWFpbHRvOiQxIj4kMTwvQT6nOwoK
CXJldHVybiAkc3RyaW5nOwp9CgpzdWIgc3BhY2VkSHRtbFRleHQoJCkgewoJbXkoJHN0cmluZykg
PSBAXzsKCgkjIEN1dCB0cmFpbGluZyBzcGFjZXMKCXMvXHMrJC8vOwoKCSMgRXhwYW5kIHRhYnMK
CSRzdHJpbmcgPX4gcy9cdCsvJyAnIHggKGxlbmd0aCgkJikgKiAkdGFic3RvcCAtIGxlbmd0aCgk
YCkgJSAkdGFic3RvcCkvZQoJICAgIGlmIChkZWZpbmVkKCR0YWJzdG9wKSk7CgoJIyByZXBsYWNl
IDx0YWI+IGFuZCA8c3BhY2U+ICinIGlzIHRvIHByb3RlY3QgdXMgZnJvbSBodG1saWZ5KQoJIyBn
emlwIGNhbiBtYWtlIGV4Y2VsbGVudCB1c2Ugb2YgdGhpcyByZXBlYXRpbmcgcGF0dGVybiA6LSkK
CSRzdHJpbmcgPX4gcy+nL6clL2c7ICNwcm90ZWN0IG91ciAmIHN1YnN0aXR1dGUKCWlmICgkaHJf
YnJlYWthYmxlKSB7CgkgICAgIyBtYWtlIGV2ZXJ5IG90aGVyIHNwYWNlICdicmVha2FibGUnCgkg
ICAgJHN0cmluZyA9fiBzLwkvIKduYnNwOyCnbmJzcDsgp25ic3A7IKduYnNwOy9nOyAgICAjIDx0
YWI+CgkgICAgJHN0cmluZyA9fiBzLyAgLyCnbmJzcDsvZzsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjIDIgKiA8c3BhY2U+CgkgICAgIyBsZWF2ZSBzaW5nbGUgc3BhY2UgYXMgaXQgaXMK
CX0KCWVsc2UgewoJICAgICRzdHJpbmcgPX4gcy8JL6duYnNwO6duYnNwO6duYnNwO6duYnNwO6du
YnNwO6duYnNwO6duYnNwO6duYnNwOy9nOyAKCSAgICAkc3RyaW5nID1+IHMvIC+nbmJzcDsvZzsK
CX0KCgkkc3RyaW5nID0gaHRtbGlmeSgkc3RyaW5nKTsKCgkjIHVuZXNjYXBlCgkkc3RyaW5nID1+
IHMvpyhbXiVdKS8mJDEvZzsKCSRzdHJpbmcgPX4gcy+nJS+nL2c7CgoJcmV0dXJuICRzdHJpbmc7
Cn0KCnN1YiBsaW5rKCQkKSB7CglteSgkbmFtZSwgJHdoZXJlKSA9IEBfOwoKCXJldHVybiAiPEEg
SFJFRj1cIiR3aGVyZVwiPiRuYW1lPC9BPlxuIjsKfQoKc3ViIHJldmNtcCgkJCkgewoJbXkoJHJl
djEsICRyZXYyKSA9IEBfOwoJbXkoQHIxKSA9IHNwbGl0KC9cLi8sICRyZXYxKTsKCW15KEByMikg
PSBzcGxpdCgvXC4vLCAkcmV2Mik7CglteSgkYSwkYik7CgoJd2hpbGUgKCgkYSA9IHNoaWZ0KEBy
MSkpICYmICgkYiA9IHNoaWZ0KEByMikpKSB7CgkgICAgaWYgKCRhICE9ICRiKSB7CgkJcmV0dXJu
ICRhIDw9PiAkYjsKCSAgICB9Cgl9CglpZiAoQHIxKSB7IHJldHVybiAxOyB9CglpZiAoQHIyKSB7
IHJldHVybiAtMTsgfQoJcmV0dXJuIDA7Cn0KCnN1YiBmYXRhbCgkJCkgewoJbXkoJGVycmNvZGUs
ICRlcnJtc2cpID0gQF87CglpZiAoZGVmaW5lZCgkRU5WeydNT0RfUEVSTCd9KSkgewoJCUFwYWNo
ZS0+cmVxdWVzdC0+c3RhdHVzKChzcGxpdCgvIC8sICRlcnJjb2RlKSlbMF0pOwoJfQoJZWxzZSB7
CgkJcHJpbnQgIlN0YXR1czogJGVycmNvZGVcbiI7Cgl9CglodG1sX2hlYWRlcigiRXJyb3IiKTsK
CXByaW50ICJFcnJvcjogJGVycm1zZ1xuIjsKCXByaW50ICZodG1sX2Zvb3RlcjsKCWV4aXQoMSk7
Cn0KCnN1YiByZWRpcmVjdCgkKSB7CglteSgkdXJsKSA9IEBfOwoJaWYgKGRlZmluZWQoJEVOVnsn
TU9EX1BFUkwnfSkpIHsKCQlBcGFjaGUtPnJlcXVlc3QtPnN0YXR1cygzMDEpOwoJCUFwYWNoZS0+
cmVxdWVzdC0+aGVhZGVyX291dChMb2NhdGlvbiA9PiAkdXJsKTsKCX0KCWVsc2UgewoJCXByaW50
ICJTdGF0dXM6IDMwMSBNb3ZlZFxyXG4iOwoJCXByaW50ICJMb2NhdGlvbjogJHVybFxyXG4iOwoJ
fQoJaHRtbF9oZWFkZXIoIk1vdmVkIik7CglwcmludCAiVGhpcyBkb2N1bWVudCBpcyBsb2NhdGVk
IDxBIEhSRUY9JHVybD5oZXJlPC9BPi5cbiI7CglwcmludCAmaHRtbF9mb290ZXI7CglleGl0KDEp
Owp9CgpzdWIgc2FmZWdsb2IoJCkgewoJbXkgKCRmaWxlbmFtZSkgPSBAXzsKCW15ICgkZGlybmFt
ZSk7CglteSAoQHJlc3VsdHMpOwoJbXkgJGRoID0gZG8ge2xvY2FsKCpESCk7fTsKCgkoJGRpcm5h
bWUgPSAkZmlsZW5hbWUpID1+IHN8L1teL10rJHx8OwoJJGZpbGVuYW1lID1+IHN8LiovfHw7CgoJ
aWYgKG9wZW5kaXIoJGRoLCAkZGlybmFtZSkpIHsKCQlteSAkZ2xvYiA9ICRmaWxlbmFtZTsKCQlt
eSAkdDsKCSMJdHJhbnNmb3JtIGZpbGVuYW1lIGZyb20gZ2xvYiB0byByZWdleC4gIERlYWwgd2l0
aDoKCSMJWywgeywgPywgKiBhcyBnbG9iIGNoYXJzCgkjCW1ha2Ugc3VyZSB0byBlc2NhcGUgYWxs
IG90aGVyIHJlZ2V4IGNoYXJzCgkJJGdsb2IgPX4gcy8oW1wuXChcKVx8XCtdKS9cXCQxL2c7CgkJ
JGdsb2IgPX4gcy9cKi8uKi9nOwoJCSRnbG9iID1+IHMvXD8vLi9nOwoJCSRnbG9iID1+IHMveyhb
Xn1dKyl9LygkdCA9ICQxKSA9fiBzLSwtfC1nOyAiKCR0KSIvZWc7CgkJZm9yZWFjaCAocmVhZGRp
cigkZGgpKSB7CgkJCWlmICgvXiR7Z2xvYn0kLykgewoJCQkJcHVzaChAcmVzdWx0cywgJGRpcm5h
bWUgLiAiLyIgLiRfKTsKCQkJfQoJCX0KCQljbG9zZWRpcigkZGgpOwoJfQoKCUByZXN1bHRzOwp9
CgpzdWIgZ2V0TWltZVR5cGVGcm9tU3VmZml4KCQpIHsKICAgIG15ICgkZnVsbG5hbWUpID0gQF87
CiAgICBteSAoJG1pbWV0eXBlLCAkc3VmZml4KTsKICAgIG15ICRmaCA9IGRvIHtsb2NhbCgqRkgp
O307CgogICAgKCRzdWZmaXggPSAkZnVsbG5hbWUpID1+IHMvXi4qXC4oW14uXSopJC8kMS87CiAg
ICAkbWltZXR5cGUgPSAkTVRZUEVTeyRzdWZmaXh9OwogICAgJG1pbWV0eXBlID0gJE1UWVBFU3sn
Kid9IGlmICghJG1pbWV0eXBlKTsKICAgIAogICAgaWYgKCEkbWltZXR5cGUgJiYgLWYgJG1pbWVf
dHlwZXMpIHsKCSMgb2tleSwgdGhpcyBpcyBzb21ldGhpbmcgc3BlY2lhbCAtIHNlYXJjaCB0aGUK
CSMgbWltZS50eXBlcyBkYXRhYmFzZQoJb3BlbiAoJGZoLCAiPCRtaW1lX3R5cGVzIik7Cgl3aGls
ZSAoPCRmaD4pIHsKCSAgICBpZiAoJF8gPX4gL15ccyooXFMrXC9cUyspLipcYiRzdWZmaXhcYi8p
IHsKCQkkbWltZXR5cGUgPSAkMTsKCQlsYXN0OwoJICAgIH0KCX0KCWNsb3NlICgkZmgpOwogICAg
fQogICAgCiMgb2tleSwgZGlkbid0IGZpbmQgYW55dGhpbmcgdXNlZnVsIC4uCiAgICBpZiAoISgk
bWltZXR5cGUgPX4gL1xTXC9cUy8pKSB7CgkkbWltZXR5cGUgPSAidGV4dC9wbGFpbiI7CiAgICB9
CiAgICByZXR1cm4gJG1pbWV0eXBlOwp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
CiMgc2hvdyBBbm5vdGF0aW9uCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKc3ViIGRv
QW5ub3RhdGUgKCQkKSB7CiAgICBteSAoJHJldikgPSBAXzsKICAgIG15ICgkcGlkKTsKICAgIG15
ICgkcGF0aG5hbWUsICRmaWxlbmFtZSk7CiAgICBteSAkcmVhZGVyID0gZG8ge2xvY2FsKCpGSCk7
fTsKICAgIG15ICR3cml0ZXIgPSBkbyB7bG9jYWwoKkZIKTt9OwoKICAgICMgbWFrZSBzdXJlIHRo
ZSByZXZpc2lvbnMgYXJlIHdlbGxmb3JtZWQsIGZvciBzZWN1cml0eQogICAgIyByZWFzb25zIC4u
CiAgICBpZiAoISgkcmV2ID1+IC9eW1xkXC5dKyQvKSkgewoJJmZhdGFsKCI0MDQgTm90IEZvdW5k
IiwKCQkiTWFsZm9ybWVkIHF1ZXJ5IFwiJEVOVnsnUVVFUllfU1RSSU5HJ31cIiIpOwogICAgfQoK
ICAgIGlmICgmZm9yYmlkZGVuX2ZpbGUoJGZ1bGxuYW1lKSkgewoJJmZhdGFsKCI0MDMgRm9yYmlk
ZGVuIiwgIkFjY2VzcyBmb3JiaWRkZW4uIFRoaXMgZmlsZSBpcyBtZW50aW9uZWQgaW4gXEBEaXNz
YWxsb3dSZWFkIik7CglyZXR1cm47CiAgICB9CgogICAgKCRwYXRobmFtZSA9ICR3aGVyZSkgPX4g
cy8oQXR0aWNcLyk/W15cL10qJC8vOwogICAgKCRmaWxlbmFtZSA9ICR3aGVyZSkgPX4gcy9eLipc
Ly8vOwoKICAgIGh0dHBfaGVhZGVyKCk7CgogICAgbmF2aWdhdGVIZWFkZXIgKCRzY3JpcHR3aGVy
ZSwkcGF0aG5hbWUsJGZpbGVuYW1lLCRyZXYsICJhbm5vdGF0ZSIpOwogICAgcHJpbnQgIjxoMyBh
bGlnbj1jZW50ZXI+QW5ub3RhdGlvbiBvZiAkcGF0aG5hbWUkZmlsZW5hbWUsIFJldmlzaW9uICRy
ZXY8L2gzPlxuIjsKCiAgICAjIHRoaXMgc2VlbXMgdG8gYmUgbmVjZXNzYXJ5CiAgICAkfCA9IDE7
ICR8ID0gMDsgIyBGbHVzaAoKICAgICMgdGhpcyBhbm5vdGF0ZSB2ZXJzaW9uIGlzIGJhc2VkIG9u
IHRoZQogICAgIyBjdnMgYW5ub3RhdGUtZGVtbyBQZXJsIHNjcmlwdCBieSBDeWNsaWMgU29mdHdh
cmUKICAgICMgSXQgd2FzIHdyaXR0ZW4gYnkgQ3ljbGljIFNvZnR3YXJlLCBodHRwOi8vd3d3LmN5
Y2xpYy5jb20vLCBhbmQgaXMgaW4KICAgICMgdGhlIHB1YmxpYyBkb21haW4uCiAgICAjIHdlIGNv
dWxkIGFiYW5kb24gdGhlIHVzZSBvZiBybG9nLCByY3NkaWZmIGFuZCBjbyB1c2luZwogICAgIyB0
aGUgY3Zzc2VydmVyIGluIGEgc2ltaWxpYXIgd2F5IG9uZSBkYXkgKC4uYWZ0ZXIgcmV3cml0ZSkK
ICAgICRwaWQgPSBvcGVuMigkcmVhZGVyLCAkd3JpdGVyLCAiL3Vzci9mcmVld2FyZS9iaW4vY3Zz
IHNlcnZlciIpIHx8IGZhdGFsICgiNTAwIEludGVybmFsIEVycm9yIiwgCgkJCQkJCQkgICAgICAg
IkZhdGFsIEVycm9yIC0gdW5hYmxlIHRvIG9wZW4gY3ZzIGZvciBhbm5vdGF0aW9uIik7CiAgICAK
ICAgICMgT0ssIGZpcnN0IHNlbmQgdGhlIHJlcXVlc3QgdG8gdGhlIHNlcnZlci4gIEEgc2ltcGxp
ZmllZCBleGFtcGxlIGlzOgogICAgIyAgICAgUm9vdCAvaG9tZS9raW5nZG9uL3p3b3JrL2N2c3Jv
b3QKICAgICMgICAgIEFyZ3VtZW50IGZvby94eAogICAgIyAgICAgRGlyZWN0b3J5IGZvbwogICAg
IyAgICAgL2hvbWUva2luZ2Rvbi96d29yay9jdnNyb290L2ZvbwogICAgIyAgICAgRGlyZWN0b3J5
IC4KICAgICMgICAgIC9ob21lL2tpbmdkb24vendvcmsvY3Zzcm9vdAogICAgIyAgICAgYW5ub3Rh
dGUKICAgICMgYWx0aG91Z2ggYXMgeW91IGNhbiBzZWUgdGhlcmUgYXJlIGEgZmV3IG1vcmUgZGV0
YWlscy4KICAgIAogICAgcHJpbnQgJHdyaXRlciAiUm9vdCAkY3Zzcm9vdFxuIjsKICAgIHByaW50
ICR3cml0ZXIgIlZhbGlkLXJlc3BvbnNlcyBvayBlcnJvciBWYWxpZC1yZXF1ZXN0cyBDaGVja2Vk
LWluIFVwZGF0ZWQgTWVyZ2VkIFJlbW92ZWQgTSBFXG4iOwogICAgIyBEb24ndCB3b3JyeSBhYm91
dCBzZW5kaW5nIHZhbGlkLXJlcXVlc3RzLCB0aGUgc2VydmVyIGp1c3QgbmVlZHMgdG8KICAgICMg
c3VwcG9ydCAiYW5ub3RhdGUiIGFuZCBpZiBpdCBkb2Vzbid0LCB0aGVyZSBpc24ndCBhbnl0aGlu
ZyB0byBiZSBkb25lLgogICAgcHJpbnQgJHdyaXRlciAiVXNlVW5jaGFuZ2VkXG4iOwogICAgcHJp
bnQgJHdyaXRlciAiQXJndW1lbnQgLXJcbiI7CiAgICBwcmludCAkd3JpdGVyICJBcmd1bWVudCAk
cmV2XG4iOwogICAgcHJpbnQgJHdyaXRlciAiQXJndW1lbnQgJHdoZXJlXG4iOwoKICAgICMgVGhl
IHByb3RvY29sIHJlcXVpcmVzIHVzIHRvIGZ1bGx5IGZha2UgYSB3b3JraW5nIGRpcmVjdG9yeSAo
YXQKICAgICMgbGVhc3QgdG8gdGhlIHBvaW50IG9mIGluY2x1ZGluZyB0aGUgZGlyZWN0b3JpZXMg
ZG93biB0byB0aGUgb25lCiAgICAjIGNvbnRhaW5pbmcgdGhlIGZpbGUgaW4gcXVlc3Rpb24pLgog
ICAgIyBTbyBpZiAkd2hlcmUgaXMgImRpci9zZGlyL2ZpbGUiLCB0aGVuIEBkaXJzIHdpbGwgYmUg
KCJkaXIiLCJzZGlyIiwiZmlsZSIpCiAgICBteSBAZGlycyA9IHNwbGl0KCcvJywgJHdoZXJlKTsK
ICAgIG15ICRwYXRoID0gIiI7CiAgICBmb3JlYWNoIChAZGlycykgewoJaWYgKCRwYXRoIGVxICIi
KSB7CgkgICAgIyBJbiBvdXIgZXhhbXBsZSwgJF8gaXMgImRpciIuCgkgICAgJHBhdGggPSAkXzsK
CX0KCWVsc2UgewoJICAgIHByaW50ICR3cml0ZXIgIkRpcmVjdG9yeSAkcGF0aFxuIjsKCSAgICBw
cmludCAkd3JpdGVyICIkY3Zzcm9vdC8kcGF0aFxuIjsKCSAgICAjIEluIG91ciBleGFtcGxlLCAk
XyBpcyAic2RpciIgYW5kICRwYXRoIGJlY29tZXMgImRpci9zZGlyIgoJICAgICMgQW5kIHRoZSBu
ZXh0IHRpbWUsICJmaWxlIiBhbmQgImRpci9zZGlyL2ZpbGUiICh3aGljaCB0aGVuIGdldHMKCSAg
ICAjIGlnbm9yZWQsIGJlY2F1c2Ugd2UgZG9uJ3QgbmVlZCB0byBzZW5kIERpcmVjdG9yeSBmb3Ig
dGhlIGZpbGUpLgogICAgICAgICAgICAkcGF0aCAuPSAiLyRfIjsKCX0KICAgIH0KICAgICMgQW5k
IHRoZSBsYXN0ICJEaXJlY3RvcnkiIGJlZm9yZSAiYW5ub3RhdGUiIGlzIHRoZSB0b3AgbGV2ZWwu
CiAgICBwcmludCAkd3JpdGVyICJEaXJlY3RvcnkgLlxuIjsKICAgIHByaW50ICR3cml0ZXIgIiRj
dnNyb290XG4iOwogICAgCiAgICBwcmludCAkd3JpdGVyICJhbm5vdGF0ZVxuIjsKICAgICMgT0ss
IHdlJ3ZlIHNlbnQgb3VyIGNvbW1hbmQgdG8gdGhlIHNlcnZlci4gIFRoaW5nIHRvIGRvIGlzIHRv
CiAgICAjIGNsb3NlIHRoZSB3cml0ZXIgc2lkZSBhbmQgZ2V0IGFsbCB0aGUgcmVzcG9uc2VzLiAg
SWYgImN2cyBzZXJ2ZXIiCiAgICAjIHdlcmUgbmljZXIgYWJvdXQgYnVmZmVyaW5nLCB0aGVuIHdl
IGNvdWxkIGp1c3QgbGVhdmUgaXQgb3BlbiwgSSB0aGluay4KICAgIGNsb3NlICgkd3JpdGVyKSB8
fCBkaWUgImNhbm5vdCBjbG9zZTogJCEiOwogICAgCiAgICAjIFJlYWR5IHRvIGdldCB0aGUgcmVz
cG9uc2VzIGZyb20gdGhlIHNlcnZlci4KICAgICMgRm9yIGV4YW1wbGU6CiAgICAjICAgICBFIEFu
bm90YXRpb25zIGZvciBmb28veHgKICAgICMgICAgIEUgKioqKioqKioqKioqKioqCiAgICAjICAg
ICBNIDEuMyAgICAgICAgICAoa2luZ2RvbiAgMDYtU2VwLTk3KTogaGVsbG8gCiAgICAjICAgICBv
awogICAgbXkgKCRsaW5lTnIpID0gMDsKICAgIG15ICgkb2xkTHJldiwgJG9sZEx1c3IpID0gKCIi
LCAiIik7CiAgICBteSAoJHJldnByaW50LCAkdXNycHJpbnQpOwogICAgaWYgKCRhbm5UYWJsZSkg
ewoJcHJpbnQgIjx0YWJsZSBib3JkZXI9MCBjZWxsc3BhY2luZz0wIGNlbGxwYWRkaW5nPTA+XG4i
OwogICAgfQogICAgZWxzZSB7CglwcmludCAiPHByZT4iOwogICAgfQogICAgd2hpbGUgKDwkcmVh
ZGVyPikgewoJbXkgQHdvcmRzID0gc3BsaXQ7CgkjIEFkZGluZyBvbmUgaXMgZm9yIHRoZSAoc2lu
Z2xlKSBzcGFjZSB3aGljaCBmb2xsb3dzICR3b3Jkc1swXS4KCW15ICRyZXN0ID0gc3Vic3RyICgk
XywgbGVuZ3RoICgkd29yZHNbMF0pICsgMSk7CglpZiAoJHdvcmRzWzBdIGVxICJFIikgewoJICAg
IG5leHQ7Cgl9CgllbHNpZiAoJHdvcmRzWzBdIGVxICJNIikgewoJICAgICRsaW5lTnIrKzsKCSAg
ICBteSAkbHJldiA9IHN1YnN0ciAoJF8sIDIsIDEzKTsKCSAgICBteSAkbHVzciA9IHN1YnN0ciAo
JF8sIDE2LCAgOSk7CgkgICAgbXkgJGxpbmUgPSBzdWJzdHIgKCRfLCAzNik7CgkgICAgIyB3ZSBz
aG91bGQgcGFyc2UgdGhlIGRhdGUgaGVyZSAuLgoJICAgIGlmICgkbHJldiBlcSAkb2xkTHJldikg
ewoJCSRyZXZwcmludCA9ICIgICAgICAgICAgICAgIjsKCSAgICB9CgkgICAgZWxzZSB7CgkJJHJl
dnByaW50ID0gJGxyZXY7ICRvbGRMdXNyID0gIiI7CgkgICAgfQoJICAgIGlmICgkbHVzciBlcSAk
b2xkTHVzcikgewoJCSR1c3JwcmludCA9ICIgICAgICAgICAiOwoJICAgIH0KCSAgICBlbHNlIHsK
CQkkdXNycHJpbnQgPSAkbHVzcjsKCSAgICB9CgkgICAgJG9sZExyZXYgPSAkbHJldjsKCSAgICAk
b2xkTHVzciA9ICRsdXNyOwoJICAgICMgaXMgdGhlcmUgYSBsZXNzIHRpbWVjb25zdW1pbmcgd2F5
IHRvIHN0cmlwIHNwYWNlcyA/CgkgICAgKCRscmV2ID0gJGxyZXYpID1+IHMvXHMrLy9nOwoJICAg
IG15ICRpc0N1cnJlbnRSZXYgPSAoIiRyZXYiIGVxICIkbHJldiIpOwoJICAgIAoJICAgIHByaW50
ICI8Yj4iIGlmICgkaXNDdXJyZW50UmV2KTsKCSAgICBwcmludGYgKCIlOHMlcyU4cyAlNGQ6Iiwg
JHJldnByaW50LCAoJGlzQ3VycmVudFJldiA/ICJ8IiA6ICIgIiksICR1c3JwcmludCwgJGxpbmVO
cik7CgkgICAgcHJpbnQgc3BhY2VkSHRtbFRleHQoJGxpbmUpOwoJICAgIHByaW50ICI8L2I+IiBp
ZiAoJGlzQ3VycmVudFJldik7Cgl9CgllbHNpZiAoJHdvcmRzWzBdIGVxICJvayIpIHsKCSAgICAj
IFdlIGNvdWxkIGNvbXBsYWluIGFib3V0IGFueSB0ZXh0IHJlY2VpdmVkIGFmdGVyIHRoaXMsIGxp
a2UgdGhlCgkgICAgIyBDVlMgY29tbWFuZCBsaW5lIGNsaWVudC4gIEJ1dCBmb3Igc2ltcGxpY2l0
eSwgd2UgZG9uJ3QuCgl9CgllbHNpZiAoJHdvcmRzWzBdIGVxICJlcnJvciIpIHsKCSAgICBmYXRh
bCAoIjUwMCBJbnRlcm5hbCBFcnJvciIsICJFcnJvciBvY2N1cmVkIGR1cmluZyBhbm5vdGF0ZTog
PGI+JF88L2I+Iik7Cgl9CiAgICB9CiAgICBpZiAoJGFublRhYmxlKSB7CglwcmludCAiPC90YWJs
ZT4iOwogICAgfQogICAgZWxzZSB7CglwcmludCAiPC9wcmU+IjsKICAgIH0KICAgIGNsb3NlICgk
cmVhZGVyKSB8fCB3YXJuICJjYW5ub3QgY2xvc2U6ICQhIjsKICAgIHdhaXQ7Cn0KCiMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBtYWtlIENoZWNrb3V0CiMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMKc3ViIGRvQ2hlY2tvdXQoJCQpIHsKICAgIG15ICgkZnVsbG5hbWUsICRy
ZXYpID0gQF87CiAgICBteSAoJG1pbWV0eXBlLCRyZXZvcHQpOwogICAgbXkgJGZoID0gZG8ge2xv
Y2FsKCpGSCk7fTsKCiAgICBpZiAoJHJldiBlcSAnSEVBRCcgfHwgJHJldiBlcSAnLicpIHsKCSRy
ZXYgPSB1bmRlZjsKICAgIH0KCiAgICAjIG1ha2Ugc3VyZSB0aGUgcmV2aXNpb25zIGEgd2VsbGZv
cm1lZCwgZm9yIHNlY3VyaXR5CiAgICAjIHJlYXNvbnMgLi4KICAgIGlmIChkZWZpbmVkKCRyZXYp
ICYmICEoJHJldiA9fiAvXltcZFwuXSskLykpIHsKCSZmYXRhbCgiNDA0IE5vdCBGb3VuZCIsCgkJ
Ik1hbGZvcm1lZCBxdWVyeSBcIiRFTlZ7J1FVRVJZX1NUUklORyd9XCIiKTsKICAgIH0KCiAgICBp
ZiAoJmZvcmJpZGRlbl9maWxlKCRmdWxsbmFtZSkpIHsKCSZmYXRhbCgiNDAzIEZvcmJpZGRlbiIs
ICJBY2Nlc3MgZm9yYmlkZGVuLiBUaGlzIGZpbGUgaXMgbWVudGlvbmVkIGluIFxARGlzc2FsbG93
UmVhZCIpOwoJcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IG1pbWV0eXBlCiAgICBpZiAoZGVmaW5l
ZCgkaW5wdXR7ImNvbnRlbnQtdHlwZSJ9KSAmJiAoJGlucHV0eyJjb250ZW50LXR5cGUifSA9fiAv
XFNcL1xTLykpIHsKCSRtaW1ldHlwZSA9ICRpbnB1dHsiY29udGVudC10eXBlIn0KICAgIH0KICAg
IGVsc2UgewoJJG1pbWV0eXBlID0gJmdldE1pbWVUeXBlRnJvbVN1ZmZpeCgkZnVsbG5hbWUpOwog
ICAgfQoKICAgIGlmIChkZWZpbmVkKCRyZXYpKSB7CgkkcmV2b3B0ID0gIi1yJHJldiI7CglpZiAo
JHVzZV9tb2RkYXRlKSB7CgkgICAgcmVhZExvZygkZnVsbG5hbWUsJHJldik7CgkgICAgJG1vZGRh
dGU9JGRhdGV7JHJldn07Cgl9CiAgICB9CiAgICBlbHNlIHsKCSRyZXZvcHQgPSAiLXJIRUFEIjsK
CWlmICgkdXNlX21vZGRhdGUpIHsKCSAgICByZWFkTG9nKCRmdWxsbmFtZSk7CgkgICAgJG1vZGRh
dGU9JGRhdGV7JHN5bXJldntIRUFEfX07Cgl9CiAgICB9CiAgICAKICAgICMjIyBqdXN0IGZvciB0
aGUgcmVjb3JkOgogICAgIyMjICdjdnMgY28nIHNlZW1zIHRvIGhhdmUgYSBidWcgcmVnYXJkaW5n
IHNpbmdsZSBjaGVja291dCBvZgogICAgIyMjIGRpcmVjdG9yaWVzL2ZpbGVzIGhhdmluZyBzcGFj
ZXMgaW4gaXQ7CiAgICAjIyMgdGhpcyBpcyBhbiBpc3N1ZSB0aGF0IHNob3VsZCBiZSByZXNvbHZl
ZCBvbiBjdnMncyBzaWRlCiAgICAjCiAgICAjIFNhZmVseSBmb3IgYSBjaGlsZCBwcm9jZXNzIHRv
IHJlYWQgZnJvbS4KICAgIGlmICghIG9wZW4oJGZoLCAiLXwiKSkgeyAjIGNoaWxkCiAgICAgIG9w
ZW4oU1RERVJSLCAiPiZTVERPVVQiKTsgIyBSZWRpcmVjdCBzdGRlcnIgdG8gc3Rkb3V0CiAgICAg
IGV4ZWMoIi91c3IvZnJlZXdhcmUvYmluL2N2cyIsICItZCIsICIkY3Zzcm9vdCIsICJjbyIsICIt
cCIsICIkcmV2b3B0IiwgIiR3aGVyZSIpOwogICAgfSAKIz09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KI0NoZWNraW5nIG91
dCBzcXVpZC9zcmMvZnRwLmMKI1JDUzogIC91c3Ivc3JjL0NWUy9zcXVpZC9zcmMvZnRwLmMsdgoj
VkVSUzogMS4xLjEuMjguNi4yCiMqKioqKioqKioqKioqKioKCiAgICAjIFBhcnNlIENWUyBoZWFk
ZXIKICAgIG15ICgkcmV2aXNpb24sICRmaWxlbmFtZSwgJGN2c2hlYWRlcik7CiAgICAkZmlsZW5h
bWUgPSAiIjsKICAgIHdoaWxlKDwkZmg+KSB7CglsYXN0IGlmICgvXlwqXCpcKlwqLyk7CgkkcmV2
aXNpb24gPSAkMSBpZiAoL15WRVJTOiAoLiopJC8pOwoJaWYgKC9eQ2hlY2tpbmcgb3V0ICguKikk
LykgewoJCSRmaWxlbmFtZSA9ICQxOwoJCSRmaWxlbmFtZSA9fiBzL15cLlwvKi8vOwoJfQoJJGN2
c2hlYWRlciAuPSAkXzsKICAgIH0KICAgIGlmICgkZmlsZW5hbWUgbmUgJHdoZXJlKSB7CgkmZmF0
YWwoIjUwMCBJbnRlcm5hbCBFcnJvciIsCgkgICAgICAgIlVuZXhwZWN0ZWQgb3V0cHV0IGZyb20g
Y3ZzIGNvOiAkY3ZzaGVhZGVyIgoJICAgICAgIC4gIjxwPjxiPkNoZWNrIHdoZXRoZXIgdGhlIGRp
cmVjdG9yeSAkY3Zzcm9vdC9DVlNST09UIGV4aXN0cyAiCgkgICAgICAgLiAiYW5kIHRoZSBzY3Jp
cHQgaGFzIHdyaXRlLWFjY2VzcyB0byB0aGUgQ1ZTUk9PVC9oaXN0b3J5ICIKCSAgICAgICAuICJm
aWxlIGlmIGl0IGV4aXN0cy4iCgkgICAgICAgLiAiPGJyPlRoZSBzY3JpcHQgbmVlZHMgdG8gcGxh
Y2UgbG9jayBmaWxlcyBpbiB0aGUgIgoJICAgICAgIC4gImRpcmVjdG9yeSB0aGUgZmlsZSBpcyBp
biBhcyB3ZWxsLjwvYj4iKTsKICAgIH0KICAgICR8ID0gMTsKCiAgICBpZiAoJG1pbWV0eXBlIGVx
ICJ0ZXh0L3gtY3Zzd2ViLW1hcmt1cCIpIHsKCSZjdnN3ZWJNYXJrdXAoJGZoLCRmdWxsbmFtZSwk
cmV2aXNpb24pOwogICAgfQogICAgZWxzZSB7CglodHRwX2hlYWRlcigkbWltZXR5cGUpOwoJcHJp
bnQgPCRmaD47CiAgICB9CiAgICBjbG9zZSgkZmgpOwp9CgpzdWIgY3Zzd2ViTWFya3VwKCQkJCkg
ewogICAgbXkgKCRmaWxlaGFuZGxlLCRmdWxsbmFtZSwkcmV2aXNpb24pID0gQF87CiAgICBteSAo
JHBhdGhuYW1lLCAkZmlsZW5hbWUpOwoKICAgICgkcGF0aG5hbWUgPSAkd2hlcmUpID1+IHMvKEF0
dGljXC8pP1teXC9dKiQvLzsKICAgICgkZmlsZW5hbWUgPSAkd2hlcmUpID1+IHMvXi4qXC8vLzsK
ICAgIG15ICgkZmlsZXVybCkgPSB1cmxlbmNvZGUoJGZpbGVuYW1lKTsKCiAgICBodHRwX2hlYWRl
cigpOwoKICAgIG5hdmlnYXRlSGVhZGVyICgkc2NyaXB0d2hlcmUsICRwYXRobmFtZSwgJGZpbGVu
YW1lLCAkcmV2aXNpb24sICJ2aWV3Iik7CiAgICBwcmludCAiPEhSIG5vc2hhZGU+IjsKICAgIHBy
aW50ICI8dGFibGUgd2lkdGg9XCIxMDAlXCI+PHRyPjx0ZCBiZ2NvbG9yPVwiJG1hcmt1cExvZ0Nv
bG9yXCI+IjsKICAgIHByaW50ICJGaWxlOiAiLCAmY2xpY2thYmxlUGF0aCgkd2hlcmUsIDEpOwog
ICAgcHJpbnQgIiZuYnNwOyI7CiAgICAmZG93bmxvYWRfbGluayh1cmxlbmNvZGUoJGZpbGV1cmwp
LCAkcmV2aXNpb24sICIoZG93bmxvYWQpIik7CiAgICBpZiAoISRkZWZhdWx0VGV4dFBsYWluKSB7
CglwcmludCAiJm5ic3A7IjsKCSZkb3dubG9hZF9saW5rKHVybGVuY29kZSgkZmlsZXVybCksICRy
ZXZpc2lvbiwgIihhcyB0ZXh0KSIsIAoJICAgICAgICJ0ZXh0L3BsYWluIik7CiAgICB9CiAgICBw
cmludCAiPEJSPlxuIjsKICAgIGlmICgkc2hvd19sb2dfaW5fbWFya3VwKSB7CglyZWFkTG9nKCRm
dWxsbmFtZSk7ICMsJHJldmlzaW9uKTsKCXByaW50TG9nKCRyZXZpc2lvbiwwKTsKICAgIH0KICAg
IGVsc2UgewoJcHJpbnQgIlZlcnNpb246IDxCPiRyZXZpc2lvbjwvQj48QlI+XG4iOwoJcHJpbnQg
IlRhZzogPEI+IiwgJGlucHV0e29ubHlfd2l0aF90YWd9LCAiPC9iPjxicj5cbiIgaWYKCSAgICAk
aW5wdXR7b25seV93aXRoX3RhZ307CiAgICB9CiAgICBwcmludCAiPC90ZD48L3RyPjwvdGFibGU+
IjsKICAgIG15IEBjb250ZW50ID0gPCRmaWxlaGFuZGxlPjsKICAgIG15ICR1cmwgPSBkb3dubG9h
ZF91cmwoJGZpbGV1cmwsICRyZXZpc2lvbiwgJG1pbWV0eXBlKTsKICAgIHByaW50ICI8SFIgbm9z
aGFkZT4iOwogICAgaWYgKCRtaW1ldHlwZSA9fiAvXmltYWdlLykgewoJcHJpbnQgIjxJTUcgU1JD
PVwiJHVybCRiYXJlcXVlcnlcIj48QlI+IjsKICAgIH0KICAgIGVsc2lmICgkbWltZXR5cGUgPX4g
bSVeYXBwbGljYXRpb24vcGRmJSkgewogICAgCXByaW50ICI8RU1CRUQgU1JDPVwiJHVybCRiYXJl
cXVlcnlcIiBXSURUSD1cIjEwMCVcIj48QlI+IjsKICAgIH0KICAgIGVsc2UgewoJcHJpbnQgIjxQ
UkU+IjsKCWZvcmVhY2ggKEBjb250ZW50KSB7CgkgICAgcHJpbnQgc3BhY2VkSHRtbFRleHQoJF8p
OwoJfQoJcHJpbnQgIjwvUFJFPiI7CiAgICB9Cn0KCnN1YiB2aWV3YWJsZSgkKSB7CiAgICBteSAo
JG1pbWV0eXBlKSA9IEBfOwoKICAgICRtaW1ldHlwZSA9fiBtJV50ZXh0LyUgfHwKICAgICRtaW1l
dHlwZSA9fiBtJV5pbWFnZS8lIHx8CiAgICAkbWltZXR5cGUgPX4gbSVeYXBwbGljYXRpb24vcGRm
JSB8fAogICAgMDsKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFNob3cgQ29s
b3JlZCBEaWZmCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKc3ViIGRvRGlmZigkJCQk
JCQpIHsKCW15KCRmdWxsbmFtZSwgJHIxLCAkdHIxLCAkcjIsICR0cjIsICRmKSA9IEBfOwogICAg
ICAgIG15ICRmaCA9IGRvIHtsb2NhbCgqRkgpO307CglteSAoJHJldjEsICRyZXYyLCAkc3ltMSwg
JHN5bTIsIEBkaWZmdHlwZSwgJGRpZmZuYW1lLCAkZjEsICRmMik7CgkKCWlmICgmZm9yYmlkZGVu
X2ZpbGUoJGZ1bGxuYW1lKSkgewoJICAgICZmYXRhbCgiNDAzIEZvcmJpZGRlbiIsICJBY2Nlc3Mg
Zm9yYmlkZGVuLiBUaGlzIGZpbGUgaXMgbWVudGlvbmVkIGluIFxARGlzc2FsbG93UmVhZCIpOwoJ
ICAgIHJldHVybjsKCX0KCglpZiAoJHIxID1+IC8oW146XSspKDooLispKT8vKSB7CgkgICAgJHJl
djEgPSAkMTsKCSAgICAkc3ltMSA9ICQzOwoJfQoJaWYgKCRyMSBlcSAndGV4dCcpIHsKCSAgICAk
cmV2MSA9ICR0cjE7CgkgICAgJHN5bTEgPSAiIjsKCX0KCWlmICgkcjIgPX4gLyhbXjpdKykoOigu
KykpPy8pIHsKCSAgICAkcmV2MiA9ICQxOwoJICAgICRzeW0yID0gJDM7Cgl9CglpZiAoJHIyIGVx
ICd0ZXh0JykgewoJICAgICRyZXYyID0gJHRyMjsKCSAgICAkc3ltMiA9ICIiOwoJfQoJIyBtYWtl
IHN1cmUgdGhlIHJldmlzaW9ucyBhIHdlbGxmb3JtZWQsIGZvciBzZWN1cml0eQoJIyByZWFzb25z
IC4uCglpZiAoISgkcmV2MSA9fiAvXltcZFwuXSskLykgfHwgISgkcmV2MiA9fiAvXltcZFwuXSsk
LykpIHsKCSAgICAmZmF0YWwoIjQwNCBOb3QgRm91bmQiLAoJCSAgICAiTWFsZm9ybWVkIHF1ZXJ5
IFwiJEVOVnsnUVVFUllfU1RSSU5HJ31cIiIpOwoJfQojCiMgcmV2MSBhbmQgcmV2MiBhcmUgbm93
IGJvdGggbnVtZXJpYyByZXZpc2lvbnMuCiMgVGh1cyB3ZSBkbyBhIERXSU0gaGVyZSBhbmQgc3dh
cCB0aGVtIGlmIHJldjEgaXMgYWZ0ZXIgcmV2Mi4KIyBYWFggc2hvdWxkIHdlIHdhcm4gYWJvdXQg
dGhlIGZhY3QgdGhhdCB3ZSBkbyB0aGlzPwoJaWYgKCZyZXZjbXAoJHJldjEsJHJldjIpID4gMCkg
ewoJICAgIG15ICgkdG1wMSwgJHRtcDIpID0gKCRyZXYxLCAkc3ltMSk7CgkgICAgKCRyZXYxLCAk
c3ltMSkgPSAoJHJldjIsICRzeW0yKTsKCSAgICAoJHJldjIsICRzeW0yKSA9ICgkdG1wMSwgJHRt
cDIpOwoJfQoJbXkgJGh1bWFuX3JlYWRhYmxlID0gMDsKCWlmICgkZiBlcSAnYycpIHsKCSAgICBA
ZGlmZnR5cGUgPSBxd3stY307CgkgICAgJGRpZmZuYW1lID0gIkNvbnRleHQgZGlmZiI7Cgl9Cgll
bHNpZiAoJGYgZXEgJ3MnKSB7CgkgICAgQGRpZmZ0eXBlID0gcXd7LS1zaWRlLWJ5LXNpZGUgLS13
aWR0aD0xNjR9OwoJICAgICRkaWZmbmFtZSA9ICJTaWRlIGJ5IFNpZGUiOwoJfQoJZWxzaWYgKCRm
IGVxICdIJykgewoJICAgICRodW1hbl9yZWFkYWJsZSA9IDE7CgkgICAgQGRpZmZ0eXBlID0gcXd7
LS11bmlmaWVkPTE1fTsKCSAgICAkZGlmZm5hbWUgPSAiTG9uZyBIdW1hbiByZWFkYWJsZSI7Cgl9
CgllbHNpZiAoJGYgZXEgJ2gnKSB7CgkgICAgQGRpZmZ0eXBlID1xd3stdX07CgkgICAgJGh1bWFu
X3JlYWRhYmxlID0gMTsKCSAgICAkZGlmZm5hbWUgPSAiSHVtYW4gcmVhZGFibGUiOwoJfQoJZWxz
aWYgKCRmIGVxICd1JykgewoJICAgIEBkaWZmdHlwZSA9IHF3ey11fTsKCSAgICAkZGlmZm5hbWUg
PSAiVW5pZGlmZiI7Cgl9CgllbHNlIHsKCSAgICBmYXRhbCAoIjQwMCBCYWQgYXJndW1lbnRzIiwg
IkRpZmYgZm9ybWF0ICRmIG5vdCB1bmRlcnN0b29kIik7Cgl9CgoJIyBhcHBseSBzcGVjaWFsIG9w
dGlvbnMKCWlmICgkaHVtYW5fcmVhZGFibGUpIHsKCSAgICBpZiAoJGhyX2Z1bm91dCkgewoJICAg
IAlwdXNoIEBkaWZmdHlwZSwgJy1wJzsKCSAgICB9CgkgICAgaWYgKCRocl9pZ253aGl0ZSkgewoJ
ICAgIAlwdXNoIEBkaWZmdHlwZSwgJy13JzsKCSAgICB9CgkgICAgaWYgKCRocl9pZ25rZXlzdWJz
dCkgewoJICAgIAlwdXNoIEBkaWZmdHlwZSwgJy1rayc7CgkgICAgfQoJfQoJaWYgKCEgb3Blbigk
ZmgsICItfCIpKSB7ICMgY2hpbGQKCQlvcGVuKFNUREVSUiwgIj4mU1RET1VUIik7ICMgUmVkaXJl
Y3Qgc3RkZXJyIHRvIHN0ZG91dAoJCWV4ZWMoInJjc2RpZmYiLEBkaWZmdHlwZSwiLXIkcmV2MSIs
Ii1yJHJldjIiLCRmdWxsbmFtZSk7Cgl9CglpZiAoJGh1bWFuX3JlYWRhYmxlKSB7CgkgICAgaHR0
cF9oZWFkZXIoKTsKCSAgICAmaHVtYW5fcmVhZGFibGVfZGlmZigkZmgsICRyZXYyKTsKCSAgICBn
emlwY2xvc2UoKTsKCSAgICBleGl0OwoJfQoJZWxzZSB7CgkgICAgaHR0cF9oZWFkZXIoInRleHQv
cGxhaW4iKTsKCX0KIwojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQojUkNTIGZpbGU6IC9ob21lL25jdnMvc3JjL3N5cy9u
ZXRpbmV0L3RjcF9vdXRwdXQuYyx2CiNyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTYKI3JldHJpZXZp
bmcgcmV2aXNpb24gMS4xNwojZGlmZiAtYyAtcjEuMTYgLXIxLjE3CiMqKiogL2hvbWUvbmN2cy9z
cmMvc3lzL25ldGluZXQvdGNwX291dHB1dC5jICAgICAxOTk1LzExLzAzIDIyOjA4OjA4ICAgICAx
LjE2CiMtLS0gL2hvbWUvbmN2cy9zcmMvc3lzL25ldGluZXQvdGNwX291dHB1dC5jICAgICAxOTk1
LzEyLzA1IDE3OjQ2OjM1ICAgICAxLjE3CiMKIyBJZGVhczoKIyAtIG51a2UgdGhlIHN0ZGVyciBv
dXRwdXQgaWYgaXQncyB3aGF0IHdlIGV4cGVjdCBpdCB0byBiZQojIC0gQWRkICJubyBkaWZmZXJl
bmNlcyBmb3VuZCIgaWYgdGhlIGRpZmYgY29tbWFuZCBzdXBwbGllZCBubyBvdXRwdXQuCiMKIyoq
KiBzcmMvc3lzL25ldGluZXQvdGNwX291dHB1dC5jICAgICAxOTk1LzExLzAzIDIyOjA4OjA4ICAg
ICAxLjE2CiMtLS0gc3JjL3N5cy9uZXRpbmV0L3RjcF9vdXRwdXQuYyAgICAgMTk5NS8xMi8wNSAx
Nzo0NjozNSAgICAgMS4xNyBSRUxFTkdfMl8xXzAKIyAoYm9ndXMgZXhhbXBsZSwgYnV0Li4uKQoj
CglpZiAoZ3JlcCB7ICRfIGVxICctdSd9IEBkaWZmdHlwZSkgewoJICAgICRmMSA9ICctLS0nOwoJ
ICAgICRmMiA9ICdcK1wrXCsnOwoJfQoJZWxzZSB7CgkgICAgJGYxID0gJ1wqXCpcKic7CgkgICAg
JGYyID0gJy0tLSc7Cgl9Cgl3aGlsZSAoPCRmaD4pIHsKCSAgICBpZiAobXxeJGYxICRjdnNyb290
fG8pIHsKCQlzfCRjdnNyb290L3x8bzsKCQlpZiAoJHN5bTEpIHsKCQkgICAgY2hvcDsKCQkgICAg
JF8gLj0gIiAkc3ltMVxuIjsKCQl9CgkgICAgfQoJICAgIGVsc2lmIChtfF4kZjIgJGN2c3Jvb3R8
bykgewoJCXN8JGN2c3Jvb3QvfHxvOwoJCWlmICgkc3ltMikgewoJCSAgICBjaG9wOwoJCSAgICAk
XyAuPSAiICRzeW0yXG4iOwoJCX0KCSAgICB9CgkgICAgcHJpbnQgJF87Cgl9CgljbG9zZSgkZmgp
Owp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU2hvdyBMb2dzIC4uCiMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKc3ViIGdldERpckxvZ3MoJCRAKSB7CiAgICBteSAo
JGN2c3Jvb3QsJGRpcm5hbWUsQG90aGVyRmlsZXMpID0gQF87CiAgICBteSAoJHN0YXRlLCRvdGhl
ckZpbGVzLCR0YWcsICRmaWxlLCAkZGF0ZSwgJGJyYW5jaHBvaW50LCAkYnJhbmNoLCAkbG9nKTsK
ICAgIG15ICgkcmV2LCAkcmV2aXNpb24sICRyZXZ3YW50ZWQsICRmaWxlbmFtZSwgJGhlYWQsICRh
dXRob3IpOwoKICAgICR0YWcgPSAkaW5wdXR7b25seV93aXRoX3RhZ307CgogICAgbXkgKCREaXJO
YW1lKSA9ICIkY3Zzcm9vdC8kd2hlcmUiOwogICAgbXkgKEBmaWxlcywgQGZpbGV0YWdzKTsKICAg
IG15ICRmaCA9IGRvIHtsb2NhbCgqRkgpO307CgogICAgcHVzaChAZmlsZXMsICZzYWZlZ2xvYigi
JERpck5hbWUvKix2IikpOwogICAgcHVzaChAZmlsZXMsICZzYWZlZ2xvYigiJERpck5hbWUvQXR0
aWMvKix2IikpIGlmICghJGlucHV0eydoaWRlYXR0aWMnfSk7CiAgICBmb3JlYWNoICRmaWxlIChA
b3RoZXJGaWxlcykgewoJcHVzaChAZmlsZXMsICIkRGlyTmFtZS8kZmlsZSIpOwogICAgfQoKICAg
ICMganVzdCBleGVjdXRlIHJsb2cgaWYgdGhlcmUgYXJlIGFueSBmaWxlcwogICAgaWYgKCQjZmls
ZXMgPCAwKSB7IAoJcmV0dXJuOwogICAgfQoKICAgIGlmIChkZWZpbmVkKCR0YWcpKSB7CgkjY2Fu
J3QgdXNlIC1yPHRhZz4gYXMgLSBpcyBhbGxvd2VkIGluIHRhZ25hbWVzLCBidXQgbWlzaW50ZXJw
cmVhdGVkIGJ5IHJsb2cuLgoJaWYgKCEgb3BlbigkZmgsICItfCIpKSB7CgkJb3BlbihTVERFUlIs
ICI+IC9kZXYvbnVsbCIpOyAjIHJsb2cgbWF5IGNvbXBsYWluOyBpZ25vcmUuCgkJZXhlYygicmxv
ZyIsQGZpbGVzKTsKCX0KICAgIH0KICAgIGVsc2UgewogICAgCW15ICRraWRwaWQgPSBvcGVuKCRm
aCwgIi18Iik7CglpZiAoISAka2lkcGlkKSB7CgkJb3BlbihTVERFUlIsICI+IC9kZXYvbnVsbCIp
OyAjIHJsb2cgbWF5IGNvbXBsYWluOyBpZ25vcmUuCgkJZXhlYygicmxvZyIsIi1yIixAZmlsZXMp
OwoJfQogICAgfQogICAgJHN0YXRlID0gInN0YXJ0IjsKICAgIHdoaWxlICg8JGZoPikgewoJaWYg
KCRzdGF0ZSBlcSAic3RhcnQiKSB7CgkgICAgI05leHQgZmlsZS4gSW5pdGlhbGl6ZSBmaWxlIHZh
cmlhYmxlcwoJICAgICRyZXYgPSB1bmRlZjsKCSAgICAkcmV2d2FudGVkID0gdW5kZWY7CgkgICAg
JGJyYW5jaCA9IHVuZGVmOwoJICAgICRicmFuY2hwb2ludCA9IHVuZGVmOwoJICAgICRmaWxlbmFt
ZSA9IHVuZGVmOwoJICAgICRsb2cgPSB1bmRlZjsKCSAgICAkcmV2aXNpb24gPSB1bmRlZjsKCSAg
ICAkYnJhbmNoID0gdW5kZWY7CgkgICAgJXN5bXJldiA9ICgpOwoJICAgIEBmaWxldGFncyA9ICgp
OwoJICAgICNqdW1wIHRvIGhlYWQgc3RhdGUKCSAgICAkc3RhdGUgPSAiaGVhZCI7Cgl9Cglwcmlu
dCAiJHN0YXRlOiRfIiBpZiAoJHZlcmJvc2UpOwphZ2FpbjoKCWlmICgkc3RhdGUgZXEgImhlYWQi
KSB7CgkgICAgIyRyY3NmaWxlID0gJDEgaWYgKC9eUkNTIGZpbGU6ICguKykkLyk7ICNub3QgdXNl
ZCAoeWV0KQoJICAgICRmaWxlbmFtZSA9ICQxIGlmICgvXldvcmtpbmcgZmlsZTogKC4rKSQvKTsK
CSAgICAkaGVhZCA9ICQxIGlmICgvXmhlYWQ6ICguKykkLyk7CgkgICAgJGJyYW5jaCA9ICQxIGlm
ICgvXmJyYW5jaDogKC4rKSQvKTsKCX0KCWlmICgkc3RhdGUgZXEgImhlYWQiICYmIC9ec3ltYm9s
aWMgbmFtZXMvKSB7CgkgICAgJHN0YXRlID0gInRhZ3MiOwoJICAgICgkYnJhbmNoID0gJGhlYWQp
ID1+IHMvXC5cZCskLy8gaWYgKCFkZWZpbmVkKCRicmFuY2gpKTsgCgkgICAgJGJyYW5jaCA9fiBz
LyhcLj8pKFxkKykkLyR7MX0wLiQyLzsKCSAgICAkc3ltcmV2e01BSU59ID0gJGJyYW5jaDsKCSAg
ICAkc3ltcmV2e0hFQUR9ID0gJGJyYW5jaDsKCSAgICAkYWxsdGFnc3tNQUlOfSA9IDE7CgkgICAg
JGFsbHRhZ3N7SEVBRH0gPSAxOwoJICAgIHB1c2ggKEBmaWxldGFncywgIk1BSU4iLCAiSEVBRCIp
OwoJICAgIG5leHQ7Cgl9CglpZiAoJHN0YXRlIGVxICJ0YWdzIiAmJgoJCQkgICAgL15ccysoLisp
OlxzKyhbXGRcLl0rKVxzKyQvKSB7CgkgICAgcHVzaCAoQGZpbGV0YWdzLCAkMSk7CgkgICAgJHN5
bXJldnskMX0gPSAkMjsKCSAgICAkYWxsdGFnc3skMX0gPSAxOwoJICAgIG5leHQ7Cgl9CglpZiAo
JHN0YXRlIGVxICJ0YWdzIiAmJiAvXlxTLykgewoJICAgIGlmIChkZWZpbmVkKCR0YWcpICYmIChk
ZWZpbmVkKCRzeW1yZXZ7JHRhZ30pIHx8ICR0YWcgZXEgIkhFQUQiKSkgewoJCSRyZXZ3YW50ZWQg
PSAkdGFnIGVxICJIRUFEIiA/ICRzeW1yZXZ7Ik1BSU4ifSA6ICRzeW1yZXZ7JHRhZ307CgkJKCRi
cmFuY2ggPSAkcmV2d2FudGVkKSA9fiBzL1wuMFwuLy4vOwoJCSgkYnJhbmNocG9pbnQgPSAkYnJh
bmNoKSA9fiBzL1wuP1xkKyQvLzsKCQkkcmV2d2FudGVkID0gdW5kZWYgaWYgKCRyZXZ3YW50ZWQg
bmUgJGJyYW5jaCk7CgkgICAgfQoJICAgIGVsc2lmIChkZWZpbmVkKCR0YWcpICYmICR0YWcgbmUg
IkhFQUQiKSB7CgkJcHJpbnQgIlRhZyBub3QgZm91bmQsIHNraXAgdGhpcyBmaWxlIiBpZiAoJHZl
cmJvc2UpOwoJCSRzdGF0ZSA9ICJza2lwIjsKCQluZXh0OwoJICAgIH0KCSAgICBmb3JlYWNoIG15
ICR0YWdmb3VuZCAoQGZpbGV0YWdzKSB7CgkJJHRhZ3N7JHRhZ2ZvdW5kfSA9IDE7CgkgICAgfQoJ
ICAgICRzdGF0ZSA9ICJoZWFkIjsKCSAgICBnb3RvIGFnYWluOwoJfQoJaWYgKCRzdGF0ZSBlcSAi
aGVhZCIgJiYgL14tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJC8pIHsKCSAgICAkc3RhdGUg
PSAibG9nIjsKCSAgICAkcmV2ID0gdW5kZWY7CgkgICAgJGRhdGUgPSB1bmRlZjsKCSAgICAkbG9n
ID0gIiI7CgkgICAgIyBUcnkgdG8gcmVjb25zdHJ1Y3QgdGhlIHJlbGF0aXZlIGZpbGVuYW1lIGlm
IFJDUyBzcGl0cyBvdXQgYSBmdWxsIHBhdGgKCSAgICAkZmlsZW5hbWUgPX4gcyVeXFEkRGlyTmFt
ZVxFLyUlOwoJICAgIG5leHQ7Cgl9CglpZiAoJHN0YXRlIGVxICJsb2ciKSB7CgkgICAgaWYgKC9e
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSQvCgkJfHwgL149PT09PT09PT09PT09PT09PT09
PT09PT09PT09PS8pIHsKCQkjIEVuZCBvZiBhIGxvZyBlbnRyeS4KCQlteSAkcmV2YnJhbmNoOwoJ
CSgkcmV2YnJhbmNoID0gJHJldikgPX4gcy9cLlxkKyQvLzsKCQlwcmludCAiJGZpbGVuYW1lICRy
ZXYgV2FudGVkOiAkcmV2d2FudGVkICIKCQkgICAgLiAiUmV2YnJhbmNoOiAkcmV2YnJhbmNoIEJy
YW5jaDogJGJyYW5jaCAiCgkJICAgIC4gIkJyYW5jaHBvaW50OiAkYnJhbmNocG9pbnRcbiIgaWYg
KCR2ZXJib3NlKTsKCQlpZiAoIWRlZmluZWQoJHJldndhbnRlZCkgJiYgZGVmaW5lZCgkYnJhbmNo
KQoJCSAgICAmJiAkYnJhbmNoIGVxICRyZXZicmFuY2ggfHwgIWRlZmluZWQoJHRhZykpIHsKCQkg
ICAgcHJpbnQgIkZpbGUgcmV2aXNpb24gJHJldiBmb3VuZCBmb3IgYnJhbmNoICRicmFuY2hcbiIK
CQkJaWYgKCR2ZXJib3NlKTsKCQkgICAgJHJldndhbnRlZCA9ICRyZXY7CgkJfQoJCWlmIChkZWZp
bmVkKCRyZXZ3YW50ZWQpID8gJHJldiBlcSAkcmV2d2FudGVkIDoKCQkgICAgZGVmaW5lZCgkYnJh
bmNocG9pbnQpID8gJHJldiBlcSAkYnJhbmNocG9pbnQgOgoJCSAgICAwICYmICgkcmV2IGVxICRo
ZWFkKSkgeyAjIERvbid0IHRoaW5rIGhlYWQgaXMgbmVlZGVkIGhlcmUuLgoJCSAgICBwcmludCAi
RmlsZSBpbmZvICRyZXYgZm91bmQgZm9yICRmaWxlbmFtZVxuIiBpZiAoJHZlcmJvc2UpOwoJCSAg
ICBteSBAZmluZm8gPSAoJHJldiwkZGF0ZSwkbG9nLCRhdXRob3IsJGZpbGVuYW1lKTsKCQkgICAg
bXkgKCRuYW1lKTsKCQkgICAgKCRuYW1lID0gJGZpbGVuYW1lKSA9fiBzJS8uKiUlOwoJCSAgICAk
ZmlsZWluZm97JG5hbWV9ID0gWyBAZmluZm8gXTsKCQkgICAgJHN0YXRlID0gImRvbmUiIGlmIChk
ZWZpbmVkKCRyZXZ3YW50ZWQpICYmICRyZXYgZXEgJHJldndhbnRlZCk7CgkJfQoJCSRyZXYgPSB1
bmRlZjsKCQkkZGF0ZSA9IHVuZGVmOwoJCSRsb2cgPSAiIjsKCSAgICB9CgkgICAgZWxzaWYgKCFk
ZWZpbmVkKCRkYXRlKSAmJiBtfF5kYXRlOlxzKyhcZCspLyhcZCspLyhcZCspXHMrKFxkKyk6KFxk
Kyk6KFxkKyk7fCkgewoJCW15ICR5ciA9ICQxOwoJCSMgZGFtbiAyLWRpZ2l0IHllYXIgcm91dGlu
ZXMgOi0pCgkJaWYgKCR5ciA+IDEwMCkgewoJCSAgICAkeXIgLT0gMTkwMDsKCQl9CgkJJGRhdGUg
PSAmVGltZTo6TG9jYWw6OnRpbWVnbSgkNiwkNSwkNCwkMywkMiAtIDEsJHlyKTsKCQkoJGF1dGhv
cikgPSAvYXV0aG9yOiAoW147XSspLzsKCQkkc3RhdGUgPSAibG9nIjsKCQkkbG9nID0gJyc7CgkJ
bmV4dDsKCSAgICB9CgkgICAgZWxzaWYgKCFkZWZpbmVkKCRyZXYpICYmIG0vXnJldmlzaW9uICgu
KikkLykgewoJCSRyZXYgPSAkMTsKCQluZXh0OwoJICAgIH0KCSAgICBlbHNlIHsKCQkkbG9nID0g
JGxvZyAuICRfOwoJICAgIH0KCX0KCWlmICgvXj09PT09PT09PT09PT09PS8pIHsKCSAgICAkc3Rh
dGUgPSAic3RhcnQiOwoJICAgIG5leHQ7Cgl9CiAgICB9CiAgICBpZiAoJC4gPT0gMCkgewoJZmF0
YWwoIjUwMCBJbnRlcm5hbCBFcnJvciIsIAoJICAgICAgIkZhaWxlZCB0byBzcGF3biBHTlUgcmxv
ZyBvbiA8ZW0+JyIuam9pbigiLCAiLCBAZmlsZXMpLiInPC9lbT48cD5kaWQgeW91IHNldCB0aGUg
PGI+XCRFTlZ7UEFUSH08L2I+IGluIHlvdXIgY29uZmlndXJhdGlvbiBmaWxlIGNvcnJlY3RseSA/
Iik7CiAgICB9CiAgICBjbG9zZSgkZmgpOwp9CgpzdWIgcmVhZExvZygkOyQ7JCkgewogICAgICAg
ICMgdGhlIHRoaXJkIGFyZ3VtZW50IGlzIGEgZmxhZyB0byByZXR1cm4gbGF0ZXN0IHJldmlzaW9u
IGluZm9ybWF0aW9uCiAgICAgICAgIyBJdCByZXR1cm5zIHRoZSAlcmV2YXV0aCBoYXNoIHRoYXQg
Y29udGFpbnMKICAgICAgICAjIHJldiwgZGF0ZSwgbG9nLCBhdXRob3IKCW15KCRmdWxsbmFtZSwk
cmV2aXNpb24sJHJldHVybmZsYWcpID0gQF87CglteSAoJHN5bW5hbWVzLCAkaGVhZCwgJHJldiwg
JGJyLCAkYnJwLCAkYnJhbmNoLCAkYnJhbmNocmV2KTsKICAgICAgICBteSAlcmV2YXV0aDsKICAg
ICAgICBteSAkbmV3ZXN0cmV2ID0gMDsKCW15ICRmaCA9IGRvIHtsb2NhbCgqRkgpO307CgoJaWYg
KGRlZmluZWQoJHJldmlzaW9uKSkgewoJICAgICRyZXZpc2lvbiA9ICItciRyZXZpc2lvbiI7Cgl9
CgllbHNlIHsKCSAgICAkcmV2aXNpb24gPSAiIjsKCX0KICAgICAgICBteSAkcnRmbGFnID0gMDsg
ICAgIyBpbml0aWFsaXplIG51bWVyaWMgYm9vbGVhbiByZXR1cm4gZmxhZyB0byBmYWxzZQogICAg
ICAgIGlmIChkZWZpbmVkKCRyZXR1cm5mbGFnKSkgewogICAgICAgICAgICRyZXZpc2lvbiA9ICIi
OwogICAgICAgICAgICRydGZsYWcgPSAxOyAgIyBzZXQgbnVtZXJpYyBmbGFnIHRvIHRydWUKICAg
ICAgICB9CgoJdW5kZWYgJXN5bXJldjsKCXVuZGVmICVyZXZzeW07Cgl1bmRlZiBAYWxscmV2aXNp
b25zOwoJdW5kZWYgJWRhdGU7Cgl1bmRlZiAlYXV0aG9yOwoJdW5kZWYgJXN0YXRlOwoJdW5kZWYg
JWRpZmZsaW5lczsKCXVuZGVmICVsb2c7CgoJcHJpbnQoIkdvaW5nIHRvIHJsb2cgJyRmdWxsbmFt
ZSdcbiIpIGlmICgkdmVyYm9zZSk7CglpZiAoISBvcGVuKCRmaCwgIi18IikpIHsgIyBjaGlsZAoJ
CWlmICgkcmV2aXNpb24gbmUgJycpIHsKCQkJZXhlYygicmxvZyIsJHJldmlzaW9uLCRmdWxsbmFt
ZSk7CgkJfQoJCWVsc2UgewoJCQlleGVjKCJybG9nIiwkZnVsbG5hbWUpOwoJCX0KCX0KCXdoaWxl
ICg8JGZoPikgewoJICAgIHByaW50IGlmICgkdmVyYm9zZSk7CgkgICAgaWYgKCRzeW1uYW1lcykg
ewoJCWlmICgvXlxzKyhbXjpdKyk6XHMrKFtcZFwuXSspLykgewoJCSAgICAkc3ltcmV2eyQxfSA9
ICQyOwoJCX0KCQllbHNlIHsKCQkgICAgJHN5bW5hbWVzID0gMDsKCQl9CgkgICAgfQoJICAgIGVs
c2lmICgvXmhlYWQ6XHMrKFtcZFwuXSspLykgewoJCSRoZWFkID0gJDE7CgkgICAgfQoJICAgIGVs
c2lmICgvXmJyYW5jaDpccysoW1xkXC5dKykvKSB7CgkJJGN1cmJyYW5jaCA9ICQxOwoJICAgIH0K
CSAgICBlbHNpZiAoL15zeW1ib2xpYyBuYW1lcy8pIHsKCQkkc3ltbmFtZXMgPSAxOwoJICAgIH0K
CSAgICBlbHNpZiAoL14tLS0tLS8pIHsKCQlsYXN0OwoJICAgIH0KCX0KCSgkY3VyYnJhbmNoID0g
JGhlYWQpID1+IHMvXC5cZCskLy8gaWYgKCFkZWZpbmVkKCRjdXJicmFuY2gpKTsKCiMgZWFjaCBs
b2cgZW50cnkgaXMgb2YgdGhlIGZvcm06CiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoj
IHJldmlzaW9uIDMuNy4xLjEKIyBkYXRlOiAxOTk1LzExLzI5IDIyOjE1OjUyOyAgYXV0aG9yOiBm
ZW5uZXI7ICBzdGF0ZTogRXhwOyAgbGluZXM6ICs1IC0zCiMgbG9nIGluZm8KIyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCglsb2dlbnRyeToKCXdoaWxlICghL149PT09PT09PT0vKSB7Cgkg
ICAgJF8gPSA8JGZoPjsKCSAgICBsYXN0IGxvZ2VudHJ5IGlmICghZGVmaW5lZCgkXykpOwkjIEVP
RgoJICAgIHByaW50ICJSOiIsICRfIGlmICgkdmVyYm9zZSk7CgkgICAgaWYgKC9ecmV2aXNpb24g
KFtcZFwuXSspLykgewoJCSRyZXYgPSAkMTsKCQl1bnNoaWZ0KEBhbGxyZXZpc2lvbnMsJHJldik7
CgkgICAgfQoJICAgIGVsc2lmICgvXj09PT09PT09LyB8fCAvXi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0kLykgewoJCW5leHQgbG9nZW50cnk7CgkgICAgfQoJICAgIGVsc2UgewoJCSMgVGhl
IHJsb2cgb3V0cHV0IGlzIHN5bnRhY3RpY2FsbHkgYW1iaWd1b3VzLiAgV2UgbXVzdAoJCSMgaGF2
ZSBndWVzc2VkIHdyb25nIGFib3V0IHdoZXJlIHRoZSBlbmQgb2YgdGhlIGxhc3QgbG9nCgkJIyBt
ZXNzYWdlIHdhcy4KCQkjIFNpbmNlIHRoaXMgaXMgbGlrZWx5IHRvIGhhcHBlbiB3aGVuIHBlb3Bs
ZSBwdXQgcmxvZyBvdXRwdXQKCQkjIGluIHRoZWlyIGNvbW1pdCBtZXNzYWdlcywgZG9uJ3QgZXZl
biBib3RoZXIga2VlcGluZwoJCSMgdGhlc2UgbGluZXMgc2luY2Ugd2UgZG9uJ3Qga25vdyB3aGF0
IHJldmlzaW9uIHRoZXkgZ28gd2l0aAoJCSMgYW55IG1vcmUuCgkJbmV4dCBsb2dlbnRyeTsKIwkJ
JmZhdGFsKCI1MDAgSW50ZXJuYWwgRXJyb3IiLCJFcnJvciBwYXJzaW5nIFJDUyBvdXRwdXQ6ICRf
Iik7CgkgICAgfQoJICAgICRfID0gPCRmaD47CgkgICAgcHJpbnQgIkQ6IiwgJF8gaWYgKCR2ZXJi
b3NlKTsKCSAgICBpZiAobXxeZGF0ZTpccysoXGQrKS8oXGQrKS8oXGQrKVxzKyhcZCspOihcZCsp
OihcZCspO1xzK2F1dGhvcjpccysoXFMrKTtccytzdGF0ZTpccysoXFMrKTtccysobGluZXM6XHMr
KFswLTlccystXSspKT98KSB7CgkJbXkgJHlyID0gJDE7CiAgICAgICAgICAgICAgICAjIGRhbW4g
Mi1kaWdpdCB5ZWFyIHJvdXRpbmVzIDotKQogICAgICAgICAgICAgICAgaWYgKCR5ciA+IDEwMCkg
ewogICAgICAgICAgICAgICAgICAgICR5ciAtPSAxOTAwOwogICAgICAgICAgICAgICAgfQoJCSRk
YXRleyRyZXZ9ID0gJlRpbWU6OkxvY2FsOjp0aW1lZ20oJDYsJDUsJDQsJDMsJDIgLSAxLCR5cik7
CgkJJGF1dGhvcnskcmV2fSA9ICQ3OwoJCSRzdGF0ZXskcmV2fSA9ICQ4OwoJCSRkaWZmbGluZXN7
JHJldn0gPSAkMTA7CgogICAgICAgICAgICAgICAgaWYgKCEkbmV3ZXN0cmV2KSB7ICAgICMgY2Fw
dHVyZSB0aGUgbmV3ZXN0IHJldmlzaW9uCiAgICAgICAgICAgICAgICAgICAjIHBvcHVsYXRlIHBv
dGVudGlhbCByZXR1cm4gaGFzaAogICAgICAgICAgICAgICAgICAgJHJldmF1dGh7J3Jldid9ID0g
JHJldjsKICAgICAgICAgICAgICAgICAgICRyZXZhdXRoeydkYXRlJ30gPSAkZGF0ZXskcmV2fTsK
ICAgICAgICAgICAgICAgICAgICRyZXZhdXRoeydsb2cnfSA9ICRsb2d7JHJldn07CiAgICAgICAg
ICAgICAgICAgICAkcmV2YXV0aHsnYXV0aG9yJ30gPSAkYXV0aG9yeyRyZXZ9OwogICAgICAgICAg
ICAgICAgICAgJG5ld2VzdHJldiA9IDE7CiAgICAgICAgICAgICAgICB9ICMgZW5kIGlmCgkgICAg
fQoJICAgIGVsc2UgewoJCSZmYXRhbCgiNTAwIEludGVybmFsIEVycm9yIiwgIkVycm9yIHBhcnNp
bmcgUkNTIG91dHB1dDogJF8iKTsKCSAgICB9CgkgICAgbGluZToKCSAgICB3aGlsZSAoPCRmaD4p
IHsKCQlwcmludCAiTDoiLCAkXyBpZiAoJHZlcmJvc2UpOwoJCW5leHQgbGluZSBpZiAoL15icmFu
Y2hlczpccy8pOwoJCWxhc3QgbGluZSBpZiAoL14tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
JC8gfHwgL149PT09PT09PT0vKTsKCQkkbG9neyRyZXZ9IC49ICRfOwoJICAgIH0KCSAgICBwcmlu
dCAiRToiLCAkXyBpZiAoJHZlcmJvc2UpOwoJfQoJY2xvc2UoJGZoKTsKCXByaW50ICJEb25lIHJl
YWRpbmcgUkNTIGZpbGVcbiIgaWYgKCR2ZXJib3NlKTsKCglAcmV2b3JkZXIgPSByZXZlcnNlIHNv
cnQge3JldmNtcCgkYSwkYil9IEBhbGxyZXZpc2lvbnM7CglwcmludCAiRG9uZSBzb3J0aW5nIHJl
dmlzaW9ucyIsam9pbigiICIsQHJldm9yZGVyKSwiXG4iIGlmICgkdmVyYm9zZSk7CgojCiMgSEVB
RCBpcyBhbiBhcnRpZmljaWFsIHRhZyB3aGljaCBpcyBzaW1wbHkgdGhlIGhpZ2hlc3QgdGFnIG51
bWJlciBvbiB0aGUgbWFpbgojIGJyYW5jaCwgdW5sZXNzIHRoZXJlIGlzIGEgYnJhbmNoIHRhZyBp
biB0aGUgUkNTIGZpbGUgaW4gd2hpY2ggY2FzZSBpdCdzIHRoZQojIGhpZ2hlc3QgcmV2aXNpb24g
b24gdGhhdCBicmFuY2guICBGaW5kIGl0IGJ5IGxvb2tpbmcgdGhyb3VnaCBAcmV2b3JkZXI7IGl0
CiMgaXMgdGhlIGZpcnN0IGNvbW1pdCBsaXN0ZWQgb24gdGhlIGFwcHJvcHJpYXRlIGJyYW5jaC4K
IyBUaGlzIGlzIG5vdCBuZWNjZXNhcnkgdGhlIHNhbWUgcmV2aXNpb24gYXMgbWFya2VkIGFzIGhl
YWQgaW4gdGhlIFJDUyBmaWxlLgoJbXkgJGhlYWRyZXYgPSAkY3VyYnJhbmNoIHx8ICIxIjsKCSgk
c3ltcmV2eyJNQUlOIn0gPSAkaGVhZHJldikgPX4gcy8oXC4/KShcZCspJC8kezF9MC4kMi87Cgly
ZXZpc2lvbjoKCWZvcmVhY2ggJHJldiAoQHJldm9yZGVyKSB7CgkgICAgaWYgKCRyZXYgPX4gL14o
XFMqKVwuXGQrJC8gJiYgJGhlYWRyZXYgZXEgJDEpIHsKCQkkc3ltcmV2eyJIRUFEIn0gPSAkcmV2
OwoJCWxhc3QgcmV2aXNpb247CgkgICAgfQoJfQoJKCRzeW1yZXZ7IkhFQUQifSA9ICRoZWFkcmV2
KSA9fiBzL1wuXGQrJC8vCiAgICAgICAgICAgIGlmICghZGVmaW5lZCgkc3ltcmV2eyJIRUFEIn0p
KTsKCXByaW50ICJEb25lIGZpbmRpbmcgSEVBRFxuIiBpZiAoJHZlcmJvc2UpOwojCiMgTm93IHRo
YXQgd2Uga25vdyBhbGwgb2YgdGhlIHJldmlzaW9uIG51bWJlcnMsIHdlIGNhbiBhc3NvY2lhdGUK
IyBhYnNvbHV0ZSByZXZpc2lvbiBudW1iZXJzIHdpdGggYWxsIG9mIHRoZSBzeW1ib2xpYyBuYW1l
cywgYW5kCiMgcGFzcyB0aGVtIHRvIHRoZSBmb3JtIHNvIHRoYXQgdGhlIHNhbWUgYXNzb2NpYXRp
b24gZG9lc24ndCBoYXZlCiMgdG8gYmUgYnVpbHQgdGhlbi4KIwoJdW5kZWYgQGJyYW5jaG5hbWVz
OwoJdW5kZWYgJWJyYW5jaHBvaW50OwoJdW5kZWYgJHNlbDsKCglmb3JlYWNoIChyZXZlcnNlIHNv
cnQga2V5cyAlc3ltcmV2KSB7CgkgICAgJHJldiA9ICRzeW1yZXZ7JF99OwoJICAgIGlmICgkcmV2
ID1+IC9eKCguKilcLikwXC4oXGQrKSQvKSB7CgkJcHVzaChAYnJhbmNobmFtZXMsICRfKTsKCQkj
CgkJIyBBIHJldmlzaW9uIG51bWJlciBvZiBBLkIuMC5EIHJlYWxseSB0cmFuc2xhdGVzIGludG8K
CQkjICJ0aGUgaGlnaGVzdCBjdXJyZW50IHJldmlzaW9uIG9uIGJyYW5jaCBBLkIuRCIuCgkJIwoJ
CSMgSWYgdGhlcmUgaXMgbm8gYnJhbmNoIEEuQi5ELCB0aGVuIGl0IHRyYW5zbGF0ZXMgaW50bwoJ
CSMgdGhlIGhlYWQgQS5CIC4KCQkjCgkJIyBUaGlzIHJlYXNvbmluZyBhbHNvIGFwcGxpZXMgdG8g
dGhlIG1haW4gYnJhbmNoIEEuQiwKCQkjIHdpdGggdGhlIGJyYW5jaCBudW1iZXIgMC5BLCB3aXRo
IHRoZSBleGNlcHRpb24gdGhhdAoJCSMgaXQgaGFzIG5vIGhlYWQgdG8gdHJhbnNsYXRlIHRvIGlm
IHRoZXJlIGlzIG5vdGhpbmcgb24KCQkjIHRoZSBicmFuY2gsIGJ1dCBJIGd1ZXNzIHRoaXMgY2Fu
IG5ldmVyIGhhcHBlbj8KCQkjCgkJIyBTaW5jZSBzb21lIHN0dXBpZCBwZW9wbGUgYWN0dWFsbHkg
aW1wb3J0L2NoZWNrIGluCgkJIyBmaWxlcyB3aXRoIHZlcnNpb24gMC5YIHdlIGFzc3VtZSB0aGF0
IHRoZSBhYm92ZSBjYW5ub3QKCQkjIGhhcHBlbiwgYW5kIHJlZ2FyZCAwLlgoLiopIGFzIGEgcmV2
aXNpb24gYW5kIG5vdCBhIGJyYW5jaC4KCQkjCgkJJGhlYWQgPSBkZWZpbmVkKCQyKSA/ICQyIDog
IiI7CgkJJGJyYW5jaCA9ICQzOwoJCSRicmFuY2hyZXYgPSAkaGVhZCAuICgkaGVhZCBuZSAiIiA/
ICIuIiA6ICIiKSAuICRicmFuY2g7CgkJbXkgJHJlZ2V4OwoJCSgkcmVnZXggPSAkYnJhbmNocmV2
KSA9fiBzL1wuL1xcLi9nOwoJCSRyZXYgPSAkaGVhZDsKCgkJcmV2aXNpb246CgkJZm9yZWFjaCBt
eSAkciAoQHJldm9yZGVyKSB7CgkJICAgIGlmICgkciA9fiAvXiR7cmVnZXh9XGIvKSB7CgkJCSRy
ZXYgPSAkYnJhbmNocmV2OwoJCQlsYXN0IHJldmlzaW9uOwoJCSAgICB9CgkJfQoJCW5leHQgaWYg
KCRyZXYgZXEgIiIpOwoJCWlmICgkcmV2IG5lICRoZWFkICYmICRoZWFkIG5lICIiKSB7CgkJICAg
ICRicmFuY2hwb2ludHskaGVhZH0gLj0gIiwgIiBpZiAoJGJyYW5jaHBvaW50eyRoZWFkfSk7CgkJ
ICAgICRicmFuY2hwb2ludHskaGVhZH0gLj0gJF87CgkJfQoJICAgIH0KCSAgICAkcmV2c3lteyRy
ZXZ9IC49ICIsICIgaWYgKCRyZXZzeW17JHJldn0pOwoJICAgICRyZXZzeW17JHJldn0gLj0gJF87
CgkgICAgJHNlbCAuPSAiPE9QVElPTiBWQUxVRT1cIiR7cmV2fToke199XCI+JF9cbiI7Cgl9Cglw
cmludCAiRG9uZSBhc3NvY2lhdGluZyByZXZpc2lvbnMgd2l0aCBicmFuY2hlc1xuIiBpZiAoJHZl
cmJvc2UpOwoKCW15ICgkb25seW9uYnJhbmNoLCAkb25seWJyYW5jaHBvaW50KTsKCWlmICgkb25s
eW9uYnJhbmNoID0gJGlucHV0eydvbmx5X3dpdGhfdGFnJ30pIHsKCSAgICAkb25seW9uYnJhbmNo
ID0gJHN5bXJldnskb25seW9uYnJhbmNofTsKCSAgICBpZiAoJG9ubHlvbmJyYW5jaCA9fiBzL1wu
MFwuLy4vKSB7CgkJKCRvbmx5YnJhbmNocG9pbnQgPSAkb25seW9uYnJhbmNoKSA9fiBzL1wuXGQr
JC8vOwoJICAgIH0KICAgICAgICAgICAgZWxzZSB7CgkJJG9ubHlicmFuY2hwb2ludCA9ICRvbmx5
b25icmFuY2g7CgkgICAgfQoJICAgIGlmICghZGVmaW5lZCgkb25seW9uYnJhbmNoKSB8fCAkb25s
eWJyYW5jaHBvaW50IGVxICIiKSB7CgkJZmF0YWwoIjQwNCBUYWcgbm90IGZvdW5kIiwiVGFnICRp
bnB1dHsnb25seV93aXRoX3RhZyd9IG5vdCBkZWZpbmVkIik7CgkgICAgfQoJfQoKCXVuZGVmIEBy
ZXZpc2lvbnM7CgoJZm9yZWFjaCAoQGFsbHJldmlzaW9ucykgewoJICAgICgkYnIgPSAkXykgPX4g
cy9cLlxkKyQvLzsKCSAgICAoJGJycCA9ICRicikgPX4gcy9cLlxkKyQvLzsKCSAgICBuZXh0IGlm
ICgkb25seW9uYnJhbmNoICYmICRiciBuZSAkb25seW9uYnJhbmNoICYmCgkJCQkJJF8gbmUgJG9u
bHlicmFuY2hwb2ludCk7CgkgICAgdW5zaGlmdChAcmV2aXNpb25zLCRfKTsKCX0KCglpZiAoJGxv
Z3NvcnQgZXEgImRhdGUiKSB7CgkgICAgIyBTb3J0IHRoZSByZXZpc2lvbnMgaW4gY29tbWl0IG9y
ZGVyIGFuIHNlY29uZGFyeSBzb3J0IG9uIHJldmlzaW9uCgkgICAgIyAoc2Vjb25kYXJ5IHNvcnQg
bmVlZGVkIGZvciBpbXBvcnRlZCBzb3VyY2VzLCBvciB0aGUgZmlyc3QgbWFpbgoJICAgICMgcmV2
aXNpb24gZ2V0cyBiZWZvcmUgdGhlIHNhbWUgcmV2aXNpb24gb24gdGhlIDEuMS4xIGJyYW5jaCkK
CSAgICBAcmV2ZGlzcGxheW9yZGVyID0gc29ydCB7JGRhdGV7JGJ9IDw9PiAkZGF0ZXskYX0gfHwg
LXJldmNtcCgkYSwgJGIpfSBAcmV2aXNpb25zOwoJfQogICAgICAgIGVsc2lmICgkbG9nc29ydCBl
cSAicmV2IikgewoJICAgICMgU29ydCB0aGUgcmV2aXNpb25zIGluIHJldmlzaW9uIG9yZGVyLCBo
aWdoZXN0IGZpcnN0CgkgICAgQHJldmRpc3BsYXlvcmRlciA9IHJldmVyc2Ugc29ydCB7cmV2Y21w
KCRhLCRiKX0gQHJldmlzaW9uczsKCX0KICAgICAgICBlbHNlIHsKCSAgICAjIE5vIHNvcnRpbmcu
IFByZXNlbnQgaW4gdGhlIHNhbWUgb3JkZXIgYXMgcmxvZyAvIGN2cyBsb2cKCSAgICBAcmV2ZGlz
cGxheW9yZGVyID0gQHJldmlzaW9uczsKCX0KCiAgICAgICAgaWYgKCRydGZsYWcpIHsgICAjIHJl
dHVybiBpdCBpZiBydGZsYWcgbm90IHplcm8KICAgICAgICAgICByZXR1cm4gJXJldmF1dGg7CiAg
ICAgICAgfQp9ICMgZW5kIHN1YiByZWFkTG9nCgpzdWIgcHJpbnRMb2coJDskKSB7CglteSAoJGxp
bmssICRiciwgJGJycCk7CgkoJF8sJGxpbmspID0gQF87CgkoJGJyID0gJF8pID1+IHMvXC5cZCsk
Ly87CgkoJGJycCA9ICRicikgPX4gcy9cLj9cZCskLy87CglteSAoJGlzRGVhZCwgJHByZXYpOwoK
CSRsaW5rID0gMSBpZiAoIWRlZmluZWQoJGxpbmspKTsKCSRpc0RlYWQgPSAoJHN0YXRleyRffSBl
cSAiZGVhZCIpOwoKCWlmICgkbGluayAmJiAhJGlzRGVhZCkgewoJICAgIG15ICgkZmlsZW5hbWUp
OwoJICAgICgkZmlsZW5hbWUgPSAkd2hlcmUpID1+IHMvXi4qXC8vLzsKCSAgICBteSAoJGZpbGV1
cmwpID0gdXJsZW5jb2RlKCRmaWxlbmFtZSk7CgkgICAgcHJpbnQgIjxhIE5BTUU9XCJyZXYkX1wi
PjwvYT4iOwoJICAgIGlmIChkZWZpbmVkKCRyZXZzeW17JF99KSkgewoJCWZvcmVhY2ggbXkgJHN5
bSAoc3BsaXQoIiwgIiwgJHJldnN5bXskX30pKSB7CgkJICAgIHByaW50ICI8YSBOQU1FPVwiJHN5
bVwiPjwvYT4iOwoJCX0KCSAgICB9CgkgICAgaWYgKGRlZmluZWQoJHJldnN5bXskYnJ9KSAmJiAk
cmV2c3lteyRicn0gJiYgIWRlZmluZWQoJG5hbWVwcmludGVkeyRicn0pKSB7CgkJZm9yZWFjaCBt
eSAkc3ltIChzcGxpdCgiLCAiLCAkcmV2c3lteyRicn0pKSB7CgkJICAgIHByaW50ICI8YSBOQU1F
PVwiJHN5bVwiPjwvYT4iOwoJCX0KCQkkbmFtZXByaW50ZWR7JGJyfSA9IDE7CgkgICAgfQoJICAg
IHByaW50ICJcbiBSZXZpc2lvbiAiOwoJICAgICZkb3dubG9hZF9saW5rKCRmaWxldXJsLCAkXywg
JF8sCgkJJGRlZmF1bHRWaWV3YWJsZSA/ICJ0ZXh0L3gtY3Zzd2ViLW1hcmt1cCIgOiB1bmRlZik7
CgkgICAgaWYgKCRkZWZhdWx0Vmlld2FibGUpIHsKCQlwcmludCAiIC8gIjsKCQkmZG93bmxvYWRf
bGluaygkZmlsZXVybCwgJF8sICIoZG93bmxvYWQpIiwgJG1pbWV0eXBlKTsKCSAgICB9CgkgICAg
aWYgKG5vdCAkZGVmYXVsdFRleHRQbGFpbikgewoJCXByaW50ICIgLyAiOwoJCSZkb3dubG9hZF9s
aW5rKCRmaWxldXJsLCAkXywgIihhcyB0ZXh0KSIsIAoJCQkgICAidGV4dC9wbGFpbiIpOwoJICAg
IH0KCSAgICBpZiAoISRkZWZhdWx0Vmlld2FibGUpIHsKCQlwcmludCAiIC8gIjsKCQkmZG93bmxv
YWRfbGluaygkZmlsZXVybCwgJF8sICIodmlldykiLCAidGV4dC94LWN2c3dlYi1tYXJrdXAiKTsK
CSAgICB9CgkgICAgaWYgKCRhbGxvd19hbm5vdGF0ZSkgewoJCXByaW50ICIgLSA8YSBocmVmPVwi
IiAuICRzY3JpcHRuYW1lIC4gIi8iIC4gdXJsZW5jb2RlKCR3aGVyZSkgLiAiP2Fubm90YXRlPSRf
JGJhcmVxdWVyeVwiPiI7CgkJcHJpbnQgImFubm90YXRlPC9hPiI7CgkgICAgfQoJICAgICMgUGx1
cyBhIHNlbGVjdCBsaW5rIGlmIGVuYWJsZWQsIGFuZCB0aGlzIHZlcnNpb24gaXNuJ3Qgc2VsZWN0
ZWQKCSAgICBpZiAoJGFsbG93X3ZlcnNpb25fc2VsZWN0KSB7CgkJaWYgKCghZGVmaW5lZCgkaW5w
dXR7InIxIn0pIHx8ICRpbnB1dHsicjEifSBuZSAkXykpIHsKCQkgICAgcHJpbnQgIiAtIDxBIEhS
RUY9XCIke3NjcmlwdHdoZXJlfT9yMT0kXyRiYXJlcXVlcnkiIC4KCQkJIlwiPltzZWxlY3QgZm9y
IGRpZmZzXTwvQT5cbiI7CgkJfQoJCWVsc2UgewoJCSAgICBwcmludCAiIC0gPGI+W3NlbGVjdGVk
XTwvYj4iOwoJCX0KCSAgICB9Cgl9CgllbHNlIHsKCSAgICBwcmludCAiUmV2aXNpb24gPEI+JF88
L0I+IjsKCX0KCWlmICgvXjFcLjFcLjFcLlxkKyQvKSB7CgkgICAgcHJpbnQgIiA8aT4odmVuZG9y
IGJyYW5jaCk8L2k+IjsKCX0KCWlmIChkZWZpbmVkIEBteXR6KSB7CgkgICAgbXkgKCRlc3QpID0g
JG15dHpbKGxvY2FsdGltZSgkZGF0ZXskX30pKVs4XV07CgkgICAgcHJpbnQgIiwgPGk+IiAuIHNj
YWxhciBsb2NhbHRpbWUoJGRhdGV7JF99KSAuICIgJGVzdDwvaT4gKCI7Cgl9IGVsc2UgewoJICAg
IHByaW50ICIsIDxpPiIgLiBzY2FsYXIgZ210aW1lKCRkYXRleyRffSkgLiAiIFVUQzwvaT4gKCI7
Cgl9CglwcmludCByZWFkYWJsZVRpbWUodGltZSgpIC0gJGRhdGV7JF99LDEpIC4gIiBhZ28pIjsK
CXByaW50ICIgYnkgIjsKCXByaW50ICI8aT4iIC4gJGF1dGhvcnskX30gLiAiPC9pPlxuIjsKCXBy
aW50ICI8QlI+QnJhbmNoOiA8Yj4iLCRsaW5rP2xpbmtfdGFncygkcmV2c3lteyRicn0pOiRyZXZz
eW17JGJyfSwiPC9iPlxuIgoJICAgIGlmICgkcmV2c3lteyRicn0pOwoJcHJpbnQgIjxCUj5DVlMg
VGFnczogPGI+IiwkbGluaz9saW5rX3RhZ3MoJHJldnN5bXskX30pOiRyZXZzeW17JF99LCI8L2I+
IgoJICAgIGlmICgkcmV2c3lteyRffSk7CglwcmludCAiPEJSPkJyYW5jaCBwb2ludCBmb3I6IDxi
PiIsJGxpbms/bGlua190YWdzKCRicmFuY2hwb2ludHskX30pOiRicmFuY2hwb2ludHskX30sIjwv
Yj5cbiIKCSAgICBpZiAoJGJyYW5jaHBvaW50eyRffSk7CgkjIEZpbmQgdGhlIHByZXZpb3VzIHJl
dmlzaW9uCglteSBAcHJldnJldiA9IHNwbGl0KC9cLi8sICRfKTsKCWRvIHsKCSAgICBpZiAoLS0k
cHJldnJldlskI3ByZXZyZXZdIDw9IDApIHsKCQkjIElmIGl0IHdhcyBYLlkuWi4xLCBqdXN0IG1h
a2UgaXQgWC5ZCgkJcG9wKEBwcmV2cmV2KTsKCQlwb3AoQHByZXZyZXYpOwoJICAgIH0KCSAgICAk
cHJldiA9IGpvaW4oIi4iLCBAcHJldnJldik7Cgl9IHVudGlsIChkZWZpbmVkKCRkYXRleyRwcmV2
fSkgfHwgJHByZXYgZXEgIiIpOwoJaWYgKCRwcmV2IG5lICIiKSB7CgkgICAgaWYgKCRkaWZmbGlu
ZXN7JF99KSB7CgkJcHJpbnQgIjxCUj5DaGFuZ2VzIHNpbmNlIDxiPiRwcmV2OiAkZGlmZmxpbmVz
eyRffSBsaW5lczwvYj4iOwoJICAgIH0KCX0KCWlmICgkaXNEZWFkKSB7CgkgICAgcHJpbnQgIjxC
Uj48Qj48ST5GSUxFIFJFTU9WRUQ8L0k+PC9CPlxuIjsKCX0KCWVsc2lmICgkbGluaykgewoJICAg
IG15ICVkaWZmcmV2ID0gKCk7CgkgICAgJGRpZmZyZXZ7JF99ID0gMTsKCSAgICAkZGlmZnJldnsi
In0gPSAxOwoJICAgIHByaW50ICI8QlI+RGlmZiI7CgkgICAgIwoJICAgICMgT2ZmZXIgZGlmZiB0
byBwcmV2aW91cyByZXZpc2lvbgoJICAgIGlmICgkcHJldikgewoJCSRkaWZmcmV2eyRwcmV2fSA9
IDE7CgkJcHJpbnQgIiB0byBwcmV2aW91cyA8QSBIUkVGPVwiJHtzY3JpcHR3aGVyZX0uZGlmZj9y
MT0kcHJldiI7CgkJcHJpbnQgIiZhbXA7cjI9JF8iIC4gJGJhcmVxdWVyeSAuICJcIj4kcHJldjwv
QT5cbiI7CgkJaWYgKCEkaHJfZGVmYXVsdCkgeyAjIG9mZmVyIGEgaHVtYW4gcmVhZGFibGUgdmVy
c2lvbiBpZiBub3QgZGVmYXVsdAoJCSAgICBwcmludCAiKDxBIEhSRUY9XCIke3NjcmlwdHdoZXJl
fS5kaWZmP3IxPSRwcmV2IjsKCQkgICAgcHJpbnQgIiZhbXA7cjI9JF8iIC4gJGJhcmVxdWVyeSAu
ICImYW1wO2Y9aFwiPmNvbG9yZWQ8L0E+KVxuIjsKCQl9CgkgICAgfQoJICAgICMKCSAgICAjIFBs
dXMsIGlmIGl0J3Mgb24gYSBicmFuY2gsIGFuZCBpdCdzIG5vdCBhIHZlbmRvciBicmFuY2gsCgkg
ICAgIyBvZmZlciBhIGRpZmYgd2l0aCB0aGUgYnJhbmNoIHBvaW50LgoJICAgIGlmICgkcmV2c3lt
eyRicnB9ICYmICEvXjFcLjFcLjFcLlxkKyQvICYmICFkZWZpbmVkKCRkaWZmcmV2eyRicnB9KSkg
ewoJCXByaW50ICIgdG8gYnJhbmNocG9pbnQgPEEgSFJFRj1cIiR7c2NyaXB0d2hlcmV9LmRpZmY/
cjE9JGJycCI7CgkJcHJpbnQgIiZhbXA7cjI9JF8iIC4gJGJhcmVxdWVyeSAuICJcIj4kYnJwPC9B
PlxuIjsKCQlpZiAoISRocl9kZWZhdWx0KSB7ICMgb2ZmZXIgYSBodW1hbiByZWFkYWJsZSB2ZXJz
aW9uIGlmIG5vdCBkZWZhdWx0CgkJcHJpbnQgIig8QSBIUkVGPVwiJHtzY3JpcHR3aGVyZX0uZGlm
Zj9yMT0kYnJwIjsKCQlwcmludCAiJmFtcDtyMj0kXyIgLiAkYmFyZXF1ZXJ5IC4gIiZhbXA7Zj1o
XCI+Y29sb3JlZDwvQT4pXG4iOwoJCX0KCSAgICB9CgkgICAgIwoJICAgICMgUGx1cywgaWYgaXQn
cyBvbiBhIGJyYW5jaCwgYW5kIGl0J3Mgbm90IGEgdmVuZG9yIGJyYW5jaCwKCSAgICAjIG9mZmVy
IHRvIGRpZmYgd2l0aCB0aGUgbmV4dCByZXZpc2lvbiBvZiB0aGUgaGlnaGVyIGJyYW5jaC4KCSAg
ICAjIChlLmcuIGNoYW5nZSBnZXRzIGNvbW1pdHRlZCBhbmQgdGhlbiBicm91Z2h0CgkgICAgIyBv
dmVyIHRvIC1zdGFibGUpCgkgICAgaWYgKC9eXGQrXC5cZCtcLlxkKy8gJiYgIS9eMVwuMVwuMVwu
XGQrJC8pIHsKCQlteSAoJGksJG5leHRtYWluKTsKCQlmb3IgKCRpID0gMDsgJGkgPCAkI3Jldm9y
ZGVyICYmICRyZXZvcmRlclskaV0gbmUgJF87ICRpKyspe30KCQlteSAoQHRtcDIpID0gc3BsaXQo
L1wuLywgJF8pOwoJCWZvciAoJG5leHRtYWluID0gIiI7ICRpID4gMDsgJGktLSkgewoJCSAgICBt
eSAoJG5leHQpID0gJHJldm9yZGVyWyRpLTFdOwoJCSAgICBteSAoQHRtcDEpID0gc3BsaXQoL1wu
LywgJG5leHQpOwoJCSAgICBpZiAoJCN0bXAxIDwgJCN0bXAyKSB7CgkJCSRuZXh0bWFpbiA9ICRu
ZXh0OwoJCQlsYXN0OwoJCSAgICB9CgkJICAgICMgT25seSB0aGUgaGlnaGVzdCB2ZXJzaW9uIG9u
IGEgYnJhbmNoIHNob3VsZCBoYXZlCgkJICAgICMgYSBkaWZmIGZvciB0aGUgIm5leHQgbWFpbiIu
CgkJICAgIGxhc3QgaWYgKCQjdG1wMSA9PSAkI3RtcDIgJiYgam9pbigiLiIsQHRtcDFbMC4uJCN0
bXAxLTFdKQoJCQkgICAgIGVxIGpvaW4oIi4iLEB0bXAyWzAuLiQjdG1wMS0xXSkpOwoJCX0KCQlp
ZiAoIWRlZmluZWQoJGRpZmZyZXZ7JG5leHRtYWlufSkpIHsKCQkgICAgJGRpZmZyZXZ7JG5leHRt
YWlufSA9IDE7CgkJICAgIHByaW50ICIgbmV4dCBtYWluIDxBIEhSRUY9XCIke3NjcmlwdHdoZXJl
fS5kaWZmP3IxPSRuZXh0bWFpbiI7CgkJICAgIHByaW50ICImYW1wO3IyPSRfIiAuICRiYXJlcXVl
cnkgLgoJCQkiXCI+JG5leHRtYWluPC9BPlxuIjsKCQkgICAgaWYgKCEkaHJfZGVmYXVsdCkgeyAj
IG9mZmVyIGEgaHVtYW4gcmVhZGFibGUgdmVyc2lvbiBpZiBub3QgZGVmYXVsdAoJCQlwcmludCAi
KDxBIEhSRUY9XCIke3NjcmlwdHdoZXJlfS5kaWZmP3IxPSRuZXh0bWFpbiI7CgkJCXByaW50ICIm
YW1wO3IyPSRfIiAuICRiYXJlcXVlcnkgLgoJCQkgICAgIiZhbXA7Zj1oXCI+Y29sb3JlZDwvQT4p
XG4iOwoJCSAgICB9CgkJfQoJICAgIH0KCSAgICAjIFBsdXMgaWYgdXNlciBoYXMgc2VsZWN0ZWQg
b25seSByMSwgdGhlbiBwcmVzZW50IGEgbGluawoJICAgICMgdG8gbWFrZSBhIGRpZmYgdG8gdGhh
dCByZXZpc2lvbgoJICAgIGlmIChkZWZpbmVkKCRpbnB1dHsicjEifSkgJiYgIWRlZmluZWQoJGRp
ZmZyZXZ7JGlucHV0eyJyMSJ9fSkpIHsKCQkkZGlmZnJldnskaW5wdXR7InIxIn19ID0gMTsKCQlw
cmludCAiIHRvIHNlbGVjdGVkIDxBIEhSRUY9XCIke3NjcmlwdHdoZXJlfS5kaWZmPyIKCQkJLiAi
cjE9JGlucHV0eydyMSd9JmFtcDtyMj0kXyIgLiAkYmFyZXF1ZXJ5CgkJCS4gIlwiPiRpbnB1dHsn
cjEnfTwvQT5cbiI7CgkJaWYgKCEkaHJfZGVmYXVsdCkgeyAjIG9mZmVyIGEgaHVtYW4gcmVhZGFi
bGUgdmVyc2lvbiBpZiBub3QgZGVmYXVsdAoJCSAgICBwcmludCAiKDxBIEhSRUY9XCIke3Njcmlw
dHdoZXJlfS5kaWZmP3IxPSRpbnB1dHsncjEnfSI7CgkJICAgIHByaW50ICImYW1wO3IyPSRfIiAu
ICRiYXJlcXVlcnkgLgoJCQkiJmFtcDtmPWhcIj5jb2xvcmVkPC9BPilcbiI7CgoJCX0KCSAgICB9
Cgl9CglwcmludCAiPFBSRT5cbiI7CglwcmludCAmaHRtbGlmeSgkbG9neyRffSk7CglwcmludCAi
PC9QUkU+XG4iOwp9CgpzdWIgZG9Mb2coJCkgewoJbXkoJGZ1bGxuYW1lKSA9IEBfOwoJbXkgKCRk
aWZmcmV2LCAkdXB3aGVyZSwgJGZpbGVuYW1lLCAkYmFja3VybCk7CgkKCXJlYWRMb2coJGZ1bGxu
YW1lKTsKCiAgICAgICAgaHRtbF9oZWFkZXIoIkNWUyBsb2cgZm9yICR3aGVyZSIpOwoJKCR1cHdo
ZXJlID0gJHdoZXJlKSA9fiBzfChBdHRpYy8pP1teL10rJHx8OwogICAgICAgICgkZmlsZW5hbWUg
PSAkd2hlcmUpID1+IHN8Xi4qL3x8OwogICAgICAgICRiYWNrdXJsID0gJHNjcmlwdG5hbWUgLiAi
LyIgLiB1cmxlbmNvZGUoJHVwd2hlcmUpIC4gJHF1ZXJ5OwoJcHJpbnQgJmxpbmsoJGJhY2tpY29u
LCAiJGJhY2t1cmwjJGZpbGVuYW1lIiksCiAgICAgICAgICAgICAgIiA8Yj5VcCB0byAiLCAmY2xp
Y2thYmxlUGF0aCgkdXB3aGVyZSwgMSksICI8L2I+PHA+XG4iOwoJcHJpbnQgIjxBIEhSRUY9XCIj
ZGlmZlwiPlJlcXVlc3QgZGlmZiBiZXR3ZWVuIGFyYml0cmFyeSByZXZpc2lvbnM8L0E+XG4iOwoJ
cHJpbnQgIjxIUiBOT1NIQURFPlxuIjsKCWlmICgkY3VyYnJhbmNoKSB7CgkgICAgcHJpbnQgIkRl
ZmF1bHQgYnJhbmNoOiAiOwoJICAgIHByaW50ICgkcmV2c3lteyRjdXJicmFuY2h9IHx8ICRjdXJi
cmFuY2gpOwoJfQoJZWxzZSB7CgkgICAgcHJpbnQgIk5vIGRlZmF1bHQgYnJhbmNoIjsKCX0KCXBy
aW50ICI8QlI+XG4iOwoJaWYgKCRpbnB1dHtvbmx5X3dpdGhfdGFnfSkgewoJICAgIHByaW50ICJD
dXJyZW50IHRhZzogJGlucHV0e29ubHlfd2l0aF90YWd9PEJSPlxuIjsKCX0KCgl1bmRlZiAlbmFt
ZXByaW50ZWQ7CgoJZm9yIChteSAkaSA9IDA7ICRpIDw9ICQjcmV2ZGlzcGxheW9yZGVyOyAkaSsr
KSB7CgkgICAgcHJpbnQgIjxIUiBzaXplPTEgTk9TSEFERT4iOwoJICAgIHByaW50TG9nKCRyZXZk
aXNwbGF5b3JkZXJbJGldKTsKCX0KCiAgICAgICAgcHJpbnQgIjxIUiBOT1NIQURFPiI7Cglwcmlu
dCAiPEEgTkFNRT1kaWZmPlxuIjsKCXByaW50ICJUaGlzIGZvcm0gYWxsb3dzIHlvdSB0byByZXF1
ZXN0IGRpZmYncyBiZXR3ZWVuIGFueSB0d29cbiI7CglwcmludCAicmV2aXNpb25zIG9mIGEgZmls
ZS4gIFlvdSBtYXkgc2VsZWN0IGEgc3ltYm9saWMgcmV2aXNpb25cbiI7CglwcmludCAibmFtZSB1
c2luZyB0aGUgc2VsZWN0aW9uIGJveCBvciB5b3UgbWF5IHR5cGUgaW4gYSBudW1lcmljXG4iOwoJ
cHJpbnQgIm5hbWUgdXNpbmcgdGhlIHR5cGUtaW4gdGV4dCBib3guXG4iOwoJcHJpbnQgIjwvQT48
UD5cbiI7CglwcmludCAiPEZPUk0gTUVUSE9EPVwiR0VUXCIgQUNUSU9OPVwiJHtzY3JpcHR3aGVy
ZX0uZGlmZlwiIE5BTUU9XCJkaWZmX3NlbGVjdFwiPlxuIjsKICAgICAgICBmb3JlYWNoIChAc3Rp
Y2t5dmFycykgewoJICAgIHByaW50ICI8SU5QVVQgVFlQRT1ISURERU4gTkFNRT1cIiRfXCIgVkFM
VUU9XCIkaW5wdXR7JF99XCI+XG4iCgkJaWYgKGRlZmluZWQoJGlucHV0eyRffSkKCQkgICAgJiYg
KCghZGVmaW5lZCgkREVGQVVMVFZBTFVFeyRffSkKCQkgICAgICAgICB8fCAkaW5wdXR7JF99IG5l
ICRERUZBVUxUVkFMVUV7JF99KQoJCSAgICAgICAgJiYgJGlucHV0eyRffSBuZSAiIikpOwoJfQoJ
cHJpbnQgIkRpZmZzIGJldHdlZW4gXG4iOwoJcHJpbnQgIjxTRUxFQ1QgTkFNRT1cInIxXCI+XG4i
OwoJcHJpbnQgIjxPUFRJT04gVkFMVUU9XCJ0ZXh0XCIgU0VMRUNURUQ+VXNlIFRleHQgRmllbGRc
biI7CglwcmludCAkc2VsOwoJcHJpbnQgIjwvU0VMRUNUPlxuIjsKCSRkaWZmcmV2ID0gJHJldmRp
c3BsYXlvcmRlclskI3JldmRpc3BsYXlvcmRlcl07CgkkZGlmZnJldiA9ICRpbnB1dHsicjEifSBp
ZiAoZGVmaW5lZCgkaW5wdXR7InIxIn0pKTsKCXByaW50ICI8SU5QVVQgVFlQRT1cIlRFWFRcIiBT
SVpFPVwiJGlucHV0VGV4dFNpemVcIiBOQU1FPVwidHIxXCIgVkFMVUU9XCIkZGlmZnJldlwiIG9u
Q2hhbmdlPSdkb2N1bWVudC5kaWZmX3NlbGVjdC5yMS5zZWxlY3RlZEluZGV4PTAnPlxuIjsKCXBy
aW50ICIgYW5kIFxuIjsKCXByaW50ICI8U0VMRUNUIE5BTUU9XCJyMlwiPlxuIjsKCXByaW50ICI8
T1BUSU9OIFZBTFVFPVwidGV4dFwiIFNFTEVDVEVEPlVzZSBUZXh0IEZpZWxkXG4iOwoJcHJpbnQg
JHNlbDsKCXByaW50ICI8L1NFTEVDVD5cbiI7CgkkZGlmZnJldiA9ICRyZXZkaXNwbGF5b3JkZXJb
MF07CgkkZGlmZnJldiA9ICRpbnB1dHsicjIifSBpZiAoZGVmaW5lZCgkaW5wdXR7InIyIn0pKTsK
CXByaW50ICI8SU5QVVQgVFlQRT1cIlRFWFRcIiBTSVpFPVwiJGlucHV0VGV4dFNpemVcIiBOQU1F
PVwidHIyXCIgVkFMVUU9XCIkZGlmZnJldlwiIG9uQ2hhbmdlPSdkb2N1bWVudC5kaWZmX3NlbGVj
dC5yMi5zZWxlY3RlZEluZGV4PTAnPlxuIjsKICAgICAgICBwcmludCAiPEJSPlR5cGUgb2YgRGlm
ZiBzaG91bGQgYmUgYSZuYnNwOyI7CglwcmludERpZmZTZWxlY3QoMCk7CglwcmludCAiPElOUFVU
IFRZUEU9U1VCTUlUIFZBTFVFPVwiICBHZXQgRGlmZnMgIFwiPlxuIjsKCXByaW50ICI8L0ZPUk0+
XG4iOwoJcHJpbnQgIjxIUiBub3NoYWRlPlxuIjsKICAgICAgICBpZiAoQGJyYW5jaG5hbWVzKSB7
CgkgICAgcHJpbnQgIjxBIG5hbWU9YnJhbmNoPjwvQT5cbiI7CgkgICAgcHJpbnQgIjxGT1JNIE1F
VEhPRD1cIkdFVFwiIEFDVElPTj1cIiRzY3JpcHR3aGVyZVwiPlxuIjsKCSAgICBmb3JlYWNoIChA
c3RpY2t5dmFycykgewoJCW5leHQgaWYgKCRfIGVxICJvbmx5X3dpdGhfdGFnIik7CgkJbmV4dCBp
ZiAoJF8gZXEgImxvZ3NvcnQiKTsKCQlwcmludCAiPElOUFVUIFRZUEU9SElEREVOIE5BTUU9XCIk
X1wiIFZBTFVFPVwiJGlucHV0eyRffVwiPlxuIgoJCSAgICBpZiAoZGVmaW5lZCgkaW5wdXR7JF99
KQoJCSAgICAgICAgJiYgKCFkZWZpbmVkKCRERUZBVUxUVkFMVUV7JF99KQoJCQkgICAgfHwgJGlu
cHV0eyRffSBuZSAkREVGQVVMVFZBTFVFeyRffSkKCQkJJiYgJGlucHV0eyRffSBuZSAiIik7Cgkg
ICAgfQoJICAgIHByaW50ICJWaWV3IG9ubHkgQnJhbmNoOiBcbiI7CgkgICAgcHJpbnQgIjxTRUxF
Q1QgTkFNRT1cIm9ubHlfd2l0aF90YWdcIiI7CgkgICAgcHJpbnQgIiBvbmNoYW5nZT1cInN1Ym1p
dCgpXCIiIGlmICgkdXNlX2phdmFfc2NyaXB0KTsKCSAgICBwcmludCAiPlxuIjsKCSAgICBwcmlu
dCAiPE9QVElPTiBWQUxVRT1cIlwiIjsKCSAgICBwcmludCAiIFNFTEVDVEVEIiBpZiAoZGVmaW5l
ZCgkaW5wdXR7Im9ubHlfd2l0aF90YWcifSkgJiYKCQkkaW5wdXR7Im9ubHlfd2l0aF90YWcifSBl
cSAiIik7CgkgICAgcHJpbnQgIj5TaG93IGFsbCBicmFuY2hlc1xuIjsKCSAgICBmb3JlYWNoIChy
ZXZlcnNlIHNvcnQgQGJyYW5jaG5hbWVzKSB7CgkJcHJpbnQgIjxPUFRJT04iOwoJCXByaW50ICIg
U0VMRUNURUQiIGlmIChkZWZpbmVkKCRpbnB1dHsib25seV93aXRoX3RhZyJ9KQoJCQkmJiAkaW5w
dXR7Im9ubHlfd2l0aF90YWcifSBlcSAkXyk7CgkJcHJpbnQgIj4ke199XG4iOwoJICAgIH0KCSAg
ICBwcmludCAiPC9TRUxFQ1Q+XG4iOwoJICAgIHByaW50ICI8SU5QVVQgVFlQRT1TVUJNSVQgVkFM
VUU9XCIgIFZpZXcgQnJhbmNoICBcIj5cbiI7CgkgICAgcHJpbnQgIjwvRk9STT5cbiI7Cgl9Cglw
cmludCAiPEEgbmFtZT1sb2dzb3J0PjwvQT5cbiI7CglwcmludCAiPEZPUk0gTUVUSE9EPVwiR0VU
XCIgQUNUSU9OPVwiJHNjcmlwdHdoZXJlXCI+XG4iOwoJZm9yZWFjaCAoQHN0aWNreXZhcnMpIHsK
CSAgICBuZXh0IGlmICgkXyBlcSAib25seV93aXRoX3RhZyIpOwoJICAgIG5leHQgaWYgKCRfIGVx
ICJsb2dzb3J0Iik7CgkgICAgcHJpbnQgIjxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPVwiJF9cIiBW
QUxVRT1cIiRpbnB1dHskX31cIj5cbiIKCQlpZiAoZGVmaW5lZCgkaW5wdXR7JF99KQoJCSAgICAm
JiAoIWRlZmluZWQoJERFRkFVTFRWQUxVRXskX30pCgkJICAgICAgICB8fCAkaW5wdXR7JF99IG5l
ICRERUZBVUxUVkFMVUV7JF99KQoJCSAgICAmJiAkaW5wdXR7JF99IG5lICIiKTsKCX0KCXByaW50
ICJTb3J0IGxvZyBieTogXG4iOwoJcHJpbnQgIjxTRUxFQ1QgTkFNRT1cImxvZ3NvcnRcIiI7Cglw
cmludCAiIG9uY2hhbmdlPVwic3VibWl0KClcIiIgaWYgKCR1c2VfamF2YV9zY3JpcHQpOwoJcHJp
bnQgIj5cbiI7CglwcmludCAiPE9QVElPTiBWQUxVRT1jdnMiLCRsb2dzb3J0IGVxICJjdnMiID8g
IiBTRUxFQ1RFRCIgOiAiIiwgIj5Ob3Qgc29ydGVkIjsKCXByaW50ICI8T1BUSU9OIFZBTFVFPWRh
dGUiLCRsb2dzb3J0IGVxICJkYXRlIiA/ICIgU0VMRUNURUQiIDogIiIsICI+Q29tbWl0IGRhdGUi
OwoJcHJpbnQgIjxPUFRJT04gVkFMVUU9cmV2IiwkbG9nc29ydCBlcSAicmV2IiA/ICIgU0VMRUNU
RUQiIDogIiIsICI+UmV2aXNpb24iOwoJcHJpbnQgIjwvU0VMRUNUPlxuIjsKCXByaW50ICI8SU5Q
VVQgVFlQRT1TVUJNSVQgVkFMVUU9XCIgIFNvcnQgIFwiPlxuIjsKCXByaW50ICI8L0ZPUk0+XG4i
OwogICAgICAgIHByaW50ICZodG1sX2Zvb3RlcjsKCXByaW50ICI8L0JPRFk+PC9IVE1MPlxuIjsK
fQoKc3ViIGZsdXNoX2RpZmZfcm93cyAoJCQkJCkKewogICAgbXkgJGo7CiAgICBteSAoJGxlZnRD
b2xSZWYsJHJpZ2h0Q29sUmVmLCRsZWZ0Um93LCRyaWdodFJvdykgPSBAXzsKCiAgICBpZiAoIWRl
ZmluZWQoJHN0YXRlKSkgewoJcmV0dXJuOwogICAgfQoKICAgIGlmICgkc3RhdGUgZXEgIlByZUNo
YW5nZVJlbW92ZSIpIHsgICAgICAgICAgIyB3ZSBqdXN0IGdvdCByZW1vdmUtbGluZXMgYmVmb3Jl
CiAgICAgIGZvciAoJGogPSAwIDsgJGogPCAkbGVmdFJvdzsgJGorKykgewogICAgICAgICAgcHJp
bnQgICI8dHI+PHRkIGJnY29sb3I9XCIkZGlmZmNvbG9yUmVtb3ZlXCI+QCRsZWZ0Q29sUmVmWyRq
XTwvdGQ+IjsKICAgICAgICAgIHByaW50ICAiPHRkIGJnY29sb3I9XCIkZGlmZmNvbG9yRW1wdHlc
Ij4mbmJzcDs8L3RkPjwvdHI+XG4iOwogICAgICB9CiAgICB9CiAgICBlbHNpZiAoJHN0YXRlIGVx
ICJQcmVDaGFuZ2UiKSB7ICAgICAgICAgICAgICMgc3RhdGUgZXEgIlByZUNoYW5nZSIKICAgICAg
IyB3ZSBnb3QgcmVtb3ZlcyB3aXRoIHN1YnNlcXVlbnQgYWRkcwogICAgICBmb3IgKCRqID0gMDsg
JGogPCAkbGVmdFJvdyB8fCAkaiA8ICRyaWdodFJvdyA7ICRqKyspIHsgICMgZHVtcCBvdXQgYm90
aCBjb2xzCiAgICAgICAgICBwcmludCAgIjx0cj4iOwogICAgICAgICAgaWYgKCRqIDwgJGxlZnRS
b3cpIHsKCSAgICAgIHByaW50ICAiPHRkIGJnY29sb3I9XCIkZGlmZmNvbG9yQ2hhbmdlXCI+QCRs
ZWZ0Q29sUmVmWyRqXTwvdGQ+IjsKCSAgfQogICAgICAgICAgZWxzZSB7CgkgICAgICBwcmludCAg
Ijx0ZCBiZ2NvbG9yPVwiJGRpZmZjb2xvckRhcmtDaGFuZ2VcIj4mbmJzcDs8L3RkPiI7CgkgIH0K
ICAgICAgICAgIGlmICgkaiA8ICRyaWdodFJvdykgewoJICAgICAgcHJpbnQgICI8dGQgYmdjb2xv
cj1cIiRkaWZmY29sb3JDaGFuZ2VcIj5AJHJpZ2h0Q29sUmVmWyRqXTwvdGQ+IjsKCSAgfQogICAg
ICAgICAgZWxzZSB7CgkgICAgICBwcmludCAgIjx0ZCBiZ2NvbG9yPVwiJGRpZmZjb2xvckRhcmtD
aGFuZ2VcIj4mbmJzcDs8L3RkPiI7CgkgIH0KICAgICAgICAgIHByaW50ICAiPC90cj5cbiI7CiAg
ICAgIH0KICAgIH0KfQoKIyMKIyBGdW5jdGlvbiB0byBnZW5lcmF0ZSBIdW1hbiByZWFkYWJsZSBk
aWZmLWZpbGVzCiMgaHVtYW5fcmVhZGFibGVfZGlmZihTdHJpbmcgcmV2aXNpb25fdG9fcmV0dXJu
X3RvKTsKIyMKc3ViIGh1bWFuX3JlYWRhYmxlX2RpZmYoJCl7CiAgbXkgKCRpLCRkaWZmdHh0LCAk
d2hlcmVfbmQsICRmaWxlbmFtZSwgJHBhdGhuYW1lLCAkc2NyaXB0d2hlcmVfbmQpOwogIG15ICgk
ZmgsICRyZXYpID0gQF87CiAgbXkgKCRkYXRlMSwgJGRhdGUyLCAkcjFkLCAkcjJkLCAkcjFyLCAk
cjJyLCAkcmV2MSwgJHJldjIsICRzeW0xLCAkc3ltMik7CiAgbXkgKEByaWdodENvbCwgQGxlZnRD
b2wpOwoKICAoJHdoZXJlX25kID0gJHdoZXJlKSA9fiBzLy5kaWZmJC8vOwogICgkZmlsZW5hbWUg
PSAkd2hlcmVfbmQpID1+IHMvXi4qXC8vLzsKICAoJHBhdGhuYW1lID0gJHdoZXJlX25kKSA9fiBz
LyhBdHRpY1wvKT9bXlwvXSokLy87CiAgKCRzY3JpcHR3aGVyZV9uZCA9ICRzY3JpcHR3aGVyZSkg
PX4gcy8uZGlmZiQvLzsKCiAgbmF2aWdhdGVIZWFkZXIgKCRzY3JpcHR3aGVyZV9uZCwgJHBhdGhu
YW1lLCAkZmlsZW5hbWUsICRyZXYsICJkaWZmIik7CgogICMgUmVhZCBoZWFkZXIgdG8gcGljayB1
cCByZWFkIHJldmlzaW9uIGFuZCBkYXRlLCBpZiBwb3NzaWJsZQogIHdoaWxlICg8JGZoPikgewog
ICAgICAoJHIxZCwkcjFyKSA9IC9cdCguKilcdCguKikkLyBpZiAoL14tLS0gLyk7CiAgICAgICgk
cjJkLCRyMnIpID0gL1x0KC4qKVx0KC4qKSQvIGlmICgvXlwrXCtcKyAvKTsKICAgICAgbGFzdCBp
ZiAoL15cK1wrXCsgLyk7CiAgfQogIGlmIChkZWZpbmVkKCRyMXIpICYmICRyMXIgPX4gL14oXGQr
XC4pK1xkKyQvKSB7CiAgICAkcmV2MSA9ICRyMXI7CiAgICAkZGF0ZTEgPSAkcjFkOwogIH0KICBp
ZiAoZGVmaW5lZCgkcjJyKSAmJiAkcjJyID1+IC9eKFxkK1wuKStcZCskLykgewogICAgJHJldjIg
PSAkcjJyOwogICAgJGRhdGUyID0gJHIyZDsKICB9CiAgCiAgcHJpbnQgIjxoMyBhbGlnbj1jZW50
ZXI+RGlmZiBmb3IgLyR3aGVyZV9uZCBiZXR3ZWVuIHZlcnNpb24gJHJldjEgYW5kICRyZXYyPC9o
Mz5cbiI7CgogIHByaW50ICI8dGFibGUgYm9yZGVyPTAgY2VsbHNwYWNpbmc9MCBjZWxscGFkZGlu
Zz0wIHdpZHRoPVwiMTAwJVwiPlxuIjsKICBwcmludCAiPHRyIGJnY29sb3I9XCIjZmZmZmZmXCI+
XG4iOwogIHByaW50ICI8dGggd2lkdGg9XCI1MCVcIiB2YWxpZ249VE9QPiI7CiAgcHJpbnQgInZl
cnNpb24gJHJldjEiOwogIHByaW50ICIsICRkYXRlMSIgaWYgKGRlZmluZWQoJGRhdGUxKSk7CiAg
cHJpbnQgIjxicj5UYWc6ICRzeW0xXG4iIGlmICgkc3ltMSk7CiAgcHJpbnQgIjwvdGg+XG4iOwog
IHByaW50ICI8dGggd2lkdGg9XCI1MCVcIiB2YWxpZ249VE9QPiI7CiAgcHJpbnQgInZlcnNpb24g
JHJldjIiOwogIHByaW50ICIsICRkYXRlMiIgaWYgKGRlZmluZWQoJGRhdGUyKSk7CiAgcHJpbnQg
Ijxicj5UYWc6ICRzeW0yXG4iIGlmICgkc3ltMSk7CiAgcHJpbnQgIjwvdGg+XG4iOwoKICBteSAk
ZnMgPSAiPGZvbnQgZmFjZT1cIiRkaWZmZm9udGZhY2VcIiBzaXplPVwiJGRpZmZmb250c2l6ZVwi
PiI7CiAgbXkgJGZlID0gIjwvZm9udD4iOwoKICBteSAkbGVmdFJvdyA9IDA7CiAgbXkgJHJpZ2h0
Um93ID0gMDsKICBteSAoJG9sZGxpbmUsICRuZXdsaW5lLCAkZnVubmFtZSwgJGRpZmZjb2RlLCAk
cmVzdCk7CgogICMgUHJvY2VzcyBkaWZmIHRleHQKICAjIFRoZSBkaWZmcm93cyBhcmUgY291bGQg
bWFrZSBleGNlbGxlbnQgdXNlIG9mCiAgIyBjYXNjYWRpbmcgc3R5bGUgc2hlZXRzIGJlY2F1c2Ug
d2UndmUgdG8gc2V0IHRoZQogICMgZm9udCBhbmQgY29sb3IgZm9yIGVhY2ggcm93LiBhbnlvbmUg
Li4uPwogICMjIyMKICB3aGlsZSAoPCRmaD4pIHsKICAgICAgJGRpZmZ0eHQgPSAkXzsKICAgICAg
CiAgICAgIGlmICgkZGlmZnR4dCA9fiAvXkBALykgewoJICAoJG9sZGxpbmUsJG5ld2xpbmUsJGZ1
bm5hbWUpID0gJGRpZmZ0eHQgPX4gL0BAIFwtKFswLTldKykuKlwrKFswLTldKykuKkBAKC4qKS87
CiAgICAgICAgICBwcmludCAgIjx0ciBiZ2NvbG9yPVwiJGRpZmZjb2xvckhlYWRpbmdcIj48dGQg
d2lkdGg9XCI1MCVcIj4iOwoJICBwcmludCAgIjx0YWJsZSB3aWR0aD1cIjEwMCVcIiBib3JkZXI9
MSBjZWxscGFkZGluZz01Pjx0cj48dGQ+PGI+TGluZSAkb2xkbGluZTwvYj4iOwoJICBwcmludCAg
IiZuYnNwOzxmb250IHNpemU9LTE+JGZ1bm5hbWU8L2ZvbnQ+PC90ZD48L3RyPjwvdGFibGU+IjsK
ICAgICAgICAgIHByaW50ICAiPC90ZD48dGQgd2lkdGg9XCI1MCVcIj4iOwoJICBwcmludCAgIjx0
YWJsZSB3aWR0aD1cIjEwMCVcIiBib3JkZXI9MSBjZWxscGFkZGluZz01Pjx0cj48dGQ+PGI+TGlu
ZSAkbmV3bGluZTwvYj4iOwoJICBwcmludCAgIiZuYnNwOzxmb250IHNpemU9LTE+JGZ1bm5hbWU8
L2ZvbnQ+PC90ZD48L3RyPjwvdGFibGU+IjsKCSAgcHJpbnQgICI8L3RkPlxuIjsKCSAgJHN0YXRl
ID0gImR1bXAiOwoJICAkbGVmdFJvdyA9IDA7CgkgICRyaWdodFJvdyA9IDA7CiAgICAgIH0KICAg
ICAgZWxzZSB7CgkgICgkZGlmZmNvZGUsJHJlc3QpID0gJGRpZmZ0eHQgPX4gL14oWy0rIF0pKC4q
KS87CgkgICRfID0gc3BhY2VkSHRtbFRleHQgKCRyZXN0KTsKCgkgICMgQWRkIGZvbnRmYWNlLCBz
aXplCgkgICRfID0gIiRmcyZuYnNwOyRfJGZlIjsKCSAgCgkgICMjIyMjIyMjIwoJICAjIGxpdHRs
ZSBzdGF0ZSBtYWNoaW5lIHRvIHBhcnNlIHVuaWZpZWQtZGlmZiBvdXRwdXQgKEhlbiwgemVsbGVy
QHRoaW5rLmRlKQoJICAjIGluIG9yZGVyIHRvIGdldCBzb21lIG5pY2UgJ2VkaWZmJy1tb2RlIG91
dHB1dAoJICAjIHN0YXRlczoKCSAgIyAgImR1bXAiICAgICAgICAgICAgIC0ganVzdCBkdW1wIHRo
ZSB2YWx1ZQoJICAjICAiUHJlQ2hhbmdlUmVtb3ZlIiAgLSB3ZSBiZWdhbiB3aXRoICctJyAuLiBz
byB0aGlzIGNvdWxkIGJlIHRoZSBzdGFydCBvZiBhICdjaGFuZ2UnIGFyZWEgb3IganVzdCByZW1v
dmUKCSAgIyAgIlByZUNoYW5nZSIgICAgICAgIC0gb2tleSwgd2UgZ290IHNldmVyYWwgJy0nIGxp
bmVzIGFuZCBtb3ZlZCB0byAnKycgbGluZXMgLT4gdGhpcyBpcyBhIGNoYW5nZSBibG9jawoJICAj
IyMjIyMjIyMjCgoJICBpZiAoJGRpZmZjb2RlIGVxICcrJykgewoJICAgICAgaWYgKCRzdGF0ZSBl
cSAiZHVtcCIpIHsgICMgJ2NoYW5nZScgbmV2ZXIgYmVnaW5zIHdpdGggJysnOiBqdXN0IGR1bXAg
b3V0IHZhbHVlCgkJICBwcmludCAgIjx0cj48dGQgYmdjb2xvcj1cIiRkaWZmY29sb3JFbXB0eVwi
PiZuYnNwOzwvdGQ+PHRkIGJnY29sb3I9XCIkZGlmZmNvbG9yQWRkXCI+JF88L3RkPjwvdHI+XG4i
OwoJICAgICAgfQoJICAgICAgZWxzZSB7ICAgICAgICAgICAgICAgICAgICMgd2UgZ290IG1pbnVz
IGJlZm9yZQoJCSAgJHN0YXRlID0gIlByZUNoYW5nZSI7CgkJICAkcmlnaHRDb2xbJHJpZ2h0Um93
KytdID0gJF87CgkgICAgICB9CgkgIH0gCgkgIGVsc2lmICgkZGlmZmNvZGUgZXEgJy0nKSB7Cgkg
ICAgICAkc3RhdGUgPSAiUHJlQ2hhbmdlUmVtb3ZlIjsKCSAgICAgICRsZWZ0Q29sWyRsZWZ0Um93
KytdID0gJF87CiAgICAgICAgfQogICAgICAgIGVsc2UgeyAgIyBlbXB0eSBkaWZmY29kZQogICAg
ICAgICAgICBmbHVzaF9kaWZmX3Jvd3MgXEBsZWZ0Q29sLCBcQHJpZ2h0Q29sLCAkbGVmdFJvdywg
JHJpZ2h0Um93OwoJICAgICAgcHJpbnQgICI8dHI+PHRkPiRfPC90ZD48dGQ+JF88L3RkPjwvdHI+
XG4iOwoJICAgICAgJHN0YXRlID0gImR1bXAiOwoJICAgICAgJGxlZnRSb3cgPSAwOwoJICAgICAg
JHJpZ2h0Um93ID0gMDsKCSAgfQogICAgICB9CiAgfQogIGZsdXNoX2RpZmZfcm93cyBcQGxlZnRD
b2wsIFxAcmlnaHRDb2wsICRsZWZ0Um93LCAkcmlnaHRSb3c7CgogICMgc3RhdGUgaXMgZW1wdHkg
aWYgd2UgZGlkbid0IGhhdmUgYW55IGNoYW5nZQogIGlmICghJHN0YXRlKSB7CiAgICAgIHByaW50
ICI8dHI+PHRkIGNvbHNwYW49Mj4mbmJzcDs8L3RkPjwvdHI+IjsKICAgICAgcHJpbnQgIjx0ciBi
Z2NvbG9yPVwiJGRpZmZjb2xvckVtcHR5XCIgPiI7CiAgICAgIHByaW50ICI8dGQgY29sc3Bhbj0y
IGFsaWduPWNlbnRlcj48Yj4tIE5vIHZpZXdhYmxlIENoYW5nZSAtPC9iPjwvdGQ+PC90cj4iOwog
IH0KICBwcmludCAgIjwvdGFibGU+IjsKICBjbG9zZSgkZmgpOwoKICBwcmludCAiPGJyPjxociBu
b3NoYWRlIHdpZHRoPVwiMTAwJVwiPlxuIjsKCiAgcHJpbnQgIjx0YWJsZSBib3JkZXI9MD4iOwoK
ICBwcmludCAiPHRyPjx0ZD4iOwogICMgcHJpbnQgbGVnZW5kCiAgcHJpbnQgIjx0YWJsZSBib3Jk
ZXI9MT48dHI+PHRkPiI7CiAgcHJpbnQgICJMZWdlbmQ6PGJyPjx0YWJsZSBib3JkZXI9MCBjZWxs
c3BhY2luZz0wIGNlbGxwYWRkaW5nPTE+XG4iOwogIHByaW50ICAiPHRyPjx0ZCBhbGlnbj1jZW50
ZXIgYmdjb2xvcj1cIiRkaWZmY29sb3JSZW1vdmVcIj5SZW1vdmVkIGZyb20gdi4kcmV2MTwvdGQ+
PHRkIGJnY29sb3I9XCIkZGlmZmNvbG9yRW1wdHlcIj4mbmJzcDs8L3RkPjwvdHI+IjsKICBwcmlu
dCAgIjx0ciBiZ2NvbG9yPVwiJGRpZmZjb2xvckNoYW5nZVwiPjx0ZCBhbGlnbj1jZW50ZXIgY29s
c3Bhbj0yPmNoYW5nZWQgbGluZXM8L3RkPjwvdHI+IjsKICBwcmludCAgIjx0cj48dGQgYmdjb2xv
cj1cIiRkaWZmY29sb3JFbXB0eVwiPiZuYnNwOzwvdGQ+PHRkIGFsaWduPWNlbnRlciBiZ2NvbG9y
PVwiJGRpZmZjb2xvckFkZFwiPkFkZGVkIGluIHYuJHJldjI8L3RkPjwvdHI+IjsKICBwcmludCAg
IjwvdGFibGU+PC90ZD48L3RyPjwvdGFibGU+XG4iOwoKICBwcmludCAiPHRkPiI7CiAgIyBQcmlu
dCBmb3JtYXQgc2VsZWN0b3IKICBwcmludCAiPEZPUk0gTUVUSE9EPVwiR0VUXCIgQUNUSU9OPVwi
JHtzY3JpcHR3aGVyZX1cIj5cbiI7CiAgZm9yZWFjaCBteSAkdmFyIChrZXlzICVpbnB1dCkgewog
ICAgbmV4dCBpZiAoJHZhciBlcSAiZiIpOwogICAgbmV4dCBpZiAoZGVmaW5lZCgkREVGQVVMVFZB
TFVFeyR2YXJ9KQoJICAgICAmJiAkREVGQVVMVFZBTFVFeyR2YXJ9IGVxICRpbnB1dHskdmFyfSk7
CiAgICBwcmludCAiPElOUFVUIFRZUEU9SElEREVOIE5BTUU9XCIiLHVybGVuY29kZSgkdmFyKSwi
XCIgVkFMVUU9XCIiLAoJICAgIHVybGVuY29kZSgkaW5wdXR7JHZhcn0pLCJcIj5cbiI7CiAgfQog
IHByaW50RGlmZlNlbGVjdCgkdXNlX2phdmFfc2NyaXB0KTsKICBwcmludCAiPElOUFVUIFRZUEU9
U1VCTUlUIFZBTFVFPVwiU2hvd1wiPlxuIjsKICBwcmludCAiPC9GT1JNPlxuIjsKICBwcmludCAi
PC90ZD4iOwoKICBwcmludCAiPC90cj48L3RhYmxlPiI7Cn0KCnN1YiBuYXZpZ2F0ZUhlYWRlciAo
JCQkJCQpIHsKICAgIG15ICgkc3doZXJlLCRwYXRoLCRmaWxlbmFtZSwkcmV2LCR0aXRsZSkgPSBA
XzsKICAgICRzd2hlcmUgPSAiIiBpZiAoJHN3aGVyZSBlcSAkc2NyaXB0d2hlcmUpOwogICAgJHN3
aGVyZSA9IHVybGVuY29kZSgkZmlsZW5hbWUpIGlmICgkc3doZXJlIGVxICIiKTsKICAgIHByaW50
ICI8XCFET0NUWVBFIEhUTUwgUFVCTElDIFwiLS8vVzNDLy9EVEQgSFRNTCA0LjAgVHJhbnNpdGlv
bmFsLy9FTlwiPiI7CiAgICBwcmludCAiPEhUTUw+XG48SEVBRD5cbiI7CiAgICBwcmludCAnPCEt
LSBoZW5uZXJpayBDVlN3ZWIgJFJldmlzaW9uOiAxLjExMiAkIC0tPic7CiAgICBwcmludCAiXG48
VElUTEU+JHBhdGgkZmlsZW5hbWUgLSAkdGl0bGUgLSAkcmV2PC9USVRMRT48L0hFQUQ+XG4iOwog
ICAgcHJpbnQgICI8Qk9EWSBCR0NPTE9SPVwiJGJhY2tjb2xvclwiPlxuIjsKICAgIHByaW50ICI8
dGFibGUgd2lkdGg9XCIxMDAlXCIgYm9yZGVyPTAgY2VsbHNwYWNpbmc9MCBjZWxscGFkZGluZz0x
IGJnY29sb3I9XCIkbmF2aWdhdGlvbkhlYWRlckNvbG9yXCI+IjsKICAgIHByaW50ICI8dHIgdmFs
aWduPWJvdHRvbT48dGQ+IjsKICAgIHByaW50ICAiPGEgaHJlZj1cIiRzd2hlcmUkcXVlcnkjcmV2
JHJldlwiPiRiYWNraWNvbiI7CiAgICBwcmludCAiPC9hPiA8Yj5SZXR1cm4gdG8gIiwgJmxpbmso
IiRmaWxlbmFtZSIsIiRzd2hlcmUkcXVlcnkjcmV2JHJldiIpLCIgQ1ZTIGxvZyI7CiAgICBwcmlu
dCAiPC9iPiAkZmlsZWljb248L3RkPiI7CiAgICAKICAgIHByaW50ICI8dGQgYWxpZ249cmlnaHQ+
JGRpcmljb24gPGI+VXAgdG8gIiwgJmNsaWNrYWJsZVBhdGgoJHBhdGgsIDEpLCAiPC9iPjwvdGQ+
IjsKICAgIHByaW50ICI8L3RyPjwvdGFibGU+IjsKfQoKc3ViIHBsdXJhbF93cml0ZSAoJCQpCnsK
ICAgIG15ICgkbnVtLCR0ZXh0KSA9IEBfOwogICAgaWYgKCRudW0gIT0gMSkgewoJJHRleHQgPSAk
dGV4dCAuICJzIjsKICAgIH0KICAgIGlmICgkbnVtID4gMCkgewoJcmV0dXJuICRudW0gLiAiICIg
LiAkdGV4dDsKICAgIH0KICAgIGVsc2UgewoJcmV0dXJuICIiOwogICAgfQp9CgojIwojIHByaW50
IHJlYWRhYmxlIHRpbWVzdGFtcCBpbiB0ZXJtcyBvZgojICcuLnRpbWUgYWdvJwojIEguIFplbGxl
ciA8emVsbGVyQHRoaW5rLmRlPgojIwpzdWIgcmVhZGFibGVUaW1lKCQkKSB7CiAgICBteSAoJGks
ICRicmVhaywgJHJldHZhbCk7CiAgICBteSAoJHNlY3MsJGxvbmcpID0gQF87CgogICAgIyB0aGlz
IGZ1bmN0aW9uIHdvcmtzIGNvcnJlY3QgZm9yIHRpbWUgPj0gMiBzZWNvbmRzCiAgICBpZiAoJHNl
Y3MgPCAyKSB7CglyZXR1cm4gInZlcnkgbGl0dGxlIHRpbWUiOwogICAgfQoKICAgIG15ICVkZXNj
ID0gKDEgLCAnc2Vjb25kJywKCQkgICA2MCwgJ21pbnV0ZScsCgkJICAgMzYwMCwgJ2hvdXInLAoJ
CSAgIDg2NDAwLCAnZGF5JywKCQkgICA2MDQ4MDAsICd3ZWVrJywKCQkgICAyNjI4MDAwLCAnbW9u
dGgnLAoJCSAgIDMxNTM2MDAwLCAneWVhcicpOwogICAgbXkgQGJyZWFrcyA9IHNvcnQgeyRhIDw9
PiAkYn0ga2V5cyAlZGVzYzsKICAgICRpID0gMDsKICAgIHdoaWxlICgkaSA8PSAkI2JyZWFrcyAm
JiAkc2VjcyA+PSAyICogJGJyZWFrc1skaV0pIHsgCgkkaSsrOwogICAgfQogICAgJGktLTsKICAg
ICRicmVhayA9ICRicmVha3NbJGldOwogICAgJHJldHZhbCA9IHBsdXJhbF93cml0ZShpbnQgKCRz
ZWNzIC8gJGJyZWFrKSwgJGRlc2N7IiRicmVhayJ9KTsKCiAgICBpZiAoJGxvbmcgPT0gMSAmJiAk
aSA+IDApIHsKCW15ICRyZXN0ID0gJHNlY3MgJSAkYnJlYWs7CgkkaS0tOwoJJGJyZWFrID0gJGJy
ZWFrc1skaV07CglteSAkcmVzdHRpbWUgPSBwbHVyYWxfd3JpdGUoaW50ICgkcmVzdCAvICRicmVh
ayksIAoJCQkJJGRlc2N7IiRicmVhayJ9KTsKCWlmICgkcmVzdHRpbWUpIHsKCSAgICAkcmV0dmFs
ID0gJHJldHZhbCAuICIsICIgLiAkcmVzdHRpbWU7Cgl9CiAgICB9CgogICAgcmV0dXJuICRyZXR2
YWw7Cn0KCiMjCiMgY2xpY2thYmxlUGF0aChTdHJpbmcgcGF0aG5hbWUsIGJvb2xlYW4gbGFzdF9p
dGVtX2NsaWNrYWJsZSkKIwojIHJldHVybnMgYSBodG1sLWlmaWVkIHBhdGggd2hlcmVhcyBlYWNo
IGRpcmVjdG9yeSBpcyBhIGxpbmsgZm9yCiMgZmFzdGVyIG5hdmlnYXRpb24uIGxhc3RfaXRlbV9j
bGlja2FibGUgY29udHJvbHMgd2hldGhlciB0aGUKIyBiYXNlbmFtZSAobGFzdCBkaXJlY3Rvcnkv
ZmlsZSkgaXMgYSBsaW5rIGFzIHdlbGwKIyMKc3ViIGNsaWNrYWJsZVBhdGgoJCQpIHsKICAgIG15
ICgkcGF0aG5hbWUsJGNsaWNrTGFzdCkgPSBAXzsgICAgCiAgICBteSAkcmV0dmFsID0gJyc7CiAg
ICAKICAgIGlmICgkcGF0aG5hbWUgZXEgJy8nKSB7CgkjIHRoaXMgc2hvdWxkIG5ldmVyIGhhcHBl
biAtIGNob29zZUNWU1Jvb3QoKSBpcwoJIyBpbnRlbmRlZCB0byBkbyB0aGlzCgkkcmV0dmFsID0g
IlskY3ZzdHJlZV0iOwogICAgfQogICAgZWxzZSB7CgkkcmV0dmFsID0gJHJldHZhbCAuICIgPGEg
aHJlZj1cIiR7c2NyaXB0bmFtZX0vJHtxdWVyeX0jZGlybGlzdFwiPlskY3ZzdHJlZV08L2E+IjsK
CW15ICR3aGVyZXBhdGggPSAnJzsKCW15ICgkbGFzdHNsYXNoKSA9ICRwYXRobmFtZSA9fiBtfC8k
fDsKCWZvcmVhY2ggKHNwbGl0KC9cLy8sICRwYXRobmFtZSkpIHsKCSAgICAkcmV0dmFsID0gJHJl
dHZhbCAuICIgLyAiOwoJICAgICR3aGVyZXBhdGggPSAkd2hlcmVwYXRoIC4gJy8nIC4gJF87Cgkg
ICAgbXkgKCRsYXN0KSA9ICIkd2hlcmVwYXRoLyIgZXEgIi8kcGF0aG5hbWUiCgkJfHwgIiR3aGVy
ZXBhdGgiIGVxICIvJHBhdGhuYW1lIjsKCSAgICBpZiAoJGNsaWNrTGFzdCB8fCAhJGxhc3QpIHsK
CQkkcmV0dmFsID0gJHJldHZhbCAuICI8YSBocmVmPVwiJHtzY3JpcHRuYW1lfSIKCQkgICAgLiB1
cmxlbmNvZGUoJHdoZXJlcGF0aCkKCQkgICAgLiAoISRsYXN0IHx8ICRsYXN0c2xhc2ggPyAnLycg
OiAnJykKCQkgICAgLiAke3F1ZXJ5fQoJICAgICAgICAgICAgLiAoISRsYXN0IHx8ICRsYXN0c2xh
c2ggPyAiI2Rpcmxpc3QiIDogIiIpCgkJICAgIC4gIlwiPiRfPC9hPiI7CgkgICAgfQoJICAgIGVs
c2UgeyAjIGRvIG5vdCBtYWtlIGEgbGluayB0byB0aGUgY3VycmVudCBkaXIKCQkkcmV0dmFsID0g
JHJldHZhbCAuICAkXzsKCSAgICB9Cgl9CiAgICB9CiAgICByZXR1cm4gJHJldHZhbDsKfQoKc3Vi
IGNob29zZUNWU1Jvb3QoKSB7CiAgICBteSBAZm9vOwogICAgZm9yZWFjaCAoc29ydCBrZXlzICVD
VlNST09UKSB7CglpZiAoLWQgJENWU1JPT1R7JF99KSB7CgkgICAgcHVzaChAZm9vLCAkXyk7Cgl9
CiAgICB9CiAgICBpZiAoQGZvbyA+IDEpIHsKCW15ICgkayk7CglwcmludCAiPGZvcm0gbWV0aG9k
PVwiR0VUXCIgYWN0aW9uPVwiJHtzY3JpcHR3aGVyZX1cIj5cbiI7Cglmb3JlYWNoICRrIChrZXlz
ICVpbnB1dCkgewoJICAgIHByaW50ICI8aW5wdXQgdHlwZT1oaWRkZW4gTkFNRT0kayBWQUxVRT0k
aW5wdXR7JGt9PlxuIiAKCQlpZiAoJGlucHV0eyRrfSkgJiYgKCRrIG5lICJjdnNyb290Iik7Cgl9
CgkjIEZvcm0tRWxlbWVudHMgbG9vayB3aWVyZCBpbiBOZXRzY2FwZSBpZiB0aGUgYmFja2dyb3Vu
ZAoJIyBpc24ndCBncmF5IGFuZCB0aGUgZm9ybSBlbGVtZW50cyBhcmUgbm90IHBsYWNlZAoJIyB3
aXRoaW4gYSB0YWJsZSAuLi4KCXByaW50ICI8dGFibGU+PHRyPiI7CglwcmludCAiPHRkPkNWUyBS
b290OjwvdGQ+IjsKCXByaW50ICI8dGQ+XG48c2VsZWN0IG5hbWU9XCJjdnNyb290XCIiOwoJcHJp
bnQgIiBvbmNoYW5nZT1cInN1Ym1pdCgpXCIiIGlmICgkdXNlX2phdmFfc2NyaXB0KTsKCXByaW50
ICI+XG4iOwoJZm9yZWFjaCAkayAoQGZvbykgewoJICAgIHByaW50ICI8b3B0aW9uIHZhbHVlPVwi
JGtcIiI7CgkgICAgcHJpbnQgIiBzZWxlY3RlZCIgaWYgKCIkayIgZXEgIiRjdnN0cmVlIik7Cgkg
ICAgcHJpbnQgIj4iIC4gKCRDVlNST09UZGVzY3J7IiRrIn0gPyAkQ1ZTUk9PVGRlc2NyeyIkayJ9
IDoKCSAgICAJCSRrKS4gIjwvb3B0aW9uPlxuIjsKCX0KCXByaW50ICI8L3NlbGVjdD5cbjwvdGQ+
IjsKCXByaW50ICI8dGQ+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPVwiR29cIj48L3RkPiI7Cglw
cmludCAiPC90cj48L3RhYmxlPjwvZm9ybT4iOwogICAgfQogICAgZWxzZSB7CgkjIG5vIGNob2lj
ZSAuLgoJcHJpbnQgIkNWUyBSb290OiA8Yj5bJGN2c3RyZWVdPC9iPiI7CiAgICB9Cn0KCnN1YiBj
aG9vc2VNaXJyb3IoKSB7CiAgICBteSAoJG1pcnJvciwkbW9yZW1pcnJvcnMpOwogICAgJG1vcmVt
aXJyb3JzID0gMDsKICAgICMgVGhpcyBjb2RlIGNvbWVzIGZyb20gdGhlIG9yaWdpbmFsIEJTRC1j
dnN3ZWIKICAgICMgYW5kIG1heSBub3QgYmUgdXNlZnVsIGZvciB5b3VyIHNpdGU7IElmIHlvdSBk
b24ndAogICAgIyBzZXQgJU1JUlJPUlMgdGhpcyB3b24ndCBzaG93IHVwLCBhbnl3YXkKICAgICMK
ICAgICMgU2hvdWxkIHBlcmhhcHMgZXhsdWRlIHRoZSBjdXJyZW50IHNpdGUgc29tZWhvdy4uIAog
ICAgaWYgKGtleXMgJU1JUlJPUlMpIHsKCXByaW50ICJcblRoaXMgY3Zzd2ViIGlzIG1pcnJvcmVk
IGluOlxuIjsKCWZvcmVhY2ggJG1pcnJvciAoa2V5cyAlTUlSUk9SUykgewoJICAgIHByaW50ICIs
ICIgaWYgKCRtb3JlbWlycm9ycyk7CgkgICAgcHJpbnQgcXEoPGEgaHJlZj0iJE1JUlJPUlN7JG1p
cnJvcn0iPiRtaXJyb3I8L0E+XG4pOwoJICAgICRtb3JlbWlycm9ycyA9IDE7Cgl9CglwcmludCAi
PHA+XG4iOwogICAgfQp9CgpzdWIgZmlsZVNvcnRDbXAoKSB7CiAgICBteSAoJGNvbXApID0gMDsK
ICAgIG15ICgkYywkZCwkYWYsJGJmKTsKCiAgICAoJGFmID0gJGEpID1+IHMvLHYkLy87CiAgICAo
JGJmID0gJGIpID1+IHMvLHYkLy87CiAgICBteSAoJHJldjEsJGRhdGUxLCRsb2cxLCRhdXRob3Ix
LCRmaWxlbmFtZTEpID0gQHskZmlsZWluZm97JGFmfX0KICAgICAgICBpZiAoZGVmaW5lZCgkZmls
ZWluZm97JGFmfSkpOwogICAgbXkgKCRyZXYyLCRkYXRlMiwkbG9nMiwkYXV0aG9yMiwkZmlsZW5h
bWUyKSA9IEB7JGZpbGVpbmZveyRiZn19CiAgICAgICAgaWYgKGRlZmluZWQoJGZpbGVpbmZveyRi
Zn0pKTsKCiAgICBpZiAoZGVmaW5lZCgkZmlsZW5hbWUxKSAmJiBkZWZpbmVkKCRmaWxlbmFtZTIp
ICYmICRhZiBlcSAkZmlsZW5hbWUxICYmICRiZiBlcSAkZmlsZW5hbWUyKSB7CgkjIFR3byBmaWxl
cwoJJGNvbXAgPSAtcmV2Y21wKCRyZXYxLCAkcmV2MikgaWYgKCRieXJldiAmJiAkcmV2MSAmJiAk
cmV2Mik7CgkkY29tcCA9ICgkZGF0ZTIgPD0+ICRkYXRlMSkgaWYgKCRieWRhdGUgJiYgJGRhdGUx
ICYmICRkYXRlMik7CgkkY29tcCA9ICgkbG9nMSBjbXAgJGxvZzIpIGlmICgkYnlsb2cgJiYgJGxv
ZzEgJiYgJGxvZzIpOwoJJGNvbXAgPSAoJGF1dGhvcjEgY21wICRhdXRob3IyKSBpZiAoJGJ5YXV0
aG9yICYmICRhdXRob3IxICYmICRhdXRob3IyKTsKICAgIH0KICAgIGlmICgkY29tcCA9PSAwKSB7
CgkjIERpcmVjdG9yaWVzIGZpcnN0LCB0aGVuIHNvcnRlZCBvbiBuYW1lIGlmIG5vIG90aGVyIHNv
cnQgY3JpdGVyYQoJIyBhdmFpbGFibGUuCglteSAkYWQgPSAoKC1kICIkZnVsbG5hbWUvJGEiKT8i
RCI6IkYiKTsKCW15ICRiZCA9ICgoLWQgIiRmdWxsbmFtZS8kYiIpPyJEIjoiRiIpOwoJKCRjPSRh
KSA9fiBzfC4qL3x8OwoJKCRkPSRiKSA9fiBzfC4qL3x8OwoJJGNvbXAgPSAoIiRhZCRjIiBjbXAg
IiRiZCRkIik7CiAgICB9CiAgICByZXR1cm4gJGNvbXA7Cn0KCiMgbWFrZSBBIHVybCBmb3IgZG93
bmxvYWRpbmcKc3ViIGRvd25sb2FkX3VybCgkJCQpIHsKICAgIG15ICgkdXJsLCRyZXZpc2lvbiwk
bWltZXR5cGUpID0gQF87CgogICAgJHJldmlzaW9uID1+IHMvXC4wXC4vLi87CgogICAgaWYgKGRl
ZmluZWQoJGNoZWNrb3V0X21hZ2ljKQoJJiYgKCFkZWZpbmVkKCRtaW1ldHlwZSkgfHwgJG1pbWV0
eXBlIG5lICJ0ZXh0L3gtY3Zzd2ViLW1hcmt1cCIpKSB7CglteSAoJHBhdGgpOwoJKCRwYXRoID0g
JHdoZXJlKSA9fiBzfC9bXi9dKiR8L3w7CgkkdXJsID0gIiRzY3JpcHRuYW1lLyRjaGVja291dE1h
Z2ljLyR7cGF0aH0kdXJsIjsKICAgIH0KICAgICR1cmwgLj0gIj9yZXY9JHJldmlzaW9uIjsKICAg
ICR1cmwgLj0gIiZhbXA7Y29udGVudC10eXBlPSRtaW1ldHlwZSIgaWYgKGRlZmluZWQoJG1pbWV0
eXBlKSk7CgogICAgcmV0dXJuICR1cmw7Cn0KCiMgUHJlc2VudHMgYSBsaW5rIHRvIGRvd25sb2Fk
IHRoZSAKIyBzZWxlY3RlZCByZXZpc2lvbgpzdWIgZG93bmxvYWRfbGluaygkJCQkKSB7CiAgICBt
eSAoJHVybCwkcmV2aXNpb24sJHRleHRsaW5rLCRtaW1ldHlwZSkgPSBAXzsKICAgIG15ICgkZnVs
bHVybCkgPSBkb3dubG9hZF91cmwoJHVybCwkcmV2aXNpb24sJG1pbWV0eXBlKTsKICAgIG15ICgk
cGFyZW4pID0gJHRleHRsaW5rID1+IC9eXCgvOwogICAgJHRleHRsaW5rID1+IHMvXlwoLy8gaWYg
KCRwYXJlbik7CiAgICAkdGV4dGxpbmsgPX4gcy9cKSQvLyBpZiAoJHBhcmVuKTsKICAgIHByaW50
ICIoIiBpZiAoJHBhcmVuKTsKICAgIHByaW50ICI8QSBIUkVGPVwiJGZ1bGx1cmwiOwogICAgcHJp
bnQgJGJhcmVxdWVyeTsKICAgIHByaW50ICJcIiI7CiAgICBpZiAoJG9wZW5fZXh0ZXJuX3dpbmRv
dyAmJiAoIWRlZmluZWQoJG1pbWV0eXBlKSB8fCAkbWltZXR5cGUgbmUgInRleHQveC1jdnN3ZWIt
bWFya3VwIikpIHsKCXByaW50ICIgdGFyZ2V0PVwiY3ZzX2NoZWNrb3V0XCIiOwoJIyB3ZSBzaG91
bGQgaGF2ZQoJIyAgICdpZiAoZG9jdW1lbnQuY3Zzd2luPT1udWxsKSBkb2N1bWVudC5jdnN3aW49
d2luZG93Lm9wZW4oLi4uJwoJIyBpbiBvcmRlciB0byBhbGxvdyB0aGUgdXNlciB0byByZXNpemUg
dGhlIHdpbmRvdzsgb3RoZXJ3aXNlCgkjIHRoZSB1c2VyIG1heSByZXNpemUgdGhlIHdpbmRvdywg
YnV0IG9uIG5leHQgY2hlY2tvdXQgLSB6YXAgLQoJIyBpdHMgb3JpZ2luYWwgKGNvbmZpZ3VyZWQg
cy4gY3Zzd2ViLmNvbmYpIHNpemUgaXMgYmFjayBhZ2FpbgoJIyAuLiBhbm5veWluZyAoaWYgJGV4
dGVybl93aW5kb3dfKHdpZHRofGhlaWdodCkgaXMgZGVmaW5lZCkKCSMgYnV0IHRoaXMgaWYgKC4u
KSBzb2x1dGlvbiBpcyBmYXIgZnJvbSBwZXJmZWN0CgkjIHdoYXQgd2UgbmVlZCB0byBkbyBhcyB3
ZWxsIGlzCgkjIDEpIHNhdmUgY3Zzd2luIGluIGFuIGludmlzaWJsZSBmcmFtZSB0aGF0IGFsd2F5
cyBleGlzdHMKCSMgICAgKGRvY3VtZW50LmN2c3dpbiB3aWxsIGJlIHZvaWQgb24gbmV4dCBsb2Fk
KQoJIyAyKSBvbiBjbG9zZSBvZiB0aGUgY3ZzX2NoZWNrb3V0IC0gd2luZG93IHNldCB0aGUgY3Zz
d2luCgkjICAgIHZhcmlhYmxlIHRvICdudWxsJyBhZ2FpbiAtIHNvIHRoYXQgaXQgd2lsbCBiZQoJ
IyAgICByZW9wZW5lbmQgd2l0aCB0aGUgY29uZmlndXJlZCBzaXplCgkjIGFueW9uZSBhIEphdmFT
Y3JpcHQgcHJvZ3JhbW1lciA/CgkjIC4uIHNvIGhlcmUgd2l0aG91dCBpZiAoLi4pOgoJIyBjdXJy
ZW50bHksIHRoZSBiZXN0IHdheSBpcyB0byBjb21tZW50IG91dCB0aGUgc2l6ZSBwYXJhbWV0ZXJz
CgkjICgkZXh0ZXJuX3dpbmRvdy4uLikgaW4gY3Zzd2ViLmNvbmYuCglpZiAoJHVzZV9qYXZhX3Nj
cmlwdCkgewoJICAgIHByaW50ICIgb25DbGljaz1cIndpbmRvdy5vcGVuKCckZnVsbHVybCcsJ2N2
c19jaGVja291dCcsIjsKCSAgICBwcmludCAiJ3Jlc2l6ZWFibGUsc2Nyb2xsYmFycyI7CgkgICAg
cHJpbnQgIixzdGF0dXMsdG9vbGJhciIgaWYgKGRlZmluZWQoJG1pbWV0eXBlKQoJICAgICAgICAm
JiAkbWltZXR5cGUgZXEgInRleHQvaHRtbCIpOwoJICAgIHByaW50ICIsd2lkdGg9JGV4dGVybl93
aW5kb3dfd2lkdGgiIGlmIChkZWZpbmVkKCRleHRlcm5fd2luZG93X3dpZHRoKSk7CgkgICAgcHJp
bnQgIixoZWlnaHQ9JGV4dGVybl93aW5kb3dfaGVpZ2h0IiBpZiAoZGVmaW5lZCgkZXh0ZXJuX3dp
bmRvd19oZWlnaHQpKTsKCSAgICBwcmludCInKTtcIiI7Cgl9CiAgICB9CiAgICBwcmludCAiPjxi
PiR0ZXh0bGluazwvYj48L0E+IjsKICAgIHByaW50ICIpIiBpZiAoJHBhcmVuKTsKfQoKIyBSZXR1
cm5zIGEgUXVlcnkgc3RyaW5nIHdpdGggdGhlCiMgc3BlY2lmaWVkIHBhcmFtZXRlciB0b2dnbGVk
CnN1YiB0b2dnbGVRdWVyeSgkJCkgewogICAgbXkgKCR0b2dnbGUsJHZhbHVlKSA9IEBfOwogICAg
bXkgKCRuZXdxdWVyeSwkdmFyKTsKICAgIG15ICgldmFycyk7CiAgICAldmFycyA9ICVpbnB1dDsK
ICAgIGlmIChkZWZpbmVkKCR2YWx1ZSkpIHsKCSR2YXJzeyR0b2dnbGV9ID0gJHZhbHVlOwogICAg
fQogICAgZWxzZSB7CgkkdmFyc3skdG9nZ2xlfSA9ICR2YXJzeyR0b2dnbGV9ID8gMCA6IDE7CiAg
ICB9CiAgICAjIEJ1aWxkIGEgbmV3IHF1ZXJ5IG9mIG5vbi1kZWZhdWx0IHBhcmFtZW50ZXJzCiAg
ICAkbmV3cXVlcnkgPSAiIjsKICAgIGZvcmVhY2ggJHZhciAoQHN0aWNreXZhcnMpIHsKCW15ICgk
dmFsdWUpID0gZGVmaW5lZCgkdmFyc3skdmFyfSkgPyAkdmFyc3skdmFyfSA6ICIiOwoJbXkgKCRk
ZWZhdWx0KSA9IGRlZmluZWQoJERFRkFVTFRWQUxVRXskdmFyfSkgPyAkREVGQVVMVFZBTFVFeyR2
YXJ9IDogIiI7CglpZiAoJHZhbHVlIG5lICRkZWZhdWx0KSB7CgkgICAgJG5ld3F1ZXJ5IC49ICIm
YW1wOyIgaWYgKCRuZXdxdWVyeSBuZSAiIik7CgkgICAgJG5ld3F1ZXJ5IC49IHVybGVuY29kZSgk
dmFyKSAuICI9IiAuIHVybGVuY29kZSgkdmFsdWUpOwoJfQogICAgfQogICAgaWYgKCRuZXdxdWVy
eSkgewoJcmV0dXJuICc/JyAuICRuZXdxdWVyeTsKICAgIH0KICAgIHJldHVybiAiIjsKfQoKc3Vi
IHVybGVuY29kZSgkKSB7CiAgICBteSAoJGluKSA9IEBfOwogICAgbXkgKCRvdXQpOwogICAgKCRv
dXQgPSAkaW4pID1+IHMvKFtcMDAwLSt7LVwzNzddKS9zcHJpbnRmKCIlJSUwMngiLCBvcmQoJDEp
KS9nZTsKICAgIHJldHVybiAkb3V0Owp9CgpzdWIgaHR0cF9oZWFkZXIoOyQpIHsKICAgIG15ICRj
b250ZW50X3R5cGUgPSBzaGlmdCB8fCAidGV4dC9odG1sIjsKICAgIG15ICRpc19tb2RfcGVybCA9
IGRlZmluZWQoJEVOVnsnTU9EX1BFUkwnfSk7CiAgICBpZiAoZGVmaW5lZCgkbW9kZGF0ZSkpIHsK
CWlmICgkaXNfbW9kX3BlcmwpIHsKCSAgICBBcGFjaGUtPnJlcXVlc3QtPmhlYWRlcl9vdXQoIkxh
c3QtTW9kaWZpZWQiID0+IHNjYWxhciBnbXRpbWUoJG1vZGRhdGUpIC4gIiBHTVQiKTsKCX0KCWVs
c2UgewoJICAgIHByaW50ICJMYXN0LU1vZGlmaWVkOiAiIC4gc2NhbGFyIGdtdGltZSgkbW9kZGF0
ZSkgLiAiIEdNVFxyXG4iOwoJfQogICAgfQogICAgaWYgKCRpc19tb2RfcGVybCkgewoJQXBhY2hl
LT5yZXF1ZXN0LT5jb250ZW50X3R5cGUoJGNvbnRlbnRfdHlwZSk7CiAgICB9CiAgICBlbHNlIHsK
CSAgICBwcmludCAiQ29udGVudC10eXBlOiAkY29udGVudF90eXBlXHJcbiI7CiAgICB9CiAgICBp
ZiAoJGFsbG93X2NvbXByZXNzICYmICRtYXljb21wcmVzcykgewoJaWYgKCRoYXNfemxpYiB8fCAo
ZGVmaW5lZCgkR1pJUEJJTikgJiYgb3BlbihHWklQLCAifCRHWklQQklOIC0xIC1jIikpKSB7Cgkg
ICAgaWYgKCRpc19tb2RfcGVybCkgewoJCSAgICBBcGFjaGUtPnJlcXVlc3QtPmNvbnRlbnRfZW5j
b2RpbmcoIngtZ3ppcCIpOwoJCSAgICBBcGFjaGUtPnJlcXVlc3QtPmhlYWRlcl9vdXQoVmFyeSA9
PiAiQWNjZXB0LUVuY29kaW5nIik7CgkJICAgIEFwYWNoZS0+cmVxdWVzdC0+c2VuZF9odHRwX2hl
YWRlcjsKCSAgICB9CgkgICAgZWxzZSB7CgkJICAgIHByaW50ICJDb250ZW50LWVuY29kaW5nOiB4
LWd6aXBcclxuIjsKCQkgICAgcHJpbnQgIlZhcnk6IEFjY2VwdC1FbmNvZGluZ1xyXG4iOyAgI1JG
QyAyMDY4LCAxNC40MwoJCSAgICBwcmludCAiXHJcbiI7ICMgQ2xvc2UgaGVhZGVycwoJICAgIH0K
CSAgICAkfCA9IDE7ICR8ID0gMDsgIyBGbHVzaCBoZWFkZXIgb3V0cHV0CgkgICAgaWYgKCRoYXNf
emxpYikgewoJICAgIAl0aWUgKkdaSVAsIF9fUEFDS0FHRV9fLCBcKlNURE9VVDsKCSAgICB9Cgkg
ICAgc2VsZWN0KEdaSVApOwoJICAgICRnemlwX29wZW4gPSAxOwojCSAgICBwcmludCAiPCEtLSBn
emlwcGVkIC0tPiIgaWYgKCRjb250ZW50X3R5cGUgZXEgInRleHQvaHRtbCIpOwoJfQoJZWxzZSB7
CgkgICAgaWYgKCRpc19tb2RfcGVybCkgewoJCSAgICBBcGFjaGUtPnJlcXVlc3QtPnNlbmRfaHR0
cF9oZWFkZXI7CgkgICAgfQoJICAgIGVsc2UgewoJCSAgICBwcmludCAiXHJcbiI7ICMgQ2xvc2Ug
aGVhZGVycwoJICAgIH0KCSAgICBwcmludCAiPGZvbnQgc2l6ZT0tMT5VbmFibGUgdG8gZmluZCBn
emlwIGJpbmFyeSBpbiB0aGUgXCRQQVRIIHRvIGNvbXByZXNzIG91dHB1dDwvZm9udD48YnI+IjsK
CX0KICAgIH0KICAgIGVsc2UgewoJICAgIGlmICgkaXNfbW9kX3BlcmwpIHsKCQkgICAgQXBhY2hl
LT5yZXF1ZXN0LT5zZW5kX2h0dHBfaGVhZGVyOwoJICAgIH0KCSAgICBlbHNlIHsKCQkgICAgcHJp
bnQgIlxyXG4iOyAjIENsb3NlIGhlYWRlcnMKCSAgICB9CiAgICB9Cn0KCnN1YiBodG1sX2hlYWRl
cigkKSB7CiAgICBteSAoJHRpdGxlKSA9IEBfOwogICAgbXkgJHZlcnNpb24gPSAnJFJldmlzaW9u
OiAxLjExMiAkJzsKICAgIGh0dHBfaGVhZGVyKCk7CiAgICBwcmludCA8PEVPSDsKPCFkb2N0eXBl
IGh0bWwgcHVibGljICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwvL0VOIgogImh0
dHA6Ly93d3cudzMub3JnL1RSL1JFQy1odG1sNDAvbG9vc2UuZHRkIj4KPGh0bWw+Cjx0aXRsZT4k
dGl0bGU8L3RpdGxlPgo8IS0tIGhlbm5lcmlrIENWU3dlYiAkdmVyc2lvbiAtLT4KPC9oZWFkPgok
Ym9keV90YWcKJGxvZ28gPGgxIGFsaWduPSJjZW50ZXIiPiR0aXRsZTwvaDE+CkVPSAp9CgpzdWIg
aHRtbF9mb290ZXIoKSB7CiAgICByZXR1cm4gIjxociBub3NoYWRlPjxhZGRyZXNzPiRhZGRyZXNz
PC9hZGRyZXNzPjwvYm9keT48L2h0bWw+XG4iOwp9CgpzdWIgbGlua190YWdzKCQpCnsKICAgIG15
ICgkdGFncykgPSBAXzsKICAgIG15ICgkcmV0KSA9ICIiOwogICAgbXkgKCRmaWxldXJsLCRmaWxl
bmFtZSk7CgogICAgKCRmaWxlbmFtZSA9ICR3aGVyZSkgPX4gcy9eLipcLy8vOwogICAgJGZpbGV1
cmwgPSB1cmxlbmNvZGUoJGZpbGVuYW1lKTsKCiAgICBmb3JlYWNoIG15ICRzeW0gKHNwbGl0KCIs
ICIsICR0YWdzKSkgewoJJHJldCAuPSAiLFxuIiBpZiAoJHJldCBuZSAiIik7CgkkcmV0IC49ICI8
QSBIUkVGPVwiJGZpbGV1cmwiCgkJLiB0b2dnbGVRdWVyeSgnb25seV93aXRoX3RhZycsJHN5bSkg
LiAiXCI+JHN5bTwvQT4iOwogICAgfQogICAgcmV0dXJuICRyZXQuIlxuIjsKfQoKIwojIFNlZSBp
ZiBhIG1vZHVsZSBpcyBsaXN0ZWQgaW4gdGhlIGNvbmZpZyBmaWxlJ3MgQEhpZGVNb2R1bGUgbGlz
dC4KIwpzdWIgZm9yYmlkZGVuX21vZHVsZSgkKSB7CiAgICBteSgkbW9kdWxlKSA9IEBfOwogICAg
cmV0dXJuIGNoZWNrRm9yYmlkZGVuKCRtb2R1bGUsIEBIaWRlTW9kdWxlcyk7Cn0KCnN1YiBmb3Ji
aWRkZW5fZmlsZSgkKSB7CiAgICBteSgkZmlsZSkgPSBAXzsKICAgICRmaWxlID1+IHN8Xi4qL3x8
OwogICAgcmV0dXJuIGNoZWNrRm9yYmlkZGVuKCRmaWxlLCBARGlzc2FsbG93UmVhZCk7Cn0KCnN1
YiBjaGVja0ZvcmJpZGRlbigkQCkgewogICAgbXkoJGl0ZW0sIEBsaXN0KSA9IEBfOwogICAgZm9y
IChteSAkaT0wOyAkaSA8IEBsaXN0OyAkaSsrKSB7CglyZXR1cm4gMSBpZiAkaXRlbSA9fiAkbGlz
dFskaV07CiAgICB9CiAgICByZXR1cm4gMDsKfQoKIyBDbG9zZSB0aGUgR1pJUCBoYW5kbGUgcmVt
b3ZlIHRoZSB0aWUuCgpzdWIgZ3ppcGNsb3NlKCkgewoJaWYgKCRnemlwX29wZW4pIHsKCSAgICBz
ZWxlY3QoU1RET1VUKTsKCSAgICBjbG9zZShHWklQKTsKCSAgICB1bnRpZSAqR1pJUDsKCSAgICAk
Z3ppcF9vcGVuID0gMDsKCX0KfQoKIyBpbXBsZW1lbnQgYSBnemlwcGVkIGZpbGUgaGFuZGxlIHZp
YSB0aGUgQ29tcHJlc3M6WmxpYiBjb21wcmVzc2lvbgojIGxpYnJhcnkuCgpzdWIgTUFHSUMxKCkg
eyAweDFmIH0Kc3ViIE1BR0lDMigpIHsgMHg4YiB9CnN1YiBPU0NPREUoKSB7IDMgICAgfQoKc3Vi
IFRJRUhBTkRMRSB7CglteSAoJGNsYXNzLCAkb3V0KSA9IEBfOwoJbXkgKCRkKSA9IENvbXByZXNz
OjpabGliOjpkZWZsYXRlSW5pdCgtTGV2ZWwgPT4gQ29tcHJlc3M6OlpsaWI6OlpfQkVTVF9DT01Q
UkVTU0lPTigpLAoJCS1XaW5kb3dCaXRzID0+IC1Db21wcmVzczo6WmxpYjo6TUFYX1dCSVRTKCkp
IG9yIHJldHVybiB1bmRlZjsKCW15ICgkbykgPSB7CgkJaGFuZGxlID0+ICRvdXQsCgkJZGggPT4g
JGQsCgkJY3JjID0+IDAsCgkJbGVuID0+IDAsCgl9OwoJbXkgKCRoZWFkZXIpID0gcGFjaygiYzEw
IiwgTUFHSUMxLCBNQUdJQzIsIENvbXByZXNzOjpabGliOjpaX0RFRkxBVEVEKCksIDAsMCwwLDAs
MCwwLCBPU0NPREUpOwoJcHJpbnQgeyRvLT57aGFuZGxlfX0gJGhlYWRlcjsKCXJldHVybiBibGVz
cygkbywgJGNsYXNzKTsKfQoKc3ViIFBSSU5UIHsKCW15ICgkbykgPSBzaGlmdDsKCW15ICgkYnVm
KSA9IGpvaW4oZGVmaW5lZCAkLCA/ICQsIDogIiIsQF8pOwoJbXkgKCRsZW4pID0gbGVuZ3RoKCRi
dWYpOwoJbXkgKCRjb21wcmVzc2VkLCAkc3RhdHVzKSA9ICRvLT57ZGh9LT5kZWZsYXRlKCRidWYp
OwoJcHJpbnQgeyRvLT57aGFuZGxlfX0gJGNvbXByZXNzZWQgaWYgZGVmaW5lZCgkY29tcHJlc3Nl
ZCk7Cgkkby0+e2NyY30gPSBDb21wcmVzczo6WmxpYjo6Y3JjMzIoJGJ1ZiwgJG8tPntjcmN9KTsK
CSRvLT57bGVufSArPSAkbGVuOwoJcmV0dXJuICRsZW47Cn0KCnN1YiBQUklOVEYgewoJbXkgKCRv
KSA9IHNoaWZ0OwoJbXkgKCRmbXQpID0gc2hpZnQ7CglteSAoJGJ1ZikgPSBzcHJpbnRmKCRmbXQs
IEBfKTsKCW15ICgkbGVuKSA9IGxlbmd0aCgkYnVmKTsKCW15ICgkY29tcHJlc3NlZCwgJHN0YXR1
cykgPSAkby0+e2RofS0+ZGVmbGF0ZSgkYnVmKTsKCXByaW50IHskby0+e2hhbmRsZX19ICRjb21w
cmVzc2VkIGlmIGRlZmluZWQoJGNvbXByZXNzZWQpOwoJJG8tPntjcmN9ID0gQ29tcHJlc3M6Olps
aWI6OmNyYzMyKCRidWYsICRvLT57Y3JjfSk7Cgkkby0+e2xlbn0gKz0gJGxlbjsKCXJldHVybiAk
bGVuOwp9CgpzdWIgV1JJVEUgewoJbXkgKCRvLCAkYnVmLCAkbGVuLCAkb2ZmKSA9IEBfOwoJbXkg
KCRjb21wcmVzc2VkLCAkc3RhdHVzKSA9ICRvLT57ZGh9LT5kZWZsYXRlKHN1YnN0cigkYnVmLCAw
LCAkbGVuKSk7CglwcmludCB7JG8tPntoYW5kbGV9fSAkY29tcHJlc3NlZCBpZiBkZWZpbmVkKCRj
b21wcmVzc2VkKTsKCSRvLT57Y3JjfSA9IENvbXByZXNzOjpabGliOjpjcmMzMihzdWJzdHIoJGJ1
ZiwgMCwgJGxlbiksICRvLT57Y3JjfSk7Cgkkby0+e2xlbn0gKz0gJGxlbjsKCXJldHVybiAkbGVu
Owp9CgpzdWIgQ0xPU0UgewoJbXkgKCRvKSA9IEBfOwoJcmV0dXJuIGlmICFkZWZpbmVkKCAkby0+
e2RofSk7CglteSAoJGJ1ZikgPSAkby0+e2RofS0+Zmx1c2goKTsKCSRidWYgLj0gcGFjaygiViBW
IiwgJG8tPntjcmN9LCAkby0+e2xlbn0pOwoJcHJpbnQgeyRvLT57aGFuZGxlfX0gJGJ1ZjsKCXVu
ZGVmICRvLT57ZGh9Owp9CgpzdWIgREVTVFJPWSB7CglteSAoJG8pID0gQF87CglDTE9TRSgkbyk7
Cn0K

------_=_NextPart_001_01C59169.A10F1B75--



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