question

American Citizen <[email protected]> Thu, 30 Jul 2026 19:43:46 -0700
Newsgroups gmane.comp.mathematics.pari.user
Message-ID <[email protected]>
This is a multi-part message in MIME format.
--------------V78Wbnr6nyixGx3THBBg1uRU
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Does anyone have an up to date 2026 version of Denis Simon's 2011 script 
"ell.gp" ??

I attach it here, but it is crashing, sorry to say, in the 
bnfell2descent routines.

I am trying to do some 2-cover optimizations for congruent number 
elliptic curves.

I am current running version 2.17.4

Sorry if this is too cryptic.

Randall


--------------V78Wbnr6nyixGx3THBBg1uRU
Content-Type: application/x-gnuplot; name="ell.gp"
Content-Disposition: attachment; filename="ell.gp"
Content-Transfer-Encoding: base64

XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc
XFxcXFxcXFxcXFwKXFwgICAgICAgQ29weXJpZ2h0IChDKSAyMDExIERlbmlzIFNpbW9uClxc
ClxcIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgKEdQTCkKXFwKXFwgICAgVGhpcyBjb2RlIGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsClxcICAgIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mClxcICAg
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VClxcICAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KXFwKXFwgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgR1BMIGlzIGF2YWlsYWJsZSBhdDoK
XFwKXFwgICAgICAgICAgICAgICAgIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8KXFxc
XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc
XFxcXFxcXFwKCi8qCiAgQXV0ZXVyIDoKICBEZW5pcyBTSU1PTiAtPiBzaW1vbkBtYXRoLnVu
aWNhZW4uZnIKICBhZHJlc3NlIGR1IGZpY2hpZXIgOgogIHd3dy5tYXRoLnVuaWNhZW4uZnIv
fnNpbW9uL2VsbC5ncAoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioKICAqICAgICAgICAgIFZFUlNJT04gMDYvMDQvMjAxMSAgICAgICAgICAgICAg
ICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAg
XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXAogIFxcICAg
IENvbW1lbnQgdXRpbGlzZXIgY2UgcHJvZ3JhbW1lID8gICAgICAgXFwKICBcXFxcXFxcXFxc
XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcCgogIFByb2dyYW1tZSBkZSBj
YWxjdWwgZHUgcmFuZyBkZXMgY291cmJlcyBlbGxpcHRpcXVlcwogIGRhbnMgbGVzIGNvcnBz
IGRlIG5vbWJyZXMuCiAgbGFuZ2FnZTogR1AKICBwb3VyIGwndXRpbGlzZXIsIGxhbmNlciBn
cCwgcHVpcyB0YXBlcgogIFxyICIvaG9tZS9vd25lci9tYXRoL3BhcmkvZWxsLmdwIgoKICBc
XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcCiAgXFwgIERl
c2NyaXB0aW9uIGRlcyBwcmluY2lwYWxlcyBmb25jdGlvbnMgICBcXAogIFxcXFxcXFxcXFxc
XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFwKCiAgRXhwbGljYXRpb25zIHN1
Y2NpbnRlcyA6CiAgZGVmaW5pdGlvbiBkdSBjb3JwcyA6CiAgYm5mPWJuZmluaXQoeV4yKzEp
OwogIChpbCBlc3QgaW5kaXNwZW5zYWJsZSBxdWUgbGEgdmFyaWFibGUgc29pdCB5KS4KICBv
biBwZXV0IGVuc3VpdGUgcG9zZXIgOgogIFggPSBNb2QoeSxibmYucG9sKTsKCiAgTGEgZm9u
Y3Rpb24gYm5mZWxscmFuaygpIGFjY2VwdGUgdG91dGVzIGxlcyBjb3VyYmVzIHNvdXMgbGEg
Zm9ybWUKICBbYTEsYTIsYTMsYTQsYTZdCiAgTGVzIGNvZWZmaWNpZW50cyBwZXV2ZW50IGV0
cmUgZW50aWVycyBvdSBub24uCiAgTCdhbGdvcml0aG1lIHV0aWxpc2UgZXN0IGNlbHVpIGRl
IGxhIDItZGVzY2VudGUuCiAgTGEgMi10b3JzaW9uIHBldXQgZXRyZSBxdWVsY29ucXVlLgog
IElsIHN1ZmZpdCBkZSB0YXBlciA6CgogIGdwID4gZWxsID0gW2ExLGEyLGEzLGE0LGE2XTsK
ICBncCA+IGJuZmVsbHJhbmsoYm5mLGVsbCkKCiAgUmV0b3VybmUgdW4gdmVjdGV1ciBbcixz
LHZlY10KICBvdSByIGVzdCBsZSByYW5nIHByb2JhYmxlIChjJ2VzdCB0b3Vqb3VycyB1bmUg
bWlub3JhdGlvbiBkdSByYW5nKSwKICBzIGVzdCBsZSAyLXJhbmcgZHUgZ3JvdXBlIGRlIFNl
bG1lciwKICB2ZWMgZXN0IHVuZSBsaXN0ZSBkZSBwb2ludHMgZGFucyBFKEspLzJFKEspLgoK
ICBDb3VyYmVzIGF2ZWMgI0VbMl0oSykgPj0gMjoKICBlbGwgZG9pdCBldHJlIHNvdXMgbGEg
Zm9ybWUKICB5XjIgPSB4XjMgKyBBKl4yICsgQip4CiAgYXZlYyBBIGV0IEIgZW50aWVycyBh
bGdlYnJpcXVlcwogIGdwID4gZWxsID0gWzAsQSwwLEIsMF0KICBncCA+IGJuZmVsbDJkZXNj
ZW50X3ZpYWlzb2coZWxsKQogID0gYWxnb3JpdGhtZSBkZSBsYSAyLWRlc2NlbnRlIHBhciBp
c29nZW5pZXMKICBBdHRlbnRpb24gQSBldCBCIGRvaXZlbnQgZXRyZSBlbnRpZXJzCgogIENv
dXJiZXMgYXZlYyAjRVsyXShLKSA9IDQ6IHleMiA9ICh4LWUxKSooeC1lMikqKHgtZTMpCiAg
LT4gYm5mZWxsMmRlc2NlbnRfY29tcGxldGUoYm5mLGUxLGUyLGUzKTsKICA9IGFsZ29yaXRo
bWUgZGUgbGEgMi1kZXNjZW50ZSBjb21wbGV0ZQogIEF0dGVudGlvbjogbGVzIGVpIGRvaXZl
bnQgZXRyZSBlbnRpZXJzIGFsZ2VicmlxdWVzLgoKCiAgXFxcXFxcXFxcXFxcXFxcXFxcXFxc
XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXAogIFxcICAgICAgIEFmZmljaGFnZSBkZXMgY2Fs
Y3VscyAgICAgICAgICAgICAgXFwKICBcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc
XFxcXFxcXFxcXFxcXFxcCgogIE9uIHBldXQgYXZvaXIgcGx1cyBvdSBtb2lucyBkZSBkZXRh
aWxzIGRlIGNhbGN1bHMgYXZlYwogIERFQlVHTEVWRUxfZWxsID0gMDsKICBERUJVR0xFVkVM
X2VsbCA9IDE7IDI7IDM7Li4uCgoqLwoKewpcXApcXCBVc3VhbCBnbG9iYWwgdmFyaWFibGVz
ClxcCgpnbG9iYWwoREVCVUdMRVZFTF9lbGwsIExJTTEsIExJTTMsIExJTVRSSVYpOnNtYWxs
OwoKICBERUJVR0xFVkVMX2VsbCA9IDA7IFxcIEZyb20gMCB0byA1IDogY2hvb3NlIGEgaGln
aGVyIHZhbHVlIHRvIGhhdmUKICAgICAgICAgICAgICAgICAgICAgIFxcIG1vcmUgZGV0YWls
cyBwcmludGVkLgogIExJTTEgPSAyOyAgICAgICAgICAgXFwgTGltaXQgZm9yIHRoZSBzZWFy
Y2ggb2YgdHJpdmlhbCBwb2ludHMgb24gcXVhcnRpY3MKICBMSU0zID0gNDsgICAgICAgICAg
IFxcIExpbWl0IGZvciB0aGUgc2VhcmNoIG9mIHBvaW50cyBvbiBFTFMgcXVhcnRpY3MKICBM
SU1UUklWID0gMjsgICAgICAgIFxcIExpbWl0IGZvciB0aGUgc2VhcmNoIG9mIHRyaXZpYWwg
cG9pbnRzIG9uIHRoZSBlbGxpcHRpYyBjdXJ2ZQoKXFwKXFwgIFRlY2huaWNhbCBnbG9iYWwg
dmFyaWFibGVzClxcCgpnbG9iYWwoTUFYUFJPQiwgTElNQklHUFJJTUUpOnNtYWxsOwoKICBN
QVhQUk9CID0gMjA7CiAgTElNQklHUFJJTUUgPSAzMDsgXFwgZm9yIHByaW1lcyBsYXJnZXIg
dGhhbiB0aGlzIGxpbWl0OiB1c2UgYSBwcm9iYWJpbGlzdGljIHRlc3QKICAgICAgICAgICAg
ICAgICAgICBcXCBMSU1CSUdQUklNRSA9IDAgbWVhbnM6IG9ubHkgZGV0ZXJtaW5pc3RpYyB0
ZXN0cwp9CgpcXCBcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc
XFxcClxcICAgICAgICAgIFNDUklQVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFwK
XFwgXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXAoKXFwg
XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXApcXCAgICBN
QU5JUFVMQVRJT04gT0YgR0xPQkFMIFZBUklBQkxFUyAgICAgICAgIFxcClxcIFxcXFxcXFxc
XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFwKCntkZWZhdWx0X2VsbCgK
ICBERUJVR0xFVkVMX2VsbF92YWw6c21hbGwgPSAwLAogIExJTTFfdmFsOnNtYWxsID0gMiwK
ICBMSU0zX3ZhbDpzbWFsbCA9IDQsCiAgTElNVFJJVl92YWw6c21hbGwgPSAyLAogIE1BWFBS
T0JfdmFsOnNtYWxsID0gMjAsCiAgTElNQklHUFJJTUVfdmFsOnNtYWxsID0gMzAKICApID0K
CiAgREVCVUdMRVZFTF9lbGwgPSBERUJVR0xFVkVMX2VsbF92YWw7CiAgcHJpbnQoIiAgREVC
VUdMRVZFTF9lbGwgPSAiLERFQlVHTEVWRUxfZWxsKTsKCiAgTElNMSA9IExJTTFfdmFsOwog
IHByaW50KCIgIExJTTEgPSAiLExJTTEpOwoKICBMSU0zID0gTElNM192YWw7CiAgcHJpbnQo
IiAgTElNMyA9ICIsTElNMyk7CgogIExJTVRSSVYgPSBMSU1UUklWX3ZhbDsKICBwcmludCgi
ICBMSU1UUklWID0gIixMSU1UUklWKTsKCiAgTUFYUFJPQiA9IE1BWFBST0JfdmFsOwogIHBy
aW50KCIgIE1BWFBST0IgPSAiLE1BWFBST0IpOwoKICBMSU1CSUdQUklNRSA9IExJTUJJR1BS
SU1FX3ZhbDsKICBwcmludCgiICBMSU1CSUdQUklNRSA9ICIsTElNQklHUFJJTUUpOwp9Cgpc
XCBcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcClxcICAg
IENPTU1PTiBGVU5DVElPTlMgVE8gZWxsLmdwIEFORCBlbGxRLmdwICAgXFwKXFwgXFxcXFxc
XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXAoKe2VsbGNvbXBvc2V1
cnN0KHVyc3QxLHVyc3QyKSA9Cm15KHUxID0gdXJzdDFbMV0sIHIxID0gdXJzdDFbMl0sIHMx
ID0gdXJzdDFbM10sIHQxID0gdXJzdDFbNF0sCiAgICAgIHUyID0gdXJzdDJbMV0sIHIyID0g
dXJzdDJbMl0sIHMyID0gdXJzdDJbM10sIHQyID0gdXJzdDJbNF0pOwogIFt1MSp1Mix1MV4y
KnIyK3IxLHUxKnMyK3MxLHUxXjMqdDIrczEqdTFeMipyMit0MV07Cn0Ke2VsbGludmVydHVy
c3QodXJzdCkgPQpteSh1ID0gdXJzdFsxXSwgciA9IHVyc3RbMl0sIHMgPSB1cnN0WzNdLCB0
ID0gdXJzdFs0XSk7CiAgWzEvdSwtci91XjIsLXMvdSwocipzLXQpL3VeM107Cn0Ke215c3Vi
c3QocG9sc3Usc3Vic3gpID0KICBpZiggdHlwZShsaWZ0KHBvbHN1KSkgPT0gInRfUE9MIiwK
ICAgIHJldHVybihzaW1wbGlmeShzdWJzdChsaWZ0KHBvbHN1KSx2YXJpYWJsZShsaWZ0KHBv
bHN1KSksc3Vic3gpKSkKICAsIHJldHVybihzaW1wbGlmeShsaWZ0KHBvbHN1KSkpKTsKfQp7
ZGVncmUoaWRlZ3JlKSA9Cm15KGlkZWcgPSBpZGVncmUsIGpkZWcgPSAwKTsKCiAgd2hpbGUo
IGlkZWcgPj49IDEsIGpkZWcrKyk7CiAgcmV0dXJuKGpkZWcpOwp9CntuZmlzc3F1YXJlKG5m
LCBhKSA9ICNuZnNxcnQobmYsYSkgPiAwOwp9CntuZnNxcnQoIG5mLCBhKSA9ClxcIGlmIGEg
aXMgYSBzcXVhcmUgaW4gdGhlIG51bWJlciBmaWVsZCBuZiByZXR1cm5zIFtzcXJ0KGEpXSwg
b3RoZXJ3aXNlIFtdLgpteShhbGlmdCx0YSxweSxwZmFjdCk7CgppZiggREVCVUdMRVZFTF9l
bGwgPj0gNSwgcHJpbnQoIiAgICAgc3RhcnRpbmcgbmZzcXJ0ICIsYSkpOwogIGlmKCBhPT0w
IHx8IGE9PTEsCmlmKCBERUJVR0xFVkVMX2VsbCA+PSA1LCBwcmludCgiICAgICBlbmQgb2Yg
bmZzcXJ0ICIsYSkpOwogICAgcmV0dXJuKFthXSkpOwoKICBhbGlmdCA9IGxpZnQoYSk7CiAg
dGEgPSB0eXBlKGEpOwogIGlmKCAhcG9sZGVncmVlKGFsaWZ0KSwgYWxpZnQgPSBwb2xjb2Vm
ZihhbGlmdCwwKSk7CgogIGlmKCB0eXBlKGFsaWZ0KSAhPSAidF9QT0wiLAogICAgaWYoIGlz
c3F1YXJlKGFsaWZ0KSwKaWYoIERFQlVHTEVWRUxfZWxsID49IDUsIHByaW50KCIgICAgIGVu
ZCBvZiBuZnNxcnQgIixzcXJ0cmF0KGFsaWZ0KSkpOwogICAgICByZXR1cm4oW3NxcnRyYXQo
YWxpZnQpXSkpKTsKCiAgaWYoIHBvbGRlZ3JlZShuZi5wb2wpIDw9IDEsCmlmKCBERUJVR0xF
VkVMX2VsbCA+PSA1LCBwcmludCgiICAgICBlbmQgb2YgbmZzcXJ0ICIsW10pKTsKICAgIHJl
dHVybihbXSkpOwogIGlmKCB0YSA9PSAidF9QT0wiLCBhID0gTW9kKGEsbmYucG9sKSk7Cgpc
XCB0aGUgbm9ybSBzaG91bGQgYmUgYSBzcXVhcmUKCiAgaWYoICFpc3NxdWFyZShub3JtKGEp
KSwKaWYoIERFQlVHTEVWRUxfZWxsID49IDUsIHByaW50KCIgICAgIGVuZCBvZiBuZnNxcnQg
IixbXSkpOwogICAgICByZXR1cm4oW10pKTsKClxcIHRoZSByZWFsIGVtYmVkZGluZ3MgbXVz
dCBhbGwgYmUgPjAKCiAgZm9yKCBpID0gMSwgbmYucjEsCiAgICBpZiggbmZyZWFsc2lnbihu
ZixhLGkpIDwgMCwKaWYoIERFQlVHTEVWRUxfZWxsID49IDUsIHByaW50KCIgICAgIGVuZCBv
ZiBuZnNxcnQgIixbXSkpOwogICAgICByZXR1cm4oW10pKSk7CgpcXCBmYWN0b3JpemF0aW9u
IG92ZXIgbmYgb2YgdGhlIHBvbHlub21pYWwgWF4yLWEKCiAgaWYoIHZhcmlhYmxlKG5mLnBv
bCkgPT0gJ3gsCiAgICBweSA9IHN1YnN0KG5mLnBvbCwneCwneSk7CiAgICBwZmFjdCA9IGxp
ZnQoZmFjdG9ybmYoJ3heMi1teXN1YnN0KGFsaWZ0LE1vZCgneSxweSkpLHB5KVsxLDFdKQog
ICwKICAgIHBmYWN0ID0gbGlmdChmYWN0b3JuZigneF4yLWEsbmYucG9sKVsxLDFdKSk7CiAg
aWYoIHBvbGRlZ3JlZShwZmFjdCkgPT0gMiwKaWYoIERFQlVHTEVWRUxfZWxsID49IDUsIHBy
aW50KCIgICAgIGVuZCBvZiBuZnNxcnQgIixbXSkpOwogICAgcmV0dXJuKFtdKSk7CmlmKCBE
RUJVR0xFVkVMX2VsbCA+PSA1LCBwcmludCgiICAgICBlbmQgb2YgbmZzcXJ0ICIscGZhY3Qp
KTsKICByZXR1cm4oW3N1YnN0KHBvbGNvZWZmKHBmYWN0LDApLCd5LE1vZCh2YXJpYWJsZShu
Zi5wb2wpLG5mLnBvbCkpXSk7Cn0Ke25mcmVhbHNpZ24obmYsYSxpKSA9ClxcIHJldHVybiB0
aGUgc2lnbiBvZiB0aGUgYWxnZWJyYWljIG51bWJlciBhIGluIHRoZSBpLXRoIHJlYWwgZW1i
ZWRkaW5nLgpteShuZl9yb290cyxheSxwcmVjMCk7CgogIGlmKCBhID09IDAsIHJldHVybigw
KSk7CgogIGEgPSBsaWZ0KGEpOwogIGlmKCB0eXBlKGEpICE9ICJ0X1BPTCIsCiAgICByZXR1
cm4oc2lnbihhKSkpOwoKICBuZl9yb290cyA9IG5mLnJvb3RzOwogIHByZWMwID0gZGVmYXVs
dChyZWFscHJlY2lzaW9uKTsKCiAgYXkgPSAwOwogIHdoaWxlKCBheSA9PSAwIHx8IHByZWNp
c2lvbihheSkgPCAxMCwKCiAgICBheSA9IHN1YnN0KGEsdmFyaWFibGUoYSksbmZfcm9vdHNb
aV0pOwoKICAgIGlmKCBheSA9PSAwIHx8IHByZWNpc2lvbihheSkgPCAxMCwKaWYoIERFQlVH
TEVWRUxfZWxsID49IDMsCiAgcHJpbnQoIiAqKioqIFdhcm5pbmc6IGRvdWJsaW5nIHRoZSBy
ZWFsIHByZWNpc2lvbiBpbiBuZnJlYWxzaWduICoqKiogIiwKICAgICAgICAyKmRlZmF1bHQo
cmVhbHByZWNpc2lvbikpKTsKICAgICAgZGVmYXVsdChyZWFscHJlY2lzaW9uLDIqZGVmYXVs
dChyZWFscHJlY2lzaW9uKSk7CiAgICAgIG5mX3Jvb3RzID0gcmVhbChwb2xyb290cyhuZi5w
b2wpKQogICAgKQogICk7CiAgZGVmYXVsdChyZWFscHJlY2lzaW9uLHByZWMwKTsKCiAgcmV0
dXJuKHNpZ24oYXkpKTsKfQp7c3FydHJhdChhKSA9CiAgc3FydGludChudW1lcmF0b3IoYSkp
L3NxcnRpbnQoZGVub21pbmF0b3IoYSkpOwp9CgpcXCBcXFxcXFxcXFxcXFxcXFxcXFxcXFxc
XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcClxcICAgICAgRlVOQ1RJT05TIFNQRUNJRklDIFRP
IGVsbC5ncCAgICAgICAgICBcXApcXCBcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc
XFxcXFxcXFxcXFxcXFxcCgp7bmZwb2xyYXRyb290cyhuZixwb2wpID0KbXkoZixhbnMpOwog
IGYgPSBuZmZhY3RvcihuZixsaWZ0KHBvbCkpWywxXTsKICBhbnMgPSBbXTsKICBmb3IoIGog
PSAxLCAjZiwKICAgIGlmKCBwb2xkZWdyZWUoZltqXSkgPT0gMSwKICAgICAgYW5zID0gY29u
Y2F0KGFucyxbLXBvbGNvZWZmKGZbal0sMCkvcG9sY29lZmYoZltqXSwxKV0pKSk7CiAgcmV0
dXJuKGFucyk7Cn0Ke215bmZoaWxiZXJ0MihuZixhLGIscCkgPQpcXCBwIGlzIGEgcHJpbWUg
b3V0cHV0IGJ5IGlkZWFscHJpbWVkZWMoKSBhYm92ZSAyCm15KHYscmVzKTsKCmlmKCBERUJV
R0xFVkVMX2VsbCA+PSA1LCBwcmludCgiICAgICBzdGFydGluZyBteW5maGlsYmVydDIiKSk7
CiAgdiA9IGlkZWFsdmFsKG5mLGEscClcMjsKICBpZiggdiwgYSAqPSBuZmJhc2lzdG9hbGco
bmYscFsyXSleKC0yKnYpKTsKCiAgdiA9IGlkZWFsdmFsKG5mLGIscClcMjsKICBpZiggdiwg
YiAqPSBuZmJhc2lzdG9hbGcobmYscFsyXSleKC0yKnYpKTsKCiAgaWYoIG5mcXBfc29sdWJs
ZShuZixhKid4XjIrYixpbml0cChuZixwKSksIHJlcyA9IDEsIHJlcyA9IC0xKTsKaWYoIERF
QlVHTEVWRUxfZWxsID49IDUsIHByaW50KCIgICAgIGVuZCBvZiBteW5maGlsYmVydDIiLHJl
cykpOwogIHJldHVybihyZXMpOwp9CntteW5maGlsYmVydHAobmYsYSxiLHApID0KXFwgY2Fs
Y3VsZSBsZSBzeW1ib2xlIGRlIEhpbGJlcnQgcXVhZHJhdGlxdWUgbG9jYWwgKGEsYilfcApc
XCAqIGVuIGwnaWRlYWwgcHJlbWllciBwIGR1IGNvcnBzIG5mLApcXCAqIGEgZXQgYiBzb250
IGRlcyBlbGVtZW50cyBub24gbnVscyBkZSBuZiwgc291cyBsYSBmb3JtZQpcXCAqIGRlIHBv
bG1vZHMgb3UgZGUgcG9seW5vbWVzLCBldCBwIHJlbnZveWUgcGFyIGlkZWFscHJpbWVkZWMo
KS4KCmlmKCBERUJVR0xFVkVMX2VsbCA+PSA1LCBwcmludCgiICAgICBzdGFydGluZyBteW5m
aGlsYmVydHAgYXQgIixwKSk7CiAgaWYoIGEgPT0gMCB8fCBiID09IDAsIGVycm9yKCJteW5m
aGlsYmVydHA6IGFyZ3VtZW50ID0gMCIpKTsKICBpZiggcC5wID09IDIsCmlmKCBERUJVR0xF
VkVMX2VsbCA+PSA1LCBwcmludCgiICAgICBlbmQgb2YgbXluZmhpbGJlcnRwIikpOwogICAg
cmV0dXJuKG15bmZoaWxiZXJ0MihuZixhLGIscCkpKTsKICBpZiggdHlwZShhKSAhPSAidF9Q
T0xNT0QiLCBhID0gTW9kKGEsbmYucG9sKSk7CiAgaWYoIHR5cGUoYikgIT0gInRfUE9MTU9E
IiwgYiA9IE1vZChiLG5mLnBvbCkpOwpyZXR1cm4obmZoaWxiZXJ0KG5mLGEsYixwKSk7Cn0K
e2lkZWFsbGlzdGZhY3RvcihuZixsaXN0ZmFjdCkgPQpteShTbGlzdCxTMSx0ZXN0LGspOwoK
aWYoIERFQlVHTEVWRUxfZWxsID49IDUsIHByaW50KCIgICAgIHN0YXJ0aW5nIGlkZWFsbGlz
dGZhY3RvciIpKTsKICBTbGlzdCA9IFtdOyB0ZXN0ID0gMTsKICBmb3IoIGkgPSAxLCAjbGlz
dGZhY3QsCiAgICBpZiggbGlzdGZhY3RbaV0gPT0gMCwgbmV4dCk7CiAgICBTMSA9IGlkZWFs
ZmFjdG9yKG5mLGxpc3RmYWN0W2ldKVssMV07CiAgICBmb3IoIGogPSAxLCAjUzEsIGsgPSAj
U2xpc3Q7IGs9azsKICAgICAgZm9yKCBrID0gMSwgI1NsaXN0LAogICAgICAgIGlmKCBTbGlz
dFtrXSA9PSBTMVtqXSwgdGVzdCA9IDA7IGJyZWFrKSk7CiAgICAgIGlmKCB0ZXN0LCBTbGlz
dCA9IGNvbmNhdChTbGlzdCxbUzFbal1dKSwgdGVzdCA9IDEpOwogICAgICkpOwppZiggREVC
VUdMRVZFTF9lbGwgPj0gNSwgcHJpbnQoIiAgICAgZW5kIG9mIGlkZWFsbGlzdGZhY3RvciIp
KTsKICByZXR1cm4oU2xpc3QpOwp9CntteW5maGlsYmVydChuZixhLGIpID0KXFwgY2FsY3Vs
ZSBsZSBzeW1ib2xlIGRlIEhpbGJlcnQgcXVhZHJhdGlxdWUgZ2xvYmFsIChhLGIpOgpcXCA9
MSBzaSBsJ2VxdWF0aW9uIFheMi1hWV4yLWJaXjI9MCBhIHVuZSBzb2x1dGlvbiBub24gdHJp
dmlhbGUsClxcID0tMSBzaW5vbiwKXFwgYSBldCBiIGRvaXZlbnQgZXRyZSBub24gbnVscy4K
bXkoYWwsYmwsUyk7CgppZiggREVCVUdMRVZFTF9lbGwgPj0gNCwgcHJpbnQoIiAgICBzdGFy
dGluZyBteW5maGlsYmVydCAiLFthLGJdKSk7CiAgaWYoIGEgPT0gMCB8fCBiID09IDAsIGVy
cm9yKCJteW5maGlsYmVydCA6IGFyZ3VtZW50ID0gMCIpKTsKICBhbCA9IGxpZnQoYSk7IGJs
ID0gbGlmdChiKTsKClxcIHNvbHV0aW9ucyBsb2NhbGVzIGF1eCBwbGFjZXMgcmVlbGxlcwoK
ICBmb3IoIGkgPSAxLCBuZi5yMSwKICAgIGlmKCBuZnJlYWxzaWduKG5mLGFsLGkpIDwgMCAm
JiBuZnJlYWxzaWduKG5mLGJsLGkpIDwgMCwKaWYoIERFQlVHTEVWRUxfZWxsID49IDMsIHBy
aW50KCIgICBteW5maGlsYmVydDogbm8gc29sdXRpb24gYXQgaW5maW5pdHkiKSk7CmlmKCBE
RUJVR0xFVkVMX2VsbCA+PSA0LCBwcmludCgiICAgIGVuZCBvZiBteW5maGlsYmVydCIpKTsK
ICAgICAgcmV0dXJuKC0xKSkKICApOwoKICBpZiggdHlwZShhKSAhPSAidF9QT0xNT0QiLCBh
ID0gTW9kKGEsbmYucG9sKSk7CiAgaWYoIHR5cGUoYikgIT0gInRfUE9MTU9EIiwgYiA9IE1v
ZChiLG5mLnBvbCkpOwoKXFwgIHNvbHV0aW9ucyBsb2NhbGVzIGF1eCBwbGFjZXMgZmluaWVz
IChjZWxsZXMgcXVpIGRpdmlzZW50IDJhYikKCiAgUyA9IGlkZWFsbGlzdGZhY3RvcihuZixb
MixhLGJdKTsKICBmb3JzdGVwICggaSA9ICNTLCAyLCAtMSwKXFwgZCdhcHJlcyBsYSBmb3Jt
dWxlIGR1IHByb2R1aXQgb24gcGV1dCBldml0ZXIgdW4gcHJlbWllcgogICAgaWYoIG15bmZo
aWxiZXJ0cChuZixhLGIsIFNbaV0pID09IC0xLAppZiggREVCVUdMRVZFTF9lbGwgPj0gMywg
cHJpbnQoIiAgIG15bmZoaWxiZXJ0OiBubyBzb2x1dGlvbiBhdDogIixTW2ldKSk7CmlmKCBE
RUJVR0xFVkVMX2VsbCA+PSA0LCBwcmludCgiICAgIGVuZCBvZiBteW5maGlsYmVydCIpKTsK
ICAgICAgcmV0dXJuKC0xKSkpOwppZiggREVCVUdMRVZFTF9lbGwgPj0gNCwgcHJpbnQoIiAg
ICBlbmQgb2YgbXluZmhpbGJlcnQiKSk7CiAgcmV0dXJuKDEpOwp9Cntpbml0cCggbmYsIHAp
ID0KXFwgICBwcFsxXSBlc3QgbCdpZGVhbCBzb3VzIGZvcm1lIHJlZHVpdGUKXFwgICBwcFsy
XSBlc3QgdW4gZW50aWVyIGRlIFprIGF2ZWMgdW5lIHZhbHVhdGlvbiAxIGVuIHAKXFwgICBw
cFszXSBlc3QgbGEgdmFsdWF0aW9uIGRlIDIgZW4gcApcXCAgIHBwWzRdIHNlcnQgYSBkZXRl
Y3RlciBsZXMgY2FycmVzIGRhbnMgUXAKXFwgICAgIHNpIHB8MiBpbCBmYXV0IGxhIHN0cnVj
dHVyZSBkZSBaay9wXigxKzJ2KSBkJ2FwcmVzIEhlbnNlbApcXCAgICAgc2lub24gaWwgc3Vm
Zml0IGRlIGNhbGN1bGVyIHheKE4ocCktMSkvMgpcXCAgIHBwWzVdIGVzdCB1biBzeXN0ZW1l
IGRlIHJlcHJlc2VudGFudHMgZGUgWmsvcApcXCAgICAgYydlc3QgZG9uYyB1biBlbnNlbWJs
ZSBkZSBjYXJkaW5hbCBwXmYgLgpteShpZHZhbCxwcCk7CgppZiggREVCVUdMRVZFTF9lbGwg
Pj0gNSwgcHJpbnQoIiAgICAgc3RhcnRpbmcgaW5pdHAgZm9yIHAgPSAiLHApKTsKICBpZHZh
bCA9IGlkZWFsdmFsKG5mLDIscCk7CiAgcHA9WyBwLCBuZmJhc2lzdG9hbGcobmYscFsyXSks
IGlkdmFsLCAwLCByZXByZXMobmYscCkgXTsKICBpZiggaWR2YWwsCiAgICBwcFs0XSA9IGlk
ZWFsc3RhcihuZixpZGVhbHBvdyhuZixwLDErMippZHZhbCkpLAogICAgcHBbNF0gPSBwLnBe
cC5mXDIgKTsKaWYoIERFQlVHTEVWRUxfZWxsID49IDUsIHByaW50KCIgICAgIGVuZCBvZiBp
bml0cCIpKTsKICByZXR1cm4ocHApOwp9CntkZW5vKG51bSkgPQpcXCBjYWxjdWxlIHVuIGRl
bm9taW5hdGV1ciBkdSBwb2x5bm9tZSBudW0KCiAgaWYoIG51bSA9PSAwLCByZXR1cm4oMSkp
OwogIGlmKCB0eXBlKG51bSkgPT0gInRfUE9MIiwKICAgICByZXR1cm4oZGVub21pbmF0b3Io
Y29udGVudChudW0pKSkpOwogIHJldHVybihkZW5vbWluYXRvcihudW0pKTsKfQp7bmZyYXRw
b2ludChuZixwb2wsbGltLHNpbmdsZXBvaW50PTEpID0KXFwgU2kgc2luZ2xlcG9pbnQgPT0g
MSwgY2hlcmNoZSB1biBzZXVsIHBvaW50LCBzaW5vbiBwbHVzaWV1cnMuCm15KGNvbXB0MSxj
b21wdDIsZGVnLG4sQUEscG9pbnQsbGlzdHBvaW50cyx2ZWN0eCxldnBvbCxzcSx4cG9sKTsK
CmlmKCBERUJVR0xFVkVMX2VsbCA+PSA0LAogIHByaW50KCIgICAgc3RhcnRpbmcgbmZyYXRw
b2ludCB3aXRoIHBvbCA9ICIscG9sKTsKICBwcmludCgiICAgIGxpbSA9ICIsbGltKSk7Cgog
IGNvbXB0MSA9IDA7IGNvbXB0MiA9IDA7CiAgZGVnID0gcG9sZGVncmVlKHBvbCk7IG4gPSBw
b2xkZWdyZWUobmYucG9sKTsKICBBQSA9IGxpbTw8MTsKICBpZiggIXNpbmdsZXBvaW50LCBs
aXN0cG9pbnRzID0gW10pOwoKXFwgY2FzIHRyaXZpYXV4CiAgc3EgPSBuZnNxcnQobmYscG9s
Y29lZmYocG9sLDApKTsKICBpZiggc3EhPSBbXSwKICAgIHBvaW50ID0gWyAwLCBzcVsxXSwg
MV07CiAgICBpZiggc2luZ2xlcG9pbnQsCmlmKCBERUJVR0xFVkVMX2VsbCA+PSA0LCBwcmlu
dCgiICAgIGVuZCBvZiBuZnJhdHBvaW50IikpOwogICAgICByZXR1cm4ocG9pbnQpKTsKICAg
IGxpc3Rwb2ludHMgPSBjb25jYXQobGlzdHBvaW50cyxbcG9pbnRdKQogICk7CiAgc3EgPSBu
ZnNxcnQobmYscG9sbGVhZChwb2wpKTsKICBpZiggc3EgIT0gW10sCiAgICBwb2ludCA9IFsg
MSwgc3FbMV0sIDBdOwogICAgaWYoIHNpbmdsZXBvaW50LAppZiggREVCVUdMRVZFTF9lbGwg
Pj0gNCwgcHJpbnQoIiAgICBlbmQgb2YgbmZyYXRwb2ludCIpKTsKICAgICAgcmV0dXJuKHBv
aW50KSk7CiAgICBsaXN0cG9pbnRzID0gY29uY2F0KGxpc3Rwb2ludHMsW3BvaW50XSkKICAp
OwoKXFwgYm91Y2xlIGdlbmVyYWxlCiAgcG9pbnQgPSBbXTsKICB2ZWN0eCA9IHZlY3Rvcihu
LGksWy1saW0sbGltXSk7CiAgZm9yKCBkZW5veiA9IDEsIGxpbSwKICAgIGlmKCBwb2xkZWdy
ZWUocG9sKSUyID09IDAgJiYKICAgICAgICFpc3NxdWFyZShNb2Qobm9ybShwb2xsZWFkKHBv
bCkpLGRlbm96KSksIG5leHQpOwogICAgZm9ydmVjKCB4eCA9IHZlY3R4LAogICAgICBpZigg
ZGVub3ogPT0gMSB8fCBnY2QoY29udGVudCh4eCksZGVub3opID09IDEsCiAgICAgICAgeHBv
bCA9IG5mYmFzaXN0b2FsZyhuZix4eH4pOwogICAgICAgIGV2cG9sID0gc3Vic3QocG9sLCd4
LHhwb2wvZGVub3opOwogICAgICAgIHNxID0gbmZzcXJ0KG5mLGV2cG9sKTsKICAgICAgICBp
Ziggc3EgIT0gW10sCiAgICAgICAgICBwb2ludCA9IFt4cG9sL2Rlbm96LCBzcVsxXSwgMV07
CiAgICAgICAgICBpZiggc2luZ2xlcG9pbnQsIGJyZWFrKDIpKTsKICAgICAgICAgIGxpc3Rw
b2ludHMgPSBjb25jYXQobGlzdHBvaW50cyxbcG9pbnRdKSkpOwogICkpOwoKICBpZiggc2lu
Z2xlcG9pbnQsIGxpc3Rwb2ludHMgPSBwb2ludCk7CmlmKCBERUJVR0xFVkVMX2VsbCA+PSAz
LCBwcmludCgiICAgcG9pbnRzIGZvdW5kIGJ5IG5mcmF0cG9pbnQgPSAiLGxpc3Rwb2ludHMp
KTsKaWYoIERFQlVHTEVWRUxfZWxsID49IDQsIHByaW50KCIgICAgZW5kIG9mIG5mcmF0cG9p
bnQiKSk7CiAgcmV0dXJuKFZlYyhsaXN0cG9pbnRzKSk7Cn0Ke3JlcHJlcyhuZixwKSA9Clxc
IGNhbGN1bGUgdW4gc3lzdGVtZSBkZSByZXByZXNlbnRhbnRzIFprL3AKbXkoZm9uZCxtYXQs
ZixyZXAscHAscHBpLHBwMixqcHBpLGdqZik7CgppZiggREVCVUdMRVZFTF9lbGwgPj0gNSwg
cHJpbnQoIiAgICAgc3RhcnRpbmcgcmVwcmVzIikpOwogIGZvbmQgPSBbXTsKICBtYXQgPSBp
ZGVhbGhuZihuZixwKTsKICBmb3IoIGkgPSAxLCAjbWF0LAogICAgaWYoIG1hdFtpLGldICE9
IDEsIGZvbmQgPSBjb25jYXQoZm9uZCxuZi5uZls3XVtpXSkpKTsKICBmID0gI2ZvbmQ7CiAg
cHAgPSBwLnA7CiAgcmVwID0gdmVjdG9yKHBwXmYsaSwwKTsKICByZXBbMV0gPSAwOwogIHBw
aSA9IDE7CiAgcHAyID0gcHBcMjsKICBmb3IoIGkgPSAxLCBmLAogICAgZm9yKCBqID0gMSwg
cHAtMSwKICAgICAgaWYoIGogPD0gcHAyLCBnamYgPSBqKmZvbmRbaV0sIGdqZiA9IChqLXBw
KSpmb25kW2ldKTsKICAgICAganBwaSA9IGoqcHBpOwogICAgICBmb3IoIGsgPSAwLCBwcGkt
MSwgcmVwW2pwcGkraysxXSA9IHJlcFtrKzFdK2dqZiApKTsKICAgIHBwaSAqPSBwcCk7Cmlm
KCBERUJVR0xFVkVMX2VsbCA+PSA1LCBwcmludCgiICAgICBlbmQgb2YgcmVwcmVzIikpOwog
IHJldHVybihNb2QocmVwLG5mLnBvbCkpOwp9Cnt2YWwobmYsbnVtLHApID0KICBpZiggbnVt
ID09IDAsIDMyMDAwLCBpZGVhbHZhbChuZixsaWZ0KG51bSkscCkpOwp9CntuZmlzc3F1YXJl
bW9kcG9kZCggbmYsIGEsIHApID0KXFwgUmV0dXJuIDEgaWYgYSBpcyBhIHAtYWRpYyBzcXVh
cmUsIDAgb3RoZXJ3aXNlLgpcXCBPbmx5IGZvciBhIHByaW1lIGlkZWFsIHAgY29wcmltZSB0
byAyLgpcXCBhID0gdF9QT0xNT0QKbXkodixhcCxub3JtZSxkZW4pOwoKaWYoIERFQlVHTEVW
RUxfZWxsID49IDUsIHByaW50KCIgICAgIHN0YXJ0aW5nIG5maXNzcXVhcmVtb2Rwb2RkIikp
OwogIGlmKCBhID09IDAsCmlmKCBERUJVR0xFVkVMX2VsbCA+PSA1LCBwcmludCgiICAgICBl
bmQgb2YgbmZpc3NxdWFyZW1vZHBvZGQiKSk7CiAgICByZXR1cm4oMSkpOwogIHYgPSBpZGVh
bHZhbChuZixsaWZ0KGEpLHApOwogIGlmKCB2JTIsCmlmKCBERUJVR0xFVkVMX2VsbCA+PSA1
LCBwcmludCgiICAgICBlbmQgb2YgbmZpc3NxdWFyZW1vZHBvZGQiKSk7CiAgICByZXR1cm4o
MCkpOwogIGFwID0gYS9uZmJhc2lzdG9hbGcobmYscFsyXSledjsKCiAgbm9ybWUgPSAocC5w
XnAuZi0xKS8yOwogIGRlbiA9IGRlbm9taW5hdG9yKGNvbnRlbnQobGlmdChhcCkpKSVwLnA7
CiAgaWYoIHNpZ24oZGVuKSwgYXAgKj0gTW9kKDEscC5wKSk7CiAgYXAgPSBhcF5ub3JtZS0x
OwogIGlmKCBhcCA9PSAwLAppZiggREVCVUdMRVZFTF9lbGwgPj0gNSwgcHJpbnQoIiAgICAg
ZW5kIG9mIG5maXNzcXVhcmVtb2Rwb2RkIikpOwogICAgcmV0dXJuKDEpKTsKICBhcCA9IGxp
ZnQobGlmdChhcCkpOwogIGlmKCBpZGVhbHZhbChuZixhcCxwKSA+IDAsCmlmKCBERUJVR0xF
VkVMX2VsbCA+PSA1LCBwcmludCgiICAgICBlbmQgb2YgbmZpc3NxdWFyZW1vZHBvZGQiKSk7
CiAgICByZXR1cm4oMSkpOwppZiggREVCVUdMRVZFTF9lbGwgPj0gNSwgcHJpbnQoIiAgICAg
ZW5kIG9mIG5maXNzcXVhcmVtb2Rwb2RkIikpOwogIHJldHVybigwKTsKfQp7bmZpc3NxdWFy
ZW1vZHAoIG5mLCBhLCBwLCB6aW5pdCkgPQpcXCBhIGlzIGFuIGFsZ2VicmFpYyBpbnRlZ2Vy
IG9mIG5mClxcIHJldHVybnMgMSBpZiBhIGlzIGEgc3F1YXJlIG1vZHVsbyB0aGUgcHJpbWUg
aWRlYWwgcCwgMCBvdGhlcndpc2UKXFwgYSA9IHRfUE9MTU9ECm15KHZhbGFwLHpsb2cpOwoK
aWYoIERFQlVHTEVWRUxfZWxsID49IDUsIHByaW50KCIgICAgIHN0YXJ0aW5nIG5maXNzcXVh
cmVtb2RwICIsW2EscCx6aW5pdF0pKTsKICBpZiggYSA9PSAwLAppZiggREVCVUdMRVZFTF9l
bGwgPj0gNSwgcHJpbnQoIiAgICAgZW5kIG9mIG5maXNzcXVhcmVtb2RwIikpOwogICAgcmV0
dXJuKDEpKTsKCiAgaWYoIHAucCAhPSAyLAppZiggREVCVUdMRVZFTF9lbGwgPj0gNSwgcHJp
bnQoIiAgICAgZW5kIG9mIG5maXNzcXVhcmVtb2RwIikpOwogICAgcmV0dXJuKG5maXNzcXVh
cmVtb2Rwb2RkKG5mLGEscCkpKTsKCiAgdmFsYXAgPSBpZGVhbHZhbChuZixhLHApOwogIGlm
KCB2YWxhcCUyLAppZiggREVCVUdMRVZFTF9lbGwgPj0gNSwgcHJpbnQoIiAgICAgZW5kIG9m
IG5maXNzcXVhcmVtb2RwIikpOwogICAgcmV0dXJuKDApKTsKICBpZiggdmFsYXAsCiAgICB6
bG9nID0gaWRlYWxsb2cobmYsYSoobmZiYXNpc3RvYWxnKG5mLHBbNV0pL3AucCledmFsYXAs
emluaXQpCiAgLAogICAgemxvZyA9IGlkZWFsbG9nKG5mLGEsemluaXQpKTsKICBmb3IoIGkg
PSAxLCAjemluaXRbMl1bMl0sCiAgICBpZiggISh6aW5pdFsyXVsyXVtpXSUyKSAmJiAoemxv
Z1tpXSUyKSwKaWYoIERFQlVHTEVWRUxfZWxsID49IDUsIHByaW50KCIgICAgIGVuZCBvZiBu
Zmlzc3F1YXJlbW9kcCIpKTsKICAgICAgcmV0dXJuKDApKSk7CmlmKCBERUJVR0xFVkVMX2Vs
bCA+PSA1LCBwcmludCgiICAgICBlbmQgb2YgbmZpc3NxdWFyZW1vZHAiKSk7CiAgcmV0dXJu
KDEpOwp9CntuZmlzc3F1YXJlbW9kcHEoIG5mLCBhLCBwLCBxKSA9ClxcIGNldHRlIGZvbmN0
aW9uIHJlbnZvaWUgMSBzaSBhIGVzdCB1biBjYXJyZQpcXCA/aW52ZXJzaWJsZT8gbW9kdWxv
IFBecSBldCAwIHNpbm9uLgpcXCBQIGRpdmlzZSAyLCBldCA/KGEscCk9MT8uCm15KHZhbGEs
emluaXQsemxvZyk7CgppZiggREVCVUdMRVZFTF9lbGwgPj0gNSwgcHJpbnQoIiAgICAgc3Rh
cnRpbmcgbmZpc3NxdWFyZW1vZHBxICIsW2EscCxxXSkpOwogIGlmKCBhID09IDAsCmlmKCBE
RUJVR0xFVkVMX2VsbCA+PSA1LCBwcmludCgiICAgICBlbmQgb2YgbmZpc3NxdWFyZW1vZHBx
IikpOwogICAgcmV0dXJuKDEpKTsKICB2YWxhID0gaWRlYWx2YWwobmYsYSxwKTsKICBpZigg
dmFsYSA+PSBxLAppZiggREVCVUdMRVZFTF9lbGwgPj0gNSwgcHJpbnQoIiAgICAgZW5kIG9m
IG5maXNzcXVhcmVtb2RwcSIpKTsKICAgIHJldHVybigxKSk7CiAgaWYoIHZhbGElMiwKaWYo
IERFQlVHTEVWRUxfZWxsID49IDUsIHByaW50KCIgICAgIGVuZCBvZiBuZmlzc3F1YXJlbW9k
cHEiKSk7CiAgICByZXR1cm4oMCkpOwogIHppbml0ID0gaWRlYWxzdGFyKG5mLGlkZWFscG93
KG5mLHAscS12YWxhKSwyKTsKICB6bG9nID0gaWRlYWxsb2cobmYsYSpuZmJhc2lzdG9hbGco
bmYscFs1XS8yKV52YWxhLHppbml0KTsKICBmb3IoIGkgPSAxLCAjemluaXRbMl1bMl0sCiAg
ICBpZiggISh6aW5pdFsyXVsyXVtpXSUyKSAmJiAoemxvZ1tpXSUyKSwKaWYoIERFQlVHTEVW
RUxfZWxsID49IDUsIHByaW50KCIgICAgIGVuZCBvZiBuZmlzc3F1YXJlbW9kcHEiKSk7CiAg
ICAgIHJldHVybigwKSkpOwppZiggREVCVUdMRVZFTF9lbGwgPj0gNSwgcHJpbnQoIiAgICAg
ZW5kIG9mIG5maXNzcXVhcmVtb2RwcSIpKTsKICByZXR1cm4oMSk7Cn0Ke25mc3FydG1vZHBx
KG5mLGEscCxxKSA9ClxcIHN1cHBvc2UgcXVlIGEgZXN0IHVuIGNhcnJlIG1vZHVsbyBwXnEK
XFwgZXQgcmVudm9pZSB4IHRlbCBxdWUgIHheMiA9IGEgbW9kIHBecS4KbXkocF9obmYsZixh
YWEscXEsZSx4eCx5eSxyLGF1eCxiLG0sdnAsaW52MngsemluaXQsemxvZyxleHBvLHBfaW5p
LG5vbl9zcSxpZCk7CgppZiggREVCVUdMRVZFTF9lbGwgPj0gNSwgcHJpbnQoIiAgICBzdGFy
dGluZyBuZnNxcnRtb2RwcSAiLGEscCxxKSk7CiAgaWYoIGEgPT0gMCB8fCBhID09IDEsCmlm
KCBERUJVR0xFVkVMX2VsbCA+PSA1LCBwcmludCgiICAgIGVuZCBvZiBuZnNxcnRtb2RwcSIp
KTsKICAgIHJldHVybihhKSk7CiAgZiA9IGlkZWFsdmFsKG5mLGEscCk7CiAgaWYoIGYgPj0g
cSwKaWYoIERFQlVHTEVWRUxfZWxsID49IDUsIHByaW50KCIgICAgIGVuZCBvZiBuZnNxcnRt
b2RwcSIpKTsKICAgIHJldHVybigwKSk7CmlmKCBmJTIsIGVycm9yKCJuZnNxcnRtb2RwcTog
YSBpcyBub3QgYSBzcXVhcmUsIG9kZCB2YWx1YXRpb24iKSk7CiAgYSA9IG5mYWxndG9iYXNp
cyhuZixhKTsKICBpZiggZiwgYWFhID0gbmZlbHRwb3cobmYsbmZlbHRkaXYobmYsYSxwWzVd
L3AucCksZiksIGFhYSA9IGEpOwogIHBfaG5mID0gaWRlYWxobmYobmYscCk7CiAgcF9pbmkg
PSBuZm1vZHByaW5pdChuZixwKTsKaWYoIERFQlVHTEVWRUxfZWxsID49IDUsIHByaW50KCIg
ICAgIHBfaG5mID0gIixwX2huZikpOwppZiggREVCVUdMRVZFTF9lbGwgPj0gNSwgcHJpbnQo
IiAgICAgcF9pbmkgPSAiLHBfaW5pKSk7CgogIGlmKCBwLnAgIT0gMiwKXFwgZmlyc3QgY2Fz
ZSA6IHAgaXMgb2RkCgpcXCBTaGFua3Mgc3FydCBhbGdvcml0aG0KaWYoIERFQlVHTEVWRUxf
ZWxsID49IDUsIHByaW50KCIgICAgIFNoYW5rcyBzcXJ0IGFsZ29yaXRobSIpKTsKICAgIG5v
bl9zcSA9IG5mcmFuZGludG1vZGlkKG5mLHBfaG5mKTsKICAgIHdoaWxlKCBuZmlzc3F1YXJl
bW9kcG9kZChuZixub25fc3EscCksIG5vbl9zcSA9IG5mcmFuZGludG1vZGlkKG5mLHBfaG5m
KSk7CiAgICBub25fc3EgPSBuZmFsZ3RvYmFzaXMobmYsbm9uX3NxKTsKICAgIHFxID0gKCBw
LnBecC5mIC0xKSBcIDI7CiAgICBlID0gMTsgd2hpbGUoICEocXElMiksIGUrKzsgcXEgXD0g
Mik7CiAgICBub25fc3EgPSBuZmVsdHBvd21vZHByKG5mLG5vbl9zcSxxcSxwX2luaSk7CiAg
ICB5eSA9IG5vbl9zcTsgciA9IGU7CiAgICB4eCAgPSBuZmVsdHBvd21vZHByKG5mLGFhYSxx
cVwyLHBfaW5pKTsKICAgIGF1eCA9IG5mZWx0bXVsbW9kcHIobmYsYWFhLHh4LHBfaW5pKTsK
ICAgIGIgICA9IG5mZWx0bXVsbW9kcHIobmYsYXV4LHh4LHBfaW5pKTsKICAgIHh4ID0gYXV4
OwogICAgYXV4ID0gYjsgbSA9IDA7CiAgICB3aGlsZSggIXZhbChuZixuZmJhc2lzdG9hbGco
bmYsYXV4KS0xLHApLAogICAgICAgbSsrOwogICAgICAgYXV4ID0gbmZlbHRwb3dtb2Rwcihu
ZixhdXgsMixwX2luaSkKICAgICk7CiAgICB3aGlsZSggbSwKICAgICAgaWYoIG0gPT0gciwg
ZXJyb3IoIm5mc3FydG1vZHBxOiBtID0gciIpKTsKICAgICAgYXV4ID0gbmZlbHRwb3dtb2Rw
cihuZix5eSwxPDwoci1tLTEpLHBfaW5pKTsKICAgICAgeXkgID0gbmZlbHRwb3dtb2Rwcihu
ZixhdXgsMixwX2luaSk7CiAgICAgIHIgPSBtOwogICAgICB4eCA9IG5mZWx0bXVsbW9kcHIo
bmYseHgsYXV4LHBfaW5pKTsKICAgICAgYiAgPSBuZmVsdG11bG1vZHByKG5mLGIseXkscF9p
bmkpOwogICAgICBhdXggPSBiO20gPSAwOwogICAgICB3aGlsZSggIXZhbChuZixuZmJhc2lz
dG9hbGcobmYsYXV4KS0xLHApLAogICAgICAgIG0rKzsKICAgICAgICBhdXggPSBuZmVsdHBv
d21vZHByKG5mLGF1eCwyLHBfaW5pKQogICAgICApCiAgICApOwoKXFwgbGlmdCBkZSBIZW5z
ZWwKXFwKCiAgICB4eCA9IG5mYmFzaXN0b2FsZyhuZix4eCk7CiAgICBhYWE9IG5mYmFzaXN0
b2FsZyhuZixhYWEpOwogICAgaWYoIHEgPiAxLAppZiggREVCVUdMRVZFTF9lbGwgPj0gNSwg
cHJpbnQoIiAgICAgSGVuc2VsIGxpZnRpbmciKSk7CiAgICAgIHZwID0gaWRlYWx2YWwobmYs
eHheMi1hYWEscCk7CiAgICAgIGlmKCB2cCA8IHEtZiwKICAgICAgICB5eSA9IDIqeHg7CiAg
ICAgICAgaW52MnggPSBuZmJhc2lzdG9hbGcobmYsaWRlYWxhZGR0b29uZShuZix5eSxwKVsx
XSkveXk7CiAgICAgICAgd2hpbGUoIHZwIDwgcSwgdnArKzsgeHggLT0gKHh4XjItYWFhKSpp
bnYyeCk7CiAgICAgICk7CiAgICAgIGlmKCBmLCB4eCAqPSBuZmJhc2lzdG9hbGcobmYscFsy
XSleKGZcMikpOwogICAgKTsKICAgIHh4ID0gbXluZmVsdHJlZHVjZShuZix4eCxpZGVhbHBv
dyhuZixwLHEpKQogICwKXFwgY2FzIG91IHAgZGl2aXNlIDIgKi8KICAgIGlmKCBxLWYgPiAx
LCBpZCA9IGlkZWFscG93KG5mLHAscS1mKSwgaWQgPSBwX2huZik7CiAgICB6aW5pdCA9IGlk
ZWFsc3RhcihuZixpZCwyKTsKICAgIHpsb2cgPSBpZGVhbGxvZyhuZixhYWEsemluaXQpOwog
ICAgeHggPSAxOwogICAgZm9yKCBpID0gMSwgI3psb2csCiAgICAgIGV4cG8gPSB6bG9nW2ld
OwogICAgICBpZiggZXhwbywKICAgICAgICBpZiggIWV4cG8lMiwKICAgICAgICAgIGV4cG8g
PSBleHBvPj4xCiAgICAgICAgLCBhdXggPSB6aW5pdFsyXVtpXTsKICAgICAgICAgIGV4cG8g
PSBleHBvKigoYXV4KzEpPj4xKSVhdXgKICAgICAgICApOwogICAgICAgIHh4ICo9IG5mYmFz
aXN0b2FsZyhuZix6aW5pdFsyXVszXVtpXSleZXhwbwogICAgICApCiAgICApOwogICAgaWYo
IGYsCiAgICAgIHh4ICo9IG5mYmFzaXN0b2FsZyhuZixwWzJdKV4oZj4+MSk7CiAgICAgIGlk
ID0gaWRlYWxwb3cobmYscCxxKSk7CiAgICB4eCA9IG15bmZlbHRyZWR1Y2UobmYseHgsaWQp
OwogICk7CmlmKCBERUJVR0xFVkVMX2VsbCA+PSA1LCBwcmludCgiICAgIGVuZCBvZiBuZnNx
cnRtb2RwcSAiLHh4KSk7CiAgcmV0dXJuKHh4KTsKfQp7bmZsZW1tYTYoIG5mLCBwb2wsIHAs
IG51LCB4eCkgPQpteShneCxncHgsbGFtYmRhLG11KTsKCmlmKCBERUJVR0xFVkVMX2VsbCA+
PSA1LCBwcmludCgiICAgICBzdGFydGluZyBuZmxlbW1hNiIpKTsKICBneCA9IHN1YnN0KCBw
b2wsICd4LCB4eCk7CiAgaWYoIG5maXNzcXVhcmVtb2Rwb2RkKG5mLGd4LHApLAppZiggREVC
VUdMRVZFTF9lbGwgPj0gNSwgcHJpbnQoIiAgICAgZW5kIG9mIG5mbGVtbWE2IikpOwogICAg
cmV0dXJuKDEpKTsKICBncHggPSBzdWJzdCggcG9sJywgJ3gsIHh4KTsKICBsYW1iZGEgPSB2
YWwobmYsZ3gscCk7bXUgPSB2YWwobmYsZ3B4LHApOwoKICBpZiggbGFtYmRhPjIqbXUsCmlm
KCBERUJVR0xFVkVMX2VsbCA+PSA1LCBwcmludCgiICAgICBlbmQgb2YgbmZsZW1tYTYiKSk7
CiAgICByZXR1cm4oMSkpOwogIGlmKCAobGFtYmRhID49IDIqbnUpICAmJiAobXUgPj0gbnUp
LAppZiggREVCVUdMRVZFTF9lbGwgPj0gNSwgcHJpbnQoIiAgICAgZW5kIG9mIG5mbGVtbWE2
IikpOwogICAgcmV0dXJuKDApKTsKaWYoIERFQlVHTEVWRUxfZWxsID49IDUsIHByaW50KCIg
ICAgIGVuZCBvZiBuZmxlbW1hNiIpKTsKICByZXR1cm4oLTEpOwp9CntuZmxlbW1hNyggbmYs
IHBvbCwgcCwgbnUsIHh4LCB6aW5pdCkgPQpteShneCxncHgsdixsYW1iZGEsbXUscSk7Cgpp
ZiggREVCVUdMRVZFTF9lbGwgPj0gNSwgcHJpbnQoImVudHJlZSBkYW5zIG5mbGVtbWE3ICIs
W3h4LG51XSkpOwogIGd4ID0gc3Vic3QoIHBvbCwgJ3gsIHh4KTsKICBpZiggbmZpc3NxdWFy
ZW1vZHAobmYsZ3gscCx6aW5pdCksCmlmKCBERUJVR0xFVkVMX2VsbCA+PSA1LCBwcmludCgi
ZmluIGRlIG5mbGVtbWE3IikpOwogICAgcmV0dXJuKDEpKTsKICBncHggPSBzdWJzdCggcG9s
JywgJ3gsIHh4KTsKICB2ID0gcFszXTsKICBsYW1iZGEgPSB2YWwobmYsZ3gscCk7bXUgPSB2
YWwobmYsZ3B4LHApOwogIGlmKCBsYW1iZGE+MiptdSwKaWYoIERFQlVHTEVWRUxfZWxsID49
IDUsIHByaW50KCJmaW4gZGUgbmZsZW1tYTciKSk7CiAgICByZXR1cm4oMSkpOwogIGlmKCBu
dSA+IG11LAogICAgaWYoIGxhbWJkYSUyLAppZiggREVCVUdMRVZFTF9lbGwgPj0gNSwgcHJp
bnQoImZpbiBkZSBuZmxlbW1hNyIpKTsKICAgICAgcmV0dXJuKC0xKSk7CiAgICBxID0gbXUr
bnUtbGFtYmRhOwogICAgaWYoIHEgPiAyKnYsCmlmKCBERUJVR0xFVkVMX2VsbCA+PSA1LCBw
cmludCgiZmluIGRlIG5mbGVtbWE3IikpOwogICAgICByZXR1cm4oLTEpKTsKICAgIGlmKCBu
Zmlzc3F1YXJlbW9kcHEobmYsZ3gqbmZiYXNpc3RvYWxnKG5mLHBbNV0vMilebGFtYmRhLHAs
cSksCmlmKCBERUJVR0xFVkVMX2VsbCA+PSA1LCBwcmludCgiZmluIGRlIG5mbGVtbWE3Iikp
OwogICAgICByZXR1cm4oMSkpCiAgLAogICAgaWYoIGxhbWJkYSA+PSAyKm51LAppZiggREVC
VUdMRVZFTF9lbGwgPj0gNSwgcHJpbnQoImZpbiBkZSBuZmxlbW1hNyIpKTsKICAgICAgcmV0
dXJuKDApKTsKICAgIGlmKCBsYW1iZGElMiwKaWYoIERFQlVHTEVWRUxfZWxsID49IDUsIHBy
aW50KCJmaW4gZGUgbmZsZW1tYTciKSk7CiAgICAgIHJldHVybigtMSkpOwogICAgcSA9IDIq
bnUtbGFtYmRhOwogICAgaWYoIHEgPiAyKnYsCmlmKCBERUJVR0xFVkVMX2VsbCA+PSA1LCBw
cmludCgiZmluIGRlIG5mbGVtbWE3IikpOwogICAgICByZXR1cm4oLTEpKTsKICAgIGlmKCBu
Zmlzc3F1YXJlbW9kcHEobmYsZ3gqbmZiYXNpc3RvYWxnKG5mLHBbNV0vMilebGFtYmRhLHAs
cSksCmlmKCBERUJVR0xFVkVMX2VsbCA+PSA1LCBwcmludCgiZmluIGRlIG5mbGVtbWE3Iikp
OwogICAgICByZXR1cm4oMCkpCiAgKTsKaWYoIERFQlVHTEVWRUxfZWxsID49IDUsIHByaW50
KCJmaW4gZGUgbmZsZW1tYTciKSk7CiAgcmV0dXJuKC0xKTsKfQp7bmZ6cF9zb2x1YmxlKCBu
ZiwgcG9sLCBwLCBudSwgcG51LCB4MCkgPQpteShyZXN1bHQscG51cCxscmVwKTsKCmlmKCBE
RUJVR0xFVkVMX2VsbCA+PSA1LCBwcmludCgiZW50cmVlIGRhbnMgbmZ6cF9zb2x1YmxlICIs
W2xpZnQoeDApLG51XSkpOwogIGlmKCBwWzNdID09IDAsCiAgICByZXN1bHQgPSBuZmxlbW1h
NihuZixwb2wscFsxXSxudSx4MCksCiAgICByZXN1bHQgPSBuZmxlbW1hNyhuZixwb2wscFsx
XSxudSx4MCxwWzRdKSk7CiAgaWYoIHJlc3VsdCA9PSArMSwKaWYoIERFQlVHTEVWRUxfZWxs
ID49IDUsIHByaW50KCJmaW4gZGUgbmZ6cF9zb2x1YmxlIikpOwogICAgcmV0dXJuKDEpKTsK
ICBpZiggcmVzdWx0ID09IC0xLAppZiggREVCVUdMRVZFTF9lbGwgPj0gNSwgcHJpbnQoImZp
biBkZSBuZnpwX3NvbHVibGUiKSk7CiAgICByZXR1cm4oMCkpOwogIHBudXAgPSBwbnUqcFsy
XTsKICBscmVwID0gI3BbNV07CiAgbnUrKzsKICBmb3IoIGkgPSAxLCBscmVwLAogICAgaWYo
IG5menBfc29sdWJsZShuZixwb2wscCxudSxwbnVwLHgwK3BudSpwWzVdW2ldKSwKaWYoIERF
QlVHTEVWRUxfZWxsID49IDUsIHByaW50KCJmaW4gZGUgbmZ6cF9zb2x1YmxlIikpOwogICAg
ICByZXR1cm4oMSkpKTsKaWYoIERFQlVHTEVWRUxfZWxsID49IDUsIHByaW50KCJmaW4gZGUg
bmZ6cF9zb2x1YmxlIikpOwogIHJldHVybigwKTsKfQp7bXluZmVsdG1vZChuZixhLGIpID0K
bXkocXJlZCk7CgogIHFyZWQgPSByb3VuZChuZmFsZ3RvYmFzaXMobmYsYS9iKSk7CiAgcXJl
ZCA9IGEtYipuZmJhc2lzdG9hbGcobmYscXJlZCk7CiAgcmV0dXJuKHFyZWQpOwp9CntteW5m
ZWx0cmVkdWNlKG5mLGEsaWQpID0KICBuZmJhc2lzdG9hbGcobmYsbmZlbHRyZWR1Y2UobmYs
bmZhbGd0b2Jhc2lzKG5mLGEpLGlkKSk7Cn0Ke25mcmFuZGludG1vZGlkKCBuZiwgaWQpID0K
bXkocmVzKTsKCmlmKCBERUJVR0xFVkVMX2VsbCA+PSA1LCBwcmludCgiZW50cmVlIGRhbnMg
bmZyYW5kaW50bW9kaWQiKSk7CiAgcmVzID0gMDsKICB3aGlsZSggIXJlcywKICAgIHJlcyA9
IG5mcmFuZGludChuZiwwKTsKICAgIHJlcyA9IG15bmZlbHRyZWR1Y2UobmYscmVzLGlkKSk7
CmlmKCBERUJVR0xFVkVMX2VsbCA+PSA1LCBwcmludCgiZmluIGRlIG5mcmFuZGludG1vZGlk
IikpOwogIHJldHVybihyZXMpOwp9CntuZnJhbmRpbnQoIG5mLCBib3JuZSkgPQpteShkLHJl
cyk7CgppZiggREVCVUdMRVZFTF9lbGwgPj0gNSwgcHJpbnQoIiAgICAgc3RhcnRpbmcgbmZy
YW5kaW50IikpOwogIGQgPSBwb2xkZWdyZWUobmYucG9sKTsKICByZXMgPSB2ZWN0b3J2KGQs
aSxpZiggYm9ybmUsIHJhbmRvbShib3JuZTw8MSktYm9ybmUsIHJhbmRvbSgpKSk7CiAgcmVz
ID0gbmZiYXNpc3RvYWxnKG5mLHJlcyk7CmlmKCBERUJVR0xFVkVMX2VsbCA+PSA1LCBwcmlu
dCgiICAgICBlbmQgb2YgbmZyYW5kaW50IikpOwogIHJldHVybihyZXMpOwp9CntuZnFwX3Nv
bHVibGViaWcoIG5mLCBwb2wsIHAsYXA9MCxiPTEpID0KbXkoZGVnLHh4LHosUHgsY29udCxw
aSxwb2wyLFJvb3RzKTsKCmlmKCBERUJVR0xFVkVMX2VsbCA+PSA0LCBwcmludCgiICAgIHN0
YXJ0aW5nIG5mcXBfc29sdWJsZWJpZyBhdmVjICIscC5wKSk7CiAgZGVnID0gcG9sZGVncmVl
KHBvbCk7CgogIGlmKCBuZmlzc3F1YXJlbW9kcG9kZChuZixwb2xjb2VmZihwb2wsMCkscCks
CmlmKCBERUJVR0xFVkVMX2VsbCA+PSA0LCBwcmludCgiICAgIGVuZCBvZiBuZnFwX3NvbHVi
bGViaWciKSk7CiAgICByZXR1cm4oMSkpOwogIGlmKCBuZmlzc3F1YXJlbW9kcG9kZChuZixw
b2xsZWFkKHBvbCkscCksCmlmKCBERUJVR0xFVkVMX2VsbCA+PSA0LCBwcmludCgiICAgIGVu
ZCBvZiBuZnFwX3NvbHVibGViaWciKSk7CiAgICByZXR1cm4oMSkpOwoKXFwgb24gdGllbnQg
Y29tcHRlIGR1IGNvbnRlbnUgZGUgcG9sCiAgY29udCA9IGlkZWFsdmFsKG5mLHBvbGNvZWZm
KHBvbCwwKSxwKTsKICBmb3IoIGkgPSAxLCBkZWcsCiAgICBpZiggY29udCwgY29udCA9IG1p
bihjb250LGlkZWFsdmFsKG5mLHBvbGNvZWZmKHBvbCxpKSxwKSkpKTsKICBpZiggY29udCwg
cGkgPSBuZmJhc2lzdG9hbGcobmYscFs1XS9wLnApKTsKICBpZiggY29udCA+IDEsIHBvbCAq
PSBwaV4oMiooY29udFwyKSkpOwoKXFwgT24gZXNzYXllIGRlcyB2YWxldXJzIGRlIHggYXUg
aGFzYXJkCiAgaWYoIGNvbnQlMiwKICAgIHBvbDIgPSBwb2wqcGkKICAsIHBvbDIgPSBwb2w7
CiAgICBmb3IoIGkgPSAxLCBNQVhQUk9CLAogICAgICB4eCA9IG5mcmFuZGludChuZiwwKTsK
ICAgICAgeiA9IDA7IHdoaWxlKCAheiwgeiA9IHJhbmRvbSgpKTsKICAgICAgeHggPSAtYXAq
eitiKnh4OwogICAgICBQeD1wb2xjb2VmZihwb2wsZGVnKTsKICAgICAgZm9yc3RlcCAoaj1k
ZWctMSwwLC0xLFB4PVB4Knh4K3BvbGNvZWZmKHBvbCxqKSk7CiAgICAgIFB4ICo9IHpeZGVn
OwogICAgICBpZiggbmZpc3NxdWFyZW1vZHBvZGQobmYsUHgscCksCmlmKCBERUJVR0xFVkVM
X2VsbCA+PSA0LCBwcmludCgiICAgIGVuZCBvZiBuZnFwX3NvbHVibGViaWciKSk7CiAgICAg
ICAgcmV0dXJuKDEpKTsKICAgICkKICApOwoKXFwgT24gZXNzYXllIGxlcyByYWNpbmVzIGRl
IHBvbAogIFJvb3RzID0gbmZwb2xyb290c21vZChuZixwb2wyLHApOwogIHBpID0gbmZiYXNp
c3RvYWxnKG5mLHBbMl0pOwogIGZvciggaSA9IDEsICNSb290cywKICAgIGlmKCBuZnFwX3Nv
bHVibGViaWcobmYsc3Vic3QocG9sLCd4LHBpKid4K1Jvb3RzW2ldKSxwKSwKaWYoIERFQlVH
TEVWRUxfZWxsID49IDQsIHByaW50KCJmaW4gZGUgbmZxcF9zb2x1YmxlYmlnIikpOwogICAg
ICByZXR1cm4oMSkpKTsKCmlmKCBERUJVR0xFVkVMX2VsbCA+PSA0LCBwcmludCgiICAgIGVu
ZCBvZiBuZnFwX3NvbHVibGViaWciKSk7CiAgcmV0dXJuKDApOwp9CntuZnBvbHJvb3RzbW9k
KG5mLHBvbCxwKSA9ClxcIGNhbGN1bGUgbGVzIHJhY2luZXMgbW9kdWxvIGwnaWRlYWwgcCBk
dSBwb2x5bm9tZSBwb2wuClxcIHAgZXN0IHVuIGlkZWFsIHByZW1pZXIgZGUgbmYsIHNvdXMg
bGEgZm9ybWUgaWRlYWxwcmltZWRlYwpteShmYWN0bGlzdCxzb2wpOwoKICBmYWN0bGlzdCA9
IG5mZmFjdG9ybW9kKG5mLHBvbCxwKVssMV07CiAgc29sID0gW107CiAgZm9yKCBpID0gMSwg
I2ZhY3RsaXN0LAogICAgaWYoIHBvbGRlZ3JlZShmYWN0bGlzdFtpXSkgPT0gMSwKICAgICAg
c29sID0gY29uY2F0KHNvbCwgWy1wb2xjb2VmZihmYWN0bGlzdFtpXSwwKS9wb2xjb2VmZihm
YWN0bGlzdFtpXSwxKV0pKSk7CiAgcmV0dXJuKHNvbCk7Cn0Ke25mcXBfc29sdWJsZSggbmYs
IHBvbCwgcCkgPQpcXCBwIGlzIGEgcHJpbWUgb3V0cHV0IGJ5IGluaXRwKCkKXFwgcmV0dXJu
IDEgaWYgcG9sKHgpID0geV4yIGhhcyBhIHAtYWRpYyByYXRpb25hbCBzb2x1dGlvbgpcXCAo
cG9zc2libHkgb28pClxcIGNvZWZmIG9mIG5mcWZzb2x1YmxlIG11c3QgYmUgaW50ZWdlcnMu
CgppZiggREVCVUdMRVZFTF9lbGwgPj0gNSwgcHJpbnQoIiAgICAgc3RhcnRpbmcgbmZxcF9z
b2x1YmxlICIscCkpOwppZiggREVCVUdMRVZFTF9lbGwgPj0gNSwgcHJpbnQoIiAgICAgcG9s
ID0gIixwb2wpKTsKICBpZiggbmZpc3NxdWFyZW1vZHAobmYscG9sbGVhZChwb2wpLHBbMV0s
cFs0XSksCmlmKCBERUJVR0xFVkVMX2VsbCA+PSA1LCBwcmludCgiICAgICBlbmQgb2YgbmZx
cF9zb2x1YmxlIikpOwogICAgcmV0dXJuKDEpKTsKICBpZiggbmZpc3NxdWFyZW1vZHAobmYs
cG9sY29lZmYocG9sLDApLHBbMV0scFs0XSksCmlmKCBERUJVR0xFVkVMX2VsbCA+PSA1LCBw
cmludCgiICAgICBlbmQgb2YgbmZxcF9zb2x1YmxlIikpOwogICAgcmV0dXJuKDEpKTsKICBp
ZiggbmZ6cF9zb2x1YmxlKG5mLHBvbCxwLDAsMSwwKSwKaWYoIERFQlVHTEVWRUxfZWxsID49
IDUsIHByaW50KCIgICAgIGVuZCBvZiBuZnFwX3NvbHVibGUiKSk7CiAgICByZXR1cm4oMSkp
OwogIGlmKCBuZnpwX3NvbHVibGUobmYscG9scmVjaXAocG9sKSxwLDEsIHBbMl0sMCksCmlm
KCBERUJVR0xFVkVMX2VsbCA+PSA1LCBwcmludCgiICAgICBlbmQgb2YgbmZxcF9zb2x1Ymxl
IikpOwogICAgcmV0dXJuKDEpKTsKaWYoIERFQlVHTEVWRUxfZWxsID49IDUsIHByaW50KCIg
ICAgIGVuZCBvZiBuZnFwX3NvbHVibGUiKSk7CiAgcmV0dXJuKDApOwp9CntuZmxvY2FsbHlz
b2x1YmxlKCBuZiwgcG9sLCByPTAsYT0xLGI9MSkgPQpcXCBUZXN0IHdoZXRoZXIgWV4yID0g
cG9sIGlzIEV2ZXJ5d2hlcmUgTG9jYWxseSBTb2x1YmxlCm15KHBvbDAscGxpc3QsYWRkLGZm
LHAsRGVsdGEsdmVjcG9sLHZlY3BvbHIsU3R1cm1yKTsKCmlmKCBERUJVR0xFVkVMX2VsbCA+
PSA0LCBwcmludCgiICAgIHN0YXJ0aW5nIG5mbG9jYWxseXNvbHVibGUgIixbcG9sLHIsYSxi
XSkpOwogIHBvbDAgPSBwb2w7CgpcXCBwbGFjZXMgZmluaWVzCgogIHBvbCAqPSBkZW5vKGNv
bnRlbnQobGlmdChwb2wpKSleMjsKICBmb3IoIGlpID0gMSwgMywKICAgIGlmKCBpaSA9PSAx
LCBwbGlzdCA9IGlkZWFscHJpbWVkZWMobmYsMikpOwogICAgaWYoIGlpID09IDIgJiYgciwg
cGxpc3QgPSBpZGVhbGZhY3RvcihuZixwb2xkaXNjKHBvbDAvcG9sbGVhZChwb2wwKSkvcG9s
bGVhZChwb2wwKV42LzJeMTIpWywxXSk7CiAgICBpZiggaWkgPT0gMiAmJiAhciwgcGxpc3Qg
PSBpZGVhbGZhY3RvcihuZixwb2xkaXNjKHBvbDApKVssMV0pOwogICAgaWYoIGlpID09IDMs
CiAgICAgIGFkZCA9IGlkZWFsYWRkKG5mLGEsYik7CiAgICAgIGZmID0gZmFjdG9yKGlkZWFs
bm9ybShuZixhZGQpKVssMV07CiAgICAgIGFkZHByaW1lcyhmZik7CmlmKCBERUJVR0xFVkVM
X2VsbCA+PSA0LCBwcmludCgiICAgIGxpc3Qgb2YgcHJpbWVzID0gIixmZikpOwogICAgICBw
bGlzdCA9IGlkZWFsZmFjdG9yKG5mLGFkZClbLDFdKTsKICAgICAgZm9yKCBpID0gMSwgI3Bs
aXN0LAogICAgICAgIHAgPSAgcGxpc3RbaV07CmlmKCBERUJVR0xFVkVMX2VsbCA+PSAzLCBw
cmludCgiICAgcCA9ICIscCkpOwogICAgICAgIGlmKCBwLnAgPCBMSU1CSUdQUklNRSB8fCAh
TElNQklHUFJJTUUsCiAgICAgICAgICBpZiggIW5mcXBfc29sdWJsZShuZixwb2wsaW5pdHAo
bmYscCkpLAppZiggREVCVUdMRVZFTF9lbGwgPj0gMiwgcHJpbnQoIiAgbm90IEVMUyBhdCAi
LHApKTsKaWYoIERFQlVHTEVWRUxfZWxsID49IDQsIHByaW50KCIgICAgZW5kIG9mIG5mbG9j
YWxseXNvbHVibGUiKSk7CiAgICAgICAgICAgIHJldHVybigwKSksCiAgICAgICAgICBpZigg
IW5mcXBfc29sdWJsZWJpZyhuZixwb2wscCxyL2EsYiksCmlmKCBERUJVR0xFVkVMX2VsbCA+
PSAyLCBwcmludCgiICBub3QgRUxTIGF0ICIscC5wLCIgKCA9IGJpZyBwcmltZSApIikpOwpp
ZiggREVCVUdMRVZFTF9lbGwgPj0gNCwgcHJpbnQoIiAgICBlbmQgb2YgbmZsb2NhbGx5c29s
dWJsZSIpKTsKICAgICAgICAgICAgcmV0dXJuKDApKSkpOwogICk7CgpcXCBwbGFjZXMgcmVl
bGxlcwoKICBpZiggbmYucjEsCiAgICBEZWx0YSA9IHBvbGRpc2MocG9sKTsgdmVjcG9sID0g
VmVjKHBvbCk7CiAgICBmb3IoIGkgPSAxLCBuZi5yMSwKICAgICAgaWYoIG5mcmVhbHNpZ24o
bmYscG9sbGVhZChwb2wpLGkpID4gMCwgbmV4dCk7CiAgICAgIGlmKCBuZnJlYWxzaWduKG5m
LHBvbGNvZWZmKHBvbCwwKSxpKSA+IDAsIG5leHQpOwogICAgICBpZiggbmZyZWFsc2lnbihu
ZixEZWx0YSxpKSA8IDAsIG5leHQpOwogICAgICB2ZWNwb2xyID0gdmVjdG9yKCN2ZWNwb2ws
aixteXN1YnN0KHZlY3BvbFtqXSxuZi5yb290c1tpXSkpOwogICAgICBTdHVybXIgPSBwb2xz
dHVybShQb2wodmVjcG9scikpOwogICAgICBpZiggU3R1cm1yID09IDAsCmlmKCBERUJVR0xF
VkVMX2VsbCA+PSAyLCBwcmludCgiICBub3QgRUxTIGF0IGluZmluaXR5IikpOwppZiggREVC
VUdMRVZFTF9lbGwgPj0gNCwgcHJpbnQoIiAgICBlbmQgb2YgbmZsb2NhbGx5c29sdWJsZSIp
KTsKICAgICAgICByZXR1cm4oMCkpOwogICkpOwppZiggREVCVUdMRVZFTF9lbGwgPj0gMiwg
cHJpbnQoIiAgcXVhcnRpYyBFTFMgIikpOwppZiggREVCVUdMRVZFTF9lbGwgPj0gNCwgcHJp
bnQoIiAgICBlbmQgb2YgbmZsb2NhbGx5c29sdWJsZSIpKTsKICByZXR1cm4oMSk7Cn0Ke25m
ZWxsY291bnQoIG5mLCBjLCBkLCBLUzJnZW4sIHBvaW50c3RyaXYpID0KbXkoZm91bmQsbGlz
dGdlbixsaXN0cG9pbnRzY291bnQsbTEsbTIsbGFzdGxvYyxtYXNrLGksZDEsaWF1eCxqLHRy
aXYscG9sLHBvaW50LGRldXhwb2ludHMsYXV4LHYpOwoKaWYoIERFQlVHTEVWRUxfZWxsID49
IDQsIHByaW50KCIgICAgc3RhcnRpbmcgbmZlbGxjb3VudCAiLFtjLGRdKSk7CiAgZm91bmQg
PSAwOwogIGxpc3RnZW4gPSBLUzJnZW47CiAgbGlzdHBvaW50c2NvdW50ID0gW107CgogIG0x
ID0gbTIgPSAwOyBsYXN0bG9jID0gLTE7CgogIG1hc2sgPSAxIDw8ICNLUzJnZW47CiAgaSA9
IDE7CiAgd2hpbGUoIGkgPCBtYXNrLAogICAgZDEgPSAxOyBpYXV4ID0gaTsgaiA9IDE7CiAg
ICB3aGlsZSggaWF1eCwKICAgICAgaWYoIGlhdXglMiwgZDEgKj0gbGlzdGdlbltqXSk7CiAg
ICAgIGlhdXggPj49IDE7IGorKyk7CmlmKCBERUJVR0xFVkVMX2VsbCA+PSAyLCBwcmludCgi
ICBkMSA9ICIsZDEpKTsKICAgIHRyaXYgPSAwOwogICAgZm9yKCBqID0gMSwgI3BvaW50c3Ry
aXYsCiAgICAgIGlmKCBwb2ludHN0cml2W2pdWzNdKnBvaW50c3RyaXZbal1bMV0KICAgICAg
ICAmJiBuZmlzc3F1YXJlKG5mLGQxKnBvaW50c3RyaXZbal1bMV0qcG9pbnRzdHJpdltqXVsz
XSksCiAgICAgICAgbGlzdHBvaW50c2NvdW50ID0gY29uY2F0KGxpc3Rwb2ludHNjb3VudCxb
cG9pbnRzdHJpdltqXV0pOwppZiggREVCVUdMRVZFTF9lbGwgPj0gMiwgcHJpbnQoIiAgY29t
ZXMgZnJvbSBhIHRyaXZpYWwgcG9pbnQiKSk7CiAgICAgICAgdHJpdiA9IDE7IG0xKys7CiAg
ICAgICAgaWYoIGRlZ3JlKGkpID4gbGFzdGxvYywgbTIrKyk7CiAgICAgICAgZm91bmQgPSAx
OyBsYXN0bG9jID0gLTE7IGJyZWFrCiAgICApKTsKICAgIGlmKCAhdHJpdiwKICAgIHBvbCA9
IFBvbChbZDEsMCxjLDAsZC9kMV0pOwppZiggREVCVUdMRVZFTF9lbGwgPj0gMywgcHJpbnQo
IiAgIHF1YXJ0aWM6IHleMiA9ICIscG9sKSk7CiAgICBwb2ludCA9IG5mcmF0cG9pbnQobmYs
cG9sLExJTTEsMSk7CiAgICBpZiggcG9pbnQgIT0gW10sCmlmKCBERUJVR0xFVkVMX2VsbCA+
PSAyLCBwcmludCgiICBwb2ludCBvbiB0aGUgcXVhcnRpYyIpKTsKaWYoIERFQlVHTEVWRUxf
ZWxsID49IDMsIHByaW50KCIgICAiLHBvaW50KSk7CiAgICAgIG0xKys7CiAgICAgIGlmKCBw
b2ludFszXSAhPSAwLAogICAgICAgIGF1eCA9IGQxKnBvaW50WzFdL3BvaW50WzNdXjI7CiAg
ICAgICAgZGV1eHBvaW50cyA9IFsgYXV4KnBvaW50WzFdLCBhdXgqcG9pbnRbMl0vcG9pbnRb
M10gXQogICAgICAsCiAgICAgICAgZGV1eHBvaW50cyA9IFswXSk7CiAgICAgIGxpc3Rwb2lu
dHNjb3VudCA9IGNvbmNhdChsaXN0cG9pbnRzY291bnQsW2RldXhwb2ludHNdKTsKICAgICAg
aWYoIGRlZ3JlKGkpID4gbGFzdGxvYywgbTIrKyk7CiAgICAgIGZvdW5kID0gMTsgbGFzdGxv
YyA9IC0xCiAgICAsCiAgICAgIGlmKCBuZmxvY2FsbHlzb2x1YmxlKG5mLHBvbCksCiAgICAg
ICAgaWYoIGRlZ3JlKGkpID4gbGFzdGxvYywgbTIrKzsgbGFzdGxvYyA9IGRlZ3JlKGkpKTsK
ICAgICAgICBwb2ludCA9IG5mcmF0cG9pbnQobmYscG9sLExJTTMsMSk7CiAgICAgICAgaWYo
IHBvaW50ICE9IFtdLAppZiggREVCVUdMRVZFTF9lbGwgPj0gMiwgcHJpbnQoIiAgcG9pbnQg
b24gdGhlIHF1YXJ0aWMiKSk7CmlmKCBERUJVR0xFVkVMX2VsbCA+PSAzLCBwcmludCgiICAg
Iixwb2ludCkpOwogICAgICAgICAgbTErKzsKICAgICAgICAgIGF1eCA9IGQxKnBvaW50WzFd
L3BvaW50WzNdXjI7CiAgICAgICAgICBkZXV4cG9pbnRzID0gWyBhdXgqcG9pbnRbMV0sIGF1
eCpwb2ludFsyXS9wb2ludFszXSBdOwogICAgICAgICAgbGlzdHBvaW50c2NvdW50ID0gY29u
Y2F0KGxpc3Rwb2ludHNjb3VudCxbZGV1eHBvaW50c10pOwogICAgICAgICAgaWYoIGRlZ3Jl
KGkpID4gbGFzdGxvYywgbTIrKyk7CiAgICAgICAgICBmb3VuZCA9IDE7IGxhc3Rsb2MgPSAt
MQogICAgICAgICwKaWYoIERFQlVHTEVWRUxfZWxsID49IDIsIHByaW50KCIgIG5vIHBvaW50
IGZvdW5kIG9uIHRoZSBxdWFydGljIikpOwogICAgICAgICAgKSkpKTsKICAgIGlmKCBmb3Vu
ZCwKICAgICAgZm91bmQgPSAwOwogICAgICB2ID0gMDsgaWF1eCA9IChpPj4xKTsKICAgICAg
d2hpbGUoIGlhdXgsIGlhdXggPj49IDE7IHYrKyk7CiAgICAgIG1hc2sgPj49IDE7CiAgICAg
IGxpc3RnZW4gPSB2ZWNleHRyYWN0KGxpc3RnZW4sKDE8PCNsaXN0Z2VuKS0oMTw8diktMSk7
CiAgICAgIGkgPSAoMTw8dikKICAgICwgaSsrKQogICk7CiAgZm9yKCBpID0gMSwgI2xpc3Rw
b2ludHNjb3VudCwKICAgaWYoICNsaXN0cG9pbnRzY291bnRbaV0gPiAxLAogICAgaWYoIHN1
YnN0KCd4XjMrYyoneF4yK2QqJ3gsJ3gsbGlzdHBvaW50c2NvdW50W2ldWzFdKS1saXN0cG9p
bnRzY291bnRbaV1bMl1eMiAhPSAwLAogICAgICBlcnJvcigibmZlbGxjb3VudDogV1JPTkcg
UE9JTlQgPSAiLGxpc3Rwb2ludHNjb3VudFtpXSkpKSk7CmlmKCBERUJVR0xFVkVMX2VsbCA+
PSA0LCBwcmludCgiICAgIGVuZCBvZiBuZmVsbGNvdW50IikpOwogIHJldHVybihbbGlzdHBv
aW50c2NvdW50LFttMSxtMl1dKTsKfQp7Ym5mZWxsMmRlc2NlbnRfdmlhaXNvZyggYm5mLCBl
bGwpID0KXFwgQ2FsY3VsIGR1IHJhbmcgZGVzIGNvdXJiZXMgZWxsaXB0aXF1ZXMgYXZlYyAy
LXRvcnNpb24KXFwgZGFucyBsZSBjb3JwcyBkZSBub21icmVzIGJuZgpcXCBwYXIgbGEgbWV0
aG9kZSBkZXMgMi1pc29nZW5pZXMuClxcClxcIGVsbCA9IFthMSxhMixhMyxhNCxhNl0KXFwg
eV4yK2ExeHkrYTN5PXheMythMnheMithNHgrYTYKXFwKXFwgZWxsIGRvaXQgZXRyZSBzb3Vz
IGxhIGZvcm1lClxcIHleMj14XjMrYXheMitieCAtPiBlbGwgPSBbMCxhLDAsYiwwXQpcXCBh
dmVjIGEgZXQgYiBlbnRpZXJzLgpteShQLFBmYWN0LHRvcnMscG9pbnRzdHJpdixhcGluaXQs
YnBpbml0LHBsaXN0LEtTMnByb2Qsb2RkY2xhc3MsS1MyZ2VuLGxpc3Rwb2ludHMscG9pbnRn
ZW4sbjEsbjIsY2VydGFpbixucDEsbnAyLGxpc3Rwb2ludHMyLGF1eDEsYXV4MixjZXJ0YWlu
cCxyYW5nLHN0cmFuZ2UpOwoKaWYoIERFQlVHTEVWRUxfZWxsID49IDIsIHByaW50KCIgIEFs
Z29yaXRobSBvZiAyLWRlc2NlbnQgdmlhIGlzb2dlbmllcyIpKTsKaWYoIERFQlVHTEVWRUxf
ZWxsID49IDMsIHByaW50KCIgICBzdGFydGluZyBibmZlbGwyZGVzY2VudF92aWFpc29nIikp
OwogIGlmKCB2YXJpYWJsZShibmYucG9sKSAhPSAneSwKICAgIGVycm9yKCJibmZlbGwyZGVz
Y2VudF92aWFpc29nOiB0aGUgdmFyaWFibGUgb2YgdGhlIG51bWJlciBmaWVsZCBtdXN0IGJl
IHkiKSk7CiAgZWxsID0gZWxsaW5pdChNb2QobGlmdChlbGwpLGJuZi5wb2wpLDEpOwoKICBp
ZiggZWxsLmRpc2MgPT0gMCwKICAgIGVycm9yKCJibmZlbGwyZGVzY2VudF92aWFpc29nOiBz
aW5ndWxhciBjdXJ2ZSAhISIpKTsKICBpZiggZWxsLmExICE9IDAgfHwgZWxsLmEzICE9IDAg
fHwgZWxsLmE2ICE9IDAsCiAgICBlcnJvcigiYm5mZWxsMmRlc2NlbnRfdmlhaXNvZzogY3Vy
dmUgbm90IG9mIHRoZSBmb3JtIFswLGEsMCxiLDBdIikpOwogIGlmKCBkZW5vbWluYXRvcihu
ZmFsZ3RvYmFzaXMoYm5mLGVsbC5hMikpID4gMSB8fCBkZW5vbWluYXRvcihuZmFsZ3RvYmFz
aXMoYm5mLGVsbC5hNCkpID4gMSwKICAgIGVycm9yKCJibmZlbGwyZGVzY2VudF92aWFpc29n
OiBub24gaW50ZWdyYWwgY29lZmZpY2llbnRzIikpOwoKICBQID0gUG9sKFsxLGVsbC5hMixl
bGwuYTRdKSpNb2QoMSxibmYucG9sKTsKICBQZmFjdCA9IGZhY3Rvcm5mKFAsYm5mLnBvbClb
LDFdOwogIHRvcnMgPSAjUGZhY3Q7CiAgaWYoICNQZmFjdCA+IDEsCiAgICBwb2ludHN0cml2
ID0gW1swLDAsMV0sWy1wb2xjb2VmZihQZmFjdFsxXSwwKSwwLDFdLFstcG9sY29lZmYoUGZh
Y3RbMl0sMCksMCwxXV0KICAsIHBvaW50c3RyaXYgPSBbWzAsMCwxXV0pOwoKICBhcGluaXQg
PSAtMiplbGwuYTI7IGJwaW5pdCA9IGVsbC5hMl4yLTQqZWxsLmE0OwoKXFwgY2FsY3VsIGRl
cyBpZGVhdXggcHJlbWllcnMgZGUgcGxpc3QKXFwgZXQgZGUgcXVlbHF1ZXMgcmVuc2VpZ25l
bWVudHMgYXNzb2NpZXMKICBwbGlzdCA9IGlkZWFsZmFjdG9yKGJuZiw2KmVsbC5kaXNjKVss
MV07CgppZiggREVCVUdMRVZFTF9lbGwgPj0gMywgcHJpbnQoIiAgIFNlYXJjaCBmb3IgdHJp
dmlhbCBwb2ludHMgb24gdGhlIGN1cnZlIikpOwogIFAgKj0gJ3g7CmlmKCBERUJVR0xFVkVM
X2VsbCA+PSAzLCBwcmludCgiICAgWV4yID0gIixQKSk7CiAgcG9pbnRzdHJpdiA9IGNvbmNh
dCggcG9pbnRzdHJpdiwgbmZyYXRwb2ludChibmYubmYsUCxMSU1UUklWLDApKTsKaWYoIERF
QlVHTEVWRUxfZWxsID49IDEsIHByaW50KCIgdHJpdmlhbCBwb2ludHMgb24gRShLKSA9ICIp
OwogIHByaW50KGxpZnQocG9pbnRzdHJpdikpOyBwcmludCgpKTsKCiAgS1MycHJvZCA9IGVs
bC5hNDsKICBvZGRjbGFzcyA9IDA7CiAgd2hpbGUoICFvZGRjbGFzcywKICAgIEtTMmdlbiA9
IGJuZnN1bml0KGJuZixpZGVhbGZhY3RvcihibmYsS1MycHJvZClbLDFdfik7CiAgICBvZGRj
bGFzcyA9IEtTMmdlbls1XVsxXSUyOwogICAgaWYoICFvZGRjbGFzcywKICAgICAgS1MycHJv
ZCA9IGlkZWFsbXVsKGJuZixLUzJwcm9kLChLUzJnZW5bNV1bM11bMV0pKSk7CiApOwogIEtT
MmdlbiA9IEtTMmdlblsxXTsKICBmb3IoIGkgPSAxLCAjS1MyZ2VuLAogICAgS1MyZ2VuW2ld
ID0gbmZiYXNpc3RvYWxnKGJuZiwgS1MyZ2VuW2ldKSk7CiAgS1MyZ2VuID0gY29uY2F0KE1v
ZChsaWZ0KGJuZi50dWZ1KSxibmYucG9sKSxLUzJnZW4pOwppZiggREVCVUdMRVZFTF9lbGwg
Pj0gMiwKICBwcmludCgiICAjSyhiLDIpZ2VuICAgICAgICAgID0gIiwjS1MyZ2VuKTsKICBw
cmludCgiICBLKGIsMilnZW4gPSAiLEtTMmdlbikpOwoKICBsaXN0cG9pbnRzID0gbmZlbGxj
b3VudChibmYubmYsZWxsLmEyLGVsbC5hNCxLUzJnZW4scG9pbnRzdHJpdik7CiAgcG9pbnRn
ZW4gPSBsaXN0cG9pbnRzWzFdOwppZiggREVCVUdMRVZFTF9lbGwgPj0gMSwKICBwcmludCgi
IHBvaW50cyBvbiBFKEspID0gIixsaWZ0KHBvaW50Z2VuKSk7CiAgcHJpbnQoKSk7CiAgbjEg
PSBsaXN0cG9pbnRzWzJdWzFdOyBuMiA9IGxpc3Rwb2ludHNbMl1bMl07CgogIGNlcnRhaW4g
PSAobjEgPT0gbjIpOwppZiggREVCVUdMRVZFTF9lbGwgPj0gMSwKICBpZiggY2VydGFpbiwK
ICAgIHByaW50KCJbRShLKTpwaGknKEUnKEspKV0gID0gIiwxPDxuMSk7CiAgICBwcmludCgi
I1NeKHBoaScpKEUnL0spICAgICA9ICIsMTw8bjIpOwogICAgcHJpbnQoIiNJSUkoRScvSylb
cGhpJ10gICAgPSAxIik7IHByaW50KCkKICAsCiAgICBwcmludCgiW0UoSyk6cGhpJyhFJyhL
KSldID49ICIsMTw8bjEpOwogICAgcHJpbnQoIiNTXihwaGknKShFJy9LKSAgICAgPSAiLDE8
PG4yKTsKICAgIHByaW50KCIjSUlJKEUnL0spW3BoaSddICAgPD0gIiwxPDwobjItbjEpKTsg
cHJpbnQoKSkKKTsKCiAgS1MycHJvZCA9IGJwaW5pdDsKICBvZGRjbGFzcyA9IDA7CiAgd2hp
bGUoICFvZGRjbGFzcywKICAgIEtTMmdlbiA9IGJuZnN1bml0KGJuZixpZGVhbGZhY3Rvcihi
bmYsS1MycHJvZClbLDFdfik7CiAgICBvZGRjbGFzcyA9IChLUzJnZW5bNV1bMV0lMik7CiAg
ICBpZiggIW9kZGNsYXNzLAogICAgICBLUzJwcm9kID0gaWRlYWxtdWwoYm5mLEtTMnByb2Qs
KEtTMmdlbls1XVszXVsxXSkpKSk7CiAgS1MyZ2VuID0gS1MyZ2VuWzFdOwogIGZvciggaSA9
IDEsICNLUzJnZW4sCiAgICBLUzJnZW5baV0gPSBuZmJhc2lzdG9hbGcoYm5mLCBLUzJnZW5b
aV0pKTsKICBLUzJnZW4gPSBjb25jYXQoTW9kKGxpZnQoYm5mLnR1ZnUpLGJuZi5wb2wpLEtT
Mmdlbik7CmlmKCBERUJVR0xFVkVMX2VsbCA+PSAyLAogIHByaW50KCIgICNLKGFeMi00Yiwy
KWdlbiAgICAgPSAiLCNLUzJnZW4pOwogIHByaW50KCIgIEsoYV4yLTRiLDIpZ2VuICAgICA9
ICIsS1MyZ2VuKSk7CgogIFAgPSBQb2woWzEsYXBpbml0LGJwaW5pdF0pKk1vZCgxLGJuZi5w
b2wpOwogIFBmYWN0PSBmYWN0b3JuZihQLGJuZi5wb2wpWywxXTsKICBpZiggI1BmYWN0ID4g
MSwKICAgIHBvaW50c3RyaXY9W1swLDAsMV0sWy1wb2xjb2VmZihQZmFjdFsxXSwwKSwwLDFd
LFstcG9sY29lZmYoUGZhY3RbMl0sMCksMCwxXV0KICAsIHBvaW50c3RyaXYgPSBbWzAsMCwx
XV0pOwoKaWYoIERFQlVHTEVWRUxfZWxsID49IDMsIHByaW50KCIgICBTZWFyY2ggZm9yIHRy
aXZpYWwgcG9pbnRzIG9uIHRoZSBjdXJ2ZSIpKTsKICBQICo9ICd4OwppZiggREVCVUdMRVZF
TF9lbGwgPj0gMywgcHJpbnQoIiAgIFleMiA9ICIsUCkpOwogIHBvaW50c3RyaXYgPSBjb25j
YXQoIHBvaW50c3RyaXYsIG5mcmF0cG9pbnQoYm5mLm5mLFAsTElNVFJJViwwKSk7CmlmKCBE
RUJVR0xFVkVMX2VsbCA+PSAxLCBwcmludCgiIHRyaXZpYWwgcG9pbnRzIG9uIEUnKEspID0g
Iik7CiAgcHJpbnQobGlmdChwb2ludHN0cml2KSk7IHByaW50KCkpOwoKICBsaXN0cG9pbnRz
ID0gbmZlbGxjb3VudChibmYubmYsYXBpbml0LGJwaW5pdCxLUzJnZW4scG9pbnRzdHJpdik7
CmlmKCBERUJVR0xFVkVMX2VsbCA+PSAxLCBwcmludCgiIHBvaW50cyBvbiBFJyhLKSA9ICIs
bGlmdChsaXN0cG9pbnRzWzFdKSkpOwogIG5wMSA9IGxpc3Rwb2ludHNbMl1bMV07IG5wMiA9
IGxpc3Rwb2ludHNbMl1bMl07CiAgbGlzdHBvaW50czIgPSB2ZWN0b3IoI2xpc3Rwb2ludHNb
MV0saSwwKTsKICBmb3IoIGkgPSAxLCAjbGlzdHBvaW50c1sxXSwKICAgIGxpc3Rwb2ludHMy
W2ldID0gWzAsMF07CiAgICBhdXgxID0gbGlzdHBvaW50c1sxXVtpXVsxXV4yOwogICAgaWYo
IGF1eDEgIT0gMCwKICAgICAgYXV4MiA9IGxpc3Rwb2ludHNbMV1baV1bMl07CiAgICAgIGxp
c3Rwb2ludHMyW2ldWzFdID0gYXV4Ml4yL2F1eDEvNDsKICAgICAgbGlzdHBvaW50czJbaV1b
Ml0gPSBhdXgyKihicGluaXQtYXV4MSkvYXV4MS84CiAgICAsIGxpc3Rwb2ludHMyW2ldID0g
bGlzdHBvaW50c1sxXVtpXSkpOwppZiggREVCVUdMRVZFTF9lbGwgPj0gMSwgcHJpbnQoIiBw
b2ludHMgb24gRShLKSA9ICIsbGlmdChsaXN0cG9pbnRzMikpOyBwcmludCgpKTsKICBwb2lu
dGdlbiA9IGNvbmNhdChwb2ludGdlbixsaXN0cG9pbnRzMik7CgogIGNlcnRhaW5wID0gKG5w
MSA9PSBucDIpOwppZiggREVCVUdMRVZFTF9lbGwgPj0gMSwKICBpZiggY2VydGFpbnAsCiAg
ICBwcmludCgiW0UnKEspOnBoaShFKEspKV0gICA9ICIsMTw8bnAxKTsKICAgIHByaW50KCIj
U14ocGhpKShFL0spICAgICAgID0gIiwxPDxucDIpOwogICAgcHJpbnQoIiNJSUkoRS9LKVtw
aGldICAgICAgPSAxIik7IHByaW50KCkKICAsCiAgICBwcmludCgiW0UnKEspOnBoaShFKEsp
KV0gID49ICIsMTw8bnAxKTsKICAgIHByaW50KCIjU14ocGhpKShFL0spICAgICAgID0gIiwx
PDxucDIpOwogICAgcHJpbnQoIiNJSUkoRS9LKVtwaGldICAgICA8PSAiLDE8PChucDItbnAx
KSk7IHByaW50KCkpOwoKICBpZiggIWNlcnRhaW4gJiYgKG5wMj5ucDEpLCBwcmludDEoMTw8
KG5wMi1ucDEpLCIgPD0gIikpOwogIHByaW50MSgiI0lJSShFL0spWzJdICAgICAgICIpOwog
IGlmKCBjZXJ0YWluICYmIGNlcnRhaW5wLCBwcmludDEoIiAiKSwgcHJpbnQxKCI8IikpOwog
IHByaW50KCI9ICIsMTw8KG4yK25wMi1uMS1ucDEpKTsKCiAgcHJpbnQoIiNFKEspWzJdICAg
ICAgICAgICAgPSAiLDE8PHRvcnMpOwopOwogIHJhbmcgPSBuMStucDEtMjsKaWYoIERFQlVH
TEVWRUxfZWxsID49IDEsCiAgaWYoIGNlcnRhaW4gJiYgY2VydGFpbnAsCiAgICBwcmludCgi
I0UoSykvMkUoSykgICAgICAgICA9ICIsKDE8PChyYW5nK3RvcnMpKSk7CiAgICBwcmludCgi
cmFuayAgICAgICAgICAgICAgICA9ICIscmFuZyk7IHByaW50KCkKICAsCiAgICBwcmludCgi
I0UoSykvMkUoSykgICAgICAgID49ICIsKDE8PChyYW5nK3RvcnMpKSk7IHByaW50KCk7CiAg
ICBwcmludChyYW5nLCIgPD0gcmFuayAgICAgICAgICA8PSAiLG4yK25wMi0yKTsgcHJpbnQo
KQogICkpOwoKICBzdHJhbmdlID0gKG4yK25wMi1uMS1ucDEpJTI7CiAgaWYoIHN0cmFuZ2Us
CmlmKCBERUJVR0xFVkVMX2VsbCA+PSAxLAogICAgICBwcmludCgiICEhISBJSUkgc2hvdWxk
IGJlIGEgc3F1YXJlICEhISIpOyBwcmludCgiaGVuY2UiKSk7CiAgICBpZiggY2VydGFpbiwK
ICAgICAgbnAxKys7CiAgICAgIGNlcnRhaW5wID0gKG5wMSA9PSBucDIpOwppZiggREVCVUdM
RVZFTF9lbGwgPj0gMSwKICAgICAgICBpZiggY2VydGFpbnAsCiAgICAgICAgICBwcmludCgi
W0UnKEspOnBoaShFKEspKV0gICA9ICIsMTw8bnAxKTsKICAgICAgICAgIHByaW50KCIjU14o
cGhpKShFL0spICAgICAgID0gIiwxPDxucDIpOwogICAgICAgICAgcHJpbnQoIiNJSUkoRS9L
KVtwaGldICAgICAgPSAxIik7IHByaW50KCkKICAgICAgICAsCiAgICAgICAgICBwcmludCgi
W0UnKEspOnBoaShFKEspKV0gID49ICIsMTw8bnAxKTsKICAgICAgICAgIHByaW50KCIjU14o
cGhpKShFL0spICAgICAgID0gIiwxPDxucDIpOwogICAgICAgICAgcHJpbnQoIiNJSUkoRS9L
KVtwaGldICAgICA8PSAiLDE8PChucDItbnAxKSk7IHByaW50KCkpCiAgICAgICkKICAgICwK
ICAgIGlmKCBjZXJ0YWlucCwKICAgICAgbjErKzsKICAgICAgY2VydGFpbiA9ICggbjEgPT0g
bjIpOwppZiggREVCVUdMRVZFTF9lbGwgPj0gMSwKICAgICAgICBpZiggY2VydGFpbiwKICAg
ICAgICAgIHByaW50KCJbRShLKTpwaGknKEUnKEspKV0gICA9ICIsMTw8bjEpOwogICAgICAg
ICAgcHJpbnQoIiNTXihwaGknKShFJy9LKSAgICAgICA9ICIsMTw8bjIpOwogICAgICAgICAg
cHJpbnQoIiNJSUkoRScvSylbcGhpJ10gICAgICA9IDEiKTsgcHJpbnQoKQogICAgICAgICwK
ICAgICAgICAgIHByaW50KCJbRShLKTpwaGknKEUnKEspKV0gID49ICIsMTw8bjEpOwogICAg
ICAgICAgcHJpbnQoIiNTXihwaGknKShFJy9LKSAgICAgID0gIiwxPDxuMik7CiAgICAgICAg
ICBwcmludCgiI0lJSShFJy9LKVtwaGknXSAgICA8PSAiLDE8PChuMi1uMSkpOyBwcmludCgp
KQogICAgICApCiAgICAsIG4xKyspCiAgKTsKCmlmKCBERUJVR0xFVkVMX2VsbCA+PSAxLAog
IGlmKCAhY2VydGFpbiAmJiAobnAyPm5wMSksIHByaW50MSgxPDwobnAyLW5wMSksIiA8PSAi
KSk7CiAgcHJpbnQxKCIjSUlJKEUvSylbMl0gICAgICAgIik7CiAgaWYoIGNlcnRhaW4gJiYg
Y2VydGFpbnAsIHByaW50MSgiICIpLCBwcmludDEoIjwiKSk7CiAgcHJpbnQoIj0gIiwxPDwo
bjIrbnAyLW4xLW5wMSkpOwogIHByaW50KCIjRShLKVsyXSAgICAgICAgICAgID0gIiwxPDx0
b3JzKTsKKTsKICByYW5nID0gbjErbnAxLTI7CmlmKCBERUJVR0xFVkVMX2VsbCA+PSAxLAog
IGlmKCBjZXJ0YWluICYmIGNlcnRhaW5wLAogICAgcHJpbnQoIiNFKEspLzJFKEspICAgICAg
ICAgPSAiLCgxPDwocmFuZyt0b3JzKSkpOyBwcmludCgpOwogICAgcHJpbnQoInJhbmsgICAg
ICAgICAgICAgICAgPSAiLHJhbmcpOyBwcmludCgpCiAgLAogICAgcHJpbnQoIiNFKEspLzJF
KEspICAgICAgICA+PSAiLCgxPDwocmFuZyt0b3JzKSkpOyBwcmludCgpOwogICAgcHJpbnQo
cmFuZywiIDw9IHJhbmsgICAgICAgICAgPD0gIixuMitucDItMik7IHByaW50KCkpCiAgKSk7
CgpcXCBlbmQgb2Ygc3RyYW5nZQoKaWYoIERFQlVHTEVWRUxfZWxsID49IDEsIHByaW50KCIg
cG9pbnRzID0gIixwb2ludGdlbikpOwppZiggREVCVUdMRVZFTF9lbGwgPj0gMywgcHJpbnQo
IiAgIGVuZCBvZiBibmZlbGwyZGVzY2VudF92aWFpc29nIikpOwogIHJldHVybihbcmFuZyxu
MitucDItMit0b3JzLHBvaW50Z2VuXSk7Cn0Ke25mY2hpbmVzZSggbmYsIGIsIGZhY3QpID0K
XFwgQ2hpbmVzZSBSZW1haW5kZXIgVGhlb3JlbQpteShsLGZhY3QyKTsKCmlmKCBERUJVR0xF
VkVMX2VsbCA+PSA0LCBwcmludCgiICAgIHN0YXJ0aW5nIG5mY2hpbmVzZSIpKTsKICBsID0g
I2ZhY3RbLDFdOwogIGZhY3QyID0gdmVjdG9yKGwsaSxpZGVhbGRpdihuZixiLGlkZWFscG93
KG5mLGZhY3RbaSwxXSxmYWN0W2ksMl0pKSk7CiAgZmFjdDIgPSBpZGVhbGFkZHRvb25lKG5m
LGZhY3QyKTsKICBmb3IoIGkgPSAxLCBsLAogICAgZmFjdDJbaV0gPSBuZmJhc2lzdG9hbGco
bmYsZmFjdDJbaV0pKTsKaWYoIERFQlVHTEVWRUxfZWxsID49IDQsIHByaW50KCIgICAgZW5k
IG9mIG5mY2hpbmVzZSIpKTsKICByZXR1cm4oZmFjdDIpOwp9CntibmZxZnNvbHZlMihibmYs
IGFsZWcsIGJsZWcsIGF1dD1bJ3ldKSA9ClxcIFNvbHZlcyBMZWdlbmRyZSBFcXVhdGlvbiB4
XjItYWxlZypZXjI9YmxlZypaXjIKXFwgVXNpbmcgcXVhZHJhdGljIG5vcm0gZXF1YXRpb25z
ClxcIGF1dCBjb250YWlucyB0aGUgR2Fsb2lzIGF1dG9tb3JwaGlzbXMgb2YgYm5mICggYXMg
cG9seW5vbWlhbHMgaW4geSkKXFwgd2l0aCBhdXRbMV0gPSB5LgpteShhdXgsc29sdmVwb2xy
ZWwsYXV4c29sdmUsc29sdmVwb2xhYnMsZXhwcnh5LHJycm5mLGJiYm5mLFNMMCxTTDEsU0ws
c3VuTCxmb25kc3VuTCxub3JtZm9uZHN1bkwsU0ssc3VuSyxmb25kc3VuSyx2ZWNibGVnLG1h
dG5vcm0sbWF0bm9ybW1vZCxleHBzb2x1dGlvbixzb2x1dGlvbixyZXN0ZSxjYXJyZSx2ZXJp
Zix4MCx4MSk7CgppZiggREVCVUdMRVZFTF9lbGwgPj0gMywgcHJpbnQoIiAgIHN0YXJ0aW5n
IGJuZnFmc29sdmUyIikpOwogIHNvbHZlcG9scmVsID0gJ3heMi1hbGVnOwppZiggREVCVUdM
RVZFTF9lbGwgPj0gNCwgcHJpbnQoIiAgICBhbGVnID0gIixhbGVnKSk7CmlmKCBERUJVR0xF
VkVMX2VsbCA+PSA0LCBwcmludCgiICAgIGJsZWcgPSAiLGJsZWcpKTsKCiAgaWYoIG5maXNz
cXVhcmUoYm5mLGFsZWcpLAppZiggREVCVUdMRVZFTF9lbGwgPj0gNCwgcHJpbnQoIiAgICBh
bGVnIGlzIGEgc3F1YXJlICEhIikpOwogICAgYWxlZyA9IG5mc3FydChibmYsYWxlZylbMV07
CiAgICByZXR1cm4oW2FsZWcsMSwwXX4pCiAgKTsKCiAgaWYoICNhdXQgPiAxLAppZiggREVC
VUdMRVZFTF9lbGwgPj0gNCwgcHJpbnQoIiAgICBmYWN0b3JpemF0aW9uIG9mIHRoZSBkaXNj
cmltaW5hbnQgdXNpbmcgdGhlIGF1dG9tb3JwaGlzbXMgb2YgYm5mIikpOwogICAgZm9yKCBp
ID0gMiwgI2F1dCwKICAgICAgYXV4ID0gYWJzKHBvbHJlc3VsdGFudChsaWZ0KGFsZWcpLXN1
YnN0KGxpZnQoYWxlZyksJ3ksYXV0W2ldKSxibmYucG9sKSk7CiAgICAgIGlmKCBhdXgsIGFk
ZHByaW1lcyhmYWN0b3IoYXV4KVssMV0pKSkpOwoKICBhdXhzb2x2ZSA9IHJuZmVxdWF0aW9u
KGJuZixzb2x2ZXBvbHJlbCwxKTsKICBzb2x2ZXBvbGFicyA9IGF1eHNvbHZlWzFdOwogIGV4
cHJ4eSA9IGF1eHNvbHZlWzJdOwogIGlmKCBhdXhzb2x2ZVszXSwKaWYoIERFQlVHTEVWRUxf
ZWxsID49IDUsIHByaW50KCIgICAgIGNhc2Ugd2l0aCBhdXhzb2x2ZVszXSAhPSAwIikpKTsK
aWYoIERFQlVHTEVWRUxfZWxsID49IDQsIHByaW50KCIgICAgYmJibmZpbml0ICIsc29sdmVw
b2xhYnMpKTsKICBycnJuZiA9IHJuZmluaXQoYm5mLHNvbHZlcG9scmVsKTsKICBiYmJuZiA9
IGJuZmluaXQoc29sdmVwb2xhYnMsMSk7CmlmKCBERUJVR0xFVkVMX2VsbCA+PSA0LCBwcmlu
dCgiICAgIGRvbmUiKSk7CiAgU0wwID0gMTsKaWYoIERFQlVHTEVWRUxfZWxsID49IDQsIHBy
aW50KCIgICAgYmJibmYuY2xncCA9ICIsYmJibmYuY2xncCkpOwogIGZvciggaSA9IDEsICNi
YmJuZi5jbGdwWzJdLAogICAgaWYoIGJiYm5mLmNsZ3BbMl1baV0lMiA9PSAwLAogICAgICBT
TDAgPSBpZGVhbG11bChiYmJuZixTTDAsYmJibmYuY2xncFszXVtpXVsxLDFdKSkpOwogIFNM
MSA9IGlkZWFsbXVsKGJiYm5mLFNMMCxybmZlbHR1cChycnJuZixibGVnKSk7CiAgU0wgPSBp
ZGVhbGZhY3RvcihiYmJuZixTTDEpWywxXX47CiAgc3VuTCA9IGJuZnN1bml0KGJiYm5mLFNM
KTsKICBmb25kc3VuTCA9IGNvbmNhdChiYmJuZi5mdXR1LHZlY3Rvcigjc3VuTFsxXSxpLG5m
YmFzaXN0b2FsZyhiYmJuZixzdW5MWzFdW2ldKSkpOwogIG5vcm1mb25kc3VuTCA9IG5vcm0o
cm5mZWx0YWJzdG9yZWwoIHJycm5mLGZvbmRzdW5MKSk7CiAgU0sgPSBpZGVhbGZhY3Rvcihi
bmYsaWRlYWxub3JtKGJiYm5mLFNMMSkpWywxXX47CiAgc3VuSyA9IGJuZnN1bml0KGJuZixT
Syk7CiAgZm9uZHN1bksgPSBjb25jYXQoYm5mLmZ1dHUsdmVjdG9yKCNzdW5LWzFdLGksbmZi
YXNpc3RvYWxnKGJuZixzdW5LWzFdW2ldKSkpOwogIHZlY2JsZWcgPSBibmZpc3N1bml0KGJu
ZixzdW5LLGJsZWcpOwogIG1hdG5vcm0gPSBtYXRyaXgoI2ZvbmRzdW5LLCNub3JtZm9uZHN1
bkwsaSxqLDApOwogIGZvciggaSA9IDEsICNub3JtZm9uZHN1bkwsCiAgICBtYXRub3JtWyxp
XSA9IGxpZnQoYm5maXNzdW5pdCggYm5mLHN1bkssbm9ybWZvbmRzdW5MW2ldICkpKTsKICBt
YXRub3JtbW9kID0gbWF0bm9ybSpNb2QoMSwyKTsKICBleHBzb2x1dGlvbiA9IGxpZnQobWF0
aW52ZXJzZWltYWdlKCBtYXRub3JtbW9kLCB2ZWNibGVnKk1vZCgxLDIpKSk7CiAgaWYoICFs
ZW5ndGgoZXhwc29sdXRpb24pLCBlcnJvcigiYm5mcWZzb2x2ZTIgOiBOTyBTT0xVVElPTiAh
ISAiKSk7CiAgc29sdXRpb24gPSBwcm9kKCBpID0gMSwgI2V4cHNvbHV0aW9uLCBmb25kc3Vu
TFtpXV5leHBzb2x1dGlvbltpXSk7CiAgc29sdXRpb24gPSBybmZlbHRhYnN0b3JlbChycnJu
Zixzb2x1dGlvbik7CiAgcmVzdGUgPSAobGlmdCh2ZWNibGVnKSAtIG1hdG5vcm0qZXhwc29s
dXRpb24pLzI7CiAgY2FycmUgPSBwcm9kKCBpID0gMSwgI3ZlY2JsZWcsIGZvbmRzdW5LW2ld
XnJlc3RlW2ldKTsKICBzb2x1dGlvbiAqPSBjYXJyZTsKICB4MSA9IHBvbGNvZWZmKGxpZnQo
c29sdXRpb24pLDEsJ3gpOwogIHgwID0gcG9sY29lZmYobGlmdChzb2x1dGlvbiksMCwneCk7
CiAgdmVyaWYgPSB4MF4yIC0gYWxlZyp4MV4yLWJsZWc7CmlmKCB2ZXJpZiwgZXJyb3IoImJu
ZnFmc29sdmUyOiBXUk9ORyBQT0lOVCIpKTsKaWYoIERFQlVHTEVWRUxfZWxsID49IDMsIHBy
aW50KCIgICBlbmQgb2YgYm5mcWZzb2x2ZTIiKSk7CiAgcmV0dXJuKFt4MCx4MSwxXX4pOwp9
CntibmZxZnNvbHZlKGJuZiwgYWxlZywgYmxlZywgZmxhZzMsIGF1dD1bJ3ldKSA9ClxcIGNl
dHRlIGZvbmN0aW9uIHJlc291dCBsJ2VxdWF0aW9uIFheMi1hbGVnKlleMj1ibGVnKlpeMgpc
XCBkYW5zIGxlIGNvcnBzIGRlIG5vbWJyZXMgbmYuClxcIGxhIHNvbHV0aW9uIGVzdCBbWCxZ
LFpdLApcXCBbMCwwLDBdIHNpbm9uLgpteShuZixhYSxiYixuYSxuYixtYXhuYixtYXQscmVz
bCx0LHNxLHBvbCx2ZWNyYXQsYWxwaGEseHgseXksYm9ybmUsdGVzdCxzdW4sZmFjdCxzdW5p
LGYsbCxhdXgsYWxwaGEyLG1heG5iaXRlcixpZGJiLHJlbSxuYml0ZXIsbWFzayxvbGRuYixu
ZXduYixib3IsdGVzdGljaSxkZSx4eHAseXlwLHJhcCx2ZXJpZik7CgppZiggREVCVUdMRVZF
TF9lbGwgPj0gNSwgcHJpbnQoIiAgICAgc3RhcnRpbmcgYm5mcWZzb2x2ZSIpKTsKaWYoIERF
QlVHTEVWRUxfZWxsID49IDMsIHByaW50KCIgICAoYSxiKSA9ICgiLGFsZWcsIiwiLGJsZWcs
IikiKSk7CiAgbmYgPSBibmYubmY7CiAgYWxlZyA9IE1vZChsaWZ0KGFsZWcpLG5mLnBvbCk7
IGFhID0gYWxlZzsKICBibGVnID0gTW9kKGxpZnQoYmxlZyksbmYucG9sKTsgYmIgPSBibGVn
OwoKICBpZiggYWEgPT0gMCwKaWYoIERFQlVHTEVWRUxfZWxsID49IDUsIHByaW50KCIgICAg
IGVuZCBvZiBibmZxZnNvbHZlIikpOwogICAgcmV0dXJuKFswLDEsMF1+KSk7CiAgaWYoIGJi
ID09IDAsCmlmKCBERUJVR0xFVkVMX2VsbCA+PSA1LCBwcmludCgiICAgICBlbmQgb2YgYm5m
cWZzb2x2ZSIpKTsKICAgIHJldHVybihbMCwwLDFdfikpOwoKICBuYSA9IGFicyhub3JtKGFh
KSk7IG5iID0gYWJzKG5vcm0oYmIpKTsKICBpZiggbmEgPiBuYiwgbWF4bmIgPSBuYSwgbWF4
bmIgPSBuYik7CiAgbWF4bmIgPDw9IDIwOwogIG1hdCA9IE1vZChtYXRpZCgzKSxuZi5wb2wp
OyBib3JuZSA9IDE7CiAgdGVzdCA9IDA7IG5iaXRlciA9IDA7CgogIHdoaWxlKCAxLAogICAg
aWYoIGZsYWczICYmIGJuZi5jbGdwWzFdPjEsIHJlc2wgPSBibmZxZnNvbHZlMihibmYsYWEs
YmIsYXV0KTsgYnJlYWspOwppZiggREVCVUdMRVZFTF9lbGwgPj0gNCwgcHJpbnQoIiAgICAo
bmEsbmIsYSxiKSA9ICIsbGlmdChbbmEsbmIsYWEsYmIsbm9ybShhYSksbm9ybShiYildKSkp
OwppZiggREVCVUdMRVZFTF9lbGwgPj0gNSwgcHJpbnQoIiAgICAgKioqIixuYiwiKioqICIp
KTsKICAgIGlmKCBuYiA+PSBtYXhuYiwKICAgICAgbWF0ID0gTW9kKG1hdGlkKDMpLG5mLnBv
bCk7CiAgICAgIGFhID0gYWxlZzsgYmIgPSBibGVnOyBuYSA9IGFicyhub3JtKGFsZWcpKTsg
bmIgPSBhYnMobm9ybShibGVnKSkpOwogICAgaWYoIGFhID09IDEsIHJlc2wgPSBbMSwxLDBd
fjsgYnJlYWspOwogICAgaWYoIGJiID09IDEsIHJlc2wgPSBbMSwwLDFdfjsgYnJlYWspOwog
ICAgaWYoIGFhK2JiID09IDEsIHJlc2wgPSBbMSwxLDFdfjsgYnJlYWspOwogICAgaWYoIGFh
K2JiID09IDAsIHJlc2wgPSBbMCwxLDFdfjsgYnJlYWspOwogICAgaWYoIGFhID09IGJiICAm
JiBhYSAhPSAxLAogICAgICB0ID0gYWEqbWF0WywxXTsKICAgICAgbWF0WywxXSA9IG1hdFss
M107IG1hdFssM10gPSB0OwogICAgICBhYSA9IC0xOyBuYSA9IDEpOwogICAgaWYoIGlzc3F1
YXJlKG5hKSwKICAgICAgc3EgPSBuZnNxcnQobmYsYWEpOwogICAgICBpZiggc3EgIT0gW10s
IHJlc2wgPSBbc3FbMV0sMSwwXX47IGJyZWFrKSk7CiAgICBpZiggaXNzcXVhcmUobmIpLAog
ICAgICBzcSA9IG5mc3FydChuZixiYik7CiAgICAgIGlmKCBzcSAhPSBbXSwgcmVzbCA9IFtz
cVsxXSwwLDFdfjsgYnJlYWspKTsKICAgIGlmKCBuYSA+IG5iLAogICAgICB0ID0gYWE7IGFh
ID0gYmI7IGJiID0gdDsKICAgICAgdCA9IG5hOyBuYSA9IG5iOyBuYiA9IHQ7CiAgICAgIHQg
PSBtYXRbLDNdOyBtYXRbLDNdID0gbWF0WywyXTsgbWF0WywyXSA9IHQpOwogICAgaWYoIG5i
ID09IDEsCmlmKCBERUJVR0xFVkVMX2VsbCA+PSA0LCBwcmludCgiICAgIChhLGIpID0gIixs
aWZ0KFthYSxiYl0pKSk7CmlmKCBERUJVR0xFVkVMX2VsbCA+PSA0LCBwcmludCgiICAgIChu
YSxuYikgPSAiLGxpZnQoW25hLG5iXSkpKTsKICAgICAgaWYoIGFsZWcgPT0gYWEgJiYgYmxl
ZyA9PSBiYiwgbWF0ID0gTW9kKG1hdGlkKDMpLG5mLnBvbCkpOwogICAgICBpZiggZmxhZzMs
IHJlc2wgPSBibmZxZnNvbHZlMihibmYsYWEsYmIsYXV0KTsgYnJlYWspOwogICAgICBwb2wg
PSBhYSoneF4yK2JiOwogICAgICB2ZWNyYXQgPSBuZnJhdHBvaW50KG5mLHBvbCxib3JuZSsr
LDEpOwogICAgICBpZiggdmVjcmF0ICE9IDAsIHJlc2w9W3ZlY3JhdFsyXSx2ZWNyYXRbMV0s
dmVjcmF0WzNdXX47IGJyZWFrKTsKCiAgICAgIGFscGhhID0gMDsKaWYoIERFQlVHTEVWRUxf
ZWxsID49IDQsIHByaW50KCIgICAgYm91bmQgPSAiLGJvcm5lKSk7CiAgICAgIHdoaWxlKCBh
bHBoYT09MCwKICAgICAgICB4eCA9IG5mcmFuZGludChuZixib3JuZSk7IHl5ID0gbmZyYW5k
aW50KG5mLGJvcm5lKTsKICAgICAgICBib3JuZSsrOwogICAgICAgIGFscGhhID0geHheMi1h
YSp5eV4yICk7CiAgICAgIGJiICo9IGFscGhhOyBuYiAqPSBhYnMobm9ybShhbHBoYSkpOwog
ICAgICB0ID0geHgqbWF0WywxXSt5eSptYXRbLDJdOwogICAgICBtYXRbLDJdID0geHgqbWF0
WywyXSthYSp5eSptYXRbLDFdOwogICAgICBtYXRbLDFdID0gdDsKICAgICAgbWF0WywzXSAq
PSBhbHBoYQogICAgLAogICAgICB0ZXN0ID0gMTsKaWYoIERFQlVHTEVWRUxfZWxsID49IDQs
IHByaW50KCJvbiBmYWN0b3Jpc2UgYmIgPSAiLGJiKSk7CiAgICAgIHN1biA9IGJuZnN1bml0
KGJuZixpZGVhbGZhY3RvcihibmYsYmIpWywxXX4pOwogICAgICBmYWN0ID0gbGlmdChibmZp
c3N1bml0KGJuZixzdW4sYmIpKTsKaWYoIERFQlVHTEVWRUxfZWxsID49IDQsIHByaW50KCJm
YWN0ID0gIixmYWN0KSk7CiAgICAgIHN1bmkgPSBjb25jYXQoYm5mLmZ1dHUsdmVjdG9yKCNz
dW5bMV0saSxuZmJhc2lzdG9hbGcoYm5mLHN1blsxXVtpXSkpKTsKICAgICAgZm9yKCBpID0g
MSwgI3N1bmksCiAgICAgICAgaWYoIChmID0gZmFjdFtpXT4+MSksCiAgICAgICAgICB0ZXN0
ID0wOwogICAgICAgICAgZm9yKCBrID0gMSwgMywgbWF0W2ssM10gLz0gc3VuaVtpXV5mKTsK
ICAgICAgICAgIG5iIC89IGFicyhub3JtKHN1bmlbaV0pKV4oMipmKTsKICAgICAgICAgIGJi
IC89IHN1bmlbaV1eKDIqZikpKTsKaWYoIERFQlVHTEVWRUxfZWxsID49IDQsIHByaW50KCIg
ICAgZmFjdG9yaXphdGlvbiBvZiBiYiA9ICIsYmIpKTsKICAgICAgZmFjdCA9IGlkZWFsZmFj
dG9yKG5mLGJiKTsKaWYoIERFQlVHTEVWRUxfZWxsID49IDQsIHByaW50KCIgICAgZmFjdCA9
ICIsZmFjdCkpOwogICAgICBsID0gI2ZhY3RbLDFdOwoKICAgICAgaWYoIHRlc3QsCiAgICAg
ICAgYXV4ID0gMTsKICAgICAgICBmb3IoIGkgPSAxLCBsLAogICAgaWYoIChmID0gZmFjdFtp
LDJdPj4xKSAmJgogICAgICAgICAhKGZhY3RbaSwxXVsxXSUyKSAmJiAhbmZpc3NxdWFyZW1v
ZHBvZGQobmYsYWEsZmFjdFtpLDFdKSwKICAgICAgYXV4PWlkZWFsbXVsKG5mLGF1eCxpZGVh
bHBvdyhuZixmYWN0W2ksMV0sZikpKSk7CiAgICAgICAgaWYoIGF1eCAhPSAxLAogICAgdGVz
dCA9IDA7CiAgICBhbHBoYSA9IG5mYmFzaXN0b2FsZyhuZixpZGVhbGFwcHIobmYsaWRlYWxp
bnYobmYsYXV4KSkpOwogICAgICAgICAgYWxwaGEyID0gYWxwaGFeMjsKICAgICAgICAgIGJi
ICo9IGFscGhhMjsgbmIgKj0gYWJzKG5vcm0oYWxwaGEyKSk7CiAgICAgICAgICBtYXRbLDNd
ICo9IGFscGhhKSk7CiAgICAgIGlmKCB0ZXN0LAogIG1heG5iaXRlciA9IDE8PGw7CiAgc3Eg
PSB2ZWN0b3IobCxpLG5mc3FydG1vZHBxKG5mLGFhLGZhY3RbaSwxXSxmYWN0W2ksMl0pKTsK
ICAgICAgICBsID0gI3NxOwppZiggREVCVUdMRVZFTF9lbGwgPj0gNCwKICBwcmludCgiICAg
IHNxID0gIixzcSk7CiAgcHJpbnQoIiAgICBmYWN0ID0gIixmYWN0KTsKICBwcmludCgiICAg
IGwgPSAiLGwpKTsKICAgICAgICBpZiggbCA+IDEsCiAgICBpZGJiID0gaWRlYWxobmYobmYs
YmIpOwogICAgcmVtID0gbmZjaGluZXNlKG5mLGlkYmIsZmFjdCkpOwogICAgICAgIHRlc3Qg
PSAxOyBuYml0ZXIgPSAxOwogICAgICAgIHdoaWxlKCB0ZXN0ICYmIG5iaXRlciA8PSBtYXhu
Yml0ZXIsCiAgICBpZiggbCA+IDEsCiAgICAgIG1hc2sgPSBuYml0ZXI7IHh4ID0gMDsKICAg
ICAgZm9yKCBpID0gMSwgbCwKICAgICAgICBpZiggbWFzayUyLCB4eCArPSByZW1baV0qc3Fb
aV0sIHh4IC09IHJlbVtpXSpzcVtpXSApOyBtYXNrID4+PSAxKQogICAgICAgICAgLAogICAg
ICAgICAgICB0ZXN0ID0gMDsgeHggPSBzcVsxXSk7CiAgICAgICAgICB4eCA9IG15bmZlbHRt
b2QobmYseHgsYmIpOwogICAgICAgICAgYWxwaGEgPSB4eF4yLWFhOwogICAgICAgICAgaWYo
IGFscGhhID09IDAsIHJlc2w9W3h4LDEsMF1+OyBicmVhaygyKSk7CiAgICAgICAgICB0ID0g
YWxwaGEvYmI7CmlmKCBERUJVR0xFVkVMX2VsbCA+PSA0LCBwcmludCgiICAgIFthbHBoYSxi
Yl0gPSAiLFthbHBoYSxiYl0pKTsKICAgICAgICAgIG9sZG5iID0gbmI7CiAgICAgICAgICBu
ZXduYiA9IGFicyhub3JtKHQpKTsKaWYoIERFQlVHTEVWRUxfZWxsID49IDQsIHByaW50KCIg
ICAgW29sZG5iLG5ld25iLG9sZG5iL25ld25iXSA9ICIsW29sZG5iLG5ld25iLG9sZG5iL25l
d25iKzAuXSkpOwogICAgICAgICAgd2hpbGUoIG5iID4gbmV3bmIsCiAgICAgICAgICAgIG1h
dFssM10gKj0gdDsKICAgICAgICAgICAgYmIgPSB0OyBuYiA9IG5ld25iOwogICAgICAgICAg
ICB0ID0geHgqbWF0WywxXSttYXRbLDJdOwogICAgICAgICAgICBtYXRbLDJdID0gYWEqbWF0
WywxXSArIHh4Km1hdFssMl07CiAgICAgICAgICAgIG1hdFssMV0gPSB0OwogICAgICAgICAg
ICB4eCA9IG15bmZlbHRtb2QobmYsLXh4LGJiKTsKICAgICAgICAgICAgYWxwaGEgPSB4eF4y
LWFhOwogICAgICAgICAgICB0ID0gYWxwaGEvYmI7CiAgICAgICAgICAgIG5ld25iID0gYWJz
KG5vcm0odCkpOwogICAgICAgICAgKTsKICAgICAgICBpZiggbmIgPT0gb2xkbmIsIG5iaXRl
cisrLCB0ZXN0ID0gMCk7CiAgICAgICAgKTsKICAgICAgICBpZiggbmIgPT0gb2xkbmIsCiAg
ICAgICAgICBpZiggZmxhZzMsIHJlc2wgPSBibmZxZnNvbHZlMihibmYsYWEsYmIsYXV0KTsg
YnJlYWspOwogICAgICAgICAgcG9sID0gYWEqJ3heMitiYjsKICAgICAgICAgIHZlY3JhdCA9
bmZyYXRwb2ludChuZixwb2wsYm9ybmUrKzw8MSwxKTsKICAgICAgICAgIGlmKCB2ZWNyYXQg
IT0gMCwgcmVzbCA9IFt2ZWNyYXRbMl0sdmVjcmF0WzFdLHZlY3JhdFszXV1+OyBicmVhayk7
CgogICAgICAgICAgYm9yID0gMTAwMDsgeXkgPSAxOyB0ZXN0aWNpID0gMTsKICAgICAgICAg
IGZvciggaSA9IDEsIDEwMDAwLCBkZSA9IG5mYmFzaXN0b2FsZyhuZix2ZWN0b3J2KHBvbGRl
Z3JlZShuZi5wb2wpLGoscmFuZG9tKGJvcikpKTsKICAgICAgICAgICAgaWYoIGlkZWFsYWRk
KGJuZixkZSxiYikgIT0gbWF0aWQocG9sZGVncmVlKGJuZi5wb2wpKSxuZXh0KTsKICAgICAg
ICAgICAgeHhwID0gbXluZmVsdG1vZChibmYsZGUqeHgsYmIpOyB5eXAgPSBteW5mZWx0bW9k
KGJuZixkZSp5eSxiYik7CiAgICAgICAgICAgIHJhcCA9IChub3JtKHh4cF4yLWFhKnl5cF4y
KS9uYl4yKzAuKTsKICAgICAgICAgICAgaWYoIGFicyhyYXApIDwgMSwKaWYoIERFQlVHTEVW
RUxfZWxsID49IDQsIHByaW50KCIgICAgKioqKioqKioqKiBcbiBcbiBNSVJBQ0xFICIscmFw
LCIgXG4gXG4gKioqIikpOwogICAgICAgICAgICAgIHQgPSAoeHhwXjItYWEqeXlwXjIpL2Ji
OwogICAgICAgICAgICAgIG1hdFssM10gKj0gdDsKICAgICAgICAgICAgICBiYiA9IHQ7IG5i
ID0gYWJzKG5vcm0oYmIpKTsKaWYoIERFQlVHTEVWRUxfZWxsID49IDQsIHByaW50KCIgICAg
bmV3bmIgPSAiLG5iKSk7CiAgICAgICAgICAgICAgdCA9IHh4cCptYXRbLDFdK3l5cCptYXRb
LDJdOwogICAgICAgICAgICAgIG1hdFssMl0gPSBhYSp5eXAqbWF0WywxXSArIHh4cCptYXRb
LDJdOwogICAgICAgICAgICAgIG1hdFssMV0gPSB0OwogICAgICAgICAgICAgIHh4ID0geHhw
OyB5eSA9IC15eXA7IHRlc3RpY2kgPSAwOwogICAgICAgICAgICAgICkpOwoKICAgICAgICAg
IGlmKCB0ZXN0aWNpLAogICAgICAgICAgICBhbHBoYSA9IDA7CiAgICAgICAgICAgIHdoaWxl
KCBhbHBoYSA9PSAwLAogICAgICAgICAgICAgIHh4ID0gbmZyYW5kaW50KG5mLDQqYm9ybmUp
OyB5eSA9IG5mcmFuZGludChuZiw0KmJvcm5lKTsKICAgICAgICAgICAgICBib3JuZSsrOwog
ICAgICAgICAgICAgIGFscGhhID0geHheMi1hYSp5eV4yKTsKICAgICAgICAgICAgYmIgKj0g
YWxwaGE7IG5iICo9IGFicyhub3JtKGFscGhhKSk7CiAgICAgICAgICAgIHQgPSB4eCptYXRb
LDFdICsgeXkqbWF0WywyXTsKICAgICAgICAgICAgbWF0WywyXSA9IHh4Km1hdFssMl0rYWEq
eXkqbWF0WywxXTsKICAgICAgICAgICAgbWF0WywxXSA9IHQ7CiAgICAgICAgICAgIG1hdFss
M10gKj0gYWxwaGE7KSkpKSk7CiAgcmVzbCA9IGxpZnQobWF0KnJlc2wpOwppZiggREVCVUdM
RVZFTF9lbGwgPj0gNSwgcHJpbnQoIiAgICAgcmVzbDEgPSAiLHJlc2wpKTsKaWYoIERFQlVH
TEVWRUxfZWxsID49IDUsIHByaW50KCIgICAgIGNvbnRlbnQgPSAiLGNvbnRlbnQocmVzbCkp
KTsKICByZXNsIC89IGNvbnRlbnQocmVzbCk7CiAgcmVzbCA9IE1vZChsaWZ0KHJlc2wpLG5m
LnBvbCk7CmlmKCBERUJVR0xFVkVMX2VsbCA+PTUsIHByaW50KCIgICAgIHJlc2wzID0gIixy
ZXNsKSk7CiAgZmFjdCA9IGlkZWFsYWRkKG5mLGlkZWFsYWRkKG5mLHJlc2xbMV0scmVzbFsy
XSkscmVzbFszXSk7CiAgZmFjdCA9IGJuZmlzcHJpbmNpcGFsKGJuZixmYWN0LDMpOwogIHJl
c2wgKj0xL25mYmFzaXN0b2FsZyhuZixmYWN0WzJdKTsKaWYoIERFQlVHTEVWRUxfZWxsID49
IDUsIHByaW50KCIgICAgIHJlc2w0ID0gIixyZXNsKSk7CmlmKCBERUJVR0xFVkVMX2VsbCA+
PSAzLCBwcmludCgiICAgcmVzbCA9ICIscmVzbCkpOwogIHZlcmlmID0gKHJlc2xbMV1eMi1h
bGVnKnJlc2xbMl1eMi1ibGVnKnJlc2xbM11eMiA9PSAwKTsKICBpZiggIXZlcmlmLCBlcnJv
cigiYm5mcWZzb2x2ZTogV1JPTkcgUE9JTlQiKSk7CmlmKCBERUJVR0xFVkVMX2VsbCA+PSAz
LCBwcmludCgiICAgZW5kIG9mIGJuZnFmc29sdmUiKSk7CiAgcmV0dXJuKHJlc2wpOwp9Cnti
bmZyZWRxdWFydGlxdWUoIGJuZiwgcG9sLCByLGEsYikgPQpcXCByZWR1Y3Rpb24gZCd1bmUg
cXVhcnRpcXVlIGlzc3VlIGRlIGxhIDItZGVzY2VudGUKXFwgZW4gY29ubmFpc3NhbnQgbGVz
IHZhbGV1cnMgZGUgciwgYSBldCBiLgpteShnY2MscHJpbmMscnAscG9sMik7CgppZiggREVC
VUdMRVZFTF9lbGwgPj0gNCwgcHJpbnQoIiAgICBzdGFydGluZyBibmZyZWRxdWFydGlxdWUi
KSk7CmlmKCBERUJVR0xFVkVMX2VsbCA+PSA0LCBwcmludCgiICAgICIsW3IsYSxiXSkpOwpp
ZiggREVCVUdMRVZFTF9lbGwgPj0gMywgcHJpbnQoIiAgIHJlZHVjdGlvbiBvZiB0aGUgcXVh
cnRpYyAiLHBvbCkpOwoKICBpZiggYSA9PSAwLAogICAgcnAgPSAwCiAgLAogICAgZ2NjID0g
aWRlYWxhZGQoYm5mLGIsYSk7CiAgICBpZiggZ2NjID09IDEsCiAgICAgIHJwID0gbmZiYXNp
c3RvYWxnKGJuZixpZGVhbGFkZHRvb25lKGJuZi5uZixhLGIpWzFdKS9hOwogICAgICBycCA9
IG15bmZlbHRtb2QoYm5mLHIqcnAsYikKICAgICwKICAgICAgcHJpbmMgPSBibmZpc3ByaW5j
aXBhbChibmYsZ2NjLDMpOwogICAgICBpZiggcHJpbmNbMV0gPT0gMCwgZ2NjID0gbmZiYXNp
c3RvYWxnKGJuZixwcmluY1syXSkKICAgICAgLAppZiggREVCVUdMRVZFTF9lbGwgPj0gMywg
cHJpbnQoIiAgIHF1YXJ0aWMgbm90IHJlZHVjZWQiKSk7CmlmKCBERUJVR0xFVkVMX2VsbCA+
PSA0LCBwcmludCgiICAgIGVuZCBvZiBibmZyZWRxdWFydGlxdWUiKSk7CiAgICAgICAgcmV0
dXJuKFtwb2wsMCwxXSkpOwogICAgICBycCA9IG5mYmFzaXN0b2FsZyhibmYsaWRlYWxhZGR0
b29uZShibmYubmYsYS9nY2MsYi9nY2MpWzFdKS8oYS9nY2MpOwogICAgICBycCA9IG15bmZl
bHRtb2QoYm5mLHIqcnAsYikvZ2NjOwogICAgICBiIC89IGdjYzsKICAgICkKICApOwogIHBv
bDIgPSBzdWJzdChwb2wvYiwneCxycCtiKid4KS9iXjM7CmlmKCBERUJVR0xFVkVMX2VsbCA+
PSAzLCBwcmludCgiIHF1YXJ0aWMgcmVkdWNlZDogIixwb2wyKSk7CmlmKCBERUJVR0xFVkVM
X2VsbCA+PSA0LCBwcmludCgiICAgIGVuZCBvZiBibmZyZWRxdWFydGlxdWUiKSk7CiAgcmV0
dXJuKFtwb2wyLHJwLGJdKTsKfQp7Ym5mZWxsMmRlc2NlbnRfZ2VuKCBibmYsIGVsbCwgZXh0
LCBoZWxwPVtdLCBiaWdmbGFnPTEsIGZsYWczPTEsIGF1dD1bJ3ldKSA9ClxcIGJuZiBhIHVu
IHBvbHlub21lIGVuIHkuClxcIHNpIGVsbD0geV4yPVAoeCksIGFsb3JzIGV4dCBlc3QKXFwg
ZXh0WzFdIGVzdCB1bmUgZXF1YXRpb24gcmVsYXRpdmUgZHUgY29ycHMgKD1QKHgpKSwKXFwg
ZXh0WzJdIGVzdCBsZSByZXN1bHRhdCBybmZlcXVhdGlvbihibmYsUCwxKTsKXFwgZXh0WzNd
IGVzdCBsZSBibmZpbml0IChzdXIgUSkgZGUgbCdleHRlbnNpb24uClxcIGRhbnMgbGEgc3Vp
dGUgZXh0IGVzdCBub3RlIEwgPSBLKHRoZXRhKS4KXFwgaGVscCBlc3QgdW5lIGxpc3RlIGRl
IHBvaW50cyBkZWphIGNvbm51cyBzdXIgZWxsLgpcXCBzaSBiaWdmbGFnICE9MCBhbG9ycyBv
biBhcHBsaXF1ZSBibmZyZWRxdWFydGlxdWUuClxcIHNpIGZsYWczID09MSBhbG9ycyBvbiB1
dGlsaXNlIGJuZnFmc29sdmUyIChlcXVhdGlvbiBhdXggbm9ybWVzKSBwb3VyIHJlc291ZHJl
IExlZ2VuZHJlClxcIGF1dCBlc3QgdW5lIGxpc3RlIGQnYXV0b21vcnBoaXNtZXMgY29ubnVz
IGRlIGJuZgpcXCAoY2EgcGV1dCBhaWRlciBhIGZhY3RvcmlzZXIgY2VydGFpbnMgZGlzY3Jp
bWluaWFudHMpLgpcXCBlbGwgZXN0IGRlIGxhIGZvcm1lIHleMj14XjMrQSp4XjIrQip4K0MK
XFwgaWUgZWxsPVswLEEsMCxCLENdLCBhdmVjIEEsQiBldCBDIGVudGllcnMuClxcCm15KG5m
LHVubmYsZWxsbmYsQSxCLEMsUyxwbGlzdCxMcm5mLFNMcHJvZCxMUzIsTFMyZ2VuLHBvbHJl
bCxhbHBoYSx0dGhldGEsS1MyZ2VuLG5vcm1MUzIsbm9ybWNvb3JkLExTMmNvb3JkdGlsZGEs
TFMydGlsZGEsYXV4LGxpc3RnZW4sbGlzdHBvaW50c3RyaXYsbGlzdHBvaW50cyxtMSxtMixs
b2MsbGFzdGxvYyxtYXNrd2hpbGUsaXdoaWxlLHpjLGlhdXgsbGlmdHpjLGlzcG9pbnR0cml2
LHBvaW50LGMsYixhLGZvdW5kLGFscGhhYyxyLGRlbmMsZGVuYSxjcCxhbHBoYWNwLGJldGEs
bWF0dHIsdmVjLHoxLGNvbnQsZCxlLHBvbG9yaWcscG9sLHJlZHEsdHJhbnNsLG11bHRpcCxV
VlcscG9pbnR4eCxwb2ludDIscmFuZyxsaXN0RUxTLGxpc3Rub3RFTFMpOwoKaWYoIERFQlVH
TEVWRUxfZWxsID49IDQsIHByaW50KCIgICAgc3RhcnRpbmcgYm5mZWxsMmRlc2NlbnRfZ2Vu
IikpOwoKICBuZiA9IGJuZi5uZjsKICB1bm5mID0gTW9kKDEsbmYucG9sKTsKICBlbGxuZiA9
IGVsbCp1bm5mOwogIGlmKCAjZWxsbmYgPD0gNSwgZWxsbmYgPSBlbGxpbml0KGVsbG5mLDEp
KTsKCiAgQSA9IGVsbG5mLmEyOyBpZiggREVCVUdMRVZFTF9lbGwgPj0gMiwgcHJpbnQoIiAg
QSA9ICIsQSkpOwogIEIgPSBlbGxuZi5hNDsgaWYoIERFQlVHTEVWRUxfZWxsID49IDIsIHBy
aW50KCIgIEIgPSAiLEIpKTsKICBDID0gZWxsbmYuYTY7IGlmKCBERUJVR0xFVkVMX2VsbCA+
PSAyLCBwcmludCgiICBDID0gIixDKSk7CgpcXCBcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc
XFxcXFxcXFxcXFxcXApcXCAgICAgIENvbnN0cnVjdGlvbiBvZiBMKFMsMikgICAgICAgICBc
XApcXCBcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXAoKaWYoIERFQlVH
TEVWRUxfZWxsID49IDIsIHByaW50KCk7IHByaW50KCIgIENvbXB1dGluZyBMKFMsMikiKSk7
CgogIHBvbHJlbCA9IGV4dFsxXTsKICBhbHBoYSA9IE1vZChNb2QoJ3ksbmYucG9sKSxwb2xy
ZWwpOyBcXCBhbHBoYSBlc3QgbCdlbGVtZW50IHByaW1pdGlmIGRlIEsKICB0dGhldGEgPSBN
b2QoJ3gscG9scmVsKTsgICAgICAgICAgICBcXCB0dGhldGEgZXN0IGxhIHJhY2luZSBkZSBQ
KHgpCgogIFMgPSA2KmxpZnQoZWxsbmYuZGlzYyk7CiAgcGxpc3QgPSBpZGVhbGZhY3Rvcihu
ZixTKVssMV07CiAgTHJuZiA9IGV4dFszXTsKICBTTHByb2QgPSBzdWJzdChsaWZ0KHBvbHJl
bCcpLCd5LGxpZnQoZXh0WzJdWzJdKSk7CmlmKCBERUJVR0xFVkVMX2VsbCA+PSAzLCBwcmlu
dCgiICAgIixleHRbMl0pKTsKCiAgd2hpbGUoIDEsClxcIENvbnN0cnVjdGlvbiBkZXMgUy11
bml0ZXMKICAgIExTMmdlbiA9IGJuZnN1bml0KExybmYsIGlkZWFsZmFjdG9yKExybmYsU0xw
cm9kKVssMV1+KTsKaWYoIERFQlVHTEVWRUxfZWxsID49IDQsIHByaW50KCIgICAgTFMyZ2Vu
ID0gIixMUzJnZW4pKTsKXFwgc2kgbGUgZ3JvdXBlIGRlIGNsYXNzZXMgZXN0IGltcGFpciwg
b24gYSBmaW5pLgogICAgaWYoIExTMmdlbls1XVsxXSUyLCBicmVhayk7CmlmKCBERUJVR0xF
VkVMX2VsbCA+PSAzLCBwcmludCgiICAgMi1jbGFzcyBncm91cCAiLExTMmdlbls1XVszXVsx
XVsxLDFdKSk7CiAgICBTICo9IExTMmdlbls1XVszXVsxXVsxLDFdOwogICAgU0xwcm9kID0g
aWRlYWxtdWwoTHJuZixTTHByb2QsKExTMmdlbls1XVszXVsxXSkpOwogICk7CgogIEtTMmdl
biA9IGJuZnN1bml0KGJuZixpZGVhbGZhY3RvcihuZixTKVssMV1+KTsKCmlmKCBERUJVR0xF
VkVMX2VsbCA+PSAzLCBwcmludCgiICAgI0tTMmdlbiA9ICIsI0tTMmdlblsxXSkpOwppZigg
REVCVUdMRVZFTF9lbGwgPj0gMywgcHJpbnQoIiAgICBLUzJnZW4gPSAiLEtTMmdlblsxXSkp
OwoKICBMUzJnZW4gPSBMUzJnZW5bMV07CiAgTFMyID0gdmVjdG9yKCNMUzJnZW4saSxsaWZ0
KG5mYmFzaXN0b2FsZyhMcm5mLExTMmdlbltpXSkpKTsKICBMUzIgPSBjb25jYXQobGlmdChM
cm5mLmZ1dHUpLExTMik7CgogIExTMiA9IHN1YnN0KExTMiwneCx0dGhldGEpOwogIExTMiA9
IExTMipNb2QoMSxwb2xyZWwpOwppZiggREVCVUdMRVZFTF9lbGwgPj0gMywgcHJpbnQoIiAg
ICNMUzIgPSAiLCNMUzIpKTsKaWYoIERFQlVHTEVWRUxfZWxsID49IDMsIHByaW50KCIgICAg
TFMyID0gIixMUzIpKTsKCmlmKCBERUJVR0xFVkVMX2VsbCA+PSAyLCBwcmludCgiICBMKFMs
MikgPSAiLExTMikpOwoKXFwgXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc
XApcXCAgIENvbnN0cnVjdGlvbiBvZiB0aGUgU2VsbWVyIGdyb3VwIFxcClxcIFxcXFxcXFxc
XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFwKCmlmKCBERUJVR0xFVkVMX2VsbCA+PSAy
LCBwcmludCgpOyBwcmludCgiICBDb21wdXRpbmcgdGhlIFNlbG1lciBncm91cCIpKTsKClxc
IGRhbnMgTFMyZ2VuLCBvbiBuZSBnYXJkZSBxdWUgY2V1eCBkb250IGxhIG5vcm1lIGVzdCB1
biBjYXJyZS4KCiAgbm9ybUxTMiA9IG5vcm0oTFMyKTsKaWYoIERFQlVHTEVWRUxfZWxsID49
IDQsIHByaW50KCIgICAgbm9ybUxTMiA9ICIsbm9ybUxTMikpOwoKXFwgbWF0cmljZSBkZSBs
J2FwcGxpY2F0aW9uIG5vcm1lCgogIG5vcm1jb29yZCA9IG1hdHJpeCgjS1MyZ2VuWzFdKyNi
bmZbOF1bNV0rMSwjbm9ybUxTMixpLGosMCk7CiAgZm9yKCBpID0gMSwgI25vcm1MUzIsCiAg
ICBub3JtY29vcmRbLGldID0gYm5maXNzdW5pdChibmYsS1MyZ2VuLG5vcm1MUzJbaV0pKTsK
aWYoIERFQlVHTEVWRUxfZWxsID49IDQsIHByaW50KCIgICAgbm9ybWNvb3JkID0gIixub3Jt
Y29vcmQpKTsKClxcIGNvbnN0cnVjdGlvbiBkdSBub3lhdSBkZSBsYSBub3JtZQoKICBMUzJj
b29yZHRpbGRhID0gbGlmdChtYXRrZXIobm9ybWNvb3JkKk1vZCgxLDIpKSk7CmlmKCBERUJV
R0xFVkVMX2VsbCA+PSA0LCBwcmludCgiICAgIExTMmNvb3JkdGlsZGEgPSAiLExTMmNvb3Jk
dGlsZGEpKTsKICBMUzJ0aWxkYSA9IHZlY3RvcigjTFMyY29vcmR0aWxkYVsxLF0saSwwKTsK
ICBmb3IoIGkgPSAxLCAjTFMyY29vcmR0aWxkYVsxLF0sCiAgICBhdXggPSAxOwogICAgZm9y
KCBqID0gMSwgI0xTMmNvb3JkdGlsZGFbLGldLAogICAgICBpZiggc2lnbihMUzJjb29yZHRp
bGRhW2osaV0pLAogICAgICAgIGF1eCAqPSBMUzJbal0pKTsKICAgIExTMnRpbGRhW2ldID0g
YXV4OwogICk7CgppZiggREVCVUdMRVZFTF9lbGwgPj0gMywgcHJpbnQoIiAgIExTMnRpbGRh
ID0gIixMUzJ0aWxkYSkpOwppZiggREVCVUdMRVZFTF9lbGwgPj0gMywgcHJpbnQoIiAgIG5v
cm0oTFMydGlsZGEpID0gIixub3JtKExTMnRpbGRhKSkpOwoKXFwgRmluIGRlIGxhIGNvbnN0
cnVjdGlvbiBkZSBMKFMsMikKCiAgbGlzdGdlbiA9IExTMnRpbGRhOwppZiggREVCVUdMRVZF
TF9lbGwgPj0gMiwgcHJpbnQoIiAgI0xTMmdlbiA9ICIsI2xpc3RnZW4pKTsKaWYoIERFQlVH
TEVWRUxfZWxsID49IDIsIHByaW50KCIgICBMUzJnZW4gPSAiLGxpc3RnZW4pKTsKCmlmKCBE
RUJVR0xFVkVMX2VsbCA+PSAzLCBwcmludCgiICAgKEEsQixDKSA9ICIsW0EsQixDXSkpOwoK
XFwgXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFwKXFwgICBSZWNoZXJjaGUg
ZGUgcG9pbnRzIHRyaXZpYXV4ICAgXFwKXFwgXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc
XFxcXFxcXFwKCmlmKCBERUJVR0xFVkVMX2VsbCA+PSAyLCBwcmludCgiICBTZWFyY2ggZm9y
IHRyaXZpYWwgcG9pbnRzIG9uIHRoZSBjdXJ2ZSIpKTsKICBsaXN0cG9pbnRzdHJpdiA9IG5m
cmF0cG9pbnQobmYsJ3heMytBKid4XjIrQioneCtDLExJTVRSSVYsMCk7CiAgbGlzdHBvaW50
c3RyaXYgPSBjb25jYXQoaGVscCxsaXN0cG9pbnRzdHJpdik7CmlmKCBERUJVR0xFVkVMX2Vs
bCA+PSAxLCBwcmludCgiIFRyaXZpYWwgcG9pbnRzIG9uIHRoZSBjdXJ2ZSA9ICIsbGlzdHBv
aW50c3RyaXYpKTsKClxcIFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc
ClxcICAgICAgICAgIHBhcmNvdXJzIGRlIEwoUywyKSAgICAgICAgIFxcClxcIFxcXFxcXFxc
XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcCgogIGxpc3Rwb2ludHMgPSBbXTsKICBt
MSA9IDA7IG0yID0gMDsgbGFzdGxvYyA9IC0xOwogIG1hc2t3aGlsZSA9IDE8PCNsaXN0Z2Vu
OwogIGxpc3RFTFMgPSBbMF07IGxpc3Rub3RFTFMgPSBbXTsKICBpd2hpbGUgPSAxOwoKICB3
aGlsZSggaXdoaWxlIDwgbWFza3doaWxlLAppZiggREVCVUdMRVZFTF9lbGwgPj0gNCwKICBw
cmludCgiICAgIGl3aGlsZSA9ICIsaXdoaWxlKTsKICBwcmludCgiICAgIGxpc3RnZW4gPSAi
LGxpc3RnZW4pCik7CgpcXCB1dGlsaXNlIGxhIHN0cnVjdHVyZSBkZSBncm91cGUgcG91ciBk
ZXRlY3RlciB1bmUgZXZlbnR1ZWxsZSBzb2x1YmlsaXRlIGxvY2FsZS4KICAgIGxvYyA9IDA7
CiAgICBmb3IoIGkgPSAxLCAjbGlzdEVMUywKICAgICAgZm9yKCBqID0gMSwgI2xpc3Rub3RF
TFMsCiAgICAgICAgaWYoIGJpdHhvcihsaXN0RUxTW2ldLGxpc3Rub3RFTFNbal0pID09IGl3
aGlsZSwKaWYoIERFQlVHTEVWRUxfZWxsID49IDMsIHByaW50KCIgICBOb3QgRUxTIGZyb20g
Z3JvdXAgc3RydWN0dXJlIikpOwogICAgICAgICAgbGlzdG5vdEVMUyA9IGNvbmNhdChsaXN0
bm90RUxTLFtpd2hpbGVdKTsKICAgICAgICAgIGl3aGlsZSsrOwogICAgICAgICAgbmV4dCgz
KQogICAgKSkpOwoKICAgIGZvciggaSA9IDEsICNsaXN0RUxTLAogICAgICBmb3IoIGogPSBp
KzEsICNsaXN0RUxTLAogICAgICAgIGlmKCBiaXR4b3IobGlzdEVMU1tpXSxsaXN0RUxTW2pd
KSA9PSBpd2hpbGUsCmlmKCBERUJVR0xFVkVMX2VsbCA+PSAzLCBwcmludCgiICAgRUxTIGZy
b20gZ3JvdXAgc3RydWN0dXJlIikpOwogICAgICAgICAgbGlzdEVMUyA9IGNvbmNhdChsaXN0
RUxTLFtpd2hpbGVdKTsKICAgICAgICAgIGxvYyA9IDE7CiAgICAgICAgICBicmVhaygyKQog
ICAgKSkpOwoKICAgIGlhdXggPSB2ZWN0b3J2KCNsaXN0Z2VuLGksYml0dGVzdChpd2hpbGUs
aS0xKSk7CiAgICBpYXV4ID0gKExTMmNvb3JkdGlsZGEqaWF1eCklMjsKICAgIHpjID0gdW5u
Zipwcm9kKCBpID0gMSwgI0xTMiwgTFMyW2ldXmlhdXhbaV0pOwoKaWYoIERFQlVHTEVWRUxf
ZWxsID49IDIsIHByaW50KCIgIHpjID0gIix6YykpOwogICAgbGlmdHpjID0gbGlmdCh6Yyk7
CgpcXCBFc3QtY2UgdW4gcG9pbnQgdHJpdmlhbCA/CiAgICBmb3VuZCA9IDA7CiAgICBpc3Bv
aW50dHJpdiA9IDA7CiAgICBmb3IoIGkgPSAxLCAjbGlzdHBvaW50c3RyaXYsCiAgICAgIHBv
aW50ID0gbGlzdHBvaW50c3RyaXZbaV07CiAgICAgIGlmKCAjcG9pbnQgPT0gMiB8fCBwb2lu
dFszXSAhPSAwLAogICAgICAgIGlmKCBuZmlzc3F1YXJlKExybmYubmYsc3Vic3QoKGxpZnQo
cG9pbnRbMV0pLSd4KSpsaWZ0KGxpZnR6YyksJ3ksbGlmdChleHRbMl1bMl0pKSksCmlmKCBE
RUJVR0xFVkVMX2VsbCA+PSAyLCBwcmludCgiICBjb21lcyBmcm9tIHRoZSB0cml2aWFsIHBv
aW50ICIscG9pbnQpKTsKICAgICAgICAgIGxpc3Rwb2ludHMgPSBjb25jYXQobGlzdHBvaW50
cyxbcG9pbnRdKTsKICAgICAgICAgIGZvdW5kID0gMTsgaXNwb2ludHRyaXYgPSAxOyBicmVh
awogICAgKSkpOwoKXFwgXFxcXFxcXFxcXFxcXApcXCBPbiBjaGVyY2hlIGEgZWNyaXJlIHpj
IHNvdXMgbGEgZm9ybWUgYS1iKnRoZXRhClxcIFxcXFxcXFxcXFxcXFwKCiAgICBpZiggIWZv
dW5kLCBcXCBzaSBjZSBuJ2VzdCBwYXMgdW4gcG9pbnQgdHJpdmlhbAogICAgICBhID0gcG9s
Y29lZmYobGlmdHpjLDApOwogICAgICBiID0tcG9sY29lZmYobGlmdHpjLDEpOwogICAgICBj
ID0gcG9sY29lZmYobGlmdHpjLDIpOwoKICAgICAgaWYoIGMgIT0gMCwKICAgICAgICBhbHBo
YWMgPSAoQSpiK0IqYy1hKSpjK2JeMjsKaWYoIERFQlVHTEVWRUxfZWxsID49IDMsIHByaW50
KCIgICBhbHBoYWMgPSAiLGFscGhhYykpOwogICAgICAgIHIgPSBuZnNxcnQobmYsbm9ybSh6
YykpWzFdOwogICAgICAgIGlmKCBhbHBoYWMgPT0gMCwKXFwgY2FzIHBhcnRpY3VsaWVyCmlm
KCBERUJVR0xFVkVMX2VsbCA+PSAzLCBwcmludCgiICAgY29udGludWluZyB3aXRoIDEvemMi
KSk7CiAgICAgICAgICB6YyA9IG5vcm0oemMpKigxL3pjKTsKaWYoIERFQlVHTEVWRUxfZWxs
ID49IDIsIHByaW50KCIgIHpjID0gIix6YykpCiAgICAgICAgLApcXCBJbCBmYXV0IHJlc291
ZHJlIHVuZSBmb3JtZSBxdWFkcmF0aXF1ZQpcXCBFeGlzdGVuY2UgKGxvY2FsZSA9IGdsb2Jh
bGUpIGQndW5lIHNvbHV0aW9uIDoKICAgICAgICAgIGRlbmMgPSBkZW5vKGxpZnQoYykpOwog
ICAgICAgICAgaWYoIGRlbmMgIT0gMSwgY3AgPSBjKmRlbmNeMiwgY3AgPSBjKTsKICAgICAg
ICAgIGRlbmEgPSBkZW5vKGxpZnQoYWxwaGFjKSk7CiAgICAgICAgICBpZiggZGVuYSAhPSAx
LCBhbHBoYWNwID0gYWxwaGFjKmRlbmFeMiwgYWxwaGFjcCA9IGFscGhhYyk7CmlmKCBERUJV
R0xFVkVMX2VsbCA+PSAyLCBwcmludCgiICBIaWxiZXJ0IHN5bWJvbCAoIixhbHBoYWNwLCIs
IixjcCwiKSA9ICIpKTsKICAgICAgICAgIGlmKCAhbG9jICYmIG15bmZoaWxiZXJ0KG5mLCBh
bHBoYWNwLGNwKSA8IDAsCmlmKCBERUJVR0xFVkVMX2VsbCA+PSAzLCBwcmludCgiICAgbm8g
bG9jYWwgc29sdXRpb24iKSk7CiAgICAgICAgICAgIGxpc3Rub3RFTFMgPSBjb25jYXQobGlz
dG5vdEVMUyxbaXdoaWxlXSk7CiAgICAgICAgICAgIGl3aGlsZSsrOwogICAgICAgICAgICBu
ZXh0CiAgICAgICAgICApOwpcXCBJY2kgb24gYSBsJ2V4aXN0ZW5jZSBsb2NhbGUKICAgICAg
ICAgIGJldGEgPSBBKihBKmIqYytCKmNeMitiXjIpLUMqY14yK2EqYjsKICAgICAgICAgIG1h
dHRyID0gbWF0aWQoMyk7CiAgICAgICAgICBtYXR0clsxLDFdID0gYyA7bWF0dHJbMiwyXSA9
IGFscGhhYyA7CiAgICAgICAgICBtYXR0clszLDNdID0gciA7bWF0dHJbMiwzXSA9IC1iZXRh
OwogICAgICAgICAgbWF0dHJbMSwyXSA9IC0oYiArQSpjKSA7bWF0dHJbMSwzXSA9IGEtQipj
K0EqKEEqYytiKTsKaWYoIERFQlVHTEVWRUxfZWxsID49IDIsIHByaW50MSgiICBzb2wgb2Yg
cXVhZHJhdGljIGVxdWF0aW9uID0gIikpOwogICAgICAgICAgdmVjID0gYm5mcWZzb2x2ZShi
bmYsYWxwaGFjcCxjcCxmbGFnMyxhdXQpOwppZiggREVCVUdMRVZFTF9lbGwgPj0gMiwgcHJp
bnQobGlmdCh2ZWMpKSk7CiAgICAgICAgICBhdXggPSB2ZWNbMl0qZGVuYTsKICAgICAgICAg
IHZlY1syXSA9IHZlY1sxXTt2ZWNbMV0gPSBhdXg7CiAgICAgICAgICB2ZWNbM10gPSB2ZWNb
M10qZGVuYzsKICAgICAgICAgIHZlYyA9IChtYXR0cl4oLTEpKSp2ZWM7CiAgICAgICAgICB2
ZWMgLz0gY29udGVudChsaWZ0KHZlYykpOwogICAgICAgICAgejEgPSAodmVjWzNdKnR0aGV0
YSt2ZWNbMl0pKnR0aGV0YSt2ZWNbMV07CmlmKCBERUJVR0xFVkVMX2VsbCA+PSAzLCBwcmlu
dCgiICAgejEgPSAiLHoxKSk7CiAgICAgICAgICB6YyAqPSB6MV4yOwppZiggREVCVUdMRVZF
TF9lbGwgPj0gMiwgcHJpbnQoIiAgemMqejFeMiA9ICIsemMpKTsKICAgICAgICAgKQogICAg
ICApCiAgICApOwoKXFwgXFxcXFxcXFxcXApcXCBNYWludGVuYW50IHpjIGVzdCBkZSBsYSBm
b3JtZSBhLWIqdGhldGEKXFwgXFxcXFxcXFxcXAoKICAgIGlmKCAhZm91bmQsCgppZiggREVC
VUdMRVZFTF9lbGwgPj0gMywgcHJpbnQoIiAgIHpjID0gIix6YykpOwogICAgICBsaWZ0emMg
PSBsaWZ0KHpjKTsKICAgICAgYSA9IHBvbGNvZWZmKGxpZnR6YywwKTsKICAgICAgYiA9LXBv
bGNvZWZmKGxpZnR6YywxKTsKICAgICAgYyA9IHBvbGNvZWZmKGxpZnR6YywyKTsKaWYoIGMs
IGVycm9yKCJibmZlbGwyZGVzY2VudF9nZW4gOiBjIDw+IDAiKSk7CgpcXCByZW1vdmUgZGVu
b21pbmF0b3JzIGFuZCB0cnkgdG8gc2ltcGxpZnkgemMKICAgICAgY29udCA9IGlkZWFsYWRk
KG5mLGEsYik7CiAgICAgIGlmKCBjb250ICE9IDEsCiAgICAgICAgY29udCA9IGlkZWFsZmFj
dG9yKG5mLGNvbnQpOwogICAgICAgIGNvbnRbLDJdIFw9IDI7CiAgICAgICAgYXV4ID0gMTsK
ICAgICAgICBmb3IoIGkgPSAxLCAjY29udFssMV0sClxcICoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqClxcICAgICAg
ICAgIGF1eCA9IGlkZWFsbXVsKG5mLGF1eCxpZGVhbHBvdyhuZixjb250W2ksMV0sY29udFtp
LDJdKSkKICAgICAgICAgIGF1eCA9IGlkZWFsbXVsKG5mLGF1eCxpZGVhbHBvdyhuZixpZGVh
bGhuZihuZixjb250W2ksMV0pLGNvbnRbaSwyXSkpClxcICoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICAgICAg
KTsKICAgICAgICBjb250ID0gbmZiYXNpc3RvYWxnKG5mLGJuZmlzcHJpbmNpcGFsKGJuZixh
dXgpWzJdKV4yOwogICAgICAgIGEgLz0gY29udDsKICAgICAgICBiIC89IGNvbnQ7CiAgICAg
ICAgemMvPSBjb250OwogICAgICAgIGxpZnR6YyA9IGxpZnQoemMpOwppZiggREVCVUdMRVZF
TF9lbGwgPj0gMywgcHJpbnQoIiAgIG5ldyB6YyA9ICIsemMpKTsKICAgICAgKTsKCiAgICAg
IGlmKCBuZmlzc3F1YXJlKG5mLGIpLAppZiggREVCVUdMRVZFTF9lbGwgPj0gMywgcHJpbnQo
IiAgIGIgaXMgYSBzcXVhcmUiKSk7CiAgICAgICAgcG9pbnQgPSBbYS9iLG5mc3FydChuZiwo
YS9iKV4zK0EqKGEvYileMitCKihhL2IpK0MpWzFdXTsKaWYoIERFQlVHTEVWRUxfZWxsID49
IDIsIHByaW50KCIgIHBvaW50IGZvdW5kID0gIixwb2ludCkpOwogICAgICAgIGxpc3Rwb2lu
dHMgPSBjb25jYXQobGlzdHBvaW50cyxbcG9pbnRdKTsKICAgICAgICBmb3VuZCA9IDE7IGlz
cG9pbnR0cml2ID0gMQogICAgICApCiAgICApOwoKXFwgXFxcXFxcXFxcXFwKXFwgQ29uc3Ry
dWN0aW9uIGRlIGxhIHF1YXJ0aXF1ZQpcXCBcXFxcXFxcXFxcXAoKICAgIGlmKCAhZm91bmQs
IFxcIHNpIGNlIG4nZXN0IHBhcyB1biBwb2ludCB0cml2aWFsCiAgICAgIHIgPSBuZnNxcnQo
bmYsbm9ybSh6YykpWzFdOwppZiggREVCVUdMRVZFTF9lbGwgPj0gNCwgcHJpbnQoIiAgICBy
ID0gIixyKSk7CiAgICAgIGMgPSAtMiooQSpiKzMqYSk7CmlmKCBERUJVR0xFVkVMX2VsbCA+
PSA0LCBwcmludCgiICAgIGMgPSAiLGMpKTsKICAgICAgZCA9IDgqcjsKaWYoIERFQlVHTEVW
RUxfZWxsID49IDQsIHByaW50KCIgICAgZCA9ICIsZCkpOwogICAgICBlID0gKEFeMipiXjIg
LSAyKkEqYSpiLTQqQipiXjItMyphXjIpOwppZiggREVCVUdMRVZFTF9lbGwgPj0gNCwgcHJp
bnQoIiAgICBlID0gIixlKSk7CiAgICAgIHBvbG9yaWcgPSBiKigneF40K2MqJ3heMitkKid4
K2UpKnVubmY7CmlmKCBERUJVR0xFVkVMX2VsbCA+PSAyLCBwcmludCgiICBxdWFydGljOiAo
IixsaWZ0KGIpLCIpKlleMiA9ICIsbGlmdChwb2xvcmlnL2IpKSk7CiAgICAgIHBvbCA9IHBv
bG9yaWc7CiAgICAgIGlmKCBiaWdmbGFnLAogICAgICAgIHJlZHEgPSBibmZyZWRxdWFydGlx
dWUoYm5mLHBvbCxyLGEsYik7CmlmKCBERUJVR0xFVkVMX2VsbCA+PSAyLCBwcmludCgiICBy
ZWR1Y2VkOiBZXjIgPSAiLGxpZnQocmVkcVsxXSkpKTsKICAgICAgICBwb2wgPSByZWRxWzFd
OyB0cmFuc2wgPSByZWRxWzJdOyBtdWx0aXAgPSByZWRxWzNdCiAgICAgICk7CgpcXCBTZWFy
Y2ggZm9yIGEgcG9pbnQgb24gdGhlIHF1YXJ0aWMKICAgICAgcG9pbnQgPSBuZnJhdHBvaW50
KG5mLHBvbCxMSU0xLDEpOwogICAgICBmb3VuZCA9IHBvaW50ICE9IFtdOwpcXCBJZiBubyBw
b2ludCBpcyBmb3VuZCwgY2hlY2sgaWYgaXQgaXMgRUxTCiAgICAgIGlmKCAhZm91bmQgJiYg
IWxvYywKICAgICAgICBpZiggYmlnZmxhZywKICAgICAgICAgIGxvYyA9IG5mbG9jYWxseXNv
bHVibGUobmYscG9sLHIsYSxiKQogICAgICAgICwgbG9jID0gbmZsb2NhbGx5c29sdWJsZShu
Zixwb2wsMCwxLDEpCiAgICAgICkpOwogICAgICBpZiggIWxvYywKICAgICAgICBsaXN0bm90
RUxTID0gY29uY2F0KGxpc3Rub3RFTFMsW2l3aGlsZV0pOwogICAgICAgIGl3aGlsZSsrOwog
ICAgICAgIG5leHQKICAgICAgKQogICAgKTsKClxcIElmIG5vIHBvaW50IGlzIGZvdW5kLCBz
ZWFyY2ggaGFyZGVyCiAgICBpZiggIWZvdW5kLAppZiggREVCVUdMRVZFTF9lbGwgPj0gMiwg
cHJpbnQoInF1YXJ0aWMgaXMgRUxTIikpOwogICAgICBwb2ludCA9IG5mcmF0cG9pbnQobmYs
cG9sLExJTTMsMSk7CiAgICAgIGZvdW5kID0gcG9pbnQgIT0gW10KICAgICk7CgogICAgaWYo
IGZvdW5kICYmICFpc3BvaW50dHJpdiwKICAgICAgaWYoIGJpZ2ZsYWcsCiAgICAgICAgcG9p
bnRbMV0gPSBwb2ludFsxXSptdWx0aXArdHJhbnNsOwogICAgICAgIHBvaW50WzJdID0gbmZz
cXJ0KG5mLHN1YnN0KHBvbG9yaWcsJ3gscG9pbnRbMV0vcG9pbnRbM10pKVsxXSk7CiAgICAg
IG1hdHRyID0gbWF0aWQoMyk7CiAgICAgIG1hdHRyWzEsMV0gPSAtMipiXjI7IG1hdHRyWzEs
Ml0gPSAoQSpiK2EpKmI7CiAgICAgIG1hdHRyWzEsM10gPSBhXjIrKDIqQi1BXjIpKmJeMjsg
bWF0dHJbMiwyXSA9IC1iOwogICAgICBtYXR0clsyLDNdID0gYStBKmI7IG1hdHRyWzMsM10g
PXI7CiAgICAgIFVWVyA9IFtwb2ludFsxXV4yLHBvaW50WzNdXjIscG9pbnRbMV0qcG9pbnRb
M11dfjsKICAgICAgdmVjID0gKG1hdHRyXigtMSkpKlVWVzsKICAgICAgejEgPSAodmVjWzNd
KnR0aGV0YSt2ZWNbMl0pKnR0aGV0YSt2ZWNbMV07CiAgICAgIHpjICo9IHoxXjI7CiAgICAg
IHpjIC89IC1wb2xjb2VmZihsaWZ0KHpjKSwxKTsKaWYoIERFQlVHTEVWRUxfZWxsID49IDMs
IHByaW50KCIgICB6Yyp6MV4yID0gIix6YykpOwogICAgICBwb2ludHh4ID0gcG9sY29lZmYo
bGlmdCh6YyksMCk7CiAgICAgIHBvaW50MiA9IFsgcG9pbnR4eCwgbmZzcXJ0KG5mLHN1YnN0
KCd4XjMrQSoneF4yK0IqJ3grQywneCxwb2ludHh4KSlbMV1dOwppZiggREVCVUdMRVZFTF9l
bGwgPj0gMSwgcHJpbnQoIiAgcG9pbnQgZm91bmQgPSAiLHBvaW50MikpOwogICAgICBsaXN0
cG9pbnRzID0gY29uY2F0KGxpc3Rwb2ludHMsW3BvaW50Ml0pOwogICAgKTsKCiAgICBsaXN0
RUxTID0gY29uY2F0KGxpc3RFTFMsW2l3aGlsZV0pOwogICAgaWYoIGRlZ3JlKGl3aGlsZSkg
PiBsYXN0bG9jLCBtMisrOyBsYXN0bG9jID0gZGVncmUoaXdoaWxlKSk7CgogICAgaWYoIGZv
dW5kLAogICAgICBtMSsrOwogICAgICBmb3VuZCA9IDA7IGxhc3Rsb2MgPSAtMTsKICAgICAg
aXdoaWxlID0gMTw8ZGVncmUoaXdoaWxlKTsKICAgICAgbWFza3doaWxlID4+PSAxOwogICAg
ICBMUzJjb29yZHRpbGRhID0gdmVjZXh0cmFjdChMUzJjb29yZHRpbGRhLDE8PCNsaXN0Z2Vu
LWl3aGlsZS0xKTsKICAgICAgbGlzdGdlbiA9IHZlY2V4dHJhY3QobGlzdGdlbiwxPDwjbGlz
dGdlbi1pd2hpbGUtMSk7CiAgICAgIHdoaWxlKCBsaXN0RUxTWyNsaXN0RUxTXSA+PSBpd2hp
bGUsCiAgICAgICAgbGlzdEVMUyA9IHZlY2V4dHJhY3QobGlzdEVMUywxPDwoI2xpc3RFTFMt
MSktMSkpOwogICAgICB3aGlsZSggI2xpc3Rub3RFTFMgJiYgbGlzdG5vdEVMU1sjbGlzdG5v
dEVMU10gPj0gaXdoaWxlLAogICAgICAgIGxpc3Rub3RFTFMgPSB2ZWNleHRyYWN0KGxpc3Ru
b3RFTFMsMTw8KCNsaXN0bm90RUxTLTEpLTEpKQogICAgLCBpd2hpbGUgKysKICAgICkKICAp
OwoKaWYoIERFQlVHTEVWRUxfZWxsID49IDIsCiAgcHJpbnQoIiAgbTEgPSAiLG0xKTsKICBw
cmludCgiICBtMiA9ICIsbTIpKTsKaWYoIERFQlVHTEVWRUxfZWxsID49IDEsCiAgcHJpbnQo
IiNTKEUvSylbMl0gICAgPSAiLDE8PG0yKSk7CiAgaWYoIG0xID09IG0yLAppZiggREVCVUdM
RVZFTF9lbGwgPj0gMSwKICAgIHByaW50KCIjRShLKS8yRShLKSAgID0gIiwxPDxtMSk7CiAg
ICBwcmludCgiI0lJSShFL0spWzJdICA9IDEiKTsKICAgIHByaW50KCJyYW5rKEUvSykgICAg
ID0gIixtMSkpOwogICAgcmFuZyA9IG0xCiAgLAppZiggREVCVUdMRVZFTF9lbGwgPj0gMSwK
ICAgIHByaW50KCIjRShLKS8yRShLKSAgPj0gIiwxPDxtMSk7CiAgICBwcmludCgiI0lJSShF
L0spWzJdIDw9ICIsMTw8KG0yLW0xKSk7CiAgICBwcmludCgicmFuayhFL0spICAgID49ICIs
bTEpKTsKICAgIHJhbmcgPSBtMTsKICAgIGlmKCAobTItbTEpJTIsCmlmKCBERUJVR0xFVkVM
X2VsbCA+PSAxLAogICAgICBwcmludCgiIElJSSBzaG91bGQgYmUgYSBzcXVhcmUsIGhlbmNl
ICIpOwogICAgICBpZiggbTItbTEgPiAxLAogICAgICAgIHByaW50KCIjRShLKS8yRShLKSAg
Pj0gIiwxPDwobTErMSkpOwogICAgICAgIHByaW50KCIjSUlJKEUvSylbMl0gPD0gIiwxPDwo
bTItbTEtMSkpOwogICAgICAgIHByaW50KCJyYW5rKEUvSykgICAgPj0gIixtMSsxKQogICAg
ICAsCiAgICAgICAgcHJpbnQoIiNFKEspLzJFKEspICA9ICIsMTw8KG0xKzEpKTsKICAgICAg
ICBwcmludCgiI0lJSShFL0spWzJdID0gMSIpOwogICAgICAgIHByaW50KCJyYW5rKEUvSykg
ICAgPSAiLG0xKzEpKSk7CiAgICAgIHJhbmcgPSBtMSsxKQogICk7CgppZiggREVCVUdMRVZF
TF9lbGwgPj0gMSwgcHJpbnQoIiBsaXN0cG9pbnRzID0gIixsaXN0cG9pbnRzKSk7CiAgZm9y
KCBpID0gMSwgI2xpc3Rwb2ludHMsCiAgICBpZiggI2xpc3Rwb2ludHNbaV0gPT0gMywKICAg
ICAgbGlzdHBvaW50c1tpXSA9IHZlY2V4dHJhY3QobGlzdHBvaW50c1tpXSwzKSk7CiAgICBp
ZiggIWVsbGlzb25jdXJ2ZShlbGxuZixsaXN0cG9pbnRzW2ldKSwKICAgICAgZXJyb3IoImJu
ZmVsbDJkZXNjZW50OiBXUk9ORyBQT0lOVCAiKSkpOwppZiggREVCVUdMRVZFTF9lbGwgPj0g
NCwgcHJpbnQoIiAgICBlbmQgb2YgYm5mZWxsMmRlc2NlbnRfZ2VuIikpOwogIHJldHVybihb
cmFuZyxtMixsaXN0cG9pbnRzXSk7Cn0Ke2JuZmVsbHJhbmsoYm5mLGVsbCxoZWxwPVtdLGJp
Z2ZsYWc9MSxmbGFnMz0xKSA9ClxcIEFsZ29yaXRobWUgZGUgbGEgMi1kZXNjZW50ZSBzdXIg
bGEgY291cmJlIGVsbGlwdGlxdWUgZWxsLgpcXCBoZWxwIGVzdCB1bmUgbGlzdGUgZGUgcG9p
bnRzIGNvbm51cyBzdXIgZWxsLgoKXFwgYXR0ZW50aW9uIGJuZiBhIHVuIHBvbHlub21lIGVu
IHkuClxcIHNpIGJpZ2ZsYWcgIT0wLCBvbiByZWR1aXQgbGVzIHF1YXJ0aXF1ZXMKXFwgc2kg
ZmxhZzMgIT0gMCwgb24gdXRpbGlzZSBibmZxZnNvbHZlMgpteSh1cnN0LHVyc3QxLGRlbixm
YWN0ZGVuLGVxdGhldGEscm5mZXEsYmJuZixleHQscmFuZyxmKTsKCmlmKCBERUJVR0xFVkVM
X2VsbCA+PSAzLCBwcmludCgiICAgc3RhcnRpbmcgYm5mZWxscmFuayIpKTsKICBpZiggI2Vs
bCA8PSA1LCBlbGwgPSBlbGxpbml0KGVsbCwxKSk7CgpcXCByZW1vdmVzIHRoZSBjb2VmZmlj
aWVudHMgYTEgYW5kIGEzCiAgdXJzdCA9IFsxLDAsMCwwXTsKICBpZiggZWxsLmExICE9IDAg
fHwgZWxsLmEzICE9IDAsCiAgICB1cnN0MSA9IFsxLDAsLWVsbC5hMS8yLC1lbGwuYTMvMl07
CiAgICBlbGwgPSBlbGxjaGFuZ2VjdXJ2ZShlbGwsdXJzdDEpOwogICAgdXJzdCA9IGVsbGNv
bXBvc2V1cnN0KHVyc3QsdXJzdDEpCiAgKTsKClxcIHJlbW92ZXMgZGVub21pbmF0b3JzCiAg
d2hpbGUoIChkZW4gPSBpZGVhbGludihibmYsaWRlYWxhZGQoYm5mLGlkZWFsYWRkKGJuZiwx
LGVsbC5hMiksaWRlYWxhZGQoYm5mLGVsbC5hNCxlbGwuYTYpKSkpWzEsMV0gPiAxLAogICAg
ZmFjdGRlbiA9IGlkZWFsZmFjdG9yKGJuZixkZW4pWywxXTsKICAgIGRlbiA9IDE7CiAgICBm
b3IoIGkgPSAxLCAjZmFjdGRlbiwKICAgICAgZGVuID0gaWRlYWxtdWwoYm5mLGRlbixmYWN0
ZGVuW2ldKSk7CiAgICBkZW4gPSBkZW5bMSwxXTsKICAgIHVyc3QxID0gWzEvZGVuLDAsMCww
XTsKICAgIGVsbCA9IGVsbGNoYW5nZWN1cnZlKGVsbCx1cnN0MSk7CiAgICB1cnN0ID0gZWxs
Y29tcG9zZXVyc3QodXJzdCx1cnN0MSk7CiAgKTsKCiAgaGVscCA9IGVsbGNoYW5nZXBvaW50
KGhlbHAsdXJzdCk7CgpcXCBjaG9peCBkZSBsJ2FsZ29yaXRobWUgc3VpdmFudCBsYSAyLXRv
cnNpb24KICBlbGwgKj0gTW9kKDEsYm5mLnBvbCk7CiAgZXF0aGV0YSA9IFBvbChbMSxlbGwu
YTIsZWxsLmE0LGVsbC5hNl0pOwppZiggREVCVUdMRVZFTF9lbGwgPj0gMSwgcHJpbnQoIiBl
bGxpcHRpYyBjdXJ2ZTogWV4yID0gIixlcXRoZXRhKSk7CiAgZiA9IG5mcG9scmF0cm9vdHMo
Ym5mLGVxdGhldGEpOwoKICBpZiggI2YgPT0gMCwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXFwgY2FzIDE6IDItdG9yc2lvbiB0cml2aWFsZQogICAgcm5mZXEgPSBybmZl
cXVhdGlvbihibmYsZXF0aGV0YSwxKTsKICAgIHVyc3QxID0gWzEsLXJuZmVxWzNdKk1vZCgn
eSxibmYucG9sKSwwLDBdOwogICAgaWYoIHJuZmVxWzNdICE9IDAsCiAgICAgIGVsbCA9IGVs
bGNoYW5nZWN1cnZlKGVsbCx1cnN0MSk7CiAgICAgIHVyc3QgPSBlbGxjb21wb3NldXJzdCh1
cnN0LHVyc3QxKTsKICAgICAgZXF0aGV0YSA9IHN1YnN0KGVxdGhldGEsJ3gsJ3gtcm5mZXFb
M10qTW9kKCd5LGJuZi5wb2wpKTsKICAgICAgcm5mZXEgPSBybmZlcXVhdGlvbihibmYsZXF0
aGV0YSwxKTsKaWYoIERFQlVHTEVWRUxfZWxsID49IDIsIHByaW50KCIgIHRyYW5zbGF0aW9u
OiB3b3JraW5nIHdpdGggWV4yID0gIixlcXRoZXRhKSk7CiAgICApOwppZiggREVCVUdMRVZF
TF9lbGwgPj0gMywgcHJpbnQxKCIgICBiYm5maW5pdCAiKSk7CiAgICBiYm5mID0gYm5maW5p
dChybmZlcVsxXSwxKTsKaWYoIERFQlVHTEVWRUxfZWxsID49IDMsIHByaW50KCIgICBkb25l
IikpOwogICAgZXh0ID0gW2VxdGhldGEsIHJuZmVxLCBiYm5mXTsKICAgIHJhbmcgPSBibmZl
bGwyZGVzY2VudF9nZW4oYm5mLGVsbCxleHQsaGVscCxiaWdmbGFnLGZsYWczKQogICwKICBp
ZiggI2YgPT0gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFwgY2FzIDI6
IDItdG9yc2lvbiA9IFovMloKICAgIGlmKCBmWzFdICE9IDAsCiAgICAgIHVyc3QxID0gWzEs
ZlsxXSwwLDBdOwogICAgICBlbGwgPSBlbGxjaGFuZ2VjdXJ2ZShlbGwsdXJzdDEpOwogICAg
ICB1cnN0ID0gZWxsY29tcG9zZXVyc3QodXJzdCx1cnN0MSkKICAgICk7CiAgICByYW5nID0g
Ym5mZWxsMmRlc2NlbnRfdmlhaXNvZyhibmYsZWxsKQogICwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcXCBjYXMgMzogMi10b3JzaW9uID0gWi8yWipa
LzJaCiAgICByYW5nID0gYm5mZWxsMmRlc2NlbnRfY29tcGxldGUoYm5mLGZbMV0sZlsyXSxm
WzNdLGZsYWczKQogICkpOwoKICByYW5nWzNdID0gZWxsY2hhbmdlcG9pbnQocmFuZ1szXSxl
bGxpbnZlcnR1cnN0KHVyc3QpKTsKaWYoIERFQlVHTEVWRUxfZWxsID49IDMsIHByaW50KCIg
ICBlbmQgb2YgYm5mZWxscmFuayIpKTsKCnJldHVybihyYW5nKTsKfQp7Ym5mZWxsMmRlc2Nl
bnRfY29tcGxldGUoYm5mLGUxLGUyLGUzLGZsYWczPTEsYXV0PVsneV0pID0KXFwgY2FsY3Vs
IGR1IHJhbmcgZCd1bmUgY291cmJlIGVsbGlwdGlxdWUKXFwgcGFyIGxhIG1ldGhvZGUgZGUg
Mi1kZXNjZW50ZSBjb21wbGV0ZS4KXFwgWV4yID0gKHgtZTEpKih4LWUyKSooeC1lMyk7Clxc
IGVuIHN1aXZhbnQgbGEgbWV0aG9kZSBkZWNyaXRlIHBhciBKLlNpbHZlcm1hbgpcXCBzaSBm
bGFnMyA9PTEgYWxvcnMgb24gdXRpbGlzZSBibmZxZnNvbHZlMiAoZXF1YXRpb24gYXV4IG5v
cm1lcykKXFwgcG91ciByZXNvdWRyZSBMZWdlbmRyZQpcXCBvbiBwb3VycmEgYWxvcnMgdXRp
bGlzZXIgYXV0PW5mZ2Fsb2lzY29uaihibmYucG9sKQoKXFwgZTEsIGUyIGV0IGUzIHNvbnQg
ZGVzIGVudGllcnMgYWxnZWJyaXF1ZXMgZGUgYm5mLgoKbXkoS1MycHJvZCxvZGRjbGFzcyxL
UzJnZW4sdmVjdCxzZWxtZXIscmFuZyxiMSxiMix2ZWMsejEsejIsZDMxLHF1YXJ0MCxxdWFy
dCxjb250LGZhLHBvaW50LHNvbHgsc29seSxsaXN0ZXBvaW50cyxzdHJhbmdlKTsKCmlmKCBE
RUJVR0xFVkVMX2VsbCA+PSAyLCBwcmludCgiICBBbGdvcml0aG0gb2YgY29tcGxldGUgMi1k
ZXNjZW50IikpOwoKXFwgY2FsY3VsIGRlIEsoUywyKQoKICBLUzJwcm9kID0gKGUxLWUyKSoo
ZTItZTMpKihlMy1lMSkqMjsKICBvZGRjbGFzcyA9IDA7CiAgd2hpbGUoICFvZGRjbGFzcywK
ICAgIEtTMmdlbiA9IGJuZnN1bml0KGJuZixpZGVhbGZhY3RvcihibmYsS1MycHJvZClbLDFd
fik7CiAgICBvZGRjbGFzcyA9IChLUzJnZW5bNV1bMV0lMik7CiAgICBpZiggIW9kZGNsYXNz
LAogICAgICBLUzJwcm9kID0gaWRlYWxtdWwoYm5mLEtTMnByb2QsKEtTMmdlbls1XVszXVsx
XSkpKTsKICApOwogIEtTMmdlbiA9IEtTMmdlblsxXTsKICBmb3IoIGkgPSAxLCAjS1MyZ2Vu
LAogICAgS1MyZ2VuW2ldID0gbmZiYXNpc3RvYWxnKGJuZiwgS1MyZ2VuW2ldKSk7CiAgS1My
Z2VuID0gY29uY2F0KE1vZChsaWZ0KGJuZi50dWZ1KSxibmYucG9sKSxLUzJnZW4pOwppZigg
REVCVUdMRVZFTF9lbGwgPj0gMiwKICBwcmludCgiICAjSyhTLDIpZ2VuID0gIiwjS1MyZ2Vu
KTsKICBwcmludCgiICAgSyhTLDIpZ2VuID0gIixLUzJnZW4pCik7CgpcXCBwYXJjb3VycyBk
ZSBLKFMsMikqSyhTLDIpCgogIHZlY3QgPSB2ZWN0b3IoI0tTMmdlbixpLFswLDFdKTsKICBz
ZWxtZXIgPSAwOwogIHJhbmcgPSAwOwogIGxpc3RlcG9pbnRzID0gW107CgogIGZvcnZlYygg
WCA9IHZlY3QsCiAgICBiMSA9IHByb2QoIGkgPSAxLCAjS1MyZ2VuLCBLUzJnZW5baV1eWFtp
XSk7CiAgICBmb3J2ZWMoIFkgPSB2ZWN0LAogICAgICBiMiA9IHByb2QoIGkgPSAxLCAjS1My
Z2VuLCBLUzJnZW5baV1eWVtpXSk7CgppZiggREVCVUdMRVZFTF9lbGwgPj0gMywgcHJpbnQo
IiAgIFtiMSxiMl0gPSAiLGxpZnQoW2IxLGIyXSkpKTsKClxcIHBvaW50cyB0cml2aWF1eCBw
cm92ZW5hbnQgZGUgbGEgMi10b3JzaW9uCgogICAgICBpZiggYjE9PTEgJiYgYjI9PTEsCmlm
KCBERUJVR0xFVkVMX2VsbCA+PSAyLCBwcmludCgiICB0cml2aWFsIHBvaW50IFswXSIpKTsK
ICAgICAgICBzZWxtZXIrKzsgcmFuZysrOyBuZXh0KTsKICAgICAgaWYoIG5maXNzcXVhcmUo
Ym5mLm5mLChlMi1lMSkqYjEpCiAgICAgICAgJiYgbmZpc3NxdWFyZShibmYubmYsKGUyLWUz
KSooZTItZTEpKmIyKSwKaWYoIERFQlVHTEVWRUxfZWxsID49IDIsIHByaW50KCIgIHRyaXZp
YWwgcG9pbnQgW2UyLDBdIikpOwogICAgICAgIHNlbG1lcisrOyByYW5nKys7IG5leHQpOwog
ICAgICBpZiggbmZpc3NxdWFyZShibmYubmYsKGUxLWUyKSpiMikKICAgICAgICAmJiBuZmlz
c3F1YXJlKGJuZi5uZiwoZTEtZTMpKihlMS1lMikqYjEpLAppZiggREVCVUdMRVZFTF9lbGwg
Pj0gMiwgcHJpbnQoIiAgdHJpdmlhbCBwb2ludCBbZTEsMF0iKSk7CiAgICAgICAgc2VsbWVy
Kys7IHJhbmcrKzsgbmV4dCk7CiAgICAgIGlmKCBuZmlzc3F1YXJlKGJuZi5uZiwoZTMtZTEp
KmIxKQogICAgICAgICYmIG5maXNzcXVhcmUoYm5mLm5mLChlMy1lMikqYjIpLAppZiggREVC
VUdMRVZFTF9lbGwgPj0gMiwgcHJpbnQoIiAgdHJpdmlhbCBwb2ludCBbZTMsMF0iKSk7CiAg
ICAgICAgc2VsbWVyKys7IHJhbmcrKzsgbmV4dCk7CgpcXCBwcmVtaWVyIGNyaXRlcmUgbG9j
YWwgOiBzdXIgbGVzIGZvcm1lcyBxdWFkcmF0aXF1ZXMKCiAgICAgIGlmKCBteW5maGlsYmVy
dChibmYubmYsYjEqYjIsYjEqKGUyLWUxKSkgPCAwCiAgICAgICAgfHwgbXluZmhpbGJlcnQo
Ym5mLm5mLGIyLGIxKihlMy1lMSkpIDwgMAogICAgICAgIHx8IG15bmZoaWxiZXJ0KGJuZi5u
ZixiMSxiMiooZTMtZTIpKSA8IDAKICAgICAgICAsCmlmKCBERUJVR0xFVkVMX2VsbCA+PSAz
LCBwcmludCgiICAgbm90IEVMUyIpKTsKICAgICAgICBuZXh0KTsKCmlmKCBERUJVR0xFVkVM
X2VsbCA+PSAyLCBwcmludCgiICBbYjEsYjJdID0gIixsaWZ0KFtiMSxiMl0pKSk7CmlmKCBE
RUJVR0xFVkVMX2VsbCA+PSAyLCBwcmludCgiICBxdWFkcmF0aWMgZm9ybXMgbG9jYWxseSBz
b2x1YmxlIikpOwoKXFwgc29sdXRpb24gZGUgbGEgcHJlbWllcmUgZm9ybWUgcXVhZHJhdGlx
dWUKCiAgICAgIGlmKCBiMSAhPSBiMiwKICAgICAgICB2ZWMgPSBibmZxZnNvbHZlKGJuZixi
MSpiMixiMSooZTItZTEpLGZsYWczKTsKaWYoIERFQlVHTEVWRUxfZWxsID49IDMsIHByaW50
KCIgICBzb2wgcGFydCA9ICIsdmVjKSk7CiAgICAgICAgaWYoIHZlY1szXSA9PSAwLCBlcnJv
cigiYm5mZWxsMmRlc2NlbnRfY29tcGxldGU6IEJVRyAhISEgOiB2ZWNbM109MCAiKSk7CiAg
ICAgICAgejEgPSB2ZWNbMV0vdmVjWzNdL2IxOyB6MiA9IHZlY1syXS92ZWNbM10KICAgICAg
LAogICAgICAgIHoxID0gKDErKGUyLWUxKS9iMSkvMjsgejIgPSB6MS0xCiAgICAgICk7CiAg
ICAgIGQzMSA9IGUzLWUxOwogICAgICBxdWFydDAgPSBiMl4yKih6MV4yKmIxIC0gZDMxKSon
eF40IC0gNCp6MSpiMl4yKnoyKmIxKid4XjMKICAgICAgICAgICArIDIqYjEqYjIqKHoxXjIq
YjEgKyAyKmIyKnoyXjIgKyBkMzEpKid4XjIgLSA0KnoxKmIyKnoyKmIxXjIqJ3gKICAgICAg
ICAgICArIGIxXjIqKHoxXjIqYjEgLSBkMzEpOwogICAgICBxdWFydCA9IHF1YXJ0MCpiMSpi
MjsKaWYoIERFQlVHTEVWRUxfZWxsID49IDQsIHByaW50KCIgICAgcXVhcnQgPSAiLHF1YXJ0
KSk7CiAgICAgIHF1YXJ0ICo9IGRlbm9taW5hdG9yKHNpbXBsaWZ5KGNvbnRlbnQocXVhcnQp
KSleMjsKICAgICAgY29udCA9IHNpbXBsaWZ5KGNvbnRlbnQobGlmdChxdWFydCkpKTsKICAg
ICAgZmEgPSBmYWN0b3IoY29udCk7CiAgICAgIGZvciggaSA9IDEsICNmYVssMV0sIHF1YXJ0
IC89IGZhW2ksMV1eKDIqKGZhW2ksMl1cMikpKTsKaWYoIERFQlVHTEVWRUxfZWxsID49IDMs
IHByaW50KCIgICBxdWFydGljIHJlZHVjZWQgPSAiLHF1YXJ0KSk7CgpcXCBsYSBxdWFydGlx
dWUgZXN0LWVsbGUgbG9jYWxlbWVudCBzb2x1YmxlID8KCiAgICAgIGlmKCAhbmZsb2NhbGx5
c29sdWJsZShibmYubmYscXVhcnQpLAppZiggREVCVUdMRVZFTF9lbGwgPj0gMiwgcHJpbnQo
IiAgcXVhcnRpYyBub3QgRUxTIikpOwogICAgICAgIG5leHQpOwogICAgICBzZWxtZXIrKzsK
ClxcIHJlY2hlcmNoZSBkZSBwb2ludHMgc3VyIGxhIHF1YXJ0aXF1ZS4KCiAgICAgIHBvaW50
ID0gbmZyYXRwb2ludChibmYubmYscXVhcnQsTElNMywxKTsKICAgICAgaWYoIHBvaW50ICE9
IFtdLAppZiggREVCVUdMRVZFTF9lbGwgPj0gMiwgcHJpbnQoIiAgcG9pbnQgZm91bmQgb24g
dGhlIHF1YXJ0aWMgISEiKSk7CmlmKCBERUJVR0xFVkVMX2VsbCA+PSAzLCBwcmludCgiICAg
Iixwb2ludCkpOwogICAgICAgIGlmKCBwb2ludFszXSwKICAgICAgICAgIHBvaW50IC89IHBv
aW50WzNdOwogICAgICAgICAgejEgPSAoMipiMipwb2ludFsxXSp6Mi16MSooYjErYjIqcG9p
bnRbMV1eMikpLyhiMS1iMipwb2ludFsxXV4yKTsKICAgICAgICAgIHNvbHggPSBiMSp6MV4y
K2UxOwogICAgICAgICAgc29seSA9IG5mc3FydChibmYubmYsKHNvbHgtZTEpKihzb2x4LWUy
KSooc29seC1lMykpWzFdOwogICAgICAgICAgbGlzdGVwb2ludHMgPSBjb25jYXQobGlzdGVw
b2ludHMsW1tzb2x4LHNvbHldXSk7CmlmKCBERUJVR0xFVkVMX2VsbCA+PSAxLCBwcmludCgi
IHBvaW50IG9uIHRoZSBlbGxpcHRpYyBjdXJ2ZSA9Iixbc29seCxzb2x5XSkpCiAgICAgICAg
KTsKICAgICAgICByYW5nKysKICAgICAgLAppZiggREVCVUdMRVZFTF9lbGwgPj0gMiwgcHJp
bnQoIiAgbm8gcG9pbnQgZm91bmQgb24gdGhlIHF1YXJ0aWMiKSkKICAgICAgKQogICAgKQog
ICk7CgpcXCBmaW4KCmlmKCBERUJVR0xFVkVMX2VsbCA+PSAxLAogIHByaW50KCIjU14oMikg
ICAgICA9ICIsc2VsbWVyKSk7CiAgaWYoIHJhbmcgPiBzZWxtZXIvMiwgcmFuZyA9IHNlbG1l
cik7CmlmKCBERUJVR0xFVkVMX2VsbCA+PSAxLAogIHN0cmFuZ2UgPSByYW5nICE9IHNlbG1l
cjsKICBpZiggc3RyYW5nZSwKICBwcmludCgiI0VbS10vMkVbS10+PSAiLHJhbmcpCiwgcHJp
bnQoIiNFW0tdLzJFW0tdID0gIixyYW5nKSk7CiAgcHJpbnQoIiNFWzJdICAgICAgID0gNCIp
OwopOwogIHJhbmcgPSBjZWlsKGxvZyhyYW5nKS9sb2coMikpLTI7CiAgc2VsbWVyID0gdmFs
dWF0aW9uKHNlbG1lciwyKTsKaWYoIERFQlVHTEVWRUxfZWxsID49IDEsCiAgaWYoIHN0cmFu
Z2UsCiAgcHJpbnQoc2VsbWVyLTIsIiA+PSByYW5rICA+PSAiLHJhbmcpCiwgcHJpbnQoInJh
bmsgICAgICAgID0gIixyYW5nKSk7CiAgaWYoIHJhbmcsIHByaW50KCJwb2ludHMgPSAiLGxp
c3RlcG9pbnRzKSk7Cik7CgpyZXR1cm4oW3Jhbmcsc2VsbWVyLGxpc3RlcG9pbnRzXSk7Cn0K
ClxcIFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXApcXCAgICAg
ICAgICAgIEhFTFAgTUVTU0FHRVMgICAgICAgICAgICAgICAgXFwKXFwgXFxcXFxcXFxcXFxc
XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcCgp7CiAgYWRkaGVscChibmZlbGxyYW5r
LAogICAgImJuZmVsbHJhbmsoSyxFLGhlbHA9W10pOiBFIGlzIGEgNS1jb21wb25lbnQgdmVj
dG9yIGRlZmluaW5nIGFuIGVsbGlwdGljIGN1cnZlIGRlZmluZWQgb3ZlciB0aGUgbnVtYmVy
IGZpZWxkIEsgKG91dHB1dCBieSBibmZpbml0KCkpLiBSZXR1cm5zIGEgdmVjdG9yIFtyLHMs
dl0sIHdoZXJlIHIgaXMgYSBsb3dlciBib3VuZCBmb3IgdGhlIHJhbmsgb2YgRShLKSwgcyBp
cyB0aGUgcmFuayBvZiBpdHMgMi1TZWxtZXIgZ3JvdXAgYW5kIHYgaXMgYSBsaXN0IG9mIGlu
ZGVwZW5kYW50IHBvaW50cyBpbiBFKEspLzJFKEspLiBJZiBoZWxwIGlzIGEgdmVjdG9yIG9m
IG5vbnRyaXZpYWwgcG9pbnRzIG9uIEUoSyksIHRoZSByZXN1bHQgbWlnaHQgYmUgZmFzdGVy
LiBTZWUgYWxzbyA/ZGVmYXVsdF9lbGwiKTsKXFwgICAgICAgICAgICAgICAgICBvdGhlcnMK
ICBhZGRoZWxwKGRlZmF1bHRfZWxsLAogICAgImRlZmF1bHRfZWxsKERFQlVHTEVWRUxfZWxs
LCBMSU0xLCBMSU0zLCBMSU1UUklWLCBNQVhQUk9CLCBMSU1CSUdQUklNRSk6IG91dHB1dC9z
ZXQgdGhlIHZhbHVlIG9mIHRoZSBnbG9iYWwgdmFyaWFibGVzIHVzZWQgZm9yIGVsbHJhbmso
KSBhbmQgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbnMuIERFQlVHTEVWRUxfZWxsOiAwLTUgOiBj
aG9vc2UgdGhlIHF1YW50aXR5IG9mIGluZm9ybWF0aW9uIHByaW50ZWQgZHVyaW5nIHRoZSBj
b21wdXRhdGlvbiAoZGVmYXVsdD0wOiBwcmludCBub3RoaW5nKTsgTElNMSAocmVzcCBMSU0z
KTogc2VhcmNoIGxpbWl0IGZvciBlYXN5IChyZXNwIGhhcmQpIHBvaW50cyBvbiBxdWFydGlj
czsgTElNVFJJVjogc2VhcmNoIGxpbWl0IGZvciB0cml2aWFsIHBvaW50cyBvbiBlbGxpcHRp
YyBjdXJ2ZXM7IE1BWFBST0IsIExJTUJJR1BSSU1FOiB0ZWNobmljYWwuIik7Cn0K

--------------V78Wbnr6nyixGx3THBBg1uRU--