Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 20 Oct 2009 11:59:20 +0530
From:      nikunj badjatya <nikunjbadjatya@gmail.com>
To:        freebsd-cvsweb@freebsd.org
Subject:   Regarding CVSWEB setup... kindly help..!!
Message-ID:  <f42f4d920910192329l32b6c953r2bb1d2f172adcb4f@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
--001485394218abdf37047657fc8a
Content-Type: text/plain; charset=ISO-8859-1

Hi,
I am a Software engineer. I am using CVS as my version control system.
I am using CentOS 5.3.
CVS and apache (httpd) are installed.
I want to setup a web interface for my CVS repositories.
I searched alot on net, but unable to get the working interface. I
have performed the following things on my system as part of setup:
1. Downloaded latest version of cvsweb - cvsweb-3.0.6
    I have kept the file " cvsweb.conf " in /etc/httpd/conf.d/  directory
    i have kept the file " cvsweb.css " in /etc/httpd/ directory
    i have kept the file " cvsweb.cgi " in ~/cbin/cgi-bin/  directory
2. followed the steps mentioned in the INSTALL file.
    my local repository is in  ~/repo
    I edited  cvsweb.conf file (a) Path to the local repository (b)
path to the cssurl
    i edited  cvsweb.cgi file , mentioned about the path to
cvsweb.conf file.( in the 'for' loop )

3. I then tried in the browser as : http://localhost/cgi-bin/cvsweb.cgi

    But no response , error 404, the requested url was not found on this server.
    Please help..!! I have to meet the deadline for the work done.

I have attached all 3 files, kindly check them.

Thanks,

Nikunj Badjatya
BTech
Trainee Software Engineer

--001485394218abdf37047657fc8a
Content-Type: application/octet-stream; name="cvsweb.conf"
Content-Disposition: attachment; filename="cvsweb.conf"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_g109rfol1

IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC0qLSBwZXJsIC0qLQojIENvbmZpZ3VyYXRpb24gb2YgY3Zzd2ViLmNnaSwgYSB3
ZWIgaW50ZXJmYWNlIHRvIENWUyByZXBvc2l0b3JpZXMuCiMKIyAoYykgMTk5OC0xOTk5IEguIFpl
bGxlciAgICA8emVsbGVyQHRoaW5rLmRlPgojICAgICAxOTk5ICAgICAgSC4gTm9yZHN0cm9tIDxo
bm9AaGVtLnBhc3NhZ2VuLnNlPgojICAgICAyMDAwLTIwMDIgQS4gTVVTSEEgICAgIDxrbnVARnJl
ZUJTRC5vcmc+CiMgICAgIDIwMDItMjAwNSBWLiBTa3l0dO+/vSAgICA8c2NvcEBGcmVlQlNELm9y
Zz4KIyAgICAgICAgICBiYXNlZCBvbiB3b3JrIGJ5IEJpbGwgRmVubmVyICA8ZmVubmVyQEZyZWVC
U0Qub3JnPgojCiMgJEZyZWVCU0Q6IHByb2plY3RzL2N2c3dlYi9jdnN3ZWIuY29uZix2IDEuOTcg
MjAwNS8wNi8xOSAwOToxMzo1MCBzY29wIEV4cCAkCiMgJElkOiBjdnN3ZWIuY29uZix2IDEuMjkg
MjAwMS8wNy8yMyAwOToxNDo1MiBoemVsbGVyIEV4cCAkCiMgJElkYWVtb25zOiAvaG9tZS9jdnMv
Y3Zzd2ViL2N2c3dlYi5jb25mLHYgMS4yNyAyMDAxLzA4LzAxIDA5OjQ4OjM5IGtudSBFeHAgJAoj
CgojCiMgVW5sZXNzIG90aGVyd2lzZSBub3RlZCwgYWxsIGJvb2xlYW4gcGFyYW1ldGVycyBoZXJl
IGRlZmF1bHQgdG8gb2ZmCiMgd2hlbiBubyB2YWx1ZSBmb3IgdGhlbSBoYXMgYmVlbiBleHBsaWNp
dGx5IHNldC4KIwoKIyBTZXQgdGhlIHBhdGggZm9yIHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6CiMg
ICBjdnMsIHJsb2csIHJjc2RpZmYKIyAgIGd6aXAgKGlmIHlvdSBlbmFibGUgJGFsbG93X2NvbXBy
ZXNzKQojICAgKGcpdGFyLCB6aXAgKGlmIHlvdSBlbmFibGUgJGFsbG93X3RhcikKIyAgIGN2c2dy
YXBoIChpZiB5b3UgZW5hYmxlICRhbGxvd19ncmFwaCkKIyAgIGVuc2NyaXB0IChpZiB5b3UgZW5h
YmxlICRhbGxvd19lbnNjcmlwdCkKIwpAY29tbWFuZF9wYXRoID0gcXcoL2JpbiAvdXNyL2JpbiAv
dXNyL2xvY2FsL2Jpbik7CgojIFNlYXJjaCB0aGUgYWJvdmUgZGlyZWN0b3JpZXMgZm9yIGVhY2gg
Y29tbWFuZCAocHJlZmVyIGd0YXIgb3ZlciB0YXIpLgojCmZvciAocXcoY3ZzIHJsb2cgcmNzZGlm
ZiBnemlwIGd0YXIgemlwIGN2c2dyYXBoIGVuc2NyaXB0KSkgewoJJENNRHskX30gPSBzZWFyY2hf
cGF0aCgkXyk7Cn0KJENNRHt0YXJ9ICAgPSBkZWxldGUoJENNRHtndGFyfSkgaWYgJENNRHtndGFy
fTsKJENNRHt0YXJ9IHx8PSBzZWFyY2hfcGF0aCgndGFyJyk7CgojIENWUyByb290cwojCiMgQ1ZT
d2ViIGNhbiBoYW5kbGUgc2V2ZXJhbCBDVlMgcmVwb3NpdG9yaWVzIGF0IG9uY2UuICBFbnRlciBz
aG9ydCAoaW50ZXJuYWwpCiMgc3ltYm9saWMgcmVwb3NpdG9yeSBuYW1lcywgdGhlaXIgbmFtZXMg
aW4gdGhlIFVJIGFuZCB0aGUgYWN0dWFsIGxvY2F0aW9ucwojIGhlcmUuICBUaGUgcmVwb3NpdG9y
aWVzIHdpbGwgYmUgbGlzdGVkIGluIHRoZSBvcmRlciB0aGV5J3JlIHNwZWNpZmllZCBoZXJlLgoj
CiMgT2J2aW91c2x5LCBDVlN3ZWIgd2lsbCBuZWVkIHJlYWQgYWNjZXNzIHRvIHRoZXNlIHJlcG9z
aXRvcnkgZGlycy4gIElmIHlvdQojIHJlY2VpdmUgYW4gZXJyb3IgdGhhdCBubyB2YWxpZCBDVlMg
cm9vdHMgd2VyZSBmb3VuZCwgZG91YmxlLWNoZWNrIHRoZSBmaWxlCiMgcGVybWlzc2lvbnMgYW5k
IGFueSBvdGhlciBhdHRyaWJ1dGVzIHlvdXIgc3lzdGVtIG1heSBoYXZlIGZvciB0aGUgcmVwb3Np
dG9yeQojIGRpcmVjdG9yaWVzLCBzdWNoIGFzIFNFTGludXggZmlsZSBjb250ZXh0cy4KIwojIENW
U3dlYiB3aWxsIGFsc28gbG9hZCBwZXItY3Zzcm9vdCBjb25maWd1cmF0aW9uIGZpbGVzIGlmIHRo
ZXkgZXhpc3QuCiMgVGhlIHN5bWJvbGljX25hbWUgKHNlZSBiZWxvdykgb2YgdGhlIENWUyByb290
IHdpbGwgYmUgY29uY2F0ZW5hdGVkIGludG8gdGhlCiMgbmFtZSBvZiB0aGUgbWFpbiAodGhpcykg
Y29uZmlndXJhdGlvbiBmaWxlIGFsb25nIHdpdGggYSBoeXBoZW4sIGFuZCB0aGF0CiMgZmlsZSB3
aWxsIGJlIGxvYWRlZCBmb3IgdGhhdCBwYXJ0aWN1bGFyIENWUyByb290LiAgRm9yIGV4YW1wbGVz
LCBzZWUKIyBjdnN3ZWIuY29uZi0qIGluIHRoZSBDVlN3ZWIgZGlzdHJpYnV0aW9uLgojCiMgTm90
ZSB0aGF0IG9ubHkgbG9jYWwgcmVwb3NpdG9yaWVzIGFyZSBjdXJyZW50bHkgc3VwcG9ydGVkLiAg
VGhpbmdzIGxpa2UKIyA6cHNlcnZlcjpzb21lb25lQHh5ei5jb206L2RhdGEvY3Zzcm9vdCB3b24n
dCB3b3JrLgojCiMgJ3N5bWJvbGljX25hbWUnID0+IFsnTmFtZSB0byBkaXNwbGF5JywgICcvcGF0
aC90by9jdnNyb290J10KIwpAQ1ZTcmVwb3NpdG9yaWVzID0gKAogICAgICAgICdsb2NhbCcgICA9
PiBbJ0xvY2FsIFJlcG9zaXRvcnknLCAnL2hvbWUvbmlrdW5qL3JlcG8nXSwgICAgCiMvdmFyL2N2
cwojICAgICAgICdmcmVlYnNkJyA9PiBbJ0ZyZWVCU0QnLCAgICAgICAgICAnL3Zhci9uY3ZzJ10s
CiMgICAgICAgJ29wZW5ic2QnID0+IFsnT3BlbkJTRCcsICAgICAgICAgICcvdmFyL25jdnMnXSwK
IyAgICAgICAnbmV0YnNkJyAgPT4gWydOZXRCU0QnLCAgICAgICAgICAgJy92YXIvbmN2cyddLAoj
ICAgICAgICdydWJ5JyAgICA9PiBbJ1J1YnknLCAgICAgICAgICAgICAnL3Zhci9hbm9uY3ZzL3J1
YnknXSwKKTsKCiMgVGhlIGRlZmF1bHQgQ1ZTIHJvb3QuICBOb3RlIHRoYXQgQENWU3JlcG9zaXRv
cmllcyBpcyBsaXN0LCBub3QgYSBoYXNoLAojIHNvIHlvdSdsbCB3YW50IHRvIHVzZSAyICogMC1i
YXNlZC1pbmRleC1udW1iZXIgaGVyZTsgb3Igc2V0IHRoaXMgZGlyZWN0bHkKIyB0byB0aGUgZGVm
YXVsdCdzIHN5bWJvbGljIG5hbWUuIFVubGVzcyBzcGVjaWZpZWQsIHRoZSBmaXJzdCB2YWxpZCBv
bmUgaW4KIyBAQ1ZTcmVwb3NpdG9yaWVzIGlzIHVzZWQgYXMgdGhlIGRlZmF1bHQuCiMKIyBGb3Ig
ZXhhbXBsZToKIwojJGN2c3RyZWVkZWZhdWx0ID0gJENWU3JlcG9zaXRvcmllc1syICogMF07CiMk
Y3ZzdHJlZWRlZmF1bHQgPSAnbG9jYWwnOwoKIyBNaXJyb3Igc2l0ZXMuICBUaGUga2V5cyB3aWxs
IGJlIHVzZWQgYXMgbGluayB0ZXh0cywgYW5kIHRoZSB2YWx1ZXMgYXJlCiMgVVJMcyBwb2ludGlu
ZyB0byB0aGUgY29ycmVzcG9uZGluZyBtaXJyb3JzLgojCiMlTUlSUk9SUyA9ICgKIyAgICAgJ090
aGVyIGxvY2F0aW9uJyAgPT4gJ2h0dHA6Ly8xOTIuMTY4LjAuMS9jZ2ktYmluL2N2c3dlYi5jZ2kv
JywKIyAgICAgJ1lldCBhbm90aGVyIG9uZScgPT4gJ2h0dHA6Ly8xOTIuMTY4LjAuMi9jZ2ktYmlu
L2N2c3dlYi5jZ2kvJywKIyk7CgojIEJ1ZyB0cmFja2luZyBzeXN0ZW0gbGlua2luZyBvcHRpb25z
ICgiUFIiIG1lYW5zIFByb2JsZW0gUmVwb3J0LCBhcyBpbiBHTkFUUykKIyBUaGlzIHdpbGwgYmUg
ZG9uZSBvbmx5IGZvciB2aWV3cyBmb3Igd2hpY2ggJGFsbG93XypfZXh0cmEgYmVsb3cgaXMgdHJ1
ZS4KIwojQHByY2F0ZWdvcmllcyA9IHF3KAojICAgIGFkdm9jYWN5CiMgICAgYWxwaGEKIyAgICBi
aW4KIyAgICBjb25mCiMgICAgZG9jcwojICAgIGdudQojICAgIGkzODYKIyAgICBrZXJuCiMgICAg
bWlzYwojICAgIHBlbmRpbmcKIyAgICBwb3J0cwojICAgIHNwYXJjCiMpOwojJHByY2dpID0gImh0
dHA6Ly93d3cuRnJlZUJTRC5vcmcvY2dpL3F1ZXJ5LXByLmNnaT9wcj0lcyI7CiMkcHJrZXl3b3Jk
ID0gIlBSIjsKCiMgTWFudWFsIGdhdGV3YXkgbGlua2luZy4gIFRoaXMgd2lsbCBiZSBkb25lIG9u
bHkgZm9yIHZpZXdzIGZvciB3aGljaAojICRhbGxvd18qX2V4dHJhIGJlbG93IGlzIHRydWUuCiMK
JG1hbmNnaSA9CiAgICAiaHR0cDovL3d3dy5GcmVlQlNELm9yZy9jZ2kvbWFuLmNnaT9hcHJvcG9z
PTAmc2VrdGlvbj0lcyZxdWVyeT0lcyZtYW5wYXRoPUZyZWVCU0QrNS4wLWN1cnJlbnQmZm9ybWF0
PWh0bWwiOwoKIyBEZWZhdWx0cyBmb3IgdXNlciBkZWZpbmFibGUgb3B0aW9ucy4KIwolREVGQVVM
VFZBTFVFID0gKAoKICAgICMgc29ydGJ5OiBGaWxlIHNvcnQgb3JkZXIKICAgICMgICBmaWxlICAg
U29ydCBieSBmaWxlbmFtZQogICAgIyAgIHJldiAgICBTb3J0IGJ5IHJldmlzaW9uIG51bWJlcgog
ICAgIyAgIGRhdGUgICBTb3J0IGJ5IGNvbW1pdCBkYXRlCiAgICAjICAgYXV0aG9yIFNvcnQgYnkg
YXV0aG9yCiAgICAjICAgbG9nICAgIFNvcnQgYnkgbG9nIG1lc3NhZ2UKICAgICJzb3J0YnkiID0+
ICJmaWxlIiwKCiAgICAjIGlnbm9yZWNhc2U6IElnbm9yZSBjYXNlIGluIHNvcnRzIChmaWxlbmFt
ZXMsIGF1dGhvcnMsIGxvZyBtZXNzYWdlcykKICAgICMgICAwICAgICAgSG9ub3IgY2FzZQogICAg
IyAgIDEgICAgICBJZ25vcmUgY2FzZQogICAgImlnbm9yZWNhc2UiID0+ICIwIiwKCiAgICAjIGhp
ZGVhdHRpYzogSGlkZSBvciBzaG93IGZpbGVzIGluIEF0dGljCiAgICAjICAgMSAgICAgIEhpZGUg
ZmlsZXMgaW4gQXR0aWMKICAgICMgICAwICAgICAgU2hvdyBmaWxlcyBpbiBBdHRpYwogICAgImhp
ZGVhdHRpYyIgPT4gIjEiLAoKICAgICMgbG9nc29ydDogU29ydCBvcmRlciBmb3IgQ1ZTIGxvZ3MK
ICAgICMgICBkYXRlICAgU29ydCByZXZpc2lvbnMgYnkgZGF0ZQogICAgIyAgIHJldiAgICBTb3J0
IHJldmlzaW9uIGJ5IHJldmlzaW9uIG51bWJlcgogICAgIyAgIGN2cyAgICBEb24ndCBzb3J0IHRo
ZW0uIFNhbWUgb3JkZXIgYXMgQ1ZTL1JDUyBzaG93cyB0aGVtLgogICAgImxvZ3NvcnQiID0+ICJk
YXRlIiwKCiAgICAjIGY6IERlZmF1bHQgZGlmZiBmb3JtYXQKICAgICMgICBoICAgICAgSHVtYW4g
cmVhZGFibGUKICAgICMgICB1ICAgICAgVW5pZmllZCBkaWZmCiAgICAjICAgYyAgICAgIENvbnRl
eHQgZGlmZgogICAgIyAgIHMgICAgICBTaWRlIGJ5IHNpZGUKICAgICMgICB1YyAgICAgVW5pZmll
ZCBkaWZmLCBlbnNjcmlwdCBjb2xvcmVkIChmYWxscyBiYWNrIHRvICJ1IiB3L28gZW5zY3JpcHQp
CiAgICAjICAgY2MgICAgIENvbnRleHQgZGlmZiwgZW5zY3JpcHQgY29sb3JlZCAoZmFsbHMgYmFj
ayB0byAiYyIgdy9vIGVuc2NyaXB0KQogICAgIyAgIHNjICAgICBTaWRlIGJ5IHNpZGUsIGVuc2Ny
aXB0IGNvbG9yZWQgKGZhbGxzIGJhY2sgdG8gInMiIHcvbyBlbnNjcmlwdCkKICAgICJmIiA9PiAi
dSIsCgogICAgIyBoaWRlY3Zzcm9vdDogRG9uJ3Qgc2hvdyB0aGUgQ1ZTUk9PVCBkaXJlY3Rvcnku
ICBOb3RlIHRoYXQgdGhpcyBpcwogICAgIyBqdXN0IHRoZSBkZWZhdWx0IGZvciBhIHVzZXIgc2V0
dGFibGUgb3B0aW9uIChsaWtlIG90aGVycyBpbiB0aGlzCiAgICAjICVERUZBVUxUVkFMVUUgaGFz
aCk7IGl0IHdvbid0IHJlYWxseSBwcmV2ZW50IGFjY2VzcyB0byBDVlNST09ULgogICAgIyBTZWUg
QEZvcmJpZGRlbkZpbGVzIGZvciB0aGF0LgogICAgIyAgIDEgICAgICBEbyBub3QgaW5jbHVkZSB0
aGUgdG9wLWxldmVsIENWU1JPT1QgZGlyZWN0b3J5IGluIGRpciBsaXN0aW5ncwogICAgIyAgIDAg
ICAgICBUcmVhdCB0aGUgdG9wLWxldmVsIENWU1JPT1QgZGlyZWN0b3J5IGp1c3QgbGlrZSBhbGwg
b3RoZXIgZGlycwogICAgImhpZGVjdnNyb290IiA9PiAiMCIsCgogICAgIyBoaWRlbm9ucmVhZGFi
bGU6IERvbid0IHNob3cgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHRoYXQgY2Fubm90IGJlIHJlYWQK
ICAgICMgaW4gZGlyZWN0b3J5IGxpc3RpbmdzLgogICAgIyAgIDEgICAgICBIaWRlIG5vbi1yZWFk
YWJsZSBlbnRyaWVzCiAgICAjICAgMCAgICAgIFNob3cgbm9uLXJlYWRhYmxlIGVudHJpZXMKICAg
ICJoaWRlbm9ucmVhZGFibGUiID0+ICIxIiwKCiAgICAjIGxuOiBTaG93IGxpbmUgbnVtYmVycyBp
biBIVE1MaXplZCB2aWV3cwogICAgIyAgIDEgICAgICBTaG93IGxpbmUgbnVtYmVycwogICAgIyAg
IDAgICAgICBEb24ndCBzaG93IGxpbmUgbnVtYmVycwogICAgImxuIiA9PiAiMCIsCik7CgojCiMg
TGF5b3V0IG9wdGlvbnMgKHNlZSBhbHNvIHRoZSBpbmNsdWRlZCBDU1MgZmlsZSkKIwoKIyBXYW5u
YSBoYXZlIGEgbG9nbyBvbiB0aGUgcGFnZSA/CiMKIyRsb2dvID0gJzxwPjxpbWcgc3JjPSIvaWNv
bnMvYXBhY2hlX3BiLmdpZiIgYWx0PSJQb3dlcmVkIGJ5IEFwYWNoZSIgLz48L3A+JzsKCiMgVGhl
IHRpdGxlIG9mIHRoZSBQYWdlIG9uIHN0YXJ0dXAuICBUaGlzIHdpbGwgYmUgcHV0IGluc2lkZSA8
aDE+IGFuZCA8dGl0bGU+CiMgdGFncywgYW5kIEhUTUwgZXNjYXBlZC4KIwokZGVmYXVsdHRpdGxl
ID0gIkNWUyBSZXBvc2l0b3J5IjsKCiMgVGhlIGFkZHJlc3MgaXMgc2hvd24gb24gdGhlIGZvb3Rl
ci4gIFRoaXMgd2lsbCBiZSBwdXQgaW5zaWRlIGEgPGFkZHJlc3M+IHRhZy4KIwokYWRkcmVzcyA9
ICc8c3BhbiBzdHlsZT0iZm9udC1zaXplOiBzbWFsbGVyIj5GcmVlQlNELUNWU3dlYiAmbHQ7PGEg
aHJlZj0ibWFpbHRvOmZyZWVic2QtY3Zzd2ViQEZyZWVCU0Qub3JnIj5mcmVlYnNkLWN2c3dlYkBG
cmVlQlNELm9yZzwvYT4mZ3Q7PC9zcGFuPic7CgokbG9uZ19pbnRybyA9IDw8RU9UOwo8cD4KVGhp
cyBpcyBhIFdXVyBpbnRlcmZhY2UgZm9yIENWUyByZXBvc2l0b3JpZXMuCllvdSBjYW4gYnJvd3Nl
IHRoZSBmaWxlIGhpZXJhcmNoeSBieSBmb2xsb3dpbmcgZGlyZWN0b3J5IGxpbmtzICh3aGljaApo
YXZlIHNsYXNoZXMgYWZ0ZXIgdGhlbSwgZS5nLiA8Y29kZT5zcmMvPC9jb2RlPikuCklmIHlvdSBm
b2xsb3cgYSBsaW5rIHRvIGEgZmlsZSwgeW91IHdpbGwgc2VlIGl0cyByZXZpc2lvbiBoaXN0b3J5
LgpGb2xsb3dpbmcgYSBsaW5rIGxhYmVsZWQgd2l0aCBhIHJldmlzaW9uIG51bWJlciB3aWxsIGRp
c3BsYXkgdGhhdApyZXZpc2lvbiBvZiB0aGUgZmlsZS4gIEluIHRoZSByZXZpc2lvbiBoaXN0b3J5
IHZpZXcsIHRoZXJlIGlzIGEgbGluawpuZWFyIGVhY2ggcmV2aXNpb24gdG8gZGlzcGxheSBkaWZm
cyBiZXR3ZWVuIHRoYXQgcmV2aXNpb24gYW5kIHRoZQpwcmV2aW91cyBvbmUsIGFuZCBhIGZvcm0g
YXQgdGhlIGJvdHRvbSBvZiB0aGUgcGFnZSB0aGF0IGFsbG93cyB5b3UgdG8KZGlzcGxheSBkaWZm
cyBiZXR3ZWVuIGFyYml0cmFyeSByZXZpc2lvbnMuCjwvcD48cD4KVGhpcyBzY3JpcHQgaGFzIGJl
ZW4gd3JpdHRlbiBieSBCaWxsIEZlbm5lciBhbmQgaW1wcm92ZWQgYnkgSGVubmVyIFplbGxlciwK
SGVucmlrIE5vcmRzdHImb3VtbDttLCBhbmQgS2VuIENvYXIsIHRoZW4gQWtpbm9yaSBNVVNIQSBi
cm91Z2h0IGl0CmJhY2sgdG8gRnJlZUJTRCBjb21tdW5pdHkgYW5kIG1hZGUgZnVydGhlciBpbXBy
b3ZlbWVudHM7IGl0IGlzIGNvdmVyZWQKYnkgPGEKaHJlZj0iaHR0cDovL3d3dy5vcGVuc291cmNl
Lm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5odG1sIj5UaGUgQlNEIExpY2Vuc2U8L2E+Lgo8L3A+
PHA+CklmIHlvdSB3b3VsZCBsaWtlIHRvIHVzZSB0aGlzIENHSSBzY3JpcHQgb24geW91ciBvd24g
d2ViIHNlcnZlciBhbmQKQ1ZTIHRyZWUsIGRvd25sb2FkIHRoZSBsYXRlc3QgdmVyc2lvbiBmcm9t
ICZsdDs8YQpocmVmPSJodHRwOi8vd3d3LkZyZWVCU0Qub3JnL3Byb2plY3RzL2N2c3dlYi5odG1s
Ij5odHRwOi8vd3d3LkZyZWVCU0Qub3JnL3Byb2plY3RzL2N2c3dlYi5odG1sPC9hPiZndDsuCjwv
cD48cD4KRmVlbCBmcmVlIHRvIHNlbmQgYW55IHBhdGNoZXMsIHN1Z2dlc3Rpb25zIGFuZCBjb21t
ZW50cyB0byB0aGUgRnJlZUJTRC1DVlN3ZWIKbWFpbGluZyBsaXN0IGF0CiZsdDs8YQpocmVmPSJt
YWlsdG86ZnJlZWJzZC1jdnN3ZWJcQEZyZWVCU0Qub3JnIj5mcmVlYnNkLWN2c3dlYlxARnJlZUJT
RC5vcmc8L2E+Jmd0Oy4KPC9wPgpFT1QKCiRzaG9ydF9pbnN0cnVjdGlvbiA9IDw8RU9UOwo8cD4K
Q2xpY2sgb24gYSBkaXJlY3RvcnkgdG8gZW50ZXIgdGhhdCBkaXJlY3RvcnkuIENsaWNrIG9uIGEg
ZmlsZSB0byBkaXNwbGF5Cml0cyByZXZpc2lvbiBoaXN0b3J5IGFuZCB0byBnZXQgYSBjaGFuY2Ug
dG8gZGlzcGxheSBkaWZmcyBiZXR3ZWVuIHJldmlzaW9ucy4KPC9wPgpFT1QKCiMgSWNvbnMgZm9y
IHRoZSB3ZWIgVUkuICBJZiBJQ09OLVVSTCBpcyBlbXB0eSwgdGhlIFRFWFQgcmVwcmVzZW50YXRp
b24gaXMKIyB1c2VkLiAgSWYgeW91IGRvIG5vdCB3YW50IHRvIGhhdmUgYSB0b29sIHRpcCBmb3Ig
YW4gaWNvbiwgc2V0IFRFWFQgZW1wdHkuCiMgVGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIGlj
b24gYWxsb3cgdGhlIGJyb3dzZXIgdG8gY29ycmVjdGx5IGRpc3BsYXkKIyB0aGUgdGFibGUgd2hp
bGUgc3RpbGwgbG9hZGluZyB0aGUgaWNvbnMuICBJZiB0aGVzZSBpY29ucyBhcmUgdG9vIGxhcmdl
LAojIGNoZWNrIG91dCB0aGUgIm1pbmkiIHZlcnNpb25zIGluIHRoZSBpY29ucy8gZGlyZWN0b3J5
OyB0aGV5IGhhdmUgYQojIHdpZHRoL2hlaWdodCBvZiAxNi8xNi4KIwpteSAkaWNvbnNkaXIgPSAn
L2ljb25zJzsKCiMgZm9ybWF0OiAgICAgICAgICBURVhUICAgICAgIElDT04tVVJMICAgICAgICAg
ICAgICAgICAgd2lkdGggaGVpZ2h0CiVJQ09OUyA9ICgKICAgICBiYWNrICAgID0+IFsoJ1tCQUNL
XScsICAgIiRpY29uc2Rpci9iYWNrLmdpZiIsICAgICAgMjAsICAgMjIpXSwKICAgICBkaXIgICAg
ID0+IFsoJ1tESVJdJywgICAgIiRpY29uc2Rpci9kaXIuZ2lmIiwgICAgICAgMjAsICAgMjIpXSwK
ICAgICBmaWxlICAgID0+IFsoJ1tUWFRdJywgICAgIiRpY29uc2Rpci90ZXh0LmdpZiIsICAgICAg
MjAsICAgMjIpXSwKICAgICBiaW5maWxlID0+IFsoJ1tCSU5dJywgICAgIiRpY29uc2Rpci9iaW5h
cnkuZ2lmIiwgICAgMjAsICAgMjIpXSwKICAgICBncmFwaCAgID0+IFsoJ1tHUkFQSF0nLCAgIiRp
Y29uc2Rpci9taW5pZ3JhcGgucG5nIiwgMTYsICAgMTYpXSwKKTsKdW5kZWYgJGljb25zZGlyOwoK
IyBBbiBVUkwgd2hlcmUgdG8gZmluZCB0aGUgQ1NTLgojCiRjc3N1cmwgPSAnL2V0Yy9odHRwZC9j
dnN3ZWIuY3NzJzsKCiMgVGhlIGxlbmd0aCB0byB3aGljaCB0aGUgbGFzdCBsb2cgZW50cnkgc2hv
dWxkIGJlIHRydW5jYXRlZCB3aGVuIHNob3duCiMgaW4gdGhlIGRpcmVjdG9yeSB2aWV3LgojCiRz
aG9ydExvZ0xlbiA9IDgwOwoKIyBTaG93IGF1dGhvciBvZiBsYXN0IGNoYW5nZT8KIwokc2hvd19h
dXRob3IgPSAxOwoKIyBDZWxsIHBhZGRpbmcgZm9yIGRpcmVjdG9yeSB0YWJsZS4KIwokdGFibGVw
YWRkaW5nID0gMjsKCiMgUmVndWxhciBleHByZXNzaW9ucyBmb3IgZmlsZXMgYW5kIGRpcmVjdG9y
aWVzIHdoaWNoIHNob3VsZCBiZSBoaWRkZW4uCiMgRWFjaCByZWdleHAgaXMgY29tcGFyZWQgYWdh
aW5zdCBhIHBhdGggcmVsYXRpdmUgdG8gYSBDVlMgcm9vdCwgYWZ0ZXIKIyBzdHJpcHBpbmcgdGhl
IHRyYWlsaW5nICIsdiIgaWYgcHJlc2VudC4gIE1hdGNoaW5nIGZpbGVzIGFuZCBkaXJlY3Rvcmll
cwojIGFyZSBub3QgZGlzcGxheWVkLgojCkBGb3JiaWRkZW5GaWxlcyA9ICgKICAgIHFyfF5DVlNS
T09ULytwYXNzd2QkfG8sICMgQ1ZTUk9PVC9wYXNzd2Qgc2hvdWxkIG5vdCBiZSAnY3ZzIGFkZCdl
ZCB0aG91Z2guCiAgICBxcnwvXC5jdnNwYXNzJHxvLCAgICAgICAjIERpdHRvLiAgSnVzdCBpbiBj
YXNlLgogICAjcXJ8Xm15LytzZWNyZXQvK2RpcnxvLAopOwoKIyBVc2UgQ1ZTUk9PVC9kZXNjcmlw
dGlvbnMgZm9yIGRlc2NyaWJpbmcgdGhlIGRpcmVjdG9yaWVzL21vZHVsZXM/CiMgU2VlIElOU1RB
TEwsIHNlY3Rpb24gOS4KIwokdXNlX2Rlc2NyaXB0aW9ucyA9IDA7CgojCiMgSHVtYW4gcmVhZGFi
bGUgZGlmZi4KIwojIChjKSAxOTk4IEguIFplbGxlciA8emVsbGVyQHRoaW5rLmRlPgojCiMgR2Vu
ZXJhdGVzIHR3byBjb2x1bW5zIG9mIGNvbG9yIGVuY29kZWQgZGlmZjsgbXVjaCBsaWtlIHhkaWZm
IG9yIEdOVSBFbWFjcycKIyBlZGlmZi1tb2RlLgojCiMgVGhlIGRpZmYtc3R1ZmYgaXMgYSBwaWVj
ZSBvZiBjb2RlIEkgb25jZSBtYWRlIGZvciBjdnMyaHRtbCB3aGljaCBpcyB1bmRlcgojIEdQTCwg
c2VlIGh0dHA6Ly93d3cuc3NsdWcuZGsvY3ZzMmh0bWwKIyAoYykgMTk5Ny85OCBQZXRlciBUb2Z0
IDxwdG9Ac3NsdWcuaW1tLmR0dS5kaz4KCiMgTWFrZSBsaW5lcyBicmVha2FibGUgc28gdGhhdCB0
aGUgY29sdW1ucyBkbyBub3QgZXhjZWVkIHRoZSB3aWR0aCBvZiB0aGUKIyBicm93c2VyPwojCiRo
cl9icmVha2FibGUgPSAxOwoKIyBQcmludCBmdW5jdGlvbiBuYW1lcyBpbiBkaWZmcyAodW5pZmll
ZCBhbmQgY29udGV4dCBvbmx5KS4KIyBTZWUgdGhlIC1wIG9wdGlvbiBpbiB0aGUgZGlmZigxKSBt
YW4gcGFnZS4KIwokc2hvd2Z1bmMgPSAxOwoKIyBGb3IgZWFjaCBwYWlyIG9mIHJlZ2V4cHMsIGZp
bGVzIHRoYXQgbWF0Y2ggdGhlIGZpcnN0IHJlZ2V4cCB3aWxsIGJlIGRpZmYnZWQKIyB3aXRoIGFu
IC1GIG9wdGlvbiB1c2luZyB0aGUgc2Vjb25kIHJlZ2V4cCAodW5pZmllZCBhbmQgY29udGV4dCBv
bmx5KS4KIyBTZWUgdGhlIC1GIG9wdGlvbiBpbiB0aGUgZGlmZigxKSBtYW4gcGFnZS4KIwolZnVu
Y2xpbmVfcmVnZXhwID0gKAogICAgcXIvXC4oPzo0dGh8ZnIpJC9vID0+ICJcXCheXFx8WyBcdF1c
XCk6ICIsCiAgICBxci9cLnJiJC9vICAgICAgICAgPT4gIl5bXHQgXSpcXChjbGFzc1xcfG1vZHVs
ZVxcfGRlZlxcKSAiLAopOwoKIyBJZ25vcmUgd2hpdGVzcGFjZSBpbiBodW1hbiByZWFkYWJsZSBk
aWZmcz8gKCctdycgb3B0aW9uIHRvIGRpZmYpCiMKJGhyX2lnbndoaXRlID0gMDsKCiMgSWdub3Jl
IGRpZmZzIHdoaWNoIGFyZSBjYXVzZWQgYnkga2V5d29yZCBzdWJzdGl0dXRpb24sICRJZCBhbmQg
ZnJpZW5kcz8KIyAoJy1raycgb3B0aW9uIHRvIHJjc2RpZmYpCiMKJGhyX2lnbmtleXN1YnN0ID0g
MTsKCiMgVGhlIHdpZHRoIG9mIHRoZSB0ZXh0aW5wdXQgb2YgdGhlICJyZXF1ZXN0IGRpZmYiIGZv
cm0uCiMKJGlucHV0VGV4dFNpemUgPSAxMjsKCiMgQ3VzdG9tIHBlciBNSU1FIHR5cGUgZGlmZiB0
b29scywgdXNlZCBmb3IgY29tcGFyaW5nIGJpbmFyeSBmaWxlcyBzdWNoIGFzCiMgc3ByZWFkc2hl
ZXRzLCBpbWFnZXMgZXRjLiAgRWFjaCBrZXkgaXMgYSBNSU1FIHR5cGUgaW4gbG93ZXJjYXNlLgoj
IEVhY2ggdmFsdWUgaXMgYW4gYXJyYXkgcmVmIG9mIGF2YWlsYWJsZSBkaWZmIHRvb2xzIGZvciB0
aGF0IHR5cGUsIGVhY2ggb2YKIyB3aGljaCBpcyBhIGhhc2ggcmVmIHdpdGggdmFsdWVzIChtYW5k
YXRvcnkgd2hlcmUgZGVmYXVsdCBub3QgbGlzdGVkKToKIyAgIG5hbWU6IHRoZSBuYW1lIHRvIHNo
b3cgaW4gdGhlIFVJIGZvciB0aGlzIGRpZmYgdHlwZQojICAgY21kOiAgZnVsbCBwYXRoIHRvIGV4
ZWN1dGFibGUKIyAgIGFyZ3M6IGFyZ3VtZW50cyBhcyBhbiBhcnJheSByZWYgKG5vdCBzdHJpbmch
LCBkZWZhdWx0cyB0byBubyBhcmd1bWVudHMpCiMgICB0eXBlOiBvdXRwdXQgTUlNRSB0eXBlIChk
ZWZhdWx0cyB0byB0ZXh0L3BsYWluKQojCiVESUZGX0NPTU1BTkRTID0gKAogICMndGV4dC94bWwn
ID0+IFsKICAjICB7IG5hbWUgPT4gJ1hNTGRpZmYnLAogICMgICAgY21kICA9PiAkQ01Ee3htbGRp
ZmZ9LAogICMgIH0sCiAgIyAgeyBuYW1lID0+ICdYTUxkaWZmIChYVXBkYXRlKScsCiAgIyAgICBj
bWQgID0+ICRDTUR7eG1sZGlmZn0sCiAgIyAgICBhcmdzID0+IFsgcXcoLXgpIF0sCiAgIyAgICB0
eXBlID0+ICd0ZXh0L3htbCcsCiAgIyAgfSwKICAjXSwKKTsKCiMKIyBNaW1lIHR5cGVzCiMKCiMg
VGhlIE1JTUUgdHlwZSBsb29rdXAgd29ya3MgbGlrZSB0aGlzOgojIDEpIExvb2sgdXAgZnJvbSAl
TVRZUEVTIGJlbG93IHdpdGggdGhlIGZpbGUgbmFtZSBleHRlbnNpb24gKHN1ZmZpeCkuCiMgMikg
SWYgbm90IGZvdW5kLCB1c2UgdGhlIE1JTUU6OlR5cGVzKDMpIG1vZHVsZSBpZiBpdCdzIGF2YWls
YWJsZS4KIyAzKSBJZiBub3QgZm91bmQsIGxvb2t1cCBmcm9tIHRoZSAkbWltZV90eXBlcyBmaWxl
IChzZWUgYmVsb3cpLgojIDQpIElmIG5vdCBmb3VuZCwgdHJ5ICVNVFlQRVN7JyonfS4KIyA1KSBJ
ZiBub3QgZm91bmQsIHVzZSAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJyBpZiB0aGUgZmlsZSdz
IGtleXdvcmQKIyAgICBzdWJzdGl0dXRpb24gbW9kZSBpcyBiIChpZS4gdGhlIGZpbGUgd2FzIGNo
ZWNrZWQgaW4gYXMgYmluYXJ5IHRvIENWUyksCiMgICAgJ3RleHQvcGxhaW4nIG90aGVyd2lzZS4K
CiMgUXVpY2sgTUlNRSB0eXBlIGxvb2t1cDsgbWFwcyBmaWxlbmFtZSBleHRlbnNpb25zIHRvIE1J
TUUgdHlwZXMuCiMgQWRkIGNvbW1vbiBtYXBwaW5ncyBoZXJlIGZvciBmYXN0IGxvb2t1cC4gIFlv
dSBjYW4gYWxzbyB1c2UgdGhpcwojIHRvIG92ZXJyaWRlIE1JTUU6OlR5cGVzKDMpIG9yIHRoZSAk
bWltZV90eXBlcyBmaWxlIChzZWUgYmVsb3cpLgojCiVNVFlQRVMgPSAoCgkiaHRtbCIgID0+ICJ0
ZXh0L2h0bWwiLAoJInNodG1sIiA9PiAidGV4dC9odG1sIiwKCSJnaWYiICAgPT4gImltYWdlL2dp
ZiIsCgkianBlZyIgID0+ICJpbWFnZS9qcGVnIiwKCSJqcGciICAgPT4gImltYWdlL2pwZWciLAoJ
InBuZyIgICA9PiAiaW1hZ2UvcG5nIiwKCSJ4cG0iICAgPT4gImltYWdlL3hwbSIsCiMJIioiICAg
ICA9PiAidGV4dC9wbGFpbiIsCik7CgojIFRoZSB0cmFkaXRpb25hbCBtaW1lLnR5cGVzIGZpbGUs
IGVnLiB0aGUgb25lIGZyb20gQXBhY2hlIGlzIGZpbmUuCiMgU2VlIGFib3ZlIHdoZXJlIHRoaXMg
Z2V0cyB1c2VkLgojCiRtaW1lX3R5cGVzID0gJy91c3IvbG9jYWwvZXRjL2FwYWNoZS9taW1lLnR5
cGVzJzsKCiMgQ2hhcnNldCBhcHBlbmRlZCB0byB0aGUgQ29udGVudC1UeXBlIEhUVFAgaGVhZGVy
IGZvciB0ZXh0LyogTUlNRSB0eXBlcy4KIyBOb3RlIHRoYXQgdGhlIHdlYiBzZXJ2ZXIgbWF5IGRl
ZmF1bHQgdG8gc29tZSBjaGFyc2V0IHdoaWNoIG1heSB0YWtlIGVmZmVjdAojIGlmIHlvdSBsZWF2
ZSB0aGlzIHBhcmFtZXRlciBlbXB0eSBvciB1bnNldC4KIyBGb3IgQXBhY2hlLCBzZWUgYWxzbyB0
aGUgQWRkRGVmYXVsdENoYXJzZXQgZGlyZWN0aXZlLgojCiRjaGFyc2V0ID0gJyc7CgojIGUuZy4K
IyRjaGFyc2V0ID0gJHdoZXJlID1+IG0sL3J1Wy9fLV0sID8gJ2tvaTgtcicKIyAgOiAkd2hlcmUg
PX4gbSwvemhbL18tXSwgPyAnYmlnNScKIyAgOiAkd2hlcmUgPX4gbSwvamFbL18tXSwgPyAneC1l
dWMtanAnCiMgIDogJHdoZXJlID1+IG0sL2tvWy9fLV0sID8gJ3gtZXVjLWtyJwojICA6ICdpc28t
ODg1OS0xJzsKCiMgT3V0cHV0IGZpbHRlcgojCiRvdXRwdXRfZmlsdGVyID0gJyc7CgojIGUuZy4K
IyMgdW5pZnkvY29udmVydCBKYXBhbmVzZSBjb2RlIGludG8gRVVDLUpQCiMkb3V0cHV0X2ZpbHRl
cj0gJy91c3IvbG9jYWwvYmluL25rZiAtZSc7CgojIyMjIyMjIyMjIyMjIwojIE1pc2MKIyMjIyMj
IyMjIyMjIyMKCiMgQWxsb3cgYW5ub3RhdGlvbiBvZiBmaWxlcz8gIFNlZSBhbHNvIEBhbm5vdGF0
ZV9vcHRpb25zIGJlbG93LgojCiRhbGxvd19hbm5vdGF0ZSA9IDE7CgojIEFsbG93IEhUTUxpemVk
IHZlcnNpb25zIG9mIGZpbGVzPwojCiRhbGxvd19tYXJrdXAgPSAxOwoKIyBBbGxvdyBDVlN3ZWIg
dG8gY3JlYXRlIG1haWx0bzogbGlua3MgZnJvbSBlbWFpbCBhZGRyZXNzZXMgaW4gdmFyaW91cwoj
IEhUTUxpemVkIHZpZXdzPyAgRGVmYXVsdDogeWVzLgojCiMkYWxsb3dfbWFpbHRvcyA9IDA7Cgoj
IyBFeHRyYSBoeXBlcmxpbmtpbmcgbWVhbnMgaHlwZXJsaW5rcyB0byBidWcgdHJhY2tpbmcgc3lz
dGVtcyBhbmQgbWFudWFsIHBhZ2UKIyMgZ2F0ZXdheXMsIHNlZSAkcHJjZ2kgYW5kICRtYW5jZ2kg
YW5kIHJlbGF0ZWQgb3B0aW9ucyBhYm92ZS4KCiMgQWxsb3cgZXh0cmEgaHlwZXJsaW5raW5nIChz
dWNoIGFzIFBSIGNyb3NzLXJlZmVyZW5jZXMpIGluIGxvZ3M/CiMgRGVmYXVsdDogeWVzLgojCiMk
YWxsb3dfbG9nX2V4dHJhID0gMDsKCiMgQWxsb3cgZXh0cmEgaHlwZXJsaW5raW5nIGluIGRpcmVj
dG9yeSB2aWV3cz8KIwokYWxsb3dfZGlyX2V4dHJhID0gMTsKCiMgQWxsb3cgZXh0cmEgaHlwZXJs
aW5raW5nIGluIHNvdXJjZSBjb2RlL2Zvcm1hdHRlZCBkaWZmIHZpZXdzPwojCiRhbGxvd19zb3Vy
Y2VfZXh0cmEgPSAxOwoKIyBBbGxvdyBjb21wcmVzc2lvbiB3aXRoIGd6aXAgaW4gZ2VuZXJhbD8g
IE5vdGUgdGhhdCB0aGlzIGFsc28gcmVxdWlyZXMKIyB0aGF0IHRoZSBicm93c2VyIHN1cHBvcnRz
IGl0LCBhbmQgd2lsbCBiZSBkaXNhYmxlZCBvbiB0aGUgZmx5IHdoZW4gbmVjZXNzYXJ5LgojCiMk
YWxsb3dfY29tcHJlc3MgPSAxOwoKIyBVc2UgSmF2YVNjcmlwdCBpbiB0aGUgVUk/CiMKJHVzZV9q
YXZhX3NjcmlwdCA9IDE7CgojIFNob3cgYSBmb3JtIGZvciBzZXR0aW5nIG9wdGlvbnMgaW4gdGhl
IGRpcmVjdG9yeSB2aWV3PwojCiRlZGl0X29wdGlvbl9mb3JtID0gMTsKCiMgU2hvdyBsYXN0IGNo
YW5nZWxvZyBtZXNzYWdlIGZvciBzdWJkaXJlY3Rvcmllcz8KIyBUaGUgY3VycmVudCBpbXBsZW1l
bnRhdGlvbiBtYWtlcyBtYW55IGFzc3VtcHRpb25zIGFuZCBtYXkgc2hvdyB0aGUKIyBpbmNvcnJl
Y3QgZmlsZSBhdCBzb21lIHRpbWVzLiBUaGUgbWFpbiBhc3N1bXB0aW9uIGlzIHRoYXQgdGhlIGxh
c3QKIyBtb2RpZmllZCBmaWxlIGhhcyB0aGUgbmV3ZXN0IGZpbGVkYXRlLiBCdXQgc29tZSBDVlMg
b3BlcmF0aW9ucwojIHRvdWNoIHRoZSBmaWxlIGV2ZW4gd2hlbiBhIG5ldyB2ZXJzaW9uIGlzbid0
IGNoZWNrZWQgaW4sIGFuZCBUQUcKIyBiYXNlZCBicm93c2luZyBlc3NlbnRpYWxseSBwdXRzIHRo
aXMgb3V0IG9mIG9yZGVyIHVubGVzcyB0aGUgbGFzdAojIGNoZWNraW4gd2FzIG9uIHRoZSBzYW1l
IHRhZyBhcyB5b3UgYXJlIHZpZXdpbmcuCiMgRW5hYmxlIHRoaXMgaWYgeW91IGxpa2UgdGhlIGZl
YXR1cmUsIGJ1dCBkb24ndCByZWx5IG9uIGNvcnJlY3QgcmVzdWx0cy4KIwojJHNob3dfc3ViZGly
X2xhc3Rtb2QgPSAxOwoKIyBTaG93IENWUyBsb2cgd2hlbiB2aWV3aW5nIGZpbGUgY29udGVudHM/
CiMKJHNob3dfbG9nX2luX21hcmt1cCA9IDE7CgojIFByZWZvcm1hdCB3aGVuIHZpZXdpbmcgZmls
ZSBjb250ZW50cz8gIFRoaXMgc2hvdWxkIGJlIHR1cm5lZCBvZmYKIyB3aGVuIHlvdSBoYXZlIGZp
bGVzIGluIHRoZSByZXBvc2l0b3J5IHRoYXQgYXJlIGluIGEgbXVsdGlieXRlCiMgZW5jb2Rpbmcg
d2hpY2ggdXNlcyBIVE1MIHNwZWNpYWwgY2hhcmFjdGVycyAoWzw+JiJdKSBhcyBwYXJ0IG9mIGEK
IyBtdWx0aWJ5dGUgY2hhcmFjdGVyLiAoc3VjaCBhcyBpc28tMjAyMi1qcCwgU2hpZnRKSVMsIGV0
Yy4pCiMgT3RoZXJ3aXNlIHRob3NlIGZpbGVzIHdpbGwgZ2V0IHNjcmV3ZWQgdXAgaW4gbWFya3Vw
LgojCiMgTm90ZTogZW5zY3JpcHQoMSkgaGlnaGxpZ2h0aW5nIGlzIHByZWZlcnJlZCBvdmVyIHRo
ZSBidWlsdC1pbiBwcmVmb3JtYXR0aW5nLAojIGllLiB0aGlzIGhhcyBubyBlZmZlY3QgaWYgJGFs
bG93X2Vuc2NyaXB0IGlzIHRydWUgYW5kIGVuc2NyaXB0IGNhbiBoaWdobGlnaHQKIyB0aGUgZmls
ZS4KIwojJHByZWZvcm1hdF9pbl9tYXJrdXAgPSAxOwoKIyBEZWZhdWx0IHRhYiB3aWR0aCB1c2Vk
IHRvIGV4cGFuZCB0YWJzIHRvIHNwYWNlcyBpbiB2YXJpb3VzIEhUTUxpemVkIHZpZXdzLgojIE5v
dGUgdGhhdCBDVlN3ZWIgc2NhbnMgdGhlIGZpcnN0IGZldyBsaW5lcyBvZiBzb3VyY2VzIGZvciBz
b21lIGNvbW1vbiBlZGl0b3IKIyBkaXJlY3RpdmVzIGNvbnRyb2xsaW5nIHRoZSB0YWIgd2lkdGgu
ICBJdCB1c2VzIHRoZSB2YWx1ZSBmcm9tIHRoZW0gaWYgZm91bmQsCiMgZmFsbGluZyBiYWNrIHRv
IHRoZSB2YWx1ZSBvZiAkdGFic3RvcCBpZiBub3QuICBEZWZhdWx0OiA4LgojCiMkdGFic3RvcCA9
IDQ7CgojIElmIHlvdSB3aXNoIHRvIGRpc3BsYXkgYWJzb2x1dGUgdGltZXMgaW4geW91ciBsb2Nh
bCB0aW1lem9uZSwKIyB0aGVuIGRlZmluZSBAbXl0eiBhbmQgZmlsbCBpbiB0aGUgc3RyaW5ncyBm
b3IgeW91ciBzdGFuZGFyZCBhbmQKIyBkYXlsaWdodCB0aW1lLiBOb3RlIHRoYXQgeW91IG11c3Qg
YWxzbyBtYWtlIHN1cmUgdGhlIHN5c3RlbQojIHRpbWV6b25lIGlzIGNvcnJlY3RseSBzZXQuCiMK
I0BteXR6PSgiRVNUIiwgIkVEVCIpOwoKIyBDVlN3ZWIgaXMgZnJpZW5kbHkgdG8gY2FjaGVzIGJ5
IHNlbmRpbmcgdGhlIEhUVFAgTGFzdC1Nb2RpZmllZAojIGhlYWRlciBjb3JyZXNwb25kaW5nIHRv
IHRoZSBzZW50IGNvbnRlbnQuICBJbiB0aGUgY2FzZSBvZiBhCiMgY2hlY2tvdXQsIHRoaXMgbWF5
IHJlcXVpcmUgcnVubmluZyByY3Nsb2cgb24gdGhlIGZpbGUgc29sZWx5IGZvciB0aGUKIyBwdXJw
b3NlIG9mIHJldHJpZXZpbmcgdGhlIHRpbWVzdGFtcCB0byBiZSBzZW50LiAgSWYgeW91IGhhdmUg
YSBzbG93CiMgc2VydmVyLCB5b3UgbWF5IHdhbnQgdG8gdHVybiB0aGlzIG9mZiBmb3IgYSBzbWFs
bCBwZXJmb3JtYW5jZSBnYWluLgojCiR1c2VfbW9kZGF0ZSA9IDE7CgojIE1heGltdW0gbnVtYmVy
IG9mIGZpbGVuYW1lcyB0byBwYXNzIHRvIHJsb2coMSkgaW4gb25lIGNvbW1hbmQuCiMgSWYgeW91
IHNlZSAiRmFpbGVkIHRvIHNwYXduIEdOVSBybG9nIiBlcnJvcnMgd2l0aCBkaXJlY3RvcmllcyBj
b250YWluaW5nCiMgbG90cyBvZiBmaWxlcywgZXhwZXJpbWVudCBieSBzZXR0aW5nIHRoaXMgdG8g
ZGlmZmVyZW50IHZhbHVlcyBhbmQgc2VlIGlmCiMgdGhlIGVycm9yIHN0aWxsIG9jY3Vycy4gIEEg
Z29vZCB2YWx1ZSB0byBzdGFydCBmcm9tIHdvdWxkIGJlIGVnLiAyMDAuCiMgSnVzdCBjb21tZW50
IHRoaXMgb3V0IGlmIHlvdSdyZSBub3QgYml0dGVuIGJ5IHRoZSBwcm9ibGVtLgojCiMkZmlsZV9s
aXN0X2xlbiA9IDIwMDsKCiMgQWxsb3cgZ3JhcGhpY2FsIHJlcHJlc2VudGF0aW9ucyBvZiBmaWxl
IHJldmlzaW9ucyBhbmQgYnJhbmNoZXMgd2l0aCBDdnNHcmFwaD8KIwokYWxsb3dfY3ZzZ3JhcGgg
PSAkQ01Ee2N2c2dyYXBofSA/IDEgOiAwOwoKIyBQYXRoIHRvIHRoZSBDdnNHcmFwaCBjb25maWd1
cmF0aW9uIGZpbGUuICBPbmx5IHVzZWQgaWYgJGFsbG93X2N2c2dyYXBoCiMgaXMgdHJ1ZS4gIExl
YXZlIHRoaXMgZW1wdHkgb3IgY29tbWVudCBpdCBvdXQgdG8gbWFrZSBjdnNncmFwaCgxKSB1c2Ug
aXRzCiMgZGVmYXVsdCBjb25maWd1cmF0aW9uIGZpbGUuICBOb3RlIHRoYXQgQ1ZTd2ViIHdpbGwg
b3ZlcnJpZGUgc29tZSBvZiB0aGUKIyBzZXR0aW5ncyBpbiB0aGUgY29uZmlndXJhdGlvbiBmaWxl
IHdpdGggY29tbWFuZCBsaW5lIG9wdGlvbnMsIHNlZQojIGRvR3JhcGgoKSBhbmQgZG9HcmFwaFZp
ZXcoKSBpbiBjdnN3ZWIuY2dpIGZvciBkZXRhaWxzLgojCiMkY3ZzZ3JhcGhfY29uZmlnID0gIi9l
dGMvY3ZzZ3JhcGguY29uZiI7CgojIFVSTCB0byB0aGUgQ1ZTSGlzdG9yeSBzY3JpcHQuICBUaGlz
IHNob3VsZCBiZSBhYnNvbHV0ZSAoYnV0IGRvZXMgbm90IG5lZWQKIyB0byBpbmNsdWRlIHRoZSBo
b3N0IGFuZCBwb3J0IGlmIHRoZSBzY3JpcHQgaXMgb24gdGhlIHNhbWUgc2VydmVyIGFzCiMgQ1ZT
d2ViKS4KIyRjdnNoaXN0b3J5X3VybCA9ICIvY2dpLWJpbi9jdnNoaXN0b3J5LmNnaSI7CgojIFdo
ZXRoZXIgdG8gYWxsb3cgZG93bmxvYWRpbmcgYSB0YXJiYWxsIG9yIGEgemlwIG9mIHRoZSBjdXJy
ZW50IGRpcmVjdG9yeS4KIyBXaGlsZSBkb3dubG9hZGluZyBvZiB0aGUgZW50aXJlIHJlcG9zaXRv
cnkgaXMgZGlzYWxsb3dlZCwgZGVwZW5kaW5nIG9uCiMgdGhlIGRpcmVjdG9yeSB0aGlzIG1heSB0
YWtlIGEgbG90IG9mIHRpbWUgYW5kIGRpc2sgc3BhY2UuICBGb3Igc29tZSBDVlMKIyB2ZXJzaW9u
cywgdGhlIHVzZXIgYWNjb3VudCBydW5uaW5nIENWU3dlYiBuZWVkcyB3cml0ZSBhY2Nlc3MgdG8K
IyBDVlNST09UL3ZhbC10YWdzLiAgU2VlIGFsc28gdGhlIHRhciwgZ3ppcCBhbmQgemlwIG9wdGlv
bnMgYmVsb3cuCiMKIyRhbGxvd190YXIgPSAoKCRDTUR7dGFyfSAmJiAkQ01Ee2d6aXB9KSB8fCAk
Q01Ee3ppcH0pID8gMSA6IDA7CgojIE9wdGlvbnMgdG8gcGFzcyB0byB0YXIoMSkuCiMgRm9yIGV4
YW1wbGU6IEB0YXJfb3B0aW9ucyA9IHF3KC0taWdub3JlLWZhaWxlZC1yZWFkKTsKIyBHTlUgdGFy
IGhhcyBzb21lIHVzZWZ1bCBvcHRpb25zIGFnYWluc3QgdW5leHBlY3RlZCBlcnJvcnMuCiMgT3Ro
ZXIgdXNlZnVsIG9wdGlvbnMgaW5jbHVkZSAiLS1vd25lcj0wIiBhbmQgIi0tZ3JvdXA9MCIsIHNl
ZQojIHRoZSB0YXIoMSkgKG9yIGd0YXIoMSkpIG1hbnBhZ2UgZm9yIGRldGFpbHMuCiMKQHRhcl9v
cHRpb25zID0gcXcoKTsKCiMgT3B0aW9ucyB0byBwYXNzIHRvIGd6aXAoMSkgd2hlbiBjb21wcmVz
c2luZyBhIHRhcmJhbGwgdG8gZG93bmxvYWQuCiMgRm9yIGV4YW1wbGU6IEBnemlwX29wdGlvbnMg
PSBxdygtMyk7CiMgVHJ5IGxvd2VyIGNvbXByZXNzaW9uIGxldmVsIHRoYW4gNiAoZGVmYXVsdCkg
aWYgeW91IHdhbnQgZmFzdGVyCiMgY29tcHJlc3Npb24sIG9yIGhpZ2hlciBmb3IgYmV0dGVyIGNv
bXByZXNzaW9uLgojCkBnemlwX29wdGlvbnMgPSBxdygpOwoKIyBPcHRpb25zIHRvIHBhc3MgdG8g
emlwKDEpIHdoZW4gY29tcHJlc3NpbmcgYSB6aXAgYXJjaGl2ZSB0byBkb3dubG9hZC4KIyBGb3Ig
ZXhhbXBsZTogQHppcF9vcHRpb25zID0gcXcoLTMpOwojIFRyeSBsb3dlciBjb21wcmVzc2lvbiBs
ZXZlbCB0aGFuIDYgKGRlZmF1bHQpIGlmIHlvdSB3YW50IGZhc3RlcgojIGNvbXByZXNzaW9uLCBv
ciBoaWdoZXIgZm9yIGJldHRlciBjb21wcmVzc2lvbi4KIwpAemlwX29wdGlvbnMgPSBxdygtcSk7
CgojIE9wdGlvbnMgdG8gcGFzcyB0byBjdnMoMSkuCiMgRm9yIGN2cyB2ZXJzaW9ucyAxLjExIHRv
IDEuMTEuNiAoYnJva2VuIGluIDwgMS4xMSwgcmVtb3ZlZCBpbiAxLjExLjcpLCB5b3UKIyBjYW4g
dXNlIHRoZSAnLWwnIG9wdGlvbiB0byBwcmV2ZW50IGN2cyBmcm9tIHdyaXRpbmcgdG8gdGhlIGhp
c3RvcnkgZmlsZS4KIyBGb3Igb3RoZXIgY3ZzIHZlcnNpb25zLCBlaXRoZXIgc3VwcHJlc3MgaGlz
dG9yeSBsb2dnaW5nIGJ5IHVzaW5nIHRoZQojIExvZ0hpc3RvcnkgcGFyYW1ldGVyIGluIENWU1JP
T1QvY29uZmlnIG9yIG1ha2Ugc3VyZSB0aGF0IHRoZSBDVlN3ZWIgdXNlcgojIGNhbiByZWFkIGFu
ZCB3cml0ZSB0byBDVlNST09UL2hpc3RvcnkuCiMgRnJlZUJTRCdzIGFuZCBPcGVuQlNEJ3MgY3Zz
KDEpIGhhcyBsb25nIHNpbmNlIHN1cHBvcnRlZCAtUiAocmVhZCBvbmx5IGFjY2VzcwojIG1vZGUp
IG9wdGlvbiwgd2hpY2ggY29uc2lkZXJhYmx5IHNwZWVkcyB1cCBjaGVja291dHMgb3ZlciBORlMu
ICBGb3Igb3RoZXIKIyBwbGF0Zm9ybXMsIHRoZSAtUiBvcHRpb24gYW5kIHRoZSBDVlNSRUFET05M
WUZTIGVudmlyb25tZW50IHZhcmlhYmxlIGFyZQojIGF2YWlsYWJsZSBpbiBjdnMgPj0gMS4xMi4x
LiAgQSBzaW1pbGFyIGVmZmVjdCBpcyBwcm92aWRlZCBieSAtdSBvbiBOZXRCU0QuCiMKQGN2c19v
cHRpb25zID0gcXcoLWYpOwpwdXNoIEBjdnNfb3B0aW9ucywgJy1SJyBpZiAoJF5PIGVxICdmcmVl
YnNkJyB8fCAkXk8gZXEgJ29wZW5ic2QnKTsKcHVzaCBAY3ZzX29wdGlvbnMsICctdScgaWYgKCRe
TyBlcSAnbmV0YnNkJyk7CiMgT25seSBhZmZlY3RzIGN2cyA+PSAxLjEyLjEsIGJ1dCBkb2Vzbid0
IGh1cnQgb2xkZXIgb25lcy4KJEVOVntDVlNSRUFET05MWUZTfSA9IDEgdW5sZXNzIGV4aXN0cygk
RU5We0NWU1JFQURPTkxZRlN9KTsKCiMgT3B0aW9ucyB0byBwYXNzIHRvIHRoZSAnY3ZzIGFubm90
YXRlJyBjb21tYW5kLCB1c3VhbGx5IHRoZSBub3JtYWwKIyBAY3ZzX29wdGlvbnMgYXJlIGdvb2Qg
ZW5vdWdoIGhlcmUuCiMgVG8gbWFrZSBhbm5vdGF0ZSB3b3JrIGFnYWluc3QgYSByZWFkIG9ubHkg
cmVwb3NpdG9yeSwgYWRkIC1uLCBpZS46CiMgQGFubm90YXRlX29wdGlvbnMgPSAoQGN2c19vcHRp
b25zLCAnLW4nKTsKIwpAYW5ub3RhdGVfb3B0aW9ucyA9IEBjdnNfb3B0aW9uczsKCiMgT3B0aW9u
cyB0byBwYXNzIHRvIHJjc2RpZmYoMSkuCiMgUHJvYmFibHkgdGhlIG9ubHkgdXNlZnVsIG9uZSBo
ZXJlIGlzIC1xIChzdXBwcmVzcyBkaWFnbm9zdGljIG91dHB1dCkuCiMKQHJjc2RpZmZfb3B0aW9u
cyA9IHF3KC1xKTsKCiMgRW5hYmxlcyBzeW50YXggaGlnaGxpZ2h0aW5nIHVzaW5nIEdOVSBFbnNj
cmlwdCBpZiBzZXQuCiMgWW91IHdpbGwgbmVlZCBHTlUgRW5zY3JpcHQgdmVyc2lvbiAxLjYuMyBv
ciBuZXdlciBmb3IgdGhpcyB0byB3b3JrLgojCiMkYWxsb3dfZW5zY3JpcHQgPSAkQ01Ee2Vuc2Ny
aXB0fSA/IDEgOiAwOwoKIyBPcHRpb25zIHRvIHBhc3MgdG8gZW5zY3JpcHQoMSkuCiMgRG8gbm90
IHNldCB0aGUgLXEsIC0tbGFuZ3VhZ2UsIC1vIG9yIC0taGlnaGxpZ2h0IG9wdGlvbnMgaGVyZS4K
IyBNb3N0IHVzZWZ1bCBzdHlsZXMgYXJlIHByb2JhYmx5IGVtYWNzLCBlbWFjc192ZXJib3NlIGFu
ZCBtc3ZjLgojCkBlbnNjcmlwdF9vcHRpb25zID0gcXcoLS1zdHlsZT1lbWFjcyAtLWNvbG9yPTEp
OwoKIyBFbnNjcmlwdCBoaWdobGlnaHQgcnVsZSB0byBmaWxlbmFtZSByZWdleCBtYXBwaW5ncy4g
IFRoZSBzZXQgb2YgdXNlZnVsCiMgbWFwcGluZ3MgZGVwZW5kcyBvbiB3aGF0IGhpZ2hsaWdodCBy
dWxlcyB0aGUgc3lzdGVtIGhhcyBpbnN0YWxsZWQuCiMKJWVuc2NyaXB0X3R5cGVzID0KICAoCiAg
ICdhZGEnICAgICAgICAgID0+IHFyL1wuYWQoc3xifGEpJC9vLAogICAnYXNtJyAgICAgICAgICA9
PiBxci9cLltTc10kL28sCiAgICdhd2snICAgICAgICAgID0+IHFyL1wuYXdrJC9vLAogICAnYmFz
aCcgICAgICAgICA9PiBxci9cLihiYXNoKF9wcm9maWxlfHJjKXxpbnB1dHJjKSQvbywKICAgJ2Mn
ICAgICAgICAgICAgPT4gcXIvXC4oY3xoKSQvbywKICAgJ2NoYW5nZWxvZycgICAgPT4gcXIvXmNo
YW5nZWxvZyQvaW8sCiAgICdjcHAnICAgICAgICAgID0+IHFyL1wuKGNcK1wrfEN8SHxjcHB8Y2N8
Y3h4KSQvbywKICAgJ2NzaCcgICAgICAgICAgPT4gcXIvXC4oY3NoKHJjKT98bG9nKGlufG91dCl8
aGlzdG9yeSkkL28sCiAgICdlbGlzcCcgICAgICAgID0+IHFyL1wuZShsfG1hY3MpJC9vLAogICAn
Zm9ydHJhbicgICAgICA9PiBxci9cLltmRl0kL28sCiAgICdoYXNrZWxsJyAgICAgID0+IHFyL1wu
KGw/aHxsP2cpcyQvbywKICAgJ2h0bWwnICAgICAgICAgPT4gcXIvXC54P2h0bWw/JC9vLAogICAn
aWRsJyAgICAgICAgICA9PiBxci9cLmlkbCQvbywKICAgJ2luZicgICAgICAgICAgPT4gcXIvXC5p
bmYkL2lvLAogICAnamF2YScgICAgICAgICA9PiBxci9cLmphdmEkL28sCiAgICdqYXZhc2NyaXB0
JyAgID0+IHFyL1wuKGpzfHBhYykkL28sCiAgICdrc2gnICAgICAgICAgID0+IHFyL1wua3NoJC9v
LAogICAnbTQnICAgICAgICAgICA9PiBxci9cLm00JC9vLAogICAnbWFrZWZpbGUnICAgICA9PiBx
ci8oR05VKT9bTW1dYWtlZmlsZSg/IVwuUExcYil8XC4obWE/a2U/fGFtKSQvbywKICAgJ21hdGxh
YicgICAgICAgPT4gcXIvXC5tJC9vLAogICAnbnJvZmYnICAgICAgICA9PiBxci9cLm1hbiQvbywK
ICAgJ3Bhc2NhbCcgICAgICAgPT4gcXIvXC5wKGFzfHApPyQvaW8sCiAgICdwZXJsJyAgICAgICAg
ID0+IHFyL1wucChtfChlcik/bCkkL2lvLAogICAncG9zdHNjcmlwdCcgICA9PiBxci9cLmU/cHMk
L2lvLAogICAncHl0aG9uJyAgICAgICA9PiBxci9cLnB5JC9vLAogICAncmZjJyAgICAgICAgICA9
PiBxci9cYigocmZjfGRyYWZ0KVwuLipcLnR4dCkkL28sCiAgICdzY2hlbWUnICAgICAgID0+IHFy
L1wuKHNjbXxzY2hlbWUpJC9vLAogICAnc2gnICAgICAgICAgICA9PiBxci9cLnNoJC9vLAogICAn
c2tpbGwnICAgICAgICA9PiBxci9cLmlsJC9vLAogICAnc3FsJyAgICAgICAgICA9PiBxci9cLnNx
bCQvbywKICAgJ3N0YXRlcycgICAgICAgPT4gcXIvXC5zdCQvbywKICAgJ3N5bm9wc3lzJyAgICAg
PT4gcXIvXC5zKGNyfHluKHRoKT8pJC9vLAogICAndGNsJyAgICAgICAgICA9PiBxci9cLnRjbCQv
bywKICAgJ3Rjc2gnICAgICAgICAgPT4gcXIvXC50Y3NocmMkL28sCiAgICd0ZXgnICAgICAgICAg
ID0+IHFyL1wudGV4JC9vLAogICAndmJhJyAgICAgICAgICA9PiBxci9cLnZiYSQvbywKICAgJ3Zl
cmlsb2cnICAgICAgPT4gcXIvXC4odnx2aCkkL28sCiAgICd2aGRsJyAgICAgICAgID0+IHFyL1wu
dmhkbD8kL28sCiAgICd2cm1sJyAgICAgICAgID0+IHFyL1wud3JsJC9vLAogICAnd21sc2NyaXB0
JyAgICA9PiBxci9cLndtbHMoY3JpcHQpPyQvbywKICAgJ3pzaCcgICAgICAgICAgPT4gcXIvXC4o
enNoKGVudnxyYyl8eihwcm9maWxlfGxvZyhpbnxvdXQpKSkkL28sCiAgKTsKCiMgVHJvdWJsZXNo
b290aW5nOiBpbiBjYXNlIG9mIHByb2JsZW1zLCBzZXR0aW5nIHRoaXMgdG8gMSB3aWxsIGNhdXNl
IG1vcmUKIyBlcnJvciBvdXRwdXQgaW50byB5b3VyIHdlYiBzZXJ2ZXIgZXJyb3IgbG9nLiAgVW5k
ZXIgbm9ybWFsIG9wZXJhdGlvbiwKIyB0aGlzIHNob3VsZCBiZSBzZXQgdG8gMCBvciBjb21tZW50
ZWQgb3V0LgojCiMkREVCVUcgPSAxOwoKIyBFbmFibGUgdGhpcyB0byBsZXQgQ1ZTd2ViIGxvYWQg
ZXh0cmEgY29uZmlndXJhdGlvbiBmaWxlcyBmcm9tIHRoZSAiY29uZi5kIgojIHN1YmRpcmVjdG9y
eSBvZiB0aGUgZGlyZWN0b3J5IHRoaXMgZmlsZSBpcyBsb2NhdGVkIGluLiAgVGhpcyBlbmFibGVz
IHNpdGUKIyBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHdpdGhvdXQgaGF2aW5nIHRvIG1vZGlmeSB0
aGlzICJtYXN0ZXIiIGNvbmZpZ3VyYXRpb24KIyBmaWxlIChleGNlcHQgZm9yIGVuYWJsaW5nIHRo
aXMgZnVuY3Rpb25hbGl0eSBiZWxvdyA6KQojCmlmICgwKSB7CiAgbXkgJGNvbmZkaXIgPSBjYXRk
aXIoZGlybmFtZShfX0ZJTEVfXyksICdjb25mLmQnKTsKICBpZiAob3BlbmRpcihDT05GRCwgJGNv
bmZkaXIpKSB7CiAgICBteSBAZmlsZXMgPSBzb3J0KG1hcChjYXRmaWxlKCRjb25mZGlyLCAkXyks
IHJlYWRkaXIoQ09ORkQpKSk7CiAgICBjbG9zZShDT05GRCk7CiAgICBmb3IgbXkgJGNvbmZmaWxl
IChncmVwKC1mICYmIC1yIF8sIEBmaWxlcykpIHsKICAgICAgKCRjb25mZmlsZSkgPSAoJGNvbmZm
aWxlID1+IC8oLitcLmNvbmYpJC8pIG9yIG5leHQ7CiAgICAgIGRvICIkY29uZmZpbGUiIG9yIGNv
bmZpZ19lcnJvcigkY29uZmZpbGUsICRAKTsKICAgIH0KICB9Cn0KCjE7CgojIEVPRgo=
--001485394218abdf37047657fc8a
Content-Type: application/octet-stream; name="cvsweb.cgi"
Content-Disposition: attachment; filename="cvsweb.cgi"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_g109rmdi2

IyEvdXNyL2Jpbi9wZXJsIC1UCiMKIyBjdnN3ZWIgLSBhIENHSSBpbnRlcmZhY2UgdG8gQ1ZTIHRy
ZWVzLgojCiMgV3JpdHRlbiBpbiB0aGVpciBzcGFyZSB0aW1lIGJ5CiMgICAgICAgICAgICAgQmls
bCBGZW5uZXIgICAgICAgICAgPGZlbm5lckBGcmVlQlNELm9yZz4gICAob3JpZ2luYWwgd29yaykK
IyBleHRlbmRlZCBieSBIZW5uZXIgWmVsbGVyICAgICAgICA8emVsbGVyQHRoaW5rLmRlPiwKIyAg
ICAgICAgICAgICBIZW5yaWsgTm9yZHN0cm9tICAgICA8aG5vQGhlbS5wYXNzYWdlbi5zZT4KIyAg
ICAgICAgICAgICBLZW4gQ29hciAgICAgICAgICAgICA8Y29hckBBcGFjaGUuT3JnPgojICAgICAg
ICAgICAgIERpY2sgQmFsYXNrYSAgICAgICAgIDxkaWNrQGJ1Y2tvc29mdC5jb20+CiMgICAgICAg
ICAgICAgQWtpbm9yaSBNVVNIQSAgICAgICAgPGtudUBGcmVlQlNELm9yZz4KIyAgICAgICAgICAg
ICBKZW5zLVV3ZSBNYWdlciAgICAgICA8anVtQGhlbGlvcy5kZT4KIyAgICAgICAgICAgICBWaWxs
ZSBTa3l0dO+/vSAgICAgICAgIDxzY29wQEZyZWVCU0Qub3JnPgojICAgICAgICAgICAgIFZhc3Np
bGlpIEtoYWNoYXR1cm92IDx2YXNzaWxpaUB0YXJ1bnoub3JnPgojCiMgQmFzZWQgb246CiMgKiBC
aWxsIEZlbm5lcnMgY3Zzd2ViLmNnaSByZXZpc2lvbiAxLjI4IGF2YWlsYWJsZSBmcm9tOgojICAg
aHR0cDovL3d3dy5GcmVlQlNELm9yZy9jZ2kvY3Zzd2ViLmNnaS93d3cvZW4vY2dpL2N2c3dlYi5j
Z2kKIwojIENvcHlyaWdodCAoYykgMTk5Ni0xOTk4IEJpbGwgRmVubmVyCiMgICAgICAgICAgIChj
KSAxOTk4LTE5OTkgSGVubmVyIFplbGxlcgojICAgICAgICAgICAoYykgMTk5OSAgICAgIEhlbnJp
ayBOb3Jkc3Ryb20KIyAgICAgICAgICAgKGMpIDIwMDAtMjAwMiBBa2lub3JpIE1VU0hBCiMgICAg
ICAgICAgIChjKSAyMDAyLTIwMDUgVmlsbGUgU2t5dHTvv70KIyBBbGwgcmlnaHRzIHJlc2VydmVk
LgojCiMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCiMgYXJlIG1ldDoKIyAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAojICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAojICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKIyAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgojCiMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORAojIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQojIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCiMgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUKIyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAojIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCiMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
CiMgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QKIyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCiMgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgoj
IFNVQ0ggREFNQUdFLgojCiMgJEZyZWVCU0Q6IHByb2plY3RzL2N2c3dlYi9jdnN3ZWIuY2dpLHYg
MS4yOTUgMjAwNS8wOS8yNSAyMDoyODo1MSBzY29wIEV4cCAkCiMgJElkOiBjdnN3ZWIuY2dpLHYg
MS4xMTIgMjAwMS8wNy8yNCAxMzowMzoxNiBoemVsbGVyIEV4cCAkCiMgJElkYWVtb25zOiAvaG9t
ZS9jdnMvY3Zzd2ViL2N2c3dlYi5jZ2ksdiAxLjg0IDIwMDEvMTAvMDcgMjA6NTA6MTAga251IEV4
cCAkCiMKIyMjCgpyZXF1aXJlIDUuMDA2OwoKdXNlIHN0cmljdDsKCnVzZSB3YXJuaW5nczsKdXNl
IGZpbGV0ZXN0IHF3KGFjY2Vzcyk7Cgp1c2UgdmFycyBxdyAoCiAgJFZFUlNJT04gJENoZWNrb3V0
TWFnaWMgJE1pbWVUeXBlcyAkREVCVUcKICAkY29uZmlnICRhbGxvd192ZXJzaW9uX3NlbGVjdAog
IEBDVlNyZXBvc2l0b3JpZXMgQENWU1JPT1QgJUNWU1JPT1QgJUNWU1JPT1RkZXNjcgogICVNSVJS
T1JTICVERUZBVUxUVkFMVUUgJUlDT05TICVNVFlQRVMKICAlRElGRl9DT01NQU5EUyBARElGRlRZ
UEVTICVESUZGVFlQRVMgQExPR1NPUlRLRVlTICVMT0dTT1JUS0VZUwogICVhbGx0YWdzICVmaWxl
aW5mbyAldGFncyBAYnJhbmNobmFtZXMgJW5hbWVwcmludGVkCiAgJXN5bXJldiAlcmV2c3ltIEBh
bGxyZXZpc2lvbnMgJWRhdGUgJWF1dGhvciBAcmV2ZGlzcGxheW9yZGVyCiAgQHJldmlzaW9ucyAl
c3RhdGUgJWRpZmZsaW5lcyAlbG9nICVicmFuY2hwb2ludCBAcmV2b3JkZXIgJGtleXdvcmRzdWJz
dGl0dXRpb24KICAkcHJjZ2kgQHByY2F0ZWdvcmllcyAkcmVfcHJjYXRlZ29yaWVzICRwcmtleXdv
cmQgJHJlX3Bya2V5d29yZCAkbWFuY2dpCiAgJGRvQ2hlY2tvdXQgJHNjcmlwdG5hbWUgJHNjcmlw
dHdoZXJlCiAgJHdoZXJlICRCcm93c2VyICRub2ZpbGVsaW5rcyAkbWF5Y29tcHJlc3MgQHN0aWNr
eXZhcnMgJWZ1bmNsaW5lX3JlZ2V4cAogICRpc19saW5rcyAkaXNfbHlueCAkaXNfdzNtICRpc19t
c2llICRpc19tb3ppbGxhMyAkaXNfdGV4dGJhc2VkCiAgJWlucHV0ICRxdWVyeSAkYmFyZXF1ZXJ5
ICRzb3J0YnkgJGJ5ZGF0ZSAkYnlyZXYgJGJ5YXV0aG9yCiAgJGJ5bG9nICRieWZpbGUgJGRlZmF1
bHREaWZmVHlwZSAkbG9nc29ydCAkY3ZzdHJlZSAkY3Zzcm9vdAogICRjaGFyc2V0ICRvdXRwdXRf
ZmlsdGVyCiAgQGNvbW1hbmRfcGF0aCAlQ01EICRhbGxvd19jb21wcmVzcyAkYmFja2ljb24gJGRp
cmljb24gJGZpbGVpY29uICRncmFwaGljb24KICAkZnVsbG5hbWUgJGN2c3RyZWVkZWZhdWx0ICRs
b2dvICRkZWZhdWx0dGl0bGUgJGFkZHJlc3MgJGJpbmZpbGVpY29uCiAgJGxvbmdfaW50cm8gJHNo
b3J0X2luc3RydWN0aW9uICRzaG9ydExvZ0xlbiAkc2hvd19hdXRob3IKICAkdGFibGVwYWRkaW5n
ICRocl9icmVha2FibGUgJHNob3dmdW5jICRocl9pZ253aGl0ZSAkaHJfaWdua2V5c3Vic3QKICAk
aW5wdXRUZXh0U2l6ZSAkbWltZV90eXBlcyAkYWxsb3dfYW5ub3RhdGUgJGFsbG93X21hcmt1cCAk
YWxsb3dfbWFpbHRvcwogICRhbGxvd19sb2dfZXh0cmEgJGFsbG93X2Rpcl9leHRyYSAkYWxsb3df
c291cmNlX2V4dHJhCiAgJGFsbG93X2N2c2dyYXBoICRjdnNncmFwaF9jb25maWcgJHVzZV9qYXZh
X3NjcmlwdCAkZWRpdF9vcHRpb25fZm9ybQogICRzaG93X3N1YmRpcl9sYXN0bW9kICRzaG93X2xv
Z19pbl9tYXJrdXAgJHByZWZvcm1hdF9pbl9tYXJrdXAKICAkdGFic3RvcCAkc3RhdGUgJGFublRh
YmxlICRzZWwgQEZvcmJpZGRlbkZpbGVzCiAgJHVzZV9kZXNjcmlwdGlvbnMgJWRlc2NyaXB0aW9u
cyBAbXl0eiAkZHdoZXJlCiAgJHVzZV9tb2RkYXRlICRnemlwX29wZW4gJGZpbGVfbGlzdF9sZW4K
ICAkYWxsb3dfdGFyIEB0YXJfb3B0aW9ucyBAZ3ppcF9vcHRpb25zIEB6aXBfb3B0aW9ucyBAY3Zz
X29wdGlvbnMKICBAYW5ub3RhdGVfb3B0aW9ucyBAcmNzZGlmZl9vcHRpb25zCiAgJEhUTUxfRE9D
VFlQRSAkSFRNTF9NRVRBICRjc3N1cmwgJENTUyAkY3ZzaGlzdG9yeV91cmwKICAkYWxsb3dfZW5z
Y3JpcHQgQGVuc2NyaXB0X29wdGlvbnMgJWVuc2NyaXB0X3R5cGVzCik7Cgp1c2UgQ3dkICAgICAg
ICAgICAgICAgICAgIHF3KGFic19wYXRoKTsKdXNlIEZpbGU6OkJhc2VuYW1lICAgICAgICBxdyhk
aXJuYW1lKTsKdXNlIEZpbGU6OlBhdGggICAgICAgICAgICBxdyhybXRyZWUpOwp1c2UgRmlsZTo6
U3BlYzo6RnVuY3Rpb25zIHF3KGNhbm9ucGF0aCBjYXRkaXIgY2F0ZmlsZSBjdXJkaXIgZGV2bnVs
bCByb290ZGlyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wZGlyIHVwZGlyKTsKdXNl
IEZpbGU6OlRlbXAgICAgICAgICAgICBxdyh0ZW1wZGlyIHRlbXBmaWxlKTsKdXNlIElQQzo6UnVu
ICAgICAgICAgICAgICBxdygpOwp1c2UgVGltZTo6TG9jYWwgICAgICAgICAgIHF3KHRpbWVnbSk7
CnVzZSBVUkk6OkVzY2FwZSAgICAgICAgICAgcXcodXJpX2VzY2FwZSB1cmlfdW5lc2NhcGUpOwoK
dXNlIGNvbnN0YW50IFZBTElEX1BBVEggICA9PiBxci9eKFtbOl5jbnRybDpdXSspJC9vOwp1c2Ug
Y29uc3RhbnQgVkFMSURfVEFHMSAgID0+IHFyL14oW2EtekEtWl1bWzpncmFwaDpdXSopJC9vOwp1
c2UgY29uc3RhbnQgVkFMSURfVEFHMiAgID0+IHFyL14oW15cJCwuOjtAXSspJC9vOwp1c2UgY29u
c3RhbnQgQ1ZTV0VCTUFSS1VQID0+IHFye150ZXh0Lyh4LWN2c3dlYnx2bmRcLnZpZXdjdnMpLW1h
cmt1cCR9aW87CnVzZSBjb25zdGFudCBMT0dfRklMRVNFUFIgPT4gcXIvXj17Nzd9JC9vOwp1c2Ug
Y29uc3RhbnQgTE9HX1JFVlNFUFIgID0+IHFyL14tezI4fSQvbzsKCnVzZSBjb25zdGFudCBIQVNf
WkxJQiAgICAgPT4gZXZhbCB7IHJlcXVpcmUgQ29tcHJlc3M6OlpsaWI7IH07CnVzZSBjb25zdGFu
dCBIQVNfRURJRkYgICAgPT4gZXZhbCB7IHJlcXVpcmUgU3RyaW5nOjpFZGlmZjsgIH07CgojIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCgojIEFsbCBnbG9iYWwgaW5pdGlhbGl6YXRpb24gdGhhdCBjYW4g
YmUgZG9uZSBpbiBjb21waWxlIHRpbWUgc2hvdWxkIGdvIHRvCiMgdGhlIEJFR0lOIGJsb2NrLiAg
UGVyc2lzdGVudCBlbnZpcm9ubWVudHMsIHN1Y2ggYXMgbW9kX3BlcmwsIHdpbGwgYmVuZWZpdAoj
IGZyb20gdGhpcy4KCkJFR0lOCnsKICAkVkVSU0lPTiA9ICczLjAuNic7CgogICRIVE1MX0RPQ1RZ
UEUgPQogICAgJzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRy
YW5zaXRpb25hbC8vRU4iICcgLgogICAgJyJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFRE
L3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4nOwoKICAkSFRNTF9NRVRBID0gPDxFT007CjxtZXRh
IG5hbWU9InJvYm90cyIgY29udGVudD0ibm9mb2xsb3ciIC8+CjxtZXRhIG5hbWU9ImdlbmVyYXRv
ciIgY29udGVudD0iRnJlZUJTRC1DVlN3ZWIgJFZFUlNJT04iIC8+CjxtZXRhIGh0dHAtZXF1aXY9
IkNvbnRlbnQtU2NyaXB0LVR5cGUiIGNvbnRlbnQ9InRleHQvamF2YXNjcmlwdCIgLz4KPG1ldGEg
aHR0cC1lcXVpdj0iQ29udGVudC1TdHlsZS1UeXBlIiBjb250ZW50PSJ0ZXh0L2NzcyIgLz4KRU9N
CgogICMgVXNlIE1JTUU6OlR5cGVzIGZvciBNSU1FIHR5cGUgbG9va3VwcyBpZiBpdCdzIGF2YWls
YWJsZS4KICBldmFsIHsKICAgIHJlcXVpcmUgTUlNRTo6VHlwZXM7CiAgICAkTWltZVR5cGVzID0g
TUlNRTo6VHlwZXMtPm5ldyhvbmx5X2NvbXBsZXRlID0+IDEpOwogIH07CiAgJE1pbWVUeXBlcyA9
IHVuZGVmIGlmICRAOwoKICAkQ2hlY2tvdXRNYWdpYyA9ICd+Y2hlY2tvdXR+JzsKfQoKIyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQoKc3ViIHByaW50RGlmZlNlbGVjdCgkKTsKc3ViIHByaW50RGlmZlNl
bGVjdFN0aWNreVZhcnMoKTsKc3ViIGdldERpZmZMaW5rcygkJCQpOwpzdWIgcHJpbnRMb2dTb3J0
U2VsZWN0KCQpOwpzdWIgZmluZExhc3RNb2RpZmllZFN1YmRpcnMoQCk7CnN1YiBodG1saWZ5X3N1
YigmJCk7CnN1YiBodG1saWZ5KCQ7JCk7CnN1YiBzcGFjZWRIdG1sVGV4dCgkOyQpOwpzdWIgbGlu
aygkJCk7CnN1YiByZXZjbXAoJCQpOwpzdWIgZmF0YWwoJCRAKTsKc3ViIGNvbmZpZ19lcnJvcigk
JCk7CnN1YiByZWRpcmVjdCgkOyQpOwpzdWIgc2FmZWdsb2IoJCk7CnN1YiBzZWFyY2hfcGF0aCgk
KTsKc3ViIGdldEVuc2NyaXB0SEwoJCk7CnN1YiBnZXRNaW1lVHlwZSgkOyQpOwpzdWIgaGVhZCgk
OyQpOwpzdWIgc2Nhbl9kaXJlY3RpdmVzKEApOwpzdWIgb3Blbk91dHB1dEZpbHRlcigpOwpzdWIg
ZG9Bbm5vdGF0ZSgkJCk7CnN1YiBkb0NoZWNrb3V0KCQkJCk7CnN1YiBkb0Vuc2NyaXB0KCQkJDsk
KTsKc3ViIGRvR3JhcGgoKTsKc3ViIGRvR3JhcGhWaWV3KCk7CnN1YiBjdnN3ZWJNYXJrdXAoJCQk
JCQkOyQpOwpzdWIgdmlld2FibGUoJCk7CnN1YiBkb0RpZmYoJCQkJCQkKTsKc3ViIGdldERpckxv
Z3MoJCRAKTsKc3ViIHJlYWRMb2coJDskKTsKc3ViIHByaW50TG9nKCQkJDskJCk7CnN1YiBkb0xv
ZygkKTsKc3ViIGZsdXNoX2RpZmZfcm93cygkJCQkKTsKc3ViIGh1bWFuX3JlYWRhYmxlX2RpZmYo
JCQpOwpzdWIgbmF2aWdhdGVIZWFkZXIoJCQkJCQ7JCk7CnN1YiBwbHVyYWxfd3JpdGUoJCQpOwpz
dWIgcmVhZGFibGVUaW1lKCQkKTsKc3ViIGNsaWNrYWJsZVBhdGgoJCQpOwpzdWIgY2hvb3NlQ1ZT
Um9vdCgpOwpzdWIgY2hvb3NlTWlycm9yKCk7CnN1YiBmaWxlU29ydENtcCgpOwpzdWIgZG93bmxv
YWRfdXJsKCQkOyQpOwpzdWIgZG93bmxvYWRfbGluaygkJCQ7JCk7CnN1YiBkaXNwbGF5X3VybCgk
JDskKTsKc3ViIGRpc3BsYXlfbGluaygkJDskJCk7CnN1YiBncmFwaF9saW5rKCQ7JCk7CnN1YiBo
aXN0b3J5X2xpbmsoJCQ7JCk7CnN1YiB0b2dnbGVRdWVyeSgkOyQpOwpzdWIgaHRtbHF1b3RlKCQp
OwpzdWIgaHRtbHVucXVvdGUoJCk7CnN1YiB1cmlfZXNjYXBlX3BhdGgoJCk7CnN1YiBodHRwX2hl
YWRlcig7JCQpOwpzdWIgaHRtbF9oZWFkZXIoJDskKTsKc3ViIGh0bWxfZm9vdGVyKCk7CnN1YiBs
aW5rX3RhZ3MoJCk7CnN1YiBmb3JiaWRkZW4oJCk7CnN1YiBzdGFydHByb2MoQCk7CnN1YiBydW5w
cm9jKEApOwpzdWIgY2hlY2tvdXRfdG9fdGVtcCgkJCQpOwoKIyBHZXQgcmlkIG9mIHVuc2FmZSBl
bnZpcm9ubWVudCB2YXJzLiAgRG9uJ3QgZG8gdGhpcyBpbiB0aGUgQkVHSU4gYmxvY2sKIyAodGhp
bmsgbW9kX3BlcmwpLi4uCmRlbGV0ZShARU5We3F3KFBBVEggSUZTIENEUEFUSCBFTlYgQkFTSF9F
TlYpfSk7CgpteSAoJG15ZGlyKSA9IChkaXJuYW1lKCQwKSA9fiAvKC4qKS8pOyAgICAjIHVudGFp
bnQKCiMjIyMjIFN0YXJ0IG9mIENvbmZpZ3VyYXRpb24gQXJlYSAjIyMjIyMjIwoKIyA9PSBFRElU
IHRoaXMgPT0KIyBMb2NhdGlvbnMgdG8gc2VhcmNoIGZvciB1c2VyIGNvbmZpZ3VyYXRpb24sIGlu
IG9yZGVyOgpmb3IgKGNhdGZpbGUoJG15ZGlyLCAnY3Zzd2ViLmNvbmYnKSwgJy9ldGMvaHR0cGQv
Y29uZi9jdnN3ZWIuY29uZicpICAgIy91c3IvbG9jYWwvZXRjL2N2c3dlYgp7CiAgaWYgKC1yICRf
KSB7CiAgICAkY29uZmlnID0gJF87CiAgICBsYXN0OwogIH0KfQoKIyMjIyMgRW5kIG9mIENvbmZp
Z3VyYXRpb24gQXJlYSAgICMjIyMjIyMjCgp1bmRlZiAkbXlkaXI7CgojIyMjIyMjIyBDb25maWd1
cmF0aW9uIHBhcmFtZXRlcnMgIyMjIyMjIyMjCgpAQ1ZTcmVwb3NpdG9yaWVzID0gQENWU1JPT1Qg
PSAlQ1ZTUk9PVCA9ICVNSVJST1JTID0gJURFRkFVTFRWQUxVRSA9ICVJQ09OUyA9CiAgJU1UWVBF
UyA9ICV0YWdzID0gJWFsbHRhZ3MgPSAlZmlsZWluZm8gPSAlRElGRl9DT01NQU5EUyA9ICgpOwoK
JGN2c3RyZWVkZWZhdWx0ID0gJGxvZ28gPSAkZGVmYXVsdHRpdGxlID0KICAkYWRkcmVzcyA9ICRs
b25nX2ludHJvID0gJHNob3J0X2luc3RydWN0aW9uID0gJHNob3J0TG9nTGVuID0gJHNob3dfYXV0
aG9yID0KICAkdGFibGVwYWRkaW5nID0gJGhyX2JyZWFrYWJsZSA9ICRzaG93ZnVuYyA9ICRocl9p
Z253aGl0ZSA9CiAgJGhyX2lnbmtleXN1YnN0ID0gJGlucHV0VGV4dFNpemUgPSAkbWltZV90eXBl
cyA9ICRhbGxvd19hbm5vdGF0ZSA9CiAgJGFsbG93X21hcmt1cCA9ICRhbGxvd19jb21wcmVzcyA9
ICR1c2VfamF2YV9zY3JpcHQgPSAkZWRpdF9vcHRpb25fZm9ybSA9CiAgJHNob3dfc3ViZGlyX2xh
c3Rtb2QgPSAkc2hvd19sb2dfaW5fbWFya3VwID0gJHByZWZvcm1hdF9pbl9tYXJrdXAgPQogICR0
YWJzdG9wID0gJHVzZV9tb2RkYXRlID0gJGd6aXBfb3BlbiA9ICRERUJVRyA9ICRhbGxvd19jdnNn
cmFwaCA9CiAgJGN2c2dyYXBoX2NvbmZpZyA9ICRjdnNoaXN0b3J5X3VybCA9ICRhbGxvd190YXIg
PSB1bmRlZjsKCiRhbGxvd192ZXJzaW9uX3NlbGVjdCA9ICRhbGxvd19tYWlsdG9zID0gJGFsbG93
X2xvZ19leHRyYSA9IDE7CgpARElGRlRZUEVTID0gcXcoaCBIIHUgYyBzKTsKQERJRkZUWVBFU3tA
RElGRlRZUEVTfSA9ICgKICB7CiAgICAnZGVzY3InICAgPT4gJ2NvbG9yZWQnLAogICAgJ29wdHMn
ICAgID0+IFsnLXUnXSwKICAgICdjb2xvcmVkJyA9PiAxLAogIH0sCiAgewogICAgJ2Rlc2NyJyAg
ID0+ICdsb25nIGNvbG9yZWQnLAogICAgJ29wdHMnICAgID0+IFsnLS11bmlmaWVkPTE1J10sCiAg
ICAnY29sb3JlZCcgPT4gMSwKICB9LAogIHsKICAgICdkZXNjcicgICA9PiAndW5pZmllZCcsCiAg
ICAnb3B0cycgICAgPT4gWyctdSddLAogICAgJ2NvbG9yZWQnID0+IDAsCiAgfSwKICB7CiAgICAn
ZGVzY3InICAgPT4gJ2NvbnRleHQnLAogICAgJ29wdHMnICAgID0+IFsnLWMnXSwKICAgICdjb2xv
cmVkJyA9PiAwLAogIH0sCiAgewogICAgJ2Rlc2NyJyAgID0+ICdzaWRlIGJ5IHNpZGUnLAogICAg
IyB3aWR0aD0xNjggc2hvdWxkIGJlIGVub3VnaCB0byBzdXBwb3J0IDgwIGNoYXJhY3RlciBsaW5l
IGxlbmd0aHMKICAgICdvcHRzJyAgICA9PiBbJy0tc2lkZS1ieS1zaWRlJywgJy0td2lkdGg9MTY4
J10sCiAgICAnY29sb3JlZCcgPT4gMCwKICB9LAopOwoKQExPR1NPUlRLRVlTID0gcXcoY3ZzIGRh
dGUgcmV2KTsKQExPR1NPUlRLRVlTe0BMT0dTT1JUS0VZU30gPSAoCiAgeyBkZXNjciA9PiAnTm90
IHNvcnRlZCcsICB9LAogIHsgZGVzY3IgPT4gJ0NvbW1pdCBkYXRlJywgfSwKICB7IGRlc2NyID0+
ICdSZXZpc2lvbicsICAgIH0sCik7CgojIyMjIyBFbmQgb2YgY29uZmlndXJhdGlvbiBwYXJhbWV0
ZXJzICMjIyMjCgpteSAkcGF0aGluZm8gPSAnJzsKaWYgKGRlZmluZWQoJEVOVntQQVRIX0lORk99
KSAmJiAkRU5We1BBVEhfSU5GT30gbmUgJycpIHsKICAoJHBhdGhpbmZvKSA9ICgkRU5We1BBVEhf
SU5GT30gPX4gVkFMSURfUEFUSCkKICAgIG9yIGZhdGFsKCc1MDAgSW50ZXJuYWwgRXJyb3InLAog
ICAgICAgICAgICAgJ0lsbGVnYWwgUEFUSF9JTkZPIGluIGVudmlyb25tZW50OiA8Y29kZT4lczwv
Y29kZT4nLAogICAgICAgICAgICAgJEVOVntQQVRIX0lORk99KTsKfQppZiAoJEVOVntTQ1JJUFRf
TkFNRX0pIHsKICAoJHNjcmlwdG5hbWUpID0gKCRFTlZ7U0NSSVBUX05BTUV9ID1+IFZBTElEX1BB
VEgpCiAgICBvciBmYXRhbCgnNTAwIEludGVybmFsIEVycm9yJywKICAgICAgICAgICAgICdJbGxl
Z2FsIFNDUklQVF9OQU1FIGluIGVudmlyb25tZW50OiA8Y29kZT4lczwvY29kZT4nLAogICAgICAg
ICAgICAgJEVOVntTQ1JJUFRfTkFNRX0pOwp9Cgokc2NyaXB0bmFtZSAgICA9ICcnIHVubGVzcyBk
ZWZpbmVkKCRzY3JpcHRuYW1lKTsKCiR3aGVyZSAgICAgICAgID0gICRwYXRoaW5mbzsKJGRvQ2hl
Y2tvdXQgICAgPSAgJHdoZXJlID1+IHN8Xi8kQ2hlY2tvdXRNYWdpYy98L3xvOwokd2hlcmUgICAg
ICAgICA9fiBzfF4vfHw7CiRzY3JpcHRuYW1lICAgID1+IHN8Xi8qfC98OwoKIyBMZXQncyB3b3Jr
YXJvdW5kIHRodHRwZCdzIHN0dXBpZGl0eS4uCmlmICgkc2NyaXB0bmFtZSA9fiBtfC8kfCkgewog
ICRwYXRoaW5mbyAuPSAnLyc7CiAgbXkgJHJlID0gcXVvdGVtZXRhICRwYXRoaW5mbzsKICAkc2Ny
aXB0bmFtZSA9fiBzLyRyZSQvLzsKfQoKIyAkc2NyaXB0bmFtZSA6IHRoZSBVUkkgZXNjYXBlZCBw
YXRoIHRvIHRoaXMgc2NyaXB0CiMgJHdoZXJlICAgICAgOiB0aGUgcGF0aCBpbiB0aGUgQ1ZTIHJl
cG9zaXRvcnkgKHdpdGhvdXQgbGVhZGluZyAvLCBvciBvbmx5IC8pCiMgJHNjcmlwdHdoZXJlOiB0
aGUgVVJJIGVzY2FwZWQgJHNjcmlwdG5hbWUgKyAnLycgKyAkd2hlcmUKJHNjcmlwdG5hbWUgICA9
IHVyaV9lc2NhcGVfcGF0aCgkc2NyaXB0bmFtZSk7CiRzY3JpcHR3aGVyZSAgPSBqb2luKCcvJywg
JHNjcmlwdG5hbWUsIHVyaV9lc2NhcGVfcGF0aCgkd2hlcmUpKTsKJHdoZXJlICAgICAgICA9ICcv
JyBpZiAoJHdoZXJlIGVxICcnKTsKCiMgSW4gdGV4dC1iYXNlZCBicm93c2VycywgaXQncyB2ZXJ5
IGFubm95aW5nIHRvIGhhdmUgdHdvIGxpbmtzIHBlciBmaWxlOwojIHNraXAgbGlua2luZyB0aGUg
aW1hZ2UgZm9yIHRoZW0uCgokQnJvd3NlciAgICAgPSAkRU5We0hUVFBfVVNFUl9BR0VOVH0gfHwg
Jyc7CiRpc19saW5rcyAgICA9ICgkQnJvd3NlciA9fiBtYF5FP0xpbmtzIGApOwokaXNfbHlueCAg
ICAgPSAoJEJyb3dzZXIgPX4gbWBeTHlueC9gaSk7CiRpc193M20gICAgICA9ICgkQnJvd3NlciA9
fiBtYF53M20vYGkpOwokaXNfbXNpZSAgICAgPSAoJEJyb3dzZXIgPX4gbWBNU0lFYCk7CiRpc19t
b3ppbGxhMyA9ICgkQnJvd3NlciA9fiBtYF5Nb3ppbGxhL1szLTldYCk7CgokaXNfdGV4dGJhc2Vk
ID0gKCRpc19saW5rcyB8fCAkaXNfbHlueCB8fCAkaXNfdzNtKTsKCiRub2ZpbGVsaW5rcyA9ICRp
c190ZXh0YmFzZWQ7CgojIG5ld2VyIGJyb3dzZXJzIGFjY2VwdCBnemlwIGNvbnRlbnQgZW5jb2Rp
bmcKIyBhbmQgc3RhdGUgdGhpcyBpbiBhIGhlYWRlcgojIChuZXRzY2FwZSBkaWQgYWx3YXlzIGJ1
dCBkaWRuJ3Qgc3RhdGUgaXQpCiMgSXQgaGFzIGJlZW4gcmVwb3J0ZWQgdGhhdCB0aGVzZQojICBi
cmFpbmRhbWFnZWQgTVMtSW50ZXJuZXQgRXhwbG9kZXJzIGNsYWltIHRoYXQgdGhleQojIGFjY2Vw
dCBnemlwIC4uIGJ1dCBkb24ndCBpbiBmYWN0IGFuZAojIGRpc3BsYXkgZ2FyYmFnZSB0aGVuIDot
LwojIFR1cm4gb2ZmIGd6aXAgaWYgcnVubmluZyB1bmRlciBtb2RfcGVybCBhbmQgbm8gemxpYiBp
cyBhdmFpbGFibGUsCiMgcGlwaW5nIGRvZXMgbm90IHdvcmsgYXMgZXhwZWN0ZWQgaW5zaWRlIHRo
ZSBzZXJ2ZXIuCiRtYXljb21wcmVzcyA9ICgKICAoKGRlZmluZWQoJEVOVntIVFRQX0FDQ0VQVF9F
TkNPRElOR30pCiAgICAmJiAkRU5We0hUVFBfQUNDRVBUX0VOQ09ESU5HfSA9fiAvZ3ppcC8pCiAg
IHx8ICRpc19tb3ppbGxhMykKICAmJiAhJGlzX21zaWUKICAmJiAhKGRlZmluZWQoJEVOVntNT0Rf
UEVSTH0pICYmICFIQVNfWkxJQikKKTsKCiMgUGFyYW1ldGVycyB0aGF0IHdpbGwgYmUgc3RpY2t5
IGluIGFsbCBjb25zdHJ1Y3RlZCBsaW5rcy9xdWVyeSBzdHJpbmdzLgpAc3RpY2t5dmFycyA9CiAg
cXcoY3Zzcm9vdCBoaWRlYXR0aWMgaWdub3JlY2FzZSBzb3J0YnkgbG9nc29ydCBmIG9ubHlfd2l0
aF90YWcgbG4KICAgICBoaWRlY3Zzcm9vdCBoaWRlbm9ucmVhZGFibGUpOwoKIwojIExvYWQgY29u
ZmlndXJhdGlvbi4KIwppZiAoLWYgJGNvbmZpZykgewogIGRvICIkY29uZmlnIiBvciBjb25maWdf
ZXJyb3IoJGNvbmZpZywgJEApOwp9IGVsc2UgewogIGZhdGFsKCI1MDAgSW50ZXJuYWwgRXJyb3Ii
LAogICAgICAgICdDb25maWd1cmF0aW9uIG5vdCBmb3VuZC4gIFNldCB0aGUgcGFyYW1ldGVyIDxj
b2RlPiRjb25maWc8L2NvZGU+IGluIGN2c3dlYi5jZ2kgdG8geW91ciA8Yj5jdnN3ZWIuY29uZjwv
Yj4gY29uZmlndXJhdGlvbiBmaWxlIGZpcnN0LicpOwp9CgojIFRyeSB0byBmaW5kIGEgcmVhZGFi
bGUgZGlyIHdoZXJlIHdlIGNhbiBjZCBpbnRvLiAgU29tZSBhYnNfcGF0aCgpCiMgaW1wbGVtZW50
YXRpb25zIGFzIHdlbGwgYXMgdmFyaW91cyBjdnMgb3BlcmF0aW9ucyByZXF1aXJlIHN1Y2ggYSBk
aXIgdG8KIyB3b3JrIHByb3Blcmx5Lgp7CiAgbG9jYWwgJF5XID0gMDsKICBmb3IgbXkgJGRpciAo
dG1wZGlyKCksIHJvb3RkaXIoKSkgewogICAgbGFzdCBpZiAoLXIgJGRpciAmJiBjaGRpcigkZGly
KSk7CiAgfQp9CgokQ1NTID0gJGNzc3VybCA/CiAgc3ByaW50ZigiPGxpbmsgcmVsPVwic3R5bGVz
aGVldFwiIHR5cGU9XCJ0ZXh0L2Nzc1wiIGhyZWY9XCIlc1wiIC8+XG4iLAogICAgICAgICAgaHRt
bHF1b3RlKCRjc3N1cmwpKSA6ICcnOwoKIyAtLS0gaW5wdXQgcGFyYW1ldGVycwoKbXkgJXF1ZXJ5
ID0gKCk7CmlmIChkZWZpbmVkKCRFTlZ7UVVFUllfU1RSSU5HfSkpIHsKICBmb3IgbXkgJHAgKHNw
bGl0KC9bOyZdKy8sICRFTlZ7UVVFUllfU1RSSU5HfSkpIHsKICAgIG5leHQgdW5sZXNzICRwOwog
ICAgJHAgPX4geS8rLyAvOwogICAgbXkgKCRrZXksICR2YWwpID0gc3BsaXQoLz0vLCAkcCwgMik7
CiAgICBuZXh0IHVubGVzcyBkZWZpbmVkKCRrZXkpOwogICAgJHZhbCA9IDEgdW5sZXNzIGRlZmlu
ZWQoJHZhbCk7CiAgICAoJGtleSA9IHVyaV91bmVzY2FwZSgka2V5KSkgPX4gL1tbOmdyYXBoOl1d
LyBvciBuZXh0OwogICAgKCR2YWwgPSB1cmlfdW5lc2NhcGUoJHZhbCkpID1+IC9bWzpncmFwaDpd
XS8gb3IgbmV4dDsKICAgICRxdWVyeXska2V5fSA9ICR2YWw7CiAgfQp9Cgp1bmRlZiAlaW5wdXQ7
CgpteSAkdDsKZm9yIG15ICRwIChxdyhncmFwaCBoaWRlYXR0aWMgaGlkZWN2c3Jvb3QgaGlkZW5v
bnJlYWRhYmxlIGlnbm9yZWNhc2UgbG4gY29wdAogICAgICAgICAgICAgIG1ha2VpbWFnZSBvcHRp
b25zIHRhcmJhbGwpKSB7CiAgJHQgPSAkcXVlcnl7JHB9OwogIGlmIChkZWZpbmVkKCR0KSkgewog
ICAgKCRpbnB1dHskcH0pID0gKCR0ID1+IC9eKFswMV18b24pJC8pCiAgICAgIG9yIGZhdGFsKCc1
MDAgSW50ZXJuYWwgRXJyb3InLAogICAgICAgICAgICAgICAnSW52YWxpZCBib29sZWFuIHZhbHVl
OiA8Y29kZT4lcz0lczwvY29kZT4nLCAkcCwgJHQpOwogIH0KfQpmb3IgbXkgJHAgKHF3KGFubm90
YXRlIHIxIHIyIHJldiB0cjEgdHIyKSkgewogICR0ID0gJHF1ZXJ5eyRwfTsKICBpZiAoZGVmaW5l
ZCgkdCkpIHsKICAgIGlmICgoJHAgZXEgJ3IxJyB8fCAkcCBlcSAncjInKSAmJiAkdCBlcSAndGV4
dCcpIHsKICAgICAgIyBTcGVjaWFsIGNhc2UgZm9yIHRoZSAiVXNlIHRleHQgZmllbGQiIG9wdGlv
biBpbiB0aGUgbG9nIHZpZXcgZGlmZiBmb3JtLgogICAgICAkaW5wdXR7JHB9ID0gJHQ7CiAgICAg
IG5leHQ7CiAgICB9IGVsc2lmICgoJHAgZXEgJ3JldicgfHwgJHAgZXEgJ2Fubm90YXRlJykgJiYg
KCR0IGVxICcuJyB8fCAkdCBlcSAnSEVBRCcpKXsKICAgICAgIyBBbm90aGVyIHNwZWNpYWwgY2Fz
ZSwgYWxsb3cgbGlua2luZyB0byBsYXRlc3QgcmV2aXNpb24gdXNpbmcgdGhlc2UuCiAgICAgICRp
bnB1dHskcH0gPSAnLic7CiAgICAgIG5leHQ7CiAgICB9CiAgICBteSAoJHJldiwgJHRhZykgPSBz
cGxpdCgvOi8sICR0LCAyKTsKICAgICgkaW5wdXR7JHB9KSA9ICgkcmV2ID1+IC9eKFxkKyg/Olwu
XGQrKSopJC8pCiAgICAgIG9yIGZhdGFsKCc1MDAgSW50ZXJuYWwgRXJyb3InLAogICAgICAgICAg
ICAgICAnSW52YWxpZCByZXZpc2lvbjogPGNvZGU+JXM9JXM8L2NvZGU+JywgJHAsICR0KTsKICAg
IGlmIChkZWZpbmVkKCR0YWcpKSB7CiAgICAgICgkdGFnKSA9ICgkdGFnID1+IFZBTElEX1RBRzEp
CiAgICAgICAgb3IgZmF0YWwoJzUwMCBJbnRlcm5hbCBFcnJvcicsCiAgICAgICAgICAgICAgICAg
J0ludmFsaWQgdGFnL2JyYW5jaCBuYW1lIGluIHJldmlzaW9uOiA8Y29kZT4lcz0lczwvY29kZT4n
LAogICAgICAgICAgICAgICAgICRwLCAkdCk7CiAgICAgICgkdGFnKSA9ICgkdGFnID1+IFZBTElE
X1RBRzIpCiAgICAgICAgb3IgZmF0YWwoJzUwMCBJbnRlcm5hbCBFcnJvcicsCiAgICAgICAgICAg
ICAgICAgJ0ludmFsaWQgdGFnL2JyYW5jaCBuYW1lIGluIHJldmlzaW9uOiA8Y29kZT4lcz0lczwv
Y29kZT4nLAogICAgICAgICAgICAgICAgICRwLCAkdCk7CiAgICAgICRpbnB1dHskcH0gLj0gJzon
IC4gJHRhZzsKICAgIH0KICB9Cn0KJHQgPSBkZWZpbmVkKCRxdWVyeXtvbmx5X3dpdGhfdGFnfSkg
PwogICRxdWVyeXtvbmx5X3dpdGhfdGFnfSA6ICRxdWVyeXtvbmx5X29uX2JyYW5jaH07ICMgQmFj
a3dhcmRzIGNvbXBhdGliaWxpdHkuCmlmIChkZWZpbmVkKCR0KSkgewogICgkaW5wdXR7b25seV93
aXRoX3RhZ30pID0gKCR0ID1+IFZBTElEX1RBRzEpCiAgICBvciBmYXRhbCgnNTAwIEludGVybmFs
IEVycm9yJywKICAgICAgICAgICAgICdJbnZhbGlkIHRhZy9icmFuY2ggbmFtZTogPGNvZGU+JXM8
L2NvZGU+JywgJHQpOwogICgkaW5wdXR7b25seV93aXRoX3RhZ30pID0gKCR0ID1+IFZBTElEX1RB
RzIpCiAgICBvciBmYXRhbCgnNTAwIEludGVybmFsIEVycm9yJywKICAgICAgICAgICAgICdJbnZh
bGlkIHRhZy9icmFuY2ggbmFtZTogPGNvZGU+JXM8L2NvZGU+JywgJHQpOwp9CiR0ID0gJHF1ZXJ5
e2xvZ3NvcnR9OwppZiAoZGVmaW5lZCgkdCkpIHsKICAoJGlucHV0e2xvZ3NvcnR9KSA9ICgkdCA9
fiAvXihjdnN8ZGF0ZXxyZXYpJC8pCiAgICBvciBmYXRhbCgnNTAwIEludGVybmFsIEVycm9yJywK
ICAgICAgICAgICAgICdVbnN1cHBvcnRlZCBsb2cgc29ydCBrZXk6IDxjb2RlPiVzPC9jb2RlPics
ICR0KTsKfQokdCA9ICRxdWVyeXtmfTsKaWYgKGRlZmluZWQoJHQpKSB7CiAgKCRpbnB1dHtmfSkg
PSAoJHQgPX4gL14oKFtoSF18W3Vjc11jPyl8ZXh0XGQqKSQvKQogICAgb3IgZmF0YWwoJzUwMCBJ
bnRlcm5hbCBFcnJvcicsCiAgICAgICAgICAgICAnVW5zdXBwb3J0ZWQgZGlmZiBmb3JtYXQ6IDxj
b2RlPiVzPC9jb2RlPicsICR0KTsKfQokdCA9ICRxdWVyeXtzb3J0Ynl9OwppZiAoZGVmaW5lZCgk
dCkpIHsKICAoJGlucHV0e3NvcnRieX0pID0gKCR0ID1+IC9eKGZpbGV8ZGF0ZXxyZXZ8YXV0aG9y
fGxvZykkLykKICAgIG9yIGZhdGFsKCc1MDAgSW50ZXJuYWwgRXJyb3InLAogICAgICAgICAgICAg
J1Vuc3VwcG9ydGVkIGRpciBzb3J0IGtleTogPGNvZGU+JXM8L2NvZGU+JywgJHQpOwp9CiR0ID0g
JHF1ZXJ5eydjb250ZW50LXR5cGUnfTsKaWYgKGRlZmluZWQoJHQpKSB7CiAgKCRpbnB1dHsnY29u
dGVudC10eXBlJ30pID0gKCR0ID1+IG18XihbLTAtOUEtWmEtel0rL1stMC05QS1aYS16XC5cK10r
KSR8KQogICAgb3IgZmF0YWwoJzUwMCBJbnRlcm5hbCBFcnJvcicsCiAgICAgICAgICAgICAnVW5z
dXBwb3J0ZWQgY29udGVudCB0eXBlOiA8Y29kZT4lczwvY29kZT4nLCAkdCk7Cn0KJHQgPSAkcXVl
cnl7Y3Zzcm9vdH07CmlmIChkZWZpbmVkKCR0KSkgewogICgkaW5wdXR7Y3Zzcm9vdH0pID0gKCR0
ID1+IC9eKFtbOnByaW50Ol1dKykkLykKICAgIG9yIGZhdGFsKCc1MDAgSW50ZXJuYWwgRXJyb3In
LAogICAgICAgICAgICAgJ0ludmFsaWQgc3ltYm9saWMgQ1ZTIHJvb3QgbmFtZTogPGNvZGU+JXM8
L2NvZGU+JywgJHQpOwp9CiR0ID0gJHF1ZXJ5e3BhdGh9OwppZiAoZGVmaW5lZCgkdCkpIHsKICAo
JGlucHV0e3BhdGh9KSA9ICgkdCA9fiBWQUxJRF9QQVRIKQogICAgb3IgZmF0YWwoJzUwMCBJbnRl
cm5hbCBFcnJvcicsCiAgICAgICAgICAgICAnSW52YWxpZCBwYXRoOiA8Y29kZT4lczwvY29kZT4n
LCAkdCk7Cn0KdW5kZWYoJHQpOwp1bmRlZiglcXVlcnkpOwoKIyAtLS0gZW5kIGlucHV0IHBhcmFt
ZXRlcnMKCiMKIyBDVlMgcm9vdHMKIwpteSAkcm9vdGZvdW5kID0gMDsKZm9yIChteSAkaSA9IDA7
ICRpIDwgc2NhbGFyKEBDVlNyZXBvc2l0b3JpZXMpOyAkaSArPSAyKSB7CiAgbXkgJGtleSA9ICRD
VlNyZXBvc2l0b3JpZXNbJGldOwogIG15ICgkZGVzY3IsICRyb290KSA9IEB7JENWU3JlcG9zaXRv
cmllc1skaSsxXX07CiAgJHJvb3QgPSBjYW5vbnBhdGgoJHJvb3QpOwogIHVubGVzcyAoLWQgJHJv
b3QpIHsKICAgIHdhcm4oIlJvb3QgJyRyb290JyBkZWZpbmVkIGluIFxAQ1ZTcmVwb3NpdG9yaWVz
IGlzIG5vdCBhIGRpcmVjdG9yeSwgIiAuCiAgICAgICAgICdlbnRyeSBpZ25vcmVkJyk7CiAgICBu
ZXh0OwogIH0KICAkcm9vdGZvdW5kIHx8PSAxOwogICRjdnN0cmVlZGVmYXVsdCA9ICRrZXkgdW5s
ZXNzIGRlZmluZWQoJGN2c3RyZWVkZWZhdWx0KTsKICAkQ1ZTUk9PVGRlc2NyeyRrZXl9ID0gJGRl
c2NyOwogICRDVlNST09UeyRrZXl9ID0gJHJvb3Q7CiAgcHVzaChAQ1ZTUk9PVCwgJGtleSk7Cn0K
dW5sZXNzICgkcm9vdGZvdW5kKSB7CiAgZmF0YWwoJzUwMCBJbnRlcm5hbCBFcnJvcicsCiAgICAg
ICAgJ05vIHZhbGlkIENWUyByb290cyBmb3VuZCEgIFNlZSA8Y29kZT5AQ1ZTcmVwb3NpdG9yaWVz
PC9jb2RlPiBpbiAnIC4KICAgICAgICAndGhlIGNvbmZpZ3VyYXRpb24gZmlsZSAoPGNvZGU+JXM8
L2NvZGU+KS4nLAogICAgICAgICRjb25maWcpOwp9CnVuZGVmICRyb290Zm91bmQ7CgojCiMgRGVm
YXVsdCBDVlMgcm9vdAojCmlmICghZGVmaW5lZCgkQ1ZTUk9PVHskY3ZzdHJlZWRlZmF1bHR9KSkg
ewogIGZhdGFsKCI1MDAgSW50ZXJuYWwgRXJyb3IiLAogICAgICAgICc8Y29kZT4kY3ZzdHJlZWRl
ZmF1bHQ8L2NvZGU+IHBvaW50cyB0byBhIHJlcG9zaXRvcnkgKCVzKSBub3QgJyAuCiAgICAgICAg
J2RlZmluZWQgaW4gPGNvZGU+QENWU3JlcG9zaXRvcmllczwvY29kZT4gaW4geW91ciBjb25maWd1
cmF0aW9uICcgLgogICAgICAgICdmaWxlICg8Y29kZT4lczwvY29kZT4pLicsCiAgICAgICAgJGN2
c3RyZWVkZWZhdWx0LAogICAgICAgICRjb25maWcpOwp9CgokREVGQVVMVFZBTFVFe2N2c3Jvb3R9
ID0gJGN2c3RyZWVkZWZhdWx0OwoKd2hpbGUgKG15ICgka2V5LCAkZGVmdmFsKSA9IGVhY2ggJURF
RkFVTFRWQUxVRSkgewoKICAjIFJlcGxhY2Ugbm90IGdpdmVuIHBhcmFtZXRlcnMgd2l0aCBkZWZh
dWx0cy4KICBuZXh0IHVubGVzcyAoZGVmaW5lZCgkZGVmdmFsKSAmJiAkZGVmdmFsID1+IC9cUy8g
JiYgIWRlZmluZWQoJGlucHV0eyRrZXl9KSk7CgogICMgRW1wdHkgY2hlY2tib3hlcyBpbiBmb3Jt
cyByZXR1cm4gbm90aGluZywgc28gd2UgZGVmaW5lIGEgaGVscGVyIHBhcmFtZXRlcgogICMgaW4g
dGhlc2UgZm9ybXMgKGNvcHQpIHdoaWNoIGluZGljYXRlcyB0aGF0IHdlIGp1c3Qgc2V0IHBhcmFt
ZXRlcnMgd2l0aCBhCiAgIyBjaGVja2JveC4KICBpZiAoJGlucHV0e2NvcHR9KSB7CgogICAgIyAn
Y29wdCcgaXMgc2V0IC0+IHRoZSByZXN1bHQgb2YgZW1wdHkgaW5wdXQgY2hlY2tib3gKICAgICMg
LT4gc2V0IHRvIHplcm8gKGRpc2FibGUpIGlmIGRlZmF1bHQgaXMgYSBib29sZWFuICgwfDEpLgog
ICAgJGlucHV0eyRrZXl9ID0gMCBpZiAoJGRlZnZhbCBlcSAnMCcgfHwgJGRlZnZhbCBlcSAnMScp
OwoKICB9IGVsc2UgewoKICAgICMgJ2NvcHQnIGlzbid0IHNldCAtLT4gZW1wdHkgaW5wdXQgaXMg
bm90IHRoZSByZXN1bHQKICAgICMgb2YgZW1wdHkgaW5wdXQgY2hlY2tib3ggLS0+IHNldCBkZWZh
dWx0LgogICAgJGlucHV0eyRrZXl9ID0gJGRlZnZhbDsKICB9Cn0KCiRiYXJlcXVlcnkgPSAiIjsK
bXkgQGJhcmVxdWVyeTsKZm9yZWFjaCAoQHN0aWNreXZhcnMpIHsKCiAgIyBjb25zdHJ1Y3QgYSBx
dWVyeSBzdHJpbmcgd2l0aCB0aGUgc3RpY2t5IG5vbiBkZWZhdWx0IHBhcmFtZXRlcnMgc2V0CiAg
aWYgKGRlZmluZWQoJGlucHV0eyRffSkKICAgICAgJiYgIShkZWZpbmVkKCRERUZBVUxUVkFMVUV7
JF99KSAmJiAkaW5wdXR7JF99IGVxICRERUZBVUxUVkFMVUV7JF99KSkKICB7CiAgICBwdXNoKEBi
YXJlcXVlcnksIGpvaW4oJz0nLCB1cmlfZXNjYXBlKCRfKSwgdXJpX2VzY2FwZSgkaW5wdXR7JF99
KSkpOwogIH0KfQoKaWYgKCRhbGxvd19lbnNjcmlwdCkgewogIHB1c2goQERJRkZUWVBFUywgcXco
dWMgY2Mgc2MpKTsKICBARElGRlRZUEVTe3F3KHVjIGNjIHNjKX0gPSAoCiAgICB7CiAgICAgJ2Rl
c2NyJyAgID0+ICd1bmlmaWVkLCBjb2xvcmVkJywKICAgICAnb3B0cycgICAgPT4gWyctdSddLAog
ICAgICdjb2xvcmVkJyA9PiAwLAogICAgfSwKICAgIHsKICAgICAnZGVzY3InICAgPT4gJ2NvbnRl
eHQsIGNvbG9yZWQnLAogICAgICdvcHRzJyAgICA9PiBbJy1jJ10sCiAgICAgJ2NvbG9yZWQnID0+
IDAsCiAgICB9LAogICAgewogICAgICdkZXNjcicgICA9PiAnc2lkZSBieSBzaWRlLCBjb2xvcmVk
JywKICAgICAjIHdpZHRoPTE2OCBzaG91bGQgYmUgZW5vdWdoIHRvIHN1cHBvcnQgODAgY2hhcmFj
dGVyIGxpbmUgbGVuZ3RocwogICAgICdvcHRzJyAgICA9PiBbJy0tc2lkZS1ieS1zaWRlJywgJy0t
d2lkdGg9MTY4J10sCiAgICAgJ2NvbG9yZWQnID0+IDAsCiAgICB9LAogICk7Cn0gZWxzZSB7CiAg
IyBObyBFbnNjcmlwdCAtPiByZXNwZWN0IGRpZmZ0eXBlLCBidXQgZG9uJ3Qgb2ZmZXIgY29sb3Jp
emF0aW9uLgogIGlmICgkaW5wdXR7Zn0gJiYgJGlucHV0e2Z9ID1+IC9eKFt1Y3NdKWMkLykgewog
ICAgJGlucHV0e2Z9ID0gJDE7CiAgfQp9CgojIGlzIHRoZXJlIGFueSBxdWVyeSA/CmlmIChAYmFy
ZXF1ZXJ5KSB7CiAgJGJhcmVxdWVyeSA9IGpvaW4gKCc7JywgQGJhcmVxdWVyeSk7CiAgJHF1ZXJ5
ICAgICA9ICI/JGJhcmVxdWVyeSI7CiAgJGJhcmVxdWVyeSA9ICI7JGJhcmVxdWVyeSI7Cn0gZWxz
ZSB7CiAgJHF1ZXJ5ID0gIiI7Cn0KdW5kZWYgQGJhcmVxdWVyeTsKCmlmIChkZWZpbmVkKCRpbnB1
dHtwYXRofSkpIHsKICByZWRpcmVjdCgiJHNjcmlwdG5hbWUvJGlucHV0e3BhdGh9JHF1ZXJ5Iik7
Cn0KCiMgZ2V0IGFjdHVhbCBwYXJhbWV0ZXJzCnsKICBteSAkc29ydGJ5ID0gJGlucHV0e3NvcnRi
eX0gfHwgJ2ZpbGUnOwogICRieWRhdGUgICAgPSAwOwogICRieXJldiAgICAgPSAwOwogICRieWF1
dGhvciAgPSAwOwogICRieWxvZyAgICAgPSAwOwogICRieWZpbGUgICAgPSAwOwogIGlmICgkc29y
dGJ5IGVxICdkYXRlJykgewogICAgJGJ5ZGF0ZSA9IDE7CiAgfSBlbHNpZiAoJHNvcnRieSBlcSAn
cmV2JykgewogICAgJGJ5cmV2ID0gMTsKICB9IGVsc2lmICgkc29ydGJ5IGVxICdhdXRob3InKSB7
CiAgICAkYnlhdXRob3IgPSAxOwogIH0gZWxzaWYgKCRzb3J0YnkgZXEgJ2xvZycpIHsKICAgICRi
eWxvZyA9IDE7CiAgfSBlbHNlIHsKICAgICRieWZpbGUgPSAxOwogIH0KfQoKJGRlZmF1bHREaWZm
VHlwZSA9ICRpbnB1dHtmfTsKCiRsb2dzb3J0ID0gJGlucHV0e2xvZ3NvcnR9OwoKIyBhbHRlcm5h
dGUgQ1ZTLVRyZWUsIGNvbmZpZ3VyZWQgaW4gY3Zzd2ViLmNvbmYKaWYgKCRpbnB1dHtjdnNyb290
fSAmJiAkQ1ZTUk9PVHskaW5wdXR7Y3Zzcm9vdH19KSB7CiAgJGN2c3RyZWUgPSAkaW5wdXR7Y3Zz
cm9vdH07Cn0gZWxzZSB7CiAgJGN2c3RyZWUgPSAkY3ZzdHJlZWRlZmF1bHQ7Cn0KCiRjdnNyb290
ID0gJENWU1JPT1R7JGN2c3RyZWV9OwoKIyBjcmVhdGUgaWNvbnMgb3V0IG9mIGRlc2NyaXB0aW9u
CmZvcmVhY2ggbXkgJGsgKGtleXMgJUlDT05TKSB7CiAgbXkgKCRpdHh0LCAkaXBhdGgsICRpd2lk
dGgsICRpaGVpZ2h0KSA9IEB7JElDT05TeyRrfX07CiAgbm8gc3RyaWN0ICdyZWZzJzsKICBpZiAo
JGlwYXRoKSB7CiAgICAkeyIke2t9aWNvbiJ9ID0KICAgICAgc3ByaW50ZignPGltZyBzcmM9IiVz
IiBhbHQ9IiVzIiBib3JkZXI9IjAiIHdpZHRoPSIlZCIgaGVpZ2h0PSIlZCIgLz4nLAogICAgICAg
ICAgICAgIGh0bWxxdW90ZSgkaXBhdGgpLCBodG1scXVvdGUoJGl0eHQpLCAkaXdpZHRoLCAkaWhl
aWdodCk7CiAgfSBlbHNlIHsKICAgICR7IiR7a31pY29uIn0gPSAkaXR4dDsKICB9Cn0KCm15ICRj
b25maWdfY3ZzdHJlZSA9ICIkY29uZmlnLSRjdnN0cmVlIjsKCiMgRG8gc29tZSBzcGVjaWFsIGNv
bmZpZ3VyYXRpb24gZm9yIGN2c3RyZWVzCmlmICgtZiAkY29uZmlnX2N2c3RyZWUpIHsKICBkbyAi
JGNvbmZpZ19jdnN0cmVlIgogICAgb3IgZmF0YWwoIjUwMCBJbnRlcm5hbCBFcnJvciIsCiAgICAg
ICAgICAgICAnRXJyb3IgaW4gbG9hZGluZyBjb25maWd1cmF0aW9uIGZpbGU6ICVzPGJyIC8+PGJy
IC8+JXM8YnIgLz4nLAogICAgICAgICAgICAgJGNvbmZpZ19jdnN0cmVlLCAkQCk7Cn0KdW5kZWYg
JGNvbmZpZ19jdnN0cmVlOwoKJHJlX3ByY2F0ZWdvcmllcyAgPSAnKD86JyAuIGpvaW4gKCd8Jywg
QHByY2F0ZWdvcmllcykgLiAnKScgaWYgQHByY2F0ZWdvcmllczsKJHJlX3Bya2V5d29yZCAgICAg
PSBxdW90ZW1ldGEoJHBya2V5d29yZCkgaWYgZGVmaW5lZCgkcHJrZXl3b3JkKTsKJHByY2dpICAg
ICAgICAgICAuPSAnJXMnIGlmIGRlZmluZWQoJHByY2dpKSAmJiAkcHJjZ2kgIX4gLyVzLzsKCiRm
dWxsbmFtZSAgICAgICAgID0gY2F0ZmlsZSgkY3Zzcm9vdCwgJHdoZXJlKTsKCm15ICRyZXdyaXRl
ID0gMDsKaWYgKCRwYXRoaW5mbyA9fiBtfC8vfCkgewogICRwYXRoaW5mbyA9fiB5fC98L3xzOwog
ICRyZXdyaXRlID0gMTsKfQppZiAoLWQgJGZ1bGxuYW1lKSB7CiAgaWYgKCRwYXRoaW5mbyAhfiBt
fC8kfCkgewogICAgJHBhdGhpbmZvIC49ICcvJzsKICAgICRyZXdyaXRlICAgPSAxOwogIH0KfSBl
bHNpZiAoJHBhdGhpbmZvID1+IG18LyR8KSB7CiAgY2hvcCAkcGF0aGluZm87CiAgJHJld3JpdGUg
PSAxOwp9CmlmICgkcmV3cml0ZSkgewogIHJlZGlyZWN0KCRzY3JpcHRuYW1lIC4gdXJpX2VzY2Fw
ZV9wYXRoKCRwYXRoaW5mbykgLiAkcXVlcnksIDEpOwp9CnVuZGVmICRyZXdyaXRlOwoKdW5kZWYg
JHBhdGhpbmZvOwoKaWYgKCEtZCAkY3Zzcm9vdCkgewogIGZhdGFsKCI1MDAgSW50ZXJuYWwgRXJy
b3IiLAogICAgICAgICckQ1ZTUk9PVCBub3QgZm91bmQhPHA+VGhlIHNlcnZlciBvbiB3aGljaCB0
aGUgQ1ZTIHRyZWUgbGl2ZXMgaXMgcHJvYmFibHkgZG93bi4gIFBsZWFzZSB0cnkgYWdhaW4gaW4g
YSBmZXcgbWludXRlcy4nKTsKfQoKIwojIFNob3J0LWNpcmN1aXQgZm9yYmlkZGVuIHRoaW5ncy4g
IE5vdGUgdGhhdCAkZnVsbG5hbWUgc2hvdWxkIG5vdCBjaGFuZ2UKIyBhZnRlciB0aGlzLCBiZWNh
dXNlIHRoZSByZXN0IG9mIHRoZSBjb2RlIGFzc3VtZXMgdGhpcyBjaGVjayBoYXMgYWxyZWFkeQoj
IGJlZW4gZG9uZS4KIwpmYXRhbCgnNDAzIEZvcmJpZGRlbicsICdBY2Nlc3MgdG8gJXMgZm9yYmlk
ZGVuLicsICR3aGVyZSkKICBpZiBmb3JiaWRkZW4oJGZ1bGxuYW1lKTsKCiMKIyBIYW5kbGUgdGFy
YmFsbCBkb3dubG9hZHMgYmVmb3JlIGFueSBoZWFkZXJzIGFyZSBvdXRwdXQuCiMKaWYgKCRpbnB1
dHt0YXJiYWxsfSkgewogIGZhdGFsKCc0MDMgRm9yYmlkZGVuJywgJ0Rvd25sb2FkaW5nIHRhcmJh
bGxzIGlzIHByb2hpYml0ZWQuJykKICAgIHVubGVzcyAkYWxsb3dfdGFyOwoKICBteSAoJG1vZHVs
ZSkgID0gICgkd2hlcmUgPX4gbSxeLz8oLiopLCk7ICAgICMgdW50YWludAogICRtb2R1bGUgICAg
ICAgPX4gcywvKFteL10qKSQsLDsKICBteSAoJGV4dCkgICAgID0gICgkMSA9fiAvKFwudCg/OmFy
XC4pP2d6fFwuemlwKSQvKTsKICBteSAoJGJhc2VkaXIpID0gICgkbW9kdWxlID1+IG0sKFteL10r
KSQsKTsKCiAgaWYgKCRiYXNlZGlyIGVxICcnIHx8ICRtb2R1bGUgZXEgJycpIHsKICAgIGZhdGFs
KCc1MDAgSW50ZXJuYWwgRXJyb3InLAogICAgICAgICAgJ1lvdSBjYW5ub3QgZG93bmxvYWQgdGhl
IHRvcCBsZXZlbCBkaXJlY3RvcnkuJyk7CiAgfQoKICBteSAkaXN0YXIgPSAoJGV4dCBlcSAnLnRh
ci5neicgfHwgJGV4dCBlcSAnLnRneicpOwogIGlmICgkaXN0YXIpIHsKICAgIGZhdGFsKCc1MDAg
SW50ZXJuYWwgRXJyb3InLCAndGFyIGNvbW1hbmQgbm90IGZvdW5kLicpIHVubGVzcyAkQ01Ee3Rh
cn07CiAgICBmYXRhbCgnNTAwIEludGVybmFsIEVycm9yJywgJ2d6aXAgY29tbWFuZCBub3QgZm91
bmQuJykgdW5sZXNzICRDTUR7Z3ppcH07CiAgfQogIG15ICRpc3ppcCA9ICgkZXh0IGVxICcuemlw
Jyk7CiAgaWYgKCRpc3ppcCAmJiAhJENNRHt6aXB9KSB7CiAgICBmYXRhbCgnNTAwIEludGVybmFs
IEVycm9yJywgJ3ppcCBjb21tYW5kIG5vdCBmb3VuZC4nKTsKICB9CiAgaWYgKCEkaXN0YXIgJiYg
ISRpc3ppcCkgewogICAgZmF0YWwoJzUwMCBJbnRlcm5hbCBFcnJvcicsICdVbnN1cHBvcnRlZCBh
cmNoaXZlIHR5cGUuJyk7CiAgfQoKICBteSAkdG1wZXhwb3J0ZGlyOwogIGV2YWwgewogICAgbG9j
YWwgJFNJR3tfX0RJRV9ffTsKICAgICMgRG9uJ3QgdXNlIHRoZSBDTEVBTlVQIGFyZ3VtZW50IHRv
IHRlbXBkaXIoKSBoZXJlLCBzaW5jZSB3ZSBtaWdodCBiZSB1bmRlcgogICAgIyBtb2RfcGVybCAo
dGhlIHByb2Nlc3MgcnVucyBmb3IgYSBsb25nIHRpbWUpLCB1bmxpbmsgZXhwbGljaXRseSBsYXRl
ci4KICAgICR0bXBleHBvcnRkaXIgPSB0ZW1wZGlyKCcuY3Zzd2ViLlhYWFhYWFhYJywgVE1QRElS
ID0+IDEpOwogIH07CiAgaWYgKCRAKSB7CiAgICBmYXRhbCgnNTAwIEludGVybmFsIEVycm9yJywg
J1VuYWJsZSB0byBtYWtlIHRlbXBvcmFyeSBkaXJlY3Rvcnk6ICVzJywgJEApOwogIH0KICBpZiAo
IWNoZGlyKCR0bXBleHBvcnRkaXIpKSB7CiAgICBmYXRhbCgnNTAwIEludGVybmFsIEVycm9yJywK
ICAgICAgICAgICJDYW4ndCBjZCB0byB0ZW1wb3JhcnkgZGlyZWN0b3J5ICVzOiAlcyIsICR0bXBl
eHBvcnRkaXIsICQhKTsKICB9CgogIG15IEBmYXRhbDsKICBteSAkdGFnID0gJGlucHV0e29ubHlf
d2l0aF90YWd9IHx8ICdIRUFEJzsKICAkdGFnID0gJ0hFQUQnIGlmICgkdGFnIGVxICdNQUlOJyk7
CgogIG15IEBjbWQgPQogICAgKCRDTUR7Y3ZzfSwgQGN2c19vcHRpb25zLCAnLVFkJywgJGN2c3Jv
b3QsICdleHBvcnQnLCAnLXInLCAkdGFnLAogICAgICctZCcsICRiYXNlZGlyLCAkbW9kdWxlKTsK
ICBteSAkZXhwb3J0X2VycjsKICBteSAoJGVycmNvZGUsICRlcnIpID0gcnVucHJvYyhcQGNtZCwg
JzI+JywgXCRleHBvcnRfZXJyKTsKICBpZiAoJGVycmNvZGUpIHsKICAgIEBmYXRhbCA9CiAgICAg
ICgnNTAwIEludGVybmFsIEVycm9yJywKICAgICAgICdFeHBvcnQgZmFpbHVyZSAoZXhpdCBzdGF0
dXMgJXMpLCBvdXRwdXQ6IDxwcmU+JXM8L3ByZT4nLAogICAgICAgJGVycmNvZGUsICRlcnIgfHwg
JGV4cG9ydF9lcnIpOwoKICB9IGVsc2UgewoKICAgICR8ID0gMTsgICAgIyBFc3NlbnRpYWwgdG8g
Z2V0IHRoZSBidWZmZXJpbmcgcmlnaHQuCiAgICBsb2NhbCAoKlRBUl9PVVQpOwoKICAgIG15IChA
Y21kLCAkY3R5cGUpOwogICAgaWYgKCRpc3RhcikgewogICAgICBteSBAdGFyID0gKCRDTUR7dGFy
fSwgQHRhcl9vcHRpb25zLCAnLWNmJywgJy0nLCAkYmFzZWRpcik7CiAgICAgIG15IEBnemlwID0g
KCRDTUR7Z3ppcH0sIEBnemlwX29wdGlvbnMsICctYycpOwogICAgICBwdXNoKEBjbWQsIFxAdGFy
LCAnfCcsIFxAZ3ppcCk7CiAgICAgICRjdHlwZSA9ICdhcHBsaWNhdGlvbi94LWd6aXAnOwogICAg
fSBlbHNpZiAoJGlzemlwKSB7CiAgICAgIG15IEB6aXAgPSAoJENNRHt6aXB9LCBAemlwX29wdGlv
bnMsICctcicsICctJywgJGJhc2VkaXIpOwogICAgICBwdXNoKEBjbWQsIFxAemlwLCBcJycpOwog
ICAgICAkY3R5cGUgPSAnYXBwbGljYXRpb24vemlwJzsKICAgIH0KICAgIHB1c2goQGNtZCwgJz5w
aXBlJywgXCpUQVJfT1VUKTsKCiAgICBteSAoJGgsICRlcnIpID0gc3RhcnRwcm9jKEBjbWQpOwog
ICAgaWYgKCRoKSB7CiAgICAgIHByaW50ICJDb250ZW50LVR5cGU6ICRjdHlwZVxyXG5cclxuIjsK
ICAgICAgbG9jYWwgJC8gPSB1bmRlZjsKICAgICAgcHJpbnQgPFRBUl9PVVQ+OwogICAgICAkaC0+
ZmluaXNoKCk7CiAgICB9IGVsc2UgewogICAgICBAZmF0YWwgPSAoJzUwMCBJbnRlcm5hbCBFcnJv
cicsCiAgICAgICAgICAgICAgICAnJXMgZmFpbHVyZSAoZXhpdCBzdGF0dXMgJXMpLCBvdXRwdXQ6
IDxwcmU+JXM8L3ByZT4nLAogICAgICAgICAgICAgICAgJGlzdGFyID8gJ1RhcicgOiAnWmlwJywg
JD8gPj4gOCB8fCAtMSwgJGVycik7CiAgICB9CiAgfQoKICAjIENsZWFuIHVwLgogIHJtdHJlZSgk
dG1wZXhwb3J0ZGlyKTsKCiAgJmZhdGFsKEBmYXRhbCkgaWYgQGZhdGFsOwoKICBleGl0Owp9Cgoj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBWaWV3IGEgZGlyZWN0b3J5CiMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKaWYgKC1kICRmdWxsbmFtZSkgewoKICBteSAkZGggPSBk
byB7IGxvY2FsICgqREgpOyB9OwogIG9wZW5kaXIoJGRoLCAkZnVsbG5hbWUpIG9yIGZhdGFsKCI0
MDQgTm90IEZvdW5kIiwgJyVzOiAlcycsICR3aGVyZSwgJCEpOwogIG15IEBkaXIgPSBncmVwKCFm
b3JiaWRkZW4oY2F0ZmlsZSgkZnVsbG5hbWUsICRfKSksIHJlYWRkaXIoJGRoKSk7CiAgY2xvc2Vk
aXIoJGRoKTsKICBteSBAc3ViTGV2ZWxGaWxlcyA9IGZpbmRMYXN0TW9kaWZpZWRTdWJkaXJzKEBk
aXIpIGlmICRzaG93X3N1YmRpcl9sYXN0bW9kOwogIG15IEB1bnJlYWRhYmxlID0gZ2V0RGlyTG9n
cygkY3Zzcm9vdCwgJHdoZXJlLCBAc3ViTGV2ZWxGaWxlcyk7CgogIGlmICgkd2hlcmUgZXEgJy8n
KSB7CiAgICBodG1sX2hlYWRlcigkZGVmYXVsdHRpdGxlKTsKICAgICRsb25nX2ludHJvID1+IHMv
ISFDVlNST09UZGVzY3IhIS8kQ1ZTUk9PVGRlc2NyeyRjdnN0cmVlfS9nOwogICAgcHJpbnQgJGxv
bmdfaW50cm87CiAgfSBlbHNlIHsKICAgIGh0bWxfaGVhZGVyKCR3aGVyZSk7CiAgICBteSAkaHRt
bCA9ICgtZiBjYXRmaWxlKCRmdWxsbmFtZSwgJ1JFQURNRS5jdnMuaHRtbCx2JykgfHwKICAgICAg
ICAgICAgICAgIC1mIGNhdGZpbGUoJGZ1bGxuYW1lLCAnQXR0aWMnLCAnUkVBRE1FLmN2cy5odG1s
LHYnKSk7CiAgICBteSAkdGV4dCA9ICghJGh0bWwgJiYKICAgICAgICAgICAgICAgICgtZiBjYXRm
aWxlKCRmdWxsbmFtZSwgJ1JFQURNRS5jdnMsdicpIHx8CiAgICAgICAgICAgICAgICAgLWYgY2F0
ZmlsZSgkZnVsbG5hbWUsICdBdHRpYycsICdSRUFETUUuY3ZzLHYnKSkpOwogICAgaWYgKCRodG1s
IHx8ICR0ZXh0KSB7CiAgICAgIG15ICRyZXYgPSAkaW5wdXR7b25seV93aXRoX3RhZ30gfHwgJ0hF
QUQnOwogICAgICBteSAkY3IgPSBhYnNfcGF0aCgkY3Zzcm9vdCkgfHwgJGN2c3Jvb3Q7CiAgICAg
IG15ICRjbyA9ICIkd2hlcmUvUkVBRE1FLmN2cy5odG1sIiBpZiAkaHRtbDsKICAgICAgJGNvIHx8
PSAiJHdoZXJlL1JFQURNRS5jdnMiIGlmICR0ZXh0OwogICAgICAjIGFic19wYXRoKCkgdGFpbnRz
IHdoZW4gcnVuIGFzIGEgQ0dJLi4uCiAgICAgIGlmICgkY3IgPX4gVkFMSURfUEFUSCkgewogICAg
ICAgICRjciA9ICQxOwogICAgICB9IGVsc2UgewogICAgICAgIGZhdGFsKCc1MDAgSW50ZXJuYWwg
RXJyb3InLCAnSWxsZWdhbCBDVlMgcm9vdDogPGNvZGU+JXM8L2NvZGU+JywgJGNyKTsKICAgICAg
fQogICAgICBteSBAY21kID0gKCRDTUR7Y3ZzfSwgQGN2c19vcHRpb25zLCAnLWQnLCAkY3IsICdj
bycsICctcCcsICItciRyZXYiLCRjbyk7CiAgICAgIGxvY2FsICgqQ1ZTX09VVCwgKkNWU19FUlIp
OwogICAgICBteSAoJGgsICRlcnIpID0gc3RhcnRwcm9jKFxAY21kLCBcIiIsICc+cGlwZScsIFwq
Q1ZTX09VVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMj5waXBlJywgXCpDVlNf
RVJSKTsKICAgICAgZmF0YWwoJzUwMCBJbnRlcm5hbCBFcnJvcicsICRlcnIpIHVubGVzcyAkaDsK
ICAgICAgaWYgKCRodG1sKSB7CiAgICAgICAgbG9jYWwgJC8gPSB1bmRlZjsKICAgICAgICBwcmlu
dCA8Q1ZTX09VVD47CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcHJpbnQgIjxwPlxuIjsKICAgICAg
ICB3aGlsZSAoPENWU19PVVQ+KSB7CiAgICAgICAgICBjaG9tcDsKICAgICAgICAgIHByaW50IGh0
bWxxdW90ZSgkXyksICc8YnIgLz4nOwogICAgICAgIH0KICAgICAgICBwcmludCAiPC9wPiI7CiAg
ICAgIH0KICAgICAgJGgtPmZpbmlzaCgpOwogICAgfQogICAgcHJpbnQgJHNob3J0X2luc3RydWN0
aW9uOwogIH0KCiAgaWYgKCR1c2VfZGVzY3JpcHRpb25zICYmCiAgICAgIG9wZW4oREVTQywgY2F0
ZmlsZSgkY3Zzcm9vdCwgJ0NWU1JPT1QnLCAnZGVzY3JpcHRpb25zJykpKSB7CiAgICB3aGlsZSAo
PERFU0M+KSB7CiAgICAgIGNob21wOwogICAgICBteSAoJGRpciwgJGRlc2NyaXB0aW9uKSA9IC8o
XFMrKVxzKyguKikvOwogICAgICAkZGVzY3JpcHRpb25zeyRkaXJ9ID0gJGRlc2NyaXB0aW9uOwog
ICAgfQogICAgY2xvc2UoREVTQyk7CiAgfQoKICBwcmludCAiPHA+PGEgbmFtZT1cImRpcmxpc3Rc
Ij48L2E+PC9wPlxuIjsKCiAgIyBnaXZlIGRpcmVjdCBhY2Nlc3MgdG8gZGlycwogIGlmICgkd2hl
cmUgZXEgJy8nKSB7CiAgICBjaG9vc2VNaXJyb3IoKTsKICAgIGNob29zZUNWU1Jvb3QoKTsKCiAg
fSBlbHNlIHsKICAgIHByaW50ICc8cD5DdXJyZW50IGRpcmVjdG9yeTogPGI+JywgY2xpY2thYmxl
UGF0aCgkd2hlcmUsIDApLCAnPC9iPic7CiAgICBpZiAoJGN2c2hpc3RvcnlfdXJsKSB7CiAgICAg
IChteSAkZCA9ICR3aGVyZSkgPX4gc3xeLyooLio/KS8qJHwkMXw7CiAgICAgIHByaW50ICcgLSAn
LCBoaXN0b3J5X2xpbmsoJGQsICcnKTsKICAgIH0KICAgIHByaW50ICI8L3A+XG4iOwogICAgcHJp
bnQgIjxwPkN1cnJlbnQgdGFnOiA8Yj4iLCBodG1scXVvdGUoJGlucHV0e29ubHlfd2l0aF90YWd9
KSwgIjwvYj48L3A+XG4iCiAgICAgIGlmICRpbnB1dHtvbmx5X3dpdGhfdGFnfTsKICB9CgogIHBy
aW50ICI8aHIgLz5cbiI7CgogIG15ICRpbmZvY29scyA9IDE7CgogIHByaW50Zig8PEVPRiwgJ0Rp
cmVjdG9yeSBpbmRleCBvZiAnIC4gaHRtbHF1b3RlKCR3aGVyZSkpOwo8dGFibGUgY2xhc3M9ImRp
ciIgd2lkdGg9IjEwMCUlIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IiR0YWJsZXBhZGRp
bmciIHN1bW1hcnk9IiVzIj4KPHRyPgpFT0YKICBwcmludGYoJzx0aCBjb2xzcGFuPSIyIiVzPics
ICgkYnlmaWxlID8gJyBjbGFzcz0ic29ydGVkIicgOiAnJykpOwoKICBpZiAoJGJ5ZmlsZSkgewog
ICAgcHJpbnQgJ0ZpbGUnOwogIH0gZWxzZSB7CiAgICBwcmludCAmbGluaygnRmlsZScsCiAgICAg
ICAgICAgICAgICBzcHJpbnRmKCcuLyVzI2Rpcmxpc3QnLCB0b2dnbGVRdWVyeSgnc29ydGJ5Jywg
J2ZpbGUnKSkpOwogIH0KICBwcmludCAiPC90aD5cbiI7CgogICMgRG8gbm90IGRpc3BsYXkgdGhl
IG90aGVyIGNvbHVtbiBoZWFkZXJzIGlmIHdlIGRvIG5vdCBoYXZlIGFueSBmaWxlcwogICMgd2l0
aCByZXZpc2lvbiBpbmZvcm1hdGlvbi4KICBpZiAoc2NhbGFyKCVmaWxlaW5mbykpIHsKICAgICRp
bmZvY29scysrOwogICAgcHJpbnRmKCc8dGglcz4nLCAoJGJ5cmV2ID8gJyBjbGFzcz0ic29ydGVk
IicgOiAnJykpOwoKICAgIGlmICgkYnlyZXYpIHsKICAgICAgcHJpbnQgJ1Jldi4nOwogICAgfSBl
bHNlIHsKICAgICAgcHJpbnQgJmxpbmsoJ1Jldi4nLAogICAgICAgICAgICAgICAgICBzcHJpbnRm
KCcuLyVzI2Rpcmxpc3QnLCB0b2dnbGVRdWVyeSgnc29ydGJ5JywgJ3JldicpKSk7CiAgICB9CiAg
ICBwcmludCAiPC90aD5cbiI7CiAgICAkaW5mb2NvbHMrKzsKICAgIHByaW50ZignPHRoJXM+Jywg
KCRieWRhdGUgPyAnIGNsYXNzPSJzb3J0ZWQiJyA6ICcnKSk7CgogICAgaWYgKCRieWRhdGUpIHsK
ICAgICAgcHJpbnQgJ0FnZSc7CiAgICB9IGVsc2UgewogICAgICBwcmludCAmbGluaygnQWdlJywK
ICAgICAgICAgICAgICAgICAgc3ByaW50ZignLi8lcyNkaXJsaXN0JywgdG9nZ2xlUXVlcnkoJ3Nv
cnRieScsICdkYXRlJykpKTsKICAgIH0KICAgIHByaW50ICI8L3RoPlxuIjsKCiAgICBpZiAoJHNo
b3dfYXV0aG9yKSB7CiAgICAgICRpbmZvY29scysrOwogICAgICBwcmludGYoJzx0aCVzPicsICgk
YnlhdXRob3IgPyAnIGNsYXNzPSJzb3J0ZWQiJyA6ICcnKSk7CgogICAgICBpZiAoJGJ5YXV0aG9y
KSB7CiAgICAgICAgcHJpbnQgJ0F1dGhvcic7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcHJpbnQK
ICAgICAgICAgICZsaW5rKCdBdXRob3InLAogICAgICAgICAgICAgICAgc3ByaW50ZignLi8lcyNk
aXJsaXN0JywgdG9nZ2xlUXVlcnkoJ3NvcnRieScsICdhdXRob3InKSkpOwogICAgICB9CiAgICAg
IHByaW50ICI8L3RoPlxuIjsKICAgIH0KICAgICRpbmZvY29scysrOwogICAgcHJpbnRmKCc8dGgl
cz4nLCAoJGJ5bG9nID8gJyBjbGFzcz0ic29ydGVkIicgOiAnJykpOwoKICAgIGlmICgkYnlsb2cp
IHsKICAgICAgcHJpbnQgJ0xhc3QgbG9nIGVudHJ5JzsKICAgIH0gZWxzZSB7CiAgICAgIHByaW50
ICZsaW5rKCdMYXN0IGxvZyBlbnRyeScsCiAgICAgICAgICAgICAgICAgIHNwcmludGYoJy4vJXMj
ZGlybGlzdCcsIHRvZ2dsZVF1ZXJ5KCdzb3J0YnknLCAnbG9nJykpKTsKICAgIH0KICAgIHByaW50
ICI8L3RoPlxuIjsKICB9IGVsc2lmICgkdXNlX2Rlc2NyaXB0aW9ucykgewogICAgcHJpbnQgIjx0
aD5EZXNjcmlwdGlvbjwvdGg+XG4iOwogICAgJGluZm9jb2xzKys7CiAgfQogIHByaW50ICI8L3Ry
PlxuIjsKCiAgbXkgJGRpcnJvdyA9IDA7CgogIG15ICRpOwogIGxvb2tpbmdmb3JhdHRpYzoKICBm
b3IgKCRpID0gMDsgJGkgPD0gJCNkaXI7ICRpKyspIHsKICAgIGlmICgkZGlyWyRpXSBlcSAiQXR0
aWMiKSB7CiAgICAgIGxhc3QgbG9va2luZ2ZvcmF0dGljOwogICAgfQogIH0KCiAgaWYgKCEkaW5w
dXR7aGlkZWF0dGljfQogICAgICAmJiAoJGkgPD0gJCNkaXIpCiAgICAgICYmIG9wZW5kaXIoJGRo
LCAkZnVsbG5hbWUgLiAnL0F0dGljJykpCiAgewogICAgc3BsaWNlKEBkaXIsICRpLCAxLCBncmVw
KChzfF58QXR0aWMvfCwgIW18L1wufCksIHJlYWRkaXIoJGRoKSkpOwogICAgY2xvc2VkaXIoJGRo
KTsKICB9CgogIG15ICRoaWRlQXR0aWNUb2dnbGVMaW5rID0KICAgICRpbnB1dHtoaWRlYXR0aWN9
CiAgICA/ICcnCiAgICA6ICZsaW5rKCdbaGlkZV0nLCBzcHJpbnRmKCcuLyVzI2Rpcmxpc3QnLCAm
dG9nZ2xlUXVlcnkoJ2hpZGVhdHRpYycpKSk7CgogICMgU29ydCB3aXRob3V0IHRoZSBBdHRpYy8g
cGF0aG5hbWUuCiAgIyBwbGFjZSBkaXJlY3RvcmllcyBmaXJzdAoKICBteSAkZmlsZXNleGlzdHM7
CiAgbXkgJGZpbGVzZm91bmQ7CgogIGZvcmVhY2ggbXkgJGZpbGUgKHNvcnQgeyAmZmlsZVNvcnRD
bXAgfSBAZGlyKSB7CgogICAgbmV4dCBpZiAoJGZpbGUgZXEgY3VyZGlyKCkpOwoKICAgICMgaWdu
b3JlIENWUyBsb2NrIGFuZCBzdGFsZSBORlMgZmlsZXMKICAgIG5leHQgaWYgKCRmaWxlID1+IC9e
XCNjdnNcLnxeLHxeXC5uZnMvKTsgIyBcIyBmb3IgWEVtYWNzIGNwZXJsLW1vZGUuLi4KCiAgICAj
IENoZWNrIHdoZXRoZXIgdG8gc2hvdyB0aGUgQ1ZTUk9PVCBwYXRoCiAgICBuZXh0IGlmICgkaW5w
dXR7aGlkZWN2c3Jvb3R9ICYmICR3aGVyZSBlcSAnLycgJiYgJGZpbGUgZXEgJ0NWU1JPT1QnKTsK
CiAgICAjIElzIGl0IGEgZGlyZWN0b3J5PwogICAgbXkgJGlzZGlyID0gLWQgY2F0ZGlyKCRmdWxs
bmFtZSwgJGZpbGUpOwoKICAgICMgSWdub3JlIG5vbi1yZWFkYWJsZSBmaWxlcyBhbmQgZGlyZWN0
b3JpZXM/CiAgICBuZXh0IGlmICgkaW5wdXR7aGlkZW5vbnJlYWRhYmxlfSAmJiAoISAtciBfIHx8
ICgkaXNkaXIgJiYgISAteCBfKSkpOwoKICAgIG15ICRhdHRpYyA9ICcnOwogICAgaWYgKCRmaWxl
ID1+IHN8XkF0dGljL3x8KSB7CiAgICAgICRhdHRpYyA9ICcgPHNwYW4gY2xhc3M9ImF0dGljIj4o
aW4gdGhlIEF0dGljKSAnIC4KICAgICAgICAkaGlkZUF0dGljVG9nZ2xlTGluayAuICc8L3NwYW4+
JzsKICAgIH0KCiAgICBpZiAoJGZpbGUgZXEgdXBkaXIoKSB8fCAkaXNkaXIpIHsKICAgICAgbmV4
dCBpZiAoJGZpbGUgZXEgdXBkaXIoKSAmJiAkd2hlcmUgZXEgJy8nKTsKICAgICAgbXkgKCRyZXYs
ICRkYXRlLCAkbG9nLCAkYXV0aG9yLCAkZmlsZW5hbWUsICRrZXl3b3Jkc3Vic3QpID0KICAgICAg
ICBAeyRmaWxlaW5mb3skZmlsZX19IGlmIChkZWZpbmVkKCRmaWxlaW5mb3skZmlsZX0pKTsKICAg
ICAgcHJpbnRmICI8dHIgY2xhc3M9XCIlc1wiPlxuPHRkIGNsYXNzPVwiZGlyXCIgY29sc3Bhbj1c
IjJcIj4iLAogICAgICAgICgkZGlycm93ICUgMikgPyAnZXZlbicgOiAnb2RkJzsKCiAgICAgIGlm
ICgkZmlsZSBlcSB1cGRpcigpKSB7CiAgICAgICAgbXkgJHVybCA9ICIuLi8kcXVlcnkiOwogICAg
ICAgIHByaW50ICRub2ZpbGVsaW5rcyA/ICRiYWNraWNvbiA6ICZsaW5rKCRiYWNraWNvbiwgJHVy
bCk7CiAgICAgICAgcHJpbnQgJyZuYnNwOycsICZsaW5rKCJQYXJlbnQgRGlyZWN0b3J5IiwgJHVy
bCk7CgogICAgICB9IGVsc2UgewogICAgICAgIG15ICR1cmwgPSAnLi8nIC4gdXJpX2VzY2FwZV9w
YXRoKCRmaWxlKSAuICIvJHF1ZXJ5IjsKICAgICAgICBwcmludCAnPGEgbmFtZT0iJywgaHRtbHF1
b3RlKCRmaWxlKSwgJyI+PC9hPic7CiAgICAgICAgcHJpbnQgJG5vZmlsZWxpbmtzID8gJGRpcmlj
b24gOiAmbGluaygkZGlyaWNvbiwgJHVybCk7CiAgICAgICAgcHJpbnQgJyZuYnNwOycsICZsaW5r
KGh0bWxxdW90ZSgiJGZpbGUvIiksICR1cmwpLCAkYXR0aWM7CiAgICAgICAgaWYgKCRmaWxlIGVx
ICJBdHRpYyIpIHsKICAgICAgICAgIHByaW50ICcgPHNwYW4gY2xhc3M9ImF0dGljIj4nLAogICAg
ICAgICAgICAmbGluaygnW3Nob3ddJywKICAgICAgICAgICAgICAgICAgc3ByaW50ZignLi8lcyNk
aXJsaXN0JywgJnRvZ2dsZVF1ZXJ5KCdoaWRlYXR0aWMnKSkpLAogICAgICAgICAgICAgICAgICAg
ICc8L3NwYW4+JzsKICAgICAgICB9CiAgICAgIH0KCiAgICAgICMgU2hvdyBsYXN0IGNoYW5nZSBp
biBkaXIKICAgICAgaWYgKCRmaWxlbmFtZSkgewogICAgICAgIHByaW50ICI8L3RkPlxuPHRkPiZu
YnNwOzwvdGQ+XG48dGQgY2xhc3M9XCJhZ2VcIj4iOwogICAgICAgIHByaW50IHJlYWRhYmxlVGlt
ZSh0aW1lKCkgLSAkZGF0ZSwgMCkgaWYgJGRhdGU7CiAgICAgICAgcHJpbnQgIjwvdGQ+XG48dGQg
Y2xhc3M9XCJhdXRob3JcIj4iLCBodG1scXVvdGUoJGF1dGhvcikKICAgICAgICAgIGlmICRzaG93
X2F1dGhvcjsKICAgICAgICBwcmludCAiPC90ZD5cbjx0ZCBjbGFzcz1cImxvZ1wiPiI7CiAgICAg
ICAgJGZpbGVuYW1lID1+IHMlXlteL10rLyUlOwogICAgICAgIHByaW50ICZsaW5rKGh0bWxxdW90
ZSgiJGZpbGVuYW1lLyRyZXYiKSwKICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKCclcy8lcyVz
I3JldiVzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVyaV9lc2NhcGUoJGZpbGUpLCB1
cmlfZXNjYXBlKCRmaWxlbmFtZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcXVlcnks
ICRyZXYpKSwgJzxiciAvPic7CiAgICAgICAgaWYgKCRsb2cpIHsKICAgICAgICAgIHByaW50IGh0
bWxpZnkoc3Vic3RyKCRsb2csIDAsICRzaG9ydExvZ0xlbiksICRhbGxvd19kaXJfZXh0cmEpOwog
ICAgICAgICAgcHJpbnQgJy4uLicgaWYgKGxlbmd0aCgkbG9nKSA+IDgwKTsKICAgICAgICB9Cgog
ICAgICB9IGVsc2UgewogICAgICAgIG15ICRkd2hlcmUgPSAoJHdoZXJlIG5lICcvJyA/ICR3aGVy
ZSA6ICcnKSAuICRmaWxlOwoKICAgICAgICBpZiAoJHVzZV9kZXNjcmlwdGlvbnMgJiYgZGVmaW5l
ZCAkZGVzY3JpcHRpb25zeyRkd2hlcmV9KSB7CiAgICAgICAgICBwcmludCAnPHRkIGNvbHNwYW49
IicsICgkaW5mb2NvbHMgLSAxKSwgJyI+JzsKICAgICAgICAgIHByaW50ICRkZXNjcmlwdGlvbnN7
JGR3aGVyZX07CgogICAgICAgIH0gZWxzaWYgKCRpbmZvY29scyA+IDEpIHsKCiAgICAgICAgICAj
IGNsb3NlIHRoZSByb3cgd2l0aCB0aGUgYXBwcm9wcmlhdGUgbnVtYmVyIG9mCiAgICAgICAgICAj
IGNvbHVtbnMsIHNvIHRoYXQgdGhlIHZlcnRpY2FsIHNlcGVyYXRvcnMgYXJlIHZpc2libGUKICAg
ICAgICAgIG15ICgkY29scykgPSAkaW5mb2NvbHM7CiAgICAgICAgICB3aGlsZSAoJGNvbHMgPiAx
KSB7CiAgICAgICAgICAgIHByaW50ICI8L3RkPlxuPHRkPiZuYnNwOyI7CiAgICAgICAgICAgICRj
b2xzLS07CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CgogICAgICBwcmludCAiPC90ZD5c
bjwvdHI+XG4iOwogICAgICAkZGlycm93Kys7CgogICAgfSBlbHNpZiAoJGZpbGUgPX4gcy8sdiQv
LykgewoKICAgICAgbXkgJGZpbGV1cmwgPSAoJGF0dGljID8gJ0F0dGljLycgOiAnJykgLiB1cmlf
ZXNjYXBlX3BhdGgoJGZpbGUpOwogICAgICBteSAkdXJsICAgICA9ICcuLycgLiAkZmlsZXVybCAu
ICRxdWVyeTsKICAgICAgJGZpbGVzZXhpc3RzKys7CiAgICAgIG5leHQgaWYgKCFkZWZpbmVkKCRm
aWxlaW5mb3skZmlsZX0pKTsKICAgICAgbXkgKCRyZXYsICRkYXRlLCAkbG9nLCAkYXV0aG9yLCAk
ZmlsZW5hbWUsICRrZXl3b3Jkc3Vic3QpID0KICAgICAgICBAeyRmaWxlaW5mb3skZmlsZX19Owog
ICAgICBteSAkaXNiaW5hcnkgPSAka2V5d29yZHN1YnN0IGVxICdiJyA/IDEgOiAwOwogICAgICAk
ZmlsZXNmb3VuZCsrOwoKICAgICAgcHJpbnRmICI8dHIgY2xhc3M9XCIlc1wiPlxuIiwgKCRkaXJy
b3cgJSAyKSA/ICdldmVuJyA6ICdvZGQnOwogICAgICBwcmludGYgJzx0ZCBjbGFzcz0iZmlsZSIl
cz4nLCAkYWxsb3dfY3ZzZ3JhcGggPyAnJyA6ICcgY29sc3Bhbj0iMiInOwoKICAgICAgbXkgJGlj
b24gPSAkaXNiaW5hcnkgPyAkYmluZmlsZWljb24gOiAkZmlsZWljb247CiAgICAgIHByaW50ICRu
b2ZpbGVsaW5rcyA/ICRpY29uIDogJmxpbmsoJGljb24sICR1cmwpOwogICAgICBwcmludCAnJm5i
c3A7JywgJmxpbmsoaHRtbHF1b3RlKCRmaWxlKSwgJHVybCksICRhdHRpYzsKICAgICAgcHJpbnQg
JzwvdGQ+PHRkIGNsYXNzPSJncmFwaCI+JywgZ3JhcGhfbGluaygkZmlsZXVybCkgaWYgJGFsbG93
X2N2c2dyYXBoOwogICAgICBwcmludCAiPC90ZD5cbjx0ZCB3aWR0aD1cIjMwXCI+IiwgZGlzcGxh
eV9saW5rKCRmaWxldXJsLCAkcmV2KTsKICAgICAgcHJpbnQgIjwvdGQ+XG48dGQgY2xhc3M9XCJh
Z2VcIj4iOwogICAgICBwcmludCByZWFkYWJsZVRpbWUodGltZSgpIC0gJGRhdGUsIDApIGlmICRk
YXRlOwogICAgICBwcmludCAiPC90ZD5cbjx0ZCBjbGFzcz1cImF1dGhvclwiPiIsIGh0bWxxdW90
ZSgkYXV0aG9yKSBpZiAkc2hvd19hdXRob3I7CiAgICAgIHByaW50ICI8L3RkPlxuPHRkIGNsYXNz
PVwibG9nXCI+IjsKCiAgICAgIGlmICgkbG9nKSB7CiAgICAgICAgcHJpbnQgaHRtbGlmeShzdWJz
dHIoJGxvZywgMCwgJHNob3J0TG9nTGVuKSwgJGFsbG93X2Rpcl9leHRyYSk7CiAgICAgICAgcHJp
bnQgJy4uLicgaWYgKGxlbmd0aCAkbG9nID4gODApOwogICAgICB9CiAgICAgIHByaW50ICI8L3Rk
PlxuPC90cj4iOwogICAgICAkZGlycm93Kys7CiAgICB9CiAgICBwcmludCAiXG4iOwogIH0KCiAg
cHJpbnQgIjwvdGFibGU+XG4iOwoKICBpZiAoKG15ICRudW0gPSBzY2FsYXIoQHVucmVhZGFibGUp
KSAmJiAhICRpbnB1dHtoaWRlbm9ucmVhZGFibGV9KSB7CiAgICBwcmludGYoPDxFT0YsICRudW0s
IGh0bWxxdW90ZShqb2luKCcsICcsIEB1bnJlYWRhYmxlKSkpOwo8cD4KIDxiPk5PVEU6PC9iPiBU
aGUgZm9sbG93aW5nICVkIHVucmVhZGFibGUgZmlsZXMgd2VyZSBpZ25vcmVkOjxiciAvPgogPGVt
PiVzPC9lbT4KPC9wPgpFT0YKICB9CgogIGlmICgkZmlsZXNleGlzdHMgJiYgISRmaWxlc2ZvdW5k
KSB7CiAgICBteSAkY3VycnRhZyA9IGRlZmluZWQoJGlucHV0e29ubHlfd2l0aF90YWd9KSA/CiAg
ICAgIHNwcmludGYoJyAoJXMpJywgaHRtbHF1b3RlKCRpbnB1dHtvbmx5X3dpdGhfdGFnfSkpIDog
Jyc7CiAgICBwcmludGYoPDxFT0YsICRmaWxlc2V4aXN0cywgJGN1cnJ0YWcpOwo8cD4KIDxiPk5P
VEU6PC9iPiBUaGVyZSBhcmUgJWQgZmlsZXMsIGJ1dCBub25lIG1hdGNoZXMgdGhlIGN1cnJlbnQg
dGFnJXMuCjwvcD4KRU9GCiAgfQoKICBpZiAoJGlucHV0e29ubHlfd2l0aF90YWd9ICYmICghJXRh
Z3MgfHwgISR0YWdzeyRpbnB1dHtvbmx5X3dpdGhfdGFnfX0pKSB7CiAgICAldGFncyA9ICVhbGx0
YWdzOwogIH0KCiAgaWYgKHNjYWxhciAldGFncwogICAgICB8fCAkaW5wdXR7b25seV93aXRoX3Rh
Z30KICAgICAgfHwgJGVkaXRfb3B0aW9uX2Zvcm0KICAgICAgfHwgZGVmaW5lZCgkaW5wdXR7b3B0
aW9uc30pKQogIHsKICAgIHByaW50ICI8aHIgLz5cbiI7CiAgfQoKICBpZiAoc2NhbGFyICV0YWdz
IHx8ICRpbnB1dHtvbmx5X3dpdGhfdGFnfSkgewogICAgcHJpbnQgIjxmb3JtIG1ldGhvZD1cImdl
dFwiIGFjdGlvbj1cIi4vXCI+XG48cD5cbiI7CiAgICBmb3JlYWNoIG15ICR2YXIgKEBzdGlja3l2
YXJzKSB7CiAgICAgIHByaW50ZigiPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwiJHZhclwi
IHZhbHVlPVwiJXNcIiAvPlxuIiwKICAgICAgICAgICAgIGh0bWxxdW90ZSgkaW5wdXR7JHZhcn0p
KQogICAgICAgIGlmIChkZWZpbmVkKCRpbnB1dHskdmFyfSkKICAgICAgICAgICAgJiYgKCFkZWZp
bmVkKCRERUZBVUxUVkFMVUV7JHZhcn0pCiAgICAgICAgICAgICAgICB8fCAkaW5wdXR7JHZhcn0g
bmUgJERFRkFVTFRWQUxVRXskdmFyfSkKICAgICAgICAgICAgJiYgJHZhciBuZSAnb25seV93aXRo
X3RhZycpOwogICAgfQogICAgcHJpbnRmKDw8RU9GLCAoJHVzZV9qYXZhX3NjcmlwdCA/ICcgb25j
aGFuZ2U9InRoaXMuZm9ybS5zdWJtaXQoKSInIDogJycpKTsKPHNwYW4gY2xhc3M9Im5vd3JhcCI+
CjxsYWJlbCBmb3I9Im9ubHlfd2l0aF90YWciIGFjY2Vzc2tleT0iVCI+U2hvdyBvbmx5IGZpbGVz
IHdpdGggdGFnOgo8c2VsZWN0IGlkPSJvbmx5X3dpdGhfdGFnIiBuYW1lPSJvbmx5X3dpdGhfdGFn
IiVzPgo8b3B0aW9uIHZhbHVlPSIiPkFsbCB0YWdzIC8gZGVmYXVsdCBicmFuY2g8L29wdGlvbj4K
RU9GCiAgICBmb3JlYWNoIG15ICR0YWcgKHJldmVyc2Ugc29ydCB7IGxjICRhIGNtcCBsYyAkYiB9
IGtleXMgJXRhZ3MpIHsKICAgICAgbXkgJHNlbGVjdGVkID0KICAgICAgICBkZWZpbmVkKCRpbnB1
dHtvbmx5X3dpdGhfdGFnfSkgJiYgJGlucHV0e29ubHlfd2l0aF90YWd9IGVxICR0YWc7CiAgICAg
IHByaW50ZigiPG9wdGlvbiVzPiVzPC9vcHRpb24+XG4iLAogICAgICAgICAgICAgJHNlbGVjdGVk
ID8gJyBzZWxlY3RlZD0ic2VsZWN0ZWQiJyA6ICcnLAogICAgICAgICAgICAgaHRtbHF1b3RlKCR0
YWcpKTsKICAgIH0KICAgIHByaW50Zig8PEVPRiwgaHRtbHF1b3RlKCR3aGVyZSkpOwo8L3NlbGVj
dD4KPC9sYWJlbD48L3NwYW4+IDxzcGFuIGNsYXNzPSJub3dyYXAiPgo8bGFiZWwgZm9yPSJwYXRo
IiBhY2Nlc3NrZXk9IlAiPk1vZHVsZSBwYXRoIG9yIGFsaWFzOgo8aW5wdXQgdHlwZT0idGV4dCIg
aWQ9InBhdGgiIG5hbWU9InBhdGgiIHZhbHVlPSIlcyIgc2l6ZT0iMTUiIC8+PC9sYWJlbD4KPC9z
cGFuPgo8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iR28iIGFjY2Vzc2tleT0iRyIgLz4KPC9w
Pgo8L2Zvcm0+CkVPRgogIH0KCiAgaWYgKCRhbGxvd190YXIgJiYgJGZpbGVzZm91bmQpIHsKICAg
IG15ICgkYmFzZWZpbGUpID0gKCR3aGVyZSA9fiBtLCg/Oi4qLyk/KFteL10rKSwpOwogICAgbXkg
JGhhdmV0YXIgPSAkQ01Ee3Rhcn0gJiYgJENNRHtnemlwfTsKICAgIG15ICRoYXZlemlwID0gJENN
RHt6aXB9OwogICAgaWYgKGRlZmluZWQoJGJhc2VmaWxlKSAmJiAkYmFzZWZpbGUgbmUgJycgJiYg
KCRoYXZldGFyIHx8ICRoYXZlemlwKSkgewogICAgICBteSAkcSA9ICgkcXVlcnkgPyAiJHF1ZXJ5
OyIgOiAnPycpIC4gJ3RhcmJhbGw9MSc7CiAgICAgIHByaW50ICI8aHIgLz5cbiIsCiAgICAgICAg
JzxkaXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlciI+RG93bmxvYWQgdGhpcyBkaXJlY3Rvcnkg
aW4gJzsKICAgICAgIyBNYW5nbGUgdGhlIGZpbGVuYW1lIHNvIGJyb3dzZXJzIHNob3cgYSByZWFz
b25hYmxlIGZpbGVuYW1lIHRvIGRvd25sb2FkLgogICAgICBteSBAdHlwZXMgPSAoKTsKICAgICAg
JGJhc2VmaWxlID0gdXJpX2VzY2FwZSgkYmFzZWZpbGUpOwogICAgICBwdXNoKEB0eXBlcywgJmxp
bmsoJ3RhcmJhbGwnLCAiJGJhc2VmaWxlLnRhci5neiRxIikpIGlmICRoYXZldGFyOwogICAgICBw
dXNoKEB0eXBlcywgJmxpbmsoJ3ppcCBhcmNoaXZlJywgIiRiYXNlZmlsZS56aXAkcSIpKSBpZiAk
aGF2ZXppcDsKICAgICAgcHJpbnQgam9pbignIG9yICcsIEB0eXBlcyksICI8L2Rpdj5cbiI7CiAg
ICB9CiAgfQoKICBpZiAoJGVkaXRfb3B0aW9uX2Zvcm0gfHwgZGVmaW5lZCgkaW5wdXR7b3B0aW9u
c30pKSB7CgogICAgcHJpbnQgPDxFT0Y7Cjxmb3JtIG1ldGhvZD0iZ2V0IiBhY3Rpb249Ii4vIj4K
PGZpZWxkc2V0Pgo8bGVnZW5kPkdlbmVyYWwgb3B0aW9uczwvbGVnZW5kPgo8aW5wdXQgdHlwZT0i
aGlkZGVuIiBuYW1lPSJjb3B0IiB2YWx1ZT0iMSIgLz4KRU9GCiAgICBmb3IgbXkgJHYgcXcoaGlk
ZWN2c3Jvb3QgaGlkZW5vbnJlYWRhYmxlKSB7CiAgICAgIHByaW50ZihxcXs8aW5wdXQgdHlwZT0i
aGlkZGVuIiBuYW1lPSIlcyIgdmFsdWU9IiVzIiAvPlxufSwKICAgICAgICAgICAgICR2LCAkaW5w
dXR7JHZ9IHx8IDApOwogICAgfQogICAgaWYgKCRjdnN0cmVlIG5lICRjdnN0cmVlZGVmYXVsdCkg
ewogICAgICBwcmludCAiPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwiY3Zzcm9vdFwiIHZh
bHVlPVwiJGN2c3RyZWVcIiAvPlxuIjsKICAgIH0KICAgIHByaW50IDw8RU9GOwo8dGFibGUgc3Vt
bWFyeT0iR2VuZXJhbCBvcHRpb25zIj4KPHRyPgo8dGQgY2xhc3M9Im9wdC1sYWJlbCI+CjxsYWJl
bCBmb3I9InNvcnRieSIgYWNjZXNza2V5PSJGIj5Tb3J0IGZpbGVzIGJ5OjwvbGFiZWw+CjwvdGQ+
Cjx0ZCBjbGFzcz0ib3B0LXZhbHVlIj4KPHNlbGVjdCBpZD0ic29ydGJ5IiBuYW1lPSJzb3J0Ynki
Pgo8b3B0aW9uIHZhbHVlPSIiPkZpbGU8L29wdGlvbj4KRU9GCiAgICBwcmludCAiPG9wdGlvbiIs
ICRieWRhdGUgPyAnIHNlbGVjdGVkPSJzZWxlY3RlZCInIDogJycsCiAgICAgICIgdmFsdWU9XCJk
YXRlXCI+QWdlPC9vcHRpb24+XG4iOwogICAgcHJpbnQgIjxvcHRpb24iLCAkYnlhdXRob3IgPyAn
IHNlbGVjdGVkPSJzZWxlY3RlZCInIDogJycsCiAgICAgICIgdmFsdWU9XCJhdXRob3JcIj5BdXRo
b3I8L29wdGlvbj5cbiIKICAgICAgICBpZiAkc2hvd19hdXRob3I7CiAgICBwcmludCAiPG9wdGlv
biIsICRieXJldiA/ICcgc2VsZWN0ZWQ9InNlbGVjdGVkIicgOiAnJywKICAgICAgIiB2YWx1ZT1c
InJldlwiPlJldmlzaW9uPC9vcHRpb24+XG4iOwogICAgcHJpbnQgIjxvcHRpb24iLCAkYnlsb2cg
PyAnIHNlbGVjdGVkPSJzZWxlY3RlZCInIDogJycsCiAgICAgICIgdmFsdWU9XCJsb2dcIj5Mb2cg
bWVzc2FnZTwvb3B0aW9uPlxuIjsKICAgIHByaW50IDw8RU9GOwo8L3NlbGVjdD4sCjxsYWJlbCBm
b3I9Imlnbm9yZWNhc2UiIGFjY2Vzc2tleT0iSSI+Y2FzZS1pbnNlbnNpdGl2ZToKRU9GCiAgICBw
cmludCAnPGlucHV0IGlkPSJpZ25vcmVjYXNlIiBuYW1lPSJpZ25vcmVjYXNlIiB0eXBlPSJjaGVj
a2JveCInLAogICAgICAkaW5wdXR7aWdub3JlY2FzZX0gPyAnIGNoZWNrZWQ9ImNoZWNrZWQiJyA6
ICcnLAogICAgICAgICIgdmFsdWU9XCIxXCIgLz48L2xhYmVsPlxuIjsKICAgIHByaW50IDw8RU9G
Owo8L3RkPgo8dGQgY2xhc3M9Im9wdC1sYWJlbCI+CjxsYWJlbCBmb3I9ImhpZGVhdHRpYyIgYWNj
ZXNza2V5PSJBIj5IaWRlIGZpbGVzIGluIEF0dGljOjwvbGFiZWw+CjwvdGQ+Cjx0ZCBjbGFzcz0i
b3B0LXZhbHVlIj4KRU9GCiAgICBwcmludCAnPGlucHV0IGlkPSJoaWRlYXR0aWMiIG5hbWU9Imhp
ZGVhdHRpYyIgdHlwZT0iY2hlY2tib3giJywKICAgICAgJGlucHV0e2hpZGVhdHRpY30gPyAnIGNo
ZWNrZWQ9ImNoZWNrZWQiJyA6ICcnLCAnIHZhbHVlPSIxIiAvPic7CiAgICBwcmludCA8PEVPRjsK
PC90ZD4KPC90cj4KPHRyPgo8dGQgY2xhc3M9Im9wdC1sYWJlbCI+CjxsYWJlbCBmb3I9ImxvZ3Nv
cnQiIGFjY2Vzc2tleT0iTCI+U29ydCBsb2cgYnk6PC9sYWJlbD4KPC90ZD4KPHRkIGNsYXNzPSJv
cHQtdmFsdWUiPgpFT0YKICAgIHByaW50TG9nU29ydFNlbGVjdCgwKTsKICAgIHByaW50IDw8RU9G
Owo8L3RkPgo8dGQgY2xhc3M9Im9wdC1sYWJlbCI+CjxsYWJlbCBmb3I9ImxuIiBhY2Nlc3NrZXk9
Ik4iPlNob3cgbGluZSBudW1iZXJzOjwvbGFiZWw+CjwvdGQ+Cjx0ZCBjbGFzcz0ib3B0LXZhbHVl
Ij4KRU9GCiAgICBwcmludCAnPGlucHV0IGlkPSJsbiIgbmFtZT0ibG4iIHR5cGU9ImNoZWNrYm94
IicsCiAgICAgICRpbnB1dHtsbn0gPyAnIGNoZWNrZWQ9ImNoZWNrZWQiJyA6ICcnLCAiIHZhbHVl
PVwiMVwiIC8+XG4iOwogICAgcHJpbnQgPDxFT0Y7CjwvdGQ+CjwvdHI+Cjx0cj4KPHRkIGNsYXNz
PSJvcHQtbGFiZWwiPgo8bGFiZWwgZm9yPSJmIiBhY2Nlc3NrZXk9IkQiPkRpZmYgZm9ybWF0Ojwv
bGFiZWw+CjwvdGQ+Cjx0ZD4KRU9GCiAgICBwcmludERpZmZTZWxlY3QoMCk7CiAgICBwcmludCA8
PEVPRjsKPC90ZD4KPHRkIGNvbHNwYW49IjIiIGNsYXNzPSJvcHQtbGFiZWwiPgo8aW5wdXQgdHlw
ZT0ic3VibWl0IiB2YWx1ZT0iQ2hhbmdlIE9wdGlvbnMiIGFjY2Vzc2tleT0iQyIgLz4KPC90ZD4K
PC90cj4KPC90YWJsZT4KPC9maWVsZHNldD4KPC9mb3JtPgpFT0YKICB9CiAgaHRtbF9mb290ZXIo
KTsKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFZpZXcgRmlsZXMKIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwplbHNpZiAoLWYgJGZ1bGxuYW1lIC4gJyx2JykgewoK
ICBpZiAoZGVmaW5lZCgkaW5wdXR7cmV2fSkgfHwgJGRvQ2hlY2tvdXQpIHsKICAgICZkb0NoZWNr
b3V0KCRmdWxsbmFtZSwgJGlucHV0e3Jldn0sICRpbnB1dHtvbmx5X3dpdGhfdGFnfSk7CiAgICBn
emlwY2xvc2UoKTsKICAgIGV4aXQ7CiAgfQoKICBpZiAoZGVmaW5lZCgkaW5wdXR7YW5ub3RhdGV9
KSAmJiAkYWxsb3dfYW5ub3RhdGUpIHsKICAgICZkb0Fubm90YXRlKCRpbnB1dHthbm5vdGF0ZX0s
ICRpbnB1dHtvbmx5X3dpdGhfdGFnfSk7CiAgICBnemlwY2xvc2UoKTsKICAgIGV4aXQ7CiAgfQoK
ICBpZiAoZGVmaW5lZCgkaW5wdXR7cjF9KSAmJiBkZWZpbmVkKCRpbnB1dHtyMn0pKSB7CiAgICAm
ZG9EaWZmKCRmdWxsbmFtZSwgICRpbnB1dHtyMX0sICAkaW5wdXR7dHIxfSwKICAgICAgICAgICAg
JGlucHV0e3IyfSwgJGlucHV0e3RyMn0sICRpbnB1dHtmfSk7CiAgICBnemlwY2xvc2UoKTsKICAg
IGV4aXQ7CiAgfQoKICBpZiAoJGFsbG93X2N2c2dyYXBoICYmICRpbnB1dHtncmFwaH0pIHsKICAg
IGlmICgkaW5wdXR7bWFrZWltYWdlfSkgewogICAgICBkb0dyYXBoKCk7CiAgICB9IGVsc2Ugewog
ICAgICBkb0dyYXBoVmlldygpOwogICAgfQogICAgZ3ppcGNsb3NlKCk7CiAgICBleGl0OwogIH0K
CiAgJmRvTG9nKCRmdWxsbmFtZSk7Cn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoj
IFZpZXcgRGlmZgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKZWxzaWYgKCRmdWxsbmFt
ZSA9fiBzL1wuZGlmZiQvLwogICAgICAgJiYgLWYgJGZ1bGxuYW1lIC4gJyx2JyAmJiAkaW5wdXR7
cjF9ICYmICRpbnB1dHtyMn0pCnsKCiAgIyAkd2hlcmUtZGlmZi1yZW1vdmFsIGlmICdjdnMgcmRp
ZmYnIGlzIHVzZWQKICAjIC4uIGJ1dCAnY3ZzIHJkaWZmJ2RvZXNuJ3Qgc3VwcG9ydCBzb21lIG9w
dGlvbnMKICAjIHJjc2RpZmYgZG9lcyAoLXcgYW5kIC1wKSwgc28gaXQgaXMgZGlzYWJsZWQKICAj
ICR3aGVyZSA9fiBzL1wuZGlmZiQvLzsKCiAgIyBBbGxvdyBkaWZmcyB1c2luZyB0aGUgIi5kaWZm
IiBleHRlbnNpb24gc28gdGhhdCBicm93c2VycyB0aGF0IGRlZmF1bHQKICAjIHRvIHRoZSBmaWxl
bmFtZSBpbiB0aGUgVVJMIHdoZW4gc2F2aW5nIGRvbid0IHNhdmUgZGlmZnMgYXMgZWcuIGZvby5j
LgogICZkb0RpZmYoJGZ1bGxuYW1lLCAgJGlucHV0e3IxfSwgICRpbnB1dHt0cjF9LAogICAgICAg
ICAgJGlucHV0e3IyfSwgJGlucHV0e3RyMn0sICRpbnB1dHtmfSk7CiAgZ3ppcGNsb3NlKCk7CiAg
ZXhpdDsKCn0KCmVsc2lmIChkbyB7IChteSAkdG1wID0gJGZ1bGxuYW1lKSA9fiBzfC8oW14vXSsp
JHwvQXR0aWMvJDF8OyAtZiAiJHRtcCx2IiB9KSB7CiAgIyBUaGUgZmlsZSBoYXMgYmVlbiByZW1v
dmVkIGFuZCBpcyBpbiB0aGUgQXR0aWMuCiAgIyBTZW5kIGEgcmVkaXJlY3QgcG9pbnRpbmcgdG8g
dGhlIGZpbGUgaW4gdGhlIEF0dGljLgogIChteSAkbmV3cGxhY2UgPSAkc2NyaXB0d2hlcmUpID1+
IHN8LyhbXi9dKykkfC9BdHRpYy8kMXw7CiAgaWYgKCRFTlZ7UVVFUllfU1RSSU5HfSBuZSAiIikg
ewogICAgcmVkaXJlY3QoIiRuZXdwbGFjZT8kRU5We1FVRVJZX1NUUklOR30iKTsKICB9IGVsc2Ug
ewogICAgcmVkaXJlY3QoJG5ld3BsYWNlKTsKICB9CiAgZXhpdDsKCn0KCmVsc2lmICgwICYmICht
eSBAZmlsZXMgPSAmc2FmZWdsb2IoJGZ1bGxuYW1lIC4gIix2IikpKSB7CiAgaHR0cF9oZWFkZXIo
InRleHQvcGxhaW4iKTsKICBwcmludCAiWW91IG1hdGNoZWQgdGhlIGZvbGxvd2luZyBmaWxlczpc
biI7CiAgcHJpbnQgam9pbiAoIlxuIiwgQGZpbGVzKTsKCiAgIyBUT0RPOgogICMgRmluZCB0aGUg
dGFncyBmcm9tIGVhY2ggZmlsZQogICMgRGlzcGxheSBhIGZvcm0gb2ZmZXJpbmcgZGlmZnMgYmV0
d2VlbiBzYWlkIHRhZ3MKfQoKZWxzZSB7CiAgIyBBc3N1bWUgaXQncyBhIG1vZHVsZSBuYW1lIHdp
dGggYSBwb3RlbnRpYWwgcGF0aCBmb2xsb3dpbmcgaXQuCiAgbXkgJG1vZHVsZTsKICBteSAkeHRy
YSA9ICgoJG1vZHVsZSA9ICR3aGVyZSkgPX4gc3woLy4qKXx8KSA/ICQxIDogJyc7CgogICMgSXMg
dGhlcmUgYW4gaW5kZXhlZCB2ZXJzaW9uIG9mIG1vZHVsZXM/CiAgbXkgJGZoID0gZG8geyBsb2Nh
bCAoKkZIKTsgfTsKICBpZiAob3BlbigkZmgsIGNhdGZpbGUoJGN2c3Jvb3QsICdDVlNST09UJywg
J21vZHVsZXMnKSkpIHsKICAgIHdoaWxlICg8JGZoPikgewogICAgICBpZiAoL14oXFMrKVxzKyhc
UyspL28KICAgICAgICAgICYmICRtb2R1bGUgZXEgJDEKICAgICAgICAgICYmICRtb2R1bGUgbmUg
JDIKICAgICAgICAgICYmIC1kICIkY3Zzcm9vdC8kMiIpCiAgICAgIHsKICAgICAgICBjbG9zZSgk
ZmgpOwogICAgICAgIHJlZGlyZWN0KCIkc2NyaXB0bmFtZS8kMiR4dHJhJHF1ZXJ5Iik7CiAgICAg
IH0KICAgIH0KICAgIGNsb3NlKCRmaCk7CiAgfQogIGZhdGFsKCI0MDQgTm90IEZvdW5kIiwgJyVz
OiBubyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5JywgJHdoZXJlKTsKfQoKZ3ppcGNsb3NlKCk7Cgoj
IyBFbmQgTUFJTgoKCnN1YiBwcmludERpZmZTZWxlY3QoJCkKewogIG15ICgkdXNlX2phdmFfc2Ny
aXB0KSA9IEBfOwoKICBwcmludCAnPHNlbGVjdCBpZD0iZiIgbmFtZT0iZiInOwogIHByaW50ICcg
b25jaGFuZ2U9InRoaXMuZm9ybS5zdWJtaXQoKSInIGlmICR1c2VfamF2YV9zY3JpcHQ7CiAgcHJp
bnQgIj5cbiI7CgogIGZvciBteSAkZGlmZnR5cGUgKEBESUZGVFlQRVMpIHsKICAgIHByaW50Zigi
PG9wdGlvbiB2YWx1ZT1cIiVzXCIlcz4lczwvb3B0aW9uPlxuIiwKICAgICAgICAgICAkZGlmZnR5
cGUsICRpbnB1dHtmfSBlcSAkZGlmZnR5cGUgPyAnIHNlbGVjdGVkPSJzZWxlY3RlZCInIDogJycs
CiAgICAgICAgICAgIlx1JERJRkZUWVBFU3skZGlmZnR5cGV9e2Rlc2NyfSIpOwogIH0KCiAgcHJp
bnQgIjwvc2VsZWN0PiI7Cn0KCgpzdWIgcHJpbnREaWZmU2VsZWN0U3RpY2t5VmFycygpCnsKICB3
aGlsZSAobXkgKCRrZXksICR2YWwpID0gZWFjaCAlaW5wdXQpIHsKICAgIG5leHQgaWYgKCRrZXkg
ZXEgJ2YnKTsKICAgIG5leHQgaWYgKGRlZmluZWQoJERFRkFVTFRWQUxVRXska2V5fSkgJiYgJERF
RkFVTFRWQUxVRXska2V5fSBlcSAkdmFsKTsKICAgIHByaW50ICI8aW5wdXQgdHlwZT1cImhpZGRl
blwiIG5hbWU9XCIiLCBodG1scXVvdGUoJGtleSksICJcIiB2YWx1ZT1cIiIsCiAgICAgIGh0bWxx
dW90ZSgkdmFsKSwgIlwiIC8+XG4iOwogIH0KfQoKCnN1YiBwcmludExvZ1NvcnRTZWxlY3QoJCkK
ewogIG15ICgkdXNlX2phdmFfc2NyaXB0KSA9IEBfOwoKICBwcmludCAnPHNlbGVjdCBpZD0ibG9n
c29ydCIgbmFtZT0ibG9nc29ydCInOwogIHByaW50ICcgb25jaGFuZ2U9InRoaXMuZm9ybS5zdWJt
aXQoKSInIGlmICR1c2VfamF2YV9zY3JpcHQ7CiAgcHJpbnQgIj5cbiI7CgogIGZvciBteSAkc29y
dGtleSAoQExPR1NPUlRLRVlTKSB7CiAgICBwcmludGYoIjxvcHRpb24gdmFsdWU9XCIlc1wiJXM+
JXM8L29wdGlvbj5cbiIsCiAgICAgICAgICAgJHNvcnRrZXksICRsb2dzb3J0IGVxICRzb3J0a2V5
ID8gJyBzZWxlY3RlZD0ic2VsZWN0ZWQiJyA6ICcnLAogICAgICAgICAgICJcdSRMT0dTT1JUS0VZ
U3skc29ydGtleX17ZGVzY3J9Iik7CiAgfQoKICBwcmludCAiPC9zZWxlY3Q+IjsKfQoKCiMKIyBG
aW5kIHRoZSBsYXN0IG1vZGlmaWVkLCB2ZXJzaW9uIGNvbnRyb2xsZWQgZmlsZXMgaW4gdGhlIGdp
dmVuIGRpcmVjdG9yaWVzLgojIENvbXBhcmVzIHNvbGVseSBiYXNlZCBvbiBtb2RpZmljYXRpb24g
dGltZXN0YW1wcy4gIEZpbGVzIGluIHRoZSByZXR1cm5lZCBsaXN0CiMgYXJlIHdpdGhvdXQgdGhl
ICx2IHN1ZmZpeCwgYW5kIHVucmVhZGFibGUgZmlsZXMgaGF2ZSBiZWVuIGZpbHRlcmVkIG91dC4K
IwpzdWIgZmluZExhc3RNb2RpZmllZFN1YmRpcnMoQCkKewogIG15IChAZGlycykgPSBAXzsKCiAg
bXkgQGZpbGVzOwogIGZvcmVhY2ggbXkgJGRpcm5hbWUgKEBkaXJzKSB7CiAgICBuZXh0IGlmICgk
ZGlybmFtZSBlcSBjdXJkaXIoKSB8fCAkZGlybmFtZSBlcSB1cGRpcigpKTsKICAgIG15ICRkaXIg
PSBjYXRkaXIoJGZ1bGxuYW1lLCAkZGlybmFtZSk7CiAgICBuZXh0IGlmICghLWQgJGRpcik7Cgog
ICAgbXkgJGRoID0gZG8geyBsb2NhbCAoKkRIKTsgfTsKICAgIG9wZW5kaXIoJGRoLCAkZGlyKSBv
ciBuZXh0OwogICAgbXkgKEBmaWxlbmFtZXMpID0gZ3JlcCghZm9yYmlkZGVuKGNhdGZpbGUoJGRp
ciwgJF8pKSwgcmVhZGRpcigkZGgpKTsKICAgIGNsb3NlZGlyKCRkaCk7CgogICAgbXkgJGxhc3Rt
b2QgICAgID0gdW5kZWY7CiAgICBteSAkbGFzdG1vZHRpbWUgPSB1bmRlZjsKICAgIGZvcmVhY2gg
bXkgJGZpbGVuYW1lIChAZmlsZW5hbWVzKSB7CiAgICAgICgkZmlsZW5hbWUpID0KICAgICAgICAo
Y2F0ZmlsZSgkZGlybmFtZSwgJGZpbGVuYW1lKSA9fiBWQUxJRF9QQVRIKSBvciBuZXh0OyAjIHVu
dGFpbnQKICAgICAgbXkgKCRmaWxlKSA9IGNhdGZpbGUoJGZ1bGxuYW1lLCAkZmlsZW5hbWUpOwog
ICAgICBuZXh0IGlmICgkZmlsZW5hbWUgIX4gLyx2JC9vIHx8ICEtZiAkZmlsZSB8fCAhLXIgXyk7
CiAgICAgIG15ICRtb2R0aW1lID0gLU0gXzsKICAgICAgaWYgKCFkZWZpbmVkKCRsYXN0bW9kKSB8
fCAkbW9kdGltZSA8ICRsYXN0bW9kdGltZSkgewogICAgICAgICgkbGFzdG1vZCAgICA9ICRmaWxl
bmFtZSkgPX4gcy8sdiQvLzsKICAgICAgICAkbGFzdG1vZHRpbWUgPSAkbW9kdGltZTsKICAgICAg
fQogICAgfQogICAgcHVzaChAZmlsZXMsICRsYXN0bW9kKSBpZiAoZGVmaW5lZCgkbGFzdG1vZCkp
OwogIH0KICByZXR1cm4gQGZpbGVzOwp9CgoKc3ViIGh0bWxpZnlfc3ViKCYkKQp7CiAgKG15ICRw
cm9jLCBsb2NhbCAkXykgPSBAXzsKICBteSBAYSA9IHNwbGl0KG18KDxhIFtePl0rPltePF0qPC9h
Pil8aSk7CiAgbXkgJGxpbmtlZDsKICBteSAkcmVzdWx0ID0gJyc7CgogIHdoaWxlICgoJF8sICRs
aW5rZWQpID0gc3BsaWNlKEBhLCAwLCAyKSkgewogICAgJiRwcm9jKCk7CiAgICAkcmVzdWx0IC49
ICRfICAgICAgaWYgZGVmaW5lZCgkXyk7CiAgICAkcmVzdWx0IC49ICRsaW5rZWQgaWYgZGVmaW5l
ZCgkbGlua2VkKTsKICB9CgogIHJldHVybiAkcmVzdWx0Owp9CgoKc3ViIGh0bWxpZnkoJDskKQp7
CiAgKGxvY2FsICRfLCBteSAkZXh0cmEpID0gQF87CgogICRfID0gaHRtbHF1b3RlKCRfKTsKCiAg
IyBnZXQgVVJMJ3MgYXMgbGluawogIHN7CiAgICAoKGh0dHBzP3xmdHApOi8vLis/KShbXHNcJ118
JihxdW90fFtsZ110KTspCiAgIH17CiAgICAgJmxpbmsoJDEsIGh0bWx1bnF1b3RlKCQxKSkgLiAk
MwogICB9ZWd4OwoKICBpZiAoJGFsbG93X21haWx0b3MpIHsKICAgICMgTWFrZSBtYWlsdG86IGxp
bmtzIGZyb20gZW1haWwgYWRkcmVzc2VzLgogICAgJF8gPSBodG1saWZ5X3N1YiB7CiAgICAgIHM8
CiAgICAgICAgKFtcdys9XC0uIV0rQFtcd1wtXSsoPzpcLltcd1wtXSspKykKICAgICAgID48CiAg
ICAgICAgICZsaW5rKCQxLCAibWFpbHRvOiQxIikKICAgICAgID5lZ2l4OwogICAgfSAkXzsKICB9
CgogIGlmICgkZXh0cmEpIHsKCiAgICAjIGdldCBQUiAjJ3MgYXMgbGluazogIlBSI25ubm4iICJQ
Ujogbm5ubiwgLi4uIiAiUFIgbm5ubiwgLi4uIiAiYmluL25ubm4iCiAgICBpZiAoZGVmaW5lZCgk
cHJjZ2kpICYmIGRlZmluZWQoJHJlX3Bya2V5d29yZCkpIHsKICAgICAgbXkgJHByZXY7CgogICAg
ICBkbyB7CiAgICAgICAgJHByZXYgPSAkXzsKCiAgICAgICAgJF8gPSBodG1saWZ5X3N1YiB7CiAg
ICAgICAgICBzewogICAgICAgICAgICAoXGIkcmVfcHJrZXl3b3JkWzpcI10/XHMqCiAgICAgICAg
ICAgICAoPzoKICAgICAgICAgICAgICBcIz8KICAgICAgICAgICAgICBcZCtbLFxzXVxzKgogICAg
ICAgICAgICAgKSoKICAgICAgICAgICAgIFwjPykKICAgICAgICAgICAgKFxkKylcYgogICAgICAg
ICAgIH17CiAgICAgICAgICAgICAkMSAuICZsaW5rKCQyLCBzcHJpbnRmKCRwcmNnaSwgJDIpKQog
ICAgICAgICAgIH1lZ2l4OwogICAgICAgIH0gJF87CiAgICAgIH0gd2hpbGUgKCRfIG5lICRwcmV2
KTsKCiAgICAgIGlmIChkZWZpbmVkKCRyZV9wcmNhdGVnb3JpZXMpKSB7CiAgICAgICAgJF8gPSBo
dG1saWZ5X3N1YiB7CiAgICAgICAgICBzewogICAgICAgICAgICAoXGIkcmVfcHJjYXRlZ29yaWVz
LyhcZCspXGIpCiAgICAgICAgICAgfXsKICAgICAgICAgICAgICZsaW5rKCQxLCBzcHJpbnRmKCRw
cmNnaSwgJDIpKQogICAgICAgICAgIH1lZ294OwogICAgICAgIH0gJF87CiAgICAgIH0KICAgIH0K
CiAgICAjIGdldCBtYW5wYWdlIHNwZWNzIGFzIGxpbms6ICJmb28uMSIgImZvbygxKSIKICAgIGlm
IChkZWZpbmVkKCRtYW5jZ2kpKSB7CiAgICAgICRfID0gaHRtbGlmeV9zdWIgewogICAgICAgIHN7
CiAgICAgICAgICAoCiAgICAgICAgICAgXGIgKCBcd1tcdytcLS5dKiAoPzogOjpcd1tcdytcLS5d
KikqICkKICAgICAgICAgICAoPzoKICAgICAgICAgICAgXCggKFswLTluXSkgXCkgXEIKICAgICAg
ICAgICAgfAogICAgICAgICAgICBcLiAoWzAtOW5dKSBcYgogICAgICAgICAgICkKICAgICAgICAg
ICkKICAgICAgICAgfXsKICAgICAgICAgICAgbXkoJHRleHQsICRuYW1lLCAkc2VjdGlvbikgPSAo
JDEsICQyLCBkZWZpbmVkKCQzKSA/ICQzIDogJDQpOwogICAgICAgICAgICAoJG5hbWUgPX4gL1tB
LVphLXpdLyAmJiAkbmFtZSAhfiAvXC4oOnwkKS8pCiAgICAgICAgICAgICA/ICZsaW5rKCR0ZXh0
LCBzcHJpbnRmKCRtYW5jZ2ksICRzZWN0aW9uLCB1cmlfZXNjYXBlKCRuYW1lKSkpCiAgICAgICAg
ICAgICAgOiAkdGV4dDsKICAgICAgICAgfWVneDsKICAgICAgfSAkXzsKICAgIH0KICB9CgogIHJl
dHVybiAkXzsKfQoKCnN1YiBzcGFjZWRIdG1sVGV4dCgkOyQpCnsKICAobG9jYWwgJF8sIG15ICR0
cykgPSBAXzsKICByZXR1cm4gJycgdW5sZXNzIGRlZmluZWQoJF8pOwogICR0cyB8fD0gJHRhYnN0
b3AgfHwgODsKCiAgIyBFeHBhbmQgdGFicwogIDEgd2hpbGUgcy8oLio/KShcdCspLyQxIC4gJyAn
IHggKGxlbmd0aCgkMikgKiAkdHMgLSBsZW5ndGgoJDEpICUgJHRzKS9lOwoKICBpZiAoJGhyX2Jy
ZWFrYWJsZSkgewogICAgcy9eIC9cMDAxbmJzcDsvOyAgICAgICMgcHJvdGVjdCBsZWFkaW5nIGFu
ZC4uLgogICAgcy8gJC9cMDAxbmJzcDsvOyAgICAgICMgLi4udHJhaWxpbmcgd2hpdGVzcGFjZSAo
bW9zdGx5IGZvciBTdHJpbmc6OkVkaWZmKSwKICAgIHMvICAvIFwwMDFuYnNwOy9nOyAgICAjIC4u
LmFuZCBsZWF2ZSBldmVyeSBvdGhlciBzcGFjZSAnYnJlYWthYmxlJwogIH0gZWxzZSB7CiAgICBz
LyAvXDAwMW5ic3A7L2c7CiAgfQoKICAkXyA9IGh0bWxpZnkoJF8sICRhbGxvd19zb3VyY2VfZXh0
cmEpOwoKICAjIHVuZXNjYXBlCiAgeS9cMDAxLyYvOwoKICByZXR1cm4gJF87Cn0KCgojIE5vdGUg
dGhhdCB0aGlzIGRvZXNuJ3QgaHRtbHF1b3RlIHRoZSBmaXJzdCBhcmd1bWVudC4uLgpzdWIgbGlu
aygkJCkKewogIG15ICgkbmFtZSwgJHVybCkgPSBAXzsKICByZXR1cm4gc3ByaW50ZignPGEgaHJl
Zj0iJXMiPiVzPC9hPicsIGh0bWxxdW90ZSgkdXJsKSwgJG5hbWUpOwp9CgoKc3ViIHJldmNtcCgk
JCkKewogIG15ICgkcmV2MSwgJHJldjIpID0gQF87CgogICMgbWFrZSBubyBjb21wYXJpc29uIGZv
ciBhIHRhZyBvciBhIGJyYW5jaAogIHJldHVybiAwIGlmICRyZXYxID1+IC9bXlxkLl0vIHx8ICRy
ZXYyID1+IC9bXlxkLl0vOwoKICBteSAoQHIxKSA9IHNwbGl0KC9cLi8sICRyZXYxKTsKICBteSAo
QHIyKSA9IHNwbGl0KC9cLi8sICRyZXYyKTsKICBteSAoJGEsICRiKTsKCiAgd2hpbGUgKCgkYSA9
IHNoaWZ0KEByMSkpICYmICgkYiA9IHNoaWZ0KEByMikpKSB7CiAgICByZXR1cm4gJGEgPD0+ICRi
IHVubGVzcyAoJGEgPT0gJGIpOwogIH0KICBpZiAoQHIxKSB7IHJldHVybiAgMTsgfQogIGlmIChA
cjIpIHsgcmV0dXJuIC0xOyB9CiAgcmV0dXJuIDA7Cn0KCgojCiMgU2lnbmFsIGEgZmF0YWwgZXJy
b3IuCiMKc3ViIGZhdGFsKCQkQCkKewogIG15ICgkZXJyY29kZSwgJGZvcm1hdCwgQGFyZ3MpID0g
QF87CiAgcHJpbnQgIlN0YXR1czogJGVycmNvZGVcclxuIjsKICBodG1sX2hlYWRlcignRXJyb3In
KTsKICBwcmludCAnPGRpdiBpZD0iZXJyb3IiPkVycm9yOiAnLAogICAgc3ByaW50ZigkZm9ybWF0
LCBtYXAoaHRtbHF1b3RlKCRfKSwgQGFyZ3MpKSwgIjwvZGl2PlxuIjsKICBodG1sX2Zvb3Rlcigp
OwogIGV4aXQoMSk7Cn0KCgojCiMgU2lnbmFsIGEgKGZhdGFsKSBjb25maWd1cmF0aW9uIGVycm9y
LgojCnN1YiBjb25maWdfZXJyb3IoJCQpCnsKICBmYXRhbCgnNTAwIEludGVybmFsIEVycm9yJywK
ICAgICAgICAnRXJyb3IgbG9hZGluZyBjb25maWd1cmF0aW9uIGZpbGUgIjxjb2RlPiVzPC9jb2Rl
PiI6PGJyIC8+PGJyIC8+JyAuCiAgICAgICAgJyVzPGJyIC8+JywgQF8pOwp9CgoKIwojIFNlbmRz
IGEgcmVkaXJlY3QgdG8gdGhlIGdpdmVuIFVSTC4KIwpzdWIgcmVkaXJlY3QoJDskKQp7CiAgbXkg
KCR1cmwsICRwZXJtYW5lbnQpID0gQF87CiAgbXkgKCRzdGF0dXMsICR0ZXh0KTsKICBpZiAoJHBl
cm1hbmVudCkgewogICAgJHN0YXR1cyA9ICczMDEnOwogICAgJHRleHQgICA9ICdNb3ZlZCBQZXJt
YW5lbnRseSc7CiAgfSBlbHNlIHsKICAgICRzdGF0dXMgPSAnMzAyJzsKICAgICR0ZXh0ICAgPSAn
Rm91bmQnOwogIH0KICBwcmludCAiU3RhdHVzOiAkc3RhdHVzICR0ZXh0XHJcbiIsICJMb2NhdGlv
bjogJHVybFxyXG4iOwogIGh0bWxfaGVhZGVyKCR0ZXh0KTsKICBwcmludCAiPHA+VGhpcyBkb2N1
bWVudCBoYXMgbW92ZWQgIiwgJmxpbmsoJ2hlcmUnLCAkdXJsKSwgIi48L3A+XG4iOwogIGh0bWxf
Zm9vdGVyKCk7CiAgZXhpdCgxKTsKfQoKCnN1YiBzYWZlZ2xvYigkKQp7CiAgbXkgKCRmaWxlbmFt
ZSkgPSBAXzsKCiAgKG15ICRkaXJuYW1lID0gJGZpbGVuYW1lKSA9fiBzfC9bXi9dKyR8fDsKICAk
ZmlsZW5hbWUgPX4gc3wuKi98fDsKCiAgbXkgQHJlc3VsdHM7CiAgbXkgJGRoID0gZG8geyBsb2Nh
bCAoKkRIKTsgfTsKICBpZiAob3BlbmRpcigkZGgsICRkaXJuYW1lKSkgewogICAgbXkgJGdsb2Ig
PSAkZmlsZW5hbWU7CiAgICBteSAkdDsKCiAgICAjICAgdHJhbnNmb3JtIGZpbGVuYW1lIGZyb20g
Z2xvYiB0byByZWdleC4gIERlYWwgd2l0aDoKICAgICMgICBbLCB7LCA/LCAqIGFzIGdsb2IgY2hh
cnMKICAgICMgICBtYWtlIHN1cmUgdG8gZXNjYXBlIGFsbCBvdGhlciByZWdleCBjaGFycwogICAg
JGdsb2IgPX4gcy8oW1wuXChcKVx8XCtdKS9cXCQxL2c7CiAgICAkZ2xvYiA9fiBzL1wqLy4qL2c7
CiAgICAkZ2xvYiA9fiBzL1w/Ly4vZzsKICAgICRnbG9iID1+IHMveyhbXn1dKyl9LygkdCA9ICQx
KSA9fiBzLSwtfC1nOyAiKCR0KSIvZWc7CiAgICAkZ2xvYiA9IHFyL14kZ2xvYiQvOwoKICAgIGZv
cmVhY2ggKHJlYWRkaXIoJGRoKSkgewogICAgICBpZiAoJF8gPX4gJGdsb2IgJiYgJF8gPX4gVkFM
SURfUEFUSCkgewogICAgICAgIHB1c2goQHJlc3VsdHMsIGNhdGZpbGUoJGRpcm5hbWUsICQxKSk7
ICMgdW50YWludAogICAgICB9CiAgICB9CiAgICBjbG9zZWRpcigkZGgpOwogIH0KCiAgcmV0dXJu
IEByZXN1bHRzOwp9CgoKIwojIFNlYXJjaGVzIEBjb21tYW5kX3BhdGggZm9yIHRoZSBnaXZlbiBl
eGVjdXRhYmxlIGZpbGUuCiMKc3ViIHNlYXJjaF9wYXRoKCQpCnsKICBteSAoJGNvbW1hbmQpID0g
QF87CiAgZm9yIG15ICRkIChAY29tbWFuZF9wYXRoKSB7CiAgICBteSAkY21kID0gY2F0ZmlsZSgk
ZCwgJGNvbW1hbmQpOwogICAgcmV0dXJuICRjbWQgaWYgKC14ICRjbWQgJiYgIS1kIF8pOwogIH0K
ICByZXR1cm4gJyc7Cn0KCgojCiMgR2V0cyB0aGUgZW5zY3JpcHQoMSkgaGlnaGxpZ2h0IG1vZGUg
Y29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4gZmlsZW5hbWUsCiMgb3IgdW5kZWYgaWYgdW5zdXBw
b3J0ZWQuCiMKc3ViIGdldEVuc2NyaXB0SEwoJCkKewogIHJldHVybiB1bmRlZiB1bmxlc3MgJGFs
bG93X2Vuc2NyaXB0OwogIG15ICgkZmlsZW5hbWUpID0gQF87CiAgd2hpbGUgKG15ICgkaGwsICRy
ZWdleCkgPSBlYWNoICVlbnNjcmlwdF90eXBlcykgewogICAgcmV0dXJuICRobCBpZiAoJGZpbGVu
YW1lID1+ICRyZWdleCk7CiAgfQogIHJldHVybiB1bmRlZjsKfQoKCiMKIyBHZXRzIHRoZSBNSU1F
IHR5cGUgZm9yIHRoZSBnaXZlbiBmaWxlIG5hbWUuCiMKc3ViIGdldE1pbWVUeXBlKCQ7JCkKewog
IG15ICgkZnVsbG5hbWUsICRiaW5hcnkpID0gQF87CiAgJGJpbmFyeSA9ICgka2V5d29yZHN1YnN0
aXR1dGlvbiAmJiAka2V5d29yZHN1YnN0aXR1dGlvbiA9fiAvYi8pCiAgICB1bmxlc3MgZGVmaW5l
ZCgkYmluYXJ5KTsKCiAgKG15ICRzdWZmaXggPSAkZnVsbG5hbWUpID1+IHMvXi4qXC4oW14uXSop
JC8kMS87CgogIG15ICRtaW1ldHlwZSA9ICRNVFlQRVN7JHN1ZmZpeH07CiAgJG1pbWV0eXBlICB8
fD0gJE1pbWVUeXBlcy0+bWltZVR5cGVPZigkZnVsbG5hbWUpIGlmIGRlZmluZWQoJE1pbWVUeXBl
cyk7CgogIGlmICghJG1pbWV0eXBlICYmICRzdWZmaXggbmUgJyonICYmIC1mICRtaW1lX3R5cGVz
ICYmIC1yIF8pIHsKICAgIG15ICRmaCA9IGRvIHsgbG9jYWwgKCpGSCk7IH07CiAgICBpZiAob3Bl
bigkZmgsICRtaW1lX3R5cGVzKSkgewogICAgICBteSAkcmUgPSBzcHJpbnRmKCdeXHMqKFxTK1wv
XFMrKVxzLitcYiVzXGInLCBxdW90ZW1ldGEoJHN1ZmZpeCkpOwogICAgICAkcmUgPSBxci8kcmUv
OwogICAgICB3aGlsZSAobXkgJGxpbmUgPSA8JGZoPikgewogICAgICAgIGlmICgkbGluZSA9fiAk
cmUpIHsKICAgICAgICAgICRtaW1ldHlwZSA9ICQxOwogICAgICAgICAgJE1UWVBFU3skc3VmZml4
fSA9ICRtaW1ldHlwZTsKICAgICAgICAgIGxhc3Q7CiAgICAgICAgfQogICAgICB9CiAgICAgIGNs
b3NlKCRmaCk7CiAgICB9IGVsc2UgewogICAgICB3YXJuKCJDYW4ndCBvcGVuIE1JTUUgdHlwZXMg
ZmlsZSAkbWltZV90eXBlcyBmb3IgcmVhZGluZzogJCEiKTsKICAgIH0KICB9CgogICRtaW1ldHlw
ZSB8fD0gJE1UWVBFU3snKid9OwogICRtaW1ldHlwZSB8fD0gJGJpbmFyeSA/ICdhcHBsaWNhdGlv
bi9vY3RldC1zdHJlYW0nIDogJ3RleHQvcGxhaW4nOwogIHJldHVybiAkbWltZXR5cGU7Cn0KCgoj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgcmVhZCBmaXJzdCBsaW5lcyBsaWtlIGhl
YWQoMSkKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpzdWIgaGVhZCgkOyQpCnsKICBt
eSAoJGZoLCAkbGluZWNvdW50KSA9IEBfOwogICRsaW5lY291bnQgfHw9IDEwOwoKICBteSBAYnVm
OwogIGlmICgkbGluZWNvdW50ID4gMCkgewogICAgZm9yIChteSAkaSA9IDA7ICFlb2YoJGZoKSAm
JiAkaSA8ICRsaW5lY291bnQ7ICRpKyspIHsKICAgICAgcHVzaCBAYnVmLCBzY2FsYXIgPCRmaD47
CiAgICB9CiAgfSBlbHNlIHsKICAgIEBidWYgPSA8JGZoPjsKICB9CiAgcmV0dXJuIEBidWY7Cn0K
CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgc2NhbiB2aW0gYW5kIEVtYWNzIGRp
cmVjdGl2ZXMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpzdWIgc2Nhbl9kaXJlY3Rp
dmVzKEApCnsKICBteSAkdHMgPSB1bmRlZjsKCiAgZm9yIChAXykgewogICAgJHRzID0gJDEgaWYg
L1xiKD86dHN8dGFic3RvcHx0YWItd2lkdGgpWzo9XVxzKihbMS05XVxkKilcYi87CiAgfQoKICAo
J3RhYnN0b3AnID0+ICR0cyk7Cn0KCgpzdWIgb3Blbk91dHB1dEZpbHRlcigpCnsKICByZXR1cm4g
dW5sZXNzICRvdXRwdXRfZmlsdGVyOwoKICBvcGVuKFNURE9VVCwgInwtIikgYW5kIHJldHVybjsK
CiAgIyBjaGlsZCBvZiBjaGlsZAogIG9wZW4oU1RERVJSLCAnPicsIGRldm51bGwoKSkgdW5sZXNz
ICRERUJVRzsKICBleGVjKCRvdXRwdXRfZmlsdGVyKSBvciBleGl0IC0xOwp9CgoKIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHNob3cgQW5ub3RhdGlvbgojIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjCnN1YiBkb0Fubm90YXRlKCQkKQp7CiAgbXkgKCRyZXYsICR0YWcpID0g
QF87CiAgJHJldiA9ICR0YWcgfHwgJ0hFQUQnIGlmICgkcmV2IGVxICcuJyk7CiAgKG15ICRwYXRo
bmFtZSA9ICR3aGVyZSkgPX4gc3woKD88PS8pQXR0aWMvKT9bXi9dKiR8fDsKICAobXkgJGZpbGVu
YW1lID0gJHdoZXJlKSA9fiBzfF4uKi98fDsKCiAgIyBUaGlzIGFubm90YXRlIHZlcnNpb24gaXMg
YmFzZWQgb24gdGhlIGN2cyBhbm5vdGF0ZS1kZW1vIFBlcmwgc2NyaXB0IGJ5CiAgIyBDeWNsaWMg
U29mdHdhcmUuICBJdCB3YXMgd3JpdHRlbiBieSBDeWNsaWMgU29mdHdhcmUsCiAgIyBodHRwOi8v
d3d3LmN5Y2xpYy5jb20vLCBhbmQgaXMgaW4gdGhlIHB1YmxpYyBkb21haW4uCiAgIyBXZSBjb3Vs
ZCBhYmFuZG9uIHRoZSB1c2Ugb2YgcmxvZywgcmNzZGlmZiBhbmQgY28gdXNpbmcKICAjIHRoZSBj
dnMgc2VydmVyIGluIGEgc2ltaWxpYXIgd2F5IG9uZSBkYXkgKC4uYWZ0ZXIgcmV3cml0ZSkuCgog
IGxvY2FsICgqQ1ZTX0lOLCAqQ1ZTX09VVCk7CiAgbXkgJGFubm90YXRlX2VycjsKICBteSAoJGgs
ICRlcnIpID0KICAgIHN0YXJ0cHJvYyhbICRDTUR7Y3ZzfSwgQGFubm90YXRlX29wdGlvbnMsICdz
ZXJ2ZXInIF0sCiAgICAgICAgICAgICAgJzxwaXBlJywgXCpDVlNfSU4sICc+cGlwZScsIFwqQ1ZT
X09VVCwKICAgICAgICAgICAgICAnMj4nLCBcJGFubm90YXRlX2Vycik7CiAgZmF0YWwoJzUwMCBJ
bnRlcm5hbCBFcnJvcicsCiAgICAgICAgJ0Fubm90YXRlIGZhaWx1cmUgKGV4aXQgc3RhdHVzICVz
KSwgb3V0cHV0OiA8cHJlPiVzPC9wcmU+JywKICAgICAgICAkPyA+PiA4IHx8IC0xLCAkZXJyKQog
ICAgdW5sZXNzICRoOwoKICAjIE9LLCBmaXJzdCBzZW5kIHRoZSByZXF1ZXN0IHRvIHRoZSBzZXJ2
ZXIuICBBIHNpbXBsaWZpZWQgZXhhbXBsZSBpczoKICAjICAgICBSb290IC9ob21lL2tpbmdkb24v
endvcmsvY3Zzcm9vdAogICMgICAgIEFyZ3VtZW50IGZvby94eAogICMgICAgIERpcmVjdG9yeSBm
b28KICAjICAgICAvaG9tZS9raW5nZG9uL3p3b3JrL2N2c3Jvb3QvZm9vCiAgIyAgICAgRGlyZWN0
b3J5IC4KICAjICAgICAvaG9tZS9raW5nZG9uL3p3b3JrL2N2c3Jvb3QKICAjICAgICBhbm5vdGF0
ZQogICMgYWx0aG91Z2ggYXMgeW91IGNhbiBzZWUgdGhlcmUgYXJlIGEgZmV3IG1vcmUgZGV0YWls
cy4KCiAgcHJpbnQgQ1ZTX0lOICJSb290ICRjdnNyb290XG4iOwogIHByaW50IENWU19JTgogICAg
IlZhbGlkLXJlc3BvbnNlcyBvayBlcnJvciBWYWxpZC1yZXF1ZXN0cyBDaGVja2VkLWluIFVwZGF0
ZWQgTWVyZ2VkIFJlbW92ZWQgTSBFXG4iOwoKICAjIERvbid0IHdvcnJ5IGFib3V0IHNlbmRpbmcg
dmFsaWQtcmVxdWVzdHMsIHRoZSBzZXJ2ZXIganVzdCBuZWVkcyB0bwogICMgc3VwcG9ydCAiYW5u
b3RhdGUiIGFuZCBpZiBpdCBkb2Vzbid0LCB0aGVyZSBpc24ndCBhbnl0aGluZyB0byBiZSBkb25l
LgogIHByaW50IENWU19JTiAiVXNlVW5jaGFuZ2VkXG4iOwogIHByaW50IENWU19JTiAiQXJndW1l
bnQgLXJcbiI7CiAgcHJpbnQgQ1ZTX0lOICJBcmd1bWVudCAkcmV2XG4iOwogIHByaW50IENWU19J
TiAiQXJndW1lbnQgJHdoZXJlXG4iOwoKICAjIFRoZSBwcm90b2NvbCByZXF1aXJlcyB1cyB0byBm
dWxseSBmYWtlIGEgd29ya2luZyBkaXJlY3RvcnkgKGF0CiAgIyBsZWFzdCB0byB0aGUgcG9pbnQg
b2YgaW5jbHVkaW5nIHRoZSBkaXJlY3RvcmllcyBkb3duIHRvIHRoZSBvbmUKICAjIGNvbnRhaW5p
bmcgdGhlIGZpbGUgaW4gcXVlc3Rpb24pLgogICMgU28gaWYgJHdoZXJlIGlzICJkaXIvc2Rpci9m
aWxlIiwgdGhlbiBkaXJzIHdpbGwgYmUgKCJkaXIiLCJzZGlyIiwiZmlsZSIpCiAgbXkgJHBhdGgg
PSAnJzsKICBmb3JlYWNoIG15ICRkaXIgKHNwbGl0KCcvJywgJHdoZXJlKSkgewoKICAgIGlmICgk
cGF0aCBlcSAiIikgewogICAgICAjIEluIG91ciBleGFtcGxlLCAkZGlyIGlzICJkaXIiLgogICAg
ICAkcGF0aCA9ICRkaXI7CiAgICB9IGVsc2UgewogICAgICBwcmludCBDVlNfSU4gIkRpcmVjdG9y
eSAkcGF0aFxuIjsKICAgICAgcHJpbnQgQ1ZTX0lOICIkY3Zzcm9vdC8kcGF0aFxuIjsKCiAgICAg
ICMgSW4gb3VyIGV4YW1wbGUsICRfIGlzICJzZGlyIiBhbmQgJHBhdGggYmVjb21lcyAiZGlyL3Nk
aXIiCiAgICAgICMgQW5kIHRoZSBuZXh0IHRpbWUsICJmaWxlIiBhbmQgImRpci9zZGlyL2ZpbGUi
ICh3aGljaCB0aGVuIGdldHMKICAgICAgIyBpZ25vcmVkLCBiZWNhdXNlIHdlIGRvbid0IG5lZWQg
dG8gc2VuZCBEaXJlY3RvcnkgZm9yIHRoZSBmaWxlKS4KICAgICAgJHBhdGggLj0gIi8kZGlyIjsK
ICAgIH0KICB9CiAgdW5kZWYgJHBhdGg7CgogICMgQW5kIHRoZSBsYXN0ICJEaXJlY3RvcnkiIGJl
Zm9yZSAiYW5ub3RhdGUiIGlzIHRoZSB0b3AgbGV2ZWwuCiAgcHJpbnQgQ1ZTX0lOICJEaXJlY3Rv
cnkgLlxuIjsKICBwcmludCBDVlNfSU4gIiRjdnNyb290XG4iOwoKICBwcmludCBDVlNfSU4gImFu
bm90YXRlXG4iOwoKICAjIE9LLCB3ZSd2ZSBzZW50IG91ciBjb21tYW5kIHRvIHRoZSBzZXJ2ZXIu
ICBUaGluZyB0byBkbyBpcyB0bwogICMgY2xvc2UgdGhlIHdyaXRlciBzaWRlIGFuZCBnZXQgYWxs
IHRoZSByZXNwb25zZXMuCiAgaWYgKCFjbG9zZShDVlNfSU4pKSB7CiAgICAkaC0+ZmluaXNoKCk7
CiAgICBmYXRhbCgnNTAwIEludGVybmFsIEVycm9yJywKICAgICAgICAgICdBbm5vdGF0ZSBmYWls
dXJlIChleGl0IHN0YXR1cyAlcyk6IDxjb2RlPiVzPC9jb2RlPiwgb3V0cHV0OiAnIC4KICAgICAg
ICAgICc8cHJlPiVzPC9wcmU+JywgJD8gPj4gOCwgJCEsICRhbm5vdGF0ZV9lcnIpOwogIH0KCiAg
bmF2aWdhdGVIZWFkZXIoJHNjcmlwdHdoZXJlLCAkcGF0aG5hbWUsICRmaWxlbmFtZSwgJHJldiwg
J2Fubm90YXRlJyk7CgogIG15ICRyZXZ0eXBlID0gKCRyZXYgPX4gL1wuLykgPyAncmV2aXNpb24n
IDogJ3RhZyc7ICMgVE9ETzogdGFnIC0+IGJyYW5jaC90YWc/CiAgcHJpbnQgJzxoMyBzdHlsZT0i
dGV4dC1hbGlnbjogY2VudGVyIj5Bbm5vdGF0aW9uIG9mICcsCiAgICBodG1scXVvdGUoIiRwYXRo
bmFtZSRmaWxlbmFtZSIpLCAiLCAkcmV2dHlwZSAkcmV2PC9oMz5cbiI7CgogICMgUmVhZHkgdG8g
Z2V0IHRoZSByZXNwb25zZXMgZnJvbSB0aGUgc2VydmVyLgogICMgRm9yIGV4YW1wbGU6CiAgIyAg
ICAgRSBBbm5vdGF0aW9ucyBmb3IgZm9vL3h4CiAgIyAgICAgRSAqKioqKioqKioqKioqKioKICAj
ICAgICBNIDEuMyAgICAgICAgICAoa2luZ2RvbiAgMDYtU2VwLTk3KTogaGVsbG8KICAjICAgICBv
awogIG15ICgkbGluZU5yKSA9IDA7CiAgbXkgKCRvbGRMcmV2LCAkb2xkTHVzcikgPSAoIiIsICIi
KTsKICBteSAoJHJldnByaW50LCAkdXNycHJpbnQpOwoKICBpZiAoJGFublRhYmxlKSB7CiAgICBw
cmludCA8PEVPRjsKPHRhYmxlIHN0eWxlPSJib3JkZXI6IG5vbmUiIGNlbGxzcGFjaW5nPSIwIiBj
ZWxscGFkZGluZz0iMCIgc3VtbWFyeT0iQW5ub3RhdGlvbiI+CkVPRgogIH0gZWxzZSB7CiAgICBw
cmludCAiPHByZT4iOwogIH0KCiAgIyBwcmVmZXRjaCBzZXZlcmFsIGxpbmVzCiAgbXkgQGJ1ZiA9
IGhlYWQoKkNWU19PVVQpOwoKICBteSAlZCA9IHNjYW5fZGlyZWN0aXZlcyhAYnVmKTsKCiAgd2hp
bGUgKEBidWYgfHwgIWVvZigqQ1ZTX09VVCkpIHsKCiAgICAkXyA9IEBidWYgPyBzaGlmdCBAYnVm
IDogPENWU19PVVQ+OwogICAgbXkgQHdvcmRzID0gc3BsaXQ7CgogICAgIyBBZGRpbmcgb25lIGlz
IGZvciB0aGUgKHNpbmdsZSkgc3BhY2Ugd2hpY2ggZm9sbG93cyAkd29yZHNbMF0uCiAgICBteSAk
cmVzdCA9IHN1YnN0cigkXywgbGVuZ3RoKCR3b3Jkc1swXSkgKyAxKTsKICAgIGlmICgkd29yZHNb
MF0gZXEgIkUiKSB7CiAgICAgIG5leHQ7CiAgICB9IGVsc2lmICgkd29yZHNbMF0gZXEgIk0iKSB7
CiAgICAgICRsaW5lTnIrKzsKICAgICAgKG15ICRscmV2ID0gc3Vic3RyKCRfLCAyLCAgMTMpKSA9
fiB5LyAvL2Q7CiAgICAgIChteSAkbHVzciA9IHN1YnN0cigkXywgMTYsIDkpKSAgPX4geS8gLy9k
OwogICAgICBteSAkbGluZSA9IHN1YnN0cigkXywgMzYpOwogICAgICAjIFRPRE86IHRoaXMgZG9l
cyBub3Qgd29yayBmb3IgYnJhbmNoL3RhZyByZXZpc2lvbnMuCiAgICAgIG15ICRpc0N1cnJlbnRS
ZXYgPSAoJHJldiBlcSAkbHJldik7CgogICAgICAjIHdlIHNob3VsZCBwYXJzZSB0aGUgZGF0ZSBo
ZXJlIC4uCiAgICAgIGlmICgkbHJldiBlcSAkb2xkTHJldikgewogICAgICAgICRyZXZwcmludCA9
IHNwcmludGYoJyUtOHMnLCAnJyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgJHJldnByaW50ID0g
c3ByaW50ZignJS04cycsICRscmV2KTsKICAgICAgICAkcmV2cHJpbnQgPX4gc3woXFMrKXwmbGlu
aygkMSwgdXJpX2VzY2FwZSgkZmlsZW5hbWUpLiIkcXVlcnkjcmV2JDEiKXxlOwogICAgICAgICRv
bGRMdXNyID0gJyc7CiAgICAgIH0KCiAgICAgICR1c3JwcmludCA9ICgkbHVzciBlcSAkb2xkTHVz
cikgPyAnJyA6ICRsdXNyOwogICAgICAkb2xkTHJldiA9ICRscmV2OwogICAgICAkb2xkTHVzciA9
ICRsdXNyOwoKICAgICAgcHJpbnQgJGlzX3RleHRiYXNlZCA/ICc8Yj4nIDogJzxzcGFuIGNsYXNz
PSJjdXJyZW50LXJldiI+JwogICAgICAgIGlmICRpc0N1cnJlbnRSZXY7CgogICAgICAkdXNycHJp
bnQgPSBzcHJpbnRmKCclLThzJywgJHVzcnByaW50KTsKICAgICAgcHJpbnRmICclcyVzICVzICU0
ZDonLCAkcmV2cHJpbnQsICRpc0N1cnJlbnRSZXYgPyAnIScgOiAnICcsCiAgICAgICAgaHRtbHF1
b3RlKCR1c3JwcmludCksICRsaW5lTnI7CiAgICAgIHByaW50IHNwYWNlZEh0bWxUZXh0KCRsaW5l
LCAkZHt0YWJzdG9wfSk7CgogICAgICBwcmludCAkaXNfdGV4dGJhc2VkID8gJzwvYj4nIDogJzwv
c3Bhbj4nIGlmICRpc0N1cnJlbnRSZXY7CgogICAgfSBlbHNpZiAoJHdvcmRzWzBdIGVxICJvayIp
IHsKICAgICAgIyBXZSBjb3VsZCBjb21wbGFpbiBhYm91dCBhbnkgdGV4dCByZWNlaXZlZCBhZnRl
ciB0aGlzLCBsaWtlIHRoZQogICAgICAjIENWUyBjb21tYW5kIGxpbmUgY2xpZW50LiAgQnV0IGZv
ciBzaW1wbGljaXR5LCB3ZSBkb24ndC4KCiAgICB9IGVsc2lmICgkd29yZHNbMF0gZXEgImVycm9y
IikgewogICAgICBmYXRhbCgiNTAwIEludGVybmFsIEVycm9yIiwKICAgICAgICAgICAgJ0Vycm9y
IG9jY3VyZWQgZHVyaW5nIGFubm90YXRlOiA8Yj4lczwvYj4nLCAkXyk7CiAgICB9CiAgfQogICRo
LT5maW5pc2goKTsKCiAgaWYgKCRhbm5UYWJsZSkgewogICAgcHJpbnQgIjwvdGFibGU+IjsKICB9
IGVsc2UgewogICAgcHJpbnQgIjwvcHJlPiI7CiAgfQogIGh0bWxfZm9vdGVyKCk7Cn0KCiMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBtYWtlIENoZWNrb3V0CiMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKc3ViIGRvQ2hlY2tvdXQoJCQkKQp7CiAgbXkgKCRmdWxsbmFtZSwg
JHJldiwgJHRhZykgPSBAXzsKICAkcmV2ID0gJHRhZyB8fCB1bmRlZiBpZiAoISRyZXYgfHwgJHJl
diBlcSAnLicpOwoKICAjIFN0YXJ0IHJlc29sdmluZyB3aGV0aGVyIHdlIHdpbGwgZG8gYSBtYXJr
dXAgdmlldyBvciBub3QuCiAgbXkgJGRvX21hcmt1cCA9IHVuZGVmOwogIG15ICR3YW50X3R5cGUg
PSAkaW5wdXR7J2NvbnRlbnQtdHlwZSd9OwoKICAjIE5vIG1hcmt1cCBpZiBtYXJrdXAgZGlzYWxs
b3dlZC4KICAkZG9fbWFya3VwID0gMCB1bmxlc3MgJGFsbG93X21hcmt1cDsKCiAgIyBObyBtYXJr
dXAgaWYgY2hlY2tvdXQgbWFnaWMgY29va2llIGluIFVSTC4KICAkZG9fbWFya3VwID0gMCBpZiAo
IWRlZmluZWQoJGRvX21hcmt1cCkgJiYgJGRvQ2hlY2tvdXQpOwoKICAjIERvIG1hcmt1cCBpZiBl
eHBsaWNpdGx5IGFza2VkIHVzaW5nIGN2c3dlYi1tYXJrdXAgY29udGVudCB0eXBlLiAgSWYgdGhl
CiAgIyBhc2tlZCBjb250ZW50IHR5cGUgaXMgYW55dGhpbmcgZWxzZSwgbm8gbWFya3VwLgogIGlm
ICghZGVmaW5lZCgkZG9fbWFya3VwKSAmJiAkd2FudF90eXBlKSB7CiAgICBpZiAoJHdhbnRfdHlw
ZSA9fiBDVlNXRUJNQVJLVVApIHsKICAgICAgJHdhbnRfdHlwZSA9IHVuZGVmOwogICAgICAkZG9f
bWFya3VwID0gMTsKICAgIH0gZWxzZSB7CiAgICAgICRkb19tYXJrdXAgPSAwOwogICAgfQogIH0K
CiAgIyBPaywgaWYgJGRvX21hcmt1cCBpcyBzdGlsbCB1bmRlZmluZWQsIHdlIGtub3cgdGhhdCBh
IGRvd25sb2FkIGhhcyBub3QgYmVlbgogICMgZXhwbGljaXRseSBhc2tlZC4gIEZvciB0aGUgbGFz
dCBjaGVjayBmdXJ0aGVyIGRvd24gYmVsb3cgd2UnbGwgbmVlZCB0bwogICMga25vdyBpZiB0aGUg
ZmlsZSBpcyBiaW5hcnksIGFuZCBwb3NzaWJseSBydW4gYSBsb2cgb24gaXQuCiAgbXkgJG5lZWRs
b2cgPSAkZG9fbWFya3VwIHx8ICR1c2VfbW9kZGF0ZTsKCiAgbXkgJG1vZGRhdGUgPSB1bmRlZjsK
ICBteSAkcmV2b3B0OwogIGlmIChkZWZpbmVkKCRyZXYpKSB7CiAgICAkcmV2b3B0ID0gIi1yJHJl
diI7CiAgICBpZiAoJG5lZWRsb2cpIHsKICAgICAgcmVhZExvZygkZnVsbG5hbWUsICRyZXYpOwog
ICAgICAkbW9kZGF0ZSAgID0gJGRhdGV7JHJldn07CiAgICAgICMgVE9ETzogZXZlbiB0aGlzIGRv
ZXMgbm90IHdvcmsgZm9yIGJyYW5jaCB0YWdzLCBidXQgb25seSBub3JtYWwgdGFncyA6KAogICAg
ICAkbW9kZGF0ZSB8fD0gJGRhdGV7JHN5bXJldnskcmV2fX0gaWYgZGVmaW5lZCgkc3ltcmV2eyRy
ZXZ9KTsKICAgIH0KICB9IGVsc2UgewogICAgJHJldm9wdCA9ICItckhFQUQiOwogICAgaWYgKCRu
ZWVkbG9nKSB7CiAgICAgIHJlYWRMb2coJGZ1bGxuYW1lKTsKICAgICAgJG1vZGRhdGUgPSAkZGF0
ZXskc3ltcmV2e0hFQUR9fTsKICAgIH0KICB9CgogIG15ICRjciA9IGFic19wYXRoKCRjdnNyb290
KSB8fCAkY3Zzcm9vdDsKICAjIGFic19wYXRoKCkgdGFpbnRzIHdoZW4gcnVuIGFzIGEgQ0dJLi4u
CiAgaWYgKCRjciA9fiBWQUxJRF9QQVRIKSB7CiAgICAkY3IgPSAkMTsKICB9IGVsc2UgewogICAg
ZmF0YWwoJzUwMCBJbnRlcm5hbCBFcnJvcicsICdJbGxlZ2FsIENWUyByb290OiA8Y29kZT4lczwv
Y29kZT4nLCAkY3IpOwogIH0KICAjIFVzZSBhYnNfcGF0aCgpIHRvIHdvcmsgYXJvdW5kIGEgYnVn
IG9mIGN2cyAtcDsgZXhwYW5kIHN5bWxpbmtzIGlmIHdlIGNhbi4KICBteSBAY21kID0gKCRDTUR7
Y3ZzfSwgQGN2c19vcHRpb25zLCAnLWQnLCAkY3IsICdjbycsICctcCcsICRyZXZvcHQsICR3aGVy
ZSk7CgogIGxvY2FsICgqQ1ZTX09VVCwgKkNWU19FUlIpOwogIG15ICgkaCwgJGVycikgPQogICAg
c3RhcnRwcm9jKFxAY21kLCBcIiIsICc+cGlwZScsIFwqQ1ZTX09VVCwgJzI+cGlwZScsIFwqQ1ZT
X0VSUik7CiAgZmF0YWwoJzUwMCBJbnRlcm5hbCBFcnJvcicsCiAgICAgICAgJ0NoZWNrb3V0IGZh
aWx1cmUgKGV4aXQgc3RhdHVzICVzKSwgb3V0cHV0OiA8cHJlPiVzPC9wcmU+JywKICAgICAgICAk
PyA+PiA4IHx8IC0xLCAkZXJyKQogICAgdW5sZXNzICRoOwoKICBpZiAoZW9mKENWU19FUlIpKSB7
CiAgICAkaC0+ZmluaXNoKCk7CiAgICBmYXRhbCgiNDA0IE5vdCBGb3VuZCIsICclcyBpcyBub3Qg
KGFueSBsb25nZXIpIHBlcnRpbmVudCcsICR3aGVyZSk7CiAgfQoKICAjPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICND
aGVja2luZyBvdXQgc3F1aWQvc3JjL2Z0cC5jCiAgI1JDUzogIC91c3Ivc3JjL0NWUy9zcXVpZC9z
cmMvZnRwLmMsdgogICNWRVJTOiAxLjEuMS4yOC42LjIKICAjKioqKioqKioqKioqKioqCgogICMg
UGFyc2UgQ1ZTIGhlYWRlcgogIG15ICgkcmV2aXNpb24sICRmaWxlbmFtZSwgJGN2c2hlYWRlcik7
CiAgJGZpbGVuYW1lID0gIiI7CiAgd2hpbGUgKDxDVlNfRVJSPikgewogICAgbGFzdCBpZiAoL15c
KlwqXCpcKi8pOwogICAgJHJldmlzaW9uID0gJDEgaWYgKC9eVkVSUzogKC4qKSQvKTsKCiAgICBp
ZiAoL15DaGVja2luZyBvdXQgKC4qKSQvKSB7CiAgICAgICgkZmlsZW5hbWUgPSAkMSkgPX4gc3xe
XC4vK3x8OwogICAgfQogICAgJGN2c2hlYWRlciAuPSAkXzsKICB9CiAgY2xvc2UoQ1ZTX0VSUik7
CgogIGlmICgkZmlsZW5hbWUgbmUgJHdoZXJlKSB7CiAgICAkaC0+ZmluaXNoKCk7CiAgICBmYXRh
bCgiNTAwIEludGVybmFsIEVycm9yIiwKICAgICAgICAgICdVbmV4cGVjdGVkIG91dHB1dCBmcm9t
IGN2cyBjbzogPHByZT4lczwvcHJlPiAnIC4KICAgICAgICAgICcoZXhwZWN0ZWQgIjxjb2RlPiVz
PC9jb2RlPiIgYnV0IGdvdCAiPGNvZGU+JXM8L2NvZGU+IiknLAogICAgICAgICAgJGN2c2hlYWRl
ciwgJHdoZXJlLCAkZmlsZW5hbWUpOwogIH0KCiAgIyBMYXN0IGNoZWNrcyB3aGV0aGVyIHdlJ2xs
IGRvIG1hcmt1cCBvciBub3QuCiAgbXkgJGlzYmluID0gJGtleXdvcmRzdWJzdGl0dXRpb24gJiYg
JGtleXdvcmRzdWJzdGl0dXRpb24gPX4gL2IvOwogIG15ICRtaW1ldHlwZSA9IGdldE1pbWVUeXBl
KCRmdWxsbmFtZSwgJGlzYmluKTsKCiAgIyBJZiB3ZSBzdGlsbCBhcmUgbm90IHN1cmUgd2hldGhl
ciB0byBkbyBtYXJrdXAgb3Igbm90OgogICMgaWYgdGhlIE1JTUUgdHlwZSBpcyAidmlld2FibGUi
IG9yIHRoaXMgaXMgbm90IGEgYmluYXJ5IGZpbGUsIGRvLgogICRkb19tYXJrdXAgPSAhJGlzYmlu
IHx8IHZpZXdhYmxlKCRtaW1ldHlwZSkgdW5sZXNzIGRlZmluZWQoJGRvX21hcmt1cCk7CgogIGlm
ICgkZG9fbWFya3VwKSB7CgogICAgIyBJZiB0aGlzIGlzIHNvbWV0aGluZyB3ZSdsbCBiZSBsaW5r
aW5nIHRvIGluIHRoZSBtYXJrdXAgdmlldywgd2UgYXJlCiAgICAjIGRvbmUgd2l0aCB0aGlzIHBh
cnRpY3VsYXIgb3V0cHV0IGZyb20gImN2cyBjbyIgYW5kIG11c3QgZGlzY2FyZCBpdC4KICAgIG15
ICRsaW5rZWQgPSAkbWltZXR5cGUgPX4gbXteaW1hZ2UvfGFwcGxpY2F0aW9uL3BkZiR9aTsKICAg
IGlmICgkbGlua2VkKSB7CiAgICAgIGNsb3NlKENWU19PVVQpOwogICAgICAkaC0+ZmluaXNoKCk7
CiAgICB9CgogICAgIyBIZXJlIHdlIGtub3cgdGhlIGxhc3QgbW9kaWZpZWQgZGF0ZSwgYnV0IGRv
bid0IGtub3cgaWYgdGFncyBoYXZlIGJlZW4KICAgICMgYWRkZWQgYWZ0ZXJ3YXJkcyAodGhvc2Ug
YXJlIHNob3duIGluIHRoZSBtYXJrdXAgdmlldyk6IG5vIGxhc3QtbW9kaWZpZWQuCiAgICBjdnN3
ZWJNYXJrdXAoXCpDVlNfT1VULCAkZnVsbG5hbWUsICRyZXZpc2lvbiwgJGlzYmluLCAkbWltZXR5
cGUsICRuZWVkbG9nKTsKCiAgICAkaC0+ZmluaXNoKCkgdW5sZXNzICRsaW5rZWQ7CgogIH0gZWxz
ZSB7CiAgICBodHRwX2hlYWRlcigkd2FudF90eXBlIHx8ICRtaW1ldHlwZSwgJG1vZGRhdGUpOwog
ICAgbG9jYWwgJC8gPSB1bmRlZjsKICAgIHByaW50IDxDVlNfT1VUPjsKICAgICRoLT5maW5pc2go
KTsKICB9Cn0KCgpzdWIgY3Zzd2ViTWFya3VwKCQkJCQkJDskKQp7CiAgbXkgKCRmaWxlaGFuZGxl
LCAkZnVsbG5hbWUsICRyZXYsICRpc2JpbiwgJG1pbWV0eXBlLCAkbG9nZ2VkLCAkbW9kKSA9IEBf
OwoKICAobXkgJHBhdGhuYW1lID0gJHdoZXJlKSA9fiBzfCgoPzw9LylBdHRpYy8pP1teL10qJHx8
OwogIChteSAkZmlsZW5hbWUgPSAkd2hlcmUpID1+IHN8Xi4qL3x8OwoKICBuYXZpZ2F0ZUhlYWRl
cigkc2NyaXB0d2hlcmUsICRwYXRobmFtZSwgJGZpbGVuYW1lLCAkcmV2LCAndmlldycsICRtb2Qp
OwoKICBwcmludCA8PEVPRjsKPGhyIC8+CjxkaXYgY2xhc3M9ImxvZy1tYXJrdXAiPgpGaWxlOiZu
YnNwOwpFT0YKICBwcmludCAmY2xpY2thYmxlUGF0aCgkd2hlcmUsIDEpLCAiPGJyIC8+XG4iOwoK
ICBpZiAoJHNob3dfbG9nX2luX21hcmt1cCkgewogICAgcmVhZExvZygkZnVsbG5hbWUpIHVubGVz
cyAkbG9nZ2VkOyAjLCRyZXYpOwogICAgcHJpbnRMb2coJHJldiwgJG1pbWV0eXBlLCAkaXNiaW4p
OwogIH0gZWxzZSB7CiAgICBwcmludCAiUmV2aXNpb246IDxiPiRyZXY8L2I+PGJyIC8+XG4iOwog
ICAgcHJpbnQgJ1RhZzogJywgaHRtbHF1b3RlKCRpbnB1dHtvbmx5X3dpdGhfdGFnfSksICI8YnIg
Lz5cbiIKICAgICAgaWYgJGlucHV0e29ubHlfd2l0aF90YWd9OwogIH0KICBwcmludCAiPC9kaXY+
XG48aHIgLz4iOwogIG15ICR1cmwgPSBkb3dubG9hZF91cmwodXJpX2VzY2FwZSgkZmlsZW5hbWUp
LCAkcmV2LCAkbWltZXR5cGUpOwoKICBpZiAoJG1pbWV0eXBlID1+IG18XmltYWdlL3xpKSB7CiAg
ICBwcmludGYgJzxpbWcgc3JjPSIlcyIgYWx0PSIlcyIgLz48YnIgLz4nLAogICAgICAkdXJsIC4g
JGJhcmVxdWVyeSwgaHRtbHF1b3RlKCRmaWxlbmFtZSk7CiAgfSBlbHNpZiAobGMoJG1pbWV0eXBl
KSBlcSAnYXBwbGljYXRpb24vcGRmJykgewogICAgcHJpbnRmICc8ZW1iZWQgc3JjPSIlcyIgd2lk
dGg9IjEwMCUlIiBoZWlnaHQ9IjEwMCUlIiAvPjxiciAvPicsCiAgICAgICR1cmwgLiAkYmFyZXF1
ZXJ5OwogIH0gZWxzZSB7CgogICAgcHJpbnQgIjxwcmU+XG4iOwogICAgbXkgJGxpbmVudW1iZXJz
ID0gJGlucHV0e2xufSB8fCAwOwoKICAgIGlmIChteSAkZW5zY3JpcHRfaGwgPSBnZXRFbnNjcmlw
dEhMKCRmaWxlbmFtZSkpIHsKICAgICAgZG9FbnNjcmlwdCgkZmlsZWhhbmRsZSwgJGVuc2NyaXB0
X2hsLCAkbGluZW51bWJlcnMpOwoKICAgIH0gZWxzZSB7CiAgICAgIG15ICRsbiAgPSAwOwogICAg
ICBteSBAYnVmID0gKCk7CiAgICAgIG15ICR0cyAgPSB1bmRlZjsKCiAgICAgIGlmICgkcHJlZm9y
bWF0X2luX21hcmt1cCkgewogICAgICAgICMgcHJlZmV0Y2ggc2V2ZXJhbCBsaW5lcwogICAgICAg
IEBidWYgPSBoZWFkKCRmaWxlaGFuZGxlKTsKICAgICAgICBteSAlZCA9IHNjYW5fZGlyZWN0aXZl
cyhAYnVmKTsKICAgICAgICAkdHMgPSAkZHt0YWJzdG9wfTsKICAgICAgfQoKICAgICAgd2hpbGUg
KEBidWYgfHwgIWVvZigkZmlsZWhhbmRsZSkpIHsKICAgICAgICAkXyA9IEBidWYgPyBzaGlmdCBA
YnVmIDogPCRmaWxlaGFuZGxlPjsKICAgICAgICBpZiAoJGxpbmVudW1iZXJzKSB7CiAgICAgICAg
ICAkbG4rKzsKICAgICAgICAgIHByaW50ZiAnPGEgaWQ9ImwlZCIgY2xhc3M9InNyYyI+JTVkOiA8
L2E+JywgKCRsbikgeCAyOwogICAgICAgIH0KICAgICAgICBwcmludCAkcHJlZm9ybWF0X2luX21h
cmt1cCA/IHNwYWNlZEh0bWxUZXh0KCRfLCAkdHMpIDogaHRtbHF1b3RlKCRfKTsKICAgICAgfQog
ICAgfQoKICAgIHByaW50ICI8L3ByZT5cbiI7CiAgfQogIGh0bWxfZm9vdGVyKCk7Cn0KCgpzdWIg
dmlld2FibGUoJCkKewogIHJldHVybiBzaGlmdCA9fiBte14oKHRleHR8aW1hZ2UpL3xhcHBsaWNh
dGlvbi9wZGYpfWk7Cn0KCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU2hvdyBD
b2xvcmVkIERpZmYKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpzdWIgZG9EaWZmKCQk
JCQkJCkKewogIG15ICgkZnVsbG5hbWUsICRyMSwgJHRyMSwgJHIyLCAkdHIyLCAkZikgPSBAXzsK
CiAgaWYgKGZvcmJpZGRlbigkZnVsbG5hbWUpKSB7CiAgICBmYXRhbCgnNDAzIEZvcmJpZGRlbics
ICdBY2Nlc3MgdG8gJXMgZm9yYmlkZGVuLicsICR3aGVyZSk7CiAgfQoKICBteSAoJHJldjEsICRz
eW0xKTsKICBpZiAoJHIxID1+IC8oW146XSspKDooLispKT8vKSB7CiAgICAkcmV2MSA9ICQxOwog
ICAgJHN5bTEgPSAkMzsKICB9CiAgaWYgKCRyMSBlcSAndGV4dCcpIHsKICAgICRyZXYxID0gJHRy
MTsKICAgICRzeW0xID0gIiI7CiAgfQoKICBteSAoJHJldjIsICRzeW0yKTsKICBpZiAoJHIyID1+
IC8oW146XSspKDooLispKT8vKSB7CiAgICAkcmV2MiA9ICQxOwogICAgJHN5bTIgPSAkMzsKICB9
CiAgaWYgKCRyMiBlcSAndGV4dCcpIHsKICAgICRyZXYyID0gJHRyMjsKICAgICRzeW0yID0gIiI7
CiAgfQoKICAjCiAgIyByZXYxIGFuZCByZXYyIGFyZSBub3cgYm90aCBudW1lcmljIHJldmlzaW9u
cy4KICAjIFRodXMgd2UgZG8gYSBEV0lNIGhlcmUgYW5kIHN3YXAgdGhlbSBpZiByZXYxIGlzIGFm
dGVyIHJldjIuCiAgIyBYWFggc2hvdWxkIHdlIHdhcm4gYWJvdXQgdGhlIGZhY3QgdGhhdCB3ZSBk
byB0aGlzPwogIGlmICgmcmV2Y21wKCRyZXYxLCAkcmV2MikgPiAwKSB7CiAgICBteSAoJHRtcDEs
ICR0bXAyKSA9ICgkcmV2MSwgJHN5bTEpOwogICAgKCRyZXYxLCAkc3ltMSkgPSAoJHJldjIsICRz
eW0yKTsKICAgICgkcmV2MiwgJHN5bTIpID0gKCR0bXAxLCAkdG1wMik7CiAgfQoKICBteSAkbWlt
ZXR5cGUgPSBnZXRNaW1lVHlwZSgkZnVsbG5hbWUpOwoKICAjCiAgIyAgQ2hlY2sgZm9yIHBlci1N
SU1FIHR5cGUgZGlmZiBjb21tYW5kcy4KICAjCiAgbXkgJGRpZmZjbWQgPSB1bmRlZjsKICBpZiAo
bXkgJGRpZmZjbWRzID0gJERJRkZfQ09NTUFORFN7bGMoJG1pbWV0eXBlKX0pIHsKICAgIGlmICgk
ZiA9fiAvXmV4dChcZCopJC8pIHsKICAgICAgbXkgJG4gPSAkMSB8fCAwOwogICAgICAkZGlmZmNt
ZCA9ICRkaWZmY21kcy0+WyRuXTsKICAgIH0KICB9CiAgaWYgKCRkaWZmY21kICYmICRkaWZmY21k
LT57Y21kfSAmJiAkZGlmZmNtZC0+e25hbWV9KSB7CgogICAgaWYgKCRkaWZmY21kLT57YXJnc30g
JiYgcmVmKCRkaWZmY21kLT57YXJnc30pIG5lICdBUlJBWScpIHsKICAgICAgZmF0YWwoJzUwMCBJ
bnRlcm5hbCBFcnJvcicsCiAgICAgICAgICAgICdDb25maWd1cmF0aW9uIGVycm9yOiBhcmd1bWVu
dHMgdG8gZXh0ZXJuYWwgZGlmZiB0b29scyBtdXN0ICcgLgogICAgICAgICAgICAnYmUgZ2l2ZW4g
YXMgYXJyYXkgcmVmcy4gIFNlZSAiPGNvZGU+JXM8L2NvZGU+IiBpbiAnIC4KICAgICAgICAgICAg
Jzxjb2RlPiUlRElGRl9DT01NQU5EUzwvY29kZT4uJywKICAgICAgICAgICAgJGRpZmZjbWQtPntu
YW1lfSk7CiAgICB9CgogICAgKG15ICRjdnNuYW1lID0gJHdoZXJlKSA9fiBzL1wuZGlmZiQvLzsK
CiAgICAjIENyZWF0ZSB0d28gdGVtcG9yYXJ5IGZpbGVzIHdpdGggdGhlIHR3byByZXZpc2lvbnMK
ICAgIG15ICR0ZW1wX2ZuMSA9IGNoZWNrb3V0X3RvX3RlbXAoJGN2c3Jvb3QsICRjdnNuYW1lLCAk
cmV2MSk7CiAgICBteSAkdGVtcF9mbjIgPSBjaGVja291dF90b190ZW1wKCRjdnNyb290LCAkY3Zz
bmFtZSwgJHJldjIpOwoKICAgICMgRXhlY3V0ZSBjaG9zZW4gZGlmZiBiaW5hcnkuCiAgICBsb2Nh
bCAoKkRJRkZfT1VUKTsKICAgIG15IEBjbWQgPSAoJGRpZmZjbWQtPntjbWR9KTsKICAgIHB1c2go
QGNtZCwgQHskZGlmZmNtZC0+e2FyZ3N9fSkgaWYgJGRpZmZjbWQtPnthcmdzfTsKICAgIHB1c2go
QGNtZCwgJHRlbXBfZm4xLCAkdGVtcF9mbjIpOwogICAgbXkgKCRoLCAkZXJyKSA9IHN0YXJ0cHJv
YyhcQGNtZCwgXCIiLCAnPnBpcGUnLCBcKkRJRkZfT1VUKTsKICAgIGlmICghJGgpIHsKICAgICAg
dW5saW5rKCR0ZW1wX2ZuMSk7CiAgICAgIHVubGluaygkdGVtcF9mbjIpOwogICAgICBmYXRhbCgn
NTAwIEludGVybmFsIEVycm9yJywKICAgICAgICAgICAgJ0RpZmYgZmFpbHVyZSAoZXhpdCBzdGF0
dXMgJXMpLCBvdXRwdXQ6IDxwcmU+JXM8L3ByZT4nLAogICAgICAgICAgICAkPyA+PiA4IHx8IC0x
LCAkZXJyKTsKICAgIH0KCiAgICBodHRwX2hlYWRlcigkZGlmZmNtZC0+e3R5cGV9IHx8ICd0ZXh0
L3BsYWluJyk7CiAgICBsb2NhbCAkLyA9IHVuZGVmOwogICAgcHJpbnQgPERJRkZfT1VUPjsKICAg
ICRoLT5maW5pc2goKTsKICAgIHVubGluaygkdGVtcF9mbjEpOwogICAgdW5saW5rKCR0ZW1wX2Zu
Mik7CgogICAgZXhpdDsKICB9CgogICMKICAjIE5vcm1hbCBDVlMgZGlmZi4KICAjCgogICRmID0g
JERFRkFVTFRWQUxVRXtmfSB8fCAndScgaWYgKCRmID1+IC9eZXh0XGQqJC8pOwogIG15ICRkaWZm
dHlwZSA9ICRESUZGVFlQRVN7JGZ9OwogIGlmICghJGRpZmZ0eXBlKSB7CiAgICBmYXRhbCgiNDAw
IEJhZCBhcmd1bWVudHMiLCAnRGlmZiBmb3JtYXQgJXMgbm90IHVuZGVyc3Rvb2QnLCAkZik7CiAg
fQoKICBteSBAZGlmZnR5cGUgICAgICAgPSBAeyRkaWZmdHlwZS0+e29wdHN9fTsKICBteSAkaHVt
YW5fcmVhZGFibGUgPSAkZGlmZnR5cGUtPntjb2xvcmVkfTsKCiAgIyBBcHBseSBzcGVjaWFsIGRp
ZmYgb3B0aW9ucy4gIC1wIGFuZCAtRiBhcmUgbm90IGF2YWlsYWJsZSB3aXRoIHNpZGUgYnkgc2lk
ZQogICMgZGlmZnMgYW5kIG1heSBjYXVzZSBwcm9ibGVtcyB3aXRoIG9sZGVyICg8IDIuOCkgdmVy
c2lvbnMgb2YgZGlmZnV0aWxzIGlmCiAgIyB1c2VkIHdpdGggLS1zaWRlLWJ5LXNpZGUuCiAgaWYg
KCRzaG93ZnVuYyAmJiAkZiAhfiAvXnMvKSB7CiAgICBwdXNoKEBkaWZmdHlwZSwgJy1wJyk7CiAg
ICB3aGlsZSAobXkgKCRyZTEsICRyZTIpID0gZWFjaCAlZnVuY2xpbmVfcmVnZXhwKSB7CiAgICAg
IGlmICgkZnVsbG5hbWUgPX4gJHJlMSkgewogICAgICAgIHB1c2goQGRpZmZ0eXBlLCAnLUYnLCAk
cmUyKTsKICAgICAgICBsYXN0OwogICAgICB9CiAgICB9CiAgfQoKICBpZiAoJGh1bWFuX3JlYWRh
YmxlKSB7CiAgICBwdXNoKEBkaWZmdHlwZSwgJy13JykgIGlmICRocl9pZ253aGl0ZTsKICAgIHB1
c2goQGRpZmZ0eXBlLCAnLWtrJykgaWYgJGhyX2lnbmtleXN1YnN0OwogIH0KCiAgbXkgJGZoID0g
ZG8geyBsb2NhbCAoKkZIKTsgfTsKICBpZiAoIW9wZW4oJGZoLCAiLXwiKSkgeyAgICAjIGNoaWxk
CiAgICBvcGVuKFNUREVSUiwgIj4mU1RET1VUIik7ICAgICMgUmVkaXJlY3Qgc3RkZXJyIHRvIHN0
ZG91dAogICAgb3Blbk91dHB1dEZpbHRlcigpOwogICAgZXhlYygkQ01Ee3Jjc2RpZmZ9LCBAcmNz
ZGlmZl9vcHRpb25zLCBAZGlmZnR5cGUsICItciRyZXYxIiwgIi1yJHJldjIiLAogICAgICAgICAk
ZnVsbG5hbWUpIG9yIGV4aXQgLTE7CiAgfQoKICBpZiAoJGh1bWFuX3JlYWRhYmxlKSB7CiAgICAj
CiAgICAjIEh1bWFuIHJlYWRhYmxlIGRpZmYuCiAgICAjCiAgICBodW1hbl9yZWFkYWJsZV9kaWZm
KCRmaCwgJHJldjIpOwogICAgaHRtbF9mb290ZXIoKTsKICAgIGd6aXBjbG9zZSgpOwogICAgZXhp
dDsKCiAgfSBlbHNpZiAoJGYgPX4gL14oW3Vjc10pYyQvKSB7CiAgICAjCiAgICAjIEVuc2NyaXB0
IGNvbG9yZWQgZGlmZi4KICAgICMKICAgIG15ICRobCA9ICdkaWZmJzsKICAgICRobCAuPSAkMSBp
ZiAoJDEgZXEgJ3UnIHx8ICQxIGVxICdzJyk7CiAgICAobXkgJHdoZXJlX25kID0gJHdoZXJlKSAg
ICAgICA9fiBzL1wuZGlmZiQvLzsKICAgIChteSAkcGF0aG5hbWUgPSAkd2hlcmVfbmQpICAgID1+
IHN8KCg/PD0vKUF0dGljLyk/W14vXSokfHw7CiAgICAobXkgJGZpbGVuYW1lID0gJHdoZXJlX25k
KSAgICA9fiBzfF4uKi98fDsKICAgIChteSAkc3doZXJlICAgPSAkc2NyaXB0d2hlcmUpID1+IHN8
XC5kaWZmJHx8OwogICAgbmF2aWdhdGVIZWFkZXIoJHN3aGVyZSwgJHBhdGhuYW1lLCAkZmlsZW5h
bWUsICRyZXYyLCAnZGlmZicpOwogICAgcHJpbnRmKDw8RU9GLCAkd2hlcmVfbmQsICRyZXYxLCAk
cmV2Mik7CjxoMyBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyIj5EaWZmIGZvciAvJXMgYmV0d2Vl
biB2ZXJzaW9ucyAlcyBhbmQgJXM8L2gzPgo8cHJlPgpFT0YKICAgIGRvRW5zY3JpcHQoXCRmaCwg
JGhsLCAwLCAnY3Zzd2ViX2RpZmYnKTsKICAgIHByaW50IDw8RU9GOwo8L3ByZT4KPGhyIHN0eWxl
PSJ3aWR0aDogMTAwJSIgLz4KPGZvcm0gbWV0aG9kPSJnZXQiIGFjdGlvbj0iJHNjcmlwdHdoZXJl
Ij4KRU9GCiAgICBwcmludERpZmZTZWxlY3RTdGlja3lWYXJzKCk7CiAgICBwcmludCAnRGlmZiBm
b3JtYXQ6ICc7CiAgICBwcmludERpZmZTZWxlY3QoJHVzZV9qYXZhX3NjcmlwdCk7CiAgICBwcmlu
dCAiPGlucHV0IHR5cGU9XCJzdWJtaXRcIiB2YWx1ZT1cIlNob3dcIiAvPlxuPC9mb3JtPlxuIjsK
ICAgIGh0bWxfZm9vdGVyKCk7CiAgICBnemlwY2xvc2UoKTsKICAgIGV4aXQ7CgogIH0gZWxzZSB7
CiAgICAjCiAgICAjIFBsYWluIGRpZmYuCiAgICAjCiAgICBodHRwX2hlYWRlcigidGV4dC9wbGFp
biIpOwogIH0KCiAgIwogICM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgI1JDUyBmaWxlOiAvaG9tZS9uY3ZzL3NyYy9z
eXMvbmV0aW5ldC90Y3Bfb3V0cHV0LmMsdgogICNyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTYKICAj
cmV0cmlldmluZyByZXZpc2lvbiAxLjE3CiAgI2RpZmYgLWMgLXIxLjE2IC1yMS4xNwogICMqKiog
L2hvbWUvbmN2cy9zcmMvc3lzL25ldGluZXQvdGNwX291dHB1dC5jICAgICAxOTk1LzExLzAzIDIy
OjA4OjA4ICAgICAxLjE2CiAgIy0tLSAvaG9tZS9uY3ZzL3NyYy9zeXMvbmV0aW5ldC90Y3Bfb3V0
cHV0LmMgICAgIDE5OTUvMTIvMDUgMTc6NDY6MzUgICAgIDEuMTcKICAjCiAgIyBJZGVhczoKICAj
IC0gbnVrZSB0aGUgc3RkZXJyIG91dHB1dCBpZiBpdCdzIHdoYXQgd2UgZXhwZWN0IGl0IHRvIGJl
CiAgIyAtIEFkZCAibm8gZGlmZmVyZW5jZXMgZm91bmQiIGlmIHRoZSBkaWZmIGNvbW1hbmQgc3Vw
cGxpZWQgbm8gb3V0cHV0LgogICMKICAjKioqIHNyYy9zeXMvbmV0aW5ldC90Y3Bfb3V0cHV0LmMg
ICAgIDE5OTUvMTEvMDMgMjI6MDg6MDggICAgIDEuMTYKICAjLS0tIHNyYy9zeXMvbmV0aW5ldC90
Y3Bfb3V0cHV0LmMgICAgIDE5OTUvMTIvMDUgMTc6NDY6MzUgICAgIDEuMTcgUkVMRU5HXzJfMV8w
CiAgIyAoYm9ndXMgZXhhbXBsZSwgYnV0Li4uKQogICMKICBteSAoJGYxLCAkZjIpOwogIGlmIChn
cmVwIHsgJF8gZXEgJy11JyB9IEBkaWZmdHlwZSkgewogICAgJGYxID0gJy0tLSc7CiAgICAkZjIg
PSAnXCtcK1wrJzsKICB9IGVsc2UgewogICAgJGYxID0gJ1wqXCpcKic7CiAgICAkZjIgPSAnLS0t
JzsKICB9CgogIHdoaWxlICg8JGZoPikgewogICAgaWYgKG18XiRmMSAkY3Zzcm9vdHxvKSB7CiAg
ICAgIHN8JGN2c3Jvb3QvfHxvOwogICAgICBpZiAoJHN5bTEpIHsKICAgICAgICBjaG9wOwogICAg
ICAgICRfIC49ICIgJHN5bTFcbiI7CiAgICAgIH0KICAgIH0gZWxzaWYgKG18XiRmMiAkY3Zzcm9v
dHxvKSB7CiAgICAgIHN8JGN2c3Jvb3QvfHxvOwoKICAgICAgaWYgKCRzeW0yKSB7CiAgICAgICAg
Y2hvcDsKICAgICAgICAkXyAuPSAiICRzeW0yXG4iOwogICAgICB9CiAgICB9CiAgICBwcmludCAk
XzsKICB9CiAgY2xvc2UoJGZoKTsKfQoKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
IyBTaG93IExvZ3MgLi4KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpzdWIgZ2V0RGly
TG9ncygkJEApCnsKICBteSAoJGN2c3Jvb3QsICRkaXJuYW1lLCBAb3RoZXJGaWxlcykgPSBAXzsK
ICBteSAkdGFnID0gJGlucHV0e29ubHlfd2l0aF90YWd9OwogIG15ICREaXJOYW1lID0gY2F0ZGly
KCRjdnNyb290LCAkd2hlcmUpOwoKICBteSBAZmlsZXMgPSAmc2FmZWdsb2IoIiREaXJOYW1lLyos
diIpOwogIHB1c2ggKEBmaWxlcywgJnNhZmVnbG9iKCIkRGlyTmFtZS9BdHRpYy8qLHYiKSkgdW5s
ZXNzICRpbnB1dHtoaWRlYXR0aWN9OwogIGZvcmVhY2ggbXkgJGZpbGUgKEBvdGhlckZpbGVzKSB7
CiAgICBwdXNoKEBmaWxlcywgY2F0ZmlsZSgkRGlyTmFtZSwgJGZpbGUpKTsKICB9CgogICMgV2Vl
ZCBvdXQgdW5yZWFkYWJsZSBmaWxlcy4KICBteSAkaSA9IDA7CiAgbXkgQHVucmVhZGFibGUgPSAo
KTsKICB3aGlsZSAoJGkgPCBzY2FsYXIoQGZpbGVzKSkgewogICAgIyBOb3RlOiBsYXN0IG1vZGlm
aWVkIGZpbGVzIGZyb20gc3ViZGlycyByZXR1cm5lZCBieQogICAgIyBmaW5kTGFzdE1vZGlmaWVk
U3ViZGlycygpIGNvbWUgd2l0aG91dCB0aGUgLHYgc3VmZml4IHNvIHRoZXkncmUgbm90CiAgICAj
IGZvdW5kIGhlcmUsIGJ1dCBoYXZlIGFscmVhZHkgYmVlbiBjaGVja2VkIGZvciByZWFkYWJpbGl0
eS4gICpjb3VnaCoKICAgIGlmICgtciAkZmlsZXNbJGldIHx8ICEtZSBfKSB7CiAgICAgICRpKys7
CiAgICB9IGVsc2UgewogICAgICBwdXNoKEB1bnJlYWRhYmxlLCBzcGxpY2UoQGZpbGVzLCAkaSwg
MSkpOwogICAgfQogIH0KCiAgIyBJZiB0aGVyZSBhcmUgbm8gZmlsZXMsIHdlJ3JlIGRvbmUuCiAg
cmV0dXJuIEB1bnJlYWRhYmxlIHVubGVzcyBAZmlsZXM7CgogIG15IEBjbWQgPSAoJENNRHtybG9n
fSk7CiAgIyBDYW4ndCB1c2UgLXI8dGFnPiBhcyAnLScgaXMgYWxsb3dlZCBpbiB0YWduYW1lcywK
ICAjIGJ1dCBtaXNpbnRlcnByZXRlZCBieSBybG9nLgogIHB1c2goQGNtZCwgJy1yJykgdW5sZXNz
IGRlZmluZWQoJHRhZyk7CgogIG15ICRmaCA9IGRvIHsgbG9jYWwgKCpGSCk7IH07CiAgaWYgKCFv
cGVuKCRmaCwgJy18JykpIHsgICAgICAgICAgICAgICAgICAgICAgICMgQ2hpbGQKICAgIG9wZW4o
U1RERVJSLCAnPicsIGRldm51bGwoKSkgdW5sZXNzICRERUJVRzsgIyBJZ25vcmUgcmxvZydzIGNv
bXBsYWludHMuCiAgICBvcGVuT3V0cHV0RmlsdGVyKCk7CiAgICBpZiAoJGZpbGVfbGlzdF9sZW4g
JiYgJGZpbGVfbGlzdF9sZW4gPiAxKSB7CiAgICAgIHdoaWxlIChzY2FsYXIoQGZpbGVzKSA+ICRm
aWxlX2xpc3RfbGVuKSB7ICAjIFByb2Nlc3MgZmlsZXMgaW4gY2h1bmtzLgogICAgICAgIHN5c3Rl
bShAY21kLCBzcGxpY2UoQGZpbGVzLCAwLCAkZmlsZV9saXN0X2xlbikpID09IDAgb3IgZXhpdCAt
MTsKICAgICAgfQogICAgfQogICAgZXhlYyhAY21kLCBAZmlsZXMpIG9yIGV4aXQgLTE7CiAgfQog
IHVuZGVmIEBjbWQ7CgogIG15ICRzdGF0ZSA9ICdzdGFydCc7CiAgbXkgKCRkYXRlLCAkYnJhbmNo
cG9pbnQsICRicmFuY2gsICRsb2csIEBmaWxldGFncyk7CiAgbXkgKCRyZXYsICRyZXZpc2lvbiwg
JHJldndhbnRlZCwgJGZpbGVuYW1lLCAkaGVhZCwgJGF1dGhvciwgJGtleXdvcmRzdWJzdCk7Cgog
IHdoaWxlICg8JGZoPikgewogICAgaWYgKCRzdGF0ZSBlcSAic3RhcnQiKSB7CgogICAgICAjTmV4
dCBmaWxlLiBJbml0aWFsaXplIGZpbGUgdmFyaWFibGVzCiAgICAgICRyZXYgICAgICAgICA9ICcn
OwogICAgICAkcmV2d2FudGVkICAgPSAnJzsKICAgICAgJGJyYW5jaCAgICAgID0gJyc7CiAgICAg
ICRicmFuY2hwb2ludCA9ICcnOwogICAgICAkZmlsZW5hbWUgICAgPSAnJzsKICAgICAgJGxvZyAg
ICAgICAgID0gJyc7CiAgICAgICRyZXZpc2lvbiAgICA9ICcnOwogICAgICAlc3ltcmV2ICAgICAg
PSAoKTsKICAgICAgQGZpbGV0YWdzICAgID0gKCk7CiAgICAgICRrZXl3b3Jkc3Vic3Q9ICcnOwoK
ICAgICAgI2p1bXAgdG8gaGVhZCBzdGF0ZQogICAgICAkc3RhdGUgPSAiaGVhZCI7CiAgICB9Cgog
ICAgYWdhaW46CgogICAgaWYgKCRzdGF0ZSBlcSAiaGVhZCIpIHsKCiAgICAgICMkcmNzZmlsZSA9
ICQxIGlmICgvXlJDUyBmaWxlOiAoLispJC8pOyAjbm90IHVzZWQgKHlldCkKCiAgICAgIGlmICgv
XldvcmtpbmcgZmlsZTogKC4rKSQvKSB7CiAgICAgICAgJGZpbGVuYW1lID0gJDE7CiAgICAgIH0g
ZWxzaWYgKC9eaGVhZDogKC4rKSQvKSB7CiAgICAgICAgJGhlYWQgPSAkMTsKICAgICAgfSBlbHNp
ZiAoL15icmFuY2g6ICguKykkLykgewogICAgICAgICRicmFuY2ggPSAkMTsKICAgICAgfSBlbHNp
ZiAoL15rZXl3b3JkIHN1YnN0aXR1dGlvbjogKC4rKSQvKSB7CiAgICAgICAgJGtleXdvcmRzdWJz
dCA9ICQxOwogICAgICB9IGVsc2lmICgvXnN5bWJvbGljIG5hbWVzOi8pIHsKICAgICAgICAkc3Rh
dGUgPSAidGFncyI7CiAgICAgICAgKCRicmFuY2ggPSAkaGVhZCkgPX4gcy9cLlxkKyQvLwogICAg
ICAgICAgaWYgJGJyYW5jaCBlcSAnJzsKICAgICAgICAkYnJhbmNoID1+IHMvKFxkKykkLzAuJDEv
OwogICAgICAgICRzeW1yZXZ7TUFJTn0gID0gJGJyYW5jaDsKICAgICAgICAkc3ltcmV2e0hFQUR9
ICA9ICRicmFuY2g7CiAgICAgICAgJGFsbHRhZ3N7TUFJTn0gPSAxOwogICAgICAgICRhbGx0YWdz
e0hFQUR9ID0gMTsKICAgICAgICBwdXNoIChAZmlsZXRhZ3MsICJNQUlOIiwgIkhFQUQiKTsKICAg
ICAgfSBlbHNpZiAoJF8gPX4gTE9HX1JFVlNFUFIpIHsKICAgICAgICAkc3RhdGUgPSAibG9nIjsK
ICAgICAgICAkcmV2ICAgPSAnJzsKICAgICAgICAkZGF0ZSAgPSAnJzsKICAgICAgICAkbG9nICAg
PSAnJzsKCiAgICAgICAgIyBUcnkgdG8gcmVjb25zdHJ1Y3QgdGhlIHJlbGF0aXZlIGZpbGVuYW1l
IGlmIFJDUyBzcGl0cyBvdXQgYSBmdWxsIHBhdGgKICAgICAgICAkZmlsZW5hbWUgPX4gcyVeXFEk
RGlyTmFtZVxFLyUlOwogICAgICB9CiAgICAgIG5leHQ7CiAgICB9CgogICAgaWYgKCRzdGF0ZSBl
cSAidGFncyIpIHsKICAgICAgaWYgKC9eXHMrKFteOl0rKTpccysoW1xkXC5dKylccyokLykgewog
ICAgICAgIHB1c2ggKEBmaWxldGFncywgJDEpOwogICAgICAgICRzeW1yZXZ7JDF9ICA9ICQyOwog
ICAgICAgICRhbGx0YWdzeyQxfSA9IDE7CiAgICAgICAgbmV4dDsKICAgICAgfSBlbHNpZiAoL15c
Uy8pIHsKCiAgICAgICAgaWYgKGRlZmluZWQoJHRhZykpIHsKICAgICAgICAgIGlmIChkZWZpbmVk
KCRzeW1yZXZ7JHRhZ30pIHx8ICR0YWcgZXEgIkhFQUQiKSB7CiAgICAgICAgICAgICRyZXZ3YW50
ZWQgICAgPSAkc3ltcmV2eyR0YWcgZXEgIkhFQUQiID8gIk1BSU4iIDogJHRhZ307CiAgICAgICAg
ICAgICgkYnJhbmNoICAgICAgPSAkcmV2d2FudGVkKSA9fiBzL1xiMFwuLy87CiAgICAgICAgICAg
ICgkYnJhbmNocG9pbnQgPSAkYnJhbmNoKSAgICA9fiBzL1wuP1xkKyQvLzsKICAgICAgICAgICAg
JHJldndhbnRlZCAgICA9ICcnIGlmICgkcmV2d2FudGVkIG5lICRicmFuY2gpOwogICAgICAgICAg
fSBlbHNpZiAoJHRhZyBuZSAiSEVBRCIpIHsKICAgICAgICAgICAgJHN0YXRlID0gInNraXAiOwog
ICAgICAgICAgICBuZXh0OwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCBt
eSAkdGFnZm91bmQgKEBmaWxldGFncykgewogICAgICAgICAgJHRhZ3N7JHRhZ2ZvdW5kfSA9IDE7
CiAgICAgICAgfQogICAgICAgICRzdGF0ZSA9ICJoZWFkIjsKICAgICAgICBnb3RvIGFnYWluOwog
ICAgICB9CiAgICB9CgogICAgaWYgKCRzdGF0ZSBlcSAibG9nIikgewogICAgICBpZiAoJF8gPX4g
TE9HX1JFVlNFUFIgfHwgJF8gPX4gTE9HX0ZJTEVTRVBSKSB7CgogICAgICAgICMgRW5kIG9mIGEg
bG9nIGVudHJ5LgogICAgICAgIG15ICRyZXZicmFuY2ggPSAkcmV2OwogICAgICAgICRyZXZicmFu
Y2ggPX4gcy9cLlxkKyQvLzsKCiAgICAgICAgaWYgKCRyZXZ3YW50ZWQgZXEgJycgJiYgJGJyYW5j
aCBuZSAnJyAmJiAkYnJhbmNoIGVxICRyZXZicmFuY2gKICAgICAgICAgICAgfHwgIWRlZmluZWQo
JHRhZykpCiAgICAgICAgewogICAgICAgICAgJHJldndhbnRlZCA9ICRyZXY7CiAgICAgICAgfQoK
ICAgICAgICBpZiAoJHJldndhbnRlZCBuZSAnJwogICAgICAgICAgICA/ICRyZXYgZXEgJHJldndh
bnRlZAogICAgICAgICAgICA6ICRicmFuY2hwb2ludCBuZSAnJwogICAgICAgICAgICAgID8gJHJl
diBlcSAkYnJhbmNocG9pbnQKICAgICAgICAgICAgICA6IDAKICAgICAgICAgICAgJiYgKCRyZXYg
ZXEgJGhlYWQpKQogICAgICAgIHsgICAgIyBEb24ndCB0aGluayBoZWFkIGlzIG5lZWRlZCBoZXJl
Li4KICAgICAgICAgIG15IEBmaW5mbyA9ICgkcmV2LCAkZGF0ZSwgJGxvZywgJGF1dGhvciwgJGZp
bGVuYW1lLCAka2V5d29yZHN1YnN0KTsKICAgICAgICAgIChteSAkbmFtZSA9ICRmaWxlbmFtZSkg
PX4gcyUvLiolJTsKICAgICAgICAgICRmaWxlaW5mb3skbmFtZX0gPSBbQGZpbmZvXTsKICAgICAg
ICAgICRzdGF0ZSA9ICJkb25lIiBpZiAoJHJldiBlcSAkcmV2d2FudGVkKTsKICAgICAgICB9CiAg
ICAgICAgJHJldiAgPSAnJzsKICAgICAgICAkZGF0ZSA9ICcnOwogICAgICAgICRsb2cgID0gJyc7
CiAgICAgIH0gZWxzaWYgKCRkYXRlIGVxICcnCiAgICAgICAgICAgICAgICYmIG18XmRhdGU6XHMr
KFxkKykvKFxkKykvKFxkKylccysoXGQrKTooXGQrKTooXGQrKTt8KQogICAgICB7CiAgICAgICAg
bXkgJHlyICAgID0gJDE7CiAgICAgICAgJHlyICAgICAgLT0gMTkwMCBpZiAoJHlyID4gMTAwKTsg
IyBEYW1uIDItZGlnaXQgeWVhciByb3V0aW5lcyA6LSkKICAgICAgICAkZGF0ZSAgICAgPSB0aW1l
Z20oJDYsICQ1LCAkNCwgJDMsICQyIC0gMSwgJHlyKTsKICAgICAgICAoJGF1dGhvcikgPSAvYXV0
aG9yOiAoW147XSspLzsKICAgICAgICAkc3RhdGUgICAgPSAnbG9nJzsKICAgICAgICAkbG9nICAg
ICAgPSAnJzsKICAgICAgICBuZXh0OwogICAgICB9IGVsc2lmICgkcmV2IGVxICcnICYmIC9ecmV2
aXNpb24gKFxkKyg/OlwuXGQrKSspLiokLykgewogICAgICAgICRyZXYgPSAkMTsgICAgIyAuKiQg
ZWF0cyB1cCB0aGUgbG9ja2VyKGxvY2tlcnM/KSBpbmZvLCBpZiBhbnkKICAgICAgICBuZXh0Owog
ICAgICB9IGVsc2UgewogICAgICAgICRsb2cgLj0gJF87CiAgICAgIH0KICAgIH0KCiAgICBpZiAo
JF8gPX4gTE9HX0ZJTEVTRVBSKSB7CiAgICAgICRzdGF0ZSA9ICJzdGFydCI7CiAgICAgIG5leHQ7
CiAgICB9CiAgfQoKICBteSAkbGluZXNyZWFkID0gJC4gfHwgMDsKICBjbG9zZSgkZmgpOwoKICBp
ZiAoJGxpbmVzcmVhZCA9PSAwKSB7CiAgICBmYXRhbCgnNTAwIEludGVybmFsIEVycm9yJywKICAg
ICAgICAgICdGYWlsZWQgdG8gc3Bhd24gR05VIHJsb2cgb24gPGVtPiIlcyI8L2VtPi48YnIgLz48
YnIgLz5EaWQgeW91IHNldCB0aGUgPGI+PGNvZGU+QGNvbW1hbmRfcGF0aDwvY29kZT48L2I+IGlu
IHlvdXIgY29uZmlndXJhdGlvbiBmaWxlIGNvcnJlY3RseT8gKEN1cnJlbnRseTogIjxjb2RlPiVz
PC9jb2RlPiIpJywKICAgICAgICAgIGh0bWxxdW90ZShqb2luKCcsICcsIEBmaWxlcykpLCBqb2lu
KCc6JywgQGNvbW1hbmRfcGF0aCkpOwogIH0KCiAgcmV0dXJuIEB1bnJlYWRhYmxlOwp9CgoKc3Vi
IHJlYWRMb2coJDskKQp7CiAgbXkgKCRmdWxsbmFtZSwgJHJldmlzaW9uKSA9IEBfOwogIG15ICgk
c3ltbmFtZXMsICRoZWFkLCAkcmV2LCAkYnIsICRicnAsICRicmFuY2gsICRicmFuY2hyZXYpOwoK
ICB1bmRlZiAlc3ltcmV2OwogIHVuZGVmICVyZXZzeW07CiAgdW5kZWYgQGFsbHJldmlzaW9uczsK
ICB1bmRlZiAlZGF0ZTsKICB1bmRlZiAlYXV0aG9yOwogIHVuZGVmICVzdGF0ZTsKICB1bmRlZiAl
ZGlmZmxpbmVzOwogIHVuZGVmICVsb2c7CiAgJGtleXdvcmRzdWJzdGl0dXRpb24gPSAnJzsKCiAg
bXkgJGZoID0gZG8geyBsb2NhbCAoKkZIKTsgfTsKICBpZiAoIW9wZW4oJGZoLCAiLXwiKSkgeyAg
ICAjIGNoaWxkCiAgICBvcGVuT3V0cHV0RmlsdGVyKCk7CiAgICAkcmV2aXNpb24gPSBkZWZpbmVk
KCRyZXZpc2lvbikgPyAiLXIkcmV2aXNpb24iIDogJyc7CiAgICBpZiAoJHJldmlzaW9uID1+IC9c
Li8pIHsKICAgICAgIyBOb3JtYWwgcmV2aXNpb24sIG5vdCBhIGJyYW5jaC90YWcgbmFtZS4KICAg
ICAgZXhlYygkQ01Ee3Jsb2d9LCAkcmV2aXNpb24sICRmdWxsbmFtZSkgb3IgZXhpdCAtMTsKICAg
IH0gZWxzZSB7CiAgICAgIGV4ZWMoJENNRHtybG9nfSwgJGZ1bGxuYW1lKSBvciBleGl0IC0xOwog
ICAgfQogIH0KCiAgbXkgJGN1cmJyYW5jaCA9IHVuZGVmOwogIHdoaWxlICg8JGZoPikgewogICAg
aWYgKCRzeW1uYW1lcykgewogICAgICBpZiAoL15ccysoW146XSspOlxzKyhbXGRcLl0rKS8pIHsK
ICAgICAgICAkc3ltcmV2eyQxfSA9ICQyOwogICAgICAgIG5leHQ7CiAgICAgIH0gZWxzZSB7CiAg
ICAgICAgJHN5bW5hbWVzID0gMDsKICAgICAgfQogICAgfQogICAgaWYgKC9eaGVhZDpccysoW1xk
XC5dKykvKSB7CiAgICAgICRoZWFkID0gJDE7CiAgICB9IGVsc2lmICgvXmJyYW5jaDpccysoW1xk
XC5dKykvKSB7CiAgICAgICRjdXJicmFuY2ggPSAkMTsKICAgIH0gZWxzaWYgKC9ec3ltYm9saWMg
bmFtZXMvKSB7CiAgICAgICRzeW1uYW1lcyA9IDE7CiAgICB9IGVsc2lmICgvXmtleXdvcmQgc3Vi
c3RpdHV0aW9uOiAoLispJC8pIHsKICAgICAgJGtleXdvcmRzdWJzdGl0dXRpb24gPSAkMTsKICAg
IH0gZWxzaWYgKC9eLS0tLS0vKSB7CiAgICAgIGxhc3Q7CiAgICB9CiAgfQogICgkY3VyYnJhbmNo
ID0gJGhlYWQpID1+IHMvXC5cZCskLy8gaWYgKCFkZWZpbmVkKCRjdXJicmFuY2gpKTsKCiAgIyBl
YWNoIGxvZyBlbnRyeSBpcyBvZiB0aGUgZm9ybToKICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KICAjIHJldmlzaW9uIDMuNy4xLjEKICAjIGRhdGU6IDE5OTUvMTEvMjkgMjI6MTU6NTI7
ICBhdXRob3I6IGZlbm5lcjsgIHN0YXRlOiBFeHA7ICBsaW5lczogKzUgLTMKICAjIGxvZyBpbmZv
CiAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICMgRm9yIGEgbG9ja2VkIHJldmlz
aW9uLCB0aGUgZmlyc3QgbGluZSBhZnRlciB0aGUgc2VwYXJhdG9yIAogICMgYmVjb21lcyBzbXRo
IGxpa2UKICAjIHJldmlzaW9uIDkuMTkgICAgICAgbG9ja2VkIGJ5OiB2YXNzaWxpaTsKCiAgbG9n
ZW50cnk6CgogIHdoaWxlICgkXyAhfiBMT0dfRklMRVNFUFIpIHsKICAgICRfID0gPCRmaD47CiAg
ICBsYXN0IGxvZ2VudHJ5IGlmICghZGVmaW5lZCgkXykpOyAgICAjIEVPRgogICAgaWYgKC9ecmV2
aXNpb24gKFxkKyg/OlwuXGQrKSspLykgewogICAgICAkcmV2ID0gJDE7CiAgICAgIHVuc2hpZnQo
QGFsbHJldmlzaW9ucywgJHJldik7CiAgICB9IGVsc2lmICgkXyA9fiBMT0dfRklMRVNFUFIgfHwg
JF8gPX4gTE9HX1JFVlNFUFIpIHsKICAgICAgbmV4dCBsb2dlbnRyeTsKICAgIH0gZWxzZSB7Cgog
ICAgICAjIFRoZSBybG9nIG91dHB1dCBpcyBzeW50YWN0aWNhbGx5IGFtYmlndW91cy4gIFdlIG11
c3QKICAgICAgIyBoYXZlIGd1ZXNzZWQgd3JvbmcgYWJvdXQgd2hlcmUgdGhlIGVuZCBvZiB0aGUg
bGFzdCBsb2cKICAgICAgIyBtZXNzYWdlIHdhcy4KICAgICAgIyBTaW5jZSB0aGlzIGlzIGxpa2Vs
eSB0byBoYXBwZW4gd2hlbiBwZW9wbGUgcHV0IHJsb2cgb3V0cHV0CiAgICAgICMgaW4gdGhlaXIg
Y29tbWl0IG1lc3NhZ2VzLCBkb24ndCBldmVuIGJvdGhlciBrZWVwaW5nCiAgICAgICMgdGhlc2Ug
bGluZXMgc2luY2Ugd2UgZG9uJ3Qga25vdyB3aGF0IHJldmlzaW9uIHRoZXkgZ28gd2l0aAogICAg
ICAjIGFueSBtb3JlLgogICAgICBuZXh0IGxvZ2VudHJ5OwogICAgfQogICAgJF8gPSA8JGZoPjsK
ICAgIGlmICgKICAgICAgbXxeZGF0ZTpccysoXGQrKS8oXGQrKS8oXGQrKVxzKyhcZCspOihcZCsp
OihcZCspO1xzK2F1dGhvcjpccysoXFMrKTtccytzdGF0ZTpccysoXFMrKTtccysobGluZXM6XHMr
KFswLTlccystXSspKT98CiAgICAgICkKICAgIHsKICAgICAgbXkgJHlyICAgICAgICAgICA9ICQx
OwogICAgICAkeXIgICAgICAgICAgICAgLT0gMTkwMCBpZiAoJHlyID4gMTAwKTsgIyBEYW1uIDIt
ZGlnaXQgeWVhciByb3V0aW5lcyA6LSkKICAgICAgJGRhdGV7JHJldn0gICAgICA9IHRpbWVnbSgk
NiwgJDUsICQ0LCAkMywgJDIgLSAxLCAkeXIpOwogICAgICAkYXV0aG9yeyRyZXZ9ICAgID0gJDc7
CiAgICAgICRzdGF0ZXskcmV2fSAgICAgPSAkODsKICAgICAgJGRpZmZsaW5lc3skcmV2fSA9ICQx
MDsKICAgIH0gZWxzZSB7CiAgICAgIGZhdGFsKCI1MDAgSW50ZXJuYWwgRXJyb3IiLCAnRXJyb3Ig
cGFyc2luZyBSQ1Mgb3V0cHV0OiAlcycsICRfKTsKICAgIH0KCiAgbGluZToKICAgIHdoaWxlICg8
JGZoPikgewogICAgICBuZXh0IGxpbmUgaWYgKC9eYnJhbmNoZXM6XHMvKTsKICAgICAgbGFzdCBs
aW5lIGlmICgkXyA9fiBMT0dfRklMRVNFUFIgfHwgJF8gPX4gTE9HX1JFVlNFUFIpOwogICAgICAk
bG9neyRyZXZ9IC49ICRfOwogICAgfQogIH0KICBjbG9zZSgkZmgpOwoKICBAcmV2b3JkZXIgPSBy
ZXZlcnNlIHNvcnQgeyByZXZjbXAoJGEsICRiKSB9IEBhbGxyZXZpc2lvbnM7CgogICMKICAjIEhF
QUQgaXMgYW4gYXJ0aWZpY2lhbCB0YWcgd2hpY2ggaXMgc2ltcGx5IHRoZSBoaWdoZXN0IHRhZyBu
dW1iZXIgb24gdGhlIG1haW4KICAjIGJyYW5jaCwgdW5sZXNzIHRoZXJlIGlzIGEgYnJhbmNoIHRh
ZyBpbiB0aGUgUkNTIGZpbGUgaW4gd2hpY2ggY2FzZSBpdCdzIHRoZQogICMgaGlnaGVzdCByZXZp
c2lvbiBvbiB0aGF0IGJyYW5jaC4gIEZpbmQgaXQgYnkgbG9va2luZyB0aHJvdWdoIEByZXZvcmRl
cjsgaXQKICAjIGlzIHRoZSBmaXJzdCBjb21taXQgbGlzdGVkIG9uIHRoZSBhcHByb3ByaWF0ZSBi
cmFuY2guCiAgIyBUaGlzIGlzIG5vdCBuZWNjZXNhcnkgdGhlIHNhbWUgcmV2aXNpb24gYXMgbWFy
a2VkIGFzIGhlYWQgaW4gdGhlIFJDUyBmaWxlLgogIG15ICRoZWFkcmV2ID0gJGN1cmJyYW5jaCB8
fCAiMSI7CiAgKCRzeW1yZXZ7TUFJTn0gPSAkaGVhZHJldikgPX4gcy8oXGQrKSQvMC4kMS87Cgog
IGZvcmVhY2ggJHJldiAoQHJldm9yZGVyKSB7CiAgICBpZiAoJHJldiA9fiAvXihcUyopXC5cZCsk
LyAmJiAkaGVhZHJldiBlcSAkMSkgewogICAgICAkc3ltcmV2e0hFQUR9ID0gJHJldjsKICAgICAg
bGFzdDsKICAgIH0KICB9CiAgKCRzeW1yZXZ7SEVBRH0gPSAkaGVhZHJldikgPX4gcy9cLlxkKyQv
LyB1bmxlc3MgZGVmaW5lZCgkc3ltcmV2e0hFQUR9KTsKCiAgIwogICMgTm93IHRoYXQgd2Uga25v
dyBhbGwgb2YgdGhlIHJldmlzaW9uIG51bWJlcnMsIHdlIGNhbiBhc3NvY2lhdGUKICAjIGFic29s
dXRlIHJldmlzaW9uIG51bWJlcnMgd2l0aCBhbGwgb2YgdGhlIHN5bWJvbGljIG5hbWVzLCBhbmQK
ICAjIHBhc3MgdGhlbSB0byB0aGUgZm9ybSBzbyB0aGF0IHRoZSBzYW1lIGFzc29jaWF0aW9uIGRv
ZXNuJ3QgaGF2ZQogICMgdG8gYmUgYnVpbHQgdGhlbi4KICAjCiAgdW5kZWYgQGJyYW5jaG5hbWVz
OwogIHVuZGVmICVicmFuY2hwb2ludDsKICB1bmRlZiAkc2VsOwoKICBmb3JlYWNoIChyZXZlcnNl
IHNvcnQga2V5cyAlc3ltcmV2KSB7CiAgICAkcmV2ID0gJHN5bXJldnskX307CiAgICBpZiAoJHJl
diA9fiAvXigoLiopXC4pP1xiMFwuKFxkKykkLykgewogICAgICBwdXNoIChAYnJhbmNobmFtZXMs
ICRfKTsKCiAgICAgICMKICAgICAgIyBBIHJldmlzaW9uIG51bWJlciBvZiBBLkIuMC5EIHJlYWxs
eSB0cmFuc2xhdGVzIGludG8KICAgICAgIyAidGhlIGhpZ2hlc3QgY3VycmVudCByZXZpc2lvbiBv
biBicmFuY2ggQS5CLkQiLgogICAgICAjCiAgICAgICMgSWYgdGhlcmUgaXMgbm8gYnJhbmNoIEEu
Qi5ELCB0aGVuIGl0IHRyYW5zbGF0ZXMgaW50bwogICAgICAjIHRoZSBoZWFkIEEuQiAuCiAgICAg
ICMKICAgICAgIyBUaGlzIHJlYXNvbmluZyBhbHNvIGFwcGxpZXMgdG8gdGhlIG1haW4gYnJhbmNo
IEEuQiwKICAgICAgIyB3aXRoIHRoZSBicmFuY2ggbnVtYmVyIDAuQSwgd2l0aCB0aGUgZXhjZXB0
aW9uIHRoYXQKICAgICAgIyBpdCBoYXMgbm8gaGVhZCB0byB0cmFuc2xhdGUgdG8gaWYgdGhlcmUg
aXMgbm90aGluZyBvbgogICAgICAjIHRoZSBicmFuY2gsIGJ1dCBJIGd1ZXNzIHRoaXMgY2FuIG5l
dmVyIGhhcHBlbj8KICAgICAgIwogICAgICAjICh0aGUgY29kZSBiZWxvdyBncmFjZWZ1bGx5IGZv
cmdldHMgYWJvdXQgdGhlIGJyYW5jaAogICAgICAjIGlmIGl0IHNob3VsZCBoYXBwZW4pCiAgICAg
ICMKICAgICAgJGhlYWQgPSBkZWZpbmVkKCQyKSA/ICQyIDogIiI7CiAgICAgICRicmFuY2ggPSAk
MzsKICAgICAgJGJyYW5jaHJldiA9ICRoZWFkIC4gKCRoZWFkIG5lICIiID8gIi4iIDogIiIpIC4g
JGJyYW5jaDsKICAgICAgJHJldiA9ICRoZWFkOwoKICAgICAgbXkgJHJlZ2V4ID0gJ14nIC4gcXVv
dGVtZXRhKCRicmFuY2hyZXYpIC4gJ1xiJzsKICAgICAgJHJlZ2V4ID0gcXIvJHJlZ2V4LzsKCiAg
ICAgIGZvcmVhY2ggbXkgJHIgKEByZXZvcmRlcikgewogICAgICAgIGlmICgkciA9fiAkcmVnZXgp
IHsKICAgICAgICAgICRyZXYgPSAkYnJhbmNocmV2OwogICAgICAgICAgbGFzdDsKICAgICAgICB9
CiAgICAgIH0KICAgICAgbmV4dCBpZiAoJHJldiBlcSAiIik7CgogICAgICBpZiAoJHJldiBuZSAk
aGVhZCAmJiAkaGVhZCBuZSAiIikgewogICAgICAgICRicmFuY2hwb2ludHskaGVhZH0gLj0gJywg
JyBpZiAoJGJyYW5jaHBvaW50eyRoZWFkfSk7CiAgICAgICAgJGJyYW5jaHBvaW50eyRoZWFkfSAu
PSAkXzsKICAgICAgfQogICAgfQogICAgJHJldnN5bXskcmV2fSAuPSAiLCAiIGlmICgkcmV2c3lt
eyRyZXZ9KTsKICAgICRyZXZzeW17JHJldn0gLj0gJF87CiAgICAkc2VsIC49IHNwcmludGYoIjxv
cHRpb24gdmFsdWU9XCIlczolc1wiPiVzPC9vcHRpb24+XG4iLAogICAgICAgICAgICAgICAgICAg
IGh0bWxxdW90ZSgkcmV2KSwgKGh0bWxxdW90ZSgkXykpIHggMik7CiAgfQoKICBteSAoJG9ubHlv
bmJyYW5jaCwgJG9ubHlicmFuY2hwb2ludCk7CiAgaWYgKCRvbmx5b25icmFuY2ggPSAkaW5wdXR7
b25seV93aXRoX3RhZ30pIHsKICAgICRvbmx5b25icmFuY2ggPSAkc3ltcmV2eyRvbmx5b25icmFu
Y2h9OwogICAgaWYgKCRvbmx5b25icmFuY2ggJiYgJG9ubHlvbmJyYW5jaCA9fiBzL1xiMFwuLy8p
IHsKICAgICAgKCRvbmx5YnJhbmNocG9pbnQgPSAkb25seW9uYnJhbmNoKSA9fiBzL1wuXGQrJC8v
OwogICAgfSBlbHNlIHsKICAgICAgJG9ubHlicmFuY2hwb2ludCA9ICRvbmx5b25icmFuY2g7CiAg
ICB9CgogICAgaWYgKCFkZWZpbmVkKCRvbmx5b25icmFuY2gpIHx8ICRvbmx5YnJhbmNocG9pbnQg
ZXEgIiIpIHsKICAgICAgZmF0YWwoIjQwNCBUYWcgbm90IGZvdW5kIiwgJ1RhZyAiPGNvZGU+JXM8
L2NvZGU+IiBpcyBub3QgZGVmaW5lZC4nLAogICAgICAgICAgICAkaW5wdXR7b25seV93aXRoX3Rh
Z30pOwogICAgfQogIH0KCiAgdW5kZWYgQHJldmlzaW9uczsKCiAgZm9yZWFjaCAoQGFsbHJldmlz
aW9ucykgewogICAgKCRiciAgPSAkXykgID1+IHMvXC5cZCskLy87CiAgICAoJGJycCA9ICRicikg
PX4gcy9cLlxkKyQvLzsKICAgIG5leHQgaWYgKCRvbmx5b25icmFuY2gKICAgICAgICAgICAgICYm
ICRiciBuZSAkb25seW9uYnJhbmNoCiAgICAgICAgICAgICAmJiAkXyAgbmUgJG9ubHlicmFuY2hw
b2ludCk7CiAgICB1bnNoaWZ0KEByZXZpc2lvbnMsICRfKTsKICB9CgogIGlmICgkbG9nc29ydCBl
cSAiZGF0ZSIpIHsKCiAgICAjIFNvcnQgdGhlIHJldmlzaW9ucyBpbiBjb21taXQgb3JkZXIgYW4g
c2Vjb25kYXJ5IHNvcnQgb24gcmV2aXNpb24KICAgICMgKHNlY29uZGFyeSBzb3J0IG5lZWRlZCBm
b3IgaW1wb3J0ZWQgc291cmNlcywgb3IgdGhlIGZpcnN0IG1haW4KICAgICMgcmV2aXNpb24gZ2V0
cyBiZWZvcmUgdGhlIHNhbWUgcmV2aXNpb24gb24gdGhlIDEuMS4xIGJyYW5jaCkKICAgIEByZXZk
aXNwbGF5b3JkZXIgPQogICAgICBzb3J0IHsgJGRhdGV7JGJ9IDw9PiAkZGF0ZXskYX0gfHwgLXJl
dmNtcCgkYSwgJGIpIH0gQHJldmlzaW9uczsKICB9IGVsc2lmICgkbG9nc29ydCBlcSAicmV2Iikg
ewoKICAgICMgU29ydCB0aGUgcmV2aXNpb25zIGluIHJldmlzaW9uIG9yZGVyLCBoaWdoZXN0IGZp
cnN0CiAgICBAcmV2ZGlzcGxheW9yZGVyID0gcmV2ZXJzZSBzb3J0IHsgcmV2Y21wKCRhLCAkYikg
fSBAcmV2aXNpb25zOwogIH0gZWxzZSB7CgogICAgIyBObyBzb3J0aW5nLiBQcmVzZW50IGluIHRo
ZSBzYW1lIG9yZGVyIGFzIHJsb2cgLyBjdnMgbG9nCiAgICBAcmV2ZGlzcGxheW9yZGVyID0gQHJl
dmlzaW9uczsKICB9CgogIHJldHVybiAkY3VyYnJhbmNoOwp9CgoKc3ViIGdldERpZmZMaW5rcygk
JCQpCnsKICBteSAoJHVybCwgJG1pbWV0eXBlLCAkaXNiaW4pID0gQF87CgogIG15IEBsaW5rcyA9
ICgpOwogIGlmICghJGlzYmluKSB7ICMgT2ZmZXIgb3JkaW5hcnkgZGlmZiBvbmx5IGZvciBub24t
YmluYXJ5IGZpbGVzLgogICAgcHVzaChAbGlua3MsICZsaW5rKCdwcmVmZXJyZWQnLCAkdXJsKSk7
CiAgICBmb3IgbXkgJGRpZmZ0eXBlICgkRElGRlRZUEVTeyRkZWZhdWx0RGlmZlR5cGV9e2NvbG9y
ZWR9ID8gcXcodSkgOiBxdyhoKSkgewogICAgICBteSAkZiA9ICRkaWZmdHlwZSBlcSAkZGVmYXVs
dERpZmZUeXBlID8gJycgOiAkZGlmZnR5cGU7CiAgICAgIHB1c2goQGxpbmtzLAogICAgICAgICAg
ICZsaW5rKGh0bWxxdW90ZShsYygkRElGRlRZUEVTeyRkaWZmdHlwZX17ZGVzY3J9KSksICIkdXJs
O2Y9JGYiKSk7CiAgICB9CiAgfQogIGlmIChteSAkZXh0ZGlmZnMgPSAkRElGRl9DT01NQU5EU3ts
YygkbWltZXR5cGUpfSkgewogICAgZm9yIG15ICRpICgwIC4uIHNjYWxhcihAJGV4dGRpZmZzKS0x
KSB7CiAgICAgIG15ICRleHRkaWZmID0gJGV4dGRpZmZzLT5bJGldOwogICAgICBwdXNoKEBsaW5r
cywgJmxpbmsoaHRtbHF1b3RlKCRleHRkaWZmLT57bmFtZX0pLCAiJHVybDtmPWV4dCRpIikpCiAg
ICAgICAgaWYgKCRleHRkaWZmLT57Y21kfSAmJiAkZXh0ZGlmZi0+e25hbWV9KTsKICAgIH0KICB9
CiAgcmV0dXJuIEBsaW5rczsKfQoKCnN1YiBwcmludExvZygkJCQ7JCQpCnsKICAjIGlubG9ndmll
dzogMSBpZiBpbiBsb2cgdmlldywgb3RoZXJ3aXNlIGluIG1hcmt1cCB2aWV3LgogICgkXywgbXkg
JG1pbWV0eXBlLCBteSAkaXNiaW4sIG15ICRpbmxvZ3ZpZXcsIG15ICRpc1NlbGVjdGVkKSA9IEBf
OwogIChteSAkYnIgID0gJF8pICA9fiBzL1wuXGQrJC8vOwogIChteSAkYnJwID0gJGJyKSA9fiBz
L1wuP1xkKyQvLzsKCiAgcHJpbnQgIjxhIG5hbWU9XCJyZXYkX1wiPjwvYT4iOwogIGlmIChkZWZp
bmVkKCRyZXZzeW17JF99KSkgewogICAgZm9yZWFjaCBteSAkc3ltIChzcGxpdCgiLCAiLCAkcmV2
c3lteyRffSkpIHsKICAgICAgcHJpbnQgJzxhIG5hbWU9IicsIGh0bWxxdW90ZSgkc3ltKSwgJyI+
PC9hPic7CiAgICB9CiAgfQogIGlmICgkcmV2c3lteyRicn0gJiYgIWRlZmluZWQoJG5hbWVwcmlu
dGVkeyRicn0pKSB7CiAgICBmb3JlYWNoIG15ICRzeW0gKHNwbGl0KCIsICIsICRyZXZzeW17JGJy
fSkpIHsKICAgICAgcHJpbnQgJzxhIG5hbWU9IicsIGh0bWxxdW90ZSgkc3ltKSwgJyI+PC9hPic7
CiAgICB9CiAgICAkbmFtZXByaW50ZWR7JGJyfSA9IDE7CiAgfQoKICBwcmludCAiXG4gUmV2aXNp
b24gPGI+JF88L2I+IjsKICBpZiAoL14xXC4xXC4xXC5cZCskLykgewogICAgcHJpbnQgIiA8aT4o
dmVuZG9yIGJyYW5jaCk8L2k+IjsKICB9CgogIChteSAkZmlsZW5hbWUgPSAkd2hlcmUpID1+IHN8
Xi4qL3x8OwogIG15ICRmaWxldXJsICAgPSB1cmlfZXNjYXBlKCRmaWxlbmFtZSk7CiAgdW5kZWYg
JGZpbGVuYW1lOwoKICBteSAkaXNEZWFkID0gKCRzdGF0ZXskX30gZXEgJ2RlYWQnKTsKICBpZiAo
ISRpc0RlYWQpIHsKCiAgICBwcmludCAnOiAnLCBkb3dubG9hZF9saW5rKCRmaWxldXJsLCAkXywg
J2Rvd25sb2FkJywgJG1pbWV0eXBlKTsKCiAgICBteSBAdmxpbmtzID0gKCk7CiAgICBwdXNoKEB2
bGlua3MsIGRpc3BsYXlfbGluaygkZmlsZXVybCwgJF8sICd0ZXh0JywgJ3RleHQvcGxhaW4nKSkK
ICAgICAgdW5sZXNzICRpc2JpbjsKICAgIHB1c2goQHZsaW5rcywgZGlzcGxheV9saW5rKCRmaWxl
dXJsLCAkXywgJ21hcmt1cCcsICd0ZXh0L3gtY3Zzd2ViLW1hcmt1cCcpKQogICAgICBpZiAoJGFs
bG93X21hcmt1cCAmJiAkaW5sb2d2aWV3ICYmICghJGlzYmluIHx8IHZpZXdhYmxlKCRtaW1ldHlw
ZSkpKTsKICAgIGlmICghJGlzYmluICYmICRhbGxvd19hbm5vdGF0ZSkgewogICAgICBwdXNoKEB2
bGlua3MsCiAgICAgICAgICAgJmxpbmsoJ2Fubm90YXRlZCcsCiAgICAgICAgICAgICAgICAgc3By
aW50ZignJXM/YW5ub3RhdGU9JXMlcycsICRmaWxldXJsLCAkXywgJGJhcmVxdWVyeSkpKTsKICAg
IH0KICAgIHByaW50ICcgLSB2aWV3OiAnLCBqb2luKCcsICcsIEB2bGlua3MpIGlmIEB2bGlua3M7
CiAgICB1bmRlZiBAdmxpbmtzOwoKICAgIGlmICghJGlzYmluICYmICRhbGxvd192ZXJzaW9uX3Nl
bGVjdCkgewogICAgICBwcmludCAnIC0gJzsKICAgICAgaWYgKCRpc1NlbGVjdGVkKSB7CiAgICAg
ICAgcHJpbnQgJzxiPltzZWxlY3RlZCZuYnNwO2ZvciZuYnNwO2RpZmZzXTwvYj4nOwogICAgICB9
IGVsc2UgewogICAgICAgIHByaW50ICZsaW5rKCdzZWxlY3QmbmJzcDtmb3ImbmJzcDtkaWZmcycs
CiAgICAgICAgICAgICAgICAgICAgc3ByaW50ZignJXM/cjE9JXMlcyNyZXYlcycsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAkZmlsZXVybCwgJF8sICRiYXJlcXVlcnksICRfKSk7CiAgICAg
IH0KICAgIH0KICAgIHByaW50ICcgLSAnLCBncmFwaF9saW5rKCcnLCAncmV2aXNpb24gZ3JhcGgn
KQogICAgICBpZiAoISRpbmxvZ3ZpZXcgJiYgJGFsbG93X2N2c2dyYXBoKTsKICB9CiAgcHJpbnQg
IjxiciAvPlxuIjsKCiAgcHJpbnQgJzxpPic7CiAgaWYgKGRlZmluZWQgQG15dHopIHsKICAgIG15
ICgkZXN0KSA9ICRteXR6Wyhsb2NhbHRpbWUoJGRhdGV7JF99KSlbOF1dOwogICAgcHJpbnQgc2Nh
bGFyIGxvY2FsdGltZSgkZGF0ZXskX30pLCAiICRlc3Q8L2k+ICgiOwogIH0gZWxzZSB7CiAgICBw
cmludCBzY2FsYXIgZ210aW1lKCRkYXRleyRffSksICIgVVRDPC9pPiAoIjsKICB9CiAgcHJpbnQg
cmVhZGFibGVUaW1lKHRpbWUoKSAtICRkYXRleyRffSwgMSksICcgYWdvKSc7CiAgcHJpbnQgJyBi
eSA8aT4nLCBodG1scXVvdGUoJGF1dGhvcnskX30pLCAiPC9pPjxiciAvPlxuIjsKCiAgcHJpbnRm
KCJCcmFuY2hlczogJXM8YnIgLz5cbiIsIGxpbmtfdGFncygkcmV2c3lteyRicn0pKSBpZiAkcmV2
c3lteyRicn07CiAgcHJpbnRmKCJDVlMgdGFnczogJXM8YnIgLz5cbiIsIGxpbmtfdGFncygkcmV2
c3lteyRffSkpICBpZiAkcmV2c3lteyRffTsKICBwcmludGYoIkJyYW5jaCBwb2ludCBmb3I6ICVz
PGJyIC8+XG4iLCBsaW5rX3RhZ3MoJGJyYW5jaHBvaW50eyRffSkpCiAgICBpZiAkYnJhbmNocG9p
bnR7JF99OwoKICAjIEZpbmQgdGhlIHByZXZpb3VzIHJldmlzaW9uCiAgbXkgJHByZXY7CiAgbXkg
QHByZXZyZXYgPSBzcGxpdCgvXC4vLCAkXyk7CiAgZG8gewogICAgaWYgKC0tJHByZXZyZXZbJCNw
cmV2cmV2XSA8PSAwKSB7CgogICAgICAjIElmIGl0IHdhcyBYLlkuWi4xLCBqdXN0IG1ha2UgaXQg
WC5ZCiAgICAgIHBvcCAoQHByZXZyZXYpOwogICAgICBwb3AgKEBwcmV2cmV2KTsKICAgIH0KICAg
ICRwcmV2ID0gam9pbiAoIi4iLCBAcHJldnJldik7CiAgfSB1bnRpbCAoZGVmaW5lZCgkZGF0ZXsk
cHJldn0pIHx8ICRwcmV2IGVxICIiKTsKCiAgaWYgKCRpc0RlYWQpIHsKICAgIHByaW50ICI8Yj48
aT5GSUxFIFJFTU9WRUQ8L2k+PC9iPjxiciAvPlxuIjsKICB9IGVsc2UgewogICAgbXkgJWRpZmZy
ZXYgPSAoKTsKICAgICRkaWZmcmV2eyRffSA9IDE7CiAgICAkZGlmZnJldnsiIn0gPSAxOwogICAg
bXkgJGRpZmYgPSAnRGlmZiB0bzonOwogICAgbXkgJHByaW50ZWQgPSAwOwoKICAgICMKICAgICMg
T2ZmZXIgZGlmZiB0byBwcmV2aW91cyByZXZpc2lvbgogICAgaWYgKCRwcmV2KSB7CiAgICAgICRk
aWZmcmV2eyRwcmV2fSA9IDE7CiAgICAgIG15ICR1cmwgPQogICAgICAgIHNwcmludGYoJyVzLmRp
ZmY/cjE9JXM7cjI9JXMlcycsICRmaWxldXJsLCAkcHJldiwgJF8sICRiYXJlcXVlcnkpOwogICAg
ICBpZiAobXkgQGRsaW5rcyA9IGdldERpZmZMaW5rcygkdXJsLCAkbWltZXR5cGUsICRpc2Jpbikp
IHsKICAgICAgICBwcmludCAkZGlmZiwgJyBwcmV2aW91cyAnLCAkcHJldiwgJzogJywgam9pbign
LCAnLCBAZGxpbmtzKTsKICAgICAgICAkZGlmZiA9ICc7JzsgJHByaW50ZWQgPSAxOwogICAgICB9
CiAgICB9CgogICAgIwogICAgIyBQbHVzLCBpZiBpdCdzIG9uIGEgYnJhbmNoLCBhbmQgaXQncyBu
b3QgYSB2ZW5kb3IgYnJhbmNoLAogICAgIyBvZmZlciBhIGRpZmYgd2l0aCB0aGUgYnJhbmNoIHBv
aW50LgogICAgaWYgKCRyZXZzeW17JGJycH0KICAgICAgJiYgIS9eMVwuMVwuMVwuXGQrJC8KICAg
ICAgJiYgIWRlZmluZWQoJGRpZmZyZXZ7JGJycH0pKQogICAgewogICAgICBteSAkdXJsID0KICAg
ICAgICBzcHJpbnRmKCclcy5kaWZmP3IxPSVzO3IyPSVzJXMnLCAkZmlsZXVybCwgJGJycCwgJF8s
ICRiYXJlcXVlcnkpOwogICAgICBpZiAobXkgQGRsaW5rcyA9IGdldERpZmZMaW5rcygkdXJsLCAk
bWltZXR5cGUsICRpc2JpbikpIHsKICAgICAgICBwcmludCAkZGlmZiwgJyBicmFuY2hwb2ludCAn
LCAkYnJwLCAnOiAnLCBqb2luKCcsICcsIEBkbGlua3MpOwogICAgICAgICRkaWZmID0gJzsnOyAk
cHJpbnRlZCA9IDE7CiAgICAgIH0KICAgIH0KCiAgICAjCiAgICAjIFBsdXMsIGlmIGl0J3Mgb24g
YSBicmFuY2gsIGFuZCBpdCdzIG5vdCBhIHZlbmRvciBicmFuY2gsCiAgICAjIG9mZmVyIHRvIGRp
ZmYgd2l0aCB0aGUgbmV4dCByZXZpc2lvbiBvZiB0aGUgaGlnaGVyIGJyYW5jaC4KICAgICMgKGUu
Zy4gY2hhbmdlIGdldHMgY29tbWl0dGVkIGFuZCB0aGVuIGJyb3VnaHQKICAgICMgb3ZlciB0byAt
c3RhYmxlKQogICAgaWYgKC9eXGQrXC5cZCtcLlxkKy8gJiYgIS9eMVwuMVwuMVwuXGQrJC8pIHsK
ICAgICAgbXkgKCRpLCAkbmV4dG1haW4pOwoKICAgICAgZm9yICgkaSA9IDA7ICRpIDwgJCNyZXZv
cmRlciAmJiAkcmV2b3JkZXJbJGldIG5lICRfOyAkaSsrKSB7CiAgICAgIH0KICAgICAgbXkgQHRt
cDIgPSBzcGxpdCgvXC4vLCAkXyk7CiAgICAgIGZvciAoJG5leHRtYWluID0gIiI7ICRpID4gMDsg
JGktLSkgewogICAgICAgIG15ICRuZXh0ID0gJHJldm9yZGVyWyRpIC0gMV07CiAgICAgICAgbXkg
QHRtcDEgPSBzcGxpdCgvXC4vLCAkbmV4dCk7CgogICAgICAgIGlmIChAdG1wMSA8IEB0bXAyKSB7
CiAgICAgICAgICAkbmV4dG1haW4gPSAkbmV4dDsKICAgICAgICAgIGxhc3Q7CiAgICAgICAgfQoK
ICAgICAgICAjIE9ubHkgdGhlIGhpZ2hlc3QgdmVyc2lvbiBvbiBhIGJyYW5jaCBzaG91bGQgaGF2
ZQogICAgICAgICMgYSBkaWZmIGZvciB0aGUgIm5leHQgTUFJTiIuCiAgICAgICAgbGFzdAogICAg
ICAgICAgaWYgKEB0bXAxIC0gMSA8PSBAdG1wMgogICAgICAgICAgJiYgam9pbiAoIi4iLCBAdG1w
MVswIC4uICQjdG1wMSAtIDFdKSBlcQogICAgICAgICAgam9pbiAoIi4iLCBAdG1wMlswIC4uICQj
dG1wMSAtIDFdKSk7CiAgICAgIH0KCiAgICAgIGlmICghZGVmaW5lZCgkZGlmZnJldnskbmV4dG1h
aW59KSkgewogICAgICAgICRkaWZmcmV2eyRuZXh0bWFpbn0gPSAxOwogICAgICAgIG15ICR1cmwg
PSBzcHJpbnRmKCclcy5kaWZmP3IxPSVzO3IyPSVzJXMnLAogICAgICAgICAgJGZpbGV1cmwsICRu
ZXh0bWFpbiwgJF8sICRiYXJlcXVlcnkpOwogICAgICAgIGlmIChteSBAZGxpbmtzID0gZ2V0RGlm
ZkxpbmtzKCR1cmwsICRtaW1ldHlwZSwgJGlzYmluKSkgewogICAgICAgICAgcHJpbnQgJGRpZmYs
ICcgbmV4dCBNQUlOICcsICRuZXh0bWFpbiwgJzogJywgam9pbignLCAnLCBAZGxpbmtzKTsKICAg
ICAgICAgICRkaWZmID0gJzsnOyAkcHJpbnRlZCA9IDE7CiAgICAgICAgfQogICAgICB9CiAgICB9
CgogICAgIyBQbHVzIGlmIHVzZXIgaGFzIHNlbGVjdGVkIG9ubHkgcjEsIHRoZW4gcHJlc2VudCBh
IGxpbmsKICAgICMgdG8gbWFrZSBhIGRpZmYgdG8gdGhhdCByZXZpc2lvbgogICAgaWYgKGRlZmlu
ZWQoJGlucHV0e3IxfSkgJiYgIWRlZmluZWQoJGRpZmZyZXZ7JGlucHV0e3IxfX0pKSB7CiAgICAg
ICRkaWZmcmV2eyRpbnB1dHtyMX19ID0gMTsKICAgICAgbXkgJHVybCA9IHNwcmludGYoJyVzLmRp
ZmY/cjE9JXM7cjI9JXMlcycsCiAgICAgICAgJGZpbGV1cmwsICRpbnB1dHtyMX0sICRfLCAkYmFy
ZXF1ZXJ5KTsKICAgICAgaWYgKG15IEBkbGlua3MgPSBnZXREaWZmTGlua3MoJHVybCwgJG1pbWV0
eXBlLCAkaXNiaW4pKSB7CiAgICAgICAgcHJpbnQgJGRpZmYsICcgc2VsZWN0ZWQgJywgJGlucHV0
e3IxfSwgJzogJywgam9pbignLCAnLCBAZGxpbmtzKTsKICAgICAgICAkZGlmZiA9ICc7JzsgJHBy
aW50ZWQgPSAxOwogICAgICB9CiAgICB9CgogICAgcHJpbnQgIjxiciAvPlxuIiBpZiAkcHJpbnRl
ZDsKICB9CgogIGlmICgkcHJldiBuZSAiIiAmJiAkZGlmZmxpbmVzeyRffSkgewogICAgcHJpbnRm
ICJDaGFuZ2VzIHNpbmNlIHJldmlzaW9uICVzOiAlcyBsaW5lczxiciAvPlxuIiwKICAgICAgaHRt
bHF1b3RlKCRwcmV2KSwgaHRtbHF1b3RlKCRkaWZmbGluZXN7JF99KTsKICB9CgogIHByaW50ICI8
cHJlIGNsYXNzPVwibG9nXCI+XG4iOwogIHByaW50ICZodG1saWZ5KCRsb2d7JF99LCAkYWxsb3df
bG9nX2V4dHJhKTsKICBwcmludCAiPC9wcmU+XG4iOwp9CgoKIwojIEdlbmVyYXRlcyB0aGUgSFRN
TCB2aWV3IGZvciBDdnNHcmFwaC4KIwpzdWIgZG9HcmFwaFZpZXcoKQp7CiAgKG15ICRwYXRobmFt
ZSA9ICR3aGVyZSkgPX4gc3xbXi9dKiR8fDsKICAobXkgJGZpbGVuYW1lID0gJHdoZXJlKSA9fiBz
fF4uKi98fDsKCiAgbmF2aWdhdGVIZWFkZXIoJHNjcmlwdHdoZXJlLCAkcGF0aG5hbWUsICRmaWxl
bmFtZSwgdW5kZWYsICdncmFwaCcpOwoKICBteSAkdGl0bGUgPSAnUmV2aXNpb24gZ3JhcGggb2Yg
JyAuIGh0bWxxdW90ZSgkcGF0aG5hbWUgLiAkZmlsZW5hbWUpOwogIG15ICRtYXBuYW1lID0gJ0N2
c0dyYXBoTWFwJzsKCiAgcHJpbnRmKDw8RU9GLCAkdGl0bGUsICRtYXBuYW1lLCAkY3ZzdHJlZSwg
JHRpdGxlKTsKPGgzIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXIiPiVzPC9oMz4KPGRpdiBzdHls
ZT0idGV4dC1hbGlnbjogY2VudGVyIj48aW1nIGJvcmRlcj0iMCIgdXNlbWFwPSIjJXMiIHNyYz0i
P2N2c3Jvb3Q9JXM7Z3JhcGg9MTttYWtlaW1hZ2U9MSIgYWx0PSIlcyIgLz4KRU9GCgogICMgUmVt
b3ZlIGFueSBwcmUtZXhpc3RpbmcgdGFnL2JyYW5jaCBuYW1lcyBmcm9tIGJyYW5jaCBsaW5rcy4K
ICAobXkgJG5vdGFnX3F1ZXJ5ID0gJGJhcmVxdWVyeSkgPX4gcy87K29ubHlfd2l0aF90YWc9Lio/
KD89O3wkKS8vZzsKCiAgbXkgQGdyYXBoX2NtZCA9CiAgICAoJENNRHtjdnNncmFwaH0sCiAgICAg
Jy1yJywgJGN2c3Jvb3QsCiAgICAgJy1tJywgJHBhdGhuYW1lLAogICAgICctaScsCiAgICAgJy1N
JywgJG1hcG5hbWUsCiAgICAgJy14JywgJ3gnLAogICAgICItT21hcF9icmFuY2hfaHJlZj1cImhy
ZWY9XFxcIi4vP29ubHlfd2l0aF90YWc9JSgldCUpJG5vdGFnX3F1ZXJ5XFxcIlwiIiwKICAgICAi
LU9tYXBfcmV2X2hyZWY9XCJocmVmPVxcXCI/cmV2PSUoJVIlKSRiYXJlcXVlcnlcXFwiXCIiLAog
ICAgICItT21hcF9kaWZmX2hyZWY9XCJocmVmPVxcXCIlKCVGJSkuZGlmZiIgLgogICAgICI/cjE9
JSglUCUpO3IyPSUoJVIlKSRiYXJlcXVlcnlcXFwiXCIiLAogICAgICk7CiAgcHVzaChAZ3JhcGhf
Y21kLCAnLWMnLCAkY3ZzZ3JhcGhfY29uZmlnKSBpZiAkY3ZzZ3JhcGhfY29uZmlnOwogIHB1c2go
QGdyYXBoX2NtZCwgJGZpbGVuYW1lIC4gJyx2Jyk7CgogIGxvY2FsICpDVlNHUkFQSF9PVVQ7CiAg
bXkgKCRoLCAkZXJyKSA9CiAgICBzdGFydHByb2MoXEBncmFwaF9jbWQsIFwiIiwgJz5waXBlJywg
XCpDVlNHUkFQSF9PVVQpOwogIGZhdGFsKCc1MDAgSW50ZXJuYWwgRXJyb3InLCAkZXJyKSB1bmxl
c3MgJGg7CgogICMgQnJvd3NlciBjb21wYXRpYmlsaXR5IGtsdWRnZTogbWFueSBicm93c2VycyBk
byBub3Qgc3VwcG9ydCBjbGllbnQgc2lkZQogICMgaW1hZ2UgbWFwcyB3aGVyZSB0aGUgPG1hcD4g
ZWxlbWVudCBjb250YWlucyBvbmx5IHRoZSBpZCBhdHRyaWJ1dGUuICBMZXQncwogICMgYWRkIHRo
ZSBjb3JyZXNwb25kaW5nIG5hbWUgYXR0cmlidXRlIHRvIGl0IG9uIHRoZSBmbHkuCiAgd2hpbGUg
KDxDVlNHUkFQSF9PVVQ+KSB7CiAgICBzLyg8bWFwXHMraWQ9IihbXiJdKykiKVxzKj4vJDEgbmFt
ZT0iJDIiPi87CiAgICBwcmludDsKICB9CgogICRoLT5maW5pc2goKTsKICBwcmludCAiPC9kaXY+
XG4iOwoKICBodG1sX2Zvb3RlcigpOwp9CgoKIwojIEdlbmVyYXRlcyBhIGdyYXBoIHVzaW5nIEN2
c0dyYXBoLgojCnN1YiBkb0dyYXBoKCkKewogIChteSAkcGF0aG5hbWUgPSAkd2hlcmUpID1+IHN8
W14vXSokfHw7CiAgKG15ICRmaWxlbmFtZSA9ICR3aGVyZSkgPX4gc3xeLiovfHw7CgogIGh0dHBf
aGVhZGVyKCdpbWFnZS9wbmcnKTsKCiAgbXkgQGdyYXBoX2NtZCA9ICgkQ01Ee2N2c2dyYXBofSwg
Jy1yJywgJGN2c3Jvb3QsICctbScsICRwYXRobmFtZSk7CiAgcHVzaChAZ3JhcGhfY21kLCAnLWMn
LCAkY3ZzZ3JhcGhfY29uZmlnKSBpZiAkY3ZzZ3JhcGhfY29uZmlnOwogIHB1c2goQGdyYXBoX2Nt
ZCwgJGZpbGVuYW1lIC4gJyx2Jyk7CgogIGxvY2FsICpDVlNHUkFQSF9PVVQ7CiAgbXkgKCRoLCAk
ZXJyKSA9CiAgICBzdGFydHByb2MoXEBncmFwaF9jbWQsIFwiIiwgJz5waXBlJywgXCpDVlNHUkFQ
SF9PVVQpOwogIGZhdGFsKCc1MDAgSW50ZXJuYWwgRXJyb3InLCAkZXJyKSB1bmxlc3MgJGg7CiAg
ewogICAgbG9jYWwgJC8gPSB1bmRlZjsKICAgIGJpbm1vZGUoXCpTVERPVVQpOwogICAgcHJpbnQg
PENWU0dSQVBIX09VVD47CiAgfQogICRoLT5maW5pc2goKTsKfQoKCnN1YiBkb0xvZygkKQp7CiAg
bXkgKCRmdWxsbmFtZSkgPSBAXzsKCiAgbXkgJGN1cmJyYW5jaCA9IHJlYWRMb2coJGZ1bGxuYW1l
KTsKCiAgaHRtbF9oZWFkZXIoIkNWUyBsb2cgZm9yICR3aGVyZSIpOwoKICBteSAkdXB3aGVyZSA9
ICR3aGVyZTsKICAobXkgJGZpbGVuYW1lID0gJHdoZXJlKSA9fiBzfF4uKi98fDsKICBteSAkYmFj
a3VybCA9ICIuLyRxdWVyeSMiIC4gdXJpX2VzY2FwZSgkZmlsZW5hbWUpOwogIGlmICgkd2hlcmUg
PX4gbXxeKC4qPykoKD88PS8pQXR0aWMvKT9bXi9dKyR8KSB7CiAgICAkdXB3aGVyZSA9ICQxOwog
ICAgJGJhY2t1cmwgPSAiLiRiYWNrdXJsIiBpZiAkMjsgIyBza2lwIG92ZXIgQXR0aWMKICB9Cgog
IG15ICRpc2JpbiA9ICRrZXl3b3Jkc3Vic3RpdHV0aW9uID1+IC9iLzsKICBteSAkbWltZXR5cGUg
PSBnZXRNaW1lVHlwZSgkZmlsZW5hbWUsICRpc2Jpbik7CgogIHByaW50ICI8cD5cbiAiOwogIHBy
aW50ICZsaW5rKCRiYWNraWNvbiwgJGJhY2t1cmwpLCAiIDxiPlVwIHRvICIsCiAgICAmY2xpY2th
YmxlUGF0aCgkdXB3aGVyZSwgMSksICI8L2I+XG48L3A+XG4iOwogIHByaW50ICI8cD5cbiAiOwog
IHByaW50ICZsaW5rKCdSZXF1ZXN0IGRpZmYgYmV0d2VlbiBhcmJpdHJhcnkgcmV2aXNpb25zJywg
JyNkaWZmJyk7CiAgcHJpbnQgJyAtICcsICZncmFwaF9saW5rKCcnLCAnRGlzcGxheSByZXZpc2lv
bnMgZ3JhcGhpY2FsbHknKQogICAgaWYgJGFsbG93X2N2c2dyYXBoOwogIGlmICgkY3ZzaGlzdG9y
eV91cmwpIHsKICAgIChteSAkZCA9ICR1cHdoZXJlKSA9fiBzfC8rJHx8OwogICAgcHJpbnQgJyAt
ICcsIGhpc3RvcnlfbGluaygkZCwgJGZpbGVuYW1lKTsKICB9CiAgcHJpbnQgIlxuPC9wPlxuPGhy
IC8+XG4iOwoKICBwcmludCAiPHA+XG4iOwoKICBteSAkZXhwbGFpbiA9ICRpc2JpbiA/ICcgKGku
ZS46IENWUyBjb25zaWRlcnMgdGhpcyBhIGJpbmFyeSBmaWxlKScgOiAnJzsKICBwcmludCAiS2V5
d29yZCBzdWJzdGl0dXRpb246ICRrZXl3b3Jkc3Vic3RpdHV0aW9uJGV4cGxhaW48YnIgLz5cbiI7
CiAgaWYgKCRjdXJicmFuY2gpIHsKICAgIHByaW50ICJEZWZhdWx0IGJyYW5jaDogIiwgKCRyZXZz
eW17JGN1cmJyYW5jaH0gfHwgJGN1cmJyYW5jaCk7CiAgfSBlbHNlIHsKICAgIHByaW50ICJObyBk
ZWZhdWx0IGJyYW5jaCI7CiAgfQogIHByaW50ICI8YnIgLz5cbiI7CgogIHByaW50ICdDdXJyZW50
IHRhZzogJywgaHRtbHF1b3RlKCRpbnB1dHtvbmx5X3dpdGhfdGFnfSksICI8YnIgLz5cbiIKICAg
IGlmICRpbnB1dHtvbmx5X3dpdGhfdGFnfTsKICBwcmludCAiPC9wPlxuIjsKCiAgdW5kZWYgJW5h
bWVwcmludGVkOwoKICBmb3IgbXkgJHIgKEByZXZkaXNwbGF5b3JkZXIpIHsKICAgIHByaW50ICI8
aHIgLz5cbiI7CiAgICBteSAkc2VsID0gKGRlZmluZWQoJGlucHV0e3IxfSkgJiYgJGlucHV0e3Ix
fSBlcSAkcik7CiAgICBwcmludCAiPGRpdiBjbGFzcz1cImRpZmYtc2VsZWN0ZWRcIj5cbiIgaWYg
JHNlbDsKICAgIHByaW50TG9nKCRyLCAkbWltZXR5cGUsICRpc2JpbiwgMSwgJHNlbCk7CiAgICBw
cmludCAiPC9kaXY+XG4iIGlmICRzZWw7CiAgfQoKICBwcmludGYoPDxFT0YsICRzY3JpcHR3aGVy
ZSk7CjxociAvPgo8Zm9ybSBtZXRob2Q9ImdldCIgYWN0aW9uPSIlcy5kaWZmIiBpZD0iZGlmZl9z
ZWxlY3QiPgo8ZmllbGRzZXQ+CjxsZWdlbmQ+RGlmZiByZXF1ZXN0PC9sZWdlbmQ+CjxwPgogPGEg
bmFtZT0iZGlmZiI+CiAgVGhpcyBmb3JtIGFsbG93cyB5b3UgdG8gcmVxdWVzdCBkaWZmcyBiZXR3
ZWVuIGFueSB0d28gcmV2aXNpb25zIG9mIGEgZmlsZS4KICBZb3UgbWF5IHNlbGVjdCBhIHN5bWJv
bGljIHJldmlzaW9uIG5hbWUgdXNpbmcgdGhlIHNlbGVjdGlvbiBib3ggb3IgeW91IG1heQogIHR5
cGUgaW4gYSBudW1lcmljIG5hbWUgdXNpbmcgdGhlIHR5cGUtaW4gdGV4dCBib3guCiA8L2E+Cjwv
cD4KRU9GCgogIGZvcmVhY2ggKEBzdGlja3l2YXJzKSB7CiAgICBwcmludGYoIjxpbnB1dCB0eXBl
PVwiaGlkZGVuXCIgbmFtZT1cIiVzXCIgdmFsdWU9XCIlc1wiIC8+XG4iLAogICAgICAgICAgICRf
LCBodG1scXVvdGUoJGlucHV0eyRffSkpCiAgICAgIGlmIChkZWZpbmVkKCRpbnB1dHskX30pICYm
CiAgICAgICAgICAoIWRlZmluZWQoJERFRkFVTFRWQUxVRXskX30pIHx8ICRpbnB1dHskX30gbmUg
JERFRkFVTFRWQUxVRXskX30pKTsKICB9CgogIHByaW50IDw8RU9GOwo8dGFibGUgc3VtbWFyeT0i
RGlmZiBiZXR3ZWVuIGFyYml0cmFyeSByZXZpc2lvbnMiPgo8dHI+Cjx0ZCBjbGFzcz0ib3B0LWxh
YmVsIj4KPGxhYmVsIGZvcj0icjEiIGFjY2Vzc2tleT0iMSI+RGlmZnMgYmV0d2VlbjwvbGFiZWw+
CjwvdGQ+Cjx0ZCBjbGFzcz0ib3B0LXZhbHVlIj4KPHNlbGVjdCBpZD0icjEiIG5hbWU9InIxIj4K
PG9wdGlvbiB2YWx1ZT0idGV4dCIgc2VsZWN0ZWQ9InNlbGVjdGVkIj5Vc2UgVGV4dCBGaWVsZDwv
b3B0aW9uPgpFT0YKICBwcmludCAkc2VsLCAiPC9zZWxlY3Q+XG4iOwoKICBteSAkZGlmZnJldiA9
IGRlZmluZWQoJGlucHV0e3IxfSkgPwogICAgJGlucHV0e3IxfSA6ICRyZXZkaXNwbGF5b3JkZXJb
JCNyZXZkaXNwbGF5b3JkZXJdOwoKICBwcmludGYoPDxFT0YsICRpbnB1dFRleHRTaXplLCAkZGlm
ZnJldik7CjxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSIlcyIgbmFtZT0idHIxIiB2YWx1ZT0iJXMi
IG9uY2hhbmdlPSJ0aGlzLmZvcm0ucjEuc2VsZWN0ZWRJbmRleD0wIiAvPgo8L3RkPgo8dGQ+PC90
ZD4KPC90cj4KPHRyPgo8dGQgY2xhc3M9Im9wdC1sYWJlbCI+CjxsYWJlbCBmb3I9InIyIiBhY2Nl
c3NrZXk9IjIiPmFuZDwvbGFiZWw+CjwvdGQ+Cjx0ZCBjbGFzcz0ib3B0LXZhbHVlIj4KPHNlbGVj
dCBpZD0icjIiIG5hbWU9InIyIj4KPG9wdGlvbiB2YWx1ZT0idGV4dCIgc2VsZWN0ZWQ9InNlbGVj
dGVkIj5Vc2UgVGV4dCBGaWVsZDwvb3B0aW9uPgpFT0YKICBwcmludCAkc2VsLCAiPC9zZWxlY3Q+
XG4iOwoKICAkZGlmZnJldiA9IGRlZmluZWQoJGlucHV0e3IyfSkgPyAkaW5wdXR7cjJ9IDogJHJl
dmRpc3BsYXlvcmRlclswXTsKCiAgcHJpbnRmKDw8RU9GLCAkaW5wdXRUZXh0U2l6ZSwgJGRpZmZy
ZXYsICRzY3JpcHR3aGVyZSk7CjxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSIlcyIgbmFtZT0idHIy
IiB2YWx1ZT0iJXMiIG9uY2hhbmdlPSJ0aGlzLmZvcm0ucjIuc2VsZWN0ZWRJbmRleD0wIiAvPgo8
L3RkPgo8dGQ+PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkdldCBEaWZmcyIgYWNjZXNza2V5
PSJHIiAvPjwvdGQ+CjwvdHI+CjwvdGFibGU+CjwvZmllbGRzZXQ+CjwvZm9ybT4KPGZvcm0gbWV0
aG9kPSJnZXQiIGFjdGlvbj0iJXMiPgo8ZmllbGRzZXQ+CjxsZWdlbmQ+TG9nIHZpZXcgb3B0aW9u
czwvbGVnZW5kPgo8dGFibGUgc3VtbWFyeT0iTG9nIHZpZXcgb3B0aW9ucyI+Cjx0cj4KPHRkIGNs
YXNzPSJvcHQtbGFiZWwiPgo8bGFiZWwgZm9yPSJmIiBhY2Nlc3NrZXk9IkQiPlByZWZlcnJlZCBk
aWZmIHR5cGU6PC9sYWJlbD4KPC90ZD4KPHRkIGNsYXNzPSJvcHQtdmFsdWUiPgpFT0YKICBwcmlu
dERpZmZTZWxlY3QoJHVzZV9qYXZhX3NjcmlwdCk7CiAgcHJpbnQgPDxFT0Y7CjwvdGQ+Cjx0ZD48
L3RkPgo8L3RyPgpFT0YKCiAgaWYgKEBicmFuY2huYW1lcykgewoKICAgIHByaW50Zig8PEVPRiwg
JHVzZV9qYXZhX3NjcmlwdCA/ICcgb25jaGFuZ2U9InRoaXMuZm9ybS5zdWJtaXQoKSInIDogJycp
Owo8dHI+Cjx0ZCBjbGFzcz0ib3B0LWxhYmVsIj4KPGxhYmVsIGZvcj0ib25seV93aXRoX3RhZyIg
YWNjZXNza2V5PSJCIj5WaWV3IG9ubHkgYnJhbmNoOjwvbGFiZWw+CjwvdGQ+Cjx0ZCBjbGFzcz0i
b3B0LXZhbHVlIj4KPGEgbmFtZT0iYnJhbmNoIj4KPHNlbGVjdCBpZD0ib25seV93aXRoX3RhZyIg
bmFtZT0ib25seV93aXRoX3RhZyIlcz4KRU9GCgogICAgbXkgQHRtcCA9ICgpOwogICAgbXkgJHNl
bGZvdW5kID0gMDsKICAgIGZvcmVhY2ggKHJldmVyc2Ugc29ydCBAYnJhbmNobmFtZXMpIHsKICAg
ICAgbXkgJHNlbGVjdGVkID0KICAgICAgICAoZGVmaW5lZCgkaW5wdXR7b25seV93aXRoX3RhZ30p
ICYmICRpbnB1dHtvbmx5X3dpdGhfdGFnfSBlcSAkXyk7CiAgICAgICRzZWxmb3VuZCB8fD0gJHNl
bGVjdGVkOwogICAgICBwdXNoKEB0bXAsIHNwcmludGYoJzxvcHRpb24lcz4lczwvb3B0aW9uPics
CiAgICAgICAgICAgICAgICAgICAgICAgICAkc2VsZWN0ZWQgPyAnIHNlbGVjdGVkPSJzZWxlY3Rl
ZCInIDogJycsCiAgICAgICAgICAgICAgICAgICAgICAgICBodG1scXVvdGUoJF8pKSk7CiAgICB9
CiAgICBwcmludGYoIjxvcHRpb24gdmFsdWU9XCJcIiVzPlNob3cgYWxsIGJyYW5jaGVzPC9vcHRp
b24+XG4iLAogICAgICAgICAgICRzZWxmb3VuZCA/ICcnIDogJyBzZWxlY3RlZD0ic2VsZWN0ZWQi
Jyk7CiAgICBwcmludCBqb2luKCJcbiIsIEB0bXApOwoKICAgIHByaW50IDw8RU9GCjwvc2VsZWN0
Pgo8L2E+CjwvdGQ+Cjx0ZD48L3RkPgo8L3RyPgpFT0YKICB9CgogIHByaW50IDw8RU9GOwo8dHI+
Cjx0ZCBjbGFzcz0ib3B0LWxhYmVsIj4KPGxhYmVsIGZvcj0ibG9nc29ydCIgYWNjZXNza2V5PSJM
Ij5Tb3J0IGxvZyBieTo8L2xhYmVsPgo8L3RkPgo8dGQ+CkVPRgogIHByaW50TG9nU29ydFNlbGVj
dCgkdXNlX2phdmFfc2NyaXB0KTsKICBwcmludCA8PEVPRjsKPC90ZD4KPHRkPjxpbnB1dCB0eXBl
PSJzdWJtaXQiIHZhbHVlPSJTZXQiIGFjY2Vzc2tleT0iUyIgLz48L3RkPgo8L3RyPgo8L3RhYmxl
PgpFT0YKICBmb3JlYWNoIChAc3RpY2t5dmFycykgewogICAgbmV4dCBpZiAoJF8gZXEgImYiKTsK
ICAgIG5leHQgaWYgKCRfIGVxICJvbmx5X3dpdGhfdGFnIik7CiAgICBuZXh0IGlmICgkXyBlcSAi
bG9nc29ydCIpOwogICAgcHJpbnRmKCI8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCIkX1wi
IHZhbHVlPVwiJXNcIiAvPlxuIiwKICAgICAgICAgICBodG1scXVvdGUoJGlucHV0eyRffSkpCiAg
ICAgIGlmIChkZWZpbmVkKCRpbnB1dHskX30pCiAgICAgICAgICAmJiAoIWRlZmluZWQoJERFRkFV
TFRWQUxVRXskX30pIHx8ICRpbnB1dHskX30gbmUgJERFRkFVTFRWQUxVRXskX30pKTsKICB9CiAg
cHJpbnQgIjwvZmllbGRzZXQ+XG48L2Zvcm0+XG4iOwogIGh0bWxfZm9vdGVyKCk7Cn0KCgpzdWIg
Zmx1c2hfZGlmZl9yb3dzKCQkJCQpCnsKICBteSAoJGxlZnRDb2xSZWYsICRyaWdodENvbFJlZiwg
JGxlZnRSb3csICRyaWdodFJvdykgPSBAXzsKCiAgcmV0dXJuIHVubGVzcyBkZWZpbmVkKCRzdGF0
ZSk7CgogIGlmICgkc3RhdGUgZXEgIlByZUNoYW5nZVJlbW92ZSIpIHsgICAgIyB3ZSBqdXN0IGdv
dCByZW1vdmUtbGluZXMgYmVmb3JlCiAgICBmb3IgKG15ICRqID0gMDsgJGogPCAkbGVmdFJvdzsg
JGorKykgewogICAgICBwcmludGYoPDxFT0YsIHNwYWNlZEh0bWxUZXh0KEAkbGVmdENvbFJlZlsk
al0pKTsKPHRyPgogPHRkIGNsYXNzPSJkaWZmIGRpZmYtcmVtb3ZlZCI+Jm5ic3A7JXM8L3RkPgog
PHRkIGNsYXNzPSJkaWZmIGRpZmYtZW1wdHkiPiZuYnNwOzwvdGQ+CjwvdHI+CkVPRgogICAgfQog
IH0gZWxzaWYgKCRzdGF0ZSBlcSAiUHJlQ2hhbmdlIikgeyAgICAgIyBzdGF0ZSBlcSAiUHJlQ2hh
bmdlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB3ZSBnb3QgcmVt
b3ZlcyB3aXRoIHN1YnNlcXVlbnQgYWRkcwogICAgaWYgKEhBU19FRElGRikgewogICAgICAjIGNv
bnN0cnVjdCB0aGUgc3VmZml4IHRyZWUKICAgICAgbXkgJGxlZnRfZGlmZiA9IGpvaW4oIlxuIiwg
QCRsZWZ0Q29sUmVmWzAuLiRsZWZ0Um93LTFdKTsKICAgICAgbXkgJHJpZ2h0X2RpZmYgPSBqb2lu
KCJcbiIsIEAkcmlnaHRDb2xSZWZbMC4uJHJpZ2h0Um93LTFdKTsKICAgICAgbXkgJGRpZmZfc3Ry
ID0gU3RyaW5nOjpFZGlmZjo6ZWRpZmYoJGxlZnRfZGlmZiwgJHJpZ2h0X2RpZmYpOwoKICAgICAg
bXkgQGRpZmZfc3RyID0gc3BsaXQoLyAvLCAkZGlmZl9zdHIpOwogICAgICBteSAkSU5GSU5JVFkg
PSAxMDAwMDAwMDsKICAgICAgcHVzaChAZGlmZl9zdHIsICgkSU5GSU5JVFkpIHggOCk7CiAgICAg
IG15ICgkaWR4LCAkYjEsICRlMSwgJGxiMSwgJGxlMSwgJGIyLCAkZTIsICRsYjIsICRsZTIpID0K
ICAgICAgICAoMCwgQGRpZmZfc3RyWzAuLjddKTsKICAgICAgbXkgKCRsX2N1bCwgJHJfY3VsKSA9
ICgwLCAwKTsKICAgICAgbXkgKCRsZHgsICRyZHgpID0gKDAsIDApOwogICAgICBteSAoQGxlZnRf
aHRtbCwgQHJpZ2h0X2h0bWwpOwogICAgICBmb3IgKG15ICRqID0gMDsgJGogPCAkbGVmdFJvdzsg
JGorKykgewogICAgICAgIG15ICRsaW5lX2xlbiA9IGxlbmd0aChAJGxlZnRDb2xSZWZbJGpdKTsK
ICAgICAgICBteSAkbGluZSA9IEAkbGVmdENvbFJlZlskal07CiAgICAgICAgJGxfY3VsICs9IGxl
bmd0aCgkbGluZSkgKyAxOyAjIGluY2x1ZGVzICJcbiIKICAgICAgICBteSAkbF9jdWx4ID0gJGxf
Y3VsIC0gMTsgIyBub3QgaW5jbHVkZXMgIlxuIgogICAgICAgIGlmICgkaiA8ICRsYjEpIHsKICAg
ICAgICAgICRsaW5lID0gc3BhY2VkSHRtbFRleHQoJGxpbmUpOwogICAgICAgICAgcHVzaChAbGVm
dF9odG1sLCAiPHRkIGNsYXNzPVwiZGlmZiBkaWZmLWNoYW5nZWRcIj4kbGluZTwvdGQ+Iik7CiAg
ICAgICAgfSBlbHNpZiAoJGxiMSA9PSAkaikgewogICAgICAgICAgbXkgJGh0bWxfbGluZTsKICAg
ICAgICAgIHdoaWxlICgkbGIxID09ICRqKSB7CiAgICAgICAgICAgIG15ICRiZWdpbl9jaGFyID0g
JGxfY3VseCAtICRiMTsKCiAgICAgICAgICAgICRsaW5lID1+IC9eKC4qKSgueyRiZWdpbl9jaGFy
fSkkLzsKICAgICAgICAgICAgJGh0bWxfbGluZSAuPSBzcGFjZWRIdG1sVGV4dCgkMSkgLgogICAg
ICAgICAgICAgICc8L3NwYW4+PHNwYW4gY2xhc3M9ImRpZmYgZGlmZi11bmNoYW5nZWQiPic7CiAg
ICAgICAgICAgICRsaW5lID0gJDI7CiAgICAgICAgICAgIGxhc3QgaWYgKCRqICE9ICRsZTEpOwoK
ICAgICAgICAgICAgbXkgJGVuZF9jaGFyID0gJGxfY3VseCAtICRlMTsKICAgICAgICAgICAgJGxp
bmUgPX4gL14oLiopKC57JGVuZF9jaGFyfSkkLzsKICAgICAgICAgICAgJGh0bWxfbGluZSAuPSBz
cGFjZWRIdG1sVGV4dCgkMSkgLgogICAgICAgICAgICAgICc8L3NwYW4+PHNwYW4gY2xhc3M9ImRp
ZmYgZGlmZi1jaGFuZ2VkIj4nOwogICAgICAgICAgICAkbGluZSA9ICQyOwoKICAgICAgICAgICAg
JGlkeCsrOwogICAgICAgICAgICBteSAoJHRiMSwgJHRlMSwgJHRsYjEsICR0bGUxLCAkdGIyLCAk
dGUyLCAkdGxiMiwgJHRsZTIpID0KICAgICAgICAgICAgICAoJGIxLCAkZTEsICRsYjEsICRsZTEs
ICRiMiwgJGUyLCAkbGIyLCAkbGUyKTsKICAgICAgICAgICAgKCRiMSwgJGUxLCAkbGIxLCAkbGUx
LCAkYjIsICRlMiwgJGxiMiwgJGxlMikgPQogICAgICAgICAgICAgIEBkaWZmX3N0clskaWR4Kjgu
LigkaWR4KzEpKjgtMV07CiAgICAgICAgICAgICRsYjEgPSAkSU5GSU5JVFkgaWYgKCRsYjEgPCAw
KTsKICAgICAgICAgICAgJGxiMiA9ICRJTkZJTklUWSBpZiAoJGxiMiA8IDApOwogICAgICAgICAg
ICAkbGUxID0gJElORklOSVRZIGlmICgkbGUxIDwgMCk7CiAgICAgICAgICAgICRsZTIgPSAkSU5G
SU5JVFkgaWYgKCRsZTIgPCAwKTsKICAgICAgICAgICAgaWYgKCR0ZTEgPiAkYjEpIHsKICAgICAg
ICAgICAgICAoJGIxLCAkbGIxKSA9ICgkdGUxLCAkdGxlMSk7CiAgICAgICAgICAgIH0KICAgICAg
ICAgICAgaWYgKCR0ZTIgPiAkYjIpIHsKICAgICAgICAgICAgICAoJGIyLCAkbGIyKSA9ICgkdGUy
LCAkdGxlMik7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIHB1c2goQGxlZnRf
aHRtbCwKICAgICAgICAgICAgICAgc3ByaW50ZignPHRkPjxzcGFuIGNsYXNzPSJkaWZmIGRpZmYt
Y2hhbmdlZCI+JXMlczwvc3Bhbj48L3RkPicsCiAgICAgICAgICAgICAgICAgICAgICAgJGh0bWxf
bGluZSwgc3BhY2VkSHRtbFRleHQoJGxpbmUpKSk7CiAgICAgICAgfSBlbHNpZiAoJGxlMSA9PSAk
aikgewogICAgICAgICAgbXkgJGh0bWxfbGluZTsKICAgICAgICAgIHdoaWxlICgkbGUxID09ICRq
KSB7CiAgICAgICAgICAgIG15ICRlbmRfY2hhciA9ICRsX2N1bHggLSAkZTE7CiAgICAgICAgICAg
ICRsaW5lID1+IC9eKC4qKSgueyRlbmRfY2hhcn0pJC87CiAgICAgICAgICAgICRodG1sX2xpbmUg
Lj0gc3BhY2VkSHRtbFRleHQoJDEpIC4KICAgICAgICAgICAgICAnPC9zcGFuPjxzcGFuIGNsYXNz
PSJkaWZmIGRpZmYtY2hhbmdlZCI+JzsKICAgICAgICAgICAgJGxpbmUgPSAkMjsKCiAgICAgICAg
ICAgICRpZHgrKzsKICAgICAgICAgICAgbXkgKCR0YjEsICR0ZTEsICR0bGIxLCAkdGxlMSwgJHRi
MiwgJHRlMiwgJHRsYjIsICR0bGUyKSA9CiAgICAgICAgICAgICAgKCRiMSwgJGUxLCAkbGIxLCAk
bGUxLCAkYjIsICRlMiwgJGxiMiwgJGxlMik7CiAgICAgICAgICAgICgkYjEsICRlMSwgJGxiMSwg
JGxlMSwgJGIyLCAkZTIsICRsYjIsICRsZTIpID0KICAgICAgICAgICAgICBAZGlmZl9zdHJbJGlk
eCo4Li4oJGlkeCsxKSo4LTFdOwogICAgICAgICAgICAkbGIxID0gJElORklOSVRZIGlmICgkbGIx
IDwgMCk7CiAgICAgICAgICAgICRsYjIgPSAkSU5GSU5JVFkgaWYgKCRsYjIgPCAwKTsKICAgICAg
ICAgICAgJGxlMSA9ICRJTkZJTklUWSBpZiAoJGxlMSA8IDApOwogICAgICAgICAgICAkbGUyID0g
JElORklOSVRZIGlmICgkbGUyIDwgMCk7CiAgICAgICAgICAgIGlmICgkdGUxID4gJGIxKSB7CiAg
ICAgICAgICAgICAgKCRiMSwgJGxiMSkgPSAoJHRlMSwgJHRsZTEpOwogICAgICAgICAgICB9CiAg
ICAgICAgICAgIGlmICgkdGUyID4gJGIyKSB7CiAgICAgICAgICAgICAgKCRiMiwgJGxiMikgPSAo
JHRlMiwgJHRsZTIpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsYXN0IGlmICgkbGIxICE9
ICRqKTsKCiAgICAgICAgICAgIG15ICRiZWdpbl9jaGFyID0gJGxfY3VseCAtICRiMTsKCiAgICAg
ICAgICAgICRsaW5lID1+IC9eKC4qKSgueyRiZWdpbl9jaGFyfSkkLzsKICAgICAgICAgICAgJGh0
bWxfbGluZSAuPSBzcGFjZWRIdG1sVGV4dCgkMSkgLgogICAgICAgICAgICAgICc8L3NwYW4+PHNw
YW4gY2xhc3M9ImRpZmYgZGlmZi11bmNoYW5nZWQiPic7CiAgICAgICAgICAgICRsaW5lID0gJDI7
CiAgICAgICAgICB9CiAgICAgICAgICBwdXNoKEBsZWZ0X2h0bWwsCiAgICAgICAgICAgICAgc3By
aW50ZignPHRkPjxzcGFuIGNsYXNzPSJkaWZmIGRpZmYtdW5jaGFuZ2VkIj4lcyVzPC9zcGFuPjwv
dGQ+JywKICAgICAgICAgICAgICAgICAgICAgICRodG1sX2xpbmUsIHNwYWNlZEh0bWxUZXh0KCRs
aW5lKSkpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAkbGluZSA9IHNwYWNlZEh0bWxUZXh0
KCRsaW5lKTsKICAgICAgICAgIHB1c2goQGxlZnRfaHRtbCwgIjx0ZCBjbGFzcz1cImRpZmYgZGlm
Zi11bmNoYW5nZWRcIj4kbGluZTwvdGQ+Iik7CiAgICAgICAgfQogICAgICB9CiAgICAgICgkaWR4
LCAkYjEsICRlMSwgJGxiMSwgJGxlMSwgJGIyLCAkZTIsICRsYjIsICRsZTIpID0KICAgICAgICAo
MCwgQGRpZmZfc3RyWzAuLjddKTsKICAgICAgJGxiMSA9ICRJTkZJTklUWSBpZiAoJGxiMSA8IDAp
OwogICAgICAkbGIyID0gJElORklOSVRZIGlmICgkbGIyIDwgMCk7CiAgICAgICRsZTEgPSAkSU5G
SU5JVFkgaWYgKCRsZTEgPCAwKTsKICAgICAgJGxlMiA9ICRJTkZJTklUWSBpZiAoJGxlMiA8IDAp
OwogICAgICBmb3IgKG15ICRqID0gMDsgJGogPCAkcmlnaHRSb3c7ICRqKyspIHsKICAgICAgICBt
eSAkbGluZV9sZW4gPSBsZW5ndGgoQCRyaWdodENvbFJlZlskal0pOwogICAgICAgIG15ICRsaW5l
ID0gQCRyaWdodENvbFJlZlskal07CiAgICAgICAgJHJfY3VsICs9IGxlbmd0aCgkbGluZSkgKyAx
OyAjIGluY2x1ZGVzICJcbiIKICAgICAgICBteSAkcl9jdWx4ID0gJHJfY3VsIC0gMTsgIyBub3Qg
aW5jbHVkZXMgIlxuIgogICAgICAgIGlmICgkaiA8ICRsYjIpIHsKICAgICAgICAgICRsaW5lID0g
c3BhY2VkSHRtbFRleHQoJGxpbmUpOwogICAgICAgICAgcHVzaChAcmlnaHRfaHRtbCwgIjx0ZCBj
bGFzcz1cImRpZmYgZGlmZi1jaGFuZ2VkXCI+JGxpbmU8L3RkPiIpOwogICAgICAgIH0gZWxzaWYg
KCRsYjIgPT0gJGopIHsKICAgICAgICAgIG15ICRodG1sX2xpbmU7CiAgICAgICAgICB3aGlsZSAo
JGxiMiA9PSAkaikgewogICAgICAgICAgICBteSAkYmVnaW5fY2hhciA9ICRyX2N1bHggLSAkYjI7
CgogICAgICAgICAgICAkbGluZSA9fiAvXiguKikoLnskYmVnaW5fY2hhcn0pJC87CiAgICAgICAg
ICAgICRodG1sX2xpbmUgLj0gc3BhY2VkSHRtbFRleHQoJDEpIC4KICAgICAgICAgICAgICAnPC9z
cGFuPjxzcGFuIGNsYXNzPSJkaWZmIGRpZmYtdW5jaGFuZ2VkIj4nOwogICAgICAgICAgICAkbGlu
ZSA9ICQyOwoKICAgICAgICAgICAgbGFzdCBpZiAoJGogIT0gJGxlMik7CgogICAgICAgICAgICBt
eSAkZW5kX2NoYXIgPSAkcl9jdWx4IC0gJGUyOwogICAgICAgICAgICAkbGluZSA9fiAvXiguKiko
LnskZW5kX2NoYXJ9KSQvOwogICAgICAgICAgICAkaHRtbF9saW5lIC49IHNwYWNlZEh0bWxUZXh0
KCQxKSAuCiAgICAgICAgICAgICAgJzwvc3Bhbj48c3BhbiBjbGFzcz0iZGlmZiBkaWZmLWNoYW5n
ZWQiPic7CiAgICAgICAgICAgICRsaW5lID0gJDI7CgogICAgICAgICAgICAkaWR4Kys7CiAgICAg
ICAgICAgIG15ICgkdGIxLCAkdGUxLCAkdGxiMSwgJHRsZTEsICR0YjIsICR0ZTIsICR0bGIyLCAk
dGxlMikgPQogICAgICAgICAgICAgICgkYjEsICRlMSwgJGxiMSwgJGxlMSwgJGIyLCAkZTIsICRs
YjIsICRsZTIpOwogICAgICAgICAgICAoJGIxLCAkZTEsICRsYjEsICRsZTEsICRiMiwgJGUyLCAk
bGIyLCAkbGUyKSA9CiAgICAgICAgICAgICAgQGRpZmZfc3RyWyRpZHgqOC4uKCRpZHgrMSkqOC0x
XTsKICAgICAgICAgICAgJGxiMSA9ICRJTkZJTklUWSBpZiAoJGxiMSA8IDApOwogICAgICAgICAg
ICAkbGIyID0gJElORklOSVRZIGlmICgkbGIyIDwgMCk7CiAgICAgICAgICAgICRsZTEgPSAkSU5G
SU5JVFkgaWYgKCRsZTEgPCAwKTsKICAgICAgICAgICAgJGxlMiA9ICRJTkZJTklUWSBpZiAoJGxl
MiA8IDApOwogICAgICAgICAgICBpZiAoJHRlMSA+ICRiMSkgewogICAgICAgICAgICAgICgkYjEs
ICRsYjEpID0gKCR0ZTEsICR0bGUxKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoJHRl
MiA+ICRiMikgewogICAgICAgICAgICAgICgkYjIsICRsYjIpID0gKCR0ZTIsICR0bGUyKTsKICAg
ICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgcHVzaChAcmlnaHRfaHRtbCwKICAgICAg
ICAgICAgICAgc3ByaW50ZignPHRkPjxzcGFuIGNsYXNzPSJkaWZmIGRpZmYtY2hhbmdlZCI+JXMl
czwvc3Bhbj48L3RkPicsCiAgICAgICAgICAgICAgICAgICAgICAgJGh0bWxfbGluZSwgc3BhY2Vk
SHRtbFRleHQoJGxpbmUpKSk7CiAgICAgICAgfSBlbHNpZiAoJGxlMiA9PSAkaikgewogICAgICAg
ICAgbXkgJGh0bWxfbGluZTsKICAgICAgICAgIHdoaWxlICgkbGUyID09ICRqKSB7CiAgICAgICAg
ICAgIG15ICRlbmRfY2hhciA9ICRyX2N1bHggLSAkZTI7CiAgICAgICAgICAgICRsaW5lID1+IC9e
KC4qKSgueyRlbmRfY2hhcn0pJC87CiAgICAgICAgICAgICRodG1sX2xpbmUgLj0gc3BhY2VkSHRt
bFRleHQoJDEpIC4KICAgICAgICAgICAgICAnPC9zcGFuPjxzcGFuIGNsYXNzPSJkaWZmIGRpZmYt
Y2hhbmdlZCI+JzsKICAgICAgICAgICAgJGxpbmUgPSAkMjsKCiAgICAgICAgICAgICRpZHgrKzsK
ICAgICAgICAgICAgbXkgKCR0YjEsICR0ZTEsICR0bGIxLCAkdGxlMSwgJHRiMiwgJHRlMiwgJHRs
YjIsICR0bGUyKSA9CiAgICAgICAgICAgICAgKCRiMSwgJGUxLCAkbGIxLCAkbGUxLCAkYjIsICRl
MiwgJGxiMiwgJGxlMik7CiAgICAgICAgICAgICgkYjEsICRlMSwgJGxiMSwgJGxlMSwgJGIyLCAk
ZTIsICRsYjIsICRsZTIpID0KICAgICAgICAgICAgICBAZGlmZl9zdHJbJGlkeCo4Li4oJGlkeCsx
KSo4LTFdOwogICAgICAgICAgICAkbGIxID0gJElORklOSVRZIGlmICgkbGIxIDwgMCk7CiAgICAg
ICAgICAgICRsYjIgPSAkSU5GSU5JVFkgaWYgKCRsYjIgPCAwKTsKICAgICAgICAgICAgJGxlMSA9
ICRJTkZJTklUWSBpZiAoJGxlMSA8IDApOwogICAgICAgICAgICAkbGUyID0gJElORklOSVRZIGlm
ICgkbGUyIDwgMCk7CiAgICAgICAgICAgIGlmICgkdGUxID4gJGIxKSB7CiAgICAgICAgICAgICAg
KCRiMSwgJGxiMSkgPSAoJHRlMSwgJHRsZTEpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlm
ICgkdGUyID4gJGIyKSB7CiAgICAgICAgICAgICAgKCRiMiwgJGxiMikgPSAoJHRlMiwgJHRsZTIp
OwogICAgICAgICAgICB9CgogICAgICAgICAgICBsYXN0IGlmICgkbGIyICE9ICRqKTsKCiAgICAg
ICAgICAgIG15ICRiZWdpbl9jaGFyID0gJHJfY3VseCAtICRiMjsKICAgICAgICAgICAgJGxpbmUg
PX4gL14oLiopKC57JGJlZ2luX2NoYXJ9KSQvOwogICAgICAgICAgICAkaHRtbF9saW5lIC49IHNw
YWNlZEh0bWxUZXh0KCQxKSAuCiAgICAgICAgICAgICAgJzwvc3Bhbj48c3BhbiBjbGFzcz0iZGlm
ZiBkaWZmLXVuY2hhbmdlZCI+JzsKICAgICAgICAgICAgJGxpbmUgPSAkMjsKICAgICAgICAgIH0K
ICAgICAgICAgIHB1c2goQHJpZ2h0X2h0bWwsCiAgICAgICAgICAgICAgIHNwcmludGYoJzx0ZCBu
b3dyYXA9Im5vd3JhcCI+PHNwYW4gY2xhc3M9ImRpZmYgZGlmZi11bmNoYW5nZWQiJy4KICAgICAg
ICAgICAgICAgICAgICAgICAnPiVzJXM8L3NwYW4+PC90ZD4nLAogICAgICAgICAgICAgICAgICAg
ICAgICRodG1sX2xpbmUsIHNwYWNlZEh0bWxUZXh0KCRsaW5lKSkpOwogICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAkbGluZSA9IHNwYWNlZEh0bWxUZXh0ICgkbGluZSk7CiAgICAgICAgICBwdXNo
IEByaWdodF9odG1sLCAiPHRkIGNsYXNzPVwiZGlmZiBkaWZmLXVuY2hhbmdlZFwiPiRsaW5lPC90
ZD4iOwogICAgICAgIH0KICAgICAgfQogICAgICBmb3IgKG15ICRqID0gMDsgJGogPCAkbGVmdFJv
dyB8fCAkaiA8ICRyaWdodFJvdyA7ICRqKyspIHsgIyBkdW1wIG91dCBib3RoIGNvbHMKICAgICAg
ICBwcmludCAgJzx0cj4nOwogICAgICAgIGlmICgkaiA8ICRsZWZ0Um93KSB7CiAgICAgICAgICBw
cmludCAkbGVmdF9odG1sWyRqXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcHJpbnQgJzx0
ZCBjbGFzcz0iZGlmZiBkaWZmLWNoYW5nZWQtbWlzc2luZyI+Jm5ic3A7PC90ZD4nOwogICAgICAg
IH0KICAgICAgICBpZiAoJGogPCAkcmlnaHRSb3cpIHsKICAgICAgICAgIHByaW50ICRyaWdodF9o
dG1sWyRqXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcHJpbnQgJzx0ZCBjbGFzcz0iZGlm
ZiBkaWZmLWNoYW5nZWQtbWlzc2luZyI+Jm5ic3A7PC90ZD4nOwogICAgICAgIH0KICAgICAgICBw
cmludCAiPC90cj5cbiI7CiAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgIGZvciAobXkgJGogPSAw
OyAkaiA8ICRsZWZ0Um93IHx8ICRqIDwgJHJpZ2h0Um93OyAkaisrKSB7ICMgZHVtcCBib3RoIGNv
bHMKICAgICAgICBwcmludCAiPHRyPlxuIjsKICAgICAgICBpZiAoJGogPCAkbGVmdFJvdykgewog
ICAgICAgICAgcHJpbnQgJzx0ZCBjbGFzcz0iZGlmZiBkaWZmLWNoYW5nZWQiPiZuYnNwOycgLgog
ICAgICAgICAgICBzcGFjZWRIdG1sVGV4dChAJGxlZnRDb2xSZWZbJGpdKSAuICc8L3RkPic7CiAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgIHByaW50ICc8dGQgY2xhc3M9ImRpZmYgZGlmZi1jaGFu
Z2VkLW1pc3NpbmciPiZuYnNwOzwvdGQ+JzsKICAgICAgICB9CiAgICAgICAgcHJpbnQgIlxuIjsK
CiAgICAgICAgaWYgKCRqIDwgJHJpZ2h0Um93KSB7CiAgICAgICAgICBwcmludCAnPHRkIGNsYXNz
PSJkaWZmIGRpZmYtY2hhbmdlZCI+Jm5ic3A7JyAuCiAgICAgICAgICAgIHNwYWNlZEh0bWxUZXh0
KEAkcmlnaHRDb2xSZWZbJGpdKSAuICc8L3RkPic7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
IHByaW50ICc8dGQgY2xhc3M9ImRpZmYgZGlmZi1jaGFuZ2VkLW1pc3NpbmciPiZuYnNwOzwvdGQ+
JzsKICAgICAgICB9CiAgICAgICAgcHJpbnQgIlxuPC90cj5cbiI7CiAgICAgIH0KICAgIH0KICB9
Cn0KCgojCiMgR2VuZXJhdGVzICJodW1hbiByZWFkYWJsZSIsIEhUTUxpZmllZCBkaWZmcy4KIwpz
dWIgaHVtYW5fcmVhZGFibGVfZGlmZigkJCkKewogIG15ICgkZmgsICRyZXYpID0gQF87CgogICht
eSAkd2hlcmVfbmQgICAgICAgPSAkd2hlcmUpICAgICAgID1+IHN8XC5kaWZmJHx8OwogIChteSAk
ZmlsZW5hbWUgICAgICAgPSAkd2hlcmVfbmQpICAgID1+IHN8Xi4qL3x8OwogIChteSAkcGF0aG5h
bWUgICAgICAgPSAkd2hlcmVfbmQpICAgID1+IHN8KCg/PD0vKUF0dGljLyk/W14vXSokfHw7CiAg
KG15ICRzY3JpcHR3aGVyZV9uZCA9ICRzY3JpcHR3aGVyZSkgPX4gc3xcLmRpZmYkfHw7CgogIG5h
dmlnYXRlSGVhZGVyKCRzY3JpcHR3aGVyZV9uZCwgJHBhdGhuYW1lLCAkZmlsZW5hbWUsICRyZXYs
ICdkaWZmJyk7CgogICMgUmVhZCBoZWFkZXIgdG8gcGljayB1cCByZWFkIHJldmlzaW9uIGFuZCBk
YXRlLCBpZiBwb3NzaWJsZS4KCiAgbXkgKCRyMWQsICRyMXIsICRyMmQsICRyMnIpOwogIHdoaWxl
ICg8JGZoPikgewogICAgKCRyMWQsICRyMXIpID0gL1x0KC4qKVx0KC4qKSQvIGlmICgvXi0tLSAv
KTsKICAgICgkcjJkLCAkcjJyKSA9IC9cdCguKilcdCguKikkLyBpZiAoL15cK1wrXCsgLyk7CiAg
ICBsYXN0IGlmICgvXlwrXCtcKyAvKTsKICB9CgogIG15ICgkcmV2MSwgJGRhdGUxKTsKICBpZiAo
ZGVmaW5lZCgkcjFyKSAmJiAkcjFyID1+IC9eKFxkK1wuKStcZCskLykgewogICAgJHJldjEgID0g
JHIxcjsKICAgICRkYXRlMSA9ICRyMWQ7CiAgfQogIG15ICgkcmV2MiwgJGRhdGUyKTsKICBpZiAo
ZGVmaW5lZCgkcjJyKSAmJiAkcjJyID1+IC9eKFxkK1wuKStcZCskLykgewogICAgJHJldjIgID0g
JHIycjsKICAgICRkYXRlMiA9ICRyMmQ7CiAgfQogICRyZXYxICA9ICRpbnB1dHtyMX0gICAgICB1
bmxlc3MgZGVmaW5lZCgkcmV2MSk7CiAgJHJldjEgID0gJGlucHV0e3RyMX0gICAgIGlmIChkZWZp
bmVkKCRyZXYxKSAmJiAkcmV2MSBlcSAndGV4dCcpOwogICRyZXYxICA9ICd1bmtub3duLWxlZnQn
ICB1bmxlc3MgZGVmaW5lZCgkcmV2MSk7CiAgJHJldjIgID0gJGlucHV0e3IyfSAgICAgIHVubGVz
cyBkZWZpbmVkKCRyZXYyKTsKICAkcmV2MiAgPSAkaW5wdXR7dHIyfSAgICAgaWYgKGRlZmluZWQo
JHJldjIpICYmICRyZXYyIGVxICd0ZXh0Jyk7CiAgJHJldjIgID0gJ3Vua25vd24tcmlnaHQnIHVu
bGVzcyBkZWZpbmVkKCRyZXYyKTsKICAkZGF0ZTEgPSBkZWZpbmVkKCRkYXRlMSkgPyAnLCAnIC4g
aHRtbHF1b3RlKCRkYXRlMSkgOiAnJzsKICAkZGF0ZTIgPSBkZWZpbmVkKCRkYXRlMikgPyAnLCAn
IC4gaHRtbHF1b3RlKCRkYXRlMikgOiAnJzsKCiAgbXkgJGxpbmsgPSB1cmlfZXNjYXBlKCRmaWxl
bmFtZSkgLiAoJHF1ZXJ5ID8gIiRxdWVyeTsiIDogJz8nKTsKCiAgIyBVc2luZyA8dGFibGUgc3R5
bGU9XCJib3JkZXI6IG5vbmVcIiBoZXJlIGJyZWFrcyBOUyA0LnggYmFkbHkuLi4KICBwcmludCA8
PEVPRjsKPGgzIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXIiPkRpZmYgZm9yIC8kd2hlcmVfbmQg
YmV0d2VlbiB2ZXJzaW9ucyAkcmV2MSBhbmQgJHJldjI8L2gzPgo8dGFibGUgYm9yZGVyPSIwIiBj
ZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIiBzdW1tYXJ5PSJEaWZm
IG91dHB1dCI+Cjx0ciBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZiI+Cjx0aCBzdHls
ZT0idGV4dC1hbGlnbjogY2VudGVyOyB2ZXJ0aWNhbC1hbGlnbjogdG9wIiB3aWR0aD0iNTAlIj4K
PGEgaHJlZj0iJHtsaW5rfXJldj0kcmV2MSI+dmVyc2lvbiAkcmV2MTwvYT4kZGF0ZTEKPC90aD4K
PHRoIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7IHZlcnRpY2FsLWFsaWduOiB0b3AiIHdpZHRo
PSI1MCUiPgo8YSBocmVmPSIke2xpbmt9cmV2PSRyZXYyIj52ZXJzaW9uICRyZXYyPC9hPiRkYXRl
Mgo8L3RoPgo8L3RyPgpFT0YKCiAgIyBQcm9jZXNzIGRpZmYgdGV4dAogICMgcHJlZmV0Y2ggc2V2
ZXJhbCBsaW5lcwogIG15IEBidWYgPSBoZWFkKCRmaCk7CiAgbXkgJWQgPSBzY2FuX2RpcmVjdGl2
ZXMoQGJ1Zik7CgogIG15ICRsZWZ0Um93ICA9IDA7CiAgbXkgJHJpZ2h0Um93ID0gMDsKICBteSAo
JGRpZmZ0eHQsIEByaWdodENvbCwgQGxlZnRDb2wsICRvbGRsaW5lLCAkbmV3bGluZSwgJGZ1bm5h
bWUpOwoKICAkbGluayAuPSAnY29udGVudC10eXBlPXRleHQlMkZ4LWN2c3dlYi1tYXJrdXA7JzsK
ICAkbGluayAuPSAnbG49MTsnIHVubGVzcyAoJGxpbmsgPX4gL1w/LipcYmxuPTFcYi8pOwoKICB3
aGlsZSAoQGJ1ZiB8fCAhZW9mKCRmaCkpIHsKICAgICRkaWZmdHh0ID0gQGJ1ZiA/IHNoaWZ0IEBi
dWYgOiA8JGZoPjsKCiAgICBpZiAoJGRpZmZ0eHQgPX4gL15AQC8pIHsKICAgICAgKCRvbGRsaW5l
LCAkbmV3bGluZSwgJGZ1bm5hbWUpID0KICAgICAgICAkZGlmZnR4dCA9fiAvQEAgXC0oWzAtOV0r
KS4qXCsoWzAtOV0rKS4qQEAoLiopLzsKICAgICAgJGZ1bm5hbWUgPSBodG1scXVvdGUoJGZ1bm5h
bWUpOwogICAgICAkZnVubmFtZSA9fiBzL1xzLyZuYnNwOy9nbzsKICAgICAgJGZ1bm5hbWUgJiY9
ICImbmJzcDs8c3BhbiBzdHlsZT1cImZvbnQtc2l6ZTogc21hbGxlclwiPiRmdW5uYW1lPC9zcGFu
PiI7CiAgICAgIG15ICRvbCA9ICRvbGRsaW5lIHx8IDE7CiAgICAgIG15ICRubCA9ICRuZXdsaW5l
IHx8IDE7CgogICAgICBwcmludCA8PEVPRjsKPHRyPgo8dGQgd2lkdGg9IjUwJSIgY2xhc3M9ImRp
ZmYtaGVhZGluZyI+CiA8Yj48YSBocmVmPSIke2xpbmt9cmV2PSRyZXYxI2wkb2wiPkxpbmUmbmJz
cDskb2xkbGluZTwvYT48L2I+JGZ1bm5hbWUKPC90ZD4KPHRkIHdpZHRoPSI1MCUiIGNsYXNzPSJk
aWZmLWhlYWRpbmciPgogPGI+PGEgaHJlZj0iJHtsaW5rfXJldj0kcmV2MiNsJG5sIj5MaW5lJm5i
c3A7JG5ld2xpbmU8L2E+PC9iPiRmdW5uYW1lCjwvdGQ+CjwvdHI+CkVPRgoKICAgICAgJHN0YXRl
ICAgID0gImR1bXAiOwogICAgICAkbGVmdFJvdyAgPSAwOwogICAgICAkcmlnaHRSb3cgPSAwOwog
ICAgfSBlbHNlIHsKICAgICAgbXkgKCRkaWZmY29kZSwgJHJlc3QpID0gJGRpZmZ0eHQgPX4gL14o
Wy0rIF0pKC4qKS87CiAgICAgICRkaWZmY29kZSA9ICcnIHVubGVzcyBkZWZpbmVkKCRkaWZmY29k
ZSk7CiAgICAgICRfID0gJHJlc3Q7CgogICAgICAjIyMjIyMjIyMKICAgICAgIyBsaXR0bGUgc3Rh
dGUgbWFjaGluZSB0byBwYXJzZSB1bmlmaWVkLWRpZmYgb3V0cHV0IChIZW4sIHplbGxlckB0aGlu
ay5kZSkKICAgICAgIyBpbiBvcmRlciB0byBnZXQgc29tZSBuaWNlICdlZGlmZictbW9kZSBvdXRw
dXQKICAgICAgIyBzdGF0ZXM6CiAgICAgICMgICJkdW1wIiAgICAgICAgICAgICAtIGp1c3QgZHVt
cCB0aGUgdmFsdWUKICAgICAgIyAgIlByZUNoYW5nZVJlbW92ZSIgIC0gd2UgYmVnYW4gd2l0aCAn
LScgLi4gc28gdGhpcyBjb3VsZCBiZSB0aGUgc3RhcnQgb2YgYSAnY2hhbmdlJyBhcmVhIG9yIGp1
c3QgcmVtb3ZlCiAgICAgICMgICJQcmVDaGFuZ2UiICAgICAgICAtIG9rZXksIHdlIGdvdCBzZXZl
cmFsICctJyBsaW5lcyBhbmQgbW92ZWQgdG8gJysnIGxpbmVzIC0+IHRoaXMgaXMgYSBjaGFuZ2Ug
YmxvY2sKICAgICAgIyMjIyMjIyMjIwoKICAgICAgaWYgKCRkaWZmY29kZSBlcSAnKycpIHsKICAg
ICAgICBpZiAoJHN0YXRlIGVxICJkdW1wIikKICAgICAgICB7ICAgICMgJ2NoYW5nZScgbmV2ZXIg
YmVnaW5zIHdpdGggJysnOiBqdXN0IGR1bXAgb3V0IHZhbHVlCiAgICAgICAgICAkXyA9IHNwYWNl
ZEh0bWxUZXh0KCRyZXN0LCAkZHt0YWJzdG9wfSk7CiAgICAgICAgICBwcmludGYoPDxFT0YsICRf
KTsKPHRyPgogPHRkIGNsYXNzPSJkaWZmIGRpZmYtZW1wdHkiPiZuYnNwOzwvdGQ+CiA8dGQgY2xh
c3M9ImRpZmYgZGlmZi1hZGRlZCI+Jm5ic3A7JXM8L3RkPgo8L3RyPgpFT0YKICAgICAgICB9IGVs
c2UgeyAgICAjIHdlIGdvdCBtaW51cyBiZWZvcmUKICAgICAgICAgICRzdGF0ZSA9ICJQcmVDaGFu
Z2UiOwogICAgICAgICAgJHJpZ2h0Q29sWyRyaWdodFJvdysrXSA9ICRfOwogICAgICAgIH0KICAg
ICAgfSBlbHNpZiAoJGRpZmZjb2RlIGVxICctJykgewogICAgICAgICRzdGF0ZSA9ICJQcmVDaGFu
Z2VSZW1vdmUiOwogICAgICAgICRsZWZ0Q29sWyRsZWZ0Um93KytdID0gJF87CiAgICAgIH0gZWxz
ZSB7ICAgICMgZW1wdHkgZGlmZmNvZGUKICAgICAgICBmbHVzaF9kaWZmX3Jvd3MgXEBsZWZ0Q29s
LCBcQHJpZ2h0Q29sLCAkbGVmdFJvdywgJHJpZ2h0Um93OwogICAgICAgICRfID0gc3BhY2VkSHRt
bFRleHQoJHJlc3QsICRke3RhYnN0b3B9KTsKICAgICAgICBwcmludGYoPDxFT0YsICRfLCAkXyk7
Cjx0cj4KIDx0ZCBjbGFzcz0iZGlmZiBkaWZmLXNhbWUiPiZuYnNwOyVzPC90ZD4KIDx0ZCBjbGFz
cz0iZGlmZiBkaWZmLXNhbWUiPiZuYnNwOyVzPC90ZD4KPC90cj4KRU9GCiAgICAgICAgJHN0YXRl
ICAgID0gImR1bXAiOwogICAgICAgICRsZWZ0Um93ICA9IDA7CiAgICAgICAgJHJpZ2h0Um93ID0g
MDsKICAgICAgfQogICAgfQogIH0KICBjbG9zZSgkZmgpOwoKICBmbHVzaF9kaWZmX3Jvd3MgXEBs
ZWZ0Q29sLCBcQHJpZ2h0Q29sLCAkbGVmdFJvdywgJHJpZ2h0Um93OwoKICAjIHN0YXRlIGlzIGVt
cHR5IGlmIHdlIGRpZG4ndCBoYXZlIGFueSBjaGFuZ2UKICBpZiAoISRzdGF0ZSkgewogICAgcHJp
bnQgPDxFT0Y7Cjx0cj4KIDx0ZCBjb2xzcGFuPSIyIj4mbmJzcDs8L3RkPgo8L3RyPgo8dHIgY2xh
c3M9ImRpZmYgZGlmZi1lbXB0eSI+CiA8dGQgY29sc3Bhbj0iMiIgYWxpZ249ImNlbnRlciI+PGI+
LSBObyB2aWV3YWJsZSBjaGFuZ2UgLTwvYj48L3RkPgo8L3RyPgpFT0YKICB9CgogIHByaW50Zig8
PEVPRiwgJHNjcmlwdHdoZXJlKTsKPC90YWJsZT4KPGhyIHN0eWxlPSJ3aWR0aDogMTAwJSUiIC8+
Cjxmb3JtIG1ldGhvZD0iZ2V0IiBhY3Rpb249IiVzIj4KPGRpdiBzdHlsZT0iZmxvYXQ6IGxlZnQi
Pgo8bGFiZWwgZm9yPSJmIj5EaWZmIGZvcm1hdDo8YnIgLz4KRU9GCiAgcHJpbnREaWZmU2VsZWN0
U3RpY2t5VmFycygpOwogIHByaW50RGlmZlNlbGVjdCgkdXNlX2phdmFfc2NyaXB0KTsKICBwcmlu
dGYoPDxFT0YsICRyZXYxLCAkcmV2Mik7CjwvbGFiZWw+CjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZh
bHVlPSJTaG93IiAvPgo8L2Rpdj4KPHRhYmxlIHN0eWxlPSJmbG9hdDogcmlnaHQ7IGJvcmRlcjog
dGhpbiBvdXRzZXQiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMSIgdGl0bGU9IkxlZ2Vu
ZCIgc3VtbWFyeT0iTGVnZW5kIj4KIDx0cj4KICA8dGQgYWxpZ249ImNlbnRlciIgY2xhc3M9ImRp
ZmYgZGlmZi1yZW1vdmVkIj5SZW1vdmVkIGZyb20gdi4lczwvdGQ+CiAgPHRkIGNsYXNzPSJkaWZm
IGRpZmYtZW1wdHkiPiZuYnNwOzwvdGQ+CiA8L3RyPjx0ciBjbGFzcz0iZGlmZiBkaWZmLWNoYW5n
ZWQiPgogIDx0ZCBhbGlnbj0iY2VudGVyIiBjb2xzcGFuPSIyIj5jaGFuZ2VkIGxpbmVzPC90ZD4K
IDwvdHI+PHRyPgogIDx0ZCBjbGFzcz0iZGlmZiBkaWZmLWVtcHR5Ij4mbmJzcDs8L3RkPgogIDx0
ZCBhbGlnbj0iY2VudGVyIiBjbGFzcz0iZGlmZiBkaWZmLWFkZGVkIj5BZGRlZCBpbiB2LiVzPC90
ZD4KIDwvdHI+CjwvdGFibGU+CjwvZm9ybT4KPGJyIGNsZWFyPSJhbGwiIC8+CkVPRgp9CgoKc3Vi
IGRvRW5zY3JpcHQoJCQkOyQpCnsKICBteSAoJGZpbGVoYW5kbGUsICRoaWdobGlnaHQsICRsaW5l
bnVtYmVycywgJGxhbmcpID0gQF87CiAgJGxhbmcgfHw9ICdjdnN3ZWInOwoKICBteSBAY21kID0g
KCRDTUR7ZW5zY3JpcHR9LAogICAgICAgICAgICAgQGVuc2NyaXB0X29wdGlvbnMsCiAgICAgICAg
ICAgICAnLXEnLCAiLS1sYW5ndWFnZT0kbGFuZyIsICctbycsICctJywgIi0taGlnaGxpZ2h0PSRo
aWdobGlnaHQiKTsKCiAgbG9jYWwgKkVOU0NSSVBUX09VVDsKICBteSAoJGgsICRlcnIpID0KICAg
IHN0YXJ0cHJvYyhcQGNtZCwgJGZpbGVoYW5kbGUsICc+cGlwZScsIFwqRU5TQ1JJUFRfT1VUKTsK
ICBmYXRhbCgnNTAwIEludGVybmFsIEVycm9yJywgJGVycikgdW5sZXNzICRoOwoKICAjIFdlIGNv
dWxkIHNob3J0LWNpcmN1aXQgYW5kIGhhdmUgZW5zY3JpcHQgb3V0cHV0IGRpcmVjdGx5IHRvIFNU
RE9VVCBhYm92ZSwKICAjIGJ1dCB0aGF0IGRvZXNuJ3Qgd29yayB3aXRoIG1vZF9wZXJsIChhdCBs
ZWFzdCBzb21lIDEuOTkgdmVyc2lvbnMpLgogIGlmICgkbGluZW51bWJlcnMpIHsKICAgIG15ICRs
biA9IDA7CiAgICB3aGlsZSAoPEVOU0NSSVBUX09VVD4pIHsKICAgICAgcHJpbnRmICc8YSBpZD0i
bCVkIiBjbGFzcz0ic3JjIj4lNWQ6IDwvYT4nLCAoKyskbG4pIHggMjsKICAgICAgcHJpbnQgJF87
CiAgICB9CiAgfSBlbHNlIHsKICAgIGxvY2FsICQvID0gdW5kZWY7CiAgICBwcmludCA8RU5TQ1JJ
UFRfT1VUPjsKICB9CiAgJGgtPmZpbmlzaCgpOwp9CgoKIwojIFRoZSBwYXNzZWQgaW4gJHBhdGgg
YW5kICRmaWxlbmFtZSBzaG91bGQgbm90IGJlIFVSSSBlc2NhcGVkLCBhbmQgJHN3aGVyZQojICpz
aG91bGQqIGJlLgojCnN1YiBuYXZpZ2F0ZUhlYWRlcigkJCQkJDskKQp7CiAgbXkgKCRzd2hlcmUs
ICRwYXRoLCAkZmlsZW5hbWUsICRyZXYsICR0aXRsZSwgJG1vZGRhdGUpID0gQF87CiAgJHN3aGVy
ZSA9ICIiIGlmICgkc3doZXJlIGVxICRzY3JpcHR3aGVyZSk7CiAgJHN3aGVyZSA9ICcuLycgLiB1
cmlfZXNjYXBlKCRmaWxlbmFtZSkgaWYgKCRzd2hlcmUgZXEgIiIpOwoKICBteSAkcWZpbGUgPSBo
dG1scXVvdGUoJGZpbGVuYW1lKTsKICBteSAkcXBhdGggPSBodG1scXVvdGUoJHBhdGgpOwogIG15
ICR0cmV2ICA9ICRyZXYgPyAiIC0gIiAuIGh0bWxxdW90ZSgkcmV2KSA6ICcnOwoKICBodHRwX2hl
YWRlcignJywgJG1vZGRhdGUpOwoKICBwcmludCA8PEVPRjsKJEhUTUxfRE9DVFlQRQo8aHRtbD4K
PGhlYWQ+Cjx0aXRsZT4kcXBhdGgkcWZpbGUgLSAkdGl0bGUkdHJldjwvdGl0bGU+CiRIVE1MX01F
VEEkQ1NTPC9oZWFkPgo8Ym9keSBjbGFzcz0ic3JjIj4KPHRhYmxlIGNsYXNzPSJuYXZpZ2F0ZS1o
ZWFkZXIiIHdpZHRoPSIxMDAlIiBzdW1tYXJ5PSJOYXZpZ2F0aW9uIj4KIDx0cj4KICA8dGQ+CkVP
RgoKICBteSAkZnJhZyA9ICcnOwogIGlmICgkcmV2KSB7CiAgICAkZnJhZyAgPSAnIyc7CiAgICAk
ZnJhZyAuPSAncmV2JyBpZiAoJHJldiA9fiAvXC4vKTsgICMgTm9ybWFsIHJldmlzaW9uOiBwcmVm
aXggd2l0aCAicmV2Ii4KICAgICRmcmFnIC49ICRyZXY7ICAgICAgICAgICAgICAgICAgICAgIyBB
cHBlbmQgcmV2aXNpb24vYnJhbmNoL3RhZy4KICB9CiAgbXkgJGJhY2t1cmwgPSAiJHN3aGVyZSRx
dWVyeSRmcmFnIjsKCiAgcHJpbnQgJmxpbmsoJGJhY2tpY29uLCAkYmFja3VybCk7CiAgcHJpbnRm
ICc8Yj5SZXR1cm4gdG8gJXMgQ1ZTIGxvZycsICZsaW5rKCRxZmlsZSwgJGJhY2t1cmwpOwogIHBy
aW50ICI8L2I+ICRmaWxlaWNvbjwvdGQ+IjsKCiAgcHJpbnRmKDw8RU9GLCAkZGlyaWNvbiwgJmNs
aWNrYWJsZVBhdGgoJHBhdGgsIDEpKTsKICA8dGQgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0Ij4l
cyA8Yj5VcCB0byAlczwvYj48L3RkPgogPC90cj4KPC90YWJsZT4KRU9GCn0KCgpzdWIgcGx1cmFs
X3dyaXRlKCQkKQp7CiAgbXkgKCRudW0sICR0ZXh0KSA9IEBfOwogIGlmICgkbnVtICE9IDEpIHsK
ICAgICR0ZXh0IC49ICJzIjsKICB9CgogIGlmICgkbnVtID4gMCkgewogICAgcmV0dXJuIGpvaW4g
KCcgJywgJG51bSwgJHRleHQpOwogIH0gZWxzZSB7CiAgICByZXR1cm4gIiI7CiAgfQp9CgoKIyMK
IyBwcmludCByZWFkYWJsZSB0aW1lc3RhbXAgaW4gdGVybXMgb2YKIyAnLi50aW1lIGFnbycKIyBI
LiBaZWxsZXIgPHplbGxlckB0aGluay5kZT4KIyMKc3ViIHJlYWRhYmxlVGltZSgkJCkKewogIG15
ICgkc2VjcywgJGxvbmcpID0gQF87CgogICMgVGhpcyBmdW5jdGlvbiB3b3JrcyBjb3JyZWN0bHkg
Zm9yIHRpbWUgPj0gMiBzZWNvbmRzLgogIHJldHVybiAndmVyeSBsaXR0bGUgdGltZScgaWYgKCRz
ZWNzIDwgMik7CgogIG15ICVkZXNjID0gKAogICAgICAgICAgICAgIDEgICAgICAgID0+ICdzZWNv
bmQnLAogICAgICAgICAgICAgIDYwICAgICAgID0+ICdtaW51dGUnLAogICAgICAgICAgICAgIDM2
MDAgICAgID0+ICdob3VyJywKICAgICAgICAgICAgICA4NjQwMCAgICA9PiAnZGF5JywKICAgICAg
ICAgICAgICA2MDQ4MDAgICA9PiAnd2VlaycsCiAgICAgICAgICAgICAgMjYyODAwMCAgPT4gJ21v
bnRoJywKICAgICAgICAgICAgICAzMTUzNjAwMCA9PiAneWVhcicKICAgICAgICAgICAgICk7Cgog
IG15IEBicmVha3MgPSBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAlZGVzYzsKICBteSAkaSA9IDA7
CgogIHdoaWxlICgkaSA8PSAkI2JyZWFrcyAmJiAkc2VjcyA+PSAyICogJGJyZWFrc1skaV0pIHsK
ICAgICRpKys7CiAgfQogICRpLS07CiAgbXkgJGJyZWFrICA9ICRicmVha3NbJGldOwogIG15ICRy
ZXR2YWwgPSBwbHVyYWxfd3JpdGUoaW50KCRzZWNzIC8gJGJyZWFrKSwgJGRlc2N7JGJyZWFrfSk7
CgogIGlmICgkbG9uZyA9PSAxICYmICRpID4gMCkgewogICAgbXkgJHJlc3QgPSAkc2VjcyAlICRi
cmVhazsKICAgICRpLS07CiAgICAkYnJlYWsgPSAkYnJlYWtzWyRpXTsKICAgIG15ICRyZXN0dGlt
ZSA9IHBsdXJhbF93cml0ZShpbnQoJHJlc3QgLyAkYnJlYWspLCAkZGVzY3skYnJlYWt9KTsKICAg
IGlmICgkcmVzdHRpbWUpIHsKICAgICAgJHJldHZhbCAuPSAiLCAkcmVzdHRpbWUiOwogICAgfQog
IH0KCiAgcmV0dXJuICRyZXR2YWw7Cn0KCgojCiMgUmV0dXJucyBhIGh0bWxpZmllZCBwYXRoIHdo
ZXJlIGVhY2ggZGlyZWN0b3J5IGlzIGEgbGluayBmb3IgZmFzdGVyCiMgbmF2aWdhdGlvbi4gICRj
bGlja0xhc3QgY29udHJvbHMgd2hldGhlciB0aGUgYmFzZW5hbWUKIyAobGFzdCBkaXJlY3Rvcnkv
ZmlsZSkgaXMgYSBsaW5rIGFzIHdlbGwuICBUaGUgcGFzc2VkIGluICRwYXRobmFtZSBzaG91bGQK
IyAqbm90KiBiZSBVUkkgZXNjYXBlZC4KIwpzdWIgY2xpY2thYmxlUGF0aCgkJCkKewogIG15ICgk
cGF0aG5hbWUsICRjbGlja0xhc3QpID0gQF87CgogIG15ICRyb290ID0gJ1snIC4gaHRtbHF1b3Rl
KCRDVlNST09UZGVzY3J7JGN2c3RyZWV9IHx8ICRjdnN0cmVlKSAuICddJzsKCiAgIyBUaGlzIHNo
b3VsZCBuZXZlciBoYXBwZW4gKHNlZSBjaG9vc2VDVlNSb290KCkpLCBidXQgbGV0J3MgYmUgc3Vy
ZS4uLgogIHJldHVybiAkcm9vdCBpZiAoJHBhdGhuYW1lIGVxICcvJyk7CgogIG15ICRyZXR2YWwg
PQogICAgJyAnIC4gJmxpbmsoJHJvb3QsIHNwcmludGYoJyVzLyVzI2Rpcmxpc3QnLCAkc2NyaXB0
bmFtZSwgJHF1ZXJ5KSk7CiAgbXkgJHdoZXJlcGF0aCA9ICcnOwogIG15ICgkbGFzdHNsYXNoKSA9
ICRwYXRobmFtZSA9fiBtfC8kfDsKCiAgZm9yZWFjaCAoc3BsaXQobXwvfCwgJHBhdGhuYW1lKSkg
ewogICAgJHJldHZhbCAuPSAnIC8gJzsKICAgICR3aGVyZXBhdGggLj0gIi8kXyI7CiAgICBteSAk
bGFzdCA9ICIkd2hlcmVwYXRoLyIgZXEgIi8kcGF0aG5hbWUiIHx8ICR3aGVyZXBhdGggZXEgIi8k
cGF0aG5hbWUiOwoKICAgIGlmICgkY2xpY2tMYXN0IHx8ICEkbGFzdCkgewogICAgICAkcmV0dmFs
IC49ICZsaW5rKGh0bWxxdW90ZSgkXyksCiAgICAgICAgICAgICAgICAgICAgICAgam9pbiAoJycs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjcmlwdG5hbWUsIHVyaV9lc2NhcGVfcGF0
aCgkd2hlcmVwYXRoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoISRsYXN0IHx8ICRs
YXN0c2xhc2ggPyAnLycgOiAnJyksICRxdWVyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoISRsYXN0IHx8ICRsYXN0c2xhc2ggPyAiI2Rpcmxpc3QiIDogIiIpKSk7CiAgICB9IGVsc2Ug
eyAgICAjIGRvIG5vdCBtYWtlIGEgbGluayB0byB0aGUgY3VycmVudCBkaXIKICAgICAgJHJldHZh
bCAuPSBodG1scXVvdGUoJF8pOwogICAgfQogIH0KICByZXR1cm4gJHJldHZhbDsKfQoKCnN1YiBj
aG9vc2VDVlNSb290KCkKewogIHByaW50ICI8Zm9ybSBtZXRob2Q9XCJnZXRcIiBhY3Rpb249XCIk
c2NyaXB0d2hlcmVcIj5cbjxwPlxuIjsKICBpZiAoMiA8PSBAQ1ZTUk9PVCkgewogICAgZm9yZWFj
aCBteSAkayAoa2V5cyAlaW5wdXQpIHsKICAgICAgcHJpbnRmKCI8aW5wdXQgdHlwZT1cImhpZGRl
blwiIG5hbWU9XCIlc1wiIHZhbHVlPVwiJXNcIiAvPlxuIiwKICAgICAgICAgICAgIGh0bWxxdW90
ZSgkayksIGh0bWxxdW90ZSgkaW5wdXR7JGt9KSkKICAgICAgICBpZiAoJGlucHV0eyRrfSAmJiAk
ayBuZSAnY3Zzcm9vdCcpOwogICAgfQoKICAgIHByaW50Zig8PEVPRiwgJHVzZV9qYXZhX3Njcmlw
dCA/ICcgb25jaGFuZ2U9InRoaXMuZm9ybS5zdWJtaXQoKSInIDogJycpOwo8bGFiZWwgZm9yPSJj
dnNyb290IiBhY2Nlc3NrZXk9IkMiPkNWUyBSb290Ogo8c2VsZWN0IGlkPSJjdnNyb290IiBuYW1l
PSJjdnNyb290IiVzPgpFT0YKCiAgICBmb3JlYWNoIG15ICRrIChAQ1ZTUk9PVCkgewogICAgICBw
cmludGYoIjxvcHRpb24gdmFsdWU9XCIlc1wiJXM+JXM8L29wdGlvbj5cbiIsCiAgICAgICAgICAg
ICBodG1scXVvdGUoJGspLAogICAgICAgICAgICAgKCRrIGVxICRjdnN0cmVlKSA/ICcgc2VsZWN0
ZWQ9InNlbGVjdGVkIicgOiAnJywKICAgICAgICAgICAgIGh0bWxxdW90ZSgkQ1ZTUk9PVGRlc2Ny
eyRrfSB8fCAkaykpOwogICAgfQogICAgcHJpbnQgJzwvc2VsZWN0PjwvbGFiZWw+JzsKICB9IGVs
c2UgewoKICAgICMgbm8gY2hvaWNlIC0tIGJ1dCB3ZSBuZWVkIHRoZSBmb3JtIHRvIHNlbGVjdCBt
b2R1bGUvcGF0aCwKICAgICMgYXQgbGVhc3QgZm9yIE5ldHNjYXBlCiAgICBwcmludGYgIkNWUyBS
b290OiA8Yj5bJXNdPC9iPiIsCiAgICAgIGh0bWxxdW90ZSgkQ1ZTUk9PVGRlc2NyeyRjdnN0cmVl
fSB8fCAkY3ZzdHJlZSk7CiAgfQoKICBwcmludCA8PEVPRjsKPGxhYmVsIGZvcj0ibXBhdGgiIGFj
Y2Vzc2tleT0iTSI+Ck1vZHVsZSBwYXRoIG9yIGFsaWFzOgo8aW5wdXQgdHlwZT0idGV4dCIgaWQ9
Im1wYXRoIiBuYW1lPSJwYXRoIiB2YWx1ZT0iIiBzaXplPSIxNSIgLz4KPC9sYWJlbD4KPGlucHV0
IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkdvIiBhY2Nlc3NrZXk9Ik8iIC8+CjwvcD4KPC9mb3JtPgpF
T0YKfQoKCnN1YiBjaG9vc2VNaXJyb3IoKQp7CiAgIyBUaGlzIGNvZGUgY29tZXMgZnJvbSB0aGUg
b3JpZ2luYWwgQlNELWN2c3dlYgogICMgYW5kIG1heSBub3QgYmUgdXNlZnVsIGZvciB5b3VyIHNp
dGU7IElmIHlvdSBkb24ndAogICMgc2V0ICVNSVJST1JTIHRoaXMgd29uJ3Qgc2hvdyB1cCwgYW55
d2F5LgogIHNjYWxhciglTUlSUk9SUykgb3IgcmV0dXJuOwoKICAjIFNob3VsZCBwZXJoYXBzIGV4
Y2x1ZGUgdGhlIGN1cnJlbnQgc2l0ZSBzb21laG93Li4uCiAgcHJpbnQgIlxuPHA+XG5UaGlzIENW
U3dlYiBpcyBtaXJyb3JlZCBpblxuIjsKCiAgbXkgQHRtcCA9IG1hcCgmbGluayhodG1scXVvdGUo
JF8pLCAkTUlSUk9SU3skX30pLCBzb3J0IGtleXMgJU1JUlJPUlMpOwogIG15ICR0bXAgPSBwb3Ag
KEB0bXApOwoKICBpZiAoc2NhbGFyKEB0bXApKSB7CiAgICBwcmludCBqb2luICgnLCAnLCBAdG1w
KSwgJyBhbmQgJzsKICB9CgogIHByaW50ICIkdG1wLlxuPC9wPlxuIjsKfQoKCnN1YiBmaWxlU29y
dENtcCgpCnsKICAobXkgJGFmID0gJGEpID1+IHMvLHYkLy87CiAgKG15ICRiZiA9ICRiKSA9fiBz
Lyx2JC8vOwogIG15ICgkcmV2MSwgJGRhdGUxLCAkbG9nMSwgJGF1dGhvcjEsICRmaWxlbmFtZTEp
ID0gQHskZmlsZWluZm97JGFmfX0KICAgIGlmIChkZWZpbmVkKCRmaWxlaW5mb3skYWZ9KSk7CiAg
bXkgKCRyZXYyLCAkZGF0ZTIsICRsb2cyLCAkYXV0aG9yMiwgJGZpbGVuYW1lMikgPSBAeyRmaWxl
aW5mb3skYmZ9fQogICAgaWYgKGRlZmluZWQoJGZpbGVpbmZveyRiZn0pKTsKCiAgbXkgJGNvbXAg
PSAwOwogIGlmIChkZWZpbmVkKCRmaWxlbmFtZTEpICYmIGRlZmluZWQoJGZpbGVuYW1lMikgJiYK
ICAgICAgJGFmIGVxICRmaWxlbmFtZTEgICAmJiAkYmYgZXEgJGZpbGVuYW1lMikKICB7CgogICAg
IyBUd28gZmlsZXMKICAgICRjb21wID0gLXJldmNtcCgkcmV2MSwgJHJldjIpICAgICAgICAgICAg
IGlmICgkYnlyZXYgICYmICRyZXYxICAmJiAkcmV2Mik7CiAgICAkY29tcCA9ICgkZGF0ZTIgICA8
PT4gJGRhdGUxKSAgICAgICAgICAgICBpZiAoJGJ5ZGF0ZSAmJiAkZGF0ZTEgJiYgJGRhdGUyKTsK
ICAgIGlmICgkaW5wdXR7aWdub3JlY2FzZX0pIHsKICAgICAgJGNvbXAgPSAodWMoJGxvZzEpICAg
IGNtcCB1YygkbG9nMikpICAgIGlmICgkYnlsb2cgJiYgJGxvZzEgJiYgJGxvZzIpOwogICAgICAk
Y29tcCA9ICh1YygkYXV0aG9yMSkgY21wIHVjKCRhdXRob3IyKSkgaWYgKCRieWF1dGhvciAmJgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhdXRob3Ix
ICYmICRhdXRob3IyKTsKICAgIH0gZWxzZSB7CiAgICAgICRjb21wID0gKCRsb2cxICAgIGNtcCAk
bG9nMikgICAgICAgICAgICBpZiAoJGJ5bG9nICYmICRsb2cxICYmICRsb2cyKTsKICAgICAgJGNv
bXAgPSAoJGF1dGhvcjEgY21wICRhdXRob3IyKSAgICAgICAgIGlmICgkYnlhdXRob3IgJiYKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYXV0aG9yMSAm
JiAkYXV0aG9yMik7CiAgICB9CiAgfQoKICBpZiAoJGNvbXAgPT0gMCkgewoKICAgICMgRGlyZWN0
b3JpZXMgZmlyc3QsIHRoZW4gZmlsZXMgdW5kZXIgdmVyc2lvbiBjb250cm9sLAogICAgIyB0aGVu
IG90aGVyLCAicm9ndWUiIGZpbGVzLgogICAgIyBTb3J0IGJ5IGZpbGVuYW1lIGlmIG5vIG90aGVy
IGNyaXRlcmlhIGF2YWlsYWJsZS4KCiAgICBteSAkYWQgPSAoCiAgICAgICgtZCAiJGZ1bGxuYW1l
LyRhIikKICAgICAgPyAnRCcKICAgICAgOiAoZGVmaW5lZCgkZmlsZWluZm97JGFmfSkgPyAnRicg
OiAnUicpCiAgICApOwogICAgbXkgJGJkID0gKAogICAgICAoLWQgIiRmdWxsbmFtZS8kYiIpCiAg
ICAgID8gJ0QnCiAgICAgIDogKGRlZmluZWQoJGZpbGVpbmZveyRiZn0pID8gJ0YnIDogJ1InKQog
ICAgKTsKICAgIChteSAkYyA9ICRhKSA9fiBzfC4qL3x8OwogICAgKG15ICRkID0gJGIpID1+IHN8
LiovfHw7CgogICAgbXkgKCRsLCAkcikgPSAoIiRhZCRjIiwgIiRiZCRkIik7CiAgICAkY29tcCA9
ICRpbnB1dHtpZ25vcmVjYXNlfSA/ICh1YygkbCkgY21wIHVjKCRyKSkgOiAoJGwgY21wICRyKTsK
CiAgICAjIFBhcmVudCBkaXIgaXMgYWx3YXlzIGZpcnN0LCB0aGVuIEF0dGljLgogICAgaWYgKCRj
b21wICE9IDApIHsKICAgICAgaWYgKCRsIGVxICdELi4nKSB7CiAgICAgICAgJGNvbXAgPSAtMTsK
ICAgICAgfSBlbHNpZiAoJHIgZXEgJ0QuLicpIHsKICAgICAgICAkY29tcCA9IDE7CiAgICAgIH0g
ZWxzaWYgKCRsIGVxICdEQXR0aWMnKSB7CiAgICAgICAgJGNvbXAgPSAtMTsKICAgICAgfSBlbHNp
ZiAoJHIgZXEgJ0RBdHRpYycpIHsKICAgICAgICAkY29tcCA9IDE7CiAgICAgIH0KICAgIH0KICB9
CiAgcmV0dXJuICRjb21wOwp9CgojCiMgUmV0dXJucyBhIFVSTCB0byBkb3dubG9hZCB0aGUgc2Vs
ZWN0ZWQgcmV2aXNpb24uCiMgRXhwZWN0cyB0aGUgcGFzc2VkIGluIFVSTCB0byBiZSBVUkkgZXNj
YXBlZCwgcmVsYXRpdmUsIGFuZCB3aXRob3V0IGEgcXVlcnkKIyBzdHJpbmcuCiMKc3ViIGRvd25s
b2FkX3VybCgkJDskKQp7CiAgbXkgKCR1cmwsICRyZXZpc2lvbiwgJG1pbWV0eXBlKSA9IEBfOwog
IG15IEBkb3RzID0gJHJldmlzaW9uID1+IC9cLi9nOwogICRyZXZpc2lvbiA9fiBzL1xiMFwuKD89
XGQrJCkvLyBpZiAoc2NhbGFyKEBkb3RzKSAmIDEpOwoKICBpZiAoIWRlZmluZWQoJG1pbWV0eXBl
KSB8fCAkbWltZXR5cGUgIX4gQ1ZTV0VCTUFSS1VQKSB7CiAgICBteSAkcGF0aCA9ICR3aGVyZTsK
ICAgICRwYXRoID1+IHN8W14vXSskfHw7CiAgICAkdXJsID0gIiRzY3JpcHRuYW1lLyRDaGVja291
dE1hZ2ljLyRwYXRoJHVybCI7CiAgfQogICR1cmwgLj0gJz9yZXY9JyAuIHVyaV9lc2NhcGUoJHJl
dmlzaW9uKTsKICAkdXJsIC49ICc7Y29udGVudC10eXBlPScgLiB1cmlfZXNjYXBlKCRtaW1ldHlw
ZSkgaWYgJG1pbWV0eXBlOwoKICByZXR1cm4gJHVybDsKfQoKIwojIFJldHVybnMgYSBsaW5rIHRv
IGRvd25sb2FkIHRoZSBzZWxlY3RlZCByZXZpc2lvbi4KIyBFeHBlY3RzIHRoZSBwYXNzZWQgaW4g
VVJMIHRvIGJlIFVSSSBlc2NhcGVkLCByZWxhdGl2ZSwKIyBhbmQgd2l0aG91dCBhIHF1ZXJ5IHN0
cmluZy4KIwpzdWIgZG93bmxvYWRfbGluaygkJCQ7JCkKewogIG15ICgkdXJsLCAkcmV2aXNpb24s
ICR0ZXh0bGluaywgJG1pbWV0eXBlKSA9IEBfOwogIHJldHVybiBzcHJpbnRmKCc8YSBocmVmPSIl
cyIgY2xhc3M9ImRvd25sb2FkLWxpbmsiPiVzPC9hPicsCiAgICAgICAgICAgICAgICAgZG93bmxv
YWRfdXJsKCR1cmwsICRyZXZpc2lvbiwgJG1pbWV0eXBlKSAuICRiYXJlcXVlcnksCiAgICAgICAg
ICAgICAgICAgaHRtbHF1b3RlKCR0ZXh0bGluaykpOwp9CgojCiMgUmV0dXJucyBhIFVSTCB0byBk
aXNwbGF5IHRoZSBzZWxlY3RlZCByZXZpc2lvbi4KIyBFeHBlY3RzIHRoZSBwYXNzZWQgaW4gVVJM
IHRvIGJlIFVSSSBlc2NhcGVkLCBhbmQgd2l0aG91dCBhIHF1ZXJ5IHN0cmluZy4KIwpzdWIgZGlz
cGxheV91cmwoJCQ7JCkKewogIG15ICgkdXJsLCAkcmV2aXNpb24sICRtaW1ldHlwZSkgPSBAXzsK
ICAkdXJsIC49ICc/cmV2PScgLiB1cmlfZXNjYXBlKCRyZXZpc2lvbik7CiAgJHVybCAuPSAnO2Nv
bnRlbnQtdHlwZT0nIC4gdXJpX2VzY2FwZSgkbWltZXR5cGUpIGlmICRtaW1ldHlwZTsKICByZXR1
cm4gJHVybDsKfQoKIwojIFJldHVybnMgYSBsaW5rIHRvIGRpc3BsYXkgdGhlIHNlbGVjdGVkIHJl
dmlzaW9uLgojIEV4cGVjdHMgdGhlIHBhc3NlZCBpbiBVUkwgdG8gYmUgVVJJIGVzY2FwZWQsIGFu
ZCB3aXRob3V0IGEgcXVlcnkgc3RyaW5nLgojCnN1YiBkaXNwbGF5X2xpbmsoJCQ7JCQpCnsKICBt
eSAoJHVybCwgJHJldmlzaW9uLCAkdGV4dGxpbmssICRtdHlwZSkgPSBAXzsKICAkdGV4dGxpbmsg
PSAkcmV2aXNpb24gdW5sZXNzIGRlZmluZWQoJHRleHRsaW5rKTsKICByZXR1cm4gc3ByaW50Zign
PGEgaHJlZj0iJXMiIGNsYXNzPSJkaXNwbGF5LWxpbmsiPiVzPC9hPicsCiAgICAgICAgICAgICAg
ICAgZGlzcGxheV91cmwoJHVybCwgJHJldmlzaW9uLCAkbXR5cGUpIC4gJGJhcmVxdWVyeSwKICAg
ICAgICAgICAgICAgICBodG1scXVvdGUoJHRleHRsaW5rKSk7Cn0KCiMKIyBFeHBlY3RzIHRoZSBw
YXNzZWQgaW4gVVJMIHRvIGJlIFVSSSBlc2NhcGVkLCBhbmQgd2l0aG91dCBhIHF1ZXJ5IHN0cmlu
Zy4KIyBUaGUgcGFzc2VkIGluIGxpbmsgdGV4dCBzaG91bGQgYmUgYWxyZWFkeSBIVE1MIGVzY2Fw
ZWQgYXMgYXBwcm9wcmlhdGUuCiMKc3ViIGdyYXBoX2xpbmsoJDskKQp7CiAgbXkgKCR1cmwsICR0
ZXh0KSA9IEBfOwogICR0ZXh0IHx8PSAkZ3JhcGhpY29uOwogIHJldHVybiBzcHJpbnRmKCc8YSBo
cmVmPSIlcz9ncmFwaD0xJXMiPiVzPC9hPicsICR1cmwsICRiYXJlcXVlcnksICR0ZXh0KTsKfQoK
IwojIFJldHVybnMgYSBsaW5rIHRvIENWU0hpc3RvcnkgZm9yIHRoZSBnaXZlbiBkaXJlY3Rvcnkg
YW5kIGZpbGVuYW1lLgojCnN1YiBoaXN0b3J5X2xpbmsoJCQ7JCkKewogIG15ICgkZGlyLCAkZmls
ZSwgJHRleHQpID0gQF87CiAgJGRpciAgfHw9ICcnOwogICRmaWxlIHx8PSAnJzsKICAkdGV4dCB8
fD0gJ0hpc3RvcnknOwogIHJldHVybiAmbGluaygkdGV4dCwKICAgICAgICAgICAgICAgc3ByaW50
ZignJXM/Y3Zzcm9vdD0lcztkc2VhcmNoPSVzO2ZzZWFyY2g9JXM7bGltaXQ9MScsCiAgICAgICAg
ICAgICAgICAgICAgICAgJGN2c2hpc3RvcnlfdXJsLCB1cmlfZXNjYXBlKCRpbnB1dHtjdnNyb290
fSB8fCAnJyksCiAgICAgICAgICAgICAgICAgICAgICAgdXJpX2VzY2FwZSgkZGlyKSwgdXJpX2Vz
Y2FwZSgkZmlsZSkpKTsKfQoKIyBSZXR1cm5zIGEgUXVlcnkgc3RyaW5nIHdpdGggdGhlCiMgc3Bl
Y2lmaWVkIHBhcmFtZXRlciB0b2dnbGVkCnN1YiB0b2dnbGVRdWVyeSgkOyQpCnsKICBteSAoJHRv
Z2dsZSwgJHZhbHVlKSA9IEBfOwoKICBteSAldmFycyA9ICVpbnB1dDsKCiAgaWYgKGRlZmluZWQo
JHZhbHVlKSkgewogICAgJHZhcnN7JHRvZ2dsZX0gPSAkdmFsdWU7CiAgfSBlbHNlIHsKICAgICR2
YXJzeyR0b2dnbGV9ID0gJHZhcnN7JHRvZ2dsZX0gPyAwIDogMTsKICB9CgogICMgQnVpbGQgYSBu
ZXcgcXVlcnkgb2Ygbm9uLWRlZmF1bHQgcGFyYW1lbnRlcnMKICBteSAkbmV3cXVlcnkgPSAiIjsK
ICBmb3JlYWNoIG15ICR2YXIgKEBzdGlja3l2YXJzKSB7CiAgICBteSAoJHZhbHVlKSAgID0gZGVm
aW5lZCgkdmFyc3skdmFyfSkgICAgICAgICA/ICR2YXJzeyR2YXJ9ICAgICAgICAgOiAiIjsKICAg
IG15ICgkZGVmYXVsdCkgPSBkZWZpbmVkKCRERUZBVUxUVkFMVUV7JHZhcn0pID8gJERFRkFVTFRW
QUxVRXskdmFyfSA6ICIiOwoKICAgIGlmICgkdmFsdWUgbmUgJGRlZmF1bHQpIHsKICAgICAgJG5l
d3F1ZXJ5IC49ICc7JyBpZiAoJG5ld3F1ZXJ5IG5lICIiKTsKICAgICAgJG5ld3F1ZXJ5IC49IHVy
aV9lc2NhcGUoJHZhcikgLiAnPScgLiB1cmlfZXNjYXBlKCR2YWx1ZSk7CiAgICB9CiAgfQoKICBp
ZiAoJG5ld3F1ZXJ5KSB7CiAgICByZXR1cm4gJz8nIC4gJG5ld3F1ZXJ5OwogIH0KICByZXR1cm4g
IiI7Cn0KCnN1YiBodG1scXVvdGUoJCkKewogIGxvY2FsICgkXykgPSBAXzsKICAjIFNwZWNpYWwg
Q2hhcmFjdGVyczsgUkZDIDE4NjYKICBzLyYvJmFtcDsvZzsKICBzL1wiLyZxdW90Oy9nOwogIHMv
PC8mbHQ7L2c7CiAgcy8+LyZndDsvZzsKICByZXR1cm4gJF87Cn0KCnN1YiBodG1sdW5xdW90ZSgk
KQp7CiAgbG9jYWwgKCRfKSA9IEBfOwogICMgU3BlY2lhbCBDaGFyYWN0ZXJzOyBSRkMgMTg2Ngog
IHMvJnF1b3Q7L1wiL2c7CiAgcy8mbHQ7LzwvZzsKICBzLyZndDsvPi9nOwogIHMvJmFtcDsvJi9n
OwogIHJldHVybiAkXzsKfQoKc3ViIHVyaV9lc2NhcGVfcGF0aCgkKQp7CiAgcmV0dXJuIGpvaW4o
Jy8nLCBtYXAodXJpX2VzY2FwZSgkXyksIHNwbGl0KG18Lyt8LCBzaGlmdCwgLTEpKSk7Cn0KCnN1
YiBodHRwX2hlYWRlcig7JCQpCnsKICBteSAoJGNvbnRlbnRfdHlwZSwgJG1vZGRhdGUpID0gQF87
CiAgJGNvbnRlbnRfdHlwZSB8fD0gJ3RleHQvaHRtbCc7CgogICRjb250ZW50X3R5cGUgLj0gIjsg
Y2hhcnNldD0kY2hhcnNldCIKICAgIGlmICgkY2hhcnNldCAmJiAkY29udGVudF90eXBlID1+IG0s
XnRleHQvLCk7CgogICMgTm90ZSB0aGF0IGluIHRoZSBmb2xsb3dpbmcsIHdlIGV4cGxpY2l0bHkg
am9pbigpIGFuZCBjb25jYXRlbmF0ZSB0aGUKICAjIGhlYWRlcnMgaW5zdGVhZCBvZiBwcmludGlu
ZyB0aGVtIGFzIGFuIGFycmF5LiAgVGhpcyBpcyBiZWNhdXNlIHNvbWUKICAjIHN5c3RlbXMsIGVn
LiBlYXJseSB2ZXJzaW9ucyBvZiBtb2RfcGVybCAyIGRvbid0IHF1aXRlIGdldCBpdCBpZiB0aGUK
ICAjIGxhc3QgXHJcblxyXG4gaXNuJ3QgaW5jbHVkZWQgaW4gdGhlIGxhc3QgInBheWxvYWQiIGhl
YWRlciBwcmludCgpLgoKICBteSBAaGVhZGVycyA9ICgpOwogICMgVE9ETzogY3RpbWUoMykgZnJv
bSBzY2FsYXIgZ210aW1lKCkgaXNuJ3QgSFRUUCBjb21wbGlhbnQsIHNlZSBIVFRQOjpEYXRlLgog
IHB1c2goQGhlYWRlcnMsICdMYXN0LU1vZGlmaWVkOiAnIC4gc2NhbGFyIGdtdGltZSgkbW9kZGF0
ZSkgLiAnIEdNVCcpCiAgICBpZiAkbW9kZGF0ZTsKICBwdXNoKEBoZWFkZXJzLCAnQ29udGVudC1U
eXBlOiAnIC4gJGNvbnRlbnRfdHlwZSk7CgogIGlmICgkYWxsb3dfY29tcHJlc3MgJiYgJG1heWNv
bXByZXNzKSB7CiAgICBpZiAoSEFTX1pMSUIKICAgICAgICB8fCAoZGVmaW5lZCgkQ01Ee2d6aXB9
KSAmJiBvcGVuKEdaSVAsICJ8ICRDTUR7Z3ppcH0gLTEgLWMiKSkpCiAgICB7CgogICAgICBwdXNo
KEBoZWFkZXJzLCAnQ29udGVudC1FbmNvZGluZzogeC1nemlwJyk7CiAgICAgIHB1c2goQGhlYWRl
cnMsICdWYXJ5OiBBY2NlcHQtRW5jb2RpbmcnKTsgICAgICMgUkZDIDI2MTYsIDE0LjQ0CiAgICAg
IHByaW50IGpvaW4oIlxyXG4iLCBAaGVhZGVycykgLiAiXHJcblxyXG4iOwoKICAgICAgJHwgPSAx
OwogICAgICAkfCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEZs
dXNoIGhlYWRlciBvdXRwdXQuCgogICAgICB0aWUoKkdaSVAsIF9fUEFDS0FHRV9fLCBcKlNURE9V
VCkgaWYgSEFTX1pMSUI7CiAgICAgIHNlbGVjdChHWklQKTsKICAgICAgJGd6aXBfb3BlbiA9IDE7
CgogICAgfSBlbHNlIHsKCiAgICAgIHByaW50IGpvaW4oIlxyXG4iLCBAaGVhZGVycykgLiAiXHJc
blxyXG4iOwogICAgICBwcmludGYKICAgICAgICAnPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogc21h
bGxlciI+VW5hYmxlIHRvIGZpbmQgZ3ppcCBiaW5hcnkgaW4gdGhlIDxiPiRjb21tYW5kX3BhdGg8
L2I+ICg8Y29kZT4lczwvY29kZT4pIHRvIGNvbXByZXNzIG91dHB1dDwvc3Bhbj48YnIgLz4nLAog
ICAgICAgICAgaHRtbHF1b3RlKGpvaW4oJzonLCBAY29tbWFuZF9wYXRoKSk7CiAgICB9CgogIH0g
ZWxzZSB7CiAgICBwcmludCBqb2luKCJcclxuIiwgQGhlYWRlcnMpIC4gIlxyXG5cclxuIjsKICB9
Cn0KCgpzdWIgaHRtbF9oZWFkZXIoJDskKQp7CiAgbXkgKCR0aXRsZSwgJG1vZGRhdGUpID0gQF87
CiAgJHRpdGxlICA9IGh0bWxxdW90ZSgkdGl0bGUpOwogIG15ICRsICAgPSAkbG9nbyB8fCAnJzsK
ICBteSAkY3NzID0gJENTUyB8fCAnJzsKICBodHRwX2hlYWRlcigndGV4dC9odG1sJywgJG1vZGRh
dGUpOwogIHByaW50IDw8RU9IOwokSFRNTF9ET0NUWVBFCjxodG1sPgo8aGVhZD4KPHRpdGxlPiR0
aXRsZTwvdGl0bGU+CiRIVE1MX01FVEEkY3NzPC9oZWFkPgo8Ym9keT4KJGwgPGgxPiR0aXRsZTwv
aDE+CkVPSAp9CgpzdWIgaHRtbF9mb290ZXIoKQp7CiAgcHJpbnQgIjxociAvPlxuPGFkZHJlc3M+
JGFkZHJlc3M8L2FkZHJlc3M+XG4iIGlmICRhZGRyZXNzOwogIHByaW50ICI8L2JvZHk+XG48L2h0
bWw+XG4iOwp9CgpzdWIgbGlua190YWdzKCQpCnsKICBteSAoJHRhZ3MpID0gQF87CgogIChteSAk
ZmlsZW5hbWUgPSAkd2hlcmUpID1+IHN8Xi4qL3x8OwogIG15ICRmaWxldXJsID0gJy4vJyAuIHVy
aV9lc2NhcGUoJGZpbGVuYW1lKTsKCiAgbXkgJHJldCA9ICIiOwogIGZvcmVhY2ggbXkgJHN5bSAo
c3BsaXQoIiwgIiwgJHRhZ3MpKSB7CiAgICAkcmV0IC49ICIsXG4iIGlmICgkcmV0IG5lICIiKTsK
ICAgICRyZXQgLj0gJmxpbmsoaHRtbHF1b3RlKCRzeW0pLAogICAgICAgICAgICAgICAgICAkZmls
ZXVybCAuIHRvZ2dsZVF1ZXJ5KCdvbmx5X3dpdGhfdGFnJywgJHN5bSkpOwogIH0KICByZXR1cm4g
JHJldDsKfQoKCiMKIyBTZWUgaWYgYSBmaWxlL2RpciBpcyBsaXN0ZWQgaW4gdGhlIGNvbmZpZyBm
aWxlJ3MgQEZvcmJpZGRlbkZpbGVzIGxpc3QuCiMgVGFrZXMgYSBmdWxsIGZpbGUgc3lzdGVtIHBh
dGggb3Igb25lIHJlbGF0aXZlIHRvICRjdnNyb290LCBhbmQgc3RyaXBzIHRoZQojIHRyYWlsaW5n
ICIsdiIgaWYgcHJlc2VudCwgdGhlbiBjb21wYXJlcy4gIFJldHVybnMgMSBpZiBmb3JiaWRkZW4s
IGVsc2UgMC4KIwpzdWIgZm9yYmlkZGVuKCQpCnsKICAobXkgJHBhdGggPSBjYW5vbnBhdGgoc2hp
ZnQpKSA9fiBzLyx2JC8vOwogICRwYXRoID1+IHN8XiRjdnNyb290Lyt8fDsKICBmb3IgbXkgJGZv
cmJpZGRlbl9yZSAoQEZvcmJpZGRlbkZpbGVzKSB7CiAgICByZXR1cm4gMSBpZiAoJHBhdGggPX4g
JGZvcmJpZGRlbl9yZSk7CiAgfQogIHJldHVybiAwOwp9CgoKIwojIFN0YXJ0cyBhIHByb2Nlc3Mg
dXNpbmcgSVBDOjpSdW4uICBBbGwgYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8KIyBJUEM6OlJ1bjo6
c3RhcnQoKSBhcy1pcy4gIFJldHVybnMgYW4gYXJyYXkgKCRoYXJuZXNzLCAkZXJyb3IpIHdoZXJl
CiMgJGhhcm5lc3MgaXMgZnJvbSBJUEM6OlJ1biBpZiBzdGFydCgpIHN1Y2NlZWRzLCB1bmRlZiBv
dGhlcndpc2UuICBJbiBjYXNlCiMgb2YgYW4gZXJyb3IsICRlcnJvciBjb250YWlucyB0aGUgZXJy
b3IgbWVzc2FnZS4KIwpzdWIgc3RhcnRwcm9jKEApCnsKICBteSAkaCA9IG15ICRlcnIgPSB1bmRl
ZjsKICBldmFsIHsKICAgIGxvY2FsICRTSUd7X19ESUVfX307CiAgICAkaCA9IElQQzo6UnVuOjpz
dGFydChAXykgb3IgZGllKCJyZXR1cm4gY29kZTogJD8iKTsKICB9OwogIGlmICgkQCkgewogICAg
JGgtPmZpbmlzaCgpIGlmICRoOwogICAgJGggPSB1bmRlZjsKICAgICRlcnIgPSAiJ0B7JF9bMF19
JyBmYWlsZWQ6ICRAIjsKICB9CiAgcmV0dXJuICgkaCwgJGVycik7Cn0KCiMKIyBSdW5zIGEgcHJv
Y2VzcyB1c2luZyBJUEM6OlJ1bi4gIEFsbCBhcmd1bWVudHMgYXJlIHBhc3NlZCB0bwojIElQQzo6
UnVuOjpydW4oKSBhcy1pcy4gIFJldHVybnMgYW4gYXJyYXkgKCRleGl0Y29kZSwgJGVycm9ybXNn
KS4KIwpzdWIgcnVucHJvYyhAKQp7CiAgZXZhbCB7CiAgICBsb2NhbCAkU0lHe19fRElFX199Owog
ICAgSVBDOjpSdW46OnJ1bihAXyk7CiAgfTsKICBteSAkZXhpdGNvZGUgPSAkPyA+PiA4OwogIG15
ICRlcnJvcm1zZyAgPSB1bmRlZjsKICBpZiAoJEApIHsKICAgICRleGl0Y29kZSB8fD0gLTE7CiAg
ICAkZXJyb3Jtc2cgPSAiJ0B7JF9bMF19JyBmYWlsZWQ6ICRAIjsKICB9CiAgcmV0dXJuICgkZXhp
dGNvZGUsICRlcnJvcm1zZyk7Cn0KCiMKIyBDaGVjayBvdXQgYSBmaWxlIHRvIGEgdGVtcG9yYXJ5
IGZpbGUuCiMKc3ViIGNoZWNrb3V0X3RvX3RlbXAoJCQkKQp7CiAgbXkgKCRjdnNyb290LCAkY3Zz
bmFtZSwgJHJldikgPSBAXzsKCiAgIyBQaXBlIGdpdmVuIGN2cyBmaWxlIGludG8gYSB0ZW1wb3Jh
cnkgcGxhY2UuCiAgbXkgKCR0ZW1wX2ZoLCAkdGVtcF9mbikgPSB0ZW1wZmlsZSgnLmN2c3dlYi5Y
WFhYWFhYWCcsIERJUiA9PiB0bXBkaXIoKSk7CgogIG15IEBjbWQgPSAoJENNRHtjdnN9LCBAY3Zz
X29wdGlvbnMsICctUWQnLCAkY3Zzcm9vdCwKICAgICAgICAgICAgICdjbycsICctcCcsICItciRy
ZXYiLCAkY3ZzbmFtZSk7CgogIGxvY2FsICgqRElGRl9PVVQpOwogIG15ICgkaCwgJGVycikgPSBz
dGFydHByb2MoXEBjbWQsIFwiIiwgJz5waXBlJywgXCpESUZGX09VVCk7CiAgaWYgKCRoKSB7CiAg
ICBsb2NhbCAkLyA9IHVuZGVmOwogICAgcHJpbnQgJHRlbXBfZmggPERJRkZfT1VUPjsKICAgICRo
LT5maW5pc2goKTsKICAgIGNsb3NlKCR0ZW1wX2ZoKTsKICB9IGVsc2UgewogICAgY2xvc2UoJHRl
bXBfZmgpOwogICAgdW5saW5rKCR0ZW1wX2ZuKTsKICAgIGZhdGFsKCc1MDAgSW50ZXJuYWwgRXJy
b3InLAogICAgICAgICAgJ0NoZWNrb3V0IGZhaWx1cmUgKGV4aXQgc3RhdHVzICVzKSwgb3V0cHV0
OiA8cHJlPiVzPC9wcmU+JywKICAgICAgICAgICQ/ID4+IDggfHwgLTEsICRlcnIpOwogIH0KCiAg
cmV0dXJuICR0ZW1wX2ZuOwp9CgojCiMgQ2xvc2UgdGhlIEdaSVAgaGFuZGxlLCBhbmQgcmVtb3Zl
IHRoZSB0aWUuCiMKc3ViIGd6aXBjbG9zZQp7CiAgaWYgKCRnemlwX29wZW4pIHsKICAgIHNlbGVj
dChTVERPVVQpOwogICAgY2xvc2UoR1pJUCk7CiAgICB1bnRpZSAqR1pJUDsKICAgICRnemlwX29w
ZW4gPSAwOwogIH0KfQoKIyBpbXBsZW1lbnQgYSBnemlwcGVkIGZpbGUgaGFuZGxlIHZpYSB0aGUg
Q29tcHJlc3M6WmxpYiBjb21wcmVzc2lvbgojIGxpYnJhcnkuCgpzdWIgTUFHSUMxKCkgeyAweDFm
IH0Kc3ViIE1BR0lDMigpIHsgMHg4YiB9CnN1YiBPU0NPREUoKSB7IDMgfQoKc3ViIFRJRUhBTkRM
RQp7CiAgbXkgKCRjbGFzcywgJG91dCkgPSBAXzsKICBteSAoJGQpID0gQ29tcHJlc3M6OlpsaWI6
OmRlZmxhdGVJbml0KAogICAgLUxldmVsICAgICAgPT4gQ29tcHJlc3M6OlpsaWI6OlpfQkVTVF9D
T01QUkVTU0lPTigpLAogICAgLVdpbmRvd0JpdHMgPT4gLUNvbXByZXNzOjpabGliOjpNQVhfV0JJ
VFMoKQogICAgKQogICAgb3IgcmV0dXJuIHVuZGVmOwogIG15ICgkbykgPSB7IGhhbmRsZSA9PiAk
b3V0LAogICAgICAgICAgICAgIGRoICAgICA9PiAkZCwKICAgICAgICAgICAgICBjcmMgICAgPT4g
MCwKICAgICAgICAgICAgICBsZW4gICAgPT4gMCwKICAgICAgICAgICAgfTsKICBteSAoJGhlYWRl
cikgPSBwYWNrKCJjMTAiLAogICAgICAgICAgICAgICAgICAgICAgTUFHSUMxLCBNQUdJQzIsIENv
bXByZXNzOjpabGliOjpaX0RFRkxBVEVEKCksCiAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAw
LCAwLCAwLCAwLCBPU0NPREUpOwogIHByaW50IHskby0+e2hhbmRsZX19ICRoZWFkZXI7CiAgcmV0
dXJuIGJsZXNzKCRvLCAkY2xhc3MpOwp9CgpzdWIgUFJJTlQKewogIG15ICgkbykgICA9IHNoaWZ0
OwogIG15ICgkYnVmKSA9IGpvaW4gKGRlZmluZWQoJCwpID8gJCwgOiAiIiwgQF8pOwogIG15ICgk
bGVuKSA9IGxlbmd0aCgkYnVmKTsKICBteSAoJGNvbXByZXNzZWQsICRzdGF0dXMpID0gJG8tPntk
aH0tPmRlZmxhdGUoJGJ1Zik7CiAgcHJpbnQgeyRvLT57aGFuZGxlfX0gJGNvbXByZXNzZWQgaWYg
ZGVmaW5lZCgkY29tcHJlc3NlZCk7CiAgJG8tPntjcmN9ID0gQ29tcHJlc3M6OlpsaWI6OmNyYzMy
KCRidWYsICRvLT57Y3JjfSk7CiAgJG8tPntsZW59ICs9ICRsZW47CiAgcmV0dXJuICRsZW47Cn0K
CnN1YiBQUklOVEYKewogIG15ICgkbykgICA9IHNoaWZ0OwogIG15ICgkZm10KSA9IHNoaWZ0Owog
IG15ICgkYnVmKSA9IHNwcmludGYoJGZtdCwgQF8pOwogIG15ICgkbGVuKSA9IGxlbmd0aCgkYnVm
KTsKICBteSAoJGNvbXByZXNzZWQsICRzdGF0dXMpID0gJG8tPntkaH0tPmRlZmxhdGUoJGJ1Zik7
CiAgcHJpbnQgeyRvLT57aGFuZGxlfX0gJGNvbXByZXNzZWQgaWYgZGVmaW5lZCgkY29tcHJlc3Nl
ZCk7CiAgJG8tPntjcmN9ID0gQ29tcHJlc3M6OlpsaWI6OmNyYzMyKCRidWYsICRvLT57Y3JjfSk7
CiAgJG8tPntsZW59ICs9ICRsZW47CiAgcmV0dXJuICRsZW47Cn0KCnN1YiBXUklURQp7CiAgbXkg
KCRvLCAkYnVmLCAkbGVuLCAkb2ZmKSA9IEBfOwogIG15ICgkY29tcHJlc3NlZCwgJHN0YXR1cykg
PSAkby0+e2RofS0+ZGVmbGF0ZShzdWJzdHIoJGJ1ZiwgMCwgJGxlbikpOwogIHByaW50IHskby0+
e2hhbmRsZX19ICRjb21wcmVzc2VkIGlmIGRlZmluZWQoJGNvbXByZXNzZWQpOwogICRvLT57Y3Jj
fSA9IENvbXByZXNzOjpabGliOjpjcmMzMihzdWJzdHIoJGJ1ZiwgMCwgJGxlbiksICRvLT57Y3Jj
fSk7CiAgJG8tPntsZW59ICs9ICRsZW47CiAgcmV0dXJuICRsZW47Cn0KCnN1YiBDTE9TRQp7CiAg
bXkgKCRvKSA9IEBfOwogIHJldHVybiBpZiAhZGVmaW5lZCgkby0+e2RofSk7CiAgbXkgKCRidWYp
ID0gJG8tPntkaH0tPmZsdXNoKCk7CiAgJGJ1ZiAuPSBwYWNrKCJWIFYiLCAkby0+e2NyY30sICRv
LT57bGVufSk7CiAgcHJpbnQgeyRvLT57aGFuZGxlfX0gJGJ1ZjsKICB1bmRlZiAkby0+e2RofTsK
fQoKc3ViIERFU1RST1kKewogIG15ICgkbykgPSBAXzsKICBDTE9TRSgkbyk7Cn0KCiMgTG9jYWwg
dmFyaWFibGVzOgojIGluZGVudC10YWJzLW1vZGU6IG5pbAojIGNwZXJsLWluZGVudC1sZXZlbDog
MgojIEVuZDoK
--001485394218abdf37047657fc8a--



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